<?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>209689</bug_id>
          
          <creation_ts>2020-03-27 16:45:47 -0700</creation_ts>
          <short_desc>Update ANGLE to 2020-03-27</short_desc>
          <delta_ts>2020-05-15 15:33:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>ANGLE</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>209943</dependson>
          <blocked>126404</blocked>
    
    <blocked>210992</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>justin_fan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635051</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-03-27 16:45:47 -0700</bug_when>
    <thetext>Update ANGLE in WebKit to the version of 2020-03-27 to roll in the fix for anglebug.com/4504 (currently cherry-picked in WebKit) and others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636813</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-04-01 23:30:50 -0700</bug_when>
    <thetext>Status update: fixed a problem in the ANGLE roll script regarding how the commit ID is generated. Tighter validation in updated ANGLE uncovered a few bugs in VideoTextureCopierCV.cpp, but there seems to be one bug in ANGLE around rendering feedback loop detection for which I&apos;m trying to create a standalone test case and report upstream in the ANGLE project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637589</commentid>
    <comment_count>2</comment_count>
      <attachid>395422</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-04-03 17:59:56 -0700</bug_when>
    <thetext>Created attachment 395422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637593</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-04-03 18:01:53 -0700</bug_when>
    <thetext>The attached patch is purely an ANGLE roll - all corollary changes were made in Bug 209943. changes.diff has been automatically updated, and no manual changes were made during this roll aside from updating the Xcode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637595</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-04-03 18:04:22 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See http://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637763</commentid>
    <comment_count>5</comment_count>
      <attachid>395422</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-04 16:19:16 -0700</bug_when>
    <thetext>Comment on attachment 395422
Patch

No real value in the file/function list for a change done by a script like this one. I suggest omitting it as I have done with many other patches like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638228</commentid>
    <comment_count>6</comment_count>
      <attachid>395599</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-04-06 12:16:18 -0700</bug_when>
    <thetext>Created attachment 395599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638229</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-06 12:19:28 -0700</bug_when>
    <thetext>kbr@google.com does not have committer permissions according to https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 395599 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638267</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-06 13:12:49 -0700</bug_when>
    <thetext>Committed r259589: &lt;https://trac.webkit.org/changeset/259589&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395599.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638268</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-06 13:13:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/61355846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650329</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-05-07 13:30:54 -0700</bug_when>
    <thetext>I had to revert this in r261262 because it caused https://bugs.webkit.org/show_bug.cgi?id=210992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653202</commentid>
    <comment_count>11</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-05-15 15:33:00 -0700</bug_when>
    <thetext>Relanded in r261750</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395422</attachid>
            <date>2020-04-03 17:59:56 -0700</date>
            <delta_ts>2020-04-06 12:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209689-20200403175949.patch</filename>
            <type>text/plain</type>
            <size>8766942</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggOWQ3ODY5YmI1NmNhYTg5NGFiZDRhNmU5MzI3YWExOTZiNWVjYzgxNi4uNTJmMDdjZjVmMjRl
NDUxMzliMmJjM2RkZWNmNDJlZjkwNWMwYmIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY3MjYgQEAKKzIwMjAtMDQtMDMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIHRvIDIwMjAtMDMtMjcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTY4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB1cGRhdGUtYW5n
bGUuc2ggc2NyaXB0IGJ5IEphbWVzIERhcnBpbmlhbiB0byByb2xsIEFOR0xFIHRvCisgICAgICAg
IGNvbW1pdCBiMzg3Y2U5Mzg5ZWRlNmE0ZWQzYjgzMWFiMWI4MTg3OTI3ZmEyOTVmIGluCisgICAg
ICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSAuCisKKyAg
ICAgICAgY2hhbmdlcy5kaWZmIGhhcyBiZWVuIGF1dG8tdXBkYXRlZCB3aXRoIEFwcGxlJ3MgZGlm
ZnMgcmVsYXRpdmUgdG8KKyAgICAgICAgdXBzdHJlYW0uIE5vIGFkZGl0aW9uYWwgbWFudWFsIGNo
YW5nZXMgYXJlIG1hZGUgaW4gdGhpcyByb2xsLgorCisgICAgICAgICogLmdpdGlnbm9yZToKKyAg
ICAgICAgKiBBTkdMRS5wbGlzdDoKKyAgICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIEFVVEhPUlM6CisgICAgICAgICogQlVJTEQuZ246CisgICAgICAg
ICogQ09OVFJJQlVUT1JTOgorICAgICAgICAqIENvbXBpbGVyLmNtYWtlOgorICAgICAgICAqIERF
UFM6CisgICAgICAgICogR0xFU3YyLmNtYWtlOgorICAgICAgICAqIE9XTkVSUzoKKyAgICAgICAg
KiBQUkVTVUJNSVQucHk6CisgICAgICAgIChfQ2hlY2tDaGFuZ2VIYXNCdWdGaWVsZCk6CisgICAg
ICAgICogUkVBRE1FLm1kOgorICAgICAgICAqIGFuZHJvaWQvYW5nbGVfYXBrLmduaToKKyAgICAg
ICAgKiBjaGFuZ2VzLmRpZmY6CisgICAgICAgICogZG9jL0NhcHR1cmVBbmRSZXBsYXkubWQ6Cisg
ICAgICAgICogZG9jL0NvbnRyaWJ1dGluZ0NvZGUubWQ6CisgICAgICAgICogZG9jL0RldlNldHVw
Lm1kOgorICAgICAgICAqIGRvYy9EZXZTZXR1cEFuZHJvaWQubWQ6IEFkZGVkLgorICAgICAgICAq
IGRvYy9kRVFQLm1kOgorICAgICAgICAqIGV4dGVuc2lvbnMvQU5HTEVfZXh0ZXJuYWxfb2JqZWN0
c19mdWNoc2lhLnR4dDogQWRkZWQuCisgICAgICAgICogZXh0ZW5zaW9ucy9FR0xfQU5HTEVfaW9z
dXJmYWNlX2NsaWVudF9idWZmZXIudHh0OgorICAgICAgICAqIGV4dGVuc2lvbnMvRUdMX0FOR0xF
X3BsYXRmb3JtX2FuZ2xlX2RldmljZV90eXBlX2VnbC50eHQ6IEFkZGVkLgorICAgICAgICAqIGlu
Y2x1ZGUvRUdML2VnbGV4dF9hbmdsZS5oOgorICAgICAgICAqIGluY2x1ZGUvR0xFUzIvZ2wyZXh0
Lmg6CisgICAgICAgICogaW5jbHVkZS9HTEVTMi9nbDJleHRfYW5nbGUuaDoKKyAgICAgICAgKiBp
bmNsdWRlL0dMRVMyL2dsMmV4dF9leHBsaWNpdF9jb250ZXh0X2F1dG9nZW4uaW5jOgorICAgICAg
ICAqIGluY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmg6CisgICAgICAgICogaW5jbHVkZS9wbGF0
Zm9ybS9GZWF0dXJlLmg6CisgICAgICAgICogaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc0dMLmg6
CisgICAgICAgICogaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc1ZrLmg6CisgICAgICAgICogaW5j
bHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oOgorICAgICAgICAqIGluY2x1ZGUvdnVsa2FuL3Z1bGth
bl9mdWNoc2lhX2V4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBpbmZyYS9BTkdMRVdyYW5nbGluZy5t
ZDoKKyAgICAgICAgKiBpbmZyYS9SRUFETUUubWQ6CisgICAgICAgICogaW5mcmEvY29uZmlnL2ds
b2JhbC9jci1idWlsZGJ1Y2tldC5jZmc6CisgICAgICAgICogc2FtcGxlcy9CVUlMRC5nbjoKKyAg
ICAgICAgKiBzYW1wbGVzL2NhcHR1cmVfcmVwbGF5L0NhcHR1cmVSZXBsYXkuY3BwOgorICAgICAg
ICAqIHNhbXBsZXMvbXVsdGlwbGVfZHJhd19idWZmZXJzL011bHRpcGxlRHJhd0J1ZmZlcnMuY3Bw
OgorICAgICAgICAoTXVsdGlwbGVEcmF3QnVmZmVyc1NhbXBsZTo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0FOR0xFX2Zvcm1hdC5qc29uOgor
ICAgICAgICAqIHNjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9BTkdMRV9sb2FkX2Z1bmN0
aW9uc190YWJsZS5qc29uOgorICAgICAgICAqIHNjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hl
cy9EM0QxMV9mb3JtYXQuanNvbjoKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9o
YXNoZXMvRFhHSV9mb3JtYXQuanNvbjoKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVfZ2VuZXJhdGlv
bl9oYXNoZXMvRFhHSV9mb3JtYXRfc3VwcG9ydC5qc29uOgorICAgICAgICAqIHNjcmlwdHMvY29k
ZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9DVFNfKGRFUVApX2J1aWxkX2ZpbGVzLmpzb246CisgICAg
ICAgICogc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX0VHTF9XR0xfbG9hZGVyLmpz
b246CisgICAgICAgICogc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX0VHTF9lbnRy
eV9wb2ludHMuanNvbjoKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMv
R0xfZm9ybWF0X21hcC5qc29uOgorICAgICAgICAqIHNjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hh
c2hlcy9HTGVudW1fdmFsdWVfdG9fc3RyaW5nX21hcC5qc29uOgorICAgICAgICAqIHNjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9NZXRhbF9mb3JtYXRfdGFibGUuanNvbjoKKyAgICAgICAg
KiBzY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvT3BlbkdMX2Rpc3BhdGNoX3RhYmxlLmpz
b246CisgICAgICAgICogc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9mb3Jt
YXQuanNvbjoKKyAgICAgICAgKiBzY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVsa2Fu
X2ludGVybmFsX3NoYWRlcl9wcm9ncmFtcy5qc29uOgorICAgICAgICAqIHNjcmlwdHMvY29kZV9n
ZW5lcmF0aW9uX2hhc2hlcy9WdWxrYW5fbWFuZGF0b3J5X2Zvcm1hdF9zdXBwb3J0X3RhYmxlLmpz
b246CisgICAgICAgICogc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL292ZXJsYXlfd2lk
Z2V0cy5qc29uOgorICAgICAgICAqIHNjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wYWNr
ZWRfZW51bS5qc29uOgorICAgICAgICAqIHNjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9w
cm9jX3RhYmxlLmpzb246CisgICAgICAgICogc2NyaXB0cy9lbnRyeV9wb2ludF9wYWNrZWRfZ2xf
ZW51bXMuanNvbjoKKyAgICAgICAgKiBzY3JpcHRzL2V4cG9ydF90YXJnZXRzLnB5OgorICAgICAg
ICAqIHNjcmlwdHMvZ2VuZXJhdGVfYW5kcm9pZF9icC5weTogQWRkZWQuCisgICAgICAgICh0YWJz
KToKKyAgICAgICAgKGhhc19jaGlsZF92YWx1ZXMpOgorICAgICAgICAod3JpdGVfYmx1ZXByaW50
X2tleV92YWx1ZSk6CisgICAgICAgICh3cml0ZV9ibHVlcHJpbnQpOgorICAgICAgICAoZ25fdGFy
Z2V0X3RvX2JsdWVwcmludF90YXJnZXQpOgorICAgICAgICAocmVtYXBfZ25fcGF0aCk6CisgICAg
ICAgIChnbl9wYXRoX3RvX2JsdWVwcmludF9wYXRoKToKKyAgICAgICAgKGduX3BhdGhzX3RvX2Js
dWVwcmludF9wYXRocyk6CisgICAgICAgIChnbl9zb3VyY2VzX3RvX2JsdWVwcmludF9zb3VyY2Vz
KToKKyAgICAgICAgKGduX2RlcHNfdG9fYmx1ZXByaW50X2RlcHMpOgorICAgICAgICAoZ25fbGli
c190b19ibHVlcHJpbnRfc2hhcmVkX2xpYnJhcmllcyk6CisgICAgICAgIChnbl9pbmNsdWRlX2Rp
cnNfdG9fYmx1ZXByaW50X2luY2x1ZGVfZGlycyk6CisgICAgICAgIChlc2NhcGVfcXVvdGVzKToK
KyAgICAgICAgKGduX2NmbGFnc190b19ibHVlcHJpbnRfY2ZsYWdzKToKKyAgICAgICAgKGduX2Fy
Y2hfc3BlY2lmaWNfdG9fYmx1ZXByaW50KToKKyAgICAgICAgKGxpYnJhcnlfdGFyZ2V0X3RvX2Js
dWVwcmludCk6CisgICAgICAgIChnbl9hY3Rpb25fYXJnc190b19ibHVlcHJpbnRfYXJncyk6Cisg
ICAgICAgIChhY3Rpb25fdGFyZ2V0X3RvX2JsdWVwcmludCk6CisgICAgICAgIChnbl90YXJnZXRf
dG9fYmx1ZXByaW50KToKKyAgICAgICAgKGdldF9nbl90YXJnZXRfZGVwZW5kZW5jaWVzKToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIHNjcmlwdHMvZ2VuZXJhdGVfZW50cnlfcG9pbnRzLnB5
OgorICAgICAgICAoY29uc3RfcG9pbnRlcl90eXBlKToKKyAgICAgICAgKGdldF92YWxpZGF0aW9u
X3BhcmFtcyk6CisgICAgICAgIChmb3JtYXRfY29udGV4dF9kZWNsKToKKyAgICAgICAgKGZvcm1h
dF92YWxpZGF0aW9uX3Byb3RvKToKKyAgICAgICAgKiBzY3JpcHRzL2dlbmVyYXRlX2xvYWRlci5w
eToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHNjcmlwdHMvZ2wueG1sOgorICAgICAgICAq
IHNjcmlwdHMvZ2xfYW5nbGVfZXh0LnhtbDoKKyAgICAgICAgKiBzY3JpcHRzL3JlZ2lzdHJ5X3ht
bC5weToKKyAgICAgICAgKFJlZ2lzdHJ5WE1MLl9BcHBlbmRBTkdMRUV4dHMpOgorICAgICAgICAq
IHNjcmlwdHMvcm9sbF9hb3NwLnNoOiBBZGRlZC4KKyAgICAgICAgKiBzY3JpcHRzL3RyaWdnZXIu
cHk6CisgICAgICAgIChwYXJzZV9hcmdzKToKKyAgICAgICAgKGFkZF9iYXNlX3NvZnR3YXJlKToK
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9h
c3NldHMvYTRhX3J1bGVzLmpzb246IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvZHJhd2FibGUvaWNvbi5wbmc6IEFkZGVkLgorICAgICAgICAqIHNyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvbGF5b3V0L2ZyYWdtZW50LnhtbDogQWRkZWQuCisg
ICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYWYvc3RyaW5n
cy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLWFtL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hci9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICog
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYXMvc3RyaW5ncy54bWw6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWF6
L3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJlL3N0cmluZ3MueG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1iZy9z
dHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtYm4vc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJzL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnht
bDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMtY3Mvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1kZS9zdHJpbmdzLnhtbDogQWRkZWQu
CisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZWwvc3Ry
aW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tckNBL3N0cmluZ3MueG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lbi1yR0Iv
c3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWVuLXJJTi9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tclhDL3N0cmluZ3MueG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lcy1y
VVMvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWVzL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ldC9zdHJpbmdzLnhtbDogQWRkZWQuCisg
ICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXUvc3RyaW5n
cy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLWZhL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICog
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1mci9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtZ2wvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWd1L3N0cmluZ3MueG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1oaS9zdHJp
bmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtaHIvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWh1L3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1oeS9zdHJpbmdzLnhtbDog
QWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
aW4vc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWlzL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbDogQWRkZWQuCisg
ICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaXcvc3RyaW5n
cy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLWphL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rYS9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICog
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta2svc3RyaW5ncy54bWw6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWtt
L3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1rbi9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54bWw6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWt5L3N0cmluZ3Mu
eG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1sby9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWx2L3N0cmluZ3MueG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tay9z
dHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtbWwvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1uL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tci9zdHJpbmdzLnht
bDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMtbXMvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLW15L3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1uYi9zdHJpbmdzLnhtbDogQWRkZWQu
CisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmUvc3Ry
aW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1vci9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAg
ICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtcGEvc3RyaW5ncy54bWw6
IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LXBsL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1yby9z
dHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNpL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnht
bDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMtc2wvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLXNxL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbDogQWRkZWQu
CisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtc3Yvc3Ry
aW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10YS9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAg
ICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGUvc3RyaW5ncy54bWw6
IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LXRoL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdHIvc3RyaW5ncy54bWw6IEFkZGVkLgor
ICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXVrL3N0cmlu
Z3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy11ci9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdXovc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAq
IHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXYxNy9zdHlsZXMueG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy12
aS9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWw6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpo
LXJUVy9zdHJpbmdzLnhtbDogQWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtenUvc3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzL2RpbWVucy54bWw6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzL2RyaXZlcnMueG1s
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy9nbG9iYWxfc2V0dGluZ3MueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9pbnRlbnRzLnhtbDogQWRkZWQuCisgICAgICAgICogc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvcHJlZmVyZW5jZV9rZXlzLnhtbDog
QWRkZWQuCisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMv
c3RyaW5ncy54bWw6IEFkZGVkLgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMveG1sL21haW4ueG1sOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL0FuZHJvaWRNYW5pZmVzdC54bWw6IEFkZGVk
LgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQv
YW5nbGUvTWFpbkFjdGl2aXR5LmphdmE6IEFkZGVkLgorICAgICAgICAoTWFpbkFjdGl2aXR5KToK
KyAgICAgICAgKE1haW5BY3Rpdml0eS5vbkNyZWF0ZSk6CisgICAgICAgICogc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9jb21tb24vR2xvYmFsU2V0dGlu
Z3MuamF2YTogQWRkZWQuCisgICAgICAgIChHbG9iYWxTZXR0aW5ncyk6CisgICAgICAgIChHbG9i
YWxTZXR0aW5ncy5HbG9iYWxTZXR0aW5ncyk6CisgICAgICAgIChHbG9iYWxTZXR0aW5ncy5jbGVh
ckFsbEdsb2JhbFNldHRpbmdzKToKKyAgICAgICAgKEdsb2JhbFNldHRpbmdzLmdldEFsbFVzZUFu
Z2xlKToKKyAgICAgICAgKEdsb2JhbFNldHRpbmdzLmdldFNob3dBbmdsZUluVXNlRGlhbG9nQm94
KToKKyAgICAgICAgKEdsb2JhbFNldHRpbmdzLnVwZGF0ZUFsbFVzZUFuZ2xlKToKKyAgICAgICAg
KEdsb2JhbFNldHRpbmdzLnVwZGF0ZVNob3dBbmdsZUluVXNlRGlhbG9nKToKKyAgICAgICAgKEds
b2JhbFNldHRpbmdzLnVwZGF0ZUFuZ2xlV2hpdGVsaXN0KToKKyAgICAgICAgKEdsb2JhbFNldHRp
bmdzLnVwZGF0ZVBrZyk6CisgICAgICAgIChHbG9iYWxTZXR0aW5ncy5nZXREcml2ZXJGb3JQa2cp
OgorICAgICAgICAoR2xvYmFsU2V0dGluZ3Muc2V0SW5zdGFsbGVkUGtncyk6CisgICAgICAgIChH
bG9iYWxTZXR0aW5ncy51cGRhdGVHbG9iYWxTZXR0aW5ncyk6CisgICAgICAgIChHbG9iYWxTZXR0
aW5ncy5yZWFkR2xvYmFsU2V0dGluZ3MpOgorICAgICAgICAoR2xvYmFsU2V0dGluZ3MuZ2V0R2xv
YmFsU2V0dGluZ3NTdHJpbmcpOgorICAgICAgICAoR2xvYmFsU2V0dGluZ3Mud3JpdGVHbG9iYWxT
ZXR0aW5ncyk6CisgICAgICAgIChHbG9iYWxTZXR0aW5ncy52YWxpZGF0ZUdsb2JhbFNldHRpbmdz
KToKKyAgICAgICAgKEdsb2JhbFNldHRpbmdzLnJlbW92ZVBrZ0Zyb21HbG9iYWxTZXR0aW5ncyk6
CisgICAgICAgIChHbG9iYWxTZXR0aW5ncy5nZXRHbG9iYWxTZXR0aW5nc1BrZ0luZGV4KToKKyAg
ICAgICAgKEdsb2JhbFNldHRpbmdzLmlzUGtnSW5zdGFsbGVkKToKKyAgICAgICAgKEdsb2JhbFNl
dHRpbmdzLmlzVmFsaWREaXZlclZhbHVlKToKKyAgICAgICAgKiBzcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL2NvbW1vbi9NYWluRnJhZ21lbnQuamF2YTog
QWRkZWQuCisgICAgICAgIChNYWluRnJhZ21lbnQpOgorICAgICAgICAoTWFpbkZyYWdtZW50Lk9u
U2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyKToKKyAgICAgICAgKE1haW5GcmFnbWVudC5v
bkNyZWF0ZSk6CisgICAgICAgIChNYWluRnJhZ21lbnQub25SZXN1bWUpOgorICAgICAgICAoTWFp
bkZyYWdtZW50Lm9uUGF1c2UpOgorICAgICAgICAoTWFpbkZyYWdtZW50Lm9uQ3JlYXRlUHJlZmVy
ZW5jZXMpOgorICAgICAgICAoTWFpbkZyYWdtZW50Lm9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZWQp
OgorICAgICAgICAoTWFpbkZyYWdtZW50LnVwZGF0ZVByZWZlcmVuY2VzRnJvbUdsb2JhbFNldHRp
bmdzKToKKyAgICAgICAgKE1haW5GcmFnbWVudC5jcmVhdGVBbGxVc2VBbmdsZVByZWZlcmVuY2Up
OgorICAgICAgICAoTWFpbkZyYWdtZW50LmNyZWF0ZVNob3dBbmdsZUluVXNlRGlhbG9nUHJlZmVy
ZW5jZSk6CisgICAgICAgIChNYWluRnJhZ21lbnQuY3JlYXRlSW5zdGFsbGVkQXBwc0xpc3RQcmVm
ZXJlbmNlKToKKyAgICAgICAgKE1haW5GcmFnbWVudC52YWxpZGF0ZVByZWZlcmVuY2VzKToKKyAg
ICAgICAgKE1haW5GcmFnbWVudC5nZXRJbnN0YWxsZWRQa2dzTGlzdCk6CisgICAgICAgIChNYWlu
RnJhZ21lbnQuUGFja2FnZUluZm8pOgorICAgICAgICAoTWFpbkZyYWdtZW50LmdldEFwcE5hbWUp
OgorICAgICAgICAoTWFpbkZyYWdtZW50LmluaXRFbXB0eUxpc3RQcmVmZXJlbmNlKToKKyAgICAg
ICAgKE1haW5GcmFnbWVudC5pbml0TGlzdFByZWZlcmVuY2UpOgorICAgICAgICAoTWFpbkZyYWdt
ZW50LnJlbW92ZVBrZ1ByZWZlcmVuY2UpOgorICAgICAgICAoTWFpbkZyYWdtZW50LmdldFBhY2th
Z2VJbmZvRm9yUGFja2FnZU5hbWUpOgorICAgICAgICAoTWFpbkZyYWdtZW50Lm1lcmdlR2xvYmFs
U2V0dGluZ3MpOgorICAgICAgICAqIHNyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29t
L2FuZHJvaWQvYW5nbGUvY29tbW9uL1JlY2VpdmVyLmphdmE6IEFkZGVkLgorICAgICAgICAoUmVj
ZWl2ZXIpOgorICAgICAgICAoUmVjZWl2ZXIub25SZWNlaXZlKToKKyAgICAgICAgKFJlY2VpdmVy
LmxvYWRSdWxlcyk6CisgICAgICAgIChSZWNlaXZlci5wYXJzZVBhY2thZ2VOYW1lcyk6CisgICAg
ICAgIChSZWNlaXZlci51cGRhdGVBbGxVc2VBbmdsZSk6CisgICAgICAgIChSZWNlaXZlci51cGRh
dGVTaG93QW5nbGVJblVzZURpYWxvZ0JveCk6CisgICAgICAgIChSZWNlaXZlci51cGRhdGVEZXZl
bG9wZXJPcHRpb25zV2F0Y2hlcik6CisgICAgICAgICogc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9jb21tb24vU2VhcmNoUHJvdmlkZXIuamF2YTogQWRk
ZWQuCisgICAgICAgIChTZWFyY2hQcm92aWRlcik6CisgICAgICAgIChTZWFyY2hQcm92aWRlci5v
bkNyZWF0ZSk6CisgICAgICAgIChTZWFyY2hQcm92aWRlci5xdWVyeVhtbFJlc291cmNlcyk6Cisg
ICAgICAgIChTZWFyY2hQcm92aWRlci5xdWVyeVJhd0RhdGEpOgorICAgICAgICAoU2VhcmNoUHJv
dmlkZXIucXVlcnlOb25JbmRleGFibGVLZXlzKToKKyAgICAgICAgKiBzcmMvY29tbWl0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogc3JjL2NvbW1pdF9pZC5weToKKyAgICAgICAgKiBzcmMvY29tbW9u
L1BhY2tlZEVudW1zLmg6CisgICAgICAgIChhbmdsZTo6RW51bVNpemU8RT4pOgorICAgICAgICAq
IHNyYy9jb21tb24vUGFja2VkR0xFbnVtc19hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpGcm9t
R0xlbnVtPEhhbmRsZVR5cGU+KToKKyAgICAgICAgKGdsOjpUb0dMZW51bSk6CisgICAgICAgIChn
bDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogc3JjL2NvbW1vbi9QYWNrZWRHTEVudW1zX2F1dG9n
ZW4uaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL2FuZHJvaWRfdXRpbC5jcHA6CisgICAgICAgIChh
bmdsZTo6YW5kcm9pZDo6R0xJbnRlcm5hbEZvcm1hdFRvTmF0aXZlUGl4ZWxGb3JtYXQpOgorICAg
ICAgICAqIHNyYy9jb21tb24vYW5kcm9pZF91dGlsLmg6CisgICAgICAgICogc3JjL2NvbW1vbi9i
aXRzZXRfdXRpbHMuaDoKKyAgICAgICAgKiBzcmMvY29tbW9uL2JpdHNldF91dGlsc191bml0dGVz
dC5jcHA6CisgICAgICAgIChhbmdsZTo6VFlQRURfVEVTVCk6CisgICAgICAgIChhbmdsZTo6VEVT
VF9GKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvY29tbW9uL2RlYnVnLmNwcDoKKyAgICAgICAg
KGdsOjpUcmFjZSk6CisgICAgICAgICogc3JjL2NvbW1vbi9mdWNoc2lhX2VnbC9CVUlMRC5nbjoK
KyAgICAgICAgKiBzcmMvY29tbW9uL21hdGh1dGlsLmNwcDoKKyAgICAgICAgKGdsOjpCaXRDb3Vu
dFBvbHlmaWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvY29tbW9uL21hdGh1dGlsLmg6Cisg
ICAgICAgIChnbDo6Qml0Q291bnRQb2x5ZmlsbCk6CisgICAgICAgIChnbDo6Qml0Q291bnQpOgor
ICAgICAgICAoZ2w6OlNjYW5Gb3J3YXJkKToKKyAgICAgICAgKiBzcmMvY29tbW9uL21hdGh1dGls
X3VuaXR0ZXN0LmNwcDoKKyAgICAgICAgKGdsOjpURVNUKToKKyAgICAgICAgKiBzcmMvY29tbW9u
L21hdHJpeF91dGlscy5oOgorICAgICAgICAoYW5nbGU6Ok1hdHJpeDo6Y29uc3REYXRhIGNvbnN0
KToKKyAgICAgICAgKiBzcmMvY29tbW9uL3BhY2tlZF9nbF9lbnVtcy5qc29uOgorICAgICAgICAq
IHNyYy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcDoKKyAgICAgICAgKGFuZ2xlOjpHZXRTdHJpbmdz
RnJvbUVudmlyb25tZW50VmFyKToKKyAgICAgICAgKiBzcmMvY29tbW9uL3N0cmluZ191dGlscy5o
OgorICAgICAgICAqIHNyYy9jb21tb24vc3lzdGVtX3V0aWxzLmNwcDoKKyAgICAgICAgKiBzcmMv
Y29tbW9uL3N5c3RlbV91dGlscy5oOgorICAgICAgICAqIHNyYy9jb21tb24vc3lzdGVtX3V0aWxz
X3Bvc2l4LmNwcDoKKyAgICAgICAgKGFuZ2xlOjpHZXRIZWxwZXJFeGVjdXRhYmxlRGlyKToKKyAg
ICAgICAgKGFuZ2xlOjpQb3NpeExpYnJhcnk6OlBvc2l4TGlicmFyeSk6CisgICAgICAgICogc3Jj
L2NvbW1vbi9zeXN0ZW1fdXRpbHNfdW5pdHRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OlRFU1Qp
OgorICAgICAgICAqIHNyYy9jb21tb24vc3lzdGVtX3V0aWxzX3dpbi5jcHA6CisgICAgICAgIChh
bmdsZTo6R2V0SGVscGVyRXhlY3V0YWJsZURpcik6CisgICAgICAgICogc3JjL2NvbW1vbi90bHMu
Y3BwOgorICAgICAgICAoQ3JlYXRlVExTSW5kZXgpOgorICAgICAgICAoRGVzdHJveVRMU0luZGV4
KToKKyAgICAgICAgKFNldFRMU1ZhbHVlKToKKyAgICAgICAgKEdldFRMU1ZhbHVlKToKKyAgICAg
ICAgKiBzcmMvY29tbW9uL3V0aWxpdGllcy5jcHA6CisgICAgICAgIChnbDo6R2V0RGVidWdNZXNz
YWdlU291cmNlU3RyaW5nKToKKyAgICAgICAgKGdsOjpHZXREZWJ1Z01lc3NhZ2VUeXBlU3RyaW5n
KToKKyAgICAgICAgKGdsOjpHZXREZWJ1Z01lc3NhZ2VTZXZlcml0eVN0cmluZyk6CisgICAgICAg
ICogc3JjL2NvbW1vbi91dGlsaXRpZXMuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIuZ25pOgor
ICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oOgorICAgICAgICAo
c2g6OklzSW50ZWdlclNhbXBsZXIpOgorICAgICAgICAoc2g6OklzSW50ZWdlclNhbXBsZXJVbnNp
Z25lZCk6CisgICAgICAgIChzaDo6SXNTYW1wbGVyMkQpOgorICAgICAgICAoc2g6OklzU2FtcGxl
ckN1YmUpOgorICAgICAgICAoc2g6OklzU2FtcGxlcjNEKToKKyAgICAgICAgKHNoOjpJc1NhbXBs
ZXJBcnJheSk6CisgICAgICAgIChzaDo6SXNTaGFkb3dTYW1wbGVyKToKKyAgICAgICAgKHNoOjpJ
c0ltYWdlMkQpOgorICAgICAgICAoc2g6OklzSW1hZ2UzRCk6CisgICAgICAgIChzaDo6SXNJbWFn
ZTJEQXJyYXkpOgorICAgICAgICAoc2g6OklzSW1hZ2VDdWJlKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHA6CisgICAgICAgIChzaDo6VENvbXBpbGVyOjpj
aGVja0FuZFNpbXBsaWZ5QVNUKToKKyAgICAgICAgKHNoOjpUQ29tcGlsZXI6OmVtdWxhdGVQcmVj
aXNpb25JZk5lZWRlZCk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGls
ZXIuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmg6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuY3Bw
OgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmg6
CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHA6CisgICAg
ICAgIChzaDo6SW5pdEV4dGVuc2lvbkJlaGF2aW9yKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmNwcDoKKyAgICAgICAgKHNoOjpUT3V0cHV0VnVs
a2FuR0xTTDo6VE91dHB1dFZ1bGthbkdMU0wpOgorICAgICAgICAoc2g6OlRPdXRwdXRWdWxrYW5H
TFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmg6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0VnVsa2FuR0xTTEZvck1ldGFsLm1tOgorICAgICAgICAoc2g6OlRPdXRwdXRW
dWxrYW5HTFNMRm9yTWV0YWw6OlRPdXRwdXRWdWxrYW5HTFNMRm9yTWV0YWwpOgorICAgICAgICAq
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHA6CisgICAgICAgIChzaDo6
VFBhcnNlQ29udGV4dDo6Y2hlY2tBcnJheU9mQXJyYXlzSW5PdXQpOgorICAgICAgICAoc2g6OlRQ
YXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcik6CisgICAgICAgIChzaDo6VFBhcnNlQ29u
dGV4dDo6cGFyc2VTaW5nbGVBcnJheURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Qb29sQWxsb2MuY3BwOgorICAgICAgICAoSW5pdGlhbGl6ZVBvb2xJbmRleCk6Cisg
ICAgICAgIChGcmVlUG9vbEluZGV4KToKKyAgICAgICAgKEdldEdsb2JhbFBvb2xBbGxvY2F0b3Ip
OgorICAgICAgICAoU2V0R2xvYmFsUG9vbEFsbG9jYXRvcik6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHA6CisgICAgICAgIChzaDo6SW5pdEJ1aWx0SW5S
ZXNvdXJjZXMpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JF
U1NMLmNwcDoKKyAgICAgICAgKHNoOjpUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHA6CisgICAgICAg
IChzaDo6VHJhbnNsYXRvckdMU0w6OnRyYW5zbGF0ZSk6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwOgorICAgICAgICAoc2g6OlRyYW5zbGF0b3JI
TFNMOjp0cmFuc2xhdGUpOgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JNZXRhbC5jcHA6CisgICAgICAgIChzaDo6VHJhbnNsYXRvck1ldGFsOjp0cmFuc2xhdGUp
OgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4uY3Bw
OgorICAgICAgICAoc2g6OlRyYW5zbGF0b3JWdWxrYW46OnRyYW5zbGF0ZUltcGwpOgorICAgICAg
ICAoc2g6OlRyYW5zbGF0b3JWdWxrYW46OnRyYW5zbGF0ZSk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHA6CisgICAgICAgIChz
aDo6VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcik6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5oOgorICAgICAgICAqIHNyYy9jb21w
aWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHA6
IEFkZGVkLgorICAgICAgICAoc2g6OlJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucyk6CisgICAg
ICAgICogc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRl
ckJ1aWx0aW5zLmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9jb21waWxlci90cmFuc2xhdG9yL3Ry
ZWVfb3BzL1Jld3JpdGVBdG9taWNDb3VudGVycy5jcHA6CisgICAgICAgICogc3JjL2ZlYXR1cmVf
c3VwcG9ydF91dGlsL09XTkVSUzogQWRkZWQuCisgICAgICAgICogc3JjL2dwdV9pbmZvX3V0aWwv
U3lzdGVtSW5mby5jcHA6CisgICAgICAgIChhbmdsZTo6SXNHb29nbGUpOgorICAgICAgICAqIHNy
Yy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaDoKKyAgICAgICAgKiBzcmMvaWQvY29tbWl0Lmg6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oOgorICAgICAgICAoZ2w6OkJp
bmFyeU91dHB1dFN0cmVhbTo6d3JpdGVJbnQpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9DYXBz
LmNwcDoKKyAgICAgICAgKGdsOjpEZXRlcm1pbmVEZXB0aFRleHR1cmVBTkdMRVN1cHBvcnQpOgor
ICAgICAgICAoZ2w6OkRldGVybWluZVJHVENUZXh0dXJlU3VwcG9ydCk6CisgICAgICAgIChnbDo6
RXh0ZW5zaW9uczo6c2V0VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQpOgorICAgICAgICAoZ2w6Okdl
dEV4dGVuc2lvbkluZm9NYXApOgorICAgICAgICAoZWdsOjpEaXNwbGF5RXh0ZW5zaW9uczo6Z2V0
U3RyaW5ncyBjb25zdCk6CisgICAgICAgIChlZ2w6OkNsaWVudEV4dGVuc2lvbnM6OmdldFN0cmlu
Z3MgY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9DYXBzLmg6CisgICAgICAgIChnbDo6
RXh0ZW5zaW9uczo6ZHJhd0J1ZmZlcnNJbmRleGVkQW55IGNvbnN0KToKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvQ29tcGlsZXIuY3BwOgorICAgICAgICAoZ2w6OkNvbXBpbGVyOjpDb21waWxlcik6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHA6CisgICAgICAgIChlZ2w6OkNvbmZp
Zzo6Q29uZmlnKToKKyAgICAgICAgKGVnbDo6IGNvbnN0KToKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvQ29uZmlnLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL0NvbnRleHQuY3BwOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmluaXRpYWxpemUpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6Om9uRGVz
dHJveSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNTYW1wbGVyIGNvbnN0KToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpxdWVyeUNv
dW50ZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEZlbmNlTlYgY29uc3QpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmdldE9yQ3JlYXRlUXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmdldEJvb2xlYW52SW1wbCBjb25zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RmxvYXR2
SW1wbCBjb25zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0SW50ZWdlcnZJbXBsIGNvbnN0
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRJbnRlZ2VyVmVydGV4QXR0cmliSW1wbCBjb25z
dCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0SW50ZWdlcjY0dkltcGwgY29uc3QpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6Omluc2VydEV2ZW50TWFya2VyKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpwdXNoR3JvdXBNYXJrZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnBvcEdyb3VwTWFy
a2VyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpiaW5kVW5pZm9ybUxvY2F0aW9uKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0Ojp2YWxpZGF0aW9uRXJyb3IgY29uc3QpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmlzVmVydGV4QXJyYXlHZW5lcmF0ZWQgY29uc3QpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2tHZW5lcmF0ZWQgY29uc3QpOgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmlzRXh0ZW5zaW9uUmVxdWVzdGFibGUgY29uc3QpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmlzRXh0ZW5zaW9uRGlzYWJsYWJsZSBjb25zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
Z2VuZXJhdGVTdXBwb3J0ZWRFeHRlbnNpb25zIGNvbnN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0
OjpibGVuZENvbG9yKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpibGVuZEVxdWF0aW9uaSk6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlaSk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6YmxlbmRGdW5jaSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6YmxlbmRGdW5j
U2VwYXJhdGVpKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpjb2xvck1hc2tpKToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpkaXNhYmxlaSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZW5hYmxlaSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VmVydGV4QXR0cmliaXZJbXBsIGNvbnN0KToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnBvcERlYnVnR3Jv
dXApOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFByb2dyYW1pdik6CisgICAgICAgIChnbDo6
Q29udGV4dDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFVu
aWZvcm1mdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VW5pZm9ybWZ2Um9idXN0KToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmdldFVuaWZvcm1pdlJvYnVzdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0J1ZmZlciBjb25zdCk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6aXNFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpp
c0VuYWJsZWRpIGNvbnN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0ZyYW1lYnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1Byb2dyYW0gY29uc3QpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmlzUmVuZGVyYnVmZmVyIGNvbnN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0
Ojppc1NoYWRlciBjb25zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNUZXh0dXJlIGNvbnN0
KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtMWYpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnVuaWZvcm0xZnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFVuaWZvcm0xaUltcGwp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm0xaSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTJmKToKKyAgICAg
ICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlm
b3JtMmkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm0yaXYpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnVuaWZvcm0zZik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTNmdik6
CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTNpKToKKyAgICAgICAgKGdsOjpDb250ZXh0
Ojp1bmlmb3JtM2l2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtNGYpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm00ZnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZv
cm00aSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTRpdik6CisgICAgICAgIChnbDo6
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9y
bU1hdHJpeDNmdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTF1aSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
dW5pZm9ybTJ1aSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTN1aSk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6dW5pZm9ybTR1aSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9y
bTF1aXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKGds
OjpDb250ZXh0Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTR1
aXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzUXVlcnlHZW5lcmF0ZWQgY29uc3QpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmlzUXVlcnkgY29uc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybU1hdHJp
eDN4MmZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChnbDo6Q29u
dGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4NHgzZnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzVmVydGV4QXJyYXkgY29uc3Qp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2sgY29uc3QpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmdldFVuaWZvcm11aXZSb2J1c3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzU3luYyBjb25z
dCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xaSk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yaSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJv
Z3JhbVVuaWZvcm0zaSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm00aSk6
CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xdWkpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMnVpKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9n
cmFtVW5pZm9ybTN1aSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm00dWkp
OgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWYpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMmYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dy
YW1Vbmlmb3JtM2YpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNGYpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpD
b250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJpdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3Jh
bVVuaWZvcm0zaXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNGl2KToK
KyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTF1aXYpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMnVpdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJv
Z3JhbVVuaWZvcm0zdWl2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTR1
aXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWZ2KToKKyAgICAgICAg
KGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJmdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6
cHJvZ3JhbVVuaWZvcm0zZnYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3Jt
NGZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJmdik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpDb250
ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpw
cm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFt
VW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9y
bU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJp
eDN4NGZ2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2
KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1Byb2dyYW1QaXBlbGluZSBjb25zdCk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0blVuaWZvcm1mdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6
Z2V0blVuaWZvcm1mdlJvYnVzdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0blVuaWZvcm1p
dik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0blVuaWZvcm1pdlJvYnVzdCk6CisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0blVuaWZvcm11aXZSb2J1c3QpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmlzRmVuY2VOViBjb25zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6aXNNZW1vcnlPYmpl
Y3QgY29uc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6Om1lbW9yeU9iamVjdFBhcmFtZXRlcml2
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6aW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlKToKKyAgICAgICAg
KGdsOjpDb250ZXh0Ojppc1NlbWFwaG9yZSBjb25zdCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6
aW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRJ
bmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvIGNvbnN0KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpv
blN1YmplY3RTdGF0ZUNoYW5nZSk6CisgICAgICAgIChnbDo6U3RhdGVDYWNoZTo6dXBkYXRlQWN0
aXZlQXR0cmlic01hc2spOgorICAgICAgICAoZ2w6OlN0YXRlQ2FjaGU6OnVwZGF0ZVZlcnRleEVs
ZW1lbnRMaW1pdHNJbXBsKToKKyAgICAgICAgKGdsOjpTdGF0ZUNhY2hlOjpnZXRCYXNpY0RyYXdT
dGF0ZXNFcnJvckltcGwgY29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlQ2FjaGU6OmdldEJhc2lj
RHJhd0VsZW1lbnRzRXJyb3JJbXBsIGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZUNhY2hlOjpv
bkJsZW5kRnVuY0luZGV4ZWRDaGFuZ2UpOgorICAgICAgICAoZ2w6OlN0YXRlQ2FjaGU6OnVwZGF0
ZVZhbGlkRHJhd01vZGVzKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp0cnlHZW5QYXRocyk6IERl
bGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6Z2VuUGF0aHMpOiBEZWxldGVkLgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmRlbGV0ZVBhdGhzKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250
ZXh0Ojppc1BhdGgpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzUGF0aEdlbmVy
YXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6cGF0aENvbW1hbmRz
KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0OjpwYXRoUGFyYW1ldGVyZik6IERlbGV0
ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6cGF0aFBhcmFtZXRlcmkpOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmdldFBhdGhQYXJhbWV0ZXJmdik6IERlbGV0ZWQuCisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0UGF0aFBhcmFtZXRlcml2KTogRGVsZXRlZC4KKyAgICAgICAgKGds
OjpDb250ZXh0OjpwYXRoU3RlbmNpbEZ1bmMpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmlzU2FtcGxlcik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0RmVuY2VO
Vik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0UXVlcnkpOiBEZWxldGVkLgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldEJvb2xlYW52SW1wbCk6IERlbGV0ZWQuCisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0RmxvYXR2SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29u
dGV4dDo6Z2V0SW50ZWdlcnZJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojpn
ZXRJbnRlZ2VyNjR2SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6bWF0cml4
TG9hZGYpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6Om1hdHJpeExvYWRJZGVudGl0
eSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6c3RlbmNpbEZpbGxQYXRoKTogRGVs
ZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0OjpzdGVuY2lsU3Ryb2tlUGF0aCk6IERlbGV0ZWQu
CisgICAgICAgIChnbDo6Q29udGV4dDo6Y292ZXJGaWxsUGF0aCk6IERlbGV0ZWQuCisgICAgICAg
IChnbDo6Q29udGV4dDo6Y292ZXJTdHJva2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpD
b250ZXh0OjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgpOiBEZWxldGVkLgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAg
KGdsOjpDb250ZXh0Ojpjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KGdsOjpDb250ZXh0Ojpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChnbDo6Q29udGV4dDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZCk6
IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6dmFs
aWRhdGlvbkVycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1ZlcnRleEFy
cmF5R2VuZXJhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1RyYW5zZm9y
bUZlZWRiYWNrR2VuZXJhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0V4
dGVuc2lvblJlcXVlc3RhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0V4
dGVuc2lvbkRpc2FibGFibGUpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnN5bmNT
dGF0ZUZvclBhdGhPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6Omlz
QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc0VuYWJsZWQpOiBEZWxl
dGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzRW5hYmxlZGkpOiBEZWxldGVkLgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmlzRnJhbWVidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNv
bnRleHQ6OmlzUHJvZ3JhbSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6aXNSZW5k
ZXJidWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzU2hhZGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKGdsOjpDb250ZXh0Ojppc1RleHR1cmUpOiBEZWxldGVkLgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmlzUXVlcnkpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OmlzVmVydGV4QXJyYXkpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzVHJhbnNm
b3JtRmVlZGJhY2spOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzU3luYyk6IERl
bGV0ZWQuCisgICAgICAgIChnbDo6Q29udGV4dDo6aXNQcm9ncmFtUGlwZWxpbmUpOiBEZWxldGVk
LgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzRmVuY2VOVik6IERlbGV0ZWQuCisgICAgICAgIChn
bDo6Q29udGV4dDo6aXNNZW1vcnlPYmplY3QpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OmlzU2VtYXBob3JlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvQ29udGV4
dC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9Db250ZXh0X2dsLmNwcDoKKyAgICAgICAgKGds
OjpDb250ZXh0Ojppc0xpc3QgY29uc3QpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmdldFVuaWZv
cm1kdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTFkKToKKyAgICAgICAgKGdsOjpD
b250ZXh0Ojp1bmlmb3JtMWR2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtMmQpOgor
ICAgICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm0yZHYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnVuaWZvcm0zZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybTNkdik6CisgICAgICAg
IChnbDo6Q29udGV4dDo6dW5pZm9ybTRkKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3Jt
NGR2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmR2KToKKyAgICAgICAg
KGdsOjpDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZHYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnVuaWZvcm1NYXRyaXgyeDRkdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybU1hdHJp
eDNkdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmR2KToKKyAgICAg
ICAgKGdsOjpDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZHYpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnVuaWZvcm1NYXRyaXg0ZHYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnVuaWZvcm1NYXRy
aXg0eDJkdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2R2KToKKyAg
ICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTFkKToKKyAgICAgICAgKGdsOjpDb250
ZXh0Ojpwcm9ncmFtVW5pZm9ybTFkdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVu
aWZvcm0yZCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yZHYpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtM2QpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnByb2dyYW1Vbmlmb3JtM2R2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybTRkKToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRkdik6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZHYpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZHYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnBy
b2dyYW1Vbmlmb3JtTWF0cml4M2R2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybU1hdHJpeDN4MmR2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1h
dHJpeDN4NGR2KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDRk
dik6CisgICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdik6Cisg
ICAgICAgIChnbDo6Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdik6CisgICAgICAg
IChnbDo6Q29udGV4dDo6Z2V0blVuaWZvcm1kdik6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0
blVuaWZvcm11aXYpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmlzTGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgICogc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfMV8wX2F1dG9nZW4uaDoKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzBfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9Db250ZXh0X2dsXzRfMV9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xF
L0NvbnRleHRfZ2xfNF81X2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvQ29udGV4
dF9nbGVzXzFfMC5jcHA6CisgICAgICAgIChnbDo6Q29udGV4dDo6Y2xlYXJDb2xvcngpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OmNsZWFyRGVwdGh4KToKKyAgICAgICAgKGdsOjpDb250ZXh0Ojpk
ZXB0aFJhbmdleCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6Z2V0Rml4ZWR2KToKKyAgICAgICAg
KGdsOjpDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJ4dik6CisgICAgICAgIChnbDo6Q29udGV4dDo6
bGluZVdpZHRoeCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6cG9seWdvbk9mZnNldHgpOgorICAg
ICAgICAoZ2w6OkNvbnRleHQ6OnNhbXBsZUNvdmVyYWdleCk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6dGV4UGFyYW1ldGVyeCk6CisgICAgICAgIChnbDo6Q29udGV4dDo6dGV4UGFyYW1ldGVyeHYp
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfMl8wX2F1dG9nZW4uaDoKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMF9hdXRvZ2VuLmg6CisgICAgICAg
ICogc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzFfYXV0b2dlbi5oOgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9Db250ZXh0X2dsZXNfM18yX2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGli
QU5HTEUvQ29udGV4dF9nbGVzX2V4dF9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xF
L0Rpc3BsYXkuY3BwOgorICAgICAgICAoZWdsOjpEaXNwbGF5U3RhdGU6OkRpc3BsYXlTdGF0ZSk6
CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OkdldERpc3BsYXlGcm9tTmF0aXZlRGlzcGxheSk6Cisg
ICAgICAgIChlZ2w6OkRpc3BsYXk6OkRpc3BsYXkpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojp+
RGlzcGxheSk6CisgICAgICAgIChlZ2w6OkdlbmVyYXRlQ2xpZW50RXh0ZW5zaW9ucyk6CisgICAg
ICAgIChlZ2w6OkRpc3BsYXk6OmluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKToKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvRGlzcGxheS5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9FcnJvclN0
cmluZ3MuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvRnJhbWVDYXB0dXJlLmNwcDoKKyAgICAg
ICAgKGFuZ2xlOjpGcmFtZUNhcHR1cmU6OkZyYW1lQ2FwdHVyZSk6CisgICAgICAgIChhbmdsZTo6
RnJhbWVDYXB0dXJlOjpjYXB0dXJlQ29tcHJlc3NlZFRleHR1cmVEYXRhKToKKyAgICAgICAgKGFu
Z2xlOjpGcmFtZUNhcHR1cmU6Om1heWJlQ2FwdHVyZUNsaWVudERhdGEpOgorICAgICAgICAoYW5n
bGU6OkZyYW1lQ2FwdHVyZTo6Y2FwdHVyZUNhbGwpOgorICAgICAgICAoYW5nbGU6OkZyYW1lQ2Fw
dHVyZTo6bWF5YmVDYXB0dXJlUG9zdENhbGxVcGRhdGVzKToKKyAgICAgICAgKGFuZ2xlOjpGcmFt
ZUNhcHR1cmU6OmNhcHR1cmVNYXBwZWRCdWZmZXJTbmFwc2hvdCk6CisgICAgICAgIChhbmdsZTo6
RnJhbWVDYXB0dXJlOjpvbkVuZEZyYW1lKToKKyAgICAgICAgKGFuZ2xlOjpDYXB0dXJlU3RyaW5n
TGltaXQpOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6
OlRHTGJvb2xlYW4+KToKKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcj4pOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTERFQlVHUFJPQ0tIUj4pOgorICAgICAgICAoYW5nbGU6
OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTERFQlVHUFJPQz4pOgorICAgICAg
ICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRCdWZmZXJJRD4pOgor
ICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRGZW5jZU5W
SUQ+KToKKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
RnJhbWVidWZmZXJJRD4pOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRD4pOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRD4pOgorICAgICAgICAoYW5n
bGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRRdWVyeUlEPik6CisgICAgICAg
IChhbmdsZTo6V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklE
Pik6CisgICAgICAgIChhbmdsZTo6V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNh
bXBsZXJJRD4pOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRTZW1hcGhvcmVJRD4pOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxh
eTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQ+KToKKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVGV4dHVyZUlEPik6CisgICAgICAgIChhbmdsZTo6
V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSUQ+KToK
KyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVmVydGV4
QXJyYXlJRD4pOgorICAgICAgICAoYW5nbGU6OkZpbmRTaGFkZXJQcm9ncmFtSURJbkNhbGwpOgor
ICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRVbmlmb3Jt
TG9jYXRpb24+KToKKyAgICAgICAgKGFuZ2xlOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAg
ICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGJvb2xlYW4+
KTogRGVsZXRlZC4KKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyPik6IERlbGV0ZWQuCisgICAgICAgIChhbmdsZTo6V3Jp
dGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xERUJVR1BST0NLSFI+KTogRGVsZXRl
ZC4KKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRH
TERFQlVHUFJPQz4pOiBEZWxldGVkLgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VEJ1ZmZlcklEPik6IERlbGV0ZWQuCisgICAgICAgIChhbmdsZTo6
V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpURmVuY2VOVklEPik6IERlbGV0ZWQu
CisgICAgICAgIChhbmdsZTo6V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpURnJh
bWVidWZmZXJJRD4pOiBEZWxldGVkLgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEPik6IERlbGV0ZWQuCisgICAgICAgIChh
bmdsZTo6V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUGF0aElEPik6IERlbGV0
ZWQuCisgICAgICAgIChhbmdsZTo6V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
UHJvZ3JhbVBpcGVsaW5lSUQ+KTogRGVsZXRlZC4KKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRRdWVyeUlEPik6IERlbGV0ZWQuCisgICAgICAgIChh
bmdsZTo6V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUmVuZGVyYnVmZmVySUQ+
KTogRGVsZXRlZC4KKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlRTYW1wbGVySUQ+KTogRGVsZXRlZC4KKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTZW1hcGhvcmVJRD4pOiBEZWxldGVkLgorICAgICAg
ICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNoYWRlclByb2dy
YW1JRD4pOiBEZWxldGVkLgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VFRleHR1cmVJRD4pOiBEZWxldGVkLgorICAgICAgICAoYW5nbGU6OldyaXRl
UGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSUQ+KTogRGVs
ZXRlZC4KKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6
OlRWZXJ0ZXhBcnJheUlEPik6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL0ZyYW1l
Q2FwdHVyZS5oOgorICAgICAgICAoYW5nbGU6OldyaXRlUGFyYW1WYWx1ZVJlcGxheSk6CisgICAg
ICAgIChhbmdsZTo6V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXJT
dGF0ZTo6RnJhbWVidWZmZXJTdGF0ZSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXJTdGF0ZTo6
dXBkYXRlQXR0YWNobWVudEZlZWRiYWNrTG9vcEFuZFJldHVybklmQ2hhbmdlZCk6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXJTdGF0ZTo6dXBkYXRlSGFzUmVuZGVyaW5nRmVlZGJhY2tMb29wKToK
KyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsIGNvbnN0KToKKyAgICAg
ICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNXaXRoR0xGcm9udEVuZCBjb25zdCk6Cisg
ICAgICAgIChnbDo6RnJhbWVidWZmZXI6OnBhcnRpYWxDbGVhck5lZWRzSW5pdCk6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXI6OmNsZWFyKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Y2xl
YXJCdWZmZXJmdik6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXI6OmNsZWFyQnVmZmVydWl2KToK
KyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChnbDo6
RnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpn
ZXRTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0UmVzb3VyY2VT
YW1wbGVzIGNvbnN0KToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudElt
cGwpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjp1cGRhdGVBdHRhY2htZW50KToKKyAgICAg
ICAgKGdsOjpGcmFtZWJ1ZmZlcjo6c3luY1N0YXRlIGNvbnN0KToKKyAgICAgICAgKGdsOjpGcmFt
ZWJ1ZmZlcjo6b25TdWJqZWN0U3RhdGVDaGFuZ2UpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVy
OjplbnN1cmVDbGVhckF0dGFjaG1lbnRzSW5pdGlhbGl6ZWQpOgorICAgICAgICAoZ2w6OkZyYW1l
YnVmZmVyOjplbnN1cmVDbGVhckJ1ZmZlckF0dGFjaG1lbnRzSW5pdGlhbGl6ZWQpOgorICAgICAg
ICAoZ2w6OkZyYW1lYnVmZmVyOjpjaGVja1N0YXR1c0ltcGwpOiBEZWxldGVkLgorICAgICAgICAo
Z2w6OkZyYW1lYnVmZmVyOjpjaGVja1N0YXR1c1dpdGhHTEZyb250RW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKGdsOjpGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyk6IERlbGV0ZWQuCisgICAgICAgIChn
bDo6RnJhbWVidWZmZXI6OmdldFJlc291cmNlU2FtcGxlcyk6IERlbGV0ZWQuCisgICAgICAgIChn
bDo6RnJhbWVidWZmZXI6OnN5bmNTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6RnJhbWVi
dWZmZXI6OmZvcm1zUmVuZGVyaW5nRmVlZGJhY2tMb29wV2l0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHA6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXJB
dHRhY2htZW50Ojppc0JvdW5kQXNTYW1wbGVyT3JJbWFnZSBjb25zdCk6CisgICAgICAgICogc3Jj
L2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9HTEVTMVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKGdsOjpHTEVTMVJlbmRlcmVyOjpsaW5rUHJv
Z3JhbSk6CisgICAgICAgIChnbDo6R0xFUzFSZW5kZXJlcjo6c2V0VW5pZm9ybTFpKToKKyAgICAg
ICAgKGdsOjpHTEVTMVJlbmRlcmVyOjpzZXRVbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpHTEVT
MVJlbmRlcmVyOjpzZXRVbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpHTEVTMVJlbmRl
cmVyOjpzZXRVbmlmb3JtNGZ2KToKKyAgICAgICAgKGdsOjpHTEVTMVJlbmRlcmVyOjpzZXRVbmlm
b3JtM2Z2KToKKyAgICAgICAgKGdsOjpHTEVTMVJlbmRlcmVyOjpzZXRVbmlmb3JtMmZ2KToKKyAg
ICAgICAgKGdsOjpHTEVTMVJlbmRlcmVyOjpzZXRVbmlmb3JtMWYpOgorICAgICAgICAoZ2w6OkdM
RVMxUmVuZGVyZXI6OnNldFVuaWZvcm0xZnYpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9HTEVT
MVJlbmRlcmVyLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL0dMRVMxU3RhdGUuY3BwOgorICAg
ICAgICAoZ2w6OkdMRVMxU3RhdGU6OmdldEhpbnQgY29uc3QpOgorICAgICAgICAoZ2w6OkdMRVMx
U3RhdGU6OmdldEhpbnQpOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9HTEVTMVN0
YXRlLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3JfdW5p
dHRlc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9JbmZvTG9nLmg6IEFk
ZGVkLgorICAgICAgICAoZ2w6OkluZm9Mb2c6OlN0cmVhbUhlbHBlcjo6U3RyZWFtSGVscGVyKToK
KyAgICAgICAgKGdsOjpJbmZvTG9nOjpTdHJlYW1IZWxwZXI6Om9wZXJhdG9yPSk6CisgICAgICAg
IChnbDo6SW5mb0xvZzo6U3RyZWFtSGVscGVyOjp+U3RyZWFtSGVscGVyKToKKyAgICAgICAgKGds
OjpJbmZvTG9nOjpTdHJlYW1IZWxwZXI6Om9wZXJhdG9yPDwpOgorICAgICAgICAoZ2w6OkluZm9M
b2c6Om9wZXJhdG9yPDwpOgorICAgICAgICAoZ2w6OkluZm9Mb2c6OnN0ciBjb25zdCk6CisgICAg
ICAgIChnbDo6SW5mb0xvZzo6ZW5zdXJlSW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9NZW1vcnlPYmplY3QuY3BwOgorICAgICAgICAoZ2w6Ok1lbW9yeU9iamVjdDo6TWVtb3J5
T2JqZWN0KToKKyAgICAgICAgKGdsOjpNZW1vcnlPYmplY3Q6OnNldERlZGljYXRlZE1lbW9yeSk6
CisgICAgICAgIChnbDo6TWVtb3J5T2JqZWN0OjppbXBvcnRGZCk6CisgICAgICAgIChnbDo6TWVt
b3J5T2JqZWN0OjppbXBvcnRaaXJjb25IYW5kbGUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9N
ZW1vcnlPYmplY3QuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hl
LmNwcDoKKyAgICAgICAgKGdsOjpNZW1vcnlQcm9ncmFtQ2FjaGU6OkNvbXB1dGVIYXNoKToKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvT1dORVJTOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvT3ZlcmxheS5jcHA6CisgICAg
ICAgIChnbDo6T3ZlcmxheTo6ZW5hYmxlT3ZlcmxheVdpZGdldHNGcm9tRW52aXJvbm1lbnQpOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9PdmVybGF5Lmg6CisgICAgICAgICogc3JjL2xpYkFOR0xF
L092ZXJsYXlXaWRnZXRzLmNwcDoKKyAgICAgICAgKGdsOjpvdmVybGF5X2ltcGw6OkFwcGVuZFdp
ZGdldERhdGFIZWxwZXI6OkFwcGVuZFZ1bGthblJlbmRlclBhc3NDb3VudCk6CisgICAgICAgIChn
bDo6T3ZlcmxheVN0YXRlOjpmaWxsV2lkZ2V0RGF0YSBjb25zdCk6CisgICAgICAgICogc3JjL2xp
YkFOR0xFL092ZXJsYXlXaWRnZXRzLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL092ZXJsYXlf
YXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6T3ZlcmxheTo6aW5pdE92ZXJsYXlXaWRnZXRzKToK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvUGF0aC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3Jj
L2xpYkFOR0xFL1BhdGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvUHJvZ3Jh
bS5jcHA6CisgICAgICAgIChnbDo6V3JpdGVTaGFkZXJWYXIpOgorICAgICAgICAoZ2w6OkxvYWRT
aGFkZXJWYXIpOgorICAgICAgICAoZ2w6OlByb2dyYW1BbGlhc2VkQmluZGluZ3M6OmdldEJpbmRp
bmdCeUxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKGdsOjptQ2FjaGVkQmFzZUluc3RhbmNlKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtU3RhdGU6OmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291
bnQgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1TdGF0ZTo6Z2V0VW5pZm9ybUluZGV4RnJv
bUxvY2F0aW9uIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtU3RhdGU6OmdldFNhbXBsZXJJ
bmRleCBjb25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbVN0YXRlOjpnZXRGaXJzdEF0dGFjaGVk
U2hhZGVyU3RhZ2VUeXBlIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtU3RhdGU6OmdldExh
c3RBdHRhY2hlZFNoYWRlclN0YWdlVHlwZSBjb25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6
YmluZFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6bGluayk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6cmVzb2x2ZUxpbmtJbXBsKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
Ojp1cGRhdGVMaW5rZWRTaGFkZXJTdGFnZXMpOgorICAgICAgICAoZ2w6OlByb2dyYW1TdGF0ZTo6
dXBkYXRlQWN0aXZlU2FtcGxlcnMpOgorICAgICAgICAoZ2w6OlByb2dyYW1TdGF0ZTo6dXBkYXRl
QWN0aXZlSW1hZ2VzKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjp1bmxpbmspOgorICAgICAgICAo
Z2w6OlByb2dyYW06OmxvYWRCaW5hcnkpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFVuaWZv
cm1Mb2NhdGlvbkJpbmRpbmdzIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXREcmF3
QnVmZmVyVHlwZU1hc2sgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmlzVmFsaWRVbmlm
b3JtTG9jYXRpb24gY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFVuaWZvcm1CeUxv
Y2F0aW9uIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb24g
Y29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNob3VsZElnbm9yZVVuaWZvcm0gY29uc3Qp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0xZnYpOgorICAgICAgICAoZ2w6OlBy
b2dyYW06OnNldFVuaWZvcm0yZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0z
ZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm00ZnYpOgorICAgICAgICAoZ2w6
OlByb2dyYW06OnNldFVuaWZvcm0xaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZv
cm0yaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0zaXYpOgorICAgICAgICAo
Z2w6OlByb2dyYW06OnNldFVuaWZvcm00aXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVu
aWZvcm0xdWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtMnVpdik6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6c2V0VW5pZm9ybTN1aXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06
OnNldFVuaWZvcm00dWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4
MmZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M2Z2KToKKyAgICAg
ICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtOjpzZXRVbmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVu
aWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJp
eDN4MmZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M3g0ZnYpOgor
ICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChn
bDo6UHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKGdsOjpQcm9ncmFt
OjpnZXRVbmlmb3JtZnYgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmdldFVuaWZvcm1p
diBjb25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0VW5pZm9ybXVpdiBjb25zdCk6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbTo6dmFsaWRhdGUpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnZh
bGlkYXRlU2FtcGxlcnNJbXBsKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpsaW5rVmFsaWRhdGVT
aGFkZXJzKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpsaW5rVmFyeWluZ3MgY29uc3QpOgorICAg
ICAgICAoZ2w6OlByb2dyYW06OmxpbmtBdHRyaWJ1dGVzKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
OjpsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayBjb25zdCk6CisgICAgICAgIChnbDo6UHJv
Z3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnbDo6UHJv
Z3JhbTo6Z2V0TWVyZ2VkVmFyeWluZ3MgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW06Omxp
bmtPdXRwdXRWYXJpYWJsZXMpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm1WYWx1
ZXNGcm9tQmluZGluZ1F1YWxpZmllcnMpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnVwZGF0ZVNh
bXBsZXJVbmlmb3JtKToKKyAgICAgICAgKGdsOjpQcm9ncmFtU3RhdGU6OnNldFNhbXBsZXJVbmlm
b3JtVGV4dHVyZVR5cGVBbmRGb3JtYXQpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmNsYW1wTWF0
cml4VW5pZm9ybUNvdW50KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRVbmlmb3JtSW50ZXJu
YWwgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNlcmlhbGl6ZSBjb25zdCk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnBv
c3RSZXNvbHZlTGluayk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6YmluZEZyYWdtZW50SW5wdXRM
b2NhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0RnJhZ21lbnRJbnB1
dEJpbmRpbmdJbmZvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpQcm9ncmFtOjpwYXRo
RnJhZ21lbnRJbnB1dEdlbik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0SW5m
b0xvZ0xlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0SW5m
b0xvZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UHJvZ3JhbTo6aXNBdHRyaWJMb2Nh
dGlvbkFjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0RnJh
Z21lbnRJbnB1dEJpbmRpbmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpQcm9ncmFt
OjpnZXRBdHRyaWJ1dGVzVHlwZU1hc2sgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlBy
b2dyYW06OmdldEF0dHJpYnV0ZXNNYXNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpQ
cm9ncmFtOjpsaW5rVmFsaWRhdGVGcmFnbWVudElucHV0QmluZGluZ3MgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHNyYy9saWJBTkdMRS9Qcm9ncmFtLmg6CisgICAgICAgIChnbDo6UHJvZ3Jh
bUJpbmRpbmc6OlByb2dyYW1CaW5kaW5nKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVmFyeWluZ1Jl
Zjo6Z2V0IGNvbnN0KToKKyAgICAgICAgKGdsOjpJbmZvTG9nOjpTdHJlYW1IZWxwZXI6OlN0cmVh
bUhlbHBlcik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6SW5mb0xvZzo6U3RyZWFtSGVscGVyOjpv
cGVyYXRvcj0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkluZm9Mb2c6OlN0cmVhbUhlbHBlcjo6
flN0cmVhbUhlbHBlcik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6SW5mb0xvZzo6U3RyZWFtSGVs
cGVyOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpJbmZvTG9nOjpvcGVyYXRv
cjw8KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpJbmZvTG9nOjpzdHIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoZ2w6OkluZm9Mb2c6OmVuc3VyZUluaXRpYWxpemVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAo
Z2w6Om1BY3RpdmVJbWFnZXNNYXNrKToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6
cmVzZXQpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpnZXRJbmZvTG9nTGVuZ3Ro
IGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0SW5mb0xvZyBjb25z
dCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUV4ZWN1dGFibGU6OmdldEluZm9Mb2dTdHJpbmcgY29u
c3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjppc0F0dHJpYkxvY2F0aW9uQWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0QXR0cmlidXRl
c01hc2sgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpoYXNEZWZhdWx0
VW5pZm9ybXMgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpoYXNUZXh0
dXJlcyBjb25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUV4ZWN1dGFibGU6Omhhc1VuaWZvcm1C
dWZmZXJzIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6aGFzU3RvcmFn
ZUJ1ZmZlcnMgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpoYXNBdG9t
aWNDb3VudGVyQnVmZmVycyBjb25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUV4ZWN1dGFibGU6
Omhhc0ltYWdlcyBjb25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUV4ZWN1dGFibGU6Omhhc1Ry
YW5zZm9ybUZlZWRiYWNrT3V0cHV0IGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0
YWJsZTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCBjb25zdCk6CisgICAgICAgIChn
bDo6UHJvZ3JhbUV4ZWN1dGFibGU6OnVwZGF0ZUFjdGl2ZVNhbXBsZXJzKToKKyAgICAgICAgKGds
OjpQcm9ncmFtRXhlY3V0YWJsZTo6dXBkYXRlQWN0aXZlSW1hZ2VzKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6c2V0U2FtcGxlclVuaWZvcm1UZXh0dXJlVHlwZUFuZEZvcm1hdCk6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxlLmg6IEFkZGVkLgorICAg
ICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpnZXRJbmZvTG9nKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6cmVzZXRJbmZvTG9nKToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhl
Y3V0YWJsZTo6Z2V0TGlua2VkU2hhZGVyU3RhZ2VzIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtRXhlY3V0YWJsZTo6Z2V0TGlua2VkU2hhZGVyU3RhZ2VzKToKKyAgICAgICAgKGdsOjpQcm9n
cmFtRXhlY3V0YWJsZTo6aGFzTGlua2VkU2hhZGVyU3RhZ2UgY29uc3QpOgorICAgICAgICAoZ2w6
OlByb2dyYW1FeGVjdXRhYmxlOjpnZXRMaW5rZWRTaGFkZXJTdGFnZUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6aXNDb21wdXRlIGNvbnN0KToKKyAgICAgICAg
KGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzayBjb25z
dCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUV4ZWN1dGFibGU6OmdldE5vbkJ1aWx0aW5BdHRyaWJM
b2NhdGlvbnNNYXNrIGNvbnN0KToKKyAgICAgICAgKGdsOjpQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0
TWF4QWN0aXZlQXR0cmliTG9jYXRpb24gY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVj
dXRhYmxlOjpnZXRBdHRyaWJ1dGVzVHlwZU1hc2sgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dy
YW1FeGVjdXRhYmxlOjpnZXRBY3RpdmVTYW1wbGVyc01hc2sgY29uc3QpOgorICAgICAgICAoZ2w6
OlByb2dyYW1FeGVjdXRhYmxlOjpnZXRTYW1wbGVyRm9ybWF0Rm9yVGV4dHVyZVVuaXRJbmRleCBj
b25zdCk6CisgICAgICAgIChnbDo6UHJvZ3JhbUV4ZWN1dGFibGU6OmdldEFjdGl2ZUltYWdlc01h
c2sgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpnZXRBY3RpdmVTYW1w
bGVyVHlwZXMgY29uc3QpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpzZXRQcm9n
cmFtU3RhdGUpOgorICAgICAgICAoZ2w6OlByb2dyYW1FeGVjdXRhYmxlOjpzZXRQcm9ncmFtUGlw
ZWxpbmVTdGF0ZSk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5jcHA6
CisgICAgICAgIChnbDo6UHJvZ3JhbVBpcGVsaW5lU3RhdGU6OlByb2dyYW1QaXBlbGluZVN0YXRl
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHA6CisgICAgICAgIChnbDo6U2VtYXBob3Jl
TWFuYWdlcjo6Z2V0U2VtYXBob3JlIGNvbnN0KToKKyAgICAgICAgKGdsOjpQYXRoTWFuYWdlcjo6
Y3JlYXRlUGF0aHMpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlBhdGhNYW5hZ2VyOjpkZWxldGVQ
YXRocyk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UGF0aE1hbmFnZXI6OmdldFBhdGggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoZ2w6OlBhdGhNYW5hZ2VyOjpoYXNQYXRoIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKGdsOjpQYXRoTWFuYWdlcjo6flBhdGhNYW5hZ2VyKTogRGVsZXRlZC4K
KyAgICAgICAgKGdsOjpQYXRoTWFuYWdlcjo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvUmVz
b3VyY2VNYXAuaDoKKyAgICAgICAgKGdsOjpJRFR5cGU+OjpiZWdpbiBjb25zdCk6CisgICAgICAg
IChnbDo6SURUeXBlPjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKGdsOjpJRFR5cGU+OjpiZWdpbldp
dGhOdWxsIGNvbnN0KToKKyAgICAgICAgKGdsOjpJRFR5cGU+OjplbmRXaXRoTnVsbCBjb25zdCk6
CisgICAgICAgIChnbDo6SURUeXBlPjo6bmV4dFJlc291cmNlIGNvbnN0KToKKyAgICAgICAgKGds
OjpJRFR5cGU+OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoZ2w6Om9wZXJhdG9yKysp
OgorICAgICAgICAoZ2w6OklEVHlwZT46Om5leHROb25OdWxsUmVzb3VyY2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9TZW1hcGhvcmUuY3BwOgorICAgICAgICAoZ2w6
OlNlbWFwaG9yZTo6aW1wb3J0WmlyY29uSGFuZGxlKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
U2VtYXBob3JlLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL1N0YXRlLmNwcDoKKyAgICAgICAg
KGdsOjpBY3RpdmVUZXh0dXJlc0NhY2hlOjpBY3RpdmVUZXh0dXJlc0NhY2hlKToKKyAgICAgICAg
KGdsOjpBY3RpdmVUZXh0dXJlc0NhY2hlOjp+QWN0aXZlVGV4dHVyZXNDYWNoZSk6CisgICAgICAg
IChnbDo6QWN0aXZlVGV4dHVyZXNDYWNoZTo6Y2xlYXIpOgorICAgICAgICAoZ2w6OkFjdGl2ZVRl
eHR1cmVzQ2FjaGU6OmVtcHR5IGNvbnN0KToKKyAgICAgICAgKGdsOjpBY3RpdmVUZXh0dXJlc0Nh
Y2hlOjpyZXNldCk6CisgICAgICAgIChnbDo6QWN0aXZlVGV4dHVyZXNDYWNoZTo6c2V0KToKKyAg
ICAgICAgKGdsOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAoZ2w6OlN0YXRlOjppbml0aWFsaXpl
KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6cmVzZXQpOgorICAgICAgICAoZ2w6OlN0YXRlOjp1bnNl
dEFjdGl2ZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpTdGF0ZTo6dXBkYXRlQWN0aXZlVGV4dHVy
ZVN0YXRlKToKKyAgICAgICAgKGdsOjpTdGF0ZTo6dXBkYXRlQWN0aXZlVGV4dHVyZSk6CisgICAg
ICAgIChnbDo6U3RhdGU6Omhhc0NvbnN0YW50Q29sb3IgY29uc3QpOgorICAgICAgICAoZ2w6OlN0
YXRlOjpoYXNDb25zdGFudEFscGhhIGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6c2V0Q29s
b3JNYXNrKToKKyAgICAgICAgKGdsOjpTdGF0ZTo6c2V0Q29sb3JNYXNrSW5kZXhlZCk6CisgICAg
ICAgIChnbDo6U3RhdGU6OmFsbEFjdGl2ZURyYXdCdWZmZXJDaGFubmVsc01hc2tlZCBjb25zdCk6
CisgICAgICAgIChnbDo6U3RhdGU6OmFueUFjdGl2ZURyYXdCdWZmZXJDaGFubmVsTWFza2VkIGNv
bnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6c2V0QmxlbmQpOgorICAgICAgICAoZ2w6OlN0YXRl
OjpzZXRCbGVuZEluZGV4ZWQpOgorICAgICAgICAoZ2w6OlN0YXRlOjpzZXRCbGVuZEZhY3RvcnMp
OgorICAgICAgICAoZ2w6OlN0YXRlOjpzZXRCbGVuZEZhY3RvcnNJbmRleGVkKToKKyAgICAgICAg
KGdsOjpTdGF0ZTo6c2V0QmxlbmRDb2xvcik6CisgICAgICAgIChnbDo6U3RhdGU6OnNldEJsZW5k
RXF1YXRpb24pOgorICAgICAgICAoZ2w6OlN0YXRlOjpzZXRCbGVuZEVxdWF0aW9uSW5kZXhlZCk6
CisgICAgICAgIChnbDo6U3RhdGU6OnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZSk6CisgICAgICAg
IChnbDo6U3RhdGU6OnNldFNjaXNzb3JUZXN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6c2V0U2Np
c3NvclBhcmFtcyk6CisgICAgICAgIChnbDo6U3RhdGU6OnNldERpdGhlcik6CisgICAgICAgIChn
bDo6U3RhdGU6OnNldEVuYWJsZUZlYXR1cmVJbmRleGVkKToKKyAgICAgICAgKGdsOjpTdGF0ZTo6
Z2V0RW5hYmxlRmVhdHVyZUluZGV4ZWQgY29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpzZXRW
aWV3cG9ydFBhcmFtcyk6CisgICAgICAgIChnbDo6U3RhdGU6OnNldFNhbXBsZXJUZXh0dXJlKToK
KyAgICAgICAgKGdsOjpTdGF0ZTo6c2V0U2FtcGxlckJpbmRpbmcpOgorICAgICAgICAoZ2w6OlN0
YXRlOjpzZXRQcm9ncmFtKToKKyAgICAgICAgKGdsOjpTdGF0ZTo6c2V0UHJvZ3JhbVBpcGVsaW5l
QmluZGluZyk6CisgICAgICAgIChnbDo6U3RhdGU6OmRldGFjaFByb2dyYW1QaXBlbGluZSk6Cisg
ICAgICAgIChnbDo6U3RhdGU6OmdldEJvb2xlYW52IGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0
ZTo6Z2V0RmxvYXR2IGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6Z2V0SW50ZWdlcnYgY29u
c3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRJbnRlZ2VyaV92IGNvbnN0KToKKyAgICAgICAg
KGdsOjpTdGF0ZTo6Z2V0SW50ZWdlcjY0aV92IGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6
Z2V0Qm9vbGVhbmlfdiBjb25zdCk6CisgICAgICAgIChnbDo6U3RhdGU6OnN5bmNUZXh0dXJlc0lu
aXQpOgorICAgICAgICAoZ2w6OlN0YXRlOjpzeW5jSW1hZ2VzSW5pdCk6CisgICAgICAgIChnbDo6
U3RhdGU6Om9uUHJvZ3JhbUV4ZWN1dGFibGVDaGFuZ2UpOgorICAgICAgICAoZ2w6OlN0YXRlOjpz
ZXRJbWFnZVVuaXQpOgorICAgICAgICAoZ2w6OlN0YXRlOjpvbkFjdGl2ZVRleHR1cmVDaGFuZ2Up
OgorICAgICAgICAoZ2w6OlN0YXRlOjpvbkFjdGl2ZVRleHR1cmVTdGF0ZUNoYW5nZSk6CisgICAg
ICAgIChnbDo6bU92ZXJsYXkpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlN0YXRlOjpsb2FkUGF0
aFJlbmRlcmluZ01hdHJpeCk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6U3RhdGU6OmdldFBhdGhS
ZW5kZXJpbmdNYXRyaXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlN0YXRlOjpzZXRQ
YXRoU3RlbmNpbEZ1bmMpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRCb29sZWFu
dik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6U3RhdGU6OmdldEZsb2F0dik6IERlbGV0ZWQuCisg
ICAgICAgIChnbDo6U3RhdGU6OmdldEludGVnZXJ2KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpT
dGF0ZTo6Z2V0SW50ZWdlcmlfdik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6U3RhdGU6OmdldElu
dGVnZXI2NGlfdik6IERlbGV0ZWQuCisgICAgICAgIChnbDo6U3RhdGU6OmdldEJvb2xlYW5pX3Yp
OiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9TdGF0ZS5oOgorICAgICAgICAoZ2w6
OlN0YXRlOjpnZXRCbGVuZFN0YXRlIGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6Z2V0Qmxl
bmRTdGF0ZUFycmF5IGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6aXNCbGVuZEVuYWJsZWQg
Y29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjppc0JsZW5kRW5hYmxlZEluZGV4ZWQgY29uc3Qp
OgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRCbGVuZEVuYWJsZWREcmF3QnVmZmVyTWFzayBjb25z
dCk6CisgICAgICAgIChnbDo6U3RhdGU6OmlzU2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCBj
b25zdCk6CisgICAgICAgIChnbDo6U3RhdGU6OmlzRGl0aGVyRW5hYmxlZCBjb25zdCk6CisgICAg
ICAgIChnbDo6U3RhdGU6OmdldFByb2dyYW1FeGVjdXRhYmxlIGNvbnN0KToKKyAgICAgICAgKGds
OjpTdGF0ZTo6Z2V0QWN0aXZlVGV4dHVyZXNDYWNoZSBjb25zdCk6CisgICAgICAgIChnbDo6U3Rh
dGU6OnZhbGlkYXRlU2FtcGxlckZvcm1hdHMgY29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpn
ZXRTeW5jTWFuYWdlckZvckNhcHR1cmUgY29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRT
YW1wbGVyTWFuYWdlckZvckNhcHR1cmUgY29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRT
YW1wbGVyQmluZGluZ3NGb3JDYXB0dXJlIGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6Z2V0
QWN0aXZlUXVlcmllc0ZvckNhcHR1cmUgY29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpoYXND
b25zdGFudEFscGhhQmxlbmRGdW5jIGNvbnN0KToKKyAgICAgICAgKGdsOjpTdGF0ZTo6aGFzU2lt
dWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jIGNvbnN0KToKKyAgICAgICAg
KGdsOjpTdGF0ZTo6bm9TaW11bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVuZEZ1bmMg
Y29uc3QpOgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRQYXRoU3RlbmNpbEZ1bmMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoZ2w6OlN0YXRlOjpnZXRQYXRoU3RlbmNpbFJlZiBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChnbDo6U3RhdGU6OmdldFBhdGhTdGVuY2lsTWFzayBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL1RleHR1cmUuY3BwOgorICAgICAgICAoZ2w6
OlRleHR1cmVTdGF0ZTo6VGV4dHVyZVN0YXRlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlU3RhdGU6
OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzIGNvbnN0KToKKyAgICAgICAgKGdsOjpUZXh0dXJl
OjpnZXRFeHRlbnRzIGNvbnN0KToKKyAgICAgICAgKGdsOjpUZXh0dXJlOjpvbkJpbmRBc0ltYWdl
VGV4dHVyZSk6CisgICAgICAgIChnbDo6VGV4dHVyZTo6b25CaW5kSW1hZ2VUZXh0dXJlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvVGV4dHVyZS5oOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAgICAgIChnbDo6VHJhbnNmb3JtRmVl
ZGJhY2s6OmdldEluZGV4ZWRCdWZmZXJzIGNvbnN0KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
VHJhbnNmb3JtRmVlZGJhY2suaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tp
bmcuY3BwOgorICAgICAgICAoZ2w6OlZhcnlpbmdJblNoYWRlclJlZjo6VmFyeWluZ0luU2hhZGVy
UmVmKToKKyAgICAgICAgKGdsOjpWYXJ5aW5nSW5TaGFkZXJSZWY6Om9wZXJhdG9yPSk6CisgICAg
ICAgIChnbDo6UGFja2VkVmFyeWluZzo6UGFja2VkVmFyeWluZyk6CisgICAgICAgIChnbDo6UGFj
a2VkVmFyeWluZzo6b3BlcmF0b3I9KToKKyAgICAgICAgKGdsOjpWYXJ5aW5nUGFja2luZzo6cGFj
a1ZhcnlpbmcpOgorICAgICAgICAoZ2w6OlZhcnlpbmdQYWNraW5nOjppbnNlcnQpOgorICAgICAg
ICAoZ2w6OlZhcnlpbmdQYWNraW5nOjpwYWNrVXNlclZhcnlpbmcpOgorICAgICAgICAoZ2w6OlZh
cnlpbmdQYWNraW5nOjpwYWNrVXNlclZhcnlpbmdGaWVsZCk6CisgICAgICAgIChnbDo6VmFyeWlu
Z1BhY2tpbmc6OnBhY2tVc2VyVmFyeWluZ1RGKToKKyAgICAgICAgKGdsOjpWYXJ5aW5nUGFja2lu
Zzo6cGFja1VzZXJWYXJ5aW5nRmllbGRURik6CisgICAgICAgIChnbDo6VmFyeWluZ1BhY2tpbmc6
OmNvbGxlY3RBbmRQYWNrVXNlclZhcnlpbmdzKToKKyAgICAgICAgKGdsOjpWYXJ5aW5nUGFja2lu
Zzo6cGFja1VzZXJWYXJ5aW5ncyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNr
aW5nLmg6CisgICAgICAgIChnbDo6UGFja2VkVmFyeWluZzo6aXNTdHJ1Y3RGaWVsZCBjb25zdCk6
CisgICAgICAgIChnbDo6UGFja2VkVmFyeWluZzo6dmFyeWluZyBjb25zdCk6CisgICAgICAgIChn
bDo6UGFja2VkVmFyeWluZzo6ZnVsbE5hbWUgY29uc3QpOgorICAgICAgICAoZ2w6OlBhY2tlZFZh
cnlpbmc6OnZlcnRleE9ubHkgY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9WYXJ5aW5n
UGFja2luZ191bml0dGVzdC5jcHA6CisgICAgICAgIChnbDo6VmFyeWluZ1BhY2tpbmdUZXN0Ojp0
ZXN0VmFyeWluZ1BhY2tpbmcpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNw
cDoKKyAgICAgICAgKGdsOjpSYXN0ZXJpemVyU3RhdGU6OlJhc3Rlcml6ZXJTdGF0ZSk6CisgICAg
ICAgIChnbDo6QmxlbmRTdGF0ZTo6QmxlbmRTdGF0ZSk6CisgICAgICAgIChnbDo6QmxlbmRTdGF0
ZTo6YWxsQ2hhbm5lbHNNYXNrZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9hbmdsZXR5cGVzLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18y
XzBfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldFVuaWZvcm1mdik6CisgICAg
ICAgIChnbDo6Q2FwdHVyZUdldFVuaWZvcm1pdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZv
cm0xZik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm0xZnYpOgorICAgICAgICAoZ2w6OkNh
cHR1cmVVbmlmb3JtMWkpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtMWl2KToKKyAgICAg
ICAgKGdsOjpDYXB0dXJlVW5pZm9ybTJmKToKKyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybTJm
dik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm0yaSk6CisgICAgICAgIChnbDo6Q2FwdHVy
ZVVuaWZvcm0yaXYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtM2YpOgorICAgICAgICAo
Z2w6OkNhcHR1cmVVbmlmb3JtM2Z2KToKKyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybTNpKToK
KyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybTNpdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVu
aWZvcm00Zik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm00ZnYpOgorICAgICAgICAoZ2w6
OkNhcHR1cmVVbmlmb3JtNGkpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtNGl2KToKKyAg
ICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChnbDo6Q2FwdHVy
ZVVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtTWF0cml4NGZ2
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9hdXRvZ2VuLmg6Cisg
ICAgICAgICogc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18yXzBfcGFyYW1zLmNwcDoKKyAgICAg
ICAgKGdsOjpDYXB0dXJlR2V0QWN0aXZlQXR0cmliX25hbWUpOgorICAgICAgICAoZ2w6OkNhcHR1
cmVHZXRBY3RpdmVVbmlmb3JtX2xlbmd0aCk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldEFjdGl2
ZVVuaWZvcm1fc2l6ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldEFjdGl2ZVVuaWZvcm1fdHlw
ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldEFjdGl2ZVVuaWZvcm1fbmFtZSk6CisgICAgICAg
IChnbDo6Q2FwdHVyZUdldFByb2dyYW1JbmZvTG9nX2luZm9Mb2cpOgorICAgICAgICAoZ2w6OkNh
cHR1cmVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRfcmFuZ2UpOgorICAgICAgICAoZ2w6OkNhcHR1
cmVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRfcHJlY2lzaW9uKToKKyAgICAgICAgKGdsOjpDYXB0
dXJlR2V0VW5pZm9ybWZ2X3BhcmFtcyk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldFVuaWZvcm1p
dl9wYXJhbXMpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtMWZ2X3ZhbHVlKToKKyAgICAg
ICAgKGdsOjpDYXB0dXJlVW5pZm9ybTFpdl92YWx1ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVVu
aWZvcm0yZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtMml2X3ZhbHVlKToK
KyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybTNmdl92YWx1ZSk6CisgICAgICAgIChnbDo6Q2Fw
dHVyZVVuaWZvcm0zaXZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtNGZ2X3Zh
bHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybTRpdl92YWx1ZSk6CisgICAgICAgIChn
bDo6Q2FwdHVyZVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVV
bmlmb3JtTWF0cml4M2Z2X3ZhbHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybU1hdHJp
eDRmdl92YWx1ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVZlcnRleEF0dHJpYjFmdl92KToKKyAg
ICAgICAgKGdsOjpDYXB0dXJlVmVydGV4QXR0cmliMmZ2X3YpOgorICAgICAgICAoZ2w6OkNhcHR1
cmVWZXJ0ZXhBdHRyaWIzZnZfdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVZlcnRleEF0dHJpYjRm
dl92KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmNw
cDoKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0VW5pZm9ybXVpdik6CisgICAgICAgIChnbDo6Q2Fw
dHVyZVVuaWZvcm0xdWkpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtMXVpdik6CisgICAg
ICAgIChnbDo6Q2FwdHVyZVVuaWZvcm0ydWkpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3Jt
MnVpdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm0zdWkpOgorICAgICAgICAoZ2w6OkNh
cHR1cmVVbmlmb3JtM3Vpdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm00dWkpOgorICAg
ICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtNHVpdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZv
cm1NYXRyaXgyeDNmdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm1NYXRyaXgyeDRmdik6
CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAgIChnbDo6
Q2FwdHVyZVVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm1N
YXRyaXg0eDJmdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm1NYXRyaXg0eDNmdik6Cisg
ICAgICAgICogc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzBfYXV0b2dlbi5oOgorICAgICAg
ICAqIHNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX3BhcmFtcy5jcHA6CisgICAgICAgIChn
bDo6Q2FwdHVyZURyYXdSYW5nZUVsZW1lbnRzX2luZGljZXMpOgorICAgICAgICAoZ2w6OkNhcHR1
cmVHZXRJbnRlcm5hbGZvcm1hdGl2X3BhcmFtcyk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldFBy
b2dyYW1CaW5hcnlfbGVuZ3RoKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0UHJvZ3JhbUJpbmFy
eV9iaW5hcnlGb3JtYXQpOgorICAgICAgICAoZ2w6OkNhcHR1cmVHZXRQcm9ncmFtQmluYXJ5X2Jp
bmFyeSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldFVuaWZvcm11aXZfcGFyYW1zKToKKyAgICAg
ICAgKGdsOjpDYXB0dXJlVW5pZm9ybTF1aXZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVV
bmlmb3JtMnVpdl92YWx1ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVVuaWZvcm0zdWl2X3ZhbHVl
KToKKyAgICAgICAgKGdsOjpDYXB0dXJlVW5pZm9ybTR1aXZfdmFsdWUpOgorICAgICAgICAoZ2w6
OkNhcHR1cmVVbmlmb3JtTWF0cml4MngzZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVV
bmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtTWF0
cml4M3gyZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtTWF0cml4M3g0ZnZf
dmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtTWF0cml4NHgyZnZfdmFsdWUpOgor
ICAgICAgICAoZ2w6OkNhcHR1cmVVbmlmb3JtTWF0cml4NHgzZnZfdmFsdWUpOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4uY3BwOgorICAgICAgICAoZ2w6
OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTFmKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVu
aWZvcm0xZnYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTFpKToKKyAgICAg
ICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xaXYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQ
cm9ncmFtVW5pZm9ybTF1aSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtMXVp
dik6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtMmYpOgorICAgICAgICAoZ2w6
OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTJmdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1V
bmlmb3JtMmkpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTJpdik6CisgICAg
ICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtMnVpKToKKyAgICAgICAgKGdsOjpDYXB0dXJl
UHJvZ3JhbVVuaWZvcm0ydWl2KToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm0z
Zik6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtM2Z2KToKKyAgICAgICAgKGds
OjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zaSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1V
bmlmb3JtM2l2KToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zdWkpOgorICAg
ICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aXYpOgorICAgICAgICAoZ2w6OkNhcHR1
cmVQcm9ncmFtVW5pZm9ybTRmKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm00
ZnYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTRpKToKKyAgICAgICAgKGds
OjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aXYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFt
VW5pZm9ybTR1aSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtNHVpdik6Cisg
ICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKGds
OjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChnbDo6Q2FwdHVy
ZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0
cml4M3gyZnYpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2
KToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAg
ICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKGdsOjpD
YXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdik6CisgICAgICAgICogc3JjL2xpYkFOR0xF
L2NhcHR1cmVfZ2xlc18zXzFfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9jYXB0
dXJlX2dsZXNfM18xX3BhcmFtcy5jcHA6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlm
b3JtMWZ2X3ZhbHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xaXZfdmFs
dWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTF1aXZfdmFsdWUpOgorICAg
ICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTJmdl92YWx1ZSk6CisgICAgICAgIChnbDo6
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2X3ZhbHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJv
Z3JhbVVuaWZvcm0ydWl2X3ZhbHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZv
cm0zZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybTNpdl92YWx1
ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtM3Vpdl92YWx1ZSk6CisgICAg
ICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtNGZ2X3ZhbHVlKToKKyAgICAgICAgKGdsOjpD
YXB0dXJlUHJvZ3JhbVVuaWZvcm00aXZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9n
cmFtVW5pZm9ybTR1aXZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9y
bU1hdHJpeDJmdl92YWx1ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0
cml4MngzZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4NGZ2X3ZhbHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgz
ZnZfdmFsdWUpOgorICAgICAgICAoZ2w6OkNhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2
X3ZhbHVlKToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdl92
YWx1ZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2X3ZhbHVl
KToKKyAgICAgICAgKGdsOjpDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZSk6
CisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZfdmFsdWUpOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18yX2F1dG9nZW4uY3BwOgorICAg
ICAgICAoZ2w6OkNhcHR1cmVHZXRuVW5pZm9ybWZ2KToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0
blVuaWZvcm1pdik6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3JtdWl2KToKKyAgICAg
ICAgKiBzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9hdXRvZ2VuLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJfcGFyYW1zLmNwcDoKKyAgICAgICAgKGdsOjpD
YXB0dXJlR2V0blVuaWZvcm1mdl9wYXJhbXMpOgorICAgICAgICAoZ2w6OkNhcHR1cmVHZXRuVW5p
Zm9ybWl2X3BhcmFtcyk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3JtdWl2X3BhcmFt
cyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5jcHA6
CisgICAgICAgIChnbDo6Q2FwdHVyZUltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKToKKyAg
ICAgICAgKGdsOjpDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6
OkNhcHR1cmVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkNhcHR1cmVJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRSk6Cisg
ICAgICAgIChnbDo6Q2FwdHVyZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSk6CisgICAgICAg
IChnbDo6Q2FwdHVyZUdldEludGVnZXI2NHZFWFQpOgorICAgICAgICAoZ2w6OkNhcHR1cmVCbGVu
ZEVxdWF0aW9uU2VwYXJhdGVpRVhUKToKKyAgICAgICAgKGdsOjpDYXB0dXJlQmxlbmRFcXVhdGlv
bmlFWFQpOgorICAgICAgICAoZ2w6OkNhcHR1cmVCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQpOgorICAg
ICAgICAoZ2w6OkNhcHR1cmVCbGVuZEZ1bmNpRVhUKToKKyAgICAgICAgKGdsOjpDYXB0dXJlQ29s
b3JNYXNraUVYVCk6CisgICAgICAgIChnbDo6Q2FwdHVyZURpc2FibGVpRVhUKToKKyAgICAgICAg
KGdsOjpDYXB0dXJlRW5hYmxlaUVYVCk6CisgICAgICAgIChnbDo6Q2FwdHVyZUlzRW5hYmxlZGlF
WFQpOgorICAgICAgICAoZ2w6OkNhcHR1cmVHZXRuVW5pZm9ybWZ2RVhUKToKKyAgICAgICAgKGds
OjpDYXB0dXJlR2V0blVuaWZvcm1pdkVYVCk6CisgICAgICAgIChnbDo6Q2FwdHVyZUJsZW5kRXF1
YXRpb25TZXBhcmF0ZWlPRVMpOgorICAgICAgICAoZ2w6OkNhcHR1cmVCbGVuZEVxdWF0aW9uaU9F
Uyk6CisgICAgICAgIChnbDo6Q2FwdHVyZUJsZW5kRnVuY1NlcGFyYXRlaU9FUyk6CisgICAgICAg
IChnbDo6Q2FwdHVyZUJsZW5kRnVuY2lPRVMpOgorICAgICAgICAoZ2w6OkNhcHR1cmVDb2xvck1h
c2tpT0VTKToKKyAgICAgICAgKGdsOjpDYXB0dXJlRGlzYWJsZWlPRVMpOgorICAgICAgICAoZ2w6
OkNhcHR1cmVFbmFibGVpT0VTKToKKyAgICAgICAgKGdsOjpDYXB0dXJlSXNFbmFibGVkaU9FUyk6
CisgICAgICAgIChnbDo6Q2FwdHVyZU1hdHJpeExvYWRmQ0hST01JVU0pOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OkNhcHR1cmVNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSk6IERlbGV0ZWQuCisg
ICAgICAgIChnbDo6Q2FwdHVyZUdlblBhdGhzQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAo
Z2w6OkNhcHR1cmVEZWxldGVQYXRoc0NIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpD
YXB0dXJlSXNQYXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNhcHR1cmVQYXRo
Q29tbWFuZHNDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q2FwdHVyZVBhdGhQYXJh
bWV0ZXJmQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNhcHR1cmVQYXRoUGFyYW1l
dGVyaUNIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0UGF0aFBhcmFt
ZXRlcmZ2Q0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNhcHR1cmVHZXRQYXRoUGFy
YW1ldGVyaXZDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q2FwdHVyZVBhdGhTdGVu
Y2lsRnVuY0NIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDYXB0dXJlU3RlbmNpbEZp
bGxQYXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNhcHR1cmVTdGVuY2lsU3Ry
b2tlUGF0aENIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDYXB0dXJlQ292ZXJGaWxs
UGF0aENIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDYXB0dXJlQ292ZXJTdHJva2VQ
YXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNhcHR1cmVTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q2FwdHVyZVN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNh
cHR1cmVDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAo
Z2w6OkNhcHR1cmVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSk6IERlbGV0ZWQuCisg
ICAgICAgIChnbDo6Q2FwdHVyZVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0pOiBE
ZWxldGVkLgorICAgICAgICAoZ2w6OkNhcHR1cmVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6Q2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJGaWxs
UGF0aEluc3RhbmNlZENIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpDYXB0dXJlU3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAg
ICAgIChnbDo6Q2FwdHVyZUJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTSk6IERlbGV0
ZWQuCisgICAgICAgIChnbDo6Q2FwdHVyZVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9N
SVVNKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzX2V4dF9h
dXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfcGFyYW1z
LmNwcDoKKyAgICAgICAgKGdsOjpDYXB0dXJlUmVxdWVzdEV4dGVuc2lvbkFOR0xFX25hbWUpOgor
ICAgICAgICAoZ2w6OkNhcHR1cmVEaXNhYmxlRXh0ZW5zaW9uQU5HTEVfbmFtZSk6CisgICAgICAg
IChnbDo6Q2FwdHVyZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFX2xlbmd0aCk6CisgICAgICAgIChn
bDo6Q2FwdHVyZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFX3BhcmFtcyk6CisgICAgICAgIChnbDo6
Q2FwdHVyZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFX2xlbmd0aCk6CisgICAgICAgIChnbDo6Q2Fw
dHVyZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFX3BhcmFtcyk6CisgICAgICAgIChnbDo6Q2FwdHVy
ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgpOgorICAgICAgICAoZ2w6OkNhcHR1cmVH
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVfcGFyYW1zKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFX2xlbmd0aCk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMpOgorICAgICAgICAoZ2w6OkNhcHR1cmVHZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFX3BhcmFtcyk6CisgICAgICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEVfbGVuZ3RoKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0blVuaWZvcm11
aXZSb2J1c3RBTkdMRV9wYXJhbXMpOgorICAgICAgICAoZ2w6OkNhcHR1cmVCaW5kVW5pZm9ybUxv
Y2F0aW9uQ0hST01JVU1fbmFtZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUJpbmRGcmFnbWVudElu
cHV0TG9jYXRpb25DSFJPTUlVTV9uYW1lKToKKyAgICAgICAgKGdsOjpDYXB0dXJlQmluZEZyYWdE
YXRhTG9jYXRpb25FWFRfbmFtZSk6CisgICAgICAgIChnbDo6Q2FwdHVyZUJpbmRGcmFnRGF0YUxv
Y2F0aW9uSW5kZXhlZEVYVF9uYW1lKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0RnJhZ0RhdGFJ
bmRleEVYVF9uYW1lKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0UHJvZ3JhbVJlc291cmNlTG9j
YXRpb25JbmRleEVYVF9uYW1lKToKKyAgICAgICAgKGdsOjpDYXB0dXJlR2V0SW50ZWdlcjY0dkVY
VF9kYXRhKToKKyAgICAgICAgKGdsOjpDYXB0dXJlRHJhd0J1ZmZlcnNFWFRfYnVmcyk6CisgICAg
ICAgIChnbDo6Q2FwdHVyZUdldG5Vbmlmb3JtZnZFWFRfcGFyYW1zKToKKyAgICAgICAgKGdsOjpD
YXB0dXJlR2V0blVuaWZvcm1pdkVYVF9wYXJhbXMpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9l
bnRyeV9wb2ludHNfZW51bV9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpHZXRFbnRyeVBvaW50
TmFtZSk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50c19lbnVtX2F1dG9nZW4u
aDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcDoKKyAgICAg
ICAgKGdsOjpHZXRTaXplZEZvcm1hdEludGVybmFsKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
Zm9ybWF0X21hcF9kYXRhLmpzb246CisgICAgICAgICogc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmNwcDoKKyAgICAgICAgKGdsOjpCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCk6CisgICAgICAg
ICogc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmg6CisgICAgICAgIChnbDo6R2V0TmF0aXZlVmlz
dWFsSUQpOgorICAgICAgICAoZ2w6OklzUzNUQ0Zvcm1hdCk6CisgICAgICAgIChnbDo6SXNSR1RD
Rm9ybWF0KToKKyAgICAgICAgKGdsOjpJc0FTVEMyREZvcm1hdCk6CisgICAgICAgIChnbDo6SXNF
VEMyRUFDRm9ybWF0KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV9yZXBs
YXlfYXV0b2dlbi5jcHA6CisgICAgICAgIChhbmdsZTo6RnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxs
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV91dGlsc19hdXRvZ2VuLmNw
cDoKKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtQ2FwdHVyZVJlcGxheSk6CisgICAgICAgIChh
bmdsZTo6UGFyYW1UeXBlVG9TdHJpbmcpOgorICAgICAgICAoYW5nbGU6OkdldFJlc291cmNlSURU
eXBlRnJvbVBhcmFtVHlwZSk6CisgICAgICAgIChhbmdsZTo6R2V0UmVzb3VyY2VJRFR5cGVOYW1l
KToKKyAgICAgICAgKGFuZ2xlOjpXcml0ZVBhcmFtVHlwZVRvU3RyZWFtKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV91dGlsc19hdXRvZ2VuLmg6CisgICAg
ICAgIChhbmdsZTo6Z2w6OlVuaWZvcm1Mb2NhdGlvbj4pOgorICAgICAgICAoYW5nbGU6OkFjY2Vz
c1BhcmFtVmFsdWUpOgorICAgICAgICAoYW5nbGU6OlNldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFVu
aWZvcm1Mb2NhdGlvbj4pOgorICAgICAgICAoYW5nbGU6OkluaXRQYXJhbVZhbHVlKToKKyAgICAg
ICAgKGFuZ2xlOjpnbDo6UGF0aElEPik6IERlbGV0ZWQuCisgICAgICAgIChhbmdsZTo6U2V0UGFy
YW1WYWw8UGFyYW1UeXBlOjpUUGF0aElEPik6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFO
R0xFL2dsX2VudW1fdXRpbHNfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6R0xlbnVtVG9TdHJp
bmcpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9vdmVybGF5X3dpZGdldHMuanNvbjoKKyAgICAg
ICAgKiBzcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHA6CisgICAgICAgIChnbDo6Q2Fz
dFN0YXRlVmFsdWVzKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5o
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmNwcDoKKyAgICAgICAgKGdsOjpR
dWVyeVByb2dyYW1pdik6CisgICAgICAgIChnbDo6UXVlcnlUZXhQYXJhbWV0ZXJmdik6CisgICAg
ICAgIChnbDo6UXVlcnlUZXhQYXJhbWV0ZXJ4dik6CisgICAgICAgIChnbDo6UXVlcnlUZXhQYXJh
bWV0ZXJpdik6CisgICAgICAgIChnbDo6UXVlcnlUZXhQYXJhbWV0ZXJJaXYpOgorICAgICAgICAo
Z2w6OlF1ZXJ5VGV4UGFyYW1ldGVySXVpdik6CisgICAgICAgIChnbDo6U2V0VGV4UGFyYW1ldGVy
eCk6CisgICAgICAgIChnbDo6U2V0VGV4UGFyYW1ldGVyeHYpOgorICAgICAgICAoZ2w6OlNldFRl
eFBhcmFtZXRlcmYpOgorICAgICAgICAoZ2w6OlNldFRleFBhcmFtZXRlcmZ2KToKKyAgICAgICAg
KGdsOjpTZXRUZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpTZXRUZXhQYXJhbWV0ZXJpdik6
CisgICAgICAgIChnbDo6U2V0VGV4UGFyYW1ldGVySWl2KToKKyAgICAgICAgKGdsOjpTZXRUZXhQ
YXJhbWV0ZXJJdWl2KToKKyAgICAgICAgKGdsOjpHZXRVbmlmb3JtUmVzb3VyY2VQcm9wZXJ0eSk6
CisgICAgICAgIChnbDo6UXVlcnlQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbik6CisgICAgICAgIChn
bDo6U2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlF1ZXJ5TWVtb3J5
T2JqZWN0UGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OkdldFBvaW50U2l6ZSk6CisgICAgICAg
IChnbDo6R2V0UXVlcnlQYXJhbWV0ZXJJbmZvKToKKyAgICAgICAgKGVnbDo6UXVlcnlDb25maWdB
dHRyaWIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNwcDoKKyAgICAgICAgKHJ4OjpDb250
ZXh0SW1wbDo6c3RlbmNpbEZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0
SW1wbDo6c3RlbmNpbFN0cm9rZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHRJ
bXBsOjpjb3ZlckZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0SW1wbDo6
Y292ZXJTdHJva2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0SW1wbDo6c3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0SW1w
bDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAocng6OkNv
bnRleHRJbXBsOjpjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4
OjpDb250ZXh0SW1wbDo6Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAg
ICAgKHJ4OjpDb250ZXh0SW1wbDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKHJ4OjpDb250ZXh0SW1wbDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQpOiBE
ZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHRJbXBsOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHRJbXBsOjpzdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL0Zvcm1hdElEX2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwOgorICAgICAgICAoYW5nbGU6OkZvcm1hdDo6SW50
ZXJuYWxGb3JtYXRUb0lEKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBs
RmFjdG9yeS5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9NZW1vcnlPYmplY3RJ
bXBsLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmg6IFJlbW92
ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmg6CisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlclRhcmdldENhY2hlLmg6CisgICAgICAg
IChyeDo6UmVuZGVyVGFyZ2V0Q2FjaGU8UmVuZGVyVGFyZ2V0VD46OmdldERlcHRoU3RlbmNpbCBj
b25zdCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0Q2FjaGU8UmVuZGVyVGFyZ2V0VD46OnVw
ZGF0ZURlcHRoU3RlbmNpbFJlbmRlclRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0
Q2FjaGU8UmVuZGVyVGFyZ2V0VD46OlJlbmRlclRhcmdldENhY2hlKTogRGVsZXRlZC4KKyAgICAg
ICAgKHJ4OjptRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4
OjpSZW5kZXJUYXJnZXRDYWNoZTxSZW5kZXJUYXJnZXRUPjo6flJlbmRlclRhcmdldENhY2hlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvU2VtYXBob3JlSW1wbC5o
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfZGF0YS5qc29u
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpzb246
CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHA6Cisg
ICAgICAgIChyeDo6RHluYW1pY0hMU0w6OmdlbmVyYXRlVmFyeWluZ0xpbmtITFNMIGNvbnN0KToK
KyAgICAgICAgKHJ4OjpEeW5hbWljSExTTDo6Z2VuZXJhdGVTaGFkZXJMaW5rSExTTCBjb25zdCk6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHA6
CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAo
cng6OkZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChyeDo6RnJhbWVi
dWZmZXJEM0Q6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAocng6OkZyYW1lYnVmZmVyRDNEOjpn
ZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmg6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJEM0Q6
OmdldExhc3RDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyTWFzayBjb25zdCk6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9PV05FUlM6IEFkZGVkLgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHA6CisgICAgICAgIChyeDo6UHJvZ3Jh
bUQzRDo6bG9hZCk6CisgICAgICAgIChyeDo6UHJvZ3JhbUQzRDo6bG9hZEJpbmFyeVNoYWRlckV4
ZWN1dGFibGVzKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRDNEOjpzYXZlKToKKyAgICAgICAgKHJ4
OjpQcm9ncmFtRDNEOjpkaXJ0eUFsbFVuaWZvcm1zKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRDNE
Ojp1cGRhdGVDYWNoZWRJbnB1dExheW91dCk6CisgICAgICAgIChyeDo6UHJvZ3JhbUQzRDo6Z2F0
aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChyeDo6UHJvZ3JhbUQzRDo6
c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4pOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oOgorICAgICAgICAocng6OlByb2dyYW1EM0Q6Omhh
c1NoYWRlclN0YWdlIGNvbnN0KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1ZlcnRleERhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHJ4OjpWZXJ0ZXhEYXRhTWFuYWdlcjo6
cHJlcGFyZVZlcnRleERhdGEpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvQ2xlYXIxMS5jcHA6CisgICAgICAgIChyeDo6Q2xlYXIxMTo6ZW5zdXJlUmVzb3VyY2Vz
SW5pdGlhbGl6ZWQpOgorICAgICAgICAocng6OkNsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIpOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmNwcDoK
KyAgICAgICAgKHJ4OjpDb250ZXh0MTE6Omluc2VydEV2ZW50TWFya2VyKToKKyAgICAgICAgKHJ4
OjpDb250ZXh0MTE6OnB1c2hHcm91cE1hcmtlcik6CisgICAgICAgIChyeDo6Q29udGV4dDExOjpw
b3BHcm91cE1hcmtlcik6CisgICAgICAgIChyeDo6Q29udGV4dDExOjpwdXNoRGVidWdHcm91cCk6
CisgICAgICAgIChyeDo6Q29udGV4dDExOjpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHA6CisgICAgICAgIChy
eDo6RnJhbWVidWZmZXIxMTo6Z2V0Rmlyc3RSZW5kZXJUYXJnZXQgY29uc3QpOgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5oOgorICAgICAg
ICAocng6OkZyYW1lYnVmZmVyMTE6OmdldENhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCBj
b25zdCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExh
eW91dENhY2hlLmNwcDoKKyAgICAgICAgKHJ4OjpJbnB1dExheW91dENhY2hlOjpnZXRJbnB1dExh
eW91dCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJT
dGF0ZUNhY2hlLmNwcDoKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpHZXRCbGVuZFN0
YXRlS2V5KToKKyAgICAgICAgKHJ4OjpSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVuZFN0YXRlKToK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2Fj
aGUuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVy
MTEuY3BwOgorICAgICAgICAocng6OlJlbmRlcmVyMTE6OmluaXRpYWxpemVGZWF0dXJlcyBjb25z
dCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFn
ZXIxMS5jcHA6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2VyMTE6OlN0YXRlTWFuYWdlcjExKToK
KyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXIxMTo6c3luY1N0YXRlKToKKyAgICAgICAgKHJ4OjpT
dGF0ZU1hbmFnZXIxMTo6c3luY0JsZW5kU3RhdGUpOgorICAgICAgICAocng6OlN0YXRlTWFuYWdl
cjExOjpwcm9jZXNzRnJhbWVidWZmZXJJbnZhbGlkYXRpb24pOgorICAgICAgICAocng6OlN0YXRl
TWFuYWdlcjExOjplbnN1cmVJbml0aWFsaXplZCk6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2Vy
MTE6OnN5bmNDdXJyZW50VmFsdWVBdHRyaWJzKToKKyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXIx
MTo6dXBkYXRlU3RhdGUpOgorICAgICAgICAocng6OlN0YXRlTWFuYWdlcjExOjphcHBseVRleHR1
cmVzRm9yU1JWcyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dGF0ZU1hbmFnZXIxMS5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmNwcDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3BwOgorICAgICAgICAocng6OlZlcnRl
eEFycmF5MTE6OnN5bmNTdGF0ZUZvckRyYXcpOgorICAgICAgICAocng6OlZlcnRleEFycmF5MTE6
Omhhc0FjdGl2ZUR5bmFtaWNBdHRyaWIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfZGF0YS5qc29uOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwOgorICAgICAg
ICAocng6OmQzZDExX2FuZ2xlOjpHZXRGb3JtYXQpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X2RhdGEuanNvbjoKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZV9hdXRvZ2VuLmNw
cDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFf
dXRpbHMuY3BwOgorICAgICAgICAocng6OmQzZDExX2dsOjpHZW5lcmF0ZUNhcHMpOgorICAgICAg
ICAocng6OmQzZDExOjpCbGVuZFN0YXRlS2V5OjpCbGVuZFN0YXRlS2V5KToKKyAgICAgICAgKHJ4
OjpkM2QxMTo6SW5pdGlhbGl6ZUZlYXR1cmVzKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaDoKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X2RhdGEuanNvbjoKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1
dG9nZW4uY3BwOgorICAgICAgICAocng6OmQzZDExOjpGb3JtYXQ6OkdldCk6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmNwcDoKKyAgICAgICAgKHJ4
OjpDb250ZXh0OTo6aW5zZXJ0RXZlbnRNYXJrZXIpOgorICAgICAgICAocng6OkNvbnRleHQ5Ojpw
dXNoR3JvdXBNYXJrZXIpOgorICAgICAgICAocng6OkNvbnRleHQ5Ojpwb3BHcm91cE1hcmtlcik6
CisgICAgICAgIChyeDo6Q29udGV4dDk6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHJ4OjpD
b250ZXh0OTo6cG9wRGVidWdHcm91cCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oOgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuY3BwOgorICAgICAgICAo
cng6OkZyYW1lYnVmZmVyOTo6Y2xlYXJJbXBsKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5Lmg6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXI5
OjpnZXRDYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgY29uc3QpOgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwOgorICAgICAgICAocng6
OlJlbmRlcmVyOTo6Y2xlYXIpOgorICAgICAgICAocng6OlJlbmRlcmVyOTo6aW5pdGlhbGl6ZUZl
YXR1cmVzIGNvbnN0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlcjk6OmFwcGx5VGV4dHVyZXMpOgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNw
cDoKKyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXI5OjpTdGF0ZU1hbmFnZXI5KToKKyAgICAgICAg
KHJ4OjpTdGF0ZU1hbmFnZXI5OjpzeW5jU3RhdGUpOgorICAgICAgICAocng6OlN0YXRlTWFuYWdl
cjk6OnNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0ZXMpOgorICAgICAgICAocng6OlN0YXRlTWFuYWdl
cjk6OnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZSk6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2Vy
OTo6c2V0RGl0aGVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
U3RhdGVNYW5hZ2VyOS5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJf
dXRpbHMuY3BwOgorICAgICAgICAocng6OlBhcnNlTGludXhPU1ZlcnNpb24pOgorICAgICAgICAo
cng6OkdldExpbnV4T1NWZXJzaW9uKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZHJpdmVyX3V0aWxzLmg6CisgICAgICAgIChyeDo6SXNHb29nbGUpOgorICAgICAgICAocng6Oklz
U3dpZnRzaGFkZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0
R0wuY3BwOgorICAgICAgICAocng6OkNvbnRleHRHTDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAg
IChyeDo6Q29udGV4dEdMOjpzZXREcmF3QXJyYXlzU3RhdGUpOgorICAgICAgICAocng6OkNvbnRl
eHRHTDo6c2V0RHJhd0VsZW1lbnRzU3RhdGUpOgorICAgICAgICAocng6OkNvbnRleHRHTDo6dXBk
YXRlQXR0cmlidXRlc0ZvckJhc2VJbnN0YW5jZSk6CisgICAgICAgIChyeDo6Q29udGV4dEdMOjpp
bnNlcnRFdmVudE1hcmtlcik6CisgICAgICAgIChyeDo6Q29udGV4dEdMOjpwdXNoR3JvdXBNYXJr
ZXIpOgorICAgICAgICAocng6OkNvbnRleHRHTDo6cG9wR3JvdXBNYXJrZXIpOgorICAgICAgICAo
cng6OkNvbnRleHRHTDo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAocng6OkNvbnRleHRHTDo6
cG9wRGVidWdHcm91cCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRl
eHRHTDo6c3RlbmNpbEZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0R0w6
OnN0ZW5jaWxTdHJva2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0R0w6OmNv
dmVyRmlsbFBhdGgpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHRHTDo6Y292ZXJTdHJv
a2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0R0w6OnN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Q29udGV4dEdMOjpzdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Q29udGV4dEdMOjpjb3Zl
ckZpbGxQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0R0w6OmNv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Q29udGV4dEdM
OjpzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRl
eHRHTDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAocng6
OkNvbnRleHRHTDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKHJ4OjpDb250ZXh0R0w6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4
dEdMLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BhdGNoVGFibGVH
TF9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKHJ4OjpEaXNwYXRjaFRhYmxlR0w6OmluaXRQcm9jc0dM
RVMpOgorICAgICAgICAocng6OkRpc3BhdGNoVGFibGVHTDo6aW5pdFByb2NzU2hhcmVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChyeDo6RGlzcGF0Y2hUYWJsZUdMOjppbml0UHJvY3NHTEVTTlVMTCk6
CisgICAgICAgIChyeDo6RGlzcGF0Y2hUYWJsZUdMOjppbml0UHJvY3NTaGFyZWRFeHRlbnNpb25z
TlVMTCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BhdGNoVGFibGVH
TF9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9yeU9i
amVjdEdMLmNwcDoKKyAgICAgICAgKHJ4OjpNZW1vcnlPYmplY3RHTDo6c2V0RGVkaWNhdGVkTWVt
b3J5KToKKyAgICAgICAgKHJ4OjpNZW1vcnlPYmplY3RHTDo6aW1wb3J0RmQpOgorICAgICAgICAo
cng6Ok1lbW9yeU9iamVjdEdMOjppbXBvcnRaaXJjb25IYW5kbGUpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmplY3RHTC5oOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9PV05FUlM6IEFkZGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9QYXRoR0wuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9QYXRoR0wuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvUHJvZ3JhbUdMLmNwcDoKKyAgICAgICAgKHJ4OjpQcm9ncmFtR0w6OlByb2dyYW1H
TCk6CisgICAgICAgIChyeDo6UHJvZ3JhbUdMOjpsaW5rKToKKyAgICAgICAgKHJ4OjpQcm9ncmFt
R0w6OnByZUxpbmspOgorICAgICAgICAocng6OlByb2dyYW1HTDo6cG9zdExpbmspOgorICAgICAg
ICAocng6OlByb2dyYW1HTDo6bWFya1VudXNlZFVuaWZvcm1Mb2NhdGlvbnMpOgorICAgICAgICAo
cng6OlByb2dyYW1HTDo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4pOiBEZWxldGVkLgorICAgICAg
ICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaDoKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5jcHA6CisgICAgICAgIChMb2dHTERlYnVn
TWVzc2FnZSk6CisgICAgICAgIChyeDo6UmVuZGVyZXJHTDo6UmVuZGVyZXJHTCk6CisgICAgICAg
IChyeDo6UmVuZGVyZXJHTDo6c3RlbmNpbEZpbGxQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4
OjpSZW5kZXJlckdMOjpzdGVuY2lsU3Ryb2tlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6
UmVuZGVyZXJHTDo6Y292ZXJGaWxsUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6UmVuZGVy
ZXJHTDo6Y292ZXJTdHJva2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpSZW5kZXJlckdM
OjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgpOiBEZWxldGVkLgorICAgICAgICAocng6OlJlbmRl
cmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4
OjpSZW5kZXJlckdMOjpjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KHJ4OjpSZW5kZXJlckdMOjpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAg
ICAgICAocng6OlJlbmRlcmVyR0w6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZCk6IERlbGV0ZWQu
CisgICAgICAgIChyeDo6UmVuZGVyZXJHTDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQpOiBE
ZWxldGVkLgorICAgICAgICAocng6OlJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6UmVuZGVyZXJHTDo6c3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1NlbWFwaG9yZUdMLmNwcDoKKyAgICAgICAgKHJ4OjpTZW1hcGhvcmVHTDo6aW1w
b3J0WmlyY29uSGFuZGxlKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2Vt
YXBob3JlR0wuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5h
Z2VyR0wuY3BwOgorICAgICAgICAocng6Om1Mb2NhbERpcnR5Qml0cyk6CisgICAgICAgIChyeDo6
U3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1UZXh0dXJlQmluZGluZ3MpOgorICAgICAgICAo
cng6OlN0YXRlTWFuYWdlckdMOjp1cGRhdGVQcm9ncmFtU3RvcmFnZUJ1ZmZlckJpbmRpbmdzKToK
KyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXJHTDo6dXBkYXRlUHJvZ3JhbVVuaWZvcm1CdWZmZXJC
aW5kaW5ncyk6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1BdG9t
aWNDb3VudGVyQnVmZmVyQmluZGluZ3MpOgorICAgICAgICAocng6OlN0YXRlTWFuYWdlckdMOjp1
cGRhdGVQcm9ncmFtSW1hZ2VCaW5kaW5ncyk6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2VyR0w6
OnN5bmNTdGF0ZSk6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2VyR0w6OnByb3BhZ2F0ZVByb2dy
YW1Ub1ZBTyk6CisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2VyR0w6OnN5bmNTYW1wbGVyc1N0YXRl
KToKKyAgICAgICAgKHJ4OjpTdGF0ZU1hbmFnZXJHTDo6c2V0UGF0aFJlbmRlcmluZ01vZGVsVmll
d01hdHJpeCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6U3RhdGVNYW5hZ2VyR0w6OnNldFBhdGhS
ZW5kZXJpbmdQcm9qZWN0aW9uTWF0cml4KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpTdGF0ZU1h
bmFnZXJHTDo6c2V0UGF0aFJlbmRlcmluZ1N0ZW5jaWxTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHA6CisgICAgICAgIChyeDo6VGV4
dHVyZUdMOjpjb3B5U3ViSW1hZ2UpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGlzcGxheUNHTC5tbToKKyAgICAgICAgKHJ4OjpEaXNwbGF5Q0dMOjpnZW5lcmF0ZUNv
bmZpZ3MpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0Rpc3BsYXlF
QUdMLm1tOgorICAgICAgICAocng6OkRpc3BsYXlFQUdMOjpnZW5lcmF0ZUNvbmZpZ3MpOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5jcHA6CisgICAg
ICAgIChyeDo6RGlzcGxheUVHTDo6RGlzcGxheUVHTCk6CisgICAgICAgIChyeDo6RGlzcGxheUVH
TDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6RGlzcGxheUVHTDo6dGVybWluYXRlKToKKyAg
ICAgICAgKHJ4OjpEaXNwbGF5RUdMOjpjcmVhdGVXaW5kb3dTdXJmYWNlKToKKyAgICAgICAgKHJ4
OjpEaXNwbGF5RUdMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZSk6CisgICAgICAgIChyeDo6RGlzcGxh
eUVHTDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIpOgorICAgICAgICAocng6OkRpc3Bs
YXlFR0w6OmNyZWF0ZVBpeG1hcFN1cmZhY2UpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6OmNy
ZWF0ZUNvbnRleHQpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6OmdldENvbmZpZ0F0dHJpYiBj
b25zdCk6CisgICAgICAgIChyeDo6RGlzcGxheUVHTDo6Z2V0Q29uZmlnQXR0cmliSWZFeHRlbnNp
b24gY29uc3QpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6OmdlbmVyYXRlQ29uZmlncyk6Cisg
ICAgICAgIChyeDo6RGlzcGxheUVHTDo6dGVzdERldmljZUxvc3QpOgorICAgICAgICAocng6OkRp
c3BsYXlFR0w6OnJlc3RvcmVMb3N0RGV2aWNlKToKKyAgICAgICAgKHJ4OjpEaXNwbGF5RUdMOjpp
c1ZhbGlkTmF0aXZlV2luZG93IGNvbnN0KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5RUdMOjpjcmVh
dGVEZXZpY2UpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6OndhaXRDbGllbnQpOgorICAgICAg
ICAocng6OkRpc3BsYXlFR0w6OndhaXROYXRpdmUpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6
Om1ha2VDdXJyZW50KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5RUdMOjpnZXRNYXhTdXBwb3J0ZWRF
U1ZlcnNpb24gY29uc3QpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6OmRlc3Ryb3lOYXRpdmVD
b250ZXh0KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5RUdMOjpnZW5lcmF0ZUV4dGVuc2lvbnMgY29u
c3QpOgorICAgICAgICAocng6OkRpc3BsYXlFR0w6Om1ha2VDdXJyZW50U3VyZmFjZWxlc3MpOgor
ICAgICAgICAocng6OkRpc3BsYXlFR0w6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKHJ4OjpE
aXNwbGF5RUdMOjpjcmVhdGVXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKHJ4OjpEaXNwbGF5RUdM
Ojppbml0aWFsaXplRnJvbnRlbmRGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChyeDo6RGlzcGxh
eUVHTDo6cG9wdWxhdGVGZWF0dXJlTGlzdCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9EaXNwbGF5RUdMLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmNwcDoKKyAgICAgICAgKHJ4OjpEaXNwbGF5
QW5kcm9pZDo6ZGVzdHJveU5hdGl2ZUNvbnRleHQpOgorICAgICAgICAocng6OkRpc3BsYXlBbmRy
b2lkOjpnZW5lcmF0ZUV4dGVuc2lvbnMgY29uc3QpOgorICAgICAgICAocng6OkRpc3BsYXlBbmRy
b2lkOjpjcmVhdGVXaW5kb3dTdXJmYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpEaXNwbGF5
QW5kcm9pZDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UpOiBEZWxldGVkLgorICAgICAgICAocng6OkRp
c3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcik6IERlbGV0ZWQuCisg
ICAgICAgIChyeDo6RGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVBpeG1hcFN1cmZhY2UpOiBEZWxldGVk
LgorICAgICAgICAocng6OkRpc3BsYXlBbmRyb2lkOjpnZXRDb25maWdBdHRyaWIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAocng6OkRpc3BsYXlBbmRyb2lkOjpnZXRDb25maWdBdHRyaWJJZkV4
dGVuc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6RGlzcGxheUFuZHJvaWQ6Omdl
bmVyYXRlQ29uZmlncyk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6RGlzcGxheUFuZHJvaWQ6OnRl
c3REZXZpY2VMb3N0KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpEaXNwbGF5QW5kcm9pZDo6cmVz
dG9yZUxvc3REZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAocng6OkRpc3BsYXlBbmRyb2lkOjpj
cmVhdGVEZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAocng6OkRpc3BsYXlBbmRyb2lkOjp3YWl0
Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpEaXNwbGF5QW5kcm9pZDo6d2FpdE5hdGl2
ZSk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6RGlzcGxheUFuZHJvaWQ6OmdldE1heFN1cHBvcnRl
ZEVTVmVyc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6RGlzcGxheUFuZHJvaWQ6
Om1ha2VDdXJyZW50U3VyZmFjZWxlc3MpOiBEZWxldGVkLgorICAgICAgICAocng6OkRpc3BsYXlB
bmRyb2lkOjppbml0aWFsaXplRnJvbnRlbmRGZWF0dXJlcyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChyeDo6RGlzcGxheUFuZHJvaWQ6OnBvcHVsYXRlRmVhdHVyZUxpc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5k
cm9pZC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlz
cGxheU96b25lLmNwcDoKKyAgICAgICAgKHJ4OjpEaXNwbGF5T3pvbmU6OkRpc3BsYXlPem9uZSk6
CisgICAgICAgIChyeDo6RGlzcGxheU96b25lOjptYWtlQ3VycmVudCk6CisgICAgICAgIChyeDo6
RGlzcGxheU96b25lOjpnZW5lcmF0ZUV4dGVuc2lvbnMgY29uc3QpOgorICAgICAgICAocng6OkRp
c3BsYXlPem9uZTo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAocng6OkRpc3BsYXlPem9uZTo6Y3JlYXRlUGl4bWFwU3VyZmFjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChyeDo6RGlzcGxheU96b25lOjpjcmVhdGVEZXZpY2UpOiBEZWxldGVkLgorICAgICAg
ICAocng6OkRpc3BsYXlPem9uZTo6dGVzdERldmljZUxvc3QpOiBEZWxldGVkLgorICAgICAgICAo
cng6OkRpc3BsYXlPem9uZTo6cmVzdG9yZUxvc3REZXZpY2UpOiBEZWxldGVkLgorICAgICAgICAo
cng6OkRpc3BsYXlPem9uZTo6d2FpdENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6RGlz
cGxheU96b25lOjp3YWl0TmF0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpEaXNwbGF5T3pv
bmU6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChy
eDo6RGlzcGxheU96b25lOjpkZXN0cm95TmF0aXZlQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChyeDo6RGlzcGxheU96b25lOjptYWtlQ3VycmVudFN1cmZhY2VsZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKHJ4OjpEaXNwbGF5T3pvbmU6OmluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpEaXNwbGF5T3pvbmU6OnBvcHVsYXRlRmVhdHVyZUxp
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pv
bmUvRGlzcGxheU96b25lLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zv
cm1hdHV0aWxzZ2wuY3BwOgorICAgICAgICAocng6Om5hdGl2ZWdsOjpCdWlsZEludGVybmFsRm9y
bWF0SW5mb01hcCk6CisgICAgICAgIChyeDo6bmF0aXZlZ2w6OkdldE5hdGl2ZUNvbXByZXNzZWRG
b3JtYXQpOgorICAgICAgICAocng6Om5hdGl2ZWdsOjpHZXRUZXhTdG9yYWdlRm9ybWF0KToKKyAg
ICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaDoK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2xfYmluZGluZ3NfZGF0YS5qc29u
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9udWxsX2Z1bmN0aW9ucy5jcHA6
CisgICAgICAgIChyeDo6Z2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlZOVUxMKTogRGVsZXRlZC4K
KyAgICAgICAgKHJ4OjpnbENvdmVyRmlsbFBhdGhOVk5VTEwpOiBEZWxldGVkLgorICAgICAgICAo
cng6OmdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlZOVUxMKTogRGVsZXRlZC4KKyAgICAgICAg
KHJ4OjpnbENvdmVyU3Ryb2tlUGF0aE5WTlVMTCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Z2xE
ZWxldGVQYXRoc05WTlVMTCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Z2xHZW5QYXRoc05WTlVM
TCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Z2xHZXRQYXRoUGFyYW1ldGVyZnZOVk5VTEwpOiBE
ZWxldGVkLgorICAgICAgICAocng6OmdsR2V0UGF0aFBhcmFtZXRlcml2TlZOVUxMKTogRGVsZXRl
ZC4KKyAgICAgICAgKHJ4OjpnbElzUGF0aE5WTlVMTCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6
Z2xNYXRyaXhMb2FkZkVYVE5VTEwpOiBEZWxldGVkLgorICAgICAgICAocng6OmdsUGF0aENvbW1h
bmRzTlZOVUxMKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpnbFBhdGhQYXJhbWV0ZXJmTlZOVUxM
KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpnbFBhdGhQYXJhbWV0ZXJpTlZOVUxMKTogRGVsZXRl
ZC4KKyAgICAgICAgKHJ4OjpnbFBhdGhTdGVuY2lsRnVuY05WTlVMTCk6IERlbGV0ZWQuCisgICAg
ICAgIChyeDo6Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5OVk5VTEwpOiBEZWxldGVkLgor
ICAgICAgICAocng6OmdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlZOVUxMKTogRGVsZXRlZC4K
KyAgICAgICAgKHJ4OjpnbFN0ZW5jaWxGaWxsUGF0aE5WTlVMTCk6IERlbGV0ZWQuCisgICAgICAg
IChyeDo6Z2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZE5WTlVMTCk6IERlbGV0ZWQuCisgICAg
ICAgIChyeDo6Z2xTdGVuY2lsU3Ryb2tlUGF0aE5WTlVMTCk6IERlbGV0ZWQuCisgICAgICAgIChy
eDo6Z2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVk5VTEwpOiBEZWxldGVkLgor
ICAgICAgICAocng6OmdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlZOVUxMKTogRGVsZXRlZC4K
KyAgICAgICAgKHJ4OjpnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlZOVUxM
KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoTlZO
VUxMKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvbnVsbF9m
dW5jdGlvbnMuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJn
bF91dGlscy5jcHA6CisgICAgICAgIChyeDo6SXNNZXNhKToKKyAgICAgICAgKHJ4OjpuYXRpdmVn
bF9nbDo6R2VuZXJhdGVDYXBzKToKKyAgICAgICAgKHJ4OjpuYXRpdmVnbF9nbDo6SW5pdGlhbGl6
ZUZlYXR1cmVzKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2xzbGFuZ193cmFw
cGVyX3V0aWxzLmNwcDoKKyAgICAgICAgKHJ4OjpTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86
OlNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyk6CisgICAgICAgIChyeDo6R2V0SW1hZ2VOYW1l
V2l0aG91dEluZGljZXMpOgorICAgICAgICAocng6OkdldE1hcHBlZFNhbXBsZXJOYW1lT2xkKToK
KyAgICAgICAgKHJ4OjpHZXRYZmJCdWZmZXJOYW1lKToKKyAgICAgICAgKHJ4OjpHbHNsYW5nR2V0
U2hhZGVyU291cmNlKToKKyAgICAgICAgKHJ4OjpUcmFuc2Zvcm1TcGlydkNvZGUpOgorICAgICAg
ICAocng6Okdsc2xhbmdHZXRTaGFkZXJTcGlydkNvZGUpOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaDoKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcDoKKyAgICAgICAg
KGFuZ2xlOjpHZXRMb2FkRnVuY3Rpb25zTWFwKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvQlVJTEQuZ246CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL0NvbnRleHRNdGwuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
Q29udGV4dE10bC5tbToKKyAgICAgICAgKHJ4OjpDb250ZXh0TXRsOjppbnNlcnRFdmVudE1hcmtl
cik6CisgICAgICAgIChyeDo6Q29udGV4dE10bDo6cHVzaEdyb3VwTWFya2VyKToKKyAgICAgICAg
KHJ4OjpDb250ZXh0TXRsOjpwb3BHcm91cE1hcmtlcik6CisgICAgICAgIChyeDo6Q29udGV4dE10
bDo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAocng6OkNvbnRleHRNdGw6OnBvcERlYnVnR3Jv
dXApOgorICAgICAgICAocng6OkNvbnRleHRNdGw6OnN5bmNTdGF0ZSk6CisgICAgICAgIChyeDo6
Q29udGV4dE10bDo6c2V0dXBEcmF3KToKKyAgICAgICAgKHJ4OjpDb250ZXh0TXRsOjpoYW5kbGVE
aXJ0eUFjdGl2ZVRleHR1cmVzKToKKyAgICAgICAgKHJ4OjpDb250ZXh0TXRsOjpoYW5kbGVEaXJ0
eURyaXZlclVuaWZvcm1zKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
RGlzcGxheU10bC5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNw
bGF5TXRsLm1tOgorICAgICAgICAocng6OkRpc3BsYXlNdGw6OkRpc3BsYXlNdGwpOgorICAgICAg
ICAocng6OkRpc3BsYXlNdGw6OmluaXRpYWxpemVJbXBsKToKKyAgICAgICAgKHJ4OjpEaXNwbGF5
TXRsOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Q
cm9ncmFtTXRsLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dy
YW1NdGwubW06CisgICAgICAgIChyeDo6UHJvZ3JhbU10bDo6bGluayk6CisgICAgICAgIChyeDo6
UHJvZ3JhbU10bDo6bGlua0ltcGwpOgorICAgICAgICAocng6OlByb2dyYW1NdGw6OnVwZGF0ZVRl
eHR1cmVzKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtTXRsOjpzZXRQYXRoRnJhZ21lbnRJbnB1dEdl
bik6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZh
Y2VNdGwubW06CisgICAgICAgIChyeDo6U3VyZmFjZU10bDo6ZGVzdHJveSk6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfbWFwLmpzb246CisgICAgICAg
ICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5t
bToKKyAgICAgICAgKHJ4OjptdGw6OkZvcm1hdDo6aW5pdCk6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX3V0aWxzLmg6CisgICAgICAgICogc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX3V0aWxzLm1tOgorICAgICAgICAocng6
Om10bDo6R2xzbGFuZ0dldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChyeDo6bXRsOjpHbHNsYW5n
R2V0U2hhZGVyU3BpcnZDb2RlKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9Db250ZXh0TlVMTC5jcHA6CisgICAgICAgIChyeDo6Q29udGV4dE5VTEw6Omluc2VydEV2ZW50
TWFya2VyKToKKyAgICAgICAgKHJ4OjpDb250ZXh0TlVMTDo6cHVzaEdyb3VwTWFya2VyKToKKyAg
ICAgICAgKHJ4OjpDb250ZXh0TlVMTDo6cG9wR3JvdXBNYXJrZXIpOgorICAgICAgICAocng6OkNv
bnRleHROVUxMOjpwdXNoRGVidWdHcm91cCk6CisgICAgICAgIChyeDo6Q29udGV4dE5VTEw6OnBv
cERlYnVnR3JvdXApOgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpzdGVuY2lsRmlsbFBhdGgp
OiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpzdGVuY2lsU3Ryb2tlUGF0aCk6
IERlbGV0ZWQuCisgICAgICAgIChyeDo6Q29udGV4dE5VTEw6OmNvdmVyRmlsbFBhdGgpOiBEZWxl
dGVkLgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpjb3ZlclN0cm9rZVBhdGgpOiBEZWxldGVk
LgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgpOiBE
ZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpzdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Q29udGV4dE5VTEw6OmNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpjb3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHROVUxMOjpzdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWQpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRleHROVUxM
OjpzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6Q29u
dGV4dE5VTEw6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChyeDo6Q29udGV4dE5VTEw6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5jcHA6CisgICAgICAgIChyeDo6UHJvZ3Jh
bU5VTEw6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHA6CisgICAgICAgIChyeDo6QXBwbHlGZWF0
dXJlT3ZlcnJpZGVzKToKKyAgICAgICAgKHJ4OjpPdmVycmlkZUZlYXR1cmVzV2l0aERpc3BsYXlT
dGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVy
X3V0aWxzLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3NlcmlhbF91dGlscy5o
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQlVJTEQuZ246CisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5jcHA6CisgICAgICAg
IChyeDo6Q29udmVyc2lvbkJ1ZmZlcjo6Q29udmVyc2lvbkJ1ZmZlcik6CisgICAgICAgIChyeDo6
QnVmZmVyVms6OlZlcnRleENvbnZlcnNpb25CdWZmZXI6OlZlcnRleENvbnZlcnNpb25CdWZmZXIp
OgorICAgICAgICAocng6OkJ1ZmZlclZrOjpzZXREYXRhKToKKyAgICAgICAgKHJ4OjpCdWZmZXJW
azo6Y29weVN1YkRhdGEpOgorICAgICAgICAocng6OkJ1ZmZlclZrOjptYXBSYW5nZUltcGwpOgor
ICAgICAgICAocng6OkJ1ZmZlclZrOjpzZXREYXRhSW1wbCk6CisgICAgICAgIChyeDo6QnVmZmVy
Vms6OmNvcHlUb0J1ZmZlcik6CisgICAgICAgIChyeDo6QnVmZmVyVms6OmdldFZlcnRleENvbnZl
cnNpb25CdWZmZXIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVm
ZmVyVmsuaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRH
cmFwaC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9Db21tYW5kR3JhcGguaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0NvbnRleHRWay5jcHA6CisgICAgICAgIChyeDo6Q29tbWFuZFF1ZXVlOjpzdWJt
aXRGcmFtZSk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpDb250ZXh0VmspOgorICAgICAgICAo
cng6OkNvbnRleHRWazo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpzdGFy
dFByaW1hcnlDb21tYW5kQnVmZmVyKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnNldHVwRHJh
dyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpzZXR1cEluZGV4ZWREcmF3KToKKyAgICAgICAg
KHJ4OjpDb250ZXh0Vms6OnNldHVwSW5kaXJlY3REcmF3KToKKyAgICAgICAgKHJ4OjpDb250ZXh0
Vms6OnNldHVwRGlzcGF0Y2gpOgorICAgICAgICAocng6OkNvbnRleHRWazo6aGFuZGxlRGlydHlH
cmFwaGljc1BpcGVsaW5lKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmhhbmRsZURpcnR5VGV4
dHVyZXNJbXBsKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmhhbmRsZURpcnR5R3JhcGhpY3NU
ZXh0dXJlcyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUNvbXB1dGVUZXh0
dXJlcyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVmVydGV4
QnVmZmVycyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzSW5k
ZXhCdWZmZXIpOgorICAgICAgICAocng6OkNvbnRleHRWazo6aGFuZGxlRGlydHlTaGFkZXJSZXNv
dXJjZXNJbXBsKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmhhbmRsZURpcnR5R3JhcGhpY3NT
aGFkZXJSZXNvdXJjZXMpOgorICAgICAgICAocng6OkNvbnRleHRWazo6aGFuZGxlRGlydHlDb21w
dXRlU2hhZGVyUmVzb3VyY2VzKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmhhbmRsZURpcnR5
R3JhcGhpY3NUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFbXVsYXRpb24pOgorICAgICAgICAocng6
OkNvbnRleHRWazo6aGFuZGxlRGlydHlHcmFwaGljc1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0V4
dGVuc2lvbik6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVHJh
bnNmb3JtRmVlZGJhY2tTdGF0ZSk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEaXJ0
eURlc2NyaXB0b3JTZXRzKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnN1Ym1pdEZyYW1lKToK
KyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnN5bmNocm9uaXplQ3B1R3B1VGltZSk6CisgICAgICAg
IChyeDo6Q29udGV4dFZrOjp0cmFjZUdwdUV2ZW50SW1wbCk6CisgICAgICAgIChyeDo6Q29udGV4
dFZrOjpjaGVja0NvbXBsZXRlZEdwdUV2ZW50cyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpm
bHVzaEdwdUV2ZW50cyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEZXZpY2VMb3N0
KToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmRyYXdBcnJheXNJbmRpcmVjdCk6CisgICAgICAg
IChyeDo6Q29udGV4dFZrOjpkcmF3RWxlbWVudHNJbmRpcmVjdCk6CisgICAgICAgIChyeDo6Q29u
dGV4dFZrOjpjbGVhcldpdGhSZW5kZXJQYXNzT3ApOgorICAgICAgICAocng6OkNvbnRleHRWazo6
aW5zZXJ0RXZlbnRNYXJrZXIpOgorICAgICAgICAocng6OkNvbnRleHRWazo6cHVzaEdyb3VwTWFy
a2VyKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnBvcEdyb3VwTWFya2VyKToKKyAgICAgICAg
KHJ4OjpDb250ZXh0Vms6OnB1c2hEZWJ1Z0dyb3VwKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6
OnBvcERlYnVnR3JvdXApOgorICAgICAgICAocng6OkNvbnRleHRWazo6aXNSb3RhdGVkQXNwZWN0
UmF0aW9Gb3JEcmF3RkJPIGNvbnN0KToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmlzUm90YXRl
ZEFzcGVjdFJhdGlvRm9yUmVhZEZCTyBjb25zdCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjp1
cGRhdGVWaWV3cG9ydCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjp1cGRhdGVTY2lzc29yKToK
KyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnN5bmNTdGF0ZSk6CisgICAgICAgIChyeDo6Q29udGV4
dFZrOjpvbk1ha2VDdXJyZW50KToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnVwZGF0ZVN1cmZh
Y2VSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjp1cGRh
dGVTdXJmYWNlUm90YXRpb25SZWFkRnJhbWVidWZmZXIpOgorICAgICAgICAocng6OkNvbnRleHRW
azo6aW52YWxpZGF0ZUN1cnJlbnREZWZhdWx0VW5pZm9ybXMpOgorICAgICAgICAocng6OkNvbnRl
eHRWazo6aW52YWxpZGF0ZUN1cnJlbnRUZXh0dXJlcyk6CisgICAgICAgIChyeDo6Q29udGV4dFZr
OjppbnZhbGlkYXRlQ3VycmVudFNoYWRlclJlc291cmNlcyk6CisgICAgICAgIChyeDo6Q29udGV4
dFZrOjpkaXNwYXRjaENvbXB1dGVJbmRpcmVjdCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpt
ZW1vcnlCYXJyaWVyKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6Om1lbW9yeUJhcnJpZXJCeVJl
Z2lvbik6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjptZW1vcnlCYXJyaWVySW1wbCk6CisgICAg
ICAgIChyeDo6Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzRHJpdmVyVW5pZm9ybXMpOgor
ICAgICAgICAocng6OkNvbnRleHRWazo6dXBkYXRlQWN0aXZlVGV4dHVyZXMpOgorICAgICAgICAo
cng6OkNvbnRleHRWazo6dXBkYXRlQWN0aXZlSW1hZ2VzKToKKyAgICAgICAgKHJ4OjpDb250ZXh0
Vms6Omhhc1JlY29yZGVkQ29tbWFuZHMpOgorICAgICAgICAocng6OkNvbnRleHRWazo6Zmx1c2hJ
bXBsKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmdldFRpbWVzdGFtcCk6CisgICAgICAgIChy
eDo6Q29udGV4dFZrOjpvbkJ1ZmZlclJlYWQpOgorICAgICAgICAocng6OkNvbnRleHRWazo6b25C
dWZmZXJXcml0ZSk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpvbkltYWdlUmVhZCk6CisgICAg
ICAgIChyeDo6Q29udGV4dFZrOjpvbkltYWdlV3JpdGUpOgorICAgICAgICAocng6OkNvbnRleHRW
azo6Zmx1c2hBbmRCZWdpblJlbmRlclBhc3MpOgorICAgICAgICAocng6OkNvbnRleHRWazo6ZW5k
UmVuZGVyUGFzcyk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpvblJlbmRlclBhc3NJbWFnZVdy
aXRlKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OnN5bmNFeHRlcm5hbE1lbW9yeSk6CisgICAg
ICAgIChyeDo6Q29udGV4dFZrOjphZGRDb21tYW5kQnVmZmVyRGlhZ25vc3RpY3MpOgorICAgICAg
ICAocng6OkNvbnRleHRWazo6ZHVtcENvbW1hbmRTdHJlYW1EaWFnbm9zdGljcyk6CisgICAgICAg
IChyeDo6Q29udGV4dFZrOjppbml0SW5kZXhUeXBlTWFwKToKKyAgICAgICAgKHJ4OjpDb250ZXh0
Vms6OmdldFZrSW5kZXhUeXBlIGNvbnN0KToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmdldFZr
SW5kZXhUeXBlU2l6ZSBjb25zdCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpzaG91bGRDb252
ZXJ0VWludDhWa0luZGV4VHlwZSBjb25zdCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpmbHVz
aE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMpOgorICAgICAgICAocng6OkNvbW1hbmRCdWZmZXJI
ZWxwZXI6OkNvbW1hbmRCdWZmZXJIZWxwZXIpOgorICAgICAgICAocng6OkNvbW1hbmRCdWZmZXJI
ZWxwZXI6OmJ1ZmZlclJlYWQpOgorICAgICAgICAocng6OkNvbW1hbmRCdWZmZXJIZWxwZXI6OmJ1
ZmZlcldyaXRlKToKKyAgICAgICAgKHJ4OjpDb21tYW5kQnVmZmVySGVscGVyOjppbWFnZUJhcnJp
ZXIpOgorICAgICAgICAocng6OkNvbW1hbmRCdWZmZXJIZWxwZXI6OmltYWdlUmVhZCk6CisgICAg
ICAgIChyeDo6Q29tbWFuZEJ1ZmZlckhlbHBlcjo6aW1hZ2VXcml0ZSk6CisgICAgICAgIChyeDo6
Q29tbWFuZEJ1ZmZlckhlbHBlcjo6ZXhlY3V0ZUJhcnJpZXJzKToKKyAgICAgICAgKHJ4OjpPdXRz
aWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OmZsdXNoVG9QcmltYXJ5KToKKyAgICAgICAgKHJ4
OjpPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OnJlc2V0KToKKyAgICAgICAgKHJ4OjpS
ZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIpOgorICAgICAg
ICAocng6Om1SZWJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMpOgorICAgICAgICAocng6OlJl
bmRlclBhc3NDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAocng6OlJl
bmRlclBhc3NDb21tYW5kQnVmZmVyOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KHJ4OjpSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6Zmx1c2hUb1ByaW1hcnkpOgorICAgICAgICAo
cng6OlJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjphZGRSZW5kZXJQYXNzQ29tbWFuZERpYWdub3N0
aWNzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6cmVzZXQpOgorICAg
ICAgICAocng6OkNvbnRleHRWazo6Zmx1c2hDb21tYW5kR3JhcGgpOiBEZWxldGVkLgorICAgICAg
ICAocng6OkNvbnRleHRWazo6YmVnaW5SZW5kZXJQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4
OjpPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6Ok91dHNpZGVSZW5kZXJQYXNzQ29tbWFu
ZEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChyeDo6T3V0c2lkZVJlbmRlclBhc3NDb21tYW5k
QnVmZmVyOjpidWZmZXJSZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpPdXRzaWRlUmVuZGVy
UGFzc0NvbW1hbmRCdWZmZXI6OmJ1ZmZlcldyaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oOgorICAgICAgICAocng6OkNvbnRl
eHRWazo6Z2V0RmVhdHVyZXMgY29uc3QpOgorICAgICAgICAocng6OkNvbnRleHRWazo6dHJhY2VH
cHVFdmVudCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpnZW5lcmF0ZUF0dGFjaG1lbnRJbWFn
ZVNlcmlhbCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjplbmRSZW5kZXJQYXNzQW5kR2V0Q29t
bWFuZEJ1ZmZlcik6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpoYXNTdGFydGVkUmVuZGVyUGFz
cyBjb25zdCk6CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpnZXRTdGFydGVkUmVuZGVyUGFzc0Nv
bW1hbmRzKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6OmZsdXNoQW5kR2V0UHJpbWFyeUNvbW1h
bmRCdWZmZXIpOgorICAgICAgICAocng6OkNvbnRleHRWazo6Z2V0RXhlY3V0YWJsZSBjb25zdCk6
CisgICAgICAgIChyeDo6Q29udGV4dFZrOjpnZXRFeGVjdXRhYmxlKToKKyAgICAgICAgKHJ4OjpD
b250ZXh0Vms6Om9uUmVuZGVyUGFzc0ZpbmlzaGVkKToKKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6
OmNvbW1hbmRHcmFwaEVuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAocng6OkNvbnRl
eHRWazo6Z2V0Q29tbWFuZEdyYXBoKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpDb250ZXh0Vms6
OmdldE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChy
eDo6Q29udGV4dFZrOjpnZXRSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcik6IERlbGV0ZWQuCisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuY3BwOgorICAgICAg
ICAocng6OkRpc3BsYXlWazo6d2FpdE5hdGl2ZSk6CisgICAgICAgIChyeDo6RGlzcGxheVZrOjp3
YWl0TmF0aXZlSW1wbCk6CisgICAgICAgIChyeDo6RGlzcGxheVZrOjpnZW5lcmF0ZUV4dGVuc2lv
bnMgY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxh
eVZrLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZl
clZrLmNwcDoKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKToKKyAg
ICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjpjbGVhckNhY2hlKToKKyAgICAgICAgKHJ4OjpGcmFt
ZWJ1ZmZlclZrOjpkZXN0cm95KToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjppbnZhbGlk
YXRlKToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjppbnZhbGlkYXRlU3ViKToKKyAgICAg
ICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjpjbGVhckltcGwpOgorICAgICAgICAocng6OkZyYW1lYnVm
ZmVyVms6OmdldERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCBjb25zdCk6CisgICAgICAgIChyeDo6
RnJhbWVidWZmZXJWazo6YmxpdFdpdGhDb21tYW5kKToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZl
clZrOjpibGl0KToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjpyZXNvbHZlQ29sb3JXaXRo
Q29tbWFuZCk6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJWazo6aW52YWxpZGF0ZUltcGwpOgor
ICAgICAgICAocng6OkZyYW1lYnVmZmVyVms6OnVwZGF0ZURlcHRoU3RlbmNpbEF0dGFjaG1lbnRT
ZXJpYWwpOgorICAgICAgICAocng6OkZyYW1lYnVmZmVyVms6OnN5bmNTdGF0ZSk6CisgICAgICAg
IChyeDo6RnJhbWVidWZmZXJWazo6dXBkYXRlUmVuZGVyUGFzc0Rlc2MpOgorICAgICAgICAocng6
OkZyYW1lYnVmZmVyVms6OmdldEZyYW1lYnVmZmVyKToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZl
clZrOjpzdGFydE5ld1JlbmRlclBhc3MpOgorICAgICAgICAocng6OkZyYW1lYnVmZmVyVms6Omdl
dEZpcnN0UmVuZGVyVGFyZ2V0IGNvbnN0KToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZrOjpj
bGVhcldpdGhSZW5kZXJQYXNzT3ApOiBEZWxldGVkLgorICAgICAgICAocng6OkZyYW1lYnVmZmVy
Vms6Om9uU2Npc3NvckNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmg6CisgICAgICAgIChyeDo6RnJhbWVidWZmZXJW
azo6Z2V0RnJhbWVidWZmZXJEZXNjIGNvbnN0KToKKyAgICAgICAgKHJ4OjpGcmFtZWJ1ZmZlclZr
OjphcHBlbmRUb1N0YXJ0ZWRSZW5kZXJQYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpGcmFt
ZWJ1ZmZlclZrOjpnZXRGcmFtZWJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBlclZrLmNwcDoKKyAgICAgICAgKHJ4OjpH
bHNsYW5nV3JhcHBlclZrOjpDcmVhdGVTb3VyY2VPcHRpb25zKToKKyAgICAgICAgKHJ4OjpHbHNs
YW5nV3JhcHBlclZrOjpSZXNldEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyk6CisgICAgICAg
IChyeDo6R2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKHJ4OjpH
bHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJDb2RlKToKKyAgICAgICAgKHJ4OjpHbHNsYW5nV3Jh
cHBlclZrOjpUcmFuc2Zvcm1TcGlyVik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9HbHNsYW5nV3JhcHBlclZrLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9NZW1vcnlPYmplY3RWay5jcHA6CisgICAgICAgIChyeDo6TWVtb3J5T2JqZWN0
Vms6Ok1lbW9yeU9iamVjdFZrKToKKyAgICAgICAgKHJ4OjpNZW1vcnlPYmplY3RWazo6b25EZXN0
cm95KToKKyAgICAgICAgKHJ4OjpNZW1vcnlPYmplY3RWazo6c2V0RGVkaWNhdGVkTWVtb3J5KToK
KyAgICAgICAgKHJ4OjpNZW1vcnlPYmplY3RWazo6aW1wb3J0RmQpOgorICAgICAgICAocng6Ok1l
bW9yeU9iamVjdFZrOjppbXBvcnRaaXJjb25IYW5kbGUpOgorICAgICAgICAocng6Ok1lbW9yeU9i
amVjdFZrOjppbXBvcnRPcGFxdWVGZCk6CisgICAgICAgIChyeDo6TWVtb3J5T2JqZWN0Vms6Omlt
cG9ydFppcmNvblZtbyk6CisgICAgICAgIChyeDo6TWVtb3J5T2JqZWN0Vms6OmNyZWF0ZUltYWdl
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL01lbW9yeU9iamVjdFZr
Lmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9PV05FUlM6IEFkZGVk
LgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vT3ZlcmxheVZrLmNwcDoK
KyAgICAgICAgKHJ4OjpPdmVybGF5Vms6OmNyZWF0ZUZvbnQpOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1dGFibGVWay5jcHA6IEFkZGVkLgorICAg
ICAgICAocng6OlNoYWRlckluZm86OlNoYWRlckluZm8pOgorICAgICAgICAocng6OlNoYWRlcklu
Zm86OmluaXRTaGFkZXJzKToKKyAgICAgICAgKHJ4OjpTaGFkZXJJbmZvOjpyZWxlYXNlKToKKyAg
ICAgICAgKHJ4OjpTaGFkZXJJbmZvOjpsb2FkKToKKyAgICAgICAgKHJ4OjpTaGFkZXJJbmZvOjpz
YXZlKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtSW5mbzo6UHJvZ3JhbUluZm8pOgorICAgICAgICAo
cng6OlByb2dyYW1JbmZvOjppbml0UHJvZ3JhbSk6CisgICAgICAgIChyeDo6UHJvZ3JhbUluZm86
OnJlbGVhc2UpOgorICAgICAgICAocng6OlByb2dyYW1FeGVjdXRhYmxlVms6OlByb2dyYW1FeGVj
dXRhYmxlVmspOgorICAgICAgICAocng6OlByb2dyYW1FeGVjdXRhYmxlVms6OnJlc2V0KToKKyAg
ICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjpsb2FkKToKKyAgICAgICAgKHJ4OjpQcm9n
cmFtRXhlY3V0YWJsZVZrOjpzYXZlKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZr
OjpjbGVhclZhcmlhYmxlSW5mb01hcCk6CisgICAgICAgIChyeDo6R2V0SW50ZXJmYWNlQmxvY2tB
cnJheVNpemUpOgorICAgICAgICAocng6OlByb2dyYW1FeGVjdXRhYmxlVms6OmFsbG9jYXRlRGVz
Y3JpcHRvclNldCk6CisgICAgICAgIChyeDo6UHJvZ3JhbUV4ZWN1dGFibGVWazo6YWxsb2NhdGVE
ZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyk6CisgICAgICAgIChyeDo6UHJvZ3JhbUV4ZWN1dGFibGVW
azo6YWRkSW50ZXJmYWNlQmxvY2tEZXNjcmlwdG9yU2V0RGVzYyk6CisgICAgICAgIChyeDo6UHJv
Z3JhbUV4ZWN1dGFibGVWazo6YWRkQXRvbWljQ291bnRlckJ1ZmZlckRlc2NyaXB0b3JTZXREZXNj
KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjphZGRJbWFnZURlc2NyaXB0b3JT
ZXREZXNjKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjphZGRUZXh0dXJlRGVz
Y3JpcHRvclNldERlc2MpOgorICAgICAgICAocng6OldyaXRlQnVmZmVyRGVzY3JpcHRvclNldEJp
bmRpbmcpOgorICAgICAgICAocng6OlByb2dyYW1FeGVjdXRhYmxlVms6OmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVEZWZhdWx0
VW5pZm9ybXNEZXNjcmlwdG9yU2V0KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZr
Ojp1cGRhdGVCdWZmZXJzRGVzY3JpcHRvclNldCk6CisgICAgICAgIChyeDo6UHJvZ3JhbUV4ZWN1
dGFibGVWazo6dXBkYXRlQXRvbWljQ291bnRlckJ1ZmZlcnNEZXNjcmlwdG9yU2V0KToKKyAgICAg
ICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVJbWFnZXNEZXNjcmlwdG9yU2V0KToK
KyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVTaGFkZXJSZXNvdXJjZXNE
ZXNjcmlwdG9yU2V0KToKKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVU
cmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXQpOgorICAgICAgICAocng6OlByb2dyYW1FeGVj
dXRhYmxlVms6OnVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldEltcGwpOgorICAg
ICAgICAocng6OlByb2dyYW1FeGVjdXRhYmxlVms6OnVwZGF0ZVRleHR1cmVzRGVzY3JpcHRvclNl
dCk6CisgICAgICAgIChyeDo6UHJvZ3JhbUV4ZWN1dGFibGVWazo6dXBkYXRlRGVzY3JpcHRvclNl
dHMpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1
dGFibGVWay5oOiBBZGRlZC4KKyAgICAgICAgKHJ4OjpQcm9ncmFtRXhlY3V0YWJsZVZrOjpnZXRT
aGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXApOgorICAgICAgICAocng6OlByb2dyYW1FeGVj
dXRhYmxlVms6OmdldFBpcGVsaW5lTGF5b3V0IGNvbnN0KToKKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5jcHA6CisgICAgICAgIChyeDo6UHJvZ3JhbVZr
OjpQcm9ncmFtVmspOgorICAgICAgICAocng6OlByb2dyYW1Wazo6cmVzZXQpOgorICAgICAgICAo
cng6OlByb2dyYW1Wazo6bG9hZCk6CisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjpzYXZlKToKKyAg
ICAgICAgKHJ4OjpQcm9ncmFtVms6OmxpbmspOgorICAgICAgICAocng6OlByb2dyYW1Wazo6Z2Vu
ZXJhdGVVbmlmb3JtTGF5b3V0TWFwcGluZyk6CisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjppbml0
RGVmYXVsdFVuaWZvcm1MYXlvdXRNYXBwaW5nKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6OnJl
c2l6ZVVuaWZvcm1CbG9ja01lbW9yeSk6CisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjpzZXRVbmlm
b3JtSW1wbCk6CisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjpzZXRVbmlmb3JtTWF0cml4ZnYpOgor
ICAgICAgICAocng6OlByb2dyYW1Wazo6dXBkYXRlVW5pZm9ybXMpOgorICAgICAgICAocng6OlBy
b2dyYW1Wazo6U2hhZGVySW5mbzo6U2hhZGVySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6
UHJvZ3JhbVZrOjpTaGFkZXJJbmZvOjppbml0U2hhZGVycyk6IERlbGV0ZWQuCisgICAgICAgIChy
eDo6UHJvZ3JhbVZrOjpTaGFkZXJJbmZvOjpyZWxlYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4
OjpQcm9ncmFtVms6OlByb2dyYW1JbmZvOjpQcm9ncmFtSW5mbyk6IERlbGV0ZWQuCisgICAgICAg
IChyeDo6UHJvZ3JhbVZrOjpQcm9ncmFtSW5mbzo6aW5pdFByb2dyYW0pOiBEZWxldGVkLgorICAg
ICAgICAocng6OlByb2dyYW1Wazo6UHJvZ3JhbUluZm86OnJlbGVhc2UpOiBEZWxldGVkLgorICAg
ICAgICAocng6OlByb2dyYW1Wazo6bG9hZFNwaXJ2QmxvYik6IERlbGV0ZWQuCisgICAgICAgIChy
eDo6UHJvZ3JhbVZrOjpzYXZlU3BpcnZCbG9iKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpQcm9n
cmFtVms6OkRlZmF1bHRVbmlmb3JtQmxvY2s6OkRlZmF1bHRVbmlmb3JtQmxvY2spOiBEZWxldGVk
LgorICAgICAgICAocng6Om1JbWFnZUJpbmRpbmdzT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAg
KHJ4OjpQcm9ncmFtVms6OmxpbmtJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpQcm9ncmFt
Vms6OnVwZGF0ZUJpbmRpbmdPZmZzZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpQcm9ncmFt
Vms6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpQcm9n
cmFtVms6OmFsbG9jYXRlRGVzY3JpcHRvclNldCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6UHJv
Z3JhbVZrOjphbGxvY2F0ZURlc2NyaXB0b3JTZXRBbmRHZXRJbmZvKTogRGVsZXRlZC4KKyAgICAg
ICAgKHJ4OjpQcm9ncmFtVms6OnVwZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQpOiBE
ZWxldGVkLgorICAgICAgICAocng6OlByb2dyYW1Wazo6dXBkYXRlQnVmZmVyc0Rlc2NyaXB0b3JT
ZXQpOiBEZWxldGVkLgorICAgICAgICAocng6OlByb2dyYW1Wazo6dXBkYXRlQXRvbWljQ291bnRl
ckJ1ZmZlcnNEZXNjcmlwdG9yU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6
OnVwZGF0ZUltYWdlc0Rlc2NyaXB0b3JTZXQpOiBEZWxldGVkLgorICAgICAgICAocng6OlByb2dy
YW1Wazo6dXBkYXRlU2hhZGVyUmVzb3VyY2VzRGVzY3JpcHRvclNldCk6IERlbGV0ZWQuCisgICAg
ICAgIChyeDo6UHJvZ3JhbVZrOjp1cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXQp
OiBEZWxldGVkLgorICAgICAgICAocng6OlByb2dyYW1Wazo6dXBkYXRlVHJhbnNmb3JtRmVlZGJh
Y2tEZXNjcmlwdG9yU2V0SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjp1
cGRhdGVUZXh0dXJlc0Rlc2NyaXB0b3JTZXQpOiBEZWxldGVkLgorICAgICAgICAocng6OlByb2dy
YW1Wazo6dXBkYXRlRGVzY3JpcHRvclNldHMpOiBEZWxldGVkLgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmg6CisgICAgICAgIChyeDo6UHJvZ3JhbVZr
OjpnZXRQaXBlbGluZUxheW91dCBjb25zdCk6CisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjpnZXRH
cmFwaGljc1BpcGVsaW5lKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6OmdldENvbXB1dGVQaXBl
bGluZSk6CisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjpnZXREeW5hbWljRGVzY3JpcHRvclBvb2wp
OgorICAgICAgICAocng6OlByb2dyYW1Wazo6Z2V0RXhlY3V0YWJsZSBjb25zdCk6CisgICAgICAg
IChyeDo6UHJvZ3JhbVZrOjpnZXRFeGVjdXRhYmxlKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6
OmdldERlZmF1bHRVbmlmb3JtQmxvY2tzKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6OmluaXRQ
cm9ncmFtKToKKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6OmluaXRHcmFwaGljc1Byb2dyYW0pOgor
ICAgICAgICAocng6OlByb2dyYW1Wazo6aW5pdENvbXB1dGVQcm9ncmFtKToKKyAgICAgICAgKHJ4
OjpQcm9ncmFtVms6Omhhc0RlZmF1bHRVbmlmb3JtcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChyeDo6UHJvZ3JhbVZrOjpoYXNUZXh0dXJlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChy
eDo6UHJvZ3JhbVZrOjpoYXNVbmlmb3JtQnVmZmVycyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChyeDo6UHJvZ3JhbVZrOjpoYXNTdG9yYWdlQnVmZmVycyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChyeDo6UHJvZ3JhbVZrOjpoYXNBdG9taWNDb3VudGVyQnVmZmVycyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChyeDo6UHJvZ3JhbVZrOjpoYXNJbWFnZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAocng6OlByb2dyYW1Wazo6aGFzVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAocng6OlByb2dyYW1Wazo6Z2V0VW5pZm9ybUJsb2NrQmluZGlu
Z3NPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAocng6OlByb2dyYW1Wazo6Z2V0U3Rv
cmFnZUJsb2NrQmluZGluZ3NPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAocng6OlBy
b2dyYW1Wazo6Z2V0QXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzT2Zmc2V0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKHJ4OjpQcm9ncmFtVms6OmdldEltYWdlQmluZGluZ3NPZmZzZXQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuY3BwOgorICAgICAgICAocng6OlF1ZXJ5Vms6OmJl
Z2luKToKKyAgICAgICAgKHJ4OjpRdWVyeVZrOjplbmQpOgorICAgICAgICAocng6OlF1ZXJ5Vms6
OnF1ZXJ5Q291bnRlcik6CisgICAgICAgIChyeDo6UXVlcnlWazo6Z2V0UmVzdWx0KToKKyAgICAg
ICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JFQURNRS5tZDoKKyAgICAgICAgKiBz
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmNwcDoKKyAgICAgICAg
KHJ4OjpSZW5kZXJUYXJnZXRWazo6Z2V0QXNzaWduU2VyaWFsKToKKyAgICAgICAgKHJ4OjpSZW5k
ZXJUYXJnZXRWazo6b25Db2xvckRyYXcpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldFZrOjpv
bkRlcHRoU3RlbmNpbERyYXcpOgorICAgICAgICAocng6OlJlbmRlclRhcmdldFZrOjpnZXRJbWFn
ZUZvcldyaXRlIGNvbnN0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXRWazo6Zmx1c2hTdGFn
ZWRVcGRhdGVzKToKKyAgICAgICAgKHJ4OjpSZW5kZXJUYXJnZXRWazo6cmV0YWluSW1hZ2VWaWV3
cyBjb25zdCk6CisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0Vms6OmdldEltYWdlRm9yUmVhZCk6
IERlbGV0ZWQuCisgICAgICAgIChyeDo6UmVuZGVyVGFyZ2V0Vms6Om9uSW1hZ2VWaWV3QWNjZXNz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1JlbmRlclRhcmdldFZrLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9SZW5kZXJidWZmZXJWay5jcHA6CisgICAgICAgIChyeDo6UmVuZGVyYnVmZmVyVms6OnNldFN0
b3JhZ2VFR0xJbWFnZVRhcmdldCk6CisgICAgICAgIChyeDo6UmVuZGVyYnVmZmVyVms6OmluaXRp
YWxpemVDb250ZW50cyk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9S
ZW5kZXJlclZrLmNwcDoKKyAgICAgICAgKHJ4OjpSZW5kZXJlclZrOjpSZW5kZXJlclZrKToKKyAg
ICAgICAgKHJ4OjpSZW5kZXJlclZrOjpvbkRlc3Ryb3kpOgorICAgICAgICAocng6OlJlbmRlcmVy
Vms6OmluaXRpYWxpemUpOgorICAgICAgICAocng6OlJlbmRlcmVyVms6OnF1ZXJ5RGV2aWNlRXh0
ZW5zaW9uRmVhdHVyZXMpOgorICAgICAgICAocng6OlJlbmRlcmVyVms6OmluaXRpYWxpemVEZXZp
Y2UpOgorICAgICAgICAocng6OlJlbmRlcmVyVms6OmluaXRGZWF0dXJlcyk6CisgICAgICAgIChy
eDo6UmVuZGVyZXJWazo6cXVldWVTdWJtaXQpOgorICAgICAgICAocng6OlJlbmRlcmVyVms6OnF1
ZXVlU3VibWl0T25lT2ZmKToKKyAgICAgICAgKHJ4OjpSZW5kZXJlclZrOjpyZWxvYWRWb2xrSWZO
ZWVkZWQgY29uc3QpOgorICAgICAgICAocng6OlJlbmRlcmVyVms6OmdldENvbW1hbmRCdWZmZXJP
bmVPZmYpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJW
ay5oOgorICAgICAgICAocng6OlJlbmRlcmVyVms6OmdldEZlYXR1cmVzIGNvbnN0KToKKyAgICAg
ICAgKHJ4OjpSZW5kZXJlclZrOjpnZXRNaW5JbXBvcnRlZEhvc3RQb2ludGVyQWxpZ25tZW50IGNv
bnN0KToKKyAgICAgICAgKHJ4OjpSZW5kZXJlclZrOjpjb2xsZWN0R2FyYmFnZSk6CisgICAgICAg
IChyeDo6UmVuZGVyZXJWazo6ZW5hYmxlRGVidWdVdGlscyBjb25zdCk6CisgICAgICAgICogc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmNwcDogQWRkZWQuCisgICAgICAg
IChyeDo6dms6OlJlc291cmNlOjpSZXNvdXJjZSk6CisgICAgICAgIChyeDo6dms6OlJlc291cmNl
Ojp+UmVzb3VyY2UpOgorICAgICAgICAocng6OnZrOjpSZXNvdXJjZTo6ZmluaXNoUnVubmluZ0Nv
bW1hbmRzKToKKyAgICAgICAgKHJ4Ojp2azo6U2hhcmVkR2FyYmFnZTo6U2hhcmVkR2FyYmFnZSk6
CisgICAgICAgIChyeDo6dms6OlNoYXJlZEdhcmJhZ2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChy
eDo6dms6OlNoYXJlZEdhcmJhZ2U6OmRlc3Ryb3lJZkNvbXBsZXRlKToKKyAgICAgICAgKHJ4Ojp2
azo6UmVzb3VyY2VVc2VMaXN0Ojp+UmVzb3VyY2VVc2VMaXN0KToKKyAgICAgICAgKHJ4Ojp2azo6
UmVzb3VyY2VVc2VMaXN0OjpyZWxlYXNlUmVzb3VyY2VVc2VzKToKKyAgICAgICAgKHJ4Ojp2azo6
UmVzb3VyY2VVc2VMaXN0OjpyZWxlYXNlUmVzb3VyY2VVc2VzQW5kVXBkYXRlU2VyaWFscyk6Cisg
ICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmg6IEFkZGVk
LgorICAgICAgICAocng6OnZrOjpSZXNvdXJjZVVzZUxpc3Q6OmFkZCk6CisgICAgICAgIChyeDo6
dms6OlJlc291cmNlOjp1c2VkSW5SZWNvcmRlZENvbW1hbmRzIGNvbnN0KToKKyAgICAgICAgKHJ4
Ojp2azo6UmVzb3VyY2U6OnVzZWRJblJ1bm5pbmdDb21tYW5kcyBjb25zdCk6CisgICAgICAgIChy
eDo6dms6OlJlc291cmNlOjppc0N1cnJlbnRseUluVXNlIGNvbnN0KToKKyAgICAgICAgKHJ4Ojp2
azo6UmVzb3VyY2U6OnJldGFpbik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9TYW1wbGVyVmsuaDoKKyAgICAgICAgKHJ4OjpTYW1wbGVyVms6OnJldGFpbik6CisgICAg
ICAgIChyeDo6U2FtcGxlclZrOjpvblNhbXBsZXJBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAq
IHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5jcHA6
CisgICAgICAgIChyeDo6dms6OnByaXY6OlNlY29uZGFyeUNvbW1hbmRCdWZmZXI6OmR1bXBDb21t
YW5kcyBjb25zdCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZWNv
bmRhcnlDb21tYW5kQnVmZmVyLmg6CisgICAgICAgIChyeDo6dms6OnByaXY6OlNlY29uZGFyeUNv
bW1hbmRCdWZmZXI6OmJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMpOgorICAgICAgICAocng6
OnZrOjpwcml2OjpTZWNvbmRhcnlDb21tYW5kQnVmZmVyOjppbWFnZUJhcnJpZXIpOgorICAgICAg
ICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2VtYXBob3JlVmsuY3BwOgorICAgICAg
ICAocng6OlNlbWFwaG9yZVZrOjppbXBvcnRGZCk6CisgICAgICAgIChyeDo6U2VtYXBob3JlVms6
OmltcG9ydFppcmNvbkhhbmRsZSk6CisgICAgICAgIChyeDo6U2VtYXBob3JlVms6OndhaXQpOgor
ICAgICAgICAocng6OlNlbWFwaG9yZVZrOjpzaWduYWwpOgorICAgICAgICAocng6OlNlbWFwaG9y
ZVZrOjppbXBvcnRPcGFxdWVGZCk6CisgICAgICAgIChyeDo6U2VtYXBob3JlVms6OmltcG9ydFpp
cmNvbkV2ZW50KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NlbWFw
aG9yZVZrLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJW
ay5jcHA6CisgICAgICAgIChyeDo6U2hhZGVyVms6OmNvbXBpbGUpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNwcDoKKyAgICAgICAgKHJ4OjpPZmZz
Y3JlZW5TdXJmYWNlVms6OkF0dGFjaG1lbnRJbWFnZTo6aW5pdGlhbGl6ZVdpdGhFeHRlcm5hbE1l
bW9yeSk6CisgICAgICAgIChyeDo6T2Zmc2NyZWVuU3VyZmFjZVZrOjpBdHRhY2htZW50SW1hZ2U6
OmRlc3Ryb3kpOgorICAgICAgICAocng6Ok9mZnNjcmVlblN1cmZhY2VWazo6aW5pdGlhbGl6ZUNv
bnRlbnRzKToKKyAgICAgICAgKHJ4OjpXaW5kb3dTdXJmYWNlVms6OmluaXRpYWxpemVJbXBsKToK
KyAgICAgICAgKHJ4OjpXaW5kb3dTdXJmYWNlVms6OmNyZWF0ZVN3YXBDaGFpbik6CisgICAgICAg
IChyeDo6V2luZG93U3VyZmFjZVZrOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBjaGFpbik6CisgICAg
ICAgIChyeDo6V2luZG93U3VyZmFjZVZrOjpwcmVzZW50KToKKyAgICAgICAgKHJ4OjpXaW5kb3dT
dXJmYWNlVms6OmdldEN1cnJlbnRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChyeDo6V2luZG93U3Vy
ZmFjZVZrOjppbml0aWFsaXplQ29udGVudHMpOgorICAgICAgICAocng6OldpbmRvd1N1cmZhY2VW
azo6dXBkYXRlQW5kRHJhd092ZXJsYXkgY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmg6CisgICAgICAgIChyeDo6V2luZG93U3VyZmFjZVZr
OjpnZXRQcmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vU3luY1ZrLmNwcDoKKyAgICAgICAgKHJ4Ojp2azo6U3luY0hlbHBlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChyeDo6dms6OlN5bmNIZWxwZXI6OnNlcnZlcldhaXQpOgorICAgICAgICAocng6
OlN5bmNWazo6c2VydmVyV2FpdCk6CisgICAgICAgIChyeDo6RUdMU3luY1ZrOjpzZXJ2ZXJXYWl0
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N5bmNWay5oOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcDoKKyAgICAg
ICAgKHJ4OjpUZXh0dXJlVms6OmNvcHlTdWJJbWFnZUltcGwpOgorICAgICAgICAocng6OlRleHR1
cmVWazo6Y29weVN1YlRleHR1cmVJbXBsKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmNvcHlT
dWJJbWFnZUltcGxXaXRoVHJhbnNmZXIpOgorICAgICAgICAocng6OlRleHR1cmVWazo6c2V0U3Rv
cmFnZUV4dGVybmFsTWVtb3J5KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OnNldEVHTEltYWdl
VGFyZ2V0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmNvcHlJbWFnZURhdGFUb0J1ZmZlckFu
ZEdldERhdGEpOgorICAgICAgICAocng6OlRleHR1cmVWazo6Y29weUJ1ZmZlckRhdGFUb0ltYWdl
KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmdlbmVyYXRlTWlwbWFwc1dpdGhDUFUpOgorICAg
ICAgICAocng6OlRleHR1cmVWazo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAocng6OlRleHR1
cmVWazo6Y2hhbmdlTGV2ZWxzKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmVuc3VyZUltYWdl
SW5pdGlhbGl6ZWRJbXBsKToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmluaXRpYWxpemVDb250
ZW50cyk6CisgICAgICAgIChyeDo6VGV4dHVyZVZrOjpnZXRSZWFkSW1hZ2VWaWV3QW5kUmVjb3Jk
VXNlIGNvbnN0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmdldEZldGNoSW1hZ2VWaWV3QW5k
UmVjb3JkVXNlIGNvbnN0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6OmluaXRJbWFnZSk6Cisg
ICAgICAgIChyeDo6VGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1hcExldmVsc1dpdGhDUFUpOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmg6CisgICAgICAg
IChyeDo6VGV4dHVyZVZrOjpyZXRhaW5JbWFnZVZpZXdzKToKKyAgICAgICAgKHJ4OjpUZXh0dXJl
Vms6OnJldGFpblNhbXBsZXIpOgorICAgICAgICAocng6OlRleHR1cmVWazo6aXNCb3VuZEFzSW1h
Z2VUZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6Om9uSW1hZ2VWaWV3VXNl
KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpUZXh0dXJlVms6Om9uU2FtcGxlclVzZSk6IERlbGV0
ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVk
YmFja1ZrLmNwcDoKKyAgICAgICAgKHJ4OjpUcmFuc2Zvcm1GZWVkYmFja1ZrOjpiZWdpbik6Cisg
ICAgICAgIChyeDo6VHJhbnNmb3JtRmVlZGJhY2tWazo6ZW5kKToKKyAgICAgICAgKHJ4OjpUcmFu
c2Zvcm1GZWVkYmFja1ZrOjpwYXVzZSk6CisgICAgICAgIChyeDo6VHJhbnNmb3JtRmVlZGJhY2tW
azo6cmVzdW1lKToKKyAgICAgICAgKHJ4OjpUcmFuc2Zvcm1GZWVkYmFja1ZrOjp1cGRhdGVEZXNj
cmlwdG9yU2V0TGF5b3V0IGNvbnN0KToKKyAgICAgICAgKHJ4OjpUcmFuc2Zvcm1GZWVkYmFja1Zr
Ojp1cGRhdGVEZXNjcmlwdG9yU2V0IGNvbnN0KToKKyAgICAgICAgKHJ4OjpUcmFuc2Zvcm1GZWVk
YmFja1ZrOjpnZXRCdWZmZXJPZmZzZXRzIGNvbnN0KToKKyAgICAgICAgKHJ4OjpUcmFuc2Zvcm1G
ZWVkYmFja1ZrOjpvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKHJ4
OjpUcmFuc2Zvcm1GZWVkYmFja1ZrOjp3cml0ZURlc2NyaXB0b3JTZXQgY29uc3QpOgorICAgICAg
ICAocng6OlRyYW5zZm9ybUZlZWRiYWNrVms6OmFkZEZyYW1lYnVmZmVyRGVwZW5kZW5jeSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFu
c2Zvcm1GZWVkYmFja1ZrLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9VdGlsc1ZrLmNwcDoKKyAgICAgICAgKHJ4OjpVdGlsc1ZrOjpjbGVhckJ1ZmZlcik6CisgICAg
ICAgIChyeDo6VXRpbHNWazo6Y29udmVydEluZGV4QnVmZmVyKToKKyAgICAgICAgKHJ4OjpVdGls
c1ZrOjpjb252ZXJ0SW5kZXhJbmRpcmVjdEJ1ZmZlcik6CisgICAgICAgIChyeDo6VXRpbHNWazo6
Y29udmVydExpbmVMb29wSW5kZXhJbmRpcmVjdEJ1ZmZlcik6CisgICAgICAgIChyeDo6VXRpbHNW
azo6Y29udmVydExpbmVMb29wQXJyYXlJbmRpcmVjdEJ1ZmZlcik6CisgICAgICAgIChyeDo6VXRp
bHNWazo6Y29udmVydFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChyeDo6VXRpbHNWazo6c3RhcnRS
ZW5kZXJQYXNzKToKKyAgICAgICAgKHJ4OjpVdGlsc1ZrOjpjbGVhckZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKHJ4OjpVdGlsc1ZrOjpibGl0UmVzb2x2ZUltcGwpOgorICAgICAgICAocng6OlV0aWxz
Vms6OnN0ZW5jaWxCbGl0UmVzb2x2ZU5vU2hhZGVyRXhwb3J0KToKKyAgICAgICAgKHJ4OjpVdGls
c1ZrOjpjb3B5SW1hZ2UpOgorICAgICAgICAocng6OlV0aWxzVms6OmN1bGxPdmVybGF5V2lkZ2V0
cyk6CisgICAgICAgIChyeDo6VXRpbHNWazo6ZHJhd092ZXJsYXkpOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVXRpbHNWay5oOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5jcHA6CisgICAgICAgIChyeDo6VmVydGV4
QXJyYXlWazo6Y29udmVydEluZGV4QnVmZmVyQ1BVKToKKyAgICAgICAgKHJ4OjpWZXJ0ZXhBcnJh
eVZrOjpzeW5jRGlydHlBdHRyaWIpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vZG9jL0Zhc3RPcGVuR0xTdGF0ZVRyYW5zaXRpb25zLm1kOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZG9jL0Zvcm1hdFRhYmxlc0FuZEVtdWxhdGlvbi5tZDoK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9TaGFkZXJNb2R1bGVD
b21waWxhdGlvbi5tZDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2Rv
Yy9pbWcvVnVsa2FuU2hhZGVyVHJhbnNsYXRpb24uc3ZnOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5oOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5tbToKKyAgICAgICAgKHJ4OjpE
aXNwbGF5VmtNYWM6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKToKKyAgICAgICAgKHJ4
OjpEaXNwbGF5VmtNYWM6OmdlbmVyYXRlRXh0ZW5zaW9ucyBjb25zdCk6CisgICAgICAgIChyeDo6
RGlzcGxheVZrTWFjOjp2YWxpZGF0ZUNsaWVudEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9tYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFjLmg6IEFk
ZGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0lPU3VyZmFj
ZVN1cmZhY2VWa01hYy5tbTogQWRkZWQuCisgICAgICAgIChyeDo6SU9TdXJmYWNlU3VyZmFjZVZr
TWFjOjpJT1N1cmZhY2VTdXJmYWNlVmtNYWMpOgorICAgICAgICAocng6OklPU3VyZmFjZVN1cmZh
Y2VWa01hYzo6fklPU3VyZmFjZVN1cmZhY2VWa01hYyk6CisgICAgICAgIChyeDo6SU9TdXJmYWNl
U3VyZmFjZVZrTWFjOjppbml0aWFsaXplKToKKyAgICAgICAgKHJ4OjpJT1N1cmZhY2VTdXJmYWNl
VmtNYWM6OmluaXRpYWxpemVJbXBsKToKKyAgICAgICAgKHJ4OjpJT1N1cmZhY2VTdXJmYWNlVmtN
YWM6OnVuTWFrZUN1cnJlbnQpOgorICAgICAgICAocng6OklPU3VyZmFjZVN1cmZhY2VWa01hYzo6
YmluZFRleEltYWdlKToKKyAgICAgICAgKHJ4OjpJT1N1cmZhY2VTdXJmYWNlVmtNYWM6OnJlbGVh
c2VUZXhJbWFnZSk6CisgICAgICAgIChyeDo6SU9TdXJmYWNlU3VyZmFjZVZrTWFjOjpWYWxpZGF0
ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hh
ZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAwLmluYzoK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZl
cnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMS5pbmM6CisgICAgICAgICogc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVj
dExpbmVMb29wLmNvbXAuMDAwMDAwMDIuaW5jOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvc3JjL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxv
b3AuY29tcDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMv
c3JjL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC5qc29uOgorICAgICAgICAqIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfY2FjaGVfdXRpbHMuY3BwOgorICAgICAgICAo
cng6OnZrOjpHcmFwaGljc1BpcGVsaW5lRGVzYzo6aW5pdGlhbGl6ZVBpcGVsaW5lIGNvbnN0KToK
KyAgICAgICAgKHJ4Ojp2azo6RnJhbWVidWZmZXJEZXNjOjpGcmFtZWJ1ZmZlckRlc2MpOgorICAg
ICAgICAocng6OnZrOjpGcmFtZWJ1ZmZlckRlc2M6OnVwZGF0ZSk6CisgICAgICAgIChyeDo6dms6
OkZyYW1lYnVmZmVyRGVzYzo6aGFzaCBjb25zdCk6CisgICAgICAgIChyeDo6dms6OkZyYW1lYnVm
ZmVyRGVzYzo6cmVzZXQpOgorICAgICAgICAocng6OnZrOjpGcmFtZWJ1ZmZlckRlc2M6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
Y2FjaGVfdXRpbHMuaDoKKyAgICAgICAgKHN0ZDo6aGFzaDxyeDo6dms6OkZyYW1lYnVmZmVyRGVz
Yz46Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vdmtfY2Fwc191dGlscy5jcHA6CisgICAgICAgIChyeDo6UmVuZGVyZXJWazo6ZW5zdXJl
Q2Fwc0luaXRpYWxpemVkIGNvbnN0KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL3ZrX2Zvcm1hdF9tYXAuanNvbjoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKHJ4Ojp2azo6
Rm9ybWF0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3ZrX2hlbHBlcnMuY3BwOgorICAgICAgICAocng6OnZrOjpEeW5hbWljUXVlcnlQb29sOjph
bGxvY2F0ZVF1ZXJ5KToKKyAgICAgICAgKHJ4Ojp2azo6RHluYW1pY1F1ZXJ5UG9vbDo6ZnJlZVF1
ZXJ5KToKKyAgICAgICAgKHJ4Ojp2azo6UXVlcnlIZWxwZXI6OmJlZ2luUXVlcnkpOgorICAgICAg
ICAocng6OnZrOjpRdWVyeUhlbHBlcjo6ZW5kUXVlcnkpOgorICAgICAgICAocng6OnZrOjpRdWVy
eUhlbHBlcjo6Zmx1c2hBbmRXcml0ZVRpbWVzdGFtcCk6CisgICAgICAgIChyeDo6dms6OlF1ZXJ5
SGVscGVyOjp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAgIChyeDo6dms6OlF1ZXJ5SGVscGVyOjpn
ZXRVaW50NjRSZXN1bHROb25CbG9ja2luZyk6CisgICAgICAgIChyeDo6dms6OlF1ZXJ5SGVscGVy
OjpnZXRVaW50NjRSZXN1bHQpOgorICAgICAgICAocng6OnZrOjpMaW5lTG9vcEhlbHBlcjo6Z2V0
SW5kZXhCdWZmZXJGb3JFbGVtZW50QXJyYXlCdWZmZXIpOgorICAgICAgICAocng6OnZrOjpMaW5l
TG9vcEhlbHBlcjo6c3RyZWFtSW5kaWNlcyk6CisgICAgICAgIChyeDo6dms6OkxpbmVMb29wSGVs
cGVyOjpzdHJlYW1JbmRpY2VzSW5kaXJlY3QpOgorICAgICAgICAocng6OnZrOjpCdWZmZXJIZWxw
ZXI6OkJ1ZmZlckhlbHBlcik6CisgICAgICAgIChyeDo6dms6OkJ1ZmZlckhlbHBlcjo6aW5pdCk6
CisgICAgICAgIChyeDo6dms6OkJ1ZmZlckhlbHBlcjo6aW5pdGlhbGl6ZU5vblplcm9NZW1vcnkp
OgorICAgICAgICAocng6OnZrOjpCdWZmZXJIZWxwZXI6OmNvcHlGcm9tQnVmZmVyKToKKyAgICAg
ICAgKHJ4Ojp2azo6QnVmZmVySGVscGVyOjpjYW5BY2N1bXVsYXRlUmVhZCk6CisgICAgICAgIChy
eDo6dms6OkJ1ZmZlckhlbHBlcjo6Y2FuQWNjdW11bGF0ZVdyaXRlKToKKyAgICAgICAgKHJ4Ojp2
azo6SW1hZ2VIZWxwZXI6OkltYWdlSGVscGVyKToKKyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VIZWxw
ZXI6OmluaXQpOgorICAgICAgICAocng6OnZrOjpJbWFnZUhlbHBlcjo6cmVsZWFzZUltYWdlKToK
KyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VIZWxwZXI6OmluaXRpYWxpemVOb25aZXJvTWVtb3J5KToK
KyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VIZWxwZXI6OmluaXRNZW1vcnkpOgorICAgICAgICAocng6
OnZrOjpJbWFnZUhlbHBlcjo6ZGVzdHJveSk6CisgICAgICAgIChyeDo6dms6OkltYWdlSGVscGVy
Ojpmb3JjZUNoYW5nZUxheW91dEFuZFF1ZXVlKToKKyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VIZWxw
ZXI6OmdldEFzc2lnblNlcmlhbCk6CisgICAgICAgIChyeDo6dms6OkltYWdlSGVscGVyOjpnZW5l
cmF0ZU1pcG1hcHNXaXRoQmxpdCk6CisgICAgICAgIChyeDo6dms6OkltYWdlSGVscGVyOjpyZXNv
bHZlKToKKyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VIZWxwZXI6OnN0YWdlU3VicmVzb3VyY2VSb2J1
c3RDbGVhcik6CisgICAgICAgIChyeDo6dms6OkltYWdlSGVscGVyOjpmbHVzaFN0YWdlZFVwZGF0
ZXMpOgorICAgICAgICAocng6OnZrOjpJbWFnZUhlbHBlcjo6Zmx1c2hBbGxTdGFnZWRVcGRhdGVz
KToKKyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VIZWxwZXI6OmNvcHlJbWFnZURhdGFUb0J1ZmZlcik6
CisgICAgICAgIChyeDo6dms6OkltYWdlSGVscGVyOjpyZWFkUGl4ZWxzRm9yR2V0SW1hZ2UpOgor
ICAgICAgICAocng6OnZrOjpJbWFnZUhlbHBlcjo6cmVhZFBpeGVscyk6CisgICAgICAgIChyeDo6
dms6OkZyYW1lYnVmZmVySGVscGVyOjpGcmFtZWJ1ZmZlckhlbHBlcik6CisgICAgICAgIChyeDo6
dms6OkZyYW1lYnVmZmVySGVscGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAocng6OnZrOjpJbWFn
ZVZpZXdIZWxwZXI6OnJlbGVhc2UpOgorICAgICAgICAocng6OnZrOjpJbWFnZVZpZXdIZWxwZXI6
OmdldExldmVsRHJhd0ltYWdlVmlldyk6CisgICAgICAgIChyeDo6dms6OkltYWdlVmlld0hlbHBl
cjo6Z2V0TGV2ZWxMYXllckRyYXdJbWFnZVZpZXcpOgorICAgICAgICAocng6OnZrOjpTaGFkZXJQ
cm9ncmFtSGVscGVyOjpnZXRDb21wdXRlUGlwZWxpbmUpOgorICAgICAgICAocng6OnZrOjpCdWZm
ZXJIZWxwZXI6Om9uV3JpdGVBY2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAocng6OnZrOjpJbWFn
ZUhlbHBlcjo6Y2hhbmdlTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4Ojp2azo6RGlzcGF0
Y2hIZWxwZXI6OkRpc3BhdGNoSGVscGVyKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4Ojp2azo6TWFr
ZURlYnVnVXRpbHNMYWJlbCk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi92a19oZWxwZXJzLmg6CisgICAgICAgIChyeDo6dms6OkltYWdlVmlld0hlbHBl
cjo6cmV0YWluIGNvbnN0KToKKyAgICAgICAgKHJ4Ojp2azo6SW1hZ2VWaWV3SGVscGVyOjpvblJl
c291cmNlQWNjZXNzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5jcHA6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4u
Z25pOgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaW50ZXJuYWxf
c2hhZGVyc19hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi92a191dGlscy5jcHA6CisgICAgICAgIChyeDo6R2V0QXZhaWxhYmxlVmFsaWRhdGlvbkxheWVy
cyk6CisgICAgICAgIChyeDo6dms6Ok1lbW9yeVByb3BlcnRpZXM6OmZpbmRDb21wYXRpYmxlTWVt
b3J5SW5kZXggY29uc3QpOgorICAgICAgICAocng6OnZrOjpTdGFnaW5nQnVmZmVyOjppbml0KToK
KyAgICAgICAgKHJ4Ojp2azo6U3RhZ2luZ0J1ZmZlcjo6Y29sbGVjdEdhcmJhZ2UpOgorICAgICAg
ICAocng6OnZrOjpJbml0TWFwcGFibGVEZXZpY2VNZW1vcnkpOgorICAgICAgICAocng6OnZrOjpB
bGxvY2F0ZUJ1ZmZlck1lbW9yeSk6CisgICAgICAgIChyeDo6dms6OkFsbG9jYXRlSW1hZ2VNZW1v
cnkpOgorICAgICAgICAocng6OnZrOjpNYWtlRGVidWdVdGlsc0xhYmVsKToKKyAgICAgICAgKHJ4
OjpIYXNWYWxpZGF0aW9uTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAocng6Okhhc0tocm9ub3NW
YWxpZGF0aW9uTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICAocng6Okhhc1N0YW5kYXJkVmFsaWRh
dGlvbkxheWVyKTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpIYXNWYWxpZGF0aW9uTGF5ZXJzKTog
RGVsZXRlZC4KKyAgICAgICAgKHJ4OjpGaW5kQW5kQWxsb2NhdGVDb21wYXRpYmxlTWVtb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKHJ4OjpBbGxvY2F0ZUFuZEJpbmRCdWZmZXJPckltYWdlTWVtb3J5
KTogRGVsZXRlZC4KKyAgICAgICAgKHJ4OjpBbGxvY2F0ZUJ1ZmZlck9ySW1hZ2VNZW1vcnkpOiBE
ZWxldGVkLgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfdXRpbHMu
aDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3dyYXBwZXIuaDoK
KyAgICAgICAgKHJ4Ojp2azo6Q29tbWFuZFBvb2w6OmZyZWVDb21tYW5kQnVmZmVycyk6CisgICAg
ICAgIChyeDo6dms6OnByaXY6OkNvbW1hbmRCdWZmZXI6OmltYWdlQmFycmllcik6CisgICAgICAg
IChyeDo6dms6OnByaXY6OkNvbW1hbmRCdWZmZXI6OnJlc2V0UXVlcnlQb29sKToKKyAgICAgICAg
KHJ4Ojp2azo6cHJpdjo6Q29tbWFuZEJ1ZmZlcjo6YmVnaW5RdWVyeSk6CisgICAgICAgIChyeDo6
dms6OnByaXY6OkNvbW1hbmRCdWZmZXI6OmVuZFF1ZXJ5KToKKyAgICAgICAgKHJ4Ojp2azo6cHJp
djo6Q29tbWFuZEJ1ZmZlcjo6d3JpdGVUaW1lc3RhbXApOgorICAgICAgICAocng6OnZrOjpwcml2
OjpDb21tYW5kQnVmZmVyOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhUKToKKyAgICAgICAgKHJ4
Ojp2azo6cHJpdjo6Q29tbWFuZEJ1ZmZlcjo6ZW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQpOgorICAg
ICAgICAocng6OnZrOjpwcml2OjpDb21tYW5kQnVmZmVyOjpiaW5kVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJzRVhUKToKKyAgICAgICAgKHJ4Ojp2azo6cHJpdjo6Q29tbWFuZEJ1ZmZlcjo6YmVnaW5E
ZWJ1Z1V0aWxzTGFiZWxFWFQpOgorICAgICAgICAocng6OnZrOjpwcml2OjpDb21tYW5kQnVmZmVy
OjplbmREZWJ1Z1V0aWxzTGFiZWxFWFQpOgorICAgICAgICAocng6OnZrOjpwcml2OjpDb21tYW5k
QnVmZmVyOjppbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQpOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4veGNiL0Rpc3BsYXlWa1hjYi5jcHA6CisgICAgICAgIChyeDo6RGlz
cGxheVZrWGNiOjp3YWl0TmF0aXZlSW1wbCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi94Y2IvRGlzcGxheVZrWGNiLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FR0wuY3BwOgorICAgICAgICAoZWdsOjpWYWxpZGF0ZUNyZWF0ZVBidWZmZXJGcm9t
Q2xpZW50QnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcDoK
KyAgICAgICAgKGdsOjplcnI6OkNvbXByZXNzZWRUZXh0dXJlRm9ybWF0UmVxdWlyZXNFeGFjdFNp
emUpOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRSZWFkUGl4ZWxzVHlwZUVudW0pOgorICAgICAg
ICAoZ2w6OmVycjo6VmFsaWRSZWFkUGl4ZWxzRm9ybWF0RW51bSk6CisgICAgICAgIChnbDo6ZXJy
OjpWYWxpZFJlYWRQaXhlbHNGb3JtYXRUeXBlKToKKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRl
VGV4dHVyZVdyYXBNb2RlVmFsdWUpOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRhdGVUZXh0dXJl
TWluRmlsdGVyVmFsdWUpOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRhdGVUZXh0dXJlTWFnRmls
dGVyVmFsdWUpOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRhdGVUZXh0dXJlQ29tcGFyZU1vZGVW
YWx1ZSk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVRleHR1cmVDb21wYXJlRnVuY1ZhbHVl
KToKKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRlVGV4dHVyZVNSR0JEZWNvZGVWYWx1ZSk6Cisg
ICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVRleHR1cmVNYXhBbmlzb3Ryb3B5RXh0ZW5zaW9uRW5h
YmxlZCk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVRleHR1cmVNYXhBbmlzb3Ryb3B5VmFs
dWUpOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRhdGVGcmFnbWVudFNoYWRlckNvbG9yQnVmZmVy
TWFza01hdGNoKToKKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRlRnJhZ21lbnRTaGFkZXJDb2xv
ckJ1ZmZlclR5cGVNYXRjaCk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVZlcnRleFNoYWRl
ckF0dHJpYnV0ZVR5cGVNYXRjaCk6CisgICAgICAgIChnbDo6U2V0Um9idXN0TGVuZ3RoUGFyYW0p
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZSk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkSW1hZ2VTaXpl
UGFyYW1ldGVycyk6CisgICAgICAgIChnbDo6VmFsaWRJbWFnZURhdGFTaXplKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVdlYkdMVmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChnbDo6R2V0
VmFsaWRQcm9ncmFtTm9SZXNvbHZlKToKKyAgICAgICAgKGdsOjpHZXRWYWxpZFByb2dyYW0pOgor
ICAgICAgICAoZ2w6OkdldFZhbGlkU2hhZGVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUF0dGFj
aG1lbnRUYXJnZXQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBh
cmFtZXRlcnNCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyUGFyYW1ldGVycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJh
bWV0ZXJzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVSZWFkblBpeGVsc0VYVCk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdlblF1ZXJp
ZXNFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVCk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVJc1F1ZXJ5RVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJlZ2luUXVl
cnlCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJlZ2luUXVlcnlFWFQpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlRW5kUXVlcnlCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVuZFF1ZXJ5
RVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVF1ZXJ5Q291bnRlckVYVCk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRRdWVyeWl2QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVy
eWl2RVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZSk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2RVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVy
eU9iamVjdHVpdkVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVCk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2RVhUKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3Jt
MWl2VmFsdWUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9y
bTFpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtTWF0cml4KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVN0YXRlUXVlcnkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0Qm9vbGVhbnZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRGbG9hdHZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVSb2J1c3RTdGF0ZVF1ZXJ5KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXhJbWFn
ZVBhcmFtZXRlcnNCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdTdGF0ZXMpOgorICAg
ICAgICAoZ2w6OlJlY29yZERyYXdNb2RlRXJyb3IpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdBcnJheXNJ
bnN0YW5jZWRFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzU3RhdGVzKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEVYVCk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdl
dFVuaWZvcm1CYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRu
VW5pZm9ybWl2RVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEaXNj
YXJkRnJhbWVidWZmZXJCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUluc2VydEV2ZW50TWFy
a2VyRVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVB1c2hHcm91cE1hcmtlckVYVCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlQmluZFZlcnRleEFycmF5QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVQcm9ncmFtQmluYXJ5QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtQmlu
YXJ5QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3QnVmZmVyc0Jhc2UpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZCYXNlKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVVubWFwQnVmZmVyQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXBCdWZmZXJSYW5n
ZUJhc2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2Up
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuT3JEZWxldGUpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlUm9idXN0RW50cnlQb2ludCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVSb2J1c3RCdWZmZXJT
aXplKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEJ1ZmZl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0QnVmZmVy
UGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFByb2dy
YW1pdkJhc2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVU
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleFBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1
c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdM
RSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlV2ViR0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlUm9idXN0Q29tcHJlc3NlZFRleEltYWdlQmFzZSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2QmFzZSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVHZXRTaGFkZXJpdkJhc2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VGV4UGFy
YW1ldGVyQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVBpeGVsUGFjayk6CisgICAgICAgIChnbDo6VmFsaWRhdGVS
ZWFkUGl4ZWxzQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVTYW1wbGVyUGFyYW1ldGVyQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTYW1wbGVy
UGFyYW1ldGVyQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2
QmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVGcmFtZWJ1ZmZlck5vdE11bHRpc2FtcGxlZCk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aXRleHR1cmVVbml0KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVRleFN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhT
dG9yYWdlMkRNdWx0aXNhbXBsZUJhc2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZC
YXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNhbXBsZU1hc2tpQmFzZSk6CisgICAgICAgIChn
bDo6UmVjb3JkRHJhd0F0dHJpYnNFcnJvcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVMb3NlQ29u
dGV4dENIUk9NSVVNKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEltYWdlMkRFeHRlcm5hbEFO
R0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUludmFsaWRhdGVUZXh0dXJlQU5HTEUpOgorICAg
ICAgICAoZ2w6OklzRVRDMkVBQ0Zvcm1hdCk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FUy5oOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybVZhbHVlKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZl
cnRleEZvcm1hdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVGbG9hdFZlcnRleEZvcm1hdCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVJbnRlZ2VyVmVydGV4Rm9ybWF0KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUZyYW1lYnVmZmVyQ29tcGxldGUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0F0
dHJpYnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0FycmF5c0F0dHJpYnMpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlRHJhd0luc3RhbmNlZEF0dHJpYnMpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlRHJhd0FycmF5c0NvbW1vbik6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3RWxlbWVudHNC
YXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0NvbW1vbik6CisgICAgICAg
ICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzEuY3BwOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
QWxwaGFGdW5jQ29tbW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNsaWVudFN0YXRlQ29tbW9u
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJ1aWx0aW5WZXJ0ZXhBdHRyaWJ1dGVDb21tb24pOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlTGlnaHRDYXBzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxp
Z2h0Q29tbW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxpZ2h0U2luZ2xlQ29tcG9uZW50KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZU1hdGVyaWFsQ29tbW9uKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZU1hdGVyaWFsU2V0dGluZyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXRlcmlhbFF1ZXJ5
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU1hdGVyaWFsU2luZ2xlQ29tcG9uZW50KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUxpZ2h0TW9kZWxDb21tb24pOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
TGlnaHRNb2RlbFNpbmdsZUNvbXBvbmVudCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDbGlwUGxh
bmVDb21tb24pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRm9nQ29tbW9uKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVRleEVudkNvbW1vbik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhFbnZD
b21tb24pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJDb21tb24pOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlUG9pbnRTaXplQ29tbW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZURyYXdUZXhDb21tb24pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQWxwaGFGdW5jKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUFscGhhRnVuY3gpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJD
b2xvcngpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJEZXB0aHgpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlQ2xpZW50QWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDbGlw
UGxhbmVmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNsaXBQbGFuZXgpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlQ29sb3I0Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjR1Yik6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVDb2xvcjR4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yUG9p
bnRlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDdWxsRmFjZSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVEZXB0aFJhbmdleCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEaXNhYmxlQ2xpZW50U3Rh
dGUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRW5hYmxlQ2xpZW50U3RhdGUpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlRm9nZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVGb2dmdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVGb2d4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZvZ3h2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUZydXN0dW1mKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZydXN0dW14
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldENsaXBQbGFuZWYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0Q2xp
cFBsYW5leCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRGaXhlZHYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlR2V0TGlnaHRmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRMaWdodHh2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldE1hdGVyaWFsZnYpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlR2V0TWF0ZXJpYWx4dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhFbnZmdik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhFbnZpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVH
ZXRUZXhFbnZ4dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJ4dik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVMaWdodE1vZGVsZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVM
aWdodE1vZGVsZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTGlnaHRNb2RlbHgpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlTGlnaHRNb2RlbHh2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxpZ2h0
Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVMaWdodGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUxpZ2h0eCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVMaWdodHh2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUxpbmVXaWR0aHgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTG9hZElkZW50aXR5KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUxvYWRNYXRyaXhmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUxvYWRNYXRyaXh4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxvZ2ljT3ApOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlTWF0ZXJpYWxmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU1hdGVyaWFsZnYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWF0ZXJpYWx4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZU1hdGVyaWFseHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWF0cml4TW9kZSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVNdWx0TWF0cml4Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0TWF0
cml4eCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkNGYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlTXVsdGlUZXhDb29yZDR4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5vcm1h
bDNmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5vcm1hbDN4KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZU5vcm1hbFBvaW50ZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlT3J0aG9mKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZU9ydGhveCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb2ludFBhcmFt
ZXRlcmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVQb2ludFBhcmFtZXRlcngpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUG9p
bnRQYXJhbWV0ZXJ4dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb2ludFNpemUpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlUG9pbnRTaXpleCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb2x5Z29u
T2Zmc2V0eCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb3BNYXRyaXgpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlUHVzaE1hdHJpeCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVSb3RhdGVmKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVJvdGF0ZXgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2FtcGxl
Q292ZXJhZ2V4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNjYWxlZik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVTY2FsZXgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2hhZGVNb2RlbCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZFBvaW50ZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VGV4RW52Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhFbnZmdik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVUZXhFbnZpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEVudml2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVRleEVudngpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4RW52eHYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZUZvckdMZml4ZWQpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlVGV4UGFyYW1ldGVyeCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVU
ZXhQYXJhbWV0ZXJ4dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVUcmFuc2xhdGVmKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVRyYW5zbGF0ZXgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4
UG9pbnRlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3VGV4Zk9FUyk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVEcmF3VGV4ZnZPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd1RleGlP
RVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd1RleGl2T0VTKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZURyYXdUZXhzT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdUZXhzdk9FUyk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3VGV4eE9FUyk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVEcmF3VGV4eHZPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ3VycmVudFBhbGV0dGVNYXRy
aXhPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0
cml4T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU1hdHJpeEluZGV4UG9pbnRlck9FUyk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVXZWlnaHRQb2ludGVyT0VTKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVBvaW50U2l6ZVBvaW50ZXJPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUXVlcnlNYXRy
aXh4T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdlbkZyYW1lYnVmZmVyc09FUyk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVEZWxldGVGcmFtZWJ1ZmZlcnNPRVMpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlR2VuUmVuZGVyYnVmZmVyc09FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEZWxldGVS
ZW5kZXJidWZmZXJzT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlck9F
Uyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyT0VTKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVMpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
RnJhbWVidWZmZXJUZXh0dXJlMkRPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuZXJhdGVN
aXBtYXBPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXZPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSXNGcmFtZWJ1ZmZlck9FUyk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVJc1JlbmRlcmJ1ZmZlck9FUyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFRl
eEdlbmZ2T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFRleEdlbml2T0VTKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUdldFRleEdlbnh2T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRl
eEdlbmZ2T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEdlbml2T0VTKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVRleEdlbnh2T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEdlbmZP
RVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4R2VuaU9FUyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVUZXhHZW54T0VTKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMV9h
dXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuY3BwOgorICAg
ICAgICAoZ2w6OmVycjo6SXNQYXJ0aWFsQmxpdCk6CisgICAgICAgIChnbDo6ZXJyOjpJc1ZhbGlk
Q29weVRleHR1cmVEZXN0aW5hdGlvbkZvcm1hdFR5cGUpOgorICAgICAgICAoZ2w6OmVycjo6SXNW
YWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25UYXJnZXRFbnVtKToKKyAgICAgICAgKGdsOjplcnI6
OklzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0KToKKyAgICAgICAgKGdsOjplcnI6
OklzVmFsaWRDb3B5VGV4dHVyZVNvdXJjZVRhcmdldCk6CisgICAgICAgIChnbDo6ZXJyOjpJc1Zh
bGlkQ29weVRleHR1cmVTb3VyY2VMZXZlbCk6CisgICAgICAgIChnbDo6ZXJyOjpJc1ZhbGlkQ29w
eVRleHR1cmVEZXN0aW5hdGlvbkxldmVsKToKKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRlRVMy
Q29weVRleEltYWdlUGFyYW1ldGVycyk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVdlYkdM
TmFtZVByZWZpeCk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVdlYkdMTmFtZUxlbmd0aCk6
CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZEJsZW5kRnVuYyk6CisgICAgICAgIChnbDo6ZXJyOjpW
YWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyk6CisgICAgICAgIChnbDo6ZXJyOjpJc1ZhbGlk
TWVtb3J5T2JqZWN0UGFyYW1hdGVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVTMlRleEltYWdl
UGFyYW1ldGVyc0Jhc2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFt
ZXRlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhUKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVEZWxldGVWZXJ0ZXhBcnJheXNPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuVmVy
dGV4QXJyYXlzT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbUJpbmFyeU9FUyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVHZXRQcm9ncmFtQmluYXJ5T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURlYnVnTWVz
c2FnZUNvbnRyb2xLSFIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVidWdNZXNzYWdlSW5zZXJ0
S0hSKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZ0tIUik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb3BEZWJ1
Z0dyb3VwS0hSKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU9iamVjdElkZW50aWZpZXJBbmROYW1l
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxhYmVsTGVuZ3RoKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZU9iamVjdExhYmVsS0hSKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldE9iamVjdExhYmVs
S0hSKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU9iamVjdFB0ck5hbWUpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlT2JqZWN0UHRyTGFiZWxLSFIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0T2Jq
ZWN0UHRyTGFiZWxLSFIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UG9pbnRlcnZLSFIpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUNsZWFyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdCdWZmZXJzRVhUKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEltYWdlMkQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleFN1YkltYWdl
MkQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVRleFN1YkltYWdlM0RPRVMpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlQ29tcHJlc3NlZFRleEltYWdlMkQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29tcHJlc3Nl
ZFRleEltYWdlMkRSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb21wcmVzc2Vk
VGV4SW1hZ2UzRE9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VT
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2T0VTKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZU1hcEJ1ZmZlck9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbm1hcEJ1
ZmZlck9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVCdWZmZXJTdG9yYWdlTWVtRVhUKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUNyZWF0ZU1lbW9yeU9iamVjdHNFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRl
TWVtb3J5T2JqZWN0c0VYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRNZW1vcnlPYmplY3RQ
YXJhbWV0ZXJpdkVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGV2RVhU
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVYVCk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVJc01lbW9yeU9iamVjdEVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVN
ZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhTdG9y
YWdlTWVtMkRFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuU2VtYXBo
b3Jlc0VYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0
dkVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVJc1NlbWFwaG9yZUVYVCk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVTaWduYWxTZW1hcGhvcmVFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlV2FpdFNlbWFw
aG9yZUVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVYVCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVNYXBCdWZmZXJCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmluZFVu
aWZvcm1Mb2NhdGlvbkNIUk9NSVVNKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvdmVyYWdlTW9k
dWxhdGlvbkNIUk9NSVVNKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXh0dXJlQ0hST01J
VU0pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTSk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVDcmVhdGVTaGFkZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQnVmZmVy
RGF0YSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVJlcXVlc3RFeHRlbnNpb25BTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVE
aXNhYmxlRXh0ZW5zaW9uQU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQWN0aXZlVGV4dHVy
ZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVBdHRhY2hTaGFkZXIpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlQmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUJsZW5kQ29sb3IpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmxlbmRF
cXVhdGlvbik6CisgICAgICAgIChnbDo6VmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQmxlbmRGdW5jKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJs
ZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFN0cmluZyk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVMaW5lV2lkdGgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVwdGhS
YW5nZWYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUNsZWFyQ29sb3IpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJEZXB0aGYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJTdGVuY2lsKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUNvbG9yTWFzayk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
Q3VsbEZhY2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlUHJvZ3JhbSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVEZWxldGVTaGFkZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVwdGhG
dW5jKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURlcHRoTWFzayk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVEZXRhY2hTaGFkZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZpbmlzaCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVG
bHVzaCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVGcm9udEZhY2UpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlR2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm0pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUdldEJvb2xlYW52KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEVycm9yKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldEZsb2F0dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRJbnRlZ2Vy
dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFNo
YWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUhpbnQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSXNCdWZmZXIpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlSXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVJ
c1Byb2dyYW0pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSXNSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlSXNTaGFkZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSXNUZXh0dXJl
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBpeGVsU3RvcmVpKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVBvbHlnb25PZmZzZXQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmVsZWFzZVNoYWRlckNv
bXBpbGVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVNjaXNzb3IpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2hhZGVyQmluYXJ5
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNoYWRlclNvdXJjZSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVTdGVuY2lsRnVuYyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTdGVuY2lsRnVuY1NlcGFy
YXRlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVN0ZW5jaWxNYXNrKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU3RlbmNp
bE9wKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVVuaWZvcm0xZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtMWZ2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0xaSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVVbmlmb3JtMmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0yaSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVVbmlmb3JtMml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0z
Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtM2Z2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVVuaWZvcm0zaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtM2l2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm00Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3Jt
NGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm00aSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVVbmlmb3JtNGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVVbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZhbGlkYXRl
UHJvZ3JhbSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVy
dGV4QXR0cmliMmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliMmZ2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZVZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Zik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlVmlld3BvcnQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UHJvZ3JhbWl2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXhTdWJJ
bWFnZTNET0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURlbGV0ZUJ1ZmZlcnMpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZURlbGV0ZVJlbmRlcmJ1ZmZlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlVGV4dHVy
ZXMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGlzYWJsZSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVFbmFibGUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlR2VuQnVmZmVycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuUmVuZGVyYnVmZmVycyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVHZW5UZXh0dXJlcyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZW5lcmF0ZU1pcG1hcCk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVHZXRTaGFkZXJpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJm
dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
R2V0VGV4UGFyYW1ldGVySXVpdk9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRVbmlmb3Jt
ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUlzRW5hYmxlZCk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVMaW5rUHJvZ3JhbSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVSZWFkUGl4ZWxzKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVRleFBhcmFtZXRlcmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4
UGFyYW1ldGVyZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4UGFyYW1ldGVyaSk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVUZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVU
ZXhQYXJhbWV0ZXJJaXZPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4UGFyYW1ldGVySXVp
dk9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVc2VQcm9ncmFtKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZURlbGV0ZUZlbmNlc05WKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZpbmlzaEZlbmNl
TlYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuRmVuY2VzTlYpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlR2V0RmVuY2Vpdk5WKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZUFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUlzRmVuY2VOVik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVTZXRGZW5jZU5WKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRlc3RGZW5jZU5W
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleFN0b3JhZ2UyREVYVCk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VmVydGV4QXR0cmliRGl2aXNvckVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhJbWFnZTNE
T0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVRleFN0b3JhZ2UxREVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhT
dG9yYWdlM0RFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWF4U2hhZGVyQ29tcGlsZXJUaHJl
YWRzS0hSKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0FOR0xFKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlUHJvdm9raW5nVmVydGV4QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRnJh
bWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQpOgorICAgICAgICAoZ2w6OlJlY29yZEJp
bmRUZXh0dXJlVHlwZUVycm9yKToKKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRlUGF0aEluc3Rh
bmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZUluc3RhbmNlZFBhdGhQ
YXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRlTWF0cml4TW9k
ZSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6VmFsaWRhdGVNYXRyaXhMb2FkZkNIUk9NSVVNKTog
RGVsZXRlZC4KKyAgICAgICAgKGdsOjpWYWxpZGF0ZU1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdlblBhdGhzQ0hST01JVU0pOiBEZWxl
dGVkLgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlUGF0aHNDSFJPTUlVTSk6IERlbGV0ZWQu
CisgICAgICAgIChnbDo6VmFsaWRhdGVQYXRoQ29tbWFuZHNDSFJPTUlVTSk6IERlbGV0ZWQuCisg
ICAgICAgIChnbDo6VmFsaWRhdGVQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKTogRGVsZXRlZC4KKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVBhdGhQYXJhbWV0ZXJpQ0hST01JVU0pOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0pOiBEZWxldGVkLgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0pOiBEZWxldGVk
LgorICAgICAgICAoZ2w6OlZhbGlkYXRlUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0pOiBEZWxldGVk
LgorICAgICAgICAoZ2w6OlZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0pOiBEZWxldGVk
LgorICAgICAgICAoZ2w6OlZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTSk6IERlbGV0
ZWQuCisgICAgICAgIChnbDo6VmFsaWRhdGVDb3ZlclBhdGhDSFJPTUlVTSk6IERlbGV0ZWQuCisg
ICAgICAgIChnbDo6VmFsaWRhdGVDb3ZlckZpbGxQYXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlQ292ZXJTdHJva2VQYXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0pOiBEZWxl
dGVkLgorICAgICAgICAoZ2w6OlZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJP
TUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6VmFsaWRhdGVJc1BhdGhDSFJPTUlVTSk6IERl
bGV0ZWQuCisgICAgICAgIChnbDo6VmFsaWRhdGVDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlZhbGlkYXRlU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlZhbGlkYXRlU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6
VmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSk6IERlbGV0
ZWQuCisgICAgICAgIChnbDo6VmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZENIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb25DSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6VmFsaWRhdGVQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgICog
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdB
cnJheXMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybTJmKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUJpbmRCdWZmZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlQmluZFRleHR1cmUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMyX2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5jcHA6
CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld0Jh
c2VBTkdMRSk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11
bHRpdmlld0xldmVsQW5kRm9ybWF0KToKKyAgICAgICAgKGdsOjplcnI6OlZhbGlkYXRlVW5pZm9y
bUVTMyk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVVuaWZvcm1NYXRyaXhFUzMpOgorICAg
ICAgICAoZ2w6OmVycjo6VmFsaWRhdGVHZW5PckRlbGV0ZUVTMyk6CisgICAgICAgIChnbDo6ZXJy
OjpWYWxpZGF0ZUdlbk9yRGVsZXRlQ291bnRFUzMpOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRh
dGVDb3B5VGV4dHVyZTNEQ29tbW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEltYWdlRm9y
bWF0Q29tYmluYXRpb24pOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRVMzQ29tcHJlc3NlZEZvcm1h
dEZvclRleHR1cmUzRCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRl
cnNCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJzKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJEUGFyYW1ldGVycyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVFUzNDb3B5VGV4SW1hZ2UzRFBhcmFtZXRlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
RVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVTM1Rl
eFN0b3JhZ2UyRFBhcmFtZXRlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRVMzVGV4U3RvcmFn
ZTNEUGFyYW1ldGVycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCZWdpblF1ZXJ5KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUVuZFF1ZXJ5KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFF1ZXJ5
aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDbGVhckJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVHZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJlYWRCdWZmZXIpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVCaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSXNWZXJ0ZXhB
cnJheSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCaW5kQnVmZmVyQ29tbW9uKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUJpbmRCdWZmZXJCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRC
dWZmZXJSYW5nZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtQmluYXJ5KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
UHJvZ3JhbVBhcmFtZXRlcmkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmxpdEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlQ2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJCdWZmZXJm
dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZURyYXdCdWZmZXJzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXhTdWJJbWFn
ZTNEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXh0dXJlM0RBTkdMRSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVDb3B5U3ViVGV4dHVyZTNEQU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlVGV4SW1hZ2UzRCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5H
TEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
Q29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29tcHJlc3Nl
ZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZW5RdWVy
aWVzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlR2VuU2FtcGxlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlU2FtcGxl
cnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuVHJhbnNmb3JtRmVlZGJhY2tzKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZURlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlVmVy
dGV4QXJyYXlzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVVbm1hcEJ1ZmZlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXBCdWZmZXJSYW5nZSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdl
dEludGVnZXJpX3YpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0SW50ZWdlcmlfdlJvYnVzdEFO
R0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEludGVnZXI2NGlfdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVDb3B5QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTdHJpbmdp
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRTeW5jaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRz
SW5zdGFuY2VkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0
YW5jZUFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aURy
YXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybTF1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVV
bmlmb3JtMnVpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0zdWkpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlVW5pZm9ybTR1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtMXVp
dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtMnVpdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVVbmlmb3JtM3Vpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtNHVpdik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVJc1F1ZXJ5KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgyeDNmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlm
b3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4M2Z2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChnbDo6VmFsaWRhdGVJc1RyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBhdXNlVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliSTRpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZl
cnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliSTRpdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVHZXRGcmFnRGF0YUxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFVu
aWZvcm1JbmRpY2VzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1zaXYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlm
b3JtQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5j
ZWQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRmVuY2VTeW5jKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUlzU3luYyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEZWxldGVTeW5jKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVdhaXRT
eW5jKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEludGVnZXI2NHYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlSXNTYW1wbGVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRTYW1wbGVyKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlVGV4U3RvcmFnZTJEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleFN0b3JhZ2Uz
RCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0U2Ft
cGxlclBhcmFtZXRlcklpdk9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRTYW1wbGVyUGFy
YW1ldGVySXVpdk9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2FtcGxl
clBhcmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXZP
RVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZPRVMpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldFZlcnRleEF0dHJpYkl1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0SW50ZXJu
YWxmb3JtYXRpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbklu
ZGV4ZWRFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25FWFQp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0RnJhZ0RhdGFJbmRleEVYVCk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0
TXVsdGlzYW1wbGVmdkFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNhbXBsZU1hc2tpQU5H
TEUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmNwcDoKKyAgICAgICAgKGdsOjplcnI6OlZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0pOgorICAgICAgICAoZ2w6OmVycjo6VmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybU1hdHJpeCk6CisgICAgICAgIChnbDo6ZXJyOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1h
dENvbW1vbik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRCb29sZWFuaV92KToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVEcmF3SW5kaXJlY3RCYXNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdBcnJheXNJ
bmRpcmVjdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtMmkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0zaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMXVpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtMnVpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3Vp
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0yZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGYpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0xaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0yaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm0xdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MnVpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aXYpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMWZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2Z2KToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4M2Z2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
NGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFt
VW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFRleExldmVsUGFy
YW1ldGVyZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0
TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZyYW1lYnVm
ZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFt
ZXRlcml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VJbmRl
eCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCaW5kVmVydGV4QnVmZmVyKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZl
cnRleEF0dHJpYkZvcm1hdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJRm9y
bWF0KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkJpbmRpbmcpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVEaXNwYXRjaENvbXB1dGUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGlzcGF0Y2hDb21w
dXRlSW5kaXJlY3QpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmluZEltYWdlVGV4dHVyZSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2Vpdik6CisgICAgICAgIChnbDo6VmFsaWRh
dGVHZXRQcm9ncmFtSW50ZXJmYWNlaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UHJvZ3Jh
bUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2VuT3JEZWxl
dGVFUzMxKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdlblByb2dyYW1QaXBlbGluZXMpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVCaW5kUHJvZ3JhbVBpcGVsaW5lKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUlzUHJv
Z3JhbVBpcGVsaW5lKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVzZVByb2dyYW1TdGFnZXMpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQWN0aXZlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVDcmVhdGVTaGFkZXJQcm9ncmFtdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQ
cm9ncmFtUGlwZWxpbmVpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWYWxpZGF0ZVByb2dyYW1Q
aXBlbGluZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9n
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU1lbW9yeUJhcnJpZXIpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlTWVtb3J5QmFycmllckJ5UmVnaW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNhbXBs
ZU1hc2tpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUVYVCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9FUyk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVCk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKToKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzFfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRVMzMi5jcHA6CisgICAgICAgIChnbDo6VmFsaWRhdGVCbGVuZEJh
cnJpZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVCbGVuZEVxdWF0aW9uaSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVCbGVuZEZ1bmNTZXBhcmF0ZWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmxlbmRGdW5jaSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvck1hc2tpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUNvcHlJbWFnZVN1YkRhdGEpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVidWdNZXNzYWdlQ2Fs
bGJhY2spOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlRGlzYWJsZWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRl
eCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVFbmFibGVpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2cp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1cyk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVHZXRPYmplY3RMYWJlbCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRP
YmplY3RQdHJMYWJlbCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQb2ludGVydik6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySWl2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdl
dFRleFBhcmFtZXRlcklpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJ
dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldG5Vbmlmb3JtZnYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlR2V0blVuaWZvcm1pdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRuVW5pZm9y
bXVpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVJc0VuYWJsZWRpKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZU1pblNhbXBsZVNoYWRpbmcpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlT2JqZWN0TGFi
ZWwpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlT2JqZWN0UHRyTGFiZWwpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlUGF0Y2hQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBvcERlYnVn
R3JvdXApOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJpbWl0aXZlQm91bmRpbmdCb3gpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlUHVzaERlYnVnR3JvdXApOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
UmVhZG5QaXhlbHMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVUZXhCdWZmZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4QnVmZmVyUmFu
Z2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4UGFyYW1ldGVySWl2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4U3Rv
cmFnZTNETXVsdGlzYW1wbGUpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMz
Ml9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzNfYXV0b2dl
bi5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFQuY3BwOgorICAgICAg
ICAoZ2w6OmVycjo6VmFsaWRhdGVHZXRJbWFnZUZvcm1hdEFuZFR5cGUpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlR2V0VGV4SW1hZ2VBTkdMRSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRSZW5k
ZXJidWZmZXJJbWFnZUFOR0xFKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0Jh
c2VWZXJ0ZXhFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QmFzZVZlcnRleEVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jh
c2VWZXJ0ZXhFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNl
VmVydGV4RVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhP
RVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRl
eE9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhP
RVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVCbGVuZEVxdWF0aW9uaUVYVCk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmxlbmRG
dW5jaUVYVCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvck1hc2tpRVhUKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZURpc2FibGVpRVhUKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVuYWJsZWlF
WFQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSXNFbmFibGVkaUVYVCk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUJsZW5kRXF1YXRpb25pT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJsZW5kRnVuY1NlcGFy
YXRlaU9FUyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCbGVuZEZ1bmNpT0VTKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUNvbG9yTWFza2lPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGlzYWJs
ZWlPRVMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRW5hYmxlaU9FUyk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVJc0VuYWJsZWRpT0VTKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEludGVnZXI2
NHZFWFQpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFRfYXV0b2dlbi5o
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxLmNwcDoKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUFjY3VtKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJlZ2luKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUJpdG1hcCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDYWxsTGlzdCk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVDYWxsTGlzdHMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xl
YXJBY2N1bSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDbGVhckRlcHRoKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUNsZWFySW5kZXgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xpcFBsYW5lKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yM2IpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29s
b3IzYnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29sb3IzZCk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVDb2xvcjNkdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjNmKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUNvbG9yM2Z2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yM2kpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQ29sb3IzaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29s
b3Izcyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjNzdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVDb2xvcjN1Yik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjN1YnYpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlQ29sb3IzdWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29sb3IzdWl2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yM3VzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUNvbG9yM3Vzdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjRiKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUNvbG9yNGJ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yNGQpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlQ29sb3I0ZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29sb3I0
ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29sb3I0aSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVDb2xvcjRpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjRzKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUNvbG9yNHN2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yNHVidik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVDb2xvcjR1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDb2xv
cjR1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29sb3I0dXMpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlQ29sb3I0dXN2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yTWF0ZXJpYWwpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQ29weVBpeGVscyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVE
ZWxldGVMaXN0cyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEZXB0aFJhbmdlKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZURyYXdCdWZmZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd1BpeGVs
cyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVFZGdlRmxhZyk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVFZGdlRmxhZ3YpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRW5kKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUVuZExpc3QpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRXZhbENvb3JkMWQpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlRXZhbENvb3JkMWR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUV2
YWxDb29yZDFmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUV2YWxDb29yZDFmdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVFdmFsQ29vcmQyZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVFdmFsQ29v
cmQyZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRXZhbENvb3JkMmYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlRXZhbENvb3JkMmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUV2YWxNZXNoMSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVFdmFsTWVzaDIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
RXZhbFBvaW50MSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVFdmFsUG9pbnQyKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUZlZWRiYWNrQnVmZmVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZvZ2kp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlRm9naXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRnJ1
c3R1bSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZW5MaXN0cyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVHZXRDbGlwUGxhbmUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0RG91Ymxldik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRMaWdodGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdl
dE1hcGR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldE1hcGZ2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUdldE1hcGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldE1hdGVyaWFsaXYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UGl4ZWxNYXBmdik6CisgICAgICAgIChnbDo6VmFsaWRh
dGVHZXRQaXhlbE1hcHVpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQaXhlbE1hcHVzdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRQb2x5Z29uU3RpcHBsZSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVHZXRUZXhHZW5kdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhHZW5mdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXhHZW5pdik6CisgICAgICAgIChnbDo6VmFsaWRh
dGVHZXRUZXhJbWFnZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVJbmRleE1hc2spOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlSW5kZXhkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUluZGV4ZHYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlSW5kZXhmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUluZGV4
ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSW5kZXhpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUluZGV4aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSW5kZXhzKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUluZGV4c3YpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSW5pdE5hbWVzKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUlzTGlzdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVMaWdodE1vZGVs
aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVMaWdodE1vZGVsaXYpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlTGlnaHRpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxpZ2h0aXYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlTGluZVN0aXBwbGUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTGlzdEJhc2Up
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlTG9hZE1hdHJpeGQpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlTG9hZE5hbWUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWFwMWQpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlTWFwMWYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWFwMmQpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlTWFwMmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWFwR3JpZDFkKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZU1hcEdyaWQxZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXBH
cmlkMmQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTWFwR3JpZDJmKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZU1hdGVyaWFsaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXRlcmlhbGl2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZU11bHRNYXRyaXhkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5l
d0xpc3QpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTm9ybWFsM2IpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlTm9ybWFsM2J2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5vcm1hbDNkKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZU5vcm1hbDNkdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVOb3JtYWwz
ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTm9ybWFsM2kpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlTm9ybWFsM2l2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5vcm1hbDNzKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZU5vcm1hbDNzdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVPcnRobyk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVQYXNzVGhyb3VnaCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQ
aXhlbE1hcGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBpeGVsTWFwdWl2KToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVBpeGVsTWFwdXN2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBpeGVsU3Rv
cmVmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBpeGVsVHJhbnNmZXJmKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVBpeGVsVHJhbnNmZXJpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBpeGVsWm9v
bSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb2x5Z29uTW9kZSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVQb2x5Z29uU3RpcHBsZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb3BBdHRyaWIpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlUG9wTmFtZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQdXNo
QXR0cmliKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVB1c2hOYW1lKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVJhc3RlclBvczJkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJhc3RlclBvczJkdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVSYXN0ZXJQb3MyZik6CisgICAgICAgIChnbDo6VmFsaWRh
dGVSYXN0ZXJQb3MyZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmFzdGVyUG9zMmkpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlUmFzdGVyUG9zMml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJh
c3RlclBvczJzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJhc3RlclBvczJzdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVSYXN0ZXJQb3MzZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVSYXN0ZXJQ
b3MzZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmFzdGVyUG9zM2YpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlUmFzdGVyUG9zM2Z2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJhc3RlclBvczNp
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJhc3RlclBvczNpdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVSYXN0ZXJQb3Mzcyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVSYXN0ZXJQb3Mzc3YpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlUmFzdGVyUG9zNGQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
UmFzdGVyUG9zNGR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJhc3RlclBvczRmKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVJhc3RlclBvczRmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVSYXN0
ZXJQb3M0aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVSYXN0ZXJQb3M0aXYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlUmFzdGVyUG9zNHMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmFzdGVyUG9z
NHN2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJlY3RkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZVJlY3Rkdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVSZWN0Zik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVSZWN0ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUmVjdGkpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlUmVjdGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVJlY3RzKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVJlY3Rzdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVSZW5kZXJNb2RlKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVJvdGF0ZWQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Nh
bGVkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNlbGVjdEJ1ZmZlcik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVUZXhDb29yZDFkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkMWR2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkMWYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VGV4Q29vcmQxZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4Q29vcmQxaSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVUZXhDb29yZDFpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29y
ZDFzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkMXN2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVRleENvb3JkMmQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4Q29vcmQyZHYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4Q29vcmQyZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVU
ZXhDb29yZDJmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZDJpKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVRleENvb3JkMml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3Jk
MnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4Q29vcmQyc3YpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlVGV4Q29vcmQzZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZDNkdik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZDNmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRl
eENvb3JkM2Z2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkM2kpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlVGV4Q29vcmQzaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4Q29vcmQz
cyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZDNzdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVUZXhDb29yZDRkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkNGR2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkNGYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4
Q29vcmQ0ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4Q29vcmQ0aSk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVUZXhDb29yZDRpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZDRz
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkNHN2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVRleEdlbmQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4R2VuZHYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlVGV4R2VuZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhHZW5mdik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVUZXhHZW5pKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEdl
bml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleEltYWdlMUQpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlVHJhbnNsYXRlZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXgyZCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXgyZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4
MmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4MmZ2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVZlcnRleDJpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleDJpdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVWZXJ0ZXgycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXgyc3Yp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4M2QpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VmVydGV4M2R2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleDNmKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVZlcnRleDNmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXgzaSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXgzaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVy
dGV4M3MpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4M3N2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVZlcnRleDRkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleDRkdik6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXg0Zik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXg0
ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4NGkpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlVmVydGV4NGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleDRzKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVZlcnRleDRzdik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDExLmNwcDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUFyZVRleHR1cmVzUmVzaWRlbnQpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQXJyYXlFbGVtZW50KToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUNvcHlUZXhJbWFnZTFEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTFE
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUVkZ2VGbGFnUG9pbnRlcik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVJbmRleFBvaW50ZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSW5kZXh1Yik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVJbmRleHVidik6CisgICAgICAgIChnbDo6VmFsaWRhdGVJbnRl
cmxlYXZlZEFycmF5cyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQb3BDbGllbnRBdHRyaWIpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlUHJpb3JpdGl6ZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVB1c2hDbGllbnRBdHRyaWIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4U3ViSW1h
Z2UxRCk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDExX2F1dG9nZW4uaDoK
KyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTMuY3BwOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMUQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkltYWdlMUQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0Q29tcHJlc3Nl
ZFRleEltYWdlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhkKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhmKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZU11bHRUcmFuc3Bvc2VNYXRyaXhkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11
bHRUcmFuc3Bvc2VNYXRyaXhmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQx
ZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkMWR2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRl
eENvb3JkMWZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQxaSk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkMWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZU11bHRpVGV4Q29vcmQxcyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkMXN2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZCk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVNdWx0aVRleENvb3JkMmR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4
Q29vcmQyZik6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkMmZ2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQyaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVN
dWx0aVRleENvb3JkMml2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQycyk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkMnN2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZU11bHRpVGV4Q29vcmQzZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENv
b3JkM2R2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkM2Z2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11
bHRpVGV4Q29vcmQzaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkM2l2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQzcyk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVNdWx0aVRleENvb3JkM3N2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29v
cmQ0ZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENvb3JkNGR2KToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTXVs
dGlUZXhDb29yZDRpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0aXYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlUZXhDb29yZDRzKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZU11bHRpVGV4Q29vcmQ0c3YpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0wxM19hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0LmNw
cDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUZvZ0Nvb3JkUG9pbnRlcik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVGb2dDb29yZGQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRm9nQ29vcmRkdik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVGb2dDb29yZGYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRm9n
Q29vcmRmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aURyYXdBcnJheXMpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
UG9pbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVBvaW50UGFyYW1ldGVyaXYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzYik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNidik6CisgICAgICAgIChnbDo6VmFsaWRhdGVTZWNvbmRh
cnlDb2xvcjNkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2R2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2YpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlU2Vjb25kYXJ5Q29sb3IzZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNpdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNl
Y29uZGFyeUNvbG9yM3N2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3Vi
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3Vidik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTZWNv
bmRhcnlDb2xvcjN1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdXMp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdXN2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUG9pbnRlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVX
aW5kb3dQb3MyZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVXaW5kb3dQb3MyZHYpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlV2luZG93UG9zMmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlV2luZG93
UG9zMmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVdpbmRvd1BvczJpKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVdpbmRvd1BvczJpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVXaW5kb3dQb3My
cyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVXaW5kb3dQb3Myc3YpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlV2luZG93UG9zM2QpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlV2luZG93UG9zM2R2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVdpbmRvd1BvczNmKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZVdpbmRvd1BvczNmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVXaW5kb3dQb3MzaSk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVXaW5kb3dQb3MzaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlV2lu
ZG93UG9zM3MpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlV2luZG93UG9zM3N2KToKKyAgICAgICAg
KiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTRfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9s
aWJBTkdMRS92YWxpZGF0aW9uR0wxNS5jcHA6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXYpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlTWFwQnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkdMMTVfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0wxX2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMi5jcHA6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJkdik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRy
aWIxZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliMXMpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlVmVydGV4QXR0cmliMXN2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRl
eEF0dHJpYjJkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjJkdik6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWIycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVW
ZXJ0ZXhBdHRyaWIyc3YpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliM2QpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliM2R2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjNz
dik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TmJ2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVZlcnRleEF0dHJpYjROaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4
QXR0cmliNE5zdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnViKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjROdWJ2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVZlcnRleEF0dHJpYjROdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJp
YjROdXN2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjRidik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0
ZXhBdHRyaWI0ZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliNGl2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjRzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZVZlcnRleEF0dHJpYjRzdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWJ2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYjR1aXYpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlVmVydGV4QXR0cmliNHVzdik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDJfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wz
LmNwcDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJlZ2luQ29uZGl0aW9uYWxSZW5kZXIpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb24pOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlQ2xhbXBDb2xvcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVFbmRDb25kaXRpb25hbFJl
bmRlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUxRCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRCk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJMWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmli
STFpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMXVpKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkkxdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZl
cnRleEF0dHJpYkkyaSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMml2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkkydWkpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlVmVydGV4QXR0cmliSTJ1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0
cmliSTNpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkkzaXYpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliSTN1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJM3Vpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGJ2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkk0c3YpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlVmVydGV4QXR0cmliSTR1YnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4
QXR0cmliSTR1c3YpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMS5jcHA6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtTmFtZSk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVQcmltaXRpdmVSZXN0YXJ0SW5kZXgpOgorICAgICAgICAqIHNyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0wzMV9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDMyLmNwcDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFz
ZVZlcnRleCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXgpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlVGV4SW1hZ2UyRE11bHRpc2FtcGxlKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVRleEltYWdlM0RNdWx0aXNhbXBsZSk6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDMyX2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
MzMuY3BwOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVk
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yUDN1aSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVDb2xvclAzdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvbG9yUDR1aSk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVDb2xvclA0dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEZyYWdE
YXRhSW5kZXgpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHYpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlTXVsdGlUZXhDb29yZFAxdWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlUZXhD
b29yZFAxdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMnVpKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMnVpdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVNdWx0aVRleENvb3JkUDN1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aVRleENv
b3JkUDN1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWkpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWl2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZU5vcm1hbFAzdWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTm9ybWFsUDN1aXYpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlUXVlcnlDb3VudGVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVNl
Y29uZGFyeUNvbG9yUDN1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVTZWNvbmRhcnlDb2xvclAz
dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkUDF1aSk6CisgICAgICAgIChnbDo6
VmFsaWRhdGVUZXhDb29yZFAxdWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkUDJ1
aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZFAydWl2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVRleENvb3JkUDN1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVUZXhDb29yZFAzdWl2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleENvb3JkUDR1aSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVUZXhDb29yZFA0dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYlAx
dWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0cmliUDF1aXYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlVmVydGV4QXR0cmliUDJ1aSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0
ZXhBdHRyaWJQMnVpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJQM3VpKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYlAzdWl2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVZlcnRleEF0dHJpYlA0dWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXR0
cmliUDR1aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4UDJ1aSk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVWZXJ0ZXhQMnVpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhQM3Vp
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleFAzdWl2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVZlcnRleFA0dWkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4UDR1aXYpOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzM19hdXRvZ2VuLmg6CisgICAgICAgICog
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDNfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0w0LmNwcDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJlZ2luUXVlcnlJ
bmRleGVkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0pOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlRW5kUXVlcnlJbmRleGVkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdl
dEFjdGl2ZVN1YnJvdXRpbmVOYW1lKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEFjdGl2ZVN1
YnJvdXRpbmVVbmlmb3JtTmFtZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRBY3RpdmVTdWJy
b3V0aW5lVW5pZm9ybWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFByb2dyYW1TdGFnZWl2
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFF1ZXJ5SW5kZXhlZGl2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRT
dWJyb3V0aW5lVW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFVuaWZv
cm1TdWJyb3V0aW5ldWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFVuaWZvcm1kdik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVQYXRjaFBhcmFtZXRlcmZ2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZVVuaWZvcm0xZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtMWR2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0yZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3Jt
MmR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm0zZCk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVVbmlmb3JtM2R2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm00ZCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtNGR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgyZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4M2R2KToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRkdik6CisgICAgICAgIChnbDo6
VmFsaWRhdGVVbmlmb3JtTWF0cml4M2R2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm1N
YXRyaXgzeDJkdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZHYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1hdHJpeDRkdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVVbmlmb3JtTWF0cml4NHgyZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVW5pZm9ybU1h
dHJpeDR4M2R2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVVuaWZvcm1TdWJyb3V0aW5lc3Vpdik6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQxLmNwcDoKKyAgICAgICAgKGds
OjpWYWxpZGF0ZURlcHRoUmFuZ2VBcnJheXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRGVwdGhS
YW5nZUluZGV4ZWQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0RG91YmxlaV92KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZUdldEZsb2F0aV92KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYkxkdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFkKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWR2KToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0yZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNkdik6CisgICAgICAgIChnbDo6VmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTRkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
NGR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZHYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdik6CisgICAgICAgIChnbDo6VmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9n
cmFtVW5pZm9ybU1hdHJpeDN4MmR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4M3g0ZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0ZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2KToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVNjaXNzb3JBcnJheXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Np
c3NvckluZGV4ZWQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlU2Npc3NvckluZGV4ZWR2KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkwxZCk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVWZXJ0ZXhBdHRyaWJMMWR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkwy
ZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMmR2KToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhB
dHRyaWJMM2R2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkw0ZCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBdHRyaWJMNGR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZVZlcnRleEF0dHJpYkxQb2ludGVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZpZXdwb3J0QXJy
YXl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZpZXdwb3J0SW5kZXhlZGYpOgorICAgICAgICAo
Z2w6OlZhbGlkYXRlVmlld3BvcnRJbmRleGVkZnYpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0w0MV9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDQyLmNwcDoKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNl
SW5zdGFuY2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFz
ZUluc3RhbmNlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXhCYXNlSW5zdGFuY2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRHJhd1RyYW5zZm9y
bUZlZWRiYWNrSW5zdGFuY2VkKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZURyYXdUcmFuc2Zvcm1G
ZWVkYmFja1N0cmVhbUluc3RhbmNlZCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRBY3RpdmVB
dG9taWNDb3VudGVyQnVmZmVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4U3RvcmFnZTFE
KToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDJfYXV0b2dlbi5oOgorICAg
ICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0My5jcHA6CisgICAgICAgIChnbDo6VmFs
aWRhdGVDbGVhckJ1ZmZlckRhdGEpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJCdWZmZXJT
dWJEYXRhKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aTY0dik6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4KToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUludmFsaWRhdGVCdWZmZXJEYXRhKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUludmFsaWRhdGVCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUlu
dmFsaWRhdGVUZXhJbWFnZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVJbnZhbGlkYXRlVGV4U3Vi
SW1hZ2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3QpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbmRpcmVjdCk6CisgICAgICAg
IChnbDo6VmFsaWRhdGVTaGFkZXJTdG9yYWdlQmxvY2tCaW5kaW5nKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVRleHR1cmVWaWV3KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEF0dHJpYkxG
b3JtYXQpOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0M19hdXRvZ2VuLmg6
CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ0LmNwcDoKKyAgICAgICAgKGds
OjpWYWxpZGF0ZUJpbmRCdWZmZXJzQmFzZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCaW5kQnVm
ZmVyc1JhbmdlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmVzKToKKyAg
ICAgICAgKGdsOjpWYWxpZGF0ZUJpbmRTYW1wbGVycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVC
aW5kVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcnMpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlQnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVDbGVhclRleEltYWdlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNsZWFyVGV4U3ViSW1hZ2Up
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NF9hdXRvZ2VuLmg6CisgICAg
ICAgICogc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ1LmNwcDoKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUJpbmRUZXh0dXJlVW5pdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVCbGl0TmFtZWRGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVDaGVja05hbWVkRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlckRhdGEpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZmkpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xl
YXJOYW1lZEZyYW1lYnVmZmVyZnYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJOYW1lZEZy
YW1lYnVmZmVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVy
dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNsaXBDb250cm9sKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UxRCk6CisgICAgICAgIChnbDo6VmFsaWRh
dGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMkQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29t
cHJlc3NlZFRleHR1cmVTdWJJbWFnZTNEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlOYW1l
ZEJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFn
ZTFEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UyRCk6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlM0QpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlQ3JlYXRlQnVmZmVycyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVDcmVhdGVGcmFtZWJ1
ZmZlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ3JlYXRlUHJvZ3JhbVBpcGVsaW5lcyk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVDcmVhdGVRdWVyaWVzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUNyZWF0ZVJlbmRlcmJ1ZmZlcnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ3JlYXRlU2FtcGxl
cnMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlQ3JlYXRlVGV4dHVyZXMpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2tzKToKKyAgICAgICAgKGdsOjpWYWxpZGF0
ZUNyZWF0ZVZlcnRleEFycmF5cyk6CisgICAgICAgIChnbDo6VmFsaWRhdGVEaXNhYmxlVmVydGV4
QXJyYXlBdHRyaWIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRW5hYmxlVmVydGV4QXJyYXlBdHRy
aWIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlRmx1c2hNYXBwZWROYW1lZEJ1ZmZlclJhbmdlKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZUdlbmVyYXRlVGV4dHVyZU1pcG1hcCk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4dHVyZUltYWdlKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldENvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
R2V0TmFtZWRCdWZmZXJQYXJhbWV0ZXJpNjR2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldE5h
bWVkQnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0TmFtZWRCdWZm
ZXJQb2ludGVydik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXROYW1lZEJ1ZmZlclN1YkRhdGEp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0TmFtZWRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXROYW1lZEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0TmFtZWRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGk2NHYpOgor
ICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3Rpdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVpNjR2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFRl
eHR1cmVJbWFnZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXh0dXJlTGV2ZWxQYXJhbWV0
ZXJmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXh0dXJlTGV2ZWxQYXJhbWV0ZXJpdik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVySWl2KToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZUdldFRleHR1cmVQYXJhbWV0ZXJJdWl2KToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldFRleHR1cmVQYXJhbWV0ZXJmdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRUZXh0
dXJlUGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0VGV4dHVyZVN1YkltYWdl
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNraTY0X3YpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpX3YpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpdik6CisgICAgICAgIChnbDo6VmFsaWRhdGVH
ZXRWZXJ0ZXhBcnJheUluZGV4ZWQ2NGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFZlcnRl
eEFycmF5SW5kZXhlZGl2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldFZlcnRleEFycmF5aXYp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0bkNvbG9yVGFibGUpOgorICAgICAgICAoZ2w6OlZh
bGlkYXRlR2V0bkNvbXByZXNzZWRUZXhJbWFnZSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRu
Q29udm9sdXRpb25GaWx0ZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0bkhpc3RvZ3JhbSk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVHZXRuTWFwZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
R2V0bk1hcGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldG5NYXBpdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRuTWlubWF4KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldG5QaXhlbE1h
cGZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldG5QaXhlbE1hcHVpdik6CisgICAgICAgIChn
bDo6VmFsaWRhdGVHZXRuUGl4ZWxNYXB1c3YpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0blBv
bHlnb25TdGlwcGxlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUdldG5TZXBhcmFibGVGaWx0ZXIp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlR2V0blRleEltYWdlKToKKyAgICAgICAgKGdsOjpWYWxp
ZGF0ZUdldG5Vbmlmb3JtZHYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlSW52YWxpZGF0ZU5hbWVk
RnJhbWVidWZmZXJEYXRhKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZUludmFsaWRhdGVOYW1lZEZy
YW1lYnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXBOYW1lZEJ1ZmZlcik6
CisgICAgICAgIChnbDo6VmFsaWRhdGVNYXBOYW1lZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGds
OjpWYWxpZGF0ZU5hbWVkQnVmZmVyRGF0YSk6CisgICAgICAgIChnbDo6VmFsaWRhdGVOYW1lZEJ1
ZmZlclN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTmFtZWRCdWZmZXJTdWJEYXRhKToK
KyAgICAgICAgKGdsOjpWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVyKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVycyk6CisgICAgICAgIChn
bDo6VmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnbDo6VmFs
aWRhdGVOYW1lZEZyYW1lYnVmZmVyUmVhZEJ1ZmZlcik6CisgICAgICAgIChnbDo6VmFsaWRhdGVO
YW1lZEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5hbWVk
RnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5hbWVkRnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlTmFtZWRSZW5kZXJidWZmZXJT
dG9yYWdlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVCYXJyaWVyKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVCdWZmZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4
dHVyZUJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJJ
aXYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlckl1aXYpOgorICAgICAg
ICAoZ2w6OlZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmYpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VGV4dHVyZVBhcmFtZXRlcmZ2KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVQYXJhbWV0
ZXJpKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJpdik6CisgICAgICAg
IChnbDo6VmFsaWRhdGVUZXh0dXJlU3RvcmFnZTFEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRl
eHR1cmVTdG9yYWdlMkQpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UyRE11
bHRpc2FtcGxlKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0QpOgorICAg
ICAgICAoZ2w6OlZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKToKKyAgICAgICAg
KGdsOjpWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTFEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRl
eHR1cmVTdWJJbWFnZTJEKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTNE
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQmFzZSk6Cisg
ICAgICAgIChnbDo6VmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclJhbmdlKToKKyAgICAg
ICAgKGdsOjpWYWxpZGF0ZVVubWFwTmFtZWRCdWZmZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VmVydGV4QXJyYXlBdHRyaWJCaW5kaW5nKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEFy
cmF5QXR0cmliRm9ybWF0KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmli
SUZvcm1hdCk6CisgICAgICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJpYkxGb3JtYXQp
OgorICAgICAgICAoZ2w6OlZhbGlkYXRlVmVydGV4QXJyYXlCaW5kaW5nRGl2aXNvcik6CisgICAg
ICAgIChnbDo6VmFsaWRhdGVWZXJ0ZXhBcnJheUVsZW1lbnRCdWZmZXIpOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlVmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAoZ2w6OlZhbGlkYXRl
VmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXJzKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDVfYXV0b2dlbi5oOgorICAgICAgICAqIHNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0
Ni5jcHA6CisgICAgICAgIChnbDo6VmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdENvdW50
KToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3VudCk6
CisgICAgICAgIChnbDo6VmFsaWRhdGVQb2x5Z29uT2Zmc2V0Q2xhbXApOgorICAgICAgICAoZ2w6
OlZhbGlkYXRlU3BlY2lhbGl6ZVNoYWRlcik6CisgICAgICAgICogc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDQ2X2F1dG9nZW4uaDoKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
NF9hdXRvZ2VuLmg6CisgICAgICAgICogc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzBfYXV0
b2dlbi5jcHA6CisgICAgICAgIChnbDo6QWNjdW0pOgorICAgICAgICAoZ2w6OkFscGhhRnVuYyk6
CisgICAgICAgIChnbDo6QmVnaW4pOgorICAgICAgICAoZ2w6OkJpdG1hcCk6CisgICAgICAgIChn
bDo6QmxlbmRGdW5jKToKKyAgICAgICAgKGdsOjpDYWxsTGlzdCk6CisgICAgICAgIChnbDo6Q2Fs
bExpc3RzKToKKyAgICAgICAgKGdsOjpDbGVhcik6CisgICAgICAgIChnbDo6Q2xlYXJBY2N1bSk6
CisgICAgICAgIChnbDo6Q2xlYXJDb2xvcik6CisgICAgICAgIChnbDo6Q2xlYXJEZXB0aCk6Cisg
ICAgICAgIChnbDo6Q2xlYXJJbmRleCk6CisgICAgICAgIChnbDo6Q2xlYXJTdGVuY2lsKToKKyAg
ICAgICAgKGdsOjpDbGlwUGxhbmUpOgorICAgICAgICAoZ2w6OkNvbG9yM2IpOgorICAgICAgICAo
Z2w6OkNvbG9yM2J2KToKKyAgICAgICAgKGdsOjpDb2xvcjNkKToKKyAgICAgICAgKGdsOjpDb2xv
cjNkdik6CisgICAgICAgIChnbDo6Q29sb3IzZik6CisgICAgICAgIChnbDo6Q29sb3IzZnYpOgor
ICAgICAgICAoZ2w6OkNvbG9yM2kpOgorICAgICAgICAoZ2w6OkNvbG9yM2l2KToKKyAgICAgICAg
KGdsOjpDb2xvcjNzKToKKyAgICAgICAgKGdsOjpDb2xvcjNzdik6CisgICAgICAgIChnbDo6Q29s
b3IzdWIpOgorICAgICAgICAoZ2w6OkNvbG9yM3Vidik6CisgICAgICAgIChnbDo6Q29sb3IzdWkp
OgorICAgICAgICAoZ2w6OkNvbG9yM3Vpdik6CisgICAgICAgIChnbDo6Q29sb3IzdXMpOgorICAg
ICAgICAoZ2w6OkNvbG9yM3Vzdik6CisgICAgICAgIChnbDo6Q29sb3I0Yik6CisgICAgICAgIChn
bDo6Q29sb3I0YnYpOgorICAgICAgICAoZ2w6OkNvbG9yNGQpOgorICAgICAgICAoZ2w6OkNvbG9y
NGR2KToKKyAgICAgICAgKGdsOjpDb2xvcjRmKToKKyAgICAgICAgKGdsOjpDb2xvcjRmdik6Cisg
ICAgICAgIChnbDo6Q29sb3I0aSk6CisgICAgICAgIChnbDo6Q29sb3I0aXYpOgorICAgICAgICAo
Z2w6OkNvbG9yNHMpOgorICAgICAgICAoZ2w6OkNvbG9yNHN2KToKKyAgICAgICAgKGdsOjpDb2xv
cjR1Yik6CisgICAgICAgIChnbDo6Q29sb3I0dWJ2KToKKyAgICAgICAgKGdsOjpDb2xvcjR1aSk6
CisgICAgICAgIChnbDo6Q29sb3I0dWl2KToKKyAgICAgICAgKGdsOjpDb2xvcjR1cyk6CisgICAg
ICAgIChnbDo6Q29sb3I0dXN2KToKKyAgICAgICAgKGdsOjpDb2xvck1hc2spOgorICAgICAgICAo
Z2w6OkNvbG9yTWF0ZXJpYWwpOgorICAgICAgICAoZ2w6OkNvcHlQaXhlbHMpOgorICAgICAgICAo
Z2w6OkN1bGxGYWNlKToKKyAgICAgICAgKGdsOjpEZWxldGVMaXN0cyk6CisgICAgICAgIChnbDo6
RGVwdGhGdW5jKToKKyAgICAgICAgKGdsOjpEZXB0aE1hc2spOgorICAgICAgICAoZ2w6OkRlcHRo
UmFuZ2UpOgorICAgICAgICAoZ2w6OkRpc2FibGUpOgorICAgICAgICAoZ2w6OkRyYXdCdWZmZXIp
OgorICAgICAgICAoZ2w6OkRyYXdQaXhlbHMpOgorICAgICAgICAoZ2w6OkVkZ2VGbGFnKToKKyAg
ICAgICAgKGdsOjpFZGdlRmxhZ3YpOgorICAgICAgICAoZ2w6OkVuYWJsZSk6CisgICAgICAgIChn
bDo6RW5kKToKKyAgICAgICAgKGdsOjpFbmRMaXN0KToKKyAgICAgICAgKGdsOjpFdmFsQ29vcmQx
ZCk6CisgICAgICAgIChnbDo6RXZhbENvb3JkMWR2KToKKyAgICAgICAgKGdsOjpFdmFsQ29vcmQx
Zik6CisgICAgICAgIChnbDo6RXZhbENvb3JkMWZ2KToKKyAgICAgICAgKGdsOjpFdmFsQ29vcmQy
ZCk6CisgICAgICAgIChnbDo6RXZhbENvb3JkMmR2KToKKyAgICAgICAgKGdsOjpFdmFsQ29vcmQy
Zik6CisgICAgICAgIChnbDo6RXZhbENvb3JkMmZ2KToKKyAgICAgICAgKGdsOjpFdmFsTWVzaDEp
OgorICAgICAgICAoZ2w6OkV2YWxNZXNoMik6CisgICAgICAgIChnbDo6RXZhbFBvaW50MSk6Cisg
ICAgICAgIChnbDo6RXZhbFBvaW50Mik6CisgICAgICAgIChnbDo6RmVlZGJhY2tCdWZmZXIpOgor
ICAgICAgICAoZ2w6OkZpbmlzaCk6CisgICAgICAgIChnbDo6Rmx1c2gpOgorICAgICAgICAoZ2w6
OkZvZ2YpOgorICAgICAgICAoZ2w6OkZvZ2Z2KToKKyAgICAgICAgKGdsOjpGb2dpKToKKyAgICAg
ICAgKGdsOjpGb2dpdik6CisgICAgICAgIChnbDo6RnJvbnRGYWNlKToKKyAgICAgICAgKGdsOjpG
cnVzdHVtKToKKyAgICAgICAgKGdsOjpHZW5MaXN0cyk6CisgICAgICAgIChnbDo6R2V0Qm9vbGVh
bnYpOgorICAgICAgICAoZ2w6OkdldENsaXBQbGFuZSk6CisgICAgICAgIChnbDo6R2V0RG91Ymxl
dik6CisgICAgICAgIChnbDo6R2V0RXJyb3IpOgorICAgICAgICAoZ2w6OkdldEZsb2F0dik6Cisg
ICAgICAgIChnbDo6R2V0SW50ZWdlcnYpOgorICAgICAgICAoZ2w6OkdldExpZ2h0ZnYpOgorICAg
ICAgICAoZ2w6OkdldExpZ2h0aXYpOgorICAgICAgICAoZ2w6OkdldE1hcGR2KToKKyAgICAgICAg
KGdsOjpHZXRNYXBmdik6CisgICAgICAgIChnbDo6R2V0TWFwaXYpOgorICAgICAgICAoZ2w6Okdl
dE1hdGVyaWFsZnYpOgorICAgICAgICAoZ2w6OkdldE1hdGVyaWFsaXYpOgorICAgICAgICAoZ2w6
OkdldFBpeGVsTWFwZnYpOgorICAgICAgICAoZ2w6OkdldFBpeGVsTWFwdWl2KToKKyAgICAgICAg
KGdsOjpHZXRQaXhlbE1hcHVzdik6CisgICAgICAgIChnbDo6R2V0UG9seWdvblN0aXBwbGUpOgor
ICAgICAgICAoZ2w6OkdldFN0cmluZyk6CisgICAgICAgIChnbDo6R2V0VGV4RW52ZnYpOgorICAg
ICAgICAoZ2w6OkdldFRleEVudml2KToKKyAgICAgICAgKGdsOjpHZXRUZXhHZW5kdik6CisgICAg
ICAgIChnbDo6R2V0VGV4R2VuZnYpOgorICAgICAgICAoZ2w6OkdldFRleEdlbml2KToKKyAgICAg
ICAgKGdsOjpHZXRUZXhJbWFnZSk6CisgICAgICAgIChnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJm
dik6CisgICAgICAgIChnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdik6CisgICAgICAgIChnbDo6
R2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAoZ2w6OkdldFRleFBhcmFtZXRlcml2KToKKyAg
ICAgICAgKGdsOjpIaW50KToKKyAgICAgICAgKGdsOjpJbmRleE1hc2spOgorICAgICAgICAoZ2w6
OkluZGV4ZCk6CisgICAgICAgIChnbDo6SW5kZXhkdik6CisgICAgICAgIChnbDo6SW5kZXhmKToK
KyAgICAgICAgKGdsOjpJbmRleGZ2KToKKyAgICAgICAgKGdsOjpJbmRleGkpOgorICAgICAgICAo
Z2w6OkluZGV4aXYpOgorICAgICAgICAoZ2w6OkluZGV4cyk6CisgICAgICAgIChnbDo6SW5kZXhz
dik6CisgICAgICAgIChnbDo6SW5pdE5hbWVzKToKKyAgICAgICAgKGdsOjpJc0VuYWJsZWQpOgor
ICAgICAgICAoZ2w6OklzTGlzdCk6CisgICAgICAgIChnbDo6TGlnaHRNb2RlbGYpOgorICAgICAg
ICAoZ2w6OkxpZ2h0TW9kZWxmdik6CisgICAgICAgIChnbDo6TGlnaHRNb2RlbGkpOgorICAgICAg
ICAoZ2w6OkxpZ2h0TW9kZWxpdik6CisgICAgICAgIChnbDo6TGlnaHRmKToKKyAgICAgICAgKGds
OjpMaWdodGZ2KToKKyAgICAgICAgKGdsOjpMaWdodGkpOgorICAgICAgICAoZ2w6OkxpZ2h0aXYp
OgorICAgICAgICAoZ2w6OkxpbmVTdGlwcGxlKToKKyAgICAgICAgKGdsOjpMaW5lV2lkdGgpOgor
ICAgICAgICAoZ2w6Okxpc3RCYXNlKToKKyAgICAgICAgKGdsOjpMb2FkSWRlbnRpdHkpOgorICAg
ICAgICAoZ2w6OkxvYWRNYXRyaXhkKToKKyAgICAgICAgKGdsOjpMb2FkTWF0cml4Zik6CisgICAg
ICAgIChnbDo6TG9hZE5hbWUpOgorICAgICAgICAoZ2w6OkxvZ2ljT3ApOgorICAgICAgICAoZ2w6
Ok1hcDFkKToKKyAgICAgICAgKGdsOjpNYXAxZik6CisgICAgICAgIChnbDo6TWFwMmQpOgorICAg
ICAgICAoZ2w6Ok1hcDJmKToKKyAgICAgICAgKGdsOjpNYXBHcmlkMWQpOgorICAgICAgICAoZ2w6
Ok1hcEdyaWQxZik6CisgICAgICAgIChnbDo6TWFwR3JpZDJkKToKKyAgICAgICAgKGdsOjpNYXBH
cmlkMmYpOgorICAgICAgICAoZ2w6Ok1hdGVyaWFsZik6CisgICAgICAgIChnbDo6TWF0ZXJpYWxm
dik6CisgICAgICAgIChnbDo6TWF0ZXJpYWxpKToKKyAgICAgICAgKGdsOjpNYXRlcmlhbGl2KToK
KyAgICAgICAgKGdsOjpNYXRyaXhNb2RlKToKKyAgICAgICAgKGdsOjpNdWx0TWF0cml4ZCk6Cisg
ICAgICAgIChnbDo6TXVsdE1hdHJpeGYpOgorICAgICAgICAoZ2w6Ok5ld0xpc3QpOgorICAgICAg
ICAoZ2w6Ok5vcm1hbDNiKToKKyAgICAgICAgKGdsOjpOb3JtYWwzYnYpOgorICAgICAgICAoZ2w6
Ok5vcm1hbDNkKToKKyAgICAgICAgKGdsOjpOb3JtYWwzZHYpOgorICAgICAgICAoZ2w6Ok5vcm1h
bDNmKToKKyAgICAgICAgKGdsOjpOb3JtYWwzZnYpOgorICAgICAgICAoZ2w6Ok5vcm1hbDNpKToK
KyAgICAgICAgKGdsOjpOb3JtYWwzaXYpOgorICAgICAgICAoZ2w6Ok5vcm1hbDNzKToKKyAgICAg
ICAgKGdsOjpOb3JtYWwzc3YpOgorICAgICAgICAoZ2w6Ok9ydGhvKToKKyAgICAgICAgKGdsOjpQ
YXNzVGhyb3VnaCk6CisgICAgICAgIChnbDo6UGl4ZWxNYXBmdik6CisgICAgICAgIChnbDo6UGl4
ZWxNYXB1aXYpOgorICAgICAgICAoZ2w6OlBpeGVsTWFwdXN2KToKKyAgICAgICAgKGdsOjpQaXhl
bFN0b3JlZik6CisgICAgICAgIChnbDo6UGl4ZWxTdG9yZWkpOgorICAgICAgICAoZ2w6OlBpeGVs
VHJhbnNmZXJmKToKKyAgICAgICAgKGdsOjpQaXhlbFRyYW5zZmVyaSk6CisgICAgICAgIChnbDo6
UGl4ZWxab29tKToKKyAgICAgICAgKGdsOjpQb2ludFNpemUpOgorICAgICAgICAoZ2w6OlBvbHln
b25Nb2RlKToKKyAgICAgICAgKGdsOjpQb2x5Z29uU3RpcHBsZSk6CisgICAgICAgIChnbDo6UG9w
QXR0cmliKToKKyAgICAgICAgKGdsOjpQb3BNYXRyaXgpOgorICAgICAgICAoZ2w6OlBvcE5hbWUp
OgorICAgICAgICAoZ2w6OlB1c2hBdHRyaWIpOgorICAgICAgICAoZ2w6OlB1c2hNYXRyaXgpOgor
ICAgICAgICAoZ2w6OlB1c2hOYW1lKToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3MyZCk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zMmR2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3MyZik6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zMmZ2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3MyaSk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zMml2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3Mycyk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zMnN2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3MzZCk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zM2R2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3MzZik6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zM2Z2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3MzaSk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zM2l2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3Mzcyk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zM3N2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3M0ZCk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zNGR2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3M0Zik6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zNGZ2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3M0aSk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zNGl2KToKKyAgICAgICAgKGdsOjpSYXN0ZXJQb3M0cyk6CisgICAg
ICAgIChnbDo6UmFzdGVyUG9zNHN2KToKKyAgICAgICAgKGdsOjpSZWFkQnVmZmVyKToKKyAgICAg
ICAgKGdsOjpSZWFkUGl4ZWxzKToKKyAgICAgICAgKGdsOjpSZWN0ZCk6CisgICAgICAgIChnbDo6
UmVjdGR2KToKKyAgICAgICAgKGdsOjpSZWN0Zik6CisgICAgICAgIChnbDo6UmVjdGZ2KToKKyAg
ICAgICAgKGdsOjpSZWN0aSk6CisgICAgICAgIChnbDo6UmVjdGl2KToKKyAgICAgICAgKGdsOjpS
ZWN0cyk6CisgICAgICAgIChnbDo6UmVjdHN2KToKKyAgICAgICAgKGdsOjpSZW5kZXJNb2RlKToK
KyAgICAgICAgKGdsOjpSb3RhdGVkKToKKyAgICAgICAgKGdsOjpSb3RhdGVmKToKKyAgICAgICAg
KGdsOjpTY2FsZWQpOgorICAgICAgICAoZ2w6OlNjYWxlZik6CisgICAgICAgIChnbDo6U2Npc3Nv
cik6CisgICAgICAgIChnbDo6U2VsZWN0QnVmZmVyKToKKyAgICAgICAgKGdsOjpTaGFkZU1vZGVs
KToKKyAgICAgICAgKGdsOjpTdGVuY2lsRnVuYyk6CisgICAgICAgIChnbDo6U3RlbmNpbE1hc2sp
OgorICAgICAgICAoZ2w6OlN0ZW5jaWxPcCk6CisgICAgICAgIChnbDo6VGV4Q29vcmQxZCk6Cisg
ICAgICAgIChnbDo6VGV4Q29vcmQxZHYpOgorICAgICAgICAoZ2w6OlRleENvb3JkMWYpOgorICAg
ICAgICAoZ2w6OlRleENvb3JkMWZ2KToKKyAgICAgICAgKGdsOjpUZXhDb29yZDFpKToKKyAgICAg
ICAgKGdsOjpUZXhDb29yZDFpdik6CisgICAgICAgIChnbDo6VGV4Q29vcmQxcyk6CisgICAgICAg
IChnbDo6VGV4Q29vcmQxc3YpOgorICAgICAgICAoZ2w6OlRleENvb3JkMmQpOgorICAgICAgICAo
Z2w6OlRleENvb3JkMmR2KToKKyAgICAgICAgKGdsOjpUZXhDb29yZDJmKToKKyAgICAgICAgKGds
OjpUZXhDb29yZDJmdik6CisgICAgICAgIChnbDo6VGV4Q29vcmQyaSk6CisgICAgICAgIChnbDo6
VGV4Q29vcmQyaXYpOgorICAgICAgICAoZ2w6OlRleENvb3JkMnMpOgorICAgICAgICAoZ2w6OlRl
eENvb3JkMnN2KToKKyAgICAgICAgKGdsOjpUZXhDb29yZDNkKToKKyAgICAgICAgKGdsOjpUZXhD
b29yZDNkdik6CisgICAgICAgIChnbDo6VGV4Q29vcmQzZik6CisgICAgICAgIChnbDo6VGV4Q29v
cmQzZnYpOgorICAgICAgICAoZ2w6OlRleENvb3JkM2kpOgorICAgICAgICAoZ2w6OlRleENvb3Jk
M2l2KToKKyAgICAgICAgKGdsOjpUZXhDb29yZDNzKToKKyAgICAgICAgKGdsOjpUZXhDb29yZDNz
dik6CisgICAgICAgIChnbDo6VGV4Q29vcmQ0ZCk6CisgICAgICAgIChnbDo6VGV4Q29vcmQ0ZHYp
OgorICAgICAgICAoZ2w6OlRleENvb3JkNGYpOgorICAgICAgICAoZ2w6OlRleENvb3JkNGZ2KToK
KyAgICAgICAgKGdsOjpUZXhDb29yZDRpKToKKyAgICAgICAgKGdsOjpUZXhDb29yZDRpdik6Cisg
ICAgICAgIChnbDo6VGV4Q29vcmQ0cyk6CisgICAgICAgIChnbDo6VGV4Q29vcmQ0c3YpOgorICAg
ICAgICAoZ2w6OlRleEVudmYpOgorICAgICAgICAoZ2w6OlRleEVudmZ2KToKKyAgICAgICAgKGds
OjpUZXhFbnZpKToKKyAgICAgICAgKGdsOjpUZXhFbnZpdik6CisgICAgICAgIChnbDo6VGV4R2Vu
ZCk6CisgICAgICAgIChnbDo6VGV4R2VuZHYpOgorICAgICAgICAoZ2w6OlRleEdlbmYpOgorICAg
ICAgICAoZ2w6OlRleEdlbmZ2KToKKyAgICAgICAgKGdsOjpUZXhHZW5pKToKKyAgICAgICAgKGds
OjpUZXhHZW5pdik6CisgICAgICAgIChnbDo6VGV4SW1hZ2UxRCk6CisgICAgICAgIChnbDo6VGV4
SW1hZ2UyRCk6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVyZik6CisgICAgICAgIChnbDo6VGV4
UGFyYW1ldGVyZnYpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2w6
OlRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpUcmFuc2xhdGVkKToKKyAgICAgICAgKGds
OjpUcmFuc2xhdGVmKToKKyAgICAgICAgKGdsOjpWZXJ0ZXgyZCk6CisgICAgICAgIChnbDo6VmVy
dGV4MmR2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXgyZik6CisgICAgICAgIChnbDo6VmVydGV4MmZ2
KToKKyAgICAgICAgKGdsOjpWZXJ0ZXgyaSk6CisgICAgICAgIChnbDo6VmVydGV4Mml2KToKKyAg
ICAgICAgKGdsOjpWZXJ0ZXgycyk6CisgICAgICAgIChnbDo6VmVydGV4MnN2KToKKyAgICAgICAg
KGdsOjpWZXJ0ZXgzZCk6CisgICAgICAgIChnbDo6VmVydGV4M2R2KToKKyAgICAgICAgKGdsOjpW
ZXJ0ZXgzZik6CisgICAgICAgIChnbDo6VmVydGV4M2Z2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXgz
aSk6CisgICAgICAgIChnbDo6VmVydGV4M2l2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXgzcyk6Cisg
ICAgICAgIChnbDo6VmVydGV4M3N2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXg0ZCk6CisgICAgICAg
IChnbDo6VmVydGV4NGR2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXg0Zik6CisgICAgICAgIChnbDo6
VmVydGV4NGZ2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXg0aSk6CisgICAgICAgIChnbDo6VmVydGV4
NGl2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXg0cyk6CisgICAgICAgIChnbDo6VmVydGV4NHN2KToK
KyAgICAgICAgKGdsOjpWaWV3cG9ydCk6CisgICAgICAgICogc3JjL2xpYkdML2VudHJ5X3BvaW50
c19nbF8xXzFfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6QXJlVGV4dHVyZXNSZXNpZGVudCk6
CisgICAgICAgIChnbDo6QXJyYXlFbGVtZW50KToKKyAgICAgICAgKGdsOjpCaW5kVGV4dHVyZSk6
CisgICAgICAgIChnbDo6Q29sb3JQb2ludGVyKToKKyAgICAgICAgKGdsOjpDb3B5VGV4SW1hZ2Ux
RCk6CisgICAgICAgIChnbDo6Q29weVRleEltYWdlMkQpOgorICAgICAgICAoZ2w6OkNvcHlUZXhT
dWJJbWFnZTFEKToKKyAgICAgICAgKGdsOjpDb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChn
bDo6RGVsZXRlVGV4dHVyZXMpOgorICAgICAgICAoZ2w6OkRpc2FibGVDbGllbnRTdGF0ZSk6Cisg
ICAgICAgIChnbDo6RHJhd0FycmF5cyk6CisgICAgICAgIChnbDo6RHJhd0VsZW1lbnRzKToKKyAg
ICAgICAgKGdsOjpFZGdlRmxhZ1BvaW50ZXIpOgorICAgICAgICAoZ2w6OkVuYWJsZUNsaWVudFN0
YXRlKToKKyAgICAgICAgKGdsOjpHZW5UZXh0dXJlcyk6CisgICAgICAgIChnbDo6R2V0UG9pbnRl
cnYpOgorICAgICAgICAoZ2w6OkluZGV4UG9pbnRlcik6CisgICAgICAgIChnbDo6SW5kZXh1Yik6
CisgICAgICAgIChnbDo6SW5kZXh1YnYpOgorICAgICAgICAoZ2w6OkludGVybGVhdmVkQXJyYXlz
KToKKyAgICAgICAgKGdsOjpJc1RleHR1cmUpOgorICAgICAgICAoZ2w6Ok5vcm1hbFBvaW50ZXIp
OgorICAgICAgICAoZ2w6OlBvbHlnb25PZmZzZXQpOgorICAgICAgICAoZ2w6OlBvcENsaWVudEF0
dHJpYik6CisgICAgICAgIChnbDo6UHJpb3JpdGl6ZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpQ
dXNoQ2xpZW50QXR0cmliKToKKyAgICAgICAgKGdsOjpUZXhDb29yZFBvaW50ZXIpOgorICAgICAg
ICAoZ2w6OlRleFN1YkltYWdlMUQpOgorICAgICAgICAoZ2w6OlRleFN1YkltYWdlMkQpOgorICAg
ICAgICAoZ2w6OlZlcnRleFBvaW50ZXIpOgorICAgICAgICAqIHNyYy9saWJHTC9lbnRyeV9wb2lu
dHNfZ2xfMV8yX2F1dG9nZW4uY3BwOgorICAgICAgICAoZ2w6OkNvcHlUZXhTdWJJbWFnZTNEKToK
KyAgICAgICAgKGdsOjpEcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChnbDo6VGV4SW1hZ2Uz
RCk6CisgICAgICAgIChnbDo6VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgICogc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8xXzNfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6QWN0aXZlVGV4dHVy
ZSk6CisgICAgICAgIChnbDo6Q2xpZW50QWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChnbDo6Q29t
cHJlc3NlZFRleEltYWdlMUQpOgorICAgICAgICAoZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTJEKToK
KyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UzRCk6CisgICAgICAgIChnbDo6Q29tcHJl
c3NlZFRleFN1YkltYWdlMUQpOgorICAgICAgICAoZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KToKKyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChnbDo6
R2V0Q29tcHJlc3NlZFRleEltYWdlKToKKyAgICAgICAgKGdsOjpMb2FkVHJhbnNwb3NlTWF0cml4
ZCk6CisgICAgICAgIChnbDo6TG9hZFRyYW5zcG9zZU1hdHJpeGYpOgorICAgICAgICAoZ2w6Ok11
bHRUcmFuc3Bvc2VNYXRyaXhkKToKKyAgICAgICAgKGdsOjpNdWx0VHJhbnNwb3NlTWF0cml4Zik6
CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDFkKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENv
b3JkMWR2KToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkMWYpOgorICAgICAgICAoZ2w6Ok11
bHRpVGV4Q29vcmQxZnYpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmQxaSk6CisgICAgICAg
IChnbDo6TXVsdGlUZXhDb29yZDFpdik6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDFzKToK
KyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkMXN2KToKKyAgICAgICAgKGdsOjpNdWx0aVRleENv
b3JkMmQpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmQyZHYpOgorICAgICAgICAoZ2w6Ok11
bHRpVGV4Q29vcmQyZik6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDJmdik6CisgICAgICAg
IChnbDo6TXVsdGlUZXhDb29yZDJpKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkMml2KToK
KyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkMnMpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29v
cmQyc3YpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmQzZCk6CisgICAgICAgIChnbDo6TXVs
dGlUZXhDb29yZDNkdik6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDNmKToKKyAgICAgICAg
KGdsOjpNdWx0aVRleENvb3JkM2Z2KToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkM2kpOgor
ICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmQzaXYpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29v
cmQzcyk6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDNzdik6CisgICAgICAgIChnbDo6TXVs
dGlUZXhDb29yZDRkKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkNGR2KToKKyAgICAgICAg
KGdsOjpNdWx0aVRleENvb3JkNGYpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmQ0ZnYpOgor
ICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmQ0aSk6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29y
ZDRpdik6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDRzKToKKyAgICAgICAgKGdsOjpNdWx0
aVRleENvb3JkNHN2KToKKyAgICAgICAgKGdsOjpTYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgICog
c3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzRfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6
QmxlbmRDb2xvcik6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvbik6CisgICAgICAgIChnbDo6
QmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoZ2w6OkZvZ0Nvb3JkUG9pbnRlcik6CisgICAg
ICAgIChnbDo6Rm9nQ29vcmRkKToKKyAgICAgICAgKGdsOjpGb2dDb29yZGR2KToKKyAgICAgICAg
KGdsOjpGb2dDb29yZGYpOgorICAgICAgICAoZ2w6OkZvZ0Nvb3JkZnYpOgorICAgICAgICAoZ2w6
Ok11bHRpRHJhd0FycmF5cyk6CisgICAgICAgIChnbDo6TXVsdGlEcmF3RWxlbWVudHMpOgorICAg
ICAgICAoZ2w6OlBvaW50UGFyYW1ldGVyZik6CisgICAgICAgIChnbDo6UG9pbnRQYXJhbWV0ZXJm
dik6CisgICAgICAgIChnbDo6UG9pbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpQb2ludFBh
cmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpTZWNvbmRhcnlDb2xvcjNiKToKKyAgICAgICAgKGds
OjpTZWNvbmRhcnlDb2xvcjNidik6CisgICAgICAgIChnbDo6U2Vjb25kYXJ5Q29sb3IzZCk6Cisg
ICAgICAgIChnbDo6U2Vjb25kYXJ5Q29sb3IzZHYpOgorICAgICAgICAoZ2w6OlNlY29uZGFyeUNv
bG9yM2YpOgorICAgICAgICAoZ2w6OlNlY29uZGFyeUNvbG9yM2Z2KToKKyAgICAgICAgKGdsOjpT
ZWNvbmRhcnlDb2xvcjNpKToKKyAgICAgICAgKGdsOjpTZWNvbmRhcnlDb2xvcjNpdik6CisgICAg
ICAgIChnbDo6U2Vjb25kYXJ5Q29sb3Izcyk6CisgICAgICAgIChnbDo6U2Vjb25kYXJ5Q29sb3Iz
c3YpOgorICAgICAgICAoZ2w6OlNlY29uZGFyeUNvbG9yM3ViKToKKyAgICAgICAgKGdsOjpTZWNv
bmRhcnlDb2xvcjN1YnYpOgorICAgICAgICAoZ2w6OlNlY29uZGFyeUNvbG9yM3VpKToKKyAgICAg
ICAgKGdsOjpTZWNvbmRhcnlDb2xvcjN1aXYpOgorICAgICAgICAoZ2w6OlNlY29uZGFyeUNvbG9y
M3VzKToKKyAgICAgICAgKGdsOjpTZWNvbmRhcnlDb2xvcjN1c3YpOgorICAgICAgICAoZ2w6OlNl
Y29uZGFyeUNvbG9yUG9pbnRlcik6CisgICAgICAgIChnbDo6V2luZG93UG9zMmQpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczJkdik6CisgICAgICAgIChnbDo6V2luZG93UG9zMmYpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczJmdik6CisgICAgICAgIChnbDo6V2luZG93UG9zMmkpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczJpdik6CisgICAgICAgIChnbDo6V2luZG93UG9zMnMpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczJzdik6CisgICAgICAgIChnbDo6V2luZG93UG9zM2QpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczNkdik6CisgICAgICAgIChnbDo6V2luZG93UG9zM2YpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczNmdik6CisgICAgICAgIChnbDo6V2luZG93UG9zM2kpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczNpdik6CisgICAgICAgIChnbDo6V2luZG93UG9zM3MpOgorICAgICAg
ICAoZ2w6OldpbmRvd1BvczNzdik6CisgICAgICAgICogc3JjL2xpYkdML2VudHJ5X3BvaW50c19n
bF8xXzVfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6QmVnaW5RdWVyeSk6CisgICAgICAgIChn
bDo6QmluZEJ1ZmZlcik6CisgICAgICAgIChnbDo6QnVmZmVyRGF0YSk6CisgICAgICAgIChnbDo6
QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChnbDo6RGVsZXRlQnVmZmVycyk6CisgICAgICAgIChn
bDo6RGVsZXRlUXVlcmllcyk6CisgICAgICAgIChnbDo6RW5kUXVlcnkpOgorICAgICAgICAoZ2w6
OkdlbkJ1ZmZlcnMpOgorICAgICAgICAoZ2w6OkdlblF1ZXJpZXMpOgorICAgICAgICAoZ2w6Okdl
dEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpHZXRCdWZmZXJQb2ludGVydik6Cisg
ICAgICAgIChnbDo6R2V0QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmpl
Y3Rpdik6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3R1aXYpOgorICAgICAgICAoZ2w6Okdl
dFF1ZXJ5aXYpOgorICAgICAgICAoZ2w6OklzQnVmZmVyKToKKyAgICAgICAgKGdsOjpJc1F1ZXJ5
KToKKyAgICAgICAgKGdsOjpNYXBCdWZmZXIpOgorICAgICAgICAoZ2w6OlVubWFwQnVmZmVyKToK
KyAgICAgICAgKiBzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMF9hdXRvZ2VuLmNwcDoKKyAg
ICAgICAgKGdsOjpBdHRhY2hTaGFkZXIpOgorICAgICAgICAoZ2w6OkJpbmRBdHRyaWJMb2NhdGlv
bik6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGdsOjpD
b21waWxlU2hhZGVyKToKKyAgICAgICAgKGdsOjpDcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKGds
OjpDcmVhdGVTaGFkZXIpOgorICAgICAgICAoZ2w6OkRlbGV0ZVByb2dyYW0pOgorICAgICAgICAo
Z2w6OkRlbGV0ZVNoYWRlcik6CisgICAgICAgIChnbDo6RGV0YWNoU2hhZGVyKToKKyAgICAgICAg
KGdsOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZ2w6OkRyYXdCdWZmZXJz
KToKKyAgICAgICAgKGdsOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChnbDo6
R2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdsOjpHZXRBY3RpdmVVbmlmb3JtKToKKyAgICAg
ICAgKGdsOjpHZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoZ2w6OkdldEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChnbDo6R2V0
UHJvZ3JhbWl2KToKKyAgICAgICAgKGdsOjpHZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKGds
OjpHZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoZ2w6OkdldFNoYWRlcml2KToKKyAgICAgICAg
KGdsOjpHZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoZ2w6OkdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChnbDo6R2V0VW5pZm9ybWl2KToKKyAgICAgICAgKGdsOjpHZXRWZXJ0ZXhBdHRyaWJQ
b2ludGVydik6CisgICAgICAgIChnbDo6R2V0VmVydGV4QXR0cmliZHYpOgorICAgICAgICAoZ2w6
OkdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAgICAgKGdsOjpHZXRWZXJ0ZXhBdHRyaWJpdik6Cisg
ICAgICAgIChnbDo6SXNQcm9ncmFtKToKKyAgICAgICAgKGdsOjpJc1NoYWRlcik6CisgICAgICAg
IChnbDo6TGlua1Byb2dyYW0pOgorICAgICAgICAoZ2w6OlNoYWRlclNvdXJjZSk6CisgICAgICAg
IChnbDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChnbDo6U3RlbmNpbE1hc2tTZXBh
cmF0ZSk6CisgICAgICAgIChnbDo6U3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoZ2w6OlVu
aWZvcm0xZik6CisgICAgICAgIChnbDo6VW5pZm9ybTFmdik6CisgICAgICAgIChnbDo6VW5pZm9y
bTFpKToKKyAgICAgICAgKGdsOjpVbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtMmYp
OgorICAgICAgICAoZ2w6OlVuaWZvcm0yZnYpOgorICAgICAgICAoZ2w6OlVuaWZvcm0yaSk6Cisg
ICAgICAgIChnbDo6VW5pZm9ybTJpdik6CisgICAgICAgIChnbDo6VW5pZm9ybTNmKToKKyAgICAg
ICAgKGdsOjpVbmlmb3JtM2Z2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtM2kpOgorICAgICAgICAo
Z2w6OlVuaWZvcm0zaXYpOgorICAgICAgICAoZ2w6OlVuaWZvcm00Zik6CisgICAgICAgIChnbDo6
VW5pZm9ybTRmdik6CisgICAgICAgIChnbDo6VW5pZm9ybTRpKToKKyAgICAgICAgKGdsOjpVbmlm
b3JtNGl2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKGdsOjpV
bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4NGZ2KToKKyAgICAg
ICAgKGdsOjpVc2VQcm9ncmFtKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW0pOgorICAg
ICAgICAoZ2w6OlZlcnRleEF0dHJpYjFkKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIxZHYp
OgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRy
aWIxZnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjFzKToKKyAgICAgICAgKGdsOjpWZXJ0
ZXhBdHRyaWIxc3YpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjJkKToKKyAgICAgICAgKGds
OjpWZXJ0ZXhBdHRyaWIyZHYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjJmKToKKyAgICAg
ICAgKGdsOjpWZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjJzKToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIyc3YpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJp
YjNkKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIzZHYpOgorICAgICAgICAoZ2w6OlZlcnRl
eEF0dHJpYjNmKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoZ2w6
OlZlcnRleEF0dHJpYjNzKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIzc3YpOgorICAgICAg
ICAoZ2w6OlZlcnRleEF0dHJpYjROYnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjROaXYp
OgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjROc3YpOgorICAgICAgICAoZ2w6OlZlcnRleEF0
dHJpYjROdWIpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjROdWJ2KToKKyAgICAgICAgKGds
OjpWZXJ0ZXhBdHRyaWI0TnVpdik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliNE51c3YpOgor
ICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjRidik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmli
NGQpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjRkdik6CisgICAgICAgIChnbDo6VmVydGV4
QXR0cmliNGYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChnbDo6
VmVydGV4QXR0cmliNGl2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWI0cyk6CisgICAgICAg
IChnbDo6VmVydGV4QXR0cmliNHN2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWI0dWJ2KToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWI0dWl2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRy
aWI0dXN2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKiBz
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMV9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpV
bmlmb3JtTWF0cml4MngzZnYpOgorICAgICAgICAoZ2w6OlVuaWZvcm1NYXRyaXgyeDRmdik6Cisg
ICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDN4MmZ2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0
cml4M3g0ZnYpOgorICAgICAgICAoZ2w6OlVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChn
bDo6VW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAgICAgKiBzcmMvbGliR0wvZW50cnlfcG9pbnRz
X2dsXzNfMF9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpCZWdpbkNvbmRpdGlvbmFsUmVuZGVy
KToKKyAgICAgICAgKGdsOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGdsOjpC
aW5kQnVmZmVyQmFzZSk6CisgICAgICAgIChnbDo6QmluZEJ1ZmZlclJhbmdlKToKKyAgICAgICAg
KGdsOjpCaW5kRnJhZ0RhdGFMb2NhdGlvbik6CisgICAgICAgIChnbDo6QmluZEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKGdsOjpCaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpCaW5kVmVy
dGV4QXJyYXkpOgorICAgICAgICAoZ2w6OkJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChnbDo6Q2xhbXBDb2xvcik6CisgICAg
ICAgIChnbDo6Q2xlYXJCdWZmZXJmaSk6CisgICAgICAgIChnbDo6Q2xlYXJCdWZmZXJmdik6Cisg
ICAgICAgIChnbDo6Q2xlYXJCdWZmZXJpdik6CisgICAgICAgIChnbDo6Q2xlYXJCdWZmZXJ1aXYp
OgorICAgICAgICAoZ2w6OkNvbG9yTWFza2kpOgorICAgICAgICAoZ2w6OkRlbGV0ZUZyYW1lYnVm
ZmVycyk6CisgICAgICAgIChnbDo6RGVsZXRlUmVuZGVyYnVmZmVycyk6CisgICAgICAgIChnbDo6
RGVsZXRlVmVydGV4QXJyYXlzKToKKyAgICAgICAgKGdsOjpEaXNhYmxlaSk6CisgICAgICAgIChn
bDo6RW5hYmxlaSk6CisgICAgICAgIChnbDo6RW5kQ29uZGl0aW9uYWxSZW5kZXIpOgorICAgICAg
ICAoZ2w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGdsOjpGbHVzaE1hcHBlZEJ1
ZmZlclJhbmdlKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChnbDo6RnJhbWVidWZmZXJUZXh0dXJlMUQpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVy
VGV4dHVyZTJEKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUzRCk6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoZ2w6OkdlbkZyYW1lYnVm
ZmVycyk6CisgICAgICAgIChnbDo6R2VuUmVuZGVyYnVmZmVycyk6CisgICAgICAgIChnbDo6R2Vu
VmVydGV4QXJyYXlzKToKKyAgICAgICAgKGdsOjpHZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChn
bDo6R2V0Qm9vbGVhbmlfdik6CisgICAgICAgIChnbDo6R2V0RnJhZ0RhdGFMb2NhdGlvbik6Cisg
ICAgICAgIChnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAg
ICAoZ2w6OkdldEludGVnZXJpX3YpOgorICAgICAgICAoZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KToKKyAgICAgICAgKGdsOjpHZXRTdHJpbmdpKToKKyAgICAgICAgKGdsOjpHZXRUZXhQ
YXJhbWV0ZXJJaXYpOgorICAgICAgICAoZ2w6OkdldFRleFBhcmFtZXRlckl1aXYpOgorICAgICAg
ICAoZ2w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk6CisgICAgICAgIChnbDo6R2V0VW5p
Zm9ybXVpdik6CisgICAgICAgIChnbDo6R2V0VmVydGV4QXR0cmliSWl2KToKKyAgICAgICAgKGds
OjpHZXRWZXJ0ZXhBdHRyaWJJdWl2KToKKyAgICAgICAgKGdsOjpJc0VuYWJsZWRpKToKKyAgICAg
ICAgKGdsOjpJc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpJc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChnbDo6SXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChnbDo6TWFwQnVmZmVyUmFuZ2Up
OgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVySWl2
KToKKyAgICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJJdWl2KToKKyAgICAgICAgKGdsOjpUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKGdsOjpVbmlmb3JtMXVpKToKKyAgICAgICAg
KGdsOjpVbmlmb3JtMXVpdik6CisgICAgICAgIChnbDo6VW5pZm9ybTJ1aSk6CisgICAgICAgIChn
bDo6VW5pZm9ybTJ1aXYpOgorICAgICAgICAoZ2w6OlVuaWZvcm0zdWkpOgorICAgICAgICAoZ2w6
OlVuaWZvcm0zdWl2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtNHVpKToKKyAgICAgICAgKGdsOjpV
bmlmb3JtNHVpdik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliSTFpKToKKyAgICAgICAgKGds
OjpWZXJ0ZXhBdHRyaWJJMWl2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJMXVpKToKKyAg
ICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJMXVpdik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmli
STJpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJMml2KToKKyAgICAgICAgKGdsOjpWZXJ0
ZXhBdHRyaWJJMnVpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJMnVpdik6CisgICAgICAg
IChnbDo6VmVydGV4QXR0cmliSTNpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJM2l2KToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJM3VpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRy
aWJJM3Vpdik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliSTRidik6CisgICAgICAgIChnbDo6
VmVydGV4QXR0cmliSTRpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAg
ICAgKGdsOjpWZXJ0ZXhBdHRyaWJJNHN2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJNHVi
dik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgIChnbDo6VmVydGV4
QXR0cmliSTR1aXYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYkk0dXN2KToKKyAgICAgICAg
KGdsOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcik6CisgICAgICAgICogc3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF8zXzFfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6Q29weUJ1ZmZlclN1YkRhdGEp
OgorICAgICAgICAoZ2w6OkRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoZ2w6OkRyYXdF
bGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgIChnbDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZSk6CisgICAgICAgIChnbDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoZ2w6
OkdldEFjdGl2ZVVuaWZvcm1OYW1lKToKKyAgICAgICAgKGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2
KToKKyAgICAgICAgKGdsOjpHZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChnbDo6R2V0
VW5pZm9ybUluZGljZXMpOgorICAgICAgICAoZ2w6OlByaW1pdGl2ZVJlc3RhcnRJbmRleCk6Cisg
ICAgICAgIChnbDo6VGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpVbmlmb3JtQmxvY2tCaW5kaW5n
KToKKyAgICAgICAgKiBzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMl9hdXRvZ2VuLmNwcDoK
KyAgICAgICAgKGdsOjpDbGllbnRXYWl0U3luYyk6CisgICAgICAgIChnbDo6RGVsZXRlU3luYyk6
CisgICAgICAgIChnbDo6RHJhd0VsZW1lbnRzQmFzZVZlcnRleCk6CisgICAgICAgIChnbDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCk6CisgICAgICAgIChnbDo6RHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4KToKKyAgICAgICAgKGdsOjpGZW5jZVN5bmMpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaTY0
dik6CisgICAgICAgIChnbDo6R2V0SW50ZWdlcjY0aV92KToKKyAgICAgICAgKGdsOjpHZXRJbnRl
Z2VyNjR2KToKKyAgICAgICAgKGdsOjpHZXRNdWx0aXNhbXBsZWZ2KToKKyAgICAgICAgKGdsOjpH
ZXRTeW5jaXYpOgorICAgICAgICAoZ2w6OklzU3luYyk6CisgICAgICAgIChnbDo6TXVsdGlEcmF3
RWxlbWVudHNCYXNlVmVydGV4KToKKyAgICAgICAgKGdsOjpQcm92b2tpbmdWZXJ0ZXgpOgorICAg
ICAgICAoZ2w6OlNhbXBsZU1hc2tpKToKKyAgICAgICAgKGdsOjpUZXhJbWFnZTJETXVsdGlzYW1w
bGUpOgorICAgICAgICAoZ2w6OlRleEltYWdlM0RNdWx0aXNhbXBsZSk6CisgICAgICAgIChnbDo6
V2FpdFN5bmMpOgorICAgICAgICAqIHNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18zX2F1dG9n
ZW4uY3BwOgorICAgICAgICAoZ2w6OkJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZCk6CisgICAg
ICAgIChnbDo6QmluZFNhbXBsZXIpOgorICAgICAgICAoZ2w6OkNvbG9yUDN1aSk6CisgICAgICAg
IChnbDo6Q29sb3JQM3Vpdik6CisgICAgICAgIChnbDo6Q29sb3JQNHVpKToKKyAgICAgICAgKGds
OjpDb2xvclA0dWl2KToKKyAgICAgICAgKGdsOjpEZWxldGVTYW1wbGVycyk6CisgICAgICAgIChn
bDo6R2VuU2FtcGxlcnMpOgorICAgICAgICAoZ2w6OkdldEZyYWdEYXRhSW5kZXgpOgorICAgICAg
ICAoZ2w6OkdldFF1ZXJ5T2JqZWN0aTY0dik6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3R1
aTY0dik6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRlcklpdik6CisgICAgICAgIChn
bDo6R2V0U2FtcGxlclBhcmFtZXRlckl1aXYpOgorICAgICAgICAoZ2w6OkdldFNhbXBsZXJQYXJh
bWV0ZXJmdik6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRlcml2KToKKyAgICAgICAg
KGdsOjpJc1NhbXBsZXIpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmRQMXVpKToKKyAgICAg
ICAgKGdsOjpNdWx0aVRleENvb3JkUDF1aXYpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4Q29vcmRQ
MnVpKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkUDJ1aXYpOgorICAgICAgICAoZ2w6Ok11
bHRpVGV4Q29vcmRQM3VpKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkUDN1aXYpOgorICAg
ICAgICAoZ2w6Ok11bHRpVGV4Q29vcmRQNHVpKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3Jk
UDR1aXYpOgorICAgICAgICAoZ2w6Ok5vcm1hbFAzdWkpOgorICAgICAgICAoZ2w6Ok5vcm1hbFAz
dWl2KToKKyAgICAgICAgKGdsOjpRdWVyeUNvdW50ZXIpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQ
YXJhbWV0ZXJJaXYpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJdWl2KToKKyAgICAg
ICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChnbDo6U2FtcGxlclBhcmFtZXRl
cmZ2KToKKyAgICAgICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnbDo6U2Ft
cGxlclBhcmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpTZWNvbmRhcnlDb2xvclAzdWkpOgorICAg
ICAgICAoZ2w6OlNlY29uZGFyeUNvbG9yUDN1aXYpOgorICAgICAgICAoZ2w6OlRleENvb3JkUDF1
aSk6CisgICAgICAgIChnbDo6VGV4Q29vcmRQMXVpdik6CisgICAgICAgIChnbDo6VGV4Q29vcmRQ
MnVpKToKKyAgICAgICAgKGdsOjpUZXhDb29yZFAydWl2KToKKyAgICAgICAgKGdsOjpUZXhDb29y
ZFAzdWkpOgorICAgICAgICAoZ2w6OlRleENvb3JkUDN1aXYpOgorICAgICAgICAoZ2w6OlRleENv
b3JkUDR1aSk6CisgICAgICAgIChnbDo6VGV4Q29vcmRQNHVpdik6CisgICAgICAgIChnbDo6VmVy
dGV4QXR0cmliRGl2aXNvcik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliUDF1aSk6CisgICAg
ICAgIChnbDo6VmVydGV4QXR0cmliUDF1aXYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYlAy
dWkpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYlAydWl2KToKKyAgICAgICAgKGdsOjpWZXJ0
ZXhBdHRyaWJQM3VpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJQM3Vpdik6CisgICAgICAg
IChnbDo6VmVydGV4QXR0cmliUDR1aSk6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliUDR1aXYp
OgorICAgICAgICAoZ2w6OlZlcnRleFAydWkpOgorICAgICAgICAoZ2w6OlZlcnRleFAydWl2KToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhQM3VpKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhQM3Vpdik6Cisg
ICAgICAgIChnbDo6VmVydGV4UDR1aSk6CisgICAgICAgIChnbDo6VmVydGV4UDR1aXYpOgorICAg
ICAgICAqIHNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8wX2F1dG9nZW4uY3BwOgorICAgICAg
ICAoZ2w6OkJlZ2luUXVlcnlJbmRleGVkKToKKyAgICAgICAgKGdsOjpCaW5kVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWkpOgorICAgICAgICAo
Z2w6OkJsZW5kRXF1YXRpb25pKToKKyAgICAgICAgKGdsOjpCbGVuZEZ1bmNTZXBhcmF0ZWkpOgor
ICAgICAgICAoZ2w6OkJsZW5kRnVuY2kpOgorICAgICAgICAoZ2w6OkRlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrcyk6CisgICAgICAgIChnbDo6RHJhd0FycmF5c0luZGlyZWN0KToKKyAgICAgICAgKGds
OjpEcmF3RWxlbWVudHNJbmRpcmVjdCk6CisgICAgICAgIChnbDo6RHJhd1RyYW5zZm9ybUZlZWRi
YWNrKToKKyAgICAgICAgKGdsOjpEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0pOgorICAgICAg
ICAoZ2w6OkVuZFF1ZXJ5SW5kZXhlZCk6CisgICAgICAgIChnbDo6R2VuVHJhbnNmb3JtRmVlZGJh
Y2tzKToKKyAgICAgICAgKGdsOjpHZXRBY3RpdmVTdWJyb3V0aW5lTmFtZSk6CisgICAgICAgIChn
bDo6R2V0QWN0aXZlU3Vicm91dGluZVVuaWZvcm1OYW1lKToKKyAgICAgICAgKGdsOjpHZXRBY3Rp
dmVTdWJyb3V0aW5lVW5pZm9ybWl2KToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtU3RhZ2Vpdik6
CisgICAgICAgIChnbDo6R2V0UXVlcnlJbmRleGVkaXYpOgorICAgICAgICAoZ2w6OkdldFN1YnJv
dXRpbmVJbmRleCk6CisgICAgICAgIChnbDo6R2V0U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlvbik6
CisgICAgICAgIChnbDo6R2V0VW5pZm9ybVN1YnJvdXRpbmV1aXYpOgorICAgICAgICAoZ2w6Okdl
dFVuaWZvcm1kdik6CisgICAgICAgIChnbDo6SXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAg
IChnbDo6TWluU2FtcGxlU2hhZGluZyk6CisgICAgICAgIChnbDo6UGF0Y2hQYXJhbWV0ZXJmdik6
CisgICAgICAgIChnbDo6UGF0Y2hQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpQYXVzZVRyYW5z
Zm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGdsOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChnbDo6VW5pZm9ybTFkKToKKyAgICAgICAgKGdsOjpVbmlmb3JtMWR2KToKKyAgICAg
ICAgKGdsOjpVbmlmb3JtMmQpOgorICAgICAgICAoZ2w6OlVuaWZvcm0yZHYpOgorICAgICAgICAo
Z2w6OlVuaWZvcm0zZCk6CisgICAgICAgIChnbDo6VW5pZm9ybTNkdik6CisgICAgICAgIChnbDo6
VW5pZm9ybTRkKToKKyAgICAgICAgKGdsOjpVbmlmb3JtNGR2KToKKyAgICAgICAgKGdsOjpVbmlm
b3JtTWF0cml4MmR2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4MngzZHYpOgorICAgICAg
ICAoZ2w6OlVuaWZvcm1NYXRyaXgyeDRkdik6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDNk
dik6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDN4MmR2KToKKyAgICAgICAgKGdsOjpVbmlm
b3JtTWF0cml4M3g0ZHYpOgorICAgICAgICAoZ2w6OlVuaWZvcm1NYXRyaXg0ZHYpOgorICAgICAg
ICAoZ2w6OlVuaWZvcm1NYXRyaXg0eDJkdik6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDR4
M2R2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtU3Vicm91dGluZXN1aXYpOgorICAgICAgICAqIHNy
Yy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8xX2F1dG9nZW4uY3BwOgorICAgICAgICAoZ2w6OkFj
dGl2ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAoZ2w6OkJpbmRQcm9ncmFtUGlwZWxpbmUpOgor
ICAgICAgICAoZ2w6OkNsZWFyRGVwdGhmKToKKyAgICAgICAgKGdsOjpDcmVhdGVTaGFkZXJQcm9n
cmFtdik6CisgICAgICAgIChnbDo6RGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyk6CisgICAgICAgIChn
bDo6RGVwdGhSYW5nZUFycmF5dik6CisgICAgICAgIChnbDo6RGVwdGhSYW5nZUluZGV4ZWQpOgor
ICAgICAgICAoZ2w6OkRlcHRoUmFuZ2VmKToKKyAgICAgICAgKGdsOjpHZW5Qcm9ncmFtUGlwZWxp
bmVzKToKKyAgICAgICAgKGdsOjpHZXREb3VibGVpX3YpOgorICAgICAgICAoZ2w6OkdldEZsb2F0
aV92KToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtQmluYXJ5KToKKyAgICAgICAgKGdsOjpHZXRQ
cm9ncmFtUGlwZWxpbmVJbmZvTG9nKToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtUGlwZWxpbmVp
dik6CisgICAgICAgIChnbDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKGds
OjpHZXRWZXJ0ZXhBdHRyaWJMZHYpOgorICAgICAgICAoZ2w6OklzUHJvZ3JhbVBpcGVsaW5lKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtQmluYXJ5KToKKyAgICAgICAgKGdsOjpQcm9ncmFtUGFyYW1l
dGVyaSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0xZCk6CisgICAgICAgIChnbDo6UHJv
Z3JhbVVuaWZvcm0xZHYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMWYpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1Vbmlmb3JtMWZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTFp
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTFpdik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bVVuaWZvcm0xdWkpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMXVpdik6CisgICAgICAg
IChnbDo6UHJvZ3JhbVVuaWZvcm0yZCk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0yZHYp
OgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMmYpOgorICAgICAgICAoZ2w6OlByb2dyYW1V
bmlmb3JtMmZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTJpKToKKyAgICAgICAgKGds
OjpQcm9ncmFtVW5pZm9ybTJpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0ydWkpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMnVpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVu
aWZvcm0zZCk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0zZHYpOgorICAgICAgICAoZ2w6
OlByb2dyYW1Vbmlmb3JtM2YpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtM2Z2KToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTNpKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9y
bTNpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0zdWkpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1Vbmlmb3JtM3Vpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm00ZCk6CisgICAg
ICAgIChnbDo6UHJvZ3JhbVVuaWZvcm00ZHYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3Jt
NGYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtNGZ2KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtVW5pZm9ybTRpKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTRpdik6CisgICAgICAg
IChnbDo6UHJvZ3JhbVVuaWZvcm00dWkpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtNHVp
dik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYpOgorICAgICAgICAoZ2w6
OlByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1h
dHJpeDJ4M2R2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAg
ICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1hdHJp
eDNkdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAo
Z2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZHYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlm
b3JtTWF0cml4M3gyZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYp
OgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoZ2w6
OlByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1h
dHJpeDRmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdik6CisgICAg
ICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChnbDo6UHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDNkdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXg0
eDNmdik6CisgICAgICAgIChnbDo6UmVsZWFzZVNoYWRlckNvbXBpbGVyKToKKyAgICAgICAgKGds
OjpTY2lzc29yQXJyYXl2KToKKyAgICAgICAgKGdsOjpTY2lzc29ySW5kZXhlZCk6CisgICAgICAg
IChnbDo6U2Npc3NvckluZGV4ZWR2KToKKyAgICAgICAgKGdsOjpTaGFkZXJCaW5hcnkpOgorICAg
ICAgICAoZ2w6OlVzZVByb2dyYW1TdGFnZXMpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3Jh
bVBpcGVsaW5lKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJMMWQpOgorICAgICAgICAoZ2w6
OlZlcnRleEF0dHJpYkwxZHYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYkwyZCk6CisgICAg
ICAgIChnbDo6VmVydGV4QXR0cmliTDJkdik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliTDNk
KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJMM2R2KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhB
dHRyaWJMNGQpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYkw0ZHYpOgorICAgICAgICAoZ2w6
OlZlcnRleEF0dHJpYkxQb2ludGVyKToKKyAgICAgICAgKGdsOjpWaWV3cG9ydEFycmF5dik6Cisg
ICAgICAgIChnbDo6Vmlld3BvcnRJbmRleGVkZik6CisgICAgICAgIChnbDo6Vmlld3BvcnRJbmRl
eGVkZnYpOgorICAgICAgICAqIHNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8yX2F1dG9nZW4u
Y3BwOgorICAgICAgICAoZ2w6OkJpbmRJbWFnZVRleHR1cmUpOgorICAgICAgICAoZ2w6OkRyYXdB
cnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UpOgorICAgICAgICAoZ2w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZEJhc2VJbnN0YW5jZSk6CisgICAgICAgIChnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QmFzZVZlcnRleEJhc2VJbnN0YW5jZSk6CisgICAgICAgIChnbDo6RHJhd1RyYW5zZm9ybUZlZWRi
YWNrSW5zdGFuY2VkKToKKyAgICAgICAgKGdsOjpEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW1J
bnN0YW5jZWQpOgorICAgICAgICAoZ2w6OkdldEFjdGl2ZUF0b21pY0NvdW50ZXJCdWZmZXJpdik6
CisgICAgICAgIChnbDo6R2V0SW50ZXJuYWxmb3JtYXRpdik6CisgICAgICAgIChnbDo6TWVtb3J5
QmFycmllcik6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTFEKToKKyAgICAgICAgKGdsOjpUZXhT
dG9yYWdlMkQpOgorICAgICAgICAoZ2w6OlRleFN0b3JhZ2UzRCk6CisgICAgICAgICogc3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF80XzNfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6QmluZFZl
cnRleEJ1ZmZlcik6CisgICAgICAgIChnbDo6Q2xlYXJCdWZmZXJEYXRhKToKKyAgICAgICAgKGds
OjpDbGVhckJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2w6OkNvcHlJbWFnZVN1YkRhdGEpOgor
ICAgICAgICAoZ2w6OkRlYnVnTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKGdsOjpEZWJ1Z01l
c3NhZ2VDb250cm9sKToKKyAgICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VJbnNlcnQpOgorICAgICAg
ICAoZ2w6OkRpc3BhdGNoQ29tcHV0ZSk6CisgICAgICAgIChnbDo6RGlzcGF0Y2hDb21wdXRlSW5k
aXJlY3QpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChn
bDo6R2V0RGVidWdNZXNzYWdlTG9nKToKKyAgICAgICAgKGdsOjpHZXRGcmFtZWJ1ZmZlclBhcmFt
ZXRlcml2KToKKyAgICAgICAgKGdsOjpHZXRJbnRlcm5hbGZvcm1hdGk2NHYpOgorICAgICAgICAo
Z2w6OkdldE9iamVjdExhYmVsKToKKyAgICAgICAgKGdsOjpHZXRPYmplY3RQdHJMYWJlbCk6Cisg
ICAgICAgIChnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2KToKKyAgICAgICAgKGdsOjpHZXRQcm9n
cmFtUmVzb3VyY2VJbmRleCk6CisgICAgICAgIChnbDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRp
b24pOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgpOgorICAg
ICAgICAoZ2w6OkdldFByb2dyYW1SZXNvdXJjZU5hbWUpOgorICAgICAgICAoZ2w6OkdldFByb2dy
YW1SZXNvdXJjZWl2KToKKyAgICAgICAgKGdsOjpJbnZhbGlkYXRlQnVmZmVyRGF0YSk6CisgICAg
ICAgIChnbDo6SW52YWxpZGF0ZUJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoZ2w6OkludmFsaWRh
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChnbDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKToK
KyAgICAgICAgKGdsOjpJbnZhbGlkYXRlVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OkludmFsaWRh
dGVUZXhTdWJJbWFnZSk6CisgICAgICAgIChnbDo6TXVsdGlEcmF3QXJyYXlzSW5kaXJlY3QpOgor
ICAgICAgICAoZ2w6Ok11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3QpOgorICAgICAgICAoZ2w6Ok9i
amVjdExhYmVsKToKKyAgICAgICAgKGdsOjpPYmplY3RQdHJMYWJlbCk6CisgICAgICAgIChnbDo6
UG9wRGVidWdHcm91cCk6CisgICAgICAgIChnbDo6UHVzaERlYnVnR3JvdXApOgorICAgICAgICAo
Z2w6OlNoYWRlclN0b3JhZ2VCbG9ja0JpbmRpbmcpOgorICAgICAgICAoZ2w6OlRleEJ1ZmZlclJh
bmdlKToKKyAgICAgICAgKGdsOjpUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZSk6CisgICAgICAgIChn
bDo6VGV4U3RvcmFnZTNETXVsdGlzYW1wbGUpOgorICAgICAgICAoZ2w6OlRleHR1cmVWaWV3KToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJCaW5kaW5nKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhB
dHRyaWJGb3JtYXQpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYklGb3JtYXQpOgorICAgICAg
ICAoZ2w6OlZlcnRleEF0dHJpYkxGb3JtYXQpOgorICAgICAgICAoZ2w6OlZlcnRleEJpbmRpbmdE
aXZpc29yKToKKyAgICAgICAgKiBzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2Vu
LmNwcDoKKyAgICAgICAgKGdsOjpCaW5kQnVmZmVyc0Jhc2UpOgorICAgICAgICAoZ2w6OkJpbmRC
dWZmZXJzUmFuZ2UpOgorICAgICAgICAoZ2w6OkJpbmRJbWFnZVRleHR1cmVzKToKKyAgICAgICAg
KGdsOjpCaW5kU2FtcGxlcnMpOgorICAgICAgICAoZ2w6OkJpbmRUZXh0dXJlcyk6CisgICAgICAg
IChnbDo6QmluZFZlcnRleEJ1ZmZlcnMpOgorICAgICAgICAoZ2w6OkJ1ZmZlclN0b3JhZ2UpOgor
ICAgICAgICAoZ2w6OkNsZWFyVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OkNsZWFyVGV4U3ViSW1h
Z2UpOgorICAgICAgICAqIHNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81X2F1dG9nZW4uY3Bw
OgorICAgICAgICAoZ2w6OkJpbmRUZXh0dXJlVW5pdCk6CisgICAgICAgIChnbDo6QmxpdE5hbWVk
RnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6OkNoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1cyk6
CisgICAgICAgIChnbDo6Q2xlYXJOYW1lZEJ1ZmZlckRhdGEpOgorICAgICAgICAoZ2w6OkNsZWFy
TmFtZWRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpDbGVhck5hbWVkRnJhbWVidWZmZXJm
aSk6CisgICAgICAgIChnbDo6Q2xlYXJOYW1lZEZyYW1lYnVmZmVyZnYpOgorICAgICAgICAoZ2w6
OkNsZWFyTmFtZWRGcmFtZWJ1ZmZlcml2KToKKyAgICAgICAgKGdsOjpDbGVhck5hbWVkRnJhbWVi
dWZmZXJ1aXYpOgorICAgICAgICAoZ2w6OkNsaXBDb250cm9sKToKKyAgICAgICAgKGdsOjpDb21w
cmVzc2VkVGV4dHVyZVN1YkltYWdlMUQpOgorICAgICAgICAoZ2w6OkNvbXByZXNzZWRUZXh0dXJl
U3ViSW1hZ2UyRCk6CisgICAgICAgIChnbDo6Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTNEKToK
KyAgICAgICAgKGdsOjpDb3B5TmFtZWRCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpDb3B5
VGV4dHVyZVN1YkltYWdlMUQpOgorICAgICAgICAoZ2w6OkNvcHlUZXh0dXJlU3ViSW1hZ2UyRCk6
CisgICAgICAgIChnbDo6Q29weVRleHR1cmVTdWJJbWFnZTNEKToKKyAgICAgICAgKGdsOjpDcmVh
dGVCdWZmZXJzKToKKyAgICAgICAgKGdsOjpDcmVhdGVGcmFtZWJ1ZmZlcnMpOgorICAgICAgICAo
Z2w6OkNyZWF0ZVByb2dyYW1QaXBlbGluZXMpOgorICAgICAgICAoZ2w6OkNyZWF0ZVF1ZXJpZXMp
OgorICAgICAgICAoZ2w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcnMpOgorICAgICAgICAoZ2w6OkNyZWF0
ZVNhbXBsZXJzKToKKyAgICAgICAgKGdsOjpDcmVhdGVUZXh0dXJlcyk6CisgICAgICAgIChnbDo6
Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2tzKToKKyAgICAgICAgKGdsOjpDcmVhdGVWZXJ0ZXhBcnJh
eXMpOgorICAgICAgICAoZ2w6OkRpc2FibGVWZXJ0ZXhBcnJheUF0dHJpYik6CisgICAgICAgIChn
bDo6RW5hYmxlVmVydGV4QXJyYXlBdHRyaWIpOgorICAgICAgICAoZ2w6OkZsdXNoTWFwcGVkTmFt
ZWRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnbDo6R2VuZXJhdGVUZXh0dXJlTWlwbWFwKToKKyAg
ICAgICAgKGdsOjpHZXRDb21wcmVzc2VkVGV4dHVyZUltYWdlKToKKyAgICAgICAgKGdsOjpHZXRD
b21wcmVzc2VkVGV4dHVyZVN1YkltYWdlKToKKyAgICAgICAgKGdsOjpHZXRHcmFwaGljc1Jlc2V0
U3RhdHVzKToKKyAgICAgICAgKGdsOjpHZXROYW1lZEJ1ZmZlclBhcmFtZXRlcmk2NHYpOgorICAg
ICAgICAoZ2w6OkdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OkdldE5h
bWVkQnVmZmVyUG9pbnRlcnYpOgorICAgICAgICAoZ2w6OkdldE5hbWVkQnVmZmVyU3ViRGF0YSk6
CisgICAgICAgIChnbDo6R2V0TmFtZWRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6
CisgICAgICAgIChnbDo6R2V0TmFtZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAg
KGdsOjpHZXROYW1lZFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpHZXRR
dWVyeUJ1ZmZlck9iamVjdGk2NHYpOgorICAgICAgICAoZ2w6OkdldFF1ZXJ5QnVmZmVyT2JqZWN0
aXYpOgorICAgICAgICAoZ2w6OkdldFF1ZXJ5QnVmZmVyT2JqZWN0dWk2NHYpOgorICAgICAgICAo
Z2w6OkdldFF1ZXJ5QnVmZmVyT2JqZWN0dWl2KToKKyAgICAgICAgKGdsOjpHZXRUZXh0dXJlSW1h
Z2UpOgorICAgICAgICAoZ2w6OkdldFRleHR1cmVMZXZlbFBhcmFtZXRlcmZ2KToKKyAgICAgICAg
KGdsOjpHZXRUZXh0dXJlTGV2ZWxQYXJhbWV0ZXJpdik6CisgICAgICAgIChnbDo6R2V0VGV4dHVy
ZVBhcmFtZXRlcklpdik6CisgICAgICAgIChnbDo6R2V0VGV4dHVyZVBhcmFtZXRlckl1aXYpOgor
ICAgICAgICAoZ2w6OkdldFRleHR1cmVQYXJhbWV0ZXJmdik6CisgICAgICAgIChnbDo6R2V0VGV4
dHVyZVBhcmFtZXRlcml2KToKKyAgICAgICAgKGdsOjpHZXRUZXh0dXJlU3ViSW1hZ2UpOgorICAg
ICAgICAoZ2w6OkdldFRyYW5zZm9ybUZlZWRiYWNraTY0X3YpOgorICAgICAgICAoZ2w6OkdldFRy
YW5zZm9ybUZlZWRiYWNraV92KToKKyAgICAgICAgKGdsOjpHZXRUcmFuc2Zvcm1GZWVkYmFja2l2
KToKKyAgICAgICAgKGdsOjpHZXRWZXJ0ZXhBcnJheUluZGV4ZWQ2NGl2KToKKyAgICAgICAgKGds
OjpHZXRWZXJ0ZXhBcnJheUluZGV4ZWRpdik6CisgICAgICAgIChnbDo6R2V0VmVydGV4QXJyYXlp
dik6CisgICAgICAgIChnbDo6R2V0bkNvbG9yVGFibGUpOgorICAgICAgICAoZ2w6OkdldG5Db21w
cmVzc2VkVGV4SW1hZ2UpOgorICAgICAgICAoZ2w6OkdldG5Db252b2x1dGlvbkZpbHRlcik6Cisg
ICAgICAgIChnbDo6R2V0bkhpc3RvZ3JhbSk6CisgICAgICAgIChnbDo6R2V0bk1hcGR2KToKKyAg
ICAgICAgKGdsOjpHZXRuTWFwZnYpOgorICAgICAgICAoZ2w6OkdldG5NYXBpdik6CisgICAgICAg
IChnbDo6R2V0bk1pbm1heCk6CisgICAgICAgIChnbDo6R2V0blBpeGVsTWFwZnYpOgorICAgICAg
ICAoZ2w6OkdldG5QaXhlbE1hcHVpdik6CisgICAgICAgIChnbDo6R2V0blBpeGVsTWFwdXN2KToK
KyAgICAgICAgKGdsOjpHZXRuUG9seWdvblN0aXBwbGUpOgorICAgICAgICAoZ2w6OkdldG5TZXBh
cmFibGVGaWx0ZXIpOgorICAgICAgICAoZ2w6OkdldG5UZXhJbWFnZSk6CisgICAgICAgIChnbDo6
R2V0blVuaWZvcm1kdik6CisgICAgICAgIChnbDo6R2V0blVuaWZvcm1mdik6CisgICAgICAgIChn
bDo6R2V0blVuaWZvcm1pdik6CisgICAgICAgIChnbDo6R2V0blVuaWZvcm11aXYpOgorICAgICAg
ICAoZ2w6OkludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRGF0YSk6CisgICAgICAgIChnbDo6SW52
YWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpNYXBOYW1lZEJ1
ZmZlcik6CisgICAgICAgIChnbDo6TWFwTmFtZWRCdWZmZXJSYW5nZSk6CisgICAgICAgIChnbDo6
TWVtb3J5QmFycmllckJ5UmVnaW9uKToKKyAgICAgICAgKGdsOjpOYW1lZEJ1ZmZlckRhdGEpOgor
ICAgICAgICAoZ2w6Ok5hbWVkQnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChnbDo6TmFtZWRCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcik6Cisg
ICAgICAgIChnbDo6TmFtZWRGcmFtZWJ1ZmZlckRyYXdCdWZmZXJzKToKKyAgICAgICAgKGdsOjpO
YW1lZEZyYW1lYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnbDo6TmFtZWRGcmFtZWJ1ZmZl
clJlYWRCdWZmZXIpOgorICAgICAgICAoZ2w6Ok5hbWVkRnJhbWVidWZmZXJSZW5kZXJidWZmZXIp
OgorICAgICAgICAoZ2w6Ok5hbWVkRnJhbWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKGdsOjpO
YW1lZEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGdsOjpOYW1lZFJlbmRlcmJ1
ZmZlclN0b3JhZ2UpOgorICAgICAgICAoZ2w6Ok5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKToKKyAgICAgICAgKGdsOjpSZWFkblBpeGVscyk6CisgICAgICAgIChnbDo6VGV4dHVy
ZUJhcnJpZXIpOgorICAgICAgICAoZ2w6OlRleHR1cmVCdWZmZXIpOgorICAgICAgICAoZ2w6OlRl
eHR1cmVCdWZmZXJSYW5nZSk6CisgICAgICAgIChnbDo6VGV4dHVyZVBhcmFtZXRlcklpdik6Cisg
ICAgICAgIChnbDo6VGV4dHVyZVBhcmFtZXRlckl1aXYpOgorICAgICAgICAoZ2w6OlRleHR1cmVQ
YXJhbWV0ZXJmKToKKyAgICAgICAgKGdsOjpUZXh0dXJlUGFyYW1ldGVyZnYpOgorICAgICAgICAo
Z2w6OlRleHR1cmVQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpUZXh0dXJlUGFyYW1ldGVyaXYp
OgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlMUQpOgorICAgICAgICAoZ2w6OlRleHR1cmVT
dG9yYWdlMkQpOgorICAgICAgICAoZ2w6OlRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZSk6Cisg
ICAgICAgIChnbDo6VGV4dHVyZVN0b3JhZ2UzRCk6CisgICAgICAgIChnbDo6VGV4dHVyZVN0b3Jh
Z2UzRE11bHRpc2FtcGxlKToKKyAgICAgICAgKGdsOjpUZXh0dXJlU3ViSW1hZ2UxRCk6CisgICAg
ICAgIChnbDo6VGV4dHVyZVN1YkltYWdlMkQpOgorICAgICAgICAoZ2w6OlRleHR1cmVTdWJJbWFn
ZTNEKToKKyAgICAgICAgKGdsOjpUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJhc2UpOgorICAgICAg
ICAoZ2w6OlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2w6OlVubWFw
TmFtZWRCdWZmZXIpOgorICAgICAgICAoZ2w6OlZlcnRleEFycmF5QXR0cmliQmluZGluZyk6Cisg
ICAgICAgIChnbDo6VmVydGV4QXJyYXlBdHRyaWJGb3JtYXQpOgorICAgICAgICAoZ2w6OlZlcnRl
eEFycmF5QXR0cmliSUZvcm1hdCk6CisgICAgICAgIChnbDo6VmVydGV4QXJyYXlBdHRyaWJMRm9y
bWF0KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBcnJheUJpbmRpbmdEaXZpc29yKToKKyAgICAgICAg
KGdsOjpWZXJ0ZXhBcnJheUVsZW1lbnRCdWZmZXIpOgorICAgICAgICAoZ2w6OlZlcnRleEFycmF5
VmVydGV4QnVmZmVyKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlcnMpOgor
ICAgICAgICAqIHNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1dG9nZW4uY3BwOgorICAg
ICAgICAoZ2w6Ok11bHRpRHJhd0FycmF5c0luZGlyZWN0Q291bnQpOgorICAgICAgICAoZ2w6Ok11
bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3VudCk6CisgICAgICAgIChnbDo6UG9seWdvbk9mZnNl
dENsYW1wKToKKyAgICAgICAgKGdsOjpTcGVjaWFsaXplU2hhZGVyKToKKyAgICAgICAgKiBzcmMv
bGliR0xFU3YyLmduaToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzFfMF9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpBbHBoYUZ1bmMpOgorICAgICAgICAoZ2w6
OkFscGhhRnVuY3gpOgorICAgICAgICAoZ2w6OkNsZWFyQ29sb3J4KToKKyAgICAgICAgKGdsOjpD
bGVhckRlcHRoeCk6CisgICAgICAgIChnbDo6Q2xpZW50QWN0aXZlVGV4dHVyZSk6CisgICAgICAg
IChnbDo6Q2xpcFBsYW5lZik6CisgICAgICAgIChnbDo6Q2xpcFBsYW5leCk6CisgICAgICAgIChn
bDo6Q29sb3I0Zik6CisgICAgICAgIChnbDo6Q29sb3I0dWIpOgorICAgICAgICAoZ2w6OkNvbG9y
NHgpOgorICAgICAgICAoZ2w6OkNvbG9yUG9pbnRlcik6CisgICAgICAgIChnbDo6RGVwdGhSYW5n
ZXgpOgorICAgICAgICAoZ2w6OkRpc2FibGVDbGllbnRTdGF0ZSk6CisgICAgICAgIChnbDo6RW5h
YmxlQ2xpZW50U3RhdGUpOgorICAgICAgICAoZ2w6OkZvZ2YpOgorICAgICAgICAoZ2w6OkZvZ2Z2
KToKKyAgICAgICAgKGdsOjpGb2d4KToKKyAgICAgICAgKGdsOjpGb2d4dik6CisgICAgICAgIChn
bDo6RnJ1c3R1bWYpOgorICAgICAgICAoZ2w6OkZydXN0dW14KToKKyAgICAgICAgKGdsOjpHZXRD
bGlwUGxhbmVmKToKKyAgICAgICAgKGdsOjpHZXRDbGlwUGxhbmV4KToKKyAgICAgICAgKGdsOjpH
ZXRGaXhlZHYpOgorICAgICAgICAoZ2w6OkdldExpZ2h0ZnYpOgorICAgICAgICAoZ2w6OkdldExp
Z2h0eHYpOgorICAgICAgICAoZ2w6OkdldE1hdGVyaWFsZnYpOgorICAgICAgICAoZ2w6OkdldE1h
dGVyaWFseHYpOgorICAgICAgICAoZ2w6OkdldFRleEVudmZ2KToKKyAgICAgICAgKGdsOjpHZXRU
ZXhFbnZpdik6CisgICAgICAgIChnbDo6R2V0VGV4RW52eHYpOgorICAgICAgICAoZ2w6OkdldFRl
eFBhcmFtZXRlcnh2KToKKyAgICAgICAgKGdsOjpMaWdodE1vZGVsZik6CisgICAgICAgIChnbDo6
TGlnaHRNb2RlbGZ2KToKKyAgICAgICAgKGdsOjpMaWdodE1vZGVseCk6CisgICAgICAgIChnbDo6
TGlnaHRNb2RlbHh2KToKKyAgICAgICAgKGdsOjpMaWdodGYpOgorICAgICAgICAoZ2w6OkxpZ2h0
ZnYpOgorICAgICAgICAoZ2w6OkxpZ2h0eCk6CisgICAgICAgIChnbDo6TGlnaHR4dik6CisgICAg
ICAgIChnbDo6TGluZVdpZHRoeCk6CisgICAgICAgIChnbDo6TG9hZElkZW50aXR5KToKKyAgICAg
ICAgKGdsOjpMb2FkTWF0cml4Zik6CisgICAgICAgIChnbDo6TG9hZE1hdHJpeHgpOgorICAgICAg
ICAoZ2w6OkxvZ2ljT3ApOgorICAgICAgICAoZ2w6Ok1hdGVyaWFsZik6CisgICAgICAgIChnbDo6
TWF0ZXJpYWxmdik6CisgICAgICAgIChnbDo6TWF0ZXJpYWx4KToKKyAgICAgICAgKGdsOjpNYXRl
cmlhbHh2KToKKyAgICAgICAgKGdsOjpNYXRyaXhNb2RlKToKKyAgICAgICAgKGdsOjpNdWx0TWF0
cml4Zik6CisgICAgICAgIChnbDo6TXVsdE1hdHJpeHgpOgorICAgICAgICAoZ2w6Ok11bHRpVGV4
Q29vcmQ0Zik6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDR4KToKKyAgICAgICAgKGdsOjpO
b3JtYWwzZik6CisgICAgICAgIChnbDo6Tm9ybWFsM3gpOgorICAgICAgICAoZ2w6Ok5vcm1hbFBv
aW50ZXIpOgorICAgICAgICAoZ2w6Ok9ydGhvZik6CisgICAgICAgIChnbDo6T3J0aG94KToKKyAg
ICAgICAgKGdsOjpQb2ludFBhcmFtZXRlcmYpOgorICAgICAgICAoZ2w6OlBvaW50UGFyYW1ldGVy
ZnYpOgorICAgICAgICAoZ2w6OlBvaW50UGFyYW1ldGVyeCk6CisgICAgICAgIChnbDo6UG9pbnRQ
YXJhbWV0ZXJ4dik6CisgICAgICAgIChnbDo6UG9pbnRTaXplKToKKyAgICAgICAgKGdsOjpQb2lu
dFNpemV4KToKKyAgICAgICAgKGdsOjpQb2x5Z29uT2Zmc2V0eCk6CisgICAgICAgIChnbDo6UG9w
TWF0cml4KToKKyAgICAgICAgKGdsOjpQdXNoTWF0cml4KToKKyAgICAgICAgKGdsOjpSb3RhdGVm
KToKKyAgICAgICAgKGdsOjpSb3RhdGV4KToKKyAgICAgICAgKGdsOjpTYW1wbGVDb3ZlcmFnZXgp
OgorICAgICAgICAoZ2w6OlNjYWxlZik6CisgICAgICAgIChnbDo6U2NhbGV4KToKKyAgICAgICAg
KGdsOjpTaGFkZU1vZGVsKToKKyAgICAgICAgKGdsOjpUZXhDb29yZFBvaW50ZXIpOgorICAgICAg
ICAoZ2w6OlRleEVudmYpOgorICAgICAgICAoZ2w6OlRleEVudmZ2KToKKyAgICAgICAgKGdsOjpU
ZXhFbnZpKToKKyAgICAgICAgKGdsOjpUZXhFbnZpdik6CisgICAgICAgIChnbDo6VGV4RW52eCk6
CisgICAgICAgIChnbDo6VGV4RW52eHYpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlcngpOgor
ICAgICAgICAoZ2w6OlRleFBhcmFtZXRlcnh2KToKKyAgICAgICAgKGdsOjpUcmFuc2xhdGVmKToK
KyAgICAgICAgKGdsOjpUcmFuc2xhdGV4KToKKyAgICAgICAgKGdsOjpWZXJ0ZXhQb2ludGVyKToK
KyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRvZ2VuLmNw
cDoKKyAgICAgICAgKGdsOjpBY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKGdsOjpBdHRhY2hTaGFk
ZXIpOgorICAgICAgICAoZ2w6OkJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChnbDo6Qmlu
ZEJ1ZmZlcik6CisgICAgICAgIChnbDo6QmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpC
aW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKGdsOjpCaW5kVGV4dHVyZSk6CisgICAgICAgIChn
bDo6QmxlbmRDb2xvcik6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvbik6CisgICAgICAgIChn
bDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKGdsOjpCbGVuZEZ1bmMpOgorICAg
ICAgICAoZ2w6OkJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKGdsOjpCdWZmZXJEYXRhKToK
KyAgICAgICAgKGdsOjpCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKToKKyAgICAgICAgKGdsOjpDbGVhcik6CisgICAgICAgIChnbDo6Q2xlYXJDb2xv
cik6CisgICAgICAgIChnbDo6Q2xlYXJEZXB0aGYpOgorICAgICAgICAoZ2w6OkNsZWFyU3RlbmNp
bCk6CisgICAgICAgIChnbDo6Q29sb3JNYXNrKToKKyAgICAgICAgKGdsOjpDb21waWxlU2hhZGVy
KToKKyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRCk6CisgICAgICAgIChnbDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoZ2w6OkNvcHlUZXhJbWFnZTJEKToKKyAg
ICAgICAgKGdsOjpDb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChnbDo6Q3JlYXRlUHJvZ3Jh
bSk6CisgICAgICAgIChnbDo6Q3JlYXRlU2hhZGVyKToKKyAgICAgICAgKGdsOjpDdWxsRmFjZSk6
CisgICAgICAgIChnbDo6RGVsZXRlQnVmZmVycyk6CisgICAgICAgIChnbDo6RGVsZXRlRnJhbWVi
dWZmZXJzKToKKyAgICAgICAgKGdsOjpEZWxldGVQcm9ncmFtKToKKyAgICAgICAgKGdsOjpEZWxl
dGVSZW5kZXJidWZmZXJzKToKKyAgICAgICAgKGdsOjpEZWxldGVTaGFkZXIpOgorICAgICAgICAo
Z2w6OkRlbGV0ZVRleHR1cmVzKToKKyAgICAgICAgKGdsOjpEZXB0aEZ1bmMpOgorICAgICAgICAo
Z2w6OkRlcHRoTWFzayk6CisgICAgICAgIChnbDo6RGVwdGhSYW5nZWYpOgorICAgICAgICAoZ2w6
OkRldGFjaFNoYWRlcik6CisgICAgICAgIChnbDo6RGlzYWJsZSk6CisgICAgICAgIChnbDo6RGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKGdsOjpEcmF3QXJyYXlzKToKKyAgICAg
ICAgKGdsOjpEcmF3RWxlbWVudHMpOgorICAgICAgICAoZ2w6OkVuYWJsZSk6CisgICAgICAgIChn
bDo6RW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoZ2w6OkZpbmlzaCk6CisgICAg
ICAgIChnbDo6Rmx1c2gpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToK
KyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChnbDo6RnJvbnRG
YWNlKToKKyAgICAgICAgKGdsOjpHZW5CdWZmZXJzKToKKyAgICAgICAgKGdsOjpHZW5GcmFtZWJ1
ZmZlcnMpOgorICAgICAgICAoZ2w6OkdlblJlbmRlcmJ1ZmZlcnMpOgorICAgICAgICAoZ2w6Okdl
blRleHR1cmVzKToKKyAgICAgICAgKGdsOjpHZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChnbDo6
R2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKGdsOjpHZXRBY3RpdmVVbmlmb3JtKToKKyAgICAg
ICAgKGdsOjpHZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoZ2w6OkdldEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKGdsOjpHZXRCb29sZWFudik6CisgICAgICAgIChnbDo6R2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OkdldEVycm9yKToKKyAgICAgICAgKGdsOjpHZXRG
bG9hdHYpOgorICAgICAgICAoZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KToKKyAgICAgICAgKGdsOjpHZXRJbnRlZ2Vydik6CisgICAgICAgIChnbDo6R2V0UHJvZ3JhbUlu
Zm9Mb2cpOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1pdik6CisgICAgICAgIChnbDo6R2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OkdldFNoYWRlckluZm9Mb2cpOgor
ICAgICAgICAoZ2w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChnbDo6R2V0
U2hhZGVyU291cmNlKToKKyAgICAgICAgKGdsOjpHZXRTaGFkZXJpdik6CisgICAgICAgIChnbDo6
R2V0U3RyaW5nKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJmdik6CisgICAgICAgIChn
bDo6R2V0VGV4UGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OkdldFVuaWZvcm1Mb2NhdGlvbik6
CisgICAgICAgIChnbDo6R2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKGdsOjpHZXRVbmlmb3JtaXYp
OgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KToKKyAgICAgICAgKGdsOjpH
ZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChnbDo6R2V0VmVydGV4QXR0cmliaXYpOgorICAg
ICAgICAoZ2w6OkhpbnQpOgorICAgICAgICAoZ2w6OklzQnVmZmVyKToKKyAgICAgICAgKGdsOjpJ
c0VuYWJsZWQpOgorICAgICAgICAoZ2w6OklzRnJhbWVidWZmZXIpOgorICAgICAgICAoZ2w6Oklz
UHJvZ3JhbSk6CisgICAgICAgIChnbDo6SXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoZ2w6Oklz
U2hhZGVyKToKKyAgICAgICAgKGdsOjpJc1RleHR1cmUpOgorICAgICAgICAoZ2w6OkxpbmVXaWR0
aCk6CisgICAgICAgIChnbDo6TGlua1Byb2dyYW0pOgorICAgICAgICAoZ2w6OlBpeGVsU3RvcmVp
KToKKyAgICAgICAgKGdsOjpQb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKGdsOjpSZWFkUGl4ZWxz
KToKKyAgICAgICAgKGdsOjpSZWxlYXNlU2hhZGVyQ29tcGlsZXIpOgorICAgICAgICAoZ2w6OlJl
bmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoZ2w6OlNhbXBsZUNvdmVyYWdlKToKKyAgICAg
ICAgKGdsOjpTY2lzc29yKToKKyAgICAgICAgKGdsOjpTaGFkZXJCaW5hcnkpOgorICAgICAgICAo
Z2w6OlNoYWRlclNvdXJjZSk6CisgICAgICAgIChnbDo6U3RlbmNpbEZ1bmMpOgorICAgICAgICAo
Z2w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoZ2w6OlN0ZW5jaWxNYXNrKToKKyAg
ICAgICAgKGdsOjpTdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKGdsOjpTdGVuY2lsT3Ap
OgorICAgICAgICAoZ2w6OlN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKGdsOjpUZXhJbWFn
ZTJEKToKKyAgICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdsOjpUZXhQYXJh
bWV0ZXJmdik6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChnbDo6VGV4
UGFyYW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlRleFN1YkltYWdlMkQpOgorICAgICAgICAoZ2w6
OlVuaWZvcm0xZik6CisgICAgICAgIChnbDo6VW5pZm9ybTFmdik6CisgICAgICAgIChnbDo6VW5p
Zm9ybTFpKToKKyAgICAgICAgKGdsOjpVbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpVbmlmb3Jt
MmYpOgorICAgICAgICAoZ2w6OlVuaWZvcm0yZnYpOgorICAgICAgICAoZ2w6OlVuaWZvcm0yaSk6
CisgICAgICAgIChnbDo6VW5pZm9ybTJpdik6CisgICAgICAgIChnbDo6VW5pZm9ybTNmKToKKyAg
ICAgICAgKGdsOjpVbmlmb3JtM2Z2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtM2kpOgorICAgICAg
ICAoZ2w6OlVuaWZvcm0zaXYpOgorICAgICAgICAoZ2w6OlVuaWZvcm00Zik6CisgICAgICAgIChn
bDo6VW5pZm9ybTRmdik6CisgICAgICAgIChnbDo6VW5pZm9ybTRpKToKKyAgICAgICAgKGdsOjpV
bmlmb3JtNGl2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKGds
OjpVbmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4NGZ2KToKKyAg
ICAgICAgKGdsOjpVc2VQcm9ncmFtKToKKyAgICAgICAgKGdsOjpWYWxpZGF0ZVByb2dyYW0pOgor
ICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIx
ZnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhB
dHRyaWIyZnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKGdsOjpW
ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYjRmKToKKyAgICAgICAg
KGdsOjpWZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYlBvaW50ZXIp
OgorICAgICAgICAoZ2w6OlZpZXdwb3J0KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2VudHJ5
X3BvaW50c19nbGVzXzNfMF9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpCZWdpblF1ZXJ5KToK
KyAgICAgICAgKGdsOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGdsOjpCaW5k
QnVmZmVyQmFzZSk6CisgICAgICAgIChnbDo6QmluZEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGds
OjpCaW5kU2FtcGxlcik6CisgICAgICAgIChnbDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKGdsOjpCaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoZ2w6OkJsaXRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChnbDo6Q2xlYXJCdWZmZXJmaSk6CisgICAgICAgIChnbDo6Q2xlYXJCdWZm
ZXJmdik6CisgICAgICAgIChnbDo6Q2xlYXJCdWZmZXJpdik6CisgICAgICAgIChnbDo6Q2xlYXJC
dWZmZXJ1aXYpOgorICAgICAgICAoZ2w6OkNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKGdsOjpD
b21wcmVzc2VkVGV4SW1hZ2UzRCk6CisgICAgICAgIChnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
M0QpOgorICAgICAgICAoZ2w6OkNvcHlCdWZmZXJTdWJEYXRhKToKKyAgICAgICAgKGdsOjpDb3B5
VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChnbDo6RGVsZXRlUXVlcmllcyk6CisgICAgICAgIChn
bDo6RGVsZXRlU2FtcGxlcnMpOgorICAgICAgICAoZ2w6OkRlbGV0ZVN5bmMpOgorICAgICAgICAo
Z2w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyk6CisgICAgICAgIChnbDo6RGVsZXRlVmVydGV4
QXJyYXlzKToKKyAgICAgICAgKGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKGds
OjpEcmF3QnVmZmVycyk6CisgICAgICAgIChnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAg
ICAgICAgKGdsOjpEcmF3UmFuZ2VFbGVtZW50cyk6CisgICAgICAgIChnbDo6RW5kUXVlcnkpOgor
ICAgICAgICAoZ2w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKGdsOjpGZW5jZVN5
bmMpOgorICAgICAgICAoZ2w6OkZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKGdsOjpHZW5RdWVyaWVzKToKKyAg
ICAgICAgKGdsOjpHZW5TYW1wbGVycyk6CisgICAgICAgIChnbDo6R2VuVHJhbnNmb3JtRmVlZGJh
Y2tzKToKKyAgICAgICAgKGdsOjpHZW5WZXJ0ZXhBcnJheXMpOgorICAgICAgICAoZ2w6OkdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWUpOgorICAgICAgICAoZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KToKKyAgICAgICAgKGdsOjpHZXRBY3RpdmVVbmlmb3Jtc2l2KToKKyAgICAgICAgKGdsOjpH
ZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KToKKyAgICAgICAgKGdsOjpHZXRCdWZmZXJQb2ludGVydik6
CisgICAgICAgIChnbDo6R2V0RnJhZ0RhdGFMb2NhdGlvbik6CisgICAgICAgIChnbDo6R2V0SW50
ZWdlcjY0aV92KToKKyAgICAgICAgKGdsOjpHZXRJbnRlZ2VyNjR2KToKKyAgICAgICAgKGdsOjpH
ZXRJbnRlZ2VyaV92KToKKyAgICAgICAgKGdsOjpHZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAgICAg
ICAgKGdsOjpHZXRQcm9ncmFtQmluYXJ5KToKKyAgICAgICAgKGdsOjpHZXRRdWVyeU9iamVjdHVp
dik6CisgICAgICAgIChnbDo6R2V0UXVlcnlpdik6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBh
cmFtZXRlcmZ2KToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXYpOgorICAgICAg
ICAoZ2w6OkdldFN0cmluZ2kpOgorICAgICAgICAoZ2w6OkdldFN5bmNpdik6CisgICAgICAgIChn
bDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKToKKyAgICAgICAgKGdsOjpHZXRVbmlmb3Jt
QmxvY2tJbmRleCk6CisgICAgICAgIChnbDo6R2V0VW5pZm9ybUluZGljZXMpOgorICAgICAgICAo
Z2w6OkdldFVuaWZvcm11aXYpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYklpdik6Cisg
ICAgICAgIChnbDo6R2V0VmVydGV4QXR0cmliSXVpdik6CisgICAgICAgIChnbDo6SW52YWxpZGF0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKGdsOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIpOgor
ICAgICAgICAoZ2w6OklzUXVlcnkpOgorICAgICAgICAoZ2w6OklzU2FtcGxlcik6CisgICAgICAg
IChnbDo6SXNTeW5jKToKKyAgICAgICAgKGdsOjpJc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAg
ICAgKGdsOjpJc1ZlcnRleEFycmF5KToKKyAgICAgICAgKGdsOjpNYXBCdWZmZXJSYW5nZSk6Cisg
ICAgICAgIChnbDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChnbDo6UHJvZ3Jh
bUJpbmFyeSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVBhcmFtZXRlcmkpOgorICAgICAgICAoZ2w6
OlJlYWRCdWZmZXIpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZSk6CisgICAgICAgIChnbDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoZ2w6
OlNhbXBsZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVyZnYpOgor
ICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKGdsOjpTYW1wbGVyUGFy
YW1ldGVyaXYpOgorICAgICAgICAoZ2w6OlRleEltYWdlM0QpOgorICAgICAgICAoZ2w6OlRleFN0
b3JhZ2UyRCk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTNEKToKKyAgICAgICAgKGdsOjpUZXhT
dWJJbWFnZTNEKToKKyAgICAgICAgKGdsOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAg
ICAgICAgKGdsOjpVbmlmb3JtMXVpKToKKyAgICAgICAgKGdsOjpVbmlmb3JtMXVpdik6CisgICAg
ICAgIChnbDo6VW5pZm9ybTJ1aSk6CisgICAgICAgIChnbDo6VW5pZm9ybTJ1aXYpOgorICAgICAg
ICAoZ2w6OlVuaWZvcm0zdWkpOgorICAgICAgICAoZ2w6OlVuaWZvcm0zdWl2KToKKyAgICAgICAg
KGdsOjpVbmlmb3JtNHVpKToKKyAgICAgICAgKGdsOjpVbmlmb3JtNHVpdik6CisgICAgICAgIChn
bDo6VW5pZm9ybUJsb2NrQmluZGluZyk6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDJ4M2Z2
KToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoZ2w6OlVuaWZv
cm1NYXRyaXgzeDJmdik6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAg
ICAgKGdsOjpVbmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoZ2w6OlVuaWZvcm1NYXRyaXg0
eDNmdik6CisgICAgICAgIChnbDo6VW5tYXBCdWZmZXIpOgorICAgICAgICAoZ2w6OlZlcnRleEF0
dHJpYkRpdmlzb3IpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYkk0aSk6CisgICAgICAgIChn
bDo6VmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliSTR1aSk6Cisg
ICAgICAgIChnbDo6VmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJp
YklQb2ludGVyKToKKyAgICAgICAgKGdsOjpXYWl0U3luYyk6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzFfYXV0b2dlbi5jcHA6CisgICAgICAgIChnbDo6QWN0
aXZlU2hhZGVyUHJvZ3JhbSk6CisgICAgICAgIChnbDo6QmluZEltYWdlVGV4dHVyZSk6CisgICAg
ICAgIChnbDo6QmluZFByb2dyYW1QaXBlbGluZSk6CisgICAgICAgIChnbDo6QmluZFZlcnRleEJ1
ZmZlcik6CisgICAgICAgIChnbDo6Q3JlYXRlU2hhZGVyUHJvZ3JhbXYpOgorICAgICAgICAoZ2w6
OkRlbGV0ZVByb2dyYW1QaXBlbGluZXMpOgorICAgICAgICAoZ2w6OkRpc3BhdGNoQ29tcHV0ZSk6
CisgICAgICAgIChnbDo6RGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QpOgorICAgICAgICAoZ2w6OkRy
YXdBcnJheXNJbmRpcmVjdCk6CisgICAgICAgIChnbDo6RHJhd0VsZW1lbnRzSW5kaXJlY3QpOgor
ICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChnbDo6R2VuUHJv
Z3JhbVBpcGVsaW5lcyk6CisgICAgICAgIChnbDo6R2V0Qm9vbGVhbmlfdik6CisgICAgICAgIChn
bDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChnbDo6R2V0TXVsdGlzYW1w
bGVmdik6CisgICAgICAgIChnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2KToKKyAgICAgICAgKGds
OjpHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtUGlw
ZWxpbmVpdik6CisgICAgICAgIChnbDo6R2V0UHJvZ3JhbVJlc291cmNlSW5kZXgpOgorICAgICAg
ICAoZ2w6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKToKKyAgICAgICAgKGdsOjpHZXRQcm9n
cmFtUmVzb3VyY2VOYW1lKToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtUmVzb3VyY2Vpdik6Cisg
ICAgICAgIChnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdik6CisgICAgICAgIChnbDo6R2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdik6CisgICAgICAgIChnbDo6SXNQcm9ncmFtUGlwZWxpbmUpOgorICAg
ICAgICAoZ2w6Ok1lbW9yeUJhcnJpZXIpOgorICAgICAgICAoZ2w6Ok1lbW9yeUJhcnJpZXJCeVJl
Z2lvbik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0xZik6CisgICAgICAgIChnbDo6UHJv
Z3JhbVVuaWZvcm0xZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMWkpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1Vbmlmb3JtMWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTF1
aSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0xdWl2KToKKyAgICAgICAgKGdsOjpQcm9n
cmFtVW5pZm9ybTJmKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTJmdik6CisgICAgICAg
IChnbDo6UHJvZ3JhbVVuaWZvcm0yaSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0yaXYp
OgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMnVpKToKKyAgICAgICAgKGdsOjpQcm9ncmFt
VW5pZm9ybTJ1aXYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtM2YpOgorICAgICAgICAo
Z2w6OlByb2dyYW1Vbmlmb3JtM2Z2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTNpKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTNpdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVu
aWZvcm0zdWkpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtM3Vpdik6CisgICAgICAgIChn
bDo6UHJvZ3JhbVVuaWZvcm00Zik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm00ZnYpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtNGkpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlm
b3JtNGl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTR1aSk6CisgICAgICAgIChnbDo6
UHJvZ3JhbVVuaWZvcm00dWl2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1hdHJpeDJm
dik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdik6CisgICAgICAgIChn
bDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAoZ2w6OlBy
b2dyYW1Vbmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1hdHJp
eDR4MmZ2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KToKKyAgICAg
ICAgKGdsOjpTYW1wbGVNYXNraSk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTJETXVsdGlzYW1w
bGUpOgorICAgICAgICAoZ2w6OlVzZVByb2dyYW1TdGFnZXMpOgorICAgICAgICAoZ2w6OlZhbGlk
YXRlUHJvZ3JhbVBpcGVsaW5lKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJCaW5kaW5nKToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJGb3JtYXQpOgorICAgICAgICAoZ2w6OlZlcnRleEF0
dHJpYklGb3JtYXQpOgorICAgICAgICAoZ2w6OlZlcnRleEJpbmRpbmdEaXZpc29yKToKKyAgICAg
ICAgKiBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMl9hdXRvZ2VuLmNwcDoKKyAg
ICAgICAgKGdsOjpCbGVuZEJhcnJpZXIpOgorICAgICAgICAoZ2w6OkJsZW5kRXF1YXRpb25TZXBh
cmF0ZWkpOgorICAgICAgICAoZ2w6OkJsZW5kRXF1YXRpb25pKToKKyAgICAgICAgKGdsOjpCbGVu
ZEZ1bmNTZXBhcmF0ZWkpOgorICAgICAgICAoZ2w6OkJsZW5kRnVuY2kpOgorICAgICAgICAoZ2w6
OkNvbG9yTWFza2kpOgorICAgICAgICAoZ2w6OkNvcHlJbWFnZVN1YkRhdGEpOgorICAgICAgICAo
Z2w6OkRlYnVnTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VDb250
cm9sKToKKyAgICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VJbnNlcnQpOgorICAgICAgICAoZ2w6OkRp
c2FibGVpKToKKyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNCYXNlVmVydGV4KToKKyAgICAgICAg
KGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KToKKyAgICAgICAgKGdsOjpEcmF3
UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgpOgorICAgICAgICAoZ2w6OkVuYWJsZWkpOgorICAgICAg
ICAoZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChnbDo6R2V0RGVidWdNZXNzYWdl
TG9nKToKKyAgICAgICAgKGdsOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKToKKyAgICAgICAgKGds
OjpHZXRPYmplY3RMYWJlbCk6CisgICAgICAgIChnbDo6R2V0T2JqZWN0UHRyTGFiZWwpOgorICAg
ICAgICAoZ2w6OkdldFBvaW50ZXJ2KToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVy
SWl2KToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySXVpdik6CisgICAgICAgIChn
bDo6R2V0VGV4UGFyYW1ldGVySWl2KToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJJdWl2
KToKKyAgICAgICAgKGdsOjpHZXRuVW5pZm9ybWZ2KToKKyAgICAgICAgKGdsOjpHZXRuVW5pZm9y
bWl2KToKKyAgICAgICAgKGdsOjpHZXRuVW5pZm9ybXVpdik6CisgICAgICAgIChnbDo6SXNFbmFi
bGVkaSk6CisgICAgICAgIChnbDo6TWluU2FtcGxlU2hhZGluZyk6CisgICAgICAgIChnbDo6T2Jq
ZWN0TGFiZWwpOgorICAgICAgICAoZ2w6Ok9iamVjdFB0ckxhYmVsKToKKyAgICAgICAgKGdsOjpQ
YXRjaFBhcmFtZXRlcmkpOgorICAgICAgICAoZ2w6OlBvcERlYnVnR3JvdXApOgorICAgICAgICAo
Z2w6OlByaW1pdGl2ZUJvdW5kaW5nQm94KToKKyAgICAgICAgKGdsOjpQdXNoRGVidWdHcm91cCk6
CisgICAgICAgIChnbDo6UmVhZG5QaXhlbHMpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0
ZXJJaXYpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0ZXJJdWl2KToKKyAgICAgICAgKGds
OjpUZXhCdWZmZXIpOgorICAgICAgICAoZ2w6OlRleEJ1ZmZlclJhbmdlKToKKyAgICAgICAgKGds
OjpUZXhQYXJhbWV0ZXJJaXYpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlckl1aXYpOgorICAg
ICAgICAoZ2w6OlRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL2VudHJ5X3BvaW50c19nbGVzX2V4dF9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGdsOjpEcmF3
QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRSk6CisgICAgICAgIChnbDo6
TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUpOgorICAgICAgICAoZ2w6
Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFKToK
KyAgICAgICAgKGdsOjpDb3B5VGV4dHVyZTNEQU5HTEUpOgorICAgICAgICAoZ2w6OkNvcHlTdWJU
ZXh0dXJlM0RBTkdMRSk6CisgICAgICAgIChnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUpOgorICAg
ICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAg
KGdsOjpHZXRUZXhJbWFnZUFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRSZW5kZXJidWZmZXJJbWFn
ZUFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAg
ICAoZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoZ2w6OkltcG9ydE1lbW9yeVppcmNvbkhhbmRs
ZUFOR0xFKToKKyAgICAgICAgKGdsOjpNdWx0aURyYXdBcnJheXNBTkdMRSk6CisgICAgICAgIChn
bDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoZ2w6Ok11bHRpRHJh
d0VsZW1lbnRzQU5HTEUpOgorICAgICAgICAoZ2w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUpOgorICAgICAgICAoZ2w6OlByb3Zva2luZ1ZlcnRleEFOR0xFKToKKyAgICAgICAgKGds
OjpSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUpOgorICAgICAgICAoZ2w6OkRpc2FibGVFeHRlbnNpb25B
TkdMRSk6CisgICAgICAgIChnbDo6R2V0Qm9vbGVhbnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChn
bDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6R2V0Rmxv
YXR2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEludGVnZXJ2Um9idXN0QU5H
TEUpOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1pdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGds
OjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpH
ZXRTaGFkZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToK
KyAgICAgICAgKGdsOjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6R2V0
VW5pZm9ybWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9i
dXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAg
ICAoZ2w6OlJlYWRQaXhlbHNSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6VGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKToKKyAg
ICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdM
RSk6CisgICAgICAgIChnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGds
OjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4
SW1hZ2UzRFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRRdWVyeWl2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6Okdl
dEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEludGVnZXJpX3ZS
b2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6R2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xF
KToKKyAgICAgICAgKGdsOjpHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSk6CisgICAgICAg
IChnbDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6
OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6U2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6
OkdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6R2V0TXVsdGlzYW1wbGVm
dlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChnbDo6R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKToKKyAgICAg
ICAgKGdsOjpSZWFkblBpeGVsc1JvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSk6
CisgICAgICAgIChnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUpOgorICAgICAgICAoZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSk6CisgICAg
ICAgIChnbDo6U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpT
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RB
TkdMRSk6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSk6CisgICAgICAgIChnbDo6
SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUpOgorICAgICAgICAoZ2w6OlRleEltYWdl
MkRFeHRlcm5hbEFOR0xFKToKKyAgICAgICAgKGdsOjpJbnZhbGlkYXRlVGV4dHVyZUFOR0xFKToK
KyAgICAgICAgKGdsOjpUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKGds
OjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleExldmVs
UGFyYW1ldGVyZnZBTkdMRSk6CisgICAgICAgIChnbDo6R2V0TXVsdGlzYW1wbGVmdkFOR0xFKToK
KyAgICAgICAgKGdsOjpTYW1wbGVNYXNraUFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRVbmlmb3JtTG9jYXRpb25D
SFJPTUlVTSk6CisgICAgICAgIChnbDo6Q29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0pOgor
ICAgICAgICAoZ2w6OkNvcHlUZXh0dXJlQ0hST01JVU0pOgorICAgICAgICAoZ2w6OkNvcHlTdWJU
ZXh0dXJlQ0hST01JVU0pOgorICAgICAgICAoZ2w6OkNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVN
KToKKyAgICAgICAgKGdsOjpMb3NlQ29udGV4dENIUk9NSVVNKToKKyAgICAgICAgKGdsOjpCaW5k
RnJhZ0RhdGFMb2NhdGlvbkVYVCk6CisgICAgICAgIChnbDo6QmluZEZyYWdEYXRhTG9jYXRpb25J
bmRleGVkRVhUKToKKyAgICAgICAgKGdsOjpHZXRGcmFnRGF0YUluZGV4RVhUKToKKyAgICAgICAg
KGdsOjpHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKToKKyAgICAgICAgKGdsOjpJ
bnNlcnRFdmVudE1hcmtlckVYVCk6CisgICAgICAgIChnbDo6UG9wR3JvdXBNYXJrZXJFWFQpOgor
ICAgICAgICAoZ2w6OlB1c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChnbDo6RGlzY2FyZEZy
YW1lYnVmZmVyRVhUKToKKyAgICAgICAgKGdsOjpCZWdpblF1ZXJ5RVhUKToKKyAgICAgICAgKGds
OjpEZWxldGVRdWVyaWVzRVhUKToKKyAgICAgICAgKGdsOjpFbmRRdWVyeUVYVCk6CisgICAgICAg
IChnbDo6R2VuUXVlcmllc0VYVCk6CisgICAgICAgIChnbDo6R2V0SW50ZWdlcjY0dkVYVCk6Cisg
ICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3RpNjR2RVhUKToKKyAgICAgICAgKGdsOjpHZXRRdWVy
eU9iamVjdGl2RVhUKToKKyAgICAgICAgKGdsOjpHZXRRdWVyeU9iamVjdHVpNjR2RVhUKToKKyAg
ICAgICAgKGdsOjpHZXRRdWVyeU9iamVjdHVpdkVYVCk6CisgICAgICAgIChnbDo6R2V0UXVlcnlp
dkVYVCk6CisgICAgICAgIChnbDo6SXNRdWVyeUVYVCk6CisgICAgICAgIChnbDo6UXVlcnlDb3Vu
dGVyRVhUKToKKyAgICAgICAgKGdsOjpEcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChnbDo6Qmxl
bmRFcXVhdGlvblNlcGFyYXRlaUVYVCk6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvbmlFWFQp
OgorICAgICAgICAoZ2w6OkJsZW5kRnVuY1NlcGFyYXRlaUVYVCk6CisgICAgICAgIChnbDo6Qmxl
bmRGdW5jaUVYVCk6CisgICAgICAgIChnbDo6Q29sb3JNYXNraUVYVCk6CisgICAgICAgIChnbDo6
RGlzYWJsZWlFWFQpOgorICAgICAgICAoZ2w6OkVuYWJsZWlFWFQpOgorICAgICAgICAoZ2w6Oklz
RW5hYmxlZGlFWFQpOgorICAgICAgICAoZ2w6OkRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQpOgor
ICAgICAgICAoZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQpOgorICAgICAg
ICAoZ2w6OkRyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVCk6CisgICAgICAgIChnbDo6TXVs
dGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlclRl
eHR1cmVFWFQpOgorICAgICAgICAoZ2w6OkRyYXdBcnJheXNJbnN0YW5jZWRFWFQpOgorICAgICAg
ICAoZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEVYVCk6CisgICAgICAgIChnbDo6VmVydGV4QXR0
cmliRGl2aXNvckVYVCk6CisgICAgICAgIChnbDo6Rmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCk6
CisgICAgICAgIChnbDo6TWFwQnVmZmVyUmFuZ2VFWFQpOgorICAgICAgICAoZ2w6OkJ1ZmZlclN0
b3JhZ2VNZW1FWFQpOgorICAgICAgICAoZ2w6OkNyZWF0ZU1lbW9yeU9iamVjdHNFWFQpOgorICAg
ICAgICAoZ2w6OkRlbGV0ZU1lbW9yeU9iamVjdHNFWFQpOgorICAgICAgICAoZ2w6OkdldE1lbW9y
eU9iamVjdFBhcmFtZXRlcml2RVhUKToKKyAgICAgICAgKGdsOjpHZXRVbnNpZ25lZEJ5dGV2RVhU
KToKKyAgICAgICAgKGdsOjpHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQpOgorICAgICAgICAoZ2w6Oklz
TWVtb3J5T2JqZWN0RVhUKToKKyAgICAgICAgKGdsOjpNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVY
VCk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZU1lbTJERVhUKToKKyAgICAgICAgKGdsOjpUZXhT
dG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVCk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZU1lbTNE
RVhUKToKKyAgICAgICAgKGdsOjpUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVCk6CisgICAg
ICAgIChnbDo6SW1wb3J0TWVtb3J5RmRFWFQpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyVGV4
dHVyZTJETXVsdGlzYW1wbGVFWFQpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUVYVCk6CisgICAgICAgIChnbDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCk6
CisgICAgICAgIChnbDo6R2V0blVuaWZvcm1mdkVYVCk6CisgICAgICAgIChnbDo6R2V0blVuaWZv
cm1pdkVYVCk6CisgICAgICAgIChnbDo6UmVhZG5QaXhlbHNFWFQpOgorICAgICAgICAoZ2w6OkRl
bGV0ZVNlbWFwaG9yZXNFWFQpOgorICAgICAgICAoZ2w6OkdlblNlbWFwaG9yZXNFWFQpOgorICAg
ICAgICAoZ2w6OkdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKToKKyAgICAgICAgKGdsOjpJ
c1NlbWFwaG9yZUVYVCk6CisgICAgICAgIChnbDo6U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQp
OgorICAgICAgICAoZ2w6OlNpZ25hbFNlbWFwaG9yZUVYVCk6CisgICAgICAgIChnbDo6V2FpdFNl
bWFwaG9yZUVYVCk6CisgICAgICAgIChnbDo6SW1wb3J0U2VtYXBob3JlRmRFWFQpOgorICAgICAg
ICAoZ2w6OlRleFN0b3JhZ2UxREVYVCk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTJERVhUKToK
KyAgICAgICAgKGdsOjpUZXhTdG9yYWdlM0RFWFQpOgorICAgICAgICAoZ2w6OkRlYnVnTWVzc2Fn
ZUNhbGxiYWNrS0hSKToKKyAgICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKToKKyAg
ICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIpOgorICAgICAgICAoZ2w6OkdldERlYnVn
TWVzc2FnZUxvZ0tIUik6CisgICAgICAgIChnbDo6R2V0T2JqZWN0TGFiZWxLSFIpOgorICAgICAg
ICAoZ2w6OkdldE9iamVjdFB0ckxhYmVsS0hSKToKKyAgICAgICAgKGdsOjpHZXRQb2ludGVydktI
Uik6CisgICAgICAgIChnbDo6T2JqZWN0TGFiZWxLSFIpOgorICAgICAgICAoZ2w6Ok9iamVjdFB0
ckxhYmVsS0hSKToKKyAgICAgICAgKGdsOjpQb3BEZWJ1Z0dyb3VwS0hSKToKKyAgICAgICAgKGds
OjpQdXNoRGVidWdHcm91cEtIUik6CisgICAgICAgIChnbDo6TWF4U2hhZGVyQ29tcGlsZXJUaHJl
YWRzS0hSKToKKyAgICAgICAgKGdsOjpEZWxldGVGZW5jZXNOVik6CisgICAgICAgIChnbDo6Rmlu
aXNoRmVuY2VOVik6CisgICAgICAgIChnbDo6R2VuRmVuY2VzTlYpOgorICAgICAgICAoZ2w6Okdl
dEZlbmNlaXZOVik6CisgICAgICAgIChnbDo6SXNGZW5jZU5WKToKKyAgICAgICAgKGdsOjpTZXRG
ZW5jZU5WKToKKyAgICAgICAgKGdsOjpUZXN0RmVuY2VOVik6CisgICAgICAgIChnbDo6RUdMSW1h
Z2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKToKKyAgICAgICAgKGdsOjpFR0xJbWFnZVRh
cmdldFRleHR1cmUyRE9FUyk6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlaU9F
Uyk6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvbmlPRVMpOgorICAgICAgICAoZ2w6OkJsZW5k
RnVuY1NlcGFyYXRlaU9FUyk6CisgICAgICAgIChnbDo6QmxlbmRGdW5jaU9FUyk6CisgICAgICAg
IChnbDo6Q29sb3JNYXNraU9FUyk6CisgICAgICAgIChnbDo6RGlzYWJsZWlPRVMpOgorICAgICAg
ICAoZ2w6OkVuYWJsZWlPRVMpOgorICAgICAgICAoZ2w6OklzRW5hYmxlZGlPRVMpOgorICAgICAg
ICAoZ2w6OkRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMpOgorICAgICAgICAoZ2w6OkRyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMpOgorICAgICAgICAoZ2w6OkRyYXdSYW5nZUVsZW1l
bnRzQmFzZVZlcnRleE9FUyk6CisgICAgICAgIChnbDo6RHJhd1RleGZPRVMpOgorICAgICAgICAo
Z2w6OkRyYXdUZXhmdk9FUyk6CisgICAgICAgIChnbDo6RHJhd1RleGlPRVMpOgorICAgICAgICAo
Z2w6OkRyYXdUZXhpdk9FUyk6CisgICAgICAgIChnbDo6RHJhd1RleHNPRVMpOgorICAgICAgICAo
Z2w6OkRyYXdUZXhzdk9FUyk6CisgICAgICAgIChnbDo6RHJhd1RleHhPRVMpOgorICAgICAgICAo
Z2w6OkRyYXdUZXh4dk9FUyk6CisgICAgICAgIChnbDo6QmluZEZyYW1lYnVmZmVyT0VTKToKKyAg
ICAgICAgKGdsOjpCaW5kUmVuZGVyYnVmZmVyT0VTKToKKyAgICAgICAgKGdsOjpDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzT0VTKToKKyAgICAgICAgKGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnNPRVMpOgor
ICAgICAgICAoZ2w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMpOgorICAgICAgICAoZ2w6OkZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyT0VTKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUy
RE9FUyk6CisgICAgICAgIChnbDo6R2VuRnJhbWVidWZmZXJzT0VTKToKKyAgICAgICAgKGdsOjpH
ZW5SZW5kZXJidWZmZXJzT0VTKToKKyAgICAgICAgKGdsOjpHZW5lcmF0ZU1pcG1hcE9FUyk6Cisg
ICAgICAgIChnbDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMpOgorICAg
ICAgICAoZ2w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTKToKKyAgICAgICAgKGdsOjpJ
c0ZyYW1lYnVmZmVyT0VTKToKKyAgICAgICAgKGdsOjpJc1JlbmRlcmJ1ZmZlck9FUyk6CisgICAg
ICAgIChnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyk6CisgICAgICAgIChnbDo6R2V0UHJvZ3Jh
bUJpbmFyeU9FUyk6CisgICAgICAgIChnbDo6UHJvZ3JhbUJpbmFyeU9FUyk6CisgICAgICAgIChn
bDo6R2V0QnVmZmVyUG9pbnRlcnZPRVMpOgorICAgICAgICAoZ2w6Ok1hcEJ1ZmZlck9FUyk6Cisg
ICAgICAgIChnbDo6VW5tYXBCdWZmZXJPRVMpOgorICAgICAgICAoZ2w6OkN1cnJlbnRQYWxldHRl
TWF0cml4T0VTKToKKyAgICAgICAgKGdsOjpMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhP
RVMpOgorICAgICAgICAoZ2w6Ok1hdHJpeEluZGV4UG9pbnRlck9FUyk6CisgICAgICAgIChnbDo6
V2VpZ2h0UG9pbnRlck9FUyk6CisgICAgICAgIChnbDo6UG9pbnRTaXplUG9pbnRlck9FUyk6Cisg
ICAgICAgIChnbDo6UXVlcnlNYXRyaXh4T0VTKToKKyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4
SW1hZ2UzRE9FUyk6CisgICAgICAgIChnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMpOgor
ICAgICAgICAoZ2w6OkNvcHlUZXhTdWJJbWFnZTNET0VTKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1
ZmZlclRleHR1cmUzRE9FUyk6CisgICAgICAgIChnbDo6VGV4SW1hZ2UzRE9FUyk6CisgICAgICAg
IChnbDo6VGV4U3ViSW1hZ2UzRE9FUyk6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRl
cklpdk9FUyk6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMpOgorICAg
ICAgICAoZ2w6OkdldFRleFBhcmFtZXRlcklpdk9FUyk6CisgICAgICAgIChnbDo6R2V0VGV4UGFy
YW1ldGVySXVpdk9FUyk6CisgICAgICAgIChnbDo6U2FtcGxlclBhcmFtZXRlcklpdk9FUyk6Cisg
ICAgICAgIChnbDo6U2FtcGxlclBhcmFtZXRlckl1aXZPRVMpOgorICAgICAgICAoZ2w6OlRleFBh
cmFtZXRlcklpdk9FUyk6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVySXVpdk9FUyk6CisgICAg
ICAgIChnbDo6R2V0VGV4R2VuZnZPRVMpOgorICAgICAgICAoZ2w6OkdldFRleEdlbml2T0VTKToK
KyAgICAgICAgKGdsOjpHZXRUZXhHZW54dk9FUyk6CisgICAgICAgIChnbDo6VGV4R2VuZk9FUyk6
CisgICAgICAgIChnbDo6VGV4R2VuZnZPRVMpOgorICAgICAgICAoZ2w6OlRleEdlbmlPRVMpOgor
ICAgICAgICAoZ2w6OlRleEdlbml2T0VTKToKKyAgICAgICAgKGdsOjpUZXhHZW54T0VTKToKKyAg
ICAgICAgKGdsOjpUZXhHZW54dk9FUyk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTNETXVsdGlz
YW1wbGVPRVMpOgorICAgICAgICAoZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChn
bDo6RGVsZXRlVmVydGV4QXJyYXlzT0VTKToKKyAgICAgICAgKGdsOjpHZW5WZXJ0ZXhBcnJheXNP
RVMpOgorICAgICAgICAoZ2w6OklzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoZ2w6OkZyYW1l
YnVmZmVyVGV4dHVyZU11bHRpdmlld09WUik6CisgICAgICAgIChnbDo6QWN0aXZlU2hhZGVyUHJv
Z3JhbUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6QWN0aXZlVGV4dHVyZUNvbnRleHRBTkdM
RSk6CisgICAgICAgIChnbDo6QWxwaGFGdW5jQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpB
bHBoYUZ1bmN4Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpBdHRhY2hTaGFkZXJDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OkJlZ2luUXVlcnlDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkJlZ2luUXVlcnlFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJlZ2luVHJhbnNm
b3JtRmVlZGJhY2tDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRBdHRyaWJMb2NhdGlv
bkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6QmluZEJ1ZmZlckNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6QmluZEJ1ZmZlckJhc2VDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJp
bmRCdWZmZXJSYW5nZUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6QmluZEZyYWdEYXRhTG9j
YXRpb25FWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRGcmFnRGF0YUxvY2F0aW9u
SW5kZXhlZEVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6QmluZEZyYW1lYnVmZmVyQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpCaW5kRnJhbWVidWZmZXJPRVNDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkJpbmRJbWFnZVRleHR1cmVDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkJpbmRQcm9ncmFtUGlwZWxpbmVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRS
ZW5kZXJidWZmZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRSZW5kZXJidWZmZXJP
RVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRTYW1wbGVyQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpCaW5kVGV4dHVyZUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Qmlu
ZFRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpCaW5kVmVydGV4
QXJyYXlDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJpbmRWZXJ0ZXhBcnJheU9FU0NvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6QmluZFZlcnRleEJ1ZmZlckNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6QmxlbmRCYXJyaWVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpCbGVu
ZENvbG9yQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpCbGVuZEVxdWF0aW9uQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OkJsZW5kRXF1YXRpb25pQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpCbGVuZEVxdWF0aW9u
aUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6QmxlbmRFcXVhdGlvbmlPRVNDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OkJsZW5kRnVuY0NvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6QmxlbmRGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJsZW5kRnVu
Y1NlcGFyYXRlaUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6QmxlbmRGdW5jU2VwYXJhdGVp
RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpCbGVuZEZ1bmNTZXBhcmF0ZWlPRVNDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJsZW5kRnVuY2lDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OkJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJsZW5kRnVu
Y2lPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJsaXRGcmFtZWJ1ZmZlckNvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkJ1ZmZlckRhdGFDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJ1ZmZl
clN0b3JhZ2VNZW1FWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkJ1ZmZlclN1YkRhdGFD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXNDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVNDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkNsZWFyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpDbGVh
ckJ1ZmZlcmZpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpDbGVhckJ1ZmZlcmZ2Q29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpDbGVhckJ1ZmZlcml2Q29udGV4dEFOR0xFKToKKyAgICAg
ICAgKGdsOjpDbGVhckJ1ZmZlcnVpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q2xlYXJD
b2xvckNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q2xlYXJDb2xvcnhDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkNsZWFyRGVwdGhmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpD
bGVhckRlcHRoeENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q2xlYXJTdGVuY2lsQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpDbGllbnRBY3RpdmVUZXh0dXJlQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpDbGllbnRXYWl0U3luY0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
Q2xpcFBsYW5lZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q2xpcFBsYW5leENvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6Q29sb3I0ZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
Q29sb3I0dWJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkNvbG9yNHhDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkNvbG9yTWFza0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29s
b3JNYXNraUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29sb3JNYXNraUVYVENvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6Q29sb3JNYXNraU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6Q29sb3JQb2ludGVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpDb21waWxlU2hh
ZGVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UyRENvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29tcHJlc3NlZFRleEltYWdlM0RDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkNvbXByZXNzZWRUZXhJbWFnZTNET0VTQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRENvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0RDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpD
b3B5QnVmZmVyU3ViRGF0YUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29weUltYWdlU3Vi
RGF0YUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29weVRleEltYWdlMkRDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkNvcHlUZXhTdWJJbWFnZTJEQ29udGV4dEFOR0xFKToKKyAgICAg
ICAgKGdsOjpDb3B5VGV4U3ViSW1hZ2UzRENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29w
eVRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkNyZWF0ZU1lbW9y
eU9iamVjdHNFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkNyZWF0ZVByb2dyYW1Db250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkNyZWF0ZVNoYWRlckNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6Q3JlYXRlU2hhZGVyUHJvZ3JhbXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OkN1bGxGYWNlQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpDdXJyZW50UGFsZXR0ZU1hdHJp
eE9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RGVidWdNZXNzYWdlQ2FsbGJhY2tDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRlYnVnTWVzc2FnZUNhbGxiYWNrS0hSQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VDb250cm9sQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpEZWJ1Z01lc3NhZ2VDb250cm9sS0hSQ29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpEZWJ1Z01lc3NhZ2VJbnNlcnRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRlYnVn
TWVzc2FnZUluc2VydEtIUkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RGVsZXRlQnVmZmVy
c0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RGVsZXRlRmVuY2VzTlZDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkRlbGV0ZUZyYW1lYnVmZmVyc0NvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6RGVsZXRlRnJhbWVidWZmZXJzT0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpE
ZWxldGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVQ
cm9ncmFtQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVQcm9ncmFtUGlwZWxpbmVz
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVRdWVyaWVzQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpEZWxldGVRdWVyaWVzRVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpEZWxldGVSZW5kZXJidWZmZXJzQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVS
ZW5kZXJidWZmZXJzT0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVTYW1wbGVy
c0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RGVsZXRlU2VtYXBob3Jlc0VYVENvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6RGVsZXRlU2hhZGVyQ29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpEZWxldGVTeW5jQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVUZXh0dXJl
c0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZWxldGVWZXJ0ZXhBcnJheXNDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkRlbGV0ZVZlcnRleEFycmF5c09FU0NvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6RGVwdGhGdW5jQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEZXB0aE1hc2tD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRlcHRoUmFuZ2VmQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpEZXB0aFJhbmdleENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RGV0YWNo
U2hhZGVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEaXNhYmxlQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpEaXNhYmxlQ2xpZW50U3RhdGVDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
RGlzYWJsZWlDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRpc2FibGVpRVhUQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpEaXNhYmxlaU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6RGlzY2FyZEZyYW1lYnVmZmVyRVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEaXNw
YXRjaENvbXB1dGVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRpc3BhdGNoQ29tcHV0ZUlu
ZGlyZWN0Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3QXJyYXlzQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpEcmF3QXJyYXlzSW5kaXJlY3RDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OkRyYXdBcnJheXNJbnN0YW5jZWRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RHJhd0Fy
cmF5c0luc3RhbmNlZEVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RHJhd0J1ZmZlcnND
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdCdWZmZXJzRVhUQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRy
YXdFbGVtZW50c0Jhc2VWZXJ0ZXhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdFbGVtZW50
c0Jhc2VWZXJ0ZXhPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdFbGVtZW50c0lu
ZGlyZWN0Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVy
dGV4RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRC
YXNlVmVydGV4T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3RWxlbWVudHNJbnN0
YW5jZWRFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdSYW5nZUVsZW1lbnRzQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVENv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VT
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3VGV4Zk9FU0NvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6RHJhd1RleGZ2T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3
VGV4aU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RHJhd1RleGl2T0VTQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpEcmF3VGV4c09FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6RHJhd1RleHN2T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpEcmF3VGV4eE9FU0Nv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RHJhd1RleHh2T0VTQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVNDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpFbmFibGVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkVuYWJs
ZUNsaWVudFN0YXRlQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RW5hYmxlaUNvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6RW5hYmxlaUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RW5h
YmxlaU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RW5kUXVlcnlDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkVuZFF1ZXJ5RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpF
bmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RmVuY2VTeW5j
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpGaW5pc2hDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OkZpbmlzaEZlbmNlTlZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkZsdXNoQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpGb2dmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpGb2dmdkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Rm9neENvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6Rm9neHZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyUGFyYW1ldGVy
aUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXJDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyT0VTQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpGcmFtZWJ1ZmZlclRleHR1cmVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEQ29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRE9FU0NvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6RnJhbWVidWZmZXJUZXh0dXJlM0RPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OkZyYW1lYnVmZmVyVGV4dHVyZUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RnJhbWVi
dWZmZXJUZXh0dXJlTGF5ZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVy
VGV4dHVyZU11bHRpdmlld09WUkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RnJvbnRGYWNl
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpGcnVzdHVtZkNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6RnJ1c3R1bXhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdlbkJ1ZmZlcnND
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdlbkZlbmNlc05WQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpHZW5GcmFtZWJ1ZmZlcnNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Okdl
bkZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2VuUHJvZ3JhbVBp
cGVsaW5lc0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2VuUXVlcmllc0NvbnRleHRBTkdM
RSk6CisgICAgICAgIChnbDo6R2VuUXVlcmllc0VYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6R2VuUmVuZGVyYnVmZmVyc0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2VuUmVuZGVy
YnVmZmVyc09FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2VuU2FtcGxlcnNDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OkdlblNlbWFwaG9yZXNFWFRDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdlblRleHR1cmVzQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZW5UcmFu
c2Zvcm1GZWVkYmFja3NDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdlblZlcnRleEFycmF5
c0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2VuVmVydGV4QXJyYXlzT0VTQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpHZW5lcmF0ZU1pcG1hcENvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6R2VuZXJhdGVNaXBtYXBPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEFj
dGl2ZUF0dHJpYkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0QWN0aXZlVW5pZm9ybUNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZUNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXZDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkdldEFjdGl2ZVVuaWZvcm1zaXZDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldEF0dGFjaGVkU2hhZGVyc0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
R2V0QXR0cmliTG9jYXRpb25Db250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEJvb2xlYW5p
X3ZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEJvb2xlYW52Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Q29udGV4dEFOR0xFKToKKyAgICAg
ICAgKGdsOjpHZXRCdWZmZXJQYXJhbWV0ZXJpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
R2V0QnVmZmVyUG9pbnRlcnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEJ1ZmZlclBv
aW50ZXJ2T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRDbGlwUGxhbmVmQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRDbGlwUGxhbmV4Q29udGV4dEFOR0xFKToKKyAgICAg
ICAgKGdsOjpHZXREZWJ1Z01lc3NhZ2VMb2dDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Okdl
dERlYnVnTWVzc2FnZUxvZ0tIUkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0RXJyb3JD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEZlbmNlaXZOVkNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6R2V0Rml4ZWR2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRGbG9h
dHZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEZyYWdEYXRhSW5kZXhFWFRDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEZyYWdEYXRhTG9jYXRpb25Db250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Q29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9F
U0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0NvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVENvbnRleHRBTkdM
RSk6CisgICAgICAgIChnbDo6R2V0SW50ZWdlcjY0aV92Q29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpHZXRJbnRlZ2VyNjR2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRJbnRlZ2Vy
NjR2RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRJbnRlZ2VyaV92Q29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpHZXRJbnRlZ2VydkNvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6R2V0SW50ZXJuYWxmb3JtYXRpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0TGln
aHRmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0TGlnaHR4dkNvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6R2V0TWF0ZXJpYWxmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
R2V0TWF0ZXJpYWx4dkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0TWVtb3J5T2JqZWN0
UGFyYW1ldGVyaXZFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldE11bHRpc2FtcGxl
ZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldE9iamVjdExhYmVsQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpHZXRPYmplY3RMYWJlbEtIUkNvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6R2V0T2JqZWN0UHRyTGFiZWxDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldE9i
amVjdFB0ckxhYmVsS0hSQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRQb2ludGVydkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UG9pbnRlcnZLSFJDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFByb2dyYW1CaW5hcnlDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OkdldFByb2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFByb2dy
YW1JbmZvTG9nQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtSW50ZXJmYWNl
aXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1QaXBlbGluZUluZm9Mb2dD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1QaXBlbGluZWl2Q29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpHZXRQcm9ncmFtUmVzb3VyY2VJbmRleENvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25Db250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFRDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1SZXNvdXJjZU5hbWVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFByb2dyYW1SZXNvdXJjZWl2Q29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpHZXRQcm9ncmFtaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFF1ZXJ5T2Jq
ZWN0aTY0dkVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3RpdkVY
VENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3R1aTY0dkVYVENvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmplY3R1aXZDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpHZXRRdWVyeWl2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRRdWVyeWl2RVhU
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVND
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJaXZDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVNDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FU0NvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Okdl
dFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpH
ZXRTaGFkZXJJbmZvTG9nQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRTaGFkZXJQcmVj
aXNpb25Gb3JtYXRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFNoYWRlclNvdXJjZUNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0U2hhZGVyaXZDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldFN0cmluZ0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0U3RyaW5n
aUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0U3luY2l2Q29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpHZXRUZXhFbnZmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VGV4
RW52aXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleEVudnh2Q29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpHZXRUZXhHZW5mdk9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6R2V0VGV4R2VuaXZPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleEdlbnh2
T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Q29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Q29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJJaXZDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldFRleFBhcmFtZXRlcklpdk9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6R2V0VGV4UGFyYW1ldGVySXVpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VGV4
UGFyYW1ldGVySXVpdk9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VGV4UGFyYW1l
dGVyZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleFBhcmFtZXRlcml2Q29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJ4dkNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFVuaWZvcm1CbG9ja0luZGV4Q29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpHZXRVbmlmb3JtSW5kaWNlc0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VW5p
Zm9ybUxvY2F0aW9uQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRVbmlmb3JtZnZDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFVuaWZvcm1pdkNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6R2V0VW5pZm9ybXVpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VW5z
aWduZWRCeXRldkVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VW5zaWduZWRCeXRl
aV92RVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRWZXJ0ZXhBdHRyaWJJaXZDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYkl1aXZDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Q29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpHZXRWZXJ0ZXhBdHRyaWJmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
R2V0VmVydGV4QXR0cmliaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldG5Vbmlmb3Jt
ZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldG5Vbmlmb3JtZnZFWFRDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkdldG5Vbmlmb3JtaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkdldG5Vbmlmb3JtaXZFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldG5Vbmlm
b3JtdWl2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpIaW50Q29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpJbXBvcnRNZW1vcnlGZEVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
SW1wb3J0U2VtYXBob3JlRmRFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Okluc2VydEV2
ZW50TWFya2VyRVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpJbnZhbGlkYXRlRnJhbWVi
dWZmZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
ckNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6SXNCdWZmZXJDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OklzRW5hYmxlZENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6SXNFbmFibGVk
aUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6SXNFbmFibGVkaUVYVENvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6SXNFbmFibGVkaU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
SXNGZW5jZU5WQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpJc0ZyYW1lYnVmZmVyQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpJc0ZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpJc01lbW9yeU9iamVjdEVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
SXNQcm9ncmFtQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpJc1Byb2dyYW1QaXBlbGluZUNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6SXNRdWVyeUNvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6SXNRdWVyeUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6SXNSZW5kZXJidWZm
ZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OklzUmVuZGVyYnVmZmVyT0VTQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpJc1NlbWFwaG9yZUVYVENvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6SXNTYW1wbGVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpJc1NoYWRlckNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6SXNTeW5jQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpJc1RleHR1cmVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OklzVHJhbnNmb3JtRmVlZGJh
Y2tDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OklzVmVydGV4QXJyYXlDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OklzVmVydGV4QXJyYXlPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkxpZ2h0TW9kZWxmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpMaWdodE1vZGVsZnZD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkxpZ2h0TW9kZWx4Q29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpMaWdodE1vZGVseHZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkxpZ2h0
ZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6TGlnaHRmdkNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6TGlnaHR4Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpMaWdodHh2Q29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpMaW5lV2lkdGhDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkxpbmVXaWR0aHhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkxpbmtQcm9ncmFtQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpMb2FkSWRlbnRpdHlDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkxvYWRNYXRyaXhmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpMb2FkTWF0
cml4eENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6TG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3
TWF0cml4T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpMb2dpY09wQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpNYXBCdWZmZXJPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
Ok1hcEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpNYXBCdWZmZXJSYW5n
ZUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6TWF0ZXJpYWxmQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpNYXRlcmlhbGZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpNYXRl
cmlhbHhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Ok1hdGVyaWFseHZDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6Ok1hdHJpeEluZGV4UG9pbnRlck9FU0NvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6TWF0cml4TW9kZUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6TWF4U2hhZGVy
Q29tcGlsZXJUaHJlYWRzS0hSQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpNZW1vcnlCYXJy
aWVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpNZW1vcnlCYXJyaWVyQnlSZWdpb25Db250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Ok1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpNaW5TYW1wbGVTaGFkaW5nQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpNdWx0TWF0cml4ZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6TXVsdE1h
dHJpeHhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Ok11bHRpRHJhd0VsZW1lbnRzQmFzZVZl
cnRleEVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6TXVsdGlUZXhDb29yZDRmQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpNdWx0aVRleENvb3JkNHhDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6Ok5vcm1hbDNmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpOb3JtYWwzeENv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Tm9ybWFsUG9pbnRlckNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6T2JqZWN0TGFiZWxDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Ok9iamVj
dExhYmVsS0hSQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpPYmplY3RQdHJMYWJlbENvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6T2JqZWN0UHRyTGFiZWxLSFJDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6Ok9ydGhvZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6T3J0aG94Q29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQYXRjaFBhcmFtZXRlcmlDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OlBpeGVsU3RvcmVpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQb2ludFBhcmFt
ZXRlcmZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlBvaW50UGFyYW1ldGVyZnZDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OlBvaW50UGFyYW1ldGVyeENvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6UG9pbnRQYXJhbWV0ZXJ4dkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UG9p
bnRTaXplQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQb2ludFNpemVQb2ludGVyT0VTQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQb2ludFNpemV4Q29udGV4dEFOR0xFKToKKyAgICAg
ICAgKGdsOjpQb2x5Z29uT2Zmc2V0Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQb2x5Z29u
T2Zmc2V0eENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UG9wRGVidWdHcm91cENvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6UG9wRGVidWdHcm91cEtIUkNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6UG9wR3JvdXBNYXJrZXJFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlBv
cE1hdHJpeENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJpbWl0aXZlQm91bmRpbmdCb3hD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnlDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlByb2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OlByb2dyYW1QYXJhbWV0ZXJpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5p
Zm9ybTFmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTFmdkNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0xaUNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0xaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OlByb2dyYW1Vbmlmb3JtMXVpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5p
Zm9ybTF1aXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMmZDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMmZ2Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTJpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpQcm9ncmFtVW5pZm9ybTJpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVu
aWZvcm0ydWlDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtMnVpdkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0zZkNvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0zZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OlByb2dyYW1Vbmlmb3JtM2lDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1V
bmlmb3JtM2l2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTN1aUNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm0zdWl2Q29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTRmQ29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpQcm9ncmFtVW5pZm9ybTRmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3Jh
bVVuaWZvcm00aUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm00aXZD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtNHVpQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtVW5pZm9ybTR1aXZDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQcm9n
cmFtVW5pZm9ybU1hdHJpeDNmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDJmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDRmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UHJvZ3JhbVVuaWZvcm1N
YXRyaXg0ZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4
NHgyZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlByb2dyYW1Vbmlmb3JtTWF0cml4NHgz
ZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlB1c2hEZWJ1Z0dyb3VwQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpQdXNoRGVidWdHcm91cEtIUkNvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6UHVzaEdyb3VwTWFya2VyRVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpQdXNo
TWF0cml4Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpRdWVyeUNvdW50ZXJFWFRDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OlF1ZXJ5TWF0cml4eE9FU0NvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6UmVhZEJ1ZmZlckNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UmVhZFBpeGVs
c0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UmVhZG5QaXhlbHNDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlJlYWRuUGl4ZWxzRVhUQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpS
ZWxlYXNlU2hhZGVyQ29tcGlsZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2VDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UmVu
ZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6UmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlJvdGF0ZWZDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OlJvdGF0ZXhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OlNhbXBsZUNvdmVyYWdlQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTYW1wbGVDb3ZlcmFn
ZXhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlNhbXBsZU1hc2tpQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVySWl2Q29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpTYW1wbGVyUGFyYW1ldGVySWl2T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpT
YW1wbGVyUGFyYW1ldGVySXVpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6U2FtcGxlclBh
cmFtZXRlckl1aXZPRVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0
ZXJmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVyZnZDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OlNjYWxlZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6U2NhbGV4Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpTY2lzc29yQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTZW1hcGhv
cmVQYXJhbWV0ZXJ1aTY0dkVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6U2V0RmVuY2VO
VkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6U2hhZGVNb2RlbENvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6U2hhZGVyQmluYXJ5Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTaGFk
ZXJTb3VyY2VDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlNpZ25hbFNlbWFwaG9yZUVYVENv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6U3RlbmNpbEZ1bmNDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OlN0ZW5jaWxGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OlN0ZW5jaWxNYXNrQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTdGVuY2lsTWFza1NlcGFy
YXRlQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTdGVuY2lsT3BDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlN0ZW5jaWxPcFNlcGFyYXRlQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpUZXN0RmVuY2VOVkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4QnVmZmVyQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhCdWZmZXJSYW5nZUNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6VGV4Q29vcmRQb2ludGVyQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhF
bnZmQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhFbnZmdkNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6VGV4RW52aUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4RW52aXZD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleEVudnhDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OlRleEVudnh2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhHZW5mT0VTQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhHZW5mdk9FU0NvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6VGV4R2VuaU9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4R2VuaXZP
RVNDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleEdlbnhPRVNDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlRleEdlbnh2T0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhJ
bWFnZTJEQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhJbWFnZTNEQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpUZXhJbWFnZTNET0VTQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpUZXhQYXJhbWV0ZXJJaXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRl
cklpdk9FU0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVySXVpdkNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVySXVpdk9FU0NvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVyZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
VGV4UGFyYW1ldGVyZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlcmlD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlcml2Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJ4Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpU
ZXhQYXJhbWV0ZXJ4dkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTFERVhU
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhTdG9yYWdlMkRDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlRleFN0b3JhZ2UyREVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
VGV4U3RvcmFnZTJETXVsdGlzYW1wbGVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFN0
b3JhZ2UzRENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTNERVhUQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZUNvbnRleHRBTkdM
RSk6CisgICAgICAgIChnbDo6VGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVNDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OlRleFN0b3JhZ2VNZW0yREVYVENvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6VGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUpOgorICAgICAg
ICAoZ2w6OlRleFN0b3JhZ2VNZW0zREVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4
U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRl
eFN1YkltYWdlMkRDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFN1YkltYWdlM0RDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OlRyYW5zbGF0ZWZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRyYW5zbGF0
ZXhDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlVuaWZvcm0xZkNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6VW5pZm9ybTFmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9y
bTFpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtMWl2Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpVbmlmb3JtMXVpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlm
b3JtMXVpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybTJmQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpVbmlmb3JtMmZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpV
bmlmb3JtMmlDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlVuaWZvcm0yaXZDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OlVuaWZvcm0ydWlDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
OlVuaWZvcm0ydWl2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtM2ZDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OlVuaWZvcm0zZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OlVuaWZvcm0zaUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybTNpdkNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybTN1aUNvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6VW5pZm9ybTN1aXZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlVuaWZvcm00ZkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybTRmdkNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6VW5pZm9ybTRpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtNGl2
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtNHVpQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpVbmlmb3JtNHVpdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9y
bUJsb2NrQmluZGluZ0NvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDJm
dkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJpeDJ4M2Z2Q29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4Mng0ZnZDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OlVuaWZvcm1NYXRyaXgzZnZDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlVu
aWZvcm1NYXRyaXgzeDJmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VW5pZm9ybU1hdHJp
eDN4NGZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4NGZ2Q29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpVbmlmb3JtTWF0cml4NHgyZnZDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlVuaWZvcm1NYXRyaXg0eDNmdkNvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6VW5tYXBCdWZmZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlVubWFwQnVmZmVyT0VT
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpVc2VQcm9ncmFtQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpVc2VQcm9ncmFtU3RhZ2VzQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpW
YWxpZGF0ZVByb2dyYW1Db250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlZhbGlkYXRlUHJvZ3Jh
bVBpcGVsaW5lQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIxZkNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliMWZ2Q29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIyZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VmVy
dGV4QXR0cmliMmZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWIzZkNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliM2Z2Q29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWI0ZkNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6
VmVydGV4QXR0cmliNGZ2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJC
aW5kaW5nQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEVDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYkRpdmlzb3JFWFRDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OlZlcnRleEF0dHJpYkZvcm1hdENvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6VmVydGV4QXR0cmliSTRpQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhB
dHRyaWJJNGl2Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJNHVpQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJJNHVpdkNvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6VmVydGV4QXR0cmliSUZvcm1hdENvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6VmVydGV4QXR0cmliSVBvaW50ZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlZl
cnRleEF0dHJpYlBvaW50ZXJDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlZlcnRleEJpbmRp
bmdEaXZpc29yQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpWZXJ0ZXhQb2ludGVyQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpWaWV3cG9ydENvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6V2FpdFNlbWFwaG9yZUVYVENvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6V2FpdFN5bmND
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OldlaWdodFBvaW50ZXJPRVNDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkNvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUpOgorICAgICAgICAo
Z2w6OkNvcHlTdWJUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkNv
bXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpS
ZXF1ZXN0RXh0ZW5zaW9uQU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkRpc2FibGVF
eHRlbnNpb25BTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0Qm9vbGVhbnZSb2J1
c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0QnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0RmxvYXR2Um9idXN0QU5H
TEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEludGVn
ZXJ2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFByb2dyYW1pdlJv
YnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRTaGFkZXJp
dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRVbmlmb3JtZnZSb2J1
c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VW5pZm9ybWl2Um9idXN0QU5H
TEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5H
TEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYml2Um9idXN0QU5H
TEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlJlYWRQaXhlbHNSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4SW1hZ2UyRFJvYnVzdEFOR0xFQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OlRleEltYWdlM0RSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAg
IChnbDo6VGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGds
OjpDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAg
KGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFO
R0xFKToKKyAgICAgICAgKGdsOjpHZXRRdWVyeWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgor
ICAgICAgICAoZ2w6OkdldEludGVnZXJpX3ZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6R2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAg
ICAgICAgKGdsOjpHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6R2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToK
KyAgICAgICAgKGdsOjpHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6Cisg
ICAgICAgIChnbDo6R2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAg
ICAgICAoZ2w6OkdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6
CisgICAgICAgIChnbDo6U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6OlNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRUNvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6R2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEVDb250
ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UHJvZ3JhbUludGVyZmFjZWl2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldEJvb2xlYW5pX3ZSb2J1c3RB
TkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFO
R0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleExldmVsUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpSZWFkblBpeGVs
c1JvYnVzdEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0blVuaWZvcm11aXZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEVD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRUNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEVD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFO
R0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRTYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFF1ZXJ5T2Jq
ZWN0aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0UXVlcnlPYmpl
Y3RpNjR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6Q29weVRleHR1
cmUzREFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpDb3B5U3ViVGV4dHVyZTNEQU5H
TEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQU5H
TEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldFRleExldmVsUGFyYW1ldGVyaXZBTkdM
RUNvbnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdkFOR0xF
Q29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpNdWx0aURyYXdBcnJheXNBTkdMRUNvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEVDb250ZXh0
QU5HTEUpOgorICAgICAgICAoZ2w6Ok11bHRpRHJhd0VsZW1lbnRzQU5HTEVDb250ZXh0QU5HTEUp
OgorICAgICAgICAoZ2w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEVDb250ZXh0QU5H
TEUpOgorICAgICAgICAoZ2w6OkRyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRUNv
bnRleHRBTkdMRSk6CisgICAgICAgIChnbDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRl
eEJhc2VJbnN0YW5jZUFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpNdWx0aURyYXdB
cnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRUNvbnRleHRBTkdMRSk6CisgICAgICAgIChn
bDo6TXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEVD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OkdldE11bHRpc2FtcGxlZnZBTkdMRUNvbnRleHRB
TkdMRSk6CisgICAgICAgIChnbDo6U2FtcGxlTWFza2lBTkdMRUNvbnRleHRBTkdMRSk6CisgICAg
ICAgIChnbDo6UHJvdm9raW5nVmVydGV4QU5HTEVDb250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6
Okxvc2VDb250ZXh0Q0hST01JVU1Db250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6OlRleEltYWdl
MkRFeHRlcm5hbEFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpJbnZhbGlkYXRlVGV4
dHVyZUFOR0xFQ29udGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRUZXhJbWFnZUFOR0xFQ29u
dGV4dEFOR0xFKToKKyAgICAgICAgKGdsOjpHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFQ29udGV4
dEFOR0xFKToKKyAgICAgICAgKGdsOjpJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRl
eHRBTkdMRSk6CisgICAgICAgIChnbDo6SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVD
b250ZXh0QU5HTEUpOgorICAgICAgICAoZ2w6Ok1hdHJpeExvYWRmQ0hST01JVU0pOiBEZWxldGVk
LgorICAgICAgICAoZ2w6Ok1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKTogRGVsZXRlZC4KKyAg
ICAgICAgKGdsOjpHZW5QYXRoc0NIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpEZWxl
dGVQYXRoc0NIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpJc1BhdGhDSFJPTUlVTSk6
IERlbGV0ZWQuCisgICAgICAgIChnbDo6UGF0aENvbW1hbmRzQ0hST01JVU0pOiBEZWxldGVkLgor
ICAgICAgICAoZ2w6OlBhdGhQYXJhbWV0ZXJmQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAo
Z2w6OlBhdGhQYXJhbWV0ZXJpQ0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkdldFBh
dGhQYXJhbWV0ZXJmdkNIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpHZXRQYXRoUGFy
YW1ldGVyaXZDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6UGF0aFN0ZW5jaWxGdW5j
Q0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlN0ZW5jaWxGaWxsUGF0aENIUk9NSVVN
KTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKTogRGVs
ZXRlZC4KKyAgICAgICAgKGdsOjpDb3ZlckZpbGxQYXRoQ0hST01JVU0pOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGds
OjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAgIChn
bDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAg
IChnbDo6Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAg
KGdsOjpDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAgICAg
IChnbDo6U3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSk6IERlbGV0ZWQuCisgICAg
ICAgIChnbDo6U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0pOiBEZWxldGVkLgorICAg
ICAgICAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKTogRGVs
ZXRlZC4KKyAgICAgICAgKGdsOjpTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENI
Uk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU0pOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpNYXRyaXhMb2FkZkNIUk9NSVVN
Q29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpNYXRyaXhMb2FkSWRlbnRpdHlD
SFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6R2VuUGF0aHNDSFJP
TUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6RGVsZXRlUGF0aHNDSFJP
TUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6SXNQYXRoQ0hST01JVU1D
b250ZXh0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlBhdGhDb21tYW5kc0NIUk9NSVVN
Q29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpQYXRoUGFyYW1ldGVyZkNIUk9N
SVVNQ29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpQYXRoUGFyYW1ldGVyaUNI
Uk9NSVVNQ29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpHZXRQYXRoUGFyYW1l
dGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6R2V0UGF0
aFBhcmFtZXRlcml2Q0hST01JVU1Db250ZXh0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoZ2w6
OlBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAg
KGdsOjpTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChnbDo6U3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQu
CisgICAgICAgIChnbDo6Q292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKTogRGVsZXRl
ZC4KKyAgICAgICAgKGdsOjpDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSk6IERl
bGV0ZWQuCisgICAgICAgIChnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250
ZXh0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoQ0hST01JVU1Db250ZXh0QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OkNvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChn
bDo6Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUpOiBEZWxldGVk
LgorICAgICAgICAoZ2w6OlN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0
QU5HTEUpOiBEZWxldGVkLgorICAgICAgICAoZ2w6OlN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNQ29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAg
ICAgIChnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRl
eHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAgIChnbDo6QmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bkNIUk9NSVVNQ29udGV4dEFOR0xFKTogRGVsZXRlZC4KKyAgICAgICAgKGdsOjpQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdMRSk6IERlbGV0ZWQuCisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dlbi5oOgorICAgICAg
ICAqIHNyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcDoKKyAgICAgICAgKGVnbDo6R2V0R2xv
YmFsTXV0ZXgpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmg6CisgICAg
ICAgIChnbDo6R2V0U2hhcmVHcm91cExvY2spOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGli
R0xFU3YyX2F1dG9nZW4uY3BwOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyX2F1
dG9nZW4uZGVmOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3YyX25vX2NhcHR1cmVf
YXV0b2dlbi5kZWY6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfd2l0aF9jYXB0
dXJlX2F1dG9nZW4uZGVmOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvcHJvY190YWJsZV9lZ2xf
YXV0b2dlbi5jcHA6CisgICAgICAgICogc3JjL3Rlc3RzL0JVSUxELmduOgorICAgICAgICAqIHNy
Yy90ZXN0cy9PV05FUlM6IEFkZGVkLgorICAgICAgICAqIHNyYy90ZXN0cy9hbmdsZV9lbmQyZW5k
X3Rlc3RzLmduaToKKyAgICAgICAgKiBzcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0c19tYWlu
LmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHNyYy90ZXN0cy9hbmdsZV9wZXJmdGVz
dHMuZ25pOgorICAgICAgICAqIHNyYy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ25pOgorICAgICAg
ICAqIHNyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaDoKKyAgICAgICAgKiBzcmMvdGVz
dHMvYW5nbGVfd2hpdGVfYm94X3Rlc3RzLmduaToKKyAgICAgICAgKiBzcmMvdGVzdHMvZGVxcF9z
dXBwb3J0L0JVSUxELmduOgorICAgICAgICAqIHNyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcC5n
bmk6CisgICAgICAgICogc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2VnbF90ZXN0X2V4cGVj
dGF0aW9ucy50eHQ6IEFkZGVkLgorICAgICAgICAqIHNyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVx
cF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IEFkZGVkLgorICAgICAgICAqIHNyYy90ZXN0
cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlvbnMudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBzcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczNfdGVzdF9leHBlY3Rh
dGlvbnMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBf
a2hyX2dsZXMyX3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogQWRkZWQuCisgICAgICAgICogc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC9kZXFwX2tocl9nbGVzMzFfdGVzdF9leHBlY3RhdGlvbnMudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfa2hyX2dsZXMzX3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDogQWRkZWQuCisgICAgICAgICogc3JjL3Rlc3RzL2VnbF90ZXN0
cy9FR0xCbG9iQ2FjaGVUZXN0LmNwcDoKKyAgICAgICAgKG9wZXJhdG9yPDwpOgorICAgICAgICAo
VEVTVF9QKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21wYXRp
YmlsaXR5VGVzdC5jcHA6CisgICAgICAgIChhbmdsZTo6SXNSR0JBMTZGQ29uZmlnKToKKyAgICAg
ICAgKGFuZ2xlOjpJc1JHQjEwX0EyQ29uZmlnKToKKyAgICAgICAgKGFuZ2xlOjpJc011bHRpc2Ft
cGxlZENvbmZpZyk6CisgICAgICAgIChhbmdsZTo6U2hvdWxkU2tpcENvbmZpZyk6CisgICAgICAg
IChhbmdsZTo6R2V0Q29uZmlncyk6CisgICAgICAgIChhbmdsZTo6RnJvbVJlbmRlcmVyKToKKyAg
ICAgICAgKGFuZ2xlOjpFR0xDb25maWdOYW1lKToKKyAgICAgICAgKGFuZ2xlOjpFR0xDb250ZXh0
Q29tcGF0aWJpbGl0eVRlc3Q6OkVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCk6CisgICAgICAg
IChhbmdsZTo6RUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0Ojp0ZXN0V2luZG93Q29tcGF0aWJp
bGl0eSBjb25zdCk6CisgICAgICAgIChhbmdsZTo6RUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0
Ojp0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkgY29uc3QpOgorICAgICAgICAoYW5nbGU6OkVHTENv
bnRleHRDb21wYXRpYmlsaXR5VGVzdF9XaW5kb3dTYW1lQ29uZmlnOjpFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3RfV2luZG93U2FtZUNvbmZpZyk6CisgICAgICAgIChhbmdsZTo6RUdMQ29udGV4
dENvbXBhdGliaWxpdHlUZXN0X1BidWZmZXJTYW1lQ29uZmlnOjpFR0xDb250ZXh0Q29tcGF0aWJp
bGl0eVRlc3RfUGJ1ZmZlclNhbWVDb25maWcpOgorICAgICAgICAoYW5nbGU6OkVHTENvbnRleHRD
b21wYXRpYmlsaXR5VGVzdF9XaW5kb3dEaWZmZXJlbnRDb25maWc6OkVHTENvbnRleHRDb21wYXRp
YmlsaXR5VGVzdF9XaW5kb3dEaWZmZXJlbnRDb25maWcpOgorICAgICAgICAoYW5nbGU6OkVHTENv
bnRleHRDb21wYXRpYmlsaXR5VGVzdF9QYnVmZmVyRGlmZmVyZW50Q29uZmlnOjpFR0xDb250ZXh0
Q29tcGF0aWJpbGl0eVRlc3RfUGJ1ZmZlckRpZmZlcmVudENvbmZpZyk6CisgICAgICAgIChSZWdp
c3RlckNvbnRleHRDb21wYXRpYmlsaXR5VGVzdHMpOgorICAgICAgICAoRUdMQ29udGV4dENvbXBh
dGliaWxpdHlUZXN0OjpFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QpOiBEZWxldGVkLgorICAg
ICAgICAoRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0Ojppc011bHRpc2FtcGxlZENvbmZpZyk6
IERlbGV0ZWQuCisgICAgICAgIChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3Q6OmlzUkdCQTE2
RkNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3Q6
OmlzUkdCMTBfQTJDb25maWcpOiBEZWxldGVkLgorICAgICAgICAoRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0OjphcmVDb25maWdzQ29tcGF0aWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChFR0xD
b250ZXh0Q29tcGF0aWJpbGl0eVRlc3Q6OnRlc3RXaW5kb3dDb21wYXRpYmlsaXR5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdDo6dGVzdFBidWZm
ZXJDb21wYXRpYmlsaXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEVHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdDo6dGVzdENsZWFyU3VyZmFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3Q6OnRlc3RNYWtlQ3VycmVudEZhaWxzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFRFU1RfUCk6IERlbGV0ZWQuCisgICAgICAgICogc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0U2hhcmluZ1Rlc3QuY3BwOgorICAgICAgICAoYW5nbGU6
OlRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xEaXJlY3RDb21wb3Np
dGlvblRlc3QuY3BwOgorICAgICAgICAoVEVTVF9QKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAoSU9TdXJm
YWNlQ2xpZW50QnVmZmVyVGVzdDo6Z2V0VGV4dHVyZVRhcmdldCBjb25zdCk6CisgICAgICAgIChJ
T1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0OjpnZXRHTFRleHR1cmVUYXJnZXQgY29uc3QpOgorICAg
ICAgICAoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdDo6Y3JlYXRlSU9TdXJmYWNlUGJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0OjpiaW5kSU9TdXJmYWNl
VG9UZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3Q6OmRv
Q2xlYXJUZXN0KToKKyAgICAgICAgKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3Q6OmRvU2FtcGxl
VGVzdCk6CisgICAgICAgIChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0Ojpkb0JsaXRUZXN0KToK
KyAgICAgICAgKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3Q6Omhhc0lPU3VyZmFjZUV4dCBjb25z
dCk6CisgICAgICAgIChURVNUX1ApOgorICAgICAgICAqIHNyYy90ZXN0cy9lZ2xfdGVzdHMvRUdM
U3VyZmFjZVRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OkVHTFN1cmZhY2VUZXN0Ojppbml0aWFs
aXplRGlzcGxheSk6CisgICAgICAgIChhbmdsZTo6RUdMU3VyZmFjZVRlc3Q6OmluaXRpYWxpemVD
b250ZXh0KToKKyAgICAgICAgKGFuZ2xlOjpFR0xTdXJmYWNlVGVzdDo6aW5pdGlhbGl6ZVN1cmZh
Y2UpOgorICAgICAgICAoYW5nbGU6OkVHTFN1cmZhY2VUZXN0OjpydW5NZXNzYWdlTG9vcFRlc3Qp
OgorICAgICAgICAoYW5nbGU6OlRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2VnbF90ZXN0
cy9FR0xTeW5jVGVzdC5jcHA6CisgICAgICAgIChURVNUX1ApOgorICAgICAgICAqIHNyYy90ZXN0
cy9nbF90ZXN0cy9BdG9taWNDb3VudGVyQnVmZmVyVGVzdC5jcHA6CisgICAgICAgICogc3JjL3Rl
c3RzL2dsX3Rlc3RzL0F0dHJpYnV0ZUxheW91dFRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OlRF
U1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRVbmlmb3JtTG9jYXRpb25U
ZXN0LmNwcDoKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcDoKKyAg
ICAgICAgKGFuZ2xlOjpURVNUX1ApOgorICAgICAgICAoYW5nbGU6OlJhbmRvbVZlYzQpOiBEZWxl
dGVkLgorICAgICAgICAoYW5nbGU6OlZlYzRUb0NvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
cmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwOgorICAgICAgICAqIHNyYy90
ZXN0cy9nbF90ZXN0cy9Db250ZXh0TG9zdFRlc3QuY3BwOgorICAgICAgICAqIHNyYy90ZXN0cy9n
bF90ZXN0cy9Db250ZXh0Tm9FcnJvclRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKENvbnRleHRO
b0Vycm9yVGVzdDo6Q29udGV4dE5vRXJyb3JUZXN0KToKKyAgICAgICAgKENvbnRleHROb0Vycm9y
VGVzdDo6YmluZE5hdWdodHlUZXh0dXJlKToKKyAgICAgICAgKFRFU1RfUCk6CisgICAgICAgICog
c3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwOgorICAgICAg
ICAoYW5nbGU6OlRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL0V4dGVybmFs
V3JhcFRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKGFuZ2xlOjpFeHRlcm5hbFdyYXBUZXN0OjpF
eHRlcm5hbFdyYXBUZXN0KToKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvRm9ybWF0UHJp
bnRUZXN0LmNwcDoKKyAgICAgICAgKFJlZ2lzdGVyQ29udGV4dENvbXBhdGliaWxpdHlUZXN0cyk6
CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHA6CisgICAg
ICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL0dMU0xUZXN0LmNwcDoKKyAgICAgICAgKiBzcmMvdGVz
dHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcDoKKyAgICAgICAgKGFuZ2xlOjpURVNUX1ApOgorICAg
ICAgICAqIHNyYy90ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVzdC5jcHA6CisgICAgICAgICog
c3JjL3Rlc3RzL2dsX3Rlc3RzL01lbW9yeU9iamVjdFRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6
OlRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwOgor
ICAgICAgICAqIHNyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0
LmNwcDoKKyAgICAgICAgKFRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL1Bh
dGhSZW5kZXJpbmdUZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVz
dHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwOgorICAgICAgICAoUHJvZ3JhbUJpbmFyeUVTM1Rlc3Q6
OnRlc3RCaW5hcnlBbmRVQk9CbG9ja0luZGV4ZXMpOgorICAgICAgICAoVEVTVF9QKToKKyAgICAg
ICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUludGVyZmFjZVRlc3QuY3BwOgorICAgICAg
ICAoYW5nbGU6OlRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJl
c291cmNlSW5pdFRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OlRFU1RfUCk6CisgICAgICAgICog
c3JjL3Rlc3RzL2dsX3Rlc3RzL1NoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJUZXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChTaGFkZXJOb25Db25zdEdsb2JhbEluaXRpYWxpemVyVGVzdDo6
U2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0aWFsaXplclRlc3QpOgorICAgICAgICAoU2hhZGVyTm9u
Q29uc3RHbG9iYWxJbml0aWFsaXplclRlc3Q6OmRyYXcpOgorICAgICAgICAoVEVTVF9QKToKKyAg
ICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvU2hhZGVyU3RvcmFnZUJ1ZmZlclRlc3QuY3BwOgor
ICAgICAgICAqIHNyYy90ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcDoKKyAg
ICAgICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcDoKKyAgICAgICAg
KGFuZ2xlOjpURVNUX1ApOgorICAgICAgICAqIHNyYy90ZXN0cy9nbF90ZXN0cy9UZXh0dXJlVGVz
dC5jcHA6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVz
dC5jcHA6CisgICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0ZVRlc3Qu
Y3BwOgorICAgICAgICAqIHNyYy90ZXN0cy9nbF90ZXN0cy9WdWxrYW5FeHRlcm5hbEltYWdlVGVz
dC5jcHA6CisgICAgICAgIChhbmdsZTo6VEVTVF9QKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xf
dGVzdHMvV2ViR0xDb21wYXRpYmlsaXR5VGVzdC5jcHA6CisgICAgICAgICogc3JjL3Rlc3RzL2ds
X3Rlc3RzL2dsZXMxL0Jhc2ljRHJhd1Rlc3QuY3BwOgorICAgICAgICAoVEVTVF9QKToKKyAgICAg
ICAgKiBzcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvQm9vdEFuaW1hdGlvblRlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEJvb3RBbmltYXRpb25UZXN0OjpCb290QW5pbWF0aW9uVGVzdCk6CisgICAg
ICAgIChCb290QW5pbWF0aW9uVGVzdDo6aW5pdFRleHR1cmVXaXRoRGF0YSk6CisgICAgICAgIChC
b290QW5pbWF0aW9uVGVzdDo6Y2hlY2tNYXNrQ29sb3IpOgorICAgICAgICAoQm9vdEFuaW1hdGlv
blRlc3Q6OmNoZWNrQ2xlYXJDb2xvcik6CisgICAgICAgIChCb290QW5pbWF0aW9uVGVzdDo6dmFs
aWRhdGVDb2xvcnMpOgorICAgICAgICAoVEVTVF9QKToKKyAgICAgICAgKiBzcmMvdGVzdHMvZ2xf
dGVzdHMvZ2xlczEvTWF0cml4QnVpbHRpbnNUZXN0LmNwcDoKKyAgICAgICAgKFRFU1RfUCk6Cisg
ICAgICAgICogc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL1RleHR1cmVQYXJhbWV0ZXJUZXN0LmNw
cDoKKyAgICAgICAgKFRFU1RfUCk6CisgICAgICAgICogc3JjL3Rlc3RzL2dsZXMxX2NvbmZvcm1h
bmNlX3Rlc3RzL0NvbmZvcm1hbmNlVGVzdHMuY3BwOgorICAgICAgICAoUmVnaXN0ZXJDb250ZXh0
Q29tcGF0aWJpbGl0eVRlc3RzKToKKyAgICAgICAgKiBzcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdM
RVBlcmZUZXN0LmNwcDoKKyAgICAgICAgKGFuZ2xlOjpNb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUpOgorICAgICAgICAoYW5nbGU6OkR1bXBUcmFjZUV2ZW50c1RvSlNPTkZpbGUpOgorICAgICAg
ICAoYW5nbGU6OkRlYnVnTWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFRyYWNlRXZlbnQ6OlRy
YWNlRXZlbnQpOgorICAgICAgICAodGlkKToKKyAgICAgICAgKEFOR0xFUGVyZlRlc3Q6OnJ1bik6
CisgICAgICAgIChSZW5kZXJUZXN0UGFyYW1zOjpiYWNrZW5kIGNvbnN0KToKKyAgICAgICAgKEFO
R0xFUmVuZGVyVGVzdDo6QU5HTEVSZW5kZXJUZXN0KToKKyAgICAgICAgKEFOR0xFUmVuZGVyVGVz
dDo6U2V0VXApOgorICAgICAgICAoQU5HTEVSZW5kZXJUZXN0OjpiZWdpbkdMVHJhY2VFdmVudCk6
CisgICAgICAgIChBTkdMRVJlbmRlclRlc3Q6OmVuZEdMVHJhY2VFdmVudCk6CisgICAgICAgIChB
TkdMRVJlbmRlclRlc3Q6OnN0ZXApOgorICAgICAgICAoYW5nbGU6OkdldEhvc3RUaW1lU2Vjb25k
cyk6CisgICAgICAgICogc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oOgorICAg
ICAgICAocGFyYW1zOjpQYXNzdGhyb3VnaCk6CisgICAgICAgICogc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvQU5HTEVQZXJmVGVzdEFyZ3MuY3BwOgorICAgICAgICAqIHNyYy90ZXN0cy9wZXJmX3Rlc3Rz
L0FOR0xFUGVyZlRlc3RBcmdzLmg6CisgICAgICAgIChhbmdsZTo6T25lRnJhbWUpOgorICAgICAg
ICAqIHNyYy90ZXN0cy9wZXJmX3Rlc3RzL0JpdFNldEl0ZXJhdG9yUGVyZi5jcHA6CisgICAgICAg
ICogc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcDoKKyAgICAgICAgKiBzcmMv
dGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuY3BwOgorICAgICAgICAoRHJhd0Nh
bGxQZXJmUGFyYW1zOjpzdG9yeSBjb25zdCk6CisgICAgICAgIChwYXJhbXM6OkRyYXdDYWxsRDNE
MTEpOiBEZWxldGVkLgorICAgICAgICAocGFyYW1zOjpEcmF3Q2FsbEQzRDkpOiBEZWxldGVkLgor
ICAgICAgICAocGFyYW1zOjpEcmF3Q2FsbE9wZW5HTCk6IERlbGV0ZWQuCisgICAgICAgIChwYXJh
bXM6OkRyYXdDYWxsVmFsaWRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChwYXJhbXM6OkRyYXdD
YWxsVnVsa2FuKTogRGVsZXRlZC4KKyAgICAgICAgKHBhcmFtczo6RHJhd0NhbGxXR0wpOiBEZWxl
dGVkLgorICAgICAgICAqIHNyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5o
OgorICAgICAgICAocGFyYW1zOjpEM0Q5KToKKyAgICAgICAgKHBhcmFtczo6RDNEMTEpOgorICAg
ICAgICAocGFyYW1zOjpHTCk6CisgICAgICAgIChwYXJhbXM6OkdMMyk6CisgICAgICAgIChwYXJh
bXM6OlZ1bGthbik6CisgICAgICAgIChwYXJhbXM6OldHTCk6CisgICAgICAgICogc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvRHJhd0VsZW1lbnRzUGVyZi5jcHA6CisgICAgICAgICogc3JjL3Rlc3RzL3Bl
cmZfdGVzdHMvVGV4dHVyZVVwbG9hZFBlcmYuY3BwOgorICAgICAgICAqIHNyYy90ZXN0cy9wZXJm
X3Rlc3RzL1RyYWNlUGVyZlRlc3QuY3BwOgorICAgICAgICAoZWdsX3BsYXRmb3JtOjpUcmFjZVBl
cmZUZXN0Ojppbml0aWFsaXplQmVuY2htYXJrKToKKyAgICAgICAgKGVnbF9wbGF0Zm9ybTo6VHJh
Y2VQZXJmVGVzdDo6ZGVzdHJveUJlbmNobWFyayk6CisgICAgICAgIChlZ2xfcGxhdGZvcm06OlRy
YWNlUGVyZlRlc3Q6OnNhbXBsZVRpbWUpOgorICAgICAgICAoZWdsX3BsYXRmb3JtOjpUcmFjZVBl
cmZUZXN0OjpkcmF3QmVuY2htYXJrKToKKyAgICAgICAgKGVnbF9wbGF0Zm9ybTo6VHJhY2VQZXJm
VGVzdDo6Z2V0SG9zdFRpbWVGcm9tR0xUaW1lKToKKyAgICAgICAgKGVnbF9wbGF0Zm9ybTo6VHJh
Y2VQZXJmVGVzdDo6b25GcmFtZWJ1ZmZlckNoYW5nZSk6CisgICAgICAgIChlZ2xfcGxhdGZvcm06
OkZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2spOgorICAgICAgICAoZWdsX3BsYXRmb3JtOjpDb21i
aW5lVGVzdElEKToKKyAgICAgICAgKGVnbF9wbGF0Zm9ybTo6Q29tYmluZVdpdGhWYWx1ZXMpOgor
ICAgICAgICAoZWdsX3BsYXRmb3JtOjpDb21iaW5lV2l0aEZ1bmNzKToKKyAgICAgICAgKGVnbF9w
bGF0Zm9ybTo6VFJleFJlcGxheVBlcmZPcGVuR0xPckdMRVNQYXJhbXNfMjAwXzIxMCk6IERlbGV0
ZWQuCisgICAgICAgIChlZ2xfcGxhdGZvcm06OlRSZXhSZXBsYXlQZXJmT3BlbkdMT3JHTEVTUGFy
YW1zXzgwMF84MTApOiBEZWxldGVkLgorICAgICAgICAoZWdsX3BsYXRmb3JtOjpUUmV4UmVwbGF5
UGVyZk9wZW5HTE9yR0xFU1BhcmFtc185MDBfOTEwKTogRGVsZXRlZC4KKyAgICAgICAgKGVnbF9w
bGF0Zm9ybTo6VFJleFJlcGxheVBlcmZPcGVuR0xPckdMRVNQYXJhbXNfMTMwMF8xMzEwKTogRGVs
ZXRlZC4KKyAgICAgICAgKGVnbF9wbGF0Zm9ybTo6VFJleFJlcGxheVBlcmZWdWxrYW5QYXJhbXNf
MjAwXzIxMCk6IERlbGV0ZWQuCisgICAgICAgIChlZ2xfcGxhdGZvcm06OlRSZXhSZXBsYXlQZXJm
VnVsa2FuUGFyYW1zXzgwMF84MTApOiBEZWxldGVkLgorICAgICAgICAoZWdsX3BsYXRmb3JtOjpU
UmV4UmVwbGF5UGVyZlZ1bGthblBhcmFtc185MDBfOTEwKTogRGVsZXRlZC4KKyAgICAgICAgKGVn
bF9wbGF0Zm9ybTo6VFJleFJlcGxheVBlcmZWdWxrYW5QYXJhbXNfMTMwMF8xMzEwKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzcmMvdGVzdHMvcGVyZl90ZXN0cy9nbG1hcmsyQmVuY2htYXJrLmNwcDog
QWRkZWQuCisgICAgICAgIChhbmdsZTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChhbmdsZTo6R0xN
YXJrMkJlbmNobWFyazo6R0xNYXJrMkJlbmNobWFyayk6CisgICAgICAgIChhbmdsZTo6R0xNYXJr
MkJlbmNobWFyazo6cnVuKToKKyAgICAgICAgKGFuZ2xlOjpHTE1hcmsyQmVuY2htYXJrOjpwYXJz
ZU91dHB1dCk6CisgICAgICAgIChhbmdsZTo6VEVTVF9QKToKKyAgICAgICAgKGFuZ2xlOjpDb21i
aW5lRUdMUGxhdGZvcm0pOgorICAgICAgICAoYW5nbGU6OkNvbWJpbmVJbmZvKToKKyAgICAgICAg
KGFuZ2xlOjpDb21iaW5lV2l0aFZhbHVlcyk6CisgICAgICAgICogc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvcmVzdHJpY3RlZF90cmFjZXMvLmdpdGlnbm9yZTogQWRkZWQuCisgICAgICAgICogc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvT1dORVJTOiBBZGRlZC4KKyAgICAgICAg
KiBzcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9SZXN0cmljdGVkVHJhY2VU
ZXN0cy5tZDoKKyAgICAgICAgKiBzcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNl
cy9hbmdsZV90cmFjZV9wZXJmX3Rlc3RzLmduaToKKyAgICAgICAgKiBzcmMvdGVzdHMvcGVyZl90
ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9tYW5oYXR0YW5fMTAudGFyLmd6LnNoYTE6IEFkZGVkLgor
ICAgICAgICAqIHNyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMTMw
MF8xMzEwLnRhci5nei5zaGExOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy90ZXN0cy9wZXJmX3Rl
c3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMjAwLnRhci5nei5zaGExOiBBZGRlZC4KKyAgICAg
ICAgKiBzcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzIwMF8yMTAu
dGFyLmd6LnNoYTE6IFJlbW92ZWQuCisgICAgICAgICogc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVz
dHJpY3RlZF90cmFjZXMvdHJleF84MDBfODEwLnRhci5nei5zaGExOiBSZW1vdmVkLgorICAgICAg
ICAqIHNyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfOTAwXzkxMC50
YXIuZ3ouc2hhMTogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvdGVzdHMvcGVyZl90ZXN0cy90aGly
ZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYzoKKyAgICAgICAgKiBzcmMvdGVzdHMvdGVzdF91dGls
cy9BTkdMRVRlc3QuY3BwOgorICAgICAgICAoYW5nbGU6OkxvYWRFbnRyeVBvaW50c1dpdGhVdGls
TG9hZGVyKToKKyAgICAgICAgKEFOR0xFVGVzdEJhc2U6OkFOR0xFVGVzdEJhc2UpOgorICAgICAg
ICAoQU5HTEVUZXN0QmFzZTo6QU5HTEVUZXN0U2V0VXApOgorICAgICAgICAqIHNyYy90ZXN0cy90
ZXN0X3V0aWxzL0FOR0xFVGVzdC5oOgorICAgICAgICAoQU5HTEVUZXN0QmFzZTo6aXNWdWxrYW5T
d2lmdHNoYWRlclJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKiBzcmMvdGVzdHMvdGVzdF91dGls
cy9WdWxrYW5FeHRlcm5hbEhlbHBlci5jcHA6CisgICAgICAgIChhbmdsZTo6VnVsa2FuRXh0ZXJu
YWxIZWxwZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoYW5nbGU6OlZ1bGthbkV4dGVybmFsSGVs
cGVyOjpjYW5DcmVhdGVJbWFnZUV4dGVybmFsIGNvbnN0KToKKyAgICAgICAgKGFuZ2xlOjpWdWxr
YW5FeHRlcm5hbEhlbHBlcjo6Y3JlYXRlSW1hZ2UyREV4dGVybmFsKToKKyAgICAgICAgKGFuZ2xl
OjpWdWxrYW5FeHRlcm5hbEhlbHBlcjo6Y2FuQ3JlYXRlSW1hZ2VPcGFxdWVGZCBjb25zdCk6Cisg
ICAgICAgIChhbmdsZTo6VnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmNyZWF0ZUltYWdlMkRPcGFxdWVG
ZCk6CisgICAgICAgIChhbmdsZTo6VnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmNhbkNyZWF0ZUltYWdl
WmlyY29uVm1vIGNvbnN0KToKKyAgICAgICAgKGFuZ2xlOjpWdWxrYW5FeHRlcm5hbEhlbHBlcjo6
Y3JlYXRlSW1hZ2UyRFppcmNvblZtbyk6CisgICAgICAgIChhbmdsZTo6VnVsa2FuRXh0ZXJuYWxI
ZWxwZXI6OmV4cG9ydE1lbW9yeVppcmNvblZtbyk6CisgICAgICAgICogc3JjL3Rlc3RzL3Rlc3Rf
dXRpbHMvVnVsa2FuRXh0ZXJuYWxIZWxwZXIuaDoKKyAgICAgICAgKiBzcmMvdGVzdHMvdGVzdF91
dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwOgorICAgICAgICAoYW5nbGU6OlBsYXRmb3JtUGFy
YW1ldGVyczo6aXNTd2lmdHNoYWRlciBjb25zdCk6CisgICAgICAgIChhbmdsZTo6R2V0UmVuZGVy
ZXJOYW1lKToKKyAgICAgICAgKGFuZ2xlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKGFuZ2xlOjpl
Z2xfcGxhdGZvcm06Ok9QRU5HTF9PUl9HTEVTKToKKyAgICAgICAgKiBzcmMvdGVzdHMvdGVzdF91
dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaDoKKyAgICAgICAgKGFuZ2xlOjpXaXRoQWxsb2NhdGVO
b25aZXJvTWVtb3J5KToKKyAgICAgICAgKGFuZ2xlOjpXaXRoUm9idXN0bmVzcyk6CisgICAgICAg
IChhbmdsZTo6V2l0aE5vQ29tbWFuZEdyYXBoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzcmMvdGVz
dHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcDoKKyAgICAgICAgKGFuZ2xl
OjpJc0NvbmZpZ1NlbGVjdGVkKToKKyAgICAgICAgKGFuZ2xlOjpHZXRUZXN0U3lzdGVtSW5mbyk6
CisgICAgICAgIChhbmdsZTo6SXNDb25maWdXaGl0ZWxpc3RlZCk6CisgICAgICAgIChhbmdsZTo6
SXNQbGF0Zm9ybUF2YWlsYWJsZSk6CisgICAgICAgIChhbmdsZTo6R2V0QXZhaWxhYmxlVGVzdFBs
YXRmb3JtTmFtZXMpOgorICAgICAgICAoYW5nbGU6OlNldFNlbGVjdGVkQ29uZmlnKToKKyAgICAg
ICAgKiBzcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmg6CisgICAg
ICAgIChhbmdsZTo6Q29tYmluZVdpdGhGdW5jcyk6CisgICAgICAgIChhbmdsZTo6Q29tYmluZVdp
dGhWYWx1ZXMpOgorICAgICAgICAqIHNyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxh
dGZvcm0uY3BwOgorICAgICAgICAqIHNyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxh
dGZvcm0uaDoKKyAgICAgICAgKiBzcmMvdGVzdHMvdGVzdF91dGlscy9ydW5uZXIvVGVzdFN1aXRl
LmNwcDoKKyAgICAgICAgKGFuZ2xlOjpUZXN0U3VpdGU6OlRlc3RTdWl0ZSk6CisgICAgICAgICog
c3JjL3RoaXJkX3BhcnR5Ly5maW5kLWlnbm9yZTogQWRkZWQuCisgICAgICAgICogc3JjL3RoaXJk
X3BhcnR5L3ZvbGsvQlVJTEQuZ246CisgICAgICAgICogdGhpcmRfcGFydHkvLmZpbmQtaWdub3Jl
OiBBZGRlZC4KKyAgICAgICAgKiB0aGlyZF9wYXJ0eS9CVUlMRC5nbjoKKyAgICAgICAgKiB0aGly
ZF9wYXJ0eS9nbG1hcmsyL0JVSUxELmduOiBBZGRlZC4KKyAgICAgICAgKiB0aGlyZF9wYXJ0eS9n
bG1hcmsyL1JFQURNRS5hbmdsZTogQWRkZWQuCisgICAgICAgICogdGhpcmRfcGFydHkvbGlicG5n
L0JVSUxELmduOgorICAgICAgICAqIHRvb2xzL2ZsZXgtYmlzb24vUkVBRE1FLm1kOiBBZGRlZC4K
KyAgICAgICAgKiB0b29scy9mbGV4LWJpc29uL2xpbnV4L2Jpc29uLnNoYTE6IEFkZGVkLgorICAg
ICAgICAqIHRvb2xzL2ZsZXgtYmlzb24vbGludXgvZmxleC5zaGExOiBBZGRlZC4KKyAgICAgICAg
KiB0b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5Ly5naXRhdHRyaWJ1dGVzOiBBZGRlZC4KKyAg
ICAgICAgKiB0b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvTElDRU5TRTogQWRk
ZWQuCisgICAgICAgICogdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL1JFQURN
RS5jaHJvbWl1bTogQWRkZWQuCisgICAgICAgICogdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0
eS9tNHN1Z2FyL2ZvcmVhY2gubTQ6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2ZsZXgtYmlzb24v
dGhpcmRfcGFydHkvbTRzdWdhci9tNHN1Z2FyLm00OiBBZGRlZC4KKyAgICAgICAgKiB0b29scy9m
bGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9MSUNFTlNFOiBBZGRlZC4KKyAgICAgICAg
KiB0b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9SRUFETUUuY2hyb21pdW06
IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25z
L2Jpc29uLm00OiBBZGRlZC4KKyAgICAgICAgKiB0b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5
L3NrZWxldG9ucy9jLWxpa2UubTQ6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2ZsZXgtYmlzb24v
dGhpcmRfcGFydHkvc2tlbGV0b25zL2MubTQ6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2ZsZXgt
Ymlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL3lhY2MuYzogQWRkZWQuCisgICAgICAgICogdG9v
bHMvZmxleC1iaXNvbi91cGRhdGVfZmxleF9iaXNvbl9iaW5hcmllcy5weTogQWRkZWQuCisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKiB0b29scy9mbGV4LWJpc29uL3dpbmRvd3MvYmlzb24uZXhl
LnNoYTE6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9mbGV4LmV4
ZS5zaGExOiBBZGRlZC4KKyAgICAgICAgKiB0b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbTQuZXhl
LnNoYTE6IEFkZGVkLgorICAgICAgICAqIHRvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLTIu
MC5kbGwuc2hhMTogQWRkZWQuCisgICAgICAgICogdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21z
eXMtaWNvbnYtMi5kbGwuc2hhMTogQWRkZWQuCisgICAgICAgICogdG9vbHMvZmxleC1iaXNvbi93
aW5kb3dzL21zeXMtaW50bC04LmRsbC5zaGExOiBBZGRlZC4KKyAgICAgICAgKiB1dGlsL0JVSUxE
LmduOgorICAgICAgICAqIHV0aWwvRUdMUGxhdGZvcm1QYXJhbWV0ZXJzLmg6CisgICAgICAgIChF
R0xQbGF0Zm9ybVBhcmFtZXRlcnM6OnRpZSBjb25zdCk6CisgICAgICAgICogdXRpbC9FR0xXaW5k
b3cuY3BwOgorICAgICAgICAoRUdMV2luZG93Ojppbml0aWFsaXplRGlzcGxheSk6CisgICAgICAg
IChDaGVja0V4dGVuc2lvbkV4aXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogdXRpbC9FR0xXaW5k
b3cuaDoKKyAgICAgICAgKiB1dGlsL2ZyYW1lX2NhcHR1cmVfdXRpbHMuaDogQWRkZWQuCisgICAg
ICAgIChhbmdsZTo6RGVjb21wcmVzc0JpbmFyeURhdGEpOgorICAgICAgICAqIHV0aWwvZnVjaHNp
YS9TY2VuaWNXaW5kb3cuY3BwOgorICAgICAgICAoU2NlbmljV2luZG93OjpTY2VuaWNXaW5kb3cp
OgorICAgICAgICAoU2NlbmljV2luZG93Ojppbml0aWFsaXplKToKKyAgICAgICAgKFNjZW5pY1dp
bmRvdzo6cmVzaXplKToKKyAgICAgICAgKFNjZW5pY1dpbmRvdzo6b25TY2VuaWNFdmVudHMpOgor
ICAgICAgICAoU2NlbmljV2luZG93OjpvblZpZXdNZXRyaWNzKToKKyAgICAgICAgKFNjZW5pY1dp
bmRvdzo6b25WaWV3UHJvcGVydGllcyk6CisgICAgICAgIChTY2VuaWNXaW5kb3c6OnVwZGF0ZVZp
ZXdTaXplKToKKyAgICAgICAgKiB1dGlsL2Z1Y2hzaWEvU2NlbmljV2luZG93Lmg6CisgICAgICAg
ICogdXRpbC9nbGVzX2xvYWRlcl9hdXRvZ2VuLmNwcDoKKyAgICAgICAgKGFuZ2xlOjpMb2FkR0xF
Uyk6CisgICAgICAgICogdXRpbC9nbGVzX2xvYWRlcl9hdXRvZ2VuLmg6CisgICAgICAgICogdXRp
bC9yYW5kb21fdXRpbHMuaDoKKyAgICAgICAgKGFuZ2xlOjpSYW5kb21WZWM0KToKKyAgICAgICAg
KiB1dGlsL3V0aWwuZ25pOiBSZW1vdmVkLgorICAgICAgICAqIHV0aWwvdXRpbF9nbC5oOgorICAg
ICAgICAoYW5nbGU6OkNoZWNrRXh0ZW5zaW9uRXhpc3RzKToKKwogMjAyMC0wNC0wMyAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggYnVncyByZWxhdGVk
IHRvIFZpZGVvVGV4dHVyZUNvcGllckNWIGFuZCBBTkdMRSByb2xsIHNjcmlwdApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvLmdpdGlnbm9yZSBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFLy5naXRpZ25vcmUKaW5kZXggMjA3ZjhhMjA3NGZkMGYxM2MxNTk5YmEwNmNkNGVjZDBh
MDUyYzNiMy4uMzI1NWQwZWVjODU4ZTVhMTcxNTZjOTY5NzgzZWI5MTJmZGNhODAwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvLmdpdGlnbm9yZQorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS8uZ2l0aWdub3JlCkBAIC0xLDQgKzEsNSBAQAogLnZzCisudnNjb2RlCiAq
Lk1ha2VmaWxlCiAqLm5jYgogKi5udnVzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0FOR0xFLnBsaXN0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QK
aW5kZXggMGI1Y2RmODdiMDEyOWI4MGExYWU0ZGNlZmIzNjk5NzgxYWVjYTYxZS4uMmJhNTY5NzYz
MjM3ZTRhZGFlNmVhMGEwNjlhMjkzYmExNGRjMzc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQU5HTEUucGxpc3QKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5H
TEUucGxpc3QKQEAgLTYsMTMgKzYsMTMgQEAKIAkJPGtleT5PcGVuU291cmNlUHJvamVjdDwva2V5
PgogCQk8c3RyaW5nPkFOR0xFPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZVZlcnNpb248L2tl
eT4KLQkJPHN0cmluZz5hYTZkZDUwZGUwYzUyNTNkNTZjYWYzN2I5NjkxZGQ2MWE1ZjY3MGZkPC9z
dHJpbmc+CisJCTxzdHJpbmc+YjM4N2NlOTM4OWVkZTZhNGVkM2I4MzFhYjFiODE4NzkyN2ZhMjk1
Zjwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAJCTxzdHJpbmc+
aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88L3N0cmluZz4KIAkJPGtleT5P
cGVuU291cmNlU0NNPC9rZXk+Ci0JCTxzdHJpbmc+Z2l0IGNsb25lIGh0dHBzOi8vY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSAmYW1wOyZhbXA7IGNkIGFuZ2xlICZhbXA7JmFt
cDsgZ2l0IGNoZWNrb3V0IGFhNmRkNTBkZTBjNTI1M2Q1NmNhZjM3Yjk2OTFkZDYxYTVmNjcwZmQ8
L3N0cmluZz4KKwkJPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2FuZ2xlL2FuZ2xlICZhbXA7JmFtcDsgY2QgYW5nbGUgJmFtcDsmYW1wOyBnaXQgY2hl
Y2tvdXQgYjM4N2NlOTM4OWVkZTZhNGVkM2I4MzFhYjFiODE4NzkyN2ZhMjk1Zjwvc3RyaW5nPgog
CQk8a2V5Pk9wZW5Tb3VyY2VJbXBvcnREYXRlPC9rZXk+Ci0JCTxzdHJpbmc+MjAyMC0wMi0wMzwv
c3RyaW5nPgorCQk8c3RyaW5nPjIwMjAtMDMtMjc8L3N0cmluZz4KIAkJPGtleT5PcGVuU291cmNl
TGljZW5zZTwva2V5PgogCQk8c3RyaW5nPkJTRDwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VM
aWNlbnNlRmlsZTwva2V5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5H
TEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FO
R0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjk1MWVhN2Y0NTlkMGFjN2UyNjBl
MDUwYjBiOGY4YTY3N2RkYmI2Ny4uNjFhMmVhOGNhODQyZDY4ZmZjOGQ2MGM2ODA1N2FiNzQ4YWE1
MGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjQsOCArNDI0LDYgQEAKIAkJNUNCMzAxMkExREUz
OUYxQTAwRDJDNDA1IC8qIGZ1bmN0aW9uc2dsX3R5cGVkZWZzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDBGNjFERTM5RjFBMDBEMkM0MDUgLyog
ZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaCAqLzsgfTsKIAkJNUNCMzAxMkIxREUzOUYxQTAwRDJDNDA1
IC8qIEZ1bmN0aW9uc0dMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDQjMwMEY3MURFMzlGMUEwMEQyQzQwNSAvKiBGdW5jdGlvbnNHTC5jcHAgKi87
IH07CiAJCTVDQjMwMTJDMURFMzlGMUEwMEQyQzQwNSAvKiBGdW5jdGlvbnNHTC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzAwRjgxREUzOUYxQTAw
RDJDNDA1IC8qIEZ1bmN0aW9uc0dMLmggKi87IH07Ci0JCTVDQjMwMTJEMURFMzlGMUEwMEQyQzQw
NSAvKiBQYXRoR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNCMzAwRkExREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhHTC5jcHAgKi87IH07Ci0JCTVD
QjMwMTJFMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwMEZCMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRo
R0wuaCAqLzsgfTsKIAkJNUNCMzAxMkYxREUzOUYxQTAwRDJDNDA1IC8qIFByb2dyYW1HTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDBGQzFE
RTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmNwcCAqLzsgfTsKIAkJNUNCMzAxMzAxREUzOUYx
QTAwRDJDNDA1IC8qIFByb2dyYW1HTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCMzAwRkQxREUzOUYxQTAwRDJDNDA1IC8qIFByb2dyYW1HTC5oICov
OyB9OwogCQk1Q0IzMDEzMTFERTM5RjFBMDBEMkM0MDUgLyogUXVlcnlHTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDBGRTFERTM5RjFBMDBE
MkM0MDUgLyogUXVlcnlHTC5jcHAgKi87IH07CkBAIC01NTEsMTQgKzU0OSwxMCBAQAogCQk1Q0NE
NTk5QzIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDU5OTkyMjg0RkM3NTAwMThGMkQ4IC8qIFN5
c3RlbUluZm8uaCAqLzsgfTsKIAkJNUNDRDgxNzIxREJGRTk5OTAwNjA2NkI4IC8qIERlYnVnLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTVB
MURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5jcHAgKi87IH07CiAJCTVDQ0Q4MTczMURCRkU5OTkw
MDYwNjZCOCAvKiBEZWJ1Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNDRDgxNUIxREJGRTk5OTAwNjA2NkI4IC8qIERlYnVnLmggKi87IH07Ci0JCTVD
Q0Q4MTc0MURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1QzFEQkZFOTk5
MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwICovOyB9OwotCQk1Q0NEODE3NTFE
QkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTVEMURCRkU5OTkwMDYwNjZCOCAv
KiBIYW5kbGVSYW5nZUFsbG9jYXRvci5oICovOyB9OwogCQk1Q0NEODE3NjFEQkZFOTk5MDA2MDY2
QjggLyogSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNDRDgxNUUxREJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJNUND
RDgxNzcxREJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1RjFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2Uu
aCAqLzsgfTsKIAkJNUNDRDgxNzgxREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2
MDFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmNwcCAqLzsgfTsKIAkJNUNDRDgx
NzkxREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjExREJGRTk5OTAwNjA2NkI4IC8q
IEluZGV4UmFuZ2VDYWNoZS5oICovOyB9OwotCQk1Q0NEODE3QTFEQkZFOTk5MDA2MDY2QjggLyog
UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0NEODE2MjFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5jcHAgKi87IH07Ci0JCTVDQ0Q4MTdCMURC
RkU5OTkwMDYwNjZCOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0NEODE2MzFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5oICovOyB9Owog
CQk1Q0NEODE3QzFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2NDFEQkZFOTk5MDA2MDY2
QjggLyogcXVlcnl1dGlscy5jcHAgKi87IH07CiAJCTVDQ0Q4MTdEMURCRkU5OTkwMDYwNjZCOCAv
KiBxdWVyeXV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0NEODE2NTFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5oICovOyB9OwogCQk1
Q0NEODE4MDFEQkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY4MURCRkU5OTkwMDYwNjZCOCAvKiBT
dHJlYW0uY3BwICovOyB9OwpAQCAtNTgxLDYgKzU3NSwxMSBAQAogCQk2RUQ3MEEwRDIyQ0Q2MzBF
MDA4Njg4Q0UgLyogZ2xleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFRDcwQTBBMjJDRDYzMEUwMDg2ODhDRSAvKiBnbGV4dC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNkVENzBBMEUyMkNENjMwRTAw
ODY4OENFIC8qIGdscGxhdGZvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFRDcwQTBCMjJDRDYzMEUwMDg2ODhDRSAvKiBnbHBsYXRmb3JtLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk2RUQ3MEExMDIy
Q0Q2ODIyMDA4Njg4Q0UgLyogZ2xleHRfYW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRDcwQTBGMjJDRDY4MjIwMDg2ODhDRSAvKiBnbGV4dF9h
bmdsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJ
NkVEN0JERjAyNDMyQ0NDNDAwRTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUQ3QkRF
RTI0MzJDQ0MzMDBFMDE1MDMgLyogUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmNwcCAqLzsg
fTsKKwkJNkVEN0JERjEyNDMyQ0NDNDAwRTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50ZXJCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVE
N0JERUYyNDMyQ0NDMzAwRTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5oICov
OyB9OworCQk2RUQ3QkRGMzI0MzJDRDFCMDBFMDE1MDMgLyogSW5mb0xvZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVEN0JERjIyNDMyQ0QxQjAwRTAx
NTAzIC8qIEluZm9Mb2cuaCAqLzsgfTsKKwkJNkVEN0JERjYyNDMyQ0Q2MjAwRTAxNTAzIC8qIFBy
b2dyYW1FeGVjdXRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFRDdCREY0MjQzMkNENjIwMEUwMTUwMyAvKiBQcm9ncmFtRXhlY3V0YWJsZS5j
cHAgKi87IH07CisJCTZFRDdCREY3MjQzMkNENjIwMEUwMTUwMyAvKiBQcm9ncmFtRXhlY3V0YWJs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVEN0JE
RjUyNDMyQ0Q2MjAwRTAxNTAzIC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi87IH07CiAJCTZFRTJG
RDJEMjJCQUU5OUMwMDFEMzY5RSAvKiBlZ2xleHRfYW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTJGRDJDMjJCQUU5OUMwMDFEMzY5RSAvKiBl
Z2xleHRfYW5nbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTZFRTJGRDJGMjJCQUU5Q0QwMDFEMzY5RSAvKiBnbDJleHRfYW5nbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTJGRDJFMjJCQUU5Q0Qw
MDFEMzY5RSAvKiBnbDJleHRfYW5nbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCUEwOEMzQ0RDMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5k
c0NsYW1wZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTA4QzNDREExNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi87
IH07CkBAIC0xMTk3LDggKzExOTYsNiBAQAogCQk1Q0IzMDBGNjFERTM5RjFBMDBEMkM0MDUgLyog
ZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
ZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNC
MzAwRjcxREUzOUYxQTAwRDJDNDA1IC8qIEZ1bmN0aW9uc0dMLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uc0dMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNCMzAwRjgxREUzOUYxQTAwRDJDNDA1IC8qIEZ1bmN0aW9uc0dMLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9uc0dMLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDQjMwMEZBMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aEdMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMzAwRkIxREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhH
TC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoR0wuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzAwRkMxREUzOUYxQTAwRDJDNDA1IC8qIFByb2dyYW1H
TC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm9ncmFtR0wuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzMDBGRDFERTM5RjFBMDBEMkM0MDUg
LyogUHJvZ3JhbUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2dyYW1H
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzMDBGRTFERTM5RjFBMDBEMkM0
MDUgLyogUXVlcnlHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBR
dWVyeUdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMjAsMTQgKzEzMTcs
MTAgQEAKIAkJNUNDRDU5OTkyMjg0RkM3NTAwMThGMkQ4IC8qIFN5c3RlbUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0NEODE1QTFEQkZFOTk5MDA2MDY2QjggLyogRGVidWcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVidWcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0NEODE1QjFEQkZFOTk5MDA2MDY2QjggLyogRGVidWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUNDRDgxNUMxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhbmRsZVJhbmdl
QWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDRDgxNUQxREJG
RTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhhbmRsZVJhbmdlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQ0Q4MTVFMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTVGMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0NEODE2MDFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluZGV4UmFuZ2VDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTYxMURCRkU5OTkwMDYwNjZC
OCAvKiBJbmRleFJhbmdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5kZXhSYW5nZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQ0Q4MTYy
MURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0NEODE2
MzFEQkZFOTk5MDA2MDY2QjggLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTY0MURCRkU5
OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHF1ZXJ5dXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0NEODE2NTFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBxdWVyeXV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDQ0Q4MTY4MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzNTMsNiArMTM0NiwxMSBAQAogCQk2RUQ3MEEwQTIyQ0Q2MzBFMDA4Njg4Q0Ug
LyogZ2xleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZ2xleHQuaDsgcGF0
aCA9IGluY2x1ZGUvR0xFUy9nbGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RUQ3MEEwQjIyQ0Q2MzBFMDA4Njg4Q0UgLyogZ2xwbGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBnbHBsYXRmb3JtLmg7IHBhdGggPSBpbmNsdWRlL0dMRVMvZ2xwbGF0
Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUQ3MEEwRjIyQ0Q2ODIyMDA4
Njg4Q0UgLyogZ2xleHRfYW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Z2xleHRfYW5nbGUuaDsgcGF0aCA9IGluY2x1ZGUvR0xFUy9nbGV4dF9hbmdsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2RUQ3QkRFRTI0MzJDQ0MzMDBFMDE1MDMgLyogUmVtb3Zl
QXRvbWljQ291bnRlckJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZFRDdCREVGMjQzMkNDQzMwMEUwMTUwMyAvKiBSZW1vdmVBdG9taWNDb3Vu
dGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlQXRv
bWljQ291bnRlckJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFRDdC
REYyMjQzMkNEMUIwMEUwMTUwMyAvKiBJbmZvTG9nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluZm9Mb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVEN0JE
RjQyNDMyQ0Q2MjAwRTAxNTAzIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW1FeGVjdXRhYmxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVEN0JERjUyNDMyQ0Q2MjAwRTAxNTAzIC8qIFByb2dyYW1F
eGVjdXRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2dyYW1FeGVj
dXRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRTJGRDJDMjJCQUU5OUMw
MDFEMzY5RSAvKiBlZ2xleHRfYW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gZWdsZXh0X2FuZ2xlLmg7IHBhdGggPSBpbmNsdWRlL0VHTC9lZ2xleHRfYW5nbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVFMkZEMkUyMkJBRTlDRDAwMUQzNjlFIC8qIGds
MmV4dF9hbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBnbDJleHRfYW5n
bGUuaDsgcGF0aCA9IGluY2x1ZGUvR0xFUzIvZ2wyZXh0X2FuZ2xlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEwOEMzQ0RBMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0Ns
YW1wZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQXJyYXlCb3Vu
ZHNDbGFtcGVyLmNwcDsgcGF0aCA9IGNvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ5LDggKzE4NDcsNiBAQAogCQkJCTVDQ0Q1
OTU0MjI4NEY3OTUwMDE4RjJEOCAvKiBHTEVTMVN0YXRlLmggKi8sCiAJCQkJNUMxREJDNkYxQjA0
MzhEMjAwMjM1NTUyIC8qIEhhbmRsZUFsbG9jYXRvci5jcHAgKi8sCiAJCQkJNUMxREJDNzAxQjA0
MzhEMjAwMjM1NTUyIC8qIEhhbmRsZUFsbG9jYXRvci5oICovLAotCQkJCTVDQ0Q4MTVDMURCRkU5
OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAgKi8sCi0JCQkJNUNDRDgxNUQx
REJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmggKi8sCiAJCQkJNUMxREJD
NzExQjA0MzhEMjAwMjM1NTUyIC8qIGhpc3RvZ3JhbV9tYWNyb3MuaCAqLywKIAkJCQk1Q0NEODE1
RTFEQkZFOTk5MDA2MDY2QjggLyogSW1hZ2UuY3BwICovLAogCQkJCTVDQ0Q4MTVGMURCRkU5OTkw
MDYwNjZCOCAvKiBJbWFnZS5oICovLApAQCAtMTg1OCw2ICsxODU0LDcgQEAKIAkJCQk1QzFEQkM3
MzFCMDQzOEQyMDAyMzU1NTIgLyogSW1hZ2VJbmRleC5oICovLAogCQkJCTVDQ0Q4MTYwMURCRkU5
OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuY3BwICovLAogCQkJCTVDQ0Q4MTYxMURCRkU5
OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuaCAqLywKKwkJCQk2RUQ3QkRGMjI0MzJDRDFC
MDBFMDE1MDMgLyogSW5mb0xvZy5oICovLAogCQkJCTMxNUVCREQxMUZDRTQ1MjgwMEFDN0E4OSAv
KiBMb2dnaW5nQW5ub3RhdG9yLmNwcCAqLywKIAkJCQkzMTVFQkREQTFGQ0U0NTJCMDBBQzdBODkg
LyogTG9nZ2luZ0Fubm90YXRvci5oICovLAogCQkJCTVDQ0Q1OTU2MjI4NEY3OTUwMDE4RjJEOCAv
KiBNZW1vcnlPYmplY3QuY3BwICovLApAQCAtMTg3MywxMSArMTg3MCwxMSBAQAogCQkJCUEzMTU5
ODgzMjMyOTkwMzcwMDA2MTlCOSAvKiBPdmVybGF5X2ZvbnRfYXV0b2dlbi5oICovLAogCQkJCUEz
MTU5ODg1MjMyOTkwMzcwMDA2MTlCOSAvKiBPdmVybGF5V2lkZ2V0cy5jcHAgKi8sCiAJCQkJQTMx
NTk4ODcyMzI5OTAzNzAwMDYxOUI5IC8qIE92ZXJsYXlXaWRnZXRzLmggKi8sCi0JCQkJNUNDRDgx
NjIxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguY3BwICovLAotCQkJCTVDQ0Q4MTYzMURCRkU5OTkw
MDYwNjZCOCAvKiBQYXRoLmggKi8sCiAJCQkJNUMxREJDNzUxQjA0MzhEMjAwMjM1NTUyIC8qIFBs
YXRmb3JtLmNwcCAqLywKIAkJCQk1QzFEQkM3NjFCMDQzOEQyMDAyMzU1NTIgLyogUHJvZ3JhbS5j
cHAgKi8sCiAJCQkJNUMxREJDNzcxQjA0MzhEMjAwMjM1NTUyIC8qIFByb2dyYW0uaCAqLywKKwkJ
CQk2RUQ3QkRGNDI0MzJDRDYyMDBFMDE1MDMgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovLAor
CQkJCTZFRDdCREY1MjQzMkNENjIwMEUwMTUwMyAvKiBQcm9ncmFtRXhlY3V0YWJsZS5oICovLAog
CQkJCTMxNUVCREQ1MUZDRTQ1MjkwMEFDN0E4OSAvKiBQcm9ncmFtTGlua2VkUmVzb3VyY2VzLmNw
cCAqLywKIAkJCQkzMTVFQkRDRjFGQ0U0NTI3MDBBQzdBODkgLyogUHJvZ3JhbUxpbmtlZFJlc291
cmNlcy5oICovLAogCQkJCTMxNUVCRENFMUZDRTQ1MjcwMEFDN0E4OSAvKiBQcm9ncmFtUGlwZWxp
bmUuY3BwICovLApAQCAtMjE0Nyw4ICsyMTQ0LDYgQEAKIAkJCQlBMzAzMDc4NjIzMDVGOEYwMDAy
REE5NzIgLyogTWVtb3J5T2JqZWN0R0wuaCAqLywKIAkJCQkzMTVFQkRCNTFGQ0U0NEJFMDBBQzdB
ODkgLyogbnVsbF9mdW5jdGlvbnMuY3BwICovLAogCQkJCTMxNUVCREI4MUZDRTQ0QkYwMEFDN0E4
OSAvKiBudWxsX2Z1bmN0aW9ucy5oICovLAotCQkJCTVDQjMwMEZBMURFMzlGMUEwMEQyQzQwNSAv
KiBQYXRoR0wuY3BwICovLAotCQkJCTVDQjMwMEZCMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wu
aCAqLywKIAkJCQk1Q0IzMDBGQzFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmNwcCAqLywK
IAkJCQk1Q0IzMDBGRDFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmggKi8sCiAJCQkJMzE1
RUJEQjAxRkNFNDRCRDAwQUM3QTg5IC8qIFByb2dyYW1QaXBlbGluZUdMLmNwcCAqLywKQEAgLTIy
NTcsNiArMjI1Miw4IEBACiAJCQkJNUM1NUQ2MDAyMjgyNkI4RjAwQjVCQTJDIC8qIFJlZ2VuZXJh
dGVTdHJ1Y3ROYW1lcy5oICovLAogCQkJCTVDNTVENUZBMjI4MjZCOEYwMEI1QkEyQyAvKiBSZW1v
dmVBcnJheUxlbmd0aE1ldGhvZC5jcHAgKi8sCiAJCQkJNUM1NUQ2M0UyMjgyNkI5QzAwQjVCQTJD
IC8qIFJlbW92ZUFycmF5TGVuZ3RoTWV0aG9kLmggKi8sCisJCQkJNkVEN0JERUUyNDMyQ0NDMzAw
RTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHAgKi8sCisJCQkJNkVEN0JE
RUYyNDMyQ0NDMzAwRTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5oICovLAog
CQkJCTVDNTVENjA5MjI4MjZCOTAwMEI1QkEyQyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuY3Bw
ICovLAogCQkJCTVDNTVENjJGMjI4MjZCOTgwMEI1QkEyQyAvKiBSZW1vdmVEeW5hbWljSW5kZXhp
bmcuaCAqLywKIAkJCQlBM0QzMjkxMjIzQ0ZDQjc2MDAzNzU2NTcgLyogUmVtb3ZlSW5hY3RpdmVJ
bnRlcmZhY2VWYXJpYWJsZXMuY3BwICovLApAQCAtMjcxOCw3ICsyNzE1LDYgQEAKIAkJCQkzMTAx
MkUyRDE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNE
MzI5MEMyM0NGQ0I0RDAwMzc1NjU3IC8qIGdsc2xhbmdfdGFiX2F1dG9nZW4uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDMURCREY5MUIwNDM4RDMwMDIzNTU1MiAvKiBIYW5kbGVBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTVDQ0Q4MTc1MURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5n
ZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MkMyMjgyNzQ3NzAwQjVCQTJD
IC8qIGhhc2hfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTMzMThCOTdCOUIwMDM5
MDYyRiAvKiBIYXNoTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREZBMUIwNDM4RDMw
MDIzNTU1MiAvKiBoaXN0b2dyYW1fbWFjcm9zLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzIsNiAr
MjcyOCw3IEBACiAJCQkJNUM1NUQ2RTIyMjgyNkM3OTAwQjVCQTJDIC8qIEltbXV0YWJsZVN0cmlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ2RTUyMjgyNkM3OTAwQjVCQTJDIC8qIEltbXV0
YWJsZVN0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q4MTc5MURCRkU5OTkw
MDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFRDdCREYz
MjQzMkNEMUIwMEUwMTUwMyAvKiBJbmZvTG9nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUz
NTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5mb1NpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEy
RTM3MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MTAxMkUzOTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNzgwLDggKzI3NzcsNiBAQAogCQkJCTVDNTVENzJBMjI4Mjc0NzcwMEI1QkEyQyAvKiBQ
YWNrZWRFbnVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ3MjkyMjgyNzQ3NzAwQjVCQTJD
IC8qIFBhY2tlZEdMRW51bXNfYXV0b2dlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNTUx
OEI5N0I5QjAwMzkwNjJGIC8qIFBhcnNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUND
RDgxN0IxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguaCBpbiBIZWFkZXJzICovLAotCQkJCTVDQjMw
MTJFMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMw
NEYxMURFNDE2NDgwMEQyQzQwNSAvKiBQYXRoSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNC
MzAxNTExREUzOUY0NzAwRDJDNDA1IC8qIFBidWZmZXJTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTNCQ0U1RDIzNjExMzNBMDBGQzM5RTUgLyogUGJ1ZmZlclN1cmZhY2VFQUdMLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3OTMsNiArMjc4OCw3IEBACiAJCQkJQTI2NEY4QkYxNjk3NERF
RDAwNkZBQTVBIC8qIFByZXByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTMwMzA3OTQy
MzA1Rjk1OTAwMkRBOTcyIC8qIHByb2NfdGFibGVfZWdsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzFEQkUwMDFCMDQzOEQzMDAyMzU1NTIgLyogUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NkVEN0JERjcyNDMyQ0Q2MjAwRTAxNTAzIC8qIFByb2dyYW1FeGVjdXRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1Q0IzMDEzMDFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0IzMDRGMzFERTQxNjQ4MDBEMkM0MDUgLyogUHJvZ3JhbUltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDQjMwNEYyMURFNDE2NDgwMEQyQzQwNSAvKiBQcm9ncmFtSW1w
bF9tb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTIsNiArMjgwOCw3IEBACiAJCQkJNUMxREJF
MDYxQjA0MzhEMzAwMjM1NTUyIC8qIFJlZkNvdW50T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzU1RDY1QzIyODI2QjlGMDBCNUJBMkMgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzU1RDY5QTIyODI2QjlGMDBCNUJBMkMgLyogUmVtb3ZlQXJyYXlM
ZW5ndGhNZXRob2QuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFRDdCREYxMjQzMkNDQzQwMEUwMTUw
MyAvKiBSZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
NTVENjhCMjI4MjZCOUYwMEI1QkEyQyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUEzRDMyOTE5MjNDRkNCNzcwMDM3NTY1NyAvKiBSZW1vdmVJbmFjdGl2ZUlu
dGVyZmFjZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ2NEQyMjgyNkI5RjAw
QjVCQTJDIC8qIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTMxNjIsNyArMzE1OSw2IEBACiAJCQkJQTNEMzI5MEQyM0NGQ0I0RDAwMzc1NjU3IC8qIGdsc2xh
bmdfbGV4X2F1dG9nZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNEMzI5MEIyM0NGQ0I0RDAw
Mzc1NjU3IC8qIGdsc2xhbmdfdGFiX2F1dG9nZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
REJERjgxQjA0MzhEMzAwMjM1NTUyIC8qIEhhbmRsZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1Q0NEODE3NDFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1RUJEODYxRkNFNDQzNjAwQUM3QTg5IC8qIEhhc2hO
YW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0NEODE3NjFEQkZFOTk5MDA2MDY2QjggLyog
SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDRDU5OTEyMjg0RkM0MDAwMThGMkQ4IC8q
IGltYWdlZm9ybWF0cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTQsOCArMzIxMCw2IEBACiAJ
CQkJNUM1NUQ3MkQyMjgyNzQ3NzAwQjVCQTJDIC8qIFBhY2tlZEVudW1zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDNTVENzJFMjI4Mjc0NzcwMEI1QkEyQyAvKiBQYWNrZWRHTEVudW1zX2F1dG9n
ZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNTQxOEI5N0I5QjAwMzkwNjJGIC8qIFBh
cnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0NEODE3QTFEQkZFOTk5MDA2MDY2
QjggLyogUGF0aC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0IzMDEyRDFERTM5RjFBMDBEMkM0
MDUgLyogUGF0aEdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q1OTZGMjI4NEY5NTUwMDE4
RjJEOCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTNCQ0U1
NjIzNjExMzNBMDBGQzM5RTUgLyogUGJ1ZmZlclN1cmZhY2VFQUdMLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDMURCREZFMUIwNDM4RDMwMDIzNTU1MiAvKiBQbGF0Zm9ybS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMyMjcsNiArMzIyMSw3IEBACiAJCQkJQTNEMzI5MDcyM0NGQzg4NzAwMzc1NjU3
IC8qIHByZXByb2Nlc3Nvcl90YWJfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzAz
MDc5NTIzMDVGOTU5MDAyREE5NzIgLyogcHJvY190YWJsZV9lZ2xfYXV0b2dlbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1QzFEQkRGRjFCMDQzOEQzMDAyMzU1NTIgLyogUHJvZ3JhbS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk2RUQ3QkRGNjI0MzJDRDYyMDBFMDE1MDMgLyogUHJvZ3JhbUV4ZWN1
dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMzAxMkYxREUzOUYxQTAwRDJDNDA1IC8q
IFByb2dyYW1HTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVFQkRFQzFGQ0U0NTJEMDBBQzdB
ODkgLyogUHJvZ3JhbUxpbmtlZFJlc291cmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTVF
QkRFNTFGQ0U0NTJEMDBBQzdBODkgLyogUHJvZ3JhbVBpcGVsaW5lLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzI0Miw2ICszMjM3LDcgQEAKIAkJCQk1QzU1RDZCOTIyODI2QkM4MDBCNUJBMkMgLyog
UmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ2QkEy
MjgyNkJDODAwQjVCQTJDIC8qIFJlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzU1RDZCQjIyODI2QkM4MDBCNUJBMkMgLyogUmVtb3ZlQXJyYXlMZW5ndGhNZXRo
b2QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkVEN0JERjAyNDMyQ0NDNDAwRTAxNTAzIC8qIFJl
bW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDZC
QzIyODI2QkM4MDBCNUJBMkMgLyogUmVtb3ZlRHluYW1pY0luZGV4aW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEzRDMyOTE4MjNDRkNCNzcwMDM3NTY1NyAvKiBSZW1vdmVJbmFjdGl2ZUludGVy
ZmFjZVZhcmlhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDZCRDIyODI2QkM4MDBC
NUJBMkMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQVVUSE9SUwppbmRleCAyNWY4ZTMzNjcxYmYyNDNkZGYwMzQ4NWY3OWY0ZWVl
NmRmZjQ5MDJiLi5mYTUwNzNlNzNhOTIyYmFlZmYyYmQwZDM3MTg1MDY4YTlmNzQzZTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FVVEhPUlMKQEAgLTM0LDYgKzM0LDcgQEAgU2Ftc3VuZyBFbGVjdHJvbmlj
cywgSW5jLgogQXJtIEx0ZC4KIEJyb2FkY29tIEluYy4KIEZhY2Vib29rLCBJbmMuCitUaGUgS2hy
b25vcyBHcm91cCwgSW5jLgogCiBKYWNlayBDYWJhbgogTWFyayBDYWxsb3cKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvQlVJTEQuZ24KaW5kZXggYzBiYmViNzM4MmNmMmQzYTUwY2U1YzQxNTllMDhhOWIwY2EzODQy
YS4uYWQ3Njc1ZjRlNTZkNTFhYzQ2NDRmMWQ0MDE0NTllZjQ3MTIyODgwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvQlVJTEQuZ24KQEAgLTMyLDYgKzMyLDkgQEAgZGVjbGFyZV9hcmdzKCkgewogICAjIERv
bid0IGJ1aWxkIGV4dHJhICh0ZXN0LCBzYW1wbGVzIGV0YykgZm9yIFdpbmRvd3MgVVdQLiBXZSBk
b24ndCBoYXZlCiAgICMgaW5mcmFzdHJ1Y3R1cmUgKGUuZy4gd2luZG93aW5nIGhlbHBlciBmdW5j
dGlvbnMpIGluIHBsYWNlIHRvIHJ1biB0aGVtLgogICBhbmdsZV9idWlsZF9hbGwgPSAhYnVpbGRf
d2l0aF9jaHJvbWl1bSAmJiAhYW5nbGVfaXNfd2ludXdwICYmIGFuZ2xlX2hhc19idWlsZAorCisg
ICMgRW5hYmxlIGdlbmVyYXRpbmcgY3VycmVudCBjb21taXQgaW5mb3JtYXRpb24gdXNpbmcgZ2l0
CisgIGFuZ2xlX2VuYWJsZV9jb21taXRfaWQgPSB0cnVlCiB9CiAKIGlmIChhbmdsZV9idWlsZF9h
bGwpIHsKQEAgLTU0LDE1ICs1Nyw2IEBAIGlmIChvem9uZV9wbGF0Zm9ybV9nYm0pIHsKICAgfQog
fQogCi1hbmdsZV9naXRfaXNfcHJlc2VudCA9IGV4ZWNfc2NyaXB0KCJzcmMvY29tbWl0X2lkLnB5
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJjaGVjayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmViYXNlX3BhdGgoIi4iLCByb290X2J1aWxkX2RpciksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ2YWx1ZSIpCi0KLWFuZ2xlX3VzZV9jb21taXRfaWQgPSBhbmdsZV9naXRfaXNfcHJl
c2VudCA9PSAxCi0KIGltcG9ydCgic3JjL2NvbXBpbGVyLmduaSIpCiBpbXBvcnQoInNyYy9saWJH
TEVTdjIuZ25pIikKIApAQCAtMTk3LDE3ICsxOTEsMTMgQEAgaWYgKF91c2VfY29weV9jb21waWxl
cl9kbGwpIHsKICAgICAgIGV4ZWNfc2NyaXB0KCJzY3JpcHRzL2ZpbGVfZXhpc3RzLnB5IiwgWyBf
b2xkX2NvbXBpbGVyIF0sICJ2YWx1ZSIpCiAKICAgY29weSgiY29weV9jb21waWxlcl9kbGwiKSB7
Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICIkd2luZG93c19zZGtfcGF0aC9SZWRpc3QvRDNELyR0
YXJnZXRfY3B1L2QzZGNvbXBpbGVyXzQ3LmRsbCIsCi0gICAgXQorICAgIHNvdXJjZXMgPSBbICIk
d2luZG93c19zZGtfcGF0aC9SZWRpc3QvRDNELyR0YXJnZXRfY3B1L2QzZGNvbXBpbGVyXzQ3LmRs
bCIgXQogCiAgICAgaWYgKF9oYXNfb2xkX2NvbXBpbGVyKSB7CiAgICAgICBzb3VyY2VzICs9IFsg
X29sZF9jb21waWxlciBdCiAgICAgfQogCi0gICAgb3V0cHV0cyA9IFsKLSAgICAgICIkcm9vdF9v
dXRfZGlyL3t7c291cmNlX2ZpbGVfcGFydH19IiwKLSAgICBdCisgICAgb3V0cHV0cyA9IFsgIiRy
b290X291dF9kaXIve3tzb3VyY2VfZmlsZV9wYXJ0fX0iIF0KICAgfQogfQogCkBAIC0yNjMsMTIg
KzI1Myw4IEBAIGFuZ2xlX3NvdXJjZV9zZXQoInh4aGFzaCIpIHsKIAogaWYgKGFuZ2xlX2hhc19i
dWlsZCkgewogICBmdXp6ZXJfdGVzdCgieHhoYXNoX2Z1enplciIpIHsKLSAgICBzb3VyY2VzID0g
WwotICAgICAgInNyYy9jb21tb24vdGhpcmRfcGFydHkveHhoYXNoL3h4aGFzaF9mdXp6ZXIuY3Bw
IiwKLSAgICBdCi0gICAgZGVwcyA9IFsKLSAgICAgICI6eHhoYXNoIiwKLSAgICBdCisgICAgc291
cmNlcyA9IFsgInNyYy9jb21tb24vdGhpcmRfcGFydHkveHhoYXNoL3h4aGFzaF9mdXp6ZXIuY3Bw
IiBdCisgICAgZGVwcyA9IFsgIjp4eGhhc2giIF0KICAgfQogfQogCkBAIC0yODAsOSArMjY2LDcg
QEAgYW5nbGVfc3RhdGljX2xpYnJhcnkoImFuZ2xlX2NvbW1vbiIpIHsKICAgICAiOmRlYnVnX2Fu
bm90YXRpb25zX2NvbmZpZyIsCiAgIF0KIAotICBkZXBzID0gWwotICAgICI6eHhoYXNoIiwKLSAg
XQorICBkZXBzID0gWyAiOnh4aGFzaCIgXQogCiAgIHB1YmxpY19kZXBzID0gWwogICAgICI6YW5n
bGVfc3lzdGVtX3V0aWxzIiwKQEAgLTMwNCwxNyArMjg4LDEzIEBAIGNvbmZpZygiYW5nbGVfaW1h
Z2VfdXRpbF9jb25maWciKSB7CiAKIGFuZ2xlX3NvdXJjZV9zZXQoImFuZ2xlX2ltYWdlX3V0aWxf
aGVhZGVycyIpIHsKICAgc291cmNlcyA9IGxpYmFuZ2xlX2ltYWdlX3V0aWxfaGVhZGVycwotICBw
dWJsaWNfZGVwcyA9IFsKLSAgICAiOmFuZ2xlX2NvbW1vbiIsCi0gIF0KKyAgcHVibGljX2RlcHMg
PSBbICI6YW5nbGVfY29tbW9uIiBdCiB9CiAKIGFuZ2xlX3N0YXRpY19saWJyYXJ5KCJhbmdsZV9p
bWFnZV91dGlsIikgewogICBzb3VyY2VzID0gbGliYW5nbGVfaW1hZ2VfdXRpbF9zb3VyY2VzCiAg
IHB1YmxpY19jb25maWdzICs9IFsgIjphbmdsZV9pbWFnZV91dGlsX2NvbmZpZyIgXQotICBwdWJs
aWNfZGVwcyA9IFsKLSAgICAiOmFuZ2xlX2ltYWdlX3V0aWxfaGVhZGVycyIsCi0gIF0KKyAgcHVi
bGljX2RlcHMgPSBbICI6YW5nbGVfaW1hZ2VfdXRpbF9oZWFkZXJzIiBdCiB9CiAKIGNvbmZpZygi
YW5nbGVfZ2xfdmlzaWJpbGl0eV9jb25maWciKSB7CkBAIC0zNDMsOSArMzIzLDcgQEAgYW5nbGVf
c3RhdGljX2xpYnJhcnkoImFuZ2xlX2dwdV9pbmZvX3V0aWwiKSB7CiAgICAgIjphbmdsZV9ncHVf
aW5mb191dGlsX2NvbmZpZyIsCiAgICAgIjphbmdsZV9iYWNrZW5kX2NvbmZpZyIsCiAgIF0KLSAg
cHVibGljX2RlcHMgPSBbCi0gICAgIjphbmdsZV9jb21tb24iLAotICBdCisgIHB1YmxpY19kZXBz
ID0gWyAiOmFuZ2xlX2NvbW1vbiIgXQogICBzb3VyY2VzID0gbGliYW5nbGVfZ3B1X2luZm9fdXRp
bF9zb3VyY2VzCiAgIGRlcHMgPSBbXQogICBsaWJzID0gW10KQEAgLTQwNyw5ICszODUsNyBAQCBh
bmdsZV9zdGF0aWNfbGlicmFyeSgiYW5nbGVfZ3B1X2luZm9fdXRpbCIpIHsKIAogYW5nbGVfc291
cmNlX3NldCgiYW5nbGVfdHJhbnNsYXRvcl9oZWFkZXJzIikgewogICBzb3VyY2VzID0gYW5nbGVf
dHJhbnNsYXRvcl9leHBvcnRlZF9oZWFkZXJzCi0gIHB1YmxpY19kZXBzID0gWwotICAgICI6aW5j
bHVkZXMiLAotICBdCisgIHB1YmxpY19kZXBzID0gWyAiOmluY2x1ZGVzIiBdCiB9CiAKIGFuZ2xl
X3N0YXRpY19saWJyYXJ5KCJ0cmFuc2xhdG9yIikgewpAQCAtNDY5LDE4ICs0NDUsMTQgQEAgYW5n
bGVfc3RhdGljX2xpYnJhcnkoInRyYW5zbGF0b3IiKSB7CiB9CiAKIGFuZ2xlX3NvdXJjZV9zZXQo
InRyYW5zbGF0b3JfZnV6emVyIikgewotICBzb3VyY2VzID0gWwotICAgICJzcmMvY29tcGlsZXIv
ZnV6ei90cmFuc2xhdG9yX2Z1enplci5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJzcmMvY29t
cGlsZXIvZnV6ei90cmFuc2xhdG9yX2Z1enplci5jcHAiIF0KIAogICBpbmNsdWRlX2RpcnMgPSBb
CiAgICAgImluY2x1ZGUiLAogICAgICJzcmMiLAogICBdCiAKLSAgZGVwcyA9IFsKLSAgICAiOnRy
YW5zbGF0b3IiLAotICBdCisgIGRlcHMgPSBbICI6dHJhbnNsYXRvciIgXQogfQogCiBjb25maWco
ImNvbW1pdF9pZF9jb25maWciKSB7CkBAIC00ODgsNDYgKzQ2MCwyOSBAQCBjb25maWcoImNvbW1p
dF9pZF9jb25maWciKSB7CiAgIHZpc2liaWxpdHkgPSBbICI6Y29tbWl0X2lkIiBdCiB9CiAKLWNv
bW1pdF9pZF9vdXRwdXRfZmlsZSA9ICIkcm9vdF9nZW5fZGlyL2FuZ2xlL2lkL2NvbW1pdC5oIgot
aWYgKGFuZ2xlX3VzZV9jb21taXRfaWQpIHsKLSAgYWN0aW9uKCJjb21taXRfaWQiKSB7Ci0gICAg
c2NyaXB0ID0gInNyYy9jb21taXRfaWQucHkiCi0gICAgb3V0cHV0cyA9IFsKLSAgICAgIGNvbW1p
dF9pZF9vdXRwdXRfZmlsZSwKLSAgICBdCitjb21taXRfaWRfb3V0cHV0X2ZpbGUgPSAiJHJvb3Rf
Z2VuX2Rpci9hbmdsZS9jb21taXQuaCIKK2FjdGlvbigiY29tbWl0X2lkIikgeworICBzY3JpcHQg
PSAic3JjL2NvbW1pdF9pZC5weSIKKyAgb3V0cHV0cyA9IFsgY29tbWl0X2lkX291dHB1dF9maWxl
IF0KIAorICAjIEFkZCBnaXQgYXMgYSBkZXBlbmRlbmN5IGlmIGl0IGlzIGF2YWlsYWJsZS4KKyAg
aWYgKGFuZ2xlX2VuYWJsZV9jb21taXRfaWQgJiYKKyAgICAgIGV4ZWNfc2NyaXB0KCJzcmMvY29t
bWl0X2lkLnB5IiwgWyAiY2hlY2siIF0sICJ2YWx1ZSIpID09IDEpIHsKICAgICAjIGNvbW1pdCBp
ZCBzaG91bGQgZGVwZW5kIG9uIGFuZ2xlJ3MgSEVBRCByZXZpc2lvbgotICAgIGlucHV0cyA9IFsK
LSAgICAgICIuZ2l0L0hFQUQiLAotICAgIF0KKyAgICBpbnB1dHMgPSBbICIuZ2l0L0hFQUQiIF0K
KyAgfQogCi0gICAgYXJncyA9IFsKLSAgICAgICJnZW4iLAotICAgICAgcmViYXNlX3BhdGgoIi4i
LCByb290X2J1aWxkX2RpciksCi0gICAgICByZWJhc2VfcGF0aChjb21taXRfaWRfb3V0cHV0X2Zp
bGUsIHJvb3RfYnVpbGRfZGlyKSwKLSAgICBdCisgIGFyZ3MgPSBbCisgICAgImdlbiIsCisgICAg
cmViYXNlX3BhdGgoY29tbWl0X2lkX291dHB1dF9maWxlLCByb290X2J1aWxkX2RpciksCisgIF0K
IAotICAgIHB1YmxpY19jb25maWdzID0gWyAiOmNvbW1pdF9pZF9jb25maWciIF0KLSAgfQotfSBl
bHNlIHsKLSAgY29weSgiY29tbWl0X2lkIikgewotICAgIHNvdXJjZXMgPSBbCi0gICAgICAic3Jj
L2NvbW1pdC5oIiwKLSAgICBdCi0gICAgb3V0cHV0cyA9IFsKLSAgICAgIGNvbW1pdF9pZF9vdXRw
dXRfZmlsZSwKLSAgICBdCi0gICAgcHVibGljX2NvbmZpZ3MgPSBbICI6Y29tbWl0X2lkX2NvbmZp
ZyIgXQotICB9CisgIHB1YmxpY19jb25maWdzID0gWyAiOmNvbW1pdF9pZF9jb25maWciIF0KIH0K
IAogYW5nbGVfc291cmNlX3NldCgiYW5nbGVfdmVyc2lvbiIpIHsKLSAgc291cmNlcyA9IFsKLSAg
ICAic3JjL2NvbW1vbi92ZXJzaW9uLmgiLAotICBdCi0gIHB1YmxpY19kZXBzID0gWwotICAgICI6
Y29tbWl0X2lkIiwKLSAgXQorICBzb3VyY2VzID0gWyAic3JjL2NvbW1vbi92ZXJzaW9uLmgiIF0K
KyAgcHVibGljX2RlcHMgPSBbICI6Y29tbWl0X2lkIiBdCiB9CiAKIGNvbmZpZygiYW5nbGVfYmFj
a2VuZF9jb25maWciKSB7CkBAIC01NzEsNyArNTI2LDggQEAgY29uZmlnKCJsaWJBTkdMRV9jb25m
aWciKSB7CiAgIGRlZmluZXMgKz0gWyAiTElCQU5HTEVfSU1QTEVNRU5UQVRJT04iIF0KIAogICBp
ZiAoaXNfd2luKSB7Ci0gICAgY2ZsYWdzICs9IFsgIi93ZDQ1MzAiIF0gICMgQysrIGV4Y2VwdGlv
biBoYW5kbGVyIHVzZWQsIGJ1dCB1bndpbmQgc2VtYW50aWNzIGFyZSBub3QgZW5hYmxlZC4KKyAg
ICBjZmxhZ3MgKz0gWyAiL3dkNDUzMCIgXSAgIyBDKysgZXhjZXB0aW9uIGhhbmRsZXIgdXNlZCwg
YnV0IHVud2luZCBzZW1hbnRpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmUg
bm90IGVuYWJsZWQuCiAgIH0KIAogICBpZiAoaXNfYW5kcm9pZCAmJiAoYW5nbGVfZW5hYmxlX2ds
IHx8IGFuZ2xlX2VuYWJsZV92dWxrYW4pKSB7CkBAIC03MjMsMTIgKzY3OSwxNCBAQCBhbmdsZV9z
b3VyY2Vfc2V0KCJsaWJBTkdMRV9iYXNlIikgewogICAgICAgc291cmNlcyArPSBsaWJhbmdsZV9n
bF9lZ2xfZGxfc291cmNlcwogICAgICAgc291cmNlcyArPSBsaWJhbmdsZV9nbF9lZ2xfYW5kcm9p
ZF9zb3VyY2VzCiAgICAgfQorICAgIGlmIChpc19saW51eCkgeworICAgICAgc291cmNlcyArPSBs
aWJhbmdsZV9nbF9lZ2xfc291cmNlcworICAgICAgc291cmNlcyArPSBsaWJhbmdsZV9nbF9lZ2xf
ZGxfc291cmNlcworICAgIH0KICAgICBpZiAob3pvbmVfcGxhdGZvcm1fZ2JtKSB7CiAgICAgICBj
b25maWdzICs9IFsgIjpsaWJkcm0iIF0KICAgICAgIGRlZmluZXMgKz0gWyAiQU5HTEVfVVNFX09a
T05FIiBdCiAgICAgICBkZXBzICs9IFsgIi8vdGhpcmRfcGFydHkvbWluaWdibSIgXQotICAgICAg
c291cmNlcyArPSBsaWJhbmdsZV9nbF9lZ2xfc291cmNlcwotICAgICAgc291cmNlcyArPSBsaWJh
bmdsZV9nbF9lZ2xfZGxfc291cmNlcwogICAgICAgc291cmNlcyArPSBsaWJhbmdsZV9nbF9vem9u
ZV9zb3VyY2VzCiAgICAgfQogICB9CkBAIC03NTQsOSArNzEyLDcgQEAgYW5nbGVfc291cmNlX3Nl
dCgibGliQU5HTEVfYmFzZSIpIHsKICAgIyBXaW5kb3dzIEFSTTY0IGlzIGF2YWlsYWJsZSBzaW5j
ZSAxMC4wLjE2Mjk5IHNvIG5vIG5lZWQgdG8gY29weQogICAjIGQzZGNvbXBpbGVyXzQ3LmRsbCBi
ZWNhdXNlIHRoaXMgZmlsZSBpcyBhdmFpbGFibGUgYXMgaW5ib3guCiAgIGlmIChfdXNlX2NvcHlf
Y29tcGlsZXJfZGxsKSB7Ci0gICAgZGF0YV9kZXBzID0gWwotICAgICAgIjpjb3B5X2NvbXBpbGVy
X2RsbCIsCi0gICAgXQorICAgIGRhdGFfZGVwcyA9IFsgIjpjb3B5X2NvbXBpbGVyX2RsbCIgXQog
ICB9CiB9CiAKQEAgLTc2OSwxMyArNzI1LDkgQEAgY29uZmlnKCJhbmdsZV9mcmFtZV9jYXB0dXJl
X2VuYWJsZWQiKSB7CiB9CiAKIGFuZ2xlX3NvdXJjZV9zZXQoImxpYkFOR0xFIikgewotICBwdWJs
aWNfZGVwcyA9IFsKLSAgICAiOmxpYkFOR0xFX2Jhc2UiLAotICBdCisgIHB1YmxpY19kZXBzID0g
WyAiOmxpYkFOR0xFX2Jhc2UiIF0KICAgcHVibGljX2NvbmZpZ3MgPSBbICI6YW5nbGVfZnJhbWVf
Y2FwdHVyZV9kaXNhYmxlZCIgXQotICBzb3VyY2VzID0gWwotICAgICJzcmMvbGliQU5HTEUvRnJh
bWVDYXB0dXJlX21vY2suY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAic3JjL2xpYkFOR0xFL0Zy
YW1lQ2FwdHVyZV9tb2NrLmNwcCIgXQogCiAgICMgZ2xfZW51bV91dGlscyBkZWZhdWx0cyBpbmNs
dWRlZCBpbiB3aXRoX2NhcHR1cmUgYnVpbGQKICAgZGVwcyA9IFtdCkBAIC03ODUsMTkgKzczNywy
OCBAQCBhbmdsZV9zb3VyY2Vfc2V0KCJsaWJBTkdMRSIpIHsKIH0KIAogYW5nbGVfc291cmNlX3Nl
dCgiYW5nbGVfZ2xfZW51bV91dGlscyIpIHsKLSAgcHVibGljX2RlcHMgPSBbCi0gICAgIjpsaWJB
TkdMRV9iYXNlIiwKLSAgXQorICBwdWJsaWNfZGVwcyA9IFsgIjpsaWJBTkdMRV9iYXNlIiBdCiAg
IHNvdXJjZXMgPSBbCiAgICAgInNyYy9saWJBTkdMRS9nbF9lbnVtX3V0aWxzLmNwcCIsCiAgICAg
InNyYy9saWJBTkdMRS9nbF9lbnVtX3V0aWxzX2F1dG9nZW4uY3BwIiwKICAgXQogfQogCi1hbmds
ZV9zb3VyY2Vfc2V0KCJsaWJBTkdMRV93aXRoX2NhcHR1cmUiKSB7Ci0gIHB1YmxpY19kZXBzID0g
WwotICAgICI6bGliQU5HTEVfYmFzZSIsCitjb25maWcoImFuZ2xlX2NvbXByZXNzaW9uX2NvbmZp
ZyIpIHsKKyAgaW5jbHVkZV9kaXJzID0gWyAiLy90aGlyZF9wYXJ0eS96bGliL2dvb2dsZSIgXQor
fQorCitncm91cCgiYW5nbGVfY29tcHJlc3Npb24iKSB7CisgIHB1YmxpY19jb25maWdzID0gWwor
ICAgICI6YW5nbGVfY29tcHJlc3Npb25fY29uZmlnIiwKKyAgICAiLy90aGlyZF9wYXJ0eS96bGli
OnpsaWJfY29uZmlnIiwKICAgXQorICBwdWJsaWNfZGVwcyA9IFsgIi8vdGhpcmRfcGFydHkvemxp
Yi9nb29nbGU6Y29tcHJlc3Npb25fdXRpbHNfcG9ydGFibGUiIF0KK30KKworYW5nbGVfc291cmNl
X3NldCgibGliQU5HTEVfd2l0aF9jYXB0dXJlIikgeworICBwdWJsaWNfZGVwcyA9IFsgIjpsaWJB
TkdMRV9iYXNlIiBdCisgIGRlcHMgPSBbICI6YW5nbGVfY29tcHJlc3Npb24iIF0KICAgcHVibGlj
X2NvbmZpZ3MgPSBbICI6YW5nbGVfZnJhbWVfY2FwdHVyZV9lbmFibGVkIiBdCiAgIHNvdXJjZXMg
PSBsaWJhbmdsZV9jYXB0dXJlX3NvdXJjZXMKIH0KQEAgLTgxMCw2ICs3NzEsMTYgQEAgY29uZmln
KCJzaGFyZWRfbGlicmFyeV9wdWJsaWNfY29uZmlnIikgewogICAgICAgIi1ycGF0aCIsCiAgICAg
ICAiQGV4ZWN1dGFibGVfcGF0aC8iLAogICAgIF0KKyAgICBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1
bSkgeworICAgICAgbGRmbGFncyArPSBbCisgICAgICAgICMgUGF0aCBmb3IgbG9hZGluZyBzaGFy
ZWQgbGlicmFyaWVzIGZvciB1bmJ1bmRsZWQgYmluYXJpZXMuCisgICAgICAgICMgRnJvbSAvL2J1
aWxkL2NvbmZpZy9tYWMvQlVJTEQuZ24sIHRoaXMgaXMgb25seSBhZGRlZCBmb3IKKyAgICAgICAg
IyBjb21wb25lbnQgYnVpbGRzLiBIb3dldmVyLCBzaW5jZSBBTkdMRSBhbHdheXMgZHluYW1pY2Fs
bHkKKyAgICAgICAgIyBsaW5rcyB0byBsaWJ2dWxrYW4sIGl0IHNob3VsZCBiZSByZS1hZGRlZCBm
b3Igbm9uLWNvbXBvbmVudAorICAgICAgICAjIGJ1aWxkcy4gKGFuZ2xlYnVnLmNvbS80NDU1KQor
ICAgICAgICAiLVdsLC1ycGF0aCxAbG9hZGVyX3BhdGgvLiIsCisgICAgICBdCisgICAgfQogICB9
CiAKICAgaWYgKGFuZ2xlX2lzX3dpbnV3cCkgewpAQCAtODI0LDEwICs3OTUsMTcgQEAgY29uZmln
KCJzaGFyZWRfbGlicmFyeV9wdWJsaWNfY29uZmlnIikgewogfQogCiBjb25maWcoImxpYnJhcnlf
bmFtZV9jb25maWciKSB7Ci0gIGRlZmluZXMgPSBbCi0gICAgIkFOR0xFX0VHTF9MSUJSQVJZX05B
TUU9XCJsaWJFR0wke2FuZ2xlX2xpYnNfc3VmZml4fVwiIiwKLSAgICAiQU5HTEVfR0xFU1YyX0xJ
QlJBUllfTkFNRT1cImxpYkdMRVN2MiR7YW5nbGVfbGlic19zdWZmaXh9XCIiLAotICBdCisgIGlm
IChpc19jb21wb25lbnRfYnVpbGQgJiYgaXNfYW5kcm9pZCkgeworICAgIGRlZmluZXMgPSBbCisg
ICAgICAiQU5HTEVfRUdMX0xJQlJBUllfTkFNRT1cImxpYkVHTCR7YW5nbGVfbGlic19zdWZmaXh9
LmNyXCIiLAorICAgICAgIkFOR0xFX0dMRVNWMl9MSUJSQVJZX05BTUU9XCJsaWJHTEVTdjIke2Fu
Z2xlX2xpYnNfc3VmZml4fS5jclwiIiwKKyAgICBdCisgIH0gZWxzZSB7CisgICAgZGVmaW5lcyA9
IFsKKyAgICAgICJBTkdMRV9FR0xfTElCUkFSWV9OQU1FPVwibGliRUdMJHthbmdsZV9saWJzX3N1
ZmZpeH1cIiIsCisgICAgICAiQU5HTEVfR0xFU1YyX0xJQlJBUllfTkFNRT1cImxpYkdMRVN2MiR7
YW5nbGVfbGlic19zdWZmaXh9XCIiLAorICAgIF0KKyAgfQogfQogCiAjIFRoaXMgY29uZmlnIGNv
bnRyb2xzIGV4cG9ydCBkZWZpbml0aW9ucyBvbiBBTkdMRSBBUEkgY2FsbHMuCkBAIC04NjYsMzUg
Kzg0NCwyNSBAQCB0ZW1wbGF0ZSgiYW5nbGVfbGliR0xFU3YyIikgewogCiAgICAgZGVwcyA9IGlu
dm9rZXIuZGVwcyArIFsgIjppbmNsdWRlcyIgXQogCi0gICAgcHVibGljX2RlcHMgPSBbCi0gICAg
ICAiOmFuZ2xlX3ZlcnNpb24iLAotICAgIF0KKyAgICBwdWJsaWNfZGVwcyA9IFsgIjphbmdsZV92
ZXJzaW9uIiBdCiAgIH0KIH0KIAogYW5nbGVfbGliR0xFU3YyKCJsaWJHTEVTdjIiKSB7CiAgIGlm
IChhbmdsZV93aXRoX2NhcHR1cmVfYnlfZGVmYXVsdCkgewotICAgIGRlcHMgPSBbCi0gICAgICAi
OmxpYkFOR0xFX3dpdGhfY2FwdHVyZSIsCi0gICAgXQorICAgIGRlcHMgPSBbICI6bGliQU5HTEVf
d2l0aF9jYXB0dXJlIiBdCiAgIH0gZWxzZSB7Ci0gICAgZGVwcyA9IFsKLSAgICAgICI6bGliQU5H
TEUiLAotICAgIF0KKyAgICBkZXBzID0gWyAiOmxpYkFOR0xFIiBdCiAgIH0KIH0KIAogIyBPdXRw
dXQgY2FwdHVyZSBsaWIgd2hlbiBgYW5nbGVfd2l0aF9jYXB0dXJlX2J5X2RlZmF1bHRgIGRpc2Fi
bGVkLCB2aWNlIHZlcnNhLgogYW5nbGVfbGliR0xFU3YyKCJsaWJHTEVTdjJfY2FwdHVyZV9jb21w
bGVtZW50IikgewogICBpZiAoYW5nbGVfd2l0aF9jYXB0dXJlX2J5X2RlZmF1bHQpIHsKLSAgICBk
ZXBzID0gWwotICAgICAgIjpsaWJBTkdMRSIsCi0gICAgXQorICAgIGRlcHMgPSBbICI6bGliQU5H
TEUiIF0KICAgICBvdXRwdXRfbmFtZSArPSAiX25vX2NhcHR1cmUiCiAgIH0gZWxzZSB7Ci0gICAg
ZGVwcyA9IFsKLSAgICAgICI6bGliQU5HTEVfd2l0aF9jYXB0dXJlIiwKLSAgICBdCisgICAgZGVw
cyA9IFsgIjpsaWJBTkdMRV93aXRoX2NhcHR1cmUiIF0KICAgICBvdXRwdXRfbmFtZSArPSAiX3dp
dGhfY2FwdHVyZSIKICAgfQogfQpAQCAtOTIyLDkgKzg5MCw3IEBAIGlmIChpc193aW4gJiYgIWFu
Z2xlX2lzX3dpbnV3cCkgewogICAgICAgIjpsaWJBTkdMRSIsCiAgICAgXQogCi0gICAgcHVibGlj
X2RlcHMgPSBbCi0gICAgICAiOmFuZ2xlX3ZlcnNpb24iLAotICAgIF0KKyAgICBwdWJsaWNfZGVw
cyA9IFsgIjphbmdsZV92ZXJzaW9uIiBdCiAgIH0KIH0KIApAQCAtOTMyLDEyICs4OTgsOCBAQCBh
bmdsZV9zdGF0aWNfbGlicmFyeSgibGliR0xFU3YyX3N0YXRpYyIpIHsKICAgc291cmNlcyA9IGxp
YmdsZXN2Ml9zb3VyY2VzCiAgIGNvbmZpZ3MgKz0gWyAiOmRlYnVnX2Fubm90YXRpb25zX2NvbmZp
ZyIgXQogICBwdWJsaWNfY29uZmlncyArPSBbICI6YW5nbGVfc3RhdGljIiBdCi0gIGRlcHMgPSBb
Ci0gICAgIjppbmNsdWRlcyIsCi0gIF0KLSAgcHVibGljX2RlcHMgPSBbCi0gICAgIjpsaWJBTkdM
RSIsCi0gIF0KKyAgZGVwcyA9IFsgIjppbmNsdWRlcyIgXQorICBwdWJsaWNfZGVwcyA9IFsgIjps
aWJBTkdMRSIgXQogfQogCiBhbmdsZV9zaGFyZWRfbGlicmFyeSgibGliR0xFU3YxX0NNIikgewpA
QCAtOTgzLDkgKzk0NSw3IEBAIGFuZ2xlX3NvdXJjZV9zZXQoImxpYkVHTF9lZ2xfbG9hZGVyIikg
ewogICAgICI6Z2xfcHJvdG90eXBlcyIsCiAgIF0KIAotICBkZXBzID0gWwotICAgICI6aW5jbHVk
ZXMiLAotICBdCisgIGRlcHMgPSBbICI6aW5jbHVkZXMiIF0KIH0KIAogYW5nbGVfc2hhcmVkX2xp
YnJhcnkoImxpYkVHTCIpIHsKQEAgLTEwMTUsMTMgKzk3NSw5IEBAIGFuZ2xlX3NoYXJlZF9saWJy
YXJ5KCJsaWJFR0wiKSB7CiAgICAgIjpsaWJFR0xfZWdsX2xvYWRlciIsCiAgIF0KIAotICBwdWJs
aWNfZGVwcyA9IFsKLSAgICAiOmluY2x1ZGVzIiwKLSAgXQorICBwdWJsaWNfZGVwcyA9IFsgIjpp
bmNsdWRlcyIgXQogCi0gIGRhdGFfZGVwcyA9IFsKLSAgICAiOmxpYkdMRVN2MiIsCi0gIF0KKyAg
ZGF0YV9kZXBzID0gWyAiOmxpYkdMRVN2MiIgXQogfQogCiBhbmdsZV9zdGF0aWNfbGlicmFyeSgi
bGliRUdMX3N0YXRpYyIpIHsKQEAgLTEwNDUsMTMgKzEwMDEsOSBAQCBhbmdsZV9zdGF0aWNfbGli
cmFyeSgibGliRUdMX3N0YXRpYyIpIHsKIGFuZ2xlX2V4ZWN1dGFibGUoImFuZ2xlX3NoYWRlcl90
cmFuc2xhdG9yIikgewogICB0ZXN0b25seSA9IHRydWUKIAotICBzb3VyY2VzID0gWwotICAgICJz
YW1wbGVzL3NoYWRlcl90cmFuc2xhdG9yL3NoYWRlcl90cmFuc2xhdG9yLmNwcCIsCi0gIF0KKyAg
c291cmNlcyA9IFsgInNhbXBsZXMvc2hhZGVyX3RyYW5zbGF0b3Ivc2hhZGVyX3RyYW5zbGF0b3Iu
Y3BwIiBdCiAKLSAgZGVwcyA9IFsKLSAgICAiOnRyYW5zbGF0b3IiLAotICBdCisgIGRlcHMgPSBb
ICI6dHJhbnNsYXRvciIgXQogfQogCiBpZiAoYW5nbGVfaGFzX2J1aWxkKSB7CkBAIC0xMTI1LDkg
KzEwNzcsNyBAQCBpZiAoIWlzX2NvbXBvbmVudF9idWlsZCAmJiBpc19hbmRyb2lkICYmIHN5bWJv
bF9sZXZlbCAhPSAwKSB7CiAgICAgICB9CiAgICAgfQogCi0gICAgb3V0cHV0cyA9IFsKLSAgICAg
ICIkcm9vdF9vdXRfZGlyL2xpYi5jb21wcmVzc2VkL3t7c291cmNlX2ZpbGVfcGFydH19IiwKLSAg
ICBdCisgICAgb3V0cHV0cyA9IFsgIiRyb290X291dF9kaXIvbGliLmNvbXByZXNzZWQve3tzb3Vy
Y2VfZmlsZV9wYXJ0fX0iIF0KIAogICAgIGFuZHJvaWRfbm0gPSAiJHthbmRyb2lkX3Rvb2xfcHJl
Zml4fW5tIgogICAgIGFuZHJvaWRfc3RyaXAgPSAiJHthbmRyb2lkX3Rvb2xfcHJlZml4fXN0cmlw
IgpAQCAtMTE1NiwxNiArMTEwNiwxNCBAQCBpZiAoYnVpbGRfd2l0aF9jaHJvbWl1bSAmJiAhaXNf
Y29tcG9uZW50X2J1aWxkICYmIGlzX2FuZHJvaWQgJiYKICAgfQogCiAgIGdyb3VwKCJhbmdsZV9h
cGtzIikgewotICAgIGRlcHMgPSBbCi0gICAgICAiOmFuZ2xlX2Nocm9taXVtX2FwayIsCi0gICAg
XQorICAgIGRlcHMgPSBbICI6YW5nbGVfY2hyb21pdW1fYXBrIiBdCiAgIH0KIH0KIAogZ3JvdXAo
ImFuZ2xlIikgewogICBkYXRhX2RlcHMgPSBbCisgICAgIjpsaWJFR0wiLAogICAgICI6bGliR0xF
U3YxX0NNIiwKICAgICAiOmxpYkdMRVN2MiIsCi0gICAgIjpsaWJFR0wiLAogICBdCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMKaW5kZXggYjY3Nzk3YmM2ZmY0MGU1NTViNWJmMjJh
ZWNkZDlhMDcyYjMzNThkOC4uYTMwZWVhZWI3NzQyNTRlNTczN2M2OGNlYWIzMDZiMTRhYWQyNDY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ09OVFJJQlVUT1JTCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NPTlRSSUJVVE9SUwpAQCAtMTYyLDE1ICsxNjIsMjMg
QEAgU2Ftc3VuZyBFbGVjdHJvbmljcywgSW5jLgogIEt5ZW9uZ21pbiBLaW0KICBNaW5reXUgSmVv
bmcKICBNb2hhbiBNYWl5YQorIFBldGVyIE1vd3J5CiAgU2FuZ3dvbiBQYXJrCiAKIEFybSBMdGQu
CiAgRmVpIFlhbmcKICBYaW55aSBIZQogIFN1bm55IFN1bgorIFhpYW94dWFuIExpdQorIEFuY2hl
bmcgUWlhbworIEFteSBMaXUKKyBKaWFuIExpCiAKIEJyb2FkY29tIEluYy4KICBHYXJ5IFN3ZWV0
CiAKIEZhY2Vib29rLCBJbmMuCiAgQXJ0ZW0gQm9sZ2FyCisKK1RoZSBLaHJvbm9zIEdyb3VwLCBJ
bmMuCisgQWxleGV5IEtueWF6ZXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L0NvbXBpbGVyLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29tcGlsZXIuY21ha2UK
aW5kZXggYWMxYzA0YTFlMWMxNjY5ZDA3ODFhMzY2N2E4ZjgyNTIxOWM5MGUxMC4uMmZmZTZkZmVk
NzViMDExMTYxM2FjNmJmZGQ3ZTllZDgyMzVhZmYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQ29tcGlsZXIuY21ha2UKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
Q29tcGlsZXIuY21ha2UKQEAgLTE1Myw2ICsxNTMsOCBAQCBzZXQoYW5nbGVfdHJhbnNsYXRvcl9z
b3VyY2VzCiAgICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlZ2VuZXJhdGVT
dHJ1Y3ROYW1lcy5oIgogICAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1v
dmVBcnJheUxlbmd0aE1ldGhvZC5jcHAiCiAgICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3Ry
ZWVfb3BzL1JlbW92ZUFycmF5TGVuZ3RoTWV0aG9kLmgiCisgICAgInNyYy9jb21waWxlci90cmFu
c2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHAiCisgICAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlu
cy5oIgogICAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVEeW5hbWlj
SW5kZXhpbmcuY3BwIgogICAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1v
dmVEeW5hbWljSW5kZXhpbmcuaCIKICAgICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9v
cHMvUmVtb3ZlSW5hY3RpdmVJbnRlcmZhY2VWYXJpYWJsZXMuY3BwIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0RFUFMK
aW5kZXggZTc1NTU3OTljYTdmM2NhNmMyNDI5ZmQ3YTNhYjBhY2YyZjI4ZGQ0OC4uYWE2OTI5Y2Zj
YjBhZmYxNWM1OTQ0ZGExZmE5MWM3NWJiMWNiNWViNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvREVQUworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9ERVBTCkBAIC0x
OSwxMyArMTksMTMgQEAgdmFycyA9IHsKICAgJ2NoZWNrb3V0X2FuZ2xlX2ludGVybmFsJzogRmFs
c2UsCiAKICAgIyBWZXJzaW9uIG9mIENocm9taXVtIG91ciBDaHJvbWl1bS1iYXNlZCBERVBTIGFy
ZSBtaXJyb3JlZCBmcm9tLgotICAnY2hyb21pdW1fcmV2aXNpb24nOiAnOGZmYjE4ZDBiOTgzNTMy
YzZjMjYzOWRlNjdiMmVmYzkzYjRkZjJkMycsCisgICdjaHJvbWl1bV9yZXZpc2lvbic6ICdmYTlk
NTgwNWM0MjExMzNlOWQxM2NmNjk4YzQ1MDJkMTMzOThiMmNlJywKIAogICAjIEN1cnJlbnQgcmV2
aXNpb24gb2YgVkstR0wtQ1RTIChhLmsuYSBkRVFQKS4KLSAgJ3ZrX2dsX2N0c19yZXZpc2lvbic6
ICdkOTlhNzY1ZDM4ZDM1ZGVlYjNmMjdjZjMwZDlkNmZlNGYxODM1MTBlJywKKyAgJ3ZrX2dsX2N0
c19yZXZpc2lvbic6ICdhNmIyNDk4MTlmNzE3NzgyMWQ0YjdlZWZmZjM2YWYwN2ZlZjcxODI1JywK
IAogICAjIEN1cnJlbnQgcmV2aXNpb24gb2YgZ2xzbGFuZywgdGhlIEtocm9ub3MgU1BJUlYgY29t
cGlsZXIuCi0gICdnbHNsYW5nX3JldmlzaW9uJzogJzVlODZiMjhmZmI4MTI0YTVlZTJhNThjNjQw
MjQ1ZWU1YjI4NTExMGQnLAorICAnZ2xzbGFuZ19yZXZpc2lvbic6ICc5OTUwOGMxY2UzODllNjc4
YTc5YjAwMTU5ZmUwYzBkMTNmMDhmMjEzJywKIAogICAjIEN1cnJlbnQgcmV2aXNpb24gb2YgZ29v
Z2xldGVzdC4KICAgIyBOb3RlOiB0aGlzIGRlcCBjYW5ub3QgYmUgYXV0by1yb2xsZWQgYi9jIG9m
IG5lc3RpbmcuCkBAIC00MywyMiArNDMsMjIgQEAgdmFycyA9IHsKICAgJ3NwaXJ2X2Nyb3NzX3Jl
dmlzaW9uJzogJ2ZkNWFhM2FkNTFlY2U1NWExYjUxZmU2YmZiMjcxZGI2ODQ0YWUyOTEnLAogCiAg
ICMgQ3VycmVudCByZXZpc2lvbiBmbyB0aGUgU1BJUlYtSGVhZGVycyBWdWxrYW4gc3VwcG9ydCBs
aWJyYXJ5LgotICAnc3BpcnZfaGVhZGVyc19yZXZpc2lvbic6ICdkYzc3MDMwYWNjOWM2ZmU3Y2Ey
MWZmZjU0YzVhOWQ3YjUzMmQ3ZGE2JywKKyAgJ3NwaXJ2X2hlYWRlcnNfcmV2aXNpb24nOiAnZjhi
ZjExYTAyNTNhMzIzNzVjMzJjYWQ5MmM4NDEyMzdiOTY2OTZjMCcsCiAKICAgIyBDdXJyZW50IHJl
dmlzaW9uIG9mIFNQSVJWLVRvb2xzIGZvciBWdWxrYW4uCi0gICdzcGlydl90b29sc19yZXZpc2lv
bic6ICc3YTJkNDA4ZGVhNjBhYTFmOGQ1M2UxMjNiMDEyNzdjNDFiOGY4M2I5JywKKyAgJ3NwaXJ2
X3Rvb2xzX3JldmlzaW9uJzogJ2ZkNzczZWI1MGQ2MjhjMTk4MTMzOGFkZGMwOTNkZjg3OTc1N2My
Y2YnLAogCiAgICMgQ3VycmVudCByZXZpc2lvbiBvZiBLaHJvbm9zIFZ1bGthbi1IZWFkZXJzLgot
ICAndnVsa2FuX2hlYWRlcnNfcmV2aXNpb24nOiAnNzI2NDM1ODcwMjA2MWQzZWQ4MTlkNjJkM2Q2
ZmQ2NmFiMWRhMzNjMycsCisgICd2dWxrYW5faGVhZGVyc19yZXZpc2lvbic6ICcwZTc4ZmZkMWRj
ZmMzZTlmMTRhOTY2Yjk2NjBkYmM1OWJkOTY3YzVjJywKIAogICAjIEN1cnJlbnQgcmV2aXNpb24g
b2YgS2hyb25vcyBWdWxrYW4tTG9hZGVyLgotICAndnVsa2FuX2xvYWRlcl9yZXZpc2lvbic6ICdm
Yjk0Y2NkZGI3MjU1MTYyNDM2NDQyMDZhYjA3ZjBiODJlMWYwYTVlJywKKyAgJ3Z1bGthbl9sb2Fk
ZXJfcmV2aXNpb24nOiAnY2M0ODFlZjI3NjMxNWQ1NGRiNDM4MWIyZDVkZmZhYzJiNTgyNGNiZics
CiAKICAgIyBDdXJyZW50IHJldmlzaW9uIG9mIEtocm9ub3MgVnVsa2FuLVRvb2xzLgotICAndnVs
a2FuX3Rvb2xzX3JldmlzaW9uJzogJzI2MDY3OTYwNWY5ODQzYWUyY2YwNmNmYzBlNDRkYzBkMjVi
ZTcxYjknLAorICAndnVsa2FuX3Rvb2xzX3JldmlzaW9uJzogJ2JlYzdiNmUyOTI2MGNhYTkzNDhi
MWZkNDJiNWQ2NTQ0M2Q1MTI3NDgnLAogCiAgICMgQ3VycmVudCByZXZpc2lvbiBvZiBLaHJvbm9z
IFZ1bGthbi1WYWxpZGF0aW9uTGF5ZXJzLgotICAndnVsa2FuX3ZhbGlkYXRpb25fcmV2aXNpb24n
OiAnZTg1ZmU0YzNjYzlmNmMxMmQ4ODdkMmVmOTEyMjQxMjQxZTBmNWZmYScsCisgICd2dWxrYW5f
dmFsaWRhdGlvbl9yZXZpc2lvbic6ICc1NWYwMTk1M2Q2ZTlkNmRiNjI1ZjU3YmViYmJjN2EzNmEx
MzJhZDg4JywKIAogICAjIFRocmVlIGxpbmVzIG9mIG5vbi1jaGFuZ2luZyBjb21tZW50cyBzbyB0
aGF0CiAgICMgdGhlIGNvbW1pdCBxdWV1ZSBjYW4gaGFuZGxlIENMcyByb2xsaW5nIGNhdGFwdWx0
CkBAIC02OSwxNyArNjksMTcgQEAgdmFycyA9IHsKIGRlcHMgPSB7CiAKICAgJ2J1aWxkJzogewot
ICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hyb21pdW0vc3JjL2J1aWxkLmdpdEBlNTI5M2Q4
ZmEyODg5YTI0MGJmNDc0MjgzNjljYWYwZDllMmYzZGM3JywKKyAgICAndXJsJzogJ3tjaHJvbWl1
bV9naXR9L2Nocm9taXVtL3NyYy9idWlsZC5naXRAYTFjYmY2NDY5YTU0MDBmMmI0NTVmZmJhMmU5
NWVhNDdhMWI0N2M5NCcsCiAgICAgJ2NvbmRpdGlvbic6ICdub3QgYnVpbGRfd2l0aF9jaHJvbWl1
bScsCiAgIH0sCiAKICAgJ2J1aWxkdG9vbHMnOiB7Ci0gICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0
fS9jaHJvbWl1bS9zcmMvYnVpbGR0b29scy5naXRAYWZjNWI3OThjNzI5MDVlODVmOTk5MTE1MmJl
ODc4NzE0YzU3OTk1OCcsCisgICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0fS9jaHJvbWl1bS9zcmMv
YnVpbGR0b29scy5naXRANDE2NGEzMDU2MjY3ODZiMTkxMmQ0NjcwMDNhY2Y0YzQ5OTViZWM3ZCcs
CiAgICAgJ2NvbmRpdGlvbic6ICdub3QgYnVpbGRfd2l0aF9jaHJvbWl1bScsCiAgIH0sCiAKICAg
J3Rlc3RpbmcnOiB7Ci0gICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0fS9jaHJvbWl1bS9zcmMvdGVz
dGluZ0BjZjZlZDQ2Y2ZmZWMzNzI4NWZiNWQ4YWNjMWNjZTU5ZGE5NjdjZWNhJywKKyAgICAndXJs
JzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy90ZXN0aW5nQDNlMjFlZWM1M2MxNjg4MzAy
ZWJjMjZlOTc1ZDAxNjMyNTZiZDFhMTUnLAogICAgICdjb25kaXRpb24nOiAnbm90IGJ1aWxkX3dp
dGhfY2hyb21pdW0nLAogICB9LAogCkBAIC0xMTUsNyArMTE1LDcgQEAgZGVwcyA9IHsKICAgfSwK
IAogICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdCc6IHsKLSAgICAndXJsJzogJ3tjaHJvbWl1bV9n
aXR9L2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0QGM4M2Y5OWUxMGNmZjdkOTAx
OTBhMjJhNzlmMjk0ZWE5ZTM0MGY0ZTYnLAorICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hy
b21pdW0vc3JjL3RoaXJkX3BhcnR5L2dvb2dsZXRlc3RAYzk2ZGMzMjExMDFlN2M5ZjViYTE2ZDk1
N2FmZDQ5ZWU0ZGIzMDU0OCcsCiAgICAgJ2NvbmRpdGlvbic6ICdub3QgYnVpbGRfd2l0aF9jaHJv
bWl1bScsCiAgIH0sCiAKQEAgLTE4Miw3ICsxODIsNyBAQCBkZXBzID0gewogICB9LAogCiAgICd0
aGlyZF9wYXJ0eS9Td2lmdFNoYWRlcic6IHsKLSAgICAndXJsJzogJ3tzd2lmdHNoYWRlcl9naXR9
L1N3aWZ0U2hhZGVyQDQxYTczMDJlOWM2MmMyMDdlNWFjNWJjY2U0MGYxNmExZTQxOGM0MmInLAor
ICAgICd1cmwnOiAne3N3aWZ0c2hhZGVyX2dpdH0vU3dpZnRTaGFkZXJAMDJlMTViMjQ5YjEyZmU0
ZTFjYTVlMzAzYTVhMGRlMDY2ODk1MDUzNicsCiAgICAgJ2NvbmRpdGlvbic6ICdub3QgYnVpbGRf
d2l0aF9jaHJvbWl1bScsCiAgIH0sCiAKQEAgLTIwMywxNyArMjAzLDE3IEBAIGRlcHMgPSB7CiAg
IH0sCiAKICAgJ3RoaXJkX3BhcnR5L3lhc20nOiB7Ci0gICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0
fS9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkveWFzbUAwZDAxMzQ3ODlhN2RmNDdkYTllYzY0ZmI5
Mzc4NDk1NzFmNThiZGI0JywKKyAgICAndXJsJzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3Ny
Yy90aGlyZF9wYXJ0eS95YXNtQDhlNGU1NDhkMGIxOTlkZjU4NzQwMzM2MDI0YzFiM2JhZjdjMGFi
ZDcnLAogICAgICdjb25kaXRpb24nOiAnbm90IGJ1aWxkX3dpdGhfY2hyb21pdW0nLAogICB9LAog
CiAgICd0aGlyZF9wYXJ0eS96bGliJzogewotICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hy
b21pdW0vc3JjL3RoaXJkX3BhcnR5L3psaWJAYjliOWE1YWY3Y2NhMmU2ODNlNWYyYWVhZDg0MThl
NWJmOWQ1YTdkNScsCisgICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0fS9jaHJvbWl1bS9zcmMvdGhp
cmRfcGFydHkvemxpYkAxNTZiZThjNTJmODBjZGUzNDMwODhiNGE2OWE4MDU3OTEwMWI2ZTY3JywK
ICAgICAnY29uZGl0aW9uJzogJ25vdCBidWlsZF93aXRoX2Nocm9taXVtJywKICAgfSwKIAogICAn
dG9vbHMvY2xhbmcnOiB7Ci0gICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0fS9jaHJvbWl1bS9zcmMv
dG9vbHMvY2xhbmcuZ2l0QDk1M2VhN2FmZjhjMTJkYmQwMTVmMTkzZDUyZTVhYmYyNzZkNDFlODUn
LAorICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hyb21pdW0vc3JjL3Rvb2xzL2NsYW5nLmdp
dEBkNjBhNmE4MDg0MzAwZWI4ZGU5OWU1NmI1NTkzNjlkY2RlNGNmZmE0JywKICAgICAnY29uZGl0
aW9uJzogJ25vdCBidWlsZF93aXRoX2Nocm9taXVtJywKICAgfSwKIApAQCAtNDIyLDcgKzQyMiw3
IEBAIGhvb2tzID0gWwogICAgICAgICAgICAgICAgICctLXJlY3Vyc2l2ZScsCiAgICAgICAgICAg
ICAgICAgJy0tZXh0cmFjdCcsCiAgICAgICAgICAgICAgICAgJy0tYnVja2V0JywgJ2Nocm9tZS1h
bmdsZS1jYXB0dXJlLWJpbmFyaWVzJywKLSAgICAgICAgICAgICAgICAnLi9zcmMvdGVzdHMvcGVy
Zl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcycsCisgICAgICAgICAgICAgICAgJ3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzJywKICAgICBdCiAgIH0KIF0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0dMRVN2Mi5jbWFrZSBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0dMRVN2Mi5jbWFrZQppbmRleCBhOGNhOGNmYmIyNzZmZGQ5YmVlOGZmOTU1YmQxNjJk
NDIyZDE4NGE4Li5lZjNkYzcyNmQ1MzAzMTQwMjI3N2U0ZWRmYzlmYTlmMjc4MDIxODlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9HTEVTdjIuY21ha2UKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvR0xFU3YyLmNtYWtlCkBAIC0xOTcsNiArMTk3LDcgQEAgc2V0KGxp
YmFuZ2xlX2luY2x1ZGVzCiAgICAgImluY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNWay5oIgogICAg
ICJpbmNsdWRlL3BsYXRmb3JtL0Zyb250ZW5kRmVhdHVyZXMuaCIKICAgICAiaW5jbHVkZS9wbGF0
Zm9ybS9QbGF0Zm9ybS5oIgorICAgICJpbmNsdWRlL3Z1bGthbi92dWxrYW5fZnVjaHNpYV9leHQu
aCIKICkKIAogCkBAIC0yNTAsMTAgKzI1MSwxMCBAQCBzZXQobGliYW5nbGVfaGVhZGVycwogICAg
ICJzcmMvbGliQU5HTEUvR0xFUzFTaGFkZXJzLmluYyIKICAgICAic3JjL2xpYkFOR0xFL0dMRVMx
U3RhdGUuaCIKICAgICAic3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oIgotICAgICJzcmMv
bGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCIKICAgICAic3JjL2xpYkFOR0xFL0ltYWdl
LmgiCiAgICAgInNyYy9saWJBTkdMRS9JbWFnZUluZGV4LmgiCiAgICAgInNyYy9saWJBTkdMRS9J
bmRleFJhbmdlQ2FjaGUuaCIKKyAgICAic3JjL2xpYkFOR0xFL0luZm9Mb2cuaCIKICAgICAic3Jj
L2xpYkFOR0xFL0xvZ2dpbmdBbm5vdGF0b3IuaCIKICAgICAic3JjL2xpYkFOR0xFL01lbW9yeU9i
amVjdC5oIgogICAgICJzcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hlLmgiCkBAIC0yNjUs
OCArMjY2LDggQEAgc2V0KGxpYmFuZ2xlX2hlYWRlcnMKICAgICAic3JjL2xpYkFOR0xFL092ZXJs
YXlfYXV0b2dlbi5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9PdmVybGF5X2ZvbnRfYXV0b2dlbi5j
cHAiCiAgICAgInNyYy9saWJBTkdMRS9PdmVybGF5X2ZvbnRfYXV0b2dlbi5oIgotICAgICJzcmMv
bGliQU5HTEUvUGF0aC5oIgogICAgICJzcmMvbGliQU5HTEUvUHJvZ3JhbS5oIgorICAgICJzcmMv
bGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUuaCIKICAgICAic3JjL2xpYkFOR0xFL1Byb2dyYW1M
aW5rZWRSZXNvdXJjZXMuaCIKICAgICAic3JjL2xpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5oIgog
ICAgICJzcmMvbGliQU5HTEUvUXVlcnkuaCIKQEAgLTMxOSw3ICszMjAsNiBAQCBzZXQobGliYW5n
bGVfaGVhZGVycwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsLmgiCiAgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9NZW1vcnlPYmplY3RJbXBsLmgiCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9PdmVybGF5SW1wbC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
UGF0aEltcGwuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCiAg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtUGlwZWxpbmVJbXBsLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9RdWVyeUltcGwuaCIKQEAgLTM5Nyw3ICszOTcsNiBAQCBzZXQo
bGliYW5nbGVfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvR0xFUzFSZW5kZXJlci5jcHAiCiAg
ICAgInNyYy9saWJBTkdMRS9HTEVTMVN0YXRlLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL0hhbmRs
ZUFsbG9jYXRvci5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5j
cHAiCiAgICAgInNyYy9saWJBTkdMRS9JbWFnZS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9JbWFn
ZUluZGV4LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5jcHAiCkBAIC00
MDUsOSArNDA0LDkgQEAgc2V0KGxpYmFuZ2xlX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xFL01l
bW9yeU9iamVjdC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9NZW1vcnlQcm9ncmFtQ2FjaGUuY3Bw
IgogICAgICJzcmMvbGliQU5HTEUvT2JzZXJ2ZXIuY3BwIgotICAgICJzcmMvbGliQU5HTEUvUGF0
aC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9QbGF0Zm9ybS5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9Qcm9ncmFtLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCIK
ICAgICAic3JjL2xpYkFOR0xFL1Byb2dyYW1MaW5rZWRSZXNvdXJjZXMuY3BwIgogICAgICJzcmMv
bGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL1F1ZXJ5LmNw
cCIKQEAgLTQzNiw3ICs0MzUsNiBAQCBzZXQobGliYW5nbGVfc291cmNlcwogICAgICJzcmMvbGli
QU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9xdWVyeXV0aWxz
LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNwcCIKLSAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9EZXZpY2VJbXBsLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rp
c3BsYXlJbXBsLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF90YWJsZV9h
dXRvZ2VuLmNwcCIKQEAgLTQ0NCw2ICs0NDIsNyBAQCBzZXQobGliYW5nbGVfc291cmNlcwogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9U
ZXh0dXJlSW1wbC5jcHAiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMu
Y3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0
b2dlbi5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHAi
CiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcCIKQEAgLTQ1NSwxOCArNDU0LDE4
IEBAIHNldChsaWJhbmdsZV9zb3VyY2VzCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMz
Mi5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFQuY3BwIgogICAgICJzcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMMS5jcHAiCi0gICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0wyLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMuY3BwIgotICAgICJzcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMNC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0wxMS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMi5jcHAiCisgICAgInNy
Yy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMy5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0wxNC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNS5jcHAiCi0gICAg
InNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMy5jcHAiCisgICAgInNyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wyLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIxLmNwcCIKKyAg
ICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMuY3BwIgogICAgICJzcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkdMMzEuY3BwIgogICAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzIuY3BwIgog
ICAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzMuY3BwIgorICAgICJzcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkdMNC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0MS5jcHAi
CiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0Mi5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0w0My5jcHAiCkBAIC00OTIsNyArNDkxLDYgQEAgc2V0KGxpYmFuZ2xlX2Qz
ZF9zaGFyZWRfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNJ
bWFnZTJESExTTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNE
LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5oIgotICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgiCiAgICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvSExTTENvbXBpbGVyLmNwcCIKQEAgLTUwNywxMiArNTA1LDEyIEBAIHNldChsaWJh
bmdsZV9kM2Rfc2hhcmVkX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9O
YXRpdmVXaW5kb3dEM0QuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFt
RDNELmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgiCisg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmNwcCIKKyAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJUYXJnZXREM0QuaCIKICAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZmZXJEM0QuY3BwIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9SZW5kZXJlckQzRC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRh
cmdldEQzRC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQz
RC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2FtcGxlckQzRC5oIgogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAiCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCkBAIC01MjksNiArNTI3LDcgQEAgc2V0KGxp
YmFuZ2xlX2QzZF9zaGFyZWRfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1ZlcnRleEJ1ZmZlci5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERh
dGFNYW5hZ2VyLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRh
TWFuYWdlci5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNE
LmgiCiApCiAKIApAQCAtNTQzLDggKzU0Miw2IEBAIHNldChsaWJhbmdsZV9kM2Q5X3NvdXJjZXMK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5oIgog
ICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRmVuY2U5LmNwcCIKICAgICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZlbmNlOS5oIgotICAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvSW1hZ2U5LmNwcCIKQEAgLTU1NSwyMyArNTUyLDEzIEBAIHNldChsaWJhbmdsZV9kM2Q5
X3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRv
dzkuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5jcHAiCiAg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTkuaCIKLSAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5jcHAiCi0gICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L1JlbmRlclRhcmdldDkuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvUmVuZGVyZXI5LmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1JlbmRlcmVyOS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hh
ZGVyQ2FjaGUuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckV4
ZWN1dGFibGU5LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRl
ckV4ZWN1dGFibGU5LmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFk
ZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHJlbXVsdHBzLmgiCi0g
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBv
bmVudG1hc2t1bm11bHRwcy5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2VwcmVtdWx0cHMuaCIKLSAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNl
dW5tdWx0cHMuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiCiAgICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwIgpAQCAtNTgxLDkgKzU2OCwyMSBAQCBzZXQobGli
YW5nbGVfZDNkOV9zb3VyY2VzCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9W
ZXJ0ZXhBcnJheTkuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRl
eEJ1ZmZlcjkuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4
QnVmZmVyOS5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvdmVydGV4Y29u
dmVyc2lvbi5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVj
bGFyYXRpb25DYWNoZS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9W
ZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9mb3JtYXR1dGlsczkuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvZm9ybWF0dXRpbHM5LmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9y
ZW5kZXJlcjlfdXRpbHMuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
cmVuZGVyZXI5X3V0aWxzLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9z
aGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcmVtdWx0cHMuaCIKKyAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3BzLmgi
CisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2Nv
bXBvbmVudG1hc2t1bm11bHRwcy5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2VwcmVtdWx0cHMuaCIKKyAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCIKKyAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5h
bmNldW5tdWx0cHMuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiCisgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS92ZXJ0ZXhjb252ZXJzaW9uLmgiCiApCiAKIApAQCAtNTk5LDE1
ICs1OTgsMTAgQEAgc2V0KGxpYmFuZ2xlX2QzZDExX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgiCi0gICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwIgotICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZV9hdXRvZ2VuLmNw
cCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFi
bGUuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9FeHRlcm5hbEltYWdl
U2libGluZ0ltcGwxMS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
RXh0ZXJuYWxJbWFnZVNpYmxpbmdJbXBsMTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9GZW5jZTExLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9GZW5jZTExLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9y
bWF0dXRpbHMxMS5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9y
bWF0dXRpbHMxMS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1l
YnVmZmVyMTEuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1l
YnVmZmVyMTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTEx
LmNwcCIKQEAgLTYxNiw5ICs2MTAsOSBAQCBzZXQobGliYW5nbGVfZDNkMTFfc291cmNlcwogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0luZGV4QnVmZmVyMTEuaCIKICAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmNwcCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmgiCi0g
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9NYXBwZWRTdWJyZXNvdXJjZVZlcmlm
aWVyMTEuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL01hcHBlZFN1
YnJlc291cmNlVmVyaWZpZXIxMS5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL05hdGl2ZVdpbmRvdzExLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUGl4ZWxUcmFuc2ZlcjExLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9QaXhlbFRyYW5zZmVyMTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9Qcm9ncmFtMTEuY3BwIgpAQCAtNjI3LDE4ICs2MjEsMzkgQEAgc2V0KGxpYmFuZ2xlX2Qz
ZDExX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Qcm9ncmFt
UGlwZWxpbmUxMS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5
MTEuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuaCIK
LSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcCIKLSAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCi0gICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAiCi0gICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwIgog
ICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaCIK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaCIK
KyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcCIKKyAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVzb3VyY2VNYW5hZ2VyMTEuY3BwIgogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Jlc291cmNlTWFuYWdlcjExLmgiCiAg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU2hhZGVyRXhlY3V0YWJsZTExLmNw
cCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxl
MTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIx
MS5jcHAiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2Vy
MTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNl
ckQzRFRleHR1cmUuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0
cmVhbVByb2R1Y2VyRDNEVGV4dHVyZS5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1N3YXBDaGFpbjExLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9Td2FwQ2hhaW4xMS5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1RleHR1cmVTdG9yYWdlMTEuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1RleHR1cmVTdG9yYWdlMTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9UcmltMTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9W
ZXJ0ZXhBcnJheTExLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9W
ZXJ0ZXhBcnJheTExLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QnVmZmVyMTEuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Zl
cnRleEJ1ZmZlcjExLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhn
aV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZV9hdXRvZ2VuLmNwcCIKKyAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNwcCIKKyAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiCisgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAiCisgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJl
MTFfZ3MuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzRmLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180aS5o
IgpAQCAtNjkzLDM0ICs3MDgsMTggQEAgc2V0KGxpYmFuZ2xlX2QzZDExX3NvdXJjZXMKICAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1
aTJkYXJyYXlwcy5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvc3dpenpsZXVpMmRwcy5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpM2Rwcy5oIgotICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcCIKLSAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oIgotICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZS5jcHAiCi0g
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0
dXJlLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEu
Y3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmgi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFi
bGUuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9y
bWF0X3RhYmxlLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVy
ZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfdXRpbHMuaCIKLSAgICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcCIKLSAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgiCi0gICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5jcHAiCi0gICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5oIgotICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAiCi0gICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmgiCi0gICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5oIgotICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5oIgogKQogCiAKIHNldChsaWJhbmdsZV9k
M2QxMV93aW4zMl9zb3VyY2VzCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
d2luMzIvTmF0aXZlV2luZG93MTFXaW4zMi5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvd2luMzIvTmF0aXZlV2luZG93MTFXaW4zMi5oIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvbnZlcmdlZC9Db21wb3NpdG9yTmF0aXZlV2luZG93MTEu
Y3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvbnZlcmdlZC9Db21w
b3NpdG9yTmF0aXZlV2luZG93MTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgiCiAgICAgInNyYy90
aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uY3BwIgogICAgICJzcmMvdGhpcmRfcGFy
dHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmgiCiApCkBAIC03NjMsOCArNzYyLDYgQEAgc2V0KGxp
YmFuZ2xlX2dsX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ltYWdlR0wu
aCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmNwcCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmgiCi0gICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1BhdGhHTC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wu
Y3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtUGlwZWxpbmVHTC5jcHAiCkBAIC04MTMsMTAg
KzgxMCwxMCBAQCBzZXQobGliYW5nbGVfZ2xfd2dsX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9Db250ZXh0V0dMLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VXR0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvd2dsL0QzRFRleHR1cmVTdXJmYWNlV0dMLmgiCi0gICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC93Z2wvRGlzcGxheVdHTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5oIgorICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwIgorICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvd2dsL0Z1bmN0aW9uc1dHTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L1BidWZmZXJTdXJmYWNlV0dMLmNwcCIKQEAgLTgzOCwxMCArODM1LDEwIEBAIHNldChsaWJhbmds
ZV9nbF9nbHhfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3Bs
YXlHTFguaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFgu
Y3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5oIgot
ICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1JlbmRlcmVyR0xYLmgiCi0gICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUmVuZGVyZXJHTFguY3BwIgogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmNwcCIKICAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5oIgorICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1JlbmRlcmVyR0xYLmNwcCIKKyAgICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2dseC9SZW5kZXJlckdMWC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZ2x4L1N1cmZhY2VHTFguaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2ds
eC9XaW5kb3dTdXJmYWNlR0xYLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2ds
eC9XaW5kb3dTdXJmYWNlR0xYLmgiCkBAIC04NTYsMTMgKzg1MywxMCBAQCBzZXQobGliYW5nbGVf
Z2xfZWdsX3NvdXJjZXMKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5
RUdMLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRXh0ZXJuYWxJbWFnZVNpYmxpbmdF
R0wuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9lZ2xfdXRpbHMuY3BwIgot
ICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2VnbF91dGlscy5oIgogICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5jcHAiCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmgiCiAgICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvSW1hZ2VFR0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL0ltYWdlRUdMLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZnVu
Y3Rpb25zZWdsX3R5cGVkZWZzLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
UGJ1ZmZlclN1cmZhY2VFR0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L1BidWZmZXJTdXJmYWNlRUdMLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
UmVuZGVyZXJFR0wuY3BwIgpAQCAtODczLDYgKzg2Nyw5IEBAIHNldChsaWJhbmdsZV9nbF9lZ2xf
c291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N5bmNFR0wuaCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNlRUdMLmNwcCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNlRUdMLmgiCisgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZWdsX3V0aWxzLmNwcCIKKyAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9lZ2xfdXRpbHMuaCIKKyAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2VnbC9mdW5jdGlvbnNlZ2xfdHlwZWRlZnMuaCIKICkKIHNldChsaWJhbmdsZV9n
bF9lZ2xfZGxfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0
aW9uc0VHTERMLmNwcCIKQEAgLTkwMSwxNiArODk4LDE2IEBAIHNldChsaWJhbmdsZV9nbF9jZ2xf
c291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuaCIK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EZXZpY2VDR0wuY3BwIgogICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5oIgotICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0iCiAgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL0Rpc3BsYXlDR0wubW0iCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9T
dXJmYWNlU3VyZmFjZUNHTC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
SU9TdXJmYWNlU3VyZmFjZUNHTC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L1JlbmRlcmVyQ0dMLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5k
ZXJlckNHTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJm
YWNlQ0dMLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3Vy
ZmFjZUNHTC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZh
Y2VDR0wubW0iCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wu
Y3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmgiCiAg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oIgorICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0iCiApCiAK
IApAQCAtOTY5LDggKzk2Niw2IEBAIHNldChsaWJhbmdsZV9udWxsX3NvdXJjZXMKICAgICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgiCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9udWxsL0ltYWdlTlVMTC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Q
YXRoTlVMTC5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmNwcCIKICAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaCIKICAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbVBpcGVsaW5lTlVMTC5jcHAiCkBAIC0xMDMyLDE2ICsx
MDI3LDE2IEBAIHNldChsaWJnbF9zb3VyY2VzCiAgICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfNF8zX2F1dG9nZW4uY3BwIgogICAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfM19h
dXRvZ2VuLmgiCiAgICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF80X2F1dG9nZW4uY3Bw
IgotICAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNl9hdXRvZ2VuLmNwcCIKICAgICAi
c3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzRfYXV0b2dlbi5oIgogICAgICJzcmMvbGliR0wv
ZW50cnlfcG9pbnRzX2dsXzRfNV9hdXRvZ2VuLmNwcCIKICAgICAic3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF80XzVfYXV0b2dlbi5oIgorICAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRf
Nl9hdXRvZ2VuLmNwcCIKICAgICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzZfYXV0b2dl
bi5oIgogICAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX3dnbC5jcHAiCiAgICAgInNyYy9saWJH
TC9lbnRyeV9wb2ludHNfd2dsLmgiCisgICAgInNyYy9saWJHTC9saWJHTC5yYyIKICAgICAic3Jj
L2xpYkdML2xpYkdMX2F1dG9nZW4uY3BwIgogICAgICJzcmMvbGliR0wvbGliR0xfYXV0b2dlbi5k
ZWYiCi0gICAgInNyYy9saWJHTC9saWJHTC5yYyIKICAgICAic3JjL2xpYkdML3Byb2NfdGFibGVf
d2dsLmgiCiAgICAgInNyYy9saWJHTC9wcm9jX3RhYmxlX3dnbF9hdXRvZ2VuLmNwcCIKICAgICAi
c3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwIgpAQCAtMTA3Myw4ICsxMDY4LDggQEAgc2V0
KGxpYmdsZXN2Ml9zb3VyY2VzCiAgICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
ZXh0X2F1dG9nZW4uaCIKICAgICAic3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwIgogICAg
ICJzcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oIgotICAgICJzcmMvbGliR0xFU3YyL2xpYkdM
RVN2Ml9hdXRvZ2VuLmNwcCIKICAgICAic3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMiCisgICAg
InNyYy9saWJHTEVTdjIvbGliR0xFU3YyX2F1dG9nZW4uY3BwIgogICAgICJzcmMvbGliR0xFU3Yy
L3Byb2NfdGFibGVfZWdsLmgiCiAgICAgInNyYy9saWJHTEVTdjIvcHJvY190YWJsZV9lZ2xfYXV0
b2dlbi5jcHAiCiAgICAgInNyYy9saWJHTEVTdjIvcmVzb3VyY2UuaCIKQEAgLTEwOTAsMTAgKzEw
ODUsMTAgQEAgc2V0KGxpYmdsZXN2MV9jbV9zb3VyY2VzCiAKIAogc2V0KGxpYmVnbF9zb3VyY2Vz
CisgICAgInNyYy9saWJFR0wvZWdsX2xvYWRlcl9hdXRvZ2VuLmgiCiAgICAgInNyYy9saWJFR0wv
bGliRUdMLmNwcCIKICAgICAic3JjL2xpYkVHTC9saWJFR0wucmMiCiAgICAgInNyYy9saWJFR0wv
cmVzb3VyY2UuaCIKICAgICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgiCiAgICAg
InNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQuaCIKLSAgICAic3JjL2xpYkVHTC9l
Z2xfbG9hZGVyX2F1dG9nZW4uaCIKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL09XTkVSUwppbmRleCA1N2E4MzNi
NWZmNGMwOWE5ZTYxYzVlMzUzMDBlYTQ0MjA1NzA0ZjU3Li5kZjQ4Y2ZhNWQ4ODMxNjdjOTc4OGVh
YzEzYmJmOWNjMjdkYjRmNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9P
V05FUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvT1dORVJTCkBAIC0xLDkgKzEsMTgg
QEAKLSMgU2VlIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZS8r
L21hc3Rlci9kb2MvQ29udHJpYnV0aW5nQ29kZS5tZCNzZWxlY3RpbmctcmV2aWV3ZXJzIGZvciBw
ZXItZmlsZSBvd25lcnMKLWN3YWxsZXpAY2hyb21pdW0ub3JnCisjIFNlZSBodHRwczovL2Nocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUvKy9tYXN0ZXIvZG9jL0NvbnRyaWJ1dGlu
Z0NvZGUubWQjc2VsZWN0aW5nLXJldmlld2VycyBmb3IgbW9yZSBpbmZvCiBnZW9mZmxhbmdAY2hy
b21pdW0ub3JnCitnZW9mZmxhbmdAZ29vZ2xlLmNvbQogam1hZGlsbEBjaHJvbWl1bS5vcmcKK2pt
YWRpbGxAZ29vZ2xlLmNvbQoram9uYWhyQGdvb2dsZS5jb20KIHN5b3Vzc2VmaUBjaHJvbWl1bS5v
cmcKK3N5b3Vzc2VmaUBnb29nbGUuY29tCiB5bm92aWtvdkBjaHJvbWl1bS5vcmcKK3lub3Zpa292
QGdvb2dsZS5jb20KKworcGVyLWZpbGUgQVVUSE9SUz0qCitwZXItZmlsZSBDT05UUklCVVRPUlM9
KgorcGVyLWZpbGUgREVQUz0qCitwZXItZmlsZSBXQVRDSExJU1RTPSoKIAogIyBDT01QT05FTlQ6
IEludGVybmFscz5HUFU+QU5HTEUKICMgVEVBTTogYW5nbGVwcm9qZWN0QGdvb2dsZWdyb3Vwcy5j
b20KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BSRVNVQk1JVC5weSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BSRVNVQk1JVC5weQppbmRleCBmNzFjZDBjODdjMGRjODhk
ZDU2YzMyYjVjMTczYzczY2Q2ZDg5ZmNmLi5iYzI4NmI4Y2NmMTM3YjBmZjJhNjYzNWQ4NGJjYjI5
MzQ5YzNlNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9QUkVTVUJNSVQu
cHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvUFJFU1VCTUlULnB5CkBAIC00Myw3ICs0
Myw3IEBAIGRlZiBfQ2hlY2tDaGFuZ2VIYXNCdWdGaWVsZChpbnB1dF9hcGksIG91dHB1dF9hcGkp
OgogICAgIGlmIGxlbihidWdzKSA9PSAxIGFuZCBidWdzWzBdID09ICdOb25lJzoKICAgICAgICAg
cmV0dXJuIFtdCiAKLSAgICBwcm9qZWN0cyA9IFsnYW5nbGVwcm9qZWN0JywgJ2Nocm9taXVtJywg
J2Rhd24nLCAnZnVjaHNpYScsICdza2lhJywgJ3N3aWZ0c2hhZGVyJ10KKyAgICBwcm9qZWN0cyA9
IFsnYW5nbGVwcm9qZWN0JywgJ2Nocm9taXVtJywgJ2Rhd24nLCAnZnVjaHNpYScsICdza2lhJywg
J3N3aWZ0c2hhZGVyJywgJ2InXQogICAgIGJ1Z19yZWdleCA9IHJlLmNvbXBpbGUociIoW2Etel0r
KTooXGQrKSIpCiAgICAgZXJyb3JzID0gW10KICAgICBleHRyYV9oZWxwID0gTm9uZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvUkVBRE1FLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvUkVBRE1FLm1kCmluZGV4IDIxZDdjODgxODk5M2JjZDY0MzgzYTYxZTA2OWY5NGQ0
NTRhN2I4NGEuLmZhMzU0YWRkNjU0NzBhMjU2OTgzOWM4ODY4YzFjMTBhZjZmNTcyMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1JFQURNRS5tZAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9SRUFETUUubWQKQEAgLTIsMTggKzIsMTggQEAKIAogVGhlIGdvYWwgb2Yg
QU5HTEUgaXMgdG8gYWxsb3cgdXNlcnMgb2YgbXVsdGlwbGUgb3BlcmF0aW5nIHN5c3RlbXMgdG8g
c2VhbWxlc3NseSBydW4gV2ViR0wgYW5kIG90aGVyCiBPcGVuR0wgRVMgY29udGVudCBieSB0cmFu
c2xhdGluZyBPcGVuR0wgRVMgQVBJIGNhbGxzIHRvIG9uZSBvZiB0aGUgaGFyZHdhcmUtc3VwcG9y
dGVkIEFQSXMgYXZhaWxhYmxlCi1mb3IgdGhhdCBwbGF0Zm9ybS4gQU5HTEUgY3VycmVudGx5IHBy
b3ZpZGVzIHRyYW5zbGF0aW9uIGZyb20gT3BlbkdMIEVTIDIuMCBhbmQgMy4wIHRvIGRlc2t0b3AK
LU9wZW5HTCwgT3BlbkdMIEVTLCBEaXJlY3QzRCA5LCBhbmQgRGlyZWN0M0QgMTEuIFN1cHBvcnQg
Zm9yIHRyYW5zbGF0aW9uIGZyb20gT3BlbkdMIEVTIHRvIFZ1bGthbiBpcwotdW5kZXJ3YXksIGFu
ZCBmdXR1cmUgcGxhbnMgaW5jbHVkZSBjb21wdXRlIHNoYWRlciBzdXBwb3J0IChFUyAzLjEpIGFu
ZCBNYWNPUyBzdXBwb3J0LgorZm9yIHRoYXQgcGxhdGZvcm0uIEFOR0xFIGN1cnJlbnRseSBwcm92
aWRlcyB0cmFuc2xhdGlvbiBmcm9tIE9wZW5HTCBFUyAyLjAsIDMuMCBhbmQgMy4xIHRvIFZ1bGth
biwKK2Rlc2t0b3AgT3BlbkdMLCBPcGVuR0wgRVMsIERpcmVjdDNEIDksIGFuZCBEaXJlY3QzRCAx
MS4gRnV0dXJlIHBsYW5zIGluY2x1ZGUgRVMgMy4yLCB0cmFuc2xhdGlvbiB0bworTWV0YWwgYW5k
IE1hY09TLCBDaHJvbWUgT1MsIGFuZCBGdWNoc2lhIHN1cHBvcnQuCiAKICMjIyBMZXZlbCBvZiBP
cGVuR0wgRVMgc3VwcG9ydCB2aWEgYmFja2luZyByZW5kZXJlcnMKIAogfCAgICAgICAgICAgICAg
ICB8ICBEaXJlY3QzRCA5ICAgfCAgRGlyZWN0M0QgMTEgICAgIHwgICBEZXNrdG9wIEdMICAgfCAg
ICBHTCBFUyAgICAgIHwgICAgVnVsa2FuICAgICB8ICAgIE1ldGFsICAgICAgfAogfC0tLS0tLS0t
LS0tLS0tLS18Oi0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0t
LS06fDotLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS06fAotfCBP
cGVuR0wgRVMgMi4wICB8ICAgIGNvbXBsZXRlICAgfCAgICBjb21wbGV0ZSAgICAgIHwgICAgY29t
cGxldGUgICAgfCAgIGNvbXBsZXRlICAgIHwgICAgY29tcGxldGUgICB8ICBpbiBwcm9ncmVzcyAg
fAotfCBPcGVuR0wgRVMgMy4wICB8ICAgICAgICAgICAgICAgfCAgICBjb21wbGV0ZSAgICAgIHwg
ICAgY29tcGxldGUgICAgfCAgIGNvbXBsZXRlICAgIHwgIGluIHByb2dyZXNzICB8ICAgICAgICAg
ICAgICAgfAotfCBPcGVuR0wgRVMgMy4xICB8ICAgICAgICAgICAgICAgfCAgIGluIHByb2dyZXNz
ICAgIHwgICAgY29tcGxldGUgICAgfCAgIGNvbXBsZXRlICAgIHwgIGluIHByb2dyZXNzICB8ICAg
ICAgICAgICAgICAgfAotfCBPcGVuR0wgRVMgMy4yICB8ICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgIHwgICAgcGxhbm5lZCAgICAgfCAgICBwbGFubmVkICAgIHwgICAgcGxhbm5lZCAg
ICB8ICAgICAgICAgICAgICAgfAorfCBPcGVuR0wgRVMgMi4wICB8ICAgIGNvbXBsZXRlICAgfCAg
ICBjb21wbGV0ZSAgICAgIHwgICAgY29tcGxldGUgICAgfCAgICBjb21wbGV0ZSAgIHwgICAgY29t
cGxldGUgICB8ICBpbiBwcm9ncmVzcyAgfAorfCBPcGVuR0wgRVMgMy4wICB8ICAgICAgICAgICAg
ICAgfCAgICBjb21wbGV0ZSAgICAgIHwgICAgY29tcGxldGUgICAgfCAgICBjb21wbGV0ZSAgIHwg
ICAgY29tcGxldGUgICB8ICAgICAgICAgICAgICAgfAorfCBPcGVuR0wgRVMgMy4xICB8ICAgICAg
ICAgICAgICAgfCAgIGluIHByb2dyZXNzICAgIHwgICAgY29tcGxldGUgICAgfCAgICBjb21wbGV0
ZSAgIHwgIGluIHByb2dyZXNzICB8ICAgICAgICAgICAgICAgfAorfCBPcGVuR0wgRVMgMy4yICB8
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgIGluIHByb2dyZXNzICAgfCAgaW4g
cHJvZ3Jlc3MgIHwgIGluIHByb2dyZXNzICB8ICAgICAgICAgICAgICAgfAogCiAjIyMgUGxhdGZv
cm0gc3VwcG9ydCB2aWEgYmFja2luZyByZW5kZXJlcnMKIApAQCAtMjgsNiArMjgsOCBAQCB1bmRl
cndheSwgYW5kIGZ1dHVyZSBwbGFucyBpbmNsdWRlIGNvbXB1dGUgc2hhZGVyIHN1cHBvcnQgKEVT
IDMuMSkgYW5kIE1hY09TIHN1cAogfCBGdWNoc2lhICAgICB8ICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBpbiBwcm9ncmVzcyB8
ICAgICAgICAgICAgIHwKIAogQU5HTEUgdjEuMC43NzIgd2FzIGNlcnRpZmllZCBjb21wbGlhbnQg
YnkgcGFzc2luZyB0aGUgRVMgMi4wLjMgY29uZm9ybWFuY2UgdGVzdHMgaW4gT2N0b2JlciAyMDEx
LgorV2l0aCB0aGUgVnVsa2FuIGJhY2tlbmQsIEFOR0xFIDIuMS4wLmQ0NmUyZmIxZTM0MSB3YXMg
Y2VydGlmaWVkIGNvbXBsaWFudCB0byBFUyAyLjAgaW4gTm92IDIwMTksIGFuZAorQU5HTEUgMi4x
LjAuZjE4ZmY5NDczNjBkIHRvIEVTIDMuMCBpbiBGZWIgMjAyMC4KIEFOR0xFIGFsc28gcHJvdmlk
ZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEVHTCAxLjQgc3BlY2lmaWNhdGlvbi4KIAogQU5H
TEUgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBXZWJHTCBiYWNrZW5kIGZvciBib3RoIEdvb2dsZSBD
aHJvbWUgYW5kIE1vemlsbGEgRmlyZWZveCBvbiBXaW5kb3dzCkBAIC0zOSw4ICs0MSw4IEBAIGlt
cGxlbWVudGF0aW9ucyBhY3Jvc3MgbXVsdGlwbGUgcGxhdGZvcm1zLiBJdCBpcyB1c2VkIG9uIE1h
YyBPUyBYLCBMaW51eCwgYW5kIGluCiB0aGUgYnJvd3NlcnMuIEhhdmluZyBvbmUgc2hhZGVyIHZh
bGlkYXRvciBoZWxwcyB0byBlbnN1cmUgdGhhdCBhIGNvbnNpc3RlbnQgc2V0IG9mIEdMU0wgRVMg
c2hhZGVycwogYXJlIGFjY2VwdGVkIGFjcm9zcyBicm93c2VycyBhbmQgcGxhdGZvcm1zLiBUaGUg
c2hhZGVyIHRyYW5zbGF0b3IgY2FuIGJlIHVzZWQgdG8gdHJhbnNsYXRlIHNoYWRlcnMKIHRvIG90
aGVyIHNoYWRpbmcgbGFuZ3VhZ2VzLCBhbmQgdG8gb3B0aW9uYWxseSBhcHBseSBzaGFkZXIgbW9k
aWZpY2F0aW9ucyB0byB3b3JrIGFyb3VuZCBidWdzIG9yCi1xdWlya3MgaW4gdGhlIG5hdGl2ZSBn
cmFwaGljcyBkcml2ZXJzLiBUaGUgdHJhbnNsYXRvciB0YXJnZXRzIERlc2t0b3AgR0xTTCwgRGly
ZWN0M0QgSExTTCwgYW5kIGV2ZW4KLUVTU0wgZm9yIG5hdGl2ZSBHTEVTMiBwbGF0Zm9ybXMuCitx
dWlya3MgaW4gdGhlIG5hdGl2ZSBncmFwaGljcyBkcml2ZXJzLiBUaGUgdHJhbnNsYXRvciB0YXJn
ZXRzIERlc2t0b3AgR0xTTCwgVnVsa2FuIEdMU0wsIERpcmVjdDNECitITFNMLCBhbmQgZXZlbiBF
U1NMIGZvciBuYXRpdmUgR0xFUzIgcGxhdGZvcm1zLgogCiAjIyBTb3VyY2VzCiAKQEAgLTc5LDQg
KzgxLDUgQEAgVmlldyB0aGUgW0RldiBzZXR1cCBpbnN0cnVjdGlvbnNdKGRvYy9EZXZTZXR1cC5t
ZCkuCiAqIFdhdGNoIGEgW3Nob3J0IHByZXNlbnRhdGlvbl0oaHR0cHM6Ly95b3V0dS5iZS9RcklL
ZGptcG1hQSkgb24gdGhlIFZ1bGthbiBiYWNrLWVuZC4KICogVHJhY2sgdGhlIFtkRVFQIHRlc3Qg
Y29uZm9ybWFuY2VdKGRvYy9kRVFQLUNoYXJ0cy5tZCkKICogUmVhZCBkZXNpZ24gZG9jcyBvbiB0
aGUgW1Z1bGthbiBiYWNrLWVuZF0oc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SRUFETUUu
bWQpCisqIFJlYWQgYWJvdXQgQU5HTEUncyBbdGVzdGluZyBpbmZyYXN0cnVjdHVyZV0oaW5mcmEv
UkVBRE1FLm1kKQogKiBJZiB5b3UgdXNlIEFOR0xFIGluIHlvdXIgb3duIHByb2plY3QsIHdlJ2Qg
bG92ZSB0byBoZWFyIGFib3V0IGl0IQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvYW5kcm9pZC9hbmdsZV9hcGsuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvYW5kcm9p
ZC9hbmdsZV9hcGsuZ25pCmluZGV4IGNhM2VhNWI1ZWIxMjEzMzIxYjhlY2U3YTI2MDY0Y2E3Y2Rk
NTYwNzIuLmJhNzc2MDJiNGQ2MDQ2ZmQzZmMzZTI3Njk5NzdkOWViYTkwMzc1NzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2FuZHJvaWQvYW5nbGVfYXBrLmduaQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmRyb2lkL2FuZ2xlX2Fway5nbmkKQEAgLTMxLDkgKzMx
LDcgQEAgaWYgKGVuYWJsZV9qYXZhX3RlbXBsYXRlcykgewogCiAgICAgYW5kcm9pZF9hc3NldHMo
IiR7aW52b2tlci5wYWNrYWdlX25hbWV9X2Fzc2V0cyIpIHsKICAgICAgIGRpc2FibGVfY29tcHJl
c3Npb24gPSB0cnVlCi0gICAgICBzb3VyY2VzID0gWwotICAgICAgICAic3JjL2ZlYXR1cmVfc3Vw
cG9ydF91dGlsL2E0YV9ydWxlcy5qc29uIiwKLSAgICAgIF0KKyAgICAgIHNvdXJjZXMgPSBbICJz
cmMvZmVhdHVyZV9zdXBwb3J0X3V0aWwvYTRhX3J1bGVzLmpzb24iIF0KICAgICB9CiAKICAgICBh
bmRyb2lkX2Fwayh0YXJnZXRfbmFtZSkgewpAQCAtNDIsOSArNDAsNyBAQCBpZiAoZW5hYmxlX2ph
dmFfdGVtcGxhdGVzKSB7CiAgICAgICBhbmRyb2lkX21hbmlmZXN0X2RlcCA9ICI6JG1hbmlmZXN0
X3RhcmdldF9uYW1lIgogICAgICAgbWluX3Nka192ZXJzaW9uID0gMjYKICAgICAgIHRhcmdldF9z
ZGtfdmVyc2lvbiA9IDI4Ci0gICAgICBkZXBzID0gWwotICAgICAgICAiOiR7aW52b2tlci5wYWNr
YWdlX25hbWV9X2Fzc2V0cyIsCi0gICAgICBdCisgICAgICBkZXBzID0gWyAiOiR7aW52b2tlci5w
YWNrYWdlX25hbWV9X2Fzc2V0cyIgXQogICAgICAgaWYgKHN5bWJvbF9sZXZlbCAhPSAwKSB7CiAg
ICAgICAgIGRlcHMgKz0gWyAiOmNvbXByZXNzZWRfc3ltYm9scyIgXQogICAgICAgICBpZiAoYW5k
cm9pZF82NGJpdF90YXJnZXRfY3B1KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9jaGFuZ2VzLmRpZmYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jaGFuZ2VzLmRpZmYK
aW5kZXggYmUzNjIxOWVjMGY4ZGE0ZjExYzM3MTYzNzBjY2I1ODg2NmUzNDQwZS4uNjM3MzlhYzk2
ZjFlZTc1Y2Q3MDRjOWJkMmFkN2JjY2RjNmM2MDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvY2hhbmdlcy5kaWZmCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2No
YW5nZXMuZGlmZgpAQCAtMSw1ICsxLDM0IEBACitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wbGF0Zm9y
bS9GZWF0dXJlc0dMLmggYi9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaAoraW5kZXggNWIz
NmYyNzFmLi44NTk0N2U0MGYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVz
R0wuaAorKysrIGIvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc0dMLmgKK0BAIC00MTIsNiArNDEy
LDEyIEBAIHN0cnVjdCBGZWF0dXJlc0dMIDogRmVhdHVyZVNldEJhc2UKKyAgICAgICAgICJSZXdy
aXRlIHJvdyBtYWpvciBtYXRyaWNlcyBpbiBzaGFkZXJzIGFzIGNvbHVtbiBtYWpvciBhcyBhIGRy
aXZlciBidWcgd29ya2Fyb3VuZCIsCisgICAgICAgICAmbWVtYmVycywgImh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMjI3MyJ9OworIAorKyAgICAvLyBGbHVzaCBiZWZvcmUgZ2xCaW5kRnJhbWVidWZmZXIg
YXMgYSBkcml2ZXIgYnVnIHdvcmthcm91bmQgaWYgbmVjZXNzYXJ5LgorKyAgICBGZWF0dXJlIGZs
dXNoQmVmb3JlQmluZEZyYW1lYnVmZmVyID0geworKyAgICAgICAgImZsdXNoX2JlZm9yZV9iaW5k
ZnJhbWVidWZmZXIiLCBGZWF0dXJlQ2F0ZWdvcnk6Ok9wZW5HTFdvcmthcm91bmRzLAorKyAgICAg
ICAgIkZsdXNoIGJlZm9yZSBnbEJpbmRGcmFtZWJ1ZmZlciBhcyBhIGRyaXZlciBidWcgd29ya2Fy
b3VuZCIsCisrICAgICAgICAmbWVtYmVycywgImh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDY2MjUifTsKKysKKyAgICAgLy8gQnVncyBleGlzdCBpbiB2YXJpb3VzIE9w
ZW5HTCBJbnRlbCBkcml2ZXJzIG9uIFdpbmRvd3MgdGhhdCBwcm9kdWNlIGluY29ycmVjdAorICAg
ICAvLyB2YWx1ZXMgZm9yIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUIGZvcm1hdC4g
UmVwbGFjZSBpdCB3aXRoCisgICAgIC8vIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUIGFzIGl0J3MgdGhlIGNsb3Nlc3Qgb3B0aW9uIGFsbG93ZWQgYnkKK2RpZmYgLS1naXQg
YS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmggYi9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3Jt
LmgKK2luZGV4IDEzMTY3NDAwOC4uZDA2NWMzYTlmIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9wbGF0
Zm9ybS9QbGF0Zm9ybS5oCisrKysgYi9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgKK0BAIC05
LDYgKzksNyBAQAorICNpZm5kZWYgQU5HTEVfUExBVEZPUk1fSAorICNkZWZpbmUgQU5HTEVfUExB
VEZPUk1fSAorIAorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+Cisg
I2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxhcnJheT4KIGRpZmYgLS1naXQgYS9zcmMv
Y29tbW9uL3V0aWxpdGllcy5jcHAgYi9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKLWluZGV4IDg3
OTMyYTUzZi4uODNlYTE2OGUyIDEwMDY0NAoraW5kZXggMGNhOTY3YzE3Li4wYTZkY2MyNDggMTAw
NjQ0CiAtLS0gYS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKICsrKyBiL3NyYy9jb21tb24vdXRp
bGl0aWVzLmNwcAogQEAgLTYsNiArNiwxMSBAQApAQCAtNTEsNyArODAsNyBAQCBpbmRleCBlMGU4
ZDY0NDcuLmViZjhkOTBmNSAxMDA2NDQKICAKICAgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODkt
MTk5MCwgMjAwMC0yMDE1LCAyMDE4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAogZGlm
ZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAgYi9zcmMvbGliQU5HTEUvU3RhdGUuY3Bw
Ci1pbmRleCAyMDdiYzM5OTcuLmZhMWJkMmYxNiAxMDA2NDQKK2luZGV4IDQ1MmE2OTVjMC4uMTBh
YjVmYzE3IDEwMDY0NAogLS0tIGEvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcAogKysrIGIvc3JjL2xp
YkFOR0xFL1N0YXRlLmNwcAogQEAgLTYsNiArNiw5IEBACkBAIC02NCwxMSArOTMsMjUgQEAgaW5k
ZXggMjA3YmMzOTk3Li5mYTFiZDJmMTYgMTAwNjQ0CiAgI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRl
LmgiCiAgCiAgI2luY2x1ZGUgPHN0cmluZy5oPgorZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAgYi9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
U3RhdGVNYW5hZ2VyR0wuY3BwCitpbmRleCA1YWMxZmE2NDguLjNmOWJjMDE2NiAxMDA2NDQKKy0t
LSBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAKKysrKyBiL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAKK0BAIC01ODAsNiArNTgw
LDkgQEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0UGl4ZWxQYWNrQnVmZmVyKGNvbnN0IGdsOjpC
dWZmZXIgKnBpeGVsQnVmZmVyKQorIAorIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OmJpbmRGcmFtZWJ1
ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50IGZyYW1lYnVmZmVyKQorIHsKKysgICAgaWYgKG1GZWF0
dXJlcy5mbHVzaEJlZm9yZUJpbmRGcmFtZWJ1ZmZlci5lbmFibGVkKQorKyAgICAgICAgbUZ1bmN0
aW9ucy0+Zmx1c2goKTsKKysKKyAgICAgc3dpdGNoICh0eXBlKQorICAgICB7CisgICAgICAgICBj
YXNlIEdMX0ZSQU1FQlVGRkVSOgogZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGlzcGxheUNHTC5tbSBiL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxh
eUNHTC5tbQotaW5kZXggMTQ4MjEzOTMzLi5jZDhhNmNhNmIgMTAwNjQ0CitpbmRleCAyMjYyNjk5
MDkuLmFlOTA3NzZkYSAxMDA2NDQKIC0tLSBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
RGlzcGxheUNHTC5tbQogKysrIGIvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5
Q0dMLm1tCi1AQCAtMjkyLDcgKzI5Miw3IEBAIGVnbDo6RXJyb3IgRGlzcGxheUNHTDo6cmVzdG9y
ZUxvc3REZXZpY2UoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQorQEAgLTI5NCw3ICsyOTQs
NyBAQCBlZ2w6OkVycm9yIERpc3BsYXlDR0w6OnJlc3RvcmVMb3N0RGV2aWNlKGNvbnN0IGVnbDo6
RGlzcGxheSAqZGlzcGxheSkKICAKICBib29sIERpc3BsYXlDR0w6OmlzVmFsaWROYXRpdmVXaW5k
b3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CiAgewpAQCAtOTEsNyArMTM0LDcg
QEAgaW5kZXggMWMxZmQyMjUyLi41NGQ4MzIwZWEgMTAwNjQ0CiAgICAgICAgbUZ1bmN0aW9ucyhy
ZW5kZXJlci0+Z2V0RnVuY3Rpb25zKCkpLAogICAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVyZXIt
PmdldFN0YXRlTWFuYWdlcigpKSwKIGRpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWFnbC9EaXNwbGF5RUFHTC5tbSBiL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0Rp
c3BsYXlFQUdMLm1tCi1pbmRleCA1NTIyODUxNjAuLjc5N2QzYjc1YyAxMDA2NDQKK2luZGV4IDI5
ZTgzODcxYy4uODU4MDQ0MTFkIDEwMDY0NAogLS0tIGEvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VhZ2wvRGlzcGxheUVBR0wubW0KICsrKyBiL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWds
L0Rpc3BsYXlFQUdMLm1tCiBAQCAtMTA3LDYgKzEwNyw3IEBAIHZvaWQgRGlzcGxheUVBR0w6OnRl
cm1pbmF0ZSgpCkBAIC0xMDIsNyArMTQ1LDcgQEAgaW5kZXggNTUyMjg1MTYwLi43OTdkM2I3NWMg
MTAwNjQ0CiAgICAgICAgICBtQ29udGV4dCA9IG51bGxwdHI7CiAgICAgIH0KICB9Ci1AQCAtMjM3
LDcgKzIzOCw3IEBAIGVnbDo6RXJyb3IgRGlzcGxheUVBR0w6OnJlc3RvcmVMb3N0RGV2aWNlKGNv
bnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK0BAIC0yNDMsNyArMjQ0LDcgQEAgZWdsOjpFcnJv
ciBEaXNwbGF5RUFHTDo6cmVzdG9yZUxvc3REZXZpY2UoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNw
bGF5KQogIAogIGJvb2wgRGlzcGxheUVBR0w6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CiAgewpAQCAtMTExLDcgKzE1NCw3IEBAIGluZGV4IDU1
MjI4NTE2MC4uNzk3ZDNiNzVjIDEwMDY0NAogICAgICByZXR1cm4gW2xheWVyIGlzS2luZE9mQ2xh
c3M6W0NBTGF5ZXIgY2xhc3NdXTsKICB9CiAgCi1AQCAtMzI4LDYgKzMyOSw3IEBAIFdvcmtlckNv
bnRleHRFQUdMOjpXb3JrZXJDb250ZXh0RUFHTChFQUdMQ29udGV4dE9iaiBjb250ZXh0KSA6IG1D
b250ZXh0KGNvbnRleHQpCitAQCAtMzM0LDYgKzMzNSw3IEBAIFdvcmtlckNvbnRleHRFQUdMOjpX
b3JrZXJDb250ZXh0RUFHTChFQUdMQ29udGV4dE9iaiBjb250ZXh0KSA6IG1Db250ZXh0KGNvbnRl
eHQpCiAgV29ya2VyQ29udGV4dEVBR0w6On5Xb3JrZXJDb250ZXh0RUFHTCgpCiAgewogICAgICBb
RUFHTENvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bmlsXTsKQEAgLTE0MCw5ODAxICsxODMsMjYw
OSBAQCBpbmRleCBjYjQ4MmQwNWIuLjZjZWY3ZDNkZCAxMDA2NDQKICAgICAgICAgIG1Td2FwTGF5
ZXIgPSBuaWw7CiAgICAgIH0KICAKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9nbG1hcmsyQmVuY2htYXJrLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL2dsbWFyazJCZW5jaG1hcmsuY3BwCi1k
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDE3NGZjYzY3MzVhLi4wMDAwMDAwMDAwMAot
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvZ2xtYXJr
MkJlbmNobWFyay5jcHAKLSsrKyAvZGV2L251bGwKLUBAIC0xLDI4NSArMCwwIEBACi0tLy8KLS0v
LyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLS8vCi0tLy8gZ2xtYXJrMkJlbmNobWFyazoKLS0vLyAgIFJ1bnMgdGhlIGdsbWFyazIgYmVu
Y2htYXJrLgotLS8vCi0tCi0tI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0tCi0tI2luY2x1ZGUg
PHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPHNzdHJlYW0+Ci0tCi0tI2luY2x1ZGUgIi4uL3BlcmZfdGVz
dHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Jlc3VsdF9yZXBvcnRlci5oIgotLSNpbmNsdWRlICJB
TkdMRVBlcmZUZXN0QXJncy5oIgotLSNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKLS0jaW5j
bHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgotLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfY29uZmlncy5oIgotLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFu
dGlhdGUuaCIKLS0jaW5jbHVkZSAidXRpbC90ZXN0X3V0aWxzLmgiCi0tCi0tdXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOwotLQotLW5hbWVzcGFjZQotLXsKLS0KLS1zdHJ1Y3QgQmVuY2htYXJrSW5mbwot
LXsKLS0gICAgY29uc3QgY2hhciAqZ2xtYXJrMkNvbmZpZzsKLS0gICAgY29uc3QgY2hhciAqbmFt
ZTsKLS19OwotLQotLS8vIEVhY2ggZ2xtYXJrMiBzY2VuZSBpcyBpbmRpdmlkdWFsbHkgYmVuY2ht
YXJrZWQuICBJZiBnbG1hcmsyIGlzIHJ1biB3aXRob3V0IGEgc3BlY2lmaWMgYmVuY2htYXJrLAot
LS8vIGl0IGNhbiBwcm9kdWNlIGFuIGFnZ3JlZ2F0ZSBzY29yZSwgd2hpY2ggaXMgbm90IGludGVy
ZXN0aW5nIGF0IHRoZSBtb21lbnQuICBBZGRpbmcgYW4gZW1wdHkKLS0vLyBzdHJpbmcgKCIiKSB0
byB0aGlzIGxpc3Qgd2lsbCBlbmFibGUgYSB0ZXN0IHdoZXJlIGdsbWFyazIgaXMgcnVuIHdpdGgg
dGhlIGRlZmF1bHQgc2NlbmVzIGFuZCB0aGUKLS0vLyBzY29yZSBmb3IgZWFjaCB0ZXN0IGFzIHdl
bGwgYXMgdGhlIG92ZXJhbGwgc2NvcmUgaXMgb3V0cHV0LgotLWNvbnN0ZXhwciBCZW5jaG1hcmtJ
bmZvIGtCZW5jaG1hcmtzW10gPSB7Ci0tICAgIHsiYnVpbGQ6dXNlLXZibz1mYWxzZSIsICJidWls
ZCJ9LAotLSAgICB7ImJ1aWxkOnVzZS12Ym89dHJ1ZSIsICJidWlsZF92Ym8ifSwKLS0gICAgeyJ0
ZXh0dXJlOnRleHR1cmUtZmlsdGVyPW5lYXJlc3QiLCAidGV4dHVyZV9uZWFyZXN0In0sCi0tICAg
IHsidGV4dHVyZTp0ZXh0dXJlLWZpbHRlcj1saW5lYXIiLCAidGV4dHVyZV9saW5lYXIifSwKLS0g
ICAgeyJ0ZXh0dXJlOnRleHR1cmUtZmlsdGVyPW1pcG1hcCIsICJ0ZXh0dXJlX21pcG1hcCJ9LAot
LSAgICB7InNoYWRpbmc6c2hhZGluZz1nb3VyYXVkIiwgInNoYWRpbmdfZ291cmF1ZCJ9LAotLSAg
ICB7InNoYWRpbmc6c2hhZGluZz1ibGlubi1waG9uZy1pbmYiLCAic2hhZGluZ19ibGlubl9waG9u
ZyJ9LAotLSAgICB7InNoYWRpbmc6c2hhZGluZz1waG9uZyIsICJzaGFkaW5nX3Bob25nIn0sCi0t
ICAgIHsic2hhZGluZzpzaGFkaW5nPWNlbCIsICJzaGFkaW5nX2NlbCJ9LAotLSAgICB7ImJ1bXA6
YnVtcC1yZW5kZXI9aGlnaC1wb2x5IiwgImJ1bXBfaGlnaF9wb2x5In0sCi0tICAgIHsiYnVtcDpi
dW1wLXJlbmRlcj1ub3JtYWxzIiwgImJ1bXBfbm9ybWFscyJ9LAotLSAgICB7ImJ1bXA6YnVtcC1y
ZW5kZXI9aGVpZ2h0IiwgImJ1bXBfaGVpZ2h0In0sCi0tICAgIHsiZWZmZWN0MmQ6a2VybmVsPTAs
MSwwOzEsLTQsMTswLDEsMDsiLCAiZWZmZWN0MmRfZWRnZSJ9LAotLSAgICB7ImVmZmVjdDJkOmtl
cm5lbD0xLDEsMSwxLDE7MSwxLDEsMSwxOzEsMSwxLDEsMTsiLCAiZWZmZWN0MmRfYmx1ciJ9LAot
LSAgICB7InB1bHNhcjpsaWdodD1mYWxzZTpxdWFkcz01OnRleHR1cmU9ZmFsc2UiLCAicHVsc2Fy
In0sCi0tICAgIHsiZGVza3RvcDpibHVyLXJhZGl1cz01OmVmZmVjdD1ibHVyOnBhc3Nlcz0xOnNl
cGFyYWJsZT10cnVlOndpbmRvd3M9NCIsICJkZXNrdG9wX2JsdXIifSwKLS0gICAgeyJkZXNrdG9w
OmVmZmVjdD1zaGFkb3c6d2luZG93cz00IiwgImRlc2t0b3Bfc2hhZG93In0sCi0tICAgIHsiYnVm
ZmVyOmNvbHVtbnM9MjAwOmludGVybGVhdmU9ZmFsc2U6dXBkYXRlLWRpc3BlcnNpb249MC45OnVw
ZGF0ZS1mcmFjdGlvbj0wLjU6dXBkYXRlLW1ldGhvZD0iCi0tICAgICAibWFwIiwKLS0gICAgICJi
dWZmZXJfbWFwIn0sCi0tICAgIHsiYnVmZmVyOmNvbHVtbnM9MjAwOmludGVybGVhdmU9ZmFsc2U6
dXBkYXRlLWRpc3BlcnNpb249MC45OnVwZGF0ZS1mcmFjdGlvbj0wLjU6dXBkYXRlLW1ldGhvZD0i
Ci0tICAgICAic3ViZGF0YSIsCi0tICAgICAiYnVmZmVyX3N1YmRhdGEifSwKLS0gICAgeyJidWZm
ZXI6Y29sdW1ucz0yMDA6aW50ZXJsZWF2ZT10cnVlOnVwZGF0ZS1kaXNwZXJzaW9uPTAuOTp1cGRh
dGUtZnJhY3Rpb249MC41OnVwZGF0ZS1tZXRob2Q9IgotLSAgICAgIm1hcCIsCi0tICAgICAiYnVm
ZmVyX21hcF9pbnRlcmxlYXZlIn0sCi0tICAgIHsiaWRlYXM6c3BlZWQ9ZHVyYXRpb24iLCAiaWRl
YXMifSwKLS0gICAgeyJqZWxseWZpc2giLCAiamVsbHlmaXNoIn0sCi0tICAgIHsidGVycmFpbiIs
ICJ0ZXJyYWluIn0sCi0tICAgIHsic2hhZG93IiwgInNoYWRvdyJ9LAotLSAgICB7InJlZnJhY3Qi
LCAicmVmcmFjdCJ9LAotLSAgICB7ImNvbmRpdGlvbmFsczpmcmFnbWVudC1zdGVwcz0wOnZlcnRl
eC1zdGVwcz0wIiwgImNvbmRpdGlvbmFscyJ9LAotLSAgICB7ImNvbmRpdGlvbmFsczpmcmFnbWVu
dC1zdGVwcz01OnZlcnRleC1zdGVwcz0wIiwgImNvbmRpdGlvbmFsc19mcmFnbWVudCJ9LAotLSAg
ICB7ImNvbmRpdGlvbmFsczpmcmFnbWVudC1zdGVwcz0wOnZlcnRleC1zdGVwcz01IiwgImNvbmRp
dGlvbmFsc192ZXJ0ZXgifSwKLS0gICAgeyJmdW5jdGlvbjpmcmFnbWVudC1jb21wbGV4aXR5PWxv
dzpmcmFnbWVudC1zdGVwcz01IiwgImZ1bmN0aW9uIn0sCi0tICAgIHsiZnVuY3Rpb246ZnJhZ21l
bnQtY29tcGxleGl0eT1tZWRpdW06ZnJhZ21lbnQtc3RlcHM9NSIsICJmdW5jdGlvbl9jb21wbGV4
In0sCi0tICAgIHsibG9vcDpmcmFnbWVudC1sb29wPWZhbHNlOmZyYWdtZW50LXN0ZXBzPTU6dmVy
dGV4LXN0ZXBzPTUiLCAibG9vcF9ub19mc2xvb3AifSwKLS0gICAgeyJsb29wOmZyYWdtZW50LXN0
ZXBzPTU6ZnJhZ21lbnQtdW5pZm9ybT1mYWxzZTp2ZXJ0ZXgtc3RlcHM9NSIsICJsb29wX25vX3Vu
aWZvcm0ifSwKLS0gICAgeyJsb29wOmZyYWdtZW50LXN0ZXBzPTU6ZnJhZ21lbnQtdW5pZm9ybT10
cnVlOnZlcnRleC1zdGVwcz01IiwgImxvb3AifSwKLS19OwotLQotLXVzaW5nIEdMTWFyazJCZW5j
aG1hcmtUZXN0UGFyYW1zID0gc3RkOjp0dXBsZTxQbGF0Zm9ybVBhcmFtZXRlcnMsIHNpemVfdD47
Ci0tc3RkOjpzdHJpbmcgR0xNYXJrMkJlbmNobWFya1ByaW50KAotLSAgICBjb25zdCA6OnRlc3Rp
bmc6OlRlc3RQYXJhbUluZm88R0xNYXJrMkJlbmNobWFya1Rlc3RQYXJhbXM+ICZwYXJhbXNJbmZv
KQotLXsKLS0gICAgY29uc3QgR0xNYXJrMkJlbmNobWFya1Rlc3RQYXJhbXMgJnBhcmFtcyA9IHBh
cmFtc0luZm8ucGFyYW07Ci0tICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvdXQ7Ci0tCi0tICAgIG91
dCA8PCBzdGQ6OmdldDwwPihwYXJhbXMpIDw8ICdfJzsKLS0gICAgb3V0IDw8IGtCZW5jaG1hcmtz
W3N0ZDo6Z2V0PDE+KHBhcmFtcyldLm5hbWU7Ci0tCi0tICAgIHJldHVybiBvdXQuc3RyKCk7Ci0t
fQotLQotLWNsYXNzIEdMTWFyazJCZW5jaG1hcmsgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxHTE1hcmsyQmVuY2htYXJrVGVzdFBhcmFtcz4KLS17Ci0tICBwdWJsaWM6Ci0tICAgIEdM
TWFyazJCZW5jaG1hcmsoKQotLSAgICB7Ci0tICAgICAgICBzd2l0Y2ggKHN0ZDo6Z2V0PDA+KEdl
dFBhcmFtKCkpLmdldFJlbmRlcmVyKCkpCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgY2FzZSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRToKLS0gICAgICAgICAgICAgICAgbUJh
Y2tlbmQgPSAiZDNkMTEiOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICBj
YXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFOgotLSAgICAgICAgICAg
ICAgICBtQmFja2VuZCA9ICJnbCI7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAg
ICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfVlVMS0FOX0FOR0xFOgotLSAgICAgICAg
ICAgICAgICBtQmFja2VuZCA9ICJ2dWxrYW4iOwotLSAgICAgICAgICAgICAgICBicmVhazsKLS0g
ICAgICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgIH0K
LS0gICAgICAgIHN0ZDo6c3RyaW5nIHN0b3J5ID0ga0JlbmNobWFya3Nbc3RkOjpnZXQ8MT4oR2V0
UGFyYW0oKSldLm5hbWU7Ci0tICAgICAgICBtUmVwb3J0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHBl
cmZfdGVzdDo6UGVyZlJlc3VsdFJlcG9ydGVyPigiZ2xtYXJrMl8iICsgbUJhY2tlbmQsIHN0b3J5
KTsKLS0gICAgICAgIG1SZXBvcnRlci0+UmVnaXN0ZXJJbXBvcnRhbnRNZXRyaWMoIi5mcHMiLCAi
ZnBzIik7Ci0tICAgICAgICBtUmVwb3J0ZXItPlJlZ2lzdGVySW1wb3J0YW50TWV0cmljKCIuc2Nv
cmUiLCAic2NvcmUiKTsKLS0gICAgfQotLQotLSAgICB2b2lkIHJ1bigpCi0tICAgIHsKLS0gICAg
ICAgIC8vIE9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IGFuZCBXaW5kb3dzIGF0IHRoZSBtb21lbnQu
Ci0tICAgICAgICBpZiAoIUlzTGludXgoKSAmJiAhSXNXaW5kb3dzKCkpCi0tICAgICAgICB7Ci0t
ICAgICAgICAgICAgcmV0dXJuOwotLSAgICAgICAgfQotLQotLSAgICAgICAgY29uc3QgQmVuY2ht
YXJrSW5mbyBiZW5jaG1hcmtJbmZvID0ga0JlbmNobWFya3Nbc3RkOjpnZXQ8MT4oR2V0UGFyYW0o
KSldOwotLSAgICAgICAgY29uc3QgY2hhciAqYmVuY2htYXJrICAgICAgICAgICAgID0gYmVuY2ht
YXJrSW5mby5nbG1hcmsyQ29uZmlnOwotLSAgICAgICAgY29uc3QgY2hhciAqYmVuY2htYXJrTmFt
ZSAgICAgICAgID0gYmVuY2htYXJrSW5mby5uYW1lOwotLSAgICAgICAgYm9vbCBjb21wbGV0ZVJ1
biAgICAgICAgICAgICAgICAgID0gYmVuY2htYXJrID09IG51bGxwdHIgfHwgYmVuY2htYXJrWzBd
ID09ICdcMCc7Ci0tCi0tICAgICAgICBPcHRpb25hbDxzdGQ6OnN0cmluZz4gY3dkID0gR2V0Q1dE
KCk7Ci0tCi0tICAgICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8g
dGhlIGV4ZWN1dGFibGUncywgYXMgdGhlIGRhdGEgcGF0aCBvZiBnbG1hcmsyIGlzCi0tICAgICAg
ICAvLyBzZXQgcmVsYXRpdmUgdG8gdGhhdCBwYXRoLgotLSAgICAgICAgc3RkOjpzdHJpbmcgZXhl
Y3V0YWJsZURpciA9IEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKLS0gICAgICAgIFNldENXRChl
eGVjdXRhYmxlRGlyLmNfc3RyKCkpOwotLSAgICAgICAgU2V0RW52aXJvbm1lbnRWYXIoIkFOR0xF
X0RFRkFVTFRfUExBVEZPUk0iLCBtQmFja2VuZC5jX3N0cigpKTsKLS0KLS0gICAgICAgIHN0ZDo6
dmVjdG9yPGNvbnN0IGNoYXIgKj4gYXJncyA9IHsKLS0gICAgICAgICAgICAiZ2xtYXJrMl9hbmds
ZSIsCi0tICAgICAgICB9OwotLSAgICAgICAgaWYgKE9uZUZyYW1lKCkpCi0tICAgICAgICB7Ci0t
ICAgICAgICAgICAgYXJncy5wdXNoX2JhY2soIi0tdmFsaWRhdGUiKTsKLS0gICAgICAgIH0KLS0g
ICAgICAgIGlmICghY29tcGxldGVSdW4pCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgYXJncy5w
dXNoX2JhY2soIi0tYmVuY2htYXJrIik7Ci0tICAgICAgICAgICAgYXJncy5wdXNoX2JhY2soYmVu
Y2htYXJrKTsKLS0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlJ1bm5pbmcgYmVuY2htYXJr
OiAlc1xuIiwgYmVuY2htYXJrKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGFyZ3MucHVzaF9iYWNr
KG51bGxwdHIpOwotLQotLSAgICAgICAgUHJvY2Vzc0hhbmRsZSBwcm9jZXNzKGFyZ3MsIHRydWUs
IGZhbHNlKTsKLS0gICAgICAgIEFTU0VSVF9UUlVFKHByb2Nlc3MgJiYgcHJvY2Vzcy0+c3RhcnRl
ZCgpKTsKLS0gICAgICAgIEFTU0VSVF9UUlVFKHByb2Nlc3MtPmZpbmlzaCgpKTsKLS0KLS0gICAg
ICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZm9yIHRoZSBuZXh0
IHRlc3RzLgotLSAgICAgICAgaWYgKGN3ZC52YWxpZCgpKQotLSAgICAgICAgewotLSAgICAgICAg
ICAgIFNldENXRChjd2QudmFsdWUoKS5jX3N0cigpKTsKLS0gICAgICAgIH0KLS0KLS0gICAgICAg
IEFTU0VSVF9FUShFWElUX1NVQ0NFU1MsIHByb2Nlc3MtPmdldEV4aXRDb2RlKCkpOwotLQotLSAg
ICAgICAgaWYgKCFPbmVGcmFtZSgpKQotLSAgICAgICAgewotLSAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIG91dHB1dCA9IHByb2Nlc3MtPmdldFN0ZG91dCgpOwotLSAgICAgICAgICAgIHBhcnNlT3V0
cHV0KG91dHB1dCwgYmVuY2htYXJrTmFtZSwgY29tcGxldGVSdW4pOwotLSAgICAgICAgfQotLSAg
ICB9Ci0tCi0tICBwcml2YXRlOgotLSAgICB2b2lkIHBhcnNlT3V0cHV0KGNvbnN0IHN0ZDo6c3Ry
aW5nICZvdXRwdXQsIGNvbnN0IGNoYXIgKmJlbmNobWFya05hbWUsIGJvb2wgY29tcGxldGVSdW4p
Ci0tICAgIHsKLS0gICAgICAgIC8vIE91dHB1dCBpcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoK
LS0gICAgICAgIC8vCi0tICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tICAgICAgICAvLyAgICAgZ2xtYXJrMiAyMDE3LjA3
Ci0tICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tICAgICAgICAvLyAgICAgT3BlbkdMIEluZm9ybWF0aW9uCi0tICAgICAg
ICAvLyAgICAgR0xfVkVORE9SOiAgICAgLi4uCi0tICAgICAgICAvLyAgICAgR0xfUkVOREVSRVI6
ICAgLi4uCi0tICAgICAgICAvLyAgICAgR0xfVkVSU0lPTjogICAgLi4uCi0tICAgICAgICAvLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
ICAgICAgICAvLyBbdGVzdF0gY29uZmlnOiBGUFM6IHVpbnQgRnJhbWVUaW1lOiBmbG9hdCBtcwot
LSAgICAgICAgLy8gW3Rlc3RdIGNvbmZpZzogTm90IFN1cHBvcnRlZAotLSAgICAgICAgLy8gLi4u
Ci0tICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xtYXJrMiBTY29yZTogdWludAotLSAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLSAgICAgICAgLy8KLS0gICAgICAg
IC8vIFRoaXMgZnVuY3Rpb24gc2tpcHMgdGhlIGhlYWRlciwgcHJpbnRzIG9uZSBsaW5lIGZvciBl
YWNoIHRlc3QvY29uZmlnIGxpbmUgd2hlcmUgdGhlcmUncwotLSAgICAgICAgLy8gYW4gRlBTIHZh
bHVlLCBhbmQgZmluYWxseSBwcmludHMgdGhlIG92ZXJhbGwgc2NvcmUuCi0tICAgICAgICBzdGQ6
OmlzdHJpbmdzdHJlYW0gZ2xtYXJrMk91dHB1dChvdXRwdXQpOwotLSAgICAgICAgc3RkOjpzdHJp
bmcgbGluZTsKLS0KLS0gICAgICAgIC8vIEV4cGVjdCA9PT09IGF0IHRoZSB0b3Agb2YgdGhlIGhl
YWRlcgotLSAgICAgICAgc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOwotLSAgICAg
ICAgQVNTRVJUX0VRKCc9JywgbGluZVswXSk7Ci0tCi0tICAgICAgICAvLyBTa2lwIG9uZSBsaW5l
Ci0tICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7Ci0tCi0tICAgICAg
ICAvLyBFeHBlY3QgPT09PSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBoZWFkZXIKLS0gICAgICAgIHN0
ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKLS0gICAgICAgIEFTU0VSVF9FUSgnPScs
IGxpbmVbMF0pOwotLQotLSAgICAgICAgLy8gU2tpcCBmb3VyIGxpbmVzCi0tICAgICAgICBzdGQ6
OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7Ci0tICAgICAgICBzdGQ6OmdldGxpbmUoZ2xt
YXJrMk91dHB1dCwgbGluZSk7Ci0tICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwg
bGluZSk7Ci0tICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7Ci0tCi0t
ICAgICAgICAvLyBUaGUgZm91cnRoIGxpbmUgaXMgdGhlIEdMX1ZFUlNJT04uICBFeHBlY3QgaXQg
dG8gaW5jbHVkZSBBTkdMRSwgb3RoZXJ3aXNlIHdlIGFyZSBub3QKLS0gICAgICAgIC8vIHJ1bm5p
bmcgYWdhaW5zdCBBTkdMRS4KLS0gICAgICAgIEFTU0VSVF9ORShsaW5lLmZpbmQoIkFOR0xFIiks
IHN0ZDo6c3RyaW5nOjpucG9zKTsKLS0KLS0gICAgICAgIC8vIEV4cGVjdCA9PT09IGF0IHRoZSBi
b3R0b20gb2YgdGhlIGhlYWRlcgotLSAgICAgICAgc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQs
IGxpbmUpOwotLSAgICAgICAgQVNTRVJUX0VRKCc9JywgbGluZVswXSk7Ci0tCi0tICAgICAgICAv
LyBSZWFkIGNvbmZpZ3MgdW50aWwgdGhlIHRvcCBvZiB0aGUgZm9vdGVyIGlzIHJlYWNoZWQKLS0g
ICAgICAgIHdoaWxlIChzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSkgJiYgbGluZVsw
XSAhPSAnPScpCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgLy8gUGFyc2UgdGhlIGxpbmUKLS0g
ICAgICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gbGluKGxpbmUpOwotLQotLSAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIHRlc3ROYW1lLCB0ZXN0Q29uZmlnOwotLSAgICAgICAgICAgIGxpbiA+PiB0
ZXN0TmFtZSA+PiB0ZXN0Q29uZmlnOwotLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGxpbik7Ci0t
Ci0tICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnBzVGFnLCBmcmFtZXRpbWVUYWc7Ci0tICAgICAg
ICAgICAgc2l6ZV90IGZwczsKLS0gICAgICAgICAgICBmbG9hdCBmcmFtZXRpbWU7Ci0tCi0tICAg
ICAgICAgICAgbGluID4+IGZwc1RhZyA+PiBmcHMgPj4gZnJhbWV0aW1lVGFnID4+IGZyYW1ldGlt
ZTsKLS0KLS0gICAgICAgICAgICAvLyBJZiB0aGUgbGluZSBpcyBub3QgaW4gYEZQUzogdWludCBG
cmFtZVRpbWU6IEZsb2F0IG1zYCBmb3JtYXQsIHRoZSB0ZXN0IGlzIG5vdAotLSAgICAgICAgICAg
IC8vIHN1cHBvcnRlZC4gIEl0IHdpbGwgYmUgc2tpcHBlZC4KLS0gICAgICAgICAgICBpZiAoIWxp
bikKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotLSAgICAgICAg
ICAgIH0KLS0KLS0gICAgICAgICAgICBFWFBFQ1RfRVEoIkZQUzoiLCBmcHNUYWcpOwotLSAgICAg
ICAgICAgIEVYUEVDVF9FUSgiRnJhbWVUaW1lOiIsIGZyYW1ldGltZVRhZyk7Ci0tCi0tICAgICAg
ICAgICAgaWYgKCFjb21wbGV0ZVJ1bikKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAg
IG1SZXBvcnRlci0+QWRkUmVzdWx0KCIuZnBzIiwgZnBzKTsKLS0gICAgICAgICAgICB9Ci0tICAg
ICAgICB9Ci0tCi0tICAgICAgICAvLyBHZXQgdGhlIHNjb3JlIGxpbmU6IGBnbG1hcmsyIFNjb3Jl
OiB1aW50YAotLSAgICAgICAgc3RkOjpzdHJpbmcgZ2xtYXJrMlRhZywgc2NvcmVUYWc7Ci0tICAg
ICAgICBzaXplX3Qgc2NvcmU7Ci0tICAgICAgICBnbG1hcmsyT3V0cHV0ID4+IGdsbWFyazJUYWcg
Pj4gc2NvcmVUYWcgPj4gc2NvcmU7Ci0tICAgICAgICBFWFBFQ1RfVFJVRShnbG1hcmsyT3V0cHV0
KTsKLS0gICAgICAgIEVYUEVDVF9FUSgiZ2xtYXJrMiIsIGdsbWFyazJUYWcpOwotLSAgICAgICAg
RVhQRUNUX0VRKCJTY29yZToiLCBzY29yZVRhZyk7Ci0tCi0tICAgICAgICBpZiAoY29tcGxldGVS
dW4pCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgbVJlcG9ydGVyLT5BZGRSZXN1bHQoIi5zY29y
ZSIsIHNjb3JlKTsKLS0gICAgICAgIH0KLS0gICAgfQotLQotLSAgICBzdGQ6OnN0cmluZyBtQmFj
a2VuZCA9ICJpbnZhbGlkIjsKLS0gICAgc3RkOjp1bmlxdWVfcHRyPHBlcmZfdGVzdDo6UGVyZlJl
c3VsdFJlcG9ydGVyPiBtUmVwb3J0ZXI7Ci0tfTsKLS0KLS1URVNUX1AoR0xNYXJrMkJlbmNobWFy
aywgUnVuKQotLXsKLS0gICAgcnVuKCk7Ci0tfQotLQotLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Rf
Q09NQklORV8xKEdMTWFyazJCZW5jaG1hcmssCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xNYXJrMkJlbmNobWFya1ByaW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OlJhbmdlKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIEFycmF5U2l6ZShr
QmVuY2htYXJrcykpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Qx
MSgpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAot
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTMl9WVUxLQU4oKSk7Ci0tCi0tfSAg
Ly8gbmFtZXNwYWNlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRf
cGFydHkvZ2xtYXJrMi9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3Bh
cnR5L2dsbWFyazIvQlVJTEQuZ24KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMjVh
ZTEzMzk4NmEuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGly
ZF9wYXJ0eS9nbG1hcmsyL0JVSUxELmduCi0rKysgL2Rldi9udWxsCi1AQCAtMSw0MjMgKzAsMCBA
QAotLSMgQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0tIwotLSMgQnVpbGQgaW50ZWdyYXRpb24gZm9yIGdsbWFyazIuCi0tCi0taW1wb3J0KCIu
Li8uLi9nbmkvYW5nbGUuZ25pIikKLS0KLS1fZ2xtYXJrMl9nbGFkX2NvbW1vbl9zb3VyY2VzID0g
WwotLSAgInNyYy9zcmMvZ2xhZC9pbmNsdWRlL2dsYWQvZWdsLmgiLAotLSAgInNyYy9zcmMvZ2xh
ZC9pbmNsdWRlL2dsYWQvd2dsLmgiLAotLSAgInNyYy9zcmMvZ2xhZC9zcmMvZWdsLmMiLAotLV0K
LS0KLS1pZiAoaXNfd2luKSB7Ci0tICBfZ2xtYXJrMl9nbGFkX2NvbW1vbl9zb3VyY2VzICs9IFsg
InNyYy9zcmMvZ2xhZC9zcmMvd2dsLmMiIF0KLS19Ci0tCi0tY29uZmlnKCJnbG1hcmsyX2dsYWRf
Y29uZmlnIikgewotLSAgaW5jbHVkZV9kaXJzID0gWyAic3JjL3NyYy9nbGFkL2luY2x1ZGUiIF0K
LS19Ci0tCi0tc291cmNlX3NldCgiZ2xtYXJrMl9nbGFkX2dsZXMiKSB7Ci0tICBzb3VyY2VzID0g
X2dsbWFyazJfZ2xhZF9jb21tb25fc291cmNlcyArIFsKLS0gICAgICAgICAgICAgICJzcmMvc3Jj
L2dsYWQvaW5jbHVkZS9nbGFkL2dsZXMyLmgiLAotLSAgICAgICAgICAgICAgInNyYy9zcmMvZ2xh
ZC9zcmMvZ2xlczIuYyIsCi0tICAgICAgICAgICAgXQotLSAgcHVibGljX2NvbmZpZ3MgPSBbICI6
Z2xtYXJrMl9nbGFkX2NvbmZpZyIgXQotLX0KLS0KLS1zb3VyY2Vfc2V0KCJnbG1hcmsyX2dsYWRf
Z2wiKSB7Ci0tICBzb3VyY2VzID0gX2dsbWFyazJfZ2xhZF9jb21tb25fc291cmNlcyArIFsKLS0g
ICAgICAgICAgICAgICJzcmMvc3JjL2dsYWQvaW5jbHVkZS9nbGFkL2dsLmgiLAotLSAgICAgICAg
ICAgICAgInNyYy9zcmMvZ2xhZC9zcmMvZ2wuYyIsCi0tICAgICAgICAgICAgXQotLSAgcHVibGlj
X2NvbmZpZ3MgPSBbICI6Z2xtYXJrMl9nbGFkX2NvbmZpZyIgXQotLX0KLS0KLS1nbG1hcmtfZGF0
YV9wYXRoID0gIiR7YW5nbGVfcm9vdH0vdGhpcmRfcGFydHkvZ2xtYXJrMi9zcmMvZGF0YSIKLS1y
YXdfZ2xtYXJrX2RhdGFfcGF0aCA9IHJlYmFzZV9wYXRoKGdsbWFya19kYXRhX3BhdGgsIHJvb3Rf
YnVpbGRfZGlyKQotLQotLWNvbmZpZygiZ2xtYXJrMl9jb21tb25fY29uZmlnIikgewotLSAgZGVm
aW5lcyA9IFsgIkdMTUFSS19EQVRBX1BBVEg9XCIke3Jhd19nbG1hcmtfZGF0YV9wYXRofVwiIiBd
Ci0tICBpbmNsdWRlX2RpcnMgPSBbICJzcmMvc3JjIiBdCi0tICBpZiAoaXNfd2luKSB7Ci0tICAg
IGluY2x1ZGVfZGlycyArPSBbICJzcmMvc3JjL2luY2x1ZGUiIF0KLS0KLS0gICAgIyBNX1BJIGlz
IG5vbnN0YW5kYXJkLgotLSAgICBkZWZpbmVzICs9IFsgIl9VU0VfTUFUSF9ERUZJTkVTIiBdCi0t
Ci0tICAgIGlmICghaXNfY2xhbmcpIHsKLS0gICAgICBjZmxhZ3MgPSBbCi0tICAgICAgICAjIE1T
VkMgd2FybnMgYWJvdXQgdGhlIGNvcHlyaWdodCBjaGFyYWN0ZXIgYmVpbmcgaWxsZWdhbC4KLS0g
ICAgICAgICIvd2Q0ODI4IiwKLS0KLS0gICAgICAgICMgQSB3YXJuaW5nIGdlbmVyYXRlZCBpbiBz
Y2VuZS1lZmZlY3QtMmQgaW4gdmVjMjo6Y2FsY19vZmZzZXQKLS0gICAgICAgICIvd2Q0MTQ2IiwK
LS0gICAgICBdCi0tICAgIH0KLS0gIH0KLS19Ci0tCi0tY29uZmlnKCJnbG1hcmsyX2dsZXNfY29u
ZmlnIikgewotLSAgZGVmaW5lcyA9IFsgIkdMTUFSSzJfVVNFX0dMRVN2MiIgXQotLX0KLS0KLS1j
b25maWcoImdsbWFyazJfZ2xfY29uZmlnIikgewotLSAgZGVmaW5lcyA9IFsgIkdMTUFSSzJfVVNF
X0dMIiBdCi0tfQotLQotLWdyb3VwKCJnbG1hcmsyX2dsZXMiKSB7Ci0tICBwdWJsaWNfY29uZmln
cyA9IFsKLS0gICAgIjpnbG1hcmsyX2NvbW1vbl9jb25maWciLAotLSAgICAiOmdsbWFyazJfZ2xl
c19jb25maWciLAotLSAgXQotLSAgcHVibGljX2RlcHMgPSBbCi0tICAgICI6Z2xtYXJrMl9nbGFk
X2dsZXMiLAotLSAgXQotLX0KLS0KLS1ncm91cCgiZ2xtYXJrMl9nbCIpIHsKLS0gIHB1YmxpY19j
b25maWdzID0gWwotLSAgICAiOmdsbWFyazJfY29tbW9uX2NvbmZpZyIsCi0tICAgICI6Z2xtYXJr
Ml9nbF9jb25maWciLAotLSAgXQotLSAgcHVibGljX2RlcHMgPSBbCi0tICAgICI6Z2xtYXJrMl9n
bGFkX2dsIiwKLS0gIF0KLS19Ci0tCi0tIyBTdXBwbGllcyBjb21wYXRpYmxlIGhlYWRlcnMgb24g
V2luMzIuCi0tY29uZmlnKCJnbG1hcmsyX2hlYWRlcnNfY29uZmlnIikgewotLSAgaWYgKGlzX3dp
bikgewotLSAgICBpZiAoaXNfY2xhbmcpIHsKLS0gICAgICBjZmxhZ3MgPSBbCi0tICAgICAgICAi
LVduby11bnVzZWQtZnVuY3Rpb24iLAotLSAgICAgICAgIi1Xbm8td3JpdGFibGUtc3RyaW5ncyIs
Ci0tICAgICAgICAiLVduby1leHRyYS10b2tlbnMiLAotLSAgICAgIF0KLS0gICAgfQotLSAgfQot
LX0KLS0KLS1zb3VyY2Vfc2V0KCJnbG1hcmsyX2hlYWRlcnMiKSB7Ci0tICBzb3VyY2VzID0gWwot
LSAgICAic3JjL3NyYy9jYW52YXMuaCIsCi0tICAgICJzcmMvc3JjL2dsLWhlYWRlcnMuaCIsCi0t
ICAgICJzcmMvc3JjL2dsLXN0YXRlLWVnbC5oIiwKLS0gICAgInNyYy9zcmMvZ2wtc3RhdGUuaCIs
Ci0tICAgICJzcmMvc3JjL2dsLXZpc3VhbC1jb25maWcuaCIsCi0tICAgICJzcmMvc3JjL21lc2gu
aCIsCi0tICAgICJzcmMvc3JjL29wdGlvbnMuaCIsCi0tICAgICJzcmMvc3JjL3NjZW5lLmgiLAot
LSAgICAic3JjL3NyYy9zaGFyZWQtbGlicmFyeS5oIiwKLS0gICAgInNyYy9zcmMvdGV4dHVyZS5o
IiwKLS0gIF0KLS0KLS0gIGlmIChpc19saW51eCkgewotLSAgICBzb3VyY2VzICs9IFsgInNyYy9z
cmMvZ2wtc3RhdGUtZ2x4LmgiIF0KLS0gIH0KLS0gIGlmIChpc193aW4pIHsKLS0gICAgc291cmNl
cyArPSBbCi0tICAgICAgInNyYy9zcmMvZ2wtc3RhdGUtd2dsLmgiLAotLSAgICAgICJzcmMvc3Jj
L2luY2x1ZGUvZGlyZW50LmgiLAotLSAgICAgICJzcmMvc3JjL2luY2x1ZGUvZ2V0b3B0LmgiLAot
LSAgICAgICJzcmMvc3JjL2luY2x1ZGUvc3lzL3RpbWUuaCIsCi0tICAgIF0KLS0gIH0KLS0gIHB1
YmxpY19jb25maWdzID0gWyAiOmdsbWFyazJfaGVhZGVyc19jb25maWciIF0KLS0gIGluY2x1ZGVf
ZGlycyA9IFsgInNyYy9zcmMiIF0KLS19Ci0tCi0tY29uZmlnKCJnbG1hcmsyX2xpYm1hdHJpeF9j
b25maWciKSB7Ci0tICBpbmNsdWRlX2RpcnMgPSBbICJzcmMvc3JjL2xpYm1hdHJpeCIgXQotLX0K
LS0KLS10ZW1wbGF0ZSgiZ2xtYXJrMl9saWJtYXRyaXgiKSB7Ci0tICBzb3VyY2Vfc2V0KHRhcmdl
dF9uYW1lKSB7Ci0tICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52b2tlciwgIioiKQotLSAg
ICBzb3VyY2VzID0gWwotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9nbC1pZi5oIiwKLS0gICAg
ICAic3JjL3NyYy9saWJtYXRyaXgvbG9nLmNjIiwKLS0gICAgICAic3JjL3NyYy9saWJtYXRyaXgv
bG9nLmgiLAotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9tYXQuY2MiLAotLSAgICAgICJzcmMv
c3JjL2xpYm1hdHJpeC9tYXQuaCIsCi0tICAgICAgInNyYy9zcmMvbGlibWF0cml4L3Byb2dyYW0u
Y2MiLAotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9wcm9ncmFtLmgiLAotLSAgICAgICJzcmMv
c3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmNjIiwKLS0gICAgICAic3JjL3NyYy9saWJtYXRy
aXgvc2hhZGVyLXNvdXJjZS5oIiwKLS0gICAgICAic3JjL3NyYy9saWJtYXRyaXgvc3RhY2suaCIs
Ci0tICAgICAgInNyYy9zcmMvbGlibWF0cml4L3V0aWwuY2MiLAotLSAgICAgICJzcmMvc3JjL2xp
Ym1hdHJpeC91dGlsLmgiLAotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC92ZWMuaCIsCi0tICAg
IF0KLS0KLS0gICAgaWYgKGlzX2NsYW5nKSB7Ci0tICAgICAgY2ZsYWdzX2NjID0gWyAiLVduby1p
bXBsaWNpdC1mYWxsdGhyb3VnaCIgXQotLSAgICB9Ci0tICAgIHB1YmxpY19kZXBzID0gWwotLSAg
ICAgICI6Z2xtYXJrMl9oZWFkZXJzIiwKLS0gICAgXQotLSAgICBwdWJsaWNfY29uZmlncyA9IFsg
IjpnbG1hcmsyX2xpYm1hdHJpeF9jb25maWciIF0KLS0gIH0KLS19Ci0tCi0tZ2xtYXJrMl9saWJt
YXRyaXgoImdsbWFyazJfbGlibWF0cml4X2dsZXMiKSB7Ci0tICBkZXBzID0gWwotLSAgICAiOmds
bWFyazJfZ2xlcyIsCi0tICBdCi0tfQotLQotLWdsbWFyazJfbGlibWF0cml4KCJnbG1hcmsyX2xp
Ym1hdHJpeF9nbCIpIHsKLS0gIGRlcHMgPSBbCi0tICAgICI6Z2xtYXJrMl9nbCIsCi0tICBdCi0t
fQotLQotLWNvbmZpZygiZ2xtYXJrMl9zY2VuZV9pZGVhc19jb25maWciKSB7Ci0tICBpbmNsdWRl
X2RpcnMgPSBbICJzcmMvc3JjL3NjZW5lLWlkZWFzIiBdCi0tfQotLQotLXRlbXBsYXRlKCJnbG1h
cmsyX3NjZW5lX2lkZWFzIikgewotLSAgc291cmNlX3NldCh0YXJnZXRfbmFtZSkgewotLSAgICBm
b3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIsICIqIikKLS0gICAgc291cmNlcyA9IFsKLS0g
ICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9hLmNjIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1p
ZGVhcy9jaGFyYWN0ZXJzLmgiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2QuY2MiLAot
LSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2UuY2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5l
LWlkZWFzL2kuY2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2xhbXAuY2MiLAotLSAg
ICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2xhbXAuaCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUt
aWRlYXMvbG9nby5jYyIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvbG9nby5oIiwKLS0g
ICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9tLmNjIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1p
ZGVhcy9uLmNjIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9vLmNjIiwKLS0gICAgICAi
c3JjL3NyYy9zY2VuZS1pZGVhcy9zLmNjIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9z
cGxpbmVzLmNjIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9zcGxpbmVzLmgiLAotLSAg
ICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL3QuY2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlk
ZWFzL3RhYmxlLmNjIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy90YWJsZS5oIiwKLS0g
ICAgXQotLSAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpnbG1hcmsyX3NjZW5lX2lkZWFzX2NvbmZp
ZyIgXQotLSAgfQotLX0KLS0KLS1nbG1hcmsyX3NjZW5lX2lkZWFzKCJnbG1hcmsyX3NjZW5lX2lk
ZWFzX2dsZXMiKSB7Ci0tICBkZXBzID0gWwotLSAgICAiOmdsbWFyazJfZ2xlcyIsCi0tICAgICI6
Z2xtYXJrMl9saWJtYXRyaXhfZ2xlcyIsCi0tICBdCi0tfQotLQotLWdsbWFyazJfc2NlbmVfaWRl
YXMoImdsbWFyazJfc2NlbmVfaWRlYXNfZ2wiKSB7Ci0tICBkZXBzID0gWwotLSAgICAiOmdsbWFy
azJfZ2wiLAotLSAgICAiOmdsbWFyazJfbGlibWF0cml4X2dsIiwKLS0gIF0KLS19Ci0tCi0tY29u
ZmlnKCJnbG1hcmsyX3NjZW5lX3RlcnJhaW5fY29uZmlnIikgewotLSAgaW5jbHVkZV9kaXJzID0g
WyAic3JjL3NyYy9zY2VuZS10ZXJyYWluIiBdCi0tfQotLQotLXRlbXBsYXRlKCJnbG1hcmsyX3Nj
ZW5lX3RlcnJhaW4iKSB7Ci0tICBzb3VyY2Vfc2V0KHRhcmdldF9uYW1lKSB7Ci0tICAgIGZvcndh
cmRfdmFyaWFibGVzX2Zyb20oaW52b2tlciwgIioiKQotLSAgICBzb3VyY2VzID0gWwotLSAgICAg
ICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vYmFzZS1yZW5kZXJlci5jcHAiLAotLSAgICAgICJzcmMv
c3JjL3NjZW5lLXRlcnJhaW4vYmx1ci1yZW5kZXJlci5jcHAiLAotLSAgICAgICJzcmMvc3JjL3Nj
ZW5lLXRlcnJhaW4vY29weS1yZW5kZXJlci5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLXRl
cnJhaW4vbHVtaW5hbmNlLXJlbmRlcmVyLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVy
cmFpbi9ub3JtYWwtZnJvbS1oZWlnaHQtcmVuZGVyZXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9z
Y2VuZS10ZXJyYWluL292ZXJsYXktcmVuZGVyZXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2Vu
ZS10ZXJyYWluL3JlbmRlcmVyLWNoYWluLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVy
cmFpbi9yZW5kZXJlci5oIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL3NpbXBsZXgt
bm9pc2UtcmVuZGVyZXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL3RlcnJh
aW4tcmVuZGVyZXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL3RleHR1cmUt
cmVuZGVyZXIuY3BwIiwKLS0gICAgXQotLQotLSAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpnbG1h
cmsyX3NjZW5lX3RlcnJhaW5fY29uZmlnIiBdCi0tICB9Ci0tfQotLQotLWdsbWFyazJfc2NlbmVf
dGVycmFpbigiZ2xtYXJrMl9zY2VuZV90ZXJyYWluX2dsZXMiKSB7Ci0tICBkZXBzID0gWwotLSAg
ICAiOmdsbWFyazJfZ2xlcyIsCi0tICAgICI6Z2xtYXJrMl9saWJtYXRyaXhfZ2xlcyIsCi0tICBd
Ci0tfQotLQotLWdsbWFyazJfc2NlbmVfdGVycmFpbigiZ2xtYXJrMl9zY2VuZV90ZXJyYWluX2ds
IikgewotLSAgZGVwcyA9IFsKLS0gICAgIjpnbG1hcmsyX2dsIiwKLS0gICAgIjpnbG1hcmsyX2xp
Ym1hdHJpeF9nbCIsCi0tICBdCi0tfQotLQotLXRlbXBsYXRlKCJnbG1hcmsyX2NvbW1vbiIpIHsK
LS0gIHNvdXJjZV9zZXQodGFyZ2V0X25hbWUpIHsKLS0gICAgZm9yd2FyZF92YXJpYWJsZXNfZnJv
bShpbnZva2VyLCAiKiIpCi0tICAgIHNvdXJjZXMgPSBbCi0tICAgICAgInNyYy9zcmMvYmVuY2ht
YXJrLWNvbGxlY3Rpb24uY3BwIiwKLS0gICAgICAic3JjL3NyYy9iZW5jaG1hcmstY29sbGVjdGlv
bi5oIiwKLS0gICAgICAic3JjL3NyYy9iZW5jaG1hcmsuY3BwIiwKLS0gICAgICAic3JjL3NyYy9i
ZW5jaG1hcmsuaCIsCi0tICAgICAgInNyYy9zcmMvZGVmYXVsdC1iZW5jaG1hcmtzLmgiLAotLSAg
ICAgICJzcmMvc3JjL2dsLWhlYWRlcnMuY3BwIiwKLS0gICAgICAic3JjL3NyYy9nbC12aXN1YWwt
Y29uZmlnLmNwcCIsCi0tICAgICAgInNyYy9zcmMvZ2wtdmlzdWFsLWNvbmZpZy5oIiwKLS0gICAg
ICAic3JjL3NyYy9pbWFnZS1yZWFkZXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9pbWFnZS1yZWFk
ZXIuaCIsCi0tICAgICAgInNyYy9zcmMvbWFpbi1sb29wLmNwcCIsCi0tICAgICAgInNyYy9zcmMv
bWFpbi1sb29wLmgiLAotLSAgICAgICJzcmMvc3JjL21lc2guY3BwIiwKLS0gICAgICAic3JjL3Ny
Yy9tb2RlbC5jcHAiLAotLSAgICAgICJzcmMvc3JjL21vZGVsLmgiLAotLSAgICAgICJzcmMvc3Jj
L25hdGl2ZS1zdGF0ZS5oIiwKLS0gICAgICAic3JjL3NyYy9vcHRpb25zLmNwcCIsCi0tICAgICAg
InNyYy9zcmMvc2NlbmUtYnVmZmVyLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtYnVpbGQu
Y3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1idW1wLmNwcCIsCi0tICAgICAgInNyYy9zcmMv
c2NlbmUtY2xlYXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1jb2xsZWN0aW9uLmgiLAot
LSAgICAgICJzcmMvc3JjL3NjZW5lLWNvbmRpdGlvbmFscy5jcHAiLAotLSAgICAgICJzcmMvc3Jj
L3NjZW5lLWRlZmF1bHQtb3B0aW9ucy5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWRlc2t0
b3AuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1lZmZlY3QtMmQuY3BwIiwKLS0gICAgICAi
c3JjL3NyYy9zY2VuZS1mdW5jdGlvbi5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWdyaWQu
Y3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy5jcHAiLAotLSAgICAgICJzcmMvc3Jj
L3NjZW5lLWplbGx5ZmlzaC5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWplbGx5ZmlzaC5o
IiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1sb29wLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2Nl
bmUtcHVsc2FyLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtcmVmcmFjdC5jcHAiLAotLSAg
ICAgICJzcmMvc3JjL3NjZW5lLXJlZnJhY3QuaCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtc2hh
ZGluZy5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLXNoYWRvdy5jcHAiLAotLSAgICAgICJz
cmMvc3JjL3NjZW5lLXRlcnJhaW4uY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS10ZXh0dXJl
LmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zaGFy
ZWQtbGlicmFyeS5jcHAiLAotLSAgICAgICJzcmMvc3JjL3RleHQtcmVuZGVyZXIuY3BwIiwKLS0g
ICAgICAic3JjL3NyYy90ZXh0LXJlbmRlcmVyLmgiLAotLSAgICAgICJzcmMvc3JjL3RleHR1cmUu
Y3BwIiwKLS0gICAgXQotLQotLSAgICBwdWJsaWNfZGVwcyArPSBbCi0tICAgICAgIjpnbG1hcmsy
X2hlYWRlcnMiLAotLSAgICAgICIke2FuZ2xlX2xpYnBuZ19kaXJ9OmxpYnBuZyIsCi0tICAgICAg
IiR7YW5nbGVfcm9vdH0vdGhpcmRfcGFydHk6anBlZyIsCi0tICAgIF0KLS0gIH0KLS19Ci0tCi0t
Z2xtYXJrMl9jb21tb24oImdsbWFyazJfY29tbW9uX2dsZXMiKSB7Ci0tICBwdWJsaWNfZGVwcyA9
IFsKLS0gICAgIjpnbG1hcmsyX2dsZXMiLAotLSAgICAiOmdsbWFyazJfbGlibWF0cml4X2dsZXMi
LAotLSAgICAiOmdsbWFyazJfc2NlbmVfaWRlYXNfZ2xlcyIsCi0tICAgICI6Z2xtYXJrMl9zY2Vu
ZV90ZXJyYWluX2dsZXMiLAotLSAgXQotLX0KLS0KLS1nbG1hcmsyX2NvbW1vbigiZ2xtYXJrMl9j
b21tb25fZ2wiKSB7Ci0tICBwdWJsaWNfZGVwcyA9IFsKLS0gICAgIjpnbG1hcmsyX2dsIiwKLS0g
ICAgIjpnbG1hcmsyX2xpYm1hdHJpeF9nbCIsCi0tICAgICI6Z2xtYXJrMl9zY2VuZV9pZGVhc19n
bCIsCi0tICAgICI6Z2xtYXJrMl9zY2VuZV90ZXJyYWluX2dsIiwKLS0gIF0KLS19Ci0tCi0tZ2xt
YXJrMl92ZXJzaW9uID0gIjIwMTcuMDciCi0tCi0tdGVtcGxhdGUoImdsbWFyazJfZXhlIikgewot
LSAgZXhlY3V0YWJsZSh0YXJnZXRfbmFtZSkgewotLSAgICBmb3J3YXJkX3ZhcmlhYmxlc19mcm9t
KGludm9rZXIsICIqIikKLS0gICAgc291cmNlcyArPSBbCi0tICAgICAgInNyYy9zcmMvY2FudmFz
LWdlbmVyaWMuY3BwIiwKLS0gICAgICAic3JjL3NyYy9jYW52YXMtZ2VuZXJpYy5oIiwKLS0gICAg
ICAic3JjL3NyYy9tYWluLmNwcCIsCi0tICAgIF0KLS0gICAgZGF0YSA9IFsKLS0gICAgICAic3Jj
L2RhdGEvIiwKLS0gICAgXQotLQotLSAgICBkZWZpbmVzICs9IFsgIkdMTUFSS19WRVJTSU9OPVwi
JHtnbG1hcmsyX3ZlcnNpb259XCIiIF0KLS0KLS0gICAgaWYgKGlzX3dpbikgewotLSAgICAgIGRl
ZmluZXMgKz0gWyAiR0xNQVJLMl9VU0VfV0lOMzIiIF0KLS0gICAgICBzb3VyY2VzICs9IFsKLS0g
ICAgICAgICJzcmMvc3JjL25hdGl2ZS1zdGF0ZS13aW4zMi5jcHAiLAotLSAgICAgICAgInNyYy9z
cmMvbmF0aXZlLXN0YXRlLXdpbjMyLmgiLAotLSAgICAgIF0KLS0gICAgfQotLSAgICBpZiAoaXNf
bGludXgpIHsKLS0gICAgICBkZWZpbmVzICs9IFsgIkdMTUFSSzJfVVNFX1gxMSIgXQotLSAgICAg
IHNvdXJjZXMgKz0gWwotLSAgICAgICAgInNyYy9zcmMvbmF0aXZlLXN0YXRlLXgxMS5jcHAiLAot
LSAgICAgICAgInNyYy9zcmMvbmF0aXZlLXN0YXRlLXgxMS5oIiwKLS0gICAgICBdCi0tICAgICAg
bGlicyA9IFsgIlgxMSIgXQotLSAgICB9Ci0tICB9Ci0tfQotLQotLWdsbWFyazJfZXhlKCJnbG1h
cmsyX2FuZ2xlIikgewotLSAgc291cmNlcyA9IFsKLS0gICAgInNyYy9zcmMvZ2wtc3RhdGUtZWds
LmNwcCIsCi0tICBdCi0tICBkZXBzID0gWwotLSAgICAiOmdsbWFyazJfY29tbW9uX2dsZXMiLAot
LSAgXQotLSAgZGF0YV9kZXBzID0gWwotLSAgICAiJHthbmdsZV9yb290fTpsaWJFR0wiLAotLSAg
ICAiJHthbmdsZV9yb290fTpsaWJHTEVTdjIiLAotLSAgXQotLQotLSAgZGVmaW5lcyA9IFsKLS0g
ICAgIkVHTF9FR0xfUFJPVE9UWVBFUz0xIiwKLS0gICAgIkdMTUFSSzJfVVNFX0VHTCIsCi0tICBd
Ci0tCi0tICBpZiAoaXNfbGludXggJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgewotLSAgICAjIFNl
dCBycGF0aCB0byBmaW5kIHNoYXJlZCBsaWJzIGluIGEgbm9uLWNvbXBvbmVudCBidWlsZC4KLS0g
ICAgcHVibGljX2NvbmZpZ3MgPSBbICIvL2J1aWxkL2NvbmZpZy9nY2M6cnBhdGhfZm9yX2J1aWx0
X3NoYXJlZF9saWJyYXJpZXMiIF0KLS0gIH0KLS19Ci0tCi0taWYgKGlzX2xpbnV4KSB7Ci0tICBn
bG1hcmsyX2V4ZSgiZ2xtYXJrMl9nbHgiKSB7Ci0tICAgIHNvdXJjZXMgPSBbCi0tICAgICAgInNy
Yy9zcmMvZ2wtc3RhdGUtZ2x4LmNwcCIsCi0tICAgICAgInNyYy9zcmMvZ2xhZC9pbmNsdWRlL2ds
YWQvZ2x4LmgiLAotLSAgICAgICJzcmMvc3JjL2dsYWQvc3JjL2dseC5jIiwKLS0gICAgXQotLSAg
ICBkZXBzID0gWwotLSAgICAgICI6Z2xtYXJrMl9jb21tb25fZ2wiLAotLSAgICBdCi0tCi0tICAg
IGRlZmluZXMgPSBbICJHTE1BUksyX1VTRV9HTFgiIF0KLS0gIH0KLS19Ci0tCi0tIyBvcGVuZ2wz
Mi5saWIvb3BlbmdsMzIuZGxsIGFyZSBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MgQVJNNjQuCi0t
aWYgKGlzX3dpbiAmJiB0YXJnZXRfY3B1ICE9ICJhcm02NCIpIHsKLS0gIGdsbWFyazJfZXhlKCJn
bG1hcmsyX3dnbCIpIHsKLS0gICAgc291cmNlcyA9IFsKLS0gICAgICAic3JjL3NyYy9nbC1zdGF0
ZS13Z2wuY3BwIiwKLS0gICAgXQotLSAgICBkZXBzID0gWwotLSAgICAgICI6Z2xtYXJrMl9jb21t
b25fZ2wiLAotLSAgICBdCi0tCi0tICAgIGxpYnMgPSBbICJvcGVuZ2wzMi5saWIiIF0KLS0gICAg
ZGVmaW5lcyA9IFsgIkdMTUFSSzJfVVNFX1dHTCIgXQotLSAgfQotLX0KLWRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9nbG1hcmsyL1JFQURNRS5hbmdsZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2dsbWFyazIvUkVBRE1FLmFuZ2xl
Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGEyYjYzNzFmZWQ4Li4wMDAwMDAwMDAw
MAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvZ2xtYXJrMi9SRUFE
TUUuYW5nbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDEyICswLDAgQEAKLS1OYW1lOiBnbG1hcmsy
Ci0tU2hvcnQgTmFtZTogZ2xtYXJrMgotLVVSTDogaHR0cHM6Ly9naXRodWIuY29tL2dsbWFyazIv
Z2xtYXJrMgotLVNlY3VyaXR5IENyaXRpY2FsOiBubwotLUxpY2Vuc2U6IEdQTCB2MwotLUxpY2Vu
c2UgRmlsZTogTk9UX1NISVBQRUQKLS0KLS1EZXNjcmlwdGlvbjoKLS1nbG1hcmsyIGlzIGFuIE9w
ZW5HTCAyLjAgYW5kIEVTIDIuMCBiZW5jaG1hcmsuCi0tCi0tZ2xtYXJrMiBpcyBkZXZlbG9wZWQg
YnkgQWxleGFuZHJvcyBGcmFudHppcyBhbmQgSmVzc2UgQmFya2VyIGJhc2VkIG9uIHRoZQotLW9y
aWdpbmFsIGdsbWFyayBiZW5jaG1hcmsgYnkgQmVuIFNtaXRoLgotZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vUkVBRE1FLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9SRUFETUUubWQKLWRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAotaW5kZXggOGRmZTEyNjI2NjAuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL1JFQURNRS5tZAotKysrIC9kZXYvbnVs
bAotQEAgLTEsMTI5ICswLDAgQEAKLS0jIGZsZXggYW5kIGJpc29uIGJpbmFyaWVzCi0tCi0tVGhp
cyBmb2xkZXIgY29udGFpbnMgdGhlIGZsZXggYW5kIGJpc29uIGJpbmFyaWVzLiBXZSB1c2UgdGhl
c2UgYmluYXJpZXMgdG8KLS1nZW5lcmF0ZSB0aGUgQU5HTEUgdHJhbnNsYXRvcidzIGxleGVyIGFu
ZCBwYXJzZXIuCi0tCi0tVXNlIHRoZSBzY3JpcHQgW2B1cGRhdGVfZmxleF9iaXNvbl9iaW5hcmll
cy5weWBdKHVwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5KQotLXRvIHVwZGF0ZSB0aGUgdmVy
c2lvbnMgb2YgdGhlc2UgYmluYXJpZXMgaW4gY2xvdWQgc3RvcmFnZS4gSXQgbXVzdCBiZSBydW4g
b24KLS1MaW51eCBvciBXaW5kb3dzLiBJdCB3aWxsIHVwZGF0ZSB0aGUgU0hBcyBmb3IgeW91ciBw
bGF0Zm9ybS4gQWZ0ZXIgcnVubmluZyB0aGUKLS1zY3JpcHQgcnVuIGBnaXQgY29tbWl0YCBhbmQg
dGhlbiBgZ2l0IGNsIHVwbG9hZGAgdG8gY29kZSByZXZpZXcgdXNpbmcgdGhlIG5vcm1hbAotLXJl
dmlldyBwcm9jZXNzLiBZb3Ugd2lsbCBhbHNvIHdhbnQgdG8gcnVuCi0tW2BzY3JpcHRzL3J1bl9j
b2RlX2dlbmVyYXRpb24ucHlgXSguLi8uLi9zY3JpcHRzL3J1bl9jb2RlX2dlbmVyYXRpb24ucHkp
IHRvCi0tdXBkYXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0tCi0tUGxlYXNlIHVwZGF0ZSBib3Ro
IFdpbmRvd3MgYW5kIExpbnV4IGJpbmFyaWVzIGF0IHRoZSBzYW1lIHRpbWUuIFVzZSB0d28gQ0xz
LiBPbmUKLS1mb3IgZWFjaCBwbGF0Zm9ybS4gTm90ZSB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBz
dXBwb3J0IE1hYyBmb3IgZ2VuZXJhdGluZyB0aGUKLS1sZXhlciBhbmQgcGFyc2VyIGZpbGVzLiBJ
ZiB3ZSBkbyB3ZSBzaG91bGQgYWRkIGEgZmxleC9iaXNvbiBkb3dubG9hZCBmb3IgTWFjIGFzCi0t
d2VsbC4KLS0KLS1Db250YWN0IGptYWRpbGwgb3Igc3lvdXNzZWZpIGZvciBhbnkgaGVscCB3aXRo
IHVwZGF0aW5nIHRoZSBiaW5hcmllcy4KLS0KLS0jIyBVcGRhdGluZyBmbGV4IGFuZCBiaXNvbiBi
aW5hcmllcwotLQotLVRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYSByYXJlIG9wZXJhdGlvbiwgYW5k
IGlzIGN1cnJlbnRseSBkb25lIGJhc2VkIG9uIHRoZQotLWZvbGxvd2luZyBpbnN0cnVjdGlvbnMu
ICBOb3RlOiBnZXQgdGhlIGJpbmFyaWVzIGZpcnN0IG9uIHdpbmRvd3MsIGFzIG9ubHkgYQotLXNp
bmdsZSBvcHRpb24gaXMgYXZhaWxhYmxlLCB0aGVuIGJ1aWxkIHRoZSBiaW5hcmllcyBmb3IgdGhl
IHNhbWUgdmVyc2lvbiBvbgotLUxpbnV4LgotLQotLSMjIyBPbiBXaW5kb3dzCi0tCi0tSW5zdGFs
bCBNU3lzMiAoeDg2XzY0KSBmcm9tIGh0dHA6Ly93d3cubXN5czIub3JnLyBvbiBXaW5kb3dzLiAg
YGZsZXhgIHNob3VsZAotLWFscmVhZHkgYmUgaW5zdGFsbGVkLiAgSW5zdGFsbCBiaXNvbjoKLS0K
LS1gYGAKLS0kIHBhY21hbiAtUyBiaXNvbgotLWBgYAotLQotLU5vdGUgdGhlIHZlcnNpb25zIG9m
IGZsZXggYW5kIGJpc29uIHNvIHRoZSBzYW1lIHZlcnNpb25zIGNhbiBiZSBidWlsZCBvbiBMaW51
eC4KLS1Gb3IgZXhhbXBsZToKLS0KLS1gYGAKLS0kIGZsZXggLS12ZXJzaW9uCi0tZmxleCAyLjYu
NAotLQotLSQgYmlzb24gLS12ZXJzaW9uCi0tYmlzb24gKEdOVSBCaXNvbikgMy4zLjIKLS1gYGAK
LS0KLS1UaGUgb25seSBkZXBlbmRlbmNpZXMgZnJvbSBNU3lzMiBzaG91bGQgYmUgdGhlIGZvbGxv
d2luZzoKLS0KLS1gYGAKLS1tc3lzLWludGwtOC5kbGwKLS1tc3lzLWljb252LTIuZGxsCi0tbXN5
cy0yLjAuZGxsCi0tYGBgCi0tCi0tVGhpcyBjYW4gYmUgdmVyaWZpZWQgd2l0aDoKLS0KLS1gYGAK
LS0kIGxkZCAvdXNyL2Jpbi9mbGV4Ci0tJCBsZGQgL3Vzci9iaW4vYmlzb24KLS1gYGAKLS0KLS1B
ZGRpdGlvbmFsbHksIHdlIG5lZWQgdGhlIGJpbmFyeSBmb3IgbTQgYXQgYC91c3IvYmluL200YC4K
LS0KLS1Db3B5IGFsbCB0aGVzZSA1IGZpbGVzIHRvIHRoaXMgZGlyZWN0b3J5OgotLQotLWBgYAot
LSQgY2QgYW5nbGUvCi0tJCBjcCAvdXNyL2Jpbi9mbGV4LmV4ZSBcCi0tICAgICAvdXNyL2Jpbi9i
aXNvbi5leGUgXAotLSAgICAgL3Vzci9iaW4vbTQuZXhlIFwKLS0gICAgIC91c3IvYmluL21zeXMt
aW50bC04LmRsbCBcCi0tICAgICAvdXNyL2Jpbi9tc3lzLWljb252LTIuZGxsIFwKLS0gICAgIC91
c3IvYmluL21zeXMtMi4wLmRsbCBcCi0tICAgICB0b29scy9mbGV4LWJpc29uL3dpbmRvd3MvCi0t
YGBgCi0tCi0tVXBsb2FkIHRoZSBiaW5hcmllczoKLS0KLS1gYGAKLS0kIGNkIGFuZ2xlLwotLSQg
cHl0aG9uIHRvb2xzL2ZsZXgtYmlzb24vdXBkYXRlX2ZsZXhfYmlzb25fYmluYXJpZXMucHkKLS1g
YGAKLS0KLS0jIyMgT24gTGludXgKLS0KLS1gYGAKLS0jIEdldCB0aGUgc291cmNlIG9mIGZsZXgK
LS0kIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXguZ2l0Ci0tJCBjZCBm
bGV4LwotLSMgQ2hlY2tvdXQgdGhlIHNhbWUgdmVyc2lvbiBhcyBtc3lzMiBvbiB3aW5kb3dzCi0t
JCBnaXQgY2hlY2tvdXQgdjIuNi40Ci0tIyBCdWlsZAotLSQgYXV0b3JlY29uZiAtaQotLSQgbWtk
aXIgYnVpbGQgJiYgY2QgYnVpbGQKLS0kIC4uL2NvbmZpZ3VyZSBDRkxBR1M9Ii1PMiAtRF9HTlVf
U09VUkNFIgotLSQgbWFrZSAtagotLWBgYAotLQotLWBgYAotLSMgR2V0IHRoZSBzb3VyY2Ugb2Yg
Ymlzb24KLS0kIGN1cmwgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9iaXNvbi9iaXNvbi0zLjMuMi50
YXIueHogfCB0YXIgLXhKCi0tJCBjZCBiaXNvbi0zLjMuMgotLSMgQnVpbGQKLS0kIG1rZGlyIGJ1
aWxkICYmIGNkIGJ1aWxkCi0tJCAuLi9jb25maWd1cmUgQ0ZMQUdTPSItTzIiCi0tJCBtYWtlIC1q
Ci0tYGBgCi0tCi0tTm90ZTogQmlzb24ncyBbaG9tZSBwYWdlXVtCaXNvbl0gbGlzdHMgZnRwIHNl
cnZlciBhbmQgb3RoZXIgbWlycm9ycy4gIElmIHRoZQotLWFib3ZlIGxpbmsgaXMgYnJva2VuLCBy
ZXBsYWNlIHdpdGggYSBtaXJyb3IuCi0tCi0tQ29weSB0aGUgMiBleGVjdXRhYmxlcyB0byB0aGlz
IGRpcmVjdG9yeToKLS0KLS1gYGAKLS0kIGNkIGFuZ2xlLwotLSQgY3AgL3BhdGgvdG8vZmxleC9i
dWlsZC9zcmMvZmxleCBcCi0tICAgICAvcGF0aC90by9iaXNvbi9idWlsZC9zcmMvYmlzb24gXAot
LSAgICAgdG9vbHMvZmxleC1iaXNvbi9saW51eC8KLS1gYGAKLS0KLS1VcGxvYWQgdGhlIGJpbmFy
aWVzOgotLQotLWBgYAotLSQgY2QgYW5nbGUvCi0tJCBweXRob24gdG9vbHMvZmxleC1iaXNvbi91
cGRhdGVfZmxleF9iaXNvbl9iaW5hcmllcy5weQotLWBgYAotLQotLVtCaXNvbl06IGh0dHBzOi8v
d3d3LmdudS5vcmcvc29mdHdhcmUvYmlzb24vCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9saW51eC9iaXNvbi5zaGExIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9saW51eC9iaXNvbi5zaGExCi1kZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKLWluZGV4IGM5M2Q5MmRlNDE5Li4wMDAwMDAwMDAwMAotLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9saW51eC9iaXNvbi5zaGExCi0r
KysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBACi0tZTYyOGI3M2NkMGE3NjdkOTNlMWY5NGI1YTg2
Y2U1MWNhODNjOTlkNQotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9saW51eC9mbGV4LnNoYTEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL2xpbnV4L2ZsZXguc2hh
MQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBkMzQwMDQ3Y2ExMi4uMDAwMDAwMDAw
MDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vbGludXgv
ZmxleC5zaGExCi0rKysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBACi0tZTgzMGU2YzA1MDhkOTY4
NTg3NmU3NzMwNGJiZTdjNGExMjJjMDhlOAotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1k
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGly
ZF9wYXJ0eS8uZ2l0YXR0cmlidXRlcyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2Zs
ZXgtYmlzb24vdGhpcmRfcGFydHkvLmdpdGF0dHJpYnV0ZXMKLWRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAotaW5kZXggMDY4OGM4YTE0OTEuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5Ly5naXRhdHRyaWJ1dGVzCi0r
KysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBACi0tKiAgICAgICAgICAgICAgICAgICAgZW9sPWxm
Ci1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90
aGlyZF9wYXJ0eS9tNHN1Z2FyL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvTElDRU5TRQotZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0Ci1pbmRleCBkNTExOTA1YzE2NC4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9MSUNF
TlNFCi0rKysgL2Rldi9udWxsCi1AQCAtMSwzMzkgKzAsMCBAQAotLQkJICAgIEdOVSBHRU5FUkFM
IFBVQkxJQyBMSUNFTlNFCi0tCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKLS0KLS0gQ29w
eXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLS0g
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT
QQotLSBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRp
bSBjb3BpZXMKLS0gb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMg
bm90IGFsbG93ZWQuCi0tCi0tCQkJICAgIFByZWFtYmxlCi0tCi0tICBUaGUgbGljZW5zZXMgZm9y
IG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCi0tZnJlZWRvbSB0
byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMKLS1MaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hh
cmUgYW5kIGNoYW5nZSBmcmVlCi0tc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUg
aXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKLS1HZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQotLUZvdW5kYXRpb24ncyBzb2Z0
d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KLS11
c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBp
cyBjb3ZlcmVkIGJ5Ci0tdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0
ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KLS15b3VyIHByb2dyYW1zLCB0b28uCi0tCi0tICBX
aGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRv
bSwgbm90Ci0tcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQotLWhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBj
b3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKLS10aGlzIHNlcnZpY2UgaWYg
eW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKLS1p
ZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBp
ZWNlcyBvZiBpdAotLWluIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3Ug
Y2FuIGRvIHRoZXNlIHRoaW5ncy4KLS0KLS0gIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5l
ZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKLS1hbnlvbmUgdG8gZGVueSB5b3Ug
dGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCi0tVGhl
c2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9y
IHlvdSBpZiB5b3UKLS1kaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlv
dSBtb2RpZnkgaXQuCi0tCi0tICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVz
IG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCi0tZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11
c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0Ci0teW91IGhhdmUuICBZ
b3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUK
LS1zb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhl
eSBrbm93IHRoZWlyCi0tcmlnaHRzLgotLQotLSAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRo
IHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAotLSgyKSBvZmZlciB5
b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHks
Ci0tZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KLS0KLS0gIEFsc28sIGZv
ciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0
YWluCi0tdGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5
IGZvciB0aGlzIGZyZWUKLS1zb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBi
eSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKLS13YW50IGl0cyByZWNpcGllbnRzIHRv
IGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwotLXRoYXQg
YW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24gdGhl
IG9yaWdpbmFsCi0tYXV0aG9ycycgcmVwdXRhdGlvbnMuCi0tCi0tICBGaW5hbGx5LCBhbnkgZnJl
ZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQotLXBhdGVudHMu
ICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZy
ZWUKLS1wcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGlu
IGVmZmVjdCBtYWtpbmcgdGhlCi0tcHJvZ3JhbSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhp
cywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55Ci0tcGF0ZW50IG11c3QgYmUgbGljZW5z
ZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KLS0KLS0g
IFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRp
b24gYW5kCi0tbW9kaWZpY2F0aW9uIGZvbGxvdy4KLS0KLS0JCSAgICBHTlUgR0VORVJBTCBQVUJM
SUMgTElDRU5TRQotLSAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklC
VVRJT04gQU5EIE1PRElGSUNBVElPTgotLQotLSAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8g
YW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwotLWEgbm90aWNlIHBsYWNl
ZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCi0t
dW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJv
Z3JhbSIsIGJlbG93LAotLXJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBh
ICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgotLW1lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBv
ciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Ci0tdGhhdCBpcyB0byBz
YXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKLS1l
aXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGlu
dG8gYW5vdGhlcgotLWxhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNs
dWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KLS10aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBF
YWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KLS0KLS1BY3Rpdml0aWVzIG90aGVy
IHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAotLWNv
dmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBh
Y3Qgb2YKLS1ydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91
dHB1dCBmcm9tIHRoZSBQcm9ncmFtCi0taXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBj
b25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtIChpbmRlcGVuZGVudCBvZiBo
YXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgotLVdoZXRoZXIgdGhhdCBp
cyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgotLQotLSAgMS4gWW91IG1h
eSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCi0t
c291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRo
YXQgeW91Ci0tY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2gg
Y29weSBhbiBhcHByb3ByaWF0ZQotLWNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Yg
d2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKLS1ub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhp
cyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7Ci0tYW5kIGdpdmUg
YW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5z
ZQotLWFsb25nIHdpdGggdGhlIFByb2dyYW0uCi0tCi0tWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9y
IHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCi0teW91IG1heSBh
dCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBh
IGZlZS4KLS0KLS0gIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhl
IFByb2dyYW0gb3IgYW55IHBvcnRpb24KLS1vZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNl
ZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCi0tZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNh
dGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCi0tYWJvdmUsIHByb3Zp
ZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLS0KLS0gICAg
YSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBu
b3RpY2VzCi0tICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBk
YXRlIG9mIGFueSBjaGFuZ2UuCi0tCi0tICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRo
YXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgotLSAgICB3aG9sZSBvciBpbiBw
YXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKLS0gICAg
cGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBh
bGwgdGhpcmQKLS0gICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgot
LQotLSAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5k
cyBpbnRlcmFjdGl2ZWx5Ci0tICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBz
dGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKLS0gICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0
IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgotLSAgICBhbm5vdW5jZW1lbnQg
aW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKLS0gICAgbm90
aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBw
cm92aWRlCi0tICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUg
dGhlIHByb2dyYW0gdW5kZXIKLS0gICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhl
IHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKLS0gICAgTGljZW5zZS4gIChFeGNlcHRp
b246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKLS0gICAgZG9lcyBu
b3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBv
bgotLSAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2Vt
ZW50LikKLS0KLS1UaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsg
YXMgYSB3aG9sZS4gIElmCi0taWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUg
bm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKLS1hbmQgY2FuIGJlIHJlYXNvbmFibHkgY29u
c2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KLS10aGVtc2VsdmVzLCB0
aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCi0t
c2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0
IHdoZW4geW91Ci0tZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hv
bGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCi0tb24gdGhlIFByb2dyYW0sIHRoZSBkaXN0cmlidXRp
b24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCi0tdGhpcyBMaWNlbnNlLCB3
aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKLS1lbnRp
cmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3
aG8gd3JvdGUgaXQuCi0tCi0tVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0
aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Ci0teW91ciByaWdodHMgdG8gd29yayB3cml0
dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCi0tZXhlcmNpc2Ug
dGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCi0t
Y29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KLS0KLS1JbiBhZGRpdGlvbiwg
bWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBQcm9ncmFt
Ci0td2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0p
IG9uIGEgdm9sdW1lIG9mCi0tYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBu
b3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKLS10aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNl
LgotLQotLSAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBh
IHdvcmsgYmFzZWQgb24gaXQsCi0tdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBl
eGVjdXRhYmxlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mCi0tU2VjdGlvbnMgMSBhbmQgMiBhYm92
ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotLQotLSAg
ICBhKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5l
LXJlYWRhYmxlCi0tICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwotLSAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVt
IGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKLS0KLS0gICAg
YikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3Qg
dGhyZWUKLS0gICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ug
bm8gbW9yZSB0aGFuIHlvdXIKLS0gICAgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgc291
cmNlIGRpc3RyaWJ1dGlvbiwgYSBjb21wbGV0ZQotLSAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkg
b2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCi0tICAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCi0t
ICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKLS0KLS0g
ICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0
byB0aGUgb2ZmZXIKLS0gICAgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2Rl
LiAgKFRoaXMgYWx0ZXJuYXRpdmUgaXMKLS0gICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJj
aWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKLS0gICAgcmVjZWl2ZWQgdGhlIHByb2dy
YW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAotLSAgICBhbiBv
ZmZlciwgaW4gYWNjb3JkIHdpdGggU3Vic2VjdGlvbiBiIGFib3ZlLikKLS0KLS1UaGUgc291cmNl
IGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9y
Ci0tbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuICBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBj
b21wbGV0ZSBzb3VyY2UKLS1jb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBt
b2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQotLWFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmlu
aXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwotLWNvbnRyb2wgY29tcGlsYXRp
b24gYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgZXhlY3V0YWJsZS4gIEhvd2V2ZXIsIGFzIGEKLS1z
cGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGlu
Y2x1ZGUKLS1hbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIg
c291cmNlIG9yIGJpbmFyeQotLWZvcm0pIHdpdGggdGhlIG1ham9yIGNvbXBvbmVudHMgKGNvbXBp
bGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlCi0tb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGlj
aCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKLS1pdHNlbGYgYWNj
b21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCi0tCi0tSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFi
bGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwotLWFjY2VzcyB0byBjb3B5IGZy
b20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKLS1hY2Nlc3Mg
dG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMKLS1k
aXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVz
IGFyZSBub3QKLS1jb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9i
amVjdCBjb2RlLgotLQotLSAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNl
LCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0tZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRl
ZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAotLW90aGVyd2lzZSB0byBjb3B5LCBt
b2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcwotLXZvaWQsIGFu
ZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGlj
ZW5zZS4KLS1Ib3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3Igcmln
aHRzLCBmcm9tIHlvdSB1bmRlcgotLXRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxp
Y2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCi0tcGFydGllcyByZW1haW4gaW4gZnVs
bCBjb21wbGlhbmNlLgotLQotLSAgNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRo
aXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90Ci0tc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90
aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKLS1kaXN0cmlidXRl
IHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUK
LS1wcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBU
aGVyZWZvcmUsIGJ5Ci0tbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3Ig
YW55IHdvcmsgYmFzZWQgb24gdGhlCi0tUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2Vw
dGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKLS1hbGwgaXRzIHRlcm1zIGFuZCBj
b25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCi0tdGhlIFBy
b2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCi0tCi0tICA2LiBFYWNoIHRpbWUgeW91IHJlZGlz
dHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCi0tUHJvZ3JhbSks
IHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUK
LS1vcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJv
Z3JhbSBzdWJqZWN0IHRvCi0tdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5v
dCBpbXBvc2UgYW55IGZ1cnRoZXIKLS1yZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4
ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCi0tWW91IGFyZSBub3QgcmVzcG9u
c2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KLS10aGlz
IExpY2Vuc2UuCi0tCi0tICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdt
ZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50Ci0taW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3Ro
ZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwKLS1jb25kaXRpb25zIGFy
ZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCi0t
b3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNl
LCB0aGV5IGRvIG5vdAotLWV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExp
Y2Vuc2UuICBJZiB5b3UgY2Fubm90Ci0tZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVs
dGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwotLUxpY2Vuc2UgYW5kIGFueSBv
dGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKLS1t
YXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEg
cGF0ZW50Ci0tbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1
dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQotLWFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGly
ZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgotLXRoZSBvbmx5IHdheSB5b3Ug
Y291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KLS1yZWZy
YWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgotLQotLUlmIGFu
eSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJs
ZSB1bmRlcgotLWFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhl
IHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KLS1hcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9s
ZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgotLWNpcmN1bXN0YW5jZXMuCi0tCi0tSXQg
aXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJp
bmdlIGFueQotLXBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNv
bnRlc3QgdmFsaWRpdHkgb2YgYW55Ci0tc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhl
IHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQotLWludGVncml0eSBvZiB0aGUgZnJlZSBz
b2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwotLWltcGxlbWVudGVkIGJ5IHB1
YmxpYyBsaWNlbnNlIHByYWN0aWNlcy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQotLWdlbmVyb3Vz
IGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQK
LS10aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRp
b24gb2YgdGhhdAotLXN5c3RlbTsgaXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNp
ZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcKLS10byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91
Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKLS1pbXBvc2UgdGhhdCBj
aG9pY2UuCi0tCi0tVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBj
bGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCi0tYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBv
ZiB0aGlzIExpY2Vuc2UuCi0tCi0tICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ug
b2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgotLWNlcnRhaW4gY291bnRyaWVzIGVpdGhl
ciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQotLW9yaWdpbmFs
IGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vu
c2UKLS1tYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRh
dGlvbiBleGNsdWRpbmcKLS10aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlz
IHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCi0tY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVk
LiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCi0tdGhlIGxpbWl0YXRp
b24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCi0tCi0tICA5LiBU
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5l
dyB2ZXJzaW9ucwotLW9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0
aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAotLWJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRo
ZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwotLWFkZHJlc3Mg
bmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgotLQotLUVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRp
c3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KLS1zcGVjaWZpZXMg
YSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQg
ImFueQotLWxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0
aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKLS1laXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFu
eSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQotLVNvZnR3YXJlIEZvdW5kYXRp
b24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YK
LS10aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi0tRm91bmRhdGlvbi4KLS0KLS0gIDEwLiBJZiB5b3Ugd2lz
aCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKLS1w
cm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0
ZSB0byB0aGUgYXV0aG9yCi0tdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdo
aWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCi0tU29mdHdhcmUgRm91bmRhdGlvbiwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCi0tbWFrZSBl
eGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0
d28gZ29hbHMKLS1vZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2
ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCi0tb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFu
ZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCi0tCi0tCQkJICAgIE5PIFdBUlJBTlRZCi0t
Ci0tICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwg
VEhFUkUgSVMgTk8gV0FSUkFOVFkKLS1GT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVS
TUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KLS1PVEhFUldJU0UgU1RBVEVE
IElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTCi0t
UFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVJVEhFUiBFWFBSRVNTRUQKLS1PUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgotLU1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKLS1UTyBU
SEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBT
SE9VTEQgVEhFCi0tUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1Qg
T0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCi0tUkVQQUlSIE9SIENPUlJFQ1RJT04uCi0tCi0t
ICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFH
UkVFRCBUTyBJTiBXUklUSU5HCi0tV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9U
SEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgotLVJFRElTVFJJQlVURSBUSEUgUFJPR1JB
TSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCi0tSU5D
TFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyBBUklTSU5HCi0tT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUg
UFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAotLVRPIExPU1MgT0YgREFUQSBPUiBE
QVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQotLVlP
VSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRF
IFdJVEggQU5ZIE9USEVSCi0tUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVS
IFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCi0tUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0VTLgotLQotLQkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKLS0KLS0JICAgIEhv
dyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwotLQotLSAgSWYgeW91
IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVh
dGVzdAotLXBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2
ZSB0aGlzIGlzIHRvIG1ha2UgaXQKLS1mcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiBy
ZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KLS0KLS0gIFRvIGRvIHNv
LCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2Fm
ZXN0Ci0tdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8g
bW9zdCBlZmZlY3RpdmVseQotLWNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQg
ZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0Ci0tdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5k
IGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCi0tCi0tICAgIDxv
bmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdo
YXQgaXQgZG9lcy4+Ci0tICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+
Ci0tCi0tICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0t
ICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
LSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0tCi0tICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0tICAgIHdpdGggdGhpcyBw
cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sCi0tICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSBVU0EuCi0tCi0tQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3Qg
eW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCi0tCi0tSWYgdGhlIHByb2dyYW0gaXMg
aW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcwotLXdo
ZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6Ci0tCi0tICAgIEdub21vdmlzaW9u
IHZlcnNpb24gNjksIENvcHlyaWdodCAoQykgeWVhciBuYW1lIG9mIGF1dGhvcgotLSAgICBHbm9t
b3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5
cGUgYHNob3cgdycuCi0tICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2Vs
Y29tZSB0byByZWRpc3RyaWJ1dGUgaXQKLS0gICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0
eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgotLQotLVRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMg
YHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQotLXBhcnRz
IG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMg
eW91IHVzZSBtYXkKLS1iZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYHNob3cgdycgYW5k
IGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKLS1tb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVt
cy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgotLQotLVlvdSBzaG91bGQgYWxzbyBnZXQg
eW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCi0tc2No
b29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJv
Z3JhbSwgaWYKLS1uZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6
Ci0tCi0tICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGlu
dGVyZXN0IGluIHRoZSBwcm9ncmFtCi0tICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNz
ZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KLS0KLS0gIDxzaWduYXR1
cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQotLSAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZp
Y2UKLS0KLS1UaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29y
cG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KLS1wcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlv
dXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQotLWNvbnNpZGVyIGl0
IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3
aXRoIHRoZQotLWxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0
aGUgR05VIExlc3NlciBHZW5lcmFsCi0tUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExp
Y2Vuc2UuCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL1JFQURNRS5jaHJvbWl1bSBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9SRUFETUUuY2hy
b21pdW0KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYzYwYTVmZDRmZGMuLjAwMDAw
MDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3Ro
aXJkX3BhcnR5L200c3VnYXIvUkVBRE1FLmNocm9taXVtCi0rKysgL2Rldi9udWxsCi1AQCAtMSwx
MSArMCwwIEBACi0tTmFtZTogQXV0b2NvbmYgTTQgbWFjcm9zIHVzZWQgYnkgQmlzb24KLS1TaG9y
dCBOYW1lOiBtNHN1Z2FyCi0tVVJMOiBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9j
b25mLwotLVZlcnNpb246IHVua25vd24KLS1MaWNlbnNlOiBHUEwKLS1MaWNlbnNlIEZpbGU6IExJ
Q0VOU0UKLS1TZWN1cml0eSBjcml0aWNhbDogbm8KLS0KLS1EZXNjcmlwdGlvbjoKLS1CaXNvbiB1
c2VzIE00IHRvIGdlbmVyYXRlIGl0cyBvdXRwdXQsIGFuZCB1c2VzIHRoZSB1dGlsaXR5IE00IG1h
Y3JvcyBpbiB0aGlzCi0tZGlyZWN0b3J5LgotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9mb3JlYWNoLm00IGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1
Z2FyL2ZvcmVhY2gubTQKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNzA5M2QwZmNj
NGUuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvZm9yZWFjaC5tNAotKysrIC9kZXYvbnVsbAotQEAg
LTEsMzYyICswLDAgQEAKLS0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCi0tIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBBdXRv
Y29uZi4KLS0jIGZvcmVhY2gtYmFzZWQgcmVwbGFjZW1lbnRzIGZvciByZWN1cnNpdmUgZnVuY3Rp
b25zLgotLSMgU3BlZWRzIHVwIEdOVSBNNCAxLjQueCBieSBhdm9pZGluZyBxdWFkcmF0aWMgJEAg
cmVjdXJzaW9uLCBidXQgcGVuYWxpemVzCi0tIyBHTlUgTTQgMS42IGJ5IHJlcXVpcmluZyBtb3Jl
IG1lbW9yeSBhbmQgbWFjcm8gZXhwYW5zaW9ucy4KLS0jCi0tIyBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0jIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIEF1dG9jb25mLiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUKLS0jIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotLSMgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLS0j
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z
ZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLS0jCi0tIyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywg
eW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKLS0jIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0
aGUgQXV0b2NvbmYgQ29uZmlndXJlIFNjcmlwdCBFeGNlcHRpb24sCi0tIyB2ZXJzaW9uIDMuMCwg
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0tIwotLSMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLS0jIGFuZCBhIGNvcHkgb2YgdGhlIEF1dG9jb25mIENvbmZpZ3VyZSBTY3JpcHQgRXhj
ZXB0aW9uIGFsb25nIHdpdGgKLS0jIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlcyBDT1BZSU5H
djMgYW5kIENPUFlJTkcuRVhDRVBUSU9OCi0tIyByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZSA8
aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLQotLSMgV3JpdHRlbiBieSBFcmljIEJs
YWtlLgotLQotLSMgSW4gTTQgMS40LngsIGV2ZXJ5IGJ5dGUgb2YgJEAgaXMgcmVzY2FubmVkLiAg
VGhpcyBtZWFucyB0aGF0IGFuCi0tIyBhbGdvcml0aG0gb24gbiBhcmd1bWVudHMgdGhhdCByZWN1
cnNlcyB3aXRoIG9uZSBsZXNzIGFyZ3VtZW50IGVhY2gKLS0jIGl0ZXJhdGlvbiB3aWxsIHNjYW4g
biAqIChuICsgMSkgLyAyIGFyZ3VtZW50cywgZm9yIE8obl4yKSB0aW1lLiAgSW4KLS0jIE00IDEu
NiwgdGhpcyB3YXMgZml4ZWQgc28gdGhhdCAkQCBpcyBvbmx5IHNjYW5uZWQgb25jZSwgdGhlbgot
LSMgYmFjay1yZWZlcmVuY2VzIGFyZSBtYWRlIHRvIGluZm9ybWF0aW9uIHN0b3JlZCBhYm91dCB0
aGUgc2Nhbi4KLS0jIFRodXMsIG4gaXRlcmF0aW9ucyBuZWVkIG9ubHkgc2NhbiBuIGFyZ3VtZW50
cywgZm9yIE8obikgdGltZS4KLS0jIEFkZGl0aW9uYWxseSwgaW4gTTQgMS40LngsIHJlY3Vyc2l2
ZSBhbGdvcml0aG1zIGRpZCBub3QgY2xlYW4gdXAKLS0jIG1lbW9yeSB2ZXJ5IHdlbGwsIHJlcXVp
cmluZyBPKG5eMikgbWVtb3J5IHJhdGhlciB0aGFuIE8obikgZm9yIG4KLS0jIGl0ZXJhdGlvbnMu
Ci0tIwotLSMgVGhpcyBmaWxlIGlzIGRlc2lnbmVkIHRvIG92ZXJjb21lIHRoZSBxdWFkcmF0aWMg
bmF0dXJlIG9mICRACi0tIyByZWN1cnNpb24gYnkgd3JpdGluZyBhIHZhcmlhbnQgb2YgbTRfZm9y
ZWFjaCB0aGF0IHVzZXMgbTRfZm9yIHJhdGhlcgotLSMgdGhhbiAkQCByZWN1cnNpb24gdG8gb3Bl
cmF0ZSBvbiB0aGUgbGlzdC4gIFRoaXMgaW52b2x2ZXMgbW9yZSBtYWNybwotLSMgZXhwYW5zaW9u
cywgYnV0IGF2b2lkcyB0aGUgbmVlZCB0byByZXNjYW4gYSBxdWFkcmF0aWMgbnVtYmVyIG9mCi0t
IyBhcmd1bWVudHMsIG1ha2luZyB0aGVzZSByZXBsYWNlbWVudHMgdmVyeSBhdHRyYWN0aXZlIGZv
ciBNNCAxLjQueC4KLS0jIE9uIHRoZSBvdGhlciBoYW5kLCBpbiBhbnkgdmVyc2lvbiBvZiBNNCwg
ZXhwYW5kaW5nIGFkZGl0aW9uYWwgbWFjcm9zCi0tIyBjb3N0cyBhZGRpdGlvbmFsIHRpbWU7IHRo
ZXJlZm9yZSwgaW4gTTQgMS42LCB3aGVyZSAkQCByZWN1cnNpb24gdXNlcwotLSMgZmV3ZXIgbWFj
cm9zLCB0aGVzZSByZXBsYWNlbWVudHMgYWN0dWFsbHkgcGVzc2ltaXplIHBlcmZvcm1hbmNlLgot
LSMgQWRkaXRpb25hbGx5LCB0aGUgdXNlIG9mICQxMCB0byBtZWFuIHRoZSB0ZW50aCBhcmd1bWVu
dCB2aW9sYXRlcwotLSMgUE9TSVg7IGFsdGhvdWdoIGFsbCB2ZXJzaW9ucyBvZiBtNCAxLjQueCBz
dXBwb3J0IHRoaXMgbWVhbmluZywgYQotLSMgZnV0dXJlIG00IHZlcnNpb24gbWF5IHN3aXRjaCB0
byB0YWtlIGl0IGFzIHRoZSBmaXJzdCBhcmd1bWVudAotLSMgY29uY2F0ZW5hdGVkIHdpdGggYSBs
aXRlcmFsIDAsIHNvIHRoZSBpbXBsZW1lbnRhdGlvbnMgaW4gdGhpcyBmaWxlCi0tIyBhcmUgbm90
IGZ1dHVyZS1wcm9vZi4gIFRodXMsIHRoaXMgZmlsZSBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVk
IGFzCi0tIyBwYXJ0IG9mIG00X2luaXQoKSwgb25seSB3aGVuIGl0IGlzIGRldGVjdGVkIHRoYXQg
TTQgcHJvYmFibHkgaGFzCi0tIyBxdWFkcmF0aWMgYmVoYXZpb3IgKGllLiBpdCBsYWNrcyB0aGUg
bWFjcm8gX19tNF92ZXJzaW9uX18pLgotLSMKLS0jIFBsZWFzZSBrZWVwIHRoaXMgZmlsZSBpbiBz
eW5jIHdpdGggbTRzdWdhci5tNC4KLS0KLS0jIF9tNF9mb3JlYWNoKFBSRSwgUE9TVCwgSUdOT1JF
RCwgQVJHLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBGb3JtIHRoZSBjb21tb24gYmFzaXMgb2YgdGhlIG00X2ZvcmVhY2ggYW5kIG00X21hcCBtYWNy
b3MuICBGb3IgZWFjaAotLSMgQVJHLCBleHBhbmQgUFJFW0FSR11QT1NUW10uICBUaGUgSUdOT1JF
RCBhcmd1bWVudCBtYWtlcyByZWN1cnNpb24KLS0jIGVhc2llciwgYW5kIG11c3QgYmUgc3VwcGxp
ZWQgcmF0aGVyIHRoYW4gaW1wbGljaXQuCi0tIwotLSMgVGhpcyB2ZXJzaW9uIG1pbmltaXplcyB0
aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgJEAgaXMgZXZhbHVhdGVkIGJ5Ci0tIyB1c2luZyBtNF9m
b3IgdG8gZ2VuZXJhdGUgYSBib2lsZXJwbGF0ZSBpbnRvIF9tNF9mIHRoZW4gcGFzc2luZyAkQCB0
bwotLSMgdGhhdCB0ZW1wb3JhcnkgbWFjcm8uICBUaHVzLCB0aGUgcmVjdXJzaW9uIGlzIGRvbmUg
aW4gbTRfZm9yIHdpdGhvdXQKLS0jIHJlcGFyc2luZyBhbnkgdXNlciBpbnB1dCwgYW5kIGlzIG5v
dCBxdWFkcmF0aWMuICBGb3IgYW4gaWRlYSBvZiBob3cKLS0jIHRoaXMgd29ya3MsIG5vdGUgdGhh
dCBtNF9mb3JlYWNoKGksWzEsMl0sW2ldKSBjYWxscwotLSMgICBfbTRfZm9yZWFjaChbbTRfZGVm
aW5lKFtpXSxdLFspaV0sW10sWzFdLFsyXSkKLS0jIHdoaWNoIGRlZmluZXMgX200X2Y6Ci0tIyAg
ICQxWyQ0XSQyW10kMVskNV0kMltdX200X3BvcGRlZihbX200X2ZdKQotLSMgdGhlbiBjYWxscyBf
bTRfZihbbTRfZGVmaW5lKFtpXSxdLFspaV0sW10sWzFdLFsyXSkgZm9yIGEgbmV0IHJlc3VsdDoK
LS0jICAgbTRfZGVmaW5lKFtpXSxbMV0paVtdbTRfZGVmaW5lKFtpXSxbMl0paVtdX200X3BvcGRl
ZihbX200X2ZdKS4KLS1tNF9kZWZpbmUoW19tNF9mb3JlYWNoXSwKLS1bbTRfaWYoWyQjXSwgWzNd
LCBbXSwKLS0gICAgICAgW200X3B1c2hkZWYoW19tNF9mXSwgX200X2ZvcihbNF0sIFskI10sIFsx
XSwKLS0gICBbJDBfKFsxXSwgWzJdLF0sIFspXSlbX200X3BvcGRlZihbX200X2ZdKV0pX200X2Yo
JEApXSldKQotLQotLW00X2RlZmluZShbX200X2ZvcmVhY2hfXSwKLS1bWyQkMVskJDNdJCQyW11d
XSkKLS0KLS0jIG00X2Nhc2UoU1dJVENILCBWQUwxLCBJRi1WQUwxLCBWQUwyLCBJRi1WQUwyLCAu
Li4sIERFRkFVTFQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRmluZCB0aGUgZmlyc3QgVkFMIHRoYXQgU1dJVENIIG1h
dGNoZXMsIGFuZCBleHBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKLS0jIElGLVZBTC4gIElmIHRoZXJl
IGFyZSBubyBtYXRjaGVzLCBleHBhbmQgREVGQVVMVC4KLS0jCi0tIyBVc2UgbTRfZm9yIHRvIGNy
ZWF0ZSBhIHRlbXBvcmFyeSBtYWNybyBpbiB0ZXJtcyBvZiBhIGJvaWxlcnBsYXRlCi0tIyBtNF9p
ZiB3aXRoIGZpbmFsIGNsZWFudXAuICBJZiAkIyBpcyBldmVuLCB3ZSBoYXZlIERFRkFVTFQ7IGlm
IGl0IGlzCi0tIyBvZGQsIHRoZW4gcm91bmRpbmcgdGhlIGxhc3QgJCMgdXAgaW4gdGhlIHRlbXBv
cmFyeSBtYWNybyBpcwotLSMgaGFybWxlc3MuICBGb3IgZXhhbXBsZSwgYm90aCBtNF9jYXNlKDEs
MiwzLDQsNSkgYW5kCi0tIyBtNF9jYXNlKDEsMiwzLDQsNSw2KSByZXN1bHQgaW4gdGhlIGludGVy
bWVkaWF0ZSBfbTRfY2FzZSBiZWluZwotLSMgICBtNF9pZihbJDFdLFskMl0sWyQzXSxbJDFdLFsk
NF0sWyQ1XSxfbTRfcG9wZGVmKFtfbTRfY2FzZV0pWyQ2XSkKLS1tNF9kZWZpbmUoW200X2Nhc2Vd
LAotLVttNF9pZihtNF9ldmFsKFskIyA8PSAyXSksIFsxXSwgWyQyXSwKLS1bbTRfcHVzaGRlZihb
XyQwXSwgW200X2lmKF1fbTRfZm9yKFsyXSwgbTRfZXZhbChbKCQjIC0gMSkgLyAyICogMl0pLCBb
Ml0sCi0tICAgICBbXyQwXyhdLCBbKV0pW19tNF9wb3BkZWYoCi0tCSBbXyQwXSldbTRfZHF1b3Rl
KCRtNF9ldmFsKFsoJCMgKyAxKSAmIH4xXSkpWyldKV8kMCgkQCldKV0pCi0tCi0tbTRfZGVmaW5l
KFtfbTRfY2FzZV9dLAotLVskMF8oWzFdLCBbJDFdLCBtNF9pbmNyKFskMV0pKV0pCi0tCi0tbTRf
ZGVmaW5lKFtfbTRfY2FzZV9fXSwKLS1bW1skJDFdLFskJDJdLFskJDNdLF1dKQotLQotLSMgbTRf
Ym1hdGNoKFNXSVRDSCwgUkUxLCBWQUwxLCBSRTIsIFZBTDIsIC4uLiwgREVGQVVMVCkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBt
NCBlcXVpdmFsZW50IG9mCi0tIwotLSMgaWYgKFNXSVRDSCA9fiBSRTEpCi0tIyAgIFZBTDE7Ci0t
IyBlbGlmIChTV0lUQ0ggPX4gUkUyKQotLSMgICBWQUwyOwotLSMgZWxpZiAuLi4KLS0jICAgLi4u
Ci0tIyBlbHNlCi0tIyAgIERFRkFVTFQKLS0jCi0tIyBXZSBidWlsZCB0aGUgdGVtcG9yYXJ5IG1h
Y3JvIF9tNF9iOgotLSMgICBtNF9kZWZpbmUoW19tNF9iXSwgX200X2RlZm4oW19tNF9ibWF0Y2hd
KSlfbTRfYihbJDFdLCBbJDJdLCBbJDNdKS4uLgotLSMgICBfbTRfYihbJDFdLCBbJG0tMV0sIFsk
bV0pX200X2IoW10sIFtdLCBbJG0rMV1fbTRfcG9wZGVmKFtfbTRfYl0pKQotLSMgdGhlbiBpbnZv
a2UgbTRfdW5xdW90ZShfbTRfYigkQCkpLCBmb3IgY29uY2F0ZW5hdGlvbiB3aXRoIGxhdGVyIHRl
eHQuCi0tbTRfZGVmaW5lKFttNF9ibWF0Y2hdLAotLVttNF9pZihbJCNdLCAwLCBbbTRfZmF0YWwo
WyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCi0tICAgICAgIFskI10sIDEsIFttNF9mYXRh
bChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCi0tICAgICAgIFskI10sIDIsIFsk
Ml0sCi0tICAgICAgIFttNF9wdXNoZGVmKFtfbTRfYl0sIFttNF9kZWZpbmUoW19tNF9iXSwKLS0g
IF9tNF9kZWZuKFtfJDBdKSldX200X2ZvcihbM10sIG00X2V2YWwoWygkIyArIDEpIC8gMiAqIDIg
LSAxXSksCi0tICBbMl0sIFtfJDBfKF0sIFspXSlbX200X2IoW10sIFtdLF1tNF9kcXVvdGUoWyRd
bTRfZXZhbCgKLS0gIFsoJCMgKyAxKSAvIDIgKiAyXSkpW19tNF9wb3BkZWYoW19tNF9iXSkpXSlt
NF91bnF1b3RlKF9tNF9iKCRAKSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfYm1hdGNoXSwKLS1b
bTRfaWYobTRfYnJlZ2V4cChbJDFdLCBbJDJdKSwgWy0xXSwgW10sIFtbJDNdbTRfZGVmaW5lKFsk
MF0pXSldKQotLQotLW00X2RlZmluZShbX200X2JtYXRjaF9dLAotLVskMF8oWzFdLCBtNF9kZWNy
KFskMV0pLCBbJDFdKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfYm1hdGNoX19dLAotLVtbX200X2Io
WyQkMV0sIFskJDJdLCBbJCQzXSldXSkKLS0KLS0KLS0jIG00X2NvbmQoVEVTVDEsIFZBTDEsIElG
LVZBTDEsIFRFU1QyLCBWQUwyLCBJRi1WQUwyLCAuLi4sIFtERUZBVUxUXSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIFNpbWlsYXIgdG8gbTRfaWYsIGV4Y2VwdCB0aGF0IGVhY2ggVEVTVCBpcyBleHBhbmRl
ZCB3aGVuIGVuY291bnRlcmVkLgotLSMgSWYgdGhlIGV4cGFuc2lvbiBvZiBURVNUbiBtYXRjaGVz
IHRoZSBzdHJpbmcgVkFMbiwgdGhlIHJlc3VsdCBpcyBJRi1WQUxuLgotLSMgVGhlIHJlc3VsdCBp
cyBERUZBVUxUIGlmIG5vIHRlc3RzIHBhc3NlZC4gIFRoaXMgbWFjcm8gYWxsb3dzCi0tIyBzaG9y
dC1jaXJjdWl0aW5nIG9mIGV4cGVuc2l2ZSB0ZXN0cywgd2hlcmUgaXQgcGF5cyB0byBhcnJhbmdl
IHF1aWNrCi0tIyBmaWx0ZXIgdGVzdHMgdG8gcnVuIGZpcnN0LgotLSMKLS0jIG00X2NvbmQgYWxy
ZWFkeSBndWFyYW50ZWVzIGVpdGhlciAzKm4gb3IgMypuICsgMSBhcmd1bWVudHMsIDEgPD0gbi4K
LS0jIFdlIG9ubHkgaGF2ZSB0byBzcGVlZCB1cCBfbTRfY29uZCwgYnkgYnVpbGRpbmcgdGhlIHRl
bXBvcmFyeSBfbTRfYzoKLS0jICAgbTRfZGVmaW5lKFtfbTRfY10sIF9tNF9kZWZuKFttNF91bnF1
b3RlXSkpX200X2MoW200X2lmKCgkMSksIFsoJDIpXSwKLS0jICAgW1skM11tNF9kZWZpbmUoW19t
NF9jXSldKV0pX200X2MoW200X2lmKCgkNCksIFsoJDUpXSwKLS0jICAgW1skNl1tNF9kZWZpbmUo
W19tNF9jXSldKV0pLi4uX200X2MoW200X2lmKCgkbS0yKSwgWygkbS0xKV0sCi0tIyAgIFtbJG1d
bTRfZGVmaW5lKFtfbTRfY10pXSldKV9tNF9jKFtbJG0rMV1dX200X3BvcGRlZihbX200X2NdKSkK
LS0jIFdlIGludm9rZSBtNF91bnF1b3RlKF9tNF9jKCRAKSksIGZvciBjb25jYXRlbmF0aW9uIHdp
dGggbGF0ZXIgdGV4dC4KLS1tNF9kZWZpbmUoW19tNF9jb25kXSwKLS1bbTRfcHVzaGRlZihbX200
X2NdLCBbbTRfZGVmaW5lKFtfbTRfY10sCi0tICBfbTRfZGVmbihbbTRfdW5xdW90ZV0pKV1fbTRf
Zm9yKFsyXSwgbTRfZXZhbChbJCMgLyAzICogMyAtIDFdKSwgWzNdLAotLSAgWyQwXyhdLCBbKV0p
W19tNF9jKF1tNF9kcXVvdGUobTRfZHF1b3RlKAotLSAgWyRdbTRfZXZhbChbJCMgLyAzICogMyAr
IDFdKSkpW19tNF9wb3BkZWYoW19tNF9jXSkpXSltNF91bnF1b3RlKF9tNF9jKCRAKSldKQotLQot
LW00X2RlZmluZShbX200X2NvbmRfXSwKLS1bJDBfKG00X2RlY3IoWyQxXSksIFskMV0sIG00X2lu
Y3IoWyQxXSkpXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9jb25kX19dLAotLVtbX200X2MoW200X2lm
KCgkJDEpLCBbKCQkMildLCBbWyQkM11tNF9kZWZpbmUoW19tNF9jXSldKV0pXV0pCi0tCi0tIyBt
NF9icGF0c3Vic3RzKFNUUklORywgUkUxLCBTVUJTVDEsIFJFMiwgU1VCU1QyLCAuLi4pCi0tIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBt
NCBlcXVpdmFsZW50IG9mCi0tIwotLSMgICAkXyA9IFNUUklORzsKLS0jICAgcy9SRTEvU1VCU1Qx
L2c7Ci0tIyAgIHMvUkUyL1NVQlNUMi9nOwotLSMgICAuLi4KLS0jCi0tIyBtNF9icGF0c3Vic3Rz
IGFscmVhZHkgdmFsaWRhdGVkIGFuIG9kZCBudW1iZXIgb2YgYXJndW1lbnRzOyB3ZSBvbmx5Ci0t
IyBuZWVkIHRvIHNwZWVkIHVwIF9tNF9icGF0c3Vic3RzLiAgVG8gYXZvaWQgbmVzdGluZywgd2Ug
YnVpbGQgdGhlCi0tIyB0ZW1wb3JhcnkgX200X3A6Ci0tIyAgIG00X2RlZmluZShbX200X3BdLCBb
JDFdKW00X2RlZmluZShbX200X3BdLAotLSMgICBtNF9icGF0c3Vic3QobTRfZHF1b3RlKF9tNF9k
ZWZuKFtfbTRfcF0pKSwgWyQyXSwgWyQzXSkpbTRfZGVmaW5lKFtfbTRfcF0sCi0tIyAgIG00X2Jw
YXRzdWJzdChtNF9kcXVvdGUoX200X2RlZm4oW19tNF9wXSkpLCBbJDRdLCBbJDVdKSltNF9kZWZp
bmUoW19tNF9wXSwuLi4KLS0jICAgbTRfYnBhdHN1YnN0KG00X2RxdW90ZShfbTRfZGVmbihbX200
X3BdKSksIFskbS0xXSwgWyRtXSkpbTRfdW5xdW90ZSgKLS0jICAgX200X2RlZm4oW19tNF9wXSlf
bTRfcG9wZGVmKFtfbTRfcF0pKQotLW00X2RlZmluZShbX200X2JwYXRzdWJzdHNdLAotLVttNF9w
dXNoZGVmKFtfbTRfcF0sIFttNF9kZWZpbmUoW19tNF9wXSwKLS0gIF1tNF9kcXVvdGUoWyRdMSlb
KV1fbTRfZm9yKFszXSwgWyQjXSwgWzJdLCBbJDBfKF0sCi0tICBbKV0pW200X3VucXVvdGUoX200
X2RlZm4oW19tNF9wXSlfbTRfcG9wZGVmKFtfbTRfcF0pKV0pX200X3AoJEApXSkKLS0KLS1tNF9k
ZWZpbmUoW19tNF9icGF0c3Vic3RzX10sCi0tWyQwXyhtNF9kZWNyKFskMV0pLCBbJDFdKV0pCi0t
Ci0tbTRfZGVmaW5lKFtfbTRfYnBhdHN1YnN0c19fXSwKLS1bW200X2RlZmluZShbX200X3BdLAot
LW00X2JwYXRzdWJzdChtNF9kcXVvdGUoX200X2RlZm4oW19tNF9wXSkpLCBbJCQxXSwgWyQkMl0p
KV1dKQotLQotLSMgbTRfc2hpZnRuKE4sIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBS
ZXR1cm5zIC4uLiBzaGlmdGVkIE4gdGltZXMuICBVc2VmdWwgZm9yIHJlY3Vyc2l2ZSAidmFyYXJn
cyIgY29uc3RydWN0cy4KLS0jCi0tIyBtNF9zaGlmdG4gYWxyZWFkeSB2YWxpZGF0ZWQgYXJndW1l
bnRzOyB3ZSBvbmx5IG5lZWQgdG8gc3BlZWQgdXAKLS0jIF9tNF9zaGlmdG4uICBJZiBOIGlzIDMs
IHRoZW4gd2UgYnVpbGQgdGhlIHRlbXBvcmFyeSBfbTRfcywgZGVmaW5lZCBhcwotLSMgICAsWyQ1
XSxbJDZdLC4uLixbJG1dX200X3BvcGRlZihbX200X3NdKQotLSMgYmVmb3JlIGNhbGxpbmcgbTRf
c2hpZnQoX200X3MoJEApKS4KLS1tNF9kZWZpbmUoW19tNF9zaGlmdG5dLAotLVttNF9pZihtNF9p
bmNyKFskMV0pLCBbJCNdLCBbXSwgW200X3B1c2hkZWYoW19tNF9zXSwKLS0gIF9tNF9mb3IobTRf
ZXZhbChbJDEgKyAyXSksIFskI10sIFsxXSwKLS0gIFtbLF1tNF9kcXVvdGUoJF0sIFspXSlbX200
X3BvcGRlZihbX200X3NdKV0pbTRfc2hpZnQoX200X3MoJEApKV0pXSkKLS0KLS0jIG00X2RvKFNU
UklORywgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBUaGlzIG1hY3JvIGludm9rZXMg
YWxsIGl0cyBhcmd1bWVudHMgKGluIHNlcXVlbmNlLCBvZiBjb3Vyc2UpLiAgSXQgaXMKLS0jIHVz
ZWZ1bCBmb3IgbWFraW5nIHlvdXIgbWFjcm9zIG1vcmUgc3RydWN0dXJlZCBhbmQgcmVhZGFibGUg
YnkgZHJvcHBpbmcKLS0jIHVubmVjZXNzYXJ5IGRubCdzIGFuZCBoYXZlIHRoZSBtYWNyb3MgaW5k
ZW50ZWQgcHJvcGVybHkuCi0tIwotLSMgSGVyZSwgd2UgdXNlIHRoZSB0ZW1wb3JhcnkgbWFjcm8g
X200X2RvLCBkZWZpbmVkIGFzCi0tIyAgICQxW10kMltdLi4uW10kbltdX200X3BvcGRlZihbX200
X2RvXSkKLS1tNF9kZWZpbmUoW200X2RvXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbXSwKLS0gICAg
ICAgW200X3B1c2hkZWYoW18kMF0sIF9tNF9mb3IoWzFdLCBbJCNdLCBbMV0sCi0tCQkgICBbJF0s
IFtbW11dXSlbX200X3BvcGRlZihbXyQwXSldKV8kMCgkQCldKV0pCi0tCi0tIyBtNF9kcXVvdGVf
ZWx0KEFSR1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gQVJHUyBhcyBhbiB1
bnF1b3RlZCBsaXN0IG9mIGRvdWJsZS1xdW90ZWQgYXJndW1lbnRzLgotLSMKLS0jIF9tNF9mb3Jl
YWNoIHRvIHRoZSByZXNjdWUuCi0tbTRfZGVmaW5lKFttNF9kcXVvdGVfZWx0XSwKLS1bbTRfaWYo
WyQjXSwgWzBdLCBbXSwgW1tbJDFdXV9tNF9mb3JlYWNoKFssbTRfZHF1b3RlKF0sIFspXSwgJEAp
XSldKQotLQotLSMgbTRfcmV2ZXJzZShBUkdTKQotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMgT3V0
cHV0IEFSR1MgaW4gcmV2ZXJzZSBvcmRlci4KLS0jCi0tIyBJbnZva2UgX200X3IoJEApIHdpdGgg
dGhlIHRlbXBvcmFyeSBfbTRfciBidWlsdCBhcwotLSMgICBbJG1dLCBbJG0tMV0sIC4uLiwgWyQy
XSwgWyQxXV9tNF9wb3BkZWYoW19tNF9yXSkKLS1tNF9kZWZpbmUoW200X3JldmVyc2VdLAotLVtt
NF9pZihbJCNdLCBbMF0sIFtdLCBbJCNdLCBbMV0sIFtbJDFdXSwKLS1bbTRfcHVzaGRlZihbX200
X3JdLCBbWyQkI11dX200X2ZvcihtNF9kZWNyKFskI10pLCBbMV0sIFstMV0sCi0tICAgIFtbLCBd
bTRfZHF1b3RlKCRdLCBbKV0pW19tNF9wb3BkZWYoW19tNF9yXSldKV9tNF9yKCRAKV0pXSkKLS0K
LS0KLS0jIG00X21hcF9hcmdzX3BhaXIoRVhQUkVTU0lPTiwgW0VORC1FWFBSID0gRVhQUkVTU0lP
Tl0sIEFSRy4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFBlcmZvcm0gYSBwYWlyd2lzZSBncm91cGluZyBvZiBj
b25zZWN1dGl2ZSBBUkdzLCBieSBleHBhbmRpbmcKLS0jIEVYUFJFU1NJT04oW0FSRzFdLCBbQVJH
Ml0pLiAgSWYgdGhlcmUgYXJlIGFuIG9kZCBudW1iZXIgb2YgQVJHcywgdGhlCi0tIyBmaW5hbCBh
cmd1bWVudCBpcyBleHBhbmRlZCB3aXRoIEVORC1FWFBSKFtBUkduXSkuCi0tIwotLSMgQnVpbGQg
dGhlIHRlbXBvcmFyeSBtYWNybyBfbTRfbWFwX2FyZ3NfcGFpciwgd2l0aCB0aGUgJDIoWyRtKzFd
KQotLSMgb25seSBvdXRwdXQgaWYgJCMgaXMgb2RkOgotLSMgICAkMShbJDNdLCBbJDRdKVtdJDEo
WyQ1XSwgWyQ2XSlbXS4uLiQxKFskbS0xXSwKLS0jICAgWyRtXSlbXW00X2RlZmF1bHQoWyQyXSwg
WyQxXSkoWyRtKzFdKVtdX200X3BvcGRlZihbX200X21hcF9hcmdzX3BhaXJdKQotLW00X2RlZmlu
ZShbbTRfbWFwX2FyZ3NfcGFpcl0sCi0tW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDog
dG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAotLSAgICAgICBbJCNdLCBbMV0sIFttNF9mYXRhbChb
JDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCi0tICAgICAgIFskI10sIFsyXSwgW10s
Ci0tICAgICAgIFskI10sIFszXSwgW200X2RlZmF1bHQoWyQyXSwgWyQxXSkoWyQzXSlbXV0sCi0t
ICAgICAgIFttNF9wdXNoZGVmKFtfJDBdLCBfbTRfZm9yKFszXSwKLS0gICBtNF9ldmFsKFskIyAv
IDIgKiAyIC0gMV0pLCBbMl0sIFtfJDBfKF0sIFspXSlfJDBfZW5kKAotLSAgIFsxXSwgWzJdLCBb
JCNdKVtfbTRfcG9wZGVmKFtfJDBdKV0pXyQwKCRAKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9t
YXBfYXJnc19wYWlyX10sCi0tWyQwXyhbMV0sIFskMV0sIG00X2luY3IoWyQxXSkpXSkKLS0KLS1t
NF9kZWZpbmUoW19tNF9tYXBfYXJnc19wYWlyX19dLAotLVtbJCQxKFskJDJdLCBbJCQzXSlbXV1d
KQotLQotLW00X2RlZmluZShbX200X21hcF9hcmdzX3BhaXJfZW5kXSwKLS1bbTRfaWYobTRfZXZh
bChbJDMgJiAxXSksIFsxXSwgW1ttNF9kZWZhdWx0KFskJDJdLCBbJCQxXSkoWyQkM10pW11dXSld
KQotLQotLSMgbTRfam9pbihTRVAsIEFSRzEsIEFSRzIuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIFByb2R1Y2UgQVJHMVNFUEFSRzIuLi5TRVBBUkduLiAgQXZvaWQgYmFj
ay10by1iYWNrIFNFUCB3aGVuIGEgZ2l2ZW4gQVJHCi0tIyBpcyB0aGUgZW1wdHkgc3RyaW5nLiAg
Tm8gZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCBvbiBTRVAgb3IgQVJHcy4KLS0jCi0tIyBVc2UgYSBz
ZWxmLW1vZGlmeWluZyBzZXBhcmF0b3IsIHNpbmNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkKLS0j
IGFyZ3VtZW50cyBtaWdodCBiZSBza2lwcGVkIGJlZm9yZSBhIHNlcGFyYXRvciBpcyBmaXJzdCBw
cmludGVkLCBidXQKLS0jIGJlIGNhcmVmdWwgaWYgdGhlIHNlcGFyYXRvciBjb250YWlucyAkLiAg
X200X2ZvcmVhY2ggdG8gdGhlIHJlc2N1ZS4KLS1tNF9kZWZpbmUoW200X2pvaW5dLAotLVttNF9w
dXNoZGVmKFtfbTRfc2VwXSwgW200X2RlZmluZShbX200X3NlcF0sIF9tNF9kZWZuKFttNF9lY2hv
XSkpXSldZG5sCi0tW19tNF9mb3JlYWNoKFtfJDAoWyQxXSxdLCBbKV0sICRAKV9tNF9wb3BkZWYo
W19tNF9zZXBdKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfam9pbl0sCi0tW200X2lmKFskMl0sIFtd
LCBbXSwgW19tNF9zZXAoWyQxXSlbJDJdXSldKQotLQotLSMgbTRfam9pbmFsbChTRVAsIEFSRzEs
IEFSRzIuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFByb2R1Y2Ug
QVJHMVNFUEFSRzIuLi5TRVBBUkduLiAgQW4gZW1wdHkgQVJHIHJlc3VsdHMgaW4gYmFjay10by1i
YWNrIFNFUC4KLS0jIE5vIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgb24gU0VQIG9yIEFSR3MuCi0t
IwotLSMgQSBiaXQgZWFzaWVyIHRoYW4gbTRfam9pbi4gIF9tNF9mb3JlYWNoIHRvIHRoZSByZXNj
dWUuCi0tbTRfZGVmaW5lKFttNF9qb2luYWxsXSwKLS1bWyQyXW00X2lmKG00X2V2YWwoWyQjIDw9
IDJdKSwgWzFdLCBbXSwKLS0JICAgW19tNF9mb3JlYWNoKFskMV0sIFtdLCBtNF9zaGlmdCgkQCkp
XSldKQotLQotLSMgbTRfbGlzdF9jbXAoQSwgQikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBD
b21wYXJlIHRoZSB0d28gbGlzdHMgb2YgaW50ZWdlciBleHByZXNzaW9ucyBBIGFuZCBCLgotLSMK
LS0jIG00X2xpc3RfY21wIHRha2VzIGNhcmUgb2YgYW55IHNpZGUgZWZmZWN0czsgd2Ugb25seSBv
dmVycmlkZQotLSMgX200X2xpc3RfY21wX3Jhdywgd2hlcmUgd2UgY2FuIHNhZmVseSBleHBhbmQg
bGlzdHMgbXVsdGlwbGUgdGltZXMuCi0tIyBGaXJzdCwgaW5zZXJ0IHBhZGRpbmcgc28gdGhhdCBi
b3RoIGxpc3RzIGFyZSB0aGUgc2FtZSBsZW5ndGg7IHRoZQotLSMgdHJhaWxpbmcgKzAgaXMgbmVj
ZXNzYXJ5IHRvIGhhbmRsZSBhIG1pc3NpbmcgbGlzdC4gIE5leHQsIGNyZWF0ZSBhCi0tIyB0ZW1w
b3JhcnkgbWFjcm8gdG8gcGVyZm9ybSBwYWlyd2lzZSBjb21wYXJpc29ucyB1bnRpbCBhbiBpbmVx
dWFsaXR5Ci0tIyBpcyBmb3VuZC4gIEZvciBleGFtcGxlLCBtNF9saXN0X2NtcChbMV0sIFsxLDJd
KSBjcmVhdGVzIF9tNF9jbXAgYXMKLS0jICAgbTRfaWYobTRfZXZhbChbKCQxKSAhPSAoJDMpXSks
IFsxXSwgW200X2NtcChbJDFdLCBbJDNdKV0sCi0tIyAgICAgICAgIG00X2V2YWwoWygkMikgIT0g
KCQ0KV0pLCBbMV0sIFttNF9jbXAoWyQyXSwgWyQ0XSldLAotLSMgICAgICAgICBbMF1fbTRfcG9w
ZGVmKFtfbTRfY21wXSkpCi0tIyB0aGVuIGNhbGxzIF9tNF9jbXAoWzErMF0sIFswKjJdLCBbMV0s
IFsyKzBdKQotLW00X2RlZmluZShbX200X2xpc3RfY21wX3Jhd10sCi0tW200X2lmKFskMV0sIFsk
Ml0sIDAsCi0tICAgICAgIFtfbTRfbGlzdF9jbXAoJDErMF9tNF9saXN0X3BhZChtNF9jb3VudCgk
MSksIG00X2NvdW50KCQyKSksCi0tCQkgICAgICQyKzBfbTRfbGlzdF9wYWQobTRfY291bnQoJDIp
LCBtNF9jb3VudCgkMSkpKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9saXN0X3BhZF0sCi0tW200
X2lmKG00X2V2YWwoJDEgPCAkMiksIFsxXSwKLS0gICAgICAgW19tNF9mb3IobTRfaW5jcihbJDFd
KSwgWyQyXSwgWzFdLCBbLDAqXSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfbGlzdF9jbXBdLAot
LVttNF9wdXNoZGVmKFtfbTRfY21wXSwgW200X2lmKF1fbTRfZm9yKAotLSAgIFsxXSwgbTRfZXZh
bChbJCMgPj4gMV0pLCBbMV0sIFskMF8oXSwgWyxdbTRfZXZhbChbJCMgPj4gMV0pWyldKVsKLS0g
ICAgICBbMF1fbTRfcG9wZGVmKFtfbTRfY21wXSkpXSlfbTRfY21wKCRAKV0pCi0tCi0tbTRfZGVm
aW5lKFtfbTRfbGlzdF9jbXBfXSwKLS1bJDBfKFskMV0sIG00X2V2YWwoWyQxICsgJDJdKSldKQot
LQotLW00X2RlZmluZShbX200X2xpc3RfY21wX19dLAotLVtbbTRfZXZhbChbKCQkMSkgIT0gKCQk
MildKSwgWzFdLCBbbTRfY21wKFskJDFdLCBbJCQyXSldLAotLV1dKQotLQotLSMgbTRfbWF4KEVY
UFIsIC4uLikKLS0jIG00X21pbihFWFBSLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMg
UmV0dXJuIHRoZSBkZWNpbWFsIHZhbHVlIG9mIHRoZSBtYXhpbXVtIChvciBtaW5pbXVtKSBpbiBh
IHNlcmllcyBvZgotLSMgaW50ZWdlciBleHByZXNzaW9ucy4KLS0jCi0tIyBfbTRfZm9yZWFjaCB0
byB0aGUgcmVzY3VlOyB3ZSBvbmx5IG5lZWQgdG8gcmVwbGFjZSBfbTRfbWlubWF4LiAgSGVyZSwK
LS0jIHdlIG5lZWQgYSB0ZW1wb3JhcnkgbWFjcm8gdG8gdHJhY2sgdGhlIGJlc3QgYW5zd2VyIHNv
IGZhciwgc28gdGhhdAotLSMgdGhlIGZvcmVhY2ggZXhwcmVzc2lvbiBpcyB0cmFjdGFibGUuCi0t
bTRfZGVmaW5lKFtfbTRfbWlubWF4XSwKLS1bbTRfcHVzaGRlZihbX200X2Jlc3RdLCBtNF9ldmFs
KFskMl0pKV9tNF9mb3JlYWNoKAotLSAgW200X2RlZmluZShbX200X2Jlc3RdLCAkMShfbTRfYmVz
dCxdLCBbKSldLCBtNF9zaGlmdCgkQCkpXWRubAotLVtfbTRfYmVzdFtdX200X3BvcGRlZihbX200
X2Jlc3RdKV0pCi0tCi0tIyBtNF9zZXRfYWRkX2FsbChTRVQsIFZBTFVFLi4uKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEFkZCBlYWNoIFZBTFVFIGludG8gU0VULiAgVGhp
cyBpcyBPKG4pIGluIHRoZSBudW1iZXIgb2YgVkFMVUVzLCBhbmQKLS0jIGNhbiBiZSBmYXN0ZXIg
dGhhbiBjYWxsaW5nIG00X3NldF9hZGQgZm9yIGVhY2ggVkFMVUUuCi0tIwotLSMgX200X2ZvcmVh
Y2ggdG8gdGhlIHJlc2N1ZS4gIElmIG5vIGRlbGV0aW9ucyBoYXZlIG9jY3VycmVkLCB0aGVuCi0t
IyBhdm9pZCB0aGUgc3BlZWQgcGVuYWx0eSBvZiBtNF9zZXRfYWRkLgotLW00X2RlZmluZShbbTRf
c2V0X2FkZF9hbGxdLAotLVttNF9pZihbJCNdLCBbMF0sIFtdLCBbJCNdLCBbMV0sIFtdLAotLSAg
ICAgICBbbTRfZGVmaW5lKFtfbTRfc2V0X3NpemUoJDEpXSwgbTRfZXZhbChtNF9zZXRfc2l6ZShb
JDFdKQotLQkgICsgbTRfbGVuKF9tNF9mb3JlYWNoKG00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAo
JDEpXSwKLS0gIFtbbTRfc2V0X2FkZF1dLCBbW18kMF1dKVsoWyQxXSxdLCBbKV0sICRAKSkpKV0p
XSkKLS0KLS1tNF9kZWZpbmUoW19tNF9zZXRfYWRkX2FsbF0sCi0tW200X2lmZGVmKFtfbTRfc2V0
KFskMV0sJDIpXSwgW10sCi0tCSAgW200X2RlZmluZShbX200X3NldChbJDFdLCQyKV0sCi0tCQkg
ICAgIFsxXSltNF9wdXNoZGVmKFtfbTRfc2V0KFskMV0pXSwgWyQyXSktXSldKQotZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkv
bTRzdWdhci9tNHN1Z2FyLm00IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL200c3VnYXIubTQKLWRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAotaW5kZXggYmJkNjk1ODM2YTIuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvbTRzdWdhci5t
NAotKysrIC9kZXYvbnVsbAotQEAgLTEsMzMwOCArMCwwIEBACi0tZGl2ZXJ0KC0xKSMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAt
Ki0KLS0jIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEF1dG9jb25mLgotLSMgQmFzZSBNNCBsYXllci4K
LS0jIFJlcXVpcmVzIEdOVSBNNC4KLS0jCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNyBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0jIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEF1
dG9jb25mLiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUKLS0jIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotLSMgdGVybXMgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLS0jIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0j
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLS0jCi0tIyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBn
cmFudGVkIGFkZGl0aW9uYWwKLS0jIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgQXV0b2Nv
bmYgQ29uZmlndXJlIFNjcmlwdCBFeGNlcHRpb24sCi0tIyB2ZXJzaW9uIDMuMCwgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0tIwotLSMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0j
IGFuZCBhIGNvcHkgb2YgdGhlIEF1dG9jb25mIENvbmZpZ3VyZSBTY3JpcHQgRXhjZXB0aW9uIGFs
b25nIHdpdGgKLS0jIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlcyBDT1BZSU5HdjMgYW5kIENP
UFlJTkcuRVhDRVBUSU9OCi0tIyByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93
d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLQotLSMgV3JpdHRlbiBieSBBa2ltIERlbWFpbGxlLgot
LQotLSMgU2V0IHRoZSBxdW90ZXMsIHdoYXRldmVyIHRoZSBjdXJyZW50IHF1b3Rpbmcgc3lzdGVt
LgotLWNoYW5nZXF1b3RlKCkKLS1jaGFuZ2VxdW90ZShbLCBdKQotLQotLSMgU29tZSBvbGQgbTQn
cyBkb24ndCBzdXBwb3J0IG00ZXhpdC4gIEJ1dCB0aGV5IHByb3ZpZGUKLS0jIGVxdWl2YWxlbnQg
ZnVuY3Rpb25hbGl0eSBieSBjb3JlIGR1bXBpbmcgYmVjYXVzZSBvZiB0aGUKLS0jIGxvbmcgbWFj
cm9zIHdlIGRlZmluZS4KLS1pZmRlZihbX19nbnVfX10sICwKLS1bZXJycHJpbnQoTTRzdWdhciBy
ZXF1aXJlcyBHTlUgTTQuIEluc3RhbGwgaXQgYmVmb3JlIGluc3RhbGxpbmcgTTRzdWdhciBvcgot
LXNldCB0aGUgTTQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaXRzIGFic29sdXRlIGZpbGUgbmFt
ZS4pCi0tbTRleGl0KDIpXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICMjCi0tIyMgMS4gU2ltdWxhdGUgLS1wcmVmaXgtYnVpbHRpbnMuICAjIwotLSMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIG00X2RlZmluZQotLSMgbTRfZGVm
bgotLSMgbTRfdW5kZWZpbmUKLS1kZWZpbmUoW200X2RlZmluZV0sICAgZGVmbihbZGVmaW5lXSkp
Ci0tZGVmaW5lKFttNF9kZWZuXSwgICAgIGRlZm4oW2RlZm5dKSkKLS1kZWZpbmUoW200X3VuZGVm
aW5lXSwgZGVmbihbdW5kZWZpbmVdKSkKLS0KLS1tNF91bmRlZmluZShbZGVmaW5lXSkKLS1tNF91
bmRlZmluZShbZGVmbl0pCi0tbTRfdW5kZWZpbmUoW3VuZGVmaW5lXSkKLS0KLS0KLS0jIG00X2Nv
cHkoU1JDLCBEU1QpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVmaW5lIERTVCBhcyB0aGUg
ZGVmaW5pdGlvbiBvZiBTUkMuCi0tIyBXaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbjoKLS0j
IDEuIG00X2NvcHkoW2Zyb21dLCBbdG9dKQotLSMgMi4gbTRfZGVmaW5lKFt0b10sIFtmcm9tKCRA
KV0pCi0tIyBXZWxsLCBvYnZpb3VzbHkgMSBpcyBtb3JlIGV4cGVuc2l2ZSBpbiBzcGFjZS4gIE1h
eWJlIDIgaXMgbW9yZSBleHBlbnNpdmUKLS0jIGluIHRpbWUsIGJ1dCBiZWNhdXNlIG9mIHRoZSBz
cGFjZSBjb3N0IG9mIDEsIGl0J3Mgbm90IHRoYXQgb2J2aW91cy4KLS0jIE5ldmVydGhlbGVzcywg
b25lIGh1Z2UgZGlmZmVyZW5jZSBpcyB0aGUgaGFuZGxpbmcgb2YgYCQwJy4gIElmIGBmcm9tJwot
LSMgdXNlcyBgJDAnLCB0aGVuIHdpdGggMSwgYHRvJydzIGAkMCcgaXMgYHRvJywgd2hpbGUgaXQg
aXMgYGZyb20nIGluIDIuCi0tIyBUaGUgdXNlciB3b3VsZCBjZXJ0YWlubHkgcHJlZmVyIHRvIHNl
ZSBgdG8nLgotLSMKLS0jIFRoaXMgZGVmaW5pdGlvbiBpcyBpbiBlZmZlY3QgZHVyaW5nIG00c3Vn
YXIgaW5pdGlhbGl6YXRpb24sIHdoZW4KLS0jIHRoZXJlIGFyZSBubyBwdXNoZGVmIHN0YWNrczsg
bGF0ZXIgb24sIHdlIHJlZGVmaW5lIGl0IHRvIHNvbWV0aGluZwotLSMgbW9yZSBwb3dlcmZ1bCBm
b3IgYWxsIG90aGVyIGNsaWVudHMgdG8gdXNlLgotLW00X2RlZmluZShbbTRfY29weV0sCi0tW200
X2RlZmluZShbJDJdLCBtNF9kZWZuKFskMV0pKV0pCi0tCi0tCi0tIyBtNF9yZW5hbWUoU1JDLCBE
U1QpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZW5hbWUgdGhlIG1hY3JvIFNSQyB0byBE
U1QuCi0tbTRfZGVmaW5lKFttNF9yZW5hbWVdLAotLVttNF9jb3B5KFskMV0sIFskMl0pbTRfdW5k
ZWZpbmUoWyQxXSldKQotLQotLQotLSMgbTRfcmVuYW1lX200KE1BQ1JPLU5BTUUpCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJlbmFtZSBNQUNSTy1OQU1FIHRvIG00X01BQ1JPLU5B
TUUuCi0tbTRfZGVmaW5lKFttNF9yZW5hbWVfbTRdLAotLVttNF9yZW5hbWUoWyQxXSwgW200XyQx
XSldKQotLQotLQotLSMgbTRfY29weV91bm00KG00X01BQ1JPLU5BTUUpCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIENvcHkgbTRfTUFDUk8tTkFNRSB0byBNQUNSTy1OQU1FLgot
LW00X2RlZmluZShbbTRfY29weV91bm00XSwKLS1bbTRfY29weShbJDFdLCBtNF9icGF0c3Vic3Qo
WyQxXSwgW15tNF9cKC4qXCldLCBbW1wxXV0pKV0pCi0tCi0tCi0tIyBTb21lIG00IGludGVybmFs
cyBoYXZlIG5hbWVzIGNvbGxpZGluZyB3aXRoIHRva2VucyB3ZSBtaWdodCB1c2UuCi0tIyBSZW5h
bWUgdGhlbSBhYCBsYSBgbTQgLS1wcmVmaXgtYnVpbHRpbnMnLiAgQ29uZGl0aW9uYWxzIGZpcnN0
LCBzaW5jZQotLSMgc29tZSBzdWJzZXF1ZW50IHJlbmFtZXMgYXJlIGNvbmRpdGlvbmFsLgotLW00
X3JlbmFtZV9tNChbaWZkZWZdKQotLW00X3JlbmFtZShbaWZlbHNlXSwgW200X2lmXSkKLS0KLS1t
NF9yZW5hbWVfbTQoW2J1aWx0aW5dKQotLW00X3JlbmFtZV9tNChbY2hhbmdlY29tXSkKLS1tNF9y
ZW5hbWVfbTQoW2NoYW5nZXF1b3RlXSkKLS1tNF9pZmRlZihbY2hhbmdld29yZF0sZG5sIGNvbmRp
dGlvbmFsbHkgYXZhaWxhYmxlIGluIDEuNC54Ci0tW200X3VuZGVmaW5lKFtjaGFuZ2V3b3JkXSld
KQotLW00X3JlbmFtZV9tNChbZGVidWdmaWxlXSkKLS1tNF9yZW5hbWVfbTQoW2RlYnVnbW9kZV0p
Ci0tbTRfcmVuYW1lX200KFtkZWNyXSkKLS1tNF9yZW5hbWVfbTQoW2Rpdm51bV0pCi0tbTRfcmVu
YW1lX200KFtkdW1wZGVmXSkKLS1tNF9yZW5hbWVfbTQoW2VycnByaW50XSkKLS1tNF9yZW5hbWVf
bTQoW2VzeXNjbWRdKQotLW00X3JlbmFtZV9tNChbZXZhbF0pCi0tbTRfcmVuYW1lX200KFtmb3Jt
YXRdKQotLW00X3VuZGVmaW5lKFtpbmNsdWRlXSkKLS1tNF9yZW5hbWVfbTQoW2luY3JdKQotLW00
X3JlbmFtZV9tNChbaW5kZXhdKQotLW00X3JlbmFtZV9tNChbaW5kaXJdKQotLW00X3JlbmFtZV9t
NChbbGVuXSkKLS1tNF9yZW5hbWUoW200ZXhpdF0sIFttNF9leGl0XSkKLS1tNF91bmRlZmluZShb
bTR3cmFwXSkKLS1tNF9pZmRlZihbbWtzdGVtcF0sZG5sIGFkZGVkIGluIE00IDEuNC44Ci0tW200
X3JlbmFtZV9tNChbbWtzdGVtcF0pCi0tbTRfY29weShbbTRfbWtzdGVtcF0sIFttNF9tYWtldGVt
cF0pCi0tbTRfdW5kZWZpbmUoW21ha2V0ZW1wXSldLAotLVttNF9yZW5hbWVfbTQoW21ha2V0ZW1w
XSkKLS1tNF9jb3B5KFttNF9tYWtldGVtcF0sIFttNF9ta3N0ZW1wXSldKQotLW00X3JlbmFtZShb
cGF0c3Vic3RdLCBbbTRfYnBhdHN1YnN0XSkKLS1tNF9yZW5hbWVfbTQoW3BvcGRlZl0pCi0tbTRf
cmVuYW1lX200KFtwdXNoZGVmXSkKLS1tNF9yZW5hbWUoW3JlZ2V4cF0sIFttNF9icmVnZXhwXSkK
LS1tNF9yZW5hbWVfbTQoW3NoaWZ0XSkKLS1tNF91bmRlZmluZShbc2luY2x1ZGVdKQotLW00X3Jl
bmFtZV9tNChbc3Vic3RyXSkKLS1tNF9pZmRlZihbc3ltYm9sc10sZG5sIHByZXNlbnQgb25seSBp
biBhbHBoYS1xdWFsaXR5IDEuNG8KLS1bbTRfcmVuYW1lX200KFtzeW1ib2xzXSldKQotLW00X3Jl
bmFtZV9tNChbc3lzY21kXSkKLS1tNF9yZW5hbWVfbTQoW3N5c3ZhbF0pCi0tbTRfcmVuYW1lX200
KFt0cmFjZW9mZl0pCi0tbTRfcmVuYW1lX200KFt0cmFjZW9uXSkKLS1tNF9yZW5hbWVfbTQoW3Ry
YW5zbGl0XSkKLS0KLS0jIF9tNF9kZWZuKEFSRykKLS0jIC0tLS0tLS0tLS0tLS0KLS0jIF9tNF9k
ZWZuIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAtIGl0IGJ5cGFzc2VzIHRoZSB3cmFwcGVyLCBz
byBpdAotLSMgbXVzdCBvbmx5IGJlIHVzZWQgb24gb25lIGFyZ3VtZW50IGF0IGEgdGltZSwgYW5k
IG9ubHkgb24gbWFjcm9zCi0tIyBrbm93biB0byBiZSBkZWZpbmVkLiAgTWFrZSBzdXJlIHRoaXMg
c3RpbGwgd29ya3MgaWYgdGhlIHVzZXIgcmVuYW1lcwotLSMgbTRfZGVmbiBidXQgbm90IF9tNF9k
ZWZuLgotLW00X2NvcHkoW200X2RlZm5dLCBbX200X2RlZm5dKQotLQotLSMgX200X2RpdmVydF9y
YXcoTlVNKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgX200X2RpdmVydF9yYXcgaXMgZm9y
IGludGVybmFsIHVzZSBvbmx5LiAgVXNlIHRoaXMgaW5zdGVhZCBvZgotLSMgbTRfYnVpbHRpbihb
ZGl2ZXJ0XSwgTlVNKSwgc28gdGhhdCB0cmFjaW5nIGRpdmVyc2lvbiBmbG93IGlzIGVhc2llci4K
LS1tNF9yZW5hbWUoW2RpdmVydF0sIFtfbTRfZGl2ZXJ0X3Jhd10pCi0tCi0tIyBfbTRfcG9wZGVm
KEFSRy4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgX200X3BvcGRlZiBpcyBmb3IgaW50
ZXJuYWwgdXNlIG9ubHkgLSBpdCBieXBhc3NlcyB0aGUgd3JhcHBlciwgc28gaXQKLS0jIG11c3Qg
b25seSBiZSB1c2VkIG9uIG1hY3JvcyBrbm93biB0byBiZSBkZWZpbmVkLiAgTWFrZSBzdXJlIHRo
aXMKLS0jIHN0aWxsIHdvcmtzIGlmIHRoZSB1c2VyIHJlbmFtZXMgbTRfcG9wZGVmIGJ1dCBub3Qg
X200X3BvcGRlZi4KLS1tNF9jb3B5KFttNF9wb3BkZWZdLCBbX200X3BvcGRlZl0pCi0tCi0tIyBf
bTRfdW5kZWZpbmUoQVJHLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIF9tNF91bmRl
ZmluZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgLSBpdCBieXBhc3NlcyB0aGUgd3JhcHBlciwg
c28KLS0jIGl0IG11c3Qgb25seSBiZSB1c2VkIG9uIG1hY3JvcyBrbm93biB0byBiZSBkZWZpbmVk
LiAgTWFrZSBzdXJlIHRoaXMKLS0jIHN0aWxsIHdvcmtzIGlmIHRoZSB1c2VyIHJlbmFtZXMgbTRf
dW5kZWZpbmUgYnV0IG5vdCBfbTRfdW5kZWZpbmUuCi0tbTRfY29weShbbTRfdW5kZWZpbmVdLCBb
X200X3VuZGVmaW5lXSkKLS0KLS0jIF9tNF91bmRpdmVydChOVU0uLi4pCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgX200X3VuZGl2ZXJ0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSwgYW5k
IHNob3VsZCBhbHdheXMgYmUgZ2l2ZW4KLS0jIGFyZ3VtZW50cy4gIFVzZSB0aGlzIGluc3RlYWQg
b2YgbTRfYnVpbHRpbihbdW5kaXZlcnRdLCBOVU0uLi4pLCBzbwotLSMgdGhhdCB0cmFjaW5nIGRp
dmVyc2lvbiBmbG93IGlzIGVhc2llci4KLS1tNF9yZW5hbWUoW3VuZGl2ZXJ0XSwgW19tNF91bmRp
dmVydF0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIDIuIEVycm9yIG1l
c3NhZ2VzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0tIyBtNF9sb2Nh
dGlvbgotLSMgLS0tLS0tLS0tLS0KLS0jIE91dHB1dCB0aGUgY3VycmVudCBmaWxlLCBjb2xvbiwg
YW5kIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyLgotLW00X2RlZmluZShbbTRfbG9jYXRpb25dLAot
LVtfX2ZpbGVfXzpfX2xpbmVfX10pCi0tCi0tCi0tIyBtNF9lcnJwcmludG4oTVNHKQotLSMgLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIFNhbWUgYXMgYGVycnByaW50JywgYnV0IHdpdGggdGhlIG1pc3Np
bmcgZW5kIG9mIGxpbmUuCi0tbTRfZGVmaW5lKFttNF9lcnJwcmludG5dLAotLVttNF9lcnJwcmlu
dChbJDEKLS1dKV0pCi0tCi0tCi0tIyBtNF93YXJuaW5nKE1TRykKLS0jIC0tLS0tLS0tLS0tLS0t
LQotLSMgV2FybiB0aGUgdXNlci4KLS1tNF9kZWZpbmUoW200X3dhcm5pbmddLAotLVttNF9lcnJw
cmludG4obTRfbG9jYXRpb25bOiB3YXJuaW5nOiAkMV0pXSkKLS0KLS0KLS0jIG00X2ZhdGFsKE1T
RywgW0VYSVQtU1RBVFVTXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEZh
dGFsIHRoZSB1c2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDopCi0tbTRfZGVmaW5lKFttNF9mYXRhbF0sCi0tW200X2VycnByaW50bihtNF9s
b2NhdGlvbls6IGVycm9yOiAkMV0KLS1tNF9leHBhbnNpb25fc3RhY2spbTRfZXhpdChtNF9pZihb
JDJdLCwgMSwgWyQyXSkpXSkKLS0KLS0KLS0jIG00X2Fzc2VydChFWFBSRVNTSU9OLCBbRVhJVC1T
VEFUVVMgPSAxXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS0jIFRoaXMgbWFjcm8gZW5zdXJlcyB0aGF0IEVYUFJFU1NJT04gZXZhbHVhdGVzIHRvIHRydWUs
IGFuZCBleGl0cyBpZgotLSMgRVhQUkVTU0lPTiBldmFsdWF0ZXMgdG8gZmFsc2UuCi0tbTRfZGVm
aW5lKFttNF9hc3NlcnRdLAotLVttNF9pZihtNF9ldmFsKFskMV0pLCAwLAotLSAgICAgICBbbTRf
ZmF0YWwoW2Fzc2VydCBmYWlsZWQ6ICQxXSwgWyQyXSldKV0pCi0tCi0tCi0tCi0tIyMgLS0tLS0t
LS0tLS0tLSAjIwotLSMjIDMuIFdhcm5pbmdzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tICMjCi0t
Ci0tCi0tIyBfbTRfd2FybihDQVRFR09SWSwgTUVTU0FHRSwgW1NUQUNLLVRSQUNFXSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUmVwb3J0IGEgTUVT
U0FHRSB0byB0aGUgdXNlciBpZiB0aGUgQ0FURUdPUlkgb2Ygd2FybmluZ3MgaXMgZW5hYmxlZC4K
LS0jIFRoaXMgaXMgZm9yIHRyYWNlcyBvbmx5LgotLSMgSWYgcHJlc2VudCwgU1RBQ0stVFJBQ0Ug
aXMgYSBcbi1zZXBhcmF0ZWQgbGlzdCBvZiAiTE9DQVRJT046IE1FU1NBR0UiLAotLSMgd2hlcmUg
dGhlIGxhc3QgbGluZSAoYW5kIG5vIG90aGVyKSBlbmRzIHdpdGggInRoZSB0b3AgbGV2ZWwiLgot
LSMKLS0jIFdpdGhpbiBtNCwgdGhlIG1hY3JvIGlzIGEgbm8tb3AuICBUaGlzIG1hY3JvIHJlYWxs
eSBtYXR0ZXJzCi0tIyB3aGVuIGF1dG9tNHRlIHBvc3QtcHJvY2Vzc2VzIHRoZSB0cmFjZSBvdXRw
dXQuCi0tbTRfZGVmaW5lKFtfbTRfd2Fybl0sIFtdKQotLQotLQotLSMgbTRfd2FybihDQVRFR09S
WSwgTUVTU0FHRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXBvcnQgYSBN
RVNTQUdFIHRvIHRoZSB1c2VyIGlmIHRoZSBDQVRFR09SWSBvZiB3YXJuaW5ncyBpcyBlbmFibGVk
LgotLW00X2RlZmluZShbbTRfd2Fybl0sCi0tW19tNF93YXJuKFskMV0sIFskMl0sCi0tbTRfaWZk
ZWYoW19tNF9leHBhbnNpb25fc3RhY2tdLCBbbTRfZXhwYW5zaW9uX3N0YWNrXSkpXSkKLS0KLS0K
LS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgNC4gRmlsZSBpbmNsdXNpb24uICAj
IwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIFdlIGFsc28gd2FudCB0byBu
ZXV0cmFsaXplIGluY2x1ZGUgKGFuZCBzaW5jbHVkZSBmb3Igc3ltbWV0cnkpLAotLSMgYnV0IHdl
IHdhbnQgdG8gZXh0ZW5kIHRoZW0gc2xpZ2h0bHk6IHdhcm4gd2hlbiBhIGZpbGUgaXMgaW5jbHVk
ZWQKLS0jIHNldmVyYWwgdGltZXMuICBUaGlzIGlzLCBpbiBnZW5lcmFsLCBhIGRhbmdlcm91cyBv
cGVyYXRpb24sIGJlY2F1c2UKLS0jIHRvbyBtYW55IHBlb3BsZSBmb3JnZXQgdG8gcXVvdGUgdGhl
IGZpcnN0IGFyZ3VtZW50IG9mIG00X2RlZmluZS4KLS0jCi0tIyBGb3IgaW5zdGFuY2UgaW4gdGhl
IGZvbGxvd2luZyBjYXNlOgotLSMgICBtNF9kZWZpbmUoZm9vLCBbYmFyXSkKLS0jIHRoZW4gYSBz
ZWNvbmQgcmVhZGluZyB3aWxsIHR1cm4gaW50bwotLSMgICBtNF9kZWZpbmUoYmFyLCBbYmFyXSkK
LS0jIHdoaWNoIGlzIGNlcnRhaW5seSBub3Qgd2hhdCB3YXMgbWVhbnQuCi0tCi0tIyBtNF9pbmNs
dWRlX3VuaXF1ZShGSUxFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlY2xhcmUg
dGhhdCB0aGUgRklMRSB3YXMgbG9hZGluZzsgYW5kIHdhcm4gaWYgaXQgaGFzIGFscmVhZHkKLS0j
IGJlZW4gaW5jbHVkZWQuCi0tbTRfZGVmaW5lKFttNF9pbmNsdWRlX3VuaXF1ZV0sCi0tW200X2lm
ZGVmKFttNF9pbmNsdWRlKCQxKV0sCi0tCSAgW200X3dhcm4oW3N5bnRheF0sIFtmaWxlIGAkMScg
aW5jbHVkZWQgc2V2ZXJhbCB0aW1lc10pXSlkbmwKLS1tNF9kZWZpbmUoW200X2luY2x1ZGUoJDEp
XSldKQotLQotLQotLSMgbTRfaW5jbHVkZShGSUxFKQotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMg
TGlrZSB0aGUgYnVpbHRpbiBpbmNsdWRlLCBidXQgd2FybnMgYWdhaW5zdCBtdWx0aXBsZSBpbmNs
dXNpb25zLgotLW00X2RlZmluZShbbTRfaW5jbHVkZV0sCi0tW200X2luY2x1ZGVfdW5pcXVlKFsk
MV0pZG5sCi0tbTRfYnVpbHRpbihbaW5jbHVkZV0sIFskMV0pXSkKLS0KLS0KLS0jIG00X3NpbmNs
dWRlKEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgTGlrZSB0aGUgYnVpbHRpbiBzaW5j
bHVkZSwgYnV0IHdhcm5zIGFnYWluc3QgbXVsdGlwbGUgaW5jbHVzaW9ucy4KLS1tNF9kZWZpbmUo
W200X3NpbmNsdWRlXSwKLS1bbTRfaW5jbHVkZV91bmlxdWUoWyQxXSlkbmwKLS1tNF9idWlsdGlu
KFtzaW5jbHVkZV0sIFskMV0pXSkKLS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKLS0jIyA1LiBBZGRpdGlvbmFsIGJyYW5jaGluZyBjb25zdHJ1Y3Rz
LiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0j
IEJvdGggYG00X2lmdmFsJyBhbmQgYG00X2lmc2V0JyB0ZXN0cyBhZ2FpbnN0IHRoZSBlbXB0eSBz
dHJpbmcuICBUaGUKLS0jIGRpZmZlcmVuY2UgaXMgdGhhdCBgbTRfaWZzZXQnIGlzIHNwZWNpYWxp
emVkIG9uIG1hY3Jvcy4KLS0jCi0tIyBJbiBjYXNlIG9mIGFyZ3VtZW50cyBvZiBtYWNyb3MsIGVn
LiAkMSwgaXQgbWFrZXMgbGl0dGxlIGRpZmZlcmVuY2UuCi0tIyBJbiB0aGUgY2FzZSBvZiBhIG1h
Y3JvIGBGT08nLCB5b3UgZG9uJ3Qgd2FudCB0byBjaGVjayBgbTRfaWZ2YWwoRk9PLAotLSMgVFJV
RSknLCBiZWNhdXNlIGlmIGBGT08nIGV4cGFuZHMgd2l0aCBjb21tYXMsIHRoZXJlIGlzIGEgc2hp
ZnRpbmcgb2YKLS0jIHRoZSBhcmd1bWVudHMuICBTbyB5b3Ugd2FudCB0byBydW4gYG00X2lmdmFs
KFtGT09dKScsIGJ1dCB0aGVuIHlvdSBqdXN0Ci0tIyBjb21wYXJlIHRoZSAqc3RyaW5nKiBgRk9P
JyBhZ2FpbnN0IGAnLCB3aGljaCwgb2YgY291cnNlIGZhaWxzLgotLSMKLS0jIFNvIHlvdSB3YW50
IHRoZSB2YXJpYXRpb24gYG00X2lmc2V0JyB0aGF0IGV4cGVjdHMgYSBtYWNybyBuYW1lIGFzICQx
LgotLSMgSWYgdGhpcyBtYWNybyBpcyBib3RoIGRlZmluZWQgYW5kIGRlZmluZWQgdG8gYSBub24g
ZW1wdHkgdmFsdWUsIHRoZW4KLS0jIGl0IHJ1bnMgVFJVRSwgZXRjLgotLQotLQotLSMgbTRfaWZi
bGFuayhDT05ELCBbSUYtQkxBTktdLCBbSUYtVEVYVF0pCi0tIyBtNF9pZm5ibGFuayhDT05ELCBb
SUYtVEVYVF0sIFtJRi1CTEFOS10pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBJZiBDT05EIGlzIGVtcHR5LCBvciBjb25zaXN0cyBvbmx5IG9mIGJsYW5r
cyAoc3BhY2UsIHRhYiwgbmV3bGluZSksCi0tIyB0aGVuIGV4cGFuZCBJRi1CTEFOSywgb3RoZXJ3
aXNlIGV4cGFuZCBJRi1URVhULiAgVGhpcyBkaWZmZXJzIGZyb20KLS0jIG00X2lmdmFsIG9ubHkg
aWYgQ09ORCBoYXMganVzdCB3aGl0ZXNwYWNlLCBidXQgaXQgaGVscHMgb3B0aW1pemUgaW4KLS0j
IHNwaXRlIG9mIHVzZXJzIHdobyBtaXN0YWtlbmx5IGxlYXZlIHRyYWlsaW5nIHNwYWNlIGFmdGVy
IHdoYXQgdGhleQotLSMgdGhvdWdodCB3YXMgYW4gZW1wdHkgYXJndW1lbnQ6Ci0tIyAgIG1hY3Jv
KAotLSMgICAgICAgICBbXQotLSMgICAgICAgICkKLS0jCi0tIyBXcml0aW5nIG9uZSBtYWNybyBp
biB0ZXJtcyBvZiB0aGUgb3RoZXIgY2F1c2VzIGV4dHJhIG92ZXJoZWFkLCBzbwotLSMgd2UgaW5s
aW5lIGJvdGggZGVmaW5pdGlvbnMuCi0tbTRfZGVmaW5lKFttNF9pZmJsYW5rXSwKLS1bbTRfaWYo
bTRfdHJhbnNsaXQoW1skMV1dLCAgWyBdWwldWwotLV0pLCBbXSwgWyQyXSwgWyQzXSldKQotLQot
LW00X2RlZmluZShbbTRfaWZuYmxhbmtdLAotLVttNF9pZihtNF90cmFuc2xpdChbWyQxXV0sICBb
IF1bCV1bCi0tXSksIFtdLCBbJDNdLCBbJDJdKV0pCi0tCi0tCi0tIyBtNF9pZnZhbChDT05ELCBb
SUYtVFJVRV0sIFtJRi1GQUxTRV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBJZiBDT05EIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCBleHBhbmQgSUYtVFJV
RSwgb3RoZXJ3aXNlIElGLUZBTFNFLgotLSMgQ29tcGFyYWJsZSB0byBtNF9pZmRlZi4KLS1tNF9k
ZWZpbmUoW200X2lmdmFsXSwKLS1bbTRfaWYoWyQxXSwgW10sIFskM10sIFskMl0pXSkKLS0KLS0K
LS0jIG00X24oVEVYVCkKLS0jIC0tLS0tLS0tLS0KLS0jIElmIFRFWFQgaXMgbm90IGVtcHR5LCBy
ZXR1cm4gVEVYVCBhbmQgYSBuZXcgbGluZSwgb3RoZXJ3aXNlIG5vdGhpbmcuCi0tbTRfZGVmaW5l
KFttNF9uXSwKLS1bbTRfaWYoWyQxXSwKLS0gICAgICAgW10sIFtdLAotLQkgICBbJDEKLS1dKV0p
Ci0tCi0tCi0tIyBtNF9pZnZhbG4oQ09ORCwgW0lGLVRSVUVdLCBbSUYtRkFMU0VdKQotLSMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNhbWUgYXMgYG00X2lmdmFs
JywgYnV0IGFkZCBhbiBleHRyYSBuZXdsaW5lIHRvIElGLVRSVUUgb3IgSUYtRkFMU0UKLS0jIHVu
bGVzcyB0aGF0IGFyZ3VtZW50IGlzIGVtcHR5LgotLW00X2RlZmluZShbbTRfaWZ2YWxuXSwKLS1b
bTRfaWYoWyQxXSwKLS0gICAgICAgW10sICAgW200X24oWyQzXSldLAotLQkgICAgIFttNF9uKFsk
Ml0pXSldKQotLQotLQotLSMgbTRfaWZzZXQoTUFDUk8sIFtJRi1UUlVFXSwgW0lGLUZBTFNFXSkK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiBNQUNSTyBo
YXMgbm8gZGVmaW5pdGlvbiwgb3Igb2YgaXRzIGRlZmluaXRpb24gaXMgdGhlIGVtcHR5IHN0cmlu
ZywKLS0jIGV4cGFuZCBJRi1GQUxTRSwgb3RoZXJ3aXNlIElGLVRSVUUuCi0tbTRfZGVmaW5lKFtt
NF9pZnNldF0sCi0tW200X2lmZGVmKFskMV0sCi0tCSAgW200X2lmdmFsKF9tNF9kZWZuKFskMV0p
LCBbJDJdLCBbJDNdKV0sCi0tCSAgWyQzXSldKQotLQotLQotLSMgbTRfaWZuZGVmKE5BTUUsIFtJ
Ri1OT1QtREVGSU5FRF0sIFtJRi1ERUZJTkVEXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFttNF9pZm5kZWZdLAotLVttNF9p
ZmRlZihbJDFdLCBbJDNdLCBbJDJdKV0pCi0tCi0tCi0tIyBtNF9jYXNlKFNXSVRDSCwgVkFMMSwg
SUYtVkFMMSwgVkFMMiwgSUYtVkFMMiwgLi4uLCBERUZBVUxUKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIG00IGVxdWl2
YWxlbnQgb2YKLS0jIHN3aXRjaCAoU1dJVENIKQotLSMgewotLSMgICBjYXNlIFZBTDE6Ci0tIyAg
ICAgSUYtVkFMMTsKLS0jICAgICBicmVhazsKLS0jICAgY2FzZSBWQUwyOgotLSMgICAgIElGLVZB
TDI7Ci0tIyAgICAgYnJlYWs7Ci0tIyAgIC4uLgotLSMgICBkZWZhdWx0OgotLSMgICAgIERFRkFV
TFQ7Ci0tIyAgICAgYnJlYWs7Ci0tIyB9LgotLSMgQWxsIHRoZSB2YWx1ZXMgYXJlIG9wdGlvbmFs
LCBhbmQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUKLS0jIHN5bWJvbHMgcHJvcGVybHkg
cXVvdGVkLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBh
ZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFttNF9jYXNlXSwKLS1bbTRfaWYoWyQj
XSwgMCwgW10sCi0tICAgICAgIFskI10sIDEsIFtdLAotLSAgICAgICBbJCNdLCAyLCBbJDJdLAot
LSAgICAgICBbJDFdLCBbJDJdLCBbJDNdLAotLSAgICAgICBbJDAoWyQxXSwgbTRfc2hpZnQzKCRA
KSldKV0pCi0tCi0tCi0tIyBtNF9ibWF0Y2goU1dJVENILCBSRTEsIFZBTDEsIFJFMiwgVkFMMiwg
Li4uLCBERUZBVUxUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIG00IGVxdWl2YWxlbnQgb2YKLS0jCi0tIyBpZiAoU1dJVENIID1+
IFJFMSkKLS0jICAgVkFMMTsKLS0jIGVsaWYgKFNXSVRDSCA9fiBSRTIpCi0tIyAgIFZBTDI7Ci0t
IyBlbGlmIC4uLgotLSMgICAuLi4KLS0jIGVsc2UKLS0jICAgREVGQVVMVAotLSMKLS0jIEFsbCB0
aGUgdmFsdWVzIGFyZSBvcHRpb25hbCwgYW5kIHRoZSBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZl
IHN5bWJvbHMKLS0jIHByb3Blcmx5IHF1b3RlZC4KLS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNo
Lm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShb
bTRfYm1hdGNoXSwKLS1bbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1
bWVudHM6ICQjXSldLAotLSAgICAgICBbJCNdLCAxLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFy
Z3VtZW50czogJCM6ICQxXSldLAotLSAgICAgICBbJCNdLCAyLCBbJDJdLAotLSAgICAgICBbbTRf
aWYobTRfYnJlZ2V4cChbJDFdLCBbJDJdKSwgLTEsIFskMChbJDFdLCBtNF9zaGlmdDMoJEApKV0s
Ci0tCSAgICAgIFskM10pXSldKQotLQotLSMgbTRfYXJnbihOLCBBUkdTLi4uKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgRXh0cmFjdCBhcmd1bWVudCBOIChncmVhdGVyIHRoYW4gMCkgZnJv
bSBBUkdTLiAgRXhhbXBsZToKLS0jICAgbTRfZGVmaW5lKFtiXSwgW0JdKQotLSMgICBtNF9hcmdu
KFsyXSwgW2FdLCBbYl0sIFtjXSkgPT4gYgotLSMKLS0jIFJhdGhlciB0aGFuIHVzaW5nIG00X2Nh
cihtNF9zaGlmdG4oWyQxXSwgJEApKSwgd2UgZXhwbG9pdCB0aGUgZmFjdCB0aGF0Ci0tIyBHTlUg
bTQgY2FuIGRpcmVjdGx5IHJlZmVyZW5jZSBhbnkgYXJndW1lbnQsIHRocm91Z2ggYW4gaW5kaXJl
Y3QgbWFjcm8uCi0tbTRfZGVmaW5lKFttNF9hcmduXSwKLS1bbTRfYXNzZXJ0KFswIDwgJDFdKV1k
bmwKLS1bbTRfcHVzaGRlZihbXyQwXSwgW19tNF9wb3BkZWYoW18kMF0pXW00X2RxdW90ZShbJF1t
NF9pbmNyKFskMV0pKSlfJDAoJEApXSkKLS0KLS0KLS0jIG00X2NhcihBUkdTLi4uKQotLSMgbTRf
Y2RyKEFSR1MuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIE1hbmlwdWxhdGUgbTQgbGlzdHMu
ICBtNF9jYXIgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQuICBtNF9jZHIKLS0jIGJ1bmRsZXMg
YWxsIGJ1dCB0aGUgZmlyc3QgYXJndW1lbnQgaW50byBhIHF1b3RlZCBsaXN0LiAgVGhlc2UgdHdv
Ci0tIyBtYWNyb3MgYXJlIGdlbmVyYWxseSB1c2VkIHdpdGggbGlzdCBhcmd1bWVudHMsIHdpdGgg
cXVvdGluZyByZW1vdmVkCi0tIyB0byBicmVhayB0aGUgbGlzdCBpbnRvIG11bHRpcGxlIG00IEFS
R1MuCi0tbTRfZGVmaW5lKFttNF9jYXJdLCBbWyQxXV0pCi0tbTRfZGVmaW5lKFttNF9jZHJdLAot
LVttNF9pZihbJCNdLCAwLCBbbTRfZmF0YWwoWyQwOiBjYW5ub3QgYmUgY2FsbGVkIHdpdGhvdXQg
YXJndW1lbnRzXSldLAotLSAgICAgICBbJCNdLCAxLCBbXSwKLS0gICAgICAgW200X2RxdW90ZSht
NF9zaGlmdCgkQCkpXSldKQotLQotLSMgX200X2NkcihBUkdTLi4uKQotLSMgLS0tLS0tLS0tLS0t
LS0tLQotLSMgTGlrZSBtNF9jZHIsIGV4Y2VwdCBpbmNsdWRlIGEgbGVhZGluZyBjb21tYSB1bmxl
c3Mgb25seSBvbmUgYXJndW1lbnQKLS0jIHJlbWFpbnMuICBXaHk/ICBCZWNhdXNlIGNvbXBhcmlu
ZyBhIGxhcmdlIGxpc3QgYWdhaW5zdCBbXSBpcyBtb3JlCi0tIyBleHBlbnNpdmUgaW4gZXhwYW5z
aW9uIHRpbWUgdGhhbiBjb21wYXJpbmcgdGhlIG51bWJlciBvZiBhcmd1bWVudHM7IHNvCi0tIyBf
bTRfY2RyIGNhbiBiZSB1c2VkIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGVu
IGl0IGlzIHRpbWUKLS0jIHRvIGVuZCByZWN1cnNpb24uCi0tbTRfZGVmaW5lKFtfbTRfY2RyXSwK
LS1bbTRfaWYoWyQjXSwgMSwgW10sCi0tICAgICAgIFssIG00X2RxdW90ZShtNF9zaGlmdCgkQCkp
XSldKQotLQotLQotLQotLSMgbTRfY29uZChURVNUMSwgVkFMMSwgSUYtVkFMMSwgVEVTVDIsIFZB
TDIsIElGLVZBTDIsIC4uLiwgW0RFRkFVTFRdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU2ltaWxhciB0
byBtNF9pZiwgZXhjZXB0IHRoYXQgZWFjaCBURVNUIGlzIGV4cGFuZGVkIHdoZW4gZW5jb3VudGVy
ZWQuCi0tIyBJZiB0aGUgZXhwYW5zaW9uIG9mIFRFU1RuIG1hdGNoZXMgdGhlIHN0cmluZyBWQUxu
LCB0aGUgcmVzdWx0IGlzIElGLVZBTG4uCi0tIyBUaGUgcmVzdWx0IGlzIERFRkFVTFQgaWYgbm8g
dGVzdHMgcGFzc2VkLiAgVGhpcyBtYWNybyBhbGxvd3MKLS0jIHNob3J0LWNpcmN1aXRpbmcgb2Yg
ZXhwZW5zaXZlIHRlc3RzLCB3aGVyZSBpdCBwYXlzIHRvIGFycmFuZ2UgcXVpY2sKLS0jIGZpbHRl
ciB0ZXN0cyB0byBydW4gZmlyc3QuCi0tIwotLSMgRm9yIGFuIGV4YW1wbGUsIGNvbnNpZGVyIGEg
cHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgX0FTX1FVT1RFX0lGRUxTRToKLS0jCi0tIyAgICBt
NF9pZihtNF9pbmRleChbJDFdLCBbXF0pLCBbLTFdLCBbJDJdLAotLSMgICAgICAgICAgbTRfZXZh
bChtNF9pbmRleChbJDFdLCBbXFxdKSA+PSAwKSwgWzFdLCBbJDJdLAotLSMgICAgICAgICAgbTRf
ZXZhbChtNF9pbmRleChbJDFdLCBbXCRdKSA+PSAwKSwgWzFdLCBbJDJdLAotLSMgICAgICAgICAg
bTRfZXZhbChtNF9pbmRleChbJDFdLCBbXGBdKSA+PSAwKSwgWzFdLCBbJDNdLAotLSMgICAgICAg
ICAgbTRfZXZhbChtNF9pbmRleChbJDFdLCBbXCJdKSA+PSAwKSwgWzFdLCBbJDNdLAotLSMgICAg
ICAgICAgWyQyXSkKLS0jCi0tIyBIZXJlLCBtNF9pbmRleCBpcyBjb21wdXRlZCA1IHRpbWVzLCBh
bmQgbTRfZXZhbCA0LCBldmVuIGlmICQxIGNvbnRhaW5zCi0tIyBubyBiYWNrc2xhc2guICBJdCBp
cyBtb3JlIGVmZmljaWVudCB0byBkbzoKLS0jCi0tIyAgICBtNF9jb25kKFttNF9pbmRleChbJDFd
LCBbXF0pXSwgWy0xXSwgWyQyXSwKLS0jICAgICAgICAgICAgW200X2V2YWwobTRfaW5kZXgoWyQx
XSwgW1xcXSkgPj0gMCldLCBbMV0sIFskMl0sCi0tIyAgICAgICAgICAgIFttNF9ldmFsKG00X2lu
ZGV4KFskMV0sIFtcJF0pID49IDApXSwgWzFdLCBbJDJdLAotLSMgICAgICAgICAgICBbbTRfZXZh
bChtNF9pbmRleChbJDFdLCBbXGBdKSA+PSAwKV0sIFsxXSwgWyQzXSwKLS0jICAgICAgICAgICAg
W200X2V2YWwobTRfaW5kZXgoWyQxXSwgW1wiXSkgPj0gMCldLCBbMV0sIFskM10sCi0tIyAgICAg
ICAgICAgIFskMl0pCi0tIwotLSMgSW4gdGhlIGNvbW1vbiBjYXNlIG9mICQxIHdpdGggbm8gYmFj
a3NsYXNoLCBvbmx5IG9uZSBtNF9pbmRleCBleHBhbnNpb24KLS0jIG9jY3VycywgYW5kIG00X2V2
YWwgaXMgYXZvaWRlZCBhbHRvZ2V0aGVyLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQg
aW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFttNF9j
b25kXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBjYW5ub3QgYmUgY2FsbGVk
IHdpdGhvdXQgYXJndW1lbnRzXSldLAotLSAgICAgICBbJCNdLCBbMV0sIFskMV0sCi0tICAgICAg
IG00X2V2YWwoWyQjICUgM10pLCBbMl0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYW4gYXJndW1l
bnRdKV0sCi0tICAgICAgIFtfJDAoJEApXSldKQotLQotLW00X2RlZmluZShbX200X2NvbmRdLAot
LVttNF9pZigoJDEpLCBbKCQyKV0sIFskM10sCi0tICAgICAgIFskI10sIFszXSwgW10sCi0tICAg
ICAgIFskI10sIFs0XSwgWyQ0XSwKLS0gICAgICAgWyQwKG00X3NoaWZ0MygkQCkpXSldKQotLQot
LQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyA2
LiBFbmhhbmNlZCB2ZXJzaW9uIG9mIHNvbWUgcHJpbWl0aXZlcy4gICMjCi0tIyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgbTRfYnBhdHN1YnN0cyhT
VFJJTkcsIFJFMSwgU1VCU1QxLCBSRTIsIFNVQlNUMiwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgbTQgZXF1aXZhbGVudCBv
ZgotLSMKLS0jICAgJF8gPSBTVFJJTkc7Ci0tIyAgIHMvUkUxL1NVQlNUMS9nOwotLSMgICBzL1JF
Mi9TVUJTVDIvZzsKLS0jICAgLi4uCi0tIwotLSMgQWxsIHRoZSB2YWx1ZXMgYXJlIG9wdGlvbmFs
LCBhbmQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9scwotLSMgcHJvcGVybHkg
cXVvdGVkLgotLSMKLS0jIEkgd291bGQgaGF2ZSBsaWtlZCB0byBuYW1lIHRoaXMgbWFjcm8gYG00
X2JwYXRzdWJzdCcsIHVuZm9ydHVuYXRlbHksCi0tIyBkdWUgdG8gcXVvdGF0aW9uIHByb2JsZW1z
LCBJIG5lZWQgdG8gZG91YmxlIHF1b3RlICQxIGJlbG93LCB0aGVyZWZvcmUKLS0jIHRoZSBhbmNo
b3JzIGFyZSBicm9rZW4gOiggIEkgY2FuJ3QgbGV0IHVzZXJzIGJlIHRyYXBwZWQgYnkgdGhhdC4K
LS0jCi0tIyBSZWNhbGwgdGhhdCBtNF9zaGlmdDMgYWx3YXlzIHJlc3VsdHMgaW4gYW4gYXJndW1l
bnQuICBIZW5jZSwgd2UgbmVlZAotLSMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIGZpbmFsIGRl
bGV0aW9uIHZzLiBlbmRpbmcgcmVjdXJzaW9uLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gu
bTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFtt
NF9icGF0c3Vic3RzXSwKLS1bbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBh
cmd1bWVudHM6ICQjXSldLAotLSAgICAgICBbJCNdLCAxLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3
IGFyZ3VtZW50czogJCM6ICQxXSldLAotLSAgICAgICBbJCNdLCAyLCBbbTRfdW5xdW90ZShtNF9i
dWlsdGluKFtwYXRzdWJzdF0sIFtbJDFdXSwgWyQyXSkpXSwKLS0gICAgICAgWyQjXSwgMywgW200
X3VucXVvdGUobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pKV0sCi0t
ICAgICAgIFtfJDAoJEBtNF9pZihtNF9ldmFsKCQjICYgMSksIDAsIFssXSkpXSldKQotLW00X2Rl
ZmluZShbX200X2JwYXRzdWJzdHNdLAotLVttNF9pZihbJCNdLCAyLCBbJDFdLAotLSAgICAgICBb
JDAobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pLAotLQkgICBtNF9z
aGlmdDMoJEApKV0pXSkKLS0KLS0KLS0jIG00X2NvcHkoU1JDLCBEU1QpCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLQotLSMgRGVmaW5lIHRoZSBwdXNoZGVmIHN0YWNrIERTVCBhcyBhIGNvcHkgb2YgdGhl
IHB1c2hkZWYgc3RhY2sgU1JDOwotLSMgZ2l2ZSBhbiBlcnJvciBpZiBEU1QgaXMgYWxyZWFkeSBk
ZWZpbmVkLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgbmljZQotLSMgZm9yIGNvcHlpbmcgc2VsZi1t
b2RpZnlpbmcgcHVzaGRlZiBzdGFja3MsIHdoZXJlIHRoZSB0b3AgZGVmaW5pdGlvbgotLSMgaW5j
bHVkZXMgb25lLXNob3QgaW5pdGlhbGl6YXRpb24gdGhhdCBpcyBsYXRlciBwb3BwZWQgdG8gdGhl
IG5vcm1hbAotLSMgZGVmaW5pdGlvbi4gIFRoaXMgdmVyc2lvbiBpbnRlbnRpb25hbGx5IGRvZXMg
bm90aGluZyBpZiBTUkMgaXMKLS0jIHVuZGVmaW5lZC4KLS0jCi0tIyBTb21lIG1hY3JvcyBzaW1w
bHkgY2FuJ3QgYmUgcmVuYW1lZCB3aXRoIHRoaXMgbWV0aG9kOiBuYW1lbHksIGFueXRoaW5nCi0t
IyBpbnZvbHZlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgbTRfc3RhY2tfZm9yZWFjaF9zZXAu
Ci0tbTRfZGVmaW5lKFttNF9jb3B5XSwKLS1bbTRfaWZkZWYoWyQyXSwgW200X2ZhdGFsKFskMDog
d29uJ3Qgb3ZlcndyaXRlIGRlZmluZWQgbWFjcm86ICQyXSldLAotLQkgIFttNF9zdGFja19mb3Jl
YWNoX3NlcChbJDFdLCBbbTRfcHVzaGRlZihbJDJdLF0sIFspXSldKV1kbmwKLS1bbTRfaWZkZWYo
W200X2xvY2F0aW9uKCQxKV0sIFttNF9kZWZpbmUoW200X2xvY2F0aW9uKCQyKV0sIG00X2xvY2F0
aW9uKV0pXSkKLS0KLS0KLS0jIG00X2NvcHlfZm9yY2UoU1JDLCBEU1QpCi0tIyBtNF9yZW5hbWVf
Zm9yY2UoU1JDLCBEU1QpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtlIG00
X2NvcHkvbTRfcmVuYW1lLCBleGNlcHQgYmxpbmRseSBvdmVyd3JpdGUgYW55IGV4aXN0aW5nIERT
VC4KLS0jIE5vdGUgdGhhdCBtNF9jb3B5X2ZvcmNlIHRvbGVyYXRlcyB1bmRlZmluZWQgU1JDLCB3
aGlsZSBtNF9yZW5hbWVfZm9yY2UKLS0jIGRvZXMgbm90LgotLW00X2RlZmluZShbbTRfY29weV9m
b3JjZV0sCi0tW200X2lmZGVmKFskMl0sIFtfbTRfdW5kZWZpbmUoWyQyXSldKW00X2NvcHkoJEAp
XSkKLS0KLS1tNF9kZWZpbmUoW200X3JlbmFtZV9mb3JjZV0sCi0tW200X2lmZGVmKFskMl0sIFtf
bTRfdW5kZWZpbmUoWyQyXSldKW00X3JlbmFtZSgkQCldKQotLQotLQotLSMgbTRfZGVmaW5lX2Rl
ZmF1bHQoTUFDUk8sIFZBTFVFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgSWYgTUFDUk8gaXMgdW5kZWZpbmVkLCBzZXQgaXQgdG8gVkFMVUUuCi0tbTRfZGVmaW5lKFtt
NF9kZWZpbmVfZGVmYXVsdF0sCi0tW200X2lmbmRlZihbJDFdLCBbbTRfZGVmaW5lKCRAKV0pXSkK
LS0KLS0KLS0jIG00X2RlZmF1bHQoRVhQMSwgRVhQMikKLS0jIG00X2RlZmF1bHRfbmJsYW5rKEVY
UDEsIEVYUDIpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUmV0dXJucyBF
WFAxIGlmIG5vdCBlbXB0eS9ibGFuaywgb3RoZXJ3aXNlIEVYUDIuICBFeHBhbmQgdGhlIHJlc3Vs
dC4KLS0jCi0tIyBtNF9kZWZhdWx0IGlzIGNhbGxlZCBvbiBob3QgcGF0aHMsIHNvIGlubGluZSB0
aGUgY29udGVudHMgb2YgbTRfaWZ2YWwsCi0tIyBmb3Igb25lIGxlc3Mgcm91bmQgb2YgZXhwYW5z
aW9uLgotLW00X2RlZmluZShbbTRfZGVmYXVsdF0sCi0tW200X2lmKFskMV0sIFtdLCBbJDJdLCBb
JDFdKV0pCi0tCi0tbTRfZGVmaW5lKFttNF9kZWZhdWx0X25ibGFua10sCi0tW200X2lmYmxhbmso
WyQxXSwgWyQyXSwgWyQxXSldKQotLQotLQotLSMgbTRfZGVmYXVsdF9xdW90ZWQoRVhQMSwgRVhQ
MikKLS0jIG00X2RlZmF1bHRfbmJsYW5rX3F1b3RlZChFWFAxLCBFWFAyKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm5zIEVYUDEgaWYgbm9uIGVtcHR5
L2JsYW5rLCBvdGhlcndpc2UgRVhQMi4gIExlYXZlIHRoZSByZXN1bHQgcXVvdGVkLgotLSMKLS0j
IEZvciBjb21wYXJpc29uOgotLSMgICBtNF9kZWZpbmUoW2FjdGl2ZV0sIFtBQ1RJVkVdKQotLSMg
ICBtNF9kZWZhdWx0KFthY3RpdmVdLCBbZGVmYXVsdF0pID0+IEFDVElWRQotLSMgICBtNF9kZWZh
dWx0KFtdLCBbYWN0aXZlXSkgPT4gQUNUSVZFCi0tIyAgIC1tNF9kZWZhdWx0KFsgXSwgW2FjdGl2
ZV0pLSA9PiAtIC0KLS0jICAgLW00X2RlZmF1bHRfbmJsYW5rKFsgXSwgW2FjdGl2ZV0pLSA9PiAt
QUNUSVZFLQotLSMgICBtNF9kZWZhdWx0X3F1b3RlZChbYWN0aXZlXSwgW2RlZmF1bHRdKSA9PiBh
Y3RpdmUKLS0jICAgbTRfZGVmYXVsdF9xdW90ZWQoW10sIFthY3RpdmVdKSA9PiBhY3RpdmUKLS0j
ICAgLW00X2RlZmF1bHRfcXVvdGVkKFsgXSwgW2FjdGl2ZV0pLSA9PiAtIC0KLS0jICAgLW00X2Rl
ZmF1bHRfbmJsYW5rX3F1b3RlZChbIF0sIFthY3RpdmVdKS0gPT4gLWFjdGl2ZS0KLS0jCi0tIyBt
NF9kZWZhdWx0IG1hY3JvIGlzIGNhbGxlZCBvbiBob3QgcGF0aHMsIHNvIGlubGluZSB0aGUgY29u
dGVudHMgb2YgbTRfaWZ2YWwsCi0tIyBmb3Igb25lIGxlc3Mgcm91bmQgb2YgZXhwYW5zaW9uLgot
LW00X2RlZmluZShbbTRfZGVmYXVsdF9xdW90ZWRdLAotLVttNF9pZihbJDFdLCBbXSwgW1skMl1d
LCBbWyQxXV0pXSkKLS0KLS1tNF9kZWZpbmUoW200X2RlZmF1bHRfbmJsYW5rX3F1b3RlZF0sCi0t
W200X2lmYmxhbmsoWyQxXSwgW1skMl1dLCBbWyQxXV0pXSkKLS0KLS0KLS0jIG00X2RlZm4oTkFN
RSkKLS0jIC0tLS0tLS0tLS0tLS0KLS0jIExpa2UgdGhlIG9yaWdpbmFsLCBleGNlcHQgZ3VhcmFu
dGVlIGEgd2FybmluZyB3aGVuIHVzaW5nIHNvbWV0aGluZyB3aGljaCBpcwotLSMgdW5kZWZpbmVk
ICh1bmxpa2UgTTQgMS40LngpLiAgVGhpcyByZXBsYWNlbWVudCBpcyBub3QgYSBmdWxsLWZlYXR1
cmVkCi0tIyByZXBsYWNlbWVudDogaWYgYW55IG9mIHRoZSBkZWZpbmVkIG1hY3JvcyBjb250YWlu
IHVuYmFsYW5jZWQgcXVvdGluZywgYnV0Ci0tIyB3aGVuIHBhc3RlZCB0b2dldGhlciByZXN1bHQg
aW4gYSB3ZWxsLXF1b3RlZCBzdHJpbmcsIHRoZW4gb25seSBuYXRpdmUgbTQKLS0jIHN1cHBvcnQg
aXMgYWJsZSB0byBnZXQgaXQgY29ycmVjdC4gIEJ1dCB0aGF0J3Mgd2hlcmUgcXVhZHJpZ3JhcGhz
IGNvbWUgaW4KLS0jIGhhbmR5LCBpZiB5b3UgcmVhbGx5IG5lZWQgdW5iYWxhbmNlZCBxdW90ZXMg
aW5zaWRlIHlvdXIgbWFjcm9zLgotLSMKLS0jIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyZXF1ZW50
bHksIHNvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgYWRkaXRpb25hbAotLSMgZXhwYW5zaW9ucyBi
eSBza2lwcGluZyBtNF9pZm5kZWYuICBCZXR0ZXIgeWV0LCBpZiBfX200X3ZlcnNpb25fXyBleGlz
dHMsCi0tIyAoYWRkZWQgaW4gTTQgMS42KSwgdGhlbiBsZXQgbTQgZG8gdGhlIGpvYiBmb3IgdXMg
KHNlZSBtNF9pbml0KS4KLS1tNF9kZWZpbmUoW200X2RlZm5dLAotLVttNF9pZihbJCNdLCBbMF0s
IFtbJDBdXSwKLS0gICAgICAgWyQjXSwgWzFdLCBbbTRfaWZkZWYoWyQxXSwgW19tNF9kZWZuKFsk
MV0pXSwKLS0JCQkgICAgW200X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAot
LSAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSldKQotLQotLQotLSMgbTRfZHVtcGRlZihO
QU1FLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSW4gbTQgMS40LngsIGR1bXBkZWYg
d3JpdGVzIHRvIHRoZSBjdXJyZW50IGRlYnVnZmlsZSwgcmF0aGVyIHRoYW4KLS0jIHN0ZGVyci4g
IFRoaXMgaW4gdHVybiByb3lhbGx5IGNvbmZ1c2VzIGF1dG9tNHRlOyBzbyB3ZSBmb2xsb3cgdGhl
Ci0tIyBsZWFkIG9mIG5ld2VyIG00IGFuZCBhbHdheXMgZHVtcCB0byBzdGRlcnIuICBVbmxpa2Ug
dGhlIG9yaWdpbmFsLAotLSMgdGhpcyB2ZXJzaW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50LCBzaW5j
ZSB0aGVyZSBpcyBubyBjb252ZW5pZW50IHdheQotLSMgaW4gbTQgMS40LnggdG8gZ3JhYiB0aGUg
bmFtZXMgb2YgYWxsIGRlZmluZWQgbWFjcm9zLiAgTmV3ZXIgbTQKLS0jIGFsd2F5cyBkdW1wcyB0
byBzdGRlcnIsIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgZGVidWdmaWxlOyBpdCBhbHNvCi0t
IyBwcm92aWRlcyBtNHN5bWJvbHMgYXMgYSB3YXkgdG8gZ3JhYiBhbGwgY3VycmVudCBtYWNybyBu
YW1lcy4gIEJ1dAotLSMgZHVtcGRlZnMgaXMgbm90IGZyZXF1ZW50bHkgY2FsbGVkLCBzbyB3ZSBk
b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0tIyBjb25kaXRpb25hbGx5IHVzaW5nIHRoZXNlIG5l
d2VyIGZlYXR1cmVzLiAgQWxzbywgdGhpcyB2ZXJzaW9uCi0tIyBkb2Vzbid0IHNvcnQgbXVsdGlw
bGUgYXJndW1lbnRzLgotLSMKLS0jIElmIHdlIGRldGVjdCBtNCAxLjYgb3IgbmV3ZXIsIHRoZW4g
cHJvdmlkZSBhbiBhbHRlcm5hdGUgZGVmaW5pdGlvbiwKLS0jIGluc3RhbGxlZCBkdXJpbmcgbTRf
aW5pdCwgdGhhdCBhbGxvd3MgYnVpbHRpbnMgdGhyb3VnaC4KLS0jIFVuZm9ydHVuYXRlbHksIHRo
ZXJlIGlzIG5vIG5pY2Ugd2F5IGluIG00IDEuNC54IHRvIGR1bXAgYnVpbHRpbnMuCi0tbTRfZGVm
aW5lKFttNF9kdW1wZGVmXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBtaXNz
aW5nIGFyZ3VtZW50XSldLAotLSAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbbTRf
ZXJycHJpbnRuKAotLSAgWyQxOgldbTRfZHF1b3RlKF9tNF9kZWZuKFskMV0pKSldLCBbbTRfZmF0
YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQxXSldKV0sCi0tICAgICAgIFttNF9tYXBfYXJncyhb
JDBdLCAkQCldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfZHVtcGRlZl0sCi0tW200X2lmKFskI10s
IFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKLS0gICAgICAgWyQjXSwg
WzFdLCBbbTRfYnVpbHRpbihbZHVtcGRlZl0sIFskMV0pXSwKLS0gICAgICAgW200X21hcF9hcmdz
X3NlcChbbTRfYnVpbHRpbihbZHVtcGRlZl0sXSwgWyldLCBbXSwgJEApXSldKQotLQotLQotLSMg
bTRfZHVtcGRlZnMoTkFNRS4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTaW1pbGFy
IHRvIGBtNF9kdW1wZGVmKE5BTUUpJywgYnV0IGlmIE5BTUUgd2FzIG00X3B1c2hkZWYnZWQsIGRp
c3BsYXkgaXRzCi0tIyB2YWx1ZSBzdGFjayAobW9zdCByZWNlbnQgZGlzcGxheWVkIGZpcnN0KS4g
IEFsc28sIHRoaXMgdmVyc2lvbiBzaWxlbnRseQotLSMgaWdub3JlcyB1bmRlZmluZWQgbWFjcm9z
LCByYXRoZXIgdGhhbiBlcnJvcmluZyBvdXQuCi0tIwotLSMgVGhpcyBtYWNybyBjaGVhdHMsIGJl
Y2F1c2UgaXQgcmVsaWVzIG9uIHRoZSBjdXJyZW50IGRlZmluaXRpb24gb2YgTkFNRQotLSMgd2hp
bGUgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBtNF9zdGFja19mb3JlYWNoX2xpZm8gaXMgZXZhbHVh
dGVkICh3aGljaAotLSMgd291bGQgYmUgdW5kZWZpbmVkIGFjY29yZGluZyB0byB0aGUgQVBJKS4K
LS1tNF9kZWZpbmUoW200X2R1bXBkZWZzXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwo
WyQwOiBtaXNzaW5nIGFyZ3VtZW50XSldLAotLSAgICAgICBbJCNdLCBbMV0sIFttNF9zdGFja19m
b3JlYWNoX2xpZm8oWyQxXSwgW200X2R1bXBkZWYoWyQxXSltNF9pZ25vcmVdKV0sCi0tICAgICAg
IFttNF9tYXBfYXJncyhbJDBdLCAkQCldKV0pCi0tCi0tIyBtNF9lc3lzY21kX3MoQ09NTUFORCkK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTGlrZSBtNF9lc3lzY21kLCBleGNlcHQgc3Ry
aXAgYW55IHRyYWlsaW5nIG5ld2xpbmVzLCB0aHVzIGJlaGF2aW5nCi0tIyBtb3JlIGxpa2Ugc2hl
bGwgY29tbWFuZCBzdWJzdGl0dXRpb24uCi0tbTRfZGVmaW5lKFttNF9lc3lzY21kX3NdLAotLVtt
NF9jaG9tcF9hbGwobTRfZXN5c2NtZChbJDFdKSldKQotLQotLQotLSMgbTRfcG9wZGVmKE5BTUUp
Ci0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgdGhlIG9yaWdpbmFsLCBleGNlcHQgZ3VhcmFu
dGVlIGEgd2FybmluZyB3aGVuIHVzaW5nIHNvbWV0aGluZyB3aGljaCBpcwotLSMgdW5kZWZpbmVk
ICh1bmxpa2UgTTQgMS40LngpLgotLSMKLS0jIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyZXF1ZW50
bHksIHNvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgYWRkaXRpb25hbAotLSMgZXhwYW5zaW9ucyBi
eSBza2lwcGluZyBtNF9pZm5kZWYuICBCZXR0ZXIgeWV0LCBpZiBfX200X3ZlcnNpb25fXyBleGlz
dHMsCi0tIyAoYWRkZWQgaW4gTTQgMS42KSwgdGhlbiBsZXQgbTQgZG8gdGhlIGpvYiBmb3IgdXMg
KHNlZSBtNF9pbml0KS4KLS1tNF9kZWZpbmUoW200X3BvcGRlZl0sCi0tW200X2lmKFskI10sIFsw
XSwgW1skMF1dLAotLSAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X3BvcGRl
ZihbJDFdKV0sCi0tCQkJICAgIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0p
XSwKLS0gICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pXSkKLS0KLS0KLS0jIG00X3NoaWZ0
bihOLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgUmV0dXJucyAuLi4gc2hpZnRlZCBO
IHRpbWVzLiAgVXNlZnVsIGZvciByZWN1cnNpdmUgInZhcmFyZ3MiIGNvbnN0cnVjdHMuCi0tIwot
LSMgQXV0b2NvbmYgZG9lcyBub3QgdXNlIHRoaXMgbWFjcm8sIGJlY2F1c2UgaXQgaXMgaW5oZXJl
bnRseSBzbG93ZXIgdGhhbgotLSMgY2FsbGluZyB0aGUgY29tbW9uIGNhc2VzIG9mIG00X3NoaWZ0
MiBvciBtNF9zaGlmdDMgZGlyZWN0bHkuICBCdXQgaXQKLS0jIG1pZ2h0IGFzIHdlbGwgYmUgZmFz
dCBmb3Igb3RoZXIgY2xpZW50cywgc3VjaCBhcyBMaWJ0b29sLiAgT25lIHdheSB0bwotLSMgZG8g
dGhpcyBpcyB0byBleHBhbmQgJEAgb25seSBvbmNlIGluIF9tNF9zaGlmdG4gKG90aGVyd2lzZSwg
Zm9yIGxvbmcKLS0jIGxpc3RzLCB0aGUgZXhwYW5zaW9uIG9mIG00X2lmIHRha2VzIHR3aWNlIGFz
IG11Y2ggbWVtb3J5IGFzIHdoYXQgdGhlCi0tIyBsaXN0IGl0c2VsZiBvY2N1cGllcywgb25seSB0
byB0aHJvdyBhd2F5IHRoZSB1bnVzZWQgYnJhbmNoKS4gIFRoZSBlbmQKLS0jIHJlc3VsdCBpcyBz
dHJpY3RseSBlcXVpdmFsZW50IHRvCi0tIyAgIG00X2lmKFskMV0sIDEsIFttNF9zaGlmdCgsbTRf
c2hpZnQobTRfc2hpZnQoJEApKSldLAotLSMgICAgICAgICBbX200X3NoaWZ0bihtNF9kZWNyKFsk
MV0pLCBtNF9zaGlmdChtNF9zaGlmdCgkQCkpKV0pCi0tIyBidXQgd2l0aCB0aGUgZmluYWwgYG00
X3NoaWZ0KG00X3NoaWZ0KCRAKSkpJyBzaGFyZWQgYmV0d2VlbiB0aGUgdHdvCi0tIyBwYXRocy4g
IFRoZSBmaXJzdCBsZWcgdXNlcyBhIG5vLW9wIG00X3NoaWZ0KCwkQCkgdG8gYmFsYW5jZSBvdXQg
dGhlICgpLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBh
ZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFttNF9zaGlmdG5dLAotLVttNF9hc3Nl
cnQoMCA8ICQxICYmICQxIDwgJCMpXyQwKCRAKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2hpZnRu
XSwKLS1bbTRfaWYoWyQxXSwgMSwgW200X3NoaWZ0KF0sCi0tICAgICAgIFskMChtNF9kZWNyKFsk
MV0pXSksIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSkKLS0KLS0jIG00X3NoaWZ0MiguLi4pCi0t
IyBtNF9zaGlmdDMoLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybnMgLi4uIHNoaWZ0
ZWQgdHdpY2UsIGFuZCB0aHJlZSB0aW1lcy4gIEZhc3RlciB0aGFuIG00X3NoaWZ0bi4KLS1tNF9k
ZWZpbmUoW200X3NoaWZ0Ml0sIFttNF9zaGlmdChtNF9zaGlmdCgkQCkpXSkKLS1tNF9kZWZpbmUo
W200X3NoaWZ0M10sIFttNF9zaGlmdChtNF9zaGlmdChtNF9zaGlmdCgkQCkpKV0pCi0tCi0tIyBf
bTRfc2hpZnQyKC4uLikKLS0jIF9tNF9zaGlmdDMoLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tCi0t
IyBMaWtlIG00X3NoaWZ0MiBvciBtNF9zaGlmdDMsIGV4Y2VwdCBpbmNsdWRlIGEgbGVhZGluZyBj
b21tYSB1bmxlc3Mgc2hpZnRpbmcKLS0jIGNvbnN1bWVzIGFsbCBhcmd1bWVudHMuICBXaHk/ICBC
ZWNhdXNlIGluIHJlY3Vyc2lvbiwgaXQgaXMgbmljZSB0bwotLSMgZGlzdGluZ3Vpc2ggYmV0d2Vl
biAxIGVsZW1lbnQgbGVmdCBhbmQgMCBlbGVtZW50cyBsZWZ0LCBiYXNlZCBvbiBob3cgbWFueQot
LSMgYXJndW1lbnRzIHRoaXMgc2hpZnQgZXhwYW5kcyB0by4KLS1tNF9kZWZpbmUoW19tNF9zaGlm
dDJdLAotLVttNF9pZihbJCNdLCBbMl0sIFtdLAotLSAgICAgICBbLCBtNF9zaGlmdChtNF9zaGlm
dCgkQCkpXSldKQotLW00X2RlZmluZShbX200X3NoaWZ0M10sCi0tW200X2lmKFskI10sIFszXSwg
W10sCi0tICAgICAgIFssIG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSldKQotLQot
LQotLSMgbTRfdW5kZWZpbmUoTkFNRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtlIHRo
ZSBvcmlnaW5hbCwgZXhjZXB0IGd1YXJhbnRlZSBhIHdhcm5pbmcgd2hlbiB1c2luZyBzb21ldGhp
bmcgd2hpY2ggaXMKLS0jIHVuZGVmaW5lZCAodW5saWtlIE00IDEuNC54KS4KLS0jCi0tIyBUaGlz
IG1hY3JvIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGFk
ZGl0aW9uYWwKLS0jIGV4cGFuc2lvbnMgYnkgc2tpcHBpbmcgbTRfaWZuZGVmLiAgQmV0dGVyIHll
dCwgaWYgX19tNF92ZXJzaW9uX18gZXhpc3RzLAotLSMgKGFkZGVkIGluIE00IDEuNiksIHRoZW4g
bGV0IG00IGRvIHRoZSBqb2IgZm9yIHVzIChzZWUgbTRfaW5pdCkuCi0tbTRfZGVmaW5lKFttNF91
bmRlZmluZV0sCi0tW200X2lmKFskI10sIFswXSwgW1skMF1dLAotLSAgICAgICBbJCNdLCBbMV0s
IFttNF9pZmRlZihbJDFdLCBbX200X3VuZGVmaW5lKFskMV0pXSwKLS0JCQkgICAgW200X2ZhdGFs
KFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAotLSAgICAgICBbbTRfbWFwX2FyZ3MoWyQw
XSwgJEApXSldKQotLQotLSMgX200X3dyYXAoUFJFLCBQT1NUKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgSGVscGVyIG1hY3JvIGZvciBtNF93cmFwIGFuZCBtNF93cmFwX2xpZm8uICBBbGxv
d3MgbmVzdGVkIGNhbGxzIHRvCi0tIyBtNF93cmFwIHdpdGhpbiB3cmFwcGVkIHRleHQuICBVc2Ug
X200X2RlZm4gYW5kIF9tNF9wb3BkZWYgZm9yIHNwZWVkLgotLW00X2RlZmluZShbX200X3dyYXBd
LAotLVttNF9pZmRlZihbJDBfdGV4dF0sCi0tCSAgW200X2RlZmluZShbJDBfdGV4dF0sIFskMV1f
bTRfZGVmbihbJDBfdGV4dF0pWyQyXSldLAotLQkgIFttNF9idWlsdGluKFttNHdyYXBdLCBbbTRf
dW5xdW90ZSgKLS0gIF9tNF9kZWZuKFskMF90ZXh0XSlfbTRfcG9wZGVmKFskMF90ZXh0XSkpXSlt
NF9kZWZpbmUoWyQwX3RleHRdLCBbJDEkMl0pXSldKQotLQotLSMgbTRfd3JhcChURVhUKQotLSMg
LS0tLS0tLS0tLS0tLQotLSMgQXBwZW5kIFRFWFQgdG8gdGhlIGxpc3Qgb2YgaG9va3MgdG8gYmUg
ZXhlY3V0ZWQgYXQgdGhlIGVuZCBvZiBpbnB1dC4KLS0jIFdoZXJlYXMgdGhlIG9yZGVyIG9mIHRo
ZSBvcmlnaW5hbCBtYXkgYmUgTElGTyBpbiB0aGUgdW5kZXJseWluZyBtNCwKLS0jIHRoaXMgdmVy
c2lvbiBpcyBhbHdheXMgRklGTy4KLS1tNF9kZWZpbmUoW200X3dyYXBdLAotLVtfbTRfd3JhcChb
XSwgWyQxW11dKV0pCi0tCi0tIyBtNF93cmFwX2xpZm8oVEVYVCkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgUHJlcGVuZCBURVhUIHRvIHRoZSBsaXN0IG9mIGhvb2tzIHRvIGJlIGV4ZWN1dGVk
IGF0IHRoZSBlbmQgb2YgaW5wdXQuCi0tIyBXaGVyZWFzIHRoZSBvcmRlciBvZiBtNF93cmFwIG1h
eSBiZSBGSUZPIGluIHRoZSB1bmRlcmx5aW5nIG00LCB0aGlzCi0tIyB2ZXJzaW9uIGlzIGFsd2F5
cyBMSUZPLgotLW00X2RlZmluZShbbTRfd3JhcF9saWZvXSwKLS1bX200X3dyYXAoWyQxW11dKV0p
Ci0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIDcuIFF1b3RpbmcgbWFu
aXB1bGF0aW9uLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0t
IyBtNF9hcHBseShNQUNSTywgTElTVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSW52
b2tlIE1BQ1JPLCB3aXRoIGFyZ3VtZW50cyBwcm92aWRlZCBmcm9tIHRoZSBxdW90ZWQgbGlzdCBv
ZgotLSMgY29tbWEtc2VwYXJhdGVkIHF1b3RlZCBhcmd1bWVudHMuICBJZiBMSVNUIGlzIGVtcHR5
LCBpbnZva2UgTUFDUk8KLS0jIHdpdGhvdXQgYXJndW1lbnRzLiAgVGhlIGV4cGFuc2lvbiB3aWxs
IG5vdCBiZSBjb25jYXRlbmF0ZWQgd2l0aAotLSMgc3Vic2VxdWVudCB0ZXh0LgotLW00X2RlZmlu
ZShbbTRfYXBwbHldLAotLVttNF9pZihbJDJdLCBbXSwgWyQxXSwgWyQxKCQyKV0pW11dKQotLQot
LSMgX200X2FwcGx5KE1BQ1JPLCBMSVNUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
TGlrZSBtNF9hcHBseSwgZXhjZXB0IGRvIG5vdGhpbmcgaWYgTElTVCBpcyBlbXB0eS4KLS1tNF9k
ZWZpbmUoW19tNF9hcHBseV0sCi0tW200X2lmKFskMl0sIFtdLCBbXSwgWyQxKCQyKVtdXSldKQot
LQotLQotLSMgbTRfY291bnQoQVJHUykKLS0jIC0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gYSBj
b3VudCBvZiBob3cgbWFueSBBUkdTIGFyZSBwcmVzZW50LgotLW00X2RlZmluZShbbTRfY291bnRd
LCBbJCNdKQotLQotLQotLSMgbTRfY3VycnkoTUFDUk8sIEFSRy4uLikKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBQZXJmb3JtIGFyZ3VtZW50IGN1cnJ5aW5nLiAgVGhlIGV4cGFuc2lv
biBvZiB0aGlzIG1hY3JvIGlzIGFub3RoZXIKLS0jIG1hY3JvIHRoYXQgdGFrZXMgZXhhY3RseSBv
bmUgYXJndW1lbnQsIGFwcGVuZHMgaXQgdG8gdGhlIGVuZCBvZiB0aGUKLS0jIG9yaWdpbmFsIEFS
RyBsaXN0LCB0aGVuIGludm9rZXMgTUFDUk8uICBGb3IgZXhhbXBsZToKLS0jICAgbTRfY3Vycnko
W200X2N1cnJ5XSwgW200X3JldmVyc2VdLCBbMV0pKFsyXSkoWzNdKSA9PiAzLCAyLCAxCi0tIyBO
b3QgcXVpdGUgYXMgcHJhY3RpY2FsIGFzIG00X2luY3IsIGJ1dCB5b3UgY291bGQgYWxzbyBkbzoK
LS0jICAgbTRfZGVmaW5lKFthZGRdLCBbbTRfZXZhbCgoWyQxXSkgKyAoWyQyXSkpXSkKLS0jICAg
bTRfZGVmaW5lKFthZGRfb25lXSwgW200X2N1cnJ5KFthZGRdLCBbMV0pXSkKLS0jICAgYWRkX29u
ZSgpKFsyXSkgPT4gMwotLW00X2RlZmluZShbbTRfY3VycnldLCBbJDEobTRfc2hpZnQoJEAsKV8k
MF0pCi0tbTRfZGVmaW5lKFtfbTRfY3VycnldLCAgICAgICAgICAgICAgIFtbJDFdKV0pCi0tCi0t
Ci0tIyBtNF9kbyhTVFJJTkcsIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgVGhpcyBt
YWNybyBpbnZva2VzIGFsbCBpdHMgYXJndW1lbnRzIChpbiBzZXF1ZW5jZSwgb2YgY291cnNlKS4g
IEl0IGlzCi0tIyB1c2VmdWwgZm9yIG1ha2luZyB5b3VyIG1hY3JvcyBtb3JlIHN0cnVjdHVyZWQg
YW5kIHJlYWRhYmxlIGJ5IGRyb3BwaW5nCi0tIyB1bm5lY2Vzc2FyeSBkbmwncyBhbmQgaGF2ZSB0
aGUgbWFjcm9zIGluZGVudGVkIHByb3Blcmx5LiAgTm8gY29uY2F0ZW5hdGlvbgotLSMgb2NjdXJz
IGFmdGVyIGEgU1RSSU5HOyB1c2UgbTRfdW5xdW90ZShtNF9qb2luKCxTVFJJTkcpKSBmb3IgdGhh
dC4KLS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0
bWVudHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShbbTRfZG9dLAotLVttNF9pZihbJCNdLCAwLCBb
XSwKLS0gICAgICAgWyQjXSwgMSwgWyQxW11dLAotLSAgICAgICBbJDFbXSQwKG00X3NoaWZ0KCRA
KSldKV0pCi0tCi0tCi0tIyBtNF9kcXVvdGUoQVJHUykKLS0jIC0tLS0tLS0tLS0tLS0tLQotLSMg
UmV0dXJuIEFSR1MgYXMgYSBxdW90ZWQgbGlzdCBvZiBxdW90ZWQgYXJndW1lbnRzLgotLW00X2Rl
ZmluZShbbTRfZHF1b3RlXSwgIFtbJEBdXSkKLS0KLS0KLS0jIG00X2RxdW90ZV9lbHQoQVJHUykK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiBBUkdTIGFzIGFuIHVucXVvdGVkIGxp
c3Qgb2YgZG91YmxlLXF1b3RlZCBhcmd1bWVudHMuCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFj
aC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUo
W200X2RxdW90ZV9lbHRdLAotLVttNF9pZihbJCNdLCBbMF0sIFtdLAotLSAgICAgICBbJCNdLCBb
MV0sIFtbWyQxXV1dLAotLSAgICAgICBbW1skMV1dLCQwKG00X3NoaWZ0KCRAKSldKV0pCi0tCi0t
Ci0tIyBtNF9lY2hvKEFSR1MpCi0tIyAtLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gdGhlIEFSR1Ms
IHdpdGggdGhlIHNhbWUgbGV2ZWwgb2YgcXVvdGluZy4gIFdoaXRlc3BhY2UgYWZ0ZXIKLS0jIHVu
cXVvdGVkIGNvbW1hcyBhcmUgY29uc3VtZWQuCi0tbTRfZGVmaW5lKFttNF9lY2hvXSwgWyRAXSkK
LS0KLS0KLS0jIG00X2V4cGFuZChBUkcpCi0tIyBfbTRfZXhwYW5kKEFSRykKLS0jIC0tLS0tLS0t
LS0tLS0tLQotLSMgUmV0dXJuIHRoZSBleHBhbnNpb24gb2YgQVJHIGFzIGEgc2luZ2xlIHN0cmlu
Zy4gIFVubGlrZQotLSMgbTRfcXVvdGUoJDEpLCB0aGlzIHByZXNlcnZlcyB3aGl0ZXNwYWNlIGZv
bGxvd2luZyBzaW5nbGUtcXVvdGVkCi0tIyBjb21tYXMgdGhhdCBhcHBlYXIgd2l0aGluIEFSRy4g
IEl0IGFsc28gZGVhbHMgd2l0aCBzaGVsbCBjYXNlCi0tIyBzdGF0ZW1lbnRzLgotLSMKLS0jICAg
bTRfZGVmaW5lKFthY3RpdmVdLCBbQUNULCBJVkVdKQotLSMgICBtNF9kZWZpbmUoW2FjdGl2ZTJd
LCBbW0FDVCwgSVZFXV0pCi0tIyAgIG00X3F1b3RlKGFjdGl2ZSwgYWN0aXZlMikKLS0jICAgPT4g
QUNULElWRSxBQ1QsIElWRQotLSMgICBtNF9leHBhbmQoW2FjdGl2ZSwgYWN0aXZlMl0pCi0tIyAg
ID0+IEFDVCwgSVZFLCBBQ1QsIElWRQotLSMKLS0jIFVuZm9ydHVuYXRlbHksIGR1ZSB0byBsaW1p
dGF0aW9ucyBpbiBtNCwgQVJHIG11c3QgZXhwYW5kIHRvCi0tIyBzb21ldGhpbmcgd2l0aCBiYWxh
bmNlZCBxdW90ZXMgKHVzZSBxdWFkcmlncmFwaHMgdG8gZ2V0IGFyb3VuZAotLSMgdGhpcyksIGFu
ZCBzaG91bGQgbm90IGNvbnRhaW4gdGhlIHVubGlrZWx5IGRlbGltaXRlcnMgLT08eyggb3IKLS0j
ICl9Pj0tLiAgSXQgaXMgcG9zc2libGUgdG8gaGF2ZSB1bmJhbGFuY2VkIHF1b3RlZCBgKCcgb3Ig
YCknLCBhcyB3ZWxsCi0tIyBhcyB1bmJhbGFuY2VkIHVucXVvdGVkIGApJy4gIG00X2V4cGFuZCBj
YW4gaGFuZGxlIHVudGVybWluYXRlZAotLSMgY29tbWVudHMgb3IgZG5sIG9uIHRoZSBmaW5hbCBs
aW5lLCBhdCB0aGUgZXhwZW5zZSBvZiBzcGVlZDsgaXQgYWxzbwotLSMgYWlkcyBpbiBkZXRlY3Rp
bmcgYXR0ZW1wdHMgdG8gaW5jb3JyZWN0bHkgY2hhbmdlIHRoZSBjdXJyZW50Ci0tIyBkaXZlcnNp
b24gaW5zaWRlIEFSRy4gIE1lYW53aGlsZSwgX200X2V4cGFuZCBpcyBmYXN0ZXIgYnV0IG11c3Qg
YmUKLS0jIGdpdmVuIGEgdGVybWluYXRlZCBleHBhbnNpb24sIGFuZCBoYXMgbm8gc2FmZXR5IGNo
ZWNrcyBmb3IKLS0jIG1pcy1kaXZlcnRlZCB0ZXh0LgotLSMKLS0jIEV4cGxvaXQgdGhhdCBleHRy
YSB1bnF1b3RlZCAoKSB3aWxsIGdyb3VwIHVucXVvdGVkIGNvbW1hcyBhbmQgdGhlCi0tIyBmb2xs
b3dpbmcgd2hpdGVzcGFjZS4gIG00X2JwYXRzdWJzdCBjYW4ndCBoYW5kbGUgbmV3bGluZXMgaW5z
aWRlICQxLAotLSMgYW5kIG00X3N1YnN0ciBzdHJpcHMgcXVvdGluZy4gIFNvIHdlIChhYil1c2Ug
bTRfY2hhbmdlcXVvdGUsIHVzaW5nCi0tIyB0ZW1wb3JhcnkgcXVvdGVzIHRvIHJlbW92ZSB0aGUg
ZGVsaW1pdGVycyB0aGF0IGNvbnZlbmllbnRseSBpbmNsdWRlZAotLSMgdGhlIHVucXVvdGVkICgp
IHRoYXQgd2VyZSBhZGRlZCBwcmlvciB0byB0aGUgY2hhbmdlcXVvdGUuCi0tIwotLSMgVGhhbmtz
IHRvIHNoZWxsIGNhc2Ugc3RhdGVtZW50cywgdG9vIG1hbnkgcGVvcGxlIGFyZSBwcm9uZSB0byBw
YXNzCi0tIyB1bmRlcnF1b3RlZCBgKScsIHNvIHdlIHRyeSB0byBkZXRlY3QgdGhhdCBieSBwYXNz
aW5nIGEgbWFya2VyIGFzIGEKLS0jIGZvdXJ0aCBhcmd1bWVudDsgaWYgdGhlIG1hcmtlciBpcyBu
b3QgcHJlc2VudCwgdGhlbiB3ZSBhc3N1bWUgdGhhdAotLSMgd2UgZW5jb3VudGVyZWQgYW4gZWFy
bHkgYCknLCBhbmQgcmUtZXhwYW5kIHRoZSBmaXJzdCBhcmd1bWVudCwgYnV0Ci0tIyB0aGlzIHRp
bWUgd2l0aCBvbmUgbW9yZSBgKCcgaW4gdGhlIHNlY29uZCBhcmd1bWVudCBhbmQgaW4gdGhlCi0t
IyBvcGVuLXF1b3RlIGRlbGltaXRlci4gIFdlIG11c3QgYWxzbyBpZ25vcmUgdGhlIHNsb3AgZnJv
bSB0aGUKLS0jIHByZXZpb3VzIHRyeS4gIFRoZSBmaW5hbCBtYWNybyBpcyB0aHVzIGhhbGYgbGlu
ZS1ub2lzZSwgaGFsZiBhcnQuCi0tbTRfZGVmaW5lKFttNF9leHBhbmRdLAotLVttNF9wdXNoZGVm
KFttNF9kaXZlcnRdLCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSldZG5sCi0tW200X3B1
c2hkZWYoW200X2RpdmVydF9wdXNoXSwgX200X2RlZm4oW19tNF9kaXZlcnRfdW5zYWZlXSkpXWRu
bAotLVttNF9jaG9tcChfJDAoWyQxCi0tXSkpX200X3BvcGRlZihbbTRfZGl2ZXJ0XSwgW200X2Rp
dmVydF9wdXNoXSldKQotLQotLW00X2RlZmluZShbX200X2V4cGFuZF0sIFskMF8oWyQxXSwgWyhd
LCAtPTx7KCQxKX0+PS0sIFt9Pj0tXSldKQotLQotLW00X2RlZmluZShbX200X2V4cGFuZF9dLAot
LVttNF9pZihbJDRdLCBbfT49LV0sCi0tICAgICAgIFttNF9jaGFuZ2VxdW90ZShbLT08eyQyXSwg
Wyl9Pj0tXSkkM200X2NoYW5nZXF1b3RlKFssIF0pXSwKLS0gICAgICAgWyQwKFskMV0sIFsoJDJd
LCAtPTx7KCQyJDEpfT49LSwgW30+PS1dKW00X2lnbm9yZSQyXSldKQotLQotLQotLSMgbTRfaWdu
b3JlKEFSR1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZHMgdG8gbm90aGluZy4gIFVz
ZWZ1bCBmb3IgY29uZGl0aW9uYWxseSBpZ25vcmluZyBhbiBhcmJpdHJhcnkKLS0jIG51bWJlciBv
ZiBhcmd1bWVudHMgKHNlZSBfbTRfbGlzdF9jbXAgZm9yIGFuIGV4YW1wbGUpLgotLW00X2RlZmlu
ZShbbTRfaWdub3JlXSkKLS0KLS0KLS0jIG00X21ha2VfbGlzdChBUkdTKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBTaW1pbGFyIHRvIG00X2RxdW90ZSwgdGhpcyBjcmVhdGVzIGEgcXVvdGVk
IGxpc3Qgb2YgcXVvdGVkIEFSR1MuICBUaGlzCi0tIyB2ZXJzaW9uIGlzIGxlc3MgZWZmaWNpZW50
IHRoYW4gbTRfZHF1b3RlLCBidXQgc2VwYXJhdGVzIGVhY2ggYXJndW1lbnQKLS0jIHdpdGggYSBj
b21tYSBhbmQgbmV3bGluZSwgcmF0aGVyIHRoYW4ganVzdCBjb21tYSwgZm9yIHJlYWRhYmlsaXR5
LgotLSMgV2hlbiBkZXZlbG9waW5nIGFuIG00c3VnYXIgYWxnb3JpdGhtLCB5b3UgY291bGQgdGVt
cG9yYXJpbHkgdXNlCi0tIyAgIG00X3B1c2hkZWYoW200X2RxdW90ZV0sbTRfZGVmbihbbTRfbWFr
ZV9saXN0XSkpCi0tIyBhcm91bmQgeW91ciBjb2RlIHRvIG1ha2UgZGVidWdnaW5nIGVhc2llci4K
LS1tNF9kZWZpbmUoW200X21ha2VfbGlzdF0sIFttNF9qb2luKFssCi0tXSwgbTRfZHF1b3RlX2Vs
dCgkQCkpXSkKLS0KLS0KLS0jIG00X25vcXVvdGUoU1RSSU5HKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBSZXR1cm4gdGhlIHJlc3VsdCBvZiBpZ25vcmluZyBhbGwgcXVvdGVzIGluIFNUUklO
RyBhbmQgaW52b2tpbmcgdGhlCi0tIyBtYWNyb3MgaXQgY29udGFpbnMuICBBbW9uZyBvdGhlciB0
aGluZ3MsIHRoaXMgaXMgdXNlZnVsIGZvciBlbmFibGluZwotLSMgbWFjcm8gaW52b2NhdGlvbnMg
aW5zaWRlIHN0cmluZ3Mgd2l0aCBbXSBibG9ja3MgKGZvciBpbnN0YW5jZSByZWdleHBzCi0tIyBh
bmQgaGVscC1zdHJpbmdzKS4gIE9uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSBhbGwgcXVvdGVzIGFy
ZSBkaXNhYmxlZCwKLS0jIGFueSBtYWNybyBleHBhbmRlZCBkdXJpbmcgdGhpcyB0aW1lIHRoYXQg
cmVsaWVzIG9uIG5lc3RlZCBbXSBxdW90aW5nCi0tIyB3aWxsIGxpa2VseSBjcmFzaCBhbmQgYnVy
bi4gIFRoaXMgbWFjcm8gaXMgc2VsZG9tIHVzZWZ1bDsgY29uc2lkZXIKLS0jIG00X3VucXVvdGUg
b3IgbTRfZXhwYW5kIGluc3RlYWQuCi0tbTRfZGVmaW5lKFttNF9ub3F1b3RlXSwKLS1bbTRfY2hh
bmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKSQxLT08eygpfT49LW00X2NoYW5nZXF1b3RlKFssXSld
KQotLQotLQotLSMgbTRfcXVvdGUoQVJHUykKLS0jIC0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4g
QVJHUyBhcyBhIHNpbmdsZSBhcmd1bWVudC4gIEFueSB3aGl0ZXNwYWNlIGFmdGVyIHVucXVvdGVk
IGNvbW1hcwotLSMgaXMgc3RyaXBwZWQuICBUaGVyZSBpcyBhbHdheXMgb3V0cHV0LCBldmVuIHdo
ZW4gdGhlcmUgd2VyZSBubyBhcmd1bWVudHMuCi0tIwotLSMgSXQgaXMgaW1wb3J0YW50IHRvIHJl
YWxpemUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgbTRfcXVvdGUoZXhwKScgYW5kCi0tIyBgW2V4
cF0nOiBpbiB0aGUgZmlyc3QgY2FzZSB5b3Ugb2J0YWluIHRoZSBxdW90ZWQgKnJlc3VsdCogb2Yg
dGhlCi0tIyBleHBhbnNpb24gb2YgRVhQLCB3aGlsZSBpbiB0aGUgbGF0dGVyIHlvdSBqdXN0IG9i
dGFpbiB0aGUgc3RyaW5nCi0tIyBgZXhwJy4KLS1tNF9kZWZpbmUoW200X3F1b3RlXSwgIFtbJCpd
XSkKLS0KLS0KLS0jIF9tNF9xdW90ZShBUkdTKQotLSMgLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtl
IG00X3F1b3RlLCBleGNlcHQgdGhhdCB3aGVuIHRoZXJlIGFyZSBubyBhcmd1bWVudHMsIHRoZXJl
IGlzIG5vCi0tIyBvdXRwdXQuICBGb3IgY29uZGl0aW9uYWwgc2NlbmFyaW9zIChzdWNoIGFzIHBh
c3NpbmcgX200X3F1b3RlIGFzIHRoZQotLSMgbWFjcm8gbmFtZSBpbiBtNF9tYXBhbGwpLCB0aGlz
IGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgotLSMgb25lIGFyZ3Vt
ZW50IG9mIHRoZSBlbXB0eSBzdHJpbmcgdnMuIG5vIGFyZ3VtZW50cy4gIEhvd2V2ZXIsIGluIHRo
ZQotLSMgbm9ybWFsIGNhc2Ugd2l0aCBhcmd1bWVudHMgcHJlc2VudCwgdGhpcyBpcyBsZXNzIGVm
ZmljaWVudCB0aGFuIG00X3F1b3RlLgotLW00X2RlZmluZShbX200X3F1b3RlXSwKLS1bbTRfaWYo
WyQjXSwgWzBdLCBbXSwgW1skKl1dKV0pCi0tCi0tCi0tIyBtNF9yZXZlcnNlKEFSR1MpCi0tIyAt
LS0tLS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgQVJHUyBpbiByZXZlcnNlIG9yZGVyLgotLSMKLS0j
IFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRl
IGhlcmUuCi0tbTRfZGVmaW5lKFttNF9yZXZlcnNlXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbXSwg
WyQjXSwgWzFdLCBbWyQxXV0sCi0tICAgICAgIFskMChtNF9zaGlmdCgkQCkpLCBbJDFdXSldKQot
LQotLQotLSMgbTRfdW5xdW90ZShBUkdTKQotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMgUmVtb3Zl
IG9uZSBsYXllciBvZiBxdW90ZXMgZnJvbSBlYWNoIEFSRywgcGVyZm9ybWluZyBvbmUgbGV2ZWwg
b2YKLS0jIGV4cGFuc2lvbi4gIEZvciBvbmUgYXJndW1lbnQsIG00X3VucXVvdGUoW2FyZ10pIGlz
IG1vcmUgZWZmaWNpZW50IHRoYW4KLS0jIG00X2RvKFthcmddKSwgYnV0IGZvciBtdWx0aXBsZSBh
cmd1bWVudHMsIHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQKLS0jIG00X3VucXVvdGUgc2VwYXJhdGVz
IGFyZ3VtZW50cyB3aXRoIGNvbW1hcyB3aGlsZSBtNF9kbyBjb25jYXRlbmF0ZXMuCi0tIyBGb2xs
b3cgdGhpcyBtYWNybyB3aXRoIFtdIGlmIGNvbmNhdGVuYXRpb24gd2l0aCBzdWJzZXF1ZW50IHRl
eHQgaXMKLS0jIHVuZGVzaXJlZC4KLS1tNF9kZWZpbmUoW200X3VucXVvdGVdLCBbJCpdKQotLQot
LQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgOC4gSW1wbGVtZW50aW5n
IG00IGxvb3BzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLQot
LSMgbTRfZm9yKFZBUklBQkxFLCBGSVJTVCwgTEFTVCwgW1NURVAgPSArLy0xXSwgRVhQUkVTU0lP
TikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBFeHBhbmQgRVhQUkVTU0lPTiBkZWZpbmluZyBWQVJJQUJMRSB0byBGUk9NLCBG
Uk9NICsgMSwgLi4uLCBUTyB3aXRoCi0tIyBpbmNyZW1lbnRzIG9mIFNURVAuICBCb3RoIGxpbWl0
cyBhcmUgaW5jbHVkZWQsIGFuZCBib3VuZHMgYXJlCi0tIyBjaGVja2VkIGZvciBjb25zaXN0ZW5j
eS4gIFRoZSBhbGdvcml0aG0gaXMgcm9idXN0IHRvIGluZGlyZWN0Ci0tIyBWQVJJQUJMRSBuYW1l
cy4gIENoYW5naW5nIFZBUklBQkxFIGluc2lkZSBFWFBSRVNTSU9OIHdpbGwgbm90IGltcGFjdAot
LSMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zLgotLSMKLS0jIFVzZXMgX200X2RlZm4gZm9yIHNw
ZWVkLCBhbmQgYXZvaWQgZG5sIGluIHRoZSBtYWNybyBib2R5LiAgRmFjdG9yCi0tIyB0aGUgX200
X2ZvciBjYWxsIHNvIHRoYXQgRVhQUkVTU0lPTiBpcyBvbmx5IHBhcnNlZCBvbmNlLgotLW00X2Rl
ZmluZShbbTRfZm9yXSwKLS1bbTRfcHVzaGRlZihbJDFdLCBtNF9ldmFsKFskMl0pKV1kbmwKLS1b
bTRfY29uZChbbTRfZXZhbCgoWyQzXSkgPiAoWyQyXSkpXSwgMSwKLS0JICAgW200X3B1c2hkZWYo
W19tNF9zdGVwXSwgbTRfZXZhbChtNF9kZWZhdWx0X3F1b3RlZChbJDRdLAotLQkgICAgICAxKSkp
bTRfYXNzZXJ0KF9tNF9zdGVwID4gMClfJDAoX200X2RlZm4oWyQxXSksCi0tICBtNF9ldmFsKCgo
WyQzXSkgLSAoWyQyXSkpIC8gX200X3N0ZXAgKiBfbTRfc3RlcCArIChbJDJdKSksIF9tNF9zdGVw
LF0sCi0tCSBbbTRfZXZhbCgoWyQzXSkgPCAoWyQyXSkpXSwgMSwKLS0JICAgW200X3B1c2hkZWYo
W19tNF9zdGVwXSwgbTRfZXZhbChtNF9kZWZhdWx0X3F1b3RlZChbJDRdLAotLQkgICAgICAtMSkp
KW00X2Fzc2VydChfbTRfc3RlcCA8IDApXyQwKF9tNF9kZWZuKFskMV0pLAotLSAgbTRfZXZhbCgo
KFskMl0pIC0gKFskM10pKSAvIC0oX200X3N0ZXApICogX200X3N0ZXAgKyAoWyQyXSkpLCBfbTRf
c3RlcCxdLAotLQkgW200X3B1c2hkZWYoW19tNF9zdGVwXSlfJDAoX200X2RlZm4oWyQxXSksIF9t
NF9kZWZuKFskMV0pLCAwLF0pXWRubAotLVtbbTRfZGVmaW5lKFskMV0sXSwgWykkNV0pbTRfcG9w
ZGVmKFtfbTRfc3RlcF0sIFskMV0pXSkKLS0KLS0jIF9tNF9mb3IoQ09VTlQsIExBU1QsIFNURVAs
IFBSRSwgUE9TVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0j
IENvcmUgb2YgdGhlIGxvb3AsIG5vIGNvbnNpc3RlbmN5IGNoZWNrcywgYWxsIGFyZ3VtZW50cyBh
cmUgcGxhaW4KLS0jIG51bWJlcnMuICBFeHBhbmQgUFJFW0NPVU5UXVBPU1QsIHRoZW4gYWx0ZXIg
Q09VTlQgYnkgU1RFUCBhbmQKLS0jIGl0ZXJhdGUgaWYgQ09VTlQgaXMgbm90IExBU1QuCi0tbTRf
ZGVmaW5lKFtfbTRfZm9yXSwKLS1bJDRbJDFdJDVbXW00X2lmKFskMV0sIFskMl0sIFtdLAotLQkJ
IFskMChtNF9ldmFsKFskMSArICQzXSksIFskMl0sIFskM10sIFskNF0sIFskNV0pXSldKQotLQot
LQotLSMgSW1wbGVtZW50aW5nIGBmb3JlYWNoJyBsb29wcyBpbiBtNCBpcyBtdWNoIG1vcmUgdHJp
Y2t5IHRoYW4gaXQgbWF5Ci0tIyBzZWVtLiAgRm9yIGV4YW1wbGUsIHRoZSBvbGQgTTQgMS40LjQg
bWFudWFsIGhhZCBhbiBpbmNvcnJlY3QgZXhhbXBsZSwKLS0jIHdoaWNoIGxvb2tlZCBsaWtlIHRo
aXMgKHdoZW4gdHJhbnNsYXRlZCB0byBtNHN1Z2FyKToKLS0jCi0tIyB8ICMgZm9yZWFjaChWQVIs
IChMSVNUKSwgU1RNVCkKLS0jIHwgbTRfZGVmaW5lKFtmb3JlYWNoXSwKLS0jIHwgICBbbTRfcHVz
aGRlZihbJDFdKV9mb3JlYWNoKFskMV0sIFskMl0sIFskM10pbTRfcG9wZGVmKFskMV0pXSkKLS0j
IHwgbTRfZGVmaW5lKFtfYXJnMV0sIFskMV0pCi0tIyB8IG00X2RlZmluZShbX2ZvcmVhY2hdLAot
LSMgfCAgIFttNF9pZihbJDJdLCBbKCldLCAsCi0tIyB8ICAgICBbbTRfZGVmaW5lKFskMV0sIF9h
cmcxJDIpJDNbXV9mb3JlYWNoKFskMV0sIChtNF9zaGlmdCQyKSwgWyQzXSldKV0pCi0tIwotLSMg
QnV0IHRoZW4gaWYgeW91IHJ1bgotLSMKLS0jIHwgbTRfZGVmaW5lKGEsIDEpCi0tIyB8IG00X2Rl
ZmluZShiLCAyKQotLSMgfCBtNF9kZWZpbmUoYywgMykKLS0jIHwgZm9yZWFjaChbZl0sIFsoW2Fd
LCBbKGJdLCBbYyldKV0sIFtlY2hvIGYKLS0jIHwgXSkKLS0jCi0tIyBpdCBnaXZlcwotLSMKLS0j
ICA9PiBlY2hvIDEKLS0jICA9PiBlY2hvICgyLDMpCi0tIwotLSMgd2hpY2ggaXMgbm90IHdoYXQg
aXMgZXhwZWN0ZWQuCi0tIwotLSMgT2YgY291cnNlIHRoZSBwcm9ibGVtIGlzIHRoYXQgbWFueSBx
dW90ZXMgYXJlIG1pc3NpbmcuICBTbyB5b3UgYWRkCi0tIyBwbGVudHkgb2YgcXVvdGVzIGF0IHJh
bmRvbSBwbGFjZXMsIHVudGlsIHlvdSByZWFjaCB0aGUgZXhwZWN0ZWQKLS0jIHJlc3VsdC4gIEFs
dGVybmF0aXZlbHksIGlmIHlvdSBhcmUgYSBxdW90aW5nIHdpemFyZCwgeW91IGRpcmVjdGx5Ci0t
IyByZWFjaCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIChidXQgaWYgeW91IHJlYWxseSBk
aWQsIHRoZW4KLS0jIGFwcGx5IHRvIHRoZSBtYWludGVuYW5jZSBvZiBtNHN1Z2FyISkuCi0tIwot
LSMgfCAjIGZvcmVhY2goVkFSLCAoTElTVCksIFNUTVQpCi0tIyB8IG00X2RlZmluZShbZm9yZWFj
aF0sIFttNF9wdXNoZGVmKFskMV0pX2ZvcmVhY2goJEApbTRfcG9wZGVmKFskMV0pXSkKLS0jIHwg
bTRfZGVmaW5lKFtfYXJnMV0sIFtbJDFdXSkKLS0jIHwgbTRfZGVmaW5lKFtfZm9yZWFjaF0sCi0t
IyB8ICBbbTRfaWYoJDIsIFsoKV0sICwKLS0jIHwgICAgW200X2RlZmluZShbJDFdLCBbX2FyZzEk
Ml0pJDNbXV9mb3JlYWNoKFskMV0sIFsobTRfc2hpZnQkMildLCBbJDNdKV0pXSkKLS0jCi0tIyB3
aGljaCB0aGlzIHRpbWUgYW5zd2VycwotLSMKLS0jICA9PiBlY2hvIGEKLS0jICA9PiBlY2hvIChi
Ci0tIyAgPT4gZWNobyBjKQotLSMKLS0jIEJpbmdvIQotLSMKLS0jIFdlbGwsIG5vdCBxdWl0ZS4K
LS0jCi0tIyBXaXRoIGEgYmV0dGVyIGxvb2ssIHlvdSByZWFsaXplIHRoYXQgdGhlIHBhcmVucyBh
cmUgbW9yZSBhIHBhaW4gdGhhbgotLSMgYSBoZWxwOiBzaW5jZSBhbnl3YXkgeW91IG5lZWQgdG8g
cXVvdGUgcHJvcGVybHkgdGhlIGxpc3QsIHlvdSBlbmQgdXAKLS0jIHdpdGggYWx3YXlzIHVzaW5n
IGFuIG91dGVybW9zdCBwYWlyIG9mIHBhcmVucyBhbmQgYW4gb3V0ZXJtb3N0IHBhaXIKLS0jIG9m
IHF1b3Rlcy4gIFJlamVjdGluZyB0aGUgcGFyZW5zIGJvdGggZWFzZXMgdGhlIGltcGxlbWVudGF0
aW9uLCBhbmQKLS0jIHNpbXBsaWZpZXMgdGhlIHVzZToKLS0jCi0tIyB8ICMgZm9yZWFjaChWQVIs
IChMSVNUKSwgU1RNVCkKLS0jIHwgbTRfZGVmaW5lKFtmb3JlYWNoXSwgW200X3B1c2hkZWYoWyQx
XSlfZm9yZWFjaCgkQCltNF9wb3BkZWYoWyQxXSldKQotLSMgfCBtNF9kZWZpbmUoW19hcmcxXSwg
WyQxXSkKLS0jIHwgbTRfZGVmaW5lKFtfZm9yZWFjaF0sCi0tIyB8ICBbbTRfaWYoJDIsIFtdLCAs
Ci0tIyB8ICAgIFttNF9kZWZpbmUoWyQxXSwgW19hcmcxKCQyKV0pJDNbXV9mb3JlYWNoKFskMV0s
IFttNF9zaGlmdCgkMildLCBbJDNdKV0pXSkKLS0jCi0tIwotLSMgTm93LCBqdXN0IHJlcGxhY2Ug
dGhlIGAkMicgd2l0aCBgbTRfcXVvdGUoJDIpJyBpbiB0aGUgb3V0ZXIgYG00X2lmJwotLSMgdG8g
aW1wcm92ZSByb2J1c3RuZXNzLCBhbmQgeW91IGNvbWUgdXAgd2l0aCBhIG5pY2UgaW1wbGVtZW50
YXRpb24KLS0jIHRoYXQgZG9lc24ndCByZXF1aXJlIGV4dHJhIHBhcmVudGhlc2VzIGluIHRoZSB1
c2VyJ3MgTElTVC4KLS0jCi0tIyBCdXQgd2FpdCAtICBub3cgdGhlIGFsZ29yaXRobSBpcyBxdWFk
cmF0aWMsIGJlY2F1c2UgZXZlcnkgcmVjdXJzaW9uIG9mCi0tIyB0aGUgYWxnb3JpdGhtIGtlZXBz
IHRoZSBlbnRpcmUgTElTVCBhbmQgbWVyZWx5IGFkZHMgYW5vdGhlciBtNF9zaGlmdCB0bwotLSMg
dGhlIHF1b3RlZCB0ZXh0LiAgSWYgdGhlIHVzZXIgaGFzIGEgbG90IG9mIGVsZW1lbnRzIGluIExJ
U1QsIHlvdSBjYW4KLS0jIGJyaW5nIHRoZSBzeXN0ZW0gdG8gaXRzIGtuZWVzIHdpdGggdGhlIG1l
bW9yeSBtNCB0aGVuIHJlcXVpcmVzLCBvciB0cmlwCi0tIyB0aGUgbTQgLS1uZXN0aW5nLWxpbWl0
IHJlY3Vyc2lvbiBmYWN0b3IuICBUaGUgb25seSB3YXkgdG8gYXZvaWQKLS0jIHF1YWRyYXRpYyBn
cm93dGggaXMgZW5zdXJlIG00X3NoaWZ0IGlzIGV4cGFuZGVkIHByaW9yIHRvIHRoZSByZWN1cnNp
b24uCi0tIyBIZW5jZSB0aGUgZGVzaWduIGJlbG93LgotLSMKLS0jIFRoZSBNNCBtYW51YWwgbm93
IGluY2x1ZGVzIGEgY2hhcHRlciBkZXZvdGVkIHRvIHRoaXMgaXNzdWUsIHdpdGgKLS0jIHRoZSBs
ZXNzb25zIGxlYXJuZWQgZnJvbSBtNHN1Z2FyLiAgQW5kIHN0aWxsLCB0aGlzIGRlc2lnbiBpcyBv
bmx5Ci0tIyBvcHRpbWFsIGZvciBNNCAxLjY7IHNlZSBmb3JlYWNoLm00IGZvciB5ZXQgbW9yZSBj
b21tZW50cyBvbiB3aHkKLS0jIE00IDEuNC54IHVzZXMgeWV0IGFub3RoZXIgaW1wbGVtZW50YXRp
b24uCi0tCi0tCi0tIyBtNF9mb3JlYWNoKFZBUklBQkxFLCBMSVNULCBFWFBSRVNTSU9OKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jCi0tIyBFeHBhbmQgRVhQ
UkVTU0lPTiBhc3NpZ25pbmcgZWFjaCB2YWx1ZSBvZiB0aGUgTElTVCB0byBWQVJJQUJMRS4KLS0j
IExJU1Qgc2hvdWxkIGhhdmUgdGhlIGZvcm0gYGl0ZW1fMSwgaXRlbV8yLCAuLi4sIGl0ZW1fbics
IGkuZS4gdGhlCi0tIyB3aG9sZSBsaXN0IG11c3QgKnF1b3RlZCouICBRdW90ZSBtZW1iZXJzIHRv
byBpZiB5b3UgZG9uJ3Qgd2FudCB0aGVtCi0tIyB0byBiZSBleHBhbmRlZC4KLS0jCi0tIyBUaGlz
IG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9sczoKLS0jICAgICAgfCBtNF9kZWZpbmUo
YWN0aXZlLCBbQUNULCBJVkVdKQotLSMgICAgICB8IG00X2ZvcmVhY2goVmFyLCBbYWN0aXZlLCBh
Y3RpdmVdLCBbLVZhci1dKQotLSMgICAgID0+IC1BQ1QtLUlWRS0tQUNULS1JVkUtCi0tIwotLSMg
ICAgICB8IG00X2ZvcmVhY2goVmFyLCBbW2FjdGl2ZV0sIFthY3RpdmVdXSwgWy1WYXItXSkKLS0j
ICAgICA9PiAtQUNULCBJVkUtLUFDVCwgSVZFLQotLSMKLS0jICAgICAgfCBtNF9mb3JlYWNoKFZh
ciwgW1tbYWN0aXZlXV0sIFtbYWN0aXZlXV1dLCBbLVZhci1dKQotLSMgICAgID0+IC1hY3RpdmUt
LWFjdGl2ZS0KLS0jCi0tIyBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBhdm9p
ZCBleHRyYSBleHBhbnNpb25zIHN1Y2ggYXMKLS0jIG00X2lmdmFsIGFuZCBkbmwuICBBbHNvLCBz
aW5jZSAkMiBtaWdodCBiZSBxdWl0ZSBsYXJnZSwgdHJ5IHRvIHVzZSBpdAotLSMgYXMgbGl0dGxl
IGFzIHBvc3NpYmxlIGluIF9tNF9mb3JlYWNoOyBlYWNoIGV4dHJhIHVzZSByZXF1aXJlcyB0aGF0
IG11Y2gKLS0jIG1vcmUgbWVtb3J5IGZvciBleHBhbnNpb24uICBTbywgcmF0aGVyIHRoYW4gZGly
ZWN0bHkgY29tcGFyZSAkMiBhZ2FpbnN0Ci0tIyBbXSBhbmQgdXNlIG00X2Nhci9tNF9jZHIgZm9y
IHJlY3Vyc2lvbiwgd2UgaW5zdGVhZCB1bmJveCB0aGUgbGlzdCAod2hpY2gKLS0jIHJlcXVpcmVz
IHN3YXBwaW5nIHRoZSBhcmd1bWVudCBvcmRlciBpbiB0aGUgaGVscGVyKSwgaW5zZXJ0IGFuIGln
bm9yZWQKLS0jIHRoaXJkIGFyZ3VtZW50LCBhbmQgdXNlIG00X3NoaWZ0MyB0byBkZXRlY3Qgd2hl
biByZWN1cnNpb24gaXMgY29tcGxldGUsCi0tIyBhdCB3aGljaCBwb2ludCB0aGlzIGxvb2tzIHZl
cnkgbXVjaCBsaWtlIG00X21hcF9hcmdzLgotLW00X2RlZmluZShbbTRfZm9yZWFjaF0sCi0tW200
X2lmKFskMl0sIFtdLCBbXSwKLS0gICAgICAgW200X3B1c2hkZWYoWyQxXSlfJDAoW200X2RlZmlu
ZShbJDFdLF0sIFspJDNdLCBbXSwKLS0gICQyKW00X3BvcGRlZihbJDFdKV0pXSkKLS0KLS0jIF9t
NF9mb3JlYWNoKFBSRSwgUE9TVCwgSUdOT1JFRCwgQVJHLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBGb3JtIHRoZSBjb21tb24gYmFzaXMgb2YgdGhl
IG00X2ZvcmVhY2ggYW5kIG00X21hcCBtYWNyb3MuICBGb3IgZWFjaAotLSMgQVJHLCBleHBhbmQg
UFJFW0FSR11QT1NUW10uICBUaGUgSUdOT1JFRCBhcmd1bWVudCBtYWtlcyByZWN1cnNpb24KLS0j
IGVhc2llciwgYW5kIG11c3QgYmUgc3VwcGxpZWQgcmF0aGVyIHRoYW4gaW1wbGljaXQuCi0tIwot
LSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1h
ZGUgaGVyZS4KLS1tNF9kZWZpbmUoW19tNF9mb3JlYWNoXSwKLS1bbTRfaWYoWyQjXSwgWzNdLCBb
XSwKLS0gICAgICAgWyQxWyQ0XSQyW10kMChbJDFdLCBbJDJdLCBtNF9zaGlmdDMoJEApKV0pXSkK
LS0KLS0KLS0jIG00X2ZvcmVhY2hfdyhWQVJJQUJMRSwgTElTVCwgRVhQUkVTU0lPTikKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgbTRfZm9yZWFj
aCwgYnV0IHRoZSBsaXN0IGlzIHdoaXRlc3BhY2Ugc2VwYXJhdGVkLiAgRGVwZW5kaW5nIG9uCi0t
IyBFWFBSRVNTSU9OLCBpdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQgdG8gdXNlIG00X21hcF9hcmdz
X3cuCi0tIwotLSMgVGhpcyBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZlIHN5bWJvbHM6Ci0tIyAg
ICBtNF9mb3JlYWNoX3coW1Zhcl0sIFsgYWN0aXZlCi0tIyAgICBiCWFjdFwKLS0jICAgIGl2ZSAg
XSwgWy1WYXItXSllbmQKLS0jICAgID0+IC1hY3RpdmUtLWItLWFjdGl2ZS1lbmQKLS0jCi0tIyBU
aGlzIHVzZWQgdG8gdXNlIGEgc2xvd2VyIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIG00X2ZvcmVh
Y2g6Ci0tIyAgIG00X2ZvcmVhY2goWyQxXSwgbTRfc3BsaXQobTRfbm9ybWFsaXplKFskMl0pLCBb
IF0pLCBbJDNdKQotLW00X2RlZmluZShbbTRfZm9yZWFjaF93XSwKLS1bbTRfcHVzaGRlZihbJDFd
KW00X21hcF9hcmdzX3coWyQyXSwKLS0gIFttNF9kZWZpbmUoWyQxXSxdLCBbKSQzXSltNF9wb3Bk
ZWYoWyQxXSldKQotLQotLQotLSMgbTRfbWFwKE1BQ1JPLCBMSVNUKQotLSMgbTRfbWFwYWxsKE1B
Q1JPLCBMSVNUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSW52b2tlIE1BQ1JPKCQx
KSwgTUFDUk8oJDIpIGV0Yy4gd2hlcmUgJDEsICQyLi4uIGFyZSB0aGUgZWxlbWVudHMgb2YKLS0j
IExJU1QuICAkMSwgJDIuLi4gbXVzdCBpbiB0dXJuIGJlIGxpc3RzLCBhcHByb3ByaWF0ZSBmb3Ig
bTRfYXBwbHkuCi0tIyBJZiBMSVNUIGNvbnRhaW5zIGFuIGVtcHR5IHN1Ymxpc3QsIG00X21hcCBz
a2lwcyB0aGUgZXhwYW5zaW9uIG9mCi0tIyBNQUNSTywgd2hpbGUgbTRfbWFwYWxsIGV4cGFuZHMg
TUFDUk8gd2l0aCBubyBhcmd1bWVudHMuCi0tIwotLSMgU2luY2UgTElTVCBtYXkgYmUgcXVpdGUg
bGFyZ2UsIHdlIHdhbnQgdG8gbWluaW1pemUgaG93IG9mdGVuIGl0Ci0tIyBhcHBlYXJzIGluIHRo
ZSBleHBhbnNpb24uICBSYXRoZXIgdGhhbiB1c2UgbTRfY2FyL200X2NkciBpdGVyYXRpb24sCi0t
IyB3ZSB1bmJveCB0aGUgbGlzdCwgYW5kIHVzZSBfbTRfZm9yZWFjaCBmb3IgaXRlcmF0aW9uLiAg
Rm9yIG00X21hcCwKLS0jIGFuIGVtcHR5IGxpc3QgYmVoYXZlcyBsaWtlIGFuIGVtcHR5IHN1Ymxp
c3QgYW5kIGdldHMgaWdub3JlZDsgZm9yCi0tIyBtNF9tYXBhbGwsIHdlIG11c3Qgc3BlY2lhbC1j
YXNlIHRoZSBlbXB0eSBsaXN0LgotLW00X2RlZmluZShbbTRfbWFwXSwKLS1bX200X2ZvcmVhY2go
W19tNF9hcHBseShbJDFdLF0sIFspXSwgW10sICQyKV0pCi0tCi0tbTRfZGVmaW5lKFttNF9tYXBh
bGxdLAotLVttNF9pZihbJDJdLCBbXSwgW10sCi0tICAgICAgIFtfbTRfZm9yZWFjaChbbTRfYXBw
bHkoWyQxXSxdLCBbKV0sIFtdLCAkMildKV0pCi0tCi0tCi0tIyBtNF9tYXBfc2VwKE1BQ1JPLCBb
U0VQQVJBVE9SXSwgTElTVCkKLS0jIG00X21hcGFsbF9zZXAoTUFDUk8sIFtTRVBBUkFUT1JdLCBM
SVNUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJbnZv
a2UgTUFDUk8oJDEpLCBTRVBBUkFUT1IsIE1BQ1JPKCQyKSwgLi4uLCBNQUNSTygkTikgd2hlcmUg
JDEsCi0tIyAkMi4uLiAkTiBhcmUgdGhlIGVsZW1lbnRzIG9mIExJU1QsIGFuZCBhcmUgaW4gdHVy
biBsaXN0cyBhcHByb3ByaWF0ZQotLSMgZm9yIG00X2FwcGx5LiAgU0VQQVJBVE9SIGlzIGV4cGFu
ZGVkLCBpbiBvcmRlciB0byBhbGxvdyB0aGUgY3JlYXRpb24KLS0jIG9mIGEgbGlzdCBvZiBhcmd1
bWVudHMgYnkgdXNpbmcgYSBzaW5nbGUtcXVvdGVkIGNvbW1hIGFzIHRoZQotLSMgc2VwYXJhdG9y
LiAgRm9yIGVhY2ggZW1wdHkgc3VibGlzdCwgbTRfbWFwX3NlcCBza2lwcyB0aGUgZXhwYW5zaW9u
Ci0tIyBvZiBNQUNSTyBhbmQgU0VQQVJBVE9SLCB3aGlsZSBtNF9tYXBhbGxfc2VwIGV4cGFuZHMg
TUFDUk8gd2l0aCBubwotLSMgYXJndW1lbnRzLgotLSMKLS0jIEZvciBtNF9tYXBhbGxfc2VwLCBt
ZXJlbHkgZXhwYW5kIHRoZSBmaXJzdCBpdGVyYXRpb24gd2l0aG91dCB0aGUKLS0jIHNlcGFyYXRv
ciwgdGhlbiBpbmNsdWRlIHNlcGFyYXRvciBhcyBwYXJ0IG9mIHN1YnNlcXVlbnQgcmVjdXJzaW9u
OwotLSMgYnV0IGF2b2lkIGV4dHJhIGV4cGFuc2lvbiBvZiBMSVNUJ3Mgc2lkZS1lZmZlY3RzIHZp
YSBhIGhlbHBlciBtYWNyby4KLS0jIEZvciBtNF9tYXBfc2VwLCB0aGluZ3MgYXJlIHRyaWNraWVy
IC0gd2UgZG9uJ3Qga25vdyBpZiB0aGUgZmlyc3QKLS0jIGxpc3QgZWxlbWVudCBpcyBhbiBlbXB0
eSBzdWJsaXN0LCBzbyB3ZSBtdXN0IGRlZmluZSBhIHNlbGYtbW9kaWZ5aW5nCi0tIyBoZWxwZXIg
bWFjcm8gYW5kIHVzZSB0aGF0IGFzIHRoZSBzZXBhcmF0b3IgaW5zdGVhZC4KLS1tNF9kZWZpbmUo
W200X21hcF9zZXBdLAotLVttNF9wdXNoZGVmKFttNF9TZXBdLCBbbTRfZGVmaW5lKFttNF9TZXBd
LCBfbTRfZGVmbihbbTRfdW5xdW90ZV0pKV0pXWRubAotLVtfbTRfZm9yZWFjaChbX200X2FwcGx5
KFttNF9TZXAoWyQyXSlbXSQxXSxdLCBbKV0sIFtdLCAkMyltNF9wb3BkZWYoW200X1NlcF0pXSkK
LS0KLS1tNF9kZWZpbmUoW200X21hcGFsbF9zZXBdLAotLVttNF9pZihbJDNdLCBbXSwgW10sIFtf
JDAoWyQxXSwgWyQyXSwgJDMpXSldKQotLQotLW00X2RlZmluZShbX200X21hcGFsbF9zZXBdLAot
LVttNF9hcHBseShbJDFdLCBbJDNdKV9tNF9mb3JlYWNoKFttNF9hcHBseShbJDJbXSQxXSxdLCBb
KV0sIG00X3NoaWZ0MigkQCkpXSkKLS0KLS0jIG00X21hcF9hcmdzKEVYUFJFU1NJT04sIEFSRy4u
LikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCBFWFBSRVNT
SU9OKFtBUkddKSBmb3IgZWFjaCBhcmd1bWVudC4gIE1vcmUgZWZmaWNpZW50IHRoYW4KLS0jICAg
bTRfZm9yZWFjaChbdmFyXSwgW0FSRy4uLl0sIFtFWFBSRVNTSU9OKG00X2RlZm4oW3Zhcl0pKV0p
Ci0tIyBTaG9ydGhhbmQgZm9yIG00X21hcF9hcmdzX3NlcChbRVhQUkVTU0lPTihdLCBbKV0sIFtd
LCBBUkcuLi4pLgotLW00X2RlZmluZShbbTRfbWFwX2FyZ3NdLAotLVttNF9pZihbJCNdLCBbMF0s
IFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKLS0gICAgICAgWyQjXSwg
WzFdLCBbXSwKLS0gICAgICAgWyQjXSwgWzJdLCBbJDEoWyQyXSlbXV0sCi0tICAgICAgIFtfbTRf
Zm9yZWFjaChbJDEoXSwgWyldLCAkQCldKV0pCi0tCi0tCi0tIyBtNF9tYXBfYXJnc19wYWlyKEVY
UFJFU1NJT04sIFtFTkQtRVhQUiA9IEVYUFJFU1NJT05dLCBBUkcuLi4pCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQ
ZXJmb3JtIGEgcGFpcndpc2UgZ3JvdXBpbmcgb2YgY29uc2VjdXRpdmUgQVJHcywgYnkgZXhwYW5k
aW5nCi0tIyBFWFBSRVNTSU9OKFtBUkcxXSwgW0FSRzJdKS4gIElmIHRoZXJlIGFyZSBhbiBvZGQg
bnVtYmVyIG9mIEFSR3MsIHRoZQotLSMgZmluYWwgYXJndW1lbnQgaXMgZXhwYW5kZWQgd2l0aCBF
TkQtRVhQUihbQVJHbl0pLgotLSMKLS0jIEZvciBleGFtcGxlOgotLSMgICBtNF9kZWZpbmUoW3No
b3ddLCBbKCQqKW00X25ld2xpbmVdKWRubAotLSMgICBtNF9tYXBfYXJnc19wYWlyKFtzaG93XSwg
W10sIFthXSwgW2JdLCBbY10sIFtkXSwgW2VdKWRubAotLSMgICA9PiAoYSxiKQotLSMgICA9PiAo
YyxkKQotLSMgICA9PiAoZSkKLS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMg
d2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShbbTRfbWFwX2FyZ3Nf
cGFpcl0sCi0tW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVu
dHM6ICQjXSldLAotLSAgICAgICBbJCNdLCBbMV0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJn
dW1lbnRzOiAkIzogJDFdKV0sCi0tICAgICAgIFskI10sIFsyXSwgW10sCi0tICAgICAgIFskI10s
IFszXSwgW200X2RlZmF1bHQoWyQyXSwgWyQxXSkoWyQzXSlbXV0sCi0tICAgICAgIFskI10sIFs0
XSwgWyQxKFskM10sIFskNF0pW11dLAotLSAgICAgICBbJDEoWyQzXSwgWyQ0XSlbXSQwKFskMV0s
IFskMl0sIG00X3NoaWZ0KG00X3NoaWZ0MygkQCkpKV0pXSkKLS0KLS0KLS0jIG00X21hcF9hcmdz
X3NlcChbUFJFXSwgW1BPU1RdLCBbU0VQXSwgQVJHLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgUFJFW0FSR11QT1NUIGZvciBl
YWNoIGFyZ3VtZW50LCB3aXRoIFNFUCBiZXR3ZWVuIGFyZ3VtZW50cy4KLS1tNF9kZWZpbmUoW200
X21hcF9hcmdzX3NlcF0sCi0tW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZl
dyBhcmd1bWVudHM6ICQjXSldLAotLSAgICAgICBbJCNdLCBbMV0sIFtdLAotLSAgICAgICBbJCNd
LCBbMl0sIFtdLAotLSAgICAgICBbJCNdLCBbM10sIFtdLAotLSAgICAgICBbJCNdLCBbNF0sIFsk
MVskNF0kMltdXSwKLS0gICAgICAgWyQxWyQ0XSQyW11fbTRfZm9yZWFjaChbJDNbXSQxXSwgWyQy
XSwgbTRfc2hpZnQzKCRAKSldKV0pCi0tCi0tCi0tIyBtNF9tYXBfYXJnc193KFNUUklORywgW1BS
RV0sIFtQT1NUXSwgW1NFUF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBQZXJmb3JtIHRoZSBleHBhbnNpb24gb2YgUFJFW3dvcmRdUE9TVFtdIGZv
ciBlYWNoIHdvcmQgaW4gU1RSSU5HCi0tIyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4gIE1vcmUg
ZWZmaWNpZW50IHRoYW46Ci0tIyAgIG00X2ZvcmVhY2hfdyhbdmFyXSwgW1NUUklOR10sIFtQUkVb
XW00X2RlZm4oW3Zhcl0pUE9TVF0pCi0tIyBBZGRpdGlvbmFsbHksIGV4cGFuZCBTRVAgYmV0d2Vl
biB3b3Jkcy4KLS0jCi0tIyBBcyBsb25nIGFzIHdlIGhhdmUgdG8gdXNlIG00X2JwYXRzdWJzdCB0
byBzcGxpdCB0aGUgc3RyaW5nLCB3ZSBtaWdodAotLSMgYXMgd2VsbCBtYWtlIGl0IGFsc28gYXBw
bHkgUFJFIGFuZCBQT1NUOyB0aGlzIGF2b2lkcyBpdGVyYXRpb24KLS0jIGFsdG9nZXRoZXIuICBC
dXQgd2UgbXVzdCBiZSBjYXJlZnVsIG9mIGFueSBcIGluIFBSRSBvciBQT1NULgotLSMgX200X3N0
cmlwIHJldHVybnMgYSBxdW90ZWQgc3RyaW5nLCBidXQgdGhhdCdzIG9rYXksIHNpbmNlIGl0IGFs
c28KLS0jIHN1cHBsaWVzIGFuIGVtcHR5IGxlYWRpbmcgYW5kIHRyYWlsaW5nIGFyZ3VtZW50IGR1
ZSB0byBvdXIKLS0jIGludGVudGlvbmFsIHdoaXRlc3BhY2UgYXJvdW5kIFNUUklORy4gIFdlIHVz
ZSBtNF9zdWJzdHIgdG8gc3RyaXAgdGhlCi0tIyBlbXB0eSBlbGVtZW50cyBhbmQgcmVtb3ZlIHRo
ZSBleHRyYSBsYXllciBvZiBxdW90aW5nLgotLW00X2RlZmluZShbbTRfbWFwX2FyZ3Nfd10sCi0t
W18kMChfbTRfc3BsaXQoWyBdbTRfZmxhdHRlbihbJDFdKVsgXSwgW1sJIF0rXSwKLS0JICAgICAg
IG00X2lmKG00X2luZGV4KFskMiQzJDRdLCBbXF0pLCBbLTFdLCBbWyQzW10kNFtdJDJdXSwKLS0J
CSAgICAgW200X2JwYXRzdWJzdChbWyQzW10kNFtdJDJdXSwgW1xcXSwgW1xcXFxdKV0pKSwKLS0g
ICAgIG00X2xlbihbW10kM1tdJDRdKSwgbTRfbGVuKFskNFtdJDJbXV0pKV0pCi0tCi0tbTRfZGVm
aW5lKFtfbTRfbWFwX2FyZ3Nfd10sCi0tW200X3N1YnN0cihbJDFdLCBbJDJdLCBtNF9ldmFsKG00
X2xlbihbJDFdKSAtIFskMl0gLSBbJDNdKSldKQotLQotLQotLSMgbTRfc3RhY2tfZm9yZWFjaChN
QUNSTywgRlVOQykKLS0jIG00X3N0YWNrX2ZvcmVhY2hfbGlmbyhNQUNSTywgRlVOQykKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFBhc3MgZWFjaCBzdGFja2VkIGRl
ZmluaXRpb24gb2YgTUFDUk8gdG8gdGhlIG9uZS1hcmd1bWVudCBtYWNybyBGVU5DLgotLSMgbTRf
c3RhY2tfZm9yZWFjaCBwcm9jZWVkcyBpbiBGSUZPIG9yZGVyLCB3aGlsZSBtNF9zdGFja19mb3Jl
YWNoX2xpZm8KLS0jIHByb2Nlc3NlcyB0aGUgdG9wbW9zdCBkZWZpbml0aW9ucyBmaXJzdC4gIElu
IGFkZGl0aW9uLCBGVU5DIHNob3VsZAotLSMgbm90IHB1c2ggb3IgcG9wIGRlZmluaXRpb25zIG9m
IE1BQ1JPLCBhbmQgc2hvdWxkIG5vdCBleHBlY3QgYW55dGhpbmcgYWJvdXQKLS0jIHRoZSBhY3Rp
dmUgZGVmaW5pdGlvbiBvZiBNQUNSTyAoaXQgd2lsbCBub3QgYmUgdGhlIHRvcG1vc3QsIGFuZCBt
YXkgbm90Ci0tIyBiZSB0aGUgb25lIHBhc3NlZCB0byBGVU5DIGVpdGhlcikuCi0tIwotLSMgU29t
ZSBtYWNyb3Mgc2ltcGx5IGNhbid0IGJlIGV4YW1pbmVkIHdpdGggdGhpcyBtZXRob2Q6IG5hbWVs
eSwKLS0jIGFueXRoaW5nIGludm9sdmVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBfbTRfc3Rh
Y2tfcmV2ZXJzZS4KLS1tNF9kZWZpbmUoW200X3N0YWNrX2ZvcmVhY2hdLAotLVtfbTRfc3RhY2tf
cmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSldZG5sCi0tW19tNF9zdGFja19yZXZlcnNlKFttNF90
bXAtJDFdLCBbJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0pKV0pXSkKLS0KLS1tNF9kZWZp
bmUoW200X3N0YWNrX2ZvcmVhY2hfbGlmb10sCi0tW19tNF9zdGFja19yZXZlcnNlKFskMV0sIFtt
NF90bXAtJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0pKV0pXWRubAotLVtfbTRfc3RhY2tf
cmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSldKQotLQotLSMgbTRfc3RhY2tfZm9yZWFjaF9zZXAo
TUFDUk8sIFtQUkVdLCBbUE9TVF0sIFtTRVBdKQotLSMgbTRfc3RhY2tfZm9yZWFjaF9zZXBfbGlm
byhNQUNSTywgW1BSRV0sIFtQT1NUXSwgW1NFUF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNpbWlsYXIgdG8gbTRfc3RhY2tf
Zm9yZWFjaCBhbmQgbTRfc3RhY2tfZm9yZWFjaF9saWZvLCBpbiB0aGF0IGV2ZXJ5Ci0tIyBkZWZp
bml0aW9uIG9mIGEgcHVzaGRlZiBzdGFjayB3aWxsIGJlIHZpc2l0ZWQuICBCdXQgcmF0aGVyIHRo
YW4KLS0jIHBhc3NpbmcgdGhlIGRlZmluaXRpb24gYXMgYSBzaW5nbGUgYXJndW1lbnQgdG8gYSBt
YWNybywgdGhpcyB2YXJpYW50Ci0tIyBleHBhbmRzIHRoZSBjb25jYXRlbmF0aW9uIG9mIFBSRVtd
ZGVmaW5pdGlvbltdUE9TVCwgYW5kIGV4cGFuZHMgU0VQCi0tIyBiZXR3ZWVuIGNvbnNlY3V0aXZl
IGV4cGFuc2lvbnMuICBOb3RlIHRoYXQgbTRfc3RhY2tfZm9yZWFjaChbYV0sIFtiXSkKLS0jIGlz
IGVxdWl2YWxlbnQgdG8gbTRfc3RhY2tfZm9yZWFjaF9zZXAoW2FdLCBbYihdLCBbKV0pLgotLW00
X2RlZmluZShbbTRfc3RhY2tfZm9yZWFjaF9zZXBdLAotLVtfbTRfc3RhY2tfcmV2ZXJzZShbJDFd
LCBbbTRfdG1wLSQxXSldZG5sCi0tW19tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFd
LCBbJDJbXV9tNF9kZWZuKFttNF90bXAtJDFdKSQzXSwgWyQ0W11dKV0pCi0tCi0tbTRfZGVmaW5l
KFttNF9zdGFja19mb3JlYWNoX3NlcF9saWZvXSwKLS1bX200X3N0YWNrX3JldmVyc2UoWyQxXSwg
W200X3RtcC0kMV0sIFskMltdX200X2RlZm4oW200X3RtcC0kMV0pJDNdLCBbJDRbXV0pXWRubAot
LVtfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSldKQotLQotLQotLSMgX200X3N0
YWNrX3JldmVyc2UoT0xELCBORVcsIFtBQ1RJT05dLCBbU0VQXSkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBBIHJlY3Vyc2l2ZSB3b3JrZXIgZm9y
IHB1c2hkZWYgc3RhY2sgbWFuaXB1bGF0aW9uLiAgRGVzdHJ1Y3RpdmVseQotLSMgY29weSB0aGUg
T0xEIHN0YWNrIGludG8gdGhlIE5FVywgYW5kIGV4cGFuZGluZyBBQ1RJT04gZm9yIGVhY2gKLS0j
IGl0ZXJhdGlvbi4gIEFmdGVyIHRoZSBmaXJzdCBpdGVyYXRpb24sIFNFUCBpcyBwcm9tb3RlZCB0
byB0aGUgZnJvbnQKLS0jIG9mIEFDVElPTiAobm90ZSB0aGF0IFNFUCBzaG91bGQgaW5jbHVkZSBh
IHRyYWlsaW5nIFtdIGlmIGl0IGlzIHRvCi0tIyBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIEFDVElP
TikuICBUaGUgY3VycmVudCBkZWZpbml0aW9uIGlzIGV4YW1pbmVkCi0tIyBhZnRlciB0aGUgTkVX
IGhhcyBiZWVuIHB1c2hlZCBidXQgYmVmb3JlIE9MRCBoYXMgYmVlbiBwb3BwZWQ7IHRoaXMKLS0j
IG9yZGVyIGlzIGltcG9ydGFudCwgYXMgQUNUSU9OIGlzIHBlcm1pdHRlZCB0byBvcGVyYXRlIG9u
IGVpdGhlcgotLSMgX200X2RlZm4oW09MRF0pIG9yIF9tNF9kZWZuKFtORVddKS4gIFNpbmNlIHRo
ZSBvcGVyYXRpb24gaXMKLS0jIGRlc3RydWN0aXZlLCB0aGlzIG1hY3JvIGlzIGdlbmVyYWxseSB1
c2VkIHR3aWNlLCB3aXRoIGEgdGVtcG9yYXJ5Ci0tIyBtYWNybyBuYW1lIGhvbGRpbmcgdGhlIHN3
YXBwZWQgY29weS4KLS1tNF9kZWZpbmUoW19tNF9zdGFja19yZXZlcnNlXSwKLS1bbTRfaWZkZWYo
WyQxXSwgW200X3B1c2hkZWYoWyQyXSwKLS0gIF9tNF9kZWZuKFskMV0pKSQzW11fbTRfcG9wZGVm
KFskMV0pJDAoWyQxXSwgWyQyXSwgWyQ0JDNdKV0pXSkKLS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyA5LiBNb3JlIGRpdmVyc2lvbiBzdXBwb3J0LiAgIyMK
LS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIG00X2NsZWFyZGl2
ZXJ0KERJVkVSU0lPTi1OQU1FLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBEaXNjYXJkIGFueSB0ZXh0IGluIERJVkVSU0lPTi1OQU1FLgotLSMKLS0jIFRoaXMg
d29ya3MgZXZlbiBpbnNpZGUgbTRfZXhwYW5kLgotLW00X2RlZmluZShbbTRfY2xlYXJkaXZlcnRd
LAotLVttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRdKV0s
Ci0tICAgICAgIFtfbTRfZGl2ZXJ0X3JhdyhbLTFdKW00X3VuZGl2ZXJ0KCRAKV9tNF9kaXZlcnRf
cmF3KAotLQkgX200X2RpdmVydChfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNpb25dKSwgWy1d
KSldKV0pCi0tCi0tCi0tIyBfbTRfZGl2ZXJ0KERJVkVSU0lPTi1OQU1FIG9yIE5VTUJFUiwgW05P
V0FSTl0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0tIyBJZiBESVZFUlNJT04tTkFNRSBpcyB0aGUgbmFtZSBvZiBhIGRpdmVyc2lvbiwgcmV0dXJu
IGl0cyBudW1iZXIsCi0tIyBvdGhlcndpc2UgaWYgaXQgaXMgYSBOVU1CRVIgcmV0dXJuIGl0LiAg
SXNzdWUgYSB3YXJuaW5nIGFib3V0Ci0tIyB0aGUgdXNlIG9mIGEgbnVtYmVyIGluc3RlYWQgb2Yg
YSBuYW1lLCB1bmxlc3MgTk9XQVJOIGlzIHByb3ZpZGVkLgotLW00X2RlZmluZShbX200X2RpdmVy
dF0sCi0tW200X2lmZGVmKFtfbTRfZGl2ZXJ0KCQxKV0sCi0tCSAgW200X2luZGlyKFtfbTRfZGl2
ZXJ0KCQxKV0pXSwKLS0JICBbbTRfaWYoWyQyXSwgW10sIFttNF93YXJuKFtzeW50YXhdLAotLQkg
ICAgIFtwcmVmZXIgbmFtZWQgZGl2ZXJzaW9uc10pXSkkMV0pXSkKLS0KLS0jIEtJTEwgaXMgb25s
eSB1c2VkIHRvIHN1cHByZXNzIG91dHB1dC4KLS1tNF9kZWZpbmUoW19tNF9kaXZlcnQoS0lMTCld
LCAgICAgICAgICAgLTEpCi0tCi0tIyBUaGUgZW1wdHkgZGl2ZXJzaW9uIG5hbWUgaXMgYSBzeW5v
bnltIGZvciAwLgotLW00X2RlZmluZShbX200X2RpdmVydCgpXSwgICAgICAgICAgICAgICAgMCkK
LS0KLS0KLS0jIG00X2RpdmVydF9zdGFjawotLSMgLS0tLS0tLS0tLS0tLS0tCi0tIyBQcmludCB0
aGUgZGl2ZXJzaW9uIHN0YWNrLCBpZiBpdCdzIG5vbmVtcHR5LiAgVGhlIGNhbGxlciBpcwotLSMg
cmVzcG9uc2libGUgZm9yIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5nIG5ld2xpbmUuCi0tbTRfZGVm
aW5lKFttNF9kaXZlcnRfc3RhY2tdLAotLVttNF9zdGFja19mb3JlYWNoX3NlcF9saWZvKFtfbTRf
ZGl2ZXJ0X3N0YWNrXSwgW10sIFtdLCBbCi0tXSldKQotLQotLQotLSMgbTRfZGl2ZXJ0X3N0YWNr
X3B1c2goTUFDUk8tTkFNRSwgRElWRVJTSU9OLU5BTUUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEZvcm0gYW4gZW50cnkgb2YgdGhlIGRp
dmVyc2lvbiBzdGFjayBmcm9tIGNhbGxlciBNQUNSTy1OQU1FIGFuZAotLSMgZW50ZXJpbmcgRElW
RVJTSU9OLU5BTUUgYW5kIHB1c2ggaXQuCi0tbTRfZGVmaW5lKFttNF9kaXZlcnRfc3RhY2tfcHVz
aF0sCi0tW200X3B1c2hkZWYoW19tNF9kaXZlcnRfc3RhY2tdLCBtNF9sb2NhdGlvbls6ICQxOiAk
Ml0pXSkKLS0KLS0KLS0jIG00X2RpdmVydChESVZFUlNJT04tTkFNRSkKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIENoYW5nZSB0aGUgZGl2ZXJzaW9uIHN0cmVhbSB0byBESVZFUlNJ
T04tTkFNRS4KLS1tNF9kZWZpbmUoW200X2RpdmVydF0sCi0tW200X3BvcGRlZihbX200X2RpdmVy
dF9zdGFja10pXWRubAotLVttNF9kZWZpbmUoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgWyQxXSld
ZG5sCi0tW200X2RpdmVydF9zdGFja19wdXNoKFskMF0sIFskMV0pXWRubAotLVtfbTRfZGl2ZXJ0
X3JhdyhfbTRfZGl2ZXJ0KFskMV0pKV0pCi0tCi0tCi0tIyBtNF9kaXZlcnRfcHVzaChESVZFUlNJ
T04tTkFNRSwgW05PV0FSTl0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBDaGFuZ2UgdGhlIGRpdmVyc2lvbiBzdHJlYW0gdG8gRElWRVJTSU9OLU5BTUUs
IHdoaWxlIHN0YWNraW5nIG9sZCB2YWx1ZXMuCi0tIyBGb3IgaW50ZXJuYWwgdXNlIG9ubHk6IGlm
IE5PV0FSTiBpcyBub3QgZW1wdHksIERJVkVSU0lPTi1OQU1FIGNhbiBiZSBhCi0tIyBudW1iZXIg
aW5zdGVhZCBvZiBhIG5hbWUuCi0tbTRfZGVmaW5lKFttNF9kaXZlcnRfcHVzaF0sCi0tW200X2Rp
dmVydF9zdGFja19wdXNoKFskMF0sIFskMV0pXWRubAotLVttNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0
X2RpdmVyc2lvbl0sIFskMV0pXWRubAotLVtfbTRfZGl2ZXJ0X3JhdyhfbTRfZGl2ZXJ0KFskMV0s
IFskMl0pKV0pCi0tCi0tCi0tIyBtNF9kaXZlcnRfcG9wKFtESVZFUlNJT04tTkFNRV0pCi0tIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBDaGFuZ2UgdGhlIGRpdmVyc2lvbiBz
dHJlYW0gdG8gaXRzIHByZXZpb3VzIHZhbHVlLCB1bnN0YWNraW5nIGl0LgotLSMgSWYgc3BlY2lm
aWVkLCB2ZXJpZnkgd2UgbGVmdCBESVZFUlNJT04tTkFNRS4KLS0jIFdoZW4gd2UgcG9wIHRoZSBs
YXN0IHZhbHVlIGZyb20gdGhlIHN0YWNrLCB3ZSBkaXZlcnQgdG8gLTEuCi0tbTRfZGVmaW5lKFtt
NF9kaXZlcnRfcG9wXSwKLS1bbTRfaWYoWyQxXSwgW10sIFtdLAotLSAgICAgICBbJDFdLCBfbTRf
ZGVmbihbX200X2RpdmVydF9kaXZlcnNpb25dKSwgW10sCi0tICAgICAgIFttNF9mYXRhbChbJDAo
JDEpOiBkaXZlcnNpb24gbWlzbWF0Y2g6Ci0tXW00X2RpdmVydF9zdGFjayldKV1kbmwKLS1bX200
X3BvcGRlZihbX200X2RpdmVydF9zdGFja10sIFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pXWRubAot
LVttNF9pZmRlZihbX200X2RpdmVydF9kaXZlcnNpb25dLCBbXSwKLS0JICAgW200X2ZhdGFsKFt0
b28gbWFueSBtNF9kaXZlcnRfcG9wXSldKV1kbmwKLS1bX200X2RpdmVydF9yYXcoX200X2RpdmVy
dChfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNpb25dKSwgWy1dKSldKQotLQotLQotLSMgbTRf
ZGl2ZXJ0X3RleHQoRElWRVJTSU9OLU5BTUUsIENPTlRFTlQpCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIE91dHB1dCBDT05URU5UIGludG8gRElWRVJTSU9O
LU5BTUUgKHdoaWNoIG1heSBiZSBhIG51bWJlciBhY3R1YWxseSkuCi0tIyBBbiBlbmQgb2YgbGlu
ZSBpcyBhcHBlbmRlZCBmb3IgZnJlZSB0byBDT05URU5ULgotLW00X2RlZmluZShbbTRfZGl2ZXJ0
X3RleHRdLAotLVttNF9kaXZlcnRfcHVzaChbJDFdKSQyCi0tbTRfZGl2ZXJ0X3BvcChbJDFdKV0p
Ci0tCi0tCi0tIyBtNF9kaXZlcnRfb25jZShESVZFUlNJT04tTkFNRSwgQ09OVEVOVCkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgT3V0cHV0IENPTlRFTlQg
aW50byBESVZFUlNJT04tTkFNRSBvbmNlLCBpZiBub3QgYWxyZWFkeSB0aGVyZS4KLS0jIEFuIGVu
ZCBvZiBsaW5lIGlzIGFwcGVuZGVkIGZvciBmcmVlIHRvIENPTlRFTlQuCi0tbTRfZGVmaW5lKFtt
NF9kaXZlcnRfb25jZV0sCi0tW200X2V4cGFuZF9vbmNlKFttNF9kaXZlcnRfdGV4dChbJDFdLCBb
JDJdKV0pXSkKLS0KLS0KLS0jIF9tNF9kaXZlcnRfdW5zYWZlKERJVkVSU0lPTi1OQU1FKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJc3N1ZSBhIHdhcm5pbmcgdGhh
dCB0aGUgYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIHRvCi0tIyBESVZF
UlNJT04tTkFNRSBpcyB1bnNhZmUsIGJlY2F1c2UgdGhpcyBtYWNybyBpcyBiZWluZyBleHBhbmRl
ZAotLSMgZHVyaW5nIGFyZ3VtZW50IGNvbGxlY3Rpb24gb2YgbTRfZXhwYW5kLgotLW00X2RlZmlu
ZShbX200X2RpdmVydF91bnNhZmVdLAotLVttNF9mYXRhbChbJDA6IGNhbm5vdCBjaGFuZ2UgZGl2
ZXJzaW9uIHRvIGAkMScgaW5zaWRlIG00X2V4cGFuZF0pXSkKLS0KLS0KLS0jIG00X3VuZGl2ZXJ0
KERJVkVSU0lPTi1OQU1FLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBVbmRpdmVydCBESVZFUlNJT04tTkFNRS4gIFVubGlrZSB0aGUgTTQgdmVyc2lvbiwgdGhpcyBy
ZXF1aXJlcyBhdAotLSMgbGVhc3Qgb25lIERJVkVSU0lPTi1OQU1FOyBhbHNvLCBkdWUgdG8gc3Vw
cG9ydCBmb3IgbmFtZWQgZGl2ZXJzaW9ucywKLS0jIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIHRv
IHVuZGl2ZXJ0IGZpbGVzLgotLW00X2RlZmluZShbbTRfdW5kaXZlcnRdLAotLVttNF9pZihbJCNd
LCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRdKV0sCi0tICAgICAgIFskI10s
IFsxXSwgW19tNF91bmRpdmVydChfbTRfZGl2ZXJ0KFskMV0pKV0sCi0tICAgICAgIFttNF9tYXBf
YXJncyhbJDBdLCAkQCldKV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgMTAuIERlZmluaW5nIG1hY3JvcyB3aXRoIGJlbGxz
IGFuZCB3aGlzdGxlcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICMjCi0tCi0tIyBgbTRfZGVmdW4nIGlzIGJhc2ljYWxseSBgbTRfZGVmaW5l
JyBidXQgaXQgZXF1aXBzIHRoZSBtYWNybyB3aXRoIHRoZQotLSMgbmVlZGVkIG1hY2hpbmVyeSBm
b3IgYG00X3JlcXVpcmUnLiAgQSBtYWNybyBtdXN0IGJlIG00X2RlZnVuJ2QgaWYKLS0jIGVpdGhl
ciBpdCBpcyBtNF9yZXF1aXJlJ2QsIG9yIGl0IG00X3JlcXVpcmUncy4KLS0jCi0tIyBUd28gdGhp
bmdzIGRlc2VydmUgYXR0ZW50aW9uIGFuZCBhcmUgZGV0YWlsZWQgYmVsb3c6Ci0tIyAgMS4gSW1w
bGVtZW50YXRpb24gb2YgbTRfcmVxdWlyZQotLSMgIDIuIEtlZXBpbmcgdHJhY2sgb2YgdGhlIGV4
cGFuc2lvbiBzdGFjawotLSMKLS0jIDEuIEltcGxlbWVudGF0aW9uIG9mIG00X3JlcXVpcmUKLS0j
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0jCi0tIyBPZiBjb3Vyc2UgbTRfZGVm
dW4gY2FsbHMgbTRfcHJvdmlkZSwgc28gdGhhdCBhIG1hY3JvIHdoaWNoIGhhcwotLSMgYmVlbiBl
eHBhbmRlZCBpcyBub3QgZXhwYW5kZWQgYWdhaW4gd2hlbiBtNF9yZXF1aXJlJ2QsIGJ1dCB0aGUK
LS0jIGRpZmZpY3VsdCBwYXJ0IGlzIHRoZSBwcm9wZXIgZXhwYW5zaW9uIG9mIG1hY3JvcyB3aGVu
IHRoZXkgYXJlCi0tIyBtNF9yZXF1aXJlJ2QuCi0tIwotLSMgVGhlIGltcGxlbWVudGF0aW9uIGlz
IGJhc2VkIG9uIHRocmVlIGlkZWFzLCAoaSkgdXNpbmcgZGl2ZXJzaW9ucyB0bwotLSMgcHJlcGFy
ZSB0aGUgZXhwYW5zaW9uIG9mIHRoZSBtYWNybyBhbmQgaXRzIGRlcGVuZGVuY2llcyAoYnkgRnJh
bmMsb2lzCi0tIyBQaW5hcmQpLCAoaWkpIGV4cGFuZCB0aGUgbW9zdCByZWNlbnRseSBtNF9yZXF1
aXJlJ2QgbWFjcm9zIF9hZnRlcl8KLS0jIHRoZSBwcmV2aW91cyBtYWNyb3MgKGJ5IEF4ZWwgVGhp
bW0pLCBhbmQgKGlpaSkgdHJhY2sgaW5zdGFuY2VzIG9mCi0tIyBwcm92aWRlIGJlZm9yZSByZXF1
aXJlIChieSBFcmljIEJsYWtlKS4KLS0jCi0tIwotLSMgVGhlIGZpcnN0IGlkZWE6IHdoeSB1c2Ug
ZGl2ZXJzaW9ucz8KLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIwot
LSMgV2hlbiBhIG1hY3JvIHJlcXVpcmVzIGFub3RoZXIsIHRoZSBvdGhlciBtYWNybyBpcyBleHBh
bmRlZCBpbiBuZXcKLS0jIGRpdmVyc2lvbiwgR1JPVy4gIFdoZW4gdGhlIG91dGVyIG1hY3JvIGlz
IGZ1bGx5IGV4cGFuZGVkLCB3ZSBmaXJzdAotLSMgdW5kaXZlcnQgdGhlIG1vc3QgbmVzdGVkIGRp
dmVyc2lvbnMgKEdST1cgLSAxLi4uKSwgYW5kIGZpbmFsbHkKLS0jIHVuZGl2ZXJ0IEdST1cuICBU
byB1bmRlcnN0YW5kIHdoeSB3ZSBuZWVkIHNldmVyYWwgZGl2ZXJzaW9ucywKLS0jIGNvbnNpZGVy
IHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKLS0jCi0tIyB8IG00X2RlZnVuKFtURVNUMV0sIFtUZXN0
Li4ubTRfcmVxdWlyZShbVEVTVDJdKTFdKQotLSMgfCBtNF9kZWZ1bihbVEVTVDJdLCBbVGVzdC4u
Lm00X3JlcXVpcmUoW1RFU1QzXSkyXSkKLS0jIHwgbTRfZGVmdW4oW1RFU1QzXSwgW1Rlc3QuLi4z
XSkKLS0jCi0tIyBCZWNhdXNlIG00X3JlcXVpcmUgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpcnN0
IGluIHRoZSBvdXRlciBtYWNyb3MsIHdlCi0tIyBtdXN0IGtlZXAgdGhlIGV4cGFuc2lvbnMgb2Yg
dGhlIHZhcmlvdXMgbGV2ZWxzIG9mIG00X3JlcXVpcmUgc2VwYXJhdGVkLgotLSMgUmlnaHQgYmVm
b3JlIGV4ZWN1dGluZyB0aGUgZXBpbG9ndWUgb2YgVEVTVDEsIHdlIGhhdmU6Ci0tIwotLSMJICAg
R1JPVyAtIDI6IFRlc3QuLi4zCi0tIwkgICBHUk9XIC0gMTogVGVzdC4uLjIKLS0jCSAgIEdST1c6
ICAgICBUZXN0Li4uMQotLSMJICAgQk9EWToKLS0jCi0tIyBGaW5hbGx5IHRoZSBlcGlsb2d1ZSBv
ZiBURVNUMSB1bmRpdmVydHMgR1JPVyAtIDIsIEdST1cgLSAxLCBhbmQKLS0jIEdST1cgaW50byB0
aGUgcmVndWxhciBmbG93LCBCT0RZLgotLSMKLS0jCSAgIEdST1cgLSAyOgotLSMJICAgR1JPVyAt
IDE6Ci0tIwkgICBHUk9XOgotLSMJICAgQk9EWTogICAgICAgIFRlc3QuLi4zOyBUZXN0Li4uMjsg
VGVzdC4uLjEKLS0jCi0tIyAoVGhlIHNlbWljb2xvbnMgYXJlIGhlcmUgZm9yIGNsYXJpZmljYXRp
b24sIGJ1dCBvZiBjb3Vyc2UgYXJlIG5vdAotLSMgZW1pdHRlZC4pICBUaGlzIGlzIHdoYXQgQXV0
b2NvbmYgMi4wIChJIHRoaW5rKSB0byAyLjEzIChJJ20gc3VyZSkKLS0jIGltcGxlbWVudC4KLS0j
Ci0tIwotLSMgVGhlIHNlY29uZCBpZGVhOiBmaXJzdCByZXF1aXJlZCBmaXJzdCBvdXQKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIwotLSMgVGhlIG5hdHVy
YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIGlkZWEgYWJvdmUgaXMgYnVnZ3kgYW5kIHByb2R1Y2Vz
Ci0tIyB2ZXJ5IHN1cnByaXNpbmcgcmVzdWx0cyBpbiBzb21lIHNpdHVhdGlvbnMuICBMZXQncyBj
b25zaWRlciB0aGUKLS0jIGZvbGxvd2luZyBleGFtcGxlIHRvIGV4cGxhaW4gdGhlIGJ1ZzoKLS0j
Ci0tIyB8IG00X2RlZnVuKFtURVNUMV0sICBbbTRfcmVxdWlyZShbVEVTVDJhXSltNF9yZXF1aXJl
KFtURVNUMmJdKV0pCi0tIyB8IG00X2RlZnVuKFtURVNUMmFdLCBbXSkKLS0jIHwgbTRfZGVmdW4o
W1RFU1QyYl0sIFttNF9yZXF1aXJlKFtURVNUM10pXSkKLS0jIHwgbTRfZGVmdW4oW1RFU1QzXSwg
IFttNF9yZXF1aXJlKFtURVNUMmFdKV0pCi0tIyB8Ci0tIyB8IEFDX0lOSVQKLS0jIHwgVEVTVDEK
LS0jCi0tIyBUaGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIG1hY3JvcyBhcmU6Ci0tIwotLSMJ
CSAzIC0tLSAyYgotLSMJCS8gICAgICAgIFwgICAgICAgICAgICAgIGlzIG00X3JlcXVpcmUnZCBi
eQotLSMJICAgICAgIC8gICAgICAgICAgXCAgICAgICBsZWZ0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
IHJpZ2h0Ci0tIwkgICAgMmEgLS0tLS0tLS0tLS0tIDEKLS0jCi0tIyBJZiB5b3Ugc3RyaWN0bHkg
YXBwbHkgdGhlIHJ1bGVzIGdpdmVuIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uIHlvdSBnZXQ6Ci0t
IwotLSMJICAgR1JPVyAtIDI6IFRFU1QzCi0tIwkgICBHUk9XIC0gMTogVEVTVDJhOyBURVNUMmIK
LS0jCSAgIEdST1c6ICAgICBURVNUMQotLSMJICAgQk9EWToKLS0jCi0tIyAoVEVTVDJhLCBhbHRo
b3VnaCByZXF1aXJlZCBieSBURVNUMyBpcyBub3QgZXhwYW5kZWQgaW4gR1JPVyAtIDMKLS0jIGJl
Y2F1c2UgaXMgaGFzIGFscmVhZHkgYmVlbiBleHBhbmRlZCBiZWZvcmUgaW4gR1JPVyAtIDEsIHNv
IGl0IGhhcwotLSMgYmVlbiBBQ19QUk9WSURFJ2QsIHNvIGl0IGlzIG5vdCBleHBhbmRlZCBhZ2Fp
bikgc28gd2hlbiB5b3UgdW5kaXZlcnQKLS0jIHRoZSBzdGFjayBvZiBkaXZlcnNpb25zLCB5b3Ug
Z2V0OgotLSMKLS0jCSAgIEdST1cgLSAyOgotLSMJICAgR1JPVyAtIDE6Ci0tIwkgICBHUk9XOgot
LSMJICAgQk9EWTogICAgICAgIFRFU1QzOyBURVNUMmE7IFRFU1QyYjsgVEVTVDEKLS0jCi0tIyBp
LmUuLCBURVNUMmEgaXMgZXhwYW5kZWQgYWZ0ZXIgVEVTVDMgYWx0aG91Z2ggdGhlIGxhdHRlciBy
ZXF1aXJlZCB0aGUKLS0jIGZvcm1lci4KLS0jCi0tIyBTdGFydGluZyBmcm9tIDIuNTAsIHdlIHVz
ZSBhbiBpbXBsZW1lbnRhdGlvbiBwcm92aWRlZCBieSBBeGVsIFRoaW1tLgotLSMgVGhlIGlkZWEg
aXMgc2ltcGxlOiB0aGUgb3JkZXIgaW4gd2hpY2ggbWFjcm9zIGFyZSBlbWl0dGVkIG11c3QgYmUg
dGhlCi0tIyBzYW1lIGFzIHRoZSBvbmUgaW4gd2hpY2ggbWFjcm9zIGFyZSBleHBhbmRlZC4gIChU
aGUgYnVnIGFib3ZlIGNhbgotLSMgaW5kZWVkIGJlIGRlc2NyaWJlZCBhczogYSBtYWNybyBoYXMg
YmVlbiBtNF9wcm92aWRlJ2QgYmVmb3JlIGl0cwotLSMgZGVwZW5kZW50LCBidXQgaXQgaXMgZW1p
dHRlZCBhZnRlcjogdGhlIGxhY2sgb2YgY29ycmVsYXRpb24gYmV0d2VlbgotLSMgZW1pc3Npb24g
YW5kIGV4cGFuc2lvbiBvcmRlciBpcyBndWlsdHkpLgotLSMKLS0jIEhvdyB0byBkbyB0aGF0PyAg
WW91IGtlZXAgdGhlIHN0YWNrIG9mIGRpdmVyc2lvbnMgdG8gZWxhYm9yYXRlIHRoZQotLSMgbWFj
cm9zLCBidXQgZWFjaCB0aW1lIGEgbWFjcm8gaXMgZnVsbHkgZXhwYW5kZWQsIGVtaXQgaXQgaW1t
ZWRpYXRlbHkuCi0tIwotLSMgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHdoZW4gVEVTVDJhIGlzIGV4
cGFuZGVkLCBidXQgaXQncyBlcGlsb2d1ZSBpcwotLSMgbm90IHJ1biB5ZXQsIHlvdSBoYXZlOgot
LSMKLS0jCSAgIEdST1cgLSAyOgotLSMJICAgR1JPVyAtIDE6IFRFU1QyYQotLSMJICAgR1JPVzog
ICAgIEVsYWJvcmF0aW9uIG9mIFRFU1QxCi0tIwkgICBCT0RZOgotLSMKLS0jIFRoZSBlcGlsb2d1
ZSBvZiBURVNUMmEgZW1pdHMgaXQgaW1tZWRpYXRlbHk6Ci0tIwotLSMJICAgR1JPVyAtIDI6Ci0t
IwkgICBHUk9XIC0gMToKLS0jCSAgIEdST1c6ICAgICBFbGFib3JhdGlvbiBvZiBURVNUMQotLSMJ
ICAgQk9EWTogICAgIFRFU1QyYQotLSMKLS0jIFRFU1QyYiB0aGVuIHJlcXVpcmVzIFRFU1QzLCBz
byByaWdodCBiZWZvcmUgdGhlIGVwaWxvZ3VlIG9mIFRFU1QzLCB5b3UKLS0jIGhhdmU6Ci0tIwot
LSMJICAgR1JPVyAtIDI6IFRFU1QzCi0tIwkgICBHUk9XIC0gMTogRWxhYm9yYXRpb24gb2YgVEVT
VDJiCi0tIwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24gb2YgVEVTVDEKLS0jCSAgIEJPRFk6ICAg
ICAgVEVTVDJhCi0tIwotLSMgVGhlIGVwaWxvZ3VlIG9mIFRFU1QzIGVtaXRzIGl0OgotLSMKLS0j
CSAgIEdST1cgLSAyOgotLSMJICAgR1JPVyAtIDE6IEVsYWJvcmF0aW9uIG9mIFRFU1QyYgotLSMJ
ICAgR1JPVzogICAgIEVsYWJvcmF0aW9uIG9mIFRFU1QxCi0tIwkgICBCT0RZOiAgICAgVEVTVDJh
OyBURVNUMwotLSMKLS0jIFRFU1QyYiBpcyBub3cgY29tcGxldGVseSBleHBhbmRlZCwgYW5kIGVt
aXR0ZWQ6Ci0tIwotLSMJICAgR1JPVyAtIDI6Ci0tIwkgICBHUk9XIC0gMToKLS0jCSAgIEdST1c6
ICAgICBFbGFib3JhdGlvbiBvZiBURVNUMQotLSMJICAgQk9EWTogICAgIFRFU1QyYTsgVEVTVDM7
IFRFU1QyYgotLSMKLS0jIGFuZCBmaW5hbGx5LCBURVNUMSBpcyBmaW5pc2hlZCBhbmQgZW1pdHRl
ZDoKLS0jCi0tIwkgICBHUk9XIC0gMjoKLS0jCSAgIEdST1cgLSAxOgotLSMJICAgR1JPVzoKLS0j
CSAgIEJPRFk6ICAgICBURVNUMmE7IFRFU1QzOyBURVNUMmI6IFRFU1QxCi0tIwotLSMgVGhlIGlk
ZWEgaXMgc2ltcGxlLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGEgYml0IGludm9sdmVkLiAg
SWYKLS0jIHlvdSBhcmUgbGlrZSBtZSwgeW91IHdpbGwgd2FudCB0byBzZWUgdGhlIGFjdHVhbCBm
dW5jdGlvbmluZyBvZiB0aGlzCi0tIyBpbXBsZW1lbnRhdGlvbiB0byBiZSBjb252aW5jZWQuICBU
aGUgbmV4dCBzZWN0aW9uIGdpdmVzIHRoZSBmdWxsCi0tIyBkZXRhaWxzLgotLSMKLS0jCi0tIyBU
aGUgQXhlbCBUaGltbSBpbXBsZW1lbnRhdGlvbiBhdCB3b3JrCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIwotLSMgV2UgY29uc2lkZXIgdGhlIG1hY3JvcyBhYm92
ZSwgYW5kIHRoaXMgY29uZmlndXJlLmFjOgotLSMKLS0jCSAgICBBQ19JTklUCi0tIwkgICAgVEVT
VDEKLS0jCi0tIyBZb3Ugc2hvdWxkIGtlZXAgdGhlIGRlZmluaXRpb25zIG9mIF9tNF9kZWZ1bl9w
cm8sIF9tNF9kZWZ1bl9lcGksIGFuZAotLSMgbTRfcmVxdWlyZSBhdCBoYW5kIHRvIGZvbGxvdyB0
aGUgc3RlcHMuCi0tIwotLSMgVGhpcyBpbXBsZW1lbnRhdGlvbiB0cmllcyBub3QgdG8gYXNzdW1l
IHRoYXQgdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIGlzCi0tIyBCT0RZLCBzbyBhcyBzb29uIGFzIGEg
bWFjcm8gKG00X2RlZnVuJ2QpIGlzIGV4cGFuZGVkLCB3ZSBmaXJzdAotLSMgcmVjb3JkIHRoZSBj
dXJyZW50IGRpdmVyc2lvbiB1bmRlciB0aGUgbmFtZSBfbTRfZGl2ZXJ0X2R1bXAgKGRlbm90ZWQK
LS0jIERVTVAgYmVsb3cgZm9yIHNob3J0KS4gIFRoaXMgaW50cm9kdWNlcyBhbiBpbXBvcnRhbnQg
ZGlmZmVyZW5jZSB3aXRoCi0tIyB0aGUgcHJldmlvdXMgdmVyc2lvbnMgb2YgQXV0b2NvbmY6IHlv
dSBjYW5ub3QgdXNlIG00X3JlcXVpcmUgaWYgeW91Ci0tIyBhcmUgbm90IGluc2lkZSBhbiBtNF9k
ZWZ1bidkIG1hY3JvLCBhbmQgZXNwZWNpYWxseSwgeW91IGNhbm5vdAotLSMgbTRfcmVxdWlyZSBk
aXJlY3RseSBmcm9tIHRoZSB0b3AgbGV2ZWwuCi0tIwotLSMgV2UgaGF2ZSBub3QgdHJpZWQgdG8g
c2ltdWxhdGUgdGhlIG9sZCBiZWhhdmlvciAoYmV0dGVyIHlldCwgd2UKLS0jIGRpYWdub3NlIGl0
KSwgYmVjYXVzZSBpdCBpcyB0b28gZGFuZ2Vyb3VzOiBhIG1hY3JvIG00X3JlcXVpcmUnZCBmcm9t
Ci0tIyB0aGUgdG9wIGxldmVsIGlzIGV4cGFuZGVkIGJlZm9yZSB0aGUgYm9keSBvZiBgY29uZmln
dXJlJywgaS5lLiwgYmVmb3JlCi0tIyBhbnkgb3RoZXIgdGVzdCB3YXMgcnVuLiAgSSBsZXQgeW91
IGltYWdpbmUgdGhlIHJlc3VsdCBvZiByZXF1aXJpbmcKLS0jIEFDX1NURENfSEVBREVSUyBmb3Ig
aW5zdGFuY2UsIGJlZm9yZSBBQ19QUk9HX0NDIHdhcyBhY3R1YWxseSBydW4uLi4uCi0tIwotLSMg
QWZ0ZXIgQUNfSU5JVCB3YXMgcnVuLCB0aGUgY3VycmVudCBkaXZlcnNpb24gaXMgQk9EWS4KLS0j
ICogQUNfSU5JVCB3YXMgcnVuCi0tIyAgIERVTVA6ICAgICAgICAgICAgICAgIHVuZGVmaW5lZAot
LSMgICBkaXZlcnNpb24gc3RhY2s6ICAgICBCT0RZIHwtCi0tIwotLSMgKiBURVNUMSBpcyBleHBh
bmRlZAotLSMgVGhlIHByb2xvZ3VlIG9mIFRFU1QxIHNldHMgX200X2RpdmVydF9kdW1wLCB3aGlj
aCBpcyB0aGUgZGl2ZXJzaW9uCi0tIyB3aGVyZSB0aGUgY3VycmVudCBlbGFib3JhdGlvbiB3aWxs
IGJlIGR1bXBlZCwgdG8gdGhlIGN1cnJlbnQKLS0jIGRpdmVyc2lvbi4gIEl0IGFsc28gbTRfZGl2
ZXJ0X3B1c2ggdG8gR1JPVywgd2hlcmUgdGhlIGZ1bGwKLS0jIGV4cGFuc2lvbiBvZiBURVNUMSBh
bmQgaXRzIGRlcGVuZGVuY2llcyB3aWxsIGJlIGVsYWJvcmF0ZWQuCi0tIyAgIERVTVA6ICAgICAg
ICBCT0RZCi0tIyAgIEJPRFk6ICAgICAgICBlbXB0eQotLSMgICBkaXZlcnNpb25zOiAgR1JPVywg
Qk9EWSB8LQotLSMKLS0jICogVEVTVDEgcmVxdWlyZXMgVEVTVDJhCi0tIyBfbTRfcmVxdWlyZV9j
YWxsIG00X2RpdmVydF9wdXNoZXMgYW5vdGhlciB0ZW1wb3JhcnkgZGl2ZXJzaW9uLAotLSMgR1JP
VyAtIDEsIGFuZCBleHBhbmRzIFRFU1QyYSBpbiB0aGVyZS4KLS0jICAgRFVNUDogICAgICAgIEJP
RFkKLS0jICAgQk9EWTogICAgICAgIGVtcHR5Ci0tIyAgIEdST1cgLSAxOiAgICBURVNUMmEKLS0j
ICAgZGl2ZXJzaW9uczogIEdST1cgLSAxLCBHUk9XLCBCT0RZIHwtCi0tIyBUaGVuIHRoZSBjb250
ZW50IG9mIHRoZSB0ZW1wb3JhcnkgZGl2ZXJzaW9uIGlzIG1vdmVkIHRvIERVTVAgYW5kIHRoZQot
LSMgdGVtcG9yYXJ5IGRpdmVyc2lvbiBpcyBwb3BwZWQuCi0tIyAgIERVTVA6ICAgICAgICBCT0RZ
Ci0tIyAgIEJPRFk6ICAgICAgICBURVNUMmEKLS0jICAgZGl2ZXJzaW9uczogIEdST1csIEJPRFkg
fC0KLS0jCi0tIyAqIFRFU1QxIHJlcXVpcmVzIFRFU1QyYgotLSMgQWdhaW4sIF9tNF9yZXF1aXJl
X2NhbGwgcHVzaGVzIEdST1cgLSAxIGFuZCBoZWFkcyB0byBleHBhbmQgVEVTVDJiLgotLSMgICBE
VU1QOiAgICAgICAgQk9EWQotLSMgICBCT0RZOiAgICAgICAgVEVTVDJhCi0tIyAgIGRpdmVyc2lv
bnM6ICBHUk9XIC0gMSwgR1JPVywgQk9EWSB8LQotLSMKLS0jICogVEVTVDJiIHJlcXVpcmVzIFRF
U1QzCi0tIyBfbTRfcmVxdWlyZV9jYWxsIHB1c2hlcyBHUk9XIC0gMiBhbmQgZXhwYW5kcyBURVNU
MyBoZXJlLgotLSMgKFRFU1QzIHJlcXVpcmVzIFRFU1QyYSwgYnV0IFRFU1QyYSBoYXMgYWxyZWFk
eSBiZWVuIG00X3Byb3ZpZGUnZCwgc28KLS0jIG5vdGhpbmcgaGFwcGVucy4pCi0tIyAgIERVTVA6
ICAgICAgICBCT0RZCi0tIyAgIEJPRFk6ICAgICAgICBURVNUMmEKLS0jICAgR1JPVyAtIDI6ICAg
IFRFU1QzCi0tIyAgIGRpdmVyc2lvbnM6ICBHUk9XIC0gMiwgR1JPVyAtIDEsIEdST1csIEJPRFkg
fC0KLS0jIFRoZW4gdGhlIGRpdmVyc2lvbiBpcyBhcHBlbmRlZCB0byBEVU1QLCBhbmQgcG9wcGVk
LgotLSMgICBEVU1QOiAgICAgICAgQk9EWQotLSMgICBCT0RZOiAgICAgICAgVEVTVDJhOyBURVNU
MwotLSMgICBkaXZlcnNpb25zOiAgR1JPVyAtIDEsIEdST1csIEJPRFkgfC0KLS0jCi0tIyAqIFRF
U1QxIHJlcXVpcmVzIFRFU1QyYiAoY29udGQuKQotLSMgVGhlIGNvbnRlbnQgb2YgVEVTVDJiIGlz
IGV4cGFuZGVkLi4uCi0tIyAgIERVTVA6ICAgICAgICBCT0RZCi0tIyAgIEJPRFk6ICAgICAgICBU
RVNUMmE7IFRFU1QzCi0tIyAgIEdST1cgLSAxOiAgICBURVNUMmIsCi0tIyAgIGRpdmVyc2lvbnM6
ICBHUk9XIC0gMSwgR1JPVywgQk9EWSB8LQotLSMgLi4uIGFuZCBtb3ZlZCB0byBEVU1QLgotLSMg
ICBEVU1QOiAgICAgICAgQk9EWQotLSMgICBCT0RZOiAgICAgICAgVEVTVDJhOyBURVNUMzsgVEVT
VDJiCi0tIyAgIGRpdmVyc2lvbnM6ICBHUk9XLCBCT0RZIHwtCi0tIwotLSMgKiBURVNUMSBpcyBl
eHBhbmRlZDogZXBpbG9ndWUKLS0jIFRFU1QxJ3Mgb3duIGNvbnRlbnQgaXMgaW4gR1JPVy4uLgot
LSMgICBEVU1QOiAgICAgICAgQk9EWQotLSMgICBCT0RZOiAgICAgICAgVEVTVDJhOyBURVNUMzsg
VEVTVDJiCi0tIyAgIEdST1c6ICAgICAgICBURVNUMQotLSMgICBkaXZlcnNpb25zOiAgQk9EWSB8
LQotLSMgLi4uIGFuZCBpdCdzIGVwaWxvZ3VlIG1vdmVzIGl0IHRvIERVTVAgYW5kIHRoZW4gdW5k
ZWZpbmVzIERVTVAuCi0tIyAgIERVTVA6ICAgICAgIHVuZGVmaW5lZAotLSMgICBCT0RZOiAgICAg
ICBURVNUMmE7IFRFU1QzOyBURVNUMmI7IFRFU1QxCi0tIyAgIGRpdmVyc2lvbnM6IEJPRFkgfC0K
LS0jCi0tIwotLSMgVGhlIHRoaXJkIGlkZWE6IHRyYWNrIG1hY3JvcyBwcm92aWRlZCBiZWZvcmUg
dGhleSB3ZXJlIHJlcXVpcmVkCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jCi0tIyBVc2luZyBqdXN0IHRoZSBmaXJz
dCB0d28gaWRlYXMsIEF1dG9jb25mIDIuNTAgdGhyb3VnaCAyLjYzIHN0aWxsIGhhZAotLSMgYSBz
dWJ0bGUgYnVnIGZvciBtb3JlIHRoYW4gc2V2ZW4geWVhcnMuICBMZXQncyBjb25zaWRlciB0aGUK
LS0jIGZvbGxvd2luZyBleGFtcGxlIHRvIGV4cGxhaW4gdGhlIGJ1ZzoKLS0jCi0tIyB8IG00X2Rl
ZnVuKFtURVNUMV0sIFsxXSkKLS0jIHwgbTRfZGVmdW4oW1RFU1QyXSwgWzJbXW00X3JlcXVpcmUo
W1RFU1QxXSldKQotLSMgfCBtNF9kZWZ1bihbVEVTVDNdLCBbMyBURVNUMSBtNF9yZXF1aXJlKFtU
RVNUMl0pXSkKLS0jIHwgVEVTVDMKLS0jCi0tIyBBZnRlciB0aGUgcHJvbG9ndWUgb2YgVEVTVDMs
IHdlIGFyZSBjb2xsZWN0aW5nIHRleHQgaW4gR1JPVyB3aXRoIHRoZQotLSMgaW50ZW50IG9mIGR1
bXBpbmcgaXQgaW4gQk9EWSBkdXJpbmcgdGhlIGVwaWxvZ3VlLiAgTmV4dCwgd2UKLS0jIGVuY291
bnRlciB0aGUgZGlyZWN0IGludm9jYXRpb24gb2YgVEVTVDEsIHdoaWNoIHByb3ZpZGVzIHRoZSBt
YWNybwotLSMgaW4gcGxhY2UgaW4gR1JPVy4gIEZyb20gdGhlcmUsIHdlIGVuY291bnRlciBhIHJl
cXVpcmVtZW50IGZvciBURVNUMiwKLS0jIHdoaWNoIG11c3QgYmUgY29sbGVjdGVkIGluIGEgbmV3
IGRpdmVyc2lvbi4gIFdoaWxlIGV4cGFuZGluZyBURVNUMiwKLS0jIHdlIGVuY291bnRlciBhIHJl
cXVpcmVtZW50IGZvciBURVNUMSwgYnV0IHNpbmNlIGl0IGhhcyBhbHJlYWR5IGJlZW4KLS0jIGV4
cGFuZGVkLCB0aGUgQXhlbCBUaGltbSBhbGdvcml0aG0gc3RhdGVzIHRoYXQgd2UgY2FuIHRyZWF0
IGl0IGFzIGEKLS0jIG5vLW9wLiAgQnV0IHRoYXQgd291bGQgbGVhZCB0byBhbiBlbmQgcmVzdWx0
IG9mIGAyIDMgMScsIG1lYW5pbmcKLS0jIHRoYXQgd2UgaGF2ZSBvbmNlIGFnYWluIG91dHB1dCBh
IG1hY3JvIChURVNUMikgcHJpb3IgdG8gaXRzCi0tIyByZXF1aXJlbWVudHMgKFRFU1QxKS4KLS0j
Ci0tIyBUaGUgcHJvYmxlbSBjYW4gb25seSBvY2N1ciBpZiBhIHNpbmdsZSBkZWZ1bidkIG1hY3Jv
IGZpcnN0IHByb3ZpZGVzLAotLSMgdGhlbiBsYXRlciBpbmRpcmVjdGx5IHJlcXVpcmVzLCB0aGUg
c2FtZSBtYWNyby4gIE5vdGUgdGhhdCBkaXJlY3RseQotLSMgZXhwYW5kaW5nIHRoZW4gcmVxdWly
aW5nIGEgbWFjcm8gaXMgb2theTogYmVjYXVzZSB0aGUgZGVwZW5kZW5jeSB3YXMKLS0jIG1ldCwg
dGhlIHJlcXVpcmUgcGhhc2UgY2FuIGJlIGEgbm8tb3AuICBGb3IgdGhhdCBtYXR0ZXIsIHRoZSBv
dXRlcgotLSMgbWFjcm8gY2FuIGV2ZW4gcmVxdWlyZSB0d28gaGVscGVycywgd2hlcmUgdGhlIGZp
cnN0IGhlbHBlciBleHBhbmRzCi0tIyB0aGUgbWFjcm8sIGFuZCB0aGUgc2Vjb25kIGhlbHBlciBp
bmRpcmVjdGx5IHJlcXVpcmVzIHRoZSBtYWNyby4KLS0jIE91dC1vZi1vcmRlciBleHBhbnNpb24g
aXMgb25seSBwcmVzZW50IGlmIHRoZSBpbm5lciBtYWNybyBpcwotLSMgcmVxdWlyZWQgYnkgc29t
ZXRoaW5nIHRoYXQgd2lsbCBiZSBob2lzdGVkIGluIGZyb250IG9mIHdoZXJlIHRoZQotLSMgZGly
ZWN0IGV4cGFuc2lvbiBvY2N1cnJlZC4gIEluIG90aGVyIHdvcmRzLCB3ZSBtdXN0IGJlIGNhcmVm
dWwgbm90Ci0tIyB0byB3YXJuIG9uOgotLSMKLS0jIHwgbTRfZGVmdW4oW1RFU1Q0XSwgWzRdKQot
LSMgfCBtNF9kZWZ1bihbVEVTVDVdLCBbNSBURVNUNCBtNF9yZXF1aXJlKFtURVNUNF0pXSkKLS0j
IHwgVEVTVDUgPT4gNSA0Ci0tIwotLSMgb3IgZXZlbiB0aGUgbW9yZSBjb21wbGV4OgotLSMKLS0j
IHwgbTRfZGVmdW4oW1RFU1Q2XSwgWzZdKQotLSMgfCBtNF9kZWZ1bihbVEVTVDddLCBbNyBURVNU
Nl0pCi0tIyB8IG00X2RlZnVuKFtURVNUOF0sIFs4IG00X3JlcXVpcmUoW1RFU1Q2XSldKQotLSMg
fCBtNF9kZWZ1bihbVEVTVDldLCBbOSBtNF9yZXF1aXJlKFtURVNUOF0pXSkKLS0jIHwgbTRfZGVm
dW4oW1RFU1QxMF0sIFsxMCBtNF9yZXF1aXJlKFtURVNUN10pIG00X3JlcXVpcmUoW1RFU1Q5XSld
KQotLSMgfCBURVNUMTAgPT4gNyA2IDggOSAxMAotLSMKLS0jIFNvLCB0byBkZXRlY3Qgd2hldGhl
ciBhIHJlcXVpcmUgd2FzIGRpcmVjdCBvciBpbmRpcmVjdCwgbTRfZGVmdW4gYW5kCi0tIyBtNF9y
ZXF1aXJlIHRyYWNrIHRoZSBuYW1lIG9mIHRoZSBtYWNybyB0aGF0IGNhdXNlZCBhIGRpdmVyc2lv
biB0byBiZQotLSMgY3JlYXRlZCAodXNpbmcgdGhlIHN0YWNrIF9tNF9kaXZlcnRpbmcsIGNvdXBs
ZWQgd2l0aCBhbiBPKDEpIGxvb2t1cAotLSMgX200X2RpdmVydGluZyhbTkFNRV0pKSwgYW5kIG00
X3Byb3ZpZGUgc3RvcmVzIHRoZSBuYW1lIGFzc29jaWF0ZWQKLS0jIHdpdGggdGhlIGRpdmVyc2lv
biBhdCB3aGljaCBhIG1hY3JvIHdhcyBwcm92aWRlZC4gIEEgcmVxdWlyZSBjYWxsIGlzCi0tIyBk
aXJlY3QgaWYgaXQgb2NjdXJzIHdpdGhpbiB0aGUgc2FtZSBkaXZlcnNpb24gd2hlcmUgdGhlIG1h
Y3JvIHdhcwotLSMgcHJvdmlkZWQsIG9yIGlmIHRoZSBkaXZlcnNpb24gYXNzb2NpYXRlZCB3aXRo
IHRoZSBwcm92aWRpbmcgY29udGV4dAotLSMgaGFzIGJlZW4gY29sbGVjdGVkLgotLSMKLS0jIFRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgd2FybmluZyBpbnZvbHZlcyB0cmFja2luZyB0aGUgc2V0
IG9mCi0tIyBtYWNyb3Mgd2hpY2ggaGF2ZSBiZWVuIHByb3ZpZGVkIHNpbmNlIHRoZSBzdGFydCBv
ZiB0aGUgb3V0ZXJtb3N0Ci0tIyBkZWZ1bidkIG1hY3JvICh0aGUgc2V0IGlzIG5hbWVkIF9tNF9w
cm92aWRlKS4gIFdoZW4gc3RhcnRpbmcgYW4KLS0jIG91dGVybW9zdCBtYWNybywgdGhlIHNldCBp
cyBlbXB0aWVkOyB3aGVuIGEgbWFjcm8gaXMgcHJvdmlkZWQsIGl0IGlzCi0tIyBhZGRlZCB0byB0
aGUgc2V0OyB3aGVuIHJlcXVpcmUgZXhwYW5kcyB0aGUgYm9keSBvZiBhIG1hY3JvLCBpdCBpcwot
LSMgcmVtb3ZlZCBmcm9tIHRoZSBzZXQ7IGFuZCB3aGVuIGEgbWFjcm8gaXMgaW5kaXJlY3RseSBy
ZXF1aXJlZCwgdGhlCi0tIyBzZXQgaXMgY2hlY2tlZC4gIElmIGEgbWFjcm8gaXMgaW4gdGhlIHNl
dCwgdGhlbiBpdCBoYXMgYmVlbiBwcm92aWRlZAotLSMgYmVmb3JlIGl0IHdhcyByZXF1aXJlZCwg
YW5kIHdlIHNhdGlzZnkgZGVwZW5kZW5jaWVzIGJ5IGV4cGFuZGluZyB0aGUKLS0jIG1hY3JvIGFz
IGlmIGl0IGhhZCBuZXZlciBiZWVuIHByb3ZpZGVkOyBpbiB0aGUgZXhhbXBsZSBnaXZlbiBhYm92
ZSwKLS0jIHRoaXMgbWVhbnMgd2Ugbm93IG91dHB1dCBgMSAyIDMgMScuICBNZWFud2hpbGUsIGEg
d2FybmluZyBpcyBpc3N1ZWQKLS0jIHRvIGluZm9ybSB0aGUgdXNlciB0aGF0IGhlciBtYWNyb3Mg
dHJpZ2dlciB0aGUgYnVnIGluIG9sZGVyIGF1dG9jb25mCi0tIyB2ZXJzaW9ucywgYW5kIHRoYXQg
aGVyIG91dHB1dCBmaWxlIG5vdyBjb250YWlucyByZWR1bmRhbnQgY29udGVudHMKLS0jIChhbmQg
cG9zc2libHkgbmV3IHByb2JsZW1zLCBpZiB0aGUgcmVwZWF0ZWQgbWFjcm8gd2FzIG5vdAotLSMg
aWRlbXBvdGVudCkuICBNZWFud2hpbGUsIG1hY3JvcyBkZWZpbmVkIGJ5IG00X2RlZnVuX29uY2Ug
aW5zdGVhZCBvZgotLSMgbTRfZGVmdW4gYXJlIGlkZW1wb3RlbnQsIGF2b2lkaW5nIGFueSB3YXJu
aW5nIG9yIGR1cGxpY2F0ZSBvdXRwdXQuCi0tIwotLSMKLS0jIDIuIEtlZXBpbmcgdHJhY2sgb2Yg
dGhlIGV4cGFuc2lvbiBzdGFjawotLSMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tIwotLSMgV2hlbiBNNCBleHBhbnNpb24gZ29lcyB3cm9uZyBpdCBpcyBvZnRlbiBl
eHRyZW1lbHkgaGFyZCB0byBmaW5kIHRoZQotLSMgcGF0aCBhbW9uZ3N0IG1hY3JvcyB0aGF0IGRy
b3ZlIHRvIHRoZSBmYWlsdXJlLiAgV2hhdCBpcyBuZWVkZWQgaXMKLS0jIHRoZSBzdGFjayBvZiBt
YWNybyBgY2FsbHMnLiBPbmUgY291bGQgaW1hZ2luZSB0aGF0IEdOVSBNNCB3b3VsZAotLSMgbWFp
bnRhaW4gYSBzdGFjayBvZiBtYWNybyBleHBhbnNpb25zLCB1bmZvcnR1bmF0ZWx5IGl0IGRvZXNu
J3QsIHNvCi0tIyB3ZSBkbyBpdCBieSBoYW5kLiAgVGhpcyBpcyBvZiBjb3Vyc2UgZXh0cmVtZWx5
IGNvc3RseSwgYnV0IHRoZSBoZWxwCi0tIyB0aGlzIHN0YWNrIHByb3ZpZGVzIGlzIHdvcnRoIGl0
LiAgTmV2ZXJ0aGVsZXNzIHRvIGxpbWl0IHRoZQotLSMgcGVyZm9ybWFuY2UgcGVuYWx0eSB0aGlz
IGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIG00X2RlZnVuJ2QgbWFjcm9zLAotLSMgbm90IGZvciBk
ZWZpbmUnZCBtYWNyb3MuCi0tIwotLSMgRWFjaCB0aW1lIHdlIGVudGVyIGFuIG00X2RlZnVuJ2Qg
bWFjcm9zLCB3ZSBhZGQgYSBkZWZpbml0aW9uIGluCi0tIyBfbTRfZXhwYW5zaW9uX3N0YWNrLCBh
bmQgd2hlbiB3ZSBleGl0IHRoZSBtYWNybywgd2UgcmVtb3ZlIGl0ICh0aGFua3MKLS0jIHRvIHB1
c2hkZWYvcG9wZGVmKS4gIG00X3N0YWNrX2ZvcmVhY2ggaXMgdXNlZCB0byBwcmludCB0aGUgZXhw
YW5zaW9uCi0tIyBzdGFjayBpbiB0aGUgcmFyZSBjYXNlcyB3aGVuIGl0J3MgbmVlZGVkLgotLSMK
LS0jIEluIGFkZGl0aW9uLCB3ZSB3YW50IHRvIGRldGVjdCBjaXJjdWxhciBtNF9yZXF1aXJlIGRl
cGVuZGVuY2llcy4KLS0jIEVhY2ggdGltZSB3ZSBleHBhbmQgYSBtYWNybyBGT08gd2UgZGVmaW5l
IF9tNF9leHBhbmRpbmcoRk9PKTsgYW5kCi0tIyBtNF9yZXF1aXJlKEJBUikgc2ltcGx5IGNoZWNr
cyB3aGV0aGVyIF9tNF9leHBhbmRpbmcoQkFSKSBpcyBkZWZpbmVkLgotLQotLQotLSMgbTRfZXhw
YW5zaW9uX3N0YWNrCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZHMgdG8gdGhlIGVu
dGlyZSBjb250ZW50cyBvZiB0aGUgZXhwYW5zaW9uIHN0YWNrLiAgVGhlIGNhbGxlcgotLSMgbXVz
dCBzdXBwbHkgYSB0cmFpbGluZyBuZXdsaW5lLiAgVGhpcyBtYWNybyBhbHdheXMgcHJpbnRzIGEK
LS0jIGxvY2F0aW9uOyBjaGVjayB3aGV0aGVyIF9tNF9leHBhbnNpb25fc3RhY2sgaXMgZGVmaW5l
ZCB0byBmaWx0ZXIgb3V0Ci0tIyB0aGUgY2FzZSB3aGVuIG5vIGRlZnVuJ2QgbWFjcm8gaXMgaW4g
Zm9yY2UuCi0tbTRfZGVmaW5lKFttNF9leHBhbnNpb25fc3RhY2tdLAotLVttNF9zdGFja19mb3Jl
YWNoX3NlcF9saWZvKFtfJDBdLCBbXyQwX2VudHJ5KF0sIFspCi0tXSltNF9sb2NhdGlvbls6IHRo
ZSB0b3AgbGV2ZWxdXSkKLS0KLS0jIF9tNF9leHBhbnNpb25fc3RhY2tfZW50cnkoTUFDUk8pCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRm9ybWF0IGFuIGVudHJ5IGZv
ciBNQUNSTyBmb3VuZCBvbiB0aGUgZXhwYW5zaW9uIHN0YWNrLgotLW00X2RlZmluZShbX200X2V4
cGFuc2lvbl9zdGFja19lbnRyeV0sCi0tW19tNF9kZWZuKFttNF9sb2NhdGlvbigkMSldKVs6ICQx
IGlzIGV4cGFuZGVkIGZyb20uLi5dXSkKLS0KLS0jIG00X2V4cGFuc2lvbl9zdGFja19wdXNoKE1B
Q1JPKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBGb3JtIGFuIGVudHJ5
IG9mIHRoZSBleHBhbnNpb24gc3RhY2sgb24gZW50cnkgdG8gTUFDUk8gYW5kIHB1c2ggaXQuCi0t
bTRfZGVmaW5lKFttNF9leHBhbnNpb25fc3RhY2tfcHVzaF0sCi0tW200X3B1c2hkZWYoW19tNF9l
eHBhbnNpb25fc3RhY2tdLCBbJDFdKV0pCi0tCi0tCi0tIyBfbTRfZGl2ZXJ0KEdST1cpCi0tIyAt
LS0tLS0tLS0tLS0tLS0tCi0tIyBUaGlzIGRpdmVyc2lvbiBpcyB1c2VkIGJ5IHRoZSBtNF9kZWZ1
bi9tNF9yZXF1aXJlIG1hY2hpbmVyeS4gIEl0IGlzCi0tIyBpbXBvcnRhbnQgdG8ga2VlcCByb29t
IGJlZm9yZSBHUk9XIGJlY2F1c2UgZm9yIGVhY2ggbmVzdGVkCi0tIyBBQ19SRVFVSVJFIHdlIHVz
ZSBhbiBhZGRpdGlvbmFsIGRpdmVyc2lvbiAoaS5lLiwgdHdvIG00X3JlcXVpcmUncwotLSMgd2ls
bCB1c2UgR1JPVyAtIDIuICBNb3JlIHRoYW4gMyBsZXZlbHMgaGFzIG5ldmVyIHNlZW1lZCB0byBi
ZQotLSMgbmVlZGVkLikKLS0jCi0tIyAuLi4KLS0jIC0gR1JPVyAtIDIKLS0jICAgbTRfcmVxdWly
ZSdkIGNvZGUsIDIgbGV2ZWwgZGVlcAotLSMgLSBHUk9XIC0gMQotLSMgICBtNF9yZXF1aXJlJ2Qg
Y29kZSwgMSBsZXZlbCBkZWVwCi0tIyAtIEdST1cKLS0jICAgbTRfZGVmdW4nZCBtYWNyb3MgYXJl
IGVsYWJvcmF0ZWQgaGVyZS4KLS0KLS1tNF9kZWZpbmUoW19tNF9kaXZlcnQoR1JPVyldLCAgICAg
ICAxMDAwMCkKLS0KLS0KLS0jIF9tNF9kZWZ1bl9wcm8oTUFDUk8tTkFNRSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIFRoZSBwcm9sb2d1ZSBmb3IgQXV0b2NvbmYgbWFjcm9zLgot
LSMKLS0jIFRoaXMgaXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIG1pbmltaXplIHRoZSBudW1iZXIg
b2YgbWFjcm8gaW52b2NhdGlvbnMKLS0jIGJ5IGF2b2lkaW5nIGRubCBhbmQgbTRfZGVmbiBvdmVy
aGVhZC4KLS1tNF9kZWZpbmUoW19tNF9kZWZ1bl9wcm9dLAotLVttNF9pZmRlZihbX200X2V4cGFu
c2lvbl9zdGFja10sIFtdLCBbX200X2RlZnVuX3Byb19vdXRlcihbJDFdKV0pXWRubAotLVttNF9l
eHBhbnNpb25fc3RhY2tfcHVzaChbJDFdKW00X3B1c2hkZWYoW19tNF9leHBhbmRpbmcoJDEpXSld
KQotLQotLW00X2RlZmluZShbX200X2RlZnVuX3Byb19vdXRlcl0sCi0tW200X3NldF9kZWxldGUo
W19tNF9wcm92aWRlXSldZG5sCi0tW200X3B1c2hkZWYoW19tNF9kaXZlcnRpbmcoWyQxXSldKW00
X3B1c2hkZWYoW19tNF9kaXZlcnRpbmddLCBbJDFdKV1kbmwKLS1bbTRfcHVzaGRlZihbX200X2Rp
dmVydF9kdW1wXSwgbTRfZGl2bnVtKW00X2RpdmVydF9wdXNoKFtHUk9XXSldKQotLQotLSMgX200
X2RlZnVuX2VwaShNQUNSTy1OQU1FKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
VGhlIEVwaWxvZ3VlIGZvciBBdXRvY29uZiBtYWNyb3MuICBNQUNSTy1OQU1FIG9ubHkgaGVscHMg
dHJhY2luZwotLSMgdGhlIFBSTy9FUEkgcGFpcnMuCi0tIwotLSMgVGhpcyBpcyBjYWxsZWQgZnJl
cXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBtYWNybyBpbnZvY2F0aW9ucwotLSMg
YnkgYXZvaWRpbmcgZG5sIGFuZCBtNF9wb3BkZWYgb3ZlcmhlYWQuCi0tbTRfZGVmaW5lKFtfbTRf
ZGVmdW5fZXBpXSwKLS1bX200X3BvcGRlZihbX200X2V4cGFuZGluZygkMSldLCBbX200X2V4cGFu
c2lvbl9zdGFja10pXWRubAotLVttNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFtdLCBb
X200X2RlZnVuX2VwaV9vdXRlcihbJDFdKV0pXWRubAotLVttNF9wcm92aWRlKFskMV0pXSkKLS0K
LS1tNF9kZWZpbmUoW19tNF9kZWZ1bl9lcGlfb3V0ZXJdLAotLVtfbTRfcG9wZGVmKFtfbTRfZGl2
ZXJ0X2R1bXBdLCBbX200X2RpdmVydGluZyhbJDFdKV0sIFtfbTRfZGl2ZXJ0aW5nXSldZG5sCi0t
W200X2RpdmVydF9wb3AoW0dST1ddKW00X3VuZGl2ZXJ0KFtHUk9XXSldKQotLQotLQotLSMgX200
X2RpdmVydF9kdW1wCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIElmIGJsYW5rLCB3ZSBhcmUgb3V0
c2lkZSBvZiBhbnkgZGVmdW4nZCBtYWNyby4gIE90aGVyd2lzZSwgZXhwYW5kcwotLSMgdG8gdGhl
IGRpdmVyc2lvbiBudW1iZXIgKG5vdCBuYW1lKSB3aGVyZSByZXF1aXJlJ2QgbWFjcm9zIHNob3Vs
ZCBiZQotLSMgbW92ZWQgb25jZSBjb21wbGV0ZWQuCi0tbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0X2R1
bXBdKQotLQotLQotLSMgbTRfZGl2ZXJ0X3JlcXVpcmUoRElWRVJTSU9OLCBOQU1FLVRPLUNIRUNL
LCBbQk9EWS1UTy1FWFBBTkRdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU2FtZSBhcyBtNF9yZXF1aXJlLCBidXQg
Qk9EWS1UTy1FWFBBTkQgZ29lcyBpbnRvIHRoZSBuYW1lZCBESVZFUlNJT047Ci0tIyByZXF1aXJl
bWVudHMgc3RpbGwgZ28gaW4gdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIHRob3VnaC4KLS0jCi0tbTRf
ZGVmaW5lKFttNF9kaXZlcnRfcmVxdWlyZV0sCi0tW200X2lmZGVmKFtfbTRfZXhwYW5kaW5nKCQy
KV0sCi0tICBbbTRfZmF0YWwoWyQwOiBjaXJjdWxhciBkZXBlbmRlbmN5IG9mICQyXSldKV1kbmwK
LS1bbTRfaWYoX200X2RpdmVydF9kdW1wLCBbXSwKLS0gIFttNF9mYXRhbChbJDAoJDIpOiBjYW5u
b3QgYmUgdXNlZCBvdXRzaWRlIG9mIGFuIG00X2RlZnVuJ2QgbWFjcm9dKV0pXWRubAotLVttNF9w
cm92aWRlX2lmKFskMl0sIFtdLAotLSAgW19tNF9yZXF1aXJlX2NhbGwoWyQyXSwgWyQzXSwgX200
X2RpdmVydChbJDFdLCBbLV0pKV0pXSkKLS0KLS0KLS0jIG00X2RlZnVuKE5BTUUsIEVYUEFOU0lP
TiwgW01BQ1JPID0gbTRfZGVmaW5lXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlZmluZSBhIG1hY3JvIE5BTUUgd2hpY2ggYXV0b21hdGlj
YWxseSBwcm92aWRlcyBpdHNlbGYuICBBZGQKLS0jIG1hY2hpbmVyeSBzbyB0aGUgbWFjcm8gYXV0
b21hdGljYWxseSBzd2l0Y2hlcyBleHBhbnNpb24gdG8gdGhlCi0tIyBkaXZlcnNpb24gc3RhY2sg
aWYgaXQgaXMgbm90IGFscmVhZHkgdXNpbmcgaXQsIHByaW9yIHRvIEVYUEFOU0lPTi4KLS0jIElu
IHRoaXMgY2FzZSwgb25jZSBmaW5pc2hlZCwgaXQgd2lsbCBicmluZyBiYWNrIGFsbCB0aGUgY29k
ZQotLSMgYWNjdW11bGF0ZWQgaW4gdGhlIGRpdmVyc2lvbiBzdGFjay4gIFRoaXMsIGNvbWJpbmVk
IHdpdGggbTRfcmVxdWlyZSwKLS0jIGFjaGlldmVzIHRoZSB0b3BvbG9naWNhbCBvcmRlcmluZyBv
ZiBtYWNyb3MuICBXZSBkb24ndCB1c2UgdGhpcwotLSMgbWFjcm8gdG8gZGVmaW5lIHNvbWUgZnJl
cXVlbnRseSBjYWxsZWQgbWFjcm9zIHRoYXQgYXJlIG5vdCBpbnZvbHZlZAotLSMgaW4gb3JkZXJp
bmcgY29uc3RyYWludHMsIHRvIHNhdmUgbTQgcHJvY2Vzc2luZy4KLS0jCi0tIyBNQUNSTyBpcyBh
biB1bmRvY3VtZW50ZWQgYXJndW1lbnQ7IHdoZW4gc2V0IHRvIG00X3B1c2hkZWYsIGFuZCBOQU1F
Ci0tIyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZSBuZXcgZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0
aGUgcHVzaGRlZgotLSMgc3RhY2ssIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50
IGRlZmluaXRpb24uICBJdCBjYW4gdGh1cwotLSMgYmUgdXNlZCB0byB3cml0ZSBzZWxmLW1vZGlm
eWluZyBtYWNyb3MsIHdoaWNoIHBvcCB0aGVtc2VsdmVzIHRvIGEKLS0jIHByZXZpb3VzbHkgbTRf
ZGVmaW5lJ2QgZGVmaW5pdGlvbiBzbyB0aGF0IHN1YnNlcXVlbnQgdXNlIG9mIHRoZQotLSMgbWFj
cm8gaXMgZmFzdGVyLgotLW00X2RlZmluZShbbTRfZGVmdW5dLAotLVttNF9kZWZpbmUoW200X2xv
Y2F0aW9uKCQxKV0sIG00X2xvY2F0aW9uKV1kbmwKLS1bbTRfZGVmYXVsdChbJDNdLCBbbTRfZGVm
aW5lXSkoWyQxXSwKLS0gIFtfbTRfZGVmdW5fcHJvKF1tNF9kcXVvdGUoJFswXSlbKSQyW11fbTRf
ZGVmdW5fZXBpKF1tNF9kcXVvdGUoJFswXSlbKV0pXSkKLS0KLS0KLS0jIG00X2RlZnVuX2luaXQo
TkFNRSwgSU5JVCwgQ09NTU9OKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0tIyBMaWtlIG00X2RlZnVuLCBidXQgc3BsaXQgRVhQQU5TSU9OIGludG8gdHdvIHBvcnRpb25z
OiBJTklUIHdoaWNoIGlzCi0tIyBkb25lIG9ubHkgdGhlIGZpcnN0IHRpbWUgTkFNRSBpcyBpbnZv
a2VkLCBhbmQgQ09NTU9OIHdoaWNoIGlzCi0tIyBleHBhbmRlZCBldmVyeSB0aW1lLgotLSMKLS0j
IEZvciBub3csIHRoZSBDT01NT04gZGVmaW5pdGlvbiBpcyBhbHdheXMgbTRfZGVmaW5lJ2QsIGdp
dmluZyBhbiBldmVuCi0tIyBsaWdodGVyLXdlaWdodCBkZWZpbml0aW9uLiAgbTRfZGVmdW4gYWxs
b3dzIHNlbGYtcHJvdmlkaW5nLCBidXQgb25jZQotLSMgYSBtYWNybyBpcyBwcm92aWRlZCwgbTRf
cmVxdWlyZSBubyBsb25nZXIgY2FyZXMgaWYgaXQgaXMgbTRfZGVmaW5lJ2QKLS0jIG9yIG00X2Rl
ZnVuJ2QuICBtNF9kZWZ1biBhbHNvIHByb3ZpZGVzIGxvY2F0aW9uIHRyYWNraW5nIHRvIGlkZW50
aWZ5Ci0tIyBkZXBlbmRlbmN5IGJ1Z3MsIGJ1dCBvbmNlIHRoZSBJTklUIGhhcyBiZWVuIGV4cGFu
ZGVkLCB3ZSBrbm93IHRoZXJlCi0tIyBhcmUgbm8gZGVwZW5kZW5jeSBidWdzLiAgSG93ZXZlciwg
aWYgYSBmdXR1cmUgdXNlIG5lZWRzIENPTU1PTiB0byBiZQotLSMgbTRfZGVmdW4nZCwgd2UgY2Fu
IGFkZCBhIHBhcmFtZXRlciwgc2ltaWxhciB0byB0aGUgdGhpcmQgcGFyYW1ldGVyCi0tIyB0byBt
NF9kZWZ1bi4KLS1tNF9kZWZpbmUoW200X2RlZnVuX2luaXRdLAotLVttNF9kZWZpbmUoWyQxXSwg
WyQzW11dKW00X2RlZnVuKFskMV0sCi0tICAgWyQyW11fbTRfcG9wZGVmKF1tNF9kcXVvdGUoJFsw
XSlbKW00X2luZGlyKF1tNF9kcXVvdGUoJFswXSlkbmwKLS1bbTRfaWYoXW00X2RxdW90ZSgkWyNd
KVssIFswXSwgW10sIF1tNF9kcXVvdGUoWywkXUApWykpXSwgW200X3B1c2hkZWZdKV0pCi0tCi0t
Ci0tIyBtNF9kZWZ1bl9vbmNlKE5BTUUsIEVYUEFOU0lPTikKLS0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgTGlrZSBtNF9kZWZ1biwgYnV0IGd1YXJhbnRlZSB0aGF0IEVYUEFO
U0lPTiBvbmx5IGhhcHBlbnMgb25jZQotLSMgKHRoZXJlYWZ0ZXIsIHVzaW5nIE5BTUUgaXMgYSBu
by1vcCkuCi0tIwotLSMgSWYgX200X2RpdmVydF9kdW1wIGlzIGVtcHR5LCB3ZSBhcmUgY2FsbGVk
IGF0IHRoZSB0b3AgbGV2ZWw7Ci0tIyBvdGhlcndpc2UsIHdlIG11c3QgZW5zdXJlIHRoYXQgd2Ug
YXJlIHJlcXVpcmVkIGluIGZyb250IG9mIHRoZQotLSMgY3VycmVudCBkZWZ1bidkIG1hY3JvLiAg
VXNlIGEgaGVscGVyIG1hY3JvIHNvIHRoYXQgRVhQQU5TSU9OIG5lZWQKLS0jIG9ubHkgb2NjdXIg
b25jZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiBOQU1FLCBzaW5jZSBpdCBtaWdodCBiZSBsYXJnZS4K
LS1tNF9kZWZpbmUoW200X2RlZnVuX29uY2VdLAotLVttNF9kZWZpbmUoW200X2xvY2F0aW9uKCQx
KV0sIG00X2xvY2F0aW9uKV1kbmwKLS1bbTRfZGVmaW5lKFskMV0sIFtfbTRfZGVmdW5fb25jZShb
JDFdLCBbJDJdLCBtNF9pZihfbTRfZGl2ZXJ0X2R1bXAsIFtdLAotLSAgW1tfbTRfZGVmdW5fcHJv
KFskMV0pbTRfdW5xdW90ZShdLCBbKV9tNF9kZWZ1bl9lcGkoWyQxXSldXSwKLS1tNF9pZmRlZihb
X200X2RpdmVydGluZyhbJDFdKV0sIFstXSksIFstXSwgW1ttNF91bnF1b3RlKF0sIFspXV0sCi0t
ICBbW19tNF9yZXF1aXJlX2NhbGwoWyQxXSxdLCBbLCBfbTRfZGl2ZXJ0X2R1bXApXV0pKV0pXSkK
LS0KLS1tNF9kZWZpbmUoW19tNF9kZWZ1bl9vbmNlXSwKLS1bbTRfcHVzaGRlZihbJDFdKSQzWyQy
W11tNF9wcm92aWRlKFskMV0pXSQ0XSkKLS0KLS0KLS0jIG00X3BhdHRlcm5fZm9yYmlkKEVSRSwg
W1dIWV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVjbGFyZSB0aGF0
IG5vIHRva2VuIG1hdGNoaW5nIHRoZSBmb3JiaWRkZW4gcGVybCBleHRlbmRlZCByZWd1bGFyCi0t
IyBleHByZXNzaW9uIEVSRSBzaG91bGQgYmUgc2VlbiBpbiB0aGUgb3V0cHV0IHVubGVzcy4uLgot
LW00X2RlZmluZShbbTRfcGF0dGVybl9mb3JiaWRdLCBbXSkKLS0KLS0KLS0jIG00X3BhdHRlcm5f
YWxsb3coRVJFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyAuLi4gdGhhdCB0b2tlbiBh
bHNvIG1hdGNoZXMgdGhlIGFsbG93ZWQgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uIEVSRS4K
LS0jIEJvdGggdXNlZCB2aWEgdHJhY2VzLCBieSBhdXRvbTR0ZSBwb3N0LXByb2Nlc3NpbmcuCi0t
bTRfZGVmaW5lKFttNF9wYXR0ZXJuX2FsbG93XSwgW10pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgMTEuIERlcGVuZGVuY2llcyBiZXR3ZWVuIG1h
Y3Jvcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0t
Ci0tIyBtNF9iZWZvcmUoVEhJUy1NQUNSTy1OQU1FLCBDQUxMRUQtTUFDUk8tTkFNRSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSXNzdWUgYSB3
YXJuaW5nIGlmIENBTExFRC1NQUNSTy1OQU1FIHdhcyBjYWxsZWQgYmVmb3JlIFRISVMtTUFDUk8t
TkFNRS4KLS1tNF9kZWZpbmUoW200X2JlZm9yZV0sCi0tW200X3Byb3ZpZGVfaWYoWyQyXSwKLS0J
ICAgICAgIFttNF93YXJuKFtzeW50YXhdLCBbJDIgd2FzIGNhbGxlZCBiZWZvcmUgJDFdKV0pXSkK
LS0KLS0KLS0jIG00X3JlcXVpcmUoTkFNRS1UTy1DSEVDSywgW0JPRFktVE8tRVhQQU5EID0gTkFN
RS1UTy1DSEVDS10pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYgTkFNRS1UTy1DSEVDSyBoYXMgbmV2ZXIgYmVlbiBl
eHBhbmRlZCAoYWN0dWFsbHksIGlmIGl0IGlzIG5vdAotLSMgbTRfcHJvdmlkZSdkKSwgZXhwYW5k
IEJPRFktVE8tRVhQQU5EICpiZWZvcmUqIHRoZSBjdXJyZW50IG1hY3JvCi0tIyBleHBhbnNpb247
IGZvbGxvdyB0aGUgZXhwYW5zaW9uIHdpdGggYSBuZXdsaW5lLiAgT25jZSBleHBhbmRlZCwgZW1p
dAotLSMgaXQgaW4gX200X2RpdmVydF9kdW1wLiAgS2VlcCB0cmFjayBvZiB0aGUgbTRfcmVxdWly
ZSBjaGFpbiBpbgotLSMgX200X2V4cGFuc2lvbl9zdGFjay4KLS0jCi0tIyBUaGUgbm9ybWFsIGNh
c2VzIGFyZToKLS0jCi0tIyAtIE5BTUUtVE8tQ0hFQ0sgPT0gQk9EWS1UTy1FWFBBTkQKLS0jICAg
V2hpY2ggeW91IGNhbiB1c2UgZm9yIHJlZ3VsYXIgbWFjcm9zIHdpdGggb3Igd2l0aG91dCBhcmd1
bWVudHMsIGUuZy4sCi0tIyAgICAgbTRfcmVxdWlyZShbQUNfUFJPR19DQ10sIFtBQ19QUk9HX0ND
XSkKLS0jICAgICBtNF9yZXF1aXJlKFtBQ19DSEVDS19IRUFERVJTKHRocmVhZHMuaCldLCBbQUNf
Q0hFQ0tfSEVBREVSUyh0aHJlYWRzLmgpXSkKLS0jICAgd2hpY2ggaXMganVzdCB0aGUgc2FtZSBh
cwotLSMgICAgIG00X3JlcXVpcmUoW0FDX1BST0dfQ0NdKQotLSMgICAgIG00X3JlcXVpcmUoW0FD
X0NIRUNLX0hFQURFUlModGhyZWFkcy5oKV0pCi0tIwotLSMgLSBCT0RZLVRPLUVYUEFORCA9PSBt
NF9pbmRpcihbTkFNRS1UTy1DSEVDS10pCi0tIyAgIEluIHRoZSBjYXNlIG9mIG1hY3JvcyB3aXRo
IGlycmVndWxhciBuYW1lcy4gIEZvciBpbnN0YW5jZToKLS0jICAgICBtNF9yZXF1aXJlKFtBQ19M
QU5HX0NPTVBJTEVSKEMpXSwgW2luZGlyKFtBQ19MQU5HX0NPTVBJTEVSKEMpXSldKQotLSMgICB3
aGljaCBtZWFucyBgaWYgdGhlIG1hY3JvIG5hbWVkIGBBQ19MQU5HX0NPTVBJTEVSKEMpJyAodGhl
IHBhcmVucyBhcmUKLS0jICAgcGFydCBvZiB0aGUgbmFtZSwgaXQgaXMgbm90IGFuIGFyZ3VtZW50
KSBoYXMgbm90IGJlZW4gcnVuLCB0aGVuCi0tIyAgIGNhbGwgaXQuJwotLSMgICBIYWQgeW91IHVz
ZWQKLS0jICAgICBtNF9yZXF1aXJlKFtBQ19MQU5HX0NPTVBJTEVSKEMpXSwgW0FDX0xBTkdfQ09N
UElMRVIoQyldKQotLSMgICB0aGVuIG00X3JlcXVpcmUgd291bGQgaGF2ZSB0cmllZCB0byBleHBh
bmQgYEFDX0xBTkdfQ09NUElMRVIoQyknLCBpLmUuLAotLSMgICBjYWxsIHRoZSBtYWNybyBgQUNf
TEFOR19DT01QSUxFUicgd2l0aCBgQycgYXMgYXJndW1lbnQuCi0tIwotLSMgICBZb3UgY291bGQg
YXJndWUgdGhhdCBgQUNfTEFOR19DT01QSUxFUicsIHdoZW4gaXQgcmVjZWl2ZXMgYW4gYXJndW1l
bnQKLS0jICAgc3VjaCBhcyBgQycgc2hvdWxkIGRpc3BhdGNoIHRoZSBjYWxsIHRvIGBBQ19MQU5H
X0NPTVBJTEVSKEMpJy4gIEJ1dCB0aGlzCi0tIyAgIGBleHRlbnNpb24nIHByZXZlbnRzIGBBQ19M
QU5HX0NPTVBJTEVSJyBmcm9tIGhhdmluZyBhY3R1YWwgYXJndW1lbnRzIHRoYXQKLS0jICAgaXQg
cGFzc2VzIHRvIGBBQ19MQU5HX0NPTVBJTEVSKEMpJy4KLS0jCi0tIyBUaGlzIGlzIGNhbGxlZCBm
cmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIG1hY3JvIGludm9jYXRpb25zCi0t
IyBieSBhdm9pZGluZyBkbmwgYW5kIG90aGVyIG92ZXJoZWFkIG9uIHRoZSBjb21tb24gcGF0aC4K
LS1tNF9kZWZpbmUoW200X3JlcXVpcmVdLAotLVttNF9pZmRlZihbX200X2V4cGFuZGluZygkMSld
LAotLSAgW200X2ZhdGFsKFskMDogY2lyY3VsYXIgZGVwZW5kZW5jeSBvZiAkMV0pXSldZG5sCi0t
W200X2lmKF9tNF9kaXZlcnRfZHVtcCwgW10sCi0tICBbbTRfZmF0YWwoWyQwKCQxKTogY2Fubm90
IGJlIHVzZWQgb3V0c2lkZSBvZiBhbiBdZG5sCi0tbTRfaWYoWyQwXSwgW200X3JlcXVpcmVdLCBb
W200X2RlZnVuXV0sIFtbQUNfREVGVU5dXSlbJ2QgbWFjcm9dKV0pXWRubAotLVttNF9wcm92aWRl
X2lmKFskMV0sIFttNF9zZXRfY29udGFpbnMoW19tNF9wcm92aWRlXSwgWyQxXSwKLS0gICAgW19t
NF9yZXF1aXJlX2NoZWNrKFskMV0sIF9tNF9kZWZuKFttNF9wcm92aWRlKCQxKV0pLCBbJDBdKV0s
IFttNF9pZ25vcmVdKV0sCi0tICBbX200X3JlcXVpcmVfY2FsbF0pKFskMV0sIFskMl0sIF9tNF9k
aXZlcnRfZHVtcCldKQotLQotLQotLSMgX200X3JlcXVpcmVfY2FsbChOQU1FLVRPLUNIRUNLLCBb
Qk9EWS1UTy1FWFBBTkQgPSBOQU1FLVRPLUNIRUNLXSwKLS0jICAgICAgICAgICAgICAgICAgRElW
RVJTSU9OLU5VTUJFUikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiBtNF9yZXF1aXJlIGRlY2lkZXMgdG8g
ZXhwYW5kIHRoZSBib2R5LCBpdCBjYWxscyB0aGlzIG1hY3JvLiAgVGhlCi0tIyBleHBhbnNpb24g
aXMgcGxhY2VkIGluIERJVkVSU0lPTi1OVU1CRVIuCi0tIwotLSMgVGhpcyBpcyBjYWxsZWQgZnJl
cXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBtYWNybyBpbnZvY2F0aW9ucwotLSMg
YnkgYXZvaWRpbmcgZG5sIGFuZCBvdGhlciBvdmVyaGVhZCBvbiB0aGUgY29tbW9uIHBhdGguCi0t
IyBUaGUgdXNlIG9mIGEgd2l0bmVzcyBtYWNybyBwcm90ZWN0aW5nIHRoZSB3YXJuaW5nIGFsbG93
cyBhY2xvY2FsCi0tIyB0byBzaWxlbmNlIGFueSB3YXJuaW5ncyB3aGVuIHByb2JpbmcgZm9yIHdo
YXQgbWFjcm9zIGFyZSByZXF1aXJlZAotLSMgYW5kIG11c3QgdGhlcmVmb3JlIGJlIGxvY2F0ZWQs
IHdoZW4gdXNpbmcgdGhlIEF1dG9jb25mLXdpdGhvdXQtYWNsb2NhbC1tNAotLSMgYXV0b200dGUg
bGFuZ3VhZ2UuICBGb3IgbW9yZSBiYWNrZ3JvdW5kLCBzZWU6Ci0tIyBodHRwczovL2xpc3RzLmdu
dS5vcmcvYXJjaGl2ZS9odG1sL2F1dG9tYWtlLXBhdGNoZXMvMjAxMi0xMS9tc2cwMDAzNS5odG1s
Ci0tbTRfZGVmaW5lKFtfbTRfcmVxdWlyZV9jYWxsXSwKLS1bbTRfcHVzaGRlZihbX200X2RpdmVy
dF9ncm93XSwgbTRfZGVjcihfbTRfZGl2ZXJ0X2dyb3cpKV1kbmwKLS1bbTRfcHVzaGRlZihbX200
X2RpdmVydGluZyhbJDFdKV0pbTRfcHVzaGRlZihbX200X2RpdmVydGluZ10sIFskMV0pXWRubAot
LVttNF9kaXZlcnRfcHVzaChfbTRfZGl2ZXJ0X2dyb3csIFstXSldZG5sCi0tW200X2lmKFskMl0s
IFtdLCBbJDFdLCBbJDJdKQotLW00X3Byb3ZpZGVfaWYoWyQxXSwgW200X3NldF9yZW1vdmUoW19t
NF9wcm92aWRlXSwgWyQxXSldLAotLSAgW200X2lmbmRlZihbbTRfcmVxdWlyZV9zaWxlbnRfcHJv
YmVdLAotLSAgICBbbTRfd2Fybihbc3ludGF4XSwgWyQxIGlzIG00X3JlcXVpcmUnZCBidXQgbm90
IG00X2RlZnVuJ2RdKV0pXSldZG5sCi0tW19tNF9kaXZlcnRfcmF3KCQzKV9tNF91bmRpdmVydChf
bTRfZGl2ZXJ0X2dyb3cpXWRubAotLVttNF9kaXZlcnRfcG9wKF9tNF9kaXZlcnRfZ3JvdylfbTRf
cG9wZGVmKFtfbTRfZGl2ZXJ0X2dyb3ddLAotLVtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgW19tNF9k
aXZlcnRpbmddKV0pCi0tCi0tCi0tIyBfbTRfcmVxdWlyZV9jaGVjayhOQU1FLVRPLUNIRUNLLCBP
V05FUiwgQ0FMTEVSKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIE5BTUUtVE8tQ0hFQ0sgaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBwcmV2aW91
c2x5IGV4cGFuZGVkIGluIHRoZQotLSMgZGl2ZXJzaW9uIG93bmVkIGJ5IE9XTkVSLiAgSWYgdGhp
cyBpcyBhIHByb2JsZW0sIHdhcm4gb24gYmVoYWxmIG9mCi0tIyBDQUxMRVIgYW5kIHJldHVybiBf
bTRfcmVxdWlyZV9jYWxsOyBvdGhlcndpc2UgcmV0dXJuIG00X2lnbm9yZS4KLS1tNF9kZWZpbmUo
W19tNF9yZXF1aXJlX2NoZWNrXSwKLS1bbTRfaWYoX200X2RlZm4oW19tNF9kaXZlcnRpbmddKSwg
WyQyXSwgW200X2lnbm9yZV0sCi0tICAgICAgIG00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMl0p
XSwgWy1dKSwgWy1dLCBbbTRfd2Fybihbc3ludGF4XSwKLS0gICBbJDM6IGAkMScgd2FzIGV4cGFu
ZGVkIGJlZm9yZSBpdCB3YXMgcmVxdWlyZWQKLS1odHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJl
L2F1dG9jb25mL21hbnVhbC9hdXRvY29uZi5odG1sI0V4cGFuZGVkLUJlZm9yZS1SZXF1aXJlZF0p
X200X3JlcXVpcmVfY2FsbF0sCi0tICAgICAgIFttNF9pZ25vcmVdKV0pCi0tCi0tCi0tIyBfbTRf
ZGl2ZXJ0X2dyb3cKLS0jIC0tLS0tLS0tLS0tLS0tLQotLSMgVGhlIGNvdW50ZXIgZm9yIF9tNF9y
ZXF1aXJlX2NhbGwuCi0tbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0X2dyb3ddLCBfbTRfZGl2ZXJ0KFtH
Uk9XXSkpCi0tCi0tCi0tIyBtNF9leHBhbmRfb25jZShURVhULCBbV0lUTkVTUyA9IFRFWFRdKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIFRFWFQgaGFz
IG5ldmVyIGJlZW4gZXhwYW5kZWQsIGV4cGFuZCBpdCAqaGVyZSouICBVc2UgV0lUTkVTUyBhcwot
LSMgYXMgYSBtZW1vcnkgdGhhdCBURVhUIGhhcyBhbHJlYWR5IGJlZW4gZXhwYW5kZWQuCi0tbTRf
ZGVmaW5lKFttNF9leHBhbmRfb25jZV0sCi0tW200X3Byb3ZpZGVfaWYobTRfZGVmYXVsdF9xdW90
ZWQoWyQyXSwgWyQxXSksCi0tCSAgICAgICBbXSwKLS0JICAgICAgIFttNF9wcm92aWRlKG00X2Rl
ZmF1bHRfcXVvdGVkKFskMl0sIFskMV0pKVtdJDFdKV0pCi0tCi0tCi0tIyBtNF9wcm92aWRlKE1B
Q1JPLU5BTUUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFttNF9wcm92
aWRlXSwKLS1bbTRfaWZkZWYoW200X3Byb3ZpZGUoJDEpXSwgW10sCi0tW200X3NldF9hZGQoW19t
NF9wcm92aWRlXSwgWyQxXSwgW200X2RlZmluZShbbTRfcHJvdmlkZSgkMSldLAotLSAgbTRfaWZk
ZWYoW19tNF9kaXZlcnRpbmddLCBbX200X2RlZm4oW19tNF9kaXZlcnRpbmddKV0pKV0pXSldKQot
LQotLQotLSMgbTRfcHJvdmlkZV9pZihNQUNSTy1OQU1FLCBJRi1QUk9WSURFRCwgSUYtTk9ULVBS
T1ZJREVEKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgSWYgTUFDUk8tTkFNRSBpcyBwcm92aWRlZCBkbyBJRi1QUk9WSURFRCwg
ZWxzZSBJRi1OT1QtUFJPVklERUQuCi0tIyBUaGUgcHVycG9zZSBvZiB0aGlzIG1hY3JvIGlzIHRv
IHByb3ZpZGUgdGhlIHVzZXIgd2l0aCBhIG1lYW5zIHRvCi0tIyBjaGVjayBtYWNyb3Mgd2hpY2gg
YXJlIHByb3ZpZGVkIHdpdGhvdXQgbGV0dGluZyBoZXIga25vdyBob3cgdGhlCi0tIyBpbmZvcm1h
dGlvbiBpcyBjb2RlZC4KLS1tNF9kZWZpbmUoW200X3Byb3ZpZGVfaWZdLAotLVttNF9pZmRlZihb
bTRfcHJvdmlkZSgkMSldLAotLQkgIFskMl0sIFskM10pXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0gIyMKLS0jIyAxMi4gVGV4dCBwcm9jZXNzaW5nLiAgIyMKLS0jIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIG00X2NyX2xldHRlcnMKLS0jIG00X2NyX0xFVFRF
UlMKLS0jIG00X2NyX0xldHRlcnMKLS0jIC0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW200X2Ny
X2xldHRlcnNdLCBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpdKQotLW00X2RlZmluZShbbTRf
Y3JfTEVUVEVSU10sIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl0pCi0tbTRfZGVmaW5lKFtt
NF9jcl9MZXR0ZXJzXSwKLS1tNF9kZWZuKFttNF9jcl9sZXR0ZXJzXSlkbmwKLS1tNF9kZWZuKFtt
NF9jcl9MRVRURVJTXSlkbmwKLS0pCi0tCi0tCi0tIyBtNF9jcl9kaWdpdHMKLS0jIC0tLS0tLS0t
LS0tLQotLW00X2RlZmluZShbbTRfY3JfZGlnaXRzXSwgWzAxMjM0NTY3ODldKQotLQotLQotLSMg
bTRfY3JfYWxudW0KLS0jIC0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFttNF9jcl9hbG51bV0sCi0t
bTRfZGVmbihbbTRfY3JfTGV0dGVyc10pZG5sCi0tbTRfZGVmbihbbTRfY3JfZGlnaXRzXSlkbmwK
LS0pCi0tCi0tCi0tIyBtNF9jcl9zeW1ib2xzMQotLSMgbTRfY3Jfc3ltYm9sczIKLS0jIC0tLS0t
LS0tLS0tLS0tCi0tbTRfZGVmaW5lKFttNF9jcl9zeW1ib2xzMV0sCi0tbTRfZGVmbihbbTRfY3Jf
TGV0dGVyc10pZG5sCi0tXykKLS0KLS1tNF9kZWZpbmUoW200X2NyX3N5bWJvbHMyXSwKLS1tNF9k
ZWZuKFttNF9jcl9zeW1ib2xzMV0pZG5sCi0tbTRfZGVmbihbbTRfY3JfZGlnaXRzXSlkbmwKLS0p
Ci0tCi0tIyBtNF9jcl9hbGwKLS0jIC0tLS0tLS0tLQotLSMgVGhlIGNoYXJhY3RlciByYW5nZSBy
ZXByZXNlbnRpbmcgZXZlcnl0aGluZywgd2l0aCBgLScgYXMgdGhlIGxhc3QKLS0jIGNoYXJhY3Rl
ciwgc2luY2UgaXQgaXMgc3BlY2lhbCB0byBtNF90cmFuc2xpdC4gIFVzZSB3aXRoIGNhcmUsIGJl
Y2F1c2UKLS0jIGl0IGNvbnRhaW5zIGNoYXJhY3RlcnMgc3BlY2lhbCB0byBNNCAoZm9ydHVuYXRl
bHksIGJvdGggQVNDSUkgYW5kIEVCQ0RJQwotLSMgaGF2ZSBbXSBpbiBvcmRlciwgc28gbTRfZGVm
bihbbTRfY3JfYWxsXSkgcmVtYWlucyBhIHZhbGlkIHN0cmluZykuICBJdAotLSMgYWxzbyBjb250
YWlucyBjaGFyYWN0ZXJzIHNwZWNpYWwgdG8gdGVybWluYWxzLCBzbyBpdCBzaG91bGQgbmV2ZXIg
YmUKLS0jIGRpc3BsYXllZCBpbiBhbiBlcnJvciBtZXNzYWdlLiAgQWxzbywgYXR0ZW1wdHMgdG8g
bWFwIFsgYW5kIF0gdG8gb3RoZXIKLS0jIGNoYXJhY3RlcnMgdmlhIG00X3RyYW5zbGl0IG11c3Qg
ZGVhbCB3aXRoIHRoZSBmYWN0IHRoYXQgbTRfdHJhbnNsaXQgZG9lcwotLSMgbm90IGFkZCBxdW90
ZXMgdG8gdGhlIG91dHB1dC4KLS0jCi0tIyBJbiBFQkNESUMsICQgaXMgaW1tZWRpYXRlbHkgZm9s
bG93ZWQgYnkgKiwgd2hpY2ggbGVhZHMgdG8gcHJvYmxlbXMKLS0jIGlmIG00X2NyX2FsbCBpcyBp
bmxpbmVkIGludG8gYSBtYWNybyBkZWZpbml0aW9uOyBzbyBzd2FwIHRoZW0uCi0tIwotLSMgSXQg
aXMgbWFpbmx5IHVzZWZ1bCBpbiBnZW5lcmF0aW5nIGludmVydGVkIGNoYXJhY3RlciByYW5nZSBt
YXBzLCBmb3IgdXNlCi0tIyBpbiBwbGFjZXMgd2hlcmUgbTRfdHJhbnNsaXQgaXMgZmFzdGVyIHRo
YW4gYW4gZXF1aXZhbGVudCBtNF9icGF0c3Vic3Q7Ci0tIyB0aGUgcmVnZXggYFteYS16XScgaXMg
ZXF1aXZhbGVudCB0bzoKLS0jICBtNF90cmFuc2xpdChtNF9kcXVvdGUobTRfZGVmbihbbTRfY3Jf
YWxsXSkpLCBbYS16XSkKLS1tNF9kZWZpbmUoW200X2NyX2FsbF0sCi0tbTRfdHJhbnNsaXQobTRf
ZHF1b3RlKG00X2Zvcm1hdChtNF9kcXVvdGUobTRfZm9yKAotLSAgLDEsMjU1LCxbWyVjXV0pKW00
X2ZvcihbaV0sMSwyNTUsLFssaV0pKSksIFskKi1dLCBbKiRdKS0pCi0tCi0tCi0tIyBfbTRfZGVm
aW5lX2NyX25vdChDQVRFR09SWSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
RGVmaW5lIG00X2NyX25vdF9DQVRFR09SWSBhcyB0aGUgaW52ZXJzZSBvZiBtNF9jcl9DQVRFR09S
WS4KLS1tNF9kZWZpbmUoW19tNF9kZWZpbmVfY3Jfbm90XSwKLS1bbTRfZGVmaW5lKFttNF9jcl9u
b3RfJDFdLAotLQkgICBtNF90cmFuc2xpdChtNF9kcXVvdGUobTRfZGVmbihbbTRfY3JfYWxsXSkp
LAotLQkJICAgICAgIG00X2RlZm4oW200X2NyXyQxXSkpKV0pCi0tCi0tCi0tIyBtNF9jcl9ub3Rf
bGV0dGVycwotLSMgbTRfY3Jfbm90X0xFVFRFUlMKLS0jIG00X2NyX25vdF9MZXR0ZXJzCi0tIyBt
NF9jcl9ub3RfZGlnaXRzCi0tIyBtNF9jcl9ub3RfYWxudW0KLS0jIG00X2NyX25vdF9zeW1ib2xz
MQotLSMgbTRfY3Jfbm90X3N5bWJvbHMyCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEludmVy
c2UgY2hhcmFjdGVyIHNldHMKLS1fbTRfZGVmaW5lX2NyX25vdChbbGV0dGVyc10pCi0tX200X2Rl
ZmluZV9jcl9ub3QoW0xFVFRFUlNdKQotLV9tNF9kZWZpbmVfY3Jfbm90KFtMZXR0ZXJzXSkKLS1f
bTRfZGVmaW5lX2NyX25vdChbZGlnaXRzXSkKLS1fbTRfZGVmaW5lX2NyX25vdChbYWxudW1dKQot
LV9tNF9kZWZpbmVfY3Jfbm90KFtzeW1ib2xzMV0pCi0tX200X2RlZmluZV9jcl9ub3QoW3N5bWJv
bHMyXSkKLS0KLS0KLS0jIG00X25ld2xpbmUoW1NUUklOR10pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgRXhwYW5kcyB0byBhIG5ld2xpbmUsIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IFNUUklO
Ry4gIEV4aXN0cyBtb3N0bHkgZm9yCi0tIyBmb3JtYXR0aW5nIHJlYXNvbnMuCi0tbTRfZGVmaW5l
KFttNF9uZXdsaW5lXSwgWwotLSQxXSkKLS0KLS0KLS0jIG00X3JlX2VzY2FwZShTVFJJTkcpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRXNjYXBlIFJFIGFjdGl2ZSBjaGFyYWN0ZXJzIGlu
IFNUUklORy4KLS1tNF9kZWZpbmUoW200X3JlX2VzY2FwZV0sCi0tW200X2JwYXRzdWJzdChbJDFd
LAotLQkgICAgICBbW11bKisuP1xeJF1dLCBbXFxcJl0pXSkKLS0KLS0KLS0jIG00X3JlX3N0cmlu
ZwotLSMgLS0tLS0tLS0tLS0tCi0tIyBSZWdleHAgZm9yIGBbYS16QS1aXzAtOV0qJwotLSMgbTRf
ZHF1b3RlIHByb3ZpZGVzIGxpdGVyYWwgW10gZm9yIHRoZSBjaGFyYWN0ZXIgY2xhc3MuCi0tbTRf
ZGVmaW5lKFttNF9yZV9zdHJpbmddLAotLW00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9zeW1ib2xz
Ml0pKWRubAotLVsqXWRubAotLSkKLS0KLS0KLS0jIG00X3JlX3dvcmQKLS0jIC0tLS0tLS0tLS0K
LS0jIFJlZ2V4cCBmb3IgYFthLXpBLVpfXVthLXpBLVpfMC05XSonCi0tbTRfZGVmaW5lKFttNF9y
ZV93b3JkXSwKLS1tNF9kcXVvdGUobTRfZGVmbihbbTRfY3Jfc3ltYm9sczFdKSlkbmwKLS1tNF9k
ZWZuKFttNF9yZV9zdHJpbmddKWRubAotLSkKLS0KLS0KLS0jIG00X3RvbG93ZXIoU1RSSU5HKQot
LSMgbTRfdG91cHBlcihTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFRoZXNlIG1h
Y3JvcyBjb252ZXJ0IFNUUklORyB0byBsb3dlcmNhc2Ugb3IgdXBwZXJjYXNlLgotLSMKLS0jIFJh
dGhlciB0aGFuIGV4cGFuZCB0aGUgbTRfZGVmbiBlYWNoIHRpbWUsIHdlIGlubGluZSB0aGVtIHVw
IGZyb250LgotLW00X2RlZmluZShbbTRfdG9sb3dlcl0sCi0tW200X3RyYW5zbGl0KFtbJDFdXSwg
XW00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9MRVRURVJTXSkpWywKLS0JCSAgICAgXW00X2RxdW90
ZShtNF9kZWZuKFttNF9jcl9sZXR0ZXJzXSkpWyldKQotLW00X2RlZmluZShbbTRfdG91cHBlcl0s
Ci0tW200X3RyYW5zbGl0KFtbJDFdXSwgXW00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9sZXR0ZXJz
XSkpWywKLS0JCSAgICAgXW00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9MRVRURVJTXSkpWyldKQot
LQotLQotLSMgbTRfc3BsaXQoU1RSSU5HLCBbUkVHRVhQXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBTcGxpdCBTVFJJTkcgaW50byBhbiBtNCBsaXN0IG9mIHF1b3RlZCBlbGVt
ZW50cy4gIFRoZSBlbGVtZW50cyBhcmUKLS0jIHF1b3RlZCB3aXRoIFsgYW5kIF0uICBCZWdpbm5p
bmcgc3BhY2VzIGFuZCBlbmQgc3BhY2VzICphcmUga2VwdCouCi0tIyBVc2UgbTRfc3RyaXAgdG8g
cmVtb3ZlIHRoZW0uCi0tIwotLSMgUkVHRVhQIHNwZWNpZmllcyB3aGVyZSB0byBzcGxpdC4gIERl
ZmF1bHQgaXMgW1x0IF0rLgotLSMKLS0jIElmIFNUUklORyBpcyBlbXB0eSwgdGhlIHJlc3VsdCBp
cyBhbiBlbXB0eSBsaXN0LgotLSMKLS0jIFBheSBhdHRlbnRpb24gdG8gdGhlIG00X2NoYW5nZXF1
b3Rlcy4gIFdoZW4gbTQgcmVhZHMgdGhlIGRlZmluaXRpb24gb2YKLS0jIG00X3NwbGl0LCBpdCBz
dGlsbCBoYXMgcXVvdGVzIHNldCB0byBbIGFuZCBdLiAgTHVja2lseSwgdGhlc2UgYXJlIG1hdGNo
ZWQKLS0jIGluIHRoZSBtYWNybyBib2R5LCBzbyB0aGUgZGVmaW5pdGlvbiBpcyBzdG9yZWQgY29y
cmVjdGx5LiAgVXNlIHRoZSBzYW1lCi0tIyBhbHRlcm5hdGUgcXVvdGVzIGFzIG00X25vcXVvdGU7
IGl0IG11c3QgYmUgdW5saWtlbHkgdG8gYXBwZWFyIGluICQxLgotLSMKLS0jIEFsc28sIG5vdGlj
ZSB0aGF0ICQxIGlzIHF1b3RlZCB0d2ljZSwgc2luY2Ugd2Ugd2FudCB0aGUgcmVzdWx0IHRvCi0t
IyBiZSBxdW90ZWQuICBUaGVuIHlvdSBzaG91bGQgdW5kZXJzdGFuZCB0aGF0IHRoZSBhcmd1bWVu
dCBvZgotLSMgcGF0c3Vic3QgaXMgLT08eyhTVFJJTkcpfT49LSAoaS5lLiwgd2l0aCBhZGRpdGlv
bmFsIC09PHsoIGFuZCApfT49LSkuCi0tIwotLSMgVGhpcyBtYWNybyBpcyBzYWZlIG9uIGFjdGl2
ZSBzeW1ib2xzLCBpLmUuOgotLSMgICBtNF9kZWZpbmUoYWN0aXZlLCBBQ1RJVkUpCi0tIyAgIG00
X3NwbGl0KFthY3RpdmUgYWN0aXZlIF0pZW5kCi0tIyAgID0+IFthY3RpdmVdLCBbYWN0aXZlXSwg
W11lbmQKLS0jCi0tIyBPcHRpbWl6ZSBvbiByZWdleCBvZiBgICcgKHNwYWNlKSwgc2luY2UgbTRf
Zm9yZWFjaF93IGFscmVhZHkgZ3VhcmFudGVlcwotLSMgdGhhdCB0aGUgbGlzdCBjb250YWlucyBz
aW5nbGUgc3BhY2Ugc2VwYXJhdG9ycywgYW5kIGEgY29tbW9uIGNhc2UgaXMKLS0jIHNwbGl0dGlu
ZyBhIHNpbmdsZS1lbGVtZW50IGxpc3QuICBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcmVxdWVudGx5
LAotLSMgc28gYXZvaWQgdW5uZWNlc3NhcnkgZG5sIGluc2lkZSB0aGUgZGVmaW5pdGlvbi4KLS1t
NF9kZWZpbmUoW200X3NwbGl0XSwKLS1bbTRfaWYoWyQxXSwgW10sIFtdLAotLSAgICAgICBbJDJd
LCBbIF0sIFttNF9pZihtNF9pbmRleChbJDFdLCBbIF0pLCBbLTFdLCBbW1skMV1dXSwKLS0JCQkg
W18kMChbJDFdLCBbJDJdLCBbLCBdKV0pXSwKLS0gICAgICAgWyQyXSwgW10sIFtfJDAoWyQxXSwg
W1sJIF0rXSwgWywgXSldLAotLSAgICAgICBbXyQwKFskMV0sIFskMl0sIFssIF0pXSldKQotLQot
LW00X2RlZmluZShbX200X3NwbGl0XSwKLS1bbTRfY2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1d
KV1kbmwKLS1bW200X2JwYXRzdWJzdCgtPTx7KC09PHsoJDEpfT49LSl9Pj0tLCAtPTx7KCQyKX0+
PS0sCi0tCSAgICAgICAtPTx7KF0kM1spfT49LSldbTRfY2hhbmdlcXVvdGUoWywgXSldKQotLQot
LQotLSMgbTRfY2hvbXAoU1RSSU5HKQotLSMgbTRfY2hvbXBfYWxsKFNUUklORykKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gU1RSSU5HIHF1b3RlZCwgYnV0IHdpdGhvdXQgYSB0
cmFpbGluZyBuZXdsaW5lLiAgbTRfY2hvbXAKLS0jIHJlbW92ZXMgYXQgbW9zdCBvbmUgbmV3bGlu
ZSwgd2hpbGUgbTRfY2hvbXBfYWxsIHJlbW92ZXMgYWxsCi0tIyBjb25zZWN1dGl2ZSB0cmFpbGlu
ZyBuZXdsaW5lcy4gIEVtYmVkZGVkIG5ld2xpbmVzIGFyZSBub3QgdG91Y2hlZCwKLS0jIGFuZCBh
IHRyYWlsaW5nIGJhY2tzbGFzaC1uZXdsaW5lIGxlYXZlcyBqdXN0IGEgdHJhaWxpbmcgYmFja3Ns
YXNoLgotLSMKLS0jIG00X2JyZWdleHAgaXMgc2xvd2VyIHRoYW4gbTRfaW5kZXgsIGFuZCB3ZSBk
b24ndCBhbHdheXMgd2FudCB0bwotLSMgcmVtb3ZlIGFsbCBuZXdsaW5lczsgaGVuY2UgdGhlIHR3
byB2YXJpYW50cy4gIFdlIG1hc3NhZ2UgY2hhcmFjdGVycwotLSMgdG8gZ2l2ZSBhIG5pY2VyIHBh
dHRlcm4gdG8gbWF0Y2gsIHBhcnRpY3VsYXJseSBzaW5jZSBtNF9icmVnZXhwIGlzCi0tIyBsaW5l
LW9yaWVudGVkLiAgQm90aCB2ZXJzaW9ucyBtdXN0IGd1YXJhbnRlZSBhIG1hdGNoLCB0byBhdm9p
ZCBidWdzCi0tIyB3aXRoIHByZWNpc2lvbiAtMSBpbiBtNF9mb3JtYXQgaW4gb2xkZXIgbTQuCi0t
bTRfZGVmaW5lKFttNF9jaG9tcF0sCi0tW200X2Zvcm1hdChbWyUuKnNdXSwgbTRfaW5kZXgobTRf
dHJhbnNsaXQoW1skMV1dLCBbCi0tLy5dLCBbLyAgXSlbLi8uXSwgWy8uXSksIFskMV0pXSkKLS0K
LS1tNF9kZWZpbmUoW200X2Nob21wX2FsbF0sCi0tW200X2Zvcm1hdChbWyUuKnNdXSwgbTRfYnJl
Z2V4cChtNF90cmFuc2xpdChbWyQxXV0sIFsKLS0vXSwgWy8gXSksIFsvKiRdKSwgWyQxXSldKQot
LQotLQotLSMgbTRfZmxhdHRlbihTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElm
IFNUUklORyBjb250YWlucyBlbmQgb2YgbGluZXMsIHJlcGxhY2UgdGhlbSB3aXRoIHNwYWNlcy4g
IElmIHRoZXJlCi0tIyBhcmUgYmFja3NsYXNoZWQgZW5kIG9mIGxpbmVzLCByZW1vdmUgdGhlbS4g
IFRoaXMgbWFjcm8gaXMgc2FmZSB3aXRoCi0tIyBhY3RpdmUgc3ltYm9scy4KLS0jICAgIG00X2Rl
ZmluZShhY3RpdmUsIEFDVElWRSkKLS0jICAgIG00X2ZsYXR0ZW4oW2FjdGl2ZQotLSMgICAgYWN0
XAotLSMgICAgaXZlXSllbmQKLS0jICAgID0+IGFjdGl2ZSBhY3RpdmVlbmQKLS0jCi0tIyBJbiBt
NCwgbTRfYnBhdHN1YnN0IGlzIGV4cGVuc2l2ZSwgc28gZmlyc3QgY2hlY2sgZm9yIGEgbmV3bGlu
ZS4KLS1tNF9kZWZpbmUoW200X2ZsYXR0ZW5dLAotLVttNF9pZihtNF9pbmRleChbJDFdLCBbCi0t
XSksIFstMV0sIFtbJDFdXSwKLS0gICAgICAgW200X3RyYW5zbGl0KG00X2JwYXRzdWJzdChbW1sk
MV1dXSwgW1xcCi0tXSksIFsKLS1dLCBbIF0pXSldKQotLQotLQotLSMgbTRfc3RyaXAoU1RSSU5H
KQotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kcyBpbnRvIFNUUklORyB3aXRoIHRhYnMg
YW5kIHNwYWNlcyBzaW5nbGVkIG91dCBpbnRvIGEgc2luZ2xlCi0tIyBzcGFjZSwgYW5kIHJlbW92
aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcy4KLS0jCi0tIyBUaGlzIG1hY3JvIGlzIHJv
YnVzdCB0byBhY3RpdmUgc3ltYm9scy4KLS0jICAgIG00X2RlZmluZShhY3RpdmUsIEFDVElWRSkK
LS0jICAgIG00X3N0cmlwKFsgIGFjdGl2ZSA8dGFiPiA8dGFiPmFjdGl2ZSBdKWVuZAotLSMgICAg
PT4gYWN0aXZlIGFjdGl2ZWVuZAotLSMKLS0jIEZpcnN0LCBub3RpY2UgdGhhdCB3ZSBndWFyYW50
ZWUgdHJhaWxpbmcgc3BhY2UuICBXaHk/ICBCZWNhdXNlIHJlZ3VsYXIKLS0jIGV4cHJlc3Npb25z
IGFyZSBncmVlZHksIGFuZCBgLiogPycgd291bGQgYWx3YXlzIGdyb3VwIHRoZSBzcGFjZSBpbnRv
IHRoZQotLSMgLiogcG9ydGlvbi4gIFRoZSBhbGdvcml0aG0gaXMgc2ltcGxlciBieSBhdm9pZGlu
ZyBgPycgYXQgdGhlIGVuZC4gIFRoZQotLSMgYWxnb3JpdGhtIGNvcnJlY3RseSBzdHJpcHMgZXZl
cnl0aGluZyBpZiBTVFJJTkcgaXMganVzdCBgICcuCi0tIwotLSMgVGhlbiBub3RpY2UgdGhlIHNl
Y29uZCBwYXR0ZXJuOiBpdCBpcyBpbiBjaGFyZ2Ugb2YgcmVtb3ZpbmcgdGhlCi0tIyBsZWFkaW5n
L3RyYWlsaW5nIHNwYWNlcy4gIFdoeSBub3QganVzdCBgW14gXSc/ICBCZWNhdXNlIHRoZXkgYXJl
Ci0tIyBhcHBsaWVkIHRvIG92ZXItcXVvdGVkIHN0cmluZ3MsIGkuZS4gbW9yZSBvciBsZXNzIFtT
VFJJTkddLCBkdWUKLS0jIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBtNF9icGF0c3Vic3RzLiAgU28g
dGhlIGxlYWRpbmcgc3BhY2UgaW4gU1RSSU5HCi0tIyBpcyB0aGUgKnNlY29uZCogY2hhcmFjdGVy
OyBlcXVhbGx5IGZvciB0aGUgdHJhaWxpbmcgc3BhY2UuCi0tbTRfZGVmaW5lKFttNF9zdHJpcF0s
Ci0tW200X2JwYXRzdWJzdHMoWyQxIF0sCi0tCSAgICAgICBbWwkgXStdLCBbIF0sCi0tCSAgICAg
ICBbXi4gP1woLipcKSAuJF0sIFtbW1wxXV1dKV0pCi0tCi0tCi0tIyBtNF9ub3JtYWxpemUoU1RS
SU5HKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEFwcGx5IG00X2ZsYXR0ZW4gYW5kIG00
X3N0cmlwIHRvIFNUUklORy4KLS0jCi0tIyBUaGUgYXJndW1lbnQgaXMgcXVvdGVkLCBzbyB0aGF0
IHRoZSBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZlIHN5bWJvbHM6Ci0tIwotLSMgICAgbTRfZGVm
aW5lKGFjdGl2ZSwgQUNUSVZFKQotLSMgICAgbTRfbm9ybWFsaXplKFsgIGFjdFwKLS0jICAgIGl2
ZQotLSMgICAgYWN0aXZlIF0pZW5kCi0tIyAgICA9PiBhY3RpdmUgYWN0aXZlZW5kCi0tCi0tbTRf
ZGVmaW5lKFttNF9ub3JtYWxpemVdLAotLVttNF9zdHJpcChtNF9mbGF0dGVuKFskMV0pKV0pCi0t
Ci0tCi0tCi0tIyBtNF9qb2luKFNFUCwgQVJHMSwgQVJHMi4uLikKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgUHJvZHVjZSBBUkcxU0VQQVJHMi4uLlNFUEFSR24uICBBdm9pZCBi
YWNrLXRvLWJhY2sgU0VQIHdoZW4gYSBnaXZlbiBBUkcKLS0jIGlzIHRoZSBlbXB0eSBzdHJpbmcu
ICBObyBleHBhbnNpb24gaXMgcGVyZm9ybWVkIG9uIFNFUCBvciBBUkdzLgotLSMKLS0jIFNpbmNl
IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGpvaW4gY2FuIGJlIGFyYml0cmFyaWx5IGxvbmcs
IHdlCi0tIyB3YW50IHRvIGF2b2lkIGhhdmluZyBtb3JlIHRoYW4gb25lICRAIGluIHRoZSBtYWNy
byBkZWZpbml0aW9uOwotLSMgb3RoZXJ3aXNlLCB0aGUgZXhwYW5zaW9uIHdvdWxkIHJlcXVpcmUg
dHdpY2UgdGhlIG1lbW9yeSBvZiB0aGUgYWxyZWFkeQotLSMgbG9uZyBsaXN0LiAgSGVuY2UsIG00
X2pvaW4gbWVyZWx5IGxvb2tzIGZvciB0aGUgZmlyc3Qgbm9uLWVtcHR5IGVsZW1lbnQsCi0tIyBh
bmQgb3V0cHV0cyBqdXN0IHRoYXQgZWxlbWVudDsgd2hpbGUgX200X2pvaW4gbG9va3MgZm9yIGFs
bCBub24tZW1wdHkKLS0jIGVsZW1lbnRzLCBhbmQgb3V0cHV0cyB0aGVtIGZvbGxvd2luZyBhIHNl
cGFyYXRvci4gIFRoZSBmaW5hbCB0cmljayB0bwotLSMgbm90ZSBpcyB0aGF0IHdlIGRlY2lkZSBi
ZXR3ZWVuIHJlY3Vyc2luZyB3aXRoICQwIG9yIF8kMCBiYXNlZCBvbiB0aGUKLS0jIG5lc3RlZCBt
NF9pZiBlbmRpbmcgd2l0aCBgXycuCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBz
eW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUoW200X2pvaW5d
LAotLVttNF9pZihbJCNdLCBbMV0sIFtdLAotLSAgICAgICBbJCNdLCBbMl0sIFtbJDJdXSwKLS0g
ICAgICAgW200X2lmKFskMl0sIFtdLCBbXSwgW1skMl1fXSkkMChbJDFdLCBtNF9zaGlmdDIoJEAp
KV0pXSkKLS1tNF9kZWZpbmUoW19tNF9qb2luXSwKLS1bbTRfaWYoWyQjJDJdLCBbMl0sIFtdLAot
LSAgICAgICBbbTRfaWYoWyQyXSwgW10sIFtdLCBbWyQxJDJdXSkkMChbJDFdLCBtNF9zaGlmdDIo
JEApKV0pXSkKLS0KLS0jIG00X2pvaW5hbGwoU0VQLCBBUkcxLCBBUkcyLi4uKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQcm9kdWNlIEFSRzFTRVBBUkcyLi4uU0VQQVJH
bi4gIEFuIGVtcHR5IEFSRyByZXN1bHRzIGluIGJhY2stdG8tYmFjayBTRVAuCi0tIyBObyBleHBh
bnNpb24gaXMgcGVyZm9ybWVkIG9uIFNFUCBvciBBUkdzLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZv
cmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVm
aW5lKFttNF9qb2luYWxsXSwgW1skMl1fJDAoWyQxXSwgbTRfc2hpZnQoJEApKV0pCi0tbTRfZGVm
aW5lKFtfbTRfam9pbmFsbF0sCi0tW200X2lmKFskI10sIFsyXSwgW10sIFtbJDEkM10kMChbJDFd
LCBtNF9zaGlmdDIoJEApKV0pXSkKLS0KLS0jIG00X2NvbWJpbmUoW1NFUEFSQVRPUl0sIFBSRUZJ
WC1MSVNULCBbSU5GSVhdLCBTVUZGSVguLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUHJvZHVjZSB0aGUgcGFpcndpc2Ug
Y29tYmluYXRpb24gb2YgZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVvdGVkLAotLSMgY29tbWEtc2Vw
YXJhdGVkIFBSRUZJWC1MSVNUIHdpdGggZXZlcnkgZWxlbWVudCBmcm9tIHRoZSBTVUZGSVggYXJn
dW1lbnRzLgotLSMgRWFjaCBwYWlyIGlzIGpvaW5lZCB3aXRoIElORklYLCBhbmQgcGFpcnMgYXJl
IHNlcGFyYXRlZCBieSBTRVBBUkFUT1IuCi0tIyBObyBleHBhbnNpb24gb2NjdXJzIG9uIFNFUEFS
QVRPUiwgSU5GSVgsIG9yIGVsZW1lbnRzIG9mIGVpdGhlciBsaXN0LgotLSMKLS0jIEZvciBleGFt
cGxlOgotLSMgICBtNF9jb21iaW5lKFssIF0sIFtbYV0sIFtiXSwgW2NdXSwgWy1dLCBbMV0sIFsy
XSwgWzNdKQotLSMgICA9PiBhLTEsIGEtMiwgYS0zLCBiLTEsIGItMiwgYi0zLCBjLTEsIGMtMiwg
Yy0zCi0tIwotLSMgVGhpcyBkZWZpbml0aW9uIGlzIGEgYml0IGhhaXJ5OyB0aGUgdGhpbmcgdG8g
cmVhbGl6ZSBpcyB0aGF0IHdlIHdhbnQKLS0jIHRvIGNvbnN0cnVjdCBtNF9tYXBfYXJnc19zZXAo
W1twcmVmaXgkM11dLCBbXSwgW1skMV1dLCBtNF9zaGlmdDMoJEApKQotLSMgYXMgdGhlIGlubmVy
IGxvb3AsIHVzaW5nIGVhY2ggcHJlZml4IGdlbmVyYXRlZCBieSB0aGUgb3V0ZXIgbG9vcCwKLS0j
IGFuZCB3aXRob3V0IHJlY2FsY3VsYXRpbmcgbTRfc2hpZnQzIGV2ZXJ5IG91dGVyIGl0ZXJhdGlv
bi4KLS1tNF9kZWZpbmUoW200X2NvbWJpbmVdLAotLVttNF9pZihbJDJdLCBbXSwgW10sIG00X2V2
YWwoWyQjID4gM10pLCBbMV0sCi0tW200X21hcF9hcmdzX3NlcChbbTRfbWFwX2FyZ3Nfc2VwKG00
X2RxdW90ZShdLCBbKVtbJDNdXSwgW10sIFtbJDFdXSxdXV1kbmwKLS1bbTRfZHF1b3RlKG00X2Rx
dW90ZShtNF9zaGlmdDMoJEApKSlbWyldLCBbWyQxXV0sICQyKV0pXSkKLS0KLS0KLS0jIG00X2Fw
cGVuZChNQUNSTy1OQU1FLCBTVFJJTkcsIFtTRVBBUkFUT1JdKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZWRlZmluZSBNQUNSTy1OQU1FIHRvIGhv
bGQgaXRzIGZvcm1lciBjb250ZW50IHBsdXMgYFNFUEFSQVRPUmAnU1RSSU5HJwotLSMgYXQgdGhl
IGVuZC4gIEl0IGlzIHZhbGlkIHRvIHVzZSB0aGlzIG1hY3JvIHdpdGggTUFDUk8tTkFNRSB1bmRl
ZmluZWQsCi0tIyBpbiB3aGljaCBjYXNlIG5vIFNFUEFSQVRPUiBpcyBhZGRlZC4gIEJlIGF3YXJl
IHRoYXQgdGhlIGNyaXRlcmlvbiBpcwotLSMgYG5vdCBiZWluZyBkZWZpbmVkJywgYW5kIG5vdCBg
bm90IGJlaW5nIGVtcHR5Jy4KLS0jCi0tIyBOb3RlIHRoYXQgbmVpdGhlciBTVFJJTkcgbm9yIFNF
UEFSQVRPUiBhcmUgZXhwYW5kZWQgaGVyZTsgcmF0aGVyLCB3aGVuCi0tIyB5b3UgZXhwYW5kIE1B
Q1JPLU5BTUUsIHRoZXkgd2lsbCBiZSBleHBhbmRlZCBhdCB0aGF0IHBvaW50IGluIHRpbWUuCi0t
IwotLSMgVGhpcyBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZlIHN5bWJvbHMuICBJdCBjYW4gYmUg
dXNlZCB0byBncm93Ci0tIyBzdHJpbmdzLgotLSMKLS0jICAgIHwgbTRfZGVmaW5lKGFjdGl2ZSwg
QUNUSVZFKWRubAotLSMgICAgfCBtNF9hcHBlbmQoW3NlbnRlbmNlXSwgW1RoaXMgaXMgYW5dKWRu
bAotLSMgICAgfCBtNF9hcHBlbmQoW3NlbnRlbmNlXSwgWyBhY3RpdmUgXSlkbmwKLS0jICAgIHwg
bTRfYXBwZW5kKFtzZW50ZW5jZV0sIFtzeW1ib2wuXSlkbmwKLS0jICAgIHwgc2VudGVuY2UKLS0j
ICAgIHwgbTRfdW5kZWZpbmUoW2FjdGl2ZV0pZG5sCi0tIyAgICB8IHNlbnRlbmNlCi0tIyAgICA9
PiBUaGlzIGlzIGFuIEFDVElWRSBzeW1ib2wuCi0tIyAgICA9PiBUaGlzIGlzIGFuIGFjdGl2ZSBz
eW1ib2wuCi0tIwotLSMgSXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGhvb2tzLgotLSMKLS0jICAg
IHwgbTRfZGVmaW5lKGFjdGl2ZSwgQUNUSVZFKWRubAotLSMgICAgfCBtNF9hcHBlbmQoW2hvb2tz
XSwgW200X2RlZmluZShbYWN0MV0sIFthY3QyXSldKWRubAotLSMgICAgfCBtNF9hcHBlbmQoW2hv
b2tzXSwgW200X2RlZmluZShbYWN0Ml0sIFthY3RpdmVdKV0pZG5sCi0tIyAgICB8IG00X3VuZGVm
aW5lKFthY3RpdmVdKWRubAotLSMgICAgfCBhY3QxCi0tIyAgICB8IGhvb2tzCi0tIyAgICB8IGFj
dDEKLS0jICAgID0+IGFjdDEKLS0jICAgID0+Ci0tIyAgICA9PiBhY3RpdmUKLS0jCi0tIyBJdCBj
YW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSBsaXN0cywgYWx0aG91Z2ggdGhpcyBwYXJ0aWN1bGFy
IHVzYWdlIHdhcwotLSMgYnJva2VuIHByaW9yIHRvIGF1dG9jb25mIDIuNjIuCi0tIyAgICB8IG00
X2FwcGVuZChbbGlzdF0sIFtvbmVdLCBbLCBdKWRubAotLSMgICAgfCBtNF9hcHBlbmQoW2xpc3Rd
LCBbdHdvXSwgWywgXSlkbmwKLS0jICAgIHwgbTRfYXBwZW5kKFtsaXN0XSwgW3RocmVlXSwgWywg
XSlkbmwKLS0jICAgIHwgbGlzdAotLSMgICAgfCBtNF9kcXVvdGUobGlzdCkKLS0jICAgID0+IG9u
ZSwgdHdvLCB0aHJlZQotLSMgICAgPT4gW29uZV0sW3R3b10sW3RocmVlXQotLSMKLS0jIE5vdGUg
dGhhdCBtNF9hcHBlbmQgY2FuIGJlbmVmaXQgZnJvbSBhbW9ydGl6ZWQgTyhuKSBtNCBiZWhhdmlv
ciwgaWYKLS0jIHRoZSB1bmRlcmx5aW5nIG00IGltcGxlbWVudGF0aW9uIGlzIHNtYXJ0IGVub3Vn
aCB0byBhdm9pZCBjb3B5aW5nIGV4aXN0aW5nCi0tIyBjb250ZW50cyB3aGVuIGVubGFyZ2luZyBh
IG1hY3JvJ3MgZGVmaW5pdGlvbiBpbnRvIGFueSBwcmUtYWxsb2NhdGVkIHN0b3JhZ2UKLS0jICht
NCAxLjQueCB1bmZvcnR1bmF0ZWx5IGRvZXMgbm90IGltcGxlbWVudCB0aGlzIG9wdGltaXphdGlv
bikuICBXZSBkbwotLSMgbm90IGltcGxlbWVudCBtNF9wcmVwZW5kLCBzaW5jZSBpdCBpcyBpbmhl
cmVudGx5IE8obl4yKSAocHJlLWFsbG9jYXRlZAotLSMgc3RvcmFnZSBvbmx5IG9jY3VycyBhdCB0
aGUgZW5kIG9mIGEgbWFjcm8sIHNvIHRoZSBleGlzdGluZyBjb250ZW50cyBtdXN0Ci0tIyBhbHdh
eXMgYmUgbW92ZWQpLgotLSMKLS0jIFVzZSBfbTRfZGVmbiBmb3Igc3BlZWQuCi0tbTRfZGVmaW5l
KFttNF9hcHBlbmRdLAotLVttNF9kZWZpbmUoWyQxXSwgbTRfaWZkZWYoWyQxXSwgW19tNF9kZWZu
KFskMV0pWyQzXV0pWyQyXSldKQotLQotLQotLSMgbTRfYXBwZW5kX3VuaXEoTUFDUk8tTkFNRSwg
U1RSSU5HLCBbU0VQQVJBVE9SXSwgW0lGLVVOSVFdLCBbSUYtRFVQXSkKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0tIyBMaWtlIGBtNF9hcHBlbmQnLCBidXQgYXBwZW5kIG9ubHkgaWYgbm90IHlldCBwcmVzZW50
LiAgQWRkaXRpb25hbGx5LAotLSMgZXhwYW5kIElGLVVOSVEgaWYgU1RSSU5HIHdhcyBhcHBlbmRl
ZCwgb3IgSUYtRFVQIGlmIFNUUklORyB3YXMgYWxyZWFkeQotLSMgcHJlc2VudC4gIEFsc28sIHdh
cm4gaWYgU0VQQVJBVE9SIGlzIG5vdCBlbXB0eSBhbmQgb2NjdXJzIHdpdGhpbiBTVFJJTkcsCi0t
IyBhcyB0aGUgYWxnb3JpdGhtIG5vIGxvbmdlciBndWFyYW50ZWVzIHVuaXF1ZW5lc3MuCi0tIwot
LSMgTm90ZSB0aGF0IHdoaWxlIG00X2FwcGVuZCBjYW4gYmUgTyhuKSAoZGVwZW5kaW5nIG9uIHRo
ZSBxdWFsaXR5IG9mIHRoZQotLSMgdW5kZXJseWluZyBNNCBpbXBsZW1lbnRhdGlvbiksIG00X2Fw
cGVuZF91bmlxIGlzIGluaGVyZW50bHkgTyhuXjIpCi0tIyBiZWNhdXNlIGVhY2ggYXBwZW5kIG9w
ZXJhdGlvbiBzZWFyY2hlcyB0aGUgZW50aXJlIHN0cmluZy4KLS1tNF9kZWZpbmUoW200X2FwcGVu
ZF91bmlxXSwKLS1bbTRfaWZ2YWwoWyQzXSwgW200X2lmKG00X2luZGV4KFskMl0sIFskM10pLCBb
LTFdLCBbXSwKLS0JCSAgICAgICBbbTRfd2Fybihbc3ludGF4XSwKLS0JCQkJWyQwOiBgJDInIGNv
bnRhaW5zIGAkMyddKV0pXSlfJDAoJEApXSkKLS1tNF9kZWZpbmUoW19tNF9hcHBlbmRfdW5pcV0s
Ci0tW200X2lmZGVmKFskMV0sCi0tCSAgW200X2lmKG00X2luZGV4KFskM11fbTRfZGVmbihbJDFd
KVskM10sIFskMyQyJDNdKSwgWy0xXSwKLS0JCSBbbTRfYXBwZW5kKFskMV0sIFskMl0sIFskM10p
JDRdLCBbJDVdKV0sCi0tCSAgW200X2RlZmluZShbJDFdLCBbJDJdKSQ0XSldKQotLQotLSMgbTRf
YXBwZW5kX3VuaXFfdyhNQUNSTy1OQU1FLCBTVFJJTkdTKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRm9yIGVhY2ggb2YgdGhlIHdvcmRzIGluIHRoZSB3aGl0
ZXNwYWNlIHNlcGFyYXRlZCBsaXN0IFNUUklOR1MsIGFwcGVuZAotLSMgb25seSB0aGUgdW5pcXVl
IHN0cmluZ3MgdG8gdGhlIGRlZmluaXRpb24gb2YgTUFDUk8tTkFNRS4KLS0jCi0tIyBVc2UgX200
X2RlZm4gZm9yIHNwZWVkLgotLW00X2RlZmluZShbbTRfYXBwZW5kX3VuaXFfd10sCi0tW200X21h
cF9hcmdzX3coWyQyXSwgW19tNF9hcHBlbmRfdW5pcShbJDFdLF0sIFssIFsgXSldKV0pCi0tCi0t
Ci0tIyBtNF9lc2NhcGUoU1RSSU5HKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIE91dHB1dCBx
dW90ZWQgU1RSSU5HLCBidXQgd2l0aCBlbWJlZGRlZCAjLCAkLCBbIGFuZCBdIHR1cm5lZCBpbnRv
Ci0tIyBxdWFkcmlncmFwaHMuCi0tIwotLSMgSXQgaXMgZmFzdGVyIHRvIGNoZWNrIGlmIFNUUklO
RyBpcyBhbHJlYWR5IGdvb2QgdXNpbmcgbTRfdHJhbnNsaXQKLS0jIHRoYW4gdG8gYmxpbmRseSBw
ZXJmb3JtIGZvdXIgbTRfYnBhdHN1YnN0LgotLSMKLS0jIEJlY2F1c2UgdGhlIHRyYW5zbGl0IGlz
IHN0cmlwcGluZyBxdW90ZXMsIGl0IG11c3QgYWxzbyBuZXV0cmFsaXplCi0tIyBhbnl0aGluZyB0
aGF0IG1pZ2h0IGJlIGluIGEgbWFjcm8gbmFtZSwgYXMgd2VsbCBhcyBjb21tZW50cywgY29tbWFz
LAotLSMgYW5kIHBhcmVudGhlc2VzLiAgQWxsIHRoZSBwcm9ibGVtIGNoYXJhY3RlcnMgYXJlIHVu
aWZpZWQgc28gdGhhdCBhCi0tIyBzaW5nbGUgbTRfaW5kZXggY2FuIHNjYW4gdGhlIHJlc3VsdC4K
LS0jCi0tIyBSYXRoZXIgdGhhbiBleHBhbmQgbTRfZGVmbiBldmVyeSB0aW1lIG00X2VzY2FwZSBp
cyBleHBhbmRlZCwgd2UKLS0jIGlubGluZSBpdHMgZXhwYW5zaW9uIHVwIGZyb250LgotLW00X2Rl
ZmluZShbbTRfZXNjYXBlXSwKLS1bbTRfaWYobTRfaW5kZXgobTRfdHJhbnNsaXQoWyQxXSwKLS0g
ICBbW10jLCgpXV1tNF9kcXVvdGUobTRfZGVmbihbbTRfY3Jfc3ltYm9sczJdKSlbLCBbJCQkXSks
IFskXSksCi0tICBbLTFdLCBbbTRfZWNob10sIFtfJDBdKShbJDFdKV0pCi0tCi0tbTRfZGVmaW5l
KFtfbTRfZXNjYXBlXSwKLS1bbTRfY2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKV1kbmwKLS1b
bTRfYnBhdHN1YnN0KG00X2JwYXRzdWJzdChtNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KAotLQkg
IC09PHsoLT08eygtPTx7KC09PHsoLT08eygkMSl9Pj0tKX0+PS0pfT49LSl9Pj0tKX0+PS0sCi0t
CS09PHsoIyl9Pj0tLCAtPTx7KEAlOkApfT49LSksCi0tICAgICAgLT08eyhcWyl9Pj0tLCAtPTx7
KEA8OkApfT49LSksCi0tICAgIC09PHsoXF0pfT49LSwgLT08eyhAOj5AKX0+PS0pLAotLSAgLT08
eyhcJCl9Pj0tLCAtPTx7KEBTfEApfT49LSltNF9jaGFuZ2VxdW90ZShbLF0pXSkKLS0KLS0KLS0j
IG00X3RleHRfd3JhcChTVFJJTkcsIFtQUkVGSVhdLCBbRklSU1QtUFJFRklYXSwgW1dJRFRIXSkK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIEV4cGFuZHMgaW50byBTVFJJTkcgd3JhcHBlZCB0byBob2xkIGluIFdJRFRIIGNvbHVt
bnMgKGRlZmF1bHQgPSA3OSkuCi0tIyBJZiBQUkVGSVggaXMgZ2l2ZW4sIGVhY2ggbGluZSBpcyBw
cmVmaXhlZCB3aXRoIGl0LiAgSWYgRklSU1QtUFJFRklYIGlzCi0tIyBzcGVjaWZpZWQsIHRoZW4g
dGhlIGZpcnN0IGxpbmUgaXMgcHJlZml4ZWQgd2l0aCBpdC4gIEFzIGEgc3BlY2lhbCBjYXNlLAot
LSMgaWYgdGhlIGxlbmd0aCBvZiBGSVJTVC1QUkVGSVggaXMgZ3JlYXRlciB0aGFuIHRoYXQgb2Yg
UFJFRklYLCB0aGVuCi0tIyBGSVJTVC1QUkVGSVggd2lsbCBiZSBsZWZ0IGFsb25lIG9uIHRoZSBm
aXJzdCBsaW5lLgotLSMKLS0jIE5vIGV4cGFuc2lvbiBvY2N1cnMgb24gdGhlIGNvbnRlbnRzIFNU
UklORywgUFJFRklYLCBvciBGSVJTVC1QUkVGSVgsCi0tIyBhbHRob3VnaCBxdWFkcmlncmFwaHMg
YXJlIGNvcnJlY3RseSByZWNvZ25pemVkLiAgTW9yZSBwcmVjaXNlbHksCi0tIyB5b3UgbWF5IHJl
ZGVmaW5lIG00X3FsZW4gdG8gcmVjb2duaXplIHdoYXRldmVyIGVzY2FwZSBzZXF1ZW5jZXMgdGhh
dAotLSMgeW91IHdpbGwgcG9zdC1wcm9jZXNzLgotLSMKLS0jIFR5cGljYWwgb3V0cHV0cyBhcmU6
Ci0tIwotLSMgbTRfdGV4dF93cmFwKFtTaG9ydCBzdHJpbmcgKi9dLCBbICAgXSwgWy8qIF0sIDIw
KQotLSMgID0+IC8qIFNob3J0IHN0cmluZyAqLwotLSMKLS0jIG00X3RleHRfd3JhcChbTXVjaCBs
b25nZXIgc3RyaW5nICovXSwgWyAgIF0sIFsvKiBdLCAyMCkKLS0jICA9PiAvKiBNdWNoIGxvbmdl
cgotLSMgID0+ICAgIHN0cmluZyAqLwotLSMKLS0jIG00X3RleHRfd3JhcChbU2hvcnQgZG9jLl0s
IFsgICAgICAgICAgXSwgWyAgLS1zaG9ydCBdLCAzMCkKLS0jICA9PiAgIC0tc2hvcnQgU2hvcnQg
ZG9jLgotLSMKLS0jIG00X3RleHRfd3JhcChbU2hvcnQgZG9jLl0sIFsgICAgICAgICAgXSwgWyAg
LS10b28td2lkZSBdLCAzMCkKLS0jICA9PiAgIC0tdG9vLXdpZGUKLS0jICA9PiAgICAgICAgICAg
U2hvcnQgZG9jLgotLSMKLS0jIG00X3RleHRfd3JhcChbU3VwZXIgbG9uZyBkb2N1bWVudGF0aW9u
Ll0sIFsgICAgICAgICAgXSwgWyAgLS10b28td2lkZSBdLCAzMCkKLS0jICA9PiAgIC0tdG9vLXdp
ZGUKLS0jICA9PiAgICAgIFN1cGVyIGxvbmcKLS0jICA9PiAgICAgIGRvY3VtZW50YXRpb24uCi0t
IwotLSMgRklYTUU6IHRoZXJlIGlzIG5vIGNoZWNraW5nIG9mIGEgbG9uZ2VyIFBSRUZJWCB0aGFu
IFdJRFRILCBidXQgZG8KLS0jIHdlIHJlYWxseSB3YW50IHRvIGJvdGhlciB3aXRoIHBlb3BsZSB0
cnlpbmcgZWFjaCBzaW5nbGUgY29ybmVyCi0tIyBvZiBhIHNvZnR3YXJlPwotLSMKLS0jIFRoaXMg
bWFjcm8gZG9lcyBub3QgbGVhdmUgYSB0cmFpbGluZyBzcGFjZSBiZWhpbmQgdGhlIGxhc3Qgd29y
ZCBvZiBhIGxpbmUsCi0tIyB3aGljaCBjb21wbGljYXRlcyBpdCBhIGJpdC4gIFRoZSBhbGdvcml0
aG0gaXMgb3RoZXJ3aXNlIHN0dXBpZCBhbmQgc2ltcGxlOgotLSMgYWxsIHRoZSB3b3JkcyBhcmUg
cHJlY2VkZWQgYnkgbTRfU2VwYXJhdG9yIHdoaWNoIGlzIGRlZmluZWQgdG8gZW1wdHkgZm9yCi0t
IyB0aGUgZmlyc3Qgd29yZCwgYW5kIHRoZW4gYCAnIChzaW5nbGUgc3BhY2UpIGZvciBhbGwgdGhl
IG90aGVycy4KLS0jCi0tIyBUaGUgYWxnb3JpdGhtIHVzZXMgYSBoZWxwZXIgdGhhdCB1c2VzICQy
IHRocm91Z2ggJDQgZGlyZWN0bHksIHJhdGhlciB0aGFuCi0tIyB1c2luZyBsb2NhbCB2YXJpYWJs
ZXMsIHRvIGF2b2lkIG00X2RlZm4gb3ZlcmhlYWQsIG9yIGV4cGFuc2lvbiBzd2FsbG93aW5nCi0t
IyBhbnkgJC4gIEl0IGFsc28gYnlwYXNzZXMgbTRfcG9wZGVmIG92ZXJoZWFkIHdpdGggX200X3Bv
cGRlZiBzaW5jZSBubyB1c2VyCi0tIyBtYWNybyBleHBhbnNpb24gb2NjdXJzIGluIHRoZSBtZWFu
dGltZS4gIEFsc28sIHRoZSBkZWZpbml0aW9uIGlzIHdyaXR0ZW4KLS0jIHdpdGggbTRfZG8sIHRv
IGF2b2lkIHRpbWUgd2FzdGVkIG9uIGRubCBkdXJpbmcgZXhwYW5zaW9uIChzaW5jZSB0aGlzIGlz
Ci0tIyBhbHJlYWR5IGEgdGltZS1jb25zdW1pbmcgbWFjcm8pLgotLW00X2RlZmluZShbbTRfdGV4
dF93cmFwXSwKLS1bXyQwKG00X2VzY2FwZShbJDFdKSwgWyQyXSwgbTRfZGVmYXVsdF9xdW90ZWQo
WyQzXSwgWyQyXSksCi0tICAgICBtNF9kZWZhdWx0X3F1b3RlZChbJDRdLCBbNzldKSldKQotLQot
LW00X2RlZmluZShbX200X3RleHRfd3JhcF0sCi0tbTRfZG8oZG5sIHNldCB1cCBsb2NhbCB2YXJp
YWJsZXMsIHRvIGF2b2lkIHJlcGVhdGVkIGNhbGN1bGF0aW9ucwotLVtbbTRfcHVzaGRlZihbbTRf
SW5kZW50XSwgbTRfcWxlbihbJDJdKSldXSwKLS1bW200X3B1c2hkZWYoW200X0N1cnNvcl0sIG00
X3FsZW4oWyQzXSkpXV0sCi0tW1ttNF9wdXNoZGVmKFttNF9TZXBhcmF0b3JdLCBbbTRfZGVmaW5l
KFttNF9TZXBhcmF0b3JdLCBbIF0pXSldXSwKLS1kbmwgZXhwYW5kIHRoZSBmaXJzdCBwcmVmaXgs
IHRoZW4gY2hlY2sgaXRzIGxlbmd0aCB2cy4gcmVndWxhciBwcmVmaXgKLS1kbmwgc2FtZSBsZW5n
dGg6IG5vdGhpbmcgc3BlY2lhbAotLWRubCBwcmVmaXgxIGxvbmdlcjogb3V0cHV0IG9uIGxpbmUg
YnkgaXRzZWxmLCBhbmQgcmVzZXQgY3Vyc29yCi0tZG5sIHByZWZpeDEgc2hvcnRlcjogcGFkIHRv
IGxlbmd0aCBvZiBwcmVmaXgsIGFuZCByZXNldCBjdXJzb3IKLS1bW1skM11tNF9jb25kKFttNF9D
dXJzb3JdLCBtNF9JbmRlbnQsIFtdLAotLQkgICAgICBbbTRfZXZhbChtNF9DdXJzb3IgPiBtNF9J
bmRlbnQpXSwgWzFdLCBbCi0tWyQyXW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0s
Ci0tCSAgICAgIFttNF9mb3JtYXQoWyUqc10sIG00X21heChbMF0sCi0tICBtNF9ldmFsKG00X0lu
ZGVudCAtIG00X0N1cnNvcikpLCBbXSltNF9kZWZpbmUoW200X0N1cnNvcl0sIG00X0luZGVudCld
KV1dLAotLWRubCBub3csIGZvciBlYWNoIHdvcmQsIGNvbXB1dGUgdGhlIGN1cnNvciBhZnRlciB0
aGUgd29yZCBpcyBvdXRwdXQsIHRoZW4KLS1kbmwgY2hlY2sgaWYgdGhlIGN1cnNvciB3b3VsZCBl
eGNlZWQgdGhlIHdyYXAgY29sdW1uCi0tZG5sIGlmIHNvLCByZXNldCBjdXJzb3IsIGFuZCBpbnNl
cnQgbmV3bGluZSBhbmQgcHJlZml4Ci0tZG5sIGlmIG5vdCwgaW5zZXJ0IHRoZSBzZXBhcmF0b3Ig
KHVzdWFsbHkgYSBzcGFjZSkKLS1kbmwgZWl0aGVyIHdheSwgaW5zZXJ0IHRoZSB3b3JkCi0tW1tt
NF9tYXBfYXJnc193KFskMV0sIFskMF93b3JkKF0sIFssIFskMl0sIFskNF0pXSldXSwKLS1kbmwg
ZmluYWxseSwgY2xlYW4gdXAgdGhlIGxvY2FsIHZhcmlhYmxlcwotLVtbX200X3BvcGRlZihbbTRf
U2VwYXJhdG9yXSwgW200X0N1cnNvcl0sIFttNF9JbmRlbnRdKV1dKSkKLS0KLS1tNF9kZWZpbmUo
W19tNF90ZXh0X3dyYXBfd29yZF0sCi0tW200X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfZXZhbCht
NF9DdXJzb3IgKyBtNF9xbGVuKFskMV0pICsgMSkpXWRubAotLVttNF9pZihtNF9ldmFsKG00X0N1
cnNvciA+IChbJDNdKSksCi0tICAgICAgWzFdLCBbbTRfZGVmaW5lKFttNF9DdXJzb3JdLCBtNF9l
dmFsKG00X0luZGVudCArIG00X3FsZW4oWyQxXSkgKyAxKSkKLS1bJDJdXSwKLS0gICAgICBbbTRf
U2VwYXJhdG9yW11dKVskMV1dKQotLQotLSMgbTRfdGV4dF9ib3goTUVTU0FHRSwgW0ZSQU1FLUNI
QVJBQ1RFUiA9IGAtJ10pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIFR1cm4gTUVTU0FHRSBpbnRvOgotLSMgICMjIC0tLS0tLS0gIyMKLS0jICAj
IyBNRVNTQUdFICMjCi0tIyAgIyMgLS0tLS0tLSAjIwotLSMgdXNpbmcgRlJBTUUtQ0hBUkFDVEVS
IGluIHRoZSBib3JkZXIuCi0tIwotLSMgUXVhZHJpZ3JhcGhzIGFyZSBjb3JyZWN0bHkgcmVjb2du
aXplZC4gIE1vcmUgcHJlY2lzZWx5LCB5b3UgbWF5Ci0tIyByZWRlZmluZSBtNF9xbGVuIHRvIHJl
Y29nbml6ZSB3aGF0ZXZlciBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgeW91Ci0tIyB3aWxsIHBvc3Qt
cHJvY2Vzcy4KLS1tNF9kZWZpbmUoW200X3RleHRfYm94XSwKLS1bbTRfcHVzaGRlZihbbTRfQm9y
ZGVyXSwKLS0JICAgIG00X3RyYW5zbGl0KG00X2Zvcm1hdChbW1slKnNdXV0sIG00X2RlY3IobTRf
cWxlbihfbTRfZXhwYW5kKFskMQotLV0pKSksIFtdKSwgWyBdLCBtNF9kZWZhdWx0X3F1b3RlZChb
JDJdLCBbLV0pKSldZG5sCi0tW1sjI10gX200X2RlZm4oW200X0JvcmRlcl0pIFsjI10KLS1bIyNd
ICQxIFsjI10KLS1bIyNdIF9tNF9kZWZuKFttNF9Cb3JkZXJdKSBbIyNdX200X3BvcGRlZihbbTRf
Qm9yZGVyXSldKQotLQotLQotLSMgbTRfcWxlbihTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0tLS0K
LS0jIEV4cGFuZHMgdG8gdGhlIGxlbmd0aCBvZiBTVFJJTkcgYWZ0ZXIgYXV0b200dGUgY29udmVy
dHMgYWxsIHF1YWRyaWdyYXBocy4KLS0jCi0tIyBJZiB5b3UgdXNlIHNvbWUgb3RoZXIgbWVhbnMg
b2YgcG9zdC1wcm9jZXNzaW5nIG00IG91dHB1dCByYXRoZXIgdGhhbgotLSMgYXV0b200dGUsIHRo
ZW4geW91IG1heSByZWRlZmluZSB0aGlzIG1hY3JvIHRvIHJlY29nbml6ZSB3aGF0ZXZlcgotLSMg
ZXNjYXBlIHNlcXVlbmNlcyB5b3VyIHBvc3QtcHJvY2Vzc29yIHdpbGwgaGFuZGxlLiAgRm9yIHRo
YXQgbWF0dGVyLAotLSMgbTRfZGVmaW5lKFttNF9xbGVuXSwgbTRfZGVmbihbbTRfbGVuXSkpIGlz
IHN1ZmZpY2llbnQgaWYgeW91IGRvbid0Ci0tIyBkbyBhbnkgcG9zdC1wcm9jZXNzaW5nLgotLSMK
LS0jIEF2b2lkIGJwYXRzdWJzdHMgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBubyBxdWFkcmlncmFw
aHMuICBDYWNoZQotLSMgcmVzdWx0cywgYXMgY29uZmlndXJlIHNjcmlwdHMgdGVuZCB0byBhc2sg
YWJvdXQgbGVuZ3RocyBvZiBjb21tb24KLS0jIHN0cmluZ3MgbGlrZSBgLyonIGFuZCBgKi8nIHJh
dGhlciBmcmVxdWVudGx5LiAgTWluaW1pemUgdGhlIG51bWJlcgotLSMgb2YgdGltZXMgdGhhdCAk
MSBvY2N1cnMgaW4gbTRfcWxlbiwgc28gdGhlcmUgaXMgbGVzcyB0ZXh0IHRvIHBhcnNlCi0tIyBv
biBhIGNhY2hlIGhpdC4KLS1tNF9kZWZpbmUoW200X3FsZW5dLAotLVttNF9pZmRlZihbJDAtJDFd
LCBbX200X2RlZm4oWyQwLV1dLCBbXyQwKF0pWyQxXSldKQotLW00X2RlZmluZShbX200X3FsZW5d
LAotLVttNF9kZWZpbmUoW200X3FsZW4tJDFdLAotLW00X2lmKG00X2luZGV4KFskMV0sIFtAXSks
IFstMV0sIFttNF9sZW4oWyQxXSldLAotLSAgICAgIFttNF9sZW4obTRfYnBhdHN1YnN0KFtbJDFd
XSwKLS0JCQkgICBbQFwoXCg8Olx8Oj5cfFN8XHwlOlx8XHs6XHw6XH1cKVwoQFwpXHwmdEBcKV0s
Ci0tCQkJICAgW1wzXSkpXSkpX200X2RlZm4oW200X3FsZW4tJDFdKV0pCi0tCi0tIyBtNF9jb3B5
cmlnaHRfY29uZGVuc2UoVEVYVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
Q29uZGVuc2UgdGhlIGNvcHlyaWdodCBub3RpY2UgaW4gVEVYVCB0byBvbmx5IGRpc3BsYXkgdGhl
IGZpbmFsCi0tIyB5ZWFyLCB3cmFwcGluZyB0aGUgcmVzdWx0cyB0byBmaXQgaW4gODAgY29sdW1u
cy4KLS1tNF9kZWZpbmUoW200X2NvcHlyaWdodF9jb25kZW5zZV0sCi0tW200X3RleHRfd3JhcCht
NF9icGF0c3Vic3QobTRfZmxhdHRlbihbWyQxXV0pLAotLVsoQylbLQkgLDAtOV0qXChbMS05XVsw
LTldWzAtOV1bMC05XVwpXSwgWyhDKSBcMV0pKV0pCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKLS0jIyAxMy4gTnVtYmVyIHByb2Nlc3NpbmcuICAjIwotLSMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICMjCi0tCi0tIyBtNF9jbXAoQSwgQikKLS0jIC0tLS0tLS0tLS0tLQotLSMg
Q29tcGFyZSB0d28gaW50ZWdlciBleHByZXNzaW9ucy4KLS0jIEEgPCBCIC0+IC0xCi0tIyBBID0g
QiAtPiAgMAotLSMgQSA+IEIgLT4gIDEKLS1tNF9kZWZpbmUoW200X2NtcF0sCi0tW200X2V2YWwo
KChbJDFdKSA+IChbJDJdKSkgLSAoKFskMV0pIDwgKFskMl0pKSldKQotLQotLQotLSMgbTRfbGlz
dF9jbXAoQSwgQikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIwotLSMgQ29tcGFyZSB0aGUgdHdv
IGxpc3RzIG9mIGludGVnZXIgZXhwcmVzc2lvbnMgQSBhbmQgQi4gIEZvciBpbnN0YW5jZToKLS0j
ICAgbTRfbGlzdF9jbXAoWzEsIDBdLCAgICAgWzFdKSAgICAtPiAgMAotLSMgICBtNF9saXN0X2Nt
cChbMSwgMF0sICAgICBbMSwgMF0pIC0+ICAwCi0tIyAgIG00X2xpc3RfY21wKFsxLCAyXSwgICAg
IFsxLCAwXSkgLT4gIDEKLS0jICAgbTRfbGlzdF9jbXAoWzEsIDIsIDNdLCAgWzEsIDJdKSAtPiAg
MQotLSMgICBtNF9saXN0X2NtcChbMSwgMiwgLTNdLCBbMSwgMl0pIC0+IC0xCi0tIyAgIG00X2xp
c3RfY21wKFsxLCAwXSwgICAgIFsxLCAyXSkgLT4gLTEKLS0jICAgbTRfbGlzdF9jbXAoWzFdLCAg
ICAgICAgWzEsIDJdKSAtPiAtMQotLSMgICBtNF9kZWZpbmUoW3hhXSwgW29vcHNdKWRubAotLSMg
ICBtNF9saXN0X2NtcChbWzB4YV1dLCAgICBbNSs1XSkgIC0+IDAKLS0jCi0tIyBSYXRoZXIgdGhh
biBmYWNlIHRoZSBvdmVyaGVhZCBvZiBtNF9jYXNlLCB3ZSB1c2UgYSBoZWxwZXIgZnVuY3Rpb24g
d2hvc2UKLS0jIGV4cGFuc2lvbiBpbmNsdWRlcyB0aGUgbmFtZSBvZiB0aGUgbWFjcm8gdG8gaW52
b2tlIG9uIHRoZSB0YWlsLCBlaXRoZXIKLS0jIG00X2lnbm9yZSBvciBtNF91bnF1b3RlLiAgVGhp
cyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY29tcGFyaW5nCi0tIyBsb25nIGxpc3RzLCBz
aW5jZSBsZXNzIHRleHQgaXMgYmVpbmcgZXhwYW5kZWQgZm9yIGRlY2lkaW5nIHdoZW4gdG8gZW5k
Ci0tIyByZWN1cnNpb24uICBUaGUgcmVjdXJzaW9uIGlzIGJldHdlZW4gYSBwYWlyIG9mIG1hY3Jv
cyB0aGF0IGFsdGVybmF0ZQotLSMgd2hpY2ggbGlzdCBpcyB0cmltbWVkIGJ5IG9uZSBlbGVtZW50
OyB0aGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4KLS0jIGNhbGxpbmcgbTRfY2RyIG9uIGJvdGgg
bGlzdHMgZnJvbSBhIHNpbmdsZSBtYWNyby4gIEd1YXJhbnRlZSBleGFjdGx5Ci0tIyBvbmUgZXhw
YW5zaW9uIG9mIGJvdGggbGlzdHMnIHNpZGUgZWZmZWN0cy4KLS0jCi0tIyBQbGVhc2Uga2VlcCBm
b3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgotLW00X2Rl
ZmluZShbbTRfbGlzdF9jbXBdLAotLVtfJDBfcmF3KG00X2RxdW90ZSgkMSksIG00X2RxdW90ZSgk
MikpXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9saXN0X2NtcF9yYXddLAotLVttNF9pZihbJDFdLCBb
JDJdLCBbMF0sIFtfbTRfbGlzdF9jbXBfMShbJDFdLCAkMildKV0pCi0tCi0tbTRfZGVmaW5lKFtf
bTRfbGlzdF9jbXBdLAotLVttNF9pZihbJDFdLCBbXSwgWzBtNF9pZ25vcmVdLCBbJDJdLCBbMF0s
IFttNF91bnF1b3RlXSwgWyQybTRfaWdub3JlXSldKQotLQotLW00X2RlZmluZShbX200X2xpc3Rf
Y21wXzFdLAotLVtfbTRfbGlzdF9jbXBfMihbJDJdLCBbbTRfc2hpZnQyKCRAKV0sICQxKV0pCi0t
Ci0tbTRfZGVmaW5lKFtfbTRfbGlzdF9jbXBfMl0sCi0tW19tNF9saXN0X2NtcChbJDEkM10sIG00
X2NtcChbJDMrMF0sIFskMSswXSkpKAotLSAgW19tNF9saXN0X2NtcF8xKG00X2RxdW90ZShtNF9z
aGlmdDMoJEApKSwgJDIpXSldKQotLQotLSMgbTRfbWF4KEVYUFIsIC4uLikKLS0jIG00X21pbihF
WFBSLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgUmV0dXJuIHRoZSBkZWNpbWFsIHZh
bHVlIG9mIHRoZSBtYXhpbXVtIChvciBtaW5pbXVtKSBpbiBhIHNlcmllcyBvZgotLSMgaW50ZWdl
ciBleHByZXNzaW9ucy4KLS0jCi0tIyBNNCAxLjQueCBkb2Vzbid0IHByb3ZpZGUgPzouICBIZW5j
ZSB0aGlzIGh1Z2UgbTRfZXZhbC4gIEF2b2lkIG00X2V2YWwKLS0jIGlmIGJvdGggYXJndW1lbnRz
IGFyZSBpZGVudGljYWwsIGJ1dCBiZSBhd2FyZSBvZiBtNF9tYXgoMHhhLCAxMCkgKGhlbmNlCi0t
IyB0aGUgdXNlIG9mIDw9LCBub3QganVzdCA8LCBpbiB0aGUgc2Vjb25kIG11bHRpcGx5KS4KLS0j
Ci0tIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMg
bWFkZSBoZXJlLgotLW00X2RlZmluZShbbTRfbWF4XSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbbTRf
ZmF0YWwoW3RvbyBmZXcgYXJndW1lbnRzIHRvICQwXSldLAotLSAgICAgICBbJCNdLCBbMV0sIFtt
NF9ldmFsKFskMV0pXSwKLS0gICAgICAgWyQjJDFdLCBbMiQyXSwgW200X2V2YWwoWyQxXSldLAot
LSAgICAgICBbJCNdLCBbMl0sIFtfJDAoJEApXSwKLS0gICAgICAgW19tNF9taW5tYXgoW18kMF0s
ICRAKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9tYXhdLAotLVttNF9ldmFsKCgoWyQxXSkgPiAo
WyQyXSkpICogKFskMV0pICsgKChbJDFdKSA8PSAoWyQyXSkpICogKFskMl0pKV0pCi0tCi0tbTRf
ZGVmaW5lKFttNF9taW5dLAotLVttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbdG9vIGZldyBh
cmd1bWVudHMgdG8gJDBdKV0sCi0tICAgICAgIFskI10sIFsxXSwgW200X2V2YWwoWyQxXSldLAot
LSAgICAgICBbJCMkMV0sIFsyJDJdLCBbbTRfZXZhbChbJDFdKV0sCi0tICAgICAgIFskI10sIFsy
XSwgW18kMCgkQCldLAotLSAgICAgICBbX200X21pbm1heChbXyQwXSwgJEApXSldKQotLQotLW00
X2RlZmluZShbX200X21pbl0sCi0tW200X2V2YWwoKChbJDFdKSA8IChbJDJdKSkgKiAoWyQxXSkg
KyAoKFskMV0pID49IChbJDJdKSkgKiAoWyQyXSkpXSkKLS0KLS0jIF9tNF9taW5tYXgoTUVUSE9E
LCBBUkcxLCBBUkcyLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBDb21tb24gcmVjdXJzaW9uIGNvZGUgZm9yIG00X21heCBhbmQgbTRfbWluLiAgTUVUSE9EIG11
c3QgYmUgX200X21heAotLSMgb3IgX200X21pbiwgYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qg
dHdvIGFyZ3VtZW50cyB0byBjb21iaW5lLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQg
aW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFtfbTRf
bWlubWF4XSwKLS1bbTRfaWYoWyQjXSwgWzNdLCBbJDEoWyQyXSwgWyQzXSldLAotLSAgICAgICBb
JDAoWyQxXSwgJDEoWyQyXSwgWyQzXSksIG00X3NoaWZ0MygkQCkpXSldKQotLQotLQotLSMgbTRf
c2lnbihBKQotLSMgLS0tLS0tLS0tLQotLSMgVGhlIHNpZ24gb2YgdGhlIGludGVnZXIgZXhwcmVz
c2lvbiBBLgotLW00X2RlZmluZShbbTRfc2lnbl0sCi0tW200X2V2YWwoKChbJDFdKSA+IDApIC0g
KChbJDFdKSA8IDApKV0pCi0tCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj
Ci0tIyMgMTQuIFZlcnNpb24gcHJvY2Vzc2luZy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCi0tCi0tCi0tIyBtNF92ZXJzaW9uX3VubGV0dGVyKFZFUlNJT04pCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBOb3JtYWxpemUgYmV0YSB2ZXJzaW9uIG51bWJl
cnMgd2l0aCBsZXR0ZXJzIHRvIG51bWVyaWMgZXhwcmVzc2lvbnMsIHdoaWNoCi0tIyBjYW4gdGhl
biBiZSBoYW5kZWQgdG8gbTRfZXZhbCBmb3IgdGhlIHB1cnBvc2Ugb2YgY29tcGFyaXNvbi4KLS0j
Ci0tIyAgIE5sIC0+IChOKzEpLi0xLihsIykKLS0jCi0tIyBmb3IgZXhhbXBsZToKLS0jICAgWzIu
MTRhXSAtPiBbMCwyLDE0KzEsLTEsWzByMzY6YV1dIC0+IDIuMTUuLTEuMTAKLS0jICAgWzIuMTRi
XSAtPiBbMCwyLDE1KzEsLTEsWzByMzY6Yl1dIC0+IDIuMTUuLTEuMTEKLS0jICAgWzIuNjFhYS5i
XSAtPiBbMCwyLjYxLDEsLTEsWzByMzY6YWFdLCsxLC0xLFswcjM2OmJdXSAtPiAyLjYyLi0xLjM3
MC4xLi0xLjExCi0tIyAgIFswOF0gLT4gWzAsWzByMTA6MF04XSAtPiA4Ci0tIwotLSMgVGhpcyBt
YWNybyBleHBlY3RzIHJlYXNvbmFibGUgdmVyc2lvbiBudW1iZXJzLCBidXQgY2FuIGhhbmRsZSBk
b3VibGUKLS0jIGxldHRlcnMgYW5kIGRvZXMgbm90IGV4cGFuZCBhbnkgbWFjcm9zLiAgT3JpZ2lu
YWwgdmVyc2lvbiBzdHJpbmdzIGNhbgotLSMgdXNlIGJvdGggYC4nIGFuZCBgLScgc2VwYXJhdG9y
cy4KLS0jCi0tIyBJbmxpbmUgY29uc3RhbnQgZXhwYW5zaW9ucywgdG8gYXZvaWQgbTRfZGVmbiBv
dmVyaGVhZC4KLS0jIF9tNF92ZXJzaW9uX3VubGV0dGVyIGlzIHRoZSByZWFsIHdvcmtob3JzZSB1
c2VkIGJ5IG00X3ZlcnNpb25fY29tcGFyZSwKLS0jIGJ1dCBzaW5jZSBbMHIzNjphXSBhbmQgY29t
bWFzIGFyZSBsZXNzIHJlYWRhYmxlIHRoYW4gMTAgYW5kIGRvdHMsIHdlCi0tIyBwcm92aWRlIGEg
d3JhcHBlciBmb3IgaHVtYW4gdXNlLgotLW00X2RlZmluZShbbTRfdmVyc2lvbl91bmxldHRlcl0s
Ci0tW200X3N1YnN0cihtNF9tYXBfYXJncyhbLm00X2V2YWxdLCBtNF91bnF1b3RlKF8kMChbJDFd
KSkpLCBbM10pXSkKLS1tNF9kZWZpbmUoW19tNF92ZXJzaW9uX3VubGV0dGVyXSwKLS1bbTRfYnBh
dHN1YnN0KG00X2JwYXRzdWJzdChtNF90cmFuc2xpdChbW1tbMCwkMV1dXV0sIFsuLV0sIFssLF0p
LF1kbmwKLS1tNF9kcXVvdGUobTRfZHF1b3RlKG00X2RlZm4oW200X2NyX0xldHRlcnNdKSkpW1sr
XSwKLS0JICAgICAgWysxLC0xLFswcjM2OlwmXV0pLCBbLDBdLCBbLFswcjEwOjBdXSldKQotLQot
LQotLSMgbTRfdmVyc2lvbl9jb21wYXJlKFZFUlNJT04tMSwgVkVSU0lPTi0yKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQ29tcGFyZSB0aGUgdHdvIHZl
cnNpb24gbnVtYmVycyBhbmQgZXhwYW5kIGludG8KLS0jICAtMSBpZiBWRVJTSU9OLTEgPCBWRVJT
SU9OLTIKLS0jICAgMCBpZiAgICAgICAgICAgPQotLSMgICAxIGlmICAgICAgICAgICA+Ci0tIwot
LSMgU2luY2UgX200X3ZlcnNpb25fdW5sZXR0ZXIgZG9lcyBub3Qgb3V0cHV0IHNpZGUgZWZmZWN0
cywgd2UgY2FuCi0tIyBzYWZlbHkgYnlwYXNzIHRoZSBvdmVyaGVhZCBvZiBtNF92ZXJzaW9uX2Nt
cC4KLS1tNF9kZWZpbmUoW200X3ZlcnNpb25fY29tcGFyZV0sCi0tW19tNF9saXN0X2NtcF9yYXco
X200X3ZlcnNpb25fdW5sZXR0ZXIoWyQxXSksIF9tNF92ZXJzaW9uX3VubGV0dGVyKFskMl0pKV0p
Ci0tCi0tCi0tIyBtNF9QQUNLQUdFX05BTUUKLS0jIG00X1BBQ0tBR0VfVEFSTkFNRQotLSMgbTRf
UEFDS0FHRV9WRVJTSU9OCi0tIyBtNF9QQUNLQUdFX1NUUklORwotLSMgbTRfUEFDS0FHRV9CVUdS
RVBPUlQKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiBtNHN1Z2FyL3ZlcnNpb24ubTQg
aXMgcHJlc2VudCwgdGhlbiBkZWZpbmUgdmVyc2lvbiBzdHJpbmdzLiAgVGhpcwotLSMgZmlsZSBp
cyBvcHRpb25hbCwgcHJvdmlkZWQgYnkgQXV0b2NvbmYgYnV0IGFic2VudCBpbiBCaXNvbi4KLS1t
NF9zaW5jbHVkZShbbTRzdWdhci92ZXJzaW9uLm00XSkKLS0KLS0KLS0jIG00X3ZlcnNpb25fcHJl
cmVxKFZFUlNJT04sIFtJRi1PS10sIFtJRi1OT1QgPSBGQUlMXSkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIENoZWNrIHRoaXMgQXV0
b2NvbmYgdmVyc2lvbiBhZ2FpbnN0IFZFUlNJT04uCi0tbTRfZGVmaW5lKFttNF92ZXJzaW9uX3By
ZXJlcV0sCi0tbTRfaWZkZWYoW200X1BBQ0tBR0VfVkVSU0lPTl0sCi0tW1ttNF9pZihtNF92ZXJz
aW9uX2NvbXBhcmUoXW00X2RxdW90ZShtNF9kZWZuKFttNF9QQUNLQUdFX1ZFUlNJT05dKSlbLCBb
JDFdKSwKLS0JWy0xXSwKLS0JW200X2RlZmF1bHQoWyQzXSwKLS0JCSAgICBbbTRfZmF0YWwoW0F1
dG9jb25mIHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkXSwKLS0JCQkgICAgICBbNjNd
KV0pXSwKLS0JWyQyXSldXSwKLS1bW200X2ZhdGFsKFttNHN1Z2FyL3ZlcnNpb24ubTQgbm90IGZv
dW5kXSldXSkpCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgMTUuIFNldCBo
YW5kbGluZy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tIyBBdXRvY29uZiBs
aWtlcyB0byBjcmVhdGUgYXJiaXRyYXJpbHkgbGFyZ2Ugc2V0czsgZm9yIGV4YW1wbGUsIGFzIG9m
Ci0tIyB0aGlzIHdyaXRpbmcsIHRoZSBjb25maWd1cmUuYWMgZm9yIGNvcmV1dGlscyB0cmFja3Mg
YSBzZXQgb2YgbW9yZQotLSMgdGhhbiA0MDAgQUNfU1VCU1QuICBIb3cgZG8gd2UgdHJhY2sgYWxs
IG9mIHRoZXNlIHNldCBtZW1iZXJzLAotLSMgd2l0aG91dCBpbnRyb2R1Y2luZyBkdXBsaWNhdGVz
PyAgV2UgY291bGQgdXNlIG00X2FwcGVuZF91bmlxLCB3aXRoCi0tIyB0aGUgc2V0IE5BTUUgcmVz
aWRpbmcgaW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBtYWNybyBOQU1FLgotLSMgVW5mb3J0dW5hdGVs
eSwgbTRfYXBwZW5kX3VuaXEgaXMgcXVhZHJhdGljIGZvciBzZXQgY3JlYXRpb24sIGJlY2F1c2UK
LS0jIGl0IGNvc3RzIE8obikgdG8gc2VhcmNoIHRoZSBzdHJpbmcgZm9yIGVhY2ggb2YgTyhuKSBp
bnNlcnRpb25zOyBub3QKLS0jIHRvIG1lbnRpb24gdGhhdCB3aXRoIG00IDEuNC54LCBldmVuIHVz
aW5nIG00X2FwcGVuZCBpcyBzbG93LCBjb3N0aW5nCi0tIyBPKG4pIHJhdGhlciB0aGFuIE8oMSkg
cGVyIGluc2VydGlvbi4gIE90aGVyIHNldCBvcGVyYXRpb25zLCBub3QgdXNlZAotLSMgYnkgQXV0
b2NvbmYgYnV0IHN0aWxsIHBvc3NpYmxlIGJ5IG1hbmlwdWxhdGlvbiBvZiB0aGUgZGVmaW5pdGlv
bgotLSMgdHJhY2tlZCBpbiBtYWNybyBOQU1FLCBpbmNsdWRlIE8obikgZGVsZXRpb24gb2Ygb25l
IGVsZW1lbnQgYW5kIE8obikKLS0jIGNvbXB1dGF0aW9uIG9mIHNldCBzaXplLiAgQmVjYXVzZSB0
aGUgc2V0IGlzIGV4cG9zZWQgdG8gdGhlIHVzZXIgdmlhCi0tIyB0aGUgZGVmaW5pdGlvbiBvZiBh
IHNpbmdsZSBtYWNybywgd2UgY2Fubm90IGNhY2hlIGFueSBkYXRhIGFib3V0IHRoZQotLSMgc2V0
IHdpdGhvdXQgcmlza2luZyB0aGUgY2FjaGUgYmVpbmcgaW52YWxpZGF0ZWQgYnkgdGhlIHVzZXIK
LS0jIHJlZGVmaW5pbmcgTkFNRS4KLS0jCi0tIyBDYW4gd2UgZG8gYmV0dGVyPyAgWWVzLCBiZWNh
dXNlIG00IGdpdmVzIHVzIGFuIE8oMSkgc2VhcmNoIGZ1bmN0aW9uCi0tIyBmb3IgZnJlZTogaWZk
ZWYuICBBZGRpdGlvbmFsbHksIGV2ZW4gbTQgMS40LnggZ2l2ZXMgdXMgYW4gTygxKQotLSMgaW5z
ZXJ0IG9wZXJhdGlvbiBmb3IgZnJlZTogcHVzaGRlZi4gIEJ1dCB0byB1c2UgdGhlc2UsIHdlIG11
c3QKLS0jIHJlcHJlc2VudCB0aGUgc2V0IHZpYSBhIGdyb3VwIG9mIG1hY3JvczsgdG8ga2VlcCB0
aGUgc2V0IGNvbnNpc3RlbnQsCi0tIyB3ZSBtdXN0IGhpZGUgdGhlIHNldCBzbyB0aGF0IHRoZSB1
c2VyIGNhbiBvbmx5IG1hbmlwdWxhdGUgaXQgdGhyb3VnaAotLSMgYWNjZXNzb3IgbWFjcm9zLiAg
VGhlIGNvbnRlbnRzIG9mIHRoZSBzZXQgYXJlIG1haW50YWluZWQgdGhyb3VnaCB0d28KLS0jIGFj
Y2VzcyBwb2ludHM7IF9tNF9zZXQoW25hbWVdKSBpcyBhIHB1c2hkZWYgc3RhY2sgb2YgdmFsdWVz
IGluIHRoZQotLSMgc2V0LCB1c2VmdWwgZm9yIE8obikgdHJhdmVyc2FsIG9mIHRoZSBzZXQgY29u
dGVudHM7IHdoaWxlIHRoZQotLSMgZXhpc3RlbmNlIG9mIF9tNF9zZXQoW25hbWVdLHZhbHVlKSB3
aXRoIG5vIHBhcnRpY3VsYXIgdmFsdWUgaXMKLS0jIHVzZWZ1bCBmb3IgTygxKSBxdWVyeWluZyBv
ZiBzZXQgbWVtYmVyc2hpcC4gIEFuZCBzaW5jZSB0aGUgdXNlcgotLSMgY2Fubm90IGV4dGVybmFs
bHkgbWFuaXB1bGF0ZSB0aGUgc2V0LCB3ZSBhcmUgZnJlZSB0byBhZGQgYWRkaXRpb25hbAotLSMg
Y2FjaGluZyBtYWNyb3MgZm9yIG90aGVyIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4gIERlbGV0
aW9uIGNhbiBiZQotLSMgTygxKSBwZXIgZWxlbWVudCByYXRoZXIgdGhhbiBPKG4pLCBieSByZXdv
cmtpbmcgdGhlIGRlZmluaXRpb24gb2YKLS0jIF9tNF9zZXQoW25hbWVdLHZhbHVlKSB0byBiZSAw
IG9yIDEgYmFzZWQgb24gY3VycmVudCBtZW1iZXJzaGlwLCBhbmQKLS0jIGFkZGluZyBfbTRfc2V0
X2NsZWFudXAobmFtZSkgdG8gZGVmZXIgdGhlIE8obikgY2xlYW51cCBvZgotLSMgX200X3NldChb
bmFtZV0pIHVudGlsIHdlIGhhdmUgYW5vdGhlciByZWFzb24gdG8gZG8gYW4gTyhuKQotLSMgdHJh
dmVyc2FsLiAgVGhlIGV4aXN0ZW5jZSBvZiBfbTRfc2V0X2NsZWFudXAobmFtZSkgY2FuIHRoZW4g
YmUgdXNlZAotLSMgZWxzZXdoZXJlIHRvIGRldGVybWluZSBpZiB3ZSBtdXN0IGRlcmVmZXJlbmNl
IF9tNF9zZXQoW25hbWVdLHZhbHVlKSwKLS0jIG9yIGFzc3VtZSB0aGF0IGRlZmluaXRpb24gaW1w
bGllcyBzZXQgbWVtYmVyc2hpcC4gIEZpbmFsbHksIHNpemUgY2FuCi0tIyBiZSB0cmFja2VkIGlu
IGFuIE8oMSkgZmFzaGlvbiB3aXRoIF9tNF9zZXRfc2l6ZShuYW1lKS4KLS0jCi0tIyBUaGUgcXVv
dGluZyBpbiBfbTRfc2V0KFtuYW1lXSx2YWx1ZSkgaXMgY2hvc2VuIHNvIHRoYXQgdGhlcmUgaXMg
bm8KLS0jIGFtYmlndWl0eSB3aXRoIGEgc2V0IHdob3NlIG5hbWUgY29udGFpbnMgYSBjb21tYSwg
YW5kIHNvIHRoYXQgd2UgY2FuCi0tIyBzdXBwbHkgdGhlIHZhbHVlIHZpYSBfbTRfZGVmbihbX200
X3NldChbbmFtZV0pXSkgd2l0aG91dCBuZWVkaW5nIGFueQotLSMgcXVvdGUgbWFuaXB1bGF0aW9u
LgotLQotLSMgbTRfc2V0X2FkZChTRVQsIFZBTFVFLCBbSUYtVU5JUV0sIFtJRi1EVVBdKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQWRkIFZBTFVF
IGFzIGFuIGVsZW1lbnQgb2YgU0VULiAgRXhwYW5kIElGLVVOSVEgb24gdGhlIGZpcnN0Ci0tIyBh
ZGRpdGlvbiwgYW5kIElGLURVUCBpZiBpdCBpcyBhbHJlYWR5IGluIHRoZSBzZXQuICBBZGRpdGlv
biBvZiBvbmUKLS0jIGVsZW1lbnQgaXMgTygxKSwgc3VjaCB0aGF0IG92ZXJhbGwgc2V0IGNyZWF0
aW9uIGlzIE8obikuCi0tIwotLSMgV2UgZG8gbm90IHdhbnQgdG8gYWRkIGEgZHVwbGljYXRlIGZv
ciBhIHByZXZpb3VzbHkgZGVsZXRlZCBidXQKLS0jIHVucHJ1bmVkIGVsZW1lbnQsIGJ1dCBpdCBp
cyBqdXN0IGFzIGVhc3kgdG8gY2hlY2sgZXhpc3RlbmNlIGRpcmVjdGx5Ci0tIyBhcyBpdCBpcyB0
byBxdWVyeSBfbTRfc2V0X2NsZWFudXAoJDEpLgotLW00X2RlZmluZShbbTRfc2V0X2FkZF0sCi0t
W200X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwKLS0JICBbbTRfaWYobTRfaW5kaXIoW19tNF9z
ZXQoWyQxXSwkMildKSwgWzBdLAotLQkJIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMildLAot
LQkJCSAgICBbMV0pX200X3NldF9zaXplKFskMV0sIFttNF9pbmNyXSkkM10sIFskNF0pXSwKLS0J
ICBbbTRfZGVmaW5lKFtfbTRfc2V0KFskMV0sJDIpXSwKLS0JCSAgICAgWzFdKW00X3B1c2hkZWYo
W19tNF9zZXQoWyQxXSldLAotLQkJCQkgICAgWyQyXSlfbTRfc2V0X3NpemUoWyQxXSwgW200X2lu
Y3JdKSQzXSldKQotLQotLSMgbTRfc2V0X2FkZF9hbGwoU0VULCBWQUxVRS4uLikKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBBZGQgZWFjaCBWQUxVRSBpbnRvIFNFVC4gIFRo
aXMgaXMgTyhuKSBpbiB0aGUgbnVtYmVyIG9mIFZBTFVFcywgYW5kCi0tIyBjYW4gYmUgZmFzdGVy
IHRoYW4gY2FsbGluZyBtNF9zZXRfYWRkIGZvciBlYWNoIFZBTFVFLgotLSMKLS0jIEltcGxlbWVu
dCB0d28gcmVjdXJzaW9uIGhlbHBlcnM7IHRoZSBjaGVjayB2YXJpYW50IGlzIHNsb3dlciBidXQK
LS0jIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYW4gZWxlbWVudCBoYXMgcHJldmlvdXNseSBiZWVu
IHJlbW92ZWQgYnV0Ci0tIyBub3QgcHJ1bmVkLiAgVGhlIHJlY3Vyc2lvbiBoZWxwZXJzIGlnbm9y
ZSB0aGVpciBzZWNvbmQgYXJndW1lbnQsIHNvCi0tIyB0aGF0IHdlIGNhbiB1c2UgdGhlIGZhc3Rl
ciBtNF9zaGlmdDIgYW5kIDIgYXJndW1lbnRzLCByYXRoZXIgdGhhbgotLSMgX200X3NoaWZ0MiBh
bmQgb25lIGFyZ3VtZW50LCBhcyB0aGUgc2lnbmFsIHRvIGVuZCByZWN1cnNpb24uCi0tIwotLSMg
UGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUg
aGVyZS4KLS1tNF9kZWZpbmUoW200X3NldF9hZGRfYWxsXSwKLS1bbTRfZGVmaW5lKFtfbTRfc2V0
X3NpemUoJDEpXSwgbTRfZXZhbChtNF9zZXRfc2l6ZShbJDFdKQotLSAgKyBtNF9sZW4obTRfaWZk
ZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLCBbXyQwX2NoZWNrXSwgW18kMF0pKFskMV0sICRAKSkp
KV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2FkZF9hbGxdLAotLVttNF9pZihbJCNdLCBbMl0s
IFtdLAotLSAgICAgICBbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMyldLCBbXSwKLS0JCSBbbTRf
ZGVmaW5lKFtfbTRfc2V0KFskMV0sJDMpXSwgWzFdKW00X3B1c2hkZWYoW19tNF9zZXQoWyQxXSld
LAotLQkgICBbJDNdKS1dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSldKQotLQotLW00X2RlZmlu
ZShbX200X3NldF9hZGRfYWxsX2NoZWNrXSwKLS1bbTRfaWYoWyQjXSwgWzJdLCBbXSwKLS0gICAg
ICAgW200X3NldF9hZGQoWyQxXSwgWyQzXSkkMChbJDFdLCBtNF9zaGlmdDIoJEApKV0pXSkKLS0K
LS0jIG00X3NldF9jb250YWlucyhTRVQsIFZBTFVFLCBbSUYtUFJFU0VOVF0sIFtJRi1BQlNFTlRd
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBFeHBhbmQgSUYtUFJFU0VOVCBpZiBTRVQgY29udGFpbnMgVkFMVUUsIG90aGVyd2lz
ZSBleHBhbmQgSUYtQUJTRU5ULgotLSMgVGhpcyBpcyBhbHdheXMgTygxKS4KLS1tNF9kZWZpbmUo
W200X3NldF9jb250YWluc10sCi0tW200X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwKLS0J
ICBbbTRfaWYobTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLAotLQkJICAgIFttNF9pbmRpcihb
X200X3NldChbJDFdLCQyKV0pXSwgWzBdKSwgWzFdLCBbJDNdLCBbJDRdKV0sCi0tCSAgW200X2lm
ZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgWyQzXSwgWyQ0XSldKV0pCi0tCi0tIyBtNF9zZXRfY29u
dGVudHMoU0VULCBbU0VQXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhw
YW5kIHRvIGEgc2luZ2xlIHN0cmluZyBjb250YWluaW5nIGFsbCB0aGUgZWxlbWVudHMgaW4gU0VU
LAotLSMgc2VwYXJhdGVkIGJ5IFNFUCwgd2l0aG91dCBtb2RpZnlpbmcgU0VULiAgTm8gcHJvdmlz
aW9uIGlzIG1hZGUgZm9yCi0tIyBkaXNhbWJpZ3VhdGluZyBzZXQgZWxlbWVudHMgdGhhdCBjb250
YWluIG5vbi1lbXB0eSBTRVAgYXMgYQotLSMgc3ViLXN0cmluZywgb3IgZm9yIHJlY29nbml6aW5n
IGEgc2V0IHRoYXQgY29udGFpbnMgb25seSB0aGUgZW1wdHkKLS0jIHN0cmluZy4gIE9yZGVyIG9m
IHRoZSBvdXRwdXQgaXMgbm90IGd1YXJhbnRlZWQuICBJZiBhbnkgZWxlbWVudHMKLS0jIGhhdmUg
YmVlbiBwcmV2aW91c2x5IHJlbW92ZWQgZnJvbSB0aGUgc2V0LCB0aGlzIGFjdGlvbiB3aWxsIHBy
dW5lCi0tIyB0aGUgdW51c2VkIG1lbW9yeS4gIFRoaXMgaXMgTyhuKSBpbiB0aGUgc2l6ZSBvZiB0
aGUgc2V0IGJlZm9yZQotLSMgcHJ1bmluZy4KLS0jCi0tIyBVc2UgX200X3BvcGRlZiBmb3Igc3Bl
ZWQuICBUaGUgZXhpc3RlbmNlIG9mIF9tNF9zZXRfY2xlYW51cCgkMSkKLS0jIGRldGVybWluZXMg
d2hpY2ggdmVyc2lvbiBvZiBfMSBoZWxwZXIgd2UgdXNlLgotLW00X2RlZmluZShbbTRfc2V0X2Nv
bnRlbnRzXSwKLS1bbTRfc2V0X21hcF9zZXAoWyQxXSwgW10sIFtdLCBbWyQyXV0pXSkKLS0KLS0j
IF9tNF9zZXRfY29udGVudHNfMShTRVQpCi0tIyBfbTRfc2V0X2NvbnRlbnRzXzFjKFNFVCkKLS0j
IF9tNF9zZXRfY29udGVudHNfMihTRVQsIFtQUkVdLCBbUE9TVF0sIFtTRVBdKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgdG8gYSBs
aXN0IG9mIHF1b3RlZCBlbGVtZW50cyBjdXJyZW50bHkgaW4gdGhlIHNldCwgZWFjaAotLSMgc3Vy
cm91bmRlZCBieSBQUkUgYW5kIFBPU1QsIGFuZCBtb3ZpbmcgU0VQIGluIGZyb250IG9mIFBSRSBv
bgotLSMgcmVjdXJzaW9uLiAgVG8gYXZvaWQgbmVzdGluZyBsaW1pdCByZXN0cmljdGlvbnMsIHRo
ZSBhbGdvcml0aG0gbXVzdAotLSMgYmUgYnJva2VuIGludG8gdHdvIHBhcnRzOyBfMSBkZXN0cnVj
dGl2ZWx5IGNvcGllcyB0aGUgc3RhY2sgaW4KLS0jIHJldmVyc2UgaW50byBfbTRfc2V0XygkMSks
IHByb2R1Y2luZyBubyBvdXRwdXQ7IHRoZW4gXzIKLS0jIGRlc3RydWN0aXZlbHkgY29waWVzIF9t
NF9zZXRfKCQxKSBiYWNrIGludG8gdGhlIHN0YWNrIGluIHJldmVyc2UuCi0tIyBJZiBubyBlbGVt
ZW50cyB3ZXJlIGRlbGV0ZWQsIHRoZW4gdGhpcyB2aXNpdHMgdGhlIHNldCBpbiB0aGUgb3JkZXIK
LS0jIHRoYXQgZWxlbWVudHMgd2VyZSBpbnNlcnRlZC4gIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBp
ZiBQUkUvUE9TVC9TRVAKLS0jIHRyaWVzIHRvIHJlY3Vyc2l2ZWx5IGxpc3Qgb3IgbW9kaWZ5IFNF
VCBpbiBhbnkgd2F5IG90aGVyIHRoYW4KLS0jIGNhbGxpbmcgbTRfc2V0X3JlbW92ZSBvbiB0aGUg
Y3VycmVudCBlbGVtZW50LiAgVXNlIF8xIGlmIGFsbCBlbnRyaWVzCi0tIyBpbiB0aGUgc3RhY2sg
YXJlIGd1YXJhbnRlZWQgdG8gYmUgaW4gdGhlIHNldCwgYW5kIF8xYyB0byBwcnVuZQotLSMgcmVt
b3ZlZCBlbnRyaWVzLiAgVXNlcyBfbTRfZGVmbiBhbmQgX200X3BvcGRlZiBmb3Igc3BlZWQuCi0t
bTRfZGVmaW5lKFtfbTRfc2V0X2NvbnRlbnRzXzFdLAotLVtfbTRfc3RhY2tfcmV2ZXJzZShbX200
X3NldChbJDFdKV0sIFtfbTRfc2V0XygkMSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2Nv
bnRlbnRzXzFjXSwKLS1bbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAotLQkgIFttNF9zZXRfY29u
dGFpbnMoWyQxXSwgX200X2RlZm4oW19tNF9zZXQoWyQxXSldKSwKLS0JCSAgIFttNF9wdXNoZGVm
KFtfbTRfc2V0XygkMSldLCBfbTRfZGVmbihbX200X3NldChbJDFdKV0pKV0sCi0tCQkgICBbX200
X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbigKLS0gICAgICBbX200X3NldChbJDFdKV0p
WyldKV0pX200X3BvcGRlZihbX200X3NldChbJDFdKV0pJDAoWyQxXSldLAotLQkgIFtfbTRfcG9w
ZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2Nv
bnRlbnRzXzJdLAotLVtfbTRfc3RhY2tfcmV2ZXJzZShbX200X3NldF8oJDEpXSwgW19tNF9zZXQo
WyQxXSldLAotLSAgWyQyW11fbTRfZGVmbihbX200X3NldF8oJDEpXSkkM10sIFskNFtdXSldKQot
LQotLSMgbTRfc2V0X2RlbGV0ZShTRVQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlbGV0
ZSBhbGwgZWxlbWVudHMgaW4gU0VULCBhbmQgcmVjbGFpbSBhbnkgbWVtb3J5IG9jY3VwaWVkIGJ5
IHRoZQotLSMgc2V0LiAgVGhpcyBpcyBPKG4pIGluIHRoZSBzZXQgc2l6ZS4KLS0jCi0tIyBVc2Ug
X200X2RlZm4gYW5kIF9tNF9wb3BkZWYgZm9yIHNwZWVkLgotLW00X2RlZmluZShbbTRfc2V0X2Rl
bGV0ZV0sCi0tW200X2lmZGVmKFtfbTRfc2V0KFskMV0pXSwKLS0JICBbX200X3BvcGRlZihbX200
X3NldChbJDFdLF1fbTRfZGVmbihbX200X3NldChbJDFdKV0pWyldLAotLQkJICAgICAgW19tNF9z
ZXQoWyQxXSldKSQwKFskMV0pXSwKLS0JICBbbTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSld
LAotLQkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKW00X2lmZGVmKAot
LQkJICAgIFtfbTRfc2V0X3NpemUoJDEpXSwKLS0JCSAgICBbX200X3BvcGRlZihbX200X3NldF9z
aXplKCQxKV0pXSldKV0pCi0tCi0tIyBtNF9zZXRfZGlmZmVyZW5jZShTRVQxLCBTRVQyKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFByb2R1Y2UgYSBMSVNUIG9mIHF1b3Rl
ZCBlbGVtZW50cyB0aGF0IG9jY3VyIGluIFNFVDEgYnV0IG5vdCBTRVQyLgotLSMgT3V0cHV0IGEg
Y29tbWEgcHJpb3IgdG8gYW55IGVsZW1lbnRzLCB0byBkaXN0aW5ndWlzaCB0aGUgZW1wdHkKLS0j
IHN0cmluZyBmcm9tIG5vIGVsZW1lbnRzLiAgVGhpcyBjYW4gYmUgZGlyZWN0bHkgdXNlZCBhcyBh
IHNlcmllcyBvZgotLSMgYXJndW1lbnRzLCBzdWNoIGFzIGZvciBtNF9qb2luLCBvciB3cmFwcGVk
IGluc2lkZSBxdW90ZXMgZm9yIHVzZSBpbgotLSMgbTRfZm9yZWFjaC4gIE9yZGVyIG9mIHRoZSBv
dXRwdXQgaXMgbm90IGd1YXJhbnRlZWQuCi0tIwotLSMgU2hvcnQtY2lyY3VpdCB0aGUgaWRlbXBv
dGVuY2UgcmVsYXRpb24uCi0tbTRfZGVmaW5lKFttNF9zZXRfZGlmZmVyZW5jZV0sCi0tW200X2lm
KFskMV0sIFskMl0sIFtdLCBbbTRfc2V0X21hcF9zZXAoWyQxXSwgW18kMChbJDJdLF0sIFspXSld
KV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2RpZmZlcmVuY2VdLAotLVttNF9zZXRfY29udGFp
bnMoWyQxXSwgWyQyXSwgW10sIFssWyQyXV0pXSkKLS0KLS0jIG00X3NldF9kdW1wKFNFVCwgW1NF
UF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kIHRvIGEgc2luZ2xlIHN0
cmluZyBjb250YWluaW5nIGFsbCB0aGUgZWxlbWVudHMgaW4gU0VULAotLSMgc2VwYXJhdGVkIGJ5
IFNFUCwgdGhlbiBkZWxldGUgU0VULiAgSW4gZ2VuZXJhbCwgaWYgeW91IG9ubHkgbmVlZCB0bwot
LSMgbGlzdCB0aGUgY29udGVudHMgb25jZSwgdGhpcyBpcyBmYXN0ZXIgdGhhbiBtNF9zZXRfY29u
dGVudHMuICBObwotLSMgcHJvdmlzaW9uIGlzIG1hZGUgZm9yIGRpc2FtYmlndWF0aW5nIHNldCBl
bGVtZW50cyB0aGF0IGNvbnRhaW4KLS0jIG5vbi1lbXB0eSBTRVAgYXMgYSBzdWItc3RyaW5nLiAg
T3JkZXIgb2YgdGhlIG91dHB1dCBpcyBub3QKLS0jIGd1YXJhbnRlZWQuICBUaGlzIGlzIE8obikg
aW4gdGhlIHNpemUgb2YgdGhlIHNldCBiZWZvcmUgcHJ1bmluZy4KLS0jCi0tIyBVc2UgX200X3Bv
cGRlZiBmb3Igc3BlZWQuICBVc2UgZXhpc3RlbmNlIG9mIF9tNF9zZXRfY2xlYW51cCgkMSkgdG8K
LS0jIGRlY2lkZSBpZiBtb3JlIGV4cGVuc2l2ZSByZWN1cnNpb24gaXMgbmVlZGVkLgotLW00X2Rl
ZmluZShbbTRfc2V0X2R1bXBdLAotLVttNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sCi0tCSAg
W19tNF9wb3BkZWYoW19tNF9zZXRfc2l6ZSgkMSldKV0pbTRfaWZkZWYoW19tNF9zZXRfY2xlYW51
cCgkMSldLAotLSAgICBbXyQwX2NoZWNrXSwgW18kMF0pKFskMV0sIFtdLCBbJDJdKV0pCi0tCi0t
IyBfbTRfc2V0X2R1bXAoU0VULCBbU0VQXSwgW1BSRVBdKQotLSMgX200X3NldF9kdW1wX2NoZWNr
KFNFVCwgW1NFUF0sIFtQUkVQXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBQcmludCBTRVAgYW5kIHRoZSBjdXJyZW50IGVsZW1lbnQsIHRoZW4gZGVsZXRl
IHRoZSBlbGVtZW50IGFuZAotLSMgcmVjdXJzZSB3aXRoIGVtcHR5IFNFUCBjaGFuZ2VkIHRvIFBS
RVAuICBUaGUgY2hlY2sgdmFyaWFudCBjaGVja3MKLS0jIHdoZXRoZXIgdGhlIGVsZW1lbnQgaGFz
IGJlZW4gcHJldmlvdXNseSByZW1vdmVkLiAgVXNlIF9tNF9kZWZuIGFuZAotLSMgX200X3BvcGRl
ZiBmb3Igc3BlZWQuCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2R1bXBdLAotLVttNF9pZmRlZihbX200
X3NldChbJDFdKV0sCi0tCSAgW1skMl1fbTRfZGVmbihbX200X3NldChbJDFdKV0pX200X3BvcGRl
ZihbX200X3NldChbJDFdLF1fbTRfZGVmbigKLS0JCVtfbTRfc2V0KFskMV0pXSlbKV0sIFtfbTRf
c2V0KFskMV0pXSkkMChbJDFdLCBbJDIkM10pXSldKQotLQotLW00X2RlZmluZShbX200X3NldF9k
dW1wX2NoZWNrXSwKLS1bbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAotLQkgIFttNF9zZXRfY29u
dGFpbnMoWyQxXSwgX200X2RlZm4oW19tNF9zZXQoWyQxXSldKSwKLS0JCQkgICBbWyQyXV9tNF9k
ZWZuKFtfbTRfc2V0KFskMV0pXSldKV9tNF9wb3BkZWYoCi0tICAgIFtfbTRfc2V0KFskMV0sXV9t
NF9kZWZuKFtfbTRfc2V0KFskMV0pXSlbKV0sCi0tICAgIFtfbTRfc2V0KFskMV0pXSkkMChbJDFd
LCBbJDIkM10pXSwKLS0JICBbX200X3BvcGRlZihbX200X3NldF9jbGVhbnVwKCQxKV0pXSldKQot
LQotLSMgbTRfc2V0X2VtcHR5KFNFVCwgW0lGLUVNUFRZXSwgW0lGLUVMRU1FTlRTXSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgSUYt
RU1QVFkgaWYgU0VUIGhhcyBubyBlbGVtZW50cywgb3RoZXJ3aXNlIElGLUVMRU1FTlRTLgotLW00
X2RlZmluZShbbTRfc2V0X2VtcHR5XSwKLS1bbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLAot
LQkgIFttNF9pZihtNF9pbmRpcihbX200X3NldF9zaXplKCQxKV0pLCBbMF0sIFskMl0sIFskM10p
XSwgWyQyXSldKQotLQotLSMgbTRfc2V0X2ZvcmVhY2goU0VULCBWQVIsIEFDVElPTikKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBGb3IgZWFjaCBlbGVtZW50IG9mIFNF
VCwgZGVmaW5lIFZBUiB0byB0aGUgZWxlbWVudCBhbmQgZXhwYW5kCi0tIyBBQ1RJT04uICBBQ1RJ
T04gc2hvdWxkIG5vdCByZWN1cnNpdmVseSBsaXN0IFNFVCdzIGNvbnRlbnRzLCBhZGQKLS0jIGVs
ZW1lbnRzIHRvIFNFVCwgbm9yIGRlbGV0ZSBhbnkgZWxlbWVudCBmcm9tIFNFVCBleGNlcHQgdGhl
IG9uZQotLSMgY3VycmVudGx5IGluIFZBUi4gIFRoZSBvcmRlciB0aGF0IHRoZSBlbGVtZW50cyBh
cmUgdmlzaXRlZCBpbiBpcyBub3QKLS0jIGd1YXJhbnRlZWQuICBUaGlzIGlzIGZhc3RlciB0aGFu
IHRoZSBjb3JyZXNwb25kaW5nIG00X2ZvcmVhY2goW1ZBUl0sCi0tIyAgIG00X2luZGlyKFttNF9k
cXVvdGVdbTRfc2V0X2xpc3RjKFtTRVRdKSksIFtBQ1RJT05dKQotLW00X2RlZmluZShbbTRfc2V0
X2ZvcmVhY2hdLAotLVttNF9wdXNoZGVmKFskMl0pbTRfc2V0X21hcF9zZXAoWyQxXSwKLS1bbTRf
ZGVmaW5lKFskMl0sXSwgWykkM10pbTRfcG9wZGVmKFskMl0pXSkKLS0KLS0jIG00X3NldF9pbnRl
cnNlY3Rpb24oU0VUMSwgU0VUMikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS0jIFByb2R1Y2UgYSBMSVNUIG9mIHF1b3RlZCBlbGVtZW50cyB0aGF0IG9jY3VyIGluIGJvdGgg
U0VUMSBvciBTRVQyLgotLSMgT3V0cHV0IGEgY29tbWEgcHJpb3IgdG8gYW55IGVsZW1lbnRzLCB0
byBkaXN0aW5ndWlzaCB0aGUgZW1wdHkKLS0jIHN0cmluZyBmcm9tIG5vIGVsZW1lbnRzLiAgVGhp
cyBjYW4gYmUgZGlyZWN0bHkgdXNlZCBhcyBhIHNlcmllcyBvZgotLSMgYXJndW1lbnRzLCBzdWNo
IGFzIGZvciBtNF9qb2luLCBvciB3cmFwcGVkIGluc2lkZSBxdW90ZXMgZm9yIHVzZSBpbgotLSMg
bTRfZm9yZWFjaC4gIE9yZGVyIG9mIHRoZSBvdXRwdXQgaXMgbm90IGd1YXJhbnRlZWQuCi0tIwot
LSMgSXRlcmF0ZSBvdmVyIHRoZSBzbWFsbGVyIHNldCwgYW5kIHNob3J0LWNpcmN1aXQgdGhlIGlk
ZW1wb3RlbmNlCi0tIyByZWxhdGlvbi4KLS1tNF9kZWZpbmUoW200X3NldF9pbnRlcnNlY3Rpb25d
LAotLVttNF9pZihbJDFdLCBbJDJdLCBbbTRfc2V0X2xpc3RjKFskMV0pXSwKLS0gICAgICAgbTRf
ZXZhbChtNF9zZXRfc2l6ZShbJDJdKSA8IG00X3NldF9zaXplKFskMV0pKSwgWzFdLCBbJDAoWyQy
XSwgWyQxXSldLAotLSAgICAgICBbbTRfc2V0X21hcF9zZXAoWyQxXSwgW18kMChbJDJdLF0sIFsp
XSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2ludGVyc2VjdGlvbl0sCi0tW200X3NldF9j
b250YWlucyhbJDFdLCBbJDJdLCBbLFskMl1dKV0pCi0tCi0tIyBtNF9zZXRfbGlzdChTRVQpCi0t
IyBtNF9zZXRfbGlzdGMoU0VUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFByb2R1Y2UgYSBM
SVNUIG9mIHF1b3RlZCBlbGVtZW50cyBvZiBTRVQuICBUaGlzIGNhbiBiZSBkaXJlY3RseSB1c2Vk
Ci0tIyBhcyBhIHNlcmllcyBvZiBhcmd1bWVudHMsIHN1Y2ggYXMgZm9yIG00X2pvaW4gb3IgbTRf
c2V0X2FkZF9hbGwsIG9yCi0tIyB3cmFwcGVkIGluc2lkZSBxdW90ZXMgZm9yIHVzZSBpbiBtNF9m
b3JlYWNoIG9yIG00X21hcC4gIFdpdGgKLS0jIG00X3NldF9saXN0LCB0aGVyZSBpcyBubyB3YXkg
dG8gZGlzdGluZ3Vpc2ggYW4gZW1wdHkgc2V0IGZyb20gYSBzZXQKLS0jIGNvbnRhaW5pbmcgb25s
eSB0aGUgZW1wdHkgc3RyaW5nOyB3aXRoIG00X3NldF9saXN0YywgYSBsZWFkaW5nIGNvbW1hCi0t
IyBpcyBvdXRwdXQgaWYgdGhlcmUgYXJlIGFueSBlbGVtZW50cy4KLS1tNF9kZWZpbmUoW200X3Nl
dF9saXN0XSwKLS1bbTRfc2V0X21hcF9zZXAoWyQxXSwgW10sIFtdLCBbLF0pXSkKLS0KLS1tNF9k
ZWZpbmUoW200X3NldF9saXN0Y10sCi0tW200X3NldF9tYXBfc2VwKFskMV0sIFssXSldKQotLQot
LSMgbTRfc2V0X21hcChTRVQsIEFDVElPTikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBGb3IgZWFjaCBlbGVtZW50IG9mIFNFVCwgZXhwYW5kIEFDVElPTiB3aXRoIGEgc2luZ2xlIGFy
Z3VtZW50IG9mIHRoZQotLSMgY3VycmVudCBlbGVtZW50LiAgQUNUSU9OIHNob3VsZCBub3QgcmVj
dXJzaXZlbHkgbGlzdCBTRVQncyBjb250ZW50cywKLS0jIGFkZCBlbGVtZW50cyB0byBTRVQsIG5v
ciBkZWxldGUgYW55IGVsZW1lbnQgZnJvbSBTRVQgZXhjZXB0IHRoZSBvbmUKLS0jIHBhc3NlZCBh
cyBhbiBhcmd1bWVudC4gIFRoZSBvcmRlciB0aGF0IHRoZSBlbGVtZW50cyBhcmUgdmlzaXRlZCBp
bgotLSMgaXMgbm90IGd1YXJhbnRlZWQuICBUaGlzIGlzIGZhc3RlciB0aGFuIGVpdGhlciBvZiB0
aGUgY29ycmVzcG9uZGluZwotLSMgICBtNF9tYXBfYXJncyhbQUNUSU9OXW00X3NldF9saXN0Yyhb
U0VUXSkpCi0tIyAgIG00X3NldF9mb3JlYWNoKFtTRVRdLCBbVkFSXSwgW0FDVElPTihtNF9kZWZu
KFtWQVJdKSldKQotLW00X2RlZmluZShbbTRfc2V0X21hcF0sCi0tW200X3NldF9tYXBfc2VwKFsk
MV0sIFskMihdLCBbKV0pXSkKLS0KLS0jIG00X3NldF9tYXBfc2VwKFNFVCwgW1BSRV0sIFtQT1NU
XSwgW1NFUF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgRm9yIGVhY2ggZWxlbWVudCBvZiBTRVQsIGV4cGFuZCBQUkVbdmFsdWVdUE9TVFtdLCBhbmQg
ZXhwYW5kIFNFUAotLSMgYmV0d2VlbiBlbGVtZW50cy4KLS1tNF9kZWZpbmUoW200X3NldF9tYXBf
c2VwXSwKLS1bbTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLCBbX200X3NldF9jb250ZW50
c18xY10sCi0tCSAgW19tNF9zZXRfY29udGVudHNfMV0pKFskMV0pX200X3NldF9jb250ZW50c18y
KCRAKV0pCi0tCi0tIyBtNF9zZXRfcmVtb3ZlKFNFVCwgVkFMVUUsIFtJRi1QUkVTRU5UXSwgW0lG
LUFCU0VOVF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBJZiBWQUxVRSBpcyBhbiBlbGVtZW50IG9mIFNFVCwgZGVsZXRlIGl0IGFu
ZCBleHBhbmQgSUYtUFJFU0VOVC4KLS0jIE90aGVyd2lzZSBleHBhbmQgSUYtQUJTRU5ULiAgRGVs
ZXRpbmcgYSBzaW5nbGUgdmFsdWUgaXMgTygxKSwKLS0jIGFsdGhvdWdoIGl0IGxlYXZlcyBtZW1v
cnkgb2NjdXBpZWQgdW50aWwgdGhlIG5leHQgTyhuKSB0cmF2ZXJzYWwgb2YKLS0jIHRoZSBzZXQg
d2hpY2ggd2lsbCBjb21wYWN0IHRoZSBzZXQuCi0tIwotLSMgT3B0aW1pemUgaWYgdGhlIGVsZW1l
bnQgYmVpbmcgcmVtb3ZlZCBpcyB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCwKLS0jIHNpbmNlIGRl
ZmluaW5nIF9tNF9zZXRfY2xlYW51cCgkMSkgc2xvd3MgZG93biBzbyBtYW55IG90aGVyIG1hY3Jv
cy4KLS0jIEluIHBhcnRpY3VsYXIsIHRoaXMgcGxheXMgd2VsbCB3aXRoIG00X3NldF9mb3JlYWNo
IGFuZCBtNF9zZXRfbWFwLgotLW00X2RlZmluZShbbTRfc2V0X3JlbW92ZV0sCi0tW200X3NldF9j
b250YWlucyhbJDFdLCBbJDJdLCBbX200X3NldF9zaXplKFskMV0sCi0tICAgIFttNF9kZWNyXSlt
NF9pZihfbTRfZGVmbihbX200X3NldChbJDFdKV0pLCBbJDJdLAotLQkJICAgIFtfbTRfcG9wZGVm
KFtfbTRfc2V0KFskMV0sJDIpXSwgW19tNF9zZXQoWyQxXSldKV0sCi0tCQkgICAgW200X2RlZmlu
ZShbX200X3NldF9jbGVhbnVwKCQxKV0pbTRfZGVmaW5lKAotLQkJICAgICAgW19tNF9zZXQoWyQx
XSwkMildLCBbMF0pXSkkM10sIFskNF0pXSkKLS0KLS0jIG00X3NldF9zaXplKFNFVCkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJl
bnRseSBpbiBTRVQuICBUaGlzIG9wZXJhdGlvbgotLSMgaXMgTygxKSwgYW5kIHRodXMgbW9yZSBl
ZmZpY2llbnQgdGhhbiBtNF9jb3VudChtNF9zZXRfbGlzdChbU0VUXSkpLgotLW00X2RlZmluZShb
bTRfc2V0X3NpemVdLAotLVttNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sIFttNF9pbmRpcihb
X200X3NldF9zaXplKCQxKV0pXSwgWzBdKV0pCi0tCi0tIyBfbTRfc2V0X3NpemUoU0VULCBBQ1RJ
T04pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBBQ1RJT04gbXVzdCBiZSBlaXRo
ZXIgbTRfaW5jciBvciBtNF9kZWNyLCBhbmQgdGhlIHNpemUgb2YgU0VUIGlzCi0tIyBjaGFuZ2Vk
IGFjY29yZGluZ2x5LiAgSWYgdGhlIHNldCBpcyBlbXB0eSwgQUNUSU9OIG11c3Qgbm90IGJlCi0t
IyBtNF9kZWNyLgotLW00X2RlZmluZShbX200X3NldF9zaXplXSwKLS1bbTRfZGVmaW5lKFtfbTRf
c2V0X3NpemUoJDEpXSwKLS0JICAgbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLCBbJDIobTRf
aW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKSldLAotLQkJICAgIFsxXSkpXSkKLS0KLS0jIG00X3Nl
dF91bmlvbihTRVQxLCBTRVQyKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQcm9k
dWNlIGEgTElTVCBvZiBkb3VibGUgcXVvdGVkIGVsZW1lbnRzIHRoYXQgb2NjdXIgaW4gZWl0aGVy
IFNFVDEKLS0jIG9yIFNFVDIsIHdpdGhvdXQgZHVwbGljYXRlcy4gIE91dHB1dCBhIGNvbW1hIHBy
aW9yIHRvIGFueSBlbGVtZW50cywKLS0jIHRvIGRpc3Rpbmd1aXNoIHRoZSBlbXB0eSBzdHJpbmcg
ZnJvbSBubyBlbGVtZW50cy4gIFRoaXMgY2FuIGJlCi0tIyBkaXJlY3RseSB1c2VkIGFzIGEgc2Vy
aWVzIG9mIGFyZ3VtZW50cywgc3VjaCBhcyBmb3IgbTRfam9pbiwgb3IKLS0jIHdyYXBwZWQgaW5z
aWRlIHF1b3RlcyBmb3IgdXNlIGluIG00X2ZvcmVhY2guICBPcmRlciBvZiB0aGUgb3V0cHV0IGlz
Ci0tIyBub3QgZ3VhcmFudGVlZC4KLS0jCi0tIyBXZSBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0
IG00X3NldF9saXN0YyBwcnVuZXMgU0VUMSwgc28gd2UgZG9uJ3QKLS0jIG5lZWQgdG8gY2hlY2sg
X200X3NldChbJDFdLGVsZW1lbnQpIGZvciAwLiAgU2hvcnQtY2lyY3VpdCB0aGUKLS0jIGlkZW1w
b3RlbmNlIHJlbGF0aW9uLgotLW00X2RlZmluZShbbTRfc2V0X3VuaW9uXSwKLS1bbTRfc2V0X2xp
c3RjKFskMV0pbTRfaWYoWyQxXSwgWyQyXSwgW10sCi0tICBbbTRfc2V0X21hcF9zZXAoWyQyXSwg
W18kMChbJDFdLF0sIFspXSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X3VuaW9uXSwKLS1b
bTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLCBbXSwgWyxbJDJdXSldKQotLQotLQotLSMjIC0t
LS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyAxNi4gRmlsZSBoYW5kbGluZy4gICMjCi0tIyMgLS0t
LS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLQotLSMgSXQgaXMgYSByZWFsIHBpdHkgdGhhdCBNNCBj
b21lcyB3aXRoIG5vIG1hY3JvcyB0byBiaW5kIGEgZGl2ZXJzaW9uCi0tIyB0byBhIGZpbGUuICBT
byB3ZSBoYXZlIHRvIGRlYWwgd2l0aG91dCwgd2hpY2ggbWFrZXMgdXMgYSBsb3QgbW9yZQotLSMg
ZnJhZ2lsZSB0aGFuIHdlIHNob3VsZC4KLS0KLS0KLS0jIG00X2ZpbGVfYXBwZW5kKEZJTEUtTkFN
RSwgQ09OVEVOVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9k
ZWZpbmUoW200X2ZpbGVfYXBwZW5kXSwKLS1bbTRfc3lzY21kKFtjYXQgPj4kMSA8PF9tNGVvZgot
LSQyCi0tX200ZW9mCi0tXSkKLS1tNF9pZihtNF9zeXN2YWwsIFswXSwgW10sCi0tICAgICAgW200
X2ZhdGFsKFskMDogY2Fubm90IHdyaXRlOiAkMV0pXSldKQotLQotLQotLQotLSMjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIDE3LiBTZXR0aW5nIE00c3VnYXIgdXAuICAjIwotLSMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgX200X2RpdmVydF9kaXZlcnNpb24g
c2hvdWxkIGJlIGRlZmluZWQuCi0tbTRfZGl2ZXJ0X3B1c2goW0tJTExdKQotLQotLSMgbTRfaW5p
dAotLSMgLS0tLS0tLQotLSMgSW5pdGlhbGl6ZSB0aGUgbTRzdWdhciBsYW5ndWFnZS4KLS1tNF9k
ZWZpbmUoW200X2luaXRdLAotLVsjIEFsbCB0aGUgTTRzdWdhciBtYWNyb3Mgc3RhcnQgd2l0aCBg
bTRfJywgZXhjZXB0IGBkbmwnIGtlcHQgYXMgaXMKLS0jIGZvciBzYWtlIG9mIHNpbXBsaWNpdHku
Ci0tbTRfcGF0dGVybl9mb3JiaWQoW15fP200X10pCi0tbTRfcGF0dGVybl9mb3JiaWQoW15kbmwk
XSkKLS0KLS0jIElmIF9fbTRfdmVyc2lvbl9fIGlzIGRlZmluZWQsIHdlIGFzc3VtZSB0aGF0IHdl
IGFyZSBiZWluZyBydW4gYnkgTTQKLS0jIDEuNiBvciBuZXdlciwgdGh1cyAkQCByZWN1cnNpb24g
aXMgbGluZWFyLCBhbmQgZGVidWdtb2RlKCtkbykKLS0jIGlzIGF2YWlsYWJsZSBmb3IgZmFzdGVy
IGNoZWNrcyBvZiBkZXJlZmVyZW5jaW5nIHVuZGVmaW5lZCBtYWNyb3MKLS0jIGFuZCBmb3JjaW5n
IGR1bXBkZWYgdG8gcHJpbnQgdG8gc3RkZXJyIHJlZ2FyZGxlc3Mgb2YgZGVidWdmaWxlLgotLSMg
QnV0IGlmIGl0IGlzIG1pc3NpbmcsIHdlIGFzc3VtZSB3ZSBhcmUgYmVpbmcgcnVuIGJ5IE00IDEu
NC54LCB0aGF0Ci0tIyAkQCByZWN1cnNpb24gaXMgcXVhZHJhdGljLCBhbmQgdGhhdCB3ZSBuZWVk
IGZvcmVhY2gtYmFzZWQKLS0jIHJlcGxhY2VtZW50IG1hY3Jvcy4gIEFsc28sIG00IHByaW9yIHRv
IDEuNC44IGxvc2VzIHRyYWNrIG9mIGxvY2F0aW9uCi0tIyBkdXJpbmcgbTR3cmFwIHRleHQ7IF9f
bGluZV9fIHNob3VsZCBuZXZlciBiZSAwLgotLSMKLS0jIFVzZSB0aGUgcmF3IGJ1aWx0aW4gdG8g
YXZvaWQgdHJpcHBpbmcgdXAgaW5jbHVkZSB0cmFjaW5nLgotLSMgTWVhbndoaWxlLCBhdm9pZCBt
NF9jb3B5LCBzaW5jZSBpdCB0ZW1wb3JhcmlseSB1bmRlZmluZXMgbTRfZGVmbi4KLS1tNF9pZmRl
ZihbX19tNF92ZXJzaW9uX19dLAotLVttNF9kZWJ1Z21vZGUoWytkb10pCi0tbTRfZGVmaW5lKFtt
NF9kZWZuXSwgX200X2RlZm4oW19tNF9kZWZuXSkpCi0tbTRfZGVmaW5lKFttNF9kdW1wZGVmXSwg
X200X2RlZm4oW19tNF9kdW1wZGVmXSkpCi0tbTRfZGVmaW5lKFttNF9wb3BkZWZdLCBfbTRfZGVm
bihbX200X3BvcGRlZl0pKQotLW00X2RlZmluZShbbTRfdW5kZWZpbmVdLCBfbTRfZGVmbihbX200
X3VuZGVmaW5lXSkpXSwKLS1bbTRfYnVpbHRpbihbaW5jbHVkZV0sIFttNHN1Z2FyL2ZvcmVhY2gu
bTRdKQotLW00X3dyYXBfbGlmbyhbbTRfaWYoX19saW5lX18sIFswXSwgW200X3B1c2hkZWYoW200
X2xvY2F0aW9uXSwKLS1dXW00X2RxdW90ZShtNF9kcXVvdGUobTRfZHF1b3RlKF9fZmlsZV9fOl9f
bGluZV9fKSkpW1spXSldKV0pCi0tCi0tIyBSZXdyaXRlIHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUg
ZGl2ZXJzaW9uIHN0YWNrLgotLW00X2RpdmVydChbS0lMTF0pCi0tCi0tIyBDaGVjayB0aGUgZGl2
ZXJ0IHB1c2gvcG9wIHBlcmZlY3QgYmFsYW5jZS4KLS0jIFNvbWUgdXNlcnMgYXJlIHByb25lIHRv
IGFsc28gdXNlIG00X3dyYXAgdG8gcmVnaXN0ZXIgbGFzdC1taW51dGUKLS0jIG00X2RpdmVydF90
ZXh0OyBzbyBhZnRlciBvdXIgZGl2ZXJzaW9uIGNsZWFudXBzLCB3ZSByZXN0b3JlCi0tIyBLSUxM
IGFzIHRoZSBib3R0b20gb2YgdGhlIGRpdmVyc2lvbiBzdGFjay4KLS1tNF93cmFwKFttNF9wb3Bk
ZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSltNF9pZmRlZigKLS0gIFtfbTRfZGl2ZXJ0X2RpdmVy
c2lvbl0sIFttNF9mYXRhbChbJDA6IHVuYmFsYW5jZWQgbTRfZGl2ZXJ0X3B1c2g6Ci0tXW00X2Rp
dmVydF9zdGFjayldKV9tNF9wb3BkZWYoW19tNF9kaXZlcnRfc3RhY2tdKW00X2RpdmVydF9wdXNo
KFtLSUxMXSldKQotLV0pCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9v
bHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvTElDRU5TRSBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL0xJQ0VO
U0UKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOTRhOWVkMDI0ZDMuLjAwMDAwMDAw
MDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJk
X3BhcnR5L3NrZWxldG9ucy9MSUNFTlNFCi0rKysgL2Rldi9udWxsCi1AQCAtMSw2NzQgKzAsMCBA
QAotLSAgICAgICAgICAgICAgICAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKLS0gICAg
ICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3Ci0tCi0tIENvcHlyaWdo
dCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6Ly9mc2Yub3Jn
Lz4KLS0gRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0
aW0gY29waWVzCi0tIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlz
IG5vdCBhbGxvd2VkLgotLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQot
LQotLSAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGEgZnJlZSwgY29weWxlZnQg
bGljZW5zZSBmb3IKLS1zb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCi0tCi0tICBU
aGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYW5kIG90aGVyIHByYWN0aWNhbCB3b3JrcyBh
cmUgZGVzaWduZWQKLS10byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFu
Z2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCi0tdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8KLS1zaGFyZSBhbmQg
Y2hhbmdlIGFsbCB2ZXJzaW9ucyBvZiBhIHByb2dyYW0tLXRvIG1ha2Ugc3VyZSBpdCByZW1haW5z
IGZyZWUKLS1zb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCB1c2UgdGhlCi0tR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
c3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8KLS1hbnkgb3RoZXIgd29yayBy
ZWxlYXNlZCB0aGlzIHdheSBieSBpdHMgYXV0aG9ycy4gIFlvdSBjYW4gYXBwbHkgaXQgdG8KLS15
b3VyIHByb2dyYW1zLCB0b28uCi0tCi0tICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUs
IHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90Ci0tcHJpY2UuICBPdXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQotLWhhdmUg
dGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNo
YXJnZSBmb3IKLS10aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29k
ZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQotLXdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhl
IHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3Ci0tZnJlZSBwcm9ncmFtcywgYW5k
IHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCi0tCi0tICBUbyBwcm90ZWN0
IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UK
LS10aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRo
ZXJlZm9yZSwgeW91IGhhdmUKLS1jZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgaWYgeW91IGRpc3Ry
aWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYKLS15b3UgbW9kaWZ5IGl0OiByZXNw
b25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgotLQotLSAgRm9y
IGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hl
dGhlcgotLWdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lw
aWVudHMgdGhlIHNhbWUKLS1mcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1h
a2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQotLW9yIGNhbiBnZXQgdGhlIHNvdXJjZSBj
b2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5Ci0ta25vdyB0
aGVpciByaWdodHMuCi0tCi0tICBEZXZlbG9wZXJzIHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3Rl
Y3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6Ci0tKDEpIGFzc2VydCBjb3B5cmlnaHQgb24g
dGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKLS1naXZpbmcgeW91
IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lgot
LQotLSAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQ
TCBjbGVhcmx5IGV4cGxhaW5zCi0tdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBm
cmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZAotLWF1dGhvcnMnIHNha2UsIHRoZSBH
UEwgcmVxdWlyZXMgdGhhdCBtb2RpZmllZCB2ZXJzaW9ucyBiZSBtYXJrZWQgYXMKLS1jaGFuZ2Vk
LCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3Vz
bHkgdG8KLS1hdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLgotLQotLSAgU29tZSBkZXZpY2Vz
IGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgotLW1v
ZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhl
IG1hbnVmYWN0dXJlcgotLWNhbiBkbyBzby4gIFRoaXMgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBh
dGlibGUgd2l0aCB0aGUgYWltIG9mCi0tcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFu
Z2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKLS1wYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ug
b2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bwotLXVzZSwg
d2hpY2ggaXMgcHJlY2lzZWx5IHdoZXJlIGl0IGlzIG1vc3QgdW5hY2NlcHRhYmxlLiAgVGhlcmVm
b3JlLCB3ZQotLWhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGli
aXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQotLXByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBh
cmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlCi0tc3RhbmQgcmVhZHkgdG8g
ZXh0ZW5kIHRoaXMgcHJvdmlzaW9uIHRvIHRob3NlIGRvbWFpbnMgaW4gZnV0dXJlIHZlcnNpb25z
Ci0tb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMu
Ci0tCi0tICBGaW5hbGx5LCBldmVyeSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBi
eSBzb2Z0d2FyZSBwYXRlbnRzLgotLVN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8g
cmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgotLXNvZnR3YXJlIG9uIGdlbmVyYWwtcHVy
cG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvCi0tYXZvaWQg
dGhlIHNwZWNpYWwgZGFuZ2VyIHRoYXQgcGF0ZW50cyBhcHBsaWVkIHRvIGEgZnJlZSBwcm9ncmFt
IGNvdWxkCi0tbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhp
cywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKLS1wYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRl
ciB0aGUgcHJvZ3JhbSBub24tZnJlZS4KLS0KLS0gIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25k
aXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCi0tbW9kaWZpY2F0aW9uIGZvbGxv
dy4KLS0KLS0gICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCi0tCi0t
ICAwLiBEZWZpbml0aW9ucy4KLS0KLS0gICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9u
IDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotLQotLSAgIkNvcHlyaWdodCIg
YWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMg
b2YKLS13b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLgotLQotLSAgIlRoZSBQcm9n
cmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlz
Ci0tTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vu
c2VlcyIgYW5kCi0tInJlY2lwaWVudHMiIG1heSBiZSBpbmRpdmlkdWFscyBvciBvcmdhbml6YXRp
b25zLgotLQotLSAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFw
dCBhbGwgb3IgcGFydCBvZiB0aGUgd29yawotLWluIGEgZmFzaGlvbiByZXF1aXJpbmcgY29weXJp
Z2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBhbgotLWV4YWN0IGNvcHku
ICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRo
ZQotLWVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLgot
LQotLSAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3Jh
bSBvciBhIHdvcmsgYmFzZWQKLS1vbiB0aGUgUHJvZ3JhbS4KLS0KLS0gIFRvICJwcm9wYWdhdGUi
IGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKLS1wZXJt
aXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9y
Ci0taW5mcmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0IGV4
ZWN1dGluZyBpdCBvbiBhCi0tY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAg
UHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKLS1kaXN0cmlidXRpb24gKHdpdGggb3Igd2l0
aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQotLXB1YmxpYywgYW5k
IGluIHNvbWUgY291bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC4KLS0KLS0gIFRvICJj
b252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMg
b3RoZXIKLS1wYXJ0aWVzIHRvIG1ha2Ugb3IgcmVjZWl2ZSBjb3BpZXMuICBNZXJlIGludGVyYWN0
aW9uIHdpdGggYSB1c2VyIHRocm91Z2gKLS1hIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJh
bnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgotLQotLSAgQW4gaW50ZXJhY3RpdmUg
dXNlciBpbnRlcmZhY2UgZGlzcGxheXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMiCi0tdG8g
dGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkg
dmlzaWJsZQotLWZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJp
Z2h0IG5vdGljZSwgYW5kICgyKQotLXRlbGxzIHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMgbm8gd2Fy
cmFudHkgZm9yIHRoZSB3b3JrIChleGNlcHQgdG8gdGhlCi0tZXh0ZW50IHRoYXQgd2FycmFudGll
cyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQotLXdvcmsgdW5k
ZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4g
IElmCi0tdGhlIGludGVyZmFjZSBwcmVzZW50cyBhIGxpc3Qgb2YgdXNlciBjb21tYW5kcyBvciBv
cHRpb25zLCBzdWNoIGFzIGEKLS1tZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1l
ZXRzIHRoaXMgY3JpdGVyaW9uLgotLQotLSAgMS4gU291cmNlIENvZGUuCi0tCi0tICBUaGUgInNv
dXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29y
awotLWZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gICJPYmplY3QgY29kZSIgbWVhbnMg
YW55IG5vbi1zb3VyY2UKLS1mb3JtIG9mIGEgd29yay4KLS0KLS0gIEEgIlN0YW5kYXJkIEludGVy
ZmFjZSIgbWVhbnMgYW4gaW50ZXJmYWNlIHRoYXQgZWl0aGVyIGlzIGFuIG9mZmljaWFsCi0tc3Rh
bmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUg
Y2FzZSBvZgotLWludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1p
bmcgbGFuZ3VhZ2UsIG9uZSB0aGF0Ci0taXMgd2lkZWx5IHVzZWQgYW1vbmcgZGV2ZWxvcGVycyB3
b3JraW5nIGluIHRoYXQgbGFuZ3VhZ2UuCi0tCi0tICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9m
IGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcgotLXRoYW4gdGhlIHdv
cmsgYXMgYSB3aG9sZSwgdGhhdCAoYSkgaXMgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBmb3JtIG9m
Ci0tcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2Yg
dGhhdCBNYWpvcgotLUNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNl
IG9mIHRoZSB3b3JrIHdpdGggdGhhdAotLU1ham9yIENvbXBvbmVudCwgb3IgdG8gaW1wbGVtZW50
IGEgU3RhbmRhcmQgSW50ZXJmYWNlIGZvciB3aGljaCBhbgotLWltcGxlbWVudGF0aW9uIGlzIGF2
YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCi0tIk1ham9yIENv
bXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9u
ZW50Ci0tKGtlcm5lbCwgd2luZG93IHN5c3RlbSwgYW5kIHNvIG9uKSBvZiB0aGUgc3BlY2lmaWMg
b3BlcmF0aW5nIHN5c3RlbQotLShpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsg
cnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCi0tcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2Jq
ZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuCi0tCi0tICBUaGUgIkNvcnJlc3Bv
bmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCi0t
dGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4g
ZXhlY3V0YWJsZQotLXdvcmspIHJ1biB0aGUgb2JqZWN0IGNvZGUgYW5kIHRvIG1vZGlmeSB0aGUg
d29yaywgaW5jbHVkaW5nIHNjcmlwdHMgdG8KLS1jb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBI
b3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKLS1TeXN0ZW0gTGlicmFyaWVz
LCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlCi0t
cHJvZ3JhbXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBpbiBwZXJmb3JtaW5nIHRob3NlIGFj
dGl2aXRpZXMgYnV0Ci0td2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1w
bGUsIENvcnJlc3BvbmRpbmcgU291cmNlCi0taW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24g
ZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3IKLS10aGUgd29yaywgYW5kIHRo
ZSBzb3VyY2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkKLS1saW5r
ZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8g
cmVxdWlyZSwKLS1zdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250
cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQotLXN1YnByb2dyYW1zIGFuZCBvdGhlciBwYXJ0cyBvZiB0
aGUgd29yay4KLS0KLS0gIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRl
IGFueXRoaW5nIHRoYXQgdXNlcnMKLS1jYW4gcmVnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5IGZyb20g
b3RoZXIgcGFydHMgb2YgdGhlIENvcnJlc3BvbmRpbmcKLS1Tb3VyY2UuCi0tCi0tICBUaGUgQ29y
cmVzcG9uZGluZyBTb3VyY2UgZm9yIGEgd29yayBpbiBzb3VyY2UgY29kZSBmb3JtIGlzIHRoYXQK
LS1zYW1lIHdvcmsuCi0tCi0tICAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KLS0KLS0gIEFsbCByaWdo
dHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9m
Ci0tY29weXJpZ2h0IG9uIHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVk
IHRoZSBzdGF0ZWQKLS1jb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRs
eSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCi0tcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZp
ZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGEKLS1jb3ZlcmVkIHdvcmsgaXMg
Y292ZXJlZCBieSB0aGlzIExpY2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKLS1j
b250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3ds
ZWRnZXMgeW91cgotLXJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBw
cm92aWRlZCBieSBjb3B5cmlnaHQgbGF3LgotLQotLSAgWW91IG1heSBtYWtlLCBydW4gYW5kIHBy
b3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdAotLWNvbnZleSwgd2l0aG91dCBj
b25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zCi0taW4g
Zm9yY2UuICBZb3UgbWF5IGNvbnZleSBjb3ZlcmVkIHdvcmtzIHRvIG90aGVycyBmb3IgdGhlIHNv
bGUgcHVycG9zZQotLW9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVs
eSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQotLXdpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0
aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgKLS10aGUgdGVybXMgb2Yg
dGhpcyBMaWNlbnNlIGluIGNvbnZleWluZyBhbGwgbWF0ZXJpYWwgZm9yIHdoaWNoIHlvdSBkbwot
LW5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhl
IGNvdmVyZWQgd29ya3MKLS1mb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBi
ZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uCi0tYW5kIGNvbnRyb2wsIG9uIHRlcm1zIHRoYXQg
cHJvaGliaXQgdGhlbSBmcm9tIG1ha2luZyBhbnkgY29waWVzIG9mCi0teW91ciBjb3B5cmlnaHRl
ZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KLS0KLS0gIENv
bnZleWluZyB1bmRlciBhbnkgb3RoZXIgY2lyY3Vtc3RhbmNlcyBpcyBwZXJtaXR0ZWQgc29sZWx5
IHVuZGVyCi0tdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5v
dCBhbGxvd2VkOyBzZWN0aW9uIDEwCi0tbWFrZXMgaXQgdW5uZWNlc3NhcnkuCi0tCi0tICAzLiBQ
cm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3
LgotLQotLSAgTm8gY292ZXJlZCB3b3JrIHNoYWxsIGJlIGRlZW1lZCBwYXJ0IG9mIGFuIGVmZmVj
dGl2ZSB0ZWNobm9sb2dpY2FsCi0tbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVs
ZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCi0tMTEgb2YgdGhlIFdJUE8gY29weXJp
Z2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yCi0tc2ltaWxhciBsYXdz
IHByb2hpYml0aW5nIG9yIHJlc3RyaWN0aW5nIGNpcmN1bXZlbnRpb24gb2Ygc3VjaAotLW1lYXN1
cmVzLgotLQotLSAgV2hlbiB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB5b3Ugd2FpdmUgYW55
IGxlZ2FsIHBvd2VyIHRvIGZvcmJpZAotLWNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBt
ZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgotLWlzIGVmZmVjdGVkIGJ5
IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8KLS10
aGUgY292ZXJlZCB3b3JrLCBhbmQgeW91IGRpc2NsYWltIGFueSBpbnRlbnRpb24gdG8gbGltaXQg
b3BlcmF0aW9uIG9yCi0tbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5m
b3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKLS11c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVz
JyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YKLS10ZWNobm9sb2dpY2Fs
IG1lYXN1cmVzLgotLQotLSAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4KLS0KLS0gIFlv
dSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2Rl
IGFzIHlvdQotLXJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNv
bnNwaWN1b3VzbHkgYW5kCi0tYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBh
cHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlOwotLWtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0
YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQotLW5vbi1wZXJtaXNzaXZlIHRlcm1zIGFk
ZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKLS1rZWVwIGlu
dGFjdCBhbGwgbm90aWNlcyBvZiB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7IGFuZCBnaXZl
IGFsbAotLXJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQ
cm9ncmFtLgotLQotLSAgWW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNlIGZvciBl
YWNoIGNvcHkgdGhhdCB5b3UgY29udmV5LAotLWFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Ig
d2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCi0tCi0tICA1LiBDb252ZXlpbmcgTW9kaWZp
ZWQgU291cmNlIFZlcnNpb25zLgotLQotLSAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9u
IHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bwotLXByb2R1Y2UgaXQgZnJvbSB0
aGUgUHJvZ3JhbSwgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCi0tdGVybXMg
b2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNv
bmRpdGlvbnM6Ci0tCi0tICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGlj
ZXMgc3RhdGluZyB0aGF0IHlvdSBtb2RpZmllZAotLSAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2
YW50IGRhdGUuCi0tCi0tICAgIGIpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGlj
ZXMgc3RhdGluZyB0aGF0IGl0IGlzCi0tICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBh
bmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgotLSAgICA3LiAgVGhpcyByZXF1
aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvCi0tICAgICJr
ZWVwIGludGFjdCBhbGwgbm90aWNlcyIuCi0tCi0tICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhl
IGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzCi0tICAgIExpY2Vuc2UgdG8gYW55
b25lIHdobyBjb21lcyBpbnRvIHBvc3Nlc3Npb24gb2YgYSBjb3B5LiAgVGhpcwotLSAgICBMaWNl
bnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rp
b24gNwotLSAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFu
ZCBhbGwgaXRzIHBhcnRzLAotLSAgICByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBwYWNrYWdl
ZC4gIFRoaXMgTGljZW5zZSBnaXZlcyBubwotLSAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhl
IHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90Ci0tICAgIGludmFsaWRhdGUg
c3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuCi0tCi0t
ICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2gg
bXVzdCBkaXNwbGF5Ci0tICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlm
IHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQotLSAgICBpbnRlcmZhY2VzIHRoYXQgZG8gbm90
IGRpc3BsYXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcywgeW91cgotLSAgICB3b3JrIG5lZWQg
bm90IG1ha2UgdGhlbSBkbyBzby4KLS0KLS0gIEEgY29tcGlsYXRpb24gb2YgYSBjb3ZlcmVkIHdv
cmsgd2l0aCBvdGhlciBzZXBhcmF0ZSBhbmQgaW5kZXBlbmRlbnQKLS13b3Jrcywgd2hpY2ggYXJl
IG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAotLWFu
ZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2Vy
IHByb2dyYW0sCi0taW4gb3Igb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlv
biBtZWRpdW0sIGlzIGNhbGxlZCBhbgotLSJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBh
bmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAotLXVzZWQgdG8gbGltaXQgdGhlIGFj
Y2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMKLS1iZXlvbmQg
d2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuICBJbmNsdXNpb24gb2YgYSBjb3ZlcmVk
IHdvcmsKLS1pbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFw
cGx5IHRvIHRoZSBvdGhlcgotLXBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuCi0tCi0tICA2LiBDb252
ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KLS0KLS0gIFlvdSBtYXkgY29udmV5IGEgY292ZXJlZCB3
b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgdGhlIHRlcm1zCi0tb2Ygc2VjdGlvbnMgNCBh
bmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCi0tbWFjaGluZS1yZWFkYWJs
ZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLAot
LWluIG9uZSBvZiB0aGVzZSB3YXlzOgotLQotLSAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2Rl
IGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0Ci0tICAgIChpbmNsdWRpbmcg
YSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgdGhlCi0tICAg
IENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0K
LS0gICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCi0tCi0tICAg
IGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2Fs
IHByb2R1Y3QKLS0gICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0p
LCBhY2NvbXBhbmllZCBieSBhCi0tICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFz
dCB0aHJlZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCi0tICAgIGxvbmcgYXMgeW91IG9mZmVyIHNw
YXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAotLSAgICBtb2Rl
bCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgx
KSBhCi0tICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwgdGhlIHNv
ZnR3YXJlIGluIHRoZQotLSAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vu
c2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAotLSAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBm
b3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vCi0tICAgIG1vcmUgdGhhbiB5
b3VyIHJlYXNvbmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcwotLSAgICBj
b252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCi0tICAgIENvcnJl
c3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuCi0tCi0t
ICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBh
IGNvcHkgb2YgdGhlCi0tICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9u
ZGluZyBTb3VyY2UuICBUaGlzCi0tICAgIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25seSBvY2Nh
c2lvbmFsbHkgYW5kIG5vbmNvbW1lcmNpYWxseSwgYW5kCi0tICAgIG9ubHkgaWYgeW91IHJlY2Vp
dmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAotLSAgICB3
aXRoIHN1YnNlY3Rpb24gNmIuCi0tCi0tICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkg
b2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCi0tICAgIHBsYWNlIChncmF0aXMgb3Ig
Zm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQotLSAgICBD
b3JyZXNwb25kaW5nIFNvdXJjZSBpbiB0aGUgc2FtZSB3YXkgdGhyb3VnaCB0aGUgc2FtZSBwbGFj
ZSBhdCBubwotLSAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lw
aWVudHMgdG8gY29weSB0aGUKLS0gICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0
aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8KLS0gICAgY29weSB0aGUgb2JqZWN0IGNv
ZGUgaXMgYSBuZXR3b3JrIHNlcnZlciwgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlCi0tICAgIG1h
eSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBh
cnR5KQotLSAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBw
cm92aWRlZCB5b3UgbWFpbnRhaW4KLS0gICAgY2xlYXIgZGlyZWN0aW9ucyBuZXh0IHRvIHRoZSBv
YmplY3QgY29kZSBzYXlpbmcgd2hlcmUgdG8gZmluZCB0aGUKLS0gICAgQ29ycmVzcG9uZGluZyBT
b3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQotLSAgICBDb3JyZXNw
b25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMK
LS0gICAgYXZhaWxhYmxlIGZvciBhcyBsb25nIGFzIG5lZWRlZCB0byBzYXRpc2Z5IHRoZXNlIHJl
cXVpcmVtZW50cy4KLS0KLS0gICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVy
LXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZAotLSAgICB5b3UgaW5mb3JtIG90aGVyIHBl
ZXJzIHdoZXJlIHRoZSBvYmplY3QgY29kZSBhbmQgQ29ycmVzcG9uZGluZwotLSAgICBTb3VyY2Ug
b2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5v
Ci0tICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLgotLQotLSAgQSBzZXBhcmFibGUgcG9y
dGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCi0t
ZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBu
b3QgYmUKLS1pbmNsdWRlZCBpbiBjb252ZXlpbmcgdGhlIG9iamVjdCBjb2RlIHdvcmsuCi0tCi0t
ICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdo
aWNoIG1lYW5zIGFueQotLXRhbmdpYmxlIHBlcnNvbmFsIHByb3BlcnR5IHdoaWNoIGlzIG5vcm1h
bGx5IHVzZWQgZm9yIHBlcnNvbmFsLCBmYW1pbHksCi0tb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBv
ciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgotLWludG8g
YSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3Vt
ZXIgcHJvZHVjdCwKLS1kb3VidGZ1bCBjYXNlcyBzaGFsbCBiZSByZXNvbHZlZCBpbiBmYXZvciBv
ZiBjb3ZlcmFnZS4gIEZvciBhIHBhcnRpY3VsYXIKLS1wcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFy
dGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKLS10eXBpY2FsIG9yIGNv
bW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0
dXMKLS1vZiB0aGUgcGFydGljdWxhciB1c2VyIG9yIG9mIHRoZSB3YXkgaW4gd2hpY2ggdGhlIHBh
cnRpY3VsYXIgdXNlcgotLWFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQg
dG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAotLWlzIGEgY29uc3VtZXIgcHJvZHVjdCBy
ZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsCi0tY29tbWVy
Y2lhbCwgaW5kdXN0cmlhbCBvciBub24tY29uc3VtZXIgdXNlcywgdW5sZXNzIHN1Y2ggdXNlcyBy
ZXByZXNlbnQKLS10aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVj
dC4KLS0KLS0gICJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIGZvciBhIFVzZXIgUHJvZHVjdCBt
ZWFucyBhbnkgbWV0aG9kcywKLS1wcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90
aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKLS1hbmQgZXhlY3V0ZSBtb2RpZmll
ZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tCi0t
YSBtb2RpZmllZCB2ZXJzaW9uIG9mIGl0cyBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRoZSBpbmZv
cm1hdGlvbiBtdXN0Ci0tc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0
aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKLS1jb2RlIGlzIGluIG5vIGNhc2UgcHJldmVu
dGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQotLW1vZGlmaWNhdGlvbiBoYXMg
YmVlbiBtYWRlLgotLQotLSAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVy
IHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3IKLS1zcGVjaWZpY2FsbHkgZm9yIHVzZSBpbiwg
YSBVc2VyIFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcwotLXBhcnQgb2YgYSB0
cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRo
ZQotLVVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBl
dHVpdHkgb3IgZm9yIGEKLS1maXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUgdHJhbnNh
Y3Rpb24gaXMgY2hhcmFjdGVyaXplZCksIHRoZQotLUNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZl
eWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCi0tYnkgdGhlIEluc3Rh
bGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5
Ci0taWYgbmVpdGhlciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBhYmlsaXR5
IHRvIGluc3RhbGwKLS1tb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChm
b3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCi0tYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4KLS0KLS0g
IFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2Vz
IG5vdCBpbmNsdWRlIGEKLS1yZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBv
cnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMKLS1mb3IgYSB3b3JrIHRoYXQgaGFzIGJl
ZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGllbnQsIG9yIGZvcgotLXRoZSBV
c2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAg
QWNjZXNzIHRvIGEKLS1uZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9u
IGl0c2VsZiBtYXRlcmlhbGx5IGFuZAotLWFkdmVyc2VseSBhZmZlY3RzIHRoZSBvcGVyYXRpb24g
b2YgdGhlIG5ldHdvcmsgb3IgdmlvbGF0ZXMgdGhlIHJ1bGVzIGFuZAotLXByb3RvY29scyBmb3Ig
Y29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCi0tCi0tICBDb3JyZXNwb25kaW5nIFNv
dXJjZSBjb252ZXllZCwgYW5kIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBwcm92aWRlZCwKLS1p
biBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1
YmxpY2x5Ci0tZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxl
IHRvIHRoZSBwdWJsaWMgaW4KLS1zb3VyY2UgY29kZSBmb3JtKSwgYW5kIG11c3QgcmVxdWlyZSBu
byBzcGVjaWFsIHBhc3N3b3JkIG9yIGtleSBmb3IKLS11bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29w
eWluZy4KLS0KLS0gIDcuIEFkZGl0aW9uYWwgVGVybXMuCi0tCi0tICAiQWRkaXRpb25hbCBwZXJt
aXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcwotLUxp
Y2Vuc2UgYnkgbWFraW5nIGV4Y2VwdGlvbnMgZnJvbSBvbmUgb3IgbW9yZSBvZiBpdHMgY29uZGl0
aW9ucy4KLS1BZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhl
IGVudGlyZSBQcm9ncmFtIHNoYWxsCi0tYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGlu
Y2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudAotLXRoYXQgdGhleSBhcmUgdmFs
aWQgdW5kZXIgYXBwbGljYWJsZSBsYXcuICBJZiBhZGRpdGlvbmFsIHBlcm1pc3Npb25zCi0tYXBw
bHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2Vw
YXJhdGVseQotLXVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFt
IHJlbWFpbnMgZ292ZXJuZWQgYnkKLS10aGlzIExpY2Vuc2Ugd2l0aG91dCByZWdhcmQgdG8gdGhl
IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMuCi0tCi0tICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9m
IGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uCi0tcmVtb3ZlIGFueSBhZGRp
dGlvbmFsIHBlcm1pc3Npb25zIGZyb20gdGhhdCBjb3B5LCBvciBmcm9tIGFueSBwYXJ0IG9mCi0t
aXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRo
ZWlyIG93bgotLXJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdv
cmsuKSAgWW91IG1heSBwbGFjZQotLWFkZGl0aW9uYWwgcGVybWlzc2lvbnMgb24gbWF0ZXJpYWws
IGFkZGVkIGJ5IHlvdSB0byBhIGNvdmVyZWQgd29yaywKLS1mb3Igd2hpY2ggeW91IGhhdmUgb3Ig
Y2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCi0tCi0tICBOb3R3aXRo
c3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIGZvciBtYXRlcmlh
bCB5b3UKLS1hZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkg
dGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCi0tdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUg
dGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6Ci0tCi0tICAgIGEpIERpc2NsYWltaW5n
IHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQotLSAg
ICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcgotLQotLSAg
ICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2Fs
IG5vdGljZXMgb3IKLS0gICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9y
IGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbAotLSAgICBOb3RpY2VzIGRpc3BsYXllZCBieSB3b3Jr
cyBjb250YWluaW5nIGl0OyBvcgotLQotLSAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRh
dGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yCi0tICAgIHJlcXVpcmluZyB0
aGF0IG1vZGlmaWVkIHZlcnNpb25zIG9mIHN1Y2ggbWF0ZXJpYWwgYmUgbWFya2VkIGluCi0tICAg
IHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsg
b3IKLS0KLS0gICAgZCkgTGltaXRpbmcgdGhlIHVzZSBmb3IgcHVibGljaXR5IHB1cnBvc2VzIG9m
IG5hbWVzIG9mIGxpY2Vuc29ycyBvcgotLSAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IK
LS0KLS0gICAgZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3
IGZvciB1c2Ugb2Ygc29tZQotLSAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2Vydmlj
ZSBtYXJrczsgb3IKLS0KLS0gICAgZikgUmVxdWlyaW5nIGluZGVtbmlmaWNhdGlvbiBvZiBsaWNl
bnNvcnMgYW5kIGF1dGhvcnMgb2YgdGhhdAotLSAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNv
bnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgotLSAgICBpdCkgd2l0
aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwg
Zm9yCi0tICAgIGFueSBsaWFiaWxpdHkgdGhhdCB0aGVzZSBjb250cmFjdHVhbCBhc3N1bXB0aW9u
cyBkaXJlY3RseSBpbXBvc2Ugb24KLS0gICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgot
LQotLSAgQWxsIG90aGVyIG5vbi1wZXJtaXNzaXZlIGFkZGl0aW9uYWwgdGVybXMgYXJlIGNvbnNp
ZGVyZWQgImZ1cnRoZXIKLS1yZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0
aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91Ci0tcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0
IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMKLS1nb3Zlcm5lZCBi
eSB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCBhIHRlcm0gdGhhdCBpcyBhIGZ1cnRoZXIKLS1yZXN0
cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50
IGNvbnRhaW5zCi0tYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5n
IG9yIGNvbnZleWluZyB1bmRlciB0aGlzCi0tTGljZW5zZSwgeW91IG1heSBhZGQgdG8gYSBjb3Zl
cmVkIHdvcmsgbWF0ZXJpYWwgZ292ZXJuZWQgYnkgdGhlIHRlcm1zCi0tb2YgdGhhdCBsaWNlbnNl
IGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKLS1u
b3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4KLS0KLS0gIElmIHlvdSBh
ZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5
b3UKLS1tdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVu
dCBvZiB0aGUKLS1hZGRpdGlvbmFsIHRlcm1zIHRoYXQgYXBwbHkgdG8gdGhvc2UgZmlsZXMsIG9y
IGEgbm90aWNlIGluZGljYXRpbmcKLS13aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1z
LgotLQotLSAgQWRkaXRpb25hbCB0ZXJtcywgcGVybWlzc2l2ZSBvciBub24tcGVybWlzc2l2ZSwg
bWF5IGJlIHN0YXRlZCBpbiB0aGUKLS1mb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vu
c2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwotLXRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBw
bHkgZWl0aGVyIHdheS4KLS0KLS0gIDguIFRlcm1pbmF0aW9uLgotLQotLSAgWW91IG1heSBub3Qg
cHJvcGFnYXRlIG9yIG1vZGlmeSBhIGNvdmVyZWQgd29yayBleGNlcHQgYXMgZXhwcmVzc2x5Ci0t
cHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHBy
b3BhZ2F0ZSBvcgotLW1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRl
cm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcgotLXRoaXMgTGljZW5zZSAoaW5jbHVkaW5nIGFueSBw
YXRlbnQgbGljZW5zZXMgZ3JhbnRlZCB1bmRlciB0aGUgdGhpcmQKLS1wYXJhZ3JhcGggb2Ygc2Vj
dGlvbiAxMSkuCi0tCi0tICBIb3dldmVyLCBpZiB5b3UgY2Vhc2UgYWxsIHZpb2xhdGlvbiBvZiB0
aGlzIExpY2Vuc2UsIHRoZW4geW91cgotLWxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJp
Z2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQotLXByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQg
dW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKLS1maW5hbGx5IHRlcm1p
bmF0ZXMgeW91ciBsaWNlbnNlLCBhbmQgKGIpIHBlcm1hbmVudGx5LCBpZiB0aGUgY29weXJpZ2h0
Ci0taG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJl
YXNvbmFibGUgbWVhbnMKLS1wcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uCi0t
Ci0tICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBo
b2xkZXIgaXMKLS1yZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVy
IG5vdGlmaWVzIHlvdSBvZiB0aGUKLS12aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5z
LCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCi0tcmVjZWl2ZWQgbm90aWNlIG9mIHZp
b2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0Ci0tY29weXJp
Z2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBh
ZnRlcgotLXlvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgotLQotLSAgVGVybWluYXRpb24gb2Yg
eW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUKLS1s
aWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciByaWdodHMgZnJv
bSB5b3UgdW5kZXIKLS10aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVy
bWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5Ci0tcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFs
aWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQotLW1hdGVyaWFsIHVuZGVy
IHNlY3Rpb24gMTAuCi0tCi0tICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5n
IENvcGllcy4KLS0KLS0gIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vu
c2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgotLXJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBB
bmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsKLS1vY2N1cnJpbmcgc29sZWx5
IGFzIGEgY29uc2VxdWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbgotLXRv
IHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhv
d2V2ZXIsCi0tbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1p
c3Npb24gdG8gcHJvcGFnYXRlIG9yCi0tbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBUaGVzZSBh
Y3Rpb25zIGluZnJpbmdlIGNvcHlyaWdodCBpZiB5b3UgZG8KLS1ub3QgYWNjZXB0IHRoaXMgTGlj
ZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKLS1jb3ZlcmVk
IHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRv
IHNvLgotLQotLSAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGll
bnRzLgotLQotLSAgRWFjaCB0aW1lIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHRoZSByZWNp
cGllbnQgYXV0b21hdGljYWxseQotLXJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5h
bCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZAotLXByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1
YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUKLS1mb3IgZW5m
b3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoIHRoaXMgTGljZW5zZS4KLS0K
LS0gIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5n
IGNvbnRyb2wgb2YgYW4KLS1vcmdhbml6YXRpb24sIG9yIHN1YnN0YW50aWFsbHkgYWxsIGFzc2V0
cyBvZiBvbmUsIG9yIHN1YmRpdmlkaW5nIGFuCi0tb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9y
Z2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKLS13b3JrIHJlc3VsdHMg
ZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdAotLXRyYW5zYWN0
aW9uIHdobyByZWNlaXZlcyBhIGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNlaXZlcyB3aGF0ZXZl
cgotLWxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVy
ZXN0IGhhZCBvciBjb3VsZAotLWdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1
cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlCi0tQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2Yg
dGhlIHdvcmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCi0tdGhlIHByZWRl
Y2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgotLQot
LSAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgZXhl
cmNpc2Ugb2YgdGhlCi0tcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNl
bnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKLS1ub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJv
eWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YKLS1yaWdodHMgZ3JhbnRlZCB1
bmRlciB0aGlzIExpY2Vuc2UsIGFuZCB5b3UgbWF5IG5vdCBpbml0aWF0ZSBsaXRpZ2F0aW9uCi0t
KGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFs
bGVnaW5nIHRoYXQKLS1hbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVz
aW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3IKLS1zYWxlLCBvciBpbXBvcnRpbmcgdGhlIFByb2dy
YW0gb3IgYW55IHBvcnRpb24gb2YgaXQuCi0tCi0tICAxMS4gUGF0ZW50cy4KLS0KLS0gIEEgImNv
bnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVy
IHRoaXMKLS1MaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJv
Z3JhbSBpcyBiYXNlZC4gIFRoZQotLXdvcmsgdGh1cyBsaWNlbnNlZCBpcyBjYWxsZWQgdGhlIGNv
bnRyaWJ1dG9yJ3MgImNvbnRyaWJ1dG9yIHZlcnNpb24iLgotLQotLSAgQSBjb250cmlidXRvcidz
ICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zCi0tb3duZWQg
b3IgY29udHJvbGxlZCBieSB0aGUgY29udHJpYnV0b3IsIHdoZXRoZXIgYWxyZWFkeSBhY3F1aXJl
ZCBvcgotLWhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29t
ZSBtYW5uZXIsIHBlcm1pdHRlZAotLWJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywg
b3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKLS1idXQgZG8gbm90IGluY2x1ZGUg
Y2xhaW1zIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIG9ubHkgYXMgYQotLWNvbnNlcXVlbmNlIG9m
IGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCi0t
cHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0
IHRvIGdyYW50Ci0tcGF0ZW50IHN1YmxpY2Vuc2VzIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0
aCB0aGUgcmVxdWlyZW1lbnRzIG9mCi0tdGhpcyBMaWNlbnNlLgotLQotLSAgRWFjaCBjb250cmli
dXRvciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUK
LS1wYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50
IGNsYWltcywgdG8KLS1tYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5k
IG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQKLS1wcm9wYWdhdGUgdGhlIGNvbnRlbnRzIG9mIGl0
cyBjb250cmlidXRvciB2ZXJzaW9uLgotLQotLSAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJh
Z3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MKLS1hZ3JlZW1lbnQgb3Ig
Y29tbWl0bWVudCwgaG93ZXZlciBkZW5vbWluYXRlZCwgbm90IHRvIGVuZm9yY2UgYSBwYXRlbnQK
LS0oc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3Ig
Y292ZW5hbnQgbm90IHRvCi0tc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFu
dCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGEKLS1wYXJ0eSBtZWFucyB0byBtYWtlIHN1Y2gg
YW4gYWdyZWVtZW50IG9yIGNvbW1pdG1lbnQgbm90IHRvIGVuZm9yY2UgYQotLXBhdGVudCBhZ2Fp
bnN0IHRoZSBwYXJ0eS4KLS0KLS0gIElmIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIGtub3dp
bmdseSByZWx5aW5nIG9uIGEgcGF0ZW50IGxpY2Vuc2UsCi0tYW5kIHRoZSBDb3JyZXNwb25kaW5n
IFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKLS10byBjb3B5
LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhy
b3VnaCBhCi0tcHVibGljbHkgYXZhaWxhYmxlIG5ldHdvcmsgc2VydmVyIG9yIG90aGVyIHJlYWRp
bHkgYWNjZXNzaWJsZSBtZWFucywKLS10aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhl
IENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCi0tYXZhaWxhYmxlLCBvciAoMikgYXJyYW5n
ZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQotLXBhdGVudCBsaWNl
bnNlIGZvciB0aGlzIHBhcnRpY3VsYXIgd29yaywgb3IgKDMpIGFycmFuZ2UsIGluIGEgbWFubmVy
Ci0tY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBl
eHRlbmQgdGhlIHBhdGVudAotLWxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktu
b3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQotLWFjdHVhbCBrbm93bGVkZ2UgdGhhdCwg
YnV0IGZvciB0aGUgcGF0ZW50IGxpY2Vuc2UsIHlvdXIgY29udmV5aW5nIHRoZQotLWNvdmVyZWQg
d29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVk
IHdvcmsKLS1pbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZp
YWJsZSBwYXRlbnRzIGluIHRoYXQKLS1jb3VudHJ5IHRoYXQgeW91IGhhdmUgcmVhc29uIHRvIGJl
bGlldmUgYXJlIHZhbGlkLgotLQotLSAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24g
d2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcgotLWFycmFuZ2VtZW50LCB5b3UgY29udmV5LCBv
ciBwcm9wYWdhdGUgYnkgcHJvY3VyaW5nIGNvbnZleWFuY2Ugb2YsIGEKLS1jb3ZlcmVkIHdvcmss
IGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKLS1yZWNl
aXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRl
LCBtb2RpZnkKLS1vciBjb252ZXkgYSBzcGVjaWZpYyBjb3B5IG9mIHRoZSBjb3ZlcmVkIHdvcmss
IHRoZW4gdGhlIHBhdGVudCBsaWNlbnNlCi0teW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0
ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKLS13b3JrIGFuZCB3b3JrcyBi
YXNlZCBvbiBpdC4KLS0KLS0gIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBp
ZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgotLXRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2Us
IHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzCi0tY29uZGl0aW9uZWQgb24gdGhlIG5v
bi1leGVyY2lzZSBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgcmlnaHRzIHRoYXQgYXJlCi0tc3BlY2lm
aWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEg
Y292ZXJlZAotLXdvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGgg
YSB0aGlyZCBwYXJ0eSB0aGF0IGlzCi0taW4gdGhlIGJ1c2luZXNzIG9mIGRpc3RyaWJ1dGluZyBz
b2Z0d2FyZSwgdW5kZXIgd2hpY2ggeW91IG1ha2UgcGF5bWVudAotLXRvIHRoZSB0aGlyZCBwYXJ0
eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCi0tdGhl
IHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2Yg
dGhlCi0tcGFydGllcyB3aG8gd291bGQgcmVjZWl2ZSB0aGUgY292ZXJlZCB3b3JrIGZyb20geW91
LCBhIGRpc2NyaW1pbmF0b3J5Ci0tcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0
aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawotLWNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVz
IG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5Ci0tZm9yIGFuZCBpbiBj
b25uZWN0aW9uIHdpdGggc3BlY2lmaWMgcHJvZHVjdHMgb3IgY29tcGlsYXRpb25zIHRoYXQKLS1j
b250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJy
YW5nZW1lbnQsCi0tb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8g
MjggTWFyY2ggMjAwNy4KLS0KLS0gIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNv
bnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKLS1hbnkgaW1wbGllZCBsaWNlbnNlIG9y
IG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQotLW90aGVyd2lzZSBiZSBh
dmFpbGFibGUgdG8geW91IHVuZGVyIGFwcGxpY2FibGUgcGF0ZW50IGxhdy4KLS0KLS0gIDEyLiBO
byBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLgotLQotLSAgSWYgY29uZGl0aW9ucyBhcmUg
aW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgotLW90
aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwg
dGhleSBkbyBub3QKLS1leGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNl
bnNlLiAgSWYgeW91IGNhbm5vdCBjb252ZXkgYQotLWNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRp
c2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwotLUxpY2Vuc2Ug
YW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5j
ZSB5b3UgbWF5Ci0tbm90IGNvbnZleSBpdCBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgeW91IGFn
cmVlIHRvIHRlcm1zIHRoYXQgb2JsaWdhdGUgeW91Ci0tdG8gY29sbGVjdCBhIHJveWFsdHkgZm9y
IGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5Ci0tdGhlIFBy
b2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFu
ZCB0aGlzCi0tTGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gY29udmV5
aW5nIHRoZSBQcm9ncmFtLgotLQotLSAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UuCi0tCi0tICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zp
c2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCi0tcGVybWlzc2lvbiB0byBsaW5rIG9yIGNv
bWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZAotLXVuZGVyIHZlcnNp
b24gMyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGludG8gYSBzaW5n
bGUKLS1jb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRo
ZSB0ZXJtcyBvZiB0aGlzCi0tTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBw
YXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssCi0tYnV0IHRoZSBzcGVjaWFsIHJlcXVpcmVt
ZW50cyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAotLXNlY3Rpb24g
MTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0
byB0aGUKLS1jb21iaW5hdGlvbiBhcyBzdWNoLgotLQotLSAgMTQuIFJldmlzZWQgVmVyc2lvbnMg
b2YgdGhpcyBMaWNlbnNlLgotLQotLSAgVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkg
cHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YKLS10aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxs
Ci0tYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBk
aWZmZXIgaW4gZGV0YWlsIHRvCi0tYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCi0t
Ci0tICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJl
ci4gIElmIHRoZQotLVByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBjZXJ0YWluIG51bWJlcmVkIHZl
cnNpb24gb2YgdGhlIEdOVSBHZW5lcmFsCi0tUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2
ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKLS1vcHRpb24gb2YgZm9sbG93aW5n
IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZAotLXZlcnNp
b24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
Ci0tRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9u
IG51bWJlciBvZiB0aGUKLS1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9v
c2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQKLS1ieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLgotLQotLSAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4g
ZGVjaWRlIHdoaWNoIGZ1dHVyZQotLXZlcnNpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBjYW4gYmUgdXNlZCwgdGhhdCBwcm94eSdzCi0tcHVibGljIHN0YXRlbWVudCBvZiBh
Y2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQotLXRvIGNo
b29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLgotLQotLSAgTGF0ZXIgbGljZW5zZSB2
ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKLS1wZXJtaXNzaW9u
cy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55
Ci0tYXV0aG9yIG9yIGNvcHlyaWdodCBob2xkZXIgYXMgYSByZXN1bHQgb2YgeW91ciBjaG9vc2lu
ZyB0byBmb2xsb3cgYQotLWxhdGVyIHZlcnNpb24uCi0tCi0tICAxNS4gRGlzY2xhaW1lciBvZiBX
YXJyYW50eS4KLS0KLS0gIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8g
VEhFIEVYVEVOVCBQRVJNSVRURUQgQlkKLS1BUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOIE9U
SEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUCi0tSE9MREVSUyBBTkQvT1Ig
T1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5U
WQotLU9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotLVRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLS1QVVJQT1NFLiAgVEhFIEVOVElS
RSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQot
LUlTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFT
U1VNRSBUSEUgQ09TVCBPRgotLUFMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09S
UkVDVElPTi4KLS0KLS0gIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4KLS0KLS0gIElOIE5P
IEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4g
V1JJVElORwotLVdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBX
SE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMKLS1USEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJP
VkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKLS1HRU5FUkFM
LCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9V
VCBPRiBUSEUKLS1VU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GCi0tREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVE
IElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQKLS1QQVJUSUVT
IE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBS
T0dSQU1TKSwKLS1FVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0tU1VDSCBEQU1BR0VTLgotLQotLSAgMTcuIElu
dGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4KLS0KLS0gIElmIHRoZSBkaXNjbGFp
bWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAotLWFi
b3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWly
IHRlcm1zLAotLXJldmlld2luZyBjb3VydHMgc2hhbGwgYXBwbHkgbG9jYWwgbGF3IHRoYXQgbW9z
dCBjbG9zZWx5IGFwcHJveGltYXRlcwotLWFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwg
bGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKLS1Qcm9ncmFtLCB1bmxlc3MgYSB3YXJy
YW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhCi0tY29weSBvZiB0
aGUgUHJvZ3JhbSBpbiByZXR1cm4gZm9yIGEgZmVlLgotLQotLSAgICAgICAgICAgICAgICAgICAg
IEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwotLQotLSAgICAgICAgICAgIEhvdyB0byBBcHBs
eSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwotLQotLSAgSWYgeW91IGRldmVsb3Ag
YSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAotLXBv
c3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlz
IHRvIG1ha2UgaXQKLS1mcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1
dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KLS0KLS0gIFRvIGRvIHNvLCBhdHRhY2gg
dGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0Ci0tdG8g
YXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZl
Y3RpdmVseQotLXN0YXRlIHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUg
c2hvdWxkIGhhdmUgYXQgbGVhc3QKLS10aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVy
IHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KLS0KLS0gICAgPG9uZSBsaW5lIHRv
IGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2Vz
Lj4KLS0gICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KLS0KLS0gICAg
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkKLS0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICAgVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0tICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUKLS0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLS0KLS0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ
ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tCi0tQWxzbyBhZGQg
aW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVy
IG1haWwuCi0tCi0tICBJZiB0aGUgcHJvZ3JhbSBkb2VzIHRlcm1pbmFsIGludGVyYWN0aW9uLCBt
YWtlIGl0IG91dHB1dCBhIHNob3J0Ci0tbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBp
biBhbiBpbnRlcmFjdGl2ZSBtb2RlOgotLQotLSAgICA8cHJvZ3JhbT4gIENvcHlyaWdodCAoQykg
PHllYXI+ICA8bmFtZSBvZiBhdXRob3I+Ci0tICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFC
U09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCi0tICAgIFRo
aXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUg
aXQKLS0gICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRh
aWxzLgotLQotLVRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMn
IHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQotLXBhcnRzIG9mIHRoZSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlLiAgT2YgY291cnNlLCB5b3VyIHByb2dyYW0ncyBjb21tYW5kcwotLW1pZ2h0IGJl
IGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQg
Ym94Ii4KLS0KLS0gIFlvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdv
cmsgYXMgYSBwcm9ncmFtbWVyKSBvciBzY2hvb2wsCi0taWYgYW55LCB0byBzaWduIGEgImNvcHly
aWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KLS1Gb3IgbW9y
ZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdO
VSBHUEwsIHNlZQotLTxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS0gIFRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5
b3VyIHByb2dyYW0KLS1pbnRvIHByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFt
IGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UKLS1tYXkgY29uc2lkZXIgaXQgbW9yZSB1c2Vm
dWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKLS10aGUg
bGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwKLS1QdWJsaWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4gIEJ1
dCBmaXJzdCwgcGxlYXNlIHJlYWQKLS08aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5
LW5vdC1sZ3BsLmh0bWw+LgotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rv
b2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL1JFQURNRS5jaHJvbWl1bSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0
b25zL1JFQURNRS5jaHJvbWl1bQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAyMTVk
ODJlNjM2Ni4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xz
L2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL1JFQURNRS5jaHJvbWl1bQotKysrIC9k
ZXYvbnVsbAotQEAgLTEsMTAgKzAsMCBAQAotLU5hbWU6IEJpc29uIHNrZWxldG9ucwotLVVSTDog
aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaXNvbi8KLS1WZXJzaW9uOiAzLjMuMgotLUxp
Y2Vuc2U6IEdQTAotLUxpY2Vuc2UgRmlsZTogTElDRU5TRQotLVNlY3VyaXR5IGNyaXRpY2FsOiBu
bwotLQotLURlc2NyaXB0aW9uOgotLUJpc29uIGlzIGEgcGFyc2VyIGdlbmVyYXRvci4gSXQgdXNl
cyBza2VsZXRvbiBmaWxlcyBhcyB0ZW1wbGF0ZXMgZm9yIGJ1aWxkaW5nCi0tc2ltaWxhciBsYW5n
dWFnZXMuCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYmlzb24ubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9iaXNvbi5tNAotZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBlMzU5MTg3NWMwZi4uMDAwMDAwMDAwMDAKLS0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkv
c2tlbGV0b25zL2Jpc29uLm00Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwxMTExICswLDAgQEAKLS0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtKi0gQXV0b2NvbmYgLSotCi0tCi0tIyBMYW5ndWFnZS1pbmRlcGVuZGVudCBNNCBNYWNyb3Mg
Zm9yIEJpc29uLgotLQotLSMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA0LTIwMTUsIDIwMTgtMjAx
OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tIyBJbmMuCi0tCi0tIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot
LSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2
ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0j
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy8+LgotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBJZGVudGlm
aWNhdGlvbi4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgYjRfZ2VuZXJhdGVk
X2J5Ci0tIyAtLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW2I0X2dlbmVyYXRlZF9ieV0sCi0t
W2I0X2NvbW1lbnQoW0EgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiBiNF92ZXJzaW9u
Ll0pCi0tXSkKLS0KLS0jIGI0X2NvcHlyaWdodChUSVRMRSwgW1lFQVJTXSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIFlFQVJTIGFyZSBub3QgZGVmaW5lZCwgdXNlIGI0
X2NvcHlyaWdodF95ZWFycy4KLS1tNF9kZWZpbmUoW2I0X2NvcHlyaWdodF0sCi0tW2I0X2dlbmVy
YXRlZF9ieQotLWI0X2NvbW1lbnQoWyQxCi0tCi0tXW00X2RxdW90ZShtNF90ZXh0X3dyYXAoW0Nv
cHlyaWdodCAoQykKLS1dbTRfaWZ2YWwoWyQyXSwgW1skMl1dLCBbbTRfZGVmbihbYjRfY29weXJp
Z2h0X3llYXJzXSldKVsKLS1GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy5dKSlbCi0tCi0t
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkKLS1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLU1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS1HTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLVlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu
c2VzLz4uXSkKLS0KLS1iNF9jb21tZW50KFtBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5
IGNyZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKLS1wYXJ0IG9yIGFsbCBvZiB0aGUg
Qmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawotLXVuZGVyIHRl
cm1zIG9mIHlvdXIgY2hvaWNlLCBzbyBsb25nIGFzIHRoYXQgd29yayBpc24ndCBpdHNlbGYgYQot
LXBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEgbW9kaWZpZWQgdmVyc2lv
biB0aGVyZW9mCi0tYXMgYSBwYXJzZXIgc2tlbGV0b24uICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3Ug
bW9kaWZ5IG9yIHJlZGlzdHJpYnV0ZQotLXRoZSBwYXJzZXIgc2tlbGV0b24gaXRzZWxmLCB5b3Ug
bWF5IChhdCB5b3VyIG9wdGlvbikgcmVtb3ZlIHRoaXMKLS1zcGVjaWFsIGV4Y2VwdGlvbiwgd2hp
Y2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKLS1CaXNvbiBvdXRw
dXQgZmlsZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLUxp
Y2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgotLQotLVRoaXMgc3BlY2lhbCBl
eGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KLS12
ZXJzaW9uIDIuMiBvZiBCaXNvbi5dKQotLV0pCi0tCi0tCi0tIyBiNF9kaXNjbGFpbWVyCi0tIyAt
LS0tLS0tLS0tLS0tCi0tIyBJc3N1ZSBhIHdhcm5pbmcgYWJvdXQgcHJpdmF0ZSBpbXBsZW1lbnRh
dGlvbiBkZXRhaWxzLgotLW00X2RlZmluZShbYjRfZGlzY2xhaW1lcl0sCi0tW2I0X2NvbW1lbnQo
W1VuZG9jdW1lbnRlZCBtYWNyb3MsIGVzcGVjaWFsbHkgdGhvc2Ugd2hvc2UgbmFtZSBzdGFydCB3
aXRoIFlZXywKLS1hcmUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiAgRG8gbm90IHJl
bHkgb24gdGhlbS5dKQotLV0pCi0tCi0tCi0tCi0tIyBiNF9yZXF1aXJlZF92ZXJzaW9uX2lmKFZF
UlNJT04sIElGX05FV0VSLCBJRl9PTERFUikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYgdGhlIHZlcnNpb24gJXJlcXVpcmUnZCBi
eSB0aGUgdXNlciBpcyBWRVJTSU9OIChvciBuZXdlcikgZXhwYW5kCi0tIyBJRl9ORVdFUiwgb3Ro
ZXJ3aXNlIElGX09MREVSLiAgVkVSU0lPTiBzaG91bGQgYmUgYW4gaW50ZWdlciwgZS5nLiwKLS0j
IDMwMiBmb3IgMy4yLgotLW00X2RlZmluZShbYjRfcmVxdWlyZWRfdmVyc2lvbl9pZl0sCi0tW200
X2lmKG00X2V2YWwoJDEgPD0gYjRfcmVxdWlyZWRfdmVyc2lvbiksCi0tICAgICAgICAgICAgICBb
MV0sIFskMl0sIFskM10pXSkKLS0KLS0KLS0jIyAtLS0tLS0tLSAjIwotLSMjIE91dHB1dC4gICMj
Ci0tIyMgLS0tLS0tLS0gIyMKLS0KLS0jIGI0X291dHB1dF9iZWdpbihGSUxFMSwgRklMRTIpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRW5hYmxlIG91dHB1dCwgaS5lLiwg
c2VuZCB0byBkaXZlcnNpb24gMCwgZXhwYW5kIGFmdGVyICIjIiwgYW5kCi0tIyBnZW5lcmF0ZSB0
aGUgdGFnIHRvIG91dHB1dCBpbnRvIEZJTEUuICBNdXN0IGJlIGZvbGxvd2VkIGJ5IEVPTC4KLS0j
IEZJTEUgaXMgRklMRTEgY29uY2F0ZW5hdGVkIHRvIEZJTEUyLiAgRklMRTIgY2FuIGJlIGVtcHR5
LCBvciBiZQotLSMgYWJzb2x1dGU6IGRvIHRoZSByaWdodCB0aGluZy4KLS1tNF9kZWZpbmUoW2I0
X291dHB1dF9iZWdpbl0sCi0tW200X2NoYW5nZWNvbSgpCi0tbTRfZGl2ZXJ0X3B1c2goMClkbmwK
LS1Ab3V0cHV0KG00X3VucXVvdGUoWyQxXSlALG00X3VucXVvdGUoWyQyXSlAKUBkbmwKLS1dKQot
LQotLQotLSMgYjRfb3V0cHV0X2VuZAotLSMgLS0tLS0tLS0tLS0tLQotLSMgT3V0cHV0IG5vdGhp
bmcsIHJlc3RvcmUgIyBhcyBjb21tZW50IGNoYXJhY3RlciAobm8gZXhwYW5zaW9ucyBhZnRlciAj
KS4KLS1tNF9kZWZpbmUoW2I0X291dHB1dF9lbmRdLAotLVttNF9kaXZlcnRfcG9wKDApCi0tbTRf
Y2hhbmdlY29tKFsjXSkKLS1dKQotLQotLQotLSMgYjRfZGl2ZXJ0X2tpbGwoQ09ERSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgQ09ERSBmb3IgaXRzIHNpZGUgZWZmZWN0cywg
ZGlzY2FyZCBpdHMgb3V0cHV0LgotLW00X2RlZmluZShbYjRfZGl2ZXJ0X2tpbGxdLAotLVttNF9k
aXZlcnRfdGV4dChbS0lMTF0sIFskMV0pXSkKLS0KLS0KLS0jIGI0X2RlZmluZV9zaWxlbnQoTUFD
Uk8sIENPREUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU2FtZSBhcyBt
NF9kZWZpbmUsIGJ1dCB0aHJvdyBhd2F5IHRoZSBleHBhbnNpb24gb2YgQ09ERS4KLS1tNF9kZWZp
bmUoW2I0X2RlZmluZV9zaWxlbnRdLAotLVttNF9kZWZpbmUoWyQxXSwgW2I0X2RpdmVydF9raWxs
KFskMl0pXSldKQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBFcnJvciBoYW5k
bGluZy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgVGhlIGZvbGxvd2luZyBl
cnJvciBoYW5kbGluZyBtYWNyb3MgcHJpbnQgZXJyb3IgZGlyZWN0aXZlcyB0aGF0IHNob3VsZCBu
b3QKLS0jIGJlY29tZSBhcmd1bWVudHMgb2Ygb3RoZXIgbWFjcm8gaW52b2NhdGlvbnMgc2luY2Ug
dGhleSB3b3VsZCBsaWtlbHkgdGhlbiBiZQotLSMgbWFuZ2xlZC4gIFRodXMsIHRoZXkgcHJpbnQg
dG8gc3Rkb3V0IGRpcmVjdGx5LgotLQotLSMgYjRfY2F0KFRFWFQpCi0tIyAtLS0tLS0tLS0tLS0K
LS0jIFdyaXRlIFRFWFQgdG8gc3Rkb3V0LiAgUHJlY2VkZSB0aGUgZmluYWwgbmV3bGluZSB3aXRo
IGFuIEAgc28gdGhhdCBpdCdzCi0tIyBlc2NhcGVkLiAgRm9yIGV4YW1wbGU6Ci0tIwotLSMgICBi
NF9jYXQoW1tAY29tcGxhaW4oaW52YWxpZCBpbnB1dEApXV0pCi0tbTRfZGVmaW5lKFtiNF9jYXRd
LAotLVttNF9zeXNjbWQoW2NhdCA8PCdfbTRlb2YnCi0tXW00X2JwYXRzdWJzdChtNF9kcXVvdGUo
JDEpLCBbX200ZW9mXSwgW19tNEBgZW9mXSlbQAotLV9tNGVvZgotLV0pZG5sCi0tbTRfaWYobTRf
c3lzdmFsLCBbMF0sIFtdLCBbbTRfZmF0YWwoWyQwOiBjYW5ub3Qgd3JpdGUgdG8gc3Rkb3V0XSld
KV0pCi0tCi0tIyBiNF9lcnJvcihLSU5ELCBTVEFSVCwgRU5ELCBGT1JNQVQsIFtBUkcxXSwgW0FS
RzJdLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBXcml0ZSBAS0lORChTVEFSVEAsRU5EQCxGT1JNQVRALEFSRzFALEFS
RzJALC4uLkApIHRvIHN0ZG91dC4KLS0jCi0tIyBGb3IgZXhhbXBsZToKLS0jCi0tIyAgIGI0X2Vy
cm9yKFtbY29tcGxhaW5dXSwgW1tpbnB1dC55OjIuM11dLCBbW2lucHV0Lnk6NS40XV0sCi0tIyAg
ICAgICAgICAgIFtbaW52YWxpZCAlc11dLCBbW2Zvb11dKQotLW00X2RlZmluZShbYjRfZXJyb3Jd
LAotLVtiNF9jYXQoW1tAY29tcGxhaW5dWyhdJDFbQCxdJDJbQCxdJDNbQCxdJDRbXV1kbmwKLS1b
bTRfaWYoWyQjXSwgWzRdLCBbXSwKLS0gICAgICAgW200X2ZvcmVhY2goW2I0X2FyZ10sCi0tICAg
ICAgICAgICAgICAgICAgIG00X2RxdW90ZShtNF9zaGlmdChtNF9zaGlmdChtNF9zaGlmdChtNF9z
aGlmdCgkQCkpKSkpLAotLSAgICAgICAgICAgICAgICAgICBbW0AsXWI0X2FyZ10pXSlbQCldXSld
KQotLQotLSMgYjRfd2FybihGT1JNQVQsIFtBUkcxXSwgW0FSRzJdLCAuLi4pCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFdyaXRlIEB3YXJuKEZPUk1BVEAsQVJH
MUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0LgotLSMKLS0jIEZvciBleGFtcGxlOgotLSMKLS0jICAg
YjRfd2FybihbW2ludmFsaWQgdmFsdWUgZm9yICclcyc6ICVzXV0sIFtbZm9vXV0sIFtbM11dKQot
LSMKLS0jIEFzIGEgc2ltcGxlIHRlc3Qgc3VpdGUsIHRoaXM6Ci0tIwotLSMgICBtNF9kaXZlcnQo
LTEpCi0tIyAgIG00X2RlZmluZShbYXNkZl0sIFtBU0RGXSkKLS0jICAgbTRfZGVmaW5lKFtmc2Fd
LCBbRlNBXSkKLS0jICAgbTRfZGVmaW5lKFtmZHNhXSwgW0ZEU0FdKQotLSMgICBiNF93YXJuX2F0
KFtbW2FzZGYpLCBhc2RmXV1dLCBbW1tmc2EpLCBmc2FdXV0sIFtbW2Zkc2EpLCBmZHNhXV1dKQot
LSMgICBiNF93YXJuX2F0KFtbYXNkZiksIGFzZGZdXSwgW1tmc2EpLCBmc2FdXSwgW1tmZHNhKSwg
ZmRzYV1dKQotLSMgICBiNF93YXJuX2F0KCkKLS0jICAgYjRfd2Fybl9hdCgxKQotLSMgICBiNF93
YXJuX2F0KDEsIDIpCi0tIwotLSMgU2hvdWxkIHByb2R1Y2UgdGhpcyB3aXRob3V0IG5ld2xpbmVz
OgotLSMKLS0jICAgQHdhcm5fYXQoW2FzZGYpLCBhc2RmXUAsQCxALFtmc2EpLCBmc2FdQCxbZmRz
YSksIGZkc2FdQCkKLS0jICAgQHdhcm4oYXNkZiksIGFzZGZALEAsQCxmc2EpLCBmc2FALGZkc2Ep
LCBmZHNhQCkKLS0jICAgQHdhcm4oQCkKLS0jICAgQHdhcm4oMUApCi0tIyAgIEB3YXJuKDFALDJA
KQotLW00X2RlZmluZShbYjRfd2Fybl0sCi0tW2I0X2Vycm9yKFtbd2Fybl1dLCBbXSwgW10sICRA
KV0pCi0tCi0tIyBiNF93YXJuX2F0KFNUQVJULCBFTkQsIEZPUk1BVCwgW0FSRzFdLCBbQVJHMl0s
IC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgV3JpdGUgQHdhcm4oU1RBUlRALEVOREAsRk9STUFUQCxBUkcxQCxBUkcyQCwuLi5A
KSB0byBzdGRvdXQuCi0tIwotLSMgRm9yIGV4YW1wbGU6Ci0tIwotLSMgICBiNF93YXJuX2F0KFtb
aW5wdXQueToyLjNdXSwgW1tpbnB1dC55OjUuNF1dLCBbW2ludmFsaWQgJXNdXSwgW1tmb29dXSkK
LS1tNF9kZWZpbmUoW2I0X3dhcm5fYXRdLAotLVtiNF9lcnJvcihbW3dhcm5dXSwgJEApXSkKLS0K
LS0jIGI0X2NvbXBsYWluKEZPUk1BVCwgW0FSRzFdLCBbQVJHMl0sIC4uLikKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEJvdW5jZSB0byBiNF9jb21wbGFp
bl9hdC4KLS0jCi0tIyBTZWUgYjRfd2FybiBleGFtcGxlLgotLW00X2RlZmluZShbYjRfY29tcGxh
aW5dLAotLVtiNF9lcnJvcihbW2NvbXBsYWluXV0sIFtdLCBbXSwgJEApXSkKLS0KLS0jIGI0X2Nv
bXBsYWluX2F0KFNUQVJULCBFTkQsIEZPUk1BVCwgW0FSRzFdLCBbQVJHMl0sIC4uLikKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0j
IFdyaXRlIEBjb21wbGFpbihTVEFSVEAsRU5EQCxGT1JNQVRALEFSRzFALEFSRzJALC4uLkApIHRv
IHN0ZG91dC4KLS0jCi0tIyBTZWUgYjRfd2Fybl9hdCBleGFtcGxlLgotLW00X2RlZmluZShbYjRf
Y29tcGxhaW5fYXRdLAotLVtiNF9lcnJvcihbW2NvbXBsYWluXV0sICRAKV0pCi0tCi0tIyBiNF9m
YXRhbChGT1JNQVQsIFtBUkcxXSwgW0FSRzJdLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBCb3VuY2UgdG8gYjRfZmF0YWxfYXQuCi0tIwotLSMgU2Vl
IGI0X3dhcm4gZXhhbXBsZS4KLS1tNF9kZWZpbmUoW2I0X2ZhdGFsXSwKLS1bYjRfZXJyb3IoW1tm
YXRhbF1dLCBbXSwgW10sICRAKWRubAotLW00X2V4aXQoMSldKQotLQotLSMgYjRfZmF0YWxfYXQo
U1RBUlQsIEVORCwgRk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgV3JpdGUgQGZhdGFs
KFNUQVJUQCxFTkRALEZPUk1BVEAsQVJHMUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0IGFuZCBleGl0
LgotLSMKLS0jIFNlZSBiNF93YXJuX2F0IGV4YW1wbGUuCi0tbTRfZGVmaW5lKFtiNF9mYXRhbF9h
dF0sCi0tW2I0X2Vycm9yKFtbZmF0YWxdXSwgJEApZG5sCi0tbTRfZXhpdCgxKV0pCi0tCi0tCi0t
IyMgLS0tLS0tLS0tLS0tICMjCi0tIyMgRGF0YSBUeXBlcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0t
ICMjCi0tCi0tIyBiNF9pbnRzX2luKElOVDEsIElOVDIsIExPVywgSElHSCkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUmV0dXJuIDEgaWZmIGJvdGggSU5UMSBhbmQg
SU5UMiBhcmUgaW4gW0xPVywgSElHSF0sIDAgb3RoZXJ3aXNlLgotLW00X2RlZmluZShbYjRfaW50
c19pbl0sCi0tW200X2V2YWwoWyQzIDw9ICQxICYmICQxIDw9ICQ0ICYmICQzIDw9ICQyICYmICQy
IDw9ICQ0XSldKQotLQotLQotLSMgYjRfc3VidHJhY3QoTEhTLCBSSFMpCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIEV2YWx1YXRlIExIUyAtIFJIUyBpZiB0aGV5IGFyZSBpbnRlZ2VyIGxp
dGVyYWxzLCBvdGhlcndpc2UgZXhwYW5kCi0tIyB0byAoTEhTKSAtIChSSFMpLgotLW00X2RlZmlu
ZShbYjRfc3VidHJhY3RdLAotLVttNF9ibWF0Y2goWyQxJDJdLCBbXlswMTIzNDU2Nzg5XSokXSwK
LS0gICAgICAgICAgIFttNF9ldmFsKFskMSAtICQyXSldLAotLSAgICAgICAgICAgWygkMSkgLSAo
JDIpXSldKQotLQotLSMgYjRfam9pbihBUkcxLCAuLi4pCi0tIyBfYjRfam9pbihBUkcxLCAuLi4p
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBKb2luIHdpdGggY29tbWEsIHNraXBwaW5nIGVt
cHR5IGFyZ3VtZW50cy4KLS0jIGI0X2pvaW4gY2FsbHMgaXRzZWxmIHJlY3Vyc2l2ZWx5IHVudGls
IGl0IHNlZXMgdGhlIGZpcnN0IG5vbi1lbXB0eQotLSMgYXJndW1lbnQsIHRoZW4gY2FsbHMgX2I0
X2pvaW4gKGkuZS4sIGBfJDBgKSB3aGljaCBwcmVwZW5kcyBlYWNoCi0tIyBub24tZW1wdHkgYXJn
dW1lbnQgd2l0aCBhIGNvbW1hLgotLW00X2RlZmluZShbYjRfam9pbl0sCi0tW200X2lmKFskIyQx
XSwKLS0gICAgICAgWzFdLCBbXSwKLS0gICAgICAgW200X2lmdmFsKFskMV0sCi0tICAgICAgICAg
ICAgICAgICBbJDFbXV8kMChtNF9zaGlmdCgkQCkpXSwKLS0gICAgICAgICAgICAgICAgIFskMCht
NF9zaGlmdCgkQCkpXSldKV0pCi0tCi0tIyBfYjRfam9pbihBUkdTMSwgLi4uKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW19iNF9qb2luXSwKLS1bbTRfaWYoWyQjJDFdLAot
LSAgICAgICBbMV0sIFtdLAotLSAgICAgICBbbTRfaWZ2YWwoWyQxXSwgWywgJDFdKVtdJDAobTRf
c2hpZnQoJEApKV0pXSkKLS0KLS0KLS0KLS0KLS0jIGI0X2ludGVncmFsX3BhcnNlcl90YWJsZXNf
bWFwKE1BQ1JPKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
TWFwIE1BQ1JPIG9uIGFsbCB0aGUgaW50ZWdyYWwgdGFibGVzLiAgTUFDUk8gaXMgZXhwZWN0ZWQg
dG8gaGF2ZQotLSMgdGhlIHNpZ25hdHVyZSBNQUNSTyhUQUJMRS1OQU1FLCBDT05URU5ULCBDT01N
RU5UKS4KLS1tNF9kZWZpbmUoW2I0X2ludGVncmFsX3BhcnNlcl90YWJsZXNfbWFwXSwKLS1bJDEo
W3BhY3RdLCBbYjRfcGFjdF0sCi0tICAgIFtbWVlQQUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4g
WVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCi0tU1RBVEUtTlVNLl1dKQotLQotLSQx
KFtkZWZhY3RdLCBbYjRfZGVmYWN0XSwKLS0gICBbW1lZREVGQUNUW1NUQVRFLU5VTV0gLS0gRGVm
YXVsdCByZWR1Y3Rpb24gbnVtYmVyIGluIHN0YXRlIFNUQVRFLU5VTS4KLS1QZXJmb3JtZWQgd2hl
biBZWVRBQkxFIGRvZXMgbm90IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCi0t
bWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuXV0pCi0tCi0tJDEoW3Bnb3RvXSwgW2I0X3Bn
b3RvXSwgW1tZWVBHT1RPW05URVJNLU5VTV0uXV0pCi0tCi0tJDEoW2RlZmdvdG9dLCBbYjRfZGVm
Z290b10sIFtbWVlERUZHT1RPW05URVJNLU5VTV0uXV0pCi0tCi0tJDEoW3RhYmxlXSwgW2I0X3Rh
YmxlXSwKLS0gICBbW1lZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dIC0tIFdoYXQgdG8gZG8gaW4g
c3RhdGUgU1RBVEUtTlVNLiAgSWYKLS1wb3NpdGl2ZSwgc2hpZnQgdGhhdCB0b2tlbi4gIElmIG5l
Z2F0aXZlLCByZWR1Y2UgdGhlIHJ1bGUgd2hvc2UKLS1udW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAg
SWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuXV0pCi0tCi0tJDEoW2NoZWNrXSwgW2I0X2No
ZWNrXSkKLS0KLS0kMShbc3Rvc10sIFtiNF9zdG9zXSwKLS0gICBbW1lZU1RPU1tTVEFURS1OVU1d
IC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRoZSkgYWNjZXNzaW5nCi0tc3ltYm9sIG9mIHN0
YXRlIFNUQVRFLU5VTS5dXSkKLS0KLS0kMShbcjFdLCBbYjRfcjFdLAotLSAgIFtbWVlSMVtZWU5d
IC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy5dXSkKLS0K
LS0kMShbcjJdLCBbYjRfcjJdLAotLSAgIFtbWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xz
IG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uXV0pCi0tXSkKLS0KLS0KLS0jIGI0
X3BhcnNlcl90YWJsZXNfZGVjbGFyZQotLSMgYjRfcGFyc2VyX3RhYmxlc19kZWZpbmUKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVmaW5lL2RlY2xhcmUgdGhlIChkZXRlcm1pbmlz
dGljKSBwYXJzZXIgdGFibGVzLgotLW00X2RlZmluZShbYjRfcGFyc2VyX3RhYmxlc19kZWNsYXJl
XSwKLS1bYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlc19tYXAoW2I0X2ludGVncmFsX3BhcnNlcl90
YWJsZV9kZWNsYXJlXSldKQotLQotLW00X2RlZmluZShbYjRfcGFyc2VyX3RhYmxlc19kZWZpbmVd
LAotLVtiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVzX21hcChbYjRfaW50ZWdyYWxfcGFyc2VyX3Rh
YmxlX2RlZmluZV0pXSkKLS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBE
ZWNvZGluZyBvcHRpb25zLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIGI0
X2ZsYWdfaWYoRkxBRywgSUYtVFJVRSwgSUYtRkFMU0UpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgUnVuIElGLVRSVUUgaWYgYjRfRkxBR19mbGFnIGlzIDEsIElG
LUZBTFNFIGlmIEZMQUcgaXMgMCwgb3RoZXJ3aXNlIGZhaWwuCi0tbTRfZGVmaW5lKFtiNF9mbGFn
X2lmXSwKLS1bbTRfY2FzZShiNF8kMV9mbGFnLAotLSAgICAgICAgIFswXSwgWyQzXSwKLS0gICAg
ICAgICBbMV0sIFskMl0sCi0tICAgICAgICAgW200X2ZhdGFsKFtpbnZhbGlkICQxIHZhbHVlOiBd
YjRfJDFfZmxhZyldKV0pCi0tCi0tCi0tIyBiNF9kZWZpbmVfZmxhZ19pZihGTEFHKQotLSMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlZmluZSAiYjRfRkxBR19pZihJRi1UUlVFLCBJRi1G
QUxTRSkiIHRoYXQgZGVwZW5kcyBvbiB0aGUKLS0jIHZhbHVlIG9mIHRoZSBCb29sZWFuIEZMQUcu
Ci0tbTRfZGVmaW5lKFtiNF9kZWZpbmVfZmxhZ19pZl0sCi0tW19iNF9kZWZpbmVfZmxhZ19pZigk
WzFdLCAkWzJdLCBbJDFdKV0pCi0tCi0tIyBfYjRfZGVmaW5lX2ZsYWdfaWYoJDEsICQyLCBGTEFH
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFdvcmsgYXJvdW5kIHRo
ZSBpbXBvc3NpYmlsaXR5IHRvIGRlZmluZSBtYWNyb3MgaW5zaWRlIG1hY3JvcywKLS0jIGJlY2F1
c2UgaXNzdWluZyAnWyQxXScgaXMgbm90IHBvc3NpYmxlIGluIE00LiAgR05VIE00IHNob3VsZCBw
cm92aWRlCi0tIyAkJDEgYSBsYSBNNS9UZVguCi0tbTRfZGVmaW5lKFtfYjRfZGVmaW5lX2ZsYWdf
aWZdLAotLVttNF9pZihbJDEkMl0sICRbMV0kWzJdLCBbXSwKLS0gICAgICAgW200X2ZhdGFsKFsk
MDogSW52YWxpZCBhcmd1bWVudHM6ICRAXSldKWRubAotLW00X2RlZmluZShbYjRfJDNfaWZdLAot
LSAgICAgICAgICBbYjRfZmxhZ19pZihbJDNdLCBbJDFdLCBbJDJdKV0pXSkKLS0KLS0KLS0jIGI0
X0ZMQUdfaWYoSUYtVFJVRSwgSUYtRkFMU0UpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgRXhwYW5kIElGLVRSVUUsIGlmIEZMQUcgaXMgdHJ1ZSwgSUYtRkFMU0Ugb3RoZXJ3
aXNlLgotLWI0X2RlZmluZV9mbGFnX2lmKFtkZWZpbmVzXSkgICAgICAgICAgICAjIFdoZXRoZXIg
aGVhZGVycyBhcmUgcmVxdWVzdGVkLgotLWI0X2RlZmluZV9mbGFnX2lmKFtnbHJdKSAgICAgICAg
ICAgICAgICAjIFdoZXRoZXIgYSBHTFIgcGFyc2VyIGlzIHJlcXVlc3RlZC4KLS1iNF9kZWZpbmVf
ZmxhZ19pZihbbm9uZGV0ZXJtaW5pc3RpY10pICAgIyBXaGV0aGVyIGNvbmZsaWN0cyBzaG91bGQg
YmUgaGFuZGxlZC4KLS1iNF9kZWZpbmVfZmxhZ19pZihbdG9rZW5fdGFibGVdKSAgICAgICAgIyBX
aGV0aGVyIHl5dG9rZW5fdGFibGUgaXMgZGVtYW5kZWQuCi0tYjRfZGVmaW5lX2ZsYWdfaWYoW3lh
Y2NdKSAgICAgICAgICAgICAgICMgV2hldGhlciBQT1NJWCBZYWNjIGlzIGVtdWxhdGVkLgotLQot
LQotLSMgYjRfZ2xyX2NjX2lmKFtJRi1UUlVFXSwgW0lGLUZBTFNFXSkKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtiNF9nbHJfY2NfaWZdLAotLSAg
ICAgICAgICBbbTRfaWYoYjRfc2tlbGV0b24sIFsiZ2xyLmNjIl0sICRAKV0pCi0tCi0tCi0tIyMg
LS0tLS0tLS0tICMjCi0tIyMgU3ltYm9scy4gICMjCi0tIyMgLS0tLS0tLS0tICMjCi0tCi0tIyBG
b3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgU3ltYm9sIGhhbmRsaW5nLCBzZWUgUkVBRE1FLgotLSMK
LS0jIFRoZSBmb2xsb3dpbmcgbWFjcm9zIHByb3ZpZGUgYWNjZXNzIHRvIHN5bWJvbCByZWxhdGVk
IHZhbHVlcy4KLS0KLS0jIF9fYjRfc3ltYm9sKE5VTSwgRklFTEQpCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgUmVjb3ZlciBhIEZJRUxEIGFib3V0IHN5bWJvbCAjTlVNLiAgVGhhbmtz
IHRvIG00X2luZGlyLCBmYWlscyBpZgotLSMgdW5kZWZpbmVkLgotLW00X2RlZmluZShbX19iNF9z
eW1ib2xdLAotLVttNF9pbmRpcihbYjRfc3ltYm9sKCQxLCAkMildKV0pCi0tCi0tCi0tIyBfYjRf
c3ltYm9sKE5VTSwgRklFTEQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZWNvdmVy
IGEgRklFTEQgYWJvdXQgc3ltYm9sICNOVU0gKG9yICJvcmlnIE5VTSIpLiAgRmFpbHMgaWYKLS0j
IHVuZGVmaW5lZC4KLS1tNF9kZWZpbmUoW19iNF9zeW1ib2xdLAotLVttNF9pZmRlZihbYjRfc3lt
Ym9sKCQxLCBudW1iZXIpXSwKLS0gICAgICAgICAgW19fYjRfc3ltYm9sKG00X2luZGlyKFtiNF9z
eW1ib2woJDEsIG51bWJlcildKSwgJDIpXSwKLS0gICAgICAgICAgW19fYjRfc3ltYm9sKFskMV0s
IFskMl0pXSldKQotLQotLQotLQotLSMgYjRfc3ltYm9sKE5VTSwgRklFTEQpCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIFJlY292ZXIgYSBGSUVMRCBhYm91dCBzeW1ib2wgI05VTSAob3Ig
Im9yaWcgTlVNIikuICBGYWlscyBpZgotLSMgdW5kZWZpbmVkLiAgSWYgRklFTEQgPSBpZCwgcHJl
cGVuZCB0aGUgdG9rZW4gcHJlZml4LgotLW00X2RlZmluZShbYjRfc3ltYm9sXSwKLS1bbTRfY2Fz
ZShbJDJdLAotLSAgICAgICAgIFtpZF0sICAgIFttNF9kbyhbYjRfcGVyY2VudF9kZWZpbmVfZ2V0
KFthcGkudG9rZW4ucHJlZml4XSldLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbX2I0X3N5
bWJvbChbJDFdLCBbaWRdKV0pXSwKLS0gICAgICAgICBbX2I0X3N5bWJvbCgkQCldKV0pCi0tCi0t
Ci0tIyBiNF9zeW1ib2xfaWYoTlVNLCBGSUVMRCwgSUYtVFJVRSwgSUYtRkFMU0UpCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiBGSUVMRCBhYm91
dCBzeW1ib2wgI05VTSBpcyAxIGV4cGFuZCBJRi1UUlVFLCBpZiBpcyAwLCBleHBhbmQgSUYtRkFM
U0UuCi0tIyBPdGhlcndpc2UgYW4gZXJyb3IuCi0tbTRfZGVmaW5lKFtiNF9zeW1ib2xfaWZdLAot
LVttNF9jYXNlKGI0X3N5bWJvbChbJDFdLCBbJDJdKSwKLS0gICAgICAgICBbMV0sIFskM10sCi0t
ICAgICAgICAgWzBdLCBbJDRdLAotLSAgICAgICAgIFttNF9mYXRhbChbJDA6IGZpZWxkICQyIG9m
ICQxIGlzIG5vdCBhIEJvb2xlYW46XSBiNF9zeW1ib2woWyQxXSwgWyQyXSkpXSldKQotLQotLQot
LSMgYjRfc3ltYm9sX3RhZ19jb21tZW50KFNZTUJPTC1OVU0pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIElzc3VlIGEgY29tbWVudCBnaXZpbmcgdGhlIHRhZyBvZiBz
eW1ib2wgTlVNLgotLW00X2RlZmluZShbYjRfc3ltYm9sX3RhZ19jb21tZW50XSwKLS1bYjRfY29t
bWVudChbYjRfc3ltYm9sKFskMV0sIFt0YWddKV0pCi0tXSkKLS0KLS0KLS0jIGI0X3N5bWJvbF9h
Y3Rpb25fbG9jYXRpb24oU1lNQk9MLU5VTSwgS0lORCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJlcG9ydCB0aGUgbG9jYXRpb24gb2YgdGhlIEtJ
TkQgYWN0aW9uIGFzIEZJTEU6TElORS4KLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF9hY3Rpb25fbG9j
YXRpb25dLAotLVtiNF9zeW1ib2woWyQxXSwgWyQyX2ZpbGVdKTpiNF9zeW5jbGluZShbYjRfc3lt
Ym9sKFskMV0sIFskMl9saW5lXSldKV0pCi0tCi0tCi0tIyBiNF9zeW1ib2xfYWN0aW9uKFNZTUJP
TC1OVU0sIEtJTkQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBS
dW4gdGhlIGFjdGlvbiBLSU5EIChkZXN0cnVjdG9yIG9yIHByaW50ZXIpIGZvciBTWU1CT0wtTlVN
LgotLW00X2RlZmluZShbYjRfc3ltYm9sX2FjdGlvbl0sCi0tW2I0X3N5bWJvbF9pZihbJDFdLCBb
aGFzXyQyXSwKLS1bYjRfZG9sbGFyX3B1c2hkZWYoWygqeXl2YWx1ZXApXSwKLS0gICAgICAgICAg
ICAgICAgICAgWyQxXSwKLS0gICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAg
ICAgIFsoKnl5bG9jYXRpb25wKV0pZG5sCi0tICAgIF9iNF9zeW1ib2xfY2FzZShbJDFdKVtdZG5s
Ci0tYjRfc3luY2xpbmUoW2I0X3N5bWJvbChbJDFdLCBbJDJfbGluZV0pXSwgW2I0X3N5bWJvbChb
JDFdLCBbJDJfZmlsZV0pXSkKLS0gICAgICBiNF9zeW1ib2woWyQxXSwgWyQyXSkKLS1iNF9zeW5j
bGluZShbQG9saW5lQF0sIFtAb2ZpbGVAXSkKLS0gICAgICAgIGJyZWFrOwotLQotLWI0X2RvbGxh
cl9wb3BkZWZbXWRubAotLV0pXSkKLS0KLS0KLS0jIGI0X3N5bWJvbF9kZXN0cnVjdG9yKFNZTUJP
TC1OVU0pCi0tIyBiNF9zeW1ib2xfcHJpbnRlcihTWU1CT0wtTlVNKQotLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF9kZXN0cnVjdG9yXSwg
W2I0X3N5bWJvbF9hY3Rpb24oWyQxXSwgW2Rlc3RydWN0b3JdKV0pCi0tbTRfZGVmaW5lKFtiNF9z
eW1ib2xfcHJpbnRlcl0sICAgIFtiNF9zeW1ib2xfYWN0aW9uKFskMV0sIFtwcmludGVyXSldKQot
LQotLQotLSMgYjRfc3ltYm9sX2FjdGlvbnMoS0lORCwgW1RZUEUgPSB5eXR5cGVdKQotLSMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRW1pdCB0aGUgc3ltYm9s
IGFjdGlvbnMgZm9yIEtJTkQgKCJwcmludGVyIiBvciAiZGVzdHJ1Y3RvciIpLgotLSMgRGlzcGF0
Y2ggb24gVFlQRS4KLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF9hY3Rpb25zXSwKLS1bbTRfcHVzaGRl
ZihbYjRfYWN0aW9uc19dLCBtNF9leHBhbmQoW2I0X3N5bWJvbF9mb3JlYWNoKFtiNF9zeW1ib2xf
JDFdKV0pKWRubAotLW00X2lmdmFsKG00X2RlZm4oW2I0X2FjdGlvbnNfXSksCi0tW3N3aXRjaCAo
bTRfZGVmYXVsdChbJDJdLCBbeXl0eXBlXSkpCi0tICAgIHsKLS1tNF9kZWZuKFtiNF9hY3Rpb25z
X10pW11kbmwKLS0gICAgICBkZWZhdWx0OgotLSAgICAgICAgYnJlYWs7Ci0tICAgIH1kbmwKLS1d
LAotLVtZWVVTRSAobTRfZGVmYXVsdChbJDJdLCBbeXl0eXBlXSkpO10pZG5sCi0tbTRfcG9wZGVm
KFtiNF9hY3Rpb25zX10pZG5sCi0tXSkKLS0KLS0jIF9iNF9zeW1ib2xfY2FzZShTWU1CT0wtTlVN
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJc3N1ZSBhICJjYXNlIE5VTSIg
Zm9yIFNZTUJPTC1OVU0uICBFbmRzIHdpdGggaXRzIEVPTCB0byBtYWtlIGl0Ci0tIyBlYXNpZXIg
dG8gdXNlIHdpdGggbTRfbWFwLCBidXQgdGhlbiwgdXNlIFtdZG5sIHRvIHN1cHByZXNzIHRoZSBs
YXN0Ci0tIyBvbmUuCi0tbTRfZGVmaW5lKFtfYjRfc3ltYm9sX2Nhc2VdLAotLVtjYXNlIGI0X3N5
bWJvbChbJDFdLCBbbnVtYmVyXSk6IGI0X3N5bWJvbF90YWdfY29tbWVudChbJDFdKV0pCi0tXSkK
LS0KLS0KLS0jIGI0X3N5bWJvbF9mb3JlYWNoKE1BQ1JPKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBJbnZva2UgTUFDUk8oU1lNQk9MLU5VTSkgZm9yIGVhY2ggU1lNQk9MLU5VTS4K
LS1tNF9kZWZpbmUoW2I0X3N5bWJvbF9mb3JlYWNoXSwKLS0gICAgICAgICAgW200X21hcChbJDFd
LCBtNF9kZWZuKFtiNF9zeW1ib2xfbnVtYmVyc10pKV0pCi0tCi0tIyBiNF9zeW1ib2xfbWFwKE1B
Q1JPKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiBhIGxpc3QgKHBvc3NpYmx5
IGVtcHR5IGVsZW1lbnRzKSBvZiBNQUNSTyBpbnZva2VkIGZvciBlYWNoCi0tIyBTWU1CT0wtTlVN
LgotLW00X2RlZmluZShbYjRfc3ltYm9sX21hcF0sCi0tW200X21hcF9hcmdzX3NlcChbJDEoXSwg
WyldLCBbLF0sIGI0X3N5bWJvbF9udW1iZXJzKV0pCi0tCi0tCi0tIyBiNF90b2tlbl92aXNpYmxl
X2lmKE5VTSwgSUYtVFJVRSwgSUYtRkFMU0UpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBXaGV0aGVyIE5VTSBkZW5vdGVzIGEgdG9rZW4gdGhhdCBo
YXMgYW4gZXhwb3J0ZWQgZGVmaW5pdGlvbiAoaS5lLiwKLS0jIHNob3dzIGluIGVudW0geXl0b2tl
bnR5cGUpLgotLW00X2RlZmluZShbYjRfdG9rZW5fdmlzaWJsZV9pZl0sCi0tW2I0X3N5bWJvbF9p
ZihbJDFdLCBbaXNfdG9rZW5dLAotLSAgICAgICAgICAgICAgW2I0X3N5bWJvbF9pZihbJDFdLCBb
aGFzX2lkXSwgWyQyXSwgWyQzXSldLAotLSAgICAgICAgICAgICAgWyQzXSldKQotLQotLSMgYjRf
dG9rZW5faGFzX2RlZmluaXRpb24oTlVNKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgMSBpZiBOVU0gaXMgdmlzaWJsZSwgbm90aGluZyBvdGhlcndpc2UuCi0tbTRfZGVmaW5l
KFtiNF90b2tlbl9oYXNfZGVmaW5pdGlvbl0sCi0tW2I0X3Rva2VuX3Zpc2libGVfaWYoWyQxXSwg
WzFdKV0pCi0tCi0tIyBiNF9hbnlfdG9rZW5fdmlzaWJsZV9pZihbSUYtVFJVRV0sIFtJRi1GQUxT
RV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBXaGV0aGVyIHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBuZWVkcyB0byBiZSBkZWZpbmVkLgotLW00
X2RlZmluZShbYjRfYW55X3Rva2VuX3Zpc2libGVfaWZdLAotLVttNF9pZnZhbChiNF9zeW1ib2xf
Zm9yZWFjaChbYjRfdG9rZW5faGFzX2RlZmluaXRpb25dKSwKLS0gICAgICAgICAgWyQxXSwgWyQy
XSldKQotLQotLQotLSMgYjRfdG9rZW5fZm9ybWF0KEZPUk1BVCwgTlVNKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfdG9rZW5fZm9ybWF0XSwKLS1bYjRf
dG9rZW5fdmlzaWJsZV9pZihbJDJdLAotLVttNF9xdW90ZShtNF9mb3JtYXQoWyQxXSwKLS0gICAg
ICAgICAgICAgICAgICAgICBbYjRfc3ltYm9sKFskMl0sIFtpZF0pXSwKLS0gICAgICAgICAgICAg
ICAgICAgICBbYjRfc3ltYm9sKFskMl0sIFt1c2VyX251bWJlcl0pXSkpXSldKQotLQotLQotLSMj
IC0tLS0tLS0gIyMKLS0jIyBUeXBlcy4gICMjCi0tIyMgLS0tLS0tLSAjIwotLQotLSMgX2I0X3R5
cGVfYWN0aW9uKE5VTVMpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJ1biBhY3Rpb25z
IGZvciB0aGUgc3ltYm9sIE5VTVMgdGhhdCBhbGwgaGF2ZSB0aGUgc2FtZSB0eXBlLW5hbWUuCi0t
IyBTa2lwIE5VTVMgdGhhdCBoYXZlIG5vIHR5cGUtbmFtZS4KLS0jCi0tIyBUbyBzcGVjaWZ5IHRo
ZSBhY3Rpb24gdG8gcnVuLCBkZWZpbmUgYjRfZG9sbGFyX2RvbGxhcihTWU1CT0wtTlVNLAotLSMg
VEFHLCBUWVBFKS4KLS1tNF9kZWZpbmUoW19iNF90eXBlX2FjdGlvbl0sCi0tW2I0X3N5bWJvbF9p
ZihbJDFdLCBbaGFzX3R5cGVdLAotLVttNF9tYXAoWyAgICAgIF9iNF9zeW1ib2xfY2FzZV0sIFsk
QF0pW11kbmwKLS0gICAgICAgIGI0X2RvbGxhcl9kb2xsYXIoW2I0X3N5bWJvbChbJDFdLCBbbnVt
YmVyXSldLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbYjRfc3ltYm9sKFskMV0sIFt0YWdd
KV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFtiNF9zeW1ib2woWyQxXSwgW3R5cGVdKV0p
OwotLSAgICAgICAgYnJlYWs7Ci0tCi0tXSldKQotLQotLSMgYjRfdHlwZV9mb3JlYWNoKE1BQ1JP
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSW52b2tlIE1BQ1JPKFNZTUJPTC1OVU1T
KSBmb3IgZWFjaCBzZXQgb2YgU1lNQk9MLU5VTVMgZm9yIGVhY2ggdHlwZSBzZXQuCi0tbTRfZGVm
aW5lKFtiNF90eXBlX2ZvcmVhY2hdLAotLSAgICAgICAgICBbbTRfbWFwKFskMV0sIG00X2RlZm4o
W2I0X3R5cGVfbmFtZXNdKSldKQotLQotLQotLQotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgU3lu
Y2xpbmVzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLSAjIwotLQotLSMgYjRfYmFzZW5hbWUoTkFNRSkK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTaW1pbGFyIHRvIFBPU0lYIGJhc2VuYW1lOyB0aGUg
ZGlmZmVyZW5jZXMgZG9uJ3QgbWF0dGVyIGhlcmUuCi0tIyBCZXdhcmUgdGhhdCBOQU1FIGlzIG5v
dCBldmFsdWF0ZWQuCi0tbTRfZGVmaW5lKFtiNF9iYXNlbmFtZV0sCi0tW200X2JwYXRzdWJzdChb
JDFdLCBbXi4qL1woW14vXStcKS8qJF0sIFtcMV0pXSkKLS0KLS0KLS0jIGI0X3N5bmNsaW5lKExJ
TkUsIEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfc3lu
Y2xpbmVdLAotLVtiNF9mbGFnX2lmKFtzeW5jbGluZXNdLAotLVtiNF9zeW5jX3N0YXJ0KFskMV0s
IFskMl0pIGI0X3N5bmNfZW5kKFtfX2xpbmVfX10sCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW2I0X2Jhc2VuYW1lKG00X3F1b3RlKF9fZmlsZV9fKSldKVtdZG5sCi0t
XSldKQotLQotLSMgYjRfc3luY19zdGFydChMSU5FLCBGSUxFKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIFN5bmNsaW5lIGZvciB0aGUgbmV3IHBsYWNlLiAgVHlwaWNhbGx5IGEgZGly
ZWN0aXZlIGZvciB0aGUgY29tcGlsZXIuCi0tbTRfZGVmaW5lKFtiNF9zeW5jX3N0YXJ0XSwgW2I0
X2NvbW1lbnQoWyQyOiQxXSldKQotLQotLSMgYjRfc3luY19lbmQoTElORSwgRklMRSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTeW5jbGluZSBmb3IgdGhlIGN1cnJlbnQgcGxhY2Us
IHdoaWNoIGVuZHMuICBUeXBpY2FsbHkgYSBjb21tZW50Ci0tIyBsZWZ0IGZvciB0aGUgcmVhZGVy
LgotLW00X2RlZmluZShbYjRfc3luY19lbmRdLCAgIFtiNF9jb21tZW50KFskMjokMV0pXSkKLS0K
LS0KLS0jIGI0X3VzZXJfY29kZShVU0VSLUNPREUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgRW1pdCBjb2RlIGZyb20gdGhlIHVzZXIsIGVuZGluZyBpdCB3aXRoIHN5bmNsaW5lcy4K
LS1tNF9kZWZpbmUoW2I0X3VzZXJfY29kZV0sCi0tWyQxCi0tYjRfc3luY2xpbmUoW0BvbGluZUBd
LCBbQG9maWxlQF0pXSkKLS0KLS0KLS0jIGI0X2RlZmluZV91c2VyX2NvZGUoTUFDUk8sIENPTU1F
TlQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRnJvbSBiNF9N
QUNSTywgaWYgZGVmaW5lZCwgYnVpbGQgYjRfdXNlcl9NQUNSTyB0aGF0IGluY2x1ZGVzIHRoZSBz
eW5jbGluZXMuCi0tbTRfZGVmaW5lKFtiNF9kZWZpbmVfdXNlcl9jb2RlXSwKLS1bbTRfZGVmaW5l
KFtiNF91c2VyXyQxXSwKLS0gICAgICAgICAgIFttNF9pZmRlZihbYjRfJDFdLAotLSAgICAgICAg
ICAgICAgICAgICAgIFttNF9pZnZhbChbJDJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbYjRfY29tbWVudChbJDJdKQotLV0pYjRfdXNlcl9jb2RlKFtiNF8kMV0pXSldKV0pCi0t
Ci0tIyBiNF91c2VyX2FjdGlvbnMKLS0jIGI0X3VzZXJfaW5pdGlhbF9hY3Rpb24KLS0jIGI0X3Vz
ZXJfcG9zdF9wcm9sb2d1ZQotLSMgYjRfdXNlcl9wcmVfcHJvbG9ndWUKLS0jIGI0X3VzZXJfdW5p
b25fbWVtYmVycwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTWFjcm9zIHRoYXQgaXNz
dWUgdXNlciBjb2RlLCBlbmRpbmcgd2l0aCBzeW5jbGluZXMuCi0tYjRfZGVmaW5lX3VzZXJfY29k
ZShbYWN0aW9uc10pCi0tYjRfZGVmaW5lX3VzZXJfY29kZShbaW5pdGlhbF9hY3Rpb25dLCBbVXNl
ciBpbml0aWFsaXphdGlvbiBjb2RlLl0pCi0tYjRfZGVmaW5lX3VzZXJfY29kZShbcG9zdF9wcm9s
b2d1ZV0sIFtTZWNvbmQgcGFydCBvZiB1c2VyIHByb2xvZ3VlLl0pCi0tYjRfZGVmaW5lX3VzZXJf
Y29kZShbcHJlX3Byb2xvZ3VlXSwgW0ZpcnN0IHBhcnQgb2YgdXNlciBwcm9sb2d1ZS5dKQotLWI0
X2RlZmluZV91c2VyX2NvZGUoW3VuaW9uX21lbWJlcnNdKQotLQotLQotLSMgYjRfY2hlY2tfdXNl
cl9uYW1lcyhXSEFULCBVU0VSLUxJU1QsIEJJU09OLU5BTUVTUEFDRSkKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBDb21wbGFpbiBp
ZiBhbnkgbmFtZSBvZiB0eXBlIFdIQVQgaXMgdXNlZCBieSB0aGUgdXNlciAoYXMgcmVjb3JkZWQg
aW4KLS0jIFVTRVItTElTVCkgYnV0IGlzIG5vdCB1c2VkIGJ5IEJpc29uIChhcyByZWNvcmRlZCBi
eSBtYWNyb3MgaW4gdGhlCi0tIyBuYW1lc3BhY2UgQklTT04tTkFNRVNQQUNFKS4KLS0jCi0tIyBV
U0VSLUxJU1QgbXVzdCBleHBhbmQgdG8gYSBsaXN0IHNwZWNpZnlpbmcgYWxsIHVzZXIgb2NjdXJy
ZW5jZXMgb2YgYWxsIG5hbWVzCi0tIyBvZiB0eXBlIFdIQVQuICAgRWFjaCBpdGVtIGluIHRoZSBs
aXN0IG11c3QgYmUgYSB0cmlwbGV0IHNwZWNpZnlpbmcgb25lCi0tIyBvY2N1cnJlbmNlOiBuYW1l
LCBzdGFydCBib3VuZGFyeSwgYW5kIGVuZCBib3VuZGFyeS4gIEVtcHR5IHN0cmluZyBuYW1lcyBh
cmUKLS0jIGZpbmUuICBBbiBlbXB0eSBsaXN0IGlzIGZpbmUuCi0tIwotLSMgRm9yIGV4YW1wbGUs
IHRvIGRlZmluZSBiNF9mb29fdXNlcl9uYW1lcyB0byBiZSB1c2VkIGZvciBVU0VSLUxJU1Qgd2l0
aCB0aHJlZQotLSMgbmFtZSBvY2N1cnJlbmNlcyBhbmQgd2l0aCBjb3JyZWN0IHF1b3Rpbmc6Ci0t
IwotLSMgICBtNF9kZWZpbmUoW2I0X2Zvb191c2VyX25hbWVzXSwKLS0jICAgICAgICAgICAgIFtb
W1tbW2Jhcl1dLCBbW3BhcnNlci55OjEuN11dLCBbW3BhcnNlci55OjEuMTZdXV1dLAotLSMgICAg
ICAgICAgICAgICBbW1tbYmFyXV0sIFtbcGFyc2VyLnk6NS43XV0sIFtbcGFyc2VyLnk6NS4xNl1d
XV0sCi0tIyAgICAgICAgICAgICAgIFtbW1tiYXpdXSwgW1twYXJzZXIueTo4LjddXSwgW1twYXJz
ZXIueTo4LjE2XV1dXV1dKQotLSMKLS0jIFRoZSBtYWNybyBCSVNPTi1OQU1FU1BBQ0UoYmFyKSBt
dXN0IGJlIGRlZmluZWQgaWZmIHRoZSBuYW1lIGJhciBvZiB0eXBlIFdIQVQKLS0jIGlzIHVzZWQg
YnkgQmlzb24gKGluIHRoZSBmcm9udC1lbmQgb3IgaW4gdGhlIHNrZWxldG9uKS4gIEVtcHR5IHN0
cmluZyBuYW1lcwotLSMgYXJlIGZpbmUsIGJ1dCBpdCB3b3VsZCBiZSB1Z2x5IGZvciBCaXNvbiB0
byBhY3R1YWxseSB1c2Ugb25lLgotLSMKLS0jIEZvciBleGFtcGxlLCB0byB1c2UgYjRfZm9vX2Jp
c29uX25hbWVzIGZvciBCSVNPTi1OQU1FU1BBQ0UgYW5kIGRlZmluZSB0aGF0Ci0tIyB0aGUgbmFt
ZXMgYmFyIGFuZCBiYXogYXJlIHVzZWQgYnkgQmlzb246Ci0tIwotLSMgICBtNF9kZWZpbmUoW2I0
X2Zvb19iaXNvbl9uYW1lcyhiYXIpXSkKLS0jICAgbTRfZGVmaW5lKFtiNF9mb29fYmlzb25fbmFt
ZXMoYmF6KV0pCi0tIwotLSMgVG8gaW52b2tlIGI0X2NoZWNrX3VzZXJfbmFtZXMgd2l0aCBUWVBF
IGZvbywgd2l0aCBVU0VSLUxJU1QKLS0jIGI0X2Zvb191c2VyX25hbWVzLCB3aXRoIEJJU09OLU5B
TUVTUEFDRSBiNF9mb29fYmlzb25fbmFtZXMsIGFuZCB3aXRoIGNvcnJlY3QKLS0jIHF1b3Rpbmc6
Ci0tIwotLSMgICBiNF9jaGVja191c2VyX25hbWVzKFtbZm9vXV0sIFtiNF9mb29fdXNlcl9uYW1l
c10sCi0tIyAgICAgICAgICAgICAgICAgICAgICAgW1tiNF9mb29fYmlzb25fbmFtZXNdXSkKLS1t
NF9kZWZpbmUoW2I0X2NoZWNrX3VzZXJfbmFtZXNdLAotLVttNF9mb3JlYWNoKFtiNF9vY2N1cnJl
bmNlXSwgJDIsCi0tW200X3B1c2hkZWYoW2I0X29jY3VycmVuY2VdLCBiNF9vY2N1cnJlbmNlKWRu
bAotLW00X3B1c2hkZWYoW2I0X3VzZXJfbmFtZV0sIG00X2NhcihiNF9vY2N1cnJlbmNlKSlkbmwK
LS1tNF9wdXNoZGVmKFtiNF9zdGFydF0sIG00X2NhcihtNF9zaGlmdChiNF9vY2N1cnJlbmNlKSkp
ZG5sCi0tbTRfcHVzaGRlZihbYjRfZW5kXSwgbTRfc2hpZnQobTRfc2hpZnQoYjRfb2NjdXJyZW5j
ZSkpKWRubAotLW00X2lmbmRlZigkM1soXW00X3F1b3RlKGI0X3VzZXJfbmFtZSlbKV0sCi0tICAg
ICAgICAgIFtiNF9jb21wbGFpbl9hdChbYjRfc3RhcnRdLCBbYjRfZW5kXSwKLS0gICAgICAgICAg
ICAgICAgICAgICAgICAgIFtbJXMgJyVzJyBpcyBub3QgdXNlZF1dLAotLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyQxXSwgW2I0X3VzZXJfbmFtZV0pXSlbXWRubAotLW00X3BvcGRlZihbYjRf
b2NjdXJyZW5jZV0pZG5sCi0tbTRfcG9wZGVmKFtiNF91c2VyX25hbWVdKWRubAotLW00X3BvcGRl
ZihbYjRfc3RhcnRdKWRubAotLW00X3BvcGRlZihbYjRfZW5kXSlkbmwKLS1dKV0pCi0tCi0tCi0t
Ci0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgYjRfcGVyY2VudF9kZWZpbmVfKi4g
ICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0tIyBiNF9wZXJjZW50X2Rl
ZmluZV91c2UoVkFSSUFCTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBEZWNsYXJlIHRoYXQgVkFSSUFCTEUgd2FzIHVzZWQuCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50
X2RlZmluZV91c2VdLAotLVttNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2Jpc29uX3Zhcmlh
YmxlcyhdJDFbKV0pZG5sCi0tXSkKLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2dldChWQVJJQUJM
RSwgW0RFRkFVTFRdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBNaW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfZ2V0IGluIC4uL3NyYy9tdXNjbGUt
dGFiLmguICBUaGF0IGlzLCBpZgotLSMgdGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMg
ZGVmaW5lZCwgZW1pdCBpdHMgdmFsdWUuICBDb250cmFyeQotLSMgdG8gaXRzIEMgY291bnRlcnBh
cnQsIHJldHVybiBERUZBVUxUIG90aGVyd2lzZS4gIEFsc28sIHJlY29yZAotLSMgQmlzb24ncyB1
c2FnZSBvZiBWQVJJQUJMRSBieSBkZWZpbmluZwotLSMgYjRfcGVyY2VudF9kZWZpbmVfYmlzb25f
dmFyaWFibGVzKFZBUklBQkxFKS4KLS0jCi0tIyBGb3IgZXhhbXBsZToKLS0jCi0tIyAgIGI0X3Bl
cmNlbnRfZGVmaW5lX2dldChbW2Zvb11dKQotLW00X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVf
Z2V0XSwKLS1bYjRfcGVyY2VudF9kZWZpbmVfdXNlKFskMV0pZG5sCi0tX2I0X3BlcmNlbnRfZGVm
aW5lX2lmZGVmKFskMV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFttNF9pbmRpcihbYjRf
cGVyY2VudF9kZWZpbmUoXSQxWyldKV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFskMl0p
XSkKLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoVkFSSUFCTEUpCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVm
aW5lX2dldF9sb2MgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5LiAgVGhhdCBpcywKLS0j
IGlmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlzIHVuZGVmaW5lZCwgY29tcGxhaW4g
ZmF0YWxseSBzaW5jZSB0aGF0J3MKLS0jIGEgQmlzb24gb3Igc2tlbGV0b24gZXJyb3IuICBPdGhl
cndpc2UsIHJldHVybiBpdHMgZGVmaW5pdGlvbiBsb2NhdGlvbiBpbiBhCi0tIyBmb3JtIGFwcHJv
cHJpYXRlIGZvciB0aGUgZmlyc3QgdHdvIGFyZ3VtZW50cyBvZiBiNF93YXJuX2F0LCBiNF9jb21w
bGFpbl9hdCwgb3IKLS0jIGI0X2ZhdGFsX2F0LiAgRG9uJ3QgcmVjb3JkIHRoaXMgYXMgYSBCaXNv
biB1c2FnZSBvZiBWQVJJQUJMRSBhcyB0aGVyZSdzIG5vCi0tIyByZWFzb24gdG8gc3VzcGVjdCB0
aGF0IHRoZSB1c2VyLXN1cHBsaWVkIHZhbHVlIGhhcyB5ZXQgaW5mbHVlbmNlZCB0aGUgb3V0cHV0
LgotLSMKLS0jIEZvciBleGFtcGxlOgotLSMKLS0jICAgYjRfY29tcGxhaW5fYXQoYjRfcGVyY2Vu
dF9kZWZpbmVfZ2V0X2xvYyhbW2Zvb11dKSwgW1tpbnZhbGlkIGZvb11dKQotLW00X2RlZmluZShb
YjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvY10sCi0tW200X2lmZGVmKFtiNF9wZXJjZW50X2RlZmlu
ZV9sb2MoXSQxWyldLAotLSAgICAgICAgICBbbTRfcHVzaGRlZihbYjRfbG9jXSwgbTRfaW5kaXIo
W2I0X3BlcmNlbnRfZGVmaW5lX2xvYyhdJDFbKV0pKWRubAotLWI0X2xvY1tdZG5sCi0tbTRfcG9w
ZGVmKFtiNF9sb2NdKV0sCi0tICAgICAgICAgIFtiNF9mYXRhbChbWyQwOiB1bmRlZmluZWQgJSVk
ZWZpbmUgdmFyaWFibGUgJyVzJ11dLCBbJDFdKV0pXSkKLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5l
X2dldF9raW5kKFZBUklBQkxFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBHZXQgdGhlIGtpbmQgKGNvZGUsIGtleXdvcmQsIHN0cmluZykgb2YgVkFSSUFCTEUs
IGkuZS4sIGhvdyBpdHMKLS0jIHZhbHVlIHdhcyBkZWZpbmVkIChicmFjZXMsIG5vdCBkZWxpbWl0
ZXJzLCBxdW90ZXMpLgotLSMKLS0jIElmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlz
IHVuZGVmaW5lZCwgY29tcGxhaW4gZmF0YWxseQotLSMgc2luY2UgdGhhdCdzIGEgQmlzb24gb3Ig
c2tlbGV0b24gZXJyb3IuICBEb24ndCByZWNvcmQgdGhpcyBhcyBhCi0tIyBCaXNvbiB1c2FnZSBv
ZiBWQVJJQUJMRSBhcyB0aGVyZSdzIG5vIHJlYXNvbiB0byBzdXNwZWN0IHRoYXQgdGhlCi0tIyB1
c2VyLXN1cHBsaWVkIHZhbHVlIGhhcyB5ZXQgaW5mbHVlbmNlZCB0aGUgb3V0cHV0LgotLW00X2Rl
ZmluZShbYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2tpbmRdLAotLVttNF9pZmRlZihbYjRfcGVyY2Vu
dF9kZWZpbmVfa2luZChdJDFbKV0sCi0tICAgICAgICAgIFttNF9pbmRpcihbYjRfcGVyY2VudF9k
ZWZpbmVfa2luZChdJDFbKV0pXSwKLS0gICAgICAgICAgW2I0X2ZhdGFsKFtbJDA6IHVuZGVmaW5l
ZCAlJWRlZmluZSB2YXJpYWJsZSAnJXMnXV0sIFskMV0pXSldKQotLQotLSMgYjRfcGVyY2VudF9k
ZWZpbmVfZ2V0X3N5bmNsaW5lKFZBUklBQkxFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5lX2dldF9zeW5j
bGluZSBpbiAuLi9zcmMvbXVzY2xlLXRhYi5oIGV4YWN0bHkuCi0tIyBUaGF0IGlzLCBpZiB0aGUg
JWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyB1bmRlZmluZWQsIGNvbXBsYWluIGZhdGFsbHkK
LS0jIHNpbmNlIHRoYXQncyBhIEJpc29uIG9yIHNrZWxldG9uIGVycm9yLiAgT3RoZXJ3aXNlLCBy
ZXR1cm4gaXRzIGRlZmluaXRpb24KLS0jIGxvY2F0aW9uIGFzIGEgYjRfc3luY2xpbmUgaW52b2Nh
dGlvbi4gIERvbid0IHJlY29yZCB0aGlzIGFzIGEgQmlzb24gdXNhZ2Ugb2YKLS0jIFZBUklBQkxF
IGFzIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHN1c3BlY3QgdGhhdCB0aGUgdXNlci1zdXBwbGllZCB2
YWx1ZSBoYXMgeWV0Ci0tIyBpbmZsdWVuY2VkIHRoZSBvdXRwdXQuCi0tIwotLSMgRm9yIGV4YW1w
bGU6Ci0tIwotLSMgICBiNF9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmUoW1tmb29dXSkKLS1t
NF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2dldF9zeW5jbGluZV0sCi0tW200X2lmZGVmKFti
NF9wZXJjZW50X2RlZmluZV9zeW5jbGluZShdJDFbKV0sCi0tICAgICAgICAgIFttNF9pbmRpcihb
YjRfcGVyY2VudF9kZWZpbmVfc3luY2xpbmUoXSQxWyldKV0sCi0tICAgICAgICAgIFtiNF9mYXRh
bChbWyQwOiB1bmRlZmluZWQgJSVkZWZpbmUgdmFyaWFibGUgJyVzJ11dLCBbJDFdKV0pXSkKLS0K
LS0jIF9iNF9wZXJjZW50X2RlZmluZV9pZmRlZihWQVJJQUJMRSwgSUYtVFJVRSwgW0lGLUZBTFNF
XSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgSWYgdGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgZGVmaW5lZCwgZXhw
YW5kIElGLVRSVUUsIGVsc2UgZXhwYW5kCi0tIyBJRi1GQUxTRS4gIERvbid0IHJlY29yZCB1c2Fn
ZSBvZiBWQVJJQUJMRS4KLS0jCi0tIyBGb3IgZXhhbXBsZToKLS0jCi0tIyAgIF9iNF9wZXJjZW50
X2RlZmluZV9pZmRlZihbW2Zvb11dLCBbW2l0J3MgZGVmaW5lZF1dLCBbW2l0J3MgdW5kZWZpbmVk
XV0pCi0tbTRfZGVmaW5lKFtfYjRfcGVyY2VudF9kZWZpbmVfaWZkZWZdLAotLVttNF9pZmRlZihb
YjRfcGVyY2VudF9kZWZpbmUoXSQxWyldLAotLSAgICAgICAgICBbJDJdLAotLSAgICAgICAgICBb
JDNdKV0pCi0tCi0tIyBiNF9wZXJjZW50X2RlZmluZV9pZmRlZihWQVJJQUJMRSwgSUYtVFJVRSwg
W0lGLUZBTFNFXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5lX2lmZGVmIGluIC4u
L3NyYy9tdXNjbGUtdGFiLmggZXhhY3RseS4gIFRoYXQgaXMsCi0tIyBpZiB0aGUgJWRlZmluZSB2
YXJpYWJsZSBWQVJJQUJMRSBpcyBkZWZpbmVkLCBleHBhbmQgSUYtVFJVRSwgZWxzZSBleHBhbmQK
LS0jIElGLUZBTFNFLiAgQWxzbywgcmVjb3JkIEJpc29uJ3MgdXNhZ2Ugb2YgVkFSSUFCTEUgYnkg
ZGVmaW5pbmcKLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2Jpc29uX3ZhcmlhYmxlcyhWQVJJQUJMRSku
Ci0tIwotLSMgRm9yIGV4YW1wbGU6Ci0tIwotLSMgICBiNF9wZXJjZW50X2RlZmluZV9pZmRlZihb
W2Zvb11dLCBbW2l0J3MgZGVmaW5lZF1dLCBbW2l0J3MgdW5kZWZpbmVkXV0pCi0tbTRfZGVmaW5l
KFtiNF9wZXJjZW50X2RlZmluZV9pZmRlZl0sCi0tW19iNF9wZXJjZW50X2RlZmluZV9pZmRlZihb
JDFdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbYjRfcGVyY2VudF9kZWZpbmVfdXNlKFsk
MV0pJDJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbJDNdKV0pCi0tCi0tCi0tIyBiNF9w
ZXJjZW50X2RlZmluZV9jaGVja19maWxlX2NvbXBsYWluKFZBUklBQkxFKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFdhcm4gYWJvdXQgJWRl
ZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBoYXZpbmcgYW4gaW5jb3JyZWN0Ci0tIyB2YWx1ZS4KLS1t
NF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2ZpbGVfY29tcGxhaW5dLAotLVtiNF9j
b21wbGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAotLSAgICAgICAgICAg
ICAgICBbWyUlZGVmaW5lIHZhcmlhYmxlICclcycgcmVxdWlyZXMgJ25vbmUnIG9yICciLi4uIicg
dmFsdWVzXV0sCi0tICAgICAgICAgICAgICAgIFskMV0pXSkKLS0KLS0KLS0jIGI0X3BlcmNlbnRf
ZGVmaW5lX2NoZWNrX2ZpbGUoTUFDUk8sIFZBUklBQkxFLCBERUZBVUxUKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiB0aGUg
JWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRToKLS0jIC0gaXMgdW5kZWZpbmVkLCB0aGVuIGlmIERF
RkFVTFQgaXMgbm9uLWVtcHR5LCBkZWZpbmUgTUFDUk8gdG8gREVGQVVMVAotLSMgLSBpcyBhIHN0
cmluZywgZGVmaW5lIE1BQ1JPIHRvIGl0cyB2YWx1ZQotLSMgLSBpcyB0aGUga2V5d29yZCAnbm9u
ZScsIGRvIG5vdGhpbmcKLS0jIC0gb3RoZXJ3aXNlLCB3YXJuIGFib3V0IHRoZSBpbmNvcnJlY3Qg
dmFsdWUuCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9jaGVja19maWxlXSwKLS1bYjRf
cGVyY2VudF9kZWZpbmVfaWZkZWYoWyQyXSwKLS0gIFttNF9jYXNlKGI0X3BlcmNlbnRfZGVmaW5l
X2dldF9raW5kKFskMl0pLAotLSAgICBbc3RyaW5nXSwKLS0gICAgICAgICBbbTRfZGVmaW5lKFsk
MV0sIGI0X3BlcmNlbnRfZGVmaW5lX2dldChbJDJdKSldLAotLSAgICBba2V5d29yZF0sCi0tICAg
ICAgICAgW200X2lmKGI0X3BlcmNlbnRfZGVmaW5lX2dldChbJDJdKSwgW25vbmVdLCBbXSwKLS0g
ICAgICAgICAgICAgICAgW2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2ZpbGVfY29tcGxhaW4oWyQy
XSldKV0sCi0tICAgIFtiNF9wZXJjZW50X2RlZmluZV9jaGVja19maWxlX2NvbXBsYWluKFskMl0p
XSkKLS0gICBdLAotLSAgIFttNF9pZnZhbChbJDNdLAotLSAgICAgICAgICAgICBbbTRfZGVmaW5l
KFskMV0sIFskM10pXSldKQotLV0pCi0tCi0tCi0tCi0tIyMgLS0tLS0tLS0tICMjCi0tIyMgT3B0
aW9ucy4gICMjCi0tIyMgLS0tLS0tLS0tICMjCi0tCi0tCi0tIyBiNF9wZXJjZW50X2RlZmluZV9m
bGFnX2lmKFZBUklBQkxFLCBJRi1UUlVFLCBbSUYtRkFMU0VdKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIE1pbWljIG11c2Ns
ZV9wZXJjZW50X2RlZmluZV9mbGFnX2lmIGluIC4uL3NyYy9tdXNjbGUtdGFiLmggZXhhY3RseS4g
IFRoYXQgaXMsCi0tIyBpZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyBkZWZpbmVk
IHRvICIiIG9yICJ0cnVlIiwgZXhwYW5kIElGLVRSVUUuCi0tIyBJZiBpdCBpcyBkZWZpbmVkIHRv
ICJmYWxzZSIsIGV4cGFuZCBJRi1GQUxTRS4gIENvbXBsYWluIGlmIGl0IGlzIHVuZGVmaW5lZAot
LSMgKGEgQmlzb24gb3Igc2tlbGV0b24gZXJyb3Igc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgc2hv
dWxkIGhhdmUgYmVlbiBzZXQKLS0jIGFscmVhZHkpIG9yIGRlZmluZWQgdG8gYW55IG90aGVyIHZh
bHVlIChwb3NzaWJseSBhIHVzZXIgZXJyb3IpLiAgQWxzbywgcmVjb3JkCi0tIyBCaXNvbidzIHVz
YWdlIG9mIFZBUklBQkxFIGJ5IGRlZmluaW5nCi0tIyBiNF9wZXJjZW50X2RlZmluZV9iaXNvbl92
YXJpYWJsZXMoVkFSSUFCTEUpLgotLSMKLS0jIEZvciBleGFtcGxlOgotLSMKLS0jICAgYjRfcGVy
Y2VudF9kZWZpbmVfZmxhZ19pZihbW2Zvb11dLCBbW2l0J3MgdHJ1ZV1dLCBbW2l0J3MgZmFsc2Vd
XSkKLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2ZsYWdfaWZdLAotLVtiNF9wZXJjZW50
X2RlZmluZV9pZmRlZihbJDFdLAotLSAgW200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFsk
MV0pLAotLSAgICAgICAgICAgW10sIFskMl0sIFt0cnVlXSwgWyQyXSwgW2ZhbHNlXSwgWyQzXSwK
LS0gICAgICAgICAgIFttNF9leHBhbmRfb25jZShbYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9k
ZWZpbmVfZ2V0X2xvYyhbJDFdKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1tpbnZhbGlkIHZhbHVlIGZvciAlJWRlZmluZSBCb29sZWFuIHZhcmlhYmxlICcl
cyddXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyQxXSld
LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbYjRfcGVyY2VudF9kZWZpbmVfZmxhZ19p
ZigkMSldXSldKV0sCi0tICBbYjRfZmF0YWwoW1skMDogdW5kZWZpbmVkICUlZGVmaW5lIHZhcmlh
YmxlICclcyddXSwgWyQxXSldKV0pCi0tCi0tCi0tIyBiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0
KFZBUklBQkxFLCBERUZBVUxULCBbS0lORCA9IGtleXdvcmRdKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIE1pbWlj
IG11c2NsZV9wZXJjZW50X2RlZmluZV9kZWZhdWx0IGluIC4uL3NyYy9tdXNjbGUtdGFiLmggZXhh
Y3RseS4gIFRoYXQgaXMsCi0tIyBpZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyB1
bmRlZmluZWQsIHNldCBpdHMgdmFsdWUgdG8gREVGQVVMVC4KLS0jIERvbid0IHJlY29yZCB0aGlz
IGFzIGEgQmlzb24gdXNhZ2Ugb2YgVkFSSUFCTEUgYXMgdGhlcmUncyBubyByZWFzb24gdG8KLS0j
IHN1c3BlY3QgdGhhdCB0aGUgdmFsdWUgaGFzIHlldCBpbmZsdWVuY2VkIHRoZSBvdXRwdXQuCi0t
IwotLSMgRm9yIGV4YW1wbGU6Ci0tIwotLSMgICBiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtb
Zm9vXV0sIFtbZGVmYXVsdCB2YWx1ZV1dKQotLW00X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVf
ZGVmYXVsdF0sCi0tW19iNF9wZXJjZW50X2RlZmluZV9pZmRlZihbJDFdLCBbXSwKLS0gICAgICAg
ICAgIFttNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lKF0kMVspXSwgWyQyXSlkbmwKLS0gICAg
ICAgICAgICBtNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2tpbmQoXSQxWyldLAotLSAgICAg
ICAgICAgICAgICAgICAgICBbbTRfZGVmYXVsdChbJDNdLCBba2V5d29yZF0pXSlkbmwKLS0gICAg
ICAgICAgICBtNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2xvYyhdJDFbKV0sCi0tICAgICAg
ICAgICAgICAgICAgICAgIFtbW1s8c2tlbGV0b24gZGVmYXVsdCB2YWx1ZT46LTEuLTFdXSwKLS0g
ICAgICAgICAgICAgICAgICAgICAgICBbWzxza2VsZXRvbiBkZWZhdWx0IHZhbHVlPjotMS4tMV1d
XV0pZG5sCi0tICAgICAgICAgICAgbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9zeW5jbGlu
ZShdJDFbKV0sIFtbXV0pXSldKQotLQotLQotLSMgYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5l
KE5BTUUsIFtWQVJJQUJMRSA9IE5BTUVdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVmaW5lIGI0X05BTUVfaWYgdGhhdCBleGVj
dXRlcyBpdHMgJDEgb3IgJDIgZGVwZW5kaW5nIHdoZXRoZXIKLS0jIFZBUklBQkxFIHdhcyAlZGVm
aW5lZC4gIFRoZSBjaGFyYWN0ZXJzICcuJyBhbmQgYC0nIGluIFZBUklBQkxFIGFyZSBtYXBwZWQK
LS0jIHRvICdfJy4KLS1tNF9kZWZpbmUoW19iNF9wZXJjZW50X2RlZmluZV9pZl9kZWZpbmVdLAot
LVttNF9kZWZpbmUobTRfYnBhdHN1YnN0KFtiNF8kMV9pZl0sIFtbLS5dXSwgW19dKSwKLS0gICAg
ICAgICAgIFtiNF9wZXJjZW50X2RlZmluZV9mbGFnX2lmKG00X2RlZmF1bHQoWyQyXSwgWyQxXSks
Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJDNdLCBbJDRdKV0pXSkK
LS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZV0sCi0tW2I0X3BlcmNlbnRf
ZGVmaW5lX2RlZmF1bHQoW200X2RlZmF1bHQoWyQyXSwgWyQxXSldLCBbW2ZhbHNlXV0pCi0tX2I0
X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZShbJDFdLCBbJDJdLCAkWzFdLCAkWzJdKV0pCi0tCi0t
Ci0tIyBiNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kKFZBUklBQkxFLCBLSU5ELCBbRElBR05P
U1RJQyA9IGNvbXBsYWluXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfcGVyY2Vu
dF9kZWZpbmVfY2hlY2tfa2luZF0sCi0tW19iNF9wZXJjZW50X2RlZmluZV9pZmRlZihbJDFdLAot
LSAgW200X2lmKGI0X3BlcmNlbnRfZGVmaW5lX2dldF9raW5kKFskMV0pLCBbJDJdLCBbXSwKLS0g
ICAgW2I0X2Vycm9yKFttNF9kZWZhdWx0KFskM10sIFtjb21wbGFpbl0pXSwKLS0gICAgICAgICAg
ICAgIGI0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoWyQxXSksCi0tICAgICAgICAgICAgICBbbTRf
Y2FzZShbJDJdLAotLSAgICAgICAgICAgICAgICAgW2NvZGVdLCAgICBbWyUlZGVmaW5lIHZhcmlh
YmxlICclcycgcmVxdWlyZXMgJ3suLi59JyB2YWx1ZXNdXSwKLS0gICAgICAgICAgICAgICAgIFtr
ZXl3b3JkXSwgW1slJWRlZmluZSB2YXJpYWJsZSAnJXMnIHJlcXVpcmVzIGtleXdvcmQgdmFsdWVz
XV0sCi0tICAgICAgICAgICAgICAgICBbc3RyaW5nXSwgIFtbJSVkZWZpbmUgdmFyaWFibGUgJyVz
JyByZXF1aXJlcyAnIi4uLiInIHZhbHVlc11dKV0sCi0tICAgICAgICAgICAgICBbJDFdKV0pXSlk
bmwKLS1dKQotLQotLQotLSMgYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVzKFZBTFVFUykK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBNaW1pYyBtdXNj
bGVfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVzIGluIC4uL3NyYy9tdXNjbGUtdGFiLmggZXhh
Y3RseQotLSMgZXhjZXB0IHRoYXQgdGhlIFZBTFVFUyBzdHJ1Y3R1cmUgaXMgbW9yZSBhcHByb3By
aWF0ZSBmb3IgTTQuICBUaGF0IGlzLCBWQUxVRVMKLS0jIGlzIGEgbGlzdCBvZiBzdWJsaXN0cyBv
ZiBzdHJpbmdzLiAgRm9yIGVhY2ggc3VibGlzdCwgdGhlIGZpcnN0IHN0cmluZyBpcyB0aGUKLS0j
IG5hbWUgb2YgYSAlZGVmaW5lIHZhcmlhYmxlLCBhbmQgYWxsIHJlbWFpbmluZyBzdHJpbmdzIGlu
IHRoYXQgc3VibGlzdCBhcmUgdGhlCi0tIyB2YWxpZCB2YWx1ZXMgZm9yIHRoYXQgdmFyaWFibGUu
ICBDb21wbGFpbiBpZiBzdWNoIGEgdmFyaWFibGUgaXMgdW5kZWZpbmVkIChhCi0tIyBCaXNvbiBl
cnJvciBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgaGF2ZSBiZWVuIHNldCBhbHJlYWR5
KSBvciBkZWZpbmVkCi0tIyB0byBhbnkgb3RoZXIgdmFsdWUgKHBvc3NpYmx5IGEgdXNlciBlcnJv
cikuICBEb24ndCByZWNvcmQgdGhpcyBhcyBhIEJpc29uCi0tIyB1c2FnZSBvZiB0aGUgdmFyaWFi
bGUgYXMgdGhlcmUncyBubyByZWFzb24gdG8gc3VzcGVjdCB0aGF0IHRoZSB2YWx1ZSBoYXMgeWV0
Ci0tIyBpbmZsdWVuY2VkIHRoZSBvdXRwdXQuCi0tIwotLSMgRm9yIGV4YW1wbGU6Ci0tIwotLSMg
ICBiNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXMoW1tbW2Zvb11dLCBbW2Zvby12YWx1ZTFd
XSwgW1tmb28tdmFsdWUyXV1dXSwKLS0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtbW1tiYXJdXSwgW1tiYXItdmFsdWUxXV1dXSkKLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVm
aW5lX2NoZWNrX3ZhbHVlc10sCi0tW200X2ZvcmVhY2goW2I0X3N1Ymxpc3RdLCBtNF9xdW90ZSgk
QCksCi0tICAgICAgICAgICAgW19iNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXMoYjRfc3Vi
bGlzdCldKV0pCi0tCi0tbTRfZGVmaW5lKFtfYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVz
XSwKLS1bX2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCi0tICBbYjRfcGVyY2VudF9kZWZp
bmVfY2hlY2tfa2luZChdJDFbLCBba2V5d29yZF0sIFtkZXByZWNhdGVkXSlkbmwKLS0gICBtNF9w
dXNoZGVmKFtiNF9nb29kX3ZhbHVlXSwgWzBdKWRubAotLSAgIG00X2lmKCQjLCAxLCBbXSwKLS0g
ICAgICAgICBbbTRfZm9yZWFjaChbYjRfdmFsdWVdLCBtNF9kcXVvdGUobTRfc2hpZnQoJEApKSwK
LS0gICAgICAgICAgICAgICAgICAgICBbbTRfaWYobTRfaW5kaXIoW2I0X3BlcmNlbnRfZGVmaW5l
KF0kMVspXSksIGI0X3ZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbTRfZGVm
aW5lKFtiNF9nb29kX3ZhbHVlXSwgWzFdKV0pXSldKWRubAotLSAgIG00X2lmKGI0X2dvb2RfdmFs
dWUsIFswXSwKLS0gICAgICAgICBbYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0
X2xvYyhbJDFdKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgW1tpbnZhbGlkIHZhbHVlIGZv
ciAlJWRlZmluZSB2YXJpYWJsZSAnJXMnOiAnJXMnXV0sCi0tICAgICAgICAgICAgICAgICAgICAg
ICAgIFskMV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIG00X2RxdW90ZShtNF9pbmRpcihb
YjRfcGVyY2VudF9kZWZpbmUoXSQxWyldKSkpCi0tICAgICAgICAgIG00X2ZvcmVhY2goW2I0X3Zh
bHVlXSwgbTRfZHF1b3RlKG00X3NoaWZ0KCRAKSksCi0tICAgICAgICAgICAgICAgICAgICAgW2I0
X2Vycm9yKFtbbm90ZV1dLCBiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLCBbXQotLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW2FjY2VwdGVkIHZhbHVlOiAnJXMn
XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG00X2RxdW90ZShiNF92
YWx1ZSkpXSldKWRubAotLSAgIG00X3BvcGRlZihbYjRfZ29vZF92YWx1ZV0pXSwKLS0gIFtiNF9m
YXRhbChbWyQwOiB1bmRlZmluZWQgJSVkZWZpbmUgdmFyaWFibGUgJyVzJ11dLCBbJDFdKV0pXSkK
LS0KLS0jIGI0X3BlcmNlbnRfY29kZV9nZXQoW1FVQUxJRklFUl0pCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYgYW55ICVjb2RlIGJsb2NrcyBmb3IgUVVBTElGSUVS
IGFyZSBkZWZpbmVkLCBlbWl0IHRoZW0gYmVnaW5uaW5nIHdpdGggYQotLSMgY29tbWVudCBhbmQg
ZW5kaW5nIHdpdGggc3luY2xpbmVzIGFuZCBhIG5ld2xpbmUuICBJZiBRVUFMSUZJRVIgaXMgbm90
Ci0tIyBzcGVjaWZpZWQgb3IgZW1wdHksIGRvIHRoaXMgZm9yIHRoZSB1bnF1YWxpZmllZCAlY29k
ZSBibG9ja3MuICBBbHNvLCByZWNvcmQKLS0jIEJpc29uJ3MgdXNhZ2Ugb2YgUVVBTElGSUVSIChp
ZiBzcGVjaWZpZWQpIGJ5IGRlZmluaW5nCi0tIyBiNF9wZXJjZW50X2NvZGVfYmlzb25fcXVhbGlm
aWVycyhRVUFMSUZJRVIpLgotLSMKLS0jIEZvciBleGFtcGxlLCB0byBlbWl0IGFueSB1bnF1YWxp
ZmllZCAlY29kZSBibG9ja3MgZm9sbG93ZWQgYnkgYW55ICVjb2RlCi0tIyBibG9ja3MgZm9yIHRo
ZSBxdWFsaWZpZXIgZm9vOgotLSMKLS0jICAgYjRfcGVyY2VudF9jb2RlX2dldAotLSMgICBiNF9w
ZXJjZW50X2NvZGVfZ2V0KFtbZm9vXV0pCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2NvZGVfZ2V0
XSwKLS1bbTRfcHVzaGRlZihbYjRfbWFjcm9fbmFtZV0sIFtbYjRfcGVyY2VudF9jb2RlKF0kMVsp
XV0pZG5sCi0tbTRfaWZ2YWwoWyQxXSwgW200X2RlZmluZShbYjRfcGVyY2VudF9jb2RlX2Jpc29u
X3F1YWxpZmllcnMoXSQxWyldKV0pZG5sCi0tbTRfaWZkZWYoYjRfbWFjcm9fbmFtZSwKLS1bYjRf
Y29tbWVudChbbTRfaWYoWyQjXSwgWzBdLCBbW1VucXVhbGlmaWVkICVjb2RlXV0sCi0tICAgICAg
ICAgICAgICAgICAgIFtbIiVjb2RlIF0kMVsiXV0pWyBibG9ja3MuXV0pCi0tYjRfdXNlcl9jb2Rl
KFttNF9pbmRpcihiNF9tYWNyb19uYW1lKV0pCi0tXSlkbmwKLS1tNF9wb3BkZWYoW2I0X21hY3Jv
X25hbWVdKV0pCi0tCi0tIyBiNF9wZXJjZW50X2NvZGVfaWZkZWYoUVVBTElGSUVSLCBJRi1UUlVF
LCBbSUYtRkFMU0VdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIElmIGFueSAlY29kZSBibG9ja3MgZm9yIFFVQUxJRklFUiAob3Ig
dW5xdWFsaWZpZWQgJWNvZGUgYmxvY2tzIGlmCi0tIyBRVUFMSUZJRVIgaXMgZW1wdHkpIGFyZSBk
ZWZpbmVkLCBleHBhbmQgSUYtVFJVRSwgZWxzZSBleHBhbmQgSUYtRkFMU0UuCi0tIyBBbHNvLCBy
ZWNvcmQgQmlzb24ncyB1c2FnZSBvZiBRVUFMSUZJRVIgKGlmIHNwZWNpZmllZCkgYnkgZGVmaW5p
bmcKLS0jIGI0X3BlcmNlbnRfY29kZV9iaXNvbl9xdWFsaWZpZXJzKFFVQUxJRklFUikuCi0tbTRf
ZGVmaW5lKFtiNF9wZXJjZW50X2NvZGVfaWZkZWZdLAotLVttNF9pZmRlZihbYjRfcGVyY2VudF9j
b2RlKF0kMVspXSwKLS0gICAgICAgICAgW200X2lmdmFsKFskMV0sIFttNF9kZWZpbmUoW2I0X3Bl
cmNlbnRfY29kZV9iaXNvbl9xdWFsaWZpZXJzKF0kMVspXSldKSQyXSwKLS0gICAgICAgICAgWyQz
XSldKQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIENvbW1vbiB2YXJpYWJs
ZXMuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLQotLSMgYjRfcGFyc2VfYXNz
ZXJ0X2lmKFtJRi1BU1NFUlRJT05TLUFSRS1VU0VEXSwgW0lGLU5PVF0pCi0tIyBiNF9wYXJzZV90
cmFjZV9pZihbSUYtREVCVUctVFJBQ0VTLUFSRS1FTkFCTEVEXSwgW0lGLU5PVF0pCi0tIyBiNF90
b2tlbl9jdG9yX2lmKFtJRi1ZWUxFWC1SRVRVUk5TLUEtVE9LRU5dLCBbSUYtTk9UXSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS1iNF9wZXJjZW50X2RlZmluZV9pZl9kZWZpbmUoW3Rva2VuX2N0b3JdLCBbYXBpLnRva2VuLmNv
bnN0cnVjdG9yXSkKLS1iNF9wZXJjZW50X2RlZmluZV9pZl9kZWZpbmUoW2xvY2F0aW9uc10pICAg
ICAjIFdoZXRoZXIgbG9jYXRpb25zIGFyZSB0cmFja2VkLgotLWI0X3BlcmNlbnRfZGVmaW5lX2lm
X2RlZmluZShbcGFyc2UuYXNzZXJ0XSkKLS1iNF9wZXJjZW50X2RlZmluZV9pZl9kZWZpbmUoW3Bh
cnNlLnRyYWNlXSkKLS0KLS0KLS0jIGI0X2Jpc29uX2xvY2F0aW9uc19pZihbSUYtVFJVRV0pCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kIElGLVRSVUUgaWYg
dXNpbmcgbG9jYXRpb25zLCBhbmQgdXNpbmcgdGhlIGRlZmF1bHQgbG9jYXRpb24KLS0jIHR5cGUu
Ci0tbTRfZGVmaW5lKFtiNF9iaXNvbl9sb2NhdGlvbnNfaWZdLAotLVtiNF9sb2NhdGlvbnNfaWYo
W2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFtbYXBpLmxvY2F0aW9uLnR5cGVdXSwgW10sIFskMV0p
XSldKQotLQotLQotLSMgYjRfZXJyb3JfdmVyYm9zZV9pZihbSUYtRVJST1JTLUFSRS1WRVJCT1NF
XSwgW0lGLU5PVF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIE1hcCAlZGVmaW5lIHBhcnNlLmVycm9yICIoc2ltcGxlfHZlcmJv
c2UpIiB0byBiNF9lcnJvcl92ZXJib3NlX2lmIGFuZAotLSMgYjRfZXJyb3JfdmVyYm9zZV9mbGFn
LgotLWI0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1twYXJzZS5lcnJvcl1dLCBbW3NpbXBsZV1d
KQotLWI0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbcGFyc2UuZXJyb3JdXSwKLS0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW3NpbXBsZV1dLCBbW3ZlcmJvc2VdXV1d
KQotLW00X2RlZmluZShbYjRfZXJyb3JfdmVyYm9zZV9mbGFnXSwKLS0gICAgICAgICAgW200X2Nh
c2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbcGFyc2UuZXJyb3JdXSksCi0tICAgICAgICAgICAg
ICAgICAgIFtzaW1wbGVdLCAgW1swXV0sCi0tICAgICAgICAgICAgICAgICAgIFt2ZXJib3NlXSwg
W1sxXV0pXSkKLS1iNF9kZWZpbmVfZmxhZ19pZihbZXJyb3JfdmVyYm9zZV0pCi0tCi0tIyB5eXRv
a2VuX3RhYmxlIGlzIG5lZWRlZCB0byBzdXBwb3J0IHZlcmJvc2UgZXJyb3JzLgotLWI0X2Vycm9y
X3ZlcmJvc2VfaWYoW200X2RlZmluZShbYjRfdG9rZW5fdGFibGVfZmxhZ10sIFsxXSldKQotLQot
LQotLSMgYjRfdmFyaWFudF9pZihbSUYtVkFSSUFOVC1BUkUtVVNFRF0sIFtJRi1OT1RdKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLWI0X3BlcmNl
bnRfZGVmaW5lX2lmX2RlZmluZShbdmFyaWFudF0pCi0tbTRfZGVmaW5lKFtiNF92YXJpYW50X2Zs
YWddLCBbWzBdXSkKLS1iNF9wZXJjZW50X2RlZmluZV9pZmRlZihbW2FwaS52YWx1ZS50eXBlXV0s
Ci0tICAgW200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2tpbmQoW1thcGkudmFsdWUudHlw
ZV1dKSwgW2tleXdvcmRdLAotLSAgICAgICAgICAgIFttNF9jYXNlKGI0X3BlcmNlbnRfZGVmaW5l
X2dldChbW2FwaS52YWx1ZS50eXBlXV0pLCBbdmFyaWFudF0sCi0tICAgICAgICAgICAgICAgICAg
ICBbbTRfZGVmaW5lKFtiNF92YXJpYW50X2ZsYWddLCBbWzFdXSldKV0pXSkKLS1iNF9kZWZpbmVf
ZmxhZ19pZihbdmFyaWFudF0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBBZnRlciBwcm9jZXNzaW5n
IHRoZSBza2VsZXRvbnMsIGNoZWNrIHRoYXQgYWxsIHRoZSB1c2VyJ3MgICAjIwotLSMjICVkZWZp
bmUgdmFyaWFibGVzIGFuZCAlY29kZSBxdWFsaWZpZXJzIHdlcmUgdXNlZCBieSBCaXNvbi4gICMj
Ci0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gIyMKLS0KLS1tNF9kZWZpbmUoW2I0X2NoZWNrX3VzZXJfbmFtZXNfd3JhcF0sCi0t
W200X2lmZGVmKFtiNF9wZXJjZW50X10kMVtfdXNlcl9dJDJbc10sCi0tICAgICAgICAgIFtiNF9j
aGVja191c2VyX25hbWVzKFtbJV0kMSAkMl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtiNF9wZXJjZW50X10kMVtfdXNlcl9dJDJbc10sCi0tICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtbYjRfcGVyY2VudF9dJDFbX2Jpc29uX10kMltzXV0pXSldKQotLQotLW00X3dy
YXBfbGlmbyhbCi0tYjRfY2hlY2tfdXNlcl9uYW1lc193cmFwKFtbZGVmaW5lXV0sIFtbdmFyaWFi
bGVdXSkKLS1iNF9jaGVja191c2VyX25hbWVzX3dyYXAoW1tjb2RlXV0sIFtbcXVhbGlmaWVyXV0p
Ci0tXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgRGVmYXVsdCB2YWx1ZXMu
ICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIG00X2RlZmluZV9kZWZhdWx0KFti
NF9sZXhfcGFyYW1dLCBbXSkgICBkbmwgYnJlYWtzIG90aGVyIHNrZWxldG9ucwotLW00X2RlZmlu
ZV9kZWZhdWx0KFtiNF9lcGlsb2d1ZV0sIFtdKQotLW00X2RlZmluZV9kZWZhdWx0KFtiNF9wYXJz
ZV9wYXJhbV0sIFtdKQotLQotLSMgVGhlIGluaXRpYWwgY29sdW1uIGFuZCBsaW5lLgotLW00X2Rl
ZmluZV9kZWZhdWx0KFtiNF9sb2NhdGlvbl9pbml0aWFsX2NvbHVtbl0sIFsxXSkKLS1tNF9kZWZp
bmVfZGVmYXVsdChbYjRfbG9jYXRpb25faW5pdGlhbF9saW5lXSwgICBbMV0pCi0tCi0tCi0tIyMg
LS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgU2FuaXR5IGNoZWNrcy4gICMjCi0tIyMgLS0tLS0tLS0t
LS0tLS0tICMjCi0tCi0tIyBhcGkubG9jYXRpb24ucHJlZml4PXsuLi59IChKYXZhIGFuZCBDKysp
LgotLWI0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2tpbmQoW2FwaS5sb2NhdGlvbi50eXBlXSwgW2Nv
ZGVdLCBbZGVwcmVjYXRlZF0pCi0tCi0tIyBhcGkucG9zaXRpb24ucHJlZml4PXsuLi59IChKYXZh
KS4KLS1iNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kKFthcGkucG9zaXRpb24udHlwZV0sIFtj
b2RlXSwgW2RlcHJlY2F0ZWRdKQotLQotLSMgYXBpLnByZWZpeCA+PCAlbmFtZS1wcmVmaXguCi0t
YjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChbYXBpLnByZWZpeF0sIFtjb2RlXSwgW2RlcHJl
Y2F0ZWRdKQotLWI0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFthcGkucHJlZml4XSwKLS1bbTRfaWZk
ZWYoW2I0X3ByZWZpeF0sCi0tW2I0X2NvbXBsYWluX2F0KGI0X3BlcmNlbnRfZGVmaW5lX2dldF9s
b2MoW2FwaS5wcmVmaXhdKSwKLS0gICAgICAgICAgICAgICAgW1snJXMnIGFuZCAnJXMnIGNhbm5v
dCBiZSB1c2VkIHRvZ2V0aGVyXV0sCi0tICAgICAgICAgICAgICAgIFslbmFtZS1wcmVmaXhdLAot
LSAgICAgICAgICAgICAgICBbJWRlZmluZSBhcGkucHJlZml4XSldKV0pCi0tCi0tIyBhcGkudG9r
ZW4ucHJlZml4PXsuLi59Ci0tIyBNYWtlIGl0IGEgd2FybmluZyBmb3IgdGhvc2Ugd2hvIHVzZWQg
YmV0YXMgb2YgQmlzb24gMy4wLgotLWI0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2tpbmQoW2FwaS50
b2tlbi5wcmVmaXhdLCBbY29kZV0sIFtkZXByZWNhdGVkXSkKLS0KLS0jIGFwaS52YWx1ZS50eXBl
ID48ICV1bmlvbi4KLS1iNF9wZXJjZW50X2RlZmluZV9pZmRlZihbYXBpLnZhbHVlLnR5cGVdLAot
LVttNF9pZmRlZihbYjRfdW5pb25fbWVtYmVyc10sCi0tW2I0X2NvbXBsYWluX2F0KGI0X3BlcmNl
bnRfZGVmaW5lX2dldF9sb2MoW2FwaS52YWx1ZS50eXBlXSksCi0tICAgICAgICAgICAgICAgIFtb
JyVzJyBhbmQgJyVzJyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcl1dLAotLSAgICAgICAgICAgICAg
ICBbJXVuaW9uXSwKLS0gICAgICAgICAgICAgICAgWyVkZWZpbmUgYXBpLnZhbHVlLnR5cGVdKV0p
XSkKLS0KLS0jIGFwaS52YWx1ZS50eXBlPXVuaW9uID48ICV5YWNjLgotLWI0X3BlcmNlbnRfZGVm
aW5lX2lmZGVmKFthcGkudmFsdWUudHlwZV0sCi0tW200X2lmKGI0X3BlcmNlbnRfZGVmaW5lX2dl
dChbYXBpLnZhbHVlLnR5cGVdKSwgW3VuaW9uXSwKLS1bYjRfeWFjY19pZihkbmwKLS1bYjRfY29t
cGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbYXBpLnZhbHVlLnR5cGVdKSwKLS0g
ICAgICAgICAgICAgICAgW1snJXMnIGFuZCAnJXMnIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXV0s
Ci0tICAgICAgICAgICAgICAgIFsleWFjY10sCi0tICAgICAgICAgICAgICAgIFslZGVmaW5lIGFw
aS52YWx1ZS50eXBlICJ1bmlvbiJdKV0pXSldKQotLQotLSMgYXBpLnZhbHVlLnVuaW9uLm5hbWUu
Ci0tYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChbYXBpLnZhbHVlLnVuaW9uLm5hbWVdLCBb
a2V5d29yZF0pCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxl
eC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy1saWtlLm00IGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy1saWtlLm00
Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDhkODkxYjY3ZWY5Li4wMDAwMDAwMDAw
MAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9w
YXJ0eS9za2VsZXRvbnMvYy1saWtlLm00Ci0rKysgL2Rldi9udWxsCi1AQCAtMSw2NiArMCwwIEBA
Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLSotIEF1dG9jb25mIC0qLQotLQotLSMgQ29tbW9uIGNvZGUgZm9yIEMtbGlrZSBsYW5n
dWFnZXMgKEMsIEMrKywgSmF2YSwgZXRjLikKLS0KLS0jIENvcHlyaWdodCAoQykgMjAxMi0yMDE1
LCAyMDE4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tIyBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeQotLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp
dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu
Z251Lm9yZy9saWNlbnNlcy8+LgotLQotLSMgX2I0X2NvbW1lbnQoVEVYVCwgT1BFTiwgQ09OVElO
VUUsIEVORCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQ
dXQgVEVYVCBpbiBjb21tZW50LiAgQXZvaWQgdHJhaWxpbmcgc3BhY2VzOiBkb24ndCBpbmRlbnQg
ZW1wdHkgbGluZXMuCi0tIyBBdm9pZCBhZGRpbmcgaW5kZW50YXRpb24gdG8gdGhlIGZpcnN0IGxp
bmUsIGFzIHRoZSBpbmRlbnRhdGlvbiBjb21lcwotLSMgZnJvbSBPUEVOLiAgVGhhdCdzIHdoeSB3
ZSBkb24ndCBwYXRzdWJzdChbJDFdLCBbXlwoLlwpXSwgWyAgIFwxXSkuCi0tIwotLSMgUHJlZml4
IGFsbCB0aGUgb3V0cHV0IGxpbmVzIHdpdGggUFJFRklYLgotLW00X2RlZmluZShbX2I0X2NvbW1l
bnRdLAotLVskMltdbTRfYnBhdHN1YnN0KG00X2V4cGFuZChbWyQxXV0pLCBbCi0tXCguXCldLCBb
Ci0tJDNcMV0pJDRdKQotLQotLQotLSMgYjRfY29tbWVudChURVhULCBbUFJFRklYXSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQdXQgVEVYVCBpbiBjb21tZW50LiAgUHJlZml4
IGFsbCB0aGUgb3V0cHV0IGxpbmVzIHdpdGggUFJFRklYLgotLW00X2RlZmluZShbYjRfY29tbWVu
dF0sCi0tW19iNF9jb21tZW50KFskMV0sIFskMi8qIF0sIFskMiAgIF0sIFsgICovXSldKQotLQot
LQotLQotLQotLSMgX2I0X2RvbGxhcl9kb2xsYXIoVkFMVUUsIFNZTUJPTC1OVU0sIEZJRUxELCBE
RUZBVUxULUZJRUxEKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYgRklFTEQgKG9yIERFRkFVTFQtRklFTEQpIGlzIG5v
bi1udWxsLCByZXR1cm4gIlZBTFVFLkZJRUxEIiwKLS0jIG90aGVyd2lzZSBqdXN0IFZBTFVFLiAg
QmUgc3VyZSB0byBwYXNzICIoVkFMVUUpIiBpZiBWQUxVRSBpcyBhCi0tIyBwb2ludGVyLgotLW00
X2RlZmluZShbX2I0X2RvbGxhcl9kb2xsYXJdLAotLVtiNF9zeW1ib2xfdmFsdWUoWyQxXSwKLS0g
ICAgICAgICAgICAgICAgIFskMl0sCi0tICAgICAgICAgICAgICAgICBtNF9pZihbJDNdLCBbW11d
LAotLSAgICAgICAgICAgICAgICAgICAgICAgW1skNF1dLCBbWyQzXV0pKV0pCi0tCi0tIyBiNF9k
b2xsYXJfcHVzaGRlZihWQUxVRS1QT0lOVEVSLCBTWU1CT0wtTlVNLCBbVFlQRV9UQUddLCBMT0NB
VElPTikKLS0jIGI0X2RvbGxhcl9wb3BkZWYKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVmaW5lIGI0X2Rv
bGxhcl9kb2xsYXIgZm9yIFZBTFVFLVBPSU5URVIgYW5kIERFRkFVTFQtRklFTEQsCi0tIyBhbmQg
YjRfYXRfZG9sbGFyIGZvciBMT0NBVElPTi4KLS1tNF9kZWZpbmUoW2I0X2RvbGxhcl9wdXNoZGVm
XSwKLS1bbTRfcHVzaGRlZihbYjRfZG9sbGFyX2RvbGxhcl0sCi0tICAgICAgICAgICAgW19iNF9k
b2xsYXJfZG9sbGFyKFskMV0sIFskMl0sIG00X2RxdW90ZSgkXVsxKSwgWyQzXSldKWRubAotLW00
X3B1c2hkZWYoW2I0X2F0X2RvbGxhcl0sIFskNF0pZG5sCi0tXSkKLS1tNF9kZWZpbmUoW2I0X2Rv
bGxhcl9wb3BkZWZdLAotLVttNF9wb3BkZWYoW2I0X2F0X2RvbGxhcl0pZG5sCi0tbTRfcG9wZGVm
KFtiNF9kb2xsYXJfZG9sbGFyXSlkbmwKLS1dKQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL2MubTQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxl
dG9ucy9jLm00Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDNjZGUwNGE5NTcxLi4w
MDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNv
bi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy5tNAotKysrIC9kZXYvbnVsbAotQEAgLTEsODgzICsw
LDAgQEAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCi0tCi0tIyBDIE00IE1hY3JvcyBmb3IgQmlzb24u
Ci0tCi0tIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDQtMjAxNSwgMjAxOC0yMDE5IEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwKLS0jIEluYy4KLS0KLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv
ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv
ZiB0aGUgTGljZW5zZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz
Lz4uCi0tCi0tbTRfaW5jbHVkZShiNF9za2VsZXRvbnNkaXIvW2MtbGlrZS5tNF0pCi0tCi0tIyBi
NF90b2NwcChTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0tLS0tCi0tIyBDb252ZXJ0IFNUUklORyBp
bnRvIGEgdmFsaWQgQyBtYWNybyBuYW1lLgotLW00X2RlZmluZShbYjRfdG9jcHBdLAotLVttNF90
b3VwcGVyKG00X2JwYXRzdWJzdChtNF9xdW90ZSgkMSksIFtbXmEtekEtWjAtOV0rXSwgW19dKSld
KQotLQotLQotLSMgYjRfY3BwX2d1YXJkKEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0j
IEEgdmFsaWQgQyBtYWNybyBuYW1lIHRvIHVzZSBhcyBhIENQUCBoZWFkZXIgZ3VhcmQgZm9yIEZJ
TEUuCi0tbTRfZGVmaW5lKFtiNF9jcHBfZ3VhcmRdLAotLVtbWVlfXWI0X3RvY3BwKG00X2RlZm4o
W2I0X3ByZWZpeF0pL1skMV0pW19JTkNMVURFRF1dKQotLQotLQotLSMgYjRfY3BwX2d1YXJkX29w
ZW4oRklMRSkKLS0jIGI0X2NwcF9ndWFyZF9jbG9zZShGSUxFKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBJZiBGSUxFIGRvZXMgbm90IGV4cGFuZCB0byBub3RoaW5nLCBvcGVuL2Ns
b3NlIENQUCBpbmNsdXNpb24gZ3VhcmRzIGZvciBGSUxFLgotLW00X2RlZmluZShbYjRfY3BwX2d1
YXJkX29wZW5dLAotLVttNF9pZnZhbChtNF9xdW90ZSgkMSksCi0tWyNpZm5kZWYgYjRfY3BwX2d1
YXJkKFskMV0pCi0tIyBkZWZpbmUgYjRfY3BwX2d1YXJkKFskMV0pXSldKQotLQotLW00X2RlZmlu
ZShbYjRfY3BwX2d1YXJkX2Nsb3NlXSwKLS1bbTRfaWZ2YWwobTRfcXVvdGUoJDEpLAotLVsjZW5k
aWYgYjRfY29tbWVudChbIWI0X2NwcF9ndWFyZChbJDFdKV0pXSldKQotLQotLQotLSMjIC0tLS0t
LS0tLS0tLS0tLS0gIyMKLS0jIyBJZGVudGlmaWNhdGlvbi4gICMjCi0tIyMgLS0tLS0tLS0tLS0t
LS0tLSAjIwotLQotLSMgYjRfaWRlbnRpZmljYXRpb24KLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBEZXBlbmRzIG9uIGluZGl2aWR1YWwgc2tlbGV0b25zIHRvIGRlZmluZSBiNF9wdXJlX2ZsYWcs
IGI0X3B1c2hfZmxhZywgb3IKLS0jIGI0X3B1bGxfZmxhZyBpZiB0aGV5IHVzZSB0aGUgdmFsdWVz
IG9mIHRoZSAlZGVmaW5lIHZhcmlhYmxlcyBhcGkucHVyZSBvcgotLSMgYXBpLnB1c2gtcHVsbC4K
LS1tNF9kZWZpbmUoW2I0X2lkZW50aWZpY2F0aW9uXSwKLS1bWy8qIElkZW50aWZ5IEJpc29uIG91
dHB1dC4gICovCi0tI2RlZmluZSBZWUJJU09OIDEKLS0KLS0vKiBCaXNvbiB2ZXJzaW9uLiAgKi8K
LS0jZGVmaW5lIFlZQklTT05fVkVSU0lPTiAiXWI0X3ZlcnNpb25bIgotLQotLS8qIFNrZWxldG9u
IG5hbWUuICAqLwotLSNkZWZpbmUgWVlTS0VMRVRPTl9OQU1FIF1iNF9za2VsZXRvbltdbTRfaWZk
ZWYoW2I0X3B1cmVfZmxhZ10sIFtbCi0tCi0tLyogUHVyZSBwYXJzZXJzLiAgKi8KLS0jZGVmaW5l
IFlZUFVSRSBdYjRfcHVyZV9mbGFnXSlbXW00X2lmZGVmKFtiNF9wdXNoX2ZsYWddLCBbWwotLQot
LS8qIFB1c2ggcGFyc2Vycy4gICovCi0tI2RlZmluZSBZWVBVU0ggXWI0X3B1c2hfZmxhZ10pW11t
NF9pZmRlZihbYjRfcHVsbF9mbGFnXSwgW1sKLS0KLS0vKiBQdWxsIHBhcnNlcnMuICAqLwotLSNk
ZWZpbmUgWVlQVUxMIF1iNF9wdWxsX2ZsYWddKVsKLS1dXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0t
LS0tLS0tICMjCi0tIyMgRGVmYXVsdCB2YWx1ZXMuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0g
IyMKLS0KLS0jIGI0X2FwaV9wcmVmaXgsIGI0X2FwaV9QUkVGSVgKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIENvcnJlc3BvbmRzIHRvICVkZWZpbmUgYXBpLnByZWZpeAotLWI0
X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1thcGkucHJlZml4XV0sIFtbeXldXSkKLS1tNF9kZWZp
bmUoW2I0X2FwaV9wcmVmaXhdLAotLVtiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkucHJlZml4
XV0pXSkKLS1tNF9kZWZpbmUoW2I0X2FwaV9QUkVGSVhdLAotLVttNF90b3VwcGVyKGI0X2FwaV9w
cmVmaXgpXSkKLS0KLS0KLS0jIGI0X3ByZWZpeAotLSMgLS0tLS0tLS0tCi0tIyBJZiB0aGUgJW5h
bWUtcHJlZml4IGlzIG5vdCBnaXZlbiwgaXQgaXMgYXBpLnByZWZpeC4KLS1tNF9kZWZpbmVfZGVm
YXVsdChbYjRfcHJlZml4XSwgW2I0X2FwaV9wcmVmaXhdKQotLQotLSMgSWYgdGhlICV1bmlvbiBp
cyBub3QgbmFtZWQsIGl0cyBuYW1lIGlzIFlZU1RZUEUuCi0tYjRfcGVyY2VudF9kZWZpbmVfZGVm
YXVsdChbW2FwaS52YWx1ZS51bmlvbi5uYW1lXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICBbYjRfYXBpX1BSRUZJWFtdW1NUWVBFXV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCi0tIyMgUHVyZS9pbXB1cmUgaW50ZXJmYWNlcy4gICMjCi0tIyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tIyBiNF9sZXhfZm9ybWFscwotLSMgLS0tLS0tLS0tLS0t
LS0KLS0jIEFsbCB0aGUgeXlsZXggZm9ybWFsIGFyZ3VtZW50cy4KLS0jIGI0X2xleF9wYXJhbSBh
cnJpdmVzIHF1b3RlZCB0d2ljZSwgYnV0IHdlIHdhbnQgdG8ga2VlcCBvbmx5IG9uZSBsZXZlbC4K
LS1tNF9kZWZpbmUoW2I0X2xleF9mb3JtYWxzXSwKLS1bYjRfcHVyZV9pZihbW1tbWVlTVFlQRSAq
eXlsdmFscF1dLCBbWyZ5eWx2YWxdXV1bXWRubAotLWI0X2xvY2F0aW9uc19pZihbLCBbW1lZTFRZ
UEUgKnl5bGxvY3BdLCBbJnl5bGxvY11dXSldKWRubAotLW00X2lmZGVmKFtiNF9sZXhfcGFyYW1d
LCBbLCBdYjRfbGV4X3BhcmFtKV0pCi0tCi0tCi0tIyBiNF9sZXgKLS0jIC0tLS0tLQotLSMgQ2Fs
bCB5eWxleC4KLS1tNF9kZWZpbmUoW2I0X2xleF0sCi0tW2I0X2Z1bmN0aW9uX2NhbGwoW3l5bGV4
XSwgW2ludF0sIGI0X2xleF9mb3JtYWxzKV0pCi0tCi0tCi0tIyBiNF91c2VyX2FyZ3MKLS0jIC0t
LS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfdXNlcl9hcmdzXSwKLS1bbTRfaWZzZXQoW2I0X3Bh
cnNlX3BhcmFtXSwgWywgYjRfYXJncyhiNF9wYXJzZV9wYXJhbSldKV0pCi0tCi0tCi0tIyBiNF9w
YXJzZV9wYXJhbQotLSMgLS0tLS0tLS0tLS0tLS0KLS0jIElmIGRlZmluZWQsIGI0X3BhcnNlX3Bh
cmFtIGFycml2ZXMgZG91YmxlIHF1b3RlZCwgYnV0IGJlbG93IHdlIHByZWZlcgotLSMgaXQgdG8g
YmUgc2luZ2xlIHF1b3RlZC4KLS1tNF9kZWZpbmUoW2I0X3BhcnNlX3BhcmFtXSwKLS1iNF9wYXJz
ZV9wYXJhbSkKLS0KLS0KLS0jIGI0X3BhcnNlX3BhcmFtX2ZvcihERUNMLCBGT1JNQUwsIEJPRFkp
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEl0ZXJhdGUg
b3ZlciB0aGUgdXNlciBwYXJhbWV0ZXJzLCBiaW5kaW5nIHRoZSBkZWNsYXJhdGlvbiB0byBERUNM
LAotLSMgdGhlIGZvcm1hbCBuYW1lIHRvIEZPUk1BTCwgYW5kIGV2YWx1YXRpbmcgdGhlIEJPRFku
Ci0tbTRfZGVmaW5lKFtiNF9wYXJzZV9wYXJhbV9mb3JdLAotLVttNF9mb3JlYWNoKFskMV8kMl0s
IG00X2RlZm4oW2I0X3BhcnNlX3BhcmFtXSksCi0tW200X3B1c2hkZWYoWyQxXSwgbTRfdW5xdW90
ZShtNF9jYXIoJDFfJDIpKSlkbmwKLS1tNF9wdXNoZGVmKFskMl0sIG00X3NoaWZ0KCQxXyQyKSlk
bmwKLS0kM1tdZG5sCi0tbTRfcG9wZGVmKFskMl0pZG5sCi0tbTRfcG9wZGVmKFskMV0pZG5sCi0t
XSldKQotLQotLSMgYjRfcGFyc2VfcGFyYW1fdXNlKFtWQUxdLCBbTE9DXSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyAnWVlVU0UnIFZBTCwgTE9DIGlmIGxvY2F0aW9u
cyBhcmUgZW5hYmxlZCwgYW5kIGFsbCB0aGUgcGFyc2UtcGFyYW1zLgotLW00X2RlZmluZShbYjRf
cGFyc2VfcGFyYW1fdXNlXSwKLS1bbTRfaWZ2YWxuKFskMV0sIFsgIFlZVVNFIChbJDFdKTtdKWRu
bAotLWI0X2xvY2F0aW9uc19pZihbbTRfaWZ2YWxuKFskMl0sIFsgIFlZVVNFIChbJDJdKTtdKV0p
ZG5sCi0tYjRfcGFyc2VfcGFyYW1fZm9yKFtEZWNsXSwgW0Zvcm1hbF0sIFsgIFlZVVNFIChGb3Jt
YWwpOwotLV0pZG5sCi0tXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0gIyMKLS0jIyBEYXRhIFR5
cGVzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0gIyMKLS0KLS0jIGI0X2ludF90eXBlKE1JTiwgTUFY
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gdGhlIHNtYWxsZXN0IGludCB0
eXBlIGFibGUgdG8gaGFuZGxlIG51bWJlcnMgcmFuZ2luZyBmcm9tCi0tIyBNSU4gdG8gTUFYIChp
bmNsdWRlZCkuCi0tbTRfZGVmaW5lKFtiNF9pbnRfdHlwZV0sCi0tW200X2lmKGI0X2ludHNfaW4o
JEAsICAgICAgWzBdLCAgIFsyNTVdKSwgWzFdLCBbdW5zaWduZWQgY2hhcl0sCi0tICAgICAgIGI0
X2ludHNfaW4oJEAsICAgWy0xMjhdLCAgIFsxMjddKSwgWzFdLCBbc2lnbmVkIGNoYXJdLAotLQot
LSAgICAgICBiNF9pbnRzX2luKCRALCAgICAgIFswXSwgWzY1NTM1XSksIFsxXSwgW3Vuc2lnbmVk
IHNob3J0XSwKLS0gICAgICAgYjRfaW50c19pbigkQCwgWy0zMjc2OF0sIFszMjc2N10pLCBbMV0s
IFtzaG9ydF0sCi0tCi0tICAgICAgIG00X2V2YWwoWzAgPD0gJDFdKSwgICAgICAgICAgICAgICAg
WzFdLCBbdW5zaWduZWRdLAotLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW2ludF0pXSkKLS0KLS0KLS0jIGI0X2ludF90eXBlX2ZvcihOQU1FKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gdGhlIHNtYWxsZXN0IGludCB0eXBlIGFi
bGUgdG8gaGFuZGxlIG51bWJlcnMgcmFuZ2luZyBmcm9tCi0tIyAnTkFNRV9taW4nIHRvICdOQU1F
X21heCcgKGluY2x1ZGVkKS4KLS1tNF9kZWZpbmUoW2I0X2ludF90eXBlX2Zvcl0sCi0tW2I0X2lu
dF90eXBlKCQxX21pbiwgJDFfbWF4KV0pCi0tCi0tCi0tIyBiNF90YWJsZV92YWx1ZV9lcXVhbHMo
VEFCTEUsIFZBTFVFLCBMSVRFUkFMKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIFdpdGhvdXQgaW5kdWNpbmcgYSBjb21wYXJpc29uIHdhcm5pbmcg
ZnJvbSB0aGUgY29tcGlsZXIsIGNoZWNrIGlmIHRoZQotLSMgbGl0ZXJhbCB2YWx1ZSBMSVRFUkFM
IGVxdWFscyBWQUxVRSBmcm9tIHRhYmxlIFRBQkxFLCB3aGljaCBtdXN0IGhhdmUKLS0jIFRBQkxF
X21pbiBhbmQgVEFCTEVfbWF4IGRlZmluZWQuCi0tbTRfZGVmaW5lKFtiNF90YWJsZV92YWx1ZV9l
cXVhbHNdLAotLVttNF9pZihtNF9ldmFsKCQzIDwgbTRfaW5kaXIoW2I0X10kMVtfbWluXSkKLS0g
ICAgICAgICAgICAgICB8fCBtNF9pbmRpcihbYjRfXSQxW19tYXhdKSA8ICQzKSwgWzFdLAotLSAg
ICAgICBbWzBdXSwKLS0gICAgICAgWyghISgoJDIpID09ICgkMykpKV0pXSkKLS0KLS0KLS0jIyAt
LS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIENvbXBpbGVyIGlzc3Vlcy4gICMjCi0tIyMgLS0tLS0t
LS0tLS0tLS0tLS0gIyMKLS0KLS0jIGI0X2F0dHJpYnV0ZV9kZWZpbmUoW25vcmV0dXJuXSkKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFByb3ZpZGUgcG9ydGFibGUgY29t
cGlsZXIgImF0dHJpYnV0ZXMiLiAgSWYgIm5vcmV0dXJuIiBpcyBwYXNzZWQsIGRlZmluZQotLSMg
X05vcmV0dXJuLgotLW00X2RlZmluZShbYjRfYXR0cmlidXRlX2RlZmluZV0sCi0tW1sjaWZuZGVm
IFlZX0FUVFJJQlVURQotLSMgaWYgKGRlZmluZWQgX19HTlVDX18gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAmJiAoMiA8IF9fR05VQ19fIHx8
IChfX0dOVUNfXyA9PSAyICYmIDk2IDw9IF9fR05VQ19NSU5PUl9fKSkpICBcCi0tICAgICB8fCBk
ZWZpbmVkIF9fU1VOUFJPX0MgJiYgMHg1MTEwIDw9IF9fU1VOUFJPX0MKLS0jICBkZWZpbmUgWVlf
QVRUUklCVVRFKFNwZWMpIF9fYXR0cmlidXRlX18oU3BlYykKLS0jIGVsc2UKLS0jICBkZWZpbmUg
WVlfQVRUUklCVVRFKFNwZWMpIC8qIGVtcHR5ICovCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNp
Zm5kZWYgWVlfQVRUUklCVVRFX1BVUkUKLS0jIGRlZmluZSBZWV9BVFRSSUJVVEVfUFVSRSAgIFlZ
X0FUVFJJQlVURSAoKF9fcHVyZV9fKSkKLS0jZW5kaWYKLS0KLS0jaWZuZGVmIFlZX0FUVFJJQlVU
RV9VTlVTRUQKLS0jIGRlZmluZSBZWV9BVFRSSUJVVEVfVU5VU0VEIFlZX0FUVFJJQlVURSAoKF9f
dW51c2VkX18pKQotLSNlbmRpZgotLQotLV1tNF9ibWF0Y2goWyQxXSwgW1xibm9yZXR1cm5cYl0s
IFtbLyogVGhlIF9Ob3JldHVybiBrZXl3b3JkIG9mIEMxMS4gICovCi0tI2lmICEgZGVmaW5lZCBf
Tm9yZXR1cm4KLS0jIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgMjAxMTAzTCA8PSBfX2NwbHVz
cGx1cwotLSMgIGRlZmluZSBfTm9yZXR1cm4gW1tub3JldHVybl1dCi0tIyBlbGlmICEoZGVmaW5l
ZCBfX1NURENfVkVSU0lPTl9fICYmIDIwMTExMiA8PSBfX1NURENfVkVSU0lPTl9fKQotLSMgIGlm
ICgzIDw9IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDggPD0gX19HTlVDX01JTk9SX18p
IFwKLS0gICAgICAgfHwgMHg1MTEwIDw9IF9fU1VOUFJPX0MpCi0tIyAgIGRlZmluZSBfTm9yZXR1
cm4gX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpCi0tIyAgZWxpZiBkZWZpbmVkIF9NU0Nf
VkVSICYmIDEyMDAgPD0gX01TQ19WRVIKLS0jICAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVj
IChub3JldHVybikKLS0jICBlbHNlCi0tIyAgIGRlZmluZSBfTm9yZXR1cm4KLS0jICBlbmRpZgot
LSMgZW5kaWYKLS0jZW5kaWYKLS0KLS1dXSlbLyogU3VwcHJlc3MgdW51c2VkLXZhcmlhYmxlIHdh
cm5pbmdzIGJ5ICJ1c2luZyIgRS4gICovCi0tI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQg
X19HTlVDX18KLS0jIGRlZmluZSBZWVVTRShFKSAoKHZvaWQpIChFKSkKLS0jZWxzZQotLSMgZGVm
aW5lIFlZVVNFKEUpIC8qIGVtcHR5ICovCi0tI2VuZGlmCi0tCi0tI2lmIGRlZmluZWQgX19HTlVD
X18gJiYgISBkZWZpbmVkIF9fSUNDICYmIDQwNyA8PSBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19N
SU5PUl9fCi0tLyogU3VwcHJlc3MgYW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFs
IGJlaW5nIHVuaW5pdGlhbGl6ZWQuICAqLwotLSMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklO
SVRJQUxJWkVEX0JFR0lOIFwKLS0gICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHB1c2giKSBc
Ci0tICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVk
XCIiKVwKLS0gICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21heWJlLXVu
aW5pdGlhbGl6ZWRcIiIpCi0tIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURf
RU5EIFwKLS0gICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpCi0tI2Vsc2UKLS0jIGRl
ZmluZSBZWV9JTklUSUFMX1ZBTFVFKFZhbHVlKSBWYWx1ZQotLSNlbmRpZgotLSNpZm5kZWYgWVlf
SUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KLS0jIGRlZmluZSBZWV9JR05PUkVfTUFZ
QkVfVU5JTklUSUFMSVpFRF9CRUdJTgotLSMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJ
QUxJWkVEX0VORAotLSNlbmRpZgotLSNpZm5kZWYgWVlfSU5JVElBTF9WQUxVRQotLSMgZGVmaW5l
IFlZX0lOSVRJQUxfVkFMVUUoVmFsdWUpIC8qIE5vdGhpbmcuICovCi0tI2VuZGlmCi0tXV0pCi0t
Ci0tCi0tIyBiNF9udWxsX2RlZmluZQotLSMgLS0tLS0tLS0tLS0tLS0KLS0jIFBvcnRhYmlsaXR5
IGlzc3VlczogZGVmaW5lIGEgWVlfTlVMTFBUUiBhcHByb3ByaWF0ZSBmb3IgdGhlIGN1cnJlbnQK
LS0jIGxhbmd1YWdlIChDLCBDKys5OCwgb3IgQysrMTEpLgotLSMKLS0jIEluIEMrKyBwcmUgQysr
MTEgaXQgaXMgc3RhbmRhcmQgcHJhY3RpY2UgdG8gdXNlIDAgKG5vdCBOVUxMKSBmb3IgdGhlCi0t
IyBudWxsIHBvaW50ZXIuICBJbiBDLCBwcmVmZXIgKCh2b2lkKikwKSB0byBhdm9pZCBoYXZpbmcg
dG8gaW5jbHVkZSBzdGRsaWIuaC4KLS1tNF9kZWZpbmUoW2I0X251bGxfZGVmaW5lXSwKLS1bIyBp
Zm5kZWYgWVlfTlVMTFBUUgotLSMgIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKLS0jICAgaWYgMjAx
MTAzTCA8PSBfX2NwbHVzcGx1cwotLSMgICAgZGVmaW5lIFlZX05VTExQVFIgbnVsbHB0cgotLSMg
ICBlbHNlCi0tIyAgICBkZWZpbmUgWVlfTlVMTFBUUiAwCi0tIyAgIGVuZGlmCi0tIyAgZWxzZQot
LSMgICBkZWZpbmUgWVlfTlVMTFBUUiAoKHZvaWQqKTApCi0tIyAgZW5kaWYKLS0jIGVuZGlmW11k
bmwKLS1dKQotLQotLQotLSMgYjRfbnVsbAotLSMgLS0tLS0tLQotLSMgUmV0dXJuIGEgbnVsbCBw
b2ludGVyIGNvbnN0YW50LgotLW00X2RlZmluZShbYjRfbnVsbF0sIFtZWV9OVUxMUFRSXSkKLS0K
LS0KLS0KLS0jIyAtLS0tLS0tLS0jIwotLSMjIFZhbHVlcy4gICMjCi0tIyMgLS0tLS0tLS0tIyMK
LS0KLS0jIGI0X2ludGVncmFsX3BhcnNlcl90YWJsZV9kZWZpbmUoVEFCTEUtTkFNRSwgQ09OVEVO
VCwgQ09NTUVOVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlZmluZSAieXk8VEFCTEUtTkFNRT4iIHdob3NlIGNv
bnRlbnRzIGlzIENPTlRFTlQuCi0tbTRfZGVmaW5lKFtiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVf
ZGVmaW5lXSwKLS1bbTRfaWZ2YWxuKFskM10sIFtiNF9jb21tZW50KFskM10sIFsgIF0pXSlkbmwK
LS1zdGF0aWMgY29uc3QgYjRfaW50X3R5cGVfZm9yKFskMl0pIHl5JDFbW11dID0KLS17Ci0tICAk
MgotLX07ZG5sCi0tXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0t
IyMgQXNzaWduaW5nIHRva2VuIG51bWJlcnMuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKLS0KLS0jIGI0X3Rva2VuX2RlZmluZShUT0tFTi1OVU0pCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgT3V0cHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgdG9rZW4g
YXMgI2RlZmluZS4KLS1tNF9kZWZpbmUoW2I0X3Rva2VuX2RlZmluZV0sCi0tW2I0X3Rva2VuX2Zv
cm1hdChbI2RlZmluZSAlcyAlc10sIFskMV0pXSkKLS0KLS0jIGI0X3Rva2VuX2RlZmluZXMKLS0j
IC0tLS0tLS0tLS0tLS0tLS0KLS0jIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgdG9rZW5z
LgotLW00X2RlZmluZShbYjRfdG9rZW5fZGVmaW5lc10sCi0tW2I0X2FueV90b2tlbl92aXNpYmxl
X2lmKFsvKiBUb2tlbnMuICAqLwotLW00X2pvaW4oWwotLV0sIGI0X3N5bWJvbF9tYXAoW2I0X3Rv
a2VuX2RlZmluZV0pKQotLV0pXSkKLS0KLS0KLS0jIGI0X3Rva2VuX2VudW0oVE9LRU4tTlVNKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgdGhlIGRlZmluaXRpb24gb2Yg
dGhpcyB0b2tlbiBhcyBhbiBlbnVtLgotLW00X2RlZmluZShbYjRfdG9rZW5fZW51bV0sCi0tW2I0
X3Rva2VuX2Zvcm1hdChbJXMgPSAlc10sIFskMV0pXSkKLS0KLS0KLS0jIGI0X3Rva2VuX2VudW1z
Ci0tIyAtLS0tLS0tLS0tLS0tLQotLSMgT3V0cHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSB0b2tl
bnMgKGlmIHRoZXJlIGFyZSkgYXMgZW51bXMuCi0tbTRfZGVmaW5lKFtiNF90b2tlbl9lbnVtc10s
Ci0tW2I0X2FueV90b2tlbl92aXNpYmxlX2lmKFtbLyogVG9rZW4gdHlwZS4gICovCi0tI2lmbmRl
ZiBdYjRfYXBpX1BSRUZJWFtUT0tFTlRZUEUKLS0jIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtUT0tF
TlRZUEUKLS0gIGVudW0gXWI0X2FwaV9wcmVmaXhbdG9rZW50eXBlCi0tICB7Ci0tICAgIF1tNF9q
b2luKFssCi0tICAgIF0sCi0tICAgICAgICAgICAgIGI0X3N5bWJvbF9tYXAoW2I0X3Rva2VuX2Vu
dW1dKSlbCi0tICB9OwotLSNlbmRpZgotLV1dKV0pCi0tCi0tCi0tIyBiNF90b2tlbl9lbnVtc19k
ZWZpbmVzCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgdGhlIGRlZmluaXRp
b24gb2YgdGhlIHRva2VucyAoaWYgdGhlcmUgYXJlIGFueSkgYXMgZW51bXMgYW5kLAotLSMgaWYg
UE9TSVggWWFjYyBpcyBlbmFibGVkLCBhcyAjZGVmaW5lcy4KLS1tNF9kZWZpbmUoW2I0X3Rva2Vu
X2VudW1zX2RlZmluZXNdLAotLVtiNF90b2tlbl9lbnVtc1tdYjRfeWFjY19pZihbYjRfdG9rZW5f
ZGVmaW5lc10pXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFNlbWFudGlj
IFZhbHVlcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIGI0X3N5bWJv
bF92YWx1ZShWQUwsIFtTWU1CT0wtTlVNXSwgW1RZUEUtVEFHXSkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNlZSBSRUFETUUuCi0tbTRfZGVm
aW5lKFtiNF9zeW1ib2xfdmFsdWVdLAotLVttNF9pZnZhbChbJDNdLAotLSAgICAgICAgICBbKCQx
LiQzKV0sCi0tICAgICAgICAgIFttNF9pZnZhbChbJDJdLAotLSAgICAgICAgICAgICAgICAgICAg
W2I0X3N5bWJvbF9pZihbJDJdLCBbaGFzX3R5cGVdLAotLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbKCQxLmI0X3N5bWJvbChbJDJdLCBbdHlwZV0pKV0sCi0tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFskMV0pXSwKLS0gICAgICAgICAgICAgICAgICAgIFskMV0p
XSldKQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBEZWZpbmluZyBD
IGZ1bmN0aW9ucy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLQotLSMg
YjRfZnVuY3Rpb25fZGVmaW5lKE5BTUUsIFJFVFVSTi1WQUxVRSwgW0RFQ0wxLCBOQU1FMV0sIC4u
LikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBEZWNsYXJlIHRoZSBmdW5jdGlvbiBOQU1FIGluIEMuCi0tbTRfZGVmaW5l
KFtiNF9mdW5jdGlvbl9kZWZpbmVdLAotLVskMgotLSQxIChiNF9mb3JtYWxzKG00X3NoaWZ0Migk
QCkpKVtdZG5sCi0tXSkKLS0KLS0KLS0jIGI0X2Zvcm1hbHMoW0RFQ0wxLCBOQU1FMV0sIC4uLikK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFRoZSBmb3JtYWwgYXJndW1l
bnRzIG9mIGEgQyBmdW5jdGlvbiBkZWZpbml0aW9uLgotLW00X2RlZmluZShbYjRfZm9ybWFsc10s
Ci0tW200X2lmKFskI10sIFswXSwgW3ZvaWRdLAotLSAgICAgICBbJCMkMV0sIFsxXSwgW3ZvaWRd
LAotLSAgICAgICAgICAgICAgIFttNF9tYXBfc2VwKFtiNF9mb3JtYWxdLCBbLCBdLCBbJEBdKV0p
XSkKLS0KLS1tNF9kZWZpbmUoW2I0X2Zvcm1hbF0sCi0tWyQxXSkKLS0KLS0KLS0KLS0jIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIERlY2xhcmluZyBDIGZ1bmN0aW9ucy4gICMjCi0t
IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIGI0X2Z1bmN0aW9uX2RlY2xh
cmUoTkFNRSwgUkVUVVJOLVZBTFVFLCBbREVDTDEsIE5BTUUxXSwgLi4uKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBE
ZWNsYXJlIHRoZSBmdW5jdGlvbiBOQU1FLgotLW00X2RlZmluZShbYjRfZnVuY3Rpb25fZGVjbGFy
ZV0sCi0tWyQyICQxIChiNF9mb3JtYWxzKG00X3NoaWZ0MigkQCkpKTtbXWRubAotLV0pCi0tCi0t
Ci0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgQ2FsbGluZyBDIGZ1bmN0
aW9ucy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0tIyBiNF9mdW5j
dGlvbl9jYWxsKE5BTUUsIFJFVFVSTi1WQUxVRSwgW0RFQ0wxLCBOQU1FMV0sIC4uLikKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0tIyBDYWxsIHRoZSBmdW5jdGlvbiBOQU1FIHdpdGggYXJndW1lbnRzIE5BTUUxLCBOQU1FMiBl
dGMuCi0tbTRfZGVmaW5lKFtiNF9mdW5jdGlvbl9jYWxsXSwKLS1bJDEgKGI0X2FyZ3MobTRfc2hp
ZnQyKCRAKSkpW11kbmwKLS1dKQotLQotLQotLSMgYjRfYXJncyhbREVDTDEsIE5BTUUxXSwgLi4u
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgT3V0cHV0IHRoZSBhcmd1bWVu
dHMgTkFNRTEsIE5BTUUyLi4uCi0tbTRfZGVmaW5lKFtiNF9hcmdzXSwKLS1bbTRfbWFwX3NlcChb
YjRfYXJnXSwgWywgXSwgWyRAXSldKQotLQotLW00X2RlZmluZShbYjRfYXJnXSwKLS1bJDJdKQot
LQotLQotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgU3luY2xpbmVzLiAgIyMKLS0jIyAtLS0tLS0t
LS0tLSAjIwotLQotLSMgYjRfc3luY19zdGFydChMSU5FLCBGSUxFKQotLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfc3luY19zdGFydF0sIFtbI11saW5lICQxICQy
XSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLSAjIwotLSMjIFVzZXIgYWN0aW9ucy4gICMjCi0t
IyMgLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIGI0X2Nhc2UoTEFCRUwsIFNUQVRFTUVOVFMpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfY2FzZV0sCi0tWyAg
Y2FzZSAkMToKLS0kMgotLWI0X3N5bmNsaW5lKFtAb2xpbmVAXSwgW0BvZmlsZUBdKQotLSAgICBi
cmVhaztdKQotLQotLQotLSMgYjRfcHJlZGljYXRlX2Nhc2UoTEFCRUwsIENPTkRJVElPTlMpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW2I0X3By
ZWRpY2F0ZV9jYXNlXSwKLS1bICBjYXNlICQxOgotLSAgICBpZiAoISAoCi0tJDIpKSBZWUVSUk9S
OwotLWI0X3N5bmNsaW5lKFtAb2xpbmVAXSwgW0BvZmlsZUBdKQotLSAgICBicmVhaztdKQotLQot
LQotLSMgYjRfeXlkZXN0cnVjdF9kZWZpbmUKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBE
ZWZpbmUgdGhlICJ5eWRlc3RydWN0IiBmdW5jdGlvbi4KLS1tNF9kZWZpbmVfZGVmYXVsdChbYjRf
eXlkZXN0cnVjdF9kZWZpbmVdLAotLVtbLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS4KLS18IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRo
aXMgc3ltYm9sLiAgfAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCi0tCi0tXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlkZXN0cnVjdF0sCi0tICAgIFtz
dGF0aWMgdm9pZF0sCi0tICAgIFtbY29uc3QgY2hhciAqeXltc2ddLCAgICBbeXltc2ddXSwKLS0g
ICAgW1tpbnQgeXl0eXBlXSwgICAgICAgICAgIFt5eXR5cGVdXSwKLS0gICAgW1tZWVNUWVBFICp5
eXZhbHVlcF0sICAgIFt5eXZhbHVlcF1dW11kbmwKLS1iNF9sb2NhdGlvbnNfaWYoICAgICAgICAg
ICAgWywgW1tZWUxUWVBFICp5eWxvY2F0aW9ucF0sIFt5eWxvY2F0aW9ucF1dXSlbXWRubAotLW00
X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssIGI0X3BhcnNlX3BhcmFtXSkpWwotLXsKLS1dYjRf
cGFyc2VfcGFyYW1fdXNlKFt5eXZhbHVlcF0sIFt5eWxvY2F0aW9ucF0pZG5sCi0tWyAgaWYgKCF5
eW1zZykKLS0gICAgeXltc2cgPSAiRGVsZXRpbmciOwotLSAgWVlfU1lNQk9MX1BSSU5UICh5eW1z
ZywgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnApOwotLQotLSAgWVlfSUdOT1JFX01BWUJF
X1VOSU5JVElBTElaRURfQkVHSU4KLS0gIF1iNF9zeW1ib2xfYWN0aW9ucyhbZGVzdHJ1Y3Rvcl0p
WwotLSAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECi0tfV1kbmwKLS1dKQotLQot
LQotLSMgYjRfeXlfc3ltYm9sX3ByaW50X2RlZmluZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgRGVmaW5lIHRoZSAieXlfc3ltYm9sX3ByaW50IiBmdW5jdGlvbi4KLS1tNF9kZWZp
bmVfZGVmYXVsdChbYjRfeXlfc3ltYm9sX3ByaW50X2RlZmluZV0sCi0tW1sKLS0vKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgUHJpbnQgdGhpcyBzeW1ib2wncyB2YWx1
ZSBvbiBZWU8uICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS0K
LS1dYjRfZnVuY3Rpb25fZGVmaW5lKFt5eV9zeW1ib2xfdmFsdWVfcHJpbnRdLAotLSAgICBbc3Rh
dGljIHZvaWRdLAotLSAgICAgICAgICAgICAgIFtbRklMRSAqeXlvXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW3l5b11dLAotLSAgICAgICAgICAgICAgIFtbaW50IHl5dHlwZV0sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW3l5dHlwZV1dLAotLSAgICAgICAgICAgICAgIFtbWVlTVFlQ
RSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwXSwgICAgICAgW3l5dmFsdWVwXV1bXWRubAotLWI0X2xv
Y2F0aW9uc19pZihbLCBbW1lZTFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucF0sIFt5eWxv
Y2F0aW9ucF1dXSlbXWRubAotLW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssIGI0X3BhcnNl
X3BhcmFtXSkpWwotLXsKLS0gIEZJTEUgKnl5b3V0cHV0ID0geXlvOwotLV1iNF9wYXJzZV9wYXJh
bV91c2UoW3l5b3V0cHV0XSwgW3l5bG9jYXRpb25wXSlkbmwKLS1bICBpZiAoIXl5dmFsdWVwKQot
LSAgICByZXR1cm47XQotLWRubCBnbHIuYyBkb2VzIG5vdCBmZWF0dXJlIHl5dG9rbnVtLgotLW00
X2lmKGI0X3NrZWxldG9uLCBbInlhY2MuYyJdLAotLVtbIyBpZmRlZiBZWVBSSU5UCi0tICBpZiAo
eXl0eXBlIDwgWVlOVE9LRU5TKQotLSAgICBZWVBSSU5UICh5eW8sIHl5dG9rbnVtW3l5dHlwZV0s
ICp5eXZhbHVlcCk7Ci0tIyBlbmRpZgotLV1dKWRubAotLSAgYjRfc3ltYm9sX2FjdGlvbnMoW3By
aW50ZXJdKVsKLS19Ci0tCi0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0tfCBQ
cmludCB0aGlzIHN5bWJvbCBvbiBZWU8uICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCi0tCi0tXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlfc3ltYm9sX3ByaW50XSwKLS0gICAgW3N0
YXRpYyB2b2lkXSwKLS0gICAgICAgICAgICAgICBbW0ZJTEUgKnl5b10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFt5eW9dXSwKLS0gICAgICAgICAgICAgICBbW2ludCB5eXR5cGVdLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFt5eXR5cGVdXSwKLS0gICAgICAgICAgICAgICBbW1lZU1RZ
UEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcF0sICAgICAgIFt5eXZhbHVlcF1dW11kbmwKLS1iNF9s
b2NhdGlvbnNfaWYoWywgW1tZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnBdLCBbeXls
b2NhdGlvbnBdXV0pW11kbmwKLS1tNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbLCBiNF9wYXJz
ZV9wYXJhbV0pKVsKLS17Ci0tICBZWUZQUklOVEYgKHl5bywgIiVzICVzICgiLAotLSAgICAgICAg
ICAgICB5eXR5cGUgPCBZWU5UT0tFTlMgPyAidG9rZW4iIDogIm50ZXJtIiwgeXl0bmFtZVt5eXR5
cGVdKTsKLS0KLS1dYjRfbG9jYXRpb25zX2lmKFsgIFlZX0xPQ0FUSU9OX1BSSU5UICh5eW8sICp5
eWxvY2F0aW9ucCk7Ci0tICBZWUZQUklOVEYgKHl5bywgIjogIik7Ci0tXSlkbmwKLS1bICB5eV9z
eW1ib2xfdmFsdWVfcHJpbnQgKHl5bywgeXl0eXBlLCB5eXZhbHVlcF1kbmwKLS1iNF9sb2NhdGlv
bnNfaWYoWywgeXlsb2NhdGlvbnBdKVtdYjRfdXNlcl9hcmdzWyk7Ci0tICBZWUZQUklOVEYgKHl5
bywgIikiKTsKLS19XWRubAotLV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMj
IGFwaS52YWx1ZS50eXBlLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0tIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKLS0jIGFwaS52YWx1ZS50eXBlPXVuaW9uLiAgIwotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCi0tCi0tIyBiNF9zeW1ib2xfdHlwZV9yZWdpc3RlcihT
WU1CT0wtTlVNKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFN5
bWJvbCBTWU1CT0wtTlVNIGhhcyBhIHR5cGUgKGZvciB2YXJpYW50KSBpbnN0ZWFkIG9mIGEgdHlw
ZS10YWcuCi0tIyBFeHRlbmQgdGhlIGRlZmluaXRpb24gb2YgJXVuaW9uJ3MgYm9keSAoYjRfdW5p
b25fbWVtYmVycykgd2l0aCBhCi0tIyBmaWVsZCBvZiB0aGF0IHR5cGUsIGFuZCBleHRlbmQgdGhl
IHN5bWJvbCdzICJ0eXBlIiBmaWVsZCB0byBwb2ludCB0bwotLSMgdGhlIGZpZWxkIG5hbWUsIGlu
c3RlYWQgb2YgdGhlIHR5cGUgbmFtZS4KLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF90eXBlX3JlZ2lz
dGVyXSwKLS1bbTRfZGVmaW5lKFtiNF9zeW1ib2woJDEsIHR5cGVfdGFnKV0sCi0tICAgICAgICAg
ICBbYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfaWRdLAotLSAgICAgICAgICAgICAgICAgICAgICAg
ICBbYjRfc3ltYm9sKFskMV0sIFtpZF0pXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgW3l5
dHlwZV9bXWI0X3N5bWJvbChbJDFdLCBbbnVtYmVyXSldKV0pZG5sCi0tbTRfYXBwZW5kKFtiNF91
bmlvbl9tZW1iZXJzXSwKLS1tNF9leHBhbmQoWwotLSAgYjRfc3ltYm9sX3RhZ19jb21tZW50KFsk
MV0pZG5sCi0tICBiNF9zeW1ib2woWyQxXSwgW3R5cGVdKSBiNF9zeW1ib2woWyQxXSwgW3R5cGVf
dGFnXSk7XSkpCi0tXSkKLS0KLS0KLS0jIGI0X3R5cGVfZGVmaW5lX3RhZyhTWU1CT0wxLU5VTSwg
Li4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBGb3IgdGhl
IGJhdGNoIG9mIHN5bWJvbHMgU1lNQk9MMS1OVU0uLi4gKHdoaWNoIGFsbCBoYXZlIHRoZSBzYW1l
Ci0tIyB0eXBlKSwgZW5oYW5jZSB0aGUgJXVuaW9uIGRlZmluaXRpb24gZm9yIGVhY2ggb2YgdGhl
bSwgYW5kIHNldAotLSMgdGhlcmUgInR5cGUiIGZpZWxkIHRvIHRoZSBmaWVsZCB0YWcgbmFtZSwg
aW5zdGVhZCBvZiB0aGUgdHlwZSBuYW1lLgotLW00X2RlZmluZShbYjRfdHlwZV9kZWZpbmVfdGFn
XSwKLS1bYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfdHlwZV0sCi0tICAgICAgICAgICAgICBbbTRf
bWFwKFtiNF9zeW1ib2xfdHlwZV9yZWdpc3Rlcl0sIFskQF0pXSkKLS1dKQotLQotLQotLSMgYjRf
c3ltYm9sX3ZhbHVlX3VuaW9uKFZBTCwgU1lNQk9MLU5VTSwgW1RZUEVdKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU2FtZSBvZiBiNF9zeW1i
b2xfdmFsdWUsIGJ1dCB3aGVuIGFwaS52YWx1ZS50eXBlPXVuaW9uLgotLW00X2RlZmluZShbYjRf
c3ltYm9sX3ZhbHVlX3VuaW9uXSwKLS1bbTRfaWZ2YWwoWyQzXSwKLS0gICAgICAgICAgWygqKCQz
KikoJiQxKSldLAotLSAgICAgICAgICBbbTRfaWZ2YWwoWyQyXSwKLS0gICAgICAgICAgICAgICAg
ICAgIFtiNF9zeW1ib2xfaWYoWyQyXSwgW2hhc190eXBlXSwKLS0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWygkMS5iNF9zeW1ib2woWyQyXSwgW3R5cGVfdGFnXSkpXSwKLS0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyQxXSldLAotLSAgICAgICAgICAgICAgICAg
ICAgWyQxXSldKV0pCi0tCi0tCi0tIyBiNF92YWx1ZV90eXBlX3NldHVwX3VuaW9uCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTZXR1cCBzdXBwb3J0IGZvciBhcGkudmFsdWUudHlw
ZT11bmlvbi4gIFN5bWJvbHMgYXJlIGRlZmluZWQgd2l0aCBhCi0tIyB0eXBlIGluc3RlYWQgb2Yg
YSB1bmlvbiBtZW1iZXIgbmFtZTogYnVpbGQgdGhlIGNvcnJlc3BvbmRpbmcgdW5pb24sCi0tIyBh
bmQgZ2l2ZSB0aGUgc3ltYm9scyB0aGVpciB0YWcuCi0tbTRfZGVmaW5lKFtiNF92YWx1ZV90eXBl
X3NldHVwX3VuaW9uXSwKLS1bbTRfZGVmaW5lKFtiNF91bmlvbl9tZW1iZXJzXSkKLS1iNF90eXBl
X2ZvcmVhY2goW2I0X3R5cGVfZGVmaW5lX3RhZ10pCi0tbTRfY29weV9mb3JjZShbYjRfc3ltYm9s
X3ZhbHVlX3VuaW9uXSwgW2I0X3N5bWJvbF92YWx1ZV0pCi0tXSkKLS0KLS0KLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICMKLS0jIGFwaS52YWx1ZS50eXBlID0gdmFyaWFudC4gICMKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKLS0KLS0jIGI0X3ZhbHVlX3R5cGVfc2V0dXBf
dmFyaWFudAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTZXR1cCBzdXBwb3J0
IGZvciBhcGkudmFsdWUudHlwZT12YXJpYW50LiAgQnkgZGVmYXVsdCwgZmFpbCwgc3BlY2lhbGl6
ZWQKLS0jIGJ5IG90aGVyIHNrZWxldG9ucy4KLS1tNF9kZWZpbmUoW2I0X3ZhbHVlX3R5cGVfc2V0
dXBfdmFyaWFudF0sCi0tW2I0X2NvbXBsYWluX2F0KGI0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2Mo
W1thcGkudmFsdWUudHlwZV1dKSwKLS0gICAgICAgICAgICAgICAgW1snJXMnIGRvZXMgbm90IHN1
cHBvcnQgJyVzJ11dLAotLSAgICAgICAgICAgICAgICBbYjRfc2tlbGV0b25dLAotLSAgICAgICAg
ICAgICAgICBbJWRlZmluZSBhcGkudmFsdWUudHlwZSB2YXJpYW50XSldKQotLQotLQotLSMgX2I0
X3ZhbHVlX3R5cGVfc2V0dXBfa2V5d29yZAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgYXBpLnZhbHVlLnR5cGUgaXMgZGVmaW5lZCB3aXRoIGEga2V5d29yZC9zdHJpbmcgc3lu
dGF4LiAgQ2hlY2sgaWYKLS0jIHRoYXQgaXMgcHJvcGVybHkgZGVmaW5lZCwgYW5kIHByZXBhcmUg
aXRzIHVzZS4KLS1tNF9kZWZpbmUoW19iNF92YWx1ZV90eXBlX3NldHVwX2tleXdvcmRdLAotLVti
NF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXMoW1tbW2FwaS52YWx1ZS50eXBlXV0sCi0tICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbm9uZV1dLAotLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbW3VuaW9uXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtbdW5pb24tZGlyZWN0aXZlXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtbdmFyaWFudF1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbW3l5c3R5cGVdXV1dKWRubAotLW00X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbYXBp
LnZhbHVlLnR5cGVdXSksCi0tICAgICAgICBbdW5pb25dLCAgIFtiNF92YWx1ZV90eXBlX3NldHVw
X3VuaW9uXSwKLS0gICAgICAgIFt2YXJpYW50XSwgW2I0X3ZhbHVlX3R5cGVfc2V0dXBfdmFyaWFu
dF0pXSkKLS0KLS0KLS0jIGI0X3ZhbHVlX3R5cGVfc2V0dXAKLS0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIENoZWNrIGlmIGFwaS52YWx1ZS50eXBlIGlzIHByb3Blcmx5IGRlZmluZWQsIGFuZCBw
b3NzaWJseSBwcmVwYXJlCi0tIyBpdHMgdXNlLgotLWI0X2RlZmluZV9zaWxlbnQoW2I0X3ZhbHVl
X3R5cGVfc2V0dXBdLAotLVsjIERlZmluZSBkZWZhdWx0IHZhbHVlLgotLWI0X3BlcmNlbnRfZGVm
aW5lX2lmZGVmKFtbYXBpLnZhbHVlLnR5cGVdXSwgW10sCi0tWyMgJXVuaW9uID0+IGFwaS52YWx1
ZS50eXBlPXVuaW9uLWRpcmVjdGl2ZQotLW00X2lmZGVmKFtiNF91bmlvbl9tZW1iZXJzXSwKLS1b
bTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9raW5kKGFwaS52YWx1ZS50eXBlKV0sIFtrZXl3
b3JkXSkKLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lKGFwaS52YWx1ZS50eXBlKV0sIFt1
bmlvbi1kaXJlY3RpdmVdKV0sCi0tWyMgbm8gdGFnIHNlZW4gPT4gYXBpLnZhbHVlLnR5cGU9e2lu
dH0KLS1tNF9pZihiNF90YWdfc2Vlbl9mbGFnLCAwLAotLVttNF9kZWZpbmUoW2I0X3BlcmNlbnRf
ZGVmaW5lX2tpbmQoYXBpLnZhbHVlLnR5cGUpXSwgW2NvZGVdKQotLW00X2RlZmluZShbYjRfcGVy
Y2VudF9kZWZpbmUoYXBpLnZhbHVlLnR5cGUpXSwgW2ludF0pXSwKLS1bIyBvdGhlcndpc2UgYXBp
LnZhbHVlLnR5cGU9eXlzdHlwZQotLW00X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfa2luZChh
cGkudmFsdWUudHlwZSldLCBba2V5d29yZF0pCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmlu
ZShhcGkudmFsdWUudHlwZSldLCBbeXlzdHlwZV0pXSldKV0pCi0tCi0tIyBTZXQgdXAuCi0tbTRf
Ym1hdGNoKGI0X3BlcmNlbnRfZGVmaW5lX2dldF9raW5kKFtbYXBpLnZhbHVlLnR5cGVdXSksCi0t
ICAgW2tleXdvcmRcfHN0cmluZ10sIFtfYjRfdmFsdWVfdHlwZV9zZXR1cF9rZXl3b3JkXSkKLS1d
KQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tICMjCi0tIyMgRGVjbGFyYXRpb25zLiAgIyMKLS0j
IyAtLS0tLS0tLS0tLS0tLSAjIwotLQotLQotLSMgYjRfdmFsdWVfdHlwZV9kZWZpbmUKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtiNF92YWx1ZV90eXBlX2RlZmluZV0sCi0t
W2I0X3ZhbHVlX3R5cGVfc2V0dXBbXWRubAotLS8qIFZhbHVlIHR5cGUuICAqLwotLW00X2JtYXRj
aChiNF9wZXJjZW50X2RlZmluZV9nZXRfa2luZChbW2FwaS52YWx1ZS50eXBlXV0pLAotLVtjb2Rl
XSwKLS1bWyNpZiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbU1RZUEUgJiYgISBkZWZpbmVkIF1i
NF9hcGlfUFJFRklYW1NUWVBFX0lTX0RFQ0xBUkVECi0tdHlwZWRlZiBdYjRfcGVyY2VudF9kZWZp
bmVfZ2V0KFtbYXBpLnZhbHVlLnR5cGVdXSlbIF1iNF9hcGlfUFJFRklYW1NUWVBFOwotLSMgZGVm
aW5lIF1iNF9hcGlfUFJFRklYW1NUWVBFX0lTX1RSSVZJQUwgMQotLSMgZGVmaW5lIF1iNF9hcGlf
UFJFRklYW1NUWVBFX0lTX0RFQ0xBUkVEIDEKLS0jZW5kaWYKLS1dXSwKLS1bbTRfYm1hdGNoKGI0
X3BlcmNlbnRfZGVmaW5lX2dldChbW2FwaS52YWx1ZS50eXBlXV0pLAotLVt1bmlvblx8dW5pb24t
ZGlyZWN0aXZlXSwKLS1bWyNpZiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbU1RZUEUgJiYgISBk
ZWZpbmVkIF1iNF9hcGlfUFJFRklYW1NUWVBFX0lTX0RFQ0xBUkVECi0tXWI0X3BlcmNlbnRfZGVm
aW5lX2dldF9zeW5jbGluZShbW2FwaS52YWx1ZS51bmlvbi5uYW1lXV0pWwotLXVuaW9uIF1iNF9w
ZXJjZW50X2RlZmluZV9nZXQoW1thcGkudmFsdWUudW5pb24ubmFtZV1dKVsKLS17Ci0tXWI0X3Vz
ZXJfdW5pb25fbWVtYmVyc1sKLS19OwotLV1iNF9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmUo
W1thcGkudmFsdWUudW5pb24ubmFtZV1dKVsKLS10eXBlZGVmIHVuaW9uIF1iNF9wZXJjZW50X2Rl
ZmluZV9nZXQoW1thcGkudmFsdWUudW5pb24ubmFtZV1dKVsgXWI0X2FwaV9QUkVGSVhbU1RZUEU7
Ci0tIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNfVFJJVklBTCAxCi0tIyBkZWZpbmUg
XWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNfREVDTEFSRUQgMQotLSNlbmRpZgotLV1dKV0pXSkKLS0K
LS0KLS0jIGI0X2xvY2F0aW9uX3R5cGVfZGVmaW5lCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLW00X2RlZmluZShbYjRfbG9jYXRpb25fdHlwZV9kZWZpbmVdLAotLVtbLyogTG9jYXRpb24g
dHlwZS4gICovCi0tI2lmICEgZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtMVFlQRSAmJiAhIGRlZmlu
ZWQgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfREVDTEFSRUQKLS10eXBlZGVmIHN0cnVjdCBdYjRf
YXBpX1BSRUZJWFtMVFlQRSBdYjRfYXBpX1BSRUZJWFtMVFlQRTsKLS1zdHJ1Y3QgXWI0X2FwaV9Q
UkVGSVhbTFRZUEUKLS17Ci0tICBpbnQgZmlyc3RfbGluZTsKLS0gIGludCBmaXJzdF9jb2x1bW47
Ci0tICBpbnQgbGFzdF9saW5lOwotLSAgaW50IGxhc3RfY29sdW1uOwotLX07Ci0tIyBkZWZpbmUg
XWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfREVDTEFSRUQgMQotLSMgZGVmaW5lIF1iNF9hcGlfUFJF
RklYW0xUWVBFX0lTX1RSSVZJQUwgMQotLSNlbmRpZgotLV1dKQotLQotLQotLSMgYjRfZGVjbGFy
ZV95eWxzdHlwZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVjbGFyYXRpb25zIHRoYXQg
bWlnaHQgZWl0aGVyIGdvIGludG8gdGhlIGhlYWRlciAoaWYgLS1kZWZpbmVzKSBvcgotLSMgaW4g
dGhlIHBhcnNlciBib2R5LiAgRGVjbGFyZSBZWVNUWVBFL1lZTFRZUEUsIGFuZCB5eWx2YWwveXls
bG9jLgotLW00X2RlZmluZShbYjRfZGVjbGFyZV95eWxzdHlwZV0sCi0tW2I0X3ZhbHVlX3R5cGVf
ZGVmaW5lW11iNF9sb2NhdGlvbnNfaWYoWwotLWI0X2xvY2F0aW9uX3R5cGVfZGVmaW5lXSkKLS0K
LS1iNF9wdXJlX2lmKFtdLCBbW2V4dGVybiBdYjRfYXBpX1BSRUZJWFtTVFlQRSBdYjRfcHJlZml4
W2x2YWw7Ci0tXWI0X2xvY2F0aW9uc19pZihbW2V4dGVybiBdYjRfYXBpX1BSRUZJWFtMVFlQRSBd
YjRfcHJlZml4W2xsb2M7XV0pXSlbXWRubAotLV0pCi0tCi0tCi0tIyBiNF9ZWURFQlVHX2RlZmlu
ZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW2I0X1lZREVCVUdfZGVmaW5lXSwK
LS1bWy8qIERlYnVnIHRyYWNlcy4gICovCi0tXW00X2lmKGI0X2FwaV9wcmVmaXgsIFt5eV0sCi0t
W1sjaWZuZGVmIFlZREVCVUcKLS0jIGRlZmluZSBZWURFQlVHIF1iNF9wYXJzZV90cmFjZV9pZihb
MV0sIFswXSlbCi0tI2VuZGlmXV0sCi0tW1sjaWZuZGVmIF1iNF9hcGlfUFJFRklYW0RFQlVHCi0t
IyBpZiBkZWZpbmVkIFlZREVCVUcKLS0jaWYgWVlERUJVRwotLSMgICBkZWZpbmUgXWI0X2FwaV9Q
UkVGSVhbREVCVUcgMQotLSMgIGVsc2UKLS0jICAgZGVmaW5lIF1iNF9hcGlfUFJFRklYW0RFQlVH
IDAKLS0jICBlbmRpZgotLSMgZWxzZSAvKiAhIGRlZmluZWQgWVlERUJVRyAqLwotLSMgIGRlZmlu
ZSBdYjRfYXBpX1BSRUZJWFtERUJVRyBdYjRfcGFyc2VfdHJhY2VfaWYoWzFdLCBbMF0pWwotLSMg
ZW5kaWYgLyogISBkZWZpbmVkIFlZREVCVUcgKi8KLS0jZW5kaWYgIC8qICEgZGVmaW5lZCBdYjRf
YXBpX1BSRUZJWFtERUJVRyAqL11dKVtdZG5sCi0tXSkKLS0KLS0jIGI0X2RlY2xhcmVfeXlkZWJ1
ZwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtiNF9kZWNsYXJlX3l5ZGVidWdd
LAotLVtiNF9ZWURFQlVHX2RlZmluZVsKLS0jaWYgXWI0X2FwaV9QUkVGSVhbREVCVUcKLS1leHRl
cm4gaW50IF1iNF9wcmVmaXhbZGVidWc7Ci0tI2VuZGlmXVtdZG5sCi0tXSkKLS0KLS0jIGI0X3l5
bGxvY19kZWZhdWx0X2RlZmluZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWZp
bmUgWVlMTE9DX0RFRkFVTFQuCi0tbTRfZGVmaW5lKFtiNF95eWxsb2NfZGVmYXVsdF9kZWZpbmVd
LAotLVtbLyogWVlMTE9DX0RFRkFVTFQgLS0gU2V0IENVUlJFTlQgdG8gc3BhbiBmcm9tIFJIU1sx
XSB0byBSSFNbTl0uCi0tICAgSWYgTiBpcyAwLCB0aGVuIHNldCBDVVJSRU5UIHRvIHRoZSBlbXB0
eSBsb2NhdGlvbiB3aGljaCBlbmRzCi0tICAgdGhlIHByZXZpb3VzIHN5bWJvbDogUkhTWzBdIChh
bHdheXMgZGVmaW5lZCkuICAqLwotLQotLSNpZm5kZWYgWVlMTE9DX0RFRkFVTFQKLS0jIGRlZmlu
ZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIGlmIChOKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJIU0xPQyAo
UmhzLCAxKS5maXJzdF9saW5lOyAgICAgICAgXAotLSAgICAgICAgICAoQ3VycmVudCkuZmlyc3Rf
Y29sdW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29sdW1uOyAgICAgIFwKLS0gICAgICAg
ICAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsg
ICAgICAgICBcCi0tICAgICAgICAgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZWVJIU0xPQyAo
UmhzLCBOKS5sYXN0X2NvbHVtbjsgICAgICAgXAotLSAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBl
bHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAoQ3VycmVudCkuZmlyc3Rf
bGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0gICAgICAgICAgICAgIFwKLS0gICAgICAg
ICAgICBZWVJIU0xPQyAoUmhzLCAwKS5sYXN0X2xpbmU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAgICAgICAgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSAoQ3VycmVudCku
bGFzdF9jb2x1bW4gPSAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIFlZUkhTTE9DIChSaHMs
IDApLmxhc3RfY29sdW1uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAgIHdoaWxlICgwKQotLSNlbmRpZgotLV1dKQotLQotLSMgYjRfeXlfbG9j
YXRpb25fcHJpbnRfZGVmaW5lCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERl
ZmluZSBZWV9MT0NBVElPTl9QUklOVC4KLS1tNF9kZWZpbmUoW2I0X3l5X2xvY2F0aW9uX3ByaW50
X2RlZmluZV0sCi0tW2I0X2xvY2F0aW9uc19pZihbWwotLS8qIFlZX0xPQ0FUSU9OX1BSSU5UIC0t
IFByaW50IHRoZSBsb2NhdGlvbiBvbiB0aGUgc3RyZWFtLgotLSAgIFRoaXMgbWFjcm8gd2FzIG5v
dCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZpbmUgb25seSBpZiB3ZSBrbm93Ci0tICAgd2Ugd29u
J3QgYnJlYWsgdXNlciBjb2RlOiB3aGVuIHRoZXNlIGFyZSB0aGUgbG9jYXRpb25zIHdlIGtub3cu
ICAqLwotLQotLSNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKLS0jIGlmIGRlZmluZWQgXWI0X2Fw
aV9QUkVGSVhbTFRZUEVfSVNfVFJJVklBTCAmJiBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19UUklW
SUFMCi0tCi0tLyogUHJpbnQgKllZTE9DUCBvbiBZWU8uICBQcml2YXRlLCBkbyBub3QgcmVseSBv
biBpdHMgZXhpc3RlbmNlLiAqLwotLQotLVlZX0FUVFJJQlVURV9VTlVTRUQKLS1dYjRfZnVuY3Rp
b25fZGVmaW5lKFt5eV9sb2NhdGlvbl9wcmludF9dLAotLSAgICBbc3RhdGljIGludF0sCi0tICAg
ICAgICAgICAgICAgW1tGSUxFICp5eW9dLCAgICAgICAgICAgICAgICAgICAgW3l5b11dLAotLSAg
ICAgICAgICAgICAgIFtbWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcF0sIFt5eWxvY3BdXSlb
Ci0tewotLSAgaW50IHJlcyA9IDA7Ci0tICBpbnQgZW5kX2NvbCA9IDAgIT0geXlsb2NwLT5sYXN0
X2NvbHVtbiA/IHl5bG9jcC0+bGFzdF9jb2x1bW4gLSAxIDogMDsKLS0gIGlmICgwIDw9IHl5bG9j
cC0+Zmlyc3RfbGluZSkKLS0gICAgewotLSAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIiVk
IiwgeXlsb2NwLT5maXJzdF9saW5lKTsKLS0gICAgICBpZiAoMCA8PSB5eWxvY3AtPmZpcnN0X2Nv
bHVtbikKLS0gICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIi4lZCIsIHl5bG9jcC0+Zmly
c3RfY29sdW1uKTsKLS0gICAgfQotLSAgaWYgKDAgPD0geXlsb2NwLT5sYXN0X2xpbmUpCi0tICAg
IHsKLS0gICAgICBpZiAoeXlsb2NwLT5maXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCi0t
ICAgICAgICB7Ci0tICAgICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIi0lZCIsIHl5bG9j
cC0+bGFzdF9saW5lKTsKLS0gICAgICAgICAgaWYgKDAgPD0gZW5kX2NvbCkKLS0gICAgICAgICAg
ICByZXMgKz0gWVlGUFJJTlRGICh5eW8sICIuJWQiLCBlbmRfY29sKTsKLS0gICAgICAgIH0KLS0g
ICAgICBlbHNlIGlmICgwIDw9IGVuZF9jb2wgJiYgeXlsb2NwLT5maXJzdF9jb2x1bW4gPCBlbmRf
Y29sKQotLSAgICAgICAgcmVzICs9IFlZRlBSSU5URiAoeXlvLCAiLSVkIiwgZW5kX2NvbCk7Ci0t
ICAgIH0KLS0gIHJldHVybiByZXM7Ci0tIH0KLS0KLS0jICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJ
TlQoRmlsZSwgTG9jKSAgICAgICAgICBcCi0tICB5eV9sb2NhdGlvbl9wcmludF8gKEZpbGUsICYo
TG9jKSkKLS0KLS0jIGVsc2UKLS0jICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9j
KSAoKHZvaWQpIDApCi0tIyBlbmRpZgotLSNlbmRpZl1dLAotLVtbLyogVGhpcyBtYWNybyBpcyBw
cm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKi8KLS0jaWZuZGVmIFlZX0xPQ0FU
SU9OX1BSSU5UCi0tIyBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAoKHZvaWQp
IDApCi0tI2VuZGlmXV0pCi0tXSkKLS0KLS0jIGI0X3l5bG9jX2RlZmF1bHQKLS0jIC0tLS0tLS0t
LS0tLS0tLS0KLS0jIEV4cGFuZCB0byBhIHBvc3NpYmxlIGRlZmF1bHQgdmFsdWUgZm9yIHl5bGxv
Yy4KLS1tNF9kZWZpbmUoW2I0X3l5bG9jX2RlZmF1bHRdLAotLVtbCi0tIyBpZiBkZWZpbmVkIF1i
NF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwgJiYgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNf
VFJJVklBTAotLSAgPSB7IF1tNF9qb2luKFssIF0sCi0tICAgICAgICAgICAgICAgbTRfZGVmbihb
YjRfbG9jYXRpb25faW5pdGlhbF9saW5lXSksCi0tICAgICAgICAgICAgICAgbTRfZGVmbihbYjRf
bG9jYXRpb25faW5pdGlhbF9jb2x1bW5dKSwKLS0gICAgICAgICAgICAgICBtNF9kZWZuKFtiNF9s
b2NhdGlvbl9pbml0aWFsX2xpbmVdKSwKLS0gICAgICAgICAgICAgICBtNF9kZWZuKFtiNF9sb2Nh
dGlvbl9pbml0aWFsX2NvbHVtbl0pKVsgfQotLSMgZW5kaWYKLS1dXSkKLWRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxl
dG9ucy95YWNjLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3Ro
aXJkX3BhcnR5L3NrZWxldG9ucy95YWNjLmMKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5k
ZXggNTRlNDBlNjc0MTIuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy95YWNjLmMKLSsrKyAvZGV2
L251bGwKLUBAIC0xLDE5MjcgKzAsMCBAQAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQyAtKi0KLS0jIFlhY2MgY29tcGF0
aWJsZSBza2VsZXRvbiBmb3IgQmlzb24KLS0KLS0jIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0x
OTkwLCAyMDAwLTIwMTUsIDIwMTgtMjAxOSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJ
bmMuCi0tCi0tbTRfcHVzaGRlZihbYjRfY29weXJpZ2h0X3llYXJzXSwKLS0gICAgICAgICAgIFsx
OTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxNSwgMjAxOC0yMDE5XSkKLS0KLS0jIFRoaXMgcHJvZ3Jh
bSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5
Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy
IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
LSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu
b3JnL2xpY2Vuc2VzLz4uCi0tCi0tIyBDaGVjayB0aGUgdmFsdWUgb2YgJWRlZmluZSBhcGkucHVz
aC1wdWxsLgotLWI0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1thcGkucHVzaC1wdWxsXV0sIFtb
cHVsbF1dKQotLWI0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbYXBpLnB1c2gtcHVs
bF1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbcHVsbF1dLCBbW3B1c2hd
XSwgW1tib3RoXV1dXSkKLS1iNF9kZWZpbmVfZmxhZ19pZihbcHVsbF0pIG00X2RlZmluZShbYjRf
cHVsbF9mbGFnXSwgW1sxXV0pCi0tYjRfZGVmaW5lX2ZsYWdfaWYoW3B1c2hdKSBtNF9kZWZpbmUo
W2I0X3B1c2hfZmxhZ10sIFtbMV1dKQotLW00X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtb
YXBpLnB1c2gtcHVsbF1dKSwKLS0gICAgICAgIFtwdWxsXSwgW200X2RlZmluZShbYjRfcHVzaF9m
bGFnXSwgW1swXV0pXSwKLS0gICAgICAgIFtwdXNoXSwgW200X2RlZmluZShbYjRfcHVsbF9mbGFn
XSwgW1swXV0pXSkKLS0KLS0jIEhhbmRsZSBCSVNPTl9VU0VfUFVTSF9GT1JfUFVMTCBmb3IgdGhl
IHRlc3Qgc3VpdGUuICBTbyB0aGF0IHB1c2ggcGFyc2luZwotLSMgdGVzdHMgZnVuY3Rpb24gYXMg
d3JpdHRlbiwgZG8gbm90IGxldCBCSVNPTl9VU0VfUFVTSF9GT1JfUFVMTCBtb2RpZnkgdGhlCi0t
IyBiZWhhdmlvciBvZiBCaXNvbiBhdCBhbGwgd2hlbiBwdXNoIHBhcnNpbmcgaXMgYWxyZWFkeSBy
ZXF1ZXN0ZWQuCi0tYjRfZGVmaW5lX2ZsYWdfaWYoW3VzZV9wdXNoX2Zvcl9wdWxsXSkKLS1iNF91
c2VfcHVzaF9mb3JfcHVsbF9pZihbCi0tICBiNF9wdXNoX2lmKFttNF9kZWZpbmUoW2I0X3VzZV9w
dXNoX2Zvcl9wdWxsX2ZsYWddLCBbWzBdXSldLAotLSAgICAgICAgICAgICBbbTRfZGVmaW5lKFti
NF9wdXNoX2ZsYWddLCBbWzFdXSldKV0pCi0tCi0tIyBDaGVjayB0aGUgdmFsdWUgb2YgJWRlZmlu
ZSBwYXJzZS5sYWMgYW5kIGZyaWVuZHMsIHdoZXJlIExBQyBzdGFuZHMgZm9yCi0tIyBsb29rYWhl
YWQgY29ycmVjdGlvbi4KLS1iNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbcGFyc2UubGFjXV0s
IFtbbm9uZV1dKQotLWI0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1twYXJzZS5sYWMuZXMtY2Fw
YWNpdHktaW5pdGlhbF1dLCBbWzIwXV0pCi0tYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVsdChbW3Bh
cnNlLmxhYy5tZW1vcnktdHJhY2VdXSwgW1tmYWlsdXJlc11dKQotLWI0X3BlcmNlbnRfZGVmaW5l
X2NoZWNrX3ZhbHVlcyhbW1tbcGFyc2UubGFjXV0sIFtbZnVsbF1dLCBbW25vbmVdXV1dLAotLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1tbcGFyc2UubGFjLm1lbW9yeS10cmFjZV1d
LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbZmFpbHVyZXNdXSwgW1tmdWxs
XV1dXSkKLS1iNF9kZWZpbmVfZmxhZ19pZihbbGFjXSkKLS1tNF9kZWZpbmUoW2I0X2xhY19mbGFn
XSwKLS0gICAgICAgICAgW200X2lmKGI0X3BlcmNlbnRfZGVmaW5lX2dldChbW3BhcnNlLmxhY11d
KSwKLS0gICAgICAgICAgICAgICAgIFtub25lXSwgW1swXV0sIFtbMV1dKV0pCi0tCi0tbTRfaW5j
bHVkZShiNF9za2VsZXRvbnNkaXIvW2MubTRdKQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMK
LS0jIyBEZWZhdWx0IHZhbHVlcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMg
U3RhY2sgcGFyYW1ldGVycy4KLS1tNF9kZWZpbmVfZGVmYXVsdChbYjRfc3RhY2tfZGVwdGhfbWF4
XSwgWzEwMDAwXSkKLS1tNF9kZWZpbmVfZGVmYXVsdChbYjRfc3RhY2tfZGVwdGhfaW5pdF0sICBb
MjAwXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBQdXJlL2lt
cHVyZSBpbnRlcmZhY2VzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0K
LS1iNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbYXBpLnB1cmVdXSwgW1tmYWxzZV1dKQotLWI0
X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbYXBpLnB1cmVdXSwKLS0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbW2ZhbHNlXV0sIFtbdHJ1ZV1dLCBbW11dLCBbW2Z1bGxd
XV1dKQotLQotLW00X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1swXV0pCi0tbTRfY2FzZShiNF9w
ZXJjZW50X2RlZmluZV9nZXQoW1thcGkucHVyZV1dKSwKLS0gICAgICAgIFtmYWxzZV0sIFttNF9k
ZWZpbmUoW2I0X3B1cmVfZmxhZ10sIFtbMF1dKV0sCi0tICAgICAgICBbdHJ1ZV0sICBbbTRfZGVm
aW5lKFtiNF9wdXJlX2ZsYWddLCBbWzFdXSldLAotLSAgICAgICAgW10sICAgICAgW200X2RlZmlu
ZShbYjRfcHVyZV9mbGFnXSwgW1sxXV0pXSwKLS0gICAgICAgIFtmdWxsXSwgIFttNF9kZWZpbmUo
W2I0X3B1cmVfZmxhZ10sIFtbMl1dKV0pCi0tCi0tbTRfZGVmaW5lKFtiNF9wdXJlX2lmXSwKLS1b
bTRfY2FzZShiNF9wdXJlX2ZsYWcsCi0tICAgICAgICAgWzBdLCBbJDJdLAotLSAgICAgICAgIFsx
XSwgWyQxXSwKLS0gICAgICAgICBbMl0sIFskMV0pXSkKLS0gICAgICAgICBbbTRfZmF0YWwoW2lu
dmFsaWQgYXBpLnB1cmUgdmFsdWU6IF0kMSldKV0pCi0tCi0tIyBiNF95eWVycm9yX2FyZ19sb2Nf
aWYoQVJHKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCBBUkcgaWZm
IHl5ZXJyb3IgaXMgdG8gYmUgZ2l2ZW4gYSBsb2NhdGlvbiBhcyBhcmd1bWVudC4KLS1tNF9kZWZp
bmUoW2I0X3l5ZXJyb3JfYXJnX2xvY19pZl0sCi0tW2I0X2xvY2F0aW9uc19pZihbbTRfY2FzZShi
NF9wdXJlX2ZsYWcsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbMV0sIFttNF9pZnNldChb
YjRfcGFyc2VfcGFyYW1dLCBbJDFdKV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbMl0s
IFskMV0pXSldKQotLQotLSMgYjRfeXllcnJvcl9hcmdzCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0j
IEFyZ3VtZW50cyBwYXNzZWQgdG8geXllcnJvcjogdXNlciBhcmdzIHBsdXMgeXlsbG9jLgotLW00
X2RlZmluZShbYjRfeXllcnJvcl9hcmdzXSwKLS1bYjRfeXllcnJvcl9hcmdfbG9jX2lmKFsmeXls
bG9jLCBdKWRubAotLW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFtiNF9hcmdzKGI0X3BhcnNl
X3BhcmFtKSwgXSldKQotLQotLQotLQotLSMjIC0tLS0tLS0tLS0tLSAjIwotLSMjIERhdGEgVHlw
ZXMuICAjIwotLSMjIC0tLS0tLS0tLS0tLSAjIwotLQotLSMgYjRfaW50X3R5cGUoTUlOLCBNQVgp
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiB0aGUgc21hbGxlc3QgaW50IHR5
cGUgYWJsZSB0byBoYW5kbGUgbnVtYmVycyByYW5naW5nIGZyb20KLS0jIE1JTiB0byBNQVggKGlu
Y2x1ZGVkKS4gIE92ZXJ3cml0ZSB0aGUgdmVyc2lvbiBmcm9tIGMubTQsIHdoaWNoCi0tIyB1c2Vz
IG9ubHkgQzg5IHR5cGVzLCBzbyB0aGF0IHRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aGUgc2hvcnRl
cgotLSMgdHlwZXMsIGFuZCBzbyB0aGF0IHByZS1DODkgY29tcGlsZXJzIGFyZSBoYW5kbGVkIGNv
cnJlY3RseS4KLS1tNF9kZWZpbmUoW2I0X2ludF90eXBlXSwKLS1bbTRfaWYoYjRfaW50c19pbigk
QCwgICAgICBbMF0sICAgWzI1NV0pLCBbMV0sIFt5eXR5cGVfdWludDhdLAotLSAgICAgICBiNF9p
bnRzX2luKCRALCAgIFstMTI4XSwgICBbMTI3XSksIFsxXSwgW3l5dHlwZV9pbnQ4XSwKLS0KLS0g
ICAgICAgYjRfaW50c19pbigkQCwgICAgICBbMF0sIFs2NTUzNV0pLCBbMV0sIFt5eXR5cGVfdWlu
dDE2XSwKLS0gICAgICAgYjRfaW50c19pbigkQCwgWy0zMjc2OF0sIFszMjc2N10pLCBbMV0sIFt5
eXR5cGVfaW50MTZdLAotLQotLSAgICAgICBtNF9ldmFsKFswIDw9ICQxXSksICAgICAgICAgICAg
ICAgIFsxXSwgW3Vuc2lnbmVkXSwKLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtpbnRdKV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMK
LS0jIyBTZW1hbnRpYyBWYWx1ZXMuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0t
Ci0tIyBiNF9saHNfdmFsdWUoU1lNQk9MLU5VTSwgW1RZUEVdKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNlZSBSRUFETUUuCi0tbTRfZGVmaW5lKFtiNF9saHNfdmFs
dWVdLAotLVtiNF9zeW1ib2xfdmFsdWUoeXl2YWwsIFskMV0sIFskMl0pXSkKLS0KLS0KLS0jIGI0
X3Joc192YWx1ZShSVUxFLUxFTkdUSCwgUE9TLCBbU1lNQk9MLU5VTV0sIFtUWVBFXSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNl
ZSBSRUFETUUuCi0tbTRfZGVmaW5lKFtiNF9yaHNfdmFsdWVdLAotLVtiNF9zeW1ib2xfdmFsdWUo
W3l5dnNwQHtiNF9zdWJ0cmFjdChbJDJdLCBbJDFdKUB9XSwgWyQzXSwgWyQ0XSldKQotLQotLQot
LSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgTG9jYXRpb25zLiAgIyMKLS0jIyAtLS0tLS0tLS0tLSAj
IwotLQotLSMgYjRfbGhzX2xvY2F0aW9uKCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBh
bnNpb24gb2YgQCQuCi0tbTRfZGVmaW5lKFtiNF9saHNfbG9jYXRpb25dLAotLVsoeXlsb2MpXSkK
LS0KLS0KLS0jIGI0X3Joc19sb2NhdGlvbihSVUxFLUxFTkdUSCwgUE9TKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbnNpb24gb2YgQFBPUywgd2hlcmUgdGhl
IGN1cnJlbnQgcnVsZSBoYXMgUlVMRS1MRU5HVEggc3ltYm9scwotLSMgb24gUkhTLgotLW00X2Rl
ZmluZShbYjRfcmhzX2xvY2F0aW9uXSwKLS1bKHl5bHNwQHtiNF9zdWJ0cmFjdChbJDJdLCBbJDFd
KUB9KV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBEZWNsYXJhdGlvbnMuICAj
IwotLSMjIC0tLS0tLS0tLS0tLS0tICMjCi0tCi0tIyBiNF9kZWNsYXJlX3NjYW5uZXJfY29tbXVu
aWNhdGlvbl92YXJpYWJsZXMKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMgRGVjbGFyZSB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIGdsb2JhbCwgb3IgbG9j
YWwgdG8gWVlQQVJTRSBpZgotLSMgcHVyZS1wYXJzZXIuCi0tbTRfZGVmaW5lKFtiNF9kZWNsYXJl
X3NjYW5uZXJfY29tbXVuaWNhdGlvbl92YXJpYWJsZXNdLCBbWwotLS8qIFRoZSBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KLS1pbnQgeXljaGFyOwotLQotLV1iNF9wdXJlX2lmKFtbCi0tLyogVGhlIHNl
bWFudGljIHZhbHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KLS0vKiBEZWZhdWx0IHZh
bHVlIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLCBmb3IgcGFjaWZ5aW5nIG9sZGVyIEdDQ3MKLS0g
ICBvciBub24tR0NDIGNvbXBpbGVycy4gICovCi0tWVlfSU5JVElBTF9WQUxVRSAoc3RhdGljIFlZ
U1RZUEUgeXl2YWxfZGVmYXVsdDspCi0tWVlTVFlQRSB5eWx2YWwgWVlfSU5JVElBTF9WQUxVRSAo
PSB5eXZhbF9kZWZhdWx0KTtdYjRfbG9jYXRpb25zX2lmKFtbCi0tCi0tLyogTG9jYXRpb24gZGF0
YSBmb3IgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwotLXN0YXRpYyBZWUxUWVBFIHl5bG9jX2Rl
ZmF1bHRdYjRfeXlsb2NfZGVmYXVsdFs7Ci0tWVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0
O11dKV0sCi0tW1svKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wu
ICAqLwotLVlZU1RZUEUgeXlsdmFsO11iNF9sb2NhdGlvbnNfaWYoW1sKLS0vKiBMb2NhdGlvbiBk
YXRhIGZvciB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCi0tWVlMVFlQRSB5eWxsb2NdYjRfeXls
b2NfZGVmYXVsdFs7XV0pWwotLS8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICov
Ci0taW50IHl5bmVycnM7XV0pXSkKLS0KLS0KLS0jIGI0X2RlY2xhcmVfcGFyc2VyX3N0YXRlX3Zh
cmlhYmxlcwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWNsYXJl
IGFsbCB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIG5lZWRlZCB0byBtYWludGFpbiB0aGUgcGFyc2Vy
IHN0YXRlCi0tIyBiZXR3ZWVuIGNhbGxzIHRvIHl5cHVzaF9wYXJzZS4KLS1tNF9kZWZpbmUoW2I0
X2RlY2xhcmVfcGFyc2VyX3N0YXRlX3ZhcmlhYmxlc10sIFtiNF9wdXJlX2lmKFtbCi0tICAgIC8q
IE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCi0tICAgIGludCB5eW5lcnJzOwot
LV1dKVsKLS0gICAgaW50IHl5c3RhdGU7Ci0tICAgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hp
ZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotLSAgICBpbnQgeXllcnJzdGF0
dXM7Ci0tCi0tICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgotLSAgICAgICAneXlz
cyc6IHJlbGF0ZWQgdG8gc3RhdGVzLgotLSAgICAgICAneXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50
aWMgdmFsdWVzLl1iNF9sb2NhdGlvbnNfaWYoW1sKLS0gICAgICAgJ3l5bHMnOiByZWxhdGVkIHRv
IGxvY2F0aW9ucy5dXSlbCi0tCi0tICAgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhyb3VnaCBz
ZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotLSAgICAgICB0byByZWFsbG9j
YXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KLS0KLS0gICAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8K
LS0gICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKLS0gICAgeXl0eXBlX2ludDE2
ICp5eXNzOwotLSAgICB5eXR5cGVfaW50MTYgKnl5c3NwOwotLQotLSAgICAvKiBUaGUgc2VtYW50
aWMgdmFsdWUgc3RhY2suICAqLwotLSAgICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLS0g
ICAgWVlTVFlQRSAqeXl2czsKLS0gICAgWVlTVFlQRSAqeXl2c3A7XWI0X2xvY2F0aW9uc19pZihb
WwotLQotLSAgICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLwotLSAgICBZWUxUWVBFIHl5bHNh
W1lZSU5JVERFUFRIXTsKLS0gICAgWVlMVFlQRSAqeXlsczsKLS0gICAgWVlMVFlQRSAqeXlsc3A7
Ci0tCi0tICAgIC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhlIGVycm9yIHN0YXJ0ZWQgYW5kIGVu
ZGVkLiAgKi8KLS0gICAgWVlMVFlQRSB5eWVycm9yX3JhbmdlWzNdO11dKVsKLS0KLS0gICAgWVlT
SVpFX1QgeXlzdGFja3NpemU7XWI0X2xhY19pZihbWwotLQotLSAgICB5eXR5cGVfaW50MTYgeXll
c2FAe11iNF9wZXJjZW50X2RlZmluZV9nZXQoW1twYXJzZS5sYWMuZXMtY2FwYWNpdHktaW5pdGlh
bF1dKVtAfTsKLS0gICAgeXl0eXBlX2ludDE2ICp5eWVzOwotLSAgICBZWVNJWkVfVCB5eWVzX2Nh
cGFjaXR5O11dKV0pCi0tCi0tCi0tIyBfYjRfZGVjbGFyZV95eXBhcnNlX3B1c2gKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVjbGFyYXRpb24gb2YgeXlwYXJzZSAoYW5kIGRlcGVu
ZGVuY2llcykgd2hlbiB1c2luZyB0aGUgcHVzaCBwYXJzZXIKLS0jIChpbmNsdWRpbmcgaW4gcHVs
bCBtb2RlKS4KLS1tNF9kZWZpbmUoW19iNF9kZWNsYXJlX3l5cGFyc2VfcHVzaF0sCi0tW1sjaWZu
ZGVmIFlZUFVTSF9NT1JFX0RFRklORUQKLS0jIGRlZmluZSBZWVBVU0hfTU9SRV9ERUZJTkVECi0t
ZW51bSB7IFlZUFVTSF9NT1JFID0gNCB9OwotLSNlbmRpZgotLQotLXR5cGVkZWYgc3RydWN0IF1i
NF9wcmVmaXhbcHN0YXRlIF1iNF9wcmVmaXhbcHN0YXRlOwotLQotLV1iNF9wdWxsX2lmKFtiNF9m
dW5jdGlvbl9kZWNsYXJlKFtiNF9wcmVmaXhbcGFyc2VdXSwgW1tpbnRdXSwgYjRfcGFyc2VfcGFy
YW0pCi0tXSliNF9mdW5jdGlvbl9kZWNsYXJlKFtiNF9wcmVmaXhbcHVzaF9wYXJzZV1dLCBbW2lu
dF1dLAotLSAgW1tiNF9wcmVmaXhbcHN0YXRlICpwc11dLCBbW3BzXV1dYjRfcHVyZV9pZihbLAot
LSAgW1tbaW50IHB1c2hlZF9jaGFyXV0sIFtbcHVzaGVkX2NoYXJdXV0sCi0tICBbW2I0X2FwaV9Q
UkVGSVhbU1RZUEUgY29uc3QgKnB1c2hlZF92YWxdXSwgW1twdXNoZWRfdmFsXV1dYjRfbG9jYXRp
b25zX2lmKFssCi0tICBbW2I0X2FwaV9QUkVGSVhbTFRZUEUgKnB1c2hlZF9sb2NdXSwgW1twdXNo
ZWRfbG9jXV1dXSldKW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssCi0tICBiNF9wYXJzZV9w
YXJhbV0pKQotLWI0X3B1bGxfaWYoW2I0X2Z1bmN0aW9uX2RlY2xhcmUoW2I0X3ByZWZpeFtwdWxs
X3BhcnNlXV0sIFtbaW50XV0sCi0tICBbW2I0X3ByZWZpeFtwc3RhdGUgKnBzXV0sIFtbcHNdXV1t
NF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbLAotLSAgYjRfcGFyc2VfcGFyYW1dKSldKQotLWI0
X2Z1bmN0aW9uX2RlY2xhcmUoW2I0X3ByZWZpeFtwc3RhdGVfbmV3XV0sIFtiNF9wcmVmaXhbcHN0
YXRlICpdXSwKLS0gICAgICAgICAgICAgICAgICAgIFtbW3ZvaWRdXSwgW11dKQotLWI0X2Z1bmN0
aW9uX2RlY2xhcmUoW2I0X3ByZWZpeFtwc3RhdGVfZGVsZXRlXV0sIFtbdm9pZF1dLAotLSAgICAg
ICAgICAgICAgICAgICBbW2I0X3ByZWZpeFtwc3RhdGUgKnBzXV0sIFtbcHNdXV0pZG5sCi0tXSkK
LS0KLS0jIF9iNF9kZWNsYXJlX3l5cGFyc2UKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFdo
ZW4gbm90IHRoZSBwdXNoIHBhcnNlci4KLS1tNF9kZWZpbmUoW19iNF9kZWNsYXJlX3l5cGFyc2Vd
LAotLVtiNF9mdW5jdGlvbl9kZWNsYXJlKGI0X3ByZWZpeFtwYXJzZV0sIFtpbnRdLCBiNF9wYXJz
ZV9wYXJhbSldKQotLQotLQotLSMgYjRfZGVjbGFyZV95eXBhcnNlCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0KLS1tNF9kZWZpbmUoW2I0X2RlY2xhcmVfeXlwYXJzZV0sCi0tW2I0X3B1c2hfaWYoW19i
NF9kZWNsYXJlX3l5cGFyc2VfcHVzaF0sCi0tICAgICAgICAgICAgW19iNF9kZWNsYXJlX3l5cGFy
c2VdKVtdZG5sCi0tXSkKLS0KLS0KLS0jIGI0X3NoYXJlZF9kZWNsYXJhdGlvbnMKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlY2xhcmF0aW9uIHRoYXQgbWlnaHQgZWl0aGVyIGdvIGlu
dG8gdGhlIGhlYWRlciAoaWYgLS1kZWZpbmVzKQotLSMgb3Igb3BlbiBjb2RlZCBpbiB0aGUgcGFy
c2VyIGJvZHkuCi0tbTRfZGVmaW5lKFtiNF9zaGFyZWRfZGVjbGFyYXRpb25zXSwKLS1bYjRfY3Bw
X2d1YXJkX29wZW4oW2I0X3NwZWNfZGVmaW5lc19maWxlXSlbCi0tXWI0X2RlY2xhcmVfeXlkZWJ1
Z1sKLS1dYjRfcGVyY2VudF9jb2RlX2dldChbW3JlcXVpcmVzXV0pWwotLV1iNF90b2tlbl9lbnVt
c19kZWZpbmVzWwotLV1iNF9kZWNsYXJlX3l5bHN0eXBlWwotLV1iNF9kZWNsYXJlX3l5cGFyc2Vb
Ci0tXWI0X3BlcmNlbnRfY29kZV9nZXQoW1twcm92aWRlc11dKVsKLS1dYjRfY3BwX2d1YXJkX2Ns
b3NlKFtiNF9zcGVjX2RlZmluZXNfZmlsZV0pW11kbmwKLS1dKQotLQotLSMjIC0tLS0tLS0tLS0t
LS0tICMjCi0tIyMgT3V0cHV0IGZpbGVzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLSAjIwotLQot
LWI0X291dHB1dF9iZWdpbihbYjRfcGFyc2VyX2ZpbGVfbmFtZV0pWwotLV1iNF9jb3B5cmlnaHQo
W0Jpc29uIGltcGxlbWVudGF0aW9uIGZvciBZYWNjLWxpa2UgcGFyc2VycyBpbiBDXSlbCi0tLyog
QyBMQUxSKDEpIHBhcnNlciBza2VsZXRvbiB3cml0dGVuIGJ5IFJpY2hhcmQgU3RhbGxtYW4sIGJ5
Ci0tICAgc2ltcGxpZnlpbmcgdGhlIG9yaWdpbmFsIHNvLWNhbGxlZCAic2VtYW50aWMiIHBhcnNl
ci4gICovCi0tCi0tLyogQWxsIHN5bWJvbHMgZGVmaW5lZCBiZWxvdyBzaG91bGQgYmVnaW4gd2l0
aCB5eSBvciBZWSwgdG8gYXZvaWQKLS0gICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4g
IFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZlbiBmb3IgbG9jYWwKLS0gICB2YXJpYWJsZXMsIGFzIHRo
ZXkgbWlnaHQgb3RoZXJ3aXNlIGJlIGV4cGFuZGVkIGJ5IHVzZXIgbWFjcm9zLgotLSAgIFRoZXJl
IGFyZSBzb21lIHVuYXZvaWRhYmxlIGV4Y2VwdGlvbnMgd2l0aGluIGluY2x1ZGUgZmlsZXMgdG8K
LS0gICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJhcnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklO
RlJJTkdFUyBPTgotLSAgIFVTRVIgTkFNRSBTUEFDRSIgYmVsb3cuICAqLwotLQotLV1iNF9kaXNj
bGFpbWVyWwotLV1iNF9pZGVudGlmaWNhdGlvblsKLS1dYjRfcGVyY2VudF9jb2RlX2dldChbW3Rv
cF1dKVtdZG5sCi0tbTRfaWYoYjRfYXBpX3ByZWZpeCwgW3l5XSwgW10sCi0tW1svKiBTdWJzdGl0
dXRlIHRoZSB0eXBlIG5hbWVzLiAgKi8KLS0jZGVmaW5lIFlZU1RZUEUgICAgICAgICBdYjRfYXBp
X1BSRUZJWFtTVFlQRV1iNF9sb2NhdGlvbnNfaWYoW1sKLS0jZGVmaW5lIFlZTFRZUEUgICAgICAg
ICBdYjRfYXBpX1BSRUZJWFtMVFlQRV1dKV0pWwotLV1tNF9pZihiNF9wcmVmaXgsIFt5eV0sIFtd
LAotLVtbLyogU3Vic3RpdHV0ZSB0aGUgdmFyaWFibGUgYW5kIGZ1bmN0aW9uIG5hbWVzLiAgKi9d
YjRfcHVsbF9pZihbWwotLSNkZWZpbmUgeXlwYXJzZSAgICAgICAgIF1iNF9wcmVmaXhbcGFyc2Vd
XSliNF9wdXNoX2lmKFtbCi0tI2RlZmluZSB5eXB1c2hfcGFyc2UgICAgXWI0X3ByZWZpeFtwdXNo
X3BhcnNlXWI0X3B1bGxfaWYoW1sKLS0jZGVmaW5lIHl5cHVsbF9wYXJzZSAgICBdYjRfcHJlZml4
W3B1bGxfcGFyc2VdXSlbCi0tI2RlZmluZSB5eXBzdGF0ZV9uZXcgICAgXWI0X3ByZWZpeFtwc3Rh
dGVfbmV3Ci0tI2RlZmluZSB5eXBzdGF0ZV9kZWxldGUgXWI0X3ByZWZpeFtwc3RhdGVfZGVsZXRl
Ci0tI2RlZmluZSB5eXBzdGF0ZSAgICAgICAgXWI0X3ByZWZpeFtwc3RhdGVdXSlbCi0tI2RlZmlu
ZSB5eWxleCAgICAgICAgICAgXWI0X3ByZWZpeFtsZXgKLS0jZGVmaW5lIHl5ZXJyb3IgICAgICAg
ICBdYjRfcHJlZml4W2Vycm9yCi0tI2RlZmluZSB5eWRlYnVnICAgICAgICAgXWI0X3ByZWZpeFtk
ZWJ1ZwotLSNkZWZpbmUgeXluZXJycyAgICAgICAgIF1iNF9wcmVmaXhbbmVycnMKLS1dXWI0X3B1
cmVfaWYoW10sIFtbCi0tI2RlZmluZSB5eWx2YWwgICAgICAgICAgXWI0X3ByZWZpeFtsdmFsCi0t
I2RlZmluZSB5eWNoYXIgICAgICAgICAgXWI0X3ByZWZpeFtjaGFyXWI0X2xvY2F0aW9uc19pZihb
WwotLSNkZWZpbmUgeXlsbG9jICAgICAgICAgIF1iNF9wcmVmaXhbbGxvY11dKV0pKVsKLS0KLS1d
YjRfdXNlcl9wcmVfcHJvbG9ndWVbCi0tXWI0X251bGxfZGVmaW5lWwotLQotLS8qIEVuYWJsaW5n
IHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLwotLSNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLS0j
IHVuZGVmIFlZRVJST1JfVkVSQk9TRQotLSMgZGVmaW5lIFlZRVJST1JfVkVSQk9TRSAxCi0tI2Vs
c2UKLS0jIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgXWI0X2Vycm9yX3ZlcmJvc2VfaWYoWzFdLCBb
MF0pWwotLSNlbmRpZgotLQotLV1tNF9pZnZhbChtNF9xdW90ZShiNF9zcGVjX2RlZmluZXNfZmls
ZSksCi0tW1svKiBJbiBhIGZ1dHVyZSByZWxlYXNlIG9mIEJpc29uLCB0aGlzIHNlY3Rpb24gd2ls
bCBiZSByZXBsYWNlZAotLSAgIGJ5ICNpbmNsdWRlICJAYmFzZW5hbWUoXWI0X3NwZWNfZGVmaW5l
c19maWxlW0ApIi4gICovCi0tXV0pZG5sCi0tYjRfc2hhcmVkX2RlY2xhcmF0aW9uc1sKLS0KLS1d
YjRfdXNlcl9wb3N0X3Byb2xvZ3VlWwotLV1iNF9wZXJjZW50X2NvZGVfZ2V0W11kbmwKLS0KLS1b
I2lmZGVmIHNob3J0Ci0tIyB1bmRlZiBzaG9ydAotLSNlbmRpZgotLQotLSNpZmRlZiBZWVRZUEVf
VUlOVDgKLS10eXBlZGVmIFlZVFlQRV9VSU5UOCB5eXR5cGVfdWludDg7Ci0tI2Vsc2UKLS10eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgeXl0eXBlX3VpbnQ4OwotLSNlbmRpZgotLQotLSNpZmRlZiBZWVRZ
UEVfSU5UOAotLXR5cGVkZWYgWVlUWVBFX0lOVDggeXl0eXBlX2ludDg7Ci0tI2Vsc2UKLS10eXBl
ZGVmIHNpZ25lZCBjaGFyIHl5dHlwZV9pbnQ4OwotLSNlbmRpZgotLQotLSNpZmRlZiBZWVRZUEVf
VUlOVDE2Ci0tdHlwZWRlZiBZWVRZUEVfVUlOVDE2IHl5dHlwZV91aW50MTY7Ci0tI2Vsc2UKLS10
eXBlZGVmIHVuc2lnbmVkIHNob3J0IHl5dHlwZV91aW50MTY7Ci0tI2VuZGlmCi0tCi0tI2lmZGVm
IFlZVFlQRV9JTlQxNgotLXR5cGVkZWYgWVlUWVBFX0lOVDE2IHl5dHlwZV9pbnQxNjsKLS0jZWxz
ZQotLXR5cGVkZWYgc2hvcnQgeXl0eXBlX2ludDE2OwotLSNlbmRpZgotLQotLSNpZm5kZWYgWVlT
SVpFX1QKLS0jIGlmZGVmIF9fU0laRV9UWVBFX18KLS0jICBkZWZpbmUgWVlTSVpFX1QgX19TSVpF
X1RZUEVfXwotLSMgZWxpZiBkZWZpbmVkIHNpemVfdAotLSMgIGRlZmluZSBZWVNJWkVfVCBzaXpl
X3QKLS0jIGVsaWYgISBkZWZpbmVkIFlZU0laRV9UCi0tIyAgaW5jbHVkZSA8c3RkZGVmLmg+IC8q
IElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLS0jICBkZWZpbmUgWVlTSVpFX1Qgc2l6
ZV90Ci0tIyBlbHNlCi0tIyAgZGVmaW5lIFlZU0laRV9UIHVuc2lnbmVkCi0tIyBlbmRpZgotLSNl
bmRpZgotLQotLSNkZWZpbmUgWVlTSVpFX01BWElNVU0gKChZWVNJWkVfVCkgLTEpCi0tCi0tI2lm
bmRlZiBZWV8KLS0jIGlmIGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxFX05MUwotLSMg
IGlmIEVOQUJMRV9OTFMKLS0jICAgaW5jbHVkZSA8bGliaW50bC5oPiAvKiBJTkZSSU5HRVMgT04g
VVNFUiBOQU1FIFNQQUNFICovCi0tIyAgIGRlZmluZSBZWV8oTXNnaWQpIGRnZXR0ZXh0ICgiYmlz
b24tcnVudGltZSIsIE1zZ2lkKQotLSMgIGVuZGlmCi0tIyBlbmRpZgotLSMgaWZuZGVmIFlZXwot
LSMgIGRlZmluZSBZWV8oTXNnaWQpIE1zZ2lkCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLV1iNF9h
dHRyaWJ1dGVfZGVmaW5lWwotLQotLSNpZiBdYjRfbGFjX2lmKFtbMV1dLCBbWyEgZGVmaW5lZCB5
eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRV1dKVsKLS0KLS0vKiBUaGUgcGFyc2VyIGludm9r
ZXMgYWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovXWRu
bAotLWI0X3B1c2hfaWYoW10sIFtiNF9sYWNfaWYoW10sIFtbCi0tCi0tIyBpZmRlZiBZWVNUQUNL
X1VTRV9BTExPQ0EKLS0jICBpZiBZWVNUQUNLX1VTRV9BTExPQ0EKLS0jICAgaWZkZWYgX19HTlVD
X18KLS0jICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYnVpbHRpbl9hbGxvY2EKLS0jICAgZWxp
ZiBkZWZpbmVkIF9fQlVJTFRJTl9WQV9BUkdfSU5DUgotLSMgICAgaW5jbHVkZSA8YWxsb2NhLmg+
IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLS0jICAgZWxpZiBkZWZpbmVkIF9B
SVgKLS0jICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYWxsb2NhCi0tIyAgIGVsaWYgZGVmaW5l
ZCBfTVNDX1ZFUgotLSMgICAgaW5jbHVkZSA8bWFsbG9jLmg+IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KLS0jICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQotLSMgICBlbHNlCi0t
IyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxvY2EKLS0jICAgIGlmICEgZGVmaW5lZCBfQUxM
T0NBX0ggJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUwotLSMgICAgIGluY2x1ZGUgPHN0ZGxpYi5o
PiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0tICAgICAgLyogVXNlIEVYSVRf
U1VDQ0VTUyBhcyBhIHdpdG5lc3MgZm9yIHN0ZGxpYi5oLiAgKi8KLS0jICAgICBpZm5kZWYgRVhJ
VF9TVUNDRVNTCi0tIyAgICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAotLSMgICAgIGVuZGlmCi0t
IyAgICBlbmRpZgotLSMgICBlbmRpZgotLSMgIGVuZGlmCi0tIyBlbmRpZl1dKV0pWwotLQotLSMg
aWZkZWYgWVlTVEFDS19BTExPQwotLSAgIC8qIFBhY2lmeSBHQ0MncyAnZW1wdHkgaWYtYm9keScg
d2FybmluZy4gICovCi0tIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkg
Ki87IH0gd2hpbGUgKDApCi0tIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQotLSAgICAv
KiBUaGUgT1MgbWlnaHQgZ3VhcmFudGVlIG9ubHkgb25lIGd1YXJkIHBhZ2UgYXQgdGhlIGJvdHRv
bSBvZiB0aGUgc3RhY2ssCi0tICAgICAgIGFuZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21hbGwg
YXMgNDA5NiBieXRlcy4gIFNvIHdlIGNhbm5vdCBzYWZlbHkKLS0gICAgICAgaW52b2tlIGFsbG9j
YSAoTikgaWYgTiBleGNlZWRzIDQwOTYuICBVc2UgYSBzbGlnaHRseSBzbWFsbGVyIG51bWJlcgot
LSAgICAgICB0byBhbGxvdyBmb3IgYSBmZXcgY29tcGlsZXItYWxsb2NhdGVkIHRlbXBvcmFyeSBz
dGFjayBzbG90cy4gICovCi0tIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gNDAzMiAv
KiByZWFzb25hYmxlIGNpcmNhIDIwMDYgKi8KLS0jICBlbmRpZgotLSMgZWxzZQotLSMgIGRlZmlu
ZSBZWVNUQUNLX0FMTE9DIFlZTUFMTE9DCi0tIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRSBZWUZSRUUK
LS0jICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCi0tIyAgIGRlZmluZSBZWVNUQUNLX0FM
TE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KLS0jICBlbmRpZgotLSMgIGlmIChkZWZpbmVkIF9f
Y3BsdXNwbHVzICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MgXAotLSAgICAgICAmJiAhICgoZGVm
aW5lZCBZWU1BTExPQyB8fCBkZWZpbmVkIG1hbGxvYykgXAotLSAgICAgICAgICAgICAmJiAoZGVm
aW5lZCBZWUZSRUUgfHwgZGVmaW5lZCBmcmVlKSkpCi0tIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAv
KiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0tIyAgIGlmbmRlZiBFWElUX1NVQ0NF
U1MKLS0jICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAotLSMgICBlbmRpZgotLSMgIGVuZGlmCi0t
IyAgaWZuZGVmIFlZTUFMTE9DCi0tIyAgIGRlZmluZSBZWU1BTExPQyBtYWxsb2MKLS0jICAgaWYg
ISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTCi0tdm9pZCAqbWFsbG9j
IChZWVNJWkVfVCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLS0jICAgZW5k
aWYKLS0jICBlbmRpZgotLSMgIGlmbmRlZiBZWUZSRUUKLS0jICAgZGVmaW5lIFlZRlJFRSBmcmVl
Ci0tIyAgIGlmICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MKLS12b2lk
IGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLS0jICAg
ZW5kaWYKLS0jICBlbmRpZgotLSMgZW5kaWZdYjRfbGFjX2lmKFtbCi0tIyBkZWZpbmUgWVlDT1BZ
X05FRURFRCAxXV0pWwotLSNlbmRpZl1iNF9sYWNfaWYoW10sIFtbIC8qICEgZGVmaW5lZCB5eW92
ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRSAqL11dKVsKLS0KLS0KLS0jaWYgKCEgZGVmaW5lZCB5
eW92ZXJmbG93IFwKLS0gICAgICYmICghIGRlZmluZWQgX19jcGx1c3BsdXMgXAotLSAgICAgICAg
IHx8IChdYjRfbG9jYXRpb25zX2lmKFtbZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19U
UklWSUFMICYmIF1iNF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwgXAotLSAgICAgICAgICAg
ICAmJiBdXSlbZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtTVFlQRV9JU19UUklWSUFMICYmIF1iNF9h
cGlfUFJFRklYW1NUWVBFX0lTX1RSSVZJQUwpKSkKLS0KLS0vKiBBIHR5cGUgdGhhdCBpcyBwcm9w
ZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KLS11bmlvbiB5eWFsbG9jCi0t
ewotLSAgeXl0eXBlX2ludDE2IHl5c3NfYWxsb2M7Ci0tICBZWVNUWVBFIHl5dnNfYWxsb2M7XWI0
X2xvY2F0aW9uc19pZihbCi0tICBZWUxUWVBFIHl5bHNfYWxsb2M7XSlbCi0tfTsKLS0KLS0vKiBU
aGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQg
dGhlIG5leHQuICAqLwotLSMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5p
b24geXlhbGxvYykgLSAxKQotLQotLS8qIFRoZSBzaXplIG9mIGFuIGFycmF5IGxhcmdlIHRvIGVu
b3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAotLSAgIE4gZWxlbWVudHMuICAqLwot
LV1iNF9sb2NhdGlvbnNfaWYoCi0tWyMgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAotLSAgICAg
KChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9m
IChZWUxUWVBFKSkgXAotLSAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWElNVU0pXSwKLS1bIyBk
ZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0tICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2lu
dDE2KSArIHNpemVvZiAoWVlTVFlQRSkpIFwKLS0gICAgICArIFlZU1RBQ0tfR0FQX01BWElNVU0p
XSlbCi0tCi0tIyBkZWZpbmUgWVlDT1BZX05FRURFRCAxCi0tCi0tLyogUmVsb2NhdGUgU1RBQ0sg
ZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCi0tICAgbG9jYWwgdmFy
aWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVtYmVy
IG9mCi0tICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMgdGhlIG5ldyBs
b2NhdGlvbiBvZiB0aGUKLS0gICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBh
bGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAotLSAgIHN0YWNrLiAgKi8KLS0jIGRlZmluZSBZ
WVNUQUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFjaykgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0tICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIFlZ
U0laRV9UIHl5bmV3Ynl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0tICAgICAgICBZWUNPUFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNp
emUpOyAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgU3RhY2sgPSAmeXlwdHItPlN0YWNr
X2FsbG9jOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHl5
bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01B
WElNVU07IFwKLS0gICAgICAgIHl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB3aGls
ZSAoMCkKLS0KLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBZWUNPUFlfTkVFREVEICYmIFlZQ09Q
WV9ORUVERUQKLS0vKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBTUkMgdG8gRFNULiAgVGhlIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gZG8KLS0gICBub3Qgb3ZlcmxhcC4gICovCi0tIyBpZm5kZWYg
WVlDT1BZCi0tIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAxIDwgX19HTlVDX18KLS0jICAgZGVm
aW5lIFlZQ09QWShEc3QsIFNyYywgQ291bnQpIFwKLS0gICAgICBfX2J1aWx0aW5fbWVtY3B5IChE
c3QsIFNyYywgKENvdW50KSAqIHNpemVvZiAoKihTcmMpKSkKLS0jICBlbHNlCi0tIyAgIGRlZmlu
ZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSAgICAgICAgICAgICAgXAotLSAgICAgIGRvICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgIFlZU0laRV9UIHl5aTsg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICBmb3IgKHl5aSA9IDA7IHl5aSA8
IChDb3VudCk7IHl5aSsrKSAgIFwKLS0gICAgICAgICAgICAoRHN0KVt5eWldID0gKFNyYylbeXlp
XTsgICAgICAgICAgICBcCi0tICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotLSAgICAgIHdoaWxlICgwKQotLSMgIGVuZGlmCi0tIyBlbmRpZgotLSNlbmRp
ZiAvKiAhWVlDT1BZX05FRURFRCAqLwotLQotLS8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9m
IHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0tI2RlZmluZSBZWUZJTkFMICBdYjRfZmluYWxf
c3RhdGVfbnVtYmVyWwotLS8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwot
LSNkZWZpbmUgWVlMQVNUICAgXWI0X2xhc3RbCi0tCi0tLyogWVlOVE9LRU5TIC0tIE51bWJlciBv
ZiB0ZXJtaW5hbHMuICAqLwotLSNkZWZpbmUgWVlOVE9LRU5TICBdYjRfdG9rZW5zX251bWJlclsK
LS0vKiBZWU5OVFMgLS0gTnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCi0tI2RlZmluZSBZWU5O
VFMgIF1iNF9udGVybXNfbnVtYmVyWwotLS8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4g
ICovCi0tI2RlZmluZSBZWU5SVUxFUyAgXWI0X3J1bGVzX251bWJlclsKLS0vKiBZWU5TVEFURVMg
LS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCi0tI2RlZmluZSBZWU5TVEFURVMgIF1iNF9zdGF0ZXNf
bnVtYmVyWwotLQotLSNkZWZpbmUgWVlVTkRFRlRPSyAgXWI0X3VuZGVmX3Rva2VuX251bWJlclsK
LS0jZGVmaW5lIFlZTUFYVVRPSyAgIF1iNF91c2VyX3Rva2VuX251bWJlcl9tYXhbCi0tCi0tLyog
WVlUUkFOU0xBVEUoVE9LRU4tTlVNKSAtLSBTeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8g
VE9LRU4tTlVNCi0tICAgYXMgcmV0dXJuZWQgYnkgeXlsZXgsIHdpdGggb3V0LW9mLWJvdW5kcyBj
aGVja2luZy4gICovCi0tI2RlZmluZSBZWVRSQU5TTEFURShZWVgpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgKCh1bnNpZ25lZCkgKFlZWCkgPD0g
WVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlYXSA6IFlZVU5ERUZUT0spCi0tCi0tLyogWVlUUkFO
U0xBVEVbVE9LRU4tTlVNXSAtLSBTeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gVE9LRU4t
TlVNCi0tICAgYXMgcmV0dXJuZWQgYnkgeXlsZXguICAqLwotLXN0YXRpYyBjb25zdCBdYjRfaW50
X3R5cGVfZm9yKFtiNF90cmFuc2xhdGVdKVsgeXl0cmFuc2xhdGVbXSA9Ci0tewotLSAgXWI0X3Ry
YW5zbGF0ZVsKLS19OwotLQotLSNpZiBdYjRfYXBpX1BSRUZJWFtERUJVRwotLV1iNF9pbnRlZ3Jh
bF9wYXJzZXJfdGFibGVfZGVmaW5lKFtybGluZV0sIFtiNF9ybGluZV0sCi0tICAgICBbW1lZUkxJ
TkVbWVlOXSAtLSBTb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQu
XV0pWwotLSNlbmRpZgotLQotLSNpZiBdYjRfYXBpX1BSRUZJWFtERUJVRyB8fCBZWUVSUk9SX1ZF
UkJPU0UgfHwgXWI0X3Rva2VuX3RhYmxlX2ZsYWdbCi0tLyogWVlUTkFNRVtTWU1CT0wtTlVNXSAt
LSBTdHJpbmcgbmFtZSBvZiB0aGUgc3ltYm9sIFNZTUJPTC1OVU0uCi0tICAgRmlyc3QsIHRoZSB0
ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWluYWxzLiAgKi8K
LS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KLS17Ci0tICBdYjRfdG5hbWVb
Ci0tfTsKLS0jZW5kaWYKLS0KLS0jIGlmZGVmIFlZUFJJTlQKLS0vKiBZWVRPS05VTVtOVU1dIC0t
IChFeHRlcm5hbCkgdG9rZW4gbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0tICAgKGludGVy
bmFsKSBzeW1ib2wgbnVtYmVyIE5VTSAod2hpY2ggbXVzdCBiZSB0aGF0IG9mIGEgdG9rZW4pLiAg
Ki8KLS1zdGF0aWMgY29uc3QgXWI0X2ludF90eXBlX2ZvcihbYjRfdG9rbnVtXSlbIHl5dG9rbnVt
W10gPQotLXsKLS0gIF1iNF90b2tudW1bCi0tfTsKLS0jIGVuZGlmCi0tCi0tI2RlZmluZSBZWVBB
Q1RfTklORiBdYjRfcGFjdF9uaW5mWwotLQotLSNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1
bHQoWXlzdGF0ZSkgXAotLSAgXWI0X3RhYmxlX3ZhbHVlX2VxdWFscyhbW3BhY3RdXSwgW1tZeXN0
YXRlXV0sIFtiNF9wYWN0X25pbmZdKVsKLS0KLS0jZGVmaW5lIFlZVEFCTEVfTklORiBdYjRfdGFi
bGVfbmluZlsKLS0KLS0jZGVmaW5lIHl5dGFibGVfdmFsdWVfaXNfZXJyb3IoWXl0YWJsZV92YWx1
ZSkgXAotLSAgXWI0X3RhYmxlX3ZhbHVlX2VxdWFscyhbW3RhYmxlXV0sIFtbWXl0YWJsZV92YWx1
ZV1dLCBbYjRfdGFibGVfbmluZl0pWwotLQotLV1iNF9wYXJzZXJfdGFibGVzX2RlZmluZVsKLS0K
LS0jZGVmaW5lIHl5ZXJyb2sgICAgICAgICAoeXllcnJzdGF0dXMgPSAwKQotLSNkZWZpbmUgeXlj
bGVhcmluICAgICAgICh5eWNoYXIgPSBZWUVNUFRZKQotLSNkZWZpbmUgWVlFTVBUWSAgICAgICAg
ICgtMikKLS0jZGVmaW5lIFlZRU9GICAgICAgICAgICAwCi0tCi0tI2RlZmluZSBZWUFDQ0VQVCAg
ICAgICAgZ290byB5eWFjY2VwdGxhYgotLSNkZWZpbmUgWVlBQk9SVCAgICAgICAgIGdvdG8geXlh
Ym9ydGxhYgotLSNkZWZpbmUgWVlFUlJPUiAgICAgICAgIGdvdG8geXllcnJvcmxhYgotLQotLQot
LSNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQotLQotLSNkZWZpbmUgWVlC
QUNLVVAoVG9rZW4sIFZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LS0gIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0tICAgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHl5Y2hhciA9
IChUb2tlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAg
ICAgICB5eWx2YWwgPSAoVmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotLSAgICAgICAgWVlQT1BTVEFDSyAoeXlsZW4pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHl5c3RhdGUgPSAqeXlzc3A7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXWI0X2xhY19pZihbWwotLSAgICAgICAg
WVlfTEFDX0RJU0NBUkQgKCJZWUJBQ0tVUCIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFxdXSlbCi0tICAgICAgICBnb3RvIHl5YmFja3VwOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotLSAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgZWxzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotLSAgICAgICAgeXllcnJvciAoXWI0X3l5ZXJyb3JfYXJnc1tZWV8oInN5bnRheCBlcnJvcjog
Y2Fubm90IGJhY2sgdXAiKSk7IFwKLS0gICAgICAgIFlZRVJST1I7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgd2hpbGUg
KDApCi0tCi0tLyogRXJyb3IgdG9rZW4gbnVtYmVyICovCi0tI2RlZmluZSBZWVRFUlJPUiAgICAg
ICAgMQotLSNkZWZpbmUgWVlFUlJDT0RFICAgICAgIDI1NgotLQotLV1iNF9sb2NhdGlvbnNfaWYo
W1sKLS1dYjRfeXlsbG9jX2RlZmF1bHRfZGVmaW5lWwotLSNkZWZpbmUgWVlSSFNMT0MoUmhzLCBL
KSAoKFJocylbS10pCi0tXV0pWwotLQotLS8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVk
LiAgKi8KLS0jaWYgXWI0X2FwaV9QUkVGSVhbREVCVUcKLS0KLS0jIGlmbmRlZiBZWUZQUklOVEYK
LS0jICBpbmNsdWRlIDxzdGRpby5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICov
Ci0tIyAgZGVmaW5lIFlZRlBSSU5URiBmcHJpbnRmCi0tIyBlbmRpZgotLQotLSMgZGVmaW5lIFlZ
RFBSSU5URihBcmdzKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLS1kbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICBpZiAoeXlkZWJ1ZykgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBZWUZQUklOVEYgQXJnczsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLS19IHdoaWxlICgwKQotLQotLV1iNF95eV9sb2NhdGlv
bl9wcmludF9kZWZpbmVbCi0tCi0tIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBl
LCBWYWx1ZSwgTG9jYXRpb24pICAgICAgICAgICAgICAgICAgICBcCi0tZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0tICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgWVlG
UFJJTlRGIChzdGRlcnIsICIlcyAiLCBUaXRsZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgICAgICAgVHlwZSwg
VmFsdWVdYjRfbG9jYXRpb25zX2lmKFssIExvY2F0aW9uXSlbXWI0X3VzZXJfYXJnc1spOyBcCi0t
ICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tfSB3aGlsZSAoMCkKLS0K
LS1dYjRfeXlfc3ltYm9sX3ByaW50X2RlZmluZVsKLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS18IHl5X3N0
YWNrX3ByaW50IC0tIFByaW50IHRoZSBzdGF0ZSBzdGFjayBmcm9tIGl0cyBCT1RUT00gdXAgdG8g
aXRzIHwKLS18IFRPUCAoaW5jbHVkZWQpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKLS1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS0KLS1dYjRfZnVuY3Rpb25fZGVm
aW5lKFt5eV9zdGFja19wcmludF0sIFtzdGF0aWMgdm9pZF0sCi0tICAgICAgICAgICAgICAgICAg
IFtbeXl0eXBlX2ludDE2ICp5eWJvdHRvbV0sIFt5eWJvdHRvbV1dLAotLSAgICAgICAgICAgICAg
ICAgICBbW3l5dHlwZV9pbnQxNiAqeXl0b3BdLCAgICBbeXl0b3BdXSlbCi0tewotLSAgWVlGUFJJ
TlRGIChzdGRlcnIsICJTdGFjayBub3ciKTsKLS0gIGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsg
eXlib3R0b20rKykKLS0gICAgewotLSAgICAgIGludCB5eWJvdCA9ICp5eWJvdHRvbTsKLS0gICAg
ICBZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsIHl5Ym90KTsKLS0gICAgfQotLSAgWVlGUFJJTlRG
IChzdGRlcnIsICJcbiIpOwotLX0KLS0KLS0jIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0b20s
IFRvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLWRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICBpZiAoeXlk
ZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LS0gICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotLX0gd2hpbGUgKDApCi0tCi0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0tfCBSZXBvcnQgdGhhdCB0aGUgWVlSVUxFIGlz
IGdvaW5nIHRvIGJlIHJlZHVjZWQuICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCi0tCi0tXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlfcmVkdWNl
X3ByaW50XSwgW3N0YXRpYyB2b2lkXSwKLS0gICAgICAgICAgICAgICAgICAgW1t5eXR5cGVfaW50
MTYgKnl5c3NwXSwgW3l5c3NwXV0sCi0tICAgICAgICAgICAgICAgICAgIFtbWVlTVFlQRSAqeXl2
c3BdLCBbeXl2c3BdXSwKLS0gICAgYjRfbG9jYXRpb25zX2lmKFtbW1lZTFRZUEUgKnl5bHNwXSwg
W3l5bHNwXV0sCi0tICAgICAgICAgICAgICAgICAgIF0pW1tpbnQgeXlydWxlXSwgW3l5cnVsZV1d
bTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywKLS0gICAgICAgICAgICAgICAgICAgYjRfcGFy
c2VfcGFyYW1dKSlbCi0tewotLSAgdW5zaWduZWQgbG9uZyB5eWxubyA9IHl5cmxpbmVbeXlydWxl
XTsKLS0gIGludCB5eW5yaHMgPSB5eXIyW3l5cnVsZV07Ci0tICBpbnQgeXlpOwotLSAgWVlGUFJJ
TlRGIChzdGRlcnIsICJSZWR1Y2luZyBzdGFjayBieSBydWxlICVkIChsaW5lICVsdSk6XG4iLAot
LSAgICAgICAgICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7Ci0tICAvKiBUaGUgc3ltYm9scyBiZWlu
ZyByZWR1Y2VkLiAgKi8KLS0gIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKLS0g
ICAgewotLSAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7Ci0t
ICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsCi0tICAgICAgICAgICAgICAgICAgICAgICB5
eXN0b3NbeXlzc3BbeXlpICsgMSAtIHl5bnJoc11dLAotLSAgICAgICAgICAgICAgICAgICAgICAg
Jl1iNF9yaHNfdmFsdWUoeXlucmhzLCB5eWkgKyAxKVsKLS0gICAgICAgICAgICAgICAgICAgICAg
IF1iNF9sb2NhdGlvbnNfaWYoWywgJl1iNF9yaHNfbG9jYXRpb24oeXlucmhzLCB5eWkgKyAxKSlb
XWRubAotLSAgICAgICAgICAgICAgICAgICAgICAgYjRfdXNlcl9hcmdzWyk7Ci0tICAgICAgWVlG
UFJJTlRGIChzdGRlcnIsICJcbiIpOwotLSAgICB9Ci0tfQotLQotLSMgZGVmaW5lIFlZX1JFRFVD
RV9QUklOVChSdWxlKSAgICAgICAgICBcCi0tZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLS0gIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
LSAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5c3NwLCB5eXZzcCwgXWI0X2xvY2F0aW9uc19pZihbeXls
c3AsIF0pW1J1bGVdYjRfdXNlcl9hcmdzWyk7IFwKLS19IHdoaWxlICgwKQotLQotLS8qIE5vbnpl
cm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0IHVuaW5pdGlhbGl6ZWQgc28g
dGhhdAotLSAgIG11bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLwotLWludCB5eWRlYnVn
OwotLSNlbHNlIC8qICFdYjRfYXBpX1BSRUZJWFtERUJVRyAqLwotLSMgZGVmaW5lIFlZRFBSSU5U
RihBcmdzKQotLSMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChUaXRsZSwgVHlwZSwgVmFsdWUsIExv
Y2F0aW9uKQotLSMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwgVG9wKQotLSMgZGVmaW5l
IFlZX1JFRFVDRV9QUklOVChSdWxlKQotLSNlbmRpZiAvKiAhXWI0X2FwaV9QUkVGSVhbREVCVUcg
Ki8KLS0KLS0KLS0vKiBZWUlOSVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2YgdGhlIHBhcnNlcidz
IHN0YWNrcy4gICovCi0tI2lmbmRlZiBZWUlOSVRERVBUSAotLSMgZGVmaW5lIFlZSU5JVERFUFRI
IF1iNF9zdGFja19kZXB0aF9pbml0WwotLSNlbmRpZgotLQotLS8qIFlZTUFYREVQVEggLS0gbWF4
aW11bSBzaXplIHRoZSBzdGFja3MgY2FuIGdyb3cgdG8gKGVmZmVjdGl2ZSBvbmx5Ci0tICAgaWYg
dGhlIGJ1aWx0LWluIHN0YWNrIGV4dGVuc2lvbiBtZXRob2QgaXMgdXNlZCkuCi0tCi0tICAgRG8g
bm90IG1ha2UgdGhpcyB2YWx1ZSB0b28gbGFyZ2U7IHRoZSByZXN1bHRzIGFyZSB1bmRlZmluZWQg
aWYKLS0gICBZWVNUQUNLX0FMTE9DX01BWElNVU0gPCBZWVNUQUNLX0JZVEVTIChZWU1BWERFUFRI
KQotLSAgIGV2YWx1YXRlZCB3aXRoIGluZmluaXRlLXByZWNpc2lvbiBpbnRlZ2VyIGFyaXRobWV0
aWMuICAqLwotLQotLSNpZm5kZWYgWVlNQVhERVBUSAotLSMgZGVmaW5lIFlZTUFYREVQVEggXWI0
X3N0YWNrX2RlcHRoX21heFsKLS0jZW5kaWZdYjRfbGFjX2lmKFtbCi0tCi0tLyogR2l2ZW4gYSBz
dGF0ZSBzdGFjayBzdWNoIHRoYXQgKllZQk9UVE9NIGlzIGl0cyBib3R0b20sIHN1Y2ggdGhhdAot
LSAgICpZWVRPUCBpcyBlaXRoZXIgaXRzIHRvcCBvciBpcyBZWVRPUF9FTVBUWSB0byBpbmRpY2F0
ZSBhbiBlbXB0eQotLSAgIHN0YWNrLCBhbmQgc3VjaCB0aGF0ICpZWUNBUEFDSVRZIGlzIHRoZSBt
YXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBpdAotLSAgIGNhbiBob2xkIHdpdGhvdXQgYSByZWFs
bG9jYXRpb24sIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bwotLSAgIHN0b3JlIFlZ
QUREIG1vcmUgZWxlbWVudHMuICBJZiBub3QsIGFsbG9jYXRlIGEgbmV3IHN0YWNrIHVzaW5nCi0t
ICAgWVlTVEFDS19BTExPQywgY29weSB0aGUgZXhpc3RpbmcgZWxlbWVudHMsIGFuZCBhZGp1c3Qg
KllZQk9UVE9NLAotLSAgICpZWVRPUCwgYW5kICpZWUNBUEFDSVRZIHRvIHJlZmxlY3QgdGhlIG5l
dyBjYXBhY2l0eSBhbmQgbWVtb3J5Ci0tICAgbG9jYXRpb24uICBJZiAqWVlCT1RUT00gIT0gWVlC
T1RUT01fTk9fRlJFRSwgdGhlbiBmcmVlIHRoZSBvbGQgc3RhY2sKLS0gICB1c2luZyBZWVNUQUNL
X0ZSRUUuICBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsIG9yIGlmIG5vIHJlYWxsb2NhdGlvbiBpcwot
LSAgIHJlcXVpcmVkLiAgUmV0dXJuIDEgaWYgbWVtb3J5IGlzIGV4aGF1c3RlZC4gICovCi0tc3Rh
dGljIGludAotLXl5X2xhY19zdGFja19yZWFsbG9jIChZWVNJWkVfVCAqeXljYXBhY2l0eSwgWVlT
SVpFX1QgeXlhZGQsCi0tI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHCi0tICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgY29uc3QgKnl5ZGVidWdfcHJlZml4LAotLSAgICAgICAgICAgICAgICAgICAg
ICBjaGFyIGNvbnN0ICp5eWRlYnVnX3N1ZmZpeCwKLS0jZW5kaWYKLS0gICAgICAgICAgICAgICAg
ICAgICAgeXl0eXBlX2ludDE2ICoqeXlib3R0b20sCi0tICAgICAgICAgICAgICAgICAgICAgIHl5
dHlwZV9pbnQxNiAqeXlib3R0b21fbm9fZnJlZSwKLS0gICAgICAgICAgICAgICAgICAgICAgeXl0
eXBlX2ludDE2ICoqeXl0b3AsIHl5dHlwZV9pbnQxNiAqeXl0b3BfZW1wdHkpCi0tewotLSAgWVlT
SVpFX1QgeXlzaXplX29sZCA9Ci0tICAgIChZWVNJWkVfVCkgKCp5eXRvcCA9PSB5eXRvcF9lbXB0
eSA/IDAgOiAqeXl0b3AgLSAqeXlib3R0b20gKyAxKTsKLS0gIFlZU0laRV9UIHl5c2l6ZV9uZXcg
PSB5eXNpemVfb2xkICsgeXlhZGQ7Ci0tICBpZiAoKnl5Y2FwYWNpdHkgPCB5eXNpemVfbmV3KQot
LSAgICB7Ci0tICAgICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNpemVfbmV3OwotLSAgICAg
IHl5dHlwZV9pbnQxNiAqeXlib3R0b21fbmV3OwotLSAgICAgIC8qIFVzZSBZWU1BWERFUFRIIGZv
ciBtYXhpbXVtIHN0YWNrIHNpemUgZ2l2ZW4gdGhhdCB0aGUgc3RhY2sKLS0gICAgICAgICBzaG91
bGQgbmV2ZXIgbmVlZCB0byBncm93IGxhcmdlciB0aGFuIHRoZSBtYWluIHN0YXRlIHN0YWNrCi0t
ICAgICAgICAgbmVlZHMgdG8gZ3JvdyB3aXRob3V0IExBQy4gICovCi0tICAgICAgaWYgKFlZTUFY
REVQVEggPCB5eXNpemVfbmV3KQotLSAgICAgICAgewotLSAgICAgICAgICBZWURQUklOVEYgKChz
dGRlcnIsICIlc21heCBzaXplIGV4Y2VlZGVkJXMiLCB5eWRlYnVnX3ByZWZpeCwKLS0gICAgICAg
ICAgICAgICAgICAgICAgeXlkZWJ1Z19zdWZmaXgpKTsKLS0gICAgICAgICAgcmV0dXJuIDE7Ci0t
ICAgICAgICB9Ci0tICAgICAgaWYgKFlZTUFYREVQVEggPCB5eWFsbG9jKQotLSAgICAgICAgeXlh
bGxvYyA9IFlZTUFYREVQVEg7Ci0tICAgICAgeXlib3R0b21fbmV3ID0KLS0gICAgICAgICh5eXR5
cGVfaW50MTYqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jICogc2l6ZW9mICp5eWJvdHRvbV9uZXcp
OwotLSAgICAgIGlmICgheXlib3R0b21fbmV3KQotLSAgICAgICAgewotLSAgICAgICAgICBZWURQ
UklOVEYgKChzdGRlcnIsICIlc3JlYWxsb2MgZmFpbGVkJXMiLCB5eWRlYnVnX3ByZWZpeCwKLS0g
ICAgICAgICAgICAgICAgICAgICAgeXlkZWJ1Z19zdWZmaXgpKTsKLS0gICAgICAgICAgcmV0dXJu
IDE7Ci0tICAgICAgICB9Ci0tICAgICAgaWYgKCp5eXRvcCAhPSB5eXRvcF9lbXB0eSkKLS0gICAg
ICAgIHsKLS0gICAgICAgICAgWVlDT1BZICh5eWJvdHRvbV9uZXcsICp5eWJvdHRvbSwgeXlzaXpl
X29sZCk7Ci0tICAgICAgICAgICp5eXRvcCA9IHl5Ym90dG9tX25ldyArICh5eXNpemVfb2xkIC0g
MSk7Ci0tICAgICAgICB9Ci0tICAgICAgaWYgKCp5eWJvdHRvbSAhPSB5eWJvdHRvbV9ub19mcmVl
KQotLSAgICAgICAgWVlTVEFDS19GUkVFICgqeXlib3R0b20pOwotLSAgICAgICp5eWJvdHRvbSA9
IHl5Ym90dG9tX25ldzsKLS0gICAgICAqeXljYXBhY2l0eSA9IHl5YWxsb2M7XW00X2lmKGI0X3Bl
cmNlbnRfZGVmaW5lX2dldChbW3BhcnNlLmxhYy5tZW1vcnktdHJhY2VdXSksCi0tICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbZnVsbF0sIFtbCi0tICAgICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiJXNyZWFsbG9jIHRvICVsdSVzIiwgeXlkZWJ1Z19wcmVmaXgsCi0tICAgICAgICAg
ICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHl5YWxsb2MsIHl5ZGVidWdfc3VmZml4KSk7XV0pWwot
LSAgICB9Ci0tICByZXR1cm4gMDsKLS19Ci0tCi0tLyogRXN0YWJsaXNoIHRoZSBpbml0aWFsIGNv
bnRleHQgZm9yIHRoZSBjdXJyZW50IGxvb2thaGVhZCBpZiBubyBpbml0aWFsCi0tICAgY29udGV4
dCBpcyBjdXJyZW50bHkgZXN0YWJsaXNoZWQuCi0tCi0tICAgV2UgZGVmaW5lIGEgY29udGV4dCBh
cyBhIHNuYXBzaG90IG9mIHRoZSBwYXJzZXIgc3RhY2tzLiAgV2UgZGVmaW5lCi0tICAgdGhlIGlu
aXRpYWwgY29udGV4dCBmb3IgYSBsb29rYWhlYWQgYXMgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhl
Ci0tICAgcGFyc2VyIGluaXRpYWxseSBleGFtaW5lcyB0aGF0IGxvb2thaGVhZCBpbiBvcmRlciB0
byBzZWxlY3QgYQotLSAgIHN5bnRhY3RpYyBhY3Rpb24uICBUaHVzLCBpZiB0aGUgbG9va2FoZWFk
IGV2ZW50dWFsbHkgcHJvdmVzCi0tICAgc3ludGFjdGljYWxseSB1bmFjY2VwdGFibGUgKHBvc3Np
Ymx5IGluIGEgbGF0ZXIgY29udGV4dCByZWFjaGVkIHZpYSBhCi0tICAgc2VyaWVzIG9mIHJlZHVj
dGlvbnMpLCB0aGUgaW5pdGlhbCBjb250ZXh0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZQotLSAg
IHRoZSBleGFjdCBzZXQgb2YgdG9rZW5zIHRoYXQgd291bGQgYmUgc3ludGFjdGljYWxseSBhY2Nl
cHRhYmxlIGluIHRoZQotLSAgIGxvb2thaGVhZCdzIHBsYWNlLiAgTW9yZW92ZXIsIGl0IGlzIHRo
ZSBjb250ZXh0IGFmdGVyIHdoaWNoIGFueQotLSAgIGZ1cnRoZXIgc2VtYW50aWMgYWN0aW9ucyB3
b3VsZCBiZSBlcnJvbmVvdXMgYmVjYXVzZSB0aGV5IHdvdWxkIGJlCi0tICAgZGV0ZXJtaW5lZCBi
eSBhIHN5bnRhY3RpY2FsbHkgdW5hY2NlcHRhYmxlIHRva2VuLgotLQotLSAgIFlZX0xBQ19FU1RB
QkxJU0ggc2hvdWxkIGJlIGludm9rZWQgd2hlbiBhIHJlZHVjdGlvbiBpcyBhYm91dCB0byBiZQot
LSAgIHBlcmZvcm1lZCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgKHdoaWNoLCBmb3IgdGhlIHB1
cnBvc2VzIG9mIExBQywKLS0gICBpbmNsdWRlcyBjb25zaXN0ZW50IHN0YXRlcyB0aGF0IGRvbid0
IGtub3cgdGhleSdyZSBjb25zaXN0ZW50IGJlY2F1c2UKLS0gICB0aGVpciBkZWZhdWx0IHJlZHVj
dGlvbnMgaGF2ZSBiZWVuIGRpc2FibGVkKS4gIElmZiB0aGVyZSBpcyBhCi0tICAgbG9va2FoZWFk
IHRva2VuLCBpdCBzaG91bGQgYWxzbyBiZSBpbnZva2VkIGJlZm9yZSByZXBvcnRpbmcgYSBzeW50
YXgKLS0gICBlcnJvci4gIFRoaXMgbGF0dGVyIGNhc2UgaXMgZm9yIHRoZSBzYWtlIG9mIHRoZSBk
ZWJ1Z2dpbmcgb3V0cHV0LgotLQotLSAgIEZvciBwYXJzZS5sYWM9ZnVsbCwgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIFlZX0xBQ19FU1RBQkxJU0ggaXMgYXMKLS0gICBmb2xsb3dzLiAgSWYgbm8gaW5p
dGlhbCBjb250ZXh0IGlzIGN1cnJlbnRseSBlc3RhYmxpc2hlZCBmb3IgdGhlCi0tICAgY3VycmVu
dCBsb29rYWhlYWQsIHRoZW4gY2hlY2sgaWYgdGhhdCBsb29rYWhlYWQgY2FuIGV2ZW50dWFsbHkg
YmUKLS0gICBzaGlmdGVkIGlmIHN5bnRhY3RpYyBhY3Rpb25zIGNvbnRpbnVlIGZyb20gdGhlIGN1
cnJlbnQgY29udGV4dC4KLS0gICBSZXBvcnQgYSBzeW50YXggZXJyb3IgaWYgaXQgY2Fubm90LiAg
Ki8KLS0jZGVmaW5lIFlZX0xBQ19FU1RBQkxJU0ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLS1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gIGlmICgheXlfbGFjX2VzdGFibGlzaGVkKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAg
ICBZWURQUklOVEYgKChzdGRlcnIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLS0gICAgICAgICAgICAgICAgICAiTEFDOiBpbml0aWFsIGNvbnRleHQgZXN0YWJsaXNo
ZWQgZm9yICVzXG4iLCAgIFwKLS0gICAgICAgICAgICAgICAgICB5eXRuYW1lW3l5dG9rZW5dKSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICB5eV9sYWNfZXN0YWJsaXNoZWQg
PSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0g
ICAgICAgIGludCB5eV9sYWNfc3RhdHVzID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLS0gICAgICAgICAgeXlfbGFjICh5eWVzYSwgJnl5ZXMsICZ5eWVzX2NhcGFjaXR5
LCB5eXNzcCwgeXl0b2tlbik7IFwKLS0gICAgICAgIGlmICh5eV9sYWNfc3RhdHVzID09IDIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgZ290byB5eWV4aGF1
c3RlZGxhYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIGlm
ICh5eV9sYWNfc3RhdHVzID09IDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LS0gICAgICAgICAgZ290byB5eWVycmxhYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLS0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS19IHdoaWxlICgwKQotLQotLS8q
IERpc2NhcmQgYW55IHByZXZpb3VzIGluaXRpYWwgbG9va2FoZWFkIGNvbnRleHQgYmVjYXVzZSBv
ZiBFdmVudCwKLS0gICB3aGljaCBtYXkgYmUgYSBsb29rYWhlYWQgY2hhbmdlIG9yIGFuIGludmFs
aWRhdGlvbiBvZiB0aGUgY3VycmVudGx5Ci0tICAgZXN0YWJsaXNoZWQgaW5pdGlhbCBjb250ZXh0
IGZvciB0aGUgY3VycmVudCBsb29rYWhlYWQuCi0tCi0tICAgVGhlIG1vc3QgY29tbW9uIGV4YW1w
bGUgb2YgYSBsb29rYWhlYWQgY2hhbmdlIGlzIGEgc2hpZnQuICBBbiBleGFtcGxlCi0tICAgb2Yg
Ym90aCBjYXNlcyBpcyBzeW50YXggZXJyb3IgcmVjb3ZlcnkuICBUaGF0IGlzLCBhIHN5bnRheCBl
cnJvcgotLSAgIG9jY3VycyB3aGVuIHRoZSBsb29rYWhlYWQgaXMgc3ludGFjdGljYWxseSBlcnJv
bmVvdXMgZm9yIHRoZQotLSAgIGN1cnJlbnRseSBlc3RhYmxpc2hlZCBpbml0aWFsIGNvbnRleHQs
IHNvIGVycm9yIHJlY292ZXJ5IG1hbmlwdWxhdGVzCi0tICAgdGhlIHBhcnNlciBzdGFja3MgdG8g
dHJ5IHRvIGZpbmQgYSBuZXcgaW5pdGlhbCBjb250ZXh0IGluIHdoaWNoIHRoZQotLSAgIGN1cnJl
bnQgbG9va2FoZWFkIGlzIHN5bnRhY3RpY2FsbHkgYWNjZXB0YWJsZS4gIElmIGl0IGZhaWxzIHRv
IGZpbmQKLS0gICBzdWNoIGEgY29udGV4dCwgaXQgZGlzY2FyZHMgdGhlIGxvb2thaGVhZC4gICov
Ci0tI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHCi0tIyBkZWZpbmUgWVlfTEFDX0RJU0NBUkQoRXZl
bnQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS1kbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotLSAgaWYgKHl5X2xhY19lc3RhYmxpc2hlZCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAg
ICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotLSAgICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJMQUM6IGluaXRpYWwg
Y29udGV4dCBkaXNjYXJkZWQgZHVlIHRvICIgICAgICBcCi0tICAgICAgICAgICAgICAgICAgIEV2
ZW50ICJcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0g
ICAgICB5eV9sYWNfZXN0YWJsaXNoZWQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tfSB3aGlsZSAoMCkKLS0jZWxz
ZQotLSMgZGVmaW5lIFlZX0xBQ19ESVNDQVJEKEV2ZW50KSB5eV9sYWNfZXN0YWJsaXNoZWQgPSAw
Ci0tI2VuZGlmCi0tCi0tLyogR2l2ZW4gdGhlIHN0YWNrIHdob3NlIHRvcCBpcyAqWVlTU1AsIHJl
dHVybiAwIGlmZiBZWVRPS0VOIGNhbgotLSAgIGV2ZW50dWFsbHkgKGFmdGVyIHBlcmhhcHMgc29t
ZSByZWR1Y3Rpb25zKSBiZSBzaGlmdGVkLCByZXR1cm4gMSBpZgotLSAgIG5vdCwgb3IgcmV0dXJu
IDIgaWYgbWVtb3J5IGlzIGV4aGF1c3RlZC4gIEFzIHByZWNvbmRpdGlvbnMgYW5kCi0tICAgcG9z
dGNvbmRpdGlvbnM6ICpZWUVTX0NBUEFDSVRZIGlzIHRoZSBhbGxvY2F0ZWQgc2l6ZSBvZiB0aGUg
YXJyYXkgdG8KLS0gICB3aGljaCAqWVlFUyBwb2ludHMsIGFuZCBlaXRoZXIgKllZRVMgPSBZWUVT
QSBvciAqWVlFUyBwb2ludHMgdG8gYW4KLS0gICBhcnJheSBhbGxvY2F0ZWQgd2l0aCBZWVNUQUNL
X0FMTE9DLiAgeXlfbGFjIG1heSBvdmVyd3JpdGUgdGhlCi0tICAgY29udGVudHMgb2YgZWl0aGVy
IGFycmF5LCBhbHRlciAqWVlFUyBhbmQgKllZRVNfQ0FQQUNJVFksIGFuZCBmcmVlCi0tICAgYW55
IG9sZCAqWVlFUyBvdGhlciB0aGFuIFlZRVNBLiAgKi8KLS1zdGF0aWMgaW50Ci0teXlfbGFjICh5
eXR5cGVfaW50MTYgKnl5ZXNhLCB5eXR5cGVfaW50MTYgKip5eWVzLAotLSAgICAgICAgWVlTSVpF
X1QgKnl5ZXNfY2FwYWNpdHksIHl5dHlwZV9pbnQxNiAqeXlzc3AsIGludCB5eXRva2VuKQotLXsK
LS0gIHl5dHlwZV9pbnQxNiAqeXllc19wcmV2ID0geXlzc3A7Ci0tICB5eXR5cGVfaW50MTYgKnl5
ZXNwID0geXllc19wcmV2OwotLSAgWVlEUFJJTlRGICgoc3RkZXJyLCAiTEFDOiBjaGVja2luZyBs
b29rYWhlYWQgJXM6IiwgeXl0bmFtZVt5eXRva2VuXSkpOwotLSAgaWYgKHl5dG9rZW4gPT0gWVlV
TkRFRlRPSykKLS0gICAgewotLSAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBBbHdheXMgRXJy
XG4iKSk7Ci0tICAgICAgcmV0dXJuIDE7Ci0tICAgIH0KLS0gIHdoaWxlICgxKQotLSAgICB7Ci0t
ICAgICAgaW50IHl5cnVsZSA9IHl5cGFjdFsqeXllc3BdOwotLSAgICAgIGlmICh5eXBhY3RfdmFs
dWVfaXNfZGVmYXVsdCAoeXlydWxlKQotLSAgICAgICAgICB8fCAoeXlydWxlICs9IHl5dG9rZW4p
IDwgMCB8fCBZWUxBU1QgPCB5eXJ1bGUKLS0gICAgICAgICAgfHwgeXljaGVja1t5eXJ1bGVdICE9
IHl5dG9rZW4pCi0tICAgICAgICB7Ci0tICAgICAgICAgIHl5cnVsZSA9IHl5ZGVmYWN0Wyp5eWVz
cF07Ci0tICAgICAgICAgIGlmICh5eXJ1bGUgPT0gMCkKLS0gICAgICAgICAgICB7Ci0tICAgICAg
ICAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICIgRXJyXG4iKSk7Ci0tICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAgZWxzZQotLSAgICAg
ICAgewotLSAgICAgICAgICB5eXJ1bGUgPSB5eXRhYmxlW3l5cnVsZV07Ci0tICAgICAgICAgIGlm
ICh5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yICh5eXJ1bGUpKQotLSAgICAgICAgICAgIHsKLS0gICAg
ICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBFcnJcbiIpKTsKLS0gICAgICAgICAgICAg
IHJldHVybiAxOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgaWYgKDAgPCB5eXJ1bGUpCi0t
ICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiIFMlZFxu
IiwgeXlydWxlKSk7Ci0tICAgICAgICAgICAgICByZXR1cm4gMDsKLS0gICAgICAgICAgICB9Ci0t
ICAgICAgICAgIHl5cnVsZSA9IC15eXJ1bGU7Ci0tICAgICAgICB9Ci0tICAgICAgewotLSAgICAg
ICAgWVlTSVpFX1QgeXlsZW4gPSB5eXIyW3l5cnVsZV07Ci0tICAgICAgICBZWURQUklOVEYgKChz
dGRlcnIsICIgUiVkIiwgeXlydWxlIC0gMSkpOwotLSAgICAgICAgaWYgKHl5ZXNwICE9IHl5ZXNf
cHJldikKLS0gICAgICAgICAgewotLSAgICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZSA9IChZWVNJ
WkVfVCkgKHl5ZXNwIC0gKnl5ZXMgKyAxKTsKLS0gICAgICAgICAgICBpZiAoeXlsZW4gPCB5eXNp
emUpCi0tICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIHl5ZXNwIC09IHl5bGVuOwot
LSAgICAgICAgICAgICAgICB5eWxlbiA9IDA7Ci0tICAgICAgICAgICAgICB9Ci0tICAgICAgICAg
ICAgZWxzZQotLSAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICB5eWxlbiAtPSB5eXNp
emU7Ci0tICAgICAgICAgICAgICAgIHl5ZXNwID0geXllc19wcmV2OwotLSAgICAgICAgICAgICAg
fQotLSAgICAgICAgICB9Ci0tICAgICAgICBpZiAoeXlsZW4pCi0tICAgICAgICAgIHl5ZXNwID0g
eXllc19wcmV2IC09IHl5bGVuOwotLSAgICAgIH0KLS0gICAgICB7Ci0tICAgICAgICB5eXR5cGVf
aW50MTYgeXlzdGF0ZTsKLS0gICAgICAgIHsKLS0gICAgICAgICAgY29uc3QgaW50IHl5bGhzID0g
eXlyMVt5eXJ1bGVdIC0gWVlOVE9LRU5TOwotLSAgICAgICAgICBjb25zdCBpbnQgeXlpID0geXlw
Z290b1t5eWxoc10gKyAqeXllc3A7Ci0tICAgICAgICAgIHl5c3RhdGUgPSAoKHl5dHlwZV9pbnQx
NikKLS0gICAgICAgICAgICAgICAgICAgICAoMCA8PSB5eWkgJiYgeXlpIDw9IFlZTEFTVCAmJiB5
eWNoZWNrW3l5aV0gPT0gKnl5ZXNwCi0tICAgICAgICAgICAgICAgICAgICAgID8geXl0YWJsZVt5
eWldCi0tICAgICAgICAgICAgICAgICAgICAgIDogeXlkZWZnb3RvW3l5bGhzXSkpOwotLSAgICAg
ICAgfQotLSAgICAgICAgaWYgKHl5ZXNwID09IHl5ZXNfcHJldikKLS0gICAgICAgICAgewotLSAg
ICAgICAgICAgIHl5ZXNwID0gKnl5ZXM7Ci0tICAgICAgICAgICAgKnl5ZXNwID0geXlzdGF0ZTsK
LS0gICAgICAgICAgfQotLSAgICAgICAgZWxzZQotLSAgICAgICAgICB7Ci0tICAgICAgICAgICAg
aWYgKHl5X2xhY19zdGFja19yZWFsbG9jICh5eWVzX2NhcGFjaXR5LCAxLAotLSNpZiBdYjRfYXBp
X1BSRUZJWFtERUJVRwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAo
IiwgIikiLAotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eXllcywgeXllc2EsICZ5eWVzcCwgeXllc19wcmV2KSkKLS0gICAgICAgICAgICAgIHsKLS0gICAg
ICAgICAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiXG4iKSk7Ci0tICAgICAgICAgICAgICAg
IHJldHVybiAyOwotLSAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICorK3l5ZXNwID0geXlz
dGF0ZTsKLS0gICAgICAgICAgfQotLSAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiIEclZCIs
IChpbnQpIHl5c3RhdGUpKTsKLS0gICAgICB9Ci0tICAgIH0KLS19XV0pWwotLQotLQotLSNpZiBZ
WUVSUk9SX1ZFUkJPU0UKLS0KLS0jIGlmbmRlZiB5eXN0cmxlbgotLSMgIGlmIGRlZmluZWQgX19H
TElCQ19fICYmIGRlZmluZWQgX1NUUklOR19ICi0tIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4K
LS0jICBlbHNlCi0tLyogUmV0dXJuIHRoZSBsZW5ndGggb2YgWVlTVFIuICAqLwotLV1iNF9mdW5j
dGlvbl9kZWZpbmUoW3l5c3RybGVuXSwgW3N0YXRpYyBZWVNJWkVfVF0sCi0tICAgW1tjb25zdCBj
aGFyICp5eXN0cl0sIFt5eXN0cl1dKVsKLS17Ci0tICBZWVNJWkVfVCB5eWxlbjsKLS0gIGZvciAo
eXlsZW4gPSAwOyB5eXN0clt5eWxlbl07IHl5bGVuKyspCi0tICAgIGNvbnRpbnVlOwotLSAgcmV0
dXJuIHl5bGVuOwotLX0KLS0jICBlbmRpZgotLSMgZW5kaWYKLS0KLS0jIGlmbmRlZiB5eXN0cGNw
eQotLSMgIGlmIGRlZmluZWQgX19HTElCQ19fICYmIGRlZmluZWQgX1NUUklOR19IICYmIGRlZmlu
ZWQgX0dOVV9TT1VSQ0UKLS0jICAgZGVmaW5lIHl5c3RwY3B5IHN0cGNweQotLSMgIGVsc2UKLS0v
KiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJt
aW5hdGluZyAnXDAnIGluCi0tICAgWVlERVNULiAgKi8KLS1dYjRfZnVuY3Rpb25fZGVmaW5lKFt5
eXN0cGNweV0sIFtzdGF0aWMgY2hhciAqXSwKLS0gICBbW2NoYXIgKnl5ZGVzdF0sIFt5eWRlc3Rd
XSwgW1tjb25zdCBjaGFyICp5eXNyY10sIFt5eXNyY11dKVsKLS17Ci0tICBjaGFyICp5eWQgPSB5
eWRlc3Q7Ci0tICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKLS0KLS0gIHdoaWxlICgoKnl5ZCsr
ID0gKnl5cysrKSAhPSAnXDAnKQotLSAgICBjb250aW51ZTsKLS0KLS0gIHJldHVybiB5eWQgLSAx
OwotLX0KLS0jICBlbmRpZgotLSMgZW5kaWYKLS0KLS0jIGlmbmRlZiB5eXRuYW1lcnIKLS0vKiBD
b3B5IHRvIFlZUkVTIHRoZSBjb250ZW50cyBvZiBZWVNUUiBhZnRlciBzdHJpcHBpbmcgYXdheSB1
bm5lY2Vzc2FyeQotLSAgIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMsIHNvIHRoYXQgaXQncyBzdWl0
YWJsZSBmb3IgeXllcnJvci4gIFRoZQotLSAgIGhldXJpc3RpYyBpcyB0aGF0IGRvdWJsZS1xdW90
aW5nIGlzIHVubmVjZXNzYXJ5IHVubGVzcyB0aGUgc3RyaW5nCi0tICAgY29udGFpbnMgYW4gYXBv
c3Ryb3BoZSwgYSBjb21tYSwgb3IgYmFja3NsYXNoIChvdGhlciB0aGFuCi0tICAgYmFja3NsYXNo
LWJhY2tzbGFzaCkuICBZWVNUUiBpcyB0YWtlbiBmcm9tIHl5dG5hbWUuICBJZiBZWVJFUyBpcwot
LSAgIG51bGwsIGRvIG5vdCBjb3B5OyBpbnN0ZWFkLCByZXR1cm4gdGhlIGxlbmd0aCBvZiB3aGF0
IHRoZSByZXN1bHQKLS0gICB3b3VsZCBoYXZlIGJlZW4uICAqLwotLXN0YXRpYyBZWVNJWkVfVAot
LXl5dG5hbWVyciAoY2hhciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5c3RyKQotLXsKLS0gIGlmICgq
eXlzdHIgPT0gJyInKQotLSAgICB7Ci0tICAgICAgWVlTSVpFX1QgeXluID0gMDsKLS0gICAgICBj
aGFyIGNvbnN0ICp5eXAgPSB5eXN0cjsKLS0KLS0gICAgICBmb3IgKDs7KQotLSAgICAgICAgc3dp
dGNoICgqKyt5eXApCi0tICAgICAgICAgIHsKLS0gICAgICAgICAgY2FzZSAnXCcnOgotLSAgICAg
ICAgICBjYXNlICcsJzoKLS0gICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7Ci0t
Ci0tICAgICAgICAgIGNhc2UgJ1xcJzoKLS0gICAgICAgICAgICBpZiAoKisreXlwICE9ICdcXCcp
Ci0tICAgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7Ci0tICAgICAgICAgICAg
ZWxzZQotLSAgICAgICAgICAgICAgZ290byBhcHBlbmQ7Ci0tCi0tICAgICAgICAgIGFwcGVuZDoK
LS0gICAgICAgICAgZGVmYXVsdDoKLS0gICAgICAgICAgICBpZiAoeXlyZXMpCi0tICAgICAgICAg
ICAgICB5eXJlc1t5eW5dID0gKnl5cDsKLS0gICAgICAgICAgICB5eW4rKzsKLS0gICAgICAgICAg
ICBicmVhazsKLS0KLS0gICAgICAgICAgY2FzZSAnIic6Ci0tICAgICAgICAgICAgaWYgKHl5cmVz
KQotLSAgICAgICAgICAgICAgeXlyZXNbeXluXSA9ICdcMCc7Ci0tICAgICAgICAgICAgcmV0dXJu
IHl5bjsKLS0gICAgICAgICAgfQotLSAgICBkb19ub3Rfc3RyaXBfcXVvdGVzOiA7Ci0tICAgIH0K
LS0KLS0gIGlmICghIHl5cmVzKQotLSAgICByZXR1cm4geXlzdHJsZW4gKHl5c3RyKTsKLS0KLS0g
IHJldHVybiAoWVlTSVpFX1QpICh5eXN0cGNweSAoeXlyZXMsIHl5c3RyKSAtIHl5cmVzKTsKLS19
Ci0tIyBlbmRpZgotLQotLS8qIENvcHkgaW50byAqWVlNU0csIHdoaWNoIGlzIG9mIHNpemUgKllZ
TVNHX0FMTE9DLCBhbiBlcnJvciBtZXNzYWdlCi0tICAgYWJvdXQgdGhlIHVuZXhwZWN0ZWQgdG9r
ZW4gWVlUT0tFTiBmb3IgdGhlIHN0YXRlIHN0YWNrIHdob3NlIHRvcCBpcwotLSAgIFlZU1NQLl1i
NF9sYWNfaWYoW1sgIEluIG9yZGVyIHRvIHNlZSBpZiBhIHBhcnRpY3VsYXIgdG9rZW4gVCBpcyBh
Ci0tICAgdmFsaWQgbG9vYWtoZWFkLCBpbnZva2UgeXlfbGFjIChZWUVTQSwgWVlFUywgWVlFU19D
QVBBQ0lUWSwgWVlTU1AsIFQpLl1dKVsKLS0KLS0gICBSZXR1cm4gMCBpZiAqWVlNU0cgd2FzIHN1
Y2Nlc3NmdWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCi0tICAgbm90IGxhcmdl
IGVub3VnaCB0byBob2xkIHRoZSBtZXNzYWdlLiAgSW4gdGhhdCBjYXNlLCBhbHNvIHNldAotLSAg
ICpZWU1TR19BTExPQyB0byB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzLiAgUmV0dXJuIDIg
aWYgdGhlCi0tICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBzdG9y
ZV1iNF9sYWNfaWYoW1sgb3IgaWYKLS0gICB5eV9sYWMgcmV0dXJuZWQgMl1dKVsuICAqLwotLXN0
YXRpYyBpbnQKLS15eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoq
eXltc2csCi0tICAgICAgICAgICAgICAgIF1iNF9sYWNfaWYoW1t5eXR5cGVfaW50MTYgKnl5ZXNh
LCB5eXR5cGVfaW50MTYgKip5eWVzLAotLSAgICAgICAgICAgICAgICBZWVNJWkVfVCAqeXllc19j
YXBhY2l0eSwgXV0pW3l5dHlwZV9pbnQxNiAqeXlzc3AsIGludCB5eXRva2VuKQotLXsKLS0gIFlZ
U0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTExQVFIsIHl5dG5hbWVbeXl0b2tlbl0p
OwotLSAgWVlTSVpFX1QgeXlzaXplID0geXlzaXplMDsKLS0gIGVudW0geyBZWUVSUk9SX1ZFUkJP
U0VfQVJHU19NQVhJTVVNID0gNSB9OwotLSAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0
cmluZy4gKi8KLS0gIGNvbnN0IGNoYXIgKnl5Zm9ybWF0ID0gWVlfTlVMTFBUUjsKLS0gIC8qIEFy
Z3VtZW50cyBvZiB5eWZvcm1hdC4gKi8KLS0gIGNoYXIgY29uc3QgKnl5YXJnW1lZRVJST1JfVkVS
Qk9TRV9BUkdTX01BWElNVU1dOwotLSAgLyogTnVtYmVyIG9mIHJlcG9ydGVkIHRva2VucyAob25l
IGZvciB0aGUgInVuZXhwZWN0ZWQiLCBvbmUgcGVyCi0tICAgICAiZXhwZWN0ZWQiKS4gKi8KLS0g
IGludCB5eWNvdW50ID0gMDsKLS0KLS0gIC8qIFRoZXJlIGFyZSBtYW55IHBvc3NpYmlsaXRpZXMg
aGVyZSB0byBjb25zaWRlcjoKLS0gICAgIC0gSWYgdGhpcyBzdGF0ZSBpcyBhIGNvbnNpc3RlbnQg
c3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLCB0aGVuCi0tICAgICAgIHRoZSBvbmx5IHdheSB0
aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRoZSBkZWZhdWx0IGFjdGlvbgotLSAgICAg
ICBpcyBhbiBlcnJvciBhY3Rpb24uICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBl
Y3RlZAotLSAgICAgICB0b2tlbnMgYmVjYXVzZSB0aGVyZSBhcmUgbm9uZS4KLS0gICAgIC0gVGhl
IG9ubHkgd2F5IHRoZXJlIGNhbiBiZSBubyBsb29rYWhlYWQgcHJlc2VudCAoaW4geXljaGFyKSBp
cyBpZgotLSAgICAgICB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVm
YXVsdCBhY3Rpb24uICBUaHVzLAotLSAgICAgICBkZXRlY3RpbmcgdGhlIGFic2VuY2Ugb2YgYSBs
b29rYWhlYWQgaXMgc3VmZmljaWVudCB0byBkZXRlcm1pbmUKLS0gICAgICAgdGhhdCB0aGVyZSBp
cyBubyB1bmV4cGVjdGVkIG9yIGV4cGVjdGVkIHRva2VuIHRvIHJlcG9ydC4gIEluIHRoYXQKLS0g
ICAgICAgY2FzZSwganVzdCByZXBvcnQgYSBzaW1wbGUgInN5bnRheCBlcnJvciIuCi0tICAgICAt
IERvbid0IGFzc3VtZSB0aGVyZSBpc24ndCBhIGxvb2thaGVhZCBqdXN0IGJlY2F1c2UgdGhpcyBz
dGF0ZSBpcyBhCi0tICAgICAgIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9u
LiAgVGhlcmUgbWlnaHQgaGF2ZSBiZWVuIGEKLS0gICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50
IHN0YXRlLCBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBub24tZGVmYXVsdAotLSAgICAgICBhY3Rp
b24sIG9yIHVzZXIgc2VtYW50aWMgYWN0aW9uIHRoYXQgbWFuaXB1bGF0ZWQgeXljaGFyLl1iNF9s
YWNfaWYoW1sKLS0gICAgICAgSW4gdGhlIGZpcnN0IHR3byBjYXNlcywgaXQgbWlnaHQgYXBwZWFy
IHRoYXQgdGhlIGN1cnJlbnQgc3ludGF4Ci0tICAgICAgIGVycm9yIHNob3VsZCBoYXZlIGJlZW4g
ZGV0ZWN0ZWQgaW4gdGhlIHByZXZpb3VzIHN0YXRlIHdoZW4geXlfbGFjCi0tICAgICAgIHdhcyBp
bnZva2VkLiAgSG93ZXZlciwgYXQgdGhhdCB0aW1lLCB0aGVyZSBtaWdodCBoYXZlIGJlZW4gYQot
LSAgICAgICBkaWZmZXJlbnQgc3ludGF4IGVycm9yIHRoYXQgZGlzY2FyZGVkIGEgZGlmZmVyZW50
IGluaXRpYWwgY29udGV4dAotLSAgICAgICBkdXJpbmcgZXJyb3IgcmVjb3ZlcnksIGxlYXZpbmcg
YmVoaW5kIHRoZSBjdXJyZW50IGxvb2thaGVhZC5dXSwgW1sKLS0gICAgIC0gT2YgY291cnNlLCB0
aGUgZXhwZWN0ZWQgdG9rZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCi0tICAgICAg
IGNvcnJlY3QgbG9va2FoZWFkIGluZm9ybWF0aW9uLCBhbmQgaXQgZGVwZW5kcyBvbiB0aGUgcGFy
c2VyIG5vdAotLSAgICAgICB0byBwZXJmb3JtIGV4dHJhIHJlZHVjdGlvbnMgYWZ0ZXIgZmV0Y2hp
bmcgYSBsb29rYWhlYWQgZnJvbSB0aGUKLS0gICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVj
dGluZyBhIHN5bnRheCBlcnJvci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKLS0gICAgICAgKGZyb20g
TEFMUiBvciBJRUxSKSBhbmQgZGVmYXVsdCByZWR1Y3Rpb25zIGNvcnJ1cHQgdGhlIGV4cGVjdGVk
Ci0tICAgICAgIHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUgbGlzdCBpcyBjb3JyZWN0IGZvciBj
YW5vbmljYWwgTFIgd2l0aAotLSAgICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNv
bnRhaW4gYW55IHRva2VuIHRoYXQgd2lsbCBub3QgYmUKLS0gICAgICAgYWNjZXB0ZWQgZHVlIHRv
IGFuIGVycm9yIGFjdGlvbiBpbiBhIGxhdGVyIHN0YXRlLl1dKVsKLS0gICovCi0tICBpZiAoeXl0
b2tlbiAhPSBZWUVNUFRZKQotLSAgICB7Ci0tICAgICAgaW50IHl5biA9IHl5cGFjdFsqeXlzc3Bd
O11iNF9sYWNfaWYoW1sKLS0gICAgICBZWURQUklOVEYgKChzdGRlcnIsICJDb25zdHJ1Y3Rpbmcg
c3ludGF4IGVycm9yIG1lc3NhZ2VcbiIpKTtdXSlbCi0tICAgICAgeXlhcmdbeXljb3VudCsrXSA9
IHl5dG5hbWVbeXl0b2tlbl07Ci0tICAgICAgaWYgKCF5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAo
eXluKSkKLS0gICAgICAgIHtdYjRfbGFjX2lmKFtdLCBbWwotLSAgICAgICAgICAvKiBTdGFydCBZ
WVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCi0tICAg
ICAgICAgICAgIFlZQ0hFQ0suICBJbiBvdGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3QgLVlZTiBh
Y3Rpb25zIGZvcgotLSAgICAgICAgICAgICB0aGlzIHN0YXRlIGJlY2F1c2UgdGhleSBhcmUgZGVm
YXVsdCBhY3Rpb25zLiAgKi8KLS0gICAgICAgICAgaW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15
eW4gOiAwOwotLSAgICAgICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNr
IGFuZCB5eXRuYW1lLiAgKi8KLS0gICAgICAgICAgaW50IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5
eW4gKyAxOwotLSAgICAgICAgICBpbnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VOUyA/
IHl5Y2hlY2tsaW0gOiBZWU5UT0tFTlM7XV0pWwotLSAgICAgICAgICBpbnQgeXl4O11iNF9sYWNf
aWYoW1sKLS0KLS0gICAgICAgICAgZm9yICh5eXggPSAwOyB5eXggPCBZWU5UT0tFTlM7ICsreXl4
KQotLSAgICAgICAgICAgIGlmICh5eXggIT0gWVlURVJST1IgJiYgeXl4ICE9IFlZVU5ERUZUT0sp
Ci0tICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAg
ICBpbnQgeXlfbGFjX3N0YXR1cyA9IHl5X2xhYyAoeXllc2EsIHl5ZXMsIHl5ZXNfY2FwYWNpdHks
Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5c3NwLCB5
eXgpOwotLSAgICAgICAgICAgICAgICAgIGlmICh5eV9sYWNfc3RhdHVzID09IDIpCi0tICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMjsKLS0gICAgICAgICAgICAgICAgICBpZiAoeXlfbGFjX3N0
YXR1cyA9PSAxKQotLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICAgICAg
ICAgIH1dXSwgW1sKLS0KLS0gICAgICAgICAgZm9yICh5eXggPSB5eXhiZWdpbjsgeXl4IDwgeXl4
ZW5kOyArK3l5eCkKLS0gICAgICAgICAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAm
JiB5eXggIT0gWVlURVJST1IKLS0gICAgICAgICAgICAgICAgJiYgIXl5dGFibGVfdmFsdWVfaXNf
ZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCi0tICAgICAgICAgICAgICB7XV0pWwotLSAgICAg
ICAgICAgICAgICBpZiAoeXljb3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQot
LSAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIHl5Y291bnQgPSAxOwot
LSAgICAgICAgICAgICAgICAgICAgeXlzaXplID0geXlzaXplMDsKLS0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotLSAgICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgeXlhcmdb
eXljb3VudCsrXSA9IHl5dG5hbWVbeXl4XTsKLS0gICAgICAgICAgICAgICAgewotLSAgICAgICAg
ICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKFlZX05VTExQ
VFIsIHl5dG5hbWVbeXl4XSk7Ci0tICAgICAgICAgICAgICAgICAgaWYgKHl5c2l6ZSA8PSB5eXNp
emUxICYmIHl5c2l6ZTEgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKQotLSAgICAgICAgICAgICAg
ICAgICAgeXlzaXplID0geXlzaXplMTsKLS0gICAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMjsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAg
ICAgfQotLSAgICAgICAgfV1iNF9sYWNfaWYoW1sKLS0jIGlmIF1iNF9hcGlfUFJFRklYW0RFQlVH
Ci0tICAgICAgZWxzZSBpZiAoeXlkZWJ1ZykKLS0gICAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
Tm8gZXhwZWN0ZWQgdG9rZW5zLlxuIik7Ci0tIyBlbmRpZl1dKVsKLS0gICAgfQotLQotLSAgc3dp
dGNoICh5eWNvdW50KQotLSAgICB7Ci0tIyBkZWZpbmUgWVlDQVNFXyhOLCBTKSAgICAgICAgICAg
ICAgICAgICAgICBcCi0tICAgICAgY2FzZSBOOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0tICAgICAgICB5eWZvcm1hdCA9IFM7ICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAg
ICAgYnJlYWsKLS0gICAgZGVmYXVsdDogLyogQXZvaWQgY29tcGlsZXIgd2FybmluZ3MuICovCi0t
ICAgICAgWVlDQVNFXygwLCBZWV8oInN5bnRheCBlcnJvciIpKTsKLS0gICAgICBZWUNBU0VfKDEs
IFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikpOwotLSAgICAgIFlZQ0FTRV8oMiwg
WVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyIpKTsKLS0gICAg
ICBZWUNBU0VfKDMsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3Rpbmcg
JXMgb3IgJXMiKSk7Ci0tICAgICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBl
Y3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOwotLSAgICAgIFlZQ0FTRV8oNSwg
WVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAl
cyBvciAlcyIpKTsKLS0jIHVuZGVmIFlZQ0FTRV8KLS0gICAgfQotLQotLSAgewotLSAgICBZWVNJ
WkVfVCB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zm9ybWF0KTsKLS0gICAgaWYgKHl5
c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKQotLSAg
ICAgIHl5c2l6ZSA9IHl5c2l6ZTE7Ci0tICAgIGVsc2UKLS0gICAgICByZXR1cm4gMjsKLS0gIH0K
LS0KLS0gIGlmICgqeXltc2dfYWxsb2MgPCB5eXNpemUpCi0tICAgIHsKLS0gICAgICAqeXltc2df
YWxsb2MgPSAyICogeXlzaXplOwotLSAgICAgIGlmICghICh5eXNpemUgPD0gKnl5bXNnX2FsbG9j
Ci0tICAgICAgICAgICAgICYmICp5eW1zZ19hbGxvYyA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0p
KQotLSAgICAgICAgKnl5bXNnX2FsbG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOwotLSAgICAg
IHJldHVybiAxOwotLSAgICB9Ci0tCi0tICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0IGluZnJp
bmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCi0tICAgICBEb24ndCBoYXZlIHVuZGVmaW5l
ZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgotLSAgICAgcHJvZHVjZWQgYSBzdHJp
bmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8KLS0gIHsKLS0gICAgY2hhciAq
eXlwID0gKnl5bXNnOwotLSAgICBpbnQgeXlpID0gMDsKLS0gICAgd2hpbGUgKCgqeXlwID0gKnl5
Zm9ybWF0KSAhPSAnXDAnKQotLSAgICAgIGlmICgqeXlwID09ICclJyAmJiB5eWZvcm1hdFsxXSA9
PSAncycgJiYgeXlpIDwgeXljb3VudCkKLS0gICAgICAgIHsKLS0gICAgICAgICAgeXlwICs9IHl5
dG5hbWVyciAoeXlwLCB5eWFyZ1t5eWkrK10pOwotLSAgICAgICAgICB5eWZvcm1hdCArPSAyOwot
LSAgICAgICAgfQotLSAgICAgIGVsc2UKLS0gICAgICAgIHsKLS0gICAgICAgICAgeXlwKys7Ci0t
ICAgICAgICAgIHl5Zm9ybWF0Kys7Ci0tICAgICAgICB9Ci0tICB9Ci0tICByZXR1cm4gMDsKLS19
Ci0tI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLwotLQotLV1iNF95eWRlc3RydWN0X2RlZmlu
ZVsKLS0KLS1dYjRfcHVyZV9pZihbXSwgWwotLQotLWI0X2RlY2xhcmVfc2Nhbm5lcl9jb21tdW5p
Y2F0aW9uX3ZhcmlhYmxlc10pW11iNF9wdXNoX2lmKFtbCi0tCi0tc3RydWN0IHl5cHN0YXRlCi0t
ICB7XWI0X2RlY2xhcmVfcGFyc2VyX3N0YXRlX3ZhcmlhYmxlc1sKLS0gICAgLyogVXNlZCB0byBk
ZXRlcm1pbmUgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGlzIGluc3RhbmNlIGhhcwotLSAg
ICAgICBiZWVuIHVzZWQuICAqLwotLSAgICBpbnQgeXluZXc7Ci0tICB9O11iNF9wdXJlX2lmKFtd
LCBbWwotLQotLXN0YXRpYyBjaGFyIHl5cHN0YXRlX2FsbG9jYXRlZCA9IDA7XV0pYjRfcHVsbF9p
ZihbCi0tCi0tYjRfZnVuY3Rpb25fZGVmaW5lKFtbeXlwYXJzZV1dLCBbW2ludF1dLCBiNF9wYXJz
ZV9wYXJhbSlbCi0tewotLSAgcmV0dXJuIHl5cHVsbF9wYXJzZSAoWVlfTlVMTFBUUl1tNF9pZnNl
dChbYjRfcGFyc2VfcGFyYW1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
WywgXWI0X2FyZ3MoYjRfcGFyc2VfcGFyYW0pXSlbKTsKLS19Ci0tCi0tXWI0X2Z1bmN0aW9uX2Rl
ZmluZShbW3l5cHVsbF9wYXJzZV1dLCBbW2ludF1dLAotLSAgW1tbeXlwc3RhdGUgKnl5cHNdXSwg
W1t5eXBzXV1dbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywKLS0gIGI0X3BhcnNlX3BhcmFt
XSkpWwotLXtdYjRfcHVyZV9pZihbYjRfbG9jYXRpb25zX2lmKFtbCi0tICBzdGF0aWMgWVlMVFlQ
RSB5eWxvY19kZWZhdWx0XVtdYjRfeXlsb2NfZGVmYXVsdFs7Ci0tICBZWUxUWVBFIHl5bGxvYyA9
IHl5bG9jX2RlZmF1bHQ7XV0pXSlbCi0tICB5eXBzdGF0ZSAqeXlwc19sb2NhbDsKLS0gIGlmICh5
eXBzKQotLSAgICB5eXBzX2xvY2FsID0geXlwczsKLS0gIGVsc2UKLS0gICAgewotLSAgICAgIHl5
cHNfbG9jYWwgPSB5eXBzdGF0ZV9uZXcgKCk7Ci0tICAgICAgaWYgKCF5eXBzX2xvY2FsKQotLSAg
ICAgICAge11iNF9wdXJlX2lmKFtbCi0tICAgICAgICAgIHl5ZXJyb3IgKF1iNF95eWVycm9yX2Fy
Z3NbWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpO11dLCBbWwotLSAgICAgICAgICBpZiAoIXl5cHN0
YXRlX2FsbG9jYXRlZCkKLS0gICAgICAgICAgICB5eWVycm9yIChdYjRfeXllcnJvcl9hcmdzW1lZ
XygibWVtb3J5IGV4aGF1c3RlZCIpKTtdXSlbCi0tICAgICAgICAgIHJldHVybiAyOwotLSAgICAg
ICAgfQotLSAgICB9Ci0tICBpbnQgeXlzdGF0dXM7Ci0tICBkbyB7XWI0X3B1cmVfaWYoW1sKLS0g
ICAgWVlTVFlQRSB5eWx2YWw7Ci0tICAgIGludCBdXSlbeXljaGFyID0gXWI0X2xleFs7Ci0tICAg
IHl5c3RhdHVzID0KLS0gICAgICB5eXB1c2hfcGFyc2UgKHl5cHNfbG9jYWxdYjRfcHVyZV9pZihb
WywgeXljaGFyLCAmeXlsdmFsXWI0X2xvY2F0aW9uc19pZihbWywgJnl5bGxvY11dKV0pbTRfaWZz
ZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywgYjRfYXJncyhiNF9wYXJzZV9wYXJhbSldKVspOwotLSAg
fSB3aGlsZSAoeXlzdGF0dXMgPT0gWVlQVVNIX01PUkUpOwotLSAgaWYgKCF5eXBzKQotLSAgICB5
eXBzdGF0ZV9kZWxldGUgKHl5cHNfbG9jYWwpOwotLSAgcmV0dXJuIHl5c3RhdHVzOwotLX1dXSlb
Ci0tCi0tLyogSW5pdGlhbGl6ZSB0aGUgcGFyc2VyIGRhdGEgc3RydWN0dXJlLiAgKi8KLS1dYjRf
ZnVuY3Rpb25fZGVmaW5lKFtbeXlwc3RhdGVfbmV3XV0sIFtbeXlwc3RhdGUgKl1dKVsKLS17Ci0t
ICB5eXBzdGF0ZSAqeXlwcztdYjRfcHVyZV9pZihbXSwgW1sKLS0gIGlmICh5eXBzdGF0ZV9hbGxv
Y2F0ZWQpCi0tICAgIHJldHVybiBZWV9OVUxMUFRSO11dKVsKLS0gIHl5cHMgPSAoeXlwc3RhdGUg
KikgbWFsbG9jIChzaXplb2YgKnl5cHMpOwotLSAgaWYgKCF5eXBzKQotLSAgICByZXR1cm4gWVlf
TlVMTFBUUjsKLS0gIHl5cHMtPnl5bmV3ID0gMTtdYjRfcHVyZV9pZihbXSwgW1sKLS0gIHl5cHN0
YXRlX2FsbG9jYXRlZCA9IDE7XV0pWwotLSAgcmV0dXJuIHl5cHM7Ci0tfQotLQotLV1iNF9mdW5j
dGlvbl9kZWZpbmUoW1t5eXBzdGF0ZV9kZWxldGVdXSwgW1t2b2lkXV0sCi0tICAgICAgICAgICAg
ICAgICAgIFtbW3l5cHN0YXRlICp5eXBzXV0sIFtbeXlwc11dXSlbCi0tewotLSAgaWYgKHl5cHMp
Ci0tICAgIHsKLS0jaWZuZGVmIHl5b3ZlcmZsb3cKLS0gICAgICAvKiBJZiB0aGUgc3RhY2sgd2Fz
IHJlYWxsb2NhdGVkIGJ1dCB0aGUgcGFyc2UgZGlkIG5vdCBjb21wbGV0ZSwgdGhlbiB0aGUKLS0g
ICAgICAgICBzdGFjayBzdGlsbCBuZWVkcyB0byBiZSBmcmVlZC4gICovCi0tICAgICAgaWYgKCF5
eXBzLT55eW5ldyAmJiB5eXBzLT55eXNzICE9IHl5cHMtPnl5c3NhKQotLSAgICAgICAgWVlTVEFD
S19GUkVFICh5eXBzLT55eXNzKTsKLS0jZW5kaWZdYjRfbGFjX2lmKFtbCi0tICAgICAgaWYgKCF5
eXBzLT55eW5ldyAmJiB5eXBzLT55eWVzICE9IHl5cHMtPnl5ZXNhKQotLSAgICAgICAgWVlTVEFD
S19GUkVFICh5eXBzLT55eWVzKTtdXSlbCi0tICAgICAgZnJlZSAoeXlwcyk7XWI0X3B1cmVfaWYo
W10sIFtbCi0tICAgICAgeXlwc3RhdGVfYWxsb2NhdGVkID0gMDtdXSlbCi0tICAgIH0KLS19Ci0t
XWI0X3B1cmVfaWYoW1sKLS0jZGVmaW5lIF1iNF9wcmVmaXhbbmVycnMgeXlwcy0+XWI0X3ByZWZp
eFtuZXJyc11dKVsKLS0jZGVmaW5lIHl5c3RhdGUgeXlwcy0+eXlzdGF0ZQotLSNkZWZpbmUgeXll
cnJzdGF0dXMgeXlwcy0+eXllcnJzdGF0dXMKLS0jZGVmaW5lIHl5c3NhIHl5cHMtPnl5c3NhCi0t
I2RlZmluZSB5eXNzIHl5cHMtPnl5c3MKLS0jZGVmaW5lIHl5c3NwIHl5cHMtPnl5c3NwCi0tI2Rl
ZmluZSB5eXZzYSB5eXBzLT55eXZzYQotLSNkZWZpbmUgeXl2cyB5eXBzLT55eXZzCi0tI2RlZmlu
ZSB5eXZzcCB5eXBzLT55eXZzcF1iNF9sb2NhdGlvbnNfaWYoW1sKLS0jZGVmaW5lIHl5bHNhIHl5
cHMtPnl5bHNhCi0tI2RlZmluZSB5eWxzIHl5cHMtPnl5bHMKLS0jZGVmaW5lIHl5bHNwIHl5cHMt
Pnl5bHNwCi0tI2RlZmluZSB5eWVycm9yX3JhbmdlIHl5cHMtPnl5ZXJyb3JfcmFuZ2VdXSlbCi0t
I2RlZmluZSB5eXN0YWNrc2l6ZSB5eXBzLT55eXN0YWNrc2l6ZV1iNF9sYWNfaWYoW1sKLS0jZGVm
aW5lIHl5ZXNhIHl5cHMtPnl5ZXNhCi0tI2RlZmluZSB5eWVzIHl5cHMtPnl5ZXMKLS0jZGVmaW5l
IHl5ZXNfY2FwYWNpdHkgeXlwcy0+eXllc19jYXBhY2l0eV1dKVsKLS0KLS0KLS0vKi0tLS0tLS0t
LS0tLS0tLS4KLS18IHl5cHVzaF9wYXJzZS4gIHwKLS1gLS0tLS0tLS0tLS0tLS0tKi8KLS0KLS1d
YjRfZnVuY3Rpb25fZGVmaW5lKFtbeXlwdXNoX3BhcnNlXV0sIFtbaW50XV0sCi0tICBbW1t5eXBz
dGF0ZSAqeXlwc11dLCBbW3l5cHNdXV1iNF9wdXJlX2lmKFssCi0tICBbW1tpbnQgeXlwdXNoZWRf
Y2hhcl1dLCBbW3l5cHVzaGVkX2NoYXJdXV0sCi0tICBbW1tZWVNUWVBFIGNvbnN0ICp5eXB1c2hl
ZF92YWxdXSwgW1t5eXB1c2hlZF92YWxdXV1iNF9sb2NhdGlvbnNfaWYoWywKLS0gIFtbW1lZTFRZ
UEUgKnl5cHVzaGVkX2xvY11dLCBbW3l5cHVzaGVkX2xvY11dXV0pXSltNF9pZnNldChbYjRfcGFy
c2VfcGFyYW1dLCBbLAotLSAgYjRfcGFyc2VfcGFyYW1dKSldLCBbWwotLQotLQotLS8qLS0tLS0t
LS0tLS4KLS18IHl5cGFyc2UuICB8Ci0tYC0tLS0tLS0tLS0qLwotLQotLV1iNF9mdW5jdGlvbl9k
ZWZpbmUoW3l5cGFyc2VdLCBbaW50XSwgYjRfcGFyc2VfcGFyYW0pXSlbCi0te11iNF9wdXJlX2lm
KFtiNF9kZWNsYXJlX3NjYW5uZXJfY29tbXVuaWNhdGlvbl92YXJpYWJsZXMKLS1dKWI0X3B1c2hf
aWYoW2I0X3B1cmVfaWYoW10sIFtbCi0tICBpbnQgeXlwdXNoZWRfY2hhciA9IHl5Y2hhcjsKLS0g
IFlZU1RZUEUgeXlwdXNoZWRfdmFsID0geXlsdmFsO11iNF9sb2NhdGlvbnNfaWYoW1sKLS0gIFlZ
TFRZUEUgeXlwdXNoZWRfbG9jID0geXlsbG9jO11dKQotLV0pXSwKLS0gIFtiNF9kZWNsYXJlX3Bh
cnNlcl9zdGF0ZV92YXJpYWJsZXMKLS1dKWI0X2xhY19pZihbWwotLSAgaW50IHl5X2xhY19lc3Rh
Ymxpc2hlZCA9IDA7XV0pWwotLSAgaW50IHl5bjsKLS0gIGludCB5eXJlc3VsdDsKLS0gIC8qIExv
b2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAg
Ki8KLS0gIGludCB5eXRva2VuID0gMDsKLS0gIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1
cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCi0tICAgICBhY3Rpb24gcm91
dGluZXMuICAqLwotLSAgWVlTVFlQRSB5eXZhbDtdYjRfbG9jYXRpb25zX2lmKFtbCi0tICBZWUxU
WVBFIHl5bG9jO11dKVsKLS0KLS0jaWYgWVlFUlJPUl9WRVJCT1NFCi0tICAvKiBCdWZmZXIgZm9y
IGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAgKi8KLS0gIGNoYXIgeXlt
c2didWZbMTI4XTsKLS0gIGNoYXIgKnl5bXNnID0geXltc2didWY7Ci0tICBZWVNJWkVfVCB5eW1z
Z19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKLS0jZW5kaWYKLS0KLS0jZGVmaW5lIFlZUE9QU1RB
Q0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTildYjRfbG9jYXRpb25zX2lmKFssIHl5
bHNwIC09IChOKV0pWykKLS0KLS0gIC8qIFRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhT
IG9mIHRoZSByZWR1Y2VkIHJ1bGUuCi0tICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wg
c2hvdWxkIGJlIHBvcHBlZC4gICovCi0tICBpbnQgeXlsZW4gPSAwO11iNF9wdXNoX2lmKFtbCi0t
Ci0tICBpZiAoIXl5cHMtPnl5bmV3KQotLSAgICB7Ci0tICAgICAgeXluID0geXlwYWN0W3l5c3Rh
dGVdOwotLSAgICAgIGdvdG8geXlyZWFkX3B1c2hlZF90b2tlbjsKLS0gICAgfV1dKVsKLS0KLS0g
IHl5c3NwID0geXlzcyA9IHl5c3NhOwotLSAgeXl2c3AgPSB5eXZzID0geXl2c2E7XWI0X2xvY2F0
aW9uc19pZihbWwotLSAgeXlsc3AgPSB5eWxzID0geXlsc2E7XV0pWwotLSAgeXlzdGFja3NpemUg
PSBZWUlOSVRERVBUSDtdYjRfbGFjX2lmKFtbCi0tCi0tICB5eWVzID0geXllc2E7Ci0tICB5eWVz
X2NhcGFjaXR5ID0gc2l6ZW9mIHl5ZXNhIC8gc2l6ZW9mICp5eWVzOwotLSAgaWYgKFlZTUFYREVQ
VEggPCB5eWVzX2NhcGFjaXR5KQotLSAgICB5eWVzX2NhcGFjaXR5ID0gWVlNQVhERVBUSDtdXSlb
Ci0tCi0tICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxuIikpOwotLQotLSAg
eXlzdGF0ZSA9IDA7Ci0tICB5eWVycnN0YXR1cyA9IDA7Ci0tICB5eW5lcnJzID0gMDsKLS0gIHl5
Y2hhciA9IFlZRU1QVFk7IC8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCi0tXW00X2lm
ZGVmKFtiNF9pbml0aWFsX2FjdGlvbl0sIFsKLS1iNF9kb2xsYXJfcHVzaGRlZihbbTRfZGVmaW5l
KFtiNF9kb2xsYXJfZG9sbGFyX3VzZWRdKXl5bHZhbF0sIFtdLCBbXSwKLS0gICAgICAgICAgICAg
ICAgICBbYjRfcHVzaF9pZihbYjRfcHVyZV9pZihbKl0peXlwdXNoZWRfbG9jXSwgW3l5bGxvY10p
XSlkbmwKLS1iNF91c2VyX2luaXRpYWxfYWN0aW9uCi0tYjRfZG9sbGFyX3BvcGRlZltdZG5sCi0t
bTRfaWZkZWYoW2I0X2RvbGxhcl9kb2xsYXJfdXNlZF0sW1sgIHl5dnNwWzBdID0geXlsdmFsOwot
LV1dKV0pZG5sCi0tYjRfbG9jYXRpb25zX2lmKFtbICB5eWxzcFswXSA9IF1iNF9wdXNoX2lmKFti
NF9wdXJlX2lmKFsqXSl5eXB1c2hlZF9sb2NdLCBbeXlsbG9jXSlbOwotLV1dKWRubAotLVsgIGdv
dG8geXlzZXRzdGF0ZTsKLS0KLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS18IHl5bmV3c3RhdGUgLS0gcHVzaCBhIG5l
dyBzdGF0ZSwgd2hpY2ggaXMgZm91bmQgaW4geXlzdGF0ZS4gIHwKLS1gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eW5ld3N0
YXRlOgotLSAgLyogSW4gYWxsIGNhc2VzLCB3aGVuIHlvdSBnZXQgaGVyZSwgdGhlIHZhbHVlIGFu
ZCBsb2NhdGlvbiBzdGFja3MKLS0gICAgIGhhdmUganVzdCBiZWVuIHB1c2hlZC4gIFNvIHB1c2hp
bmcgYSBzdGF0ZSBoZXJlIGV2ZW5zIHRoZSBzdGFja3MuICAqLwotLSAgeXlzc3ArKzsKLS0KLS0K
LS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLgotLXwgeXluZXdzdGF0ZSAtLSBzZXQgY3VycmVudCBzdGF0ZSAodGhl
IHRvcCBvZiB0aGUgc3RhY2spIHRvIHl5c3RhdGUuICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eXNl
dHN0YXRlOgotLSAgKnl5c3NwID0gKHl5dHlwZV9pbnQxNikgeXlzdGF0ZTsKLS0KLS0gIGlmICh5
eXNzICsgeXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQotLSNpZiAhZGVmaW5lZCB5eW92ZXJmbG93
ICYmICFkZWZpbmVkIFlZU1RBQ0tfUkVMT0NBVEUKLS0gICAgZ290byB5eWV4aGF1c3RlZGxhYjsK
LS0jZWxzZQotLSAgICB7Ci0tICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHVzZWQgc2l6ZSBvZiB0
aGUgdGhyZWUgc3RhY2tzLCBpbiBlbGVtZW50cy4gICovCi0tICAgICAgWVlTSVpFX1QgeXlzaXpl
ID0gKFlZU0laRV9UKSAoeXlzc3AgLSB5eXNzICsgMSk7Ci0tCi0tIyBpZiBkZWZpbmVkIHl5b3Zl
cmZsb3cKLS0gICAgICB7Ci0tICAgICAgICAvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxv
Y2F0ZSB0aGUgc3RhY2suICBVc2UgY29waWVzIG9mCi0tICAgICAgICAgICB0aGVzZSBzbyB0aGF0
IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCi0tICAgICAgICAgICBtZW1v
cnkuICAqLwotLSAgICAgICAgWVlTVFlQRSAqeXl2czEgPSB5eXZzOwotLSAgICAgICAgeXl0eXBl
X2ludDE2ICp5eXNzMSA9IHl5c3M7XWI0X2xvY2F0aW9uc19pZihbCi0tICAgICAgICBZWUxUWVBF
ICp5eWxzMSA9IHl5bHM7XSlbCi0tCi0tICAgICAgICAvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRk
cmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKLS0gICAgICAgICAgIGRhdGEgaW4g
dXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKLS0gICAgICAg
ICAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywgYnV0IHRoYXQg
bWlnaHQKLS0gICAgICAgICAgIGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlzIGEgbWFjcm8u
ICAqLwotLSAgICAgICAgeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCi0tICAg
ICAgICAgICAgICAgICAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKLS0gICAg
ICAgICAgICAgICAgICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLF1iNF9sb2Nh
dGlvbnNfaWYoWwotLSAgICAgICAgICAgICAgICAgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2Yg
KCp5eWxzcCksXSlbCi0tICAgICAgICAgICAgICAgICAgICAmeXlzdGFja3NpemUpOwotLSAgICAg
ICAgeXlzcyA9IHl5c3MxOwotLSAgICAgICAgeXl2cyA9IHl5dnMxO11iNF9sb2NhdGlvbnNfaWYo
WwotLSAgICAgICAgeXlscyA9IHl5bHMxO10pWwotLSAgICAgIH0KLS0jIGVsc2UgLyogZGVmaW5l
ZCBZWVNUQUNLX1JFTE9DQVRFICovCi0tICAgICAgLyogRXh0ZW5kIHRoZSBzdGFjayBvdXIgb3du
IHdheS4gICovCi0tICAgICAgaWYgKFlZTUFYREVQVEggPD0geXlzdGFja3NpemUpCi0tICAgICAg
ICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotLSAgICAgIHl5c3RhY2tzaXplICo9IDI7Ci0tICAgICAg
aWYgKFlZTUFYREVQVEggPCB5eXN0YWNrc2l6ZSkKLS0gICAgICAgIHl5c3RhY2tzaXplID0gWVlN
QVhERVBUSDsKLS0KLS0gICAgICB7Ci0tICAgICAgICB5eXR5cGVfaW50MTYgKnl5c3MxID0geXlz
czsKLS0gICAgICAgIHVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLS0gICAgICAgICAgKHVuaW9uIHl5
YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKLS0g
ICAgICAgIGlmICghIHl5cHRyKQotLSAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotLSAg
ICAgICAgWVlTVEFDS19SRUxPQ0FURSAoeXlzc19hbGxvYywgeXlzcyk7Ci0tICAgICAgICBZWVNU
QUNLX1JFTE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTtdYjRfbG9jYXRpb25zX2lmKFsKLS0gICAg
ICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5bHMpO10pWwotLSMgdW5kZWYgWVlT
VEFDS19SRUxPQ0FURQotLSAgICAgICAgaWYgKHl5c3MxICE9IHl5c3NhKQotLSAgICAgICAgICBZ
WVNUQUNLX0ZSRUUgKHl5c3MxKTsKLS0gICAgICB9Ci0tIyBlbmRpZgotLQotLSAgICAgIHl5c3Nw
ID0geXlzcyArIHl5c2l6ZSAtIDE7Ci0tICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTtd
YjRfbG9jYXRpb25zX2lmKFsKLS0gICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxO10pWwot
LQotLSAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVs
dVxuIiwKLS0gICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgeXlzdGFja3NpemUpKTsK
LS0KLS0gICAgICBpZiAoeXlzcyArIHl5c3RhY2tzaXplIC0gMSA8PSB5eXNzcCkKLS0gICAgICAg
IFlZQUJPUlQ7Ci0tICAgIH0KLS0jZW5kaWYgLyogIWRlZmluZWQgeXlvdmVyZmxvdyAmJiAhZGVm
aW5lZCBZWVNUQUNLX1JFTE9DQVRFICovCi0tCi0tICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRl
cmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwotLQotLSAgaWYgKHl5c3RhdGUgPT0gWVlGSU5B
TCkKLS0gICAgWVlBQ0NFUFQ7Ci0tCi0tICBnb3RvIHl5YmFja3VwOwotLQotLQotLS8qLS0tLS0t
LS0tLS0uCi0tfCB5eWJhY2t1cC4gIHwKLS1gLS0tLS0tLS0tLS0qLwotLXl5YmFja3VwOgotLSAg
LyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJl
YWQgYQotLSAgICAgbG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJl
YWR5IGhhdmUgb25lLiAgKi8KLS0KLS0gIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBk
byB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwotLSAgeXluID0geXlw
YWN0W3l5c3RhdGVdOwotLSAgaWYgKHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQotLSAg
ICBnb3RvIHl5ZGVmYXVsdDsKLS0KLS0gIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQg
dG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCi0tCi0tICAvKiBZWUNIQVIgaXMg
ZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rYWhlYWQgc3ltYm9sLiAgKi8K
LS0gIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkKLS0gICAge11iNF9wdXNoX2lmKFtbCi0tICAgICAg
aWYgKCF5eXBzLT55eW5ldykKLS0gICAgICAgIHtdYjRfdXNlX3B1c2hfZm9yX3B1bGxfaWYoW10s
IFtbCi0tICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJldHVybiBmb3IgYSBuZXcgdG9r
ZW46XG4iKSk7XV0pWwotLSAgICAgICAgICB5eXJlc3VsdCA9IFlZUFVTSF9NT1JFOwotLSAgICAg
ICAgICBnb3RvIHl5cHVzaHJldHVybjsKLS0gICAgICAgIH0KLS0gICAgICB5eXBzLT55eW5ldyA9
IDA7XWI0X3B1cmVfaWYoW10sIFtbCi0tICAgICAgLyogUmVzdG9yaW5nIHRoZSBwdXNoZWQgdG9r
ZW4gaXMgb25seSBuZWNlc3NhcnkgZm9yIHRoZSBmaXJzdAotLSAgICAgICAgIHl5cHVzaF9wYXJz
ZSBpbnZvY2F0aW9uIHNpbmNlIHN1YnNlcXVlbnQgaW52b2NhdGlvbnMgZG9uJ3Qgb3ZlcndyaXRl
Ci0tICAgICAgICAgaXQgYmVmb3JlIGp1bXBpbmcgdG8geXlyZWFkX3B1c2hlZF90b2tlbi4gICov
Ci0tICAgICAgeXljaGFyID0geXlwdXNoZWRfY2hhcjsKLS0gICAgICB5eWx2YWwgPSB5eXB1c2hl
ZF92YWw7XWI0X2xvY2F0aW9uc19pZihbWwotLSAgICAgIHl5bGxvYyA9IHl5cHVzaGVkX2xvYztd
XSldKVsKLS15eXJlYWRfcHVzaGVkX3Rva2VuOl1dKVsKLS0gICAgICBZWURQUklOVEYgKChzdGRl
cnIsICJSZWFkaW5nIGEgdG9rZW46ICIpKTtdYjRfcHVzaF9pZihbYjRfcHVyZV9pZihbWwotLSAg
ICAgIHl5Y2hhciA9IHl5cHVzaGVkX2NoYXI7Ci0tICAgICAgaWYgKHl5cHVzaGVkX3ZhbCkKLS0g
ICAgICAgIHl5bHZhbCA9ICp5eXB1c2hlZF92YWw7XWI0X2xvY2F0aW9uc19pZihbWwotLSAgICAg
IGlmICh5eXB1c2hlZF9sb2MpCi0tICAgICAgICB5eWxsb2MgPSAqeXlwdXNoZWRfbG9jO11dKV0p
XSwgW1sKLS0gICAgICB5eWNoYXIgPSBdYjRfbGV4WztdXSlbCi0tICAgIH0KLS0KLS0gIGlmICh5
eWNoYXIgPD0gWVlFT0YpCi0tICAgIHsKLS0gICAgICB5eWNoYXIgPSB5eXRva2VuID0gWVlFT0Y7
Ci0tICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiTm93IGF0IGVuZCBvZiBpbnB1dC5cbiIpKTsK
LS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5
eWNoYXIpOwotLSAgICAgIFlZX1NZTUJPTF9QUklOVCAoIk5leHQgdG9rZW4gaXMiLCB5eXRva2Vu
LCAmeXlsdmFsLCAmeXlsbG9jKTsKLS0gICAgfQotLQotLSAgLyogSWYgdGhlIHByb3BlciBhY3Rp
b24gb24gc2VlaW5nIHRva2VuIFlZVE9LRU4gaXMgdG8gcmVkdWNlIG9yIHRvCi0tICAgICBkZXRl
Y3QgYW4gZXJyb3IsIHRha2UgdGhhdCBhY3Rpb24uICAqLwotLSAgeXluICs9IHl5dG9rZW47Ci0t
ICBpZiAoeXluIDwgMCB8fCBZWUxBU1QgPCB5eW4gfHwgeXljaGVja1t5eW5dICE9IHl5dG9rZW4p
XWI0X2xhY19pZihbWwotLSAgICB7Ci0tICAgICAgWVlfTEFDX0VTVEFCTElTSDsKLS0gICAgICBn
b3RvIHl5ZGVmYXVsdDsKLS0gICAgfV1dLCBbWwotLSAgICBnb3RvIHl5ZGVmYXVsdDtdXSlbCi0t
ICB5eW4gPSB5eXRhYmxlW3l5bl07Ci0tICBpZiAoeXluIDw9IDApCi0tICAgIHsKLS0gICAgICBp
ZiAoeXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXluKSkKLS0gICAgICAgIGdvdG8geXllcnJsYWI7
XWI0X2xhY19pZihbWwotLSAgICAgIFlZX0xBQ19FU1RBQkxJU0g7XV0pWwotLSAgICAgIHl5biA9
IC15eW47Ci0tICAgICAgZ290byB5eXJlZHVjZTsKLS0gICAgfQotLQotLSAgLyogQ291bnQgdG9r
ZW5zIHNoaWZ0ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgotLSAg
ICAgc3RhdHVzLiAgKi8KLS0gIGlmICh5eWVycnN0YXR1cykKLS0gICAgeXllcnJzdGF0dXMtLTsK
LS0KLS0gIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLwotLSAgWVlfU1lNQk9MX1BS
SU5UICgiU2hpZnRpbmciLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9jKTsKLS0KLS0gIC8qIERp
c2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLwotLSAgeXljaGFyID0gWVlFTVBUWTtdYjRfbGFj
X2lmKFtbCi0tICBZWV9MQUNfRElTQ0FSRCAoInNoaWZ0Iik7XV0pWwotLQotLSAgeXlzdGF0ZSA9
IHl5bjsKLS0gIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCi0tICAqKyt5eXZz
cCA9IHl5bHZhbDsKLS0gIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAotLV1iNF9s
b2NhdGlvbnNfaWYoWyAgKisreXlsc3AgPSB5eWxsb2M7XSlbCi0tICBnb3RvIHl5bmV3c3RhdGU7
Ci0tCi0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KLS18IHl5ZGVmYXVsdCAtLSBkbyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9y
IHRoZSBjdXJyZW50IHN0YXRlLiAgfAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0teXlkZWZhdWx0OgotLSAgeXluID0geXlk
ZWZhY3RbeXlzdGF0ZV07Ci0tICBpZiAoeXluID09IDApCi0tICAgIGdvdG8geXllcnJsYWI7Ci0t
ICBnb3RvIHl5cmVkdWNlOwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
Ci0tfCB5eXJlZHVjZSAtLSBkbyBhIHJlZHVjdGlvbi4gIHwKLS1gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLwotLXl5cmVkdWNlOgotLSAgLyogeXluIGlzIHRoZSBudW1iZXIgb2YgYSBy
dWxlIHRvIHJlZHVjZSB3aXRoLiAgKi8KLS0gIHl5bGVuID0geXlyMlt5eW5dOwotLQotLSAgLyog
SWYgWVlMRU4gaXMgbm9uemVybywgaW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBh
Y3Rpb246Ci0tICAgICAnJCQgPSAkMScuCi0tCi0tICAgICBPdGhlcndpc2UsIHRoZSBmb2xsb3dp
bmcgbGluZSBzZXRzIFlZVkFMIHRvIGdhcmJhZ2UuCi0tICAgICBUaGlzIGJlaGF2aW9yIGlzIHVu
ZG9jdW1lbnRlZCBhbmQgQmlzb24KLS0gICAgIHVzZXJzIHNob3VsZCBub3QgcmVseSB1cG9uIGl0
LiAgQXNzaWduaW5nIHRvIFlZVkFMCi0tICAgICB1bmNvbmRpdGlvbmFsbHkgbWFrZXMgdGhlIHBh
cnNlciBhIGJpdCBzbWFsbGVyLCBhbmQgaXQgYXZvaWRzIGEKLS0gICAgIEdDQyB3YXJuaW5nIHRo
YXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCi0tICB5eXZhbCA9IHl5dnNw
WzEteXlsZW5dOwotLQotLV1iNF9sb2NhdGlvbnNfaWYoCi0tW1sgIC8qIERlZmF1bHQgbG9jYXRp
b24uICovCi0tICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5bGVuKSwgeXlsZW4p
OwotLSAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bG9jO11dKVsKLS0gIFlZX1JFRFVDRV9QUklOVCAo
eXluKTtdYjRfbGFjX2lmKFtbCi0tICB7Ci0tICAgIGludCB5eWNoYXJfYmFja3VwID0geXljaGFy
OwotLSAgICBzd2l0Y2ggKHl5bikKLS0gICAgICB7Ci0tXWI0X3VzZXJfYWN0aW9uc1sKLS0gICAg
ICAgIGRlZmF1bHQ6IGJyZWFrOwotLSAgICAgIH0KLS0gICAgaWYgKHl5Y2hhcl9iYWNrdXAgIT0g
eXljaGFyKQotLSAgICAgIFlZX0xBQ19ESVNDQVJEICgieXljaGFyIGNoYW5nZSIpOwotLSAgfV1d
LCBbWwotLSAgc3dpdGNoICh5eW4pCi0tICAgIHsKLS0gICAgICBdYjRfdXNlcl9hY3Rpb25zWwot
LSAgICAgIGRlZmF1bHQ6IGJyZWFrOwotLSAgICB9XV0pWwotLSAgLyogVXNlciBzZW1hbnRpYyBh
Y3Rpb25zIHNvbWV0aW1lcyBhbHRlciB5eWNoYXIsIGFuZCB0aGF0IHJlcXVpcmVzCi0tICAgICB0
aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBXZSB0YWtl
IHRoZQotLSAgICAgYXBwcm9hY2ggb2YgdHJhbnNsYXRpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGV2
ZXJ5IHVzZSBvZiB5eXRva2VuLgotLSAgICAgT25lIGFsdGVybmF0aXZlIGlzIHRyYW5zbGF0aW5n
IGhlcmUgYWZ0ZXIgZXZlcnkgc2VtYW50aWMgYWN0aW9uLAotLSAgICAgYnV0IHRoYXQgdHJhbnNs
YXRpb24gd291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcwotLSAg
ICAgWVlBQk9SVCwgWVlBQ0NFUFQsIG9yIFlZRVJST1IgaW1tZWRpYXRlbHkgYWZ0ZXIgYWx0ZXJp
bmcgeXljaGFyIG9yCi0tICAgICBpZiBpdCBpbnZva2VzIFlZQkFDS1VQLiAgSW4gdGhlIGNhc2Ug
b2YgWVlBQk9SVCBvciBZWUFDQ0VQVCwgYW4KLS0gICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1p
Z2h0IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIEluIHRoZQotLSAgICAgY2FzZSBvZiBZ
WUVSUk9SIG9yIFlZQkFDS1VQLCBzdWJzZXF1ZW50IHBhcnNlciBhY3Rpb25zIG1pZ2h0IGxlYWQK
LS0gICAgIHRvIGFuIGluY29ycmVjdCBkZXN0cnVjdG9yIGNhbGwgb3IgdmVyYm9zZSBzeW50YXgg
ZXJyb3IgbWVzc2FnZQotLSAgICAgYmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4g
ICovCi0tICBZWV9TWU1CT0xfUFJJTlQgKCItPiAkJCA9IiwgeXlyMVt5eW5dLCAmeXl2YWwsICZ5
eWxvYyk7Ci0tCi0tICBZWVBPUFNUQUNLICh5eWxlbik7Ci0tICB5eWxlbiA9IDA7Ci0tICBZWV9T
VEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwotLQotLSAgKisreXl2c3AgPSB5eXZhbDtdYjRfbG9j
YXRpb25zX2lmKFsKLS0gICorK3l5bHNwID0geXlsb2M7XSlbCi0tCi0tICAvKiBOb3cgJ3NoaWZ0
JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQotLSAg
ICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5k
IHRoZSBydWxlCi0tICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCi0tICB7Ci0tICAgIGNvbnN0
IGludCB5eWxocyA9IHl5cjFbeXluXSAtIFlZTlRPS0VOUzsKLS0gICAgY29uc3QgaW50IHl5aSA9
IHl5cGdvdG9beXlsaHNdICsgKnl5c3NwOwotLSAgICB5eXN0YXRlID0gKDAgPD0geXlpICYmIHl5
aSA8PSBZWUxBU1QgJiYgeXljaGVja1t5eWldID09ICp5eXNzcAotLSAgICAgICAgICAgICAgID8g
eXl0YWJsZVt5eWldCi0tICAgICAgICAgICAgICAgOiB5eWRlZmdvdG9beXlsaHNdKTsKLS0gIH0K
LS0KLS0gIGdvdG8geXluZXdzdGF0ZTsKLS0KLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLgotLXwgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3Iu
ICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eWVycmxh
YjoKLS0gIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJhbnNsYXRpb24u
ICBTZWUgY29tbWVudHMgYXQKLS0gICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRo
aXMgaXMgbmVjZXNzYXJ5LiAgKi8KLS0gIHl5dG9rZW4gPSB5eWNoYXIgPT0gWVlFTVBUWSA/IFlZ
RU1QVFkgOiBZWVRSQU5TTEFURSAoeXljaGFyKTsKLS0KLS0gIC8qIElmIG5vdCBhbHJlYWR5IHJl
Y292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwotLSAgaWYgKCF5
eWVycnN0YXR1cykKLS0gICAgewotLSAgICAgICsreXluZXJyczsKLS0jaWYgISBZWUVSUk9SX1ZF
UkJPU0UKLS0gICAgICB5eWVycm9yIChdYjRfeXllcnJvcl9hcmdzW1lZXygic3ludGF4IGVycm9y
IikpOwotLSNlbHNlCi0tIyBkZWZpbmUgWVlTWU5UQVhfRVJST1IgeXlzeW50YXhfZXJyb3IgKCZ5
eW1zZ19hbGxvYywgJnl5bXNnLCBcXWI0X2xhY19pZihbWwotLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5eWVzYSwgJnl5ZXMsICZ5eWVzX2NhcGFjaXR5LCBcXV0pWwot
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eXNzcCwgeXl0b2tlbikK
LS0gICAgICB7Ci0tICAgICAgICBjaGFyIGNvbnN0ICp5eW1zZ3AgPSBZWV8oInN5bnRheCBlcnJv
ciIpOwotLSAgICAgICAgaW50IHl5c3ludGF4X2Vycm9yX3N0YXR1cztdYjRfbGFjX2lmKFtbCi0t
ICAgICAgICBpZiAoeXljaGFyICE9IFlZRU1QVFkpCi0tICAgICAgICAgIFlZX0xBQ19FU1RBQkxJ
U0g7XV0pWwotLSAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gWVlTWU5UQVhfRVJST1I7
Ci0tICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDApCi0tICAgICAgICAgIHl5
bXNncCA9IHl5bXNnOwotLSAgICAgICAgZWxzZSBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09
IDEpCi0tICAgICAgICAgIHsKLS0gICAgICAgICAgICBpZiAoeXltc2cgIT0geXltc2didWYpCi0t
ICAgICAgICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKLS0gICAgICAgICAgICB5eW1zZyA9
IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5bXNnX2FsbG9jKTsKLS0gICAgICAgICAgICBpZiAo
IXl5bXNnKQotLSAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICB5eW1zZyA9IHl5bXNn
YnVmOwotLSAgICAgICAgICAgICAgICB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKLS0g
ICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVzID0gMjsKLS0gICAgICAgICAgICAg
IH0KLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAg
IHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOwotLSAgICAgICAgICAgICAg
ICB5eW1zZ3AgPSB5eW1zZzsKLS0gICAgICAgICAgICAgIH0KLS0gICAgICAgICAgfQotLSAgICAg
ICAgeXllcnJvciAoXWI0X3l5ZXJyb3JfYXJnc1t5eW1zZ3ApOwotLSAgICAgICAgaWYgKHl5c3lu
dGF4X2Vycm9yX3N0YXR1cyA9PSAyKQotLSAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwot
LSAgICAgIH0KLS0jIHVuZGVmIFlZU1lOVEFYX0VSUk9SCi0tI2VuZGlmCi0tICAgIH0KLS0KLS1d
YjRfbG9jYXRpb25zX2lmKFtbICB5eWVycm9yX3JhbmdlWzFdID0geXlsbG9jO11dKVsKLS0KLS0g
IGlmICh5eWVycnN0YXR1cyA9PSAzKQotLSAgICB7Ci0tICAgICAgLyogSWYganVzdCB0cmllZCBh
bmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgotLSAgICAgICAgIGVy
cm9yLCBkaXNjYXJkIGl0LiAgKi8KLS0KLS0gICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQotLSAg
ICAgICAgewotLSAgICAgICAgICAvKiBSZXR1cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQu
ICAqLwotLSAgICAgICAgICBpZiAoeXljaGFyID09IFlZRU9GKQotLSAgICAgICAgICAgIFlZQUJP
UlQ7Ci0tICAgICAgICB9Ci0tICAgICAgZWxzZQotLSAgICAgICAgewotLSAgICAgICAgICB5eWRl
c3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAotLSAgICAgICAgICAgICAgICAgICAgICB5eXRv
a2VuLCAmeXlsdmFsXWI0X2xvY2F0aW9uc19pZihbLCAmeXlsbG9jXSlbXWI0X3VzZXJfYXJnc1sp
OwotLSAgICAgICAgICB5eWNoYXIgPSBZWUVNUFRZOwotLSAgICAgICAgfQotLSAgICB9Ci0tCi0t
ICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGlu
ZyB0aGUgZXJyb3IKLS0gICAgIHRva2VuLiAgKi8KLS0gIGdvdG8geXllcnJsYWIxOwotLQotLQot
LS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgot
LXwgeXllcnJvcmxhYiAtLSBlcnJvciByYWlzZWQgZXhwbGljaXRseSBieSBZWUVSUk9SLiAgfAot
LWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwot
LXl5ZXJyb3JsYWI6Ci0tICAvKiBQYWNpZnkgY29tcGlsZXJzIHdoZW4gdGhlIHVzZXIgY29kZSBu
ZXZlciBpbnZva2VzIFlZRVJST1IgYW5kIHRoZQotLSAgICAgbGFiZWwgeXllcnJvcmxhYiB0aGVy
ZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1c2VyIGNvZGUuICAqLwotLSAgaWYgKDApCi0tICAgIFlZ
RVJST1I7Ci0tCi0tICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3
aG9zZSBhY3Rpb24gdHJpZ2dlcmVkCi0tICAgICB0aGlzIFlZRVJST1IuICAqLwotLSAgWVlQT1BT
VEFDSyAoeXlsZW4pOwotLSAgeXlsZW4gPSAwOwotLSAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5
c3NwKTsKLS0gIHl5c3RhdGUgPSAqeXlzc3A7Ci0tICBnb3RvIHl5ZXJybGFiMTsKLS0KLS0KLS0v
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0uCi0tfCB5eWVycmxhYjEgLS0gY29tbW9uIGNvZGUgZm9yIGJvdGggc3ludGF4IGVycm9y
IGFuZCBZWUVSUk9SLiAgfAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eWVycmxhYjE6Ci0tICB5eWVycnN0YXR1cyA9
IDM7ICAgICAgLyogRWFjaCByZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8K
LS0KLS0gIGZvciAoOzspCi0tICAgIHsKLS0gICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0t
ICAgICAgaWYgKCF5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKLS0gICAgICAgIHsKLS0g
ICAgICAgICAgeXluICs9IFlZVEVSUk9SOwotLSAgICAgICAgICBpZiAoMCA8PSB5eW4gJiYgeXlu
IDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5bl0gPT0gWVlURVJST1IpCi0tICAgICAgICAgICAgewot
LSAgICAgICAgICAgICAgeXluID0geXl0YWJsZVt5eW5dOwotLSAgICAgICAgICAgICAgaWYgKDAg
PCB5eW4pCi0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgIH0KLS0gICAgICAg
IH0KLS0KLS0gICAgICAvKiBQb3AgdGhlIGN1cnJlbnQgc3RhdGUgYmVjYXVzZSBpdCBjYW5ub3Qg
aGFuZGxlIHRoZSBlcnJvciB0b2tlbi4gICovCi0tICAgICAgaWYgKHl5c3NwID09IHl5c3MpCi0t
ICAgICAgICBZWUFCT1JUOwotLQotLV1iNF9sb2NhdGlvbnNfaWYoW1sgICAgICB5eWVycm9yX3Jh
bmdlWzFdID0gKnl5bHNwO11dKVsKLS0gICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmci
LAotLSAgICAgICAgICAgICAgICAgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3BdYjRfbG9jYXRpb25z
X2lmKFssIHl5bHNwXSlbXWI0X3VzZXJfYXJnc1spOwotLSAgICAgIFlZUE9QU1RBQ0sgKDEpOwot
LSAgICAgIHl5c3RhdGUgPSAqeXlzc3A7Ci0tICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5
c3NwKTsKLS0gICAgfV1iNF9sYWNfaWYoW1sKLS0KLS0gIC8qIElmIHRoZSBzdGFjayBwb3BwaW5n
IGFib3ZlIGRpZG4ndCBsb3NlIHRoZSBpbml0aWFsIGNvbnRleHQgZm9yIHRoZQotLSAgICAgY3Vy
cmVudCBsb29rYWhlYWQgdG9rZW4sIHRoZSBzaGlmdCBiZWxvdyB3aWxsIGZvciBzdXJlLiAgKi8K
LS0gIFlZX0xBQ19ESVNDQVJEICgiZXJyb3IgcmVjb3ZlcnkiKTtdXSlbCi0tCi0tICBZWV9JR05P
UkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgotLSAgKisreXl2c3AgPSB5eWx2YWw7Ci0tICBZ
WV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKLS1dYjRfbG9jYXRpb25zX2lmKFtbCi0t
ICB5eWVycm9yX3JhbmdlWzJdID0geXlsbG9jOwotLSAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0
aW5nLCBidXQgd291bGQgY2hhbmdlIHRoZSBsb2NhdGlvbiBvZgotLSAgICAgdGhlIGxvb2thaGVh
ZC4gIFlZTE9DIGlzIGF2YWlsYWJsZSB0aG91Z2guICAqLwotLSAgWVlMTE9DX0RFRkFVTFQgKHl5
bG9jLCB5eWVycm9yX3JhbmdlLCAyKTsKLS0gICorK3l5bHNwID0geXlsb2M7XV0pWwotLQotLSAg
LyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KLS0gIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0
aW5nIiwgeXlzdG9zW3l5bl0sIHl5dnNwLCB5eWxzcCk7Ci0tCi0tICB5eXN0YXRlID0geXluOwot
LSAgZ290byB5eW5ld3N0YXRlOwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KLS18IHl5YWNjZXB0bGFiIC0tIFlZQUNDRVBUIGNvbWVzIGhlcmUuICB8Ci0t
YC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLXl5YWNjZXB0bGFiOgot
LSAgeXlyZXN1bHQgPSAwOwotLSAgZ290byB5eXJldHVybjsKLS0KLS0KLS0vKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlhYm9ydGxhYiAtLSBZWUFCT1JUIGNvbWVz
IGhlcmUuICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eWFi
b3J0bGFiOgotLSAgeXlyZXN1bHQgPSAxOwotLSAgZ290byB5eXJldHVybjsKLS0KLS0KLS0jaWYg
XWI0X2xhY19pZihbWzFdXSwgW1shZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9T
RV1dKVsKLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0uCi0tfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAg
fAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
LS15eWV4aGF1c3RlZGxhYjoKLS0gIHl5ZXJyb3IgKF1iNF95eWVycm9yX2FyZ3NbWVlfKCJtZW1v
cnkgZXhoYXVzdGVkIikpOwotLSAgeXlyZXN1bHQgPSAyOwotLSAgLyogRmFsbCB0aHJvdWdoLiAg
Ki8KLS0jZW5kaWYKLS0KLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlyZXR1cm4gLS0gcGFyc2luZyBpcyBmaW5pc2hlZCwg
cmV0dXJuIHRoZSByZXN1bHQuICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eXJldHVybjoKLS0gIGlmICh5eWNoYXIgIT0gWVlF
TVBUWSkKLS0gICAgewotLSAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhl
YWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKLS0gICAgICAgICB1c2VyIHNlbWFudGlj
IGFjdGlvbnMgZm9yIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4gICovCi0tICAgICAgeXl0b2tlbiA9
IFlZVFJBTlNMQVRFICh5eWNoYXIpOwotLSAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNj
YXJkaW5nIGxvb2thaGVhZCIsCi0tICAgICAgICAgICAgICAgICAgeXl0b2tlbiwgJnl5bHZhbF1i
NF9sb2NhdGlvbnNfaWYoWywgJnl5bGxvY10pW11iNF91c2VyX2FyZ3NbKTsKLS0gICAgfQotLSAg
LyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hvc2UgYWN0aW9uIHRy
aWdnZXJlZAotLSAgICAgdGhpcyBZWUFCT1JUIG9yIFlZQUNDRVBULiAgKi8KLS0gIFlZUE9QU1RB
Q0sgKHl5bGVuKTsKLS0gIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7Ci0tICB3aGlsZSAo
eXlzc3AgIT0geXlzcykKLS0gICAgewotLSAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3Bw
aW5nIiwKLS0gICAgICAgICAgICAgICAgICB5eXN0b3NbKnl5c3NwXSwgeXl2c3BdYjRfbG9jYXRp
b25zX2lmKFssIHl5bHNwXSlbXWI0X3VzZXJfYXJnc1spOwotLSAgICAgIFlZUE9QU1RBQ0sgKDEp
OwotLSAgICB9Ci0tI2lmbmRlZiB5eW92ZXJmbG93Ci0tICBpZiAoeXlzcyAhPSB5eXNzYSkKLS0g
ICAgWVlTVEFDS19GUkVFICh5eXNzKTsKLS0jZW5kaWZdYjRfbGFjX2lmKFtbCi0tICBpZiAoeXll
cyAhPSB5eWVzYSkKLS0gICAgWVlTVEFDS19GUkVFICh5eWVzKTtdXSliNF9wdXNoX2lmKFtbCi0t
ICB5eXBzLT55eW5ldyA9IDE7Ci0tCi0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KLS18IHl5cHVzaHJldHVybiAtLSBhc2sgZm9yIHRoZSBuZXh0IHRva2Vu
LiAgfAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0teXlw
dXNocmV0dXJuOl1dKVsKLS0jaWYgWVlFUlJPUl9WRVJCT1NFCi0tICBpZiAoeXltc2cgIT0geXlt
c2didWYpCi0tICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwotLSNlbmRpZgotLSAgcmV0dXJuIHl5
cmVzdWx0OwotLX0KLS1dYjRfZXBpbG9ndWVbXWRubAotLWI0X291dHB1dF9lbmQKLS0KLS1iNF9k
ZWZpbmVzX2lmKFtbCi0tXWI0X291dHB1dF9iZWdpbihbYjRfc3BlY19kZWZpbmVzX2ZpbGVdKVsK
LS1dYjRfY29weXJpZ2h0KFtCaXNvbiBpbnRlcmZhY2UgZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGlu
IENdKVsKLS1dYjRfZGlzY2xhaW1lclsKLS1dYjRfc2hhcmVkX2RlY2xhcmF0aW9uc1sKLS1dYjRf
b3V0cHV0X2VuZFsKLS1dXSkjIGI0X2RlZmluZXNfaWYKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVz
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi91cGRhdGVfZmxl
eF9iaXNvbl9iaW5hcmllcy5weQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCA5OWMw
MDJiMDRlNy4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xz
L2ZsZXgtYmlzb24vdXBkYXRlX2ZsZXhfYmlzb25fYmluYXJpZXMucHkKLSsrKyAvZGV2L251bGwK
LUBAIC0xLDY5ICswLDAgQEAKLS0jIS91c3IvYmluL3B5dGhvbjIKLS0jCi0tIyBDb3B5cmlnaHQg
MjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLSMg
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS0jCi0tIyB1cGRh
dGVfZmxleF9iaXNvbl9iaW5hcmllcy5weToKLS0jICAgSGVscGVyIHNjcmlwdCB0byB1cGRhdGUg
dGhlIHZlcnNpb24gb2YgZmxleCBhbmQgYmlzb24gaW4gY2xvdWQgc3RvcmFnZS4KLS0jICAgVGhl
c2UgYmluYXJpZXMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIEFOR0xFIHRyYW5zbGF0b3IncyBs
ZXhlciBhbmQgcGFyc2VyLgotLSMgICBUaGlzIHNjcmlwdCByZWxpZXMgb24gZmxleCBhbmQgYmlz
b24gYmluYXJpZXMgdG8gYmUgZXh0ZXJuYWxseSBidWlsdCB3aGljaAotLSMgICBpcyBleHBlY3Rl
ZCB0byBiZSBhIHJhcmUgb3BlcmF0aW9uLiBJdCBjdXJyZW50bHkgb25seSB3b3JrcyBvbiBXaW5k
b3dzIGFuZAotLSMgICBMaW51eC4gSXQgYWxzbyB3aWxsIHVwZGF0ZSB0aGUgaGFzaGVzIHN0b3Jl
ZCBpbiB0aGUgdHJlZS4gRm9yIG1vcmUgaW5mbyBzZWUKLS0jICAgUkVBRE1FLm1kIGluIHRoaXMg
Zm9sZGVyLgotLQotLWltcG9ydCBvcwotLWltcG9ydCBwbGF0Zm9ybQotLWltcG9ydCBzaHV0aWwK
LS1pbXBvcnQgc3lzCi0tCi0tc3lzLnBhdGguYXBwZW5kKCd0b29scy8nKQotLWltcG9ydCBhbmds
ZV90b29scwotLQotLQotLWRlZiBtYWluKCk6Ci0tICAgIGlmIGFuZ2xlX3Rvb2xzLmlzX2xpbnV4
OgotLSAgICAgICAgc3ViZGlyID0gJ2xpbnV4JwotLSAgICAgICAgZmlsZXMgPSBbJ2ZsZXgnLCAn
Ymlzb24nXQotLSAgICBlbGlmIGFuZ2xlX3Rvb2xzLmlzX3dpbmRvd3M6Ci0tICAgICAgICBzdWJk
aXIgPSAnd2luZG93cycKLS0gICAgICAgIGZpbGVzID0gWwotLSAgICAgICAgICAgICdmbGV4LmV4
ZScsICdiaXNvbi5leGUnLCAnbTQuZXhlJywgJ21zeXMtMi4wLmRsbCcsICdtc3lzLWljb252LTIu
ZGxsJywKLS0gICAgICAgICAgICAnbXN5cy1pbnRsLTguZGxsJwotLSAgICAgICAgXQotLSAgICBl
bHNlOgotLSAgICAgICAgcHJpbnQoJ1NjcmlwdCBtdXN0IGJlIHJ1biBvbiBMaW51eCBvciBXaW5k
b3dzLicpCi0tICAgICAgICByZXR1cm4gMQotLQotLSAgICBmaWxlcyA9IFtvcy5wYXRoLmpvaW4o
c3lzLnBhdGhbMF0sIHN1YmRpciwgZikgZm9yIGYgaW4gZmlsZXNdCi0tCi0tICAgICMgU3RlcCAx
OiBVcGxvYWQgdG8gY2xvdWQgc3RvcmFnZQotLSAgICBpZiBub3QgYW5nbGVfdG9vbHMudXBsb2Fk
X3RvX2dvb2dsZV9zdG9yYWdlKCdhbmdsZS1mbGV4LWJpc29uJywgZmlsZXMpOgotLSAgICAgICAg
cHJpbnQoJ0Vycm9yIHVwbG9hZCB0byBjbG91ZCBzdG9yYWdlJykKLS0gICAgICAgIHJldHVybiAx
Ci0tCi0tICAgICMgU3RlcCAyOiBTdGFnZSBuZXcgU0hBIHRvIGdpdAotLSAgICBpZiBub3QgYW5n
bGVfdG9vbHMuc3RhZ2VfZ29vZ2xlX3N0b3JhZ2Vfc2hhMShmaWxlcyk6Ci0tICAgICAgICBwcmlu
dCgnRXJyb3IgcnVubmluZyBnaXQgYWRkJykKLS0gICAgICAgIHJldHVybiAyCi0tCi0tICAgIHBy
aW50KCcnKQotLSAgICBwcmludCgnVGhlIHVwZGF0ZWQgU0hBIGhhcyBiZWVuIHN0YWdlZCBmb3Ig
Y29tbWl0LiBQbGVhc2UgY29tbWl0IGFuZCB1cGxvYWQuJykKLS0gICAgcHJpbnQoJ1N1Z2dlc3Rl
ZCBjb21taXQgbWVzc2FnZSAocGxlYXNlIGluZGljYXRlIGZsZXgvYmlzb24gdmVyc2lvbnMpOicp
Ci0tICAgIHByaW50KCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJykKLS0gICAgcHJpbnQo
JycpCi0tICAgIHByaW50KCdVcGRhdGUgZmxleCBhbmQgYmlzb24gYmluYXJpZXMgZm9yICVzLicg
JSBwbGF0Zm9ybS5zeXN0ZW0oKSkKLS0gICAgcHJpbnQoJycpCi0tICAgIHByaW50KCdUaGVzZSBi
aW5hcmllcyB3ZXJlIHVwZGF0ZWQgdXNpbmcgJXMuJyAlIG9zLnBhdGguYmFzZW5hbWUoX19maWxl
X18pKQotLSAgICBwcmludCgnUGxlYXNlIHNlZSBpbnN0cnVjdGlvbnMgaW4gdG9vbHMvZmxleC1i
aXNvbi9SRUFETUUubWQuJykKLS0gICAgcHJpbnQoJycpCi0tICAgIHByaW50KCdmbGV4IGlzIGF0
IHZlcnNpb24gVE9ETy4nKQotLSAgICBwcmludCgnYmlzb24gaXMgYXQgdmVyc2lvbiBUT0RPLicp
Ci0tICAgIHByaW50KCcnKQotLSAgICBwcmludCgnQnVnOiBOb25lJykKLS0KLS0gICAgcmV0dXJu
IDAKLS0KLS0KLS1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotLSAgICBzeXMuZXhpdChtYWlu
KCkpCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNv
bi93aW5kb3dzL2Jpc29uLmV4ZS5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMv
ZmxleC1iaXNvbi93aW5kb3dzL2Jpc29uLmV4ZS5zaGExCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKLWluZGV4IDhjYjVmNGZiNWJiLi4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL2Jpc29uLmV4ZS5zaGExCi0rKysgL2Rl
di9udWxsCi1AQCAtMSArMCwwIEBACi0tNGE2ZTFkY2VkNjFkYWIyZmNkODI4ZWRiZmJmYTdlYjAy
MTVjZjJhNAotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL2ZsZXguZXhlLnNoYTEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvZmxleC5l
eGUuc2hhMQotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBmYWE3OGVkY2FmZS4uMDAw
MDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24v
d2luZG93cy9mbGV4LmV4ZS5zaGExCi0rKysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBACi0tYmM1
MGIzYjZlODRhMzA5NDBhYTEyMjNmNjkyYzlmMWZjOWJlZGJmOQotXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxl
eC1iaXNvbi93aW5kb3dzL200LmV4ZS5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9v
bHMvZmxleC1iaXNvbi93aW5kb3dzL200LmV4ZS5zaGExCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKLWluZGV4IDU2NDNkZmIzYjA1Li4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL200LmV4ZS5zaGExCi0rKysgL2Rldi9u
dWxsCi1AQCAtMSArMCwwIEBACi0tMDY4MzZlNDViMDVkNTk3ZDU2Yjc0ZmViZTNiY2ZkNzZlODBl
ZjhmOAotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtMi4wLmRsbC5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMt
Mi4wLmRsbC5zaGExCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDk4MzUyYzc0NjM1
Li4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi93aW5kb3dzL21zeXMtMi4wLmRsbC5zaGExCi0rKysgL2Rldi9udWxsCi1AQCAtMSArMCww
IEBACi0tZDBiZWFiN2VjNzdiMjVhYzcxYmQyZDNiZjU0ZjRlZmQzOWUzOTQ3ZgotXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtaWNvbnYtMi5kbGwuc2hhMSBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLWljb252LTIuZGxs
LnNoYTEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZjUyYmM0YjQyYjkuLjAwMDAw
MDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dp
bmRvd3MvbXN5cy1pY29udi0yLmRsbC5zaGExCi0rKysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBA
Ci0tMDU3OWYxNTYzZTIyMGQ2MTIxYjY1YTVmNDcyOTkxOWNkMGNiNmFmOQotXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9v
bHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtaW50bC04LmRsbC5zaGExIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtaW50bC04LmRsbC5zaGEx
Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGE3MzU5MjExM2YxLi4wMDAwMDAwMDAw
MAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dz
L21zeXMtaW50bC04LmRsbC5zaGExCi0rKysgL2Rldi9udWxsCi1AQCAtMSArMCwwIEBACi0tMjEy
YTllZjkwZTIxYTk4ZmY1N2NhMzAxYTYwYzg0Y2JlY2E3YmUyOAotXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oIGIvaW5j
bHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oCi1pbmRleCBiNjAzZmY5YmFkMi4uZjRlYzRmODgzN2Mg
MTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgKLSsrKyBiL2luY2x1ZGUv
cGxhdGZvcm0vUGxhdGZvcm0uaAotQEAgLTksNiArOSw3IEBACi0gI2lmbmRlZiBBTkdMRV9QTEFU
Rk9STV9ICi0gI2RlZmluZSBBTkdMRV9QTEFURk9STV9ICitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwIGIvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCitpbmRleCA0ZWM5OWJjZWEuLjZhMjUwZGI4NSAx
MDA2NDQKKy0tLSBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNw
cAorKysrIGIvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCitA
QCAtMTYxNSw3ICsxNjE1LDkgQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywgYW5nbGU6OkZlYXR1cmVzR0wgKmZlYXR1cmUKKyAgICAgYm9vbCBs
aW1pdE1heFRleHR1cmVTaXplID0gaXNJbnRlbCAmJiBJc0xpbnV4KCkgJiYgR2V0TGludXhPU1Zl
cnNpb24oKSA8IE9TVmVyc2lvbig1LCAwLCAwKTsKKyAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJ
T04oZmVhdHVyZXMsIGxpbWl0TWF4VGV4dHVyZVNpemVUbzQwOTYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElzQW5kcm9pZCgpIHx8IGxpbWl0TWF4VGV4dHVyZVNpemUpOworLSAgICBB
TkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgbGltaXRNYXhNU0FBU2FtcGxlc1RvNCwg
SXNBbmRyb2lkKCkpOworKyAgICAvLyBPbiBBcHBsZSBzd2l0Y2hhYmxlIGdyYXBoaWNzLCBHTF9N
QVhfU0FNUExFUyBtYXkgZGlmZmVyIGJldHdlZW4gdGhlIEdQVXMuCisrICAgIC8vIDQgaXMgYSBs
b3dlc3QgY29tbW9uIGRlbm9taW5hdG9yIHRoYXQgaXMgYWx3YXlzIHN1cHBvcnRlZC4KKysgICAg
QU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGxpbWl0TWF4TVNBQVNhbXBsZXNUbzQs
IElzQW5kcm9pZCgpIHx8IChJc0FwcGxlKCkgJiYgKGlzSW50ZWwgfHwgaXNBTUQgfHwgaXNOdmlk
aWEpKSk7CisgICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKGZlYXR1cmVzLCBsaW1pdE1heDNk
QXJyYXlUZXh0dXJlU2l6ZVRvMTAyNCwgbGltaXRNYXhUZXh0dXJlU2l6ZSk7CiAgCi0rI2luY2x1
ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8YXJyYXk+Cisg
ICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKGZlYXR1cmVzLCBhbGxvd0NsZWFyRm9yUm9idXN0
UmVzb3VyY2VJbml0LCBJc0FwcGxlKCkpOworQEAgLTE2NzMsNiArMTY3NSw5IEBAIHZvaWQgSW5p
dGlhbGl6ZUZlYXR1cmVzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGFuZ2xlOjpGZWF0
dXJlc0dMICpmZWF0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE8oYW5n
bGVidWcuY29tLzIyNzMpOiBkaWFnbm9zZSBjcmFzaGVzIHdpdGggdGhpcyB3b3JrYXJvdW5kLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CiAgCi1kaWZmIC0tZ2l0IGEvc3Jj
L2NvbW1vbi9QYWNrZWRFbnVtcy5oIGIvc3JjL2NvbW1vbi9QYWNrZWRFbnVtcy5oCi1pbmRleCBi
ZDVmYzM0MGRjYy4uNjMzNjhlMjVkZmUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uL1BhY2tlZEVu
dW1zLmgKLSsrKyBiL3NyYy9jb21tb24vUGFja2VkRW51bXMuaAotQEAgLTgzLDEwICs4Myw3IEBA
IGNsYXNzIFBhY2tlZEVudW1NYXAKLSAgICAgICAgIC8vIFdlIHVzZSBhIGZvciBsb29wIGluc3Rl
YWQgb2YgcmFuZ2UtZm9yIHRvIHdvcmsgYXJvdW5kIGEgbGltaXRhdGlvbiBpbiBNU1ZDLgotICAg
ICAgICAgZm9yIChjb25zdCBJbml0UGFpciAqaXQgPSBpbml0LmJlZ2luKCk7IGl0ICE9IGluaXQu
ZW5kKCk7ICsraXQpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgLy8gVGhpcyBob3JyaWJsZSBj
b25zdF9jYXN0IHBhdHRlcm4gaXMgbmVjZXNzYXJ5IHRvIHdvcmsgYXJvdW5kIGEgY29uc3RleHBy
IGxpbWl0YXRpb24uCi0tICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5j
b20vcS8zNDE5OTc3NC8gLiBOb3RlIHRoYXQgaXQgc2hvdWxkIGJlIGZpeGVkIHdpdGggQysrMTcu
Ci0tICAgICAgICAgICAgY29uc3RfY2FzdDxUICY+KGNvbnN0X2Nhc3Q8Y29uc3QgU3RvcmFnZSAm
PigKLS0gICAgICAgICAgICAgICAgbVByaXZhdGVEYXRhKVtzdGF0aWNfY2FzdDxVbmRlcmx5aW5n
VHlwZT4oaXQtPmZpcnN0KV0pID0gaXQtPnNlY29uZDsKLSsgICAgICAgICAgICBtUHJpdmF0ZURh
dGFbc3RhdGljX2Nhc3Q8VW5kZXJseWluZ1R5cGU+KGl0LT5maXJzdCldID0gaXQtPnNlY29uZDsK
LSAgICAgICAgIH0KLSAgICAgfQorKyAgICAvLyBidWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjYyNQorKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgZmx1c2hC
ZWZvcmVCaW5kRnJhbWVidWZmZXIsIElzQXBwbGUoKSAmJiBpc0ludGVsKTsKKysKKyAgICAgLy8g
V29ya2Fyb3VuZCBmb3IgaW5jb3JyZWN0IHNhbXBsaW5nIGZyb20gRFhUMSBzUkdCIHRleHR1cmVz
IGluIEludGVsIE9wZW5HTCBvbiBXaW5kb3dzLgorICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElP
TihmZWF0dXJlcywgYXZvaWREWFQxc1JHQlRleHR1cmVGb3JtYXQsIElzV2luZG93cygpICYmIGlz
SW50ZWwpOworIAorZGlmZiAtLWdpdCBhL3NyYy90aGlyZF9wYXJ0eS92b2xrL3ZvbGsuYyBiL3Ny
Yy90aGlyZF9wYXJ0eS92b2xrL3ZvbGsuYworaW5kZXggMzUxN2NiNGY2Li5iYmMwOTliZGYgMTAw
NjQ0CistLS0gYS9zcmMvdGhpcmRfcGFydHkvdm9say92b2xrLmMKKysrKyBiL3NyYy90aGlyZF9w
YXJ0eS92b2xrL3ZvbGsuYworQEAgLTMsMTYgKzMsMTYgQEAKKyAjaW5jbHVkZSAidm9say5oIgor
IAorICNpZmRlZiBfV0lOMzIKKy0JdHlwZWRlZiBjb25zdCBjaGFyKiBMUENTVFI7CistCXR5cGVk
ZWYgc3RydWN0IEhJTlNUQU5DRV9fKiBISU5TVEFOQ0U7CistCXR5cGVkZWYgSElOU1RBTkNFIEhN
T0RVTEU7CistCSNpZmRlZiBfV0lONjQKKy0JCXR5cGVkZWYgX19pbnQ2NCAoX19zdGRjYWxsKiBG
QVJQUk9DKSh2b2lkKTsKKy0JI2Vsc2UKKy0JCXR5cGVkZWYgaW50IChfX3N0ZGNhbGwqIEZBUlBS
T0MpKHZvaWQpOworLQkjZW5kaWYKKysgICAgdHlwZWRlZiBjb25zdCBjaGFyKiBMUENTVFI7Cisr
ICAgIHR5cGVkZWYgc3RydWN0IEhJTlNUQU5DRV9fKiBISU5TVEFOQ0U7CisrICAgIHR5cGVkZWYg
SElOU1RBTkNFIEhNT0RVTEU7CisrICAgICNpZmRlZiBfV0lONjQKKysgICAgICAgIHR5cGVkZWYg
X19pbnQ2NCAoX19zdGRjYWxsKiBGQVJQUk9DKSh2b2lkKTsKKysgICAgI2Vsc2UKKysgICAgICAg
IHR5cGVkZWYgaW50IChfX3N0ZGNhbGwqIEZBUlBST0MpKHZvaWQpOworKyAgICAjZW5kaWYKKyAj
ZWxzZQorLSMJaW5jbHVkZSA8ZGxmY24uaD4KKysjICAgaW5jbHVkZSA8ZGxmY24uaD4KKyAjZW5k
aWYKKyAKKyAjaWZkZWYgX19jcGx1c3BsdXMKK0BAIC0zNCwxMDk1ICszNCwxMDk1IEBAIHN0YXRp
YyB2b2lkIHZvbGtHZW5Mb2FkRGV2aWNlVGFibGUoc3RydWN0IFZvbGtEZXZpY2VUYWJsZSogdGFi
bGUsIHZvaWQqIGNvbnRleHQsCisgCisgc3RhdGljIFBGTl92a1ZvaWRGdW5jdGlvbiB2a0dldElu
c3RhbmNlUHJvY0FkZHJTdHViKHZvaWQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIG5hbWUpCisgewor
LQlyZXR1cm4gdmtHZXRJbnN0YW5jZVByb2NBZGRyKChWa0luc3RhbmNlKWNvbnRleHQsIG5hbWUp
OworKyAgICByZXR1cm4gdmtHZXRJbnN0YW5jZVByb2NBZGRyKChWa0luc3RhbmNlKWNvbnRleHQs
IG5hbWUpOworIH0KKyAKKyBzdGF0aWMgUEZOX3ZrVm9pZEZ1bmN0aW9uIHZrR2V0RGV2aWNlUHJv
Y0FkZHJTdHViKHZvaWQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIG5hbWUpCisgeworLQlyZXR1cm4g
dmtHZXREZXZpY2VQcm9jQWRkcigoVmtEZXZpY2UpY29udGV4dCwgbmFtZSk7CisrICAgIHJldHVy
biB2a0dldERldmljZVByb2NBZGRyKChWa0RldmljZSljb250ZXh0LCBuYW1lKTsKKyB9CisgCisg
VmtSZXN1bHQgdm9sa0luaXRpYWxpemUodm9pZCkKKyB7CisgI2lmIGRlZmluZWQoX1dJTjMyKQor
LQlITU9EVUxFIG1vZHVsZSA9IExvYWRMaWJyYXJ5QSgidnVsa2FuLTEuZGxsIik7CistCWlmICgh
bW9kdWxlKQorLQkJcmV0dXJuIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRDsKKysgICAg
SE1PRFVMRSBtb2R1bGUgPSBMb2FkTGlicmFyeUEoInZ1bGthbi0xLmRsbCIpOworKyAgICBpZiAo
IW1vZHVsZSkKKysgICAgICAgIHJldHVybiBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQ7
CisgCistCS8vIG5vdGU6IGZ1bmN0aW9uIHBvaW50ZXIgaXMgY2FzdCB0aHJvdWdoIHZvaWQgZnVu
Y3Rpb24gcG9pbnRlciB0byBzaWxlbmNlIGNhc3QtZnVuY3Rpb24tdHlwZSB3YXJuaW5nIG9uIGdj
YzgKKy0JdmtHZXRJbnN0YW5jZVByb2NBZGRyID0gKFBGTl92a0dldEluc3RhbmNlUHJvY0FkZHIp
KHZvaWQoKikodm9pZCkpR2V0UHJvY0FkZHJlc3MobW9kdWxlLCAidmtHZXRJbnN0YW5jZVByb2NB
ZGRyIik7CisrICAgIC8vIG5vdGU6IGZ1bmN0aW9uIHBvaW50ZXIgaXMgY2FzdCB0aHJvdWdoIHZv
aWQgZnVuY3Rpb24gcG9pbnRlciB0byBzaWxlbmNlIGNhc3QtZnVuY3Rpb24tdHlwZSB3YXJuaW5n
IG9uIGdjYzgKKysgICAgdmtHZXRJbnN0YW5jZVByb2NBZGRyID0gKFBGTl92a0dldEluc3RhbmNl
UHJvY0FkZHIpKHZvaWQoKikodm9pZCkpR2V0UHJvY0FkZHJlc3MobW9kdWxlLCAidmtHZXRJbnN0
YW5jZVByb2NBZGRyIik7CisgI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCistCXZvaWQqIG1vZHVs
ZSA9IGRsb3BlbigibGlidnVsa2FuLmR5bGliIiwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKy0J
aWYgKCFtb2R1bGUpCistCQltb2R1bGUgPSBkbG9wZW4oImxpYnZ1bGthbi4xLmR5bGliIiwgUlRM
RF9OT1cgfCBSVExEX0xPQ0FMKTsKKy0JaWYgKCFtb2R1bGUpCistCQltb2R1bGUgPSBkbG9wZW4o
ImxpYk1vbHRlblZLLmR5bGliIiwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKy0JaWYgKCFtb2R1
bGUpCistCQlyZXR1cm4gVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEOworKyAgICB2b2lk
KiBtb2R1bGUgPSBkbG9wZW4oImxpYnZ1bGthbi5keWxpYiIsIFJUTERfTk9XIHwgUlRMRF9MT0NB
TCk7CisrICAgIGlmICghbW9kdWxlKQorKyAgICAgICAgbW9kdWxlID0gZGxvcGVuKCJsaWJ2dWxr
YW4uMS5keWxpYiIsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CisrICAgIGlmICghbW9kdWxlKQor
KyAgICAgICAgbW9kdWxlID0gZGxvcGVuKCJsaWJNb2x0ZW5WSy5keWxpYiIsIFJUTERfTk9XIHwg
UlRMRF9MT0NBTCk7CisrICAgIGlmICghbW9kdWxlKQorKyAgICAgICAgcmV0dXJuIFZLX0VSUk9S
X0lOSVRJQUxJWkFUSU9OX0ZBSUxFRDsKKyAKKy0JdmtHZXRJbnN0YW5jZVByb2NBZGRyID0gKFBG
Tl92a0dldEluc3RhbmNlUHJvY0FkZHIpZGxzeW0obW9kdWxlLCAidmtHZXRJbnN0YW5jZVByb2NB
ZGRyIik7CisrICAgIHZrR2V0SW5zdGFuY2VQcm9jQWRkciA9IChQRk5fdmtHZXRJbnN0YW5jZVBy
b2NBZGRyKWRsc3ltKG1vZHVsZSwgInZrR2V0SW5zdGFuY2VQcm9jQWRkciIpOworICNlbHNlCist
CXZvaWQqIG1vZHVsZSA9IGRsb3BlbigibGlidnVsa2FuLnNvIiwgUlRMRF9OT1cgfCBSVExEX0xP
Q0FMKTsKKy0JaWYgKCFtb2R1bGUpCistCQltb2R1bGUgPSBkbG9wZW4oImxpYnZ1bGthbi5zby4x
IiwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKy0JaWYgKCFtb2R1bGUpCistCQlyZXR1cm4gVktf
RVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEOworKyAgICB2b2lkKiBtb2R1bGUgPSBkbG9wZW4o
ImxpYnZ1bGthbi5zbyIsIFJUTERfTk9XIHwgUlRMRF9MT0NBTCk7CisrICAgIGlmICghbW9kdWxl
KQorKyAgICAgICAgbW9kdWxlID0gZGxvcGVuKCJsaWJ2dWxrYW4uc28uMSIsIFJUTERfTk9XIHwg
UlRMRF9MT0NBTCk7CisrICAgIGlmICghbW9kdWxlKQorKyAgICAgICAgcmV0dXJuIFZLX0VSUk9S
X0lOSVRJQUxJWkFUSU9OX0ZBSUxFRDsKKyAKKy0JdmtHZXRJbnN0YW5jZVByb2NBZGRyID0gKFBG
Tl92a0dldEluc3RhbmNlUHJvY0FkZHIpZGxzeW0obW9kdWxlLCAidmtHZXRJbnN0YW5jZVByb2NB
ZGRyIik7CisrICAgIHZrR2V0SW5zdGFuY2VQcm9jQWRkciA9IChQRk5fdmtHZXRJbnN0YW5jZVBy
b2NBZGRyKWRsc3ltKG1vZHVsZSwgInZrR2V0SW5zdGFuY2VQcm9jQWRkciIpOworICNlbmRpZgor
IAorLQl2b2xrR2VuTG9hZExvYWRlcihOVUxMLCB2a0dldEluc3RhbmNlUHJvY0FkZHJTdHViKTsK
KysgICAgdm9sa0dlbkxvYWRMb2FkZXIoTlVMTCwgdmtHZXRJbnN0YW5jZVByb2NBZGRyU3R1Yik7
CisgCistCXJldHVybiBWS19TVUNDRVNTOworKyAgICByZXR1cm4gVktfU1VDQ0VTUzsKKyB9Cisg
Cisgdm9pZCB2b2xrSW5pdGlhbGl6ZUN1c3RvbShQRk5fdmtHZXRJbnN0YW5jZVByb2NBZGRyIGhh
bmRsZXIpCisgeworLQl2a0dldEluc3RhbmNlUHJvY0FkZHIgPSBoYW5kbGVyOworKyAgICB2a0dl
dEluc3RhbmNlUHJvY0FkZHIgPSBoYW5kbGVyOworIAorLQl2b2xrR2VuTG9hZExvYWRlcihOVUxM
LCB2a0dldEluc3RhbmNlUHJvY0FkZHJTdHViKTsKKysgICAgdm9sa0dlbkxvYWRMb2FkZXIoTlVM
TCwgdmtHZXRJbnN0YW5jZVByb2NBZGRyU3R1Yik7CisgfQorIAorIHVpbnQzMl90IHZvbGtHZXRJ
bnN0YW5jZVZlcnNpb24odm9pZCkKKyB7CisgI2lmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpCist
CXVpbnQzMl90IGFwaVZlcnNpb24gPSAwOworLQlpZiAodmtFbnVtZXJhdGVJbnN0YW5jZVZlcnNp
b24gJiYgdmtFbnVtZXJhdGVJbnN0YW5jZVZlcnNpb24oJmFwaVZlcnNpb24pID09IFZLX1NVQ0NF
U1MpCistCQlyZXR1cm4gYXBpVmVyc2lvbjsKKysgICAgdWludDMyX3QgYXBpVmVyc2lvbiA9IDA7
CisrICAgIGlmICh2a0VudW1lcmF0ZUluc3RhbmNlVmVyc2lvbiAmJiB2a0VudW1lcmF0ZUluc3Rh
bmNlVmVyc2lvbigmYXBpVmVyc2lvbikgPT0gVktfU1VDQ0VTUykKKysgICAgICAgIHJldHVybiBh
cGlWZXJzaW9uOworICNlbmRpZgorIAorLQlpZiAodmtDcmVhdGVJbnN0YW5jZSkKKy0JCXJldHVy
biBWS19BUElfVkVSU0lPTl8xXzA7CisrICAgIGlmICh2a0NyZWF0ZUluc3RhbmNlKQorKyAgICAg
ICAgcmV0dXJuIFZLX0FQSV9WRVJTSU9OXzFfMDsKKyAKKy0JcmV0dXJuIDA7CisrICAgIHJldHVy
biAwOworIH0KKyAKKyB2b2lkIHZvbGtMb2FkSW5zdGFuY2UoVmtJbnN0YW5jZSBpbnN0YW5jZSkK
KyB7CistCWxvYWRlZEluc3RhbmNlID0gaW5zdGFuY2U7CistCXZvbGtHZW5Mb2FkSW5zdGFuY2Uo
aW5zdGFuY2UsIHZrR2V0SW5zdGFuY2VQcm9jQWRkclN0dWIpOworLQl2b2xrR2VuTG9hZERldmlj
ZShpbnN0YW5jZSwgdmtHZXRJbnN0YW5jZVByb2NBZGRyU3R1Yik7CisrICAgIGxvYWRlZEluc3Rh
bmNlID0gaW5zdGFuY2U7CisrICAgIHZvbGtHZW5Mb2FkSW5zdGFuY2UoaW5zdGFuY2UsIHZrR2V0
SW5zdGFuY2VQcm9jQWRkclN0dWIpOworKyAgICB2b2xrR2VuTG9hZERldmljZShpbnN0YW5jZSwg
dmtHZXRJbnN0YW5jZVByb2NBZGRyU3R1Yik7CisgfQorIAorIFZrSW5zdGFuY2Ugdm9sa0dldExv
YWRlZEluc3RhbmNlKCkKKyB7CistCXJldHVybiBsb2FkZWRJbnN0YW5jZTsKKysgICAgcmV0dXJu
IGxvYWRlZEluc3RhbmNlOworIH0KKyAKKyB2b2lkIHZvbGtMb2FkRGV2aWNlKFZrRGV2aWNlIGRl
dmljZSkKKyB7CistCWxvYWRlZERldmljZSA9IGRldmljZTsKKy0Jdm9sa0dlbkxvYWREZXZpY2Uo
ZGV2aWNlLCB2a0dldERldmljZVByb2NBZGRyU3R1Yik7CisrICAgIGxvYWRlZERldmljZSA9IGRl
dmljZTsKKysgICAgdm9sa0dlbkxvYWREZXZpY2UoZGV2aWNlLCB2a0dldERldmljZVByb2NBZGRy
U3R1Yik7CisgfQorIAorIFZrRGV2aWNlIHZvbGtHZXRMb2FkZWREZXZpY2UoKQorIHsKKy0JcmV0
dXJuIGxvYWRlZERldmljZTsKKysgICAgcmV0dXJuIGxvYWRlZERldmljZTsKKyB9CisgCisgdm9p
ZCB2b2xrTG9hZERldmljZVRhYmxlKHN0cnVjdCBWb2xrRGV2aWNlVGFibGUqIHRhYmxlLCBWa0Rl
dmljZSBkZXZpY2UpCisgeworLQl2b2xrR2VuTG9hZERldmljZVRhYmxlKHRhYmxlLCBkZXZpY2Us
IHZrR2V0RGV2aWNlUHJvY0FkZHJTdHViKTsKKysgICAgdm9sa0dlbkxvYWREZXZpY2VUYWJsZSh0
YWJsZSwgZGV2aWNlLCB2a0dldERldmljZVByb2NBZGRyU3R1Yik7CisgfQorIAorIHN0YXRpYyB2
b2lkIHZvbGtHZW5Mb2FkTG9hZGVyKHZvaWQqIGNvbnRleHQsIFBGTl92a1ZvaWRGdW5jdGlvbiAo
KmxvYWQpKHZvaWQqLCBjb25zdCBjaGFyKikpCisgeworLQkvKiBWT0xLX0dFTkVSQVRFX0xPQURf
TE9BREVSICovCisrICAgIC8qIFZPTEtfR0VORVJBVEVfTE9BRF9MT0FERVIgKi8KKyAjaWYgZGVm
aW5lZChWS19WRVJTSU9OXzFfMCkKKy0JdmtDcmVhdGVJbnN0YW5jZSA9IChQRk5fdmtDcmVhdGVJ
bnN0YW5jZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUluc3RhbmNlIik7CistCXZrRW51bWVyYXRl
SW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzID0gKFBGTl92a0VudW1lcmF0ZUluc3RhbmNlRXh0
ZW5zaW9uUHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5z
aW9uUHJvcGVydGllcyIpOworLQl2a0VudW1lcmF0ZUluc3RhbmNlTGF5ZXJQcm9wZXJ0aWVzID0g
KFBGTl92a0VudW1lcmF0ZUluc3RhbmNlTGF5ZXJQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZr
RW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMiKTsKKysgICAgdmtDcmVhdGVJbnN0YW5j
ZSA9IChQRk5fdmtDcmVhdGVJbnN0YW5jZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUluc3RhbmNl
Iik7CisrICAgIHZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzID0gKFBGTl92
a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0Vu
dW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyIpOworKyAgICB2a0VudW1lcmF0ZUlu
c3RhbmNlTGF5ZXJQcm9wZXJ0aWVzID0gKFBGTl92a0VudW1lcmF0ZUluc3RhbmNlTGF5ZXJQcm9w
ZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19WRVJTSU9OXzFfMCkgKi8KKyAjaWYgZGVmaW5lZChW
S19WRVJTSU9OXzFfMSkKKy0JdmtFbnVtZXJhdGVJbnN0YW5jZVZlcnNpb24gPSAoUEZOX3ZrRW51
bWVyYXRlSW5zdGFuY2VWZXJzaW9uKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlSW5zdGFuY2VW
ZXJzaW9uIik7CisrICAgIHZrRW51bWVyYXRlSW5zdGFuY2VWZXJzaW9uID0gKFBGTl92a0VudW1l
cmF0ZUluc3RhbmNlVmVyc2lvbilsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZUluc3RhbmNlVmVy
c2lvbiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSAqLworLQkvKiBWT0xL
X0dFTkVSQVRFX0xPQURfTE9BREVSICovCisrICAgIC8qIFZPTEtfR0VORVJBVEVfTE9BRF9MT0FE
RVIgKi8KKyB9CisgCisgc3RhdGljIHZvaWQgdm9sa0dlbkxvYWRJbnN0YW5jZSh2b2lkKiBjb250
ZXh0LCBQRk5fdmtWb2lkRnVuY3Rpb24gKCpsb2FkKSh2b2lkKiwgY29uc3QgY2hhciopKQorIHsK
Ky0JLyogVk9MS19HRU5FUkFURV9MT0FEX0lOU1RBTkNFICovCisrICAgIC8qIFZPTEtfR0VORVJB
VEVfTE9BRF9JTlNUQU5DRSAqLworICNpZiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8wKQorLQl2a0Ny
ZWF0ZURldmljZSA9IChQRk5fdmtDcmVhdGVEZXZpY2UpbG9hZChjb250ZXh0LCAidmtDcmVhdGVE
ZXZpY2UiKTsKKy0JdmtEZXN0cm95SW5zdGFuY2UgPSAoUEZOX3ZrRGVzdHJveUluc3RhbmNlKWxv
YWQoY29udGV4dCwgInZrRGVzdHJveUluc3RhbmNlIik7CistCXZrRW51bWVyYXRlRGV2aWNlRXh0
ZW5zaW9uUHJvcGVydGllcyA9IChQRk5fdmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0
aWVzKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcyIp
OworLQl2a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyA9IChQRk5fdmtFbnVtZXJhdGVE
ZXZpY2VMYXllclByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVEZXZpY2VMYXll
clByb3BlcnRpZXMiKTsKKy0JdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMgPSAoUEZOX3ZrRW51
bWVyYXRlUGh5c2ljYWxEZXZpY2VzKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlUGh5c2ljYWxE
ZXZpY2VzIik7CistCXZrR2V0RGV2aWNlUHJvY0FkZHIgPSAoUEZOX3ZrR2V0RGV2aWNlUHJvY0Fk
ZHIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VQcm9jQWRkciIpOworLQl2a0dldFBoeXNpY2Fs
RGV2aWNlRmVhdHVyZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlcylsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMiKTsKKy0JdmtHZXRQaHlzaWNhbERl
dmljZUZvcm1hdFByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9w
ZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVz
Iik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtH
ZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllcyIpOworLQl2a0dldFBoeXNpY2Fs
RGV2aWNlTWVtb3J5UHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVBy
b3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRp
ZXMiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2lj
YWxEZXZpY2VQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VQcm9w
ZXJ0aWVzIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMgPSAo
UEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMpbG9hZChjb250ZXh0
LCAidmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllcyIpOworLQl2a0dldFBo
eXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNp
Y2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0
UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFByb3BlcnRpZXMiKTsKKysgICAgdmtDcmVh
dGVEZXZpY2UgPSAoUEZOX3ZrQ3JlYXRlRGV2aWNlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRGV2
aWNlIik7CisrICAgIHZrRGVzdHJveUluc3RhbmNlID0gKFBGTl92a0Rlc3Ryb3lJbnN0YW5jZSls
b2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lJbnN0YW5jZSIpOworKyAgICB2a0VudW1lcmF0ZURldmlj
ZUV4dGVuc2lvblByb3BlcnRpZXMgPSAoUEZOX3ZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJv
cGVydGllcylsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRp
ZXMiKTsKKysgICAgdmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMgPSAoUEZOX3ZrRW51
bWVyYXRlRGV2aWNlTGF5ZXJQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlRGV2
aWNlTGF5ZXJQcm9wZXJ0aWVzIik7CisrICAgIHZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VzID0g
KFBGTl92a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlcylsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0
ZVBoeXNpY2FsRGV2aWNlcyIpOworKyAgICB2a0dldERldmljZVByb2NBZGRyID0gKFBGTl92a0dl
dERldmljZVByb2NBZGRyKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlUHJvY0FkZHIiKTsKKysg
ICAgdmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
RmVhdHVyZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzIik7Cisr
ICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNp
Y2FsRGV2aWNlRm9ybWF0UHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2
aWNlRm9ybWF0UHJvcGVydGllcyIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3Jt
YXRQcm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0
aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRp
ZXMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5
c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VQ
cm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllcylsb2FkKGNvbnRl
eHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllcyIpOworKyAgICB2a0dldFBoeXNpY2Fs
RGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlUXVl
dWVGYW1pbHlQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1
ZUZhbWlseVByb3BlcnRpZXMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdl
Rm9ybWF0UHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdlRm9y
bWF0UHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1h
Z2VGb3JtYXRQcm9wZXJ0aWVzIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfVkVSU0lPTl8xXzAp
ICovCisgI2lmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpCistCXZrRW51bWVyYXRlUGh5c2ljYWxE
ZXZpY2VHcm91cHMgPSAoUEZOX3ZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VHcm91cHMpbG9hZChj
b250ZXh0LCAidmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3VwcyIpOworLQl2a0dldFBoeXNp
Y2FsRGV2aWNlRXh0ZXJuYWxCdWZmZXJQcm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2
aWNlRXh0ZXJuYWxCdWZmZXJQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3BlcnRpZXMiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZUV4
dGVybmFsRmVuY2VQcm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxG
ZW5jZVByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFs
RmVuY2VQcm9wZXJ0aWVzIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbFNlbWFwaG9y
ZVByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbFNlbWFwaG9yZVBy
b3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBo
b3JlUHJvcGVydGllcyIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMyID0gKFBGTl92
a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMyKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VGZWF0dXJlczIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMy
ID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRm9ybWF0UHJvcGVydGllczIpbG9hZChjb250ZXh0
LCAidmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMyIik7CistCXZrR2V0UGh5c2lj
YWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
SW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
SW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJv
cGVydGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMilsb2Fk
KGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllczIiKTsKKy0JdmtH
ZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMyID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlUHJv
cGVydGllczIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMyIik7
CistCXZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMyID0gKFBGTl92a0dl
dFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQsICJ2a0dl
dFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzMiIpOworLQl2a0dldFBoeXNpY2Fs
RGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMiA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZVNwYXJzZUltYWdlRm9ybWF0UHJvcGVydGllczIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlz
aWNhbERldmljZVNwYXJzZUltYWdlRm9ybWF0UHJvcGVydGllczIiKTsKKysgICAgdmtFbnVtZXJh
dGVQaHlzaWNhbERldmljZUdyb3VwcyA9IChQRk5fdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdy
b3Vwcylsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlR3JvdXBzIik7Cisr
ICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3BlcnRpZXMgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAi
dmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsQnVmZmVyUHJvcGVydGllcyIpOworKyAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxGZW5jZVByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2lj
YWxEZXZpY2VFeHRlcm5hbEZlbmNlUHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNp
Y2FsRGV2aWNlRXh0ZXJuYWxGZW5jZVByb3BlcnRpZXMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERl
dmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmlj
ZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2Fs
RGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzIik7CisrICAgIHZrR2V0UGh5c2ljYWxE
ZXZpY2VGZWF0dXJlczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlczIpbG9hZChj
b250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMiIpOworKyAgICB2a0dldFBoeXNp
Y2FsRGV2aWNlRm9ybWF0UHJvcGVydGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGb3Jt
YXRQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRm9ybWF0UHJv
cGVydGllczIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGll
czIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyKWxvYWQo
Y29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyIik7Cisr
ICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMiA9IChQRk5fdmtHZXRQaHlz
aWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMyKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVy
dGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllczIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERl
dmljZVF1ZXVlRmFtaWx5UHJvcGVydGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1
ZUZhbWlseVByb3BlcnRpZXMyKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1
ZUZhbWlseVByb3BlcnRpZXMyIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFn
ZUZvcm1hdFByb3BlcnRpZXMyID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VG
b3JtYXRQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNl
SW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX1ZFUlNJT05f
MV8xKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9hY3F1aXJlX3hsaWJfZGlzcGxheSkKKy0JdmtB
Y3F1aXJlWGxpYkRpc3BsYXlFWFQgPSAoUEZOX3ZrQWNxdWlyZVhsaWJEaXNwbGF5RVhUKWxvYWQo
Y29udGV4dCwgInZrQWNxdWlyZVhsaWJEaXNwbGF5RVhUIik7CistCXZrR2V0UmFuZFJPdXRwdXRE
aXNwbGF5RVhUID0gKFBGTl92a0dldFJhbmRST3V0cHV0RGlzcGxheUVYVClsb2FkKGNvbnRleHQs
ICJ2a0dldFJhbmRST3V0cHV0RGlzcGxheUVYVCIpOworKyAgICB2a0FjcXVpcmVYbGliRGlzcGxh
eUVYVCA9IChQRk5fdmtBY3F1aXJlWGxpYkRpc3BsYXlFWFQpbG9hZChjb250ZXh0LCAidmtBY3F1
aXJlWGxpYkRpc3BsYXlFWFQiKTsKKysgICAgdmtHZXRSYW5kUk91dHB1dERpc3BsYXlFWFQgPSAo
UEZOX3ZrR2V0UmFuZFJPdXRwdXREaXNwbGF5RVhUKWxvYWQoY29udGV4dCwgInZrR2V0UmFuZFJP
dXRwdXREaXNwbGF5RVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2FjcXVpcmVfeGxp
Yl9kaXNwbGF5KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9jYWxpYnJhdGVkX3RpbWVzdGFtcHMp
CistCXZrR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQgPSAoUEZO
X3ZrR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQpbG9hZChjb250
ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUNhbGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCIpOwor
KyAgICB2a0dldFBoeXNpY2FsRGV2aWNlQ2FsaWJyYXRlYWJsZVRpbWVEb21haW5zRVhUID0gKFBG
Tl92a0dldFBoeXNpY2FsRGV2aWNlQ2FsaWJyYXRlYWJsZVRpbWVEb21haW5zRVhUKWxvYWQoY29u
dGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzKSAqLworICNp
ZiBkZWZpbmVkKFZLX0VYVF9kZWJ1Z19yZXBvcnQpCistCXZrQ3JlYXRlRGVidWdSZXBvcnRDYWxs
YmFja0VYVCA9IChQRk5fdmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFja0VYVCIpOworLQl2a0RlYnVnUmVwb3J0TWVz
c2FnZUVYVCA9IChQRk5fdmtEZWJ1Z1JlcG9ydE1lc3NhZ2VFWFQpbG9hZChjb250ZXh0LCAidmtE
ZWJ1Z1JlcG9ydE1lc3NhZ2VFWFQiKTsKKy0JdmtEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFja0VY
VCA9IChQRk5fdmtEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFja0VYVClsb2FkKGNvbnRleHQsICJ2
a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIik7CisrICAgIHZrQ3JlYXRlRGVidWdSZXBv
cnRDYWxsYmFja0VYVCA9IChQRk5fdmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFja0VYVCIpOworKyAgICB2a0RlYnVn
UmVwb3J0TWVzc2FnZUVYVCA9IChQRk5fdmtEZWJ1Z1JlcG9ydE1lc3NhZ2VFWFQpbG9hZChjb250
ZXh0LCAidmtEZWJ1Z1JlcG9ydE1lc3NhZ2VFWFQiKTsKKysgICAgdmtEZXN0cm95RGVidWdSZXBv
cnRDYWxsYmFja0VYVCA9IChQRk5fdmtEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFja0VYVClsb2Fk
KGNvbnRleHQsICJ2a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIik7CisgI2VuZGlmIC8q
IGRlZmluZWQoVktfRVhUX2RlYnVnX3JlcG9ydCkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfZGVi
dWdfdXRpbHMpCistCXZrQ21kQmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQgPSAoUEZOX3ZrQ21kQmVn
aW5EZWJ1Z1V0aWxzTGFiZWxFWFQpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpbkRlYnVnVXRpbHNM
YWJlbEVYVCIpOworLQl2a0NtZEVuZERlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtDbWRFbmRE
ZWJ1Z1V0aWxzTGFiZWxFWFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmREZWJ1Z1V0aWxzTGFiZWxF
WFQiKTsKKy0JdmtDbWRJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQgPSAoUEZOX3ZrQ21kSW5zZXJ0
RGVidWdVdGlsc0xhYmVsRVhUKWxvYWQoY29udGV4dCwgInZrQ21kSW5zZXJ0RGVidWdVdGlsc0xh
YmVsRVhUIik7CistCXZrQ3JlYXRlRGVidWdVdGlsc01lc3NlbmdlckVYVCA9IChQRk5fdmtDcmVh
dGVEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRGVidWdVdGls
c01lc3NlbmdlckVYVCIpOworLQl2a0Rlc3Ryb3lEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUID0gKFBG
Tl92a0Rlc3Ryb3lEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eURlYnVnVXRpbHNNZXNzZW5nZXJFWFQiKTsKKy0JdmtRdWV1ZUJlZ2luRGVidWdVdGlsc0xhYmVs
RVhUID0gKFBGTl92a1F1ZXVlQmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQpbG9hZChjb250ZXh0LCAi
dmtRdWV1ZUJlZ2luRGVidWdVdGlsc0xhYmVsRVhUIik7CistCXZrUXVldWVFbmREZWJ1Z1V0aWxz
TGFiZWxFWFQgPSAoUEZOX3ZrUXVldWVFbmREZWJ1Z1V0aWxzTGFiZWxFWFQpbG9hZChjb250ZXh0
LCAidmtRdWV1ZUVuZERlYnVnVXRpbHNMYWJlbEVYVCIpOworLQl2a1F1ZXVlSW5zZXJ0RGVidWdV
dGlsc0xhYmVsRVhUID0gKFBGTl92a1F1ZXVlSW5zZXJ0RGVidWdVdGlsc0xhYmVsRVhUKWxvYWQo
Y29udGV4dCwgInZrUXVldWVJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQiKTsKKy0JdmtTZXREZWJ1
Z1V0aWxzT2JqZWN0TmFtZUVYVCA9IChQRk5fdmtTZXREZWJ1Z1V0aWxzT2JqZWN0TmFtZUVYVCls
b2FkKGNvbnRleHQsICJ2a1NldERlYnVnVXRpbHNPYmplY3ROYW1lRVhUIik7CistCXZrU2V0RGVi
dWdVdGlsc09iamVjdFRhZ0VYVCA9IChQRk5fdmtTZXREZWJ1Z1V0aWxzT2JqZWN0VGFnRVhUKWxv
YWQoY29udGV4dCwgInZrU2V0RGVidWdVdGlsc09iamVjdFRhZ0VYVCIpOworLQl2a1N1Ym1pdERl
YnVnVXRpbHNNZXNzYWdlRVhUID0gKFBGTl92a1N1Ym1pdERlYnVnVXRpbHNNZXNzYWdlRVhUKWxv
YWQoY29udGV4dCwgInZrU3VibWl0RGVidWdVdGlsc01lc3NhZ2VFWFQiKTsKKysgICAgdmtDbWRC
ZWdpbkRlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtDbWRCZWdpbkRlYnVnVXRpbHNMYWJlbEVY
VClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luRGVidWdVdGlsc0xhYmVsRVhUIik7CisrICAgIHZr
Q21kRW5kRGVidWdVdGlsc0xhYmVsRVhUID0gKFBGTl92a0NtZEVuZERlYnVnVXRpbHNMYWJlbEVY
VClsb2FkKGNvbnRleHQsICJ2a0NtZEVuZERlYnVnVXRpbHNMYWJlbEVYVCIpOworKyAgICB2a0Nt
ZEluc2VydERlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtDbWRJbnNlcnREZWJ1Z1V0aWxzTGFi
ZWxFWFQpbG9hZChjb250ZXh0LCAidmtDbWRJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQiKTsKKysg
ICAgdmtDcmVhdGVEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUID0gKFBGTl92a0NyZWF0ZURlYnVnVXRp
bHNNZXNzZW5nZXJFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZWJ1Z1V0aWxzTWVzc2VuZ2Vy
RVhUIik7CisrICAgIHZrRGVzdHJveURlYnVnVXRpbHNNZXNzZW5nZXJFWFQgPSAoUEZOX3ZrRGVz
dHJveURlYnVnVXRpbHNNZXNzZW5nZXJFWFQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVidWdV
dGlsc01lc3NlbmdlckVYVCIpOworKyAgICB2a1F1ZXVlQmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQg
PSAoUEZOX3ZrUXVldWVCZWdpbkRlYnVnVXRpbHNMYWJlbEVYVClsb2FkKGNvbnRleHQsICJ2a1F1
ZXVlQmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQiKTsKKysgICAgdmtRdWV1ZUVuZERlYnVnVXRpbHNM
YWJlbEVYVCA9IChQRk5fdmtRdWV1ZUVuZERlYnVnVXRpbHNMYWJlbEVYVClsb2FkKGNvbnRleHQs
ICJ2a1F1ZXVlRW5kRGVidWdVdGlsc0xhYmVsRVhUIik7CisrICAgIHZrUXVldWVJbnNlcnREZWJ1
Z1V0aWxzTGFiZWxFWFQgPSAoUEZOX3ZrUXVldWVJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQpbG9h
ZChjb250ZXh0LCAidmtRdWV1ZUluc2VydERlYnVnVXRpbHNMYWJlbEVYVCIpOworKyAgICB2a1Nl
dERlYnVnVXRpbHNPYmplY3ROYW1lRVhUID0gKFBGTl92a1NldERlYnVnVXRpbHNPYmplY3ROYW1l
RVhUKWxvYWQoY29udGV4dCwgInZrU2V0RGVidWdVdGlsc09iamVjdE5hbWVFWFQiKTsKKysgICAg
dmtTZXREZWJ1Z1V0aWxzT2JqZWN0VGFnRVhUID0gKFBGTl92a1NldERlYnVnVXRpbHNPYmplY3RU
YWdFWFQpbG9hZChjb250ZXh0LCAidmtTZXREZWJ1Z1V0aWxzT2JqZWN0VGFnRVhUIik7CisrICAg
IHZrU3VibWl0RGVidWdVdGlsc01lc3NhZ2VFWFQgPSAoUEZOX3ZrU3VibWl0RGVidWdVdGlsc01l
c3NhZ2VFWFQpbG9hZChjb250ZXh0LCAidmtTdWJtaXREZWJ1Z1V0aWxzTWVzc2FnZUVYVCIpOwor
ICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9kZWJ1Z191dGlscykgKi8KKyAjaWYgZGVmaW5lZChW
S19FWFRfZGlyZWN0X21vZGVfZGlzcGxheSkKKy0JdmtSZWxlYXNlRGlzcGxheUVYVCA9IChQRk5f
dmtSZWxlYXNlRGlzcGxheUVYVClsb2FkKGNvbnRleHQsICJ2a1JlbGVhc2VEaXNwbGF5RVhUIik7
CisrICAgIHZrUmVsZWFzZURpc3BsYXlFWFQgPSAoUEZOX3ZrUmVsZWFzZURpc3BsYXlFWFQpbG9h
ZChjb250ZXh0LCAidmtSZWxlYXNlRGlzcGxheUVYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X0VYVF9kaXJlY3RfbW9kZV9kaXNwbGF5KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9kaXNwbGF5
X3N1cmZhY2VfY291bnRlcikKKy0JdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRp
ZXMyRVhUID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllczJFWFQp
bG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXMyRVhU
Iik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzMkVYVCA9IChQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXMyRVhUKWxvYWQoY29udGV4
dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzMkVYVCIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX0VYVF9kaXNwbGF5X3N1cmZhY2VfY291bnRlcikgKi8KKyAjaWYgZGVm
aW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKQorLQl2a0dldFBoeXNpY2FsRGV2aWNl
U3VyZmFjZVByZXNlbnRNb2RlczJFWFQgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNl
UHJlc2VudE1vZGVzMkVYVClsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFj
ZVByZXNlbnRNb2RlczJFWFQiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVz
ZW50TW9kZXMyRVhUID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rl
czJFWFQpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9k
ZXMyRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2Z1bGxfc2NyZWVuX2V4Y2x1c2l2
ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfaGVhZGxlc3Nfc3VyZmFjZSkKKy0JdmtDcmVhdGVI
ZWFkbGVzc1N1cmZhY2VFWFQgPSAoUEZOX3ZrQ3JlYXRlSGVhZGxlc3NTdXJmYWNlRVhUKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlSGVhZGxlc3NTdXJmYWNlRVhUIik7CisrICAgIHZrQ3JlYXRlSGVh
ZGxlc3NTdXJmYWNlRVhUID0gKFBGTl92a0NyZWF0ZUhlYWRsZXNzU3VyZmFjZUVYVClsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZUhlYWRsZXNzU3VyZmFjZUVYVCIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0VYVF9oZWFkbGVzc19zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9tZXRhbF9z
dXJmYWNlKQorLQl2a0NyZWF0ZU1ldGFsU3VyZmFjZUVYVCA9IChQRk5fdmtDcmVhdGVNZXRhbFN1
cmZhY2VFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVNZXRhbFN1cmZhY2VFWFQiKTsKKysgICAg
dmtDcmVhdGVNZXRhbFN1cmZhY2VFWFQgPSAoUEZOX3ZrQ3JlYXRlTWV0YWxTdXJmYWNlRVhUKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlTWV0YWxTdXJmYWNlRVhUIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfRVhUX21ldGFsX3N1cmZhY2UpICovCisgI2lmIGRlZmluZWQoVktfRVhUX3NhbXBsZV9s
b2NhdGlvbnMpCistCXZrR2V0UGh5c2ljYWxEZXZpY2VNdWx0aXNhbXBsZVByb3BlcnRpZXNFWFQg
PSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VNdWx0aXNhbXBsZVByb3BlcnRpZXNFWFQpbG9hZChj
b250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZU11bHRpc2FtcGxlUHJvcGVydGllc0VYVCIpOwor
KyAgICB2a0dldFBoeXNpY2FsRGV2aWNlTXVsdGlzYW1wbGVQcm9wZXJ0aWVzRVhUID0gKFBGTl92
a0dldFBoeXNpY2FsRGV2aWNlTXVsdGlzYW1wbGVQcm9wZXJ0aWVzRVhUKWxvYWQoY29udGV4dCwg
InZrR2V0UGh5c2ljYWxEZXZpY2VNdWx0aXNhbXBsZVByb3BlcnRpZXNFWFQiKTsKKyAjZW5kaWYg
LyogZGVmaW5lZChWS19FWFRfc2FtcGxlX2xvY2F0aW9ucykgKi8KKyAjaWYgZGVmaW5lZChWS19F
WFRfdG9vbGluZ19pbmZvKQorLQl2a0dldFBoeXNpY2FsRGV2aWNlVG9vbFByb3BlcnRpZXNFWFQg
PSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VUb29sUHJvcGVydGllc0VYVClsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlVG9vbFByb3BlcnRpZXNFWFQiKTsKKysgICAgdmtHZXRQaHlz
aWNhbERldmljZVRvb2xQcm9wZXJ0aWVzRVhUID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlVG9v
bFByb3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVRvb2xQcm9w
ZXJ0aWVzRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX3Rvb2xpbmdfaW5mbykgKi8K
KyAjaWYgZGVmaW5lZChWS19GVUNIU0lBX2ltYWdlcGlwZV9zdXJmYWNlKQorLQl2a0NyZWF0ZUlt
YWdlUGlwZVN1cmZhY2VGVUNIU0lBID0gKFBGTl92a0NyZWF0ZUltYWdlUGlwZVN1cmZhY2VGVUNI
U0lBKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW1hZ2VQaXBlU3VyZmFjZUZVQ0hTSUEiKTsKKysg
ICAgdmtDcmVhdGVJbWFnZVBpcGVTdXJmYWNlRlVDSFNJQSA9IChQRk5fdmtDcmVhdGVJbWFnZVBp
cGVTdXJmYWNlRlVDSFNJQSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUltYWdlUGlwZVN1cmZhY2VG
VUNIU0lBIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRlVDSFNJQV9pbWFnZXBpcGVfc3VyZmFj
ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19HR1Bfc3RyZWFtX2Rlc2NyaXB0b3Jfc3VyZmFjZSkKKy0J
dmtDcmVhdGVTdHJlYW1EZXNjcmlwdG9yU3VyZmFjZUdHUCA9IChQRk5fdmtDcmVhdGVTdHJlYW1E
ZXNjcmlwdG9yU3VyZmFjZUdHUClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVN0cmVhbURlc2NyaXB0
b3JTdXJmYWNlR0dQIik7CisrICAgIHZrQ3JlYXRlU3RyZWFtRGVzY3JpcHRvclN1cmZhY2VHR1Ag
PSAoUEZOX3ZrQ3JlYXRlU3RyZWFtRGVzY3JpcHRvclN1cmZhY2VHR1ApbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVTdHJlYW1EZXNjcmlwdG9yU3VyZmFjZUdHUCIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0dHUF9zdHJlYW1fZGVzY3JpcHRvcl9zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZLX0tI
Ul9hbmRyb2lkX3N1cmZhY2UpCistCXZrQ3JlYXRlQW5kcm9pZFN1cmZhY2VLSFIgPSAoUEZOX3Zr
Q3JlYXRlQW5kcm9pZFN1cmZhY2VLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVBbmRyb2lkU3Vy
ZmFjZUtIUiIpOworKyAgICB2a0NyZWF0ZUFuZHJvaWRTdXJmYWNlS0hSID0gKFBGTl92a0NyZWF0
ZUFuZHJvaWRTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQW5kcm9pZFN1cmZhY2VL
SFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfYW5kcm9pZF9zdXJmYWNlKSAqLworICNp
ZiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXBfY3JlYXRpb24pCistCXZrRW51bWVyYXRlUGh5
c2ljYWxEZXZpY2VHcm91cHNLSFIgPSAoUEZOX3ZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VHcm91
cHNLSFIpbG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3Vwc0tIUiIp
OworKyAgICB2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlR3JvdXBzS0hSID0gKFBGTl92a0VudW1l
cmF0ZVBoeXNpY2FsRGV2aWNlR3JvdXBzS0hSKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlUGh5
c2ljYWxEZXZpY2VHcm91cHNLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZGV2aWNl
X2dyb3VwX2NyZWF0aW9uKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9kaXNwbGF5KQorLQl2a0Ny
ZWF0ZURpc3BsYXlNb2RlS0hSID0gKFBGTl92a0NyZWF0ZURpc3BsYXlNb2RlS0hSKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlRGlzcGxheU1vZGVLSFIiKTsKKy0JdmtDcmVhdGVEaXNwbGF5UGxhbmVT
dXJmYWNlS0hSID0gKFBGTl92a0NyZWF0ZURpc3BsYXlQbGFuZVN1cmZhY2VLSFIpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVEaXNwbGF5UGxhbmVTdXJmYWNlS0hSIik7CistCXZrR2V0RGlzcGxheU1v
ZGVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldERpc3BsYXlNb2RlUHJvcGVydGllc0tIUilsb2Fk
KGNvbnRleHQsICJ2a0dldERpc3BsYXlNb2RlUHJvcGVydGllc0tIUiIpOworLQl2a0dldERpc3Bs
YXlQbGFuZUNhcGFiaWxpdGllc0tIUiA9IChQRk5fdmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRp
ZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRpZXNLSFIiKTsK
Ky0JdmtHZXREaXNwbGF5UGxhbmVTdXBwb3J0ZWREaXNwbGF5c0tIUiA9IChQRk5fdmtHZXREaXNw
bGF5UGxhbmVTdXBwb3J0ZWREaXNwbGF5c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERpc3BsYXlQ
bGFuZVN1cHBvcnRlZERpc3BsYXlzS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5
UGxhbmVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5l
UHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBs
YW5lUHJvcGVydGllc0tIUiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3BlcnRp
ZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UHJvcGVydGllc0tIUilsb2Fk
KGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3BlcnRpZXNLSFIiKTsKKysg
ICAgdmtDcmVhdGVEaXNwbGF5TW9kZUtIUiA9IChQRk5fdmtDcmVhdGVEaXNwbGF5TW9kZUtIUils
b2FkKGNvbnRleHQsICJ2a0NyZWF0ZURpc3BsYXlNb2RlS0hSIik7CisrICAgIHZrQ3JlYXRlRGlz
cGxheVBsYW5lU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVEaXNwbGF5UGxhbmVTdXJmYWNlS0hS
KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRGlzcGxheVBsYW5lU3VyZmFjZUtIUiIpOworKyAgICB2
a0dldERpc3BsYXlNb2RlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXREaXNwbGF5TW9kZVByb3Bl
cnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXREaXNwbGF5TW9kZVByb3BlcnRpZXNLSFIiKTsK
KysgICAgdmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRpZXNLSFIgPSAoUEZOX3ZrR2V0RGlzcGxh
eVBsYW5lQ2FwYWJpbGl0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGlzcGxheVBsYW5lQ2Fw
YWJpbGl0aWVzS0hSIik7CisrICAgIHZrR2V0RGlzcGxheVBsYW5lU3VwcG9ydGVkRGlzcGxheXNL
SFIgPSAoUEZOX3ZrR2V0RGlzcGxheVBsYW5lU3VwcG9ydGVkRGlzcGxheXNLSFIpbG9hZChjb250
ZXh0LCAidmtHZXREaXNwbGF5UGxhbmVTdXBwb3J0ZWREaXNwbGF5c0tIUiIpOworKyAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5lUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQaHlz
aWNhbERldmljZURpc3BsYXlQbGFuZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQ
aHlzaWNhbERldmljZURpc3BsYXlQbGFuZVByb3BlcnRpZXNLSFIiKTsKKysgICAgdmtHZXRQaHlz
aWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
RGlzcGxheVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZURp
c3BsYXlQcm9wZXJ0aWVzS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2Rpc3BsYXkp
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX2ZlbmNlX2NhcGFiaWxpdGllcykKKy0J
dmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsRmVuY2VQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dl
dFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxGZW5jZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsRmVuY2VQcm9wZXJ0aWVzS0hSIik7CisrICAgIHZr
R2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEZlbmNlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQ
aHlzaWNhbERldmljZUV4dGVybmFsRmVuY2VQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEZlbmNlUHJvcGVydGllc0tIUiIpOworICNlbmRpZiAv
KiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9mZW5jZV9jYXBhYmlsaXRpZXMpICovCisgI2lmIGRl
ZmluZWQoVktfS0hSX2V4dGVybmFsX21lbW9yeV9jYXBhYmlsaXRpZXMpCistCXZrR2V0UGh5c2lj
YWxEZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3BlcnRpZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxE
ZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlz
aWNhbERldmljZUV4dGVybmFsQnVmZmVyUHJvcGVydGllc0tIUiIpOworKyAgICB2a0dldFBoeXNp
Y2FsRGV2aWNlRXh0ZXJuYWxCdWZmZXJQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2Fs
RGV2aWNlRXh0ZXJuYWxCdWZmZXJQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5
c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3BlcnRpZXNLSFIiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5X2NhcGFiaWxpdGllcykgKi8KKyAjaWYgZGVmaW5l
ZChWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX2NhcGFiaWxpdGllcykKKy0JdmtHZXRQaHlzaWNh
bERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNh
bERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dl
dFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSIik7CisrICAgIHZr
R2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbFNlbWFwaG9yZVByb3BlcnRpZXNLSFIgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbFNlbWFwaG9yZVByb3BlcnRpZXNLSFIpbG9hZChjb250
ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfY2FwYWJpbGl0
aWVzKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9nZXRfZGlzcGxheV9wcm9wZXJ0aWVzMikKKy0J
dmtHZXREaXNwbGF5TW9kZVByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldERpc3BsYXlNb2RlUHJv
cGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXREaXNwbGF5TW9kZVByb3BlcnRpZXMyS0hS
Iik7CistCXZrR2V0RGlzcGxheVBsYW5lQ2FwYWJpbGl0aWVzMktIUiA9IChQRk5fdmtHZXREaXNw
bGF5UGxhbmVDYXBhYmlsaXRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGlzcGxheVBsYW5l
Q2FwYWJpbGl0aWVzMktIUiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5lUHJv
cGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UGxhbmVQcm9wZXJ0
aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5lUHJv
cGVydGllczJLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzMktI
UiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzMktIUilsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3BlcnRpZXMyS0hSIik7CisrICAg
IHZrR2V0RGlzcGxheU1vZGVQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtHZXREaXNwbGF5TW9kZVBy
b3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGlzcGxheU1vZGVQcm9wZXJ0aWVzMktI
UiIpOworKyAgICB2a0dldERpc3BsYXlQbGFuZUNhcGFiaWxpdGllczJLSFIgPSAoUEZOX3ZrR2V0
RGlzcGxheVBsYW5lQ2FwYWJpbGl0aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldERpc3BsYXlQ
bGFuZUNhcGFiaWxpdGllczJLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQ
bGFuZVByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5l
UHJvcGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQ
bGFuZVByb3BlcnRpZXMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UHJv
cGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UHJvcGVydGllczJL
SFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzMktI
UiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9nZXRfZGlzcGxheV9wcm9wZXJ0aWVzMikg
Ki8KKyAjaWYgZGVmaW5lZChWS19LSFJfZ2V0X3BoeXNpY2FsX2RldmljZV9wcm9wZXJ0aWVzMikK
Ky0JdmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZUZlYXR1cmVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVy
ZXMyS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzMktIUiA9IChQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzMktIUiIpOworLQl2a0dldFBoeXNp
Y2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZUltYWdlRm9ybWF0UHJvcGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNh
bERldmljZUltYWdlRm9ybWF0UHJvcGVydGllczJLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmlj
ZU1lbW9yeVByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJv
cGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3Bl
cnRpZXMyS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMktIUiA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5
c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMktIUiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVG
YW1pbHlQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5
UHJvcGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFt
aWx5UHJvcGVydGllczJLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdlRm9y
bWF0UHJvcGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZv
cm1hdFByb3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTcGFy
c2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VG
ZWF0dXJlczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlczJLSFIpbG9hZChj
b250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMktIUiIpOworKyAgICB2a0dldFBo
eXNpY2FsRGV2aWNlRm9ybWF0UHJvcGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZp
Y2VGb3JtYXRQcm9wZXJ0aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
Rm9ybWF0UHJvcGVydGllczJLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9y
bWF0UHJvcGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFBy
b3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1h
dFByb3BlcnRpZXMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0
aWVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMyS0hSKWxv
YWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMktIUiIpOwor
KyAgICB2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2lj
YWxEZXZpY2VQcm9wZXJ0aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
UHJvcGVydGllczJLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJv
cGVydGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRp
ZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3Bl
cnRpZXMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFBy
b3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQ
cm9wZXJ0aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1h
Z2VGb3JtYXRQcm9wZXJ0aWVzMktIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9nZXRf
cGh5c2ljYWxfZGV2aWNlX3Byb3BlcnRpZXMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9nZXRf
c3VyZmFjZV9jYXBhYmlsaXRpZXMyKQorLQl2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFi
aWxpdGllczJLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVz
MktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGll
czJLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzMktIUiA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dl
dFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxE
ZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVN1
cmZhY2VDYXBhYmlsaXRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VT
dXJmYWNlQ2FwYWJpbGl0aWVzMktIUiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFj
ZUZvcm1hdHMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHMyS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0czJLSFIiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZ2V0X3N1cmZhY2VfY2FwYWJpbGl0aWVzMikgKi8K
KyAjaWYgZGVmaW5lZChWS19LSFJfcGVyZm9ybWFuY2VfcXVlcnkpCistCXZrRW51bWVyYXRlUGh5
c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1hbmNlUXVlcnlDb3VudGVyc0tIUiA9IChQRk5f
dmtFbnVtZXJhdGVQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UGVyZm9ybWFuY2VRdWVyeUNvdW50
ZXJzS0hSKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWls
eVBlcmZvcm1hbmNlUXVlcnlDb3VudGVyc0tIUiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlUXVl
dWVGYW1pbHlQZXJmb3JtYW5jZVF1ZXJ5UGFzc2VzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2
aWNlUXVldWVGYW1pbHlQZXJmb3JtYW5jZVF1ZXJ5UGFzc2VzS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1hbmNlUXVlcnlQYXNzZXNLSFIiKTsK
KysgICAgdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UGVyZm9ybWFuY2VRdWVy
eUNvdW50ZXJzS0hSID0gKFBGTl92a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQ
ZXJmb3JtYW5jZVF1ZXJ5Q291bnRlcnNLSFIpbG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVQaHlz
aWNhbERldmljZVF1ZXVlRmFtaWx5UGVyZm9ybWFuY2VRdWVyeUNvdW50ZXJzS0hSIik7CisrICAg
IHZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1hbmNlUXVlcnlQYXNzZXNLSFIg
PSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1hbmNlUXVlcnlQYXNz
ZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UGVyZm9y
bWFuY2VRdWVyeVBhc3Nlc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9wZXJmb3Jt
YW5jZV9xdWVyeSkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfc3VyZmFjZSkKKy0JdmtEZXN0cm95
U3VyZmFjZUtIUiA9IChQRk5fdmtEZXN0cm95U3VyZmFjZUtIUilsb2FkKGNvbnRleHQsICJ2a0Rl
c3Ryb3lTdXJmYWNlS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0
aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUils
b2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUiIp
OworLQl2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIgPSAoUEZOX3ZrR2V0UGh5
c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2Fs
RGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQ
cmVzZW50TW9kZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1v
ZGVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1v
ZGVzS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlU3VwcG9ydEtIUiA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSKWxvYWQoY29udGV4dCwgInZrR2V0
UGh5c2ljYWxEZXZpY2VTdXJmYWNlU3VwcG9ydEtIUiIpOworKyAgICB2a0Rlc3Ryb3lTdXJmYWNl
S0hSID0gKFBGTl92a0Rlc3Ryb3lTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVN1
cmZhY2VLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNL
SFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIik7Cisr
ICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUiA9IChQRk5fdmtHZXRQaHlz
aWNhbERldmljZVN1cmZhY2VGb3JtYXRzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VTdXJmYWNlRm9ybWF0c0tIUiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFj
ZVByZXNlbnRNb2Rlc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50
TW9kZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50
TW9kZXNLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSID0g
KFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfS0hSX3N1cmZhY2UpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3dheWxhbmRfc3VyZmFj
ZSkKKy0JdmtDcmVhdGVXYXlsYW5kU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVXYXlsYW5kU3Vy
ZmFjZUtIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVdheWxhbmRTdXJmYWNlS0hSIik7CistCXZr
R2V0UGh5c2ljYWxEZXZpY2VXYXlsYW5kUHJlc2VudGF0aW9uU3VwcG9ydEtIUiA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZVdheWxhbmRQcmVzZW50YXRpb25TdXBwb3J0S0hSKWxvYWQoY29udGV4
dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VXYXlsYW5kUHJlc2VudGF0aW9uU3VwcG9ydEtIUiIpOwor
KyAgICB2a0NyZWF0ZVdheWxhbmRTdXJmYWNlS0hSID0gKFBGTl92a0NyZWF0ZVdheWxhbmRTdXJm
YWNlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlV2F5bGFuZFN1cmZhY2VLSFIiKTsKKysgICAg
dmtHZXRQaHlzaWNhbERldmljZVdheWxhbmRQcmVzZW50YXRpb25TdXBwb3J0S0hSID0gKFBGTl92
a0dldFBoeXNpY2FsRGV2aWNlV2F5bGFuZFByZXNlbnRhdGlvblN1cHBvcnRLSFIpbG9hZChjb250
ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVdheWxhbmRQcmVzZW50YXRpb25TdXBwb3J0S0hSIik7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3dheWxhbmRfc3VyZmFjZSkgKi8KKyAjaWYgZGVm
aW5lZChWS19LSFJfd2luMzJfc3VyZmFjZSkKKy0JdmtDcmVhdGVXaW4zMlN1cmZhY2VLSFIgPSAo
UEZOX3ZrQ3JlYXRlV2luMzJTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlV2luMzJT
dXJmYWNlS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VXaW4zMlByZXNlbnRhdGlvblN1cHBv
cnRLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VXaW4zMlByZXNlbnRhdGlvblN1cHBvcnRL
SFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVdpbjMyUHJlc2VudGF0aW9uU3Vw
cG9ydEtIUiIpOworKyAgICB2a0NyZWF0ZVdpbjMyU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVX
aW4zMlN1cmZhY2VLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVXaW4zMlN1cmZhY2VLSFIiKTsK
KysgICAgdmtHZXRQaHlzaWNhbERldmljZVdpbjMyUHJlc2VudGF0aW9uU3VwcG9ydEtIUiA9IChQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZVdpbjMyUHJlc2VudGF0aW9uU3VwcG9ydEtIUilsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlV2luMzJQcmVzZW50YXRpb25TdXBwb3J0S0hSIik7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3dpbjMyX3N1cmZhY2UpICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX3hjYl9zdXJmYWNlKQorLQl2a0NyZWF0ZVhjYlN1cmZhY2VLSFIgPSAoUEZOX3Zr
Q3JlYXRlWGNiU3VyZmFjZUtIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVhjYlN1cmZhY2VLSFIi
KTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVhjYlByZXNlbnRhdGlvblN1cHBvcnRLSFIgPSAoUEZO
X3ZrR2V0UGh5c2ljYWxEZXZpY2VYY2JQcmVzZW50YXRpb25TdXBwb3J0S0hSKWxvYWQoY29udGV4
dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VYY2JQcmVzZW50YXRpb25TdXBwb3J0S0hSIik7CisrICAg
IHZrQ3JlYXRlWGNiU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVYY2JTdXJmYWNlS0hSKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlWGNiU3VyZmFjZUtIUiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2
aWNlWGNiUHJlc2VudGF0aW9uU3VwcG9ydEtIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVhj
YlByZXNlbnRhdGlvblN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmlj
ZVhjYlByZXNlbnRhdGlvblN1cHBvcnRLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJf
eGNiX3N1cmZhY2UpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3hsaWJfc3VyZmFjZSkKKy0JdmtD
cmVhdGVYbGliU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVYbGliU3VyZmFjZUtIUilsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVhsaWJTdXJmYWNlS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VY
bGliUHJlc2VudGF0aW9uU3VwcG9ydEtIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVhsaWJQ
cmVzZW50YXRpb25TdXBwb3J0S0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VY
bGliUHJlc2VudGF0aW9uU3VwcG9ydEtIUiIpOworKyAgICB2a0NyZWF0ZVhsaWJTdXJmYWNlS0hS
ID0gKFBGTl92a0NyZWF0ZVhsaWJTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlWGxp
YlN1cmZhY2VLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVhsaWJQcmVzZW50YXRpb25T
dXBwb3J0S0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlWGxpYlByZXNlbnRhdGlvblN1cHBv
cnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVhsaWJQcmVzZW50YXRpb25T
dXBwb3J0S0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3hsaWJfc3VyZmFjZSkgKi8K
KyAjaWYgZGVmaW5lZChWS19NVktfaW9zX3N1cmZhY2UpCistCXZrQ3JlYXRlSU9TU3VyZmFjZU1W
SyA9IChQRk5fdmtDcmVhdGVJT1NTdXJmYWNlTVZLKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSU9T
U3VyZmFjZU1WSyIpOworKyAgICB2a0NyZWF0ZUlPU1N1cmZhY2VNVksgPSAoUEZOX3ZrQ3JlYXRl
SU9TU3VyZmFjZU1WSylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUlPU1N1cmZhY2VNVksiKTsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19NVktfaW9zX3N1cmZhY2UpICovCisgI2lmIGRlZmluZWQoVktf
TVZLX21hY29zX3N1cmZhY2UpCistCXZrQ3JlYXRlTWFjT1NTdXJmYWNlTVZLID0gKFBGTl92a0Ny
ZWF0ZU1hY09TU3VyZmFjZU1WSylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZU1hY09TU3VyZmFjZU1W
SyIpOworKyAgICB2a0NyZWF0ZU1hY09TU3VyZmFjZU1WSyA9IChQRk5fdmtDcmVhdGVNYWNPU1N1
cmZhY2VNVkspbG9hZChjb250ZXh0LCAidmtDcmVhdGVNYWNPU1N1cmZhY2VNVksiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19NVktfbWFjb3Nfc3VyZmFjZSkgKi8KKyAjaWYgZGVmaW5lZChWS19O
Tl92aV9zdXJmYWNlKQorLQl2a0NyZWF0ZVZpU3VyZmFjZU5OID0gKFBGTl92a0NyZWF0ZVZpU3Vy
ZmFjZU5OKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlVmlTdXJmYWNlTk4iKTsKKysgICAgdmtDcmVh
dGVWaVN1cmZhY2VOTiA9IChQRk5fdmtDcmVhdGVWaVN1cmZhY2VOTilsb2FkKGNvbnRleHQsICJ2
a0NyZWF0ZVZpU3VyZmFjZU5OIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTk5fdmlfc3VyZmFj
ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19OVlhfZGV2aWNlX2dlbmVyYXRlZF9jb21tYW5kcykKKy0J
dmtHZXRQaHlzaWNhbERldmljZUdlbmVyYXRlZENvbW1hbmRzUHJvcGVydGllc05WWCA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZUdlbmVyYXRlZENvbW1hbmRzUHJvcGVydGllc05WWClsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlR2VuZXJhdGVkQ29tbWFuZHNQcm9wZXJ0aWVzTlZY
Iik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VHZW5lcmF0ZWRDb21tYW5kc1Byb3BlcnRpZXNO
VlggPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VHZW5lcmF0ZWRDb21tYW5kc1Byb3BlcnRpZXNO
VlgpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUdlbmVyYXRlZENvbW1hbmRzUHJv
cGVydGllc05WWCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WWF9kZXZpY2VfZ2VuZXJhdGVk
X2NvbW1hbmRzKSAqLworICNpZiBkZWZpbmVkKFZLX05WX2Nvb3BlcmF0aXZlX21hdHJpeCkKKy0J
dmtHZXRQaHlzaWNhbERldmljZUNvb3BlcmF0aXZlTWF0cml4UHJvcGVydGllc05WID0gKFBGTl92
a0dldFBoeXNpY2FsRGV2aWNlQ29vcGVyYXRpdmVNYXRyaXhQcm9wZXJ0aWVzTlYpbG9hZChjb250
ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUNvb3BlcmF0aXZlTWF0cml4UHJvcGVydGllc05WIik7
CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VDb29wZXJhdGl2ZU1hdHJpeFByb3BlcnRpZXNOViA9
IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUNvb3BlcmF0aXZlTWF0cml4UHJvcGVydGllc05WKWxv
YWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VDb29wZXJhdGl2ZU1hdHJpeFByb3BlcnRp
ZXNOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX2Nvb3BlcmF0aXZlX21hdHJpeCkgKi8K
KyAjaWYgZGVmaW5lZChWS19OVl9jb3ZlcmFnZV9yZWR1Y3Rpb25fbW9kZSkKKy0JdmtHZXRQaHlz
aWNhbERldmljZVN1cHBvcnRlZEZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzQ29tYmluYXRpb25zTlYg
PSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXBwb3J0ZWRGcmFtZWJ1ZmZlck1peGVkU2FtcGxl
c0NvbWJpbmF0aW9uc05WKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXBwb3J0
ZWRGcmFtZWJ1ZmZlck1peGVkU2FtcGxlc0NvbWJpbmF0aW9uc05WIik7CisrICAgIHZrR2V0UGh5
c2ljYWxEZXZpY2VTdXBwb3J0ZWRGcmFtZWJ1ZmZlck1peGVkU2FtcGxlc0NvbWJpbmF0aW9uc05W
ID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VwcG9ydGVkRnJhbWVidWZmZXJNaXhlZFNhbXBs
ZXNDb21iaW5hdGlvbnNOVilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3VwcG9y
dGVkRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNDb21iaW5hdGlvbnNOViIpOworICNlbmRpZiAvKiBk
ZWZpbmVkKFZLX05WX2NvdmVyYWdlX3JlZHVjdGlvbl9tb2RlKSAqLworICNpZiBkZWZpbmVkKFZL
X05WX2V4dGVybmFsX21lbW9yeV9jYXBhYmlsaXRpZXMpCistCXZrR2V0UGh5c2ljYWxEZXZpY2VF
eHRlcm5hbEltYWdlRm9ybWF0UHJvcGVydGllc05WID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
RXh0ZXJuYWxJbWFnZUZvcm1hdFByb3BlcnRpZXNOVilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNp
Y2FsRGV2aWNlRXh0ZXJuYWxJbWFnZUZvcm1hdFByb3BlcnRpZXNOViIpOworKyAgICB2a0dldFBo
eXNpY2FsRGV2aWNlRXh0ZXJuYWxJbWFnZUZvcm1hdFByb3BlcnRpZXNOViA9IChQRk5fdmtHZXRQ
aHlzaWNhbERldmljZUV4dGVybmFsSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzTlYpbG9hZChjb250ZXh0
LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzTlYiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9leHRlcm5hbF9tZW1vcnlfY2FwYWJpbGl0aWVzKSAq
LworICNpZiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVkKFZLX0tIUl9z
dXJmYWNlKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19WRVJT
SU9OXzFfMSkpCistCXZrR2V0UGh5c2ljYWxEZXZpY2VQcmVzZW50UmVjdGFuZ2xlc0tIUiA9IChQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZVByZXNlbnRSZWN0YW5nbGVzS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0UGh5c2ljYWxEZXZpY2VQcmVzZW50UmVjdGFuZ2xlc0tIUiIpOworKyAgICB2a0dldFBo
eXNpY2FsRGV2aWNlUHJlc2VudFJlY3RhbmdsZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZp
Y2VQcmVzZW50UmVjdGFuZ2xlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
UHJlc2VudFJlY3RhbmdsZXNLSFIiKTsKKyAjZW5kaWYgLyogKGRlZmluZWQoVktfS0hSX2Rldmlj
ZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJfc3VyZmFjZSkpIHx8IChkZWZpbmVkKFZLX0tIUl9z
d2FwY2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLworLQkvKiBWT0xLX0dFTkVS
QVRFX0xPQURfSU5TVEFOQ0UgKi8KKysgICAgLyogVk9MS19HRU5FUkFURV9MT0FEX0lOU1RBTkNF
ICovCisgfQorIAorIHN0YXRpYyB2b2lkIHZvbGtHZW5Mb2FkRGV2aWNlKHZvaWQqIGNvbnRleHQs
IFBGTl92a1ZvaWRGdW5jdGlvbiAoKmxvYWQpKHZvaWQqLCBjb25zdCBjaGFyKikpCisgeworLQkv
KiBWT0xLX0dFTkVSQVRFX0xPQURfREVWSUNFICovCisrICAgIC8qIFZPTEtfR0VORVJBVEVfTE9B
RF9ERVZJQ0UgKi8KKyAjaWYgZGVmaW5lZChWS19WRVJTSU9OXzFfMCkKKy0JdmtBbGxvY2F0ZUNv
bW1hbmRCdWZmZXJzID0gKFBGTl92a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMpbG9hZChjb250ZXh0
LCAidmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzIik7CistCXZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0
cyA9IChQRk5fdmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzKWxvYWQoY29udGV4dCwgInZrQWxsb2Nh
dGVEZXNjcmlwdG9yU2V0cyIpOworLQl2a0FsbG9jYXRlTWVtb3J5ID0gKFBGTl92a0FsbG9jYXRl
TWVtb3J5KWxvYWQoY29udGV4dCwgInZrQWxsb2NhdGVNZW1vcnkiKTsKKy0JdmtCZWdpbkNvbW1h
bmRCdWZmZXIgPSAoUEZOX3ZrQmVnaW5Db21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZrQmVn
aW5Db21tYW5kQnVmZmVyIik7CistCXZrQmluZEJ1ZmZlck1lbW9yeSA9IChQRk5fdmtCaW5kQnVm
ZmVyTWVtb3J5KWxvYWQoY29udGV4dCwgInZrQmluZEJ1ZmZlck1lbW9yeSIpOworLQl2a0JpbmRJ
bWFnZU1lbW9yeSA9IChQRk5fdmtCaW5kSW1hZ2VNZW1vcnkpbG9hZChjb250ZXh0LCAidmtCaW5k
SW1hZ2VNZW1vcnkiKTsKKy0JdmtDbWRCZWdpblF1ZXJ5ID0gKFBGTl92a0NtZEJlZ2luUXVlcnkp
bG9hZChjb250ZXh0LCAidmtDbWRCZWdpblF1ZXJ5Iik7CistCXZrQ21kQmVnaW5SZW5kZXJQYXNz
ID0gKFBGTl92a0NtZEJlZ2luUmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUmVu
ZGVyUGFzcyIpOworLQl2a0NtZEJpbmREZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtDbWRCaW5kRGVz
Y3JpcHRvclNldHMpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kRGVzY3JpcHRvclNldHMiKTsKKy0J
dmtDbWRCaW5kSW5kZXhCdWZmZXIgPSAoUEZOX3ZrQ21kQmluZEluZGV4QnVmZmVyKWxvYWQoY29u
dGV4dCwgInZrQ21kQmluZEluZGV4QnVmZmVyIik7CistCXZrQ21kQmluZFBpcGVsaW5lID0gKFBG
Tl92a0NtZEJpbmRQaXBlbGluZSlsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRQaXBlbGluZSIpOwor
LQl2a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzID0gKFBGTl92a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzKWxv
YWQoY29udGV4dCwgInZrQ21kQmluZFZlcnRleEJ1ZmZlcnMiKTsKKy0JdmtDbWRCbGl0SW1hZ2Ug
PSAoUEZOX3ZrQ21kQmxpdEltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQmxpdEltYWdlIik7Cist
CXZrQ21kQ2xlYXJBdHRhY2htZW50cyA9IChQRk5fdmtDbWRDbGVhckF0dGFjaG1lbnRzKWxvYWQo
Y29udGV4dCwgInZrQ21kQ2xlYXJBdHRhY2htZW50cyIpOworLQl2a0NtZENsZWFyQ29sb3JJbWFn
ZSA9IChQRk5fdmtDbWRDbGVhckNvbG9ySW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDbGVhckNv
bG9ySW1hZ2UiKTsKKy0JdmtDbWRDbGVhckRlcHRoU3RlbmNpbEltYWdlID0gKFBGTl92a0NtZENs
ZWFyRGVwdGhTdGVuY2lsSW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDbGVhckRlcHRoU3RlbmNp
bEltYWdlIik7CistCXZrQ21kQ29weUJ1ZmZlciA9IChQRk5fdmtDbWRDb3B5QnVmZmVyKWxvYWQo
Y29udGV4dCwgInZrQ21kQ29weUJ1ZmZlciIpOworLQl2a0NtZENvcHlCdWZmZXJUb0ltYWdlID0g
KFBGTl92a0NtZENvcHlCdWZmZXJUb0ltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUJ1ZmZl
clRvSW1hZ2UiKTsKKy0JdmtDbWRDb3B5SW1hZ2UgPSAoUEZOX3ZrQ21kQ29weUltYWdlKWxvYWQo
Y29udGV4dCwgInZrQ21kQ29weUltYWdlIik7CistCXZrQ21kQ29weUltYWdlVG9CdWZmZXIgPSAo
UEZOX3ZrQ21kQ29weUltYWdlVG9CdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5SW1hZ2VU
b0J1ZmZlciIpOworLQl2a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzID0gKFBGTl92a0NtZENvcHlR
dWVyeVBvb2xSZXN1bHRzKWxvYWQoY29udGV4dCwgInZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMi
KTsKKy0JdmtDbWREaXNwYXRjaCA9IChQRk5fdmtDbWREaXNwYXRjaClsb2FkKGNvbnRleHQsICJ2
a0NtZERpc3BhdGNoIik7CistCXZrQ21kRGlzcGF0Y2hJbmRpcmVjdCA9IChQRk5fdmtDbWREaXNw
YXRjaEluZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hJbmRpcmVjdCIpOworLQl2
a0NtZERyYXcgPSAoUEZOX3ZrQ21kRHJhdylsb2FkKGNvbnRleHQsICJ2a0NtZERyYXciKTsKKy0J
dmtDbWREcmF3SW5kZXhlZCA9IChQRk5fdmtDbWREcmF3SW5kZXhlZClsb2FkKGNvbnRleHQsICJ2
a0NtZERyYXdJbmRleGVkIik7CistCXZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdCA9IChQRk5fdmtD
bWREcmF3SW5kZXhlZEluZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWRJbmRp
cmVjdCIpOworLQl2a0NtZERyYXdJbmRpcmVjdCA9IChQRk5fdmtDbWREcmF3SW5kaXJlY3QpbG9h
ZChjb250ZXh0LCAidmtDbWREcmF3SW5kaXJlY3QiKTsKKy0JdmtDbWRFbmRRdWVyeSA9IChQRk5f
dmtDbWRFbmRRdWVyeSlsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFF1ZXJ5Iik7CistCXZrQ21kRW5k
UmVuZGVyUGFzcyA9IChQRk5fdmtDbWRFbmRSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ21k
RW5kUmVuZGVyUGFzcyIpOworLQl2a0NtZEV4ZWN1dGVDb21tYW5kcyA9IChQRk5fdmtDbWRFeGVj
dXRlQ29tbWFuZHMpbG9hZChjb250ZXh0LCAidmtDbWRFeGVjdXRlQ29tbWFuZHMiKTsKKy0JdmtD
bWRGaWxsQnVmZmVyID0gKFBGTl92a0NtZEZpbGxCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRG
aWxsQnVmZmVyIik7CistCXZrQ21kTmV4dFN1YnBhc3MgPSAoUEZOX3ZrQ21kTmV4dFN1YnBhc3Mp
bG9hZChjb250ZXh0LCAidmtDbWROZXh0U3VicGFzcyIpOworLQl2a0NtZFBpcGVsaW5lQmFycmll
ciA9IChQRk5fdmtDbWRQaXBlbGluZUJhcnJpZXIpbG9hZChjb250ZXh0LCAidmtDbWRQaXBlbGlu
ZUJhcnJpZXIiKTsKKy0JdmtDbWRQdXNoQ29uc3RhbnRzID0gKFBGTl92a0NtZFB1c2hDb25zdGFu
dHMpbG9hZChjb250ZXh0LCAidmtDbWRQdXNoQ29uc3RhbnRzIik7CistCXZrQ21kUmVzZXRFdmVu
dCA9IChQRk5fdmtDbWRSZXNldEV2ZW50KWxvYWQoY29udGV4dCwgInZrQ21kUmVzZXRFdmVudCIp
OworLQl2a0NtZFJlc2V0UXVlcnlQb29sID0gKFBGTl92a0NtZFJlc2V0UXVlcnlQb29sKWxvYWQo
Y29udGV4dCwgInZrQ21kUmVzZXRRdWVyeVBvb2wiKTsKKy0JdmtDbWRSZXNvbHZlSW1hZ2UgPSAo
UEZOX3ZrQ21kUmVzb2x2ZUltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kUmVzb2x2ZUltYWdlIik7
CistCXZrQ21kU2V0QmxlbmRDb25zdGFudHMgPSAoUEZOX3ZrQ21kU2V0QmxlbmRDb25zdGFudHMp
bG9hZChjb250ZXh0LCAidmtDbWRTZXRCbGVuZENvbnN0YW50cyIpOworLQl2a0NtZFNldERlcHRo
QmlhcyA9IChQRk5fdmtDbWRTZXREZXB0aEJpYXMpbG9hZChjb250ZXh0LCAidmtDbWRTZXREZXB0
aEJpYXMiKTsKKy0JdmtDbWRTZXREZXB0aEJvdW5kcyA9IChQRk5fdmtDbWRTZXREZXB0aEJvdW5k
cylsb2FkKGNvbnRleHQsICJ2a0NtZFNldERlcHRoQm91bmRzIik7CistCXZrQ21kU2V0RXZlbnQg
PSAoUEZOX3ZrQ21kU2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRFdmVudCIpOworLQl2
a0NtZFNldExpbmVXaWR0aCA9IChQRk5fdmtDbWRTZXRMaW5lV2lkdGgpbG9hZChjb250ZXh0LCAi
dmtDbWRTZXRMaW5lV2lkdGgiKTsKKy0JdmtDbWRTZXRTY2lzc29yID0gKFBGTl92a0NtZFNldFNj
aXNzb3IpbG9hZChjb250ZXh0LCAidmtDbWRTZXRTY2lzc29yIik7CistCXZrQ21kU2V0U3RlbmNp
bENvbXBhcmVNYXNrID0gKFBGTl92a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzaylsb2FkKGNvbnRl
eHQsICJ2a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzayIpOworLQl2a0NtZFNldFN0ZW5jaWxSZWZl
cmVuY2UgPSAoUEZOX3ZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSlsb2FkKGNvbnRleHQsICJ2a0Nt
ZFNldFN0ZW5jaWxSZWZlcmVuY2UiKTsKKy0JdmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrID0gKFBG
Tl92a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXRTdGVuY2ls
V3JpdGVNYXNrIik7CistCXZrQ21kU2V0Vmlld3BvcnQgPSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnQp
bG9hZChjb250ZXh0LCAidmtDbWRTZXRWaWV3cG9ydCIpOworLQl2a0NtZFVwZGF0ZUJ1ZmZlciA9
IChQRk5fdmtDbWRVcGRhdGVCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRVcGRhdGVCdWZmZXIi
KTsKKy0JdmtDbWRXYWl0RXZlbnRzID0gKFBGTl92a0NtZFdhaXRFdmVudHMpbG9hZChjb250ZXh0
LCAidmtDbWRXYWl0RXZlbnRzIik7CistCXZrQ21kV3JpdGVUaW1lc3RhbXAgPSAoUEZOX3ZrQ21k
V3JpdGVUaW1lc3RhbXApbG9hZChjb250ZXh0LCAidmtDbWRXcml0ZVRpbWVzdGFtcCIpOworLQl2
a0NyZWF0ZUJ1ZmZlciA9IChQRk5fdmtDcmVhdGVCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDcmVh
dGVCdWZmZXIiKTsKKy0JdmtDcmVhdGVCdWZmZXJWaWV3ID0gKFBGTl92a0NyZWF0ZUJ1ZmZlclZp
ZXcpbG9hZChjb250ZXh0LCAidmtDcmVhdGVCdWZmZXJWaWV3Iik7CistCXZrQ3JlYXRlQ29tbWFu
ZFBvb2wgPSAoUEZOX3ZrQ3JlYXRlQ29tbWFuZFBvb2wpbG9hZChjb250ZXh0LCAidmtDcmVhdGVD
b21tYW5kUG9vbCIpOworLQl2a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXMgPSAoUEZOX3ZrQ3JlYXRl
Q29tcHV0ZVBpcGVsaW5lcylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXMi
KTsKKy0JdmtDcmVhdGVEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9yUG9v
bClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JQb29sIik7CistCXZrQ3JlYXRlRGVz
Y3JpcHRvclNldExheW91dCA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dCIpOworLQl2a0NyZWF0ZUV2ZW50
ID0gKFBGTl92a0NyZWF0ZUV2ZW50KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRXZlbnQiKTsKKy0J
dmtDcmVhdGVGZW5jZSA9IChQRk5fdmtDcmVhdGVGZW5jZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0
ZUZlbmNlIik7CistCXZrQ3JlYXRlRnJhbWVidWZmZXIgPSAoUEZOX3ZrQ3JlYXRlRnJhbWVidWZm
ZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVGcmFtZWJ1ZmZlciIpOworLQl2a0NyZWF0ZUdyYXBo
aWNzUGlwZWxpbmVzID0gKFBGTl92a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMiKTsKKy0JdmtDcmVhdGVJbWFnZSA9IChQRk5f
dmtDcmVhdGVJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUltYWdlIik7CistCXZrQ3JlYXRl
SW1hZ2VWaWV3ID0gKFBGTl92a0NyZWF0ZUltYWdlVmlldylsb2FkKGNvbnRleHQsICJ2a0NyZWF0
ZUltYWdlVmlldyIpOworLQl2a0NyZWF0ZVBpcGVsaW5lQ2FjaGUgPSAoUEZOX3ZrQ3JlYXRlUGlw
ZWxpbmVDYWNoZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVBpcGVsaW5lQ2FjaGUiKTsKKy0JdmtD
cmVhdGVQaXBlbGluZUxheW91dCA9IChQRk5fdmtDcmVhdGVQaXBlbGluZUxheW91dClsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0Iik7CistCXZrQ3JlYXRlUXVlcnlQb29sID0g
KFBGTl92a0NyZWF0ZVF1ZXJ5UG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVF1ZXJ5UG9vbCIp
OworLQl2a0NyZWF0ZVJlbmRlclBhc3MgPSAoUEZOX3ZrQ3JlYXRlUmVuZGVyUGFzcylsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVJlbmRlclBhc3MiKTsKKy0JdmtDcmVhdGVTYW1wbGVyID0gKFBGTl92
a0NyZWF0ZVNhbXBsZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVyIik7CistCXZrQ3Jl
YXRlU2VtYXBob3JlID0gKFBGTl92a0NyZWF0ZVNlbWFwaG9yZSlsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZVNlbWFwaG9yZSIpOworLQl2a0NyZWF0ZVNoYWRlck1vZHVsZSA9IChQRk5fdmtDcmVhdGVT
aGFkZXJNb2R1bGUpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTaGFkZXJNb2R1bGUiKTsKKy0JdmtE
ZXN0cm95QnVmZmVyID0gKFBGTl92a0Rlc3Ryb3lCdWZmZXIpbG9hZChjb250ZXh0LCAidmtEZXN0
cm95QnVmZmVyIik7CistCXZrRGVzdHJveUJ1ZmZlclZpZXcgPSAoUEZOX3ZrRGVzdHJveUJ1ZmZl
clZpZXcpbG9hZChjb250ZXh0LCAidmtEZXN0cm95QnVmZmVyVmlldyIpOworLQl2a0Rlc3Ryb3lD
b21tYW5kUG9vbCA9IChQRk5fdmtEZXN0cm95Q29tbWFuZFBvb2wpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95Q29tbWFuZFBvb2wiKTsKKy0JdmtEZXN0cm95RGVzY3JpcHRvclBvb2wgPSAoUEZOX3Zr
RGVzdHJveURlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JQ
b29sIik7CistCXZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQgPSAoUEZOX3ZrRGVzdHJveURl
c2NyaXB0b3JTZXRMYXlvdXQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3JpcHRvclNldExh
eW91dCIpOworLQl2a0Rlc3Ryb3lEZXZpY2UgPSAoUEZOX3ZrRGVzdHJveURldmljZSlsb2FkKGNv
bnRleHQsICJ2a0Rlc3Ryb3lEZXZpY2UiKTsKKy0JdmtEZXN0cm95RXZlbnQgPSAoUEZOX3ZrRGVz
dHJveUV2ZW50KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUV2ZW50Iik7CistCXZrRGVzdHJveUZl
bmNlID0gKFBGTl92a0Rlc3Ryb3lGZW5jZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lGZW5jZSIp
OworLQl2a0Rlc3Ryb3lGcmFtZWJ1ZmZlciA9IChQRk5fdmtEZXN0cm95RnJhbWVidWZmZXIpbG9h
ZChjb250ZXh0LCAidmtEZXN0cm95RnJhbWVidWZmZXIiKTsKKy0JdmtEZXN0cm95SW1hZ2UgPSAo
UEZOX3ZrRGVzdHJveUltYWdlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUltYWdlIik7CistCXZr
RGVzdHJveUltYWdlVmlldyA9IChQRk5fdmtEZXN0cm95SW1hZ2VWaWV3KWxvYWQoY29udGV4dCwg
InZrRGVzdHJveUltYWdlVmlldyIpOworLQl2a0Rlc3Ryb3lQaXBlbGluZSA9IChQRk5fdmtEZXN0
cm95UGlwZWxpbmUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95UGlwZWxpbmUiKTsKKy0JdmtEZXN0
cm95UGlwZWxpbmVDYWNoZSA9IChQRk5fdmtEZXN0cm95UGlwZWxpbmVDYWNoZSlsb2FkKGNvbnRl
eHQsICJ2a0Rlc3Ryb3lQaXBlbGluZUNhY2hlIik7CistCXZrRGVzdHJveVBpcGVsaW5lTGF5b3V0
ID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQ
aXBlbGluZUxheW91dCIpOworLQl2a0Rlc3Ryb3lRdWVyeVBvb2wgPSAoUEZOX3ZrRGVzdHJveVF1
ZXJ5UG9vbClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lRdWVyeVBvb2wiKTsKKy0JdmtEZXN0cm95
UmVuZGVyUGFzcyA9IChQRk5fdmtEZXN0cm95UmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0Rl
c3Ryb3lSZW5kZXJQYXNzIik7CistCXZrRGVzdHJveVNhbXBsZXIgPSAoUEZOX3ZrRGVzdHJveVNh
bXBsZXIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlciIpOworLQl2a0Rlc3Ryb3lTZW1h
cGhvcmUgPSAoUEZOX3ZrRGVzdHJveVNlbWFwaG9yZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lT
ZW1hcGhvcmUiKTsKKy0JdmtEZXN0cm95U2hhZGVyTW9kdWxlID0gKFBGTl92a0Rlc3Ryb3lTaGFk
ZXJNb2R1bGUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2hhZGVyTW9kdWxlIik7CistCXZrRGV2
aWNlV2FpdElkbGUgPSAoUEZOX3ZrRGV2aWNlV2FpdElkbGUpbG9hZChjb250ZXh0LCAidmtEZXZp
Y2VXYWl0SWRsZSIpOworLQl2a0VuZENvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrRW5kQ29tbWFuZEJ1
ZmZlcilsb2FkKGNvbnRleHQsICJ2a0VuZENvbW1hbmRCdWZmZXIiKTsKKy0JdmtGbHVzaE1hcHBl
ZE1lbW9yeVJhbmdlcyA9IChQRk5fdmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcylsb2FkKGNvbnRl
eHQsICJ2a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzIik7CistCXZrRnJlZUNvbW1hbmRCdWZmZXJz
ID0gKFBGTl92a0ZyZWVDb21tYW5kQnVmZmVycylsb2FkKGNvbnRleHQsICJ2a0ZyZWVDb21tYW5k
QnVmZmVycyIpOworLQl2a0ZyZWVEZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtGcmVlRGVzY3JpcHRv
clNldHMpbG9hZChjb250ZXh0LCAidmtGcmVlRGVzY3JpcHRvclNldHMiKTsKKy0JdmtGcmVlTWVt
b3J5ID0gKFBGTl92a0ZyZWVNZW1vcnkpbG9hZChjb250ZXh0LCAidmtGcmVlTWVtb3J5Iik7Cist
CXZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzID0gKFBGTl92a0dldEJ1ZmZlck1lbW9yeVJl
cXVpcmVtZW50cylsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyIp
OworLQl2a0dldERldmljZU1lbW9yeUNvbW1pdG1lbnQgPSAoUEZOX3ZrR2V0RGV2aWNlTWVtb3J5
Q29tbWl0bWVudClsb2FkKGNvbnRleHQsICJ2a0dldERldmljZU1lbW9yeUNvbW1pdG1lbnQiKTsK
Ky0JdmtHZXREZXZpY2VRdWV1ZSA9IChQRk5fdmtHZXREZXZpY2VRdWV1ZSlsb2FkKGNvbnRleHQs
ICJ2a0dldERldmljZVF1ZXVlIik7CistCXZrR2V0RXZlbnRTdGF0dXMgPSAoUEZOX3ZrR2V0RXZl
bnRTdGF0dXMpbG9hZChjb250ZXh0LCAidmtHZXRFdmVudFN0YXR1cyIpOworLQl2a0dldEZlbmNl
U3RhdHVzID0gKFBGTl92a0dldEZlbmNlU3RhdHVzKWxvYWQoY29udGV4dCwgInZrR2V0RmVuY2VT
dGF0dXMiKTsKKy0JdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtHZXRJbWFn
ZU1lbW9yeVJlcXVpcmVtZW50cylsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlTWVtb3J5UmVxdWly
ZW1lbnRzIik7CistCXZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMgPSAoUEZOX3Zr
R2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMpbG9hZChjb250ZXh0LCAidmtHZXRJbWFn
ZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50cyIpOworLQl2a0dldEltYWdlU3VicmVzb3VyY2VMYXlv
dXQgPSAoUEZOX3ZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0dl
dEltYWdlU3VicmVzb3VyY2VMYXlvdXQiKTsKKy0JdmtHZXRQaXBlbGluZUNhY2hlRGF0YSA9IChQ
Rk5fdmtHZXRQaXBlbGluZUNhY2hlRGF0YSlsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lQ2Fj
aGVEYXRhIik7CistCXZrR2V0UXVlcnlQb29sUmVzdWx0cyA9IChQRk5fdmtHZXRRdWVyeVBvb2xS
ZXN1bHRzKWxvYWQoY29udGV4dCwgInZrR2V0UXVlcnlQb29sUmVzdWx0cyIpOworLQl2a0dldFJl
bmRlckFyZWFHcmFudWxhcml0eSA9IChQRk5fdmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHkpbG9h
ZChjb250ZXh0LCAidmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHkiKTsKKy0JdmtJbnZhbGlkYXRl
TWFwcGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMp
bG9hZChjb250ZXh0LCAidmtJbnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzIik7CistCXZrTWFw
TWVtb3J5ID0gKFBGTl92a01hcE1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a01hcE1lbW9yeSIpOwor
LQl2a01lcmdlUGlwZWxpbmVDYWNoZXMgPSAoUEZOX3ZrTWVyZ2VQaXBlbGluZUNhY2hlcylsb2Fk
KGNvbnRleHQsICJ2a01lcmdlUGlwZWxpbmVDYWNoZXMiKTsKKy0JdmtRdWV1ZUJpbmRTcGFyc2Ug
PSAoUEZOX3ZrUXVldWVCaW5kU3BhcnNlKWxvYWQoY29udGV4dCwgInZrUXVldWVCaW5kU3BhcnNl
Iik7CistCXZrUXVldWVTdWJtaXQgPSAoUEZOX3ZrUXVldWVTdWJtaXQpbG9hZChjb250ZXh0LCAi
dmtRdWV1ZVN1Ym1pdCIpOworLQl2a1F1ZXVlV2FpdElkbGUgPSAoUEZOX3ZrUXVldWVXYWl0SWRs
ZSlsb2FkKGNvbnRleHQsICJ2a1F1ZXVlV2FpdElkbGUiKTsKKy0JdmtSZXNldENvbW1hbmRCdWZm
ZXIgPSAoUEZOX3ZrUmVzZXRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZrUmVzZXRDb21t
YW5kQnVmZmVyIik7CistCXZrUmVzZXRDb21tYW5kUG9vbCA9IChQRk5fdmtSZXNldENvbW1hbmRQ
b29sKWxvYWQoY29udGV4dCwgInZrUmVzZXRDb21tYW5kUG9vbCIpOworLQl2a1Jlc2V0RGVzY3Jp
cHRvclBvb2wgPSAoUEZOX3ZrUmVzZXREZXNjcmlwdG9yUG9vbClsb2FkKGNvbnRleHQsICJ2a1Jl
c2V0RGVzY3JpcHRvclBvb2wiKTsKKy0JdmtSZXNldEV2ZW50ID0gKFBGTl92a1Jlc2V0RXZlbnQp
bG9hZChjb250ZXh0LCAidmtSZXNldEV2ZW50Iik7CistCXZrUmVzZXRGZW5jZXMgPSAoUEZOX3Zr
UmVzZXRGZW5jZXMpbG9hZChjb250ZXh0LCAidmtSZXNldEZlbmNlcyIpOworLQl2a1NldEV2ZW50
ID0gKFBGTl92a1NldEV2ZW50KWxvYWQoY29udGV4dCwgInZrU2V0RXZlbnQiKTsKKy0JdmtVbm1h
cE1lbW9yeSA9IChQRk5fdmtVbm1hcE1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a1VubWFwTWVtb3J5
Iik7CistCXZrVXBkYXRlRGVzY3JpcHRvclNldHMgPSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNl
dHMpbG9hZChjb250ZXh0LCAidmtVcGRhdGVEZXNjcmlwdG9yU2V0cyIpOworLQl2a1dhaXRGb3JG
ZW5jZXMgPSAoUEZOX3ZrV2FpdEZvckZlbmNlcylsb2FkKGNvbnRleHQsICJ2a1dhaXRGb3JGZW5j
ZXMiKTsKKysgICAgdmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzID0gKFBGTl92a0FsbG9jYXRlQ29t
bWFuZEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzIik7Cisr
ICAgIHZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtBbGxvY2F0ZURlc2NyaXB0b3JT
ZXRzKWxvYWQoY29udGV4dCwgInZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cyIpOworKyAgICB2a0Fs
bG9jYXRlTWVtb3J5ID0gKFBGTl92a0FsbG9jYXRlTWVtb3J5KWxvYWQoY29udGV4dCwgInZrQWxs
b2NhdGVNZW1vcnkiKTsKKysgICAgdmtCZWdpbkNvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrQmVnaW5D
b21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZrQmVnaW5Db21tYW5kQnVmZmVyIik7CisrICAg
IHZrQmluZEJ1ZmZlck1lbW9yeSA9IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5KWxvYWQoY29udGV4
dCwgInZrQmluZEJ1ZmZlck1lbW9yeSIpOworKyAgICB2a0JpbmRJbWFnZU1lbW9yeSA9IChQRk5f
dmtCaW5kSW1hZ2VNZW1vcnkpbG9hZChjb250ZXh0LCAidmtCaW5kSW1hZ2VNZW1vcnkiKTsKKysg
ICAgdmtDbWRCZWdpblF1ZXJ5ID0gKFBGTl92a0NtZEJlZ2luUXVlcnkpbG9hZChjb250ZXh0LCAi
dmtDbWRCZWdpblF1ZXJ5Iik7CisrICAgIHZrQ21kQmVnaW5SZW5kZXJQYXNzID0gKFBGTl92a0Nt
ZEJlZ2luUmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUmVuZGVyUGFzcyIpOwor
KyAgICB2a0NtZEJpbmREZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtDbWRCaW5kRGVzY3JpcHRvclNl
dHMpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kRGVzY3JpcHRvclNldHMiKTsKKysgICAgdmtDbWRC
aW5kSW5kZXhCdWZmZXIgPSAoUEZOX3ZrQ21kQmluZEluZGV4QnVmZmVyKWxvYWQoY29udGV4dCwg
InZrQ21kQmluZEluZGV4QnVmZmVyIik7CisrICAgIHZrQ21kQmluZFBpcGVsaW5lID0gKFBGTl92
a0NtZEJpbmRQaXBlbGluZSlsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRQaXBlbGluZSIpOworKyAg
ICB2a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzID0gKFBGTl92a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzKWxv
YWQoY29udGV4dCwgInZrQ21kQmluZFZlcnRleEJ1ZmZlcnMiKTsKKysgICAgdmtDbWRCbGl0SW1h
Z2UgPSAoUEZOX3ZrQ21kQmxpdEltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQmxpdEltYWdlIik7
CisrICAgIHZrQ21kQ2xlYXJBdHRhY2htZW50cyA9IChQRk5fdmtDbWRDbGVhckF0dGFjaG1lbnRz
KWxvYWQoY29udGV4dCwgInZrQ21kQ2xlYXJBdHRhY2htZW50cyIpOworKyAgICB2a0NtZENsZWFy
Q29sb3JJbWFnZSA9IChQRk5fdmtDbWRDbGVhckNvbG9ySW1hZ2UpbG9hZChjb250ZXh0LCAidmtD
bWRDbGVhckNvbG9ySW1hZ2UiKTsKKysgICAgdmtDbWRDbGVhckRlcHRoU3RlbmNpbEltYWdlID0g
KFBGTl92a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDbGVh
ckRlcHRoU3RlbmNpbEltYWdlIik7CisrICAgIHZrQ21kQ29weUJ1ZmZlciA9IChQRk5fdmtDbWRD
b3B5QnVmZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUJ1ZmZlciIpOworKyAgICB2a0NtZENv
cHlCdWZmZXJUb0ltYWdlID0gKFBGTl92a0NtZENvcHlCdWZmZXJUb0ltYWdlKWxvYWQoY29udGV4
dCwgInZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UiKTsKKysgICAgdmtDbWRDb3B5SW1hZ2UgPSAoUEZO
X3ZrQ21kQ29weUltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUltYWdlIik7CisrICAgIHZr
Q21kQ29weUltYWdlVG9CdWZmZXIgPSAoUEZOX3ZrQ21kQ29weUltYWdlVG9CdWZmZXIpbG9hZChj
b250ZXh0LCAidmtDbWRDb3B5SW1hZ2VUb0J1ZmZlciIpOworKyAgICB2a0NtZENvcHlRdWVyeVBv
b2xSZXN1bHRzID0gKFBGTl92a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzKWxvYWQoY29udGV4dCwg
InZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMiKTsKKysgICAgdmtDbWREaXNwYXRjaCA9IChQRk5f
dmtDbWREaXNwYXRjaClsb2FkKGNvbnRleHQsICJ2a0NtZERpc3BhdGNoIik7CisrICAgIHZrQ21k
RGlzcGF0Y2hJbmRpcmVjdCA9IChQRk5fdmtDbWREaXNwYXRjaEluZGlyZWN0KWxvYWQoY29udGV4
dCwgInZrQ21kRGlzcGF0Y2hJbmRpcmVjdCIpOworKyAgICB2a0NtZERyYXcgPSAoUEZOX3ZrQ21k
RHJhdylsb2FkKGNvbnRleHQsICJ2a0NtZERyYXciKTsKKysgICAgdmtDbWREcmF3SW5kZXhlZCA9
IChQRk5fdmtDbWREcmF3SW5kZXhlZClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkIik7
CisrICAgIHZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdCA9IChQRk5fdmtDbWREcmF3SW5kZXhlZElu
ZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdCIpOworKyAgICB2
a0NtZERyYXdJbmRpcmVjdCA9IChQRk5fdmtDbWREcmF3SW5kaXJlY3QpbG9hZChjb250ZXh0LCAi
dmtDbWREcmF3SW5kaXJlY3QiKTsKKysgICAgdmtDbWRFbmRRdWVyeSA9IChQRk5fdmtDbWRFbmRR
dWVyeSlsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFF1ZXJ5Iik7CisrICAgIHZrQ21kRW5kUmVuZGVy
UGFzcyA9IChQRk5fdmtDbWRFbmRSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ21kRW5kUmVu
ZGVyUGFzcyIpOworKyAgICB2a0NtZEV4ZWN1dGVDb21tYW5kcyA9IChQRk5fdmtDbWRFeGVjdXRl
Q29tbWFuZHMpbG9hZChjb250ZXh0LCAidmtDbWRFeGVjdXRlQ29tbWFuZHMiKTsKKysgICAgdmtD
bWRGaWxsQnVmZmVyID0gKFBGTl92a0NtZEZpbGxCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRG
aWxsQnVmZmVyIik7CisrICAgIHZrQ21kTmV4dFN1YnBhc3MgPSAoUEZOX3ZrQ21kTmV4dFN1YnBh
c3MpbG9hZChjb250ZXh0LCAidmtDbWROZXh0U3VicGFzcyIpOworKyAgICB2a0NtZFBpcGVsaW5l
QmFycmllciA9IChQRk5fdmtDbWRQaXBlbGluZUJhcnJpZXIpbG9hZChjb250ZXh0LCAidmtDbWRQ
aXBlbGluZUJhcnJpZXIiKTsKKysgICAgdmtDbWRQdXNoQ29uc3RhbnRzID0gKFBGTl92a0NtZFB1
c2hDb25zdGFudHMpbG9hZChjb250ZXh0LCAidmtDbWRQdXNoQ29uc3RhbnRzIik7CisrICAgIHZr
Q21kUmVzZXRFdmVudCA9IChQRk5fdmtDbWRSZXNldEV2ZW50KWxvYWQoY29udGV4dCwgInZrQ21k
UmVzZXRFdmVudCIpOworKyAgICB2a0NtZFJlc2V0UXVlcnlQb29sID0gKFBGTl92a0NtZFJlc2V0
UXVlcnlQb29sKWxvYWQoY29udGV4dCwgInZrQ21kUmVzZXRRdWVyeVBvb2wiKTsKKysgICAgdmtD
bWRSZXNvbHZlSW1hZ2UgPSAoUEZOX3ZrQ21kUmVzb2x2ZUltYWdlKWxvYWQoY29udGV4dCwgInZr
Q21kUmVzb2x2ZUltYWdlIik7CisrICAgIHZrQ21kU2V0QmxlbmRDb25zdGFudHMgPSAoUEZOX3Zr
Q21kU2V0QmxlbmRDb25zdGFudHMpbG9hZChjb250ZXh0LCAidmtDbWRTZXRCbGVuZENvbnN0YW50
cyIpOworKyAgICB2a0NtZFNldERlcHRoQmlhcyA9IChQRk5fdmtDbWRTZXREZXB0aEJpYXMpbG9h
ZChjb250ZXh0LCAidmtDbWRTZXREZXB0aEJpYXMiKTsKKysgICAgdmtDbWRTZXREZXB0aEJvdW5k
cyA9IChQRk5fdmtDbWRTZXREZXB0aEJvdW5kcylsb2FkKGNvbnRleHQsICJ2a0NtZFNldERlcHRo
Qm91bmRzIik7CisrICAgIHZrQ21kU2V0RXZlbnQgPSAoUEZOX3ZrQ21kU2V0RXZlbnQpbG9hZChj
b250ZXh0LCAidmtDbWRTZXRFdmVudCIpOworKyAgICB2a0NtZFNldExpbmVXaWR0aCA9IChQRk5f
dmtDbWRTZXRMaW5lV2lkdGgpbG9hZChjb250ZXh0LCAidmtDbWRTZXRMaW5lV2lkdGgiKTsKKysg
ICAgdmtDbWRTZXRTY2lzc29yID0gKFBGTl92a0NtZFNldFNjaXNzb3IpbG9hZChjb250ZXh0LCAi
dmtDbWRTZXRTY2lzc29yIik7CisrICAgIHZrQ21kU2V0U3RlbmNpbENvbXBhcmVNYXNrID0gKFBG
Tl92a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzaylsb2FkKGNvbnRleHQsICJ2a0NtZFNldFN0ZW5j
aWxDb21wYXJlTWFzayIpOworKyAgICB2a0NtZFNldFN0ZW5jaWxSZWZlcmVuY2UgPSAoUEZOX3Zr
Q21kU2V0U3RlbmNpbFJlZmVyZW5jZSlsb2FkKGNvbnRleHQsICJ2a0NtZFNldFN0ZW5jaWxSZWZl
cmVuY2UiKTsKKysgICAgdmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrID0gKFBGTl92a0NtZFNldFN0
ZW5jaWxXcml0ZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrIik7
CisrICAgIHZrQ21kU2V0Vmlld3BvcnQgPSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnQpbG9hZChjb250
ZXh0LCAidmtDbWRTZXRWaWV3cG9ydCIpOworKyAgICB2a0NtZFVwZGF0ZUJ1ZmZlciA9IChQRk5f
dmtDbWRVcGRhdGVCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRVcGRhdGVCdWZmZXIiKTsKKysg
ICAgdmtDbWRXYWl0RXZlbnRzID0gKFBGTl92a0NtZFdhaXRFdmVudHMpbG9hZChjb250ZXh0LCAi
dmtDbWRXYWl0RXZlbnRzIik7CisrICAgIHZrQ21kV3JpdGVUaW1lc3RhbXAgPSAoUEZOX3ZrQ21k
V3JpdGVUaW1lc3RhbXApbG9hZChjb250ZXh0LCAidmtDbWRXcml0ZVRpbWVzdGFtcCIpOworKyAg
ICB2a0NyZWF0ZUJ1ZmZlciA9IChQRk5fdmtDcmVhdGVCdWZmZXIpbG9hZChjb250ZXh0LCAidmtD
cmVhdGVCdWZmZXIiKTsKKysgICAgdmtDcmVhdGVCdWZmZXJWaWV3ID0gKFBGTl92a0NyZWF0ZUJ1
ZmZlclZpZXcpbG9hZChjb250ZXh0LCAidmtDcmVhdGVCdWZmZXJWaWV3Iik7CisrICAgIHZrQ3Jl
YXRlQ29tbWFuZFBvb2wgPSAoUEZOX3ZrQ3JlYXRlQ29tbWFuZFBvb2wpbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVDb21tYW5kUG9vbCIpOworKyAgICB2a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXMgPSAo
UEZOX3ZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lcylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUNvbXB1
dGVQaXBlbGluZXMiKTsKKysgICAgdmtDcmVhdGVEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtDcmVh
dGVEZXNjcmlwdG9yUG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JQb29sIik7
CisrICAgIHZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dCA9IChQRk5fdmtDcmVhdGVEZXNjcmlw
dG9yU2V0TGF5b3V0KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dCIp
OworKyAgICB2a0NyZWF0ZUV2ZW50ID0gKFBGTl92a0NyZWF0ZUV2ZW50KWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlRXZlbnQiKTsKKysgICAgdmtDcmVhdGVGZW5jZSA9IChQRk5fdmtDcmVhdGVGZW5j
ZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUZlbmNlIik7CisrICAgIHZrQ3JlYXRlRnJhbWVidWZm
ZXIgPSAoUEZOX3ZrQ3JlYXRlRnJhbWVidWZmZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVGcmFt
ZWJ1ZmZlciIpOworKyAgICB2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzID0gKFBGTl92a0NyZWF0
ZUdyYXBoaWNzUGlwZWxpbmVzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlR3JhcGhpY3NQaXBlbGlu
ZXMiKTsKKysgICAgdmtDcmVhdGVJbWFnZSA9IChQRk5fdmtDcmVhdGVJbWFnZSlsb2FkKGNvbnRl
eHQsICJ2a0NyZWF0ZUltYWdlIik7CisrICAgIHZrQ3JlYXRlSW1hZ2VWaWV3ID0gKFBGTl92a0Ny
ZWF0ZUltYWdlVmlldylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUltYWdlVmlldyIpOworKyAgICB2
a0NyZWF0ZVBpcGVsaW5lQ2FjaGUgPSAoUEZOX3ZrQ3JlYXRlUGlwZWxpbmVDYWNoZSlsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVBpcGVsaW5lQ2FjaGUiKTsKKysgICAgdmtDcmVhdGVQaXBlbGluZUxh
eW91dCA9IChQRk5fdmtDcmVhdGVQaXBlbGluZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0NyZWF0
ZVBpcGVsaW5lTGF5b3V0Iik7CisrICAgIHZrQ3JlYXRlUXVlcnlQb29sID0gKFBGTl92a0NyZWF0
ZVF1ZXJ5UG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVF1ZXJ5UG9vbCIpOworKyAgICB2a0Ny
ZWF0ZVJlbmRlclBhc3MgPSAoUEZOX3ZrQ3JlYXRlUmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2
a0NyZWF0ZVJlbmRlclBhc3MiKTsKKysgICAgdmtDcmVhdGVTYW1wbGVyID0gKFBGTl92a0NyZWF0
ZVNhbXBsZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVyIik7CisrICAgIHZrQ3JlYXRl
U2VtYXBob3JlID0gKFBGTl92a0NyZWF0ZVNlbWFwaG9yZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0
ZVNlbWFwaG9yZSIpOworKyAgICB2a0NyZWF0ZVNoYWRlck1vZHVsZSA9IChQRk5fdmtDcmVhdGVT
aGFkZXJNb2R1bGUpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTaGFkZXJNb2R1bGUiKTsKKysgICAg
dmtEZXN0cm95QnVmZmVyID0gKFBGTl92a0Rlc3Ryb3lCdWZmZXIpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95QnVmZmVyIik7CisrICAgIHZrRGVzdHJveUJ1ZmZlclZpZXcgPSAoUEZOX3ZrRGVzdHJv
eUJ1ZmZlclZpZXcpbG9hZChjb250ZXh0LCAidmtEZXN0cm95QnVmZmVyVmlldyIpOworKyAgICB2
a0Rlc3Ryb3lDb21tYW5kUG9vbCA9IChQRk5fdmtEZXN0cm95Q29tbWFuZFBvb2wpbG9hZChjb250
ZXh0LCAidmtEZXN0cm95Q29tbWFuZFBvb2wiKTsKKysgICAgdmtEZXN0cm95RGVzY3JpcHRvclBv
b2wgPSAoUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eURlc2NyaXB0b3JQb29sIik7CisrICAgIHZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQgPSAo
UEZOX3ZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95
RGVzY3JpcHRvclNldExheW91dCIpOworKyAgICB2a0Rlc3Ryb3lEZXZpY2UgPSAoUEZOX3ZrRGVz
dHJveURldmljZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lEZXZpY2UiKTsKKysgICAgdmtEZXN0
cm95RXZlbnQgPSAoUEZOX3ZrRGVzdHJveUV2ZW50KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUV2
ZW50Iik7CisrICAgIHZrRGVzdHJveUZlbmNlID0gKFBGTl92a0Rlc3Ryb3lGZW5jZSlsb2FkKGNv
bnRleHQsICJ2a0Rlc3Ryb3lGZW5jZSIpOworKyAgICB2a0Rlc3Ryb3lGcmFtZWJ1ZmZlciA9IChQ
Rk5fdmtEZXN0cm95RnJhbWVidWZmZXIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RnJhbWVidWZm
ZXIiKTsKKysgICAgdmtEZXN0cm95SW1hZ2UgPSAoUEZOX3ZrRGVzdHJveUltYWdlKWxvYWQoY29u
dGV4dCwgInZrRGVzdHJveUltYWdlIik7CisrICAgIHZrRGVzdHJveUltYWdlVmlldyA9IChQRk5f
dmtEZXN0cm95SW1hZ2VWaWV3KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUltYWdlVmlldyIpOwor
KyAgICB2a0Rlc3Ryb3lQaXBlbGluZSA9IChQRk5fdmtEZXN0cm95UGlwZWxpbmUpbG9hZChjb250
ZXh0LCAidmtEZXN0cm95UGlwZWxpbmUiKTsKKysgICAgdmtEZXN0cm95UGlwZWxpbmVDYWNoZSA9
IChQRk5fdmtEZXN0cm95UGlwZWxpbmVDYWNoZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQaXBl
bGluZUNhY2hlIik7CisrICAgIHZrRGVzdHJveVBpcGVsaW5lTGF5b3V0ID0gKFBGTl92a0Rlc3Ry
b3lQaXBlbGluZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQaXBlbGluZUxheW91dCIp
OworKyAgICB2a0Rlc3Ryb3lRdWVyeVBvb2wgPSAoUEZOX3ZrRGVzdHJveVF1ZXJ5UG9vbClsb2Fk
KGNvbnRleHQsICJ2a0Rlc3Ryb3lRdWVyeVBvb2wiKTsKKysgICAgdmtEZXN0cm95UmVuZGVyUGFz
cyA9IChQRk5fdmtEZXN0cm95UmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lSZW5k
ZXJQYXNzIik7CisrICAgIHZrRGVzdHJveVNhbXBsZXIgPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXIp
bG9hZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlciIpOworKyAgICB2a0Rlc3Ryb3lTZW1hcGhv
cmUgPSAoUEZOX3ZrRGVzdHJveVNlbWFwaG9yZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lTZW1h
cGhvcmUiKTsKKysgICAgdmtEZXN0cm95U2hhZGVyTW9kdWxlID0gKFBGTl92a0Rlc3Ryb3lTaGFk
ZXJNb2R1bGUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2hhZGVyTW9kdWxlIik7CisrICAgIHZr
RGV2aWNlV2FpdElkbGUgPSAoUEZOX3ZrRGV2aWNlV2FpdElkbGUpbG9hZChjb250ZXh0LCAidmtE
ZXZpY2VXYWl0SWRsZSIpOworKyAgICB2a0VuZENvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrRW5kQ29t
bWFuZEJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0VuZENvbW1hbmRCdWZmZXIiKTsKKysgICAgdmtG
bHVzaE1hcHBlZE1lbW9yeVJhbmdlcyA9IChQRk5fdmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcyls
b2FkKGNvbnRleHQsICJ2a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzIik7CisrICAgIHZrRnJlZUNv
bW1hbmRCdWZmZXJzID0gKFBGTl92a0ZyZWVDb21tYW5kQnVmZmVycylsb2FkKGNvbnRleHQsICJ2
a0ZyZWVDb21tYW5kQnVmZmVycyIpOworKyAgICB2a0ZyZWVEZXNjcmlwdG9yU2V0cyA9IChQRk5f
dmtGcmVlRGVzY3JpcHRvclNldHMpbG9hZChjb250ZXh0LCAidmtGcmVlRGVzY3JpcHRvclNldHMi
KTsKKysgICAgdmtGcmVlTWVtb3J5ID0gKFBGTl92a0ZyZWVNZW1vcnkpbG9hZChjb250ZXh0LCAi
dmtGcmVlTWVtb3J5Iik7CisrICAgIHZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzID0gKFBG
Tl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cylsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZl
ck1lbW9yeVJlcXVpcmVtZW50cyIpOworKyAgICB2a0dldERldmljZU1lbW9yeUNvbW1pdG1lbnQg
PSAoUEZOX3ZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudClsb2FkKGNvbnRleHQsICJ2a0dldERl
dmljZU1lbW9yeUNvbW1pdG1lbnQiKTsKKysgICAgdmtHZXREZXZpY2VRdWV1ZSA9IChQRk5fdmtH
ZXREZXZpY2VRdWV1ZSlsb2FkKGNvbnRleHQsICJ2a0dldERldmljZVF1ZXVlIik7CisrICAgIHZr
R2V0RXZlbnRTdGF0dXMgPSAoUEZOX3ZrR2V0RXZlbnRTdGF0dXMpbG9hZChjb250ZXh0LCAidmtH
ZXRFdmVudFN0YXR1cyIpOworKyAgICB2a0dldEZlbmNlU3RhdHVzID0gKFBGTl92a0dldEZlbmNl
U3RhdHVzKWxvYWQoY29udGV4dCwgInZrR2V0RmVuY2VTdGF0dXMiKTsKKysgICAgdmtHZXRJbWFn
ZU1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cyls
b2FkKGNvbnRleHQsICJ2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzIik7CisrICAgIHZrR2V0
SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMgPSAoUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1v
cnlSZXF1aXJlbWVudHMpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVp
cmVtZW50cyIpOworKyAgICB2a0dldEltYWdlU3VicmVzb3VyY2VMYXlvdXQgPSAoUEZOX3ZrR2V0
SW1hZ2VTdWJyZXNvdXJjZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlU3VicmVzb3Vy
Y2VMYXlvdXQiKTsKKysgICAgdmtHZXRQaXBlbGluZUNhY2hlRGF0YSA9IChQRk5fdmtHZXRQaXBl
bGluZUNhY2hlRGF0YSlsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lQ2FjaGVEYXRhIik7Cisr
ICAgIHZrR2V0UXVlcnlQb29sUmVzdWx0cyA9IChQRk5fdmtHZXRRdWVyeVBvb2xSZXN1bHRzKWxv
YWQoY29udGV4dCwgInZrR2V0UXVlcnlQb29sUmVzdWx0cyIpOworKyAgICB2a0dldFJlbmRlckFy
ZWFHcmFudWxhcml0eSA9IChQRk5fdmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHkpbG9hZChjb250
ZXh0LCAidmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHkiKTsKKysgICAgdmtJbnZhbGlkYXRlTWFw
cGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMpbG9h
ZChjb250ZXh0LCAidmtJbnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzIik7CisrICAgIHZrTWFw
TWVtb3J5ID0gKFBGTl92a01hcE1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a01hcE1lbW9yeSIpOwor
KyAgICB2a01lcmdlUGlwZWxpbmVDYWNoZXMgPSAoUEZOX3ZrTWVyZ2VQaXBlbGluZUNhY2hlcyls
b2FkKGNvbnRleHQsICJ2a01lcmdlUGlwZWxpbmVDYWNoZXMiKTsKKysgICAgdmtRdWV1ZUJpbmRT
cGFyc2UgPSAoUEZOX3ZrUXVldWVCaW5kU3BhcnNlKWxvYWQoY29udGV4dCwgInZrUXVldWVCaW5k
U3BhcnNlIik7CisrICAgIHZrUXVldWVTdWJtaXQgPSAoUEZOX3ZrUXVldWVTdWJtaXQpbG9hZChj
b250ZXh0LCAidmtRdWV1ZVN1Ym1pdCIpOworKyAgICB2a1F1ZXVlV2FpdElkbGUgPSAoUEZOX3Zr
UXVldWVXYWl0SWRsZSlsb2FkKGNvbnRleHQsICJ2a1F1ZXVlV2FpdElkbGUiKTsKKysgICAgdmtS
ZXNldENvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrUmVzZXRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4
dCwgInZrUmVzZXRDb21tYW5kQnVmZmVyIik7CisrICAgIHZrUmVzZXRDb21tYW5kUG9vbCA9IChQ
Rk5fdmtSZXNldENvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrUmVzZXRDb21tYW5kUG9vbCIp
OworKyAgICB2a1Jlc2V0RGVzY3JpcHRvclBvb2wgPSAoUEZOX3ZrUmVzZXREZXNjcmlwdG9yUG9v
bClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0RGVzY3JpcHRvclBvb2wiKTsKKysgICAgdmtSZXNldEV2
ZW50ID0gKFBGTl92a1Jlc2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtSZXNldEV2ZW50Iik7Cisr
ICAgIHZrUmVzZXRGZW5jZXMgPSAoUEZOX3ZrUmVzZXRGZW5jZXMpbG9hZChjb250ZXh0LCAidmtS
ZXNldEZlbmNlcyIpOworKyAgICB2a1NldEV2ZW50ID0gKFBGTl92a1NldEV2ZW50KWxvYWQoY29u
dGV4dCwgInZrU2V0RXZlbnQiKTsKKysgICAgdmtVbm1hcE1lbW9yeSA9IChQRk5fdmtVbm1hcE1l
bW9yeSlsb2FkKGNvbnRleHQsICJ2a1VubWFwTWVtb3J5Iik7CisrICAgIHZrVXBkYXRlRGVzY3Jp
cHRvclNldHMgPSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldHMpbG9hZChjb250ZXh0LCAidmtV
cGRhdGVEZXNjcmlwdG9yU2V0cyIpOworKyAgICB2a1dhaXRGb3JGZW5jZXMgPSAoUEZOX3ZrV2Fp
dEZvckZlbmNlcylsb2FkKGNvbnRleHQsICJ2a1dhaXRGb3JGZW5jZXMiKTsKKyAjZW5kaWYgLyog
ZGVmaW5lZChWS19WRVJTSU9OXzFfMCkgKi8KKyAjaWYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkK
Ky0JdmtCaW5kQnVmZmVyTWVtb3J5MiA9IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5Milsb2FkKGNv
bnRleHQsICJ2a0JpbmRCdWZmZXJNZW1vcnkyIik7CistCXZrQmluZEltYWdlTWVtb3J5MiA9IChQ
Rk5fdmtCaW5kSW1hZ2VNZW1vcnkyKWxvYWQoY29udGV4dCwgInZrQmluZEltYWdlTWVtb3J5MiIp
OworLQl2a0NtZERpc3BhdGNoQmFzZSA9IChQRk5fdmtDbWREaXNwYXRjaEJhc2UpbG9hZChjb250
ZXh0LCAidmtDbWREaXNwYXRjaEJhc2UiKTsKKy0JdmtDbWRTZXREZXZpY2VNYXNrID0gKFBGTl92
a0NtZFNldERldmljZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXREZXZpY2VNYXNrIik7Cist
CXZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVU
ZW1wbGF0ZSIpOworLQl2a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24gPSAoUEZOX3ZrQ3Jl
YXRlU2FtcGxlclljYmNyQ29udmVyc2lvbilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNhbXBsZXJZ
Y2JjckNvbnZlcnNpb24iKTsKKy0JdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlID0g
KFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIik7CistCXZrRGVzdHJveVNhbXBsZXJZY2Jj
ckNvbnZlcnNpb24gPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb24pbG9hZChj
b250ZXh0LCAidmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbiIpOworLQl2a0dldEJ1ZmZl
ck1lbW9yeVJlcXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRz
Milsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIiKTsKKy0JdmtH
ZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydCA9IChQRk5fdmtHZXREZXNjcmlwdG9yU2V0TGF5
b3V0U3VwcG9ydClsb2FkKGNvbnRleHQsICJ2a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0
Iik7CistCXZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMgPSAoUEZOX3ZrR2V0RGV2
aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91
cFBlZXJNZW1vcnlGZWF0dXJlcyIpOworLQl2a0dldERldmljZVF1ZXVlMiA9IChQRk5fdmtHZXRE
ZXZpY2VRdWV1ZTIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VRdWV1ZTIiKTsKKy0JdmtHZXRJ
bWFnZU1lbW9yeVJlcXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVu
dHMyKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyIik7CistCXZr
R2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyID0gKFBGTl92a0dldEltYWdlU3BhcnNl
TWVtb3J5UmVxdWlyZW1lbnRzMilsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlU3BhcnNlTWVtb3J5
UmVxdWlyZW1lbnRzMiIpOworLQl2a1RyaW1Db21tYW5kUG9vbCA9IChQRk5fdmtUcmltQ29tbWFu
ZFBvb2wpbG9hZChjb250ZXh0LCAidmtUcmltQ29tbWFuZFBvb2wiKTsKKy0JdmtVcGRhdGVEZXNj
cmlwdG9yU2V0V2l0aFRlbXBsYXRlID0gKFBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVt
cGxhdGUpbG9hZChjb250ZXh0LCAidmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlIik7
CisrICAgIHZrQmluZEJ1ZmZlck1lbW9yeTIgPSAoUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeTIpbG9h
ZChjb250ZXh0LCAidmtCaW5kQnVmZmVyTWVtb3J5MiIpOworKyAgICB2a0JpbmRJbWFnZU1lbW9y
eTIgPSAoUEZOX3ZrQmluZEltYWdlTWVtb3J5Milsb2FkKGNvbnRleHQsICJ2a0JpbmRJbWFnZU1l
bW9yeTIiKTsKKysgICAgdmtDbWREaXNwYXRjaEJhc2UgPSAoUEZOX3ZrQ21kRGlzcGF0Y2hCYXNl
KWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hCYXNlIik7CisrICAgIHZrQ21kU2V0RGV2aWNl
TWFzayA9IChQRk5fdmtDbWRTZXREZXZpY2VNYXNrKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGV2
aWNlTWFzayIpOworKyAgICB2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZSA9IChQRk5f
dmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUpbG9hZChjb250ZXh0LCAidmtDcmVhdGVE
ZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUiKTsKKysgICAgdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252
ZXJzaW9uID0gKFBGTl92a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24pbG9hZChjb250ZXh0
LCAidmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uIik7CisrICAgIHZrRGVzdHJveURlc2Ny
aXB0b3JVcGRhdGVUZW1wbGF0ZSA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBs
YXRlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZSIpOwor
KyAgICB2a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uID0gKFBGTl92a0Rlc3Ryb3lTYW1w
bGVyWWNiY3JDb252ZXJzaW9uKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNhbXBsZXJZY2JjckNv
bnZlcnNpb24iKTsKKysgICAgdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyID0gKFBGTl92
a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJN
ZW1vcnlSZXF1aXJlbWVudHMyIik7CisrICAgIHZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBv
cnQgPSAoUEZOX3ZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBvcnQpbG9hZChjb250ZXh0LCAi
dmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydCIpOworKyAgICB2a0dldERldmljZUdyb3Vw
UGVlck1lbW9yeUZlYXR1cmVzID0gKFBGTl92a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1
cmVzKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMiKTsK
KysgICAgdmtHZXREZXZpY2VRdWV1ZTIgPSAoUEZOX3ZrR2V0RGV2aWNlUXVldWUyKWxvYWQoY29u
dGV4dCwgInZrR2V0RGV2aWNlUXVldWUyIik7CisrICAgIHZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJl
bWVudHMyID0gKFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMilsb2FkKGNvbnRleHQs
ICJ2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworKyAgICB2a0dldEltYWdlU3BhcnNl
TWVtb3J5UmVxdWlyZW1lbnRzMiA9IChQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVt
ZW50czIpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czIi
KTsKKysgICAgdmtUcmltQ29tbWFuZFBvb2wgPSAoUEZOX3ZrVHJpbUNvbW1hbmRQb29sKWxvYWQo
Y29udGV4dCwgInZrVHJpbUNvbW1hbmRQb29sIik7CisrICAgIHZrVXBkYXRlRGVzY3JpcHRvclNl
dFdpdGhUZW1wbGF0ZSA9IChQRk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlKWxv
YWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZSIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSAqLworICNpZiBkZWZpbmVkKFZLX0FNRF9idWZm
ZXJfbWFya2VyKQorLQl2a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1EID0gKFBGTl92a0NtZFdyaXRl
QnVmZmVyTWFya2VyQU1EKWxvYWQoY29udGV4dCwgInZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQi
KTsKKysgICAgdmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRCA9IChQRk5fdmtDbWRXcml0ZUJ1ZmZl
ck1hcmtlckFNRClsb2FkKGNvbnRleHQsICJ2a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1EIik7Cisg
I2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2J1ZmZlcl9tYXJrZXIpICovCisgI2lmIGRlZmluZWQo
VktfQU1EX2Rpc3BsYXlfbmF0aXZlX2hkcikKKy0JdmtTZXRMb2NhbERpbW1pbmdBTUQgPSAoUEZO
X3ZrU2V0TG9jYWxEaW1taW5nQU1EKWxvYWQoY29udGV4dCwgInZrU2V0TG9jYWxEaW1taW5nQU1E
Iik7CisrICAgIHZrU2V0TG9jYWxEaW1taW5nQU1EID0gKFBGTl92a1NldExvY2FsRGltbWluZ0FN
RClsb2FkKGNvbnRleHQsICJ2a1NldExvY2FsRGltbWluZ0FNRCIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0FNRF9kaXNwbGF5X25hdGl2ZV9oZHIpICovCisgI2lmIGRlZmluZWQoVktfQU1EX2Ry
YXdfaW5kaXJlY3RfY291bnQpCistCXZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EID0g
KFBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRClsb2FkKGNvbnRleHQsICJ2a0Nt
ZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRCIpOworLQl2a0NtZERyYXdJbmRpcmVjdENvdW50
QU1EID0gKFBGTl92a0NtZERyYXdJbmRpcmVjdENvdW50QU1EKWxvYWQoY29udGV4dCwgInZrQ21k
RHJhd0luZGlyZWN0Q291bnRBTUQiKTsKKysgICAgdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291
bnRBTUQgPSAoUEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EKWxvYWQoY29udGV4
dCwgInZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EIik7CisrICAgIHZrQ21kRHJhd0lu
ZGlyZWN0Q291bnRBTUQgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291bnRBTUQpbG9hZChjb250
ZXh0LCAidmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X0FNRF9kcmF3X2luZGlyZWN0X2NvdW50KSAqLworICNpZiBkZWZpbmVkKFZLX0FNRF9zaGFkZXJf
aW5mbykKKy0JdmtHZXRTaGFkZXJJbmZvQU1EID0gKFBGTl92a0dldFNoYWRlckluZm9BTUQpbG9h
ZChjb250ZXh0LCAidmtHZXRTaGFkZXJJbmZvQU1EIik7CisrICAgIHZrR2V0U2hhZGVySW5mb0FN
RCA9IChQRk5fdmtHZXRTaGFkZXJJbmZvQU1EKWxvYWQoY29udGV4dCwgInZrR2V0U2hhZGVySW5m
b0FNRCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0FNRF9zaGFkZXJfaW5mbykgKi8KKyAjaWYg
ZGVmaW5lZChWS19BTkRST0lEX2V4dGVybmFsX21lbW9yeV9hbmRyb2lkX2hhcmR3YXJlX2J1ZmZl
cikKKy0JdmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRCA9IChQRk5f
dmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRClsb2FkKGNvbnRleHQs
ICJ2a0dldEFuZHJvaWRIYXJkd2FyZUJ1ZmZlclByb3BlcnRpZXNBTkRST0lEIik7CistCXZrR2V0
TWVtb3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRCA9IChQRk5fdmtHZXRNZW1vcnlBbmRy
b2lkSGFyZHdhcmVCdWZmZXJBTkRST0lEKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5QW5kcm9p
ZEhhcmR3YXJlQnVmZmVyQU5EUk9JRCIpOworKyAgICB2a0dldEFuZHJvaWRIYXJkd2FyZUJ1ZmZl
clByb3BlcnRpZXNBTkRST0lEID0gKFBGTl92a0dldEFuZHJvaWRIYXJkd2FyZUJ1ZmZlclByb3Bl
cnRpZXNBTkRST0lEKWxvYWQoY29udGV4dCwgInZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJv
cGVydGllc0FORFJPSUQiKTsKKysgICAgdmtHZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVCdWZmZXJB
TkRST0lEID0gKFBGTl92a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQpbG9h
ZChjb250ZXh0LCAidmtHZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVCdWZmZXJBTkRST0lEIik7Cisg
I2VuZGlmIC8qIGRlZmluZWQoVktfQU5EUk9JRF9leHRlcm5hbF9tZW1vcnlfYW5kcm9pZF9oYXJk
d2FyZV9idWZmZXIpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2J1ZmZlcl9kZXZpY2VfYWRkcmVz
cykKKy0JdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUID0gKFBGTl92a0dldEJ1ZmZlckRldmlj
ZUFkZHJlc3NFWFQpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUIik7
CisrICAgIHZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VYVCA9IChQRk5fdmtHZXRCdWZmZXJEZXZp
Y2VBZGRyZXNzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VYVCIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9idWZmZXJfZGV2aWNlX2FkZHJlc3MpICovCisg
I2lmIGRlZmluZWQoVktfRVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcykKKy0JdmtHZXRDYWxpYnJh
dGVkVGltZXN0YW1wc0VYVCA9IChQRk5fdmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVClsb2Fk
KGNvbnRleHQsICJ2a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUIik7CisrICAgIHZrR2V0Q2Fs
aWJyYXRlZFRpbWVzdGFtcHNFWFQgPSAoUEZOX3ZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQp
bG9hZChjb250ZXh0LCAidmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVCIpOworICNlbmRpZiAv
KiBkZWZpbmVkKFZLX0VYVF9jYWxpYnJhdGVkX3RpbWVzdGFtcHMpICovCisgI2lmIGRlZmluZWQo
VktfRVhUX2NvbmRpdGlvbmFsX3JlbmRlcmluZykKKy0JdmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVu
ZGVyaW5nRVhUID0gKFBGTl92a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQpbG9hZChj
b250ZXh0LCAidmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIik7CistCXZrQ21kRW5k
Q29uZGl0aW9uYWxSZW5kZXJpbmdFWFQgPSAoUEZOX3ZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJp
bmdFWFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVCIpOwor
KyAgICB2a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQgPSAoUEZOX3ZrQ21kQmVnaW5D
b25kaXRpb25hbFJlbmRlcmluZ0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luQ29uZGl0aW9u
YWxSZW5kZXJpbmdFWFQiKTsKKysgICAgdmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVCA9
IChQRk5fdmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVClsb2FkKGNvbnRleHQsICJ2a0Nt
ZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhU
X2NvbmRpdGlvbmFsX3JlbmRlcmluZykgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfZGVidWdfbWFy
a2VyKQorLQl2a0NtZERlYnVnTWFya2VyQmVnaW5FWFQgPSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJC
ZWdpbkVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERlYnVnTWFya2VyQmVnaW5FWFQiKTsKKy0JdmtD
bWREZWJ1Z01hcmtlckVuZEVYVCA9IChQRk5fdmtDbWREZWJ1Z01hcmtlckVuZEVYVClsb2FkKGNv
bnRleHQsICJ2a0NtZERlYnVnTWFya2VyRW5kRVhUIik7CistCXZrQ21kRGVidWdNYXJrZXJJbnNl
cnRFWFQgPSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJJbnNlcnRFWFQpbG9hZChjb250ZXh0LCAidmtD
bWREZWJ1Z01hcmtlckluc2VydEVYVCIpOworLQl2a0RlYnVnTWFya2VyU2V0T2JqZWN0TmFtZUVY
VCA9IChQRk5fdmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQpbG9hZChjb250ZXh0LCAidmtE
ZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQiKTsKKy0JdmtEZWJ1Z01hcmtlclNldE9iamVjdFRh
Z0VYVCA9IChQRk5fdmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVClsb2FkKGNvbnRleHQsICJ2
a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUIik7CisrICAgIHZrQ21kRGVidWdNYXJrZXJCZWdp
bkVYVCA9IChQRk5fdmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUKWxvYWQoY29udGV4dCwgInZrQ21k
RGVidWdNYXJrZXJCZWdpbkVYVCIpOworKyAgICB2a0NtZERlYnVnTWFya2VyRW5kRVhUID0gKFBG
Tl92a0NtZERlYnVnTWFya2VyRW5kRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRGVidWdNYXJrZXJF
bmRFWFQiKTsKKysgICAgdmtDbWREZWJ1Z01hcmtlckluc2VydEVYVCA9IChQRk5fdmtDbWREZWJ1
Z01hcmtlckluc2VydEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERlYnVnTWFya2VySW5zZXJ0RVhU
Iik7CisrICAgIHZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUID0gKFBGTl92a0RlYnVnTWFy
a2VyU2V0T2JqZWN0TmFtZUVYVClsb2FkKGNvbnRleHQsICJ2a0RlYnVnTWFya2VyU2V0T2JqZWN0
TmFtZUVYVCIpOworKyAgICB2a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUID0gKFBGTl92a0Rl
YnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUKWxvYWQoY29udGV4dCwgInZrRGVidWdNYXJrZXJTZXRP
YmplY3RUYWdFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZGVidWdfbWFya2VyKSAq
LworICNpZiBkZWZpbmVkKFZLX0VYVF9kaXNjYXJkX3JlY3RhbmdsZXMpCistCXZrQ21kU2V0RGlz
Y2FyZFJlY3RhbmdsZUVYVCA9IChQRk5fdmtDbWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUKWxvYWQo
Y29udGV4dCwgInZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVCIpOworKyAgICB2a0NtZFNldERp
c2NhcmRSZWN0YW5nbGVFWFQgPSAoUEZOX3ZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVClsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldERpc2NhcmRSZWN0YW5nbGVFWFQiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19FWFRfZGlzY2FyZF9yZWN0YW5nbGVzKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9k
aXNwbGF5X2NvbnRyb2wpCistCXZrRGlzcGxheVBvd2VyQ29udHJvbEVYVCA9IChQRk5fdmtEaXNw
bGF5UG93ZXJDb250cm9sRVhUKWxvYWQoY29udGV4dCwgInZrRGlzcGxheVBvd2VyQ29udHJvbEVY
VCIpOworLQl2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQgPSAoUEZOX3ZrR2V0U3dhcGNoYWluQ291
bnRlckVYVClsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQiKTsKKy0JdmtS
ZWdpc3RlckRldmljZUV2ZW50RVhUID0gKFBGTl92a1JlZ2lzdGVyRGV2aWNlRXZlbnRFWFQpbG9h
ZChjb250ZXh0LCAidmtSZWdpc3RlckRldmljZUV2ZW50RVhUIik7CistCXZrUmVnaXN0ZXJEaXNw
bGF5RXZlbnRFWFQgPSAoUEZOX3ZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQpbG9hZChjb250ZXh0
LCAidmtSZWdpc3RlckRpc3BsYXlFdmVudEVYVCIpOworKyAgICB2a0Rpc3BsYXlQb3dlckNvbnRy
b2xFWFQgPSAoUEZOX3ZrRGlzcGxheVBvd2VyQ29udHJvbEVYVClsb2FkKGNvbnRleHQsICJ2a0Rp
c3BsYXlQb3dlckNvbnRyb2xFWFQiKTsKKysgICAgdmtHZXRTd2FwY2hhaW5Db3VudGVyRVhUID0g
KFBGTl92a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQpbG9hZChjb250ZXh0LCAidmtHZXRTd2FwY2hh
aW5Db3VudGVyRVhUIik7CisrICAgIHZrUmVnaXN0ZXJEZXZpY2VFdmVudEVYVCA9IChQRk5fdmtS
ZWdpc3RlckRldmljZUV2ZW50RVhUKWxvYWQoY29udGV4dCwgInZrUmVnaXN0ZXJEZXZpY2VFdmVu
dEVYVCIpOworKyAgICB2a1JlZ2lzdGVyRGlzcGxheUV2ZW50RVhUID0gKFBGTl92a1JlZ2lzdGVy
RGlzcGxheUV2ZW50RVhUKWxvYWQoY29udGV4dCwgInZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZGlzcGxheV9jb250cm9sKSAqLworICNpZiBk
ZWZpbmVkKFZLX0VYVF9leHRlcm5hbF9tZW1vcnlfaG9zdCkKKy0JdmtHZXRNZW1vcnlIb3N0UG9p
bnRlclByb3BlcnRpZXNFWFQgPSAoUEZOX3ZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVz
RVhUKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzRVhUIik7
CisrICAgIHZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzRVhUID0gKFBGTl92a0dldE1l
bW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVClsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeUhv
c3RQb2ludGVyUHJvcGVydGllc0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9leHRl
cm5hbF9tZW1vcnlfaG9zdCkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhj
bHVzaXZlKQorLQl2a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCA9IChQRk5fdmtB
Y3F1aXJlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQpbG9hZChjb250ZXh0LCAidmtBY3F1aXJl
RnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQiKTsKKy0JdmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1
c2l2ZU1vZGVFWFQgPSAoUEZOX3ZrUmVsZWFzZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUKWxv
YWQoY29udGV4dCwgInZrUmVsZWFzZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIik7CisrICAg
IHZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUID0gKFBGTl92a0FjcXVpcmVGdWxs
U2NyZWVuRXhjbHVzaXZlTW9kZUVYVClsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVGdWxsU2NyZWVu
RXhjbHVzaXZlTW9kZUVYVCIpOworKyAgICB2a1JlbGVhc2VGdWxsU2NyZWVuRXhjbHVzaXZlTW9k
ZUVYVCA9IChQRk5fdmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQpbG9hZChjb250
ZXh0LCAidmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQiKTsKKyAjZW5kaWYgLyog
ZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAqLworICNpZiBkZWZpbmVkKFZL
X0VYVF9oZHJfbWV0YWRhdGEpCistCXZrU2V0SGRyTWV0YWRhdGFFWFQgPSAoUEZOX3ZrU2V0SGRy
TWV0YWRhdGFFWFQpbG9hZChjb250ZXh0LCAidmtTZXRIZHJNZXRhZGF0YUVYVCIpOworKyAgICB2
a1NldEhkck1ldGFkYXRhRVhUID0gKFBGTl92a1NldEhkck1ldGFkYXRhRVhUKWxvYWQoY29udGV4
dCwgInZrU2V0SGRyTWV0YWRhdGFFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfaGRy
X21ldGFkYXRhKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9ob3N0X3F1ZXJ5X3Jlc2V0KQorLQl2
a1Jlc2V0UXVlcnlQb29sRVhUID0gKFBGTl92a1Jlc2V0UXVlcnlQb29sRVhUKWxvYWQoY29udGV4
dCwgInZrUmVzZXRRdWVyeVBvb2xFWFQiKTsKKysgICAgdmtSZXNldFF1ZXJ5UG9vbEVYVCA9IChQ
Rk5fdmtSZXNldFF1ZXJ5UG9vbEVYVClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0UXVlcnlQb29sRVhU
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2hvc3RfcXVlcnlfcmVzZXQpICovCisgI2lm
IGRlZmluZWQoVktfRVhUX2ltYWdlX2RybV9mb3JtYXRfbW9kaWZpZXIpCistCXZrR2V0SW1hZ2VE
cm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNFWFQgPSAoUEZOX3ZrR2V0SW1hZ2VEcm1Gb3JtYXRN
b2RpZmllclByb3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZURybUZvcm1hdE1v
ZGlmaWVyUHJvcGVydGllc0VYVCIpOworKyAgICB2a0dldEltYWdlRHJtRm9ybWF0TW9kaWZpZXJQ
cm9wZXJ0aWVzRVhUID0gKFBGTl92a0dldEltYWdlRHJtRm9ybWF0TW9kaWZpZXJQcm9wZXJ0aWVz
RVhUKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNF
WFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfaW1hZ2VfZHJtX2Zvcm1hdF9tb2RpZmll
cikgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfbGluZV9yYXN0ZXJpemF0aW9uKQorLQl2a0NtZFNl
dExpbmVTdGlwcGxlRVhUID0gKFBGTl92a0NtZFNldExpbmVTdGlwcGxlRVhUKWxvYWQoY29udGV4
dCwgInZrQ21kU2V0TGluZVN0aXBwbGVFWFQiKTsKKysgICAgdmtDbWRTZXRMaW5lU3RpcHBsZUVY
VCA9IChQRk5fdmtDbWRTZXRMaW5lU3RpcHBsZUVYVClsb2FkKGNvbnRleHQsICJ2a0NtZFNldExp
bmVTdGlwcGxlRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2xpbmVfcmFzdGVyaXph
dGlvbikgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfc2FtcGxlX2xvY2F0aW9ucykKKy0JdmtDbWRT
ZXRTYW1wbGVMb2NhdGlvbnNFWFQgPSAoUEZOX3ZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUKWxv
YWQoY29udGV4dCwgInZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUIik7CisrICAgIHZrQ21kU2V0
U2FtcGxlTG9jYXRpb25zRVhUID0gKFBGTl92a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVClsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVCIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0VYVF9zYW1wbGVfbG9jYXRpb25zKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF90cmFu
c2Zvcm1fZmVlZGJhY2spCistCXZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQgPSAoUEZOX3ZrQ21k
QmVnaW5RdWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblF1ZXJ5SW5kZXhl
ZEVYVCIpOworLQl2a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQgPSAoUEZOX3ZrQ21kQmVn
aW5UcmFuc2Zvcm1GZWVkYmFja0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2tFWFQiKTsKKy0JdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUID0g
KFBGTl92a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQpbG9hZChjb250ZXh0LCAi
dmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUIik7CistCXZrQ21kRHJhd0luZGly
ZWN0Qnl0ZUNvdW50RVhUID0gKFBGTl92a0NtZERyYXdJbmRpcmVjdEJ5dGVDb3VudEVYVClsb2Fk
KGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdEJ5dGVDb3VudEVYVCIpOworLQl2a0NtZEVuZFF1
ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0
LCAidmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQiKTsKKy0JdmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFj
a0VYVCA9IChQRk5fdmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFja0VYVClsb2FkKGNvbnRleHQsICJ2
a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUIik7CisrICAgIHZrQ21kQmVnaW5RdWVyeUluZGV4
ZWRFWFQgPSAoUEZOX3ZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0LCAidmtD
bWRCZWdpblF1ZXJ5SW5kZXhlZEVYVCIpOworKyAgICB2a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2tFWFQgPSAoUEZOX3ZrQ21kQmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVClsb2FkKGNvbnRleHQs
ICJ2a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQiKTsKKysgICAgdmtDbWRCaW5kVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJzRVhUID0gKFBGTl92a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlcnNFWFQpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJz
RVhUIik7CisrICAgIHZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUID0gKFBGTl92a0NtZERy
YXdJbmRpcmVjdEJ5dGVDb3VudEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdEJ5
dGVDb3VudEVYVCIpOworKyAgICB2a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRF
bmRRdWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQi
KTsKKysgICAgdmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFja0VYVCA9IChQRk5fdmtDbWRFbmRUcmFu
c2Zvcm1GZWVkYmFja0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNr
RVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX3RyYW5zZm9ybV9mZWVkYmFjaykgKi8K
KyAjaWYgZGVmaW5lZChWS19FWFRfdmFsaWRhdGlvbl9jYWNoZSkKKy0JdmtDcmVhdGVWYWxpZGF0
aW9uQ2FjaGVFWFQgPSAoUEZOX3ZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhUKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhUIik7CistCXZrRGVzdHJveVZhbGlkYXRpb25D
YWNoZUVYVCA9IChQRk5fdmtEZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVCIpOworLQl2a0dldFZhbGlkYXRpb25DYWNoZURh
dGFFWFQgPSAoUEZOX3ZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVYVClsb2FkKGNvbnRleHQsICJ2
a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQiKTsKKy0JdmtNZXJnZVZhbGlkYXRpb25DYWNoZXNF
WFQgPSAoUEZOX3ZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVzRVhUKWxvYWQoY29udGV4dCwgInZrTWVy
Z2VWYWxpZGF0aW9uQ2FjaGVzRVhUIik7CisrICAgIHZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhU
ID0gKFBGTl92a0NyZWF0ZVZhbGlkYXRpb25DYWNoZUVYVClsb2FkKGNvbnRleHQsICJ2a0NyZWF0
ZVZhbGlkYXRpb25DYWNoZUVYVCIpOworKyAgICB2a0Rlc3Ryb3lWYWxpZGF0aW9uQ2FjaGVFWFQg
PSAoUEZOX3ZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ry
b3lWYWxpZGF0aW9uQ2FjaGVFWFQiKTsKKysgICAgdmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRhRVhU
ID0gKFBGTl92a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQpbG9hZChjb250ZXh0LCAidmtHZXRW
YWxpZGF0aW9uQ2FjaGVEYXRhRVhUIik7CisrICAgIHZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVzRVhU
ID0gKFBGTl92a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVClsb2FkKGNvbnRleHQsICJ2a01lcmdl
VmFsaWRhdGlvbkNhY2hlc0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF92YWxpZGF0
aW9uX2NhY2hlKSAqLworICNpZiBkZWZpbmVkKFZLX0dPT0dMRV9kaXNwbGF5X3RpbWluZykKKy0J
dmtHZXRQYXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFID0gKFBGTl92a0dldFBhc3RQcmVzZW50
YXRpb25UaW1pbmdHT09HTEUpbG9hZChjb250ZXh0LCAidmtHZXRQYXN0UHJlc2VudGF0aW9uVGlt
aW5nR09PR0xFIik7CistCXZrR2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUgPSAoUEZOX3Zr
R2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUpbG9hZChjb250ZXh0LCAidmtHZXRSZWZyZXNo
Q3ljbGVEdXJhdGlvbkdPT0dMRSIpOworKyAgICB2a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdH
T09HTEUgPSAoUEZOX3ZrR2V0UGFzdFByZXNlbnRhdGlvblRpbWluZ0dPT0dMRSlsb2FkKGNvbnRl
eHQsICJ2a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUiKTsKKysgICAgdmtHZXRSZWZy
ZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRSA9IChQRk5fdmtHZXRSZWZyZXNoQ3ljbGVEdXJhdGlvbkdP
T0dMRSlsb2FkKGNvbnRleHQsICJ2a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFIik7Cisg
I2VuZGlmIC8qIGRlZmluZWQoVktfR09PR0xFX2Rpc3BsYXlfdGltaW5nKSAqLworICNpZiBkZWZp
bmVkKFZLX0lOVEVMX3BlcmZvcm1hbmNlX3F1ZXJ5KQorLQl2a0FjcXVpcmVQZXJmb3JtYW5jZUNv
bmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9u
SU5URUwpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5U
RUwiKTsKKy0JdmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMID0gKFBGTl92a0NtZFNldFBl
cmZvcm1hbmNlTWFya2VySU5URUwpbG9hZChjb250ZXh0LCAidmtDbWRTZXRQZXJmb3JtYW5jZU1h
cmtlcklOVEVMIik7CistCXZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVMID0gKFBGTl92
a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJpZGVJTlRFTClsb2FkKGNvbnRleHQsICJ2a0NtZFNldFBl
cmZvcm1hbmNlT3ZlcnJpZGVJTlRFTCIpOworLQl2a0NtZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFy
a2VySU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTClsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2VySU5URUwiKTsKKy0JdmtH
ZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMID0gKFBGTl92a0dldFBlcmZvcm1hbmNlUGFyYW1l
dGVySU5URUwpbG9hZChjb250ZXh0LCAidmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMIik7
CistCXZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwgPSAoUEZOX3ZrSW5pdGlhbGl6ZVBl
cmZvcm1hbmNlQXBpSU5URUwpbG9hZChjb250ZXh0LCAidmtJbml0aWFsaXplUGVyZm9ybWFuY2VB
cGlJTlRFTCIpOworLQl2a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgPSAo
UEZOX3ZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTClsb2FkKGNvbnRleHQs
ICJ2a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwiKTsKKy0JdmtSZWxlYXNl
UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgPSAoUEZOX3ZrUmVsZWFzZVBlcmZvcm1hbmNl
Q29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29udGV4dCwgInZrUmVsZWFzZVBlcmZvcm1hbmNlQ29u
ZmlndXJhdGlvbklOVEVMIik7CistCXZrVW5pbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCA9
IChQRk5fdmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMKWxvYWQoY29udGV4dCwgInZr
VW5pbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCIpOworKyAgICB2a0FjcXVpcmVQZXJmb3Jt
YW5jZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1
cmF0aW9uSU5URUwpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0
aW9uSU5URUwiKTsKKysgICAgdmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMID0gKFBGTl92
a0NtZFNldFBlcmZvcm1hbmNlTWFya2VySU5URUwpbG9hZChjb250ZXh0LCAidmtDbWRTZXRQZXJm
b3JtYW5jZU1hcmtlcklOVEVMIik7CisrICAgIHZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlO
VEVMID0gKFBGTl92a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJpZGVJTlRFTClsb2FkKGNvbnRleHQs
ICJ2a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJpZGVJTlRFTCIpOworKyAgICB2a0NtZFNldFBlcmZv
cm1hbmNlU3RyZWFtTWFya2VySU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1N
YXJrZXJJTlRFTClsb2FkKGNvbnRleHQsICJ2a0NtZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2Vy
SU5URUwiKTsKKysgICAgdmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMID0gKFBGTl92a0dl
dFBlcmZvcm1hbmNlUGFyYW1ldGVySU5URUwpbG9hZChjb250ZXh0LCAidmtHZXRQZXJmb3JtYW5j
ZVBhcmFtZXRlcklOVEVMIik7CisrICAgIHZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwg
PSAoUEZOX3ZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwpbG9hZChjb250ZXh0LCAidmtJ
bml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCIpOworKyAgICB2a1F1ZXVlU2V0UGVyZm9ybWFu
Y2VDb25maWd1cmF0aW9uSU5URUwgPSAoUEZOX3ZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3Vy
YXRpb25JTlRFTClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0
aW9uSU5URUwiKTsKKysgICAgdmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwg
PSAoUEZOX3ZrUmVsZWFzZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29udGV4
dCwgInZrUmVsZWFzZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMIik7CisrICAgIHZrVW5p
bml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCA9IChQRk5fdmtVbmluaXRpYWxpemVQZXJmb3Jt
YW5jZUFwaUlOVEVMKWxvYWQoY29udGV4dCwgInZrVW5pbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJ
TlRFTCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0lOVEVMX3BlcmZvcm1hbmNlX3F1ZXJ5KSAq
LworICNpZiBkZWZpbmVkKFZLX0tIUl9iaW5kX21lbW9yeTIpCistCXZrQmluZEJ1ZmZlck1lbW9y
eTJLSFIgPSAoUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeTJLSFIpbG9hZChjb250ZXh0LCAidmtCaW5k
QnVmZmVyTWVtb3J5MktIUiIpOworLQl2a0JpbmRJbWFnZU1lbW9yeTJLSFIgPSAoUEZOX3ZrQmlu
ZEltYWdlTWVtb3J5MktIUilsb2FkKGNvbnRleHQsICJ2a0JpbmRJbWFnZU1lbW9yeTJLSFIiKTsK
KysgICAgdmtCaW5kQnVmZmVyTWVtb3J5MktIUiA9IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5MktI
Uilsb2FkKGNvbnRleHQsICJ2a0JpbmRCdWZmZXJNZW1vcnkyS0hSIik7CisrICAgIHZrQmluZElt
YWdlTWVtb3J5MktIUiA9IChQRk5fdmtCaW5kSW1hZ2VNZW1vcnkyS0hSKWxvYWQoY29udGV4dCwg
InZrQmluZEltYWdlTWVtb3J5MktIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9iaW5k
X21lbW9yeTIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2J1ZmZlcl9kZXZpY2VfYWRkcmVzcykK
Ky0JdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSID0gKFBGTl92a0dldEJ1ZmZlckRldmljZUFk
ZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSIik7Cist
CXZrR2V0QnVmZmVyT3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIgPSAoUEZOX3ZrR2V0QnVmZmVyT3Bh
cXVlQ2FwdHVyZUFkZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJPcGFxdWVDYXB0
dXJlQWRkcmVzc0tIUiIpOworLQl2a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNz
S0hSID0gKFBGTl92a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIiKTsKKysg
ICAgdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSID0gKFBGTl92a0dldEJ1ZmZlckRldmljZUFk
ZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSIik7Cisr
ICAgIHZrR2V0QnVmZmVyT3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIgPSAoUEZOX3ZrR2V0QnVmZmVy
T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJPcGFxdWVD
YXB0dXJlQWRkcmVzc0tIUiIpOworKyAgICB2a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVB
ZGRyZXNzS0hSID0gKFBGTl92a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfYnVmZmVyX2RldmljZV9hZGRyZXNzKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0tIUl9jcmVhdGVfcmVuZGVycGFzczIpCistCXZrQ21kQmVnaW5SZW5k
ZXJQYXNzMktIUiA9IChQRk5fdmtDbWRCZWdpblJlbmRlclBhc3MyS0hSKWxvYWQoY29udGV4dCwg
InZrQ21kQmVnaW5SZW5kZXJQYXNzMktIUiIpOworLQl2a0NtZEVuZFJlbmRlclBhc3MyS0hSID0g
KFBGTl92a0NtZEVuZFJlbmRlclBhc3MyS0hSKWxvYWQoY29udGV4dCwgInZrQ21kRW5kUmVuZGVy
UGFzczJLSFIiKTsKKy0JdmtDbWROZXh0U3VicGFzczJLSFIgPSAoUEZOX3ZrQ21kTmV4dFN1YnBh
c3MyS0hSKWxvYWQoY29udGV4dCwgInZrQ21kTmV4dFN1YnBhc3MyS0hSIik7CistCXZrQ3JlYXRl
UmVuZGVyUGFzczJLSFIgPSAoUEZOX3ZrQ3JlYXRlUmVuZGVyUGFzczJLSFIpbG9hZChjb250ZXh0
LCAidmtDcmVhdGVSZW5kZXJQYXNzMktIUiIpOworKyAgICB2a0NtZEJlZ2luUmVuZGVyUGFzczJL
SFIgPSAoUEZOX3ZrQ21kQmVnaW5SZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQsICJ2a0NtZEJl
Z2luUmVuZGVyUGFzczJLSFIiKTsKKysgICAgdmtDbWRFbmRSZW5kZXJQYXNzMktIUiA9IChQRk5f
dmtDbWRFbmRSZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFJlbmRlclBhc3My
S0hSIik7CisrICAgIHZrQ21kTmV4dFN1YnBhc3MyS0hSID0gKFBGTl92a0NtZE5leHRTdWJwYXNz
MktIUilsb2FkKGNvbnRleHQsICJ2a0NtZE5leHRTdWJwYXNzMktIUiIpOworKyAgICB2a0NyZWF0
ZVJlbmRlclBhc3MyS0hSID0gKFBGTl92a0NyZWF0ZVJlbmRlclBhc3MyS0hSKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlUmVuZGVyUGFzczJLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJf
Y3JlYXRlX3JlbmRlcnBhc3MyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9kZXNjcmlwdG9yX3Vw
ZGF0ZV90ZW1wbGF0ZSkKKy0JdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIgPSAo
UEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZr
Q3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSIik7CistCXZrRGVzdHJveURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBs
YXRlS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtI
UiIpOworLQl2a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIgPSAoUEZOX3ZrVXBk
YXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUilsb2FkKGNvbnRleHQsICJ2a1VwZGF0ZURl
c2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIiKTsKKysgICAgdmtDcmVhdGVEZXNjcmlwdG9yVXBk
YXRlVGVtcGxhdGVLSFIgPSAoUEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hS
KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSIik7Cisr
ICAgIHZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5fdmtEZXN0cm95
RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2Ny
aXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiIpOworKyAgICB2a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRo
VGVtcGxhdGVLSFIgPSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUils
b2FkKGNvbnRleHQsICJ2a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIiKTsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZGVzY3JpcHRvcl91cGRhdGVfdGVtcGxhdGUpICovCisg
I2lmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkKKy0JdmtDbWREaXNwYXRjaEJhc2VLSFIg
PSAoUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlS0hSKWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hC
YXNlS0hSIik7CistCXZrQ21kU2V0RGV2aWNlTWFza0tIUiA9IChQRk5fdmtDbWRTZXREZXZpY2VN
YXNrS0hSKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGV2aWNlTWFza0tIUiIpOworLQl2a0dldERl
dmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzS0hSID0gKFBGTl92a0dldERldmljZUdyb3VwUGVl
ck1lbW9yeUZlYXR1cmVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBQZWVyTWVt
b3J5RmVhdHVyZXNLSFIiKTsKKysgICAgdmtDbWREaXNwYXRjaEJhc2VLSFIgPSAoUEZOX3ZrQ21k
RGlzcGF0Y2hCYXNlS0hSKWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hCYXNlS0hSIik7Cisr
ICAgIHZrQ21kU2V0RGV2aWNlTWFza0tIUiA9IChQRk5fdmtDbWRTZXREZXZpY2VNYXNrS0hSKWxv
YWQoY29udGV4dCwgInZrQ21kU2V0RGV2aWNlTWFza0tIUiIpOworKyAgICB2a0dldERldmljZUdy
b3VwUGVlck1lbW9yeUZlYXR1cmVzS0hSID0gKFBGTl92a0dldERldmljZUdyb3VwUGVlck1lbW9y
eUZlYXR1cmVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVh
dHVyZXNLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0tIUl9kaXNwbGF5X3N3YXBjaGFpbikKKy0JdmtDcmVhdGVTaGFyZWRT
d2FwY2hhaW5zS0hSID0gKFBGTl92a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVTaGFyZWRTd2FwY2hhaW5zS0hSIik7CisrICAgIHZrQ3JlYXRlU2hhcmVk
U3dhcGNoYWluc0tIUiA9IChQRk5fdmtDcmVhdGVTaGFyZWRTd2FwY2hhaW5zS0hSKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0tIUl9kaXNwbGF5X3N3YXBjaGFpbikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZHJhd19p
bmRpcmVjdF9jb3VudCkKKy0JdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIgPSAoUEZO
X3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50S0hSKWxvYWQoY29udGV4dCwgInZrQ21kRHJh
d0luZGV4ZWRJbmRpcmVjdENvdW50S0hSIik7CistCXZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFIg
PSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFIpbG9hZChjb250ZXh0LCAidmtDbWREcmF3
SW5kaXJlY3RDb3VudEtIUiIpOworKyAgICB2a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEtI
UiA9IChQRk5fdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIpbG9hZChjb250ZXh0LCAi
dmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIiKTsKKysgICAgdmtDbWREcmF3SW5kaXJl
Y3RDb3VudEtIUiA9IChQRk5fdmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUilsb2FkKGNvbnRleHQs
ICJ2a0NtZERyYXdJbmRpcmVjdENvdW50S0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hS
X2RyYXdfaW5kaXJlY3RfY291bnQpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX2Zl
bmNlX2ZkKQorLQl2a0dldEZlbmNlRmRLSFIgPSAoUEZOX3ZrR2V0RmVuY2VGZEtIUilsb2FkKGNv
bnRleHQsICJ2a0dldEZlbmNlRmRLSFIiKTsKKy0JdmtJbXBvcnRGZW5jZUZkS0hSID0gKFBGTl92
a0ltcG9ydEZlbmNlRmRLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRGZW5jZUZkS0hSIik7Cisr
ICAgIHZrR2V0RmVuY2VGZEtIUiA9IChQRk5fdmtHZXRGZW5jZUZkS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0RmVuY2VGZEtIUiIpOworKyAgICB2a0ltcG9ydEZlbmNlRmRLSFIgPSAoUEZOX3ZrSW1w
b3J0RmVuY2VGZEtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydEZlbmNlRmRLSFIiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2VfZmQpICovCisgI2lmIGRlZmluZWQo
VktfS0hSX2V4dGVybmFsX2ZlbmNlX3dpbjMyKQorLQl2a0dldEZlbmNlV2luMzJIYW5kbGVLSFIg
PSAoUEZOX3ZrR2V0RmVuY2VXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0dldEZlbmNl
V2luMzJIYW5kbGVLSFIiKTsKKy0JdmtJbXBvcnRGZW5jZVdpbjMySGFuZGxlS0hSID0gKFBGTl92
a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRGZW5jZVdp
bjMySGFuZGxlS0hSIik7CisrICAgIHZrR2V0RmVuY2VXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtH
ZXRGZW5jZVdpbjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RmVuY2VXaW4zMkhhbmRs
ZUtIUiIpOworKyAgICB2a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrSW1wb3J0
RmVuY2VXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydEZlbmNlV2luMzJIYW5k
bGVLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2Vfd2luMzIp
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX21lbW9yeV9mZCkKKy0JdmtHZXRNZW1v
cnlGZEtIUiA9IChQRk5fdmtHZXRNZW1vcnlGZEtIUilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9y
eUZkS0hSIik7CistCXZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldE1lbW9y
eUZkUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeUZkUHJvcGVydGllc0tI
UiIpOworKyAgICB2a0dldE1lbW9yeUZkS0hSID0gKFBGTl92a0dldE1lbW9yeUZkS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0TWVtb3J5RmRLSFIiKTsKKysgICAgdmtHZXRNZW1vcnlGZFByb3BlcnRp
ZXNLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2V4
dGVybmFsX21lbW9yeV9mZCkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5
X3dpbjMyKQorLQl2a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0dldE1lbW9yeVdp
bjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5V2luMzJIYW5kbGVLSFIiKTsK
Ky0JdmtHZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5
V2luMzJIYW5kbGVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5V2luMzJI
YW5kbGVQcm9wZXJ0aWVzS0hSIik7CisrICAgIHZrR2V0TWVtb3J5V2luMzJIYW5kbGVLSFIgPSAo
UEZOX3ZrR2V0TWVtb3J5V2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlX
aW4zMkhhbmRsZUtIUiIpOworKyAgICB2a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tI
UiA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0
LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNLSFIiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5X3dpbjMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tI
Ul9leHRlcm5hbF9zZW1hcGhvcmVfZmQpCistCXZrR2V0U2VtYXBob3JlRmRLSFIgPSAoUEZOX3Zr
R2V0U2VtYXBob3JlRmRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRTZW1hcGhvcmVGZEtIUiIpOwor
LQl2a0ltcG9ydFNlbWFwaG9yZUZkS0hSID0gKFBGTl92a0ltcG9ydFNlbWFwaG9yZUZkS0hSKWxv
YWQoY29udGV4dCwgInZrSW1wb3J0U2VtYXBob3JlRmRLSFIiKTsKKysgICAgdmtHZXRTZW1hcGhv
cmVGZEtIUiA9IChQRk5fdmtHZXRTZW1hcGhvcmVGZEtIUilsb2FkKGNvbnRleHQsICJ2a0dldFNl
bWFwaG9yZUZkS0hSIik7CisrICAgIHZrSW1wb3J0U2VtYXBob3JlRmRLSFIgPSAoUEZOX3ZrSW1w
b3J0U2VtYXBob3JlRmRLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRTZW1hcGhvcmVGZEtIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfZmQpICovCisg
I2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV93aW4zMikKKy0JdmtHZXRTZW1h
cGhvcmVXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtHZXRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUils
b2FkKGNvbnRleHQsICJ2a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSIik7CistCXZrSW1wb3J0
U2VtYXBob3JlV2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrSW1wb3J0U2VtYXBob3JlV2luMzJIYW5k
bGVLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiIpOwor
KyAgICB2a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0dldFNlbWFwaG9yZVdp
bjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIi
KTsKKysgICAgdmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtJbXBvcnRT
ZW1hcGhvcmVXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydFNlbWFwaG9yZVdp
bjMySGFuZGxlS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX3NlbWFw
aG9yZV93aW4zMikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZ2V0X21lbW9yeV9yZXF1aXJlbWVu
dHMyKQorLQl2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZOX3ZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9y
eVJlcXVpcmVtZW50czJLSFIiKTsKKy0JdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czJLSFIg
PSAoUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7CistCXZrR2V0SW1hZ2VTcGFyc2VNZW1v
cnlSZXF1aXJlbWVudHMyS0hSID0gKFBGTl92a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1l
bnRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRz
MktIUiIpOworKyAgICB2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZOX3Zr
R2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZl
ck1lbW9yeVJlcXVpcmVtZW50czJLSFIiKTsKKysgICAgdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVt
ZW50czJLSFIgPSAoUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxvYWQoY29u
dGV4dCwgInZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7CisrICAgIHZrR2V0SW1h
Z2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSID0gKFBGTl92a0dldEltYWdlU3BhcnNlTWVt
b3J5UmVxdWlyZW1lbnRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlU3BhcnNlTWVtb3J5
UmVxdWlyZW1lbnRzMktIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9nZXRfbWVtb3J5
X3JlcXVpcmVtZW50czIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX21haW50ZW5hbmNlMSkKKy0J
dmtUcmltQ29tbWFuZFBvb2xLSFIgPSAoUEZOX3ZrVHJpbUNvbW1hbmRQb29sS0hSKWxvYWQoY29u
dGV4dCwgInZrVHJpbUNvbW1hbmRQb29sS0hSIik7CisrICAgIHZrVHJpbUNvbW1hbmRQb29sS0hS
ID0gKFBGTl92a1RyaW1Db21tYW5kUG9vbEtIUilsb2FkKGNvbnRleHQsICJ2a1RyaW1Db21tYW5k
UG9vbEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTEpICovCisg
I2lmIGRlZmluZWQoVktfS0hSX21haW50ZW5hbmNlMykKKy0JdmtHZXREZXNjcmlwdG9yU2V0TGF5
b3V0U3VwcG9ydEtIUiA9IChQRk5fdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydEtIUils
b2FkKGNvbnRleHQsICJ2a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSIik7CisrICAg
IHZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBvcnRLSFIgPSAoUEZOX3ZrR2V0RGVzY3JpcHRv
clNldExheW91dFN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXREZXNjcmlwdG9yU2V0TGF5
b3V0U3VwcG9ydEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTMp
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX3BlcmZvcm1hbmNlX3F1ZXJ5KQorLQl2a0FjcXVpcmVQ
cm9maWxpbmdMb2NrS0hSID0gKFBGTl92a0FjcXVpcmVQcm9maWxpbmdMb2NrS0hSKWxvYWQoY29u
dGV4dCwgInZrQWNxdWlyZVByb2ZpbGluZ0xvY2tLSFIiKTsKKy0JdmtSZWxlYXNlUHJvZmlsaW5n
TG9ja0tIUiA9IChQRk5fdmtSZWxlYXNlUHJvZmlsaW5nTG9ja0tIUilsb2FkKGNvbnRleHQsICJ2
a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSIik7CisrICAgIHZrQWNxdWlyZVByb2ZpbGluZ0xvY2tL
SFIgPSAoUEZOX3ZrQWNxdWlyZVByb2ZpbGluZ0xvY2tLSFIpbG9hZChjb250ZXh0LCAidmtBY3F1
aXJlUHJvZmlsaW5nTG9ja0tIUiIpOworKyAgICB2a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSID0g
KFBGTl92a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSKWxvYWQoY29udGV4dCwgInZrUmVsZWFzZVBy
b2ZpbGluZ0xvY2tLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfcGVyZm9ybWFuY2Vf
cXVlcnkpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3BpcGVsaW5lX2V4ZWN1dGFibGVfcHJvcGVy
dGllcykKKy0JdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9uc0tI
UiA9IChQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9uc0tI
Uilsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50
YXRpb25zS0hSIik7CistCXZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUiA9IChQ
Rk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUiIpOworLQl2a0dldFBpcGVsaW5lRXhl
Y3V0YWJsZVN0YXRpc3RpY3NLSFIgPSAoUEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlz
dGljc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRpc3RpY3NL
SFIiKTsKKysgICAgdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9u
c0tIUiA9IChQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9u
c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVz
ZW50YXRpb25zS0hSIik7CisrICAgIHZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tI
UiA9IChQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4
dCwgInZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUiIpOworKyAgICB2a0dldFBp
cGVsaW5lRXhlY3V0YWJsZVN0YXRpc3RpY3NLSFIgPSAoUEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRh
YmxlU3RhdGlzdGljc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0
YXRpc3RpY3NLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfcGlwZWxpbmVfZXhlY3V0
YWJsZV9wcm9wZXJ0aWVzKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3Ip
CistCXZrQ21kUHVzaERlc2NyaXB0b3JTZXRLSFIgPSAoUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JT
ZXRLSFIpbG9hZChjb250ZXh0LCAidmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUiIpOworKyAgICB2
a0NtZFB1c2hEZXNjcmlwdG9yU2V0S0hSID0gKFBGTl92a0NtZFB1c2hEZXNjcmlwdG9yU2V0S0hS
KWxvYWQoY29udGV4dCwgInZrQ21kUHVzaERlc2NyaXB0b3JTZXRLSFIiKTsKKyAjZW5kaWYgLyog
ZGVmaW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9yKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9z
YW1wbGVyX3ljYmNyX2NvbnZlcnNpb24pCistCXZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lv
bktIUiA9IChQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbktIUiIpOworLQl2a0Rlc3Ryb3lTYW1w
bGVyWWNiY3JDb252ZXJzaW9uS0hSID0gKFBGTl92a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJz
aW9uS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIi
KTsKKysgICAgdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSID0gKFBGTl92a0NyZWF0
ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVy
WWNiY3JDb252ZXJzaW9uS0hSIik7CisrICAgIHZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNp
b25LSFIgPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIpbG9hZChjb250
ZXh0LCAidmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiIpOworICNlbmRpZiAvKiBk
ZWZpbmVkKFZLX0tIUl9zYW1wbGVyX3ljYmNyX2NvbnZlcnNpb24pICovCisgI2lmIGRlZmluZWQo
VktfS0hSX3NoYXJlZF9wcmVzZW50YWJsZV9pbWFnZSkKKy0JdmtHZXRTd2FwY2hhaW5TdGF0dXNL
SFIgPSAoUEZOX3ZrR2V0U3dhcGNoYWluU3RhdHVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U3dh
cGNoYWluU3RhdHVzS0hSIik7CisrICAgIHZrR2V0U3dhcGNoYWluU3RhdHVzS0hSID0gKFBGTl92
a0dldFN3YXBjaGFpblN0YXR1c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpblN0YXR1
c0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9zaGFyZWRfcHJlc2VudGFibGVfaW1h
Z2UpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikKKy0JdmtBY3F1aXJlTmV4dElt
YWdlS0hSID0gKFBGTl92a0FjcXVpcmVOZXh0SW1hZ2VLSFIpbG9hZChjb250ZXh0LCAidmtBY3F1
aXJlTmV4dEltYWdlS0hSIik7CistCXZrQ3JlYXRlU3dhcGNoYWluS0hSID0gKFBGTl92a0NyZWF0
ZVN3YXBjaGFpbktIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVN3YXBjaGFpbktIUiIpOworLQl2
a0Rlc3Ryb3lTd2FwY2hhaW5LSFIgPSAoUEZOX3ZrRGVzdHJveVN3YXBjaGFpbktIUilsb2FkKGNv
bnRleHQsICJ2a0Rlc3Ryb3lTd2FwY2hhaW5LSFIiKTsKKy0JdmtHZXRTd2FwY2hhaW5JbWFnZXNL
SFIgPSAoUEZOX3ZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U3dh
cGNoYWluSW1hZ2VzS0hSIik7CistCXZrUXVldWVQcmVzZW50S0hSID0gKFBGTl92a1F1ZXVlUHJl
c2VudEtIUilsb2FkKGNvbnRleHQsICJ2a1F1ZXVlUHJlc2VudEtIUiIpOworKyAgICB2a0FjcXVp
cmVOZXh0SW1hZ2VLSFIgPSAoUEZOX3ZrQWNxdWlyZU5leHRJbWFnZUtIUilsb2FkKGNvbnRleHQs
ICJ2a0FjcXVpcmVOZXh0SW1hZ2VLSFIiKTsKKysgICAgdmtDcmVhdGVTd2FwY2hhaW5LSFIgPSAo
UEZOX3ZrQ3JlYXRlU3dhcGNoYWluS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU3dhcGNoYWlu
S0hSIik7CisrICAgIHZrRGVzdHJveVN3YXBjaGFpbktIUiA9IChQRk5fdmtEZXN0cm95U3dhcGNo
YWluS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVN3YXBjaGFpbktIUiIpOworKyAgICB2a0dl
dFN3YXBjaGFpbkltYWdlc0tIUiA9IChQRk5fdmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIpbG9hZChj
b250ZXh0LCAidmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIiKTsKKysgICAgdmtRdWV1ZVByZXNlbnRL
SFIgPSAoUEZOX3ZrUXVldWVQcmVzZW50S0hSKWxvYWQoY29udGV4dCwgInZrUXVldWVQcmVzZW50
S0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgKi8KKyAjaWYgZGVm
aW5lZChWS19LSFJfdGltZWxpbmVfc2VtYXBob3JlKQorLQl2a0dldFNlbWFwaG9yZUNvdW50ZXJW
YWx1ZUtIUiA9IChQRk5fdmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVLSFIpbG9hZChjb250ZXh0
LCAidmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVLSFIiKTsKKy0JdmtTaWduYWxTZW1hcGhvcmVL
SFIgPSAoUEZOX3ZrU2lnbmFsU2VtYXBob3JlS0hSKWxvYWQoY29udGV4dCwgInZrU2lnbmFsU2Vt
YXBob3JlS0hSIik7CistCXZrV2FpdFNlbWFwaG9yZXNLSFIgPSAoUEZOX3ZrV2FpdFNlbWFwaG9y
ZXNLSFIpbG9hZChjb250ZXh0LCAidmtXYWl0U2VtYXBob3Jlc0tIUiIpOworKyAgICB2a0dldFNl
bWFwaG9yZUNvdW50ZXJWYWx1ZUtIUiA9IChQRk5fdmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVL
SFIpbG9hZChjb250ZXh0LCAidmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVLSFIiKTsKKysgICAg
dmtTaWduYWxTZW1hcGhvcmVLSFIgPSAoUEZOX3ZrU2lnbmFsU2VtYXBob3JlS0hSKWxvYWQoY29u
dGV4dCwgInZrU2lnbmFsU2VtYXBob3JlS0hSIik7CisrICAgIHZrV2FpdFNlbWFwaG9yZXNLSFIg
PSAoUEZOX3ZrV2FpdFNlbWFwaG9yZXNLSFIpbG9hZChjb250ZXh0LCAidmtXYWl0U2VtYXBob3Jl
c0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl90aW1lbGluZV9zZW1hcGhvcmUpICov
CisgI2lmIGRlZmluZWQoVktfTlZYX2RldmljZV9nZW5lcmF0ZWRfY29tbWFuZHMpCistCXZrQ21k
UHJvY2Vzc0NvbW1hbmRzTlZYID0gKFBGTl92a0NtZFByb2Nlc3NDb21tYW5kc05WWClsb2FkKGNv
bnRleHQsICJ2a0NtZFByb2Nlc3NDb21tYW5kc05WWCIpOworLQl2a0NtZFJlc2VydmVTcGFjZUZv
ckNvbW1hbmRzTlZYID0gKFBGTl92a0NtZFJlc2VydmVTcGFjZUZvckNvbW1hbmRzTlZYKWxvYWQo
Y29udGV4dCwgInZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlgiKTsKKy0JdmtDcmVhdGVJ
bmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYID0gKFBGTl92a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNM
YXlvdXROVlgpbG9hZChjb250ZXh0LCAidmtDcmVhdGVJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZY
Iik7CistCXZrQ3JlYXRlT2JqZWN0VGFibGVOVlggPSAoUEZOX3ZrQ3JlYXRlT2JqZWN0VGFibGVO
VlgpbG9hZChjb250ZXh0LCAidmtDcmVhdGVPYmplY3RUYWJsZU5WWCIpOworLQl2a0Rlc3Ryb3lJ
bmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYID0gKFBGTl92a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRz
TGF5b3V0TlZYKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXRO
VlgiKTsKKy0JdmtEZXN0cm95T2JqZWN0VGFibGVOVlggPSAoUEZOX3ZrRGVzdHJveU9iamVjdFRh
YmxlTlZYKWxvYWQoY29udGV4dCwgInZrRGVzdHJveU9iamVjdFRhYmxlTlZYIik7CistCXZrUmVn
aXN0ZXJPYmplY3RzTlZYID0gKFBGTl92a1JlZ2lzdGVyT2JqZWN0c05WWClsb2FkKGNvbnRleHQs
ICJ2a1JlZ2lzdGVyT2JqZWN0c05WWCIpOworLQl2a1VucmVnaXN0ZXJPYmplY3RzTlZYID0gKFBG
Tl92a1VucmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4dCwgInZrVW5yZWdpc3Rlck9iamVj
dHNOVlgiKTsKKysgICAgdmtDbWRQcm9jZXNzQ29tbWFuZHNOVlggPSAoUEZOX3ZrQ21kUHJvY2Vz
c0NvbW1hbmRzTlZYKWxvYWQoY29udGV4dCwgInZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYIik7Cisr
ICAgIHZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlggPSAoUEZOX3ZrQ21kUmVzZXJ2ZVNw
YWNlRm9yQ29tbWFuZHNOVlgpbG9hZChjb250ZXh0LCAidmtDbWRSZXNlcnZlU3BhY2VGb3JDb21t
YW5kc05WWCIpOworKyAgICB2a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlggPSAoUEZO
X3ZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWClsb2FkKGNvbnRleHQsICJ2a0NyZWF0
ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgiKTsKKysgICAgdmtDcmVhdGVPYmplY3RUYWJsZU5W
WCA9IChQRk5fdmtDcmVhdGVPYmplY3RUYWJsZU5WWClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZU9i
amVjdFRhYmxlTlZYIik7CisrICAgIHZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgg
PSAoUEZOX3ZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95SW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCIpOworKyAgICB2a0Rlc3Ryb3lPYmpl
Y3RUYWJsZU5WWCA9IChQRk5fdmtEZXN0cm95T2JqZWN0VGFibGVOVlgpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95T2JqZWN0VGFibGVOVlgiKTsKKysgICAgdmtSZWdpc3Rlck9iamVjdHNOVlggPSAo
UEZOX3ZrUmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4dCwgInZrUmVnaXN0ZXJPYmplY3Rz
TlZYIik7CisrICAgIHZrVW5yZWdpc3Rlck9iamVjdHNOVlggPSAoUEZOX3ZrVW5yZWdpc3Rlck9i
amVjdHNOVlgpbG9hZChjb250ZXh0LCAidmtVbnJlZ2lzdGVyT2JqZWN0c05WWCIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX05WWF9kZXZpY2VfZ2VuZXJhdGVkX2NvbW1hbmRzKSAqLworICNpZiBk
ZWZpbmVkKFZLX05WWF9pbWFnZV92aWV3X2hhbmRsZSkKKy0JdmtHZXRJbWFnZVZpZXdIYW5kbGVO
VlggPSAoUEZOX3ZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZYKWxvYWQoY29udGV4dCwgInZrR2V0SW1h
Z2VWaWV3SGFuZGxlTlZYIik7CisrICAgIHZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZYID0gKFBGTl92
a0dldEltYWdlVmlld0hhbmRsZU5WWClsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlVmlld0hhbmRs
ZU5WWCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WWF9pbWFnZV92aWV3X2hhbmRsZSkgKi8K
KyAjaWYgZGVmaW5lZChWS19OVl9jbGlwX3NwYWNlX3dfc2NhbGluZykKKy0JdmtDbWRTZXRWaWV3
cG9ydFdTY2FsaW5nTlYgPSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnRXU2NhbGluZ05WKWxvYWQoY29u
dGV4dCwgInZrQ21kU2V0Vmlld3BvcnRXU2NhbGluZ05WIik7CisrICAgIHZrQ21kU2V0Vmlld3Bv
cnRXU2NhbGluZ05WID0gKFBGTl92a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOVilsb2FkKGNvbnRl
eHQsICJ2a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X05WX2NsaXBfc3BhY2Vfd19zY2FsaW5nKSAqLworICNpZiBkZWZpbmVkKFZLX05WX2RldmljZV9k
aWFnbm9zdGljX2NoZWNrcG9pbnRzKQorLQl2a0NtZFNldENoZWNrcG9pbnROViA9IChQRk5fdmtD
bWRTZXRDaGVja3BvaW50TlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRDaGVja3BvaW50TlYiKTsK
Ky0JdmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYgPSAoUEZOX3ZrR2V0UXVldWVDaGVja3BvaW50
RGF0YU5WKWxvYWQoY29udGV4dCwgInZrR2V0UXVldWVDaGVja3BvaW50RGF0YU5WIik7CisrICAg
IHZrQ21kU2V0Q2hlY2twb2ludE5WID0gKFBGTl92a0NtZFNldENoZWNrcG9pbnROVilsb2FkKGNv
bnRleHQsICJ2a0NtZFNldENoZWNrcG9pbnROViIpOworKyAgICB2a0dldFF1ZXVlQ2hlY2twb2lu
dERhdGFOViA9IChQRk5fdmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYpbG9hZChjb250ZXh0LCAi
dmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9k
ZXZpY2VfZGlhZ25vc3RpY19jaGVja3BvaW50cykgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9leHRl
cm5hbF9tZW1vcnlfd2luMzIpCistCXZrR2V0TWVtb3J5V2luMzJIYW5kbGVOViA9IChQRk5fdmtH
ZXRNZW1vcnlXaW4zMkhhbmRsZU5WKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5V2luMzJIYW5k
bGVOViIpOworKyAgICB2a0dldE1lbW9yeVdpbjMySGFuZGxlTlYgPSAoUEZOX3ZrR2V0TWVtb3J5
V2luMzJIYW5kbGVOVilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFuZGxlTlYiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9leHRlcm5hbF9tZW1vcnlfd2luMzIpICovCisgI2lm
IGRlZmluZWQoVktfTlZfbWVzaF9zaGFkZXIpCistCXZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0
Q291bnROViA9IChQRk5fdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WKWxvYWQoY29u
dGV4dCwgInZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROViIpOworLQl2a0NtZERyYXdN
ZXNoVGFza3NJbmRpcmVjdE5WID0gKFBGTl92a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdE5WKWxv
YWQoY29udGV4dCwgInZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYiKTsKKy0JdmtDbWREcmF3
TWVzaFRhc2tzTlYgPSAoUEZOX3ZrQ21kRHJhd01lc2hUYXNrc05WKWxvYWQoY29udGV4dCwgInZr
Q21kRHJhd01lc2hUYXNrc05WIik7CisrICAgIHZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291
bnROViA9IChQRk5fdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WKWxvYWQoY29udGV4
dCwgInZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROViIpOworKyAgICB2a0NtZERyYXdN
ZXNoVGFza3NJbmRpcmVjdE5WID0gKFBGTl92a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdE5WKWxv
YWQoY29udGV4dCwgInZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYiKTsKKysgICAgdmtDbWRE
cmF3TWVzaFRhc2tzTlYgPSAoUEZOX3ZrQ21kRHJhd01lc2hUYXNrc05WKWxvYWQoY29udGV4dCwg
InZrQ21kRHJhd01lc2hUYXNrc05WIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfbWVzaF9z
aGFkZXIpICovCisgI2lmIGRlZmluZWQoVktfTlZfcmF5X3RyYWNpbmcpCistCXZrQmluZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WID0gKFBGTl92a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVNZW1vcnlOVilsb2FkKGNvbnRleHQsICJ2a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1v
cnlOViIpOworLQl2a0NtZEJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrQ21k
QnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOVilsb2FkKGNvbnRleHQsICJ2a0NtZEJ1aWxkQWNj
ZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsKKy0JdmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYgPSAoUEZOX3ZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwg
InZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CistCXZrQ21kVHJhY2VSYXlzTlYg
PSAoUEZOX3ZrQ21kVHJhY2VSYXlzTlYpbG9hZChjb250ZXh0LCAidmtDbWRUcmFjZVJheXNOViIp
OworLQl2a0NtZFdyaXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOViA9IChQRk5f
dmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYpbG9hZChjb250ZXh0
LCAidmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYiKTsKKy0JdmtD
b21waWxlRGVmZXJyZWROViA9IChQRk5fdmtDb21waWxlRGVmZXJyZWROVilsb2FkKGNvbnRleHQs
ICJ2a0NvbXBpbGVEZWZlcnJlZE5WIik7CistCXZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYgPSAoUEZOX3ZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOworLQl2a0NyZWF0ZVJheVRyYWNpbmdQ
aXBlbGluZXNOViA9IChQRk5fdmtDcmVhdGVSYXlUcmFjaW5nUGlwZWxpbmVzTlYpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVSYXlUcmFjaW5nUGlwZWxpbmVzTlYiKTsKKy0JdmtEZXN0cm95QWNjZWxl
cmF0aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5W
KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CistCXZr
R2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFuZGxlTlYgPSAoUEZOX3ZrR2V0QWNjZWxlcmF0aW9u
U3RydWN0dXJlSGFuZGxlTlYpbG9hZChjb250ZXh0LCAidmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVIYW5kbGVOViIpOworLQl2a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeVJlcXVpcmVt
ZW50c05WID0gKFBGTl92a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeVJlcXVpcmVtZW50
c05WKWxvYWQoY29udGV4dCwgInZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWly
ZW1lbnRzTlYiKTsKKy0JdmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYgPSAoUEZO
X3ZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WKWxvYWQoY29udGV4dCwgInZrR2V0
UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WIik7CisrICAgIHZrQmluZEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1lbW9yeU5WID0gKFBGTl92a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1v
cnlOVilsb2FkKGNvbnRleHQsICJ2a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlOViIp
OworKyAgICB2a0NtZEJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrQ21kQnVp
bGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOVilsb2FkKGNvbnRleHQsICJ2a0NtZEJ1aWxkQWNjZWxl
cmF0aW9uU3RydWN0dXJlTlYiKTsKKysgICAgdmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYgPSAoUEZOX3ZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwg
InZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CisrICAgIHZrQ21kVHJhY2VSYXlz
TlYgPSAoUEZOX3ZrQ21kVHJhY2VSYXlzTlYpbG9hZChjb250ZXh0LCAidmtDbWRUcmFjZVJheXNO
ViIpOworKyAgICB2a0NtZFdyaXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOViA9
IChQRk5fdmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYpbG9hZChj
b250ZXh0LCAidmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYiKTsK
KysgICAgdmtDb21waWxlRGVmZXJyZWROViA9IChQRk5fdmtDb21waWxlRGVmZXJyZWROVilsb2Fk
KGNvbnRleHQsICJ2a0NvbXBpbGVEZWZlcnJlZE5WIik7CisrICAgIHZrQ3JlYXRlQWNjZWxlcmF0
aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOworKyAgICB2a0Ny
ZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOViA9IChQRk5fdmtDcmVhdGVSYXlUcmFjaW5nUGlwZWxp
bmVzTlYpbG9hZChjb250ZXh0LCAidmtDcmVhdGVSYXlUcmFjaW5nUGlwZWxpbmVzTlYiKTsKKysg
ICAgdmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrRGVzdHJveUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUFjY2VsZXJhdGlvblN0
cnVjdHVyZU5WIik7CisrICAgIHZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFuZGxlTlYgPSAo
UEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFuZGxlTlYpbG9hZChjb250ZXh0LCAidmtH
ZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOViIpOworKyAgICB2a0dldEFjY2VsZXJhdGlv
blN0cnVjdHVyZU1lbW9yeVJlcXVpcmVtZW50c05WID0gKFBGTl92a0dldEFjY2VsZXJhdGlvblN0
cnVjdHVyZU1lbW9yeVJlcXVpcmVtZW50c05WKWxvYWQoY29udGV4dCwgInZrR2V0QWNjZWxlcmF0
aW9uU3RydWN0dXJlTWVtb3J5UmVxdWlyZW1lbnRzTlYiKTsKKysgICAgdmtHZXRSYXlUcmFjaW5n
U2hhZGVyR3JvdXBIYW5kbGVzTlYgPSAoUEZOX3ZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFu
ZGxlc05WKWxvYWQoY29udGV4dCwgInZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05W
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfcmF5X3RyYWNpbmcpICovCisgI2lmIGRlZmlu
ZWQoVktfTlZfc2Npc3Nvcl9leGNsdXNpdmUpCistCXZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5W
ID0gKFBGTl92a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dEV4Y2x1c2l2ZVNjaXNzb3JOViIpOworKyAgICB2a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOViA9
IChQRk5fdmtDbWRTZXRFeGNsdXNpdmVTY2lzc29yTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRF
eGNsdXNpdmVTY2lzc29yTlYiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9zY2lzc29yX2V4
Y2x1c2l2ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9zaGFkaW5nX3JhdGVfaW1hZ2UpCistCXZr
Q21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViA9IChQRk5fdmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFn
ZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViIpOworLQl2a0Nt
ZFNldENvYXJzZVNhbXBsZU9yZGVyTlYgPSAoUEZOX3ZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJO
Vilsb2FkKGNvbnRleHQsICJ2a0NtZFNldENvYXJzZVNhbXBsZU9yZGVyTlYiKTsKKy0JdmtDbWRT
ZXRWaWV3cG9ydFNoYWRpbmdSYXRlUGFsZXR0ZU5WID0gKFBGTl92a0NtZFNldFZpZXdwb3J0U2hh
ZGluZ1JhdGVQYWxldHRlTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRWaWV3cG9ydFNoYWRpbmdS
YXRlUGFsZXR0ZU5WIik7CisrICAgIHZrQ21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViA9IChQRk5f
dmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQmluZFNoYWRp
bmdSYXRlSW1hZ2VOViIpOworKyAgICB2a0NtZFNldENvYXJzZVNhbXBsZU9yZGVyTlYgPSAoUEZO
X3ZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNldENvYXJz
ZVNhbXBsZU9yZGVyTlYiKTsKKysgICAgdmtDbWRTZXRWaWV3cG9ydFNoYWRpbmdSYXRlUGFsZXR0
ZU5WID0gKFBGTl92a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYpbG9hZChjb250
ZXh0LCAidmtDbWRTZXRWaWV3cG9ydFNoYWRpbmdSYXRlUGFsZXR0ZU5WIik7CisgI2VuZGlmIC8q
IGRlZmluZWQoVktfTlZfc2hhZGluZ19yYXRlX2ltYWdlKSAqLworICNpZiAoZGVmaW5lZChWS19F
WFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXAp
KSB8fCAoZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZL
X1ZFUlNJT05fMV8xKSkKKy0JdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhU
ID0gKFBGTl92a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQpbG9hZChjb250
ZXh0LCAidmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhUIik7CisrICAgIHZr
R2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzMkVYVCA9IChQRk5fdmtHZXREZXZpY2VH
cm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhUKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3Jv
dXBTdXJmYWNlUHJlc2VudE1vZGVzMkVYVCIpOworICNlbmRpZiAvKiAoZGVmaW5lZChWS19FWFRf
ZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApKSB8
fCAoZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZLX1ZF
UlNJT05fMV8xKSkgKi8KKyAjaWYgKGRlZmluZWQoVktfS0hSX2Rlc2NyaXB0b3JfdXBkYXRlX3Rl
bXBsYXRlKSAmJiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3IpKSB8fCAoZGVmaW5lZChW
S19LSFJfcHVzaF9kZXNjcmlwdG9yKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JdmtD
bWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiA9IChQRk5fdmtDbWRQdXNoRGVzY3Jp
cHRvclNldFdpdGhUZW1wbGF0ZUtIUilsb2FkKGNvbnRleHQsICJ2a0NtZFB1c2hEZXNjcmlwdG9y
U2V0V2l0aFRlbXBsYXRlS0hSIik7CisrICAgIHZrQ21kUHVzaERlc2NyaXB0b3JTZXRXaXRoVGVt
cGxhdGVLSFIgPSAoUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIpbG9h
ZChjb250ZXh0LCAidmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiIpOworICNl
bmRpZiAvKiAoZGVmaW5lZChWS19LSFJfZGVzY3JpcHRvcl91cGRhdGVfdGVtcGxhdGUpICYmIGRl
ZmluZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRvcikpIHx8IChkZWZpbmVkKFZLX0tIUl9wdXNoX2Rl
c2NyaXB0b3IpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLworICNpZiAoZGVmaW5lZChW
S19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVkKFZLX0tIUl9zdXJmYWNlKSkgfHwgKGRlZmlu
ZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpCistCXZrR2V0
RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSID0gKFBGTl92a0dldERldmljZUdyb3Vw
UHJlc2VudENhcGFiaWxpdGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwUHJl
c2VudENhcGFiaWxpdGllc0tIUiIpOworLQl2a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRN
b2Rlc0tIUiA9IChQRk5fdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXNLSFIpbG9h
ZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXNLSFIiKTsKKysg
ICAgdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIgPSAoUEZOX3ZrR2V0RGV2
aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNl
R3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSIik7CisrICAgIHZrR2V0RGV2aWNlR3JvdXBTdXJm
YWNlUHJlc2VudE1vZGVzS0hSID0gKFBGTl92a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRN
b2Rlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rl
c0tIUiIpOworICNlbmRpZiAvKiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZp
bmVkKFZLX0tIUl9zdXJmYWNlKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVm
aW5lZChWS19WRVJTSU9OXzFfMSkpICovCisgI2lmIChkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3Jv
dXApICYmIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikpIHx8IChkZWZpbmVkKFZLX0tIUl9zd2Fw
Y2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKQorLQl2a0FjcXVpcmVOZXh0SW1hZ2Uy
S0hSID0gKFBGTl92a0FjcXVpcmVOZXh0SW1hZ2UyS0hSKWxvYWQoY29udGV4dCwgInZrQWNxdWly
ZU5leHRJbWFnZTJLSFIiKTsKKysgICAgdmtBY3F1aXJlTmV4dEltYWdlMktIUiA9IChQRk5fdmtB
Y3F1aXJlTmV4dEltYWdlMktIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVOZXh0SW1hZ2UyS0hS
Iik7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICYmIGRlZmluZWQo
VktfS0hSX3N3YXBjaGFpbikpIHx8IChkZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICYmIGRlZmlu
ZWQoVktfVkVSU0lPTl8xXzEpKSAqLworLQkvKiBWT0xLX0dFTkVSQVRFX0xPQURfREVWSUNFICov
CisrICAgIC8qIFZPTEtfR0VORVJBVEVfTE9BRF9ERVZJQ0UgKi8KKyB9CisgCisgc3RhdGljIHZv
aWQgdm9sa0dlbkxvYWREZXZpY2VUYWJsZShzdHJ1Y3QgVm9sa0RldmljZVRhYmxlKiB0YWJsZSwg
dm9pZCogY29udGV4dCwgUEZOX3ZrVm9pZEZ1bmN0aW9uICgqbG9hZCkodm9pZCosIGNvbnN0IGNo
YXIqKSkKKyB7CistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9ERVZJQ0VfVEFCTEUgKi8KKysgICAg
LyogVk9MS19HRU5FUkFURV9MT0FEX0RFVklDRV9UQUJMRSAqLworICNpZiBkZWZpbmVkKFZLX1ZF
UlNJT05fMV8wKQorLQl0YWJsZS0+dmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzID0gKFBGTl92a0Fs
bG9jYXRlQ29tbWFuZEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtBbGxvY2F0ZUNvbW1hbmRCdWZm
ZXJzIik7CistCXRhYmxlLT52a0FsbG9jYXRlRGVzY3JpcHRvclNldHMgPSAoUEZOX3ZrQWxsb2Nh
dGVEZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2a0FsbG9jYXRlRGVzY3JpcHRvclNldHMi
KTsKKy0JdGFibGUtPnZrQWxsb2NhdGVNZW1vcnkgPSAoUEZOX3ZrQWxsb2NhdGVNZW1vcnkpbG9h
ZChjb250ZXh0LCAidmtBbGxvY2F0ZU1lbW9yeSIpOworLQl0YWJsZS0+dmtCZWdpbkNvbW1hbmRC
dWZmZXIgPSAoUEZOX3ZrQmVnaW5Db21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZrQmVnaW5D
b21tYW5kQnVmZmVyIik7CistCXRhYmxlLT52a0JpbmRCdWZmZXJNZW1vcnkgPSAoUEZOX3ZrQmlu
ZEJ1ZmZlck1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a0JpbmRCdWZmZXJNZW1vcnkiKTsKKy0JdGFi
bGUtPnZrQmluZEltYWdlTWVtb3J5ID0gKFBGTl92a0JpbmRJbWFnZU1lbW9yeSlsb2FkKGNvbnRl
eHQsICJ2a0JpbmRJbWFnZU1lbW9yeSIpOworLQl0YWJsZS0+dmtDbWRCZWdpblF1ZXJ5ID0gKFBG
Tl92a0NtZEJlZ2luUXVlcnkpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblF1ZXJ5Iik7CistCXRh
YmxlLT52a0NtZEJlZ2luUmVuZGVyUGFzcyA9IChQRk5fdmtDbWRCZWdpblJlbmRlclBhc3MpbG9h
ZChjb250ZXh0LCAidmtDbWRCZWdpblJlbmRlclBhc3MiKTsKKy0JdGFibGUtPnZrQ21kQmluZERl
c2NyaXB0b3JTZXRzID0gKFBGTl92a0NtZEJpbmREZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQs
ICJ2a0NtZEJpbmREZXNjcmlwdG9yU2V0cyIpOworLQl0YWJsZS0+dmtDbWRCaW5kSW5kZXhCdWZm
ZXIgPSAoUEZOX3ZrQ21kQmluZEluZGV4QnVmZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQmluZElu
ZGV4QnVmZmVyIik7CistCXRhYmxlLT52a0NtZEJpbmRQaXBlbGluZSA9IChQRk5fdmtDbWRCaW5k
UGlwZWxpbmUpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kUGlwZWxpbmUiKTsKKy0JdGFibGUtPnZr
Q21kQmluZFZlcnRleEJ1ZmZlcnMgPSAoUEZOX3ZrQ21kQmluZFZlcnRleEJ1ZmZlcnMpbG9hZChj
b250ZXh0LCAidmtDbWRCaW5kVmVydGV4QnVmZmVycyIpOworLQl0YWJsZS0+dmtDbWRCbGl0SW1h
Z2UgPSAoUEZOX3ZrQ21kQmxpdEltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQmxpdEltYWdlIik7
CistCXRhYmxlLT52a0NtZENsZWFyQXR0YWNobWVudHMgPSAoUEZOX3ZrQ21kQ2xlYXJBdHRhY2ht
ZW50cylsb2FkKGNvbnRleHQsICJ2a0NtZENsZWFyQXR0YWNobWVudHMiKTsKKy0JdGFibGUtPnZr
Q21kQ2xlYXJDb2xvckltYWdlID0gKFBGTl92a0NtZENsZWFyQ29sb3JJbWFnZSlsb2FkKGNvbnRl
eHQsICJ2a0NtZENsZWFyQ29sb3JJbWFnZSIpOworLQl0YWJsZS0+dmtDbWRDbGVhckRlcHRoU3Rl
bmNpbEltYWdlID0gKFBGTl92a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UpbG9hZChjb250ZXh0
LCAidmtDbWRDbGVhckRlcHRoU3RlbmNpbEltYWdlIik7CistCXRhYmxlLT52a0NtZENvcHlCdWZm
ZXIgPSAoUEZOX3ZrQ21kQ29weUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZENvcHlCdWZmZXIi
KTsKKy0JdGFibGUtPnZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UgPSAoUEZOX3ZrQ21kQ29weUJ1ZmZl
clRvSW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QnVmZmVyVG9JbWFnZSIpOworLQl0YWJs
ZS0+dmtDbWRDb3B5SW1hZ2UgPSAoUEZOX3ZrQ21kQ29weUltYWdlKWxvYWQoY29udGV4dCwgInZr
Q21kQ29weUltYWdlIik7CistCXRhYmxlLT52a0NtZENvcHlJbWFnZVRvQnVmZmVyID0gKFBGTl92
a0NtZENvcHlJbWFnZVRvQnVmZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUltYWdlVG9CdWZm
ZXIiKTsKKy0JdGFibGUtPnZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMgPSAoUEZOX3ZrQ21kQ29w
eVF1ZXJ5UG9vbFJlc3VsdHMpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5UXVlcnlQb29sUmVzdWx0
cyIpOworLQl0YWJsZS0+dmtDbWREaXNwYXRjaCA9IChQRk5fdmtDbWREaXNwYXRjaClsb2FkKGNv
bnRleHQsICJ2a0NtZERpc3BhdGNoIik7CistCXRhYmxlLT52a0NtZERpc3BhdGNoSW5kaXJlY3Qg
PSAoUEZOX3ZrQ21kRGlzcGF0Y2hJbmRpcmVjdClsb2FkKGNvbnRleHQsICJ2a0NtZERpc3BhdGNo
SW5kaXJlY3QiKTsKKy0JdGFibGUtPnZrQ21kRHJhdyA9IChQRk5fdmtDbWREcmF3KWxvYWQoY29u
dGV4dCwgInZrQ21kRHJhdyIpOworLQl0YWJsZS0+dmtDbWREcmF3SW5kZXhlZCA9IChQRk5fdmtD
bWREcmF3SW5kZXhlZClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkIik7CistCXRhYmxl
LT52a0NtZERyYXdJbmRleGVkSW5kaXJlY3QgPSAoUEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVj
dClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkSW5kaXJlY3QiKTsKKy0JdGFibGUtPnZr
Q21kRHJhd0luZGlyZWN0ID0gKFBGTl92a0NtZERyYXdJbmRpcmVjdClsb2FkKGNvbnRleHQsICJ2
a0NtZERyYXdJbmRpcmVjdCIpOworLQl0YWJsZS0+dmtDbWRFbmRRdWVyeSA9IChQRk5fdmtDbWRF
bmRRdWVyeSlsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFF1ZXJ5Iik7CistCXRhYmxlLT52a0NtZEVu
ZFJlbmRlclBhc3MgPSAoUEZOX3ZrQ21kRW5kUmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0Nt
ZEVuZFJlbmRlclBhc3MiKTsKKy0JdGFibGUtPnZrQ21kRXhlY3V0ZUNvbW1hbmRzID0gKFBGTl92
a0NtZEV4ZWN1dGVDb21tYW5kcylsb2FkKGNvbnRleHQsICJ2a0NtZEV4ZWN1dGVDb21tYW5kcyIp
OworLQl0YWJsZS0+dmtDbWRGaWxsQnVmZmVyID0gKFBGTl92a0NtZEZpbGxCdWZmZXIpbG9hZChj
b250ZXh0LCAidmtDbWRGaWxsQnVmZmVyIik7CistCXRhYmxlLT52a0NtZE5leHRTdWJwYXNzID0g
KFBGTl92a0NtZE5leHRTdWJwYXNzKWxvYWQoY29udGV4dCwgInZrQ21kTmV4dFN1YnBhc3MiKTsK
Ky0JdGFibGUtPnZrQ21kUGlwZWxpbmVCYXJyaWVyID0gKFBGTl92a0NtZFBpcGVsaW5lQmFycmll
cilsb2FkKGNvbnRleHQsICJ2a0NtZFBpcGVsaW5lQmFycmllciIpOworLQl0YWJsZS0+dmtDbWRQ
dXNoQ29uc3RhbnRzID0gKFBGTl92a0NtZFB1c2hDb25zdGFudHMpbG9hZChjb250ZXh0LCAidmtD
bWRQdXNoQ29uc3RhbnRzIik7CistCXRhYmxlLT52a0NtZFJlc2V0RXZlbnQgPSAoUEZOX3ZrQ21k
UmVzZXRFdmVudClsb2FkKGNvbnRleHQsICJ2a0NtZFJlc2V0RXZlbnQiKTsKKy0JdGFibGUtPnZr
Q21kUmVzZXRRdWVyeVBvb2wgPSAoUEZOX3ZrQ21kUmVzZXRRdWVyeVBvb2wpbG9hZChjb250ZXh0
LCAidmtDbWRSZXNldFF1ZXJ5UG9vbCIpOworLQl0YWJsZS0+dmtDbWRSZXNvbHZlSW1hZ2UgPSAo
UEZOX3ZrQ21kUmVzb2x2ZUltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kUmVzb2x2ZUltYWdlIik7
CistCXRhYmxlLT52a0NtZFNldEJsZW5kQ29uc3RhbnRzID0gKFBGTl92a0NtZFNldEJsZW5kQ29u
c3RhbnRzKWxvYWQoY29udGV4dCwgInZrQ21kU2V0QmxlbmRDb25zdGFudHMiKTsKKy0JdGFibGUt
PnZrQ21kU2V0RGVwdGhCaWFzID0gKFBGTl92a0NtZFNldERlcHRoQmlhcylsb2FkKGNvbnRleHQs
ICJ2a0NtZFNldERlcHRoQmlhcyIpOworLQl0YWJsZS0+dmtDbWRTZXREZXB0aEJvdW5kcyA9IChQ
Rk5fdmtDbWRTZXREZXB0aEJvdW5kcylsb2FkKGNvbnRleHQsICJ2a0NtZFNldERlcHRoQm91bmRz
Iik7CistCXRhYmxlLT52a0NtZFNldEV2ZW50ID0gKFBGTl92a0NtZFNldEV2ZW50KWxvYWQoY29u
dGV4dCwgInZrQ21kU2V0RXZlbnQiKTsKKy0JdGFibGUtPnZrQ21kU2V0TGluZVdpZHRoID0gKFBG
Tl92a0NtZFNldExpbmVXaWR0aClsb2FkKGNvbnRleHQsICJ2a0NtZFNldExpbmVXaWR0aCIpOwor
LQl0YWJsZS0+dmtDbWRTZXRTY2lzc29yID0gKFBGTl92a0NtZFNldFNjaXNzb3IpbG9hZChjb250
ZXh0LCAidmtDbWRTZXRTY2lzc29yIik7CistCXRhYmxlLT52a0NtZFNldFN0ZW5jaWxDb21wYXJl
TWFzayA9IChQRk5fdmtDbWRTZXRTdGVuY2lsQ29tcGFyZU1hc2spbG9hZChjb250ZXh0LCAidmtD
bWRTZXRTdGVuY2lsQ29tcGFyZU1hc2siKTsKKy0JdGFibGUtPnZrQ21kU2V0U3RlbmNpbFJlZmVy
ZW5jZSA9IChQRk5fdmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlKWxvYWQoY29udGV4dCwgInZrQ21k
U2V0U3RlbmNpbFJlZmVyZW5jZSIpOworLQl0YWJsZS0+dmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNr
ID0gKFBGTl92a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXRT
dGVuY2lsV3JpdGVNYXNrIik7CistCXRhYmxlLT52a0NtZFNldFZpZXdwb3J0ID0gKFBGTl92a0Nt
ZFNldFZpZXdwb3J0KWxvYWQoY29udGV4dCwgInZrQ21kU2V0Vmlld3BvcnQiKTsKKy0JdGFibGUt
PnZrQ21kVXBkYXRlQnVmZmVyID0gKFBGTl92a0NtZFVwZGF0ZUJ1ZmZlcilsb2FkKGNvbnRleHQs
ICJ2a0NtZFVwZGF0ZUJ1ZmZlciIpOworLQl0YWJsZS0+dmtDbWRXYWl0RXZlbnRzID0gKFBGTl92
a0NtZFdhaXRFdmVudHMpbG9hZChjb250ZXh0LCAidmtDbWRXYWl0RXZlbnRzIik7CistCXRhYmxl
LT52a0NtZFdyaXRlVGltZXN0YW1wID0gKFBGTl92a0NtZFdyaXRlVGltZXN0YW1wKWxvYWQoY29u
dGV4dCwgInZrQ21kV3JpdGVUaW1lc3RhbXAiKTsKKy0JdGFibGUtPnZrQ3JlYXRlQnVmZmVyID0g
KFBGTl92a0NyZWF0ZUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUJ1ZmZlciIpOworLQl0
YWJsZS0+dmtDcmVhdGVCdWZmZXJWaWV3ID0gKFBGTl92a0NyZWF0ZUJ1ZmZlclZpZXcpbG9hZChj
b250ZXh0LCAidmtDcmVhdGVCdWZmZXJWaWV3Iik7CistCXRhYmxlLT52a0NyZWF0ZUNvbW1hbmRQ
b29sID0gKFBGTl92a0NyZWF0ZUNvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQ29t
bWFuZFBvb2wiKTsKKy0JdGFibGUtPnZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lcyA9IChQRk5fdmtD
cmVhdGVDb21wdXRlUGlwZWxpbmVzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQ29tcHV0ZVBpcGVs
aW5lcyIpOworLQl0YWJsZS0+dmtDcmVhdGVEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtDcmVhdGVE
ZXNjcmlwdG9yUG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JQb29sIik7Cist
CXRhYmxlLT52a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQgPSAoUEZOX3ZrQ3JlYXRlRGVzY3Jp
cHRvclNldExheW91dClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQi
KTsKKy0JdGFibGUtPnZrQ3JlYXRlRXZlbnQgPSAoUEZOX3ZrQ3JlYXRlRXZlbnQpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVFdmVudCIpOworLQl0YWJsZS0+dmtDcmVhdGVGZW5jZSA9IChQRk5fdmtD
cmVhdGVGZW5jZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUZlbmNlIik7CistCXRhYmxlLT52a0Ny
ZWF0ZUZyYW1lYnVmZmVyID0gKFBGTl92a0NyZWF0ZUZyYW1lYnVmZmVyKWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlRnJhbWVidWZmZXIiKTsKKy0JdGFibGUtPnZrQ3JlYXRlR3JhcGhpY3NQaXBlbGlu
ZXMgPSAoUEZOX3ZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMpbG9hZChjb250ZXh0LCAidmtDcmVh
dGVHcmFwaGljc1BpcGVsaW5lcyIpOworLQl0YWJsZS0+dmtDcmVhdGVJbWFnZSA9IChQRk5fdmtD
cmVhdGVJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUltYWdlIik7CistCXRhYmxlLT52a0Ny
ZWF0ZUltYWdlVmlldyA9IChQRk5fdmtDcmVhdGVJbWFnZVZpZXcpbG9hZChjb250ZXh0LCAidmtD
cmVhdGVJbWFnZVZpZXciKTsKKy0JdGFibGUtPnZrQ3JlYXRlUGlwZWxpbmVDYWNoZSA9IChQRk5f
dmtDcmVhdGVQaXBlbGluZUNhY2hlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUGlwZWxpbmVDYWNo
ZSIpOworLQl0YWJsZS0+dmtDcmVhdGVQaXBlbGluZUxheW91dCA9IChQRk5fdmtDcmVhdGVQaXBl
bGluZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0Iik7CistCXRh
YmxlLT52a0NyZWF0ZVF1ZXJ5UG9vbCA9IChQRk5fdmtDcmVhdGVRdWVyeVBvb2wpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVRdWVyeVBvb2wiKTsKKy0JdGFibGUtPnZrQ3JlYXRlUmVuZGVyUGFzcyA9
IChQRk5fdmtDcmVhdGVSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUmVuZGVyUGFz
cyIpOworLQl0YWJsZS0+dmtDcmVhdGVTYW1wbGVyID0gKFBGTl92a0NyZWF0ZVNhbXBsZXIpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVyIik7CistCXRhYmxlLT52a0NyZWF0ZVNlbWFwaG9y
ZSA9IChQRk5fdmtDcmVhdGVTZW1hcGhvcmUpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTZW1hcGhv
cmUiKTsKKy0JdGFibGUtPnZrQ3JlYXRlU2hhZGVyTW9kdWxlID0gKFBGTl92a0NyZWF0ZVNoYWRl
ck1vZHVsZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNoYWRlck1vZHVsZSIpOworLQl0YWJsZS0+
dmtEZXN0cm95QnVmZmVyID0gKFBGTl92a0Rlc3Ryb3lCdWZmZXIpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95QnVmZmVyIik7CistCXRhYmxlLT52a0Rlc3Ryb3lCdWZmZXJWaWV3ID0gKFBGTl92a0Rl
c3Ryb3lCdWZmZXJWaWV3KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUJ1ZmZlclZpZXciKTsKKy0J
dGFibGUtPnZrRGVzdHJveUNvbW1hbmRQb29sID0gKFBGTl92a0Rlc3Ryb3lDb21tYW5kUG9vbCls
b2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lDb21tYW5kUG9vbCIpOworLQl0YWJsZS0+dmtEZXN0cm95
RGVzY3JpcHRvclBvb2wgPSAoUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4
dCwgInZrRGVzdHJveURlc2NyaXB0b3JQb29sIik7CistCXRhYmxlLT52a0Rlc3Ryb3lEZXNjcmlw
dG9yU2V0TGF5b3V0ID0gKFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0KWxvYWQoY29u
dGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQiKTsKKy0JdGFibGUtPnZrRGVzdHJv
eURldmljZSA9IChQRk5fdmtEZXN0cm95RGV2aWNlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURl
dmljZSIpOworLQl0YWJsZS0+dmtEZXN0cm95RXZlbnQgPSAoUEZOX3ZrRGVzdHJveUV2ZW50KWxv
YWQoY29udGV4dCwgInZrRGVzdHJveUV2ZW50Iik7CistCXRhYmxlLT52a0Rlc3Ryb3lGZW5jZSA9
IChQRk5fdmtEZXN0cm95RmVuY2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RmVuY2UiKTsKKy0J
dGFibGUtPnZrRGVzdHJveUZyYW1lYnVmZmVyID0gKFBGTl92a0Rlc3Ryb3lGcmFtZWJ1ZmZlcils
b2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lGcmFtZWJ1ZmZlciIpOworLQl0YWJsZS0+dmtEZXN0cm95
SW1hZ2UgPSAoUEZOX3ZrRGVzdHJveUltYWdlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUltYWdl
Iik7CistCXRhYmxlLT52a0Rlc3Ryb3lJbWFnZVZpZXcgPSAoUEZOX3ZrRGVzdHJveUltYWdlVmll
dylsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lJbWFnZVZpZXciKTsKKy0JdGFibGUtPnZrRGVzdHJv
eVBpcGVsaW5lID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ry
b3lQaXBlbGluZSIpOworLQl0YWJsZS0+dmtEZXN0cm95UGlwZWxpbmVDYWNoZSA9IChQRk5fdmtE
ZXN0cm95UGlwZWxpbmVDYWNoZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQaXBlbGluZUNhY2hl
Iik7CistCXRhYmxlLT52a0Rlc3Ryb3lQaXBlbGluZUxheW91dCA9IChQRk5fdmtEZXN0cm95UGlw
ZWxpbmVMYXlvdXQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95UGlwZWxpbmVMYXlvdXQiKTsKKy0J
dGFibGUtPnZrRGVzdHJveVF1ZXJ5UG9vbCA9IChQRk5fdmtEZXN0cm95UXVlcnlQb29sKWxvYWQo
Y29udGV4dCwgInZrRGVzdHJveVF1ZXJ5UG9vbCIpOworLQl0YWJsZS0+dmtEZXN0cm95UmVuZGVy
UGFzcyA9IChQRk5fdmtEZXN0cm95UmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lS
ZW5kZXJQYXNzIik7CistCXRhYmxlLT52a0Rlc3Ryb3lTYW1wbGVyID0gKFBGTl92a0Rlc3Ryb3lT
YW1wbGVyKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNhbXBsZXIiKTsKKy0JdGFibGUtPnZrRGVz
dHJveVNlbWFwaG9yZSA9IChQRk5fdmtEZXN0cm95U2VtYXBob3JlKWxvYWQoY29udGV4dCwgInZr
RGVzdHJveVNlbWFwaG9yZSIpOworLQl0YWJsZS0+dmtEZXN0cm95U2hhZGVyTW9kdWxlID0gKFBG
Tl92a0Rlc3Ryb3lTaGFkZXJNb2R1bGUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2hhZGVyTW9k
dWxlIik7CistCXRhYmxlLT52a0RldmljZVdhaXRJZGxlID0gKFBGTl92a0RldmljZVdhaXRJZGxl
KWxvYWQoY29udGV4dCwgInZrRGV2aWNlV2FpdElkbGUiKTsKKy0JdGFibGUtPnZrRW5kQ29tbWFu
ZEJ1ZmZlciA9IChQRk5fdmtFbmRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZrRW5kQ29t
bWFuZEJ1ZmZlciIpOworLQl0YWJsZS0+dmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcyA9IChQRk5f
dmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcylsb2FkKGNvbnRleHQsICJ2a0ZsdXNoTWFwcGVkTWVt
b3J5UmFuZ2VzIik7CistCXRhYmxlLT52a0ZyZWVDb21tYW5kQnVmZmVycyA9IChQRk5fdmtGcmVl
Q29tbWFuZEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtGcmVlQ29tbWFuZEJ1ZmZlcnMiKTsKKy0J
dGFibGUtPnZrRnJlZURlc2NyaXB0b3JTZXRzID0gKFBGTl92a0ZyZWVEZXNjcmlwdG9yU2V0cyls
b2FkKGNvbnRleHQsICJ2a0ZyZWVEZXNjcmlwdG9yU2V0cyIpOworLQl0YWJsZS0+dmtGcmVlTWVt
b3J5ID0gKFBGTl92a0ZyZWVNZW1vcnkpbG9hZChjb250ZXh0LCAidmtGcmVlTWVtb3J5Iik7Cist
CXRhYmxlLT52a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtHZXRCdWZmZXJN
ZW1vcnlSZXF1aXJlbWVudHMpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJl
bWVudHMiKTsKKy0JdGFibGUtPnZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudCA9IChQRk5fdmtH
ZXREZXZpY2VNZW1vcnlDb21taXRtZW50KWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlTWVtb3J5
Q29tbWl0bWVudCIpOworLQl0YWJsZS0+dmtHZXREZXZpY2VRdWV1ZSA9IChQRk5fdmtHZXREZXZp
Y2VRdWV1ZSlsb2FkKGNvbnRleHQsICJ2a0dldERldmljZVF1ZXVlIik7CistCXRhYmxlLT52a0dl
dEV2ZW50U3RhdHVzID0gKFBGTl92a0dldEV2ZW50U3RhdHVzKWxvYWQoY29udGV4dCwgInZrR2V0
RXZlbnRTdGF0dXMiKTsKKy0JdGFibGUtPnZrR2V0RmVuY2VTdGF0dXMgPSAoUEZOX3ZrR2V0RmVu
Y2VTdGF0dXMpbG9hZChjb250ZXh0LCAidmtHZXRGZW5jZVN0YXR1cyIpOworLQl0YWJsZS0+dmtH
ZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVt
ZW50cylsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzIik7CistCXRh
YmxlLT52a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzID0gKFBGTl92a0dldEltYWdl
U3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VTcGFyc2VN
ZW1vcnlSZXF1aXJlbWVudHMiKTsKKy0JdGFibGUtPnZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91
dCA9IChQRk5fdmtHZXRJbWFnZVN1YnJlc291cmNlTGF5b3V0KWxvYWQoY29udGV4dCwgInZrR2V0
SW1hZ2VTdWJyZXNvdXJjZUxheW91dCIpOworLQl0YWJsZS0+dmtHZXRQaXBlbGluZUNhY2hlRGF0
YSA9IChQRk5fdmtHZXRQaXBlbGluZUNhY2hlRGF0YSlsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVs
aW5lQ2FjaGVEYXRhIik7CistCXRhYmxlLT52a0dldFF1ZXJ5UG9vbFJlc3VsdHMgPSAoUEZOX3Zr
R2V0UXVlcnlQb29sUmVzdWx0cylsb2FkKGNvbnRleHQsICJ2a0dldFF1ZXJ5UG9vbFJlc3VsdHMi
KTsKKy0JdGFibGUtPnZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5ID0gKFBGTl92a0dldFJlbmRl
ckFyZWFHcmFudWxhcml0eSlsb2FkKGNvbnRleHQsICJ2a0dldFJlbmRlckFyZWFHcmFudWxhcml0
eSIpOworLQl0YWJsZS0+dmtJbnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92a0lu
dmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMpbG9hZChjb250ZXh0LCAidmtJbnZhbGlkYXRlTWFw
cGVkTWVtb3J5UmFuZ2VzIik7CistCXRhYmxlLT52a01hcE1lbW9yeSA9IChQRk5fdmtNYXBNZW1v
cnkpbG9hZChjb250ZXh0LCAidmtNYXBNZW1vcnkiKTsKKy0JdGFibGUtPnZrTWVyZ2VQaXBlbGlu
ZUNhY2hlcyA9IChQRk5fdmtNZXJnZVBpcGVsaW5lQ2FjaGVzKWxvYWQoY29udGV4dCwgInZrTWVy
Z2VQaXBlbGluZUNhY2hlcyIpOworLQl0YWJsZS0+dmtRdWV1ZUJpbmRTcGFyc2UgPSAoUEZOX3Zr
UXVldWVCaW5kU3BhcnNlKWxvYWQoY29udGV4dCwgInZrUXVldWVCaW5kU3BhcnNlIik7CistCXRh
YmxlLT52a1F1ZXVlU3VibWl0ID0gKFBGTl92a1F1ZXVlU3VibWl0KWxvYWQoY29udGV4dCwgInZr
UXVldWVTdWJtaXQiKTsKKy0JdGFibGUtPnZrUXVldWVXYWl0SWRsZSA9IChQRk5fdmtRdWV1ZVdh
aXRJZGxlKWxvYWQoY29udGV4dCwgInZrUXVldWVXYWl0SWRsZSIpOworLQl0YWJsZS0+dmtSZXNl
dENvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrUmVzZXRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwg
InZrUmVzZXRDb21tYW5kQnVmZmVyIik7CistCXRhYmxlLT52a1Jlc2V0Q29tbWFuZFBvb2wgPSAo
UEZOX3ZrUmVzZXRDb21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0Q29tbWFuZFBvb2wi
KTsKKy0JdGFibGUtPnZrUmVzZXREZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtSZXNldERlc2NyaXB0
b3JQb29sKWxvYWQoY29udGV4dCwgInZrUmVzZXREZXNjcmlwdG9yUG9vbCIpOworLQl0YWJsZS0+
dmtSZXNldEV2ZW50ID0gKFBGTl92a1Jlc2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtSZXNldEV2
ZW50Iik7CistCXRhYmxlLT52a1Jlc2V0RmVuY2VzID0gKFBGTl92a1Jlc2V0RmVuY2VzKWxvYWQo
Y29udGV4dCwgInZrUmVzZXRGZW5jZXMiKTsKKy0JdGFibGUtPnZrU2V0RXZlbnQgPSAoUEZOX3Zr
U2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtTZXRFdmVudCIpOworLQl0YWJsZS0+dmtVbm1hcE1l
bW9yeSA9IChQRk5fdmtVbm1hcE1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a1VubWFwTWVtb3J5Iik7
CistCXRhYmxlLT52a1VwZGF0ZURlc2NyaXB0b3JTZXRzID0gKFBGTl92a1VwZGF0ZURlc2NyaXB0
b3JTZXRzKWxvYWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3JpcHRvclNldHMiKTsKKy0JdGFibGUt
PnZrV2FpdEZvckZlbmNlcyA9IChQRk5fdmtXYWl0Rm9yRmVuY2VzKWxvYWQoY29udGV4dCwgInZr
V2FpdEZvckZlbmNlcyIpOworKyAgICB0YWJsZS0+dmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzID0g
KFBGTl92a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtBbGxvY2F0ZUNv
bW1hbmRCdWZmZXJzIik7CisrICAgIHRhYmxlLT52a0FsbG9jYXRlRGVzY3JpcHRvclNldHMgPSAo
UEZOX3ZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2a0FsbG9jYXRlRGVz
Y3JpcHRvclNldHMiKTsKKysgICAgdGFibGUtPnZrQWxsb2NhdGVNZW1vcnkgPSAoUEZOX3ZrQWxs
b2NhdGVNZW1vcnkpbG9hZChjb250ZXh0LCAidmtBbGxvY2F0ZU1lbW9yeSIpOworKyAgICB0YWJs
ZS0+dmtCZWdpbkNvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrQmVnaW5Db21tYW5kQnVmZmVyKWxvYWQo
Y29udGV4dCwgInZrQmVnaW5Db21tYW5kQnVmZmVyIik7CisrICAgIHRhYmxlLT52a0JpbmRCdWZm
ZXJNZW1vcnkgPSAoUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a0JpbmRC
dWZmZXJNZW1vcnkiKTsKKysgICAgdGFibGUtPnZrQmluZEltYWdlTWVtb3J5ID0gKFBGTl92a0Jp
bmRJbWFnZU1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a0JpbmRJbWFnZU1lbW9yeSIpOworKyAgICB0
YWJsZS0+dmtDbWRCZWdpblF1ZXJ5ID0gKFBGTl92a0NtZEJlZ2luUXVlcnkpbG9hZChjb250ZXh0
LCAidmtDbWRCZWdpblF1ZXJ5Iik7CisrICAgIHRhYmxlLT52a0NtZEJlZ2luUmVuZGVyUGFzcyA9
IChQRk5fdmtDbWRCZWdpblJlbmRlclBhc3MpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblJlbmRl
clBhc3MiKTsKKysgICAgdGFibGUtPnZrQ21kQmluZERlc2NyaXB0b3JTZXRzID0gKFBGTl92a0Nt
ZEJpbmREZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmREZXNjcmlwdG9yU2V0
cyIpOworKyAgICB0YWJsZS0+dmtDbWRCaW5kSW5kZXhCdWZmZXIgPSAoUEZOX3ZrQ21kQmluZElu
ZGV4QnVmZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQmluZEluZGV4QnVmZmVyIik7CisrICAgIHRh
YmxlLT52a0NtZEJpbmRQaXBlbGluZSA9IChQRk5fdmtDbWRCaW5kUGlwZWxpbmUpbG9hZChjb250
ZXh0LCAidmtDbWRCaW5kUGlwZWxpbmUiKTsKKysgICAgdGFibGUtPnZrQ21kQmluZFZlcnRleEJ1
ZmZlcnMgPSAoUEZOX3ZrQ21kQmluZFZlcnRleEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtDbWRC
aW5kVmVydGV4QnVmZmVycyIpOworKyAgICB0YWJsZS0+dmtDbWRCbGl0SW1hZ2UgPSAoUEZOX3Zr
Q21kQmxpdEltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQmxpdEltYWdlIik7CisrICAgIHRhYmxl
LT52a0NtZENsZWFyQXR0YWNobWVudHMgPSAoUEZOX3ZrQ21kQ2xlYXJBdHRhY2htZW50cylsb2Fk
KGNvbnRleHQsICJ2a0NtZENsZWFyQXR0YWNobWVudHMiKTsKKysgICAgdGFibGUtPnZrQ21kQ2xl
YXJDb2xvckltYWdlID0gKFBGTl92a0NtZENsZWFyQ29sb3JJbWFnZSlsb2FkKGNvbnRleHQsICJ2
a0NtZENsZWFyQ29sb3JJbWFnZSIpOworKyAgICB0YWJsZS0+dmtDbWRDbGVhckRlcHRoU3RlbmNp
bEltYWdlID0gKFBGTl92a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UpbG9hZChjb250ZXh0LCAi
dmtDbWRDbGVhckRlcHRoU3RlbmNpbEltYWdlIik7CisrICAgIHRhYmxlLT52a0NtZENvcHlCdWZm
ZXIgPSAoUEZOX3ZrQ21kQ29weUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZENvcHlCdWZmZXIi
KTsKKysgICAgdGFibGUtPnZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UgPSAoUEZOX3ZrQ21kQ29weUJ1
ZmZlclRvSW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QnVmZmVyVG9JbWFnZSIpOworKyAg
ICB0YWJsZS0+dmtDbWRDb3B5SW1hZ2UgPSAoUEZOX3ZrQ21kQ29weUltYWdlKWxvYWQoY29udGV4
dCwgInZrQ21kQ29weUltYWdlIik7CisrICAgIHRhYmxlLT52a0NtZENvcHlJbWFnZVRvQnVmZmVy
ID0gKFBGTl92a0NtZENvcHlJbWFnZVRvQnVmZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUlt
YWdlVG9CdWZmZXIiKTsKKysgICAgdGFibGUtPnZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMgPSAo
UEZOX3ZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5UXVl
cnlQb29sUmVzdWx0cyIpOworKyAgICB0YWJsZS0+dmtDbWREaXNwYXRjaCA9IChQRk5fdmtDbWRE
aXNwYXRjaClsb2FkKGNvbnRleHQsICJ2a0NtZERpc3BhdGNoIik7CisrICAgIHRhYmxlLT52a0Nt
ZERpc3BhdGNoSW5kaXJlY3QgPSAoUEZOX3ZrQ21kRGlzcGF0Y2hJbmRpcmVjdClsb2FkKGNvbnRl
eHQsICJ2a0NtZERpc3BhdGNoSW5kaXJlY3QiKTsKKysgICAgdGFibGUtPnZrQ21kRHJhdyA9IChQ
Rk5fdmtDbWREcmF3KWxvYWQoY29udGV4dCwgInZrQ21kRHJhdyIpOworKyAgICB0YWJsZS0+dmtD
bWREcmF3SW5kZXhlZCA9IChQRk5fdmtDbWREcmF3SW5kZXhlZClsb2FkKGNvbnRleHQsICJ2a0Nt
ZERyYXdJbmRleGVkIik7CisrICAgIHRhYmxlLT52a0NtZERyYXdJbmRleGVkSW5kaXJlY3QgPSAo
UEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRl
eGVkSW5kaXJlY3QiKTsKKysgICAgdGFibGUtPnZrQ21kRHJhd0luZGlyZWN0ID0gKFBGTl92a0Nt
ZERyYXdJbmRpcmVjdClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdCIpOworKyAgICB0
YWJsZS0+dmtDbWRFbmRRdWVyeSA9IChQRk5fdmtDbWRFbmRRdWVyeSlsb2FkKGNvbnRleHQsICJ2
a0NtZEVuZFF1ZXJ5Iik7CisrICAgIHRhYmxlLT52a0NtZEVuZFJlbmRlclBhc3MgPSAoUEZOX3Zr
Q21kRW5kUmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFJlbmRlclBhc3MiKTsKKysg
ICAgdGFibGUtPnZrQ21kRXhlY3V0ZUNvbW1hbmRzID0gKFBGTl92a0NtZEV4ZWN1dGVDb21tYW5k
cylsb2FkKGNvbnRleHQsICJ2a0NtZEV4ZWN1dGVDb21tYW5kcyIpOworKyAgICB0YWJsZS0+dmtD
bWRGaWxsQnVmZmVyID0gKFBGTl92a0NtZEZpbGxCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRG
aWxsQnVmZmVyIik7CisrICAgIHRhYmxlLT52a0NtZE5leHRTdWJwYXNzID0gKFBGTl92a0NtZE5l
eHRTdWJwYXNzKWxvYWQoY29udGV4dCwgInZrQ21kTmV4dFN1YnBhc3MiKTsKKysgICAgdGFibGUt
PnZrQ21kUGlwZWxpbmVCYXJyaWVyID0gKFBGTl92a0NtZFBpcGVsaW5lQmFycmllcilsb2FkKGNv
bnRleHQsICJ2a0NtZFBpcGVsaW5lQmFycmllciIpOworKyAgICB0YWJsZS0+dmtDbWRQdXNoQ29u
c3RhbnRzID0gKFBGTl92a0NtZFB1c2hDb25zdGFudHMpbG9hZChjb250ZXh0LCAidmtDbWRQdXNo
Q29uc3RhbnRzIik7CisrICAgIHRhYmxlLT52a0NtZFJlc2V0RXZlbnQgPSAoUEZOX3ZrQ21kUmVz
ZXRFdmVudClsb2FkKGNvbnRleHQsICJ2a0NtZFJlc2V0RXZlbnQiKTsKKysgICAgdGFibGUtPnZr
Q21kUmVzZXRRdWVyeVBvb2wgPSAoUEZOX3ZrQ21kUmVzZXRRdWVyeVBvb2wpbG9hZChjb250ZXh0
LCAidmtDbWRSZXNldFF1ZXJ5UG9vbCIpOworKyAgICB0YWJsZS0+dmtDbWRSZXNvbHZlSW1hZ2Ug
PSAoUEZOX3ZrQ21kUmVzb2x2ZUltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kUmVzb2x2ZUltYWdl
Iik7CisrICAgIHRhYmxlLT52a0NtZFNldEJsZW5kQ29uc3RhbnRzID0gKFBGTl92a0NtZFNldEJs
ZW5kQ29uc3RhbnRzKWxvYWQoY29udGV4dCwgInZrQ21kU2V0QmxlbmRDb25zdGFudHMiKTsKKysg
ICAgdGFibGUtPnZrQ21kU2V0RGVwdGhCaWFzID0gKFBGTl92a0NtZFNldERlcHRoQmlhcylsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldERlcHRoQmlhcyIpOworKyAgICB0YWJsZS0+dmtDbWRTZXREZXB0
aEJvdW5kcyA9IChQRk5fdmtDbWRTZXREZXB0aEJvdW5kcylsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dERlcHRoQm91bmRzIik7CisrICAgIHRhYmxlLT52a0NtZFNldEV2ZW50ID0gKFBGTl92a0NtZFNl
dEV2ZW50KWxvYWQoY29udGV4dCwgInZrQ21kU2V0RXZlbnQiKTsKKysgICAgdGFibGUtPnZrQ21k
U2V0TGluZVdpZHRoID0gKFBGTl92a0NtZFNldExpbmVXaWR0aClsb2FkKGNvbnRleHQsICJ2a0Nt
ZFNldExpbmVXaWR0aCIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRTY2lzc29yID0gKFBGTl92a0Nt
ZFNldFNjaXNzb3IpbG9hZChjb250ZXh0LCAidmtDbWRTZXRTY2lzc29yIik7CisrICAgIHRhYmxl
LT52a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzayA9IChQRk5fdmtDbWRTZXRTdGVuY2lsQ29tcGFy
ZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXRTdGVuY2lsQ29tcGFyZU1hc2siKTsKKysgICAg
dGFibGUtPnZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSA9IChQRk5fdmtDbWRTZXRTdGVuY2lsUmVm
ZXJlbmNlKWxvYWQoY29udGV4dCwgInZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSIpOworKyAgICB0
YWJsZS0+dmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrID0gKFBGTl92a0NtZFNldFN0ZW5jaWxXcml0
ZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrIik7CisrICAgIHRh
YmxlLT52a0NtZFNldFZpZXdwb3J0ID0gKFBGTl92a0NtZFNldFZpZXdwb3J0KWxvYWQoY29udGV4
dCwgInZrQ21kU2V0Vmlld3BvcnQiKTsKKysgICAgdGFibGUtPnZrQ21kVXBkYXRlQnVmZmVyID0g
KFBGTl92a0NtZFVwZGF0ZUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZFVwZGF0ZUJ1ZmZlciIp
OworKyAgICB0YWJsZS0+dmtDbWRXYWl0RXZlbnRzID0gKFBGTl92a0NtZFdhaXRFdmVudHMpbG9h
ZChjb250ZXh0LCAidmtDbWRXYWl0RXZlbnRzIik7CisrICAgIHRhYmxlLT52a0NtZFdyaXRlVGlt
ZXN0YW1wID0gKFBGTl92a0NtZFdyaXRlVGltZXN0YW1wKWxvYWQoY29udGV4dCwgInZrQ21kV3Jp
dGVUaW1lc3RhbXAiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlQnVmZmVyID0gKFBGTl92a0NyZWF0
ZUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUJ1ZmZlciIpOworKyAgICB0YWJsZS0+dmtD
cmVhdGVCdWZmZXJWaWV3ID0gKFBGTl92a0NyZWF0ZUJ1ZmZlclZpZXcpbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVCdWZmZXJWaWV3Iik7CisrICAgIHRhYmxlLT52a0NyZWF0ZUNvbW1hbmRQb29sID0g
KFBGTl92a0NyZWF0ZUNvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQ29tbWFuZFBv
b2wiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lcyA9IChQRk5fdmtDcmVh
dGVDb21wdXRlUGlwZWxpbmVzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5l
cyIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtDcmVhdGVE
ZXNjcmlwdG9yUG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JQb29sIik7Cisr
ICAgIHRhYmxlLT52a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQgPSAoUEZOX3ZrQ3JlYXRlRGVz
Y3JpcHRvclNldExheW91dClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlv
dXQiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlRXZlbnQgPSAoUEZOX3ZrQ3JlYXRlRXZlbnQpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVFdmVudCIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVGZW5jZSA9
IChQRk5fdmtDcmVhdGVGZW5jZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUZlbmNlIik7CisrICAg
IHRhYmxlLT52a0NyZWF0ZUZyYW1lYnVmZmVyID0gKFBGTl92a0NyZWF0ZUZyYW1lYnVmZmVyKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlRnJhbWVidWZmZXIiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRl
R3JhcGhpY3NQaXBlbGluZXMgPSAoUEZOX3ZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMpbG9hZChj
b250ZXh0LCAidmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcyIpOworKyAgICB0YWJsZS0+dmtDcmVh
dGVJbWFnZSA9IChQRk5fdmtDcmVhdGVJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUltYWdl
Iik7CisrICAgIHRhYmxlLT52a0NyZWF0ZUltYWdlVmlldyA9IChQRk5fdmtDcmVhdGVJbWFnZVZp
ZXcpbG9hZChjb250ZXh0LCAidmtDcmVhdGVJbWFnZVZpZXciKTsKKysgICAgdGFibGUtPnZrQ3Jl
YXRlUGlwZWxpbmVDYWNoZSA9IChQRk5fdmtDcmVhdGVQaXBlbGluZUNhY2hlKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlUGlwZWxpbmVDYWNoZSIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVQaXBlbGlu
ZUxheW91dCA9IChQRk5fdmtDcmVhdGVQaXBlbGluZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZVBpcGVsaW5lTGF5b3V0Iik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVF1ZXJ5UG9vbCA9IChQ
Rk5fdmtDcmVhdGVRdWVyeVBvb2wpbG9hZChjb250ZXh0LCAidmtDcmVhdGVRdWVyeVBvb2wiKTsK
KysgICAgdGFibGUtPnZrQ3JlYXRlUmVuZGVyUGFzcyA9IChQRk5fdmtDcmVhdGVSZW5kZXJQYXNz
KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUmVuZGVyUGFzcyIpOworKyAgICB0YWJsZS0+dmtDcmVh
dGVTYW1wbGVyID0gKFBGTl92a0NyZWF0ZVNhbXBsZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVT
YW1wbGVyIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVNlbWFwaG9yZSA9IChQRk5fdmtDcmVhdGVT
ZW1hcGhvcmUpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTZW1hcGhvcmUiKTsKKysgICAgdGFibGUt
PnZrQ3JlYXRlU2hhZGVyTW9kdWxlID0gKFBGTl92a0NyZWF0ZVNoYWRlck1vZHVsZSlsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVNoYWRlck1vZHVsZSIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95QnVm
ZmVyID0gKFBGTl92a0Rlc3Ryb3lCdWZmZXIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95QnVmZmVy
Iik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lCdWZmZXJWaWV3ID0gKFBGTl92a0Rlc3Ryb3lCdWZm
ZXJWaWV3KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUJ1ZmZlclZpZXciKTsKKysgICAgdGFibGUt
PnZrRGVzdHJveUNvbW1hbmRQb29sID0gKFBGTl92a0Rlc3Ryb3lDb21tYW5kUG9vbClsb2FkKGNv
bnRleHQsICJ2a0Rlc3Ryb3lDb21tYW5kUG9vbCIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95RGVz
Y3JpcHRvclBvb2wgPSAoUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveURlc2NyaXB0b3JQb29sIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lEZXNjcmlw
dG9yU2V0TGF5b3V0ID0gKFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0KWxvYWQoY29u
dGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQiKTsKKysgICAgdGFibGUtPnZrRGVz
dHJveURldmljZSA9IChQRk5fdmtEZXN0cm95RGV2aWNlKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eURldmljZSIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95RXZlbnQgPSAoUEZOX3ZrRGVzdHJveUV2
ZW50KWxvYWQoY29udGV4dCwgInZrRGVzdHJveUV2ZW50Iik7CisrICAgIHRhYmxlLT52a0Rlc3Ry
b3lGZW5jZSA9IChQRk5fdmtEZXN0cm95RmVuY2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RmVu
Y2UiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveUZyYW1lYnVmZmVyID0gKFBGTl92a0Rlc3Ryb3lG
cmFtZWJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lGcmFtZWJ1ZmZlciIpOworKyAgICB0
YWJsZS0+dmtEZXN0cm95SW1hZ2UgPSAoUEZOX3ZrRGVzdHJveUltYWdlKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveUltYWdlIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lJbWFnZVZpZXcgPSAoUEZO
X3ZrRGVzdHJveUltYWdlVmlldylsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lJbWFnZVZpZXciKTsK
KysgICAgdGFibGUtPnZrRGVzdHJveVBpcGVsaW5lID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZSls
b2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQaXBlbGluZSIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95
UGlwZWxpbmVDYWNoZSA9IChQRk5fdmtEZXN0cm95UGlwZWxpbmVDYWNoZSlsb2FkKGNvbnRleHQs
ICJ2a0Rlc3Ryb3lQaXBlbGluZUNhY2hlIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lQaXBlbGlu
ZUxheW91dCA9IChQRk5fdmtEZXN0cm95UGlwZWxpbmVMYXlvdXQpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95UGlwZWxpbmVMYXlvdXQiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveVF1ZXJ5UG9vbCA9
IChQRk5fdmtEZXN0cm95UXVlcnlQb29sKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVF1ZXJ5UG9v
bCIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95UmVuZGVyUGFzcyA9IChQRk5fdmtEZXN0cm95UmVu
ZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lSZW5kZXJQYXNzIik7CisrICAgIHRhYmxl
LT52a0Rlc3Ryb3lTYW1wbGVyID0gKFBGTl92a0Rlc3Ryb3lTYW1wbGVyKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveVNhbXBsZXIiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveVNlbWFwaG9yZSA9IChQ
Rk5fdmtEZXN0cm95U2VtYXBob3JlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNlbWFwaG9yZSIp
OworKyAgICB0YWJsZS0+dmtEZXN0cm95U2hhZGVyTW9kdWxlID0gKFBGTl92a0Rlc3Ryb3lTaGFk
ZXJNb2R1bGUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2hhZGVyTW9kdWxlIik7CisrICAgIHRh
YmxlLT52a0RldmljZVdhaXRJZGxlID0gKFBGTl92a0RldmljZVdhaXRJZGxlKWxvYWQoY29udGV4
dCwgInZrRGV2aWNlV2FpdElkbGUiKTsKKysgICAgdGFibGUtPnZrRW5kQ29tbWFuZEJ1ZmZlciA9
IChQRk5fdmtFbmRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZrRW5kQ29tbWFuZEJ1ZmZl
ciIpOworKyAgICB0YWJsZS0+dmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcyA9IChQRk5fdmtGbHVz
aE1hcHBlZE1lbW9yeVJhbmdlcylsb2FkKGNvbnRleHQsICJ2a0ZsdXNoTWFwcGVkTWVtb3J5UmFu
Z2VzIik7CisrICAgIHRhYmxlLT52a0ZyZWVDb21tYW5kQnVmZmVycyA9IChQRk5fdmtGcmVlQ29t
bWFuZEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtGcmVlQ29tbWFuZEJ1ZmZlcnMiKTsKKysgICAg
dGFibGUtPnZrRnJlZURlc2NyaXB0b3JTZXRzID0gKFBGTl92a0ZyZWVEZXNjcmlwdG9yU2V0cyls
b2FkKGNvbnRleHQsICJ2a0ZyZWVEZXNjcmlwdG9yU2V0cyIpOworKyAgICB0YWJsZS0+dmtGcmVl
TWVtb3J5ID0gKFBGTl92a0ZyZWVNZW1vcnkpbG9hZChjb250ZXh0LCAidmtGcmVlTWVtb3J5Iik7
CisrICAgIHRhYmxlLT52a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtHZXRC
dWZmZXJNZW1vcnlSZXF1aXJlbWVudHMpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJNZW1vcnlS
ZXF1aXJlbWVudHMiKTsKKysgICAgdGFibGUtPnZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudCA9
IChQRk5fdmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50KWxvYWQoY29udGV4dCwgInZrR2V0RGV2
aWNlTWVtb3J5Q29tbWl0bWVudCIpOworKyAgICB0YWJsZS0+dmtHZXREZXZpY2VRdWV1ZSA9IChQ
Rk5fdmtHZXREZXZpY2VRdWV1ZSlsb2FkKGNvbnRleHQsICJ2a0dldERldmljZVF1ZXVlIik7Cisr
ICAgIHRhYmxlLT52a0dldEV2ZW50U3RhdHVzID0gKFBGTl92a0dldEV2ZW50U3RhdHVzKWxvYWQo
Y29udGV4dCwgInZrR2V0RXZlbnRTdGF0dXMiKTsKKysgICAgdGFibGUtPnZrR2V0RmVuY2VTdGF0
dXMgPSAoUEZOX3ZrR2V0RmVuY2VTdGF0dXMpbG9hZChjb250ZXh0LCAidmtHZXRGZW5jZVN0YXR1
cyIpOworKyAgICB0YWJsZS0+dmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtH
ZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cylsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlTWVtb3J5
UmVxdWlyZW1lbnRzIik7CisrICAgIHRhYmxlLT52a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWly
ZW1lbnRzID0gKFBGTl92a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzKWxvYWQoY29u
dGV4dCwgInZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMiKTsKKysgICAgdGFibGUt
PnZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dCA9IChQRk5fdmtHZXRJbWFnZVN1YnJlc291cmNl
TGF5b3V0KWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dCIpOworKyAg
ICB0YWJsZS0+dmtHZXRQaXBlbGluZUNhY2hlRGF0YSA9IChQRk5fdmtHZXRQaXBlbGluZUNhY2hl
RGF0YSlsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lQ2FjaGVEYXRhIik7CisrICAgIHRhYmxl
LT52a0dldFF1ZXJ5UG9vbFJlc3VsdHMgPSAoUEZOX3ZrR2V0UXVlcnlQb29sUmVzdWx0cylsb2Fk
KGNvbnRleHQsICJ2a0dldFF1ZXJ5UG9vbFJlc3VsdHMiKTsKKysgICAgdGFibGUtPnZrR2V0UmVu
ZGVyQXJlYUdyYW51bGFyaXR5ID0gKFBGTl92a0dldFJlbmRlckFyZWFHcmFudWxhcml0eSlsb2Fk
KGNvbnRleHQsICJ2a0dldFJlbmRlckFyZWFHcmFudWxhcml0eSIpOworKyAgICB0YWJsZS0+dmtJ
bnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92a0ludmFsaWRhdGVNYXBwZWRNZW1v
cnlSYW5nZXMpbG9hZChjb250ZXh0LCAidmtJbnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzIik7
CisrICAgIHRhYmxlLT52a01hcE1lbW9yeSA9IChQRk5fdmtNYXBNZW1vcnkpbG9hZChjb250ZXh0
LCAidmtNYXBNZW1vcnkiKTsKKysgICAgdGFibGUtPnZrTWVyZ2VQaXBlbGluZUNhY2hlcyA9IChQ
Rk5fdmtNZXJnZVBpcGVsaW5lQ2FjaGVzKWxvYWQoY29udGV4dCwgInZrTWVyZ2VQaXBlbGluZUNh
Y2hlcyIpOworKyAgICB0YWJsZS0+dmtRdWV1ZUJpbmRTcGFyc2UgPSAoUEZOX3ZrUXVldWVCaW5k
U3BhcnNlKWxvYWQoY29udGV4dCwgInZrUXVldWVCaW5kU3BhcnNlIik7CisrICAgIHRhYmxlLT52
a1F1ZXVlU3VibWl0ID0gKFBGTl92a1F1ZXVlU3VibWl0KWxvYWQoY29udGV4dCwgInZrUXVldWVT
dWJtaXQiKTsKKysgICAgdGFibGUtPnZrUXVldWVXYWl0SWRsZSA9IChQRk5fdmtRdWV1ZVdhaXRJ
ZGxlKWxvYWQoY29udGV4dCwgInZrUXVldWVXYWl0SWRsZSIpOworKyAgICB0YWJsZS0+dmtSZXNl
dENvbW1hbmRCdWZmZXIgPSAoUEZOX3ZrUmVzZXRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwg
InZrUmVzZXRDb21tYW5kQnVmZmVyIik7CisrICAgIHRhYmxlLT52a1Jlc2V0Q29tbWFuZFBvb2wg
PSAoUEZOX3ZrUmVzZXRDb21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0Q29tbWFuZFBv
b2wiKTsKKysgICAgdGFibGUtPnZrUmVzZXREZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtSZXNldERl
c2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwgInZrUmVzZXREZXNjcmlwdG9yUG9vbCIpOworKyAg
ICB0YWJsZS0+dmtSZXNldEV2ZW50ID0gKFBGTl92a1Jlc2V0RXZlbnQpbG9hZChjb250ZXh0LCAi
dmtSZXNldEV2ZW50Iik7CisrICAgIHRhYmxlLT52a1Jlc2V0RmVuY2VzID0gKFBGTl92a1Jlc2V0
RmVuY2VzKWxvYWQoY29udGV4dCwgInZrUmVzZXRGZW5jZXMiKTsKKysgICAgdGFibGUtPnZrU2V0
RXZlbnQgPSAoUEZOX3ZrU2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtTZXRFdmVudCIpOworKyAg
ICB0YWJsZS0+dmtVbm1hcE1lbW9yeSA9IChQRk5fdmtVbm1hcE1lbW9yeSlsb2FkKGNvbnRleHQs
ICJ2a1VubWFwTWVtb3J5Iik7CisrICAgIHRhYmxlLT52a1VwZGF0ZURlc2NyaXB0b3JTZXRzID0g
KFBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRzKWxvYWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3Jp
cHRvclNldHMiKTsKKysgICAgdGFibGUtPnZrV2FpdEZvckZlbmNlcyA9IChQRk5fdmtXYWl0Rm9y
RmVuY2VzKWxvYWQoY29udGV4dCwgInZrV2FpdEZvckZlbmNlcyIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX1ZFUlNJT05fMV8wKSAqLworICNpZiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKQorLQl0
YWJsZS0+dmtCaW5kQnVmZmVyTWVtb3J5MiA9IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5Milsb2Fk
KGNvbnRleHQsICJ2a0JpbmRCdWZmZXJNZW1vcnkyIik7CistCXRhYmxlLT52a0JpbmRJbWFnZU1l
bW9yeTIgPSAoUEZOX3ZrQmluZEltYWdlTWVtb3J5Milsb2FkKGNvbnRleHQsICJ2a0JpbmRJbWFn
ZU1lbW9yeTIiKTsKKy0JdGFibGUtPnZrQ21kRGlzcGF0Y2hCYXNlID0gKFBGTl92a0NtZERpc3Bh
dGNoQmFzZSlsb2FkKGNvbnRleHQsICJ2a0NtZERpc3BhdGNoQmFzZSIpOworLQl0YWJsZS0+dmtD
bWRTZXREZXZpY2VNYXNrID0gKFBGTl92a0NtZFNldERldmljZU1hc2spbG9hZChjb250ZXh0LCAi
dmtDbWRTZXREZXZpY2VNYXNrIik7CistCXRhYmxlLT52a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVU
ZW1wbGF0ZSA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUiKTsKKy0JdGFibGUtPnZrQ3Jl
YXRlU2FtcGxlclljYmNyQ29udmVyc2lvbiA9IChQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252
ZXJzaW9uKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbiIpOwor
LQl0YWJsZS0+dmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlID0gKFBGTl92a0Rlc3Ry
b3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3Jp
cHRvclVwZGF0ZVRlbXBsYXRlIik7CistCXRhYmxlLT52a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252
ZXJzaW9uID0gKFBGTl92a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uKWxvYWQoY29udGV4
dCwgInZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb24iKTsKKy0JdGFibGUtPnZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzMiA9IChQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVu
dHMyKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworLQl0
YWJsZS0+dmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydCA9IChQRk5fdmtHZXREZXNjcmlw
dG9yU2V0TGF5b3V0U3VwcG9ydClsb2FkKGNvbnRleHQsICJ2a0dldERlc2NyaXB0b3JTZXRMYXlv
dXRTdXBwb3J0Iik7CistCXRhYmxlLT52a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVz
ID0gKFBGTl92a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzKWxvYWQoY29udGV4dCwg
InZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMiKTsKKy0JdGFibGUtPnZrR2V0RGV2
aWNlUXVldWUyID0gKFBGTl92a0dldERldmljZVF1ZXVlMilsb2FkKGNvbnRleHQsICJ2a0dldERl
dmljZVF1ZXVlMiIpOworLQl0YWJsZS0+dmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czIgPSAo
UEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyKWxvYWQoY29udGV4dCwgInZrR2V0SW1h
Z2VNZW1vcnlSZXF1aXJlbWVudHMyIik7CistCXRhYmxlLT52a0dldEltYWdlU3BhcnNlTWVtb3J5
UmVxdWlyZW1lbnRzMiA9IChQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czIp
bG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czIiKTsKKy0J
dGFibGUtPnZrVHJpbUNvbW1hbmRQb29sID0gKFBGTl92a1RyaW1Db21tYW5kUG9vbClsb2FkKGNv
bnRleHQsICJ2a1RyaW1Db21tYW5kUG9vbCIpOworLQl0YWJsZS0+dmtVcGRhdGVEZXNjcmlwdG9y
U2V0V2l0aFRlbXBsYXRlID0gKFBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUp
bG9hZChjb250ZXh0LCAidmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlIik7CisrICAg
IHRhYmxlLT52a0JpbmRCdWZmZXJNZW1vcnkyID0gKFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyKWxv
YWQoY29udGV4dCwgInZrQmluZEJ1ZmZlck1lbW9yeTIiKTsKKysgICAgdGFibGUtPnZrQmluZElt
YWdlTWVtb3J5MiA9IChQRk5fdmtCaW5kSW1hZ2VNZW1vcnkyKWxvYWQoY29udGV4dCwgInZrQmlu
ZEltYWdlTWVtb3J5MiIpOworKyAgICB0YWJsZS0+dmtDbWREaXNwYXRjaEJhc2UgPSAoUEZOX3Zr
Q21kRGlzcGF0Y2hCYXNlKWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hCYXNlIik7CisrICAg
IHRhYmxlLT52a0NtZFNldERldmljZU1hc2sgPSAoUEZOX3ZrQ21kU2V0RGV2aWNlTWFzaylsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldERldmljZU1hc2siKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlRGVz
Y3JpcHRvclVwZGF0ZVRlbXBsYXRlID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1w
bGF0ZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZSIpOwor
KyAgICB0YWJsZS0+dmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uID0gKFBGTl92a0NyZWF0
ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24pbG9hZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVyWWNi
Y3JDb252ZXJzaW9uIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVt
cGxhdGUgPSAoUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZSlsb2FkKGNvbnRl
eHQsICJ2a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUiKTsKKysgICAgdGFibGUtPnZr
RGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb24gPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2Jj
ckNvbnZlcnNpb24pbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lv
biIpOworKyAgICB0YWJsZS0+dmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyID0gKFBGTl92
a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJN
ZW1vcnlSZXF1aXJlbWVudHMyIik7CisrICAgIHRhYmxlLT52a0dldERlc2NyaXB0b3JTZXRMYXlv
dXRTdXBwb3J0ID0gKFBGTl92a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0KWxvYWQoY29u
dGV4dCwgInZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBvcnQiKTsKKysgICAgdGFibGUtPnZr
R2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQ
ZWVyTWVtb3J5RmVhdHVyZXMpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFBlZXJNZW1v
cnlGZWF0dXJlcyIpOworKyAgICB0YWJsZS0+dmtHZXREZXZpY2VRdWV1ZTIgPSAoUEZOX3ZrR2V0
RGV2aWNlUXVldWUyKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlUXVldWUyIik7CisrICAgIHRh
YmxlLT52a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMiA9IChQRk5fdmtHZXRJbWFnZU1lbW9y
eVJlcXVpcmVtZW50czIpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50
czIiKTsKKysgICAgdGFibGUtPnZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyID0g
KFBGTl92a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMilsb2FkKGNvbnRleHQsICJ2
a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworKyAgICB0YWJsZS0+dmtUcmlt
Q29tbWFuZFBvb2wgPSAoUEZOX3ZrVHJpbUNvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrVHJp
bUNvbW1hbmRQb29sIik7CisrICAgIHRhYmxlLT52a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVt
cGxhdGUgPSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZSlsb2FkKGNvbnRl
eHQsICJ2a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19WRVJTSU9OXzFfMSkgKi8KKyAjaWYgZGVmaW5lZChWS19BTURfYnVmZmVyX21hcmtl
cikKKy0JdGFibGUtPnZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQgPSAoUEZOX3ZrQ21kV3JpdGVC
dWZmZXJNYXJrZXJBTUQpbG9hZChjb250ZXh0LCAidmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRCIp
OworKyAgICB0YWJsZS0+dmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRCA9IChQRk5fdmtDbWRXcml0
ZUJ1ZmZlck1hcmtlckFNRClsb2FkKGNvbnRleHQsICJ2a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1E
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2J1ZmZlcl9tYXJrZXIpICovCisgI2lmIGRl
ZmluZWQoVktfQU1EX2Rpc3BsYXlfbmF0aXZlX2hkcikKKy0JdGFibGUtPnZrU2V0TG9jYWxEaW1t
aW5nQU1EID0gKFBGTl92a1NldExvY2FsRGltbWluZ0FNRClsb2FkKGNvbnRleHQsICJ2a1NldExv
Y2FsRGltbWluZ0FNRCIpOworKyAgICB0YWJsZS0+dmtTZXRMb2NhbERpbW1pbmdBTUQgPSAoUEZO
X3ZrU2V0TG9jYWxEaW1taW5nQU1EKWxvYWQoY29udGV4dCwgInZrU2V0TG9jYWxEaW1taW5nQU1E
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2Rpc3BsYXlfbmF0aXZlX2hkcikgKi8KKyAj
aWYgZGVmaW5lZChWS19BTURfZHJhd19pbmRpcmVjdF9jb3VudCkKKy0JdGFibGUtPnZrQ21kRHJh
d0luZGV4ZWRJbmRpcmVjdENvdW50QU1EID0gKFBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3RD
b3VudEFNRClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRCIp
OworLQl0YWJsZS0+dmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCA9IChQRk5fdmtDbWREcmF3SW5k
aXJlY3RDb3VudEFNRClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdENvdW50QU1EIik7
CisrICAgIHRhYmxlLT52a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRCA9IChQRk5fdmtD
bWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRBTUQpbG9hZChjb250ZXh0LCAidmtDbWREcmF3SW5k
ZXhlZEluZGlyZWN0Q291bnRBTUQiKTsKKysgICAgdGFibGUtPnZrQ21kRHJhd0luZGlyZWN0Q291
bnRBTUQgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291bnRBTUQpbG9hZChjb250ZXh0LCAidmtD
bWREcmF3SW5kaXJlY3RDb3VudEFNRCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0FNRF9kcmF3
X2luZGlyZWN0X2NvdW50KSAqLworICNpZiBkZWZpbmVkKFZLX0FNRF9zaGFkZXJfaW5mbykKKy0J
dGFibGUtPnZrR2V0U2hhZGVySW5mb0FNRCA9IChQRk5fdmtHZXRTaGFkZXJJbmZvQU1EKWxvYWQo
Y29udGV4dCwgInZrR2V0U2hhZGVySW5mb0FNRCIpOworKyAgICB0YWJsZS0+dmtHZXRTaGFkZXJJ
bmZvQU1EID0gKFBGTl92a0dldFNoYWRlckluZm9BTUQpbG9hZChjb250ZXh0LCAidmtHZXRTaGFk
ZXJJbmZvQU1EIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX3NoYWRlcl9pbmZvKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0FORFJPSURfZXh0ZXJuYWxfbWVtb3J5X2FuZHJvaWRfaGFyZHdhcmVf
YnVmZmVyKQorLQl0YWJsZS0+dmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5E
Uk9JRCA9IChQRk5fdmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRCls
b2FkKGNvbnRleHQsICJ2a0dldEFuZHJvaWRIYXJkd2FyZUJ1ZmZlclByb3BlcnRpZXNBTkRST0lE
Iik7CistCXRhYmxlLT52a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQgPSAo
UEZOX3ZrR2V0TWVtb3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRClsb2FkKGNvbnRleHQs
ICJ2a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQiKTsKKysgICAgdGFibGUt
PnZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQgPSAoUEZOX3ZrR2V0
QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQpbG9hZChjb250ZXh0LCAidmtH
ZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRCIpOworKyAgICB0YWJsZS0+
dmtHZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVCdWZmZXJBTkRST0lEID0gKFBGTl92a0dldE1lbW9y
eUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlB
bmRyb2lkSGFyZHdhcmVCdWZmZXJBTkRST0lEIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU5E
Uk9JRF9leHRlcm5hbF9tZW1vcnlfYW5kcm9pZF9oYXJkd2FyZV9idWZmZXIpICovCisgI2lmIGRl
ZmluZWQoVktfRVhUX2J1ZmZlcl9kZXZpY2VfYWRkcmVzcykKKy0JdGFibGUtPnZrR2V0QnVmZmVy
RGV2aWNlQWRkcmVzc0VYVCA9IChQRk5fdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUKWxvYWQo
Y29udGV4dCwgInZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VYVCIpOworKyAgICB0YWJsZS0+dmtH
ZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUID0gKFBGTl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NF
WFQpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUIik7CisgI2VuZGlm
IC8qIGRlZmluZWQoVktfRVhUX2J1ZmZlcl9kZXZpY2VfYWRkcmVzcykgKi8KKyAjaWYgZGVmaW5l
ZChWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzKQorLQl0YWJsZS0+dmtHZXRDYWxpYnJhdGVk
VGltZXN0YW1wc0VYVCA9IChQRk5fdmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVClsb2FkKGNv
bnRleHQsICJ2a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUIik7CisrICAgIHRhYmxlLT52a0dl
dENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUID0gKFBGTl92a0dldENhbGlicmF0ZWRUaW1lc3RhbXBz
RVhUKWxvYWQoY29udGV4dCwgInZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzKSAqLworICNpZiBkZWZp
bmVkKFZLX0VYVF9jb25kaXRpb25hbF9yZW5kZXJpbmcpCistCXRhYmxlLT52a0NtZEJlZ2luQ29u
ZGl0aW9uYWxSZW5kZXJpbmdFWFQgPSAoUEZOX3ZrQ21kQmVnaW5Db25kaXRpb25hbFJlbmRlcmlu
Z0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQiKTsK
Ky0JdGFibGUtPnZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQgPSAoUEZOX3ZrQ21kRW5k
Q29uZGl0aW9uYWxSZW5kZXJpbmdFWFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmRDb25kaXRpb25h
bFJlbmRlcmluZ0VYVCIpOworKyAgICB0YWJsZS0+dmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVy
aW5nRVhUID0gKFBGTl92a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQpbG9hZChjb250
ZXh0LCAidmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIik7CisrICAgIHRhYmxlLT52
a0NtZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhUID0gKFBGTl92a0NtZEVuZENvbmRpdGlvbmFs
UmVuZGVyaW5nRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJpbmdF
WFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfY29uZGl0aW9uYWxfcmVuZGVyaW5nKSAq
LworICNpZiBkZWZpbmVkKFZLX0VYVF9kZWJ1Z19tYXJrZXIpCistCXRhYmxlLT52a0NtZERlYnVn
TWFya2VyQmVnaW5FWFQgPSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJCZWdpbkVYVClsb2FkKGNvbnRl
eHQsICJ2a0NtZERlYnVnTWFya2VyQmVnaW5FWFQiKTsKKy0JdGFibGUtPnZrQ21kRGVidWdNYXJr
ZXJFbmRFWFQgPSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJFbmRFWFQpbG9hZChjb250ZXh0LCAidmtD
bWREZWJ1Z01hcmtlckVuZEVYVCIpOworLQl0YWJsZS0+dmtDbWREZWJ1Z01hcmtlckluc2VydEVY
VCA9IChQRk5fdmtDbWREZWJ1Z01hcmtlckluc2VydEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERl
YnVnTWFya2VySW5zZXJ0RVhUIik7CistCXRhYmxlLT52a0RlYnVnTWFya2VyU2V0T2JqZWN0TmFt
ZUVYVCA9IChQRk5fdmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQpbG9hZChjb250ZXh0LCAi
dmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQiKTsKKy0JdGFibGUtPnZrRGVidWdNYXJrZXJT
ZXRPYmplY3RUYWdFWFQgPSAoUEZOX3ZrRGVidWdNYXJrZXJTZXRPYmplY3RUYWdFWFQpbG9hZChj
b250ZXh0LCAidmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVCIpOworKyAgICB0YWJsZS0+dmtD
bWREZWJ1Z01hcmtlckJlZ2luRVhUID0gKFBGTl92a0NtZERlYnVnTWFya2VyQmVnaW5FWFQpbG9h
ZChjb250ZXh0LCAidmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUIik7CisrICAgIHRhYmxlLT52a0Nt
ZERlYnVnTWFya2VyRW5kRVhUID0gKFBGTl92a0NtZERlYnVnTWFya2VyRW5kRVhUKWxvYWQoY29u
dGV4dCwgInZrQ21kRGVidWdNYXJrZXJFbmRFWFQiKTsKKysgICAgdGFibGUtPnZrQ21kRGVidWdN
YXJrZXJJbnNlcnRFWFQgPSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJJbnNlcnRFWFQpbG9hZChjb250
ZXh0LCAidmtDbWREZWJ1Z01hcmtlckluc2VydEVYVCIpOworKyAgICB0YWJsZS0+dmtEZWJ1Z01h
cmtlclNldE9iamVjdE5hbWVFWFQgPSAoUEZOX3ZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhU
KWxvYWQoY29udGV4dCwgInZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUIik7CisrICAgIHRh
YmxlLT52a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUID0gKFBGTl92a0RlYnVnTWFya2VyU2V0
T2JqZWN0VGFnRVhUKWxvYWQoY29udGV4dCwgInZrRGVidWdNYXJrZXJTZXRPYmplY3RUYWdFWFQi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZGVidWdfbWFya2VyKSAqLworICNpZiBkZWZp
bmVkKFZLX0VYVF9kaXNjYXJkX3JlY3RhbmdsZXMpCistCXRhYmxlLT52a0NtZFNldERpc2NhcmRS
ZWN0YW5nbGVFWFQgPSAoUEZOX3ZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVClsb2FkKGNvbnRl
eHQsICJ2a0NtZFNldERpc2NhcmRSZWN0YW5nbGVFWFQiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0
RGlzY2FyZFJlY3RhbmdsZUVYVCA9IChQRk5fdmtDbWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUKWxv
YWQoY29udGV4dCwgInZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVCIpOworICNlbmRpZiAvKiBk
ZWZpbmVkKFZLX0VYVF9kaXNjYXJkX3JlY3RhbmdsZXMpICovCisgI2lmIGRlZmluZWQoVktfRVhU
X2Rpc3BsYXlfY29udHJvbCkKKy0JdGFibGUtPnZrRGlzcGxheVBvd2VyQ29udHJvbEVYVCA9IChQ
Rk5fdmtEaXNwbGF5UG93ZXJDb250cm9sRVhUKWxvYWQoY29udGV4dCwgInZrRGlzcGxheVBvd2Vy
Q29udHJvbEVYVCIpOworLQl0YWJsZS0+dmtHZXRTd2FwY2hhaW5Db3VudGVyRVhUID0gKFBGTl92
a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQpbG9hZChjb250ZXh0LCAidmtHZXRTd2FwY2hhaW5Db3Vu
dGVyRVhUIik7CistCXRhYmxlLT52a1JlZ2lzdGVyRGV2aWNlRXZlbnRFWFQgPSAoUEZOX3ZrUmVn
aXN0ZXJEZXZpY2VFdmVudEVYVClsb2FkKGNvbnRleHQsICJ2a1JlZ2lzdGVyRGV2aWNlRXZlbnRF
WFQiKTsKKy0JdGFibGUtPnZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQgPSAoUEZOX3ZrUmVnaXN0
ZXJEaXNwbGF5RXZlbnRFWFQpbG9hZChjb250ZXh0LCAidmtSZWdpc3RlckRpc3BsYXlFdmVudEVY
VCIpOworKyAgICB0YWJsZS0+dmtEaXNwbGF5UG93ZXJDb250cm9sRVhUID0gKFBGTl92a0Rpc3Bs
YXlQb3dlckNvbnRyb2xFWFQpbG9hZChjb250ZXh0LCAidmtEaXNwbGF5UG93ZXJDb250cm9sRVhU
Iik7CisrICAgIHRhYmxlLT52a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQgPSAoUEZOX3ZrR2V0U3dh
cGNoYWluQ291bnRlckVYVClsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQi
KTsKKysgICAgdGFibGUtPnZrUmVnaXN0ZXJEZXZpY2VFdmVudEVYVCA9IChQRk5fdmtSZWdpc3Rl
ckRldmljZUV2ZW50RVhUKWxvYWQoY29udGV4dCwgInZrUmVnaXN0ZXJEZXZpY2VFdmVudEVYVCIp
OworKyAgICB0YWJsZS0+dmtSZWdpc3RlckRpc3BsYXlFdmVudEVYVCA9IChQRk5fdmtSZWdpc3Rl
ckRpc3BsYXlFdmVudEVYVClsb2FkKGNvbnRleHQsICJ2a1JlZ2lzdGVyRGlzcGxheUV2ZW50RVhU
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2Rpc3BsYXlfY29udHJvbCkgKi8KKyAjaWYg
ZGVmaW5lZChWS19FWFRfZXh0ZXJuYWxfbWVtb3J5X2hvc3QpCistCXRhYmxlLT52a0dldE1lbW9y
eUhvc3RQb2ludGVyUHJvcGVydGllc0VYVCA9IChQRk5fdmtHZXRNZW1vcnlIb3N0UG9pbnRlclBy
b3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRp
ZXNFWFQiKTsKKysgICAgdGFibGUtPnZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzRVhU
ID0gKFBGTl92a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVClsb2FkKGNvbnRleHQs
ICJ2a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVCIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0VYVF9leHRlcm5hbF9tZW1vcnlfaG9zdCkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRf
ZnVsbF9zY3JlZW5fZXhjbHVzaXZlKQorLQl0YWJsZS0+dmtBY3F1aXJlRnVsbFNjcmVlbkV4Y2x1
c2l2ZU1vZGVFWFQgPSAoUEZOX3ZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUKWxv
YWQoY29udGV4dCwgInZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIik7CistCXRh
YmxlLT52a1JlbGVhc2VGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCA9IChQRk5fdmtSZWxlYXNl
RnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQpbG9hZChjb250ZXh0LCAidmtSZWxlYXNlRnVsbFNj
cmVlbkV4Y2x1c2l2ZU1vZGVFWFQiKTsKKysgICAgdGFibGUtPnZrQWNxdWlyZUZ1bGxTY3JlZW5F
eGNsdXNpdmVNb2RlRVhUID0gKFBGTl92a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVY
VClsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCIpOwor
KyAgICB0YWJsZS0+dmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQgPSAoUEZOX3Zr
UmVsZWFzZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUKWxvYWQoY29udGV4dCwgInZrUmVsZWFz
ZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhU
X2Z1bGxfc2NyZWVuX2V4Y2x1c2l2ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfaGRyX21ldGFk
YXRhKQorLQl0YWJsZS0+dmtTZXRIZHJNZXRhZGF0YUVYVCA9IChQRk5fdmtTZXRIZHJNZXRhZGF0
YUVYVClsb2FkKGNvbnRleHQsICJ2a1NldEhkck1ldGFkYXRhRVhUIik7CisrICAgIHRhYmxlLT52
a1NldEhkck1ldGFkYXRhRVhUID0gKFBGTl92a1NldEhkck1ldGFkYXRhRVhUKWxvYWQoY29udGV4
dCwgInZrU2V0SGRyTWV0YWRhdGFFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfaGRy
X21ldGFkYXRhKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9ob3N0X3F1ZXJ5X3Jlc2V0KQorLQl0
YWJsZS0+dmtSZXNldFF1ZXJ5UG9vbEVYVCA9IChQRk5fdmtSZXNldFF1ZXJ5UG9vbEVYVClsb2Fk
KGNvbnRleHQsICJ2a1Jlc2V0UXVlcnlQb29sRVhUIik7CisrICAgIHRhYmxlLT52a1Jlc2V0UXVl
cnlQb29sRVhUID0gKFBGTl92a1Jlc2V0UXVlcnlQb29sRVhUKWxvYWQoY29udGV4dCwgInZrUmVz
ZXRRdWVyeVBvb2xFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfaG9zdF9xdWVyeV9y
ZXNldCkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfaW1hZ2VfZHJtX2Zvcm1hdF9tb2RpZmllcikK
Ky0JdGFibGUtPnZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNFWFQgPSAoUEZO
X3ZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAi
dmtHZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCIpOworKyAgICB0YWJsZS0+
dmtHZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCA9IChQRk5fdmtHZXRJbWFn
ZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVClsb2FkKGNvbnRleHQsICJ2a0dldEltYWdl
RHJtRm9ybWF0TW9kaWZpZXJQcm9wZXJ0aWVzRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktf
RVhUX2ltYWdlX2RybV9mb3JtYXRfbW9kaWZpZXIpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2xp
bmVfcmFzdGVyaXphdGlvbikKKy0JdGFibGUtPnZrQ21kU2V0TGluZVN0aXBwbGVFWFQgPSAoUEZO
X3ZrQ21kU2V0TGluZVN0aXBwbGVFWFQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRMaW5lU3RpcHBs
ZUVYVCIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRMaW5lU3RpcHBsZUVYVCA9IChQRk5fdmtDbWRT
ZXRMaW5lU3RpcHBsZUVYVClsb2FkKGNvbnRleHQsICJ2a0NtZFNldExpbmVTdGlwcGxlRVhUIik7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2xpbmVfcmFzdGVyaXphdGlvbikgKi8KKyAjaWYg
ZGVmaW5lZChWS19FWFRfc2FtcGxlX2xvY2F0aW9ucykKKy0JdGFibGUtPnZrQ21kU2V0U2FtcGxl
TG9jYXRpb25zRVhUID0gKFBGTl92a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVClsb2FkKGNvbnRl
eHQsICJ2a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVCIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRT
YW1wbGVMb2NhdGlvbnNFWFQgPSAoUEZOX3ZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUKWxvYWQo
Y29udGV4dCwgInZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfRVhUX3NhbXBsZV9sb2NhdGlvbnMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX3RyYW5z
Zm9ybV9mZWVkYmFjaykKKy0JdGFibGUtPnZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQgPSAoUEZO
X3ZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblF1ZXJ5
SW5kZXhlZEVYVCIpOworLQl0YWJsZS0+dmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhUID0g
KFBGTl92a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQpbG9hZChjb250ZXh0LCAidmtDbWRC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhUIik7CistCXRhYmxlLT52a0NtZEJpbmRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnNFWFQgPSAoUEZOX3ZrQ21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
c0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQi
KTsKKy0JdGFibGUtPnZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUID0gKFBGTl92a0NtZERy
YXdJbmRpcmVjdEJ5dGVDb3VudEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdEJ5
dGVDb3VudEVYVCIpOworLQl0YWJsZS0+dmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQgPSAoUEZOX3Zr
Q21kRW5kUXVlcnlJbmRleGVkRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRW5kUXVlcnlJbmRleGVk
RVhUIik7CistCXRhYmxlLT52a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUID0gKFBGTl92a0Nt
ZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRW5kVHJhbnNmb3Jt
RmVlZGJhY2tFWFQiKTsKKysgICAgdGFibGUtPnZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQgPSAo
UEZOX3ZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblF1
ZXJ5SW5kZXhlZEVYVCIpOworKyAgICB0YWJsZS0+dmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNr
RVhUID0gKFBGTl92a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQpbG9hZChjb250ZXh0LCAi
dmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhUIik7CisrICAgIHRhYmxlLT52a0NtZEJpbmRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQgPSAoUEZOX3ZrQ21kQmluZFRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyc0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlcnNFWFQiKTsKKysgICAgdGFibGUtPnZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUID0g
KFBGTl92a0NtZERyYXdJbmRpcmVjdEJ5dGVDb3VudEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERy
YXdJbmRpcmVjdEJ5dGVDb3VudEVYVCIpOworKyAgICB0YWJsZS0+dmtDbWRFbmRRdWVyeUluZGV4
ZWRFWFQgPSAoUEZOX3ZrQ21kRW5kUXVlcnlJbmRleGVkRVhUKWxvYWQoY29udGV4dCwgInZrQ21k
RW5kUXVlcnlJbmRleGVkRVhUIik7CisrICAgIHRhYmxlLT52a0NtZEVuZFRyYW5zZm9ybUZlZWRi
YWNrRVhUID0gKFBGTl92a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUKWxvYWQoY29udGV4dCwg
InZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19F
WFRfdHJhbnNmb3JtX2ZlZWRiYWNrKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF92YWxpZGF0aW9u
X2NhY2hlKQorLQl0YWJsZS0+dmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQgPSAoUEZOX3ZrQ3Jl
YXRlVmFsaWRhdGlvbkNhY2hlRVhUKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlVmFsaWRhdGlvbkNh
Y2hlRVhUIik7CistCXRhYmxlLT52a0Rlc3Ryb3lWYWxpZGF0aW9uQ2FjaGVFWFQgPSAoUEZOX3Zr
RGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lWYWxpZGF0
aW9uQ2FjaGVFWFQiKTsKKy0JdGFibGUtPnZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVYVCA9IChQ
Rk5fdmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRhRVhUKWxvYWQoY29udGV4dCwgInZrR2V0VmFsaWRh
dGlvbkNhY2hlRGF0YUVYVCIpOworLQl0YWJsZS0+dmtNZXJnZVZhbGlkYXRpb25DYWNoZXNFWFQg
PSAoUEZOX3ZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVzRVhUKWxvYWQoY29udGV4dCwgInZrTWVyZ2VW
YWxpZGF0aW9uQ2FjaGVzRVhUIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVZhbGlkYXRpb25DYWNo
ZUVYVCA9IChQRk5fdmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQpbG9hZChjb250ZXh0LCAidmtD
cmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveVZhbGlkYXRp
b25DYWNoZUVYVCA9IChQRk5fdmtEZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUKWxvYWQoY29udGV4
dCwgInZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVCIpOworKyAgICB0YWJsZS0+dmtHZXRWYWxp
ZGF0aW9uQ2FjaGVEYXRhRVhUID0gKFBGTl92a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQpbG9h
ZChjb250ZXh0LCAidmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRhRVhUIik7CisrICAgIHRhYmxlLT52
a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVCA9IChQRk5fdmtNZXJnZVZhbGlkYXRpb25DYWNoZXNF
WFQpbG9hZChjb250ZXh0LCAidmtNZXJnZVZhbGlkYXRpb25DYWNoZXNFWFQiKTsKKyAjZW5kaWYg
LyogZGVmaW5lZChWS19FWFRfdmFsaWRhdGlvbl9jYWNoZSkgKi8KKyAjaWYgZGVmaW5lZChWS19H
T09HTEVfZGlzcGxheV90aW1pbmcpCistCXRhYmxlLT52a0dldFBhc3RQcmVzZW50YXRpb25UaW1p
bmdHT09HTEUgPSAoUEZOX3ZrR2V0UGFzdFByZXNlbnRhdGlvblRpbWluZ0dPT0dMRSlsb2FkKGNv
bnRleHQsICJ2a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUiKTsKKy0JdGFibGUtPnZr
R2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUgPSAoUEZOX3ZrR2V0UmVmcmVzaEN5Y2xlRHVy
YXRpb25HT09HTEUpbG9hZChjb250ZXh0LCAidmtHZXRSZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dM
RSIpOworKyAgICB0YWJsZS0+dmtHZXRQYXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFID0gKFBG
Tl92a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUpbG9hZChjb250ZXh0LCAidmtHZXRQ
YXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFIik7CisrICAgIHRhYmxlLT52a0dldFJlZnJlc2hD
eWNsZUR1cmF0aW9uR09PR0xFID0gKFBGTl92a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xF
KWxvYWQoY29udGV4dCwgInZrR2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19HT09HTEVfZGlzcGxheV90aW1pbmcpICovCisgI2lmIGRlZmluZWQo
VktfSU5URUxfcGVyZm9ybWFuY2VfcXVlcnkpCistCXRhYmxlLT52a0FjcXVpcmVQZXJmb3JtYW5j
ZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0
aW9uSU5URUwpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9u
SU5URUwiKTsKKy0JdGFibGUtPnZrQ21kU2V0UGVyZm9ybWFuY2VNYXJrZXJJTlRFTCA9IChQRk5f
dmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMKWxvYWQoY29udGV4dCwgInZrQ21kU2V0UGVy
Zm9ybWFuY2VNYXJrZXJJTlRFTCIpOworLQl0YWJsZS0+dmtDbWRTZXRQZXJmb3JtYW5jZU92ZXJy
aWRlSU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVMKWxvYWQoY29u
dGV4dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVMIik7CistCXRhYmxlLT52a0Nt
ZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2VySU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFu
Y2VTdHJlYW1NYXJrZXJJTlRFTClsb2FkKGNvbnRleHQsICJ2a0NtZFNldFBlcmZvcm1hbmNlU3Ry
ZWFtTWFya2VySU5URUwiKTsKKy0JdGFibGUtPnZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRF
TCA9IChQRk5fdmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMKWxvYWQoY29udGV4dCwgInZr
R2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRFTCIpOworLQl0YWJsZS0+dmtJbml0aWFsaXplUGVy
Zm9ybWFuY2VBcGlJTlRFTCA9IChQRk5fdmtJbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCls
b2FkKGNvbnRleHQsICJ2a0luaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMIik7CistCXRhYmxl
LT52a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgPSAoUEZOX3ZrUXVldWVT
ZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlU2V0
UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwiKTsKKy0JdGFibGUtPnZrUmVsZWFzZVBlcmZv
cm1hbmNlQ29uZmlndXJhdGlvbklOVEVMID0gKFBGTl92a1JlbGVhc2VQZXJmb3JtYW5jZUNvbmZp
Z3VyYXRpb25JTlRFTClsb2FkKGNvbnRleHQsICJ2a1JlbGVhc2VQZXJmb3JtYW5jZUNvbmZpZ3Vy
YXRpb25JTlRFTCIpOworLQl0YWJsZS0+dmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVM
ID0gKFBGTl92a1VuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwpbG9hZChjb250ZXh0LCAi
dmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMIik7CisrICAgIHRhYmxlLT52a0FjcXVp
cmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtBY3F1aXJlUGVyZm9ybWFu
Y2VDb25maWd1cmF0aW9uSU5URUwpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlUGVyZm9ybWFuY2VD
b25maWd1cmF0aW9uSU5URUwiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0UGVyZm9ybWFuY2VNYXJr
ZXJJTlRFTCA9IChQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMKWxvYWQoY29udGV4
dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VNYXJrZXJJTlRFTCIpOworKyAgICB0YWJsZS0+dmtDbWRT
ZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VPdmVy
cmlkZUlOVEVMKWxvYWQoY29udGV4dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVM
Iik7CisrICAgIHRhYmxlLT52a0NtZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2VySU5URUwgPSAo
UEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTClsb2FkKGNvbnRleHQsICJ2
a0NtZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2VySU5URUwiKTsKKysgICAgdGFibGUtPnZrR2V0
UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRFTCA9IChQRk5fdmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRl
cklOVEVMKWxvYWQoY29udGV4dCwgInZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRFTCIpOwor
KyAgICB0YWJsZS0+dmtJbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCA9IChQRk5fdmtJbml0
aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTClsb2FkKGNvbnRleHQsICJ2a0luaXRpYWxpemVQZXJm
b3JtYW5jZUFwaUlOVEVMIik7CisrICAgIHRhYmxlLT52a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25m
aWd1cmF0aW9uSU5URUwgPSAoUEZOX3ZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25J
TlRFTClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5U
RUwiKTsKKysgICAgdGFibGUtPnZrUmVsZWFzZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVM
ID0gKFBGTl92a1JlbGVhc2VQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTClsb2FkKGNvbnRl
eHQsICJ2a1JlbGVhc2VQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworKyAgICB0YWJs
ZS0+dmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMID0gKFBGTl92a1VuaW5pdGlhbGl6
ZVBlcmZvcm1hbmNlQXBpSU5URUwpbG9hZChjb250ZXh0LCAidmtVbmluaXRpYWxpemVQZXJmb3Jt
YW5jZUFwaUlOVEVMIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfSU5URUxfcGVyZm9ybWFuY2Vf
cXVlcnkpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2JpbmRfbWVtb3J5MikKKy0JdGFibGUtPnZr
QmluZEJ1ZmZlck1lbW9yeTJLSFIgPSAoUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeTJLSFIpbG9hZChj
b250ZXh0LCAidmtCaW5kQnVmZmVyTWVtb3J5MktIUiIpOworLQl0YWJsZS0+dmtCaW5kSW1hZ2VN
ZW1vcnkyS0hSID0gKFBGTl92a0JpbmRJbWFnZU1lbW9yeTJLSFIpbG9hZChjb250ZXh0LCAidmtC
aW5kSW1hZ2VNZW1vcnkyS0hSIik7CisrICAgIHRhYmxlLT52a0JpbmRCdWZmZXJNZW1vcnkyS0hS
ID0gKFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyS0hSKWxvYWQoY29udGV4dCwgInZrQmluZEJ1ZmZl
ck1lbW9yeTJLSFIiKTsKKysgICAgdGFibGUtPnZrQmluZEltYWdlTWVtb3J5MktIUiA9IChQRk5f
dmtCaW5kSW1hZ2VNZW1vcnkyS0hSKWxvYWQoY29udGV4dCwgInZrQmluZEltYWdlTWVtb3J5MktI
UiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9iaW5kX21lbW9yeTIpICovCisgI2lmIGRl
ZmluZWQoVktfS0hSX2J1ZmZlcl9kZXZpY2VfYWRkcmVzcykKKy0JdGFibGUtPnZrR2V0QnVmZmVy
RGV2aWNlQWRkcmVzc0tIUiA9IChQRk5fdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0tIUiIpOworLQl0YWJsZS0+dmtHZXRC
dWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiA9IChQRk5fdmtHZXRCdWZmZXJPcGFxdWVDYXB0
dXJlQWRkcmVzc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRy
ZXNzS0hSIik7CistCXRhYmxlLT52a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNz
S0hSID0gKFBGTl92a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIiKTsKKysg
ICAgdGFibGUtPnZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0tIUiA9IChQRk5fdmtHZXRCdWZmZXJE
ZXZpY2VBZGRyZXNzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0tI
UiIpOworKyAgICB0YWJsZS0+dmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiA9IChQ
Rk5fdmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUilsb2FkKGNvbnRleHQsICJ2a0dl
dEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSIik7CisrICAgIHRhYmxlLT52a0dldERldmlj
ZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSID0gKFBGTl92a0dldERldmljZU1lbW9yeU9w
YXF1ZUNhcHR1cmVBZGRyZXNzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlTWVtb3J5T3Bh
cXVlQ2FwdHVyZUFkZHJlc3NLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfYnVmZmVy
X2RldmljZV9hZGRyZXNzKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9jcmVhdGVfcmVuZGVycGFz
czIpCistCXRhYmxlLT52a0NtZEJlZ2luUmVuZGVyUGFzczJLSFIgPSAoUEZOX3ZrQ21kQmVnaW5S
ZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUmVuZGVyUGFzczJLSFIiKTsK
Ky0JdGFibGUtPnZrQ21kRW5kUmVuZGVyUGFzczJLSFIgPSAoUEZOX3ZrQ21kRW5kUmVuZGVyUGFz
czJLSFIpbG9hZChjb250ZXh0LCAidmtDbWRFbmRSZW5kZXJQYXNzMktIUiIpOworLQl0YWJsZS0+
dmtDbWROZXh0U3VicGFzczJLSFIgPSAoUEZOX3ZrQ21kTmV4dFN1YnBhc3MyS0hSKWxvYWQoY29u
dGV4dCwgInZrQ21kTmV4dFN1YnBhc3MyS0hSIik7CistCXRhYmxlLT52a0NyZWF0ZVJlbmRlclBh
c3MyS0hSID0gKFBGTl92a0NyZWF0ZVJlbmRlclBhc3MyS0hSKWxvYWQoY29udGV4dCwgInZrQ3Jl
YXRlUmVuZGVyUGFzczJLSFIiKTsKKysgICAgdGFibGUtPnZrQ21kQmVnaW5SZW5kZXJQYXNzMktI
UiA9IChQRk5fdmtDbWRCZWdpblJlbmRlclBhc3MyS0hSKWxvYWQoY29udGV4dCwgInZrQ21kQmVn
aW5SZW5kZXJQYXNzMktIUiIpOworKyAgICB0YWJsZS0+dmtDbWRFbmRSZW5kZXJQYXNzMktIUiA9
IChQRk5fdmtDbWRFbmRSZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFJlbmRl
clBhc3MyS0hSIik7CisrICAgIHRhYmxlLT52a0NtZE5leHRTdWJwYXNzMktIUiA9IChQRk5fdmtD
bWROZXh0U3VicGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDbWROZXh0U3VicGFzczJLSFIiKTsK
KysgICAgdGFibGUtPnZrQ3JlYXRlUmVuZGVyUGFzczJLSFIgPSAoUEZOX3ZrQ3JlYXRlUmVuZGVy
UGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVSZW5kZXJQYXNzMktIUiIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX0tIUl9jcmVhdGVfcmVuZGVycGFzczIpICovCisgI2lmIGRlZmluZWQo
VktfS0hSX2Rlc2NyaXB0b3JfdXBkYXRlX3RlbXBsYXRlKQorLQl0YWJsZS0+dmtDcmVhdGVEZXNj
cmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIgPSAoUEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRl
bXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRl
S0hSIik7CistCXRhYmxlLT52a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIgPSAo
UEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUilsb2FkKGNvbnRleHQsICJ2
a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIiKTsKKy0JdGFibGUtPnZrVXBkYXRl
RGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiA9IChQRk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0
V2l0aFRlbXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhU
ZW1wbGF0ZUtIUiIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxh
dGVLSFIgPSAoUEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSIik7CisrICAgIHRhYmxl
LT52a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIgPSAoUEZOX3ZrRGVzdHJveURl
c2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lEZXNjcmlw
dG9yVXBkYXRlVGVtcGxhdGVLSFIiKTsKKysgICAgdGFibGUtPnZrVXBkYXRlRGVzY3JpcHRvclNl
dFdpdGhUZW1wbGF0ZUtIUiA9IChQRk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRl
S0hSKWxvYWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kZXNjcmlwdG9yX3VwZGF0ZV90ZW1wbGF0ZSkg
Ki8KKyAjaWYgZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKQorLQl0YWJsZS0+dmtDbWREaXNw
YXRjaEJhc2VLSFIgPSAoUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlS0hSKWxvYWQoY29udGV4dCwgInZr
Q21kRGlzcGF0Y2hCYXNlS0hSIik7CistCXRhYmxlLT52a0NtZFNldERldmljZU1hc2tLSFIgPSAo
UEZOX3ZrQ21kU2V0RGV2aWNlTWFza0tIUilsb2FkKGNvbnRleHQsICJ2a0NtZFNldERldmljZU1h
c2tLSFIiKTsKKy0JdGFibGUtPnZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNLSFIg
PSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNLSFIpbG9hZChjb250ZXh0
LCAidmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiIpOworKyAgICB0YWJsZS0+
dmtDbWREaXNwYXRjaEJhc2VLSFIgPSAoUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlS0hSKWxvYWQoY29u
dGV4dCwgInZrQ21kRGlzcGF0Y2hCYXNlS0hSIik7CisrICAgIHRhYmxlLT52a0NtZFNldERldmlj
ZU1hc2tLSFIgPSAoUEZOX3ZrQ21kU2V0RGV2aWNlTWFza0tIUilsb2FkKGNvbnRleHQsICJ2a0Nt
ZFNldERldmljZU1hc2tLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0RGV2aWNlR3JvdXBQZWVyTWVt
b3J5RmVhdHVyZXNLSFIgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNL
SFIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX2Rpc3BsYXlfc3dhcGNoYWluKQorLQl0YWJsZS0+dmtDcmVhdGVTaGFyZWRTd2Fw
Y2hhaW5zS0hSID0gKFBGTl92a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIpbG9hZChjb250ZXh0
LCAidmtDcmVhdGVTaGFyZWRTd2FwY2hhaW5zS0hSIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVNo
YXJlZFN3YXBjaGFpbnNLSFIgPSAoUEZOX3ZrQ3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUilsb2Fk
KGNvbnRleHQsICJ2a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19LSFJfZGlzcGxheV9zd2FwY2hhaW4pICovCisgI2lmIGRlZmluZWQoVktfS0hSX2Ry
YXdfaW5kaXJlY3RfY291bnQpCistCXRhYmxlLT52a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3Vu
dEtIUiA9IChQRk5fdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIpbG9hZChjb250ZXh0
LCAidmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIiKTsKKy0JdGFibGUtPnZrQ21kRHJh
d0luZGlyZWN0Q291bnRLSFIgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFIpbG9hZChj
b250ZXh0LCAidmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUiIpOworKyAgICB0YWJsZS0+dmtDbWRE
cmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIgPSAoUEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVj
dENvdW50S0hSKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50S0hS
Iik7CisrICAgIHRhYmxlLT52a0NtZERyYXdJbmRpcmVjdENvdW50S0hSID0gKFBGTl92a0NtZERy
YXdJbmRpcmVjdENvdW50S0hSKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Q291bnRL
SFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZHJhd19pbmRpcmVjdF9jb3VudCkgKi8K
KyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2VfZmQpCistCXRhYmxlLT52a0dldEZl
bmNlRmRLSFIgPSAoUEZOX3ZrR2V0RmVuY2VGZEtIUilsb2FkKGNvbnRleHQsICJ2a0dldEZlbmNl
RmRLSFIiKTsKKy0JdGFibGUtPnZrSW1wb3J0RmVuY2VGZEtIUiA9IChQRk5fdmtJbXBvcnRGZW5j
ZUZkS0hSKWxvYWQoY29udGV4dCwgInZrSW1wb3J0RmVuY2VGZEtIUiIpOworKyAgICB0YWJsZS0+
dmtHZXRGZW5jZUZkS0hSID0gKFBGTl92a0dldEZlbmNlRmRLSFIpbG9hZChjb250ZXh0LCAidmtH
ZXRGZW5jZUZkS0hSIik7CisrICAgIHRhYmxlLT52a0ltcG9ydEZlbmNlRmRLSFIgPSAoUEZOX3Zr
SW1wb3J0RmVuY2VGZEtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydEZlbmNlRmRLSFIiKTsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2VfZmQpICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX2V4dGVybmFsX2ZlbmNlX3dpbjMyKQorLQl0YWJsZS0+dmtHZXRGZW5jZVdpbjMy
SGFuZGxlS0hSID0gKFBGTl92a0dldEZlbmNlV2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSIik7CistCXRhYmxlLT52a0ltcG9ydEZlbmNlV2luMzJI
YW5kbGVLSFIgPSAoUEZOX3ZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQs
ICJ2a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0RmVuY2VX
aW4zMkhhbmRsZUtIUiA9IChQRk5fdmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSKWxvYWQoY29udGV4
dCwgInZrR2V0RmVuY2VXaW4zMkhhbmRsZUtIUiIpOworKyAgICB0YWJsZS0+dmtJbXBvcnRGZW5j
ZVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIpbG9hZChj
b250ZXh0LCAidmtJbXBvcnRGZW5jZVdpbjMySGFuZGxlS0hSIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfS0hSX2V4dGVybmFsX2ZlbmNlX3dpbjMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9l
eHRlcm5hbF9tZW1vcnlfZmQpCistCXRhYmxlLT52a0dldE1lbW9yeUZkS0hSID0gKFBGTl92a0dl
dE1lbW9yeUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5RmRLSFIiKTsKKy0JdGFibGUt
PnZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldE1lbW9yeUZkUHJvcGVydGll
c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeUZkUHJvcGVydGllc0tIUiIpOworKyAgICB0
YWJsZS0+dmtHZXRNZW1vcnlGZEtIUiA9IChQRk5fdmtHZXRNZW1vcnlGZEtIUilsb2FkKGNvbnRl
eHQsICJ2a0dldE1lbW9yeUZkS0hSIik7CisrICAgIHRhYmxlLT52a0dldE1lbW9yeUZkUHJvcGVy
dGllc0tIUiA9IChQRk5fdmtHZXRNZW1vcnlGZFByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRNZW1vcnlGZFByb3BlcnRpZXNLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJf
ZXh0ZXJuYWxfbWVtb3J5X2ZkKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9tZW1v
cnlfd2luMzIpCistCXRhYmxlLT52a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0dl
dE1lbW9yeVdpbjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5V2luMzJIYW5k
bGVLSFIiKTsKKy0JdGFibGUtPnZrR2V0TWVtb3J5V2luMzJIYW5kbGVQcm9wZXJ0aWVzS0hSID0g
KFBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2
a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUiIpOworKyAgICB0YWJsZS0+dmtHZXRN
ZW1vcnlXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhhbmRsZUtIUilsb2Fk
KGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSIik7CisrICAgIHRhYmxlLT52a0dl
dE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhh
bmRsZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRsZVBy
b3BlcnRpZXNLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5
X3dpbjMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfZmQpCist
CXRhYmxlLT52a0dldFNlbWFwaG9yZUZkS0hSID0gKFBGTl92a0dldFNlbWFwaG9yZUZkS0hSKWxv
YWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlRmRLSFIiKTsKKy0JdGFibGUtPnZrSW1wb3J0U2Vt
YXBob3JlRmRLSFIgPSAoUEZOX3ZrSW1wb3J0U2VtYXBob3JlRmRLSFIpbG9hZChjb250ZXh0LCAi
dmtJbXBvcnRTZW1hcGhvcmVGZEtIUiIpOworKyAgICB0YWJsZS0+dmtHZXRTZW1hcGhvcmVGZEtI
UiA9IChQRk5fdmtHZXRTZW1hcGhvcmVGZEtIUilsb2FkKGNvbnRleHQsICJ2a0dldFNlbWFwaG9y
ZUZkS0hSIik7CisrICAgIHRhYmxlLT52a0ltcG9ydFNlbWFwaG9yZUZkS0hSID0gKFBGTl92a0lt
cG9ydFNlbWFwaG9yZUZkS0hSKWxvYWQoY29udGV4dCwgInZrSW1wb3J0U2VtYXBob3JlRmRLSFIi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX2ZkKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfd2luMzIpCistCXRhYmxlLT52
a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0dldFNlbWFwaG9yZVdpbjMySGFu
ZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIiKTsKKy0J
dGFibGUtPnZrSW1wb3J0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrSW1wb3J0U2Vt
YXBob3JlV2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRTZW1hcGhvcmVXaW4z
MkhhbmRsZUtIUiIpOworKyAgICB0YWJsZS0+dmtHZXRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiA9
IChQRk5fdmtHZXRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0dldFNl
bWFwaG9yZVdpbjMySGFuZGxlS0hSIik7CisrICAgIHRhYmxlLT52a0ltcG9ydFNlbWFwaG9yZVdp
bjMySGFuZGxlS0hSID0gKFBGTl92a0ltcG9ydFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSKWxvYWQo
Y29udGV4dCwgInZrSW1wb3J0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIiKTsKKyAjZW5kaWYgLyog
ZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX3dpbjMyKSAqLworICNpZiBkZWZpbmVk
KFZLX0tIUl9nZXRfbWVtb3J5X3JlcXVpcmVtZW50czIpCistCXRhYmxlLT52a0dldEJ1ZmZlck1l
bW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRz
MktIUilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czJLSFIiKTsK
Ky0JdGFibGUtPnZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSID0gKFBGTl92a0dldElt
YWdlTWVtb3J5UmVxdWlyZW1lbnRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlTWVtb3J5
UmVxdWlyZW1lbnRzMktIUiIpOworLQl0YWJsZS0+dmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVp
cmVtZW50czJLSFIgPSAoUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7
CisrICAgIHRhYmxlLT52a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZOX3Zr
R2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZl
ck1lbW9yeVJlcXVpcmVtZW50czJLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0SW1hZ2VNZW1vcnlS
ZXF1aXJlbWVudHMyS0hSID0gKFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMktIUils
b2FkKGNvbnRleHQsICJ2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMktIUiIpOworKyAgICB0
YWJsZS0+dmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZOX3ZrR2V0
SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0SW1h
Z2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktf
S0hSX2dldF9tZW1vcnlfcmVxdWlyZW1lbnRzMikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfbWFp
bnRlbmFuY2UxKQorLQl0YWJsZS0+dmtUcmltQ29tbWFuZFBvb2xLSFIgPSAoUEZOX3ZrVHJpbUNv
bW1hbmRQb29sS0hSKWxvYWQoY29udGV4dCwgInZrVHJpbUNvbW1hbmRQb29sS0hSIik7CisrICAg
IHRhYmxlLT52a1RyaW1Db21tYW5kUG9vbEtIUiA9IChQRk5fdmtUcmltQ29tbWFuZFBvb2xLSFIp
bG9hZChjb250ZXh0LCAidmtUcmltQ29tbWFuZFBvb2xLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19LSFJfbWFpbnRlbmFuY2UxKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5j
ZTMpCistCXRhYmxlLT52a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSID0gKFBGTl92
a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGVz
Y3JpcHRvclNldExheW91dFN1cHBvcnRLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0RGVzY3JpcHRv
clNldExheW91dFN1cHBvcnRLSFIgPSAoUEZOX3ZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBv
cnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydEtIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTMpICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX3BlcmZvcm1hbmNlX3F1ZXJ5KQorLQl0YWJsZS0+dmtBY3F1aXJlUHJvZmlsaW5n
TG9ja0tIUiA9IChQRk5fdmtBY3F1aXJlUHJvZmlsaW5nTG9ja0tIUilsb2FkKGNvbnRleHQsICJ2
a0FjcXVpcmVQcm9maWxpbmdMb2NrS0hSIik7CistCXRhYmxlLT52a1JlbGVhc2VQcm9maWxpbmdM
b2NrS0hSID0gKFBGTl92a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSKWxvYWQoY29udGV4dCwgInZr
UmVsZWFzZVByb2ZpbGluZ0xvY2tLSFIiKTsKKysgICAgdGFibGUtPnZrQWNxdWlyZVByb2ZpbGlu
Z0xvY2tLSFIgPSAoUEZOX3ZrQWNxdWlyZVByb2ZpbGluZ0xvY2tLSFIpbG9hZChjb250ZXh0LCAi
dmtBY3F1aXJlUHJvZmlsaW5nTG9ja0tIUiIpOworKyAgICB0YWJsZS0+dmtSZWxlYXNlUHJvZmls
aW5nTG9ja0tIUiA9IChQRk5fdmtSZWxlYXNlUHJvZmlsaW5nTG9ja0tIUilsb2FkKGNvbnRleHQs
ICJ2a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hS
X3BlcmZvcm1hbmNlX3F1ZXJ5KSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9waXBlbGluZV9leGVj
dXRhYmxlX3Byb3BlcnRpZXMpCistCXRhYmxlLT52a0dldFBpcGVsaW5lRXhlY3V0YWJsZUludGVy
bmFsUmVwcmVzZW50YXRpb25zS0hSID0gKFBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZUludGVy
bmFsUmVwcmVzZW50YXRpb25zS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGlwZWxpbmVFeGVjdXRh
YmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIiKTsKKy0JdGFibGUtPnZrR2V0UGlwZWxpbmVF
eGVjdXRhYmxlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9w
ZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGll
c0tIUiIpOworLQl0YWJsZS0+dmtHZXRQaXBlbGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSID0g
KFBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRpc3RpY3NLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRQaXBlbGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSIik7CisrICAgIHRhYmxlLT52a0dl
dFBpcGVsaW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRpb25zS0hSID0gKFBGTl92a0dl
dFBpcGVsaW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRpb25zS0hSKWxvYWQoY29udGV4
dCwgInZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIiKTsK
KysgICAgdGFibGUtPnZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUiA9IChQRk5f
dmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0
UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUiIpOworKyAgICB0YWJsZS0+dmtHZXRQaXBl
bGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSID0gKFBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJs
ZVN0YXRpc3RpY3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaXBlbGluZUV4ZWN1dGFibGVTdGF0
aXN0aWNzS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3BpcGVsaW5lX2V4ZWN1dGFi
bGVfcHJvcGVydGllcykgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9yKQor
LQl0YWJsZS0+dmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUiA9IChQRk5fdmtDbWRQdXNoRGVzY3Jp
cHRvclNldEtIUilsb2FkKGNvbnRleHQsICJ2a0NtZFB1c2hEZXNjcmlwdG9yU2V0S0hSIik7Cisr
ICAgIHRhYmxlLT52a0NtZFB1c2hEZXNjcmlwdG9yU2V0S0hSID0gKFBGTl92a0NtZFB1c2hEZXNj
cmlwdG9yU2V0S0hSKWxvYWQoY29udGV4dCwgInZrQ21kUHVzaERlc2NyaXB0b3JTZXRLSFIiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9yKSAqLworICNpZiBkZWZp
bmVkKFZLX0tIUl9zYW1wbGVyX3ljYmNyX2NvbnZlcnNpb24pCistCXRhYmxlLT52a0NyZWF0ZVNh
bXBsZXJZY2JjckNvbnZlcnNpb25LSFIgPSAoUEZOX3ZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVy
c2lvbktIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIi
KTsKKy0JdGFibGUtPnZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIgPSAoUEZOX3Zr
RGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95
U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVTYW1wbGVy
WWNiY3JDb252ZXJzaW9uS0hSID0gKFBGTl92a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25L
SFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSIik7Cisr
ICAgIHRhYmxlLT52a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSID0gKFBGTl92a0Rl
c3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNh
bXBsZXJZY2JjckNvbnZlcnNpb25LSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfc2Ft
cGxlcl95Y2Jjcl9jb252ZXJzaW9uKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9zaGFyZWRfcHJl
c2VudGFibGVfaW1hZ2UpCistCXRhYmxlLT52a0dldFN3YXBjaGFpblN0YXR1c0tIUiA9IChQRk5f
dmtHZXRTd2FwY2hhaW5TdGF0dXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRTd2FwY2hhaW5TdGF0
dXNLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0U3dhcGNoYWluU3RhdHVzS0hSID0gKFBGTl92a0dl
dFN3YXBjaGFpblN0YXR1c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpblN0YXR1c0tI
UiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9zaGFyZWRfcHJlc2VudGFibGVfaW1hZ2Up
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikKKy0JdGFibGUtPnZrQWNxdWlyZU5l
eHRJbWFnZUtIUiA9IChQRk5fdmtBY3F1aXJlTmV4dEltYWdlS0hSKWxvYWQoY29udGV4dCwgInZr
QWNxdWlyZU5leHRJbWFnZUtIUiIpOworLQl0YWJsZS0+dmtDcmVhdGVTd2FwY2hhaW5LSFIgPSAo
UEZOX3ZrQ3JlYXRlU3dhcGNoYWluS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU3dhcGNoYWlu
S0hSIik7CistCXRhYmxlLT52a0Rlc3Ryb3lTd2FwY2hhaW5LSFIgPSAoUEZOX3ZrRGVzdHJveVN3
YXBjaGFpbktIUilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lTd2FwY2hhaW5LSFIiKTsKKy0JdGFi
bGUtPnZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSID0gKFBGTl92a0dldFN3YXBjaGFpbkltYWdlc0tI
Uilsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpbkltYWdlc0tIUiIpOworLQl0YWJsZS0+dmtR
dWV1ZVByZXNlbnRLSFIgPSAoUEZOX3ZrUXVldWVQcmVzZW50S0hSKWxvYWQoY29udGV4dCwgInZr
UXVldWVQcmVzZW50S0hSIik7CisrICAgIHRhYmxlLT52a0FjcXVpcmVOZXh0SW1hZ2VLSFIgPSAo
UEZOX3ZrQWNxdWlyZU5leHRJbWFnZUtIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVOZXh0SW1h
Z2VLSFIiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlU3dhcGNoYWluS0hSID0gKFBGTl92a0NyZWF0
ZVN3YXBjaGFpbktIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVN3YXBjaGFpbktIUiIpOworKyAg
ICB0YWJsZS0+dmtEZXN0cm95U3dhcGNoYWluS0hSID0gKFBGTl92a0Rlc3Ryb3lTd2FwY2hhaW5L
SFIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U3dhcGNoYWluS0hSIik7CisrICAgIHRhYmxlLT52
a0dldFN3YXBjaGFpbkltYWdlc0tIUiA9IChQRk5fdmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIpbG9h
ZChjb250ZXh0LCAidmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIiKTsKKysgICAgdGFibGUtPnZrUXVl
dWVQcmVzZW50S0hSID0gKFBGTl92a1F1ZXVlUHJlc2VudEtIUilsb2FkKGNvbnRleHQsICJ2a1F1
ZXVlUHJlc2VudEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICov
CisgI2lmIGRlZmluZWQoVktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZSkKKy0JdGFibGUtPnZrR2V0
U2VtYXBob3JlQ291bnRlclZhbHVlS0hSID0gKFBGTl92a0dldFNlbWFwaG9yZUNvdW50ZXJWYWx1
ZUtIUilsb2FkKGNvbnRleHQsICJ2a0dldFNlbWFwaG9yZUNvdW50ZXJWYWx1ZUtIUiIpOworLQl0
YWJsZS0+dmtTaWduYWxTZW1hcGhvcmVLSFIgPSAoUEZOX3ZrU2lnbmFsU2VtYXBob3JlS0hSKWxv
YWQoY29udGV4dCwgInZrU2lnbmFsU2VtYXBob3JlS0hSIik7CistCXRhYmxlLT52a1dhaXRTZW1h
cGhvcmVzS0hSID0gKFBGTl92a1dhaXRTZW1hcGhvcmVzS0hSKWxvYWQoY29udGV4dCwgInZrV2Fp
dFNlbWFwaG9yZXNLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0U2VtYXBob3JlQ291bnRlclZhbHVl
S0hSID0gKFBGTl92a0dldFNlbWFwaG9yZUNvdW50ZXJWYWx1ZUtIUilsb2FkKGNvbnRleHQsICJ2
a0dldFNlbWFwaG9yZUNvdW50ZXJWYWx1ZUtIUiIpOworKyAgICB0YWJsZS0+dmtTaWduYWxTZW1h
cGhvcmVLSFIgPSAoUEZOX3ZrU2lnbmFsU2VtYXBob3JlS0hSKWxvYWQoY29udGV4dCwgInZrU2ln
bmFsU2VtYXBob3JlS0hSIik7CisrICAgIHRhYmxlLT52a1dhaXRTZW1hcGhvcmVzS0hSID0gKFBG
Tl92a1dhaXRTZW1hcGhvcmVzS0hSKWxvYWQoY29udGV4dCwgInZrV2FpdFNlbWFwaG9yZXNLSFIi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfdGltZWxpbmVfc2VtYXBob3JlKSAqLworICNp
ZiBkZWZpbmVkKFZLX05WWF9kZXZpY2VfZ2VuZXJhdGVkX2NvbW1hbmRzKQorLQl0YWJsZS0+dmtD
bWRQcm9jZXNzQ29tbWFuZHNOVlggPSAoUEZOX3ZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYKWxvYWQo
Y29udGV4dCwgInZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYIik7CistCXRhYmxlLT52a0NtZFJlc2Vy
dmVTcGFjZUZvckNvbW1hbmRzTlZYID0gKFBGTl92a0NtZFJlc2VydmVTcGFjZUZvckNvbW1hbmRz
TlZYKWxvYWQoY29udGV4dCwgInZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlgiKTsKKy0J
dGFibGUtPnZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCA9IChQRk5fdmtDcmVhdGVJ
bmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW5kaXJlY3RD
b21tYW5kc0xheW91dE5WWCIpOworLQl0YWJsZS0+dmtDcmVhdGVPYmplY3RUYWJsZU5WWCA9IChQ
Rk5fdmtDcmVhdGVPYmplY3RUYWJsZU5WWClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZU9iamVjdFRh
YmxlTlZYIik7CistCXRhYmxlLT52a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYID0g
KFBGTl92a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYKWxvYWQoY29udGV4dCwgInZr
RGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgiKTsKKy0JdGFibGUtPnZrRGVzdHJveU9i
amVjdFRhYmxlTlZYID0gKFBGTl92a0Rlc3Ryb3lPYmplY3RUYWJsZU5WWClsb2FkKGNvbnRleHQs
ICJ2a0Rlc3Ryb3lPYmplY3RUYWJsZU5WWCIpOworLQl0YWJsZS0+dmtSZWdpc3Rlck9iamVjdHNO
VlggPSAoUEZOX3ZrUmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4dCwgInZrUmVnaXN0ZXJP
YmplY3RzTlZYIik7CistCXRhYmxlLT52a1VucmVnaXN0ZXJPYmplY3RzTlZYID0gKFBGTl92a1Vu
cmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4dCwgInZrVW5yZWdpc3Rlck9iamVjdHNOVlgi
KTsKKysgICAgdGFibGUtPnZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYID0gKFBGTl92a0NtZFByb2Nl
c3NDb21tYW5kc05WWClsb2FkKGNvbnRleHQsICJ2a0NtZFByb2Nlc3NDb21tYW5kc05WWCIpOwor
KyAgICB0YWJsZS0+dmtDbWRSZXNlcnZlU3BhY2VGb3JDb21tYW5kc05WWCA9IChQRk5fdmtDbWRS
ZXNlcnZlU3BhY2VGb3JDb21tYW5kc05WWClsb2FkKGNvbnRleHQsICJ2a0NtZFJlc2VydmVTcGFj
ZUZvckNvbW1hbmRzTlZYIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNM
YXlvdXROVlggPSAoUEZOX3ZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWClsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgiKTsKKysgICAgdGFibGUt
PnZrQ3JlYXRlT2JqZWN0VGFibGVOVlggPSAoUEZOX3ZrQ3JlYXRlT2JqZWN0VGFibGVOVlgpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVPYmplY3RUYWJsZU5WWCIpOworKyAgICB0YWJsZS0+dmtEZXN0
cm95SW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCA9IChQRk5fdmtEZXN0cm95SW5kaXJlY3RDb21t
YW5kc0xheW91dE5WWClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5
b3V0TlZYIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lPYmplY3RUYWJsZU5WWCA9IChQRk5fdmtE
ZXN0cm95T2JqZWN0VGFibGVOVlgpbG9hZChjb250ZXh0LCAidmtEZXN0cm95T2JqZWN0VGFibGVO
VlgiKTsKKysgICAgdGFibGUtPnZrUmVnaXN0ZXJPYmplY3RzTlZYID0gKFBGTl92a1JlZ2lzdGVy
T2JqZWN0c05WWClsb2FkKGNvbnRleHQsICJ2a1JlZ2lzdGVyT2JqZWN0c05WWCIpOworKyAgICB0
YWJsZS0+dmtVbnJlZ2lzdGVyT2JqZWN0c05WWCA9IChQRk5fdmtVbnJlZ2lzdGVyT2JqZWN0c05W
WClsb2FkKGNvbnRleHQsICJ2a1VucmVnaXN0ZXJPYmplY3RzTlZYIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfTlZYX2RldmljZV9nZW5lcmF0ZWRfY29tbWFuZHMpICovCisgI2lmIGRlZmluZWQo
VktfTlZYX2ltYWdlX3ZpZXdfaGFuZGxlKQorLQl0YWJsZS0+dmtHZXRJbWFnZVZpZXdIYW5kbGVO
VlggPSAoUEZOX3ZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZYKWxvYWQoY29udGV4dCwgInZrR2V0SW1h
Z2VWaWV3SGFuZGxlTlZYIik7CisrICAgIHRhYmxlLT52a0dldEltYWdlVmlld0hhbmRsZU5WWCA9
IChQRk5fdmtHZXRJbWFnZVZpZXdIYW5kbGVOVlgpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVZp
ZXdIYW5kbGVOVlgiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVlhfaW1hZ2Vfdmlld19oYW5k
bGUpICovCisgI2lmIGRlZmluZWQoVktfTlZfY2xpcF9zcGFjZV93X3NjYWxpbmcpCistCXRhYmxl
LT52a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViA9IChQRk5fdmtDbWRTZXRWaWV3cG9ydFdTY2Fs
aW5nTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRWaWV3cG9ydFdTY2FsaW5nTlYiKTsKKysgICAg
dGFibGUtPnZrQ21kU2V0Vmlld3BvcnRXU2NhbGluZ05WID0gKFBGTl92a0NtZFNldFZpZXdwb3J0
V1NjYWxpbmdOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViIpOwor
ICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX2NsaXBfc3BhY2Vfd19zY2FsaW5nKSAqLworICNpZiBk
ZWZpbmVkKFZLX05WX2RldmljZV9kaWFnbm9zdGljX2NoZWNrcG9pbnRzKQorLQl0YWJsZS0+dmtD
bWRTZXRDaGVja3BvaW50TlYgPSAoUEZOX3ZrQ21kU2V0Q2hlY2twb2ludE5WKWxvYWQoY29udGV4
dCwgInZrQ21kU2V0Q2hlY2twb2ludE5WIik7CistCXRhYmxlLT52a0dldFF1ZXVlQ2hlY2twb2lu
dERhdGFOViA9IChQRk5fdmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYpbG9hZChjb250ZXh0LCAi
dmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0Q2hlY2tw
b2ludE5WID0gKFBGTl92a0NtZFNldENoZWNrcG9pbnROVilsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dENoZWNrcG9pbnROViIpOworKyAgICB0YWJsZS0+dmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYg
PSAoUEZOX3ZrR2V0UXVldWVDaGVja3BvaW50RGF0YU5WKWxvYWQoY29udGV4dCwgInZrR2V0UXVl
dWVDaGVja3BvaW50RGF0YU5WIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfZGV2aWNlX2Rp
YWdub3N0aWNfY2hlY2twb2ludHMpICovCisgI2lmIGRlZmluZWQoVktfTlZfZXh0ZXJuYWxfbWVt
b3J5X3dpbjMyKQorLQl0YWJsZS0+dmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WID0gKFBGTl92a0dl
dE1lbW9yeVdpbjMySGFuZGxlTlYpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRs
ZU5WIik7CisrICAgIHRhYmxlLT52a0dldE1lbW9yeVdpbjMySGFuZGxlTlYgPSAoUEZOX3ZrR2V0
TWVtb3J5V2luMzJIYW5kbGVOVilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFuZGxl
TlYiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9leHRlcm5hbF9tZW1vcnlfd2luMzIpICov
CisgI2lmIGRlZmluZWQoVktfTlZfbWVzaF9zaGFkZXIpCistCXRhYmxlLT52a0NtZERyYXdNZXNo
VGFza3NJbmRpcmVjdENvdW50TlYgPSAoUEZOX3ZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291
bnROVilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdENvdW50TlYiKTsK
Ky0JdGFibGUtPnZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYgPSAoUEZOX3ZrQ21kRHJhd01l
c2hUYXNrc0luZGlyZWN0TlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3TWVzaFRhc2tzSW5kaXJl
Y3ROViIpOworLQl0YWJsZS0+dmtDbWREcmF3TWVzaFRhc2tzTlYgPSAoUEZOX3ZrQ21kRHJhd01l
c2hUYXNrc05WKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd01lc2hUYXNrc05WIik7CisrICAgIHRh
YmxlLT52a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdENvdW50TlYgPSAoUEZOX3ZrQ21kRHJhd01l
c2hUYXNrc0luZGlyZWN0Q291bnROVilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdNZXNoVGFza3NJ
bmRpcmVjdENvdW50TlYiKTsKKysgICAgdGFibGUtPnZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0
TlYgPSAoUEZOX3ZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYpbG9hZChjb250ZXh0LCAidmtD
bWREcmF3TWVzaFRhc2tzSW5kaXJlY3ROViIpOworKyAgICB0YWJsZS0+dmtDbWREcmF3TWVzaFRh
c2tzTlYgPSAoUEZOX3ZrQ21kRHJhd01lc2hUYXNrc05WKWxvYWQoY29udGV4dCwgInZrQ21kRHJh
d01lc2hUYXNrc05WIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfbWVzaF9zaGFkZXIpICov
CisgI2lmIGRlZmluZWQoVktfTlZfcmF5X3RyYWNpbmcpCistCXRhYmxlLT52a0JpbmRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNZW1vcnlOViA9IChQRk5fdmtCaW5kQWNjZWxlcmF0aW9uU3RydWN0dXJl
TWVtb3J5TlYpbG9hZChjb250ZXh0LCAidmtCaW5kQWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5
TlYiKTsKKy0JdGFibGUtPnZrQ21kQnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5f
dmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQnVp
bGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOworLQl0YWJsZS0+dmtDbWRDb3B5QWNjZWxlcmF0
aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxv
YWQoY29udGV4dCwgInZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CistCXRhYmxl
LT52a0NtZFRyYWNlUmF5c05WID0gKFBGTl92a0NtZFRyYWNlUmF5c05WKWxvYWQoY29udGV4dCwg
InZrQ21kVHJhY2VSYXlzTlYiKTsKKy0JdGFibGUtPnZrQ21kV3JpdGVBY2NlbGVyYXRpb25TdHJ1
Y3R1cmVzUHJvcGVydGllc05WID0gKFBGTl92a0NtZFdyaXRlQWNjZWxlcmF0aW9uU3RydWN0dXJl
c1Byb3BlcnRpZXNOVilsb2FkKGNvbnRleHQsICJ2a0NtZFdyaXRlQWNjZWxlcmF0aW9uU3RydWN0
dXJlc1Byb3BlcnRpZXNOViIpOworLQl0YWJsZS0+dmtDb21waWxlRGVmZXJyZWROViA9IChQRk5f
dmtDb21waWxlRGVmZXJyZWROVilsb2FkKGNvbnRleHQsICJ2a0NvbXBpbGVEZWZlcnJlZE5WIik7
CistCXRhYmxlLT52a0NyZWF0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WID0gKFBGTl92a0NyZWF0
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQWNjZWxlcmF0
aW9uU3RydWN0dXJlTlYiKTsKKy0JdGFibGUtPnZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5lc05W
ID0gKFBGTl92a0NyZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOVilsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOViIpOworLQl0YWJsZS0+dmtEZXN0cm95QWNjZWxlcmF0
aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxv
YWQoY29udGV4dCwgInZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CistCXRhYmxl
LT52a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZUhhbmRsZU5WID0gKFBGTl92a0dldEFjY2VsZXJh
dGlvblN0cnVjdHVyZUhhbmRsZU5WKWxvYWQoY29udGV4dCwgInZrR2V0QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlSGFuZGxlTlYiKTsKKy0JdGFibGUtPnZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVt
b3J5UmVxdWlyZW1lbnRzTlYgPSAoUEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5
UmVxdWlyZW1lbnRzTlYpbG9hZChjb250ZXh0LCAidmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVN
ZW1vcnlSZXF1aXJlbWVudHNOViIpOworLQl0YWJsZS0+dmtHZXRSYXlUcmFjaW5nU2hhZGVyR3Jv
dXBIYW5kbGVzTlYgPSAoUEZOX3ZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WKWxv
YWQoY29udGV4dCwgInZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WIik7CisrICAg
IHRhYmxlLT52a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlOViA9IChQRk5fdmtCaW5k
QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5TlYpbG9hZChjb250ZXh0LCAidmtCaW5kQWNjZWxl
cmF0aW9uU3RydWN0dXJlTWVtb3J5TlYiKTsKKysgICAgdGFibGUtPnZrQ21kQnVpbGRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5W
KWxvYWQoY29udGV4dCwgInZrQ21kQnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOworKyAg
ICB0YWJsZS0+dmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrQ21kQ29w
eUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUFjY2VsZXJh
dGlvblN0cnVjdHVyZU5WIik7CisrICAgIHRhYmxlLT52a0NtZFRyYWNlUmF5c05WID0gKFBGTl92
a0NtZFRyYWNlUmF5c05WKWxvYWQoY29udGV4dCwgInZrQ21kVHJhY2VSYXlzTlYiKTsKKysgICAg
dGFibGUtPnZrQ21kV3JpdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WID0gKFBG
Tl92a0NtZFdyaXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOVilsb2FkKGNvbnRl
eHQsICJ2a0NtZFdyaXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOViIpOworKyAg
ICB0YWJsZS0+dmtDb21waWxlRGVmZXJyZWROViA9IChQRk5fdmtDb21waWxlRGVmZXJyZWROVils
b2FkKGNvbnRleHQsICJ2a0NvbXBpbGVEZWZlcnJlZE5WIik7CisrICAgIHRhYmxlLT52a0NyZWF0
ZUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WID0gKFBGTl92a0NyZWF0ZUFjY2VsZXJhdGlvblN0cnVj
dHVyZU5WKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsK
KysgICAgdGFibGUtPnZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5lc05WID0gKFBGTl92a0NyZWF0
ZVJheVRyYWNpbmdQaXBlbGluZXNOVilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVJheVRyYWNpbmdQ
aXBlbGluZXNOViIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYgPSAoUEZOX3ZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CisrICAgIHRhYmxlLT52a0dldEFj
Y2VsZXJhdGlvblN0cnVjdHVyZUhhbmRsZU5WID0gKFBGTl92a0dldEFjY2VsZXJhdGlvblN0cnVj
dHVyZUhhbmRsZU5WKWxvYWQoY29udGV4dCwgInZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFu
ZGxlTlYiKTsKKysgICAgdGFibGUtPnZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVx
dWlyZW1lbnRzTlYgPSAoUEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWly
ZW1lbnRzTlYpbG9hZChjb250ZXh0LCAidmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlS
ZXF1aXJlbWVudHNOViIpOworKyAgICB0YWJsZS0+dmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBI
YW5kbGVzTlYgPSAoUEZOX3ZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WKWxvYWQo
Y29udGV4dCwgInZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WIik7CisgI2VuZGlm
IC8qIGRlZmluZWQoVktfTlZfcmF5X3RyYWNpbmcpICovCisgI2lmIGRlZmluZWQoVktfTlZfc2Np
c3Nvcl9leGNsdXNpdmUpCistCXRhYmxlLT52a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOViA9IChQ
Rk5fdmtDbWRTZXRFeGNsdXNpdmVTY2lzc29yTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRFeGNs
dXNpdmVTY2lzc29yTlYiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5W
ID0gKFBGTl92a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dEV4Y2x1c2l2ZVNjaXNzb3JOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX3NjaXNzb3Jf
ZXhjbHVzaXZlKSAqLworICNpZiBkZWZpbmVkKFZLX05WX3NoYWRpbmdfcmF0ZV9pbWFnZSkKKy0J
dGFibGUtPnZrQ21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViA9IChQRk5fdmtDbWRCaW5kU2hhZGlu
Z1JhdGVJbWFnZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViIp
OworLQl0YWJsZS0+dmtDbWRTZXRDb2Fyc2VTYW1wbGVPcmRlck5WID0gKFBGTl92a0NtZFNldENv
YXJzZVNhbXBsZU9yZGVyTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRDb2Fyc2VTYW1wbGVPcmRl
ck5WIik7CistCXRhYmxlLT52a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYgPSAo
UEZOX3ZrQ21kU2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOVilsb2FkKGNvbnRleHQsICJ2
a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYiKTsKKysgICAgdGFibGUtPnZrQ21k
QmluZFNoYWRpbmdSYXRlSW1hZ2VOViA9IChQRk5fdmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5W
KWxvYWQoY29udGV4dCwgInZrQ21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViIpOworKyAgICB0YWJs
ZS0+dmtDbWRTZXRDb2Fyc2VTYW1wbGVPcmRlck5WID0gKFBGTl92a0NtZFNldENvYXJzZVNhbXBs
ZU9yZGVyTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRDb2Fyc2VTYW1wbGVPcmRlck5WIik7Cisr
ICAgIHRhYmxlLT52a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYgPSAoUEZOX3Zr
Q21kU2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19O
Vl9zaGFkaW5nX3JhdGVfaW1hZ2UpICovCisgI2lmIChkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVl
bl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkpIHx8IChkZWZpbmVk
KFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEp
KQorLQl0YWJsZS0+dmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhUID0gKFBG
Tl92a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQpbG9hZChjb250ZXh0LCAi
dmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhUIik7CisrICAgIHRhYmxlLT52
a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQgPSAoUEZOX3ZrR2V0RGV2aWNl
R3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzMkVYVClsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdy
b3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQiKTsKKyAjZW5kaWYgLyogKGRlZmluZWQoVktfRVhU
X2Z1bGxfc2NyZWVuX2V4Y2x1c2l2ZSkgJiYgZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSkg
fHwgKGRlZmluZWQoVktfRVhUX2Z1bGxfc2NyZWVuX2V4Y2x1c2l2ZSkgJiYgZGVmaW5lZChWS19W
RVJTSU9OXzFfMSkpICovCisgI2lmIChkZWZpbmVkKFZLX0tIUl9kZXNjcmlwdG9yX3VwZGF0ZV90
ZW1wbGF0ZSkgJiYgZGVmaW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9yKSkgfHwgKGRlZmluZWQo
VktfS0hSX3B1c2hfZGVzY3JpcHRvcikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpCistCXRh
YmxlLT52a0NtZFB1c2hEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSID0gKFBGTl92a0NtZFB1
c2hEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrQ21kUHVzaERl
c2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIiKTsKKysgICAgdGFibGUtPnZrQ21kUHVzaERlc2Ny
aXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIgPSAoUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JTZXRXaXRo
VGVtcGxhdGVLSFIpbG9hZChjb250ZXh0LCAidmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1w
bGF0ZUtIUiIpOworICNlbmRpZiAvKiAoZGVmaW5lZChWS19LSFJfZGVzY3JpcHRvcl91cGRhdGVf
dGVtcGxhdGUpICYmIGRlZmluZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRvcikpIHx8IChkZWZpbmVk
KFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3IpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLwor
ICNpZiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVkKFZLX0tIUl9zdXJm
YWNlKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19WRVJTSU9O
XzFfMSkpCistCXRhYmxlLT52a0dldERldmljZUdyb3VwUHJlc2VudENhcGFiaWxpdGllc0tIUiA9
IChQRk5fdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIpbG9hZChjb250ZXh0
LCAidmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIiKTsKKy0JdGFibGUtPnZr
R2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSID0gKFBGTl92a0dldERldmljZUdy
b3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3Vw
U3VyZmFjZVByZXNlbnRNb2Rlc0tIUiIpOworKyAgICB0YWJsZS0+dmtHZXREZXZpY2VHcm91cFBy
ZXNlbnRDYXBhYmlsaXRpZXNLSFIgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJp
bGl0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0
aWVzS0hSIik7CisrICAgIHRhYmxlLT52a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rl
c0tIUiA9IChQRk5fdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXNLSFIpbG9hZChj
b250ZXh0LCAidmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXNLSFIiKTsKKyAjZW5k
aWYgLyogKGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJfc3Vy
ZmFjZSkpIHx8IChkZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lP
Tl8xXzEpKSAqLworICNpZiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVk
KFZLX0tIUl9zd2FwY2hhaW4pKSB8fCAoZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSAmJiBkZWZp
bmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JdGFibGUtPnZrQWNxdWlyZU5leHRJbWFnZTJLSFIgPSAo
UEZOX3ZrQWNxdWlyZU5leHRJbWFnZTJLSFIpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlTmV4dElt
YWdlMktIUiIpOworKyAgICB0YWJsZS0+dmtBY3F1aXJlTmV4dEltYWdlMktIUiA9IChQRk5fdmtB
Y3F1aXJlTmV4dEltYWdlMktIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVOZXh0SW1hZ2UyS0hS
Iik7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICYmIGRlZmluZWQo
VktfS0hSX3N3YXBjaGFpbikpIHx8IChkZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICYmIGRlZmlu
ZWQoVktfVkVSU0lPTl8xXzEpKSAqLworLQkvKiBWT0xLX0dFTkVSQVRFX0xPQURfREVWSUNFX1RB
QkxFICovCisrICAgIC8qIFZPTEtfR0VORVJBVEVfTE9BRF9ERVZJQ0VfVEFCTEUgKi8KKyB9Cisg
CisgI2lmZGVmIF9fR05VQ19fCistIwlwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaChoaWRkZW4p
CisrIyAgIHByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGhpZGRlbikKKyAjZW5kaWYKKyAKKyAv
KiBWT0xLX0dFTkVSQVRFX1BST1RPVFlQRVNfQyAqLworQEAgLTE2ODcsNyArMTY4Nyw3IEBAIFBG
Tl92a0FjcXVpcmVOZXh0SW1hZ2UyS0hSIHZrQWNxdWlyZU5leHRJbWFnZTJLSFI7CisgLyogVk9M
S19HRU5FUkFURV9QUk9UT1RZUEVTX0MgKi8KKyAKKyAjaWZkZWYgX19HTlVDX18KKy0jCXByYWdt
YSBHQ0MgdmlzaWJpbGl0eSBwb3AKKysjICAgcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAorICNl
bmRpZgorIAorICNpZmRlZiBfX2NwbHVzcGx1cworZGlmZiAtLWdpdCBhL3NyYy90aGlyZF9wYXJ0
eS92b2xrL3ZvbGsuaCBiL3NyYy90aGlyZF9wYXJ0eS92b2xrL3ZvbGsuaAoraW5kZXggOGI1OTdh
NWYyLi44NGYwZTU0OTMgMTAwNjQ0CistLS0gYS9zcmMvdGhpcmRfcGFydHkvdm9say92b2xrLmgK
KysrKyBiL3NyYy90aGlyZF9wYXJ0eS92b2xrL3ZvbGsuaAorQEAgLTExLDcgKzExLDcgQEAKKyAj
ZGVmaW5lIFZPTEtfSF8KKyAKKyAjaWYgZGVmaW5lZChWVUxLQU5fSF8pICYmICFkZWZpbmVkKFZL
X05PX1BST1RPVFlQRVMpCistIwllcnJvciBUbyB1c2Ugdm9saywgeW91IG5lZWQgdG8gZGVmaW5l
IFZLX05PX1BST1RPVFlQRVMgYmVmb3JlIGluY2x1ZGluZyB2dWxrYW4uaAorKyMgICBlcnJvciBU
byB1c2Ugdm9saywgeW91IG5lZWQgdG8gZGVmaW5lIFZLX05PX1BST1RPVFlQRVMgYmVmb3JlIGlu
Y2x1ZGluZyB2dWxrYW4uaAorICNlbmRpZgorIAorIC8qIFZPTEtfR0VORVJBVEVfVkVSU0lPTl9E
RUZJTkUgKi8KK0BAIC0xOSwzMiArMTksMzIgQEAKKyAvKiBWT0xLX0dFTkVSQVRFX1ZFUlNJT05f
REVGSU5FICovCisgCisgI2lmbmRlZiBWS19OT19QUk9UT1RZUEVTCistIwlkZWZpbmUgVktfTk9f
UFJPVE9UWVBFUworKyMgICBkZWZpbmUgVktfTk9fUFJPVE9UWVBFUworICNlbmRpZgorIAorICNp
Zm5kZWYgVlVMS0FOX0hfCisgIyAgICAgICBpZmRlZiBWT0xLX1ZVTEtBTl9IX1BBVEgKKyAjICAg
ICAgICAgICAgICAgaW5jbHVkZSBWT0xLX1ZVTEtBTl9IX1BBVEgKKy0jCWVsaWYgZGVmaW5lZChW
S19VU0VfUExBVEZPUk1fV0lOMzJfS0hSKQorLSMJCWluY2x1ZGUgPHZ1bGthbi92a19wbGF0Zm9y
bS5oPgorLSMJCWluY2x1ZGUgPHZ1bGthbi92dWxrYW5fY29yZS5oPgorKyMgICBlbGlmIGRlZmlu
ZWQoVktfVVNFX1BMQVRGT1JNX1dJTjMyX0tIUikKKysjICAgICAgIGluY2x1ZGUgPHZ1bGthbi92
a19wbGF0Zm9ybS5oPgorKyMgICAgICAgaW5jbHVkZSA8dnVsa2FuL3Z1bGthbl9jb3JlLmg+Cisg
CistCQkvKiBXaGVuIFZLX1VTRV9QTEFURk9STV9XSU4zMl9LSFIgaXMgZGVmaW5lZCwgaW5zdGVh
ZCBvZiBpbmNsdWRpbmcgdnVsa2FuLmggZGlyZWN0bHksIHdlIGluY2x1ZGUgaW5kaXZpZHVhbCBw
YXJ0cyBvZiB0aGUgU0RLCistCQkgKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCBpbmNsdWRp
bmcgPHdpbmRvd3MuaD4gd2hpY2ggaXMgdmVyeSBoZWF2eSAtIGl0IHRha2VzIDIwMG1zIHRvIHBh
cnNlIHdpdGhvdXQgV0lOMzJfTEVBTl9BTkRfTUVBTgorLQkJICogYW5kIDEwMG1zIHRvIHBhcnNl
IHdpdGggaXQuIHZ1bGthbl93aW4zMi5oIG9ubHkgbmVlZHMgYSBmZXcgc3ltYm9scyB0aGF0IGFy
ZSBlYXN5IHRvIHJlZGVmaW5lIG91cnNlbHZlcy4KKy0JCSAqLworLQkJdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIERXT1JEOworLQkJdHlwZWRlZiBjb25zdCB3Y2hhcl90KiBMUENXU1RSOworLQkJdHlw
ZWRlZiB2b2lkKiBIQU5ETEU7CistCQl0eXBlZGVmIHN0cnVjdCBISU5TVEFOQ0VfXyogSElOU1RB
TkNFOworLQkJdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOworLQkJdHlwZWRlZiBzdHJ1Y3Qg
SE1PTklUT1JfXyogSE1PTklUT1I7CistCQl0eXBlZGVmIHN0cnVjdCBfU0VDVVJJVFlfQVRUUklC
VVRFUyBTRUNVUklUWV9BVFRSSUJVVEVTOworKyAgICAgICAgLyogV2hlbiBWS19VU0VfUExBVEZP
Uk1fV0lOMzJfS0hSIGlzIGRlZmluZWQsIGluc3RlYWQgb2YgaW5jbHVkaW5nIHZ1bGthbi5oIGRp
cmVjdGx5LCB3ZSBpbmNsdWRlIGluZGl2aWR1YWwgcGFydHMgb2YgdGhlIFNESworKyAgICAgICAg
ICogVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgaW5jbHVkaW5nIDx3aW5kb3dzLmg+IHdoaWNo
IGlzIHZlcnkgaGVhdnkgLSBpdCB0YWtlcyAyMDBtcyB0byBwYXJzZSB3aXRob3V0IFdJTjMyX0xF
QU5fQU5EX01FQU4KKysgICAgICAgICAqIGFuZCAxMDBtcyB0byBwYXJzZSB3aXRoIGl0LiB2dWxr
YW5fd2luMzIuaCBvbmx5IG5lZWRzIGEgZmV3IHN5bWJvbHMgdGhhdCBhcmUgZWFzeSB0byByZWRl
ZmluZSBvdXJzZWx2ZXMuCisrICAgICAgICAgKi8KKysgICAgICAgIHR5cGVkZWYgdW5zaWduZWQg
bG9uZyBEV09SRDsKKysgICAgICAgIHR5cGVkZWYgY29uc3Qgd2NoYXJfdCogTFBDV1NUUjsKKysg
ICAgICAgIHR5cGVkZWYgdm9pZCogSEFORExFOworKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgSElO
U1RBTkNFX18qIEhJTlNUQU5DRTsKKysgICAgICAgIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdO
RDsKKysgICAgICAgIHR5cGVkZWYgc3RydWN0IEhNT05JVE9SX18qIEhNT05JVE9SOworKyAgICAg
ICAgdHlwZWRlZiBzdHJ1Y3QgX1NFQ1VSSVRZX0FUVFJJQlVURVMgU0VDVVJJVFlfQVRUUklCVVRF
UzsKKyAKKy0jCQlpbmNsdWRlIDx2dWxrYW4vdnVsa2FuX3dpbjMyLmg+CistIwllbHNlCistIwkJ
aW5jbHVkZSA8dnVsa2FuL3Z1bGthbi5oPgorLSMJZW5kaWYKKysjICAgICAgIGluY2x1ZGUgPHZ1
bGthbi92dWxrYW5fd2luMzIuaD4KKysjICAgZWxzZQorKyMgICAgICAgaW5jbHVkZSA8dnVsa2Fu
L3Z1bGthbi5oPgorKyMgICBlbmRpZgorICNlbmRpZgorIAorICNpZmRlZiBfX2NwbHVzcGx1cwor
QEAgLTExMSw0MDMgKzExMSw0MDMgQEAgdm9pZCB2b2xrTG9hZERldmljZVRhYmxlKHN0cnVjdCBW
b2xrRGV2aWNlVGFibGUqIHRhYmxlLCBWa0RldmljZSBkZXZpY2UpOworICAqLworIHN0cnVjdCBW
b2xrRGV2aWNlVGFibGUKKyB7CistCS8qIFZPTEtfR0VORVJBVEVfREVWSUNFX1RBQkxFICovCisr
ICAgIC8qIFZPTEtfR0VORVJBVEVfREVWSUNFX1RBQkxFICovCisgI2lmIGRlZmluZWQoVktfVkVS
U0lPTl8xXzApCistCVBGTl92a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMgdmtBbGxvY2F0ZUNvbW1h
bmRCdWZmZXJzOworLQlQRk5fdmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzIHZrQWxsb2NhdGVEZXNj
cmlwdG9yU2V0czsKKy0JUEZOX3ZrQWxsb2NhdGVNZW1vcnkgdmtBbGxvY2F0ZU1lbW9yeTsKKy0J
UEZOX3ZrQmVnaW5Db21tYW5kQnVmZmVyIHZrQmVnaW5Db21tYW5kQnVmZmVyOworLQlQRk5fdmtC
aW5kQnVmZmVyTWVtb3J5IHZrQmluZEJ1ZmZlck1lbW9yeTsKKy0JUEZOX3ZrQmluZEltYWdlTWVt
b3J5IHZrQmluZEltYWdlTWVtb3J5OworLQlQRk5fdmtDbWRCZWdpblF1ZXJ5IHZrQ21kQmVnaW5R
dWVyeTsKKy0JUEZOX3ZrQ21kQmVnaW5SZW5kZXJQYXNzIHZrQ21kQmVnaW5SZW5kZXJQYXNzOwor
LQlQRk5fdmtDbWRCaW5kRGVzY3JpcHRvclNldHMgdmtDbWRCaW5kRGVzY3JpcHRvclNldHM7Cist
CVBGTl92a0NtZEJpbmRJbmRleEJ1ZmZlciB2a0NtZEJpbmRJbmRleEJ1ZmZlcjsKKy0JUEZOX3Zr
Q21kQmluZFBpcGVsaW5lIHZrQ21kQmluZFBpcGVsaW5lOworLQlQRk5fdmtDbWRCaW5kVmVydGV4
QnVmZmVycyB2a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzOworLQlQRk5fdmtDbWRCbGl0SW1hZ2UgdmtD
bWRCbGl0SW1hZ2U7CistCVBGTl92a0NtZENsZWFyQXR0YWNobWVudHMgdmtDbWRDbGVhckF0dGFj
aG1lbnRzOworLQlQRk5fdmtDbWRDbGVhckNvbG9ySW1hZ2UgdmtDbWRDbGVhckNvbG9ySW1hZ2U7
CistCVBGTl92a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UgdmtDbWRDbGVhckRlcHRoU3RlbmNp
bEltYWdlOworLQlQRk5fdmtDbWRDb3B5QnVmZmVyIHZrQ21kQ29weUJ1ZmZlcjsKKy0JUEZOX3Zr
Q21kQ29weUJ1ZmZlclRvSW1hZ2UgdmtDbWRDb3B5QnVmZmVyVG9JbWFnZTsKKy0JUEZOX3ZrQ21k
Q29weUltYWdlIHZrQ21kQ29weUltYWdlOworLQlQRk5fdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlciB2
a0NtZENvcHlJbWFnZVRvQnVmZmVyOworLQlQRk5fdmtDbWRDb3B5UXVlcnlQb29sUmVzdWx0cyB2
a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzOworLQlQRk5fdmtDbWREaXNwYXRjaCB2a0NtZERpc3Bh
dGNoOworLQlQRk5fdmtDbWREaXNwYXRjaEluZGlyZWN0IHZrQ21kRGlzcGF0Y2hJbmRpcmVjdDsK
Ky0JUEZOX3ZrQ21kRHJhdyB2a0NtZERyYXc7CistCVBGTl92a0NtZERyYXdJbmRleGVkIHZrQ21k
RHJhd0luZGV4ZWQ7CistCVBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3QgdmtDbWREcmF3SW5k
ZXhlZEluZGlyZWN0OworLQlQRk5fdmtDbWREcmF3SW5kaXJlY3QgdmtDbWREcmF3SW5kaXJlY3Q7
CistCVBGTl92a0NtZEVuZFF1ZXJ5IHZrQ21kRW5kUXVlcnk7CistCVBGTl92a0NtZEVuZFJlbmRl
clBhc3MgdmtDbWRFbmRSZW5kZXJQYXNzOworLQlQRk5fdmtDbWRFeGVjdXRlQ29tbWFuZHMgdmtD
bWRFeGVjdXRlQ29tbWFuZHM7CistCVBGTl92a0NtZEZpbGxCdWZmZXIgdmtDbWRGaWxsQnVmZmVy
OworLQlQRk5fdmtDbWROZXh0U3VicGFzcyB2a0NtZE5leHRTdWJwYXNzOworLQlQRk5fdmtDbWRQ
aXBlbGluZUJhcnJpZXIgdmtDbWRQaXBlbGluZUJhcnJpZXI7CistCVBGTl92a0NtZFB1c2hDb25z
dGFudHMgdmtDbWRQdXNoQ29uc3RhbnRzOworLQlQRk5fdmtDbWRSZXNldEV2ZW50IHZrQ21kUmVz
ZXRFdmVudDsKKy0JUEZOX3ZrQ21kUmVzZXRRdWVyeVBvb2wgdmtDbWRSZXNldFF1ZXJ5UG9vbDsK
Ky0JUEZOX3ZrQ21kUmVzb2x2ZUltYWdlIHZrQ21kUmVzb2x2ZUltYWdlOworLQlQRk5fdmtDbWRT
ZXRCbGVuZENvbnN0YW50cyB2a0NtZFNldEJsZW5kQ29uc3RhbnRzOworLQlQRk5fdmtDbWRTZXRE
ZXB0aEJpYXMgdmtDbWRTZXREZXB0aEJpYXM7CistCVBGTl92a0NtZFNldERlcHRoQm91bmRzIHZr
Q21kU2V0RGVwdGhCb3VuZHM7CistCVBGTl92a0NtZFNldEV2ZW50IHZrQ21kU2V0RXZlbnQ7Cist
CVBGTl92a0NtZFNldExpbmVXaWR0aCB2a0NtZFNldExpbmVXaWR0aDsKKy0JUEZOX3ZrQ21kU2V0
U2Npc3NvciB2a0NtZFNldFNjaXNzb3I7CistCVBGTl92a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFz
ayB2a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzazsKKy0JUEZOX3ZrQ21kU2V0U3RlbmNpbFJlZmVy
ZW5jZSB2a0NtZFNldFN0ZW5jaWxSZWZlcmVuY2U7CistCVBGTl92a0NtZFNldFN0ZW5jaWxXcml0
ZU1hc2sgdmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrOworLQlQRk5fdmtDbWRTZXRWaWV3cG9ydCB2
a0NtZFNldFZpZXdwb3J0OworLQlQRk5fdmtDbWRVcGRhdGVCdWZmZXIgdmtDbWRVcGRhdGVCdWZm
ZXI7CistCVBGTl92a0NtZFdhaXRFdmVudHMgdmtDbWRXYWl0RXZlbnRzOworLQlQRk5fdmtDbWRX
cml0ZVRpbWVzdGFtcCB2a0NtZFdyaXRlVGltZXN0YW1wOworLQlQRk5fdmtDcmVhdGVCdWZmZXIg
dmtDcmVhdGVCdWZmZXI7CistCVBGTl92a0NyZWF0ZUJ1ZmZlclZpZXcgdmtDcmVhdGVCdWZmZXJW
aWV3OworLQlQRk5fdmtDcmVhdGVDb21tYW5kUG9vbCB2a0NyZWF0ZUNvbW1hbmRQb29sOworLQlQ
Rk5fdmtDcmVhdGVDb21wdXRlUGlwZWxpbmVzIHZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lczsKKy0J
UEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclBvb2wgdmtDcmVhdGVEZXNjcmlwdG9yUG9vbDsKKy0JUEZO
X3ZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dCB2a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQ7
CistCVBGTl92a0NyZWF0ZUV2ZW50IHZrQ3JlYXRlRXZlbnQ7CistCVBGTl92a0NyZWF0ZUZlbmNl
IHZrQ3JlYXRlRmVuY2U7CistCVBGTl92a0NyZWF0ZUZyYW1lYnVmZmVyIHZrQ3JlYXRlRnJhbWVi
dWZmZXI7CistCVBGTl92a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzIHZrQ3JlYXRlR3JhcGhpY3NQ
aXBlbGluZXM7CistCVBGTl92a0NyZWF0ZUltYWdlIHZrQ3JlYXRlSW1hZ2U7CistCVBGTl92a0Ny
ZWF0ZUltYWdlVmlldyB2a0NyZWF0ZUltYWdlVmlldzsKKy0JUEZOX3ZrQ3JlYXRlUGlwZWxpbmVD
YWNoZSB2a0NyZWF0ZVBpcGVsaW5lQ2FjaGU7CistCVBGTl92a0NyZWF0ZVBpcGVsaW5lTGF5b3V0
IHZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQ7CistCVBGTl92a0NyZWF0ZVF1ZXJ5UG9vbCB2a0NyZWF0
ZVF1ZXJ5UG9vbDsKKy0JUEZOX3ZrQ3JlYXRlUmVuZGVyUGFzcyB2a0NyZWF0ZVJlbmRlclBhc3M7
CistCVBGTl92a0NyZWF0ZVNhbXBsZXIgdmtDcmVhdGVTYW1wbGVyOworLQlQRk5fdmtDcmVhdGVT
ZW1hcGhvcmUgdmtDcmVhdGVTZW1hcGhvcmU7CistCVBGTl92a0NyZWF0ZVNoYWRlck1vZHVsZSB2
a0NyZWF0ZVNoYWRlck1vZHVsZTsKKy0JUEZOX3ZrRGVzdHJveUJ1ZmZlciB2a0Rlc3Ryb3lCdWZm
ZXI7CistCVBGTl92a0Rlc3Ryb3lCdWZmZXJWaWV3IHZrRGVzdHJveUJ1ZmZlclZpZXc7CistCVBG
Tl92a0Rlc3Ryb3lDb21tYW5kUG9vbCB2a0Rlc3Ryb3lDb21tYW5kUG9vbDsKKy0JUEZOX3ZrRGVz
dHJveURlc2NyaXB0b3JQb29sIHZrRGVzdHJveURlc2NyaXB0b3JQb29sOworLQlQRk5fdmtEZXN0
cm95RGVzY3JpcHRvclNldExheW91dCB2a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0OworLQlQ
Rk5fdmtEZXN0cm95RGV2aWNlIHZrRGVzdHJveURldmljZTsKKy0JUEZOX3ZrRGVzdHJveUV2ZW50
IHZrRGVzdHJveUV2ZW50OworLQlQRk5fdmtEZXN0cm95RmVuY2UgdmtEZXN0cm95RmVuY2U7Cist
CVBGTl92a0Rlc3Ryb3lGcmFtZWJ1ZmZlciB2a0Rlc3Ryb3lGcmFtZWJ1ZmZlcjsKKy0JUEZOX3Zr
RGVzdHJveUltYWdlIHZrRGVzdHJveUltYWdlOworLQlQRk5fdmtEZXN0cm95SW1hZ2VWaWV3IHZr
RGVzdHJveUltYWdlVmlldzsKKy0JUEZOX3ZrRGVzdHJveVBpcGVsaW5lIHZrRGVzdHJveVBpcGVs
aW5lOworLQlQRk5fdmtEZXN0cm95UGlwZWxpbmVDYWNoZSB2a0Rlc3Ryb3lQaXBlbGluZUNhY2hl
OworLQlQRk5fdmtEZXN0cm95UGlwZWxpbmVMYXlvdXQgdmtEZXN0cm95UGlwZWxpbmVMYXlvdXQ7
CistCVBGTl92a0Rlc3Ryb3lRdWVyeVBvb2wgdmtEZXN0cm95UXVlcnlQb29sOworLQlQRk5fdmtE
ZXN0cm95UmVuZGVyUGFzcyB2a0Rlc3Ryb3lSZW5kZXJQYXNzOworLQlQRk5fdmtEZXN0cm95U2Ft
cGxlciB2a0Rlc3Ryb3lTYW1wbGVyOworLQlQRk5fdmtEZXN0cm95U2VtYXBob3JlIHZrRGVzdHJv
eVNlbWFwaG9yZTsKKy0JUEZOX3ZrRGVzdHJveVNoYWRlck1vZHVsZSB2a0Rlc3Ryb3lTaGFkZXJN
b2R1bGU7CistCVBGTl92a0RldmljZVdhaXRJZGxlIHZrRGV2aWNlV2FpdElkbGU7CistCVBGTl92
a0VuZENvbW1hbmRCdWZmZXIgdmtFbmRDb21tYW5kQnVmZmVyOworLQlQRk5fdmtGbHVzaE1hcHBl
ZE1lbW9yeVJhbmdlcyB2a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzOworLQlQRk5fdmtGcmVlQ29t
bWFuZEJ1ZmZlcnMgdmtGcmVlQ29tbWFuZEJ1ZmZlcnM7CistCVBGTl92a0ZyZWVEZXNjcmlwdG9y
U2V0cyB2a0ZyZWVEZXNjcmlwdG9yU2V0czsKKy0JUEZOX3ZrRnJlZU1lbW9yeSB2a0ZyZWVNZW1v
cnk7CistCVBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyB2a0dldEJ1ZmZlck1lbW9y
eVJlcXVpcmVtZW50czsKKy0JUEZOX3ZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudCB2a0dldERl
dmljZU1lbW9yeUNvbW1pdG1lbnQ7CistCVBGTl92a0dldERldmljZVF1ZXVlIHZrR2V0RGV2aWNl
UXVldWU7CistCVBGTl92a0dldEV2ZW50U3RhdHVzIHZrR2V0RXZlbnRTdGF0dXM7CistCVBGTl92
a0dldEZlbmNlU3RhdHVzIHZrR2V0RmVuY2VTdGF0dXM7CistCVBGTl92a0dldEltYWdlTWVtb3J5
UmVxdWlyZW1lbnRzIHZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHM7CistCVBGTl92a0dldElt
YWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzIHZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJl
bWVudHM7CistCVBGTl92a0dldEltYWdlU3VicmVzb3VyY2VMYXlvdXQgdmtHZXRJbWFnZVN1YnJl
c291cmNlTGF5b3V0OworLQlQRk5fdmtHZXRQaXBlbGluZUNhY2hlRGF0YSB2a0dldFBpcGVsaW5l
Q2FjaGVEYXRhOworLQlQRk5fdmtHZXRRdWVyeVBvb2xSZXN1bHRzIHZrR2V0UXVlcnlQb29sUmVz
dWx0czsKKy0JUEZOX3ZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5IHZrR2V0UmVuZGVyQXJlYUdy
YW51bGFyaXR5OworLQlQRk5fdmtJbnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzIHZrSW52YWxp
ZGF0ZU1hcHBlZE1lbW9yeVJhbmdlczsKKy0JUEZOX3ZrTWFwTWVtb3J5IHZrTWFwTWVtb3J5Owor
LQlQRk5fdmtNZXJnZVBpcGVsaW5lQ2FjaGVzIHZrTWVyZ2VQaXBlbGluZUNhY2hlczsKKy0JUEZO
X3ZrUXVldWVCaW5kU3BhcnNlIHZrUXVldWVCaW5kU3BhcnNlOworLQlQRk5fdmtRdWV1ZVN1Ym1p
dCB2a1F1ZXVlU3VibWl0OworLQlQRk5fdmtRdWV1ZVdhaXRJZGxlIHZrUXVldWVXYWl0SWRsZTsK
Ky0JUEZOX3ZrUmVzZXRDb21tYW5kQnVmZmVyIHZrUmVzZXRDb21tYW5kQnVmZmVyOworLQlQRk5f
dmtSZXNldENvbW1hbmRQb29sIHZrUmVzZXRDb21tYW5kUG9vbDsKKy0JUEZOX3ZrUmVzZXREZXNj
cmlwdG9yUG9vbCB2a1Jlc2V0RGVzY3JpcHRvclBvb2w7CistCVBGTl92a1Jlc2V0RXZlbnQgdmtS
ZXNldEV2ZW50OworLQlQRk5fdmtSZXNldEZlbmNlcyB2a1Jlc2V0RmVuY2VzOworLQlQRk5fdmtT
ZXRFdmVudCB2a1NldEV2ZW50OworLQlQRk5fdmtVbm1hcE1lbW9yeSB2a1VubWFwTWVtb3J5Owor
LQlQRk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyB2a1VwZGF0ZURlc2NyaXB0b3JTZXRzOworLQlQ
Rk5fdmtXYWl0Rm9yRmVuY2VzIHZrV2FpdEZvckZlbmNlczsKKysgICAgUEZOX3ZrQWxsb2NhdGVD
b21tYW5kQnVmZmVycyB2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnM7CisrICAgIFBGTl92a0FsbG9j
YXRlRGVzY3JpcHRvclNldHMgdmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzOworKyAgICBQRk5fdmtB
bGxvY2F0ZU1lbW9yeSB2a0FsbG9jYXRlTWVtb3J5OworKyAgICBQRk5fdmtCZWdpbkNvbW1hbmRC
dWZmZXIgdmtCZWdpbkNvbW1hbmRCdWZmZXI7CisrICAgIFBGTl92a0JpbmRCdWZmZXJNZW1vcnkg
dmtCaW5kQnVmZmVyTWVtb3J5OworKyAgICBQRk5fdmtCaW5kSW1hZ2VNZW1vcnkgdmtCaW5kSW1h
Z2VNZW1vcnk7CisrICAgIFBGTl92a0NtZEJlZ2luUXVlcnkgdmtDbWRCZWdpblF1ZXJ5OworKyAg
ICBQRk5fdmtDbWRCZWdpblJlbmRlclBhc3MgdmtDbWRCZWdpblJlbmRlclBhc3M7CisrICAgIFBG
Tl92a0NtZEJpbmREZXNjcmlwdG9yU2V0cyB2a0NtZEJpbmREZXNjcmlwdG9yU2V0czsKKysgICAg
UEZOX3ZrQ21kQmluZEluZGV4QnVmZmVyIHZrQ21kQmluZEluZGV4QnVmZmVyOworKyAgICBQRk5f
dmtDbWRCaW5kUGlwZWxpbmUgdmtDbWRCaW5kUGlwZWxpbmU7CisrICAgIFBGTl92a0NtZEJpbmRW
ZXJ0ZXhCdWZmZXJzIHZrQ21kQmluZFZlcnRleEJ1ZmZlcnM7CisrICAgIFBGTl92a0NtZEJsaXRJ
bWFnZSB2a0NtZEJsaXRJbWFnZTsKKysgICAgUEZOX3ZrQ21kQ2xlYXJBdHRhY2htZW50cyB2a0Nt
ZENsZWFyQXR0YWNobWVudHM7CisrICAgIFBGTl92a0NtZENsZWFyQ29sb3JJbWFnZSB2a0NtZENs
ZWFyQ29sb3JJbWFnZTsKKysgICAgUEZOX3ZrQ21kQ2xlYXJEZXB0aFN0ZW5jaWxJbWFnZSB2a0Nt
ZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2U7CisrICAgIFBGTl92a0NtZENvcHlCdWZmZXIgdmtDbWRD
b3B5QnVmZmVyOworKyAgICBQRk5fdmtDbWRDb3B5QnVmZmVyVG9JbWFnZSB2a0NtZENvcHlCdWZm
ZXJUb0ltYWdlOworKyAgICBQRk5fdmtDbWRDb3B5SW1hZ2UgdmtDbWRDb3B5SW1hZ2U7CisrICAg
IFBGTl92a0NtZENvcHlJbWFnZVRvQnVmZmVyIHZrQ21kQ29weUltYWdlVG9CdWZmZXI7CisrICAg
IFBGTl92a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzIHZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHM7
CisrICAgIFBGTl92a0NtZERpc3BhdGNoIHZrQ21kRGlzcGF0Y2g7CisrICAgIFBGTl92a0NtZERp
c3BhdGNoSW5kaXJlY3QgdmtDbWREaXNwYXRjaEluZGlyZWN0OworKyAgICBQRk5fdmtDbWREcmF3
IHZrQ21kRHJhdzsKKysgICAgUEZOX3ZrQ21kRHJhd0luZGV4ZWQgdmtDbWREcmF3SW5kZXhlZDsK
KysgICAgUEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdCB2a0NtZERyYXdJbmRleGVkSW5kaXJl
Y3Q7CisrICAgIFBGTl92a0NtZERyYXdJbmRpcmVjdCB2a0NtZERyYXdJbmRpcmVjdDsKKysgICAg
UEZOX3ZrQ21kRW5kUXVlcnkgdmtDbWRFbmRRdWVyeTsKKysgICAgUEZOX3ZrQ21kRW5kUmVuZGVy
UGFzcyB2a0NtZEVuZFJlbmRlclBhc3M7CisrICAgIFBGTl92a0NtZEV4ZWN1dGVDb21tYW5kcyB2
a0NtZEV4ZWN1dGVDb21tYW5kczsKKysgICAgUEZOX3ZrQ21kRmlsbEJ1ZmZlciB2a0NtZEZpbGxC
dWZmZXI7CisrICAgIFBGTl92a0NtZE5leHRTdWJwYXNzIHZrQ21kTmV4dFN1YnBhc3M7CisrICAg
IFBGTl92a0NtZFBpcGVsaW5lQmFycmllciB2a0NtZFBpcGVsaW5lQmFycmllcjsKKysgICAgUEZO
X3ZrQ21kUHVzaENvbnN0YW50cyB2a0NtZFB1c2hDb25zdGFudHM7CisrICAgIFBGTl92a0NtZFJl
c2V0RXZlbnQgdmtDbWRSZXNldEV2ZW50OworKyAgICBQRk5fdmtDbWRSZXNldFF1ZXJ5UG9vbCB2
a0NtZFJlc2V0UXVlcnlQb29sOworKyAgICBQRk5fdmtDbWRSZXNvbHZlSW1hZ2UgdmtDbWRSZXNv
bHZlSW1hZ2U7CisrICAgIFBGTl92a0NtZFNldEJsZW5kQ29uc3RhbnRzIHZrQ21kU2V0QmxlbmRD
b25zdGFudHM7CisrICAgIFBGTl92a0NtZFNldERlcHRoQmlhcyB2a0NtZFNldERlcHRoQmlhczsK
KysgICAgUEZOX3ZrQ21kU2V0RGVwdGhCb3VuZHMgdmtDbWRTZXREZXB0aEJvdW5kczsKKysgICAg
UEZOX3ZrQ21kU2V0RXZlbnQgdmtDbWRTZXRFdmVudDsKKysgICAgUEZOX3ZrQ21kU2V0TGluZVdp
ZHRoIHZrQ21kU2V0TGluZVdpZHRoOworKyAgICBQRk5fdmtDbWRTZXRTY2lzc29yIHZrQ21kU2V0
U2Npc3NvcjsKKysgICAgUEZOX3ZrQ21kU2V0U3RlbmNpbENvbXBhcmVNYXNrIHZrQ21kU2V0U3Rl
bmNpbENvbXBhcmVNYXNrOworKyAgICBQRk5fdmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlIHZrQ21k
U2V0U3RlbmNpbFJlZmVyZW5jZTsKKysgICAgUEZOX3ZrQ21kU2V0U3RlbmNpbFdyaXRlTWFzayB2
a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2s7CisrICAgIFBGTl92a0NtZFNldFZpZXdwb3J0IHZrQ21k
U2V0Vmlld3BvcnQ7CisrICAgIFBGTl92a0NtZFVwZGF0ZUJ1ZmZlciB2a0NtZFVwZGF0ZUJ1ZmZl
cjsKKysgICAgUEZOX3ZrQ21kV2FpdEV2ZW50cyB2a0NtZFdhaXRFdmVudHM7CisrICAgIFBGTl92
a0NtZFdyaXRlVGltZXN0YW1wIHZrQ21kV3JpdGVUaW1lc3RhbXA7CisrICAgIFBGTl92a0NyZWF0
ZUJ1ZmZlciB2a0NyZWF0ZUJ1ZmZlcjsKKysgICAgUEZOX3ZrQ3JlYXRlQnVmZmVyVmlldyB2a0Ny
ZWF0ZUJ1ZmZlclZpZXc7CisrICAgIFBGTl92a0NyZWF0ZUNvbW1hbmRQb29sIHZrQ3JlYXRlQ29t
bWFuZFBvb2w7CisrICAgIFBGTl92a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXMgdmtDcmVhdGVDb21w
dXRlUGlwZWxpbmVzOworKyAgICBQRk5fdmtDcmVhdGVEZXNjcmlwdG9yUG9vbCB2a0NyZWF0ZURl
c2NyaXB0b3JQb29sOworKyAgICBQRk5fdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0IHZrQ3Jl
YXRlRGVzY3JpcHRvclNldExheW91dDsKKysgICAgUEZOX3ZrQ3JlYXRlRXZlbnQgdmtDcmVhdGVF
dmVudDsKKysgICAgUEZOX3ZrQ3JlYXRlRmVuY2UgdmtDcmVhdGVGZW5jZTsKKysgICAgUEZOX3Zr
Q3JlYXRlRnJhbWVidWZmZXIgdmtDcmVhdGVGcmFtZWJ1ZmZlcjsKKysgICAgUEZOX3ZrQ3JlYXRl
R3JhcGhpY3NQaXBlbGluZXMgdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lczsKKysgICAgUEZOX3Zr
Q3JlYXRlSW1hZ2UgdmtDcmVhdGVJbWFnZTsKKysgICAgUEZOX3ZrQ3JlYXRlSW1hZ2VWaWV3IHZr
Q3JlYXRlSW1hZ2VWaWV3OworKyAgICBQRk5fdmtDcmVhdGVQaXBlbGluZUNhY2hlIHZrQ3JlYXRl
UGlwZWxpbmVDYWNoZTsKKysgICAgUEZOX3ZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQgdmtDcmVhdGVQ
aXBlbGluZUxheW91dDsKKysgICAgUEZOX3ZrQ3JlYXRlUXVlcnlQb29sIHZrQ3JlYXRlUXVlcnlQ
b29sOworKyAgICBQRk5fdmtDcmVhdGVSZW5kZXJQYXNzIHZrQ3JlYXRlUmVuZGVyUGFzczsKKysg
ICAgUEZOX3ZrQ3JlYXRlU2FtcGxlciB2a0NyZWF0ZVNhbXBsZXI7CisrICAgIFBGTl92a0NyZWF0
ZVNlbWFwaG9yZSB2a0NyZWF0ZVNlbWFwaG9yZTsKKysgICAgUEZOX3ZrQ3JlYXRlU2hhZGVyTW9k
dWxlIHZrQ3JlYXRlU2hhZGVyTW9kdWxlOworKyAgICBQRk5fdmtEZXN0cm95QnVmZmVyIHZrRGVz
dHJveUJ1ZmZlcjsKKysgICAgUEZOX3ZrRGVzdHJveUJ1ZmZlclZpZXcgdmtEZXN0cm95QnVmZmVy
VmlldzsKKysgICAgUEZOX3ZrRGVzdHJveUNvbW1hbmRQb29sIHZrRGVzdHJveUNvbW1hbmRQb29s
OworKyAgICBQRk5fdmtEZXN0cm95RGVzY3JpcHRvclBvb2wgdmtEZXN0cm95RGVzY3JpcHRvclBv
b2w7CisrICAgIFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0IHZrRGVzdHJveURlc2Ny
aXB0b3JTZXRMYXlvdXQ7CisrICAgIFBGTl92a0Rlc3Ryb3lEZXZpY2UgdmtEZXN0cm95RGV2aWNl
OworKyAgICBQRk5fdmtEZXN0cm95RXZlbnQgdmtEZXN0cm95RXZlbnQ7CisrICAgIFBGTl92a0Rl
c3Ryb3lGZW5jZSB2a0Rlc3Ryb3lGZW5jZTsKKysgICAgUEZOX3ZrRGVzdHJveUZyYW1lYnVmZmVy
IHZrRGVzdHJveUZyYW1lYnVmZmVyOworKyAgICBQRk5fdmtEZXN0cm95SW1hZ2UgdmtEZXN0cm95
SW1hZ2U7CisrICAgIFBGTl92a0Rlc3Ryb3lJbWFnZVZpZXcgdmtEZXN0cm95SW1hZ2VWaWV3Owor
KyAgICBQRk5fdmtEZXN0cm95UGlwZWxpbmUgdmtEZXN0cm95UGlwZWxpbmU7CisrICAgIFBGTl92
a0Rlc3Ryb3lQaXBlbGluZUNhY2hlIHZrRGVzdHJveVBpcGVsaW5lQ2FjaGU7CisrICAgIFBGTl92
a0Rlc3Ryb3lQaXBlbGluZUxheW91dCB2a0Rlc3Ryb3lQaXBlbGluZUxheW91dDsKKysgICAgUEZO
X3ZrRGVzdHJveVF1ZXJ5UG9vbCB2a0Rlc3Ryb3lRdWVyeVBvb2w7CisrICAgIFBGTl92a0Rlc3Ry
b3lSZW5kZXJQYXNzIHZrRGVzdHJveVJlbmRlclBhc3M7CisrICAgIFBGTl92a0Rlc3Ryb3lTYW1w
bGVyIHZrRGVzdHJveVNhbXBsZXI7CisrICAgIFBGTl92a0Rlc3Ryb3lTZW1hcGhvcmUgdmtEZXN0
cm95U2VtYXBob3JlOworKyAgICBQRk5fdmtEZXN0cm95U2hhZGVyTW9kdWxlIHZrRGVzdHJveVNo
YWRlck1vZHVsZTsKKysgICAgUEZOX3ZrRGV2aWNlV2FpdElkbGUgdmtEZXZpY2VXYWl0SWRsZTsK
KysgICAgUEZOX3ZrRW5kQ29tbWFuZEJ1ZmZlciB2a0VuZENvbW1hbmRCdWZmZXI7CisrICAgIFBG
Tl92a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzIHZrRmx1c2hNYXBwZWRNZW1vcnlSYW5nZXM7Cisr
ICAgIFBGTl92a0ZyZWVDb21tYW5kQnVmZmVycyB2a0ZyZWVDb21tYW5kQnVmZmVyczsKKysgICAg
UEZOX3ZrRnJlZURlc2NyaXB0b3JTZXRzIHZrRnJlZURlc2NyaXB0b3JTZXRzOworKyAgICBQRk5f
dmtGcmVlTWVtb3J5IHZrRnJlZU1lbW9yeTsKKysgICAgUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVx
dWlyZW1lbnRzIHZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzOworKyAgICBQRk5fdmtHZXRE
ZXZpY2VNZW1vcnlDb21taXRtZW50IHZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudDsKKysgICAg
UEZOX3ZrR2V0RGV2aWNlUXVldWUgdmtHZXREZXZpY2VRdWV1ZTsKKysgICAgUEZOX3ZrR2V0RXZl
bnRTdGF0dXMgdmtHZXRFdmVudFN0YXR1czsKKysgICAgUEZOX3ZrR2V0RmVuY2VTdGF0dXMgdmtH
ZXRGZW5jZVN0YXR1czsKKysgICAgUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMgdmtH
ZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czsKKysgICAgUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1v
cnlSZXF1aXJlbWVudHMgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czsKKysgICAg
UEZOX3ZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dCB2a0dldEltYWdlU3VicmVzb3VyY2VMYXlv
dXQ7CisrICAgIFBGTl92a0dldFBpcGVsaW5lQ2FjaGVEYXRhIHZrR2V0UGlwZWxpbmVDYWNoZURh
dGE7CisrICAgIFBGTl92a0dldFF1ZXJ5UG9vbFJlc3VsdHMgdmtHZXRRdWVyeVBvb2xSZXN1bHRz
OworKyAgICBQRk5fdmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHkgdmtHZXRSZW5kZXJBcmVhR3Jh
bnVsYXJpdHk7CisrICAgIFBGTl92a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMgdmtJbnZh
bGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2VzOworKyAgICBQRk5fdmtNYXBNZW1vcnkgdmtNYXBNZW1v
cnk7CisrICAgIFBGTl92a01lcmdlUGlwZWxpbmVDYWNoZXMgdmtNZXJnZVBpcGVsaW5lQ2FjaGVz
OworKyAgICBQRk5fdmtRdWV1ZUJpbmRTcGFyc2UgdmtRdWV1ZUJpbmRTcGFyc2U7CisrICAgIFBG
Tl92a1F1ZXVlU3VibWl0IHZrUXVldWVTdWJtaXQ7CisrICAgIFBGTl92a1F1ZXVlV2FpdElkbGUg
dmtRdWV1ZVdhaXRJZGxlOworKyAgICBQRk5fdmtSZXNldENvbW1hbmRCdWZmZXIgdmtSZXNldENv
bW1hbmRCdWZmZXI7CisrICAgIFBGTl92a1Jlc2V0Q29tbWFuZFBvb2wgdmtSZXNldENvbW1hbmRQ
b29sOworKyAgICBQRk5fdmtSZXNldERlc2NyaXB0b3JQb29sIHZrUmVzZXREZXNjcmlwdG9yUG9v
bDsKKysgICAgUEZOX3ZrUmVzZXRFdmVudCB2a1Jlc2V0RXZlbnQ7CisrICAgIFBGTl92a1Jlc2V0
RmVuY2VzIHZrUmVzZXRGZW5jZXM7CisrICAgIFBGTl92a1NldEV2ZW50IHZrU2V0RXZlbnQ7Cisr
ICAgIFBGTl92a1VubWFwTWVtb3J5IHZrVW5tYXBNZW1vcnk7CisrICAgIFBGTl92a1VwZGF0ZURl
c2NyaXB0b3JTZXRzIHZrVXBkYXRlRGVzY3JpcHRvclNldHM7CisrICAgIFBGTl92a1dhaXRGb3JG
ZW5jZXMgdmtXYWl0Rm9yRmVuY2VzOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8w
KSAqLworICNpZiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKQorLQlQRk5fdmtCaW5kQnVmZmVyTWVt
b3J5MiB2a0JpbmRCdWZmZXJNZW1vcnkyOworLQlQRk5fdmtCaW5kSW1hZ2VNZW1vcnkyIHZrQmlu
ZEltYWdlTWVtb3J5MjsKKy0JUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlIHZrQ21kRGlzcGF0Y2hCYXNl
OworLQlQRk5fdmtDbWRTZXREZXZpY2VNYXNrIHZrQ21kU2V0RGV2aWNlTWFzazsKKy0JUEZOX3Zr
Q3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIHZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRl
bXBsYXRlOworLQlQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uIHZrQ3JlYXRlU2Ft
cGxlclljYmNyQ29udmVyc2lvbjsKKy0JUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1w
bGF0ZSB2a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGU7CistCVBGTl92a0Rlc3Ryb3lT
YW1wbGVyWWNiY3JDb252ZXJzaW9uIHZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb247Cist
CVBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIgdmtHZXRCdWZmZXJNZW1vcnlSZXF1
aXJlbWVudHMyOworLQlQRk5fdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydCB2a0dldERl
c2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0OworLQlQRk5fdmtHZXREZXZpY2VHcm91cFBlZXJNZW1v
cnlGZWF0dXJlcyB2a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzOworLQlQRk5fdmtH
ZXREZXZpY2VRdWV1ZTIgdmtHZXREZXZpY2VRdWV1ZTI7CistCVBGTl92a0dldEltYWdlTWVtb3J5
UmVxdWlyZW1lbnRzMiB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMjsKKy0JUEZOX3ZrR2V0
SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyIHZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1
aXJlbWVudHMyOworLQlQRk5fdmtUcmltQ29tbWFuZFBvb2wgdmtUcmltQ29tbWFuZFBvb2w7Cist
CVBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUgdmtVcGRhdGVEZXNjcmlwdG9y
U2V0V2l0aFRlbXBsYXRlOworKyAgICBQRk5fdmtCaW5kQnVmZmVyTWVtb3J5MiB2a0JpbmRCdWZm
ZXJNZW1vcnkyOworKyAgICBQRk5fdmtCaW5kSW1hZ2VNZW1vcnkyIHZrQmluZEltYWdlTWVtb3J5
MjsKKysgICAgUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlIHZrQ21kRGlzcGF0Y2hCYXNlOworKyAgICBQ
Rk5fdmtDbWRTZXREZXZpY2VNYXNrIHZrQ21kU2V0RGV2aWNlTWFzazsKKysgICAgUEZOX3ZrQ3Jl
YXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIHZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBs
YXRlOworKyAgICBQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uIHZrQ3JlYXRlU2Ft
cGxlclljYmNyQ29udmVyc2lvbjsKKysgICAgUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVU
ZW1wbGF0ZSB2a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGU7CisrICAgIFBGTl92a0Rl
c3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uIHZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNp
b247CisrICAgIFBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIgdmtHZXRCdWZmZXJN
ZW1vcnlSZXF1aXJlbWVudHMyOworKyAgICBQRk5fdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3Vw
cG9ydCB2a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0OworKyAgICBQRk5fdmtHZXREZXZp
Y2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlcyB2a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1
cmVzOworKyAgICBQRk5fdmtHZXREZXZpY2VRdWV1ZTIgdmtHZXREZXZpY2VRdWV1ZTI7CisrICAg
IFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMiB2a0dldEltYWdlTWVtb3J5UmVxdWly
ZW1lbnRzMjsKKysgICAgUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyIHZr
R2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyOworKyAgICBQRk5fdmtUcmltQ29tbWFu
ZFBvb2wgdmtUcmltQ29tbWFuZFBvb2w7CisrICAgIFBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRX
aXRoVGVtcGxhdGUgdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlOworICNlbmRpZiAv
KiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSAqLworICNpZiBkZWZpbmVkKFZLX0FNRF9idWZmZXJf
bWFya2VyKQorLQlQRk5fdmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRCB2a0NtZFdyaXRlQnVmZmVy
TWFya2VyQU1EOworKyAgICBQRk5fdmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRCB2a0NtZFdyaXRl
QnVmZmVyTWFya2VyQU1EOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0FNRF9idWZmZXJfbWFya2Vy
KSAqLworICNpZiBkZWZpbmVkKFZLX0FNRF9kaXNwbGF5X25hdGl2ZV9oZHIpCistCVBGTl92a1Nl
dExvY2FsRGltbWluZ0FNRCB2a1NldExvY2FsRGltbWluZ0FNRDsKKysgICAgUEZOX3ZrU2V0TG9j
YWxEaW1taW5nQU1EIHZrU2V0TG9jYWxEaW1taW5nQU1EOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X0FNRF9kaXNwbGF5X25hdGl2ZV9oZHIpICovCisgI2lmIGRlZmluZWQoVktfQU1EX2RyYXdfaW5k
aXJlY3RfY291bnQpCistCVBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRCB2a0Nt
ZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRDsKKy0JUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291
bnRBTUQgdmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRDsKKysgICAgUEZOX3ZrQ21kRHJhd0luZGV4
ZWRJbmRpcmVjdENvdW50QU1EIHZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EOworKyAg
ICBQRk5fdmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCB2a0NtZERyYXdJbmRpcmVjdENvdW50QU1E
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0FNRF9kcmF3X2luZGlyZWN0X2NvdW50KSAqLworICNp
ZiBkZWZpbmVkKFZLX0FNRF9zaGFkZXJfaW5mbykKKy0JUEZOX3ZrR2V0U2hhZGVySW5mb0FNRCB2
a0dldFNoYWRlckluZm9BTUQ7CisrICAgIFBGTl92a0dldFNoYWRlckluZm9BTUQgdmtHZXRTaGFk
ZXJJbmZvQU1EOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0FNRF9zaGFkZXJfaW5mbykgKi8KKyAj
aWYgZGVmaW5lZChWS19BTkRST0lEX2V4dGVybmFsX21lbW9yeV9hbmRyb2lkX2hhcmR3YXJlX2J1
ZmZlcikKKy0JUEZOX3ZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQg
dmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRDsKKy0JUEZOX3ZrR2V0
TWVtb3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRCB2a0dldE1lbW9yeUFuZHJvaWRIYXJk
d2FyZUJ1ZmZlckFORFJPSUQ7CisrICAgIFBGTl92a0dldEFuZHJvaWRIYXJkd2FyZUJ1ZmZlclBy
b3BlcnRpZXNBTkRST0lEIHZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJP
SUQ7CisrICAgIFBGTl92a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQgdmtH
ZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVCdWZmZXJBTkRST0lEOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0FORFJPSURfZXh0ZXJuYWxfbWVtb3J5X2FuZHJvaWRfaGFyZHdhcmVfYnVmZmVyKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0VYVF9idWZmZXJfZGV2aWNlX2FkZHJlc3MpCistCVBGTl92a0dldEJ1
ZmZlckRldmljZUFkZHJlc3NFWFQgdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUOworKyAgICBQ
Rk5fdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUIHZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VY
VDsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfYnVmZmVyX2RldmljZV9hZGRyZXNzKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0VYVF9jYWxpYnJhdGVkX3RpbWVzdGFtcHMpCistCVBGTl92a0dldENh
bGlicmF0ZWRUaW1lc3RhbXBzRVhUIHZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQ7CisrICAg
IFBGTl92a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUIHZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFt
cHNFWFQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcykg
Ki8KKyAjaWYgZGVmaW5lZChWS19FWFRfY29uZGl0aW9uYWxfcmVuZGVyaW5nKQorLQlQRk5fdmtD
bWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIHZrQ21kQmVnaW5Db25kaXRpb25hbFJlbmRl
cmluZ0VYVDsKKy0JUEZOX3ZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQgdmtDbWRFbmRD
b25kaXRpb25hbFJlbmRlcmluZ0VYVDsKKysgICAgUEZOX3ZrQ21kQmVnaW5Db25kaXRpb25hbFJl
bmRlcmluZ0VYVCB2a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQ7CisrICAgIFBGTl92
a0NtZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIHZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJp
bmdFWFQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2NvbmRpdGlvbmFsX3JlbmRlcmluZykg
Ki8KKyAjaWYgZGVmaW5lZChWS19FWFRfZGVidWdfbWFya2VyKQorLQlQRk5fdmtDbWREZWJ1Z01h
cmtlckJlZ2luRVhUIHZrQ21kRGVidWdNYXJrZXJCZWdpbkVYVDsKKy0JUEZOX3ZrQ21kRGVidWdN
YXJrZXJFbmRFWFQgdmtDbWREZWJ1Z01hcmtlckVuZEVYVDsKKy0JUEZOX3ZrQ21kRGVidWdNYXJr
ZXJJbnNlcnRFWFQgdmtDbWREZWJ1Z01hcmtlckluc2VydEVYVDsKKy0JUEZOX3ZrRGVidWdNYXJr
ZXJTZXRPYmplY3ROYW1lRVhUIHZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUOworLQlQRk5f
dmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVCB2a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhU
OworKyAgICBQRk5fdmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUIHZrQ21kRGVidWdNYXJrZXJCZWdp
bkVYVDsKKysgICAgUEZOX3ZrQ21kRGVidWdNYXJrZXJFbmRFWFQgdmtDbWREZWJ1Z01hcmtlckVu
ZEVYVDsKKysgICAgUEZOX3ZrQ21kRGVidWdNYXJrZXJJbnNlcnRFWFQgdmtDbWREZWJ1Z01hcmtl
ckluc2VydEVYVDsKKysgICAgUEZOX3ZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUIHZrRGVi
dWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUOworKyAgICBQRk5fdmtEZWJ1Z01hcmtlclNldE9iamVj
dFRhZ0VYVCB2a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0VYVF9kZWJ1Z19tYXJrZXIpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Rpc2NhcmRfcmVj
dGFuZ2xlcykKKy0JUEZOX3ZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVCB2a0NtZFNldERpc2Nh
cmRSZWN0YW5nbGVFWFQ7CisrICAgIFBGTl92a0NtZFNldERpc2NhcmRSZWN0YW5nbGVFWFQgdmtD
bWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9kaXNj
YXJkX3JlY3RhbmdsZXMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Rpc3BsYXlfY29udHJvbCkK
Ky0JUEZOX3ZrRGlzcGxheVBvd2VyQ29udHJvbEVYVCB2a0Rpc3BsYXlQb3dlckNvbnRyb2xFWFQ7
CistCVBGTl92a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQgdmtHZXRTd2FwY2hhaW5Db3VudGVyRVhU
OworLQlQRk5fdmtSZWdpc3RlckRldmljZUV2ZW50RVhUIHZrUmVnaXN0ZXJEZXZpY2VFdmVudEVY
VDsKKy0JUEZOX3ZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQgdmtSZWdpc3RlckRpc3BsYXlFdmVu
dEVYVDsKKysgICAgUEZOX3ZrRGlzcGxheVBvd2VyQ29udHJvbEVYVCB2a0Rpc3BsYXlQb3dlckNv
bnRyb2xFWFQ7CisrICAgIFBGTl92a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQgdmtHZXRTd2FwY2hh
aW5Db3VudGVyRVhUOworKyAgICBQRk5fdmtSZWdpc3RlckRldmljZUV2ZW50RVhUIHZrUmVnaXN0
ZXJEZXZpY2VFdmVudEVYVDsKKysgICAgUEZOX3ZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQgdmtS
ZWdpc3RlckRpc3BsYXlFdmVudEVYVDsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZGlzcGxh
eV9jb250cm9sKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9leHRlcm5hbF9tZW1vcnlfaG9zdCkK
Ky0JUEZOX3ZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzRVhUIHZrR2V0TWVtb3J5SG9z
dFBvaW50ZXJQcm9wZXJ0aWVzRVhUOworKyAgICBQRk5fdmtHZXRNZW1vcnlIb3N0UG9pbnRlclBy
b3BlcnRpZXNFWFQgdmtHZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXNFWFQ7CisgI2VuZGlm
IC8qIGRlZmluZWQoVktfRVhUX2V4dGVybmFsX21lbW9yeV9ob3N0KSAqLworICNpZiBkZWZpbmVk
KFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUpCistCVBGTl92a0FjcXVpcmVGdWxsU2NyZWVu
RXhjbHVzaXZlTW9kZUVYVCB2a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVDsKKy0J
UEZOX3ZrUmVsZWFzZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIHZrUmVsZWFzZUZ1bGxTY3Jl
ZW5FeGNsdXNpdmVNb2RlRVhUOworKyAgICBQRk5fdmtBY3F1aXJlRnVsbFNjcmVlbkV4Y2x1c2l2
ZU1vZGVFWFQgdmtBY3F1aXJlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQ7CisrICAgIFBGTl92
a1JlbGVhc2VGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCB2a1JlbGVhc2VGdWxsU2NyZWVuRXhj
bHVzaXZlTW9kZUVYVDsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhj
bHVzaXZlKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9oZHJfbWV0YWRhdGEpCistCVBGTl92a1Nl
dEhkck1ldGFkYXRhRVhUIHZrU2V0SGRyTWV0YWRhdGFFWFQ7CisrICAgIFBGTl92a1NldEhkck1l
dGFkYXRhRVhUIHZrU2V0SGRyTWV0YWRhdGFFWFQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhU
X2hkcl9tZXRhZGF0YSkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfaG9zdF9xdWVyeV9yZXNldCkK
Ky0JUEZOX3ZrUmVzZXRRdWVyeVBvb2xFWFQgdmtSZXNldFF1ZXJ5UG9vbEVYVDsKKysgICAgUEZO
X3ZrUmVzZXRRdWVyeVBvb2xFWFQgdmtSZXNldFF1ZXJ5UG9vbEVYVDsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19FWFRfaG9zdF9xdWVyeV9yZXNldCkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfaW1h
Z2VfZHJtX2Zvcm1hdF9tb2RpZmllcikKKy0JUEZOX3ZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmll
clByb3BlcnRpZXNFWFQgdmtHZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVDsK
KysgICAgUEZOX3ZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNFWFQgdmtHZXRJ
bWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVDsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19FWFRfaW1hZ2VfZHJtX2Zvcm1hdF9tb2RpZmllcikgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRf
bGluZV9yYXN0ZXJpemF0aW9uKQorLQlQRk5fdmtDbWRTZXRMaW5lU3RpcHBsZUVYVCB2a0NtZFNl
dExpbmVTdGlwcGxlRVhUOworKyAgICBQRk5fdmtDbWRTZXRMaW5lU3RpcHBsZUVYVCB2a0NtZFNl
dExpbmVTdGlwcGxlRVhUOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9saW5lX3Jhc3Rlcml6
YXRpb24pICovCisgI2lmIGRlZmluZWQoVktfRVhUX3NhbXBsZV9sb2NhdGlvbnMpCistCVBGTl92
a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVCB2a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVDsKKysg
ICAgUEZOX3ZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUIHZrQ21kU2V0U2FtcGxlTG9jYXRpb25z
RVhUOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9zYW1wbGVfbG9jYXRpb25zKSAqLworICNp
ZiBkZWZpbmVkKFZLX0VYVF90cmFuc2Zvcm1fZmVlZGJhY2spCistCVBGTl92a0NtZEJlZ2luUXVl
cnlJbmRleGVkRVhUIHZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQ7CistCVBGTl92a0NtZEJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2tFWFQgdmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhUOworLQlQ
Rk5fdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUIHZrQ21kQmluZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyc0VYVDsKKy0JUEZOX3ZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhU
IHZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUOworLQlQRk5fdmtDbWRFbmRRdWVyeUluZGV4
ZWRFWFQgdmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQ7CistCVBGTl92a0NtZEVuZFRyYW5zZm9ybUZl
ZWRiYWNrRVhUIHZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQ7CisrICAgIFBGTl92a0NtZEJl
Z2luUXVlcnlJbmRleGVkRVhUIHZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQ7CisrICAgIFBGTl92
a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQgdmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNr
RVhUOworKyAgICBQRk5fdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUIHZrQ21k
QmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0VYVDsKKysgICAgUEZOX3ZrQ21kRHJhd0luZGly
ZWN0Qnl0ZUNvdW50RVhUIHZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUOworKyAgICBQRk5f
dmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQgdmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQ7CisrICAgIFBG
Tl92a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUIHZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tF
WFQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX3RyYW5zZm9ybV9mZWVkYmFjaykgKi8KKyAj
aWYgZGVmaW5lZChWS19FWFRfdmFsaWRhdGlvbl9jYWNoZSkKKy0JUEZOX3ZrQ3JlYXRlVmFsaWRh
dGlvbkNhY2hlRVhUIHZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhUOworLQlQRk5fdmtEZXN0cm95
VmFsaWRhdGlvbkNhY2hlRVhUIHZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVDsKKy0JUEZOX3Zr
R2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVYVCB2a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQ7Cist
CVBGTl92a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVCB2a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VY
VDsKKysgICAgUEZOX3ZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhUIHZrQ3JlYXRlVmFsaWRhdGlv
bkNhY2hlRVhUOworKyAgICBQRk5fdmtEZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUIHZrRGVzdHJv
eVZhbGlkYXRpb25DYWNoZUVYVDsKKysgICAgUEZOX3ZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVY
VCB2a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQ7CisrICAgIFBGTl92a01lcmdlVmFsaWRhdGlv
bkNhY2hlc0VYVCB2a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVDsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19FWFRfdmFsaWRhdGlvbl9jYWNoZSkgKi8KKyAjaWYgZGVmaW5lZChWS19HT09HTEVfZGlz
cGxheV90aW1pbmcpCistCVBGTl92a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUgdmtH
ZXRQYXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFOworLQlQRk5fdmtHZXRSZWZyZXNoQ3ljbGVE
dXJhdGlvbkdPT0dMRSB2a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFOworKyAgICBQRk5f
dmtHZXRQYXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFIHZrR2V0UGFzdFByZXNlbnRhdGlvblRp
bWluZ0dPT0dMRTsKKysgICAgUEZOX3ZrR2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUgdmtH
ZXRSZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19HT09H
TEVfZGlzcGxheV90aW1pbmcpICovCisgI2lmIGRlZmluZWQoVktfSU5URUxfcGVyZm9ybWFuY2Vf
cXVlcnkpCistCVBGTl92a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCB2a0Fj
cXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTDsKKy0JUEZOX3ZrQ21kU2V0UGVyZm9y
bWFuY2VNYXJrZXJJTlRFTCB2a0NtZFNldFBlcmZvcm1hbmNlTWFya2VySU5URUw7CistCVBGTl92
a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJpZGVJTlRFTCB2a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJp
ZGVJTlRFTDsKKy0JUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTCB2a0Nt
ZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2VySU5URUw7CistCVBGTl92a0dldFBlcmZvcm1hbmNl
UGFyYW1ldGVySU5URUwgdmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMOworLQlQRk5fdmtJ
bml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCB2a0luaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlO
VEVMOworLQlQRk5fdmtRdWV1ZVNldFBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMIHZrUXVl
dWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTDsKKy0JUEZOX3ZrUmVsZWFzZVBlcmZv
cm1hbmNlQ29uZmlndXJhdGlvbklOVEVMIHZrUmVsZWFzZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlv
bklOVEVMOworLQlQRk5fdmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMIHZrVW5pbml0
aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTDsKKysgICAgUEZOX3ZrQWNxdWlyZVBlcmZvcm1hbmNl
Q29uZmlndXJhdGlvbklOVEVMIHZrQWNxdWlyZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVM
OworKyAgICBQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMIHZrQ21kU2V0UGVyZm9y
bWFuY2VNYXJrZXJJTlRFTDsKKysgICAgUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlO
VEVMIHZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVMOworKyAgICBQRk5fdmtDbWRTZXRQ
ZXJmb3JtYW5jZVN0cmVhbU1hcmtlcklOVEVMIHZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJr
ZXJJTlRFTDsKKysgICAgUEZOX3ZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRFTCB2a0dldFBl
cmZvcm1hbmNlUGFyYW1ldGVySU5URUw7CisrICAgIFBGTl92a0luaXRpYWxpemVQZXJmb3JtYW5j
ZUFwaUlOVEVMIHZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUw7CisrICAgIFBGTl92a1F1
ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgdmtRdWV1ZVNldFBlcmZvcm1hbmNl
Q29uZmlndXJhdGlvbklOVEVMOworKyAgICBQRk5fdmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1
cmF0aW9uSU5URUwgdmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUw7CisrICAg
IFBGTl92a1VuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwgdmtVbmluaXRpYWxpemVQZXJm
b3JtYW5jZUFwaUlOVEVMOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0lOVEVMX3BlcmZvcm1hbmNl
X3F1ZXJ5KSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9iaW5kX21lbW9yeTIpCistCVBGTl92a0Jp
bmRCdWZmZXJNZW1vcnkyS0hSIHZrQmluZEJ1ZmZlck1lbW9yeTJLSFI7CistCVBGTl92a0JpbmRJ
bWFnZU1lbW9yeTJLSFIgdmtCaW5kSW1hZ2VNZW1vcnkyS0hSOworKyAgICBQRk5fdmtCaW5kQnVm
ZmVyTWVtb3J5MktIUiB2a0JpbmRCdWZmZXJNZW1vcnkyS0hSOworKyAgICBQRk5fdmtCaW5kSW1h
Z2VNZW1vcnkyS0hSIHZrQmluZEltYWdlTWVtb3J5MktIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19LSFJfYmluZF9tZW1vcnkyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9idWZmZXJfZGV2aWNl
X2FkZHJlc3MpCistCVBGTl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFIgdmtHZXRCdWZmZXJE
ZXZpY2VBZGRyZXNzS0hSOworLQlQRk5fdmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tI
UiB2a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSOworLQlQRk5fdmtHZXREZXZpY2VN
ZW1vcnlPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiB2a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1
cmVBZGRyZXNzS0hSOworKyAgICBQRk5fdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSIHZrR2V0
QnVmZmVyRGV2aWNlQWRkcmVzc0tIUjsKKysgICAgUEZOX3ZrR2V0QnVmZmVyT3BhcXVlQ2FwdHVy
ZUFkZHJlc3NLSFIgdmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUjsKKysgICAgUEZO
X3ZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIgdmtHZXREZXZpY2VNZW1v
cnlPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfYnVm
ZmVyX2RldmljZV9hZGRyZXNzKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9jcmVhdGVfcmVuZGVy
cGFzczIpCistCVBGTl92a0NtZEJlZ2luUmVuZGVyUGFzczJLSFIgdmtDbWRCZWdpblJlbmRlclBh
c3MyS0hSOworLQlQRk5fdmtDbWRFbmRSZW5kZXJQYXNzMktIUiB2a0NtZEVuZFJlbmRlclBhc3My
S0hSOworLQlQRk5fdmtDbWROZXh0U3VicGFzczJLSFIgdmtDbWROZXh0U3VicGFzczJLSFI7Cist
CVBGTl92a0NyZWF0ZVJlbmRlclBhc3MyS0hSIHZrQ3JlYXRlUmVuZGVyUGFzczJLSFI7CisrICAg
IFBGTl92a0NtZEJlZ2luUmVuZGVyUGFzczJLSFIgdmtDbWRCZWdpblJlbmRlclBhc3MyS0hSOwor
KyAgICBQRk5fdmtDbWRFbmRSZW5kZXJQYXNzMktIUiB2a0NtZEVuZFJlbmRlclBhc3MyS0hSOwor
KyAgICBQRk5fdmtDbWROZXh0U3VicGFzczJLSFIgdmtDbWROZXh0U3VicGFzczJLSFI7CisrICAg
IFBGTl92a0NyZWF0ZVJlbmRlclBhc3MyS0hSIHZrQ3JlYXRlUmVuZGVyUGFzczJLSFI7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfS0hSX2NyZWF0ZV9yZW5kZXJwYXNzMikgKi8KKyAjaWYgZGVmaW5l
ZChWS19LSFJfZGVzY3JpcHRvcl91cGRhdGVfdGVtcGxhdGUpCistCVBGTl92a0NyZWF0ZURlc2Ny
aXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiB2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtI
UjsKKy0JUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiB2a0Rlc3Ryb3lE
ZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFI7CistCVBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRX
aXRoVGVtcGxhdGVLSFIgdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSOworKyAg
ICBQRk5fdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIgdmtDcmVhdGVEZXNjcmlw
dG9yVXBkYXRlVGVtcGxhdGVLSFI7CisrICAgIFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRl
VGVtcGxhdGVLSFIgdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSOworKyAgICBQ
Rk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSIHZrVXBkYXRlRGVzY3JpcHRv
clNldFdpdGhUZW1wbGF0ZUtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZGVzY3JpcHRv
cl91cGRhdGVfdGVtcGxhdGUpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkK
Ky0JUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlS0hSIHZrQ21kRGlzcGF0Y2hCYXNlS0hSOworLQlQRk5f
dmtDbWRTZXREZXZpY2VNYXNrS0hSIHZrQ21kU2V0RGV2aWNlTWFza0tIUjsKKy0JUEZOX3ZrR2V0
RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNLSFIgdmtHZXREZXZpY2VHcm91cFBlZXJNZW1v
cnlGZWF0dXJlc0tIUjsKKysgICAgUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlS0hSIHZrQ21kRGlzcGF0
Y2hCYXNlS0hSOworKyAgICBQRk5fdmtDbWRTZXREZXZpY2VNYXNrS0hSIHZrQ21kU2V0RGV2aWNl
TWFza0tIUjsKKysgICAgUEZOX3ZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNLSFIg
dmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUjsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19LSFJfZGV2aWNlX2dyb3VwKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9kaXNwbGF5X3N3
YXBjaGFpbikKKy0JUEZOX3ZrQ3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUiB2a0NyZWF0ZVNoYXJl
ZFN3YXBjaGFpbnNLSFI7CisrICAgIFBGTl92a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIgdmtD
cmVhdGVTaGFyZWRTd2FwY2hhaW5zS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kaXNw
bGF5X3N3YXBjaGFpbikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZHJhd19pbmRpcmVjdF9jb3Vu
dCkKKy0JUEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50S0hSIHZrQ21kRHJhd0luZGV4
ZWRJbmRpcmVjdENvdW50S0hSOworLQlQRk5fdmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUiB2a0Nt
ZERyYXdJbmRpcmVjdENvdW50S0hSOworKyAgICBQRk5fdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0
Q291bnRLSFIgdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFI7CisrICAgIFBGTl92a0Nt
ZERyYXdJbmRpcmVjdENvdW50S0hSIHZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFI7CisgI2VuZGlm
IC8qIGRlZmluZWQoVktfS0hSX2RyYXdfaW5kaXJlY3RfY291bnQpICovCisgI2lmIGRlZmluZWQo
VktfS0hSX2V4dGVybmFsX2ZlbmNlX2ZkKQorLQlQRk5fdmtHZXRGZW5jZUZkS0hSIHZrR2V0RmVu
Y2VGZEtIUjsKKy0JUEZOX3ZrSW1wb3J0RmVuY2VGZEtIUiB2a0ltcG9ydEZlbmNlRmRLSFI7Cisr
ICAgIFBGTl92a0dldEZlbmNlRmRLSFIgdmtHZXRGZW5jZUZkS0hSOworKyAgICBQRk5fdmtJbXBv
cnRGZW5jZUZkS0hSIHZrSW1wb3J0RmVuY2VGZEtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19L
SFJfZXh0ZXJuYWxfZmVuY2VfZmQpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX2Zl
bmNlX3dpbjMyKQorLQlQRk5fdmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSIHZrR2V0RmVuY2VXaW4z
MkhhbmRsZUtIUjsKKy0JUEZOX3ZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUiB2a0ltcG9ydEZl
bmNlV2luMzJIYW5kbGVLSFI7CisrICAgIFBGTl92a0dldEZlbmNlV2luMzJIYW5kbGVLSFIgdmtH
ZXRGZW5jZVdpbjMySGFuZGxlS0hSOworKyAgICBQRk5fdmtJbXBvcnRGZW5jZVdpbjMySGFuZGxl
S0hSIHZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19L
SFJfZXh0ZXJuYWxfZmVuY2Vfd2luMzIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFs
X21lbW9yeV9mZCkKKy0JUEZOX3ZrR2V0TWVtb3J5RmRLSFIgdmtHZXRNZW1vcnlGZEtIUjsKKy0J
UEZOX3ZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSIHZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hS
OworKyAgICBQRk5fdmtHZXRNZW1vcnlGZEtIUiB2a0dldE1lbW9yeUZkS0hSOworKyAgICBQRk5f
dmtHZXRNZW1vcnlGZFByb3BlcnRpZXNLSFIgdmtHZXRNZW1vcnlGZFByb3BlcnRpZXNLSFI7Cisg
I2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX21lbW9yeV9mZCkgKi8KKyAjaWYgZGVm
aW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5X3dpbjMyKQorLQlQRk5fdmtHZXRNZW1vcnlXaW4z
MkhhbmRsZUtIUiB2a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSOworLQlQRk5fdmtHZXRNZW1vcnlX
aW4zMkhhbmRsZVByb3BlcnRpZXNLSFIgdmtHZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNL
SFI7CisrICAgIFBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSIHZrR2V0TWVtb3J5V2luMzJI
YW5kbGVLSFI7CisrICAgIFBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUiB2
a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19LSFJfZXh0ZXJuYWxfbWVtb3J5X3dpbjMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9leHRl
cm5hbF9zZW1hcGhvcmVfZmQpCistCVBGTl92a0dldFNlbWFwaG9yZUZkS0hSIHZrR2V0U2VtYXBo
b3JlRmRLSFI7CistCVBGTl92a0ltcG9ydFNlbWFwaG9yZUZkS0hSIHZrSW1wb3J0U2VtYXBob3Jl
RmRLSFI7CisrICAgIFBGTl92a0dldFNlbWFwaG9yZUZkS0hSIHZrR2V0U2VtYXBob3JlRmRLSFI7
CisrICAgIFBGTl92a0ltcG9ydFNlbWFwaG9yZUZkS0hSIHZrSW1wb3J0U2VtYXBob3JlRmRLSFI7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9mZCkgKi8KKyAj
aWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX3dpbjMyKQorLQlQRk5fdmtHZXRT
ZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiB2a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSOworLQlQ
Rk5fdmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiB2a0ltcG9ydFNlbWFwaG9yZVdpbjMy
SGFuZGxlS0hSOworKyAgICBQRk5fdmtHZXRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiB2a0dldFNl
bWFwaG9yZVdpbjMySGFuZGxlS0hSOworKyAgICBQRk5fdmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhh
bmRsZUtIUiB2a0ltcG9ydFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfd2luMzIpICovCisgI2lmIGRlZmluZWQoVktf
S0hSX2dldF9tZW1vcnlfcmVxdWlyZW1lbnRzMikKKy0JUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVx
dWlyZW1lbnRzMktIUiB2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czJLSFI7CistCVBGTl92
a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMktIUiB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1l
bnRzMktIUjsKKy0JUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIHZr
R2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSOworKyAgICBQRk5fdmtHZXRCdWZm
ZXJNZW1vcnlSZXF1aXJlbWVudHMyS0hSIHZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktI
UjsKKysgICAgUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIHZrR2V0SW1hZ2VN
ZW1vcnlSZXF1aXJlbWVudHMyS0hSOworKyAgICBQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJl
cXVpcmVtZW50czJLSFIgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czJLSFI7Cisg
I2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2dldF9tZW1vcnlfcmVxdWlyZW1lbnRzMikgKi8KKyAj
aWYgZGVmaW5lZChWS19LSFJfbWFpbnRlbmFuY2UxKQorLQlQRk5fdmtUcmltQ29tbWFuZFBvb2xL
SFIgdmtUcmltQ29tbWFuZFBvb2xLSFI7CisrICAgIFBGTl92a1RyaW1Db21tYW5kUG9vbEtIUiB2
a1RyaW1Db21tYW5kUG9vbEtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfbWFpbnRlbmFu
Y2UxKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTMpCistCVBGTl92a0dldERl
c2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSIHZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBv
cnRLSFI7CisrICAgIFBGTl92a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSIHZrR2V0
RGVzY3JpcHRvclNldExheW91dFN1cHBvcnRLSFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hS
X21haW50ZW5hbmNlMykgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfcGVyZm9ybWFuY2VfcXVlcnkp
CistCVBGTl92a0FjcXVpcmVQcm9maWxpbmdMb2NrS0hSIHZrQWNxdWlyZVByb2ZpbGluZ0xvY2tL
SFI7CistCVBGTl92a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSIHZrUmVsZWFzZVByb2ZpbGluZ0xv
Y2tLSFI7CisrICAgIFBGTl92a0FjcXVpcmVQcm9maWxpbmdMb2NrS0hSIHZrQWNxdWlyZVByb2Zp
bGluZ0xvY2tLSFI7CisrICAgIFBGTl92a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSIHZrUmVsZWFz
ZVByb2ZpbGluZ0xvY2tLSFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3BlcmZvcm1hbmNl
X3F1ZXJ5KSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9waXBlbGluZV9leGVjdXRhYmxlX3Byb3Bl
cnRpZXMpCistCVBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRp
b25zS0hSIHZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFI7
CistCVBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZVByb3BlcnRpZXNLSFIgdmtHZXRQaXBlbGlu
ZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSOworLQlQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVT
dGF0aXN0aWNzS0hSIHZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlzdGljc0tIUjsKKysgICAg
UEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIgdmtH
ZXRQaXBlbGluZUV4ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9uc0tIUjsKKysgICAgUEZO
X3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUiB2a0dldFBpcGVsaW5lRXhlY3V0
YWJsZVByb3BlcnRpZXNLSFI7CisrICAgIFBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRp
c3RpY3NLSFIgdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSOworICNlbmRpZiAv
KiBkZWZpbmVkKFZLX0tIUl9waXBlbGluZV9leGVjdXRhYmxlX3Byb3BlcnRpZXMpICovCisgI2lm
IGRlZmluZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRvcikKKy0JUEZOX3ZrQ21kUHVzaERlc2NyaXB0
b3JTZXRLSFIgdmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUjsKKysgICAgUEZOX3ZrQ21kUHVzaERl
c2NyaXB0b3JTZXRLSFIgdmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUjsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9yKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9zYW1w
bGVyX3ljYmNyX2NvbnZlcnNpb24pCistCVBGTl92a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNp
b25LSFIgdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSOworLQlQRk5fdmtEZXN0cm95
U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiB2a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9u
S0hSOworKyAgICBQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSIHZrQ3JlYXRl
U2FtcGxlclljYmNyQ29udmVyc2lvbktIUjsKKysgICAgUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2Jj
ckNvbnZlcnNpb25LSFIgdmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbktIUjsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19LSFJfc2FtcGxlcl95Y2Jjcl9jb252ZXJzaW9uKSAqLworICNpZiBk
ZWZpbmVkKFZLX0tIUl9zaGFyZWRfcHJlc2VudGFibGVfaW1hZ2UpCistCVBGTl92a0dldFN3YXBj
aGFpblN0YXR1c0tIUiB2a0dldFN3YXBjaGFpblN0YXR1c0tIUjsKKysgICAgUEZOX3ZrR2V0U3dh
cGNoYWluU3RhdHVzS0hSIHZrR2V0U3dhcGNoYWluU3RhdHVzS0hSOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0tIUl9zaGFyZWRfcHJlc2VudGFibGVfaW1hZ2UpICovCisgI2lmIGRlZmluZWQoVktf
S0hSX3N3YXBjaGFpbikKKy0JUEZOX3ZrQWNxdWlyZU5leHRJbWFnZUtIUiB2a0FjcXVpcmVOZXh0
SW1hZ2VLSFI7CistCVBGTl92a0NyZWF0ZVN3YXBjaGFpbktIUiB2a0NyZWF0ZVN3YXBjaGFpbktI
UjsKKy0JUEZOX3ZrRGVzdHJveVN3YXBjaGFpbktIUiB2a0Rlc3Ryb3lTd2FwY2hhaW5LSFI7Cist
CVBGTl92a0dldFN3YXBjaGFpbkltYWdlc0tIUiB2a0dldFN3YXBjaGFpbkltYWdlc0tIUjsKKy0J
UEZOX3ZrUXVldWVQcmVzZW50S0hSIHZrUXVldWVQcmVzZW50S0hSOworKyAgICBQRk5fdmtBY3F1
aXJlTmV4dEltYWdlS0hSIHZrQWNxdWlyZU5leHRJbWFnZUtIUjsKKysgICAgUEZOX3ZrQ3JlYXRl
U3dhcGNoYWluS0hSIHZrQ3JlYXRlU3dhcGNoYWluS0hSOworKyAgICBQRk5fdmtEZXN0cm95U3dh
cGNoYWluS0hSIHZrRGVzdHJveVN3YXBjaGFpbktIUjsKKysgICAgUEZOX3ZrR2V0U3dhcGNoYWlu
SW1hZ2VzS0hSIHZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSOworKyAgICBQRk5fdmtRdWV1ZVByZXNl
bnRLSFIgdmtRdWV1ZVByZXNlbnRLSFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3N3YXBj
aGFpbikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfdGltZWxpbmVfc2VtYXBob3JlKQorLQlQRk5f
dmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVLSFIgdmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVL
SFI7CistCVBGTl92a1NpZ25hbFNlbWFwaG9yZUtIUiB2a1NpZ25hbFNlbWFwaG9yZUtIUjsKKy0J
UEZOX3ZrV2FpdFNlbWFwaG9yZXNLSFIgdmtXYWl0U2VtYXBob3Jlc0tIUjsKKysgICAgUEZOX3Zr
R2V0U2VtYXBob3JlQ291bnRlclZhbHVlS0hSIHZrR2V0U2VtYXBob3JlQ291bnRlclZhbHVlS0hS
OworKyAgICBQRk5fdmtTaWduYWxTZW1hcGhvcmVLSFIgdmtTaWduYWxTZW1hcGhvcmVLSFI7Cisr
ICAgIFBGTl92a1dhaXRTZW1hcGhvcmVzS0hSIHZrV2FpdFNlbWFwaG9yZXNLSFI7CisgI2VuZGlm
IC8qIGRlZmluZWQoVktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZSkgKi8KKyAjaWYgZGVmaW5lZChW
S19OVlhfZGV2aWNlX2dlbmVyYXRlZF9jb21tYW5kcykKKy0JUEZOX3ZrQ21kUHJvY2Vzc0NvbW1h
bmRzTlZYIHZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYOworLQlQRk5fdmtDbWRSZXNlcnZlU3BhY2VG
b3JDb21tYW5kc05WWCB2a0NtZFJlc2VydmVTcGFjZUZvckNvbW1hbmRzTlZYOworLQlQRk5fdmtD
cmVhdGVJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYIHZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xh
eW91dE5WWDsKKy0JUEZOX3ZrQ3JlYXRlT2JqZWN0VGFibGVOVlggdmtDcmVhdGVPYmplY3RUYWJs
ZU5WWDsKKy0JUEZOX3ZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlggdmtEZXN0cm95
SW5kaXJlY3RDb21tYW5kc0xheW91dE5WWDsKKy0JUEZOX3ZrRGVzdHJveU9iamVjdFRhYmxlTlZY
IHZrRGVzdHJveU9iamVjdFRhYmxlTlZYOworLQlQRk5fdmtSZWdpc3Rlck9iamVjdHNOVlggdmtS
ZWdpc3Rlck9iamVjdHNOVlg7CistCVBGTl92a1VucmVnaXN0ZXJPYmplY3RzTlZYIHZrVW5yZWdp
c3Rlck9iamVjdHNOVlg7CisrICAgIFBGTl92a0NtZFByb2Nlc3NDb21tYW5kc05WWCB2a0NtZFBy
b2Nlc3NDb21tYW5kc05WWDsKKysgICAgUEZOX3ZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNO
VlggdmtDbWRSZXNlcnZlU3BhY2VGb3JDb21tYW5kc05WWDsKKysgICAgUEZOX3ZrQ3JlYXRlSW5k
aXJlY3RDb21tYW5kc0xheW91dE5WWCB2a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlg7
CisrICAgIFBGTl92a0NyZWF0ZU9iamVjdFRhYmxlTlZYIHZrQ3JlYXRlT2JqZWN0VGFibGVOVlg7
CisrICAgIFBGTl92a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYIHZrRGVzdHJveUlu
ZGlyZWN0Q29tbWFuZHNMYXlvdXROVlg7CisrICAgIFBGTl92a0Rlc3Ryb3lPYmplY3RUYWJsZU5W
WCB2a0Rlc3Ryb3lPYmplY3RUYWJsZU5WWDsKKysgICAgUEZOX3ZrUmVnaXN0ZXJPYmplY3RzTlZY
IHZrUmVnaXN0ZXJPYmplY3RzTlZYOworKyAgICBQRk5fdmtVbnJlZ2lzdGVyT2JqZWN0c05WWCB2
a1VucmVnaXN0ZXJPYmplY3RzTlZYOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WWF9kZXZpY2Vf
Z2VuZXJhdGVkX2NvbW1hbmRzKSAqLworICNpZiBkZWZpbmVkKFZLX05WWF9pbWFnZV92aWV3X2hh
bmRsZSkKKy0JUEZOX3ZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZYIHZrR2V0SW1hZ2VWaWV3SGFuZGxl
TlZYOworKyAgICBQRk5fdmtHZXRJbWFnZVZpZXdIYW5kbGVOVlggdmtHZXRJbWFnZVZpZXdIYW5k
bGVOVlg7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZYX2ltYWdlX3ZpZXdfaGFuZGxlKSAqLwor
ICNpZiBkZWZpbmVkKFZLX05WX2NsaXBfc3BhY2Vfd19zY2FsaW5nKQorLQlQRk5fdmtDbWRTZXRW
aWV3cG9ydFdTY2FsaW5nTlYgdmtDbWRTZXRWaWV3cG9ydFdTY2FsaW5nTlY7CisrICAgIFBGTl92
a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViB2a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOVjsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19OVl9jbGlwX3NwYWNlX3dfc2NhbGluZykgKi8KKyAjaWYgZGVm
aW5lZChWS19OVl9kZXZpY2VfZGlhZ25vc3RpY19jaGVja3BvaW50cykKKy0JUEZOX3ZrQ21kU2V0
Q2hlY2twb2ludE5WIHZrQ21kU2V0Q2hlY2twb2ludE5WOworLQlQRk5fdmtHZXRRdWV1ZUNoZWNr
cG9pbnREYXRhTlYgdmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlY7CisrICAgIFBGTl92a0NtZFNl
dENoZWNrcG9pbnROViB2a0NtZFNldENoZWNrcG9pbnROVjsKKysgICAgUEZOX3ZrR2V0UXVldWVD
aGVja3BvaW50RGF0YU5WIHZrR2V0UXVldWVDaGVja3BvaW50RGF0YU5WOworICNlbmRpZiAvKiBk
ZWZpbmVkKFZLX05WX2RldmljZV9kaWFnbm9zdGljX2NoZWNrcG9pbnRzKSAqLworICNpZiBkZWZp
bmVkKFZLX05WX2V4dGVybmFsX21lbW9yeV93aW4zMikKKy0JUEZOX3ZrR2V0TWVtb3J5V2luMzJI
YW5kbGVOViB2a0dldE1lbW9yeVdpbjMySGFuZGxlTlY7CisrICAgIFBGTl92a0dldE1lbW9yeVdp
bjMySGFuZGxlTlYgdmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX05WX2V4dGVybmFsX21lbW9yeV93aW4zMikgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9tZXNo
X3NoYWRlcikKKy0JUEZOX3ZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROViB2a0NtZERy
YXdNZXNoVGFza3NJbmRpcmVjdENvdW50TlY7CistCVBGTl92a0NtZERyYXdNZXNoVGFza3NJbmRp
cmVjdE5WIHZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlY7CistCVBGTl92a0NtZERyYXdNZXNo
VGFza3NOViB2a0NtZERyYXdNZXNoVGFza3NOVjsKKysgICAgUEZOX3ZrQ21kRHJhd01lc2hUYXNr
c0luZGlyZWN0Q291bnROViB2a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdENvdW50TlY7CisrICAg
IFBGTl92a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdE5WIHZrQ21kRHJhd01lc2hUYXNrc0luZGly
ZWN0TlY7CisrICAgIFBGTl92a0NtZERyYXdNZXNoVGFza3NOViB2a0NtZERyYXdNZXNoVGFza3NO
VjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9tZXNoX3NoYWRlcikgKi8KKyAjaWYgZGVmaW5l
ZChWS19OVl9yYXlfdHJhY2luZykKKy0JUEZOX3ZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1l
bW9yeU5WIHZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WOworLQlQRk5fdmtDbWRC
dWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIHZrQ21kQnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVOVjsKKy0JUEZOX3ZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIHZrQ21kQ29weUFj
Y2VsZXJhdGlvblN0cnVjdHVyZU5WOworLQlQRk5fdmtDbWRUcmFjZVJheXNOViB2a0NtZFRyYWNl
UmF5c05WOworLQlQRk5fdmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVz
TlYgdmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlY7CistCVBGTl92
a0NvbXBpbGVEZWZlcnJlZE5WIHZrQ29tcGlsZURlZmVycmVkTlY7CistCVBGTl92a0NyZWF0ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZU5WIHZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlY7Cist
CVBGTl92a0NyZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOViB2a0NyZWF0ZVJheVRyYWNpbmdQaXBl
bGluZXNOVjsKKy0JUEZOX3ZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIHZrRGVzdHJv
eUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WOworLQlQRk5fdmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVIYW5kbGVOViB2a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZUhhbmRsZU5WOworLQlQRk5fdmtH
ZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOViB2a0dldEFjY2VsZXJh
dGlvblN0cnVjdHVyZU1lbW9yeVJlcXVpcmVtZW50c05WOworLQlQRk5fdmtHZXRSYXlUcmFjaW5n
U2hhZGVyR3JvdXBIYW5kbGVzTlYgdmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlY7
CisrICAgIFBGTl92a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlOViB2a0JpbmRBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlOVjsKKysgICAgUEZOX3ZrQ21kQnVpbGRBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVOViB2a0NtZEJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlTlY7CisrICAgIFBG
Tl92a0NtZENvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViB2a0NtZENvcHlBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVOVjsKKysgICAgUEZOX3ZrQ21kVHJhY2VSYXlzTlYgdmtDbWRUcmFjZVJheXNOVjsK
KysgICAgUEZOX3ZrQ21kV3JpdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WIHZr
Q21kV3JpdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WOworKyAgICBQRk5fdmtD
b21waWxlRGVmZXJyZWROViB2a0NvbXBpbGVEZWZlcnJlZE5WOworKyAgICBQRk5fdmtDcmVhdGVB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVOViB2a0NyZWF0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WOwor
KyAgICBQRk5fdmtDcmVhdGVSYXlUcmFjaW5nUGlwZWxpbmVzTlYgdmtDcmVhdGVSYXlUcmFjaW5n
UGlwZWxpbmVzTlY7CisrICAgIFBGTl92a0Rlc3Ryb3lBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViB2
a0Rlc3Ryb3lBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOVjsKKysgICAgUEZOX3ZrR2V0QWNjZWxlcmF0
aW9uU3RydWN0dXJlSGFuZGxlTlYgdmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOVjsK
KysgICAgUEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWlyZW1lbnRzTlYg
dmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOVjsKKysgICAgUEZO
X3ZrR2V0UmF5VHJhY2luZ1NoYWRlckdyb3VwSGFuZGxlc05WIHZrR2V0UmF5VHJhY2luZ1NoYWRl
ckdyb3VwSGFuZGxlc05WOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX3JheV90cmFjaW5nKSAq
LworICNpZiBkZWZpbmVkKFZLX05WX3NjaXNzb3JfZXhjbHVzaXZlKQorLQlQRk5fdmtDbWRTZXRF
eGNsdXNpdmVTY2lzc29yTlYgdmtDbWRTZXRFeGNsdXNpdmVTY2lzc29yTlY7CisrICAgIFBGTl92
a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOViB2a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOVjsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19OVl9zY2lzc29yX2V4Y2x1c2l2ZSkgKi8KKyAjaWYgZGVmaW5l
ZChWS19OVl9zaGFkaW5nX3JhdGVfaW1hZ2UpCistCVBGTl92a0NtZEJpbmRTaGFkaW5nUmF0ZUlt
YWdlTlYgdmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5WOworLQlQRk5fdmtDbWRTZXRDb2Fyc2VT
YW1wbGVPcmRlck5WIHZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOVjsKKy0JUEZOX3ZrQ21kU2V0
Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOViB2a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQ
YWxldHRlTlY7CisrICAgIFBGTl92a0NtZEJpbmRTaGFkaW5nUmF0ZUltYWdlTlYgdmtDbWRCaW5k
U2hhZGluZ1JhdGVJbWFnZU5WOworKyAgICBQRk5fdmtDbWRTZXRDb2Fyc2VTYW1wbGVPcmRlck5W
IHZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOVjsKKysgICAgUEZOX3ZrQ21kU2V0Vmlld3BvcnRT
aGFkaW5nUmF0ZVBhbGV0dGVOViB2a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlY7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfc2hhZGluZ19yYXRlX2ltYWdlKSAqLworICNpZiAo
ZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZLX0tIUl9k
ZXZpY2VfZ3JvdXApKSB8fCAoZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAm
JiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JUEZOX3ZrR2V0RGV2aWNlR3JvdXBTdXJmYWNl
UHJlc2VudE1vZGVzMkVYVCB2a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQ7
CisrICAgIFBGTl92a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQgdmtHZXRE
ZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhUOworICNlbmRpZiAvKiAoZGVmaW5lZChW
S19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3Jv
dXApKSB8fCAoZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVk
KFZLX1ZFUlNJT05fMV8xKSkgKi8KKyAjaWYgKGRlZmluZWQoVktfS0hSX2Rlc2NyaXB0b3JfdXBk
YXRlX3RlbXBsYXRlKSAmJiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3IpKSB8fCAoZGVm
aW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9yKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkK
Ky0JUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIgdmtDbWRQdXNoRGVz
Y3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUjsKKysgICAgUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JT
ZXRXaXRoVGVtcGxhdGVLSFIgdmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUjsK
KyAjZW5kaWYgLyogKGRlZmluZWQoVktfS0hSX2Rlc2NyaXB0b3JfdXBkYXRlX3RlbXBsYXRlKSAm
JiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3IpKSB8fCAoZGVmaW5lZChWS19LSFJfcHVz
aF9kZXNjcmlwdG9yKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkgKi8KKyAjaWYgKGRlZmlu
ZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJfc3VyZmFjZSkpIHx8IChk
ZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKQorLQlQ
Rk5fdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIgdmtHZXREZXZpY2VHcm91
cFByZXNlbnRDYXBhYmlsaXRpZXNLSFI7CistCVBGTl92a0dldERldmljZUdyb3VwU3VyZmFjZVBy
ZXNlbnRNb2Rlc0tIUiB2a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUjsKKysg
ICAgUEZOX3ZrR2V0RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSIHZrR2V0RGV2aWNl
R3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSOworKyAgICBQRk5fdmtHZXREZXZpY2VHcm91cFN1
cmZhY2VQcmVzZW50TW9kZXNLSFIgdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXNL
SFI7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICYmIGRlZmluZWQo
VktfS0hSX3N1cmZhY2UpKSB8fCAoZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSAmJiBkZWZpbmVk
KFZLX1ZFUlNJT05fMV8xKSkgKi8KKyAjaWYgKGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkg
JiYgZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFp
bikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpCistCVBGTl92a0FjcXVpcmVOZXh0SW1hZ2Uy
S0hSIHZrQWNxdWlyZU5leHRJbWFnZTJLSFI7CisrICAgIFBGTl92a0FjcXVpcmVOZXh0SW1hZ2Uy
S0hSIHZrQWNxdWlyZU5leHRJbWFnZTJLSFI7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0tIUl9k
ZXZpY2VfZ3JvdXApICYmIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikpIHx8IChkZWZpbmVkKFZL
X0tIUl9zd2FwY2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLworLQkvKiBWT0xL
X0dFTkVSQVRFX0RFVklDRV9UQUJMRSAqLworKyAgICAvKiBWT0xLX0dFTkVSQVRFX0RFVklDRV9U
QUJMRSAqLworIH07CiAgCisgLyogVk9MS19HRU5FUkFURV9QUk9UT1RZUEVTX0ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2RvYy9DYXB0dXJlQW5kUmVwbGF5Lm1kIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0NhcHR1cmVBbmRSZXBsYXkubWQKaW5kZXggZjY3
N2RkYWUyNjBiNmQyNDM3NTlmNDY4YTQ3MjliZDhmMWY4MWE5ZC4uZTg4Yzk0NGFlMmY0ZTljZmMz
YzRkMDVmMzJmNDE1OWYwYmQyM2E0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZG9jL0NhcHR1cmVBbmRSZXBsYXkubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZG9jL0NhcHR1cmVBbmRSZXBsYXkubWQKQEAgLTMyLDYgKzMyLDggQEAgU29tZSBzaW1wbGUgZW52
aXJvbm1lbnQgdmFyaWFibGVzIGNvbnRyb2wgZnJhbWUgY2FwdHVyZToKIAogICogYEFOR0xFX0NB
UFRVUkVfRU5BQkxFRGA6CiAgICAqIFNldCB0byBgMGAgdG8gZGlzYWJsZSBjYXB0dXJlIGVudGly
ZWx5LiBEZWZhdWx0IGlzIGAxYC4KKyAqIGBBTkdMRV9DQVBUVVJFX0NPTVBSRVNTSU9OYDoKKyAg
ICogU2V0IHRvIGAwYCB0byBkaXNhYmxlIGNhcHR1cmUgY29tcHJlc3Npb24uIERlZmF1bHQgaXMg
YDFgLgogICogYEFOR0xFX0NBUFRVUkVfT1VUX0RJUj08cGF0aD5gOgogICAgKiBDYW4gc3BlY2lm
eSBhbiBhbHRlcm5hdGUgcmVwbGF5IG91dHB1dCBkaXJlY3RvcnkuCiAgICAqIEV4YW1wbGU6IGBB
TkdMRV9DQVBUVVJFX09VVF9ESVI9c2FtcGxlcy9jYXB0dXJlX3JlcGxheWAuIERlZmF1bHQgaXMg
dGhlIENXRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2RvYy9Db250cmli
dXRpbmdDb2RlLm1kIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0NvbnRyaWJ1dGluZ0Nv
ZGUubWQKaW5kZXggY2VmNTgyM2E4NmYyOTA4MjY3NDkzMzhmMDk1ZTEzOTU0OTlmYjczOC4uNGQ4
Y2Y4MmM4NGZkNWM5OGE1NTk2NDlmYWRkYThmZTA0N2ZlODlhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvZG9jL0NvbnRyaWJ1dGluZ0NvZGUubWQKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvZG9jL0NvbnRyaWJ1dGluZ0NvZGUubWQKQEAgLTQsOCArNCw3IEBACiAK
ICogV2hldGhlciB5b3UncmUgd3JpdGluZyBhIG5ldyBmZWF0dXJlIG9yIGZpeGluZyBhbiBleGlz
dGluZyBidWcsIGl0IHBheXMgdG8gZ2V0IGEgc2Vjb25kIG9waW5pb24KICAgYmVmb3JlIHlvdSBn
ZXQgdG9vIGZhci4gSWYgaXQncyBhIG5ldyBmZWF0dXJlIGlkZWEsIHBvc3QgdG8gdGhlIGRpc2N1
c3Npb24gZ3JvdXAKLSAgKFthbmdsZXByb2plY3RdW0FOR0xFLXdlYnNpdGVdKSBhbmQgcHJvcG9z
ZSBpdCBvciB0YWxrIHdpdGggdGhlIEFOR0xFIHRlYW0gb24gSVJDIGluIHRoZQotICBgI0FOR0xF
cHJvamVjdGAgY2hhbm5lbCBvbiBGcmVlTm9kZS4KKyAgKFthbmdsZXByb2plY3RdW0FOR0xFLXdl
YnNpdGVdKS4KICogTm90IGFsbCBidWdzIGluIG91ciBbYnVnIHN5c3RlbV1bYW5nbGVidWcuY29t
XSBhcmUgYXNzaWduZWQsIGJ1dCBpZiB0aGUgb25lIHlvdSdyZSBpbnRlcmVzdGVkIGluCiAgIGZp
eGluZyBpcywgc2VuZCBhIG5vdGUgdG8gdGhlIHBlcnNvbiBpdCdzIGFzc2lnbmVkIHRvIGFuZCBh
c2sgaWYgdGhleSB3b3VsZCBsaWtlIGEgcGF0Y2guCiAqIEJlaGF2aW9yIGNoYW5nZXMgYW5kIGFu
eXRoaW5nIG5vbnRyaXZpYWwgKGkuZS4gYW55dGhpbmcgb3RoZXIgdGhhbiBzaW1wbGUgY2xlYW51
cHMgYW5kIHN0eWxlCkBAIC0yMiwyOCArMjEsMzIgQEAKICMjIyBDb2RlCiAKIDEuIE11c3QgY29u
Zm9ybSB0byB0aGUgW0FOR0xFIHN0eWxlXVtBTkdMRS1zdHlsZV0gZ3VpZGVsaW5lcy4KLTIuIE11
c3QgYmUgdGVzdGVkLiAoc2VlIHRoZSAnVGVzdGluZycgc2VjdGlvbiBiZWxvdykKKzIuIE11c3Qg
YmUgdGVzdGVkLiAoc2VlIHRoZSBbVGVzdGluZ11bVGVzdGluZ10gc2VjdGlvbiBiZWxvdykKIDMu
IFNob3VsZCBiZSBhIHJlYXNvbmFibGUgc2l6ZSB0byByZXZpZXcuICBHaWFudCBwYXRjaGVzIGFy
ZSB1bmxpa2VseSB0byBnZXQgcmV2aWV3ZWQgcXVpY2tseS4KIAogW0FOR0xFLXN0eWxlXTogQ29k
aW5nU3RhbmRhcmQubWQKK1tUZXN0aW5nXTogI1Rlc3RpbmcKIAogIyMjIEJ1aWxkIG1haW50ZW5h
bmNlCiAKIDEuIElmIHlvdSBhZGRlZCBvciByZW1vdmVkIHNvdXJjZSBmaWxlczoKLSAgICogWW91
IF9tdXN0XyB1cGRhdGUgdGhlIGJ1aWxkIGZpbGVzIHdpdGggeW91ciBjaGFuZ2VzLiBTZWUgYHNy
Yy9saWJHTEVTdjIuZ25pYCBhbmQKLSAgIGBzcmMvY29tcGlsZXIuZ25pYC4KKyAgICogWW91IF9t
dXN0XyB1cGRhdGUgdGhlIGJ1aWxkIGZpbGVzIHdpdGggeW91ciBjaGFuZ2VzLiBTZWUgW2BzcmMv
bGliR0xFU3YyLmduaWBdW2xpYkdMRVN2Mi5nbmldCisgICAgIGFuZCBbYHNyYy9jb21waWxlci5n
bmlgXVtjb21waWxlci5nbmldLgogMi4gQU5HTEUncyBCVUlMRC5nbiBzY3JpcHQgaXMgdXNlZCBi
eSBbQ2hyb21pdW0ncyBnbiBidWlsZF1bZ24tYnVpbGQtY29uZmlnXS4gSWYgeW91IGNoYW5nZSBi
dWlsZAogICAgZmlsZXMgb3RoZXIgdGhhbiB0byBhZGQgb3IgcmVtb3ZlIHNvdXJjZSBmaWxlcyBi
ZSBhd2FyZSB5b3UgY291bGQgYnJlYWsgdGhlIENocm9taXVtIGJ1aWxkLgogICAgQU5HTEUncyBj
b21taXQgcXVldWUgKENRKSB3aWxsIGRldGVjdCBzdWNoIGJyZWFrYWdlLiBBc2sgYSBwcm9qZWN0
IG1lbWJlciBmb3IgaGVscCB3aXRoIENocm9taXVtCiAgICBpc3N1ZXMgaWYgeW91IGRvbid0IGhh
dmUgYSBDaHJvbWl1bSBjaGVja291dC4KIDMuIFNvbWUgZ2VuZXJhdGVkIGNvZGUgaXMgYmFrZWQg
aW50byB0aGUgcmVwb3NpdG9yeS4gSWYgeW91IG1vZGlmeSB0aGUgc291cmNlIG9mIHRoZXNlIGZp
bGVzLCBzdWNoCi0gICBhcyB0aGUgdHJhbnNsYXRvcidzIGBnbHNsYW5nLmxgLCBvciBvbmUgb2Yg
dGhlIGludGVybmFsIHNoYWRlcnMgaW4gdGhlIFZ1bGthbiBiYWNrZW5kLCB5b3Ugd2lsbAotICAg
bmVlZCB0byBydW4gYHNjcmlwdHMvcnVuX2NvZGVfZ2VuZXJhdGlvbi5weWAgYW5kIGluY2x1ZGUg
dGhlIGF1dG9nZW5lcmF0ZWQgZmlsZXMgaW4geW91ciBjaGFuZ2UuCisgICBhcyB0aGUgdHJhbnNs
YXRvcidzIFtgZ2xzbGFuZy5sYF1bZ2xzbGFuZy5sXSwgb3Igb25lIG9mIHRoZSBpbnRlcm5hbCBz
aGFkZXJzIGluIHRoZSBWdWxrYW4KKyAgIGJhY2tlbmQsIHlvdSB3aWxsIG5lZWQgdG8gcnVuIFtg
c2NyaXB0cy9ydW5fY29kZV9nZW5lcmF0aW9uLnB5YF1bcnVuX2NvZGVfZ2VuZXJhdGlvbi5weV0g
YW5kCisgICBpbmNsdWRlIHRoZSBhdXRvZ2VuZXJhdGVkIGZpbGVzIGluIHlvdXIgY2hhbmdlLgog
ICAgYGdpdCBjbCB1cGxvYWRgIHNob3VsZCB3YXJuIHlvdSBpZiB5b3UgYXJlIG1pc3NpbmcgdGhp
cyBzdGVwLgotICAgICogTm90ZSB0aGF0IHVwZGF0aW5nIHRoZSB0cmFuc2xhdG9yJ3MgbGV4ZXIg
YW5kIHBhcnNlciAodXNpbmcgYGZsZXhgIGFuZCBgYmlzb25gKSBpcyBvbmx5Ci0gICAgICBzdXBw
b3J0ZWQgb24gTGludXggYW5kIFdpbmRvd3MuCiAKIFtnbi1idWlsZC1jb25maWddOiBodHRwczov
L3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9nbi1idWlsZC1jb25maWd1cmF0aW9uCitbY29t
cGlsZXIuZ25pXTogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xlL2FuZ2xl
LysvcmVmcy9oZWFkcy9tYXN0ZXIvc3JjL2NvbXBpbGVyLmduaQorW2xpYkdMRVN2Mi5nbmldOiBo
dHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUvKy9yZWZzL2hlYWRz
L21hc3Rlci9zcmMvbGliR0xFU3YyLmduaQorW2dsc2xhbmcubF06IGh0dHBzOi8vY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZS8rL3JlZnMvaGVhZHMvbWFzdGVyL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmcubAorW3J1bl9jb2RlX2dlbmVyYXRpb24ucHldOiBodHRw
czovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUvKy9yZWZzL2hlYWRzL21h
c3Rlci9zY3JpcHRzL3J1bl9jb2RlX2dlbmVyYXRpb24ucHkKIAogIyMjIFRlc3RpbmcKIApAQCAt
NjQsNiArNjcsOCBAQAogICAgKiBXZSBkbyBub3QgY3VycmVudGx5IGhhdmUgdGhlIGNhcGFiaWxp
dHkgdG8gcnVuIGluZGl2aWR1YWwgYm90cyBvciB0ZXN0cyBpbiBhIHJ1bi4KICogVGVzdHMgY2Fu
IGFsc28gYmUgcnVuIGxvY2FsbHksIEFOR0xFJ3MgbWFpbiB0ZXN0aW5nIG1ldGhvZHMgYXJlOgog
ICAgKiBgYW5nbGVfdW5pdHRlc3RzYCwgYGFuZ2xlX2VuZDJlbmRfdGVzdHNgIGFuZCBgYW5nbGVf
d2hpdGVfYm94X3Rlc3RzYCB0YXJnZXRzLgorICAgKiBUaGUgT3BlbkdMIENUUyBhbHNvIGtub3du
IGFzIFtkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIChkRVFQKV0oZEVRUC5tZCkuCisgICAg
IElmIHlvdSdyZSB3b3JraW5nIG9uIGEgbmV3IGZlYXR1cmUsIHRoZXJlIG1heSBiZSBzb21lIGV4
dGVuc2l2ZSB0ZXN0cyBmb3IgaXQgYWxyZWFkeSB3cml0dGVuLgogICAgKiBUaGUgW1RvcC1vZi1U
cmVlIFdlYkdMIENvbmZvcm1hbmNlIHRlc3RzXVtXZWJHTC1DVFNdLgogICAgICAqIElmIHlvdSBh
cmUgYSBDaHJvbWl1bSBkZXZlbG9wZXIsIHNlZQogICAgICAgIFtCdWlsZGluZyBBTkdMRSBmb3Ig
Q2hyb21pdW0gRGV2ZWxvcG1lbnRdW2J1aWxkLUFOR0xFLWZvci1jaHJvbWl1bV0gZm9yIGluc3Ry
dWN0aW9ucyBvbgpAQCAtODQsOCArODksNiBAQAogICAgIEFOR0xFIHBhdGNoZXMgdGhhdCBoYXZl
IGJlZW4gY29tbWl0dGVkLiAgVGhlcmUgbWF5IGJlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHRo
YXQgYXJlIG5vdAogICAgIHRlc3RlZCBieSB0aGUgQU5HTEUgdHJ5Ym90cywgaWYgeW91IG5vdGlj
ZSBicmVha2FnZSBvbiB0aGlzIHdhdGVyZmFsbCBhZnRlciBsYW5kaW5nIGEgcGF0Y2gsCiAgICAg
cGxlYXNlIG5vdGlmeSBhIHByb2plY3QgbWVtYmVyLgotICAqIEFOR0xFIGFsc28gaW5jbHVkZXMg
dGhlIFtkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIChkRVFQKV0oZEVRUC5tZCkgZm9yIGFk
ZGl0aW9uYWwgdGVzdGluZy4KLSAgICBJZiB5b3UncmUgd29ya2luZyBvbiBhIG5ldyBmZWF0dXJl
LCB0aGVyZSBtYXkgYmUgc29tZSBleHRlbnNpdmUgdGVzdHMgZm9yIGl0IGFscmVhZHkgd3JpdHRl
bi4KIAogW1dlYkdMLUNUU106IGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmds
L3Nkay90ZXN0cy93ZWJnbC1jb25mb3JtYW5jZS10ZXN0cy5odG1sCiBbYnVpbGQtQU5HTEUtZm9y
LUNocm9taXVtXTogQnVpbGRpbmdBbmdsZUZvckNocm9taXVtRGV2ZWxvcG1lbnQubWQKQEAgLTE3
OSwxNCArMTgyLDIzIEBACiAKICMjIyBTZWxlY3RpbmcgcmV2aWV3ZXJzCiAKLVdoZW4geW91ciBD
TCBpcyByZWFkeSB0byByZXZpZXcsIGFkZCBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXZpZXdlcnMu
IFRoZXkgd2lsbCBiZSBhYmxlIHRvIHJvdXRlIHlvdXIKLUNMIHRvIGFkZGl0aW9uYWwgcmV2aWV3
ZXJzIGFzIG5lY2Nlc3NhcnkgYW5kIGFuc3dlciBhbnkgcXVlc3Rpb25zIHlvdSBtYXkgaGF2ZSBh
Ym91dCB0aGUgcHJvY2Vzcy4gQWxsCi1ub24tdHJpdmFsIENMcyBzaG91bGQgYmUgcmV2aWV3ZWQg
YnkgdHdvIHJldmlld2Vycy4KK1doZW4geW91ciBDTCBpcyByZWFkeSB0byByZXZpZXcsIHlvdSBj
YW4gdXNlIHRoZSAiRmluZCBPd25lcnMiIGJ1dHRvbiBpbgorR2Vycml0IHRvIHNlbGVjdCBhcHBy
b3ByaWF0ZSBjb2RlIHJldmlld2Vycy4gVGhleSB3aWxsIGJlIGFibGUgdG8gcm91dGUgeW91cgor
Q0wgdG8gYWRkaXRpb25hbCByZXZpZXdlcnMgYXMgbmVjY2Vzc2FyeSBhbmQgYW5zd2VyIGFueSBx
dWVzdGlvbnMgeW91IG1heSBoYXZlCithYm91dCB0aGUgcHJvY2Vzcy4KIAotKiBgZ2VvZmZsYW5n
IGF0IGNocm9taXVtIGRvdCBvcmdgCi0qIGBqbWFkaWxsIGF0IGNocm9taXVtIGRvdCBvcmdgCi0q
IGBzeW91c3NlZmkgYXQgY2hyb21pdW0gZG90IG9yZ2AKLSogYHlub3Zpa292IGF0IGNocm9taXVt
IGRvdCBvcmdgCisjIyMgUnVsZXMgZm9yIHN1Ym1pc3Npb24KKworICogQXQgbGVhc3Qgb25lICoq
T3duZXIqKiBtdXN0IGdpdmUgYXBwcm92YWwuCisgKiBUaGUgb3duZXIgbXVzdCBiZSBmcm9tIHRo
ZSAqKm1vc3Qgc3BlY2lmaWMqKiBkaXJlY3RvcnkuCisgKiBBdCBsZWFzdCB0d28gKipDb21taXR0
ZXJzKiogbXVzdCBnaXZlIGFwcHJvdmFsIGZvciBub24tdHJpdmFsIENMcy4KKyAgIEZvciB0cml2
aWFsIENMcywgYSBzaW5nbGUgT3duZXIgYXBwcm92YWwgaXMgc3VmZmljaWVudC4KKyAqIE9ubHkg
KipDb21taXR0ZXJzKiogbWF5IHN1Ym1pdCBDTHMuIElmIHlvdSBhcmVuJ3QgYSBjb21taXR0ZXIg
cGxlYXNlIGFzayBmb3IgaGVscCBzdWJtaXR0aW5nLgorICogQ29tbWl0dGVycyBtYXkgc3VibWl0
IGhpZ2gtcHJpb3JpdHkgc21hbGwgQ0xzIGltbWVkaWF0ZWx5IHVzaW5nICoqVEJSKiouCisgICBT
ZWUgW3RoZSBDaHJvbWl1bSBkb2NzXVtUQlJdIGZvciBtb3JlIGluZm8uCisgKiBUaGVyZSBhcmUg
ZXhjZXB0aW9ucyB0byB0aGVzZSBydWxlcy4gVXNlIHlvdXIgYmVzdCBqdWRnZW1lbnQuCisKK1tU
QlJdOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvbWFz
dGVyL2RvY3MvY29kZV9yZXZpZXdzLm1kI3Rici10by1iZS1yZXZpZXdlZAogCiAjIyMgQ29tbWl0
dGVyIHN0YXR1cwogCkBAIC0xOTQsNyArMjA2LDEzIEBAIFNpbWlsYXIgdG8gW0Nocm9taXVtJ3Mg
Y29tbWl0dGVyIHN0YXR1c11bQ29tbWl0dGVyLXN0YXR1c10sIGxvbmctdGVybSBjb250cmlidXRv
CiBwcm9qZWN0IG1heSByZXF1ZXN0IHRvIGpvaW4gdGhlIGBhbmdsZS1jb21taXR0ZXJzYCBncm91
cC4gIFRoaXMgYWxsb3dzIHlvdSB0byBnaXZlIGArMmAgb24gY29kZQogcmV2aWV3cyBhbmQgbGFu
ZCBwYXRjaGVzIHdpdGhvdXQgYXNzaXN0YW5jZS4gIEFmdGVyIGFib3V0IDYgbW9udGhzIG9mIHJl
Z3VsYXIgY29udHJpYnV0aW9ucywgeW91IG1heQogcmVxdWVzdCBjb21taXR0ZXIgc3RhdHVzIGZy
b20gYSBjb3JlIEFOR0xFIHRlYW0gbWVtYmVyIHZpYSBlbWFpbCBvciBjb2RlIHJldmlldy4gIENo
cm9taXVtCi1jb21taXR0ZXJzIG1heSBhc2sgYXQgYW55IHRpbWUuCitjb21taXR0ZXJzIGFuZCBH
b29nbGVycyBtYXkgYXNrIGF0IGFueSB0aW1lLgorCisjIyMgT1dORVJTIGZpbGVzIGFuZCBiZWNv
bWluZyBhbiBPd25lcgorCitTZWUgdGhlc2UgQ2hyb21pdW0gZG9jcyBmb3Igc29tZSBnb29kIGd1
aWRlbGluZXM6IFtsaW5rXVtPd25lcnNdLgorCisjIyMgTW9yZSBpbmZvCiAKIFNlZSBhbHNvOgog
CkBAIC0yMDcsMyArMjI1LDQgQEAgU2VlIGFsc286CiBbQ29udHJpYnV0aW5nLWNvZGVdOiBodHRw
Oi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2NvbnRyaWJ1dGluZy1jb2RlLwogW2RlcG90
LXRvb2xzLXR1dG9yaWFsXTogaHR0cDovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29t
L2Nocm9tZS1pbmZyYS1kb2NzL2ZsYXQvZGVwb3RfdG9vbHMvZG9jcy9odG1sL2RlcG90X3Rvb2xz
X3R1dG9yaWFsLmh0bWwKIFtQZXJmdGVzdC1SRUFETUVdOiAuLi9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9SRUFETUUubWQKK1tPd25lcnNdOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y2hyb21pdW0vc3JjLysvbWFzdGVyL2RvY3MvY29kZV9yZXZpZXdzLm1kI2V4cGVjdGF0aW9ucy1v
Zi1vd25lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2RvYy9EZXZTZXR1
cC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2RvYy9EZXZTZXR1cC5tZAppbmRleCBhZjli
ZDg0MzYwOGFjZGI5Njg3YjAwN2EzN2IzZGIxZmZlYTdiMGZiLi4yMTczOWRhYjAwNjg0OWU1M2Yy
Yjc5MDljM2FhOTU4ODYxZDUzMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9kb2MvRGV2U2V0dXAubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0RldlNl
dHVwLm1kCkBAIC05NSw1MCArOTUsNyBAQCBPbmNlIHRoZSBidWlsZCBjb21wbGV0ZXMgYWxsIEFO
R0xFIGxpYnJhcmllcywgdGVzdHMsIGFuZCBzYW1wbGVzIHdpbGwgYmUgbG9jYXRlZAogCiAjIyMg
QnVpbGRpbmcgQU5HTEUgZm9yIEFuZHJvaWQKIAotQnVpbGRpbmcgQU5HTEUgZm9yIEFuZHJvaWQg
aXMgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhlIENocm9taXVtIHRvb2xjaGFpbi4gSXQgaXMgbm90
IGN1cnJlbnRseSBwb3NzaWJsZSB0byBidWlsZCBBTkdMRSBmb3IgQW5kcm9pZCB3aXRob3V0IGEg
Q2hyb21pdW0gY2hlY2tvdXQuIFNlZSBodHRwOi8vYW5nbGVidWcuY29tLzIzNDQgZm9yIG1vcmUg
ZGV0YWlscyBvbiB3aHkuCi1QbGVhc2UgZm9sbG93IHRoZSBzdGVwcyBpbgotW0NoZWNraW5nIG91
dCBhbmQgYnVpbGRpbmcgQ2hyb21pdW0gZm9yIEFuZHJvaWRdKGh0dHBzOi8vY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy9tYXN0ZXIvZG9jcy9hbmRyb2lkX2J1aWxkX2lu
c3RydWN0aW9ucy5tZCkuCi1UaGlzIG11c3QgYmUgZG9uZSBvbiBMaW51eCwgdGhlIG9ubHkgcGxh
dGZvcm0gdGhhdCBDaHJvbWl1bSBmb3IgQW5kcm9pZCBzdXBwb3J0cy4KLU5hbWUgeW91ciBvdXRw
dXQgZGlyZWN0b3JpZXMgYG91dC9EZWJ1Z2AgYW5kIGBvdXQvUmVsZWFzZWAsIGJlY2F1c2UgQ2hy
b21pdW0gR1BVIHRlc3RzIGxvb2sgZm9yIGJyb3dzZXIgYmluYXJpZXMgaW4gdGhlc2UgZm9sZGVy
cy4gUmVwbGFjaW5nIGBvdXRgIHdpdGggb3RoZXIgbmFtZXMgc2VlbXMgdG8gYmUgT0sgd2hlbiB3
b3JraW5nIHdpdGggbXVsdGlwbGUgYnVpbGQgY29uZmlndXJhdGlvbnMuCi1JdCdzIGJlc3QgdG8g
dXNlIGEgYnVpbGQgY29uZmlndXJhdGlvbiBvZiBzb21lIEFuZHJvaWQgYm90IG9uIFtHUFUuRllJ
IHdhdGVyZmFsbF0oaHR0cHM6Ly9jaS5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9nL2Nocm9taXVt
LmdwdS5meWkvY29uc29sZSkuIExvb2sgZm9yIGBnZW5lcmF0ZV9idWlsZF9maWxlc2Agc3RlcCBv
dXRwdXQgb2YgdGhhdCBib3QuIFJlbW92ZSBgZ29tYV9kaXJgIGZsYWcuCi1Gb3IgZXhhbXBsZSwg
dGhlc2UgYXJlIHRoZSBidWlsZCBmbGFncyBmcm9tIE5leHVzIDVYIGJvdDoKLWBgYAotYnVpbGRf
YW5nbGVfZGVxcF90ZXN0cyA9IHRydWUKLWRjaGVja19hbHdheXNfb24gPSB0cnVlCi1mZm1wZWdf
YnJhbmRpbmcgPSAiQ2hyb21lIgotaXNfY29tcG9uZW50X2J1aWxkID0gZmFsc2UKLWlzX2RlYnVn
ID0gZmFsc2UKLXByb3ByaWV0YXJ5X2NvZGVjcyA9IHRydWUKLXN5bWJvbF9sZXZlbCA9IDEKLXRh
cmdldF9jcHUgPSAiYXJtNjQiICAgICAgICAgICMgTmV4dXMgNVggaXMgNjQgYml0LCByZW1vdmUg
dGhpcyBvbiAzMiBiaXQgZGV2aWNlcwotdGFyZ2V0X29zID0gImFuZHJvaWQiCi11c2VfZ29tYSA9
IHRydWUgICAgICAgICAgICAgICAjIFJlbW92ZSB0aGlzIGlmIHlvdSBkb24ndCBoYXZlIGdvbWEK
LWBgYAotQWRkaXRpb25hbCBmbGFncyB0byBidWlsZCB0aGUgVnVsa2FuIGJhY2tlbmQsIGVuYWJs
ZSBvbmx5IGlmIHJ1bm5pbmcgb24gQW5kcm9pZCBPIG9yIGhpZ2hlcjoKLWBgYAotYW5kcm9pZDMy
X25ka19hcGlfbGV2ZWwgPSAyNgotYW5kcm9pZDY0X25ka19hcGlfbGV2ZWwgPSAyNgotYGBgCi0K
LVRoZXNlIEFOR0xFIHRhcmdldHMgYXJlIHN1cHBvcnRlZDoKLWBuaW5qYSAtQyBvdXQvUmVsZWFz
ZSB0cmFuc2xhdG9yIGxpYkVHTCBsaWJHTEVTdjIgYW5nbGVfdW5pdHRlc3RzIGFuZ2xlX2VuZDJl
bmRfdGVzdHMgYW5nbGVfd2hpdGVfYm94X3Rlc3RzIGFuZ2xlX2RlcXBfZ2xlczJfdGVzdHMgYW5n
bGVfZGVxcF9nbGVzM190ZXN0cyBhbmdsZV9kZXFwX2VnbF90ZXN0cyBhbmdsZV9wZXJmdGVzdHMg
YW5nbGVfd2hpdGVfYm94X3BlcmZ0ZXN0c2AKLQotSW4gb3JkZXIgdG8gcnVuIEFOR0xFIHRlc3Rz
LCBwcmVwZW5kIGBiaW4vcnVuX2AgdG8gdGhlIHRlc3QgbmFtZSwgZm9yIGV4YW1wbGU6IGAuL291
dC9SZWxlYXNlL2Jpbi9ydW5fYW5nbGVfdW5pdHRlc3RzYC4KLUFkZGl0aW9uYWwgZGV0YWlscyBh
cmUgaW4gW0FuZHJvaWQgVGVzdCBJbnN0cnVjdGlvbnNdKGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy9tYXN0ZXIvZG9jcy90ZXN0aW5nL2FuZHJvaWRfdGVz
dF9pbnN0cnVjdGlvbnMubWQpLgotCi0qKmRFUVAgTm90ZSoqOiBSdW5uaW5nIHRoZSB0ZXN0cyBu
b3QgdXNpbmcgdGhlIHRlc3QgcnVubmVyIGlzIHRyaWNreSwgYnV0IGlzIG5lY2Vzc2FyeSBpbiBv
cmRlciB0byBnZXQgYSBjb21wbGV0ZSBUZXN0UmVzdWx0cy5xcGEgZnJvbSB0aGUgZEVRUCB0ZXN0
cyAoc2luY2UgdGhlIHJ1bm5lciBzaGFyZHMgdGhlIHRlc3RzLCBvbmx5IHRoZSByZXN1bHRzIG9m
IHRoZSBsYXN0IHNoYXJkIHdpbGwgYmUgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlIHRlc3QgcnVu
bmVyKS4gRmlyc3QsIHVzZSB0aGUgcnVubmVyIHRvIGluc3RhbGwgdGhlIEFQSywgdGVzdCBkYXRh
IGFuZCB0ZXN0IGV4cGVjdGF0aW9ucyBvbiB0aGUgZGV2aWNlLiBBZnRlciB0aGUgdGVzdHMgc3Rh
cnQgcnVubmluZywgdGhlIHRlc3QgcnVubmVyIGNhbiBiZSBzdG9wcGVkIHdpdGggQ3RybCtDLiBU
aGVuLCBydW4KLWBgYAotYWRiIHNoZWxsIGFtIHN0YXJ0IC1hIGFuZHJvaWQuaW50ZW50LmFjdGlv
bi5NQUlOIC1uIG9yZy5jaHJvbWl1bS5uYXRpdmVfdGVzdC8uTmF0aXZlVW5pdFRlc3ROYXRpdmVB
Y3Rpdml0eSAtZSBvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QuTmF0aXZlVGVzdC5TdGRvdXRGaWxl
IC9zZGNhcmQvY2hyb21pdW1fdGVzdHNfcm9vdC9vdXQudHh0Ci1gYGAKLUFmdGVyIHRoZSB0ZXN0
cyBmaW5pc2gsIGdldCB0aGUgcmVzdWx0cyB3aXRoCi1gYGAKLWFkYiBwdWxsIC9zZGNhcmQvY2hy
b21pdW1fdGVzdHNfcm9vdC90aGlyZF9wYXJ0eS9hbmdsZS90aGlyZF9wYXJ0eS9kZXFwL3NyYy9k
YXRhL1Rlc3RSZXN1bHRzLnFwYSAuCi1gYGAKLU5vdGU6IHRoaXMgbG9jYXRpb24gbWlnaHQgY2hh
bmdlLCBvbmUgY2FuIGRvdWJsZS1jaGVjayB3aXRoIGBhZGIgbG9nY2F0IC1kIHwgZ3JlcCBxcGFg
LgotCi1JbiBvcmRlciB0byBydW4gR1BVIHRlbGVtZXRyeSB0ZXN0cywgYnVpbGQgYGNocm9tZV9w
dWJsaWNfYXBrYCB0YXJnZXQuIFRoZW4gZm9sbG93IFtHUFUgVGVzdGluZ10oaHR0cDovL3d3dy5j
aHJvbWl1bS5vcmcvZGV2ZWxvcGVycy90ZXN0aW5nL2dwdS10ZXN0aW5nI1RPQy1SdW5uaW5nLXRo
ZS1HUFUtVGVzdHMtTG9jYWxseSkgZG9jLCB1c2luZyBgLS1icm93c2VyPWFuZHJvaWQtY2hyb21p
dW1gIGFyZ3VtZW50LiBNYWtlIHN1cmUgdG8gc2V0IHlvdXIgYENIUk9NSVVNX09VVF9ESVJgIGVu
dmlyb25tZW50IHZhcmlhYmxlLCBzbyB0aGF0IHlvdXIgYnJvd3NlciBpcyBmb3VuZCwgb3RoZXJ3
aXNlIHRoZSBzdG9jayBvbmUgd2lsbCBydW4uCi0KLUFsc28sIGZvbGxvdyBbSG93IHRvIGJ1aWxk
IEFOR0xFIGluIENocm9taXVtIGZvciBkZXZdKEJ1aWxkaW5nQW5nbGVGb3JDaHJvbWl1bURldmVs
b3BtZW50Lm1kKSB0byB3b3JrIHdpdGggVG9wIG9mIFRyZWUgQU5HTEUgaW4gQ2hyb21pdW0uCitT
ZWUgdGhlIEFuZHJvaWQgc3BlY2lmaWMgW2RvY3VtZW50YXRpb25dKERldlNldHVwQW5kcm9pZC5t
ZCNBTkdMRS1mb3ItQW5kcm9pZCkuCiAKICMjIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IHdpdGgg
QU5HTEUKIFRoaXMgc2VjdGlvbnMgZGVzY3JpYmVzIGhvdyB0byB1c2UgQU5HTEUgdG8gYnVpbGQg
YW4gT3BlbkdMIEVTIGFwcGxpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZG9jL0RldlNldHVwQW5kcm9pZC5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2Rv
Yy9EZXZTZXR1cEFuZHJvaWQubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4MzZkNTA3ZDFiMzllMTI3MzRmZWY3
MDBlMTZkN2QzOWIzMWNjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2RvYy9EZXZTZXR1cEFuZHJvaWQubWQKQEAgLTAsMCArMSwxODQgQEAKKyMgQU5HTEUgZm9y
IEFuZHJvaWQKKworQnVpbGRpbmcgQU5HTEUgZm9yIEFuZHJvaWQgaXMgaGVhdmlseSBkZXBlbmRl
bnQgb24gdGhlIENocm9taXVtIHRvb2xjaGFpbi4gSXQgaXMgbm90IGN1cnJlbnRseSBwb3NzaWJs
ZSB0byBidWlsZCBBTkdMRSBmb3IgQW5kcm9pZCB3aXRob3V0IGEgQ2hyb21pdW0gY2hlY2tvdXQu
IFNlZSBodHRwOi8vYW5nbGVidWcuY29tLzIzNDQgZm9yIG1vcmUgZGV0YWlscyBvbiB3aHkuCisK
K0Zyb20gYSBMaW51eCBwbGF0Zm9ybSAodGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBDaHJvbWl1bSBm
b3IgQW5kcm9pZCBzdXBwb3J0cyksIGZvbGxvdyB0aGUgc3RlcHMgaW4KK1tDaGVja2luZyBvdXQg
YW5kIGJ1aWxkaW5nIENocm9taXVtIGZvciBBbmRyb2lkXShodHRwczovL2Nocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvbWFzdGVyL2RvY3MvYW5kcm9pZF9idWlsZF9pbnN0
cnVjdGlvbnMubWQpLgorCitOYW1lIHlvdXIgb3V0cHV0IGRpcmVjdG9yaWVzIGBvdXQvRGVidWdg
IGFuZCBgb3V0L1JlbGVhc2VgLCBiZWNhdXNlIENocm9taXVtIEdQVSB0ZXN0cyBsb29rIGZvciBi
cm93c2VyIGJpbmFyaWVzIGluIHRoZXNlIGZvbGRlcnMuIFJlcGxhY2luZyAnW0RlYnVnfFJlbGVh
c2VdJyB3aXRoIG90aGVyIG5hbWVzIHNlZW1zIHRvIGJlIE9LIHdoZW4gd29ya2luZyB3aXRoIG11
bHRpcGxlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLgorCitUaGUgZm9sbG93aW5nIEdOIGFyZ3MgYXJl
IGtub3duIHRvIHdvcmsgd2VsbCBmb3IgUmVsZWFzZSBhbmQgRGVidWcgY29uZmlndXJhdGlvbnMu
CisKK0RlYnVnOgorYGBgCiskIGduIGFyZ3Mgb3V0L0RlYnVnCitgYGAKK2BgYAordGFyZ2V0X29z
ID0gImFuZHJvaWQiCit0YXJnZXRfY3B1ID0gImFybTY0IgorYW5kcm9pZDMyX25ka19hcGlfbGV2
ZWwgPSAyNgorYW5kcm9pZDY0X25ka19hcGlfbGV2ZWwgPSAyNgorYW5nbGVfbGlic19zdWZmaXgg
PSAiX2FuZ2xlIgorZmZtcGVnX2JyYW5kaW5nID0gIkNocm9tZSIKK2lzX2NvbXBvbmVudF9idWls
ZCA9IGZhbHNlCitzeW1ib2xfbGV2ZWwgPSAxCitpc19kZWJ1ZyA9IHRydWUKK2RjaGVja19hbHdh
eXNfb24gPSB0cnVlCithbmdsZV9lbmFibGVfdnVsa2FuID0gdHJ1ZQorYW5nbGVfZW5hYmxlX3Z1
bGthbl92YWxpZGF0aW9uX2xheWVycyA9IHRydWUKK2FuZ2xlX2VuYWJsZV9nbCA9IGZhbHNlCitg
YGAKK1JlbGVhc2U6CitgYGAKKyQgZ24gYXJncyBvdXQvUmVsZWFzZQorYGBgCitgYGAKK3Rhcmdl
dF9vcyA9ICJhbmRyb2lkIgordGFyZ2V0X2NwdSA9ICJhcm02NCIKK2FuZHJvaWQzMl9uZGtfYXBp
X2xldmVsID0gMjYKK2FuZHJvaWQ2NF9uZGtfYXBpX2xldmVsID0gMjYKK2FuZ2xlX2xpYnNfc3Vm
Zml4ID0gIl9hbmdsZSIKK2ZmbXBlZ19icmFuZGluZyA9ICJDaHJvbWUiCitpc19jb21wb25lbnRf
YnVpbGQgPSBmYWxzZQorc3ltYm9sX2xldmVsID0gMAorc3RyaXBfZGVidWdfaW5mbyA9IHRydWUK
K2lzX2RlYnVnID0gZmFsc2UKK2lzX29mZmljaWFsX2J1aWxkID0gdHJ1ZSAjIGVuYWJsZXMgbGV2
ZWwgb2Ygb3B0aW1pemF0aW9uIGJleW9uZCByZWxlYXNlCitkY2hlY2tfYWx3YXlzX29uID0gZmFs
c2UKK2FuZ2xlX2VuYWJsZV92dWxrYW4gPSB0cnVlCithbmdsZV9lbmFibGVfdnVsa2FuX3ZhbGlk
YXRpb25fbGF5ZXJzID0gZmFsc2UKK2FuZ2xlX2VuYWJsZV9nbCA9IGZhbHNlCitlbmFibGVfcmVz
b3VyY2Vfd2hpdGVsaXN0X2dlbmVyYXRpb24gPSBmYWxzZQorYGBgCisKK0lmIHlvdSBydW4gaW50
byBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgYWJvdmUsIHlvdSBtYXkgYmUgYWJsZSB0byBwdWxsIG5l
d2VyIEdOIGFyZ3MgZnJvbSBhbiBvZmZpY2lhbCBBbmRyb2lkIGJvdCBvbiBbR1BVLkZZSSB3YXRl
cmZhbGxdKGh0dHBzOi8vY2kuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vZy9jaHJvbWl1bS5ncHUu
ZnlpL2NvbnNvbGUpLgorIC0gTG9vayBmb3IgYGdlbmVyYXRlX2J1aWxkX2ZpbGVzYCBzdGVwIG91
dHB1dCBvZiB0aGF0IGJvdC4KKyAtIFJlbW92ZSBgZ29tYV9kaXJgIGZsYWcuCisKK0J1aWxkIGFu
IEFOR0xFIHRhcmdldCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKK2BgYAorYXV0b25p
bmphIC1DIG91dC9EZWJ1ZyA8dGFyZ2V0PgorYGBgCitvcgorYGBgCithdXRvbmluamEgLUMgb3V0
L1JlbGVhc2UgPHRhcmdldD4KK2BgYAorCitUaGUgZm9sbG93aW5nIEFOR0xFIGJ1aWxkIHRhcmdl
dHMgYXJlIHN1cHBvcnRlZDoKKworYGBgCithbmdsZQorYW5nbGVfYXBrcworYW5nbGVfZGVxcF9n
bGVzMl90ZXN0cworYW5nbGVfZGVxcF9raHJfZ2xlczJfdGVzdHMKK2FuZ2xlX2RlcXBfZ2xlczNf
dGVzdHMKK2FuZ2xlX2RlcXBfa2hyX2dsZXMzX3Rlc3RzCithbmdsZV9kZXFwX2dsZXMzMV90ZXN0
cworYW5nbGVfZGVxcF9raHJfZ2xlczMxX3Rlc3RzCithbmdsZV9kZXFwX2VnbF90ZXN0cworYW5n
bGVfZW5kMmVuZF90ZXN0cworYW5nbGVfcGVyZnRlc3RzCithbmdsZV91bml0dGVzdHMKK2FuZ2xl
X3doaXRlX2JveF9wZXJmdGVzdHMKK2FuZ2xlX3doaXRlX2JveF90ZXN0cworYGBgCitBTkdMRSB0
ZXN0cyB3aWxsIGJlIGluIHlvdXIgb3V0Lzx0YXJnZXQ+IGRpcmVjdG9yeSwgYW5kIGNhbiBiZSBy
dW4gd2l0aCB2YXJpb3VzIG9wdGlvbnMuIEZvciBpbnN0YW5jZSwgYW5nbGUgcGVyZnRlc3RzIGNh
biBiZSBydW4gd2l0aDoKK2BgYAorLi9vdXQvRGVidWcvYW5nbGVfcGVyZnRlc3RzIC0tdXNlLWFu
Z2xlPXZ1bGthbiAtLXZlcmJvc2UgLS1sb2NhbC1vdXRwdXQgLS1ndGVzdF9maWx0ZXI9Iipmb28q
IgorYGBgCisKK0FkZGl0aW9uYWwgZGV0YWlscyBhcmUgaW4gW0FuZHJvaWQgVGVzdCBJbnN0cnVj
dGlvbnNdKGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy9t
YXN0ZXIvZG9jcy90ZXN0aW5nL2FuZHJvaWRfdGVzdF9pbnN0cnVjdGlvbnMubWQpLgorCitBZGRp
dGlvbmFsIEFuZHJvaWQgZEVRUCBub3RlcyBjYW4gYmUgZm91bmQgaW4gW1J1bm5pbmcgZEVRUCBv
biBBbmRyb2lkXShkRVFQLm1kI1J1bm5pbmctZEVRUC1vbi1BbmRyb2lkKS4KKworSWYgeW91IGFy
ZSB0YXJnZXRpbmcgV2ViR0wgYW5kIHdhbnQgdG8gcnVuIEdQVSB0ZWxlbWV0cnkgdGVzdHMsIGJ1
aWxkIGBjaHJvbWVfcHVibGljX2Fwa2AgdGFyZ2V0LiBUaGVuIGZvbGxvdyBbR1BVIFRlc3Rpbmdd
KGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvdGVzdGluZy9ncHUtdGVzdGluZyNU
T0MtUnVubmluZy10aGUtR1BVLVRlc3RzLUxvY2FsbHkpIGRvYywgdXNpbmcgYC0tYnJvd3Nlcj1h
bmRyb2lkLWNocm9taXVtYCBhcmd1bWVudC4gTWFrZSBzdXJlIHRvIHNldCB5b3VyIGBDSFJPTUlV
TV9PVVRfRElSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgc28gdGhhdCB5b3VyIGJyb3dzZXIgaXMg
Zm91bmQsIG90aGVyd2lzZSB0aGUgc3RvY2sgb25lIHdpbGwgcnVuLiBBbHNvLCBmb2xsb3cgW0hv
dyB0byBidWlsZCBBTkdMRSBpbiBDaHJvbWl1bSBmb3IgZGV2XShCdWlsZGluZ0FuZ2xlRm9yQ2hy
b21pdW1EZXZlbG9wbWVudC5tZCkgdG8gd29yayB3aXRoIFRvcCBvZiBUcmVlIEFOR0xFIGluIENo
cm9taXVtLgorCisjIyBVc2luZyBBTkdMRSBhcyB0aGUgQW5kcm9pZCBPcGVuR0wgRVMgZHJpdmVy
CisKK1N0YXJ0aW5nIHdpdGggQW5kcm9pZCAxMCAoUSksIEFOR0xFIGNhbiBiZSBsb2FkZWQgYXMg
dGhlIE9wZW5HTCBFUyBkcml2ZXIuCisKK2A9PSBJbXBvcnRhbnQgTm90ZSA9PWAgQU5HTEUgYnVp
bHQgdGhpcyB3YXkgY2FuIG9ubHkgYmUgdXNlZCBmb3IgKkRFQlVHR0FCTEUgQVBQUyogKGkuZS4g
W21hcmtlZCBkZWJ1Z2dhYmxlXShodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9ndWlkZS90
b3BpY3MvbWFuaWZlc3QvYXBwbGljYXRpb24tZWxlbWVudCNkZWJ1ZykgaW4gdGhlIG1hbmlmZXN0
KSBvciB1c2VycyB3aXRoICpST09UIEFDQ0VTUyogKGkuZS4gYSBbdXNlcmRlYnVnXShodHRwczov
L3NvdXJjZS5hbmRyb2lkLmNvbS9zZXR1cC9idWlsZC9idWlsZGluZykgYnVpbGQpLgorCitUbyBi
dWlsZCB0aGUgQU5HTEUgQVBLLCB5b3UgbXVzdCBmaXJzdCBib290c3RyYXAgeW91ciBidWlsZCBi
eSBmb2xsb3dpbmcgdGhlIHN0ZXBzIFthYm92ZV0oI0FOR0xFLWZvci1BbmRyb2lkKS4gVGhlIHN0
ZXBzIGJlbG93IHdpbGwgcmVzdWx0IGluIGFuIEFQSyB0aGF0IGNvbnRhaW5zIHRoZSBBTkdMRSBs
aWJyYXJpZXMgYW5kIGNhbiBiZSBpbnN0YWxsZWQgb24gYW55IEFuZHJvaWQgMTArIGJ1aWxkLgor
CitBcHBzIGNhbiBiZSBvcHRlZCBpbiB0byBBTkdMRSBbb25lIGF0IGEgdGltZV0oI0FOR0xFLWZv
ci1hLXNpbmdsZS1PcGVuR0wtRVMtYXBwKSwgaW4gW2dyb3Vwc10oI0FOR0xFLWZvci1tdWx0aXBs
ZS1PcGVuR0wtRVMtYXBwcyksIG9yIFtnbG9iYWxseV0oI0FOR0xFLWZvci1hbGwtT3BlbkdMLUVT
LWFwcHMpLCBidXQgdGhleSBtdXN0IGJlIGxhdW5jaGVkIGJ5IHRoZSBKYXZhIHJ1bnRpbWUgc2lu
Y2UgdGhlIGxpYnJhcmllcyBhcmUgZGlzY292ZXJlZCB3aXRoaW4gYW4gaW5zdGFsbGVkIHBhY2th
Z2UuIFRoaXMgbWVhbnMgQU5HTEUgY2Fubm90IGJlIHVzZWQgYnkgbmF0aXZlIGV4ZWN1dGFibGVz
IG9yIFN1cmZhY2VGbGluZ2VyIGF0IHRoaXMgdGltZS4KKworIyMgQnVpbGQgdGhlIEFOR0xFIEFQ
SworCitVc2luZyAnZ24gYXJnc2AgZnJvbSBhYm92ZSwgeW91IGNhbiBidWlsZCB0aGUgQU5HTEUg
YXBrIHVzaW5nOgorYGBgCithdXRvbmluamEgLUMgb3V0L0RlYnVnIGFuZ2xlX2Fwa3MKK2BgYAor
IyMgSW5zdGFsbCB0aGUgQU5HTEUgQVBLCitgYGAKK2FkYiBpbnN0YWxsIG91dC9EZWJ1Zy9hcGtz
L0FuZ2xlTGlicmFyaWVzLmFwaworYGBgCitZb3UgY2FuIHZlcmlmeSBpbnN0YWxsYXRpb24gYnkg
bG9va2luZyBmb3IgdGhlIHBhY2thZ2UgbmFtZToKK2BgYAorJCBhZGIgc2hlbGwgcG0gcGF0aCBj
b20uY2hyb21pdW0uYW5nbGUKK3BhY2thZ2U6L2RhdGEvYXBwL2NvbS5jaHJvbWl1bS5hbmdsZS1I
cGtVY2VORmpvTFlLUGJJVnhGV0xRPT0vYmFzZS5hcGsKK2BgYAorIyMgU2VsZWN0aW5nIEFOR0xF
IGFzIHRoZSBPcGVuR0wgRVMgZHJpdmVyCisKK0ZvciBkZWJ1Z2dhYmxlIGFwcGxpY2F0aW9ucyBv
ciByb290IHVzZXJzLCB5b3UgY2FuIHRlbGwgdGhlIHBsYXRmb3JtIHRvIGxvYWQgQU5HTEUgbGli
cmFyaWVzIGZyb20gdGhlIGluc3RhbGxlZCBwYWNrYWdlLgorYGBgCithZGIgc2hlbGwgc2V0dGlu
Z3MgcHV0IGdsb2JhbCBhbmdsZV9kZWJ1Z19wYWNrYWdlIGNvbS5jaHJvbWl1bS5hbmdsZQorYGBg
CitSZW1lbWJlciB0aGF0IEFOR0xFIGNhbiBvbmx5IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zIGxh
dW5jaGVkIGJ5IHRoZSBKYXZhIHJ1bnRpbWUuCisKKyMjIEFOR0xFIGRyaXZlciBjaG9pY2VzCitU
aGVyZSBhcmUgbXVsdGlwbGUgdmFsdWVzIHlvdSBjYW4gdXNlIGZvciBzZWxlY3Rpbmcgd2hpY2gg
T3BlbkdMIEVTIGRyaXZlciBpcyBsb2FkZWQgYnkgdGhlIHBsYXRmb3JtLgorCitUaGUgZm9sbG93
aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkIGZvciBgYW5nbGVfZ2xfZHJpdmVyX3NlbGVjdGlvbl92
YWx1ZXNgOgorIC0gYGFuZ2xlYCA6IFVzZSBBTkdMRS4KKyAtIGBuYXRpdmVgIDogVXNlIHRoZSBu
YXRpdmUgT3BlbkdMIEVTIGRyaXZlci4KKyAtIGBkZWZhdWx0YCA6IFVzZSB0aGUgZGVmYXVsdCBk
cml2ZXIuIFRoaXMgYWxsb3dzIHRoZSBwbGF0Zm9ybSB0byBkZWNpZGUgd2hpY2ggZHJpdmVyIHRv
IHVzZS4KKworSW4gZWFjaCBzZWN0aW9uIGJlbG93LCByZXBsYWNlIGA8ZHJpdmVyPmAgd2l0aCBv
bmUgb2YgdGhlIHZhbHVlcyBhYm92ZS4KKworIyMgQU5HTEUgZm9yIGEgKnNpbmdsZSogT3BlbkdM
IEVTIGFwcAorYGBgCithZGIgc2hlbGwgc2V0dGluZ3MgcHV0IGdsb2JhbCBhbmdsZV9nbF9kcml2
ZXJfc2VsZWN0aW9uX3BrZ3MgPHBhY2thZ2UgbmFtZT4KK2FkYiBzaGVsbCBzZXR0aW5ncyBwdXQg
Z2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9zZWxlY3Rpb25fdmFsdWVzIDxkcml2ZXI+CitgYGAKKyMj
IEFOR0xFIGZvciAqbXVsdGlwbGUqIE9wZW5HTCBFUyBhcHBzCitTaW1pbGFyIHRvIHNlbGVjdGlu
ZyBhIHNpbmdsZSBhcHAsIHlvdSBjYW4gc2VsZWN0IG11bHRpcGxlIGFwcGxpY2F0aW9ucyBieSBs
aXN0aW5nIHRoZWlyIHBhY2thZ2UgbmFtZXMgYW5kIGRyaXZlciBjaG9pY2UgaW4gY29tbWEgc2Vw
YXJhdGVkIGxpc3RzLiAgTm90ZSB0aGUgbGlzdHMgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGgsIG9u
ZSBkcml2ZXIgY2hvaWNlIHBlciBwYWNrYWdlIG5hbWUuCitgYGAKK2FkYiBzaGVsbCBzZXR0aW5n
cyBwdXQgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9zZWxlY3Rpb25fcGtncyA8cGFja2FnZSBuYW1l
IDE+LDxwYWNrYWdlIG5hbWUgMj4sPHBhY2thZ2UgbmFtZSAzPiwuLi4KK2FkYiBzaGVsbCBzZXR0
aW5ncyBwdXQgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9zZWxlY3Rpb25fdmFsdWVzIDxkcml2ZXIg
MT4sPGRyaXZlciAyPiw8ZHJpdmVyIDM+LC4uLgorYGBgCisjIyBBTkdMRSBmb3IgKmFsbCogT3Bl
bkdMIEVTIGFwcHMKK0VuYWJsZToKK2BgYAorYWRiIHNoZWxsIHNldHRpbmdzIHB1dCBnbG9iYWwg
YW5nbGVfZ2xfZHJpdmVyX2FsbF9hbmdsZSAxCitgYGAKK0Rpc2FibGU6CitgYGAKK2FkYiBzaGVs
bCBzZXR0aW5ncyBwdXQgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9hbGxfYW5nbGUgMAorYGBgCisj
IyBDaGVjayBmb3Igc3VjY2VzcworQ2hlY2sgdG8gc2VlIHRoYXQgQU5HTEUgd2FzIGxvYWRlZCBi
eSB5b3VyIGFwcGxpY2F0aW9uOgorYGBgCiskIGFkYiBsb2djYXQgLWQgfCBncmVwIEFOR0xFCitW
IEdyYXBoaWNzRW52aXJvbm1lbnQ6IEFOR0xFIGRldmVsb3BlciBvcHRpb24gZm9yIDxwYWNrYWdl
IG5hbWU+OiBhbmdsZQorSSBHcmFwaGljc0Vudmlyb25tZW50OiBBTkdMRSBwYWNrYWdlIGVuYWJs
ZWQ6IGNvbS5jaHJvbWl1bS5hbmdsZQorSSBBTkdMRSAgIDogVmVyc2lvbiAoMi4xLjAuZjg3ZmFj
NTZkMjJmKSwgUmVuZGVyZXIgKFZ1bGthbiAxLjEuODcoQWRyZW5vIChUTSkgNjE1ICgweDA2MDEw
NTAxKSkpCitgYGAKKyMjIENsZWFuIHVwCitTZXR0aW5ncyBwZXJzaXN0IGFjcm9zcyByZWJvb3Rz
LCBzbyBpdCBpcyBhIGdvb2QgaWRlYSB0byBkZWxldGUgdGhlbSB3aGVuIGZpbmlzaGVkLgorYGBg
CithZGIgc2hlbGwgc2V0dGluZ3MgZGVsZXRlIGdsb2JhbCBhbmdsZV9kZWJ1Z19wYWNrYWdlCith
ZGIgc2hlbGwgc2V0dGluZ3MgZGVsZXRlIGdsb2JhbCBhbmdsZV9nbF9kcml2ZXJfYWxsX2FuZ2xl
CithZGIgc2hlbGwgc2V0dGluZ3MgZGVsZXRlIGdsb2JhbCBhbmdsZV9nbF9kcml2ZXJfc2VsZWN0
aW9uX3BrZ3MKK2FkYiBzaGVsbCBzZXR0aW5ncyBkZWxldGUgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZl
cl9zZWxlY3Rpb25fdmFsdWVzCitgYGAKKyMjIFRyb3VibGVzaG9vdGluZworSWYgeW91ciBhcHBs
aWNhdGlvbiBpcyBub3QgZGVidWdnYWJsZSBvciB5b3UgYXJlIG5vdCByb290LCB5b3UgbWF5IHNl
ZSBhbiBlcnJvciBsaWtlIHRoaXMgaW4gdGhlIGxvZzoKK2BgYAorJCBhZGIgbG9nY2F0IC1kIHwg
Z3JlcCBBTkdMRQorViBHcmFwaGljc0Vudmlyb25tZW50OiBBTkdMRSBkZXZlbG9wZXIgb3B0aW9u
IGZvciA8cGFja2FnZSBuYW1lPjogYW5nbGUKK0UgR3JhcGhpY3NFbnZpcm9ubWVudDogSW52YWxp
ZCBudW1iZXIgb2YgQU5HTEUgcGFja2FnZXMuIFJlcXVpcmVkOiAxLCBGb3VuZDogMAorRSBHcmFw
aGljc0Vudmlyb25tZW50OiBGYWlsZWQgdG8gZmluZCBBTkdMRSBwYWNrYWdlLgorYGBgCitEb3Vi
bGUgY2hlY2sgdGhhdCB5b3UgYXJlIHJvb3QsIG9yIHRoYXQgeW91ciBhcHBsaWNhdGlvbiBpcyBb
bWFya2VkIGRlYnVnZ2FibGVdKGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL2d1aWRlL3Rv
cGljcy9tYW5pZmVzdC9hcHBsaWNhdGlvbi1lbGVtZW50I2RlYnVnKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2RvYy9kRVFQLm1kIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvZG9jL2RFUVAubWQKaW5kZXggOTAwYWU1MzY3MWQ3ZmJjOGFiMTA4ODk5ZjQ2M2ExMzAyMzgz
M2Y1Mi4uMDVkNWNiMTk0OWY4YjIyNDhjODcwYTA3OTgzZTU0Yzg3Yjk4NmI3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL2RFUVAubWQKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvZG9jL2RFUVAubWQKQEAgLTcxLDMgKzcxLDE1IEBAIEFOR0xFIGFsc28gc3Vw
cG9ydHMgdGhlIHNhbWUgc2V0IG9mIHRhcmdldHMgYnVpbHQgd2l0aCBHb29nbGVUZXN0LCBmb3Ig
cnVubmluZwogb24gdGhlIGJvdHMuIFdlIGRvbid0IGN1cnJlbnRseSByZWNvbW1lbmQgdXNpbmcg
dGhlc2UgZm9yIGxvY2FsIGRlYnVnZ2luZywgYnV0CiB3ZSBkbyBtYWludGFpbiBsaXN0cyBvZiB0
ZXN0IGV4cGVjdGF0aW9ucyBpbiBgc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydGAuIFdoZW4KIHlvdSBm
aXggdGVzdHMsIHBsZWFzZSByZW1vdmUgdGhlIHN1cHByZXNzaW9uKHMpIGZyb20gdGhlIHJlbGV2
YW50IGZpbGVzIQorCisjIyMgUnVubmluZyBkRVFQIG9uIEFuZHJvaWQKKworUnVubmluZyB0aGUg
dGVzdHMgbm90IHVzaW5nIHRoZSB0ZXN0IHJ1bm5lciBpcyB0cmlja3ksIGJ1dCBpcyBuZWNlc3Nh
cnkgaW4gb3JkZXIgdG8gZ2V0IGEgY29tcGxldGUgVGVzdFJlc3VsdHMucXBhIGZyb20gdGhlIGRF
UVAgdGVzdHMgKHNpbmNlIHRoZSBydW5uZXIgc2hhcmRzIHRoZSB0ZXN0cywgb25seSB0aGUgcmVz
dWx0cyBvZiB0aGUgbGFzdCBzaGFyZCB3aWxsIGJlIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSB0
ZXN0IHJ1bm5lcikuIEZpcnN0LCB1c2UgdGhlIHJ1bm5lciB0byBpbnN0YWxsIHRoZSBBUEssIHRl
c3QgZGF0YSBhbmQgdGVzdCBleHBlY3RhdGlvbnMgb24gdGhlIGRldmljZS4gQWZ0ZXIgdGhlIHRl
c3RzIHN0YXJ0IHJ1bm5pbmcsIHRoZSB0ZXN0IHJ1bm5lciBjYW4gYmUgc3RvcHBlZCB3aXRoIEN0
cmwrQy4gVGhlbiwgcnVuCitgYGAKK2FkYiBzaGVsbCBhbSBzdGFydCAtYSBhbmRyb2lkLmludGVu
dC5hY3Rpb24uTUFJTiAtbiBvcmcuY2hyb21pdW0ubmF0aXZlX3Rlc3QvLk5hdGl2ZVVuaXRUZXN0
TmF0aXZlQWN0aXZpdHkgLWUgb3JnLmNocm9taXVtLm5hdGl2ZV90ZXN0Lk5hdGl2ZVRlc3QuU3Rk
b3V0RmlsZSAvc2RjYXJkL2Nocm9taXVtX3Rlc3RzX3Jvb3Qvb3V0LnR4dAorYGBgCitBZnRlciB0
aGUgdGVzdHMgZmluaXNoLCBnZXQgdGhlIHJlc3VsdHMgd2l0aAorYGBgCithZGIgcHVsbCAvc2Rj
YXJkL2Nocm9taXVtX3Rlc3RzX3Jvb3QvdGhpcmRfcGFydHkvYW5nbGUvdGhpcmRfcGFydHkvZGVx
cC9zcmMvZGF0YS9UZXN0UmVzdWx0cy5xcGEgLgorYGBgCitOb3RlOiB0aGlzIGxvY2F0aW9uIG1p
Z2h0IGNoYW5nZSwgb25lIGNhbiBkb3VibGUtY2hlY2sgd2l0aCBgYWRiIGxvZ2NhdCAtZCB8IGdy
ZXAgcXBhYC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMv
QU5HTEVfZXh0ZXJuYWxfb2JqZWN0c19mdWNoc2lhLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2V4dGVuc2lvbnMvQU5HTEVfZXh0ZXJuYWxfb2JqZWN0c19mdWNoc2lhLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MmRiMDA2OWZjZjI5ZjUwODU2YTM4Y2IxZWFlY2U1OGZkYjM4NzEwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9leHRlcm5h
bF9vYmplY3RzX2Z1Y2hzaWEudHh0CkBAIC0wLDAgKzEsMTM1IEBACitOYW1lCisKKyAgICBBTkdM
RV9leHRlcm5hbF9vYmplY3RzX2Z1Y2hzaWEKKworTmFtZSBTdHJpbmdzCisKKyAgICBHTF9BTkdM
RV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEKKyAgICBHTF9BTkdMRV9zZW1hcGhvcmVfZnVjaHNpYQor
CitDb250cmlidXRvcnMKKworICAgIE1pY2hhZWwgU3BhbmcsIEdvb2dsZQorCitDb250YWN0CisK
KyAgICBNaWNoYWVsIFNwYW5nLCBHb29nbGUgKHNwYW5nICdhdCcgZ29vZ2xlLmNvbSkKKworU3Rh
dHVzCisKKyAgICBEcmFmdAorCitWZXJzaW9uCisKKyAgICBMYXN0IE1vZGlmaWVkIERhdGU6IEZl
YiAxOSwgMjAyMAorICAgIFJldmlzaW9uOiAxCisKK051bWJlcgorCisgICAgVEJECisKK0RlcGVu
ZGVuY2llcworCisgICAgV3JpdHRlbiBhZ2FpbnN0IHRoZSBPcGVuR0wgNC41IGFuZCBPcGVuR0wg
RVMgMy4yIHNwZWNpZmljYXRpb25zCisKKyAgICBHTF9BTkdMRV9tZW1vcnlfb2JqZWN0X2Z1Y2hz
aWEgcmVxdWlyZXMgR0xfRVhUX21lbW9yeV9vYmplY3QKKworICAgIEdMX0FOR0xFX3NlbWFwaG9y
ZV9mdWNoc2lhIHJlcXVpcmVzIEdMX0VYVF9zZW1hcGhvcmUKKworT3ZlcnZpZXcKKworICAgIEJ1
aWxkaW5nIHVwb24gdGhlIE9wZW5HTCBtZW1vcnkgb2JqZWN0IGFuZCBzZW1hcGhvcmUgZnJhbWV3
b3JrCisgICAgZGVmaW5lZCBpbiBFWFRfZXh0ZXJuYWxfb2JqZWN0cywgdGhpcyBleHRlbnNpb24g
ZW5hYmxlcyBhbiBPcGVuR0wKKyAgICBhcHBsaWNhdGlvbiB0byBpbXBvcnQgYSBtZW1vcnkgb2Jq
ZWN0IG9yIHNlbWFwaG9yZSBmcm9tIFppcmNvbgorICAgIGV4dGVybmFsIGhhbmRsZXMuCisKK05l
dyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKKworICAgIElmIHRoZSBHTF9BTkdMRV9tZW1vcnlf
b2JqZWN0X2Z1Y2hzaWEgc3RyaW5nIGlzIHJlcG9ydGVkLCB0aGUgZm9sbG93aW5nCisgICAgY29t
bWFuZHMgYXJlIGFkZGVkOgorCisgICAgdm9pZCBJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdM
RSh1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBo
YW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBo
YW5kbGUpOworCisgICAgSWYgdGhlIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhIHN0cmluZyBp
cyByZXBvcnRlZCwgdGhlIGZvbGxvd2luZyBjb21tYW5kcworICAgIGFyZSBhZGRlZDoKKworICAg
IHZvaWQgSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUodWludCBzZW1hcGhvcmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhhbmRsZVR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGhhbmRsZSk7
CisKKworTmV3IFRva2VucworCisgICAgSWYgdGhlIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVj
aHNpYSBzdHJpbmcgaXMgcmVwb3J0ZWQsIHRoZSBmb2xsb3dpbmcKKyAgICB0b2tlbnMgYXJlIGFk
ZGVkOgorCisgICAgQWNjZXB0ZWQgYnkgdGhlIDxoYW5kbGVUeXBlPiBwYXJhbWV0ZXIgb2YgSW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUoKS4KKworICAgICAgICBIQU5ETEVfVFlQRV9aSVJD
T05fVk1PX0FOR0xFICAgICAgICAgICAgICAgMHg5M0FFCisKKyAgICBJZiB0aGUgR0xfQU5HTEVf
c2VtYXBob3JlX2Z1Y2hzaWEgc3RyaW5nIGlzIHJlcG9ydGVkLCB0aGUgZm9sbG93aW5nCisgICAg
dG9rZW5zIGFyZSBhZGRlZDoKKworICAgIEFjY2VwdGVkIGJ5IHRoZSA8aGFuZGxlVHlwZT4gcGFy
YW1ldGVyIG9mIEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKCkuCisKKyAgICAgICAg
SEFORExFX1RZUEVfWklSQ09OX0VWRU5UX0FOR0xFICAgICAgICAgICAgIDB4OTNBRgorCitBZGRp
dGlvbnMgdG8gQ2hhcHRlciA0IG9mIHRoZSBPcGVuR0wgNC41IFNwZWNpZmljYXRpb24gKEV2ZW50
IE1vZGVsKQorCisgICAgQWRkIHRoZSBmb2xsb3dpbmcgZW50cnkgdG8gdGFibGUgNC4yICJDb21t
YW5kcyBmb3IgaW1wb3J0aW5nCisgICAgZXh0ZXJuYWwgc2VtYXBob3JlIGhhbmRsZXMuIgorCisg
ICAgICAgIHwgSGFuZGxlIFR5cGUgICAgICAgICAgICAgICAgICAgIHwgSW1wb3J0IGNvbW1hbmQg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgfCBIQU5E
TEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEUgfCBJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVB
TkdMRSB8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgUmVwbGFjZSB0aGUgcGFyYWdyYXBo
IGluIHNlY3Rpb24gNC4yLjEgYmVnaW5uaW5nICJFeHRlcm5hbCBoYW5kbGVzCisgICAgYXJlIG9m
dGVuIGRlZmluZWQuLi4iIHdpdGggdGhlIGZvbGxvd2luZworCisgICAgICAgIFRoZSBjb21tYW5k
CisKKyAgICAgICAgICAgIEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKHVpbnQgc2Vt
YXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51
bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludCBoYW5kbGUpOworCisgICAgICAgIGltcG9ydHMgYSBzZW1hcGhvcmUgZnJvbSB0aGUg
emlyY29uIGhhbmRsZSA8aGFuZGxlPi4gIFdoYXQgdHlwZSBvZgorICAgICAgICBoYW5kbGUgPGhh
bmRsZT4gcmVmZXJzIHRvIGlzIGRldGVybWluZWQgYnkgPGhhbmRsZVR5cGU+LiAgQSBzdWNjZXNz
ZnVsCisgICAgICAgIGltcG9ydCBvcGVyYXRpb24gdHJhbnNmZXJzIG93bmVyc2hpcCBvZiA8aGFu
ZGxlPiB0byB0aGUgR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb24sIGFuZCBwZXJmb3JtaW5nIGFu
eSBvcGVyYXRpb24gb24gPGhhbmRsZT4gaW4gdGhlCisgICAgICAgIGFwcGxpY2F0aW9uIGFmdGVy
IGFuIGltcG9ydCByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvci4KKworQWRkaXRpb25zIHRv
IENoYXB0ZXIgNiBvZiB0aGUgT3BlbkdMIDQuNSBTcGVjaWZpY2F0aW9uIChNZW1vcnkgT2JqZWN0
cykKKworICAgIEFkZCB0aGUgZm9sbG93aW5nIGVudHJ5IHRvIHRhYmxlIDYuMiAiQ29tbWFuZHMg
Zm9yIGltcG9ydGluZworICAgIGV4dGVybmFsIG1lbW9yeSBoYW5kbGVzLiIKKworICAgICAgICB8
IEhhbmRsZSBUeXBlICAgICAgICAgICAgICAgICAgfCBJbXBvcnQgY29tbWFuZCAgICAgICAgICAg
ICAgICB8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgfCBIQU5ETEVfVFlQRV9aSVJDT05fVk1P
X0FOR0xFIHwgSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUgfAorICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
CisKKyAgICBSZXBsYWNlIHRoZSBwYXJhZ3JhcGggaW4gc2VjdGlvbiA2LjEgYmVnaW5uaW5nICJF
eHRlcm5hbCBoYW5kbGVzIGFyZQorICAgIG9mdGVuIGRlZmluZWQuLi4iIHdpdGggdGhlIGZvbGxv
d2luZworCisgICAgICAgIFRoZSBjb21tYW5kCisKKyAgICAgICAgICAgIHZvaWQgSW1wb3J0TWVt
b3J5WmlyY29uSGFuZGxlQU5HTEUodWludCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgaGFuZGxlKTsKKworICAg
ICAgICBpbXBvcnRzIGEgbWVtb3J5IG9iamVjdCBvZiBsZW5ndGggPHNpemU+IGZyb20gdGhlIGhh
bmRsZQorICAgICAgICA8aGFuZGxlPi4gIFdoYXQgdHlwZSBvZiBvYmplY3QgPGhhbmRsZT4gcmVm
ZXJzIHRvIGlzIGRldGVybWluZWQgYnkKKyAgICAgICAgPGhhbmRsZVR5cGU+LiAgQSBzdWNjZXNz
ZnVsIGltcG9ydCBvcGVyYXRpb24gdHJhbnNmZXJzIG93bmVyc2hpcAorICAgICAgICBvZiA8aGFu
ZGxlPiB0byB0aGUgR0wgaW1wbGVtZW50YXRpb24sIGFuZCBwZXJmb3JtaW5nIGFueSBvcGVyYXRp
b24gb24KKyAgICAgICAgPGhhbmRsZT4gaW4gdGhlIGFwcGxpY2F0aW9uIGFmdGVyIGFuIGltcG9y
dCByZXN1bHRzIGluIHVuZGVmaW5lZAorICAgICAgICBiZWhhdmlvci4KKworUmV2aXNpb24gSGlz
dG9yeQorCisgICAgUmV2aXNpb24gMSwgMjAxOS0wMi0xOSAoTWljaGFlbCBTcGFuZykKKyAgICAg
ICAgLSBJbml0aWFsIGRyYWZ0IGJhc2VkIGNsb3NlbHkgb24gRVhUX2V4dGVybmFsX29iamVjdHNf
ZmQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9B
TkdMRV9pb3N1cmZhY2VfY2xpZW50X2J1ZmZlci50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV9pb3N1cmZhY2VfY2xpZW50X2J1ZmZlci50eHQKaW5kZXgg
NjkwOGU0ODVkNThjM2E4YmEwMmVlMDAxNmM1N2IzNmI4MTEyNTNmMi4uOTUzMTc3ZWQ1MTZjMGM0
MzBmZDExYWE0OGM2ODc4M2Y0YjkwZDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfaW9zdXJmYWNlX2NsaWVudF9idWZmZXIudHh0Cisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX2lvc3VyZmFj
ZV9jbGllbnRfYnVmZmVyLnR4dApAQCAtNTUsNiArNTUsMTEgQEAgTmV3IFRva2VucwogICAgICAg
ICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUgMHgzNDVECiAgICAgICAgIEVHTF9J
T1NVUkZBQ0VfVVNBR0VfSElOVF9BTkdMRSAweDM0OEEKIAorICAgIEFjY2VwdGVkIGluIHRoZSA8
YXR0cmlidXRlPiBwYXJhbWV0ZXIgb2YKKyAgICBlZ2xHZXRDb25maWdBdHRyaWI6CisKKyAgICAg
ICAgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEUgMHgzNDhECisKIEFkZGl0aW9ucyB0
byBDaGFwdGVyIDMgb2YgdGhlIEVHTCAxLjQgU3BlY2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBh
bmQgRXJyb3JzKQogCiAgICAgUmVwbGFjZSB0aGUgbGFzdCBzZW50ZW5jZSBvZiBwYXJhZ3JhcGgg
MSBvZiBTZWN0aW9uIDMuNS4zIHdpdGggdGhlCkBAIC04MSw4ICs4Niw4IEBAIEFkZGl0aW9ucyB0
byBDaGFwdGVyIDMgb2YgdGhlIEVHTCAxLjQgU3BlY2lmaWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBh
bmQgRXJyb3JzKQogICAgICAgLSBFR0xfVEVYVFVSRV9GT1JNQVQgd2l0aCBhIHZhbHVlIG9mIEVH
TF9URVhUVVJFX1JHQkEKICAgICAgIC0gRUdMX1dJRFRIIHdpdGggYSB2YWx1ZSBiZXR3ZWVuIDEg
YW5kIHRoZSB3aWR0aCBvZiA8YnVmZmVyPi4KICAgICAgIC0gRUdMX0hFSUdIVCB3aXRoIGEgdmFs
dWUgYmV0d2VlbiAxIGFuZCB0aGUgaGVpZ2h0IG9mIDxidWZmZXI+LgotICAgICAgLSBFR0xfVEVY
VFVSRV9UQVJHRVQgd2l0aCBhIHZhbHVlIG9mIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSAo
bWFjT1MpCi0gICAgICAgIG9yIEVHTF9URVhUVVJFXzJEIChpT1MpCisgICAgICAtIEVHTF9URVhU
VVJFX1RBUkdFVCB3aXRoIGEgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBhdHRyaWJ1dGUKKyAgICAg
IEVHTF9CSU5EX1RPX1RFWFRVUkVfVEFSR0VUX0FOR0xFIGFzIHF1ZXJpZWQgZnJvbSBlZ2xHZXRD
b25maWdBdHRyaWIuCiAgICAgICAtIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUgd2l0aCBhIHZh
bHVlIGJldHdlZW4gMCBhbmQgdGhlIG51bWJlciBvZgogICAgIHBsYW5lcyBvZiA8YnVmZmVyPiAo
ZXhjbHVzaXZlKS4KIApAQCAtMTE5LDYgKzEyNCwxNSBAQCBBZGRpdGlvbnMgdG8gQ2hhcHRlciAz
IG9mIHRoZSBFR0wgMS40IFNwZWNpZmljYXRpb24gKEVHTCBGdW5jdGlvbnMgYW5kIEVycm9ycykK
ICAgICBvZiB0aGUgYXNzb2NpY2F0ZWQgSU9TdXJmYWNlIG9iamVjdCBhcmUgdW5kZWZpbmVkIHdo
aWxlIHRoZSBwYnVmZmVyIGlzCiAgICAgYm91bmQgdG8gYSBjbGllbnQgdGV4dHVyZS4iCiAKKyAg
ICBBcHBlbmQgdG8gdGhlIGVuZCBvZiBUYWJsZSAzLjEuCisgICAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgICAgQXR0cmlidXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICBOb3Rlcwor
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIEVHTF9CSU5EX1RPX1RFWFRVUkVfVEFSR0VUX0FO
R0xFICAgIGVudW0gICAgVGV4dHVyZSB0YXJnZXQgc3VwcG9ydGVkIGJ5CisgICAgSU9TdXJmYWNl
LWJhY2tlZCBwYnVmZmVycy4KKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCiBJc3N1ZXMKIAog
ICAgIDEuIENhbiBSR0IgZm9ybWF0cyBiZSBzdXBwb3J0ZWQ/CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZp
Y2VfdHlwZV9lZ2wudHh0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xf
QU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNlX3R5cGVfZWdsLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZGRk
NjZiMzk2NDI5NGY5YzcxZDI0NmRlMGViNzc4NzMwMzNjYjU5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfcGxhdGZvcm1fYW5n
bGVfZGV2aWNlX3R5cGVfZWdsLnR4dApAQCAtMCwwICsxLDg2IEBACitOYW1lCisKKyAgICBBTkdM
RV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2VfdHlwZV9lZ2xfYW5nbGUKKworTmFtZSBTdHJpbmdzCisK
KyAgICBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNlX3R5cGVfZWdsX2FuZ2xlCisKK0Nv
bnRyaWJ1dG9ycworCisgICAgSnVsaWVuIElzb3JjZSwgT2Jsb25nCisKK0NvbnRhY3RzCisKKyAg
ICBKdWxpZW4gSXNvcmNlLCBPYmxvbmcgKGppc29yY2UgJ2F0JyBvYmxvbmcgJ2RvdCcgY29tKQor
CitTdGF0dXMKKworICAgIERyYWZ0CisKK1ZlcnNpb24KKworICAgIFZlcnNpb24gMSwgMjAyMC0w
My0wMworCitOdW1iZXIKKworICAgIEVHTCBFeHRlbnNpb24gWFhYCisKK0V4dGVuc2lvbiBUeXBl
CisKKyAgICBFR0wgY2xpZW50IGV4dGVuc2lvbgorCitEZXBlbmRlbmNpZXMKKworICAgIFJlcXVp
cmVzIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9vcGVuZ2wuCisKK092ZXJ2aWV3CisKKyAgICBU
aGlzIGV4dGVuc2lvbiBlbmFibGVzIGNob29zaW5nIHRoZSBkcml2ZXIncyBFR0wgaW1wbGVtZW50
YXRpb24gd2hlbiBpdCBpcworICAgIGF2YWlsYWJsZS4KKworTmV3IFR5cGVzCisKKyAgICBOb25l
CisKK05ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKKworICAgIE5vbmUKKworTmV3IFRva2Vu
cworCisgICAgQWNjZXB0ZWQgYXMgdmFsdWVzIGZvciB0aGUgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX0FOR0xFCisgICAgYXR0cmlidXRlOgorCisgICAgICAgIEVHTF9QTEFURk9STV9B
TkdMRV9ERVZJQ0VfVFlQRV9FR0xfQU5HTEUgICAgIDB4MzQ4RQorCitBZGRpdGlvbnMgdG8gdGhl
IEVHTCBTcGVjaWZpY2F0aW9uCisKKyAgICBOb25lLgorCitOZXcgQmVoYXZpb3IKKworICAgIFdo
ZW4gY2FsbGluZyBlZ2xHZXRQbGF0Zm9ybURpc3BsYXk6CisKKyAgICBUbyByZXF1ZXN0IGEgZHJp
dmVyIGVnbC1iYWNrZWQgaW1wbGVtZW50YXRpb24gd2l0aCBBTkdMRSwgdGhlIHZhbHVlIG9mCisg
ICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUgc2hvdWxkIGJlCisgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFIG9yCisgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMRVNfQU5HTEUKKyAgICBhbmQgdGhlIHZhbHVlIG9mIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9BTkdMRSBzaG91bGQgYmUKKyAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfRUdMX0FOR0xFLgorCisgICAgSWYgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX0FOR0xFIGlzCisgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0VHTF9BTkdM
RSBhbmQKKyAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSBpcyBub3QKKyAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgb3IgaXMgbm90CisgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgdGhlbiBhbiBFR0xfQkFEX0FUVFJJQlVURSBl
cnJvciBpcworICAgIGlzIGdlbmVyYXRlZCBhbmQgRUdMX05PX0RJU1BMQVkgaXMgcmV0dXJuZWQu
CisKK0lzc3VlcworCisgICAgTm9uZQorCitSZXZpc2lvbiBIaXN0b3J5CisKKyAgICBWZXJzaW9u
IDEsIDIwMjAtMDMtMDMgKEp1bGllbiBJc29yY2UpCisgICAgICAtIEluaXRpYWwgZHJhZnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dF9hbmds
ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmgK
aW5kZXggNzRlNGU1MWNiMmQzOWYwMTVjMDI0YTA0YTEwNmQ1YWQxN2QyODhkYy4uNTBiZDZmMWM4
MmQxOGM1ODNiYjY5MDIwNjg1NjhiNWVmNDI5MmEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmgKQEAgLTk3LDYgKzk3LDExIEBA
CiAjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9TV0lGVFNIQURFUl9BTkdM
RSAweDM0ODcKICNlbmRpZiAvKiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNlX3R5cGVf
c3dpZnRzaGFkZXIgKi8KIAorI2lmbmRlZiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNl
X3R5cGVfZWdsX2FuZ2xlCisjZGVmaW5lIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2Vf
dHlwZV9lZ2xfYW5nbGUKKyNkZWZpbmUgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0VH
TF9BTkdMRSAweDM0OEUKKyNlbmRpZiAvKiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNl
X3R5cGVfZWdsX2FuZ2xlICovCisKICNpZm5kZWYgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2Nv
bnRleHRfdmlydHVhbGl6YXRpb24KICNkZWZpbmUgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2Nv
bnRleHRfdmlydHVhbGl6YXRpb24gMQogI2RlZmluZSBFR0xfUExBVEZPUk1fQU5HTEVfQ09OVEVY
VF9WSVJUVUFMSVpBVElPTl9BTkdMRSAweDM0ODEKQEAgLTE5Nyw2ICsyMDIsNyBAQCBFR0xBUEkg
RUdMaW50IEVHTEFQSUVOVFJZIGVnbFByb2dyYW1DYWNoZVJlc2l6ZUFOR0xFKEVHTERpc3BsYXkg
ZHB5LCBFR0xpbnQgbGltaQogI2RlZmluZSBFR0xfSU9TVVJGQUNFX1VTQUdFX0hJTlRfQU5HTEUg
MHgzNDhBCiAjZGVmaW5lIEVHTF9JT1NVUkZBQ0VfUkVBRF9ISU5UX0FOR0xFIDB4MDAwMQogI2Rl
ZmluZSBFR0xfSU9TVVJGQUNFX1dSSVRFX0hJTlRfQU5HTEUgMHgwMDAyCisjZGVmaW5lIEVHTF9C
SU5EX1RPX1RFWFRVUkVfVEFSR0VUX0FOR0xFIDB4MzQ4RAogI2VuZGlmIC8qIEVHTF9BTkdMRV9p
b3N1cmZhY2VfY2xpZW50X2J1ZmZlciAqLwogCiAjaWZuZGVmIEVHTF9BTkdMRV9jcmVhdGVfY29u
dGV4dF9leHRlbnNpb25zX2VuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMRVMyL2dsMmV4dC5oCmluZGV4IDBlZTA4MmEzZDBmMGNjYWRhZjA5OWM5MTEwNmY2Y2Fi
MjcyMjkzMGYuLjgzOTNiMDczNGNjZjY5MjRkZTIzNzE0NThhODc5M2M5Y2FlYjgzYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaApAQCAtMzgs
NyArMzgsNyBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgR0xfQVBJRU5UUllQIEdMX0FQSUVOVFJZ
KgogI2VuZGlmCiAKLS8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTgwNTI1ICovCisvKiBHZW5lcmF0
ZWQgb24gZGF0ZSAyMDIwMDIyMSAqLwogCiAvKiBHZW5lcmF0ZWQgQyBoZWFkZXIgZm9yOgogICog
QVBJOiBnbGVzMgpAQCAtMTk3LDYgKzE5NywyMiBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRuVW5pZm9ybXVpdktIUiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLAog
I2VuZGlmCiAjZW5kaWYgLyogR0xfS0hSX3JvYnVzdG5lc3MgKi8KIAorI2lmbmRlZiBHTF9LSFJf
c2hhZGVyX3N1Ymdyb3VwCisjZGVmaW5lIEdMX0tIUl9zaGFkZXJfc3ViZ3JvdXAgMQorI2RlZmlu
ZSBHTF9TVUJHUk9VUF9TSVpFX0tIUiAgICAgICAgICAgICAgMHg5NTMyCisjZGVmaW5lIEdMX1NV
QkdST1VQX1NVUFBPUlRFRF9TVEFHRVNfS0hSICAweDk1MzMKKyNkZWZpbmUgR0xfU1VCR1JPVVBf
U1VQUE9SVEVEX0ZFQVRVUkVTX0tIUiAweDk1MzQKKyNkZWZpbmUgR0xfU1VCR1JPVVBfUVVBRF9B
TExfU1RBR0VTX0tIUiAgIDB4OTUzNQorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0JBU0lD
X0JJVF9LSFIgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1ZPVEVfQklU
X0tIUiAgMHgwMDAwMDAwMgorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0FSSVRITUVUSUNf
QklUX0tIUiAweDAwMDAwMDA0CisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJ
VF9LSFIgMHgwMDAwMDAwOAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1NIVUZGTEVfQklU
X0tIUiAweDAwMDAwMDEwCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9SRUxB
VElWRV9CSVRfS0hSIDB4MDAwMDAwMjAKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9DTFVT
VEVSRURfQklUX0tIUiAweDAwMDAwMDQwCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfUVVB
RF9CSVRfS0hSICAweDAwMDAwMDgwCisjZW5kaWYgLyogR0xfS0hSX3NoYWRlcl9zdWJncm91cCAq
LworCiAjaWZuZGVmIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyCiAjZGVmaW5l
IEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIDEKICNkZWZpbmUgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfNHg0X0tIUiAgIDB4OTNCMApAQCAtODAxLDYgKzgxNywyMiBAQCBHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRGbG9hdGlfdk9FUyAoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4LCBHTGZsbwogI2RlZmluZSBHTF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQ
SEFfQU1EIDB4ODdFRQogI2VuZGlmIC8qIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlICov
CiAKKyNpZm5kZWYgR0xfQU1EX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlX2FkdmFuY2VkCisjZGVm
aW5lIEdMX0FNRF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZV9hZHZhbmNlZCAxCisjZGVmaW5lIEdM
X1JFTkRFUkJVRkZFUl9TVE9SQUdFX1NBTVBMRVNfQU1EIDB4OTFCMgorI2RlZmluZSBHTF9NQVhf
Q09MT1JfRlJBTUVCVUZGRVJfU0FNUExFU19BTUQgMHg5MUIzCisjZGVmaW5lIEdMX01BWF9DT0xP
Ul9GUkFNRUJVRkZFUl9TVE9SQUdFX1NBTVBMRVNfQU1EIDB4OTFCNAorI2RlZmluZSBHTF9NQVhf
REVQVEhfU1RFTkNJTF9GUkFNRUJVRkZFUl9TQU1QTEVTX0FNRCAweDkxQjUKKyNkZWZpbmUgR0xf
TlVNX1NVUFBPUlRFRF9NVUxUSVNBTVBMRV9NT0RFU19BTUQgMHg5MUI2CisjZGVmaW5lIEdMX1NV
UFBPUlRFRF9NVUxUSVNBTVBMRV9NT0RFU19BTUQgMHg5MUI3Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUFEVkFOQ0VEQU1EUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xzaXplaSBzdG9yYWdlU2FtcGxl
cywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE5BTUVEUkVOREVSQlVGRkVSU1RPUkFH
RU1VTFRJU0FNUExFQURWQU5DRURBTURQUk9DKSAoR0x1aW50IHJlbmRlcmJ1ZmZlciwgR0xzaXpl
aSBzYW1wbGVzLCBHTHNpemVpIHN0b3JhZ2VTYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZ
UEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVBZHZhbmNlZEFNRCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTHNp
emVpIHN0b3JhZ2VTYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE5hbWVkUmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQWR2YW5jZWRBTUQgKEdMdWludCByZW5kZXJidWZm
ZXIsIEdMc2l6ZWkgc2FtcGxlcywgR0xzaXplaSBzdG9yYWdlU2FtcGxlcywgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisjZW5kaWYKKyNlbmRp
ZiAvKiBHTF9BTURfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGVfYWR2YW5jZWQgKi8KKwogI2lmbmRl
ZiBHTF9BTURfcGVyZm9ybWFuY2VfbW9uaXRvcgogI2RlZmluZSBHTF9BTURfcGVyZm9ybWFuY2Vf
bW9uaXRvciAxCiAjZGVmaW5lIEdMX0NPVU5URVJfVFlQRV9BTUQgICAgICAgICAgICAgICAweDhC
QzAKQEAgLTkxNCw5ICs5NDYsOSBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgKEdMdWludCBpbmRleCwgR0x1aW50IGRpdgogI2lmbmRlZiBH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKICNkZWZpbmUgR0xfQU5HTEVfdHJhbnNs
YXRlZF9zaGFkZXJfc291cmNlIDEKICNkZWZpbmUgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNF
X0xFTkdUSF9BTkdMRSAweDkzQTAKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VFJBTlNMQVRFRFNIQURFUlNPVVJDRUFOR0xFUFJPQykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkg
YnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRSQU5TTEFURURTSEFERVJTT1VSQ0VBTkdMRVBST0MpIChH
THVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpz
b3VyY2UpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSAoR0x1aW50IHNoYWRlciwg
R0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqc291cmNlKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSAo
R0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAq
c291cmNlKTsKICNlbmRpZgogI2VuZGlmIC8qIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3Nv
dXJjZSAqLwogCkBAIC05OTQsNyArMTAyNiw3IEBAIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMREVMRVRFU1lOQ0FQUExFUFJPQykgKEdMc3luYyBzeW5jKTsKIHR5cGVkZWYgR0xlbnVt
IChHTF9BUElFTlRSWVAgUEZOR0xDTElFTlRXQUlUU1lOQ0FQUExFUFJPQykgKEdMc3luYyBzeW5j
LCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMV0FJVFNZTkNBUFBMRVBST0MpIChHTHN5bmMgc3luYywgR0xiaXRmaWVs
ZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVElOVEVHRVI2NFZBUFBMRVBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFt
cyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNZTkNJVkFQUExFUFJPQykg
KEdMc3luYyBzeW5jLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBHTGludCAqdmFsdWVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
U1lOQ0lWQVBQTEVQUk9DKSAoR0xzeW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBjb3Vu
dCwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqdmFsdWVzKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9U
T1RZUEVTCiBHTF9BUElDQUxMIEdMc3luYyBHTF9BUElFTlRSWSBnbEZlbmNlU3luY0FQUExFIChH
TGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKTsKIEdMX0FQSUNBTEwgR0xib29sZWFu
IEdMX0FQSUVOVFJZIGdsSXNTeW5jQVBQTEUgKEdMc3luYyBzeW5jKTsKQEAgLTEwMDIsNyArMTAz
NCw3IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVN5bmNBUFBMRSAoR0xz
eW5jIHN5bmMpOwogR0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJRU5UUlkgZ2xDbGllbnRXYWl0U3lu
Y0FQUExFIChHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7
CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xXYWl0U3luY0FQUExFIChHTHN5bmMgc3lu
YywgR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7CiBHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyNjR2QVBQTEUgKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAq
cGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFN5bmNpdkFQUExFIChH
THN5bmMgc3luYywgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xpbnQgKnZhbHVlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTeW5j
aXZBUFBMRSAoR0xzeW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBjb3VudCwgR0xzaXpl
aSAqbGVuZ3RoLCBHTGludCAqdmFsdWVzKTsKICNlbmRpZgogI2VuZGlmIC8qIEdMX0FQUExFX3N5
bmMgKi8KIApAQCAtMTA0OSw2ICsxMDgxLDExIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldFN5bmNpdkFQUExFIChHTHN5bmMgc3luYywgR0xlbnVtIHBuYW1lLCBHTHNpemVpCiAj
ZGVmaW5lIEdMX0FSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2hfZGVwdGhfc3RlbmNpbCAxCiAj
ZW5kaWYgLyogR0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaF9kZXB0aF9zdGVuY2lsICov
CiAKKyNpZm5kZWYgR0xfQVJNX3RleHR1cmVfdW5ub3JtYWxpemVkX2Nvb3JkaW5hdGVzCisjZGVm
aW5lIEdMX0FSTV90ZXh0dXJlX3Vubm9ybWFsaXplZF9jb29yZGluYXRlcyAxCisjZGVmaW5lIEdM
X1RFWFRVUkVfVU5OT1JNQUxJWkVEX0NPT1JESU5BVEVTX0FSTSAweDhGNkEKKyNlbmRpZiAvKiBH
TF9BUk1fdGV4dHVyZV91bm5vcm1hbGl6ZWRfY29vcmRpbmF0ZXMgKi8KKwogI2lmbmRlZiBHTF9E
TVBfcHJvZ3JhbV9iaW5hcnkKICNkZWZpbmUgR0xfRE1QX3Byb2dyYW1fYmluYXJ5IDEKICNkZWZp
bmUgR0xfU01BUEhTMzBfUFJPR1JBTV9CSU5BUllfRE1QICAgIDB4OTI1MQpAQCAtMTIzMCw2ICsx
MjY3LDExIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBvcEdyb3VwTWFya2VyRVhU
ICh2b2lkKTsKICNlbmRpZgogI2VuZGlmIC8qIEdMX0VYVF9kZWJ1Z19tYXJrZXIgKi8KIAorI2lm
bmRlZiBHTF9FWFRfZGVwdGhfY2xhbXAKKyNkZWZpbmUgR0xfRVhUX2RlcHRoX2NsYW1wIDEKKyNk
ZWZpbmUgR0xfREVQVEhfQ0xBTVBfRVhUICAgICAgICAgICAgICAgIDB4ODY0RgorI2VuZGlmIC8q
IEdMX0VYVF9kZXB0aF9jbGFtcCAqLworCiAjaWZuZGVmIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVm
ZmVyCiAjZGVmaW5lIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIDEKICNkZWZpbmUgR0xfQ09M
T1JfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4MTgwMApAQCAtMTI2MSw2ICsxMzAzLDcgQEAg
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9CSkVDVElWRVhUUFJPQykg
KEdMdWludCBpZCwgR0xlbnVtIHBuYW0KIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VUUVVFUllPQkpFQ1RVSVZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWlu
dCAqcGFyYW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUVVFUllPQkpF
Q1RJNjRWRVhUUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMp
OwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9CSkVDVFVJNjRWRVhU
UFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUjY0VkVYVFBST0MpIChHTGVudW0g
cG5hbWUsIEdMaW50NjQgKmRhdGEpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdlblF1ZXJpZXNFWFQgKEdMc2l6ZWkgbiwgR0x1aW50
ICppZHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUXVlcmllc0VYVCAo
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7CkBAIC0xMjczLDYgKzEzMTYsNyBAQCBHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdGl2RVhUIChHTHVpbnQgaWQs
IEdMZW51bSBwbmFtZSwgR0xpbgogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UXVl
cnlPYmplY3R1aXZFWFQgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7
CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQgKEdM
dWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVCAoR0x1aW50IGlkLCBHTGVudW0g
cG5hbWUsIEdMdWludDY0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
R2V0SW50ZWdlcjY0dkVYVCAoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRhKTsKICNlbmRpZgog
I2VuZGlmIC8qIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSAqLwogCkBAIC0xNTk3LDYgKzE2
NDEsMTggQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZWdlcmlfdkVYVCAo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGkKICNlbmRpZgogI2VuZGlmIC8qIEdMX0VY
VF9tdWx0aXZpZXdfZHJhd19idWZmZXJzICovCiAKKyNpZm5kZWYgR0xfRVhUX211bHRpdmlld190
ZXNzZWxsYXRpb25fZ2VvbWV0cnlfc2hhZGVyCisjZGVmaW5lIEdMX0VYVF9tdWx0aXZpZXdfdGVz
c2VsbGF0aW9uX2dlb21ldHJ5X3NoYWRlciAxCisjZW5kaWYgLyogR0xfRVhUX211bHRpdmlld190
ZXNzZWxsYXRpb25fZ2VvbWV0cnlfc2hhZGVyICovCisKKyNpZm5kZWYgR0xfRVhUX211bHRpdmll
d190ZXh0dXJlX211bHRpc2FtcGxlCisjZGVmaW5lIEdMX0VYVF9tdWx0aXZpZXdfdGV4dHVyZV9t
dWx0aXNhbXBsZSAxCisjZW5kaWYgLyogR0xfRVhUX211bHRpdmlld190ZXh0dXJlX211bHRpc2Ft
cGxlICovCisKKyNpZm5kZWYgR0xfRVhUX211bHRpdmlld190aW1lcl9xdWVyeQorI2RlZmluZSBH
TF9FWFRfbXVsdGl2aWV3X3RpbWVyX3F1ZXJ5IDEKKyNlbmRpZiAvKiBHTF9FWFRfbXVsdGl2aWV3
X3RpbWVyX3F1ZXJ5ICovCisKICNpZm5kZWYgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFu
CiAjZGVmaW5lIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiAxCiAjZGVmaW5lIEdMX0FO
WV9TQU1QTEVTX1BBU1NFRF9FWFQgICAgICAgICAweDhDMkYKQEAgLTIxMzgsNiArMjE5NCwxMCBA
QCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhCdWZmZXJSYW5nZUVYVCAoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGludGVybmFsZgogI2RlZmluZSBHTF9SR0IxNl9TTk9STV9FWFQgICAg
ICAgICAgICAgICAgMHg4RjlBCiAjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfbm9ybTE2ICovCiAK
KyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfcXVlcnlfbG9kCisjZGVmaW5lIEdMX0VYVF90ZXh0dXJl
X3F1ZXJ5X2xvZCAxCisjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfcXVlcnlfbG9kICovCisKICNp
Zm5kZWYgR0xfRVhUX3RleHR1cmVfcmcKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfcmcgMQogI2Rl
ZmluZSBHTF9SRURfRVhUICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTAzCkBAIC0yMTYzLDYg
KzIyMjMsMTAgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4QnVmZmVyUmFuZ2VF
WFQgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGYKICNkZWZpbmUgR0xfU0tJUF9ERUNP
REVfRVhUICAgICAgICAgICAgICAgIDB4OEE0QQogI2VuZGlmIC8qIEdMX0VYVF90ZXh0dXJlX3NS
R0JfZGVjb2RlICovCiAKKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfc2hhZG93X2xvZAorI2RlZmlu
ZSBHTF9FWFRfdGV4dHVyZV9zaGFkb3dfbG9kIDEKKyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9z
aGFkb3dfbG9kICovCisKICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfc3RvcmFnZQogI2RlZmluZSBH
TF9FWFRfdGV4dHVyZV9zdG9yYWdlIDEKICNkZWZpbmUgR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9S
TUFUX0VYVCAgIDB4OTEyRgpAQCAtMjM5NSw2ICsyNDU5LDE3IEBAIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFBlcmZRdWVyeUluZm9JTlRFTCAoR0x1aW50IHF1ZXJ5SWQsIEdMdWlu
dCBxdWVyCiAjZW5kaWYKICNlbmRpZiAvKiBHTF9JTlRFTF9wZXJmb3JtYW5jZV9xdWVyeSAqLwog
CisjaWZuZGVmIEdMX01FU0FfZnJhbWVidWZmZXJfZmxpcF95CisjZGVmaW5lIEdMX01FU0FfZnJh
bWVidWZmZXJfZmxpcF95IDEKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfRkxJUF9ZX01FU0EgICAg
ICAgIDB4OEJCQgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlBB
UkFNRVRFUklNRVNBUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFNRUJVRkZFUlBBUkFN
RVRFUklWTUVTQVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaU1FU0EgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdk1FU0EgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9NRVNBX2ZyYW1lYnVmZmVyX2ZsaXBf
eSAqLworCiAjaWZuZGVmIEdMX01FU0FfcHJvZ3JhbV9iaW5hcnlfZm9ybWF0cwogI2RlZmluZSBH
TF9NRVNBX3Byb2dyYW1fYmluYXJ5X2Zvcm1hdHMgMQogI2RlZmluZSBHTF9QUk9HUkFNX0JJTkFS
WV9GT1JNQVRfTUVTQSAgICAgMHg4NzVGCkBAIC0yNTIxLDYgKzI1OTYsMTAgQEAgR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsVmlld3BvcnRQb3NpdGlvbldTY2FsZU5WIChHTHVpbnQgaW5k
ZXgsIEdMZmxvYXQgeGMKICNlbmRpZgogI2VuZGlmIC8qIEdMX05WX2NsaXBfc3BhY2Vfd19zY2Fs
aW5nICovCiAKKyNpZm5kZWYgR0xfTlZfY29tcHV0ZV9zaGFkZXJfZGVyaXZhdGl2ZXMKKyNkZWZp
bmUgR0xfTlZfY29tcHV0ZV9zaGFkZXJfZGVyaXZhdGl2ZXMgMQorI2VuZGlmIC8qIEdMX05WX2Nv
bXB1dGVfc2hhZGVyX2Rlcml2YXRpdmVzICovCisKICNpZm5kZWYgR0xfTlZfY29uZGl0aW9uYWxf
cmVuZGVyCiAjZGVmaW5lIEdMX05WX2NvbmRpdGlvbmFsX3JlbmRlciAxCiAjZGVmaW5lIEdMX1FV
RVJZX1dBSVRfTlYgICAgICAgICAgICAgICAgICAweDhFMTMKQEAgLTI3MTIsNiArMjc5MSwxMCBA
QCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFnbWVudENvdmVyYWdlQ29sb3JOViAo
R0x1aW50IGNvbG9yKTsKICNlbmRpZgogI2VuZGlmIC8qIEdMX05WX2ZyYWdtZW50X2NvdmVyYWdl
X3RvX2NvbG9yICovCiAKKyNpZm5kZWYgR0xfTlZfZnJhZ21lbnRfc2hhZGVyX2JhcnljZW50cmlj
CisjZGVmaW5lIEdMX05WX2ZyYWdtZW50X3NoYWRlcl9iYXJ5Y2VudHJpYyAxCisjZW5kaWYgLyog
R0xfTlZfZnJhZ21lbnRfc2hhZGVyX2JhcnljZW50cmljICovCisKICNpZm5kZWYgR0xfTlZfZnJh
Z21lbnRfc2hhZGVyX2ludGVybG9jawogI2RlZmluZSBHTF9OVl9mcmFnbWVudF9zaGFkZXJfaW50
ZXJsb2NrIDEKICNlbmRpZiAvKiBHTF9OVl9mcmFnbWVudF9zaGFkZXJfaW50ZXJsb2NrICovCkBA
IC0yNzM5LDExICsyODIyLDExIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsaXRG
cmFtZWJ1ZmZlck5WIChHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50CiAjZGVmaW5lIEdM
X0NPVkVSQUdFX01PRFVMQVRJT05fTlYgICAgICAgICAweDkzMzIKICNkZWZpbmUgR0xfQ09WRVJB
R0VfTU9EVUxBVElPTl9UQUJMRV9TSVpFX05WIDB4OTMzMwogdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xDT1ZFUkFHRU1PRFVMQVRJT05UQUJMRU5WUFJPQykgKEdMc2l6ZWkgbiwgY29u
c3QgR0xmbG9hdCAqdik7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVENPVkVS
QUdFTU9EVUxBVElPTlRBQkxFTlZQUk9DKSAoR0xzaXplaSBidWZzaXplLCBHTGZsb2F0ICp2KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQ09WRVJBR0VNT0RVTEFUSU9OVEFC
TEVOVlBST0MpIChHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQgKnYpOwogdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xDT1ZFUkFHRU1PRFVMQVRJT05OVlBST0MpIChHTGVudW0gY29tcG9u
ZW50cyk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsQ292ZXJhZ2VNb2R1bGF0aW9uVGFibGVOViAoR0xzaXplaSBuLCBjb25zdCBHTGZs
b2F0ICp2KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldENvdmVyYWdlTW9kdWxh
dGlvblRhYmxlTlYgKEdMc2l6ZWkgYnVmc2l6ZSwgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRDb3ZlcmFnZU1vZHVsYXRpb25UYWJsZU5WIChHTHNpemVpIGJ1
ZlNpemUsIEdMZmxvYXQgKnYpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJh
Z2VNb2R1bGF0aW9uTlYgKEdMZW51bSBjb21wb25lbnRzKTsKICNlbmRpZgogI2VuZGlmIC8qIEdM
X05WX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMgKi8KQEAgLTI4OTEsMTIgKzI5NzQsMTAyIEBA
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkRpdmlzb3JOViAoR0x1
aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvCiAjZGVmaW5lIEdMX1NVUEVSU0FNUExFX1NDQUxFX1hf
TlYgICAgICAgICAweDkzNzIKICNkZWZpbmUgR0xfU1VQRVJTQU1QTEVfU0NBTEVfWV9OViAgICAg
ICAgIDB4OTM3MwogI2RlZmluZSBHTF9DT05GT1JNQU5UX05WICAgICAgICAgICAgICAgICAgMHg5
Mzc0Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVElOVEVSTkFMRk9STUFUU0FN
UExFSVZOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgc2FtcGxlcywgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRJTlRFUk5BTEZPUk1BVFNBTVBM
RUlWTlZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVp
IHNhbXBsZXMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBjb3VudCwgR0xpbnQgKnBhcmFtcyk7CiAj
aWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
R2V0SW50ZXJuYWxmb3JtYXRTYW1wbGVpdk5WIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUs
IEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZXJu
YWxmb3JtYXRTYW1wbGVpdk5WIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGNvdW50LCBHTGludCAqcGFy
YW1zKTsKICNlbmRpZgogI2VuZGlmIC8qIEdMX05WX2ludGVybmFsZm9ybWF0X3NhbXBsZV9xdWVy
eSAqLwogCisjaWZuZGVmIEdMX05WX21lbW9yeV9hdHRhY2htZW50CisjZGVmaW5lIEdMX05WX21l
bW9yeV9hdHRhY2htZW50IDEKKyNkZWZpbmUgR0xfQVRUQUNIRURfTUVNT1JZX09CSkVDVF9OViAg
ICAgIDB4OTVBNAorI2RlZmluZSBHTF9BVFRBQ0hFRF9NRU1PUllfT0ZGU0VUX05WICAgICAgMHg5
NUE1CisjZGVmaW5lIEdMX01FTU9SWV9BVFRBQ0hBQkxFX0FMSUdOTUVOVF9OViAweDk1QTYKKyNk
ZWZpbmUgR0xfTUVNT1JZX0FUVEFDSEFCTEVfU0laRV9OViAgICAgIDB4OTVBNworI2RlZmluZSBH
TF9NRU1PUllfQVRUQUNIQUJMRV9OViAgICAgICAgICAgMHg5NUE4CisjZGVmaW5lIEdMX0RFVEFD
SEVEX01FTU9SWV9JTkNBUk5BVElPTl9OViAweDk1QTkKKyNkZWZpbmUgR0xfREVUQUNIRURfVEVY
VFVSRVNfTlYgICAgICAgICAgIDB4OTVBQQorI2RlZmluZSBHTF9ERVRBQ0hFRF9CVUZGRVJTX05W
ICAgICAgICAgICAgMHg5NUFCCisjZGVmaW5lIEdMX01BWF9ERVRBQ0hFRF9URVhUVVJFU19OViAg
ICAgICAweDk1QUMKKyNkZWZpbmUgR0xfTUFYX0RFVEFDSEVEX0JVRkZFUlNfTlYgICAgICAgIDB4
OTVBRAordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRNRU1PUllPQkpFQ1RERVRB
Q0hFRFJFU09VUkNFU1VJVk5WUFJPQykgKEdMdWludCBtZW1vcnksIEdMZW51bSBwbmFtZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUkVTRVRNRU1PUllPQkpFQ1RQQVJBTUVURVJOVlBST0MpIChHTHVp
bnQgbWVtb3J5LCBHTGVudW0gcG5hbWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xURVhBVFRBQ0hNRU1PUllOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgbWVtb3J5LCBH
THVpbnQ2NCBvZmZzZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCVUZGRVJB
VFRBQ0hNRU1PUllOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2
NCBvZmZzZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhUVVJFQVRUQUNI
TUVNT1JZTlZQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMdWludCBtZW1vcnksIEdMdWludDY0IG9m
ZnNldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE5BTUVEQlVGRkVSQVRUQUNI
TUVNT1JZTlZQUk9DKSAoR0x1aW50IGJ1ZmZlciwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQgb2Zm
c2V0KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRNZW1vcnlPYmplY3REZXRhY2hlZFJlc291cmNlc3Vpdk5WIChHTHVpbnQgbWVt
b3J5LCBHTGVudW0gcG5hbWUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZXNldE1lbW9yeU9iamVjdFBh
cmFtZXRlck5WIChHTHVpbnQgbWVtb3J5LCBHTGVudW0gcG5hbWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVGV4QXR0YWNoTWVtb3J5TlYgKEdMZW51bSB0YXJnZXQsIEdMdWludCBt
ZW1vcnksIEdMdWludDY0IG9mZnNldCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xC
dWZmZXJBdHRhY2hNZW1vcnlOViAoR0xlbnVtIHRhcmdldCwgR0x1aW50IG1lbW9yeSwgR0x1aW50
NjQgb2Zmc2V0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleHR1cmVBdHRhY2hN
ZW1vcnlOViAoR0x1aW50IHRleHR1cmUsIEdMdWludCBtZW1vcnksIEdMdWludDY0IG9mZnNldCk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xOYW1lZEJ1ZmZlckF0dGFjaE1lbW9yeU5W
IChHTHVpbnQgYnVmZmVyLCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBvZmZzZXQpOworI2VuZGlm
CisjZW5kaWYgLyogR0xfTlZfbWVtb3J5X2F0dGFjaG1lbnQgKi8KKworI2lmbmRlZiBHTF9OVl9t
ZXNoX3NoYWRlcgorI2RlZmluZSBHTF9OVl9tZXNoX3NoYWRlciAxCisjZGVmaW5lIEdMX01FU0hf
U0hBREVSX05WICAgICAgICAgICAgICAgICAweDk1NTkKKyNkZWZpbmUgR0xfVEFTS19TSEFERVJf
TlYgICAgICAgICAgICAgICAgIDB4OTU1QQorI2RlZmluZSBHTF9NQVhfTUVTSF9VTklGT1JNX0JM
T0NLU19OViAgICAgMHg4RTYwCisjZGVmaW5lIEdMX01BWF9NRVNIX1RFWFRVUkVfSU1BR0VfVU5J
VFNfTlYgMHg4RTYxCisjZGVmaW5lIEdMX01BWF9NRVNIX0lNQUdFX1VOSUZPUk1TX05WICAgICAw
eDhFNjIKKyNkZWZpbmUgR0xfTUFYX01FU0hfVU5JRk9STV9DT01QT05FTlRTX05WIDB4OEU2Mwor
I2RlZmluZSBHTF9NQVhfTUVTSF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTX05WIDB4OEU2NAorI2Rl
ZmluZSBHTF9NQVhfTUVTSF9BVE9NSUNfQ09VTlRFUlNfTlYgICAgMHg4RTY1CisjZGVmaW5lIEdM
X01BWF9NRVNIX1NIQURFUl9TVE9SQUdFX0JMT0NLU19OViAweDhFNjYKKyNkZWZpbmUgR0xfTUFY
X0NPTUJJTkVEX01FU0hfVU5JRk9STV9DT01QT05FTlRTX05WIDB4OEU2NworI2RlZmluZSBHTF9N
QVhfVEFTS19VTklGT1JNX0JMT0NLU19OViAgICAgMHg4RTY4CisjZGVmaW5lIEdMX01BWF9UQVNL
X1RFWFRVUkVfSU1BR0VfVU5JVFNfTlYgMHg4RTY5CisjZGVmaW5lIEdMX01BWF9UQVNLX0lNQUdF
X1VOSUZPUk1TX05WICAgICAweDhFNkEKKyNkZWZpbmUgR0xfTUFYX1RBU0tfVU5JRk9STV9DT01Q
T05FTlRTX05WIDB4OEU2QgorI2RlZmluZSBHTF9NQVhfVEFTS19BVE9NSUNfQ09VTlRFUl9CVUZG
RVJTX05WIDB4OEU2QworI2RlZmluZSBHTF9NQVhfVEFTS19BVE9NSUNfQ09VTlRFUlNfTlYgICAg
MHg4RTZECisjZGVmaW5lIEdMX01BWF9UQVNLX1NIQURFUl9TVE9SQUdFX0JMT0NLU19OViAweDhF
NkUKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1RBU0tfVU5JRk9STV9DT01QT05FTlRTX05WIDB4
OEU2RgorI2RlZmluZSBHTF9NQVhfTUVTSF9XT1JLX0dST1VQX0lOVk9DQVRJT05TX05WIDB4OTVB
MgorI2RlZmluZSBHTF9NQVhfVEFTS19XT1JLX0dST1VQX0lOVk9DQVRJT05TX05WIDB4OTVBMwor
I2RlZmluZSBHTF9NQVhfTUVTSF9UT1RBTF9NRU1PUllfU0laRV9OViAgMHg5NTM2CisjZGVmaW5l
IEdMX01BWF9UQVNLX1RPVEFMX01FTU9SWV9TSVpFX05WICAweDk1MzcKKyNkZWZpbmUgR0xfTUFY
X01FU0hfT1VUUFVUX1ZFUlRJQ0VTX05WICAgIDB4OTUzOAorI2RlZmluZSBHTF9NQVhfTUVTSF9P
VVRQVVRfUFJJTUlUSVZFU19OViAgMHg5NTM5CisjZGVmaW5lIEdMX01BWF9UQVNLX09VVFBVVF9D
T1VOVF9OViAgICAgICAweDk1M0EKKyNkZWZpbmUgR0xfTUFYX0RSQVdfTUVTSF9UQVNLU19DT1VO
VF9OViAgIDB4OTUzRAorI2RlZmluZSBHTF9NQVhfTUVTSF9WSUVXU19OViAgICAgICAgICAgICAg
MHg5NTU3CisjZGVmaW5lIEdMX01FU0hfT1VUUFVUX1BFUl9WRVJURVhfR1JBTlVMQVJJVFlfTlYg
MHg5MkRGCisjZGVmaW5lIEdMX01FU0hfT1VUUFVUX1BFUl9QUklNSVRJVkVfR1JBTlVMQVJJVFlf
TlYgMHg5NTQzCisjZGVmaW5lIEdMX01BWF9NRVNIX1dPUktfR1JPVVBfU0laRV9OViAgICAweDk1
M0IKKyNkZWZpbmUgR0xfTUFYX1RBU0tfV09SS19HUk9VUF9TSVpFX05WICAgIDB4OTUzQworI2Rl
ZmluZSBHTF9NRVNIX1dPUktfR1JPVVBfU0laRV9OViAgICAgICAgMHg5NTNFCisjZGVmaW5lIEdM
X1RBU0tfV09SS19HUk9VUF9TSVpFX05WICAgICAgICAweDk1M0YKKyNkZWZpbmUgR0xfTUVTSF9W
RVJUSUNFU19PVVRfTlYgICAgICAgICAgIDB4OTU3OQorI2RlZmluZSBHTF9NRVNIX1BSSU1JVElW
RVNfT1VUX05WICAgICAgICAgMHg5NTdBCisjZGVmaW5lIEdMX01FU0hfT1VUUFVUX1RZUEVfTlYg
ICAgICAgICAgICAweDk1N0IKKyNkZWZpbmUgR0xfVU5JRk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZ
X01FU0hfU0hBREVSX05WIDB4OTU5QworI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5D
RURfQllfVEFTS19TSEFERVJfTlYgMHg5NTlECisjZGVmaW5lIEdMX1JFRkVSRU5DRURfQllfTUVT
SF9TSEFERVJfTlYgICAweDk1QTAKKyNkZWZpbmUgR0xfUkVGRVJFTkNFRF9CWV9UQVNLX1NIQURF
Ul9OViAgIDB4OTVBMQorI2RlZmluZSBHTF9NRVNIX1NIQURFUl9CSVRfTlYgICAgICAgICAgICAg
MHgwMDAwMDA0MAorI2RlZmluZSBHTF9UQVNLX1NIQURFUl9CSVRfTlYgICAgICAgICAgICAgMHgw
MDAwMDA4MAorI2RlZmluZSBHTF9NRVNIX1NVQlJPVVRJTkVfTlYgICAgICAgICAgICAgMHg5NTdD
CisjZGVmaW5lIEdMX1RBU0tfU1VCUk9VVElORV9OViAgICAgICAgICAgICAweDk1N0QKKyNkZWZp
bmUgR0xfTUVTSF9TVUJST1VUSU5FX1VOSUZPUk1fTlYgICAgIDB4OTU3RQorI2RlZmluZSBHTF9U
QVNLX1NVQlJPVVRJTkVfVU5JRk9STV9OViAgICAgMHg5NTdGCisjZGVmaW5lIEdMX0FUT01JQ19D
T1VOVEVSX0JVRkZFUl9SRUZFUkVOQ0VEX0JZX01FU0hfU0hBREVSX05WIDB4OTU5RQorI2RlZmlu
ZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfUkVGRVJFTkNFRF9CWV9UQVNLX1NIQURFUl9OViAw
eDk1OUYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV01FU0hUQVNLU05WUFJP
QykgKEdMdWludCBmaXJzdCwgR0x1aW50IGNvdW50KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMRFJBV01FU0hUQVNLU0lORElSRUNUTlZQUk9DKSAoR0xpbnRwdHIgaW5kaXJlY3Qp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdNRVNIVEFTS1NJTkRJ
UkVDVE5WUFJPQykgKEdMaW50cHRyIGluZGlyZWN0LCBHTHNpemVpIGRyYXdjb3VudCwgR0xzaXpl
aSBzdHJpZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdNRVNI
VEFTS1NJTkRJUkVDVENPVU5UTlZQUk9DKSAoR0xpbnRwdHIgaW5kaXJlY3QsIEdMaW50cHRyIGRy
YXdjb3VudCwgR0xzaXplaSBtYXhkcmF3Y291bnQsIEdMc2l6ZWkgc3RyaWRlKTsKKyNpZmRlZiBH
TF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3TWVz
aFRhc2tzTlYgKEdMdWludCBmaXJzdCwgR0x1aW50IGNvdW50KTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbERyYXdNZXNoVGFza3NJbmRpcmVjdE5WIChHTGludHB0ciBpbmRpcmVjdCk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xNdWx0aURyYXdNZXNoVGFza3NJbmRpcmVj
dE5WIChHTGludHB0ciBpbmRpcmVjdCwgR0xzaXplaSBkcmF3Y291bnQsIEdMc2l6ZWkgc3RyaWRl
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJhd01lc2hUYXNrc0luZGly
ZWN0Q291bnROViAoR0xpbnRwdHIgaW5kaXJlY3QsIEdMaW50cHRyIGRyYXdjb3VudCwgR0xzaXpl
aSBtYXhkcmF3Y291bnQsIEdMc2l6ZWkgc3RyaWRlKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX05W
X21lc2hfc2hhZGVyICovCisKICNpZm5kZWYgR0xfTlZfbm9uX3NxdWFyZV9tYXRyaWNlcwogI2Rl
ZmluZSBHTF9OVl9ub25fc3F1YXJlX21hdHJpY2VzIDEKICNkZWZpbmUgR0xfRkxPQVRfTUFUMngz
X05WICAgICAgICAgICAgICAgIDB4OEI2NQpAQCAtMzEzMyw3ICszMzA2LDcgQEAgdHlwZWRlZiBH
TGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhHTFlQSElOREVYUkFOR0VOVlBST0MpIChHTGVu
dW0gZm9udFRhcmdldCwKIHR5cGVkZWYgR0xlbnVtIChHTF9BUElFTlRSWVAgUEZOR0xQQVRIR0xZ
UEhJTkRFWEFSUkFZTlZQUk9DKSAoR0x1aW50IGZpcnN0UGF0aE5hbWUsIEdMZW51bSBmb250VGFy
Z2V0LCBjb25zdCB2b2lkICpmb250TmFtZSwgR0xiaXRmaWVsZCBmb250U3R5bGUsIEdMdWludCBm
aXJzdEdseXBoSW5kZXgsIEdMc2l6ZWkgbnVtR2x5cGhzLCBHTHVpbnQgcGF0aFBhcmFtZXRlclRl
bXBsYXRlLCBHTGZsb2F0IGVtU2NhbGUpOwogdHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQ
Rk5HTFBBVEhNRU1PUllHTFlQSElOREVYQVJSQVlOVlBST0MpIChHTHVpbnQgZmlyc3RQYXRoTmFt
ZSwgR0xlbnVtIGZvbnRUYXJnZXQsIEdMc2l6ZWlwdHIgZm9udFNpemUsIGNvbnN0IHZvaWQgKmZv
bnREYXRhLCBHTHNpemVpIGZhY2VJbmRleCwgR0x1aW50IGZpcnN0R2x5cGhJbmRleCwgR0xzaXpl
aSBudW1HbHlwaHMsIEdMdWludCBwYXRoUGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2Fs
ZSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJ
TlBVVEdFTk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xlbnVtIGdl
bk1vZGUsIEdMaW50IGNvbXBvbmVudHMsIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7Ci10eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1SRVNPVVJDRUZWTlZQUk9DKSAoR0x1
aW50IHByb2dyYW0sIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHTHVpbnQgaW5kZXgsIEdMc2l6
ZWkgcHJvcENvdW50LCBjb25zdCBHTGVudW0gKnByb3BzLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUUFJPR1JBTVJFU09VUkNFRlZOVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVt
IHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRleCwgR0xzaXplaSBwcm9wQ291bnQsIGNvbnN0
IEdMZW51bSAqcHJvcHMsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAq
cGFyYW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYRlJVU1RVTUVY
VFBST0MpIChHTGVudW0gbW9kZSwgR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsIEdMZG91
YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLCBHTGRvdWJsZSB6TmVhciwgR0xkb3VibGUgekZhcik7
CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1BVFJJWExPQURJREVOVElUWUVYVFBS
T0MpIChHTGVudW0gbW9kZSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1BVFJJ
WExPQURUUkFOU1BPU0VGRVhUUFJPQykgKEdMZW51bSBtb2RlLCBjb25zdCBHTGZsb2F0ICptKTsK
QEAgLTMyMTAsNyArMzM4Myw3IEBAIEdMX0FQSUNBTEwgR0xlbnVtIEdMX0FQSUVOVFJZIGdsUGF0
aEdseXBoSW5kZXhSYW5nZU5WIChHTGVudW0gZm9udFRhcmdldCwgY29uc3QKIEdMX0FQSUNBTEwg
R0xlbnVtIEdMX0FQSUVOVFJZIGdsUGF0aEdseXBoSW5kZXhBcnJheU5WIChHTHVpbnQgZmlyc3RQ
YXRoTmFtZSwgR0xlbnVtIGZvbnRUYXJnZXQsIGNvbnN0IHZvaWQgKmZvbnROYW1lLCBHTGJpdGZp
ZWxkIGZvbnRTdHlsZSwgR0x1aW50IGZpcnN0R2x5cGhJbmRleCwgR0xzaXplaSBudW1HbHlwaHMs
IEdMdWludCBwYXRoUGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2FsZSk7CiBHTF9BUElD
QUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbFBhdGhNZW1vcnlHbHlwaEluZGV4QXJyYXlOViAoR0x1
aW50IGZpcnN0UGF0aE5hbWUsIEdMZW51bSBmb250VGFyZ2V0LCBHTHNpemVpcHRyIGZvbnRTaXpl
LCBjb25zdCB2b2lkICpmb250RGF0YSwgR0xzaXplaSBmYWNlSW5kZXgsIEdMdWludCBmaXJzdEds
eXBoSW5kZXgsIEdMc2l6ZWkgbnVtR2x5cGhzLCBHTHVpbnQgcGF0aFBhcmFtZXRlclRlbXBsYXRl
LCBHTGZsb2F0IGVtU2NhbGUpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3Jh
bVBhdGhGcmFnbWVudElucHV0R2VuTlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xlbnVtIGdlbk1vZGUsIEdMaW50IGNvbXBvbmVudHMsIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7
Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUmVzb3VyY2Vmdk5WIChH
THVpbnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRleCwgR0xz
aXplaSBwcm9wQ291bnQsIGNvbnN0IEdMZW51bSAqcHJvcHMsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0UHJvZ3JhbVJlc291cmNlZnZOViAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgcHJvcENvdW50LCBjb25zdCBHTGVu
dW0gKnByb3BzLCBHTHNpemVpIGNvdW50LCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFt
cyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xNYXRyaXhGcnVzdHVtRVhUIChHTGVu
dW0gbW9kZSwgR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsIEdMZG91YmxlIGJvdHRvbSwg
R0xkb3VibGUgdG9wLCBHTGRvdWJsZSB6TmVhciwgR0xkb3VibGUgekZhcik7CiBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkSWRlbnRpdHlFWFQgKEdMZW51bSBtb2RlKTsK
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRUcmFuc3Bvc2VmRVhUIChH
TGVudW0gbW9kZSwgY29uc3QgR0xmbG9hdCAqbSk7CkBAIC0zMjg1LDYgKzM0NTgsMTEgQEAgR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZEJ1ZmZlck5WIChHTGVudW0gbW9kZSk7CiAj
ZGVmaW5lIEdMX05WX3JlYWRfc3RlbmNpbCAxCiAjZW5kaWYgLyogR0xfTlZfcmVhZF9zdGVuY2ls
ICovCiAKKyNpZm5kZWYgR0xfTlZfcmVwcmVzZW50YXRpdmVfZnJhZ21lbnRfdGVzdAorI2RlZmlu
ZSBHTF9OVl9yZXByZXNlbnRhdGl2ZV9mcmFnbWVudF90ZXN0IDEKKyNkZWZpbmUgR0xfUkVQUkVT
RU5UQVRJVkVfRlJBR01FTlRfVEVTVF9OViAweDkzN0YKKyNlbmRpZiAvKiBHTF9OVl9yZXByZXNl
bnRhdGl2ZV9mcmFnbWVudF90ZXN0ICovCisKICNpZm5kZWYgR0xfTlZfc1JHQl9mb3JtYXRzCiAj
ZGVmaW5lIEdMX05WX3NSR0JfZm9ybWF0cyAxCiAjZGVmaW5lIEdMX1NMVU1JTkFOQ0VfTlYgICAg
ICAgICAgICAgICAgICAweDhDNDYKQEAgLTMzMjMsNiArMzUwMSwxOCBAQCBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xSZXNvbHZlRGVwdGhWYWx1ZXNOViAodm9pZCk7CiAjZGVmaW5lIEdM
X05WX3NhbXBsZV9tYXNrX292ZXJyaWRlX2NvdmVyYWdlIDEKICNlbmRpZiAvKiBHTF9OVl9zYW1w
bGVfbWFza19vdmVycmlkZV9jb3ZlcmFnZSAqLwogCisjaWZuZGVmIEdMX05WX3NjaXNzb3JfZXhj
bHVzaXZlCisjZGVmaW5lIEdMX05WX3NjaXNzb3JfZXhjbHVzaXZlIDEKKyNkZWZpbmUgR0xfU0NJ
U1NPUl9URVNUX0VYQ0xVU0lWRV9OViAgICAgIDB4OTU1NQorI2RlZmluZSBHTF9TQ0lTU09SX0JP
WF9FWENMVVNJVkVfTlYgICAgICAgMHg5NTU2Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFNDSVNTT1JFWENMVVNJVkVOVlBST0MpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFND
SVNTT1JFWENMVVNJVkVBUlJBWVZOVlBST0MpIChHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xTY2lzc29yRXhjbHVzaXZlTlYgKEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFNjaXNzb3JFeGNsdXNpdmVBcnJheXZOViAoR0x1aW50IGZpcnN0LCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdik7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9OVl9zY2lzc29yX2V4
Y2x1c2l2ZSAqLworCiAjaWZuZGVmIEdMX05WX3NoYWRlcl9hdG9taWNfZnAxNl92ZWN0b3IKICNk
ZWZpbmUgR0xfTlZfc2hhZGVyX2F0b21pY19mcDE2X3ZlY3RvciAxCiAjZW5kaWYgLyogR0xfTlZf
c2hhZGVyX2F0b21pY19mcDE2X3ZlY3RvciAqLwpAQCAtMzMzMSw2ICszNTIxLDU2IEBAIEdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlc29sdmVEZXB0aFZhbHVlc05WICh2b2lkKTsKICNk
ZWZpbmUgR0xfTlZfc2hhZGVyX25vcGVyc3BlY3RpdmVfaW50ZXJwb2xhdGlvbiAxCiAjZW5kaWYg
LyogR0xfTlZfc2hhZGVyX25vcGVyc3BlY3RpdmVfaW50ZXJwb2xhdGlvbiAqLwogCisjaWZuZGVm
IEdMX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZAorI2RlZmluZSBHTF9OVl9zaGFkZXJf
c3ViZ3JvdXBfcGFydGl0aW9uZWQgMQorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1BBUlRJ
VElPTkVEX0JJVF9OViAweDAwMDAwMTAwCisjZW5kaWYgLyogR0xfTlZfc2hhZGVyX3N1Ymdyb3Vw
X3BhcnRpdGlvbmVkICovCisKKyNpZm5kZWYgR0xfTlZfc2hhZGVyX3RleHR1cmVfZm9vdHByaW50
CisjZGVmaW5lIEdMX05WX3NoYWRlcl90ZXh0dXJlX2Zvb3RwcmludCAxCisjZW5kaWYgLyogR0xf
TlZfc2hhZGVyX3RleHR1cmVfZm9vdHByaW50ICovCisKKyNpZm5kZWYgR0xfTlZfc2hhZGluZ19y
YXRlX2ltYWdlCisjZGVmaW5lIEdMX05WX3NoYWRpbmdfcmF0ZV9pbWFnZSAxCisjZGVmaW5lIEdM
X1NIQURJTkdfUkFURV9JTUFHRV9OViAgICAgICAgICAweDk1NjMKKyNkZWZpbmUgR0xfU0hBRElO
R19SQVRFX05PX0lOVk9DQVRJT05TX05WIDB4OTU2NAorI2RlZmluZSBHTF9TSEFESU5HX1JBVEVf
MV9JTlZPQ0FUSU9OX1BFUl9QSVhFTF9OViAweDk1NjUKKyNkZWZpbmUgR0xfU0hBRElOR19SQVRF
XzFfSU5WT0NBVElPTl9QRVJfMVgyX1BJWEVMU19OViAweDk1NjYKKyNkZWZpbmUgR0xfU0hBRElO
R19SQVRFXzFfSU5WT0NBVElPTl9QRVJfMlgxX1BJWEVMU19OViAweDk1NjcKKyNkZWZpbmUgR0xf
U0hBRElOR19SQVRFXzFfSU5WT0NBVElPTl9QRVJfMlgyX1BJWEVMU19OViAweDk1NjgKKyNkZWZp
bmUgR0xfU0hBRElOR19SQVRFXzFfSU5WT0NBVElPTl9QRVJfMlg0X1BJWEVMU19OViAweDk1NjkK
KyNkZWZpbmUgR0xfU0hBRElOR19SQVRFXzFfSU5WT0NBVElPTl9QRVJfNFgyX1BJWEVMU19OViAw
eDk1NkEKKyNkZWZpbmUgR0xfU0hBRElOR19SQVRFXzFfSU5WT0NBVElPTl9QRVJfNFg0X1BJWEVM
U19OViAweDk1NkIKKyNkZWZpbmUgR0xfU0hBRElOR19SQVRFXzJfSU5WT0NBVElPTlNfUEVSX1BJ
WEVMX05WIDB4OTU2QworI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfNF9JTlZPQ0FUSU9OU19QRVJf
UElYRUxfTlYgMHg5NTZECisjZGVmaW5lIEdMX1NIQURJTkdfUkFURV84X0lOVk9DQVRJT05TX1BF
Ul9QSVhFTF9OViAweDk1NkUKKyNkZWZpbmUgR0xfU0hBRElOR19SQVRFXzE2X0lOVk9DQVRJT05T
X1BFUl9QSVhFTF9OViAweDk1NkYKKyNkZWZpbmUgR0xfU0hBRElOR19SQVRFX0lNQUdFX0JJTkRJ
TkdfTlYgIDB4OTU1QgorI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfSU1BR0VfVEVYRUxfV0lEVEhf
TlYgMHg5NTVDCisjZGVmaW5lIEdMX1NIQURJTkdfUkFURV9JTUFHRV9URVhFTF9IRUlHSFRfTlYg
MHg5NTVECisjZGVmaW5lIEdMX1NIQURJTkdfUkFURV9JTUFHRV9QQUxFVFRFX1NJWkVfTlYgMHg5
NTVFCisjZGVmaW5lIEdMX01BWF9DT0FSU0VfRlJBR01FTlRfU0FNUExFU19OViAweDk1NUYKKyNk
ZWZpbmUgR0xfU0hBRElOR19SQVRFX1NBTVBMRV9PUkRFUl9ERUZBVUxUX05WIDB4OTVBRQorI2Rl
ZmluZSBHTF9TSEFESU5HX1JBVEVfU0FNUExFX09SREVSX1BJWEVMX01BSk9SX05WIDB4OTVBRgor
I2RlZmluZSBHTF9TSEFESU5HX1JBVEVfU0FNUExFX09SREVSX1NBTVBMRV9NQUpPUl9OViAweDk1
QjAKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklORFNIQURJTkdSQVRFSU1BR0VO
VlBST0MpIChHTHVpbnQgdGV4dHVyZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVFNIQURJTkdSQVRFSU1BR0VQQUxFVFRFTlZQUk9DKSAoR0x1aW50IHZpZXdwb3J0LCBHTHVp
bnQgZW50cnksIEdMZW51bSAqcmF0ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVFNIQURJTkdSQVRFU0FNUExFTE9DQVRJT05JVk5WUFJPQykgKEdMZW51bSByYXRlLCBHTHVp
bnQgc2FtcGxlcywgR0x1aW50IGluZGV4LCBHTGludCAqbG9jYXRpb24pOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xTSEFESU5HUkFURUlNQUdFQkFSUklFUk5WUFJPQykgKEdMYm9v
bGVhbiBzeW5jaHJvbml6ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNIQURJ
TkdSQVRFSU1BR0VQQUxFVFRFTlZQUk9DKSAoR0x1aW50IHZpZXdwb3J0LCBHTHVpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZW51bSAqcmF0ZXMpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xTSEFESU5HUkFURVNBTVBMRU9SREVSTlZQUk9DKSAoR0xlbnVtIG9yZGVy
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0hBRElOR1JBVEVTQU1QTEVPUkRF
UkNVU1RPTU5WUFJPQykgKEdMZW51bSByYXRlLCBHTHVpbnQgc2FtcGxlcywgY29uc3QgR0xpbnQg
KmxvY2F0aW9ucyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQmluZFNoYWRpbmdSYXRlSW1hZ2VOViAoR0x1aW50IHRleHR1cmUpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGluZ1JhdGVJbWFnZVBhbGV0dGVO
ViAoR0x1aW50IHZpZXdwb3J0LCBHTHVpbnQgZW50cnksIEdMZW51bSAqcmF0ZSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkaW5nUmF0ZVNhbXBsZUxvY2F0aW9uaXZOViAo
R0xlbnVtIHJhdGUsIEdMdWludCBzYW1wbGVzLCBHTHVpbnQgaW5kZXgsIEdMaW50ICpsb2NhdGlv
bik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTaGFkaW5nUmF0ZUltYWdlQmFycmll
ck5WIChHTGJvb2xlYW4gc3luY2hyb25pemUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsU2hhZGluZ1JhdGVJbWFnZVBhbGV0dGVOViAoR0x1aW50IHZpZXdwb3J0LCBHTHVpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZW51bSAqcmF0ZXMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsU2hhZGluZ1JhdGVTYW1wbGVPcmRlck5WIChHTGVudW0gb3JkZXIpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2hhZGluZ1JhdGVTYW1wbGVPcmRlckN1c3Rv
bU5WIChHTGVudW0gcmF0ZSwgR0x1aW50IHNhbXBsZXMsIGNvbnN0IEdMaW50ICpsb2NhdGlvbnMp
OworI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfc2hhZGluZ19yYXRlX2ltYWdlICovCisKICNpZm5k
ZWYgR0xfTlZfc2hhZG93X3NhbXBsZXJzX2FycmF5CiAjZGVmaW5lIEdMX05WX3NoYWRvd19zYW1w
bGVyc19hcnJheSAxCiAjZGVmaW5lIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XX05WICAgICAw
eDhEQzQKQEAgLTM0NDEsNiArMzY4MSwxMCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXNhbXBsZU11bHRpdmlld09WUiAoR0xlbnVtCiAjZW5k
aWYKICNlbmRpZiAvKiBHTF9PVlJfbXVsdGl2aWV3X211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4
dHVyZSAqLwogCisjaWZuZGVmIEdMX1FDT01fWVVWX3RleHR1cmVfZ2F0aGVyCisjZGVmaW5lIEdM
X1FDT01fWVVWX3RleHR1cmVfZ2F0aGVyIDEKKyNlbmRpZiAvKiBHTF9RQ09NX1lVVl90ZXh0dXJl
X2dhdGhlciAqLworCiAjaWZuZGVmIEdMX1FDT01fYWxwaGFfdGVzdAogI2RlZmluZSBHTF9RQ09N
X2FscGhhX3Rlc3QgMQogI2RlZmluZSBHTF9BTFBIQV9URVNUX1FDT00gICAgICAgICAgICAgICAg
MHgwQkMwCkBAIC0zNTQ3LDYgKzM3OTEsMTAgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRnJhbWVidWZmZXJGZXRjaEJhcnJpZXJRQ09NICh2b2lkKTsKICNlbmRpZgogI2VuZGlmIC8q
IEdMX1FDT01fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoX25vbmNvaGVyZW50ICovCiAKKyNpZm5k
ZWYgR0xfUUNPTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2hfcmF0ZQorI2RlZmluZSBHTF9RQ09N
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaF9yYXRlIDEKKyNlbmRpZiAvKiBHTF9RQ09NX3NoYWRl
cl9mcmFtZWJ1ZmZlcl9mZXRjaF9yYXRlICovCisKICNpZm5kZWYgR0xfUUNPTV90ZXh0dXJlX2Zv
dmVhdGVkCiAjZGVmaW5lIEdMX1FDT01fdGV4dHVyZV9mb3ZlYXRlZCAxCiAjZGVmaW5lIEdMX1RF
WFRVUkVfRk9WRUFURURfRkVBVFVSRV9CSVRTX1FDT00gMHg4QkZCCkBAIC0zNTYwLDYgKzM4MDgs
MTIgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4dHVyZUZvdmVhdGlvblBhcmFt
ZXRlcnNRQ09NIChHTHVpbnQgdGV4dHVyZSwgR0wKICNlbmRpZgogI2VuZGlmIC8qIEdMX1FDT01f
dGV4dHVyZV9mb3ZlYXRlZCAqLwogCisjaWZuZGVmIEdMX1FDT01fdGV4dHVyZV9mb3ZlYXRlZF9z
dWJzYW1wbGVkX2xheW91dAorI2RlZmluZSBHTF9RQ09NX3RleHR1cmVfZm92ZWF0ZWRfc3Vic2Ft
cGxlZF9sYXlvdXQgMQorI2RlZmluZSBHTF9GT1ZFQVRJT05fU1VCU0FNUExFRF9MQVlPVVRfTUVU
SE9EX0JJVF9RQ09NIDB4MDAwMDAwMDQKKyNkZWZpbmUgR0xfTUFYX1NIQURFUl9TVUJTQU1QTEVE
X0lNQUdFX1VOSVRTX1FDT00gMHg4RkExCisjZW5kaWYgLyogR0xfUUNPTV90ZXh0dXJlX2ZvdmVh
dGVkX3N1YnNhbXBsZWRfbGF5b3V0ICovCisKICNpZm5kZWYgR0xfUUNPTV90aWxlZF9yZW5kZXJp
bmcKICNkZWZpbmUgR0xfUUNPTV90aWxlZF9yZW5kZXJpbmcgMQogI2RlZmluZSBHTF9DT0xPUl9C
VUZGRVJfQklUMF9RQ09NICAgICAgICAgMHgwMDAwMDAwMQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHRfYW5nbGUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0X2FuZ2xlLmgKaW5kZXggNWM3ZWViNDhj
MTY1NzBjMWE4NjI2NzFjODgxMTEwYTUwNTJlNmJlNS4uYmM1NmMxNDlmYWY3ZTI4OTA0MTY3ZmFm
MzhjNmZiMWFkOTIxMjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTEVTMi9nbDJleHRfYW5nbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlL0dMRVMyL2dsMmV4dF9hbmdsZS5oCkBAIC03NSwyMzcgKzc1LDYgQEAgR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZElkZW50aXR5RVhUKEdMZW51bSBtYXRyaXhN
b2RlKTsKICNlbmRpZgogI2VuZGlmIC8qIEdMX0VYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzICovCiAK
LSNpZm5kZWYgR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKLSNkZWZpbmUgR0xfQ0hST01JVU1f
cGF0aF9yZW5kZXJpbmcgMQotI2RlZmluZSBHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSAweDE3
MDAKLSNkZWZpbmUgR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNIDB4MTcwMQotI2RlZmluZSBH
TF9DTE9TRV9QQVRIX0NIUk9NSVVNIDB4MDAKLSNkZWZpbmUgR0xfTU9WRV9UT19DSFJPTUlVTSAw
eDAyCi0jZGVmaW5lIEdMX0xJTkVfVE9fQ0hST01JVU0gMHgwNAotI2RlZmluZSBHTF9RVUFEUkFU
SUNfQ1VSVkVfVE9fQ0hST01JVU0gMHgwQQotI2RlZmluZSBHTF9DVUJJQ19DVVJWRV9UT19DSFJP
TUlVTSAweDBDCi0jZGVmaW5lIEdMX0NPTklDX0NVUlZFX1RPX0NIUk9NSVVNIDB4MUEKLSNkZWZp
bmUgR0xfUEFUSF9NT0RFTFZJRVdfTUFUUklYX0NIUk9NSVVNIDB4MEJBNgotI2RlZmluZSBHTF9Q
QVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNIDB4MEJBNwotI2RlZmluZSBHTF9QQVRIX1NU
Uk9LRV9XSURUSF9DSFJPTUlVTSAweDkwNzUKLSNkZWZpbmUgR0xfUEFUSF9FTkRfQ0FQU19DSFJP
TUlVTSAweDkwNzYKLSNkZWZpbmUgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNIDB4OTA3OQot
I2RlZmluZSBHTF9QQVRIX01JVEVSX0xJTUlUX0NIUk9NSVVNIDB4OTA3YQotI2RlZmluZSBHTF9Q
QVRIX1NUUk9LRV9CT1VORF9DSFJPTUlVTSAweDkwODYKLSNkZWZpbmUgR0xfRkxBVF9DSFJPTUlV
TSAweDFEMDAKLSNkZWZpbmUgR0xfU1FVQVJFX0NIUk9NSVVNIDB4OTBhMwotI2RlZmluZSBHTF9S
T1VORF9DSFJPTUlVTSAweDkwYTQKLSNkZWZpbmUgR0xfQkVWRUxfQ0hST01JVU0gMHg5MEE2Ci0j
ZGVmaW5lIEdMX01JVEVSX1JFVkVSVF9DSFJPTUlVTSAweDkwQTcKLSNkZWZpbmUgR0xfQ09VTlRf
VVBfQ0hST01JVU0gMHg5MDg4Ci0jZGVmaW5lIEdMX0NPVU5UX0RPV05fQ0hST01JVU0gMHg5MDg5
Ci0jZGVmaW5lIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNIDB4OTA4QgotI2RlZmluZSBHTF9CT1VO
RElOR19CT1hfQ0hST01JVU0gMHg5MDhECi0jZGVmaW5lIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VO
RElOR19CT1hFU19DSFJPTUlVTSAweDkwOUMKLSNkZWZpbmUgR0xfRVlFX0xJTkVBUl9DSFJPTUlV
TSAweDI0MDAKLSNkZWZpbmUgR0xfT0JKRUNUX0xJTkVBUl9DSFJPTUlVTSAweDI0MDEKLSNkZWZp
bmUgR0xfQ09OU1RBTlRfQ0hST01JVU0gMHg4NTc2Ci0jZGVmaW5lIEdMX1RSQU5TTEFURV9YX0NI
Uk9NSVVNIDB4OTA4RQotI2RlZmluZSBHTF9UUkFOU0xBVEVfWV9DSFJPTUlVTSAweDkwOEYKLSNk
ZWZpbmUgR0xfVFJBTlNMQVRFXzJEX0NIUk9NSVVNIDB4OTA5MAotI2RlZmluZSBHTF9UUkFOU0xB
VEVfM0RfQ0hST01JVU0gMHg5MDkxCi0jZGVmaW5lIEdMX0FGRklORV8yRF9DSFJPTUlVTSAweDkw
OTIKLSNkZWZpbmUgR0xfQUZGSU5FXzNEX0NIUk9NSVVNIDB4OTA5NAotI2RlZmluZSBHTF9UUkFO
U1BPU0VfQUZGSU5FXzJEX0NIUk9NSVVNIDB4OTA5NgotI2RlZmluZSBHTF9UUkFOU1BPU0VfQUZG
SU5FXzNEX0NIUk9NSVVNIDB4OTA5OAotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTE1B
VFJJWExPQURGQ0hST01JVU1QUk9DKShHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAq
bSk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYTE9BRElERU5USVRZQ0hS
T01JVU1QUk9DKShHTGVudW0gbWF0cml4TW9kZSk7Ci10eXBlZGVmIEdMdWludChHTF9BUElFTlRS
WVAgUEZOR0xHRU5QQVRIU0NIUk9NSVVNUFJPQykoR0xzaXplaSByYW5nZSk7Ci10eXBlZGVmIHZv
aWQoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUEFUSFNDSFJPTUlVTVBST0MpKEdMdWludCBwYXRo
LCBHTHNpemVpIHJhbmdlKTsKLXR5cGVkZWYgR0xib29sZWFuKEdMX0FQSUVOVFJZUCBQRk5HTElT
UEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgpOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZ
UCBQRk5HTFBBVEhDT01NQU5EU0NIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpOwotdHlwZWRlZiB2b2lkKEdM
X0FQSUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVURVJJQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwg
R0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBG
TkdMUEFUSFBBUkFNRVRFUkZDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdmFsdWUpOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTEdF
VFBBVEhQQVJBTUVURVJJVkNIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqdmFsdWUpOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVFBBVEhQQVJBTUVURVJGVkNIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJ
RU5UUllQIFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1QUk9DKShHTGVudW0gZnVuYywgR0xp
bnQgcmVmLCBHTHVpbnQgbWFzayk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RF
TkNJTEZJTExQQVRIQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrKTsKLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVO
Q0lMU1RST0tFUEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVy
ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2spOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5H
TENPVkVSRklMTFBBVEhDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2Rl
KTsKLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUlNUUk9LRVBBVEhDSFJPTUlV
TVBST0MpKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLXR5cGVkZWYgdm9pZChHTF9B
UElFTlRSWVAgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhDSFJPTUlVTVBST0MpKEdMdWlu
dCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLXR5cGVkZWYgdm9pZChHTF9B
UElFTlRSWVAgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSENIUk9NSVVNUFJPQykoR0x1
aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2
b2lkKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0Mp
KEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lk
KEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQyko
Ci0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAotICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICBHTGVudW0gY292ZXJN
b2RlLAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTEZJTExQ
QVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DKSgKLSAgICBHTHNpemVpIG51bVBhdGhzLAotICAgIEdM
ZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgR0x1aW50IHBh
dGhCYXNlLAotICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICBHTHVpbnQgbWFzaywKLSAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwot
dHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxTVFJPS0VQQVRISU5TVEFOQ0VE
Q0hST01JVU1QUk9DKSgKLSAgICBHTHNpemVpIG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFt
ZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgR0x1aW50IHBhdGhCYXNlLAotICAg
IEdMaW50IHJlZmVyZW5jZSwKLSAgICBHTHVpbnQgbWFzaywKLSAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lk
KEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9N
SVVNUFJPQykoCi0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0gcGF0aE5hbWVUeXBl
LAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICBHTGVu
dW0gZmlsbE1vZGUsCi0gICAgR0x1aW50IG1hc2ssCi0gICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAg
ICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJP
S0VQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DKSgKLSAgICBHTHNpemVpIG51bVBhdGhzLAotICAg
IEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgR0x1aW50
IHBhdGhCYXNlLAotICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICBHTHVpbnQgbWFzaywKLSAgICBH
TGVudW0gY292ZXJNb2RlLAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci0KLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZO
R0xCSU5ERlJBR01FTlRJTlBVVExPQ0FUSU9OQ0hST01JVU1QUk9DKShHTHVpbnQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpu
YW1lKTsKLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNUEFUSEZSQUdNRU5U
SU5QVVRHRU5DSFJPTUlVTVBST0MpKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2Vm
ZnMpOwotI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxv
YXQgKm0pOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZElkZW50aXR5
Q0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUpOwotR0xfQVBJQ0FMTCBHTHVpbnQgR0xfQVBJRU5U
UlkgZ2xHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFuZ2UpOwotR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xzaXplaSByYW5n
ZSk7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUGF0aENIUk9NSVVNKEdM
dWludCBwYXRoKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhDb21tYW5kc0NI
Uk9NSVVNKEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51
bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0
aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZh
bHVlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJpdkNI
Uk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSk7Ci1HTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShHTHVpbnQg
cGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTGVudW0gZnVuYywgR0xpbnQgcmVm
LCBHTHVpbnQgbWFzayk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmls
bFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzayk7
Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVN
KEdMdWludCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsKLUdMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xl
bnVtIGNvdmVyTW9kZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlclN0cm9r
ZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7Ci1HTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVp
bnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0
aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXpl
aSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWQotZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNp
emVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdHJhbnNmb3JtVmFsdWVzKTsKLQotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZCi1nbFN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oR0x1aW50IHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLUdMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
KEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpjb2VmZnMpOwotCi0jZW5kaWYKLSNlbmRpZiAvKiBHTF9DSFJPTUlVTV9wYXRoX3Jl
bmRlcmluZyAqLwotCiAjaWZuZGVmIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZQogI2RlZmluZSBH
TF9DSFJPTUlVTV9jb3B5X3RleHR1cmUgMQogdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5H
TENPUFlURVhUVVJFQ0hST01JVU1QUk9DKShHTHVpbnQgc291cmNlSWQsCkBAIC03MTMsNiArNDgy
LDM0IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFJlbmRlcmJ1ZmZlckltYWdl
QU5HTEUgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBmCiAjZGVmaW5lIEdMX1NBTVBMRVJfVklERU9f
SU1BR0VfV0VCR0wgMHg5MjQ5CiAjZW5kaWYgLyogR0xfV0VCR0xfdmlkZW9fdGV4dHVyZSAqLwog
CisjaWZuZGVmIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYQorI2RlZmluZSBHTF9BTkdM
RV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEgMQorI2RlZmluZSBHTF9IQU5ETEVfVFlQRV9aSVJDT05f
Vk1PX0FOR0xFIDB4OTNBRQordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTElNUE9SVE1F
TU9SWVpJUkNPTkhBTkRMRUFOR0xFUFJPQykoR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBo
YW5kbGUpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKEdMdWludCBtZW1vcnksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxl
KTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSAqLwor
CisjaWZuZGVmIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhCisjZGVmaW5lIEdMX0FOR0xFX3Nl
bWFwaG9yZV9mdWNoc2lhIDEKKyNkZWZpbmUgR0xfSEFORExFX1RZUEVfWklSQ09OX0VWRU5UX0FO
R0xFIDB4OTNBRgordHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTElNUE9SVFNFTUFQSE9S
RVpJUkNPTkhBTkRMRUFOR0xFUFJPQykoR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CisjaWZkZWYgR0xf
R0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW1wb3J0U2Vt
YXBob3JlWmlyY29uSGFuZGxlQU5HTEUoR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5k
bGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9BTkdM
RV9zZW1hcGhvcmVfZnVjaHNpYSAqLworCiAvLyBjbGFuZy1mb3JtYXQgb24KIAogI2VuZGlmICAv
LyBJTkNMVURFX0dMRVMyX0dMMkVYVF9BTkdMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHRfZXhwbGljaXRfY29udGV4dF9hdXRvZ2Vu
LmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0X2V4cGxp
Y2l0X2NvbnRleHRfYXV0b2dlbi5pbmMKaW5kZXggNGUxMzFhYThlMTk5M2E0YTdjZWJjMzI2OTI2
YTk1ZjZmNjQ0NGRlMS4uZWE4YmU1Y2QzMTg5NWZlNWJhYjUwOGY3MmIyMGUyNDI0NGNkNGUwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHRf
ZXhwbGljaXRfY29udGV4dF9hdXRvZ2VuLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMRVMyL2dsMmV4dF9leHBsaWNpdF9jb250ZXh0X2F1dG9nZW4uaW5jCkBAIC0x
NTQsOCArMTU0LDE4IEBAIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkVHSU5RVUVS
WUVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsCiB0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEJJTkRGUkFHREFUQUxPQ0FUSU9ORVhUQ09OVEVYVEFOR0xFUFJPQyko
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBjb2xvciwgY29uc3QgR0xj
aGFyICpuYW1lKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREZSQUdEQVRB
TE9DQVRJT05JTkRFWEVERVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1
aW50IHByb2dyYW0sIEdMdWludCBjb2xvck51bWJlciwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNo
YXIgKm5hbWUpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVkVSVEVYQVJS
QVlPRVNDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYXJyYXkpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFUSU9OU0VQQVJBVEVJRVhU
Q09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1v
ZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xCTEVOREVRVUFUSU9OU0VQQVJBVEVJT0VTQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0
IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFUSU9OSUVYVENPTlRFWFRBTkdM
RVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRFUVVBVElPTklPRVNDT05URVhUQU5HTEVQ
Uk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERlVOQ1NFUEFSQVRFSUVYVENPTlRFWFRBTkdM
RVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmNSR0IsIEdMZW51
bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTQ09OVEVYVEFOR0xFUFJP
QykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRz
dFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xCTEVOREZVTkNJRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERlVOQ0lPRVNDT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KTsKIHR5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxJVEZSQU1FQlVGRkVSQU5HTEVDT05URVhUQU5H
TEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50
IHNyY1gxLCBHTGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RY
MSwgR0xpbnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlcik7CiB0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJVRkZFUlNUT1JBR0VNRU1FWFRDT05URVhUQU5HTEVQ
Uk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIEdM
dWludCBtZW1vcnksIEdMdWludDY0IG9mZnNldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTENPTE9STUFTS0lFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9v
bGVhbiBhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09MT1JNQVNLSU9FU0NP
TlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0xib29sZWFu
IHIsIEdMYm9vbGVhbiBnLCBHTGJvb2xlYW4gYiwgR0xib29sZWFuIGEpOwogdHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UzRE9FU0NPTlRFWFRBTkdMRVBS
T0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRl
cHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpkYXRhKTsK
IHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFM0RP
RVNDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQs
IEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpkYXRhKTsKIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMQ09QWVRFWFNVQklNQUdFM0RPRVNDT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOwpAQCAtMTY4LDYgKzE3OCw4IEBAIHR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMREVMRVRFTUVNT1JZT0JKRUNUU0VYVENPTlRFWFRBTkdMRVBST0Mp
KEdMZWdsQ29uCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVFVRVJJRVNF
WFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdM
dWludCAqaWRzKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFU0VNQVBI
T1JFU0VYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICpzZW1hcGhvcmVzKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
REVMRVRFVkVSVEVYQVJSQVlTT0VTQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwg
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTERJU0FCTEVJRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRElTQUJMRUlPRVNDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xESVNDQVJERlJBTUVCVUZGRVJFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0
dGFjaG1lbnRzKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0FSUkFZU0lO
U1RBTkNFREFOR0xFQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1v
ZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7CiB0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURFWFRDT05URVhU
QU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbW9kZSwgR0xpbnQgc3RhcnQsIEdM
c2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKQEAgLTE4Miw2ICsxOTQsOCBAQCB0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdSQU5HRUVMRU1FTlRTQkFTRVZFUlRFWEVY
VENPTlRFWFRBTkdMRVBST0MpKAogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFX
UkFOR0VFTEVNRU5UU0JBU0VWRVJURVhPRVNDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50
LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xpbnQgYmFzZXZlcnRleCk7CiB0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUUkVOREVSQlVGRkVS
U1RPUkFHRU9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4
dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVJRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMRU5BQkxFSU9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEVORFFVRVJZRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIHRhcmdldCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZJTklTSEZF
TkNFTlZDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2UpOwog
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGTFVTSE1BUFBFREJVRkZFUlJBTkdFRVhU
Q09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnRw
dHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCk7CkBAIC0xOTgsNiArMjEyLDcgQEAgdHlwZWRl
ZiBHTHVpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVERFQlVHTUVTU0FHRUxPR0tIUkNPTlRFWFRB
TkdMRVBST0MpKEdMZWdsQ28KIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURkVO
Q0VJVk5WQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZlbmNlLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogdHlwZWRlZiBHTGludCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VURlJBR0RBVEFJTkRFWEVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpOwogdHlwZWRlZiBHTGVudW0g
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRDT05URVhUQU5HTEVQ
Uk9DKShHTGVnbENvbnRleHQgY3R4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VUSU5URUdFUjY0VkVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVE1FTU9SWU9CSkVDVFBBUkFNRVRFUklWRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IG1lbW9yeU9iamVjdCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUT0JKRUNUTEFCRUxLSFJDT05U
RVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gaWRlbnRpZmllciwgR0x1aW50
IG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsK
IHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUT0JKRUNUUFRSTEFCRUxLSFJDT05U
RVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsKQEAgLTIyMiw2ICsyMzcs
OCBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNSVZFWFRDT05U
RVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgYwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xJTVBPUlRNRU1PUllGREVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgs
IEdMdWludCBtZW1vcnksIEdMdWludDY0IHNpemUsIEdMZW51bSBoYW5kbGVUeXBlLCBHTGludCBm
ZCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTElNUE9SVFNFTUFQSE9SRUZERVhU
Q09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNlbWFwaG9yZSwgR0xl
bnVtIGhhbmRsZVR5cGUsIEdMaW50IGZkKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMSU5TRVJURVZFTlRNQVJLRVJFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4
LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIpOwordHlwZWRlZiBHTGJvb2xl
YW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTRU5BQkxFRElFWFRDT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwordHlwZWRlZiBHTGJv
b2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTRU5BQkxFRElPRVNDT05URVhUQU5HTEVQUk9DKShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwogdHlwZWRlZiBH
TGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTRkVOQ0VOVkNPTlRFWFRBTkdMRVBST0MpKEdM
ZWdsQ29udGV4dCBjdHgsIEdMdWludCBmZW5jZSk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJ
RU5UUllQIFBGTkdMSVNNRU1PUllPQkpFQ1RFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRl
eHQgY3R4LCBHTHVpbnQgbWVtb3J5T2JqZWN0KTsKIHR5cGVkZWYgR0xib29sZWFuIChHTF9BUElF
TlRSWVAgUEZOR0xJU1FVRVJZRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGlkKTsKQEAgLTI2NywzMSArMjg0LDYgQEAgdHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xWRVJURVhBVFRSSUJESVZJU09SRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb24K
IHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMV0FJVFNFTUFQSE9SRUVYVENPTlRFWFRB
TkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBzZW1hcGhvcmUsIEdMdWludCBudW1C
dWZmZXJCYXJyaWVycywgY29uc3QgR0x1aW50ICpidWZmZXJzLCBHTHVpbnQgbnVtVGV4dHVyZUJh
cnJpZXJzLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzLCBjb25zdCBHTGVudW0gKnNyY0xheW91dHMp
OwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVU5JRk9STUxPQ0FUSU9OQ0hS
T01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIGNvbnN0IEdMY2hhciogbmFtZSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTENPVkVSQUdFTU9EVUxBVElPTkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyko
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvbXBvbmVudHMpOwotdHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xNQVRSSVhMT0FERkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKiBtYXRyaXgpOwot
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlV
TUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtYXRyaXhNb2RlKTsK
LXR5cGVkZWYgR0x1aW50IChHTF9BUElFTlRSWVAgUEZOR0xHRU5QQVRIU0NIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSByYW5nZSk7Ci10eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVBBVEhTQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
KShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpOwotdHlwZWRl
ZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xF
UFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgpOwotdHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQQVRIQ09NTUFORFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTHNpemVpIG51bUNvbW1hbmRzLCBjb25zdCBHTHVi
eXRlICogY29tbWFuZHMsIEdMc2l6ZWkgbnVtQ29vcmRzLCBHTGVudW0gY29vcmRUeXBlLCBjb25z
dCB2b2lkKiBjb29yZHMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQQVRIUEFS
QU1FVEVSRkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVURVJJQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Ci10
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBBVEhQQVJBTUVURVJGVkNIUk9NSVVN
Q09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCAqIHZhbHVlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VUUEFUSFBBUkFNRVRFUklWQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQg
Y3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHZhbHVlKTsKLXR5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQg
bWFzayk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxGSUxMUEFUSENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdM
ZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xTVEVOQ0lMU1RST0tFUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spOwotdHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUkZJTExQQVRIQ0hST01JVU1DT05URVhU
QU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9k
ZSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSU1RST0tFUEFUSENIUk9N
SVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51
bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMVEhF
TkNPVkVSRklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgs
IEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJN
b2RlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNU
Uk9LRVBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlKTsK
LXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJGSUxMUEFUSElOU1RBTkNFRENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRo
LCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICogcGF0aHMsIEdMdWludCBwYXRoQmFz
ZSwgR0xlbnVtIGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQg
KiB0cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1ZF
UlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4
dCBjdHgsIEdMc2l6ZWkgbnVtUGF0aCwgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAq
IHBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRF
WFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbnVtUGF0aCwgR0xlbnVtIHBh
dGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqIHBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMaW50IHJl
ZmVyZW5jZSwgR0x1aW50IG1hc2ssIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0
ICogdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU1RF
TkNJTEZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRl
eHQgY3R4LCBHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lk
ICogcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaywg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zvcm1WYWx1ZXMpOwot
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhJ
TlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6
ZWkgbnVtUGF0aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKiBwYXRocywgR0x1
aW50IHBhdGhCYXNlLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJN
b2RlLCBHTGVudW0gdHJhbnNmb3JtVHlwZSwgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVl
cyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJP
S0VQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4
LCBHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICogcGF0
aHMsIEdMdWludCBwYXRoQmFzZSwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywgR0xlbnVt
IGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zv
cm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5ERlJBR01FTlRJ
TlBVVExPQ0FUSU9OQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbXMsIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKiBuYW1lKTsKLXR5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVUR0VO
Q0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMZW51bSBnZW5Nb2RlLCBHTGludCBjb21wb25lbnRzLCBjb25z
dCBHTGZsb2F0ICogY29lZmZzKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09Q
WVRFWFRVUkVDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBzb3VyY2VJZCwgR0xpbnQgc291cmNlTGV2ZWwsIEdMZW51bSBkZXN0VGFyZ2V0LCBHTHVpbnQg
ZGVzdElkLCBHTGludCBkZXN0TGV2ZWwsIEdMaW50IGludGVybmFsRm9ybWF0LCBHTGVudW0gZGVz
dFR5cGUsIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5
QWxwaGEsIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xDT1BZU1VCVEVYVFVSRUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyko
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNvdXJjZUlkLCBHTGludCBzb3VyY2VMZXZlbCwgR0xl
bnVtIGRlc3RUYXJnZXQsIEdMdWludCBkZXN0SWQsIEdMaW50IGRlc3RMZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgd2lkdGgsIEdMaW50
IGhlaWdodCwgR0xib29sZWFuIHVucGFja0ZsaXBZLCBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlw
bHlBbHBoYSwgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiB0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURDT1BZVEVYVFVSRUNIUk9NSVVNQ09OVEVYVEFO
R0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQgZGVzdElk
KTsKQEAgLTM4Miw2ICszNzQsOCBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRF
WElNQUdFMkRFWFRFUk5BTEFOR0xFQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDbwogdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xJTlZBTElEQVRFVEVYVFVSRUFOR0xFQ09OVEVYVEFOR0xF
UFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCk7CiB0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVFRFWElNQUdFQU5HTEVDT05URVhUQU5HTEVQUk9DKShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIHZvaWQgKnBpeGVscyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVFJFTkRFUkJVRkZFUklNQUdFQU5HTEVDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4
ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMSU1QT1JUTUVNT1JZWklSQ09O
SEFORExFQU5HTEVDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWVt
b3J5LCBHTHVpbnQ2NCBzaXplLCBHTGVudW0gaGFuZGxlVHlwZSwgR0x1aW50IGhhbmRsZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTElNUE9SVFNFTUFQSE9SRVpJUkNPTkhBTkRM
RUFOR0xFQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNlbWFwaG9y
ZSwgR0xlbnVtIGhhbmRsZVR5cGUsIEdMdWludCBoYW5kbGUpOwogI2lmZGVmIEdMX0dMRVhUX1BS
T1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEFjdGl2ZVRleHR1cmVDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRleHR1cmUpOwogR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKQEAgLTUyOSw4ICs1MjMsMTggQEAg
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmVnaW5RdWVyeUVYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0KIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJp
bmRGcmFnRGF0YUxvY2F0aW9uRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBwcm9ncmFtLCBHTHVpbnQgY29sb3IsIGNvbnN0IEdMY2hhciAqbmFtZSk7CiBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBjb2xvck51bWJl
ciwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIgKm5hbWUpOwogR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQmluZFZlcnRleEFycmF5T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBhcnJheSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBi
dWYsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbmlFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbmlPRVNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51
bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEs
IEdMZW51bSBkc3RBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1
bmNpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBz
cmMsIEdMZW51bSBkc3QpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5j
aU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gc3Jj
LCBHTGVudW0gZHN0KTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsaXRGcmFtZWJ1
ZmZlckFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IHNyY1gwLCBHTGlu
dCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0
WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmls
dGVyKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlclN0b3JhZ2VNZW1FWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBz
aXplLCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBvZmZzZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQ29sb3JNYXNraUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9v
bGVhbiBhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbG9yTWFza2lPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xi
b29sZWFuIGcsIEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSk7CiBHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9y
ZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7CiBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBj
b25zdCB2b2lkICpkYXRhKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlUZXhT
dWJJbWFnZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0
LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CkBAIC01
NDMsNiArNTQ3LDggQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlTWVtb3J5
T2JqZWN0c0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3QKIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbERlbGV0ZVF1ZXJpZXNFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xEZWxldGVTZW1hcGhvcmVzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpzZW1hcGhvcmVzKTsKIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5c09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbERpc2FibGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEaXNhYmxlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzY2Fy
ZEZyYW1lYnVmZmVyRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwog
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsRHJhd0FycmF5c0luc3RhbmNlZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gbW9kZSwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNv
dW50KTsKQEAgLTU1Nyw2ICs1NjMsOCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xE
cmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDbwogR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdM
dWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2Vz
LCBHTGludCBiYXNldmVydGV4KTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVHTElt
YWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKIEdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRW5hYmxlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRW5kUXVlcnlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdl
dCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGaW5pc2hGZW5jZU5WQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmZW5jZSk7CiBHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5n
dGgpOwpAQCAtNTczLDYgKzU4MSw3IEBAIEdMX0FQSUNBTEwgR0x1aW50IEdMX0FQSUVOVFJZIGds
R2V0RGVidWdNZXNzYWdlTG9nS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjCiBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRGZW5jZWl2TlZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogR0xf
QVBJQ0FMTCBHTGludCBHTF9BUElFTlRSWSBnbEdldEZyYWdEYXRhSW5kZXhFWFRDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7
CiBHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTHVpbnQgbWVtb3J5T2JqZWN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwog
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0T2JqZWN0TGFiZWxLSFJDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpsYWJlbCk7CiBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRPYmplY3RQdHJMYWJlbEtIUkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsKQEAgLTU5Nyw2ICs2MDYsOCBAQCBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybWl2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMdQogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW1wb3J0TWVtb3J5RmRF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQg
c2l6ZSwgR0xlbnVtIGhhbmRsZVR5cGUsIEdMaW50IGZkKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEltcG9ydFNlbWFwaG9yZUZkRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBoYW5kbGVUeXBlLCBHTGludCBmZCk7CiBHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbnNlcnRFdmVudE1hcmtlckVYVENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIp
OworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0VuYWJsZWRpRVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitH
TF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKIEdMX0FQ
SUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNGZW5jZU5WQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBmZW5jZSk7CiBHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElF
TlRSWSBnbElzTWVtb3J5T2JqZWN0RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBtZW1vcnlPYmplY3QpOwogR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJ
c1F1ZXJ5RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpZCk7CkBAIC02
NDIsMzEgKzY1Myw2IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJp
YkRpdmlzb3JFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0CiBHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xXYWl0U2VtYXBob3JlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBzZW1hcGhvcmUsIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywgY29uc3QgR0x1
aW50ICpidWZmZXJzLCBHTHVpbnQgbnVtVGV4dHVyZUJhcnJpZXJzLCBjb25zdCBHTHVpbnQgKnRl
eHR1cmVzLCBjb25zdCBHTGVudW0gKnNyY0xheW91dHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3QgR0xjaGFyKiBu
YW1lKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyYWdlTW9kdWxhdGlvbkNI
Uk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjb21wb25lbnRzKTsK
LUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmQ0hST01JVU1Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQg
KiBtYXRyaXgpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZElkZW50
aXR5Q0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1hdHJpeE1v
ZGUpOwotR0xfQVBJQ0FMTCBHTHVpbnQgR0xfQVBJRU5UUlkgZ2xHZW5QYXRoc0NIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgcmFuZ2UpOwotR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpOwotR0xfQVBJQ0FMTCBHTGJv
b2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHVpbnQgcGF0aCk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0
aCwgR0xzaXplaSBudW1Db21tYW5kcywgY29uc3QgR0x1Ynl0ZSAqIGNvbW1hbmRzLCBHTHNpemVp
IG51bUNvb3JkcywgR0xlbnVtIGNvb3JkVHlwZSwgY29uc3Qgdm9pZCogY29vcmRzKTsKLUdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU1Db250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2
YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoUGFyYW1ldGVyaUNIUk9N
SVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTGVudW0gcG5h
bWUsIEdMaW50IHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhQ
YXJhbWV0ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBw
YXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKiB2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqIHZhbHVlKTsKLUdM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBt
YXNrKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTGVudW0gZmls
bE1vZGUsIEdMdWludCBtYXNrKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5j
aWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLUdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWlu
dCBtYXNrLCBHTGVudW0gY292ZXJNb2RlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2ssIEdMZW51
bSBjb3Zlck1vZGUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkg
bnVtUGF0aCwgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqIHBhdGhzLCBHTHVpbnQg
cGF0aEJhc2UsIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBH
TGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMc2l6ZWkgbnVtUGF0aCwgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAq
IHBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRoLCBHTGVudW0gcGF0aE5hbWVU
eXBlLCBjb25zdCB2b2lkICogcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xpbnQgcmVmZXJlbmNl
LCBHTHVpbnQgbWFzaywgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKiB0cmFu
c2Zvcm1WYWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXpl
aSBudW1QYXRocywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqIHBhdGhzLCBHTHVp
bnQgcGF0aEJhc2UsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbnVtUGF0aHMsIEdMZW51bSBw
YXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKiBwYXRocywgR0x1aW50IHBhdGhCYXNlLCBHTGVudW0g
ZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlLCBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbnVtUGF0aHMsIEdMZW51bSBw
YXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKiBwYXRocywgR0x1aW50IHBhdGhCYXNlLCBHTGludCBy
ZWZlcmVuY2UsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlLCBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW1zLCBHTGludCBsb2NhdGlvbiwgY29u
c3QgR0xjaGFyICogbmFtZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZW51bSBnZW5Nb2RlLCBHTGludCBj
b21wb25lbnRzLCBjb25zdCBHTGZsb2F0ICogY29lZmZzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbENvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0x1aW50IHNvdXJjZUlkLCBHTGludCBzb3VyY2VMZXZlbCwgR0xlbnVtIGRlc3RUYXJnZXQs
IEdMdWludCBkZXN0SWQsIEdMaW50IGRlc3RMZXZlbCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsIEdM
ZW51bSBkZXN0VHlwZSwgR0xib29sZWFuIHVucGFja0ZsaXBZLCBHTGJvb2xlYW4gdW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSwgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBzb3VyY2VJZCwgR0xpbnQgc291cmNlTGV2ZWwsIEdM
ZW51bSBkZXN0VGFyZ2V0LCBHTHVpbnQgZGVzdElkLCBHTGludCBkZXN0TGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHdpZHRoLCBHTGlu
dCBoZWlnaHQsIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwgR0xib29sZWFuIHVucGFja1ByZW11bHRp
cGx5QWxwaGEsIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQgZGVzdElkKTsKQEAg
LTc1Nyw0ICs3NDMsNiBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJbWFnZTJE
RXh0ZXJuYWxBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgYwogR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsSW52YWxpZGF0ZVRleHR1cmVBTkdMRUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFRleEltYWdlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCB2b2lkICpwaXhl
bHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVySW1hZ2VB
TkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBtZW1vcnksIEdMdWludDY0IHNpemUsIEdMZW51bSBoYW5kbGVU
eXBlLCBHTHVpbnQgaGFuZGxlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEltcG9y
dFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBoYW5kbGVUeXBlLCBHTHVpbnQgaGFuZGxlKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5H
L1NoYWRlckxhbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9T
aGFkZXJMYW5nLmgKaW5kZXggNjczNzc2NmE3Yjg4YWE2MmQ5NTlkYTExZTkwODU2ZTU3NDk2NjJi
ZS4uYzUxNGNiNTVjMjdmOGE1YThmOTMwY2ViNzg2ZTU2MDZiOGMyMzliZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCkBA
IC0yNiw3ICsyNiw3IEBACiAKIC8vIFZlcnNpb24gbnVtYmVyIGZvciBzaGFkZXIgdHJhbnNsYXRp
b24gQVBJLgogLy8gSXQgaXMgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSB0aGUgQVBJIGNoYW5nZXMu
Ci0jZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMjI0CisjZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04g
MjI2CiAKIGVudW0gU2hTaGFkZXJTcGVjCiB7CkBAIC0zMzMsNiArMzMzLDkgQEAgY29uc3QgU2hD
b21waWxlT3B0aW9ucyBTSF9ESVNBQkxFX0FSQl9URVhUVVJFX1JFQ1RBTkdMRSA9IFVJTlQ2NF9D
KDEpIDw8IDUyOwogLy8gYXMgY29sdW1uLW1ham9yIGluIEVTU0wgMy4wMCBhbmQgZ3JlYXRlciBz
aGFkZXJzLgogY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9SRVdSSVRFX1JPV19NQUpPUl9NQVRS
SUNFUyA9IFVJTlQ2NF9DKDEpIDw8IDUzOwogCisvLyBEcm9wIGFueSBleHBsaWNpdCBwcmVjaXNp
b24gcXVhbGlmaWVycyBmcm9tIHNoYWRlci4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfSUdO
T1JFX1BSRUNJU0lPTl9RVUFMSUZJRVJTID0gVUlOVDY0X0MoMSkgPDwgNTQ7CisKIC8vIERlZmlu
ZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRleCBjbGFt
cGluZy4KIGVudW0gU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneQogewpAQCAtMzg0LDYgKzM4
Nyw3IEBAIHN0cnVjdCBTaEJ1aWx0SW5SZXNvdXJjZXMKICAgICBpbnQgRVhUX1lVVl90YXJnZXQ7
CiAgICAgaW50IEVYVF9nZW9tZXRyeV9zaGFkZXI7CiAgICAgaW50IEVYVF9ncHVfc2hhZGVyNTsK
KyAgICBpbnQgRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVyczsKICAg
ICBpbnQgT0VTX3RleHR1cmVfc3RvcmFnZV9tdWx0aXNhbXBsZV8yZF9hcnJheTsKICAgICBpbnQg
T0VTX3RleHR1cmVfM0Q7CiAgICAgaW50IEFOR0xFX3RleHR1cmVfbXVsdGlzYW1wbGU7CkBAIC03
NjMsMTIgKzc2NywxMiBAQCBleHRlcm4gY29uc3QgY2hhciBrRGVmYXVsdFVuaWZvcm1zTmFtZUdT
W107CiBleHRlcm4gY29uc3QgY2hhciBrRGVmYXVsdFVuaWZvcm1zTmFtZUZTW107CiBleHRlcm4g
Y29uc3QgY2hhciBrRGVmYXVsdFVuaWZvcm1zTmFtZUNTW107CiAKLS8vIEludGVyZmFjZSBibG9j
ayBhbmQgdmFyaWFibGUgbmFtZSBjb250YWluaW5nIGRyaXZlciB1bmlmb3JtcworLy8gSW50ZXJm
YWNlIGJsb2NrIGFuZCB2YXJpYWJsZSBuYW1lcyBjb250YWluaW5nIGRyaXZlciB1bmlmb3Jtcwog
ZXh0ZXJuIGNvbnN0IGNoYXIga0RyaXZlclVuaWZvcm1zQmxvY2tOYW1lW107CiBleHRlcm4gY29u
c3QgY2hhciBrRHJpdmVyVW5pZm9ybXNWYXJOYW1lW107CiAKLS8vIEludGVyZmFjZSBibG9jayBh
cnJheSB2YXJpYWJsZSBuYW1lIHVzZWQgZm9yIGF0b21pYyBjb3VudGVyIGVtdWxhdGlvbgotZXh0
ZXJuIGNvbnN0IGNoYXIga0F0b21pY0NvdW50ZXJzVmFyTmFtZVtdOworLy8gSW50ZXJmYWNlIGJs
b2NrIGFycmF5IG5hbWUgdXNlZCBmb3IgYXRvbWljIGNvdW50ZXIgZW11bGF0aW9uCitleHRlcm4g
Y29uc3QgY2hhciBrQXRvbWljQ291bnRlcnNCbG9ja05hbWVbXTsKIAogLy8gTGluZSByYXN0ZXIg
ZW11bGF0aW9uIHZhcnlpbmcKIGV4dGVybiBjb25zdCBjaGFyIGtMaW5lUmFzdGVyRW11bGF0aW9u
UG9zaXRpb25bXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUv
cGxhdGZvcm0vRmVhdHVyZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0
Zm9ybS9GZWF0dXJlLmgKaW5kZXggN2FmNDE3NDI3ODVlNWUyYzhiOGI5MGMyZTc4YjQ1ZTI3NmVh
NDMzNC4uNTU5ZTA4MDEyZGQ5MDY4ODc2ZjQ0NjQ3NTlhOTFkYzBkNmQyN2NlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlLmgKQEAg
LTEzLDExICsxMywxMSBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
LSNkZWZpbmUgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oc2V0LCBmZWF0dXJlLCBjb25kKSAgICAg
XAotICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc2V0LT5mZWF0dXJlLmVuYWJsZWQgICA9IGNvbmQ7ICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICBzZXQtPmZlYXR1cmUuY29uZGl0aW9uID0gQU5HTEVfU1RSSU5HSUZZ
KGNvbmQpOyBcCisjZGVmaW5lIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKHNldCwgZmVhdHVyZSwg
Y29uZCkgICAgICAgXAorICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChzZXQpLT5mZWF0dXJlLmVuYWJsZWQgICA9
IGNvbmQ7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoc2V0KS0+ZmVhdHVyZS5jb25kaXRp
b24gPSBBTkdMRV9TVFJJTkdJRlkoY29uZCk7IFwKICAgICB9IHdoaWxlICgwKQogCiBuYW1lc3Bh
Y2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxh
dGZvcm0vRmVhdHVyZXNHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0
Zm9ybS9GZWF0dXJlc0dMLmgKaW5kZXggMGY2NDlkYjJhZDBjMDM5MDFkZmQyNzhiNzNhNmExODZm
YjcwYzk4Yy4uODU5NDdlNDBmZDU2YTQ5NDg2Yjc1ZjQxMmViYmY5YWY0ZjNkMDlhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc0dM
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJl
c0dMLmgKQEAgLTQxNyw2ICs0MTcsMTkgQEAgc3RydWN0IEZlYXR1cmVzR0wgOiBGZWF0dXJlU2V0
QmFzZQogICAgICAgICAiZmx1c2hfYmVmb3JlX2JpbmRmcmFtZWJ1ZmZlciIsIEZlYXR1cmVDYXRl
Z29yeTo6T3BlbkdMV29ya2Fyb3VuZHMsCiAgICAgICAgICJGbHVzaCBiZWZvcmUgZ2xCaW5kRnJh
bWVidWZmZXIgYXMgYSBkcml2ZXIgYnVnIHdvcmthcm91bmQiLAogICAgICAgICAmbWVtYmVycywg
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2MjUifTsKKworICAg
IC8vIEJ1Z3MgZXhpc3QgaW4gdmFyaW91cyBPcGVuR0wgSW50ZWwgZHJpdmVycyBvbiBXaW5kb3dz
IHRoYXQgcHJvZHVjZSBpbmNvcnJlY3QKKyAgICAvLyB2YWx1ZXMgZm9yIEdMX0NPTVBSRVNTRURf
U1JHQl9TM1RDX0RYVDFfRVhUIGZvcm1hdC4gUmVwbGFjZSBpdCB3aXRoCisgICAgLy8gR0xfQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgYXMgaXQncyB0aGUgY2xvc2VzdCBvcHRp
b24gYWxsb3dlZCBieQorICAgIC8vIHRoZSBXZWJHTCBleHRlbnNpb24gc3BlYy4KKyAgICBGZWF0
dXJlIGF2b2lkRFhUMXNSR0JUZXh0dXJlRm9ybWF0ID0geworICAgICAgICAiYXZvaWRfZHh0MV9z
cmdiX3RleHR1cmVfZm9ybWF0IiwgRmVhdHVyZUNhdGVnb3J5OjpPcGVuR0xXb3JrYXJvdW5kcywK
KyAgICAgICAgIlJlcGxhY2VzIERYVDEgc1JHQiB3aXRoIERYVDEgc1JHQiBBbHBoYSBhcyBhIGRy
aXZlciBidWcgd29ya2Fyb3VuZC4iLCAmbWVtYmVyc307CisKKyAgICAvLyBHTF9FWFRfc2VtYXBo
b3JlX2ZkIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIE1lc2EgMTkuMy40IGFuZCBlYXJsaWVy
IHZlcnNpb25zLgorICAgIEZlYXR1cmUgZGlzYWJsZVNlbWFwaG9yZUZkID0geyJkaXNhYmxlX3Nl
bWFwaG9yZV9mZCIsIEZlYXR1cmVDYXRlZ29yeTo6T3BlbkdMV29ya2Fyb3VuZHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc2FibGUgR0xfRVhUX3NlbWFwaG9yZV9mZCBl
eHRlbnNpb24iLCAmbWVtYmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aHR0cHM6Ly9jcmJ1Zy5jb20vMTA0NjQ2MiJ9OwogfTsKIAogaW5saW5lIEZlYXR1cmVzR0w6OkZl
YXR1cmVzR0woKSAgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc1ZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzVmsuaAppbmRleCBhNmNmYmMwZThjZGNiZWJiNWJi
NTgwNjVlMGM5MTNlOThjYjYyMDUxLi43ZDk5OTM3MzgzYTRlZmY3NTMxMGFhZWYxYjNlNTJmNTA1
NDRmMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRm
b3JtL0ZlYXR1cmVzVmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3Bs
YXRmb3JtL0ZlYXR1cmVzVmsuaApAQCAtMTE0LDEyICsxMTQsMjQgQEAgc3RydWN0IEZlYXR1cmVz
VmsgOiBGZWF0dXJlU2V0QmFzZQogICAgICAgICAic3VwcG9ydHNfZXh0ZXJuYWxfbWVtb3J5X2Zk
IiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKICAgICAgICAgIlZrRGV2aWNlIHN1
cHBvcnRzIHRoZSBWS19LSFJfZXh0ZXJuYWxfbWVtb3J5X2ZkIGV4dGVuc2lvbiIsICZtZW1iZXJz
fTsKIAorICAgIC8vIFdoZXRoZXIgdGhlIFZrRGV2aWNlIHN1cHBvcnRzIHRoZSBWS19GVUNIU0lB
X2V4dGVybmFsX21lbW9yeQorICAgIC8vIGV4dGVuc2lvbiwgb24gd2hpY2ggdGhlIEdMX0FOR0xF
X21lbW9yeV9vYmplY3RfZnVjaHNpYSBleHRlbnNpb24gY2FuIGJlIGxheWVyZWQuCisgICAgYW5n
bGU6OkZlYXR1cmUgc3VwcG9ydHNFeHRlcm5hbE1lbW9yeUZ1Y2hzaWEgPSB7CisgICAgICAgICJz
dXBwb3J0c19leHRlcm5hbF9tZW1vcnlfZnVjaHNpYSIsIEZlYXR1cmVDYXRlZ29yeTo6VnVsa2Fu
RmVhdHVyZXMsCisgICAgICAgICJWa0RldmljZSBzdXBwb3J0cyB0aGUgVktfRlVDSFNJQV9leHRl
cm5hbF9tZW1vcnkgZXh0ZW5zaW9uIiwgJm1lbWJlcnN9OworCiAgICAgLy8gV2hldGhlciB0aGUg
VmtEZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfZmQgZXh0ZW5z
aW9uLCBvbiB3aGljaCB0aGUKICAgICAvLyBHTF9FWFRfc2VtYXBob3JlX2ZkIGV4dGVuc2lvbiBj
YW4gYmUgbGF5ZXJlZC4KICAgICBGZWF0dXJlIHN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGZCA9
IHsKICAgICAgICAgInN1cHBvcnRzX2V4dGVybmFsX3NlbWFwaG9yZV9mZCIsIEZlYXR1cmVDYXRl
Z29yeTo6VnVsa2FuRmVhdHVyZXMsCiAgICAgICAgICJWa0RldmljZSBzdXBwb3J0cyB0aGUgVktf
S0hSX2V4dGVybmFsX3NlbWFwaG9yZV9mZCBleHRlbnNpb24iLCAmbWVtYmVyc307CiAKKyAgICAv
LyBXaGV0aGVyIHRoZSBWa0RldmljZSBzdXBwb3J0cyB0aGUgVktfRlVDSFNJQV9leHRlcm5hbF9z
ZW1hcGhvcmUKKyAgICAvLyBleHRlbnNpb24sIG9uIHdoaWNoIHRoZSBHTF9BTkdMRV9zZW1hcGhv
cmVfZnVjaHNpYSBleHRlbnNpb24gY2FuIGJlIGxheWVyZWQuCisgICAgYW5nbGU6OkZlYXR1cmUg
c3VwcG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZ1Y2hzaWEgPSB7CisgICAgICAgICJzdXBwb3J0c19l
eHRlcm5hbF9zZW1hcGhvcmVfZnVjaHNpYSIsIEZlYXR1cmVDYXRlZ29yeTo6VnVsa2FuRmVhdHVy
ZXMsCisgICAgICAgICJWa0RldmljZSBzdXBwb3J0cyB0aGUgVktfRlVDSFNJQV9leHRlcm5hbF9z
ZW1hcGhvcmUgZXh0ZW5zaW9uIiwgJm1lbWJlcnN9OworCiAgICAgLy8gV2hldGhlciB0aGUgVmtE
ZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0VYVF9zaGFkZXJfc3RlbmNpbF9leHBvcnQgZXh0ZW5zaW9u
LCB3aGljaCBpcyB1c2VkIHRvCiAgICAgLy8gcGVyZm9ybSBtdWx0aXNhbXBsZWQgcmVzb2x2ZSBv
ZiBzdGVuY2lsIGJ1ZmZlci4gIEEgbXVsdGktc3RlcCB3b3JrYXJvdW5kIGlzIHVzZWQgaW5zdGVh
ZCBpZgogICAgIC8vIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUuCkBAIC0xNDEsNiAr
MTUzLDEyIEBAIHN0cnVjdCBGZWF0dXJlc1ZrIDogRmVhdHVyZVNldEJhc2UKICAgICAgICAgIlRy
YW5zZm9ybSBmZWVkYmFjayB1c2VzIHRoZSBWS19FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrIGV4dGVu
c2lvbi4iLCAmbWVtYmVycywKICAgICAgICAgImh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzIwNiJ9Owog
CisgICAgLy8gV2hldGhlciB0aGUgVmtEZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0VYVF9pbmRleF90
eXBlX3VpbnQ4IGV4dGVuc2lvbgorICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQwNQorICAg
IEZlYXR1cmUgc3VwcG9ydHNJbmRleFR5cGVVaW50OCA9IHsic3VwcG9ydHNfaW5kZXhfdHlwZV91
aW50OCIsIEZlYXR1cmVDYXRlZ29yeTo6VnVsa2FuRmVhdHVyZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJWa0RldmljZSBzdXBwb3J0cyB0aGUgVktfRVhUX2luZGV4
X3R5cGVfdWludDggZXh0ZW5zaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm1lbWJlcnMsICJodHRwOi8vYW5nbGVidWcuY29tLzQ0MDUifTsKKwogICAgIC8vIFZL
X1BSRVNFTlRfTU9ERV9GSUZPX0tIUiBjYXVzZXMgcmFuZG9tIHRpbWVvdXRzIG9uIExpbnV4IElu
dGVsLiBodHRwOi8vYW5nbGVidWcuY29tLzMxNTMKICAgICBGZWF0dXJlIGRpc2FibGVGaWZvUHJl
c2VudE1vZGUgPSB7CiAgICAgICAgICJkaXNhYmxlX2ZpZm9fcHJlc2VudF9tb2RlIiwgRmVhdHVy
ZUNhdGVnb3J5OjpWdWxrYW5Xb3JrYXJvdW5kcywKQEAgLTE5NiwyNCArMjE0LDIyIEBAIHN0cnVj
dCBGZWF0dXJlc1ZrIDogRmVhdHVyZVNldEJhc2UKICAgICAgICAgIlJld3JpdGVTdHJ1Y3RTYW1w
bGVycyBiZWhhdmlvciwgd2hpY2ggcHJvZHVjZXMgZmV3ZXIuIiwKICAgICAgICAgJm1lbWJlcnMs
ICJodHRwOi8vYW5nbGVidWcuY29tLzI3MDMifTsKIAotICAgIC8vIElmIHRoZSByb2J1c3RCdWZm
ZXJBY2Nlc3MgZmVhdHVyZSBpcyBlbmFibGVkLCBWdWxrYW4gY29uc2lkZXJzIHZlcnRleCBhdHRy
aWJ1dGUgYWNjZXNzZXMgb25seQotICAgIC8vIHZhbGlkIHVwIHRvIHRoZSBsYXN0IG11bHRpcGxl
IG9mIHN0cmlkZS4gIElmIGEgdmVydGV4J3MgYXR0cmlidXRlIHJhbmdlIGlzIHN1Y2ggdGhhdCBp
dCBmYWxscwotICAgIC8vIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgdGhlIGJ1ZmZlciwgYnV0IGJleW9u
ZCB0aGUgbGFzdCBtdWx0aXBsZSBvZiBzdHJpZGUsIHRoZSBkcml2ZXIgaXMgYWxsb3dlZAotICAg
IC8vIHRvIGVpdGhlciByZWFkIHRoYXQgcmFuZ2UgZnJvbSB0aGUgYnVmZmVyIGFueXdheSwgb3Ig
dG8gcmV0dXJuICgwLCAwLCAwLCAxKS4gIE1vc3QgZHJpdmVycwotICAgIC8vIGltcGxlbWVudCB0
aGUgZm9ybWVyLCB3aGlsZSBhbWR2bGsgb24gTGludXggYW5kIEFNRCdzIHdpbmRvd3MgZHJpdmVy
IGltcGxlbWVudCB0aGUgbGF0dGVyLgotICAgIC8vIEZvciB0aGUgbGF0dGVyLCB0aGlzIHdvcmth
cm91bmQgbGltaXRzIEdMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSB0byBhIHJlYXNvbmFibGUg
dmFsdWUsIGFuZAotICAgIC8vIHJvdW5kcyB1cCBldmVyeSBidWZmZXIgYWxsb2NhdGlvbiBzaXpl
IHRvIGJlIGEgbXVsdGlwbGUgb2YgdGhhdC4KLSAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzI1
MTQKLSAgICBGZWF0dXJlIHJvdW5kVXBCdWZmZXJzVG9NYXhWZXJ0ZXhBdHRyaWJTdHJpZGUgPSB7
Ci0gICAgICAgICJyb3VuZF91cF9idWZmZXJzX3RvX21heF92ZXJ0ZXhfYXR0cmliX3N0cmlkZSIs
IEZlYXR1cmVDYXRlZ29yeTo6VnVsa2FuV29ya2Fyb3VuZHMsCi0gICAgICAgICJJZiB0aGUgcm9i
dXN0QnVmZmVyQWNjZXNzIGZlYXR1cmUgaXMgZW5hYmxlZCwgVnVsa2FuIGNvbnNpZGVycyB2ZXJ0
ZXggYXR0cmlidXRlIGFjY2Vzc2VzICIKLSAgICAgICAgIm9ubHkgdmFsaWQgdXAgdG8gdGhlIGxh
c3QgbXVsdGlwbGUgb2Ygc3RyaWRlLiBJZiBhIHZlcnRleCdzIGF0dHJpYnV0ZSByYW5nZSBpcyBz
dWNoIHRoYXQgIgotICAgICAgICAiaXQgZmFsbHMgd2l0aGluIHRoZSByYW5nZSBvZiB0aGUgYnVm
ZmVyLCBidXQgYmV5b25kIHRoZSBsYXN0IG11bHRpcGxlIG9mIHN0cmlkZSwgdGhlICIKLSAgICAg
ICAgImRyaXZlciBpcyBhbGxvd2VkIHRvIGVpdGhlciByZWFkIHRoYXQgcmFuZ2UgZnJvbSB0aGUg
YnVmZmVyIGFueXdheSwgb3IgdG8gcmV0dXJuICIKLSAgICAgICAgIigwLCAwLCAwLCAxKS4gTW9z
dCBkcml2ZXJzIGltcGxlbWVudCB0aGUgZm9ybWVyLCB3aGlsZSBzb21lIGRyaXZlcnMgdGhlIGxh
dHRlci4gRm9yIHRoZSAiCi0gICAgICAgICJsYXR0ZXIsIHRoaXMgd29ya2Fyb3VuZCBsaW1pdHMg
R0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFIHRvIGEgcmVhc29uYWJsZSB2YWx1ZSwgYW5kICIK
LSAgICAgICAgInJvdW5kcyB1cCBldmVyeSBidWZmZXIgYWxsb2NhdGlvbiBzaXplIHRvIGJlIGEg
bXVsdGlwbGUgb2YgdGhhdC4iLAotICAgICAgICAmbWVtYmVycywgImh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMjg0OCJ9OworICAgIC8vIFZ1bGthbiBjb25zaWRlcnMgdmVydGV4IGF0dHJpYnV0ZSBhY2Nl
c3NlcyB0byBjb3VudCB1cCB0byB0aGUgbGFzdCBtdWx0aXBsZSBvZiB0aGUgc3RyaWRlLgorICAg
IC8vIFRoaXMgYWRkaXRpb25hbCBhY2Nlc3Mgc3VwcG9ydHMgQU1EJ3Mgcm9idXN0IGJ1ZmZlciBh
Y2Nlc3MgaW1wbGVtZW50YXRpb24uCisgICAgLy8gQU1EVkxLIGluIHBhcnRpY3VsYXIgd2lsbCBy
ZXR1cm4gaW5jb3JyZWN0IHZhbHVlcyB3aGVuIHRoZSB2ZXJ0ZXggYWNjZXNzIGV4dGVuZHMgaW50
byB0aGUKKyAgICAvLyByYW5nZSB0aGF0IHdvdWxkIGJlIHRoZSBzdHJpZGUgcGFkZGluZyBhbmQg
dGhlIGJ1ZmZlciBpcyB0b28gc21hbGwuCisgICAgLy8gVGhpcyB3b3JrYXJvdW5kIGxpbWl0cyBH
TF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUgdG8gYSByZWFzb25hYmxlIHZhbHVlIGFuZCBwYWRz
IG91dAorICAgIC8vIGV2ZXJ5IGJ1ZmZlciBhbGxvY2F0aW9uIHNpemUgdG8gYmUgbGFyZ2UgZW5v
dWdoIHRvIHN1cHBvcnQgYSBtYXhpbXVtIHZlcnRleCBzdHJpZGUuCisgICAgLy8gaHR0cDovL2Fu
Z2xlYnVnLmNvbS80NDI4CisgICAgRmVhdHVyZSBwYWRCdWZmZXJzVG9NYXhWZXJ0ZXhBdHRyaWJT
dHJpZGUgPSB7CisgICAgICAgICJwYWRfYnVmZmVyc190b19tYXhfdmVydGV4X2F0dHJpYl9zdHJp
ZGUiLCBGZWF0dXJlQ2F0ZWdvcnk6OlZ1bGthbldvcmthcm91bmRzLAorICAgICAgICAiVnVsa2Fu
IGNvbnNpZGVycyB2ZXJ0ZXggYXR0cmlidXRlIGFjY2Vzc2VzIHRvIGNvdW50IHVwIHRvIHRoZSBs
YXN0IG11bHRpcGxlIG9mIHRoZSAiCisgICAgICAgICJzdHJpZGUuIFRoaXMgYWRkaXRpb25hbCBh
Y2Nlc3Mgc3VwcG9ydHMgQU1EJ3Mgcm9idXN0IGJ1ZmZlciBhY2Nlc3MgaW1wbGVtZW50YXRpb24u
ICIKKyAgICAgICAgIkFNRFZMSyBpbiBwYXJ0aWN1bGFyIHdpbGwgcmV0dXJuIGluY29ycmVjdCB2
YWx1ZXMgd2hlbiB0aGUgdmVydGV4IGFjY2VzcyBleHRlbmRzIGludG8gIgorICAgICAgICAidGhl
IHJhbmdlIHRoYXQgd291bGQgYmUgdGhlIHN0cmlkZSBwYWRkaW5nIGFuZCB0aGUgYnVmZmVyIGlz
IHRvbyBzbWFsbC4gIgorICAgICAgICAiVGhpcyB3b3JrYXJvdW5kIGxpbWl0cyBHTF9NQVhfVkVS
VEVYX0FUVFJJQl9TVFJJREUgdG8gYSBtYXhpbXVtIHZhbHVlIGFuZCAiCisgICAgICAgICJwYWRz
IHVwIGV2ZXJ5IGJ1ZmZlciBhbGxvY2F0aW9uIHNpemUgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUg
bWF4aW11bSBzdHJpZGUuIiwKKyAgICAgICAgJm1lbWJlcnMsICJodHRwOi8vYW5nbGVidWcuY29t
LzQ0MjgifTsKIAogICAgIC8vIFdoZXRoZXIgdGhlIFZrRGV2aWNlIHN1cHBvcnRzIHRoZSBWS19F
WFRfc3dhcGNoYWluX2NvbG9yc3BhY2UgZXh0ZW5zaW9uCiAgICAgLy8gaHR0cDovL2FuZ2xlYnVn
LmNvbS8yNTE0CkBAIC0yMjIsMTMgKzIzOCw0MiBAQCBzdHJ1Y3QgRmVhdHVyZXNWayA6IEZlYXR1
cmVTZXRCYXNlCiAgICAgICAgICJWa0RldmljZSBzdXBwb3J0cyB0aGUgVktfRVhUX3N3YXBjaGFp
bl9jb2xvcnNwYWNlIGV4dGVuc2lvbiIsICZtZW1iZXJzLAogICAgICAgICAiaHR0cDovL2FuZ2xl
YnVnLmNvbS8yNTE0In07CiAKLSAgICAvLyBXaGV0aGVyIHRvIHVzZSBBTkdMRSdzIGRlZmVycmVk
IGNvbW1hbmQgZ3JhcGguIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDAyOQotICAgIEZlYXR1cmUgY29t
bWFuZEdyYXBoID0gewotICAgICAgICAiY29tbWFuZF9ncmFwaCIsCi0gICAgICAgIEZlYXR1cmVD
YXRlZ29yeTo6VnVsa2FuRmVhdHVyZXMsCi0gICAgICAgICJVc2UgQU5HTEUncyBWdWxrYW4gZGVm
ZXJyZWQgY29tbWFuZCBncmFwaC4iLAotICAgICAgICAmbWVtYmVycywKLSAgICB9OworICAgIC8v
IFdoZXRoZXIgdGhlIFZrRGV2aWNlIHN1cHBvcnRzIHRoZSBWS19FWFRfZXh0ZXJuYWxfbWVtb3J5
X2hvc3QgZXh0ZW5zaW9uLCBvbiB3aGljaCB0aGUKKyAgICAvLyBBTkdMRV9pb3N1cmZhY2VfY2xp
ZW50X2J1ZmZlciBleHRlbnNpb24gY2FuIGJlIGxheWVyZWQuCisgICAgRmVhdHVyZSBzdXBwb3J0
c0V4dGVybmFsTWVtb3J5SG9zdCA9IHsKKyAgICAgICAgInN1cHBvcnRzX2V4dGVybmFsX21lbW9y
eV9ob3N0IiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgIlZrRGV2
aWNlIHN1cHBvcnRzIHRoZSBWS19FWFRfZXh0ZXJuYWxfbWVtb3J5X2hvc3QgZXh0ZW5zaW9uIiwg
Jm1lbWJlcnN9OworCisgICAgLy8gV2hldGhlciB0byBmaWxsIG5ldyBidWZmZXJzIGFuZCB0ZXh0
dXJlcyB3aXRoIG5vbnplcm8gZGF0YSB0byBzYW5pdGl6ZSByb2J1c3QgcmVzb3VyY2UKKyAgICAv
LyBpbml0aWFsaXphdGlvbiBhbmQgZmx1c2ggb3V0IGFzc3VtcHRpb25zIGFib3V0IHplcm8gaW5p
dC4KKyAgICBGZWF0dXJlIGFsbG9jYXRlTm9uWmVyb01lbW9yeSA9IHsKKyAgICAgICAgImFsbG9j
YXRlX25vbl96ZXJvX21lbW9yeSIsIEZlYXR1cmVDYXRlZ29yeTo6VnVsa2FuRmVhdHVyZXMsCisg
ICAgICAgICJGaWxsIG5ldyBhbGxvY2F0aW9ucyB3aXRoIG5vbi16ZXJvIHZhbHVlcyB0byBmbHVz
aCBvdXQgZXJyb3JzLiIsICZtZW1iZXJzLAorICAgICAgICAiaHR0cDovL2FuZ2xlYnVnLmNvbS80
Mzg0In07CisKKyAgICAvLyBBbmRyb2lkIG5lZWRzIHRvIHByZS1yb3RhdGUgc3VyZmFjZXMgdGhh
dCBhcmUgbm90IG9yaWVudGVkIHBlciB0aGUgbmF0aXZlIGRldmljZSdzCisgICAgLy8gb3JpZW50
YXRpb24gKGUuZy4gYSBsYW5kc2NhcGUgYXBwbGljYXRpb24gb24gYSBQaXhlbCBwaG9uZSkuICBU
aGlzIGZlYXR1cmUgd29ya3MgZm9yCisgICAgLy8gZnVsbC1zY3JlZW4gYXBwbGljYXRpb25zLiBo
dHRwOi8vYW5nbGVidWcuY29tLzM1MDIKKyAgICBGZWF0dXJlIGVuYWJsZVByZVJvdGF0ZVN1cmZh
Y2VzID0geyJlbmFibGVfcHJlX3JvdGF0aW9uX3N1cmZhY2VzIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZlYXR1cmVDYXRlZ29yeTo6VnVsa2FuRmVhdHVyZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5hYmxlIEFuZHJvaWQgcHJl
LXJvdGF0aW9uIGZvciBsYW5kc2NhcGUgYXBwbGljYXRpb25zIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZtZW1iZXJzLCAiaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTAy
In07CisKKyAgICAvLyBDYWNoZSBGcmFtZWJ1ZmZlclZrIG9iamVjdHMuIEN1cnJlbnRseSBoaXR0
aW5nIGEgYnVnIG9uIEFwcGxlOiBodHRwOi8vYW5nbGVidWcuY29tLzQ0NDIKKyAgICBGZWF0dXJl
IGVuYWJsZUZyYW1lYnVmZmVyVmtDYWNoZSA9IHsKKyAgICAgICAgImVuYWJsZV9mcmFtZWJ1ZmZl
cl92a19jYWNoZSIsIEZlYXR1cmVDYXRlZ29yeTo6VnVsa2FuRmVhdHVyZXMsCisgICAgICAgICJF
bmFibGUgRnJhbWVidWZmZXJWayBvYmplY3RzIHRvIGJlIGNhY2hlZCIsICZtZW1iZXJzLCAiaHR0
cDovL2FuZ2xlYnVnLmNvbS80NDQyIn07CisKKyAgICAvLyBFbmFibGUgcHJlY2lzaW9uIHF1YWxp
ZmllcnMgZm9yIHNoYWRlcnMgZ2VuZXJhdGVkIGJ5IFZ1bGthbiBiYWNrZW5kIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vMzA3OAorICAgIEZlYXR1cmUgZW5hYmxlUHJlY2lzaW9uUXVhbGlmaWVycyA9IHsK
KyAgICAgICAgImVuYWJsZV9wcmVjaXNpb25fcXVhbGlmaWVycyIsIEZlYXR1cmVDYXRlZ29yeTo6
VnVsa2FuRmVhdHVyZXMsCisgICAgICAgICJFbmFibGUgcHJlY2lzaW9uIHF1YWxpZmllcnMgaW4g
c2hhZGVycyIsICZtZW1iZXJzLCAiaHR0cDovL2FuZ2xlYnVnLmNvbS8zMDc4In07CisKKyAgICAv
LyBTdXBwb3J0IERlcHRoL1N0ZW5jaWwgcmVuZGVyaW5nIGZlZWRiYWNrIGxvb3BzIGJ5IG1hc2tp
bmcgb3V0IHRoZSBkZXB0aC9zdGVuY2lsIGJ1ZmZlci4KKyAgICAvLyBNYW5oYXR0YW4gdXNlcyB0
aGlzIGZlYXR1cmUgaW4gYSBmZXcgZHJhdyBjYWxscy4KKyAgICBGZWF0dXJlIHN1cHBvcnREZXB0
aFN0ZW5jaWxSZW5kZXJpbmdGZWVkYmFja0xvb3BzID0geworICAgICAgICAic3VwcG9ydF9kZXB0
aF9zdGVuY2lsX3JlbmRlcmluZ19mZWVkYmFja19sb29wcyIsIEZlYXR1cmVDYXRlZ29yeTo6VnVs
a2FuRmVhdHVyZXMsCisgICAgICAgICJTdXBvcnQgZGVwdGgvc3RlbmNpbCByZW5kZXJpbmcgZmVl
ZGJhY2sgbG9vcHMiLCAmbWVtYmVycywgImh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ5MCJ9OwogfTsK
IAogaW5saW5lIEZlYXR1cmVzVms6OkZlYXR1cmVzVmsoKSAgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oCmluZGV4
IGY0ZWM0Zjg4MzdjOGU2MWYwNDYyM2QxYTRkYjcwNTUyMDkzNWViNzcuLmQwNjVjM2E5Zjc4Y2Uy
ZmJhNjYzZmJhY2I0Y2JmNDVmNDBlNjg2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgKQEAgLTExLDYgKzExLDcgQEAKIAog
I2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxp
Yi5oPgogI2luY2x1ZGUgPGFycmF5PgogCiAjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdMRV9QTEFU
Rk9STV9NRVRIT0RTX0FOR0xFWCAweDM0ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvdnVsa2FuL3Z1bGthbl9mdWNoc2lhX2V4dC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS92dWxrYW4vdnVsa2FuX2Z1Y2hzaWFfZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzVmMTIwZTcwNTZkNDNlNmI1MWFiNDI1MDdiYzBiY2E5MGMwNGZiNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvdnVsa2FuL3Z1bGthbl9mdWNo
c2lhX2V4dC5oCkBAIC0wLDAgKzEsMTQ1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gdnVsa2FuX2Z1Y2hzaWFf
ZXh0OgorLy8gICAgRGVmaW5lcyBGdWNoc2lhLXNwZWNpZmljIFZ1bGthbiBleHRlbnNpb25zIHRo
YXQgaGF2ZW4ndCBiZWVuCisvLyAgICB1cHN0cmVhbWVkIHRvIHRoZSBvZmZpY2lhbCBWdWxrYW4g
aGVhZGVycy4KKy8vCisKKyNpZm5kZWYgQ09NTU9OX1ZVTEtBTl9GVUNIU0lBX0VYVF9IXworI2Rl
ZmluZSBDT01NT05fVlVMS0FOX0ZVQ0hTSUFfRVhUX0hfCisKKyNpZiAhZGVmaW5lZChWS19OT19Q
Uk9UT1RZUEVTKQorIyAgICBkZWZpbmUgVktfTk9fUFJPVE9UWVBFUworI2VuZGlmCisKKyNpbmNs
dWRlIDx2dWxrYW4vdnVsa2FuLmg+CisKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0ZVQ0hT
SUEpCisjICAgIGluY2x1ZGUgPHppcmNvbi90eXBlcy5oPgorI2Vsc2UKK3R5cGVkZWYgdWludDMy
X3QgenhfaGFuZGxlX3Q7CisjICAgIGRlZmluZSBaWF9IQU5ETEVfSU5WQUxJRCAoKHp4X2hhbmRs
ZV90KTApCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCitjb25zdCBWa1N0cnVjdHVyZVR5cGUgVktfU1RSVUNUVVJFX1RZUEVfVEVNUF9JTVBPUlRf
TUVNT1JZX1pJUkNPTl9IQU5ETEVfSU5GT19GVUNIU0lBID0KKyAgICBzdGF0aWNfY2FzdDxWa1N0
cnVjdHVyZVR5cGU+KDEwMDEwMDUwMDApOworY29uc3QgVmtTdHJ1Y3R1cmVUeXBlIFZLX1NUUlVD
VFVSRV9UWVBFX1RFTVBfTUVNT1JZX1pJUkNPTl9IQU5ETEVfUFJPUEVSVElFU19GVUNIU0lBID0K
KyAgICBzdGF0aWNfY2FzdDxWa1N0cnVjdHVyZVR5cGU+KDEwMDEwMDUwMDEpOworY29uc3QgVmtT
dHJ1Y3R1cmVUeXBlIFZLX1NUUlVDVFVSRV9UWVBFX1RFTVBfTUVNT1JZX0dFVF9aSVJDT05fSEFO
RExFX0lORk9fRlVDSFNJQSA9CisgICAgc3RhdGljX2Nhc3Q8VmtTdHJ1Y3R1cmVUeXBlPigxMDAx
MDA1MDAyKTsKK2NvbnN0IFZrU3RydWN0dXJlVHlwZSBWS19TVFJVQ1RVUkVfVFlQRV9URU1QX0lN
UE9SVF9TRU1BUEhPUkVfWklSQ09OX0hBTkRMRV9JTkZPX0ZVQ0hTSUEgPQorICAgIHN0YXRpY19j
YXN0PFZrU3RydWN0dXJlVHlwZT4oMTAwMTAwNjAwMCk7Citjb25zdCBWa1N0cnVjdHVyZVR5cGUg
VktfU1RSVUNUVVJFX1RZUEVfVEVNUF9TRU1BUEhPUkVfR0VUX1pJUkNPTl9IQU5ETEVfSU5GT19G
VUNIU0lBID0KKyAgICBzdGF0aWNfY2FzdDxWa1N0cnVjdHVyZVR5cGU+KDEwMDEwMDYwMDEpOwor
Citjb25zdCBWa0V4dGVybmFsTWVtb3J5SGFuZGxlVHlwZUZsYWdCaXRzCisgICAgVktfRVhURVJO
QUxfTUVNT1JZX0hBTkRMRV9UWVBFX1RFTVBfWklSQ09OX1ZNT19CSVRfRlVDSFNJQSA9CisgICAg
ICAgIHN0YXRpY19jYXN0PFZrRXh0ZXJuYWxNZW1vcnlIYW5kbGVUeXBlRmxhZ0JpdHM+KDB4MDAx
MDAwMDApOworCitjb25zdCBWa0V4dGVybmFsU2VtYXBob3JlSGFuZGxlVHlwZUZsYWdCaXRzCisg
ICAgVktfRVhURVJOQUxfU0VNQVBIT1JFX0hBTkRMRV9UWVBFX1RFTVBfWklSQ09OX0VWRU5UX0JJ
VF9GVUNIU0lBID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8VmtFeHRlcm5hbFNlbWFwaG9yZUhhbmRs
ZVR5cGVGbGFnQml0cz4oMHgwMDEwMDAwMCk7CisKKyNkZWZpbmUgVktfRlVDSFNJQV9leHRlcm5h
bF9tZW1vcnkgMQorI2RlZmluZSBWS19GVUNIU0lBX0VYVEVSTkFMX01FTU9SWV9TUEVDX1ZFUlNJ
T04gMQorI2RlZmluZSBWS19GVUNIU0lBX0VYVEVSTkFMX01FTU9SWV9FWFRFTlNJT05fTkFNRSAi
VktfRlVDSFNJQV9leHRlcm5hbF9tZW1vcnkiCisKK3R5cGVkZWYgc3RydWN0IFZrSW1wb3J0TWVt
b3J5WmlyY29uSGFuZGxlSW5mb0ZVQ0hTSUEKK3sKKyAgICBWa1N0cnVjdHVyZVR5cGUgc1R5cGU7
CisgICAgY29uc3Qgdm9pZCAqcE5leHQ7CisgICAgVmtFeHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVG
bGFnQml0cyBoYW5kbGVUeXBlOworICAgIHp4X2hhbmRsZV90IGhhbmRsZTsKK30gVmtJbXBvcnRN
ZW1vcnlaaXJjb25IYW5kbGVJbmZvRlVDSFNJQTsKKwordHlwZWRlZiBzdHJ1Y3QgVmtNZW1vcnla
aXJjb25IYW5kbGVQcm9wZXJ0aWVzRlVDSFNJQQoreworICAgIFZrU3RydWN0dXJlVHlwZSBzVHlw
ZTsKKyAgICB2b2lkICpwTmV4dDsKKyAgICB6eF9oYW5kbGVfdCBtZW1vcnlUeXBlQml0czsKK30g
VmtNZW1vcnlaaXJjb25IYW5kbGVQcm9wZXJ0aWVzRlVDSFNJQTsKKwordHlwZWRlZiBzdHJ1Y3Qg
VmtNZW1vcnlHZXRaaXJjb25IYW5kbGVJbmZvRlVDSFNJQQoreworICAgIFZrU3RydWN0dXJlVHlw
ZSBzVHlwZTsKKyAgICBjb25zdCB2b2lkICpwTmV4dDsKKyAgICBWa0RldmljZU1lbW9yeSBtZW1v
cnk7CisgICAgVmtFeHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVGbGFnQml0cyBoYW5kbGVUeXBlOwor
fSBWa01lbW9yeUdldFppcmNvbkhhbmRsZUluZm9GVUNIU0lBOworCit0eXBlZGVmIFZrUmVzdWx0
KFZLQVBJX1BUUiAqUEZOX3ZrR2V0TWVtb3J5WmlyY29uSGFuZGxlRlVDSFNJQSkoCisgICAgVmtE
ZXZpY2UgZGV2aWNlLAorICAgIGNvbnN0IFZrTWVtb3J5R2V0WmlyY29uSGFuZGxlSW5mb0ZVQ0hT
SUEgKnBHZXRaaXJjb25IYW5kbGVJbmZvLAorICAgIHp4X2hhbmRsZV90ICpwWmlyY29uSGFuZGxl
KTsKK3R5cGVkZWYgVmtSZXN1bHQoVktBUElfUFRSICpQRk5fdmtHZXRNZW1vcnlaaXJjb25IYW5k
bGVQcm9wZXJ0aWVzRlVDSFNJQSkoCisgICAgVmtEZXZpY2UgZGV2aWNlLAorICAgIFZrRXh0ZXJu
YWxNZW1vcnlIYW5kbGVUeXBlRmxhZ0JpdHMgaGFuZGxlVHlwZSwKKyAgICB6eF9oYW5kbGVfdCBa
aXJjb25IYW5kbGUsCisgICAgVmtNZW1vcnlaaXJjb25IYW5kbGVQcm9wZXJ0aWVzRlVDSFNJQSAq
cE1lbW9yeVppcmNvbkhhbmRsZVByb3BlcnRpZXMpOworCisjaWZuZGVmIFZLX05PX1BST1RPVFlQ
RVMKK1ZLQVBJX0FUVFIgVmtSZXN1bHQgVktBUElfQ0FMTAordmtHZXRNZW1vcnlaaXJjb25IYW5k
bGVGVUNIU0lBKFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWa01lbW9yeUdldFppcmNvbkhhbmRsZUluZm9GVUNIU0lBICpwR2V0WmlyY29uSGFu
ZGxlSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eF9oYW5kbGVfdCAqcFpp
cmNvbkhhbmRsZSk7CisKK1ZLQVBJX0FUVFIgVmtSZXN1bHQgVktBUElfQ0FMTCB2a0dldE1lbW9y
eVppcmNvbkhhbmRsZVByb3BlcnRpZXNGVUNIU0lBKAorICAgIFZrRGV2aWNlIGRldmljZSwKKyAg
ICBWa0V4dGVybmFsTWVtb3J5SGFuZGxlVHlwZUZsYWdCaXRzIGhhbmRsZVR5cGUsCisgICAgenhf
aGFuZGxlX3QgWmlyY29uSGFuZGxlLAorICAgIFZrTWVtb3J5WmlyY29uSGFuZGxlUHJvcGVydGll
c0ZVQ0hTSUEgKnBNZW1vcnlaaXJjb25IYW5kbGVQcm9wZXJ0aWVzKTsKKyNlbmRpZgorCisjZGVm
aW5lIFZLX0ZVQ0hTSUFfZXh0ZXJuYWxfc2VtYXBob3JlIDEKKyNkZWZpbmUgVktfRlVDSFNJQV9F
WFRFUk5BTF9TRU1BUEhPUkVfU1BFQ19WRVJTSU9OIDEKKyNkZWZpbmUgVktfRlVDSFNJQV9FWFRF
Uk5BTF9TRU1BUEhPUkVfRVhURU5TSU9OX05BTUUgIlZLX0ZVQ0hTSUFfZXh0ZXJuYWxfc2VtYXBo
b3JlIgorCit0eXBlZGVmIHN0cnVjdCBWa0ltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUluZm9G
VUNIU0lBCit7CisgICAgVmtTdHJ1Y3R1cmVUeXBlIHNUeXBlOworICAgIGNvbnN0IHZvaWQgKnBO
ZXh0OworICAgIFZrU2VtYXBob3JlIHNlbWFwaG9yZTsKKyAgICBWa1NlbWFwaG9yZUltcG9ydEZs
YWdzIGZsYWdzOworICAgIFZrRXh0ZXJuYWxTZW1hcGhvcmVIYW5kbGVUeXBlRmxhZ0JpdHMgaGFu
ZGxlVHlwZTsKKyAgICB6eF9oYW5kbGVfdCBoYW5kbGU7Cit9IFZrSW1wb3J0U2VtYXBob3JlWmly
Y29uSGFuZGxlSW5mb0ZVQ0hTSUE7CisKK3R5cGVkZWYgc3RydWN0IFZrU2VtYXBob3JlR2V0Wmly
Y29uSGFuZGxlSW5mb0ZVQ0hTSUEKK3sKKyAgICBWa1N0cnVjdHVyZVR5cGUgc1R5cGU7CisgICAg
Y29uc3Qgdm9pZCAqcE5leHQ7CisgICAgVmtTZW1hcGhvcmUgc2VtYXBob3JlOworICAgIFZrRXh0
ZXJuYWxTZW1hcGhvcmVIYW5kbGVUeXBlRmxhZ0JpdHMgaGFuZGxlVHlwZTsKK30gVmtTZW1hcGhv
cmVHZXRaaXJjb25IYW5kbGVJbmZvRlVDSFNJQTsKKwordHlwZWRlZiBWa1Jlc3VsdChWS0FQSV9Q
VFIgKlBGTl92a0ltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUZVQ0hTSUEpKAorICAgIFZrRGV2
aWNlIGRldmljZSwKKyAgICBjb25zdCBWa0ltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUluZm9G
VUNIU0lBICpwSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlSW5mbyk7Cit0eXBlZGVmIFZrUmVz
dWx0KFZLQVBJX1BUUiAqUEZOX3ZrR2V0U2VtYXBob3JlWmlyY29uSGFuZGxlRlVDSFNJQSkoCisg
ICAgVmtEZXZpY2UgZGV2aWNlLAorICAgIGNvbnN0IFZrU2VtYXBob3JlR2V0WmlyY29uSGFuZGxl
SW5mb0ZVQ0hTSUEgKnBHZXRaaXJjb25IYW5kbGVJbmZvLAorICAgIHp4X2hhbmRsZV90ICpwWmly
Y29uSGFuZGxlKTsKKworI2lmbmRlZiBWS19OT19QUk9UT1RZUEVTCitWS0FQSV9BVFRSIFZrUmVz
dWx0IFZLQVBJX0NBTEwgdmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVGVUNIU0lBKAorICAg
IFZrRGV2aWNlIGRldmljZSwKKyAgICBjb25zdCBWa0ltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRs
ZUluZm9GVUNIU0lBICpwSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlSW5mbyk7CisKK1ZLQVBJ
X0FUVFIgVmtSZXN1bHQgVktBUElfQ0FMTAordmtHZXRTZW1hcGhvcmVaaXJjb25IYW5kbGVGVUNI
U0lBKFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWa1NlbWFwaG9yZUdldFppcmNvbkhhbmRsZUluZm9GVUNIU0lBICpwR2V0WmlyY29uSGFu
ZGxlSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eF9oYW5kbGVfdCAq
cFppcmNvbkhhbmRsZSk7CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmICAvLyBDT01NT05fVlVMS0FOX0ZVQ0hTSUFfRVhUX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmZyYS9BTkdMRVdyYW5nbGluZy5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luZnJhL0FOR0xFV3JhbmdsaW5nLm1kCmluZGV4IGY0MGViYzFjZDE0
ZjFiNTA1ZjFhMTcyOWUxY2M3ZGM1YzI4YzMyZmEuLjM2MWYzZDEyMmRlYTFiMjRmM2Q2ZWYwOTA1
ODNiOGZlNjliODFlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJh
L0FOR0xFV3JhbmdsaW5nLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJhL0FO
R0xFV3JhbmdsaW5nLm1kCkBAIC0xMyw3ICsxMywxMiBAQCBBcyBhbiBBTkdMRSBTaGVyaWZmLiBZ
b3VyIGpvYiBpcyB0bzoKIElmIHlvdSdyZSBub3QgYW4gQU5HTEUgdGVhbSBtZW1iZXIsIHlvdSBj
YW4gY29udGFjdCB1cyBvbiB0aGUgcHVibGljIEFOR0xFIHByb2plY3QKIFtHb29nbGUgZ3JvdXBd
KGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9hbmdsZXByb2plY3QpLgog
Ci0jIyBUYXNrIDE6IFRoZSBUcnkgV2F0ZXJmYWxsCisqKk5vdGUqKjogSXQncyBoaWdobHkgcmVj
b21tZW5kIHRoYXQgYWxsIHdyYW5nbGVycyBpbnN0YWxsIHRoZSBbQ2hyb21pdW0gRmxha2UgTGlu
a2VyXVtGbGFrZXJdCitleHRlbnNpb24gZm9yIGluc3BlY3RpbmcgYm90IGJ1aWxkcy4gSXQnbGwg
c2F2ZSB5b3UgYSBsb3Qgb2YgdGltZS4KKworW0ZsYWtlcl06IGh0dHBzOi8vY2hyb21lLmdvb2ds
ZS5jb20vd2Vic3RvcmUvZGV0YWlsL2ZsYWtlLWxpbmtlci9ib2Ftbm1iZ21mbm9ib21kZG1lbmJh
aWNvZGdnbGtoYworCisjIyBUYXNrIDE6IE1vbml0b3IgQU5HTEUgQ0kgYW5kIFRyeSBUZXN0ZXJz
CiAKIFlvdXIgZmlyc3Qgam9iIGlzIHRvIGtlZXAgdGhlCiBbQU5HTEUgVHJ5IFdhdGVyZmFsbF0o
aHR0cHM6Ly9jaS5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9nL2FuZ2xlLnRyeS9idWlsZGVycykg
aGVhbHRoeS4gIFNvbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJh
L1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJhL1JFQURNRS5tZAppbmRl
eCBkMzMwMWJlMDZmYWU5NmQxMjM5NTc3MzMxYmRiYzJhZmNhMzA5NmJiLi5lYTQ1ZWE0NzZlMDkz
NWEzYzA3OGMxNzRjZTg2NmUxZmNlNzUyMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9pbmZyYS9SRUFETUUubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5m
cmEvUkVBRE1FLm1kCkBAIC0xLDQgKzEsNDQgQEAKLSMgQU5HTEUgU3RhbmRhbG9uZSBUZXN0aW5n
IEluZnJhc3RydWN0dXJlCisjIEFOR0xFIFRlc3RpbmcgSW5mcmFzdHJ1Y3R1cmUKKworQU5HTEUg
cnVucyBodW5kcmVkcyBvZiB0aG91c2FuZHMgb2YgdGVzdHMgb24gZXZlcnkgY2hhbmdlIGJlZm9y
ZSBpdCBsYW5kcyBpbgordGhlIHRyZWUuIFdlIHNjYWxlIG91ciBwcmUtY29tbWl0IGFuZCBwb3N0
LWNvbW1pdCB0ZXN0aW5nIHRvIG1hbnkgbWFjaGluZXMKK3VzaW5nIFtDaHJvbWl1bSBTd2FybWlu
Z11bU3dhcm1pbmddLiBPdXIgdGVzdGluZyBzZXR1cCBoZWF2aWx5IGxldmVyYWdlcworZXhpc3Rp
bmcgd29yayBpbiBDaHJvbWl1bS4gV2UgYWxzbyBydW4gY29tcGlsZS1vbmx5CitbU3RhbmRhbG9u
ZSBUZXN0aW5nXVtTdGFuZGFsb25lXSB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbiBhIENocm9taXVt
IGNoZWNrb3V0LgorCitBbHNvIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBbQU5HTEUgV3Jhbmds
aW5nXVtXcmFuZ2xpbmddIGZvciBtb3JlIGluZm8uCisKKyMjIFByZS1Db21taXQgVGVzdGluZwor
CitTZWUgdGhlIHByZS1jb21taXQgdHJ5IHdhdGVyZmFsbCBoZXJlOgorCitbYGh0dHBzOi8vY2ku
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0vZy9hbmdsZS50cnkvYnVpbGRlcnNgXShodHRwczovL2Np
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2cvYW5nbGUudHJ5L2J1aWxkZXJzKQorCitXZSBjdXJy
ZW50bHkgcnVuIHByZS1jb21taXQgdGVzdHMgb246CisKKyAqIFdpbmRvd3MgMzItYml0IEFNRCBh
bmQgV2luZG93cyA2NC1iaXQgSW50ZWwgYW5kIE5WSURJQSBHUFVzCisgKiBMaW51eCA2NC1iaXQg
TlZJRElBIGFuZCBJbnRlbCBHUFVzCisgKiBNYWMgTlZJRElBLCBJbnRlbCBhbmQgQU1EIEdQVXMK
KyAqIFBpeGVsIDIgYW5kIE5leHVzIDVYCisgKiBGdWNoc2lhIHRlc3RpbmcgaW4gYSBWTQorCitM
b29raW5nIGF0IGFuIGV4YW1wbGUgYnVpbGQgc2hvd3MgaG93IHRlc3RzIGFyZSBzcGxpdCB1cCBi
ZXR3ZWVuIG1hY2hpbmVzLiBTZWUgZm9yIGV4YW1wbGU6CisKK1tgaHR0cHM6Ly9jaS5jaHJvbWl1
bS5vcmcvcC9jaHJvbWl1bS9idWlsZGVycy90cnkvbWFjLWFuZ2xlLXJlbC81OTA1YF0oaHR0cHM6
Ly9jaS5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9idWlsZGVycy90cnkvbWFjLWFuZ2xlLXJlbC81
OTA1KQorCitUaGlzIGJ1aWxkIHJhbiA4MiB0ZXN0IHN0ZXBzIGFjcm9zcyAzIEdQVSBmYW1pbGll
cy4gSW4gc29tZSBjYXNlcyAoZS5nLgord2ViZ2wyX2NvbmZvcm1hbmNlX3Rlc3RzKSB0aGUgdGVz
dCBpcyBzcGxpdCB1cCBiZXR3ZWVuIG11bHRpcGxlIG1hY2hpbmVzIHRvCitydW4gZmFzdGVyIChp
biB0aGlzIGNhc2UgMjAgZGlmZmVyZW50IG1hY2hpbmVzIGF0IG9uY2UpLiBUaGlzIGJ1aWxkIHRv
b2sgMjcKK21pbnV0ZXMgdG8gY29tcGxldGUgbXVsdGlwbGUgaG91cnMgb2YgcmVhbCBhdXRvbWF0
ZWQgdGVzdGluZy4KKworRm9yIG1vcmUgZGV0YWlscyBvbiBydW5uaW5nIGFuZCB3b3JraW5nIHdp
dGggb3VyIHRlc3Qgc2V0cyBzZWUgdGhlIGRvY3MgaW4gW0NvbnRyaWJ1dGluZyBDb2RlXVtDb250
cmliXS4KKworW1N3YXJtaW5nXTogaHR0cHM6Ly9jaHJvbWl1bS1zd2FybS5hcHBzcG90LmNvbS8K
K1tTdGFuZGFsb25lXTogI0FOR0xFLVN0YW5kYWxvbmUtVGVzdGluZworW0NvbnRyaWJdOiAuLi9k
b2MvQ29udHJpYnV0aW5nQ29kZS5tZCNUZXN0aW5nCitbV3JhbmdsaW5nXTogQU5HTEVXcmFuZ2xp
bmcubWQKKworIyMgQU5HTEUgU3RhbmRhbG9uZSBUZXN0aW5nCiAKIEluIGFkZGl0aW9uIHRvIHRo
ZSBBTkdMRSB0cnkgYm90cyB1c2luZyBDaHJvbWUsIGFuZCB0aGUgR1BVLkZZSSBib3RzLCBBTkdM
RQogaGFzIHN0YW5kYWxvbmUgdGVzdGluZyBvbiB0aGUgQ2hyb21lIGluZnJhc3RydWN0dXJlLiBD
dXJyZW50bHkgdGhlc2UgdGVzdHMgYXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmZyYS9jb25maWcvZ2xvYmFsL2NyLWJ1aWxkYnVja2V0LmNmZyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luZnJhL2NvbmZpZy9nbG9iYWwvY3ItYnVpbGRidWNrZXQuY2ZnCmluZGV4
IGM3ZDdmNGUwOWNlM2JlZmZmMWQyNTZjNjZhZTZiZWEyNzRhNTdhM2QuLjJiYWNhMzI5NmYxNjg1
NWQxNTJhODUyMWEzNmE5NzE1MmJjN2NhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luZnJhL2NvbmZpZy9nbG9iYWwvY3ItYnVpbGRidWNrZXQuY2ZnCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJhL2NvbmZpZy9nbG9iYWwvY3ItYnVpbGRidWNrZXQuY2Zn
CkBAIC02Myw3ICs2Myw3IEBAIGJ1aWxkZXJfbWl4aW5zIHsKICAgcmVjaXBlIHsKICAgICBwcm9w
ZXJ0aWVzX2o6IDw8RU9GCiAgICAgICAkZGVwb3RfdG9vbHMvb3N4X3Nkazp7Ci0gICAgICAgICJz
ZGtfdmVyc2lvbiI6ICIxMGI2MSIKKyAgICAgICAgInNka192ZXJzaW9uIjogIjExYjUyIgogICAg
ICAgfQogICAgIEVPRgogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
YW1wbGVzL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2FtcGxlcy9CVUlMRC5n
bgppbmRleCBjZDA5NTlhNzA1N2ZjZWZkYTNiMzAxMDM1ODU2Yjc2ZWEwMmQ3NTNhLi5iMGNlMjA4
OGIwNGViMTI1MGI1NDUyYWRjYjE1ZDBlNDA3YmI4YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zYW1wbGVzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NhbXBsZXMvQlVJTEQuZ24KQEAgLTQ4LDkgKzQ4LDcgQEAgdGVtcGxhdGUoImFuZ2xlX3Nh
bXBsZSIpIHsKICAgaWYgKGRlZmluZWQoaW52b2tlci5kYXRhKSkgewogICAgIGNvcHkodGFyZ2V0
X25hbWUgKyAiX2RhdGEiKSB7CiAgICAgICBzb3VyY2VzID0gaW52b2tlci5kYXRhCi0gICAgICBv
dXRwdXRzID0gWwotICAgICAgICAiJHJvb3Rfb3V0X2Rpci97e3NvdXJjZV9maWxlX3BhcnR9fSIs
Ci0gICAgICBdCisgICAgICBvdXRwdXRzID0gWyAiJHJvb3Rfb3V0X2Rpci97e3NvdXJjZV9maWxl
X3BhcnR9fSIgXQogICAgIH0KICAgfQogCkBAIC02MCwxMSArNTgsMTAgQEAgdGVtcGxhdGUoImFu
Z2xlX3NhbXBsZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImNmbGFncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZWZpbmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHMiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic291cmNlcyIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQotICAgIGRlcHMgPSBbCi0gICAgICAiOnNhbXBsZV91dGlsIiwKLSAgICBdCisgICAg
ZGVwcyArPSBbICI6c2FtcGxlX3V0aWwiIF0KICAgICBpZiAoZGVmaW5lZChpbnZva2VyLmRhdGEp
KSB7CiAgICAgICBkZXBzICs9IFsgIjoke3RhcmdldF9uYW1lfV9kYXRhIiBdCiAgICAgfQpAQCAt
NzUsMjIgKzcyLDIwIEBAIHRlbXBsYXRlKCJhbmdsZV9zYW1wbGUiKSB7CiAgIH0KIH0KIAorc2V0
X2RlZmF1bHRzKCJhbmdsZV9zYW1wbGUiKSB7CisgIGRlcHMgPSBbXQorfQorCiBhbmdsZV9zYW1w
bGUoImhlbGxvX3RyaWFuZ2xlIikgewotICBzb3VyY2VzID0gWwotICAgICJoZWxsb190cmlhbmds
ZS9IZWxsb1RyaWFuZ2xlLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgImhlbGxvX3RyaWFuZ2xl
L0hlbGxvVHJpYW5nbGUuY3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgibWlwX21hcF8yZCIpIHsK
LSAgc291cmNlcyA9IFsKLSAgICAibWlwX21hcF8yZC9NaXBNYXAyRC5jcHAiLAotICBdCisgIHNv
dXJjZXMgPSBbICJtaXBfbWFwXzJkL01pcE1hcDJELmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUo
Im11bHRpX3RleHR1cmUiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgIm11bHRpX3RleHR1cmUvTXVs
dGlUZXh0dXJlLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgIm11bHRpX3RleHR1cmUvTXVsdGlU
ZXh0dXJlLmNwcCIgXQogICBkYXRhID0gWwogICAgICJtdWx0aV90ZXh0dXJlL2Jhc2VtYXAudGdh
IiwKICAgICAibXVsdGlfdGV4dHVyZS9saWdodG1hcC50Z2EiLApAQCAtOTgsMTUgKzkzLDExIEBA
IGFuZ2xlX3NhbXBsZSgibXVsdGlfdGV4dHVyZSIpIHsKIH0KIAogYW5nbGVfc2FtcGxlKCJtdWx0
aV93aW5kb3ciKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgIm11bHRpX3dpbmRvdy9NdWx0aVdpbmRv
dy5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJtdWx0aV93aW5kb3cvTXVsdGlXaW5kb3cuY3Bw
IiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgibXVsdGlwbGVfZHJhd19idWZmZXJzIikgewotICBzb3Vy
Y2VzID0gWwotICAgICJtdWx0aXBsZV9kcmF3X2J1ZmZlcnMvTXVsdGlwbGVEcmF3QnVmZmVycy5j
cHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJtdWx0aXBsZV9kcmF3X2J1ZmZlcnMvTXVsdGlwbGVE
cmF3QnVmZmVycy5jcHAiIF0KICAgZGF0YSA9IFsKICAgICAibXVsdGlwbGVfZHJhd19idWZmZXJz
L211bHRpcGxlX2RyYXdfYnVmZmVyc19jb3B5X2ZzLmdsc2wiLAogICAgICJtdWx0aXBsZV9kcmF3
X2J1ZmZlcnMvbXVsdGlwbGVfZHJhd19idWZmZXJzX2ZzLmdsc2wiLApAQCAtMTE1LDEwOCArMTA2
LDcyIEBAIGFuZ2xlX3NhbXBsZSgibXVsdGlwbGVfZHJhd19idWZmZXJzIikgewogfQogCiBhbmds
ZV9zYW1wbGUoIm11bHRpdmlldyIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAibXVsdGl2aWV3L011
bHRpdmlldy5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJtdWx0aXZpZXcvTXVsdGl2aWV3LmNw
cCIgXQogfQogCiBhbmdsZV9zYW1wbGUoInBhcnRpY2xlX3N5c3RlbSIpIHsKLSAgc291cmNlcyA9
IFsKLSAgICAicGFydGljbGVfc3lzdGVtL1BhcnRpY2xlU3lzdGVtLmNwcCIsCi0gIF0KLSAgZGF0
YSA9IFsKLSAgICAicGFydGljbGVfc3lzdGVtL3Ntb2tlLnRnYSIsCi0gIF0KKyAgc291cmNlcyA9
IFsgInBhcnRpY2xlX3N5c3RlbS9QYXJ0aWNsZVN5c3RlbS5jcHAiIF0KKyAgZGF0YSA9IFsgInBh
cnRpY2xlX3N5c3RlbS9zbW9rZS50Z2EiIF0KIH0KIAogYW5nbGVfc2FtcGxlKCJwb3N0X3N1Yl9i
dWZmZXIiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgInBvc3Rfc3ViX2J1ZmZlci9Qb3N0U3ViQnVm
ZmVyLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgInBvc3Rfc3ViX2J1ZmZlci9Qb3N0U3ViQnVm
ZmVyLmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoInNpbXBsZV9pbnN0YW5jaW5nIikgewotICBz
b3VyY2VzID0gWwotICAgICJzaW1wbGVfaW5zdGFuY2luZy9TaW1wbGVJbnN0YW5jaW5nLmNwcCIs
Ci0gIF0KKyAgc291cmNlcyA9IFsgInNpbXBsZV9pbnN0YW5jaW5nL1NpbXBsZUluc3RhbmNpbmcu
Y3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgic2ltcGxlX3RleHR1cmVfMmQiKSB7Ci0gIHNvdXJj
ZXMgPSBbCi0gICAgInNpbXBsZV90ZXh0dXJlXzJkL1NpbXBsZVRleHR1cmUyRC5jcHAiLAotICBd
CisgIHNvdXJjZXMgPSBbICJzaW1wbGVfdGV4dHVyZV8yZC9TaW1wbGVUZXh0dXJlMkQuY3BwIiBd
CiB9CiAKIGFuZ2xlX3NhbXBsZSgic2ltcGxlX3RleHR1cmVfY3ViZW1hcCIpIHsKLSAgc291cmNl
cyA9IFsKLSAgICAic2ltcGxlX3RleHR1cmVfY3ViZW1hcC9TaW1wbGVUZXh0dXJlQ3ViZW1hcC5j
cHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJzaW1wbGVfdGV4dHVyZV9jdWJlbWFwL1NpbXBsZVRl
eHR1cmVDdWJlbWFwLmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoInNpbXBsZV92ZXJ0ZXhfc2hh
ZGVyIikgewotICBzb3VyY2VzID0gWwotICAgICJzaW1wbGVfdmVydGV4X3NoYWRlci9TaW1wbGVW
ZXJ0ZXhTaGFkZXIuY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAic2ltcGxlX3ZlcnRleF9zaGFk
ZXIvU2ltcGxlVmVydGV4U2hhZGVyLmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoInN0ZW5jaWxf
b3BlcmF0aW9ucyIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAic3RlbmNpbF9vcGVyYXRpb25zL1N0
ZW5jaWxPcGVyYXRpb25zLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgInN0ZW5jaWxfb3BlcmF0
aW9ucy9TdGVuY2lsT3BlcmF0aW9ucy5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxlKCJ0ZXhfcmVk
ZWZfbWljcm9iZW5jaCIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAidGV4X3JlZGVmX21pY3JvYmVu
Y2gvVGV4UmVkZWZNaWNyb0JlbmNoLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgInRleF9yZWRl
Zl9taWNyb2JlbmNoL1RleFJlZGVmTWljcm9CZW5jaC5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxl
KCJ0ZXh0dXJlX3dyYXAiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgInRleHR1cmVfd3JhcC9UZXh0
dXJlV3JhcC5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJ0ZXh0dXJlX3dyYXAvVGV4dHVyZVdy
YXAuY3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgidHJpX2Zhbl9taWNyb2JlbmNoIikgewotICBz
b3VyY2VzID0gWwotICAgICJ0cmlfZmFuX21pY3JvYmVuY2gvVHJpRmFuTWljcm9CZW5jaC5jcHAi
LAotICBdCisgIHNvdXJjZXMgPSBbICJ0cmlfZmFuX21pY3JvYmVuY2gvVHJpRmFuTWljcm9CZW5j
aC5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxlKCJ3aW5kb3dfdGVzdCIpIHsKLSAgc291cmNlcyA9
IFsKLSAgICAiV2luZG93VGVzdC9XaW5kb3dUZXN0LmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsg
IldpbmRvd1Rlc3QvV2luZG93VGVzdC5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxlKCJnbGVzMV9o
ZWxsb190cmlhbmdsZSIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiZ2xlczEvSGVsbG9Ucmlhbmds
ZS5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJnbGVzMS9IZWxsb1RyaWFuZ2xlLmNwcCIgXQog
fQogCiBhbmdsZV9zYW1wbGUoImdsZXMxX3NpbXBsZV90ZXh0dXJlXzJkIikgewotICBzb3VyY2Vz
ID0gWwotICAgICJnbGVzMS9TaW1wbGVUZXh0dXJlMkQuY3BwIiwKLSAgXQorICBzb3VyY2VzID0g
WyAiZ2xlczEvU2ltcGxlVGV4dHVyZTJELmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoImdsZXMx
X3NpbXBsZV9saWdodGluZyIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiZ2xlczEvU2ltcGxlTGln
aHRpbmcuY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAiZ2xlczEvU2ltcGxlTGlnaHRpbmcuY3Bw
IiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgiZ2xlczFfZmxhdF9zaGFkaW5nIikgewotICBzb3VyY2Vz
ID0gWwotICAgICJnbGVzMS9GbGF0U2hhZGluZy5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJn
bGVzMS9GbGF0U2hhZGluZy5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxlKCJnbGVzMV9kcmF3X3Rl
eHR1cmUiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgImdsZXMxL0RyYXdUZXh0dXJlLmNwcCIsCi0g
IF0KKyAgc291cmNlcyA9IFsgImdsZXMxL0RyYXdUZXh0dXJlLmNwcCIgXQogfQogCiBpZiAoYW5n
bGVfYnVpbGRfY2FwdHVyZV9yZXBsYXlfc2FtcGxlKSB7CkBAIC0yMzgsNiArMTkzLDggQEAgaWYg
KGFuZ2xlX2J1aWxkX2NhcHR1cmVfcmVwbGF5X3NhbXBsZSkgewogICAgICAgICAgICJjYXB0dXJl
X3JlcGxheS9hbmdsZV9jYXB0dXJlX2NvbnRleHQke19jb250ZXh0aWR9LmgiLAogICAgICAgICBd
CiAKKyAgICBkZXBzID0gWyAiJGFuZ2xlX3Jvb3Q6YW5nbGVfY29tcHJlc3Npb24iIF0KKwogICAg
IF9kYXRhX3BhdGggPSByZWJhc2VfcGF0aCgiY2FwdHVyZV9yZXBsYXkiLCByb290X291dF9kaXIp
CiAgICAgZGVmaW5lcyA9IFsKICAgICAgICJBTkdMRV9DQVBUVVJFX1JFUExBWV9TQU1QTEVfREFU
QV9ESVI9XCIke19kYXRhX3BhdGh9XCIiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc2FtcGxlcy9jYXB0dXJlX3JlcGxheS9DYXB0dXJlUmVwbGF5LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NhbXBsZXMvY2FwdHVyZV9yZXBsYXkvQ2FwdHVyZVJlcGxheS5jcHAK
aW5kZXggYzI4MjQ3NjYyYjdlOWIyYWY2NjFhMGU4NDJhNWY3ZjgxMzgxOTM0NC4uYTM4YzIzYmU4
YjBlODZjYjE4ZjAwNmQzYWNhNmZiOTg5NGQ5MTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc2FtcGxlcy9jYXB0dXJlX3JlcGxheS9DYXB0dXJlUmVwbGF5LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zYW1wbGVzL2NhcHR1cmVfcmVwbGF5L0NhcHR1cmVS
ZXBsYXkuY3BwCkBAIC05LDYgKzksOCBAQAogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIAorI2lu
Y2x1ZGUgInV0aWwvZnJhbWVfY2FwdHVyZV91dGlscy5oIgorCiAjZGVmaW5lIEFOR0xFX01BQ1JP
X1NUUklOR0laRV9BVVgoYSkgI2EKICNkZWZpbmUgQU5HTEVfTUFDUk9fU1RSSU5HSVpFKGEpIEFO
R0xFX01BQ1JPX1NUUklOR0laRV9BVVgoYSkKICNkZWZpbmUgQU5HTEVfTUFDUk9fQ09OQ0FUX0FV
WChhLCBiKSBhIyNiCkBAIC0zOSw2ICs0MSwxMCBAQCBjbGFzcyBDYXB0dXJlUmVwbGF5U2FtcGxl
IDogcHVibGljIFNhbXBsZUFwcGxpY2F0aW9uCiAgICAgICAgIHN0ZDo6c3RyaW5nIGV4ZURpciA9
IGFuZ2xlOjpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7CiAgICAgICAgIGlmICghYW5nbGU6OlNl
dENXRChleGVEaXIuY19zdHIoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmIChrSXNCaW5hcnlEYXRhQ29tcHJlc3NlZCkKKyAgICAgICAgeworICAgICAgICAgICAgU2V0
QmluYXJ5RGF0YURlY29tcHJlc3NDYWxsYmFjayhhbmdsZTo6RGVjb21wcmVzc0JpbmFyeURhdGEp
OworICAgICAgICB9CiAgICAgICAgIFNldEJpbmFyeURhdGFEaXIoQU5HTEVfQ0FQVFVSRV9SRVBM
QVlfU0FNUExFX0RBVEFfRElSKTsKICAgICAgICAgU2V0dXBDb250ZXh0UmVwbGF5KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NhbXBsZXMvbXVsdGlwbGVfZHJhd19i
dWZmZXJzL011bHRpcGxlRHJhd0J1ZmZlcnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c2FtcGxlcy9tdWx0aXBsZV9kcmF3X2J1ZmZlcnMvTXVsdGlwbGVEcmF3QnVmZmVycy5jcHAKaW5k
ZXggYzEyMzFjMzFiMDE2NmRhZjY3YTNjMzgwYTY4YTlmNzE1NDdmYTVmMi4uMzJhNWRhMTljNzhi
MzUxMDJjZDU0YWZjMmI5YWI4NTJiMTJkMTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2FtcGxlcy9tdWx0aXBsZV9kcmF3X2J1ZmZlcnMvTXVsdGlwbGVEcmF3QnVmZmVy
cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2FtcGxlcy9tdWx0aXBsZV9kcmF3
X2J1ZmZlcnMvTXVsdGlwbGVEcmF3QnVmZmVycy5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3Mg
TXVsdGlwbGVEcmF3QnVmZmVyc1NhbXBsZSA6IHB1YmxpYyBTYW1wbGVBcHBsaWNhdGlvbgogICAg
ICAgICBmc1N0cmVhbSA8PCBhbmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpIDw8ICIvbXVs
dGlwbGVfZHJhd19idWZmZXJzX2ZzLmdsc2wiOwogCiAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGNvcHlGc1N0cmVhbTsKLSAgICAgICAgZnNTdHJlYW0gPDwgYW5nbGU6OkdldEV4ZWN1dGFibGVE
aXJlY3RvcnkoKSA8PCAiL211bHRpcGxlX2RyYXdfYnVmZmVyc19jb3B5X2ZzLmdsc2wiOworICAg
ICAgICBjb3B5RnNTdHJlYW0gPDwgYW5nbGU6OkdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKSA8PCAi
L211bHRpcGxlX2RyYXdfYnVmZmVyc19jb3B5X2ZzLmdsc2wiOwogCiAgICAgICAgIG1NUlRQcm9n
cmFtID0gQ29tcGlsZVByb2dyYW1Gcm9tRmlsZXModnNTdHJlYW0uc3RyKCksIGZzU3RyZWFtLnN0
cigpKTsKICAgICAgICAgaWYgKCFtTVJUUHJvZ3JhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9BTkdMRV9mb3JtYXQu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hh
c2hlcy9BTkdMRV9mb3JtYXQuanNvbgppbmRleCBiZDQ5MWEyYmZmZjE5YmE4MGM3YTE5Njc1OTM3
NTk5NzExZjJkMDQ4Li4wMTM5MTU0ODIzZjhjZDgxMjcxZDg4N2ZlMWJkZmU0NDUwMzg0ZWU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlv
bl9oYXNoZXMvQU5HTEVfZm9ybWF0Lmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0FOR0xFX2Zvcm1hdC5qc29uCkBAIC0xLDE0
ICsxLDE0IEBACiB7CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0SURfYXV0b2dlbi5o
IjoKLSAgICAiNmRmNDYzMmMyOTA4NzUxNjM1Mzk2YTA3M2MyMDZkYTYiLAorICAgICIyNGZkY2U0
MDcyZDdmOWU3NjMzN2ZmYmU0YzU4YjRhYiIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9y
bWF0X3RhYmxlX2F1dG9nZW4uY3BwIjoKLSAgICAiNjlkNTMyNWY1YTcxYWY0ZDdhNTAxN2IwYTg1
NzQzYTQiLAorICAgICI4OTRlYWExNTA5NDlkMzJjNTYzZTk0MDI0MzEyMjk1ZCIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0LnB5IjoKICAgICAiMzJiYTcxOTQyYzBmZDAw
ZTY4MDcxMDRmMWJiODBhM2MiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1h
dF9kYXRhLmpzb24iOgotICAgICJiMGMzOTgyN2MzNjk0MWEyODNmNjc5MzQ1ZmVhNmQzZSIsCisg
ICAgImI4YmZlNDcwYzMxYjEyYjI3ZjNhMmJkYjAyODhlNGJlIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpzb24iOgotICAgICJiY2E1ZTY4NjAwMWY2ZGQwYWYz
MDZhZjIzNGEzNjY3NyIsCisgICAgImZhZDU4MTE3NjU3YjZiZGU5NDg4YTEwZDM1ODcyZDQ1IiwK
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nZW5fYW5nbGVfZm9ybWF0X3RhYmxlLnB5IjoKICAg
ICAiOGUzNDlhNjQzZTgxYTAyOGViYjU0YmRlMzc1NmY5ZjciCiB9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9j
b2RlX2dlbmVyYXRpb25faGFzaGVzL0FOR0xFX2xvYWRfZnVuY3Rpb25zX3RhYmxlLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvQU5H
TEVfbG9hZF9mdW5jdGlvbnNfdGFibGUuanNvbgppbmRleCBiMGMxOTI1OGMyZTE3NTZmY2ViMTYx
NjgyZjRlNzEzM2U3NGEyYzE5Li5hZjc4NzZlMmIxYTQ5MTgxNjJlZWNkOTdiZGI4ZWE2ZjFhZDEy
OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2Vu
ZXJhdGlvbl9oYXNoZXMvQU5HTEVfbG9hZF9mdW5jdGlvbnNfdGFibGUuanNvbgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvQU5HTEVf
bG9hZF9mdW5jdGlvbnNfdGFibGUuanNvbgpAQCAtNCw3ICs0LDcgQEAKICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUucHkiOgogICAgICI5YjRlYTZiY2I0
ZWI0YzQzZjQ4YTA5N2E5ZWM5MjBmMSIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9m
dW5jdGlvbnNfZGF0YS5qc29uIjoKLSAgICAiOWM0ZjhmZjVlZjZjYWI3YjIyZmU3NmJjZTY0M2Zh
ZGQiLAorICAgICI3ZGY2NGE1NDgxZjU1ZjMwOTZhZmYxMTY0OWQ5OTkyZCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAiOgotICAgICIy
Y2NjYWQ2MzViYmEzNGE4ZTJlZTdlZjI2YzEzNjQ5ZiIKKyAgICAiODI2NThlMDVhMTAxOTM3NTUw
MTA3NmM0MDQzZDZmODIiCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVz
L0QzRDExX2Zvcm1hdC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2Rl
X2dlbmVyYXRpb25faGFzaGVzL0QzRDExX2Zvcm1hdC5qc29uCmluZGV4IDUzNmYyMjc4ODY0ZWRl
ZGRiY2E1ZjQ2ZjBkN2ZkNWVlZmU3YzZiZTUuLmQ1ZjY1MWZiNzBlZDYwMjA4YTgzMWZiMzM2Mjhl
ZGFiYmM4Yzc2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EM0QxMV9mb3JtYXQuanNvbgorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvRDNEMTFfZm9ybWF0
Lmpzb24KQEAgLTQsOSArNCw5IEBACiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2dlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weSI6CiAgICAgImJmMTFlMzQwNGQ0NjIyMDU5YjZl
OWM0ZTk2YWJmOTVlIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVy
ZV9mb3JtYXRfZGF0YS5qc29uIjoKLSAgICAiZDc0ODNlY2U4MTdlODE5NTg4ZjRjYTE1NzcxNmRj
N2IiLAorICAgICJjODA3MDhjMTgzNDhmZDg5YTNiOTE4ZTU4ZTc0YzFmOCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X21hcC5qc29uIjoKICAgICAi
ZTlkZmJkNTFmZjE4MzgwOWY1OTVmOGZjNWRiOWMyMTciLAogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCI6Ci0gICAgIjAz
ZDJiODVkYjI4ZGU1Yzk0ZjFlMzhkMmVkNGVlMzg1IgorICAgICJmNDg4NjQxNTljM2ExZmU2Y2E3
NTY3ZTNlYjgyMTVmYiIKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMv
RFhHSV9mb3JtYXQuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9n
ZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1hdC5qc29uCmluZGV4IDg4MGIwMGVmZTNlZjkzNmVh
Yzg1ZjQyMDUyZDNjOGU4N2QwMzlkMzQuLjEyZWY4NGUyZGM2MzU5ZGMwYTFlMjFhYWJkZTkzOWEz
ZTc2OGYwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29k
ZV9nZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1hdC5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1hdC5qc29u
CkBAIC0yLDExICsyLDExIEBACiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0
LnB5IjoKICAgICAiMzJiYTcxOTQyYzBmZDAwZTY4MDcxMDRmMWJiODBhM2MiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbiI6Ci0gICAgImJjYTVlNjg2MDAx
ZjZkZDBhZjMwNmFmMjM0YTM2Njc3IiwKKyAgICAiZmFkNTgxMTc2NTdiNmJkZTk0ODhhMTBkMzU4
NzJkNDUiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9k
YXRhLmpzb24iOgotICAgICIyNGY1MjViMDVkYzY2NWZiYmM4YzZkNjhmYjg2MzcxOSIsCisgICAg
IjM0MjhlNDc2MWNjZDA1Zjk2MGFkZmZkNmNjYmQ4NmM1IiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwIjoKLSAgICAiMzJiOTg2
MGUzZmQ4ZTg3YTg5ZmY5YTA5ZTg0OGU1MTYiLAorICAgICI5NzQzMDhjYTc5ODQ3NmRmYWEwNzZm
Yjg2NDQ3ODMxMCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdp
X2Zvcm1hdF90YWJsZS5weSI6CiAgICAgIjQxMWU2MDY0YjkxNmQ1NzBmYTc2OTQ5ODIwZDM0YTQ1
IgogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1hdF9z
dXBwb3J0Lmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJh
dGlvbl9oYXNoZXMvRFhHSV9mb3JtYXRfc3VwcG9ydC5qc29uCmluZGV4IGMyOTg0MmZlYWIwYmUz
YTIwZWYyZTdlMDAxOWFiZjFmYTIwZGY4MzMuLjg1YjcwZTM3ZDUzN2FlYTFlYjAxZDBiNzI3NTdl
NDAzMzRmZThmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1hdF9zdXBwb3J0Lmpzb24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0RYR0lf
Zm9ybWF0X3N1cHBvcnQuanNvbgpAQCAtMSw4ICsxLDggQEAKIHsKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X2RhdGEuanNvbiI6Ci0gICAgIjA5MTk1MDUz
Zjg4MjlmYzgxZWZlMDgyMjliNTRhOGI1IiwKKyAgICAiODYxMDM3ZmYyMzQwZGQ1MmU3MTNjN2I3
MjgzNjA5YmQiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBv
cnRfdGFibGVfYXV0b2dlbi5jcHAiOgotICAgICI3ZWMzMmNlMGFkNDE0NTBiZTc0OTNjMWRiMTEz
MGUyNSIsCisgICAgIjNmMzJlYWJlNDM2MGUzNWQwNzYyNjVhNmExNGQ5YWE1IiwKICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkiOgog
ICAgICJiNDY0ZjE1M2YxNWQ2MGRmMWM2NTM2YWRiZmFmYjA3MiIKIH0KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRz
L2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfQ1RTXyhkRVFQKV9idWlsZF9maWxlcy5qc29uIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dM
X0NUU18oZEVRUClfYnVpbGRfZmlsZXMuanNvbgppbmRleCA1OGZkNTQ4YWJjNGVjYTQ1YTUwZDZl
YzQ3NzJkNmY0OTFkOGM2ZWY1Li44ZWUxNmI3ZTg0NDNlZjJlOGFmNmUyNGE3M2RlZjVhZDdjY2Rh
ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2Vu
ZXJhdGlvbl9oYXNoZXMvR0xfQ1RTXyhkRVFQKV9idWlsZF9maWxlcy5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9DVFNf
KGRFUVApX2J1aWxkX2ZpbGVzLmpzb24KQEAgLTIsNyArMiw3IEBACiAgICJzY3JpcHRzL2dlbl92
a19nbF9jdHNfYnVpbGQucHkiOgogICAgICI1MWQ3M2Y1ZGRhNmNkMGFmYWMyYjI0MWJmOTU4MDVk
ZCIsCiAgICJzcmMvdGVzdHMvZGVxcF9zdXBwb3J0L0JVSUxELmduIjoKLSAgICAiYWFjOWZkNjQx
MDdjY2NkZDBmM2Q0N2QzNzk3NGJhNjciLAorICAgICI4NjBjYzliNzI4ZGMzNTQ1NGIwZDUyNzY1
MWNjNDdkZSIsCiAgICJzcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZGF0YV9hdXRvZ2VuLmdu
aSI6CiAgICAgIjNhNzRlOWU0MDRhOWIxYTRmZjFhNzhkOGE2NDBjNDcyIiwKICAgInRoaXJkX3Bh
cnR5L1ZLLUdMLUNUUy9zcmMvQ01ha2VMaXN0cy50eHQiOgpAQCAtNDIsOSArNDIsOSBAQAogICAi
dGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC9zcGlydi10b29scy9DTWFrZUxpc3Rz
LnR4dCI6CiAgICAgImNjYThiNGI5ODRjNDBhZmI5ODgwZDE3N2Q1MzYyM2ExIiwKICAgInRoaXJk
X3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3RzL2ZyYW1ld29yay92dWxrYW4v
Q01ha2VMaXN0cy50eHQiOgotICAgICIyMjYzMzE3MGQxNjEwYjkxYmFkNzYyNGJkNDJjZWI4MyIs
CisgICAgIjI2MGIyYTFmZmIxMzY5ZTk5N2NkZTYxOTU2ZDk3M2JhIiwKICAgInRoaXJkX3BhcnR5
L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3RzL21vZHVsZXMvdnVsa2FuL0NNYWtlTGlz
dHMudHh0IjoKLSAgICAiMDVlMDQ4NDFmNjUxMjI5N2Y0OWM5ZDY0MjY0OWY0MjEiLAorICAgICI1
OGEwZjU1NmRiMzU2NzAwY2ZiZjkzMzk2ZmM5YmU3NCIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1D
VFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9hbWJlci9DTWFrZUxpc3Rz
LnR4dCI6CiAgICAgIjg2Y2IwM2E3NzFkNWMwYTU3YTZlMGRiYjMwNWMyYWJhIiwKICAgInRoaXJk
X3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3RzL21vZHVsZXMvdnVsa2FuL2Fw
aS9DTWFrZUxpc3RzLnR4dCI6CkBAIC04Miw3ICs4Miw3IEBACiAgICJ0aGlyZF9wYXJ0eS9WSy1H
TC1DVFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9tdWx0aXZpZXcvQ01h
a2VMaXN0cy50eHQiOgogICAgICIxNmEzNDFlNGYwOGU4NWFkYWQ2ZGJmMDMwOTg4M2Y1YiIsCiAg
ICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1
bGthbi9waXBlbGluZS9DTWFrZUxpc3RzLnR4dCI6Ci0gICAgIjczYTFmZjhhYTA4OTJmZjZmODZi
NDZmZWIzM2QzZGEwIiwKKyAgICAiMDZmN2M4NGVhNmI4MGU5YmNiOGQ3ZGY1MDk0NmQ4MjciLAog
ICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92
dWxrYW4vcHJvdGVjdGVkX21lbW9yeS9DTWFrZUxpc3RzLnR4dCI6CiAgICAgIjYyMzg5YTQ1N2Zh
NzlmZjA5MzE3Yjc0NWUwYzJmNGFhIiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0
ZXJuYWwvdnVsa2FuY3RzL21vZHVsZXMvdnVsa2FuL3F1ZXJ5X3Bvb2wvQ01ha2VMaXN0cy50eHQi
OgpAQCAtOTAsMTcgKzkwLDE3IEBACiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjL2V4dGVy
bmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9yYXN0ZXJpemF0aW9uL0NNYWtlTGlzdHMudHh0
IjoKICAgICAiNzI0NGNjMzFlMDk0NDI2YjQ0NTQwYzU3YTAxN2JlYWEiLAogICAidGhpcmRfcGFy
dHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vcmVuZGVy
cGFzcy9DTWFrZUxpc3RzLnR4dCI6Ci0gICAgIjc4NWM2MTYzZjgyYmUxNWJhMDExYmNiNGU0ODE3
YjhhIiwKKyAgICAiMTU0MjU0ZWM5ZDIxMTI0YTNlZjQ2YWQ5ZTVjYjE4MjkiLAogICAidGhpcmRf
cGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vcm9i
dXN0bmVzcy9DTWFrZUxpc3RzLnR4dCI6CiAgICAgImQwZDUyNDU4N2UzMDgzNzAyY2ZlNzk2NDNl
OWQ4MjdiIiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3Rz
L21vZHVsZXMvdnVsa2FuL3NoYWRlcmV4ZWN1dG9yL0NNYWtlTGlzdHMudHh0IjoKICAgICAiMDVk
MzE0MDkxYTNlYTI2MDk1ODc1Y2Q4NjBiZDAzY2EiLAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RT
L3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vc2hhZGVycmVuZGVyL0NNYWtl
TGlzdHMudHh0IjoKLSAgICAiMGVmZTE0YmYxNWM5Njk5N2M1NWRmNTBmYzI5ODk4YzEiLAorICAg
ICJhNDNjMWUyNjI2M2YwNTAxNTVkOWI3NDQxMWIzOTMxYyIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1H
TC1DVFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9zcGFyc2VfcmVzb3Vy
Y2VzL0NNYWtlTGlzdHMudHh0IjoKICAgICAiYmZhZjA3MDA5M2Q1NjNlNGRjOTJlYzcyZDNlMjBk
OTciLAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9k
dWxlcy92dWxrYW4vc3BpcnZfYXNzZW1ibHkvQ01ha2VMaXN0cy50eHQiOgotICAgICIwYzk5N2Ey
NWNiZGY4ZjA5YjJhNjE5YjMyNjlmMGQxNSIsCisgICAgImM4YTM2MDllNmEzYjM4MTNiY2Q1YmVm
NmQ1NzZjZGVjIiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2Fu
Y3RzL21vZHVsZXMvdnVsa2FuL3NzYm8vQ01ha2VMaXN0cy50eHQiOgogICAgICI5NTdiN2M0NWQ5
NGQ2NTI2MDc4MzNhZWIwMDcxMzJjNSIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjL2V4
dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9zdWJncm91cHMvQ01ha2VMaXN0cy50eHQi
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVy
YXRpb25faGFzaGVzL0dMX0VHTF9XR0xfbG9hZGVyLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfRUdMX1dHTF9sb2FkZXIuanNv
bgppbmRleCBjOWRhZjY0YjhmMWQ3MDVmODU4Zjk0NWJkN2JkZTFlZTNjYzE0ZjBiLi4yYjkyZGU4
OTNjOWVkYWE5YmY0OTJiN2M2YjZiYWM5NWFlNWI4Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfRUdMX1dHTF9s
b2FkZXIuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2Vu
ZXJhdGlvbl9oYXNoZXMvR0xfRUdMX1dHTF9sb2FkZXIuanNvbgpAQCAtNCw5ICs0LDEzIEBACiAg
ICJzY3JpcHRzL2VnbF9hbmdsZV9leHQueG1sIjoKICAgICAiNjNmMThkYzliNzE4M2VhZDRkZGQz
ZGZkMTU3MTk3M2EiLAogICAic2NyaXB0cy9nZW5lcmF0ZV9sb2FkZXIucHkiOgotICAgICI0OGM2
MGM2NjhiZWM0MmE4MDM3ODE3OWFhZTJhY2M2MSIsCisgICAgIjc5MmM0MWQ3YWU5M2E0NTE4ZjBj
NzNlNDU2MjZkMTliIiwKKyAgInNjcmlwdHMvZ2wueG1sIjoKKyAgICAiZTc0YTU5NTA2OGNiZGQ2
MDY0MzAwYmUxZTcxYjdjYzkiLAorICAic2NyaXB0cy9nbF9hbmdsZV9leHQueG1sIjoKKyAgICAi
MDc5Y2M0ODI5ZGU3Y2U2MzhmYWY3YmJmNjZlMTQxYWQiLAogICAic2NyaXB0cy9yZWdpc3RyeV94
bWwucHkiOgotICAgICI0NjdhZTFhOTk4ODA0OWE0MjlkODIwMmU1ZDJjZjczYyIsCisgICAgIjA2
YzgzN2IzOTVjOGNkMGM0ZmM5MzdiMTkzMzY1MDQyIiwKICAgInNjcmlwdHMvd2dsLnhtbCI6CiAg
ICAgImFhOTY0MTljNTgyYWYyZjY2NzM0MzBlMjg0NzY5M2Y0IiwKICAgInNyYy9saWJFR0wvZWds
X2xvYWRlcl9hdXRvZ2VuLmNwcCI6CkBAIC0xOCw5ICsyMiw5IEBACiAgICJ1dGlsL2VnbF9sb2Fk
ZXJfYXV0b2dlbi5oIjoKICAgICAiNTViNTQwNzFlNjFiM2U3YmVhYjI4MTc4ZGMyMGZkMjgiLAog
ICAidXRpbC9nbGVzX2xvYWRlcl9hdXRvZ2VuLmNwcCI6Ci0gICAgIjZlNWM5YzIwNjc3ZmIwOTU3
Yzg0ZmNjOTA5ZjA3NDk2IiwKKyAgICAiYjczZmE4NjMxMmE3MWM3NmY2YTg0MDI1NDhkMjEyMDQi
LAogICAidXRpbC9nbGVzX2xvYWRlcl9hdXRvZ2VuLmgiOgotICAgICIxMWM0MDA1YjhlODcyOTM1
MzAzN2UzYTZiZDRlOGE3MCIsCisgICAgImY1ZGY5NGQzNTRkYjBkMjYyNzViMTgyOGY0MDgzNjMz
IiwKICAgInV0aWwvd2luZG93cy93Z2xfbG9hZGVyX2F1dG9nZW4uY3BwIjoKICAgICAiYzBkOWE2
NWVhYTlhYWMzNTZjNmZkM2Y4ODYzOGQyYmUiLAogICAidXRpbC93aW5kb3dzL3dnbF9sb2FkZXJf
YXV0b2dlbi5oIjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9FR0xfZW50cnlfcG9pbnRzLmpzb24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfRUdMX2Vu
dHJ5X3BvaW50cy5qc29uCmluZGV4IDY4ZjY3MzljZWMzNjQxMWFmNDAzNzk0ZDAzNmUzMTAzYzRi
NmZiZWUuLjM2NjRlZDdiMGQ1NDkzNjlmYjQzZDk4ZDUyNmRjMTY5ZmYzOTgxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hl
cy9HTF9FR0xfZW50cnlfcG9pbnRzLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX0VHTF9lbnRyeV9wb2ludHMuanNvbgpA
QCAtNCwxOSArNCwxOSBAQAogICAic2NyaXB0cy9lZ2xfYW5nbGVfZXh0LnhtbCI6CiAgICAgIjYz
ZjE4ZGM5YjcxODNlYWQ0ZGRkM2RmZDE1NzE5NzNhIiwKICAgInNjcmlwdHMvZW50cnlfcG9pbnRf
cGFja2VkX2dsX2VudW1zLmpzb24iOgotICAgICJiY2Y5N2YxNmZkNGNkNGQ0ZTUwZDY2NjIyOTgy
ZTY3ZSIsCisgICAgIjYzZjUwOGEwODYxMWU3NTgxMGRhZWRiMjk3ZGNhMGU5IiwKICAgInNjcmlw
dHMvZ2VuZXJhdGVfZW50cnlfcG9pbnRzLnB5IjoKLSAgICAiMzZmODlmNTUxNGZmZjI3ZWNiNGJh
ZWRlZDg5YWU2NGQiLAorICAgICJlMTI1NDAwOTRiN2Y1Nzc3OGRlOTdiMDVjMTZkMmUyOCIsCiAg
ICJzY3JpcHRzL2dsLnhtbCI6Ci0gICAgImM0YTMyMTNlNjA2ZDg0NGU4MTI4ODNmZDcyOWM0ZmQz
IiwKKyAgICAiZTc0YTU5NTA2OGNiZGQ2MDY0MzAwYmUxZTcxYjdjYzkiLAogICAic2NyaXB0cy9n
bF9hbmdsZV9leHQueG1sIjoKLSAgICAiZDY5MDdjZDg0ZDk1YWMwYjMyYTE2NDE5NGVhZGNmNTMi
LAorICAgICIwNzljYzQ4MjlkZTdjZTYzOGZhZjdiYmY2NmUxNDFhZCIsCiAgICJzY3JpcHRzL3Jl
Z2lzdHJ5X3htbC5weSI6Ci0gICAgIjQ2N2FlMWE5OTg4MDQ5YTQyOWQ4MjAyZTVkMmNmNzNjIiwK
KyAgICAiMDZjODM3YjM5NWM4Y2QwYzRmYzkzN2IxOTMzNjUwNDIiLAogICAic2NyaXB0cy93Z2wu
eG1sIjoKICAgICAiYWE5NjQxOWM1ODJhZjJmNjY3MzQzMGUyODQ3NjkzZjQiLAogICAic3JjL2xp
YkFOR0xFL0NvbnRleHRfZ2xfMV8wX2F1dG9nZW4uaCI6Ci0gICAgImYyZGQ1ZmI4ODBjYTQ3ZmYx
ZTU1NThhOTVhOGZmNDA3IiwKKyAgICAiZmEzMTVlZWE2Njg4OTUzMGRjY2EzMTFkOTA0OTBkM2Ii
LAogICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfMV8xX2F1dG9nZW4uaCI6CiAgICAgIjg0ZTRi
ZDhmMTNhZTgyNzRhZTkwNzJkNzYxYWZkMDQzIiwKICAgInNyYy9saWJBTkdMRS9Db250ZXh0X2ds
XzFfMl9hdXRvZ2VuLmgiOgpAQCAtNDAsOSArNDAsOSBAQAogICAic3JjL2xpYkFOR0xFL0NvbnRl
eHRfZ2xfM18zX2F1dG9nZW4uaCI6CiAgICAgIjZlOGQ3NzZlOTQ4ODNhYjI1NGE1YzM3ZGIxMzMw
NzU0IiwKICAgInNyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfMF9hdXRvZ2VuLmgiOgotICAgICJi
MmY3NTM1OGZjMzg0NTAyNmQ2NzBlNGFmNDgwOTY4OCIsCisgICAgIjIyMjY3ZTQyYjE2YTQ4ZjIx
ZGFkZmZmNTY1ZDJhNmYzIiwKICAgInNyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfMV9hdXRvZ2Vu
LmgiOgotICAgICI0MzI1ODBmNzk4NTM3YTVjZTc3YzU3YTA3NTc0OGNlMSIsCisgICAgImZlMWU5
MjhkMjdlYzE2NmE1MDdkNGE1OWE4NWMxOTZjIiwKICAgInNyYy9saWJBTkdMRS9Db250ZXh0X2ds
XzRfMl9hdXRvZ2VuLmgiOgogICAgICI2YTc3ZDUwN2FmMDQ1NDgwMjIwMWNhNTUzZjA2Y2MwYiIs
CiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzNfYXV0b2dlbi5oIjoKQEAgLTUwLDE3OSAr
NTAsMTc5IEBACiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzRfYXV0b2dlbi5oIjoKICAg
ICAiMjdiMDRkOGQzYjFmN2EyODA0ZDQ5Yjg1NjI3ZTc4YTkiLAogICAic3JjL2xpYkFOR0xFL0Nv
bnRleHRfZ2xfNF81X2F1dG9nZW4uaCI6Ci0gICAgIjVmY2EzZDQzNzNlYWUyY2Y5MzBjMzNjNDc5
ZDcxOWU2IiwKKyAgICAiZjA2ZTEwMmMxNjFiMjgwNGNhYWE5NDMwMjdmMTU3YWQiLAogICAic3Jj
L2xpYkFOR0xFL0NvbnRleHRfZ2xfNF82X2F1dG9nZW4uaCI6CiAgICAgIjczOGUzNDQ5MTlkOWE4
NjdlODgyM2NiZjUyZDEwMzk0IiwKICAgInNyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfMV8wX2F1
dG9nZW4uaCI6CiAgICAgIjUxZmNlOTVhY2JmOGRlNzJkMjEyNTVhZGJiZTBlOGNkIiwKICAgInNy
Yy9saWJBTkdMRS9Db250ZXh0X2dsZXNfMl8wX2F1dG9nZW4uaCI6Ci0gICAgImFhZGQ4ZTkxMTIw
NDE3NDVjY2ZjMzRmYzliN2RkY2RkIiwKKyAgICAiNDQzZDAwZDQ1ZGUxNDdkMWQxZTNiNjY4NDZl
YTBjMjkiLAogICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzBfYXV0b2dlbi5oIjoKLSAg
ICAiNmRmMDQ2MWYyODFiYjIxMGE0OWViNWVkZWQyZmYzYTYiLAorICAgICJmZTYxYzJjODIxODE2
ZDk1NjFkY2I0ZmUxZmVmNzRlNSIsCiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMV9h
dXRvZ2VuLmgiOgotICAgICJmZjY4OTUxMzA4NjQwYzI5YWNhYjc4ZTBjYWEzMTJmMCIsCisgICAg
ImJiODE5ODQyMjIzMmNhOWNlYWEwNmE1ZDM3YzNjZDkyIiwKICAgInNyYy9saWJBTkdMRS9Db250
ZXh0X2dsZXNfM18yX2F1dG9nZW4uaCI6Ci0gICAgIjhhYjQ1NzZkNzM3ZDQ2ZTJlZTY2NmMyNmMw
MWFlNjA4IiwKKyAgICAiZTI2ZjdlZTdiNTlhODlhNGY1MzM3MTcxODE2YjgzMzYiLAogICAic3Jj
L2xpYkFOR0xFL0NvbnRleHRfZ2xlc19leHRfYXV0b2dlbi5oIjoKLSAgICAiZDA5ZWY5NzMzOGFm
MWQ1ZDI2ODM2ZDA4YmY5Y2Y5ODIiLAorICAgICI1NzIwMDZmYTQ0OTNhOTAxZTg3OWY2ZGYzY2I0
ZWVlOCIsCiAgICJzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzFfMF9hdXRvZ2VuLmNwcCI6CiAg
ICAgIjk2ZmMwZjUwMWUyZTY5NmFiOTExZGFkOGI0MDBkZmIyIiwKICAgInNyYy9saWJBTkdMRS9j
YXB0dXJlX2dsZXNfMV8wX2F1dG9nZW4uaCI6CiAgICAgIjU0NjE3MzA5MGM4NWFkMjhhNTgwY2E3
NmNkMTE3NDg0IiwKICAgInNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX2F1dG9nZW4uY3Bw
IjoKLSAgICAiYTYzOGQ5NTA5OGQ5NGRkZTNhZjc2N2VkYWE3MzFlMTEiLAorICAgICI5ZTQ3NTQy
ZjUwYjI5NTgxZjVmY2FmNWE2OWY2YjUxOCIsCiAgICJzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVz
XzJfMF9hdXRvZ2VuLmgiOgotICAgICIxZDVmOGI4ZDI4MWMwYmE4MGVjY2QwYmUwNTkwZWExNyIs
CisgICAgIjY5ODVkNWUzZDAxMjZiYzhlMDJkZDk4MjI2N2E5MDRmIiwKICAgInNyYy9saWJBTkdM
RS9jYXB0dXJlX2dsZXNfM18wX2F1dG9nZW4uY3BwIjoKLSAgICAiMTA5YzA4YmIyMjQ3ZTVlMjkz
YzFiYjUyNTliZDk3MjQiLAorICAgICJhMTJjOTQ3MDU2OWI5ZDFkNjNhYjBiOGJlOTEwMDU1ZiIs
CiAgICJzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmgiOgotICAgICIwOWNi
ODI4NmExNmQzZmMyMjU1Y2I5ZGNjMGMxNjIzNiIsCisgICAgImI5NjNmZWMwNzBlMGJlY2RjZjRh
ZjY5MjE2Y2QxYzdiIiwKICAgInNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4u
Y3BwIjoKLSAgICAiOTJjM2M5ZjdiNjJjOTM3ZmQzNTk1YzJhMWQxYTljZTAiLAorICAgICJjN2M0
ZWUwZmNlYmM5YmQxOWY4ZjRhNDk4ZjkzNWFjMSIsCiAgICJzcmMvbGliQU5HTEUvY2FwdHVyZV9n
bGVzXzNfMV9hdXRvZ2VuLmgiOgotICAgICIzYWQwMTZkZTJhYWQ5MDk1YWQ1NzA3M2FhMGZjOWY5
ZiIsCisgICAgIjNkMzYzZjRkZTk3YjQ3ZWNmZjYxZTI5OTM5ZGNmMTFhIiwKICAgInNyYy9saWJB
TkdMRS9jYXB0dXJlX2dsZXNfM18yX2F1dG9nZW4uY3BwIjoKLSAgICAiOTM5ZGZjYTFiNDIzYjU2
Y2M3NDI2MGRjNjIzZWIwZjUiLAorICAgICJmMzQ5N2E2M2QyN2EzMGI5YTEwZmZmZmQ0YzI1YzAy
MyIsCiAgICJzcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9hdXRvZ2VuLmgiOgotICAgICJh
N2ZhOTUxZTkyOTZlOTI3Y2Q5YmIxOTdjNTFkYzlhMiIsCisgICAgIjJmYmNhNzE2ODU0MWMyZTlm
ZjhhMDU1YzI1NmY4NTMxIiwKICAgInNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9n
ZW4uY3BwIjoKLSAgICAiZTI0MTMwYjc4YzU2ZGQzNjI1ODdiYjllMjdmY2FlZWUiLAorICAgICI5
NmNiNTA0M2ViZmNlMzQ5Yzg5ZWNlM2FmZWM2ZDlmOCIsCiAgICJzcmMvbGliQU5HTEUvY2FwdHVy
ZV9nbGVzX2V4dF9hdXRvZ2VuLmgiOgotICAgICI2NzdiNThjMTEyYzAwOWZmNDIyODM5YTQwMjVj
ZGM4MyIsCisgICAgIjVkOWM3MzZhMzc5NjE1ZDAwZjk3NTFmNGZlZDcxZDI0IiwKICAgInNyYy9s
aWJBTkdMRS9lbnRyeV9wb2ludHNfZW51bV9hdXRvZ2VuLmNwcCI6Ci0gICAgIjA4ODE1NjJkZTFi
NjI0YzczZTllMGJkYTlmYjg0M2I1IiwKKyAgICAiNjZmMDlkNGY5ZTZmOGU4M2YyZjZmMGNmOGZj
M2YzZDkiLAogICAic3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50c19lbnVtX2F1dG9nZW4uaCI6Ci0g
ICAgIjQ0YzViZDMwZTdmZDBkYTU1YjgwNWI5ZWEwNDA5YWM0IiwKKyAgICAiODcyMDY5NTk4ZTY3
YzM1OGVlNGNiYjE0MjYwZDI4YmYiLAogICAic3JjL2xpYkFOR0xFL2ZyYW1lX2NhcHR1cmVfcmVw
bGF5X2F1dG9nZW4uY3BwIjoKLSAgICAiYmMzZGM4MWQ1MTZlNWViM2EzMzFiNDEwMmQ0NWYyYTMi
LAorICAgICJjMGQ1NzcwNGMyMWUwMDMyYTQ4NmE2MTk1ZGRiODdlNCIsCiAgICJzcmMvbGliQU5H
TEUvZnJhbWVfY2FwdHVyZV91dGlsc19hdXRvZ2VuLmNwcCI6Ci0gICAgIjMyZjA1NWVmMDYzODU2
ZjdhYzhkN2QyOTJlZGE1YTc1IiwKKyAgICAiN2E0ZjE2YTk2NzE0ZTQzZmFhYTBiZWYyOTlhZDcw
MjgiLAogICAic3JjL2xpYkFOR0xFL2ZyYW1lX2NhcHR1cmVfdXRpbHNfYXV0b2dlbi5oIjoKLSAg
ICAiYWVhYWMzYmJmNTg4OGI1YzY2NjNlNDg4ZWUzZmQzNWUiLAorICAgICI4NmUzNjhiZTkwODNm
YTU0MmEwOGMxYzE0M2M4Yjg3ZSIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMV9hdXRv
Z2VuLmgiOgotICAgICIyMTBmZjI4YTRjZmExMWVmOWU0NTBlZGUwY2FiZTQ4ZCIsCisgICAgImM4
ZWRiMGE1YjI2MzAzYmY3YzQ2OTJiOWQwYjA1YzFmIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0
aW9uRVMyX2F1dG9nZW4uaCI6Ci0gICAgImY5ZjQxZjZkNTgyMGY1ZGViYjI5ZmZmYzUxNTM3NjYx
IiwKKyAgICAiMWZjNGM3MDE3YWU1OTQ5MTYwYWMyNTYxZTZkMmUyMmUiLAogICAic3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FUzMxX2F1dG9nZW4uaCI6Ci0gICAgIjA2YTcxNTlhMWQwNjA0YzAwYmJi
Y2VjMjJjOGJkMWMzIiwKKyAgICAiZWQ5MDY2Y2JmNDA2YjZmNzgyYzA1ODAxOTg5NWM2NWUiLAog
ICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMyX2F1dG9nZW4uaCI6Ci0gICAgImI1Nzc0Yzg1
YzQ3ZjNiZTE4NTFjOTcwMDYyMDZhZTNlIiwKKyAgICAiN2I0YjVmOTM5OGE0YzA4OGZlYWI4YmEy
YzZiZmMwMjQiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzNfYXV0b2dlbi5oIjoKLSAg
ICAiZjJjZDRhYzRiZTA3YTViZmVkNTFhNDEzZTI5NjcwNjAiLAorICAgICI4NmJhNTAzODM1MzI4
NDM4MTU4ZDlhNDY0OTQzZjNiZCIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTRVhUX2F1
dG9nZW4uaCI6Ci0gICAgImI1NmEwZjIyMTg4NGVkNDZiM2U2MzFjMzAwZjY1ZmQyIiwKKyAgICAi
ODZhZjlmMzE1ZDI4YTJhYjY2Mjc4Yjc5OTJhYWU0NGYiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDExX2F1dG9nZW4uaCI6Ci0gICAgIjA0M2E2MDk0MGRhYTEwNTczMGUyMTY2ZjBhMjkw
ZTJmIiwKKyAgICAiYWFkZDE0NWMxNDA0ZGU5YzM0ZDZiN2MwMDQwNGYxMGYiLAogICAic3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDEyX2F1dG9nZW4uaCI6CiAgICAgIjgzMGQ4NDBmYzhiYjM5NTE2
MWU2MzBjYzEwMTgxNzhiIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxM19hdXRvZ2Vu
LmgiOgotICAgICI2MjhkOWJiMGZiZjEwZTExODM4NThhODU1NDlkMGE0MSIsCisgICAgIjI3ZjJl
OWI0MWI4ZjJlZjQzMTMxMmExNDhhNzU1MzFhIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0wxNF9hdXRvZ2VuLmgiOgotICAgICJhZmRkMTM0MWI5MTBlNGIyODRlNzUzMTMzYzFhYWVhMCIs
CisgICAgImJmZWE2MjVhOGJiOGI4ZDFlZWI0MWViOGFiMzBkNGI0IiwKICAgInNyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0wxNV9hdXRvZ2VuLmgiOgotICAgICI4ZGE2MDc5MzcwNjY0MWY5OGIzMjI2
ZWI3YTA0M2YzYiIsCisgICAgImE4ZTI4YjNiZmUxNmZjNThmNGU0MDRhNzNlNTkwNDY5IiwKICAg
InNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxX2F1dG9nZW4uaCI6Ci0gICAgIjJhZTBhMDBmMmEz
MzIyNjc3ZmQ5NDJiZTU5N2JiMzI1IiwKKyAgICAiMDYwMThiOWQzNzQ5YmI2NWY1OWNhYTY5NDE3
NWRmOTgiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIxX2F1dG9nZW4uaCI6CiAgICAg
ImU4ZmJjZjQxNDlkOTM5ZWFjMDI5ZWFiODdkNzhhNmVhIiwKICAgInNyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wyX2F1dG9nZW4uaCI6Ci0gICAgImJmNWZjYWU4MmQzN2NhZjk4MWZmZGEwNzZiYzY1
ZDIyIiwKKyAgICAiZDQ4MzhmZmNiYmVjOTVlNTljZTEzNGM1ZmIyMDNkYzMiLAogICAic3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDMxX2F1dG9nZW4uaCI6Ci0gICAgImJjNmMzOGU3OGM3ZDY5OTJh
OGZhYTZkZGUzYzc5YjAxIiwKKyAgICAiZDM3ZGY1ZTg3ZTVhNDNjMTY5NTU0YmNmZjUyMjVmMmMi
LAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyX2F1dG9nZW4uaCI6Ci0gICAgIjczYjI1
ZWU0NzUyMWU5MjViZWU0ZjA5ZDE1MDVlNTBhIiwKKyAgICAiYmEyODg0YWRhNmExNTc2YWYzMzI2
MjFhZjYzZmFmMGYiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzX2F1dG9nZW4uaCI6
Ci0gICAgImM5MmI1MzI4ZWRlNWJkNTBjN2U3NDBmZjdjODQxYzhlIiwKKyAgICAiMTkyYWRlYjkz
ZDkwM2MxNjZiZjM2Yzg0NzQyOGE5MDIiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDNf
YXV0b2dlbi5oIjoKLSAgICAiOTM4ZjBkZDUyMmRkZTI5ZmVlNGY4N2RjZmZkMmVmYTUiLAorICAg
ICI3Y2VmYWE5ZTU1NjhjYjg2ZGYwMTM3MWFkNTM5MGEyOSIsCiAgICJzcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkdMNDFfYXV0b2dlbi5oIjoKLSAgICAiNjUzOTVlZGMwNjlhZTMxZjM5NGI0Zjc1OGFm
MmU3NWMiLAorICAgICJmOTIwMzM4NjhlMmE2ZWNmNzA3YjczMGM3MGQ0NGYyYyIsCiAgICJzcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMNDJfYXV0b2dlbi5oIjoKLSAgICAiNGUwZDQ3ZWEyMzQ4NGIy
ZTQyNGMyYThlZDhkMzUwYWUiLAorICAgICI5YmJjM2JjMWEyYjg5Y2E2MmJmMjE5YmMxNTkwM2Vj
OSIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDNfYXV0b2dlbi5oIjoKLSAgICAiMGRk
ZWE1NGIyNDVlZWY2N2UxNmU2ZTA4N2E2NWM4MzYiLAorICAgICIwZDA1Zjk4NzNjYjVjNjViMGM2
OGE2MDQyM2U5YzcyNCIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDRfYXV0b2dlbi5o
IjoKLSAgICAiZTA4MjU3ODU4NTJhZDY2MGZmNjhjNWJiZjBkZjYxZjMiLAorICAgICJlZTg5YmVj
MWJmNGVhYjMxYjNiNjUzYzBmMWE4OGQzMyIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
NDVfYXV0b2dlbi5oIjoKLSAgICAiMDAzYjk3M2Y3Yzk0MDgyMDQ2ZmJmMGZjMDg2ZTU2ZGUiLAor
ICAgICJhMGFmNTEwNGYwZDM5NDljOWQ5NDUzODdkMTFlNjMwMiIsCiAgICJzcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkdMNDZfYXV0b2dlbi5oIjoKLSAgICAiOWY4YjRlNWZkZTI1MTM3NjQwYzVkNmM0
NTA1ODZmNzYiLAorICAgICI0NmY3NGEzYjE5ZmQ3ZTI0M2RkZDQ3YTc0NzhhZTgxOCIsCiAgICJz
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNF9hdXRvZ2VuLmgiOgotICAgICI3MWIxM2FjMTRmNzY1
NGExOWY3NjA2Y2IyMzMwOTU1MSIsCisgICAgImNiZTNmOTE3MDI0YTkzYTNhZGNiZDI4MDZmM2U5
NTFmIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8wX2F1dG9nZW4uY3BwIjoKLSAg
ICAiYmRlNDk0ODgyMDI3MDI2N2MzNTVmODhkNGEyNjRjMTAiLAorICAgICJlOTg0ZTY3NWRhYjk2
MjQyMTQ2MDlmYzg2ZjEzMzBhOCIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMF9h
dXRvZ2VuLmgiOgogICAgICI0ZmYwMGFmYzIxNzgwYmM2YzEzOGI1NDMxYTJkMDY3YyIsCiAgICJz
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMV9hdXRvZ2VuLmNwcCI6Ci0gICAgImY4MzU5YWY0
NTAwZGNkYjdlMjI2ZWU0NzI4YzJkMTAyIiwKKyAgICAiMjUzMjA1ODA0OTA1YzFlNWJmNjQyMmMx
ZGY2MDYwNzkiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzFfYXV0b2dlbi5oIjoK
ICAgICAiNTcwYTgzOWJiMzM2ZDhmNWY4M2QzYjUwZmU0OTQxMWEiLAogICAic3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8xXzJfYXV0b2dlbi5jcHAiOgotICAgICIxYTEyNzI1OTg1MzJmMzdhZDkw
MTIyMTlmODkyZDVhNSIsCisgICAgIjBjYTFhZDhkMWEzYTQ4YzgwNTNiNDA4MWJkZjVmNWU0IiwK
ICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8yX2F1dG9nZW4uaCI6CiAgICAgIjNmNTIx
ODdmMjk5ZmU5NjY3MjM4NGUxNjQ2ZjRhMWNiIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfMV8zX2F1dG9nZW4uY3BwIjoKLSAgICAiMWMyZWY3M2ZiZjYxNmQ2ZDk2YjU2ZmI4Yjc1ZWFj
ZDUiLAorICAgICI1YmNlOWY3YmIyNjM5YTdkZTU3ZTkyNWEwMjgwMzllZiIsCiAgICJzcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzFfM19hdXRvZ2VuLmgiOgogICAgICI1ZWEzNmQ4NjliODJhODI0
ZDVmMjkwNjI1YzRlYTA1MiIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfNF9hdXRv
Z2VuLmNwcCI6Ci0gICAgIjIzNzY5NDRmOWUxMjBlODU3MzA2YTk3YjFkNjg0MzQ4IiwKKyAgICAi
ZTc5OTM4N2QwODRhZTcxOGZlMDc2MmQ0OGMxYTQwYjkiLAogICAic3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF8xXzRfYXV0b2dlbi5oIjoKICAgICAiMmM1ZDMxY2EyNDg1MDdhMDI0ZTQ3MjRjNzQy
ODNlYzQiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzVfYXV0b2dlbi5jcHAiOgot
ICAgICJmNmYxNzg5ZWRmOGY0YmQ3MWJkOGU3MGYwOGZlZjhlOSIsCisgICAgImFhZGRiZGU4OWM3
ODAxOTRhYzQ3NTRmN2ExMTc3Yzg0IiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV81
X2F1dG9nZW4uaCI6CiAgICAgIjk3ODQ1N2FhOWE0MGU0Mjc4NDZiNmRlYTI0NjA4OTAzIiwKICAg
InNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMl8wX2F1dG9nZW4uY3BwIjoKLSAgICAiNjZlNzM1
YjU4NDA2MGYxZWFlNGFlYTQ5MzNhMWE5NDAiLAorICAgICI2OGZiZjMzMmI1MTQwMTM5MTk3OGJj
NGJiM2VjZTY1NCIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMF9hdXRvZ2VuLmgi
OgogICAgICI0MWIwY2QwNjQxNjdmYWM4NGJjZGIxODk2YTI3NWIxYiIsCiAgICJzcmMvbGliR0wv
ZW50cnlfcG9pbnRzX2dsXzJfMV9hdXRvZ2VuLmNwcCI6Ci0gICAgIjdlMzY2ZmUzOGE4M2I3Yzg1
M2I3MGZmYzk0YzM2Yzc5IiwKKyAgICAiNGUzMWI5ZDhhODhkYzY5YTlmMWYwN2IwYWRiOTg5NjUi
LAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8yXzFfYXV0b2dlbi5oIjoKICAgICAiMWRh
NDhkZWM1NjBlYTVmZjhjYWRmNGQwYjZiZmRlMWMiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50
c19nbF8zXzBfYXV0b2dlbi5jcHAiOgotICAgICI2MmNhMmVjMWRhNjMzOGI3MTIxNzE2ZWIwZmZi
MjQ5OSIsCisgICAgIjZkZWNjNjQ5NGM5YWNkZmI2M2Q1Mzc5YjBiYjdlNzY3IiwKICAgInNyYy9s
aWJHTC9lbnRyeV9wb2ludHNfZ2xfM18wX2F1dG9nZW4uaCI6CiAgICAgIjBmYWQ4MDA1ZjIzODE1
YmViOGVlOWIzNzk3YzAwYjgzIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18xX2F1
dG9nZW4uY3BwIjoKLSAgICAiOTViMGFkZDA5YWIzNjZhODU3YzhmN2Y4OTY3NDAxYWEiLAorICAg
ICI2NDcyNTJjYmM1ODVlYzQxMzEyMWZlNmNkMTZjOGRiZiIsCiAgICJzcmMvbGliR0wvZW50cnlf
cG9pbnRzX2dsXzNfMV9hdXRvZ2VuLmgiOgogICAgICJhNjhmZjZjNjlmMGNlOTVkOTczMGUyMmJi
NGM2MzM2NiIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMl9hdXRvZ2VuLmNwcCI6
Ci0gICAgImIwMjM3M2NiYjk4ZTNlNjg3YjdkNjI4NzQ0MmUzNmZmIiwKKyAgICAiZDdjZGRhY2E5
YTJjNmUwNTFhNGRlYzc2YjAzNjExZjIiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8z
XzJfYXV0b2dlbi5oIjoKICAgICAiZjE2MmM0ZTkzYTY0YWIyZTQzMDQ4YTA5MzdmN2M0NmYiLAog
ICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzNfYXV0b2dlbi5jcHAiOgotICAgICI0YTYx
ZmJkMmZiYzVkYjNmYzA4ZDBmMjlhOWEyOTdiNiIsCisgICAgIjMwZjhkZmQ1YjkwMmQyMDNhYmFi
ODRjNTc5NWU0ZTRiIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18zX2F1dG9nZW4u
aCI6CiAgICAgIjUxYzBlNGYwNzRjODU0NDdmNWQ5MTBjNjNiOWVhNjFjIiwKICAgInNyYy9saWJH
TC9lbnRyeV9wb2ludHNfZ2xfNF8wX2F1dG9nZW4uY3BwIjoKLSAgICAiOWE5NGMwZjNiMjI2MWFk
NWUwNTFhNmEwMGFmZDdjMWUiLAorICAgICI0ZTRjMDk4MTA0MDgyNDUxZDJiMWM0NTBkNDhiY2E3
MiIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfMF9hdXRvZ2VuLmgiOgogICAgICIz
NWQ2MTExMzg5NTFjZWJjMjlkYjk5YzliZjNhOWU1ZiIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzRfMV9hdXRvZ2VuLmNwcCI6Ci0gICAgIjg3YjhhMzViMjE5NmU0MDY4ZGI0NDIwYmE4
M2MzZWFhIiwKKyAgICAiYWYyZmZlYWZkZWU4NTM1NDcwYmM4ZmI0ZWU5ZTYyZmQiLAogICAic3Jj
L2xpYkdML2VudHJ5X3BvaW50c19nbF80XzFfYXV0b2dlbi5oIjoKICAgICAiYmVlYzY2NTlhM2E3
NzY5NWRhZDY2ZGY5MDcxN2M2YmEiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzJf
YXV0b2dlbi5jcHAiOgotICAgICJlZDMwNjgyODg1NDBlMWY0MmVhNDVjZDkzNjc1YjZlMyIsCisg
ICAgIjA0OGJlMzE1OTQ4ODUwNjc2NDM5YjQzZmJjMjE1ZDgwIiwKICAgInNyYy9saWJHTC9lbnRy
eV9wb2ludHNfZ2xfNF8yX2F1dG9nZW4uaCI6CiAgICAgImEyY2IyYTQ4Y2NlYWY2MTMxZjk2YmY4
ZWM1NTZhYTU1IiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uY3Bw
IjoKLSAgICAiYmUxNTVkMmJhNzEwNmRjNmIzYmE5ODZjODNjZDY5NzMiLAorICAgICI3MjAxYTJl
OTc3M2Q2MDc3NTZmZmNkMWUzYTBmMTRmNSIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2ds
XzRfM19hdXRvZ2VuLmgiOgogICAgICJhYmZhNDMxNzQyYTJiNjQzZGIyMTIyMDk0NGUxMGFiMCIs
CiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2VuLmNwcCI6Ci0gICAgIjA0
MWY4ZGI1YjFkZDg5ZWE3ZTBkYjc3ZTA0ODE4ZjE3IiwKKyAgICAiY2I4ZTUzYWJlZTUyNDBhOWIy
MTI2MWVjZTQyNDUzNDQiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzRfYXV0b2dl
bi5oIjoKICAgICAiY2RmMTY1MWYwMGQyNmRiNTQ3YjE1M2FmYzA5YWNjMWMiLAogICAic3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF80XzVfYXV0b2dlbi5jcHAiOgotICAgICIwNDA0YzlkMTQzN2Vk
YjYwMGJmYmYwYmVmMzU1YzU5NCIsCisgICAgIjUwNmU5MDNkNjE4Y2E2MDM5ZWFmZTYzOWEwZDM1
OGY0IiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81X2F1dG9nZW4uaCI6CiAgICAg
IjlmNWRlOTUxM2MwNmI4MmFjYTYwODU2ODYwZjdiNzE2IiwKICAgInNyYy9saWJHTC9lbnRyeV9w
b2ludHNfZ2xfNF82X2F1dG9nZW4uY3BwIjoKLSAgICAiMTg4Zjc5ODZjNWExNjM5MmY4NzQ1YjJl
OTQ2MDZmNTYiLAorICAgICJhMDA3YjljNWUwYjVjNDQ1YWRmNjRlOWYwMGFiNzA5MiIsCiAgICJz
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNl9hdXRvZ2VuLmgiOgogICAgICJlZTMxNTBkNGE4
ZDI2NzI3MWEwMmUzOGU4ZmViOTIzYSIsCiAgICJzcmMvbGliR0wvbGliR0xfYXV0b2dlbi5jcHAi
OgpAQCAtMjMwLDM1ICsyMzAsMzUgQEAKICAgInNyYy9saWJHTC9saWJHTF9hdXRvZ2VuLmRlZiI6
CiAgICAgIjI3ODlkODdiMDVlZWE5ZjUzZDUyZTJhZmY0OTliNzg1IiwKICAgInNyYy9saWJHTEVT
djIvZW50cnlfcG9pbnRzX2dsZXNfMV8wX2F1dG9nZW4uY3BwIjoKLSAgICAiOTNjNTdiNWM5YzVk
Y2UwZTUyMWFkNjhlMmM1NjAxZjgiLAorICAgICI5MDQ3ZWYyNDUyYTQ1Yzg2YzRhOTJiNTY4ZjY4
NzdjMyIsCiAgICJzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzFfMF9hdXRvZ2VuLmgi
OgogICAgICI4OTlkY2ZmOTM4MzQ2NTM4MGY5NGZiZGZlNWJjZjBhMCIsCiAgICJzcmMvbGliR0xF
U3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRvZ2VuLmNwcCI6Ci0gICAgIjI0YTg4MzhlNDU1
MzhmZDg3MWI1Zjc3ZjY4OTliNjVkIiwKKyAgICAiNWE1NGQxMDZlMTE5Njc5NWFiOWJiMjJkMjRm
MzJkYzQiLAogICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfYXV0b2dlbi5o
IjoKICAgICAiMjYzODdlMjdjYmRkZjVlMzRkNmNkOWY4NTBjYjhiNjQiLAogICAic3JjL2xpYkdM
RVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfYXV0b2dlbi5jcHAiOgotICAgICJjMzc5YmQ1MTI0
OWFiOTBlOWMyMTM4ZDBhNDcxZGM3MyIsCisgICAgImJjZTc2NTBkZjVhODNhZTljNmIwODBiMWE0
YTkxNjRiIiwKICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wX2F1dG9nZW4u
aCI6CiAgICAgIjBkMjQ2MDI0Mzc5ZmJmNTViODcyMDRkYjVkNmEzN2UzIiwKICAgInNyYy9saWJH
TEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xX2F1dG9nZW4uY3BwIjoKLSAgICAiYWU4MGE0NDEw
YTFkNTNlOWYwY2ZjMWNhMTgxNDY2Y2UiLAorICAgICJmNDQ5MzQwODUyYmUzYTM4OWY1MmZiMTBk
ZGQyOWQ5NCIsCiAgICJzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMV9hdXRvZ2Vu
LmgiOgogICAgICI2OWJhZTVjOTRlZDQ2NjU4MzZhODQ2NGI2YzM1M2Y5YSIsCiAgICJzcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMl9hdXRvZ2VuLmNwcCI6Ci0gICAgIjk3MDhmYzEx
OWY2NmQ4OWJlZTEzNTJmOTBhMDk4ODI0IiwKKyAgICAiOWE5OWIxNTEyMmViNzNkYWZmOTU1Y2Vh
MDk3MTg1ZWEiLAogICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzJfYXV0b2dl
bi5oIjoKICAgICAiNTc5OGFhMGE3M2FmMWQ0YmE1ZGZlOTliNjIxN2EyNDciLAogICAic3JjL2xp
YkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dlbi5jcHAiOgotICAgICIzM2Y5MzFl
ZWZkOGY3MTlhMGJlMzI5MGJlOTY0NDhhZiIsCisgICAgIjBiMTdjNDlhMGE1ZGMyMTI4NTYyOGNk
ZTc2ZjJmMjY2IiwKICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfZXh0X2F1dG9n
ZW4uaCI6Ci0gICAgIjFjYmUxZWJhNWRmNTI3ZWFlMTQ2Y2Y0YzQwMjFlOTFhIiwKKyAgICAiOWIy
M2FhNzJmZTgyNTc4NmNmNjMwODAzNTFmYTRkYWYiLAogICAic3JjL2xpYkdMRVN2Mi9saWJHTEVT
djJfYXV0b2dlbi5jcHAiOgotICAgICIxODFkMmNlMGVmZWFmMmUxMWFiMTk3ZjY0NThmMDI0OSIs
CisgICAgIjE2ODlhODhjNWJmMzc2ZGExZjA0MzNkYjI0MmVkZTdkIiwKICAgInNyYy9saWJHTEVT
djIvbGliR0xFU3YyX2F1dG9nZW4uZGVmIjoKLSAgICAiN2RiN2YzYTA5YzQ2NGNlOTM5NjA4ZDk1
YjU3ZDQwMmIiLAorICAgICI1ZjFlYjc2M2UzMWY5MDgwZWIyZGZiMTg4MzI2MDgzMyIsCiAgICJz
cmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9ub19jYXB0dXJlX2F1dG9nZW4uZGVmIjoKLSAgICAiZjAw
MTlhNjdiZDFhZTFmMjc0NWRkZTUzZjMxNmE5MTkiLAorICAgICIyOGM4YTVlZTBkM2Q2NzgxNWMx
YTdmZjdjMmQ0OTVjYSIsCiAgICJzcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml93aXRoX2NhcHR1cmVf
YXV0b2dlbi5kZWYiOgotICAgICI5NDM3NmU2N2QwYzRjODdkOWMwOTdjZjg4Y2RjODAzNiIKKyAg
ICAiZGQwYzdjNTRmZDVkYThhZjBkYzg1ZjJmMWUzMjEyZWQiCiB9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9j
b2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX2Zvcm1hdF9tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9mb3JtYXRfbWFwLmpz
b24KaW5kZXggMDMyZjI1YTc4OTQwOWM3NzUyZmU4ZWI3OGE1ODhhZjdmYzY2ZThlNS4uMzQxOGRi
MThkZGJmNWUzZjI4OTBmZTUzZmUxOTY3ZDMwMGM3MTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX2Zvcm1hdF9t
YXAuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJh
dGlvbl9oYXNoZXMvR0xfZm9ybWF0X21hcC5qc29uCkBAIC0yLDkgKzIsOSBAQAogICAic3JjL2xp
YkFOR0xFL2VzM19mb3JtYXRfdHlwZV9jb21iaW5hdGlvbnMuanNvbiI6CiAgICAgImI0NGIyMjJj
MjdlZWE2ODM5YzBkYTMwNzZlZTU0MGZjIiwKICAgInNyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2F1
dG9nZW4uY3BwIjoKLSAgICAiNGI5OTI3YWZjNmNjNDdmY2VhNmJmY2JjZDYwMmI2ZTUiLAorICAg
ICJlMGRlZGI0YTQ3Y2E3ZWFiMmQzM2QyMDQzMGEzMGQwNSIsCiAgICJzcmMvbGliQU5HTEUvZm9y
bWF0X21hcF9kYXRhLmpzb24iOgotICAgICIyZGQxOTg2ZjQ5YzQ0MWFkOWE3MWI4MjQxMGY1N2Q2
ZSIsCisgICAgIjJlZGFiNGRiMTJhMWNjMTMxZjI2ZTBlNTY4MGI3ZDBjIiwKICAgInNyYy9saWJB
TkdMRS9nZW5fZm9ybWF0X21hcC5weSI6CiAgICAgIjM4MzIwZDg0NGU2NjI5ZTA5YWZjNWNjZGM0
ODRlOWFhIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkiOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25f
aGFzaGVzL0dMZW51bV92YWx1ZV90b19zdHJpbmdfbWFwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xlbnVtX3ZhbHVlX3RvX3N0
cmluZ19tYXAuanNvbgppbmRleCAxMzdjMDAyYzVkNTMxY2I2NDg0YzdjMjIzNjZiN2YzNTYyYzQ2
ZTY0Li5lNjQ0OTA5ZTNmM2U0MmVjZTdhMTkzYzJlNjcyM2IxYWI5ZGZlYTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMv
R0xlbnVtX3ZhbHVlX3RvX3N0cmluZ19tYXAuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xlbnVtX3ZhbHVlX3RvX3N0cmlu
Z19tYXAuanNvbgpAQCAtMiwxMyArMiwxMyBAQAogICAic2NyaXB0cy9nZW5fZ2xfZW51bV91dGls
cy5weSI6CiAgICAgImYyNWNkYzc0YjU3ZDEwYTFjYmM0MTk0YTcyZTk3MWFmIiwKICAgInNjcmlw
dHMvZ2wueG1sIjoKLSAgICAiYzRhMzIxM2U2MDZkODQ0ZTgxMjg4M2ZkNzI5YzRmZDMiLAorICAg
ICJlNzRhNTk1MDY4Y2JkZDYwNjQzMDBiZTFlNzFiN2NjOSIsCiAgICJzY3JpcHRzL2dsX2FuZ2xl
X2V4dC54bWwiOgotICAgICJkNjkwN2NkODRkOTVhYzBiMzJhMTY0MTk0ZWFkY2Y1MyIsCisgICAg
IjA3OWNjNDgyOWRlN2NlNjM4ZmFmN2JiZjY2ZTE0MWFkIiwKICAgInNjcmlwdHMvcmVnaXN0cnlf
eG1sLnB5IjoKLSAgICAiNDY3YWUxYTk5ODgwNDlhNDI5ZDgyMDJlNWQyY2Y3M2MiLAorICAgICIw
NmM4MzdiMzk1YzhjZDBjNGZjOTM3YjE5MzM2NTA0MiIsCiAgICJzcmMvbGliQU5HTEUvZ2xfZW51
bV91dGlsc19hdXRvZ2VuLmNwcCI6Ci0gICAgImZjMDIzYWQyMWUxMGQyMjc5YzhmMTQ2ODZiZjgz
OGI2IiwKKyAgICAiY2ZjNTJmNDEzMjcyYzA2MWVlNGEwMzc4NzY3OTI3MjYiLAogICAic3JjL2xp
YkFOR0xFL2dsX2VudW1fdXRpbHNfYXV0b2dlbi5oIjoKICAgICAiZGQ1NGYzNGJlNzMzYWZmY2I5
OTRmYzMxNWMzYjk3MmQiCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVz
L01ldGFsX2Zvcm1hdF90YWJsZS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0
cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL01ldGFsX2Zvcm1hdF90YWJsZS5qc29uCmluZGV4IDI3
ZTM0ZjA4YmJhNzc1MGRkY2Q4ZGJjZDE3M2ExMjgwMTdhMjE0N2IuLjlmMTUxZGM1OTY1N2ZmZWRl
MjM0YzkzNDk1MWE1YzJlYmRhNmExYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9NZXRhbF9mb3JtYXRfdGFibGUuanNv
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9o
YXNoZXMvTWV0YWxfZm9ybWF0X3RhYmxlLmpzb24KQEAgLTQsNyArNCw3IEBACiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvZ2VuX210bF9mb3JtYXRfdGFibGUucHkiOgogICAgICJiNjQ2
ODQ0NmRkMWRhM2U0NGFjOWRkMTE2OTBiNWJmMSIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbiI6Ci0gICAgIjAxNjZiNzA2OTc3MzI2MTJiZDQ2OTQy
ZTdjY2Y4ZTZlIiwKKyAgICAiMjIzZTBiNzI5ZjVkZjdkOTFhZjM4MmZhM2FmMzIyNTQiLAogICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5tbSI6
Ci0gICAgIjg3OTZiZTY5NDYxZTJiYjA3ZGIzYjgxYjZlZjI0NDMyIgorICAgICJkOTI0MTg0Mzk0
NjI1MDMyZThhM2U5N2M4YjkzNmE1ZiIKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlv
bl9oYXNoZXMvT3BlbkdMX2Rpc3BhdGNoX3RhYmxlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvT3BlbkdMX2Rpc3BhdGNoX3RhYmxl
Lmpzb24KaW5kZXggZDVmMjI4MzU3N2IzNjIxY2Q5YTllNWViNzQzZTkxNDU5ZWVjNjIwOS4uYzIx
ZWRlOTcwMTA0ZDdlNmRjMTM2NDUyMDcxNzVhYmRlMGI2OGQwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL09wZW5HTF9k
aXNwYXRjaF90YWJsZS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9PcGVuR0xfZGlzcGF0Y2hfdGFibGUuanNvbgpAQCAtMSwx
OCArMSwxOCBAQAogewogICAic2NyaXB0cy9nbC54bWwiOgotICAgICJjNGEzMjEzZTYwNmQ4NDRl
ODEyODgzZmQ3MjljNGZkMyIsCisgICAgImU3NGE1OTUwNjhjYmRkNjA2NDMwMGJlMWU3MWI3Y2M5
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkiOgogICAgICIzMmJh
NzE5NDJjMGZkMDBlNjgwNzEwNGYxYmI4MGEzYyIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvRGlzcGF0Y2hUYWJsZUdMX2F1dG9nZW4uY3BwIjoKLSAgICAiZWEyNTNjMjQ1ZTY0ZmQ2N2M1
NTkwNGZkMjgxNzM5OTciLAorICAgICIwOTQ3NjIyZmVhNTBkMThlYjlmMDU1N2NhNGM4NWJmYSIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1dG9nZW4uaCI6
Ci0gICAgIjI3YWY0ZGE3N2M1Y2M2MDcwOGZkMmFhYmVkYzk4M2Y3IiwKKyAgICAiMWM2ODI0ZDBj
NTQ5OWIzYzFjNzY1ZDI1ZDk0MmM4OTYiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dl
bmVyYXRlX2dsX2Rpc3BhdGNoX3RhYmxlLnB5IjoKICAgICAiNGYxOWE3ZWVlMTc2NzliM2EwYWQ0
YWJhZDZmYWIyYzkiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dsX2JpbmRpbmdzX2Rh
dGEuanNvbiI6Ci0gICAgImU4NzBhNGQ4NmRjNjllNTJkY2FiOWFmZDc4YTQ3YzliIiwKKyAgICAi
NmFlNTVlOTEyNzc3YjY5NWYyN2I5ZGQ5OWJjZTFkOTgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL251bGxfZnVuY3Rpb25zLmNwcCI6Ci0gICAgIjgwNDA2ZGEwM2E5NTAwMDIzZjE5NmE3
MDE0NGYxMDU5IiwKKyAgICAiMDAzNmY4NjAwYzk2OGJiNTNmN2JiMzExY2M1NDA0MWMiLAogICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL251bGxfZnVuY3Rpb25zLmgiOgotICAgICI3NzM5NTA4
NzlmNjQ2MDg1Zjc4Yjg5ZmU2YTJkYWY1ZCIKKyAgICAiZWRiYTQxOWJjYmZjYzE4MzA2NzNlOGJh
ZmQxYTRiZmIiCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL1Z1bGth
bl9mb3JtYXQuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5l
cmF0aW9uX2hhc2hlcy9WdWxrYW5fZm9ybWF0Lmpzb24KaW5kZXggODNlODg3OGIwNjhjMjE1OTZk
YmQ2NjY1NWRkMGRkMGU4ZGJjY2Y4My4uODc4Y2NjNTRjYmI1Y2JlZDkzNzA0Yzk4NzMwYTY0N2Vk
ZjEzOTYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2Rl
X2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9mb3JtYXQuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVsa2FuX2Zvcm1hdC5q
c29uCkBAIC0yLDExICsyLDExIEBACiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9y
bWF0LnB5IjoKICAgICAiMzJiYTcxOTQyYzBmZDAwZTY4MDcxMDRmMWJiODBhM2MiLAogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbiI6Ci0gICAgImJjYTVlNjg2
MDAxZjZkZDBhZjMwNmFmMjM0YTM2Njc3IiwKKyAgICAiZmFkNTgxMTc2NTdiNmJkZTk0ODhhMTBk
MzU4NzJkNDUiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9nZW5fdmtfZm9ybWF0
X3RhYmxlLnB5IjoKICAgICAiZDhhMGYyMjc4YzA5YTQ5MDQ5YTczOTMwYjlkYTM3MTkiLAogICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpzb24iOgotICAgICI3
MDIxM2UyM2E5YTIyNDZhNjliYTFiMmViOGVkYjEzMyIsCisgICAgIjg5Mzk1MGY2MzBjOTVjNjUz
ZWM5MDc5MDE5MzlhZmQ4IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfZm9y
bWF0X3RhYmxlX2F1dG9nZW4uY3BwIjoKLSAgICAiNWUwM2ExZDUxNjgyMjRmOWE1NDIwNjIzOTQx
OGQyZjQiCisgICAgIjQ1NTcyNTljYWRiNDVjOWRiMzMwMTAzOWNkYTNhN2JjIgogfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9WdWxrYW5faW50ZXJuYWxfc2hhZGVyX3By
b2dyYW1zLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJh
dGlvbl9oYXNoZXMvVnVsa2FuX2ludGVybmFsX3NoYWRlcl9wcm9ncmFtcy5qc29uCmluZGV4IDE5
YzAzNWI3YTI1ZTlhZWM3OWFkMGNhZWNiZWUxZTRhNGUyMTVkZTkuLmFjMTI3OTkxOGZjOTUxYjli
MzZmZGQxYmE4MzcwZTEwNGFlZWJjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9WdWxrYW5faW50ZXJuYWxfc2hhZGVy
X3Byb2dyYW1zLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2Rl
X2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9pbnRlcm5hbF9zaGFkZXJfcHJvZ3JhbXMuanNvbgpA
QCAtOTAsOSArOTAsMTEgQEAKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVy
cy9nZW4vQ29udmVydEluZGV4LmNvbXAuMDAwMDAwMDMuaW5jIjoKICAgICAiMGQzZWIwZjgyZjMy
ODgzN2VmNGMwZmU1Zjk3OGVmM2YiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9z
aGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDAuaW5j
IjoKLSAgICAiNzZkODI2NWE2Y2NlYzgxM2ZiN2Y3YWQxYjUwMzk0N2UiLAorICAgICJiYjA3YjY5
NDFjZWU5NDNlZmFmNjI3ZGExMmZhYjUwNCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAw
MS5pbmMiOgotICAgICJhMTk2NGZkOWQwYjc1NzAxYTM4NGExMWFjMjMyNDJmYiIsCisgICAgIjQ4
ZGU3OTAwZmU0ZDk2NDQ2YTYxYWJjYjFiODZmMGNhIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAw
MDAwMDAyLmluYyI6CisgICAgIjUzNDc1ZGVjODA5ZGRkYWY5MDJkZDEyMjUzYWNiYTE5IiwKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGlyZWN0
TGluZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMiOgogICAgICI1MjNkMzIwN2Q0MjQ2MTQxOTdhY2U5
NjAxY2U1Njk1MCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2Vu
L0NvbnZlcnRWZXJ0ZXguY29tcC4wMDAwMDAwMC5pbmMiOgpAQCAtMjQwLDcgKzI0Miw3IEBACiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvc3JjL0NvbnZlcnRJbmRleC5j
b21wIjoKICAgICAiYTQ2YjQ4ZDdkNWIxOWM3NGViMzc3ZjI3NTUyNWFiOGQiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL3NyYy9Db252ZXJ0SW5kZXhJbmRpcmVjdExp
bmVMb29wLmNvbXAiOgotICAgICI2MzQxOGE5MTVkMGE2M2EyNmMxN2ZlYTMwOTFjZDQyZCIsCisg
ICAgImVlOTRmMmRhYjM5NTgzYzE3Y2I1NzM5MTk5MjI5NDI3IiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydEluZGlyZWN0TGluZUxvb3AuY29tcCI6
CiAgICAgImM0ZmUwZjQ2M2I0MWNkNTliYWUzM2Y5NzExZTBiNjdiIiwKICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydFZlcnRleC5jb21wIjoKQEAgLTI1
Niw5ICsyNTgsOSBAQAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL3Ny
Yy9PdmVybGF5RHJhdy5jb21wIjoKICAgICAiZGNjMjQ2YjM5OGIyZTA3YTg2OWEyNjQ2NjY0OTkz
NjIiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJz
X2F1dG9nZW4uY3BwIjoKLSAgICAiN2UwYmMzNmQyNGFiYjc3MzI2MGE3YmJkNDdiOWQxZDAiLAor
ICAgICI3YTM4NDQyZjYzZDZmYjdiOTMxMzkwZDM3NzZjYzk2NCIsCiAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5oIjoKLSAgICAiMzUw
MDIwZGJjMTM2YWU4Y2M2NzQ1NTY5NGVkMTNmMzEiLAorICAgICIzZWVhOTYxMzk5Y2MzMWJlZGFj
NTEyODc3MGQ1MTc1ZCIsCiAgICJ0b29scy9nbHNsYW5nL2dsc2xhbmdfdmFsaWRhdG9yLmV4ZS5z
aGExIjoKICAgICAiMjg5ZjMwNTk4ODY1YTk4N2EyMWI3OWFlNTI1ZmM2NmYiLAogICAidG9vbHMv
Z2xzbGFuZy9nbHNsYW5nX3ZhbGlkYXRvci5zaGExIjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9WdWxrYW5fbWFuZGF0
b3J5X2Zvcm1hdF9zdXBwb3J0X3RhYmxlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
Y3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVsa2FuX21hbmRhdG9yeV9mb3JtYXRfc3Vw
cG9ydF90YWJsZS5qc29uCmluZGV4IDJmNzFmNWFkODA1YzZjZGUwOWJlYzdmZjI5NTI1NTA3Njk4
ODQ4YjMuLmQzMzUyNzRkMzNiMmZmNTc1ZTY1OWY1ZTgxMTRjZWM0NDkxNmQ1MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hl
cy9WdWxrYW5fbWFuZGF0b3J5X2Zvcm1hdF9zdXBwb3J0X3RhYmxlLmpzb24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9t
YW5kYXRvcnlfZm9ybWF0X3N1cHBvcnRfdGFibGUuanNvbgpAQCAtOCw1ICs4LDUgQEAKICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfbWFuZGF0b3J5X2Zvcm1hdF9zdXBwb3J0X3Rh
YmxlX2F1dG9nZW4uY3BwIjoKICAgICAiOGJmZDhhMzg1N2MyYjkwNjJkN2FkYTQ2YzdkMjdiY2Yi
LAogICAidGhpcmRfcGFydHkvdnVsa2FuLWhlYWRlcnMvc3JjL3JlZ2lzdHJ5L3ZrLnhtbCI6Ci0g
ICAgIjExM2FhN2RkMmEzN2QyMzgxMGJkNTdjNTJlOTEzYTgwIgorICAgICI0MDlmZWFjOTc5OTIy
YmU0YWRiNWU4ZDNlYzE2YWRiNyIKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9o
YXNoZXMvb3ZlcmxheV93aWRnZXRzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3Jp
cHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvb3ZlcmxheV93aWRnZXRzLmpzb24KaW5kZXggZWRm
ZDI2YTk4YWRjNDNiNTc4MDY4YWJmY2NlOWEzZDIyNDVmOWRmZS4uNjcyYjQ4YWRhODgyYTNjY2Nk
NWUzMTJhZGYxMDJiODg3N2ZkZGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL292ZXJsYXlfd2lkZ2V0cy5qc29uCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hl
cy9vdmVybGF5X3dpZGdldHMuanNvbgpAQCAtMSw4ICsxLDggQEAKIHsKICAgInNyYy9saWJBTkdM
RS9PdmVybGF5X2F1dG9nZW4uY3BwIjoKLSAgICAiNTE0YjgxMDhmNjJlZjYxNmMyOTZkYzUxMWJi
MmY2NDQiLAorICAgICJiMGQ5ODAzZjJkYjdiOTYyYTUzZDRkODg1N2E2M2ZiYyIsCiAgICJzcmMv
bGliQU5HTEUvZ2VuX292ZXJsYXlfd2lkZ2V0cy5weSI6CiAgICAgIjA3MjUyZmJkZTMwNGZkNDg1
NTlhZTA3ZjhmOTIwYTA4IiwKICAgInNyYy9saWJBTkdMRS9vdmVybGF5X3dpZGdldHMuanNvbiI6
Ci0gICAgIjU1MmIxZTI4ODNhMTJjMzhkNDI3YzdmYmQxYzJiZjIyIgorICAgICIxMzYyOTczNGMz
MTRjYzg4YzQ4NWNiMjc1Mjc5MTNmMyIKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlv
bl9oYXNoZXMvcGFja2VkX2VudW0uanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Njcmlw
dHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wYWNrZWRfZW51bS5qc29uCmluZGV4IDY1NjRlMDRh
MWNlYTgyMDMzNWQ2MjQzYjI5Mzc3M2RmOTkwZDg1MDMuLmNlMDAxN2Y4MjRlM2RiNTg1NzdlZDI5
N2JjN2NmYWRiMGE0MWM2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Nj
cmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wYWNrZWRfZW51bS5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wYWNrZWRf
ZW51bS5qc29uCkBAIC00LDEzICs0LDEzIEBACiAgICJzcmMvY29tbW9uL1BhY2tlZEVHTEVudW1z
X2F1dG9nZW4uaCI6CiAgICAgIjA4NWQ4MmQyMDAzZjAyMzQ1YWJjNDk4NjUyMzEyN2Q0IiwKICAg
InNyYy9jb21tb24vUGFja2VkR0xFbnVtc19hdXRvZ2VuLmNwcCI6Ci0gICAgIjQxOTU1N2FkYWEx
NDliZWQ4MDZmN2JiOWM2OGIyY2NjIiwKKyAgICAiOGZjZWVhYmFhOGE5NmQwZjBiMjAzNGUyYzU2
ZmY1OTciLAogICAic3JjL2NvbW1vbi9QYWNrZWRHTEVudW1zX2F1dG9nZW4uaCI6Ci0gICAgIjg2
NjA2NmU3NmE2Mjc3ZDA5ZjdhZTQwMTc1YjJkMjkzIiwKKyAgICAiOWJhYTYzNTZjODZkZmJmNzIz
ODA1Mzk2OThiNTU1OTAiLAogICAic3JjL2NvbW1vbi9nZW5fcGFja2VkX2dsX2VudW1zLnB5IjoK
ICAgICAiYjNlOTZlYTQ0ZjUyZWMyM2VlODkzYmQ4NDNkZmQyY2IiLAogICAic3JjL2NvbW1vbi9w
YWNrZWRfZWdsX2VudW1zLmpzb24iOgogICAgICI3NmUxYjgxNDQyMWUxMjExNjRkNjBhMGQ4OWNi
MTZjMSIsCiAgICJzcmMvY29tbW9uL3BhY2tlZF9nbF9lbnVtcy5qc29uIjoKLSAgICAiNThmMDcz
NDc3NjY5NjE0Y2NkYzdlMTYxZDRlNTFjODkiCisgICAgImZiZTU4OWRjNmM3OTBmMGRmNDdlMzBh
NGJmMGE0OGVhIgogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wcm9j
X3RhYmxlLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJh
dGlvbl9oYXNoZXMvcHJvY190YWJsZS5qc29uCmluZGV4IDMwNGZjM2UxMWJjNWM4MGZjODRiY2Ex
YWFjMzNjNTJkYjE1NGRlZmQuLjhkZDY1YTlhMmE4MWNjNmY4OWMzMGYzODhhMTMxMTQyYWQ3NDlh
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5l
cmF0aW9uX2hhc2hlcy9wcm9jX3RhYmxlLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL3Byb2NfdGFibGUuanNvbgpAQCAtNiwx
NSArNiwxNSBAQAogICAic2NyaXB0cy9nZW5fcHJvY190YWJsZS5weSI6CiAgICAgIjI0ZGJjYzc4
ZmQzZjAwMGY1OGNhOTgyMzdjY2MwZGE0IiwKICAgInNjcmlwdHMvZ2wueG1sIjoKLSAgICAiYzRh
MzIxM2U2MDZkODQ0ZTgxMjg4M2ZkNzI5YzRmZDMiLAorICAgICJlNzRhNTk1MDY4Y2JkZDYwNjQz
MDBiZTFlNzFiN2NjOSIsCiAgICJzY3JpcHRzL2dsX2FuZ2xlX2V4dC54bWwiOgotICAgICJkNjkw
N2NkODRkOTVhYzBiMzJhMTY0MTk0ZWFkY2Y1MyIsCisgICAgIjA3OWNjNDgyOWRlN2NlNjM4ZmFm
N2JiZjY2ZTE0MWFkIiwKICAgInNjcmlwdHMvcmVnaXN0cnlfeG1sLnB5IjoKLSAgICAiNDY3YWUx
YTk5ODgwNDlhNDI5ZDgyMDJlNWQyY2Y3M2MiLAorICAgICIwNmM4MzdiMzk1YzhjZDBjNGZjOTM3
YjE5MzM2NTA0MiIsCiAgICJzY3JpcHRzL3dnbC54bWwiOgogICAgICJhYTk2NDE5YzU4MmFmMmY2
NjczNDMwZTI4NDc2OTNmNCIsCiAgICJzcmMvbGliR0wvcHJvY190YWJsZV93Z2xfYXV0b2dlbi5j
cHAiOgogICAgICIwM2MwNWYyMGM1N2MxZGU4MjJiMGRkYWY2ZDRmOTYwNyIsCiAgICJzcmMvbGli
R0xFU3YyL3Byb2NfdGFibGVfZWdsX2F1dG9nZW4uY3BwIjoKLSAgICAiOTUxNWM1YzBiZWYyNTFi
OTRiMzMxNmIzZWM4MWYxZTIiCisgICAgImE1MWM4NTljNzIxZGNkMWI1M2EwMWE2MDUyMGZhZDU2
IgogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvZW50cnlfcG9pbnRfcGFja2VkX2dsX2VudW1zLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2VudHJ5X3BvaW50X3BhY2tlZF9nbF9lbnVt
cy5qc29uCmluZGV4IDI3YjY3MWU2MWYzNGE2MmU2YWI5MzAzNzdiY2NhOGQ5ZGFlMjFmZWUuLjgx
OWM5YzhhNjQyNTgxOGU0YmMwOGFkYjZkZjZjMzNiYjc0MTc1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZW50cnlfcG9pbnRfcGFja2VkX2dsX2VudW1zLmpz
b24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9lbnRyeV9wb2ludF9wYWNr
ZWRfZ2xfZW51bXMuanNvbgpAQCAtODksNyArODksOCBAQAogICAgICAgICAiaWQiOiAiVHJhbnNm
b3JtRmVlZGJhY2tJRCIKICAgICB9LAogICAgICJnbEJpbmRVbmlmb3JtTG9jYXRpb24iOiB7Ci0g
ICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIK
ICAgICB9LAogICAgICJnbEJpbmRWZXJ0ZXhBcnJheSI6IHsKICAgICAgICAgImFycmF5IjogIlZl
cnRleEFycmF5SUQiCkBAIC01NzQsMjUgKzU3NSwzMiBAQAogICAgICAgICAicmVuZGVyYnVmZmVy
IjogIlJlbmRlcmJ1ZmZlcklEIgogICAgIH0sCiAgICAgImdsR2V0blVuaWZvcm1kdiI6IHsKLSAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJT
aGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgog
ICAgIH0sCiAgICAgImdsR2V0blVuaWZvcm1mdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hh
ZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAg
ICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsR2V0blVu
aWZvcm1mdlJvYnVzdCI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgor
ICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24i
OiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsR2V0blVuaWZvcm1pdiI6IHsKLSAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJT
aGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgog
ICAgIH0sCiAgICAgImdsR2V0blVuaWZvcm1pdlJvYnVzdCI6IHsKLSAgICAgICAgInByb2dyYW0i
OiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQi
LAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImds
R2V0blVuaWZvcm11aXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIK
KyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9u
IjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbEdldG5Vbmlmb3JtdWl2Um9idXN0
IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9n
cmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRQYXRoQ29tbWFuZHMiOiB7CiAgICAgICAgICJwYXRo
IjogIlBhdGhJRCIKQEAgLTgzOSwzMSArODQ3LDM4IEBACiAgICAgICAgICJwcm9ncmFtIjogIlNo
YWRlclByb2dyYW1JRCIKICAgICB9LAogICAgICJnbEdldFVuaWZvcm1kdiI6IHsKLSAgICAgICAg
InByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQ
cm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0s
CiAgICAgImdsR2V0VW5pZm9ybWZ2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9n
cmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJs
b2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRVbmlmb3JtZnZS
b2J1c3QiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAg
InByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZv
cm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbEdldFVuaWZvcm1JbmRpY2VzIjogewogICAgICAg
ICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCiAgICAgfSwKICAgICAiZ2xHZXRVbmlmb3Jt
aXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInBy
b2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1M
b2NhdGlvbiIKICAgICB9LAogICAgICJnbEdldFVuaWZvcm1pdlJvYnVzdCI6IHsKLSAgICAgICAg
InByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQ
cm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0s
CiAgICAgImdsR2V0VW5pZm9ybUxvY2F0aW9uIjogewogICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiCiAgICAgfSwKICAgICAiZ2xHZXRVbmlmb3JtdWl2IjogewotICAgICAgICAi
cHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclBy
b2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwK
ICAgICAiZ2xHZXRVbmlmb3JtdWl2Um9idXN0IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRWZXJ0
ZXhBcnJheUluZGV4ZWQ2NGl2IjogewogICAgICAgICAidmFvYmoiOiAiVmVydGV4QXJyYXlJRCIK
QEAgLTg3OCwxMCArODkzLDE4IEBACiAgICAgICAgICJoYW5kbGVUeXBlIjogIkhhbmRsZVR5cGUi
LAogICAgICAgICAibWVtb3J5IjogIk1lbW9yeU9iamVjdElEIgogICAgIH0sCisgICAgImdsSW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlIjogeworICAgICAgICAiaGFuZGxlVHlwZSI6ICJIYW5kbGVU
eXBlIiwKKyAgICAgICAgIm1lbW9yeSI6ICJNZW1vcnlPYmplY3RJRCIKKyAgICB9LAogICAgICJn
bEltcG9ydFNlbWFwaG9yZUZkIjogewogICAgICAgICAiaGFuZGxlVHlwZSI6ICJIYW5kbGVUeXBl
IiwKICAgICAgICAgInNlbWFwaG9yZSI6ICJTZW1hcGhvcmVJRCIKICAgICB9LAorICAgICJnbElt
cG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZSI6IHsKKyAgICAgICAgImhhbmRsZVR5cGUiOiAiSGFu
ZGxlVHlwZSIsCisgICAgICAgICJzZW1hcGhvcmUiOiAiU2VtYXBob3JlSUQiCisgICAgfSwKICAg
ICAiZ2xJbnRlcnBvbGF0ZVBhdGhzIjogewogICAgICAgICAicGF0aEEiOiAiUGF0aElEIiwKICAg
ICAgICAgInBhdGhCIjogIlBhdGhJRCIKQEAgLTExNTAsMTU0ICsxMTczLDIwNCBAQAogICAgICAg
ICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5p
Zm9ybTFkIjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlm
b3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTFkdiI6IHsKLSAgICAg
ICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAg
IH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0xZiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hh
ZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAg
ICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3Jh
bVVuaWZvcm0xZnYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjog
IlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMWkiOiB7Ci0g
ICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIK
ICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMWl2IjogewotICAgICAgICAicHJvZ3JhbSI6
ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIs
CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQ
cm9ncmFtVW5pZm9ybTF1aSI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlE
IgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRp
b24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0xdWl2
IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9n
cmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTJkIjogewotICAgICAgICAicHJv
Z3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAg
ICAiZ2xQcm9ncmFtVW5pZm9ybTJkdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJv
Z3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAi
bG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZv
cm0yZiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAi
cHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9y
bUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0yZnYiOiB7Ci0gICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVy
UHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9
LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMmkiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRl
clByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAg
ICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1V
bmlmb3JtMml2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAg
ICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJV
bmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTJ1aSI6IHsKLSAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJT
aGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgog
ICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0ydWl2IjogewotICAgICAgICAicHJvZ3JhbSI6
ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIs
CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQ
cm9ncmFtVW5pZm9ybTNkIjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQi
CisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlv
biI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTNkdiI6
IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3Jh
bSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0
aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0zZiI6IHsKLSAgICAgICAgInByb2dy
YW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAg
ImdsUHJvZ3JhbVVuaWZvcm0zZnYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3Jt
M2kiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInBy
b2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1M
b2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtM2l2IjogewotICAgICAgICAi
cHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclBy
b2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwK
ICAgICAiZ2xQcm9ncmFtVW5pZm9ybTN1aSI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVy
UHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAg
ICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVu
aWZvcm0zdWl2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAg
ICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJV
bmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTRkIjogewotICAg
ICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNo
YWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAg
ICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTRkdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAor
ICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJv
Z3JhbVVuaWZvcm00ZiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgor
ICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24i
OiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm00ZnYiOiB7
Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0i
OiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlv
biIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtNGkiOiB7Ci0gICAgICAgICJwcm9ncmFt
IjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlE
IiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJn
bFByb2dyYW1Vbmlmb3JtNGl2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2Nh
dGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTR1
aSI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJv
Z3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxv
Y2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm00dWl2IjogewotICAgICAgICAi
cHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclBy
b2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwK
ICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJkdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAor
ICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJv
Z3JhbVVuaWZvcm1NYXRyaXgyZnYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3Jt
TWF0cml4MngzZHYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjog
IlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4Mngz
ZnYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInBy
b2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1M
b2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZHYiOiB7Ci0g
ICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIK
ICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYiOiB7Ci0gICAgICAgICJw
cm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJv
Z3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAog
ICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2R2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJT
aGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisg
ICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9n
cmFtVW5pZm9ybU1hdHJpeDNmdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3Jh
bUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9j
YXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDJkdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAg
ICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAi
VW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJm
diI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJv
Z3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxv
Y2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdiI6IHsKLSAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJT
aGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgog
ICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdiI6IHsKLSAgICAgICAgInBy
b2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9n
cmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAg
ICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNo
YWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAg
ICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dy
YW1Vbmlmb3JtTWF0cml4NGZ2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2Nh
dGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1h
dHJpeDR4MmR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAg
ICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJV
bmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2
IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9n
cmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2IjogewotICAg
ICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNo
YWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAg
ICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2IjogewotICAgICAgICAicHJv
Z3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAg
ICAiZ2xQcm92b2tpbmdWZXJ0ZXgiOiB7CiAgICAgICAgICJtb2RlIjogIlByb3Zva2luZ1ZlcnRl
eENvbnZlbnRpb24iCkBAIC0xNTcyLDYgKzE2NDUsMTU2IEBACiAgICAgImdsVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyI6IHsKICAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgog
ICAgIH0sCisgICAgImdsVW5pZm9ybTFmIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9y
bUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTFmdiI6IHsKKyAgICAgICAgImxvY2F0
aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0xaSI6IHsKKyAg
ICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZv
cm0xaXYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwK
KyAgICAiZ2xVbmlmb3JtMXVpIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0
aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTF1aXYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6
ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtMmYiOiB7CisgICAgICAg
ICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtMmZ2
IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAg
ImdsVW5pZm9ybTJpIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgor
ICAgIH0sCisgICAgImdsVW5pZm9ybTJpdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZv
cm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0ydWkiOiB7CisgICAgICAgICJsb2Nh
dGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtMnVpdiI6IHsK
KyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVu
aWZvcm0zZiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9
LAorICAgICJnbFVuaWZvcm0zZnYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtM2kiOiB7CisgICAgICAgICJsb2NhdGlvbiI6
ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtM2l2IjogeworICAgICAg
ICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTN1
aSI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAg
ICJnbFVuaWZvcm0zdWl2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9u
IgorICAgIH0sCisgICAgImdsVW5pZm9ybTRmIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5p
Zm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTRmdiI6IHsKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm00aSI6IHsK
KyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVu
aWZvcm00aXYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAg
fSwKKyAgICAiZ2xVbmlmb3JtNHVpIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxv
Y2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTR1aXYiOiB7CisgICAgICAgICJsb2NhdGlv
biI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4MmZ2Ijog
eworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImds
VW5pZm9ybU1hdHJpeDNmdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlv
biIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXg0ZnYiOiB7CisgICAgICAgICJsb2NhdGlv
biI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4MngzZnYi
OiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAi
Z2xVbmlmb3JtTWF0cml4Mng0ZnYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4M3gyZnYiOiB7CisgICAgICAgICJs
b2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4
M3g0ZnYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwK
KyAgICAiZ2xVbmlmb3JtTWF0cml4NHgyZnYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlm
b3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4NHgzZnYiOiB7CisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3Jt
MWQiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAg
ICAiZ2xVbmlmb3JtMWR2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9u
IgorICAgIH0sCisgICAgImdsVW5pZm9ybTJkIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5p
Zm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTJkdiI6IHsKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0zZCI6IHsK
KyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVu
aWZvcm0zZHYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAg
fSwKKyAgICAiZ2xVbmlmb3JtNGQiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtNGR2IjogeworICAgICAgICAibG9jYXRpb24i
OiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybU1hdHJpeDJkdiI6IHsK
KyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVu
aWZvcm1NYXRyaXgyeDNkdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlv
biIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgyeDRkdiI6IHsKKyAgICAgICAgImxvY2F0
aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgzZHYi
OiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAi
Z2xVbmlmb3JtTWF0cml4M3gyZHYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4M3g0ZHYiOiB7CisgICAgICAgICJs
b2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4
NGR2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisg
ICAgImdsVW5pZm9ybU1hdHJpeDR4MmR2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9y
bUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybU1hdHJpeDR4M2R2IjogeworICAgICAg
ICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCiAgICAgImdsVW5pZm9ybUJs
b2NrQmluZGluZyI6IHsKICAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgogICAg
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2V4cG9ydF90
YXJnZXRzLnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9leHBvcnRfdGFyZ2V0
cy5weQppbmRleCA4OGY5ODNiMjliY2MzNzZiMGM1NWNiYTAyNjJlMmQ0NDk1MmU0ZDczLi5iYmVk
OTM0MjY2YTIzZjczNjYzYTliYzk0YzA5ZmQ4MjRkNjA4OGNhIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2V4cG9ydF90YXJnZXRzLnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZXhwb3J0X3RhcmdldHMucHkKQEAgLTE4MywxMSArMTgz
LDEyIEBAIElHTk9SRURfSU5DTFVERVMgPSB7CiAgICAgYidsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
RGlzcGxheUQzRC5oJywKICAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJUYXJnZXRE
M0QuaCcsCiAgICAgYidsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2lu
ZG93MTFXaW5SVC5oJywKLSAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xY
LmgnLAogICAgIGInbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCcsCiAgICAg
YidsaWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0Rpc3BsYXlFQUdMLmgnLAotICAgIGInbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5oJywKICAgICBiJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgnLAorICAgIGInbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuaCcsCisgICAgYidsaWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgnLAorICAgIGInbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZ2x4L0Rpc3BsYXlHTFguaCcsCiAgICAgYidsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlz
cGxheVdHTC5oJywKICAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGxfYXBp
LmgnLAogICAgIGInbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2VuZXJhdGVfYW5kcm9pZF9i
cC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2VuZXJhdGVfYW5kcm9pZF9i
cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZGM5NTNkZjQxNWE2YmMyMDFjNmJiZjU4MzZjZTkxYTMyNmU0OWM5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nZW5l
cmF0ZV9hbmRyb2lkX2JwLnB5CkBAIC0wLDAgKzEsNDk1IEBACisjICBDb3B5cmlnaHQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKyMgIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisjCisjIEdlbmVyYXRlcyBhbiBBbmRy
b2lkLmJwIGZpbGUgZnJvbSB0aGUganNvbiBvdXRwdXQgb2YgYSAnZ24gZGVzYycgY29tbWFuZC4K
KyMgRXhhbXBsZSB1c2FnZToKKyMgICBnbiBkZXNjIG91dC9BbmRyb2lkIC0tZm9ybWF0PWpzb24g
IioiID4gZGVzYy5qc29uCisjICAgcHl0aG9uIHNjcmlwdHMvZ2VuZXJhdGVfYW5kcm9pZF9icC5w
eSBkZXNjLmpzb24gPiBBbmRyb2lkLmJwCisKK2ltcG9ydCBqc29uCitpbXBvcnQgc3lzCitpbXBv
cnQgcmUKK2ltcG9ydCBvcworaW1wb3J0IGFyZ3BhcnNlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBk
YXRlCisKK3Jvb3RfdGFyZ2V0cyA9IFsKKyAgICAiLy86bGliR0xFU3YyIiwKKyAgICAiLy86bGli
R0xFU3YxX0NNIiwKKyAgICAiLy86bGliRUdMIiwKKyAgICAiLy86bGliZmVhdHVyZV9zdXBwb3J0
IiwKK10KKworc2RrX3ZlcnNpb24gPSAnMjgnCitzdGwgPSAnbGliYysrX3N0YXRpYycKKworCitk
ZWYgdGFicyhpbmRlbnQpOgorICAgIHJldHVybiAnICcgKiAoaW5kZW50ICogNCkKKworCitkZWYg
aGFzX2NoaWxkX3ZhbHVlcyh2YWx1ZSk6CisgICAgIyBFbGVtZW50cyBvZiB0aGUgYmx1ZXByaW50
IGNhbiBiZSBwcnVuZWQgaWYgdGhleSBhcmUgZW1wdHkgbGlzdHMgb3IgZGljdGlvbmFyaWVzIG9m
IGVtcHR5CisgICAgIyBsaXN0cworICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAg
ICAgICByZXR1cm4gbGVuKHZhbHVlKSA+IDAKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0
KToKKyAgICAgICAgZm9yIChpdGVtLCBpdGVtX3ZhbHVlKSBpbiB2YWx1ZS5pdGVtcygpOgorICAg
ICAgICAgICAgaWYgaGFzX2NoaWxkX3ZhbHVlcyhpdGVtX3ZhbHVlKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICMgVGhpcyBpcyBhIHZh
bHVlIGxlYWYgbm9kZQorICAgIHJldHVybiBUcnVlCisKKworZGVmIHdyaXRlX2JsdWVwcmludF9r
ZXlfdmFsdWUob3V0cHV0LCBuYW1lLCB2YWx1ZSwgaW5kZW50PTEpOgorICAgIGlmIG5vdCBoYXNf
Y2hpbGRfdmFsdWVzKHZhbHVlKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBpc2luc3RhbmNl
KHZhbHVlLCBzZXQpIG9yIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgICB2YWx1ZSA9
IGxpc3Qoc29ydGVkKHNldCh2YWx1ZSkpKQorCisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlz
dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQodGFicyhpbmRlbnQpICsgJyVzOiBbJyAlIG5hbWUp
CisgICAgICAgIGZvciBpdGVtIGluIHZhbHVlOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh0
YWJzKGluZGVudCArIDEpICsgJyIlcyIsJyAlIGl0ZW0pCisgICAgICAgIG91dHB1dC5hcHBlbmQo
dGFicyhpbmRlbnQpICsgJ10sJykKKyAgICAgICAgcmV0dXJuCisgICAgaWYgaXNpbnN0YW5jZSh2
YWx1ZSwgZGljdCk6CisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBvdXRwdXQuYXBwZW5kKHRhYnMoaW5kZW50KSArICclczogeycgJSBuYW1lKQorICAg
ICAgICBmb3IgKGl0ZW0sIGl0ZW1fdmFsdWUpIGluIHZhbHVlLml0ZW1zKCk6CisgICAgICAgICAg
ICB3cml0ZV9ibHVlcHJpbnRfa2V5X3ZhbHVlKG91dHB1dCwgaXRlbSwgaXRlbV92YWx1ZSwgaW5k
ZW50ICsgMSkKKyAgICAgICAgb3V0cHV0LmFwcGVuZCh0YWJzKGluZGVudCkgKyAnfSwnKQorICAg
ICAgICByZXR1cm4KKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKKyAgICAgICAgb3V0
cHV0LmFwcGVuZCh0YWJzKGluZGVudCkgKyAnJXM6ICVzLCcgJSAobmFtZSwgJ3RydWUnIGlmIHZh
bHVlIGVsc2UgJ2ZhbHNlJykpCisgICAgICAgIHJldHVybgorICAgIG91dHB1dC5hcHBlbmQodGFi
cyhpbmRlbnQpICsgJyVzOiAiJXMiLCcgJSAobmFtZSwgdmFsdWUpKQorCisKK2RlZiB3cml0ZV9i
bHVlcHJpbnQob3V0cHV0LCB0YXJnZXRfdHlwZSwgdmFsdWVzKToKKyAgICBvdXRwdXQuYXBwZW5k
KCclcyB7JyAlIHRhcmdldF90eXBlKQorICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gdmFsdWVzLml0
ZW1zKCk6CisgICAgICAgIHdyaXRlX2JsdWVwcmludF9rZXlfdmFsdWUob3V0cHV0LCBrZXksIHZh
bHVlKQorICAgIG91dHB1dC5hcHBlbmQoJ30nKQorCisKK2RlZiBnbl90YXJnZXRfdG9fYmx1ZXBy
aW50X3RhcmdldCh0YXJnZXQsIHRhcmdldF9pbmZvKToKKyAgICBpZiAnb3V0cHV0X25hbWUnIGlu
IHRhcmdldF9pbmZvOgorICAgICAgICByZXR1cm4gdGFyZ2V0X2luZm9bJ291dHB1dF9uYW1lJ10K
KworICAgICMgUHJlZml4IGFsbCB0YXJnZXRzIHdpdGggYW5nbGVfCisgICAgIyBSZW1vdmUgdGhl
IHByZWZpeCAvLzogZnJvbSBnbiB0YXJnZXQgbmFtZXMKKyAgICBjbGVhbmVkX3BhdGggPSByZS5z
dWIocideLy8uKjonLCAnJywgdGFyZ2V0KQorICAgIHByZWZpeCA9ICJhbmdsZV8iCisgICAgaWYg
bm90IGNsZWFuZWRfcGF0aC5zdGFydHN3aXRoKHByZWZpeCk6CisgICAgICAgIGNsZWFuZWRfcGF0
aCA9IHByZWZpeCArIGNsZWFuZWRfcGF0aAorICAgIHJldHVybiBjbGVhbmVkX3BhdGgKKworCitk
ZWYgcmVtYXBfZ25fcGF0aChwYXRoKToKKyAgICAjIFRPRE86IHBhc3MgdGhlIGduIGdlbiBmb2xk
ZXIgYXMgYW4gYXJnIHNvIGl0IGlzIGZ1dHVyZSBwcm9vZi4gYi8xNTA0NTcyNzcKKyAgICByZW1h
cF9mb2xkZXJzID0gWworICAgICAgICAoJ291dC9BbmRyb2lkL2dlbi9hbmdsZS8nLCAnJyksCisg
ICAgICAgICgnb3V0L0FuZHJvaWQvZ2VuLycsICcnKSwKKyAgICBdCisKKyAgICByZW1hcHBlZF9w
YXRoID0gcGF0aAorICAgIGZvciAocmVtYXBfc291cmNlLCByZW1hcF9kZXN0KSBpbiByZW1hcF9m
b2xkZXJzOgorICAgICAgICByZW1hcHBlZF9wYXRoID0gcmVtYXBwZWRfcGF0aC5yZXBsYWNlKHJl
bWFwX3NvdXJjZSwgcmVtYXBfZGVzdCkKKworICAgIHJldHVybiByZW1hcHBlZF9wYXRoCisKKwor
ZGVmIGduX3BhdGhfdG9fYmx1ZXByaW50X3BhdGgoc291cmNlKToKKyAgICAjIGduIHVzZXMgJy8v
JyB0byBpbmRpY2F0ZSB0aGUgcm9vdCBkaXJlY3RvcnksIGJsdWVwcmludCB1c2VzIHRoZSAuYnAg
ZmlsZSdzIGxvY2F0aW9uCisgICAgcmV0dXJuIHJlbWFwX2duX3BhdGgocmUuc3ViKHInXi8vPycs
ICcnLCBzb3VyY2UpKQorCisKK2RlZiBnbl9wYXRoc190b19ibHVlcHJpbnRfcGF0aHMocGF0aHMp
OgorICAgIHJlYmFzZWRfcGF0aHMgPSBbXQorICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAg
ICByZWJhc2VkX3BhdGhzLmFwcGVuZChnbl9wYXRoX3RvX2JsdWVwcmludF9wYXRoKHBhdGgpKQor
ICAgIHJldHVybiByZWJhc2VkX3BhdGhzCisKKworZGVmIGduX3NvdXJjZXNfdG9fYmx1ZXByaW50
X3NvdXJjZXMoc291cmNlcyk6CisgICAgIyBCbHVlcHJpbnRzIG9ubHkgbGlzdCBzb3VyY2UgZmls
ZXMgaW4gdGhlIHNvdXJjZXMgbGlzdC4gSGVhZGVycyBhcmUgb25seSByZWZlcmVuY2VkIHRob3Vn
aAorICAgICMgaW5jbHVkZSBwYXRocy4KKyAgICBmaWxlX2V4dGVuc2lvbl93aGl0ZWxpc3QgPSBb
CisgICAgICAgICcuYycsCisgICAgICAgICcuY2MnLAorICAgICAgICAnLmNwcCcsCisgICAgXQor
CisgICAgcmViYXNlZF9zb3VyY2VzID0gW10KKyAgICBmb3Igc291cmNlIGluIHNvdXJjZXM6Cisg
ICAgICAgIGlmIG9zLnBhdGguc3BsaXRleHQoc291cmNlKVsxXSBpbiBmaWxlX2V4dGVuc2lvbl93
aGl0ZWxpc3Q6CisgICAgICAgICAgICByZWJhc2VkX3NvdXJjZXMuYXBwZW5kKGduX3BhdGhfdG9f
Ymx1ZXByaW50X3BhdGgoc291cmNlKSkKKyAgICByZXR1cm4gcmViYXNlZF9zb3VyY2VzCisKKwor
dGFyZ2V0X2JsYWNraXN0ID0gWworICAgICcvL2J1aWxkL2NvbmZpZzpzaGFyZWRfbGlicmFyeV9k
ZXBzJywKK10KKworaW5jbHVkZV9ibGFja2xpc3QgPSBbCitdCisKKworZGVmIGduX2RlcHNfdG9f
Ymx1ZXByaW50X2RlcHModGFyZ2V0X2luZm8sIGJ1aWxkX2luZm8pOgorICAgIHN0YXRpY19saWJz
ID0gW10KKyAgICBzaGFyZWRfbGlicyA9IFtdCisgICAgZGVmYXVsdHMgPSBbXQorICAgIGdlbmVy
YXRlZF9oZWFkZXJzID0gW10KKyAgICBoZWFkZXJfbGlicyA9IFtdCisgICAgaWYgbm90ICdkZXBz
JyBpbiB0YXJnZXRfaW5mbzoKKyAgICAgICAgcmV0dXJuIChzdGF0aWNfbGlicywgZGVmYXVsdHMp
CisKKyAgICBmb3IgZGVwIGluIHRhcmdldF9pbmZvWydkZXBzJ106CisgICAgICAgIGlmIG5vdCBk
ZXAgaW4gdGFyZ2V0X2JsYWNraXN0OgorICAgICAgICAgICAgZGVwX2luZm8gPSBidWlsZF9pbmZv
W2RlcF0KKyAgICAgICAgICAgIGJsdWVwcmludF9kZXBfbmFtZSA9IGduX3RhcmdldF90b19ibHVl
cHJpbnRfdGFyZ2V0KGRlcCwgZGVwX2luZm8pCisKKyAgICAgICAgICAgICMgRGVwZW5kaW5nIG9u
IHRoZSBkZXAgdHlwZSwgYmx1ZXByaW50cyByZWZlcmVuY2UgaXQgZGlmZmVyZW50bHkuCisgICAg
ICAgICAgICBnbl9kZXBfdHlwZSA9IGRlcF9pbmZvWyd0eXBlJ10KKyAgICAgICAgICAgIGlmIGdu
X2RlcF90eXBlID09ICdzdGF0aWNfbGlicmFyeSc6CisgICAgICAgICAgICAgICAgc3RhdGljX2xp
YnMuYXBwZW5kKGJsdWVwcmludF9kZXBfbmFtZSkKKyAgICAgICAgICAgIGVsaWYgZ25fZGVwX3R5
cGUgPT0gJ3NoYXJlZF9saWJyYXJ5JzoKKyAgICAgICAgICAgICAgICBzaGFyZWRfbGlicy5hcHBl
bmQoYmx1ZXByaW50X2RlcF9uYW1lKQorICAgICAgICAgICAgZWxpZiBnbl9kZXBfdHlwZSA9PSAn
c291cmNlX3NldCcgb3IgZ25fZGVwX3R5cGUgPT0gJ2dyb3VwJzoKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0cy5hcHBlbmQoYmx1ZXByaW50X2RlcF9uYW1lKQorICAgICAgICAgICAgZWxpZiBnbl9k
ZXBfdHlwZSA9PSAnYWN0aW9uJzoKKyAgICAgICAgICAgICAgICBnZW5lcmF0ZWRfaGVhZGVycy5h
cHBlbmQoYmx1ZXByaW50X2RlcF9uYW1lKQorCisgICAgICAgICAgICAjIEJsdWVwcmludHMgZG8g
bm90IGNoYWluIGxpbmtpbmcgb2Ygc3RhdGljIGxpYnJhcmllcy4KKyAgICAgICAgICAgIChjaGls
ZF9zdGF0aWNfbGlicywgXywgXywgY2hpbGRfZ2VuZXJhdGVkX2hlYWRlcnMsIF8pID0gZ25fZGVw
c190b19ibHVlcHJpbnRfZGVwcygKKyAgICAgICAgICAgICAgICBkZXBfaW5mbywgYnVpbGRfaW5m
bykKKworICAgICAgICAgICAgIyBFYWNoIHRhcmdldCBuZWVkcyB0byBsaW5rIGFsbCBjaGlsZCBz
dGF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICBzdGF0aWNfbGlicyArPSBj
aGlsZF9zdGF0aWNfbGlicworCisgICAgICAgICAgICAjIEVhY2ggYmx1ZXByaW50IHRhcmdldCBy
dW5zIGdlbnJ1bGVzIGluIGEgZGlmZmVyZW50IG91dHB1dCBkaXJlY3RvcnkgdW5saWtlIEdOLiBJ
ZiBhCisgICAgICAgICAgICAjIHRhcmdldCBkZXBlbmRzIG9uIGFub3RoZXIncyBnZW5ydWxlLCBp
dCB3b250IGZpbmQgdGhlIG91dHB1dHMuIFByb3BvZ2F0ZSBnZW5lcmF0ZWQKKyAgICAgICAgICAg
ICMgaGVhZGVycyB1cCB0aGUgZGVwZW5kZW5jeSBzdGFjay4KKyAgICAgICAgICAgIGdlbmVyYXRl
ZF9oZWFkZXJzICs9IGNoaWxkX2dlbmVyYXRlZF9oZWFkZXJzCisKKyAgICByZXR1cm4gKHN0YXRp
Y19saWJzLCBzaGFyZWRfbGlicywgZGVmYXVsdHMsIGdlbmVyYXRlZF9oZWFkZXJzLCBoZWFkZXJf
bGlicykKKworCitkZWYgZ25fbGlic190b19ibHVlcHJpbnRfc2hhcmVkX2xpYnJhcmllcyh0YXJn
ZXRfaW5mbyk6CisgICAgbGliX2JsYWNraXN0ID0gWworICAgICAgICAnYW5kcm9pZF9zdXBwb3J0
JywKKyAgICBdCisKKyAgICByZXN1bHQgPSBbXQorICAgIGlmICdsaWJzJyBpbiB0YXJnZXRfaW5m
bzoKKyAgICAgICAgZm9yIGxpYiBpbiB0YXJnZXRfaW5mb1snbGlicyddOgorICAgICAgICAgICAg
aWYgbm90IGxpYiBpbiBsaWJfYmxhY2tpc3Q6CisgICAgICAgICAgICAgICAgYW5kcm9pZF9saWIg
PSBsaWIgaWYgJ0AnIGluIGxpYiBlbHNlICdsaWInICsgbGliCisgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChhbmRyb2lkX2xpYikKKyAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIGduX2lu
Y2x1ZGVfZGlyc190b19ibHVlcHJpbnRfaW5jbHVkZV9kaXJzKHRhcmdldF9pbmZvKToKKyAgICBy
ZXN1bHQgPSBbXQorICAgIGlmICdpbmNsdWRlX2RpcnMnIGluIHRhcmdldF9pbmZvOgorICAgICAg
ICBmb3IgaW5jbHVkZV9kaXIgaW4gdGFyZ2V0X2luZm9bJ2luY2x1ZGVfZGlycyddOgorICAgICAg
ICAgICAgaWYgbm90IGluY2x1ZGVfZGlyIGluIGluY2x1ZGVfYmxhY2tsaXN0OgorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoZ25fcGF0aF90b19ibHVlcHJpbnRfcGF0aChpbmNsdWRlX2Rp
cikpCisgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBlc2NhcGVfcXVvdGVzKHN0cik6CisgICAg
cmV0dXJuIHN0ci5yZXBsYWNlKCJcIiIsICJcXFwiIikucmVwbGFjZSgiXCciLCAiXFxcJyIpCisK
KworYW5nbGVfY3B1X2JpdHNfZGVmaW5lID0gcideQU5HTEVfSVNfWzAtOV0rX0JJVF9DUFUkJwor
CisKK2RlZiBnbl9jZmxhZ3NfdG9fYmx1ZXByaW50X2NmbGFncyh0YXJnZXRfaW5mbyk6CisgICAg
cmVzdWx0ID0gW10KKworICAgICMgT25seSBmb3J3YXJkIGNmbGFncyB0aGF0IGRpc2FibGUgd2Fy
bmluZ3MKKyAgICBjZmxhZ193aGl0ZWxpc3QgPSByJ14tV25vLS4qJCcKKworICAgIGZvciBjZmxh
Z190eXBlIGluIFsnY2ZsYWdzJywgJ2NmbGFnc19jJywgJ2NmbGFnc19jYyddOgorICAgICAgICBp
ZiBjZmxhZ190eXBlIGluIHRhcmdldF9pbmZvOgorICAgICAgICAgICAgZm9yIGNmbGFnIGluIHRh
cmdldF9pbmZvW2NmbGFnX3R5cGVdOgorICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChjZmxh
Z193aGl0ZWxpc3QsIGNmbGFnKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChj
ZmxhZykKKworICAgICMgQ2hyb21lIGFuZCBBbmRyb2lkIHVzZSBkaWZmZXJlbnQgdmVyc2lvbnMg
b2YgQ2xhbmcgd2hpY2ggc3VwcG9ydCBkaWZmZXJudCB3YXJuaW5nIG9wdGlvbnMuCisgICAgIyBJ
Z25vcmUgZXJyb3JzIGFib3V0IHVucmVjb2duaXplZCB3YXJuaW5nIGZsYWdzLgorICAgIHJlc3Vs
dC5hcHBlbmQoJy1Xbm8tdW5rbm93bi13YXJuaW5nLW9wdGlvbicpCisKKyAgICBpZiAnZGVmaW5l
cycgaW4gdGFyZ2V0X2luZm86CisgICAgICAgIGZvciBkZWZpbmUgaW4gdGFyZ2V0X2luZm9bJ2Rl
ZmluZXMnXToKKyAgICAgICAgICAgICMgRG9uJ3QgZW1pdCBBTkdMRSdzIENQVS1iaXRzIGRlZmlu
ZSBoZXJlLCBpdCB3aWxsIGJlIHBhcnQgb2YgdGhlIGFyY2gtc3BlY2lmaWMKKyAgICAgICAgICAg
ICMgaW5mb3JtYXRpb24gbGF0ZXIKKyAgICAgICAgICAgIGlmIG5vdCByZS5zZWFyY2goYW5nbGVf
Y3B1X2JpdHNfZGVmaW5lLCBkZWZpbmUpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Jy1EJXMnICUgZXNjYXBlX3F1b3RlcyhkZWZpbmUpKQorCisgICAgcmV0dXJuIHJlc3VsdAorCisK
K2RlZiBnbl9hcmNoX3NwZWNpZmljX3RvX2JsdWVwcmludCh0YXJnZXRfaW5mbyk6CisgICAgYXJj
aF9pbmZvcyA9IHsKKyAgICAgICAgJ2FybSc6IHsKKyAgICAgICAgICAgICdiaXRzJzogMzIKKyAg
ICAgICAgfSwKKyAgICAgICAgJ2FybTY0JzogeworICAgICAgICAgICAgJ2JpdHMnOiA2NAorICAg
ICAgICB9LAorICAgICAgICAneDg2JzogeworICAgICAgICAgICAgJ2JpdHMnOiAzMgorICAgICAg
ICB9LAorICAgICAgICAneDg2XzY0JzogeworICAgICAgICAgICAgJ2JpdHMnOiA2NAorICAgICAg
ICB9LAorICAgIH0KKworICAgIHJlc3VsdCA9IHt9CisgICAgZm9yIChhcmNoX25hbWUsIGFyY2hf
aW5mbykgaW4gYXJjaF9pbmZvcy5pdGVtcygpOgorICAgICAgICByZXN1bHRbYXJjaF9uYW1lXSA9
IHsnY2ZsYWdzJzogW119CisKKyAgICAjIElmIHRoZSB0YXJnZXQgaGFzIEFOR0xFJ3MgQ1BVLWJp
dHMgZGVmaW5lLCByZXBsYWNlIGl0IHdpdGggdGhlIGFyY2gtc3BlY2lmaWMgYml0cyBoZXJlLgor
ICAgIGlmICdkZWZpbmVzJyBpbiB0YXJnZXRfaW5mbzoKKyAgICAgICAgZm9yIGRlZmluZSBpbiB0
YXJnZXRfaW5mb1snZGVmaW5lcyddOgorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGFuZ2xlX2Nw
dV9iaXRzX2RlZmluZSwgZGVmaW5lKToKKyAgICAgICAgICAgICAgICBmb3IgKGFyY2hfbmFtZSwg
YXJjaF9pbmZvKSBpbiBhcmNoX2luZm9zLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdFthcmNoX25hbWVdWydjZmxhZ3MnXS5hcHBlbmQoJy1EQU5HTEVfSVNfJWRfQklUX0NQVScg
JSBhcmNoX2luZm9bJ2JpdHMnXSkKKworICAgIHJldHVybiByZXN1bHQKKworCitibHVlcHJpbnRf
bGlicmFyeV90YXJnZXRfdHlwZXMgPSB7CisgICAgInN0YXRpY19saWJyYXJ5IjogImNjX2xpYnJh
cnlfc3RhdGljIiwKKyAgICAic2hhcmVkX2xpYnJhcnkiOiAiY2NfbGlicmFyeV9zaGFyZWQiLAor
ICAgICJzb3VyY2Vfc2V0IjogImNjX2RlZmF1bHRzIiwKKyAgICAiZ3JvdXAiOiAiY2NfZGVmYXVs
dHMiLAorfQorCisKK2RlZiBsaWJyYXJ5X3RhcmdldF90b19ibHVlcHJpbnQodGFyZ2V0LCBidWls
ZF9pbmZvKToKKyAgICB0YXJnZXRfaW5mbyA9IGJ1aWxkX2luZm9bdGFyZ2V0XQorCisgICAgYmx1
ZXByaW50X3R5cGUgPSBibHVlcHJpbnRfbGlicmFyeV90YXJnZXRfdHlwZXNbdGFyZ2V0X2luZm9b
J3R5cGUnXV0KKworICAgIGJwID0ge30KKyAgICBicFsnbmFtZSddID0gZ25fdGFyZ2V0X3RvX2Js
dWVwcmludF90YXJnZXQodGFyZ2V0LCB0YXJnZXRfaW5mbykKKworICAgIGlmICdzb3VyY2VzJyBp
biB0YXJnZXRfaW5mbzoKKyAgICAgICAgYnBbJ3NyY3MnXSA9IGduX3NvdXJjZXNfdG9fYmx1ZXBy
aW50X3NvdXJjZXModGFyZ2V0X2luZm9bJ3NvdXJjZXMnXSkKKworICAgIChicFsnc3RhdGljX2xp
YnMnXSwgYnBbJ3NoYXJlZF9saWJzJ10sIGJwWydkZWZhdWx0cyddLCBicFsnZ2VuZXJhdGVkX2hl
YWRlcnMnXSwKKyAgICAgYnBbJ2hlYWRlcl9saWJzJ10pID0gZ25fZGVwc190b19ibHVlcHJpbnRf
ZGVwcyh0YXJnZXRfaW5mbywgYnVpbGRfaW5mbykKKyAgICBicFsnc2hhcmVkX2xpYnMnXSArPSBn
bl9saWJzX3RvX2JsdWVwcmludF9zaGFyZWRfbGlicmFyaWVzKHRhcmdldF9pbmZvKQorCisgICAg
YnBbJ2xvY2FsX2luY2x1ZGVfZGlycyddID0gZ25faW5jbHVkZV9kaXJzX3RvX2JsdWVwcmludF9p
bmNsdWRlX2RpcnModGFyZ2V0X2luZm8pCisKKyAgICBicFsnY2ZsYWdzJ10gPSBnbl9jZmxhZ3Nf
dG9fYmx1ZXByaW50X2NmbGFncyh0YXJnZXRfaW5mbykKKyAgICBicFsnYXJjaCddID0gZ25fYXJj
aF9zcGVjaWZpY190b19ibHVlcHJpbnQodGFyZ2V0X2luZm8pCisKKyAgICBicFsnc2RrX3ZlcnNp
b24nXSA9IHNka192ZXJzaW9uCisgICAgYnBbJ3N0bCddID0gc3RsCisKKyAgICByZXR1cm4gKGJs
dWVwcmludF90eXBlLCBicCkKKworCitkZWYgZ25fYWN0aW9uX2FyZ3NfdG9fYmx1ZXByaW50X2Fy
Z3MoYmx1ZXByaW50X2lucHV0cywgYmx1ZXByaW50X291dHB1dHMsIGFyZ3MpOgorICAgICMgVE9E
TzogcGFzcyB0aGUgZ24gZ2VuIGZvbGRlciBhcyBhbiBhcmcgc28gd2Uga25vdyBob3cgdG8gZ2V0
IGZyb20gdGhlIGdlbiBwYXRoIHRvIHRoZSByb290CisgICAgIyBwYXRoLiBiLzE1MDQ1NzI3Nwor
ICAgIHJlbWFwX2ZvbGRlcnMgPSBbCisgICAgICAgICgnLi4vLi4vJywgJycpLAorICAgICAgICAo
J2dlbi8nLCAnJyksCisgICAgXQorCisgICAgcmVzdWx0X2FyZ3MgPSBbXQorICAgIGZvciBhcmcg
aW4gYXJnczoKKyAgICAgICAgIyBBdHRlbXB0IHRvIGZpbmQgaWYgdGhpcyBhcmcgaXMgYSBwYXRo
IHRvIG9uZSBvZiB0aGUgaW5wdXRzLiBJZiBpdCBpcywgdXNlIHRoZSBibHVlcHJpbnQKKyAgICAg
ICAgIyAkKGxvY2F0aW9uIDxwYXRoPikgYXJndW1lbnQgaW5zdGVhZCBzbyB0aGUgcGF0aCBnZXRz
IHJlbWFwcGVkIHByb3Blcmx5IHRvIHRoZSBsb2NhdGlvbgorICAgICAgICAjIHRoYXQgdGhlIHNj
cmlwdCBpcyBydW4gZnJvbQorICAgICAgICByZW1hcHBlZF9wYXRoX2FyZyA9IGFyZworICAgICAg
ICBmb3IgKHJlbWFwX3NvdXJjZSwgcmVtYXBfZGVzdCkgaW4gcmVtYXBfZm9sZGVyczoKKyAgICAg
ICAgICAgIHJlbWFwcGVkX3BhdGhfYXJnID0gcmVtYXBwZWRfcGF0aF9hcmcucmVwbGFjZShyZW1h
cF9zb3VyY2UsIHJlbWFwX2Rlc3QpCisKKyAgICAgICAgaWYgcmVtYXBwZWRfcGF0aF9hcmcgaW4g
Ymx1ZXByaW50X2lucHV0cyBvciByZW1hcHBlZF9wYXRoX2FyZyBpbiBibHVlcHJpbnRfb3V0cHV0
czoKKyAgICAgICAgICAgIHJlc3VsdF9hcmdzLmFwcGVuZCgnJChsb2NhdGlvbiAlcyknICUgcmVt
YXBwZWRfcGF0aF9hcmcpCisgICAgICAgIGVsaWYgb3MucGF0aC5iYXNlbmFtZShyZW1hcHBlZF9w
YXRoX2FyZykgaW4gYmx1ZXByaW50X291dHB1dHM6CisgICAgICAgICAgICByZXN1bHRfYXJncy5h
cHBlbmQoJyQobG9jYXRpb24gJXMpJyAlIG9zLnBhdGguYmFzZW5hbWUocmVtYXBwZWRfcGF0aF9h
cmcpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0X2FyZ3MuYXBwZW5kKHJlbWFw
cGVkX3BhdGhfYXJnKQorCisgICAgcmV0dXJuIHJlc3VsdF9hcmdzCisKKworYmx1ZXByaW50X2dl
bl90eXBlcyA9IHsKKyAgICAiYWN0aW9uIjogImNjX2dlbnJ1bGUiLAorfQorCisKK2RlZiBhY3Rp
b25fdGFyZ2V0X3RvX2JsdWVwcmludCh0YXJnZXQsIGJ1aWxkX2luZm8pOgorICAgIHRhcmdldF9p
bmZvID0gYnVpbGRfaW5mb1t0YXJnZXRdCisgICAgYmx1ZXByaW50X3R5cGUgPSBibHVlcHJpbnRf
Z2VuX3R5cGVzW3RhcmdldF9pbmZvWyd0eXBlJ11dCisKKyAgICBicCA9IHt9CisgICAgYnBbJ25h
bWUnXSA9IGduX3RhcmdldF90b19ibHVlcHJpbnRfdGFyZ2V0KHRhcmdldCwgdGFyZ2V0X2luZm8p
CisKKyAgICAjIEJsdWVwcmludHMgdXNlIG9ubHkgb25lICdzcmNzJywgbWVyZ2UgYWxsIGduIGlu
cHV0cyBpbnRvIG9uZSBsaXN0LgorICAgIGduX2lucHV0cyA9IFtdCisgICAgaWYgJ2lucHV0cycg
aW4gdGFyZ2V0X2luZm86CisgICAgICAgIGduX2lucHV0cyArPSB0YXJnZXRfaW5mb1snaW5wdXRz
J10KKyAgICBpZiAnc291cmNlcycgaW4gdGFyZ2V0X2luZm86CisgICAgICAgIGduX2lucHV0cyAr
PSB0YXJnZXRfaW5mb1snc291cmNlcyddCisgICAgYnBfc3JjcyA9IGduX3BhdGhzX3RvX2JsdWVw
cmludF9wYXRocyhnbl9pbnB1dHMpCisKKyAgICBicFsnc3JjcyddID0gYnBfc3JjcworCisgICAg
IyBnZW5ydWxlcyBnZW5lcmF0ZSB0aGUgb3V0cHV0IHJpZ2h0IGludG8gdGhlICdyb290JyBkaXJl
Y3RvcnkuIFN0cmlwIGFueSBwYXRoIGJlZm9yZSB0aGUKKyAgICAjIGZpbGUgbmFtZS4KKyAgICBi
cF9vdXRwdXRzID0gW10KKyAgICBmb3IgZ25fb3V0cHV0IGluIHRhcmdldF9pbmZvWydvdXRwdXRz
J106CisgICAgICAgIGJwX291dHB1dHMuYXBwZW5kKG9zLnBhdGguYmFzZW5hbWUoZ25fb3V0cHV0
KSkKKworICAgIGJwWydvdXQnXSA9IGJwX291dHB1dHMKKworICAgIGJwWyd0b29sX2ZpbGVzJ10g
PSBbZ25fcGF0aF90b19ibHVlcHJpbnRfcGF0aCh0YXJnZXRfaW5mb1snc2NyaXB0J10pXQorCisg
ICAgIyBHZW5lcmF0ZSB0aGUgZnVsbCBjb21tYW5kLCAkKGxvY2F0aW9uKSByZWZlcnMgdG8gdG9v
bF9maWxlc1swXSwgdGhlIHNjcmlwdAorICAgIGNtZCA9IFsnJChsb2NhdGlvbiknXSArIGduX2Fj
dGlvbl9hcmdzX3RvX2JsdWVwcmludF9hcmdzKGJwX3NyY3MsIGJwX291dHB1dHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0X2luZm9bJ2FyZ3MnXSkKKyAgICBicFsnY21kJ10gPSAnICcuam9pbihjbWQpCisKKyAgICBy
ZXR1cm4gKGJsdWVwcmludF90eXBlLCBicCkKKworCitkZWYgZ25fdGFyZ2V0X3RvX2JsdWVwcmlu
dCh0YXJnZXQsIGJ1aWxkX2luZm8pOgorICAgIGduX3R5cGUgPSBidWlsZF9pbmZvW3RhcmdldF1b
J3R5cGUnXQorICAgIGlmIGduX3R5cGUgaW4gYmx1ZXByaW50X2xpYnJhcnlfdGFyZ2V0X3R5cGVz
OgorICAgICAgICByZXR1cm4gbGlicmFyeV90YXJnZXRfdG9fYmx1ZXByaW50KHRhcmdldCwgYnVp
bGRfaW5mbykKKyAgICBlbGlmIGduX3R5cGUgaW4gYmx1ZXByaW50X2dlbl90eXBlczoKKyAgICAg
ICAgcmV0dXJuIGFjdGlvbl90YXJnZXRfdG9fYmx1ZXByaW50KHRhcmdldCwgYnVpbGRfaW5mbykK
KyAgICBlbHNlOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlVua25vd24gZ24gdGFyZ2V0
IHR5cGU6ICIgKyBnbl90eXBlKQorCisKK2RlZiBnZXRfZ25fdGFyZ2V0X2RlcGVuZGVuY2llcyhv
dXRwdXRfZGVwZW5kZW5jaWVzLCBidWlsZF9pbmZvLCB0YXJnZXQpOgorICAgIG91dHB1dF9kZXBl
bmRlbmNpZXMuaW5zZXJ0KDAsIHRhcmdldCkKKyAgICBmb3IgZGVwIGluIGJ1aWxkX2luZm9bdGFy
Z2V0XVsnZGVwcyddOgorICAgICAgICBpZiBkZXAgaW4gdGFyZ2V0X2JsYWNraXN0OgorICAgICAg
ICAgICAgIyBCbGFja2xpc3RlZCBkZXAKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlm
IGRlcCBpbiBvdXRwdXRfZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgIyBBbHJlYWR5IGFkZGVk
IHRoaXMgZGVwCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBub3QgZGVwIGluIGJ1
aWxkX2luZm86CisgICAgICAgICAgICAjIE5vIGluZm8gZm9yIHRoaXMgZGVwLCBza2lwIGl0Cisg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgUmVjdXJzZQorICAgICAgICBnZXRfZ25f
dGFyZ2V0X2RlcGVuZGVuY2llcyhvdXRwdXRfZGVwZW5kZW5jaWVzLCBidWlsZF9pbmZvLCBkZXAp
CisKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigK
KyAgICAgICAgZGVzY3JpcHRpb249J0dlbmVyYXRlIEFuZHJvaWQgYmx1ZXByaW50cyBmcm9tIGdu
IGRlc2NyaXB0aW9ucy4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICdnbl9q
c29uJywKKyAgICAgICAgaGVscD0nZ24gZGVzYyBpbiBqc29uIGZvcm1hdC4gR2VuZXJhdGVkIHdp
dGggXCdnbiBkZXNjIDxvdXRfZGlyPiAtLWZvcm1hdD1qc29uICIqIlwnLicpCisgICAgYXJncyA9
IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHdpdGggb3BlbihhcmdzLmduX2pzb24sICdyJykg
YXMgZjoKKyAgICAgICAgYnVpbGRfaW5mbyA9IGpzb24ubG9hZChmKQorCisgICAgdGFyZ2V0c190
b193cml0ZSA9IFtdCisgICAgZm9yIHJvb3RfdGFyZ2V0IGluIHJvb3RfdGFyZ2V0czoKKyAgICAg
ICAgZ2V0X2duX3RhcmdldF9kZXBlbmRlbmNpZXModGFyZ2V0c190b193cml0ZSwgYnVpbGRfaW5m
bywgcm9vdF90YXJnZXQpCisKKyAgICBibHVlcHJpbnRfdGFyZ2V0cyA9IFtdCisKKyAgICBmb3Ig
dGFyZ2V0IGluIHRhcmdldHNfdG9fd3JpdGU6CisgICAgICAgIGJsdWVwcmludF90YXJnZXRzLmFw
cGVuZChnbl90YXJnZXRfdG9fYmx1ZXByaW50KHRhcmdldCwgYnVpbGRfaW5mbykpCisKKyAgICAj
IEFkZCBBUEtzIHdpdGggYWxsIG9mIHRoZSByb290IGxpYnJhcmllcworICAgIGJsdWVwcmludF90
YXJnZXRzLmFwcGVuZCgoJ2ZpbGVncm91cCcsIHsKKyAgICAgICAgJ25hbWUnOiAnQU5HTEVfc3Jj
cycsCisgICAgICAgICdzcmNzJzogWydzcmMvKiovKi5qYXZhJyxdLAorICAgIH0pKQorCisgICAg
Ymx1ZXByaW50X3RhcmdldHMuYXBwZW5kKCgKKyAgICAgICAgJ2phdmFfZGVmYXVsdHMnLAorICAg
ICAgICB7CisgICAgICAgICAgICAnbmFtZSc6CisgICAgICAgICAgICAgICAgJ0FOR0xFX2phdmFf
ZGVmYXVsdHMnLAorICAgICAgICAgICAgJ3Nka192ZXJzaW9uJzoKKyAgICAgICAgICAgICAgICAn
c3lzdGVtX2N1cnJlbnQnLAorICAgICAgICAgICAgJ21pbl9zZGtfdmVyc2lvbic6CisgICAgICAg
ICAgICAgICAgc2RrX3ZlcnNpb24sCisgICAgICAgICAgICAnY29tcGlsZV9tdWx0aWxpYic6Cisg
ICAgICAgICAgICAgICAgJ2JvdGgnLAorICAgICAgICAgICAgJ3VzZV9lbWJlZGRlZF9uYXRpdmVf
bGlicyc6CisgICAgICAgICAgICAgICAgVHJ1ZSwKKyAgICAgICAgICAgICdqbmlfbGlicyc6IFsK
KyAgICAgICAgICAgICAgICBnbl90YXJnZXRfdG9fYmx1ZXByaW50X3RhcmdldCh0YXJnZXQsIGJ1
aWxkX2luZm9bdGFyZ2V0XSkKKyAgICAgICAgICAgICAgICBmb3IgdGFyZ2V0IGluIHJvb3RfdGFy
Z2V0cworICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdhYXB0ZmxhZ3MnOiBbCisgICAgICAg
ICAgICAgICAgIyBEb24ndCBjb21wcmVzcyAqLmpzb24gZmlsZXMKKyAgICAgICAgICAgICAgICAn
LTAgLmpzb24nLAorICAgICAgICAgICAgICAgICMgR2l2ZSBjb20uYW5kcm9pZC5hbmdsZS5jb21t
b24gSmF2YSBmaWxlcyBhY2Nlc3MgdG8gdGhlIFIgY2xhc3MKKyAgICAgICAgICAgICAgICAnLS1l
eHRyYS1wYWNrYWdlcyBjb20uYW5kcm9pZC5hbmdsZS5jb21tb24nLAorICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICdzcmNzJzogWyc6QU5HTEVfc3JjcyddLAorICAgICAgICAgICAgJ3ByaXZp
bGVnZWQnOgorICAgICAgICAgICAgICAgIFRydWUsCisgICAgICAgICAgICAnb3duZXInOgorICAg
ICAgICAgICAgICAgICdnb29nbGUnLAorICAgICAgICB9KSkKKworICAgIGJsdWVwcmludF90YXJn
ZXRzLmFwcGVuZCgoCisgICAgICAgICdhbmRyb2lkX2xpYnJhcnknLAorICAgICAgICB7CisgICAg
ICAgICAgICAnbmFtZSc6ICdBTkdMRV9saWJyYXJ5JywKKyAgICAgICAgICAgICdzZGtfdmVyc2lv
bic6ICdzeXN0ZW1fY3VycmVudCcsCisgICAgICAgICAgICAnbWluX3Nka192ZXJzaW9uJzogc2Rr
X3ZlcnNpb24sCisgICAgICAgICAgICAncmVzb3VyY2VfZGlycyc6IFsnc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3JlcycsXSwKKyAgICAgICAgICAgICdhc3NldF9kaXJzJzogWydzcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvYXNzZXRzJyxdLAorICAgICAgICAgICAgJ2FhcHRmbGFncyc6
IFsKKyAgICAgICAgICAgICAgICAjIERvbid0IGNvbXByZXNzICouanNvbiBmaWxlcworICAgICAg
ICAgICAgICAgICctMCAuanNvbicsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJ21hbmlm
ZXN0JzogJ3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUv
QW5kcm9pZE1hbmlmZXN0LnhtbCcsCisgICAgICAgICAgICAnc3RhdGljX2xpYnMnOiBbJ2FuZHJv
aWR4LnByZWZlcmVuY2VfcHJlZmVyZW5jZScsXSwKKyAgICAgICAgfSkpCisKKyAgICBibHVlcHJp
bnRfdGFyZ2V0cy5hcHBlbmQoKCdhbmRyb2lkX2FwcCcsIHsKKyAgICAgICAgJ25hbWUnOiAnQU5H
TEUnLAorICAgICAgICAnZGVmYXVsdHMnOiBbJ0FOR0xFX2phdmFfZGVmYXVsdHMnXSwKKyAgICAg
ICAgJ3N0YXRpY19saWJzJzogWydBTkdMRV9saWJyYXJ5J10sCisgICAgICAgICdtYW5pZmVzdCc6
ICdzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL0FuZHJv
aWRNYW5pZmVzdC54bWwnLAorICAgICAgICAncmVxdWlyZWQnOiBbJ3ByaXZhcHBfd2hpdGVsaXN0
X2NvbS5hbmRyb2lkLmFuZ2xlJ10sCisgICAgfSkpCisKKyAgICBvdXRwdXQgPSBbCisgICAgICAg
ICIiIi8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgJXMK
Ky8vCisvLyBDb3B5cmlnaHQgJXMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworIiIiICUgKHN5cy5hcmd2WzBdLCBkYXRlLnRvZGF5KCkueWVhcikKKyAgICBdCisg
ICAgZm9yIChibHVlcHJpbnRfdHlwZSwgYmx1ZXByaW50X2RhdGEpIGluIGJsdWVwcmludF90YXJn
ZXRzOgorICAgICAgICB3cml0ZV9ibHVlcHJpbnQob3V0cHV0LCBibHVlcHJpbnRfdHlwZSwgYmx1
ZXByaW50X2RhdGEpCisKKyAgICBwcmludCAnXG4nLmpvaW4ob3V0cHV0KQorCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nZW5lcmF0ZV9lbnRyeV9wb2ludHMucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2dlbmVyYXRlX2VudHJ5X3BvaW50cy5weQpp
bmRleCA4ZmRmZmQ3NGQyNGNmMjUwZjViZjJiZjFhNDljZTIxODMwNGQwMzZmLi41YmI4MzVmM2M3
ZWI4NjczNTc1NDJkMzc2MGQ2M2U0NTFiYTYxYTVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zY3JpcHRzL2dlbmVyYXRlX2VudHJ5X3BvaW50cy5weQorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2dlbmVyYXRlX2VudHJ5X3BvaW50cy5weQpAQCAtMTQ5
LDcgKzE0OSw3IEBAIHRlbXBsYXRlX2VudHJ5X3BvaW50X25vX3JldHVybiA9ICIiInZvaWQgR0xf
QVBJRU5UUlkge25hbWV9e2V4cGxpY2l0X2NvbnRleHRfc3VmCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7e3thc3NlcnRfZXhwbGljaXRfY29udGV4dH17cGFja2VkX2dsX2VudW1fY29udmVyc2lv
bnN9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGV7bmFtZX0oe3ZhbGlkYXRlX3BhcmFtc30pKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7ewpAQCAtMTY4LDcgKzE2OCw3IEBAIHRlbXBsYXRl
X2VudHJ5X3BvaW50X3dpdGhfcmV0dXJuID0gIiIie3JldHVybl90eXBlfUdMX0FQSUVOVFJZIHtu
YW1lfXtleHBsaWNpdF9jCiAgICAge3JldHVybl90eXBlfSByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7e3thc3NlcnRfZXhwbGljaXRfY29udGV4dH17cGFja2VkX2dsX2VudW1f
Y29udmVyc2lvbnN9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGV7bmFtZX0oe3ZhbGlkYXRlX3BhcmFtc30pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7ewpAQCAtMjA2LDcgKzIwNiw3IEBA
IGNvbnRleHRfaGVhZGVyID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KICNl
bmRpZiAvLyBBTkdMRV9DT05URVhUX0FQSV97dmVyc2lvbn1fQVVUT0dFTl9IXwogIiIiCiAKLWNv
bnRleHRfZGVjbF9mb3JtYXQgPSAiIiIgICAge3JldHVybl90eXBlfSB7bmFtZV9sb3dlcl9ub19z
dWZmaXh9KHtpbnRlcm5hbF9wYXJhbXN9KTsgXFwiIiIKK2NvbnRleHRfZGVjbF9mb3JtYXQgPSAi
IiIgICAge3JldHVybl90eXBlfSB7bmFtZV9sb3dlcl9ub19zdWZmaXh9KHtpbnRlcm5hbF9wYXJh
bXN9KXttYXliZV9jb25zdH07IFxcIiIiCiAKIGxpYmdsZXNfZW50cnlfcG9pbnRfZGVmID0gIiIi
e3JldHVybl90eXBlfUdMX0FQSUVOVFJZIGdse25hbWV9e2V4cGxpY2l0X2NvbnRleHRfc3VmZml4
fSh7ZXhwbGljaXRfY29udGV4dF9wYXJhbX17ZXhwbGljaXRfY29udGV4dF9jb21tYX17cGFyYW1z
fSkKIHt7CkBAIC01NjMsNyArNTYzLDEwIEBAIHZvaWQgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
IHBhcmFtVHlwZSwgVCB2YWx1ZUluLCBQYXJhbVZhbHVlICp2YWx1ZU91dCkKICAgICB9fQogfX0K
IAotdm9pZCBXcml0ZVBhcmFtVHlwZVRvU3RyZWFtKHN0ZDo6b3N0cmVhbSAmb3MsIFBhcmFtVHlw
ZSBwYXJhbVR5cGUsIGNvbnN0IFBhcmFtVmFsdWUmIHBhcmFtVmFsdWUpOworc3RydWN0IENhbGxD
YXB0dXJlOworc3RydWN0IFBhcmFtQ2FwdHVyZTsKKwordm9pZCBXcml0ZVBhcmFtQ2FwdHVyZVJl
cGxheShzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwgY29uc3QgUGFy
YW1DYXB0dXJlICZwYXJhbSk7CiBjb25zdCBjaGFyICpQYXJhbVR5cGVUb1N0cmluZyhQYXJhbVR5
cGUgcGFyYW1UeXBlKTsKIAogZW51bSBjbGFzcyBSZXNvdXJjZUlEVHlwZQpAQCAtNTk0LDkgKzU5
Nyw5IEBAIHRlbXBsYXRlX2ZyYW1lX2NhcHR1cmVfdXRpbHNfc291cmNlID0gIiIiLy8gR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIAogbmFtZXNwYWNlIGFuZ2xlCiB7ewotdm9pZCBXcml0
ZVBhcmFtVHlwZVRvU3RyZWFtKHN0ZDo6b3N0cmVhbSAmb3MsIFBhcmFtVHlwZSBwYXJhbVR5cGUs
IGNvbnN0IFBhcmFtVmFsdWUmIHBhcmFtVmFsdWUpCit2b2lkIFdyaXRlUGFyYW1DYXB0dXJlUmVw
bGF5KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLCBjb25zdCBQYXJh
bUNhcHR1cmUgJnBhcmFtKQoge3sKLSAgICBzd2l0Y2ggKHBhcmFtVHlwZSkKKyAgICBzd2l0Y2gg
KHBhcmFtLnR5cGUpCiAgICAge3sKIHt3cml0ZV9wYXJhbV90eXBlX3RvX3N0cmVhbV9jYXNlc30K
ICAgICAgICAgZGVmYXVsdDoKQEAgLTY1OSw3ICs2NjIsNyBAQCB0ZW1wbGF0ZV9pbml0X3BhcmFt
X3ZhbHVlX2Nhc2UgPSAiIiIgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUe2VudW19OgogICAgICAg
ICAgICAgYnJlYWs7IiIiCiAKIHRlbXBsYXRlX3dyaXRlX3BhcmFtX3R5cGVfdG9fc3RyZWFtX2Nh
c2UgPSAiIiIgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUe2VudW19OgotICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUe2VudW19PihvcywgcGFyYW1WYWx1ZS57
dW5pb25fbmFtZX0pOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VHtlbnVtfT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLnt1bmlvbl9uYW1lfSk7CiAgICAgICAg
ICAgICBicmVhazsiIiIKIAogdGVtcGxhdGVfcGFyYW1fdHlwZV90b19zdHJpbmdfY2FzZSA9ICIi
IiAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlR7ZW51bX06CkBAIC05NDgsNiArOTUxLDE2IEBAIGRl
ZiBmb3JtYXRfY2FwdHVyZV9tZXRob2QoY29tbWFuZCwgY21kX25hbWUsIHByb3RvLCBwYXJhbXMs
IGFsbF9wYXJhbV90eXBlcywgY2FwCiAgICAgICAgIHJldHVybiB0ZW1wbGF0ZV9jYXB0dXJlX21l
dGhvZF93aXRoX3JldHVybl92YWx1ZS5mb3JtYXQoKipmb3JtYXRfYXJncykKIAogCitkZWYgY29u
c3RfcG9pbnRlcl90eXBlKHBhcmFtLCBwYWNrZWRfZ2xfZW51bXMpOgorICAgIHR5cGUgPSBqdXN0
X3RoZV90eXBlX3BhY2tlZChwYXJhbSwgcGFja2VkX2dsX2VudW1zKQorICAgIGlmICIqKiIgaW4g
dHlwZSBhbmQgImNvbnN0IiBub3QgaW4gdHlwZToKKyAgICAgICAgcmV0dXJuIHR5cGUucmVwbGFj
ZSgiKioiLCAiKiBjb25zdCAqIikKKyAgICBlbGlmICIqIiBpbiB0eXBlIGFuZCAiY29uc3QiIG5v
dCBpbiB0eXBlOgorICAgICAgICByZXR1cm4gImNvbnN0ICIgKyB0eXBlCisgICAgZWxzZToKKyAg
ICAgICAgcmV0dXJuIHR5cGUKKworCiBkZWYgZ2V0X2ludGVybmFsX3BhcmFtcyhjbWRfbmFtZSwg
cGFyYW1zLCBjbWRfcGFja2VkX2dsX2VudW1zKToKICAgICBwYWNrZWRfZ2xfZW51bXMgPSBnZXRf
cGFja2VkX2VudW1zKGNtZF9wYWNrZWRfZ2xfZW51bXMsIGNtZF9uYW1lKQogICAgIHJldHVybiAi
LCAiLmpvaW4oWwpAQCAtOTU3LDE3ICs5NzAsMjkgQEAgZGVmIGdldF9pbnRlcm5hbF9wYXJhbXMo
Y21kX25hbWUsIHBhcmFtcywgY21kX3BhY2tlZF9nbF9lbnVtcyk6CiAgICAgXSkKIAogCitkZWYg
Z2V0X3ZhbGlkYXRpb25fcGFyYW1zKGNtZF9uYW1lLCBwYXJhbXMsIGNtZF9wYWNrZWRfZ2xfZW51
bXMpOgorICAgIHBhY2tlZF9nbF9lbnVtcyA9IGdldF9wYWNrZWRfZW51bXMoY21kX3BhY2tlZF9n
bF9lbnVtcywgY21kX25hbWUpCisgICAgcmV0dXJuICIsICIuam9pbihbCisgICAgICAgIG1ha2Vf
cGFyYW0oCisgICAgICAgICAgICBjb25zdF9wb2ludGVyX3R5cGUocGFyYW0sIHBhY2tlZF9nbF9l
bnVtcyksIGp1c3RfdGhlX25hbWVfcGFja2VkKAorICAgICAgICAgICAgICAgIHBhcmFtLCBwYWNr
ZWRfZ2xfZW51bXMpKSBmb3IgcGFyYW0gaW4gcGFyYW1zCisgICAgXSkKKworCiBkZWYgZm9ybWF0
X2NvbnRleHRfZGVjbChjbWRfbmFtZSwgcHJvdG8sIHBhcmFtcywgdGVtcGxhdGUsIGNtZF9wYWNr
ZWRfZ2xfZW51bXMpOgogICAgIGludGVybmFsX3BhcmFtcyA9IGdldF9pbnRlcm5hbF9wYXJhbXMo
Y21kX25hbWUsIHBhcmFtcywgY21kX3BhY2tlZF9nbF9lbnVtcykKIAogICAgIHJldHVybl90eXBl
ID0gcHJvdG9bOi1sZW4oY21kX25hbWUpXQogICAgIG5hbWVfbG93ZXJfbm9fc3VmZml4ID0gY21k
X25hbWVbMjozXS5sb3dlcigpICsgY21kX25hbWVbMzpdCiAgICAgbmFtZV9sb3dlcl9ub19zdWZm
aXggPSBzdHJpcF9zdWZmaXgobmFtZV9sb3dlcl9ub19zdWZmaXgpCisgICAgbWF5YmVfY29uc3Qg
PSAiIGNvbnN0IiBpZiBuYW1lX2xvd2VyX25vX3N1ZmZpeC5zdGFydHN3aXRoKAorICAgICAgICAi
aXMiKSBhbmQgbmFtZV9sb3dlcl9ub19zdWZmaXhbMl0uaXN1cHBlcigpIGVsc2UgIiIKIAogICAg
IHJldHVybiB0ZW1wbGF0ZS5mb3JtYXQoCiAgICAgICAgIHJldHVybl90eXBlPXJldHVybl90eXBl
LAogICAgICAgICBuYW1lX2xvd2VyX25vX3N1ZmZpeD1uYW1lX2xvd2VyX25vX3N1ZmZpeCwKLSAg
ICAgICAgaW50ZXJuYWxfcGFyYW1zPWludGVybmFsX3BhcmFtcykKKyAgICAgICAgaW50ZXJuYWxf
cGFyYW1zPWludGVybmFsX3BhcmFtcywKKyAgICAgICAgbWF5YmVfY29uc3Q9bWF5YmVfY29uc3Qp
CiAKIAogZGVmIGZvcm1hdF9saWJnbGVzX2VudHJ5X3BvaW50X2RlZihjbWRfbmFtZSwgcHJvdG8s
IHBhcmFtcywgaXNfZXhwbGljaXRfY29udGV4dCk6CkBAIC05ODYsOCArMTAxMSw4IEBAIGRlZiBm
b3JtYXRfbGliZ2xlc19lbnRyeV9wb2ludF9kZWYoY21kX25hbWUsIHByb3RvLCBwYXJhbXMsIGlz
X2V4cGxpY2l0X2NvbnRleHQpCiAKIAogZGVmIGZvcm1hdF92YWxpZGF0aW9uX3Byb3RvKGNtZF9u
YW1lLCBwYXJhbXMsIGNtZF9wYWNrZWRfZ2xfZW51bXMpOgotICAgIGludGVybmFsX3BhcmFtcyA9
IGdldF9pbnRlcm5hbF9wYXJhbXMoY21kX25hbWUsIFsiQ29udGV4dCAqY29udGV4dCJdICsgcGFy
YW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kX3BhY2tl
ZF9nbF9lbnVtcykKKyAgICBpbnRlcm5hbF9wYXJhbXMgPSBnZXRfdmFsaWRhdGlvbl9wYXJhbXMo
Y21kX25hbWUsIFsiQ29udGV4dCAqY29udGV4dCJdICsgcGFyYW1zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRfcGFja2VkX2dsX2VudW1zKQogICAgIHJl
dHVybiB0ZW1wbGF0ZV92YWxpZGF0aW9uX3Byb3RvICUgKGNtZF9uYW1lWzI6XSwgaW50ZXJuYWxf
cGFyYW1zKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Z2VuZXJhdGVfbG9hZGVyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nZW5l
cmF0ZV9sb2FkZXIucHkKaW5kZXggNWQ2NjBiODYxOWE3Mzk1MjkzNTA2Zjc2NGIwODk0ZWIxN2Rj
ZmE5Mi4uOGMxNjc0ZTZjZjQxM2M2YjRlOWFkN2ViZTQ5Yjk5ZDM4OGQ5ZjRiYiAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nZW5lcmF0ZV9sb2FkZXIucHkKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nZW5lcmF0ZV9sb2FkZXIucHkKQEAg
LTE5MCw2ICsxOTAsOCBAQCBkZWYgbWFpbigpOgogICAgICMgSGFuZGxlIGlucHV0cy9vdXRwdXRz
IGZvciBydW5fY29kZV9nZW5lcmF0aW9uLnB5J3MgYXV0b19zY3JpcHQKICAgICBpZiBsZW4oc3lz
LmFyZ3YpID4gMToKICAgICAgICAgaW5wdXRzID0gWworICAgICAgICAgICAgJ2dsLnhtbCcsCisg
ICAgICAgICAgICAnZ2xfYW5nbGVfZXh0LnhtbCcsCiAgICAgICAgICAgICAnZWdsLnhtbCcsCiAg
ICAgICAgICAgICAnZWdsX2FuZ2xlX2V4dC54bWwnLAogICAgICAgICAgICAgJ3JlZ2lzdHJ5X3ht
bC5weScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2dsLnht
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2wueG1sCmluZGV4IGEyNWNlMjQ4
N2UwYWI3ZGVhZTM2YzIyZWExODAwNmE3ODZkNDM3NDguLmU4MmNmNzczMzkxZjQyNDlhMDU0YjYw
MmU4YWRhZjQ3YzM5ZDNlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Nj
cmlwdHMvZ2wueG1sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2wueG1s
CkBAIC0xODMwLDcgKzE4MzAsOSBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBHTGhhbmRsZUFSQjsK
ICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX0NPTVBSRVNTRURfUjExX0VBQyIvPgogICAgICAg
ICAgICAgPGVudW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQyIvPgogICAgICAg
ICAgICAgPGVudW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9SR19SR1RDMiIvPgorICAgICAgICAgICAg
PGVudW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUIi8+CiAgICAgICAg
ICAgICA8ZW51bSBuYW1lPSJHTF9DT01QUkVTU0VEX1NJR05FRF9SR19SR1RDMiIvPgorICAgICAg
ICAgICAgPGVudW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VY
VCIvPgogICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5P
Uk0iLz4KICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VO
T1JNX0FSQiIvPgogICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9SR0JBX0JQ
VENfVU5PUk1fRVhUIi8+CkBAIC0xNjc2OSw2ICsxNjc3MSwxMiBAQCB0eXBlZGVmIHVuc2lnbmVk
IGludCBHTGhhbmRsZUFSQjsKICAgICAgICAgICAgIDxhbGlhcyBuYW1lPSJnbEdldEludGVnZXJp
X3YiLz4KICAgICAgICAgICAgIDxnbHggdHlwZT0ic2luZ2xlIiBvcGNvZGU9IjIxMSIvPgogICAg
ICAgICA8L2NvbW1hbmQ+CisgICAgICAgIDxjb21tYW5kPgorICAgICAgICAgICAgPHByb3RvPnZv
aWQgPG5hbWU+Z2xHZXRJbnRlZ2VyNjR2RVhUPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAgICA8
cGFyYW0gZ3JvdXA9IkdldFBOYW1lIj48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+cG5hbWU8
L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49IkNPTVBTSVpFKHBuYW1lKSI+
PHB0eXBlPkdMaW50NjQ8L3B0eXBlPiAqPG5hbWU+ZGF0YTwvbmFtZT48L3BhcmFtPgorICAgICAg
ICAgICAgPGFsaWFzIG5hbWU9ImdsR2V0SW50ZWdlcjY0diIvPgorICAgICAgICA8L2NvbW1hbmQ+
CiAgICAgICAgIDxjb21tYW5kPgogICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xHZXRJ
bnRlZ2VyaV92PC9uYW1lPjwvcHJvdG8+CiAgICAgICAgICAgICA8cGFyYW0gZ3JvdXA9IlR5cGVF
bnVtIj48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+dGFyZ2V0PC9uYW1lPjwvcGFyYW0+CkBA
IC00MzMzOSw2ICs0MzM0Nyw3IEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IEdMaGFuZGxlQVJCOwog
ICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLz4K
ICAgICAgICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCIv
PgogICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsR2V0UXVlcnlPYmplY3R1aTY0dkVY
VCIvPgorICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsR2V0SW50ZWdlcjY0dkVYVCIv
PgogICAgICAgICAgICAgPC9yZXF1aXJlPgogICAgICAgICA8L2V4dGVuc2lvbj4KICAgICAgICAg
PGV4dGVuc2lvbiBuYW1lPSJHTF9FWFRfZHJhd19idWZmZXJzIiBzdXBwb3J0ZWQ9ImdsZXMyIj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2xfYW5nbGVfZXh0
LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2xfYW5nbGVfZXh0LnhtbApp
bmRleCA0MTBjMmJhZTk2NDEzYmQ1NWUxYTdmMGYxMTFjODAyNDkwMjM2NjQ5Li4zNDRhMWZhMTUz
Y2JiNGE3NmMyZDE0ZTczYjhiYzVlMzA0MWE2MTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zY3JpcHRzL2dsX2FuZ2xlX2V4dC54bWwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2NyaXB0cy9nbF9hbmdsZV9leHQueG1sCkBAIC04LDYgKzgsMTUgQEAKICAgICBn
bF9hbmdsZV9leHQueG1sCiAgICAgICAgIEluY2x1ZGVzIGRhdGEgdXNlZCB0byBhdXRvLWdlbmVy
YXRlIEFOR0xFIGNsYXNzZXMuCiAgICAgPC9jb21tZW50PgorCisgICAgPCEtLSBTRUNUSU9OOiBH
TCBwYXJhbWV0ZXIgY2xhc3MgdHlwZSBkZWZpbml0aW9ucy4gLS0+CisgICAgPGdyb3Vwcz4KKyAg
ICAgICAgPGdyb3VwIG5hbWU9IkV4dGVybmFsSGFuZGxlVHlwZSI+CisgICAgICAgICAgICA8ZW51
bSBuYW1lPSJHTF9IQU5ETEVfVFlQRV9aSVJDT05fVk1PX0FOR0xFIi8+CisgICAgICAgICAgICA8
ZW51bSBuYW1lPSJHTF9IQU5ETEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEUiLz4KKyAgICAgICAg
PC9ncm91cD4KKyAgICA8L2dyb3Vwcz4KKwogICAgIDwhLS0gU0VDVElPTjogR0wgY29tbWFuZCBk
ZWZpbml0aW9ucy4gLS0+CiAgICAgPGNvbW1hbmRzIG5hbWVzcGFjZT0iR0wiPgogICAgICAgICA8
Y29tbWFuZD4KQEAgLTI5LDE3NCArMzgsNiBAQAogICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5h
bWU+Z2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgogICAgICAgICAg
ICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5tYXRyaXhNb2RlPC9uYW1lPjwv
cGFyYW0+CiAgICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgICAg
ICA8cHJvdG8+R0x1aW50IDxuYW1lPmdsR2VuUGF0aHNDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgot
ICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+cmFuZ2U8L25h
bWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAg
ICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsRGVsZXRlUGF0aHNDSFJPTUlVTTwvbmFtZT48L3By
b3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5maXJz
dDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlw
ZT4gPG5hbWU+cmFuZ2U8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAg
ICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz5HTGJvb2xlYW4gPG5hbWU+Z2xJc1BhdGhD
SFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8
L3B0eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAg
ICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFBhdGhDb21t
YW5kc0NIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdM
dWludDwvcHR5cGU+IDxuYW1lPnBhdGg8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJh
bT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPm51bUNvbW1hbmRzPC9uYW1lPjwvcGFyYW0+
Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IEdMdWJ5dGUgKjwvcHR5cGU+IDxuYW1l
PmNvbW1hbmRzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMc2l6
ZWk8L3B0eXBlPiA8bmFtZT5udW1Db29yZHM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxw
YXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Y29vcmRUeXBlPC9uYW1lPjwvcGFyYW0+
Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IHZvaWQqPC9wdHlwZT4gPG5hbWU+Y29v
cmRzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+
Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU08
L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4g
PG5hbWU+cGF0aDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVu
dW08L3B0eXBlPiA8bmFtZT5wbmFtZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFt
PjxwdHlwZT5HTGZsb2F0PC9wdHlwZT4gPG5hbWU+dmFsdWU8L25hbWU+PC9wYXJhbT4KLSAgICAg
ICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lk
IDxuYW1lPmdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAg
ICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+
Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnBuYW1lPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5h
bWU+dmFsdWU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29t
bWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsR2V0UGF0aFBhcmFtZXRlcmZ2
Q0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+cGF0aDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5wbmFtZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAg
ICAgPHBhcmFtPjxwdHlwZT5HTGZsb2F0ICo8L3B0eXBlPiA8bmFtZT52YWx1ZTwvbmFtZT48L3Bh
cmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAg
PHByb3RvPnZvaWQgPG5hbWU+Z2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTTwvbmFtZT48L3By
b3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRo
PC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+
IDxuYW1lPnBuYW1lPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdM
aW50ICo8L3B0eXBlPiA8bmFtZT52YWx1ZTwvbmFtZT48L3BhcmFtPgotICAgICAgICA8L2NvbW1h
bmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xQ
YXRoU3RlbmNpbEZ1bmNDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFt
PjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5mdW5jPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAg
ICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+cmVmPC9uYW1lPjwvcGFyYW0+
Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPm1hc2s8L25h
bWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAg
ICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU08L25hbWU+
PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+
cGF0aDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0
eXBlPiA8bmFtZT5maWxsTW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5tYXNrPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwv
Y29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFt
ZT5nbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAg
IDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cGF0aDwvbmFtZT48L3BhcmFtPgot
ICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPnJlZmVyZW5jZTwv
bmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8
bmFtZT5tYXNrPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNv
bW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbENvdmVyRmlsbFBhdGhDSFJP
TUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0
eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBl
PkdMZW51bTwvcHR5cGU+IDxuYW1lPmNvdmVyTW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAgICA8
L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5h
bWU+Z2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAg
PHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+Ci0g
ICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmNvdmVyTW9kZTwv
bmFtZT48L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAg
ICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJP
TUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0
eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBl
PkdMZW51bTwvcHR5cGU+IDxuYW1lPmZpbGxNb2RlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAg
ICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPm1hc2s8L25hbWU+PC9wYXJhbT4K
LSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Y292ZXJNb2Rl
PC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0g
ICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
Q0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+cGF0aDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPnJlZmVyZW5jZTwvbmFtZT48L3BhcmFtPgotICAgICAg
ICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5tYXNrPC9uYW1lPjwvcGFy
YW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmNvdmVy
TW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5k
PgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xDb3ZlckZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXpl
aTwvcHR5cGU+IDxuYW1lPm51bVBhdGg8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJh
bT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+cGF0aE5hbWVUeXBlPC9uYW1lPjwvcGFyYW0+
Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IHZvaWQgKjwvcHR5cGU+IDxuYW1lPnBh
dGhzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5
cGU+IDxuYW1lPnBhdGhCYXNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0
eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmNvdmVyTW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAg
ICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT50cmFuc2Zvcm1UeXBlPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IEdMZmxvYXQgKjwv
cHR5cGU+IDxuYW1lPnRyYW5zZm9ybVZhbHVlczwvbmFtZT48L3BhcmFtPgotICAgICAgICA8L2Nv
bW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+
Z2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAg
ICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+bnVtUGF0aDwvbmFtZT48
L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5w
YXRoTmFtZVR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29u
c3Qgdm9pZCAqPC9wdHlwZT4gPG5hbWU+cGF0aHM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAg
IDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cGF0aEJhc2U8L25hbWU+PC9wYXJh
bT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Y292ZXJN
b2RlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5
cGU+IDxuYW1lPnRyYW5zZm9ybVR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJh
bT48cHR5cGU+Y29uc3QgR0xmbG9hdCAqPC9wdHlwZT4gPG5hbWU+dHJhbnNmb3JtVmFsdWVzPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAg
ICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwv
cHR5cGU+IDxuYW1lPm51bVBhdGg8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48
cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+cGF0aE5hbWVUeXBlPC9uYW1lPjwvcGFyYW0+Ci0g
ICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IHZvaWQgKjwvcHR5cGU+IDxuYW1lPnBhdGhz
PC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+
IDxuYW1lPnBhdGhCYXNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBl
PkdMaW50PC9wdHlwZT4gPG5hbWU+cmVmZXJlbmNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAg
ICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPm1hc2s8L25hbWU+PC9wYXJhbT4K
LSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+dHJhbnNmb3Jt
VHlwZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5jb25zdCBHTGZs
b2F0ICo8L3B0eXBlPiA8bmFtZT50cmFuc2Zvcm1WYWx1ZXM8L25hbWU+PC9wYXJhbT4KLSAgICAg
ICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lk
IDxuYW1lPmdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU08L25hbWU+PC9wcm90bz4K
LSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPm51bVBhdGhz
PC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+
IDxuYW1lPnBhdGhOYW1lVHlwZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5jb25zdCB2b2lkICo8L3B0eXBlPiA8bmFtZT5wYXRoczwvbmFtZT48L3BhcmFtPgotICAg
ICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoQmFzZTwvbmFt
ZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFt
ZT5maWxsTW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVp
bnQ8L3B0eXBlPiA8bmFtZT5tYXNrPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+
PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnRyYW5zZm9ybVR5cGU8L25hbWU+PC9wYXJhbT4K
LSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29uc3QgR0xmbG9hdCAqPC9wdHlwZT4gPG5hbWU+
dHJhbnNmb3JtVmFsdWVzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAg
ICAgPGNvbW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAg
ICA8cGFyYW0+PHB0eXBlPkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT5udW1QYXRoczwvbmFtZT48L3Bh
cmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5wYXRo
TmFtZVR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29uc3Qg
dm9pZCAqPC9wdHlwZT4gPG5hbWU+cGF0aHM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxw
YXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cGF0aEJhc2U8L25hbWU+PC9wYXJhbT4K
LSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+ZmlsbE1vZGU8
L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4g
PG5hbWU+bWFzazwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVu
dW08L3B0eXBlPiA8bmFtZT5jb3Zlck1vZGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxw
YXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+dHJhbnNmb3JtVHlwZTwvbmFtZT48L3Bh
cmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5jb25zdCBHTGZsb2F0ICo8L3B0eXBlPiA8
bmFtZT50cmFuc2Zvcm1WYWx1ZXM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgot
ICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAg
ICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+bnVtUGF0aHM8L25h
bWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5h
bWU+cGF0aE5hbWVUeXBlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBl
PmNvbnN0IHZvaWQgKjwvcHR5cGU+IDxuYW1lPnBhdGhzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAg
ICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnBhdGhCYXNlPC9uYW1lPjwv
cGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+cmVm
ZXJlbmNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwv
cHR5cGU+IDxuYW1lPm1hc2s8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5
cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Y292ZXJNb2RlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAg
ICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnRyYW5zZm9ybVR5cGU8L25h
bWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29uc3QgR0xmbG9hdCAqPC9w
dHlwZT4gPG5hbWU+dHJhbnNmb3JtVmFsdWVzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29t
bWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsQmlu
ZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAg
ICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnByb2dyYW1zPC9uYW1lPjwvcGFy
YW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+bG9jYXRp
b248L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29uc3QgR0xjaGFy
ICo8L3B0eXBlPiA8bmFtZT5uYW1lPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4K
LSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuQ0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxw
YXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cHJvZ3JhbTwvbmFtZT48L3BhcmFtPgot
ICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPmxvY2F0aW9uPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxu
YW1lPmdlbk1vZGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xp
bnQ8L3B0eXBlPiA8bmFtZT5jb21wb25lbnRzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8
cGFyYW0+PHB0eXBlPmNvbnN0IEdMZmxvYXQgKjwvcHR5cGU+IDxuYW1lPmNvZWZmczwvbmFtZT48
L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgIDxjb21tYW5kPgogICAgICAgICA8
cHJvdG8+dm9pZCA8bmFtZT5nbENvcHlUZXh0dXJlQ0hST01JVU08L25hbWU+PC9wcm90bz4KICAg
ICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+c291cmNlSWQ8L25h
bWU+PC9wYXJhbT4KQEAgLTk3Nyw3ICs4MTgsMjEgQEAKICAgICAgICAgICAgIDxwYXJhbSBncm91
cD0iUGl4ZWxUeXBlIj48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+dHlwZTwvbmFtZT48L3Bh
cmFtPgogICAgICAgICAgICAgPHBhcmFtIGxlbj0iQ09NUFNJWkUodGFyZ2V0LGxldmVsLGZvcm1h
dCx0eXBlKSI+dm9pZCAqPG5hbWU+cGl4ZWxzPC9uYW1lPjwvcGFyYW0+CiAgICAgICAgIDwvY29t
bWFuZD4KKyAgICAgICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5n
bEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAg
ICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPm1lbW9yeTwvbmFtZT48L3BhcmFt
PgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ2NDwvcHR5cGU+IDxuYW1lPnNpemU8
L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBncm91cD0iRXh0ZXJuYWxIYW5kbGVU
eXBlIj48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+aGFuZGxlVHlwZTwvbmFtZT48L3BhcmFt
PgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5oYW5kbGU8
L25hbWU+PC9wYXJhbT4KKyAgICAgICAgPC9jb21tYW5kPgorICAgICAgICA8Y29tbWFuZD4KKyAg
ICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxl
QU5HTEU8L25hbWU+PC9wcm90bz4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9w
dHlwZT4gPG5hbWU+c2VtYXBob3JlPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0g
Z3JvdXA9IkV4dGVybmFsSGFuZGxlVHlwZSI+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmhh
bmRsZVR5cGU8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+aGFuZGxlPC9uYW1lPjwvcGFyYW0+CisgICAgICAgIDwvY29tbWFuZD4K
ICAgICA8L2NvbW1hbmRzPgorCiAgICAgPCEtLSBTRUNUSU9OOiBBTkdMRSBleHRlbnNpb24gaW50
ZXJmYWNlIGRlZmluaXRpb25zIC0tPgogICAgIDxleHRlbnNpb25zPgogICAgICAgICA8ZXh0ZW5z
aW9uIG5hbWU9IkdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIgc3VwcG9ydGVkPSdn
bGVzMic+CkBAIC05ODcsMzggKzg0Miw5IEBACiAgICAgICAgIDwvZXh0ZW5zaW9uPgogICAgICAg
ICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMi
IHN1cHBvcnRlZD0nZ2xlczInPgogICAgICAgICAgICAgPHJlcXVpcmU+Ci0gICAgICAgICAgICAg
ICAgPGNvbW1hbmQgbmFtZT0iZ2xNYXRyaXhMb2FkZkNIUk9NSVVNIi8+Ci0gICAgICAgICAgICAg
ICAgPGNvbW1hbmQgbmFtZT0iZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSIvPgogICAgICAg
ICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0iLz4K
ICAgICAgICAgICAgIDwvcmVxdWlyZT4KICAgICAgICAgPC9leHRlbnNpb24+Ci0gICAgICAgIDxl
eHRlbnNpb24gbmFtZT0iR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmciIHN1cHBvcnRlZD0nZ2xl
czInPgotICAgICAgICA8cmVxdWlyZT4KLSAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsR2Vu
UGF0aHNDSFJPTUlVTSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xEZWxldGVQYXRo
c0NIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbElzUGF0aENIUk9NSVVN
Ii8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFBhdGhDb21tYW5kc0NIUk9NSVVNIi8+
Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0iLz4K
LSAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTSIvPgot
ICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTSIv
PgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlV
TSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlV
TSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlV
TSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9N
SVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbENvdmVyRmlsbFBhdGhDSFJPTUlV
TSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlV
TSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhDSFJPTUlVTSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbENv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFt
ZT0iZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIvPgotICAgICAgICAgICAgPGNv
bW1hbmQgbmFtZT0iZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIvPgotICAgICAg
ICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
Ii8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0iLz4KLSAgICAgICAgICAgIDxj
b21tYW5kIG5hbWU9ImdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNIi8+Ci0gICAg
ICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9N
SVVNIi8+Ci0gICAgICAgIDwvcmVxdWlyZT4KLSAgICAgICAgPC9leHRlbnNpb24+CiAgICAgICAg
IDxleHRlbnNpb24gbmFtZT0iR0xfQ0hST01JVU1fY29weV90ZXh0dXJlIiBzdXBwb3J0ZWQ9J2ds
ZXMyJz4KICAgICAgICAgICAgIDxyZXF1aXJlPgogICAgICAgICAgICAgICAgIDxjb21tYW5kIG5h
bWU9ImdsQ29weVRleHR1cmVDSFJPTUlVTSIvPgpAQCAtMTE2Myw1ICs5ODksMjMgQEAKICAgICAg
ICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbEdldFJlbmRlcmJ1ZmZlckltYWdlQU5HTEUiLz4K
ICAgICAgICAgICAgIDwvcmVxdWlyZT4KICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICAgIDxl
eHRlbnNpb24gbmFtZT0iR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhIiBzdXBwb3J0ZWQ9
ImdsfGdsZXMyIj4KKyAgICAgICAgICAgIDxyZXF1aXJlPgorICAgICAgICAgICAgICAgIDxlbnVt
IG5hbWU9IkdMX0hBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEUiLz4KKyAgICAgICAgICAgICAg
ICA8Y29tbWFuZCBuYW1lPSJnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFIi8+CisgICAg
ICAgICAgICA8L3JlcXVpcmU+CisgICAgICAgIDwvZXh0ZW5zaW9uPgorICAgICAgICA8ZXh0ZW5z
aW9uIG5hbWU9IkdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhIiBzdXBwb3J0ZWQ9ImdsfGdsZXMy
Ij4KKyAgICAgICAgICAgIDxyZXF1aXJlPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdM
X0hBTkRMRV9UWVBFX1pJUkNPTl9FVkVOVF9BTkdMRSIvPgorICAgICAgICAgICAgICAgIDxjb21t
YW5kIG5hbWU9ImdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUiLz4KKyAgICAgICAg
ICAgIDwvcmVxdWlyZT4KKyAgICAgICAgPC9leHRlbnNpb24+CiAgICAgPC9leHRlbnNpb25zPgor
CisgICAgPCEtLSBTRUNUSU9OOiBHTCBlbnVtZXJhbnQgKHRva2VuKSBkZWZpbml0aW9ucy4gLS0+
CisgICAgPGVudW1zIG5hbWVzcGFjZT0iR0wiIHN0YXJ0PSIweDkzQUUiIGVuZD0iMHg5M0FGIiB2
ZW5kb3I9IkFOR0xFIj4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4OTNBRSIgbmFtZT0iR0xfSEFO
RExFX1RZUEVfWklSQ09OX1ZNT19BTkdMRSIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHg5M0FG
IiBuYW1lPSJHTF9IQU5ETEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEUiLz4KKyAgICA8L2VudW1z
PgogPC9yZWdpc3RyeT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Njcmlw
dHMvcmVnaXN0cnlfeG1sLnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9yZWdp
c3RyeV94bWwucHkKaW5kZXggNGM4NmJhYTY1MDIwMTVkZTJjY2U3MTRiZTg1NjVlY2U1YzM4NGEz
YS4uODdjYTk2OWVjYjc1OGJiNTM1ZmFkZDQ4NWU4NWU2NzUzYzk3NGJmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9yZWdpc3RyeV94bWwucHkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9yZWdpc3RyeV94bWwucHkKQEAgLTU1LDggKzU1
LDEwIEBAIGdsZXNfZXh0ZW5zaW9ucyA9IFsKICAgICAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxp
dCIsCiAgICAgIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIiwKICAgICAiR0xfQU5H
TEVfaW5zdGFuY2VkX2FycmF5cyIsCisgICAgIkdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNp
YSIsCiAgICAgIkdMX0FOR0xFX211bHRpX2RyYXciLAogICAgICJHTF9BTkdMRV9wcm92b2tpbmdf
dmVydGV4IiwKKyAgICAiR0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEiLAogICAgICJHTF9BTkdM
RV90ZXh0dXJlX211bHRpc2FtcGxlIiwKICAgICAiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJf
c291cmNlIiwKICAgICAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLApAQCAtNjQsNiArNjYs
NyBAQCBnbGVzX2V4dGVuc2lvbnMgPSBbCiAgICAgIkdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVy
IiwKICAgICAiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IiwKICAgICAiR0xfRVhUX2RyYXdf
YnVmZmVycyIsCisgICAgIkdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhlZCIsCiAgICAgIkdMX0VY
VF9kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4IiwKICAgICAiR0xfRVhUX2dlb21ldHJ5X3NoYWRl
ciIsCiAgICAgIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIiwKQEAgLTc5LDYgKzgyLDcgQEAgZ2xl
c19leHRlbnNpb25zID0gWwogICAgICJHTF9FWFRfc1JHQiIsCiAgICAgIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2JwdGMiLAogICAgICJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQx
IiwKKyAgICAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIsCiAgICAgIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiLAogICAgICJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9zM3RjX3NyZ2IiLAogICAgICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLApA
QCAtODksNiArOTMsNyBAQCBnbGVzX2V4dGVuc2lvbnMgPSBbCiAgICAgIkdMX05WX2ZlbmNlIiwK
ICAgICAiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiLAogICAgICJHTF9PRVNf
ZGVwdGgzMiIsCisgICAgIkdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCIsCiAgICAgIkdMX09F
U19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4IiwKICAgICAiR0xfT0VTX0VHTF9pbWFnZSIsCiAg
ICAgIkdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkiLApAQCAtMjMwLDYgKzIzNSwxMCBAQCBjbGFz
cyBSZWdpc3RyeVhNTDoKICAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBhbmdsZV9leHRfcm9vdC5p
dGVyKCdleHRlbnNpb25zJyk6CiAgICAgICAgICAgICBpbnNlcnRpb25fcG9pbnQuZXh0ZW5kKGV4
dGVuc2lvbikKIAorICAgICAgICBpbnNlcnRpb25fcG9pbnQgPSBzZWxmLnJvb3QKKyAgICAgICAg
Zm9yIGVudW1zIGluIGFuZ2xlX2V4dF9yb290Lml0ZXIoJ2VudW1zJyk6CisgICAgICAgICAgICBp
bnNlcnRpb25fcG9pbnQuYXBwZW5kKGVudW1zKQorCiAgICAgZGVmIEFkZENvbW1hbmRzKHNlbGYs
IGZlYXR1cmVfbmFtZSwgYW5ub3RhdGlvbik6CiAgICAgICAgIHhwYXRoID0gIi4vL2ZlYXR1cmVb
QG5hbWU9JyVzJ10vL2NvbW1hbmQiICUgZmVhdHVyZV9uYW1lCiAgICAgICAgIGNvbW1hbmRzID0g
W2NtZC5hdHRyaWJbJ25hbWUnXSBmb3IgY21kIGluIHNlbGYucm9vdC5maW5kYWxsKHhwYXRoKV0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvcm9sbF9hb3NwLnNo
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9yb2xsX2Fvc3Auc2gKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2ZjYmQ0Yjg2ZjRjMmE3YzM4ZDkxZGY4MGRhYmNhNWQ2YWE5Y2VkZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvcm9sbF9hb3NwLnNoCkBAIC0w
LDAgKzEsNzggQEAKKyMhL2Jpbi9iYXNoCisKKyMgIENvcHlyaWdodCBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyAgZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKyMgR2VuZXJhdGVzIGEgcm9sbCBDTCB3aXRoaW4g
dGhlIEFOR0xFIHJlcG9zaXRvcnkgb2YgQU9TUC4KKworZ2l0IG1lcmdlIC1YIHRoZWlycyBhb3Nw
L3Vwc3RyZWFtLW1pcnJvcgorCitkZXBzPSgKKyAgICAidGhpcmRfcGFydHkvc3BpcnYtdG9vbHMv
c3JjIgorICAgICJ0aGlyZF9wYXJ0eS9nbHNsYW5nL3NyYyIKKyAgICAidGhpcmRfcGFydHkvc3Bp
cnYtaGVhZGVycy9zcmMiCisgICAgInRoaXJkX3BhcnR5L3Z1bGthbi1oZWFkZXJzL3NyYyIKKyAg
ICAidGhpcmRfcGFydHkvanNvbmNwcCIKKyAgICAidGhpcmRfcGFydHkvanNvbmNwcC9zb3VyY2Ui
CispCisKKyMgRGVsZXRlIGRlcCBkaXJlY3RvcmllcyBzbyB0aGF0IGdjbGllbnQgY2FuIGNoZWNr
IHRoZW0gb3V0Citmb3IgZGVwIGluICR7ZGVwc1tAXX07IGRvCisgICAgcm0gLXJmIC0tcHJlc2Vy
dmUtcm9vdCAkZGVwCitkb25lCisKKyMgU3luYyBhbGwgb2YgQU5HTEUncyBkZXBzIHNvIHRoYXQg
J2duIGdlbicgd29ya3MKK3B5dGhvbiBzY3JpcHRzL2Jvb3RzdHJhcC5weQorZ2NsaWVudCBzeW5j
IC1ECisKKyMgZ2VuZXJhdGUgZ24gYnVpbGQgZmlsZXMgYW5kIGNvbnZlcnQgdGhlbSB0byBibHVl
cHJpbnRzCitnbl9hcmdzPSgKKyAgICAidGFyZ2V0X29zID0gXCJhbmRyb2lkXCIiCisgICAgImlz
X2NvbXBvbmVudF9idWlsZCA9IGZhbHNlIgorICAgICJpc19kZWJ1ZyA9IGZhbHNlIgorCisgICAg
IyBCdWlsZCBmb3IgNjQtYml0IENQVXMKKyAgICAidGFyZ2V0X2NwdSA9IFwiYXJtNjRcIiIKKwor
ICAgICMgRG9uJ3QgbWFrZSBhIGRlcGVuZGVuY3kgb24gLmdpdC9IRUFELiBTb21lIEFuZHJvaWQg
YnVpbGRzIGFyZSBkb25lIHdpdGhvdXQgLmdpdCBmb2xkZXJzCisgICAgIyBwcmVzZW50LgorICAg
ICJhbmdsZV9lbmFibGVfY29tbWl0X2lkID0gZmFsc2UiCisKKyAgICAjIFRhcmdldCBuZGsgQVBJ
IDI2IHRvIG1ha2Ugc3VyZSBBTkdMRSBjYW4gdXNlIHRoZSBWdWxrYW4gYmFja2VuZCBvbiBBbmRy
b2lkCisgICAgImFuZHJvaWQzMl9uZGtfYXBpX2xldmVsID0gMjYiCisgICAgImFuZHJvaWQ2NF9u
ZGtfYXBpX2xldmVsID0gMjYiCisKKyAgICAjIERpc2FibGUgYWxsIGJhY2tlbmRzIGV4Y2VwdCBW
dWxrYW4KKyAgICAiYW5nbGVfZW5hYmxlX3Z1bGthbiA9IHRydWUiCisgICAgImFuZ2xlX2VuYWJs
ZV9nbCA9IHRydWUiICMgVE9ETyhnZW9mZmxhbmcpOiBEaXNhYmxlIEdMIG9uY2UgQW5kcmlkIG5v
IGxvbmdlciByZXF1aXJlcyBpdC4gYW5nbGVidWcuY29tLzQ0NDQKKyAgICAiYW5nbGVfZW5hYmxl
X2QzZDkgPSBmYWxzZSIKKyAgICAiYW5nbGVfZW5hYmxlX2QzZDExID0gZmFsc2UiCisgICAgImFu
Z2xlX2VuYWJsZV9udWxsID0gZmFsc2UiCisgICAgImFuZ2xlX2VuYWJsZV9tZXRhbCA9IGZhbHNl
IgorCisgICAgIyBTd2lmdFNoYWRlciBpcyBsb2FkZWQgYXMgdGhlIHN5c3RlbSBWdWxrYW4gZHJp
dmVyIG9uIEFuZHJvaWQsIG5vdCBjb21waWxlZCBieSBBTkdMRQorICAgICJhbmdsZV9lbmFibGVf
c3dpZnRzaGFkZXIgPSBmYWxzZSIKKworICAgICMgRGlzYWJsZSBhbGwgc2hhZGVyIHRyYW5zbGF0
b3IgdGFyZ2V0cyBleGNlcHQgZGVza3RvcCBHTCAoZm9yIFZ1bGthbikKKyAgICAiYW5nbGVfZW5h
YmxlX2Vzc2wgPSB0cnVlIiAjIFRPRE8oZ2VvZmZsYW5nKTogRGlzYWJsZSBFU1NMIG9uY2UgQW5k
cmlkIG5vIGxvbmdlciByZXF1aXJlcyBpdC4gYW5nbGVidWcuY29tLzQ0NDQKKyAgICAiYW5nbGVf
ZW5hYmxlX2dsc2wgPSB0cnVlIiAjIFRPRE8oZ2VvZmZsYW5nKTogRGlzYWJsZSBFU1NMIG9uY2Ug
QW5kcmlkIG5vIGxvbmdlciByZXF1aXJlcyBpdC4gYW5nbGVidWcuY29tLzQ0NDQKKyAgICAiYW5n
bGVfZW5hYmxlX2hsc2wgPSBmYWxzZSIKKykKK2duIGdlbiBvdXQvQW5kcm9pZCAtLWFyZ3M9IiR7
Z25fYXJnc1sqXX0iCitnbiBkZXNjIG91dC9BbmRyb2lkIC0tZm9ybWF0PWpzb24gIioiID4gb3V0
L0FuZHJvaWQvZGVzYy5qc29uCitweXRob24gc2NyaXB0cy9nZW5lcmF0ZV9hbmRyb2lkX2JwLnB5
IG91dC9BbmRyb2lkL2Rlc2MuanNvbiA+IEFuZHJvaWQuYnAKK3JtIC1yIG91dAorZ2l0IGFkZCBB
bmRyb2lkLmJwCisKKyMgRGVsZXRlIHRoZSAuZ2l0IGZpbGVzIGluIGVhY2ggZGVwIHNvIHRoYXQg
aXQgY2FuIGJlIGFkZGVkIHRvIHRoaXMgcmVwby4gU29tZSBkZXBzIGxpa2UganNvbmNwcAorIyBo
YXZlIG11bHRpcGxlIGxheWVycyBvZiBkZXBzIHNvIGRlbGV0ZSBldmVyeXRoaW5nIGJlZm9yZSBh
ZGRpbmcgdGhlbS4KK2ZvciBkZXAgaW4gJHtkZXBzW0BdfTsgZG8KKyAgICBybSAtcmYgLS1wcmVz
ZXJ2ZS1yb290ICRkZXAvLmdpdAorZG9uZQorCitmb3IgZGVwIGluICR7ZGVwc1tAXX07IGRvCisg
ICAgZ2l0IGFkZCAtZiAkZGVwCitkb25lCisKK2dpdCBjb21taXQgLS1hbWVuZCAtLW5vLWVkaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvdHJpZ2dlci5weSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvdHJpZ2dlci5weQppbmRleCAzZTFkOTNh
YjUxOWRmYTAwNDEyMTkxYTk0MjllN2Y1NjhhZjdhMjhjLi5mMzQzZGJjZjA4Mjg1OWNjNWVlZDZj
NmQyM2JmMTYwN2ViNjg5NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
Y3JpcHRzL3RyaWdnZXIucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy90
cmlnZ2VyLnB5CkBAIC04LDYgKzgsNyBAQAogIyAgIEhlbHBlciBzY3JpcHQgZm9yIHRyaWdnZXJp
bmcgR1BVIHRlc3RzIG9uIHN3YXJtaW5nLgogCiBpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBoYXNo
bGliCiBpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCkBAIC0yNCw2ICsy
NSw0NyBAQCBkZWYgcGFyc2VfYXJncygpOgogICAgIHJldHVybiBwYXJzZXIucGFyc2Vfa25vd25f
YXJncygpCiAKIAorIyBUYWtlbiBmcm9tOgorIyBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY2hyb21pdW0vc3JjL3Rvb2xzL21iLysvMjE5MmRmNjZjZDBlZDIxNGJjZmJmZDM4N2Fk
MGM1YzhjMGEyMWViMS9tYi5weSM1ODYKK2RlZiBhZGRfYmFzZV9zb2Z0d2FyZShzd2FybWluZ19h
cmdzKToKKyAgICAjIEhBQ0soaWFubnVjY2kpOiBUaGVzZSBwYWNrYWdlcyBTSE9VTEQgTk9UIEJF
IEhFUkUuCisgICAgIyBSZW1vdmUgbWV0aG9kIG9uY2UgU3dhcm1pbmcgUG9vbCBUYXNrIFRlbXBs
YXRlcyBhcmUgaW1wbGVtZW50ZWQuCisgICAgIyBjcmJ1Zy5jb20vODEyNDI4CisKKyAgICAjIEFk
ZCBpbiByZXF1aXJlZCBiYXNlIHNvZnR3YXJlLiBUaGlzIHNob3VsZCBiZSBrZXB0IGluIHN5bmMg
d2l0aCB0aGUKKyAgICAjIGBjaHJvbWl1bV9zd2FybWluZ2AgcmVjaXBlIG1vZHVsZSBpbiBidWls
ZC5naXQuIEFsbCByZWZlcmVuY2VzIHRvCisgICAgIyBgc3dhcm1pbmdfbW9kdWxlYCBiZWxvdyBh
cmUgcHVyZWx5IGR1ZSB0byB0aGlzLgorICAgIGNpcGRfcGFja2FnZXMgPSBbCisgICAgICAgICgn
aW5mcmEvcHl0aG9uL2NweXRob24vJHtwbGF0Zm9ybX0nLCAndmVyc2lvbjoyLjcuMTUuY2hyb21p
dW0xNCcpLAorICAgICAgICAoJ2luZnJhL3Rvb2xzL2x1Y2kvbG9nZG9nL2J1dGxlci8ke3BsYXRm
b3JtfScsCisgICAgICAgICAnZ2l0X3JldmlzaW9uOmUxYWJjNTdiZTYyZDE5OGI1YzJmNDg3YmZi
MmZhMmQyZWIwZTg2N2MnKSwKKyAgICAgICAgKCdpbmZyYS90b29scy9sdWNpL3ZweXRob24tbmF0
aXZlLyR7cGxhdGZvcm19JywKKyAgICAgICAgICdnaXRfcmV2aXNpb246ZTMxN2M3ZDJjMTdkNGMz
NDYwZWUzNzUyNGRmY2U0ZTFkZWU0MzA2YScpLAorICAgICAgICAoJ2luZnJhL3Rvb2xzL2x1Y2kv
dnB5dGhvbi8ke3BsYXRmb3JtfScsCisgICAgICAgICAnZ2l0X3JldmlzaW9uOmUzMTdjN2QyYzE3
ZDRjMzQ2MGVlMzc1MjRkZmNlNGUxZGVlNDMwNmEnKSwKKyAgICBdCisKKyAgICBmb3IgcGtnLCB2
ZXJzIGluIGNpcGRfcGFja2FnZXM6CisgICAgICAgIHN3YXJtaW5nX2FyZ3MuYXBwZW5kKCctLWNp
cGQtcGFja2FnZT0uc3dhcm1pbmdfbW9kdWxlOiVzPSVzJyAlIChwa2csIHZlcnMpKQorCisgICAg
IyBBZGQgcGFja2FnZXMgdG8gJFBBVEgKKyAgICBzd2FybWluZ19hcmdzLmV4dGVuZChbCisgICAg
ICAgICctLWVudi1wcmVmaXgnLAorICAgICAgICAnUEFUSD0uc3dhcm1pbmdfbW9kdWxlJywKKyAg
ICAgICAgJy0tZW52LXByZWZpeCcsCisgICAgICAgICdQQVRIPS5zd2FybWluZ19tb2R1bGUvYmlu
JywKKyAgICBdKQorCisgICAgIyBBZGQgY2FjaGUgZGlyZWN0aXZlcyBmb3IgdnB5dGhvbi4KKyAg
ICB2cHl0aG9uX2NhY2hlX3BhdGggPSAnLnN3YXJtaW5nX21vZHVsZV9jYWNoZS92cHl0aG9uJwor
ICAgIHN3YXJtaW5nX2FyZ3MuZXh0ZW5kKFsKKyAgICAgICAgJy0tbmFtZWQtY2FjaGUnLAorICAg
ICAgICAnc3dhcm1pbmdfbW9kdWxlX2NhY2hlX3ZweXRob249JyArIHZweXRob25fY2FjaGVfcGF0
aCwKKyAgICAgICAgJy0tZW52LXByZWZpeCcsCisgICAgICAgICdWUFlUSE9OX1ZJUlRVQUxFTlZf
Uk9PVD0nICsgdnB5dGhvbl9jYWNoZV9wYXRoLAorICAgIF0pCisKKwogZGVmIG1haW4oKToKICAg
ICBhcmdzLCB1bmtub3duID0gcGFyc2VfYXJncygpCiAgICAgcGF0aCA9IGFyZ3MuZ25fcGF0aC5y
ZXBsYWNlKCdcXCcsICcvJykKQEAgLTMzLDMzICs3NSw0MiBAQCBkZWYgbWFpbigpOgogICAgIG1i
X3NjcmlwdF9wYXRoID0gb3MucGF0aC5qb2luKCd0b29scycsICdtYicsICdtYi5weScpCiAgICAg
c3VicHJvY2Vzcy5jYWxsKFsncHl0aG9uJywgbWJfc2NyaXB0X3BhdGgsICdpc29sYXRlJywgb3V0
X2duX3BhdGgsIGFyZ3MudGVzdF0pCiAKLSAgICBpc29sYXRlX3NjcmlwdF9wYXRoID0gb3MucGF0
aC5qb2luKCd0b29scycsICdzd2FybWluZ19jbGllbnQnLCAnaXNvbGF0ZS5weScpCisgICAgaXNv
bGF0ZV9jbWRfcGF0aCA9IG9zLnBhdGguam9pbigndG9vbHMnLCAnbHVjaS1nbycsICdpc29sYXRl
JykKICAgICBpc29sYXRlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3V0X2ZpbGVfcGF0aCwgJyVzLmlz
b2xhdGUnICUgYXJncy50ZXN0KQogICAgIGlzb2xhdGVkX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3V0
X2ZpbGVfcGF0aCwgJyVzLmlzb2xhdGVkJyAlIGFyZ3MudGVzdCkKIAogICAgIGlzb2xhdGVfYXJn
cyA9IFsKLSAgICAgICAgJ3B5dGhvbicsIGlzb2xhdGVfc2NyaXB0X3BhdGgsICdhcmNoaXZlJywg
Jy1JJywgJ2h0dHBzOi8vaXNvbGF0ZXNlcnZlci5hcHBzcG90LmNvbScsICctaScsCi0gICAgICAg
IGlzb2xhdGVfZmlsZSwgJy1zJywgaXNvbGF0ZWRfZmlsZQorICAgICAgICBpc29sYXRlX2NtZF9w
YXRoLCAnYXJjaGl2ZScsICctSScsICdodHRwczovL2lzb2xhdGVzZXJ2ZXIuYXBwc3BvdC5jb20n
LCAnLWknLCBpc29sYXRlX2ZpbGUsCisgICAgICAgICctcycsIGlzb2xhdGVkX2ZpbGUKICAgICBd
Ci0gICAgc3Rkb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoaXNvbGF0ZV9hcmdzKQotICAg
IHNoYSA9IHN0ZG91dFs6NDBdCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGlzb2xhdGVfYXJn
cykKKyAgICB3aXRoIG9wZW4oaXNvbGF0ZWRfZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgc2hh
ID0gaGFzaGxpYi5zaGExKGYucmVhZCgpKS5oZXhkaWdlc3QoKQogCiAgICAgcHJpbnQoJ0dvdCBh
biBpc29sYXRlZCBTSEEgb2YgJXMnICUgc2hhKQotICAgIHN3YXJtaW5nX3NjcmlwdF9wYXRoID0g
b3MucGF0aC5qb2luKCd0b29scycsICdzd2FybWluZ19jbGllbnQnLCAnc3dhcm1pbmcucHknKQor
ICAgIHN3YXJtaW5nX3NjcmlwdF9wYXRoID0gb3MucGF0aC5qb2luKCd0b29scycsICdsdWNpLWdv
JywgJ3N3YXJtaW5nJykKIAotICAgIHN3YXJtaW5nc19hcmdzID0gWwotICAgICAgICAncHl0aG9u
Jywgc3dhcm1pbmdfc2NyaXB0X3BhdGgsICd0cmlnZ2VyJywgJy1TJywgJ2Nocm9taXVtLXN3YXJt
LmFwcHNwb3QuY29tJywgJy1JJywKLSAgICAgICAgJ2lzb2xhdGVzZXJ2ZXIuYXBwc3BvdC5jb20n
LCAnLWQnLCAnb3MnLCBhcmdzLm9zX2RpbSwgJy1kJywgJ3Bvb2wnLCBhcmdzLnBvb2wsICctZCcs
ICdncHUnLAotICAgICAgICBhcmdzLmdwdV9kaW0sCi0gICAgICAgICctLXNoYXJkcz0lZCcgJSBh
cmdzLnNoYXJkcywgJy1zJywgc2hhCisgICAgc3dhcm1pbmdfYXJncyA9IFsKKyAgICAgICAgc3dh
cm1pbmdfc2NyaXB0X3BhdGgsICd0cmlnZ2VyJywgJy1TJywgJ2Nocm9taXVtLXN3YXJtLmFwcHNw
b3QuY29tJywgJy1JJywKKyAgICAgICAgJ2h0dHBzOi8vaXNvbGF0ZXNlcnZlci5hcHBzcG90LmNv
bScsICctZCcsICdvcz0nICsgYXJncy5vc19kaW0sICctZCcsICdwb29sPScgKyBhcmdzLnBvb2ws
CisgICAgICAgICctZCcsICdncHU9JyArIGFyZ3MuZ3B1X2RpbSwgJy1zJywgc2hhCiAgICAgXQog
Ci0gICAgaWYgdW5rbm93bjoKLSAgICAgICAgc3dhcm1pbmdzX2FyZ3MgKz0gWyItLSJdICsgdW5r
bm93bgorICAgIGFkZF9iYXNlX3NvZnR3YXJlKHN3YXJtaW5nX2FyZ3MpCiAKKyAgICBmb3IgaSBp
biByYW5nZShhcmdzLnNoYXJkcyk6CisgICAgICAgIHNoYXJkX2FyZ3MgPSBzd2FybWluZ19hcmdz
WzpdCisgICAgICAgIHNoYXJkX2FyZ3MuZXh0ZW5kKFsKKyAgICAgICAgICAgICctLWVudicsCisg
ICAgICAgICAgICAnR1RFU1RfVE9UQUxfU0hBUkRTPSVkJyAlIGFyZ3Muc2hhcmRzLAorICAgICAg
ICAgICAgJy0tZW52JywKKyAgICAgICAgICAgICdHVEVTVF9TSEFSRF9JTkRFWD0lZCcgJSBpLAor
ICAgICAgICBdKQorICAgICAgICBpZiB1bmtub3duOgorICAgICAgICAgICAgc2hhcmRfYXJncyAr
PSBbIi0tIl0gKyB1bmtub3duCiAKLSAgICBwcmludCgnICcuam9pbihzd2FybWluZ3NfYXJncykp
Ci0gICAgc3VicHJvY2Vzcy5jYWxsKHN3YXJtaW5nc19hcmdzKQorICAgICAgICBwcmludCgnICcu
am9pbihzaGFyZF9hcmdzKSkKKyAgICAgICAgc3VicHJvY2Vzcy5jYWxsKHNoYXJkX2FyZ3MpCiAg
ICAgcmV0dXJuIDAKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvYXNzZXRzL2E0YV9ydWxlcy5qc29uIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL2Fzc2V0cy9hNGFfcnVs
ZXMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMDczNWQzNThiMGQ1YWIzNDg0M2VjYmJlNmZiMTAzZDllNzA1
YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL2Fzc2V0cy9hNGFfcnVsZXMuanNvbgpAQCAtMCwwICsxLDI1IEBA
Cit7CisgICAiUnVsZXMiOlsKKyAgICAgIHsKKyAgICAgICAgICJSdWxlIjoiRGVmYXVsdCBSdWxl
IChpLmUuIHVzZSBuYXRpdmUgZHJpdmVyKSIsCisgICAgICAgICAiVXNlQU5HTEUiOmZhbHNlCisg
ICAgICB9LAorICAgICAgeworICAgICAgICAgIlJ1bGUiOiJTdXBwb3J0ZWQgYXBwbGljYXRpb24o
cykgKGUuZy4gTWFwcyBvbiBHb29nbGUgZGV2aWNlcykiLAorICAgICAgICAgIlVzZUFOR0xFIjp0
cnVlLAorICAgICAgICAgIkFwcGxpY2F0aW9ucyI6WworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIkFwcE5hbWUiOiJjb20uYW5kcm9pZC5hbmdsZSIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAiQXBwTmFtZSI6ImNvbS5nb29nbGUuYW5kcm9pZC5h
bmdsZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgIF0sCisgICAgICAgICAiRGV2aWNlcyI6Wwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIk1hbnVmYWN0dXJlciI6Ikdvb2dsZSIKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgIF0KKyAgICAgIH0KKyAgIF0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvZHJh
d2FibGUvaWNvbi5wbmcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL2RyYXdhYmxlL2ljb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4Y2ZkNTFlMDYz
MzdhNmE5MjVlMGUwNjY2OTFiNDFmZmM0NjAwNTUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM5
MDkKemNtWSpjWElLLSsrRCU5KGlQU2BwcmlSZDVEV1I3RFE2WkZzNX1NTFF4YDJRe2tkOEQzQj1p
TDdxSTN9aT17QVp+CnoxP2czKXB0S2JPN14+b2gtVG41dmNiO2N2LWcpUURJcSNZSUhGMVVwK0FM
NkJDOyRMcCFSY1Upazd1Y3EmY3R2JAp6biRoalk5OFctQlZ7TFVuPHd5UzI7fDFpbGopZ0EoYTAt
NlhmcTwrVz9xaCgzdEVvQkJUd2YzRTtOPkF7PWpkaGMKekJwS2p3YHhwJVhzME5ecUxrfW1TOVV7
UXZtWnZXfEtuP2o5MCh+NXhxKXx4M1VsNXxaOHEhP2Y1VFc3YTxBaml4CnpsI2BTflZ4Un5GTGU8
Qzc4RXVUIWBzZXVaTikzNkZOVzZfa3E1Uz4qQ0gtWTN5P2s2eSgjcCFwQ0BDM35qRXV4Rgp6TGMl
eERsVn0kcDtwcj4qSF84OTtWNFp2JmR8WW82VUE7VUpDJWtze1VWY1AxQj1TViktfVpOJUx8NW5r
U012MXoKeiRKVmh5KVg1Rz9UMmMhMkZaYzBMKXNybG07TiQ5YXRiRD9ja3lpWitgOUhhVGJXfjkl
O3tSMzUtJWtJXjkkVXBnCnpSWjsoNTh3UlNeQ1RlbH5Kb2orZUUyY047YHopK1RIZGxGJCNAXj1t
ZSRBMVUmMFZjXlFnPkk4NUtic1U3JGlLRAp6cXdCb0R0LW9aNFhrYD5FLUUqWE5tTV9MQE1IRUl0
dU1hVEZ4MFpGc210a1I2X1Q9Ukg4PU8ke2Q8fmJOTX5BZVcKejhkVVJLXlVtekRPenQxZHFaNlNv
b05hYnktUzV1KnpXY2oqWSE+dkJqZzJGcVpAQXtXLTB0JjxkZ2l2QzdUc3tRCnoyJkxkak1kKTV0
T1M2NTFTUVRAbDJWdmZxIVplSmA4ITZuKj47KWx6blRiR24pRm8+d2JKe2BQXm48MU8yUVQrZAp6
QT5ERUlpeEZhfShFdSUwKFZecyRLPyMmeXZ6e09+SlNYZ21xNEd1Z0skRD0wa0FMN2FANFVWNnFG
aWlxPn5pakgKenQmbHBKNkM7SldyMzJYTHRWcCpIIWljLXlXPlRBd29yQFNKZmJNeHFBMkI9bGF+
WHRqbWorVmolcnk3RUJaRlUoCnpDZTdlWXM8NE5lO2pMPyNwfFFPWk9rYytMcDQyWShKQTxZb1Mo
TCZVRjYxKTRjNkVAX3JvJWAyWkdiO3RUbnh+cgp6RlZhOWhudDM5V19gemQ7KURyWFIkT2V3cyVp
K1A2IWgwT3tJSG9wQlMzNH00YylmQ3F6VGpIa3c4KCVLZHh2bH0KemRne2FKKGI/eVBBJjNTS2p3
OEYyO0wxdFFCVTRWRTVIbFozZDBfYzJAWUd3OC1OJEJjbFV5SzJBNjdiflo/I1FBCnomZmchfUpw
R2dWUjhoZn1vZV8pYCRMK0M5S3Q5IyV1Q1IjP0crMShmTWRCJlV4a2orUjNZS2VqVkU9KTMrWSs5
Ugp6bWRTZ15KQkBnd15xXmM/Y3wybXVEeDl6JHlsaD8hKEVjTHBheiVgYUhOZE5YQSFaM1pyM1Ex
JnpySVdqQ2J4U0IKejIzKytDPkg7cjB1WjZOI2IyWSh0QUZ+X3w+ZXVYaT1KYl4+ZXBmQ2ZzfiZI
SEBtblZ0VzQyI29haXozNjB9ekBQCnpvdTtBPDt8d141bGpfKmB3UV5eQmJuU3pGOXlgWT9mT0Qz
dVdySHxQbSo1O2FpUjxBbjlDYkFjZm41XmE+ejV0bwp6PytQTk53V3Q9IWhROFAyZ090KUxjMHxw
R3creTxpS0cmYG9BZDZ7IU1xX3UzVW9+LWlQa19kSz1QX2JpPHRuODgKekhjV35AWFp6VSo+SEE0
R2B2RiNUVl9WUi1YUkBwNW5+UUU4SyNtQG5ZWnZTY20wQyMhUjxka1ZBXmdZOHNkO1g7CnprZGIt
bkR3Tm9pbnNOZ2N1RTd0KCVDKEBFVno3QkhoY2lBfG9aciNCNlFrIVNtZjkhO3RXJU9XazV9fjZK
UUllYQp6MjBrbUE0WCM0KU5qY1FwYF93Wm9LPVJ8cWM1ajl6bD98VkRRUn5UQyYhKFRGaEY4enRx
PWwhTnomZXV6Pl9gSnYKekcxSzNYJF4jeX44KHBtM0sqR30zbzVGLT1JXmsoU3IpQDdfSGJubF5o
OClTc3t9ekZXY1ZFcD0yK2U+aCplfmVrCnpGQTdQTmpFJW8wUTFSaURGPENtfEQ0YHAkUlkjYXgx
PzJ8KntpMUlIUV5ZSUMqKDMmXiMtOzJUSGtPe2A1OWFLdAp6dUA0YChURn5YUipVZVdLZz5PX0o0
IzBFTjJ9LTJPUXVQQEVrSzRJVlFvJXpTM2tscCFNeHM2RkVjRUM+Rkdnfj4KenBodmk2WnsmVi1S
IWVkSXNJRW1zWEtjOTt4RikyeGxUbERQI2FEbEJfakV3cFZ8a0h1O3FhcHtNKHNwd0JnNlVqCnp0
YUlvMnFUbXkhZHZFQUVGPz1lUW8jNTJWYnhvUVhaeypGalVuKFFZY3ttU2MzUGZCNEhBPkxXeThZ
Ni1jQ2tkdQp6d2ZsVyVebWBPbkZFLW58Jm1XWmU9Y2ZMK1YhRWE2O1RhQUBhOHk3MFBtYThxa3pu
fGtjRmhFRFVlYU1DeV5FT34KenI+JDhncEplfGIlST5XTF9oe1JOd3JQdTRuX0FPZD15aEU+UGdl
JUtZRCVzPCojOHt9a00mZE1YWUt6MEE8PjdmCno5MHB4Jig7eUdQZT88MTk0WEh1YSp2cElfbUNa
K1I7VUFSZWwtK2hnWEtsRiE+IWl0aC16YVA0dndFQXtLNCU1SAp6RGdGOEhlO0V8WENFfnB3VjJl
M3F7bmtGeWtLPCZMSH1aenskbVh4P1IrKStKeGRGT2V3e0JQczQlZSh6KUlJbz8KeiFQfmdubjk8
U185dTwwc29EUTBpe0dybzJlWiR+MGdSSDtaSk5+MTQpZ0txRGk2cGMhOHVVQl83KyhaZyFWaW5y
CnpGaW18bTYjSDBSaUx9MzdKNjdNQ1pEQ0QmTTd+YzxfM2FDRjRfJkE0ejxGaTNqX0ZuVmxgQWdU
YzdqeT1wJTgjZAp6e2NOb0p1V0c3UkNjbVVYP09Ed1VXcz8wcThCWHBPa1c2YSpMJSZyeDtDYzVP
ZWVaTD9jdzEocGYtcllHZkMjSVMKelVQOHFTb2NKYHBrZlhnfikpMis2KUw+Y2ZTc2tNRnF5eXdp
P3BrYn5vUXEocWVnNWNePHR5cH4jaT1teUpMNVVUCnpwSWZkPUFDP0VUZGF6KHI1Zjc2RERfNG9C
Vyg5bHM1QmFjI0E8SU8qd2xrZ19XTmNSND4zbz01eChWSU9OcUI7aQp6UDlac3sjWGR8fkJYM0xz
dFcrRmFQPHB0TmJuQjg7Iyl7SX4+am5PMHIySllWbktUeWBWVnNIMHlULTxaZEQ3dikKeldkZGJO
Wn00Jk4+b303Yj45UWJtbk5De09xRT85SFRPRT4wTHhBUUcmaGxRMTJ4TVZ1QnAhJldOUVlJTz5i
VWdhCnpEOFZhIz5YIypka1BBT0Nye0c+ISs1UjdVO097MGZQeG9XNUMyZk4+M0JrMjUyfj5IeVU1
bmFsZmotJXdxfTcyaAp6Pih5T31rS0B6ZG10MFg3RSYlWUooPllqK3BkX00hb35xV3hCeyFTOVVr
WVlTc0Y2Q2hjdGt4SCpRUE02QzMrUUIKeilSOTB9KStZUCMqeGpjXm9WUXYmUzNBeUVNNllsPmpq
MysmNnxXcjhpSllHPmYoVzxwVUd2aHgjak9QUnV1aUtlCnp1c1QwWkZFQnZ4SWFUYz42LSs2JW5O
NTRRcFBoIW1VdSVAQmZIJV4pN0wzO0U+OTY5IyNyODs4JUN7VkBwbSZEWAp6QWgqWU9RWmljZ3BZ
eVA7RDlEMSFxRzZNY0tLTyQ7TWt0cHhGJUkhbkF1OEJodE9tfTYhUTk3PjJaRSY9emA0WnAKelE2
dWNISDdYODt0YyNzQUBGSmooKEklcUY8OTk5ISYtQ3VRMT0/NEckPFkhY2VxbGZAO1pkQCl0VzFU
QkYqMSt+Cno8VDVFJGImaCl9a2dHfThhaHU1KkJiUjhJWEhoSF8pdEdCaCsjWFhteFIjPzthZ0wp
ZmxGY05hMlN8JWRFSVUpewp6MiRyR3BpZF9feU5jNXl+UGFqQUU4MnE9PCQ/T1o3V285cnMpP1BI
TC1LMlE/bUchJl5fR3lLcndSRmhITWMtSHoKejMlcTx8bjd2O20hTFh7SHk7UWpNP2JzRTN2ODM9
MEJ8Szh9RWpWRHp6JiluKm5eYT4we3owV3t4KUg7eSlGSm1eCnpMI1VRczM5UVE5ZCNMSmUxPj8/
dzNaQzE2PjVAWGMrbzQ9cnl7NkAqPlgoR19GN09FUl4tby1sRm5ve1dKY1VGOQp6bjdwVjlsRCVE
ckllYnwjViVnOGYmYHt1Ry0+I1V9Snc+YDt6dnc4WSVlMUU7JUcqd0ZpZUJkTTh5RXJHZH1aa3YK
elM/ZEVvQShRQyhWI08oR2RHUks2VCYwbClhZE53cSp1LW9sQXJBYWlUdyZ8WGdtRWNsKXUyMzgq
WkRDblNgVmVeCnojfUh2czlKMjZMKkJEU0JVKnsjeDUkUnlIMHo3THczLTFHdV89dH5mPChMJVpo
SWBpZl5+cCUxOXlJeHNjdDc/fAp6Yj54Wl4xPTdZa1ZrbXxSO3d3dX1Mfn4qPztuSD1fVldhc0tR
NyRVOWB2TzRTIzl0WDYrQzhQRDdkTmk0VGA7OGcKemE8M25+enlzdGZmWn0hMG1GRjctaD9mQEMk
PD1ERGFvMnV8Sm1ONmlXI2FPXnlGbUY+ZC11JXZwZnA8RnFeXl5yCnpmfjhab3hmRWozIzFSeDVF
fTt5JlpIbVlETSFIeERiOGE/NG03RTlCP3FacEBeZnNOQSQrNGZ1JityVH5yaHJ2bgp6RykhJm9Z
c1UxJkN6OFN+QlReTjI5azYtSndaV0AzbV8oYHxBS04/NElFPj45RGVCMU0qS0dwUTQ8QiopZDN9
OUsKenBfRXBkNm4/K0MwQ0lUQ2dNUHxQeUorakRvTHN4VjtuX3ZCP3MxSE1rJWJqMTl4Y3FUOyM5
VUoxWGRJZT91d1kjCnp5JVFBM19mOEFCRUNXNmklNmt9UC1GKXxRZmQ2KERlSSZaZVZrOWp7P1VY
STtZPU90dnBKfl5PUllIOyRsND1tegp6ZUZ4V05AX3ZxKktGSyFudn18aGQtKXFJK1JnalpHbmJT
ZjNhT2stejc/a1I2XnNxfXBeLSttLXllTiRCJk98Q2cKenZ2Pyp+JVFrWU93UHM1UXJgbF4oemQ1
K1ohcFI5NzdJZ0N1aT5zPlolJjR6Ukgodz8kaHlpJiZGODlhI1FnYUhJCnplTW0wKmVObWUzbTlr
VGM7JW0hR1U0QFIxI0AtRjhwWipaQWwrbztzV2VhLWRVMFlTZzdPJGtGVj5NJjEmV3lgVQp6IXt7
SilWZERQJU84d34xYXdKZigpZSRJNFVhP3JlRjByZ2A4PVAmSHtII3VoSThsLSFMdVlfcStreiQk
ZTRoRF8Kejh2X0Z8K2pHK1opc0tVPWBOTWpLIWFwa1luZnl2V3pgRzZESG1+P3xHWUJPOz5oWHlG
I1N8ZWolWmB0cTFNZ2VhCnozWXtpbWt2TitMNExCVlg5YVpeXzZkUj04ZjhsMGJ2diY3PStneCYw
KVMxQXFVOGtxdUEtVEI/e21ZKTJeQigqWQp6VkYkfVk7MiUhfVcqWll0JGB1KF82WnFlNzREZC1x
MDRAXnUyNzwhbDcxejZBTXI8cVVtRklMYENsQmZ7SWh2WkAKejYyQVRfdVMod2RfeG1sVC08WWA4
aylmWl5SQHVxYTdVJVdOOXFeMHd5WUomUl5lPyVEPXdkbnc1MlErRnZ8Mzd4CnoyTCMtT2pUViQ/
bXY2Ty0zYz5hPWB7YmRnOH5jO1U9ZjF5UmJlO01nKUEmSShPKWM/djVeWW1FPz9kYmVwO2xwNQp6
OFRpSTRuUm1vbU0jcWJKZktPQlBhK1UzWkxuRndwKiMzUktyfjQwZmV8b1pFMXBEPys7a3VfYkA5
THc5Oys7fCEKejJeQFJaTHglYUV6SD58VzIpK0hLYkIpUHluXntKSVZSJkxzPyE/IVh3Uz9wcng1
Q0cjQClfKiZxRUNycVhnMmVWCnpfeFVnTkclVzBMP1ArfHlzIX4pOzYlLW5PelBveX5sNihHcFYp
KTFCdmpjajUkK0h0VUZFVGdaKWxNeFBGRUVLawp6emxsQ189PS1GSFlJWWFYVllBYl5YaDBqdUpl
Sm9zaH1rXmhJa2ZUM192UzVeQFkoSn1rNnpSNENCSjlPXz9PcWUKelIlZzshMTZqVTVKbHRvUyoh
V1c+YkB4SW1JMyQkJWQodSEhNWwmVnNqRDRjfHZGKjJEX1ojYXZUN3MxRmtFe2N+CnokJDUoRD9r
RG0/cX0jejxkWkgqfjk8VGxpIz9AITRWNntte0ZAdlgySmV4P0h6WDJtPCZ8KUYxeFg4KWg3Tj09
fApKdHlJNGVgNXpTezh3ZGFaCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL2xh
eW91dC9mcmFnbWVudC54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL2xheW91dC9mcmFnbWVudC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMzMDVm
YzE2ZjgyZjgyNTgzZWYwZjhjMmRkMjhhMWUwMGQ1Y2M4YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvbGF5
b3V0L2ZyYWdtZW50LnhtbApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJ1dGYtOCIgPz4KKzwhLS0KKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorCis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9
Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICAgICAgICAg
ICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgIGFu
ZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICAgIGFuZHJvaWQ6
b3JpZW50YXRpb249InZlcnRpY2FsIj4KKworICAgIDxmcmFnbWVudCAgYW5kcm9pZDpuYW1lPSJj
b20uYW5kcm9pZC5hbmdsZS5jb21tb24uTWFpbkZyYWdtZW50IgorICAgICAgICAgICAgICAgYW5k
cm9pZDppZD0iQCtpZC9mcmFnbWVudCIKKyAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hl
aWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9
Im1hdGNoX3BhcmVudCIvPgorCis8L0xpbmVhckxheW91dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFm
L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI2MWU1MDQ0
YTQ5YmE2Zjg0NWQ1ZjA1YjBlYjBhNDU2Zjg1NzUzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LWFmL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0
dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlm
Zj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdM
RS12b29ya2V1cmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
c19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ild5c2lnIEFOR0xFLWluc3Rl
bGxpbmdzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIg
bXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJBbGdlbWVlbiI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5
Njk0Ij4iR2VicnVpayBBTkdMRSB2aXIgYWxsZSBwcm9ncmFtbWUiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQz
NDAyNjAwMDc1NCI+Ild5cyBkaWFsb29na2Fzc2llIHdhbm5lZXIgQU5HTEUgZ2VsYWFpIGlzIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1z
Z2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iS2llcyBPcGVuR0wtZHJ5d2VyIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4i
YW5nbGUsIG9wZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkdlYnJ1
aWsgdGFucyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IkdlZW4gcHJvZ3JhbW1lIGJl
c2tpa2JhYXIgbmllIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJHZWVuIHByb2dyYW1tZSBp
cyBnZcOvbnN0YWxsZWVyIHdhdCBBTkdMRSBrYW4gZ2VicnVpayBuaWUiPC9zdHJpbmc+Cis8L3Jl
c291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYW0vc3Ry
aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMwYWRjMjNkMTg1YWQ1ZTMyYjE2NGU3YjFmOGI4NjhhZTdh
ZWU2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFtL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAg
IENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAg
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgor
Cis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fw
ay9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZm
OmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNn
aWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLhi6hBTkdMRSDhiJ3hiK3hjKvhi47hib0iPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0i
MjA3MjA2MjExNDc5NzA2NzU0NSI+IuGLqEFOR0xFIOGJheGKleGJpeGIruGJveGKlSDhi63hiYDh
i63hiKkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuGKoOGMoOGJg+GIi+GLrSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0
MDQxMjM5Njk0Ij4iQU5HTEUg4YiI4YiB4YiJ4YidIOGImOGJsOGMjeGJoOGIquGLq+GLjuGJvSDh
i63hjKDhiYDhiJkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOGIsuGMq+GK
lSDhiJjhjIjhipPhipsg4Yiz4Yyl4YqVIOGKoOGIs+GLrSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4
NjMwNCI+IuGLqE9wZW5HTCDhipDhjIIg4Yut4Yid4Yio4YyhIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGXhjaMg
b3Blbmds4Y2jIOGMjeGIq+GNiuGKreGItSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFO
R0xF4YqVIOGJoOGImOGMoOGJgOGInSDhiIvhi60iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLh
iJ3hipXhiJ0g4Yuo4Yia4YyI4YqZIOGImOGJsOGMjeGJoOGIquGLq+GLjuGJvSDhi6jhiInhiJ0i
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBt
c2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xF4YqVIOGImOGMoOGJgOGInSDhi6jhiJrh
ib3hiIkg4Yid4YqV4YidIOGImOGJsOGMjeGJoOGIquGLq+GLjuGJvSDhiqDhiI3hibDhjKvhipHh
iJ0iPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFyL3N0cmluZ3Mu
eG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYwZjRlMzExYjQwYmJmNzRi
YmIyNmE4NGQ4OWQwOTU2MTQ0NmQ4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFyL3N0cmlu
Z3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVU
Ri04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNl
IFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hl
bWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9h
c2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLYp9mE2KXYudiv2KfY
r9in2Kog2KfZhNmF2YHYttmE2Kkg2YTZhdit2LHZkNmR2YMgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjEx
NDc5NzA2NzU0NSI+Itiq2LnYr9mK2YQg2KXYudiv2KfYr9in2KogXCLZhdit2LHZkNmR2YMgQU5H
TEVcIiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1z
Z2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i2LnYp9mFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQi
PiLYp9iz2KrYrtiv2KfZhSBcItmF2K3YsdmQ2ZHZgyBBTkdMRVwiINmE2KzZhdmK2Lkg2KfZhNiq
2LfYqNmK2YLYp9iqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLYudix2LYg2YXYsdio
2Lkg2K3ZiNin2LEg2LnZhtivINiq2K3ZhdmK2YQgXCLZhdit2LHZkNmR2YMgQU5HTEVcIiI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dp
ZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Itin2K7YqtmK2KfYsSDYqNix2YbYp9mF2Kwg2KrYtNi6
2YrZhCBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9
IjYzODg2MzU1NDgwNjA0NjEzOTUiPiLZhdit2LHZkNmR2YMgYW5nbGXYjCDigI9vcGVuZ2zYjCDY
sdiz2YjZhdin2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLYqNin2LPYqtiu2K/Yp9mF
IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0
bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i2YTYpyDYqtiq2YjZgdixINij2Yog2KrY
t9io2YrZgtin2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxl
ZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+ItmE2YrYsyDZh9mG2KfZgyDY
o9mKINiq2LfYqNmK2YLYp9iqINmF2KvYqNiq2Kkg2YrZhdmD2YbZh9inINin2LPYqtiu2K/Yp9mF
IEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hcy9zdHJp
bmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWFzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxZmU5YjZkOGQ3NDlh
NjY5YTFiYjUzODg5YTdlMzQ4NmQ4NmRjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hcy9z
dHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
ICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8v
c2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVy
bjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg4KaF
4KaX4KeN4Kew4Ka+4Kan4Ka/4KaV4Ka+4KewIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJB
TkdMRSDgppvgp4fgpp/gpr/gpoLgprjgpq7gp4Lgprkg4Ka44KaC4Ka24KeL4Kan4KaoIOCmleCn
sOCmlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1z
Z2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i4Ka44Ka+4Kan4Ka+4Kew4KajIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2Nzgw
NDQwNDEyMzk2OTQiPiLgprjgppXgprLgp4sg4KaP4Kaq4KewIOCmrOCmvuCmrOCnhyBBTkdMRSDg
pqzgp43gpq/gp7Hgprngpr7gp7Ag4KaV4Kew4KaVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3
NTQiPiJBTkdMRSDgprJcJ+CmoSDgprlcJ+CmsuCnhyDgpqHgpr7gpq/gprzgprLgppcg4Kas4Ka+
4KaV4KaaIOCmpuCnh+CmluCngeCnseCmvuCmk+CmlSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMw
NCI+Ik9wZW5HTCBEcml2ZXIg4KaW4KeL4Kay4KaVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg
4KaX4KeN4Kew4Ka+4Kar4Ka/4KaV4KeN4Ka4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i
QU5HTEUg4Kas4KeN4Kav4Kex4Ka54Ka+4KewIOCmleCnsOCmvyDgpobgppvgp4ciPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4
MzQ1NDE0MTk4OTA2MDMiPiLgppXgp4vgpqjgp4sg4KaP4Kaq4KeN4oCMIOCmieCmquCmsuCmrOCn
jeCmpyDgpqjgprngpq/gprwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xFIOCmrOCn
jeCmr+CnseCmueCmvuCnsCDgppXgp7Dgpr/gpqwg4Kaq4Kew4Ka+IOCmleCni+CmqOCniyDgpo/g
pqrgp43igIwg4KaH4Kao4Ka34KeN4Kaf4KayIOCmleCnsOCmvyDgpqXgp4vgp7Hgpr4g4Kao4Ka+
4KaHIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hei9zdHJpbmdz
LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWF6L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ZDMxYzU0OTFkZmQwMmMy
N2JiNDM0ZDBlYjQ4YWZkOTNkNGEzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hei9zdHJp
bmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2No
ZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpv
YXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUgVMmZcmNp
aGzJmXJpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSBheWFybGFyxLFuYSBkw7x6
yZlsacWfIGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3Rp
dGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IsOcbXVtaSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQx
MjM5Njk0Ij4iQsO8dMO8biB0yZl0YmlxbMmZciDDvMOnw7xuIEFOR0xFIGlzdGlmYWTJmSBlZGlu
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2Jv
eCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSB5w7xrbMmZbmRpa2TJmSBkaWFs
b3EgcXV0dXN1bnUgZ8O2c3TJmXJpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVj
dF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5H
TCBEaXNraW5pIGHDp8SxbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBt
c2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpayI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0i
MjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIGlzdGlmYWTJmSBlZGlsaXIiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1
NDE0MTk4OTA2MDMiPiLGj2zDp2F0YW4gdMmZdGJpcSB5b3hkdXIiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5
MjQ5NzU5NiI+IkFOR0xFIGlzdGlmYWTJmSBlZMmZbiB0yZl0YmlxIHF1cmHFn2TEsXLEsWxtYXnE
sWIiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWIrc3IrTGF0bi9z
dHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLWIrc3IrTGF0bi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I0
ODg1ODQxZjJlYmMzMTNiYmEwNTI5M2FjMzRmYmYwMTFhZjk3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtYitzcitMYXRuL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5z
OmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAg
ICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2
NjM4MjUiPiJBTkdMRSBwb2RlxaFhdmFuamEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ikl6
bWVuaXRlIEFOR0xFIHBvZGXFoWF2YW5qYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iT3DFoXRlIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9
IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJLb3Jpc3RpIEFOR0xFIHphIHN2ZSBhcGxpa2FjaWplIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIg
bXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJQcmlrYcW+aSBwcm96b3IgZGlqYWxvZ2Ega2Fk
YSBzZSBBTkdMRSB1xI1pdGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3Bl
bmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJJemFiZXJpdGUg
T3BlbkdMIHVwcmF2bGphxI1raSBwcm9ncmFtIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
a2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3Jh
ZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IktvcmlzdGkgc2UgQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2
NTE4MzQ1NDE0MTk4OTA2MDMiPiJOaWplIGRvc3R1cG5hIG5pamVkbmEgYXBsaWthY2lqYSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lk
PSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmlqZSBpbnN0YWxpcmFuYSBuaWplZG5hIGFwbGlrYWNp
amEga29qYSBtb8W+ZSBkYSBrb3Jpc3RpIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1iZS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJlL3N0cmluZ3MueG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4NTk5NDVjNGZiZjhiNjE1ZTA5NjhlMmU0MzRiNTVmZGMzOTM3ZDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1iZS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQg
MjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNl
cyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJv
aWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDox
LjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3Nzgx
OTc0NzEyNjYzODI1Ij4i0J3QsNC70LDQtNGLIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1
NDUiPiLQl9C80LXQvdCwINC90LDQu9Cw0LQgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+ItCQ
0LPRg9C70YzQvdGL0Y8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+ItCS0YvQutCw0YDRi9GB0YLQ
vtGe0LLQsNGG0YwgQU5HTEUg0LTQu9GPINGe0YHRltGFINC/0YDQsNCz0YDQsNC8Ijwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9
IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLQn9Cw0LrQsNC30LLQsNGG0Ywg0LTRi9GP0LvQvtCz0LDQ
stCw0LUg0LDQutC90L4g0L/RgNGLINC30LDQs9GA0YPQt9GG0YsgQU5HTEUiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQy
MjA3NDExMzkzODYzMDQiPiLQktGL0LHQtdGA0YvRhtC1INC00YDQsNC50LLQtdGAIE9wZW5HTCI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2
MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsINCz0YDQsNGE0ZbQutCwIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3
ODYxOTc5NTU4Ij4i0JLRi9C60LDRgNGL0YHRgtC+0Z7QstCw0LXRhtGG0LAgQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2
NTE4MzQ1NDE0MTk4OTA2MDMiPiLQndGP0LzQsCDQtNCw0YHRgtGD0L/QvdGL0YUg0L/RgNCw0LPR
gNCw0LwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1t
YXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+ItCf0YDQsNCz0YDQsNC80YssINGP0LrR
ltGPINC80L7Qs9GD0YbRjCDQstGL0LrQsNGA0YvRgdGC0L7RntCy0LDRhtGMIEFOR0xFLCDQvdC1
INGe0YHRgtCw0LvRj9Cy0LDQvdGLIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1iZy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY2ZDMyZjFhOWNhNTIxMGVhNmNlY2E1YjU3NjVhZWM5MGI1NjFjZDgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1iZy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisg
ICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczph
bmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAg
eG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYz
ODI1Ij4i0J/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0LfQsCBBTkdMRSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYy
MTE0Nzk3MDY3NTQ1Ij4i0J/RgNC+0LzRj9C90LAg0L3QsCDQvdCw0YHRgtGA0L7QudC60LjRgtC1
INC30LAgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3Rp
dGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+ItCe0LHRidC4Ijwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQw
NDEyMzk2OTQiPiLQmNC30L/QvtC70LfQstCw0L3QtSDQvdCwIEFOR0xFINC30LAg0LLRgdC40YfQ
utC4INC/0YDQuNC70L7QttC10L3QuNGPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hv
d19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLQ
n9GA0Lgg0LfQsNGA0LXQttC00LDQvdC10YLQviDQvdCwIEFOR0xFINC00LAg0YHQtSDQv9C+0LrQ
sNC30LLQsCDQtNC40LDQu9C+0LPQvtCyINC/0YDQvtC30L7RgNC10YYiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3
NDExMzkzODYzMDQiPiLQmNC30LHQuNGA0LDQvdC1INC90LAg0LTRgNCw0LnQstC10YAg0LfQsCBP
cGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2
MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDQs9GA0LDRhNC40LrQsCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+ItCf0L7RgdGA0LXQtNGB0YLQstC+0LwgQU5HTEUiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4
MzQ1NDE0MTk4OTA2MDMiPiLQndGP0LzQsCDQvdCw0LvQuNGH0L3QuCDQv9GA0LjQu9C+0LbQtdC9
0LjRjyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i0J3Rj9C80LAg0LjQvdGB0YLQsNC70LjR
gNCw0L3QuCDQv9GA0LjQu9C+0LbQtdC90LjRjywg0LrQvtC40YLQviDQvNC+0LPQsNGCINC00LAg
0LjQt9C/0L7Qu9C30LLQsNGCIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1ibi9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJuL3N0cmluZ3MueG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI5MGQwNDQzODQ3NTFhNTUzZTczMWUzMDJhY2I2MzI2ZTg1ZGI2NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1ibi9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJz
aW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBU
aGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUg
QXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0
dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2Fy
ZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFu
ICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0Yg
QU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNl
IGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAg
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxu
czphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisg
ICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEy
NjYzODI1Ij4iQU5HTEUg4Ka44KaC4KaV4KeN4Kaw4Ka+4Kao4KeN4KakIOCmheCmreCmv+CmsOCn
geCmmuCmvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1
bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg4Ka44KeH4Kaf4Ka/4KaC
4Ka4IOCmquCmsOCmv+CmrOCmsOCnjeCmpOCmqCDgppXgprDgp4HgpqgiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2
MDAyNiI+IuCmuOCmvuCmp+CmvuCmsOCmoyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVz
ZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i4Ka44Kau
4Ka44KeN4KakIOCmheCnjeCmr+CmvuCmquCnh+CmsCDgppzgpqjgp43gpq8gQU5HTEUg4Kas4KeN
4Kav4Kas4Ka54Ka+4KawIOCmleCmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0
Ij4iQU5HTEUg4Kay4KeL4KahIOCmueCmk+Cmr+CmvOCmvuCmsCDgprjgpq7gpq/gprwg4Kah4Ka+
4Kav4Ka84Ka+4Kay4KaXIOCmrOCmleCnjeCmuCDgpqbgp4fgppbgp4HgpqgiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQy
MjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4Kah4KeN4Kaw4Ka+4KaH4Kat4Ka+4KawIOCmrOCnh+Cm
m+CnhyDgpqjgpr/gpqgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNn
aWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDgppfgp43gprDgpr7gpqvg
pr/gppXgp43gprgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDgpqzgp43gpq/g
pqzgprngpr7gprAg4KaV4Kaw4Ka+IOCmueCmmuCnjeCmm+CnhyI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5
MDYwMyI+IuCmleCni+CmqOCmkyDgpoXgp43gpq/gpr7gpqog4KaJ4Kaq4Kay4Kat4KeN4KavIOCm
qOCnh+CmhyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1
bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i4KaP4Kau4KaoIOCmleCni+CmqOCm
kyDgpoXgp43gpq/gpr7gpqog4KaH4Kao4Ka44KeN4Kaf4KayIOCmleCmsOCmviDgpqjgp4fgpocg
4Kav4Ka+IEFOR0xFIOCmrOCnjeCmr+CmrOCmueCmvuCmsCDgppXgprDgpqTgp4cg4Kaq4Ka+4Kaw
4KeHIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1icy9zdHJpbmdz
LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWJzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3NDEzMjRiMzg2MTU1MGVm
OGJiNGM5ZDJjZWQ3YzljNzcxNTg5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1icy9zdHJp
bmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2No
ZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpv
YXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUG9zdGF2a2UgemEg
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1t
YXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ikl6bWlqZW5pdGUgcG9zdGF2a2UgemEg
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+Ik9wxIdlbml0byI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5
Njk0Ij4iS29yaXN0aSBBTkdMRSB6YSBzdmUgYXBsaWthY2lqZSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0
MDI2MDAwNzU0Ij4iUHJpa2HFvmkgZGlqYWxvxaFraSBva3ZpciBrYWRhIHNlIEFOR0xFIHXEjWl0
YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxl
IiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9kYWJlcml0ZSBkcmFqdmVyIHphIE9wZW5H
TCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0
ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5
Nzk1NTgiPiJLb3Jpc3RpIHNlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9f
YXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTmVtYSBk
b3N0dXBuaWggYXBsaWthY2lqYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNf
aW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmVtYSBpbnN0
YWxpcmFuaWggYXBsaWthY2lqYSBrb2plIG1vZ3Uga29yaXN0aXRpIEFOR0xFIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWNh
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNmMyM2Q0YmNmNmUwYmZlNzRiNDgzYjllZDE2Mzdl
YTJjOTUzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1jYS9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyw6huY2llcyBkXCdBTkdMRSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lk
PSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpY2EgbGEgY29uZmlndXJhY2nDsyBkXCdBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lk
PSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR2VuZXJhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i
VXRpbGl0emEgQU5HTEUgcGVyIGEgdG90ZXMgbGVzIGFwbGljYWNpb25zIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMy
NTA0MzQwMjYwMDA3NTQiPiJNb3N0cmEgdW4gcXVhZHJlIGRlIGRpw6BsZWcgcXVhbiBBTkdMRSBz
XCdoYWdpIGNhcnJlZ2F0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5n
bF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2VsZWNjaW9uYSBl
bCBjb250cm9sYWRvciBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3Jk
cyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncsOgZmljcyI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBt
c2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IlNcJ2VzdMOgIHV0aWxpdHphbnQgQU5HTEUiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9
IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJObyBoaSBoYSBjYXAgYXBsaWNhY2nDsyBkaXNwb25pYmxl
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIg
bXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJObyBoaSBoYSBjYXAgYXBsaWNhY2nDsyBpbnN0
YWzCt2xhZGEgcXVlIHB1Z3VpIHV0aWxpemFyIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWNzL3N0cmluZ3MueG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjcxNGMyOTdjMzk4NGFlZmU3ODRkNzQ4NDdjYjA0M2RiMDk5M2IwYTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1jcy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmln
aHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAg
ICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisK
KyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291
cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2Fu
ZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVu
dDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3
NzgxOTc0NzEyNjYzODI1Ij4iUMWZZWR2b2xieSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3
NTQ1Ij4iVXByYXZpdCBuYXN0YXZlbsOtIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJPYmVj
bsOpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIg
bXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJQb3XFvsOtdmF0IEFOR0xFIHBybyB2xaFlY2hu
eSBhcGxpa2FjZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNl
X2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iWm9icmF6aXQgZGlhbG9n
b3bDqSBva25vIHDFmWkgbmHEjXRlbsOtIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0
Ij4iVnliZXJ0ZSBvdmxhZGHEjSBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJr
ZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFm
aWthIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3Nh
Z2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iUG91xb7DrXbDoSBzZSBhcGxpa2FjZSBB
TkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxl
IiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IksgZGlzcG96aWNpIG5lanNvdSDFvsOhZG7D
qSBhcGxpa2FjZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVk
X3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iRnVua2NpIEFOR0xFIG5lZG9r
w6HFvmUgcG91xb7DrXZhdCDFvsOhZG7DoSBuYWluc3RhbG92YW7DoSBhcGxpa2FjZSI8L3N0cmlu
Zz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1kYS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGRjMzk2YjdmNWUyNjVhZTZmMGIwN2FlNmQw
MDdjYTkxNjVjNDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZGEvc3RyaW5ncy54bWwKQEAg
LTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwh
LS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAor
CisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9p
ZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6
dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVu
Y2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlByw6ZmZXJlbmNlciBmb3IgQU5HTEUi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBt
c2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IlJlZGlnZXIgaW5kc3RpbGxpbmdlcm5lIGZvciBB
TkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1z
Z2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR2VuZXJlbHQiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+IkJydWcgQU5HTEUgdGlsIGFsbGUgYXBwcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0
Ij4iVmlzIGRpYWxvZ2Jva3NlbiwgbsOlciBBTkdMRSBpbmRsw6ZzZXMiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3
NDExMzkzODYzMDQiPiJWw6ZsZyBPcGVuR0wgRHJpdmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5n
bCwgZ3JhZmlrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0
X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQnJ1Z2VyIEFOR0xFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIx
NjUxODM0NTQxNDE5ODkwNjAzIj4iRGVyIGVyIGluZ2VuIHRpbGfDpm5nZWxpZ2UgYXBwcyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lk
PSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iRGVyIGVyIGluZ2VuIGluc3RhbGxlcmVkZSBhcHBzLCBz
b20ga2FuIGJydWdlIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1kZS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
YzYzMjRlMjRkMmIyYjRjNDcwMDEwZWU4YmYwMzNiMDdiY2I3N2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1kZS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAg
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRy
b2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1s
bnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1
Ij4iQU5HTEUtRWluc3RlbGx1bmdlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUt
RWluc3RlbGx1bmdlbiDDpG5kZXJuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
Z2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJBbGxnZW1laW4iPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0i
MjU2MjY3ODA0NDA0MTIzOTY5NCI+IkFOR0xFIGbDvHIgYWxsZSBBcHBzIHZlcndlbmRlbiI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1z
Z2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iRGlhbG9nZmVsZCBhbnplaWdlbiwgd2VubiBBTkdM
RSBnZWxhZGVuIGlzdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xf
ZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCBEcml2ZXIg
YXVzd8OkaGxlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0i
NjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpayI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQz
NDE5Nzg2MTk3OTU1OCI+IkFOR0xFIHdpcmQgdmVyd2VuZGV0Ijwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4iS2VpbmUgQXBwcyB2b3JoYW5kZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Iktl
aW5lIEFwcHMgaW5zdGFsbGllcnQsIGRpZSBBTkdMRSB2ZXJ3ZW5kZW4ga8O2bm5lbiI8L3N0cmlu
Zz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1lbC9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTk0NGZjNmJjNzAzMzcxYTUyMTE4OGMzOWUx
MzkyYzBiMzEyZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZWwvc3RyaW5ncy54bWwKQEAg
LTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwh
LS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAor
CisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9p
ZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6
dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVu
Y2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+Is6gz4HOv8+EzrnOvM6uz4POtc65z4Ig
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1t
YXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Is6kz4HOv8+Azr/PgM6/zq/Ot8+Dzrcg
z4HPhc64zrzOr8+DzrXPic69IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLOk861zr3Ouc66
zqwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBt
c2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+Is6nz4HOrs+DzrcgQU5HTEUgzrPOuc6xIM+MzrvO
tc+CIM+EzrnPgiDOtc+GzrHPgc68zr/Os86tz4IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1
NCI+Is6VzrzPhs6szr3Ouc+Dzrcgz4DOsc+BzrHOuM+Nz4HOv8+FIM60zrnOsc67z4zOs86/z4Ug
zrrOsc+Ezqwgz4TOtyDPhs+Mz4HPhM+Jz4POtyDPhM6/z4UgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3
NDExMzkzODYzMDQiPiLOlc+AzrnOu86/zrPOriDPgM+Bzr/Os8+BzqzOvM68zrHPhM6/z4Igzr/O
tM6uzrPOt8+DzrfPgiBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3Jk
cyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDOs8+BzrHPhs65
zrrOrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+Is6nz4HOrs+DzrcgQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2
NTE4MzQ1NDE0MTk4OTA2MDMiPiLOlM61zr0gz4XPgM6sz4HPh86/z4XOvSDOtM65zrHOuM6tz4PO
uc68zrXPgiDOtc+GzrHPgc68zr/Os86tz4IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Is6U
zrXOvSDOrc+Hzr/Phc69IM61zrPOus6xz4TOsc+Dz4TOsc64zrXOryDOtc+GzrHPgc68zr/Os86t
z4Igz4DOv8+FIM68z4DOv8+Bzr/Pjc69IM69zrEgz4fPgc63z4POuc68zr/PgM6/zrnOrs+Dzr/P
hc69IM+Ezr8gQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LWVuLXJBVS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJBVS9zdHJpbmdzLnhtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YjI1N2JhZTM1MmQ5ZTg5MDYwMDQ3ODIwOTE5ZWM1YWJiOWRjYjI0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
ICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHht
bG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIK
KyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3
MTI2NjM4MjUiPiJBTkdMRSBQcmVmZXJlbmNlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i
TW9kaWZ5IEFOR0xFIHNldHRpbmdzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
Z2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJHZW5lcmFsIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1
NjI2NzgwNDQwNDEyMzk2OTQiPiJVc2UgQU5HTEUgZm9yIGFsbCBhcHBzIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMy
NTA0MzQwMjYwMDA3NTQiPiJTaG93IGRpYWxvZ3VlIGJveCB3aGVuIEFOR0xFIGlzIGxvYWRlZCI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBt
c2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlNlbGVjdCBPcGVuR0wgRHJpdmVyIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1
Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhcGhpY3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJV
c2luZyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVk
X3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik5vIGF2YWlsYWJsZSBhcHBzIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNn
aWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJObyBhcHBzIGluc3RhbGxlZCB0aGF0IGNhbiB1c2Ug
QU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJDQS9z
dHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJDQS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjI1N2Jh
ZTM1MmQ5ZTg5MDYwMDQ3ODIwOTE5ZWM1YWJiOWRjYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMtZW4tckNBL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRy
b2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJv
aWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxu
czp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUi
PiJBTkdMRSBQcmVmZXJlbmNlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZ5IEFO
R0xFIHNldHRpbmdzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90
aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJHZW5lcmFsIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQw
NDEyMzk2OTQiPiJVc2UgQU5HTEUgZm9yIGFsbCBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYw
MDA3NTQiPiJTaG93IGRpYWxvZ3VlIGJveCB3aGVuIEFOR0xFIGlzIGxvYWRlZCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3
NDIyMDc0MTEzOTM4NjMwNCI+IlNlbGVjdCBPcGVuR0wgRHJpdmVyIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUs
IG9wZW5nbCwgZ3JhcGhpY3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91
c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVc2luZyBBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBt
c2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik5vIGF2YWlsYWJsZSBhcHBzIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4
Mjk1MjI2OTI0OTc1OTYiPiJObyBhcHBzIGluc3RhbGxlZCB0aGF0IGNhbiB1c2UgQU5HTEUiPC9z
dHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnht
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLWVuLXJHQi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjI1N2JhZTM1MmQ5ZTg5
MDYwMDQ3ODIwOTE5ZWM1YWJiOWRjYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tckdC
L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6
Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0i
dXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSBQ
cmVmZXJlbmNlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2Vz
X3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZ5IEFOR0xFIHNldHRp
bmdzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNn
aWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJHZW5lcmFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQi
PiJVc2UgQU5HTEUgZm9yIGFsbCBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hv
d19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJT
aG93IGRpYWxvZ3VlIGJveCB3aGVuIEFOR0xFIGlzIGxvYWRlZCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEz
OTM4NjMwNCI+IlNlbGVjdCBPcGVuR0wgRHJpdmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg
Z3JhcGhpY3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3Rf
bWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVc2luZyBBTkdMRSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+Ik5vIGF2YWlsYWJsZSBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0
OTc1OTYiPiJObyBhcHBzIGluc3RhbGxlZCB0aGF0IGNhbiB1c2UgQU5HTEUiPC9zdHJpbmc+Cis8
L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJJTi9zdHJpbmdzLnhtbCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LWVuLXJJTi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjI1N2JhZTM1MmQ5ZTg5MDYwMDQ3ODIw
OTE5ZWM1YWJiOWRjYjI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3Mu
eG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFz
LmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lz
Om5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9w
cmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSBQcmVmZXJlbmNl
cyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnki
IG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZ5IEFOR0xFIHNldHRpbmdzIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEz
OTc2MTcxODMzNjAwMjYiPiJHZW5lcmFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNl
X2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJVc2UgQU5H
TEUgZm9yIGFsbCBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9p
bl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJTaG93IGRpYWxv
Z3VlIGJveCB3aGVuIEFOR0xFIGlzIGxvYWRlZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+
IlNlbGVjdCBPcGVuR0wgRHJpdmVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29y
ZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhcGhpY3Mi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIg
bXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVc2luZyBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQx
OTg5MDYwMyI+Ik5vIGF2YWlsYWJsZSBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
bm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJO
byBhcHBzIGluc3RhbGxlZCB0aGF0IGNhbiB1c2UgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNl
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJYQy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVuLXJYQy9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDhlODRiM2Q5OGEyYWViMTQ2OGUwNDFlOTk0NDQzZDQw
ODAyODE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tclhDL3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLigI7igI/igI7igI7igI7igI7igI7igI/i
gI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7igI7igI7igI/igI/igI7igI/igI7i
gI/igI/igI/igI/igI/igI/igI/igI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI/igI/i
gI/igI/igI7igI7igI/igI7igI/igI7igI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI/i
gI/igI/igI7igI7igI/igI7igI7igI7igI7igI7igI/igI/igI7igI7igI/igI7igI7igI/igI/i
gI/igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI/igI5BTkdMRSBQcmVmZXJlbmNlc+KA
juKAj+KAjuKAjuKAj+KAjiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i4oCO4oCP4oCO4oCO
4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCO4oCO4oCP4oCO4oCO4oCO4oCO4oCO4oCO4oCP
4oCP4oCO4oCP4oCO4oCP4oCP4oCP4oCP4oCO4oCP4oCP4oCP4oCP4oCO4oCO4oCP4oCP4oCO4oCO
4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCO4oCO4oCP4oCP4oCO4oCO4oCO4oCO4oCO4oCP
4oCP4oCP4oCP4oCP4oCO4oCO4oCO4oCO4oCP4oCO4oCO4oCO4oCO4oCO4oCP4oCP4oCO4oCO4oCO
4oCO4oCP4oCP4oCP4oCO4oCP4oCO4oCO4oCO4oCP4oCP4oCO4oCO4oCP4oCOTW9kaWZ5IEFOR0xF
IHNldHRpbmdz4oCO4oCP4oCO4oCO4oCP4oCOIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLigI7igI/i
gI7igI7igI7igI7igI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7igI7i
gI7igI/igI/igI7igI/igI7igI/igI/igI/igI/igI/igI7igI/igI/igI7igI/igI7igI/igI7i
gI/igI/igI/igI7igI7igI/igI7igI/igI/igI/igI7igI/igI7igI7igI/igI/igI7igI/igI/i
gI/igI7igI/igI7igI7igI7igI/igI7igI/igI/igI7igI/igI7igI7igI7igI7igI7igI7igI7i
gI7igI7igI7igI7igI7igI7igI/igI7igI7igI7igI7igI7igI/igI/igI7igI/igI7igI5HZW5l
cmFs4oCO4oCP4oCO4oCO4oCP4oCOIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2Fu
Z2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLigI7igI/igI7i
gI7igI7igI7igI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7igI7igI7i
gI/igI/igI7igI/igI7igI/igI/igI/igI/igI/igI7igI/igI7igI7igI7igI/igI/igI/igI7i
gI7igI/igI7igI7igI7igI7igI7igI/igI/igI/igI7igI/igI/igI7igI7igI7igI7igI/igI/i
gI7igI/igI7igI7igI/igI/igI/igI/igI7igI7igI7igI/igI/igI7igI7igI7igI/igI7igI/i
gI7igI/igI7igI/igI/igI/igI7igI7igI/igI7igI7igI7igI/igI/igI/igI7igI5Vc2UgQU5H
TEUgZm9yIGFsbCBhcHBz4oCO4oCP4oCO4oCO4oCP4oCOIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYw
MDA3NTQiPiLigI7igI/igI7igI7igI7igI7igI7igI/igI7igI/igI/igI/igI7igI7igI7igI/i
gI7igI7igI7igI7igI7igI7igI/igI/igI7igI/igI7igI/igI/igI/igI/igI/igI7igI/igI7i
gI/igI/igI/igI/igI/igI/igI7igI7igI/igI7igI7igI7igI/igI/igI/igI7igI7igI7igI/i
gI7igI7igI7igI7igI7igI7igI/igI/igI7igI/igI/igI7igI/igI7igI7igI7igI7igI/igI/i
gI7igI/igI7igI/igI7igI7igI7igI/igI7igI/igI7igI7igI7igI/igI7igI/igI/igI/igI7i
gI7igI/igI7igI5TaG93IGRpYWxvZyBib3ggd2hlbiBBTkdMRSBpcyBsb2FkZWTigI7igI/igI7i
gI7igI/igI4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZl
cl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiLigI7igI/igI7igI7igI7igI7i
gI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7igI7igI7igI/igI/igI7i
gI/igI7igI/igI/igI/igI/igI/igI7igI/igI/igI7igI7igI7igI7igI7igI7igI/igI/igI7i
gI/igI/igI7igI/igI/igI/igI7igI/igI7igI7igI/igI7igI/igI7igI/igI/igI7igI/igI/i
gI7igI/igI7igI/igI/igI7igI/igI7igI/igI/igI/igI7igI/igI7igI7igI7igI7igI/igI7i
gI7igI/igI/igI/igI/igI/igI/igI7igI7igI7igI7igI7igI7igI5TZWxlY3QgT3BlbkdMIERy
aXZlcuKAjuKAj+KAjuKAjuKAj+KAjiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdv
cmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+IuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKA
j+KAjuKAj+KAj+KAj+KAjuKAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KA
juKAj+KAj+KAj+KAj+KAj+KAj+KAj+KAjuKAj+KAj+KAjuKAjuKAjuKAj+KAjuKAj+KAjuKAj+KA
juKAjuKAjuKAj+KAj+KAj+KAj+KAj+KAj+KAj+KAjuKAjuKAjuKAj+KAjuKAj+KAj+KAj+KAjuKA
j+KAjuKAj+KAj+KAj+KAjuKAjuKAj+KAj+KAjuKAjuKAj+KAjuKAjuKAj+KAj+KAj+KAjuKAj+KA
juKAj+KAjuKAjuKAj+KAjuKAj+KAjuKAj+KAjuKAjuKAj+KAj+KAjmFuZ2xlLCBvcGVuZ2wsIGdy
YXBoaWNz4oCO4oCP4oCO4oCO4oCP4oCOIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i4oCO
4oCP4oCO4oCO4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCO4oCO4oCP4oCO4oCO4oCO4oCO
4oCO4oCO4oCP4oCP4oCO4oCP4oCO4oCP4oCP4oCP4oCP4oCO4oCP4oCP4oCP4oCP4oCP4oCP4oCO
4oCP4oCO4oCP4oCP4oCO4oCP4oCP4oCO4oCO4oCO4oCP4oCP4oCP4oCP4oCP4oCO4oCP4oCP4oCO
4oCP4oCP4oCP4oCO4oCP4oCO4oCO4oCP4oCO4oCP4oCO4oCO4oCP4oCP4oCP4oCO4oCP4oCP4oCP
4oCO4oCP4oCP4oCO4oCP4oCO4oCP4oCO4oCP4oCP4oCO4oCP4oCO4oCO4oCP4oCP4oCO4oCOVXNp
bmcgQU5HTEXigI7igI/igI7igI7igI/igI4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLigI7i
gI/igI7igI7igI7igI7igI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7i
gI7igI7igI/igI/igI7igI/igI7igI/igI/igI/igI/igI7igI/igI/igI7igI/igI/igI7igI/i
gI/igI/igI7igI/igI/igI7igI7igI7igI/igI/igI/igI/igI/igI/igI7igI/igI/igI7igI7i
gI7igI7igI/igI/igI7igI/igI/igI/igI/igI/igI7igI/igI7igI7igI7igI7igI/igI/igI7i
gI/igI/igI7igI7igI7igI7igI/igI/igI/igI/igI7igI/igI7igI/igI7igI/igI/igI5ObyBh
dmFpbGFibGUgYXBwc+KAjuKAj+KAjuKAjuKAj+KAjiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2
Ij4i4oCO4oCP4oCO4oCO4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCO4oCO4oCP4oCO4oCO
4oCO4oCO4oCO4oCO4oCP4oCP4oCO4oCP4oCO4oCP4oCP4oCP4oCP4oCO4oCP4oCP4oCP4oCO4oCP
4oCO4oCP4oCO4oCP4oCO4oCP4oCP4oCP4oCP4oCO4oCP4oCO4oCO4oCO4oCO4oCP4oCP4oCO4oCP
4oCO4oCO4oCO4oCO4oCP4oCP4oCO4oCP4oCP4oCO4oCO4oCP4oCP4oCP4oCP4oCO4oCP4oCP4oCP
4oCO4oCO4oCO4oCO4oCP4oCP4oCO4oCO4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCP4oCO4oCO
4oCOTm8gYXBwcyBpbnN0YWxsZWQgdGhhdCBjYW4gdXNlIEFOR0xF4oCO4oCP4oCO4oCO4oCP4oCO
Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5n
cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1lcy1yVVMvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ4MTgzMjUwOWE0
NGQ4MTI1ZGY4MGNhMTFhMDRjZmMwYmE1MDcxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVz
LXJVUy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJo
dHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxp
ZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJl
ZmVyZW5jaWFzIGRlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJl
ZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNb2RpZmljYXIg
Y29uZmlndXJhY2nDs24gZGUgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkdlbmVyYWwiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0i
MjU2MjY3ODA0NDA0MTIzOTY5NCI+IlVzYXIgQU5HTEUgcGFyYSB0b2RhcyBsYXMgYXBwcyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1z
Z2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iTW9zdHJhciBjdWFkcm8gZGUgZGnDoWxvZ28gY3Vh
bmRvIEFOR0xFIGVzdMOhIGNhcmdhZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxl
Y3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTZWxl
Y2Npb25hciBjb250cm9sYWRvciBkZSBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBn
csOhZmljb3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3Rf
bWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVc2FuZG8gQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2
NTE4MzQ1NDE0MTk4OTA2MDMiPiJObyBoYXkgYXBwcyBkaXNwb25pYmxlcyI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5
NTIyNjkyNDk3NTk2Ij4iTm8gc2UgaW5zdGFsYXJvbiBhcHBzIHF1ZSBwdWVkZW4gdXNhciBBTkdM
RSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXMvc3RyaW5ncy54
bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjg2MzU4YmUwNzFlYzhlZWIy
MmFiZjg5OTkzZmVmZWY3MWEwY2I2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXMvc3RyaW5n
cy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVt
YXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2Fz
aXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlByZWZlcmVuY2lhcyBk
ZSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1
bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpY2FyIGFqdXN0ZXMgZGUg
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkdlbmVyYWwiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+IlVzYXIgQU5HTEUgcGFyYSB0b2RhcyBsYXMgYXBsaWNhY2lvbmVzIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMy
NTA0MzQwMjYwMDA3NTQiPiJNb3N0cmFyIGN1YWRybyBkZSBkacOhbG9nbyBjdWFuZG8gc2UgY2Fy
Z3VlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2
ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2VsZWNjaW9uYXIgY29udHJv
bGFkb3IgZGUgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3LDoWZpY29zIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lk
PSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iVXNhbmRvIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4iTm8gaGF5IGFwbGljYWNpb25lcyBkaXNwb25pYmxlcyI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjky
NDk3NTk2Ij4iTmluZ3VuYSBhcGxpY2FjacOzbiBpbnN0YWxhZGEgcHVlZGUgdXNhciBBTkdMRSI8
L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXQvc3RyaW5ncy54bWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1ldC9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzJjMzQ4NWFkMzI4ZWFmNWUzZWMw
YTc3ZGM1YmUzZmY3NGM1NDZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXQvc3RyaW5ncy54
bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMu
YW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6
bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlJha2VuZHVzZSBBTkdMRSBl
ZWxpc3R1c2VkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNf
c3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJSYWtlbmR1c2UgQU5HTEUgc2Vh
ZGV0ZSBtdXV0bWluZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxf
dGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iw5xsZGluZSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0
MDQxMjM5Njk0Ij4iS2FzdXRhIGvDtWlnaSByYWtlbmR1c3RlIHB1aHVsIHJha2VuZHVzdCBBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19i
b3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iS3V2YSBkaWFsb29naWJva3MsIGt1aSBB
TkdMRSBvbiBsYWFkaXR1ZCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVu
Z2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTC1pIGRy
YWl2ZXJpIHZhbGltaW5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhYWZpa2EiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9
IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJSYWtlbmR1c2UgQU5HTEUga2FzdXRhbWluZSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+IlJha2VuZHVzaSBwb2xlIHNhYWRhdmFsIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1
MjI2OTI0OTc1OTYiPiJQb2xlIGluc3RhbGxpdHVkIMO8aHRlZ2kgcmFrZW5kdXN0LCBtaXMgc2Fh
a3Mga2FzdXRhZGEgZnVua3RzaW9vbmkgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWV1L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXUvc3RyaW5ncy54bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjNjNTNiZmFhM2E1NGI3MzYwYjM0OTVkNDQ1OTY3YzBiMDliMDU5NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLWV1L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAy
MDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2Vz
IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9p
ZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEu
MiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5
NzQ3MTI2NjM4MjUiPiJBTkdMRSBhcGxpa2F6aW9hcmVuIGhvYmVzcGVuYWsiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2
MjExNDc5NzA2NzU0NSI+IkFsZGF0dSBBTkdMRSBhcGxpa2F6aW9hcmVuIGV6YXJwZW5hayI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUx
Mzk3NjE3MTgzMzYwMDI2Ij4iT3Jva29ycmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1
c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IkVyYWJp
bGkgQU5HTEUgYXBsaWthemlvIGd1enRpZXRhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0
Ij4iRXJha3V0c2kgbGVpaG9hIEFOR0xFIGthcmdhdHplbiBkZW5lYW4iPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3
NDExMzkzODYzMDQiPiJIYXV0YXR1IE9wZW5HTCBrb250cm9sYXR6YWlsZWEiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJh
bmdsZSwgb3BlbmdsLCBncmFmaWtvYWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdM
RSBlcmFiaWx0emVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iRXogZGFnbyBhcGxpa2F6aW9y
aWsgZXJhYmlsZ2FycmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkV6IGRhdWthenUgaW5z
dGFsYXR1dGEgQU5HTEUgZXJhYmlsIGRlemFrZWVuIGFwbGlrYXppb3JpayI8L3N0cmluZz4KKzwv
cmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1mYS9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTRkYmVmMTA4YjE4MWI5ZTI5YWNhNmE3ZjEzZTJlMDJm
YzgyOWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZmEvc3RyaW5ncy54bWwKQEAgLTAsMCAr
MSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisg
ICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAg
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+
CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20v
YXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxp
ZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBt
c2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+Itiq2YbYuNuM2YXYp9iqINio2LHar9iy24zYr9mH
IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLYqti624zbjNixINiq2YbYuNuM2YXY
p9iqIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRs
ZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLZhdmI2KfYsdivINqp2YTbjCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4i2KfYs9iq2YHYp9iv2Ycg2KfYsiBBTkdMRSDYqNix2KfbjCDZh9mF
2Ycg2KjYsdmG2KfZhdmH4oCM2YfYpyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i2YjZ
gtiq24wgQU5HTEUg2KjYp9ixINmF24zigIzYtNmI2K/YjCDaqdin2K/YsSDar9mB2Krar9mI24zb
jCDZhti02KfZhiDYr9in2K/ZhyDYtNmI2K8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJz
ZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiLY
p9mG2KrYrtin2Kgg2K/Ysdin24zZiNixIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlINiMb3Blbmds
INiMZ3JhcGhpY3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLYr9ix2K3Yp9mEINin2LPY
qtmB2KfYr9mHINin2LIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBz
X2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLYqNix2YbYp9mF
2YfigIzYp9uMINiv2LHYr9iz2KrYsdizINmG24zYs9iqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1
OTYiPiLZh9uM2oYg2KjYsdmG2KfZhdmH4oCM2KfbjCDYqNinINmC2KfYqNmE24zYqiDYp9iz2KrZ
gdin2K/ZhyDYp9iyIEFOR0xFINmG2LXYqCDZhti02K/ZhyDYp9iz2KoiPC9zdHJpbmc+Cis8L3Jl
c291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZmkvc3Ry
aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUwZDJmMmI4OTZkNGVlYWE2NDkzYTRlODQ0NzQ1ZjA5NjZj
OWU2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZpL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAg
IENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAg
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgor
Cis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fw
ay9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZm
OmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNn
aWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRS12YWxpbm5hdCI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0
Nzk3MDY3NTQ1Ij4iTXV1dGEgQU5HTEUtYXNldHVrc2lhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJZ
bGVpc2V0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBw
cyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJLw6R5dMOkIEFOR0xFYSBrYWlraXNzYSBz
b3ZlbGx1a3Npc3NhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJOw6R5dMOkIHZhbGlu
dGFpa2t1bmEsIGt1biBBTkdMRSBvbiBsYWRhdHR1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0
Ij4iVmFsaXRzZSBPcGVuR0wtYWp1cmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3
b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWlr
a2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2Fn
ZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSBrw6R5dMO2c3PDpCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+IkVpIHNvdmVsbHVrc2lhIHNhYXRhdmlsbGEiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgy
OTUyMjY5MjQ5NzU5NiI+IkFOR0xFIGVpIHRvaW1pIGFzZW5uZXR1aWxsYSBzb3ZlbGx1a3NpbGxh
Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5n
cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1mci1yQ0Evc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIwNTc0OTlmODA2
ODE4ZmJkZjNjMjE3Yzg2NTY3YTA4ODU3OWE2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZy
LXJDQS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJo
dHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxp
ZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHLD
qWbDqXJlbmNlcyBkXCdBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpZXIg
bGVzIHBhcmFtw6h0cmVzIGRcJ0FOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJHw6luw6lyYWwi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dp
ZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlV0aWxpc2VyIEFOR0xFIHBvdXIgdG91dGVzIGxlcyBh
cHBsaWNhdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFmZmljaGVyIGxhIGJv
w650ZSBkZSBkaWFsb2d1ZSBsb3JzcXVlIEFOR0xFIGVzdCBjaGFyZ8OpIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIw
NzQxMTM5Mzg2MzA0Ij4iU8OpbGVjdGlvbm5lciBsZSBwaWxvdGUgT3BlbkdMIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4i
YW5nbGUsIG9wZW5nbCwgZ3JhcGhpcXVlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IlV0
aWxpc2F0aW9uIGRcJ0FOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iQXVjdW5lIGFwcGxp
Y2F0aW9uIGNvbXBhdGlibGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkF1Y3VuZSBkZXMg
YXBwbGljYXRpb25zIGluc3RhbGzDqWVzIG5lIHBldXQgdXRpbGlzZXIgbGUgbW90ZXVyIGdyYXBo
aXF1ZSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZnIv
c3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmNiYmQ0ODYx
NTNmYmI4OWNlODBhZDNiYzE3Y2E3Y2Y1MTJiMzcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
ZnIvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0
cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZm
PSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5h
bWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlByw6lm
w6lyZW5jZXMgcmVsYXRpdmVzIMOgIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJN
b2RpZmllciBsZXMgcGFyYW3DqHRyZXMgcmVsYXRpZnMgw6AgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2
MDAyNiI+IkfDqW7DqXJhdXgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVf
Zm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlV0aWxpc2VyIEFOR0xF
IHBvdXIgdG91dGVzIGxlcyBhcHBsaWNhdGlvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1
NCI+IkFmZmljaGVyIHVuZSBib8OudGUgZGUgZGlhbG9ndWUgbG9yc3F1ZSBBTkdMRSBlc3QgY2hh
cmfDqSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3Rp
dGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlPDqWxlY3Rpb25uZXIgdW4gcGlsb3Rl
IE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4
ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYXBoaXNtZXMiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0
MzQxOTc4NjE5Nzk1NTgiPiJVdGlsaXNhdGlvbiBkZSBsXCdhcHBsaWNhdGlvbiBBTkdMRSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0i
MTY1MTgzNDU0MTQxOTg5MDYwMyI+IkF1Y3VuZSBhcHBsaWNhdGlvbiBkaXNwb25pYmxlIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9
IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBdWN1bmUgYXBwbGljYXRpb24gaW5zdGFsbMOpZSBuZSBw
ZXV0IHV0aWxpc2VyIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1nbC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWdsL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
OTc3YjE0MzIzYmRkN2M1MzQzZmEzYmJjZTU3NTI5NzQzOTEzZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1nbC9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAg
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRy
b2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1s
bnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1
Ij4iUHJlZmVyZW5jaWFzIGRlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNb2Rp
ZmljYSBhIGNvbmZpZ3VyYWNpw7NuIGRlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJYZXJh
bCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1z
Z2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iVXRpbGl6YXIgQU5HTEUgcGFyYSB0b2RhcyBhcyBh
cGxpY2FjacOzbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ik1vc3RyYXIgY2FpeGEg
ZGUgZGnDoWxvZ28gY2FuZG8gc2UgY2FyZ3VlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2
MzA0Ij4iU2VsZWNjaW9uYXIgY29udHJvbGFkb3IgZGUgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUs
IG9wZW5nbCwgZ3LDoWZpY29zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5f
dXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iVXNhbmRvIEFO
R0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUi
IG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTm9uIGhhaSBuaW5ndW5oYSBhcGxpY2FjacOz
biBkaXNwb8OxaWJsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTm9uIGhheSBuaW5ndW5o
YSBhcGxpY2FjacOzbiBpbnN0YWxhZGEgcXVlIHBvaWRhIHV0aWxpemFyIEFOR0xFIjwvc3RyaW5n
PgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ndS9zdHJpbmdzLnhtbCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LWd1L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2YjczYzczZDhhYTAyNzZmOWUxZjhjYzdkOWQ5
MjhkOWUwNzg3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ndS9zdHJpbmdzLnhtbApAQCAt
MCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEt
LSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisK
KyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lk
LmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0
Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5j
ZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEXgqqjgq4Ag4Kqq4Kq44KqC4Kqm
4KqX4KuA4KqTIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNf
c3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMReCqqOCqviDgqrjgq4fg
qp/gqr/gqoLgqpfgqq7gqr7gqoIg4Kqr4KuH4Kqw4Kqr4Kq+4KqwIOCqleCqsOCriyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3
NjE3MTgzMzYwMDI2Ij4i4Kq44Kq+4Kqu4Kq+4Kqo4KuN4KqvIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2
OTQiPiLgqqzgqqfgq4Ag4KqN4KqqIOCqruCqvuCqn+CrhyBBTkdMReCqqOCriyDgqongqqrgqq/g
q4vgqpcg4KqV4Kqw4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9p
bl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLgqpzgq43gqq/g
qr7gqrDgq4cgQU5HTEXgqqjgq4cg4Kqy4KuL4KqhIOCqleCqsOCqteCqvuCqruCqvuCqgiDgqobg
qrXgq4cg4Kqk4KuN4Kqv4Kq+4Kqw4KuHIOCquOCqguCqteCqvuCqpiDgqqzgq4ngqpXgq43gqrgg
4Kqs4Kqk4Kq+4Kq14KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5n
bF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdM4Kqo4Kq+
IOCqoeCrjeCqsOCqvuCqh+CqteCqsCDgqqrgqrjgqoLgqqYg4KqV4Kqw4KuLIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4i
YW5nbGUsIG9wZW5nbCwg4KqX4KuN4Kqw4Kq+4Kqr4Kq/4KqV4KuN4Kq4Ijwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0
MTk3ODYxOTc5NTU4Ij4iQU5HTEXgqqjgq4sg4KqJ4Kqq4Kqv4KuL4KqXIOCqleCqsOCqteCqvuCq
ruCqvuCqgiDgqobgqrXgq4Ag4Kqw4Kq54KuN4Kqv4KuLIOCqm+CrhyI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQx
OTg5MDYwMyI+IuCqleCri+CqiCDgqo3gqqog4KqJ4Kqq4Kqy4Kqs4KuN4KqnIOCqqOCqpeCrgCI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1z
Z2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEXgqqjgq4sg4KqJ4Kqq4Kqv4KuL4KqXIOCq
leCqsOCrgCDgqrbgqpXgq4cg4Kqk4KuH4Kq14KuAIOCqleCri+CqiCDgqo3gqqog4KqH4Kqo4KuN
4Kq44KuN4Kqf4KuJ4KqyIOCqleCqsOCrh+CqsuCrgCDgqqjgqqXgq4AiPC9zdHJpbmc+Cis8L3Jl
c291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaGkvc3Ry
aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNjMzI4ZmQzNzRhNjllYmE0YjZmOThkM2ZhMGI5ZGJkNjNm
NGFiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWhpL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAg
IENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAg
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgor
Cis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fw
ay9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZm
OmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNn
aWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDgpJXgpYAg4KSq4KWN4KSw4KS+4KSl4KSu
4KS/4KSV4KSk4KS+4KSP4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJl
ZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDgpJXg
pYAg4KS44KWH4KSf4KS/4KSC4KSXIOCkrOCkpuCksuClh+CkgiI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2
Ij4i4KS44KS+4KSu4KS+4KSo4KWN4KSvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNl
X2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLgpLjgpK3g
pYAg4KSQ4KSq4KWN4KSy4KS/4KSV4KWH4KS24KSoIOCkleClhyDgpLLgpL/gpI8gQU5HTEUg4KSV
4KS+IOCkh+CkuOCljeCkpOClh+CkruCkvuCksiDgpJXgpLDgpYfgpIIiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1
MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOCkleClhyDgpLLgpYvgpKEg4KS54KWL4KSo4KWHIOCkquCk
sCDgpKHgpL7gpK/gpLLgpYngpJcg4KSs4KWJ4KSV4KWN4KS4IOCkpuCkv+CkluCkvuCkj+CkgiI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBt
c2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDgpKHgpY3gpLDgpL7gpIfgpLXgpLAg
4KSa4KWB4KSo4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg4KSX4KWN4KSw4KS+4KSr
4KS84KS/4KSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0
X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUg4KSV4KS+IOCkh+Ck
uOCljeCkpOClh+CkruCkvuCksiDgpJXgpL/gpK/gpL4g4KSc4KS+IOCksOCkueCkviDgpLngpYgi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNn
aWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLgpJXgpYvgpIgg4KSQ4KSq4KWN4KSy4KS/4KSV4KWH
4KS24KSoIOCkieCkquCksuCkrOCljeCkpyDgpKjgpLngpYDgpIIg4KS54KWIIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4
Mjk1MjI2OTI0OTc1OTYiPiLgpIfgpILgpLjgpY3gpJ/gpYngpLIg4KSV4KS/4KSv4KS+IOCkl+Ck
r+CkviDgpJXgpYvgpIgg4KSQ4KSq4KWN4KSy4KS/4KSV4KWH4KS24KSoIEFOR0xFIOCkleCkviDg
pIfgpLjgpY3gpKTgpYfgpK7gpL7gpLIg4KSo4KS54KWA4KSCIOCkleCksCDgpLjgpJXgpKTgpL4i
PC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWhyL3N0cmluZ3MueG1s
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTUwMDM4ZDdmZTQyMDQyNzNjMTdi
MzY4NjI0MDJlZTQ4OWY0Y2NiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWhyL3N0cmluZ3Mu
eG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFz
LmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lz
Om5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9w
cmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQb3N0YXZrZSB6YSBBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnki
IG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iSXptaWplbml0ZSBwb3N0YXZrZSB6YSBBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lk
PSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iT3DEh2VuaXRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQi
PiJLb3Jpc3RpIEFOR0xFIHphIHN2ZSBhcGxpa2FjaWplIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYw
MDA3NTQiPiJQcmlrYcW+aSBkaWphbG/FoWtpIG9rdmlyIGthZCBzZSBBTkdMRSB1xI1pdGEiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNn
aWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPZGFiZXJpdGUgdXByYXZsamHEjWtpIHByb2dyYW0g
emEgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2
Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQz
NDE5Nzg2MTk3OTU1OCI+IlVwb3RyZWJsamF2YSBzZSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5
MDYwMyI+Ik5lbWEgZG9zdHVwbmloIGFwbGlrYWNpamEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5
NiI+Ik5pamVkbmEgaW5zdGFsaXJhbmEgYXBsaWthY2lqYSBuZSBtb8W+ZSB1cG90cmVibGphdmF0
aSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaHUvc3Ry
aW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGY1ZDFiMjEwNjEw
M2Q0MDZlM2RiMjY4Y2EwMjI3MzBhYjljZjFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaHUv
c3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDov
L3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1
cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFLWJl
w6FsbMOtdMOhc29rIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5j
ZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRS1iZcOhbGzDrXTD
oXNvayBtw7Nkb3PDrXTDoXNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2Vu
ZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLDgWx0YWzDoW5vcyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIy
NTYyNjc4MDQ0MDQxMjM5Njk0Ij4iQU5HTEUgaGFzem7DoWxhdGEgbWluZGVuIGFsa2FsbWF6w6Fz
bsOhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxv
Z19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iUMOhcmJlc3rDqWRwYW5lbCBtZWdq
ZWxlbsOtdMOpc2UgYXogQU5HTEUgYmV0w7ZsdMOpc2UgdXTDoW4iPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDEx
MzkzODYzMDQiPiJPcGVuR0wtaWxsZXN6dMWRcHJvZ3JhbSBraXbDoWxhc3p0w6FzYSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5
NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJB
eiBBTkdMRSBoYXN6bsOhbGF0w6F2YWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19h
cHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJOaW5jc2Vu
ZWsgcmVuZGVsa2V6w6lzcmUgw6FsbMOzIGFsa2FsbWF6w6Fzb2siPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5
MjQ5NzU5NiI+Ik5pbmNzIG9seWFuIGFsa2FsbWF6w6FzIHRlbGVww610dmUsIGFtZWx5IGvDqXBl
cyBsZW5uZSBoYXN6bsOhbG5pIGF6IEFOR0xFLXQiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWh5L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaHkvc3RyaW5ncy54bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWI2ODJhNmEzMDY3MjI1YjE4ZTI0M2U2MzY0MjE5YzQ4NDdhNWFiZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLWh5L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAy
MDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2Vz
IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9p
ZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEu
MiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5
NzQ3MTI2NjM4MjUiPiJBTkdMRS3VqyDVr9Wh1oDVo9Wh1b7VuNaA1bjWgtW01bbVpdaAIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9
IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLVk9W41a3VpdaEIEFOR0xFLdWrINWv1aHWgNWj1aHVvtW4
1oDVuNaC1bTVttWl1oDVqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVy
YWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i1LjVttWk1bDVodW21bjWgtaA
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNn
aWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLVldWj1b/VodWj1bjWgNWu1aXVrCBBTkdMRS3VqCDV
otW41azVuNaAINWw1aHVvtWl1azVvtWh1a7VttWl1oDVqyDVsNWh1bTVodaAIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0
NDMyNTA0MzQwMjYwMDA3NTQiPiLVkdW41oLVtdaBINW/1aHVrCDVpdaA1a/VrdW41b3VuNaC1anV
tdWh1bYg1brVodW/1bjWgtWw1aHVttWoLCDVpdaA1aIgQU5HTEUt1agg1aLVpdW81bbVvtW41oLV
tCDVpyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3Rp
dGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+ItS41bbVv9aA1aXWhCBPcGVuR0wg1b3V
odaA1oTVodW+1aHWgNWoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iQU5HTEUsIE9wZW5HTCwg1aPVrtWh1brVodW/1a/V
pdaA1bbVpdaAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0
X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i1ZXVo9W/1aHVo9W41oDVrtW+
1bjWgtW0INWnIEFOR0xFINWw1aHVvtWl1azVvtWh1a7VqCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYw
MyI+ItWA1aHVvdWh1bbVpdWs1asg1bDVodW+1aXVrNW+1aHVrtW21aXWgCDVudWv1aHVtiI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lk
PSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i1Y/VpdWy1aHVpNaA1b7VodWuINWw1aHVvtWl1azVvtWh
1a7VttWl1oDVq9aBINW41bkg1bTVpdWv1agg1bnVqyDVodW71aHVr9aB1bjWgtW0IEFOR0xFLdWo
OiI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaW4vc3RyaW5ncy54
bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGQ3YjJjNWVmYTM5OTZiY2Fi
ZDJlODMwMGVjM2E4ZGRjYTg3YTkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaW4vc3RyaW5n
cy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVt
YXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2Fz
aXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlByZWZlcmVuc2kgQU5H
TEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5
IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IlViYWggc2V0ZWxhbiBBTkdMRSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3
NjE3MTgzMzYwMDI2Ij4iVW11bSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmds
ZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iR3VuYWthbiBBTkdM
RSB1bnR1ayBzZW11YSBhcGxpa2FzaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iVGFt
cGlsa2FuIGtvdGFrIGRpYWxvZyBzYWF0IEFOR0xFIGRpbXVhdCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEz
OTM4NjMwNCI+IlBpbGloIERyaXZlciBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBn
cmFmaXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVz
c2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJNZW5nZ3VuYWthbiBBTkdMRSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0i
MTY1MTgzNDU0MTQxOTg5MDYwMyI+IlRpZGFrIGFkYSBhcGxpa2FzaSB5YW5nIHRlcnNlZGlhIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNn
aWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJUaWRhayBhZGEgYXBsaWthc2kgdGVyaW5zdGFsIHlh
bmcgZGFwYXQgbWVuZ2d1bmFrYW4gQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWlzL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaXMvc3RyaW5ncy54bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2ZjZTdmZWQ2NjNmZjAxNTY2MDUzNzQ0NjdiZDQwNzkyN2QxYTkxOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWlzL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
ICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHht
bG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIK
KyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3
MTI2NjM4MjUiPiJLasO2cnN0aWxsaW5nYXIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0
NSI+IkJyZXl0YSBzdGlsbGluZ3VtIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJBbG1lbm50
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNn
aWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJOb3RhIEFOR0xFIGZ5cmlyIMO2bGwgZm9ycml0Ijwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIg
bXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJTw71uYSBnbHVnZ2Egw75lZ2FyIEFOR0xFIGVy
IGhsYcOwacOwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2
ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BuYSBPcGVuR0wtcmVraWwi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgw
NjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmw61rIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5
NTU4Ij4iTm90YXIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJFbmdpbiBmb3JyaXQg
dGlsdMOmayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1
bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iRW5naW4gdXBwc2V0dCBnZXRhIG5v
dGHDsCBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaXQv
c3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2U4YmMwNzMw
NTkyOTE2ZjA3NjcwMjZjNDkwNjg3OWRjOGIxYzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
aXQvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv
ZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0
cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZm
PSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5h
bWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlByZWZl
cmVuemUgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
c19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ik1vZGlmaWNhIGxlIGltcG9z
dGF6aW9uaSBkaSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVy
YWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR2VuZXJhbGkiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3
ODA0NDA0MTIzOTY5NCI+IlVzYSBBTkdMRSBwZXIgdHV0dGUgbGUgYXBwIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMy
NTA0MzQwMjYwMDA3NTQiPiJNb3N0cmEgZmluZXN0cmEgZGkgZGlhbG9nbyBkb3BvIGlsIGNhcmlj
YW1lbnRvIGRpIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5n
bF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2VsZXppb25hIGRy
aXZlciBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9
IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWNhIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5
NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUgaW4gdXNvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i
TmVzc3VuYSBhcHAgZGlzcG9uaWJpbGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19h
cHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik5lc3N1
bmEgYXBwIGluc3RhbGxhdGEgcHXDsiB1dGlsaXp6YXJlIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNv
dXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWl3L3N0cmlu
Z3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEzMTRjMzU0MDUyNWY3NDZjNjQ0MDNmNGJjY2Y2ZTNhMTAyZjgz
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pdy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMw
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBD
b3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
CisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAg
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKwor
PHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsv
cmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpk
b2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lk
PSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4i15TXoteT16TXldeqINep15wgQU5HTEUiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3
MjA2MjExNDc5NzA2NzU0NSI+Itep15nXoNeV15kg16nXnCDXlNeS15PXqNeV16ogQU5HTEUiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1
MTM5NzYxNzE4MzM2MDAyNiI+Iteb15zXnNeZIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
dXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLXlNek
16LXnNeUINep15wgQU5HTEUg15zXm9ecINeU15DXpNec15nXp9em15nXldeqIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0
NDMyNTA0MzQwMjYwMDA3NTQiPiLXlNem15LXqiDXqteZ15HXqiDXk9eVLdep15nXlyDXm9epLUFO
R0xFINeg15jXotefIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9k
cml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i15HXl9eZ16jXqiDXnteg
15TXnCDXlNeU16rXp9efINecLU9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imtl
eXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLOKAjyBvcGVuZ2wsINeS
16jXpNeZ16fXlCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2Fz
dF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IteR15DXntem16LXldeqIEFO
R0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUi
IG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i15DXmdefINeQ16TXnNeZ16fXpteZ15XXqiDX
ltee15nXoNeV16oiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxl
ZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IteQ15nXnyDXkNek15zXmden
16bXmdeV16og157Xldeq16fXoNeV16og16nXmdeb15XXnNeV16og15zXlNep16rXntepINeRLUFO
R0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1qYS9zdHJpbmdz
LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzOWEwNTJmNjZiMDUyMmQ3
NjA3YzViZWY4YzljNmI2ZTFiZjZhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1qYS9zdHJp
bmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2No
ZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpv
YXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg44Gu6Kit
5a6aIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFy
eSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDjga7oqK3lrprjgpLlpInmm7Qi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0i
Mzg1MTM5NzYxNzE4MzM2MDAyNiI+IuWFqOiIrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i44GZ
44G544Gm44Gu44Ki44OX44Oq44GnIEFOR0xFIOOCkuS9v+eUqCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0
MDI2MDAwNzU0Ij4iQU5HTEUg44Gu6Kqt44G/6L6844G/5pmC44Gr44OA44Kk44Ki44Ot44KwIOOD
nOODg+OCr+OCueOCkuihqOekuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9v
cGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDj
g4njg6njgqTjg5Djga7pgbjmip4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3Jk
cyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDjgrDjg6njg5Xj
gqPjg4Pjgq/jgrkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDjgpLkvb/nlKjj
gZfjgabjgYTjgb7jgZkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLkvb/nlKjjgafjgY3jgovj
gqLjg5fjg6rjgYzjgYLjgorjgb7jgZvjgpMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFO
R0xFIOOCkuS9v+eUqOOBp+OBjeOCi+OCouODl+ODquOBjOOCpOODs+OCueODiOODvOODq+OBleOC
jOOBpuOBhOOBvuOBm+OCkyI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMta2Evc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rYS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTQ4
NWM0MTQ3YmM1NGEzYWViYzJiN2JhOGFhYmIzMjFmNTM1YWQwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMta2Evc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBM
aWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNl
IHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlv
dSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3
LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBk
aXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMi
IEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhl
IHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0
aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9p
ZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5z
OnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+
IkFOR0xFLeGDmOGDoSDhg57hg5Dhg6Dhg5Dhg5vhg5Thg6Lhg6Dhg5Thg5Hhg5giPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3
MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFLeGDmOGDoSDhg57hg5Dhg6Dhg5Dhg5vhg5Thg6Lhg6Dh
g5Thg5Hhg5jhg6Eg4YOo4YOU4YOq4YOV4YOa4YOQIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLhg5bh
g53hg5Lhg5Dhg5Phg5giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IkFOR0xFLeGDmOGDoSDhg5Lh
g5Dhg5vhg53hg6fhg5Thg5zhg5Thg5Hhg5Ag4YOn4YOV4YOU4YOa4YOQIOGDkOGDnuGDmOGDoeGD
l+GDleGDmOGDoSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNl
X2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i4YOT4YOY4YOQ4YOa4YOd
4YOS4YOY4YOhIOGDpOGDkOGDnOGDr+GDoOGDmOGDoSDhg6nhg5Xhg5Thg5zhg5Thg5Hhg5AgQU5H
TEUt4YOY4YOhIOGDqeGDkOGDouGDleGDmOGDoOGDl+GDleGDmOGDoeGDkOGDoSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3
NDIyMDc0MTEzOTM4NjMwNCI+IuGDkOGDmOGDoOGDqeGDmOGDlOGDlyBPcGVuR0wg4YOT4YOg4YOQ
4YOY4YOV4YOU4YOg4YOYIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg4YOS4YOg4YOQ4YOk4YOY
4YOZ4YOQIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21l
c3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i4YOS4YOQ4YOb4YOd4YOY4YOn4YOU
4YOc4YOU4YOR4YOQIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4YOu4YOU4YOa4YOb
4YOY4YOh4YOQ4YOs4YOV4YOT4YOd4YOb4YOYIOGDkOGDnuGDlOGDkeGDmCDhg5Dhg6Ag4YOQ4YOg
4YOY4YOhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3Vt
bWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLhg5Dhg57hg5Thg5Hhg5gsIOGDoOGD
neGDm+GDmuGDlOGDkeGDoeGDkOGDqiDhg6jhg5Thg6Phg6vhg5rhg5jhg5Dhg5cg4YOS4YOQ4YOb
4YOd4YOY4YOn4YOU4YOc4YOd4YOcIEFOR0xFLCDhg5Phg5Dhg6fhg5Thg5zhg5Thg5Hhg6Phg5rh
g5gg4YOQ4YOgIOGDkOGDoOGDmOGDoSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMta2svc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ray9zdHJpbmdzLnhtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUwYTYwOTU2ZjBjOTAzZTk1OTQxM2RjOTg4MzY1Y2U2OWQ0NjkzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMta2svc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6
YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAg
IHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2
MzgyNSI+IkFOR0xFINC/0LDRgNCw0LzQtdGC0YDQu9C10YDRliI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3
MDY3NTQ1Ij4iQU5HTEUg0L/QsNGA0LDQvNC10YLRgNC70LXRgNGW0L0g06nQt9Cz0LXRgNGC0YMi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0i
Mzg1MTM5NzYxNzE4MzM2MDAyNiI+ItCW0LDQu9C/0YsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+
ItCR0LDRgNC70YvSmyDSm9C+0LvQtNCw0L3QsdCw0LvQsNGA0pPQsCBBTkdMRSDQv9Cw0LnQtNCw
0LvQsNC90YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9k
aWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFINC20q/QutGC0LXQ
u9Cz0LXQvSDQutC10LfQtNC1LCDQtNC40LDQu9C+0LPRgtGW0Log0YLQtdGA0LXQt9C10L3RliDQ
utOp0YDRgdC10YLRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xf
ZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDQtNGA0LDQ
udCy0LXRgNGW0L0g0YLQsNKj0LTQsNGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5
d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg0LPRgNCw
0YTQuNC60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3Rf
bWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDSm9C+0LvQtNCw0L3Q
sdCw0YHRi9C9INC/0LDQudC00LDQu9Cw0L3RgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+ItKa
0L7Qu9C20YLQtdC80LTRliDSm9C+0LvQtNCw0L3QsdCw0LvQsNGAINC20L7SmyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIy
ODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUg0L/QsNC50LTQsNC70LDQvdCw0YLRi9C9INC10YjSm9Cw
0L3QtNCw0Lkg0pvQvtC70LTQsNC90LHQsNC70LDRgCDQvtGA0L3QsNGC0YvQu9C80LDQtNGLLiI8
L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta20vc3RyaW5ncy54bWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1rbS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTBhMTkwN2E5NmMzNjg4ZjY1ODlk
NzY1YzM0M2RlM2FiNWFlZjQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta20vc3RyaW5ncy54
bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMu
YW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6
bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IuGeheGfhuGejuGevOGem+KA
i+GeheGet+Gej+GfkuGejyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i4Z6A4Z+C
4oCL4Z6A4Z624Z6a4Z6A4Z+G4Z6O4Z6P4Z+LIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLh
npHhnrzhnpHhn4UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2Fs
bF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuGelOGfkuGemuGeviBBTkdMRSDh
np/hnpjhn5LhnprhnrbhnpThn4vigIvhnoDhnpjhn5LhnpjhnpzhnrfhnpLhnrjigIvhnpHhnrbh
n4bhnoThnqLhnp/hn4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IuGelOGehOGfkuGe
oOGetuGeieKAi+GelOGfkuGemuGeouGelOGfi+GelOGeieGfkuGeheGevOGem+KAi+Gek+GfheGe
luGfgeGem+KAi+GeleGfkuGekeGeu+GegCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMw
NCI+IuGeh+GfkuGemuGevuGen+GemuGevuGen+KAi+GeiuGfkuGemuGetuGemeGenOGeviBPcGVu
R0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1
NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDhnoDhn5LhnprhnrbhnqDhn5LhnpzhnrfhnoAi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIg
bXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLhnoDhn4bhnpbhnrvhnoThnpThn5Lhnprhnr4g
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRs
ZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLhnpjhnrfhnpPhnpjhnrbhnpPigIvhnoDh
npjhn5LhnpjhnpzhnrfhnpLhnrjigIvhnqLhnrbhnoXhnpThn5Lhnprhnr7hnpThnrbhnpPhnpHh
n4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5
IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IuGeguGfkuGemOGetuGek+GegOGemOGfkuGe
mOGenOGet+GekuGeuOKAi+GeiuGfguGem+GelOGetuGek+GeiuGfhuGeoeGevuGehCDhnorhn4Lh
npvhnqLhnrbhnoXhnpThn5Lhnprhnr4gQU5HTEUg4Z6U4Z624Z6T4Z6R4Z+BIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rbi9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWtu
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4OGQ1MDU0MDhiNzVlZmFhYWZiODU2NzkzZDZmNjQ2
OWQ0ZWNiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rbi9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg4LKG4LKm4LON4LKv4LKk4LOG4LKX
4LKz4LOBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDgsrjgs4bgsp/gs43gsp/g
sr/gsoLgspfgs43igIzgspfgsrPgsqjgs43gsqjgs4Eg4LKu4LK+4LKw4LON4LKq4LKh4LK/4LK4
4LK/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNn
aWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLgsrjgsr7gsq7gsr7gsqjgs43gsq8iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3
ODA0NDA0MTIzOTY5NCI+IuCyjuCysuCzjeCysuCyviDgsobgs43gsq/gsqrgs43igIzgspfgsrPg
sr/gspfgsr7gspfgsr8gQU5HTEUg4LKF4LKo4LON4LKo4LOBIOCyrOCys+CyuOCyvyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lk
PSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg4LKy4LOL4LKh4LONIOCyhuCyl+Cyv+CysOCz
geCyteCyvuCylyDgsqHgs4jgsrLgsr7gspfgs40g4LKs4LK+4LKV4LON4LK44LONIOCyheCyqOCz
jeCyqOCzgSDgsqTgs4vgsrDgsr/gsrjgsr8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJz
ZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJP
cGVuR0wg4LKh4LON4LKw4LOI4LK14LKw4LON4oCMIOCyheCyqOCzjeCyqOCzgSDgsobgsq/gs43g
spXgs4bgsq7gsr7gsqHgsr8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIg
bXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDgspfgs43gsrDgsr7g
sqvgsr/gspXgs43gsrjgs40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91
c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDgsoXg
sqjgs43gsqjgs4Eg4LKs4LKz4LK44LKy4LK+4LKX4LOB4LKk4LON4LKk4LK/4LKm4LOGIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIx
NjUxODM0NTQxNDE5ODkwNjAzIj4i4LKv4LK+4LK14LOB4LKm4LOHIOCyhuCzjeCyr+CyquCzjeKA
jOCyl+Cys+CzgSDgsrLgsq3gs43gsq/gsrXgsr/gsrLgs43gsrIiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5
MjQ5NzU5NiI+IuCyr+CyvuCyteCzgeCypuCzhyDgsobgs43gsq/gsqrgs43igIzgspfgsrPgsqjg
s43gsqjgs4Eg4LKH4LKo4LON4oCM4LK44LON4LKf4LK+4LKy4LONIOCyruCyvuCyoeCysuCyvuCy
l+Cyv+CysuCzjeCysiwgQU5HTEUg4LKs4LKz4LK44LKs4LK54LOB4LKm4LK+4LKX4LK/4LKm4LOG
Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rby9zdHJpbmdzLnht
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwOWExNTI3NGJhOGI0NDA2NjMz
NDdlZTRiY2VhOGMzNzE0NWE1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rby9zdHJpbmdz
LnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1h
cy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNp
czpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg7ZmY6rK97ISk
7KCVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFy
eSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDshKTsoJUg7IiY7KCVIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEz
OTc2MTcxODMzNjAwMjYiPiLsnbzrsJgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2Vf
YW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuuqqOuToCDs
lbHsl5AgQU5HTEUg7IKs7JqpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmds
ZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMReyd
tCDroZzrk5zrkJjrqbQg64yA7ZmU7IOB7J6QIO2RnOyLnCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4
NjMwNCI+Ik9wZW5HTCDrk5zrnbzsnbTrsoQg7ISg7YOdIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5n
bCwg6re4656Y7ZS9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3Rv
YXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEXsnYQg7IKs7Jqp
IOykkeyeheuLiOuLpC4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLsgqzsmqkg6rCA64ql7ZWc
IOyVseydtCDsl4bsnYwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xF7J2EIOyCrOya
qe2VoCDsiJgg7J6I64qUIOyVseydtCDshKTsuZjrkJjslrQg7J6I7KeAIOyViuyKteuLiOuLpC4i
PC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWt5L3N0cmluZ3MueG1s
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMta3kvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU4MmNhNTdlMmJjMDMzYjk3NWJi
ZTFiYjc1MTBiZjNiYTc5YmM1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWt5L3N0cmluZ3Mu
eG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFz
LmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lz
Om5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9w
cmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDQv9Cw0YDQsNC8
0LXRgtGA0LvQtdGA0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJl
bmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFINC206nQvdC0
06nTqdC706nRgNKv0L0g06nQt9Cz06nRgNGC0q/SryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i0JbQ
sNC70L/RiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2Fw
cHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i0JHQsNGA0LTRi9C6INC60L7Qu9C00L7Q
vdC80L7Qu9C+0YDQtNC+IEFOR0xFINC60L7Qu9C00L7QvdGD0LvRgdGD0L0iPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0
MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFINC20q/QutGC06nQu9Cz06nQvdC006ksINC00LjQsNC7
0L7QsyDQutGD0YLRg9GB0YMg0LrTqdGA0YHTqdGC0q/Qu9GB0q/QvSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0
MTEzOTM4NjMwNCI+Ik9wZW5HTCDQtNGA0LDQudCy0LXRgNC40L0g0YLQsNC90LTQvtC+Ijwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYx
Mzk1Ij4iYW5nbGUsIG9wZW5nbCwg0LPRgNCw0YTQuNC60LAiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5
Nzk1NTgiPiJBTkdMRSDQutC+0LvQtNC+0L3Rg9C70YPRg9C00LAiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4
OTA2MDMiPiLQltC10YLQutC40LvQuNC60YLSr9KvINC60L7Qu9C00L7QvdC80L7Qu9C+0YAg0LbQ
vtC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFy
eSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBTkdMRVwn0LTQuCDQv9Cw0LnQtNCw0LvQ
sNC90LAg0YLRg9GA0LPQsNC9INCx0LjRgCDQtNCwINC60L7Qu9C00L7QvdC80L4g0L7RgNC90L7R
gtGD0LvQs9Cw0L0g0LbQvtC6Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1sby9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWxvL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3
ZGQ3ZDNmMWM2ZTkzMmFmZDkzY2M3MWQ4MzdkZTgxNmQ0ZjZjZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1sby9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAg
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRy
b2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1s
bnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1
Ij4i4LqB4Lqy4LqZ4LqV4Lqx4LuJ4LqH4LqE4LuI4LqyIEFOR0xFIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3
OTcwNjc1NDUiPiLgu4HguoHgu4ngu4TguoLguoHgurLgupngupXgurHgu4nguofguoTgu4jgurIg
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuC6l+C6u+C7iOC6p+C7hOC6myI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4
MDQ0MDQxMjM5Njk0Ij4i4LuD4LqK4LuJIEFOR0xFIOC6quC6s+C6peC6seC6muC6l+C6uOC6geC7
geC6reC6seC6miI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNl
X2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i4Lqq4Lqw4LuB4LqU4LqH
4LqB4LuI4Lqt4LqH4LqC4LuN4LuJ4LqE4Lqn4Lqy4Lqh4LuA4Lqh4Lq34LuI4Lqt4LuC4Lqr4Lq8
4LqUIEFOR0xFIOC7geC6peC7ieC6pyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVj
dF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IuC7gOC6
peC6t+C6reC6geC7hOC6lOC6o+C7gOC6p+C6tSBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3Bl
bmdsLCDguoHguqPgurLguprgup/gurTguoEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLg
uoHgurPguqXgurHguofgu4Pguorgu4kgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLg
uprgu43gu4jguqHgurXgu4Hguq3gurHguprgupfgurXgu4jgu4Pguorgu4ngu4TgupTgu4kiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dp
ZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IuC6muC7jeC7iOC6oeC6teC7geC6reC6seC6muC6l+C6
teC7iOC6leC6tOC6lOC6leC6seC7ieC6h+C7hOC6p+C7iSDguqrgurLguqHgurLgupTgu4Pguorg
u4kgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWx0L3N0
cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk4MGViNjQwMTZj
NTJhOTkwMTQ2ZDZlNTMyM2Y4MjNmNjVkNDk3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWx0
L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6
Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0i
dXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSBu
dW9zdGF0b3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19z
dW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IktlaXN0aSBBTkdMRSBudXN0YXR5
bXVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNn
aWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJCZW5kcmllamkiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+Ik5hdWRvdGkgQU5HTEUgdmlzb3NlIHByb2dyYW1vc2UiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAy
NjAwMDc1NCI+IlJvZHl0aSBkaWFsb2dvIGxhbmfEhSwga2FpIEFOR0xFIMSva2VsdGEiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9
IjM0NzQyMjA3NDExMzkzODYzMDQiPiJQYXNpcmlua3RpIOKAnk9wZW5HTOKAnCB0dmFya3lrbMSZ
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3
OTU1OCI+Ik5hdWRvamFtYSBwcm9ncmFtYSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+
Ik7El3JhIGpva2nFsyBwYXNpZWtpYW3FsyBwcm9ncmFtxbMiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5
NzU5NiI+Ik7El3JhIGpva2nFsyDEr2RpZWd0xbMgcHJvZ3JhbcWzLCBnYWxpbsSNacWzIG5hdWRv
dGkgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWx2L3N0
cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZkZmZmN2NmZjE5
Y2YzYmQ0MjI5YWIzZDE2YmRhMmUyMTM5NTU4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWx2
L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6
Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0i
dXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSBw
cmVmZXJlbmNlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2Vz
X3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iUMSBcnZlaWRvamlldCBBTkdM
RSBpZXN0YXTEq2p1bXVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJh
bF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJWaXNwxIFyxKtnaSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4iSXptYW50b3QgQU5HTEUgdmlzxIFtIGxpZXRvdG7Ek20iPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dp
ZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlLEgWTEq3QgZGlhbG9nbG9kemnFhnUsIGllbMSBZMST
am90IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2
ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIGR6acWGYSBhdGxh
c2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1
NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWthIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYx
OTc5NTU4Ij4iSXptYW50b2pvdCBsaWV0b3RuaSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYw
MyI+Ik5hdiBwaWVlamFtYSBuZXZpZW5hIGxpZXRvdG5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1
OTYiPiJOYXYgaW5zdGFsxJN0YSBuZXZpZW5hIGxpZXRvdG5lLCBrYXMgdmFyIGl6bWFudG90IEFO
R0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tay9zdHJpbmdz
LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLW1rL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNmNmNjI4ZTU5NmJlNjY4
NTQxMzQ3ZDBjM2VlZTczYmZlNGI0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tay9zdHJp
bmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJV
VEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2No
ZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpv
YXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4i0J/QvtGB0YLQsNCy
0LrQuCDQt9CwIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVy
ZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLQmNC30LzQtdC90LXR
gtC1INCz0Lgg0L/QvtGB0YLQsNCy0LrQuNGC0LUg0LfQsCBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4i0J7Qv9GI0YLQviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9m
b3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i0JrQvtGA0LjRgdGC0Lgg
QU5HTEUg0LfQsCDRgdC40YLQtSDQsNC/0LvQuNC60LDRhtC40LgiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQz
NDAyNjAwMDc1NCI+ItCf0YDQuNC60LDQttGD0LLQsNGYINGA0LDQvNC60LAg0LfQsCDQtNC40ZjQ
sNC70L7QsyDQv9GA0Lgg0LLRh9C40YLRg9Cy0LDRmtC10YLQviDQvdCwIEFOR0xFIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIz
NDc0MjIwNzQxMTM5Mzg2MzA0Ij4i0JjQt9Cx0LXRgNC10YLQtSDQtNGA0LDRmNCy0LXRgCDQt9Cw
IE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4
ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsINCz0YDQsNGE0LjQutCwIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIy
MjU5NDM0MTk3ODYxOTc5NTU4Ij4i0KHQtSDQutC+0YDQuNGB0YLQuCBBTkdMRSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgz
NDU0MTQxOTg5MDYwMyI+ItCd0LXQvNCwINC00L7RgdGC0LDQv9C90Lgg0LDQv9C70LjQutCw0YbQ
uNC4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFy
eSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLQndC10LzQsCDQuNC90YHRgtCw0LvQuNGA
0LDQvdC4INCw0L/Qu9C40LrQsNGG0LjQuCDRiNGC0L4g0LzQvtC20LDRgiDQtNCwINC60L7RgNC4
0YHRgtCw0YIgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LW1sL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbWwvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I1MjRj
NWY5Y2IwNzRlMjY1YTAxZWUyMTk5MjRmMjI5M2JhZWJiNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFs
dWVzLW1sL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGlj
ZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3Ug
bWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5h
cGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBC
QVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBz
cGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9
Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4
bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLg
tIbgtILgtJfgtL/gtb4g4LSu4LWB4LW74LSX4LSj4LSo4LSV4LW+Ijwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3
OTcwNjc1NDUiPiLgtIbgtILgtJfgtL/gtb4g4LSV4LWN4LSw4LSu4LWA4LSV4LSw4LSj4LSCIOC0
quC0sOC0v+C0t+C1jeKAjOC0leC1jeC0leC0sOC0v+C0leC1jeC0leC1geC0lSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3
MTgzMzYwMDI2Ij4i4LSq4LWK4LSk4LWB4LS14LS+4LSv4LS1Ijwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2
OTQiPiLgtI7gtLLgtY3gtLLgtL4g4LSG4LSq4LWN4LSq4LWB4LSV4LW+4LSV4LWN4LSV4LWB4LSC
IOC0huC0guC0l+C0v+C1viDgtIngtKrgtK/gtYvgtJfgtL/gtJXgtY3gtJXgtYHgtJUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dp
ZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IuC0huC0guC0l+C0v+C1viDgtLLgtYvgtKHgtY0g4LSa
4LWG4LSv4LWN4oCM4LSk4LWNIOC0leC0tOC0v+C0r+C1geC0ruC1jeC0quC1i+C1viDgtKHgtK/g
tLLgtYvgtJfgtY0g4LSs4LWL4LSV4LWN4oCM4LS44LWNIOC0leC0vuC0o+C0v+C0leC1jeC0leC1
geC0lSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3Rp
dGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDgtKHgtY3gtLDgtYjgtLXg
tLDgtY3igI0g4LSk4LS/4LSw4LSe4LWN4LSe4LWG4LSf4LWB4LSV4LWN4LSV4LWB4LSVIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYx
Mzk1Ij4iYW5nbGUsIE9wZW5HTCwg4LSX4LWN4LSw4LS+4LSr4LS/4LSV4LWN4oCM4LS44LWNIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1z
Z2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUg4LSJ4LSq4LSv4LWL4LSX4LS/4LSV4LWN
4LSV4LWB4LSo4LWN4LSo4LWBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4LSy4LSt4LWN4LSv
4LSu4LS+4LSvIOC0huC0quC1jeC0quC1geC0leC0s+C1iuC0qOC1jeC0qOC1geC0ruC0v+C0suC1
jeC0siI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i4LSG4LSC4LSX4LS/4LW+IOC0ieC0quC0
r+C1i+C0l+C0v+C0leC1jeC0leC0vuC1uyDgtJXgtLTgtL/gtK/gtYHgtKjgtY3gtKgg4LSG4LSq
4LWN4LSq4LWB4LSV4LSz4LWK4LSo4LWN4LSo4LWB4LSCIOC0h+C1u+C0uOC1jeKAjOC0seC1jeC0
seC0vuC1viDgtJrgtYbgtK/gtY3igIzgtKTgtL/gtJ/gtY3gtJ/gtL/gtLLgtY3gtLIiPC9zdHJp
bmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1uL3N0cmluZ3MueG1sIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMtbW4vc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFkMTkyMzBkMzM0YWEyYTIyNWFlMmUzNzhi
NjRhYmQzNDU4ZDIxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1uL3N0cmluZ3MueG1sCkBA
IC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8
IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK
KworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRo
ZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdy
ZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdB
UlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1w
bGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2Uu
CisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJv
aWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVz
OnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJl
bmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRS3QvSDRgdC+0L3Qs9C+0LvR
giI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnki
IG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg0YLQvtGF0LjRgNCz0L7QvtCzINOp
06nRgNGH0LvTqdGFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90
aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLQldGA06nQvdGF0LjQuSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4iQU5HTEUt0LMg0LHSr9GFINCw0L/Qv9Cw0LQg0LDRiNC40LPQu9Cw
0YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2df
Ym94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFLdCzINCw0YfQsNCw0LvQsNGF
INKv0LXQtCDRhdCw0YDQuNC70YbQsNGFINGG0L7QvdGFINGF0LDRgNGD0YPQu9Cw0YUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9
IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg0LTRgNCw0LnQstC10YAg0YHQvtC90LPQvtGF
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhcGhpY3MiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5
Nzk1NTgiPiJBTkdMRS3QsyDQsNGI0LjQs9C70LDQtiDQsdCw0LnQvdCwIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQx
NDE5ODkwNjAzIj4i0JHQvtC70L7QvNC20YLQvtC5INCw0L/QvyDQsNC70LPQsCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIy
ODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUt0LMg0LDRiNC40LPQu9Cw0YUg0LHQvtC70L7QvNC20YLQ
vtC5INCw0L/QvyDRgdGD0YPQu9Cz0LDQsNCz0q/QuSDQsdCw0LnQvdCwIjwvc3RyaW5nPgorPC9y
ZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tci9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1yL3N0
cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyODdhMTYwZTljMGEyM2Y5MTQ0MzhmZmMxYjBhNTFiMTMw
OGJhODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tci9zdHJpbmdzLnhtbApAQCAtMCwwICsx
LDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAg
ICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
ICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4K
KworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9h
cGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlm
Zjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1z
Z2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg4KSq4KWN4KSw4KS+4KSn4KS+4KSo4KWN
4KSv4KWHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDgpLjgpYfgpJ/gpL/gpILg
pJfgpY3gpJzgpK7gpKfgpY3gpK/gpYcg4KS44KWB4KSn4KS+4KSw4KSj4KS+IOCkleCksOCkviI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIz
ODUxMzk3NjE3MTgzMzYwMDI2Ij4i4KS44KS+4KSn4KS+4KSw4KSjIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEy
Mzk2OTQiPiLgpLjgpLDgpY3gpLUg4KSF4oCN4KWF4KSq4KWN4KS44KS44KS+4KSg4KWAIEFOR0xF
IOCkteCkvuCkquCksOCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVf
aW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg4KSy
4KWL4KShIOCkneCkvuCksuCljeCkr+CkvuCkteCksCDgpKHgpL7gpK/gpLLgpYngpJcg4KSs4KWJ
4KSV4KWN4KS4IOCkpuCkvuCkluCkteCkviI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNl
bGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9w
ZW5HTCDgpKHgpY3gpLDgpL7gpK/gpLXgpY3gpLngpLAg4KSo4KS/4KS14KSh4KS+Ijwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1
Ij4iYW5nbGUsIG9wZW5nbCwg4KSX4KWN4KSw4KS+4KSr4KS/4KSV4KWN4KS4Ijwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5
NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUg4KS14KS+4KSq4KSw4KSkIOCkhuCkueClhyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+IuCkleCli+Cko+CkpOClh+CkueClgCDgpIXigI3gpYXgpKrgpY3g
pLgg4KSJ4KSq4KSy4KSs4KWN4KSnIOCkqOCkvuCkueClgOCkpCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjky
NDk3NTk2Ij4i4KSF4KSB4KSX4KSyIOCkteCkvuCkquCksOClgiDgpLbgpJXgpKPgpL7gpLDgpYcg
4KSF4oCN4KWF4KSq4KWN4KS4IOCkh+CkguCkuOCljeCkn+ClieCksiDgpJXgpYfgpLLgpYfgpLLg
pYcg4KSo4KS+4KS54KWA4KSkIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1tcy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1zL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRm
ODI4NGRiMDM2NzM1Yjc2NzU3Yjc2YjVlNzkyMzY0OTE5OWI5MDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1tcy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAg
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRy
b2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1s
bnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1
Ij4iUGlsaWhhbiBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iVWJhaCBzdWFpIHRl
dGFwYW4gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3Rp
dGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IlVtdW0iPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIz
OTY5NCI+Ikd1bmFrYW4gQU5HTEUgdW50dWsgc2VtdWEgYXBsIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQw
MjYwMDA3NTQiPiJUdW5qdWtrYW4ga290YWsgZGlhbG9nIGFwYWJpbGEgQU5HTEUgZGltdWF0a2Fu
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUi
IG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iUGlsaWggUGVtYWN1IE9wZW5HTCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5
NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+Ik1l
bmdndW5ha2FuIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iVGlhZGEgYXBsIHlhbmcg
dGVyc2VkaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9z
dW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IlRpYWRhIGFwbCB0ZXJwYXNhbmcg
eWFuZyBkYXBhdCBtZW5nZ3VuYWthbiBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3Jlcy92YWx1ZXMtbXkvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1teS9zdHJpbmdzLnhtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xY2IwM2VkODA5MmI4YjI4OTI2NjM0MTExZDIwZWRjZmZhZTMxZGI0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtbXkvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIw
MTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMg
eG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lk
IgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4y
Ij4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3
NDcxMjY2MzgyNSI+IkFOR0xFIOGAnuGAkOGAuuGAmeGAvuGAkOGAuuGAgeGAu+GAgOGAuuGAmeGA
u+GArOGAuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1
bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg4YCG4YCA4YC64YCQ4YCE
4YC64YCZ4YC74YCs4YC4IOGAleGAvOGAlOGAuuGAleGAvOGAhOGAuuGAleGAseGAuOGAnuGAiuGA
uiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lk
PSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i4YCh4YCR4YC94YCx4YCR4YC94YCxIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2Nzgw
NDQwNDEyMzk2OTQiPiLhgKHhgIDhgLrhgJXhgLrhgKHhgKzhgLjhgJzhgK/hgLbhgLjhgKHhgJDh
gL3hgIDhgLogQU5HTEUg4YCe4YCv4YC24YC44YCb4YCU4YC6Ijwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQw
MjYwMDA3NTQiPiJBTkdMRSDhgJbhgL3hgIThgLfhgLrhgJHhgKzhgLjhgJ7hgIrhgLfhgLrhgKHh
gIHhgKsg4YCS4YCt4YCv4YCE4YC64YCa4YCs4YCc4YCx4YCs4YC34YCC4YC64YCh4YCA4YC94YCA
4YC64YCA4YCt4YCvIOGAleGAvOGAm+GAlOGAuiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+
Ik9wZW5HTCDhgJLhgJvhgK3hgK/hgIThgLrhgJfhgKwg4YCb4YC94YCx4YC44YCV4YCrIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYx
Mzk1Ij4iYW5nbGXhgYogb3Blbmds4YGKIOGAguGAm+GAleGAuuGAluGAheGAuuGAmeGAu+GArOGA
uCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdl
IiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOGAoeGArOGAuCDhgKHhgJ7hgK/h
gLbhgLjhgJXhgLzhgK/hgJThgLHhgJXhgKvhgJ7hgIrhgLrhgYsiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4
OTA2MDMiPiLhgJ7hgK/hgLbhgLjhgJThgK3hgK/hgIThgLrhgJ7hgLHhgKzhgKHhgIDhgLrhgJXh
gLog4YCZ4YCb4YC+4YCt4YCV4YCrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBw
c19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBTkdMRSDh
gIDhgK3hgK8g4YCe4YCv4YC24YC44YCU4YCt4YCv4YCE4YC64YCe4YCx4YCsIOGAoeGAgOGAuuGA
leGAuuGAkOGAheGAuuGAgeGAr+GAmeGAu+GAviDhgJHhgIrhgLfhgLrhgJ7hgL3hgIThgLrhgLjh
gJnhgJHhgKzhgLjhgJXhgKsiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFs
dWVzLW5iL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3
Yzk4M2VjYjhlMmJmNTgzNzJhNThiYmM3M2Y1YjAwZDJlOGE2OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLW5iL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRy
b2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJv
aWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxu
czp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUi
PiJBTkdMRS1pbm5zdGlsbGluZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJFbmRyZSBB
TkdMRS1pbm5zdGlsbGluZ2VyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2Vu
ZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJHZW5lcmVsdCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4iQnJ1ayBBTkdMRSBmb3IgYWxsZSBhcHBlciI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQz
MjUwNDM0MDI2MDAwNzU0Ij4iVmlzIGRpYWxvZ2Jva3MgbsOlciBBTkdMRSBlciBsYXN0ZXQgaW5u
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUi
IG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iVmVsZyBPcGVuR0wtZHJpdmVyIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1
Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+Ik1l
ZCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3Rp
dGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IkluZ2VuIHRpbGdqZW5nZWxpZ2UgYXBw
ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5
IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkluZ2VuIGFwcGVyIHNvbSBrYW4gYnJ1a2Ug
QU5HTEUsIGVyIGluc3RhbGxlcnQiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLW5lL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmUvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTQ0ODRkZWU0NDQ0ZTQ2NmJlZWRjOTkyZmQxZjMyMzAxMjVhMDJiNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLW5lL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBB
bmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAg
ICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisg
ICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFu
ZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4
bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4
MjUiPiJBTkdMRSDgpJXgpL4g4KSq4KWN4KSw4KS+4KSl4KSu4KS/4KSV4KSk4KS+4KS54KSw4KWC
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIg
bXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDgpJXgpL4g4KS44KWH4KSf4KS/4KSZ
4KS54KSw4KWCIOCkquCksOCkv+CkruCkvuCksOCljeCknOCkqCDgpJfgpLDgpY3gpKjgpYHgpLng
pYvgpLjgpY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuCkuOCkvuCkruCkvuCkqOCljeCkryI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIy
NTYyNjc4MDQ0MDQxMjM5Njk0Ij4i4KS44KSs4KWIIOCkheCkqOClgeCkquCljeCksOCkr+Cli+Ck
l+CkueCksOClguCkruCkviBBTkdMRSDgpKrgpY3gpLDgpK/gpYvgpJcg4KSX4KSw4KWN4KSo4KWB
4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSDgpLLgpYvg
pKEg4KSt4KSP4KSq4KSb4KS/IOCkuOCkguCkteCkvuCkpiDgpKzgpL7gpJXgpLgg4KSm4KWH4KSW
4KS+4KSJ4KSo4KWB4KS54KWL4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2Vs
ZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3Bl
bkdMIOCkoeCljeCksOCkvuCkh+CkreCksCDgpJrgpK/gpKgg4KSX4KSw4KWN4KSo4KWB4KS54KWL
4KS44KWNIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4
NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg4KSX4KWN4KSw4KS+4KSr4KS/4KSV4KWN
4KS4Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3Nh
Z2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUg4KSq4KWN4KSw4KSv4KWL4KSX
IOCkl+CksOCljeCkpuCliCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuCkleClgeCkqOCliCDg
pKrgpKjgpL8g4KSF4KSo4KWB4KSq4KWN4KSw4KSv4KWL4KSXIOCkieCkquCksuCkrOCljeCkpyDg
pJvgpYjgpKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9z
dW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xFIOCkquCljeCksOCkr+Cl
i+CklyDgpJfgpLDgpY3gpKgg4KS44KSV4KWN4KSo4KWHIOCkleClgeCkqOCliCDgpKrgpKjgpL8g
4KSF4KSo4KWB4KSq4KWN4KSw4KSv4KWL4KSXIOCkuOCljeCkpeCkvuCkquCkqOCkviDgpJfgpLDg
pL/gpI/gpJXgpYsg4KSb4KWI4KSoIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1ubC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZjQzODRmMTQxOWIyYzEyMGM3OGI4YWI0NjZiMmQwMzJiY2U2ODYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1ubC9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisg
ICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczph
bmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAg
eG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYz
ODI1Ij4iQU5HTEUtdm9vcmtldXJlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUt
aW5zdGVsbGluZ2VuIGFhbnBhc3NlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iQWxnZW1lZW4iPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0i
MjU2MjY3ODA0NDA0MTIzOTY5NCI+IkFOR0xFIGdlYnJ1aWtlbiB2b29yIGFsbGUgYXBwcyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1z
Z2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iRGlhbG9vZ3ZlbnN0ZXIgd2VlcmdldmVuIHdhbm5l
ZXIgQU5HTEUgaXMgZ2VsYWRlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9v
cGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTC1z
dHV1cnByb2dyYW1tYSBzZWxlY3RlcmVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5
d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhcGhp
Y3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2Fn
ZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSB3b3JkdCBnZWJydWlrdCI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0i
MTY1MTgzNDU0MTQxOTg5MDYwMyI+IkdlZW4gYmVzY2hpa2JhcmUgYXBwcyI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5
NTIyNjkyNDk3NTk2Ij4iRXIgemlqbiBnZWVuIGFwcHMgZ2XDr25zdGFsbGVlcmQgZGllIEFOR0xF
IGt1bm5lbiBnZWJydWlrZW4iPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFs
dWVzLW9yL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtb3Ivc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTll
YjcxYmU0ZjM3M2YwNTZhOTY1YzU1MzU2NzZjNzk1NTJkMzg0MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLW9yL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRy
b2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJv
aWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxu
czp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUi
PiJBTkdMRSDgrIXgrJfgrY3grLDgrL7grKfgrL/grJXgrL7grLAiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5
NzA2NzU0NSI+IkFOR0xFIOCsuOCth+Csn+Csv+CsguCsuOCtjSDgrKrgrLDgrL/grKzgrLDgrY3g
rKTgrY3grKTgrKgg4KyV4Kyw4Kyo4K2N4Kyk4K2BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLgrLjg
rL7grKfgrL7grLDgrKMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuCsuOCsruCsuOCtjeCspCDg
rIbgrKrgrY0g4Kyq4Ky+4KyH4KyBIEFOR0xFIOCsrOCtjeCtn+CsrOCsueCsvuCssCDgrJXgrLDg
rKjgrY3grKTgrYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOCssuCti+Cs
oeCtjSDgrLngrYfgrKzgrL4g4Kyq4Kyw4K2HIOCsoeCsvuCsj+CssuCsl+CtjeKAjSDgrKzgrJXg
rY3grLgg4Kym4K2H4KyW4Kyo4K2N4Kyk4K2BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
c2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i
T3BlbkdMIOCsoeCtjeCssOCsvuCsh+CsreCssOCtjSDgrJrgrZ/grKgg4KyV4Kyw4Kyo4K2N4Kyk
4K2BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1
NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg4KyX4K2N4Kyw4Ky+4Kyr4Ky/4KyV4K2N4Ky4
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2Ui
IG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iVXNpbmcgQU5HTEUg4Kys4K2N4K2f4Kys4Ky5
4Ky+4KywIOCsleCssOCsvuCsr+CsvuCsieCsm+CsvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+
IuCsleCtjOCso+CsuOCsvyDgrIbgrKrgrY3grLgg4KyJ4Kyq4Kyy4Kys4K2N4KynIOCsqOCsvuCs
ueCsv+CsgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1
bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUg4Kys4K2N4K2f4Kys4Ky5
4Ky+4KywIOCsleCssOCsv+CsquCsvuCssOCsv+CsrOCsviDgrK3grLPgrL8g4KyV4K2M4Kyj4Ky4
4Ky/IOCshuCsquCtjeCsuCDgrIfgrKjgrY3igIzgrLfgrY3grJ/grLLgrY0g4Ky54K2L4KyH4Kyo
4Ky+4Ky54Ky/4KyBIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1w
YS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLXBhL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZWQ1MWY4
Mjk1Y2Y4ZTFjODU4Njk3MGY1ZjA4MGRhNDliZTA5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1wYS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJo
dHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxp
ZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5H
TEUg4Kik4Kiw4Kic4KmA4Ki54Ki+4KiCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdM
RSDgqLjgqYjgqJ/gqL/gqbDgqJfgqL7gqIIg4Ki44KmL4Kin4KmLIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAw
MjYiPiLgqLjgqKfgqL7gqLDgqKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5n
bGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuCouOCovuCosOCp
gOCohuCogiDgqJDgqKrgqL7gqIIg4Kiy4KiIIEFOR0xFIOCoteCosOCopOCpiyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg4Kim4KmHIOCosuCpi+CooSDgqLngqYvgqKMgXCfg
qKTgqYcg4Kih4Ki+4KiH4Kiy4KmM4KiXIOCorOCovuColeCouCDgqKbgqL/gqJbgqL7gqJMiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNn
aWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4Kih4Kiw4Ki+4KiI4Ki14KiwIOComuCp
geCoo+CpiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4
ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIOCol+CpjeCosOCovuCoq+Cov+ColSI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBt
c2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOCopuCpgCDgqLXgqLDgqKTgqYvgqIIg
4KiV4KmA4Kik4KmAIOConOCoviDgqLDgqLngqYAg4Ki54KmIIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4i4KiV4KmL4KiIIOCokOCoquCovuCogiDgqIngqKrgqLLgqKzgqKcg4Kio4Ki54KmA4KiC
IOCoueCoqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1
bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUg4Kim4KmAIOCoteCosOCo
pOCpi+CogiDgqJXgqLAg4Ki44KiV4KijIOCoteCovuCosuCpgOCohuCogiDgqJXgqYvgqIgg4KiQ
4Kiq4Ki+4KiCIOCouOCopeCovuCoquCopCDgqKjgqLngqYDgqIIg4Ki54KioIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXBs
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyM2EzNTdjNGFlODE1MWM4Mzc2ZWMwYmJiNDJhODM0
MGE5ZTk1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1wbC9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iVXN0YXdpZW5pYSBBTkdMRSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcy
MDYyMTE0Nzk3MDY3NTQ1Ij4iWm1pZcWEIHVzdGF3aWVuaWEgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2
MDAyNiI+Ik9nw7NsbmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlXFvHl3YWogQU5HTEUgZG8g
d3N6eXN0a2ljaCBhcGxpa2FjamkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2Fu
Z2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlBva2HF
vCBva25vIHBvIHdjenl0YW5pdSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNl
bGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ild5
Ymllcnogc3Rlcm93bmlrIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdv
cmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpa2Ei
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIg
bXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVxbx5d2FtIEFOR0xFIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQx
NDE5ODkwNjAzIj4iQnJhayBvZHBvd2llZG5pY2ggYXBsaWthY2ppIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2
OTI0OTc1OTYiPiJOaWUgemFpbnN0YWxvd2FubyBhcGxpa2FjamksIGt0w7NyZSBtb2fEhSB1xbx5
d2HEhyBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtcHQt
clBUL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtcHQtclBUL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMw
ZTUyNTJlZGIxMjlkNDM2ODcwZWU3MmFiZWMxZjJhN2RkOWNhZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6
YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAg
IHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2
MzgyNSI+IlByZWZlcsOqbmNpYXMgZG8gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+
Ik1vZGlmaWNhciBkZWZpbmnDp8O1ZXMgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkdlcmFs
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNn
aWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJVdGlsaXphciBvIEFOR0xFIHBhcmEgdG9kYXMgYXMg
YXBsaWNhw6fDtWVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJNb3N0cmFyIGEgY2Fp
eGEgZGUgZGnDoWxvZ28gcXVhbmRvIG8gQU5HTEUgw6kgY2FycmVnYWRvIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIw
NzQxMTM5Mzg2MzA0Ij4iU2VsZWNpb25lIG8gY29udHJvbGFkb3IgZG8gT3BlbkdMIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1
Ij4iYW5nbGUsIG9wZW5nbCwgZ3LDoWZpY29zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i
QSB1dGlsaXphciBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik5lbmh1bWEgYXBsaWNh
w6fDo28gZGlzcG9uw612ZWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik7Do28gZXhpc3Rl
bSBhcGxpY2HDp8O1ZXMgaW5zdGFsYWRhcyBxdWUgcG9zc2FtIHV0aWxpemFyIG8gQU5HTEUuIjwv
c3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnhtbCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLXB0L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYjQ3ZDY5MjJiNDExOTBlOTY2OGY2
ZmZhZWEwZjBhZDFmYzZjODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1wdC9zdHJpbmdzLnht
bApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9q
ZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNl
cy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9y
IGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9V
VCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9y
IGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNl
bnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5h
bmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpu
YW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJl
ZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyw6puY2lhcyBkbyBB
TkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1h
cnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpY2FyIGNvbmZpZ3VyYcOnw7Vl
cyBkbyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0
bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR2VyYWwiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIz
OTY5NCI+IlVzYXIgbyBBTkdMRSBwYXJhIHRvZG9zIG9zIGFwcHMiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQz
NDAyNjAwMDc1NCI+Ik1vc3RyYXIgY2FpeGEgZGUgZGnDoWxvZ28gZGVwb2lzIHF1ZSBvIEFOR0xF
IGZvciBjYXJyZWdhZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3Blbmds
X2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTZWxlY2lvbmFyIGRy
aXZlciBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9
IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncsOhZmljbyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+IlVzYW5kbyBvIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAz
Ij4iTmVuaHVtIGFwcCBkaXNwb27DrXZlbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5v
X2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmVu
aHVtIGRvcyBhcHBzIGluc3RhbGFkb3MgcG9kZSB1c2FyIG8gQU5HTEUiPC9zdHJpbmc+Cis8L3Jl
c291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtcm8vc3Ry
aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI2NzdhOTg1NjU5NzlmMjMxZGJhMDVlNGNhYWZjYmJkZDQx
M2E0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXJvL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAg
IENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAg
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgor
Cis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fw
ay9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZm
OmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNn
aWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQcmVmZXJpbsibZSBBTkdMRSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYy
MTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpY8SDIHNldMSDcmlsZSBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4iR2VuZXJhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3Jf
YWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iRm9sb3NlyJl0ZSBBTkdMRSBw
ZW50cnUgdG9hdGUgYXBsaWNhyJtpaWxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hv
d19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJB
ZmnImWVhesSDIGNhc2V0YSBkZSBkaWFsb2cgY8OibmQgQU5HTEUgZXN0ZSDDrm5jxINyY2F0Ijwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1z
Z2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2VsZWN0ZWF6xIMgZHJpdmVydWwgT3BlbkdMIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYw
NDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmljxIMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1
NTgiPiJGb2xvc2luZCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNf
aW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik51IGV4aXN0xIMg
YXBsaWNhyJtpaSBkaXNwb25pYmlsZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2Fw
cHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTnUgZXhp
c3TEgyBhcGxpY2HIm2lpIGluc3RhbGF0ZSBjYXJlIHBvdCBmb2xvc2kgQU5HTEUiPC9zdHJpbmc+
Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
cnUvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAwYzNkYTYxNTIxM2U1Njk5MjNiOWQ5YzVjYTFi
ZGY3YTdkMjNlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXJ1L3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLQndCw0YHRgtGA0L7QudC60LggQU5HTEUi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBt
c2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+ItCY0LfQvNC10L3QtdC90LjQtSDQvdCw0YHRgtGA
0L7QtdC6IEFOR0xFLiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxf
dGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i0J7QsdGJ0LjQtSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4
MDQ0MDQxMjM5Njk0Ij4i0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMIEFOR0xFINC00LvRjyDQstGB
0LXRhSDQv9GA0LjQu9C+0LbQtdC90LjQuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNo
b3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i
0J/QvtC60LDQt9GL0LLQsNGC0Ywg0LTQuNCw0LvQvtCz0L7QstC+0LUg0L7QutC90L4g0L/RgNC4
INC30LDQv9GD0YHQutC1IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0
X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i0JLRi9Cx
0LXRgNC40YLQtSDQtNGA0LDQudCy0LXRgCBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3Blbmds
LCDQs9GA0LDRhNC40LrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3Vz
ZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+ItCY0YHQv9C+0LvR
jNC30YPQtdGC0YHRjyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNf
aW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+ItCd0LXRgiDQtNC+
0YHRgtGD0L/QvdGL0YUg0L/RgNC40LvQvtC20LXQvdC40LkiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5
NzU5NiI+ItCd0Lgg0L7QtNC90L4g0LjQtyDRg9GB0YLQsNC90L7QstC70LXQvdC90YvRhSDQv9GA
0LjQu9C+0LbQtdC90LjQuSDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiBBTkdMRS4iPC9z
dHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNpL3N0cmluZ3MueG1sIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtc2kvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I2YzYxZjY2OWEwY2IxMjYyMGQzOTBi
Yjk0YzBmM2Y0MTQ1YjY2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNpL3N0cmluZ3MueG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFu
ZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5h
bWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDgtrjgtrHgt4/gtrQi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBt
c2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFIOC3g+C3kOC2muC3g+C3k+C2uOC3iiDg
t4Dgt5LgtprgtrvgtqvgtroiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5l
cmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuC2tOC3nOC2r+C3lCI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIy
NTYyNjc4MDQ0MDQxMjM5Njk0Ij4i4LeD4LeS4La64La94LeUIOC2uuC3meC2r+C3lOC2uOC3iiDg
t4PgtrPgt4Tgt48gQU5HTEUg4La34LeP4LeA4LeS4Lat4LePIOC2muC2u+C2seC3iuC2sSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1z
Z2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg4La04LeW4La74Lar4La6IOC3gOC3liDg
t4Dgt5Lgtqcg4LeD4LaC4LeA4LeP4LavIOC2muC3nOC2p+C3lOC3gCDgtrTgt5ngtrHgt4rgt4Dg
trHgt4rgtrEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZl
cl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4Law4LeP4LeA4Laa
4La6IOC2reC3neC2u+C2seC3iuC2sSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdv
cmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+IuC2muC3neC2q+C2uiwgb3BlbmdsLCDg
tqDgt5Lgtq3gt4rigI3gtrvgtpoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9p
bl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDg
trfgt4/gt4Dgt5Lgtq3gtroiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLgtr3gtrbgt48g4Lac
4LatIOC3hOC3kOC2muC3kiDgtrrgt5ngtq/gt5Tgtrjgt4og4Lax4Lec4La44LeQ4LatIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9
IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBTkdMRSDgtrfgt4/gt4Dgt5Lgtq0g4Laa4LeFIOC3hOC3
kOC2muC3kiDgtrrgt5ngtq/gt5Tgtrjgt4og4Laa4LeS4LeD4LeS4LeA4Laa4LeKIOC3g+C3iuC2
ruC3j+C2tOC2sSDgtprgtrsg4Lax4LeQ4LatIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNrL3N0cmluZ3MueG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlkNjg2Yjg5MjM5MGZkMDhmOWFhNDE3OWVmNjFiOTE1ODI5MTVhODkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1zay9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAx
OSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
ICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4
bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQi
CisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIi
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0
NzEyNjYzODI1Ij4iUHJlZHZvxL5ieSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i
VXByYXZpxaUgbmFzdGF2ZW5pYSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iVsWhZW9iZWNu
w6kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBt
c2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlBvdcW+w612YcWlIEFOR0xFIHByZSB2xaFldGt5
IGFwbGlrw6FjaWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlpvYnJhemnFpSBkaWFs
w7Nnb3bDqSBva25vIHByaSBuYcSNw610YW7DrSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4
NjMwNCI+IlZ5YmVydGUgb3Zsw6FkYcSNIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2ws
IGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3Rf
bWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJQb3XFvsOtdmEgc2EgQU5HTEUi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNn
aWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJOaWUgc8O6IGvCoGRpc3BvesOtY2lpIMW+aWFkbmUg
YXBsaWvDoWNpZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVk
X3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4ixb1pYWRuYSBuYWluxaF0YWxv
dmFuw6EgYXBsaWvDoWNpYSBuZWRva8Ohxb5lIHBvdcW+w612YcWlIEFOR0xFIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNs
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZmVhNjQ5ZTg2MjMyMDc1MTM3Y2MyZjZhOGY0NDNm
YzgxOTg5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zbC9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iTmFzdGF2aXR2ZSB6YSBBTkdMRSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIy
MDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iU3ByZW1pbmphbmplIG5hc3Rhdml0ZXYgemEgZ29uaWxuaWsg
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IlNwbG/FoW5vIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2
OTQiPiJVcG9yYWJpIEFOR0xFIHphIHZzZSBhcGxpa2FjaWplIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQw
MjYwMDA3NTQiPiJQb2thxb5pIHBvZ292b3JubyBva25vLCBrbyBzZSBuYWxvxb5pIGdvbmlsbmlr
IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJf
dGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iSXpiaXJhIGdvbmlsbmlrYSBPcGVu
R0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1
NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWthIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYx
OTc5NTU4Ij4iVXBvcmFibGphIHNlIGdvbmlsbmlrIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4iTmEgdm9sam8gbmkgbm9iZW5hIGFwbGlrYWNpamEiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5
NzU5NiI+Ik5hbWXFocSNZW5hIG5pIG5vYmVuYSBhcGxpa2FjaWphLCBraSBiaSBsYWhrbyB1cG9y
YWJsamFsYSBnb25pbG5payBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtc3Evc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zcS9zdHJpbmdzLnhtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZDUyZWZiMzY1MzkzYTU5MTZiZTQxN2NkZmRiMmM1NzU3NzgyMzc1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtc3Evc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFw
YWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBu
b3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgor
ICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRw
Oi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
KyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAi
QVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFO
WSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBm
b3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBs
aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6
YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAg
IHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2
MzgyNSI+IlByZWZlcmVuY2F0IGUgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ik1v
ZGlmaWtvIGNpbMOrc2ltZXQgZSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iVMOrIHDDq3Jn
aml0aHNobWUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9h
cHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlDDq3Jkb3IgQU5HTEUgcMOrciB0w6sg
Z2ppdGhhIGFwbGlrYWNpb25ldCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5n
bGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iU2hmYXEg
a3V0aW7DqyBlIGRpYWxvZ3V0IGt1ciBuZ2Fya29oZXQgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDEx
MzkzODYzMDQiPiJaZ2ppZGggZHJpdmVyLWluIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVu
Z2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJQbyBww6tyZG9yIEFOR0xF
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1z
Z2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTnVrIGthIGFzbmrDqyBhcGxpa2FjaW9uIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9
IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJOdWsga2EgYXNuasOrIGFwbGlrYWNpb24gdMOrIGluc3Rh
bHVhciBxw6sgbXVuZCB0w6sgcMOrcmRvcsOrIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNyL3N0cmluZ3MueG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ4YTdkNzRkMTg4NDUyOWU0NjdkZmZkZTU2NmIwMDI5ZTdiNGE5MmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zci9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmln
aHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAg
ICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisK
KyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291
cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2Fu
ZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVu
dDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3
NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg0L/QvtC00LXRiNCw0LLQsNGa0LAiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2
MjExNDc5NzA2NzU0NSI+ItCY0LfQvNC10L3QuNGC0LUgQU5HTEUg0L/QvtC00LXRiNCw0LLQsNGa
0LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dp
ZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+ItCe0L/RiNGC0LUiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+ItCa0L7RgNC40YHRgtC4IEFOR0xFINC30LAg0YHQstC1INCw0L/Qu9C40LrQsNGG0LjRmNC1
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2Jv
eCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLQn9GA0LjQutCw0LbQuCDQv9GA0L7Qt9C+
0YAg0LTQuNGY0LDQu9C+0LPQsCDQutCw0LTQsCDRgdC1IEFOR0xFINGD0YfQuNGC0LAiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9
IjM0NzQyMjA3NDExMzkzODYzMDQiPiLQmNC30LDQsdC10YDQuNGC0LUgT3BlbkdMINGD0L/RgNCw
0LLRmdCw0YfQutC4INC/0YDQvtCz0YDQsNC8Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
a2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg0LPR
gNCw0YTQuNC60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLQmtC+0YDQuNGB0YLQuCDR
gdC1IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRf
dGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i0J3QuNGY0LUg0LTQvtGB0YLRg9C/
0L3QsCDQvdC40ZjQtdC00L3QsCDQsNC/0LvQuNC60LDRhtC40ZjQsCI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIy
NjkyNDk3NTk2Ij4i0J3QuNGY0LUg0LjQvdGB0YLQsNC70LjRgNCw0L3QsCDQvdC40ZjQtdC00L3Q
sCDQsNC/0LvQuNC60LDRhtC40ZjQsCDQutC+0ZjQsCDQvNC+0LbQtSDQtNCwINC60L7RgNC40YHR
gtC4IEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zdi9z
dHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2YjA1ZDNjZmI2
N2ZjYmY5MDE5YmNlNDIxZjQ1NmQ3YzM5ODJlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1z
di9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRw
Oi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9
InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iSW5zdMOk
bGxuaW5nYXIgZsO2ciBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iw4RuZHJhIGlu
c3TDpGxsbmluZ2FyIGbDtnIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkFsbG3DpG50Ijwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9
IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJBbnbDpG5kIEFOR0xFIGbDtnIgYWxsYSBhcHBhciI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1z
Z2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iVmlzYSBlbiBkaWFsb2dydXRhIG7DpHIgQU5HTEUg
aGFyIGzDpHN0cyBpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xf
ZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlbDpGxqIGRyaXZydXRp
bmVuIGbDtnIgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIy
MjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUgYW52w6RuZHMiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2
MDMiPiJEZXQgZmlubnMgaW5nYSB0aWxsZ8OkbmdsaWdhIGFwcGFyIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2
OTI0OTc1OTYiPiJEZXQgZmlubnMgaW5nYSBpbnN0YWxsZXJhZGUgYXBwYXIgZMOkciBBTkdMRSBr
YW4gYW52w6RuZGFzIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1z
dy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiYWYwMDUw
NWRlODVmNjEwMGE3YjA3ODZhNzM0NTBmNjcyMmU0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1zdy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJo
dHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxp
ZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iTWFw
ZW5kZWxlbyB5YSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQmFkaWxpc2hhIG1p
cGFuZ2lsaW8geWEgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5l
cmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+Ikp1bWxhIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2Nzgw
NDQwNDEyMzk2OTQiPiJUdW1pYSBBTkdMRSBrYXRpa2EgcHJvZ3JhbXUgem90ZSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iT255ZXNoYSBraWRpcmlzaGEgY2hhIG1henVuZ3Vtem8gaW5h
cG9wYWtpYSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xf
ZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IkNoYWd1YSBLaWVuZGVz
aGFqaSBjaGEgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1z
Z2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgbWljaG9ybyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0i
MjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkluYXR1bWlhIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4iSGFrdW5hIHByb2dyYW11IHppbmF6b3BhdGlrYW5hIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0
OTc1OTYiPiJIYWt1bmEgcHJvZ3JhbXUgemlsaXpvc2FraW5pc2hhIHppbmF6b3dla2Ega3V0dW1p
YSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGEvc3Ry
aW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy10YS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE2ZWZlMjg1OTUw
NGYwYWMwODk1ZTA0MmI4MTBkZjhkZTcyYmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGEv
c3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDov
L3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1
cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIOCu
teCuv+CusOCvgeCuquCvjeCuquCupOCvjeCupOCvh+CusOCvjeCuteCvgeCuleCus+CvjSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lk
PSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg4K6F4K6u4K+I4K6q4K+N4K6q4K+B4K6V4K6z
4K+IIOCuruCuvuCuseCvjeCuseCvgeCuruCvjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i4K6q4K+K
4K6k4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBw
cyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLgroXgrqngr4jgrqTgr43grqTgr4Eg4K6G
4K6q4K+N4K644K6/4K6x4K+N4K6V4K+B4K6u4K+NIEFOR0xF4K6z4K+I4K6q4K+NIOCuquCur+Cu
qeCvjeCuquCun+CvgeCupOCvjeCupOCvgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNo
b3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i
QU5HTEUg4K6J4K6q4K6v4K+L4K6V4K6/4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+B4K6u4K+N4K6q
4K+L4K6k4K+BIOCuieCusOCviOCur+CuvuCun+CusuCvjSDgrqrgr4bgrp/gr43grp/grr/grq/g
r4jgrpXgr40g4K6V4K6+4K6f4K+N4K6f4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
c2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i
T3BlbkdMIOCun+Cuv+CusOCviOCuteCusOCviOCupOCvjSDgrqTgr4fgrrDgr43grqjgr43grqTg
r4bgrp/gr4HgrqTgr43grqTgrrLgr40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3
b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDgrpXgrr/g
rrDgrr7groPgrqrgrr/grpXgr43grrjgr40iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJB
TkdMRSDgrobgrqrgr43grrjgr4jgrqrgr40g4K6q4K6v4K6p4K+N4K6q4K6f4K+B4K6k4K+N4K6k
4K6q4K+N4K6q4K6f4K+B4K6V4K6/4K6x4K6k4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i
4K6G4K6q4K+N4K644K+NIOCujuCupOCvgeCuteCvgeCuruCvjSDgrofgrrLgr43grrLgr4giPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dp
ZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xF4K6z4K+I4K6q4K+NIOCuquCur+CuqeCvjeCu
quCun+CvgeCupOCvjeCupOCuleCvjeCuleCvguCun+Cuv+CuryDgro7grqjgr43grqQg4K6G4K6q
4K+N4K644K+B4K6u4K+NIOCuqOCuv+CuseCvgeCuteCuquCvjeCuquCun+CuteCuv+CusuCvjeCu
suCviCI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGUvc3RyaW5n
cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy10ZS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGMxZTRlMjYwMTQ3M2Ix
YzA5NmE1ZDE2ZjgxZmFjODNlYTIwY2JiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGUvc3Ry
aW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAg
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3Nj
aGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46
b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIOCwquCx
jeCwsOCwvuCwp+CwvuCwqOCxjeCwr+CwpOCwsuCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1
Ij4iQU5HTEUg4LC44LGG4LCf4LGN4LCf4LC/4LCC4LCX4LGN4oCM4LCy4LCo4LGBIOCwruCwvuCw
sOCxjeCwmuCwoeCwgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxf
dGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i4LC44LC+4LCn4LC+4LCw4LCj4LCC
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNn
aWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJBTkdMReCwqOCxgSDgsIXgsKjgsY3gsKjgsL8g4LCv
4LC+4LCq4LGN4oCM4LCyIOCwleCxi+CwuOCwgiDgsIngsKrgsK/gsYvgsJfgsL/gsILgsJrgsYEi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94
IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOCwsuCxi+CwoeCxjSDgsIXgsK/g
sL/gsKjgsKrgsY3gsKrgsYHgsKHgsYEg4LCTIOCwoeCxiOCwsuCwvuCwl+CxjSDgsKzgsL7gsJXg
sY3gsLjgsY0g4LCa4LGC4LCq4LC/4LCC4LCa4LGBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0
Ij4iT3BlbkdMIOCwoeCxjeCwsOCxiOCwteCwsOCxjeKAjOCwqOCxgSDgsI7gsILgsJrgsYHgsJXg
sYvgsILgsKHgsL8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9
IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJBTkdMRSwgT3BlbkdMLCDgsJfgsY3gsLDgsL7gsKvgsL/g
sJXgsY3gsLjgsY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMReCwqOCxgSDgsIng
sKrgsK/gsYvgsJfgsL/gsLjgsY3gsKTgsYvgsILgsKbgsL8iPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2
MDMiPiLgsIXgsILgsKbgsYHgsKzgsL7gsJ/gsYHgsLLgsYsg4LCJ4LCo4LGN4LCoIOCwr+CwvuCw
quCxjeKAjOCwsuCxgSDgsLLgsYfgsLXgsYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFO
R0xF4LCo4LGBIOCwieCwquCwr+Cxi+Cwl+Cwv+CwguCwmuCwl+CwsiDgsK/gsL7gsKrgsY3igIzg
sLLgsYEg4LCH4LCo4LGN4oCM4LC44LGN4LCf4LC+4LCy4LGNIOCwmuCxh+Cwr+CwrOCwoeCwsuCx
h+CwpuCxgSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGgvc3Ry
aW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGYwMTI1YTI1MjE4
ZGQwYTk2NTdhNmMzMGMwM2JmN2ZiMzUxNTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGgv
c3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDov
L3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1
cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IuC4hOC5iOC4
suC4geC4s+C4q+C4meC4lCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i4LmB4LiB
4LmJ4LmE4LiC4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIEFOR0xFIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcx
ODMzNjAwMjYiPiLguJfguLHguYjguKfguYTguJsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuC5
g+C4iuC5iSBBTkdMRSDguKrguLPguKvguKPguLHguJrguYHguK3guJvguJfguLHguYnguIfguKvg
uKHguJQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFs
b2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IuC5geC4quC4lOC4h+C4geC4peC5
iOC4reC4h+C5guC4leC5ieC4leC4reC4muC5gOC4oeC4t+C5iOC4rSBBTkdMRSDguYLguKvguKXg
uJQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRs
ZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiLguYDguKXguLfguK3guIHguYTguJTguKPg
uYDguKfguK3guKPguYwgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29y
ZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg4LiB4Lij4Liy
4Lif4Li04LiBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0
X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i4LiB4Liz4Lil4Lix4LiH4LmD
4LiK4LmJIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4LmE4Lih4LmI4Lih4Li14LmB
4Lit4Lib4LiX4Li14LmI4Lie4Lij4LmJ4Lit4Lih4LmD4LiK4LmJ4LiH4Liy4LiZIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5
MjI4Mjk1MjI2OTI0OTc1OTYiPiLguYHguK3guJvguJfguLXguYjguJXguLTguJTguJXguLHguYng
uIfguYTguKfguYkg4LmD4LiK4LmJIEFOR0xFIOC5hOC4oeC5iOC5hOC4lOC5ieC5gOC4peC4oiI8
L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54bWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy10bC9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjBlOTVjM2RkMjdiOWQ3N2U3ZmVl
ODFmOTlmNjMyOWEwNDkzMmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdGwvc3RyaW5ncy54
bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMu
YW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6
bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+Ik1nYSBLYWd1c3R1aGFuIHNh
IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJCYWd1aGluIGFuZyBtZ2Egc2V0dGlu
ZyBuZyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0
bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iUGFuZ2thbGFoYXRhbiI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4
MDQ0MDQxMjM5Njk0Ij4iR2FtaXRpbiBhbmcgQU5HTEUgcGFyYSBzYSBsYWhhdCBuZyBhcHAiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBt
c2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IklwYWtpdGEgYW5nIGRpYWxvZyBib3gga2FwYWcg
bmEtbG9hZCBhbmcgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3Bl
bmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJQaWxpaW4gYW5n
IE9wZW5HTCBEcml2ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNn
aWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFwaGljcyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0i
MjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkdpbmFnYW1pdCBhbmcgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0
MTk4OTA2MDMiPiJXYWxhbmcgYXZhaWxhYmxlIG5hIGFwcCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3
NTk2Ij4iV2FsYW5nIG5ha2EtaW5zdGFsbCBuYSBhcHAgbmEgcHV3ZWRlbmcgZ3VtYW1pdCBuZyBB
TkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdHIvc3RyaW5n
cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzY1MjYyMGQyYTFlMzYz
NTA5ZjFkY2ViN2FhZGUwODhjZDU0ZTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdHIvc3Ry
aW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAg
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3Nj
aGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46
b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIFRlcmNp
aGxlcmkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1t
YXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFIGF5YXJsYXLEsW7EsSBkZcSf
acWfdGlyaW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkdlbmVsIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2
OTQiPiJBTkdMRVwnxLEgdMO8bSB1eWd1bGFtYWxhciBpw6dpbiBrdWxsYW4iPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0
MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIHnDvGtsZW5kacSfaW5kZSBpbGV0acWfaW0ga3V0dXN1
bnUgZ8O2c3RlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJp
dmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCBTw7xyw7xjw7xz
w7xuw7wgc2XDp2luIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lk
PSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5
NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEVcJ8SxIEt1bGxhbm1hIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4iS3VsbGFuxLFsYWJpbGVjZWsgdXlndWxhbWEgeW9rIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0
OTc1OTYiPiJBTkdMRSBrdWxsYW5hYmlsZW4gaGnDp2JpciB1eWd1bGFtYSB5w7xrbGVubWVkaSI8
L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54bWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy11ay9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYWIwY2RhZjM1OTdhNmZlNmEyM2Q0
MzQxZGM2ZGU1ODZhMTBmNWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdWsvc3RyaW5ncy54
bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMu
YW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6
bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+ItCd0LDQu9Cw0YjRgtGD0LLQ
sNC90L3RjyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVu
Y2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i0JfQvNGW0L3QuNGC0Lgg
0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLQl9Cw
0LPQsNC70YzQvdGWIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9h
bGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLQktC40LrQvtGA0LjRgdGC0L7Q
stGD0LLQsNGC0LggQU5HTEUg0LTQu9GPINCy0YHRltGFINC00L7QtNCw0YLQutGW0LIiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dp
ZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+ItCf0L7QutCw0LfRg9Cy0LDRgtC4INC00ZbQsNC70L7Q
s9C+0LLQtSDQstGW0LrQvdC+LCDQutC+0LvQuCDQt9Cw0LLQsNC90YLQsNC20YPRlNGC0YzRgdGP
IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJf
dGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i0JLQuNCx0LXRgNGW0YLRjCDQtNGA
0LDQudCy0LXRgCBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIg
bXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDQs9GA0LDRhNGW0LrQ
sCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdl
IiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+ItCS0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC
0YzRgdGPIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i0J3QtdC80LDRlCDQtNC+0YHR
gtGD0L/QvdC40YUg0LTQvtC00LDRgtC60ZbQsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i
0J3QtSDQstGB0YLQsNC90L7QstC70LXQvdC+INC00L7QtNCw0YLQutGW0LIsINGP0LrRliDQvNC+
0LbRg9GC0Ywg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4IEFOR0xFIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy11ci9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXVy
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhZTU1NTFmYWMxOGUwMTQwYTQ0NGUzMjhjOThjOWM1
OTc1Njk0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy11ci9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg2qnbjCDYqtix2KzbjNit2KfYqiI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1z
Z2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg2qnbjCDYqtix2KrbjNio2KfYqiDZhduM
2rog2KrYsdmF24zZhSDaqdix24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i2LnYp9mFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1
NjI2NzgwNDQwNDEyMzk2OTQiPiLYs9io2r7bjCDYp9uM2b7YsyDaqduSINmE24zbkiBBTkdMRSDY
p9iz2KrYudmF2KfZhCDaqdix24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5H
TEUg2YTZiNqIINuB2Ygg2KzYp9mG25Ig2b7YsSDaiNin2KbZhNin2q8g2KjYp9qp2LMg2K/aqdq+
2KfYptuM2roiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZl
cl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg2ojYsdin2KbbjNmI
2LEg2YXZhtiq2K7YqCDaqdix24zauiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdv
cmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xl4oCP2Iwgb3Blbmds2Iwg2q/Y
sdin2YHaqdizIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0
X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUg2LLbjNixINin2LPY
qti52YXYp9mEINuB25IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLaqdmI2KbbjCDYp9uM2b4g
2K/Ys9iq24zYp9ioINmG24HbjNq6INuB25IiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Itin
24zYs9uMINqp2YjYptuMINin24zZviDYp9mG2LPZudin2YQg2YbbgduM2rog2qnbjCDar9im24wg
24HbkiDYrNmIIEFOR0xFINqp2Ygg2KfYs9iq2LnZhdin2YQg2qnYsSDYs9qp25IiPC9zdHJpbmc+
Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXV6L3N0cmluZ3MueG1sIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
dXovc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M4MGI1MDgwZmJiZGNiYTM0NGUwNWNiMWNmZGQ0
ZmU3NTRkMTMxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXV6L3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSBzb3psYW1hbGFyaSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIy
MDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUgc296bGFtYWxhcmluaSBvyrt6Z2FydGlyaXNoIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4
NTEzOTc2MTcxODMzNjAwMjYiPiJVbXVtaXkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1
c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IkJhcmNo
YSBpbG92YWxhciB1Y2h1biBBTkdMRSBpc2hsYXRpc2giPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAw
MDc1NCI+IkFOR0xFIHl1a2xhbmdhbmRhIG11bG9xb3Qgb3luYXNpbmkgY2hpcWFyaXNoIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lk
PSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIGRyYXl2ZXJpbmkgdGFubGFzaCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5
NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJB
TkdMRSBpc2hsYXRpbG1vcWRhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iSGVjaCBxYW5kYXkg
aWxvdmEgdG9waWxtYWRpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBTkdMRSBpc2hsYXR1
dmNoaSBoZWNoIHFhbmRheSBpbG92YSBvyrtybmF0aWxtYWdhbiI8L3N0cmluZz4KKzwvcmVzb3Vy
Y2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdjE3L3N0eWxlcy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy12MTcvc3R5bGVz
LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45M2QxODc5MDJkMTZlODE5OWZjNjYyZTMxYTgzNTUzMThmOTQ4OWE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdjE3L3N0eWxlcy54bWwKQEAgLTAsMCArMSwzNCBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgQ29weXJp
Z2h0IDIwMTggVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
IFVzZSBvZiB0aGlzCisgIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlCisgIExJQ0VOU0UgZmlsZS4KKy0tPgorCis8
cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9y
ZXMvYW5kcm9pZCI+CisgICAgPHN0eWxlIG5hbWU9IlByZWZlcmVuY2VGcmFnbWVudExpc3RTaW5n
bGVQYW5lIiBwYXJlbnQ9IkAqYW5kcm9pZDpzdHlsZS9QcmVmZXJlbmNlRnJhZ21lbnRMaXN0Ij4K
KyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpwYWRkaW5nU3RhcnQiPkBkaW1lbi9zZXR0aW5n
c19zaWRlX21hcmdpbjwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpwYWRkaW5n
RW5kIj5AZGltZW4vc2V0dGluZ3Nfc2lkZV9tYXJnaW48L2l0ZW0+CisgICAgICAgIDxpdGVtIG5h
bWU9ImFuZHJvaWQ6bGF5b3V0X21hcmdpblN0YXJ0Ij4wZHA8L2l0ZW0+CisgICAgICAgIDxpdGVt
IG5hbWU9ImFuZHJvaWQ6bGF5b3V0X21hcmdpbkVuZCI+MGRwPC9pdGVtPgorICAgICAgICA8aXRl
bSBuYW1lPSJhbmRyb2lkOnNjcm9sbGJhclN0eWxlIj5vdXRzaWRlT3ZlcmxheTwvaXRlbT4KKyAg
ICA8L3N0eWxlPgorCisgICAgPHN0eWxlIG5hbWU9Ik11bHRpU2VsZWN0RGlhbG9nU3R5bGUiIHBh
cmVudD0iQHN0eWxlL1ByZWZlcmVuY2UuTWF0ZXJpYWwiPgorICAgICAgICA8aXRlbSBuYW1lPSJu
ZWdhdGl2ZUJ1dHRvblRleHQiPkBhbmRyb2lkOnN0cmluZy9jYW5jZWw8L2l0ZW0+CisgICAgICAg
IDxpdGVtIG5hbWU9InBvc2l0aXZlQnV0dG9uVGV4dCI+QGFuZHJvaWQ6c3RyaW5nL29rPC9pdGVt
PgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iU2V0dGluZ3NQcmVmZXJlbmNlRnJh
Z21lbnRTdHlsZSIgcGFyZW50PSJAc3R5bGUvUHJlZmVyZW5jZUZyYWdtZW50Lk1hdGVyaWFsIj4K
KyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXQiPkBsYXlvdXQvcHJlZmVyZW5jZV9s
aXN0X2ZyYWdtZW50PC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iUHJl
ZmVyZW5jZVRoZW1lIiBwYXJlbnQ9IkBzdHlsZS9QcmVmZXJlbmNlVGhlbWVPdmVybGF5LnYxNC5N
YXRlcmlhbCI+CisgICAgICA8aXRlbSBuYW1lPSJwcmVmZXJlbmNlRnJhZ21lbnRTdHlsZSI+QHN0
eWxlL1NldHRpbmdzUHJlZmVyZW5jZUZyYWdtZW50U3R5bGU8L2l0ZW0+CisgICAgICA8aXRlbSBu
YW1lPSJkaWFsb2dQcmVmZXJlbmNlU3R5bGUiPkBzdHlsZS9NdWx0aVNlbGVjdERpYWxvZ1N0eWxl
PC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iVGhlbWUuU2V0dGluZ3Mi
IHBhcmVudD0iQGFuZHJvaWQ6c3R5bGUvVGhlbWUuRGV2aWNlRGVmYXVsdC5TZXR0aW5ncyIgPgor
ICAgICAgPGl0ZW0gbmFtZT0icHJlZmVyZW5jZVRoZW1lIj5Ac3R5bGUvUHJlZmVyZW5jZVRoZW1l
PC9pdGVtPgorICAgIDwvc3R5bGU+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXZp
L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM5OTE1YjM2
ZjQ0ZDAzNDliZDY3ODI0MTRjMjFjYzc5MWMzYzQzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LXZpL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0
dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlm
Zj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJUw7l5
IGNo4buNbiBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVu
Y2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iU+G7rWEgxJHhu5VpIHTD
uXkgY2jhu41uIGPDoGkgxJHhurd0IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJDaHVuZyI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lk
PSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iU+G7rSBk4bulbmcgQU5HTEUgY2hvIHThuqV0IGPhuqMg
4bupbmcgZOG7pW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJIaeG7g24gdGjhu4sg
aOG7mXAgdGhv4bqhaSBraGkgQU5HTEUgxJHGsOG7o2MgdOG6o2kiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDEx
MzkzODYzMDQiPiJDaOG7jW4gdHLDrG5oIMSRaeG7gXUga2hp4buDbiBPcGVuR0wiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUi
PiJhbmdsZSwgb3BlbmdsLCDEkeG7kyBo4buNYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+
IsSQYW5nIHPhu60gZOG7pW5nIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9f
YXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iS2jDtG5n
IGPDsyDhu6luZyBk4bulbmcgbsOgbyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2Fw
cHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQ2jGsGEg
Y8OgaSDEkeG6t3Qg4bupbmcgZOG7pW5nIG7DoG8gY8OzIHRo4buDIHPhu60gZOG7pW5nIEFOR0xF
Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5n
cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy16aC1yQ04vc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg5MWQ3ZDQ3MDk0
NTA0MmUzNWI5NTRlN2VkZjZkY2ZmNGI0NWM0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpo
LXJDTi9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVu
Y29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vu
c2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1h
eSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFw
cGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJo
dHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxp
ZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5H
TEUg5YGP5aW96K6+572uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVy
ZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLkv67mlLkgQU5HTEUg
6K6+572uIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIg
bXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLkuIDoiKwiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+IumSiOWvueaJgOacieW6lOeUqOS9v+eUqCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2
MDAwNzU0Ij4i5Yqg6L29IEFOR0xFIOWQjuaYvuekuuWvueivneahhiI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0
MTEzOTM4NjMwNCI+IumAieaLqSBPcGVuR0wg6amx5Yqo56iL5bqPIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUs
IG9wZW5nbCwg5Zu+5b2iIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNl
X3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i5L2/55SoIEFOR0xF
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1z
Z2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i5rKh5pyJ5Y+v55So55qE5bqU55SoIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5
MjI4Mjk1MjI2OTI0OTc1OTYiPiLmgqjmsqHmnInlronoo4Xlj6/ku6Xkvb/nlKggQU5HTEUg55qE
5bqU55SoIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16aC1ySEsv
c3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy16aC1ySEsvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWViOGFm
MjMwNzMxMWRhN2JmZTczNGNhNTNhOGUwMWRlMTdlZjc2MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFs
dWVzLXpoLXJISy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hl
IExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAg
WW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAg
IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJ
UyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJ
TkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRy
b2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1s
bnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1
Ij4iQU5HTEUg5YGP5aW96Kit5a6aIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLkv67mlLkg
QU5HTEUg6Kit5a6aIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90
aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLkuIDoiKwiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0
MTIzOTY5NCI+Iuiuk+aJgOacieaHieeUqOeoi+W8j+S9v+eUqCBBTkdMRSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQz
MjUwNDM0MDI2MDAwNzU0Ij4i6LyJ5YWlIEFOR0xFIOW+jOmhr+ekuuWwjeipseahhiI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0i
MzQ3NDIyMDc0MTEzOTM4NjMwNCI+IumBuOWPliBPcGVuR0wg6amF5YuV56iL5byPIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1
Ij4iYW5nbGUsIG9wZW5nbCwg5ZyW5YOPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i5q2j
5Zyo5L2/55SoIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i5rKS5pyJ5Y+v55So55qE
5oeJ55So56iL5byPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLmspLmnInlronoo53ku7vk
vZXlj6/ku6Xkvb/nlKggQU5HTEUg55qE5oeJ55So56iL5byPIjwvc3RyaW5nPgorPC9yZXNvdXJj
ZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16aC1yVFcvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16aC1yVFcv
c3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QzZDBjZTI5ZGU4MTZhMTczMjMxZDNjNmMyZjhjYWI2
MzE3YTc1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbApAQCAt
MCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEt
LSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisK
KyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
ICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lk
LmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0
Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5j
ZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg5YGP5aW96Kit5a6aIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9
IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLkv67mlLkgQU5HTEUg6Kit5a6aIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMz
NjAwMjYiPiLkuIDoiKwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuWwhyBBTkdMRSDnlKjmlrzm
iYDmnInmh4nnlKjnqIvlvI8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xl
X2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOi8
ieWFpeW+jOmhr+ekuuWwjeipseaWueWhiiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNl
bGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IumB
uOWPliBPcGVuR0wg6amF5YuV56iL5byPIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5
d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwg5ZyW5b2i
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2Ui
IG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i5q2j5Zyo5L2/55SoIEFOR0xFIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUx
ODM0NTQxNDE5ODkwNjAzIj4i5rKS5pyJ5Y+v55So55qE5oeJ55So56iL5byPIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4
Mjk1MjI2OTI0OTc1OTYiPiLkvaDmspLmnInlronoo53lj6/ku6Xkvb/nlKggQU5HTEUg55qE5oeJ
55So56iL5byPIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16dS9z
dHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNDAwOTUyMGQy
Zjc0NDM4N2I1NWQwNTRlMzgyYjRmNTEyOTZmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy16
dS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
CisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhl
ciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRw
Oi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9
InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iSXppbnRh
bmRva2F6aSB6ZS1BTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iU2hpbnRzaGEgaXpp
bHVuZ2lzZWxlbG8gemUtQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9n
ZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+Ik9rdXZhbWlsZSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIy
NTYyNjc4MDQ0MDQxMjM5Njk0Ij4iU2ViZW56aXNhIGktQU5HTEUga3V6byB6b25rZSBpemluaGxl
bG8gem9rdXNlYmVuemEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkJvbmlzYSBpYmhv
a2lzaSB1bWEgaS1BTkdMRSBpbGF5aXNoaXdlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
c2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i
S2hldGhhIGktT3BlbkdMIERyaXZlciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdv
cmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGl6aXRob21i
ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdl
IiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IlVrdXNlYmVuemlzYSBpLUVOR0VMSSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0i
MTY1MTgzNDU0MTQxOTg5MDYwMyI+IkF6aWtobyBpemluaGxlbG8gem9rdXNlYmVuemEgZXppdGhv
bGFrYWxheW8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9z
dW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkF6aWtobyBpemluaGxlbG8gem9r
dXNlYmVuemEgZXppZmFraXdlIGV6aW5nYXNlYmVuemlzYSBpLUFOR0xFIjwvc3RyaW5nPgorPC9y
ZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9kaW1lbnMueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZGltZW5zLnht
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjcwMjZiMDg1NzQxNWJkZWExNjM3MTQxYmRiYTNjMmVmYjk3MDhhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZGltZW5zLnhtbApAQCAtMCwwICsxLDIwIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorICAgIENvcHlyaWdodCAy
MDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVy
IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGlj
ZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAg
ICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNv
ZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQg
b24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9O
UyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5k
CisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+CisKKzxyZXNvdXJjZXM+
CisgICAgPGRpbWVuIG5hbWU9InNldHRpbmdzX3NpZGVfbWFyZ2luIj4wZGlwPC9kaW1lbj4KKzwv
cmVzb3VyY2VzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
L2RyaXZlcnMueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMvZHJpdmVycy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI4ZjM2MTE3ZjJi
YmJmYWNiNjAxMzc4YjFiZThlNjJiNWY5MWRkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzL2Ry
aXZlcnMueG1sCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Cis8IS0tCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAg
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKyAtLT4KKworPHJlc291cmNlcz4KKworPHN0cmluZyBuYW1lPSJkZWZhdWx0
X2RyaXZlciI+ZGVmYXVsdDwvc3RyaW5nPgorCis8c3RyaW5nLWFycmF5IG5hbWU9ImRyaXZlcl92
YWx1ZXMiPgorICAgIDxpdGVtPkBzdHJpbmcvZGVmYXVsdF9kcml2ZXI8L2l0ZW0+CisgICAgPGl0
ZW0+YW5nbGU8L2l0ZW0+CisgICAgPGl0ZW0+bmF0aXZlPC9pdGVtPgorPC9zdHJpbmctYXJyYXk+
CisKKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZ2xvYmFsX3NldHRpbmdzLnhtbCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzL2dsb2JhbF9zZXR0aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE3MTZhYzU4ZTU5NmJlMmQ1
NjdlNzA3MmY3MGJkNzBkZjVjMjgwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzL2dsb2JhbF9z
ZXR0aW5ncy54bWwKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4KKzwhLS0KKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
ICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorIC0tPgorCis8cmVzb3VyY2VzPgorICAgIDxzdHJpbmcgbmFtZT0iZ2xv
YmFsX3NldHRpbmdzX2RyaXZlcl9hbGxfYW5nbGUiPmFuZ2xlX2dsX2RyaXZlcl9hbGxfYW5nbGU8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9zZXR0aW5nc19zaG93X2FuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94Ij5zaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94PC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfc2V0dGluZ3NfZHJpdmVyX3NlbGVjdGlvbl9wa2dzIj5h
bmdsZV9nbF9kcml2ZXJfc2VsZWN0aW9uX3BrZ3M8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Imdsb2JhbF9zZXR0aW5nc19kcml2ZXJfc2VsZWN0aW9uX3ZhbHVlcyI+YW5nbGVfZ2xfZHJpdmVy
X3NlbGVjdGlvbl92YWx1ZXM8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imdsb2JhbF9zZXR0
aW5nc19hbmdsZV9kZWJ1Z19wYWNrYWdlIj5hbmdsZV9kZWJ1Z19wYWNrYWdlPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfc2V0dGluZ3NfYW5nbGVfd2hpdGVsaXN0Ij5hbmdsZV93
aGl0ZWxpc3Q8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzL2ludGVudHMueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvaW50ZW50cy54bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTcyZmIzMWJhNzM4NGNmYjFlMmU4NjNiYjFhNDI5ZDkzZTM1ZjcxOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzL2ludGVudHMueG1sCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgICAgQ29weXJpZ2h0IDIwMTkg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAg
ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAtLT4KKworPHJlc291cmNlcz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImludGVudF9hbmdsZV9mb3JfYW5kcm9pZF90b2FzdF9tZXNzYWdlIj5h
bmRyb2lkLmFwcC5hY3Rpb24uQU5HTEVfRk9SX0FORFJPSURfVE9BU1RfTUVTU0FHRTwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iaW50ZW50X2tleV9hNGFfdG9hc3RfbWVzc2FnZSI+QTRBIFRv
YXN0IE1lc3NhZ2U8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzL3ByZWZlcmVuY2Vfa2V5cy54bWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9wcmVm
ZXJlbmNlX2tleXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NDRhZWRhNDc2Yjc5MDhlNjA3YzYzY2M3MDQ5
YTE0OTllOGE4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9wcmVmZXJlbmNlX2tleXMueG1s
CkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
Cis8IS0tCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAtLT4KKworPHJlc291cmNlcz4KKyAgICA8c3RyaW5nIG5hbWU9InByZWZfa2V5X2FuZ2xl
X2ZsYWdzX2NhdGVnb3J5Ij5hbmdsZV9mbGFnc19jYXRlZ29yeTwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0icHJlZl9rZXlfYWxsX2FuZ2xlIj5hbGxfcGtnc191c2VfYW5nbGU8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InByZWZfa2V5X2FuZ2xlX2luX3VzZV9kaWFsb2ciPmFuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmVmX2tleV9zZWxl
Y3Rfb3BlbmdsX2RyaXZlcl9jYXRlZ29yeSI+c2VsZWN0X29wZW5nbF9kcml2ZXJfY2F0ZWdvcnk8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InByZWZfa2V5X2luc3RhbGxlZF9wa2dzIj5pbnN0
YWxsZWRfcGtnczwvc3RyaW5nPgorPC9yZXNvdXJjZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMGZkNTg2MDQyZmFlNzM5MWY5NGQyNmQwOThlZWY5MGVmMjg2ZWIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSw1NiBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgICBDb3B5cmlnaHQgMjAx
OSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
ICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorCis8cmVzb3VyY2VzPgor
ICAgIDwhLS0gVGhpcyBpcyB0aGUgdXNlciB2aXNpYmxlIG5hbWUgb2YgdGhlIGFwcCBhbmQgdGl0
bGUuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiPkFOR0xFIFByZWZl
cmVuY2VzPC9zdHJpbmc+CisKKyAgICA8IS0tIFRoaXMgc3RyaW5nIGlzIGEgZGVzY3JpcHRpb24g
b2Ygd2hhdCAiQU5HTEUgUHJlZmVyZW5jZXMiIGlzLgorICAgIEl0IGlzIHVzZWQgYXMgYSBzdWJ0
aXRsZSBvciBzdW1tYXJ5IHRleHQgdG8gZGVzY3JpYmUgdGhpcyBBTkdMRSBhcHAuIC0tPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSI+TW9kaWZ5IEFOR0xFIHNl
dHRpbmdzPC9zdHJpbmc+CisKKyAgICA8IS0tIENhdGVnb3J5IHRpdGxlIGxpc3RpbmcgQU5HTEUg
ZmxhZ3MgW0NIQVJfTElNSVQ9NTBdLS0+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFs
X3RpdGxlIj5HZW5lcmFsPC9zdHJpbmc+CisKKyAgICA8IS0tIFRoaXMgaXMgdGhlIGxhYmVsIGZv
ciBhIHRvZ2dsZSBidXR0b24uCisgICAgV2hlbiB0aGUgdG9nZ2xlIGlzIGVuYWJsZWQsIHdlIHdp
bGwgdXNlIEFOR0xFIGZvciBhbGwgUEtHcywgcmVnYXJkbGVzcyBvZiBhbnkgb3RoZXIgc2V0dGlu
Z3MuCisgICAgVGhpcyBpcyBhbHNvIHVzZWQgYXMgYSBRdWljayBTZXR0aW5ncyB0aWxlIGxhYmVs
LiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiPlVzZSBBTkdM
RSBmb3IgYWxsIGFwcHM8L3N0cmluZz4KKworICAgIDwhLS0gVGhpcyBpcyB0aGUgbGFiZWwgZm9y
IGEgdG9nZ2xlIGJ1dHRvbi4KKyAgICBXaGVuIHRoZSB0b2dnbGUgaXMgZW5hYmxlZCwgd2Ugd2ls
bCBzaG93IGEgZGlhbG9nIGJveCBpbmRpY2F0aW5nIHRoYXQgQU5HTEUgaXMgaW4gdXNlLgorICAg
IFRoaXMgaXMgYWxzbyB1c2VkIGFzIGEgUXVpY2sgU2V0dGluZ3MgdGlsZSBsYWJlbC4gLS0+Cisg
ICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94Ij5TaG93IGRpYWxv
ZyBib3ggd2hlbiBBTkdMRSBpcyBsb2FkZWQ8L3N0cmluZz4KKworICAgIDwhLS0gTGlzdFByZWZl
cmVuY2UgdGl0bGUgbGlzdGluZyBpbnN0YWxsZWQgcGFja2FnZXMgW0NIQVJfTElNSVQ9NTBdLS0+
CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSI+U2VsZWN0IE9w
ZW5HTCBEcml2ZXI8L3N0cmluZz4KKworICAgIDwhLS0gVGhlc2UgYXJlIGtleXdvcmRzIHRoYXQg
dGhlIHVzZXIgY2FuIHVzZSB0byBzZWFyY2ggZm9yIHRoaXMgYXBwLgorICAgICdhbmdsZScgc2hv
dWxkIG5vdCBiZSB0cmFuc2xhdGVkLCBhcyBpdCBpcyBhbiBhcHAgbmFtZS4gLS0+CisgICAgPHN0
cmluZyBuYW1lPSJrZXl3b3JkcyI+YW5nbGUsIG9wZW5nbCwgZ3JhcGhpY3M8L3N0cmluZz4KKwor
ICAgIDwhLS0gVGhpcyBpcyB0aGUgbWVzc2FnZSBkaXNwbGF5ZWQgaW4gdGhlIFRvYXN0IHRvIHRo
ZSB1c2VyIHdoZW4gQU5HTEUgaXMgYmVpbmcgdXNlZCBmb3IgdGhlIGFwcC4KKyAgICAnQU5HTEUn
IHNob3VsZCBub3QgYmUgdHJhbnNsYXRlZCwgYXMgaXQgaXMgYW4gYXBwIG5hbWUuIC0tPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiPlVzaW5nIEFOR0xFPC9z
dHJpbmc+CisKKyAgICA8IS0tIFRoaXMgaXMgdGhlIHRpdGxlIGRpc3BsYXllZCB3aGVuIG5vIGFw
cHMgYXJlIGluc3RhbGxlZCB0aGF0IEFOR0xFIGNhbiBiZSB1c2VkIGZvci4gLS0+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSI+Tm8gYXZhaWxhYmxlIGFwcHM8L3N0
cmluZz4KKworICAgIDwhLS0gVGhpcyBpcyB0aGUgc3VtbWFyeSBkaXNwbGF5ZWQgd2hlbiBubyBh
cHBzIGFyZSBpbnN0YWxsZWQgdGhhdCBBTkdMRSBjYW4gYmUgdXNlZCBmb3IuIC0tPgorICAgIDxz
dHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSI+Tm8gYXBwcyBpbnN0YWxsZWQg
dGhhdCBjYW4gdXNlIEFOR0xFPC9zdHJpbmc+CisKKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy94
bWwvbWFpbi54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3htbC9tYWluLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDIyNjI0Zjg2ZjYxNmFlMDcw
Y2Q3ZjgyNGIwMzA4NzJiMzI0YzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy94bWwvbWFpbi54bWwKQEAg
LTAsMCArMSw0OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwh
LS0KKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisK
KyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21w
bGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNF
TlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNl
bnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJS
QU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxp
ZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgor
IC0tPgorCis8YW5kcm9pZHgucHJlZmVyZW5jZS5QcmVmZXJlbmNlU2NyZWVuCisgICAgeG1sbnM6
YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKwor
ICAgIDxQcmVmZXJlbmNlQ2F0ZWdvcnkKKyAgICAgICAgYW5kcm9pZDprZXk9IkBzdHJpbmcvcHJl
Zl9rZXlfYW5nbGVfZmxhZ3NfY2F0ZWdvcnkiCisgICAgICAgIGFuZHJvaWQ6dGl0bGU9IkBzdHJp
bmcvYW5nbGVfZ2VuZXJhbF90aXRsZSI+CisKKyAgICAgICAgPCEtLVRPRE8gOiBJc3N1ZSAyOTg5
IDogYm91bGRlci1ncmFwaGljcy10ZWFtQGdvb2dsZS5jb20KKyAgICAgICAgRW5hYmxlIHRoZSBz
d2l0Y2ggb25jZSBBbmRyb2lkIGNhbiBib290IHdpdGggQU5HTEUgZW5hYmxlZCBmb3IgZXZlcnl0
aGluZy0tPgorICAgICAgICA8YW5kcm9pZHgucHJlZmVyZW5jZS5Td2l0Y2hQcmVmZXJlbmNlCisg
ICAgICAgICAgICBhbmRyb2lkOmtleT0iQHN0cmluZy9wcmVmX2tleV9hbGxfYW5nbGUiCisgICAg
ICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5nL3VzZV9hbmdsZV9mb3JfYWxsX2FwcHMiCisg
ICAgICAgICAgICBhbmRyb2lkOnN1bW1hcnk9IkBzdHJpbmcvZ2xvYmFsX3NldHRpbmdzX2RyaXZl
cl9hbGxfYW5nbGUiCisgICAgICAgICAgICBhbmRyb2lkOmRlZmF1bHRWYWx1ZT0iZmFsc2UiCisg
ICAgICAgICAgICBhbmRyb2lkOmVuYWJsZWQ9ImZhbHNlIi8+CisKKyAgICAgICAgPGFuZHJvaWR4
LnByZWZlcmVuY2UuU3dpdGNoUHJlZmVyZW5jZQorICAgICAgICAgICAgYW5kcm9pZDprZXk9IkBz
dHJpbmcvcHJlZl9rZXlfYW5nbGVfaW5fdXNlX2RpYWxvZyIKKyAgICAgICAgICAgIGFuZHJvaWQ6
dGl0bGU9IkBzdHJpbmcvc2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIKKyAgICAgICAgICAg
IGFuZHJvaWQ6c3VtbWFyeT0iQHN0cmluZy9nbG9iYWxfc2V0dGluZ3Nfc2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZGVmYXVsdFZhbHVlPSJmYWxzZSIK
KyAgICAgICAgICAgIGFuZHJvaWQ6ZW5hYmxlZD0idHJ1ZSIvPgorICAgIDwvUHJlZmVyZW5jZUNh
dGVnb3J5PgorCisgICAgPFByZWZlcmVuY2VDYXRlZ29yeQorICAgICAgICBhbmRyb2lkOmtleT0i
QHN0cmluZy9wcmVmX2tleV9zZWxlY3Rfb3BlbmdsX2RyaXZlcl9jYXRlZ29yeSIKKyAgICAgICAg
YW5kcm9pZDp0aXRsZT0iQHN0cmluZy9zZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSI+CisKKyAg
ICA8L1ByZWZlcmVuY2VDYXRlZ29yeT4KKworPC9hbmRyb2lkeC5wcmVmZXJlbmNlLlByZWZlcmVu
Y2VTY3JlZW4+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL0FuZHJvaWRNYW5pZmVzdC54
bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
c3JjL2NvbS9hbmRyb2lkL2FuZ2xlL0FuZHJvaWRNYW5pZmVzdC54bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFi
ZmEwY2YwMjA0ZWU3MWNiY2IxM2M0MWNiYWUyYjk5MjQ1N2JiOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMv
Y29tL2FuZHJvaWQvYW5nbGUvQW5kcm9pZE1hbmlmZXN0LnhtbApAQCAtMCwwICsxLDkwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorICAgIENvcHlyaWdo
dCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAg
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKwor
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+CisKKzxtYW5pZmVz
dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJv
aWQiCisgICAgICAgICAgYW5kcm9pZDp2ZXJzaW9uQ29kZT0iMTAwIgorICAgICAgICAgIGFuZHJv
aWQ6dmVyc2lvbk5hbWU9IjEwMCIKKyAgICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5hbmds
ZSI+CisKKyAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNz
aW9uLldSSVRFX1NFQ1VSRV9TRVRUSU5HUyIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJv
aWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlJFQ0VJVkVfQk9PVF9DT01QTEVURUQiIC8+Cisg
ICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5RVUVS
WV9BTExfUEFDS0FHRVMiIC8+CisKKyAgICA8dXNlcy1zZGsgYW5kcm9pZDptaW5TZGtWZXJzaW9u
PSIyNiIKKyAgICAgICAgICAgICAgYW5kcm9pZDp0YXJnZXRTZGtWZXJzaW9uPSIyOCI+CisgICAg
PC91c2VzLXNkaz4KKworICAgIDxhcHBsaWNhdGlvbiBhbmRyb2lkOmxhYmVsPSJBbmRyb2lkIFN5
c3RlbSBBbmdsZSIKKyAgICAgICAgICAgICAgICAgYW5kcm9pZDppY29uPSJAZHJhd2FibGUvaWNv
biIKKyAgICAgICAgICAgICAgICAgYW5kcm9pZDpleHRyYWN0TmF0aXZlTGlicz0iZmFsc2UiCisg
ICAgICAgICAgICAgICAgIGFuZHJvaWQ6bXVsdGlBcmNoPSJ0cnVlIj4KKworICAgICAgICA8YWN0
aXZpdHkgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5hbmdsZS5NYWluQWN0aXZpdHkiCisgICAg
ICAgICAgICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2FuZ2xlX3ByZWZlcmVuY2VzIgor
ICAgICAgICAgICAgICAgICAgYW5kcm9pZDpkZXNjcmlwdGlvbj0iQHN0cmluZy9hbmdsZV9wcmVm
ZXJlbmNlc19zdW1tYXJ5IgorICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0aGVtZT0iQHN0eWxl
L1RoZW1lLlNldHRpbmdzIgorICAgICAgICAgICAgICAgICAgYW5kcm9pZDp2aXNpYmxlVG9JbnN0
YW50QXBwcz0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF1bmNoTW9kZT0ic2lu
Z2xlVGFzayI+CisgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KKyAgICAgICAgICAgICAgICA8
YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4iLz4KKyAgICAg
ICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29y
eS5JTkZPIi8+CisgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CisKKyAgICAgICAgICAgIDwh
LS0gSW5kaWNhdGUgdGhhdCB0aGlzIFBLRyBpcyBBTkdMRS4gLS0+CisgICAgICAgICAgICA8aW50
ZW50LWZpbHRlciBhbmRyb2lkOnByaW9yaXR5PSIxIj4KKyAgICAgICAgICAgICAgICA8YWN0aW9u
IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5hcHAuYWN0aW9uLkFOR0xFX0ZPUl9BTkRST0lEIiAvPgor
ICAgICAgICAgICAgICAgIDxjYXRlZ29yeSBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmNh
dGVnb3J5LkRFRkFVTFQiIC8+CisgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CisKKyAgICAg
ICAgICAgIDxpbnRlbnQtZmlsdGVyPgorICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpu
YW1lPSJhbmRyb2lkLnNlcnZpY2UucXVpY2tzZXR0aW5ncy5hY3Rpb24uUVNfVElMRV9QUkVGRVJF
TkNFUyIgLz4KKyAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KKworICAgICAgICAgICAgPCEt
LSBNYXJrIHRoaXMgZnJhZ21lbnQgYXMgYSBkeW5hbWljIHNldHRpbmcgaW4gdGhlIGRldmVsb3Bt
ZW50IGNhdGVnb3J5LiAtLT4KKyAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyPgorICAgICAgICAg
ICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5zZXR0aW5ncy5hY3Rpb24u
SUFfU0VUVElOR1MiIC8+CisgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CisgICAgICAgICAg
ICA8bWV0YS1kYXRhIGFuZHJvaWQ6bmFtZT0iY29tLmFuZHJvaWQuc2V0dGluZ3MuY2F0ZWdvcnki
CisgICAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dmFsdWU9ImNvbS5hbmRyb2lkLnNldHRp
bmdzLmNhdGVnb3J5LmlhLmRldmVsb3BtZW50IiAvPgorICAgICAgICAgICAgPG1ldGEtZGF0YSBh
bmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLnNldHRpbmdzLnN1bW1hcnkiIGFuZHJvaWQ6cmVzb3Vy
Y2U9IkBzdHJpbmcvYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgLz4KKyAgICAgICAgICAgIDxt
ZXRhLWRhdGEgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5zZXR0aW5ncy5vcmRlciIgYW5kcm9p
ZDp2YWx1ZT0iMjAiIC8+CisgICAgICAgICAgICA8bWV0YS1kYXRhIGFuZHJvaWQ6bmFtZT0iY29t
LmFuZHJvaWQuc2V0dGluZ3MucHJvZmlsZSIgYW5kcm9pZDp2YWx1ZT0icHJpbWFyeV9wcm9maWxl
X29ubHkiIC8+CisgICAgICAgICAgICA8bWV0YS1kYXRhIGFuZHJvaWQ6bmFtZT0iaW5zdGFudGFw
cHMuY2xpZW50cy5hbGxvd2VkIiBhbmRyb2lkOnZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8L2Fj
dGl2aXR5PgorCisgICAgICAgIDxyZWNlaXZlciBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmFu
Z2xlLmNvbW1vbi5SZWNlaXZlciIKKyAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZGlyZWN0Qm9v
dEF3YXJlPSJ0cnVlIj4KKyAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyPgorICAgICAgICAgICAg
ICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5hY3Rpb24uQk9PVF9DT01Q
TEVURUQiIC8+CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQu
aW50ZW50LmFjdGlvbi5NWV9QQUNLQUdFX1JFUExBQ0VEIiAvPgorICAgICAgICAgICAgICAgIDxh
Y3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmFwcC5hY3Rpb24uQU5HTEVfRk9SX0FORFJPSURf
VE9BU1RfTUVTU0FHRSIgLz4KKyAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KKyAgICAgICAg
PC9yZWNlaXZlcj4KKworICAgICAgICA8cHJvdmlkZXIKKyAgICAgICAgICAgIGFuZHJvaWQ6bmFt
ZT0iY29tLmFuZHJvaWQuYW5nbGUuY29tbW9uLlNlYXJjaFByb3ZpZGVyIgorICAgICAgICAgICAg
YW5kcm9pZDphdXRob3JpdGllcz0iY29tLmFuZHJvaWQuYW5nbGUiCisgICAgICAgICAgICBhbmRy
b2lkOm11bHRpcHJvY2Vzcz0iZmFsc2UiCisgICAgICAgICAgICBhbmRyb2lkOmdyYW50VXJpUGVy
bWlzc2lvbnM9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb249ImFuZHJvaWQu
cGVybWlzc2lvbi5SRUFEX1NFQVJDSF9JTkRFWEFCTEVTIgorICAgICAgICAgICAgYW5kcm9pZDpl
eHBvcnRlZD0idHJ1ZSI+CisgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KKyAgICAgICAgICAg
ICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5jb250ZW50LmFjdGlvbi5TRUFSQ0hf
SU5ERVhBQkxFU19QUk9WSURFUiIgLz4KKyAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KKyAg
ICAgICAgPC9wcm92aWRlcj4KKyAgICA8L2FwcGxpY2F0aW9uPgorPC9tYW5pZmVzdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvTWFpbkFjdGl2aXR5LmphdmEgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2Fu
Z2xlL01haW5BY3Rpdml0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwZDIyZGRmYzdhM2JhYzBiY2EyYmFj
NzcwYTFlYmNiM2I3YjdkMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL01h
aW5BY3Rpdml0eS5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOSBU
aGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5
IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2Uu
CisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAq
IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIGNvbS5hbmRyb2lk
LmFuZ2xlOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5v
cy5CdW5kbGU7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5hbmdsZS5jb21tb24uKjsKKworcHVibGlj
IGNsYXNzIE1haW5BY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5Cit7CisgICAgcHJpdmF0ZSBmaW5h
bCBTdHJpbmcgVEFHID0gdGhpcy5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKTsKKworICAgIEBP
dmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQ3JlYXRlKEJ1bmRsZSBzYXZlZEluc3RhbmNl
U3RhdGUpCisgICAgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUp
OworICAgICAgICBzZXRDb250ZW50VmlldyhSLmxheW91dC5mcmFnbWVudCk7CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9jb21tb24vR2xvYmFsU2V0dGluZ3MuamF2YSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMv
Y29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL0dsb2JhbFNldHRpbmdzLmphdmEKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzAxNzk3NWNkNjc3YzQ2N2E2YTgxNDkzOThkZTZiNWVmMTYzZWJmNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9z
cmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL0dsb2JhbFNldHRpbmdzLmphdmEKQEAgLTAsMCAr
MSwzMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorICovCitwYWNrYWdlIGNvbS5hbmRyb2lkLmFuZ2xlLmNvbW1vbjsKKworaW1wb3J0
IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50
LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvOworaW1wb3J0
IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKwor
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2lt
cG9ydCBqYXZhLnV0aWwuTGlzdDsKKworY2xhc3MgR2xvYmFsU2V0dGluZ3MKK3sKKworICAgIHBy
aXZhdGUgZmluYWwgU3RyaW5nIFRBRyA9IHRoaXMuZ2V0Q2xhc3MoKS5nZXRTaW1wbGVOYW1lKCk7
CisKKyAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CisgICAgcHJpdmF0ZSBMaXN0PFBhY2th
Z2VJbmZvPiBtSW5zdGFsbGVkUGtncyAgICAgICAgID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAg
cHJpdmF0ZSBMaXN0PFN0cmluZz4gbUdsb2JhbFNldHRpbmdzRHJpdmVyUGtncyAgID0gbmV3IEFy
cmF5TGlzdDw+KCk7CisgICAgcHJpdmF0ZSBMaXN0PFN0cmluZz4gbUdsb2JhbFNldHRpbmdzRHJp
dmVyVmFsdWVzID0gbmV3IEFycmF5TGlzdDw+KCk7CisKKyAgICBHbG9iYWxTZXR0aW5ncyhDb250
ZXh0IGNvbnRleHQsIExpc3Q8UGFja2FnZUluZm8+IGluc3RhbGxlZFBrZ3MpCisgICAgeworICAg
ICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisKKyAgICAgICAgc2V0SW5zdGFsbGVkUGtncyhpbnN0
YWxsZWRQa2dzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjbGVhckFsbEdsb2JhbFNldHRp
bmdzKENvbnRleHQgY29udGV4dCkKKyAgICB7CisgICAgICAgIC8vIGFuZ2xlX2dsX2RyaXZlcl9h
bGxfYW5nbGUKKyAgICAgICAgdXBkYXRlQWxsVXNlQW5nbGUoY29udGV4dCwgZmFsc2UpOworICAg
ICAgICAvLyBzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94CisgICAgICAgIHVwZGF0ZVNob3dB
bmdsZUluVXNlRGlhbG9nKGNvbnRleHQsIGZhbHNlKTsKKyAgICAgICAgLy8gYW5nbGVfZ2xfZHJp
dmVyX3NlbGVjdGlvbl9wa2dzLCBhbmdsZV9nbF9kcml2ZXJfc2VsZWN0aW9uX3ZhbHVlcworICAg
ICAgICBDb250ZW50UmVzb2x2ZXIgY29udGVudFJlc29sdmVyID0gY29udGV4dC5nZXRDb250ZW50
UmVzb2x2ZXIoKTsKKyAgICAgICAgU2V0dGluZ3MuR2xvYmFsLnB1dFN0cmluZyhjb250ZW50UmVz
b2x2ZXIsCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFs
X3NldHRpbmdzX2RyaXZlcl9zZWxlY3Rpb25fcGtncyksICJcIlwiIik7CisgICAgICAgIFNldHRp
bmdzLkdsb2JhbC5wdXRTdHJpbmcoY29udGVudFJlc29sdmVyLAorICAgICAgICAgICAgICAgIGNv
bnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmdsb2JhbF9zZXR0aW5nc19kcml2ZXJfc2VsZWN0aW9u
X3ZhbHVlcyksICJcIlwiIik7CisKKyAgICAgICAgLy8gRm9yIGNvbXBsZXRlbmVzcywgd2UnbGwg
Y2xlYXIgdGhlIGFuZ2xlX2RlYnVnX3BhY2thZ2UsIGJ1dCB3ZSBkb24ndCBhbGxvdyBzZXR0aW5n
CisgICAgICAgIC8vIGl0IHZpYSB0aGUgQVBLIChjdXJyZW50bHkpCisgICAgICAgIFNldHRpbmdz
Lkdsb2JhbC5wdXRTdHJpbmcoY29udGVudFJlc29sdmVyLAorICAgICAgICAgICAgICAgIGNvbnRl
eHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmdsb2JhbF9zZXR0aW5nc19hbmdsZV9kZWJ1Z19wYWNrYWdl
KSwgIiIpOworCisgICAgICAgIC8vIFNraXAgYW5nbGVfd2hpdGVsaXN0OyBub3QgdXBkYXRhYmxl
IHZpYSBEZXZlbG9wZXIgT3B0aW9ucworICAgIH0KKworICAgIEJvb2xlYW4gZ2V0QWxsVXNlQW5n
bGUoKQorICAgIHsKKyAgICAgICAgQ29udGVudFJlc29sdmVyIGNvbnRlbnRSZXNvbHZlciA9IG1D
b250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICB0cnkKKyAgICAgICAgeworICAg
ICAgICAgICAgaW50IGFsbFVzZUFuZ2xlID0gU2V0dGluZ3MuR2xvYmFsLmdldEludCgKKyAgICAg
ICAgICAgICAgICAgICAgY29udGVudFJlc29sdmVyLCBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJp
bmcuZ2xvYmFsX3NldHRpbmdzX2RyaXZlcl9hbGxfYW5nbGUpKTsKKyAgICAgICAgICAgIHJldHVy
biAoYWxsVXNlQW5nbGUgPT0gMSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFNldHRpbmdz
LlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBCb29sZWFuIGdldFNob3dBbmdsZUlu
VXNlRGlhbG9nQm94KCkKKyAgICB7CisgICAgICAgIENvbnRlbnRSZXNvbHZlciBjb250ZW50UmVz
b2x2ZXIgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgdHJ5CisgICAg
ICAgIHsKKyAgICAgICAgICAgIGludCBzaG93QW5nbGVJblVzZURpYWxvZ0JveCA9IFNldHRpbmdz
Lkdsb2JhbC5nZXRJbnQoY29udGVudFJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICBtQ29u
dGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX3NldHRpbmdzX3Nob3dfYW5nbGVfaW5fdXNl
X2RpYWxvZ19ib3gpKTsKKyAgICAgICAgICAgIHJldHVybiAoc2hvd0FuZ2xlSW5Vc2VEaWFsb2dC
b3ggPT0gMSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFNldHRpbmdzLlNldHRpbmdOb3RG
b3VuZEV4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVBbGxVc2VBbmdsZShDb250
ZXh0IGNvbnRleHQsIEJvb2xlYW4gYWxsVXNlQW5nbGUpCisgICAgeworICAgICAgICBDb250ZW50
UmVzb2x2ZXIgY29udGVudFJlc29sdmVyID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsK
KyAgICAgICAgU2V0dGluZ3MuR2xvYmFsLnB1dEludChjb250ZW50UmVzb2x2ZXIsCisgICAgICAg
ICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX3NldHRpbmdzX2RyaXZl
cl9hbGxfYW5nbGUpLCBhbGxVc2VBbmdsZSA/IDEgOiAwKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCB1cGRhdGVTaG93QW5nbGVJblVzZURpYWxvZyhDb250ZXh0IGNvbnRleHQsIEJvb2xlYW4g
c2hvd0FuZ2xlSW5Vc2VEaWFsb2cpCisgICAgeworICAgICAgICBDb250ZW50UmVzb2x2ZXIgY29u
dGVudFJlc29sdmVyID0gY29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgU2V0
dGluZ3MuR2xvYmFsLnB1dEludChjb250ZW50UmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgY29u
dGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX3NldHRpbmdzX3Nob3dfYW5nbGVfaW5fdXNl
X2RpYWxvZ19ib3gpLAorICAgICAgICAgICAgICAgIHNob3dBbmdsZUluVXNlRGlhbG9nID8gMSA6
IDApOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUFuZ2xlV2hpdGVsaXN0KENvbnRl
eHQgY29udGV4dCwgU3RyaW5nIHBhY2thZ2VOYW1lcykKKyAgICB7CisgICAgICAgIENvbnRlbnRS
ZXNvbHZlciBjb250ZW50UmVzb2x2ZXIgPSBjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwor
ICAgICAgICBTZXR0aW5ncy5HbG9iYWwucHV0U3RyaW5nKGNvbnRlbnRSZXNvbHZlciwKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5nbG9iYWxfc2V0dGluZ3NfYW5n
bGVfd2hpdGVsaXN0KSwgcGFja2FnZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVBr
ZyhTdHJpbmcgcGtnTmFtZSwgU3RyaW5nIGRyaXZlcikKKyAgICB7CisgICAgICAgIGludCBwa2dJ
bmRleCA9IGdldEdsb2JhbFNldHRpbmdzUGtnSW5kZXgocGtnTmFtZSk7CisKKyAgICAgICAgaWYg
KCFpc1ZhbGlkRGl2ZXJWYWx1ZShkcml2ZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBMb2cu
ZShUQUcsICJBdHRlbXB0aW5nIHRvIHVwZGF0ZSBhIFBLRyB3aXRoIGFuIGludmFsaWQgZHJpdmVy
OiAnIiArIGRyaXZlciArICInIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBTdHJpbmcgZGVmYXVsdERyaXZlciA9IG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmlu
Zy5kZWZhdWx0X2RyaXZlcik7CisgICAgICAgIGlmIChkcml2ZXIuZXF1YWxzKGRlZmF1bHREcml2
ZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocGtnSW5kZXggPj0gMCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHN0b3JlIGdsb2JhbCBzZXR0aW5ncyBm
b3IgZHJpdmVyIHZhbHVlcyBvdGhlciB0aGFuIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAg
bUdsb2JhbFNldHRpbmdzRHJpdmVyUGtncy5yZW1vdmUocGtnSW5kZXgpOworICAgICAgICAgICAg
ICAgIG1HbG9iYWxTZXR0aW5nc0RyaXZlclZhbHVlcy5yZW1vdmUocGtnSW5kZXgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHBrZ0luZGV4ID49IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUdsb2Jh
bFNldHRpbmdzRHJpdmVyVmFsdWVzLnNldChwa2dJbmRleCwgZHJpdmVyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtR2xv
YmFsU2V0dGluZ3NEcml2ZXJQa2dzLmFkZChwa2dOYW1lKTsKKyAgICAgICAgICAgICAgICBtR2xv
YmFsU2V0dGluZ3NEcml2ZXJWYWx1ZXMuYWRkKGRyaXZlcik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICB3cml0ZUdsb2JhbFNldHRpbmdzKCk7CisgICAgfQorCisgICAgU3Ry
aW5nIGdldERyaXZlckZvclBrZyhTdHJpbmcgcGtnTmFtZSkKKyAgICB7CisgICAgICAgIGludCBw
a2dJbmRleCA9IGdldEdsb2JhbFNldHRpbmdzUGtnSW5kZXgocGtnTmFtZSk7CisKKyAgICAgICAg
aWYgKHBrZ0luZGV4ID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtR2xvYmFs
U2V0dGluZ3NEcml2ZXJWYWx1ZXMuZ2V0KHBrZ0luZGV4KTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiBudWxsOworICAgIH0KKworICAgIHZvaWQgc2V0SW5zdGFsbGVkUGtncyhMaXN0PFBh
Y2thZ2VJbmZvPiBpbnN0YWxsZWRQa2dzKQorICAgIHsKKyAgICAgICAgbUluc3RhbGxlZFBrZ3Mg
PSBpbnN0YWxsZWRQa2dzOworCisgICAgICAgIHVwZGF0ZUdsb2JhbFNldHRpbmdzKCk7CisgICAg
fQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUdsb2JhbFNldHRpbmdzKCkKKyAgICB7CisgICAg
ICAgIHJlYWRHbG9iYWxTZXR0aW5ncygpOworCisgICAgICAgIHZhbGlkYXRlR2xvYmFsU2V0dGlu
Z3MoKTsKKworICAgICAgICB3cml0ZUdsb2JhbFNldHRpbmdzKCk7CisgICAgfQorCisgICAgcHJp
dmF0ZSB2b2lkIHJlYWRHbG9iYWxTZXR0aW5ncygpCisgICAgeworICAgICAgICBtR2xvYmFsU2V0
dGluZ3NEcml2ZXJQa2dzID0gZ2V0R2xvYmFsU2V0dGluZ3NTdHJpbmcoCisgICAgICAgICAgICAg
ICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmdsb2JhbF9zZXR0aW5nc19kcml2ZXJfc2Vs
ZWN0aW9uX3BrZ3MpKTsKKyAgICAgICAgbUdsb2JhbFNldHRpbmdzRHJpdmVyVmFsdWVzID0gZ2V0
R2xvYmFsU2V0dGluZ3NTdHJpbmcoCisgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5n
KFIuc3RyaW5nLmdsb2JhbF9zZXR0aW5nc19kcml2ZXJfc2VsZWN0aW9uX3ZhbHVlcykpOworICAg
IH0KKworICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IGdldEdsb2JhbFNldHRpbmdzU3RyaW5nKFN0
cmluZyBnbG9iYWxTZXR0aW5nKQorICAgIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IHZhbHVlTGlz
dDsKKyAgICAgICAgQ29udGVudFJlc29sdmVyIGNvbnRlbnRSZXNvbHZlciA9IG1Db250ZXh0Lmdl
dENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICBTdHJpbmcgc2V0dGluZ3NWYWx1ZSAgICAgICAg
ICAgID0gU2V0dGluZ3MuR2xvYmFsLmdldFN0cmluZyhjb250ZW50UmVzb2x2ZXIsIGdsb2JhbFNl
dHRpbmcpOworCisgICAgICAgIGlmIChzZXR0aW5nc1ZhbHVlICE9IG51bGwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhbHVlTGlzdCA9IG5ldyBBcnJheUxpc3Q8PihBcnJheXMuYXNMaXN0KHNl
dHRpbmdzVmFsdWUuc3BsaXQoIiwiKSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFsdWVMaXN0ID0gbmV3IEFycmF5TGlzdDw+KCk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gdmFsdWVMaXN0OworICAgIH0KKworICAgIHByaXZhdGUgdm9p
ZCB3cml0ZUdsb2JhbFNldHRpbmdzKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBkcml2ZXJQa2dz
ICAgPSBTdHJpbmcuam9pbigiLCIsIG1HbG9iYWxTZXR0aW5nc0RyaXZlclBrZ3MpOworICAgICAg
ICBTdHJpbmcgZHJpdmVyVmFsdWVzID0gU3RyaW5nLmpvaW4oIiwiLCBtR2xvYmFsU2V0dGluZ3NE
cml2ZXJWYWx1ZXMpOworCisgICAgICAgIENvbnRlbnRSZXNvbHZlciBjb250ZW50UmVzb2x2ZXIg
PSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgU2V0dGluZ3MuR2xvYmFs
LnB1dFN0cmluZyhjb250ZW50UmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0
U3RyaW5nKFIuc3RyaW5nLmdsb2JhbF9zZXR0aW5nc19kcml2ZXJfc2VsZWN0aW9uX3BrZ3MpLCBk
cml2ZXJQa2dzKTsKKyAgICAgICAgU2V0dGluZ3MuR2xvYmFsLnB1dFN0cmluZyhjb250ZW50UmVz
b2x2ZXIsCisgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmdsb2Jh
bF9zZXR0aW5nc19kcml2ZXJfc2VsZWN0aW9uX3ZhbHVlcyksIGRyaXZlclZhbHVlcyk7CisgICAg
fQorCisgICAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlR2xvYmFsU2V0dGluZ3MoKQorICAgIHsKKyAg
ICAgICAgLy8gVmVyaWZ5IGxlbmd0aHMKKyAgICAgICAgaWYgKG1HbG9iYWxTZXR0aW5nc0RyaXZl
clBrZ3Muc2l6ZSgpICE9IG1HbG9iYWxTZXR0aW5nc0RyaXZlclZhbHVlcy5zaXplKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBsZW5ndGhzIGRvbid0IG1hdGNoLCBzbyBjbGVhciB0
aGUgdmFsdWVzIG91dCBhbmQgcmVidWlsZCBsYXRlci4KKyAgICAgICAgICAgIG1HbG9iYWxTZXR0
aW5nc0RyaXZlclBrZ3MuY2xlYXIoKTsKKyAgICAgICAgICAgIG1HbG9iYWxTZXR0aW5nc0RyaXZl
clZhbHVlcy5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgU3RyaW5nIGRlZmF1bHREcml2ZXIgPSBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZGVm
YXVsdF9kcml2ZXIpOworICAgICAgICAvLyBVc2UgYSB0ZW1wIGxpc3QsIHNpbmNlIHdlJ3JlIHBv
dGVudGlhbGx5IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwgbGlzdC4KKyAgICAgICAgTGlzdDxTdHJp
bmc+IGdsb2JhbFNldHRpbmdzRHJpdmVyUGtncyA9IG5ldyBBcnJheUxpc3Q8PihtR2xvYmFsU2V0
dGluZ3NEcml2ZXJQa2dzKTsKKyAgICAgICAgZm9yIChTdHJpbmcgcGtnTmFtZSA6IGdsb2JhbFNl
dHRpbmdzRHJpdmVyUGtncykKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSB1
bmluc3RhbGxlZCBwYWNrYWdlcy4KKyAgICAgICAgICAgIGlmICghaXNQa2dJbnN0YWxsZWQocGtn
TmFtZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVtb3ZlUGtnRnJvbUdsb2Jh
bFNldHRpbmdzKHBrZ05hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gUmVtb3Zl
IGFueSBwYWNrYWdlcyB3aXRoIGludmFsaWQgZHJpdmVyIHZhbHVlcworICAgICAgICAgICAgZWxz
ZSBpZiAoIWlzVmFsaWREaXZlclZhbHVlKGdldERyaXZlckZvclBrZyhwa2dOYW1lKSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVtb3ZlUGtnRnJvbUdsb2JhbFNldHRpbmdzKHBr
Z05hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSBwYWNrYWdl
cyB3aXRoIHRoZSAnZGVmYXVsdCcgZHJpdmVyIHNlbGVjdGVkCisgICAgICAgICAgICBlbHNlIGlm
IChkZWZhdWx0RHJpdmVyLmVxdWFscyhnZXREcml2ZXJGb3JQa2cocGtnTmFtZSkpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJlbW92ZVBrZ0Zyb21HbG9iYWxTZXR0aW5ncyhwa2dO
YW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9p
ZCByZW1vdmVQa2dGcm9tR2xvYmFsU2V0dGluZ3MoU3RyaW5nIHBrZ05hbWUpCisgICAgeworICAg
ICAgICBpbnQgcGtnSW5kZXggPSBnZXRHbG9iYWxTZXR0aW5nc1BrZ0luZGV4KHBrZ05hbWUpOwor
CisgICAgICAgIG1HbG9iYWxTZXR0aW5nc0RyaXZlclBrZ3MucmVtb3ZlKHBrZ0luZGV4KTsKKyAg
ICAgICAgbUdsb2JhbFNldHRpbmdzRHJpdmVyVmFsdWVzLnJlbW92ZShwa2dJbmRleCk7CisgICAg
fQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0R2xvYmFsU2V0dGluZ3NQa2dJbmRleChTdHJpbmcgcGtn
TmFtZSkKKyAgICB7CisgICAgICAgIGZvciAoaW50IHBrZ0luZGV4ID0gMDsgcGtnSW5kZXggPCBt
R2xvYmFsU2V0dGluZ3NEcml2ZXJQa2dzLnNpemUoKTsgcGtnSW5kZXgrKykKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1HbG9iYWxTZXR0aW5nc0RyaXZlclBrZ3MuZ2V0KHBrZ0luZGV4KS5l
cXVhbHMocGtnTmFtZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBr
Z0luZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIC0xOwor
ICAgIH0KKworICAgIHByaXZhdGUgQm9vbGVhbiBpc1BrZ0luc3RhbGxlZChTdHJpbmcgcGtnTmFt
ZSkKKyAgICB7CisgICAgICAgIGZvciAoUGFja2FnZUluZm8gcGtnIDogbUluc3RhbGxlZFBrZ3Mp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwa2cucGFja2FnZU5hbWUuZXF1YWxzKHBrZ05h
bWUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHByaXZhdGUgQm9vbGVhbiBpc1ZhbGlkRGl2ZXJWYWx1ZShTdHJpbmcgZHJpdmVyVmFsdWUpCisg
ICAgeworICAgICAgICBDaGFyU2VxdWVuY2VbXSBkcml2ZXJzID0gbUNvbnRleHQuZ2V0UmVzb3Vy
Y2VzKCkuZ2V0U3RyaW5nQXJyYXkoUi5hcnJheS5kcml2ZXJfdmFsdWVzKTsKKworICAgICAgICBm
b3IgKENoYXJTZXF1ZW5jZSBkcml2ZXIgOiBkcml2ZXJzKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoZHJpdmVyVmFsdWUuZXF1YWxzKGRyaXZlci50b1N0cmluZygpKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRy
b2lkL2FuZ2xlL2NvbW1vbi9NYWluRnJhZ21lbnQuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29t
bW9uL01haW5GcmFnbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2MGFjYjU5NDc1NmI4NTU3ODZlZjk1
NzI2ZWFhMTA4M2NmZTc0ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL2Nv
bW1vbi9NYWluRnJhZ21lbnQuamF2YQpAQCAtMCwwICsxLDM0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAq
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoK
KyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgor
ICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgY29t
LmFuZHJvaWQuYW5nbGUuY29tbW9uOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZp
bHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXM7CitpbXBvcnQg
YW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNoYW5n
ZUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87Citp
bXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvOworaW1wb3J0IGFuZHJvaWQub3Mu
QnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwu
TG9nOworaW1wb3J0IGFuZHJvaWR4LnByZWZlcmVuY2UuTGlzdFByZWZlcmVuY2U7CitpbXBvcnQg
YW5kcm9pZHgucHJlZmVyZW5jZS5QcmVmZXJlbmNlOworaW1wb3J0IGFuZHJvaWR4LnByZWZlcmVu
Y2UuUHJlZmVyZW5jZUNhdGVnb3J5OworaW1wb3J0IGFuZHJvaWR4LnByZWZlcmVuY2UuUHJlZmVy
ZW5jZUZyYWdtZW50OworaW1wb3J0IGFuZHJvaWR4LnByZWZlcmVuY2UuUHJlZmVyZW5jZU1hbmFn
ZXI7CitpbXBvcnQgYW5kcm9pZHgucHJlZmVyZW5jZS5Td2l0Y2hQcmVmZXJlbmNlOworCitpbXBv
cnQgamF2YS50ZXh0LkNvbGxhdG9yOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBv
cnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOwor
aW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBj
bGFzcyBNYWluRnJhZ21lbnQgZXh0ZW5kcyBQcmVmZXJlbmNlRnJhZ21lbnQgaW1wbGVtZW50cyBP
blNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcgoreworCisgICAgcHJpdmF0ZSBmaW5hbCBT
dHJpbmcgVEFHID0gdGhpcy5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKTsKKworICAgIHByaXZh
dGUgU2hhcmVkUHJlZmVyZW5jZXMgbVByZWZzOworICAgIHByaXZhdGUgR2xvYmFsU2V0dGluZ3Mg
bUdsb2JhbFNldHRpbmdzOworICAgIHByaXZhdGUgUmVjZWl2ZXIgbVJlZnJlc2hSZWNlaXZlciA9
IG5ldyBSZWNlaXZlcigpOworICAgIHByaXZhdGUgU3dpdGNoUHJlZmVyZW5jZSBtQWxsQW5nbGVT
d2l0Y2hQcmVmOworICAgIHByaXZhdGUgU3dpdGNoUHJlZmVyZW5jZSBtU2hvd0FuZ2xlSW5Vc2VE
aWFsb2dTd2l0Y2hQcmVmOworICAgIHByaXZhdGUgTGlzdDxQYWNrYWdlSW5mbz4gbUluc3RhbGxl
ZFBrZ3MgICAgICA9IG5ldyBBcnJheUxpc3Q8PigpOworICAgIHByaXZhdGUgTGlzdDxMaXN0UHJl
ZmVyZW5jZT4gbURyaXZlckxpc3RQcmVmcyA9IG5ldyBBcnJheUxpc3Q8PigpOworCisgICAgU2hh
cmVkUHJlZmVyZW5jZXMuT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIg
PQorICAgICAgICAgICAgbmV3IFNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNo
YW5nZUxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uU2hhcmVkUHJl
ZmVyZW5jZUNoYW5nZWQoU2hhcmVkUHJlZmVyZW5jZXMgcHJlZnMsIFN0cmluZyBrZXkpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIHlldAor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICBAT3ZlcnJpZGUKKyAgICBw
dWJsaWMgdm9pZCBvbkNyZWF0ZShCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKQorICAgIHsKKyAg
ICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKworICAgICAgICBnZXRJ
bnN0YWxsZWRQa2dzTGlzdCgpOworCisgICAgICAgIG1QcmVmcyA9IFByZWZlcmVuY2VNYW5hZ2Vy
LmdldERlZmF1bHRTaGFyZWRQcmVmZXJlbmNlcygKKyAgICAgICAgICAgICAgICBnZXRBY3Rpdml0
eSgpLmdldEFwcGxpY2F0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgdmFsaWRhdGVQcmVmZXJlbmNl
cygpOworCisgICAgICAgIG1HbG9iYWxTZXR0aW5ncyA9IG5ldyBHbG9iYWxTZXR0aW5ncyhnZXRD
b250ZXh0KCksIG1JbnN0YWxsZWRQa2dzKTsKKyAgICAgICAgbWVyZ2VHbG9iYWxTZXR0aW5ncygp
OworCisgICAgICAgIGNyZWF0ZUFsbFVzZUFuZ2xlUHJlZmVyZW5jZSgpOworICAgICAgICBjcmVh
dGVTaG93QW5nbGVJblVzZURpYWxvZ1ByZWZlcmVuY2UoKTsKKworICAgICAgICB1cGRhdGVQcmVm
ZXJlbmNlc0Zyb21HbG9iYWxTZXR0aW5ncygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAg
IHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkKKyAgICB7CisgICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7
CisKKyAgICAgICAgdXBkYXRlUHJlZmVyZW5jZXNGcm9tR2xvYmFsU2V0dGluZ3MoKTsKKworICAg
ICAgICBnZXRBY3Rpdml0eSgpLnJlZ2lzdGVyUmVjZWl2ZXIobVJlZnJlc2hSZWNlaXZlciwKKyAg
ICAgICAgICAgICAgICBuZXcgSW50ZW50RmlsdGVyKAorICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5pbnRlbnRfYW5nbGVfZm9yX2FuZHJvaWRf
dG9hc3RfbWVzc2FnZSkpKTsKKyAgICAgICAgZ2V0UHJlZmVyZW5jZVNjcmVlbigpLmdldFNoYXJl
ZFByZWZlcmVuY2VzKCkucmVnaXN0ZXJPblNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcigK
KyAgICAgICAgICAgICAgICBsaXN0ZW5lcik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAg
cHVibGljIHZvaWQgb25QYXVzZSgpCisgICAgeworICAgICAgICBnZXRBY3Rpdml0eSgpLnVucmVn
aXN0ZXJSZWNlaXZlcihtUmVmcmVzaFJlY2VpdmVyKTsKKyAgICAgICAgZ2V0UHJlZmVyZW5jZVNj
cmVlbigpLmdldFNoYXJlZFByZWZlcmVuY2VzKCkudW5yZWdpc3Rlck9uU2hhcmVkUHJlZmVyZW5j
ZUNoYW5nZUxpc3RlbmVyKAorICAgICAgICAgICAgICAgIGxpc3RlbmVyKTsKKworICAgICAgICBz
dXBlci5vblBhdXNlKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQg
b25DcmVhdGVQcmVmZXJlbmNlcyhCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlLCBTdHJpbmcgcm9v
dEtleSkKKyAgICB7CisgICAgICAgIGFkZFByZWZlcmVuY2VzRnJvbVJlc291cmNlKFIueG1sLm1h
aW4pOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uU2hhcmVkUHJl
ZmVyZW5jZUNoYW5nZWQoU2hhcmVkUHJlZmVyZW5jZXMgc2hhcmVkUHJlZmVyZW5jZXMsIFN0cmlu
ZyBrZXkpCisgICAgeworICAgICAgICBMb2cudihUQUcsICJTaGFyZWQgcHJlZmVyZW5jZSBjaGFu
Z2VkOiBrZXkgPSAnIiArIGtleSArICInIik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVw
ZGF0ZVByZWZlcmVuY2VzRnJvbUdsb2JhbFNldHRpbmdzKCkKKyAgICB7CisgICAgICAgIG1BbGxB
bmdsZVN3aXRjaFByZWYuc2V0Q2hlY2tlZChtR2xvYmFsU2V0dGluZ3MuZ2V0QWxsVXNlQW5nbGUo
KSk7CisgICAgICAgIG1TaG93QW5nbGVJblVzZURpYWxvZ1N3aXRjaFByZWYuc2V0Q2hlY2tlZCht
R2xvYmFsU2V0dGluZ3MuZ2V0U2hvd0FuZ2xlSW5Vc2VEaWFsb2dCb3goKSk7CisgICAgICAgIGNy
ZWF0ZUluc3RhbGxlZEFwcHNMaXN0UHJlZmVyZW5jZSgpOworICAgIH0KKworICAgIHByaXZhdGUg
dm9pZCBjcmVhdGVBbGxVc2VBbmdsZVByZWZlcmVuY2UoKQorICAgIHsKKyAgICAgICAgU3RyaW5n
IGFsbFVzZUFuZ2xlS2V5ID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5wcmVmX2tl
eV9hbGxfYW5nbGUpOworICAgICAgICBCb29sZWFuIGFsbFVzZUFuZ2xlICAgPSBtUHJlZnMuZ2V0
Qm9vbGVhbihhbGxVc2VBbmdsZUtleSwgZmFsc2UpOworICAgICAgICBtQWxsQW5nbGVTd2l0Y2hQ
cmVmICAgPSAoU3dpdGNoUHJlZmVyZW5jZSkgZmluZFByZWZlcmVuY2UoYWxsVXNlQW5nbGVLZXkp
OworICAgICAgICBtQWxsQW5nbGVTd2l0Y2hQcmVmLnNldE9uUHJlZmVyZW5jZUNsaWNrTGlzdGVu
ZXIoCisgICAgICAgICAgICAgICAgbmV3IFByZWZlcmVuY2UuT25QcmVmZXJlbmNlQ2xpY2tMaXN0
ZW5lcigpIHsKKyAgICAgICAgICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBib29sZWFuIG9uUHJlZmVyZW5jZUNsaWNrKFByZWZlcmVuY2UgcHJlZmVyZW5j
ZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVjZWl2
ZXIudXBkYXRlQWxsVXNlQW5nbGUoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZVNob3dBbmdsZUluVXNlRGlhbG9n
UHJlZmVyZW5jZSgpCisgICAgeworICAgICAgICBTdHJpbmcgc2hvd0FuZ2xlSW5Vc2VEaWFsb2dL
ZXkgPQorICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcucHJl
Zl9rZXlfYW5nbGVfaW5fdXNlX2RpYWxvZyk7CisgICAgICAgIEJvb2xlYW4gc2hvd0FuZ2xlSW5V
c2VEaWFsb2dCb3ggPSBtUHJlZnMuZ2V0Qm9vbGVhbihzaG93QW5nbGVJblVzZURpYWxvZ0tleSwg
ZmFsc2UpOworICAgICAgICBtU2hvd0FuZ2xlSW5Vc2VEaWFsb2dTd2l0Y2hQcmVmID0KKyAgICAg
ICAgICAgICAgICAoU3dpdGNoUHJlZmVyZW5jZSkgZmluZFByZWZlcmVuY2Uoc2hvd0FuZ2xlSW5V
c2VEaWFsb2dLZXkpOworICAgICAgICBtU2hvd0FuZ2xlSW5Vc2VEaWFsb2dTd2l0Y2hQcmVmLnNl
dE9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIoCisgICAgICAgICAgICAgICAgbmV3IFByZWZlcmVu
Y2UuT25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICAgICAgQE92
ZXJyaWRlCisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIG9uUHJlZmVyZW5jZUNs
aWNrKFByZWZlcmVuY2UgcHJlZmVyZW5jZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgUmVjZWl2ZXIudXBkYXRlU2hvd0FuZ2xlSW5Vc2VEaWFsb2dCb3go
Z2V0Q29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAgcHJp
dmF0ZSB2b2lkIGNyZWF0ZUluc3RhbGxlZEFwcHNMaXN0UHJlZmVyZW5jZSgpCisgICAgeworICAg
ICAgICBnZXRJbnN0YWxsZWRQa2dzTGlzdCgpOworICAgICAgICBtR2xvYmFsU2V0dGluZ3Muc2V0
SW5zdGFsbGVkUGtncyhtSW5zdGFsbGVkUGtncyk7CisgICAgICAgIG1lcmdlR2xvYmFsU2V0dGlu
Z3MoKTsKKworICAgICAgICBTdHJpbmcgc2VsZWN0RHJpdmVyQ2F0S2V5ID0KKyAgICAgICAgICAg
ICAgICBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLnByZWZfa2V5X3NlbGVjdF9vcGVu
Z2xfZHJpdmVyX2NhdGVnb3J5KTsKKyAgICAgICAgUHJlZmVyZW5jZUNhdGVnb3J5IGluc3RhbGxl
ZFBrZ3NDYXQgPQorICAgICAgICAgICAgICAgIChQcmVmZXJlbmNlQ2F0ZWdvcnkpIGZpbmRQcmVm
ZXJlbmNlKHNlbGVjdERyaXZlckNhdEtleSk7CisgICAgICAgIGluc3RhbGxlZFBrZ3NDYXQucmVt
b3ZlQWxsKCk7CisgICAgICAgIG1Ecml2ZXJMaXN0UHJlZnMuY2xlYXIoKTsKKyAgICAgICAgaWYg
KG1JbnN0YWxsZWRQa2dzLmlzRW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgTGlzdFBy
ZWZlcmVuY2UgbGlzdFByZWZlcmVuY2UgPSBuZXcgTGlzdFByZWZlcmVuY2UoaW5zdGFsbGVkUGtn
c0NhdC5nZXRDb250ZXh0KCkpOworICAgICAgICAgICAgaW5pdEVtcHR5TGlzdFByZWZlcmVuY2Uo
bGlzdFByZWZlcmVuY2UpOworICAgICAgICAgICAgaW5zdGFsbGVkUGtnc0NhdC5hZGRQcmVmZXJl
bmNlKGxpc3RQcmVmZXJlbmNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZvciAoUGFja2FnZUluZm8gcGFja2FnZUluZm8gOiBtSW5zdGFsbGVkUGtn
cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMaXN0UHJlZmVyZW5jZSBsaXN0UHJl
ZmVyZW5jZSA9IG5ldyBMaXN0UHJlZmVyZW5jZShpbnN0YWxsZWRQa2dzQ2F0LmdldENvbnRleHQo
KSk7CisgICAgICAgICAgICAgICAgaW5pdExpc3RQcmVmZXJlbmNlKHBhY2thZ2VJbmZvLCBsaXN0
UHJlZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgaW5zdGFsbGVkUGtnc0NhdC5hZGRQcmVmZXJl
bmNlKGxpc3RQcmVmZXJlbmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZVByZWZlcmVuY2VzKCkKKyAgICB7CisgICAgICAgIE1h
cDxTdHJpbmcsID8+IGFsbFByZWZzID0gbVByZWZzLmdldEFsbCgpOworCisgICAgICAgIC8vIFJl
bW92ZSBQcmVmZXJlbmNlIHZhbHVlcyBmb3IgYW55IHVuaW5zdGFsbGVkIFBLR3MKKyAgICAgICAg
Zm9yIChTdHJpbmcga2V5IDogYWxsUHJlZnMua2V5U2V0KCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIFJlbW92ZSBhbnkgdW5pbnN0YWxsZWQgUEtHcworICAgICAgICAgICAgUGFja2FnZUlu
Zm8gcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb0ZvclBhY2thZ2VOYW1lKGtleSk7CisKKyAg
ICAgICAgICAgIGlmIChwYWNrYWdlSW5mbyAhPSBudWxsKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJlbW92ZVBrZ1ByZWZlcmVuY2Uoa2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBnZXRJbnN0YWxsZWRQa2dzTGlzdCgpCisg
ICAgeworICAgICAgICBMaXN0PFBhY2thZ2VJbmZvPiBwa2dzID0gZ2V0QWN0aXZpdHkoKS5nZXRQ
YWNrYWdlTWFuYWdlcigpLmdldEluc3RhbGxlZFBhY2thZ2VzKDApOworCisgICAgICAgIG1JbnN0
YWxsZWRQa2dzLmNsZWFyKCk7CisKKyAgICAgICAgZm9yIChQYWNrYWdlSW5mbyBwYWNrYWdlSW5m
byA6IHBrZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwYWNrYWdlSW5mby5hcHBsaWNh
dGlvbkluZm8udWlkID09IFByb2Nlc3MuU1lTVEVNX1VJRCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRmls
dGVyIG91dCBhcHBzIHRoYXQgYXJlIHN5c3RlbSBhcHBzCisgICAgICAgICAgICBpZiAoKHBhY2th
Z2VJbmZvLmFwcGxpY2F0aW9uSW5mby5mbGFncyAmIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RF
TSkgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbUluc3RhbGxlZFBrZ3MuYWRkKHBhY2thZ2VJbmZvKTsK
KyAgICAgICAgfQorCisgICAgICAgIENvbGxlY3Rpb25zLnNvcnQobUluc3RhbGxlZFBrZ3MsIGRp
c3BsYXlOYW1lQ29tcGFyYXRvcik7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBDb21wYXJh
dG9yPFBhY2thZ2VJbmZvPiBkaXNwbGF5TmFtZUNvbXBhcmF0b3IgPSBuZXcgQ29tcGFyYXRvcjxQ
YWNrYWdlSW5mbz4oKSB7CisgICAgICAgIHB1YmxpYyBmaW5hbCBpbnQgY29tcGFyZShQYWNrYWdl
SW5mbyBhLCBQYWNrYWdlSW5mbyBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gY29s
bGF0b3IuY29tcGFyZShnZXRBcHBOYW1lKGEpLCBnZXRBcHBOYW1lKGIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHByaXZhdGUgZmluYWwgQ29sbGF0b3IgY29sbGF0b3IgPSBDb2xsYXRvci5nZXRJ
bnN0YW5jZSgpOworICAgIH07CisKKyAgICBwcml2YXRlIFN0cmluZyBnZXRBcHBOYW1lKFBhY2th
Z2VJbmZvIHBhY2thZ2VJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBhY2thZ2VJbmZvLmFw
cGxpY2F0aW9uSW5mby5sb2FkTGFiZWwoZ2V0QWN0aXZpdHkoKS5nZXRQYWNrYWdlTWFuYWdlcigp
KS50b1N0cmluZygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBpbml0RW1wdHlMaXN0UHJl
ZmVyZW5jZShMaXN0UHJlZmVyZW5jZSBsaXN0UHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIFN0
cmluZyBub0FwcHNJbnN0YWxsZWRUaXRsZSA9IGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJp
bmcubm9fYXBwc19pbnN0YWxsZWRfdGl0bGUpOworICAgICAgICBsaXN0UHJlZmVyZW5jZS5zZXRU
aXRsZShub0FwcHNJbnN0YWxsZWRUaXRsZSk7CisKKyAgICAgICAgU3RyaW5nIG5vQXBwc0luc3Rh
bGxlZFN1bW1hcnkgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLm5vX2FwcHNfaW5z
dGFsbGVkX3N1bW1hcnkpOworICAgICAgICBsaXN0UHJlZmVyZW5jZS5zZXRTdW1tYXJ5KG5vQXBw
c0luc3RhbGxlZFN1bW1hcnkpOworCisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldFNlbGVjdGFi
bGUoZmFsc2UpOworCisgICAgICAgIG1Ecml2ZXJMaXN0UHJlZnMuYWRkKGxpc3RQcmVmZXJlbmNl
KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdExpc3RQcmVmZXJlbmNlKFBhY2thZ2VJ
bmZvIHBhY2thZ2VJbmZvLCBMaXN0UHJlZmVyZW5jZSBsaXN0UHJlZmVyZW5jZSkKKyAgICB7Cisg
ICAgICAgIENoYXJTZXF1ZW5jZVtdIGRyaXZlcnMgPSBnZXRSZXNvdXJjZXMoKS5nZXRTdHJpbmdB
cnJheShSLmFycmF5LmRyaXZlcl92YWx1ZXMpOworICAgICAgICBsaXN0UHJlZmVyZW5jZS5zZXRF
bnRyeVZhbHVlcyhkcml2ZXJzKTsKKyAgICAgICAgbGlzdFByZWZlcmVuY2Uuc2V0RW50cmllcyhk
cml2ZXJzKTsKKworICAgICAgICBTdHJpbmcgZGVmYXVsdERyaXZlciA9IGdldENvbnRleHQoKS5n
ZXRTdHJpbmcoUi5zdHJpbmcuZGVmYXVsdF9kcml2ZXIpOworICAgICAgICBsaXN0UHJlZmVyZW5j
ZS5zZXREZWZhdWx0VmFsdWUoZGVmYXVsdERyaXZlcik7CisKKyAgICAgICAgU3RyaW5nIGRpYWxv
Z1RpdGxlS2V5ID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5zZWxlY3Rfb3Blbmds
X2RyaXZlcl90aXRsZSk7CisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldERpYWxvZ1RpdGxlKGRp
YWxvZ1RpdGxlS2V5KTsKKyAgICAgICAgbGlzdFByZWZlcmVuY2Uuc2V0S2V5KHBhY2thZ2VJbmZv
LnBhY2thZ2VOYW1lKTsKKworICAgICAgICBsaXN0UHJlZmVyZW5jZS5zZXRUaXRsZShnZXRBcHBO
YW1lKHBhY2thZ2VJbmZvKSk7CisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldFN1bW1hcnkobVBy
ZWZzLmdldFN0cmluZyhwYWNrYWdlSW5mby5wYWNrYWdlTmFtZSwgZGVmYXVsdERyaXZlcikpOwor
CisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldE9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyKG5l
dyBQcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyKCkgeworICAgICAgICAgICAg
QE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBvblByZWZlcmVuY2VDaGFuZ2Uo
UHJlZmVyZW5jZSBwcmVmZXJlbmNlLCBPYmplY3QgbmV3VmFsdWUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgTGlzdFByZWZlcmVuY2UgbGlzdFByZWZlcmVuY2UgPSAoTGlzdFByZWZl
cmVuY2UpIHByZWZlcmVuY2U7CisKKyAgICAgICAgICAgICAgICBsaXN0UHJlZmVyZW5jZS5zZXRT
dW1tYXJ5KG5ld1ZhbHVlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIG1HbG9iYWxTZXR0
aW5ncy51cGRhdGVQa2cocHJlZmVyZW5jZS5nZXRLZXkoKSwgbmV3VmFsdWUudG9TdHJpbmcoKSk7
CisKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSk7CisKKyAgICAgICAgbURyaXZlckxpc3RQcmVmcy5hZGQobGlzdFByZWZlcmVuY2UpOworICAg
IH0KKworICAgIHByaXZhdGUgdm9pZCByZW1vdmVQa2dQcmVmZXJlbmNlKFN0cmluZyBrZXkpCisg
ICAgeworICAgICAgICBTaGFyZWRQcmVmZXJlbmNlcy5FZGl0b3IgZWRpdG9yID0gbVByZWZzLmVk
aXQoKTsKKworICAgICAgICBlZGl0b3IucmVtb3ZlKGtleSk7CisgICAgICAgIGVkaXRvci5hcHBs
eSgpOworCisgICAgICAgIGZvciAoTGlzdFByZWZlcmVuY2UgbGlzdFByZWZlcmVuY2UgOiBtRHJp
dmVyTGlzdFByZWZzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobGlzdFByZWZlcmVuY2Uu
Z2V0S2V5KCkuZXF1YWxzKGtleSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbURy
aXZlckxpc3RQcmVmcy5yZW1vdmUobGlzdFByZWZlcmVuY2UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBQYWNrYWdlSW5mbyBnZXRQYWNrYWdlSW5mb0Zv
clBhY2thZ2VOYW1lKFN0cmluZyBwa2dOYW1lKQorICAgIHsKKyAgICAgICAgUGFja2FnZUluZm8g
Zm91bmRQYWNrYWdlSW5mbyA9IG51bGw7CisKKyAgICAgICAgZm9yIChQYWNrYWdlSW5mbyBwYWNr
YWdlSW5mbyA6IG1JbnN0YWxsZWRQa2dzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocGtn
TmFtZS5lcXVhbHMoZ2V0QXBwTmFtZShwYWNrYWdlSW5mbykpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGZvdW5kUGFja2FnZUluZm8gPSBwYWNrYWdlSW5mbzsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBm
b3VuZFBhY2thZ2VJbmZvOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBtZXJnZUdsb2JhbFNl
dHRpbmdzKCkKKyAgICB7CisgICAgICAgIFNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciBlZGl0b3Ig
PSBtUHJlZnMuZWRpdCgpOworCisgICAgICAgIGZvciAoUGFja2FnZUluZm8gcGFja2FnZUluZm8g
OiBtSW5zdGFsbGVkUGtncykKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIGRyaXZlciA9
IG1HbG9iYWxTZXR0aW5ncy5nZXREcml2ZXJGb3JQa2cocGFja2FnZUluZm8ucGFja2FnZU5hbWUp
OworCisgICAgICAgICAgICBpZiAoZHJpdmVyICE9IG51bGwpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZWRpdG9yLnB1dFN0cmluZyhwYWNrYWdlSW5mby5wYWNrYWdlTmFtZSwgZHJp
dmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAvLyBObyBHbG9iYWwuU2V0dGluZyBkcml2ZXIgdmFsdWUgZm9yIHRoaXMg
cGFja2FnZSwgc28gbXVzdCBiZSAnZGVmYXVsdCcKKyAgICAgICAgICAgICAgICBTdHJpbmcgZGVm
YXVsdERyaXZlciA9IGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcuZGVmYXVsdF9kcml2
ZXIpOworICAgICAgICAgICAgICAgIGVkaXRvci5wdXRTdHJpbmcocGFja2FnZUluZm8ucGFja2Fn
ZU5hbWUsIGRlZmF1bHREcml2ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZWRpdG9yLmFwcGx5KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmds
ZS9jb21tb24vUmVjZWl2ZXIuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL1JlY2VpdmVy
LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjhiYTdmNmI3YzI5NjJhYzlhZmJjNGIyM2ZlN2IzMDdhMDVhZTY2
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL1JlY2VpdmVyLmph
dmEKQEAgLTAsMCArMSwyMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIGNvbS5hbmRyb2lkLmFuZ2xlLmNvbW1v
bjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBh
bmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50Owor
aW1wb3J0IGFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlczsKK2ltcG9ydCBhbmRyb2lk
LmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBv
cnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0
IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2lt
cG9ydCBhbmRyb2lkeC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyOworCitpbXBvcnQgb3Jn
Lmpzb24uSlNPTkFycmF5OworaW1wb3J0IG9yZy5qc29uLkpTT05FeGNlcHRpb247CitpbXBvcnQg
b3JnLmpzb24uSlNPTk9iamVjdDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBv
cnQgamF2YS5pby5JbnB1dFN0cmVhbTsKKworcHVibGljIGNsYXNzIFJlY2VpdmVyIGV4dGVuZHMg
QnJvYWRjYXN0UmVjZWl2ZXIKK3sKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBU
QUcgICAgICAgICAgICAgID0gIkFuZ2xlUmVjZWl2ZXIiOworICAgIHByaXZhdGUgc3RhdGljIGZp
bmFsIFN0cmluZyBBTkdMRV9SVUxFU19GSUxFID0gImE0YV9ydWxlcy5qc29uIjsKKworICAgIEBP
dmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVu
dCBpbnRlbnQpCisgICAgeworICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlv
bigpOworICAgICAgICBMb2cudihUQUcsICJSZWNlaXZlZCBpbnRlbnQ6ICciICsgYWN0aW9uICsg
IiciKTsKKworICAgICAgICBpZiAoYWN0aW9uLmVxdWFscyhjb250ZXh0LmdldFN0cmluZyhSLnN0
cmluZy5pbnRlbnRfYW5nbGVfZm9yX2FuZHJvaWRfdG9hc3RfbWVzc2FnZSkpKQorICAgICAgICB7
CisgICAgICAgICAgICBCdW5kbGUgcmVzdWx0cyA9IGdldFJlc3VsdEV4dHJhcyh0cnVlKTsKKyAg
ICAgICAgICAgIHJlc3VsdHMucHV0U3RyaW5nKGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmlu
dGVudF9rZXlfYTRhX3RvYXN0X21lc3NhZ2UpLAorICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmdldFN0cmluZyhSLnN0cmluZy5hbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSkpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIGpzb25TdHIg
ICAgICA9IGxvYWRSdWxlcyhjb250ZXh0KTsKKyAgICAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFt
ZXMgPSBwYXJzZVBhY2thZ2VOYW1lcyhqc29uU3RyKTsKKworICAgICAgICAgICAgLy8gVXBkYXRl
IHRoZSBBTkdMRSB3aGl0ZWxpc3QKKyAgICAgICAgICAgIGlmIChwYWNrYWdlTmFtZXMgIT0gbnVs
bCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHbG9iYWxTZXR0aW5ncy51cGRhdGVB
bmdsZVdoaXRlbGlzdChjb250ZXh0LCBwYWNrYWdlTmFtZXMpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB1cGRhdGVEZXZlbG9wZXJPcHRpb25zV2F0Y2hlcihjb250ZXh0KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogT3BlbiB0aGUgcnVsZXMgZmlsZSBhbmQgcHVs
bCBhbGwgdGhlIEpTT04gaW50byBhIHN0cmluZworICAgICAqLworICAgIHByaXZhdGUgU3RyaW5n
IGxvYWRSdWxlcyhDb250ZXh0IGNvbnRleHQpCisgICAgeworICAgICAgICBTdHJpbmcganNvblN0
ciA9IG51bGw7CisKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIElucHV0U3Ry
ZWFtIHJ1bGVzU3RyZWFtID0gY29udGV4dC5nZXRBc3NldHMoKS5vcGVuKEFOR0xFX1JVTEVTX0ZJ
TEUpOworICAgICAgICAgICAgaW50IHNpemUgICAgICAgICAgICAgICAgPSBydWxlc1N0cmVhbS5h
dmFpbGFibGUoKTsKKyAgICAgICAgICAgIGJ5dGVbXSBidWZmZXIgICAgICAgICAgID0gbmV3IGJ5
dGVbc2l6ZV07CisgICAgICAgICAgICBydWxlc1N0cmVhbS5yZWFkKGJ1ZmZlcik7CisgICAgICAg
ICAgICBydWxlc1N0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAganNvblN0ciA9IG5ldyBTdHJp
bmcoYnVmZmVyLCAiVVRGLTgiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSU9FeGNlcHRp
b24gaW9lKQorICAgICAgICB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJGYWlsZWQgdG8gb3Bl
biAiICsgQU5HTEVfUlVMRVNfRklMRSArICI6ICIsIGlvZSk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4ganNvblN0cjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEV4dHJhY3QgYWxsIGFw
cCBwYWNrYWdlIG5hbWVzIGZyb20gdGhlIGpzb24gZmlsZSBhbmQgcmV0dXJuIHRoZW0gY29tbWEg
c2VwYXJhdGVkCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcGFyc2VQYWNrYWdlTmFtZXMo
U3RyaW5nIHJ1bGVzSlNPTikKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcGFja2FnZU5h
bWVzID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKworICAgICAgICB0cnkKKyAgICAgICAgeworICAg
ICAgICAgICAgSlNPTk9iamVjdCBqc29uT2JqID0gbmV3IEpTT05PYmplY3QocnVsZXNKU09OKTsK
KyAgICAgICAgICAgIEpTT05BcnJheSBydWxlcyAgICA9IGpzb25PYmouZ2V0SlNPTkFycmF5KCJS
dWxlcyIpOworICAgICAgICAgICAgaWYgKHJ1bGVzID09IG51bGwpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiTm8gUnVsZXMgaW4gIiArIEFOR0xFX1JVTEVTX0ZJ
TEUpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGgoKTsgaSsrKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEpTT05PYmplY3QgcnVsZSA9IHJ1bGVzLmdldEpTT05PYmpl
Y3QoaSk7CisgICAgICAgICAgICAgICAgSlNPTkFycmF5IGFwcHMgID0gcnVsZS5vcHRKU09OQXJy
YXkoIkFwcGxpY2F0aW9ucyIpOworICAgICAgICAgICAgICAgIGlmIChhcHBzID09IG51bGwpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBMb2cudihUQUcsICJTa2lwcGlu
ZyBSdWxlcyBlbnRyeSB3aXRoIG5vIEFwcGxpY2F0aW9ucyIpOworICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChpbnQg
aiA9IDA7IGogPCBhcHBzLmxlbmd0aCgpOyBqKyspCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBKU09OT2JqZWN0IGFwcCA9IGFwcHMub3B0SlNPTk9iamVjdChqKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIGFwcE5hbWUgPSBhcHAub3B0U3RyaW5nKCJBcHBOYW1l
Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICgoYXBwTmFtZSA9PSBudWxsKSB8fCBhcHBOYW1l
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgTG9nLmUoVEFHLCAiSW52YWxpZCBBcHBOYW1lOiAnIiArIGFwcE5hbWUgKyAiJyIpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghcGFja2FnZU5hbWVz
LnRvU3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwYWNrYWdlTmFtZXMuYXBwZW5kKCIsIik7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWVzLmFwcGVuZChhcHBOYW1lKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMb2cudihUQUcs
ICJQYXJzZWQgdGhlIGZvbGxvd2luZyBwYWNrYWdlIG5hbWVzIGZyb20gIiArIEFOR0xFX1JVTEVT
X0ZJTEUgKyAiOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwYWNrYWdlTmFt
ZXMpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChKU09ORXhjZXB0aW9uIGplKQorICAgICAg
ICB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvciB3aGVuIHBhcnNpbmcgYW5nbGUgSlNP
TjogIiwgamUpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gcGFja2FnZU5hbWVzLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgc3RhdGljIHZv
aWQgdXBkYXRlQWxsVXNlQW5nbGUoQ29udGV4dCBjb250ZXh0KQorICAgIHsKKyAgICAgICAgU2hh
cmVkUHJlZmVyZW5jZXMgcHJlZnMgPSBQcmVmZXJlbmNlTWFuYWdlci5nZXREZWZhdWx0U2hhcmVk
UHJlZmVyZW5jZXMoY29udGV4dCk7CisgICAgICAgIFN0cmluZyBhbGxVc2VBbmdsZUtleSAgID0g
Y29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcucHJlZl9rZXlfYWxsX2FuZ2xlKTsKKyAgICAgICAg
Ym9vbGVhbiBhbGxVc2VBbmdsZSAgICAgPSBwcmVmcy5nZXRCb29sZWFuKGFsbFVzZUFuZ2xlS2V5
LCBmYWxzZSk7CisKKyAgICAgICAgR2xvYmFsU2V0dGluZ3MudXBkYXRlQWxsVXNlQW5nbGUoY29u
dGV4dCwgYWxsVXNlQW5nbGUpOworCisgICAgICAgIExvZy52KFRBRywgIkFsbCBQS0dzIHVzZSBB
TkdMRSBzZXQgdG86ICIgKyBhbGxVc2VBbmdsZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
dXBkYXRlU2hvd0FuZ2xlSW5Vc2VEaWFsb2dCb3goQ29udGV4dCBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgU2hhcmVkUHJlZmVyZW5jZXMgcHJlZnMgPSBQcmVmZXJlbmNlTWFuYWdlci5nZXREZWZh
dWx0U2hhcmVkUHJlZmVyZW5jZXMoY29udGV4dCk7CisgICAgICAgIFN0cmluZyBzaG93QW5nbGVJ
blVzZURpYWxvZ0JveEtleSA9CisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5z
dHJpbmcucHJlZl9rZXlfYW5nbGVfaW5fdXNlX2RpYWxvZyk7CisgICAgICAgIGJvb2xlYW4gc2hv
d0FuZ2xlSW5Vc2VEaWFsb2dCb3ggPSBwcmVmcy5nZXRCb29sZWFuKHNob3dBbmdsZUluVXNlRGlh
bG9nQm94S2V5LCBmYWxzZSk7CisKKyAgICAgICAgR2xvYmFsU2V0dGluZ3MudXBkYXRlU2hvd0Fu
Z2xlSW5Vc2VEaWFsb2coY29udGV4dCwgc2hvd0FuZ2xlSW5Vc2VEaWFsb2dCb3gpOworCisgICAg
ICAgIExvZy52KFRBRywgIlNob3cgJ0FOR0xFIEluIFVzZScgZGlhbG9nIGJveCBzZXQgdG86ICIg
KyBzaG93QW5nbGVJblVzZURpYWxvZ0JveCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogV2hl
biBEZXZlbG9wZXIgT3B0aW9ucyBhcmUgZGlzYWJsZWQsIHJlc2V0IGFsbCBvZiB0aGUgZ2xvYmFs
IHNldHRpbmdzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdHMuCisgICAgICovCisgICAgcHJpdmF0ZSBz
dGF0aWMgdm9pZCB1cGRhdGVEZXZlbG9wZXJPcHRpb25zV2F0Y2hlcihDb250ZXh0IGNvbnRleHQp
CisgICAgeworICAgICAgICBVcmkgc2V0dGluZ1VyaSA9IFNldHRpbmdzLkdsb2JhbC5nZXRVcmlG
b3IoU2V0dGluZ3MuR2xvYmFsLkRFVkVMT1BNRU5UX1NFVFRJTkdTX0VOQUJMRUQpOworCisgICAg
ICAgIENvbnRlbnRPYnNlcnZlciBkZXZlbG9wZXJPcHRpb25zT2JzZXJ2ZXIgPSBuZXcgQ29udGVu
dE9ic2VydmVyKG5ldyBIYW5kbGVyKCkpIHsKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAg
ICAgICAgcHVibGljIHZvaWQgb25DaGFuZ2UoYm9vbGVhbiBzZWxmQ2hhbmdlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHN1cGVyLm9uQ2hhbmdlKHNlbGZDaGFuZ2UpOworCisgICAg
ICAgICAgICAgICAgYm9vbGVhbiBkZXZlbG9wZXJPcHRpb25zRW5hYmxlZCA9CisgICAgICAgICAg
ICAgICAgICAgICAgICAoMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBTZXR0
aW5ncy5HbG9iYWwuZ2V0SW50KGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuR2xvYmFsLkRFVkVMT1BN
RU5UX1NFVFRJTkdTX0VOQUJMRUQsIDApKTsKKworICAgICAgICAgICAgICAgIExvZy52KFRBRywg
IkRldmVsb3BlciBPcHRpb25zIGVuYWJsZWQgdmFsdWUgY2hhbmdlZDogIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArICJkZXZlbG9wZXJPcHRpb25zRW5hYmxlZCA9ICIgKyBk
ZXZlbG9wZXJPcHRpb25zRW5hYmxlZCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWRldmVsb3Bl
ck9wdGlvbnNFbmFibGVkKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gUmVzZXQgdGhlIG5lY2Vzc2FyeSBzZXR0aW5ncyB0byB0aGVpciBkZWZhdWx0cy4KKyAgICAg
ICAgICAgICAgICAgICAgU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIGVkaXRvciA9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJlZmVyZW5jZU1hbmFnZXIuZ2V0RGVmYXVsdFNoYXJlZFBy
ZWZlcmVuY2VzKGNvbnRleHQpLmVkaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmNs
ZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIGVkaXRvci5hcHBseSgpOworICAgICAgICAgICAg
ICAgICAgICBHbG9iYWxTZXR0aW5ncy5jbGVhckFsbEdsb2JhbFNldHRpbmdzKGNvbnRleHQpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBj
b250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKAorICAg
ICAgICAgICAgICAgIHNldHRpbmdVcmksIGZhbHNlLCBkZXZlbG9wZXJPcHRpb25zT2JzZXJ2ZXIp
OworICAgICAgICBkZXZlbG9wZXJPcHRpb25zT2JzZXJ2ZXIub25DaGFuZ2UodHJ1ZSk7CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9jb21tb24vU2VhcmNoUHJvdmlkZXIu
amF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL1NlYXJjaFByb3ZpZGVyLmphdmEKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODg5YWMwNWQ5NWYyZDg2NzcwZWFjNjE3Y2U0YWNlYjdmN2MyNmM0YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL1NlYXJjaFByb3ZpZGVyLmphdmEKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBm
aWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBh
Y2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBh
cHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFT
SVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVu
ZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuYW5nbGUuY29tbW9u
OworCitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuU2VhcmNoSW5kZXhhYmxlc0NvbnRy
YWN0LkNPTFVNTl9JTkRFWF9SQVdfSU5URU5UX0FDVElPTjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9p
ZC5wcm92aWRlci5TZWFyY2hJbmRleGFibGVzQ29udHJhY3QuQ09MVU1OX0lOREVYX1JBV19JTlRF
TlRfVEFSR0VUX0NMQVNTOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaElu
ZGV4YWJsZXNDb250cmFjdC5DT0xVTU5fSU5ERVhfUkFXX0lOVEVOVF9UQVJHRVRfUEFDS0FHRTsK
K2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRlci5TZWFyY2hJbmRleGFibGVzQ29udHJhY3Qu
Q09MVU1OX0lOREVYX1JBV19LRVk7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuU2Vh
cmNoSW5kZXhhYmxlc0NvbnRyYWN0LkNPTFVNTl9JTkRFWF9SQVdfS0VZV09SRFM7CitpbXBvcnQg
c3RhdGljIGFuZHJvaWQucHJvdmlkZXIuU2VhcmNoSW5kZXhhYmxlc0NvbnRyYWN0LkNPTFVNTl9J
TkRFWF9SQVdfU1VNTUFSWV9PTjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRlci5TZWFy
Y2hJbmRleGFibGVzQ29udHJhY3QuQ09MVU1OX0lOREVYX1JBV19USVRMRTsKK2ltcG9ydCBzdGF0
aWMgYW5kcm9pZC5wcm92aWRlci5TZWFyY2hJbmRleGFibGVzQ29udHJhY3QuSU5ERVhBQkxFU19S
QVdfQ09MVU1OUzsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRlci5TZWFyY2hJbmRleGFi
bGVzQ29udHJhY3QuTk9OX0lOREVYQUJMRVNfS0VZU19DT0xVTU5TOworCitpbXBvcnQgYW5kcm9p
ZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9y
dCBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcjsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLk1hdHJp
eEN1cnNvcjsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaEluZGV4YWJsZXNQcm92aWRl
cjsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworCitwdWJsaWMgY2xhc3MgU2Vh
cmNoUHJvdmlkZXIgZXh0ZW5kcyBTZWFyY2hJbmRleGFibGVzUHJvdmlkZXIKK3sKKworICAgIHBy
aXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU2VhcmNoUHJvdmlkZXIiOworCisgICAg
QE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gb25DcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEN1cnNvciBx
dWVyeVhtbFJlc291cmNlcyhTdHJpbmdbXSBwcm9qZWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEN1cnNvciBxdWVy
eVJhd0RhdGEoU3RyaW5nW10gcHJvamVjdGlvbikKKyAgICB7CisgICAgICAgIE1hdHJpeEN1cnNv
ciBjdXJzb3IgPSBuZXcgTWF0cml4Q3Vyc29yKElOREVYQUJMRVNfUkFXX0NPTFVNTlMpOworICAg
ICAgICBDb250ZXh0IGNvbnRleHQgICAgID0gZ2V0Q29udGV4dCgpOworCisgICAgICAgIE9iamVj
dFtdIHJlZiAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IE9iamVjdFtJTkRFWEFCTEVTX1JB
V19DT0xVTU5TLmxlbmd0aF07CisgICAgICAgIHJlZltDT0xVTU5fSU5ERVhfUkFXX0tFWV0gICAg
ICAgICAgID0gY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYW5nbGVfcHJlZmVyZW5jZXMpOwor
ICAgICAgICByZWZbQ09MVU1OX0lOREVYX1JBV19USVRMRV0gICAgICAgICA9IGNvbnRleHQuZ2V0
U3RyaW5nKFIuc3RyaW5nLmFuZ2xlX3ByZWZlcmVuY2VzKTsKKyAgICAgICAgcmVmW0NPTFVNTl9J
TkRFWF9SQVdfU1VNTUFSWV9PTl0gICAgPSBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5hbmds
ZV9wcmVmZXJlbmNlc19zdW1tYXJ5KTsKKyAgICAgICAgcmVmW0NPTFVNTl9JTkRFWF9SQVdfS0VZ
V09SRFNdICAgICAgPSBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5rZXl3b3Jkcyk7CisgICAg
ICAgIHJlZltDT0xVTU5fSU5ERVhfUkFXX0lOVEVOVF9BQ1RJT05dID0gSW50ZW50LkFDVElPTl9N
QUlOOworICAgICAgICByZWZbQ09MVU1OX0lOREVYX1JBV19JTlRFTlRfVEFSR0VUX1BBQ0tBR0Vd
ID0gZ2V0Q29udGV4dCgpLmdldEFwcGxpY2F0aW9uSW5mbygpLnBhY2thZ2VOYW1lOworICAgICAg
ICByZWZbQ09MVU1OX0lOREVYX1JBV19JTlRFTlRfVEFSR0VUX0NMQVNTXSAgID0gImNvbS5hbmRy
b2lkLmFuZ2xlLk1haW5BY3Rpdml0eSI7CisKKyAgICAgICAgY3Vyc29yLmFkZFJvdyhyZWYpOwor
ICAgICAgICByZXR1cm4gY3Vyc29yOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1Ymxp
YyBDdXJzb3IgcXVlcnlOb25JbmRleGFibGVLZXlzKFN0cmluZ1tdIHByb2plY3Rpb24pCisgICAg
eworICAgICAgICBib29sZWFuIGRldmVsb3Blck9wdGlvbnNJc0VuYWJsZWQgPQorICAgICAgICAg
ICAgICAgIFNldHRpbmdzLkdsb2JhbC5nZXRJbnQoZ2V0Q29udGV4dCgpLmdldENvbnRlbnRSZXNv
bHZlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuR2xvYmFsLkRFVkVMT1BN
RU5UX1NFVFRJTkdTX0VOQUJMRUQsIDApCisgICAgICAgICAgICAgICAgIT0gMDsKKworICAgICAg
ICAvLyBJZiBkZXZlbG9wZXIgb3B0aW9ucyBpcyBub3QgZW5hYmxlZCwgQU5HTEUgc2hvdWxkbid0
IGJlIHNlYXJjaGFibGUuCisgICAgICAgIGlmICghZGV2ZWxvcGVyT3B0aW9uc0lzRW5hYmxlZCkK
KyAgICAgICAgeworICAgICAgICAgICAgTWF0cml4Q3Vyc29yIGN1cnNvciA9IG5ldyBNYXRyaXhD
dXJzb3IoTk9OX0lOREVYQUJMRVNfS0VZU19DT0xVTU5TKTsKKyAgICAgICAgICAgIE9iamVjdFtd
IHJvdyAgICAgICAgPSBuZXcgT2JqZWN0W10ge2dldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJp
bmcuYW5nbGVfcHJlZmVyZW5jZXMpfTsKKyAgICAgICAgICAgIGN1cnNvci5hZGRSb3cocm93KTsK
KyAgICAgICAgICAgIHJldHVybiBjdXJzb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21taXQuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21taXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjIxZmY0Mzg3ZGM4MWM1NGM1ZmExM2UzNzAyMjcxMGMxN2E5N2FjMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbWl0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gY29tbWl0Lmg6Ci0vLyAgIFRoaXMgaXMgYSBkZWZhdWx0IGNvbW1pdCBoYXNoIGhlYWRlciwg
d2hlbiBnaXQgaXMgbm90IGF2YWlsYWJsZS4KLS8vCi0KLSNkZWZpbmUgQU5HTEVfQ09NTUlUX0hB
U0ggInVua25vd24gaGFzaCIKLSNkZWZpbmUgQU5HTEVfQ09NTUlUX0hBU0hfU0laRSAxMgotI2Rl
ZmluZSBBTkdMRV9DT01NSVRfREFURSAidW5rbm93biBkYXRlIgotCi0jZGVmaW5lIEFOR0xFX0RJ
U0FCTEVfUFJPR1JBTV9CSU5BUllfTE9BRApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1pdF9pZC5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
aXRfaWQucHkKaW5kZXggMTc0MDc1MGRkNjdmOTkyN2Y2YmZlMmM3ZTM5ZGVmMzIyNDY4NWUyMC4u
ZjllMTU5OGQwYzFmZjA5MzM0NDk2NWY4NzY1OTBjNTVhZjkxMDA5OSAxMDA3NTUKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1pdF9pZC5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbWl0X2lkLnB5CkBAIC0xMSw0MCArMTEsNDcgQEAgaW1wb3J0IHN5
cwogaW1wb3J0IG9zCiAKIHVzYWdlID0gIiIiXAotVXNhZ2U6IGNvbW1pdF9pZC5weSBjaGVjayA8
YW5nbGVfZGlyPiAgICAgICAgICAgICAgICAtIGNoZWNrIGlmIGdpdCBpcyBwcmVzZW50Ci0gICAg
ICAgY29tbWl0X2lkLnB5IGdlbiA8YW5nbGVfZGlyPiA8ZmlsZV90b193cml0ZT4gIC0gZ2VuZXJh
dGUgY29tbWl0LmgiIiIKK1VzYWdlOiBjb21taXRfaWQucHkgY2hlY2sgICAgICAgICAgICAgICAg
LSBjaGVjayBpZiBnaXQgaXMgcHJlc2VudAorICAgICAgIGNvbW1pdF9pZC5weSBnZW4gPGZpbGVf
dG9fd3JpdGU+ICAtIGdlbmVyYXRlIGNvbW1pdC5oIiIiCiAKIAogZGVmIGdyYWJfb3V0cHV0KGNv
bW1hbmQsIGN3ZCk6CiAgICAgcmV0dXJuIHNwLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zcC5QSVBF
LCBzaGVsbD1UcnVlLCBjd2Q9Y3dkKS5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKIAogCi1pZiBs
ZW4oc3lzLmFyZ3YpIDwgMzoKK2lmIGxlbihzeXMuYXJndikgPCAyOgogICAgIHN5cy5leGl0KHVz
YWdlKQogCiBvcGVyYXRpb24gPSBzeXMuYXJndlsxXQotY3dkID0gc3lzLmFyZ3ZbMl0KKworIyBT
ZXQgdGhlIHJvb3Qgb2YgQU5HTEUncyByZXBvIGFzIHRoZSB3b3JraW5nIGRpcmVjdG9yeQorY3dk
ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9f
KSksICcuLicpCisKK2dpdF9kaXJfZXhpc3RzID0gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2lu
KGN3ZCwgJy5naXQnLCAnSEVBRCcpKQogCiBpZiBvcGVyYXRpb24gPT0gJ2NoZWNrJzoKLSAgICBp
bmRleF9wYXRoID0gb3MucGF0aC5qb2luKGN3ZCwgJy5naXQnLCAnaW5kZXgnKQotICAgIGlmIG9z
LnBhdGguZXhpc3RzKGluZGV4X3BhdGgpOgorICAgIGlmIGdpdF9kaXJfZXhpc3RzOgogICAgICAg
ICBwcmludCgiMSIpCiAgICAgZWxzZToKICAgICAgICAgcHJpbnQoIjAiKQogICAgIHN5cy5leGl0
KDApCiAKLWlmIGxlbihzeXMuYXJndikgPCA0IG9yIG9wZXJhdGlvbiAhPSAnZ2VuJzoKK2lmIGxl
bihzeXMuYXJndikgPCAzIG9yIG9wZXJhdGlvbiAhPSAnZ2VuJzoKICAgICBzeXMuZXhpdCh1c2Fn
ZSkKIAotb3V0cHV0X2ZpbGUgPSBzeXMuYXJndlszXQorb3V0cHV0X2ZpbGUgPSBzeXMuYXJndlsy
XQogY29tbWl0X2lkX3NpemUgPSAxMgorY29tbWl0X2lkID0gJ3Vua25vd24gaGFzaCcKK2NvbW1p
dF9kYXRlID0gJ3Vua25vd24gZGF0ZScKK2VuYWJsZV9iaW5hcnlfbG9hZGluZyA9IEZhbHNlCiAK
LXRyeToKLSAgICBjb21taXRfaWQgPSBncmFiX291dHB1dCgnZ2l0IHJldi1wYXJzZSAtLXNob3J0
PSVkIEhFQUQnICUgY29tbWl0X2lkX3NpemUsIGN3ZCkKLSAgICBjb21taXRfZGF0ZSA9IGdyYWJf
b3V0cHV0KCdnaXQgc2hvdyAtcyAtLWZvcm1hdD0lY2kgSEVBRCcsIGN3ZCkKLWV4Y2VwdDoKLSAg
ICBjb21taXRfaWQgPSAnaW52YWxpZC1oYXNoJwotICAgIGNvbW1pdF9kYXRlID0gJ2ludmFsaWQt
ZGF0ZScKK2lmIGdpdF9kaXJfZXhpc3RzOgorICAgIHRyeToKKyAgICAgICAgY29tbWl0X2lkID0g
Z3JhYl9vdXRwdXQoJ2dpdCByZXYtcGFyc2UgLS1zaG9ydD0lZCBIRUFEJyAlIGNvbW1pdF9pZF9z
aXplLCBjd2QpCisgICAgICAgIGNvbW1pdF9kYXRlID0gZ3JhYl9vdXRwdXQoJ2dpdCBzaG93IC1z
IC0tZm9ybWF0PSVjaSBIRUFEJywgY3dkKQorICAgICAgICBlbmFibGVfYmluYXJ5X2xvYWRpbmcg
PSBUcnVlCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCiAKIGhmaWxlID0gb3BlbihvdXRwdXRf
ZmlsZSwgJ3cnKQogCkBAIC01Miw0ICs1OSw3IEBAIGhmaWxlLndyaXRlKCcjZGVmaW5lIEFOR0xF
X0NPTU1JVF9IQVNIICIlcyJcbicgJSBjb21taXRfaWQpCiBoZmlsZS53cml0ZSgnI2RlZmluZSBB
TkdMRV9DT01NSVRfSEFTSF9TSVpFICVkXG4nICUgY29tbWl0X2lkX3NpemUpCiBoZmlsZS53cml0
ZSgnI2RlZmluZSBBTkdMRV9DT01NSVRfREFURSAiJXMiXG4nICUgY29tbWl0X2RhdGUpCiAKK2lm
IG5vdCBlbmFibGVfYmluYXJ5X2xvYWRpbmc6CisgICAgaGZpbGUud3JpdGUoJyNkZWZpbmUgQU5H
TEVfRElTQUJMRV9QUk9HUkFNX0JJTkFSWV9MT0FEXG4nKQorCiBoZmlsZS5jbG9zZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tlZEVudW1zLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tlZEVudW1zLmgKaW5kZXgg
NmZjZmNlNThhODUwZWVjZTkxMDk3ODk0M2VjN2JlM2FlZTFlZWNmMC4uMzhjNjkxMGMxNDkxYTZk
ZWNjNGY2OTAzOTUyOTk2OTM5MDkxM2VhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9QYWNrZWRFbnVtcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vUGFja2VkRW51bXMuaApAQCAtODMsNyArODMsMTQgQEAgY2xhc3MgUGFj
a2VkRW51bU1hcAogICAgICAgICAvLyBXZSB1c2UgYSBmb3IgbG9vcCBpbnN0ZWFkIG9mIHJhbmdl
LWZvciB0byB3b3JrIGFyb3VuZCBhIGxpbWl0YXRpb24gaW4gTVNWQy4KICAgICAgICAgZm9yIChj
b25zdCBJbml0UGFpciAqaXQgPSBpbml0LmJlZ2luKCk7IGl0ICE9IGluaXQuZW5kKCk7ICsraXQp
CiAgICAgICAgIHsKKyNpZiAoX19jcGx1c3BsdXMgPCAyMDE3MDNMKQorICAgICAgICAgICAgLy8g
VGhpcyBob3JyaWJsZSBjb25zdF9jYXN0IHBhdHRlcm4gaXMgbmVjZXNzYXJ5IHRvIHdvcmsgYXJv
dW5kIGEgY29uc3RleHByIGxpbWl0YXRpb24uCisgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9z
dGFja292ZXJmbG93LmNvbS9xLzM0MTk5Nzc0LyAuIE5vdGUgdGhhdCBpdCBzaG91bGQgYmUgZml4
ZWQgd2l0aCBDKysxNy4KKyAgICAgICAgICAgIGNvbnN0X2Nhc3Q8VCAmPihjb25zdF9jYXN0PGNv
bnN0IFN0b3JhZ2UgJj4oCisgICAgICAgICAgICAgICAgbVByaXZhdGVEYXRhKVtzdGF0aWNfY2Fz
dDxVbmRlcmx5aW5nVHlwZT4oaXQtPmZpcnN0KV0pID0gaXQtPnNlY29uZDsKKyNlbHNlCiAgICAg
ICAgICAgICBtUHJpdmF0ZURhdGFbc3RhdGljX2Nhc3Q8VW5kZXJseWluZ1R5cGU+KGl0LT5maXJz
dCldID0gaXQtPnNlY29uZDsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC01NDUsNiAr
NTUyLDExIEBAIEZyb21HTChGcm9tVCBmcm9tKQogewogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEVudW1UPihmcm9tKTsKIH0KKworc3RydWN0IFVuaWZvcm1Mb2NhdGlvbgoreworICAgIGlu
dCB2YWx1ZTsKK307CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogbmFtZXNwYWNlIGVnbApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9QYWNrZWRHTEVudW1zX2F1
dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9QYWNrZWRHTEVu
dW1zX2F1dG9nZW4uY3BwCmluZGV4IDViMzMyMzMwOTVkZDdiMjYwOWM5NWQzZTJhYzA3YzM4NjI0
MjIyY2QuLmVlOGJmNDYwMGU4NjE4MmEwNDM4ZDc0MzlhYzYyYzBjM2Q5MjQxYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUGFja2VkR0xFbnVtc19hdXRv
Z2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tlZEdM
RW51bXNfYXV0b2dlbi5jcHAKQEAgLTYxMyw2ICs2MTMsMTAgQEAgSGFuZGxlVHlwZSBGcm9tR0xl
bnVtPEhhbmRsZVR5cGU+KEdMZW51bSBmcm9tKQogICAgIHsKICAgICAgICAgY2FzZSBHTF9IQU5E
TEVfVFlQRV9PUEFRVUVfRkRfRVhUOgogICAgICAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGU6Ok9w
YXF1ZUZkOworICAgICAgICBjYXNlIEdMX0hBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEU6Cisg
ICAgICAgICAgICByZXR1cm4gSGFuZGxlVHlwZTo6WmlyY29uVm1vOworICAgICAgICBjYXNlIEdM
X0hBTkRMRV9UWVBFX1pJUkNPTl9FVkVOVF9BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBIYW5k
bGVUeXBlOjpaaXJjb25FdmVudDsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBIYW5kbGVUeXBlOjpJbnZhbGlkRW51bTsKICAgICB9CkBAIC02MjQsNiArNjI4LDEwIEBAIEdM
ZW51bSBUb0dMZW51bShIYW5kbGVUeXBlIGZyb20pCiAgICAgewogICAgICAgICBjYXNlIEhhbmRs
ZVR5cGU6Ok9wYXF1ZUZkOgogICAgICAgICAgICAgcmV0dXJuIEdMX0hBTkRMRV9UWVBFX09QQVFV
RV9GRF9FWFQ7CisgICAgICAgIGNhc2UgSGFuZGxlVHlwZTo6WmlyY29uVm1vOgorICAgICAgICAg
ICAgcmV0dXJuIEdMX0hBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEU7CisgICAgICAgIGNhc2Ug
SGFuZGxlVHlwZTo6WmlyY29uRXZlbnQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSEFORExFX1RZ
UEVfWklSQ09OX0VWRU5UX0FOR0xFOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjM3LDYgKzY0NSwxMiBAQCBz
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgSGFuZGxlVHlwZSB2YWx1
ZSkKICAgICAgICAgY2FzZSBIYW5kbGVUeXBlOjpPcGFxdWVGZDoKICAgICAgICAgICAgIG9zIDw8
ICJHTF9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfRVhUIjsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEhhbmRsZVR5cGU6OlppcmNvblZtbzoKKyAgICAgICAgICAgIG9zIDw8ICJHTF9I
QU5ETEVfVFlQRV9aSVJDT05fVk1PX0FOR0xFIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEhhbmRsZVR5cGU6OlppcmNvbkV2ZW50OgorICAgICAgICAgICAgb3MgPDwgIkdMX0hB
TkRMRV9UWVBFX1pJUkNPTl9FVkVOVF9BTkdMRSI7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIG9zIDw8ICJHTF9JTlZBTElEX0VOVU0iOwogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL1BhY2tlZEdMRW51bXNfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9QYWNrZWRHTEVudW1zX2F1dG9nZW4uaAppbmRleCAwNTNiOGEwYjlkMjk4NWViYzI2
ZDMyMjMxZTA3NjNmYTFkOWViNDc1Li42YmU1Zjg3YzFiYTU2YTk1MDQ0ZjUzN2ZlZDBmYzZmMTIx
MzZmODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1Bh
Y2tlZEdMRW51bXNfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vUGFja2VkR0xFbnVtc19hdXRvZ2VuLmgKQEAgLTE3MiwxMCArMTcyLDEyIEBAIHN0ZDo6
b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBHcmFwaGljc1Jlc2V0U3RhdHVz
IHZhbHVlKTsKIAogZW51bSBjbGFzcyBIYW5kbGVUeXBlIDogdWludDhfdAogewotICAgIE9wYXF1
ZUZkID0gMCwKKyAgICBPcGFxdWVGZCAgICA9IDAsCisgICAgWmlyY29uVm1vICAgPSAxLAorICAg
IFppcmNvbkV2ZW50ID0gMiwKIAotICAgIEludmFsaWRFbnVtID0gMSwKLSAgICBFbnVtQ291bnQg
ICA9IDEsCisgICAgSW52YWxpZEVudW0gPSAzLAorICAgIEVudW1Db3VudCAgID0gMywKIH07CiAK
IHRlbXBsYXRlIDw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL2FuZHJvaWRfdXRpbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L2FuZHJvaWRfdXRpbC5jcHAKaW5kZXggMWJlMTJlNWQ4MTUwNTE5NWM1MTYzMWYyMjg3ZWU0ZjEz
NzllNTc1OC4uMjljNTE4NjE1NDMzNDQ3ODVjM2Q5NDQyZjIwOTcxNzZkM2U3OGExMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmRyb2lkX3V0aWwuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5kcm9pZF91dGlsLmNw
cApAQCAtMjY2LDYgKzI2Niw0NiBAQCBHTGVudW0gTmF0aXZlUGl4ZWxGb3JtYXRUb0dMSW50ZXJu
YWxGb3JtYXQoaW50IHBpeGVsRm9ybWF0KQogICAgIH0KIH0KIAoraW50IEdMSW50ZXJuYWxGb3Jt
YXRUb05hdGl2ZVBpeGVsRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBzd2l0
Y2ggKGludGVybmFsRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9SR0JBODoKKyAgICAg
ICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZGRVJfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworICAg
ICAgICBjYXNlIEdMX1JHQjg6CisgICAgICAgICAgICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZP
Uk1BVF9SOEc4QjhYOF9VTk9STTsKKyAgICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgICAg
ICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9SNUc2QjVfVU5PUk07CisgICAgICAgIGNh
c2UgR0xfQkdSQThfRVhUOgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9GT1JN
QVRfQjhHOFI4QThfVU5PUk07CisgICAgICAgIGNhc2UgR0xfUkdCNV9BMToKKyAgICAgICAgICAg
IHJldHVybiBBSEFSRFdBUkVCVUZGRVJfRk9STUFUX0I1RzVSNUExX1VOT1JNOworICAgICAgICBj
YXNlIEdMX1JHQkE0OgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9GT1JNQVRf
QjRHNFI0QTRfVU5PUk07CisgICAgICAgIGNhc2UgR0xfUkdCQTE2RjoKKyAgICAgICAgICAgIHJl
dHVybiBBSEFSRFdBUkVCVUZGRVJfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDsKKyAgICAgICAg
Y2FzZSBHTF9SR0IxMF9BMjoKKyAgICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZGRVJfRk9S
TUFUX1IxMEcxMEIxMEEyX1VOT1JNOworICAgICAgICBjYXNlIEdMX05PTkU6CisgICAgICAgICAg
ICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9CTE9COworICAgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDE2OgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9GT1JN
QVRfRDE2X1VOT1JNOworICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDI0OgorICAgICAg
ICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9GT1JNQVRfRDI0X1VOT1JNOworICAgICAgICBj
YXNlIEdMX0RFUFRIMjRfU1RFTkNJTDg6CisgICAgICAgICAgICByZXR1cm4gQUhBUkRXQVJFQlVG
RkVSX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDsKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01Q
T05FTlQzMkY6CisgICAgICAgICAgICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9EMzJf
RkxPQVQ7CisgICAgICAgIGNhc2UgR0xfREVQVEgzMkZfU1RFTkNJTDg6CisgICAgICAgICAgICBy
ZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9EMzJfRkxPQVRfUzhfVUlOVDsKKyAgICAgICAg
Y2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAgICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZG
RVJfRk9STUFUX1M4X1VJTlQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXQVJOKCkg
PDwgIlVua25vd24gaW50ZXJuYWxGb3JtYXQ6ICIgPDwgaW50ZXJuYWxGb3JtYXQgPDwgIi4gVHJl
YXRpbmcgYXMgMCI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEFIYXJkd2Fy
ZUJ1ZmZlciAqQU5hdGl2ZVdpbmRvd0J1ZmZlclRvQUhhcmR3YXJlQnVmZmVyKEFOYXRpdmVXaW5k
b3dCdWZmZXIgKndpbmRvd0J1ZmZlcikKIHsKICAgICByZXR1cm4gb2Zmc2V0UG9pbnRlcjxBSGFy
ZHdhcmVCdWZmZXI+KHdpbmRvd0J1ZmZlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vYW5kcm9pZF91dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL2FuZHJvaWRfdXRpbC5oCmluZGV4IDk4MjZjNGFiNjE5OGQ0NjEwOWNlZTlm
YTU2NzBjMTJhN2I5YmFkN2EuLmIxYjg4YjVlMWZmMTQzMGRkYzA3YmRjNmI0OTM4ODc5N2E1ZjJh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5kcm9p
ZF91dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmRyb2lk
X3V0aWwuaApAQCAtMzAsNiArMzAsNyBAQCB2b2lkIEdldEFOYXRpdmVXaW5kb3dCdWZmZXJQcm9w
ZXJ0aWVzKGNvbnN0IEFOYXRpdmVXaW5kb3dCdWZmZXIgKmJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpkZXB0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICpwaXhlbEZvcm1hdCk7CiBHTGVudW0gTmF0aXZlUGl4ZWxG
b3JtYXRUb0dMSW50ZXJuYWxGb3JtYXQoaW50IHBpeGVsRm9ybWF0KTsKK2ludCBHTEludGVybmFs
Rm9ybWF0VG9OYXRpdmVQaXhlbEZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQpOwogCiBBSGFy
ZHdhcmVCdWZmZXIgKkFOYXRpdmVXaW5kb3dCdWZmZXJUb0FIYXJkd2FyZUJ1ZmZlcihBTmF0aXZl
V2luZG93QnVmZmVyICp3aW5kb3dCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHMuaAppbmRleCAwZDA0YTgwMDhiOGQyMzNhY2Ni
ZTlhNWE2M2ZhOTFjNmU2ZDAxYWRkLi4xODgyZTdkNTM2ZWVmOGNiNTY3MjI0Mzk2MGY2ZDlkNDVl
YTQxNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Jp
dHNldF91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYml0
c2V0X3V0aWxzLmgKQEAgLTQ5NCwxMSArNDk0LDggQEAgc3RkOjpzaXplX3QgQml0U2V0VDxOLCBC
aXRzVCwgUGFyYW1UPjo6SXRlcmF0b3I6OmdldE5leHRCaXQoKQogdGVtcGxhdGUgPHNpemVfdCBO
PgogdXNpbmcgQml0U2V0MzIgPSBCaXRTZXRUPE4sIHVpbnQzMl90PjsKIAotLy8gU2NhbkZvcndh
cmQgZm9yIDY0LWJpdHMgcmVxdWlyZXMgYSA2NC1iaXQgaW1wbGVtZW50YXRpb24uCi0jaWYgZGVm
aW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQogdGVtcGxhdGUgPHNpemVfdCBOPgogdXNpbmcgQml0
U2V0NjQgPSBCaXRTZXRUPE4sIHVpbnQ2NF90PjsKLSNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9J
U182NF9CSVRfQ1BVKQogCiBuYW1lc3BhY2UgcHJpdgogewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHNfdW5pdHRlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHNfdW5pdHRlc3QuY3Bw
CmluZGV4IDdlMzdhZDQwYTcxMmY3ODA4MDc0NDM4ZGQ0ZGU2OTEwNWI2NTYwMDMuLmY2Yjg0Y2M0
OGU4NzAxMzA3OWM1MGNiYmE1MDVmMDIyNTgzODA4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYml0c2V0X3V0aWxzX3VuaXR0ZXN0LmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91dGlsc191bml0dGVzdC5j
cHAKQEAgLTE1LDE0ICsxNSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgYW5nbGU7CiAKIG5hbWVzcGFj
ZQogewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBCaXRTZXRUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QKIHsKICAgcHJvdGVjdGVkOgotICAgIEJpdFNldDwxMj4gbUJpdHM7CisgICAg
VCBtQml0czsKKyAgICB0eXBlZGVmIFQgQml0U2V0OwogfTsKIAotVEVTVF9GKEJpdFNldFRlc3Qs
IEJhc2ljKQordXNpbmcgQml0U2V0VHlwZXMgPSA6OnRlc3Rpbmc6OlR5cGVzPEJpdFNldDwxMj4s
IEJpdFNldDMyPDEyPiwgQml0U2V0NjQ8MTI+PjsKK1RZUEVEX1RFU1RfU1VJVEUoQml0U2V0VGVz
dCwgQml0U2V0VHlwZXMpOworCitUWVBFRF9URVNUKEJpdFNldFRlc3QsIEJhc2ljKQogeworICAg
IFR5cGVQYXJhbSBtQml0cyA9IHRoaXMtPm1CaXRzOwogICAgIEVYUEVDVF9GQUxTRShtQml0cy5h
bGwoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1CaXRzLmFueSgpKTsKICAgICBFWFBFQ1RfVFJVRSht
Qml0cy5ub25lKCkpOwpAQCAtOTYsOCArMTAyLDkgQEAgVEVTVF9GKEJpdFNldFRlc3QsIEJhc2lj
KQogICAgIEVYUEVDVF9FUShtQml0cy5mbGlwKDEzKS5iaXRzKCkgJiB+a01hc2ssIDB1KTsKIH0K
IAotVEVTVF9GKEJpdFNldFRlc3QsIEJpdHdpc2VPcGVyYXRvcnMpCitUWVBFRF9URVNUKEJpdFNl
dFRlc3QsIEJpdHdpc2VPcGVyYXRvcnMpCiB7CisgICAgVHlwZVBhcmFtIG1CaXRzID0gdGhpcy0+
bUJpdHM7CiAgICAgLy8gVXNlIGEgdmFsdWUgdGhhdCBoYXMgYSAxIGluIHRoZSAxMnRoIGFuZCAx
M3RoIGJpdHMsIHRvIG1ha2Ugc3VyZSBtYXNraW5nIHRvIGV4YWN0bHkgMTIgYml0cwogICAgIC8v
IGRvZXMgbm90IGhhdmUgYW4gb2ZmLWJ5LW9uZSBlcnJvci4KICAgICBjb25zdGV4cHIgdWludDMy
X3Qga1NlbGZWYWx1ZSAgPSAweEY5RTQ7CkBAIC0xMTIsMTAgKzExOSwxMCBAQCBURVNUX0YoQml0
U2V0VGVzdCwgQml0d2lzZU9wZXJhdG9ycykKICAgICBjb25zdGV4cHIgdWludDMyX3Qga1NlbGZT
aGlmdGVkUmlnaHQgPSBrU2VsZk1hc2tlZFZhbHVlID4+IGtTaGlmdCAmIGtNYXNrOwogCiAgICAg
bUJpdHMgfD0ga1NlbGZWYWx1ZTsKLSAgICBCaXRTZXQ8MTI+IG90aGVyKGtPdGhlclZhbHVlKTsK
LSAgICBCaXRTZXQ8MTI+IGFuZGVkKGtTZWxmTWFza2VkVmFsdWUgJiBrT3RoZXJNYXNrZWRWYWx1
ZSk7Ci0gICAgQml0U2V0PDEyPiBvcmVkKGtTZWxmTWFza2VkVmFsdWUgfCBrT3RoZXJNYXNrZWRW
YWx1ZSk7Ci0gICAgQml0U2V0PDEyPiB4b3JlZChrU2VsZk1hc2tlZFZhbHVlIF4ga090aGVyTWFz
a2VkVmFsdWUpOworICAgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpCaXRTZXQgb3RoZXIoa090aGVy
VmFsdWUpOworICAgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpCaXRTZXQgYW5kZWQoa1NlbGZNYXNr
ZWRWYWx1ZSAmIGtPdGhlck1hc2tlZFZhbHVlKTsKKyAgICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
Qml0U2V0IG9yZWQoa1NlbGZNYXNrZWRWYWx1ZSB8IGtPdGhlck1hc2tlZFZhbHVlKTsKKyAgICB0
eXBlbmFtZSBUZXN0Rml4dHVyZTo6Qml0U2V0IHhvcmVkKGtTZWxmTWFza2VkVmFsdWUgXiBrT3Ro
ZXJNYXNrZWRWYWx1ZSk7CiAKICAgICBFWFBFQ1RfRVEobUJpdHMuYml0cygpLCBrU2VsZk1hc2tl
ZFZhbHVlKTsKICAgICBFWFBFQ1RfRVEob3RoZXIuYml0cygpLCBrT3RoZXJNYXNrZWRWYWx1ZSk7
CkBAIC0xMzcsMTggKzE0NCwxOCBAQCBURVNUX0YoQml0U2V0VGVzdCwgQml0d2lzZU9wZXJhdG9y
cykKIAogICAgIG1CaXRzIF49IG90aGVyOwogICAgIG1CaXRzIF49IGFuZGVkOwotICAgIEVYUEVD
VF9FUShtQml0cywgQml0U2V0PDEyPihrU2VsZlZhbHVlKSk7CisgICAgRVhQRUNUX0VRKG1CaXRz
LCB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6Qml0U2V0KGtTZWxmVmFsdWUpKTsKIAotICAgIEVYUEVD
VF9FUShtQml0cyA8PCBrU2hpZnQsIEJpdFNldDwxMj4oa1NlbGZTaGlmdGVkTGVmdCkpOwotICAg
IEVYUEVDVF9FUShtQml0cyA+PiBrU2hpZnQsIEJpdFNldDwxMj4oa1NlbGZTaGlmdGVkUmlnaHQp
KTsKKyAgICBFWFBFQ1RfRVEobUJpdHMgPDwga1NoaWZ0LCB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6
Qml0U2V0KGtTZWxmU2hpZnRlZExlZnQpKTsKKyAgICBFWFBFQ1RfRVEobUJpdHMgPj4ga1NoaWZ0
LCB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6Qml0U2V0KGtTZWxmU2hpZnRlZFJpZ2h0KSk7CiAKICAg
ICBtQml0cyA8PD0ga1NoaWZ0OwotICAgIEVYUEVDVF9FUShtQml0cywgQml0U2V0PDEyPihrU2Vs
ZlNoaWZ0ZWRMZWZ0KSk7CisgICAgRVhQRUNUX0VRKG1CaXRzLCB0eXBlbmFtZSBUZXN0Rml4dHVy
ZTo6Qml0U2V0KGtTZWxmU2hpZnRlZExlZnQpKTsKICAgICBFWFBFQ1RfRVEobUJpdHMuYml0cygp
ICYgfmtNYXNrLCAwdSk7CiAKLSAgICBtQml0cyA9IEJpdFNldDwxMj4oa1NlbGZWYWx1ZSk7Cisg
ICAgbUJpdHMgPSB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6Qml0U2V0KGtTZWxmVmFsdWUpOwogICAg
IG1CaXRzID4+PSBrU2hpZnQ7Ci0gICAgRVhQRUNUX0VRKG1CaXRzLCBCaXRTZXQ8MTI+KGtTZWxm
U2hpZnRlZFJpZ2h0KSk7CisgICAgRVhQRUNUX0VRKG1CaXRzLCB0eXBlbmFtZSBUZXN0Rml4dHVy
ZTo6Qml0U2V0KGtTZWxmU2hpZnRlZFJpZ2h0KSk7CiAgICAgRVhQRUNUX0VRKG1CaXRzLmJpdHMo
KSAmIH5rTWFzaywgMHUpOwogCiAgICAgbUJpdHMgfD0ga1NlbGZNYXNrZWRWYWx1ZTsKQEAgLTE1
NywxNSArMTY0LDIxIEBAIFRFU1RfRihCaXRTZXRUZXN0LCBCaXR3aXNlT3BlcmF0b3JzKQogICAg
IEVYUEVDVF9FUShtQml0cy5iaXRzKCkgJiB+a01hc2ssIDB1KTsKIH0KIAordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBjbGFzcyBCaXRTZXRJdGVyYXRvclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dAogewogICBwcm90ZWN0ZWQ6Ci0gICAgQml0U2V0PDQwPiBtU3RhdGVCaXRzOworICAgIFQgbVN0
YXRlQml0czsKKyAgICB0eXBlZGVmIFQgQml0U2V0OwogfTsKIAordXNpbmcgQml0U2V0SXRlcmF0
b3JUeXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8Qml0U2V0PDQwPiwgQml0U2V0NjQ8NDA+PjsKK1RZ
UEVEX1RFU1RfU1VJVEUoQml0U2V0SXRlcmF0b3JUZXN0LCBCaXRTZXRJdGVyYXRvclR5cGVzKTsK
KwogLy8gU2ltcGxlIGl0ZXJhdG9yIHRlc3QuCi1URVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBJ
dGVyYXRvcikKK1RZUEVEX1RFU1QoQml0U2V0SXRlcmF0b3JUZXN0LCBJdGVyYXRvcikKIHsKKyAg
ICBUeXBlUGFyYW0gbVN0YXRlQml0cyA9IHRoaXMtPm1TdGF0ZUJpdHM7CiAgICAgc3RkOjpzZXQ8
c2l6ZV90PiBvcmlnaW5hbFZhbHVlczsKICAgICBvcmlnaW5hbFZhbHVlcy5pbnNlcnQoMik7CiAg
ICAgb3JpZ2luYWxWYWx1ZXMuaW5zZXJ0KDYpOwpAQCAtMTg5LDggKzIwMiw5IEBAIFRFU1RfRihC
aXRTZXRJdGVyYXRvclRlc3QsIEl0ZXJhdG9yKQogfQogCiAvLyBUZXN0IGFuIGVtcHR5IGl0ZXJh
dG9yLgotVEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgRW1wdHlTZXQpCitUWVBFRF9URVNUKEJp
dFNldEl0ZXJhdG9yVGVzdCwgRW1wdHlTZXQpCiB7CisgICAgVHlwZVBhcmFtIG1TdGF0ZUJpdHMg
PSB0aGlzLT5tU3RhdGVCaXRzOwogICAgIC8vIFdlIGRvbid0IHVzZSB0aGUgRkFJTCBndGVzdCBt
YWNybyBoZXJlIHNpbmNlIGl0IHJldHVybnMgaW1tZWRpYXRlbHksCiAgICAgLy8gY2F1c2luZyBh
biB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcgaW4gTVNWUwogICAgIGJvb2wgc2F3Qml0ID0gZmFs
c2U7CkBAIC0yMDMsOSArMjE3LDEwIEBAIFRFU1RfRihCaXRTZXRJdGVyYXRvclRlc3QsIEVtcHR5
U2V0KQogfQogCiAvLyBUZXN0IGl0ZXJhdGluZyBhIHJlc3VsdCBvZiBjb21iaW5pbmcgdHdvIGJp
dHNldHMuCi1URVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBOb25MVmFsdWVCaXRzZXQpCitUWVBF
RF9URVNUKEJpdFNldEl0ZXJhdG9yVGVzdCwgTm9uTFZhbHVlQml0c2V0KQogewotICAgIEJpdFNl
dDw0MD4gb3RoZXJCaXRzOworICAgIFR5cGVQYXJhbSBtU3RhdGVCaXRzID0gdGhpcy0+bVN0YXRl
Qml0czsKKyAgICB0eXBlbmFtZSBUZXN0Rml4dHVyZTo6Qml0U2V0IG90aGVyQml0czsKIAogICAg
IG1TdGF0ZUJpdHMuc2V0KDEpOwogICAgIG1TdGF0ZUJpdHMuc2V0KDIpOwpAQCAtMjE5LDcgKzIz
NCw3IEBAIFRFU1RfRihCaXRTZXRJdGVyYXRvclRlc3QsIE5vbkxWYWx1ZUJpdHNldCkKIAogICAg
IHN0ZDo6c2V0PHNpemVfdD4gc2VlbkJpdHM7CiAKLSAgICBhbmdsZTo6Qml0U2V0PDQwPiBtYXNr
ZWRCaXRzID0gKG1TdGF0ZUJpdHMgJiBvdGhlckJpdHMpOworICAgIHR5cGVuYW1lIFRlc3RGaXh0
dXJlOjpCaXRTZXQgbWFza2VkQml0cyA9IChtU3RhdGVCaXRzICYgb3RoZXJCaXRzKTsKICAgICBm
b3IgKHNpemVfdCBiaXQgOiBtYXNrZWRCaXRzKQogICAgIHsKICAgICAgICAgRVhQRUNUX0VRKDB1
LCBzZWVuQml0cy5jb3VudChiaXQpKTsKQEAgLTIzMiw4ICsyNDcsOSBAQCBURVNUX0YoQml0U2V0
SXRlcmF0b3JUZXN0LCBOb25MVmFsdWVCaXRzZXQpCiB9CiAKIC8vIFRlc3QgYml0IGFzc2lnbm1l
bnRzLgotVEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgQml0QXNzaWdubWVudCkKK1RZUEVEX1RF
U1QoQml0U2V0SXRlcmF0b3JUZXN0LCBCaXRBc3NpZ25tZW50KQogeworICAgIFR5cGVQYXJhbSBt
U3RhdGVCaXRzID0gdGhpcy0+bVN0YXRlQml0czsKICAgICBzdGQ6OnNldDxzaXplX3Q+IG9yaWdp
bmFsVmFsdWVzOwogICAgIG9yaWdpbmFsVmFsdWVzLmluc2VydCgyKTsKICAgICBvcmlnaW5hbFZh
bHVlcy5pbnNlcnQoNik7CkBAIC0yNTIsOCArMjY4LDkgQEAgVEVTVF9GKEJpdFNldEl0ZXJhdG9y
VGVzdCwgQml0QXNzaWdubWVudCkKIH0KIAogLy8gVGVzdHMgYWRkaW5nIGJpdHMgdG8gdGhlIGl0
ZXJhdG9yIGR1cmluZyBpdGVyYXRpb24uCi1URVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBTZXRM
YXRlckJpdCkKK1RZUEVEX1RFU1QoQml0U2V0SXRlcmF0b3JUZXN0LCBTZXRMYXRlckJpdCkKIHsK
KyAgICBUeXBlUGFyYW0gbVN0YXRlQml0cyAgICAgICAgICAgID0gdGhpcy0+bVN0YXRlQml0czsK
ICAgICBzdGQ6OnNldDxzaXplX3Q+IGV4cGVjdGVkVmFsdWVzID0gezEsIDMsIDUsIDcsIDl9Owog
ICAgIG1TdGF0ZUJpdHMuc2V0KDEpOwogCkBAIC0yNzYsOCArMjkzLDkgQEAgVEVTVF9GKEJpdFNl
dEl0ZXJhdG9yVGVzdCwgU2V0TGF0ZXJCaXQpCiB9CiAKIC8vIFRlc3RzIHJlbW92aW5nIGJpdHMg
ZnJvbSB0aGUgaXRlcmF0b3IgZHVyaW5nIGl0ZXJhdGlvbi4KLVRFU1RfRihCaXRTZXRJdGVyYXRv
clRlc3QsIFJlc2V0TGF0ZXJCaXQpCitUWVBFRF9URVNUKEJpdFNldEl0ZXJhdG9yVGVzdCwgUmVz
ZXRMYXRlckJpdCkKIHsKKyAgICBUeXBlUGFyYW0gbVN0YXRlQml0cyAgICAgICAgICAgID0gdGhp
cy0+bVN0YXRlQml0czsKICAgICBzdGQ6OnNldDxzaXplX3Q+IGV4cGVjdGVkVmFsdWVzID0gezEs
IDMsIDUsIDcsIDl9OwogCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8PSA5OyAr
K2luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9k
ZWJ1Zy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcApp
bmRleCBjMjY4MTVkM2JhMThhOWQ4OWRhM2MxYWMwZDNhM2IwZGRhYmNiOTFlLi4yOTM1MDkzYmVm
ZDU3MWYxMjliYzAzZTY0MjBjMjY2Njg0ZjQwYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29sIFNob3VsZENy
ZWF0ZUxvZ01lc3NhZ2UoTG9nU2V2ZXJpdHkgc2V2ZXJpdHkpCiAjaWYgZGVmaW5lZChBTkdMRV9U
UkFDRV9FTkFCTEVEKQogICAgIHJldHVybiB0cnVlOwogI2VsaWYgZGVmaW5lZChBTkdMRV9FTkFC
TEVfQVNTRVJUUykKLSAgICByZXR1cm4gc2V2ZXJpdHkgIT0gTE9HX0VWRU5UOworICAgIHJldHVy
biBzZXZlcml0eSA9PSBMT0dfRkFUQUwgfHwgc2V2ZXJpdHkgPT0gTE9HX0VSUiB8fCBzZXZlcml0
eSA9PSBMT0dfV0FSTjsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNTQs
NyArMjU0LDggQEAgdm9pZCBUcmFjZShMb2dTZXZlcml0eSBzZXZlcml0eSwgY29uc3QgY2hhciAq
bWVzc2FnZSkKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgb3NfbG9nX3dpdGhfdHlw
ZShPU19MT0dfREVGQVVMVCwgYXBwbGVfbG9nX3R5cGUsICJBTkdMRTogJXM6ICVzXG4iLCBMb2dT
ZXZlcml0eU5hbWUoc2V2ZXJpdHkpLCBzdHIuY19zdHIoKSk7CisgICAgICAgICAgICBvc19sb2df
d2l0aF90eXBlKE9TX0xPR19ERUZBVUxULCBhcHBsZV9sb2dfdHlwZSwgIkFOR0xFOiAlczogJXNc
biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ1NldmVyaXR5TmFtZShzZXZlcml0
eSksIHN0ci5jX3N0cigpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgLy8gTm90ZTogd2Ug
dXNlIGZwcmludGYgYmVjYXVzZSA8aW9zdHJlYW0+IGluY2x1ZGVzIHN0YXRpYyBpbml0aWFsaXpl
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Z1Y2hz
aWFfZWdsL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9mdWNo
c2lhX2VnbC9CVUlMRC5nbgppbmRleCA4NGExMjMxOTAyM2VlNDNhYjZiYjA1MWQ4NTUxMWM4N2Rm
NDQwZTAyLi5iYmE3NmVkMGEyOGUyNGM2ZmM4ZTliOGQwYzFkZmVmNzRkMDEwMmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Z1Y2hzaWFfZWdsL0JVSUxE
LmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZnVjaHNpYV9lZ2wv
QlVJTEQuZ24KQEAgLTExLDIwICsxMSwxMiBAQCBjb25maWcoImNvbmZpZyIpIHsKIH0KIAogYW5n
bGVfc2hhcmVkX2xpYnJhcnkoImZ1Y2hzaWFfZWdsIikgewotICBzb3VyY2VzID0gWwotICAgICJm
dWNoc2lhX2VnbC5jIiwKLSAgXQotICBwdWJsaWMgPSBbCi0gICAgImZ1Y2hzaWFfZWdsLmgiLAot
ICBdCi0gIHB1YmxpY19jb25maWdzID0gWyI6Y29uZmlnIl0KLSAgZGVwcyA9IFsKLSAgICAiOmJh
Y2tlbmQiLAotICBdCisgIHNvdXJjZXMgPSBbICJmdWNoc2lhX2VnbC5jIiBdCisgIHB1YmxpYyA9
IFsgImZ1Y2hzaWFfZWdsLmgiIF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICI6Y29uZmlnIiBdCisg
IGRlcHMgPSBbICI6YmFja2VuZCIgXQogfQogCiBhbmdsZV9zb3VyY2Vfc2V0KCJiYWNrZW5kIikg
ewotICBwdWJsaWMgPSBbCi0gICAgImZ1Y2hzaWFfZWdsX2JhY2tlbmQuaCIsCi0gIF0KKyAgcHVi
bGljID0gWyAiZnVjaHNpYV9lZ2xfYmFja2VuZC5oIiBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCmluZGV4IDlhMmMyZWM4NmJkNTBkNWFh
NGZhNzRkMTRlYjMxY2U4MDgxYWE2YTAuLjMwNmNkZTEyMTBiYzIzMzdhZjNhMDI0NjgwZDlkZWIw
MzVkMjBiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
bWF0aHV0aWwuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0
aHV0aWwuY3BwCkBAIC03OSwxNSArNzksNCBAQCB2b2lkIGNvbnZlcnQ5OTlFNXRvUkdCRmxvYXRz
KHVuc2lnbmVkIGludCBpbnB1dCwgZmxvYXQgKnJlZCwgZmxvYXQgKmdyZWVuLCBmbG9hdAogICAg
ICAgICBpbnB1dERhdGEtPkIgKiBwb3coMi4wZiwgKGludClpbnB1dERhdGEtPkUgLSBnX3NoYXJl
ZGV4cF9iaWFzIC0gZ19zaGFyZWRleHBfbWFudGlzc2FiaXRzKTsKIH0KIAotaW50IEJpdENvdW50
UG9seWZpbGwodWludDMyX3QgYml0cykKLXsKLSAgICBpbnQgb25lcyA9IDA7Ci0gICAgd2hpbGUg
KGJpdHMpCi0gICAgewotICAgICAgICBvbmVzICs9IGJvb2woYml0cyAmIDEpOwotICAgICAgICBi
aXRzID4+PSAxOwotICAgIH0KLSAgICByZXR1cm4gb25lczsKLX0KLQogfSAgLy8gbmFtZXNwYWNl
IGdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1
dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmgKaW5k
ZXggNWJkZTBkYTM5ODI3ZDk0MjNhNzJjMDE1MDU3M2JhZWI2NGE0ZGVhMS4uZjQ3ZDIxNzU3NDQ4
MzU1MTEyNWYxZjg3ZjgzNmQyMmM1MmZkMWZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vbWF0aHV0aWwuaApAQCAtOTgxLDU0ICs5ODEsOTYgQEAgaW5saW5lIHVp
bnQzMl90IEJpdGZpZWxkUmV2ZXJzZSh1aW50MzJfdCB2YWx1ZSkKIH0KIAogLy8gQ291bnQgdGhl
IDEgYml0cy4KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoZGVmaW5lZChfTV9JWDg2KSB8fCBk
ZWZpbmVkKF9NX1g2NCkpCi0jICAgIGRlZmluZSBBTkdMRV9IQVNfQklUQ09VTlRfMzIKKyNpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisjICAgIGlmIGRlZmluZWQo
X01fSVg4NikgfHwgZGVmaW5lZChfTV9YNjQpCituYW1lc3BhY2UgcHJpdgoreworLy8gQ2hlY2sg
UE9QQ05UIGluc3RydWN0aW9uIHN1cHBvcnQgYW5kIGNhY2hlIHRoZSByZXN1bHQuCisvLyBodHRw
czovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9jcHAvaW50cmluc2ljcy9wb3BjbnQxNi1wb3Bj
bnQtcG9wY250NjQjcmVtYXJrcworc3RhdGljIGNvbnN0IGJvb2wga0hhc1BvcGNudCA9IFtdIHsK
KyAgICBpbnQgaW5mb1s0XTsKKyAgICBfX2NwdWlkKCZpbmZvWzBdLCAxKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4oaW5mb1syXSAmIDB4ODAwMDAwKTsKK30oKTsKK30gIC8vIG5hbWVz
cGFjZSBwcml2CisKKy8vIFBvbHlmaWxscyBmb3IgeDg2L3g2NCBDUFVzIHdpdGhvdXQgUE9QQ05U
LgorLy8gaHR0cHM6Ly9ncmFwaGljcy5zdGFuZm9yZC5lZHUvfnNlYW5kZXIvYml0aGFja3MuaHRt
bCNDb3VudEJpdHNTZXRQYXJhbGxlbAoraW5saW5lIGludCBCaXRDb3VudFBvbHlmaWxsKHVpbnQz
Ml90IGJpdHMpCit7CisgICAgYml0cyA9IGJpdHMgLSAoKGJpdHMgPj4gMSkgJiAweDU1NTU1NTU1
KTsKKyAgICBiaXRzID0gKGJpdHMgJiAweDMzMzMzMzMzKSArICgoYml0cyA+PiAyKSAmIDB4MzMz
MzMzMzMpOworICAgIGJpdHMgPSAoKGJpdHMgKyAoYml0cyA+PiA0KSAmIDB4MEYwRjBGMEYpICog
MHgwMTAxMDEwMSkgPj4gMjQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYml0cyk7Cit9
CisKK2lubGluZSBpbnQgQml0Q291bnRQb2x5ZmlsbCh1aW50NjRfdCBiaXRzKQoreworICAgIGJp
dHMgPSBiaXRzIC0gKChiaXRzID4+IDEpICYgMHg1NTU1NTU1NTU1NTU1NTU1dWxsKTsKKyAgICBi
aXRzID0gKGJpdHMgJiAweDMzMzMzMzMzMzMzMzMzMzN1bGwpICsgKChiaXRzID4+IDIpICYgMHgz
MzMzMzMzMzMzMzMzMzMzdWxsKTsKKyAgICBiaXRzID0gKChiaXRzICsgKGJpdHMgPj4gNCkgJiAw
eDBGMEYwRjBGMEYwRjBGMEZ1bGwpICogMHgwMTAxMDEwMTAxMDEwMTAxdWxsKSA+PiA1NjsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKTsKK30KKwogaW5saW5lIGludCBCaXRDb3Vu
dCh1aW50MzJfdCBiaXRzKQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KF9fcG9wY250
KGJpdHMpKTsKKyAgICBpZiAocHJpdjo6a0hhc1BvcGNudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KF9fcG9wY250KGJpdHMpKTsKKyAgICB9CisgICAgcmV0dXJuIEJp
dENvdW50UG9seWZpbGwoYml0cyk7CiB9Ci0jICAgIGlmIGRlZmluZWQoX01fWDY0KQotIyAgICAg
ICAgZGVmaW5lIEFOR0xFX0hBU19CSVRDT1VOVF82NAorCiBpbmxpbmUgaW50IEJpdENvdW50KHVp
bnQ2NF90IGJpdHMpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oX19wb3BjbnQ2NChi
aXRzKSk7CisgICAgaWYgKHByaXY6OmtIYXNQb3BjbnQpCisgICAgeworIyAgICAgICAgaWYgZGVm
aW5lZChfTV9YNjQpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KF9fcG9wY250NjQo
Yml0cykpOworIyAgICAgICAgZWxzZSAgIC8vIHg4NgorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihfX3BvcGNudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cyA+PiAzMikpICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wb3BjbnQoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGJpdHMpKSk7CisjICAgICAgICBlbmRpZiAgLy8gZGVmaW5lZChfTV9YNjQpCisgICAgfQor
ICAgIHJldHVybiBCaXRDb3VudFBvbHlmaWxsKGJpdHMpOwogfQotIyAgICBlbmRpZiAgLy8gZGVm
aW5lZChfTV9YNjQpCi0jZW5kaWYgICAgICAvLyBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQo
X01fWDY0KQogCi0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9QT1NJWCkKLSMgICAgZGVmaW5l
IEFOR0xFX0hBU19CSVRDT1VOVF8zMgorIyAgICBlbGlmIGRlZmluZWQoX01fQVJNKSB8fCBkZWZp
bmVkKF9NX0FSTTY0KQorCisvLyBNU1ZDJ3MgX0NvdW50T25lQml0cyogaW50cmluc2ljcyBhcmUg
bm90IGRlZmluZWQgZm9yIEFSTTY0LCBtb3Jlb3ZlciB0aGV5IGRvIG5vdCB1c2UgZGVkaWNhdGVk
CisvLyBORU9OIGluc3RydWN0aW9ucy4KKwogaW5saW5lIGludCBCaXRDb3VudCh1aW50MzJfdCBi
aXRzKQogewotICAgIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnQoYml0cyk7CisgICAgLy8gY2Fz
dCBiaXRzIHRvIDh4OCBkYXRhdHlwZSBhbmQgdXNlIFZDTlQgb24gaXQKKyAgICBjb25zdCB1aW50
OHg4X3QgdnN1bSA9IHZjbnRfdTgodmNyZWF0ZV91OChzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0
cykpKTsKKworICAgIC8vIHBhaXJ3aXNlIHN1bXM6IDh4OCAtPiAxNng0IC0+IDMyeDIKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2Z2V0X2xhbmVfdTMyKHZwYWRkbF91MTYodnBhZGRsX3U4
KHZzdW0pKSwgMCkpOwogfQogCi0jICAgIGlmIGRlZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkK
LSMgICAgICAgIGRlZmluZSBBTkdMRV9IQVNfQklUQ09VTlRfNjQKIGlubGluZSBpbnQgQml0Q291
bnQodWludDY0X3QgYml0cykKIHsKLSAgICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50bGwoYml0
cyk7Ci19Ci0jICAgIGVuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUpCi0jZW5k
aWYgICAgICAvLyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BPU0lYKQorICAgIC8vIGNhc3QgYml0
cyB0byA4eDggZGF0YXR5cGUgYW5kIHVzZSBWQ05UIG9uIGl0CisgICAgY29uc3QgdWludDh4OF90
IHZzdW0gPSB2Y250X3U4KHZjcmVhdGVfdTgoYml0cykpOwogCi1pbnQgQml0Q291bnRQb2x5Zmls
bCh1aW50MzJfdCBiaXRzKTsKKyAgICAvLyBwYWlyd2lzZSBzdW1zOiA4eDggLT4gMTZ4NCAtPiAz
MngyIC0+IDY0eDEKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2Z2V0X2xhbmVfdTY0KHZw
YWRkbF91MzIodnBhZGRsX3UxNih2cGFkZGxfdTgodnN1bSkpKSwgMCkpOworfQorIyAgICBlbmRp
ZiAgLy8gZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkKKyNlbmRpZiAgICAgIC8v
IGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKIAotI2lmICFkZWZpbmVk
KEFOR0xFX0hBU19CSVRDT1VOVF8zMikKLWlubGluZSBpbnQgQml0Q291bnQoY29uc3QgdWludDMy
X3QgYml0cykKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BPU0lYKSB8fCBkZWZpbmVkKF9f
Y2xhbmdfXykKK2lubGluZSBpbnQgQml0Q291bnQodWludDMyX3QgYml0cykKIHsKLSAgICByZXR1
cm4gQml0Q291bnRQb2x5ZmlsbChiaXRzKTsKKyAgICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50
KGJpdHMpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChBTkdMRV9IQVNfQklUQ09VTlRfMzIpCiAK
LSNpZiAhZGVmaW5lZChBTkdMRV9IQVNfQklUQ09VTlRfNjQpCi1pbmxpbmUgaW50IEJpdENvdW50
KGNvbnN0IHVpbnQ2NF90IGJpdHMpCitpbmxpbmUgaW50IEJpdENvdW50KHVpbnQ2NF90IGJpdHMp
CiB7Ci0gICAgcmV0dXJuIEJpdENvdW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRzID4+IDMy
KSkgKyBCaXRDb3VudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cykpOworICAgIHJldHVybiBf
X2J1aWx0aW5fcG9wY291bnRsbChiaXRzKTsKIH0KLSNlbmRpZiAgLy8gIWRlZmluZWQoQU5HTEVf
SEFTX0JJVENPVU5UXzY0KQotI3VuZGVmIEFOR0xFX0hBU19CSVRDT1VOVF8zMgotI3VuZGVmIEFO
R0xFX0hBU19CSVRDT1VOVF82NAorI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BP
U0lYKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykKIAogaW5saW5lIGludCBCaXRDb3VudCh1aW50OF90
IGJpdHMpCiB7CkBAIC0xMDUyLDE3ICsxMDk0LDI4IEBAIGlubGluZSB1bnNpZ25lZCBsb25nIFNj
YW5Gb3J3YXJkKHVpbnQzMl90IGJpdHMpCiAgICAgcmV0dXJuIGZpcnN0Qml0SW5kZXg7CiB9CiAK
LSMgICAgaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQogaW5saW5lIHVuc2lnbmVkIGxv
bmcgU2NhbkZvcndhcmQodWludDY0X3QgYml0cykKIHsKICAgICBBU1NFUlQoYml0cyAhPSAwdSk7
CiAgICAgdW5zaWduZWQgbG9uZyBmaXJzdEJpdEluZGV4ID0gMHVsOwotICAgIHVuc2lnbmVkIGNo
YXIgcmV0ICAgICAgICAgICA9IF9CaXRTY2FuRm9yd2FyZDY0KCZmaXJzdEJpdEluZGV4LCBiaXRz
KTsKKyMgICAgaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQorICAgIHVuc2lnbmVkIGNo
YXIgcmV0ID0gX0JpdFNjYW5Gb3J3YXJkNjQoJmZpcnN0Qml0SW5kZXgsIGJpdHMpOworIyAgICBl
bHNlCisgICAgdW5zaWduZWQgY2hhciByZXQ7CisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90
PihiaXRzKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0ID0gX0JpdFNjYW5Gb3J3YXJkKCZmaXJz
dEJpdEluZGV4LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cyA+PiAzMikpOworICAgICAgICBm
aXJzdEJpdEluZGV4ICs9IDMydWw7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dCA9IF9CaXRTY2FuRm9yd2FyZCgmZmlyc3RCaXRJbmRleCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGJpdHMpKTsKKyAgICB9CisjICAgIGVuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9D
UFUpCiAgICAgQVNTRVJUKHJldCAhPSAwdSk7CiAgICAgcmV0dXJuIGZpcnN0Qml0SW5kZXg7CiB9
Ci0jICAgIGVuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUpCi0jZW5kaWYgICAg
ICAvLyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCisjZW5kaWYgIC8vIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fV0lORE9XUykKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fUE9T
SVgpCiBpbmxpbmUgdW5zaWduZWQgbG9uZyBTY2FuRm9yd2FyZCh1aW50MzJfdCBiaXRzKQpAQCAt
MTA3MSwxNCArMTEyNCwxOCBAQCBpbmxpbmUgdW5zaWduZWQgbG9uZyBTY2FuRm9yd2FyZCh1aW50
MzJfdCBiaXRzKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihfX2J1aWx0
aW5fY3R6KGJpdHMpKTsKIH0KIAotIyAgICBpZiBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUp
CiBpbmxpbmUgdW5zaWduZWQgbG9uZyBTY2FuRm9yd2FyZCh1aW50NjRfdCBiaXRzKQogewogICAg
IEFTU0VSVChiaXRzICE9IDB1KTsKKyMgICAgaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BV
KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihfX2J1aWx0aW5fY3R6bGwo
Yml0cykpOwotfQorIyAgICBlbHNlCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRzKSA9PSAwCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA/IF9fYnVpbHRpbl9jdHooc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGJpdHMgPj4gMzIpKSArIDMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IF9fYnVpbHRpbl9jdHooc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpdHMpKSk7CiAj
ICAgIGVuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUpCi0jZW5kaWYgICAgICAv
LyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BPU0lYKQorfQorI2VuZGlmICAvLyBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX1BPU0lYKQogCiBpbmxpbmUgdW5zaWduZWQgbG9uZyBTY2FuRm9yd2FyZCh1
aW50OF90IGJpdHMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL21hdGh1dGlsX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vbWF0aHV0aWxfdW5pdHRlc3QuY3BwCmluZGV4IGUzNTQzMzQwY2RiM2JlOWExZGVh
NDU0NTRjMGZlNjBlNDBhNmFlZGMuLjYwZGY2ZDBhNTE3MGMwMDkzMjg1ZGZiYWI1NjA4N2U2Yjcx
MWFmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0
aHV0aWxfdW5pdHRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vbWF0aHV0aWxfdW5pdHRlc3QuY3BwCkBAIC0yNTgsMTEgKzI1OCwxMiBAQCBURVNUKE1hdGhV
dGlsVGVzdCwgQml0Q291bnQpCiAgICAgRVhQRUNUX0VRKDMyLCBnbDo6Qml0Q291bnQoMHhGRkZG
RkZGRnUpKTsKICAgICBFWFBFQ1RfRVEoMTAsIGdsOjpCaXRDb3VudCgweDE3MTAzMTIxdSkpOwog
Ci0jaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQogICAgIEVYUEVDVF9FUSgwLCBnbDo6
Qml0Q291bnQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB1bGwpKSk7CiAgICAgRVhQRUNUX0VRKDMy
LCBnbDo6Qml0Q291bnQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4RkZGRkZGRkZ1bGwpKSk7CiAg
ICAgRVhQRUNUX0VRKDEwLCBnbDo6Qml0Q291bnQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4MTcx
MDMxMjF1bGwpKSk7Ci0jZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKKwor
ICAgIEVYUEVDVF9FUSgzMywgZ2w6OkJpdENvdW50KHN0YXRpY19jYXN0PHVpbnQ2NF90PigweEZG
RkZGRkZGODAwMDAwMDB1bGwpKSk7CisgICAgRVhQRUNUX0VRKDExLCBnbDo6Qml0Q291bnQoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KDB4MTcxMDMxMjE4MDAwMDAwMHVsbCkpKTsKIH0KIAogLy8gVGVz
dCBTY2FuRm9yd2FyZCwgd2hpY2ggc2NhbnMgZm9yIHRoZSBsZWFzdCBzaWduaWZpY2FudCAxIGJp
dCBmcm9tIGEgbm9uLXplcm8gaW50ZWdlci4KQEAgLTI3MiwxMSArMjczLDEzIEBAIFRFU1QoTWF0
aFV0aWxUZXN0LCBTY2FuRm9yd2FyZCkKICAgICBFWFBFQ1RfRVEoMTZ1bCwgZ2w6OlNjYW5Gb3J3
YXJkKDB4ODAwMTAwMDB1KSk7CiAgICAgRVhQRUNUX0VRKDMxdWwsIGdsOjpTY2FuRm9yd2FyZCgw
eDgwMDAwMDAwdSkpOwogCi0jaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQogICAgIEVY
UEVDVF9FUSgwdWwsIGdsOjpTY2FuRm9yd2FyZChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMXVsbCkp
KTsKICAgICBFWFBFQ1RfRVEoMTZ1bCwgZ2w6OlNjYW5Gb3J3YXJkKHN0YXRpY19jYXN0PHVpbnQ2
NF90PigweDgwMDEwMDAwdWxsKSkpOwogICAgIEVYUEVDVF9FUSgzMXVsLCBnbDo6U2NhbkZvcndh
cmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4ODAwMDAwMDB1bGwpKSk7Ci0jZW5kaWYgIC8vIGRl
ZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKKworICAgIEVYUEVDVF9FUSgzMnVsLCBnbDo6U2Nh
bkZvcndhcmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4MTAwMDAwMDAwdWxsKSkpOworICAgIEVY
UEVDVF9FUSg0OHVsLCBnbDo6U2NhbkZvcndhcmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4ODAw
MTAwMDAwMDAwMDAwMHVsbCkpKTsKKyAgICBFWFBFQ1RfRVEoNjN1bCwgZ2w6OlNjYW5Gb3J3YXJk
KHN0YXRpY19jYXN0PHVpbnQ2NF90PigweDgwMDAwMDAwMDAwMDAwMDB1bGwpKSk7CiB9CiAKIC8v
IFRlc3QgU2NhblJldmVyc2UsIHdoaWNoIHNjYW5zIGZvciB0aGUgbW9zdCBzaWduaWZpY2FudCAx
IGJpdCBmcm9tIGEgbm9uLXplcm8gaW50ZWdlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vbWF0cml4X3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL21hdHJpeF91dGlscy5oCmluZGV4IDViMzQ2MjA0NWM0OWQwNmJjZTI2
YzkyN2Q5MTMyODg5ZGY1ZjMxOGMuLjdjY2E3YTk0NjFjOWM0OWVjOWI3NGY5ODJiZmZhNzVjM2Vj
NzQ1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0
cml4X3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRy
aXhfdXRpbHMuaApAQCAtMTM0LDYgKzEzNCw3IEBAIGNsYXNzIE1hdHJpeAogCiAgICAgc3RkOjp2
ZWN0b3I8VD4gZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtRWxlbWVudHM7IH0KICAgICBUICpk
YXRhKCkgeyByZXR1cm4gbUVsZW1lbnRzLmRhdGEoKTsgfQorICAgIGNvbnN0IFQgKmNvbnN0RGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1FbGVtZW50cy5kYXRhKCk7IH0KIAogICAgIE1hdHJpeDxUPiBj
b21wTXVsdChjb25zdCBNYXRyaXg8VD4gJm1hdDEpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9wYWNrZWRfZ2xfZW51bXMuanNvbiBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vcGFja2VkX2dsX2VudW1zLmpzb24K
aW5kZXggOTkzYWJjOTExY2U1ZjNjYTJiOTZiZTk0NTQ0NzNjNzljY2JhZjZkMC4uM2MzOGM2ZTAy
NDEzMDRlNzcxYWMxMmYyNDcxN2E1OTg5MThlNzJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi9wYWNrZWRfZ2xfZW51bXMuanNvbgorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3BhY2tlZF9nbF9lbnVtcy5qc29uCkBAIC0yNjcs
NyArMjY3LDkgQEAKICAgICB9LAogICAgICJIYW5kbGVUeXBlIjoKICAgICB7Ci0gICAgICAgICJP
cGFxdWVGZCI6ICJHTF9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfRVhUIgorICAgICAgICAiT3BhcXVl
RmQiOiAiR0xfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0VYVCIsCisgICAgICAgICJaaXJjb25WbW8i
OiAiR0xfSEFORExFX1RZUEVfWklSQ09OX1ZNT19BTkdMRSIsCisgICAgICAgICJaaXJjb25FdmVu
dCI6ICJHTF9IQU5ETEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEUiCiAgICAgfSwKICAgICAiSW1h
Z2VMYXlvdXQiOgogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vc3RyaW5nX3V0aWxzLmNwcAppbmRleCBlNjgzNmJhYzZlNWM4NzVjZjQ1OGI5M2Y1YWNj
Njc3ZDQ2NDdlMmM4Li5hNjkzZTIxY2M1ZDFhOWU0MzkyZjhiMWExNmYyOTQzMDNiYmU5Y2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGls
cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRp
bHMuY3BwCkBAIC03LDcgKzcsNyBAQAogLy8gICBTdHJpbmcgaGVscGVyIGZ1bmN0aW9ucy4KIC8v
CiAKLSNpbmNsdWRlICJzdHJpbmdfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vc3RyaW5nX3V0
aWxzLmgiCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTE2
LDYgKzE2LDcgQEAKICNpbmNsdWRlIDxzc3RyZWFtPgogCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRm
b3JtLmgiCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgogCiBuYW1lc3BhY2UgYW5n
bGUKIHsKQEAgLTIwOSw0ICsyMTAsOSBAQCBib29sIFJlcGxhY2VTdWJzdHJpbmcoc3RkOjpzdHJp
bmcgKnN0ciwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IEdldFN0cmluZ3NGcm9tRW52aXJvbm1lbnRWYXIoY29uc3QgY2hhciAqdmFyTmFtZSwgY29uc3Qg
Y2hhciAqc2VwYXJhdG9yKQoreworICAgIHN0ZDo6c3RyaW5nIGVudmlyb25tZW50ID0gR2V0RW52
aXJvbm1lbnRWYXIodmFyTmFtZSk7CisgICAgcmV0dXJuIFNwbGl0U3RyaW5nKGVudmlyb25tZW50
LCBzZXBhcmF0b3IsIFRSSU1fV0hJVEVTUEFDRSwgU1BMSVRfV0FOVF9OT05FTVBUWSk7Cit9CiB9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vc3RyaW5nX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3N0cmluZ191dGlscy5oCmluZGV4IDU0M2JhMzg2MDE1Yjc2MmVjMTkxNzA2OTZkOGE1
MTMzNjlkODRlOTMuLjU0MGE0MjNkZDg5MWNiMDZkNmQ0YjM4M2Q4ZDdlYjQ3OWJlYTk5OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMu
aApAQCAtODEsNiArODEsOSBAQCBib29sIFJlcGxhY2VTdWJzdHJpbmcoc3RkOjpzdHJpbmcgKnN0
ciwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc3Vic3RyaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZyZXBsYWNlbWVudCk7CiAK
Ky8vIFNwbGl0IHVwIGEgc3RyaW5nIHBhcnNlZCBmcm9tIGFuIGVudmlyb25tZW50IHZhcmlhYmxl
Lgorc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldFN0cmluZ3NGcm9tRW52aXJvbm1lbnRWYXIo
Y29uc3QgY2hhciAqdmFyTmFtZSwgY29uc3QgY2hhciAqc2VwYXJhdG9yKTsKKwogfSAgLy8gbmFt
ZXNwYWNlIGFuZ2xlCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfU1RSSU5HX1VUSUxTX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5jcHAK
aW5kZXggNTQ2OTNiM2Q1ODk2YzU2NjgxYTAwNzdkNDczMTBlMzc4ZjkxNTYxNC4uOGYzZTNmMDQx
ZDk1OTU2M2ViNjgxOGFmMmUyYTFmOWJjZDNmMTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmNwcApAQCAtNiw3ICs2LDcgQEAK
IAogLy8gc3lzdGVtX3V0aWxzLmNwcDogSW1wbGVtZW50YXRpb24gb2YgY29tbW9uIGZ1bmN0aW9u
cwogCi0jaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbV91
dGlscy5oIgogCiBuYW1lc3BhY2UgYW5nbGUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5oCmluZGV4IGMwNjA3YWMwMTJjOTI5MzgyY2Nk
NTM0NTJhMzgzMzYyMGQyMjNhZjAuLjlkZGExNDQzNzFkZmVkYmFjYmFlYmRhNGYzNzA2YmZmMjdj
NmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lz
dGVtX3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0
ZW1fdXRpbHMuaApAQCAtMTIsMTAgKzEyLDEzIEBACiAjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFs
LmgiCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKIAorI2luY2x1ZGUgPHN0cmluZz4K
KwogbmFtZXNwYWNlIGFuZ2xlCiB7CiBzdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlUGF0aCgpOwog
c3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpOworc3RkOjpzdHJpbmcgR2V0SGVs
cGVyRXhlY3V0YWJsZURpcigpOwogY29uc3QgY2hhciAqR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lv
bigpOwogY29uc3QgY2hhciAqR2V0RXhlY3V0YWJsZUV4dGVuc2lvbigpOwogY2hhciBHZXRQYXRo
U2VwYXJhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL3N5c3RlbV91dGlsc19wb3NpeC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL3N5c3RlbV91dGlsc19wb3NpeC5jcHAKaW5kZXggZWQ0N2ZmMDU5NWUyMzY2MmEyYzYz
N2M0NTU5MDE1Y2E2MjdkNGM4Mi4uZjljMDE5NTlmOTczNDk3NWQyYmMzZjJkZWYzMjllOWY3ZjMw
ZmIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0
ZW1fdXRpbHNfcG9zaXguY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vc3lzdGVtX3V0aWxzX3Bvc2l4LmNwcApAQCAtOSw2ICs5LDcgQEAKICNpbmNsdWRlICJzeXN0
ZW1fdXRpbHMuaCIKIAogI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGlvc3RyZWFtPgogCiAj
aW5jbHVkZSA8ZGxmY24uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpAQCAtNTUsNiArNTYsMTkg
QEAgY29uc3QgY2hhciAqR2V0UGF0aFNlcGFyYXRvckZvckVudmlyb25tZW50VmFyKCkKICAgICBy
ZXR1cm4gIjoiOwogfQogCitzdGQ6OnN0cmluZyBHZXRIZWxwZXJFeGVjdXRhYmxlRGlyKCkKK3sK
KyAgICBzdGQ6OnN0cmluZyBkaXJlY3Rvcnk7CisgICAgc3RhdGljIGludCBkdW1teVN5bWJvbCA9
IDA7CisgICAgRGxfaW5mbyBkbEluZm87CisgICAgaWYgKGRsYWRkcigmZHVtbXlTeW1ib2wsICZk
bEluZm8pICE9IDApCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBtb2R1bGVOYW1lID0gZGxJ
bmZvLmRsaV9mbmFtZTsKKyAgICAgICAgZGlyZWN0b3J5ICAgICAgICAgICAgICA9IG1vZHVsZU5h
bWUuc3Vic3RyKDAsIG1vZHVsZU5hbWUuZmluZF9sYXN0X29mKCcvJykgKyAxKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGRpcmVjdG9yeTsKK30KKwogY2xhc3MgUG9zaXhMaWJyYXJ5IDogcHVibGljIExp
YnJhcnkKIHsKICAgcHVibGljOgpAQCAtNjMsMTcgKzc3LDE1IEBAIGNsYXNzIFBvc2l4TGlicmFy
eSA6IHB1YmxpYyBMaWJyYXJ5CiAgICAgICAgIHN0ZDo6c3RyaW5nIGRpcmVjdG9yeTsKICAgICAg
ICAgaWYgKHNlYXJjaFR5cGUgPT0gU2VhcmNoVHlwZTo6QXBwbGljYXRpb25EaXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBpbnQgZHVtbXlTeW1ib2wgPSAwOwotICAgICAgICAgICAg
RGxfaW5mbyBkbEluZm87Ci0gICAgICAgICAgICBpZiAoZGxhZGRyKCZkdW1teVN5bWJvbCwgJmRs
SW5mbykgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBt
b2R1bGVOYW1lID0gZGxJbmZvLmRsaV9mbmFtZTsKLSAgICAgICAgICAgICAgICBkaXJlY3Rvcnkg
ICAgICAgICAgICAgID0gbW9kdWxlTmFtZS5zdWJzdHIoMCwgbW9kdWxlTmFtZS5maW5kX2xhc3Rf
b2YoJy8nKSArIDEpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZGlyZWN0b3J5ID0gR2V0
SGVscGVyRXhlY3V0YWJsZURpcigpOwogICAgICAgICB9CiAKICAgICAgICAgc3RkOjpzdHJpbmcg
ZnVsbFBhdGggPSBkaXJlY3RvcnkgKyBsaWJyYXJ5TmFtZSArICIuIiArIEdldFNoYXJlZExpYnJh
cnlFeHRlbnNpb24oKTsKICAgICAgICAgbU1vZHVsZSAgICAgICAgICAgICAgPSBkbG9wZW4oZnVs
bFBhdGguY19zdHIoKSwgUlRMRF9OT1cpOworICAgICAgICBpZiAoIW1Nb2R1bGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiRmFpbGVkIHRvIGxvYWQgIiA8PCBsaWJyYXJ5
TmFtZSA8PCAiOiAiIDw8IGRsZXJyb3IoKSA8PCBzdGQ6OmVuZGw7CisgICAgICAgIH0KICAgICB9
CiAKICAgICB+UG9zaXhMaWJyYXJ5KCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3VuaXR0ZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3VuaXR0ZXN0LmNwcApp
bmRleCA3YjE4OWI5NTc2MjMzYTkwOWEyZjBhNzdkMWUwYjBhYjU2ZWViNGY0Li42YzQ2N2EzMTM0
MDRmN2Q1OGZkN2RiYWQ3MDY1MGM5MjFiYzQ0NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlsc191bml0dGVzdC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfdW5pdHRlc3QuY3Bw
CkBAIC0xNywyOSArMTcsMjUgQEAgbmFtZXNwYWNlCiAvLyBUZXN0IGdldHRpbmcgdGhlIGV4ZWN1
dGFibGUgcGF0aAogVEVTVChTeXN0ZW1VdGlscywgRXhlY3V0YWJsZVBhdGgpCiB7Ci0jaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9GVUNIU0lBKQogICAgIC8vIFRPRE86IGZ1Y2hzaWEgc3VwcG9y
dC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zMTYxCi0gICAgcmV0dXJuOwotI2VuZGlmCi0KKyNpZiAh
ZGVmaW5lZChBTkdMRV9QTEFURk9STV9GVUNIU0lBKQogICAgIHN0ZDo6c3RyaW5nIGV4ZWN1dGFi
bGVQYXRoID0gR2V0RXhlY3V0YWJsZVBhdGgoKTsKICAgICBFWFBFQ1RfTkUoIiIsIGV4ZWN1dGFi
bGVQYXRoKTsKKyNlbmRpZgogfQogCiAvLyBUZXN0IGdldHRpbmcgdGhlIGV4ZWN1dGFibGUgZGly
ZWN0b3J5CiBURVNUKFN5c3RlbVV0aWxzLCBFeGVjdXRhYmxlRGlyKQogewotI2lmIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fRlVDSFNJQSkKICAgICAvLyBUT0RPOiBmdWNoc2lhIHN1cHBvcnQuIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMzE2MQotICAgIHJldHVybjsKLSNlbmRpZgotCisjaWYgIWRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fRlVDSFNJQSkKICAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlRGly
ID0gR2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpOwogICAgIEVYUEVDVF9ORSgiIiwgZXhlY3V0YWJs
ZURpcik7CiAKICAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFibGVQ
YXRoKCk7CiAgICAgRVhQRUNUX0xUKGV4ZWN1dGFibGVEaXIuc2l6ZSgpLCBleGVjdXRhYmxlUGF0
aC5zaXplKCkpOwogICAgIEVYUEVDVF9FUSgwLCBzdHJuY21wKGV4ZWN1dGFibGVEaXIuY19zdHIo
KSwgZXhlY3V0YWJsZVBhdGguY19zdHIoKSwgZXhlY3V0YWJsZURpci5zaXplKCkpKTsKKyNlbmRp
ZgogfQogCiAvLyBUZXN0IHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlsc193aW4uY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfd2luLmNw
cAppbmRleCBjNmZkMDA0OTAxOTljYTkzMGVmM2E1ZTJmNmRjYjgyYjI4ZTFlMzE5Li44ODZjYTBj
Y2UwNGFmMTg1NjRhNTM0NDQ2ZTMzZmQ3M2FiZDE3Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlsc193aW4uY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3dpbi5jcHAKQEAgLTEw
MCw0ICsxMDAsOSBAQCBjaGFyIEdldFBhdGhTZXBhcmF0b3IoKQogewogICAgIHJldHVybiAnXFwn
OwogfQorCitzdGQ6OnN0cmluZyBHZXRIZWxwZXJFeGVjdXRhYmxlRGlyKCkKK3sKKyAgICByZXR1
cm4gIiI7Cit9CiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdGxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vdGxzLmNwcAppbmRleCA5NTU5YWZlMjBjODgzNzdhZWVhOWRmZGI5ZTdmMjM0
NDQyZmVlZjcxLi4yZTU0NDNlOGY2NWZmY2FiMTExZTYyNDgwY2NkNDIwMDNiNjVlZGExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3Rscy5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90bHMuY3BwCkBAIC04LDcgKzgsNyBA
QAogCiAjaW5jbHVkZSAiY29tbW9uL3Rscy5oIgogCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCiAKICNpZmRlZiBBTkdMRV9FTkFCTEVfV0lORE9XU19VV1AK
ICMgICAgaW5jbHVkZSA8bWFwPgpAQCAtNjIsMTQgKzYyLDE0IEBAIFRMU0luZGV4IENyZWF0ZVRM
U0luZGV4KCkKICAgICB9CiAjZW5kaWYKIAotICAgIGFzc2VydChpbmRleCAhPSBUTFNfSU5WQUxJ
RF9JTkRFWCAmJgorICAgIEFTU0VSVChpbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCAmJgogICAg
ICAgICAgICAiQ3JlYXRlVExTSW5kZXgoKTogVW5hYmxlIHRvIGFsbG9jYXRlIFRocmVhZCBMb2Nh
bCBTdG9yYWdlIik7CiAgICAgcmV0dXJuIGluZGV4OwogfQogCiBib29sIERlc3Ryb3lUTFNJbmRl
eChUTFNJbmRleCBpbmRleCkKIHsKLSAgICBhc3NlcnQoaW5kZXggIT0gVExTX0lOVkFMSURfSU5E
RVggJiYgIkRlc3Ryb3lUTFNJbmRleCgpOiBJbnZhbGlkIFRMUyBJbmRleCIpOworICAgIEFTU0VS
VChpbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCAmJiAiRGVzdHJveVRMU0luZGV4KCk6IEludmFs
aWQgVExTIEluZGV4Iik7CiAgICAgaWYgKGluZGV4ID09IFRMU19JTlZBTElEX0lOREVYKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzcsOCArNzcsOCBAQCBib29sIERlc3Ryb3lU
TFNJbmRleChUTFNJbmRleCBpbmRleCkKIAogI2lmZGVmIEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MK
ICMgICAgaWZkZWYgQU5HTEVfRU5BQkxFX1dJTkRPV1NfVVdQCi0gICAgYXNzZXJ0KGluZGV4IDwg
bmV4dFRsc0luZGV4KTsKLSAgICBhc3NlcnQoZmluZChmcmVlVGxzSW5kaWNlcy5iZWdpbigpLCBm
cmVlVGxzSW5kaWNlcy5lbmQoKSwgaW5kZXgpID09IGZyZWVUbHNJbmRpY2VzLmVuZCgpKTsKKyAg
ICBBU1NFUlQoaW5kZXggPCBuZXh0VGxzSW5kZXgpOworICAgIEFTU0VSVChmaW5kKGZyZWVUbHNJ
bmRpY2VzLmJlZ2luKCksIGZyZWVUbHNJbmRpY2VzLmVuZCgpLCBpbmRleCkgPT0gZnJlZVRsc0lu
ZGljZXMuZW5kKCkpOwogCiAgICAgZnJlZVRsc0luZGljZXMucHVzaF9iYWNrKGluZGV4KTsKICAg
ICBmb3IgKGF1dG8gdGhyZWFkRGF0YSA6IGFsbFRocmVhZERhdGEpCkBAIC05OSw3ICs5OSw3IEBA
IGJvb2wgRGVzdHJveVRMU0luZGV4KFRMU0luZGV4IGluZGV4KQogCiBib29sIFNldFRMU1ZhbHVl
KFRMU0luZGV4IGluZGV4LCB2b2lkICp2YWx1ZSkKIHsKLSAgICBhc3NlcnQoaW5kZXggIT0gVExT
X0lOVkFMSURfSU5ERVggJiYgIlNldFRMU1ZhbHVlKCk6IEludmFsaWQgVExTIEluZGV4Iik7Cisg
ICAgQVNTRVJUKGluZGV4ICE9IFRMU19JTlZBTElEX0lOREVYICYmICJTZXRUTFNWYWx1ZSgpOiBJ
bnZhbGlkIFRMUyBJbmRleCIpOwogICAgIGlmIChpbmRleCA9PSBUTFNfSU5WQUxJRF9JTkRFWCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIFNl
dFRMU1ZhbHVlKFRMU0luZGV4IGluZGV4LCB2b2lkICp2YWx1ZSkKIAogdm9pZCAqR2V0VExTVmFs
dWUoVExTSW5kZXggaW5kZXgpCiB7Ci0gICAgYXNzZXJ0KGluZGV4ICE9IFRMU19JTlZBTElEX0lO
REVYICYmICJHZXRUTFNWYWx1ZSgpOiBJbnZhbGlkIFRMUyBJbmRleCIpOworICAgIEFTU0VSVChp
bmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCAmJiAiR2V0VExTVmFsdWUoKTogSW52YWxpZCBUTFMg
SW5kZXgiKTsKICAgICBpZiAoaW5kZXggPT0gVExTX0lOVkFMSURfSU5ERVgpCiAgICAgewogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vdXRpbGl0aWVzLmNwcAppbmRleCA1MDAzMTg2YjEyYTNmOTJhM2Q0YWZjZTBmM2U5ZTgy
N2E2ZGM0MDhmLi4wYTZkY2MyNDg5Y2ZkZTNiMzcyYTE2NGEzMTk5MTAyYWFiOGM2YjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCkBA
IC0xMDMxLDYgKzEwMzEsNjYgQEAgUGlwZWxpbmVUeXBlIEdldFBpcGVsaW5lVHlwZShTaGFkZXJU
eXBlIHR5cGUpCiAgICAgfQogfQogCitjb25zdCBjaGFyICpHZXREZWJ1Z01lc3NhZ2VTb3VyY2VT
dHJpbmcoR0xlbnVtIHNvdXJjZSkKK3sKKyAgICBzd2l0Y2ggKHNvdXJjZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX0FQSToKKyAgICAgICAgICAgIHJldHVybiAiQVBJIjsK
KyAgICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTToKKyAgICAgICAgICAg
IHJldHVybiAiV2luZG93IFN5c3RlbSI7CisgICAgICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1NI
QURFUl9DT01QSUxFUjoKKyAgICAgICAgICAgIHJldHVybiAiU2hhZGVyIENvbXBpbGVyIjsKKyAg
ICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFk6CisgICAgICAgICAgICByZXR1
cm4gIlRoaXJkIFBhcnR5IjsKKyAgICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJ
T046CisgICAgICAgICAgICByZXR1cm4gIkFwcGxpY2F0aW9uIjsKKyAgICAgICAgY2FzZSBHTF9E
RUJVR19TT1VSQ0VfT1RIRVI6CisgICAgICAgICAgICByZXR1cm4gIk90aGVyIjsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAiVW5rbm93biBTb3VyY2UiOworICAgIH0KK30K
KworY29uc3QgY2hhciAqR2V0RGVidWdNZXNzYWdlVHlwZVN0cmluZyhHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfRVJS
T1I6CisgICAgICAgICAgICByZXR1cm4gIkVycm9yIjsKKyAgICAgICAgY2FzZSBHTF9ERUJVR19U
WVBFX0RFUFJFQ0FURURfQkVIQVZJT1I6CisgICAgICAgICAgICByZXR1cm4gIkRlcHJlY2F0ZWQg
YmVoYXZpb3IiOworICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9S
OgorICAgICAgICAgICAgcmV0dXJuICJVbmRlZmluZWQgYmVoYXZpb3IiOworICAgICAgICBjYXNl
IEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFk6CisgICAgICAgICAgICByZXR1cm4gIlBvcnRhYmls
aXR5IjsKKyAgICAgICAgY2FzZSBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFOgorICAgICAgICAg
ICAgcmV0dXJuICJQZXJmb3JtYW5jZSI7CisgICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9PVEhF
UjoKKyAgICAgICAgICAgIHJldHVybiAiT3RoZXIiOworICAgICAgICBjYXNlIEdMX0RFQlVHX1RZ
UEVfTUFSS0VSOgorICAgICAgICAgICAgcmV0dXJuICJNYXJrZXIiOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuICJVbmtub3duIFR5cGUiOworICAgIH0KK30KKworY29uc3Qg
Y2hhciAqR2V0RGVidWdNZXNzYWdlU2V2ZXJpdHlTdHJpbmcoR0xlbnVtIHNldmVyaXR5KQorewor
ICAgIHN3aXRjaCAoc2V2ZXJpdHkpCisgICAgeworICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVS
SVRZX0hJR0g6CisgICAgICAgICAgICByZXR1cm4gIkhpZ2giOworICAgICAgICBjYXNlIEdMX0RF
QlVHX1NFVkVSSVRZX01FRElVTToKKyAgICAgICAgICAgIHJldHVybiAiTWVkaXVtIjsKKyAgICAg
ICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9MT1c6CisgICAgICAgICAgICByZXR1cm4gIkxvdyI7
CisgICAgICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OOgorICAgICAgICAg
ICAgcmV0dXJuICJOb3RpZmljYXRpb24iOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuICJVbmtub3duIFNldmVyaXR5IjsKKyAgICB9Cit9CiB9ICAvLyBuYW1lc3BhY2UgZ2wK
IAogbmFtZXNwYWNlIGVnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi91dGlsaXRpZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
dXRpbGl0aWVzLmgKaW5kZXggMGMwNTQ3MzkxZWY0MjNiMTkwZTU2NjA3ZTQwZTJlM2ZkYTExNjJm
My4uM2RiNzAxYzBiOGQwY2RmZWI2N2FiOGJlNmMxNjYzZDAxMmI1ODNlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5oCkBAIC0yMjIsNiArMjIy
LDEyIEBAIGVudW0gY2xhc3MgUGlwZWxpbmVUeXBlCiB9OwogCiBQaXBlbGluZVR5cGUgR2V0UGlw
ZWxpbmVUeXBlKFNoYWRlclR5cGUgc2hhZGVyVHlwZSk7CisKKy8vIEZvciB1c2Ugd2l0aCBLSFJf
ZGVidWcuCitjb25zdCBjaGFyICpHZXREZWJ1Z01lc3NhZ2VTb3VyY2VTdHJpbmcoR0xlbnVtIHNv
dXJjZSk7Citjb25zdCBjaGFyICpHZXREZWJ1Z01lc3NhZ2VUeXBlU3RyaW5nKEdMZW51bSB0eXBl
KTsKK2NvbnN0IGNoYXIgKkdldERlYnVnTWVzc2FnZVNldmVyaXR5U3RyaW5nKEdMZW51bSBzZXZl
cml0eSk7CisKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiBuYW1lc3BhY2UgZWdsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ25pIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLmduaQppbmRleCBlNTM2MGIxYmU0NTczODA4MzczMjk0
ZTg1MDIwZDgwYTA4Mjc0MGFlLi41MjMwYTQxNWU3OTEzMGMyMWY1NjZjOTZkYWE2MzRhODZiZDg4
MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ25p
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci5nbmkKQEAgLTE0OCw2
ICsxNDgsOCBAQCBhbmdsZV90cmFuc2xhdG9yX3NvdXJjZXMgPSBbCiAgICJzcmMvY29tcGlsZXIv
dHJhbnNsYXRvci90cmVlX29wcy9SZWdlbmVyYXRlU3RydWN0TmFtZXMuaCIsCiAgICJzcmMvY29t
cGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVBcnJheUxlbmd0aE1ldGhvZC5jcHAiLAog
ICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXJyYXlMZW5ndGhNZXRo
b2QuaCIsCisgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVBdG9taWND
b3VudGVyQnVpbHRpbnMuY3BwIiwKKyAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3Bz
L1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5oIiwKICAgInNyYy9jb21waWxlci90cmFuc2xh
dG9yL3RyZWVfb3BzL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAiLAogICAic3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlRHluYW1pY0luZGV4aW5nLmgiLAogICAic3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlSW5hY3RpdmVJbnRlcmZhY2VWYXJpYWJs
ZXMuY3BwIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgKaW5kZXggY2Y1Y2QxMzk2YWEzYmQ2NDdjZWI2
NjQzNmNmZGQ2YTQxOTAwYWEwMS4uMThkMDE0MjFlYmE1NDI5ZTNiNjgxMmNhYjFhNTBiZmExZTZj
NmY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQmFzZVR5cGVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgKQEAgLTI3Niw3ICsyNzYsNyBAQCBpbmxpbmUg
Ym9vbCBJc0ludGVnZXJTYW1wbGVyKFRCYXNpY1R5cGUgdHlwZSkKICAgICAgICAgY2FzZSBFYnRT
YW1wbGVyVmlkZW9XRUJHTDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKKyAgICAgICAgICAg
IEFTU0VSVCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTEsNyArMzExLDcgQEAgaW5saW5lIGJvb2wgSXNJbnRlZ2VyU2FtcGxlclVuc2lnbmVkKFRC
YXNpY1R5cGUgdHlwZSkKICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmVBcnJheToKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0
KCFJc0ludGVnZXJTYW1wbGVyKHR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCghSXNJbnRlZ2Vy
U2FtcGxlcih0eXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY5LDcgKzQ2
OSw3IEBAIGlubGluZSBib29sIElzU2FtcGxlcjJEKFRCYXNpY1R5cGUgdHlwZSkKICAgICAgICAg
Y2FzZSBFYnRVU2FtcGxlckN1YmVBcnJheToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01MjUsNyArNTI1LDcgQEAgaW5saW5lIGJvb2wgSXNTYW1wbGVyQ3ViZShUQmFz
aWNUeXBlIHR5cGUpCiAgICAgICAgIGNhc2UgRWJ0U2FtcGxlclZpZGVvV0VCR0w6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3NlcnQo
IUlzU2FtcGxlcih0eXBlKSk7CisgICAgICAgICAgICBBU1NFUlQoIUlzU2FtcGxlcih0eXBlKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTgxLDcgKzU4MSw3IEBAIGlubGluZSBi
b29sIElzU2FtcGxlcjNEKFRCYXNpY1R5cGUgdHlwZSkKICAgICAgICAgY2FzZSBFYnRTYW1wbGVy
VmlkZW9XRUJHTDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VS
VCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC02Mzcs
NyArNjM3LDcgQEAgaW5saW5lIGJvb2wgSXNTYW1wbGVyQXJyYXkoVEJhc2ljVHlwZSB0eXBlKQog
ICAgICAgICBjYXNlIEVidFNhbXBsZXJWaWRlb1dFQkdMOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlw
ZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc1NhbXBsZXIodHlwZSkpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTY5Myw3ICs2OTMsNyBAQCBpbmxpbmUgYm9vbCBJc1NoYWRvd1Nh
bXBsZXIoVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICBjYXNlIEVidFNhbXBsZXJWaWRlb1dFQkdM
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc1NhbXBs
ZXIodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTc0Miw3ICs3NDIsNyBA
QCBpbmxpbmUgYm9vbCBJc0ltYWdlMkQoVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICBjYXNlIEVi
dFVJbWFnZUJ1ZmZlcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGFzc2VydCghSXNJbWFnZSh0eXBlKSk7CisgICAgICAgICAgICBBU1NF
UlQoIUlzSW1hZ2UodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTc5MSw3
ICs3OTEsNyBAQCBpbmxpbmUgYm9vbCBJc0ltYWdlM0QoVEJhc2ljVHlwZSB0eXBlKQogICAgICAg
ICBjYXNlIEVidFVJbWFnZUJ1ZmZlcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFzc2VydCghSXNJbWFnZSh0eXBlKSk7CisgICAgICAg
ICAgICBBU1NFUlQoIUlzSW1hZ2UodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTg0MCw3ICs4NDAsNyBAQCBpbmxpbmUgYm9vbCBJc0ltYWdlMkRBcnJheShUQmFzaWNUeXBl
IHR5cGUpCiAgICAgICAgIGNhc2UgRWJ0VUltYWdlQnVmZmVyOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0KCFJc0ltYWdlKHR5
cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCghSXNJbWFnZSh0eXBlKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtODg5LDcgKzg4OSw3IEBAIGlubGluZSBib29sIElzSW1hZ2VDdWJl
KFRCYXNpY1R5cGUgdHlwZSkKICAgICAgICAgY2FzZSBFYnRVSW1hZ2VCdWZmZXI6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3NlcnQo
IUlzSW1hZ2UodHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc0ltYWdlKHR5cGUpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAKaW5kZXggODAz
NTk1NDg0MTEwNWFmZDY3NzU1OTlkOTg2Yjc5ZjlmMzZkZmMyMi4uODc1NjVlYjA5ODliYTFlYzlk
MTY0NDg4ZTg3NTEyOGZkNjE1ODY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcApAQCAtNTU3
LDYgKzU1NywyMSBAQCBib29sIFRDb21waWxlcjo6Y2hlY2tBbmRTaW1wbGlmeUFTVChUSW50ZXJt
QmxvY2sgKnJvb3QsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBXZSBu
ZWVkIHRvIGdlbmVyYXRlIGdsb2JhbHMgZWFybHkgaWYgd2UgaGF2ZSBub24gY29uc3RhbnQgaW5p
dGlhbGl6ZXJzIGVuYWJsZWQKKyAgICBib29sIGluaXRpYWxpemVMb2NhbHNBbmRHbG9iYWxzID0K
KyAgICAgICAgKGNvbXBpbGVPcHRpb25zICYgU0hfSU5JVElBTElaRV9VTklOSVRJQUxJWkVEX0xP
Q0FMUykgJiYgIUlzT3V0cHV0SExTTChnZXRPdXRwdXRUeXBlKCkpOworICAgIGJvb2wgY2FuVXNl
TG9vcHNUb0luaXRpYWxpemUgPSAhKGNvbXBpbGVPcHRpb25zICYgU0hfRE9OVF9VU0VfTE9PUFNf
VE9fSU5JVElBTElaRV9WQVJJQUJMRVMpOworICAgIGJvb2wgaGlnaFByZWNpc2lvblN1cHBvcnRl
ZCAgPSBtU2hhZGVyVmVyc2lvbiA+IDEwMCB8fCBtU2hhZGVyVHlwZSAhPSBHTF9GUkFHTUVOVF9T
SEFERVIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb3VyY2VzLkZy
YWdtZW50UHJlY2lzaW9uSGlnaCA9PSAxOworICAgIGJvb2wgZW5hYmxlTm9uQ29uc3RhbnRJbml0
aWFsaXplcnMgPSBJc0V4dGVuc2lvbkVuYWJsZWQoCisgICAgICAgIG1FeHRlbnNpb25CZWhhdmlv
ciwgVEV4dGVuc2lvbjo6RVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVy
cyk7CisgICAgaWYgKGVuYWJsZU5vbkNvbnN0YW50SW5pdGlhbGl6ZXJzICYmCisgICAgICAgICFE
ZWZlckdsb2JhbEluaXRpYWxpemVycyh0aGlzLCByb290LCBpbml0aWFsaXplTG9jYWxzQW5kR2xv
YmFscywgY2FuVXNlTG9vcHNUb0luaXRpYWxpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoaWdoUHJlY2lzaW9uU3VwcG9ydGVkLCAmbVN5bWJvbFRhYmxlKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBDcmVhdGUgdGhlIGZ1bmN0aW9u
IERBRyBhbmQgY2hlY2sgdGhlcmUgaXMgbm8gcmVjdXJzaW9uCiAgICAgaWYgKCFpbml0Q2FsbERh
Zyhyb290KSkKICAgICB7CkBAIC03NjUsOCArNzgwLDYgQEAgYm9vbCBUQ29tcGlsZXI6OmNoZWNr
QW5kU2ltcGxpZnlBU1QoVEludGVybUJsb2NrICpyb290LAogICAgIEdldEdsb2JhbFBvb2xBbGxv
Y2F0b3IoKS0+dW5sb2NrKCk7CiAgICAgbUJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLm1hcmtCdWls
dEluRnVuY3Rpb25zRm9yRW11bGF0aW9uKHJvb3QpOwogCi0gICAgYm9vbCBoaWdoUHJlY2lzaW9u
U3VwcG9ydGVkID0gbVNoYWRlclZlcnNpb24gPiAxMDAgfHwgbVNoYWRlclR5cGUgIT0gR0xfRlJB
R01FTlRfU0hBREVSIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlc291
cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPT0gMTsKICAgICBpZiAoY29tcGlsZU9wdGlvbnMg
JiBTSF9TQ0FMQVJJWkVfVkVDX0FORF9NQVRfQ09OU1RSVUNUT1JfQVJHUykKICAgICB7CiAgICAg
ICAgIGlmICghU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzKHRoaXMsIHJvb3QsIG1T
aGFkZXJUeXBlLCBoaWdoUHJlY2lzaW9uU3VwcG9ydGVkLApAQCAtODM5LDEwICs4NTIsMTEgQEAg
Ym9vbCBUQ29tcGlsZXI6OmNoZWNrQW5kU2ltcGxpZnlBU1QoVEludGVybUJsb2NrICpyb290LAog
ICAgIC8vIHN0YXRlbWVudHMgZnJvbSBleHByZXNzaW9ucy4gQnV0IGl0J3MgZmluZSB0byBydW4g
RGVmZXJHbG9iYWxJbml0aWFsaXplcnMgYWZ0ZXIgdGhlIGFib3ZlCiAgICAgLy8gU3BsaXRTZXF1
ZW5jZU9wZXJhdG9yIGFuZCBSZW1vdmVBcnJheUxlbmd0aE1ldGhvZCBzaW5jZSB0aGV5IG9ubHkg
aGF2ZSBhbiBlZmZlY3Qgb24gdGhlIEFTVAogICAgIC8vIG9uIEVTU0wgPj0gMy4wMCwgYW5kIHRo
ZSBpbml0aWFsaXplcnMgdGhhdCBuZWVkIHRvIGJlIGRlZmVycmVkIGNhbiBvbmx5IGV4aXN0IGlu
IEVTU0wgPCAzLjAwLgotICAgIGJvb2wgaW5pdGlhbGl6ZUxvY2Fsc0FuZEdsb2JhbHMgPQotICAg
ICAgICAoY29tcGlsZU9wdGlvbnMgJiBTSF9JTklUSUFMSVpFX1VOSU5JVElBTElaRURfTE9DQUxT
KSAmJiAhSXNPdXRwdXRITFNMKGdldE91dHB1dFR5cGUoKSk7Ci0gICAgYm9vbCBjYW5Vc2VMb29w
c1RvSW5pdGlhbGl6ZSA9ICEoY29tcGlsZU9wdGlvbnMgJiBTSF9ET05UX1VTRV9MT09QU19UT19J
TklUSUFMSVpFX1ZBUklBQkxFUyk7Ci0gICAgaWYgKCFEZWZlckdsb2JhbEluaXRpYWxpemVycyh0
aGlzLCByb290LCBpbml0aWFsaXplTG9jYWxzQW5kR2xvYmFscywgY2FuVXNlTG9vcHNUb0luaXRp
YWxpemUsCisgICAgLy8gRXhjZXB0aW9uOiBpZiBFWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9i
YWxfaW5pdGlhbGl6ZXJzIGlzIGVuYWJsZWQsIHdlIG11c3QgZ2VuZXJhdGUgZ2xvYmFsCisgICAg
Ly8gaW5pdGlhbGl6ZXJzIGJlZm9yZSB3ZSBnZW5lcmF0ZSB0aGUgREFHLCBzaW5jZSBpbml0aWFs
aXplcnMgbWF5IGNhbGwgZnVuY3Rpb25zIHdoaWNoIG11c3Qgbm90CisgICAgLy8gYmUgb3B0aW1p
emVkIG91dAorICAgIGlmICghZW5hYmxlTm9uQ29uc3RhbnRJbml0aWFsaXplcnMgJiYKKyAgICAg
ICAgIURlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzKHRoaXMsIHJvb3QsIGluaXRpYWxpemVMb2NhbHNB
bmRHbG9iYWxzLCBjYW5Vc2VMb29wc1RvSW5pdGlhbGl6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhpZ2hQcmVjaXNpb25TdXBwb3J0ZWQsICZtU3ltYm9sVGFibGUpKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExNSw2ICsxMTI5LDI2IEBAIHZvaWQgVENv
bXBpbGVyOjpjb2xsZWN0SW50ZXJmYWNlQmxvY2tzKCkKICAgICBtSW50ZXJmYWNlQmxvY2tzLmlu
c2VydChtSW50ZXJmYWNlQmxvY2tzLmVuZCgpLCBtSW5CbG9ja3MuYmVnaW4oKSwgbUluQmxvY2tz
LmVuZCgpKTsKIH0KIAorYm9vbCBUQ29tcGlsZXI6OmVtdWxhdGVQcmVjaXNpb25JZk5lZWRlZChU
SW50ZXJtQmxvY2sgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbmZvU2lua0Jhc2UgJnNpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgKmlzTmVlZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFnZSkKK3sKKyAgICAq
aXNOZWVkZWQgPSBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYm
IGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOworCisgICAgaWYgKCppc05lZWRlZCkK
KyAgICB7CisgICAgICAgIEVtdWxhdGVQcmVjaXNpb24gZW11bGF0ZVByZWNpc2lvbigmZ2V0U3lt
Ym9sVGFibGUoKSk7CisgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZlbXVsYXRlUHJlY2lzaW9uKTsK
KyAgICAgICAgaWYgKCFlbXVsYXRlUHJlY2lzaW9uLnVwZGF0ZVRyZWUodGhpcywgcm9vdCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBl
bXVsYXRlUHJlY2lzaW9uLndyaXRlRW11bGF0aW9uSGVscGVycyhzaW5rLCBnZXRTaGFkZXJWZXJz
aW9uKCksIG91dHB1dExhbmd1YWdlKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgVENvbXBpbGVyOjpjbGVhclJlc3VsdHMoKQogewogICAgIG1BcnJheUJvdW5kc0NsYW1wZXIu
Q2xlYW51cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgKaW5kZXggMmM3ODk3Y2E4YTE0MjIzOGQwNmMy
Y2RjMzNhYmE5ZGFlYjRjNDAzYi4uOTUwYjZhMTg0OGVjODkzOGFlY2MyMTBhZTJlMGJmMzgxNjBl
NDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oCkBAIC0xNzMsNiArMTczLDEyIEBAIGNsYXNzIFRD
b21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVCYXNlCiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDb2xsZWN0VmFyaWFibGVzKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOwor
ICAgIC8vIElmIHByZWNpc2lvbiBlbXVsYXRpb24gbmVlZGVkLCBzZXQgaXNOZWVkZWQgdG8gdHJ1
ZSBhbmQgZW11bGF0ZSBwcmVjaXNpb24gZm9yIGdpdmVuCisgICAgLy8gIG91dHB1dExhbmd1YWdl
LCByZXR1cm5pbmcgZmFsc2UgaWYgdGhhdCBmYWlscywgZWxzZSByZXR1cm5pbmcgdHJ1ZS4KKyAg
ICBib29sIGVtdWxhdGVQcmVjaXNpb25JZk5lZWRlZChUSW50ZXJtQmxvY2sgKnJvb3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEluZm9TaW5rQmFzZSAmc2luaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICppc05lZWRlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRMYW5ndWFn
ZSk7CiAKICAgICBib29sIHdlcmVWYXJpYWJsZXNDb2xsZWN0ZWQoKSBjb25zdDsKICAgICBzdGQ6
OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IG1BdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlv
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29u
c3RhbnRVbmlvbi5oCmluZGV4IDNlZDA4YmY5NzAxYTAyNTJmZTAxOTg2Mzk0ODFhOTRiNzY4Nzkz
YjkuLmE2MjNkNjVmYjFkNTQ1N2EyOWQ3ODJlM2QxM2IwODE4NDhiMmIwYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbnN0YW50
VW5pb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9Db25zdGFudFVuaW9uLmgKQEAgLTcsOCArNyw2IEBACiAjaWZuZGVmIENPTVBJTEVSX1RS
QU5TTEFUT1JfQ09OU1RBTlRVTklPTl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0NP
TlNUQU5UVU5JT05fSF8KIAotI2luY2x1ZGUgPGFzc2VydC5oPgotCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0NvbW1vbi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5jcHAKaW5k
ZXggNjY0YTZhOTEzMmQ1YTA3NjkwMTMyMTNhMTY1ZjYwYzhjNmMwY2VkYS4uZjJiNWI2OGQ4YTA0
ZmNjYmM5ZWE5ZWY5YWUyZGZhMTFhZDhkMTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVu
c2lvbkJlaGF2aW9yLmNwcApAQCAtMTIsMjkgKzEyLDMwIEBACiAKICNpbmNsdWRlIDxzdHJpbmcu
aD4KIAotI2RlZmluZSBMSVNUX0VYVEVOU0lPTlMoT1ApICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBPUChBUkJfdGV4dHVyZV9yZWN0YW5nbGUpICAgICAgICAgICAgICAgICAgICBcCi0gICAg
T1AoQU5HTEVfdGV4dHVyZV9tdWx0aXNhbXBsZSkgICAgICAgICAgICAgICAgXAotICAgIE9QKEFS
TV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpICAgICAgICAgICAgIFwKLSAgICBPUChFWFRfYmxl
bmRfZnVuY19leHRlbmRlZCkgICAgICAgICAgICAgICAgICBcCi0gICAgT1AoRVhUX2RyYXdfYnVm
ZmVycykgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE9QKEVYVF9mcmFnX2RlcHRoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBPUChFWFRfZ2VvbWV0cnlfc2hhZGVyKSAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgT1AoRVhUX2dwdV9zaGFkZXI1KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIE9QKEVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpICAg
ICAgICAgICAgIFwKLSAgICBPUChFWFRfc2hhZGVyX3RleHR1cmVfbG9kKSAgICAgICAgICAgICAg
ICAgICBcCi0gICAgT1AoRVhUX1lVVl90YXJnZXQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIE9QKE5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwpICAgICAgICAgIFwKLSAg
ICBPUChOVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpICAgICAgICAgICAgICBcCi0gICAgT1Ao
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCkgICAgICAgICAgICAgICAgICAgXAotICAgIE9QKE9FU19F
R0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMpICAgICAgICAgICAgIFwKLSAgICBPUChPRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMpICAgICAgICAgICAgICAgICBcCi0gICAgT1AoT0VTX3RleHR1cmVfc3Rv
cmFnZV9tdWx0aXNhbXBsZV8yZF9hcnJheSkgXAotICAgIE9QKE9FU190ZXh0dXJlXzNEKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBPUChPVlJfbXVsdGl2aWV3KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgT1AoT1ZSX211bHRpdmlldzIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIE9QKEFOR0xFX211bHRpX2RyYXcpICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBPUChBTkdMRV9iYXNlX3ZlcnRleF9iYXNlX2luc3RhbmNlKSAgICAgICAg
ICBcCisjZGVmaW5lIExJU1RfRVhURU5TSU9OUyhPUCkgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIE9QKEFSQl90ZXh0dXJlX3JlY3RhbmdsZSkgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBPUChBTkdMRV90ZXh0dXJlX211bHRpc2FtcGxlKSAgICAgICAgICAgICAgICAgICBcCisg
ICAgT1AoQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkgICAgICAgICAgICAgICAgXAorICAg
IE9QKEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBP
UChFWFRfZHJhd19idWZmZXJzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgT1Ao
RVhUX2ZyYWdfZGVwdGgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKEVY
VF9nZW9tZXRyeV9zaGFkZXIpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBPUChFWFRf
Z3B1X3NoYWRlcjUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgT1AoRVhUX3No
YWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkgICAgICAgICAgICAgICAgXAorICAgIE9QKEVYVF9zaGFk
ZXJfdGV4dHVyZV9sb2QpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBPUChFWFRfWVVWX3Rh
cmdldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgT1AoRVhUX3NoYWRlcl9u
b25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycykgXAorICAgIE9QKE5WX0VHTF9zdHJlYW1f
Y29uc3VtZXJfZXh0ZXJuYWwpICAgICAgICAgICAgIFwKKyAgICBPUChOVl9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2gpICAgICAgICAgICAgICAgICBcCisgICAgT1AoT0VTX0VHTF9pbWFnZV9leHRl
cm5hbCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKE9FU19FR0xfaW1hZ2VfZXh0ZXJu
YWxfZXNzbDMpICAgICAgICAgICAgICAgIFwKKyAgICBPUChPRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMpICAgICAgICAgICAgICAgICAgICBcCisgICAgT1AoT0VTX3RleHR1cmVfc3RvcmFnZV9tdWx0
aXNhbXBsZV8yZF9hcnJheSkgICAgXAorICAgIE9QKE9FU190ZXh0dXJlXzNEKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBPUChPVlJfbXVsdGl2aWV3KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgT1AoT1ZSX211bHRpdmlldzIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIE9QKEFOR0xFX211bHRpX2RyYXcpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBPUChBTkdMRV9iYXNlX3ZlcnRleF9iYXNlX2luc3RhbmNlKSAg
ICAgICAgICAgICBcCiAgICAgT1AoV0VCR0xfdmlkZW9fdGV4dHVyZSkKIAogbmFtZXNwYWNlIHNo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9FeHRlbnNpb25CZWhhdmlvci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaAppbmRleCBiMmMzNTk3NmRiZjdl
NjcwNDdkZTk5NmM1MWFhNTkyYWQyMWQzZmJkLi41OWU4ZWY3YmQxY2YwOTcwZDVlMjVkYTk0NDFi
YjhmMDQ1YzIxMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmgKQEAg
LTI5LDYgKzI5LDcgQEAgZW51bSBjbGFzcyBURXh0ZW5zaW9uCiAgICAgRVhUX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaCwKICAgICBFWFRfc2hhZGVyX3RleHR1cmVfbG9kLAogICAgIEVYVF9ZVVZf
dGFyZ2V0LAorICAgIEVYVF9zaGFkZXJfbm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMs
CiAgICAgTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCwKICAgICBOVl9zaGFkZXJfZnJh
bWVidWZmZXJfZmV0Y2gsCiAgICAgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxp
emUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5pdGlhbGl6ZS5jcHAKaW5kZXggODJlN2UwZmQ2MzM1MWQ1MjMwYzBjMzg5NmIwZTkyYmFmOWNl
YTk5MS4uNjM4ZjVlMDFhY2ZkMzhiYTllNjBhYjNkMTdiNjEyMTA3MTcxNTMzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlh
bGl6ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZS5jcHAKQEAgLTgxLDYgKzgxLDEwIEBAIHZvaWQgSW5pdEV4dGVuc2lv
bkJlaGF2aW9yKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLCBURXh0ZW5zaW9u
QmVoYXZpCiAgICAgewogICAgICAgICBleHRCZWhhdmlvcltURXh0ZW5zaW9uOjpFWFRfZ3B1X3No
YWRlcjVdID0gRUJoVW5kZWZpbmVkOwogICAgIH0KKyAgICBpZiAocmVzb3VyY2VzLkVYVF9zaGFk
ZXJfbm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMpCisgICAgeworICAgICAgICBleHRC
ZWhhdmlvcltURXh0ZW5zaW9uOjpFWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlh
bGl6ZXJzXSA9IEVCaFVuZGVmaW5lZDsKKyAgICB9CiAgICAgaWYgKHJlc291cmNlcy5PRVNfdGV4
dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5KQogICAgIHsKICAgICAgICAgZXh0QmVo
YXZpb3JbVEV4dGVuc2lvbjo6T0VTX3RleHR1cmVfc3RvcmFnZV9tdWx0aXNhbXBsZV8yZF9hcnJh
eV0gPSBFQmhVbmRlZmluZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wuY3Bw
CmluZGV4IDI3OWY4MTI0ZTI0NGJlMDkwMmI4Y2EwMTk0N2ZlNGIwNDMxOTQ3NGIuLjM2MjY0NTJj
ZTYwZWYzOTA4NWVkYzhiODNlYjcyYTg3MDJiYWIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091
dHB1dFZ1bGthbkdMU0wuY3BwCkBAIC0yNyw2ICsyNyw4IEBAIFRPdXRwdXRWdWxrYW5HTFNMOjpU
T3V0cHV0VnVsa2FuR0xTTChUSW5mb1NpbmtCYXNlICZvYmpTaW5rLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3JjZUhpZ2hwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlUHJlY2lzaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9w
dGlvbnMpCiAgICAgOiBUT3V0cHV0R0xTTChvYmpTaW5rLAogICAgICAgICAgICAgICAgICAgY2xh
bXBpbmdTdHJhdGVneSwKQEAgLTM5LDcgKzQxLDkgQEAgVE91dHB1dFZ1bGthbkdMU0w6OlRPdXRw
dXRWdWxrYW5HTFNMKFRJbmZvU2lua0Jhc2UgJm9ialNpbmssCiAgICAgICAgICAgICAgICAgICBj
b21waWxlT3B0aW9ucyksCiAgICAgICBtTmV4dFVudXNlZEJpbmRpbmcoMCksCiAgICAgICBtTmV4
dFVudXNlZElucHV0TG9jYXRpb24oMCksCi0gICAgICBtTmV4dFVudXNlZE91dHB1dExvY2F0aW9u
KDApCisgICAgICBtTmV4dFVudXNlZE91dHB1dExvY2F0aW9uKDApLAorICAgICAgbUZvcmNlSGln
aHAoZm9yY2VIaWdocCksCisgICAgICBtRW5hYmxlUHJlY2lzaW9uKGVuYWJsZVByZWNpc2lvbikK
IHt9CiAKIHZvaWQgVE91dHB1dFZ1bGthbkdMU0w6OndyaXRlTGF5b3V0UXVhbGlmaWVyKFRJbnRl
cm1UeXBlZCAqdmFyaWFibGUpCkBAIC0xNjgsNCArMTcyLDE3IEBAIHZvaWQgVE91dHB1dFZ1bGth
bkdMU0w6OndyaXRlU3RydWN0VHlwZShjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUpCiAgICAg
fQogfQogCitib29sIFRPdXRwdXRWdWxrYW5HTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQ
cmVjaXNpb24gcHJlY2lzaW9uKQoreworICAgIGlmICgocHJlY2lzaW9uID09IEVicFVuZGVmaW5l
ZCkgfHwgIW1FbmFibGVQcmVjaXNpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFRJ
bmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKKyAgICBpZiAobUZvcmNlSGlnaHApCisgICAg
ICAgIG91dCA8PCBnZXRQcmVjaXNpb25TdHJpbmcoRWJwSGlnaCk7CisgICAgZWxzZQorICAgICAg
ICBvdXQgPDwgZ2V0UHJlY2lzaW9uU3RyaW5nKHByZWNpc2lvbik7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xT
TC5oCmluZGV4IDZhZDYxNTRkYzgwYjgyNjNhOWY4NDJiMzhkNmNlYWYxMTY3MWEyZGEuLjM2ODVm
NWM1MzVmN2IzYjJlZWRjMTc3MTA1NTMzMjUwMDhlNjEyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRWdWxrYW5HTFNMLmgKQEAgLTI1LDYgKzI1LDggQEAgY2xhc3MgVE91dHB1dFZ1bGthbkdM
U0wgOiBwdWJsaWMgVE91dHB1dEdMU0wKICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVt
IHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZm9yY2VIaWdocCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIGVu
YWJsZVByZWNpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zKTsKIAogICAgIHZvaWQgd3JpdGVTdHJ1Y3RUeXBlKGNvbnN0IFRTdHJ1Y3R1
cmUgKnN0cnVjdHVyZSk7CkBAIC00OCw2ICs1MCw3IEBAIGNsYXNzIFRPdXRwdXRWdWxrYW5HTFNM
IDogcHVibGljIFRPdXRwdXRHTFNMCiAgICAgdm9pZCB3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBU
VHlwZSAmdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wgKnN5
bWJvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkFyZ3VtZW50
KSBvdmVycmlkZTsKKyAgICBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbikg
b3ZlcnJpZGU7CiAKICAgICAvLyBFdmVyeSByZXNvdXJjZSB0aGF0IHJlcXVpcmVzIHNldCAmIGJp
bmRpbmcgbGF5b3V0IHF1YWxpZmllcnMgaXMgYXNzaWduZWQgc2V0IDAgYW5kIGFuCiAgICAgLy8g
YXJiaXRyYXJ5IGJpbmRpbmcgd2hlbiBvdXRwdXR0aW5nIEdMU0wuICBFdmVyeSBpbnB1dC9vdXRw
dXQgdGhhdCByZXF1aXJlcyBhIGxvY2F0aW9uCkBAIC01Nyw2ICs2MCwxMCBAQCBjbGFzcyBUT3V0
cHV0VnVsa2FuR0xTTCA6IHB1YmxpYyBUT3V0cHV0R0xTTAogICAgIHVpbnQzMl90IG1OZXh0VW51
c2VkQmluZGluZzsKICAgICB1aW50MzJfdCBtTmV4dFVudXNlZElucHV0TG9jYXRpb247CiAgICAg
dWludDMyX3QgbU5leHRVbnVzZWRPdXRwdXRMb2NhdGlvbjsKKworICBwcml2YXRlOgorICAgIGJv
b2wgbUZvcmNlSGlnaHA7CisgICAgYm9vbCBtRW5hYmxlUHJlY2lzaW9uOwogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMRm9yTWV0YWwubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMRm9y
TWV0YWwubW0KaW5kZXggMzVlMDZlYjllZDIwYTNjZjAwNjRlY2U1MDQ2MzJlMmU1M2I0NjQ2Yi4u
ZjljNzk5YTkwODcxMzMxM2Q5OWRhYTNkZjQ0M2VhMzI0MmEyNjVlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2Fu
R0xTTEZvck1ldGFsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0xGb3JNZXRhbC5tbQpAQCAtNzEsNiArNzEsOCBA
QCBUT3V0cHV0VnVsa2FuR0xTTEZvck1ldGFsOjpUT3V0cHV0VnVsa2FuR0xTTEZvck1ldGFsKFRJ
bmZvU2lua0Jhc2UgJm9ialNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVmVyc2lvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVP
cHRpb25zKQoge30KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKaW5kZXggNWM0YTBk
MmUyMjJlMmU0NmU4YzhkZDUzNDFjYjc1NTIwMzkyOGUzYS4uMTc5NTEyZWRiYjBjZDE3YmI0MjM0
ZGFlMmU3Y2E3MjNkNDUxNmY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwCkBA
IC0xMDY3LDYgKzEwNjcsMzUgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0FycmF5RWxlbWVu
dElzTm90QXJyYXkoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorLy8gQ2hlY2sgZm9yIGFycmF5LW9mLWFycmF5cyBiZWluZyB1c2VkIGFzIG5vbi1hbGxvd2Vk
IHNoYWRlciBpbnB1dHMvb3V0cHV0cy4KK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tBcnJheU9m
QXJyYXlzSW5PdXQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJmVsZW1lbnRUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAm
YXJyYXlUeXBlKQoreworICAgIGlmIChhcnJheVR5cGUuaXNBcnJheU9mQXJyYXlzKCkpCisgICAg
eworICAgICAgICBpZiAoZWxlbWVudFR5cGUucXVhbGlmaWVyID09IEV2cVZlcnRleE91dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwgInZlcnRleCBzaGFkZXIgb3V0cHV0IGNh
bm5vdCBiZSBhbiBhcnJheSBvZiBhcnJheXMiLAorICAgICAgICAgICAgICAgICAgVFR5cGUoZWxl
bWVudFR5cGUpLmdldFF1YWxpZmllclN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZWxlbWVudFR5cGUucXVhbGlmaWVyID09IEV2cUZy
YWdtZW50SW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJmcmFnbWVudCBz
aGFkZXIgaW5wdXQgY2Fubm90IGJlIGFuIGFycmF5IG9mIGFycmF5cyIsCisgICAgICAgICAgICAg
ICAgICBUVHlwZShlbGVtZW50VHlwZSkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChlbGVtZW50VHlwZS5xdWFs
aWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxp
bmUsICJmcmFnbWVudCBzaGFkZXIgb3V0cHV0IGNhbm5vdCBiZSBhbiBhcnJheSBvZiBhcnJheXMi
LAorICAgICAgICAgICAgICAgICAgVFR5cGUoZWxlbWVudFR5cGUpLmdldFF1YWxpZmllclN0cmlu
ZygpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogLy8gQ2hlY2sgaWYgdGhpcyBxdWFsaWZpZWQgZWxlbWVudCB0eXBl
IGNhbiBiZSBmb3JtZWQgaW50byBhbiBhcnJheS4gVGhpcyBpcyBvbmx5IGNhbGxlZCB3aGVuIGFy
cmF5CiAvLyBicmFja2V0cyBhcmUgYXNzb2NpYXRlZCB3aXRoIGFuIGlkZW50aWZpZXIgaW4gYSBk
ZWNsYXJhdGlvbiwgbGlrZSB0aGlzOgogLy8gICBmbG9hdCBhWzJdOwpAQCAtMjAwOSwxMCArMjAz
OCwxMyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291
cmNlTG9jICZsaW5lLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYm9vbCBu
b25Db25zdEdsb2JhbEluaXRpYWxpemVycyA9CisgICAgICAgIElzRXh0ZW5zaW9uRW5hYmxlZCht
RGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEV4dGVuc2lvbjo6RVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRp
YWxpemVycyk7CiAgICAgYm9vbCBnbG9iYWxJbml0V2FybmluZyA9IGZhbHNlOwogICAgIGlmIChz
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgJiYKICAgICAgICAgIVZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXIoaW5pdGlhbGl6ZXIsIG1TaGFkZXJWZXJzaW9uLCBzaDo6SXNXZWJHTEJhc2VkU3Bl
YyhtU2hhZGVyU3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnbG9i
YWxJbml0V2FybmluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbkNv
bnN0R2xvYmFsSW5pdGlhbGl6ZXJzLCAmZ2xvYmFsSW5pdFdhcm5pbmcpKQogICAgIHsKICAgICAg
ICAgLy8gRXJyb3IgbWVzc2FnZSBkb2VzIG5vdCBjb21wbGV0ZWx5IG1hdGNoIGJlaGF2aW9yIHdp
dGggRVNTTCAxLjAwLCBidXQKICAgICAgICAgLy8gd2Ugd2FudCB0byBzdGVlciBkZXZlbG9wZXJz
IHRvd2FyZHMgb25seSB1c2luZyBjb25zdGFudCBleHByZXNzaW9ucy4KQEAgLTI1NzUsNiArMjYw
Nyw4IEBAIFRJbnRlcm1EZWNsYXJhdGlvbiAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVBcnJh
eURlY2xhcmF0aW9uKAogICAgIFRUeXBlICphcnJheVR5cGUgPSBuZXcgVFR5cGUoZWxlbWVudFR5
cGUpOwogICAgIGFycmF5VHlwZS0+bWFrZUFycmF5cyhhcnJheVNpemVzKTsKIAorICAgIGNoZWNr
QXJyYXlPZkFycmF5c0luT3V0KGluZGV4TG9jYXRpb24sIGVsZW1lbnRUeXBlLCAqYXJyYXlUeXBl
KTsKKwogICAgIGNoZWNrR2VvbWV0cnlTaGFkZXJJbnB1dEFuZFNldEFycmF5U2l6ZShpbmRleExv
Y2F0aW9uLCBpZGVudGlmaWVyLCBhcnJheVR5cGUpOwogCiAgICAgY2hlY2tDYW5CZURlY2xhcmVk
V2l0aG91dEluaXRpYWxpemVyKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgYXJyYXlU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmgKaW5kZXggOWVjMjUyYjJlZGYyOTA1OWU3
NjVlMzU2NjUzNWIxZjBiZTY0ZTM2Ni4uNDdlYWRlZDcxMThjODJjMWMwNjljNjA2MDM2ZmQyMzk1
OTZiNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmgKQEAgLTEzNiw2ICsxMzYsOSBA
QCBjbGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdW5zaWduZWQg
aW50IGNoZWNrSXNWYWxpZEFycmF5U2l6ZShjb25zdCBUU291cmNlTG9jICZsaW5lLCBUSW50ZXJt
VHlwZWQgKmV4cHIpOwogICAgIGJvb2wgY2hlY2tJc1ZhbGlkUXVhbGlmaWVyRm9yQXJyYXkoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJmVsZW1lbnRRdWFsaWZpZXIp
OwogICAgIGJvb2wgY2hlY2tBcnJheUVsZW1lbnRJc05vdEFycmF5KGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZlbGVtZW50VHlwZSk7CisgICAgYm9vbCBjaGVja0Fy
cmF5T2ZBcnJheXNJbk91dChjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJmVsZW1lbnRUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmFycmF5VHlwZSk7CiAgICAg
Ym9vbCBjaGVja0lzTm9uVm9pZChjb25zdCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW1tdXRhYmxlU3RyaW5nICZpZGVudGlmaWVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVEJhc2ljVHlwZSAmdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFs
bG9jLmNwcAppbmRleCBkYTEzOTZiNWE1MDlmYzQwZjFhNzc1MTk2OGEyOTI1NWY0M2Y5NjcwLi5k
NGE2MzFiMmQ3ZmQ5YmQ0OWM2NmJlYjEwNjA1Mzg2Y2MzMWM2NTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Bv
b2xBbGxvYy5jcHAKQEAgLTYsMTQgKzYsMTQgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvUG9vbEFsbG9jLmgiCiAKLSNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vdGxzLmgiCiAKIFRMU0luZGV4IFBvb2xJbmRl
eCA9IFRMU19JTlZBTElEX0lOREVYOwogCiBib29sIEluaXRpYWxpemVQb29sSW5kZXgoKQogewot
ICAgIGFzc2VydChQb29sSW5kZXggPT0gVExTX0lOVkFMSURfSU5ERVgpOworICAgIEFTU0VSVChQ
b29sSW5kZXggPT0gVExTX0lOVkFMSURfSU5ERVgpOwogCiAgICAgUG9vbEluZGV4ID0gQ3JlYXRl
VExTSW5kZXgoKTsKICAgICByZXR1cm4gUG9vbEluZGV4ICE9IFRMU19JTlZBTElEX0lOREVYOwpA
QCAtMjEsNyArMjEsNyBAQCBib29sIEluaXRpYWxpemVQb29sSW5kZXgoKQogCiB2b2lkIEZyZWVQ
b29sSW5kZXgoKQogewotICAgIGFzc2VydChQb29sSW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVgp
OworICAgIEFTU0VSVChQb29sSW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVgpOwogCiAgICAgRGVz
dHJveVRMU0luZGV4KFBvb2xJbmRleCk7CiAgICAgUG9vbEluZGV4ID0gVExTX0lOVkFMSURfSU5E
RVg7CkBAIC0yOSwxMiArMjksMTIgQEAgdm9pZCBGcmVlUG9vbEluZGV4KCkKIAogYW5nbGU6OlBv
b2xBbGxvY2F0b3IgKkdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKQogewotICAgIGFzc2VydChQb29s
SW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVgpOworICAgIEFTU0VSVChQb29sSW5kZXggIT0gVExT
X0lOVkFMSURfSU5ERVgpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxhbmdsZTo6UG9vbEFsbG9j
YXRvciAqPihHZXRUTFNWYWx1ZShQb29sSW5kZXgpKTsKIH0KIAogdm9pZCBTZXRHbG9iYWxQb29s
QWxsb2NhdG9yKGFuZ2xlOjpQb29sQWxsb2NhdG9yICpwb29sQWxsb2NhdG9yKQogewotICAgIGFz
c2VydChQb29sSW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVgpOworICAgIEFTU0VSVChQb29sSW5k
ZXggIT0gVExTX0lOVkFMSURfSU5ERVgpOwogICAgIFNldFRMU1ZhbHVlKFBvb2xJbmRleCwgcG9v
bEFsbG9jYXRvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCmluZGV4IGZmMzg2MjZk
MDFkZDVlYzUxNWU0NDdhOTcyNTA5ZjhkZDNkOTQ0ODkuLjU3YWNlNjdmNjUyZTUzNjk3MTA4NWM1
YmI3NDNhNDIxMjE0MzkyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCkBAIC0xNDks
MzAgKzE0OSwzMSBAQCB2b2lkIEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJlc291cmNl
cyAqcmVzb3VyY2VzKQogICAgIHJlc291cmNlcy0+TWF4RHJhd0J1ZmZlcnMgICAgICAgICAgICAg
ICA9IDE7CiAKICAgICAvLyBFeHRlbnNpb25zLgotICAgIHJlc291cmNlcy0+T0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzICAgICAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5PRVNfRUdM
X2ltYWdlX2V4dGVybmFsICAgICAgICAgICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPk9F
U19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNl
cy0+TlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCAgICAgICAgICA9IDA7Ci0gICAgcmVz
b3VyY2VzLT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgICAgICAgICAgICAgICAgICAgID0gMDsKLSAg
ICByZXNvdXJjZXMtPkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICAgICAgICAgICAgICAgICAgPSAw
OwotICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVmZmVycyAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRfZnJhZ19kZXB0aCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgICAgICAg
ICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNp
c2lvbiAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRfc2hhZGVyX2ZyYW1lYnVm
ZmVyX2ZldGNoICAgICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPk5WX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaCAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+QVJNX3NoYWRl
cl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5PVlJf
bXVsdGl2aWV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMt
Pk9WUl9tdWx0aXZpZXcyICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291
cmNlcy0+RVhUX1lVVl90YXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7Ci0gICAg
cmVzb3VyY2VzLT5FWFRfZ2VvbWV0cnlfc2hhZGVyICAgICAgICAgICAgICAgICAgICAgID0gMDsK
LSAgICByZXNvdXJjZXMtPkVYVF9ncHVfc2hhZGVyNSAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAwOwotICAgIHJlc291cmNlcy0+T0VTX3RleHR1cmVfc3RvcmFnZV9tdWx0aXNhbXBsZV8yZF9h
cnJheSA9IDA7Ci0gICAgcmVzb3VyY2VzLT5PRVNfdGV4dHVyZV8zRCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPkFOR0xFX3RleHR1cmVfbXVsdGlzYW1wbGUg
ICAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+QU5HTEVfbXVsdGlfZHJhdyAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5BTkdMRV9iYXNlX3ZlcnRl
eF9iYXNlX2luc3RhbmNlICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPldFQkdMX3ZpZGVv
X3RleHR1cmUgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+T0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2Vz
LT5PRVNfRUdMX2ltYWdlX2V4dGVybmFsICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICBy
ZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgICAgICAgICAgICAgICAgPSAw
OworICAgIHJlc291cmNlcy0+TlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCAgICAgICAg
ICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgICAgICAgICAg
ICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVk
ICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVmZmVy
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZnJh
Z19kZXB0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMt
PkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJl
c291cmNlcy0+V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAgICAgICAgICAgICAgICA9IDA7
CisgICAgcmVzb3VyY2VzLT5FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgICAgICAgICAg
ICAgID0gMDsKKyAgICByZXNvdXJjZXMtPk5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICAg
ICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+QVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaCAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5PVlJfbXVsdGl2aWV3ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPk9WUl9tdWx0
aXZpZXcyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+
RVhUX1lVVl90YXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVz
b3VyY2VzLT5FWFRfZ2VvbWV0cnlfc2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsK
KyAgICByZXNvdXJjZXMtPkVYVF9ncHVfc2hhZGVyNSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAwOworICAgIHJlc291cmNlcy0+RVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2lu
aXRpYWxpemVycyA9IDA7CisgICAgcmVzb3VyY2VzLT5PRVNfdGV4dHVyZV9zdG9yYWdlX211bHRp
c2FtcGxlXzJkX2FycmF5ICAgID0gMDsKKyAgICByZXNvdXJjZXMtPk9FU190ZXh0dXJlXzNEICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+QU5HTEVfdGV4
dHVyZV9tdWx0aXNhbXBsZSAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5B
TkdMRV9tdWx0aV9kcmF3ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNv
dXJjZXMtPkFOR0xFX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UgICAgICAgICAgICAgPSAwOwor
ICAgIHJlc291cmNlcy0+V0VCR0xfdmlkZW9fdGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDA7CiAKICAgICByZXNvdXJjZXMtPk5WX2RyYXdfYnVmZmVycyA9IDA7CiAKQEAgLTcxMywx
MiArNzE0LDEyIEBAIGNvbnN0IGNoYXIga0RlZmF1bHRVbmlmb3Jtc05hbWVHU1tdICA9ICJkZWZh
dWx0VW5pZm9ybXNHUyI7CiBjb25zdCBjaGFyIGtEZWZhdWx0VW5pZm9ybXNOYW1lRlNbXSAgPSAi
ZGVmYXVsdFVuaWZvcm1zRlMiOwogY29uc3QgY2hhciBrRGVmYXVsdFVuaWZvcm1zTmFtZUNTW10g
ID0gImRlZmF1bHRVbmlmb3Jtc0NTIjsKIAotLy8gSW50ZXJmYWNlIGJsb2NrIGFuZCB2YXJpYWJs
ZSBuYW1lIGNvbnRhaW5pbmcgZHJpdmVyIHVuaWZvcm1zCisvLyBJbnRlcmZhY2UgYmxvY2sgYW5k
IHZhcmlhYmxlIG5hbWVzIGNvbnRhaW5pbmcgZHJpdmVyIHVuaWZvcm1zCiBjb25zdCBjaGFyIGtE
cml2ZXJVbmlmb3Jtc0Jsb2NrTmFtZVtdID0gIkFOR0xFVW5pZm9ybUJsb2NrIjsKIGNvbnN0IGNo
YXIga0RyaXZlclVuaWZvcm1zVmFyTmFtZVtdICAgPSAiQU5HTEVVbmlmb3JtcyI7CiAKLS8vIElu
dGVyZmFjZSBibG9jayBhcnJheSB2YXJpYWJsZSBuYW1lIHVzZWQgZm9yIGF0b21pYyBjb3VudGVy
IGVtdWxhdGlvbgotY29uc3QgY2hhciBrQXRvbWljQ291bnRlcnNWYXJOYW1lW10gPSAiYXRvbWlj
Q291bnRlcnMiOworLy8gSW50ZXJmYWNlIGJsb2NrIGFycmF5IG5hbWUgdXNlZCBmb3IgYXRvbWlj
IGNvdW50ZXIgZW11bGF0aW9uCitjb25zdCBjaGFyIGtBdG9taWNDb3VudGVyc0Jsb2NrTmFtZVtd
ID0gIkFOR0xFQXRvbWljQ291bnRlcnMiOwogCiBjb25zdCBjaGFyIGtMaW5lUmFzdGVyRW11bGF0
aW9uUG9zaXRpb25bXSA9ICJBTkdMRVBvc2l0aW9uIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckVTU0wuY3BwCmluZGV4IDU2Njk1MWNhOTA4YzliOWM4MjAxNzdmN2IwZTAwMzQyYzM1NzVi
ZDguLjUxZjk3OGIwYmIyYzY5Y2Q1NWY0NGY3MmNkZmQ2NjIwNjZlMmMwMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JFU1NMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAKQEAgLTksNyArOSw2IEBACiAjaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yR0xTTC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5o
IgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvRW11bGF0ZVByZWNpc2lv
bi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVjb3JkQ29uc3Rh
bnRQcmVjaXNpb24uaCIKIAogbmFtZXNwYWNlIHNoCkBAIC00NywxOSArNDYsOSBAQCBib29sIFRy
YW5zbGF0b3JFU1NMOjp0cmFuc2xhdGUoVEludGVybUJsb2NrICpyb290LAogICAgIC8vIGxpa2Ug
bm9uLXByZXByb2Nlc3NvciB0b2tlbnMuCiAgICAgd3JpdGVQcmFnbWEoY29tcGlsZU9wdGlvbnMp
OwogCi0gICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPQotICAgICAgICBnZXRSZXNvdXJjZXMo
KS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVy
UHJlY2lzaW9uOwotCi0gICAgaWYgKHByZWNpc2lvbkVtdWxhdGlvbikKLSAgICB7Ci0gICAgICAg
IEVtdWxhdGVQcmVjaXNpb24gZW11bGF0ZVByZWNpc2lvbigmZ2V0U3ltYm9sVGFibGUoKSk7Ci0g
ICAgICAgIHJvb3QtPnRyYXZlcnNlKCZlbXVsYXRlUHJlY2lzaW9uKTsKLSAgICAgICAgaWYgKCFl
bXVsYXRlUHJlY2lzaW9uLnVwZGF0ZVRyZWUodGhpcywgcm9vdCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBlbXVsYXRlUHJlY2lzaW9u
LndyaXRlRW11bGF0aW9uSGVscGVycyhzaW5rLCBzaGFkZXJWZXIsIFNIX0VTU0xfT1VUUFVUKTsK
LSAgICB9CisgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIWVt
dWxhdGVQcmVjaXNpb25JZk5lZWRlZChyb290LCBzaW5rLCAmcHJlY2lzaW9uRW11bGF0aW9uLCBT
SF9FU1NMX09VVFBVVCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghUmVjb3Jk
Q29uc3RhbnRQcmVjaXNpb24odGhpcywgcm9vdCwgJmdldFN5bWJvbFRhYmxlKCkpKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JHTFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmNwcAppbmRleCA3M2M4YWExMjI0MDAzYmQ3
MjY1NmU0OGZkMzAwYzdmYTA2OWU3N2M0Li5iZjQ4NGRiYjM2YTk0MTczNjkzZGQxNzQ2MTlhMzVh
OTE5YjQ2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwCkBAIC0xMSw3
ICsxMSw2IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNMLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvdHJlZV9vcHMvRW11bGF0ZVByZWNpc2lvbi5oIgogI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvdHJlZV9vcHMvUmV3cml0ZVJvd01ham9yTWF0cmljZXMuaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0Lmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZXdyaXRlVW5hcnlNaW51
c09wZXJhdG9yRmxvYXQuaCIKQEAgLTExOCwxOSArMTE3LDkgQEAgYm9vbCBUcmFuc2xhdG9yR0xT
TDo6dHJhbnNsYXRlKFRJbnRlcm1CbG9jayAqcm9vdCwKICAgICAgICAgfQogICAgIH0KIAotICAg
IGJvb2wgcHJlY2lzaW9uRW11bGF0aW9uID0KLSAgICAgICAgZ2V0UmVzb3VyY2VzKCkuV0VCR0xf
ZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAmJiBnZXRQcmFnbWEoKS5kZWJ1Z1NoYWRlclByZWNpc2lv
bjsKLQotICAgIGlmIChwcmVjaXNpb25FbXVsYXRpb24pCi0gICAgewotICAgICAgICBFbXVsYXRl
UHJlY2lzaW9uIGVtdWxhdGVQcmVjaXNpb24oJmdldFN5bWJvbFRhYmxlKCkpOwotICAgICAgICBy
b290LT50cmF2ZXJzZSgmZW11bGF0ZVByZWNpc2lvbik7Ci0gICAgICAgIGlmICghZW11bGF0ZVBy
ZWNpc2lvbi51cGRhdGVUcmVlKHRoaXMsIHJvb3QpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZW11bGF0ZVByZWNpc2lvbi53cml0ZUVt
dWxhdGlvbkhlbHBlcnMoc2luaywgZ2V0U2hhZGVyVmVyc2lvbigpLCBnZXRPdXRwdXRUeXBlKCkp
OwotICAgIH0KKyAgICBib29sIHByZWNpc2lvbkVtdWxhdGlvbiA9IGZhbHNlOworICAgIGlmICgh
ZW11bGF0ZVByZWNpc2lvbklmTmVlZGVkKHJvb3QsIHNpbmssICZwcmVjaXNpb25FbXVsYXRpb24s
IGdldE91dHB1dFR5cGUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFdyaXRl
IGVtdWxhdGVkIGJ1aWx0LWluIGZ1bmN0aW9ucyBpZiBuZWVkZWQuCiAgICAgaWYgKCFnZXRCdWls
dEluRnVuY3Rpb25FbXVsYXRvcigpLmlzT3V0cHV0RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNM
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JITFNMLmNwcAppbmRleCBiZmYyNTM5NjQ4NDA3Nzc4NmFjMzg2N2JiOGFlYzYzOTZj
M2EwMmE1Li4yNDE5Y2IzY2Y0NjQ5OGYzZmEzODYyODVhODEyY2E3YzY2ZDg2YzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9ySExTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCkBAIC0xMCw3ICsxMCw2IEBACiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvQXJyYXlSZXR1cm5W
YWx1ZVRvT3V0UGFyYW1ldGVyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVl
X29wcy9CcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCIKLSNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL0VtdWxhdGVQcmVjaXNpb24uaCIKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUHJ1bmVFbXB0eUNhc2Vz
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVEeW5hbWlj
SW5kZXhpbmcuaCIKQEAgLTE0MCwyMCArMTM5LDkgQEAgYm9vbCBUcmFuc2xhdG9ySExTTDo6dHJh
bnNsYXRlKFRJbnRlcm1CbG9jayAqcm9vdCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGJvb2wgcHJlY2lzaW9uRW11bGF0aW9uID0KLSAgICAgICAgZ2V0UmVzb3VyY2VzKCku
V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAmJiBnZXRQcmFnbWEoKS5kZWJ1Z1NoYWRlclBy
ZWNpc2lvbjsKLQotICAgIGlmIChwcmVjaXNpb25FbXVsYXRpb24pCi0gICAgewotICAgICAgICBF
bXVsYXRlUHJlY2lzaW9uIGVtdWxhdGVQcmVjaXNpb24oJmdldFN5bWJvbFRhYmxlKCkpOwotICAg
ICAgICByb290LT50cmF2ZXJzZSgmZW11bGF0ZVByZWNpc2lvbik7Ci0gICAgICAgIGlmICghZW11
bGF0ZVByZWNpc2lvbi51cGRhdGVUcmVlKHRoaXMsIHJvb3QpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZW11bGF0ZVByZWNpc2lvbi53
cml0ZUVtdWxhdGlvbkhlbHBlcnMoZ2V0SW5mb1NpbmsoKS5vYmosIGdldFNoYWRlclZlcnNpb24o
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0T3V0
cHV0VHlwZSgpKTsKLSAgICB9CisgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBmYWxzZTsK
KyAgICBpZiAoIWVtdWxhdGVQcmVjaXNpb25JZk5lZWRlZChyb290LCBnZXRJbmZvU2luaygpLm9i
aiwgJnByZWNpc2lvbkVtdWxhdGlvbiwgZ2V0T3V0cHV0VHlwZSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKChjb21waWxlT3B0aW9ucyAmIFNIX0VYUEFORF9TRUxFQ1RfSExT
TF9JTlRFR0VSX1BPV19FWFBSRVNTSU9OUykgIT0gMCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0
YWwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvck1ldGFsLmNwcAppbmRleCBjZTRlOWVhMjhmNWRjOTg4NzUzMzQ1MmZlZGRmYTk5
MmViNTBhZWRlLi40MzUzOWJlODdjYzg5ZTYzMTBiM2VjODY1NDg4YTc4NDY0YmJlMDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yTWV0YWwuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbC5jcHAKQEAgLTY3LDkgKzY3LDEwIEBAIGJv
b2wgVHJhbnNsYXRvck1ldGFsOjp0cmFuc2xhdGUoVEludGVybUJsb2NrICpyb290LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZURpYWdub3N0aWNzICpwZXJmRGlh
Z25vc3RpY3MpCiB7CiAgICAgVEluZm9TaW5rQmFzZSAmc2luayA9IGdldEluZm9TaW5rKCkub2Jq
OworCiAgICAgVE91dHB1dFZ1bGthbkdMU0wgb3V0cHV0R0xTTChzaW5rLCBnZXRBcnJheUluZGV4
Q2xhbXBpbmdTdHJhdGVneSgpLCBnZXRIYXNoRnVuY3Rpb24oKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldE5hbWVNYXAoKSwgJmdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRl
clR5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNoYWRlclZlcnNp
b24oKSwgZ2V0T3V0cHV0VHlwZSgpLCBjb21waWxlT3B0aW9ucyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRTaGFkZXJWZXJzaW9uKCksIGdldE91dHB1dFR5cGUoKSwgZmFs
c2UsIHRydWUsIGNvbXBpbGVPcHRpb25zKTsKIAogICAgIGNvbnN0IFRWYXJpYWJsZSAqZHJpdmVy
VW5pZm9ybXMgPSBudWxscHRyOwogICAgIGlmICghVHJhbnNsYXRvclZ1bGthbjo6dHJhbnNsYXRl
SW1wbChyb290LCBjb21waWxlT3B0aW9ucywgcGVyZkRpYWdub3N0aWNzLCAmZHJpdmVyVW5pZm9y
bXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yVnVsa2FuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4uY3BwCmluZGV4IGQ2NTczNmY2
ZmRkNTI5ZTUwZGUzNDUzZmYyY2NkMzc2NzVjMTA4MzYuLmZkODNhZGNiMGQ3ODFiY2I0NzhmMWNj
ODc3Mzg1Mjc1YThjZDllNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4uY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4u
Y3BwCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRw
dXRWdWxrYW5HTFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TdGF0aWNUeXBl
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9OYW1lRW1iZWRkZWRV
bmlmb3JtU3RydWN0cy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMv
UmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX29wcy9SZW1vdmVJbmFjdGl2ZUludGVyZmFjZVZhcmlhYmxlcy5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmV3cml0ZUF0b21pY0NvdW50ZXJzLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZXdyaXRlQ3ViZU1hcFNh
bXBsZXJzQXMyREFycmF5LmgiCkBAIC0xODAsMTEgKzE4MSwxMiBAQCBjb25zdGV4cHIgY29uc3Qg
Y2hhciBrWGZiVmVydGljZXNQZXJEcmF3W10gICA9ICJ4ZmJWZXJ0aWNlc1BlckRyYXciOwogY29u
c3RleHByIGNvbnN0IGNoYXIga1hmYkJ1ZmZlck9mZnNldHNbXSAgICAgPSAieGZiQnVmZmVyT2Zm
c2V0cyI7CiBjb25zdGV4cHIgY29uc3QgY2hhciBrQWNiQnVmZmVyT2Zmc2V0c1tdICAgICA9ICJh
Y2JCdWZmZXJPZmZzZXRzIjsKIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtEZXB0aFJhbmdlW10gICAg
ICAgICAgID0gImRlcHRoUmFuZ2UiOworY29uc3RleHByIGNvbnN0IGNoYXIga1ByZVJvdGF0aW9u
W10gICAgICAgICAgPSAicHJlUm90YXRpb24iOwogCi1jb25zdGV4cHIgc2l6ZV90IGtOdW1HcmFw
aGljc0RyaXZlclVuaWZvcm1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSA5OworY29uc3RleHByIHNpemVfdCBrTnVtR3JhcGhpY3NEcml2ZXJVbmlmb3Jt
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTA7CiBj
b25zdGV4cHIgc3RkOjphcnJheTxjb25zdCBjaGFyICosIGtOdW1HcmFwaGljc0RyaXZlclVuaWZv
cm1zPiBrR3JhcGhpY3NEcml2ZXJVbmlmb3JtTmFtZXMgPSB7CiAgICAge2tWaWV3cG9ydCwga0hh
bGZSZW5kZXJBcmVhSGVpZ2h0LCBrVmlld3BvcnRZU2NhbGUsIGtOZWdWaWV3cG9ydFlTY2FsZSwg
a1hmYkFjdGl2ZVVucGF1c2VkLAotICAgICBrWGZiVmVydGljZXNQZXJEcmF3LCBrWGZiQnVmZmVy
T2Zmc2V0cywga0FjYkJ1ZmZlck9mZnNldHMsIGtEZXB0aFJhbmdlfX07CisgICAgIGtYZmJWZXJ0
aWNlc1BlckRyYXcsIGtYZmJCdWZmZXJPZmZzZXRzLCBrQWNiQnVmZmVyT2Zmc2V0cywga0RlcHRo
UmFuZ2UsIGtQcmVSb3RhdGlvbn19OwogCiBjb25zdGV4cHIgc2l6ZV90IGtOdW1Db21wdXRlRHJp
dmVyVW5pZm9ybXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMTsKIGNvbnN0ZXhwciBzdGQ6OmFycmF5PGNvbnN0IGNoYXIgKiwga051bUNvbXB1dGVEcml2
ZXJVbmlmb3Jtcz4ga0NvbXB1dGVEcml2ZXJVbmlmb3JtTmFtZXMgPSB7CkBAIC0zMzIsNiArMzM0
LDM1IEBAIEFOR0xFX05PX0RJU0NBUkQgYm9vbCBBcHBlbmRWZXJ0ZXhTaGFkZXJEZXB0aENvcnJl
Y3Rpb25Ub01haW4oVENvbXBpbGVyICpjb21waWxlCiAgICAgcmV0dXJuIFJ1bkF0VGhlRW5kT2ZT
aGFkZXIoY29tcGlsZXIsIHJvb3QsIGFzc2lnbm1lbnQsIHN5bWJvbFRhYmxlKTsKIH0KIAorLy8g
VGhpcyBvcGVyYXRpb24gcGVyZm9ybXMgQW5kcm9pZCBwcmUtcm90YXRpb24gYW5kIHktZmxpcC4g
IEZvciBBbmRyb2lkIChhbmQgcG90ZW50aWFsbHkgb3RoZXIKKy8vIHBsYXRmb3JtcyksIHRoZSBk
ZXZpY2UgbWF5IHJvdGF0ZSwgc3VjaCB0aGF0IHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgYXBwbGlj
YXRpb24gaXMgcm90YXRlZAorLy8gcmVsYXRpdmUgdG8gdGhlIG5hdGl2ZSBvcmllbnRhdGlvbiBv
ZiB0aGUgZGV2aWNlLiAgVGhpcyBpcyBjb3JyZWN0ZWQgaW4gcGFydCBieSBtdWx0aXBseWluZwor
Ly8gZ2xfUG9zaXRpb24gYnkgYSBtYXQyLgorLy8gVGhlIGVxdWF0aW9ucyByZWR1Y2UgdG8gYW4g
ZXhwcmVzc2lvbjoKKy8vCisvLyAgICAgZ2xfUG9zaXRpb24ueHkgPSBnbF9Qb3NpdGlvbi54eSAq
IHByZVJvdGF0aW9uCitBTkdMRV9OT19ESVNDQVJEIGJvb2wgQXBwZW5kUHJlUm90YXRpb24oVENv
bXBpbGVyICpjb21waWxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtQmxvY2sgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFN5bWJvbFRhYmxlICpzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUgKmRyaXZlclVuaWZvcm1zKQoreworICAg
IFRJbnRlcm1CaW5hcnkgKnByZVJvdGF0aW9uUmVmID0gQ3JlYXRlRHJpdmVyVW5pZm9ybVJlZihk
cml2ZXJVbmlmb3Jtcywga1ByZVJvdGF0aW9uKTsKKyAgICBUSW50ZXJtU3ltYm9sICpnbFBvcyAg
ICAgICAgICA9IG5ldyBUSW50ZXJtU3ltYm9sKEJ1aWx0SW5WYXJpYWJsZTo6Z2xfUG9zaXRpb24o
KSk7CisgICAgVFZlY3RvcjxpbnQ+IHN3aXp6bGVPZmZzZXRYWSAgPSB7MCwgMX07CisgICAgVElu
dGVybVN3aXp6bGUgKmdsUG9zWFkgICAgICAgPSBuZXcgVEludGVybVN3aXp6bGUoZ2xQb3MsIHN3
aXp6bGVPZmZzZXRYWSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIGV4cHJlc3Npb24gIihnbF9Qb3Np
dGlvbi54eSAqIHByZVJvdGF0aW9uKSIKKyAgICBUSW50ZXJtQmluYXJ5ICp6Um90YXRlZCA9Cisg
ICAgICAgIG5ldyBUSW50ZXJtQmluYXJ5KEVPcE1hdHJpeFRpbWVzVmVjdG9yLCBwcmVSb3RhdGlv
blJlZi0+ZGVlcENvcHkoKSwgZ2xQb3NYWS0+ZGVlcENvcHkoKSk7CisKKyAgICAvLyBDcmVhdGUg
dGhlIGFzc2lnbm1lbnQgImdsX1Bvc2l0aW9uLnh5ID0gKGdsX1Bvc2l0aW9uLnh5ICogcHJlUm90
YXRpb24pIgorICAgIFRJbnRlcm1CaW5hcnkgKmFzc2lnbm1lbnQgPQorICAgICAgICBuZXcgVElu
dGVybUJpbmFyeShUT3BlcmF0b3I6OkVPcEFzc2lnbiwgZ2xQb3NYWS0+ZGVlcENvcHkoKSwgelJv
dGF0ZWQpOworCisgICAgLy8gQXBwZW5kIHRoZSBhc3NpZ25tZW50IGFzIGEgc3RhdGVtZW50IGF0
IHRoZSBlbmQgb2YgdGhlIHNoYWRlci4KKyAgICByZXR1cm4gUnVuQXRUaGVFbmRPZlNoYWRlcihj
b21waWxlciwgcm9vdCwgYXNzaWdubWVudCwgc3ltYm9sVGFibGUpOworfQorCiBBTkdMRV9OT19E
SVNDQVJEIGJvb2wgQXBwZW5kVmVydGV4U2hhZGVyVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRUb01h
aW4oVENvbXBpbGVyICpjb21waWxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnJvb3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlICpzeW1ib2xUYWJsZSkKQEAgLTM5MCw2ICs0MjEs
NyBAQCBjb25zdCBUVmFyaWFibGUgKkFkZEdyYXBoaWNzRHJpdmVyVW5pZm9ybXNUb1NoYWRlcihU
SW50ZXJtQmxvY2sgKnJvb3QsIFRTeW1ib2xUYQogICAgICAgICBuZXcgVFR5cGUoRWJ0SW50LCA0
KSwKICAgICAgICAgbmV3IFRUeXBlKEVidFVJbnQsIDQpLAogICAgICAgICBlbXVsYXRlZERlcHRo
UmFuZ2VUeXBlLAorICAgICAgICBuZXcgVFR5cGUoRWJ0RmxvYXQsIDIsIDIpLAogICAgIH19Owog
CiAgICAgZm9yIChzaXplX3QgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwga051bUdy
YXBoaWNzRHJpdmVyVW5pZm9ybXM7ICsrdW5pZm9ybUluZGV4KQpAQCAtODMzLDYgKzg2NSwxNiBA
QCBib29sIFRyYW5zbGF0b3JWdWxrYW46OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICpyb290
LAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2Ug
aWYgKGdldFNoYWRlclZlcnNpb24oKSA+PSAzMTApCisgICAgeworICAgICAgICAvLyBWdWxrYW4g
ZG9lc24ndCBzdXBwb3J0IEF0b21pYyBTdG9yYWdlIGFzIGEgU3RvcmFnZSBDbGFzcywgYnV0IHdl
J3ZlIHNlZW4KKyAgICAgICAgLy8gY2FzZXMgd2hlcmUgYnVpbHRpbnMgYXJlIHVzaW5nIGl0IGV2
ZW4gd2l0aCBubyBhY3RpdmUgYXRvbWljIGNvdW50ZXJzLgorICAgICAgICAvLyBUaGlzIHBhc3Mg
c2ltcGx5IHJlbW92ZXMgdGhvc2UgYnVpbHRpbnMgaW4gdGhhdCBzY2VuYXJpby4KKyAgICAgICAg
aWYgKCFSZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnModGhpcywgcm9vdCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChn
ZXRTaGFkZXJUeXBlKCkgIT0gR0xfQ09NUFVURV9TSEFERVIpCiAgICAgewpAQCAtOTc2LDYgKzEw
MTgsMTAgQEAgYm9vbCBUcmFuc2xhdG9yVnVsa2FuOjp0cmFuc2xhdGVJbXBsKFRJbnRlcm1CbG9j
ayAqcm9vdCwKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CisgICAgICAgIGlmICghQXBwZW5kUHJlUm90YXRpb24odGhpcywgcm9vdCwgJmdldFN5bWJvbFRh
YmxlKCksIGRyaXZlclVuaWZvcm1zKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGdldFNoYWRlclR5cGUoKSA9PSBH
TF9HRU9NRVRSWV9TSEFERVIpCiAgICAgewpAQCAtMTAwOCw5ICsxMDU0LDE3IEBAIGJvb2wgVHJh
bnNsYXRvclZ1bGthbjo6dHJhbnNsYXRlKFRJbnRlcm1CbG9jayAqcm9vdCwKIHsKIAogICAgIFRJ
bmZvU2lua0Jhc2UgJnNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKKworICAgIGJvb2wgcHJlY2lz
aW9uRW11bGF0aW9uID0gZmFsc2U7CisgICAgaWYgKCFlbXVsYXRlUHJlY2lzaW9uSWZOZWVkZWQo
cm9vdCwgc2luaywgJnByZWNpc2lvbkVtdWxhdGlvbiwgU0hfR0xTTF9WVUxLQU5fT1VUUFVUKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlbmFibGVQcmVjaXNpb24gPSAoKGNv
bXBpbGVPcHRpb25zICYgU0hfSUdOT1JFX1BSRUNJU0lPTl9RVUFMSUZJRVJTKSA9PSAwKTsKKwog
ICAgIFRPdXRwdXRWdWxrYW5HTFNMIG91dHB1dEdMU0woc2luaywgZ2V0QXJyYXlJbmRleENsYW1w
aW5nU3RyYXRlZ3koKSwgZ2V0SGFzaEZ1bmN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXROYW1lTWFwKCksICZnZXRTeW1ib2xUYWJsZSgpLCBnZXRTaGFkZXJUeXBl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTaGFkZXJWZXJzaW9uKCks
IGdldE91dHB1dFR5cGUoKSwgY29tcGlsZU9wdGlvbnMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0U2hhZGVyVmVyc2lvbigpLCBnZXRPdXRwdXRUeXBlKCksIHByZWNpc2lv
bkVtdWxhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVByZWNp
c2lvbiwgY29tcGlsZU9wdGlvbnMpOwogCiAgICAgaWYgKCF0cmFuc2xhdGVJbXBsKHJvb3QsIGNv
bXBpbGVPcHRpb25zLCBwZXJmRGlhZ25vc3RpY3MsIG51bGxwdHIsICZvdXRwdXRHTFNMKSkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIu
Y3BwCmluZGV4IDA2ZjUxZWRkN2QwN2U4YzdhZmM2YmNmMTE4ZjM3Y2IwZDM1ZGU1YjEuLmZlZGM4
YjQ5MDQxN2EzNGYxZjYxNjZlY2M0ODYxZGFjODY0YmQ4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwCkBAIC0xOSw3ICsxOSw5IEBA
IGNvbnN0IGludCBrTWF4QWxsb3dlZFRyYXZlcnNhbERlcHRoID0gMjU2OwogY2xhc3MgVmFsaWRh
dGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7
CiAgIHB1YmxpYzoKLSAgICBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyKGludCBz
aGFkZXJWZXJzaW9uLCBib29sIGlzV2ViR0wpOworICAgIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXJUcmF2ZXJzZXIoaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzV2ViR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGhhc0V4dE5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzKTsKIAogICAg
IHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpIG92ZXJyaWRl
OwpAQCAtMzEsOCArMzMsMjQgQEAgY2xhc3MgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZl
cnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgYm9vbCBpc3N1ZVdhcm5pbmcoKSBj
b25zdCB7IHJldHVybiBtSXNzdWVXYXJuaW5nOyB9CiAKICAgcHJpdmF0ZToKKyAgICBBTkdMRV9J
TkxJTkUgdm9pZCBvbk5vbkNvbnN0SW5pdGlhbGl6ZXJWaXNpdChib29sIGFjY2VwdCkKKyAgICB7
CisgICAgICAgIGlmIChhY2NlcHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbUV4dE5v
bkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG1Jc3N1ZVdhcm5pbmcgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUlzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKwogICAgIGludCBtU2hhZGVyVmVyc2lvbjsKICAgICBib29sIG1Jc1dlYkdMOwor
ICAgIGJvb2wgbUV4dE5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzOwogICAgIGJvb2wgbUlzVmFs
aWQ7CiAgICAgYm9vbCBtSXNzdWVXYXJuaW5nOwogfTsKQEAgLTUxLDE0ICs2OSw4IEBAIHZvaWQg
VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5
bWJvbCAqbm9kZSkKICAgICAgICAgICAgIC8vIFdlIGFsbG93IHRoZXNlIGNhc2VzIHRvIGJlIGNv
bXBhdGlibGUgd2l0aCBsZWdhY3kgRVNTTCAxLjAwIGNvbnRlbnQuCiAgICAgICAgICAgICAvLyBJ
bXBsZW1lbnQgc3RyaWN0ZXIgcnVsZXMgZm9yIEVTU0wgMy4wMCBzaW5jZSB0aGVyZSdzIG5vIGxl
Z2FjeSBjb250ZW50IHRvIGRlYWwKICAgICAgICAgICAgIC8vIHdpdGguCi0gICAgICAgICAgICBp
ZiAoKG1TaGFkZXJWZXJzaW9uID49IDMwMCkgfHwgIW1Jc1dlYkdMKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIG1Jc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUlzc3VlV2FybmluZyA9
IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBvbk5vbkNvbnN0SW5pdGlhbGl6ZXJW
aXNpdChtRXh0Tm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnMgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgobVNoYWRlclZlcnNpb24gPCAzMDApICYmIG1Jc1dlYkdM
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1J
c1ZhbGlkID0gZmFsc2U7CkBAIC03NCwxNCArODYsOCBAQCB2b2lkIFZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXJUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlv
bgogICAgICAgICBjYXNlIEV2cUNvbnN0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRXZxVGVtcG9yYXJ5OgotICAgICAgICAgICAgaWYgKChtU2hhZGVyVmVyc2lvbiA+PSAzMDAp
IHx8ICFtSXNXZWJHTCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtSXNWYWxpZCA9
IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIG1Jc3N1ZVdhcm5pbmcgPSB0cnVlOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgb25Ob25Db25zdEluaXRpYWxpemVyVmlzaXQobUV4dE5vbkNvbnN0R2xvYmFsSW5p
dGlhbGl6ZXJzIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1T
aGFkZXJWZXJzaW9uIDwgMzAwKSAmJiBtSXNXZWJHTCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtOTYsNyArMTAy
LDcgQEAgYm9vbCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3IKICAgICAvLyB0aGUgZnVuY3Rpb24gY2FsbCBv
cHMuCiAgICAgaWYgKG5vZGUtPmlzRnVuY3Rpb25DYWxsKCkpCiAgICAgewotICAgICAgICBtSXNW
YWxpZCA9IGZhbHNlOworICAgICAgICBvbk5vbkNvbnN0SW5pdGlhbGl6ZXJWaXNpdChtRXh0Tm9u
Q29uc3RHbG9iYWxJbml0aWFsaXplcnMpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTEwNSw3ICsxMTEsNyBAQCBib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6
OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5CiB7CiAgICAgaWYgKG5vZGUt
PmlzQXNzaWdubWVudCgpKQogICAgIHsKLSAgICAgICAgbUlzVmFsaWQgPSBmYWxzZTsKKyAgICAg
ICAgb25Ob25Db25zdEluaXRpYWxpemVyVmlzaXQobUV4dE5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6
ZXJzKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMTQsMTYgKzEyMCwxOSBAQCBi
b29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1VbmFyeSAqbgogewogICAgIGlmIChub2RlLT5pc0Fzc2lnbm1lbnQoKSkK
ICAgICB7Ci0gICAgICAgIG1Jc1ZhbGlkID0gZmFsc2U7CisgICAgICAgIG9uTm9uQ29uc3RJbml0
aWFsaXplclZpc2l0KG1FeHROb25Db25zdEdsb2JhbEluaXRpYWxpemVycyk7CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwogfQogCi1WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyOjpW
YWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyKGludCBzaGFkZXJWZXJzaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzV2ViR0wpCitWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVy
c2VyOjpWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyKAorICAgIGludCBzaGFkZXJW
ZXJzaW9uLAorICAgIGJvb2wgaXNXZWJHTCwKKyAgICBib29sIGhhc0V4dE5vbkNvbnN0R2xvYmFs
SW5pdGlhbGl6ZXJzKQogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2Us
IG51bGxwdHIpLAogICAgICAgbVNoYWRlclZlcnNpb24oc2hhZGVyVmVyc2lvbiksCiAgICAgICBt
SXNXZWJHTChpc1dlYkdMKSwKKyAgICAgIG1FeHROb25Db25zdEdsb2JhbEluaXRpYWxpemVycyho
YXNFeHROb25Db25zdEdsb2JhbEluaXRpYWxpemVycyksCiAgICAgICBtSXNWYWxpZCh0cnVlKSwK
ICAgICAgIG1Jc3N1ZVdhcm5pbmcoZmFsc2UpCiB7CkBAIC0xMzUsOSArMTQ0LDExIEBAIFZhbGlk
YXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OlZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJU
cmF2ZXJzZXIoaW50IHNoYWRlCiBib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIoVEludGVy
bVR5cGVkICppbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2hhZGVyVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzV2Vi
R0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNFeHROb25Db25zdEds
b2JhbEluaXRpYWxpemVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICp3
YXJuaW5nKQogewotICAgIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXIgdmFsaWRh
dGUoc2hhZGVyVmVyc2lvbiwgaXNXZWJHTCk7CisgICAgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXpl
clRyYXZlcnNlciB2YWxpZGF0ZShzaGFkZXJWZXJzaW9uLCBpc1dlYkdMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXh0Tm9uQ29uc3RHbG9iYWxJ
bml0aWFsaXplcnMpOwogICAgIGluaXRpYWxpemVyLT50cmF2ZXJzZSgmdmFsaWRhdGUpOwogICAg
IEFTU0VSVCh3YXJuaW5nICE9IG51bGxwdHIpOwogICAgICp3YXJuaW5nID0gdmFsaWRhdGUuaXNz
dWVXYXJuaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRp
YWxpemVyLmgKaW5kZXggZDRkNzVmYTkxMThlNDk3NWI0MDk5ZWE0NmYwZGNhOWFhNmYwMzAyOC4u
Y2I0YjY1MmIxODZkOWNhNDBjNWIxOTFiYTE2ZGIxNjY3ODlmZTA4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9i
YWxJbml0aWFsaXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaApAQCAtMTYsNiArMTYsNyBA
QCBjbGFzcyBUSW50ZXJtVHlwZWQ7CiBib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIoVElu
dGVybVR5cGVkICppbml0aWFsaXplciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2hhZGVyVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
V2ViR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNFeHROb25Db25z
dEdsb2JhbEluaXRpYWxpemVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
ICp3YXJuaW5nKTsKIAogfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVBdG9t
aWNDb3VudGVyQnVpbHRpbnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmRjNTc0YWY5ODAyZDkzZDhjN2ZkYWY2MWQ3ZmQwNjQ1NTJhMTRkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmNwcApAQCAtMCwwICsx
LDczIEBACisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworLy8gUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zOiBSZW1vdmUg
YXRvbWljIGNvdW50ZXIgYnVpbHRpbnMuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX29wcy9SZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMuaCIKKworI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL3RyZWVfdXRpbC9JbnRlcm1UcmF2ZXJzZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKK25h
bWVzcGFjZQoreworCitib29sIElzQXRvbWljQ291bnRlckRlY2woY29uc3QgVEludGVybURlY2xh
cmF0aW9uICpub2RlKQoreworICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAq
KG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgIFRJbnRlcm1UeXBlZCAqdmFyaWFibGUgICAgICAg
ICAgPSBzZXF1ZW5jZS5mcm9udCgpLT5nZXRBc1R5cGVkKCk7CisgICAgY29uc3QgVFR5cGUgJnR5
cGUgICAgICAgICAgICAgICA9IHZhcmlhYmxlLT5nZXRUeXBlKCk7CisgICAgcmV0dXJuIHR5cGUu
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVW5pZm9ybSAmJiB0eXBlLmlzQXRvbWljQ291bnRlcigpOwor
fQorCisvLyBUcmF2ZXJzZXIgdGhhdCByZW1vdmVzIGFsbCBHTFNMIGJ1aWx0LWlucyB0aGF0IHVz
ZSBBdG9taWNDb3VudGVycworLy8gT25seSBjYWxsZWQgd2hlbiB0aGUgYnVpbHRpbnMgYXJlIGlu
IHVzZSwgYnV0IG5vIGF0b21pYyBjb3VudGVycyBoYXZlIGJlZW4gZGVjbGFyZWQKK2NsYXNzIFJl
bW92ZUF0b21pY0NvdW50ZXJCdWlsdGluc1RyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCit7CisgIHB1YmxpYzoKKyAgICBSZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnNUcmF2ZXJz
ZXIoKSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSB7fQorCisgICAgYm9v
bCB2aXNpdERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworCisg
ICAgICAgIC8vIEFjdGl2ZSBhdG9taWMgY291bnRlcnMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVk
IGJ5IFJld3JpdGVBdG9taWNDb3VudGVycywgYW5kIHRoaXMKKyAgICAgICAgLy8gdHJhdmVyc2Fs
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGludm9rZWQKKyAgICAgICAgQVNTRVJUKCFJc0F0b21pY0Nv
dW50ZXJEZWNsKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJv
b2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BNZW1vcnlCYXJy
aWVyQXRvbWljQ291bnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVnVsa2FuIGRvZXMg
bm90IHN1cHBvcnQgYXRvbWljIGNvdW50ZXJzLCBzbyBpZiB0aGlzIGJ1aWx0aW4gZmluZHMgaXRz
IHdheSBoZXJlLAorICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZW1vdmUgaXQuCisgICAgICAg
ICAgICBUSW50ZXJtU2VxdWVuY2UgZW1wdHlTZXF1ZW5jZTsKKyAgICAgICAgICAgIG1NdWx0aVJl
cGxhY2VtZW50cy5lbXBsYWNlX2JhY2soZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Jsb2NrKCksIG5v
ZGUsIGVtcHR5U2VxdWVuY2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBXZSBzaG91bGRuJ3Qgc2VlIGFueSBvdGhlciBidWlsdGlucyBiZWNhdXNl
IHRoZXkgY2Fubm90IGJlIHByZXNlbnQgd2l0aG91dCBhbiBhY3RpdmUKKyAgICAgICAgLy8gYXRv
bWljIGNvdW50ZXIsIGFuZCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgUmV3cml0ZUF0b21p
Y0NvdW50ZXJzLiBJZiB0aGlzIGZpcmVzLAorICAgICAgICAvLyB0aGlzIHRyYXZlcnNhbCBzaG91
bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCisgICAgICAgIEFTU0VSVCghKG5vZGUtPmdldE9wKCkg
PT0gRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbiAmJgorICAgICAgICAgICAgICAgICBub2RlLT5nZXRG
dW5jdGlvbigpLT5pc0F0b21pY0NvdW50ZXJGdW5jdGlvbigpKSk7CisKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK307CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBS
ZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMoVENvbXBpbGVyICpjb21waWxlciwgVEludGVybUJs
b2NrICpyb290KQoreworICAgIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGluc1RyYXZlcnNlciB0
cmF2ZXJzZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CisgICAgcmV0dXJuIHRy
YXZlcnNlci51cGRhdGVUcmVlKGNvbXBpbGVyLCByb290KTsKK30KK30gIC8vIG5hbWVzcGFjZSBz
aApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVBdG9t
aWNDb3VudGVyQnVpbHRpbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjY3M2FkMGUwN2FmMDE3YjRjMzAxNjcw
ZjUwN2U3YzdmNjkwNjZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1
aWx0aW5zLmgKQEAgLTAsMCArMSwyNCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbW92ZUF0b21pY0NvdW50
ZXJCdWlsdGluczogUmVtb3ZlIGF0b21pYyBjb3VudGVyIGJ1aWx0aW5zLgorLy8gTm9ybWFsbHkg
aGFuZGxlZCBieSBSZXdyaXRlQXRvbWljQ291bnRlcnMsIGJ1dCB0aGF0IGlzIG9ubHkgaW52b2tl
ZCB3aGVuCisvLyBhdG9taWMgY291bnRlcnMgYXJlIGFjdHVhbGx5IGluIHVzZS4gVGhpcyBwYXNz
IHJlbW92ZXMgdGhlIGJ1aWx0aW5zIGFuZAorLy8gYXNzZXJ0cyBubyBhdG9taWMgY291bnRlcnMg
YXJlIGRlY2xhcmVkLgorCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJFRU9QU19SRU1P
VkVBVE9NSUNDT1VOVEVSQlVJTFRJTlNfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9U
UkVFT1BTX1JFTU9WRUFUT01JQ0NPVU5URVJCVUlMVElOU19IXworCisjaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIHNoCit7CitjbGFzcyBUQ29tcGlsZXI7CitjbGFz
cyBUSW50ZXJtQmxvY2s7CisKK0FOR0xFX05PX0RJU0NBUkQgYm9vbCBSZW1vdmVBdG9taWNDb3Vu
dGVyQnVpbHRpbnMoVENvbXBpbGVyICpjb21waWxlciwgVEludGVybUJsb2NrICpyb290KTsKK30g
IC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJFRU9Q
U19SRU1PVkVBVE9NSUNDT1VOVEVSQlVJTFRJTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1Jld3JpdGVBdG9t
aWNDb3VudGVycy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci90cmVlX29wcy9SZXdyaXRlQXRvbWljQ291bnRlcnMuY3BwCmluZGV4IGMwZWM0YzVl
ZGQ2YTE2M2IyNTA2ZmEzZjA0OGIyZmJmNWRmNjk1NzguLmJhMjU5ODRlOTEzNDI1YzU2ZWZmZDE2
ODQyNjhiYWNlM2JkYzkxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1Jld3JpdGVBdG9taWNDb3VudGVycy5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJl
ZV9vcHMvUmV3cml0ZUF0b21pY0NvdW50ZXJzLmNwcApAQCAtMjEsNyArMjEsNyBAQCBuYW1lc3Bh
Y2Ugc2gKIG5hbWVzcGFjZQogewogY29uc3RleHByIEltbXV0YWJsZVN0cmluZyBrQXRvbWljQ291
bnRlclR5cGVOYW1lICA9IEltbXV0YWJsZVN0cmluZygiQU5HTEVfYXRvbWljX3VpbnQiKTsKLWNv
bnN0ZXhwciBJbW11dGFibGVTdHJpbmcga0F0b21pY0NvdW50ZXJCbG9ja05hbWUgPSBJbW11dGFi
bGVTdHJpbmcoIkFOR0xFQXRvbWljQ291bnRlcnMiKTsKK2NvbnN0ZXhwciBJbW11dGFibGVTdHJp
bmcga0F0b21pY0NvdW50ZXJzVmFyTmFtZSAgPSBJbW11dGFibGVTdHJpbmcoImF0b21pY0NvdW50
ZXJzIik7CiBjb25zdGV4cHIgSW1tdXRhYmxlU3RyaW5nIGtBdG9taWNDb3VudGVyRmllbGROYW1l
ID0gSW1tdXRhYmxlU3RyaW5nKCJjb3VudGVycyIpOwogCiAvLyBEZWNsYXJlQXRvbWljQ291bnRl
cnNCdWZmZXIgYWRkcyBhIHN0b3JhZ2UgYnVmZmVyIGFycmF5IHRoYXQncyB1c2VkIHdpdGggYXRv
bWljIGNvdW50ZXJzLgpAQCAtNDUsOSArNDUsOSBAQCBjb25zdCBUVmFyaWFibGUgKkRlY2xhcmVB
dG9taWNDb3VudGVyc0J1ZmZlcnMoVEludGVybUJsb2NrICpyb290LCBUU3ltYm9sVGFibGUgKgog
ICAgIGNvbnN0ZXhwciB1aW50MzJfdCBrTWF4QXRvbWljQ291bnRlckJ1ZmZlcnMgPSA4OwogCiAg
ICAgLy8gRGVmaW5lIGEgc3RvcmFnZSBibG9jayAiQU5HTEVBdG9taWNDb3VudGVycyIgd2l0aCBp
bnN0YW5jZSBuYW1lICJhdG9taWNDb3VudGVycyIuCi0gICAgcmV0dXJuIERlY2xhcmVJbnRlcmZh
Y2VCbG9jayhyb290LCBzeW1ib2xUYWJsZSwgZmllbGRMaXN0LCBFdnFCdWZmZXIsIGNvaGVyZW50
TWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01heEF0b21pY0NvdW50
ZXJCdWZmZXJzLCBrQXRvbWljQ291bnRlckJsb2NrTmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEltbXV0YWJsZVN0cmluZyh2azo6a0F0b21pY0NvdW50ZXJzVmFyTmFtZSkp
OworICAgIHJldHVybiBEZWNsYXJlSW50ZXJmYWNlQmxvY2soCisgICAgICAgIHJvb3QsIHN5bWJv
bFRhYmxlLCBmaWVsZExpc3QsIEV2cUJ1ZmZlciwgY29oZXJlbnRNZW1vcnksIGtNYXhBdG9taWND
b3VudGVyQnVmZmVycywKKyAgICAgICAgSW1tdXRhYmxlU3RyaW5nKHZrOjprQXRvbWljQ291bnRl
cnNCbG9ja05hbWUpLCBrQXRvbWljQ291bnRlcnNWYXJOYW1lKTsKIH0KIAogVEludGVybUNvbnN0
YW50VW5pb24gKkNyZWF0ZVVJbnRDb25zdGFudCh1aW50MzJfdCB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9mZWF0dXJlX3N1cHBvcnRfdXRpbC9PV05FUlMg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZmVhdHVyZV9zdXBwb3J0X3V0aWwvT1dORVJT
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE4YzY1OTY3NWRlNmFiNjgwOTIwMWIzY2E4ZGVjZTY4ZjIxY2FlNTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZmVhdHVyZV9zdXBw
b3J0X3V0aWwvT1dORVJTCkBAIC0wLDAgKzEgQEAKK2lhbmVsbGlvdEBnb29nbGUuY29tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1J
bmZvLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3Rl
bUluZm8uY3BwCmluZGV4IDNlNTU0OWQ1NTEwNWNmMmJkNjFmYzhlYzU1Nzg4Yjk3ZjQ5ODBhNWIu
LmY3NDg5NDlkOWYxNTcwMjhkNjIxNjI3YTQ0N2ViOWFhNmRkYzBjOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8u
Y3BwCkBAIC0xNDAsNiArMTQwLDExIEBAIGJvb2wgSXNRdWFsY29tbShWZW5kb3JJRCB2ZW5kb3JJ
ZCkKICAgICByZXR1cm4gdmVuZG9ySWQgPT0ga1ZlbmRvcklEX1F1YWxjb21tOwogfQogCitib29s
IElzR29vZ2xlKFZlbmRvcklEIHZlbmRvcklkKQoreworICAgIHJldHVybiB2ZW5kb3JJZCA9PSBr
VmVuZG9ySURfR09PR0xFOworfQorCiBib29sIElzVmVyaVNpbGljb24oVmVuZG9ySUQgdmVuZG9y
SWQpCiB7CiAgICAgcmV0dXJuIHZlbmRvcklkID09IGtWZW5kb3JJRF9WZXJpU2lsaWNvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3Rl
bUluZm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3Rl
bUluZm8uaAppbmRleCBiZDhkNWVhZmM1ZmIyMDg1YWQ3Y2ViZjcyMmNmM2RhNTBiOTJjNzA3Li43
ODkwYmRjZDA0OTY3OWIyNmI1ZDQ0MTczZWQxNTdmZjYwMzRlMjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5oCkBA
IC0xMTEsNiArMTExLDcgQEAgYm9vbCBJc0ludGVsKFZlbmRvcklEIHZlbmRvcklkKTsKIGJvb2wg
SXNLYXphbihWZW5kb3JJRCB2ZW5kb3JJZCk7CiBib29sIElzTlZJRElBKFZlbmRvcklEIHZlbmRv
cklkKTsKIGJvb2wgSXNRdWFsY29tbShWZW5kb3JJRCB2ZW5kb3JJZCk7Citib29sIElzR29vZ2xl
KFZlbmRvcklEIHZlbmRvcklkKTsKIGJvb2wgSXNTd2lmdHNoYWRlcihWZW5kb3JJRCB2ZW5kb3JJ
ZCk7CiBib29sIElzVmVyaVNpbGljb24oVmVuZG9ySUQgdmVuZG9ySWQpOwogYm9vbCBJc1ZNV2Fy
ZShWZW5kb3JJRCB2ZW5kb3JJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvaWQvY29tbWl0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaWQvY29tbWl0
LmgKaW5kZXggZjIxZmY0Mzg3ZGM4MWM1NGM1ZmExM2UzNzAyMjcxMGMxN2E5N2FjMy4uNDFkMGI2
YzIwNTZmZWYxOGU0ZGNlYWJhOGU5YjVhNzE1YTlkODM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2lkL2NvbW1pdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9pZC9jb21taXQuaApAQCAtMSwxNCArMSwzIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gY29tbWl0
Lmg6Ci0vLyAgIFRoaXMgaXMgYSBkZWZhdWx0IGNvbW1pdCBoYXNoIGhlYWRlciwgd2hlbiBnaXQg
aXMgbm90IGF2YWlsYWJsZS4KLS8vCi0KLSNkZWZpbmUgQU5HTEVfQ09NTUlUX0hBU0ggInVua25v
d24gaGFzaCIKKyNkZWZpbmUgQU5HTEVfQ09NTUlUX0hBU0ggImIzODdjZTkzODllZCIKICNkZWZp
bmUgQU5HTEVfQ09NTUlUX0hBU0hfU0laRSAxMgotI2RlZmluZSBBTkdMRV9DT01NSVRfREFURSAi
dW5rbm93biBkYXRlIgotCi0jZGVmaW5lIEFOR0xFX0RJU0FCTEVfUFJPR1JBTV9CSU5BUllfTE9B
RAorI2RlZmluZSBBTkdMRV9DT01NSVRfREFURSAiMjAyMC0wMy0yOCAwNDoxMDoyOCArMDAwMCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CaW5hcnlT
dHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CaW5hcnlTdHJl
YW0uaAppbmRleCAzZTIwZDBhMjRhOThjOGNjODQ5MTBkNTM5ZTliZDMyMjVlMWUwZTVhLi4yMDYz
ZjMxMGYyMTZlNmZhZDc0MGMwNmIwMzdmNjQyYTkzNTJlOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQmluYXJ5U3RyZWFtLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oCkBAIC0xODYsOCAr
MTg2LDEwIEBAIGNsYXNzIEJpbmFyeU91dHB1dFN0cmVhbSA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIHRlbXBsYXRlIDxjbGFzcyBJbnRUPgogICAgIHZvaWQgd3JpdGVJbnQoSW50VCBwYXJhbSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChhbmdsZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlw
ZTxpbnQ+KHBhcmFtKSk7Ci0gICAgICAgIGludCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludD4o
cGFyYW0pOworICAgICAgICB1c2luZyBQcm9tb3RlZEludFQgPQorICAgICAgICAgICAgdHlwZW5h
bWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3NpZ25lZDxJbnRUPjo6dmFsdWUsIGludCwgdW5z
aWduZWQ+Ojp0eXBlOworICAgICAgICBBU1NFUlQoYW5nbGU6OklzVmFsdWVJblJhbmdlRm9yTnVt
ZXJpY1R5cGU8UHJvbW90ZWRJbnRUPihwYXJhbSkpOworICAgICAgICBQcm9tb3RlZEludFQgaW50
VmFsdWUgPSBzdGF0aWNfY2FzdDxQcm9tb3RlZEludFQ+KHBhcmFtKTsKICAgICAgICAgd3JpdGUo
JmludFZhbHVlLCAxKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9DYXBzLmNwcAppbmRleCA0N2I1NDc1OGFlYWU1NzIxZGUwZmRkMGYyMDcwMTRjYjRi
MzY5M2UyLi40NzcxMDVjMzk1MTJkY2QxZDUzOWU1YTM1MDk0MWQ4NDY5NzUxOTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCkBAIC02MDgsNyAr
NjA4LDcgQEAgc3RhdGljIGJvb2wgRGV0ZXJtaW5lRGVwdGhUZXh0dXJlQU5HTEVTdXBwb3J0KGNv
bnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKICAgICAgICAgR0xfREVQVEgyNF9TVEVO
Q0lMOF9PRVMsCiAgICAgfTsKIAotICAgIHJldHVybiBHZXRGb3JtYXRTdXBwb3J0KHRleHR1cmVD
YXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlKTsKKyAg
ICByZXR1cm4gR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3JtYXRzLCB0
cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogfQogCiAvLyBDaGVjayBmb3IgR0xfT0VT
X2RlcHRoX3RleHR1cmUgc3VwcG9ydApAQCAtNzEyLDYgKzcxMiwxNiBAQCBzdGF0aWMgYm9vbCBE
ZXRlcm1pbmVUZXh0dXJlTm9ybTE2U3VwcG9ydChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVy
ZUNhcHMpCiAgICAgICAgICAgIEdldEZvcm1hdFN1cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVk
UmVuZGVyRm9ybWF0cywgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlKTsKIH0KIAorLy8g
Q2hlY2sgZm9yIEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMgc3VwcG9ydAorc3RhdGljIGJv
b2wgRGV0ZXJtaW5lUkdUQ1RleHR1cmVTdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0
dXJlQ2FwcykKK3sKKyAgICBjb25zdGV4cHIgR0xlbnVtIHJlcXVpcmVkRm9ybWF0c1tdID0gewor
ICAgICAgICBHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQsIEdMX0NPTVBSRVNTRURfU0lHTkVE
X1JFRF9SR1RDMV9FWFQsCisgICAgICAgIEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VY
VCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVH07CisKKyAgICByZXR1
cm4gR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3JtYXRzLCB0cnVlLCB0
cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKK30KKwogLy8gQ2hlY2sgZm9yIEVYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2JwdGMgc3VwcG9ydAogc3RhdGljIGJvb2wgRGV0ZXJtaW5lQlBUQ1RleHR1
cmVTdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKIHsKQEAgLTgwNiw2
ICs4MTYsNyBAQCB2b2lkIEV4dGVuc2lvbnM6OnNldFRleHR1cmVFeHRlbnNpb25TdXBwb3J0KGNv
bnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKICAgICBjb2xvckJ1ZmZlckZsb2F0ICAg
ICAgICAgICAgICAgICAgICA9IERldGVybWluZUNvbG9yQnVmZmVyRmxvYXRTdXBwb3J0KHRleHR1
cmVDYXBzKTsKICAgICBmbG9hdEJsZW5kICAgICAgICAgICAgICAgICAgICAgICAgICA9IERldGVy
bWluZUZsb2F0QmxlbmRTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICB0ZXh0dXJlTm9ybTE2ICAg
ICAgICAgICAgICAgICAgICAgICA9IERldGVybWluZVRleHR1cmVOb3JtMTZTdXBwb3J0KHRleHR1
cmVDYXBzKTsKKyAgICB0ZXh0dXJlQ29tcHJlc3Npb25SR1RDICAgICAgICAgICAgICA9IERldGVy
bWluZVJHVENUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiAgICAgdGV4dHVyZUNvbXByZXNz
aW9uQlBUQyAgICAgICAgICAgICAgPSBEZXRlcm1pbmVCUFRDVGV4dHVyZVN1cHBvcnQodGV4dHVy
ZUNhcHMpOwogICAgIGNvbXByZXNzZWRUZXh0dXJlUFZSVEMgICAgICAgICAgICAgID0gRGV0ZXJt
aW5lUFZSVENUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiAgICAgY29tcHJlc3NlZFRleHR1
cmVQVlJUQ3NSR0IgICAgICAgICAgPSBEZXRlcm1pbmVQVlJUQ3NSR0JUZXh0dXJlU3VwcG9ydCh0
ZXh0dXJlQ2Fwcyk7CkBAIC04NjEsOCArODcyLDEwIEBAIGNvbnN0IEV4dGVuc2lvbkluZm9NYXAg
JkdldEV4dGVuc2lvbkluZm9NYXAoKQogICAgICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGNfc3JnYiJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4
dHVyZUNvbXByZXNzaW9uUzNUQ3NSR0IpOwogICAgICAgICBtYXBbIkdMX0tIUl90ZXh0dXJlX2Nv
bXByZXNzaW9uX2FzdGNfbGRyIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0
ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSS0hSKTsKICAgICAgICAgbWFwWyJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2hkciJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9u
czo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUktIUik7CisgICAgICAgIG1hcFsiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19zbGljZWRfM2QiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblNsaWNlZDNkQVNUQ0tIUik7CiAgICAgICAg
IG1hcFsiR0xfT0VTX3RleHR1cmVfY29tcHJlc3Npb25fYXN0YyJdID0gZW5hYmxlYWJsZUV4dGVu
c2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ09FUyk7CiAgICAgICAgIG1h
cFsiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyJdID0gZW5hYmxlYWJsZUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQlBUQyk7CisgICAgICAgIG1hcFsiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uUkdUQyk7CiAgICAgICAgIG1hcFsiR0xfT0VTX2Nv
bXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmVPRVMpOwogICAgICAgICBtYXBbIkdMX09F
U19jb21wcmVzc2VkX0VUQzJfUkdCOF90ZXh0dXJlIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjpjb21wcmVzc2VkRVRDMlJHQjhUZXh0dXJlT0VTKTsKICAgICAgICAgbWFwWyJH
TF9PRVNfY29tcHJlc3NlZF9FVEMyX3NSR0I4X3RleHR1cmUiXSA9IGVuYWJsZWFibGVFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OmNvbXByZXNzZWRFVEMyc1JHQjhUZXh0dXJlT0VTKTsKQEAgLTg4Nyw2
ICs5MDAsOCBAQCBjb25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkK
ICAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIl0gPSBlbmFibGVhYmxlRXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlU3RvcmFnZSk7CiAgICAgICAgIG1hcFsiR0xfT0VTX3Rl
eHR1cmVfbnBvdCJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZU5Q
T1RPRVMpOwogICAgICAgICBtYXBbIkdMX0VYVF9kcmF3X2J1ZmZlcnMiXSA9IGVuYWJsZWFibGVF
eHRlbnNpb24oJkV4dGVuc2lvbnM6OmRyYXdCdWZmZXJzKTsKKyAgICAgICAgbWFwWyJHTF9FWFRf
ZHJhd19idWZmZXJzX2luZGV4ZWQiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6
OmRyYXdCdWZmZXJzSW5kZXhlZEVYVCk7CisgICAgICAgIG1hcFsiR0xfT0VTX2RyYXdfYnVmZmVy
c19pbmRleGVkIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkcmF3QnVmZmVy
c0luZGV4ZWRPRVMpOwogICAgICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljKTsKICAgICAgICAgbWFwWyJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4i
XSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6Om9jY2x1c2lvblF1ZXJ5Qm9vbGVh
bik7CiAgICAgICAgIG1hcFsiR0xfTlZfZmVuY2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5z
aW9uczo6ZmVuY2VOVik7CkBAIC05MTMsMTIgKzkyOCwxNSBAQCBjb25zdCBFeHRlbnNpb25JbmZv
TWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKICAgICAgICAgbWFwWyJHTF9PRVNfRUdMX2ltYWdl
Il0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplZ2xJbWFnZU9FUyk7CiAgICAg
ICAgIG1hcFsiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCJdID0gZW5hYmxlYWJsZUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6ZWdsSW1hZ2VFeHRlcm5hbE9FUyk7CiAgICAgICAgIG1hcFsiR0xfT0VT
X0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5z
aW9uczo6ZWdsSW1hZ2VFeHRlcm5hbEVzc2wzT0VTKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfRUdM
X2ltYWdlX2V4dGVybmFsX3dyYXBfbW9kZXMiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OmVnbEltYWdlRXh0ZXJuYWxXcmFwTW9kZXNFWFQpOwogICAgICAgICBtYXBbIkdMX09F
U19FR0xfc3luYyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplZ2xTeW5jT0VTKTsK
ICAgICAgICAgbWFwWyJHTF9FWFRfbWVtb3J5X29iamVjdCJdID0gZW5hYmxlYWJsZUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6bWVtb3J5T2JqZWN0KTsKICAgICAgICAgbWFwWyJHTF9FWFRfbWVtb3J5
X29iamVjdF9mZCJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bWVtb3J5T2Jq
ZWN0RmQpOworICAgICAgICBtYXBbIkdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSJdID0g
ZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bWVtb3J5T2JqZWN0RnVjaHNpYUFOR0xF
KTsKICAgICAgICAgbWFwWyJHTF9FWFRfc2VtYXBob3JlIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9u
KCZFeHRlbnNpb25zOjpzZW1hcGhvcmUpOwogICAgICAgICBtYXBbIkdMX0VYVF9zZW1hcGhvcmVf
ZmQiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnNlbWFwaG9yZUZkKTsKICAg
ICAgICAgbWFwWyJHTF9OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsIl0gPSBlbmFibGVh
YmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsTlYpOwor
ICAgICAgICBtYXBbIkdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhIl0gPSBlbmFibGVhYmxlRXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjpzZW1hcGhvcmVGdWNoc2lhQU5HTEUpOwogICAgICAgICBtYXBb
IkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lv
bnM6OnVucGFja1N1YmltYWdlKTsKICAgICAgICAgbWFwWyJHTF9OVl9wYWNrX3N1YmltYWdlIl0g
PSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpwYWNrU3ViaW1hZ2UpOwogICAgICAg
ICBtYXBbIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OmNvbG9yQnVmZmVyRmxvYXQpOwpAQCAtOTI3LDggKzk0NSw3IEBAIGNvbnN0
IEV4dGVuc2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9NYXAoKQogICAgICAgICBtYXBbIkdM
X09FU192ZXJ0ZXhfdHlwZV8xMF8xMF8xMF8yIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRl
bnNpb25zOjp2ZXJ0ZXhBdHRyaWJUeXBlMTAxMDEwMk9FUyk7CiAgICAgICAgIG1hcFsiR0xfS0hS
X2RlYnVnIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmRlYnVnKTsKICAgICAgICAg
bWFwWyJHTF9PRVNfdGV4dHVyZV9ib3JkZXJfY2xhbXAiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OnRleHR1cmVCb3JkZXJDbGFtcE9FUyk7Ci0gICAgICAgIC8vIFRPRE8oam1h
ZGlsbCk6IEVuYWJsZSB0aGlzIHdoZW4gY29tcGxldGUuCi0gICAgICAgIC8vbWFwWyJHTF9LSFJf
bm9fZXJyb3IiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bm9FcnJvcik7CisgICAg
ICAgIG1hcFsiR0xfS0hSX25vX2Vycm9yIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6
Om5vRXJyb3IpOwogICAgICAgICBtYXBbIkdMX0FOR0xFX2xvc3N5X2V0Y19kZWNvZGUiXSA9IGVu
YWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2RlKTsKICAgICAgICAg
bWFwWyJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iXSA9IGVzT25seUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6YmluZFVuaWZvcm1Mb2NhdGlvbik7CiAgICAgICAgIG1hcFsiR0xfQ0hS
T01JVU1fc3luY19xdWVyeSJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6c3lu
Y1F1ZXJ5KTsKQEAgLTk0Niw3ICs5NjMsNiBAQCBjb25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRF
eHRlbnNpb25JbmZvTWFwKCkKICAgICAgICAgbWFwWyJHTF9FWFRfbXVsdGlzYW1wbGVfY29tcGF0
aWJpbGl0eSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjptdWx0aXNhbXBsZUNvbXBh
dGliaWxpdHkpOwogICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3Nh
bXBsZXMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZnJhbWVidWZmZXJNaXhlZFNh
bXBsZXMpOwogICAgICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX25vcm0xNiJdID0gZW5hYmxlYWJs
ZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZU5vcm0xNik7Ci0gICAgICAgIG1hcFsiR0xf
Q0hST01JVU1fcGF0aF9yZW5kZXJpbmciXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
cGF0aFJlbmRlcmluZyk7CiAgICAgICAgIG1hcFsiR0xfT0VTX3N1cmZhY2VsZXNzX2NvbnRleHQi
XSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6c3VyZmFjZWxlc3NDb250ZXh0T0VTKTsK
ICAgICAgICAgbWFwWyJHTF9BTkdMRV9jbGllbnRfYXJyYXlzIl0gPSBlc09ubHlFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OmNsaWVudEFycmF5cyk7CiAgICAgICAgIG1hcFsiR0xfQU5HTEVfcm9idXN0
X3Jlc291cmNlX2luaXRpYWxpemF0aW9uIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6
OnJvYnVzdFJlc291cmNlSW5pdGlhbGl6YXRpb24pOwpAQCAtOTc2LDYgKzk5Miw3IEBAIGNvbnN0
IEV4dGVuc2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9NYXAoKQogICAgICAgICBtYXBbIkdM
X09FU19wb2ludF9zcHJpdGUiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBv
aW50U3ByaXRlT0VTKTsKICAgICAgICAgbWFwWyJHTF9PRVNfZHJhd190ZXh0dXJlIl0gPSBlbmFi
bGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkcmF3VGV4dHVyZU9FUyk7CiAgICAgICAgIG1h
cFsiR0xfQU5HTEVfbWVtb3J5X3NpemUiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lv
bnM6Om1lbW9yeVNpemUpOworICAgICAgICBtYXBbIkdMX0VYVF9zaGFkZXJfbm9uX2NvbnN0YW50
X2dsb2JhbF9pbml0aWFsaXplcnMiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6
OnNoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzRVhUKTsKICAgICAgICAgbWFwWyJHTF9X
RUJHTF92aWRlb190ZXh0dXJlIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp3
ZWJnbFZpZGVvVGV4dHVyZSk7CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogCkBAIC0xMzM5
LDggKzEzNTYsNyBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gRGlzcGxheUV4dGVuc2lvbnM6
OmdldFN0cmluZ3MoKSBjb25zdAogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xF
X2NyZWF0ZV9jb250ZXh0X2JhY2t3YXJkc19jb21wYXRpYmxlIiwgICAgICAgY3JlYXRlQ29udGV4
dEJhY2t3YXJkc0NvbXBhdGlibGUsICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0tIUl9ub19jb25maWdfY29udGV4dCIsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9Db25maWdDb250ZXh0LCAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0lNR19jb250ZXh0X3By
aW9yaXR5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dFByaW9yaXR5LCAgICAg
ICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIC8vIFRPRE8oam1hZGlsbCk6
IEVuYWJsZSB0aGlzIHdoZW4gY29tcGxldGUuCi0gICAgLy9JbnNlcnRFeHRlbnNpb25TdHJpbmco
IktIUl9jcmVhdGVfY29udGV4dF9ub19lcnJvciIsICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVDb250ZXh0Tm9FcnJvciwgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hSX2NyZWF0ZV9jb250ZXh0X25vX2Vycm9yIiwg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250ZXh0Tm9FcnJvciwgICAgICAgICAgICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICByZXR1cm4g
ZXh0ZW5zaW9uU3RyaW5nczsKQEAgLTEzNzYsNiArMTM5Miw3IEBAIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiBDbGllbnRFeHRlbnNpb25zOjpnZXRTdHJpbmdzKCkgY29uc3QKICAgICBJbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZSIsICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtQU5HTEUsICAgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25T
dHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9h
bmdsZV9kM2QiLCAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtQU5HTEVEM0QsICAgICAgICAg
ICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmco
IkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QxMW9uMTIiLCAgICAgICAgICAgICAgIHBsYXRm
b3JtQU5HTEVEM0QxMU9OMTIsICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2VfdHlw
ZV9lZ2xfYW5nbGUiLCAgIHBsYXRmb3JtQU5HTEVEZXZpY2VUeXBlRUdMQU5HTEUsICAgICZleHRl
bnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0
Zm9ybV9hbmdsZV9kZXZpY2VfdHlwZV9zd2lmdHNoYWRlciIsIHBsYXRmb3JtQU5HTEVEZXZpY2VU
eXBlU3dpZnRTaGFkZXIsICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9vcGVuZ2wiLCAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtQU5HTEVPcGVuR0wsICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsK
ICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9udWxs
IiwgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtQU5HTEVOVUxMLCAgICAgICAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9DYXBzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvQ2Fwcy5oCmluZGV4IGNjMTA1OGZjZjAxNmI0NzBjYWFkY2M5NzAwYmU2ZDdiNjFiNGU0OGQu
LmJkNjk3ODcxOWM2ZmIwNTNiMzNlY2FkMWFlMThmZDFhOWVlZTVmYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaApAQCAtMTE4LDYgKzExOCw3IEBAIHN0
cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdAogICAgIC8v
IEdMX0VYVF90ZXh0dXJlX25vcm0xNgogICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X2JwdGMKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCiAgICAgdm9pZCBz
ZXRUZXh0dXJlRXh0ZW5zaW9uU3VwcG9ydChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNh
cHMpOwogCiAgICAgLy8gaW5kaWNhdGUgaWYgYW55IGRlcHRoIHRleHR1cmUgZXh0ZW5zaW9uIGlz
IGF2YWlsYWJsZQpAQCAtMjEyLDkgKzIxMywxNSBAQCBzdHJ1Y3QgRXh0ZW5zaW9ucwogICAgIC8v
IEdMX09FU190ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGMKICAgICBib29sIHRleHR1cmVDb21wcmVz
c2lvbkFTVENPRVMgPSBmYWxzZTsKIAorICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfc2xpY2VkXzNkCisgICAgYm9vbCB0ZXh0dXJlQ29tcHJlc3Npb25TbGljZWQzZEFTVENL
SFIgPSBmYWxzZTsKKwogICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2JwdGMKICAg
ICBib29sIHRleHR1cmVDb21wcmVzc2lvbkJQVEMgPSBmYWxzZTsKIAorICAgIC8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKyAgICBib29sIHRleHR1cmVDb21wcmVzc2lvblJHVEMg
PSBmYWxzZTsKKwogICAgIC8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCiAg
ICAgLy8gSW1wbGllcyB0aGF0IFRleHR1cmVDYXBzIGZvciBHTF9FVEMxX1JHQjhfT0VTIGV4aXN0
CiAgICAgYm9vbCBjb21wcmVzc2VkRVRDMVJHQjhUZXh0dXJlT0VTID0gZmFsc2U7CkBAIC0yOTYs
NiArMzAzLDE1IEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfRVhUX2RyYXdfYnVmZmVy
cwogICAgIGJvb2wgZHJhd0J1ZmZlcnMgPSBmYWxzZTsKIAorICAgIC8vIEdMX0VYVF9kcmF3X2J1
ZmZlcnNfaW5kZXhlZAorICAgIGJvb2wgZHJhd0J1ZmZlcnNJbmRleGVkRVhUID0gZmFsc2U7CisK
KyAgICAvLyBHTF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQKKyAgICBib29sIGRyYXdCdWZmZXJz
SW5kZXhlZE9FUyA9IGZhbHNlOworCisgICAgLy8gQW55IHZlcnNpb24gb2YgdGhlIGRyYXdfYnVm
ZmVyc19pbmRleGVkCisgICAgYm9vbCBkcmF3QnVmZmVyc0luZGV4ZWRBbnkoKSBjb25zdCB7IHJl
dHVybiAoZHJhd0J1ZmZlcnNJbmRleGVkRVhUIHx8IGRyYXdCdWZmZXJzSW5kZXhlZE9FUyk7IH0K
KwogICAgIC8vIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogICAgIGJvb2wgdGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljID0gZmFsc2U7CiAgICAgR0xmbG9hdCBtYXhUZXh0dXJlQW5p
c290cm9weSAgPSAwLjBmOwpAQCAtMzc5LDYgKzM5NSw5IEBAIHN0cnVjdCBFeHRlbnNpb25zCiAg
ICAgLy8gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMwogICAgIGJvb2wgZWdsSW1hZ2VF
eHRlcm5hbEVzc2wzT0VTID0gZmFsc2U7CiAKKyAgICAvLyBHTF9FWFRfRUdMX2ltYWdlX2V4dGVy
bmFsX3dyYXBfbW9kZXMKKyAgICBib29sIGVnbEltYWdlRXh0ZXJuYWxXcmFwTW9kZXNFWFQgPSBm
YWxzZTsKKwogICAgIC8vIEdMX09FU19FR0xfc3luYwogICAgIGJvb2wgZWdsU3luY09FUyA9IGZh
bHNlOwogCkBAIC0zODgsMTIgKzQwNywxOCBAQCBzdHJ1Y3QgRXh0ZW5zaW9ucwogICAgIC8vIEdM
X0VYVF9tZW1vcnlfb2JqZWN0X2ZkCiAgICAgYm9vbCBtZW1vcnlPYmplY3RGZCA9IGZhbHNlOwog
CisgICAgLy8gR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhCisgICAgYm9vbCBtZW1vcnlP
YmplY3RGdWNoc2lhQU5HTEUgPSBmYWxzZTsKKwogICAgIC8vIEdMX0VYVF9zZW1hcGhvcmUKICAg
ICBib29sIHNlbWFwaG9yZSA9IGZhbHNlOwogCiAgICAgLy8gR0xfRVhUX3NlbWFwaG9yZV9mZAog
ICAgIGJvb2wgc2VtYXBob3JlRmQgPSBmYWxzZTsKIAorICAgIC8vIEdMX0FOR0xFX3NlbWFwaG9y
ZV9mdWNoc2lhCisgICAgYm9vbCBzZW1hcGhvcmVGdWNoc2lhQU5HTEUgPSBmYWxzZTsKKwogICAg
IC8vIE5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwKICAgICBib29sIGVnbFN0cmVhbUNv
bnN1bWVyRXh0ZXJuYWxOViA9IGZhbHNlOwogCkBAIC00ODMsOSArNTA4LDYgQEAgc3RydWN0IEV4
dGVuc2lvbnMKICAgICAvLyB3cml0dGVuIGFnYWluc3QgRVMgMy4xIGJ1dCBjYW4gYXBwbHkgdG8g
RVMgMy4wIGFzIHdlbGwuCiAgICAgYm9vbCB0ZXh0dXJlTm9ybTE2ID0gZmFsc2U7CiAKLSAgICAv
LyBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIGJvb2wgcGF0aFJlbmRlcmluZyA9IGZh
bHNlOwotCiAgICAgLy8gR0xfT0VTX3N1cmZhY2VsZXNzX2NvbnRleHQKICAgICBib29sIHN1cmZh
Y2VsZXNzQ29udGV4dE9FUyA9IGZhbHNlOwogCkBAIC01NzMsNiArNTk1LDkgQEAgc3RydWN0IEV4
dGVuc2lvbnMKICAgICAgICAgcmV0dXJuIChkcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTIHx8IGRy
YXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQpOwogICAgIH0KIAorICAgIC8vIEdMX0VYVF9zaGFkZXJf
bm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMKKyAgICBib29sIHNoYWRlck5vbkNvbnN0
R2xvYmFsSW5pdGlhbGl6ZXJzRVhUID0gZmFsc2U7CisKICAgICAvLyBHTF9FWFRfZ3B1X3NoYWRl
cjUKICAgICBib29sIGdwdVNoYWRlcjVFWFQgPSBmYWxzZTsKICAgICAvLyBXRUJHTF92aWRlb190
ZXh0dXJlCkBAIC0xMDk3LDYgKzExMjIsOSBAQCBzdHJ1Y3QgQ2xpZW50RXh0ZW5zaW9ucwogCiAg
ICAgLy8gRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2RldmljZV90eXBlX3N3aWZ0c2hhZGVyCiAg
ICAgYm9vbCBwbGF0Zm9ybUFOR0xFRGV2aWNlVHlwZVN3aWZ0U2hhZGVyID0gZmFsc2U7CisKKyAg
ICAvLyBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNlX3R5cGVfZWdsX2FuZ2xlCisgICAg
Ym9vbCBwbGF0Zm9ybUFOR0xFRGV2aWNlVHlwZUVHTEFOR0xFID0gZmFsc2U7CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2UgZWdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQ29tcGlsZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0NvbXBpbGVyLmNwcAppbmRleCA0MTYzMjIzZTgxMDAxMGUwMmY0NDI0Zjk0YmEyYjQ1OTc0
MDg5NGQwLi45ZGRlNTA0NzFlOWMzNjVhMWUwMDJkM2EyYWRmZmJiMTk2MWFhYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAKQEAg
LTkwLDggKzkwLDEwIEBAIENvbXBpbGVyOjpDb21waWxlcihyeDo6R0xJbXBsRmFjdG9yeSAqaW1w
bEZhY3RvcnksIGNvbnN0IFN0YXRlICZzdGF0ZSkKICAgICBtUmVzb3VyY2VzLk9FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyAgICAgPSBleHRlbnNpb25zLnN0YW5kYXJkRGVyaXZhdGl2ZXNPRVM7CiAg
ICAgbVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAgICAgICAgID0gZXh0ZW5zaW9ucy5k
cmF3QnVmZmVyczsKICAgICBtUmVzb3VyY2VzLkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgICAgICAg
PSBleHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0Q7Ci0gICAgbVJlc291cmNlcy5PRVNfRUdMX2lt
YWdlX2V4dGVybmFsICAgICAgID0gZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsT0VTOwotICAg
IG1SZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyA9IGV4dGVuc2lvbnMuZWds
SW1hZ2VFeHRlcm5hbEVzc2wzT0VTOworICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl9ub25fY29u
c3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyA9CisgICAgICAgIGV4dGVuc2lvbnMuc2hhZGVyTm9u
Q29uc3RHbG9iYWxJbml0aWFsaXplcnNFWFQ7CisgICAgbVJlc291cmNlcy5PRVNfRUdMX2ltYWdl
X2V4dGVybmFsICAgICAgICAgID0gZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsT0VTOworICAg
IG1SZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyAgICA9IGV4dGVuc2lvbnMu
ZWdsSW1hZ2VFeHRlcm5hbEVzc2wzT0VTOwogICAgIG1SZXNvdXJjZXMuTlZfRUdMX3N0cmVhbV9j
b25zdW1lcl9leHRlcm5hbCA9IGV4dGVuc2lvbnMuZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbE5W
OwogICAgIG1SZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlICAgICAgICAgICA9IGV4dGVu
c2lvbnMudGV4dHVyZVJlY3RhbmdsZTsKICAgICBtUmVzb3VyY2VzLkVYVF9ncHVfc2hhZGVyNSAg
ICAgICAgICAgICAgICAgPSBleHRlbnNpb25zLmdwdVNoYWRlcjVFWFQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcuY3BwCmluZGV4IDM1YjEyMzZiOWE4
NTM4YmE5YWI5YmNiZjllZDU4OWIwZGU2MGY1MzYuLjMzMDU2Y2UyYjZmZWJjYWMxZTgyZDE2OTEz
OGViYWZlYjBjMGRlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Db25maWcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Db25maWcuY3BwCkBAIC0zNCw2ICszNCw3IEBAIENvbmZpZzo6Q29uZmlnKCkKICAgICAg
IGFscGhhTWFza1NpemUoMCksCiAgICAgICBiaW5kVG9UZXh0dXJlUkdCKEVHTF9GQUxTRSksCiAg
ICAgICBiaW5kVG9UZXh0dXJlUkdCQShFR0xfRkFMU0UpLAorICAgICAgYmluZFRvVGV4dHVyZVRh
cmdldChFR0xfVEVYVFVSRV8yRCksCiAgICAgICBjb2xvckJ1ZmZlclR5cGUoRUdMX1JHQl9CVUZG
RVIpLAogICAgICAgY29uZmlnQ2F2ZWF0KEVHTF9OT05FKSwKICAgICAgIGNvbmZpZ0lEKDApLApA
QCAtMzE4LDYgKzMxOSw5IEBAIHN0ZDo6dmVjdG9yPGNvbnN0IENvbmZpZyAqPiBDb25maWdTZXQ6
OmZpbHRlcihjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZU1hcCkKICAgICAgICAgICAgICAg
ICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCQToKICAgICAgICAgICAgICAgICAgICAgbWF0
Y2ggPSBjb25maWcuYmluZFRvVGV4dHVyZVJHQkEgPT0gc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4o
YXR0cmlidXRlVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfVEFSR0VUX0FOR0xFOgorICAgICAgICAgICAg
ICAgICAgICBtYXRjaCA9IGNvbmZpZy5iaW5kVG9UZXh0dXJlVGFyZ2V0ID09IHN0YXRpY19jYXN0
PEVHTGVudW0+KGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBFR0xfTUlOX1NXQVBfSU5URVJWQUw6CiAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoID0gY29uZmlnLm1pblN3YXBJbnRlcnZhbCA9PSBhdHRyaWJ1dGVWYWx1ZTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvQ29uZmlnLmgKaW5kZXggMWY0ZmMyN2Y0YWUwZDY0YTQ2ZjUzOWMxYzg0NjJk
ZWViM2Y4MWQ1ZS4uYjQzOTRiNmQ0OGJhZTI0NDY5NDU0MDc1MTc0MTRkYzNiNDllMTA4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcuaApAQCAtNDMs
NiArNDMsNyBAQCBzdHJ1Y3QgQ29uZmlnCiAgICAgRUdMaW50IGFscGhhTWFza1NpemU7ICAgICAg
ICAgIC8vIEJpdHMgb2YgQWxwaGEgTWFzayBpbiB0aGUgbWFzayBidWZmZXIKICAgICBFR0xCb29s
ZWFuIGJpbmRUb1RleHR1cmVSR0I7ICAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0IgdGV4dHVy
ZXMuCiAgICAgRUdMQm9vbGVhbiBiaW5kVG9UZXh0dXJlUkdCQTsgIC8vIFRydWUgaWYgYmluZGFi
bGUgdG8gUkdCQSB0ZXh0dXJlcy4KKyAgICBFR0xlbnVtIGJpbmRUb1RleHR1cmVUYXJnZXQ7ICAg
Ly8gV2hpY2ggdGV4dHVyZSB0YXJnZXQgc2hvdWxkIGJlIHVzZWQgZm9yIHBidWZmZXJzCiAgICAg
RUdMZW51bSBjb2xvckJ1ZmZlclR5cGU7ICAgICAgIC8vIENvbG9yIGJ1ZmZlciB0eXBlCiAgICAg
RUdMZW51bSBjb25maWdDYXZlYXQ7ICAgICAgICAgIC8vIEFueSBjYXZlYXRzIGZvciB0aGUgY29u
ZmlndXJhdGlvbgogICAgIEVHTGludCBjb25maWdJRDsgICAgICAgICAgICAgICAvLyBVbmlxdWUg
RUdMQ29uZmlnIGlkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Db250ZXh0LmNwcAppbmRleCBhNzVlYjkyOWUzZGRiOGE0OGNhMTVhZjYyM2VkM2Rj
NzM3MzQ0YjdlLi4zMjBjNzJmNjgyNGNjMjMyMzczMTExMTg5MWU1YjljOTU0ZmI1ZDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuY3BwCkBA
IC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9NZW1vcnlPYmplY3QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9QYXRoLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvUHJvZ3JhbS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1F1ZXJ5LmgiCkBAIC01MSw1OCArNTAsNiBAQCBuYW1lc3Bh
Y2UgZ2wKIHsKIG5hbWVzcGFjZQogewotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6OnZlY3Rv
cjxQYXRoICo+IEdhdGhlclBhdGhzKFBhdGhNYW5hZ2VyICZyZXNvdXJjZU1hbmFnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UpCi17Ci0gICAgc3RkOjp2ZWN0b3I8UGF0
aCAqPiByZXQ7Ci0gICAgcmV0LnJlc2VydmUobnVtUGF0aHMpOwotCi0gICAgY29uc3QgYXV0byAq
bmFtZUFycmF5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVCAqPihwYXRocyk7Ci0KLSAgICBmb3IgKEdM
c2l6ZWkgaSA9IDA7IGkgPCBudW1QYXRoczsgKytpKQotICAgIHsKLSAgICAgICAgY29uc3QgR0x1
aW50IHBhdGhOYW1lID0gbmFtZUFycmF5W2ldICsgcGF0aEJhc2UudmFsdWU7Ci0KLSAgICAgICAg
cmV0LnB1c2hfYmFjayhyZXNvdXJjZU1hbmFnZXIuZ2V0UGF0aCh7cGF0aE5hbWV9KSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RkOjp2ZWN0b3I8UGF0aCAqPiBHYXRoZXJQYXRo
cyhQYXRoTWFuYWdlciAmcmVzb3VyY2VNYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElE
IHBhdGhCYXNlKQotewotICAgIHN3aXRjaCAocGF0aE5hbWVUeXBlKQotICAgIHsKLSAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgcmV0dXJuIEdhdGhlclBhdGhzPEdM
dWJ5dGU+KHJlc291cmNlTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSk7Ci0KLSAg
ICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgcmV0dXJuIEdhdGhlclBhdGhzPEdMYnl0
ZT4ocmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKTsKLQotICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgcmV0dXJuIEdhdGhlclBhdGhz
PEdMdXNob3J0PihyZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpOwot
Ci0gICAgICAgIGNhc2UgR0xfU0hPUlQ6Ci0gICAgICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8
R0xzaG9ydD4ocmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKTsKLQot
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICAgIHJldHVybiBHYXRoZXJQ
YXRoczxHTHVpbnQ+KHJlc291cmNlTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSk7
Ci0KLSAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8
R0xpbnQ+KHJlc291cmNlTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSk7Ci0gICAg
fQotCi0gICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0aCAqPigp
OwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGFuZ2xlOjpSZXN1bHQgR2V0UXVlcnlPYmpl
Y3RQYXJhbWV0ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnkgKnF1ZXJ5LCBHTGVudW0g
cG5hbWUsIFQgKnBhcmFtcykKIHsKQEAgLTQ5OCwxMSArNDQ1LDYgQEAgdm9pZCBDb250ZXh0Ojpp
bml0aWFsaXplKCkKICAgICBtRHJhd0RpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVD
VF9TQU1QTEVSUyk7CiAgICAgbURyYXdEaXJ0eU9iamVjdHMuc2V0KFN0YXRlOjpESVJUWV9PQkpF
Q1RfSU1BR0VTKTsKIAotICAgIG1QYXRoT3BlcmF0aW9uRGlydHlPYmplY3RzLnNldChTdGF0ZTo6
RElSVFlfT0JKRUNUX0RSQVdfRlJBTUVCVUZGRVIpOwotICAgIG1QYXRoT3BlcmF0aW9uRGlydHlP
YmplY3RzLnNldChTdGF0ZTo6RElSVFlfT0JKRUNUX1ZFUlRFWF9BUlJBWSk7Ci0gICAgbVBhdGhP
cGVyYXRpb25EaXJ0eU9iamVjdHMuc2V0KFN0YXRlOjpESVJUWV9PQkpFQ1RfVEVYVFVSRVMpOwot
ICAgIG1QYXRoT3BlcmF0aW9uRGlydHlPYmplY3RzLnNldChTdGF0ZTo6RElSVFlfT0JKRUNUX1NB
TVBMRVJTKTsKLQogICAgIG1UZXhJbWFnZURpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9V
TlBBQ0tfU1RBVEUpOwogICAgIG1UZXhJbWFnZURpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJ
VF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcpOwogICAgIC8vIE5vIGRpcnR5IG9iamVjdHMuCkBAIC02
MjcsNyArNTY5LDYgQEAgZWdsOjpFcnJvciBDb250ZXh0OjpvbkRlc3Ryb3koY29uc3QgZWdsOjpE
aXNwbGF5ICpkaXNwbGF5KQogICAgIG1TdGF0ZS5tUmVuZGVyYnVmZmVyTWFuYWdlci0+cmVsZWFz
ZSh0aGlzKTsKICAgICBtU3RhdGUubVNhbXBsZXJNYW5hZ2VyLT5yZWxlYXNlKHRoaXMpOwogICAg
IG1TdGF0ZS5tU3luY01hbmFnZXItPnJlbGVhc2UodGhpcyk7Ci0gICAgbVN0YXRlLm1QYXRoTWFu
YWdlci0+cmVsZWFzZSh0aGlzKTsKICAgICBtU3RhdGUubUZyYW1lYnVmZmVyTWFuYWdlci0+cmVs
ZWFzZSh0aGlzKTsKICAgICBtU3RhdGUubVByb2dyYW1QaXBlbGluZU1hbmFnZXItPnJlbGVhc2Uo
dGhpcyk7CiAgICAgbVN0YXRlLm1NZW1vcnlPYmplY3RNYW5hZ2VyLT5yZWxlYXNlKHRoaXMpOwpA
QCAtNzQ3LDE4ICs2ODgsNiBAQCBSZW5kZXJidWZmZXJJRCBDb250ZXh0OjpjcmVhdGVSZW5kZXJi
dWZmZXIoKQogICAgIHJldHVybiBtU3RhdGUubVJlbmRlcmJ1ZmZlck1hbmFnZXItPmNyZWF0ZVJl
bmRlcmJ1ZmZlcigpOwogfQogCi12b2lkIENvbnRleHQ6OnRyeUdlblBhdGhzKEdMc2l6ZWkgcmFu
Z2UsIFBhdGhJRCAqY3JlYXRlZE91dCkKLXsKLSAgICBBTkdMRV9DT05URVhUX1RSWShtU3RhdGUu
bVBhdGhNYW5hZ2VyLT5jcmVhdGVQYXRocyh0aGlzLCByYW5nZSwgY3JlYXRlZE91dCkpOwotfQot
Ci1HTHVpbnQgQ29udGV4dDo6Z2VuUGF0aHMoR0xzaXplaSByYW5nZSkKLXsKLSAgICBQYXRoSUQg
Y3JlYXRlZCA9IHswfTsKLSAgICB0cnlHZW5QYXRocyhyYW5nZSwgJmNyZWF0ZWQpOwotICAgIHJl
dHVybiBjcmVhdGVkLnZhbHVlOwotfQotCiAvLyBSZXR1cm5zIGFuIHVudXNlZCBmcmFtZWJ1ZmZl
ciBuYW1lCiBGcmFtZWJ1ZmZlcklEIENvbnRleHQ6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKQEAg
LTg2NiwxMTAgKzc5NSw2IEBAIHZvaWQgQ29udGV4dDo6ZGVsZXRlU2VtYXBob3JlKFNlbWFwaG9y
ZUlEIHNlbWFwaG9yZSkKICAgICBtU3RhdGUubVNlbWFwaG9yZU1hbmFnZXItPmRlbGV0ZVNlbWFw
aG9yZSh0aGlzLCBzZW1hcGhvcmUpOwogfQogCi12b2lkIENvbnRleHQ6OmRlbGV0ZVBhdGhzKFBh
dGhJRCBmaXJzdCwgR0xzaXplaSByYW5nZSkKLXsKLSAgICBtU3RhdGUubVBhdGhNYW5hZ2VyLT5k
ZWxldGVQYXRocyhmaXJzdCwgcmFuZ2UpOwotfQotCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNQYXRo
KFBhdGhJRCBwYXRoKQotewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtU3RhdGUubVBhdGhN
YW5hZ2VyLT5nZXRQYXRoKHBhdGgpOwotICAgIGlmIChwYXRoT2JqID09IG51bGxwdHIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBwYXRoT2JqLT5oYXNQYXRoRGF0YSgpOwot
fQotCi1ib29sIENvbnRleHQ6OmlzUGF0aEdlbmVyYXRlZChQYXRoSUQgcGF0aCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbVN0YXRlLm1QYXRoTWFuYWdlci0+aGFzUGF0aChwYXRoKTsKLX0KLQotdm9p
ZCBDb250ZXh0OjpwYXRoQ29tbWFuZHMoUGF0aElEIHBhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCi17Ci0g
ICAgYXV0byAqcGF0aE9iamVjdCA9IG1TdGF0ZS5tUGF0aE1hbmFnZXItPmdldFBhdGgocGF0aCk7
Ci0KLSAgICBBTkdMRV9DT05URVhUX1RSWShwYXRoT2JqZWN0LT5zZXRDb21tYW5kcyhudW1Db21t
YW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMpKTsKLX0KLQotdm9p
ZCBDb250ZXh0OjpwYXRoUGFyYW1ldGVyZihQYXRoSUQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHZhbHVlKQotewotICAgIFBhdGggKnBhdGhPYmogPSBtU3RhdGUubVBhdGhNYW5hZ2VyLT5n
ZXRQYXRoKHBhdGgpOwotCi0gICAgc3dpdGNoIChwbmFtZSkKLSAgICB7Ci0gICAgICAgIGNhc2Ug
R0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU06Ci0gICAgICAgICAgICBwYXRoT2JqLT5zZXRT
dHJva2VXaWR0aCh2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9Q
QVRIX0VORF9DQVBTX0NIUk9NSVVNOgotICAgICAgICAgICAgcGF0aE9iai0+c2V0RW5kQ2Fwcyhz
dGF0aWNfY2FzdDxHTGVudW0+KHZhbHVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU06Ci0gICAgICAgICAgICBwYXRoT2JqLT5z
ZXRKb2luU3R5bGUoc3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1ZSkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgR0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTToKLSAgICAgICAg
ICAgIHBhdGhPYmotPnNldE1pdGVyTGltaXQodmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR0xfUEFUSF9TVFJPS0VfQk9VTkRfQ0hST01JVU06Ci0gICAgICAgICAgICBw
YXRoT2JqLT5zZXRTdHJva2VCb3VuZCh2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6cGF0aFBhcmFtZXRlcmkoUGF0aElEIHBhdGgs
IEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogU2hv
dWxkIHVzZSBwcm9wZXIgY2xhbXBpbmcvY2FzdGluZy4KLSAgICBwYXRoUGFyYW1ldGVyZihwYXRo
LCBwbmFtZSwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4odmFsdWUpKTsKLX0KLQotdm9pZCBDb250ZXh0
OjpnZXRQYXRoUGFyYW1ldGVyZnYoUGF0aElEIHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
dmFsdWUpCi17Ci0gICAgY29uc3QgUGF0aCAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aE1hbmFnZXIt
PmdldFBhdGgocGF0aCk7Ci0KLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgICAgY2Fz
ZSBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTToKLSAgICAgICAgICAgICp2YWx1ZSA9IHBh
dGhPYmotPmdldFN0cm9rZVdpZHRoKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNOgotICAgICAgICAgICAgKnZhbHVlID0gc3RhdGlj
X2Nhc3Q8R0xmbG9hdD4ocGF0aE9iai0+Z2V0RW5kQ2FwcygpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTToKLSAgICAgICAgICAg
ICp2YWx1ZSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhdGhPYmotPmdldEpvaW5TdHlsZSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1BBVEhfTUlURVJfTElNSVRfQ0hS
T01JVU06Ci0gICAgICAgICAgICAqdmFsdWUgPSBwYXRoT2JqLT5nZXRNaXRlckxpbWl0KCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9CT1VORF9DSFJP
TUlVTToKLSAgICAgICAgICAgICp2YWx1ZSA9IHBhdGhPYmotPmdldFN0cm9rZUJvdW5kKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6Z2V0
UGF0aFBhcmFtZXRlcml2KFBhdGhJRCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSkK
LXsKLSAgICBHTGZsb2F0IHZhbCA9IDAuMGY7Ci0gICAgZ2V0UGF0aFBhcmFtZXRlcmZ2KHBhdGgs
IHBuYW1lLCB2YWx1ZSAhPSBudWxscHRyID8gJnZhbCA6IG51bGxwdHIpOwotICAgIGlmICh2YWx1
ZSkKLSAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHZhbCk7Ci19Ci0KLXZvaWQg
Q29udGV4dDo6cGF0aFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBt
YXNrKQotewotICAgIG1TdGF0ZS5zZXRQYXRoU3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsK
LX0KLQogLy8gR0xfQ0hST01JVU1fbG9zZV9jb250ZXh0CiB2b2lkIENvbnRleHQ6Omxvc2VDb250
ZXh0KEdyYXBoaWNzUmVzZXRTdGF0dXMgY3VycmVudCwgR3JhcGhpY3NSZXNldFN0YXR1cyBvdGhl
cikKIHsKQEAgLTExMjYsNyArOTUxLDcgQEAgdm9pZCBDb250ZXh0OjpnZXRPYmplY3RQdHJMYWJl
bChjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3QKICAgICBH
ZXRPYmplY3RMYWJlbEJhc2Uob2JqZWN0TGFiZWwsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOwog
fQogCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNTYW1wbGVyKFNhbXBsZXJJRCBzYW1wbGVyTmFtZSkK
K0dMYm9vbGVhbiBDb250ZXh0Ojppc1NhbXBsZXIoU2FtcGxlcklEIHNhbXBsZXJOYW1lKSBjb25z
dAogewogICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJNYW5hZ2VyLT5pc1NhbXBsZXIoc2FtcGxl
ck5hbWUpOwogfQpAQCAtMTIzOSw3ICsxMDY0LDcgQEAgdm9pZCBDb250ZXh0OjpiaW5kUHJvZ3Jh
bVBpcGVsaW5lKFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lSGFuZGxlKQogCiB2b2lkIENvbnRl
eHQ6OmJlZ2luUXVlcnkoUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBxdWVyeSkKIHsKLSAgICBR
dWVyeSAqcXVlcnlPYmplY3QgPSBnZXRRdWVyeShxdWVyeSwgdHJ1ZSwgdGFyZ2V0KTsKKyAgICBR
dWVyeSAqcXVlcnlPYmplY3QgPSBnZXRPckNyZWF0ZVF1ZXJ5KHF1ZXJ5LCB0YXJnZXQpOwogICAg
IEFTU0VSVChxdWVyeU9iamVjdCk7CiAKICAgICAvLyBiZWdpbiBxdWVyeQpAQCAtMTI2Nyw3ICsx
MDkyLDcgQEAgdm9pZCBDb250ZXh0OjpxdWVyeUNvdW50ZXIoUXVlcnlJRCBpZCwgUXVlcnlUeXBl
IHRhcmdldCkKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09IFF1ZXJ5VHlwZTo6VGltZXN0YW1wKTsK
IAotICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGdldFF1ZXJ5KGlkLCB0cnVlLCB0YXJnZXQpOwor
ICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGdldE9yQ3JlYXRlUXVlcnkoaWQsIHRhcmdldCk7CiAg
ICAgQVNTRVJUKHF1ZXJ5T2JqZWN0KTsKIAogICAgIEFOR0xFX0NPTlRFWFRfVFJZKHF1ZXJ5T2Jq
ZWN0LT5xdWVyeUNvdW50ZXIodGhpcykpOwpAQCAtMTM4MSwxMiArMTIwNiwxMiBAQCBGcmFtZWJ1
ZmZlciAqQ29udGV4dDo6Z2V0RnJhbWVidWZmZXIoRnJhbWVidWZmZXJJRCBoYW5kbGUpIGNvbnN0
CiAgICAgcmV0dXJuIG1TdGF0ZS5tRnJhbWVidWZmZXJNYW5hZ2VyLT5nZXRGcmFtZWJ1ZmZlciho
YW5kbGUpOwogfQogCi1GZW5jZU5WICpDb250ZXh0OjpnZXRGZW5jZU5WKEZlbmNlTlZJRCBoYW5k
bGUpCitGZW5jZU5WICpDb250ZXh0OjpnZXRGZW5jZU5WKEZlbmNlTlZJRCBoYW5kbGUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1GZW5jZU5WTWFwLnF1ZXJ5KGhhbmRsZSk7CiB9CiAKLVF1ZXJ5ICpD
b250ZXh0OjpnZXRRdWVyeShRdWVyeUlEIGhhbmRsZSwgYm9vbCBjcmVhdGUsIFF1ZXJ5VHlwZSB0
eXBlKQorUXVlcnkgKkNvbnRleHQ6OmdldE9yQ3JlYXRlUXVlcnkoUXVlcnlJRCBoYW5kbGUsIFF1
ZXJ5VHlwZSB0eXBlKQogewogICAgIGlmICghbVF1ZXJ5TWFwLmNvbnRhaW5zKGhhbmRsZSkpCiAg
ICAgewpAQCAtMTM5NCw3ICsxMjE5LDcgQEAgUXVlcnkgKkNvbnRleHQ6OmdldFF1ZXJ5KFF1ZXJ5
SUQgaGFuZGxlLCBib29sIGNyZWF0ZSwgUXVlcnlUeXBlIHR5cGUpCiAgICAgfQogCiAgICAgUXVl
cnkgKnF1ZXJ5ID0gbVF1ZXJ5TWFwLnF1ZXJ5KGhhbmRsZSk7Ci0gICAgaWYgKCFxdWVyeSAmJiBj
cmVhdGUpCisgICAgaWYgKCFxdWVyeSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlICE9IFF1
ZXJ5VHlwZTo6SW52YWxpZEVudW0pOwogICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeShtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIHR5cGUsIGhhbmRsZSk7CkBAIC0xNDM0LDcgKzEyNTksNyBAQCBDb21w
aWxlciAqQ29udGV4dDo6Z2V0Q29tcGlsZXIoKSBjb25zdAogICAgIHJldHVybiBtQ29tcGlsZXIu
Z2V0KCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0Qm9vbGVhbnZJbXBsKEdMZW51bSBwbmFtZSwg
R0xib29sZWFuICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldEJvb2xlYW52SW1wbChHTGVudW0g
cG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKSBjb25zdAogewogICAgIHN3aXRjaCAocG5hbWUpCiAg
ICAgewpAQCAtMTQ1MSw3ICsxMjc2LDcgQEAgdm9pZCBDb250ZXh0OjpnZXRCb29sZWFudkltcGwo
R0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4
dDo6Z2V0RmxvYXR2SW1wbChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKK3ZvaWQgQ29u
dGV4dDo6Z2V0RmxvYXR2SW1wbChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykgY29uc3QK
IHsKICAgICAvLyBRdWVyaWVzIGFib3V0IGNvbnRleHQgY2FwYWJpbGl0aWVzIGFuZCBtYXhpbXVt
cyBhcmUgYW5zd2VyZWQgYnkgQ29udGV4dC4KICAgICAvLyBRdWVyaWVzIGFib3V0IGN1cnJlbnQg
R0wgc3RhdGUgdmFsdWVzIGFyZSBhbnN3ZXJlZCBieSBTdGF0ZS4KQEAgLTE0ODAsMzIgKzEzMDUs
MTMgQEAgdm9pZCBDb250ZXh0OjpnZXRGbG9hdHZJbXBsKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
cGFyYW1zKQogICAgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0xPRF9CSUFTOgogICAgICAgICAg
ICAgKnBhcmFtcyA9IG1TdGF0ZS5tQ2Fwcy5tYXhMT0RCaWFzOwogICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBHTF9QQVRIX01PREVMVklFV19NQVRSSVhfQ0hST01JVU06Ci0gICAg
ICAgIGNhc2UgR0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJWF9DSFJPTUlVTToKLSAgICAgICAgewot
ICAgICAgICAgICAgLy8gR0xFUzEgZW11bGF0aW9uOiAvLyBHTF9QQVRIXyhNT0RFTFZJRVd8UFJP
SkVDVElPTilfTUFUUklYX0NIUk9NSVVNIGNvbGxpZGVzIHdpdGggdGhlCi0gICAgICAgICAgICAv
LyBHTEVTMSBjb25zdGFudHMgZm9yIG1vZGVsdmlldy9wcm9qZWN0aW9uIG1hdHJpeC4KLSAgICAg
ICAgICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDIsIDApKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRGbG9hdHYocG5hbWUsIHBhcmFtcyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKG1TdGF0ZS5tRXh0ZW5zaW9ucy5wYXRoUmVuZGVyaW5nKTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICptID0gbVN0YXRlLmdldFBhdGhSZW5kZXJpbmdNYXRyaXgo
cG5hbWUpOwotICAgICAgICAgICAgICAgIG1lbWNweShwYXJhbXMsIG0sIDE2ICogc2l6ZW9mKEdM
ZmxvYXQpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbVN0YXRlLmdldEZsb2F0dihwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0OjpnZXRJbnRl
Z2VydkltcGwoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRJ
bnRlZ2VydkltcGwoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSBjb25zdAogewogICAgIC8v
IFF1ZXJpZXMgYWJvdXQgY29udGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3
ZXJlZCBieSBDb250ZXh0LgogICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2
YWx1ZXMgYXJlIGFuc3dlcmVkIGJ5IFN0YXRlLgpAQCAtMTg4OSwzMCArMTY5NSwyNiBAQCB2b2lk
IENvbnRleHQ6OmdldEludGVnZXJ2SW1wbChHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiAg
ICAgICAgIGNhc2UgR0xfQ09MT1JfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIGNhc2Ug
R0xfUE9JTlRfU0laRV9BUlJBWV9CVUZGRVJfQklORElOR19PRVM6CiAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DT09SRF9BUlJBWV9CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgIGdldFZlcnRl
eEF0dHJpYml2KHN0YXRpY19jYXN0PEdMdWludD4odmVydGV4QXJyYXlJbmRleChQYXJhbVRvVmVy
dGV4QXJyYXlUeXBlKHBuYW1lKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORywgcGFyYW1zKTsKKyAgICAgICAgICAg
IGdldEludGVnZXJWZXJ0ZXhBdHRyaWJJbXBsKHBuYW1lLCBHTF9WRVJURVhfQVRUUklCX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HLCBwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR0xfVkVSVEVYX0FSUkFZX1NUUklERToKICAgICAgICAgY2FzZSBHTF9OT1JNQUxfQVJSQVlf
U1RSSURFOgogICAgICAgICBjYXNlIEdMX0NPTE9SX0FSUkFZX1NUUklERToKICAgICAgICAgY2Fz
ZSBHTF9QT0lOVF9TSVpFX0FSUkFZX1NUUklERV9PRVM6CiAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DT09SRF9BUlJBWV9TVFJJREU6Ci0gICAgICAgICAgICBnZXRWZXJ0ZXhBdHRyaWJpdihzdGF0
aWNfY2FzdDxHTHVpbnQ+KHZlcnRleEFycmF5SW5kZXgoUGFyYW1Ub1ZlcnRleEFycmF5VHlwZShw
bmFtZSkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfU1RSSURFLCBwYXJhbXMpOworICAgICAgICAgICAgZ2V0SW50ZWdlclZlcnRleEF0dHJp
YkltcGwocG5hbWUsIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFLCBwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FSUkFZX1NJWkU6CiAgICAg
ICAgIGNhc2UgR0xfQ09MT1JfQVJSQVlfU0laRToKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NP
T1JEX0FSUkFZX1NJWkU6Ci0gICAgICAgICAgICBnZXRWZXJ0ZXhBdHRyaWJpdihzdGF0aWNfY2Fz
dDxHTHVpbnQ+KHZlcnRleEFycmF5SW5kZXgoUGFyYW1Ub1ZlcnRleEFycmF5VHlwZShwbmFtZSkp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlf
U0laRSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGdldEludGVnZXJWZXJ0ZXhBdHRyaWJJbXBsKHBu
YW1lLCBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUsIHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVJSQVlfVFlQRToKICAgICAgICAgY2FzZSBH
TF9DT0xPUl9BUlJBWV9UWVBFOgogICAgICAgICBjYXNlIEdMX05PUk1BTF9BUlJBWV9UWVBFOgog
ICAgICAgICBjYXNlIEdMX1BPSU5UX1NJWkVfQVJSQVlfVFlQRV9PRVM6CiAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DT09SRF9BUlJBWV9UWVBFOgotICAgICAgICAgICAgZ2V0VmVydGV4QXR0cmli
aXYoc3RhdGljX2Nhc3Q8R0x1aW50Pih2ZXJ0ZXhBcnJheUluZGV4KFBhcmFtVG9WZXJ0ZXhBcnJh
eVR5cGUocG5hbWUpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX1RZUEUsIHBhcmFtcyk7CisgICAgICAgICAgICBnZXRJbnRlZ2VyVmVydGV4
QXR0cmliSW1wbChwbmFtZSwgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFLCBwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLy8gR0xfS0hSX3BhcmFsbGVsX3NoYWRlcl9j
b21waWxlCkBAIC0xOTMxLDcgKzE3MzMsMTMgQEAgdm9pZCBDb250ZXh0OjpnZXRJbnRlZ2Vydklt
cGwoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0
OjpnZXRJbnRlZ2VyNjR2SW1wbChHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcykKK3ZvaWQg
Q29udGV4dDo6Z2V0SW50ZWdlclZlcnRleEF0dHJpYkltcGwoR0xlbnVtIHBuYW1lLCBHTGVudW0g
YXR0cmlicG5hbWUsIEdMaW50ICpwYXJhbXMpIGNvbnN0Cit7CisgICAgZ2V0VmVydGV4QXR0cmli
aXZJbXBsKHN0YXRpY19jYXN0PEdMdWludD4odmVydGV4QXJyYXlJbmRleChQYXJhbVRvVmVydGV4
QXJyYXlUeXBlKHBuYW1lKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJwbmFt
ZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VyNjR2SW1wbChHTGVudW0g
cG5hbWUsIEdMaW50NjQgKnBhcmFtcykgY29uc3QKIHsKICAgICAvLyBRdWVyaWVzIGFib3V0IGNv
bnRleHQgY2FwYWJpbGl0aWVzIGFuZCBtYXhpbXVtcyBhcmUgYW5zd2VyZWQgYnkgQ29udGV4dC4K
ICAgICAvLyBRdWVyaWVzIGFib3V0IGN1cnJlbnQgR0wgc3RhdGUgdmFsdWVzIGFyZSBhbnN3ZXJl
ZCBieSBTdGF0ZS4KQEAgLTI0NDQsNyArMjI1Miw3IEBAIHZvaWQgQ29udGV4dDo6ZmluaXNoKCkK
IHZvaWQgQ29udGV4dDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNo
YXIgKm1hcmtlcikKIHsKICAgICBBU1NFUlQobUltcGxlbWVudGF0aW9uKTsKLSAgICBtSW1wbGVt
ZW50YXRpb24tPmluc2VydEV2ZW50TWFya2VyKGxlbmd0aCwgbWFya2VyKTsKKyAgICBBTkdMRV9D
T05URVhUX1RSWShtSW1wbGVtZW50YXRpb24tPmluc2VydEV2ZW50TWFya2VyKGxlbmd0aCwgbWFy
a2VyKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBjaGFyICptYXJrZXIpCkBAIC0yNDU1LDIxICsyMjYzLDIzIEBAIHZvaWQgQ29udGV4
dDo6cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiAg
ICAgewogICAgICAgICAvLyBGcm9tIHRoZSBFWFRfZGVidWdfbWFya2VyIHNwZWMsCiAgICAgICAg
IC8vICJJZiA8bWFya2VyPiBpcyBudWxsIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHB1c2hlZCBv
biB0aGUgc3RhY2suIgotICAgICAgICBtSW1wbGVtZW50YXRpb24tPnB1c2hHcm91cE1hcmtlcihs
ZW5ndGgsICIiKTsKKyAgICAgICAgQU5HTEVfQ09OVEVYVF9UUlkobUltcGxlbWVudGF0aW9uLT5w
dXNoR3JvdXBNYXJrZXIobGVuZ3RoLCAiIikpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBtSW1wbGVtZW50YXRpb24tPnB1c2hHcm91cE1hcmtlcihsZW5ndGgsIG1hcmtlcik7Cisg
ICAgICAgIEFOR0xFX0NPTlRFWFRfVFJZKG1JbXBsZW1lbnRhdGlvbi0+cHVzaEdyb3VwTWFya2Vy
KGxlbmd0aCwgbWFya2VyKSk7CiAgICAgfQogfQogCiB2b2lkIENvbnRleHQ6OnBvcEdyb3VwTWFy
a2VyKCkKIHsKICAgICBBU1NFUlQobUltcGxlbWVudGF0aW9uKTsKLSAgICBtSW1wbGVtZW50YXRp
b24tPnBvcEdyb3VwTWFya2VyKCk7CisgICAgQU5HTEVfQ09OVEVYVF9UUlkobUltcGxlbWVudGF0
aW9uLT5wb3BHcm91cE1hcmtlcigpKTsKIH0KIAotdm9pZCBDb250ZXh0OjpiaW5kVW5pZm9ybUxv
Y2F0aW9uKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3QgR0xj
aGFyICpuYW1lKQordm9pZCBDb250ZXh0OjpiaW5kVW5pZm9ybUxvY2F0aW9uKFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dy
YW1SZXNvbHZlTGluayhwcm9ncmFtKTsKICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CkBAIC0y
NDgyLDIxNSArMjI5Miw2IEBAIHZvaWQgQ29udGV4dDo6Y292ZXJhZ2VNb2R1bGF0aW9uKEdMZW51
bSBjb21wb25lbnRzKQogICAgIG1TdGF0ZS5zZXRDb3ZlcmFnZU1vZHVsYXRpb24oY29tcG9uZW50
cyk7CiB9CiAKLXZvaWQgQ29udGV4dDo6bWF0cml4TG9hZGYoR0xlbnVtIG1hdHJpeE1vZGUsIGNv
bnN0IEdMZmxvYXQgKm1hdHJpeCkKLXsKLSAgICBtU3RhdGUubG9hZFBhdGhSZW5kZXJpbmdNYXRy
aXgobWF0cml4TW9kZSwgbWF0cml4KTsKLX0KLQotdm9pZCBDb250ZXh0OjptYXRyaXhMb2FkSWRl
bnRpdHkoR0xlbnVtIG1hdHJpeE1vZGUpCi17Ci0gICAgR0xmbG9hdCBJWzE2XTsKLSAgICBhbmds
ZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KEkpOwotCi0gICAgbVN0YXRlLmxvYWRQ
YXRoUmVuZGVyaW5nTWF0cml4KG1hdHJpeE1vZGUsIEkpOwotfQotCi12b2lkIENvbnRleHQ6OnN0
ZW5jaWxGaWxsUGF0aChQYXRoSUQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykK
LXsKLSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRoTWFuYWdlci0+Z2V0UGF0
aChwYXRoKTsKLSAgICBpZiAoIXBhdGhPYmopCi0gICAgICAgIHJldHVybjsKLQotICAgIEFOR0xF
X0NPTlRFWFRfVFJZKHN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKSk7Ci0KLSAgICBtSW1wbGVt
ZW50YXRpb24tPnN0ZW5jaWxGaWxsUGF0aChwYXRoT2JqLCBmaWxsTW9kZSwgbWFzayk7Ci19Ci0K
LXZvaWQgQ29udGV4dDo6c3RlbmNpbFN0cm9rZVBhdGgoUGF0aElEIHBhdGgsIEdMaW50IHJlZmVy
ZW5jZSwgR0x1aW50IG1hc2spCi17Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5t
UGF0aE1hbmFnZXItPmdldFBhdGgocGF0aCk7Ci0gICAgaWYgKCFwYXRoT2JqKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBTkdMRV9DT05URVhUX1RSWShzeW5jU3RhdGVGb3JQYXRoT3BlcmF0aW9u
KCkpOwotCi0gICAgbUltcGxlbWVudGF0aW9uLT5zdGVuY2lsU3Ryb2tlUGF0aChwYXRoT2JqLCBy
ZWZlcmVuY2UsIG1hc2spOwotfQotCi12b2lkIENvbnRleHQ6OmNvdmVyRmlsbFBhdGgoUGF0aElE
IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1T
dGF0ZS5tUGF0aE1hbmFnZXItPmdldFBhdGgocGF0aCk7Ci0gICAgaWYgKCFwYXRoT2JqKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBBTkdMRV9DT05URVhUX1RSWShzeW5jU3RhdGVGb3JQYXRoT3Bl
cmF0aW9uKCkpOwotCi0gICAgbUltcGxlbWVudGF0aW9uLT5jb3ZlckZpbGxQYXRoKHBhdGhPYmos
IGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6Y292ZXJTdHJva2VQYXRoKFBhdGhJRCBw
YXRoLCBHTGVudW0gY292ZXJNb2RlKQotewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtU3Rh
dGUubVBhdGhNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOwotICAgIGlmICghcGF0aE9iaikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9wZXJh
dGlvbigpKTsKLQotICAgIG1JbXBsZW1lbnRhdGlvbi0+Y292ZXJTdHJva2VQYXRoKHBhdGhPYmos
IGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
KFBhdGhJRCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJN
b2RlKQotewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtU3RhdGUubVBhdGhNYW5hZ2VyLT5n
ZXRQYXRoKHBhdGgpOwotICAgIGlmICghcGF0aE9iaikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9wZXJhdGlvbigpKTsKLQotICAgIG1J
bXBsZW1lbnRhdGlvbi0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKHBhdGhPYmosIGZpbGxNb2Rl
LCBtYXNrLCBjb3Zlck1vZGUpOwotfQotCi12b2lkIENvbnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoKFBhdGhJRCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlKQotewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBt
U3RhdGUubVBhdGhNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOwotICAgIGlmICghcGF0aE9iaikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9w
ZXJhdGlvbigpKTsKLQotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGgocGF0aE9iaiwgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUpOwotfQotCi12b2lkIENv
bnRleHQ6OmNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAgICAgIEdhdGhlclBh
dGhzKCptU3RhdGUubVBhdGhNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywg
cGF0aEJhc2UpOwotCi0gICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9wZXJh
dGlvbigpKTsKLQotICAgIG1JbXBsZW1lbnRhdGlvbi0+Y292ZXJGaWxsUGF0aEluc3RhbmNlZChw
YXRoT2JqZWN0cywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwot
fQotCi12b2lkIENvbnRleHQ6OmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElE
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIGNvbnN0IGF1dG8gJnBhdGhP
YmplY3RzID0KLSAgICAgICAgR2F0aGVyUGF0aHMoKm1TdGF0ZS5tUGF0aE1hbmFnZXIsIG51bVBh
dGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7Ci0KLSAgICAvLyBUT0RPKHN2YWlz
YW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRo
IHJlbmRlcmluZz8KLSAgICBBTkdMRV9DT05URVhUX1RSWShzeW5jU3RhdGVGb3JQYXRoT3BlcmF0
aW9uKCkpOwotCi0gICAgbUltcGxlbWVudGF0aW9uLT5jb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQo
cGF0aE9iamVjdHMsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lk
IENvbnRleHQ6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAg
ICAgIEdhdGhlclBhdGhzKCptU3RhdGUubVBhdGhNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVU
eXBlLCBwYXRocywgcGF0aEJhc2UpOwotCi0gICAgLy8gVE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNv
bSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/Ci0g
ICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9wZXJhdGlvbigpKTsKLQotICAg
IG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKHBhdGhPYmplY3RzLCBm
aWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIENvbnRleHQ6
OnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMg
PQotICAgICAgICBHYXRoZXJQYXRocygqbVN0YXRlLm1QYXRoTWFuYWdlciwgbnVtUGF0aHMsIHBh
dGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKLQotICAgIEFOR0xFX0NPTlRFWFRfVFJZKHN5
bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKSk7Ci0KLSAgICBtSW1wbGVtZW50YXRpb24tPnN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkKHBhdGhPYmplY3RzLCByZWZlcmVuY2UsIG1hc2ssIHRyYW5z
Zm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIENvbnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElE
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPQotICAgICAg
ICBHYXRoZXJQYXRocygqbVN0YXRlLm1QYXRoTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlw
ZSwgcGF0aHMsIHBhdGhCYXNlKTsKLQotICAgIEFOR0xFX0NPTlRFWFRfVFJZKHN5bmNTdGF0ZUZv
clBhdGhPcGVyYXRpb24oKSk7Ci0KLSAgICBtSW1wbGVtZW50YXRpb24tPnN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aEluc3RhbmNlZChwYXRoT2JqZWN0cywgY292ZXJNb2RlLCBmaWxsTW9kZSwgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIENvbnRleHQ6OnN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRo
TmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAg
Y29uc3QgYXV0byAmcGF0aE9iamVjdHMgPQotICAgICAgICBHYXRoZXJQYXRocygqbVN0YXRlLm1Q
YXRoTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKLQot
ICAgIEFOR0xFX0NPTlRFWFRfVFJZKHN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKSk7Ci0KLSAg
ICBtSW1wbGVtZW50YXRpb24tPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKHBh
dGhPYmplY3RzLCBjb3Zlck1vZGUsIHJlZmVyZW5jZSwgbWFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRy
YW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6YmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIGNvbnN0IEdMY2hh
ciAqbmFtZSkKLXsKLSAgICBhdXRvICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3JhbVJlc29sdmVM
aW5rKHByb2dyYW0pOwotCi0gICAgcHJvZ3JhbU9iamVjdC0+YmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbihsb2NhdGlvbiwgbmFtZSk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCi17
Ci0gICAgYXV0byAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW1SZXNvbHZlTGluayhwcm9ncmFt
KTsKLQotICAgIHByb2dyYW1PYmplY3QtPnBhdGhGcmFnbWVudElucHV0R2VuKGxvY2F0aW9uLCBn
ZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMpOwotfQotCiBHTHVpbnQgQ29udGV4dDo6Z2V0UHJv
Z3JhbVJlc291cmNlSW5kZXgoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQpA
QCAtMjc2MCw5ICsyMzYxLDkgQEAgdm9pZCBDb250ZXh0OjpoYW5kbGVFcnJvcihHTGVudW0gZXJy
b3JDb2RlLAogICAgIG1FcnJvcnMuaGFuZGxlRXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlLCBmaWxl
LCBmdW5jdGlvbiwgbGluZSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dmFsaWRhdGlvbkVycm9yKEdM
ZW51bSBlcnJvckNvZGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit2b2lkIENvbnRleHQ6OnZhbGlk
YXRpb25FcnJvcihHTGVudW0gZXJyb3JDb2RlLCBjb25zdCBjaGFyICptZXNzYWdlKSBjb25zdAog
ewotICAgIG1FcnJvcnMudmFsaWRhdGlvbkVycm9yKGVycm9yQ29kZSwgbWVzc2FnZSk7CisgICAg
Y29uc3RfY2FzdDxDb250ZXh0ICo+KHRoaXMpLT5tRXJyb3JzLnZhbGlkYXRpb25FcnJvcihlcnJv
ckNvZGUsIG1lc3NhZ2UpOwogfQogCiAvLyBHZXQgb25lIG9mIHRoZSByZWNvcmRlZCBlcnJvcnMg
YW5kIGNsZWFyIGl0cyBmbGFnLCBpZiBhbnkuCkBAIC0yOTAzLDEzICsyNTA0LDEzIEBAIFRyYW5z
Zm9ybUZlZWRiYWNrICpDb250ZXh0OjpjaGVja1RyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdGlvbigK
ICAgICByZXR1cm4gdHJhbnNmb3JtRmVlZGJhY2s7CiB9CiAKLWJvb2wgQ29udGV4dDo6aXNWZXJ0
ZXhBcnJheUdlbmVyYXRlZChWZXJ0ZXhBcnJheUlEIHZlcnRleEFycmF5KQorYm9vbCBDb250ZXh0
Ojppc1ZlcnRleEFycmF5R2VuZXJhdGVkKFZlcnRleEFycmF5SUQgdmVydGV4QXJyYXkpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKG1WZXJ0ZXhBcnJheU1hcC5jb250YWlucyh7MH0pKTsKICAgICByZXR1
cm4gbVZlcnRleEFycmF5TWFwLmNvbnRhaW5zKHZlcnRleEFycmF5KTsKIH0KIAotYm9vbCBDb250
ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNrR2VuZXJhdGVkKFRyYW5zZm9ybUZlZWRiYWNrSUQgdHJh
bnNmb3JtRmVlZGJhY2spCitib29sIENvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2tHZW5lcmF0
ZWQoVHJhbnNmb3JtRmVlZGJhY2tJRCB0cmFuc2Zvcm1GZWVkYmFjaykgY29uc3QKIHsKICAgICBB
U1NFUlQobVRyYW5zZm9ybUZlZWRiYWNrTWFwLmNvbnRhaW5zKHswfSkpOwogICAgIHJldHVybiBt
VHJhbnNmb3JtRmVlZGJhY2tNYXAuY29udGFpbnModHJhbnNmb3JtRmVlZGJhY2spOwpAQCAtMzI5
MSw3ICsyODkyLDcgQEAgc2l6ZV90IENvbnRleHQ6OmdldEV4dGVuc2lvblN0cmluZ0NvdW50KCkg
Y29uc3QKICAgICByZXR1cm4gbUV4dGVuc2lvblN0cmluZ3Muc2l6ZSgpOwogfQogCi1ib29sIENv
bnRleHQ6OmlzRXh0ZW5zaW9uUmVxdWVzdGFibGUoY29uc3QgY2hhciAqbmFtZSkKK2Jvb2wgQ29u
dGV4dDo6aXNFeHRlbnNpb25SZXF1ZXN0YWJsZShjb25zdCBjaGFyICpuYW1lKSBjb25zdAogewog
ICAgIGNvbnN0IEV4dGVuc2lvbkluZm9NYXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9u
SW5mb01hcCgpOwogICAgIGF1dG8gZXh0ZW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgID0g
ZXh0ZW5zaW9uSW5mb3MuZmluZChuYW1lKTsKQEAgLTMzMDAsNyArMjkwMSw3IEBAIGJvb2wgQ29u
dGV4dDo6aXNFeHRlbnNpb25SZXF1ZXN0YWJsZShjb25zdCBjaGFyICpuYW1lKQogICAgICAgICAg
ICBtU3VwcG9ydGVkRXh0ZW5zaW9ucy4qKGV4dGVuc2lvbi0+c2Vjb25kLkV4dGVuc2lvbnNNZW1i
ZXIpOwogfQogCi1ib29sIENvbnRleHQ6OmlzRXh0ZW5zaW9uRGlzYWJsYWJsZShjb25zdCBjaGFy
ICpuYW1lKQorYm9vbCBDb250ZXh0Ojppc0V4dGVuc2lvbkRpc2FibGFibGUoY29uc3QgY2hhciAq
bmFtZSkgY29uc3QKIHsKICAgICBjb25zdCBFeHRlbnNpb25JbmZvTWFwICZleHRlbnNpb25JbmZv
cyA9IEdldEV4dGVuc2lvbkluZm9NYXAoKTsKICAgICBhdXRvIGV4dGVuc2lvbiAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGV4dGVuc2lvbkluZm9zLmZpbmQobmFtZSk7CkBAIC0zNDIwLDYgKzMw
MjEsOCBAQCBFeHRlbnNpb25zIENvbnRleHQ6OmdlbmVyYXRlU3VwcG9ydGVkRXh0ZW5zaW9ucygp
IGNvbnN0CiAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMubWF4Vmlld3MgICAgICAgICAgICAg
ICAgID0gMXU7CiAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMuY29weVRleHR1cmUzZCAgICAg
ICAgICAgID0gZmFsc2U7CiAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMudGV4dHVyZU11bHRp
c2FtcGxlICAgICAgID0gZmFsc2U7CisgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMuZHJhd0J1
ZmZlcnNJbmRleGVkRVhUICAgID0gZmFsc2U7CisgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMu
ZHJhd0J1ZmZlcnNJbmRleGVkT0VTICAgID0gZmFsc2U7CiAKICAgICAgICAgLy8gUmVxdWlyZXMg
Z2xDb21wcmVzc2VkVGV4SW1hZ2UzRAogICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25zLnRleHR1
cmVDb21wcmVzc2lvbkFTVENPRVMgPSBmYWxzZTsKQEAgLTM1MDEsOCArMzEwNCw4IEBAIEV4dGVu
c2lvbnMgQ29udGV4dDo6Z2VuZXJhdGVTdXBwb3J0ZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICBz
dXBwb3J0ZWRFeHRlbnNpb25zLm1heERlYnVnR3JvdXBTdGFja0RlcHRoID0gMTAyNDsKICAgICBz
dXBwb3J0ZWRFeHRlbnNpb25zLm1heExhYmVsTGVuZ3RoICAgICAgICAgID0gMTAyNDsKIAotICAg
IC8vIEV4cGxpY2l0bHkgZW5hYmxlIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5Ci0gICAg
c3VwcG9ydGVkRXh0ZW5zaW9ucy5yb2J1c3RDbGllbnRNZW1vcnkgPSB0cnVlOworICAgIC8vIEV4
cGxpY2l0bHkgZW5hYmxlIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5IGlmIHRoZSBjb250
ZXh0IHN1cHBvcnRzIHZhbGlkYXRpb24uCisgICAgc3VwcG9ydGVkRXh0ZW5zaW9ucy5yb2J1c3RD
bGllbnRNZW1vcnkgPSAhbVNraXBWYWxpZGF0aW9uOwogCiAgICAgLy8gRGV0ZXJtaW5lIHJvYnVz
dCByZXNvdXJjZSBpbml0IGF2YWlsYWJpbGl0eSBmcm9tIEVHTC4KICAgICBzdXBwb3J0ZWRFeHRl
bnNpb25zLnJvYnVzdFJlc291cmNlSW5pdGlhbGl6YXRpb24gPSBtU3RhdGUuaXNSb2J1c3RSZXNv
dXJjZUluaXRFbmFibGVkKCk7CkBAIC0zNTM3LDcgKzMxNDAsOCBAQCBFeHRlbnNpb25zIENvbnRl
eHQ6OmdlbmVyYXRlU3VwcG9ydGVkRXh0ZW5zaW9ucygpIGNvbnN0CiAgICAgc3VwcG9ydGVkRXh0
ZW5zaW9ucy5sb3NlQ29udGV4dENIUk9NSVVNID0gdHJ1ZTsKIAogICAgIC8vIFRoZSBBU1RDIHRl
eHR1cmUgZXh0ZW5zaW9ucyBoYXZlIGRlcGVuZGVuY3kgcmVxdWlyZW1lbnRzLgotICAgIGlmIChz
dXBwb3J0ZWRFeHRlbnNpb25zLnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFJLSFIpCisgICAgaWYg
KHN1cHBvcnRlZEV4dGVuc2lvbnMudGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUktIUiB8fAorICAg
ICAgICBzdXBwb3J0ZWRFeHRlbnNpb25zLnRleHR1cmVDb21wcmVzc2lvblNsaWNlZDNkQVNUQ0tI
UikKICAgICB7CiAgICAgICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRy
IGNhbm5vdCBiZSBleHBvc2VkIHdpdGhvdXQgYWxzbyBleHBvc2luZwogICAgICAgICAvLyBHTF9L
SFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkcgpAQCAtNDg5NSwxNiArNDQ5OSw2IEBAIGFu
Z2xlOjpSZXN1bHQgQ29udGV4dDo6c3luY1N0YXRlRm9yQmxpdCgpCiAgICAgcmV0dXJuIHN5bmNT
dGF0ZShtQmxpdERpcnR5Qml0cywgbUJsaXREaXJ0eU9iamVjdHMpOwogfQogCi1hbmdsZTo6UmVz
dWx0IENvbnRleHQ6OnN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKQotewotICAgIEFOR0xFX1RS
WShzeW5jRGlydHlPYmplY3RzKG1QYXRoT3BlcmF0aW9uRGlydHlPYmplY3RzKSk7Ci0KLSAgICAv
LyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJlcXVp
cmVkIGZvciBwYXRoIHJlbmRlcmluZz8KLSAgICBBTkdMRV9UUlkoc3luY0RpcnR5Qml0cygpKTsK
LQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQogdm9pZCBDb250ZXh0
OjphY3RpdmVTaGFkZXJQcm9ncmFtKFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lLCBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CkBAIC00OTIyLDcgKzQ1
MTYsNyBAQCB2b2lkIENvbnRleHQ6OmJsZW5kQmFycmllcigpCiAKIHZvaWQgQ29udGV4dDo6Ymxl
bmRDb2xvcihHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0
IGFscGhhKQogewotICAgIG1TdGF0ZS5zZXRCbGVuZENvbG9yKGNsYW1wMDEocmVkKSwgY2xhbXAw
MShncmVlbiksIGNsYW1wMDEoYmx1ZSksIGNsYW1wMDEoYWxwaGEpKTsKKyAgICBtU3RhdGUuc2V0
QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6
YmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKQEAgLTQ5MzIsNyArNDUyNiw3IEBAIHZvaWQgQ29u
dGV4dDo6YmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKIAogdm9pZCBDb250ZXh0OjpibGVuZEVx
dWF0aW9uaShHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgbVN0YXRlLnNldEJsZW5kRXF1YXRpb25JbmRleGVkKG1vZGUsIG1vZGUsIGJ1Zik7CiB9
CiAKIHZvaWQgQ29udGV4dDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBH
TGVudW0gbW9kZUFscGhhKQpAQCAtNDk0Miw3ICs0NTM2LDcgQEAgdm9pZCBDb250ZXh0OjpibGVu
ZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCiAKIHZv
aWQgQ29udGV4dDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlaShHTHVpbnQgYnVmLCBHTGVudW0gbW9k
ZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgbVN0
YXRlLnNldEJsZW5kRXF1YXRpb25JbmRleGVkKG1vZGVSR0IsIG1vZGVBbHBoYSwgYnVmKTsKIH0K
IAogdm9pZCBDb250ZXh0OjpibGVuZEZ1bmMoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9y
KQpAQCAtNDk1Miw3ICs0NTQ2LDEyIEBAIHZvaWQgQ29udGV4dDo6YmxlbmRGdW5jKEdMZW51bSBz
ZmFjdG9yLCBHTGVudW0gZGZhY3RvcikKIAogdm9pZCBDb250ZXh0OjpibGVuZEZ1bmNpKEdMdWlu
dCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIG1TdGF0ZS5zZXRCbGVuZEZhY3RvcnNJbmRleGVkKHNyYywgZHN0LCBzcmMsIGRzdCwgYnVm
KTsKKworICAgIGlmIChtU3RhdGUubm9TaW11bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFC
bGVuZEZ1bmMoKSkKKyAgICB7CisgICAgICAgIG1TdGF0ZUNhY2hlLm9uQmxlbmRGdW5jSW5kZXhl
ZENoYW5nZSh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJh
dGUoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0g
ZHN0QWxwaGEpCkBAIC00OTY2LDcgKzQ1NjUsMTIgQEAgdm9pZCBDb250ZXh0OjpibGVuZEZ1bmNT
ZXBhcmF0ZWkoR0x1aW50IGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzcmNBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBk
c3RBbHBoYSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgbVN0YXRlLnNldEJsZW5kRmFj
dG9yc0luZGV4ZWQoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSwgYnVmKTsKKwor
ICAgIGlmIChtU3RhdGUubm9TaW11bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVuZEZ1
bmMoKSkKKyAgICB7CisgICAgICAgIG1TdGF0ZUNhY2hlLm9uQmxlbmRGdW5jSW5kZXhlZENoYW5n
ZSh0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29udGV4dDo6Y2xlYXJDb2xvcihHTGZsb2F0IHJl
ZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhKQpAQCAtNDk5Myw3
ICs0NTk3LDkgQEAgdm9pZCBDb250ZXh0Ojpjb2xvck1hc2soR0xib29sZWFuIHJlZCwgR0xib29s
ZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWEKIAogdm9pZCBDb250ZXh0Ojpjb2xv
ck1hc2tpKEdMdWludCBpbmRleCwgR0xib29sZWFuIHIsIEdMYm9vbGVhbiBnLCBHTGJvb2xlYW4g
YiwgR0xib29sZWFuIGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG1TdGF0ZS5zZXRD
b2xvck1hc2tJbmRleGVkKENvbnZlcnRUb0Jvb2wociksIENvbnZlcnRUb0Jvb2woZyksIENvbnZl
cnRUb0Jvb2woYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydFRvQm9v
bChhKSwgaW5kZXgpOworICAgIG1TdGF0ZUNhY2hlLm9uQ29sb3JNYXNrQ2hhbmdlKHRoaXMpOwog
fQogCiB2b2lkIENvbnRleHQ6OmN1bGxGYWNlKEN1bGxGYWNlTW9kZSBtb2RlKQpAQCAtNTAyNCw3
ICs0NjMwLDggQEAgdm9pZCBDb250ZXh0OjpkaXNhYmxlKEdMZW51bSBjYXApCiAKIHZvaWQgQ29u
dGV4dDo6ZGlzYWJsZWkoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0RW5hYmxlRmVhdHVyZUluZGV4ZWQodGFyZ2V0LCBm
YWxzZSwgaW5kZXgpOworICAgIG1TdGF0ZUNhY2hlLm9uQ29udGV4dENhcENoYW5nZSh0aGlzKTsK
IH0KIAogdm9pZCBDb250ZXh0OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4
KQpAQCAtNTA0MSw3ICs0NjQ4LDggQEAgdm9pZCBDb250ZXh0OjplbmFibGUoR0xlbnVtIGNhcCkK
IAogdm9pZCBDb250ZXh0OjplbmFibGVpKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgbVN0YXRlLnNldEVuYWJsZUZlYXR1cmVJbmRleGVk
KHRhcmdldCwgdHJ1ZSwgaW5kZXgpOworICAgIG1TdGF0ZUNhY2hlLm9uQ29udGV4dENhcENoYW5n
ZSh0aGlzKTsKIH0KIAogdm9pZCBDb250ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVp
bnQgaW5kZXgpCkBAIC01MzUxLDcgKzQ5NTksNyBAQCB2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJp
Ykk0dWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQogICAgIG1TdGF0ZUNhY2hlLm9u
RGVmYXVsdFZlcnRleEF0dHJpYnV0ZUNoYW5nZSh0aGlzKTsKIH0KIAotdm9pZCBDb250ZXh0Ojpn
ZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cykKK3ZvaWQgQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliaXZJbXBsKEdMdWludCBpbmRleCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSBjb25zdAogewogICAgIGNvbnN0IFZlcnRleEF0dHJp
YkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQogICAgICAgICBnZXRTdGF0ZSgpLmdl
dFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7CkBAIC01MzYwLDYgKzQ5NjgsMTEgQEAg
dm9pZCBDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcykKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMs
IHBuYW1lLCBwYXJhbXMpOwogfQogCit2b2lkIENvbnRleHQ6OmdldFZlcnRleEF0dHJpYml2KEdM
dWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIHJldHVybiBn
ZXRWZXJ0ZXhBdHRyaWJpdkltcGwoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworfQorCiB2b2lkIENv
bnRleHQ6OmdldFZlcnRleEF0dHJpYml2Um9idXN0KEdMdWludCBpbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCkBAIC01NDgyLDE0ICs1MDk1
LDE0IEBAIEdMdWludCBDb250ZXh0OjpnZXREZWJ1Z01lc3NhZ2VMb2coR0x1aW50IGNvdW50LAog
dm9pZCBDb250ZXh0OjpwdXNoRGVidWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgc3RkOjpzdHJpbmcg
bXNnKG1lc3NhZ2UsIChsZW5ndGggPiAwKSA/IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSA6
IHN0cmxlbihtZXNzYWdlKSk7Ci0gICAgbUltcGxlbWVudGF0aW9uLT5wdXNoRGVidWdHcm91cChz
b3VyY2UsIGlkLCBtc2cpOworICAgIEFOR0xFX0NPTlRFWFRfVFJZKG1JbXBsZW1lbnRhdGlvbi0+
cHVzaERlYnVnR3JvdXAodGhpcywgc291cmNlLCBpZCwgbXNnKSk7CiAgICAgbVN0YXRlLmdldERl
YnVnKCkucHVzaEdyb3VwKHNvdXJjZSwgaWQsIHN0ZDo6bW92ZShtc2cpKTsKIH0KIAogdm9pZCBD
b250ZXh0Ojpwb3BEZWJ1Z0dyb3VwKCkKIHsKICAgICBtU3RhdGUuZ2V0RGVidWcoKS5wb3BHcm91
cCgpOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+cG9wRGVidWdHcm91cCgpOworICAgIEFOR0xFX0NP
TlRFWFRfVFJZKG1JbXBsZW1lbnRhdGlvbi0+cG9wRGVidWdHcm91cCh0aGlzKSk7CiB9CiAKIHZv
aWQgQ29udGV4dDo6cHJpbWl0aXZlQm91bmRpbmdCb3goR0xmbG9hdCBtaW5YLApAQCAtNjQ3Miwx
NCArNjA4NSwxMyBAQCB2b2lkIENvbnRleHQ6OmdldEludGVnZXJ2Um9idXN0KEdMZW51bSBwbmFt
ZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsCiAKIHZvaWQgQ29udGV4dDo6Z2V0
UHJvZ3JhbWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpCiB7Ci0gICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IG51bGxwdHI7Ci0gICAgaWYg
KCFpc0NvbnRleHRMb3N0KCkpCisgICAgLy8gRG9uJ3QgcmVzb2x2ZSBsaW5rIGlmIGNoZWNraW5n
IHRoZSBsaW5rIGNvbXBsZXRpb24gc3RhdHVzLgorICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBnZXRQcm9ncmFtTm9SZXNvbHZlTGluayhwcm9ncmFtKTsKKyAgICBpZiAoIWlzQ29udGV4dExv
c3QoKSAmJiBwbmFtZSAhPSBHTF9DT01QTEVUSU9OX1NUQVRVU19LSFIpCiAgICAgewotICAgICAg
ICAvLyBEb24ndCByZXNvbHZlIGxpbmsgaWYgY2hlY2tpbmcgdGhlIGxpbmsgY29tcGxldGlvbiBz
dGF0dXMuCi0gICAgICAgIHByb2dyYW1PYmplY3QgPSAocG5hbWUgPT0gR0xfQ09NUExFVElPTl9T
VEFUVVNfS0hSID8gZ2V0UHJvZ3JhbU5vUmVzb2x2ZUxpbmsocHJvZ3JhbSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRQcm9n
cmFtUmVzb2x2ZUxpbmsocHJvZ3JhbSkpOwotICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7
CisgICAgICAgIHByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtUmVzb2x2ZUxpbmsocHJvZ3JhbSk7
CiAgICAgfQorICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKICAgICBRdWVyeVByb2dyYW1pdih0
aGlzLCBwcm9ncmFtT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKIH0KIApAQCAtNjUxNCw3ICs2MTI2
LDcgQEAgdm9pZCBDb250ZXh0OjpnZXRQcm9ncmFtSW5mb0xvZyhTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3JhbVJlc29sdmVM
aW5rKHByb2dyYW0pOwogICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKLSAgICBwcm9ncmFtT2Jq
ZWN0LT5nZXRJbmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CisgICAgcHJvZ3JhbU9i
amVjdC0+Z2V0RXhlY3V0YWJsZSgpLmdldEluZm9Mb2coYnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9n
KTsKIH0KIAogdm9pZCBDb250ZXh0OjpnZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKFByb2dyYW1Q
aXBlbGluZUlEIHBpcGVsaW5lLApAQCAtNjYzOCw3ICs2MjUwLDcgQEAgdm9pZCBDb250ZXh0Ojpn
ZXRTaGFkZXJTb3VyY2UoU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwKICAgICBzaGFkZXJPYmplY3Qt
PmdldFNvdXJjZShidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6
Z2V0VW5pZm9ybWZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtZnYoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKQogewog
ICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtUmVzb2x2ZUxpbmsocHJvZ3Jh
bSk7CiAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOwpAQCAtNjY0Niw3ICs2MjU4LDcgQEAgdm9p
ZCBDb250ZXh0OjpnZXRVbmlmb3JtZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTGZsb2F0ICpwYXIKIH0KIAogdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtZnZSb2J1
c3QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcykKQEAgLTY2NTQsNyArNjI2Niw3IEBAIHZvaWQgQ29udGV4dDo6Z2V0VW5pZm9ybWZ2Um9i
dXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgIGdldFVuaWZvcm1mdihwcm9ncmFtLCBs
b2NhdGlvbiwgcGFyYW1zKTsKIH0KIAotdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtaXYoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKQordm9pZCBD
b250ZXh0OjpnZXRVbmlmb3JtaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcykKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtT2Jq
ZWN0ID0gZ2V0UHJvZ3JhbVJlc29sdmVMaW5rKHByb2dyYW0pOwogICAgIEFTU0VSVChwcm9ncmFt
T2JqZWN0KTsKQEAgLTY2NjIsNyArNjI3NCw3IEBAIHZvaWQgQ29udGV4dDo6Z2V0VW5pZm9ybWl2
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtCiB9
CiAKIHZvaWQgQ29udGV4dDo6Z2V0VW5pZm9ybWl2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQpAQCAtNjY3NCwxMCArNjI4Niwx
MCBAQCBHTGludCBDb250ZXh0OjpnZXRVbmlmb3JtTG9jYXRpb24oU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0
ID0gZ2V0UHJvZ3JhbVJlc29sdmVMaW5rKHByb2dyYW0pOwogICAgIEFTU0VSVChwcm9ncmFtT2Jq
ZWN0KTsKLSAgICByZXR1cm4gcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUp
OworICAgIHJldHVybiBwcm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtTG9jYXRpb24obmFtZSkudmFs
dWU7CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0Ojppc0J1ZmZlcihCdWZmZXJJRCBidWZmZXIpCitH
TGJvb2xlYW4gQ29udGV4dDo6aXNCdWZmZXIoQnVmZmVySUQgYnVmZmVyKSBjb25zdAogewogICAg
IGlmIChidWZmZXIudmFsdWUgPT0gMCkKICAgICB7CkBAIC02Njg3LDE4ICs2Mjk5LDE3IEBAIEdM
Ym9vbGVhbiBDb250ZXh0Ojppc0J1ZmZlcihCdWZmZXJJRCBidWZmZXIpCiAgICAgcmV0dXJuIENv
bnZlcnRUb0dMQm9vbGVhbihnZXRCdWZmZXIoYnVmZmVyKSk7CiB9CiAKLUdMYm9vbGVhbiBDb250
ZXh0Ojppc0VuYWJsZWQoR0xlbnVtIGNhcCkKK0dMYm9vbGVhbiBDb250ZXh0Ojppc0VuYWJsZWQo
R0xlbnVtIGNhcCkgY29uc3QKIHsKICAgICByZXR1cm4gbVN0YXRlLmdldEVuYWJsZUZlYXR1cmUo
Y2FwKTsKIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzRW5hYmxlZGkoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4KQorR0xib29sZWFuIENvbnRleHQ6OmlzRW5hYmxlZGkoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGluZGV4KSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIG1TdGF0ZS5nZXRFbmFibGVGZWF0dXJlSW5kZXhlZCh0YXJn
ZXQsIGluZGV4KTsKIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzRnJhbWVidWZmZXIoRnJhbWVi
dWZmZXJJRCBmcmFtZWJ1ZmZlcikKK0dMYm9vbGVhbiBDb250ZXh0Ojppc0ZyYW1lYnVmZmVyKEZy
YW1lYnVmZmVySUQgZnJhbWVidWZmZXIpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lYnVmZmVyLnZh
bHVlID09IDApCiAgICAgewpAQCAtNjcwOCw3ICs2MzE5LDcgQEAgR0xib29sZWFuIENvbnRleHQ6
OmlzRnJhbWVidWZmZXIoRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlcikKICAgICByZXR1cm4gQ29u
dmVydFRvR0xCb29sZWFuKGdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSk7CiB9CiAKLUdMYm9v
bGVhbiBDb250ZXh0Ojppc1Byb2dyYW0oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCitHTGJvb2xl
YW4gQ29udGV4dDo6aXNQcm9ncmFtKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKSBjb25zdAogewog
ICAgIGlmIChwcm9ncmFtLnZhbHVlID09IDApCiAgICAgewpAQCAtNjcxOCw3ICs2MzI5LDcgQEAg
R0xib29sZWFuIENvbnRleHQ6OmlzUHJvZ3JhbShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKICAg
ICByZXR1cm4gQ29udmVydFRvR0xCb29sZWFuKGdldFByb2dyYW1Ob1Jlc29sdmVMaW5rKHByb2dy
YW0pKTsKIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzUmVuZGVyYnVmZmVyKFJlbmRlcmJ1ZmZl
cklEIHJlbmRlcmJ1ZmZlcikKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1JlbmRlcmJ1ZmZlcihSZW5k
ZXJidWZmZXJJRCByZW5kZXJidWZmZXIpIGNvbnN0CiB7CiAgICAgaWYgKHJlbmRlcmJ1ZmZlci52
YWx1ZSA9PSAwKQogICAgIHsKQEAgLTY3MjgsNyArNjMzOSw3IEBAIEdMYm9vbGVhbiBDb250ZXh0
Ojppc1JlbmRlcmJ1ZmZlcihSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXIpCiAgICAgcmV0dXJu
IENvbnZlcnRUb0dMQm9vbGVhbihnZXRSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKSk7CiB9CiAK
LUdMYm9vbGVhbiBDb250ZXh0Ojppc1NoYWRlcihTaGFkZXJQcm9ncmFtSUQgc2hhZGVyKQorR0xi
b29sZWFuIENvbnRleHQ6OmlzU2hhZGVyKFNoYWRlclByb2dyYW1JRCBzaGFkZXIpIGNvbnN0CiB7
CiAgICAgaWYgKHNoYWRlci52YWx1ZSA9PSAwKQogICAgIHsKQEAgLTY3MzgsNyArNjM0OSw3IEBA
IEdMYm9vbGVhbiBDb250ZXh0Ojppc1NoYWRlcihTaGFkZXJQcm9ncmFtSUQgc2hhZGVyKQogICAg
IHJldHVybiBDb252ZXJ0VG9HTEJvb2xlYW4oZ2V0U2hhZGVyKHNoYWRlcikpOwogfQogCi1HTGJv
b2xlYW4gQ29udGV4dDo6aXNUZXh0dXJlKFRleHR1cmVJRCB0ZXh0dXJlKQorR0xib29sZWFuIENv
bnRleHQ6OmlzVGV4dHVyZShUZXh0dXJlSUQgdGV4dHVyZSkgY29uc3QKIHsKICAgICBpZiAodGV4
dHVyZS52YWx1ZSA9PSAwKQogICAgIHsKQEAgLTY4MzEsMTkgKzY0NDIsMjIgQEAgdm9pZCBDb250
ZXh0OjpwYXRjaFBhcmFtZXRlcmkoR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkKICAgICBVTklN
UExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTFmKEdMaW50IGxvY2F0aW9u
LCBHTGZsb2F0IHgpCit2b2lkIENvbnRleHQ6OnVuaWZvcm0xZihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sIEdMZmxvYXQgeCkKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFBy
b2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCAxLCAmeCk7CiB9
CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTFmdihVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAg
UHJvZ3JhbSAqcHJvZ3JhbSA9IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0
VW5pZm9ybTFmdihsb2NhdGlvbiwgY291bnQsIHYpOwogfQogCi12b2lkIENvbnRleHQ6OnNldFVu
aWZvcm0xaUltcGwoUHJvZ3JhbSAqcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMaW50ICp2KQordm9pZCBDb250ZXh0OjpzZXRVbmlmb3JtMWlJbXBsKFByb2dy
YW0gKnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnYpCiB7CiAg
ICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTFpdih0aGlzLCBsb2NhdGlvbiwgY291bnQsIHYpOwogfQpA
QCAtNjg1NCw5NSArNjQ2OCw5NSBAQCB2b2lkIENvbnRleHQ6Om9uU2FtcGxlclVuaWZvcm1DaGFu
Z2Uoc2l6ZV90IHRleHR1cmVVbml0SW5kZXgpCiAgICAgbVN0YXRlQ2FjaGUub25BY3RpdmVUZXh0
dXJlQ2hhbmdlKHRoaXMpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0xaShHTGludCBsb2Nh
dGlvbiwgR0xpbnQgeCkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTFpKFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwgR0xpbnQgeCkKIHsKICAgICBzZXRVbmlmb3JtMWlJbXBsKG1TdGF0ZS5nZXRQcm9n
cmFtKCksIGxvY2F0aW9uLCAxLCAmeCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTFpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCit2b2lkIENvbnRl
eHQ6OnVuaWZvcm0xaXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdikKIHsKICAgICBzZXRVbmlmb3JtMWlJbXBsKG1TdGF0ZS5nZXRQcm9ncmFt
KCksIGxvY2F0aW9uLCBjb3VudCwgdik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTJmKEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9y
bTJmKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiB7CiAg
ICAgR0xmbG9hdCB4eVsyXSAgICA9IHt4LCB5fTsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0
YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCAx
LCB4eSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTJmdihV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
CiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJv
Z3JhbS0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQsIHYpOwogfQogCi12b2lkIENvbnRl
eHQ6OnVuaWZvcm0yaShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSkKK3ZvaWQgQ29u
dGV4dDo6dW5pZm9ybTJpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQg
eSkKIHsKICAgICBHTGludCB4eVsyXSAgICAgID0ge3gsIHl9OwogICAgIFByb2dyYW0gKnByb2dy
YW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNldFVuaWZvcm0yaXYobG9j
YXRpb24sIDEsIHh5KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtMml2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3ZvaWQgQ29udGV4dDo6dW5pZm9y
bTJpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2KQogewogICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAg
IHByb2dyYW0tPnNldFVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAotdm9pZCBD
b250ZXh0Ojp1bmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBH
TGZsb2F0IHopCit2b2lkIENvbnRleHQ6OnVuaWZvcm0zZihVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAgICAgR0xmbG9hdCB4eXpb
M10gICA9IHt4LCB5LCB6fTsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFByb2dy
YW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCAxLCB4eXopOwogfQog
Ci12b2lkIENvbnRleHQ6OnVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKnYpCit2b2lkIENvbnRleHQ6OnVuaWZvcm0zZnYoVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIFBy
b2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNldFVu
aWZvcm0zZnYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3Jt
M2koR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCit2b2lkIENvbnRl
eHQ6OnVuaWZvcm0zaShVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHopCiB7CiAgICAgR0xpbnQgeHl6WzNdICAgICA9IHt4LCB5LCB6fTsKICAgICBQcm9n
cmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlm
b3JtM2l2KGxvY2F0aW9uLCAxLCB4eXopOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0zaXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQordm9pZCBDb250
ZXh0Ojp1bmlmb3JtM2l2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnYpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1TdGF0ZS5nZXRQcm9n
cmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbiwgY291bnQsIHYpOwog
fQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm00ZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KQordm9pZCBDb250ZXh0Ojp1bmlmb3JtNGYo
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6
LCBHTGZsb2F0IHcpCiB7CiAgICAgR0xmbG9hdCB4eXp3WzRdICA9IHt4LCB5LCB6LCB3fTsKICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5z
ZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCAxLCB4eXp3KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlm
b3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtNGZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0
YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBj
b3VudCwgdik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTRpKEdMaW50IGxvY2F0aW9uLCBH
TGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQordm9pZCBDb250ZXh0Ojp1bmlmb3Jt
NGkoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBH
TGludCB3KQogewogICAgIEdMaW50IHh5endbNF0gICAgPSB7eCwgeSwgeiwgd307CiAgICAgUHJv
Z3JhbSAqcHJvZ3JhbSA9IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5p
Zm9ybTRpdihsb2NhdGlvbiwgMSwgeHl6dyk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTRp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCit2b2lkIENv
bnRleHQ6OnVuaWZvcm00aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCAqdikKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFBy
b2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNGl2KGxvY2F0aW9uLCBjb3VudCwgdik7
CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwKK3Zv
aWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNjk1MSw3ICs2NTY1LDcg
QEAgdm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLAogICAgIHBy
b2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9u
LAordm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC02OTYwLDcgKzY1
NzQsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCiAg
ICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9j
YXRpb24sCit2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYoVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTcwMDUs
NTEgKzY2MTksNTEgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtQmluYXJ5KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAogICAgIEFOR0xFX0NPTlRFWFRfVFJZKG9uUHJvZ3JhbUxpbmsocHJvZ3JhbU9i
amVjdCkpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0xdWkoR0xpbnQgbG9jYXRpb24sIEdM
dWludCB2MCkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTF1aShVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMdWludCB2MCkKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFByb2dy
YW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMXVpdihsb2NhdGlvbiwgMSwgJnYwKTsKIH0K
IAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtMnVpKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdM
dWludCB2MSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTJ1aShVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMdWludCB2MCwgR0x1aW50IHYxKQogewogICAgIFByb2dyYW0gKnByb2dyYW0gID0gbVN0
YXRlLmdldFByb2dyYW0oKTsKICAgICBjb25zdCBHTHVpbnQgeHlbXSA9IHt2MCwgdjF9OwogICAg
IHByb2dyYW0tPnNldFVuaWZvcm0ydWl2KGxvY2F0aW9uLCAxLCB4eSk7CiB9CiAKLXZvaWQgQ29u
dGV4dDo6dW5pZm9ybTN1aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdM
dWludCB2MikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTN1aShVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpCiB7CiAgICAgUHJvZ3JhbSAqcHJv
Z3JhbSAgID0gbVN0YXRlLmdldFByb2dyYW0oKTsKICAgICBjb25zdCBHTHVpbnQgeHl6W10gPSB7
djAsIHYxLCB2Mn07CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTN1aXYobG9jYXRpb24sIDEsIHh5
eik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTR1aShHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYzKQordm9pZCBDb250ZXh0Ojp1bmlm
b3JtNHVpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdM
dWludCB2MiwgR0x1aW50IHYzKQogewogICAgIFByb2dyYW0gKnByb2dyYW0gICAgPSBtU3RhdGUu
Z2V0UHJvZ3JhbSgpOwogICAgIGNvbnN0IEdMdWludCB4eXp3W10gPSB7djAsIHYxLCB2MiwgdjN9
OwogICAgIHByb2dyYW0tPnNldFVuaWZvcm00dWl2KGxvY2F0aW9uLCAxLCB4eXp3KTsKIH0KIAot
dm9pZCBDb250ZXh0Ojp1bmlmb3JtMXVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0x1aW50ICp2YWx1ZSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTF1aXYoVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQogewog
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0t
PnNldFVuaWZvcm0xdWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQotdm9pZCBDb250ZXh0
Ojp1bmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2YWx1ZSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTJ1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIFByb2dyYW0g
KnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNldFVuaWZvcm0y
dWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0z
dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtM3VpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9
IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTN1aXYobG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTR1aXYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIENvbnRl
eHQ6OnVuaWZvcm00dWl2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdl
dFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNHVpdihsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKQEAgLTcwODMsMTIgKzY2OTcsMTcgQEAgdm9pZCBDb250ZXh0OjpkZWxldGVRdWVy
aWVzKEdMc2l6ZWkgbiwgY29uc3QgUXVlcnlJRCAqaWRzKQogICAgIH0KIH0KIAotR0xib29sZWFu
IENvbnRleHQ6OmlzUXVlcnkoUXVlcnlJRCBpZCkKK2Jvb2wgQ29udGV4dDo6aXNRdWVyeUdlbmVy
YXRlZChRdWVyeUlEIHF1ZXJ5KSBjb25zdAogewotICAgIHJldHVybiBDb252ZXJ0VG9HTEJvb2xl
YW4oZ2V0UXVlcnkoaWQsIGZhbHNlLCBRdWVyeVR5cGU6OkludmFsaWRFbnVtKSAhPSBudWxscHRy
KTsKKyAgICByZXR1cm4gbVF1ZXJ5TWFwLmNvbnRhaW5zKHF1ZXJ5KTsKIH0KIAotdm9pZCBDb250
ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCitHTGJvb2xlYW4gQ29udGV4
dDo6aXNRdWVyeShRdWVyeUlEIGlkKSBjb25zdAoreworICAgIHJldHVybiBDb252ZXJ0VG9HTEJv
b2xlYW4oZ2V0UXVlcnkoaWQpICE9IG51bGxwdHIpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZv
cm1NYXRyaXgyeDNmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzA5Nyw3ICs2NzE2LDcgQEAgdm9pZCBD
b250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgcHJvZ3JhbS0+
c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9uLAor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTcxMDYs
NyArNjcyNSw3IEBAIHZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0
aW9uLAogICAgIHByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRm
dihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCkBAIC03MTE1LDcgKzY3MzQsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRy
aXgyeDRmdihHTGludCBsb2NhdGlvbiwKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4Mng0
ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAotdm9pZCBDb250ZXh0
Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIENvbnRleHQ6OnVuaWZv
cm1NYXRyaXg0eDJmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzEyNCw3ICs2NzQzLDcgQEAgdm9pZCBD
b250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgcHJvZ3JhbS0+
c2V0VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLAor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTcxMzMs
NyArNjc1Miw3IEBAIHZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0
aW9uLAogICAgIHByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNm
dihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCkBAIC03MTc1LDcgKzY3OTQsNyBAQCB2b2lkIENvbnRleHQ6OmdlblZlcnRleEFy
cmF5cyhHTHNpemVpIG4sIFZlcnRleEFycmF5SUQgKmFycmF5cykKICAgICB9CiB9CiAKLUdMYm9v
bGVhbiBDb250ZXh0Ojppc1ZlcnRleEFycmF5KFZlcnRleEFycmF5SUQgYXJyYXkpCitHTGJvb2xl
YW4gQ29udGV4dDo6aXNWZXJ0ZXhBcnJheShWZXJ0ZXhBcnJheUlEIGFycmF5KSBjb25zdAogewog
ICAgIGlmIChhcnJheS52YWx1ZSA9PSAwKQogICAgIHsKQEAgLTcyNTAsNyArNjg2OSw3IEBAIHZv
aWQgQ29udGV4dDo6Z2VuVHJhbnNmb3JtRmVlZGJhY2tzKEdMc2l6ZWkgbiwgVHJhbnNmb3JtRmVl
ZGJhY2tJRCAqaWRzKQogICAgIH0KIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzVHJhbnNmb3Jt
RmVlZGJhY2soVHJhbnNmb3JtRmVlZGJhY2tJRCBpZCkKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1Ry
YW5zZm9ybUZlZWRiYWNrKFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQpIGNvbnN0CiB7CiAgICAgaWYg
KGlkLnZhbHVlID09IDApCiAgICAgewpAQCAtNzI3NywxNCArNjg5NiwxNCBAQCB2b2lkIENvbnRl
eHQ6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKICAgICBtU3RhdGVDYWNoZS5vbkFjdGl2ZVRy
YW5zZm9ybUZlZWRiYWNrQ2hhbmdlKHRoaXMpOwogfQogCi12b2lkIENvbnRleHQ6OmdldFVuaWZv
cm11aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBh
cmFtcykKK3ZvaWQgQ29udGV4dDo6Z2V0VW5pZm9ybXVpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBjb25z
dCBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3JhbVJlc29sdmVMaW5rKHByb2dyYW0p
OwogICAgIHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm11aXYodGhpcywgbG9jYXRpb24sIHBhcmFt
cyk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Z2V0VW5pZm9ybXVpdlJvYnVzdChTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKQEAgLTcz
OTksNyArNzAxOCw3IEBAIEdMc3luYyBDb250ZXh0OjpmZW5jZVN5bmMoR0xlbnVtIGNvbmRpdGlv
biwgR0xiaXRmaWVsZCBmbGFncykKICAgICByZXR1cm4gc3luY0hhbmRsZTsKIH0KIAotR0xib29s
ZWFuIENvbnRleHQ6OmlzU3luYyhHTHN5bmMgc3luYykKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1N5
bmMoR0xzeW5jIHN5bmMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChnZXRTeW5jKHN5bmMpICE9IG51
bGxwdHIpOwogfQpAQCAtNzUwNiwxOSArNzEyNSwyMiBAQCB2b2lkIENvbnRleHQ6OmdldEludGVy
bmFsZm9ybWF0aXZSb2J1c3QoR0xlbnVtIHRhcmdldCwKICAgICBnZXRJbnRlcm5hbGZvcm1hdGl2
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwogfQogCi12
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGludCB2MCkKK3ZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xaShT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCB2
MCkKIHsKICAgICBwcm9ncmFtVW5pZm9ybTFpdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgJnYwKTsK
IH0KIAotdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJpKFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKQordm9pZCBDb250ZXh0Ojpw
cm9ncmFtVW5pZm9ybTJpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB2MSkKIHsKICAgICBHTGludCB4eVsyXSA9IHt2MCwgdjF9OwogICAgIHByb2dyYW1V
bmlmb3JtMml2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm0zaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
djEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIpCkBAIC03NTI4LDcg
KzcxNTAsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtM2koU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00aShTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdjIsCkBAIC03NTM4LDE5ICs3MTYwLDIyIEBAIHZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm00aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICBwcm9ncmFtVW5p
Zm9ybTRpdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHl6dyk7CiB9CiAKLXZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm0xdWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHVpbnQgdjApCit2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMXVpKFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMdWludCB2MCkKIHsKICAg
ICBwcm9ncmFtVW5pZm9ybTF1aXYocHJvZ3JhbSwgbG9jYXRpb24sIDEsICZ2MCk7CiB9CiAKLXZv
aWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0ydWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSkKK3ZvaWQgQ29udGV4dDo6cHJvZ3Jh
bVVuaWZvcm0ydWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjEpCiB7CiAgICAgR0x1aW50IHh5WzJdID0ge3YwLCB2MX07CiAgICAgcHJvZ3Jh
bVVuaWZvcm0ydWl2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eSk7CiB9CiAKIHZvaWQgQ29udGV4
dDo6cHJvZ3JhbVVuaWZvcm0zdWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIp
CkBAIC03NTYwLDcgKzcxODUsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtM3VpKFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3Jt
NHVpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyLApAQCAtNzU3MCwxOSArNzE5
NSwyMiBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNHVpKFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAogICAgIHByb2dyYW1Vbmlmb3JtNHVpdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHl6
dyk7CiB9CiAKLXZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xZihTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjApCit2b2lkIENvbnRleHQ6OnByb2dy
YW1Vbmlmb3JtMWYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwgR0xmbG9hdCB2MCkKIHsKICAgICBwcm9ncmFtVW5pZm9ybTFmdihwcm9ncmFtLCBsb2Nh
dGlvbiwgMSwgJnYwKTsKIH0KIAotdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJmKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2
MSkKK3ZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxKQogewogICAgIEdMZmxvYXQgeHlbMl0g
PSB7djAsIHYxfTsKICAgICBwcm9ncmFtVW5pZm9ybTJmdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwg
eHkpOwogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtM2YoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHYyKQpAQCAtNzU5Miw3ICs3MjIwLDcgQEAgdm9pZCBDb250ZXh0Ojpw
cm9ncmFtVW5pZm9ybTNmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRl
eHQ6OnByb2dyYW1Vbmlmb3JtNGYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyLApA
QCAtNzYwMyw3ICs3MjMxLDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRmKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWl2
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
dmFsdWUpCiB7CkBAIC03NjEzLDcgKzcyNDEsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlm
b3JtMWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dy
YW1Vbmlmb3JtMml2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqdmFsdWUpCiB7CkBAIC03NjIzLDcgKzcyNTEsNyBAQCB2b2lkIENvbnRleHQ6
OnByb2dyYW1Vbmlmb3JtMml2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENv
bnRleHQ6OnByb2dyYW1Vbmlmb3JtM2l2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CkBAIC03NjMzLDcgKzcyNjEsNyBAQCB2
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtM2l2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAog
fQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNGl2KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CkBAIC03NjQzLDcg
KzcyNzEsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNGl2KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMXVpdihTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFs
dWUpCiB7CkBAIC03NjUzLDcgKzcyODEsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3Jt
MXVpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFt
VW5pZm9ybTJ1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewpAQCAtNzY2Myw3ICs3MjkxLDcgQEAgdm9pZCBDb250
ZXh0Ojpwcm9ncmFtVW5pZm9ybTJ1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZv
aWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKQEAgLTc2NzMsNyAr
NzMwMSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zdWl2KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNHVpdihTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFs
dWUpCiB7CkBAIC03NjgzLDcgKzczMTEsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3Jt
NHVpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFt
VW5pZm9ybTFmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpCiB7CkBAIC03NjkzLDcgKzczMjEsNyBAQCB2b2lkIENvbnRleHQ6
OnByb2dyYW1Vbmlmb3JtMWZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENv
bnRleHQ6OnByb2dyYW1Vbmlmb3JtMmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKQEAgLTc3MDMsNyArNzMzMSw3IEBA
IHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
CiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zZnYoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewpAQCAtNzcx
Myw3ICs3MzQxLDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTNmdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRmdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpCiB7CkBAIC03NzIzLDcgKzczNTEsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3Jt
NGZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1V
bmlmb3JtTWF0cml4MmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTc3
MzQsNyArNzM2Miw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzc0NSw3ICs3
MzczLDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDRm
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC03NzU2LDcgKzczODQsNyBA
QCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTc3NjcsNyArNzM5
NSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDN4
MmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC03Nzc4
LDcgKzc0MDYsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1N
YXRyaXgyeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpA
QCAtNzc4OSw3ICs3NDE3LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4
NGZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1V
bmlmb3JtTWF0cml4NHgyZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKQEAgLTc4MDAsNyArNzQyOCw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpw
cm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpCkBAIC03ODExLDcgKzc0MzksNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1V
bmlmb3JtTWF0cml4M3g0ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29u
dGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzg0NSw3ICs3NDczLDcgQEAgdm9pZCBDb250ZXh0Ojpk
ZWxldGVQcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkgY291bnQsIGNvbnN0IFByb2dyYW1QaXBlbGlu
ZUlEICpwaXAKICAgICB9CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0Ojppc1Byb2dyYW1QaXBlbGlu
ZShQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSkKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1Byb2dy
YW1QaXBlbGluZShQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSkgY29uc3QKIHsKICAgICBpZiAo
cGlwZWxpbmUudmFsdWUgPT0gMCkKICAgICB7CkBAIC03OTA4LDcgKzc1MzYsNyBAQCB2b2lkIENv
bnRleHQ6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwK
IH0KIAogdm9pZCBDb250ZXh0OjpnZXRuVW5pZm9ybWZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewpAQCAtNzkxOSw3ICs3NTQ3LDcgQEAgdm9pZCBDb250
ZXh0OjpnZXRuVW5pZm9ybWZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENv
bnRleHQ6OmdldG5Vbmlmb3JtZnZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQpAQCAtNzkyNyw3ICs3NTU1LDEwIEBA
IHZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm1mdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm1p
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xpbnQgKnBhcmFtcykKK3ZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm1pdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW1SZXNvbHZlTGluayhwcm9ncmFtKTsKICAg
ICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CkBAIC03OTM2LDcgKzc1NjcsNyBAQCB2b2lkIENvbnRl
eHQ6OmdldG5Vbmlmb3JtaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGJ1ZgogfQogCiB2b2lkIENvbnRleHQ6OmdldG5Vbmlmb3JtaXZSb2J1c3QoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKQEAgLTc5NDUsNyArNzU3Niw3IEBAIHZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm1pdlJvYnVz
dChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0OjpnZXRuVW5pZm9y
bXVpdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKQpAQCAtNzk1Myw3ICs3NTg0LDcgQEAgdm9pZCBDb250ZXh0
OjpnZXRuVW5pZm9ybXVpdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICBVTklN
UExFTUVOVEVEKCk7CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0Ojppc0ZlbmNlTlYoRmVuY2VOVklE
IGZlbmNlKQorR0xib29sZWFuIENvbnRleHQ6OmlzRmVuY2VOVihGZW5jZU5WSUQgZmVuY2UpIGNv
bnN0CiB7CiAgICAgRmVuY2VOViAqZmVuY2VPYmplY3QgPSBnZXRGZW5jZU5WKGZlbmNlKTsKIApA
QCAtODAxMyw3ICs3NjQ0LDcgQEAgdm9pZCBDb250ZXh0OjpkZWxldGVNZW1vcnlPYmplY3RzKEdM
c2l6ZWkgbiwgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHMKICAgICB9CiB9CiAK
LUdMYm9vbGVhbiBDb250ZXh0Ojppc01lbW9yeU9iamVjdChNZW1vcnlPYmplY3RJRCBtZW1vcnlP
YmplY3QpCitHTGJvb2xlYW4gQ29udGV4dDo6aXNNZW1vcnlPYmplY3QoTWVtb3J5T2JqZWN0SUQg
bWVtb3J5T2JqZWN0KSBjb25zdAogewogICAgIGlmIChtZW1vcnlPYmplY3QudmFsdWUgPT0gMCkK
ICAgICB7CkBAIC04MDMxLDE2ICs3NjYyLDE4IEBAIHZvaWQgQ29udGV4dDo6Y3JlYXRlTWVtb3J5
T2JqZWN0cyhHTHNpemVpIG4sIE1lbW9yeU9iamVjdElEICptZW1vcnlPYmplY3RzKQogICAgIH0K
IH0KIAotdm9pZCBDb250ZXh0OjptZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihNZW1vcnlPYmplY3RJ
RCBtZW1vcnlPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcykKK3ZvaWQgQ29udGV4dDo6bWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYoTWVt
b3J5T2JqZWN0SUQgbWVtb3J5LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIE1lbW9yeU9iamVjdCAqbWVtb3J5T2JqZWN0ID0g
Z2V0TWVtb3J5T2JqZWN0KG1lbW9yeSk7CisgICAgQVNTRVJUKG1lbW9yeU9iamVjdCk7CisgICAg
QU5HTEVfQ09OVEVYVF9UUlkoU2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYodGhpcywgbWVtb3J5
T2JqZWN0LCBwbmFtZSwgcGFyYW1zKSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0TWVtb3J5T2Jq
ZWN0UGFyYW1ldGVyaXYoTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2
KE1lbW9yeU9iamVjdElEIG1lbW9yeSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBjb25zdCBNZW1vcnlPYmplY3QgKm1lbW9yeU9iamVj
dCA9IGdldE1lbW9yeU9iamVjdChtZW1vcnkpOworICAgIEFTU0VSVChtZW1vcnlPYmplY3QpOwor
ICAgIFF1ZXJ5TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYobWVtb3J5T2JqZWN0LCBwbmFtZSwgcGFy
YW1zKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp0ZXhTdG9yYWdlTWVtMkQoVGV4dHVyZVR5cGUgdGFy
Z2V0LApAQCAtODExMSw2ICs3NzQ0LDE2IEBAIHZvaWQgQ29udGV4dDo6aW1wb3J0TWVtb3J5RmQo
TWVtb3J5T2JqZWN0SUQgbWVtb3J5LCBHTHVpbnQ2NCBzaXplLCBIYW5kbGVUeXBlIGhhCiAgICAg
QU5HTEVfQ09OVEVYVF9UUlkobWVtb3J5T2JqZWN0LT5pbXBvcnRGZCh0aGlzLCBzaXplLCBoYW5k
bGVUeXBlLCBmZCkpOwogfQogCit2b2lkIENvbnRleHQ6OmltcG9ydE1lbW9yeVppcmNvbkhhbmRs
ZShNZW1vcnlPYmplY3RJRCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBNZW1vcnlPYmplY3QgKm1lbW9yeU9i
amVjdCA9IGdldE1lbW9yeU9iamVjdChtZW1vcnkpOworICAgIEFTU0VSVChtZW1vcnlPYmplY3Qg
IT0gbnVsbHB0cik7CisgICAgQU5HTEVfQ09OVEVYVF9UUlkobWVtb3J5T2JqZWN0LT5pbXBvcnRa
aXJjb25IYW5kbGUodGhpcywgc2l6ZSwgaGFuZGxlVHlwZSwgaGFuZGxlKSk7Cit9CisKIHZvaWQg
Q29udGV4dDo6Z2VuU2VtYXBob3JlcyhHTHNpemVpIG4sIFNlbWFwaG9yZUlEICpzZW1hcGhvcmVz
KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQpAQCAtODEyNyw3ICs3NzcwLDcg
QEAgdm9pZCBDb250ZXh0OjpkZWxldGVTZW1hcGhvcmVzKEdMc2l6ZWkgbiwgY29uc3QgU2VtYXBo
b3JlSUQgKnNlbWFwaG9yZXMpCiAgICAgfQogfQogCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNTZW1h
cGhvcmUoU2VtYXBob3JlSUQgc2VtYXBob3JlKQorR0xib29sZWFuIENvbnRleHQ6OmlzU2VtYXBo
b3JlKFNlbWFwaG9yZUlEIHNlbWFwaG9yZSkgY29uc3QKIHsKICAgICBpZiAoc2VtYXBob3JlLnZh
bHVlID09IDApCiAgICAgewpAQCAtODIwNiw2ICs3ODQ5LDE1IEBAIHZvaWQgQ29udGV4dDo6aW1w
b3J0U2VtYXBob3JlRmQoU2VtYXBob3JlSUQgc2VtYXBob3JlLCBIYW5kbGVUeXBlIGhhbmRsZVR5
cGUsIEdMCiAgICAgQU5HTEVfQ09OVEVYVF9UUlkoc2VtYXBob3JlT2JqZWN0LT5pbXBvcnRGZCh0
aGlzLCBoYW5kbGVUeXBlLCBmZCkpOwogfQogCit2b2lkIENvbnRleHQ6OmltcG9ydFNlbWFwaG9y
ZVppcmNvbkhhbmRsZShTZW1hcGhvcmVJRCBzZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIFNl
bWFwaG9yZSAqc2VtYXBob3JlT2JqZWN0ID0gZ2V0U2VtYXBob3JlKHNlbWFwaG9yZSk7CisgICAg
QVNTRVJUKHNlbWFwaG9yZU9iamVjdCAhPSBudWxscHRyKTsKKyAgICBBTkdMRV9DT05URVhUX1RS
WShzZW1hcGhvcmVPYmplY3QtPmltcG9ydFppcmNvbkhhbmRsZSh0aGlzLCBoYW5kbGVUeXBlLCBo
YW5kbGUpKTsKK30KKwogdm9pZCBDb250ZXh0OjplR0xJbWFnZVRhcmdldFRleHR1cmUyRChUZXh0
dXJlVHlwZSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCiB7CiAgICAgVGV4dHVyZSAqdGV4
dHVyZSAgICAgICAgPSBnZXRUZXh0dXJlQnlUeXBlKHRhcmdldCk7CkBAIC04MjU5LDYgKzc5MTEs
MzAgQEAgYm9vbCBDb250ZXh0OjpnZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSB0
YXJnZXQsCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobVN1cHBvcnRlZEV4dGVuc2lvbnMu
ZHJhd0J1ZmZlcnNJbmRleGVkQW55KCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkK
KyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9CTEVORF9TUkNfUkdCOgorICAgICAgICAg
ICAgY2FzZSBHTF9CTEVORF9TUkNfQUxQSEE6CisgICAgICAgICAgICBjYXNlIEdMX0JMRU5EX0RT
VF9SR0I6CisgICAgICAgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQToKKyAgICAgICAgICAg
IGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fUkdCOgorICAgICAgICAgICAgY2FzZSBHTF9CTEVORF9F
UVVBVElPTl9BTFBIQToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqdHlwZSAgICAg
ID0gR0xfSU5UOworICAgICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBHTF9DT0xP
Ul9XUklURU1BU0s6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnR5cGUgICAgICA9
IEdMX0JPT0w7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICBp
ZiAoZ2V0Q2xpZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAxKSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTg0MDcsNyArODA4Myw4IEBAIHZvaWQgQ29udGV4dDo6b25TdWJqZWN0
U3RhdGVDaGFuZ2UoYW5nbGU6OlN1YmplY3RJbmRleCBpbmRleCwgYW5nbGU6OlN1YmplY3RNZXNz
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAoaW5kZXggPCBrVGV4dHVyZU1heFN1
YmplY3RJbmRleCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSAh
PSBhbmdsZTo6U3ViamVjdE1lc3NhZ2U6OkNvbnRlbnRzQ2hhbmdlZCkKKyAgICAgICAgICAgICAg
ICBpZiAobWVzc2FnZSAhPSBhbmdsZTo6U3ViamVjdE1lc3NhZ2U6OkNvbnRlbnRzQ2hhbmdlZCAm
JgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICE9IGFuZ2xlOjpTdWJqZWN0TWVzc2FnZTo6
QmluZGluZ0NoYW5nZWQpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBt
U3RhdGUub25BY3RpdmVUZXh0dXJlU3RhdGVDaGFuZ2UodGhpcywgaW5kZXgpOwogICAgICAgICAg
ICAgICAgICAgICBtU3RhdGVDYWNoZS5vbkFjdGl2ZVRleHR1cmVDaGFuZ2UodGhpcyk7CkBAIC04
NjY3LDggKzgzNDQsOSBAQCB2b2lkIFN0YXRlQ2FjaGU6OnVwZGF0ZUFjdGl2ZUF0dHJpYnNNYXNr
KENvbnRleHQgKmNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBdHRyaWJ1
dGVzTWFzayBhY3RpdmVBdHRyaWJzID0gaXNHTEVTMSA/IGdsU3RhdGUuZ2xlczEoKS5nZXRBY3Rp
dmVBdHRyaWJ1dGVzTWFzaygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBnbFN0YXRlLmdldFByb2dyYW0oKS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFz
aygpOworICAgIEF0dHJpYnV0ZXNNYXNrIGFjdGl2ZUF0dHJpYnMgPQorICAgICAgICBpc0dMRVMx
ID8gZ2xTdGF0ZS5nbGVzMSgpLmdldEFjdGl2ZUF0dHJpYnV0ZXNNYXNrKCkKKyAgICAgICAgICAg
ICAgICA6IGdsU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS0+Z2V0QWN0aXZlQXR0cmliTG9j
YXRpb25zTWFzaygpOwogCiAgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyA9IGdsU3RhdGUuZ2V0
VmVydGV4QXJyYXkoKTsKICAgICBBU1NFUlQodmFvKTsKQEAgLTg3MDgsNyArODM4Niw3IEBAIHZv
aWQgU3RhdGVDYWNoZTo6dXBkYXRlVmVydGV4RWxlbWVudExpbWl0c0ltcGwoQ29udGV4dCAqY29u
dGV4dCkKIAogICAgICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nID0gdmVydGV4Qmlu
ZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CiAgICAgICAgIEFTU0VSVChjb250ZXh0LT5pc0dM
RVMxKCkgfHwKLSAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgp
LT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZlKGF0dHJpYnV0ZUluZGV4KSk7CisgICAgICAgICAgICAg
ICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxlKCktPmlzQXR0cmliTG9j
YXRpb25BY3RpdmUoYXR0cmlidXRlSW5kZXgpKTsKIAogICAgICAgICBHTGludDY0IGxpbWl0ID0g
YXR0cmliLmdldENhY2hlZEVsZW1lbnRMaW1pdCgpOwogICAgICAgICBpZiAoYmluZGluZy5nZXRE
aXZpc29yKCkgPiAwKQpAQCAtODczNCwxNCArODQxMiwxNCBAQCB2b2lkIFN0YXRlQ2FjaGU6OnVw
ZGF0ZUJhc2ljRHJhd0VsZW1lbnRzRXJyb3IoKQogICAgIG1DYWNoZWRCYXNpY0RyYXdFbGVtZW50
c0Vycm9yID0ga0ludmFsaWRQb2ludGVyOwogfQogCi1pbnRwdHJfdCBTdGF0ZUNhY2hlOjpnZXRC
YXNpY0RyYXdTdGF0ZXNFcnJvckltcGwoQ29udGV4dCAqY29udGV4dCkgY29uc3QKK2ludHB0cl90
IFN0YXRlQ2FjaGU6OmdldEJhc2ljRHJhd1N0YXRlc0Vycm9ySW1wbChjb25zdCBDb250ZXh0ICpj
b250ZXh0KSBjb25zdAogewogICAgIEFTU0VSVChtQ2FjaGVkQmFzaWNEcmF3U3RhdGVzRXJyb3Ig
PT0ga0ludmFsaWRQb2ludGVyKTsKICAgICBtQ2FjaGVkQmFzaWNEcmF3U3RhdGVzRXJyb3IgPSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihWYWxpZGF0ZURyYXdTdGF0ZXMoY29udGV4dCkpOwog
ICAgIHJldHVybiBtQ2FjaGVkQmFzaWNEcmF3U3RhdGVzRXJyb3I7CiB9CiAKLWludHB0cl90IFN0
YXRlQ2FjaGU6OmdldEJhc2ljRHJhd0VsZW1lbnRzRXJyb3JJbXBsKENvbnRleHQgKmNvbnRleHQp
IGNvbnN0CitpbnRwdHJfdCBTdGF0ZUNhY2hlOjpnZXRCYXNpY0RyYXdFbGVtZW50c0Vycm9ySW1w
bChjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25zdAogewogICAgIEFTU0VSVChtQ2FjaGVkQmFz
aWNEcmF3RWxlbWVudHNFcnJvciA9PSBrSW52YWxpZFBvaW50ZXIpOwogICAgIG1DYWNoZWRCYXNp
Y0RyYXdFbGVtZW50c0Vycm9yID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oVmFsaWRhdGVE
cmF3RWxlbWVudHNTdGF0ZXMoY29udGV4dCkpOwpAQCAtODg0MSw2ICs4NTE5LDExIEBAIHZvaWQg
U3RhdGVDYWNoZTo6b25Db2xvck1hc2tDaGFuZ2UoQ29udGV4dCAqY29udGV4dCkKICAgICB1cGRh
dGVCYXNpY0RyYXdTdGF0ZXNFcnJvcigpOwogfQogCit2b2lkIFN0YXRlQ2FjaGU6Om9uQmxlbmRG
dW5jSW5kZXhlZENoYW5nZShDb250ZXh0ICpjb250ZXh0KQoreworICAgIHVwZGF0ZUJhc2ljRHJh
d1N0YXRlc0Vycm9yKCk7Cit9CisKIHZvaWQgU3RhdGVDYWNoZTo6c2V0VmFsaWREcmF3TW9kZXMo
Ym9vbCBwb2ludHNPSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBs
aW5lc09LLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRyaXNPSywK
QEAgLTg4OTgsMTMgKzg1ODEsMTQgQEAgdm9pZCBTdGF0ZUNhY2hlOjp1cGRhdGVWYWxpZERyYXdN
b2RlcyhDb250ZXh0ICpjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFwcm9ncmFtIHx8ICFwcm9ncmFtLT5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpH
ZW9tZXRyeSkpCisgICAgY29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUgKnByb2dyYW1FeGVjdXRhYmxl
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIGlmICgh
cHJvZ3JhbUV4ZWN1dGFibGUgfHwgIXByb2dyYW1FeGVjdXRhYmxlLT5oYXNMaW5rZWRTaGFkZXJT
dGFnZShTaGFkZXJUeXBlOjpHZW9tZXRyeSkpCiAgICAgewogICAgICAgICBtQ2FjaGVkVmFsaWRE
cmF3TW9kZXMgPSBrVmFsaWRCYXNpY0RyYXdNb2RlczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEFTU0VSVChwcm9ncmFtICYmIHByb2dyYW0tPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNo
YWRlclR5cGU6Okdlb21ldHJ5KSk7CisgICAgQVNTRVJUKHByb2dyYW1FeGVjdXRhYmxlLT5oYXNM
aW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpHZW9tZXRyeSkpOwogICAgIFByaW1pdGl2ZU1v
ZGUgZ3NNb2RlID0gcHJvZ3JhbS0+Z2V0R2VvbWV0cnlTaGFkZXJJbnB1dFByaW1pdGl2ZVR5cGUo
KTsKIAogICAgIGJvb2wgcG9pbnRzT0sgID0gZ3NNb2RlID09IFByaW1pdGl2ZU1vZGU6OlBvaW50
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250
ZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5oCmlu
ZGV4IGM3MGRlMWRhODYyZTNmNDlhOGIyYTRiNTE5NTJjZDliNGZkYmIxNmEuLjIwMTAxMGY5ZjU1
NTVmYWE3OWNhYjQ4MGEzNGNhZjYzYmY1ZmZiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuaApAQCAtMTc0LDYgKzE3NCw3IEBAIGNsYXNzIFN0
YXRlQ2FjaGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAvLyAxMy4gb25Vbmlmb3Jt
QnVmZmVyU3RhdGVDaGFuZ2UuCiAgICAgLy8gMTQuIG9uQ29sb3JNYXNrQ2hhbmdlLgogICAgIC8v
IDE1LiBvbkJ1ZmZlckJpbmRpbmdDaGFuZ2UuCisgICAgLy8gMTYuIG9uQmxlbmRGdW5jSW5kZXhl
ZENoYW5nZS4KICAgICBib29sIGhhc0Jhc2ljRHJhd1N0YXRlc0Vycm9yKENvbnRleHQgKmNvbnRl
eHQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobUNhY2hlZEJhc2ljRHJhd1N0YXRlc0Vycm9y
ID09IDApCkBAIC0xODcsNyArMTg4LDcgQEAgY2xhc3MgU3RhdGVDYWNoZSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgICAgICByZXR1cm4gZ2V0QmFzaWNEcmF3U3RhdGVzRXJyb3JJbXBs
KGNvbnRleHQpICE9IDA7CiAgICAgfQogCi0gICAgaW50cHRyX3QgZ2V0QmFzaWNEcmF3U3RhdGVz
RXJyb3IoQ29udGV4dCAqY29udGV4dCkgY29uc3QKKyAgICBpbnRwdHJfdCBnZXRCYXNpY0RyYXdT
dGF0ZXNFcnJvcihjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKG1DYWNoZWRCYXNpY0RyYXdTdGF0ZXNFcnJvciAhPSBrSW52YWxpZFBvaW50ZXIpCiAgICAg
ICAgIHsKQEAgLTIwMSw3ICsyMDIsNyBAQCBjbGFzcyBTdGF0ZUNhY2hlIGZpbmFsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAgICAgLy8gMS4gb25BY3RpdmVUcmFuc2Zvcm1GZWVkYmFja0NoYW5nZS4K
ICAgICAvLyAyLiBvblZlcnRleEFycmF5QnVmZmVyU3RhdGVDaGFuZ2UuCiAgICAgLy8gMy4gb25C
dWZmZXJCaW5kaW5nQ2hhbmdlLgotICAgIGludHB0cl90IGdldEJhc2ljRHJhd0VsZW1lbnRzRXJy
b3IoQ29udGV4dCAqY29udGV4dCkgY29uc3QKKyAgICBpbnRwdHJfdCBnZXRCYXNpY0RyYXdFbGVt
ZW50c0Vycm9yKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAobUNhY2hlZEJhc2ljRHJhd0VsZW1lbnRzRXJyb3IgIT0ga0ludmFsaWRQb2ludGVyKQogICAg
ICAgICB7CkBAIC0yNzQsNiArMjc1LDcgQEAgY2xhc3MgU3RhdGVDYWNoZSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgIHZvaWQgb25Vbmlmb3JtQnVmZmVyU3RhdGVDaGFuZ2UoQ29udGV4
dCAqY29udGV4dCk7CiAgICAgdm9pZCBvbkNvbG9yTWFza0NoYW5nZShDb250ZXh0ICpjb250ZXh0
KTsKICAgICB2b2lkIG9uQnVmZmVyQmluZGluZ0NoYW5nZShDb250ZXh0ICpjb250ZXh0KTsKKyAg
ICB2b2lkIG9uQmxlbmRGdW5jSW5kZXhlZENoYW5nZShDb250ZXh0ICpjb250ZXh0KTsKIAogICBw
cml2YXRlOgogICAgIC8vIENhY2hlIHVwZGF0ZSBmdW5jdGlvbnMuCkBAIC0yOTEsOCArMjkzLDgg
QEAgY2xhc3MgU3RhdGVDYWNoZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgdm9p
ZCBzZXRWYWxpZERyYXdNb2Rlcyhib29sIHBvaW50c09LLCBib29sIGxpbmVzT0ssIGJvb2wgdHJp
c09LLCBib29sIGxpbmVBZGpPSywgYm9vbCB0cmlBZGpPSyk7CiAKLSAgICBpbnRwdHJfdCBnZXRC
YXNpY0RyYXdTdGF0ZXNFcnJvckltcGwoQ29udGV4dCAqY29udGV4dCkgY29uc3Q7Ci0gICAgaW50
cHRyX3QgZ2V0QmFzaWNEcmF3RWxlbWVudHNFcnJvckltcGwoQ29udGV4dCAqY29udGV4dCkgY29u
c3Q7CisgICAgaW50cHRyX3QgZ2V0QmFzaWNEcmF3U3RhdGVzRXJyb3JJbXBsKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpIGNvbnN0OworICAgIGludHB0cl90IGdldEJhc2ljRHJhd0VsZW1lbnRzRXJy
b3JJbXBsKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnRwdHJfdCBrSW52YWxpZFBvaW50ZXIgPSAxOwogCkBAIC0zMjQsNiArMzI2LDEwIEBA
IGNsYXNzIFN0YXRlQ2FjaGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgbUNh
Y2hlZEludGVnZXJWZXJ0ZXhBdHRyaWJUeXBlc1ZhbGlkYXRpb247CiB9OwogCit1c2luZyBWZXJ0
ZXhBcnJheU1hcCAgICAgICA9IFJlc291cmNlTWFwPFZlcnRleEFycmF5LCBWZXJ0ZXhBcnJheUlE
PjsKK3VzaW5nIFF1ZXJ5TWFwICAgICAgICAgICAgID0gUmVzb3VyY2VNYXA8UXVlcnksIFF1ZXJ5
SUQ+OwordXNpbmcgVHJhbnNmb3JtRmVlZGJhY2tNYXAgPSBSZXNvdXJjZU1hcDxUcmFuc2Zvcm1G
ZWVkYmFjaywgVHJhbnNmb3JtRmVlZGJhY2tJRD47CisKIGNsYXNzIENvbnRleHQgZmluYWwgOiBw
dWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBhbmds
ZTo6T2JzZXJ2ZXJJbnRlcmZhY2UKIHsKICAgcHVibGljOgpAQCAtMzY3LDE0ICszNzMsMTEgQEAg
Y2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6OkxhYmVsZWRPYmplY3QsIGFuZ2xlOjpO
b25Db3B5YWJsZSwgcHVibGljIGFuZ2wKICAgICB2b2lkIGRlbGV0ZU1lbW9yeU9iamVjdChNZW1v
cnlPYmplY3RJRCBtZW1vcnlPYmplY3QpOwogICAgIHZvaWQgZGVsZXRlU2VtYXBob3JlKFNlbWFw
aG9yZUlEIHNlbWFwaG9yZSk7CiAKLSAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAg
IGJvb2wgaXNQYXRoR2VuZXJhdGVkKFBhdGhJRCBwYXRoKSBjb25zdDsKLQogICAgIHZvaWQgYmlu
ZFJlYWRGcmFtZWJ1ZmZlcihGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVySGFuZGxlKTsKICAgICB2
b2lkIGJpbmREcmF3RnJhbWVidWZmZXIoRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlckhhbmRsZSk7
CiAKICAgICBCdWZmZXIgKmdldEJ1ZmZlcihCdWZmZXJJRCBoYW5kbGUpIGNvbnN0OwotICAgIEZl
bmNlTlYgKmdldEZlbmNlTlYoRmVuY2VOVklEIGhhbmRsZSk7CisgICAgRmVuY2VOViAqZ2V0RmVu
Y2VOVihGZW5jZU5WSUQgaGFuZGxlKSBjb25zdDsKICAgICBTeW5jICpnZXRTeW5jKEdMc3luYyBo
YW5kbGUpIGNvbnN0OwogICAgIEFOR0xFX0lOTElORSBUZXh0dXJlICpnZXRUZXh0dXJlKFRleHR1
cmVJRCBoYW5kbGUpIGNvbnN0CiAgICAgewpAQCAtMzg1LDcgKzM4OCw3IEBAIGNsYXNzIENvbnRl
eHQgZmluYWwgOiBwdWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUs
IHB1YmxpYyBhbmdsCiAgICAgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoUmVuZGVyYnVm
ZmVySUQgaGFuZGxlKSBjb25zdDsKICAgICBWZXJ0ZXhBcnJheSAqZ2V0VmVydGV4QXJyYXkoVmVy
dGV4QXJyYXlJRCBoYW5kbGUpIGNvbnN0OwogICAgIFNhbXBsZXIgKmdldFNhbXBsZXIoU2FtcGxl
cklEIGhhbmRsZSkgY29uc3Q7Ci0gICAgUXVlcnkgKmdldFF1ZXJ5KFF1ZXJ5SUQgaGFuZGxlLCBi
b29sIGNyZWF0ZSwgUXVlcnlUeXBlIHR5cGUpOworICAgIFF1ZXJ5ICpnZXRPckNyZWF0ZVF1ZXJ5
KFF1ZXJ5SUQgaGFuZGxlLCBRdWVyeVR5cGUgdHlwZSk7CiAgICAgUXVlcnkgKmdldFF1ZXJ5KFF1
ZXJ5SUQgaGFuZGxlKSBjb25zdDsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqZ2V0VHJhbnNmb3Jt
RmVlZGJhY2soVHJhbnNmb3JtRmVlZGJhY2tJRCBoYW5kbGUpIGNvbnN0OwogICAgIFByb2dyYW1Q
aXBlbGluZSAqZ2V0UHJvZ3JhbVBpcGVsaW5lKFByb2dyYW1QaXBlbGluZUlEIGhhbmRsZSkgY29u
c3Q7CkBAIC0zOTgsMTMgKzQwMSwxNSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVn
bDo6TGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgYW5nbAogCiAgICAg
Q29tcGlsZXIgKmdldENvbXBpbGVyKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVmVydGV4QXJyYXlH
ZW5lcmF0ZWQoVmVydGV4QXJyYXlJRCB2ZXJ0ZXhBcnJheSk7Ci0gICAgYm9vbCBpc1RyYW5zZm9y
bUZlZWRiYWNrR2VuZXJhdGVkKFRyYW5zZm9ybUZlZWRiYWNrSUQgdHJhbnNmb3JtRmVlZGJhY2sp
OworICAgIGJvb2wgaXNWZXJ0ZXhBcnJheUdlbmVyYXRlZChWZXJ0ZXhBcnJheUlEIHZlcnRleEFy
cmF5KSBjb25zdDsKKyAgICBib29sIGlzVHJhbnNmb3JtRmVlZGJhY2tHZW5lcmF0ZWQoVHJhbnNm
b3JtRmVlZGJhY2tJRCB0cmFuc2Zvcm1GZWVkYmFjaykgY29uc3Q7CiAKLSAgICB2b2lkIGdldEJv
b2xlYW52SW1wbChHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKTsKLSAgICB2b2lkIGdl
dEZsb2F0dkltcGwoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwotICAgIHZvaWQgZ2V0
SW50ZWdlcnZJbXBsKEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci0gICAgdm9pZCBnZXRJ
bnRlZ2VyNjR2SW1wbChHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7CisgICAgdm9pZCBn
ZXRCb29sZWFudkltcGwoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykgY29uc3Q7Cisg
ICAgdm9pZCBnZXRGbG9hdHZJbXBsKEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKSBjb25z
dDsKKyAgICB2b2lkIGdldEludGVnZXJ2SW1wbChHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
IGNvbnN0OworICAgIHZvaWQgZ2V0SW50ZWdlcjY0dkltcGwoR0xlbnVtIHBuYW1lLCBHTGludDY0
ICpwYXJhbXMpIGNvbnN0OworICAgIHZvaWQgZ2V0SW50ZWdlclZlcnRleEF0dHJpYkltcGwoR0xl
bnVtIHBuYW1lLCBHTGVudW0gYXR0cmlicG5hbWUsIEdMaW50ICpwYXJhbXMpIGNvbnN0OworICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliaXZJbXBsKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKSBjb25zdDsKIAogICAgIC8vIEZyYW1lYnVmZmVycyBhcmUgb3duZWQgYnkg
dGhlIENvbnRleHQsIHNvIHRoZXNlIG1ldGhvZHMgZG8gbm90IHBhc3MgdGhyb3VnaAogICAgIEZy
YW1lYnVmZmVySUQgY3JlYXRlRnJhbWVidWZmZXIoKTsKQEAgLTQ0OCw3ICs0NTMsNyBAQCBjbGFz
cyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVnbDo6TGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNv
cHlhYmxlLCBwdWJsaWMgYW5nbAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVu
Y3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGluZSk7CiAKLSAgICB2
b2lkIHZhbGlkYXRpb25FcnJvcihHTGVudW0gZXJyb3JDb2RlLCBjb25zdCBjaGFyICptZXNzYWdl
KTsKKyAgICB2b2lkIHZhbGlkYXRpb25FcnJvcihHTGVudW0gZXJyb3JDb2RlLCBjb25zdCBjaGFy
ICptZXNzYWdlKSBjb25zdDsKIAogICAgIHZvaWQgbWFya0NvbnRleHRMb3N0KEdyYXBoaWNzUmVz
ZXRTdGF0dXMgc3RhdHVzKTsKIApAQCAtNDY4LDggKzQ3Myw4IEBAIGNsYXNzIENvbnRleHQgZmlu
YWwgOiBwdWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUsIHB1Ymxp
YyBhbmdsCiAKICAgICBzaXplX3QgZ2V0RXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdDsKIAot
ICAgIGJvb2wgaXNFeHRlbnNpb25SZXF1ZXN0YWJsZShjb25zdCBjaGFyICpuYW1lKTsKLSAgICBi
b29sIGlzRXh0ZW5zaW9uRGlzYWJsYWJsZShjb25zdCBjaGFyICpuYW1lKTsKKyAgICBib29sIGlz
RXh0ZW5zaW9uUmVxdWVzdGFibGUoY29uc3QgY2hhciAqbmFtZSkgY29uc3Q7CisgICAgYm9vbCBp
c0V4dGVuc2lvbkRpc2FibGFibGUoY29uc3QgY2hhciAqbmFtZSkgY29uc3Q7CiAgICAgc2l6ZV90
IGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdDsKICAgICB2b2lkIHNl
dEV4dGVuc2lvbkVuYWJsZWQoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBlbmFibGVkKTsKICAgICB2
b2lkIHJlaW5pdGlhbGl6ZUFmdGVyRXh0ZW5zaW9uc0NoYW5nZWQoKTsKQEAgLTU1Myw2ICs1NTgs
NyBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVnbDo6TGFiZWxlZE9iamVjdCwgYW5n
bGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgYW5nbAogICAgIGJvb2wgaXNSZW5kZXJidWZmZXJHZW5l
cmF0ZWQoUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKSBjb25zdDsKICAgICBib29sIGlzRnJh
bWVidWZmZXJHZW5lcmF0ZWQoRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlcikgY29uc3Q7CiAgICAg
Ym9vbCBpc1Byb2dyYW1QaXBlbGluZUdlbmVyYXRlZChQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGlu
ZSkgY29uc3Q7CisgICAgYm9vbCBpc1F1ZXJ5R2VuZXJhdGVkKFF1ZXJ5SUQgcXVlcnkpIGNvbnN0
OwogCiAgICAgYm9vbCB1c2luZ0Rpc3BsYXlUZXh0dXJlU2hhcmVHcm91cCgpIGNvbnN0OwogCkBA
IC01ODQsNiArNTkwLDEzIEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgZWdsOjpMYWJl
bGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBhbmdsCiAKICAgICBhbmdsZTo6
RnJhbWVDYXB0dXJlICpnZXRGcmFtZUNhcHR1cmUoKSB7IHJldHVybiBtRnJhbWVDYXB0dXJlLmdl
dCgpOyB9CiAKKyAgICBjb25zdCBWZXJ0ZXhBcnJheU1hcCAmZ2V0VmVydGV4QXJyYXlzRm9yQ2Fw
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBcnJheU1hcDsgfQorICAgIGNvbnN0IFF1ZXJ5
TWFwICZnZXRRdWVyaWVzRm9yQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1RdWVyeU1hcDsgfQor
ICAgIGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrTWFwICZnZXRUcmFuc2Zvcm1GZWVkYmFja3NGb3JD
YXB0dXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtVHJhbnNmb3JtRmVlZGJhY2tN
YXA7CisgICAgfQorCiAgICAgdm9pZCBvblBvc3RTd2FwKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToK
QEAgLTYwMiw3ICs2MTUsNiBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVnbDo6TGFi
ZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgYW5nbAogICAgIGFuZ2xlOjpS
ZXN1bHQgc3luY1N0YXRlRm9yUmVhZFBpeGVscygpOwogICAgIGFuZ2xlOjpSZXN1bHQgc3luY1N0
YXRlRm9yVGV4SW1hZ2UoKTsKICAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZUZvckJsaXQoKTsK
LSAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKTsKIAogICAgIFZl
cnRleEFycmF5ICpjaGVja1ZlcnRleEFycmF5QWxsb2NhdGlvbihWZXJ0ZXhBcnJheUlEIHZlcnRl
eEFycmF5SGFuZGxlKTsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY2hlY2tUcmFuc2Zvcm1GZWVk
YmFja0FsbG9jYXRpb24oVHJhbnNmb3JtRmVlZGJhY2tJRCB0cmFuc2Zvcm1GZWVkYmFjayk7CkBA
IC02MTgsOSArNjMwLDYgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6OkxhYmVs
ZWRPYmplY3QsIGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIGFuZ2wKICAgICB2b2lkIGRldGFj
aFNhbXBsZXIoU2FtcGxlcklEIHNhbXBsZXIpOwogICAgIHZvaWQgZGV0YWNoUHJvZ3JhbVBpcGVs
aW5lKFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lKTsKIAotICAgIC8vIEEgc21hbGwgaGVscGVy
IG1ldGhvZCB0byBmYWNpbGl0YXRlIHVzaW5nIHRoZSBBTkdMRV9DT05URVhUX1RSWSBtYWNyby4K
LSAgICB2b2lkIHRyeUdlblBhdGhzKEdMc2l6ZWkgcmFuZ2UsIFBhdGhJRCAqY3JlYXRlZE91dCk7
Ci0KICAgICBlZ2w6OkVycm9yIHNldERlZmF1bHRGcmFtZWJ1ZmZlcihlZ2w6OlN1cmZhY2UgKmRy
YXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKTsKICAgICBlZ2w6OkVycm9yIHVu
c2V0RGVmYXVsdEZyYW1lYnVmZmVyKCk7CiAKQEAgLTYzNSw3ICs2NDQsMTAgQEAgY2xhc3MgQ29u
dGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6OkxhYmVsZWRPYmplY3QsIGFuZ2xlOjpOb25Db3B5YWJs
ZSwgcHVibGljIGFuZ2wKICAgICBnbDo6TGFiZWxlZE9iamVjdCAqZ2V0TGFiZWxlZE9iamVjdChH
TGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUpIGNvbnN0OwogICAgIGdsOjpMYWJlbGVkT2Jq
ZWN0ICpnZXRMYWJlbGVkT2JqZWN0RnJvbVB0cihjb25zdCB2b2lkICpwdHIpIGNvbnN0OwogCi0g
ICAgdm9pZCBzZXRVbmlmb3JtMWlJbXBsKFByb2dyYW0gKnByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7CisgICAgdm9pZCBzZXRVbmlmb3JtMWlJ
bXBsKFByb2dyYW0gKnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnYpOwogCiAgICAgU3Rh
dGUgbVN0YXRlOwogICAgIGJvb2wgbVNoYXJlZDsKQEAgLTY2NiwxMyArNjc4LDEzIEBAIGNsYXNz
IENvbnRleHQgZmluYWwgOiBwdWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29w
eWFibGUsIHB1YmxpYyBhbmdsCiAgICAgUmVzb3VyY2VNYXA8RmVuY2VOViwgRmVuY2VOVklEPiBt
RmVuY2VOVk1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbUZlbmNlTlZIYW5kbGVBbGxvY2F0b3I7
CiAKLSAgICBSZXNvdXJjZU1hcDxRdWVyeSwgUXVlcnlJRD4gbVF1ZXJ5TWFwOworICAgIFF1ZXJ5
TWFwIG1RdWVyeU1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbVF1ZXJ5SGFuZGxlQWxsb2NhdG9y
OwogCi0gICAgUmVzb3VyY2VNYXA8VmVydGV4QXJyYXksIFZlcnRleEFycmF5SUQ+IG1WZXJ0ZXhB
cnJheU1hcDsKKyAgICBWZXJ0ZXhBcnJheU1hcCBtVmVydGV4QXJyYXlNYXA7CiAgICAgSGFuZGxl
QWxsb2NhdG9yIG1WZXJ0ZXhBcnJheUhhbmRsZUFsbG9jYXRvcjsKIAotICAgIFJlc291cmNlTWFw
PFRyYW5zZm9ybUZlZWRiYWNrLCBUcmFuc2Zvcm1GZWVkYmFja0lEPiBtVHJhbnNmb3JtRmVlZGJh
Y2tNYXA7CisgICAgVHJhbnNmb3JtRmVlZGJhY2tNYXAgbVRyYW5zZm9ybUZlZWRiYWNrTWFwOwog
ICAgIEhhbmRsZUFsbG9jYXRvciBtVHJhbnNmb3JtRmVlZGJhY2tIYW5kbGVBbGxvY2F0b3I7CiAK
ICAgICBjb25zdCBjaGFyICptVmVyc2lvblN0cmluZzsKQEAgLTcwNCw3ICs3MTYsNiBAQCBjbGFz
cyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVnbDo6TGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNv
cHlhYmxlLCBwdWJsaWMgYW5nbAogICAgIE1lbW9yeVByb2dyYW1DYWNoZSAqbU1lbW9yeVByb2dy
YW1DYWNoZTsKIAogICAgIFN0YXRlOjpEaXJ0eU9iamVjdHMgbURyYXdEaXJ0eU9iamVjdHM7Ci0g
ICAgU3RhdGU6OkRpcnR5T2JqZWN0cyBtUGF0aE9wZXJhdGlvbkRpcnR5T2JqZWN0czsKIAogICAg
IFN0YXRlQ2FjaGUgbVN0YXRlQ2FjaGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsLmNwcAppbmRleCA4N2JkNzMyNzg2ODI0YjM1ZDI2
NjQ3NzczMWEwMzdmNWMyZTBmNjhlLi4xZGM1MDk5ZTlhZDAwYWFjOTRkNTlmNGVkNGRiZGM4YmFk
YmMyMzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Q29udGV4dF9nbC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0NvbnRleHRfZ2wuY3BwCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIENvbnRleHQ6OmluaXRO
YW1lcygpCiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNM
aXN0KEdMdWludCBsaXN0KQorR0xib29sZWFuIENvbnRleHQ6OmlzTGlzdChHTHVpbnQgbGlzdCkg
Y29uc3QKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI4
Myw3ICsyMjgzLDcgQEAgdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtU3Vicm91dGluZXVpdihHTGVu
dW0gc2hhZGVydHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMdWludAogICAgIFVOSU1QTEVNRU5URUQo
KTsKIH0KIAotdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRV
bmlmb3JtZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwgR0xkb3VibGUgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CkBAIC0yMjkz
LDQ3ICsyMjkzLDQ3IEBAIHZvaWQgQ29udGV4dDo6cGF0Y2hQYXJhbWV0ZXJmdihHTGVudW0gcG5h
bWUsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZv
aWQgQ29udGV4dDo6dW5pZm9ybTFkKEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4KQordm9pZCBD
b250ZXh0Ojp1bmlmb3JtMWQoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGRvdWJsZSB4KQog
ewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtMWR2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCit2b2lk
IENvbnRleHQ6OnVuaWZvcm0xZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQog
Ci12b2lkIENvbnRleHQ6OnVuaWZvcm0yZChHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xk
b3VibGUgeSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTJkKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAK
LXZvaWQgQ29udGV4dDo6dW5pZm9ybTJkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKQordm9pZCBDb250ZXh0Ojp1bmlmb3JtMmR2KFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKQog
ewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtM2QoR0xp
bnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCit2b2lkIENv
bnRleHQ6OnVuaWZvcm0zZChVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZG91YmxlIHgsIEdM
ZG91YmxlIHksIEdMZG91YmxlIHopCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lk
IENvbnRleHQ6OnVuaWZvcm0zZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZG91YmxlICp2YWx1ZSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTNkdihVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKICAg
ICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTRkKEdMaW50IGxv
Y2F0aW9uLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KQor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtNGQoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGRvdWJs
ZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KQogewogICAgIFVOSU1QTEVN
RU5URUQoKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtNGR2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCit2b2lkIENvbnRleHQ6OnVuaWZv
cm00ZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6
OnVuaWZvcm1NYXRyaXgyZHYoR0xpbnQgbG9jYXRpb24sCit2b2lkIENvbnRleHQ6OnVuaWZvcm1N
YXRyaXgyZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzQxLDcgKzIzNDEsNyBAQCB2b2lkIENvbnRleHQ6OnVu
aWZvcm1NYXRyaXgyZHYoR0xpbnQgbG9jYXRpb24sCiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQog
Ci12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNkdihHTGludCBsb2NhdGlvbiwKK3ZvaWQg
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2R2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjM0OSw3ICsy
MzQ5LDcgQEAgdm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4MngzZHYoR0xpbnQgbG9jYXRpb24s
CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgy
eDRkdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGR2KFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xk
b3VibGUgKnZhbHVlKQpAQCAtMjM1Nyw3ICsyMzU3LDcgQEAgdm9pZCBDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4Mng0ZHYoR0xpbnQgbG9jYXRpb24sCiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12
b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZHYoR0xpbnQgbG9jYXRpb24sCit2b2lkIENvbnRl
eHQ6OnVuaWZvcm1NYXRyaXgzZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzY1LDcgKzIzNjUsNyBAQCB2b2lk
IENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZHYoR0xpbnQgbG9jYXRpb24sCiAgICAgVU5JTVBMRU1F
TlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDJkdihHTGludCBsb2Nh
dGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4MmR2KFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpA
QCAtMjM3Myw3ICsyMzczLDcgQEAgdm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZHYoR0xp
bnQgbG9jYXRpb24sCiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6OnVu
aWZvcm1NYXRyaXgzeDRkdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDN4NGR2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjM4MSw3ICsyMzgxLDcgQEAgdm9pZCBDb250
ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZHYoR0xpbnQgbG9jYXRpb24sCiAgICAgVU5JTVBMRU1FTlRF
RCgpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZHYoR0xpbnQgbG9jYXRpb24s
Cit2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzg5LDcgKzIz
ODksNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZHYoR0xpbnQgbG9jYXRpb24sCiAg
ICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJk
dihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmR2KFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3Vi
bGUgKnZhbHVlKQpAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgdm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0
cml4NHgyZHYoR0xpbnQgbG9jYXRpb24sCiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lk
IENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDNkdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDR4M2R2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjQzNSwyNiArMjQzNSwy
OSBAQCB2b2lkIENvbnRleHQ6OmdldFZlcnRleEF0dHJpYkxkdihHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcykKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZv
aWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xZChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMZG91YmxlIHYwKQordm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTFk
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZG91
YmxlIHYwKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9n
cmFtVW5pZm9ybTFkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9p
ZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xkb3VibGUgdjAsIEdMZG91YmxlIHYxKQordm9pZCBDb250ZXh0Ojpwcm9n
cmFtVW5pZm9ybTJkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGRvdWJsZSB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSB2MSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgQ29udGV4
dDo6cHJvZ3JhbVVuaWZvcm0yZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKQEAgLTI0NjIsNyArMjQ2NSw3IEBAIHZv
aWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9
CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zZChTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgdjIpCkBAIC0yNDcxLDcgKzI0NzQsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dy
YW1Vbmlmb3JtM2QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm0zZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKQEAgLTI0NzksNyArMjQ4Miw3IEBAIHZvaWQg
Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAK
IHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00ZChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xkb3VibGUgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xkb3VibGUgdjIsCkBAIC0yNDg5LDcgKzI0OTIsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1V
bmlmb3JtNGQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJv
Z3JhbVVuaWZvcm00ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKQEAgLTI0OTcsNyArMjUwMCw3IEBAIHZvaWQgQ29u
dGV4dDo6cHJvZ3JhbVVuaWZvcm00ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZv
aWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZG91YmxlICp2YWx1ZSkKQEAgLTI1MDYsNyArMjUwOSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29u
dGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTI1MTUsNyArMjUxOCw3IEBAIHZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAog
dm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjUyNCw3ICsyNTI3LDcgQEAgdm9pZCBD
b250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yNTMzLDcgKzI1MzYsNyBAQCB2b2lkIENvbnRl
eHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQog
CiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZHYoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yNTQyLDcgKzI1NDUsNyBAQCB2b2lk
IENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTI1NTEsNyArMjU1NCw3
IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjU2MCw3ICsyNTYzLDcgQEAg
dm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjU2OSw3ICsyNTcy
LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4NHgz
ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0zMzY4
LDcgKzMzNzEsNyBAQCB2b2lkIENvbnRleHQ6OmdldG5UZXhJbWFnZShHTGVudW0gdGFyZ2V0LAog
fQogCiB2b2lkIENvbnRleHQ6OmdldG5Vbmlmb3JtZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSAqcGFyYW1zKQogewpAQCAtMzM3Niw3ICszMzc5LDcgQEAgdm9pZCBDb250
ZXh0OjpnZXRuVW5pZm9ybWR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENv
bnRleHQ6OmdldG5Vbmlmb3JtdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0NvbnRleHRfZ2xfMV8wX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzFfMF9hdXRvZ2VuLmgKaW5kZXggNWQ4MDNkYzEy
NTc4ODBiNzhmMTRhNjA5YzM5MDJiYjM1ZmIxMmQxOC4uODcwN2JlZjZlMWI5MWYxNDg4ODFmODYx
Nzk5MTRjMjc4ZTk3NDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0NvbnRleHRfZ2xfMV8wX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF8xXzBfYXV0b2dlbi5oCkBAIC0xMDIsNyAr
MTAyLDcgQEAKICAgICB2b2lkIGluZGV4cyhHTHNob3J0IGMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICB2b2lkIGluZGV4c3YoY29uc3QgR0xzaG9ydCAqYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGluaXRO
YW1lcygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNMaXN0KEdMdWlu
dCBsaXN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNMaXN0KEdMdWludCBsaXN0KSBjb25z
dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICB2b2lkIGxpZ2h0TW9kZWxpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2
b2lkIGxpZ2h0TW9kZWxpdihHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGxpZ2h0aShH
TGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfMF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzBfYXV0b2dlbi5oCmluZGV4
IDEyYmI5NGQ5MzU0NzkyYzU2ZmVhYmJlNzBkZWI3NmUxNGE5OTNiZTYuLjgwZmExN2I5OGFhZGVk
MWI3MDg4ZTFiM2EzOGI5Mjk3ZTU3MTIwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfMF9hdXRvZ2VuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfNF8wX2F1dG9nZW4uaApA
QCAtMzAsMzMgKzMwLDM1IEBACiAgICAgR0xpbnQgZ2V0U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlv
bihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xlbnVtIHNoYWRlcnR5cGUsICAgICAg
ICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lk
IGdldFVuaWZvcm1TdWJyb3V0aW5ldWl2KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGludCBsb2NhdGlv
biwgR0x1aW50ICpwYXJhbXMpOyAgICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRVbmlmb3JtZHYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSAq
cGFyYW1zKTsgICAgICAgICAgXAorICAgIHZvaWQgZ2V0VW5pZm9ybWR2KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSAqcGFyYW1zKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9p
ZCBwYXRjaFBhcmFtZXRlcmZ2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTFkKEdM
aW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0xZHYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMmQoR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdM
ZG91YmxlIHkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZv
aWQgdW5pZm9ybTJkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3Vi
bGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0zZChH
TGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7ICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtM2R2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTRkKEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsgICAgICAgICAgICAgIFwKLSAgICB2
b2lkIHVuaWZvcm00ZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91
YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0
cml4MmR2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTFkKFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgR0xkb3VibGUgeCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0xZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICBcCisgICAg
dm9pZCB1bmlmb3JtMmQoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGRvdWJsZSB4
LCBHTGRvdWJsZSB5KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTJk
dihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZG91YmxlICp2YWx1ZSk7ICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0zZChVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOyAg
ICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtM2R2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgXAorICAg
IHZvaWQgdW5pZm9ybTRkKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xkb3VibGUg
eCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSB3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtNGR2KFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVl
KTsgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJkdihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgIFwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3Jt
TWF0cml4MngzZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2R2KFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRy
YW5zcG9zZSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJ4NGR2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2R2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNkdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
IEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZHYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAg
ICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmR2KFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlm
b3JtTWF0cml4M3g0ZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGR2
KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs
ZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4NGR2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDRkdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZHYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAg
XAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4MmR2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgz
ZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAg
ICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2R2KFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwg
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCB1
bmlmb3JtU3Vicm91dGluZXN1aXYoR0xlbnVtIHNoYWRlcnR5cGUsIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMdWludCAqaW5kaWNlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfMV9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzFfYXV0b2dlbi5oCmluZGV4IDFm
OTk0MGZhODg4OTM2MDkyOTJkMGZlZmUyY2Y3OTZmZTNlZWI2MTcuLjBjY2ExYzAwNDU4YTY4MmU0
MjFlZDA4NzEwMDlhMThhNTZhNDE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfMV9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfNF8xX2F1dG9nZW4uaApAQCAt
MTAsNjAgKzEwLDYxIEBACiAjaWZuZGVmIEFOR0xFX0NPTlRFWFRfR0xfNF8xX0FVVE9HRU5fSF8K
ICNkZWZpbmUgQU5HTEVfQ09OVEVYVF9HTF80XzFfQVVUT0dFTl9IXwogCi0jZGVmaW5lIEFOR0xF
X0dMXzRfMV9DT05URVhUX0FQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBkZXB0aFJhbmdlQXJyYXl2
KEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnYpOyAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBkZXB0aFJhbmdlSW5kZXhlZChHTHVpbnQgaW5k
ZXgsIEdMZG91YmxlIG4sIEdMZG91YmxlIGYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgdm9pZCBnZXREb3VibGVpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4
LCBHTGRvdWJsZSAqZGF0YSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCBnZXRGbG9hdGlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKmRh
dGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRWZXJ0
ZXhBdHRyaWJMZHYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMp
OyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFkKFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgdjAp
OyAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFkdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICAgICAg
ICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCBwcm9ncmFtVW5pZm9ybTJkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBs
b2NhdGlvbiwgR0xkb3VibGUgdjAsICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlIHYxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJkdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgdjAsIEdMZG91YmxlIHYxLCBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZG91YmxlIHYyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9y
bTNkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRkKFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgdjAsIEdMZG91YmxlIHYxLCBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYyLCBHTGRvdWJsZSB2Myk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9n
cmFtVW5pZm9ybTRkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJkdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5p
Zm9ybU1hdHJpeDN4MmR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGR2KFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBw
cm9ncmFtVW5pZm9ybU1hdHJpeDRkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91Ymxl
ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzY2lzc29yQXJyYXl2KEdM
dWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzY2lzc29ySW5kZXhlZChHTHVpbnQgaW5kZXgs
IEdMaW50IGxlZnQsIEdMaW50IGJvdHRvbSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OyAgICBcCi0gICAgdm9pZCBzY2lzc29ySW5kZXhlZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGlu
dCAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJMMWQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJMMWR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMMmQoR0x1
aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMMmR2KEdMdWludCBpbmRleCwg
Y29uc3QgR0xkb3VibGUgKnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMM2QoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJMM2R2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJMNGQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBH
TGRvdWJsZSB3KTsgICAgICAgICAgICBcCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMNGR2KEdMdWlu
dCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMUG9pbnRlcihHTHVpbnQgaW5kZXgs
IEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgICAgICAgICAgICAgICBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB2
aWV3cG9ydEFycmF5dihHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQg
KnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB2aWV3cG9ydEluZGV4
ZWRmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgdywgR0xmbG9h
dCBoKTsgICAgICAgICAgICAgICBcCisjZGVmaW5lIEFOR0xFX0dMXzRfMV9DT05URVhUX0FQSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB2b2lkIGRlcHRoUmFuZ2VBcnJheXYoR0x1aW50IGZpcnN0LCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHZvaWQgZGVwdGhSYW5nZUluZGV4ZWQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSBuLCBHTGRvdWJs
ZSBmKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXREb3Vi
bGVpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSAqZGF0YSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIGdldEZsb2F0aV92KEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqZGF0YSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliTGR2KEdMdWludCBpbmRleCwg
R0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdjApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0x
ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlmb3JtMmQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MCwgR0xkb3VibGUgdjEpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5p
Zm9ybTJkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zZChTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYwLCBHTGRvdWJsZSB2MSwgR0xkb3Vi
bGUgdjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHByb2dy
YW1Vbmlmb3JtM2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRkKFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjAsIEdMZG91YmxlIHYxLCBH
TGRvdWJsZSB2MiwgR0xkb3VibGUgdjMpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQg
cHJvZ3JhbVVuaWZvcm00ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICBcCisgICAg
dm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0xkb3VibGUgKnZhbHVlKTsgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDRkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgIFwK
KyAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1h
dHJpeDN4MmR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsg
ICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlm
b3JtTWF0cml4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVl
KTsgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgXAorICAgIHZvaWQgcHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDNkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91Ymxl
ICp2YWx1ZSk7ICAgIFwKKyAgICB2b2lkIHNjaXNzb3JBcnJheXYoR0x1aW50IGZpcnN0LCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIHZvaWQgc2Npc3NvckluZGV4ZWQoR0x1aW50IGluZGV4LCBHTGludCBsZWZ0LCBHTGlu
dCBib3R0b20sIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsgICBcCisgICAgdm9pZCBz
Y2lzc29ySW5kZXhlZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHZlcnRleEF0dHJpYkwx
ZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdmVydGV4QXR0cmliTDFkdihHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZG91YmxlICp2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMMmQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4
LCBHTGRvdWJsZSB5KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2
b2lkIHZlcnRleEF0dHJpYkwyZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdmVydGV4QXR0
cmliTDNkKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMM2R2KEdMdWlu
dCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB2b2lkIHZlcnRleEF0dHJpYkw0ZChHTHVpbnQgaW5kZXgsIEdMZG91
YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOyAgICAgICAgICAgXAor
ICAgIHZvaWQgdmVydGV4QXR0cmliTDRkdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJMUG9pbnRlcihHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdmlld3BvcnRBcnJheXYoR0x1aW50IGZpcnN0LCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdm9pZCB2aWV3cG9ydEluZGV4ZWRmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgdywgR0xmbG9hdCBoKTsgICAgICAgICAgICAgIFwKICAgICB2b2lk
IHZpZXdwb3J0SW5kZXhlZGZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CiAKICNl
bmRpZiAgLy8gQU5HTEVfQ09OVEVYVF9BUElfNF8xX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfNV9hdXRvZ2Vu
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzVf
YXV0b2dlbi5oCmluZGV4IGQ4YzJiNzg5ZmQ5OGFjYzQ0MGE1MzE0ZjBmMjNhZDQxN2JlNDgwNzku
LmE1ODJjNDM2YjJkODM2ZWFjMWVmM2M3NWU5ZjQ5NmI4NGVkOTM2YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfNV9hdXRvZ2Vu
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xf
NF81X2F1dG9nZW4uaApAQCAtMTIyLDggKzEyMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKnJvdywgR0xzaXplaSBjb2x1bW5CdWZTaXplLCB2b2lkICpjb2x1bW4sIHZv
aWQgKnNwYW4pOyAgICAgICAgICBcCiAgICAgdm9pZCBnZXRuVGV4SW1hZ2UoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNp
emUsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBnZXRuVW5pZm9ybWR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXRuVW5pZm9ybWR2KFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xkb3VibGUgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgdm9pZCBpbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRhdGEoRnJhbWVidWZm
ZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgICBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2ht
ZW50cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBpbnZhbGlk
YXRlTmFtZWRGcmFtZWJ1ZmZlclN1YkRhdGEoRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tl
ZCwgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzFfMC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzFfMC5jcHAKaW5kZXggYzY3ZTZl
ZTc1MTMyMGQxOTZkYmI4ZDMyY2Y2NTAzOWYyMWEwYTJkMC4uNGU5OWY4MjFhNzJlNDcwMGFjNzM4
MmEyMDBjYjRhNjFkNTdkODg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18xXzAuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfMV8wLmNwcApAQCAtNDgsMTIgKzQ4LDEz
IEBAIHZvaWQgQ29udGV4dDo6YWxwaGFGdW5jeChBbHBoYVRlc3RGdW5jIGZ1bmMsIEdMZml4ZWQg
cmVmKQogCiB2b2lkIENvbnRleHQ6OmNsZWFyQ29sb3J4KEdMZml4ZWQgcmVkLCBHTGZpeGVkIGdy
ZWVuLCBHTGZpeGVkIGJsdWUsIEdMZml4ZWQgYWxwaGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIG1TdGF0ZS5zZXRDb2xvckNsZWFyVmFsdWUoQ29udmVydEZpeGVkVG9GbG9hdChyZWQp
LCBDb252ZXJ0Rml4ZWRUb0Zsb2F0KGdyZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvbnZlcnRGaXhlZFRvRmxvYXQoYmx1ZSksIENvbnZlcnRGaXhlZFRvRmxvYXQoYWxwaGEp
KTsKIH0KIAogdm9pZCBDb250ZXh0OjpjbGVhckRlcHRoeChHTGZpeGVkIGRlcHRoKQogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0RGVwdGhDbGVhclZhbHVlKGNsYW1wMDEo
Q29udmVydEZpeGVkVG9GbG9hdChkZXB0aCkpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpjbGllbnRB
Y3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKQpAQCAtMTA1LDcgKzEwNiw3IEBAIHZvaWQgQ29u
dGV4dDo6Y29sb3JQb2ludGVyKEdMaW50IHNpemUsIFZlcnRleEF0dHJpYlR5cGUgdHlwZSwgR0xz
aXplaSBzdHJpZGUsIGNvCiAKIHZvaWQgQ29udGV4dDo6ZGVwdGhSYW5nZXgoR0xmaXhlZCBuLCBH
TGZpeGVkIGYpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG1TdGF0ZS5zZXREZXB0aFJh
bmdlKGNsYW1wMDEoQ29udmVydEZpeGVkVG9GbG9hdChuKSksIGNsYW1wMDEoQ29udmVydEZpeGVk
VG9GbG9hdChmKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmRpc2FibGVDbGllbnRTdGF0ZShDbGll
bnRWZXJ0ZXhBcnJheVR5cGUgY2xpZW50U3RhdGUpCkBAIC0xOTYsNyArMTk3LDE4IEBAIHZvaWQg
Q29udGV4dDo6Z2V0Q2xpcFBsYW5leChHTGVudW0gcGxhbmUsIEdMZml4ZWQgKmVxdWF0aW9uKQog
CiB2b2lkIENvbnRleHQ6OmdldEZpeGVkdihHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgdW5z
aWduZWQgaW50IG51bVBhcmFtcyA9IDA7CisKKyAgICBnZXRRdWVyeVBhcmFtZXRlckluZm8ocG5h
bWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKKworICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+
IHBhcmFtc2YobnVtUGFyYW1zLCAwKTsKKyAgICBDYXN0U3RhdGVWYWx1ZXModGhpcywgbmF0aXZl
VHlwZSwgcG5hbWUsIG51bVBhcmFtcywgcGFyYW1zZi5kYXRhKCkpOworCisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7IGkrKykKKyAgICB7CisgICAgICAgIHBhcmFt
c1tpXSA9IENvbnZlcnRGbG9hdFRvRml4ZWQocGFyYW1zZltpXSk7CisgICAgfQogfQogCiB2b2lk
IENvbnRleHQ6OmdldExpZ2h0ZnYoR0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwg
R0xmbG9hdCAqcGFyYW1zKQpAQCAtMjUyLDcgKzI2NCw4IEBAIHZvaWQgQ29udGV4dDo6Z2V0VGV4
RW52eHYoVGV4dHVyZUVudlRhcmdldCB0YXJnZXQsIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWUs
IEdMCiAKIHZvaWQgQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyeHYoVGV4dHVyZVR5cGUgdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgY29uc3QgVGV4dHVyZSAqY29uc3QgdGV4dHVyZSA9IGdldFRleHR1cmVCeVR5cGUodGFy
Z2V0KTsKKyAgICBRdWVyeVRleFBhcmFtZXRlcnh2KHRoaXMsIHRleHR1cmUsIHBuYW1lLCBwYXJh
bXMpOwogfQogCiB2b2lkIENvbnRleHQ6OmxpZ2h0TW9kZWxmKEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSkKQEAgLTMxMSw3ICszMjQsNyBAQCB2b2lkIENvbnRleHQ6OmxpZ2h0eHYoR0xlbnVt
IGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogCiB2
b2lkIENvbnRleHQ6OmxpbmVXaWR0aHgoR0xmaXhlZCB3aWR0aCkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgbVN0YXRlLnNldExpbmVXaWR0aChDb252ZXJ0Rml4ZWRUb0Zsb2F0KHdpZHRo
KSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6bG9hZElkZW50aXR5KCkKQEAgLTQ2Myw3ICs0NzYsNyBA
QCB2b2lkIENvbnRleHQ6OnBvaW50U2l6ZXgoR0xmaXhlZCBzaXplKQogCiB2b2lkIENvbnRleHQ6
OnBvbHlnb25PZmZzZXR4KEdMZml4ZWQgZmFjdG9yLCBHTGZpeGVkIHVuaXRzKQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0UG9seWdvbk9mZnNldFBhcmFtcyhDb252ZXJ0
Rml4ZWRUb0Zsb2F0KGZhY3RvciksIENvbnZlcnRGaXhlZFRvRmxvYXQodW5pdHMpKTsKIH0KIAog
dm9pZCBDb250ZXh0Ojpwb3BNYXRyaXgoKQpAQCAtNDkwLDcgKzUwMyw4IEBAIHZvaWQgQ29udGV4
dDo6cm90YXRleChHTGZpeGVkIGFuZ2xlLCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6
KQogCiB2b2lkIENvbnRleHQ6OnNhbXBsZUNvdmVyYWdleChHTGNsYW1weCB2YWx1ZSwgR0xib29s
ZWFuIGludmVydCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgR0xjbGFtcGYgdmFsdWVm
ID0gQ29udmVydEZpeGVkVG9GbG9hdCh2YWx1ZSk7CisgICAgbVN0YXRlLnNldFNhbXBsZUNvdmVy
YWdlUGFyYW1zKGNsYW1wMDEodmFsdWVmKSwgQ29udmVydFRvQm9vbChpbnZlcnQpKTsKIH0KIAog
dm9pZCBDb250ZXh0OjpzY2FsZWYoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKQEAgLTU1NSwx
MiArNTY5LDE0IEBAIHZvaWQgQ29udGV4dDo6dGV4RW52eHYoVGV4dHVyZUVudlRhcmdldCB0YXJn
ZXQsIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWUsIGNvbnN0CiAKIHZvaWQgQ29udGV4dDo6dGV4
UGFyYW1ldGVyeChUZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgVGV4dHVyZSAqY29uc3QgdGV4dHVyZSA9
IGdldFRleHR1cmVCeVR5cGUodGFyZ2V0KTsKKyAgICBTZXRUZXhQYXJhbWV0ZXJ4KHRoaXMsIHRl
eHR1cmUsIHBuYW1lLCBwYXJhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6dGV4UGFyYW1ldGVyeHYo
VGV4dHVyZVR5cGUgdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgVGV4dHVyZSAqY29uc3QgdGV4dHVyZSA9IGdl
dFRleHR1cmVCeVR5cGUodGFyZ2V0KTsKKyAgICBTZXRUZXhQYXJhbWV0ZXJ4dih0aGlzLCB0ZXh0
dXJlLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp0cmFuc2xhdGVmKGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHopCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzJfMF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzJfMF9hdXRvZ2VuLmgKaW5kZXgg
NjRlNWIzNDNiYjM0ZDI1M2Q2NDAwYmI1MTdiNjk4ZGJiYzg4YTM5ZC4uNTMzNmFkYjljOGIxYmE1
YTNkMjI1N2U5OTUyY2FhZDM4MmM1MTc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18yXzBfYXV0b2dlbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfMl8wX2F1dG9nZW4u
aApAQCAtMTA2LDE5ICsxMDYsMjEgQEAKICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KFRleHR1
cmVUeXBlIHRhcmdldFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOyAgICAg
ICAgICAgICAgIFwKICAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgIFwK
ICAgICBHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsIGNvbnN0IEdMY2hhciAqbmFtZSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdl
dFVuaWZvcm1mdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgKnBhcmFtcyk7ICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldFVuaWZvcm1pdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpwYXJh
bXMpOyAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIGdldFVuaWZvcm1mdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB2b2lkIGdldFVuaWZvcm1pdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbnRlcik7ICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdMdWludCBpbmRleCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2
b2lkIGhpbnQoR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNC
dWZmZXIoQnVmZmVySUQgYnVmZmVyUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNFbmFibGVkKEdMZW51
bSBjYXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihGcmFtZWJ1ZmZlcklE
IGZyYW1lYnVmZmVyUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBHTGJvb2xlYW4gaXNQcm9ncmFtKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJv
b2xlYW4gaXNSZW5kZXJidWZmZXIoUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNTaGFk
ZXIoU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNUZXh0dXJlKFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNCdWZmZXIoQnVmZmVySUQgYnVmZmVyUGFja2Vk
KSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBHTGJvb2xlYW4gaXNFbmFibGVkKEdMZW51bSBjYXApIGNvbnN0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xl
YW4gaXNGcmFtZWJ1ZmZlcihGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkKSBjb25zdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNQcm9ncmFt
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkKSBjb25zdDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoUmVuZGVy
YnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNTaGFkZXIoU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBh
Y2tlZCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBHTGJvb2xlYW4gaXNUZXh0dXJlKFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkKSBjb25zdDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGxpbmVX
aWR0aChHTGZsb2F0IHdpZHRoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGxpbmtQcm9ncmFtKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHBpeGVsU3RvcmVpKEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKQEAgLTE0OCwyNyArMTUwLDI4IEBACiAgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKFRleHR1
cmVUYXJnZXQgdGFyZ2V0UGFja2VkLCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCB1bmlmb3JtMWYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjApOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMWZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMWkoR0xpbnQgbG9jYXRp
b24sIEdMaW50IHYwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCB1bmlmb3JtMmYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQg
djEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1
bmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMmkoR0xp
bnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMml2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAs
IEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCB1bmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlm
b3JtM2koR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtM2l2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtNGYoR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOyAgICAgICAgICAg
ICAgICBcCi0gICAgdm9pZCB1bmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCB1bmlmb3JtNGkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQg
djIsIEdMaW50IHYzKTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3Jt
NGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4MmZ2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMWYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCBHTGZsb2F0IHYwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdm9pZCB1bmlmb3JtMWZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICBcCisgICAgdm9p
ZCB1bmlmb3JtMWkoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGludCB2MCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMWl2
KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnZhbHVlKTsgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMmYoVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICBc
CisgICAgdm9pZCB1bmlmb3JtMmkoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGlu
dCB2MCwgR0xpbnQgdjEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1
bmlmb3JtMml2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtM2YoVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZs
b2F0IHYyKTsgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtM2Z2KFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAg
ICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtM2koVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsgICAgICAgICAgICAgICAgICBcCisg
ICAgdm9pZCB1bmlmb3JtM2l2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlm
b3JtNGYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGZsb2F0IHYwLCBHTGZsb2F0
IHYxLCBHTGZsb2F0IHYyLCAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB2Myk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtNGZ2KFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAg
ICAgICBcCisgICAgdm9pZCB1bmlmb3JtNGkoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2Myk7ICAgICAgICBcCisgICAg
dm9pZCB1bmlmb3JtNGl2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgICBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0
cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGZ2KFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5z
cG9zZSwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgdm9pZCB1c2VQcm9ncmFtKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCB2
YWxpZGF0ZVByb2dyYW0oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMF9hdXRvZ2VuLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMF9hdXRv
Z2VuLmgKaW5kZXggZjBmNjBlZWM3NjQ2OWMxZjcxYTY4NGNkYTAzNTllZWMyMmE1OTEzNC4uY2Yx
MTBiZjQ1MzVkNzk2Yjk0ZTEyYmJkNjY4MTY2MzRiZjQ0Y2QyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzBfYXV0b2dlbi5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNf
M18wX2F1dG9nZW4uaApAQCAtODcsMTggKzg3LDE5IEBACiAgICAgR0x1aW50IGdldFVuaWZvcm1C
bG9ja0luZGV4KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBjb25zdCBHTGNoYXIgKnVu
aWZvcm1CbG9ja05hbWUpOyAgICBcCiAgICAgdm9pZCBnZXRVbmlmb3JtSW5kaWNlcyhTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xzaXplaSB1bmlmb3JtQ291bnQsICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0
ICp1bmlmb3JtTmFtZXMsIEdMdWludCAqdW5pZm9ybUluZGljZXMpOyAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBnZXRVbmlmb3JtdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGlu
dCBsb2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpOyAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXRV
bmlmb3JtdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJaXYoR0x1aW50IGlu
ZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2KEdMdWludCBpbmRleCwgR0xlbnVt
IHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
dm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRh
Y2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7ICBcCiAgICAgdm9pZCBpbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgR0xib29sZWFuIGlzUXVlcnkoUXVlcnlJRCBpZFBhY2tlZCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgR0xi
b29sZWFuIGlzU2FtcGxlcihTYW1wbGVySUQgc2FtcGxlclBhY2tlZCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgR0xib29sZWFuIGlzU3lu
YyhHTHN5bmMgc3luYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJh
Y2soVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgR0xib29sZWFuIGlzVmVydGV4QXJyYXkoVmVydGV4QXJyYXlJRCBh
cnJheVBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgR0xib29sZWFuIGlzUXVlcnkoUXVlcnlJRCBpZFBhY2tlZCkgY29uc3Q7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR0xib29s
ZWFuIGlzU2FtcGxlcihTYW1wbGVySUQgc2FtcGxlclBhY2tlZCkgY29uc3Q7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR0xib29sZWFuIGlzU3luYyhH
THN5bmMgc3luYykgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgR0xib29sZWFuIGlzVHJhbnNmb3JtRmVlZGJhY2so
VHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgR0xib29sZWFuIGlzVmVydGV4QXJyYXkoVmVydGV4QXJyYXlJRCBhcnJh
eVBhY2tlZCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgdm9pZCAqbWFwQnVmZmVyUmFuZ2UoQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsIEdMaW50
cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsICAgICAgICAgICBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC0xMjUsMjcgKzEyNiwyNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgdHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xzaXplaSBjb3VudCwgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKmNvbnN0ICp2YXJ5aW5ncywgR0xlbnVtIGJ1ZmZlck1vZGUpOyAgICAgICAgICAg
ICAgXAotICAgIHZvaWQgdW5pZm9ybTF1aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZv
aWQgdW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWlu
dCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTJ1
aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTJ1aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTN1aShHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHZvaWQgdW5pZm9ybTN1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQg
dW5pZm9ybTR1aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2
MiwgR0x1aW50IHYzKTsgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTR1aXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTF1aShVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsIEdMdWludCB2MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTF1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsgICAgICAgICAgXAor
ICAgIHZvaWQgdW5pZm9ybTJ1aShVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMdWlu
dCB2MCwgR0x1aW50IHYxKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5p
Zm9ybTJ1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTHVpbnQgKnZhbHVlKTsgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTN1aShVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQg
djIpOyAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTN1aXYoVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsgICAg
ICAgICAgXAorICAgIHZvaWQgdW5pZm9ybTR1aShVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIsIEdMdWludCB2Myk7ICAgXAorICAg
IHZvaWQgdW5pZm9ybTR1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsgICAgICAgICAgXAogICAgIHZvaWQgdW5pZm9y
bUJsb2NrQmluZGluZyhTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4M2Z2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybU1h
dHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJ4NGZ2KFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRy
YW5zcG9zZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDN4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDN4NGZ2KFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDR4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4
MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29s
ZWFuIHRyYW5zcG9zZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgICAgICAgICAgICAgICAgXAorICAg
IHZvaWQgdW5pZm9ybU1hdHJpeDR4M2Z2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwg
R0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgXAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIEdMYm9vbGVhbiB1bm1hcEJ1ZmZlcihC
dWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIHZvaWQgdmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5k
ZXgsIEdMdWludCBkaXZpc29yKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bnRleHRfZ2xlc18zXzFfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0NvbnRleHRfZ2xlc18zXzFfYXV0b2dlbi5oCmluZGV4IDhmZWY4NzcyMDA2MmFiZDhi
NWUzYzYxZDUxN2Q1MWRjODRlYTU3MWUuLjNmNmVkZTRhNDFiZGIyZTEzN2RhNGFmZjM0ZWM3YzMz
ZDc4MTY5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db250ZXh0X2dsZXNfM18xX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMV9hdXRvZ2VuLmgKQEAgLTQ4LDY5ICs0OCw3
NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZv
aWQgZ2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwgR0xp
bnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEdMYm9vbGVhbiBpc1Byb2dyYW1QaXBlbGlu
ZShQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEdMYm9vbGVhbiBpc1Byb2dyYW1QaXBlbGluZShQcm9ncmFtUGlw
ZWxpbmVJRCBwaXBlbGluZVBhY2tlZCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIHZvaWQgbWVtb3J5QmFycmllcihHTGJpdGZpZWxkIGJhcnJpZXJzKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQg
bWVtb3J5QmFycmllckJ5UmVnaW9uKEdMYml0ZmllbGQgYmFycmllcnMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZv
cm0xZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQgdjApOyAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xZnYoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwg
R0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKTsgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJv
Z3JhbVVuaWZvcm0xaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xdWkoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjApOyAgICAgICAg
ICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xdWl2KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgICAgICAgXAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3Jh
bVVuaWZvcm0yZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpOyAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0yZnYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0yaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSk7ICAgICAgXAotICAgIHZv
aWQgcHJvZ3JhbVVuaWZvcm0yaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0ydWkoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdM
dWludCB2MSk7ICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0ydWl2KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgICAgICAg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQg
cHJvZ3JhbVVuaWZvcm0zZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsICAgXAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHYyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zZnYoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwg
R0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgICAgICAgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB2Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0z
aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zdWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgICAgXAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3Jh
bVVuaWZvcm0zdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00ZihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEs
ICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZv
aWQgcHJvZ3JhbVVuaWZvcm00ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00aShTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGlu
dCB2MSwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MiwgR0xpbnQg
djMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICAgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZv
cm00dWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjAsIEdMdWludCB2MSwgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYyLCBHTHVpbnQgdjMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00dWl2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgICAgICAgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJv
Z3JhbVVuaWZvcm1NYXRyaXgyZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAotICAg
IHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRy
aXgzZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQg
cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgXAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNm
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHYwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0x
ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3Jh
bVVuaWZvcm0xaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0xdWkoU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZv
aWQgcHJvZ3JhbVVuaWZvcm0xdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0yZihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLCBHTGZs
b2F0IHYxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0yZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZv
cm0yaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCBHTGludCB2MCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2
MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0yaXYoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZh
bHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJv
Z3JhbVVuaWZvcm0ydWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYwLCBHTHVpbnQgdjEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0ydWl2KFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHZvaWQgcHJvZ3JhbVVuaWZvcm0zZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zZnYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGludCB2MCwgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwgR0xpbnQgdjIpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVu
aWZvcm0zaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zdWkoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWlu
dCB2Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQg
cHJvZ3JhbVVuaWZvcm0zdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00ZihTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLCBHTGZsb2F0
IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00
aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLCBHTGludCB2MCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwg
R0xpbnQgdjIsIEdMaW50IHYzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3Jh
bVVuaWZvcm00dWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYzKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm00dWl2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAg
ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dWludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZv
aWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOyAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAg
XAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OyAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgXAorICAgIHZvaWQgcHJv
Z3JhbVVuaWZvcm1NYXRyaXgzeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7ICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgXAorICAg
IHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLCAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAg
ICAgXAogICAgIHZvaWQgc2FtcGxlTWFza2koR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQg
bWFzayk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZv
aWQgdGV4U3RvcmFnZTJETXVsdGlzYW1wbGUoVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTHNp
emVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMYm9vbGVhbiBm
aXhlZHNhbXBsZWxvY2F0aW9ucyk7ICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzJfYXV0b2dlbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzJfYXV0b2dlbi5oCmlu
ZGV4IDYzYzhiMWY5MGJmOWI0MjY4NWY3MDg3M2NhNDJiYzUyOGY2ZGRiOWYuLmY2MDBkMWExNGM3
NmQ2MzkzN2I0ODczM2VlYTU1MDJmZWZhYTM1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfM18yX2F1dG9nZW4uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMl9hdXRv
Z2VuLmgKQEAgLTUyLDEzICs1MiwxMyBAQAogICAgIHZvaWQgZ2V0U2FtcGxlclBhcmFtZXRlckl1
aXYoU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMp
OyAgICAgICAgICAgXAogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySWl2KFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAg
XAogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVySXVpdihUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQs
IEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgXAotICAgIHZvaWQg
Z2V0blVuaWZvcm1mdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgYnVmU2l6ZSwgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgZ2V0blVuaWZvcm1pdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHZvaWQgZ2V0blVuaWZvcm11aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsICAgICAgICAgICAgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEdMYm9vbGVhbiBpc0VuYWJsZWRp
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0blVuaWZvcm1mdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQg
KnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHZvaWQgZ2V0blVuaWZvcm1pdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0blVuaWZvcm11aXYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LCBHTHVpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIEdMYm9vbGVhbiBpc0VuYWJsZWRpKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZv
aWQgbWluU2FtcGxlU2hhZGluZyhHTGZsb2F0IHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgb2JqZWN0TGFi
ZWwoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGxlbmd0aCwgY29uc3Qg
R0xjaGFyICpsYWJlbCk7ICAgICAgICAgXAogICAgIHZvaWQgb2JqZWN0UHRyTGFiZWwoY29uc3Qg
dm9pZCAqcHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCk7ICAgICAgICAg
ICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0NvbnRleHRfZ2xlc19leHRfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc19leHRfYXV0b2dlbi5oCmluZGV4IDc5NDM2MzRh
OTlkMTBlMTFiZDMzMzYxNDhmOTc4ZjMxMGM1YTQ3YzkuLjU4MzdjYWQ1OGJmODM3YmE5ZTQ2MzNi
MDUyYTg0NWNkYWMzNjE1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Db250ZXh0X2dsZXNfZXh0X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzX2V4dF9hdXRvZ2VuLmgKQEAgLTgz
LDEwICs4MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXZSb2J1c3QoVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgICAgICAgICAgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2
Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBidWZTaXplLCAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCAgICAgICAgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFt
cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0
VW5pZm9ybWZ2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOyAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0VW5pZm9ybWl2Um9idXN0KFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliZnZSb2J1c3QoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCAgICAgXAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliaXZS
b2J1c3QoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCAgICAgXApAQCAtMTQxLDggKzE0MSw4IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq
cGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCAgICAgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXRVbmlmb3JtdWl2
Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7ICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdChTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCAgICBcCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzcsMTIgKzE3NywxMiBAQAogICAg
IHZvaWQgcmVhZG5QaXhlbHNSb2J1c3QoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsICAgICAgICAgXAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTHNpemVpICpjb2x1bW5zLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdChTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgICAg
ICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsIEdMZmxv
YXQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZv
aWQgZ2V0blVuaWZvcm1pdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgICAgICAgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3Qo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1
ZlNpemUsICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLCBHTHVpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIHZvaWQgZ2V0blVuaWZvcm1mdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xm
bG9hdCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0blVuaWZvcm1p
dlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHZvaWQgZ2V0blVuaWZvcm11aXZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgXAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMdWludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgdGV4
UGFyYW1ldGVySWl2Um9idXN0KFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwgR0xlbnVtIHBuYW1l
LCBHTHNpemVpIGJ1ZlNpemUsICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgdGV4UGFyYW1ldGVySXVpdlJvYnVzdChUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCAgICAg
ICAgICAgXApAQCAtMjExLDcgKzIxMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgdm9pZCBpbnZhbGlkYXRlVGV4dHVyZShUZXh0dXJlVHlwZSB0
YXJnZXRQYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgLyogR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uICovICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCBiaW5kVW5pZm9ybUxvY2F0aW9uKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGlu
dCBsb2NhdGlvbiwgY29uc3QgR0xjaGFyICpuYW1lKTsgICBcCisgICAgdm9pZCBiaW5kVW5pZm9y
bUxvY2F0aW9uKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgLyogR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgdm9pZCBjb21wcmVzc2VkQ29weVRleHR1cmUoVGV4dHVyZUlEIHNvdXJjZUlkUGFja2Vk
LCBUZXh0dXJlSUQgZGVzdElkUGFja2VkKTsgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xf
Q0hST01JVU1fY29weV90ZXh0dXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMjYsNTMgKzIyNyw5IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xfQ0hS
T01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyAqLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBjb3ZlcmFnZU1vZHVsYXRp
b24oR0xlbnVtIGNvbXBvbmVudHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBtYXRyaXhMb2FkZihHTGVudW0gbWF0cml4TW9k
ZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgdm9pZCBtYXRyaXhMb2FkSWRlbnRpdHkoR0xlbnVtIG1hdHJpeE1vZGUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
LyogR0xfQ0hST01JVU1fbG9zZV9jb250ZXh0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBsb3NlQ29u
dGV4dChHcmFwaGljc1Jlc2V0U3RhdHVzIGN1cnJlbnRQYWNrZWQsIEdyYXBoaWNzUmVzZXRTdGF0
dXMgb3RoZXJQYWNrZWQpOyAgICAgICAgICBcCiAgICAgLyogR0xfQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgR0x1aW50IGdlblBhdGhzKEdMc2l6ZWkgcmFuZ2UpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCBkZWxldGVQYXRocyhQYXRoSUQgZmlyc3RQYWNrZWQsIEdMc2l6ZWkgcmFu
Z2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgR0xi
b29sZWFuIGlzUGF0aChQYXRoSUQgcGF0aFBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwYXRoQ29tbWFu
ZHMoUGF0aElEIHBhdGhQYWNrZWQsIEdMc2l6ZWkgbnVtQ29tbWFuZHMsIGNvbnN0IEdMdWJ5dGUg
KmNvbW1hbmRzLCAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1Db29yZHMsIEdMZW51bSBjb29yZFR5cGUsIGNvbnN0IHZvaWQgKmNvb3Jkcyk7ICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCBwYXRoUGFyYW1ldGVyZihQYXRoSUQgcGF0aFBhY2tlZCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBwYXRoUGFyYW1ldGVyaShQYXRoSUQgcGF0aFBhY2tlZCwgR0xlbnVtIHBuYW1l
LCBHTGludCB2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBn
ZXRQYXRoUGFyYW1ldGVyZnYoUGF0aElEIHBhdGhQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRQYXRoUGFyYW1l
dGVyaXYoUGF0aElEIHBhdGhQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKTsgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwYXRoU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1
bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgdm9pZCBzdGVuY2lsRmlsbFBhdGgoUGF0aElEIHBhdGhQYWNrZWQsIEdM
ZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aChQYXRoSUQgcGF0aFBhY2tlZCwgR0xpbnQgcmVmZXJl
bmNlLCBHTHVpbnQgbWFzayk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb3Zl
ckZpbGxQYXRoKFBhdGhJRCBwYXRoUGFja2VkLCBHTGVudW0gY292ZXJNb2RlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb3ZlclN0cm9rZVBhdGgo
UGF0aElEIHBhdGhQYWNrZWQsIEdMZW51bSBjb3Zlck1vZGUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoUGF0
aElEIHBhdGhQYWNrZWQsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ssICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9k
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChQYXRoSUQgcGF0aFBhY2tlZCwgR0xpbnQg
cmVmZXJlbmNlLCBHTHVpbnQgbWFzaywgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb3ZlckZpbGxQYXRoSW5zdGFu
Y2VkKEdMc2l6ZWkgbnVtUGF0aCwgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0
aHMsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBw
YXRoQmFzZVBhY2tlZCwgR0xlbnVtIGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsICAg
ICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCBjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRoLCBHTGVudW0gcGF0aE5h
bWVUeXBlLCBjb25zdCB2b2lkICpwYXRocywgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLCBHTGVudW0gY292ZXJNb2RlLCBH
TGVudW0gdHJhbnNmb3JtVHlwZSwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChHTHNpemVp
IG51bVBhdGgsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBhdGhzLCAgICAgICBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNr
ZWQsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2ssICAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsgICAgICAgICBcCi0gICAgdm9pZCBzdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qg
dm9pZCAqcGF0aHMsICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGF0aElEIHBhdGhCYXNlUGFja2VkLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7ICAgICAgICAgICBcCi0g
ICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRo
cywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsIFBhdGhJRCBw
YXRoQmFzZVBhY2tlZCwgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaywgR0xlbnVtIGNv
dmVyTW9kZSwgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cyk7ICBcCi0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZCggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIEdMc2l6ZWkgbnVtUGF0aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBh
dGhzLCBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsICAgICAgICAgICBcCi0gICAgICAgIEdMaW50IHJl
ZmVyZW5jZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLCAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCBiaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtc1BhY2tlZCwgR0xpbnQgbG9jYXRpb24sICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFt
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCBwcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsIEdMaW50IGxvY2F0aW9uLCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsIEdMaW50IGNvbXBvbmVudHMsIGNvbnN0
IEdMZmxvYXQgKmNvZWZmcyk7ICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgLyogR0xFUzIrIEV4dGVuc2lvbnMgKi8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yOTIsNiAr
MjQ5LDkgQEAKICAgICAvKiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0ICovICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAvKiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAqLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBHTF9BTkdMRV9tZW1vcnlfb2Jq
ZWN0X2Z1Y2hzaWEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIGltcG9ydE1lbW9yeVppcmNvbkhhbmRsZShNZW1v
cnlPYmplY3RJRCBtZW1vcnlQYWNrZWQsIEdMdWludDY0IHNpemUsICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRs
ZVR5cGVQYWNrZWQsIEdMdWludCBoYW5kbGUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAv
KiBHTF9BTkdMRV9tdWx0aV9kcmF3ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIG11bHRpRHJh
d0FycmF5cyhQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsIGNvbnN0IEdMaW50ICpmaXJzdHMsIGNv
bnN0IEdMc2l6ZWkgKmNvdW50cywgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGRyYXdjb3VudCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKQEAgLTMwNiw2ICsyNjYsOSBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqaW5zdGFuY2VDb3VudHMsIEdMc2l6ZWkgZHJh
d2NvdW50KTsgICAgICAgICAgICAgXAogICAgIC8qIEdMX0FOR0xFX3Byb3Zva2luZ192ZXJ0ZXgg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIHZvaWQgcHJvdm9raW5nVmVydGV4KFByb3Zva2luZ1ZlcnRleENvbnZl
bnRpb24gbW9kZVBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIC8qIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhICovICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgaW1w
b3J0U2VtYXBob3JlWmlyY29uSGFuZGxlKFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCwgSGFu
ZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkLCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX0FOR0xFX3RleHR1cmVfbXVsdGlzYW1wbGUg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIC8qIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSAqLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IHZvaWQgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFj
a2VkLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgXApAQCAtMzI5LDYgKzI5Miw3
IEBACiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2KFF1ZXJ5SUQgaWRQYWNrZWQsIEdMZW51
bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9p
ZCBxdWVyeUNvdW50ZXIoUXVlcnlJRCBpZFBhY2tlZCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xfRVhUX2RyYXdf
YnVmZmVycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogR0xfRVhUX2RyYXdfYnVmZmVyc19pbmRl
eGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgLyogR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXggKi8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkLCBjb25zdCBHTHNpemVpICpjb3VudCwgICAgICAgICAgICAgICBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLCBj
b25zdCB2b2lkICpjb25zdCAqaW5kaWNlcywgICAgICBcCkBAIC0zNDUsNyArMzA5LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdldFVu
c2lnbmVkQnl0ZXYoR0xlbnVtIHBuYW1lLCBHTHVieXRlICpkYXRhKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdldFVuc2lnbmVkQnl0ZWlf
dihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWJ5dGUgKmRhdGEpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNNZW1vcnlPYmplY3QoTWVtb3J5T2Jq
ZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBHTGJvb2xlYW4gaXNNZW1vcnlPYmplY3QoTWVtb3J5T2JqZWN0SUQgbWVtb3J5
T2JqZWN0UGFja2VkKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2
b2lkIG1lbW9yeU9iamVjdFBhcmFtZXRlcml2KE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdFBh
Y2tlZCwgR0xlbnVtIHBuYW1lLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHRleFN0b3JhZ2VNZW0yRChUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsICAgICAgICAgIFwKQEAgLTM3Niw3ICszNDAsNyBAQAogICAgIHZvaWQgZGVsZXRlU2VtYXBo
b3JlcyhHTHNpemVpIG4sIGNvbnN0IFNlbWFwaG9yZUlEICpzZW1hcGhvcmVzUGFja2VkKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2VuU2VtYXBob3JlcyhHTHNpemVpIG4s
IFNlbWFwaG9yZUlEICpzZW1hcGhvcmVzUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIHZvaWQgZ2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHYoU2VtYXBob3Jl
SUQgc2VtYXBob3JlUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpOyAgXAot
ICAgIEdMYm9vbGVhbiBpc1NlbWFwaG9yZShTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9vbGVh
biBpc1NlbWFwaG9yZShTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQpIGNvbnN0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgc2VtYXBob3JlUGFyYW1l
dGVydWk2NHYoU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkLCBHTGVudW0gcG5hbWUsICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50NjQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIHZvaWQgc2lnbmFsU2VtYXBob3JlKFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBh
Y2tlZCwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzLCAgICAgICAgICAgICAgICAgICAgXApAQCAt
Mzg5LDYgKzM1Myw3IEBACiAgICAgdm9pZCBpbXBvcnRTZW1hcGhvcmVGZChTZW1hcGhvcmVJRCBz
ZW1hcGhvcmVQYWNrZWQsIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCwgR0xpbnQgZmQpOyAg
ICBcCiAgICAgLyogR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyAqLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyog
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAqLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fcmd0YyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fczN0YyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgLyogR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdi
ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgLyogR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljICovICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00MDMsNyAr
MzY4LDcgQEAKICAgICB2b2lkIGZpbmlzaEZlbmNlTlYoRmVuY2VOVklEIGZlbmNlUGFja2VkKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICB2b2lkIGdlbkZlbmNlc05WKEdMc2l6ZWkgbiwgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdldEZl
bmNlaXZOVihGZW5jZU5WSUQgZmVuY2VQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNGZW5jZU5WKEZl
bmNlTlZJRCBmZW5jZVBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNGZW5jZU5WKEZlbmNlTlZJRCBmZW5j
ZVBhY2tlZCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICB2b2lkIHNldEZlbmNlTlYoRmVuY2VOVklEIGZlbmNlUGFja2VkLCBHTGVudW0g
Y29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBH
TGJvb2xlYW4gdGVzdEZlbmNlTlYoRmVuY2VOVklEIGZlbmNlUGFja2VkKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9PRVNfRUdM
X2ltYWdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTQxMSw2ICszNzYsNyBAQAogICAgIHZvaWQg
ZUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTGVnbElt
YWdlT0VTIGltYWdlKTsgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX09FU19jb21wcmVz
c2VkX0VUQzFfUkdCOF90ZXh0dXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX09FU19kZXB0aDMyICovICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIC8qIEdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCAqLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIC8qIEdMX09FU19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4ICovICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX09F
U19nZXRfcHJvZ3JhbV9iaW5hcnkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX09FU19tYXBidWZmZXIg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0Rpc3BsYXkuY3BwCmluZGV4IGY4Y2E2ZGI1Zjk1NWM5NTUwYzg0NDNlOWU0NzBiZTFl
ZGQ0MTYzNDMuLmYzYjZlYmYwMzU2NWUyYTkzZmM1MGVlMjllNTRmZjQwOGY4YWE2NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAKQEAg
LTUwLDE0ICs1MCwxOSBAQAogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX09QRU5HTCkKICMgICAg
aWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQogIyAgICAgICAgaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCIKLSMgICAgZWxpZiBkZWZpbmVkKEFO
R0xFX1VTRV9YMTEpCi0jICAgICAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
RGlzcGxheUdMWC5oIgogIyAgICBlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDT1MpIHx8
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDQ0FUQUxZU1QpCiAjICAgICAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgogIyAgICBlbGlmIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fSU9TKQogIyAgICAgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWFnbC9EaXNwbGF5RUFHTC5oIgotIyAgICBlbGlmIGRlZmluZWQoQU5HTEVfVVNFX09aT05F
KQotIyAgICAgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3Bs
YXlPem9uZS5oIgorIyAgICBlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgpCisjICAg
ICAgICBpZiBkZWZpbmVkKEFOR0xFX1VTRV9PWk9ORSkKKyMgICAgICAgICAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgiCisjICAgICAgICBl
bHNlCisjICAgICAgICAgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3Bs
YXlFR0wuaCIKKyMgICAgICAgICAgICBpZiBkZWZpbmVkKEFOR0xFX1VTRV9YMTEpCisjICAgICAg
ICAgICAgICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgi
CisjICAgICAgICAgICAgZW5kaWYKKyMgICAgICAgIGVuZGlmCiAjICAgIGVsaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9BTkRST0lEKQogIyAgICAgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuaCIKICMgICAgZWxzZQpAQCAtMjE2LDcg
KzIyMSw5IEBAIEVHTEF0dHJpYiBHZXREZXZpY2VUeXBlRnJvbUVudmlyb25tZW50KCkKICAgICBy
ZXR1cm4gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFOwogfQog
Ci1yeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhFR0xBdHRyaWIgZGlz
cGxheVR5cGUsIGNvbnN0IERpc3BsYXlTdGF0ZSAmc3RhdGUpCityeDo6RGlzcGxheUltcGwgKkNy
ZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhFR0xBdHRyaWIgZGlzcGxheVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xBdHRyaWIgZGV2aWNlVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERpc3BsYXlTdGF0
ZSAmc3RhdGUpCiB7CiAgICAgQVNTRVJUKGRpc3BsYXlUeXBlICE9IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0RFRkFVTFRfQU5HTEUpOwogICAgIHJ4OjpEaXNwbGF5SW1wbCAqaW1wbCA9IG51bGxw
dHI7CkBAIC0yNDEsMTUgKzI0OCwyNiBAQCByeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlG
cm9tQXR0cmlicyhFR0xBdHRyaWIgZGlzcGxheVR5cGUsIGNvbnN0IERpc3BsYXlTdAogI2lmIGRl
ZmluZWQoQU5HTEVfRU5BQkxFX09QRU5HTCkKICMgICAgaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9XSU5ET1dTKQogICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheVdHTChzdGF0ZSk7
Ci0jICAgIGVsaWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQotICAgICAgICAgICAgaW1wbCA9IG5l
dyByeDo6RGlzcGxheUdMWChzdGF0ZSk7CiAjICAgIGVsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9NQUNPUykgfHwgZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNDQVRBTFlTVCkKICAgICAgICAg
ICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlDR0woc3RhdGUpOwogIyAgICBlbGlmIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fSU9TKQogICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUVB
R0woc3RhdGUpOwotIyAgICBlbGlmIGRlZmluZWQoQU5HTEVfVVNFX09aT05FKQorIyAgICBlbGlm
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgpCisjICAgICAgICBpZiBkZWZpbmVkKEFOR0xF
X1VTRV9PWk9ORSkKICAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgd29yayBidXQgaGFzIG5ldmVy
IGJlZW4gdHJpZWQsIHNvIGRpc2FsbG93IGZvciBub3cuCiAgICAgICAgICAgICBpbXBsID0gbnVs
bHB0cjsKKyMgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChkZXZpY2VUeXBlID09IEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9FR0xfQU5HTEUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUVHTChzdGF0ZSk7CisgICAgICAgICAg
ICB9CisjICAgICAgICAgICAgaWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3Bs
YXlHTFgoc3RhdGUpOworICAgICAgICAgICAgfQorIyAgICAgICAgICAgIGVuZGlmCisjICAgICAg
ICBlbmRpZgogIyAgICBlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKICAgICAg
ICAgICAgIC8vIE5vIEdMIHN1cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNy
ZWF0aW9uLgogICAgICAgICAgICAgaW1wbCA9IG51bGxwdHI7CkBAIC0yNjYsMTAgKzI4NCwyMSBA
QCByeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhFR0xBdHRyaWIgZGlz
cGxheVR5cGUsIGNvbnN0IERpc3BsYXlTdAogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX09QRU5H
TCkKICMgICAgaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQogICAgICAgICAgICAg
aW1wbCA9IG5ldyByeDo6RGlzcGxheVdHTChzdGF0ZSk7Ci0jICAgIGVsaWYgZGVmaW5lZChBTkdM
RV9VU0VfWDExKQotICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWChzdGF0ZSk7
Ci0jICAgIGVsaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCisjICAgIGVsaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9MSU5VWCkKKyMgICAgICAgIGlmIGRlZmluZWQoQU5HTEVfVVNFX09aT05F
KQogICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheU96b25lKHN0YXRlKTsKKyMgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChkZXZpY2VUeXBlID09IEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9FR0xfQU5HTEUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aW1wbCA9IG5ldyByeDo6RGlzcGxheUVHTChzdGF0ZSk7CisgICAgICAgICAgICB9CisjICAgICAg
ICAgICAgaWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlHTFgoc3RhdGUp
OworICAgICAgICAgICAgfQorIyAgICAgICAgICAgIGVuZGlmCisjICAgICAgICBlbmRpZgogIyAg
ICBlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKICAgICAgICAgICAgIGltcGwg
PSBuZXcgcng6OkRpc3BsYXlBbmRyb2lkKHN0YXRlKTsKICMgICAgZWxzZQpAQCAtMzkyLDcgKzQy
MSw5IEBAIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qga1NjcmF0Y2hCdWZmZXJMaWZldGltZSA9
IDY0dTsKIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1EaXNwbGF5U3RhdGU6OkRpc3Bs
YXlTdGF0ZSgpIDogbGFiZWwobnVsbHB0ciksIGZlYXR1cmVzQWxsRGlzYWJsZWQoZmFsc2UpIHt9
CitEaXNwbGF5U3RhdGU6OkRpc3BsYXlTdGF0ZShFR0xOYXRpdmVEaXNwbGF5VHlwZSBuYXRpdmVE
aXNwbGF5SWQpCisgICAgOiBsYWJlbChudWxscHRyKSwgZmVhdHVyZXNBbGxEaXNhYmxlZChmYWxz
ZSksIGRpc3BsYXlJZChuYXRpdmVEaXNwbGF5SWQpCit7fQogCiBEaXNwbGF5U3RhdGU6On5EaXNw
bGF5U3RhdGUoKSB7fQogCkBAIC00MjksNyArNDYwLDkgQEAgRGlzcGxheSAqRGlzcGxheTo6R2V0
RGlzcGxheUZyb21OYXRpdmVEaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIG5hdGl2ZURpc3Bs
YXkKICAgICAgICAgZGlzcGxheS0+dXBkYXRlQXR0cmlic0Zyb21FbnZpcm9ubWVudChhdHRyaWJN
YXApOwogCiAgICAgICAgIEVHTEF0dHJpYiBkaXNwbGF5VHlwZSA9IGRpc3BsYXktPm1BdHRyaWJ1
dGVNYXAuZ2V0KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKLSAgICAgICAgcng6OkRp
c3BsYXlJbXBsICppbXBsID0gQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJzKGRpc3BsYXlUeXBlLCBk
aXNwbGF5LT5nZXRTdGF0ZSgpKTsKKyAgICAgICAgRUdMQXR0cmliIGRldmljZVR5cGUgID0gZGlz
cGxheS0+bUF0dHJpYnV0ZU1hcC5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FO
R0xFKTsKKyAgICAgICAgcng6OkRpc3BsYXlJbXBsICppbXBsID0KKyAgICAgICAgICAgIENyZWF0
ZURpc3BsYXlGcm9tQXR0cmlicyhkaXNwbGF5VHlwZSwgZGV2aWNlVHlwZSwgZGlzcGxheS0+Z2V0
U3RhdGUoKSk7CiAgICAgICAgIGlmIChpbXBsID09IG51bGxwdHIpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIC8vIE5vIHZhbGlkIGRpc3BsYXkgaW1wbGVtZW50YXRpb24gZm9yIHRoZXNlIGF0dHJp
YnV0ZXMKQEAgLTUwNiw4ICs1MzksOCBAQCBEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJv
bURldmljZShEZXZpY2UgKmRldmljZSwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaQogfQogCiBE
aXNwbGF5OjpEaXNwbGF5KEVHTGVudW0gcGxhdGZvcm0sIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRp
c3BsYXlJZCwgRGV2aWNlICplZ2xEZXZpY2UpCi0gICAgOiBtSW1wbGVtZW50YXRpb24obnVsbHB0
ciksCi0gICAgICBtRGlzcGxheUlkKGRpc3BsYXlJZCksCisgICAgOiBtU3RhdGUoZGlzcGxheUlk
KSwKKyAgICAgIG1JbXBsZW1lbnRhdGlvbihudWxscHRyKSwKICAgICAgIG1BdHRyaWJ1dGVNYXAo
KSwKICAgICAgIG1Db25maWdTZXQoKSwKICAgICAgIG1Db250ZXh0U2V0KCksCkBAIC01MzUsNyAr
NTY4LDcgQEAgRGlzcGxheTo6fkRpc3BsYXkoKQogICAgIGlmIChtUGxhdGZvcm0gPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX0FOR0xFKQogICAgIHsKICAgICAgICAgQU5HTEVQbGF0Zm9ybURpc3BsYXlN
YXAgKmRpc3BsYXlzICAgICAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpOwotICAgICAg
ICBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDo6aXRlcmF0b3IgaXRlciA9IGRpc3BsYXlzLT5maW5k
KG1EaXNwbGF5SWQpOworICAgICAgICBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDo6aXRlcmF0b3Ig
aXRlciA9IGRpc3BsYXlzLT5maW5kKG1TdGF0ZS5kaXNwbGF5SWQpOwogICAgICAgICBpZiAoaXRl
ciAhPSBkaXNwbGF5cy0+ZW5kKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRpc3BsYXlzLT5l
cmFzZShpdGVyKTsKQEAgLTEzNTQsNiArMTM4NywxMCBAQCBzdGF0aWMgQ2xpZW50RXh0ZW5zaW9u
cyBHZW5lcmF0ZUNsaWVudEV4dGVuc2lvbnMoKQogICAgIGV4dGVuc2lvbnMueDExVmlzdWFsID0g
dHJ1ZTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9MSU5VWCkgJiYgIWRl
ZmluZWQoQU5HTEVfVVNFX09aT05FKQorICAgIGV4dGVuc2lvbnMucGxhdGZvcm1BTkdMRURldmlj
ZVR5cGVFR0xBTkdMRSA9IHRydWU7CisjZW5kaWYKKwogICAgIGV4dGVuc2lvbnMuY2xpZW50R2V0
QWxsUHJvY0FkZHJlc3NlcyA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy5kZWJ1ZyAgICAgICAgICAg
ICAgICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLmV4cGxpY2l0Q29udGV4dCAgICAgICAg
ICAgPSB0cnVlOwpAQCAtMTQ5OSw3ICsxNTM2LDcgQEAgdm9pZCBEaXNwbGF5Ojppbml0aWFsaXpl
RnJvbnRlbmRGZWF0dXJlcygpCiAKICAgICBtSW1wbGVtZW50YXRpb24tPmluaXRpYWxpemVGcm9u
dGVuZEZlYXR1cmVzKCZtRnJvbnRlbmRGZWF0dXJlcyk7CiAKLSAgICByeDo6T3ZlcnJpZGVGZWF0
dXJlc1dpdGhEaXNwbGF5U3RhdGUoJm1Gcm9udGVuZEZlYXR1cmVzLCBtU3RhdGUpOworICAgIHJ4
OjpBcHBseUZlYXR1cmVPdmVycmlkZXMoJm1Gcm9udGVuZEZlYXR1cmVzLCBtU3RhdGUpOwogfQog
CiBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAmRGlzcGxheTo6Z2V0RXh0ZW5zaW9ucygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxh
eS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuaAppbmRl
eCAwN2ZiMmFhMTZmNGYwZDI1NWM1YTQyZGViNDNlNTgyMzczYjYwNDlmLi42MWNjMGNiMjgwMDg1
Y2YyZGYzNGZkYWJiNDljZjE4MmEyMTBlNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmgKQEAgLTUxLDcgKzUxLDcgQEAgdXNpbmcgU3VyZmFj
ZVNldCA9IHN0ZDo6c2V0PFN1cmZhY2UgKj47CiAKIHN0cnVjdCBEaXNwbGF5U3RhdGUgZmluYWwg
OiBwcml2YXRlIGFuZ2xlOjpOb25Db3B5YWJsZQogewotICAgIERpc3BsYXlTdGF0ZSgpOworICAg
IERpc3BsYXlTdGF0ZShFR0xOYXRpdmVEaXNwbGF5VHlwZSBuYXRpdmVEaXNwbGF5SWQpOwogICAg
IH5EaXNwbGF5U3RhdGUoKTsKIAogICAgIEVHTExhYmVsS0hSIGxhYmVsOwpAQCAtNTksNiArNTks
NyBAQCBzdHJ1Y3QgRGlzcGxheVN0YXRlIGZpbmFsIDogcHJpdmF0ZSBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZmVhdHVyZU92ZXJyaWRlc0VuYWJsZWQ7
CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZlYXR1cmVPdmVycmlkZXNEaXNhYmxlZDsK
ICAgICBib29sIGZlYXR1cmVzQWxsRGlzYWJsZWQ7CisgICAgRUdMTmF0aXZlRGlzcGxheVR5cGUg
ZGlzcGxheUlkOwogfTsKIAogLy8gQ29uc3RhbnQgY29kZWQgaGVyZSBhcyBhIHNhbml0eSBsaW1p
dC4KQEAgLTE4Nyw3ICsxODgsNyBAQCBjbGFzcyBEaXNwbGF5IGZpbmFsIDogcHVibGljIExhYmVs
ZWRPYmplY3QsIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEVHTGludCBwcm9ncmFtQ2FjaGVSZXNp
emUoRUdMaW50IGxpbWl0LCBFR0xlbnVtIG1vZGUpOwogCiAgICAgY29uc3QgQXR0cmlidXRlTWFw
ICZnZXRBdHRyaWJ1dGVNYXAoKSBjb25zdCB7IHJldHVybiBtQXR0cmlidXRlTWFwOyB9Ci0gICAg
RUdMTmF0aXZlRGlzcGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxheUlkKCkgY29uc3QgeyByZXR1cm4g
bURpc3BsYXlJZDsgfQorICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldE5hdGl2ZURpc3BsYXlJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5kaXNwbGF5SWQ7IH0KIAogICAgIHJ4OjpEaXNwbGF5
SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb247
IH0KICAgICBEZXZpY2UgKmdldERldmljZSgpIGNvbnN0OwpAQCAtMjM3LDcgKzIzOCw2IEBAIGNs
YXNzIERpc3BsYXkgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgRGlzcGxheVN0YXRlIG1TdGF0ZTsKICAgICByeDo6RGlzcGxheUltcGwgKm1JbXBs
ZW1lbnRhdGlvbjsKIAotICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIG1EaXNwbGF5SWQ7CiAgICAg
QXR0cmlidXRlTWFwIG1BdHRyaWJ1dGVNYXA7CiAKICAgICBDb25maWdTZXQgbUNvbmZpZ1NldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvclN0
cmluZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvclN0cmlu
Z3MuaAppbmRleCBhZmEzMTVkYTcwMDE5ZWY0NjJiYmJkZDY3YzdjODIyYTQwZDI2Y2FlLi5iYWE3
OGJiMjFiMmEwMWViNGQxNjc1MDI3ZjBjYWY3ZDFlNGViYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3JTdHJpbmdzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yU3RyaW5ncy5oCkBAIC02OCw3ICs2
OCw3IEBAIE1TRyBrQ29tcHJlc3NlZERhdGFTaXplVG9vU21hbGwgPSAiZGF0YVNpemUgaXMgdG9v
IHNtYWxsIjsKIE1TRyBrQ29tcHJlc3NlZE1pc21hdGNoID0gIkNvbXByZXNzZWQgZGF0YSBpcyB2
YWxpZCBpZi1hbmQtb25seS1pZiB0aGUgdGV4dHVyZSBpcyBjb21wcmVzc2VkLiI7CiBNU0cga0Nv
bXByZXNzZWRUZXh0dXJlRGltZW5zaW9uc011c3RNYXRjaERhdGEgPSAiQ29tcHJlc3NlZCB0ZXh0
dXJlIGRpbWVuc2lvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBk
YXRhIHBhc3NlZCBpbi4iOwogTVNHIGtDb21wcmVzc2VkVGV4dHVyZXNOb3RBdHRhY2hhYmxlID0g
IkNvbXByZXNzZWQgdGV4dHVyZXMgY2Fubm90IGJlIGF0dGFjaGVkIHRvIGEgZnJhbWVidWZmZXIu
IjsKLU1TRyBrQ29uc3RhbnRDb2xvckFscGhhTGltaXRhdGlvbiA9ICJTaW11bHRhbmVvdXMgdXNl
IG9mIEdMX0NPTlNUQU5UX0FMUEhBL0dMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSBhbmQgR0xf
Q09OU1RBTlRfQ09MT1IvR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIG5vdCBzdXBwb3J0ZWQg
YnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4iOworTVNHIGtDb25zdGFudENvbG9yQWxwaGFMaW1pdGF0
aW9uID0gIlNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVT
X0NPTlNUQU5UX0FMUEhBIGFuZCBHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1IgYXMgY29sb3IgZmFjdG9ycyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVt
ZW50YXRpb24uIjsKIE1TRyBrQ29udGV4dExvc3QgPSAiQ29udGV4dCBoYXMgYmVlbiBsb3N0LiI7
CiBNU0cga0NvcHlBbGlhcyA9ICJUaGUgcmVhZCBhbmQgd3JpdGUgY29weSByZWdpb25zIGFsaWFz
IG1lbW9yeS4iOwogTVNHIGtDdWJlbWFwRmFjZXNFcXVhbERpbWVuc2lvbnMgPSAiRWFjaCBjdWJl
bWFwIGZhY2UgbXVzdCBoYXZlIGVxdWFsIHdpZHRoIGFuZCBoZWlnaHQuIjsKQEAgLTE0MSw2ICsx
NDEsNyBAQCBNU0cga0dldEltYWdlRXh0ZW5zaW9uTm90RW5hYmxlZCA9ICJHTF9BTkdMRV9nZXRf
aW1hZ2UgZXh0ZW5zaW9uIG5vdCBlbmFibGVkLiI7CiBNU0cga0dMRVMxT25seSA9ICJHTEVTMS1v
bmx5IGZ1bmN0aW9uLiI7CiBNU0cga0ltYWdlU2l6ZU11c3RCZVplcm8gPSAiaW1hZ2VTaXplIG11
c3QgYmUgMCBpZiBubyB0ZXh0dXJlIGRhdGEgaXMgcHJvdmlkZWQuIjsKIE1TRyBrSW1hZ2VTaXpl
VG9vU21hbGwgPSAiaW1hZ2VTaXplIGlzIHRvbyBzbWFsbC4iOworTVNHIGtJbW11dGFibGVNZW1v
cnlPYmplY3QgPSAiVGhlIG1lbW9yeSBvYmplY3QgaXMgaW1tdXRhYmxlLiI7CiBNU0cga0ltbXV0
YWJsZVRleHR1cmVCb3VuZCA9ICJUaGUgdmFsdWUgb2YgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFU
IGZvciB0aGUgdGV4dHVyZSBjdXJyZW50bHkgYm91bmQgdG8gdGFyZ2V0IG9uIHRoZSBhY3RpdmUg
dGV4dHVyZSB1bml0IGlzIHRydWUuIjsKIE1TRyBrSW5jb21wYXRpYmxlRHJhd01vZGVBZ2FpbnN0
R2VvbWV0cnlTaGFkZXIgPSAiUHJpbWl0aXZlIG1vZGUgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhl
IGlucHV0IHByaW1pdGl2ZSB0eXBlIG9mIHRoZSBnZW9tZXRyeSBzaGFkZXIuIjsKIE1TRyBrSW5k
ZXhFeGNlZWRzQWN0aXZlVW5pZm9ybUJsb2NrQ291bnQgPSAiSW5kZXggZXhjZWVkcyBhY3RpdmUg
dW5pZm9ybSBibG9jayBjb3VudC4iOwpAQCAtMTU5LDYgKzE2MCw5IEBAIE1TRyBrSW5zdWZmaWNp
ZW50UGFyYW1zID0gIk1vcmUgcGFyYW1ldGVycyBhcmUgcmVxdWlyZWQgdGhhbiB3ZXJlIHByb3Zp
ZGVkLiI7CiBNU0cga0luc3VmZmljaWVudFZlcnRleEJ1ZmZlclNpemUgPSAiVmVydGV4IGJ1ZmZl
ciBpcyBub3QgYmlnIGVub3VnaCBmb3IgdGhlIGRyYXcgY2FsbCI7CiBNU0cga0ludGVnZXJPdmVy
ZmxvdyA9ICJJbnRlZ2VyIG92ZXJmbG93LiI7CiBNU0cga0ludGVybmFsRm9ybWF0UmVxdWlyZXNU
ZXh0dXJlMkRBcnJheSA9ICJpbnRlcm5hbGZvcm1hdCBpcyBhbiBFVEMyL0VBQyBmb3JtYXQgYW5k
IHRhcmdldCBpcyBub3QgR0xfVEVYVFVSRV8yRF9BUlJBWS4iOworTVNHIGtJbnRlcm5hbEZvcm1h
dFJlcXVpcmVzVGV4dHVyZTJEQXJyYXlTM1RDID0gImludGVybmFsZm9ybWF0IGlzIGFuIFMzVEMg
Zm9ybWF0IGFuZCB0YXJnZXQgaXMgbm90IEdMX1RFWFRVUkVfMkRfQVJSQVkuIjsKK01TRyBrSW50
ZXJuYWxGb3JtYXRSZXF1aXJlc1RleHR1cmUyREFycmF5UkdUQyA9ICJpbnRlcm5hbGZvcm1hdCBp
cyBhbiBSR1RDIGZvcm1hdCBhbmQgdGFyZ2V0IGlzIG5vdCBHTF9URVhUVVJFXzJEX0FSUkFZLiI7
CitNU0cga0ludGVybmFsRm9ybWF0UmVxdWlyZXNUZXh0dXJlMkRBcnJheUFTVEMgPSAiaW50ZXJu
YWxmb3JtYXQgaXMgYW4gQVNUQyBmb3JtYXQgYW5kIHRhcmdldCBpcyBub3QgR0xfVEVYVFVSRV8y
RF9BUlJBWS4iOwogTVNHIGtJbnZhbGlkQWNjZXNzQml0cyA9ICJJbnZhbGlkIGFjY2VzcyBiaXRz
LiI7CiBNU0cga0ludmFsaWRBY2Nlc3NCaXRzRmx1c2ggPSAiVGhlIGV4cGxpY2l0IGZsdXNoaW5n
IGJpdCBtYXkgb25seSBiZSBzZXQgaWYgdGhlIGJ1ZmZlciBpcyBtYXBwZWQgZm9yIHdyaXRpbmcu
IjsKIE1TRyBrSW52YWxpZEFjY2Vzc0JpdHNSZWFkID0gIkludmFsaWQgYWNjZXNzIGJpdHMgd2hl
biBtYXBwaW5nIGJ1ZmZlciBmb3IgcmVhZGluZyI7CkBAIC0xODAsNyArMTg0LDcgQEAgTVNHIGtJ
bnZhbGlkQ29tYmluZWRJbWFnZVVuaXQgPSAiU3BlY2lmaWVkIHVuaXQgbXVzdCBiZSBpbiBbR0xf
VEVYVFVSRTAsIEdMX1RFWFQKIE1TRyBrSW52YWxpZENvbXBvbmVudHMgPSAiSW52YWxpZCBjb21w
b25lbnRzLiI7CiBNU0cga0ludmFsaWRDb21wcmVzc2VkRm9ybWF0ID0gIk5vdCBhIHZhbGlkIGNv
bXByZXNzZWQgdGV4dHVyZSBmb3JtYXQuIjsKIE1TRyBrSW52YWxpZENvbXByZXNzZWRJbWFnZVNp
emUgPSAiSW52YWxpZCBjb21wcmVzc2VkIGltYWdlIHNpemUuIjsKLU1TRyBrSW52YWxpZENvbnN0
YW50Q29sb3IgPSAiQ09OU1RBTlRfQ09MT1IgKG9yIE9ORV9NSU5VU19DT05TVEFOVF9DT0xPUikg
YW5kIENPTlNUQU5UX0FMUEhBIChvciBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEpIGNhbm5vdCBi
ZSB1c2VkIHRvZ2V0aGVyIGFzIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmFjdG9ycyBpbiB0aGUg
YmxlbmQgZnVuY3Rpb24uIjsKK01TRyBrSW52YWxpZENvbnN0YW50Q29sb3IgPSAiQ09OU1RBTlRf
Q09MT1IgKG9yIE9ORV9NSU5VU19DT05TVEFOVF9DT0xPUikgYW5kIENPTlNUQU5UX0FMUEhBIChv
ciBPTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEpIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIGFzIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gY29sb3IgZmFjdG9ycyBpbiB0aGUgYmxlbmQgZnVuY3Rpb24u
IjsKIE1TRyBrSW52YWxpZENvcHlDb21iaW5hdGlvbiA9ICJJbnZhbGlkIGNvcHkgdGV4dHVyZSBm
b3JtYXQgY29tYmluYXRpb24uIjsKIE1TRyBrSW52YWxpZENvdmVyYWdlQ29tcG9uZW50cyA9ICJj
b21wb25lbnRzIGlzIG5vdCBvbmUgb2YgR0xfUkdCLCBHTF9SR0JBLCBHTF9BTFBIQSBvciBHTF9O
T05FLiI7CiBNU0cga0ludmFsaWRDb3Zlck1vZGUgPSAiSW52YWxpZCBjb3ZlciBtb2RlLiI7CkBA
IC0yMzcsMzEgKzI0MSwxNCBAQCBNU0cga0ludmFsaWRNYXRlcmlhbEZhY2UgPSAiSW52YWxpZCBt
YXRlcmlhbCBmYWNlLiI7CiBNU0cga0ludmFsaWRNYXRlcmlhbFBhcmFtZXRlciA9ICJJbnZhbGlk
IG1hdGVyaWFsIHBhcmFtZXRlci4iOwogTVNHIGtJbnZhbGlkTWF0cml4TW9kZSA9ICJJbnZhbGlk
IG1hdHJpeCBtb2RlLiI7CiBNU0cga0ludmFsaWRNZW1vcnlCYXJyaWVyQml0ID0gIkludmFsaWQg
bWVtb3J5IGJhcnJpZXIgYml0LiI7CitNU0cga0ludmFsaWRNZW1vcnlPYmplY3QgPSAiSW52YWxp
ZCBtZW1vcnkgb2JqZWN0LiI7CitNU0cga0ludmFsaWRNZW1vcnlPYmplY3RQYXJhbWV0ZXIgPSAi
SW52YWxpZCBtZW1vcnkgb2JqZWN0IHBhcmFtZXRlci4iOwogTVNHIGtJbnZhbGlkTWlwTGV2ZWwg
PSAiTGV2ZWwgb2YgZGV0YWlsIG91dHNpZGUgb2YgcmFuZ2UuIjsKIE1TRyBrSW52YWxpZE1pcExl
dmVscyA9ICJJbnZhbGlkIGxldmVsIGNvdW50LiI7CiBNU0cga0ludmFsaWRNdWx0aXNhbXBsZWRG
cmFtZWJ1ZmZlck9wZXJhdGlvbiA9ICJJbnZhbGlkIG9wZXJhdGlvbiBvbiBtdWx0aXNhbXBsZWQg
ZnJhbWVidWZmZXIiOwogTVNHIGtJbnZhbGlkTXVsdGl0ZXh0dXJlVW5pdCA9ICJTcGVjaWZpZWQg
dW5pdCBtdXN0IGJlIGluIFtHTF9URVhUVVJFMCwgR0xfVEVYVFVSRTAgKyBHTF9NQVhfVEVYVFVS
RV9VTklUUykiOwogTVNHIGtJbnZhbGlkTmFtZSA9ICJJbnZhbGlkIG5hbWUuIjsKIE1TRyBrSW52
YWxpZE5hbWVDaGFyYWN0ZXJzID0gIk5hbWUgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzLiI7
Ci1NU0cga0ludmFsaWRQYXRoQ29lZmZpY2llbnRzQXJyYXkgPSAiTm8gY29lZmZpY2llbnRzIGFy
cmF5IGdpdmVuLiI7Ci1NU0cga0ludmFsaWRQYXRoQ29tbWFuZCA9ICJJbnZhbGlkIGNvbW1hbmQu
IjsKLU1TRyBrSW52YWxpZFBhdGhDb21tYW5kc0FycmF5ID0gIk5vIGNvbW1hbmRzIGFycmF5IGdp
dmVuLiI7Ci1NU0cga0ludmFsaWRQYXRoQ29tcG9uZW50cyA9ICJVbmV4cGVjdGVkIG51bWJlciBv
ZiBjb21wb25lbnRzIjsKLU1TRyBrSW52YWxpZFBhdGhDb29yZGluYXRlVHlwZSA9ICJJbnZhbGlk
IGNvb3JkaW5hdGUgdHlwZS4iOwotTVNHIGtJbnZhbGlkUGF0aEVuZENhcHMgPSAiSW52YWxpZCBl
bmQgY2Fwcy4iOwotTVNHIGtJbnZhbGlkUGF0aEdlbk1vZGUgPSAiSW52YWxpZCBnZW4gbW9kZS4i
OwotTVNHIGtJbnZhbGlkUGF0aEpvaW5TdHlsZSA9ICJJbnZhbGlkIGpvaW4gc3R5bGUuIjsKLU1T
RyBrSW52YWxpZFBhdGhNYXRyaXggPSAiSW52YWxpZCBtYXRyaXguIjsKLU1TRyBrSW52YWxpZFBh
dGhNaXRlckxpbWl0ID0gIkludmFsaWQgbWl0ZXIgbGltaXQuIjsKLU1TRyBrSW52YWxpZFBhdGhO
YW1lQXJyYXkgPSAiTm8gcGF0aCBuYW1lIGFycmF5LiI7Ci1NU0cga0ludmFsaWRQYXRoTmFtZVR5
cGUgPSAiSW52YWxpZCBwYXRoIG5hbWUgdHlwZS4iOwotTVNHIGtJbnZhbGlkUGF0aE51bUNvbW1h
bmRzID0gIkludmFsaWQgbnVtYmVyIG9mIGNvbW1hbmRzLiI7Ci1NU0cga0ludmFsaWRQYXRoTnVt
Q29vcmRzID0gIkludmFsaWQgbnVtYmVyIG9mIGNvb3JkaW5hdGVzLiI7Ci1NU0cga0ludmFsaWRQ
YXRoTnVtQ29vcmRzQXJyYXkgPSAiTm8gY29vcmRpbmF0ZSBhcnJheSBnaXZlbi4iOwotTVNHIGtJ
bnZhbGlkUGF0aE51bVBhdGhzID0gIkludmFsaWQgKG5lZ2F0aXZlKSBudW1QYXRocy4iOwotTVNH
IGtJbnZhbGlkUGF0aFBhcmFtZXRlciA9ICJJbnZhbGlkIHBhdGggcGFyYW1ldGVyLiI7Ci1NU0cg
a0ludmFsaWRQYXRoU3Ryb2tlV2lkdGggPSAiSW52YWxpZCBzdHJva2Ugd2lkdGguIjsKLU1TRyBr
SW52YWxpZFBhdGhWYWx1ZUFycmF5ID0gIk5vIHZhbHVlIGFycmF5LiI7CiBNU0cga0ludmFsaWRQ
bmFtZSA9ICJJbnZhbGlkIHBuYW1lLiI7CiBNU0cga0ludmFsaWRQb2ludGVyUXVlcnkgPSAiSW52
YWxpZCBwb2ludGVyIHF1ZXJ5LiI7CiBNU0cga0ludmFsaWRQb2ludFBhcmFtZXRlciA9ICJJbnZh
bGlkIHBvaW50IHBhcmFtZXRlci4iOwpAQCAtMzkyLDExICszNzksOSBAQCBNU0cga05vQWN0aXZl
R3JhcGhpY3NTaGFkZXJTdGFnZSA9ICJJdCBpcyBhIHVuZGVmaW5lZCBiZWhhdmlvdXIgdG8gcmVu
ZGVyIHdpdGhvdQogTVNHIGtOb0FjdGl2ZVByb2dyYW1XaXRoQ29tcHV0ZVNoYWRlciA9ICJObyBh
Y3RpdmUgcHJvZ3JhbSBmb3IgdGhlIGNvbXB1dGUgc2hhZGVyIHN0YWdlLiI7CiBNU0cga05vRGVm
aW5lZENsZWFyQ29udmVyc2lvbiA9ICJObyBkZWZpbmVkIGNvbnZlcnNpb24gYmV0d2VlbiBjbGVh
ciB2YWx1ZSBhbmQgYXR0YWNobWVudCBmb3JtYXQuIjsKIE1TRyBrTm9uUG9zaXRpdmVEcmF3VGV4
dHVyZURpbWVuc2lvbiA9ICJCb3RoIHdpZHRoIGFuZCBoZWlnaHQgYXJndW1lbnQgb2YgZHJhd24g
dGV4dHVyZSBtdXN0IGJlIHBvc2l0aXZlLiI7Ci1NU0cga05vUGF0aE9yTm9QYXRoRGF0YSA9ICJO
byBzdWNoIHBhdGggb3IgcGF0aCBoYXMgbm8gZGF0YS4iOwogTVNHIGtOb1Byb2dyYW1CaW5hcnlG
b3JtYXRzID0gIk5vIHByb2dyYW0gYmluYXJ5IGZvcm1hdHMgc3VwcG9ydGVkLiI7CiBNU0cga05v
UmVhZEZyYW1lYnVmZmVyID0gIk5vIGFjdGl2ZSByZWFkIGZyYW1lYnVmZmVyLiI7CiBNU0cga05v
U2FtcGxlQWxwaGFUb0NvdmVyYWdlc0xpbWl0YXRpb24gPSAiQ3VycmVudCByZW5kZXJlciBkb2Vz
bid0IHN1cHBvcnQgYWxwaGEtdG8tY292ZXJhZ2UuIjsKLU1TRyBrTm9TdWNoUGF0aCA9ICJObyBz
dWNoIHBhdGggb2JqZWN0LiI7CiBNU0cga05vVHJhbnNmb3JtQXJyYXkgPSAiTm8gdHJhbnNmb3Jt
IGFycmF5IGdpdmVuLiI7CiBNU0cga05vVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXRWYXJpYWJsZXMg
PSAiVGhlIGFjdGl2ZSBwcm9ncmFtIGhhcyBzcGVjaWZpZWQgbm8gb3V0cHV0IHZhcmlhYmxlcyB0
byByZWNvcmQuIjsKIE1TRyBrTm9aZXJvRGl2aXNvciA9ICJBdCBsZWFzdCBvbmUgZW5hYmxlZCBh
dHRyaWJ1dGUgbXVzdCBoYXZlIGEgZGl2aXNvciBvZiB6ZXJvLiI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVDYXB0dXJlLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuY3BwCmluZGV4IGZh
NGFjOTk5MjBlODY0NTNjODI3ZjY2ZGRhM2YxZTM3NWJiNTEzNzMuLjEzMDdiZmE0ZGE0MDhkZjVh
YmQwNDZjYTUyMTZmMDIxZjg0NTJkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuY3BwCkBAIC0xOSw2ICsxOSw4IEBACiAj
aW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRl
eHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvUmVzb3VyY2VNYXAuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9TaGFkZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL2NhcHR1cmVfZ2xlc18yXzBfYXV0b2dlbi5oIgpAQCAtMjcsNiAr
MjksOSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9xdWVyeXV0aWxzLmgiCiAKKyNkZWZpbmUgVVNFX1NZU1RFTV9aTElCCisjaW5j
bHVkZSAiY29tcHJlc3Npb25fdXRpbHNfcG9ydGFibGUuaCIKKwogI2lmICFBTkdMRV9DQVBUVVJF
X0VOQUJMRUQKICMgICAgZXJyb3IgRnJhbWUgY2FwdHVyZSBtdXN0IGJlIGVuYmxlZCB0byBpbmNs
dWRlIHRoaXMgZmlsZS4KICNlbmRpZiAgLy8gIUFOR0xFX0NBUFRVUkVfRU5BQkxFRApAQCAtNDEs
NiArNDYsNyBAQCBjb25zdGV4cHIgY2hhciBrT3V0RGlyZWN0b3J5VmFyTmFtZVtdID0gIkFOR0xF
X0NBUFRVUkVfT1VUX0RJUiI7CiBjb25zdGV4cHIgY2hhciBrRnJhbWVTdGFydFZhck5hbWVbXSAg
ID0gIkFOR0xFX0NBUFRVUkVfRlJBTUVfU1RBUlQiOwogY29uc3RleHByIGNoYXIga0ZyYW1lRW5k
VmFyTmFtZVtdICAgICA9ICJBTkdMRV9DQVBUVVJFX0ZSQU1FX0VORCI7CiBjb25zdGV4cHIgY2hh
ciBrQ2FwdHVyZUxhYmVsW10gICAgICAgID0gIkFOR0xFX0NBUFRVUkVfTEFCRUwiOworY29uc3Rl
eHByIGNoYXIga0NvbXByZXNzaW9uW10gICAgICAgICA9ICJBTkdMRV9DQVBUVVJFX0NPTVBSRVNT
SU9OIjsKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKIApAQCAtNDksNiAr
NTUsNyBAQCBjb25zdGV4cHIgY2hhciBrQW5kcm9pZE91dERpcltdICAgICAgICAgPSAiZGVidWcu
YW5nbGUuY2FwdHVyZS5vdXRfZGlyIjsKIGNvbnN0ZXhwciBjaGFyIGtBbmRyb2lkRnJhbWVTdGFy
dFtdICAgICA9ICJkZWJ1Zy5hbmdsZS5jYXB0dXJlLmZyYW1lX3N0YXJ0IjsKIGNvbnN0ZXhwciBj
aGFyIGtBbmRyb2lkRnJhbWVFbmRbXSAgICAgICA9ICJkZWJ1Zy5hbmdsZS5jYXB0dXJlLmZyYW1l
X2VuZCI7CiBjb25zdGV4cHIgY2hhciBrQW5kcm9pZENhcHR1cmVMYWJlbFtdICAgPSAiZGVidWcu
YW5nbGUuY2FwdHVyZS5sYWJlbCI7Citjb25zdGV4cHIgY2hhciBrQW5kcm9pZENvbXByZXNzaW9u
W10gICAgPSAiZGVidWcuYW5nbGUuY2FwdHVyZS5jb21wcmVzc2lvbiI7CiAKIGNvbnN0ZXhwciBp
bnQga1N0cmVhbVNpemUgPSA2NDsKIApAQCAtMTA4LDkgKzExNSwxNiBAQCB2b2lkIFByaW1lQW5k
cm9pZEVudmlyb25tZW50VmFyaWFibGVzKCkKICAgICBzdGQ6OnN0cmluZyBjYXB0dXJlTGFiZWwg
PSBBbmRyb2lkR2V0RW52RnJvbVByb3Aoa0FuZHJvaWRDYXB0dXJlTGFiZWwpOwogICAgIGlmICgh
Y2FwdHVyZUxhYmVsLmVtcHR5KCkpCiAgICAgewotICAgICAgICBJTkZPKCkgPDwgIkNhcHR1cmUg
bGFiZWwgcmVhZCAiIDw8IGNhcHR1cmVMYWJlbCA8PCAiIGZyb20gIiA8PCBrQW5kcm9pZENhcHR1
cmVMYWJlbDsKKyAgICAgICAgSU5GTygpIDw8ICJGcmFtZSBjYXB0dXJlIHJlYWQgIiA8PCBjYXB0
dXJlTGFiZWwgPDwgIiBmcm9tICIgPDwga0FuZHJvaWRDYXB0dXJlTGFiZWw7CiAgICAgICAgIHNl
dGVudihrQ2FwdHVyZUxhYmVsLCBjYXB0dXJlTGFiZWwuY19zdHIoKSwgMSk7CiAgICAgfQorCisg
ICAgc3RkOjpzdHJpbmcgY29tcHJlc3Npb24gPSBBbmRyb2lkR2V0RW52RnJvbVByb3Aoa0FuZHJv
aWRDb21wcmVzc2lvbik7CisgICAgaWYgKCFjb21wcmVzc2lvbi5lbXB0eSgpKQorICAgIHsKKyAg
ICAgICAgSU5GTygpIDw8ICJGcmFtZSBjYXB0dXJlIHJlYWQgIiA8PCBjb21wcmVzc2lvbiA8PCAi
IGZyb20gIiA8PCBrQW5kcm9pZENvbXByZXNzaW9uOworICAgICAgICBzZXRlbnYoa0NvbXByZXNz
aW9uLCBjb21wcmVzc2lvbi5jX3N0cigpLCAxKTsKKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtMjg1
LDYgKzI5OSwzMCBAQCB2b2lkIFdyaXRlSW5saW5lRGF0YTxHTGZsb2F0Pihjb25zdCBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiAmdmVjLCBzdGQ6Om9zdHJlYW0gJm91dAogICAgIH0KIH0KIAordGVtcGxh
dGUgPD4KK3ZvaWQgV3JpdGVJbmxpbmVEYXRhPEdMY2hhcj4oY29uc3Qgc3RkOjp2ZWN0b3I8dWlu
dDhfdD4gJnZlYywgc3RkOjpvc3RyZWFtICZvdXQpCit7CisgICAgY29uc3QgR0xjaGFyICpkYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTGNoYXIgKj4odmVjLmRhdGEoKSk7CisgICAgc2l6
ZV90IGNvdW50ICAgICAgID0gdmVjLnNpemUoKSAvIHNpemVvZihHTGNoYXIpOworCisgICAgaWYg
KGRhdGEgPT0gbnVsbHB0ciB8fCBkYXRhWzBdID09ICdcMCcpCisgICAgeworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgb3V0IDw8ICJcIiI7CisKKyAgICBmb3IgKHNpemVfdCBkYXRhSW5k
ZXggPSAwOyBkYXRhSW5kZXggPCBjb3VudDsgKytkYXRhSW5kZXgpCisgICAgeworICAgICAgICBp
ZiAoZGF0YVtkYXRhSW5kZXhdID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBvdXQgPDwgc3RhdGljX2Nhc3Q8R0xjaGFyPihkYXRhW2RhdGFJbmRleF0pOworICAgIH0KKwor
ICAgIG91dCA8PCAiXCIiOworfQorCiBjb25zdGV4cHIgc2l6ZV90IGtJbmxpbmVEYXRhVGhyZXNo
b2xkID0gMTI4OwogCiB2b2lkIFdyaXRlU3RyaW5nUGFyYW1SZXBsYXkoc3RkOjpvc3RyZWFtICZv
dXQsIGNvbnN0IFBhcmFtQ2FwdHVyZSAmcGFyYW0pCkBAIC00MTUsNyArNDUzLDEyIEBAIHZvaWQg
V3JpdGVCaW5hcnlQYXJhbVJlcGxheShEYXRhQ291bnRlcnMgKmNvdW50ZXJzLAogICAgICAgICAg
ICAgY2FzZSBQYXJhbVR5cGU6OlRHTGVudW1Db25zdFBvaW50ZXI6CiAgICAgICAgICAgICAgICAg
V3JpdGVJbmxpbmVEYXRhPEdMdWludD4oZGF0YSwgaGVhZGVyKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xjaGFyUG9pbnRlcjoKKyAgICAg
ICAgICAgICAgICBXcml0ZUlubGluZURhdGE8R0xjaGFyPihkYXRhLCBoZWFkZXIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBJ
TkZPKCkgPDwgIlVuaGFuZGxlZCBQYXJhbVR5cGU6ICIgPDwgYW5nbGU6OlBhcmFtVHlwZVRvU3Ry
aW5nKG92ZXJyaWRlVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBpbiAiIDw8IGNh
bGwubmFtZSgpOwogICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDQxLDYgKzQ4NCwxOCBAQCB2b2lkIFdyaXRlQ3Bw
UmVwbGF5Rm9yQ2FsbChjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKICAgICAgICAgY2FsbE91dCA8
PCAiZ1NoYWRlclByb2dyYW1NYXBbIiA8PCBpZCA8PCAiXSA9ICI7CiAgICAgfQogCisgICAgaWYg
KGNhbGwuZW50cnlQb2ludCA9PSBnbDo6RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2UpCisgICAg
eworICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcyA9CisgICAgICAgICAgICBjYWxsLnBhcmFtcy5n
ZXRQYXJhbSgiYWNjZXNzIiwgUGFyYW1UeXBlOjpUR0xiaXRmaWVsZCwgMykudmFsdWUuR0xiaXRm
aWVsZFZhbDsKKworICAgICAgICBpZiAoYWNjZXNzICYgR0xfTUFQX1dSSVRFX0JJVCkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gVHJhY2sgdGhlIHJldHVybmVkIHBvaW50ZXIgc28gd2UgdXBk
YXRlIGl0cyBkYXRhCisgICAgICAgICAgICBjYWxsT3V0IDw8ICJnTWFwcGVkQnVmZmVyRGF0YSA9
ICI7CisgICAgICAgIH0KKyAgICB9CisKICAgICBjYWxsT3V0IDw8IGNhbGwubmFtZSgpIDw8ICIo
IjsKIAogICAgIGJvb2wgZmlyc3QgPSB0cnVlOwpAQCAtNDc1LDcgKzUzMCw3IEBAIHZvaWQgV3Jp
dGVDcHBSZXBsYXlGb3JDYWxsKGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhbGxP
dXQgPDwgcGFyYW07CisgICAgICAgICAgICAgICAgV3JpdGVQYXJhbUNhcHR1cmVSZXBsYXkoY2Fs
bE91dCwgY2FsbCwgcGFyYW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVs
c2UKQEAgLTU5MCwzMyArNjQ1LDcxIEBAIHN0cnVjdCBTYXZlRmlsZUhlbHBlcgogICAgIHN0ZDo6
c3RyaW5nIGZpbGVQYXRoOwogfTsKIAotdm9pZCBTYXZlQmluYXJ5RGF0YShjb25zdCBzdGQ6OnN0
cmluZyAmb3V0RGlyLAotICAgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW0gJm91dCwKK3N0
ZDo6c3RyaW5nIEdldEJpbmFyeURhdGFGaWxlUGF0aChib29sIGNvbXByZXNzaW9uLCBpbnQgY29u
dGV4dElkLCBjb25zdCBzdGQ6OnN0cmluZyAmY2FwdHVyZUxhYmVsKQoreworICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGZuYW1lU3RyZWFtOworICAgIGZuYW1lU3RyZWFtIDw8IEZtdENhcHR1cmVQcmVm
aXgoY29udGV4dElkLCBjYXB0dXJlTGFiZWwpIDw8ICIuYW5nbGVkYXRhIjsKKyAgICBpZiAoY29t
cHJlc3Npb24pCisgICAgeworICAgICAgICBmbmFtZVN0cmVhbSA8PCAiLmd6IjsKKyAgICB9Cisg
ICAgcmV0dXJuIGZuYW1lU3RyZWFtLnN0cigpOworfQorCit2b2lkIFNhdmVCaW5hcnlEYXRhKGJv
b2wgY29tcHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZv
dXREaXIsCiAgICAgICAgICAgICAgICAgICAgIGludCBjb250ZXh0SWQsCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZjYXB0dXJlTGFiZWwsCi0gICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGZyYW1lSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4g
JmJpbmFyeURhdGEpCiB7Ci0gICAgc3RkOjpzdHJpbmcgYmluYXJ5RGF0YUZpbGVOYW1lID0KLSAg
ICAgICAgR2V0Q2FwdHVyZUZpbGVOYW1lKGNvbnRleHRJZCwgY2FwdHVyZUxhYmVsLCBmcmFtZUlu
ZGV4LCBzdWZmaXgpOworICAgIHN0ZDo6c3RyaW5nIGJpbmFyeURhdGFGaWxlTmFtZSA9IEdldEJp
bmFyeURhdGFGaWxlUGF0aChjb21wcmVzc2lvbiwgY29udGV4dElkLCBjYXB0dXJlTGFiZWwpOwor
ICAgIHN0ZDo6c3RyaW5nIGRhdGFGaWxlcGF0aCAgICAgICA9IG91dERpciArIGJpbmFyeURhdGFG
aWxlTmFtZTsKKworICAgIFNhdmVGaWxlSGVscGVyIHNhdmVEYXRhKGRhdGFGaWxlcGF0aCwgc3Rk
Ojppb3M6OmJpbmFyeSk7CiAKLSAgICBvdXQgPDwgIiAgICBMb2FkQmluYXJ5RGF0YShcIiIgPDwg
YmluYXJ5RGF0YUZpbGVOYW1lIDw8ICJcIiwgIgotICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+
KGJpbmFyeURhdGEuc2l6ZSgpKSA8PCAiKTtcbiI7CisgICAgaWYgKGNvbXByZXNzaW9uKQorICAg
IHsKKyAgICAgICAgLy8gU2F2ZSBjb21wcmVzc2VkIGRhdGEuCisgICAgICAgIHVMb25nIHVuY29t
cHJlc3NlZFNpemUgICAgICAgPSBzdGF0aWNfY2FzdDx1TG9uZz4oYmluYXJ5RGF0YS5zaXplKCkp
OworICAgICAgICB1TG9uZyBleHBlY3RlZENvbXByZXNzZWRTaXplID0gemxpYl9pbnRlcm5hbDo6
R3ppcEV4cGVjdGVkQ29tcHJlc3NlZFNpemUodW5jb21wcmVzc2VkU2l6ZSk7CiAKLSAgICBzdGQ6
OnN0cmluZyBkYXRhRmlsZXBhdGggPQotICAgICAgICBHZXRDYXB0dXJlRmlsZVBhdGgob3V0RGly
LCBjb250ZXh0SWQsIGNhcHR1cmVMYWJlbCwgZnJhbWVJbmRleCwgc3VmZml4KTsKKyAgICAgICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4gY29tcHJlc3NlZERhdGEoZXhwZWN0ZWRDb21wcmVzc2VkU2l6
ZSwgMCk7CiAKLSAgICBTYXZlRmlsZUhlbHBlciBzYXZlRGF0YShkYXRhRmlsZXBhdGgsIHN0ZDo6
aW9zOjpiaW5hcnkpOwotICAgIHNhdmVEYXRhLm9mcy53cml0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIgKj4oYmluYXJ5RGF0YS5kYXRhKCkpLCBiaW5hcnlEYXRhLnNpemUoKSk7CisgICAg
ICAgIHVMb25nIGNvbXByZXNzZWRTaXplID0gZXhwZWN0ZWRDb21wcmVzc2VkU2l6ZTsKKyAgICAg
ICAgaW50IHpSZXN1bHQgPSB6bGliX2ludGVybmFsOjpHemlwQ29tcHJlc3NIZWxwZXIoY29tcHJl
c3NlZERhdGEuZGF0YSgpLCAmY29tcHJlc3NlZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeURhdGEuZGF0YSgpLCB1bmNv
bXByZXNzZWRTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyKTsKKworICAgICAgICBpZiAoelJlc3VsdCAh
PSBaX09LKQorICAgICAgICB7CisgICAgICAgICAgICBGQVRBTCgpIDw8ICJFcnJvciBjb21wcmVz
c2luZyBiaW5hcnkgZGF0YTogIiA8PCB6UmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgc2F2
ZURhdGEub2ZzLndyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihjb21wcmVzc2Vk
RGF0YS5kYXRhKCkpLCBjb21wcmVzc2VkU2l6ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHNhdmVEYXRhLm9mcy53cml0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4o
YmluYXJ5RGF0YS5kYXRhKCkpLCBiaW5hcnlEYXRhLnNpemUoKSk7CisgICAgfQorfQorCit2b2lk
IFdyaXRlTG9hZEJpbmFyeURhdGFDYWxsKGJvb2wgY29tcHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY29udGV4dElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmY2FwdHVyZUxhYmVsKQoreworICAgIHN0ZDo6c3RyaW5nIGJpbmFyeURh
dGFGaWxlTmFtZSA9IEdldEJpbmFyeURhdGFGaWxlUGF0aChjb21wcmVzc2lvbiwgY29udGV4dElk
LCBjYXB0dXJlTGFiZWwpOworICAgIG91dCA8PCAiICAgIExvYWRCaW5hcnlEYXRhKFwiIiA8PCBi
aW5hcnlEYXRhRmlsZU5hbWUgPDwgIlwiKTtcbiI7CiB9CiAKLXZvaWQgV3JpdGVDcHBSZXBsYXko
Y29uc3Qgc3RkOjpzdHJpbmcgJm91dERpciwKK3ZvaWQgV3JpdGVDcHBSZXBsYXkoYm9vbCBjb21w
cmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm91dERpciwK
ICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnRleHRJZCwKICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmNhcHR1cmVMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgZnJhbWVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
Q2FsbENhcHR1cmU+ICZmcmFtZUNhbGxzLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxDYWxsQ2FwdHVyZT4gJnNldHVwQ2FsbHMpCisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAmc2V0dXBDYWxscywKKyAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gKmJpbmFyeURhdGEpCiB7CiAgICAgRGF0YUNvdW50
ZXJzIGNvdW50ZXJzOwogCkBAIC02NDEsMjEgKzczNCwxNiBAQCB2b2lkIFdyaXRlQ3BwUmVwbGF5
KGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCiAgICAgICAgIG91dCA8PCAie1xuIjsKIAogICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzZXR1cENhbGxTdHJlYW07Ci0gICAgICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IHNldHVwQmluYXJ5RGF0YTsKKworICAgICAgICBXcml0ZUxvYWRCaW5hcnlE
YXRhQ2FsbChjb21wcmVzc2lvbiwgc2V0dXBDYWxsU3RyZWFtLCBjb250ZXh0SWQsIGNhcHR1cmVM
YWJlbCk7CiAKICAgICAgICAgZm9yIChjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCA6IHNldHVwQ2Fs
bHMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldHVwQ2FsbFN0cmVhbSA8PCAiICAgICI7Ci0g
ICAgICAgICAgICBXcml0ZUNwcFJlcGxheUZvckNhbGwoY2FsbCwgJmNvdW50ZXJzLCBzZXR1cENh
bGxTdHJlYW0sIGhlYWRlciwgJnNldHVwQmluYXJ5RGF0YSk7CisgICAgICAgICAgICBXcml0ZUNw
cFJlcGxheUZvckNhbGwoY2FsbCwgJmNvdW50ZXJzLCBzZXR1cENhbGxTdHJlYW0sIGhlYWRlciwg
YmluYXJ5RGF0YSk7CiAgICAgICAgICAgICBzZXR1cENhbGxTdHJlYW0gPDwgIjtcbiI7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIXNldHVwQmluYXJ5RGF0YS5lbXB0eSgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBTYXZlQmluYXJ5RGF0YShvdXREaXIsIG91dCwgY29udGV4dElkLCBjYXB0
dXJlTGFiZWwsIGZyYW1lSW5kZXgsICIuc2V0dXAuYW5nbGVkYXRhIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldHVwQmluYXJ5RGF0YSk7Ci0gICAgICAgIH0KLQogICAgICAgICBvdXQg
PDwgc2V0dXBDYWxsU3RyZWFtLnN0cigpOwogCiAgICAgICAgIG91dCA8PCAifVxuIjsKQEAgLTY2
NiwyMCArNzU0LDE0IEBAIHZvaWQgV3JpdGVDcHBSZXBsYXkoY29uc3Qgc3RkOjpzdHJpbmcgJm91
dERpciwKICAgICBvdXQgPDwgIntcbiI7CiAKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBjYWxsU3Ry
ZWFtOwotICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGJpbmFyeURhdGE7CiAKICAgICBmb3IgKGNv
bnN0IENhbGxDYXB0dXJlICZjYWxsIDogZnJhbWVDYWxscykKICAgICB7CiAgICAgICAgIGNhbGxT
dHJlYW0gPDwgIiAgICAiOwotICAgICAgICBXcml0ZUNwcFJlcGxheUZvckNhbGwoY2FsbCwgJmNv
dW50ZXJzLCBjYWxsU3RyZWFtLCBoZWFkZXIsICZiaW5hcnlEYXRhKTsKKyAgICAgICAgV3JpdGVD
cHBSZXBsYXlGb3JDYWxsKGNhbGwsICZjb3VudGVycywgY2FsbFN0cmVhbSwgaGVhZGVyLCBiaW5h
cnlEYXRhKTsKICAgICAgICAgY2FsbFN0cmVhbSA8PCAiO1xuIjsKICAgICB9CiAKLSAgICBpZiAo
IWJpbmFyeURhdGEuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIFNhdmVCaW5hcnlEYXRhKG91dERp
ciwgb3V0LCBjb250ZXh0SWQsIGNhcHR1cmVMYWJlbCwgZnJhbWVJbmRleCwgIi5hbmdsZWRhdGEi
LCBiaW5hcnlEYXRhKTsKLSAgICB9Ci0KICAgICBvdXQgPDwgY2FsbFN0cmVhbS5zdHIoKTsKICAg
ICBvdXQgPDwgIn1cbiI7CiAKQEAgLTcwMiw3ICs3ODQsOCBAQCB2b2lkIFdyaXRlQ3BwUmVwbGF5
KGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCiAgICAgfQogfQogCi12b2lkIFdyaXRlQ3BwUmVw
bGF5SW5kZXhGaWxlcyhjb25zdCBzdGQ6OnN0cmluZyAmb3V0RGlyLAordm9pZCBXcml0ZUNwcFJl
cGxheUluZGV4RmlsZXMoYm9vbCBjb21wcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY29udGV4dElkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJmNhcHR1cmVMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGZyYW1lU3RhcnQsCkBAIC03MjQsMzcgKzgwNyw2OSBAQCB2b2lkIFdyaXRl
Q3BwUmVwbGF5SW5kZXhGaWxlcyhjb25zdCBzdGQ6OnN0cmluZyAmb3V0RGlyLAogICAgIGhlYWRl
ciA8PCAiI2luY2x1ZGUgPGNzdGRpbz5cbiI7CiAgICAgaGVhZGVyIDw8ICIjaW5jbHVkZSA8Y3N0
cmluZz5cbiI7CiAgICAgaGVhZGVyIDw8ICIjaW5jbHVkZSA8bGltaXRzPlxuIjsKKyAgICBoZWFk
ZXIgPDwgIiNpbmNsdWRlIDx2ZWN0b3I+XG4iOwogICAgIGhlYWRlciA8PCAiI2luY2x1ZGUgPHVu
b3JkZXJlZF9tYXA+XG4iOwogICAgIGhlYWRlciA8PCAiXG4iOwotICAgIGhlYWRlciA8PCAiLy8g
UmVwbGF5IGZ1bmN0aW9uc1xuIjsKLSAgICBoZWFkZXIgPDwgIlxuIjsKLSAgICBoZWFkZXIgPDwg
InVzaW5nIFJlc291cmNlTWFwID0gc3RkOjp1bm9yZGVyZWRfbWFwPEdMdWludCwgR0x1aW50Pjtc
biI7Ci0gICAgaGVhZGVyIDw8ICJcbiI7CisKICAgICBpZiAoIWNhcHR1cmVMYWJlbC5lbXB0eSgp
KQogICAgIHsKICAgICAgICAgaGVhZGVyIDw8ICJuYW1lc3BhY2UgIiA8PCBjYXB0dXJlTGFiZWwg
PDwgIlxuIjsKICAgICAgICAgaGVhZGVyIDw8ICJ7XG4iOwogICAgIH0KKyAgICBoZWFkZXIgPDwg
Ii8vIFJlcGxheSBmdW5jdGlvbnNcbiI7CisgICAgaGVhZGVyIDw8ICJcbiI7CisgICAgaGVhZGVy
IDw8ICIvLyBNYXBzIGZyb20gPGNhcHR1cmVkIFByb2dyYW0gSUQsIGNhcHR1cmVkIGxvY2F0aW9u
PiB0byBydW4tdGltZSBsb2NhdGlvbi5cbiI7CisgICAgaGVhZGVyCisgICAgICAgIDw8ICJ1c2lu
ZyBMb2NhdGlvbnNNYXAgPSBzdGQ6OnVub3JkZXJlZF9tYXA8R0x1aW50LCBzdGQ6OnVub3JkZXJl
ZF9tYXA8R0xpbnQsIEdMaW50Pj47XG4iOworICAgIGhlYWRlciA8PCAiZXh0ZXJuIExvY2F0aW9u
c01hcCBnVW5pZm9ybUxvY2F0aW9ucztcbiI7CisgICAgaGVhZGVyIDw8ICJleHRlcm4gR0x1aW50
IGdDdXJyZW50UHJvZ3JhbTtcbiI7CisgICAgaGVhZGVyIDw8ICJ2b2lkIFVwZGF0ZVVuaWZvcm1M
b2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciAqbmFtZSwgR0xpbnQgbG9jYXRpb24p
O1xuIjsKKyAgICBoZWFkZXIgPDwgInZvaWQgRGVsZXRlVW5pZm9ybUxvY2F0aW9ucyhHTHVpbnQg
cHJvZ3JhbSk7XG4iOworICAgIGhlYWRlciA8PCAidm9pZCBVcGRhdGVDdXJyZW50UHJvZ3JhbShH
THVpbnQgcHJvZ3JhbSk7XG4iOworICAgIGhlYWRlciA8PCAiXG4iOworICAgIGhlYWRlciA8PCAi
Ly8gTWFwcyBmcm9tIGNhcHR1cmVkIFJlc291cmNlIElEIHRvIHJ1bi10aW1lIFJlc291cmNlIElE
LlxuIjsKKyAgICBoZWFkZXIgPDwgInVzaW5nIFJlc291cmNlTWFwID0gc3RkOjp1bm9yZGVyZWRf
bWFwPEdMdWludCwgR0x1aW50PjtcbiI7CisgICAgaGVhZGVyIDw8ICJcbiI7CisgICAgaGVhZGVy
IDw8ICJcbiI7CiAgICAgaGVhZGVyIDw8ICJjb25zdGV4cHIgdWludDMyX3Qga1JlcGxheUZyYW1l
U3RhcnQgPSAiIDw8IGZyYW1lU3RhcnQgPDwgIjtcbiI7CiAgICAgaGVhZGVyIDw8ICJjb25zdGV4
cHIgdWludDMyX3Qga1JlcGxheUZyYW1lRW5kID0gIiA8PCBmcmFtZUVuZCA8PCAiO1xuIjsKICAg
ICBoZWFkZXIgPDwgIlxuIjsKICAgICBoZWFkZXIgPDwgInZvaWQgU2V0dXBDb250ZXh0IiA8PCBj
b250ZXh0SWQgPDwgIlJlcGxheSgpO1xuIjsKICAgICBoZWFkZXIgPDwgInZvaWQgUmVwbGF5Q29u
dGV4dCIgPDwgY29udGV4dElkIDw8ICJGcmFtZSh1aW50MzJfdCBmcmFtZUluZGV4KTtcbiI7CiAg
ICAgaGVhZGVyIDw8ICJcbiI7CisgICAgaGVhZGVyIDw8ICJ1c2luZyBGcmFtZWJ1ZmZlckNoYW5n
ZUNhbGxiYWNrID0gdm9pZCgqKSh2b2lkICp1c2VyRGF0YSwgR0xlbnVtIHRhcmdldCwgR0x1aW50
ICIKKyAgICAgICAgICAgICAgImZyYW1lYnVmZmVyKTtcbiI7CisgICAgaGVhZGVyIDw8ICJ2b2lk
IFNldEZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2sodm9pZCAqdXNlckRhdGEsIEZyYW1lYnVmZmVy
Q2hhbmdlQ2FsbGJhY2sgIgorICAgICAgICAgICAgICAiY2FsbGJhY2spO1xuIjsKKyAgICBoZWFk
ZXIgPDwgInZvaWQgT25GcmFtZWJ1ZmZlckNoYW5nZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJh
bWVidWZmZXIpO1xuIjsKKyAgICBoZWFkZXIgPDwgIlxuIjsKICAgICBmb3IgKHVpbnQzMl90IGZy
YW1lSW5kZXggPSBmcmFtZVN0YXJ0OyBmcmFtZUluZGV4IDwgZnJhbWVFbmQ7ICsrZnJhbWVJbmRl
eCkKICAgICB7CiAgICAgICAgIGhlYWRlciA8PCAidm9pZCAiIDw8IEZtdFJlcGxheUZ1bmN0aW9u
KGNvbnRleHRJZCwgZnJhbWVJbmRleCkgPDwgIjtcbiI7CiAgICAgfQogICAgIGhlYWRlciA8PCAi
XG4iOworICAgIGhlYWRlciA8PCAiY29uc3RleHByIGJvb2wga0lzQmluYXJ5RGF0YUNvbXByZXNz
ZWQgPSAiIDw8IChjb21wcmVzc2lvbiA/ICJ0cnVlIiA6ICJmYWxzZSIpCisgICAgICAgICAgIDw8
ICI7XG4iOworICAgIGhlYWRlciA8PCAiXG4iOworICAgIGhlYWRlciA8PCAidXNpbmcgRGVjb21w
cmVzc0NhbGxiYWNrID0gdWludDhfdCAqKCopKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICYp
O1xuIjsKKyAgICBoZWFkZXIgPDwgInZvaWQgU2V0QmluYXJ5RGF0YURlY29tcHJlc3NDYWxsYmFj
ayhEZWNvbXByZXNzQ2FsbGJhY2sgY2FsbGJhY2spO1xuIjsKICAgICBoZWFkZXIgPDwgInZvaWQg
U2V0QmluYXJ5RGF0YURpcihjb25zdCBjaGFyICpkYXRhRGlyKTtcbiI7Ci0gICAgaGVhZGVyIDw8
ICJ2b2lkIExvYWRCaW5hcnlEYXRhKGNvbnN0IGNoYXIgKmZpbGVOYW1lLCBzaXplX3Qgc2l6ZSk7
XG4iOworICAgIGhlYWRlciA8PCAidm9pZCBMb2FkQmluYXJ5RGF0YShjb25zdCBjaGFyICpmaWxl
TmFtZSk7XG4iOwogICAgIGhlYWRlciA8PCAiXG4iOwogICAgIGhlYWRlciA8PCAiLy8gR2xvYmFs
IHN0YXRlXG4iOwogICAgIGhlYWRlciA8PCAiXG4iOwogICAgIGhlYWRlciA8PCAiZXh0ZXJuIHVp
bnQ4X3QgKmdCaW5hcnlEYXRhO1xuIjsKKyAgICBoZWFkZXIgPDwgImV4dGVybiB2b2lkICpnTWFw
cGVkQnVmZmVyRGF0YTtcbiI7CiAKICAgICBzb3VyY2UgPDwgIiNpbmNsdWRlIFwiIiA8PCBGbXRD
YXB0dXJlUHJlZml4KGNvbnRleHRJZCwgY2FwdHVyZUxhYmVsKSA8PCAiLmhcIlxuIjsKICAgICBz
b3VyY2UgPDwgIlxuIjsKKworICAgIGlmICghY2FwdHVyZUxhYmVsLmVtcHR5KCkpCisgICAgewor
ICAgICAgICBzb3VyY2UgPDwgIm5hbWVzcGFjZSAiIDw8IGNhcHR1cmVMYWJlbCA8PCAiXG4iOwor
ICAgICAgICBzb3VyY2UgPDwgIntcbiI7CisgICAgfQorCiAgICAgc291cmNlIDw8ICJuYW1lc3Bh
Y2VcbiI7CiAgICAgc291cmNlIDw8ICJ7XG4iOwogICAgIHNvdXJjZSA8PCAidm9pZCBVcGRhdGVS
ZXNvdXJjZU1hcChSZXNvdXJjZU1hcCAqcmVzb3VyY2VNYXAsIEdMdWludCBpZCwgR0xzaXplaSAi
CkBAIC03NjMsMjEgKzg3OCwzNSBAQCB2b2lkIFdyaXRlQ3BwUmVwbGF5SW5kZXhGaWxlcyhjb25z
dCBzdGQ6OnN0cmluZyAmb3V0RGlyLAogICAgIHNvdXJjZSA8PCAiICAgIEdMdWludCByZXR1cm5l
ZElEO1xuIjsKICAgICBzdGQ6OnN0cmluZyBjYXB0dXJlTmFtZXNwYWNlID0gIWNhcHR1cmVMYWJl
bC5lbXB0eSgpID8gY2FwdHVyZUxhYmVsICsgIjo6IiA6ICIiOwogICAgIHNvdXJjZSA8PCAiICAg
IG1lbWNweSgmcmV0dXJuZWRJRCwgJiIgPDwgY2FwdHVyZU5hbWVzcGFjZQotICAgICAgICAgICA8
PCAiZ1JlYWRCdWZmZXJbcmVhZEJ1ZmZlck9mZnNldF0sIHNpemVvZihHTHVpbnQpKTtcbiAiOwor
ICAgICAgICAgICA8PCAiZ1JlYWRCdWZmZXJbcmVhZEJ1ZmZlck9mZnNldF0sIHNpemVvZihHTHVp
bnQpKTtcbiI7CiAgICAgc291cmNlIDw8ICIgICAgKCpyZXNvdXJjZU1hcClbaWRdID0gcmV0dXJu
ZWRJRDtcbiI7CiAgICAgc291cmNlIDw8ICJ9XG4iOwogICAgIHNvdXJjZSA8PCAiXG4iOworICAg
IHNvdXJjZSA8PCAiRGVjb21wcmVzc0NhbGxiYWNrIGdEZWNvbXByZXNzQ2FsbGJhY2s7XG4iOwog
ICAgIHNvdXJjZSA8PCAiY29uc3QgY2hhciAqZ0JpbmFyeURhdGFEaXIgPSBcIi5cIjtcbiI7Cisg
ICAgc291cmNlIDw8ICJGcmFtZWJ1ZmZlckNoYW5nZUNhbGxiYWNrIGdGcmFtZWJ1ZmZlckNoYW5n
ZUNhbGxiYWNrO1xuIjsKKyAgICBzb3VyY2UgPDwgInZvaWQgKmdGcmFtZWJ1ZmZlckNoYW5nZUNh
bGxiYWNrVXNlckRhdGE7XG4iOwogICAgIHNvdXJjZSA8PCAifSAgLy8gbmFtZXNwYWNlXG4iOwog
ICAgIHNvdXJjZSA8PCAiXG4iOwotCi0gICAgaWYgKCFjYXB0dXJlTGFiZWwuZW1wdHkoKSkKLSAg
ICB7Ci0gICAgICAgIHNvdXJjZSA8PCAibmFtZXNwYWNlICIgPDwgY2FwdHVyZUxhYmVsIDw8ICJc
biI7Ci0gICAgICAgIHNvdXJjZSA8PCAie1xuIjsKLSAgICB9CisgICAgc291cmNlIDw8ICJMb2Nh
dGlvbnNNYXAgZ1VuaWZvcm1Mb2NhdGlvbnM7XG4iOworICAgIHNvdXJjZSA8PCAiR0x1aW50IGdD
dXJyZW50UHJvZ3JhbSA9IDA7XG4iOworICAgIHNvdXJjZSA8PCAiXG4iOworICAgIHNvdXJjZSA8
PCAidm9pZCBVcGRhdGVVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IGNoYXIg
Km5hbWUsIEdMaW50IGxvY2F0aW9uKVxuIjsKKyAgICBzb3VyY2UgPDwgIntcbiI7CisgICAgc291
cmNlIDw8ICIgICAgZ1VuaWZvcm1Mb2NhdGlvbnNbcHJvZ3JhbV1bbG9jYXRpb25dID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7XG4iOworICAgIHNvdXJjZSA8PCAifVxuIjsK
KyAgICBzb3VyY2UgPDwgInZvaWQgRGVsZXRlVW5pZm9ybUxvY2F0aW9ucyhHTHVpbnQgcHJvZ3Jh
bSlcbiI7CisgICAgc291cmNlIDw8ICJ7XG4iOworICAgIHNvdXJjZSA8PCAiICAgIGdVbmlmb3Jt
TG9jYXRpb25zLmVyYXNlKHByb2dyYW0pO1xuIjsKKyAgICBzb3VyY2UgPDwgIn1cbiI7CisgICAg
c291cmNlIDw8ICJ2b2lkIFVwZGF0ZUN1cnJlbnRQcm9ncmFtKEdMdWludCBwcm9ncmFtKVxuIjsK
KyAgICBzb3VyY2UgPDwgIntcbiI7CisgICAgc291cmNlIDw8ICIgICAgZ0N1cnJlbnRQcm9ncmFt
ID0gcHJvZ3JhbTtcbiI7CisgICAgc291cmNlIDw8ICJ9XG4iOworICAgIHNvdXJjZSA8PCAiXG4i
OwogCiAgICAgc291cmNlIDw8ICJ1aW50OF90ICpnQmluYXJ5RGF0YSA9IG51bGxwdHI7XG4iOwor
ICAgIHNvdXJjZSA8PCAidm9pZCogZ01hcHBlZEJ1ZmZlckRhdGEgPSBudWxscHRyO1xuIjsKIAog
ICAgIGlmIChyZWFkQnVmZmVyU2l6ZSA+IDApCiAgICAgewpAQCAtNzkzLDkgKzkyMiw3IEBAIHZv
aWQgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCiAg
ICAgfQogICAgIGZvciAoUmVzb3VyY2VJRFR5cGUgcmVzb3VyY2VUeXBlIDogQWxsRW51bXM8UmVz
b3VyY2VJRFR5cGU+KCkpCiAgICAgewotICAgICAgICBpZiAoIWhhc1Jlc291cmNlVHlwZVtyZXNv
dXJjZVR5cGVdKQotICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgLy8gVE9ETzogT25s
eSBlbWl0IHJlc291cmNlcyBuZWVkZWQgYnkgdGhlIGZyYW1lcyAoYW5nbGVidWcuY29tLzQyMjMp
CiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBHZXRSZXNvdXJjZUlEVHlwZU5hbWUocmVzb3Vy
Y2VUeXBlKTsKICAgICAgICAgaGVhZGVyIDw8ICJleHRlcm4gUmVzb3VyY2VNYXAgZyIgPDwgbmFt
ZSA8PCAiTWFwO1xuIjsKICAgICAgICAgc291cmNlIDw8ICJSZXNvdXJjZU1hcCBnIiA8PCBuYW1l
IDw8ICJNYXA7XG4iOwpAQCAtODAzLDYgKzkzMCwyMSBAQCB2b2lkIFdyaXRlQ3BwUmVwbGF5SW5k
ZXhGaWxlcyhjb25zdCBzdGQ6OnN0cmluZyAmb3V0RGlyLAogCiAgICAgaGVhZGVyIDw8ICJcbiI7
CiAKKyAgICBzb3VyY2UgPDwgIlxuIjsKKyAgICBzb3VyY2UgPDwgInZvaWQgU2V0RnJhbWVidWZm
ZXJDaGFuZ2VDYWxsYmFjayh2b2lkICp1c2VyRGF0YSwgRnJhbWVidWZmZXJDaGFuZ2VDYWxsYmFj
ayAiCisgICAgICAgICAgICAgICJjYWxsYmFjaylcbiI7CisgICAgc291cmNlIDw8ICJ7XG4iOwor
ICAgIHNvdXJjZSA8PCAiICAgIGdGcmFtZWJ1ZmZlckNoYW5nZUNhbGxiYWNrVXNlckRhdGEgPSB1
c2VyRGF0YTtcbiI7CisgICAgc291cmNlIDw8ICIgICAgZ0ZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJh
Y2sgPSBjYWxsYmFjaztcbiI7CisgICAgc291cmNlIDw8ICJ9XG4iOworICAgIHNvdXJjZSA8PCAi
XG4iOworICAgIHNvdXJjZSA8PCAidm9pZCBPbkZyYW1lYnVmZmVyQ2hhbmdlKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBmcmFtZWJ1ZmZlcilcbiI7CisgICAgc291cmNlIDw8ICJ7XG4iOworICAgIHNv
dXJjZSA8PCAiICAgIGlmIChnRnJhbWVidWZmZXJDaGFuZ2VDYWxsYmFjaylcbiI7CisgICAgc291
cmNlIDw8ICIgICAgICAgIGdGcmFtZWJ1ZmZlckNoYW5nZUNhbGxiYWNrKGdGcmFtZWJ1ZmZlckNo
YW5nZUNhbGxiYWNrVXNlckRhdGEsIHRhcmdldCwgIgorICAgICAgICAgICAgICAiZnJhbWVidWZm
ZXIpO1xuIjsKKyAgICBzb3VyY2UgPDwgIn1cbiI7CisKICAgICBzb3VyY2UgPDwgIlxuIjsKICAg
ICBzb3VyY2UgPDwgInZvaWQgUmVwbGF5Q29udGV4dCIgPDwgY29udGV4dElkIDw8ICJGcmFtZSh1
aW50MzJfdCBmcmFtZUluZGV4KVxuIjsKICAgICBzb3VyY2UgPDwgIntcbiI7CkBAIC04MTksMjIg
Kzk2MSw1NCBAQCB2b2lkIFdyaXRlQ3BwUmVwbGF5SW5kZXhGaWxlcyhjb25zdCBzdGQ6OnN0cmlu
ZyAmb3V0RGlyLAogICAgIHNvdXJjZSA8PCAiICAgIH1cbiI7CiAgICAgc291cmNlIDw8ICJ9XG4i
OwogICAgIHNvdXJjZSA8PCAiXG4iOworICAgIHNvdXJjZSA8PCAidm9pZCBTZXRCaW5hcnlEYXRh
RGVjb21wcmVzc0NhbGxiYWNrKERlY29tcHJlc3NDYWxsYmFjayBjYWxsYmFjaylcbiI7CisgICAg
c291cmNlIDw8ICJ7XG4iOworICAgIHNvdXJjZSA8PCAiICAgIGdEZWNvbXByZXNzQ2FsbGJhY2sg
PSBjYWxsYmFjaztcbiI7CisgICAgc291cmNlIDw8ICJ9XG4iOworICAgIHNvdXJjZSA8PCAiXG4i
OwogICAgIHNvdXJjZSA8PCAidm9pZCBTZXRCaW5hcnlEYXRhRGlyKGNvbnN0IGNoYXIgKmRhdGFE
aXIpXG4iOwogICAgIHNvdXJjZSA8PCAie1xuIjsKICAgICBzb3VyY2UgPDwgIiAgICBnQmluYXJ5
RGF0YURpciA9IGRhdGFEaXI7XG4iOwogICAgIHNvdXJjZSA8PCAifVxuIjsKICAgICBzb3VyY2Ug
PDwgIlxuIjsKLSAgICBzb3VyY2UgPDwgInZvaWQgTG9hZEJpbmFyeURhdGEoY29uc3QgY2hhciAq
ZmlsZU5hbWUsIHNpemVfdCBzaXplKVxuIjsKKyAgICBzb3VyY2UgPDwgInZvaWQgTG9hZEJpbmFy
eURhdGEoY29uc3QgY2hhciAqZmlsZU5hbWUpXG4iOwogICAgIHNvdXJjZSA8PCAie1xuIjsKICAg
ICBzb3VyY2UgPDwgIiAgICBpZiAoZ0JpbmFyeURhdGEgIT0gbnVsbHB0cilcbiI7CiAgICAgc291
cmNlIDw8ICIgICAge1xuIjsKICAgICBzb3VyY2UgPDwgIiAgICAgICAgZGVsZXRlIFtdIGdCaW5h
cnlEYXRhO1xuIjsKICAgICBzb3VyY2UgPDwgIiAgICB9XG4iOwotICAgIHNvdXJjZSA8PCAiICAg
IGdCaW5hcnlEYXRhID0gbmV3IHVpbnQ4X3Rbc2l6ZV07XG4iOwogICAgIHNvdXJjZSA8PCAiICAg
IGNoYXIgcGF0aEJ1ZmZlclsxMDAwXSA9IHt9O1xuIjsKICAgICBzb3VyY2UgPDwgIiAgICBzcHJp
bnRmKHBhdGhCdWZmZXIsIFwiJXMvJXNcIiwgZ0JpbmFyeURhdGFEaXIsIGZpbGVOYW1lKTtcbiI7
CiAgICAgc291cmNlIDw8ICIgICAgRklMRSAqZnAgPSBmb3BlbihwYXRoQnVmZmVyLCBcInJiXCIp
O1xuIjsKLSAgICBzb3VyY2UgPDwgIiAgICAodm9pZClmcmVhZChnQmluYXJ5RGF0YSwgMSwgc2l6
ZSwgZnApO1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICBpZiAoZnAgPT0gMClcbiI7CisgICAgc291
cmNlIDw8ICIgICAge1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAgZnByaW50ZihzdGRlcnIs
IFwiRXJyb3IgbG9hZGluZyBiaW5hcnkgZGF0YSBmaWxlOiAlc1xcblwiLCBmaWxlTmFtZSk7XG4i
OworICAgIHNvdXJjZSA8PCAiICAgICAgICBleGl0KDEpO1xuIjsKKyAgICBzb3VyY2UgPDwgIiAg
ICB9XG4iOworICAgIHNvdXJjZSA8PCAiICAgIGZzZWVrKGZwLCAwLCBTRUVLX0VORCk7XG4iOwor
ICAgIHNvdXJjZSA8PCAiICAgIGxvbmcgc2l6ZSA9IGZ0ZWxsKGZwKTtcbiI7CisgICAgc291cmNl
IDw8ICIgICAgZnNlZWsoZnAsIDAsIFNFRUtfU0VUKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAg
aWYgKGdEZWNvbXByZXNzQ2FsbGJhY2spXG4iOworICAgIHNvdXJjZSA8PCAiICAgIHtcbiI7Cisg
ICAgc291cmNlIDw8ICIgICAgICAgIGlmICghc3Ryc3RyKGZpbGVOYW1lLCBcIi5nelwiKSlcbiI7
CisgICAgc291cmNlIDw8ICIgICAgICAgIHtcbiI7CisgICAgc291cmNlIDw8ICIgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgXCJGaWxlbmFtZSBkb2VzIG5vdCBlbmQgaW4gLmd6XCIpO1xuIjsK
KyAgICBzb3VyY2UgPDwgIiAgICAgICAgICAgIGV4aXQoMSk7XG4iOworICAgIHNvdXJjZSA8PCAi
ICAgICAgICB9XG4iOworICAgIHNvdXJjZSA8PCAiICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBjb21wcmVzc2VkRGF0YShzaXplKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAgICAgICh2b2lk
KWZyZWFkKGNvbXByZXNzZWREYXRhLmRhdGEoKSwgMSwgc2l6ZSwgZnApO1xuIjsKKyAgICBzb3Vy
Y2UgPDwgIiAgICAgICAgZ0JpbmFyeURhdGEgPSBnRGVjb21wcmVzc0NhbGxiYWNrKGNvbXByZXNz
ZWREYXRhKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAgfVxuIjsKKyAgICBzb3VyY2UgPDwgIiAg
ICBlbHNlXG4iOworICAgIHNvdXJjZSA8PCAiICAgIHtcbiI7CisgICAgc291cmNlIDw8ICIgICAg
ICAgIGlmICghc3Ryc3RyKGZpbGVOYW1lLCBcIi5hbmdsZWRhdGFcIikpXG4iOworICAgIHNvdXJj
ZSA8PCAiICAgICAgICB7XG4iOworICAgIHNvdXJjZSA8PCAiICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsIFwiRmlsZW5hbWUgZG9lcyBub3QgZW5kIGluIC5hbmdsZWRhdGFcIik7XG4iOworICAg
IHNvdXJjZSA8PCAiICAgICAgICAgICAgZXhpdCgxKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAg
ICAgIH1cbiI7CisgICAgc291cmNlIDw8ICIgICAgICAgIGdCaW5hcnlEYXRhID0gbmV3IHVpbnQ4
X3Rbc2l6ZV07XG4iOworICAgIHNvdXJjZSA8PCAiICAgICAgICAodm9pZClmcmVhZChnQmluYXJ5
RGF0YSwgMSwgc2l6ZSwgZnApO1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICB9XG4iOwogICAgIHNv
dXJjZSA8PCAiICAgIGZjbG9zZShmcCk7XG4iOwogICAgIHNvdXJjZSA8PCAifVxuIjsKIApAQCAt
ODQ3LDE0ICsxMDIxLDIxIEBAIHZvaWQgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKGNvbnN0IHN0
ZDo6c3RyaW5nICZvdXREaXIsCiAgICAgICAgIHNvdXJjZSA8PCAidm9pZCBVcGRhdGVDbGllbnRB
cnJheVBvaW50ZXIoaW50IGFycmF5SW5kZXgsIGNvbnN0IHZvaWQgKmRhdGEsIHVpbnQ2NF90IHNp
emUpIgogICAgICAgICAgICAgICAgPDwgIlxuIjsKICAgICAgICAgc291cmNlIDw8ICJ7XG4iOwot
ICAgICAgICBzb3VyY2UgPDwgIiAgICBtZW1jcHkoZ0NsaWVudEFycmF5c1thcnJheUluZGV4XSwg
ZGF0YSwgc2l6ZSk7XG4iOworICAgICAgICBzb3VyY2UgPDwgIiAgICBtZW1jcHkoZ0NsaWVudEFy
cmF5c1thcnJheUluZGV4XSwgZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7XG4iOwog
ICAgICAgICBzb3VyY2UgPDwgIn1cbiI7CiAgICAgfQogCisgICAgaGVhZGVyIDw8ICJ2b2lkIFVw
ZGF0ZUNsaWVudEJ1ZmZlckRhdGEoY29uc3Qgdm9pZCAqc291cmNlLCBHTHNpemVpIHNpemUpO1xu
IjsKKyAgICBzb3VyY2UgPDwgIlxuIjsKKyAgICBzb3VyY2UgPDwgInZvaWQgVXBkYXRlQ2xpZW50
QnVmZmVyRGF0YShjb25zdCB2b2lkICpzb3VyY2UsIEdMc2l6ZWkgc2l6ZSkiOworICAgIHNvdXJj
ZSA8PCAiXG4iOworICAgIHNvdXJjZSA8PCAie1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICBtZW1j
cHkoZ01hcHBlZEJ1ZmZlckRhdGEsIHNvdXJjZSwgc2l6ZSk7XG4iOworICAgIHNvdXJjZSA8PCAi
fVxuIjsKKwogICAgIGZvciAoUmVzb3VyY2VJRFR5cGUgcmVzb3VyY2VUeXBlIDogQWxsRW51bXM8
UmVzb3VyY2VJRFR5cGU+KCkpCiAgICAgewotICAgICAgICBpZiAoIWhhc1Jlc291cmNlVHlwZVty
ZXNvdXJjZVR5cGVdKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIFRPRE86IE9u
bHkgZW1pdCByZXNvdXJjZXMgbmVlZGVkIGJ5IHRoZSBmcmFtZXMgKGFuZ2xlYnVnLmNvbS80MjIz
KQogICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gR2V0UmVzb3VyY2VJRFR5cGVOYW1lKHJlc291
cmNlVHlwZSk7CiAgICAgICAgIGhlYWRlciA8PCAidm9pZCBVcGRhdGUiIDw8IG5hbWUgPDwgIklE
KEdMdWludCBpZCwgR0xzaXplaSByZWFkQnVmZmVyT2Zmc2V0KTtcbiI7CiAKQEAgLTk0OCw2ICsx
MTI5LDY2IEBAIHZvaWQgQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKGNvbnN0IENhbGxDYXB0dXJl
ICZjYWxsLAogICAgIH0KIH0KIAordm9pZCBDYXB0dXJlVXBkYXRlVW5pZm9ybUxvY2F0aW9ucyhj
b25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSwgc3RkOjp2ZWN0b3I8Q2FsbENhcHR1cmU+ICpjYWxs
c091dCkKK3sKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybT4gJnVuaWZv
cm1zICAgICA9IHByb2dyYW0tPmdldFN0YXRlKCkuZ2V0VW5pZm9ybXMoKTsKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6VmFyaWFibGVMb2NhdGlvbj4gJmxvY2F0aW9ucyA9IHByb2dyYW0tPmdl
dFVuaWZvcm1Mb2NhdGlvbnMoKTsKKworICAgIGZvciAoR0xpbnQgbG9jYXRpb24gPSAwOyBsb2Nh
dGlvbiA8IHN0YXRpY19jYXN0PEdMaW50Pihsb2NhdGlvbnMuc2l6ZSgpKTsgKytsb2NhdGlvbikK
KyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvblZhciA9
IGxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1
bmlmb3JtICAgICAgICA9IHVuaWZvcm1zW2xvY2F0aW9uVmFyLmluZGV4XTsKKworICAgICAgICBQ
YXJhbUJ1ZmZlciBwYXJhbXM7CisgICAgICAgIHBhcmFtcy5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFt
IiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtLT5pZCgpKTsKKworICAgICAg
ICBzdGQ6OnN0cmluZyBuYW1lID0gdW5pZm9ybS5uYW1lOworCisgICAgICAgIGlmICh1bmlmb3Jt
LmlzQXJyYXkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGxvY2F0aW9uVmFyLmFycmF5
SW5kZXggPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIE5vbi1zZXF1ZW50
aWFsIGFycmF5IHVuaWZvcm0gbG9jYXRpb25zIGFyZSBub3QgY3VycmVudGx5IGhhbmRsZWQuCisg
ICAgICAgICAgICAgICAgLy8gSW4gcHJhY3RpY2UgYXJyYXkgbG9jYXRpb25zIHNob3VsZG4ndCBl
dmVyIGJlIG5vbi1zZXF1ZW50aWFsLgorICAgICAgICAgICAgICAgIEFTU0VSVCh1bmlmb3JtLmxv
Y2F0aW9uID09IC0xIHx8CisgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uID09IHVuaWZv
cm0ubG9jYXRpb24gKyBzdGF0aWNfY2FzdDxpbnQ+KGxvY2F0aW9uVmFyLmFycmF5SW5kZXgpKTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHVuaWZvcm0uaXNBcnJheU9mQXJyYXlzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBuYW1l
ID0gZ2w6OlN0cmlwTGFzdEFycmF5SW5kZXgobmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBQ
YXJhbUNhcHR1cmUgbmFtZVBhcmFtKCJuYW1lIiwgUGFyYW1UeXBlOjpUR0xjaGFyQ29uc3RQb2lu
dGVyKTsKKyAgICAgICAgQ2FwdHVyZVN0cmluZyhuYW1lLmNfc3RyKCksICZuYW1lUGFyYW0pOwor
ICAgICAgICBwYXJhbXMuYWRkUGFyYW0oc3RkOjptb3ZlKG5hbWVQYXJhbSkpOworCisgICAgICAg
IHBhcmFtcy5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2Nh
dGlvbik7CisgICAgICAgIGNhbGxzT3V0LT5lbXBsYWNlX2JhY2soIlVwZGF0ZVVuaWZvcm1Mb2Nh
dGlvbiIsIHN0ZDo6bW92ZShwYXJhbXMpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ2FwdHVyZURlbGV0
ZVVuaWZvcm1Mb2NhdGlvbnMoZ2w6OlNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBzdGQ6OnZlY3Rv
cjxDYWxsQ2FwdHVyZT4gKmNhbGxzT3V0KQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtczsKKyAg
ICBwYXJhbXMuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbSIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dy
YW1JRCwgcHJvZ3JhbSk7CisgICAgY2FsbHNPdXQtPmVtcGxhY2VfYmFjaygiRGVsZXRlVW5pZm9y
bUxvY2F0aW9ucyIsIHN0ZDo6bW92ZShwYXJhbXMpKTsKK30KKwordm9pZCBDYXB0dXJlT25GcmFt
ZWJ1ZmZlckNoYW5nZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6RnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlcklELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4gKmNhbGxzT3V0KQoreworICAg
IFBhcmFtQnVmZmVyIHBhcmFtczsKKyAgICBwYXJhbXMuYWRkVmFsdWVQYXJhbSgidGFyZ2V0Iiwg
UGFyYW1UeXBlOjpUR0xlbnVtLCB0YXJnZXQpOworICAgIHBhcmFtcy5hZGRWYWx1ZVBhcmFtKCJm
cmFtZWJ1ZmZlciIsIFBhcmFtVHlwZTo6VEZyYW1lYnVmZmVySUQsIGZyYW1lYnVmZmVySUQpOwor
ICAgIGNhbGxzT3V0LT5lbXBsYWNlX2JhY2soIk9uRnJhbWVidWZmZXJDaGFuZ2UiLCBzdGQ6Om1v
dmUocGFyYW1zKSk7Cit9CisKIHZvaWQgTWF5YmVDYXB0dXJlVXBkYXRlUmVzb3VyY2VJRHMoc3Rk
Ojp2ZWN0b3I8Q2FsbENhcHR1cmU+ICpjYWxsc091dCkKIHsKICAgICBjb25zdCBDYWxsQ2FwdHVy
ZSAmY2FsbCA9IGNhbGxzT3V0LT5iYWNrKCk7CkBAIC05NzksMTIgKzEyMjAsNiBAQCB2b2lkIE1h
eWJlQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAqY2Fs
bHNPdXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgZ2w6
OkVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01JVU06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IEhhbmRsZSBwYXRoIElEcy4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYy
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5
UG9pbnQ6OkdlblByb2dyYW1QaXBlbGluZXM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0
IFBhcmFtQ2FwdHVyZSAmcGlwZWxpbmVzID0KQEAgLTEwNTcsNiArMTI5MiwxOCBAQCB2b2lkIE1h
eWJlQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAqY2Fs
bHNPdXQpCiAgICAgfQogfQogCit2b2lkIENhcHR1cmVVcGRhdGVDdXJyZW50UHJvZ3JhbShjb25z
dCBDYWxsQ2FwdHVyZSAmY2FsbCwgc3RkOjp2ZWN0b3I8Q2FsbENhcHR1cmU+ICpjYWxsc091dCkK
K3sKKyAgICBjb25zdCBQYXJhbUNhcHR1cmUgJnBhcmFtID0KKyAgICAgICAgY2FsbC5wYXJhbXMu
Z2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDAp
OworICAgIGdsOjpTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbUlEID0gcGFyYW0udmFsdWUuU2hhZGVy
UHJvZ3JhbUlEVmFsOworCisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CisgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbSIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1J
RCwgcHJvZ3JhbUlEKTsKKworICAgIGNhbGxzT3V0LT5lbXBsYWNlX2JhY2soIlVwZGF0ZUN1cnJl
bnRQcm9ncmFtIiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKIGJvb2wgSXNEZWZhdWx0
Q3VycmVudFZhbHVlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJy
ZW50VmFsdWUpCiB7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZS5UeXBlICE9IGdsOjpWZXJ0ZXhBdHRy
aWJUeXBlOjpGbG9hdCkKQEAgLTEwNjcsMTAgKzEzMTQsMTAzIEBAIGJvb2wgSXNEZWZhdWx0Q3Vy
cmVudFZhbHVlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50
VmFsdWUpCiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5WYWx1ZXMuRmxvYXRWYWx1ZXNbMl0gPT0g
MC4wZiAmJiBjdXJyZW50VmFsdWUuVmFsdWVzLkZsb2F0VmFsdWVzWzNdID09IDEuMGY7CiB9CiAK
K2Jvb2wgSXNRdWVyeUFjdGl2ZShjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUsIGdsOjpRdWVyeUlE
ICZxdWVyeUlEKQoreworICAgIGNvbnN0IGdsOjpBY3RpdmVRdWVyeU1hcCAmYWN0aXZlUXVlcmll
cyA9IGdsU3RhdGUuZ2V0QWN0aXZlUXVlcmllc0ZvckNhcHR1cmUoKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8gJmFjdGl2ZVF1ZXJ5SXRlciA6IGFjdGl2ZVF1ZXJpZXMpCisgICAgeworICAgICAgICBj
b25zdCBnbDo6UXVlcnkgKmFjdGl2ZVF1ZXJ5ID0gYWN0aXZlUXVlcnlJdGVyLmdldCgpOworICAg
ICAgICBpZiAoYWN0aXZlUXVlcnkgJiYgYWN0aXZlUXVlcnktPmlkKCkgPT0gcXVlcnlJRCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2FwdHVyZShzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVy
ZT4gKnNldHVwQ2FsbHMsIENhbGxDYXB0dXJlICYmY2FsbCkKK3sKKyAgICBzZXR1cENhbGxzLT5l
bXBsYWNlX2JhY2soc3RkOjptb3ZlKGNhbGwpKTsKK30KKwordm9pZCBDYXB0dXJlRnJhbWVidWZm
ZXJBdHRhY2htZW50KHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAqc2V0dXBDYWxscywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U3RhdGUgJnJlcGxheVN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgJmF0dGFjaG1lbnQpCit7CisgICAgR0x1aW50IHJlc291cmNlSUQgPSBhdHRh
Y2htZW50LmdldFJlc291cmNlKCktPmdldElkKCk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBM
YXllciBhdHRhY2htZW50cy4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYyCisgICAgaWYgKGF0dGFj
aG1lbnQudHlwZSgpID09IEdMX1RFWFRVUkUpCisgICAgeworICAgICAgICBnbDo6SW1hZ2VJbmRl
eCBpbmRleCA9IGF0dGFjaG1lbnQuZ2V0VGV4dHVyZUltYWdlSW5kZXgoKTsKKworICAgICAgICBD
YXB0dXJlKHNldHVwQ2FsbHMsIENhcHR1cmVGcmFtZWJ1ZmZlclRleHR1cmUyRChyZXBsYXlTdGF0
ZSwgdHJ1ZSwgR0xfRlJBTUVCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQuZ2V0QmluZGluZygpLCBpbmRleC5n
ZXRUYXJnZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3Jlc291cmNlSUR9LCBpbmRleC5nZXRMZXZlbEluZGV4KCkpKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnQudHlwZSgpID09IEdM
X1JFTkRFUkJVRkZFUik7CisgICAgICAgIENhcHR1cmUoc2V0dXBDYWxscywgQ2FwdHVyZUZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHJlcGxheVN0YXRlLCB0cnVlLCBHTF9GUkFNRUJVRkZFUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXR0YWNobWVudC5nZXRCaW5kaW5nKCksIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jlc291cmNlSUR9
KSk7CisgICAgfQorfQorCit2b2lkIENhcHR1cmVWZXJ0ZXhBcnJheURhdGEoc3RkOjp2ZWN0b3I8
Q2FsbENhcHR1cmU+ICpzZXR1cENhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OlN0YXRlICpyZXBsYXlTdGF0ZSkKK3sKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6VmVydGV4QXR0cmlidXRlPiAmdmVydGV4QXR0cmlicyA9IHZlcnRleEFycmF5LT5nZXRWZXJ0
ZXhBdHRyaWJ1dGVzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlZlcnRleEJpbmRpbmc+
ICZ2ZXJ0ZXhCaW5kaW5ncyAgPSB2ZXJ0ZXhBcnJheS0+Z2V0VmVydGV4QmluZGluZ3MoKTsKKwor
ICAgIGZvciAoR0x1aW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBnbDo6TUFYX1ZF
UlRFWF9BVFRSSUJTOyArK2F0dHJpYkluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSBkZWZhdWx0QXR0cmliKGF0dHJpYkluZGV4KTsKKyAgICAgICAgY29uc3Qg
Z2w6OlZlcnRleEJpbmRpbmcgZGVmYXVsdEJpbmRpbmc7CisKKyAgICAgICAgY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliID0gdmVydGV4QXR0cmlic1thdHRyaWJJbmRleF07CisgICAg
ICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nICA9IHZlcnRleEJpbmRpbmdzW2F0
dHJpYi5iaW5kaW5nSW5kZXhdOworCisgICAgICAgIGlmIChhdHRyaWIuZW5hYmxlZCAhPSBkZWZh
dWx0QXR0cmliLmVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIENhcHR1cmUoc2V0dXBD
YWxscywgQ2FwdHVyZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5KCpyZXBsYXlTdGF0ZSwgZmFsc2Us
IGF0dHJpYkluZGV4KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXR0cmliLmZvcm1hdCAh
PSBkZWZhdWx0QXR0cmliLmZvcm1hdCB8fCBhdHRyaWIucG9pbnRlciAhPSBkZWZhdWx0QXR0cmli
LnBvaW50ZXIgfHwKKyAgICAgICAgICAgIGJpbmRpbmcuZ2V0U3RyaWRlKCkgIT0gZGVmYXVsdEJp
bmRpbmcuZ2V0U3RyaWRlKCkgfHwKKyAgICAgICAgICAgIGJpbmRpbmcuZ2V0QnVmZmVyKCkuZ2V0
KCkgIT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVy
ID0gYmluZGluZy5nZXRCdWZmZXIoKS5nZXQoKTsKKworICAgICAgICAgICAgaWYgKGJ1ZmZlciAh
PSByZXBsYXlTdGF0ZS0+Z2V0QXJyYXlCdWZmZXIoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXBsYXlTdGF0ZS0+c2V0QnVmZmVyQmluZGluZyhjb250ZXh0LCBnbDo6QnVmZmVy
QmluZGluZzo6QXJyYXksIGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgQ2FwdHVyZShzZXR1cENh
bGxzLCBDYXB0dXJlQmluZEJ1ZmZlcigqcmVwbGF5U3RhdGUsIHRydWUsIGdsOjpCdWZmZXJCaW5k
aW5nOjpBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+aWQoKSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBD
YXB0dXJlKHNldHVwQ2FsbHMsIENhcHR1cmVWZXJ0ZXhBdHRyaWJQb2ludGVyKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlcGxheVN0YXRlLCB0cnVlLCBhdHRyaWJJbmRl
eCwgYXR0cmliLmZvcm1hdC0+Y2hhbm5lbENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0cmliLmZvcm1hdC0+dmVydGV4QXR0cmliVHlwZSwgYXR0cmliLmZvcm1h
dC0+aXNOb3JtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5n
LmdldFN0cmlkZSgpLCBhdHRyaWIucG9pbnRlcikpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGJpbmRpbmcuZ2V0RGl2aXNvcigpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIENhcHR1
cmUoc2V0dXBDYWxscywgQ2FwdHVyZVZlcnRleEF0dHJpYkRpdmlzb3IoKnJlcGxheVN0YXRlLCB0
cnVlLCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmluZGluZy5nZXREaXZpc29yKCkpKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwogdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxD
YWxsQ2FwdHVyZT4gKnNldHVwQ2FsbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTaGFkZXJTb3VyY2VNYXAgJmNhY2hlZFNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtU291cmNlTWFwICZjYWNoZWRQcm9ncmFtU291
cmNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1Tb3VyY2VN
YXAgJmNhY2hlZFByb2dyYW1Tb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVGV4dHVyZUxldmVsRGF0YU1hcCAmY2FjaGVkVGV4dHVyZUxldmVsRGF0YSkKIHsKICAg
ICBjb25zdCBnbDo6U3RhdGUgJmFwaVN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICBn
bDo6U3RhdGUgcmVwbGF5U3RhdGUoMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgRUdMX09Q
RU5HTF9FU19BUEksCkBAIC0xMTI5LDU1ICsxNDY5LDQ5IEBAIHZvaWQgQ2FwdHVyZU1pZEV4ZWN1
dGlvblNldHVwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIC8vIFZlcnRleCBpbnB1
dCBzdGF0ZXMuIE9ubHkgaGFuZGxlcyBHTEVTIDIuMCBzdGF0ZXMgcmlnaHQgbm93LgogICAgIC8v
IE11c3QgaGFwcGVuIGFmdGVyIGJ1ZmZlciBkYXRhIGluaXRpYWxpemF0aW9uLgogICAgIC8vIFRP
RE8oaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYyKTogQ29tcGxldGUgc3RhdGUgY2FwdHVyZS4KKwor
ICAgIC8vIENhcHR1cmUgZGVmYXVsdCB2ZXJ0ZXggYXR0cmlicwogICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhPiAmY3VycmVudFZhbHVlcyA9CiAg
ICAgICAgIGFwaVN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXMoKTsKLSAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4QXR0cmlidXRlPiAmdmVydGV4QXR0cmlicyA9Ci0gICAg
ICAgIGFwaVN0YXRlLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKLSAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4QmluZGluZz4gJnZlcnRleEJpbmRpbmdzID0K
LSAgICAgICAgYXBpU3RhdGUuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QmluZGluZ3MoKTsK
IAogICAgIGZvciAoR0x1aW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTOyArK2F0dHJpYkluZGV4KQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6
OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1
ZXNbYXR0cmliSW5kZXhdOwotICAgICAgICBpZiAoIUlzRGVmYXVsdEN1cnJlbnRWYWx1ZShjdXJy
ZW50VmFsdWUpKQorICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0
YSAmZGVmYXVsdFZhbHVlID0gY3VycmVudFZhbHVlc1thdHRyaWJJbmRleF07CisgICAgICAgIGlm
ICghSXNEZWZhdWx0Q3VycmVudFZhbHVlKGRlZmF1bHRWYWx1ZSkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNhcChDYXB0dXJlVmVydGV4QXR0cmliNGZ2KHJlcGxheVN0YXRlLCB0cnVlLCBhdHRy
aWJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRW
YWx1ZS5WYWx1ZXMuRmxvYXRWYWx1ZXMpKTsKKyAgICAgICAgICAgIENhcHR1cmUoc2V0dXBDYWxs
cywgQ2FwdHVyZVZlcnRleEF0dHJpYjRmdihyZXBsYXlTdGF0ZSwgdHJ1ZSwgYXR0cmliSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdFZhbHVlLlZhbHVlcy5GbG9hdFZhbHVlcykpOwogICAgICAgICB9CisgICAgfQogCi0g
ICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IHZlcnRleEF0dHJpYnNb
YXR0cmliSW5kZXhdOwotICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGluZyAg
PSB2ZXJ0ZXhCaW5kaW5nc1thdHRyaWIuYmluZGluZ0luZGV4XTsKLQotICAgICAgICBjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlIGRlZmF1bHRBdHRyaWIoYXR0cmliSW5kZXgpOwotICAgICAgICBj
b25zdCBnbDo6VmVydGV4QmluZGluZyBkZWZhdWx0QmluZGluZzsKLQotICAgICAgICBpZiAoYXR0
cmliLmVuYWJsZWQgIT0gZGVmYXVsdEF0dHJpYi5lbmFibGVkKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjYXAoQ2FwdHVyZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHJlcGxheVN0YXRlLCBmYWxz
ZSwgYXR0cmliSW5kZXgpKTsKLSAgICAgICAgfQorICAgIC8vIENhcHR1cmUgdmVydGV4IGFycmF5
IG9iamVjdHMKKyAgICBjb25zdCBnbDo6VmVydGV4QXJyYXlNYXAgJnZlcnRleEFycmF5TWFwID0g
Y29udGV4dC0+Z2V0VmVydGV4QXJyYXlzRm9yQ2FwdHVyZSgpOworICAgIGdsOjpWZXJ0ZXhBcnJh
eUlEIGJvdW5kVmVydGV4QXJyYXlJRCAgICAgPSB7MH07CisgICAgZm9yIChjb25zdCBhdXRvICZ2
ZXJ0ZXhBcnJheUl0ZXIgOiB2ZXJ0ZXhBcnJheU1hcCkKKyAgICB7CisgICAgICAgIGdsOjpWZXJ0
ZXhBcnJheUlEIHZlcnRleEFycmF5SUQgPSB7dmVydGV4QXJyYXlJdGVyLmZpcnN0fTsKKyAgICAg
ICAgY2FwKENhcHR1cmVHZW5WZXJ0ZXhBcnJheXMocmVwbGF5U3RhdGUsIHRydWUsIDEsICZ2ZXJ0
ZXhBcnJheUlEKSk7CisgICAgICAgIE1heWJlQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKHNldHVw
Q2FsbHMpOwogCi0gICAgICAgIGlmIChhdHRyaWIuZm9ybWF0ICE9IGRlZmF1bHRBdHRyaWIuZm9y
bWF0IHx8IGF0dHJpYi5wb2ludGVyICE9IGRlZmF1bHRBdHRyaWIucG9pbnRlciB8fAotICAgICAg
ICAgICAgYmluZGluZy5nZXRTdHJpZGUoKSAhPSBkZWZhdWx0QmluZGluZy5nZXRTdHJpZGUoKSB8
fAotICAgICAgICAgICAgYmluZGluZy5nZXRCdWZmZXIoKS5nZXQoKSAhPSBudWxscHRyKQorICAg
ICAgICBpZiAodmVydGV4QXJyYXlJdGVyLnNlY29uZCkKICAgICAgICAgewotICAgICAgICAgICAg
Z2w6OkJ1ZmZlciAqYnVmZmVyID0gYmluZGluZy5nZXRCdWZmZXIoKS5nZXQoKTsKKyAgICAgICAg
ICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgPSB2ZXJ0ZXhBcnJheUl0ZXIu
c2Vjb25kOwogCi0gICAgICAgICAgICBpZiAoYnVmZmVyICE9IHJlcGxheVN0YXRlLmdldEFycmF5
QnVmZmVyKCkpCisgICAgICAgICAgICAvLyBCaW5kIHRoZSB2ZXJ0ZXhBcnJheSAodW5sZXNzIGRl
ZmF1bHQpIGFuZCBwb3B1bGF0ZSBpdAorICAgICAgICAgICAgaWYgKHZlcnRleEFycmF5SUQudmFs
dWUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXBsYXlTdGF0ZS5zZXRC
dWZmZXJCaW5kaW5nKGNvbnRleHQsIGdsOjpCdWZmZXJCaW5kaW5nOjpBcnJheSwgYnVmZmVyKTsK
LSAgICAgICAgICAgICAgICBjYXAoQ2FwdHVyZUJpbmRCdWZmZXIocmVwbGF5U3RhdGUsIHRydWUs
IGdsOjpCdWZmZXJCaW5kaW5nOjpBcnJheSwgYnVmZmVyLT5pZCgpKSk7CisgICAgICAgICAgICAg
ICAgY2FwKENhcHR1cmVCaW5kVmVydGV4QXJyYXkocmVwbGF5U3RhdGUsIHRydWUsIHZlcnRleEFy
cmF5SUQpKTsKKyAgICAgICAgICAgICAgICBib3VuZFZlcnRleEFycmF5SUQgPSB2ZXJ0ZXhBcnJh
eUlEOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXAoQ2FwdHVyZVZlcnRleEF0dHJp
YlBvaW50ZXIocmVwbGF5U3RhdGUsIHRydWUsIGF0dHJpYkluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYi5mb3JtYXQtPmNoYW5uZWxDb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIuZm9ybWF0
LT52ZXJ0ZXhBdHRyaWJUeXBlLCBhdHRyaWIuZm9ybWF0LT5pc05vcm0oKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nLmdldFN0cmlkZSgpLCBhdHRy
aWIucG9pbnRlcikpOworICAgICAgICAgICAgQ2FwdHVyZVZlcnRleEFycmF5RGF0YShzZXR1cENh
bGxzLCBjb250ZXh0LCB2ZXJ0ZXhBcnJheSwgJnJlcGxheVN0YXRlKTsKICAgICAgICAgfQorICAg
IH0KIAotICAgICAgICBpZiAoYmluZGluZy5nZXREaXZpc29yKCkgIT0gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY2FwKENhcHR1cmVWZXJ0ZXhBdHRyaWJEaXZpc29yKHJlcGxheVN0YXRlLCB0
cnVlLCBhdHRyaWJJbmRleCwgYmluZGluZy5nZXREaXZpc29yKCkpKTsKLSAgICAgICAgfQorICAg
IC8vIEJpbmQgdGhlIGN1cnJlbnQgdmVydGV4IGFycmF5CisgICAgY29uc3QgZ2w6OlZlcnRleEFy
cmF5ICpjdXJyZW50VmVydGV4QXJyYXkgPSBhcGlTdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOworICAg
IGlmIChjdXJyZW50VmVydGV4QXJyYXktPmlkKCkgIT0gYm91bmRWZXJ0ZXhBcnJheUlEKQorICAg
IHsKKyAgICAgICAgY2FwKENhcHR1cmVCaW5kVmVydGV4QXJyYXkocmVwbGF5U3RhdGUsIHRydWUs
IGN1cnJlbnRWZXJ0ZXhBcnJheS0+aWQoKSkpOwogICAgIH0KIAogICAgIC8vIENhcHR1cmUgQnVm
ZmVyIGJpbmRpbmdzLgpAQCAtMTE5MCwxOCArMTUyNCwxOSBAQCB2b2lkIENhcHR1cmVNaWRFeGVj
dXRpb25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgLy8gd2Ugc2V0
IGVhcmxpZXIuCiAgICAgICAgIGJvb2wgaXNBcnJheSAgICAgICAgICAgICAgICAgID0gYmluZGlu
ZyA9PSBnbDo6QnVmZmVyQmluZGluZzo6QXJyYXk7CiAgICAgICAgIGNvbnN0IGdsOjpCdWZmZXIg
KmFycmF5QnVmZmVyID0gcmVwbGF5U3RhdGUuZ2V0QXJyYXlCdWZmZXIoKTsKLSAgICAgICAgaWYg
KChpc0FycmF5ICYmIGFycmF5QnVmZmVyLT5pZCgpICE9IGJ1ZmZlcklEKSB8fCAoIWlzQXJyYXkg
JiYgYnVmZmVySUQudmFsdWUgIT0gMCkpCisgICAgICAgIGlmICgoaXNBcnJheSAmJiBhcnJheUJ1
ZmZlciAmJiBhcnJheUJ1ZmZlci0+aWQoKSAhPSBidWZmZXJJRCkgfHwKKyAgICAgICAgICAgICgh
aXNBcnJheSAmJiBidWZmZXJJRC52YWx1ZSAhPSAwKSkKICAgICAgICAgewogICAgICAgICAgICAg
Y2FwKENhcHR1cmVCaW5kQnVmZmVyKHJlcGxheVN0YXRlLCB0cnVlLCBiaW5kaW5nLCBidWZmZXJJ
RCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gU2V0IGEgcGFjayBhbGlnbm1lbnQgb2Yg
MS4KLSAgICBnbDo6UGl4ZWxQYWNrU3RhdGUgJmN1cnJlbnRQYWNrU3RhdGUgPSByZXBsYXlTdGF0
ZS5nZXRQYWNrU3RhdGUoKTsKLSAgICBpZiAoY3VycmVudFBhY2tTdGF0ZS5hbGlnbm1lbnQgIT0g
MSkKKyAgICAvLyBTZXQgYSB1bnBhY2sgYWxpZ25tZW50IG9mIDEuCisgICAgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJmN1cnJlbnRVbnBhY2tTdGF0ZSA9IHJlcGxheVN0YXRlLmdldFVucGFja1N0YXRl
KCk7CisgICAgaWYgKGN1cnJlbnRVbnBhY2tTdGF0ZS5hbGlnbm1lbnQgIT0gMSkKICAgICB7CiAg
ICAgICAgIGNhcChDYXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUsIHRydWUsIEdMX1VOUEFD
S19BTElHTk1FTlQsIDEpKTsKLSAgICAgICAgY3VycmVudFBhY2tTdGF0ZS5hbGlnbm1lbnQgPSAx
OworICAgICAgICBjdXJyZW50VW5wYWNrU3RhdGUuYWxpZ25tZW50ID0gMTsKICAgICB9CiAKICAg
ICAvLyBDYXB0dXJlIFRleHR1cmUgc2V0dXAgYW5kIGRhdGEuCkBAIC0xMjM3LDYgKzE1NzIsMTAg
QEAgdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICBjYXAoQ2FwdHVyZVRleFBhcmFtZXRlcmkocmVwbGF5U3RhdGUsIHRy
dWUsIHRleHR1cmUtPmdldFR5cGUoKSwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIH07CiAKKyAg
ICAgICAgYXV0byBjYXBUZXhQYXJhbWYgPSBbY2FwLCAmcmVwbGF5U3RhdGUsIHRleHR1cmVdKEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkgeworICAgICAgICAgICAgY2FwKENhcHR1cmVUZXhQ
YXJhbWV0ZXJmKHJlcGxheVN0YXRlLCB0cnVlLCB0ZXh0dXJlLT5nZXRUeXBlKCksIHBuYW1lLCBw
YXJhbSkpOworICAgICAgICB9OworCiAgICAgICAgIGlmICh0ZXh0dXJlU2FtcGxlclN0YXRlLmdl
dE1pbkZpbHRlcigpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0TWluRmlsdGVyKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNhcFRleFBhcmFtKEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgdGV4
dHVyZVNhbXBsZXJTdGF0ZS5nZXRNaW5GaWx0ZXIoKSk7CkBAIC0xMjYyLDYgKzE2MDEsNDggQEAg
dm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICBjYXBUZXhQYXJhbShHTF9URVhUVVJFX1dSQVBfVCwgdGV4dHVyZVNhbXBs
ZXJTdGF0ZS5nZXRXcmFwVCgpKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0ZXh0dXJlU2Ft
cGxlclN0YXRlLmdldE1pbkxvZCgpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0TWluTG9kKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcFRleFBhcmFtZihHTF9URVhUVVJFX01JTl9MT0Qs
IHRleHR1cmVTYW1wbGVyU3RhdGUuZ2V0TWluTG9kKCkpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRleHR1cmVTYW1wbGVyU3RhdGUuZ2V0TWF4TG9kKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0
ZS5nZXRNYXhMb2QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FwVGV4UGFyYW1mKEdMX1RF
WFRVUkVfTUFYX0xPRCwgdGV4dHVyZVNhbXBsZXJTdGF0ZS5nZXRNYXhMb2QoKSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAodGV4dHVyZVNhbXBsZXJTdGF0ZS5nZXRDb21wYXJlTW9kZSgpICE9
IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0Q29tcGFyZU1vZGUoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY2FwVGV4UGFyYW0oR0xfVEVYVFVSRV9DT01QQVJFX01PREUsIHRleHR1cmVTYW1wbGVy
U3RhdGUuZ2V0Q29tcGFyZU1vZGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGV4dHVy
ZVNhbXBsZXJTdGF0ZS5nZXRDb21wYXJlRnVuYygpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0
Q29tcGFyZUZ1bmMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FwVGV4UGFyYW0oR0xfVEVY
VFVSRV9DT01QQVJFX0ZVTkMsIHRleHR1cmVTYW1wbGVyU3RhdGUuZ2V0Q29tcGFyZUZ1bmMoKSk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXh0dXJlIHBhcmFtZXRlcnMKKyAgICAgICAgLy8g
VE9ETzogQWRkIGltbXV0YWJsZSBhbmQgYmFzZS9tYXggd2hlbiBUZXhTdG9yYWdlIGlzIGhhbmRs
ZWQgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzY2MikKKyAgICAgICAgaWYgKHRleHR1cmUtPmdldFN3
aXp6bGVSZWQoKSAhPSBHTF9SRUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcFRleFBhcmFt
KEdMX1RFWFRVUkVfU1dJWlpMRV9SLCB0ZXh0dXJlLT5nZXRTd2l6emxlUmVkKCkpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHRleHR1cmUtPmdldFN3aXp6bGVHcmVlbigpICE9IEdMX0dSRUVO
KQorICAgICAgICB7CisgICAgICAgICAgICBjYXBUZXhQYXJhbShHTF9URVhUVVJFX1NXSVpaTEVf
RywgdGV4dHVyZS0+Z2V0U3dpenpsZUdyZWVuKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHRleHR1cmUtPmdldFN3aXp6bGVCbHVlKCkgIT0gR0xfQkxVRSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY2FwVGV4UGFyYW0oR0xfVEVYVFVSRV9TV0laWkxFX0IsIHRleHR1cmUtPmdldFN3aXp6
bGVCbHVlKCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRleHR1cmUtPmdldFN3aXp6bGVB
bHBoYSgpICE9IEdMX0FMUEhBKQorICAgICAgICB7CisgICAgICAgICAgICBjYXBUZXhQYXJhbShH
TF9URVhUVVJFX1NXSVpaTEVfQSwgdGV4dHVyZS0+Z2V0U3dpenpsZUFscGhhKCkpOworICAgICAg
ICB9CisKICAgICAgICAgLy8gSXRlcmF0ZSB0ZXh0dXJlIGxldmVscyBhbmQgbGF5ZXJzLgogICAg
ICAgICBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yIGltYWdlSXRlciA9IGdsOjpJbWFnZUluZGV4SXRl
cmF0b3I6Ok1ha2VHZW5lcmljKAogICAgICAgICAgICAgdGV4dHVyZS0+Z2V0VHlwZSgpLCAwLCB0
ZXh0dXJlLT5nZXRNaXBtYXBNYXhMZXZlbCgpICsgMSwgZ2w6OkltYWdlSW5kZXg6OmtFbnRpcmVM
ZXZlbCwKQEAgLTEyNzcsNjYgKzE2NTgsMTA4IEBAIHZvaWQgQ2FwdHVyZU1pZEV4ZWN1dGlvblNl
dHVwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgICAgICAgICBjb25zdCBnbDo6
SW50ZXJuYWxGb3JtYXQgJmZvcm1hdCA9ICpkZXNjLmZvcm1hdC5pbmZvOwogCi0gICAgICAgICAg
ICAvLyBBc3N1bWUgMkQgb3IgQ3ViZSBmb3Igbm93LgotICAgICAgICAgICAgLy8gVE9ETyhqbWFk
aWxsKTogM0QgYW5kIDJEIGFycmF5IHRleHR1cmVzLiBodHRwOi8vYW5nbGVidWcuY29tLzQwNDgK
KyAgICAgICAgICAgIC8vIENoZWNrIGZvciBzdXBwb3J0ZWQgdGV4dHVyZXMKICAgICAgICAgICAg
IEFTU0VSVChpbmRleC5nZXRUeXBlKCkgPT0gZ2w6OlRleHR1cmVUeXBlOjpfMkQgfHwKKyAgICAg
ICAgICAgICAgICAgICBpbmRleC5nZXRUeXBlKCkgPT0gZ2w6OlRleHR1cmVUeXBlOjpfM0QgfHwK
KyAgICAgICAgICAgICAgICAgICBpbmRleC5nZXRUeXBlKCkgPT0gZ2w6OlRleHR1cmVUeXBlOjpf
MkRBcnJheSB8fAogICAgICAgICAgICAgICAgICAgIGluZGV4LmdldFR5cGUoKSA9PSBnbDo6VGV4
dHVyZVR5cGU6OkN1YmVNYXApOwogCi0gICAgICAgICAgICBhbmdsZTo6TWVtb3J5QnVmZmVyIGRh
dGE7CisgICAgICAgICAgICBib29sIGlzM0QgPSAoaW5kZXguZ2V0VHlwZSgpID09IGdsOjpUZXh0
dXJlVHlwZTo6XzNEIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXguZ2V0VHlwZSgp
ID09IGdsOjpUZXh0dXJlVHlwZTo6XzJEQXJyYXkpOwogCi0gICAgICAgICAgICAvLyBVc2UgQU5H
TEVfZ2V0X2ltYWdlIHRvIHJlYWQgYmFjayBwaXhlbCBkYXRhLgotICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRJbWFnZUFOR0xFKQorICAgICAgICAgICAgaWYgKGZv
cm1hdC5jb21wcmVzc2VkKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCA9IGZvcm1hdC5pbnRlcm5hbEZvcm1hdDsKLSAgICAgICAgICAgICAgICBH
TGVudW0gZ2V0Rm9ybWF0ICAgICAgPSBmb3JtYXQuZm9ybWF0OwotICAgICAgICAgICAgICAgIEdM
ZW51bSBnZXRUeXBlICAgICAgICA9IGZvcm1hdC50eXBlOwotICAgICAgICAgICAgICAgIEdMc2l6
ZWkgcGl4ZWxCeXRlcyAgICA9IGZvcm1hdC5waXhlbEJ5dGVzOworICAgICAgICAgICAgICAgIC8v
IEZvciBjb21wcmVzc2VkIGltYWdlcywgd2UndmUgdHJhY2tlZCBhIGNvcHkgb2YgdGhlIGluY29t
aW5nIGRhdGEsIHNvIHdlIGNhbgorICAgICAgICAgICAgICAgIC8vIHVzZSB0aGF0IHJhdGhlciB0
aGFuIHRyeSB0byByZWFkIGRhdGEgYmFjayB0aGF0IG1heSBoYXZlIGJlZW4gY29udmVydGVkLgog
Ci0gICAgICAgICAgICAgICAgaWYgKGZvcm1hdC5jb21wcmVzc2VkKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHdlJ3JlIGVtdWxhdGluZyB0
aGUgY29tcHJlc3NlZCBmb3JtYXQuCi0gICAgICAgICAgICAgICAgICAgIEdMZW51bSByZWFkRm9y
bWF0ID0gdGV4dHVyZS0+Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoY29udGV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgIEdMZW51bSByZWFkVHlwZSAgID0gdGV4dHVyZS0+Z2V0SW1w
bGVtZW50YXRpb25Db2xvclJlYWRUeXBlKGNvbnRleHQpOworICAgICAgICAgICAgICAgIC8vIExv
b2sgdXAgdGhlIGRhdGEgZm9yIHRoZSByZXF1ZXN0ZWQgdGV4dHVyZQorICAgICAgICAgICAgICAg
IGNvbnN0IGF1dG8gJmZvdW5kVGV4dHVyZUxldmVscyA9IGNhY2hlZFRleHR1cmVMZXZlbERhdGEu
ZmluZCh0ZXh0dXJlLT5pZCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZm91bmRUZXh0dXJl
TGV2ZWxzICE9IGNhY2hlZFRleHR1cmVMZXZlbERhdGEuZW5kKCkpOwogCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmbmF0aXZlRm9ybWF0ID0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8ocmVhZEZvcm1hdCwgcmVh
ZFR5cGUpOworICAgICAgICAgICAgICAgIC8vIEZvciB0aGF0IHRleHR1cmUsIGxvb2sgdXAgdGhl
IGRhdGEgZm9yIHRoZSBnaXZlbiBsZXZlbAorICAgICAgICAgICAgICAgIEdMaW50IGxldmVsICAg
ICAgICAgICAgICAgICAgID0gaW5kZXguZ2V0TGV2ZWxJbmRleCgpOworICAgICAgICAgICAgICAg
IGNvbnN0IGF1dG8gJmZvdW5kVGV4dHVyZUxldmVsID0gZm91bmRUZXh0dXJlTGV2ZWxzLT5zZWNv
bmQuZmluZChsZXZlbCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGZvdW5kVGV4dHVyZUxldmVs
ICE9IGZvdW5kVGV4dHVyZUxldmVscy0+c2Vjb25kLmVuZCgpKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAmY2FwdHVyZWRUZXh0dXJlTGV2ZWwgPSBmb3VuZFRl
eHR1cmVMZXZlbC0+c2Vjb25kOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghbmF0aXZlRm9y
bWF0LmNvbXByZXNzZWQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEVtdWxhdGUgd2l0aCBhIG5vbi1jb21wcmVzc2VkIGZvcm1hdC4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0ID0gbmF0aXZlRm9ybWF0LmludGVybmFsRm9y
bWF0OwotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Rm9ybWF0ICAgICAgPSByZWFkRm9ybWF0
OwotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHlwZSAgICAgICAgPSByZWFkVHlwZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBpeGVsQnl0ZXMgICAgID0gbmF0aXZlRm9ybWF0LnBpeGVs
Qnl0ZXM7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXaWxsIG5l
ZWQgdG8gYWRkIGdsR2V0Q29tcHJlc3NlZFRleEltYWdlIHN1cHBvcnQgdG8gQU5HTEVfZ2V0X2lt
YWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogYWRkIGdsR2V0
Q29tcHJlc3NlZFRleEltYWdlLiBodHRwOi8vYW5nbGVidWcuY29tLzM5NDQKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIC8vIFVzZSB0aGUgc2hhZG93IGNvcHkgb2YgdGhlIGRhdGEgdG8gcG9wdWxh
dGUgdGhlIGNhbGwKKyAgICAgICAgICAgICAgICBpZiAoaXMzRCkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGNhcChDYXB0dXJlQ29tcHJlc3NlZFRleEltYWdlM0QoCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlTdGF0ZSwgdHJ1ZSwgaW5kZXguZ2V0VGFyZ2V0
KCksIGluZGV4LmdldExldmVsSW5kZXgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dC5pbnRlcm5hbEZvcm1hdCwgZGVzYy5zaXplLndpZHRoLCBkZXNjLnNpemUuaGVpZ2h0LCBkZXNj
LnNpemUuZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCBzdGF0aWNfY2FzdDxHTHVp
bnQ+KGNhcHR1cmVkVGV4dHVyZUxldmVsLnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXB0dXJlZFRleHR1cmVMZXZlbC5kYXRhKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FwKENhcHR1cmVDb21wcmVzc2VkVGV4SW1hZ2UyRCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxheVN0YXRlLCB0cnVlLCBpbmRleC5nZXRUYXJnZXQoKSwgaW5kZXguZ2V0TGV2ZWxJbmRl
eCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmludGVybmFsRm9ybWF0LCBkZXNj
LnNpemUud2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNhcHR1cmVkVGV4dHVyZUxldmVsLnNpemUoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICBjYXB0dXJlZFRleHR1cmVMZXZlbC5kYXRhKCkpKTsKICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gVXNlIEFOR0xFX2dldF9pbWFnZSB0byByZWFkIGJhY2sg
cGl4ZWwgZGF0YS4KKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmdldEltYWdlQU5HTEUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZ2V0Rm9ybWF0ID0gZm9ybWF0LmZvcm1hdDsKKyAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGdldFR5cGUgICA9IGZvcm1hdC50eXBlOwogCi0gICAgICAgICAgICAgICAgdWludDMyX3Qg
ZGF0YVNpemUgPSBwaXhlbEJ5dGVzICogZGVzYy5zaXplLndpZHRoICogZGVzYy5zaXplLmhlaWdo
dDsKKyAgICAgICAgICAgICAgICAgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBkYXRhOwogCi0gICAg
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBkYXRhLnJlc2l6ZShkYXRhU2l6ZSk7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpF
eHRlbnRzIHNpemUoZGVzYy5zaXplLndpZHRoLCBkZXNjLnNpemUuaGVpZ2h0LCBkZXNjLnNpemUu
ZGVwdGgpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrID0gYXBpU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKTsKIAotICAgICAgICAgICAgICAgIGds
OjpQaXhlbFBhY2tTdGF0ZSBwYWNrU3RhdGU7Ci0gICAgICAgICAgICAgICAgcGFja1N0YXRlLmFs
aWdubWVudCA9IDE7CisgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmRCeXRlID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tTaXplID0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdC5jb21wdXRlUGFja1VucGFja0VuZEJ5dGUoZ2V0VHlwZSwgc2l6ZSwgdW5wYWNr
LCB0cnVlLCAmZW5kQnl0ZSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh1bnBhY2tTaXpl
KTsKIAotICAgICAgICAgICAgICAgICh2b2lkKXRleHR1cmUtPmdldFRleEltYWdlKGNvbnRleHQs
IHBhY2tTdGF0ZSwgbnVsbHB0ciwgaW5kZXguZ2V0VGFyZ2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXguZ2V0TGV2ZWxJbmRleCgpLCBnZXRGb3Jt
YXQsIGdldFR5cGUsIGRhdGEuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN1
bHQgPSBkYXRhLnJlc2l6ZShlbmRCeXRlKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdCk7CiAKLSAgICAgICAgICAgICAgICBjYXAoQ2FwdHVyZVRleEltYWdlMkQocmVwbGF5U3Rh
dGUsIHRydWUsIGluZGV4LmdldFRhcmdldCgpLCBpbmRleC5nZXRMZXZlbEluZGV4KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBkZXNjLnNp
emUud2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldEZvcm1hdCwgZ2V0VHlwZSwgZGF0YS5kYXRhKCkpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
YXAoQ2FwdHVyZVRleEltYWdlMkQocmVwbGF5U3RhdGUsIHRydWUsIGluZGV4LmdldFRhcmdldCgp
LCBpbmRleC5nZXRMZXZlbEluZGV4KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgZGVzYy5zaXplLndpZHRoLCBkZXNjLnNpemUu
aGVpZ2h0LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQu
Zm9ybWF0LCBmb3JtYXQudHlwZSwgbnVsbHB0cikpOworICAgICAgICAgICAgICAgICAgICBnbDo6
UGl4ZWxQYWNrU3RhdGUgcGFja1N0YXRlOworICAgICAgICAgICAgICAgICAgICBwYWNrU3RhdGUu
YWxpZ25tZW50ID0gMTsKKworICAgICAgICAgICAgICAgICAgICAodm9pZCl0ZXh0dXJlLT5nZXRU
ZXhJbWFnZShjb250ZXh0LCBwYWNrU3RhdGUsIG51bGxwdHIsIGluZGV4LmdldFRhcmdldCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5nZXRM
ZXZlbEluZGV4KCksIGdldEZvcm1hdCwgZ2V0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5kYXRhKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIGlmIChpczNEKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXAoQ2FwdHVyZVRleEltYWdlM0QocmVwbGF5U3RhdGUsIHRydWUsIGluZGV4LmdldFRh
cmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4LmdldExldmVsSW5kZXgoKSwgZm9ybWF0LmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2Muc2l6ZS53aWR0aCwgZGVzYy5z
aXplLmhlaWdodCwgZGVzYy5zaXplLmRlcHRoLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldEZvcm1hdCwgZ2V0VHlwZSwgZGF0YS5kYXRhKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcChDYXB0dXJlVGV4SW1h
Z2UyRChyZXBsYXlTdGF0ZSwgdHJ1ZSwgaW5kZXguZ2V0VGFyZ2V0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXguZ2V0TGV2ZWxJbmRleCgpLCBm
b3JtYXQuaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzYy5zaXplLndpZHRoLCBkZXNjLnNpemUuaGVpZ2h0LCAwLCBnZXRGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHlw
ZSwgZGF0YS5kYXRhKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoaXMzRCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FwKENhcHR1cmVUZXhJbWFnZTNEKHJlcGxheVN0YXRlLCB0cnVlLCBpbmRleC5n
ZXRUYXJnZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleC5nZXRMZXZlbEluZGV4KCksIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjLnNpemUud2lkdGgsIGRl
c2Muc2l6ZS5oZWlnaHQsIGRlc2Muc2l6ZS5kZXB0aCwgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQuZm9ybWF0LCBmb3JtYXQudHlwZSwgbnVs
bHB0cikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FwKENhcHR1
cmVUZXhJbWFnZTJEKHJlcGxheVN0YXRlLCB0cnVlLCBpbmRleC5nZXRUYXJnZXQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5nZXRMZXZlbElu
ZGV4KCksIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXNjLnNpemUud2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIDAs
IGZvcm1hdC5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0LnR5cGUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0NDUs
NDMgKzE4NjgsMjEgQEAgdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIEdMdWludCByZXNvdXJjZUlEID0gY29sb3JBdHRhY2htZW50LmdldFJl
c291cmNlKCktPmdldElkKCk7Ci0KLSAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IExheWVy
IGF0dGFjaG1lbnRzLiBodHRwOi8vYW5nbGVidWcuY29tLzM2NjIKLSAgICAgICAgICAgIGlmIChj
b2xvckF0dGFjaG1lbnQudHlwZSgpID09IEdMX1RFWFRVUkUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBjb2xvckF0dGFjaG1lbnQuZ2V0VGV4
dHVyZUltYWdlSW5kZXgoKTsKLQotICAgICAgICAgICAgICAgIGNhcChDYXB0dXJlRnJhbWVidWZm
ZXJUZXh0dXJlMkQocmVwbGF5U3RhdGUsIHRydWUsIEdMX0ZSQU1FQlVGRkVSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JBdHRhY2htZW50Lmdl
dEJpbmRpbmcoKSwgaW5kZXguZ2V0VGFyZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7cmVzb3VyY2VJRH0sIGluZGV4LmdldExldmVsSW5kZXgo
KSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQudHlwZSgpID09IEdMX1JFTkRFUkJV
RkZFUik7Ci0gICAgICAgICAgICAgICAgY2FwKENhcHR1cmVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfRlJBTUVCVUZGRVIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnQuZ2V0QmluZGlu
ZygpLCBHTF9SRU5ERVJCVUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7cmVzb3VyY2VJRH0pKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIENhcHR1cmVGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoc2V0dXBDYWxscywgcmVwbGF5U3RhdGUs
IGNvbG9yQXR0YWNobWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpkZXB0aEF0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhB
dHRhY2htZW50KCk7CiAgICAgICAgIGlmIChkZXB0aEF0dGFjaG1lbnQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChkZXB0aEF0dGFjaG1lbnQtPnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZG
RVIpOwotICAgICAgICAgICAgR0x1aW50IHJlc291cmNlSUQgPSBkZXB0aEF0dGFjaG1lbnQtPmdl
dFJlc291cmNlKCktPmdldElkKCk7Ci0gICAgICAgICAgICBjYXAoQ2FwdHVyZUZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKHJlcGxheVN0YXRlLCB0cnVlLCBHTF9GUkFNRUJVRkZFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQVRUQUNITUVO
VCwgR0xfUkVOREVSQlVGRkVSLCB7cmVzb3VyY2VJRH0pKTsKKyAgICAgICAgICAgIEFTU0VSVChk
ZXB0aEF0dGFjaG1lbnQtPmdldEJpbmRpbmcoKSA9PSBHTF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAg
ICAgICAgICAgIENhcHR1cmVGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoc2V0dXBDYWxscywgcmVwbGF5
U3RhdGUsICpkZXB0aEF0dGFjaG1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqc3RlbmNpbEF0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+
Z2V0U3RlbmNpbEF0dGFjaG1lbnQoKTsKICAgICAgICAgaWYgKHN0ZW5jaWxBdHRhY2htZW50KQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoc3RlbmNpbEF0dGFjaG1lbnQtPnR5cGUoKSA9
PSBHTF9SRU5ERVJCVUZGRVIpOwotICAgICAgICAgICAgR0x1aW50IHJlc291cmNlSUQgPSBzdGVu
Y2lsQXR0YWNobWVudC0+Z2V0UmVzb3VyY2UoKS0+Z2V0SWQoKTsKLSAgICAgICAgICAgIGNhcChD
YXB0dXJlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIocmVwbGF5U3RhdGUsIHRydWUsIEdMX0ZSQU1F
QlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jlc291cmNlSUR9KSk7CisgICAgICAgICAg
ICBBU1NFUlQoc3RlbmNpbEF0dGFjaG1lbnQtPmdldEJpbmRpbmcoKSA9PSBHTF9TVEVOQ0lMX0FU
VEFDSE1FTlQpOworICAgICAgICAgICAgQ2FwdHVyZUZyYW1lYnVmZmVyQXR0YWNobWVudChzZXR1
cENhbGxzLCByZXBsYXlTdGF0ZSwgKnN0ZW5jaWxBdHRhY2htZW50KTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IERyYXcgYnVmZmVyIHN0YXRlcy4gaHR0cDovL2FuZ2xl
YnVnLmNvbS8zNjYyCkBAIC0xNTI4LDggKzE5MjksOCBAQCB2b2lkIENhcHR1cmVNaWRFeGVjdXRp
b25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBnbDo6U2hhZGVyUHJvZ3Jh
bUlEIHRlbXBTaGFkZXJJRCA9IHsxfTsKICAgICBmb3IgKGNvbnN0IGF1dG8gJnByb2dyYW1JdGVy
IDogcHJvZ3JhbXMpCiAgICAgewotICAgICAgICBnbDo6U2hhZGVyUHJvZ3JhbUlEIGlkID0ge3By
b2dyYW1JdGVyLmZpcnN0fTsKLSAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gICA9IHByb2dy
YW1JdGVyLnNlY29uZDsKKyAgICAgICAgZ2w6OlNoYWRlclByb2dyYW1JRCBpZCAgICAgPSB7cHJv
Z3JhbUl0ZXIuZmlyc3R9OworICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IHBy
b2dyYW1JdGVyLnNlY29uZDsKIAogICAgICAgICAvLyBHZXQgbGFzdCBjb21waWxlZCBzaGFkZXIg
c291cmNlLgogICAgICAgICBjb25zdCBhdXRvICZmb3VuZFNvdXJjZXMgPSBjYWNoZWRQcm9ncmFt
U291cmNlcy5maW5kKGlkKTsKQEAgLTE1NDUsNyArMTk0Niw3IEBAIHZvaWQgQ2FwdHVyZU1pZEV4
ZWN1dGlvblNldHVwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICBjYXAoQ2Fw
dHVyZUNyZWF0ZVByb2dyYW0ocmVwbGF5U3RhdGUsIHRydWUsIGlkLnZhbHVlKSk7CiAKICAgICAg
ICAgLy8gQ29tcGlsZSB3aXRoIGxhc3QgbGlua2VkIHNvdXJjZXMuCi0gICAgICAgIGZvciAoZ2w6
OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IHByb2dyYW0tPmdldFN0YXRlKCkuZ2V0TGlua2VkU2hh
ZGVyU3RhZ2VzKCkpCisgICAgICAgIGZvciAoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IHBy
b2dyYW0tPmdldEV4ZWN1dGFibGUoKS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKICAgICAgICAg
ewogICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZVN0cmluZyA9IGxpbmtlZFNv
dXJjZXNbc2hhZGVyVHlwZV07CiAgICAgICAgICAgICBjb25zdCBjaGFyICpzb3VyY2VQb2ludGVy
ICAgICAgID0gc291cmNlU3RyaW5nLmNfc3RyKCk7CkBAIC0xNTU4LDcgKzE5NTksMzAgQEAgdm9p
ZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICBjYXAoQ2FwdHVyZURlbGV0ZVNoYWRlcihyZXBsYXlTdGF0ZSwgdHJ1ZSwgdGVt
cFNoYWRlcklEKSk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBHYXRoZXIgWEZCIHZhcnlpbmdz
CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB4ZmJWYXJ5aW5nczsKKyAgICAgICAg
Zm9yIChjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nICZ4ZmJWYXJ5aW5nIDoKKyAg
ICAgICAgICAgICBwcm9ncmFtLT5nZXRTdGF0ZSgpLmdldExpbmtlZFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoKSkKKyAgICAgICAgeworICAgICAgICAgICAgeGZiVmFyeWluZ3MucHVzaF9iYWNr
KHhmYlZhcnlpbmcubmFtZVdpdGhBcnJheUluZGV4KCkpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCF4ZmJWYXJ5aW5ncy5lbXB0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnZl
Y3Rvcjxjb25zdCBjaGFyICo+IHZhcnlpbmdzU3RyaW5nczsKKyAgICAgICAgICAgIGZvciAoY29u
c3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdTdHJpbmcgOiB4ZmJWYXJ5aW5ncykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB2YXJ5aW5nc1N0cmluZ3MucHVzaF9iYWNrKHZhcnlpbmdTdHJp
bmcuZGF0YSgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR0xlbnVtIHhmYk1vZGUg
PSBwcm9ncmFtLT5nZXRTdGF0ZSgpLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpOwor
ICAgICAgICAgICAgY2FwKENhcHR1cmVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHJlcGxheVN0
YXRlLCB0cnVlLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHTGludD4oeGZiVmFyeWluZ3Muc2l6ZSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nc1N0cmluZ3Mu
ZGF0YSgpLCB4ZmJNb2RlKSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXAoQ2FwdHVyZUxpbmtQ
cm9ncmFtKHJlcGxheVN0YXRlLCB0cnVlLCBpZCkpOworICAgICAgICBDYXB0dXJlVXBkYXRlVW5p
Zm9ybUxvY2F0aW9ucyhwcm9ncmFtLCBzZXR1cENhbGxzKTsKICAgICB9CiAKICAgICAvLyBIYW5k
bGUgc2hhZGVycy4KQEAgLTE2MDEsMTAgKzIwMjUsMTUyIEBAIHZvaWQgQ2FwdHVyZU1pZEV4ZWN1
dGlvblNldHVwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIGlmIChhcGlTdGF0ZS5n
ZXRQcm9ncmFtKCkpCiAgICAgewogICAgICAgICBjYXAoQ2FwdHVyZVVzZVByb2dyYW0ocmVwbGF5
U3RhdGUsIHRydWUsIGFwaVN0YXRlLmdldFByb2dyYW0oKS0+aWQoKSkpOworICAgICAgICBDYXB0
dXJlVXBkYXRlQ3VycmVudFByb2dyYW0oc2V0dXBDYWxscy0+YmFjaygpLCBzZXR1cENhbGxzKTsK
ICAgICB9CiAKICAgICAvLyBUT0RPKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzY2Mik6IEVTIDMueCBv
YmplY3RzLgogCisgICAgLy8gQ3JlYXRlIGV4aXN0aW5nIHF1ZXJpZXMuIE5vdGUgdGhhdCBxdWVy
aWVzIG1heSBiZSBnZW5uZWQgYW5kIG5vdCB5ZXQgc3RhcnRlZC4gSW4gdGhhdAorICAgIC8vIGNh
c2UgdGhlIHF1ZXJpZXMgd2lsbCBleGlzdCBpbiB0aGUgcXVlcnkgbWFwIGFzIG51bGxwdHIgZW50
cmllcy4KKyAgICBjb25zdCBnbDo6UXVlcnlNYXAgJnF1ZXJ5TWFwID0gY29udGV4dC0+Z2V0UXVl
cmllc0ZvckNhcHR1cmUoKTsKKyAgICBmb3IgKGdsOjpRdWVyeU1hcDo6SXRlcmF0b3IgcXVlcnlJ
dGVyID0gcXVlcnlNYXAuYmVnaW5XaXRoTnVsbCgpOworICAgICAgICAgcXVlcnlJdGVyICE9IHF1
ZXJ5TWFwLmVuZFdpdGhOdWxsKCk7ICsrcXVlcnlJdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHF1ZXJ5SXRlci0+Zmlyc3QpOworICAgICAgICBnbDo6UXVlcnlJRCBxdWVyeUlEID0ge3F1ZXJ5
SXRlci0+Zmlyc3R9OworCisgICAgICAgIGNhcChDYXB0dXJlR2VuUXVlcmllcyhyZXBsYXlTdGF0
ZSwgdHJ1ZSwgMSwgJnF1ZXJ5SUQpKTsKKyAgICAgICAgTWF5YmVDYXB0dXJlVXBkYXRlUmVzb3Vy
Y2VJRHMoc2V0dXBDYWxscyk7CisKKyAgICAgICAgZ2w6OlF1ZXJ5ICpxdWVyeSA9IHF1ZXJ5SXRl
ci0+c2Vjb25kOworICAgICAgICBpZiAocXVlcnkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGds
OjpRdWVyeVR5cGUgcXVlcnlUeXBlID0gcXVlcnktPmdldFR5cGUoKTsKKworICAgICAgICAgICAg
Ly8gQmVnaW4gdGhlIHF1ZXJ5IHRvIGdlbmVyYXRlIHRoZSBvYmplY3QKKyAgICAgICAgICAgIGNh
cChDYXB0dXJlQmVnaW5RdWVyeShyZXBsYXlTdGF0ZSwgdHJ1ZSwgcXVlcnlUeXBlLCBxdWVyeUlE
KSk7CisKKyAgICAgICAgICAgIC8vIEVuZCB0aGUgcXVlcnkgaWYgaXQgd2FzIG5vdCBhY3RpdmUK
KyAgICAgICAgICAgIGlmICghSXNRdWVyeUFjdGl2ZShhcGlTdGF0ZSwgcXVlcnlJRCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FwKENhcHR1cmVFbmRRdWVyeShyZXBsYXlTdGF0
ZSwgdHJ1ZSwgcXVlcnlUeXBlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sKKyAgICBjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJh
Y2tNYXAgJnhmYk1hcCA9IGNvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrc0ZvckNhcHR1cmUo
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnhmYkl0ZXIgOiB4ZmJNYXApCisgICAgeworICAgICAg
ICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tJRCB4ZmJJRCA9IHt4ZmJJdGVyLmZpcnN0fTsKKyAgICAg
ICAgY2FwKENhcHR1cmVHZW5UcmFuc2Zvcm1GZWVkYmFja3MocmVwbGF5U3RhdGUsIHRydWUsIDEs
ICZ4ZmJJRCkpOworICAgICAgICBNYXliZUNhcHR1cmVVcGRhdGVSZXNvdXJjZUlEcyhzZXR1cENh
bGxzKTsKKworICAgICAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnhmYiA9IHhmYkl0ZXIuc2Vj
b25kOworICAgICAgICBpZiAoIXhmYikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhlIG9i
amVjdCB3YXMgbmV2ZXIgY3JlYXRlZAorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBCaW5kIFhGQiB0byBjcmVhdGUgdGhlIG9iamVjdAorICAgICAgICBjYXAo
Q2FwdHVyZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayhyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLLCB4ZmJJRCkpOworCisgICAgICAgIC8vIEJpbmQgdGhlIGJ1ZmZlcnMgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgWEZCIG9iamVjdAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHhmYi0+Z2V0SW5kZXhlZEJ1ZmZlckNvdW50KCk7ICsraSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uc3QgZ2w6Ok9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZ4ZmJCdWZm
ZXIgPSB4ZmItPmdldEluZGV4ZWRCdWZmZXIoaSk7CisKKyAgICAgICAgICAgIC8vIE5vdGU6IEJ1
ZmZlcnMgYm91bmQgd2l0aCBCaW5kQnVmZmVyQmFzZSBjYW4gYmUgdXNlZCB3aXRoIEJpbmRCdWZm
ZXIKKyAgICAgICAgICAgIGNhcChDYXB0dXJlQmluZEJ1ZmZlclJhbmdlKHJlcGxheVN0YXRlLCB0
cnVlLCBnbDo6QnVmZmVyQmluZGluZzo6VHJhbnNmb3JtRmVlZGJhY2ssIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmJCdWZmZXIuaWQoKSwgeGZiQnVmZmVyLmdl
dE9mZnNldCgpLCB4ZmJCdWZmZXIuZ2V0U2l6ZSgpKSk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoeGZiLT5pc0FjdGl2ZSgpIHx8IHhmYi0+aXNQYXVzZWQoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBhY3RpdmUgWEZCIGluIE1FQyB5ZXQKKyAgICAgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEJpbmQgdGhl
IGN1cnJlbnQgWEZCIGJ1ZmZlciBhZnRlciBwb3B1bGF0aW5nIFhGQiBvYmplY3RzCisgICAgZ2w6
OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJyZW50WEZCID0gYXBpU3RhdGUuZ2V0Q3VycmVudFRyYW5z
Zm9ybUZlZWRiYWNrKCk7CisgICAgY2FwKENhcHR1cmVCaW5kVHJhbnNmb3JtRmVlZGJhY2socmVw
bGF5U3RhdGUsIHRydWUsIEdMX1RSQU5TRk9STV9GRUVEQkFDSywgY3VycmVudFhGQi0+aWQoKSkp
OworCisgICAgLy8gQ2FwdHVyZSBTYW1wbGVyIE9iamVjdHMKKyAgICBjb25zdCBnbDo6U2FtcGxl
ck1hbmFnZXIgJnNhbXBsZXJzID0gYXBpU3RhdGUuZ2V0U2FtcGxlck1hbmFnZXJGb3JDYXB0dXJl
KCk7CisgICAgZm9yIChjb25zdCBhdXRvICZzYW1wbGVySXRlciA6IHNhbXBsZXJzKQorICAgIHsK
KyAgICAgICAgZ2w6OlNhbXBsZXJJRCBzYW1wbGVySUQgPSB7c2FtcGxlckl0ZXIuZmlyc3R9Owor
ICAgICAgICBjYXAoQ2FwdHVyZUdlblNhbXBsZXJzKHJlcGxheVN0YXRlLCB0cnVlLCAxLCAmc2Ft
cGxlcklEKSk7CisgICAgICAgIE1heWJlQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKHNldHVwQ2Fs
bHMpOworCisgICAgICAgIGdsOjpTYW1wbGVyICpzYW1wbGVyID0gc2FtcGxlckl0ZXIuc2Vjb25k
OworICAgICAgICBpZiAoIXNhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgZ2w6OlNhbXBsZXJTdGF0ZSBkZWZhdWx0U2FtcGxlclN0
YXRlOworICAgICAgICBpZiAoc2FtcGxlci0+Z2V0TWluRmlsdGVyKCkgIT0gZGVmYXVsdFNhbXBs
ZXJTdGF0ZS5nZXRNaW5GaWx0ZXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FwKENhcHR1
cmVTYW1wbGVyUGFyYW1ldGVyaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgc2FtcGxlcklELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZXItPmdldE1pbkZpbHRlcigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNhbXBs
ZXItPmdldE1hZ0ZpbHRlcigpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0TWFnRmlsdGVyKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcChDYXB0dXJlU2FtcGxlclBhcmFtZXRlcmkocmVw
bGF5U3RhdGUsIHRydWUsIHNhbXBsZXJJRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyLT5nZXRNYWdGaWx0ZXIo
KSkpOworICAgICAgICB9CisgICAgICAgIGlmIChzYW1wbGVyLT5nZXRXcmFwUygpICE9IGRlZmF1
bHRTYW1wbGVyU3RhdGUuZ2V0V3JhcFMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FwKENh
cHR1cmVTYW1wbGVyUGFyYW1ldGVyaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgc2FtcGxlcklELCBHTF9U
RVhUVVJFX1dSQVBfUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlci0+Z2V0V3JhcFMoKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChzYW1wbGVyLT5n
ZXRXcmFwUigpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0V3JhcFIoKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgY2FwKENhcHR1cmVTYW1wbGVyUGFyYW1ldGVyaShyZXBsYXlTdGF0ZSwgdHJ1
ZSwgc2FtcGxlcklELCBHTF9URVhUVVJFX1dSQVBfUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlci0+Z2V0V3JhcFIoKSkpOworICAgICAgICB9CisgICAg
ICAgIGlmIChzYW1wbGVyLT5nZXRXcmFwVCgpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0V3Jh
cFQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FwKENhcHR1cmVTYW1wbGVyUGFyYW1ldGVy
aShyZXBsYXlTdGF0ZSwgdHJ1ZSwgc2FtcGxlcklELCBHTF9URVhUVVJFX1dSQVBfVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlci0+Z2V0V3JhcFQoKSkp
OworICAgICAgICB9CisgICAgICAgIGlmIChzYW1wbGVyLT5nZXRNaW5Mb2QoKSAhPSBkZWZhdWx0
U2FtcGxlclN0YXRlLmdldE1pbkxvZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2Fw
dHVyZVNhbXBsZXJQYXJhbWV0ZXJmKHJlcGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RF
WFRVUkVfTUlOX0xPRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlci0+Z2V0TWluTG9kKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2FtcGxlci0+
Z2V0TWF4TG9kKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRNYXhMb2QoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY2FwKENhcHR1cmVTYW1wbGVyUGFyYW1ldGVyZihyZXBsYXlTdGF0ZSwg
dHJ1ZSwgc2FtcGxlcklELCBHTF9URVhUVVJFX01BWF9MT0QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXItPmdldE1heExvZCgpKSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHNhbXBsZXItPmdldENvbXBhcmVNb2RlKCkgIT0gZGVmYXVsdFNhbXBsZXJT
dGF0ZS5nZXRDb21wYXJlTW9kZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2FwdHVy
ZVNhbXBsZXJQYXJhbWV0ZXJpKHJlcGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RFWFRV
UkVfQ09NUEFSRV9NT0RFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVyLT5nZXRDb21wYXJlTW9kZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNh
bXBsZXItPmdldENvbXBhcmVGdW5jKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRDb21wYXJl
RnVuYygpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2FwdHVyZVNhbXBsZXJQYXJhbWV0
ZXJpKHJlcGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5D
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyLT5nZXRD
b21wYXJlRnVuYygpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBCaW5kIHNhbXBsZXJz
CisgICAgZ2w6OlNhbXBsZXJCaW5kaW5nVmVjdG9yIHNhbXBsZXJCaW5kaW5ncyA9IGFwaVN0YXRl
LmdldFNhbXBsZXJzKCk7CisgICAgZm9yIChHTHVpbnQgYmluZGluZ0luZGV4ID0gMDsgYmluZGlu
Z0luZGV4IDwgc3RhdGljX2Nhc3Q8R0x1aW50PihzYW1wbGVyQmluZGluZ3Muc2l6ZSgpKTsKKyAg
ICAgICAgICsrYmluZGluZ0luZGV4KQorICAgIHsKKyAgICAgICAgZ2w6OlNhbXBsZXJJRCBzYW1w
bGVySUQgPSBzYW1wbGVyQmluZGluZ3NbYmluZGluZ0luZGV4XS5pZCgpOworICAgICAgICBpZiAo
c2FtcGxlcklELnZhbHVlICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcChDYXB0dXJl
QmluZFNhbXBsZXIocmVwbGF5U3RhdGUsIHRydWUsIGJpbmRpbmdJbmRleCwgc2FtcGxlcklEKSk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBDYXB0dXJlIEdMIENvbnRleHQgc3RhdGVzLgog
ICAgIC8vIFRPRE8oaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYyKTogQ29tcGxldGUgc3RhdGUgY2Fw
dHVyZS4KICAgICBhdXRvIGNhcENhcCA9IFtjYXAsICZyZXBsYXlTdGF0ZV0oR0xlbnVtIGNhcEVu
dW0sIGJvb2wgY2FwVmFsdWUpIHsKQEAgLTE3NTIsMTQgKzIzMTgsNjkgQEAgdm9pZCBDYXB0dXJl
TWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgfQogCiAg
ICAgLy8gUGl4ZWwgc3RvcmFnZSBzdGF0ZXMuCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogRVMgMy54
KyBpbXBsZW1lbnRhdGlvbi4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYyCisgICAgZ2w6OlBpeGVs
UGFja1N0YXRlICZjdXJyZW50UGFja1N0YXRlID0gcmVwbGF5U3RhdGUuZ2V0UGFja1N0YXRlKCk7
CiAgICAgaWYgKGN1cnJlbnRQYWNrU3RhdGUuYWxpZ25tZW50ICE9IGFwaVN0YXRlLmdldFBhY2tB
bGlnbm1lbnQoKSkKICAgICB7Ci0gICAgICAgIGNhcChDYXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5
U3RhdGUsIHRydWUsIEdMX1VOUEFDS19BTElHTk1FTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXBpU3RhdGUuZ2V0UGFja0FsaWdubWVudCgpKSk7CisgICAgICAgIGNhcChDYXB0
dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUsIHRydWUsIEdMX1BBQ0tfQUxJR05NRU5ULCBhcGlT
dGF0ZS5nZXRQYWNrQWxpZ25tZW50KCkpKTsKICAgICAgICAgY3VycmVudFBhY2tTdGF0ZS5hbGln
bm1lbnQgPSBhcGlTdGF0ZS5nZXRQYWNrQWxpZ25tZW50KCk7CiAgICAgfQogCisgICAgaWYgKGN1
cnJlbnRQYWNrU3RhdGUucm93TGVuZ3RoICE9IGFwaVN0YXRlLmdldFBhY2tSb3dMZW5ndGgoKSkK
KyAgICB7CisgICAgICAgIGNhcChDYXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUsIHRydWUs
IEdMX1BBQ0tfUk9XX0xFTkdUSCwgYXBpU3RhdGUuZ2V0UGFja1Jvd0xlbmd0aCgpKSk7CisgICAg
ICAgIGN1cnJlbnRQYWNrU3RhdGUucm93TGVuZ3RoID0gYXBpU3RhdGUuZ2V0UGFja1Jvd0xlbmd0
aCgpOworICAgIH0KKworICAgIGlmIChjdXJyZW50UGFja1N0YXRlLnNraXBSb3dzICE9IGFwaVN0
YXRlLmdldFBhY2tTa2lwUm93cygpKQorICAgIHsKKyAgICAgICAgY2FwKENhcHR1cmVQaXhlbFN0
b3JlaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfUEFDS19TS0lQX1JPV1MsIGFwaVN0YXRlLmdldFBh
Y2tTa2lwUm93cygpKSk7CisgICAgICAgIGN1cnJlbnRQYWNrU3RhdGUuc2tpcFJvd3MgPSBhcGlT
dGF0ZS5nZXRQYWNrU2tpcFJvd3MoKTsKKyAgICB9CisKKyAgICBpZiAoY3VycmVudFBhY2tTdGF0
ZS5za2lwUGl4ZWxzICE9IGFwaVN0YXRlLmdldFBhY2tTa2lwUGl4ZWxzKCkpCisgICAgeworICAg
ICAgICBjYXAoQ2FwdHVyZVBpeGVsU3RvcmVpKHJlcGxheVN0YXRlLCB0cnVlLCBHTF9QQUNLX1NL
SVBfUElYRUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaVN0YXRlLmdldFBh
Y2tTa2lwUGl4ZWxzKCkpKTsKKyAgICAgICAgY3VycmVudFBhY2tTdGF0ZS5za2lwUGl4ZWxzID0g
YXBpU3RhdGUuZ2V0UGFja1NraXBQaXhlbHMoKTsKKyAgICB9CisKKyAgICAvLyBXZSBzZXQgdW5w
YWNrIGFsaWdubWVudCBhYm92ZSwgbm8gbmVlZCB0byBjaGFuZ2UgaXQgaGVyZQorICAgIEFTU0VS
VChjdXJyZW50VW5wYWNrU3RhdGUuYWxpZ25tZW50ID09IDEpOworICAgIGlmIChjdXJyZW50VW5w
YWNrU3RhdGUucm93TGVuZ3RoICE9IGFwaVN0YXRlLmdldFVucGFja1Jvd0xlbmd0aCgpKQorICAg
IHsKKyAgICAgICAgY2FwKENhcHR1cmVQaXhlbFN0b3JlaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xf
VU5QQUNLX1JPV19MRU5HVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpU3Rh
dGUuZ2V0VW5wYWNrUm93TGVuZ3RoKCkpKTsKKyAgICAgICAgY3VycmVudFVucGFja1N0YXRlLnJv
d0xlbmd0aCA9IGFwaVN0YXRlLmdldFVucGFja1Jvd0xlbmd0aCgpOworICAgIH0KKworICAgIGlm
IChjdXJyZW50VW5wYWNrU3RhdGUuc2tpcFJvd3MgIT0gYXBpU3RhdGUuZ2V0VW5wYWNrU2tpcFJv
d3MoKSkKKyAgICB7CisgICAgICAgIGNhcChDYXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUs
IHRydWUsIEdMX1VOUEFDS19TS0lQX1JPV1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBpU3RhdGUuZ2V0VW5wYWNrU2tpcFJvd3MoKSkpOworICAgICAgICBjdXJyZW50VW5wYWNr
U3RhdGUuc2tpcFJvd3MgPSBhcGlTdGF0ZS5nZXRVbnBhY2tTa2lwUm93cygpOworICAgIH0KKwor
ICAgIGlmIChjdXJyZW50VW5wYWNrU3RhdGUuc2tpcFBpeGVscyAhPSBhcGlTdGF0ZS5nZXRVbnBh
Y2tTa2lwUGl4ZWxzKCkpCisgICAgeworICAgICAgICBjYXAoQ2FwdHVyZVBpeGVsU3RvcmVpKHJl
cGxheVN0YXRlLCB0cnVlLCBHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXBpU3RhdGUuZ2V0VW5wYWNrU2tpcFBpeGVscygpKSk7CisgICAgICAg
IGN1cnJlbnRVbnBhY2tTdGF0ZS5za2lwUGl4ZWxzID0gYXBpU3RhdGUuZ2V0VW5wYWNrU2tpcFBp
eGVscygpOworICAgIH0KKworICAgIGlmIChjdXJyZW50VW5wYWNrU3RhdGUuaW1hZ2VIZWlnaHQg
IT0gYXBpU3RhdGUuZ2V0VW5wYWNrSW1hZ2VIZWlnaHQoKSkKKyAgICB7CisgICAgICAgIGNhcChD
YXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUsIHRydWUsIEdMX1VOUEFDS19JTUFHRV9IRUlH
SFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpU3RhdGUuZ2V0VW5wYWNrSW1h
Z2VIZWlnaHQoKSkpOworICAgICAgICBjdXJyZW50VW5wYWNrU3RhdGUuaW1hZ2VIZWlnaHQgPSBh
cGlTdGF0ZS5nZXRVbnBhY2tJbWFnZUhlaWdodCgpOworICAgIH0KKworICAgIGlmIChjdXJyZW50
VW5wYWNrU3RhdGUuc2tpcEltYWdlcyAhPSBhcGlTdGF0ZS5nZXRVbnBhY2tTa2lwSW1hZ2VzKCkp
CisgICAgeworICAgICAgICBjYXAoQ2FwdHVyZVBpeGVsU3RvcmVpKHJlcGxheVN0YXRlLCB0cnVl
LCBHTF9VTlBBQ0tfU0tJUF9JTUFHRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXBpU3RhdGUuZ2V0VW5wYWNrU2tpcEltYWdlcygpKSk7CisgICAgICAgIGN1cnJlbnRVbnBhY2tT
dGF0ZS5za2lwSW1hZ2VzID0gYXBpU3RhdGUuZ2V0VW5wYWNrU2tpcEltYWdlcygpOworICAgIH0K
KwogICAgIC8vIENsZWFyIHN0YXRlLiBNaXNzaW5nIEVTIDMueCBmZWF0dXJlcy4KICAgICAvLyBU
T0RPKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzY2Mik6IENvbXBsZXRlIHN0YXRlIGNhcHR1cmUuCiAg
ICAgY29uc3QgZ2w6OkNvbG9yRiAmY3VycmVudENsZWFyQ29sb3IgPSBhcGlTdGF0ZS5nZXRDb2xv
ckNsZWFyVmFsdWUoKTsKQEAgLTE3NzQsNiArMjM5NSwxMSBAQCB2b2lkIENhcHR1cmVNaWRFeGVj
dXRpb25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgY2FwKENhcHR1
cmVDbGVhckRlcHRoZihyZXBsYXlTdGF0ZSwgdHJ1ZSwgYXBpU3RhdGUuZ2V0RGVwdGhDbGVhclZh
bHVlKCkpKTsKICAgICB9CiAKKyAgICBpZiAoYXBpU3RhdGUuZ2V0U3RlbmNpbENsZWFyVmFsdWUo
KSAhPSAwKQorICAgIHsKKyAgICAgICAgY2FwKENhcHR1cmVDbGVhclN0ZW5jaWwocmVwbGF5U3Rh
dGUsIHRydWUsIGFwaVN0YXRlLmdldFN0ZW5jaWxDbGVhclZhbHVlKCkpKTsKKyAgICB9CisKICAg
ICAvLyBWaWV3cG9ydCAvIHNjaXNzb3IgLyBjbGlwcGluZyBwbGFuZXMuCiAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmY3VycmVudFZpZXdwb3J0ID0gYXBpU3RhdGUuZ2V0Vmlld3BvcnQoKTsKICAg
ICBpZiAoY3VycmVudFZpZXdwb3J0ICE9IGdsOjpSZWN0YW5nbGUoKSkKQEAgLTE3OTksNiArMjQy
NSwxNCBAQCB2b2lkIENhcHR1cmVNaWRFeGVjdXRpb25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY2lzc29yLndpZHRo
LCBjdXJyZW50U2Npc3Nvci5oZWlnaHQpKTsKICAgICB9CiAKKyAgICBjb25zdCBnbDo6U3luY01h
bmFnZXIgJnN5bmNzID0gYXBpU3RhdGUuZ2V0U3luY01hbmFnZXJGb3JDYXB0dXJlKCk7CisgICAg
Zm9yIChjb25zdCBhdXRvICZzeW5jSXRlciA6IHN5bmNzKQorICAgIHsKKyAgICAgICAgLy8gVE9E
TzogQ3JlYXRlIGV4aXN0aW5nIHN5bmMgb2JqZWN0cyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYy
KQorICAgICAgICAodm9pZClzeW5jSXRlcjsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IH0KKwogICAgIC8vIEFsbG93IHRoZSByZXBsYXlTdGF0ZSBvYmplY3QgdG8gYmUgZGVzdHJveWVk
IGNvbnZlbmllbnRseS4KICAgICByZXBsYXlTdGF0ZS5zZXRCdWZmZXJCaW5kaW5nKGNvbnRleHQs
IGdsOjpCdWZmZXJCaW5kaW5nOjpBcnJheSwgbnVsbHB0cik7CiB9CkBAIC0xOTU2LDYgKzI1OTAs
NyBAQCBSZXBsYXlDb250ZXh0Ojp+UmVwbGF5Q29udGV4dCgpIHt9CiAKIEZyYW1lQ2FwdHVyZTo6
RnJhbWVDYXB0dXJlKCkKICAgICA6IG1FbmFibGVkKHRydWUpLAorICAgICAgbUNvbXByZXNzaW9u
KHRydWUpLAogICAgICAgbUNsaWVudFZlcnRleEFycmF5TWFwe30sCiAgICAgICBtRnJhbWVJbmRl
eCgwKSwKICAgICAgIG1GcmFtZVN0YXJ0KDApLApAQCAtMjAxMCwxMCArMjY0NSwyMjAgQEAgRnJh
bWVDYXB0dXJlOjpGcmFtZUNhcHR1cmUoKQogICAgICAgICAvLyBPcHRpb25hbCBsYWJlbCB0byBw
cm92aWRlIHVuaXF1ZSBmaWxlIG5hbWVzIGFuZCBuYW1lc3BhY2VzCiAgICAgICAgIG1DYXB0dXJl
TGFiZWwgPSBsYWJlbEZyb21FbnY7CiAgICAgfQorCisgICAgc3RkOjpzdHJpbmcgY29tcHJlc3Np
b25Gcm9tRW52ID0gYW5nbGU6OkdldEVudmlyb25tZW50VmFyKGtDb21wcmVzc2lvbik7CisgICAg
aWYgKGNvbXByZXNzaW9uRnJvbUVudiA9PSAiMCIpCisgICAgeworICAgICAgICBtQ29tcHJlc3Np
b24gPSBmYWxzZTsKKyAgICB9CiB9CiAKIEZyYW1lQ2FwdHVyZTo6fkZyYW1lQ2FwdHVyZSgpID0g
ZGVmYXVsdDsKIAordm9pZCBGcmFtZUNhcHR1cmU6OmNhcHR1cmVDb21wcmVzc2VkVGV4dHVyZURh
dGEoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsKQor
eworICAgIC8vIEZvciBjb21wcmVzc2VkIHRleHR1cmVzLCB0cmFjayBhIHNoYWRvdyBjb3B5IG9m
IHRoZSBkYXRhCisgICAgLy8gZm9yIHVzZSBkdXJpbmcgbWlkLWV4ZWN1dGlvbiBjYXB0dXJlLCBy
YXRoZXIgdGhhbiByZWFkaW5nIGl0IGJhY2sKKyAgICAvLyB3aXRoIEFOR0xFX2dldF9pbWFnZQor
CisgICAgLy8gU3RvcmluZyB0aGUgY29tcHJlc3NlZCBkYXRhIGlzIGhhbmRsZWQgdGhlIHNhbWUg
Zm9yIGFsbCBlbnRyeSBwb2ludHMsCisgICAgLy8gdGhleSBqdXN0IGhhdmUgc2xpZ2h0bHkgZGlm
ZmVyZW50IHBhcmFtZXRlciBsb2NhdGlvbnMKKyAgICBpbnQgZGF0YVBhcmFtT2Zmc2V0ICAgID0g
LTE7CisgICAgaW50IHhvZmZzZXRQYXJhbU9mZnNldCA9IC0xOworICAgIGludCB5b2Zmc2V0UGFy
YW1PZmZzZXQgPSAtMTsKKyAgICBpbnQgem9mZnNldFBhcmFtT2Zmc2V0ID0gLTE7CisgICAgaW50
IHdpZHRoUGFyYW1PZmZzZXQgICA9IC0xOworICAgIGludCBoZWlnaHRQYXJhbU9mZnNldCAgPSAt
MTsKKyAgICBpbnQgZGVwdGhQYXJhbU9mZnNldCAgID0gLTE7CisgICAgc3dpdGNoIChjYWxsLmVu
dHJ5UG9pbnQpCisgICAgeworICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRDoKKyAgICAgICAgICAgIHhvZmZzZXRQYXJhbU9mZnNldCA9IDI7CisgICAg
ICAgICAgICB5b2Zmc2V0UGFyYW1PZmZzZXQgPSAzOworICAgICAgICAgICAgem9mZnNldFBhcmFt
T2Zmc2V0ID0gNDsKKyAgICAgICAgICAgIHdpZHRoUGFyYW1PZmZzZXQgICA9IDU7CisgICAgICAg
ICAgICBoZWlnaHRQYXJhbU9mZnNldCAgPSA2OworICAgICAgICAgICAgZGVwdGhQYXJhbU9mZnNl
dCAgID0gNzsKKyAgICAgICAgICAgIGRhdGFQYXJhbU9mZnNldCAgICA9IDEwOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNzZWRUZXhJbWFn
ZTNEOgorICAgICAgICAgICAgd2lkdGhQYXJhbU9mZnNldCAgPSA0OworICAgICAgICAgICAgaGVp
Z2h0UGFyYW1PZmZzZXQgPSA1OworICAgICAgICAgICAgZGVwdGhQYXJhbU9mZnNldCAgPSA2Owor
ICAgICAgICAgICAgZGF0YVBhcmFtT2Zmc2V0ICAgPSA5OworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEOgorICAg
ICAgICAgICAgeG9mZnNldFBhcmFtT2Zmc2V0ID0gMjsKKyAgICAgICAgICAgIHlvZmZzZXRQYXJh
bU9mZnNldCA9IDM7CisgICAgICAgICAgICB3aWR0aFBhcmFtT2Zmc2V0ICAgPSA0OworICAgICAg
ICAgICAgaGVpZ2h0UGFyYW1PZmZzZXQgID0gNTsKKyAgICAgICAgICAgIGRhdGFQYXJhbU9mZnNl
dCAgICA9IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2lu
dDo6Q29tcHJlc3NlZFRleEltYWdlMkQ6CisgICAgICAgICAgICB3aWR0aFBhcmFtT2Zmc2V0ICA9
IDM7CisgICAgICAgICAgICBoZWlnaHRQYXJhbU9mZnNldCA9IDQ7CisgICAgICAgICAgICBkYXRh
UGFyYW1PZmZzZXQgICA9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBubyBvdGhlciBjYWxsZXJzIG9mIHRoaXMg
ZnVuY3Rpb24KKyAgICAgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGdsOjpCdWZmZXIgKnBpeGVsVW5wYWNrQnVmZmVyID0KKyAgICAgICAgY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIoZ2w6OkJ1ZmZlckJpbmRpbmc6OlBpeGVsVW5w
YWNrKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90ICo+KAorICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgiZGF0YSIsIFBhcmFtVHlwZTo6
VHZvaWRDb25zdFBvaW50ZXIsIGRhdGFQYXJhbU9mZnNldCkKKyAgICAgICAgICAgIC52YWx1ZS52
b2lkQ29uc3RQb2ludGVyVmFsKTsKKworICAgIEdMc2l6ZWkgaW1hZ2VTaXplID0gY2FsbC5wYXJh
bXMuZ2V0UGFyYW0oImltYWdlU2l6ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGRhdGFQYXJhbU9m
ZnNldCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLkdMc2l6ZWlWYWw7
CisKKyAgICBjb25zdCB1aW50OF90ICpwaXhlbERhdGEgPSBudWxscHRyOworCisgICAgaWYgKHBp
eGVsVW5wYWNrQnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gSWYgdXNpbmcgcGl4ZWwgdW5wYWNr
IGJ1ZmZlciwgbWFwIHRoZSBidWZmZXIgYW5kIHRyYWNrIGl0cyBkYXRhCisgICAgICAgIEFTU0VS
VCghcGl4ZWxVbnBhY2tCdWZmZXItPmlzTWFwcGVkKCkpOworICAgICAgICAodm9pZClwaXhlbFVu
cGFja0J1ZmZlci0+bWFwUmFuZ2UoY29udGV4dCwgcmVpbnRlcnByZXRfY2FzdDxHTGludHB0cj4o
ZGF0YSksIGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX01BUF9SRUFEX0JJVCk7CisKKyAgICAgICAgcGl4ZWxEYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVsVW5wYWNrQnVmZmVyLT5nZXRNYXBQb2ludGVyKCkp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBwaXhlbERhdGEgPSBkYXRhOworICAg
IH0KKworICAgIGlmICghcGl4ZWxEYXRhKQorICAgIHsKKyAgICAgICAgLy8gSWYgbm8gcG9pbnRl
ciB3YXMgcHJvdmlkZWQgYW5kIHdlIHdlcmVuJ3QgYWJsZSB0byBtYXAgdGhlIGJ1ZmZlciwgdGhl
cmUgaXMgbm8gZGF0YSB0bworICAgICAgICAvLyBjYXB0dXJlCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBMb29rIHVwIHRoZSB0ZXh0dXJlIHR5cGUKKyAgICBnbDo6VGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgPQorICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgidGFyZ2V0
UGFja2VkIiwgUGFyYW1UeXBlOjpUVGV4dHVyZVRhcmdldCwgMCkudmFsdWUuVGV4dHVyZVRhcmdl
dFZhbDsKKyAgICBnbDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUgPSBnbDo6VGV4dHVyZVRhcmdl
dFRvVHlwZSh0YXJnZXRQYWNrZWQpOworCisgICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgaW5j
b21pbmcgZGF0YQorICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGNvbXByZXNzZWREYXRhOworICAg
IGNvbXByZXNzZWREYXRhLmFzc2lnbihwaXhlbERhdGEsIHBpeGVsRGF0YSArIGltYWdlU2l6ZSk7
CisKKyAgICAvLyBMb29rIHVwIHRoZSBjdXJyZW50bHkgYm91bmQgdGV4dHVyZQorICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRUZXh0dXJlKHRl
eHR1cmVUeXBlKTsKKyAgICBBU1NFUlQodGV4dHVyZSk7CisKKyAgICAvLyBSZWNvcmQgdGhlIGRh
dGEsIGluZGV4ZWQgYnkgdGV4dHVyZUlEIGFuZCBsZXZlbAorICAgIEdMaW50IGxldmVsICAgICAg
ICAgICAgID0gY2FsbC5wYXJhbXMuZ2V0UGFyYW0oImxldmVsIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDEpLnZhbHVlLkdMaW50VmFsOworICAgIGF1dG8gZm91bmRUZXh0dXJlTGV2ZWxzID0gbUNhY2hl
ZFRleHR1cmVMZXZlbERhdGEuZmluZCh0ZXh0dXJlLT5pZCgpKTsKKyAgICBpZiAoZm91bmRUZXh0
dXJlTGV2ZWxzID09IG1DYWNoZWRUZXh0dXJlTGV2ZWxEYXRhLmVuZCgpKQorICAgIHsKKyAgICAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dHVyZSBJRCBkYXRhLgorICAgICAgICBhdXRvIGVtcGxh
Y2VSZXN1bHQgPSBtQ2FjaGVkVGV4dHVyZUxldmVsRGF0YS5lbXBsYWNlKHRleHR1cmUtPmlkKCks
IFRleHR1cmVMZXZlbHMoKSk7CisgICAgICAgIEFTU0VSVChlbXBsYWNlUmVzdWx0LnNlY29uZCk7
CisgICAgICAgIGZvdW5kVGV4dHVyZUxldmVscyA9IGVtcGxhY2VSZXN1bHQuZmlyc3Q7CisgICAg
fQorCisgICAgLy8gR2V0IHRoZSBmb3JtYXQgb2YgdGhlIHRleHR1cmUgZm9yIHVzZSB3aXRoIHRo
ZSBjb21wcmVzc2VkIGJsb2NrIHNpemUgbWF0aC4KKyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3Jt
YXQgJmZvcm1hdCA9ICp0ZXh0dXJlLT5nZXRGb3JtYXQodGFyZ2V0UGFja2VkLCBsZXZlbCkuaW5m
bzsKKworICAgIFRleHR1cmVMZXZlbHMgJmZvdW5kTGV2ZWxzID0gZm91bmRUZXh0dXJlTGV2ZWxz
LT5zZWNvbmQ7CisgICAgYXV0byBmb3VuZExldmVsICAgICAgICAgICAgPSBmb3VuZExldmVscy5m
aW5kKGxldmVsKTsKKworICAgIC8vIERpdmlkZSBkaW1lbnNpb25zIGFjY29yZGluZyB0byBibG9j
ayBzaXplLgorICAgIGNvbnN0IGdsOjpFeHRlbnRzICZsZXZlbEV4dGVudHMgPSB0ZXh0dXJlLT5n
ZXRFeHRlbnRzKHRhcmdldFBhY2tlZCwgbGV2ZWwpOworCisgICAgaWYgKGZvdW5kTGV2ZWwgPT0g
Zm91bmRMZXZlbHMuZW5kKCkpCisgICAgeworICAgICAgICAvLyBJbml0aWFsaXplIHRleHR1cmUg
cmVjdGFuZ2xlIGRhdGEuIERlZmF1bHQgaW5pdCB0byB6ZXJvIGZvciBzdGFiaWxpdHkuCisgICAg
ICAgIEdMdWludCBzaXplSW5CeXRlczsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBmb3JtYXQuY29t
cHV0ZUNvbXByZXNzZWRJbWFnZVNpemUobGV2ZWxFeHRlbnRzLCAmc2l6ZUluQnl0ZXMpOworICAg
ICAgICBBU1NFUlQocmVzdWx0KTsKKworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBuZXdQ
aXhlbERhdGEoc2l6ZUluQnl0ZXMsIDApOworICAgICAgICBhdXRvIGVtcGxhY2VSZXN1bHQgPSBm
b3VuZExldmVscy5lbXBsYWNlKGxldmVsLCBzdGQ6Om1vdmUobmV3UGl4ZWxEYXRhKSk7CisgICAg
ICAgIEFTU0VSVChlbXBsYWNlUmVzdWx0LnNlY29uZCk7CisgICAgICAgIGZvdW5kTGV2ZWwgPSBl
bXBsYWNlUmVzdWx0LmZpcnN0OworICAgIH0KKworICAgIC8vIFVucGFjayB0aGUgdmFyaW91cyBw
aXhlbCByZWN0YW5nbGUgcGFyYW1ldGVycy4KKyAgICBBU1NFUlQod2lkdGhQYXJhbU9mZnNldCAh
PSAtMSk7CisgICAgQVNTRVJUKGhlaWdodFBhcmFtT2Zmc2V0ICE9IC0xKTsKKyAgICBHTHNpemVp
IHBpeGVsV2lkdGggPQorICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgid2lkdGgiLCBQYXJh
bVR5cGU6OlRHTHNpemVpLCB3aWR0aFBhcmFtT2Zmc2V0KS52YWx1ZS5HTHNpemVpVmFsOworICAg
IEdMc2l6ZWkgcGl4ZWxIZWlnaHQgPQorICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgiaGVp
Z2h0IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgaGVpZ2h0UGFyYW1PZmZzZXQpLnZhbHVlLkdMc2l6
ZWlWYWw7CisgICAgR0xzaXplaSBwaXhlbERlcHRoID0gMTsKKyAgICBpZiAoZGVwdGhQYXJhbU9m
ZnNldCAhPSAtMSkKKyAgICB7CisgICAgICAgIHBpeGVsRGVwdGggPQorICAgICAgICAgICAgY2Fs
bC5wYXJhbXMuZ2V0UGFyYW0oImRlcHRoIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgZGVwdGhQYXJh
bU9mZnNldCkudmFsdWUuR0xzaXplaVZhbDsKKyAgICB9CisKKyAgICBHTGludCB4b2Zmc2V0ID0g
MDsKKyAgICBHTGludCB5b2Zmc2V0ID0gMDsKKyAgICBHTGludCB6b2Zmc2V0ID0gMDsKKworICAg
IGlmICh4b2Zmc2V0UGFyYW1PZmZzZXQgIT0gLTEpCisgICAgeworICAgICAgICB4b2Zmc2V0ID0K
KyAgICAgICAgICAgIGNhbGwucGFyYW1zLmdldFBhcmFtKCJ4b2Zmc2V0IiwgUGFyYW1UeXBlOjpU
R0xpbnQsIHhvZmZzZXRQYXJhbU9mZnNldCkudmFsdWUuR0xpbnRWYWw7CisgICAgfQorCisgICAg
aWYgKHlvZmZzZXRQYXJhbU9mZnNldCAhPSAtMSkKKyAgICB7CisgICAgICAgIHlvZmZzZXQgPQor
ICAgICAgICAgICAgY2FsbC5wYXJhbXMuZ2V0UGFyYW0oInlvZmZzZXQiLCBQYXJhbVR5cGU6OlRH
TGludCwgeW9mZnNldFBhcmFtT2Zmc2V0KS52YWx1ZS5HTGludFZhbDsKKyAgICB9CisKKyAgICBp
ZiAoem9mZnNldFBhcmFtT2Zmc2V0ICE9IC0xKQorICAgIHsKKyAgICAgICAgem9mZnNldCA9Cisg
ICAgICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgiem9mZnNldCIsIFBhcmFtVHlwZTo6VEdM
aW50LCB6b2Zmc2V0UGFyYW1PZmZzZXQpLnZhbHVlLkdMaW50VmFsOworICAgIH0KKworICAgIC8v
IFNpbmNlIHdlJ3JlIGRlYWxpbmcgaW4gNHg0IGJsb2Nrcywgc2NhbGUgZG93biB0aGUgd2lkdGgv
aGVpZ2h0IHBpeGVsIG9mZnNldHMuCisgICAgQVNTRVJUKGZvcm1hdC5jb21wcmVzc2VkQmxvY2tX
aWR0aCA9PSA0KTsKKyAgICBBU1NFUlQoZm9ybWF0LmNvbXByZXNzZWRCbG9ja0hlaWdodCA9PSA0
KTsKKyAgICBBU1NFUlQoZm9ybWF0LmNvbXByZXNzZWRCbG9ja0RlcHRoID09IDEpOworICAgIHBp
eGVsV2lkdGggPj49IDI7CisgICAgcGl4ZWxIZWlnaHQgPj49IDI7CisgICAgeG9mZnNldCA+Pj0g
MjsKKyAgICB5b2Zmc2V0ID4+PSAyOworCisgICAgLy8gVXBkYXRlIHBpeGVsIGRhdGEuCisgICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4gJmxldmVsRGF0YSA9IGZvdW5kTGV2ZWwtPnNlY29uZDsKKwor
ICAgIEdMaW50IHBpeGVsQnl0ZXMgPSBzdGF0aWNfY2FzdDxHTGludD4oZm9ybWF0LnBpeGVsQnl0
ZXMpOworCisgICAgR0xpbnQgcGl4ZWxSb3dQaXRjaCAgID0gcGl4ZWxXaWR0aCAqIHBpeGVsQnl0
ZXM7CisgICAgR0xpbnQgcGl4ZWxEZXB0aFBpdGNoID0gcGl4ZWxSb3dQaXRjaCAqIHBpeGVsSGVp
Z2h0OworICAgIEdMaW50IGxldmVsUm93UGl0Y2ggICA9IChsZXZlbEV4dGVudHMud2lkdGggPj4g
MikgKiBwaXhlbEJ5dGVzOworICAgIEdMaW50IGxldmVsRGVwdGhQaXRjaCA9IGxldmVsUm93UGl0
Y2ggKiAobGV2ZWxFeHRlbnRzLmhlaWdodCA+PiAyKTsKKworICAgIGZvciAoR0xpbnQgemluZGV4
ID0gMDsgemluZGV4IDwgcGl4ZWxEZXB0aDsgKyt6aW5kZXgpCisgICAgeworICAgICAgICBHTGlu
dCB6ID0gemluZGV4ICsgem9mZnNldDsKKyAgICAgICAgZm9yIChHTGludCB5aW5kZXggPSAwOyB5
aW5kZXggPCBwaXhlbEhlaWdodDsgKyt5aW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdM
aW50IHkgICAgICAgICAgID0geWluZGV4ICsgeW9mZnNldDsKKyAgICAgICAgICAgIEdMaW50IHBp
eGVsT2Zmc2V0ID0gemluZGV4ICogcGl4ZWxEZXB0aFBpdGNoICsgeWluZGV4ICogcGl4ZWxSb3dQ
aXRjaDsKKyAgICAgICAgICAgIEdMaW50IGxldmVsT2Zmc2V0ID0geiAqIGxldmVsRGVwdGhQaXRj
aCArIHkgKiBsZXZlbFJvd1BpdGNoICsgeG9mZnNldCAqIHBpeGVsQnl0ZXM7CisgICAgICAgICAg
ICBtZW1jcHkoJmxldmVsRGF0YVtsZXZlbE9mZnNldF0sICZwaXhlbERhdGFbcGl4ZWxPZmZzZXRd
LCBwaXhlbFJvd1BpdGNoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwaXhlbFVucGFj
a0J1ZmZlcikKKyAgICB7CisgICAgICAgIEdMYm9vbGVhbiBzdWNjZXNzOworICAgICAgICAodm9p
ZClwaXhlbFVucGFja0J1ZmZlci0+dW5tYXAoY29udGV4dCwgJnN1Y2Nlc3MpOworICAgICAgICBB
U1NFUlQoc3VjY2Vzcyk7CisgICAgfQorfQorCiB2b2lkIEZyYW1lQ2FwdHVyZTo6bWF5YmVDYXB0
dXJlQ2xpZW50RGF0YShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgY29uc3QgQ2FsbENhcHR1
cmUgJmNhbGwpCiB7CiAgICAgc3dpdGNoIChjYWxsLmVudHJ5UG9pbnQpCkBAIC0yMTA2LDYgKzI5
NTEsOTEgQEAgdm9pZCBGcmFtZUNhcHR1cmU6Om1heWJlQ2FwdHVyZUNsaWVudERhdGEoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsIGNvbnN0IENhbGwKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6Q29tcHJlc3NlZFRleEltYWdl
MUQ6CisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTFE
OgorICAgICAgICB7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNz
ZWRUZXhJbWFnZTJEOgorICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpDb21wcmVzc2VkVGV4
SW1hZ2UzRDoKKyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlMkQ6CisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEOgorICAgICAgICB7CisgICAgICAgICAgICBjYXB0dXJlQ29tcHJlc3NlZFRleHR1cmVEYXRh
KGNvbnRleHQsIGNhbGwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIGdsOjpFbnRyeVBvaW50OjpEZWxldGVUZXh0dXJlczoKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gRnJlZSBhbnkgVGV4dHVyZUxldmVsRGF0YU1hcCBlbnRyaWVzIGJlaW5nIHRyYWNr
ZWQgZm9yIHRoaXMgdGV4dHVyZQorICAgICAgICAgICAgLy8gVGhpcyBpcyB0byBjb3ZlciB0aGUg
c2NlbmFyaW8gd2hlcmUgYSB0ZXh0dXJlIGhhcyBiZWVuIGNyZWF0ZWQsIGl0cworICAgICAgICAg
ICAgLy8gbGV2ZWxzIGNhY2hlZCwgdGhlbiB0ZXh0dXJlIGRlbGV0ZWQgYW5kIHJlY3JlYXRlZCwg
cmVjZWl2aW5nIHRoZSBzYW1lIElECisKKyAgICAgICAgICAgIC8vIExvb2sgdXAgaG93IG1hbnkg
dGV4dHVyZXMgYXJlIGJlaW5nIGRlbGV0ZWQKKyAgICAgICAgICAgIEdMc2l6ZWkgbiA9IGNhbGwu
cGFyYW1zLmdldFBhcmFtKCJuIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMCkudmFsdWUuR0xzaXpl
aVZhbDsKKworICAgICAgICAgICAgLy8gTG9vayB1cCB0aGUgcG9pbnRlciB0byBsaXN0IG9mIHRl
eHR1cmVzCisgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUlEICp0ZXh0dXJlSURzID0KKyAg
ICAgICAgICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgidGV4dHVyZXNQYWNrZWQiLCBQYXJh
bVR5cGU6OlRUZXh0dXJlSURDb25zdFBvaW50ZXIsIDEpCisgICAgICAgICAgICAgICAgICAgIC52
YWx1ZS5UZXh0dXJlSURDb25zdFBvaW50ZXJWYWw7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNo
IHRleHR1cmUgbGlzdGVkIGZvciBkZWxldGlvbgorICAgICAgICAgICAgZm9yIChpbnQzMl90IGkg
PSAwOyBpIDwgbjsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIExvb2sg
aXQgdXAgaW4gdGhlIGNhY2hlLCBhbmQgZGVsZXRlIGl0IGlmIGZvdW5kCisgICAgICAgICAgICAg
ICAgY29uc3QgYXV0byAmZm91bmRUZXh0dXJlTGV2ZWxzID0gbUNhY2hlZFRleHR1cmVMZXZlbERh
dGEuZmluZCh0ZXh0dXJlSURzW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoZm91bmRUZXh0dXJl
TGV2ZWxzICE9IG1DYWNoZWRUZXh0dXJlTGV2ZWxEYXRhLmVuZCgpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIGFsbCB0ZXh0dXJlIGxldmVscyBhdCBv
bmNlCisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRUZXh0dXJlTGV2ZWxEYXRhLmVyYXNlKGZv
dW5kVGV4dHVyZUxldmVscyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50
OjpNYXBCdWZmZXI6CisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6Ok1hcEJ1ZmZlck9FUzoK
KyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2VFWFQ6CisgICAgICAg
IGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVubWFwQnVmZmVyT0VTOgorICAgICAgICBjYXNlIGdsOjpF
bnRyeVBvaW50OjpVbm1hcE5hbWVkQnVmZmVyOgorICAgICAgICB7CisgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgZ2w6OkVudHJ5UG9pbnQ6Ok1hcEJ1ZmZlclJhbmdlOgorICAgICAgICB7CisgICAgICAgICAg
ICAvLyBVc2UgdGhlIGFjY2VzcyBiaXRzIHRvIHNlZSBpZiBjb250ZW50cyBtYXkgYmUgbW9kaWZp
ZWQKKyAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzID0KKyAgICAgICAgICAgICAgICBjYWxs
LnBhcmFtcy5nZXRQYXJhbSgiYWNjZXNzIiwgUGFyYW1UeXBlOjpUR0xiaXRmaWVsZCwgMykudmFs
dWUuR0xiaXRmaWVsZFZhbDsKKworICAgICAgICAgICAgaWYgKGFjY2VzcyAmIEdMX01BUF9XUklU
RV9CSVQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBidWZmZXIg
d2FzIG1hcHBlZCB3cml0YWJsZSwgd2UgZG9uJ3QgaGF2ZSBhbnkgdmlzaWJpbGl0eSBpbnRvIHdo
YXQKKyAgICAgICAgICAgICAgICAvLyBoYXBwZW5zIHRvIGl0LiBUaGVyZWZvcmUsIHJlbWVtYmVy
IHRoZSBkZXRhaWxzIGFib3V0IGl0LCBhbmQgd2UnbGwgcmVhZCBpdCBiYWNrCisgICAgICAgICAg
ICAgICAgLy8gb24gVW5tYXAgdG8gcmVwb3B1bGF0ZSBpdCBkdXJpbmcgcmVwbGF5LgorCisgICAg
ICAgICAgICAgICAgZ2w6OkJ1ZmZlckJpbmRpbmcgdGFyZ2V0ID0KKyAgICAgICAgICAgICAgICAg
ICAgY2FsbC5wYXJhbXMuZ2V0UGFyYW0oInRhcmdldFBhY2tlZCIsIFBhcmFtVHlwZTo6VEJ1ZmZl
ckJpbmRpbmcsIDApCisgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuQnVmZmVyQmluZGlu
Z1ZhbDsKKyAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQgPQorICAgICAgICAgICAgICAg
ICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgib2Zmc2V0IiwgUGFyYW1UeXBlOjpUR0xpbnRwdHIs
IDEpLnZhbHVlLkdMaW50cHRyVmFsOworICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3Ro
ID0KKyAgICAgICAgICAgICAgICAgICAgY2FsbC5wYXJhbXMuZ2V0UGFyYW0oImxlbmd0aCIsIFBh
cmFtVHlwZTo6VEdMc2l6ZWlwdHIsIDIpLnZhbHVlLkdMc2l6ZWlwdHJWYWw7CisKKyAgICAgICAg
ICAgICAgICBtQnVmZmVyRGF0YU1hcFt0YXJnZXRdID0gc3RkOjptYWtlX3BhaXIob2Zmc2V0LCBs
ZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbm1hcEJ1ZmZlcjoKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gU2VlIGlmIHdlIG5lZWQgdG8gY2FwdHVyZSB0aGUgYnVmZmVyIGNvbnRlbnRz
CisgICAgICAgICAgICBjYXB0dXJlTWFwcGVkQnVmZmVyU25hcHNob3QoY29udGV4dCwgY2FsbCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjExOSw4ICszMDQ5LDQ4IEBAIHZvaWQgRnJhbWVDYXB0
dXJlOjpjYXB0dXJlQ2FsbChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgQ2FsbENhcHR1cmUg
JiZjYWxsKQogICAgIG1SZWFkQnVmZmVyU2l6ZSA9IHN0ZDo6bWF4KG1SZWFkQnVmZmVyU2l6ZSwg
Y2FsbC5wYXJhbXMuZ2V0UmVhZEJ1ZmZlclNpemUoKSk7CiAgICAgbUZyYW1lQ2FsbHMuZW1wbGFj
ZV9iYWNrKHN0ZDo6bW92ZShjYWxsKSk7CiAKKyAgICBtYXliZUNhcHR1cmVQb3N0Q2FsbFVwZGF0
ZXMoY29udGV4dCk7Cit9CisKK3ZvaWQgRnJhbWVDYXB0dXJlOjptYXliZUNhcHR1cmVQb3N0Q2Fs
bFVwZGF0ZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCit7CiAgICAgLy8gUHJvY2VzcyBy
ZXNvdXJjZSBJRCB1cGRhdGVzLgogICAgIE1heWJlQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKCZt
RnJhbWVDYWxscyk7CisKKyAgICBjb25zdCBDYWxsQ2FwdHVyZSAmbGFzdENhbGwgPSBtRnJhbWVD
YWxscy5iYWNrKCk7CisgICAgc3dpdGNoIChsYXN0Q2FsbC5lbnRyeVBvaW50KQorICAgIHsKKyAg
ICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6TGlua1Byb2dyYW06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IFBhcmFtQ2FwdHVyZSAmcGFyYW0gPQorICAgICAgICAgICAgICAgIGxhc3RD
YWxsLnBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclBy
b2dyYW1JRCwgMCk7CisgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJlc29sdmVMaW5rKHBhcmFtLnZhbHVl
LlNoYWRlclByb2dyYW1JRFZhbCk7CisgICAgICAgICAgICBDYXB0dXJlVXBkYXRlVW5pZm9ybUxv
Y2F0aW9ucyhwcm9ncmFtLCAmbUZyYW1lQ2FsbHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VXNlUHJvZ3JhbToKKyAgICAgICAg
ICAgIENhcHR1cmVVcGRhdGVDdXJyZW50UHJvZ3JhbShsYXN0Q2FsbCwgJm1GcmFtZUNhbGxzKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpEZWxldGVQ
cm9ncmFtOgorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBQYXJhbUNhcHR1cmUgJnBhcmFt
ID0KKyAgICAgICAgICAgICAgICBsYXN0Q2FsbC5wYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApOworICAgICAgICAgICAgQ2FwdHVy
ZURlbGV0ZVVuaWZvcm1Mb2NhdGlvbnMocGFyYW0udmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLCAm
bUZyYW1lQ2FsbHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBnbDo6RW50cnlQb2ludDo6QmluZEZyYW1lYnVmZmVyOgorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBQYXJhbUNhcHR1cmUgJnRhcmdldCA9IGxhc3RDYWxsLnBhcmFtcy5nZXRQYXJhbSgi
dGFyZ2V0IiwgUGFyYW1UeXBlOjpUR0xlbnVtLCAwKTsKKyAgICAgICAgICAgIGNvbnN0IFBhcmFt
Q2FwdHVyZSAmZnJhbWVidWZmZXIgPQorICAgICAgICAgICAgICAgIGxhc3RDYWxsLnBhcmFtcy5n
ZXRQYXJhbSgiZnJhbWVidWZmZXJQYWNrZWQiLCBQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklELCAx
KTsKKyAgICAgICAgICAgIENhcHR1cmVPbkZyYW1lYnVmZmVyQ2hhbmdlKHRhcmdldC52YWx1ZS5H
TGVudW1WYWwsIGZyYW1lYnVmZmVyLnZhbHVlLkZyYW1lYnVmZmVySURWYWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUZyYW1lQ2FsbHMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KIH0KIAogdm9pZCBGcmFtZUNhcHR1cmU6OmNhcHR1cmVDbGllbnRBcnJheVNuYXBzaG90
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApAQCAtMjE3MiwyMCArMzE0Miw3OCBAQCB2b2lk
IEZyYW1lQ2FwdHVyZTo6Y2FwdHVyZUNsaWVudEFycmF5U25hcHNob3QoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgfQogfQogCit2b2lkIEZyYW1lQ2FwdHVyZTo6Y2FwdHVyZU1hcHBl
ZEJ1ZmZlclNuYXBzaG90KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBjb25zdCBDYWxsQ2Fw
dHVyZSAmY2FsbCkKK3sKKyAgICAvLyBJZiB0aGUgYnVmZmVyIHdhcyBtYXBwZWQgd3JpdGFibGUs
IHdlIG5lZWQgdG8gcmVzdG9yZSBpdHMgZGF0YSwgc2luY2Ugd2UgaGF2ZSBubyB2aXNpYmlsaXR5
CisgICAgLy8gaW50byB3aGF0IHRoZSBjbGllbnQgZGlkIHRvIHRoZSBidWZmZXIgd2hpbGUgbWFw
cGVkCisgICAgLy8gVGhpcyBzZXF1ZW5jZSB3aWxsIHJlc3VsdCBpbiByZXBsYXkgY2FsbHMgbGlr
ZSB0aGlzOgorICAgIC8vICAgLi4uCisgICAgLy8gICBnTWFwcGVkQnVmZmVyRGF0YSA9IGdsTWFw
QnVmZmVyUmFuZ2UoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgNjU1MzYsIEdMX01BUF9XUklU
RV9CSVQpOworICAgIC8vICAgLi4uCisgICAgLy8gICBVcGRhdGVDbGllbnRCdWZmZXJEYXRhKCZn
QmluYXJ5RGF0YVsxNjQ2MzEwMjRdLCA2NTUzNik7CisgICAgLy8gICBnbFVubWFwQnVmZmVyKEdM
X1BJWEVMX1VOUEFDS19CVUZGRVIpOworICAgIC8vICAgLi4uCisKKyAgICAvLyBSZS1tYXAgdGhl
IGJ1ZmZlciwgdXNpbmcgdGhlIGluZm8gd2UgdHJhY2tlZCBhYm91dCB0aGUgYnVmZmVyCisgICAg
Z2w6OkJ1ZmZlckJpbmRpbmcgdGFyZ2V0ID0KKyAgICAgICAgY2FsbC5wYXJhbXMuZ2V0UGFyYW0o
InRhcmdldFBhY2tlZCIsIFBhcmFtVHlwZTo6VEJ1ZmZlckJpbmRpbmcsIDApLnZhbHVlLkJ1ZmZl
ckJpbmRpbmdWYWw7CisKKyAgICBjb25zdCBhdXRvICZidWZmZXJEYXRhSW5mbyA9IG1CdWZmZXJE
YXRhTWFwLmZpbmQodGFyZ2V0KTsKKyAgICBpZiAoYnVmZmVyRGF0YUluZm8gPT0gbUJ1ZmZlckRh
dGFNYXAuZW5kKCkpCisgICAgeworICAgICAgICAvLyBUaGlzIGJ1ZmZlciB3YXMgbm90IG1hcmtl
ZCB3cml0YWJsZSwgc28gd2UgZGlkIG5vdCBiYWNrIGl0IHVwCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBHTGludHB0ciBvZmZzZXQgICA9IGJ1ZmZlckRhdGFJbmZvLT5zZWNvbmQuZmly
c3Q7CisgICAgR0xzaXplaXB0ciBsZW5ndGggPSBidWZmZXJEYXRhSW5mby0+c2Vjb25kLnNlY29u
ZDsKKworICAgIC8vIE1hcCB0aGUgYnVmZmVyIHNvIHdlIGNhbiBjb3B5IGl0cyBjb250ZW50cyBv
dXQKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdl
dEJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVCghYnVmZmVyLT5pc01hcHBlZCgpKTsKKyAgICAo
dm9pZClidWZmZXItPm1hcFJhbmdlKGNvbnRleHQsIG9mZnNldCwgbGVuZ3RoLCBHTF9NQVBfUkVB
RF9CSVQpOworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QgKj4oYnVmZmVyLT5nZXRNYXBQb2ludGVyKCkpOworCisgICAgLy8gQ3JlYXRlIHRo
ZSBwYXJhbWV0ZXJzIHRvIG91ciBoZWxwZXIgZm9yIHVzZSBkdXJpbmcgcmVwbGF5CisgICAgUGFy
YW1CdWZmZXIgZGF0YVBhcmFtQnVmZmVyOworCisgICAgLy8gQ2FwdHVyZSB0aGUgY3VycmVudCBi
dWZmZXIgZGF0YSB3aXRoIGEgYmluYXJ5IHBhcmFtCisgICAgUGFyYW1DYXB0dXJlIGNhcHR1cmVE
YXRhKCJzb3VyY2UiLCBQYXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyKTsKKyAgICBDYXB0dXJl
TWVtb3J5KGRhdGEsIGxlbmd0aCwgJmNhcHR1cmVEYXRhKTsKKyAgICBkYXRhUGFyYW1CdWZmZXIu
YWRkUGFyYW0oc3RkOjptb3ZlKGNhcHR1cmVEYXRhKSk7CisKKyAgICAvLyBBbHNvIHRyYWNrIGl0
cyBzaXplIGZvciB1c2Ugd2l0aCBtZW1jcHkKKyAgICBkYXRhUGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbTxHTHNpemVpcHRyPigic2l6ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWlwdHIsIGxlbmd0aCk7
CisKKyAgICAvLyBDYWxsIHRoZSBoZWxwZXIgdGhhdCBwb3B1bGF0ZXMgdGhlIGJ1ZmZlciB3aXRo
IGNhcHR1cmVkIGRhdGEKKyAgICBtRnJhbWVDYWxscy5lbXBsYWNlX2JhY2soIlVwZGF0ZUNsaWVu
dEJ1ZmZlckRhdGEiLCBzdGQ6Om1vdmUoZGF0YVBhcmFtQnVmZmVyKSk7CisKKyAgICAvLyBVbm1h
cCB0aGUgYnVmZmVyIGFuZCBtb3ZlIG9uCisgICAgR0xib29sZWFuIGRvbnRDYXJlOworICAgICh2
b2lkKWJ1ZmZlci0+dW5tYXAoY29udGV4dCwgJmRvbnRDYXJlKTsKK30KKwogdm9pZCBGcmFtZUNh
cHR1cmU6Om9uRW5kRnJhbWUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgLy8g
Tm90ZSB0aGF0IHdlIGN1cnJlbnRseSBjYXB0dXJlIGJlZm9yZSB0aGUgc3RhcnQgZnJhbWUgdG8g
Y29sbGVjdCBzaGFkZXIgYW5kIHByb2dyYW0gc291cmNlcy4KICAgICBpZiAoIW1GcmFtZUNhbGxz
LmVtcHR5KCkgJiYgbUZyYW1lSW5kZXggPj0gbUZyYW1lU3RhcnQpCiAgICAgewotICAgICAgICBX
cml0ZUNwcFJlcGxheShtT3V0RGlyZWN0b3J5LCBjb250ZXh0LT5pZCgpLCBtQ2FwdHVyZUxhYmVs
LCBtRnJhbWVJbmRleCwgbUZyYW1lQ2FsbHMsCi0gICAgICAgICAgICAgICAgICAgICAgIG1TZXR1
cENhbGxzKTsKKyAgICAgICAgV3JpdGVDcHBSZXBsYXkobUNvbXByZXNzaW9uLCBtT3V0RGlyZWN0
b3J5LCBjb250ZXh0LT5pZCgpLCBtQ2FwdHVyZUxhYmVsLCBtRnJhbWVJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgbUZyYW1lQ2FsbHMsIG1TZXR1cENhbGxzLCAmbUJpbmFyeURhdGEpOwog
CiAgICAgICAgIC8vIFNhdmUgdGhlIGluZGV4IGZpbGVzIGFmdGVyIHRoZSBsYXN0IGZyYW1lLgog
ICAgICAgICBpZiAobUZyYW1lSW5kZXggPT0gbUZyYW1lRW5kKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBXcml0ZUNwcFJlcGxheUluZGV4RmlsZXMobU91dERpcmVjdG9yeSwgY29udGV4dC0+aWQo
KSwgbUNhcHR1cmVMYWJlbCwgbUZyYW1lU3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbUZyYW1lRW5kLCBtUmVhZEJ1ZmZlclNpemUsIG1DbGllbnRBcnJheVNpemVz
LAorICAgICAgICAgICAgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKG1Db21wcmVzc2lvbiwgbU91
dERpcmVjdG9yeSwgY29udGV4dC0+aWQoKSwgbUNhcHR1cmVMYWJlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtRnJhbWVTdGFydCwgbUZyYW1lRW5kLCBtUmVhZEJ1ZmZl
clNpemUsIG1DbGllbnRBcnJheVNpemVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1IYXNSZXNvdXJjZVR5cGUpOworCisgICAgICAgICAgICBpZiAoIW1CaW5hcnlEYXRh
LmVtcHR5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgU2F2ZUJpbmFyeURhdGEo
bUNvbXByZXNzaW9uLCBtT3V0RGlyZWN0b3J5LCBjb250ZXh0LT5pZCgpLCBtQ2FwdHVyZUxhYmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1CaW5hcnlEYXRhKTsKKyAgICAgICAg
ICAgICAgICBtQmluYXJ5RGF0YS5jbGVhcigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogCkBAIC0yMjA5LDggKzMyMzcsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6b25FbmRGcmFt
ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICBpZiAoZW5hYmxlZCgpICYmIG1GcmFt
ZUluZGV4ID09IG1GcmFtZVN0YXJ0KQogICAgIHsKICAgICAgICAgbVNldHVwQ2FsbHMuY2xlYXIo
KTsKLSAgICAgICAgQ2FwdHVyZU1pZEV4ZWN1dGlvblNldHVwKGNvbnRleHQsICZtU2V0dXBDYWxs
cywgbUNhY2hlZFNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtQ2FjaGVkUHJvZ3JhbVNvdXJjZXMpOworICAgICAgICBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0
dXAoY29udGV4dCwgJm1TZXR1cENhbGxzLCBtQ2FjaGVkU2hhZGVyU291cmNlcywgbUNhY2hlZFBy
b2dyYW1Tb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhY2hlZFRl
eHR1cmVMZXZlbERhdGEpOwogICAgIH0KIH0KIApAQCAtMjI3OCwxMiArMzMwNiw2IEBAIHZvaWQg
RnJhbWVDYXB0dXJlOjpyZXNldCgpCiAgICAgLy8gbmVjZXNzYXJ5LgogfQogCi1zdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgUGFyYW1DYXB0dXJlICZjYXB0
dXJlKQotewotICAgIFdyaXRlUGFyYW1UeXBlVG9TdHJlYW0ob3MsIGNhcHR1cmUudHlwZSwgY2Fw
dHVyZS52YWx1ZSk7Ci0gICAgcmV0dXJuIG9zOwotfQotCiB2b2lkIENhcHR1cmVNZW1vcnkoY29u
c3Qgdm9pZCAqc291cmNlLCBzaXplX3Qgc2l6ZSwgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUp
CiB7CiAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKQEAgLTIyOTcsNiArMzMx
OSwyNCBAQCB2b2lkIENhcHR1cmVTdHJpbmcoY29uc3QgR0xjaGFyICpzdHIsIFBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKQogICAgIENhcHR1cmVNZW1vcnkoc3RyLCBzdHJsZW4oc3RyKSArIDEs
IHBhcmFtQ2FwdHVyZSk7CiB9CiAKK3ZvaWQgQ2FwdHVyZVN0cmluZ0xpbWl0KGNvbnN0IEdMY2hh
ciAqc3RyLCB1aW50MzJfdCBsaW1pdCwgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCit7Cisg
ICAgLy8gV3JpdGUgdGhlIGluY29taW5nIHN0cmluZyB1cCB0byBsaW1pdCwgaW5jbHVkaW5nIG51
bGwgdGVybWluYXRvcgorICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oc3RyKSArIDE7CisKKyAg
ICBpZiAobGVuZ3RoID4gbGltaXQpCisgICAgeworICAgICAgICAvLyBJZiB0b28gbWFueSBjaGFy
YWN0ZXJzLCByZXNpemUgdGhlIHN0cmluZyB0byBmaXQgaW4gdGhlIGxpbWl0CisgICAgICAgIHN0
ZDo6c3RyaW5nIG5ld1N0ciA9IHN0cjsKKyAgICAgICAgbmV3U3RyLnJlc2l6ZShsaW1pdCAtIDEp
OworICAgICAgICBDYXB0dXJlU3RyaW5nKG5ld1N0ci5jX3N0cigpLCBwYXJhbUNhcHR1cmUpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBDYXB0dXJlTWVtb3J5KHN0ciwgbGVuZ3Ro
LCBwYXJhbUNhcHR1cmUpOworICAgIH0KK30KKwogZ2w6OlByb2dyYW0gKkdldExpbmtlZFByb2dy
YW1Gb3JDYXB0dXJlKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSwgZ2w6OlNoYWRlclByb2dyYW1J
RCBoYW5kbGUpCiB7CiAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFNoYWRl
clByb2dyYW1NYW5hZ2VyRm9yQ2FwdHVyZSgpLmdldFByb2dyYW0oaGFuZGxlKTsKQEAgLTIzMjYs
NyArMzM2Niw5IEBAIHZvaWQgQ2FwdHVyZUdlbkhhbmRsZXNJbXBsKEdMc2l6ZWkgbiwgR0x1aW50
ICpoYW5kbGVzLCBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyCiB9CiAKIHRlbXBsYXRlIDw+Ci12
b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMYm9vbGVhbj4oc3RkOjpv
c3RyZWFtICZvcywgR0xib29sZWFuIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8
UGFyYW1UeXBlOjpUR0xib29sZWFuPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2Fs
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHZhbHVlKQogewogICAgIHN3aXRjaCAodmFsdWUpCiAgICAgewpAQCAtMjM0Miw3ICsz
Mzg0LDkgQEAgdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGJvb2xl
YW4+KHN0ZDo6b3N0cmVhbSAmb3MsIEdMYm9vbGVhbgogfQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyPihzdGQ6
Om9zdHJlYW0gJm9zLCBjb25zdCB2b2lkICp2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVw
bGF5PFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXI+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA9PSAwKQogICAgIHsKQEAgLTIzNTYsOTcgKzM0MDAsMTU5IEBAIHZvaWQgV3JpdGVQYXJhbVZh
bHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcj4oc3RkOjpvc3RyZWFtICZv
cywgY29uCiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBh
cmFtVHlwZTo6VEdMREVCVUdQUk9DS0hSPihzdGQ6Om9zdHJlYW0gJm9zLCBHTERFQlVHUFJPQ0tI
UiB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMREVCVUdQ
Uk9DS0hSPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQ
Uk9DS0hSIHZhbHVlKQoge30KIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUR0xERUJVR1BST0M+KHN0ZDo6b3N0cmVhbSAmb3MsIEdMREVCVUdQ
Uk9DIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xERUJV
R1BST0M+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xERUJVR1BST0MgdmFs
dWUpCiB7fQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlRCdWZmZXJJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OkJ1ZmZlcklEIHZhbHVlKQor
dm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUQnVmZmVySUQ+KHN0ZDo6b3N0
cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OkJ1ZmZlcklEIHZhbHVlKQogewogICAgIG9zIDw8ICJn
QnVmZmVyTWFwWyIgPDwgdmFsdWUudmFsdWUgPDwgIl0iOwogfQogCiB0ZW1wbGF0ZSA8Pgotdm9p
ZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGZW5jZU5WSUQ+KHN0ZDo6b3N0
cmVhbSAmb3MsIGdsOjpGZW5jZU5WSUQgdmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxh
eTxQYXJhbVR5cGU6OlRGZW5jZU5WSUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZj
YWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6RmVuY2VOVklEIHZhbHVlKQogewogICAgIG9zIDw8ICJnRmVuY2VNYXBbIiA8PCB2YWx1ZS52
YWx1ZSA8PCAiXSI7CiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3Ry
ZWFtPFBhcmFtVHlwZTo6VEZyYW1lYnVmZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpGcmFt
ZWJ1ZmZlcklEIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
RnJhbWVidWZmZXJJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkZyYW1lYnVmZmVySUQgdmFsdWUpCiB7CiAgICAgb3MgPDwgImdGcmFtZWJ1ZmZlck1hcFsiIDw8
IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZh
bHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SUQ+KHN0ZDo6b3N0cmVhbSAmb3Ms
IGdsOjpNZW1vcnlPYmplY3RJRCB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBh
cmFtVHlwZTo6VE1lbW9yeU9iamVjdElEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0
dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpNZW1vcnlPYmplY3RJRCB2YWx1ZSkKIHsKICAgICBvcyA8PCAiZ01lbW9y
eU9iamVjdE1hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVtcGxhdGUgPD4KLXZv
aWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUGF0aElEPihzdGQ6Om9zdHJl
YW0gJm9zLCBnbDo6UGF0aElEIHZhbHVlKQotewotICAgIG9zIDw8ICJnUGF0aE1hcFsiIDw8IHZh
bHVlLnZhbHVlIDw8ICJdIjsKLX0KLQotdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVl
VG9TdHJlYW08UGFyYW1UeXBlOjpUUHJvZ3JhbVBpcGVsaW5lSUQ+KHN0ZDo6b3N0cmVhbSAmb3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6UHJvZ3JhbVBpcGVsaW5lSUQgdmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJl
cGxheTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UHJvZ3JhbVBpcGVsaW5lSUQgdmFsdWUpCiB7
CiAgICAgb3MgPDwgImdQcm9ncmFtUGlwZWxpbmVNYXBbIiA8PCB2YWx1ZS52YWx1ZSA8PCAiXSI7
CiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VFF1ZXJ5SUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpRdWVyeUlEIHZhbHVlKQordm9pZCBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUUXVlcnlJRD4oc3RkOjpvc3RyZWFtICZv
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OlF1ZXJ5SUQgdmFsdWUpCiB7CiAgICAgb3MgPDwgImdRdWVyeU1hcFsi
IDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUmVuZGVyYnVmZmVySUQ+KHN0ZDo6b3N0cmVhbSAm
b3MsIGdsOjpSZW5kZXJidWZmZXJJRCB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5
PFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxD
YXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpSZW5kZXJidWZmZXJJRCB2YWx1ZSkKIHsKICAgICBvcyA8PCAiZ1Jl
bmRlcmJ1ZmZlck1hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVtcGxhdGUgPD4K
LXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUU2FtcGxlcklEPihzdGQ6
Om9zdHJlYW0gJm9zLCBnbDo6U2FtcGxlcklEIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVS
ZXBsYXk8UGFyYW1UeXBlOjpUU2FtcGxlcklEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVy
ZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OlNhbXBsZXJJRCB2YWx1ZSkKIHsKICAgICBvcyA8PCAiZ1NhbXBsZXJNYXBbIiA8PCB2
YWx1ZS52YWx1ZSA8PCAiXSI7CiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNlbWFwaG9yZUlEPihzdGQ6Om9zdHJlYW0gJm9zLCBnbDo6
U2VtYXBob3JlSUQgdmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6
OlRTZW1hcGhvcmVJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2Vt
YXBob3JlSUQgdmFsdWUpCiB7CiAgICAgb3MgPDwgImdTZW1wYWhvcmVNYXBbIiA8PCB2YWx1ZS52
YWx1ZSA8PCAiXSI7CiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3Ry
ZWFtPFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRD4oc3RkOjpvc3RyZWFtICZvcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
U2hhZGVyUHJvZ3JhbUlEIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1U
eXBlOjpUU2hhZGVyUHJvZ3JhbUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVy
ZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OlNoYWRlclByb2dyYW1JRCB2YWx1ZSkKIHsKICAgICBvcyA8PCAiZ1NoYWRl
clByb2dyYW1NYXBbIiA8PCB2YWx1ZS52YWx1ZSA8PCAiXSI7CiB9CiAKIHRlbXBsYXRlIDw+Ci12
b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRleHR1cmVJRD4oc3RkOjpv
c3RyZWFtICZvcywgZ2w6OlRleHR1cmVJRCB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVw
bGF5PFBhcmFtVHlwZTo6VFRleHR1cmVJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUg
JmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsOjpUZXh0dXJlSUQgdmFsdWUpCiB7CiAgICAgb3MgPDwgImdUZXh0dXJlTWFwWyIgPDwgdmFs
dWUudmFsdWUgPDwgIl0iOwogfQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lEPihzdGQ6Om9zdHJlYW0gJm9z
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tJRCB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZh
bHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSUQ+KHN0ZDo6b3N0cmVhbSAm
b3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFj
a0lEIHZhbHVlKQogewogICAgIG9zIDw8ICJnVHJhbnNmb3JtRmVlZGJhY2tNYXBbIiA8PCB2YWx1
ZS52YWx1ZSA8PCAiXSI7CiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VFZlcnRleEFycmF5SUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpW
ZXJ0ZXhBcnJheUlEIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUVmVydGV4QXJyYXlJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OlZlcnRleEFycmF5SUQgdmFsdWUpCiB7CiAgICAgb3MgPDwgImdWZXJ0ZXhBcnJheU1hcFsi
IDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KKworYm9vbCBGaW5kU2hhZGVyUHJvZ3JhbUlESW5D
YWxsKGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLCBnbDo6U2hhZGVyUHJvZ3JhbUlEICppZE91dCkK
K3sKKyAgICBmb3IgKGNvbnN0IFBhcmFtQ2FwdHVyZSAmcGFyYW0gOiBjYWxsLnBhcmFtcy5nZXRQ
YXJhbUNhcHR1cmVzKCkpCisgICAgeworICAgICAgICBpZiAocGFyYW0udHlwZSA9PSBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQgJiYgcGFyYW0ubmFtZSA9PSAicHJvZ3JhbVBhY2tlZCIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICppZE91dCA9IHBhcmFtLnZhbHVlLlNoYWRlclByb2dyYW1J
RFZhbDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit0ZW1wbGF0ZSA8Pgordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBs
YXk8UGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
YWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OlVuaWZvcm1Mb2NhdGlvbiB2YWx1ZSkKK3sKKyAgICBpZiAo
dmFsdWUudmFsdWUgPT0gLTEpCisgICAgeworICAgICAgICBvcyA8PCAiLTEiOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgb3MgPDwgImdVbmlmb3JtTG9jYXRpb25zWyI7CisKKyAgICAv
LyBGaW5kIHRoZSBwcm9ncmFtIGZyb20gdGhlIGNhbGwgcGFyYW1ldGVycy4KKyAgICBnbDo6U2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1JRDsKKyAgICBpZiAoRmluZFNoYWRlclByb2dyYW1JREluQ2Fs
bChjYWxsLCAmcHJvZ3JhbUlEKSkKKyAgICB7CisgICAgICAgIG9zIDw8ICJnU2hhZGVyUHJvZ3Jh
bU1hcFsiIDw8IHByb2dyYW1JRC52YWx1ZSA8PCAiXSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIG9zIDw8ICJnQ3VycmVudFByb2dyYW0iOworICAgIH0KKworICAgIG9zIDw8ICJd
WyIgPDwgdmFsdWUudmFsdWUgPDwgIl0iOworfQogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVDYXB0dXJl
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVDYXB0dXJlLmgK
aW5kZXggODU1YWViYzJjNGQ4OGRlNTYxOTI5ZGE3MGUyMTNkZDNlNjA3MDNjYi4uODk5MDg5ZDAx
YTA1MmQ3YjIzYWUwYmJlZThhYzA2ZWM5MjdiZjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lQ2FwdHVyZS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuaApAQCAtMTczLDYgKzE3Myw5
IEBAIGNsYXNzIERhdGFDb3VudGVycyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogLy8gVXNl
ZCBieSB0aGUgQ1BQIHJlcGxheSB0byBmaWx0ZXIgb3V0IHVubmVjZXNzYXJ5IGNvZGUuCiB1c2lu
ZyBIYXNSZXNvdXJjZVR5cGVNYXAgPSBhbmdsZTo6UGFja2VkRW51bUJpdFNldDxSZXNvdXJjZUlE
VHlwZT47CiAKKy8vIE1hcCBvZiBidWZmaW5nIGJpbmRpbmdzIHRvIG9mZnNldCBhbmQgc2l6ZSB1
c2VkIHdoZW4gbWFwcGVkCit1c2luZyBCdWZmZXJEYXRhTWFwID0gc3RkOjptYXA8Z2w6OkJ1ZmZl
ckJpbmRpbmcsIHN0ZDo6cGFpcjxHTGludHB0ciwgR0xzaXplaXB0cj4+OworCiAvLyBBIGRpY3Rp
b25hcnkgb2Ygc291cmNlcyBpbmRleGVkIGJ5IHNoYWRlciB0eXBlLgogdXNpbmcgUHJvZ3JhbVNv
dXJjZXMgPSBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPjsKIApAQCAtMTgwLDYgKzE4MywxMCBA
QCB1c2luZyBQcm9ncmFtU291cmNlcyA9IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+OwogdXNp
bmcgU2hhZGVyU291cmNlTWFwICA9IHN0ZDo6bWFwPGdsOjpTaGFkZXJQcm9ncmFtSUQsIHN0ZDo6
c3RyaW5nPjsKIHVzaW5nIFByb2dyYW1Tb3VyY2VNYXAgPSBzdGQ6Om1hcDxnbDo6U2hhZGVyUHJv
Z3JhbUlELCBQcm9ncmFtU291cmNlcz47CiAKKy8vIE1hcCBmcm9tIHRleHR1cmVJRCB0byBsZXZl
bCBhbmQgZGF0YQordXNpbmcgVGV4dHVyZUxldmVscyAgICAgICA9IHN0ZDo6bWFwPEdMaW50LCBz
dGQ6OnZlY3Rvcjx1aW50OF90Pj47Cit1c2luZyBUZXh0dXJlTGV2ZWxEYXRhTWFwID0gc3RkOjpt
YXA8Z2w6OlRleHR1cmVJRCwgVGV4dHVyZUxldmVscz47CisKIGNsYXNzIEZyYW1lQ2FwdHVyZSBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CkBAIC0xOTUsOSArMjAyLDEz
IEBAIGNsYXNzIEZyYW1lQ2FwdHVyZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZv
aWQgY2FwdHVyZUNsaWVudEFycmF5U25hcHNob3QoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmVydGV4Q291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5zdGFuY2VDb3Vu
dCk7CisgICAgdm9pZCBjYXB0dXJlTWFwcGVkQnVmZmVyU25hcHNob3QoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsKTsKKworICAgIHZvaWQgY2FwdHVy
ZUNvbXByZXNzZWRUZXh0dXJlRGF0YShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgY29uc3Qg
Q2FsbENhcHR1cmUgJmNhbGwpOwogCiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgbWF5YmVD
YXB0dXJlQ2xpZW50RGF0YShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgY29uc3QgQ2FsbENh
cHR1cmUgJmNhbGwpOworICAgIHZvaWQgbWF5YmVDYXB0dXJlUG9zdENhbGxVcGRhdGVzKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAogICAgIHN0YXRpYyB2b2lkIFJlcGxheUNhbGwoZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBsYXlDb250
ZXh0ICpyZXBsYXlDb250ZXh0LApAQCAtMjA3LDkgKzIxOCwxNCBAQCBjbGFzcyBGcmFtZUNhcHR1
cmUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVy
ZT4gbUZyYW1lQ2FsbHM7CiAgICAgc3RkOjp2ZWN0b3I8Q2FsbENhcHR1cmU+IG1UZWFyRG93bkNh
bGxzOwogCisgICAgLy8gV2Ugc2F2ZSBvbmUgbGFyZ2UgYnVmZmVyIG9mIGJpbmFyeSBkYXRhIGZv
ciB0aGUgd2hvbGUgQ1BQIHJlcGxheS4KKyAgICAvLyBUaGlzIHNpbXBsaWZpZXMgYSBsb3Qgb2Yg
ZmlsZSBtYW5hZ2VtZW50LgorICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1CaW5hcnlEYXRhOwor
CiAgICAgYm9vbCBtRW5hYmxlZDsKICAgICBzdGQ6OnN0cmluZyBtT3V0RGlyZWN0b3J5OwogICAg
IHN0ZDo6c3RyaW5nIG1DYXB0dXJlTGFiZWw7CisgICAgYm9vbCBtQ29tcHJlc3Npb247CiAgICAg
Z2w6OkF0dHJpYkFycmF5PGludD4gbUNsaWVudFZlcnRleEFycmF5TWFwOwogICAgIHVpbnQzMl90
IG1GcmFtZUluZGV4OwogICAgIHVpbnQzMl90IG1GcmFtZVN0YXJ0OwpAQCAtMjE3LDEwICsyMzMs
MTUgQEAgY2xhc3MgRnJhbWVDYXB0dXJlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAg
Z2w6OkF0dHJpYkFycmF5PHNpemVfdD4gbUNsaWVudEFycmF5U2l6ZXM7CiAgICAgc2l6ZV90IG1S
ZWFkQnVmZmVyU2l6ZTsKICAgICBIYXNSZXNvdXJjZVR5cGVNYXAgbUhhc1Jlc291cmNlVHlwZTsK
KyAgICBCdWZmZXJEYXRhTWFwIG1CdWZmZXJEYXRhTWFwOwogCiAgICAgLy8gQ2FjaGUgbW9zdCBy
ZWNlbnRseSBjb21waWxlZCBhbmQgbGlua2VkIHNvdXJjZXMuCiAgICAgU2hhZGVyU291cmNlTWFw
IG1DYWNoZWRTaGFkZXJTb3VyY2VzOwogICAgIFByb2dyYW1Tb3VyY2VNYXAgbUNhY2hlZFByb2dy
YW1Tb3VyY2VzOworCisgICAgLy8gQ2FjaGUgYSBzaGFkb3cgY29weSBvZiB0ZXh0dXJlIGxldmVs
IGRhdGEKKyAgICBUZXh0dXJlTGV2ZWxzIG1DYWNoZWRUZXh0dXJlTGV2ZWxzOworICAgIFRleHR1
cmVMZXZlbERhdGFNYXAgbUNhY2hlZFRleHR1cmVMZXZlbERhdGE7CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2FwdHVyZUZ1bmNULCB0eXBlbmFtZS4uLiBBcmdzVD4KQEAgLTI2Miw2ICsyODMs
NyBAQCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgUGFy
YW1DYXB0dXJlICZjYXB0dXJlKTsKIC8vIFBvaW50ZXIgY2FwdHVyZSBoZWxwZXJzLgogdm9pZCBD
YXB0dXJlTWVtb3J5KGNvbnN0IHZvaWQgKnNvdXJjZSwgc2l6ZV90IHNpemUsIFBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVN0cmluZyhjb25zdCBHTGNoYXIgKnN0ciwg
UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwordm9pZCBDYXB0dXJlU3RyaW5nTGltaXQoY29u
c3QgR0xjaGFyICpzdHIsIHVpbnQzMl90IGxpbWl0LCBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVy
ZSk7CiAKIGdsOjpQcm9ncmFtICpHZXRMaW5rZWRQcm9ncmFtRm9yQ2FwdHVyZShjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUsIGdsOjpTaGFkZXJQcm9ncmFtSUQgaGFuZGxlKTsKIApAQCAtMjgwLDcw
ICszMDIsMTAxIEBAIHZvaWQgQ2FwdHVyZUdlbkhhbmRsZXMoR0xzaXplaSBuLCBUICpoYW5kbGVz
LCBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIH0KIAogdGVtcGxhdGUgPFBhcmFtVHlwZSBQ
YXJhbVQsIHR5cGVuYW1lIFQ+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtKHN0ZDo6b3N0
cmVhbSAmb3MsIFQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXkoc3RkOjpvc3Ry
ZWFtICZvcywgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsIFQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8
Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGJvb2xlYW4+KHN0
ZDo6b3N0cmVhbSAmb3MsIEdMYm9vbGVhbiB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJl
cGxheTxQYXJhbVR5cGU6OlRHTGJvb2xlYW4+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJl
ICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyPihzdGQ6Om9zdHJlYW0gJm9zLCBj
b25zdCB2b2lkICp2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6
OlR2b2lkQ29uc3RQb2ludGVyPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUg
JmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICp2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFy
YW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMREVCVUdQUk9DS0hSPihzdGQ6Om9zdHJlYW0g
Jm9zLCBHTERFQlVHUFJPQ0tIUiB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRHTERFQlVHUFJPQ0tIUj4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2Fw
dHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTERFQlVHUFJPQ0tIUiB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMREVCVUdQUk9DPihzdGQ6Om9zdHJl
YW0gJm9zLCBHTERFQlVHUFJPQyB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRHTERFQlVHUFJPQz4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAm
Y2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTERFQlVHUFJPQyB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEJ1ZmZlcklEPihzdGQ6Om9zdHJlYW0gJm9zLCBnbDo6QnVm
ZmVySUQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUQnVm
ZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkJ1ZmZlcklEIHZhbHVlKTsK
IAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
RmVuY2VOVklEPihzdGQ6Om9zdHJlYW0gJm9zLCBnbDo6RmVuY2VOVklEIHZhbHVlKTsKK3ZvaWQg
V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEZlbmNlTlZJRD4oc3RkOjpvc3RyZWFt
ICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpGZW5jZU5WSUQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgot
dm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEPihz
dGQ6Om9zdHJlYW0gJm9zLCBnbDo6RnJhbWVidWZmZXJJRCB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEPihzdGQ6Om9zdHJlYW0gJm9z
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXJJRCB2YWx1ZSk7CiAKIHRlbXBs
YXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VE1lbW9yeU9i
amVjdElEPihzdGQ6Om9zdHJlYW0gJm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6Ok1lbW9yeU9iamVjdElEIHZhbHVlKTsKK3Zv
aWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEPihzdGQ6
Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpNZW1vcnlPYmplY3RJRCB2
YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFt
VHlwZTo6VFBhdGhJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OlBhdGhJRCB2YWx1ZSk7Cit2b2lk
IFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRD4oc3Rk
Ojpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UHJvZ3JhbVBp
cGVsaW5lSUQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0
cmVhbTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRD4oc3RkOjpvc3RyZWFtICZvcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsOjpQcm9ncmFtUGlwZWxpbmVJRCB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxh
eTxQYXJhbVR5cGU6OlRRdWVyeUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UXVl
cnlJRCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VFF1ZXJ5SUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpRdWVyeUlEIHZhbHVl
KTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklE
PihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpSZW5kZXJidWZm
ZXJJRCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklEPihzdGQ6Om9zdHJlYW0gJm9zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlJlbmRl
cmJ1ZmZlcklEIHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6
VFNhbXBsZXJJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTYW1wbGVySUQg
dmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlRTYW1wbGVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpTYW1wbGVySUQgdmFsdWUp
Owordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2VtYXBob3JlSUQ+KHN0
ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNlbWFwaG9yZUlEIHZhbHVlKTsK
IAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
U2VtYXBob3JlSUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpTZW1hcGhvcmVJRCB2YWx1ZSk7Cit2
b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQ+KHN0
ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyUHJvZ3Jh
bUlEIHZhbHVlKTsKIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlEPihzdGQ6Om9zdHJlYW0gJm9zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFk
ZXJQcm9ncmFtSUQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUVGV4dHVyZUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVJ
RCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBh
cmFtVHlwZTo6VFRleHR1cmVJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OlRleHR1cmVJRCB2YWx1
ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVk
YmFja0lEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tJRCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSUQ+KHN0
ZDo6b3N0cmVhbSAmb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFja0lEIHZhbHVlKTsKK3Zv
aWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFZlcnRleEFycmF5SUQ+KHN0ZDo6
b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpWZXJ0ZXhBcnJheUlEIHZhbHVl
KTsKIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBl
OjpUVmVydGV4QXJyYXlJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OlZlcnRleEFycmF5SUQgdmFs
dWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlVuaWZv
cm1Mb2NhdGlvbiB2YWx1ZSk7CiAKIC8vIEdlbmVyYWwgZmFsbGJhY2sgZm9yIGFueSB1bnNwZWNp
ZmljIHR5cGUuCiB0ZW1wbGF0ZSA8UGFyYW1UeXBlIFBhcmFtVCwgdHlwZW5hbWUgVD4KLXZvaWQg
V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW0oc3RkOjpvc3RyZWFtICZvcywgVCB2YWx1ZSkKK3ZvaWQg
V3JpdGVQYXJhbVZhbHVlUmVwbGF5KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IENhbGxDYXB0dXJl
ICZjYWxsLCBUIHZhbHVlKQogewogICAgIG9zIDw8IHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAKaW5kZXggNjMx
OWMwN2E0NzRhNDRlMjIzM2ZjMWM0OTcxYjQwNjVhM2EzYTYzZS4uNGU4M2MyNTAwNGYwNzY0ZTZm
MzM1OTUwODVkOWExYTJkYmE0YzM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuY3BwCkBAIC0yNzksMTIgKzI3OSwxNCBAQCBi
b29sIElzU3RlbmNpbE1hc2tlZE91dChjb25zdCBEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhTdGVu
Y2lsKQogICAgIHJldHVybiAoKGRlcHRoU3RlbmNpbC5zdGVuY2lsTWFzayAmIGRlcHRoU3RlbmNp
bC5zdGVuY2lsV3JpdGVtYXNrKSA9PSAwKTsKIH0KIAotYm9vbCBJc0NsZWFyQnVmZmVyTWFza2Vk
T3V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBidWZmZXIpCitib29sIElzQ2xlYXJC
dWZmZXJNYXNrZWRPdXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xp
bnQgZHJhd2J1ZmZlcikKIHsKICAgICBzd2l0Y2ggKGJ1ZmZlcikKICAgICB7CiAgICAgICAgIGNh
c2UgR0xfQ09MT1I6Ci0gICAgICAgICAgICByZXR1cm4gSXNDb2xvck1hc2tlZE91dChjb250ZXh0
LT5nZXRTdGF0ZSgpLmdldEJsZW5kU3RhdGUoKSk7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihkcmF3YnVmZmVyKSA8CisgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
Z2V0U3RhdGUoKS5nZXRCbGVuZFN0YXRlQXJyYXkoKS5zaXplKCkpOworICAgICAgICAgICAgcmV0
dXJuIElzQ29sb3JNYXNrZWRPdXQoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRCbGVuZFN0YXRlQXJy
YXkoKVtkcmF3YnVmZmVyXSk7CiAgICAgICAgIGNhc2UgR0xfREVQVEg6CiAgICAgICAgICAgICBy
ZXR1cm4gSXNEZXB0aE1hc2tlZE91dChjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlcHRoU3RlbmNp
bFN0YXRlKCkpOwogICAgICAgICBjYXNlIEdMX1NURU5DSUw6CkBAIC0zMTQsNiArMzE2LDkgQEAg
RnJhbWVidWZmZXJTdGF0ZTo6RnJhbWVidWZmZXJTdGF0ZSgpCiAgICAgICBtRGVmYXVsdEZpeGVk
U2FtcGxlTG9jYXRpb25zKEdMX0ZBTFNFKSwKICAgICAgIG1EZWZhdWx0TGF5ZXJzKDApLAogICAg
ICAgbVdlYkdMRGVwdGhTdGVuY2lsQ29uc2lzdGVudCh0cnVlKSwKKyAgICAgIG1EZXB0aEJ1ZmZl
ckZlZWRiYWNrTG9vcChmYWxzZSksCisgICAgICBtU3RlbmNpbEJ1ZmZlckZlZWRiYWNrTG9vcChm
YWxzZSksCisgICAgICBtSGFzUmVuZGVyaW5nRmVlZGJhY2tMb29wKGZhbHNlKSwKICAgICAgIG1E
ZWZhdWx0RnJhbWVidWZmZXJSZWFkQXR0YWNobWVudEluaXRpYWxpemVkKGZhbHNlKQogewogICAg
IEFTU0VSVChtRHJhd0J1ZmZlclN0YXRlcy5zaXplKCkgPiAwKTsKQEAgLTMzMyw2ICszMzgsOSBA
QCBGcmFtZWJ1ZmZlclN0YXRlOjpGcmFtZWJ1ZmZlclN0YXRlKGNvbnN0IENhcHMgJmNhcHMsIEZy
YW1lYnVmZmVySUQgaWQpCiAgICAgICBtRGVmYXVsdEZpeGVkU2FtcGxlTG9jYXRpb25zKEdMX0ZB
TFNFKSwKICAgICAgIG1EZWZhdWx0TGF5ZXJzKDApLAogICAgICAgbVdlYkdMRGVwdGhTdGVuY2ls
Q29uc2lzdGVudCh0cnVlKSwKKyAgICAgIG1EZXB0aEJ1ZmZlckZlZWRiYWNrTG9vcChmYWxzZSks
CisgICAgICBtU3RlbmNpbEJ1ZmZlckZlZWRiYWNrTG9vcChmYWxzZSksCisgICAgICBtSGFzUmVu
ZGVyaW5nRmVlZGJhY2tMb29wKGZhbHNlKSwKICAgICAgIG1EZWZhdWx0RnJhbWVidWZmZXJSZWFk
QXR0YWNobWVudEluaXRpYWxpemVkKGZhbHNlKQogewogICAgIEFTU0VSVChtSWQgIT0gRnJhbWVi
dWZmZXI6OmtEZWZhdWx0RHJhd0ZyYW1lYnVmZmVySGFuZGxlKTsKQEAgLTY3MSw2ICs2NzksNTMg
QEAgYm9vbCBGcmFtZWJ1ZmZlclN0YXRlOjppc0RlZmF1bHQoKSBjb25zdAogICAgIHJldHVybiBt
SWQgPT0gRnJhbWVidWZmZXI6OmtEZWZhdWx0RHJhd0ZyYW1lYnVmZmVySGFuZGxlOwogfQogCiti
b29sIEZyYW1lYnVmZmVyU3RhdGU6OnVwZGF0ZUF0dGFjaG1lbnRGZWVkYmFja0xvb3BBbmRSZXR1
cm5JZkNoYW5nZWQoc2l6ZV90IGRpcnR5Qml0KQoreworICAgIGJvb2wgcHJldmlvdXM7CisgICAg
Ym9vbCBsb29wOworCisgICAgc3dpdGNoIChkaXJ0eUJpdCkKKyAgICB7CisgICAgICAgIGNhc2Ug
RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgcHJl
dmlvdXMgICAgICAgICAgICAgICAgID0gbURlcHRoQnVmZmVyRmVlZGJhY2tMb29wOworICAgICAg
ICAgICAgbG9vcCAgICAgICAgICAgICAgICAgICAgID0gbURlcHRoQXR0YWNobWVudC5pc0JvdW5k
QXNTYW1wbGVyT3JJbWFnZSgpOworICAgICAgICAgICAgbURlcHRoQnVmZmVyRmVlZGJhY2tMb29w
ID0gbG9vcDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6
OkRJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBwcmV2aW91cyAgICAg
ICAgICAgICAgICAgICA9IG1TdGVuY2lsQnVmZmVyRmVlZGJhY2tMb29wOworICAgICAgICAgICAg
bG9vcCAgICAgICAgICAgICAgICAgICAgICAgPSBtU3RlbmNpbEF0dGFjaG1lbnQuaXNCb3VuZEFz
U2FtcGxlck9ySW1hZ2UoKTsKKyAgICAgICAgICAgIG1TdGVuY2lsQnVmZmVyRmVlZGJhY2tMb29w
ID0gbG9vcDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChkaXJ0eUJpdCA8PSBGcmFtZWJ1ZmZlcjo6RElSVFlfQklU
X0NPTE9SX0FUVEFDSE1FTlRfTUFYKTsKKyAgICAgICAgICAgIHByZXZpb3VzID0gbURyYXdCdWZm
ZXJGZWVkYmFja0xvb3BzLnRlc3QoZGlydHlCaXQpOworICAgICAgICAgICAgbG9vcCAgICAgPSBt
Q29sb3JBdHRhY2htZW50c1tkaXJ0eUJpdF0uaXNCb3VuZEFzU2FtcGxlck9ySW1hZ2UoKTsKKyAg
ICAgICAgICAgIG1EcmF3QnVmZmVyRmVlZGJhY2tMb29wc1tkaXJ0eUJpdF0gPSBsb29wOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1cGRhdGVIYXNSZW5kZXJp
bmdGZWVkYmFja0xvb3AoKTsKKyAgICByZXR1cm4gcHJldmlvdXMgIT0gbG9vcDsKK30KKwordm9p
ZCBGcmFtZWJ1ZmZlclN0YXRlOjp1cGRhdGVIYXNSZW5kZXJpbmdGZWVkYmFja0xvb3AoKQorewor
ICAgIC8vIFdlIGRvbid0IGhhbmRsZSB0cmlja3kgY2FzZXMgd2hlcmUgdGhlIGRlZmF1bHQgRkJP
IGlzIGJvdW5kIGFzIGEgc2FtcGxlci4KKyAgICAvLyBXZSBhbHNvIGRvbid0IGhhbmRsZSB0cmlj
a3kgY2FzZXMgd2l0aCBFR0xJbWFnZXMgYW5kIG1pcG1hcCBzZWxlY3Rpb24uCisgICAgLy8gVE9E
TyhodHRwOi8vYW5nbGVidWcuY29tLzQ1MDApOiBUcmlja3kgcmVuZGVyaW5nIGZlZWRiYWNrIGxv
b3AgY2FzZXMuCisgICAgaWYgKGlzRGVmYXVsdCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1IYXNSZW5kZXJpbmdGZWVkYmFja0xvb3AgPQorICAgICAgICBtRHJhd0J1
ZmZlckZlZWRiYWNrTG9vcHMuYW55KCkgfHwgbURlcHRoQnVmZmVyRmVlZGJhY2tMb29wIHx8IG1T
dGVuY2lsQnVmZmVyRmVlZGJhY2tMb29wOworfQorCiBjb25zdCBGcmFtZWJ1ZmZlcklEIEZyYW1l
YnVmZmVyOjprRGVmYXVsdERyYXdGcmFtZWJ1ZmZlckhhbmRsZSA9IHswfTsKIAogRnJhbWVidWZm
ZXI6OkZyYW1lYnVmZmVyKGNvbnN0IENhcHMgJmNhcHMsIHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0
b3J5LCBGcmFtZWJ1ZmZlcklEIGlkKQpAQCAtMTA1NSw3ICsxMTEwLDcgQEAgdm9pZCBGcmFtZWJ1
ZmZlcjo6aW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hlKCkKICAgICBvblN0YXRlQ2hhbmdlKGFu
Z2xlOjpTdWJqZWN0TWVzc2FnZTo6RGlydHlCaXRzRmxhZ2dlZCk7CiB9CiAKLUdMZW51bSBGcmFt
ZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCitHTGVudW0g
RnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25z
dAogewogICAgIEFTU0VSVCghaXNEZWZhdWx0KCkpOwogICAgIEFTU0VSVChoYXNBbnlEaXJ0eUJp
dCgpIHx8ICFtQ2FjaGVkU3RhdHVzLnZhbGlkKCkpOwpAQCAtMTA4Myw3ICsxMTM4LDcgQEAgR0xl
bnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4dCAqY29udGV4dCkK
ICAgICByZXR1cm4gbUNhY2hlZFN0YXR1cy52YWx1ZSgpOwogfQogCi1HTGVudW0gRnJhbWVidWZm
ZXI6OmNoZWNrU3RhdHVzV2l0aEdMRnJvbnRFbmQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKK0dM
ZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNXaXRoR0xGcm9udEVuZChjb25zdCBDb250ZXh0
ICpjb250ZXh0KSBjb25zdAogewogICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNvbnRleHQtPmdl
dFN0YXRlKCk7CiAKQEAgLTEzOTAsMTQgKzE0NDUsOSBAQCBib29sIEZyYW1lYnVmZmVyOjpwYXJ0
aWFsQ2xlYXJOZWVkc0luaXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKIAogICAgIC8vIElmIGNv
bG9ycyBtYXNrZWQsIHdlIG11c3QgY2xlYXIgYmVmb3JlIHdlIGNsZWFyLiBEbyBhIHNpbXBsZSBj
aGVjay4KICAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWx0ZXIgb3V0IHVudXNlZCBjb2xvciBjaGFu
bmVscyBmcm9tIHRoZSB0ZXN0LgotICAgIGlmIChjb2xvcikKKyAgICBpZiAoY29sb3IgJiYgZ2xT
dGF0ZS5hbnlBY3RpdmVEcmF3QnVmZmVyQ2hhbm5lbE1hc2tlZCgpKQogICAgIHsKLSAgICAgICAg
Y29uc3QgYXV0byAmYmxlbmQgPSBnbFN0YXRlLmdldEJsZW5kU3RhdGUoKTsKLSAgICAgICAgaWYg
KCEoYmxlbmQuY29sb3JNYXNrUmVkICYmIGJsZW5kLmNvbG9yTWFza0dyZWVuICYmIGJsZW5kLmNv
bG9yTWFza0JsdWUgJiYKLSAgICAgICAgICAgICAgYmxlbmQuY29sb3JNYXNrQWxwaGEpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKICAgICBjb25zdCBhdXRvICZkZXB0aFN0ZW5jaWwgPSBnbFN0YXRl
LmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CkBAIC0xNDMzLDggKzE0ODMsOCBAQCBhbmdsZTo6UmVz
dWx0IEZyYW1lYnVmZmVyOjpjbGVhcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxk
IG1hc2spCiAgICAgLy8gUmVtb3ZlIGNsZWFyIGJpdHMgdGhhdCBhcmUgaW5lZmZlY3RpdmUuIEFu
IGVmZmVjdGl2ZSBjbGVhciBjaGFuZ2VzIGF0IGxlYXN0IG9uZSBmcmFnbWVudC4gSWYKICAgICAv
LyBjb2xvci9kZXB0aC9zdGVuY2lsIG1hc2tzIG1ha2UgdGhlIGNsZWFyIGluZWZmZWN0aXZlIHdl
IHNraXAgaXQgYWx0b2dldGhlci4KIAotICAgIC8vIElmIGFsbCBjb2xvciBjaGFubmVscyBhcmUg
bWFza2VkLCBkb24ndCBhdHRlbXB0IHRvIGNsZWFyIGNvbG9yLgotICAgIGlmIChjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldEJsZW5kU3RhdGUoKS5hbGxDaGFubmVsc01hc2tlZCgpKQorICAgIC8vIElm
IGFsbCBjb2xvciBjaGFubmVscyBpbiBhbGwgZHJhdyBidWZmZXJzIGFyZSBtYXNrZWQsIGRvbid0
IGF0dGVtcHQgdG8gY2xlYXIgY29sb3IuCisgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuYWxs
QWN0aXZlRHJhd0J1ZmZlckNoYW5uZWxzTWFza2VkKCkpCiAgICAgewogICAgICAgICBtYXNrICY9
IH5HTF9DT0xPUl9CVUZGRVJfQklUOwogICAgIH0KQEAgLTE0NjQsMjggKzE1MTQsMTIgQEAgYW5n
bGU6OlJlc3VsdCBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuaXNSYXN0ZXJp
emVyRGlzY2FyZEVuYWJsZWQoKSB8fCBJc0NsZWFyQnVmZmVyTWFza2VkT3V0KGNvbnRleHQsIGJ1
ZmZlcikpCisgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVu
YWJsZWQoKSB8fAorICAgICAgICBJc0NsZWFyQnVmZmVyTWFza2VkT3V0KGNvbnRleHQsIGJ1ZmZl
ciwgZHJhd2J1ZmZlcikpCiAgICAgewogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlciA9PSBHTF9ERVBUSCkKLSAgICB7Ci0gICAg
ICAgIC8vIElmIGRlcHRoIHdyaXRlIGlzIGRpc2FibGVkLCBkb24ndCBhdHRlbXB0IHRvIGNsZWFy
IGRlcHRoLgotICAgICAgICBpZiAoIWNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVwdGhTdGVuY2ls
U3RhdGUoKS5kZXB0aE1hc2spCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICAvLyBJZiBhbGwgY29sb3IgY2hhbm5lbHMgYXJlIG1hc2tlZCwgZG9uJ3QgYXR0ZW1wdCB0
byBjbGVhciBjb2xvci4KLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QmxlbmRT
dGF0ZSgpLmFsbENoYW5uZWxzTWFza2VkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIEFOR0xF
X1RSWShtSW1wbC0+Y2xlYXJCdWZmZXJmdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZh
bHVlcykpOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMTQ5Niwx
MyArMTUzMCw4IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVydWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPmdl
dFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSB8fCBJc0NsZWFyQnVmZmVyTWFz
a2VkT3V0KGNvbnRleHQsIGJ1ZmZlcikpCi0gICAgewotICAgICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7Ci0gICAgfQotCi0gICAgLy8gSWYgYWxsIGNvbG9yIGNoYW5uZWxzIGFy
ZSBtYXNrZWQsIGRvbid0IGF0dGVtcHQgdG8gY2xlYXIgY29sb3IuCi0gICAgaWYgKGNvbnRleHQt
PmdldFN0YXRlKCkuZ2V0QmxlbmRTdGF0ZSgpLmFsbENoYW5uZWxzTWFza2VkKCkpCisgICAgaWYg
KGNvbnRleHQtPmdldFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSB8fAorICAg
ICAgICBJc0NsZWFyQnVmZmVyTWFza2VkT3V0KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlcikp
CiAgICAgewogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQpA
QCAtMTUxNywyOCArMTU0NiwxMiBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyOjpjbGVhckJ1
ZmZlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7Ci0gICAgaWYgKGNvbnRl
eHQtPmdldFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSB8fCBJc0NsZWFyQnVm
ZmVyTWFza2VkT3V0KGNvbnRleHQsIGJ1ZmZlcikpCisgICAgaWYgKGNvbnRleHQtPmdldFN0YXRl
KCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSB8fAorICAgICAgICBJc0NsZWFyQnVmZmVy
TWFza2VkT3V0KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlcikpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlciA9
PSBHTF9TVEVOQ0lMKQotICAgIHsKLSAgICAgICAgLy8gSWYgYWxsIHN0ZW5jaWwgYml0cyBhcmUg
bWFza2VkLCBkb24ndCBhdHRlbXB0IHRvIGNsZWFyIHN0ZW5jaWwuCi0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldERlcHRoU3RlbmNpbFN0YXRlKCkuc3RlbmNpbFdyaXRlbWFzayA9
PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgLy8gSWYgYWxs
IGNvbG9yIGNoYW5uZWxzIGFyZSBtYXNrZWQsIGRvbid0IGF0dGVtcHQgdG8gY2xlYXIgY29sb3Iu
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEJsZW5kU3RhdGUoKS5hbGxDaGFu
bmVsc01hc2tlZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBBTkdMRV9UUlkobUltcGwtPmNs
ZWFyQnVmZmVyaXYoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpKTsKIAogICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTE1NTAsNyArMTU2Myw4IEBAIGFu
Z2xlOjpSZXN1bHQgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyZmkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBk
ZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Rl
bmNpbCkKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJk
RW5hYmxlZCgpIHx8IElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVmZmVyKSkKKyAg
ICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpIHx8
CisgICAgICAgIElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVm
ZmVyKSkKICAgICB7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAg
ICB9CkBAIC0xNjQwLDEyICsxNjU0LDEyIEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXI6OmJs
aXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gbUltcGwtPmJsaXQoY29udGV4
dCwgc291cmNlQXJlYSwgZGVzdEFyZWEsIGJsaXRNYXNrLCBmaWx0ZXIpOwogfQogCi1pbnQgRnJh
bWVidWZmZXI6OmdldFNhbXBsZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCkKK2ludCBGcmFtZWJ1
ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25zdAogewogICAgIHJl
dHVybiAoaXNDb21wbGV0ZShjb250ZXh0KSA/IGdldENhY2hlZFNhbXBsZXMoY29udGV4dCwgQXR0
YWNobWVudFNhbXBsZVR5cGU6OkVtdWxhdGVkKSA6IDApOwogfQogCi1pbnQgRnJhbWVidWZmZXI6
OmdldFJlc291cmNlU2FtcGxlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0KQoraW50IEZyYW1lYnVm
ZmVyOjpnZXRSZXNvdXJjZVNhbXBsZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsK
ICAgICByZXR1cm4gKGlzQ29tcGxldGUoY29udGV4dCkgPyBnZXRDYWNoZWRTYW1wbGVzKGNvbnRl
eHQsIEF0dGFjaG1lbnRTYW1wbGVUeXBlOjpSZXNvdXJjZSkgOiAwKTsKIH0KQEAgLTE4OTgsMTgg
KzE5MTIsMTQgQEAgdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudEltcGwoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKIAogICAgICAgICAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtQ29sb3JBdHRhY2htZW50Qml0cy5yZXNldChjb2xvckluZGV4
KTsKICAgICAgICAgICAgICAgICBtRmxvYXQzMkNvbG9yQXR0YWNobWVudEJpdHMucmVzZXQoY29s
b3JJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbUNvbG9yQXR0YWNobWVudEJpdHMuc2V0KGNvbG9ySW5kZXgpOwog
ICAgICAgICAgICAgICAgIHVwZGF0ZUZsb2F0MzJDb2xvckF0dGFjaG1lbnRCaXRzKAogICAgICAg
ICAgICAgICAgICAgICBjb2xvckluZGV4LCByZXNvdXJjZS0+Z2V0QXR0YWNobWVudEZvcm1hdChi
aW5kaW5nLCB0ZXh0dXJlSW5kZXgpLmluZm8pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAvLyBUT0RPKGptYWRpbGwpOiBBU1NFUlQgaW5zdGVhZCBvZiBjaGVja2luZyB0aGUgYXR0YWNo
bWVudCBleGlzdHMgaW4KLSAgICAgICAgICAgIC8vIGZvcm1zUmVuZGVyaW5nRmVlZGJhY2tMb29w
V2l0aAogICAgICAgICAgICAgYm9vbCBlbmFibGVkID0gKHR5cGUgIT0gR0xfTk9ORSAmJiBnZXRE
cmF3QnVmZmVyU3RhdGUoY29sb3JJbmRleCkgIT0gR0xfTk9ORSk7CiAgICAgICAgICAgICBtU3Rh
dGUubUVuYWJsZWREcmF3QnVmZmVycy5zZXQoY29sb3JJbmRleCwgZW5hYmxlZCk7CiAgICAgICAg
ICAgICBTZXRDb21wb25lbnRUeXBlTWFzayhnZXREcmF3YnVmZmVyV3JpdGVUeXBlKGNvbG9ySW5k
ZXgpLCBjb2xvckluZGV4LApAQCAtMTkzOCw2ICsxOTQ4LDcgQEAgdm9pZCBGcmFtZWJ1ZmZlcjo6
dXBkYXRlQXR0YWNobWVudChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgIG1TdGF0ZS5tUmVz
b3VyY2VOZWVkc0luaXQuc2V0KGRpcnR5Qml0LCBhdHRhY2htZW50LT5pbml0U3RhdGUoKSA9PSBJ
bml0U3RhdGU6Ok1heU5lZWRJbml0KTsKICAgICBvbkRpcnR5QmluZGluZy0+YmluZChyZXNvdXJj
ZSk7CiAKKyAgICBtU3RhdGUudXBkYXRlQXR0YWNobWVudEZlZWRiYWNrTG9vcEFuZFJldHVybklm
Q2hhbmdlZChkaXJ0eUJpdCk7CiAgICAgaW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hlKCk7CiB9
CiAKQEAgLTE5NDYsNyArMTk1Nyw3IEBAIHZvaWQgRnJhbWVidWZmZXI6OnJlc2V0QXR0YWNobWVu
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYmluZGluZykKICAgICBzZXRBdHRhY2ht
ZW50KGNvbnRleHQsIEdMX05PTkUsIGJpbmRpbmcsIEltYWdlSW5kZXgoKSwgbnVsbHB0cik7CiB9
CiAKLWFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXI6OnN5bmNTdGF0ZShjb25zdCBDb250ZXh0ICpj
b250ZXh0KQorYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlcjo6c3luY1N0YXRlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKG1EaXJ0eUJpdHMuYW55KCkpCiAgICAgewpA
QCAtMTk3MCw2ICsxOTgxLDE3IEBAIHZvaWQgRnJhbWVidWZmZXI6Om9uU3ViamVjdFN0YXRlQ2hh
bmdlKGFuZ2xlOjpTdWJqZWN0SW5kZXggaW5kZXgsIGFuZ2xlOjpTdWJqZWN0CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBUcmlnZ2VyZWQgYnkgY2hhbmdlcyB0
byBUZXh0dXJlIGZlZWRiYWNrIGxvb3BzLgorICAgICAgICBpZiAobWVzc2FnZSA9PSBhbmdsZTo6
U3ViamVjdE1lc3NhZ2U6OkJpbmRpbmdDaGFuZ2VkKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAobVN0YXRlLnVwZGF0ZUF0dGFjaG1lbnRGZWVkYmFja0xvb3BBbmRSZXR1cm5JZkNoYW5nZWQo
aW5kZXgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBvblN0YXRlQ2hhbmdlKGFuZ2xlOjpTdWJqZWN0TWVzc2Fn
ZTo6RGlydHlCaXRzRmxhZ2dlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKwogICAgICAgICAvLyBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgdGhlIEdM
IGJhY2stZW5kIFRleHR1cmVHTCBjbGFzcy4KICAgICAgICAgQVNTRVJUKG1lc3NhZ2UgPT0gYW5n
bGU6OlN1YmplY3RNZXNzYWdlOjpEaXJ0eUJpdHNGbGFnZ2VkKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjAxMCw3MiArMjAzMiw2IEBAIEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6
OmdldEF0dGFjaG1lbnRGcm9tU3ViamVjdEluZGV4KGFuZ2xlOjpTdWJqZWN0CiAgICAgfQogfQog
Ci1ib29sIEZyYW1lYnVmZmVyOjpmb3Jtc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcFdpdGgoY29uc3Qg
Q29udGV4dCAqY29udGV4dCkgY29uc3QKLXsKLSAgICBjb25zdCBTdGF0ZSAmc3RhdGUgICAgID0g
Y29udGV4dC0+Z2V0U3RhdGUoKTsKLSAgICBjb25zdCBQcm9ncmFtICpwcm9ncmFtID0gc3RhdGUu
Z2V0UHJvZ3JhbSgpOwotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogRGVmYXVsdCBmcmFtZWJ1ZmZl
ciBmZWVkYmFjayBsb29wcy4KLSAgICBpZiAobVN0YXRlLmlzRGVmYXVsdCgpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqZGVwdGggICA9IGdldERlcHRoQXR0YWNobWVudCgpOwotICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqc3RlbmNpbCA9IGdldFN0ZW5jaWxBdHRhY2htZW50KCk7Ci0KLSAgICBj
b25zdCBib29sIGNoZWNrRGVwdGggPSBkZXB0aCAmJiBkZXB0aC0+dHlwZSgpID09IEdMX1RFWFRV
UkU7Ci0gICAgLy8gU2tpcCB0aGUgZmVlZGJhY2sgbG9vcCBjaGVjayBmb3Igc3RlbmNpbCBpZiBk
ZXB0aC9zdGVuY2lsIHBvaW50IHRvIHRoZSBzYW1lIHJlc291cmNlLgotICAgIGNvbnN0IGJvb2wg
Y2hlY2tTdGVuY2lsID0KLSAgICAgICAgKHN0ZW5jaWwgJiYgc3RlbmNpbC0+dHlwZSgpID09IEdM
X1RFWFRVUkUpICYmICghZGVwdGggfHwgKnN0ZW5jaWwgIT0gKmRlcHRoKTsKLQotICAgIGNvbnN0
IGdsOjpBY3RpdmVUZXh0dXJlTWFzayAmYWN0aXZlVGV4dHVyZXMgICA9IHByb2dyYW0tPmdldEFj
dGl2ZVNhbXBsZXJzTWFzaygpOwotICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlUG9pbnRlckFy
cmF5ICZ0ZXh0dXJlcyA9IHN0YXRlLmdldEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsKLQotICAgIGZv
ciAoc2l6ZV90IHRleHR1cmVVbml0IDogYWN0aXZlVGV4dHVyZXMpCi0gICAgewotICAgICAgICBU
ZXh0dXJlICp0ZXh0dXJlID0gdGV4dHVyZXNbdGV4dHVyZVVuaXRdOwotCi0gICAgICAgIGlmICh0
ZXh0dXJlID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gRGVwdGggYW5kIHN0ZW5jaWwgYXR0YWNobWVudCBmb3JtIGZl
ZWRiYWNrIGxvb3BzCi0gICAgICAgIC8vIFJlZ2FyZGxlc3Mgb2YgaWYgZW5hYmxlZCBvciBtYXNr
ZWQuCi0gICAgICAgIGlmIChjaGVja0RlcHRoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dGV4dHVyZS0+Z2V0SWQoKSA9PSBkZXB0aC0+aWQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChjaGVja1N0ZW5jaWwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5n
ZXRJZCgpID09IHN0ZW5jaWwtPmlkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDaGVj
ayBpZiBhbnkgY29sb3IgYXR0YWNobWVudCBmb3JtcyBhIGZlZWRiYWNrIGxvb3AuCi0gICAgICAg
IGZvciAoc2l6ZV90IGRyYXdJbmRleCA6IG1Db2xvckF0dGFjaG1lbnRCaXRzKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJmF0dGFjaG1lbnQgPSBt
U3RhdGUubUNvbG9yQXR0YWNobWVudHNbZHJhd0luZGV4XTsKLSAgICAgICAgICAgIEFTU0VSVChh
dHRhY2htZW50LmlzQXR0YWNoZWQoKSk7Ci0KLSAgICAgICAgICAgIGlmIChhdHRhY2htZW50Lmlz
VGV4dHVyZVdpdGhJZCh0ZXh0dXJlLT5pZCgpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAvLyBUT0RPKGptYWRpbGwpOiBDaGVjayBmb3IgYXBwcm9wcmlhdGUgb3ZlcmxhcC4KLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBGcmFtZWJ1ZmZlcjo6Zm9ybXNDb3B5
aW5nRmVlZGJhY2tMb29wV2l0aChUZXh0dXJlSUQgY29weVRleHR1cmVJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29weVRleHR1cmVMZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Y29weVRleHR1cmVMYXllcikgY29uc3QKQEAgLTIxOTEsMTEgKzIxNDcsMTAgQEAgYW5nbGU6OlJl
c3VsdCBGcmFtZWJ1ZmZlcjo6ZW5zdXJlQ2xlYXJBdHRhY2htZW50c0luaXRpYWxpemVkKGNvbnN0
IENvbnRleHQgKmNvbnQKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
ICAgIH0KIAotICAgIGNvbnN0IEJsZW5kU3RhdGUgJmJsZW5kICAgICAgICAgICAgICAgPSBnbFN0
YXRlLmdldEJsZW5kU3RhdGUoKTsKICAgICBjb25zdCBEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVwdGhT
dGVuY2lsID0gZ2xTdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOwogCi0gICAgYm9vbCBjb2xv
ciAgID0gKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAhPSAwICYmICFJc0NvbG9yTWFza2Vk
T3V0KGJsZW5kKTsKLSAgICBib29sIGRlcHRoICAgPSAobWFzayAmIEdMX0RFUFRIX0JVRkZFUl9C
SVQpICE9IDAgJiYgIUlzRGVwdGhNYXNrZWRPdXQoZGVwdGhTdGVuY2lsKTsKKyAgICBib29sIGNv
bG9yID0gKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAhPSAwICYmICFnbFN0YXRlLmFsbEFj
dGl2ZURyYXdCdWZmZXJDaGFubmVsc01hc2tlZCgpOworICAgIGJvb2wgZGVwdGggPSAobWFzayAm
IEdMX0RFUFRIX0JVRkZFUl9CSVQpICE9IDAgJiYgIUlzRGVwdGhNYXNrZWRPdXQoZGVwdGhTdGVu
Y2lsKTsKICAgICBib29sIHN0ZW5jaWwgPSAobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkg
IT0gMCAmJiAhSXNTdGVuY2lsTWFza2VkT3V0KGRlcHRoU3RlbmNpbCk7CiAKICAgICBpZiAoIWNv
bG9yICYmICFkZXB0aCAmJiAhc3RlbmNpbCkKQEAgLTIyMjEsNyArMjE3Niw4IEBAIGFuZ2xlOjpS
ZXN1bHQgRnJhbWVidWZmZXI6OmVuc3VyZUNsZWFyQnVmZmVyQXR0YWNobWVudHNJbml0aWFsaXpl
ZChjb25zdCBDb250ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlcikKIHsKICAgICBpZiAo
IWNvbnRleHQtPmlzUm9idXN0UmVzb3VyY2VJbml0RW5hYmxlZCgpIHx8Ci0gICAgICAgIGNvbnRl
eHQtPmdldFN0YXRlKCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSB8fCBJc0NsZWFyQnVm
ZmVyTWFza2VkT3V0KGNvbnRleHQsIGJ1ZmZlcikpCisgICAgICAgIGNvbnRleHQtPmdldFN0YXRl
KCkuaXNSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSB8fAorICAgICAgICBJc0NsZWFyQnVmZmVy
TWFza2VkT3V0KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlcikpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuaAppbmRleCBkNmYwYTc5OTM5
N2RkMDQ3MDA5YTdiNWI3NDdmNThiMjI1YjM1YjY2Li43YTMwOTk3ZjU5OThjMWY2ZmViZmVhYTcz
NTc0M2I5MzI5MWQyYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvRnJhbWVidWZmZXIuaApAQCAtMTIzLDExICsxMjMsMjAgQEAgY2xhc3MgRnJhbWVi
dWZmZXJTdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgYm9vbCBpc0RlZmF1
bHQoKSBjb25zdDsKIAorICAgIGJvb2wgaGFzRGVwdGhTdGVuY2lsRmVlZGJhY2tMb29wKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtRGVwdGhCdWZmZXJGZWVkYmFja0xvb3AgfHwgbVN0
ZW5jaWxCdWZmZXJGZWVkYmFja0xvb3A7CisgICAgfQorCiAgIHByaXZhdGU6CiAgICAgY29uc3Qg
RnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRXZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKSBj
b25zdDsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFdlYkdMRGVwdGhBdHRh
Y2htZW50KCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRXZWJH
TFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
cmUgd2FzIGEgY2hhbmdlIGluIHRoaXMgYXR0YWNobWVudHMgZmVlZGJhY2stbG9vcC1uZXNzLgor
ICAgIGJvb2wgdXBkYXRlQXR0YWNobWVudEZlZWRiYWNrTG9vcEFuZFJldHVybklmQ2hhbmdlZChz
aXplX3QgZGlydHlCaXQpOworICAgIHZvaWQgdXBkYXRlSGFzUmVuZGVyaW5nRmVlZGJhY2tMb29w
KCk7CisKICAgICBmcmllbmQgY2xhc3MgRnJhbWVidWZmZXI7CiAKICAgICBGcmFtZWJ1ZmZlcklE
IG1JZDsKQEAgLTE1NSw2ICsxNjQsMTIgQEAgY2xhc3MgRnJhbWVidWZmZXJTdGF0ZSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCBtV2ViR0xTdGVu
Y2lsQXR0YWNobWVudDsKICAgICBib29sIG1XZWJHTERlcHRoU3RlbmNpbENvbnNpc3RlbnQ7CiAK
KyAgICAvLyBUcmFja3MgcmVuZGVyaW5nIGZlZWRiYWNrIGxvb3BzLgorICAgIERyYXdCdWZmZXJN
YXNrIG1EcmF3QnVmZmVyRmVlZGJhY2tMb29wczsKKyAgICBib29sIG1EZXB0aEJ1ZmZlckZlZWRi
YWNrTG9vcDsKKyAgICBib29sIG1TdGVuY2lsQnVmZmVyRmVlZGJhY2tMb29wOworICAgIGJvb2wg
bUhhc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcDsKKwogICAgIC8vIFRyYWNrcyBpZiB3ZSBuZWVkIHRv
IGluaXRpYWxpemUgdGhlIHJlc291cmNlcyBmb3IgZWFjaCBhdHRhY2htZW50LgogICAgIGFuZ2xl
OjpCaXRTZXQ8SU1QTEVNRU5UQVRJT05fTUFYX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRTICsgMj4g
bVJlc291cmNlTmVlZHNJbml0OwogCkBAIC0yNTEsOCArMjY2LDggQEAgY2xhc3MgRnJhbWVidWZm
ZXIgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok9ic2VydmVySW50ZXJmYWNlLAogICAgIGJvb2wgdXNp
bmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBjYWxs
cyBjaGVja1N0YXR1cy4KLSAgICBpbnQgZ2V0U2FtcGxlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0
KTsKLSAgICBpbnQgZ2V0UmVzb3VyY2VTYW1wbGVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwor
ICAgIGludCBnZXRTYW1wbGVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0OworICAgIGlu
dCBnZXRSZXNvdXJjZVNhbXBsZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCkgY29uc3Q7CiAKICAg
ICBhbmdsZTo6UmVzdWx0IGdldFNhbXBsZVBvc2l0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IHNpemVfdCBpbmRleCwgR0xmbG9hdCAqeHkpIGNvbnN0OwogCkBAIC0yNzAsNyArMjg1LDcgQEAg
Y2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok9ic2VydmVySW50ZXJmYWNl
LAogICAgIHZvaWQgaW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hlKCk7CiAgICAgQU5HTEVfSU5M
SU5FIGJvb2wgY2FjaGVkU3RhdHVzVmFsaWQoKSB7IHJldHVybiBtQ2FjaGVkU3RhdHVzLnZhbGlk
KCk7IH0KIAotICAgIEFOR0xFX0lOTElORSBHTGVudW0gY2hlY2tTdGF0dXMoY29uc3QgQ29udGV4
dCAqY29udGV4dCkKKyAgICBBTkdMRV9JTkxJTkUgR0xlbnVtIGNoZWNrU3RhdHVzKGNvbnN0IENv
bnRleHQgKmNvbnRleHQpIGNvbnN0CiAgICAgewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBmcmFt
ZWJ1ZmZlciBpcyBhbHdheXMgY29tcGxldGUgZXhjZXB0IHdoZW4gaXQgaXMgc3VyZmFjZWxlc3Mg
aW4gd2hpY2gKICAgICAgICAgLy8gY2FzZSBpdCBpcyBhbHdheXMgdW5zdXBwb3J0ZWQuCkBAIC0y
ODcsNyArMzAyLDcgQEAgY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok9i
c2VydmVySW50ZXJmYWNlLAogICAgIGludCBnZXRDYWNoZWRTYW1wbGVzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEF0dGFjaG1lbnRTYW1wbGVUeXBlIHNhbXBsZVR5cGUpIGNvbnN0OwogCiAgICAg
Ly8gSGVscGVyIGZvciBjaGVja1N0YXR1cyA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURS4KLSAg
ICBBTkdMRV9JTkxJTkUgYm9vbCBpc0NvbXBsZXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCisg
ICAgQU5HTEVfSU5MSU5FIGJvb2wgaXNDb21wbGV0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0KSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIChjaGVja1N0YXR1cyhjb250ZXh0KSA9PSBHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSk7CiAgICAgfQpAQCAtMzYzLDE5ICszNzgsMTkgQEAgY2xhc3Mg
RnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok9ic2VydmVySW50ZXJmYWNlLAogICAg
IHVzaW5nIERpcnR5Qml0cyA9IGFuZ2xlOjpCaXRTZXQ8RElSVFlfQklUX01BWD47CiAgICAgYm9v
bCBoYXNBbnlEaXJ0eUJpdCgpIGNvbnN0IHsgcmV0dXJuIG1EaXJ0eUJpdHMuYW55KCk7IH0KIAot
ICAgIGJvb2wgaGFzQWN0aXZlRmxvYXQzMkNvbG9yQXR0YWNobWVudCgpIGNvbnN0CisgICAgRHJh
d0J1ZmZlck1hc2sgZ2V0QWN0aXZlRmxvYXQzMkNvbG9yQXR0YWNobWVudERyYXdCdWZmZXJNYXNr
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAobUZsb2F0MzJDb2xvckF0dGFjaG1lbnRC
aXRzICYgZ2V0RHJhd0J1ZmZlck1hc2soKSkuYW55KCk7CisgICAgICAgIHJldHVybiBtRmxvYXQz
MkNvbG9yQXR0YWNobWVudEJpdHMgJiBnZXREcmF3QnVmZmVyTWFzaygpOwogICAgIH0KIAogICAg
IGJvb2wgaGFzUmVzb3VyY2VUaGF0TmVlZHNJbml0KCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1S
ZXNvdXJjZU5lZWRzSW5pdC5hbnkoKTsgfQogCi0gICAgYW5nbGU6OlJlc3VsdCBzeW5jU3RhdGUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCk7CisgICAgYW5nbGU6OlJlc3VsdCBzeW5jU3RhdGUoY29u
c3QgQ29udGV4dCAqY29udGV4dCkgY29uc3Q7CiAKICAgICAvLyBPYnNlcnZlciBpbXBsZW1lbnRh
dGlvbgogICAgIHZvaWQgb25TdWJqZWN0U3RhdGVDaGFuZ2UoYW5nbGU6OlN1YmplY3RJbmRleCBp
bmRleCwgYW5nbGU6OlN1YmplY3RNZXNzYWdlIG1lc3NhZ2UpIG92ZXJyaWRlOwogCi0gICAgYm9v
bCBmb3Jtc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcFdpdGgoY29uc3QgQ29udGV4dCAqY29udGV4dCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNSZW5kZXJpbmdGZWVkYmFja0xvb3AoKSBjb25zdCB7IHJldHVy
biBtU3RhdGUubUhhc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcDsgfQogICAgIGJvb2wgZm9ybXNDb3B5
aW5nRmVlZGJhY2tMb29wV2l0aChUZXh0dXJlSUQgY29weVRleHR1cmVJRCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29weVRleHR1cmVMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29weVRleHR1cmVMYXllcikg
Y29uc3Q7CkBAIC00MDAsOCArNDE1LDggQEAgY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJs
aWMgYW5nbGU6Ok9ic2VydmVySW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWF0Y2hUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXRjaElkKTsKLSAgICBHTGVudW0gY2hlY2tTdGF0dXNX
aXRoR0xGcm9udEVuZChjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKLSAgICBHTGVudW0gY2hlY2tT
dGF0dXNJbXBsKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworICAgIEdMZW51bSBjaGVja1N0YXR1
c1dpdGhHTEZyb250RW5kKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0OworICAgIEdMZW51
bSBjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4dCAqY29udGV4dCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRBdHRhY2htZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluZGlu
ZywKQEAgLTQ2MywxOCArNDc4LDE3IEBAIGNsYXNzIEZyYW1lYnVmZmVyIGZpbmFsIDogcHVibGlj
IGFuZ2xlOjpPYnNlcnZlckludGVyZmFjZSwKICAgICBGcmFtZWJ1ZmZlclN0YXRlIG1TdGF0ZTsK
ICAgICByeDo6RnJhbWVidWZmZXJJbXBsICptSW1wbDsKIAotICAgIE9wdGlvbmFsPEdMZW51bT4g
bUNhY2hlZFN0YXR1czsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPEdMZW51bT4gbUNhY2hlZFN0YXR1
czsKICAgICBzdGQ6OnZlY3RvcjxhbmdsZTo6T2JzZXJ2ZXJCaW5kaW5nPiBtRGlydHlDb2xvckF0
dGFjaG1lbnRCaW5kaW5nczsKICAgICBhbmdsZTo6T2JzZXJ2ZXJCaW5kaW5nIG1EaXJ0eURlcHRo
QXR0YWNobWVudEJpbmRpbmc7CiAgICAgYW5nbGU6Ok9ic2VydmVyQmluZGluZyBtRGlydHlTdGVu
Y2lsQXR0YWNobWVudEJpbmRpbmc7CiAKLSAgICBEaXJ0eUJpdHMgbURpcnR5Qml0czsKKyAgICBt
dXRhYmxlIERpcnR5Qml0cyBtRGlydHlCaXRzOwogICAgIERyYXdCdWZmZXJNYXNrIG1GbG9hdDMy
Q29sb3JBdHRhY2htZW50Qml0czsKLSAgICBEcmF3QnVmZmVyTWFzayBtQ29sb3JBdHRhY2htZW50
Qml0czsKIAogICAgIC8vIFRoZSBkaXJ0eSBiaXRzIGd1YXJkIGlzIGNoZWNrZWQgd2hlbiB3ZSBn
ZXQgYSBkZXBlbmRlbnQgc3RhdGUgY2hhbmdlIG1lc3NhZ2UuIFdlIHZlcmlmeSB0aGF0CiAgICAg
Ly8gd2UgZG9uJ3Qgc2V0IGEgZGlydHkgYml0IHRoYXQgaXNuJ3QgYWxyZWFkeSBzZXQsIHdoZW4g
aW5zaWRlIHRoZSBkaXJ0eSBiaXRzIHN5bmNTdGF0ZS4KLSAgICBPcHRpb25hbDxEaXJ0eUJpdHM+
IG1EaXJ0eUJpdHNHdWFyZDsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPERpcnR5Qml0cz4gbURpcnR5
Qml0c0d1YXJkOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1l
bnQuY3BwCmluZGV4IDU4ZjA3ZjcyNjFmNDBiZDZmMjM0NzRlYjg2ZThjYWNlNmE2YmY1NTMuLjI4
NDgwMTliZDcwNDc0ZWIzOGM2MmI2OTQ5ZmU1OGE2ZTM4ZmYyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0
dGFjaG1lbnQuY3BwCkBAIC0yODEsNiArMjgxLDE3IEBAIHZvaWQgRnJhbWVidWZmZXJBdHRhY2ht
ZW50OjpzZXRJbml0U3RhdGUoSW5pdFN0YXRlIGluaXRTdGF0ZSkgY29uc3QKICAgICBtUmVzb3Vy
Y2UtPnNldEluaXRTdGF0ZShtVGFyZ2V0LnRleHR1cmVJbmRleCgpLCBpbml0U3RhdGUpOwogfQog
Citib29sIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6aXNCb3VuZEFzU2FtcGxlck9ySW1hZ2UoKSBj
b25zdAoreworICAgIGlmIChtVHlwZSAhPSBHTF9URVhUVVJFKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVT
dGF0ZSA9IGdldFRleHR1cmUoKS0+Z2V0VGV4dHVyZVN0YXRlKCk7CisgICAgcmV0dXJuIHRleHR1
cmVTdGF0ZS5pc0JvdW5kQXNJbWFnZVRleHR1cmUoKSB8fCB0ZXh0dXJlU3RhdGUuaXNCb3VuZEFz
U2FtcGxlclRleHR1cmUoKTsKK30KKwogLy8vLy8vIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVj
dCBJbXBsZW1lbnRhdGlvbiAvLy8vLy8KIAogRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0OjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QoKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oCmlu
ZGV4IDEzNzBkMWI2ZWM2NzE1YjcwZDRkMzQ3MDczOGE4MTBhNjU2YWI5ZDEuLjI4ODczMDU4OTQ2
YmM3NjYzMGE0ODgyY2Y0NTcwNDM2YmZhZTM3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgK
QEAgLTkyLDYgKzkyLDggQEAgY2xhc3MgRnJhbWVidWZmZXJBdHRhY2htZW50IGZpbmFsCiAgICAg
R0xlbnVtIGdldENvbXBvbmVudFR5cGUoKSBjb25zdDsKICAgICBHTGVudW0gZ2V0Q29sb3JFbmNv
ZGluZygpIGNvbnN0OwogCisgICAgYm9vbCBpc0JvdW5kQXNTYW1wbGVyT3JJbWFnZSgpIGNvbnN0
OworCiAgICAgYm9vbCBpc1RleHR1cmVXaXRoSWQoVGV4dHVyZUlEIHRleHR1cmVJZCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtVHlwZSA9PSBHTF9URVhUVVJFICYmIGlkKCkgPT0gdGV4
dHVyZUlkLnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0dMRVMxUmVuZGVyZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0dMRVMxUmVuZGVyZXIuY3BwCmluZGV4IDM3MDI1YTUzNGMwY2M4ZjdjOTk5M2EzMGI2
MTU0ODg1OWQ0ZmJhMGEuLjMzZWRlNzdlNWJjODIzYTk2ODEzNTcyNTNlMDExNzIzOWVhY2FlNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xF
UzFSZW5kZXJlci5jcHAKQEAgLTU3Niw5ICs1NzYsOSBAQCBhbmdsZTo6UmVzdWx0IEdMRVMxUmVu
ZGVyZXI6OmxpbmtQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAoIXByb2dyYW1P
YmplY3QtPmlzTGlua2VkKCkpCiAgICAgewotICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoID0g
cHJvZ3JhbU9iamVjdC0+Z2V0SW5mb0xvZ0xlbmd0aCgpOworICAgICAgICBHTGludCBpbmZvTG9n
TGVuZ3RoID0gcHJvZ3JhbU9iamVjdC0+Z2V0RXhlY3V0YWJsZSgpLmdldEluZm9Mb2dMZW5ndGgo
KTsKICAgICAgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gaW5mb0xvZyhpbmZvTG9nTGVuZ3RoLCAwKTsK
LSAgICAgICAgcHJvZ3JhbU9iamVjdC0+Z2V0SW5mb0xvZyhpbmZvTG9nTGVuZ3RoIC0gMSwgbnVs
bHB0ciwgaW5mb0xvZy5kYXRhKCkpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5nZXRFeGVjdXRh
YmxlKCkuZ2V0SW5mb0xvZyhpbmZvTG9nTGVuZ3RoIC0gMSwgbnVsbHB0ciwgaW5mb0xvZy5kYXRh
KCkpOwogCiAgICAgICAgIEVSUigpIDw8ICJJbnRlcm5hbCBHTEVTIDEgc2hhZGVyIGxpbmsgZmFp
bGVkLiBJbmZvIGxvZzogIiA8PCBpbmZvTG9nLmRhdGEoKTsKICAgICAgICAgQU5HTEVfQ0hFQ0so
Y29udGV4dCwgZmFsc2UsICJHTEVTMVJlbmRlcmVyIHByb2dyYW0gbGluayBmYWlsZWQuIiwgR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtNzYxLDgwICs3NjEsODMgQEAgYW5nbGU6OlJlc3VsdCBH
TEVTMVJlbmRlcmVyOjppbml0aWFsaXplUmVuZGVyZXJQcm9ncmFtKENvbnRleHQgKmNvbnRleHQs
IFN0YXRlICoKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQg
R0xFUzFSZW5kZXJlcjo6c2V0VW5pZm9ybTFpKENvbnRleHQgKmNvbnRleHQsIFByb2dyYW0gKnBy
b2dyYW1PYmplY3QsIEdMaW50IGxvYywgR0xpbnQgdmFsdWUpCit2b2lkIEdMRVMxUmVuZGVyZXI6
OnNldFVuaWZvcm0xaShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHZhbHVlKQogewotICAgIGlmIChsb2MgPT0gLTEpCisgICAgaWYg
KGxvY2F0aW9uLnZhbHVlID09IC0xKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvZ3JhbU9iamVj
dC0+c2V0VW5pZm9ybTFpdihjb250ZXh0LCBsb2MsIDEsICZ2YWx1ZSk7CisgICAgcHJvZ3JhbU9i
amVjdC0+c2V0VW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvbiwgMSwgJnZhbHVlKTsKIH0KIAog
dm9pZCBHTEVTMVJlbmRlcmVyOjpzZXRVbmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKLSAgICBpZiAobG9jID09IC0x
KQorICAgIGlmIChsb2NhdGlvbi52YWx1ZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwotICAgIHBy
b2dyYW1PYmplY3QtPnNldFVuaWZvcm0xaXYoY29udGV4dCwgbG9jLCBjb3VudCwgdmFsdWUpOwor
ICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0xaXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgR0xFUzFSZW5kZXJlcjo6c2V0VW5pZm9ybU1hdHJpeDRmdihQ
cm9ncmFtICpwcm9ncmFtT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBpZiAobG9jID09IC0x
KQorICAgIGlmIChsb2NhdGlvbi52YWx1ZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwotICAgIHBy
b2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXg0ZnYobG9jLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQogCiB2b2lkIEdMRVMxUmVuZGVyZXI6OnNldFVu
aWZvcm00ZnYoUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKQogewotICAgIGlmIChsb2MgPT0gLTEpCisgICAgaWYgKGxvY2F0aW9u
LnZhbHVlID09IC0xKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5p
Zm9ybTRmdihsb2MsIGNvdW50LCB2YWx1ZSk7CisgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9y
bTRmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KIAogdm9pZCBHTEVTMVJlbmRlcmVyOjpz
ZXRVbmlmb3JtM2Z2KFByb2dyYW0gKnByb2dyYW1PYmplY3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBpZiAobG9jID09IC0xKQorICAgIGlmIChsb2Nh
dGlvbi52YWx1ZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwotICAgIHByb2dyYW1PYmplY3QtPnNl
dFVuaWZvcm0zZnYobG9jLCBjb3VudCwgdmFsdWUpOworICAgIHByb2dyYW1PYmplY3QtPnNldFVu
aWZvcm0zZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CiAKIHZvaWQgR0xFUzFSZW5kZXJl
cjo6c2V0VW5pZm9ybTJmdihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgaWYgKGxvYyA9PSAtMSkKKyAgICBpZiAo
bG9jYXRpb24udmFsdWUgPT0gLTEpCiAgICAgICAgIHJldHVybjsKLSAgICBwcm9ncmFtT2JqZWN0
LT5zZXRVbmlmb3JtMmZ2KGxvYywgY291bnQsIHZhbHVlKTsKKyAgICBwcm9ncmFtT2JqZWN0LT5z
ZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQogCi12b2lkIEdMRVMxUmVu
ZGVyZXI6OnNldFVuaWZvcm0xZihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LCBHTGludCBsb2MsIEdM
ZmxvYXQgdmFsdWUpCit2b2lkIEdMRVMxUmVuZGVyZXI6OnNldFVuaWZvcm0xZihQcm9ncmFtICpw
cm9ncmFtT2JqZWN0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZmxvYXQgdmFsdWUpCiB7
Ci0gICAgaWYgKGxvYyA9PSAtMSkKKyAgICBpZiAobG9jYXRpb24udmFsdWUgPT0gLTEpCiAgICAg
ICAgIHJldHVybjsKLSAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMWZ2KGxvYywgMSwgJnZh
bHVlKTsKKyAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCAxLCAmdmFs
dWUpOwogfQogCiB2b2lkIEdMRVMxUmVuZGVyZXI6OnNldFVuaWZvcm0xZnYoUHJvZ3JhbSAqcHJv
Z3JhbU9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewot
ICAgIGlmIChsb2MgPT0gLTEpCisgICAgaWYgKGxvY2F0aW9uLnZhbHVlID09IC0xKQogICAgICAg
ICByZXR1cm47Ci0gICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTFmdihsb2MsIGNvdW50LCB2
YWx1ZSk7CisgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTFmdihsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKIH0KIAogdm9pZCBHTEVTMVJlbmRlcmVyOjpzZXRBdHRyaWJ1dGVzRW5hYmxlZChD
b250ZXh0ICpjb250ZXh0LCBTdGF0ZSAqZ2xTdGF0ZSwgQXR0cmlidXRlc01hc2sgbWFzaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVJlbmRl
cmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xFUzFSZW5kZXJl
ci5oCmluZGV4IGY3YjZhOTk4NTA1YWI4MTFjM2NhM2QyMTYyMjEzMzg1YWIyOWNkMmEuLjVmZWYw
NzU2MTYxZDkwYzU2ZTdkYTljMTRiOWQyNjNhNzg2ZjY1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVJlbmRlcmVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0dMRVMxUmVuZGVyZXIuaApAQCAtNzAsMjIg
KzcwLDM3IEBAIGNsYXNzIEdMRVMxUmVuZGVyZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCAqcHJvZ3JhbU91
dCk7CiAgICAgYW5nbGU6OlJlc3VsdCBpbml0aWFsaXplUmVuZGVyZXJQcm9ncmFtKENvbnRleHQg
KmNvbnRleHQsIFN0YXRlICpnbFN0YXRlKTsKIAotICAgIHZvaWQgc2V0VW5pZm9ybTFpKENvbnRl
eHQgKmNvbnRleHQsIFByb2dyYW0gKnByb2dyYW1PYmplY3QsIEdMaW50IGxvYywgR0xpbnQgdmFs
dWUpOworICAgIHZvaWQgc2V0VW5pZm9ybTFpKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
dmFsdWUpOwogICAgIHZvaWQgc2V0VW5pZm9ybTFpdihDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7CiAgICAgdm9pZCBzZXRVbmlmb3Jt
TWF0cml4NGZ2KFByb2dyYW0gKnByb2dyYW1PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIHZv
aWQgc2V0VW5pZm9ybTRmdihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LCBHTGludCBsb2MsIEdMaW50
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtM2Z2KFBy
b2dyYW0gKnByb2dyYW1PYmplY3QsIEdMaW50IGxvYywgR0xpbnQgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm0yZnYoUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCwgR0xpbnQgbG9jLCBHTGludCBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIHZv
aWQgc2V0VW5pZm9ybTFmKFByb2dyYW0gKnByb2dyYW1PYmplY3QsIEdMaW50IGxvYywgR0xmbG9h
dCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtMWZ2KFByb2dyYW0gKnByb2dyYW1PYmplY3Qs
IEdMaW50IGxvYywgR0xpbnQgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lk
IHNldFVuaWZvcm00ZnYoUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OworICAgIHZvaWQgc2V0VW5pZm9ybTNmdihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlmb3JtMmZ2KFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lkIHNldFVuaWZvcm0xZihQcm9ncmFtICpw
cm9ncmFtT2JqZWN0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZmxvYXQgdmFsdWUpOwor
ICAgIHZvaWQgc2V0VW5pZm9ybTFmdihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAorICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7CiAKICAgICB2b2lkIHNldEF0dHJpYnV0ZXNFbmFibGVkKENvbnRleHQgKmNvbnRl
eHQsIFN0YXRlICpnbFN0YXRlLCBBdHRyaWJ1dGVzTWFzayBtYXNrKTsKIApAQCAtMTA1LDk3ICsx
MjAsOTcgQEAgY2xhc3MgR0xFUzFSZW5kZXJlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIHsKICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW07CiAKLSAgICAgICAgR0xpbnQg
cHJvak1hdHJpeExvYzsKLSAgICAgICAgR0xpbnQgbW9kZWx2aWV3TWF0cml4TG9jOwotICAgICAg
ICBHTGludCB0ZXh0dXJlTWF0cml4TG9jOwotICAgICAgICBHTGludCBtb2RlbHZpZXdJbnZUckxv
YzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHByb2pNYXRyaXhMb2M7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBtb2RlbHZpZXdNYXRyaXhMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiB0
ZXh0dXJlTWF0cml4TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbW9kZWx2aWV3SW52VHJM
b2M7CiAKICAgICAgICAgLy8gVGV4dHVyaW5nCi0gICAgICAgIEdMaW50IGVuYWJsZVRleHR1cmUy
RExvYzsKLSAgICAgICAgR0xpbnQgZW5hYmxlVGV4dHVyZUN1YmVNYXBMb2M7Ci0gICAgICAgIHN0
ZDo6YXJyYXk8R0xpbnQsIGtUZXhVbml0Q291bnQ+IHRleDJEU2FtcGxlckxvY3M7Ci0gICAgICAg
IHN0ZDo6YXJyYXk8R0xpbnQsIGtUZXhVbml0Q291bnQ+IHRleEN1YmVTYW1wbGVyTG9jczsKLQot
ICAgICAgICBHTGludCB0ZXh0dXJlRm9ybWF0TG9jOwotCi0gICAgICAgIEdMaW50IHRleHR1cmVF
bnZNb2RlTG9jOwotICAgICAgICBHTGludCBjb21iaW5lUmdiTG9jOwotICAgICAgICBHTGludCBj
b21iaW5lQWxwaGFMb2M7Ci0gICAgICAgIEdMaW50IHNyYzByZ2JMb2M7Ci0gICAgICAgIEdMaW50
IHNyYzBhbHBoYUxvYzsKLSAgICAgICAgR0xpbnQgc3JjMXJnYkxvYzsKLSAgICAgICAgR0xpbnQg
c3JjMWFscGhhTG9jOwotICAgICAgICBHTGludCBzcmMycmdiTG9jOwotICAgICAgICBHTGludCBz
cmMyYWxwaGFMb2M7Ci0gICAgICAgIEdMaW50IG9wMHJnYkxvYzsKLSAgICAgICAgR0xpbnQgb3Aw
YWxwaGFMb2M7Ci0gICAgICAgIEdMaW50IG9wMXJnYkxvYzsKLSAgICAgICAgR0xpbnQgb3AxYWxw
aGFMb2M7Ci0gICAgICAgIEdMaW50IG9wMnJnYkxvYzsKLSAgICAgICAgR0xpbnQgb3AyYWxwaGFM
b2M7Ci0gICAgICAgIEdMaW50IHRleHR1cmVFbnZDb2xvckxvYzsKLSAgICAgICAgR0xpbnQgcmdi
U2NhbGVMb2M7Ci0gICAgICAgIEdMaW50IGFscGhhU2NhbGVMb2M7Ci0gICAgICAgIEdMaW50IHBv
aW50U3ByaXRlQ29vcmRSZXBsYWNlTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZW5hYmxl
VGV4dHVyZTJETG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZW5hYmxlVGV4dHVyZUN1YmVN
YXBMb2M7CisgICAgICAgIHN0ZDo6YXJyYXk8VW5pZm9ybUxvY2F0aW9uLCBrVGV4VW5pdENvdW50
PiB0ZXgyRFNhbXBsZXJMb2NzOworICAgICAgICBzdGQ6OmFycmF5PFVuaWZvcm1Mb2NhdGlvbiwg
a1RleFVuaXRDb3VudD4gdGV4Q3ViZVNhbXBsZXJMb2NzOworCisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiB0ZXh0dXJlRm9ybWF0TG9jOworCisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiB0ZXh0dXJl
RW52TW9kZUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGNvbWJpbmVSZ2JMb2M7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBjb21iaW5lQWxwaGFMb2M7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBzcmMwcmdiTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gc3JjMGFscGhhTG9jOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gc3JjMXJnYkxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIHNyYzFhbHBoYUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHNyYzJyZ2JMb2M7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBzcmMyYWxwaGFMb2M7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBvcDByZ2JMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBvcDBhbHBoYUxvYzsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIG9wMXJnYkxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IG9wMWFscGhhTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gb3AycmdiTG9jOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gb3AyYWxwaGFMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiB0
ZXh0dXJlRW52Q29sb3JMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiByZ2JTY2FsZUxvYzsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGFscGhhU2NhbGVMb2M7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBwb2ludFNwcml0ZUNvb3JkUmVwbGFjZUxvYzsKIAogICAgICAgICAvLyBBbHBoYSB0
ZXN0Ci0gICAgICAgIEdMaW50IGVuYWJsZUFscGhhVGVzdExvYzsKLSAgICAgICAgR0xpbnQgYWxw
aGFGdW5jTG9jOwotICAgICAgICBHTGludCBhbHBoYVRlc3RSZWZMb2M7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBlbmFibGVBbHBoYVRlc3RMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBh
bHBoYUZ1bmNMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBhbHBoYVRlc3RSZWZMb2M7CiAK
ICAgICAgICAgLy8gU2hhZGluZywgbWF0ZXJpYWxzLCBhbmQgbGlnaHRpbmcKLSAgICAgICAgR0xp
bnQgc2hhZGVNb2RlbEZsYXRMb2M7Ci0gICAgICAgIEdMaW50IGVuYWJsZUxpZ2h0aW5nTG9jOwot
ICAgICAgICBHTGludCBlbmFibGVSZXNjYWxlTm9ybWFsTG9jOwotICAgICAgICBHTGludCBlbmFi
bGVOb3JtYWxpemVMb2M7Ci0gICAgICAgIEdMaW50IGVuYWJsZUNvbG9yTWF0ZXJpYWxMb2M7Ci0K
LSAgICAgICAgR0xpbnQgbWF0ZXJpYWxBbWJpZW50TG9jOwotICAgICAgICBHTGludCBtYXRlcmlh
bERpZmZ1c2VMb2M7Ci0gICAgICAgIEdMaW50IG1hdGVyaWFsU3BlY3VsYXJMb2M7Ci0gICAgICAg
IEdMaW50IG1hdGVyaWFsRW1pc3NpdmVMb2M7Ci0gICAgICAgIEdMaW50IG1hdGVyaWFsU3BlY3Vs
YXJFeHBvbmVudExvYzsKLQotICAgICAgICBHTGludCBsaWdodE1vZGVsU2NlbmVBbWJpZW50TG9j
OwotICAgICAgICBHTGludCBsaWdodE1vZGVsVHdvU2lkZWRMb2M7Ci0KLSAgICAgICAgR0xpbnQg
bGlnaHRFbmFibGVzTG9jOwotICAgICAgICBHTGludCBsaWdodEFtYmllbnRzTG9jOwotICAgICAg
ICBHTGludCBsaWdodERpZmZ1c2VzTG9jOwotICAgICAgICBHTGludCBsaWdodFNwZWN1bGFyc0xv
YzsKLSAgICAgICAgR0xpbnQgbGlnaHRQb3NpdGlvbnNMb2M7Ci0gICAgICAgIEdMaW50IGxpZ2h0
RGlyZWN0aW9uc0xvYzsKLSAgICAgICAgR0xpbnQgbGlnaHRTcG90bGlnaHRFeHBvbmVudHNMb2M7
Ci0gICAgICAgIEdMaW50IGxpZ2h0U3BvdGxpZ2h0Q3V0b2ZmQW5nbGVzTG9jOwotICAgICAgICBH
TGludCBsaWdodEF0dGVudWF0aW9uQ29uc3RzTG9jOwotICAgICAgICBHTGludCBsaWdodEF0dGVu
dWF0aW9uTGluZWFyc0xvYzsKLSAgICAgICAgR0xpbnQgbGlnaHRBdHRlbnVhdGlvblF1YWRyYXRp
Y3NMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBzaGFkZU1vZGVsRmxhdExvYzsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGVuYWJsZUxpZ2h0aW5nTG9jOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gZW5hYmxlUmVzY2FsZU5vcm1hbExvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGVu
YWJsZU5vcm1hbGl6ZUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGVuYWJsZUNvbG9yTWF0
ZXJpYWxMb2M7CisKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIG1hdGVyaWFsQW1iaWVudExvYzsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIG1hdGVyaWFsRGlmZnVzZUxvYzsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIG1hdGVyaWFsU3BlY3VsYXJMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBtYXRlcmlhbEVtaXNzaXZlTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbWF0ZXJpYWxT
cGVjdWxhckV4cG9uZW50TG9jOworCisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodE1vZGVs
U2NlbmVBbWJpZW50TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbGlnaHRNb2RlbFR3b1Np
ZGVkTG9jOworCisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodEVuYWJsZXNMb2M7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodEFtYmllbnRzTG9jOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbGlnaHREaWZmdXNlc0xvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxpZ2h0U3Bl
Y3VsYXJzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbGlnaHRQb3NpdGlvbnNMb2M7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodERpcmVjdGlvbnNMb2M7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsaWdodFNwb3RsaWdodEV4cG9uZW50c0xvYzsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxpZ2h0U3BvdGxpZ2h0Q3V0b2ZmQW5nbGVzTG9jOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbGlnaHRBdHRlbnVhdGlvbkNvbnN0c0xvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxpZ2h0QXR0ZW51YXRpb25MaW5lYXJzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbGln
aHRBdHRlbnVhdGlvblF1YWRyYXRpY3NMb2M7CiAKICAgICAgICAgLy8gRm9nCi0gICAgICAgIEdM
aW50IGZvZ0VuYWJsZUxvYzsKLSAgICAgICAgR0xpbnQgZm9nTW9kZUxvYzsKLSAgICAgICAgR0xp
bnQgZm9nRGVuc2l0eUxvYzsKLSAgICAgICAgR0xpbnQgZm9nU3RhcnRMb2M7Ci0gICAgICAgIEdM
aW50IGZvZ0VuZExvYzsKLSAgICAgICAgR0xpbnQgZm9nQ29sb3JMb2M7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBmb2dFbmFibGVMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBmb2dNb2Rl
TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZm9nRGVuc2l0eUxvYzsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGZvZ1N0YXJ0TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZm9nRW5k
TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZm9nQ29sb3JMb2M7CiAKICAgICAgICAgLy8g
Q2xpcCBwbGFuZXMKLSAgICAgICAgR0xpbnQgZW5hYmxlQ2xpcFBsYW5lc0xvYzsKLSAgICAgICAg
R0xpbnQgY2xpcFBsYW5lRW5hYmxlc0xvYzsKLSAgICAgICAgR0xpbnQgY2xpcFBsYW5lc0xvYzsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGVuYWJsZUNsaXBQbGFuZXNMb2M7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBjbGlwUGxhbmVFbmFibGVzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gY2xpcFBsYW5lc0xvYzsKIAogICAgICAgICAvLyBQb2ludCByYXN0ZXJpemF0aW9uCi0gICAg
ICAgIEdMaW50IHBvaW50UmFzdGVyaXphdGlvbkxvYzsKLSAgICAgICAgR0xpbnQgcG9pbnRTaXpl
TWluTG9jOwotICAgICAgICBHTGludCBwb2ludFNpemVNYXhMb2M7Ci0gICAgICAgIEdMaW50IHBv
aW50RGlzdGFuY2VBdHRlbnVhdGlvbkxvYzsKLSAgICAgICAgR0xpbnQgcG9pbnRTcHJpdGVFbmFi
bGVkTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gcG9pbnRSYXN0ZXJpemF0aW9uTG9jOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gcG9pbnRTaXplTWluTG9jOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gcG9pbnRTaXplTWF4TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gcG9pbnRE
aXN0YW5jZUF0dGVudWF0aW9uTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gcG9pbnRTcHJp
dGVFbmFibGVkTG9jOwogCiAgICAgICAgIC8vIERyYXcgdGV4dHVyZQotICAgICAgICBHTGludCBl
bmFibGVEcmF3VGV4dHVyZUxvYzsKLSAgICAgICAgR0xpbnQgZHJhd1RleHR1cmVDb29yZHNMb2M7
Ci0gICAgICAgIEdMaW50IGRyYXdUZXh0dXJlRGltc0xvYzsKLSAgICAgICAgR0xpbnQgZHJhd1Rl
eHR1cmVOb3JtYWxpemVkQ3JvcFJlY3RMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBlbmFi
bGVEcmF3VGV4dHVyZUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGRyYXdUZXh0dXJlQ29v
cmRzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZHJhd1RleHR1cmVEaW1zTG9jOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gZHJhd1RleHR1cmVOb3JtYWxpemVkQ3JvcFJlY3RMb2M7CiAg
ICAgfTsKIAogICAgIHN0cnVjdCBHTEVTMVVuaWZvcm1CdWZmZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xFUzFTdGF0ZS5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xFUzFTdGF0ZS5jcHAKaW5kZXggZjhhMzAy
NDc4ZGQyNGRmNWYwNDcyYjE2ZWE5Y2I0ODliMmIxZjNhYy4uZmE3ZTQ1MjIwNjEwZWJjMTMzMGIx
NjZkOWE0MzBiYzMwZjg1YTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0dMRVMxU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9HTEVTMVN0YXRlLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgR0xF
UzFTdGF0ZTo6c2V0SGludChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKICAgICB9CiB9CiAK
LUdMZW51bSBHTEVTMVN0YXRlOjpnZXRIaW50KEdMZW51bSB0YXJnZXQpCitHTGVudW0gR0xFUzFT
dGF0ZTo6Z2V0SGludChHTGVudW0gdGFyZ2V0KSBjb25zdAogewogICAgIHN3aXRjaCAodGFyZ2V0
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9HTEVTMVN0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xF
UzFTdGF0ZS5oCmluZGV4IDk1YjlmMTM4NDk0NTZhZWVmYjk2OThiYTNmNDEyNWQwMTU3ZGYwM2Mu
LjMxZmVkNjI2YTI3YTExODQ5OTU0ODc4Yzk4ZDUzNmJkYTczNzA0ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVN0YXRlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0dMRVMxU3RhdGUuaApAQCAtMjE4LDcg
KzIxOCw3IEBAIGNsYXNzIEdMRVMxU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICBBdHRyaWJ1dGVzTWFzayBnZXRBY3RpdmVBdHRyaWJ1dGVzTWFzaygpIGNvbnN0OwogCiAgICAg
dm9pZCBzZXRIaW50KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKLSAgICBHTGVudW0gZ2V0
SGludChHTGVudW0gdGFyZ2V0KTsKKyAgICBHTGVudW0gZ2V0SGludChHTGVudW0gdGFyZ2V0KSBj
b25zdDsKIAogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTdGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRv
ci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VB
bGxvY2F0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTBkM2Q0OWI3Mjkw
YjAyNDQ2ZTBkZjJiOTc3ZmFjZjMwNWNkM2ViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9I
YW5kbGVSYW5nZUFsbG9jYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotLy8gSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwIDogSW1wbGVtZW50YXRpb24g
Zm9yIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmgKLQotI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZVJh
bmdlQWxsb2NhdG9yLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bGltaXRz
PgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgot
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLQotY29uc3QgR0x1
aW50IEhhbmRsZVJhbmdlQWxsb2NhdG9yOjprSW52YWxpZEhhbmRsZSA9IDA7Ci0KLUhhbmRsZVJh
bmdlQWxsb2NhdG9yOjpIYW5kbGVSYW5nZUFsbG9jYXRvcigpCi17Ci0gICAgLy8gU2ltcGxpZnkg
dGhlIGNvZGUgYnkgbWFraW5nIHN1cmUgdGhhdCBsb3dlcl9ib3VuZChpZCkgbmV2ZXIKLSAgICAv
LyByZXR1cm5zIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1hcCwgaWYgaWQgaXMgdmFsaWQgKGVnICE9
IGtJbnZhbGlkSGFuZGxlKS4KLSAgICBtVXNlZC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoMHUsIDB1
KSk7Ci19Ci0KLUhhbmRsZVJhbmdlQWxsb2NhdG9yOjp+SGFuZGxlUmFuZ2VBbGxvY2F0b3IoKSB7
fQotCi1HTHVpbnQgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmFsbG9jYXRlKCkKLXsKLSAgICByZXR1
cm4gYWxsb2NhdGVSYW5nZSgxdSk7Ci19Ci0KLUdMdWludCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6
YWxsb2NhdGVBdE9yQWJvdmUoR0x1aW50IHdhbnRlZCkKLXsKLSAgICBpZiAod2FudGVkID09IDB1
IHx8IHdhbnRlZCA9PSAxdSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlUmFuZ2UoMXUpOwotCi0g
ICAgYXV0byBjdXJyZW50ID0gbVVzZWQubG93ZXJfYm91bmQod2FudGVkKTsKLSAgICBhdXRvIG5l
eHQgICAgPSBjdXJyZW50OwotICAgIGlmIChjdXJyZW50ID09IG1Vc2VkLmVuZCgpIHx8IGN1cnJl
bnQtPmZpcnN0ID4gd2FudGVkKQotICAgIHsKLSAgICAgICAgY3VycmVudC0tOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICBuZXh0Kys7Ci0gICAgfQotCi0gICAgR0x1aW50IGZpcnN0
SWQgPSBjdXJyZW50LT5maXJzdDsKLSAgICBHTHVpbnQgbGFzdElkICA9IGN1cnJlbnQtPnNlY29u
ZDsKLSAgICBBU1NFUlQod2FudGVkID49IGZpcnN0SWQpOwotCi0gICAgaWYgKHdhbnRlZCAtIDF1
IDw9IGxhc3RJZCkKLSAgICB7Ci0gICAgICAgIC8vIEFwcGVuZCB0byBjdXJyZW50IHJhbmdlLgot
ICAgICAgICBsYXN0SWQrKzsKLSAgICAgICAgaWYgKGxhc3RJZCA9PSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBUaGUgaW5jcmVtZW50IG92ZXJmbG93ZWQuCi0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGVSYW5nZSgxdSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjdXJyZW50LT5zZWNv
bmQgPSBsYXN0SWQ7Ci0KLSAgICAgICAgaWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYgbmV4dC0+
Zmlyc3QgLSAxdSA9PSBsYXN0SWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE1lcmdlIHdp
dGggbmV4dCByYW5nZS4KLSAgICAgICAgICAgIGN1cnJlbnQtPnNlY29uZCA9IG5leHQtPnNlY29u
ZDsKLSAgICAgICAgICAgIG1Vc2VkLmVyYXNlKG5leHQpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBsYXN0SWQ7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYg
bmV4dC0+Zmlyc3QgLSAxdSA9PSB3YW50ZWQpCi0gICAgewotICAgICAgICAvLyBQcmVwZW5kIHRv
IG5leHQgcmFuZ2UuCi0gICAgICAgIEdMdWludCBsYXN0RXhpc3RpbmcgPSBuZXh0LT5zZWNvbmQ7
Ci0gICAgICAgIG1Vc2VkLmVyYXNlKG5leHQpOwotICAgICAgICBtVXNlZC5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIod2FudGVkLCBsYXN0RXhpc3RpbmcpKTsKLSAgICAgICAgcmV0dXJuIHdhbnRlZDsK
LSAgICB9Ci0gICAgbVVzZWQuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHdhbnRlZCwgd2FudGVkKSk7
Ci0gICAgcmV0dXJuIHdhbnRlZDsKLX0KLQotR0x1aW50IEhhbmRsZVJhbmdlQWxsb2NhdG9yOjph
bGxvY2F0ZVJhbmdlKEdMdWludCByYW5nZSkKLXsKLSAgICBBU1NFUlQocmFuZ2UgIT0gMCk7Ci0K
LSAgICBhdXRvIGN1cnJlbnQgPSBtVXNlZC5iZWdpbigpOwotICAgIGF1dG8gbmV4dCAgICA9IGN1
cnJlbnQ7Ci0KLSAgICB3aGlsZSAoKytuZXh0ICE9IG1Vc2VkLmVuZCgpKQotICAgIHsKLSAgICAg
ICAgaWYgKG5leHQtPmZpcnN0IC0gY3VycmVudC0+c2Vjb25kID4gcmFuZ2UpCi0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY3VycmVudCA9IG5leHQ7Ci0gICAgfQotICAgIGNvbnN0IEdMdWlu
dCBmaXJzdElkID0gY3VycmVudC0+c2Vjb25kICsgMXU7Ci0gICAgY29uc3QgR0x1aW50IGxhc3RJ
ZCAgPSBmaXJzdElkICsgcmFuZ2UgLSAxdTsKLQotICAgIC8vIGRlYWwgd2l0aCB3cmFwYXJvdW5k
Ci0gICAgaWYgKGZpcnN0SWQgPT0gMHUgfHwgbGFzdElkIDwgZmlyc3RJZCkKLSAgICAgICAgcmV0
dXJuIGtJbnZhbGlkSGFuZGxlOwotCi0gICAgY3VycmVudC0+c2Vjb25kID0gbGFzdElkOwotCi0g
ICAgaWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYgbmV4dC0+Zmlyc3QgLSAxdSA9PSBsYXN0SWQp
Ci0gICAgewotICAgICAgICAvLyBtZXJnZSB3aXRoIG5leHQgcmFuZ2UKLSAgICAgICAgY3VycmVu
dC0+c2Vjb25kID0gbmV4dC0+c2Vjb25kOwotICAgICAgICBtVXNlZC5lcmFzZShuZXh0KTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGZpcnN0SWQ7Ci19Ci0KLWJvb2wgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6
Om1hcmtBc1VzZWQoR0x1aW50IGhhbmRsZSkKLXsKLSAgICBBU1NFUlQoaGFuZGxlKTsKLSAgICBh
dXRvIGN1cnJlbnQgPSBtVXNlZC5sb3dlcl9ib3VuZChoYW5kbGUpOwotICAgIGlmIChjdXJyZW50
ICE9IG1Vc2VkLmVuZCgpICYmIGN1cnJlbnQtPmZpcnN0ID09IGhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYXV0byBuZXh0ID0gY3VycmVudDsKLSAgICAtLWN1cnJlbnQ7Ci0K
LSAgICBpZiAoY3VycmVudC0+c2Vjb25kID49IGhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgQVNTRVJUKGN1cnJlbnQtPmZpcnN0IDwgaGFuZGxlICYmIGN1cnJlbnQtPnNlY29u
ZCA8IGhhbmRsZSk7Ci0KLSAgICBpZiAoY3VycmVudC0+c2Vjb25kICsgMXUgPT0gaGFuZGxlKQot
ICAgIHsKLSAgICAgICAgLy8gQXBwZW5kIHRvIGN1cnJlbnQgcmFuZ2UuCi0gICAgICAgIGN1cnJl
bnQtPnNlY29uZCA9IGhhbmRsZTsKLSAgICAgICAgaWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYg
bmV4dC0+Zmlyc3QgLSAxdSA9PSBoYW5kbGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE1l
cmdlIHdpdGggbmV4dCByYW5nZS4KLSAgICAgICAgICAgIGN1cnJlbnQtPnNlY29uZCA9IG5leHQt
PnNlY29uZDsKLSAgICAgICAgICAgIG1Vc2VkLmVyYXNlKG5leHQpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBlbHNlIGlmIChuZXh0ICE9IG1Vc2VkLmVuZCgp
ICYmIG5leHQtPmZpcnN0IC0gMXUgPT0gaGFuZGxlKQotICAgIHsKLSAgICAgICAgLy8gUHJlcGVu
ZCB0byBuZXh0IHJhbmdlLgotICAgICAgICBHTHVpbnQgbGFzdEV4aXN0aW5nID0gbmV4dC0+c2Vj
b25kOwotICAgICAgICBtVXNlZC5lcmFzZShuZXh0KTsKLSAgICAgICAgbVVzZWQuaW5zZXJ0KHN0
ZDo6bWFrZV9wYWlyKGhhbmRsZSwgbGFzdEV4aXN0aW5nKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIG1Vc2VkLmluc2VydChzdGQ6Om1ha2VfcGFpcihoYW5kbGUsIGhhbmRs
ZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEhhbmRsZVJhbmdlQWxsb2NhdG9yOjpy
ZWxlYXNlKEdMdWludCBoYW5kbGUpCi17Ci0gICAgcmVsZWFzZVJhbmdlKGhhbmRsZSwgMXUpOwot
fQotCi12b2lkIEhhbmRsZVJhbmdlQWxsb2NhdG9yOjpyZWxlYXNlUmFuZ2UoR0x1aW50IGZpcnN0
LCBHTHVpbnQgcmFuZ2UpCi17Ci0gICAgaWYgKHJhbmdlID09IDB1IHx8IChmaXJzdCA9PSAwdSAm
JiByYW5nZSA9PSAxdSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChmaXJzdCA9PSAwdSkK
LSAgICB7Ci0gICAgICAgIGZpcnN0Kys7Ci0gICAgICAgIHJhbmdlLS07Ci0gICAgfQotCi0gICAg
R0x1aW50IGxhc3QgPSBmaXJzdCArIHJhbmdlIC0gMXU7Ci0gICAgaWYgKGxhc3QgPCBmaXJzdCkK
LSAgICAgICAgbGFzdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCk7Ci0KLSAg
ICB3aGlsZSAodHJ1ZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gY3VycmVudCA9IG1Vc2VkLmxvd2Vy
X2JvdW5kKGxhc3QpOwotICAgICAgICBpZiAoY3VycmVudCA9PSBtVXNlZC5lbmQoKSB8fCBjdXJy
ZW50LT5maXJzdCA+IGxhc3QpCi0gICAgICAgICAgICAtLWN1cnJlbnQ7Ci0KLSAgICAgICAgaWYg
KGN1cnJlbnQtPnNlY29uZCA8IGZpcnN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmIChjdXJyZW50LT5maXJzdCA+PSBmaXJzdCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3QgR0x1aW50IGxhc3RFeGlzdGluZyA9IGN1cnJlbnQtPnNlY29uZDsKLSAgICAgICAgICAgIG1V
c2VkLmVyYXNlKGN1cnJlbnQpOwotICAgICAgICAgICAgaWYgKGxhc3QgPCBsYXN0RXhpc3Rpbmcp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVVzZWQuaW5zZXJ0KHN0ZDo6bWFrZV9w
YWlyKGxhc3QgKyAxdSwgbGFzdEV4aXN0aW5nKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+c2Vjb25kIDw9IGxhc3QpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGN1cnJlbnQtPnNlY29uZCA9IGZpcnN0IC0gMXU7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoY3VycmVudC0+Zmlyc3QgPCBm
aXJzdCAmJiBjdXJyZW50LT5zZWNvbmQgPiBsYXN0KTsKLSAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCBsYXN0RXhpc3RpbmcgPSBjdXJyZW50LT5zZWNvbmQ7Ci0gICAgICAgICAgICBjdXJyZW50LT5z
ZWNvbmQgICAgICAgICAgID0gZmlyc3QgLSAxdTsKLSAgICAgICAgICAgIG1Vc2VkLmluc2VydChz
dGQ6Om1ha2VfcGFpcihsYXN0ICsgMXUsIGxhc3RFeGlzdGluZykpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi1ib29sIEhhbmRsZVJhbmdlQWxsb2NhdG9yOjppc1VzZWQoR0x1aW50IGhhbmRsZSkg
Y29uc3QKLXsKLSAgICBpZiAoaGFuZGxlID09IGtJbnZhbGlkSGFuZGxlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGN1cnJlbnQgPSBtVXNlZC5sb3dlcl9ib3VuZChoYW5kbGUp
OwotICAgIGlmIChjdXJyZW50ICE9IG1Vc2VkLmVuZCgpKQotICAgIHsKLSAgICAgICAgaWYgKGN1
cnJlbnQtPmZpcnN0ID09IGhhbmRsZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICAtLWN1cnJlbnQ7Ci0gICAgcmV0dXJuIGN1cnJlbnQtPnNlY29uZCA+PSBoYW5kbGU7Ci19
Ci0KLX0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmE0OWIxNjRkMDU1NTA1MGYxMTAzZjgxM2Y3MjNhNmI0NDViMDVk
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaAorKysg
L2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAwMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEhhbmRsZVJhbmdlQWxs
b2NhdG9yLmg6IERlZmluZXMgdGhlIGdsOjpIYW5kbGVSYW5nZUFsbG9jYXRvciBjbGFzcywgd2hp
Y2ggaXMgdXNlZCB0bwotLy8gYWxsb2NhdGUgY29udGlndW91cyByYW5nZXMgb2YgR0wgcGF0aCBo
YW5kbGVzLgotCi0jaWZuZGVmIExJQkFOR0xFX0hBTkRMRVJBTkdFQUxMT0NBVE9SX0hfCi0jZGVm
aW5lIExJQkFOR0xFX0hBTkRMRVJBTkdFQUxMT0NBVE9SX0hfCi0KLSNpbmNsdWRlIDxtYXA+Ci0K
LSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0K
LW5hbWVzcGFjZSBnbAotewotCi0vLyBBbGxvY2F0ZXMgY29udGlndW91cyByYW5nZXMgb2YgcGF0
aCBvYmplY3QgaGFuZGxlcy4KLWNsYXNzIEhhbmRsZVJhbmdlQWxsb2NhdG9yIGZpbmFsIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgR0x1aW50IGtJ
bnZhbGlkSGFuZGxlOwotCi0gICAgSGFuZGxlUmFuZ2VBbGxvY2F0b3IoKTsKLSAgICB+SGFuZGxl
UmFuZ2VBbGxvY2F0b3IoKTsKLQotICAgIC8vIEFsbG9jYXRlcyBhIG5ldyBwYXRoIGhhbmRsZS4K
LSAgICBHTHVpbnQgYWxsb2NhdGUoKTsKLQotICAgIC8vIEFsbG9jYXRlcyBhIGhhbmRsZSBzdGFy
dGluZyBhdCBvciBhYm92ZSB0aGUgdmFsdWUgb2YgfHdhbnRlZHwuCi0gICAgLy8gTm90ZTogbWF5
IHdyYXAgaWYgaXQgc3RhcnRzIG5lYXIgbGltaXQuCi0gICAgR0x1aW50IGFsbG9jYXRlQXRPckFi
b3ZlKEdMdWludCB3YW50ZWQpOwotCi0gICAgLy8gQWxsb2NhdGVzIHxyYW5nZXwgYW1vdW50IG9m
IGNvbnRpZ3VvdXMgcGF0aHMuCi0gICAgLy8gUmV0dXJucyB0aGUgZmlyc3QgaWQgdG8gfGZpcnN0
X2lkfCBvciB8a0ludmFsaWRIYW5kbGV8IGlmCi0gICAgLy8gYWxsb2NhdGlvbiBmYWlsZWQuCi0g
ICAgR0x1aW50IGFsbG9jYXRlUmFuZ2UoR0x1aW50IHJhbmdlKTsKLQotICAgIC8vIE1hcmtzIGFu
IGlkIGFzIHVzZWQuIFJldHVybnMgZmFsc2UgaWYgaGFuZGxlIHdhcyBhbHJlYWR5IHVzZWQuCi0g
ICAgYm9vbCBtYXJrQXNVc2VkKEdMdWludCBoYW5kbGUpOwotCi0gICAgLy8gUmVsZWFzZSBoYW5k
bGUuCi0gICAgdm9pZCByZWxlYXNlKEdMdWludCBoYW5kbGUpOwotCi0gICAgLy8gUmVsZWFzZSBh
IHxyYW5nZXwgYW1vdW50IG9mIGNvbnRpZ3VvdXMgaGFuZGxlcywgc3RhcnRpbmcgZnJvbSB8Zmly
c3R8Ci0gICAgdm9pZCByZWxlYXNlUmFuZ2UoR0x1aW50IGZpcnN0LCBHTHVpbnQgcmFuZ2UpOwot
Ci0gICAgLy8gQ2hlY2tzIHdoZXRoZXIgb3Igbm90IGEgcmVzb3VyY2UgSUQgaXMgaW4gdXNlLgot
ICAgIGJvb2wgaXNVc2VkKEdMdWludCBoYW5kbGUpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0gICAg
c3RkOjptYXA8R0x1aW50LCBHTHVpbnQ+IG1Vc2VkOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGds
Ci0KLSNlbmRpZiAgLy8gTElCQU5HTEVfSEFORExFUkFOR0VBTExPQ0FUT1JfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9j
YXRvcl91bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
SGFuZGxlUmFuZ2VBbGxvY2F0b3JfdW5pdHRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmZmJkNTNhNDE2NWM2MmUxMTc3OTkyMzU2OGM5ZWYwN2E2NjcyODVlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvcl91bml0dGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyNzUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFVuaXQgdGVzdHMgZm9y
IEhhbmRsZVJhbmdlQWxsb2NhdG9yLgotLy8KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZVJhbmdl
QWxsb2NhdG9yLmgiCi0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBIYW5kbGVSYW5nZUFsbG9jYXRv
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgZ2w6Okhh
bmRsZVJhbmdlQWxsb2NhdG9yICpnZXRBbGxvY2F0b3IoKSB7IHJldHVybiAmbUFsbG9jYXRvcjsg
fQotCi0gIHByaXZhdGU6Ci0gICAgZ2w6OkhhbmRsZVJhbmdlQWxsb2NhdG9yIG1BbGxvY2F0b3I7
Ci19OwotCi0vLyBDaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eTogYWxsb2NhdGUsIHJlbGVhc2Us
IGlzVXNlZC4KLVRFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3QsIFRlc3RCYXNpYykKLXsK
LSAgICBhdXRvICphbGxvY2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsKLSAgICAvLyBDaGVjayB0aGF0
IHJlc291cmNlIDEgaXMgbm90IGluIHVzZQotICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlz
VXNlZCgxKSk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBhbiBJRCwgY2hlY2sgdGhhdCBpdCdzIGluIHVz
ZS4KLSAgICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgIEVYUEVDVF9U
UlVFKGFsbG9jYXRvci0+aXNVc2VkKGlkMSkpOwotCi0gICAgLy8gQWxsb2NhdGUgYW5vdGhlciBJ
RCwgY2hlY2sgdGhhdCBpdCdzIGluIHVzZSwgYW5kIGRpZmZlcmVudCBmcm9tIHRoZSBmaXJzdAot
ICAgIC8vIG9uZS4KLSAgICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAg
IEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+aXNVc2VkKGlkMikpOwotICAgIEVYUEVDVF9ORShpZDEs
IGlkMik7Ci0KLSAgICAvLyBGcmVlIG9uZSBvZiB0aGUgSURzLCBjaGVjayB0aGF0IGl0J3Mgbm90
IGluIHVzZSBhbnkgbW9yZS4KLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQxKTsKLSAgICBFWFBF
Q1RfRkFMU0UoYWxsb2NhdG9yLT5pc1VzZWQoaWQxKSk7Ci0KLSAgICAvLyBGcmVlcyB0aGUgb3Ro
ZXIgSUQsIGNoZWNrIHRoYXQgaXQncyBub3QgaW4gdXNlIGFueSBtb3JlLgotICAgIGFsbG9jYXRv
ci0+cmVsZWFzZShpZDIpOwotICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZChpZDIp
KTsKLX0KLQotLy8gQ2hlY2tzIHRoYXQgdGhlIHJlc291cmNlIGhhbmRsZXMgYXJlIHJlLXVzZWQg
YWZ0ZXIgYmVpbmcgZnJlZWQuCi1URVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBUZXN0
QWR2YW5jZWQpCi17Ci0gICAgYXV0byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7Ci0KLSAg
ICAvLyBBbGxvY2F0ZSB0aGUgaGlnaGVzdCBwb3NzaWJsZSBJRCwgdG8gbWFrZSBsaWZlIGF3a3dh
cmQuCi0gICAgYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZSh+c3RhdGljX2Nhc3Q8R0x1aW50
PigwKSk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBhIHNpZ25pZmljYW50IG51bWJlciBvZiByZXNvdXJj
ZXMuCi0gICAgY29uc3QgdW5zaWduZWQgaW50IGtOdW1SZXNvdXJjZXMgPSAxMDA7Ci0gICAgR0x1
aW50IGlkc1trTnVtUmVzb3VyY2VzXTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IGtOdW1SZXNvdXJjZXM7ICsraSkKLSAgICB7Ci0gICAgICAgIGlkc1tpXSA9IGFsbG9jYXRvci0+
YWxsb2NhdGUoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQoaWRzW2ld
KSk7Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgdGhhdCBhIG5ldyBhbGxvY2F0aW9uIHJlLXVzZXMg
dGhlIHJlc291cmNlIHdlIGp1c3QgZnJlZWQuCi0gICAgR0x1aW50IGlkMSA9IGlkc1trTnVtUmVz
b3VyY2VzIC8gMl07Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkMSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKGFsbG9jYXRvci0+aXNVc2VkKGlkMSkpOwotICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3It
PmFsbG9jYXRlKCk7Ci0gICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQoaWQyKSk7Ci0g
ICAgRVhQRUNUX0VRKGlkMSwgaWQyKTsKLX0KLQotLy8gQ2hlY2tzIHRoYXQgd2UgY2FuIGNob29z
ZSBvdXIgb3duIGlkcyBhbmQgdGhleSB3b24ndCBiZSByZXVzZWQuCi1URVNUX0YoSGFuZGxlUmFu
Z2VBbGxvY2F0b3JUZXN0LCBNYXJrQXNVc2VkKQotewotICAgIGF1dG8gKmFsbG9jYXRvciA9IGdl
dEFsbG9jYXRvcigpOwotICAgIEdMdWludCBpZCAgICAgICA9IGFsbG9jYXRvci0+YWxsb2NhdGUo
KTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQpOwotICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0
b3ItPmlzVXNlZChpZCkpOwotICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+bWFya0FzVXNlZChp
ZCkpOwotICAgIEVYUEVDVF9UUlVFKGFsbG9jYXRvci0+aXNVc2VkKGlkKSk7Ci0gICAgR0x1aW50
IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICBFWFBFQ1RfTkUoaWQsIGlkMik7Ci0g
ICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5tYXJrQXNVc2VkKGlkMiArIDEpKTsKLSAgICBHTHVp
bnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgIC8vIENoZWNrcyBvdXIgYWxnb3Jp
dGhtLiBJZiB0aGUgYWxnb3JpdGhtIGNoYW5nZXMgdGhpcyBjaGVjayBzaG91bGQgYmUKLSAgICAv
LyBjaGFuZ2VkLgotICAgIEVYUEVDVF9FUShpZDMsIGlkMiArIDIpOwotfQotCi0vLyBDaGVja3Mg
YWxsb2NhdGVBdE9yQWJvdmUuCi1URVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBBbGxv
Y2F0ZUF0T3JBYm92ZSkKLXsKLSAgICBjb25zdCBHTHVpbnQga09mZnNldCA9IDEyMzQ1NjsKLSAg
ICBhdXRvICphbGxvY2F0b3IgICAgICA9IGdldEFsbG9jYXRvcigpOwotICAgIEdMdWludCBpZDEg
ICAgICAgICAgID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrT2Zmc2V0KTsKLSAgICBF
WFBFQ1RfRVEoa09mZnNldCwgaWQxKTsKLSAgICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxv
Y2F0ZUF0T3JBYm92ZShrT2Zmc2V0KTsKLSAgICBFWFBFQ1RfR1QoaWQyLCBrT2Zmc2V0KTsKLSAg
ICBHTHVpbnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrT2Zmc2V0KTsKLSAg
ICBFWFBFQ1RfR1QoaWQzLCBrT2Zmc2V0KTsKLX0KLQotLy8gQ2hlY2tzIHRoYXQgYWxsb2NhdGVB
dE9yQWJvdmUgd3JhcHMgYXJvdW5kIGF0IHRoZSBtYXhpbXVtIHZhbHVlLgotVEVTVF9GKEhhbmRs
ZVJhbmdlQWxsb2NhdG9yVGVzdCwgQWxsb2NhdGVJZEF0T3JBYm92ZVdyYXBzQXJvdW5kKQotewot
ICAgIGNvbnN0IEdMdWludCBrTWF4UG9zc2libGVPZmZzZXQgPSB+c3RhdGljX2Nhc3Q8R0x1aW50
PigwKTsKLSAgICBhdXRvICphbGxvY2F0b3IgICAgICAgICAgICAgICAgID0gZ2V0QWxsb2NhdG9y
KCk7Ci0gICAgR0x1aW50IGlkMSAgICAgICAgICAgICAgICAgICAgICA9IGFsbG9jYXRvci0+YWxs
b2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0KTsKLSAgICBFWFBFQ1RfRVEoa01heFBv
c3NpYmxlT2Zmc2V0LCBpZDEpOwotICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRl
QXRPckFib3ZlKGtNYXhQb3NzaWJsZU9mZnNldCk7Ci0gICAgRVhQRUNUX0VRKDF1LCBpZDIpOwot
ICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtNYXhQb3NzaWJs
ZU9mZnNldCk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBpZDMpOwotfQotCi0vLyBDaGVja3MgdGhhdCBm
cmVlaW5nIGFuIGFscmVhZHkgZnJlZWQgcmFuZ2UgY2F1c2VzIG5vIGhhcm0uCi1URVNUX0YoSGFu
ZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBSZWR1bmRhbnRGcmVlSXNJZ25vcmVkKQotewotICAgIGF1
dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigpOwotICAgIEdMdWludCBpZDEgICAgICA9IGFs
bG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMCk7Ci0gICAgYWxs
b2NhdG9yLT5yZWxlYXNlKGlkMSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkMSk7Ci0gICAg
YWxsb2NhdG9yLT5yZWxlYXNlKGlkMSArIDEpOwotICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3It
PmFsbG9jYXRlKCk7Ci0gICAgR0x1aW50IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAg
ICBFWFBFQ1RfTkUoaWQyLCBpZDMpOwotICAgIEVYUEVDVF9ORShhbGxvY2F0b3ItPmtJbnZhbGlk
SGFuZGxlLCBpZDIpOwotICAgIEVYUEVDVF9ORShhbGxvY2F0b3ItPmtJbnZhbGlkSGFuZGxlLCBp
ZDMpOwotfQotCi0vLyBDaGVjayBhbGxvY2F0aW5nIGFuZCByZWxlYXNpbmcgbXVsdGlwbGUgcmFu
Z2VzLgotVEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgYWxsb2NhdGVSYW5nZSkKLXsK
LSAgICBjb25zdCBHTHVpbnQga01heFBvc3NpYmxlT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0
czxHTHVpbnQ+OjptYXgoKTsKLQotICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigp
OwotCi0gICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgxKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIGlkMSk7Ci0gICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVS
YW5nZSgyKTsKLSAgICBFWFBFQ1RfRVEoMnUsIGlkMik7Ci0gICAgR0x1aW50IGlkMyA9IGFsbG9j
YXRvci0+YWxsb2NhdGVSYW5nZSgzKTsKLSAgICBFWFBFQ1RfRVEoNHUsIGlkMyk7Ci0gICAgR0x1
aW50IGlkNCA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICBFWFBFQ1RfRVEoN3UsIGlkNCk7
Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKDMpOwotICAgIEdMdWludCBpZDUgPSBhbGxvY2F0b3It
PmFsbG9jYXRlUmFuZ2UoMSk7Ci0gICAgRVhQRUNUX0VRKDN1LCBpZDUpOwotICAgIGFsbG9jYXRv
ci0+cmVsZWFzZSg1KTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMik7Ci0gICAgYWxsb2NhdG9y
LT5yZWxlYXNlKDQpOwotICAgIEdMdWludCBpZDYgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uo
Mik7Ci0gICAgRVhQRUNUX0VRKDR1LCBpZDYpOwotICAgIEdMdWludCBpZDcgPSBhbGxvY2F0b3It
PmFsbG9jYXRlQXRPckFib3ZlKGtNYXhQb3NzaWJsZU9mZnNldCk7Ci0gICAgRVhQRUNUX0VRKGtN
YXhQb3NzaWJsZU9mZnNldCwgaWQ3KTsKLSAgICBHTHVpbnQgaWQ4ID0gYWxsb2NhdG9yLT5hbGxv
Y2F0ZUF0T3JBYm92ZShrTWF4UG9zc2libGVPZmZzZXQpOwotICAgIEVYUEVDVF9FUSgydSwgaWQ4
KTsKLSAgICBHTHVpbnQgaWQ5ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDUwKTsKLSAgICBF
WFBFQ1RfRVEoOHUsIGlkOSk7Ci0gICAgR0x1aW50IGlkMTAgPSBhbGxvY2F0b3ItPmFsbG9jYXRl
UmFuZ2UoNTApOwotICAgIEVYUEVDVF9FUSg1OHUsIGlkMTApOwotICAgIC8vIFJlbW92ZSBhbGwg
dGhlIGxvdy1udW1iZXJlZCBpZHMuCi0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKDEpOwotICAgIGFs
bG9jYXRvci0+cmVsZWFzZSgxNSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlUmFuZ2UoMiwgMTA3
KTsKLSAgICBHTHVpbnQgaWQxMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgxMDApOwotICAg
IEVYUEVDVF9FUSgxdSwgaWQxMSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGtNYXhQb3NzaWJs
ZU9mZnNldCk7Ci0gICAgR0x1aW50IGlkMTIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMTAw
KTsKLSAgICBFWFBFQ1RfRVEoMTAxdSwgaWQxMik7Ci0KLSAgICBHTHVpbnQgaWQxMyA9IGFsbG9j
YXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0IC0gMnUpOwotICAgIEVY
UEVDVF9FUShrTWF4UG9zc2libGVPZmZzZXQgLSAydSwgaWQxMyk7Ci0gICAgR0x1aW50IGlkMTQg
PSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoMyk7Ci0gICAgRVhQRUNUX0VRKDIwMXUsIGlkMTQp
OwotfQotCi0vLyBDaGVja3MgdGhhdCBoYXZpbmcgYWxsb2NhdGVkIGEgaGlnaCByYW5nZSBkb2Vz
bid0IGludGVyZmVyZQotLy8gd2l0aCBub3JtYWwgbG93IHJhbmdlIGFsbG9jYXRpb24uCi1URVNU
X0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBBbGxvY2F0ZVJhbmdlRW5kTm9FZmZlY3QpCi17
Ci0gICAgY29uc3QgR0x1aW50IGtNYXhQb3NzaWJsZU9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8R0x1aW50Pjo6bWF4KCk7Ci0KLSAgICBhdXRvICphbGxvY2F0b3IgPSBnZXRBbGxvY2F0b3Io
KTsKLSAgICBHTHVpbnQgaWQxICAgICAgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtN
YXhQb3NzaWJsZU9mZnNldCAtIDJ1KTsKLSAgICBFWFBFQ1RfRVEoa01heFBvc3NpYmxlT2Zmc2V0
IC0gMnUsIGlkMSk7Ci0gICAgR0x1aW50IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgz
KTsKLSAgICBFWFBFQ1RfRVEoMXUsIGlkMyk7Ci0gICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+
YWxsb2NhdGVSYW5nZSgyKTsKLSAgICBFWFBFQ1RfRVEoNHUsIGlkMik7Ci19Ci0KLS8vIENoZWNr
cyBhbGxvY2F0aW5nIGEgcmFuZ2UgdGhhdCBjb25zdW1lcyB0aGUgd2hvbGUgdWludDMyIHNwYWNl
LgotVEVTVF9GKEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCwgQWxsb2NhdGVNYXgpCi17Ci0gICAg
Y29uc3QgdWludDMyX3Qga01heFBvc3NpYmxlUmFuZ2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCk7Ci0KLSAgICBhdXRvICphbGxvY2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsK
LSAgICBHTHVpbnQgaWQgICAgICAgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uoa01heFBvc3Np
YmxlUmFuZ2UpOwotICAgIEVYUEVDVF9FUSgxdSwgaWQpOwotICAgIGFsbG9jYXRvci0+cmVsZWFz
ZVJhbmdlKGlkLCBrTWF4UG9zc2libGVSYW5nZSAtIDF1KTsKLSAgICBHTHVpbnQgaWQyID0gYWxs
b2NhdG9yLT5hbGxvY2F0ZVJhbmdlKGtNYXhQb3NzaWJsZVJhbmdlKTsKLSAgICBFWFBFQ1RfRVEo
MHUsIGlkMik7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlUmFuZ2UoaWQsIGtNYXhQb3NzaWJsZVJh
bmdlKTsKLSAgICBHTHVpbnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKGtNYXhQb3Nz
aWJsZVJhbmdlKTsKLSAgICBFWFBFQ1RfRVEoMXUsIGlkMyk7Ci19Ci0KLS8vIENoZWNrcyBhbGxv
Y2F0aW5nIGEgcmFuZ2UgdGhhdCBjb25zdW1lcyB0aGUgd2hvbGUgdWludDMyIHNwYWNlCi0vLyBj
YXVzZXMgbmV4dCBhbGxvY2F0aW9uIHRvIGZhaWwuCi0vLyBTdWJzZXF1ZW50bHkgY2hlY2tzIHRo
YXQgb25jZSB0aGUgYmlnIHJhbmdlIGlzIHJlZHVjZWQgbmV3IGFsbG9jYXRpb25zCi0vLyBhcmUg
cG9zc2libGUuCi1URVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBBbGxvY2F0ZUZ1bGxS
YW5nZSkKLXsKLSAgICBjb25zdCB1aW50MzJfdCBrTWF4UG9zc2libGVSYW5nZSA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICBjb25zdCBHTHVpbnQga0ZyZWVkSWQg
ICAgICAgICAgICA9IDU1NXU7Ci0gICAgYXV0byAqYWxsb2NhdG9yICAgICAgICAgICAgICAgICAg
PSBnZXRBbGxvY2F0b3IoKTsKLQotICAgIEdMdWludCBpZDEgPSBhbGxvY2F0b3ItPmFsbG9jYXRl
UmFuZ2Uoa01heFBvc3NpYmxlUmFuZ2UpOwotICAgIEVYUEVDVF9FUSgxdSwgaWQxKTsKLSAgICBH
THVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgIEVYUEVDVF9FUShnbDo6SGFu
ZGxlUmFuZ2VBbGxvY2F0b3I6OmtJbnZhbGlkSGFuZGxlLCBpZDIpOwotICAgIGFsbG9jYXRvci0+
cmVsZWFzZShrRnJlZWRJZCk7Ci0gICAgR0x1aW50IGlkMyA9IGFsbG9jYXRvci0+YWxsb2NhdGUo
KTsKLSAgICBFWFBFQ1RfRVEoa0ZyZWVkSWQsIGlkMyk7Ci0gICAgR0x1aW50IGlkNCA9IGFsbG9j
YXRvci0+YWxsb2NhdGUoKTsKLSAgICBFWFBFQ1RfRVEoMHUsIGlkNCk7Ci0gICAgYWxsb2NhdG9y
LT5yZWxlYXNlKGtGcmVlZElkICsgMXUpOwotICAgIGFsbG9jYXRvci0+cmVsZWFzZShrRnJlZWRJ
ZCArIDR1KTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQgKyAzdSk7Ci0gICAgYWxs
b2NhdG9yLT5yZWxlYXNlKGtGcmVlZElkICsgNXUpOwotICAgIGFsbG9jYXRvci0+cmVsZWFzZShr
RnJlZWRJZCArIDJ1KTsKLSAgICBHTHVpbnQgaWQ1ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdl
KDUpOwotICAgIEVYUEVDVF9FUShrRnJlZWRJZCArIDF1LCBpZDUpOwotfQotCi0vLyBDaGVja3Mg
dGhhdCBhbGxvY2F0aW5nIGEgcmFuZ2UgdGhhdCBleGNlZWRzIHVpbnQzMgotLy8gZG9lcyBub3Qg
d3JhcCBpbmNvcnJlY3RseSBhbmQgZmFpbHMuCi1URVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JU
ZXN0LCBBbGxvY2F0ZVJhbmdlTm9XcmFwSW5SYW5nZSkKLXsKLSAgICBjb25zdCB1aW50MzJfdCBr
TWF4UG9zc2libGVSYW5nZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsK
LSAgICBjb25zdCBHTHVpbnQga0FsbG9jSWQgICAgICAgICAgICA9IDEwdTsKLSAgICBhdXRvICph
bGxvY2F0b3IgICAgICAgICAgICAgICAgICA9IGdldEFsbG9jYXRvcigpOwotCi0gICAgR0x1aW50
IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa0FsbG9jSWQpOwotICAgIEVYUEVD
VF9FUShrQWxsb2NJZCwgaWQxKTsKLSAgICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0
ZVJhbmdlKGtNYXhQb3NzaWJsZVJhbmdlIC0gNXUpOwotICAgIEVYUEVDVF9FUSgwdSwgaWQyKTsK
LSAgICBHTHVpbnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKGtNYXhQb3NzaWJsZVJh
bmdlIC0ga0FsbG9jSWQpOwotICAgIEVYUEVDVF9FUShrQWxsb2NJZCArIDF1LCBpZDMpOwotfQot
Ci0vLyBDaGVjayBzcGVjaWFsIGNhc2VzIGZvciAwIHJhbmdlIGFsbG9jYXRpb25zIGFuZCB6ZXJv
IGhhbmRsZXMuCi1URVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBaZXJvSWRDYXNlcykK
LXsKLSAgICBhdXRvICphbGxvY2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsKLSAgICBFWFBFQ1RfRkFM
U0UoYWxsb2NhdG9yLT5pc1VzZWQoMCkpOwotICAgIEdMdWludCBpZDEgPSBhbGxvY2F0b3ItPmFs
bG9jYXRlQXRPckFib3ZlKDApOwotICAgIEVYUEVDVF9ORSgwdSwgaWQxKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoYWxsb2NhdG9yLT5pc1VzZWQoMCkpOwotICAgIGFsbG9jYXRvci0+cmVsZWFzZSgwKTsK
LSAgICBFWFBFQ1RfRkFMU0UoYWxsb2NhdG9yLT5pc1VzZWQoMCkpOwotICAgIEVYUEVDVF9UUlVF
KGFsbG9jYXRvci0+aXNVc2VkKGlkMSkpOwotICAgIGFsbG9jYXRvci0+cmVsZWFzZShpZDEpOwot
ICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZChpZDEpKTsKLX0KLQotfSAgLy8gbmFt
ZXNwYWNlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0luZm9Mb2cuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9JbmZvTG9nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RhY2RjZWJkMWIwMTY4
NmY0M2FjNGNkNWYxYjZlNzRlODA2MmU1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbmZvTG9nLmgKQEAgLTAsMCArMSw5MCBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIEluZm9Mb2cuaDogRGVmaW5lcyB0aGUgZ2w6OkluZm9Mb2cgY2xhc3MgdG8gaGFu
ZGxlIHRoZSBsb2dzIGdlbmVyYXRlZCB3aGVuCisvLyBjb21waWxpbmcvbGlua2luZyBzaGFkZXJz
IHNvIHVzZWZ1bCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4K
KworI2lmbmRlZiBMSUJBTkdMRV9JTkZPTE9HX0hfCisjZGVmaW5lIExJQkFOR0xFX0lORk9MT0df
SF8KKworbmFtZXNwYWNlIGdsCit7CisKK2NsYXNzIEluZm9Mb2cgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKK3sKKyAgcHVibGljOgorICAgIEluZm9Mb2coKTsKKyAgICB+SW5mb0xvZygpOworCisgICAg
c2l6ZV90IGdldExlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgZ2V0TG9nKEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKSBjb25zdDsKKworICAgIHZvaWQgYXBw
ZW5kU2FuaXRpemVkKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworICAgIHZvaWQgcmVzZXQoKTsKKwor
ICAgIC8vIFRoaXMgaGVscGVyIGNsYXNzIGVuc3VyZXMgd2UgYXBwZW5kIGEgbmV3bGluZSBhZnRl
ciB3cml0aW5nIGEgbGluZS4KKyAgICBjbGFzcyBTdHJlYW1IZWxwZXIgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKKyAgICB7CisgICAgICBwdWJsaWM6CisgICAgICAgIFN0cmVhbUhlbHBlcihTdHJlYW1I
ZWxwZXIgJiZyaHMpIDogbVN0cmVhbShyaHMubVN0cmVhbSkgeyByaHMubVN0cmVhbSA9IG51bGxw
dHI7IH0KKworICAgICAgICBTdHJlYW1IZWxwZXIgJm9wZXJhdG9yPShTdHJlYW1IZWxwZXIgJiZy
aHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChtU3RyZWFtLCByaHMubVN0cmVh
bSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB+U3Ry
ZWFtSGVscGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gV3JpdGUgbmV3bGluZSB3aGVu
IGRlc3Ryb3llZCBvbiB0aGUgc3RhY2sKKyAgICAgICAgICAgIGlmIChtU3RyZWFtKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICgqbVN0cmVhbSkgPDwgc3RkOjplbmRsOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
ICAgIFN0cmVhbUhlbHBlciAmb3BlcmF0b3I8PChjb25zdCBUICZ2YWx1ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgKCptU3RyZWFtKSA8PCB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICAgICAgfQorCisgICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgSW5m
b0xvZzsKKworICAgICAgICBTdHJlYW1IZWxwZXIoc3RkOjpzdHJpbmdzdHJlYW0gKnN0cmVhbSkg
OiBtU3RyZWFtKHN0cmVhbSkgeyBBU1NFUlQoc3RyZWFtKTsgfQorCisgICAgICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtICptU3RyZWFtOworICAgIH07CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
KyAgICBTdHJlYW1IZWxwZXIgb3BlcmF0b3I8PChjb25zdCBUICZ2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGVuc3VyZUluaXRpYWxpemVkKCk7CisgICAgICAgIFN0cmVhbUhlbHBlciBoZWxwZXIobUxh
enlTdHJlYW0uZ2V0KCkpOworICAgICAgICBoZWxwZXIgPDwgdmFsdWU7CisgICAgICAgIHJldHVy
biBoZWxwZXI7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgc3RyKCkgY29uc3QgeyByZXR1cm4g
bUxhenlTdHJlYW0gPyBtTGF6eVN0cmVhbS0+c3RyKCkgOiAiIjsgfQorCisgICAgYm9vbCBlbXB0
eSgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVJbml0aWFsaXplZCgpCisg
ICAgeworICAgICAgICBpZiAoIW1MYXp5U3RyZWFtKQorICAgICAgICB7CisgICAgICAgICAgICBt
TGF6eVN0cmVhbS5yZXNldChuZXcgc3RkOjpzdHJpbmdzdHJlYW0oKSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmdzdHJlYW0+IG1MYXp5U3RyZWFt
OworfTsKKworfSAgLy8gbmFtZXNwYWNlIGdsCisKKyNlbmRpZiAgLy8gTElCQU5HTEVfSU5GT0xP
R19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL01l
bW9yeU9iamVjdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVt
b3J5T2JqZWN0LmNwcAppbmRleCA1ZTE1ZjEyODcwZWM5M2ExMzBhY2I0MWUwNTZjN2FhZjdiMjY2
NWFhLi5jODU0ZmFmOGUyZTMxZGU2MWZlY2IwZWEzODY1ZDc0MDdkMDFjYmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmNw
cApAQCAtMTUsNyArMTUsMTAgQEAgbmFtZXNwYWNlIGdsCiB7CiAKIE1lbW9yeU9iamVjdDo6TWVt
b3J5T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBNZW1vcnlPYmplY3RJRCBpZCkK
LSAgICA6IFJlZkNvdW50T2JqZWN0KGZhY3RvcnktPmdlbmVyYXRlU2VyaWFsKCksIGlkKSwgbUlt
cGxlbWVudGF0aW9uKGZhY3RvcnktPmNyZWF0ZU1lbW9yeU9iamVjdCgpKQorICAgIDogUmVmQ291
bnRPYmplY3QoZmFjdG9yeS0+Z2VuZXJhdGVTZXJpYWwoKSwgaWQpLAorICAgICAgbUltcGxlbWVu
dGF0aW9uKGZhY3RvcnktPmNyZWF0ZU1lbW9yeU9iamVjdCgpKSwKKyAgICAgIG1JbW11dGFibGUo
ZmFsc2UpLAorICAgICAgbURlZGljYXRlZE1lbW9yeShmYWxzZSkKIHt9CiAKIE1lbW9yeU9iamVj
dDo6fk1lbW9yeU9iamVjdCgpIHt9CkBAIC0yNSwxMiArMjgsMzEgQEAgdm9pZCBNZW1vcnlPYmpl
Y3Q6Om9uRGVzdHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgIG1JbXBsZW1lbnRhdGlv
bi0+b25EZXN0cm95KGNvbnRleHQpOwogfQogCithbmdsZTo6UmVzdWx0IE1lbW9yeU9iamVjdDo6
c2V0RGVkaWNhdGVkTWVtb3J5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGJvb2wgZGVkaWNhdGVk
TWVtb3J5KQoreworICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPnNldERlZGljYXRlZE1l
bW9yeShjb250ZXh0LCBkZWRpY2F0ZWRNZW1vcnkpKTsKKyAgICBtRGVkaWNhdGVkTWVtb3J5ID0g
ZGVkaWNhdGVkTWVtb3J5OworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30K
KwogYW5nbGU6OlJlc3VsdCBNZW1vcnlPYmplY3Q6OmltcG9ydEZkKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpCiB7Ci0gICAg
cmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+aW1wb3J0RmQoY29udGV4dCwgc2l6ZSwgaGFuZGxlVHlw
ZSwgZmQpOworICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmltcG9ydEZkKGNvbnRleHQs
IHNpemUsIGhhbmRsZVR5cGUsIGZkKSk7CisgICAgbUltbXV0YWJsZSA9IHRydWU7CisgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCithbmdsZTo6UmVzdWx0IE1lbW9yeU9i
amVjdDo6aW1wb3J0WmlyY29uSGFuZGxlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxl
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGhhbmRsZSkKK3sKKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0aW9uLT5pbXBvcnRaaXJj
b25IYW5kbGUoY29udGV4dCwgc2l6ZSwgaGFuZGxlVHlwZSwgaGFuZGxlKSk7CisgICAgbUltbXV0
YWJsZSA9IHRydWU7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCiB9
ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9NZW1vcnlPYmplY3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9NZW1vcnlPYmplY3QuaAppbmRleCA3YzlhOGE1MmI1ZGYzYzA2YWUwNjg0OTg4MzAx
NzViYjVhYTdkMjM0Li4zZTM2MjYyYzU0ZmQxN2FlN2NjZGQxMzZhOTE2NDA4Y2U0MDU4NWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5T2Jq
ZWN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL01lbW9yeU9i
amVjdC5oCkBAIC0zNCwxMCArMzQsMjIgQEAgY2xhc3MgTWVtb3J5T2JqZWN0IGZpbmFsIDogcHVi
bGljIFJlZkNvdW50T2JqZWN0PE1lbW9yeU9iamVjdElEPgogCiAgICAgcng6Ok1lbW9yeU9iamVj
dEltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUltcGxlbWVudGF0aW9u
LmdldCgpOyB9CiAKKyAgICBib29sIGlzSW1tdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbUltbXV0
YWJsZTsgfQorCisgICAgYW5nbGU6OlJlc3VsdCBzZXREZWRpY2F0ZWRNZW1vcnkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgYm9vbCBkZWRpY2F0ZWRNZW1vcnkpOworICAgIGJvb2wgaXNEZWRpY2F0
ZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtRGVkaWNhdGVkTWVtb3J5OyB9CisKICAgICBhbmds
ZTo6UmVzdWx0IGltcG9ydEZkKENvbnRleHQgKmNvbnRleHQsIEdMdWludDY0IHNpemUsIEhhbmRs
ZVR5cGUgaGFuZGxlVHlwZSwgR0xpbnQgZmQpOworICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0Wmly
Y29uSGFuZGxlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGhhbmRsZSk7CiAKICAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8cng6Ok1lbW9yeU9iamVjdEltcGw+IG1JbXBsZW1lbnRhdGlvbjsKKworICAgIGJvb2wgbUlt
bXV0YWJsZTsKKyAgICBib29sIG1EZWRpY2F0ZWRNZW1vcnk7CiB9OwogCiB9ICAvLyBuYW1lc3Bh
Y2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9N
ZW1vcnlQcm9ncmFtQ2FjaGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL01lbW9yeVByb2dyYW1DYWNoZS5jcHAKaW5kZXggYWMxYWM1M2NmM2ZlNGVhOGY5NzRhYjI4
NzczODhhNjc4NTRkMTQyNi4uMjk5YjJlMzg2NDUyOGRlZjA1YzlhZGM3ZDM1YTRjN2RhZWQyM2Ix
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL01lbW9y
eVByb2dyYW1DYWNoZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL01lbW9yeVByb2dyYW1DYWNoZS5jcHAKQEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIE1lbW9y
eVByb2dyYW1DYWNoZTo6Q29tcHV0ZUhhc2goY29uc3QgQ29udGV4dCAqY29udGV4dCwKIAogICAg
IC8vIEhhc2ggcHJlLWxpbmsgcHJvZ3JhbSBwcm9wZXJ0aWVzLgogICAgIGhhc2hTdHJlYW0gPDwg
cHJvZ3JhbS0+Z2V0QXR0cmlidXRlQmluZGluZ3MoKSA8PCBwcm9ncmFtLT5nZXRVbmlmb3JtTG9j
YXRpb25CaW5kaW5ncygpCi0gICAgICAgICAgICAgICA8PCBwcm9ncmFtLT5nZXRGcmFnbWVudElu
cHV0QmluZGluZ3MoKQogICAgICAgICAgICAgICAgPDwgcHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcygpCiAgICAgICAgICAgICAgICA8PCBwcm9ncmFt
LT5nZXRTdGF0ZSgpLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpCiAgICAgICAgICAg
ICAgICA8PCBwcm9ncmFtLT5nZXRTdGF0ZSgpLmdldE91dHB1dExvY2F0aW9ucygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvT1dORVJTIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL09XTkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjFiYzc3
M2NmN2VlNDY4Njc1MDEyYjY3Y2Y3ZTUyZmE2MzdlN2JhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL09XTkVSUwpAQCAtMCwwICsxLDIgQEAK
K3Blci1maWxlICpjYXB0dXJlKj1jbm9ydGhyb3BAZ29vZ2xlLmNvbQorcGVyLWZpbGUgKkNhcHR1
cmUqPWNub3J0aHJvcEBnb29nbGUuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvT2JzZXJ2ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9PYnNlcnZlci5oCmluZGV4IGIwNmU3MDViOTAwMzVkMzgyNTJlZDdiNGMzNDUz
MjQzN2VhZDg0MGUuLjUxYzgyMDNhOTdkNGMwZTg2MTg4ZWMwY2NiZmIwYTE5NTgyOWY2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PYnNlcnZlci5oCkBA
IC0zMyw3ICszMyw3IEBAIHVzaW5nIFN1YmplY3RJbmRleCA9IHNpemVfdDsKIGVudW0gY2xhc3Mg
U3ViamVjdE1lc3NhZ2UKIHsKICAgICAvLyBVc2VkIGJ5IGdsOjpWZXJ0ZXhBcnJheSB0byBub3Rp
ZnkgZ2w6OkNvbnRleHQgb2YgYSBnbDo6QnVmZmVyIGJpbmRpbmcgY291bnQgY2hhbmdlLiBUcmln
Z2VycwotICAgIC8vIGEgdmFsaWRhdGlvbiBjYWNoZSB1cGRhdGUuCisgICAgLy8gYSB2YWxpZGF0
aW9uIGNhY2hlIHVwZGF0ZS4gQWxzbyB1c2VkIGJ5IGdsOjpUZXh0dXJlIHRvIG5vdGlmeSBnbDo6
RnJhbWVidWZmZXIgb2YgbG9vcHMuCiAgICAgQmluZGluZ0NoYW5nZWQsCiAKICAgICAvLyBPbmx5
IHRoZSBjb250ZW50cyAocGl4ZWxzLCBieXRlcywgZXRjKSBjaGFuZ2VkIGluIHRoaXMgU3ViamVj
dC4gRGlzdGluY3QgZnJvbSB0aGUgb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvT3ZlcmxheS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvT3ZlcmxheS5jcHAKaW5kZXggMmRlNjVkMjgyMWViM2I4OGY0ODg1YmYz
NzRkMzg0OTlmYTYyMzk4My4uNTJmYzQ3MmFhMWFlODU3MTliMDI4ZjEzZDI3NmRlOGQ5ZDMyYjFh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJs
YXkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5
LmNwcApAQCAtOSw2ICs5LDcgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL092ZXJsYXkuaCIKIAor
I2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vc3lzdGVt
X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL092ZXJsYXlfZm9udF9hdXRvZ2VuLmgiCkBAIC0yNSw3ICsyNiw3IEBAIGNvbnN0ZXhwciBz
dGQ6OnBhaXI8Y29uc3QgY2hhciAqLCBXaWRnZXRJZD4ga1dpZGdldE5hbWVzW10gPSB7CiAgICAg
eyJGUFMiLCBXaWRnZXRJZDo6RlBTfSwKICAgICB7IlZ1bGthbkxhc3RWYWxpZGF0aW9uTWVzc2Fn
ZSIsIFdpZGdldElkOjpWdWxrYW5MYXN0VmFsaWRhdGlvbk1lc3NhZ2V9LAogICAgIHsiVnVsa2Fu
VmFsaWRhdGlvbk1lc3NhZ2VDb3VudCIsIFdpZGdldElkOjpWdWxrYW5WYWxpZGF0aW9uTWVzc2Fn
ZUNvdW50fSwKLSAgICB7IlZ1bGthbkNvbW1hbmRHcmFwaFNpemUiLCBXaWRnZXRJZDo6VnVsa2Fu
Q29tbWFuZEdyYXBoU2l6ZX0sCisgICAgeyJWdWxrYW5SZW5kZXJQYXNzQ291bnQiLCBXaWRnZXRJ
ZDo6VnVsa2FuUmVuZGVyUGFzc0NvdW50fSwKICAgICB7IlZ1bGthblNlY29uZGFyeUNvbW1hbmRC
dWZmZXJQb29sV2FzdGUiLCBXaWRnZXRJZDo6VnVsa2FuU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBv
b2xXYXN0ZX0sCiB9OwogfSAgLy8gbmFtZXNwYWNlCkBAIC02MCwxOCArNjEsMTMgQEAgdm9pZCBP
dmVybGF5OjpkZXN0cm95KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogCiB2b2lkIE92ZXJs
YXk6OmVuYWJsZU92ZXJsYXlXaWRnZXRzRnJvbUVudmlyb25tZW50KCkKIHsKLSAgICBzdGQ6Omlz
dHJpbmdzdHJlYW0gYW5nbGVPdmVybGF5V2lkZ2V0cyhhbmdsZTo6R2V0RW52aXJvbm1lbnRWYXIo
IkFOR0xFX09WRVJMQVkiKSk7Ci0KLSAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gZW5hYmxlZFdp
ZGdldHM7Ci0gICAgc3RkOjpzdHJpbmcgd2lkZ2V0OwotICAgIHdoaWxlIChnZXRsaW5lKGFuZ2xl
T3ZlcmxheVdpZGdldHMsIHdpZGdldCwgJzonKSkKLSAgICB7Ci0gICAgICAgIGVuYWJsZWRXaWRn
ZXRzLmluc2VydCh3aWRnZXQpOwotICAgIH0KKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
ZW5hYmxlZFdpZGdldHMgPQorICAgICAgICBhbmdsZTo6R2V0U3RyaW5nc0Zyb21FbnZpcm9ubWVu
dFZhcigiQU5HTEVfT1ZFUkxBWSIsICI6Iik7CiAKICAgICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjxj
b25zdCBjaGFyICosIFdpZGdldElkPiAmd2lkZ2V0TmFtZSA6IGtXaWRnZXROYW1lcykKICAgICB7
Ci0gICAgICAgIGlmIChlbmFibGVkV2lkZ2V0cy5jb3VudCh3aWRnZXROYW1lLmZpcnN0KSA+IDAp
CisgICAgICAgIGlmIChzdGQ6OmZpbmQoZW5hYmxlZFdpZGdldHMuYmVnaW4oKSwgZW5hYmxlZFdp
ZGdldHMuZW5kKCksIHdpZGdldE5hbWUuZmlyc3QpICE9CisgICAgICAgICAgICBlbmFibGVkV2lk
Z2V0cy5lbmQoKSkKICAgICAgICAgewogICAgICAgICAgICAgbVN0YXRlLm1PdmVybGF5V2lkZ2V0
c1t3aWRnZXROYW1lLnNlY29uZF0tPmVuYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgKyttU3Rh
dGUubUVuYWJsZWRXaWRnZXRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9PdmVybGF5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvT3ZlcmxheS5oCmluZGV4IDc2NjJjZjRiMjk5MjM5ODMxMjJmMWZhZmI2ZWMyMDhj
NDIxNTVmMDguLjE1YWY2YTI2OTMxODE1NjgzMzQ3NThkODM4MzNkMjcwNDZmY2NiMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXkuaApAQCAtMTI3
LDkgKzEyNywxOSBAQCBjbGFzcyBEdW1teU92ZXJsYXkKIH07CiAKICNpZiBBTkdMRV9FTkFCTEVf
T1ZFUkxBWQotdXNpbmcgT3ZlcmxheVR5cGUgPSBPdmVybGF5OwordXNpbmcgT3ZlcmxheVR5cGUg
ICAgICAgICAgICA9IE92ZXJsYXk7Cit1c2luZyBDb3VudFdpZGdldCAgICAgICAgICAgID0gb3Zl
cmxheTo6Q291bnQ7Cit1c2luZyBQZXJTZWNvbmRXaWRnZXQgICAgICAgID0gb3ZlcmxheTo6UGVy
U2Vjb25kOwordXNpbmcgUnVubmluZ0dyYXBoV2lkZ2V0ICAgICA9IG92ZXJsYXk6OlJ1bm5pbmdH
cmFwaDsKK3VzaW5nIFJ1bm5pbmdIaXN0b2dyYW1XaWRnZXQgPSBvdmVybGF5OjpSdW5uaW5nSGlz
dG9ncmFtOwordXNpbmcgVGV4dFdpZGdldCAgICAgICAgICAgICA9IG92ZXJsYXk6OlRleHQ7CiAj
ZWxzZSAgIC8vICFBTkdMRV9FTkFCTEVfT1ZFUkxBWQotdXNpbmcgT3ZlcmxheVR5cGUgPSBEdW1t
eU92ZXJsYXk7Cit1c2luZyBPdmVybGF5VHlwZSAgICAgICAgICAgID0gRHVtbXlPdmVybGF5Owor
dXNpbmcgQ291bnRXaWRnZXQgICAgICAgICAgICA9IGNvbnN0IG92ZXJsYXk6OkR1bW15OwordXNp
bmcgUGVyU2Vjb25kV2lkZ2V0ICAgICAgICA9IGNvbnN0IG92ZXJsYXk6OkR1bW15OwordXNpbmcg
UnVubmluZ0dyYXBoV2lkZ2V0ICAgICA9IGNvbnN0IG92ZXJsYXk6OkR1bW15OwordXNpbmcgUnVu
bmluZ0hpc3RvZ3JhbVdpZGdldCA9IGNvbnN0IG92ZXJsYXk6OkR1bW15OwordXNpbmcgVGV4dFdp
ZGdldCAgICAgICAgICAgICA9IGNvbnN0IG92ZXJsYXk6OkR1bW15OwogI2VuZGlmICAvLyBBTkdM
RV9FTkFCTEVfT1ZFUkxBWQogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5V2lkZ2V0cy5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvT3ZlcmxheVdpZGdldHMuY3BwCmluZGV4
IDUwY2ZjYzFiZTE2MmNmYjVhYjc4MGVjNDEwNWJkNTg5NzMzYjJmMGUuLmU0Y2E1YTExZmU0ODFj
OTcxM2JhZjc5MTdkNjZhZGVmNmFhOTcxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5V2lkZ2V0cy5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXlXaWRnZXRzLmNwcApAQCAtMjA1LDYgKzIw
NSwxMSBAQCBjbGFzcyBBcHBlbmRXaWRnZXREYXRhSGVscGVyCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0V2lkZ2V0RGF0YSAqdGV4dFdpZGdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoV2lkZ2V0RGF0
YSAqZ3JhcGhXaWRnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPdmVybGF5V2lkZ2V0Q291bnRzICp3aWRnZXRDb3VudHMpOworICAgIHN0YXRpYyB2b2lk
IEFwcGVuZFZ1bGthblJlbmRlclBhc3NDb3VudChjb25zdCBvdmVybGF5OjpXaWRnZXQgKndpZGdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJmltYWdlRXh0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0V2lkZ2V0RGF0YSAqdGV4dFdpZGdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhXaWRnZXREYXRhICpncmFwaFdpZGdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmxheVdpZGdl
dENvdW50cyAqd2lkZ2V0Q291bnRzKTsKICAgICBzdGF0aWMgdm9pZCBBcHBlbmRWdWxrYW5TZWNv
bmRhcnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlKGNvbnN0IG92ZXJsYXk6OldpZGdldCAqd2lkZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmltYWdlRXh0ZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFdpZGdldERhdGEg
KnRleHRXaWRnZXQsCkBAIC0zMzUsNiArMzQwLDMzIEBAIHZvaWQgQXBwZW5kV2lkZ2V0RGF0YUhl
bHBlcjo6QXBwZW5kVnVsa2FuQ29tbWFuZEdyYXBoU2l6ZShjb25zdCBvdmVybGF5OjpXaWRnZXQK
ICAgICB9CiB9CiAKK3ZvaWQgQXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6QXBwZW5kVnVsa2FuUmVu
ZGVyUGFzc0NvdW50KGNvbnN0IG92ZXJsYXk6OldpZGdldCAqd2lkZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4
dGVudHMgJmltYWdlRXh0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dFdpZGdldERhdGEgKnRleHRXaWRnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaFdp
ZGdldERhdGEgKmdyYXBoV2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmxheVdpZGdldENvdW50cyAqd2lkZ2V0Q291bnRz
KQoreworICAgIGNvbnN0IG92ZXJsYXk6OlJ1bm5pbmdHcmFwaCAqcmVuZGVyUGFzc0NvdW50ID0K
KyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3Qgb3ZlcmxheTo6UnVubmluZ0dyYXBoICo+KHdpZGdl
dCk7CisKKyAgICBjb25zdCBzaXplX3QgbWF4VmFsdWUgICAgID0gKnN0ZDo6bWF4X2VsZW1lbnQo
cmVuZGVyUGFzc0NvdW50LT5ydW5uaW5nVmFsdWVzLmJlZ2luKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUGFzc0NvdW50LT5ydW5uaW5nVmFs
dWVzLmVuZCgpKTsKKyAgICBjb25zdCBpbnQzMl90IGdyYXBoSGVpZ2h0ID0gc3RkOjphYnMod2lk
Z2V0LT5jb29yZHNbM10gLSB3aWRnZXQtPmNvb3Jkc1sxXSk7CisgICAgY29uc3QgZmxvYXQgZ3Jh
cGhTY2FsZSAgICA9IHN0YXRpY19jYXN0PGZsb2F0PihncmFwaEhlaWdodCkgLyBtYXhWYWx1ZTsK
KworICAgIEFwcGVuZEdyYXBoQ29tbW9uKHdpZGdldCwgaW1hZ2VFeHRlbnQsIHJlbmRlclBhc3ND
b3VudC0+cnVubmluZ1ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICByZW5kZXJQYXNzQ291
bnQtPmxhc3RWYWx1ZUluZGV4ICsgMSwgZ3JhcGhTY2FsZSwgZ3JhcGhXaWRnZXQsIHdpZGdldENv
dW50cyk7CisKKyAgICBpZiAoKCp3aWRnZXRDb3VudHMpW1dpZGdldEludGVybmFsVHlwZTo6VGV4
dF0gPAorICAgICAgICBrV2lkZ2V0SW50ZXJuYWxUeXBlTWF4V2lkZ2V0c1tXaWRnZXRJbnRlcm5h
bFR5cGU6OlRleHRdKQorICAgIHsKKyAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHRleHQ7Cisg
ICAgICAgIHRleHQgPDwgIlJlbmRlclBhc3MgQ291bnQgKE1heDogIiA8PCBtYXhWYWx1ZSA8PCAi
KSI7CisgICAgICAgIEFwcGVuZFRleHRDb21tb24oJnJlbmRlclBhc3NDb3VudC0+ZGVzY3JpcHRp
b24sIGltYWdlRXh0ZW50LCB0ZXh0LnN0cigpLCB0ZXh0V2lkZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZGdldENvdW50cyk7CisgICAgfQorfQorCiB2b2lkIEFwcGVuZFdpZGdldERh
dGFIZWxwZXI6OkFwcGVuZFZ1bGthblNlY29uZGFyeUNvbW1hbmRCdWZmZXJQb29sV2FzdGUoCiAg
ICAgY29uc3Qgb3ZlcmxheTo6V2lkZ2V0ICp3aWRnZXQsCiAgICAgY29uc3QgZ2w6OkV4dGVudHMg
JmltYWdlRXh0ZW50LApAQCAtMzkxLDggKzQyMyw4IEBAIGNvbnN0ZXhwciBhbmdsZTo6UGFja2Vk
RW51bU1hcDxXaWRnZXRJZCwgQXBwZW5kV2lkZ2V0RGF0YUZ1bmM+IGtXaWRnZXRJZFRvQXBwZW5k
CiAgICAgIG92ZXJsYXlfaW1wbDo6QXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6QXBwZW5kVnVsa2Fu
TGFzdFZhbGlkYXRpb25NZXNzYWdlfSwKICAgICB7V2lkZ2V0SWQ6OlZ1bGthblZhbGlkYXRpb25N
ZXNzYWdlQ291bnQsCiAgICAgIG92ZXJsYXlfaW1wbDo6QXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6
QXBwZW5kVnVsa2FuVmFsaWRhdGlvbk1lc3NhZ2VDb3VudH0sCi0gICAge1dpZGdldElkOjpWdWxr
YW5Db21tYW5kR3JhcGhTaXplLAotICAgICBvdmVybGF5X2ltcGw6OkFwcGVuZFdpZGdldERhdGFI
ZWxwZXI6OkFwcGVuZFZ1bGthbkNvbW1hbmRHcmFwaFNpemV9LAorICAgIHtXaWRnZXRJZDo6VnVs
a2FuUmVuZGVyUGFzc0NvdW50LAorICAgICBvdmVybGF5X2ltcGw6OkFwcGVuZFdpZGdldERhdGFI
ZWxwZXI6OkFwcGVuZFZ1bGthblJlbmRlclBhc3NDb3VudH0sCiAgICAge1dpZGdldElkOjpWdWxr
YW5TZWNvbmRhcnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlLAogICAgICBvdmVybGF5X2ltcGw6OkFw
cGVuZFdpZGdldERhdGFIZWxwZXI6OkFwcGVuZFZ1bGthblNlY29uZGFyeUNvbW1hbmRCdWZmZXJQ
b29sV2FzdGV9LAogfTsKQEAgLTQ5NSw2ICs1MjcsNyBAQCB2b2lkIE92ZXJsYXlTdGF0ZTo6Zmls
bFdpZGdldERhdGEoY29uc3QgZ2w6OkV4dGVudHMgJmltYWdlRXh0ZW50cywKICAgICAgICAgfQog
CiAgICAgICAgIEFwcGVuZFdpZGdldERhdGFGdW5jIGFwcGVuZEZ1bmMgPSBrV2lkZ2V0SWRUb0Fw
cGVuZERhdGFGdW5jTWFwW2lkXTsKKyAgICAgICAgQVNTRVJUKGFwcGVuZEZ1bmMpOwogICAgICAg
ICBhcHBlbmRGdW5jKHdpZGdldC5nZXQoKSwgaW1hZ2VFeHRlbnRzLAogICAgICAgICAgICAgICAg
ICAgICZ0ZXh0V2lkZ2V0cy0+d2lkZ2V0c1t3aWRnZXRDb3VudHNbV2lkZ2V0SW50ZXJuYWxUeXBl
OjpUZXh0XV0sCiAgICAgICAgICAgICAgICAgICAgJmdyYXBoV2lkZ2V0cy0+d2lkZ2V0c1t3aWRn
ZXRDb3VudHNbV2lkZ2V0SW50ZXJuYWxUeXBlOjpHcmFwaF1dLCAmd2lkZ2V0Q291bnRzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5V2lk
Z2V0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXlXaWRn
ZXRzLmgKaW5kZXggMDg1ZjJmNDE3ODZkNjI5NjU3NjYwZTRiYjZlY2E5ZWZlZGVmMjMzZC4uNzIy
MmEzM2Y5NTFjZTE1NjNkYmI2NzFkMDYxODg0MTU0N2I1YTQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXlXaWRnZXRzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXlXaWRnZXRzLmgKQEAgLTU3
LDggKzU3LDggQEAgZW51bSBjbGFzcyBXaWRnZXRJZAogICAgIFZ1bGthbkxhc3RWYWxpZGF0aW9u
TWVzc2FnZSwKICAgICAvLyBOdW1iZXIgb2YgdmFsaWRhdGlvbiBlcnJvcnMgYW5kIHdhcm5pbmdz
IChDb3VudCkuCiAgICAgVnVsa2FuVmFsaWRhdGlvbk1lc3NhZ2VDb3VudCwKLSAgICAvLyBOdW1i
ZXIgb2Ygbm9kZXMgaW4gY29tbWFuZCBncmFwaCAoUnVubmluZ0dyYXBoKS4KLSAgICBWdWxrYW5D
b21tYW5kR3JhcGhTaXplLAorICAgIC8vIE51bWJlciBvZiBSZW5kZXJQYXNzZXMgaW4gYSBmcmFt
ZSAoUnVubmluZ0dyYXBoKS4KKyAgICBWdWxrYW5SZW5kZXJQYXNzQ291bnQsCiAgICAgLy8gU2Vj
b25kYXJ5IENvbW1hbmQgQnVmZmVyIHBvb2wgbWVtb3J5IHdhc3RlIChSdW5uaW5nSGlzdG9ncmFt
KS4KICAgICBWdWxrYW5TZWNvbmRhcnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlLAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvT3ZlcmxheV9hdXRvZ2Vu
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5X2F1dG9n
ZW4uY3BwCmluZGV4IGYyMDJkMGU2Mzc0NDc3NWViOWE1ODc3NTQzMjE4YTU2ZDdlODExODUuLmYx
N2ZkYmViNzUyYzJjNTI3ZTA4ZTVhM2NmN2FlZTA0ZjFhNDY1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5X2F1dG9nZW4uY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5X2F1dG9nZW4uY3Bw
CkBAIC0xLDcgKzEsNyBAQAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdl
bmVyYXRlZCBieSBnZW5fb3ZlcmxheV93aWRnZXRzLnB5IHVzaW5nIGRhdGEgZnJvbSBvdmVybGF5
X3dpZGdldHMuanNvbi4KIC8vCi0vLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
IC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTIzLDEzICsxMjMsMTMgQEAg
dm9pZCBPdmVybGF5Ojppbml0T3ZlcmxheVdpZGdldHMoKQogICAgICAgICAgICAgd2lkZ2V0LT5j
b2xvclsyXSAgPSAwLjA7CiAgICAgICAgICAgICB3aWRnZXQtPmNvbG9yWzNdICA9IDAuNzg0MzEz
NzI1NDk7CiAgICAgICAgIH0KLSAgICAgICAgbVN0YXRlLm1PdmVybGF5V2lkZ2V0c1tXaWRnZXRJ
ZDo6VnVsa2FuQ29tbWFuZEdyYXBoU2l6ZV0ucmVzZXQod2lkZ2V0KTsKKyAgICAgICAgbVN0YXRl
Lm1PdmVybGF5V2lkZ2V0c1tXaWRnZXRJZDo6VnVsa2FuUmVuZGVyUGFzc0NvdW50XS5yZXNldCh3
aWRnZXQpOwogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBpbnQzMl90IGZvbnRTaXplID0g
R2V0Rm9udFNpemUoa0ZvbnRMYXllclNtYWxsLCBrTGFyZ2VGb250KTsKICAgICAgICAgICAgIGNv
bnN0IGludDMyX3Qgb2Zmc2V0WCA9Ci0gICAgICAgICAgICAgICAgbVN0YXRlLm1PdmVybGF5V2lk
Z2V0c1tXaWRnZXRJZDo6VnVsa2FuQ29tbWFuZEdyYXBoU2l6ZV0tPmNvb3Jkc1swXTsKKyAgICAg
ICAgICAgICAgICBtU3RhdGUubU92ZXJsYXlXaWRnZXRzW1dpZGdldElkOjpWdWxrYW5SZW5kZXJQ
YXNzQ291bnRdLT5jb29yZHNbMF07CiAgICAgICAgICAgICBjb25zdCBpbnQzMl90IG9mZnNldFkg
PQotICAgICAgICAgICAgICAgIG1TdGF0ZS5tT3ZlcmxheVdpZGdldHNbV2lkZ2V0SWQ6OlZ1bGth
bkNvbW1hbmRHcmFwaFNpemVdLT5jb29yZHNbMV07CisgICAgICAgICAgICAgICAgbVN0YXRlLm1P
dmVybGF5V2lkZ2V0c1tXaWRnZXRJZDo6VnVsa2FuUmVuZGVyUGFzc0NvdW50XS0+Y29vcmRzWzFd
OwogICAgICAgICAgICAgY29uc3QgaW50MzJfdCB3aWR0aCAgPSA0MCAqIGtGb250R2x5cGhXaWR0
aHNbZm9udFNpemVdOwogICAgICAgICAgICAgY29uc3QgaW50MzJfdCBoZWlnaHQgPSBrRm9udEds
eXBoSGVpZ2h0c1tmb250U2l6ZV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9QYXRoLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9QYXRoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE0YWZjNjIz
MDRkMzRiY2Y0ZWYyOWY3MTNkOTQ2MzgyNmEwOWI3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvUGF0aC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IDIwMDIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0v
LyBQYXRoLmg6IERlZmluZXMgdGhlIGdsOjpQYXRoIGNsYXNzLCByZXByZXNlbnRpbmcgQ0hST01J
VU1fcGF0aF9yZW5kZXJpbmcKLS8vIHBhdGggb2JqZWN0LgotCi0jaW5jbHVkZSAibGliQU5HTEUv
UGF0aC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmgiCi0KLSNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKLQotbmFt
ZXNwYWNlIGdsCi17Ci0KLVBhdGg6OlBhdGgocng6OlBhdGhJbXBsICppbXBsKQotICAgIDogbVBh
dGgoaW1wbCksCi0gICAgICBtSGFzRGF0YShmYWxzZSksCi0gICAgICBtRW5kQ2FwcyhHTF9GTEFU
X0NIUk9NSVVNKSwKLSAgICAgIG1Kb2luU3R5bGUoR0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNKSwK
LSAgICAgIG1TdHJva2VXaWR0aCgxLjBmKSwKLSAgICAgIG1TdHJva2VCb3VuZCgwLjJmKSwKLSAg
ICAgIG1NaXRlckxpbWl0KDQuMGYpCi17fQotCi1QYXRoOjp+UGF0aCgpCi17Ci0gICAgZGVsZXRl
IG1QYXRoOwotfQotCi1hbmdsZTo6UmVzdWx0IFBhdGg6OnNldENvbW1hbmRzKEdMc2l6ZWkgbnVt
Q29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUg
KmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNv
b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQotewot
ICAgIEFOR0xFX1RSWShtUGF0aC0+c2V0Q29tbWFuZHMobnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBu
dW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKSk7Ci0KLSAgICBtSGFzRGF0YSA9IHRydWU7Ci0K
LSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUGF0aDo6c2V0
U3Ryb2tlV2lkdGgoR0xmbG9hdCB3aWR0aCkKLXsKLSAgICBtU3Ryb2tlV2lkdGggPSB3aWR0aDsK
LSAgICBtUGF0aC0+c2V0UGF0aFBhcmFtZXRlcihHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlV
TSwgbVN0cm9rZVdpZHRoKTsKLX0KLQotdm9pZCBQYXRoOjpzZXRTdHJva2VCb3VuZChHTGZsb2F0
IGJvdW5kKQotewotICAgIG1TdHJva2VCb3VuZCA9IGNsYW1wKGJvdW5kLCAwLjBmLCAxLjBmKTsK
LSAgICBtUGF0aC0+c2V0UGF0aFBhcmFtZXRlcihHTF9QQVRIX1NUUk9LRV9CT1VORF9DSFJPTUlV
TSwgbVN0cm9rZUJvdW5kKTsKLX0KLQotdm9pZCBQYXRoOjpzZXRFbmRDYXBzKEdMZW51bSB0eXBl
KQotewotICAgIG1FbmRDYXBzID0gdHlwZTsKLSAgICBtUGF0aC0+c2V0UGF0aFBhcmFtZXRlcihH
TF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLCBzdGF0aWNfY2FzdDxHTGZsb2F0Pih0eXBlKSk7Ci19
Ci0KLXZvaWQgUGF0aDo6c2V0Sm9pblN0eWxlKEdMZW51bSB0eXBlKQotewotICAgIG1Kb2luU3R5
bGUgPSB0eXBlOwotICAgIG1QYXRoLT5zZXRQYXRoUGFyYW1ldGVyKEdMX1BBVEhfSk9JTl9TVFlM
RV9DSFJPTUlVTSwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4odHlwZSkpOwotfQotCi12b2lkIFBhdGg6
OnNldE1pdGVyTGltaXQoR0xmbG9hdCB2YWx1ZSkKLXsKLSAgICBtTWl0ZXJMaW1pdCA9IHZhbHVl
OwotICAgIG1QYXRoLT5zZXRQYXRoUGFyYW1ldGVyKEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01J
VU0sIHZhbHVlKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGF0aC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzZiM2VhMzk1NmY3YzdlYjgyYTNjODc5OTA3MWRlOGU5NWJhMmJjMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUGF0aC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAyMDAyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLQotLy8gUGF0aC5oOiBEZWZpbmVzIHRoZSBnbDo6UGF0aCBjbGFzcywgcmVwcmVzZW50aW5n
IENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0vLyBwYXRoIG9iamVjdC4KLQotI2lmbmRlZiBMSUJB
TkdMRV9QQVRIX0hfCi0jZGVmaW5lIExJQkFOR0xFX1BBVEhfSF8KLQotI2luY2x1ZGUgImFuZ2xl
X2dsLmgiCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9FcnJvci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCi0KLW5hbWVz
cGFjZSByeAotewotY2xhc3MgUGF0aEltcGw7Ci19Ci0KLW5hbWVzcGFjZSBnbAotewotY2xhc3Mg
UGF0aCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgUGF0aChy
eDo6UGF0aEltcGwgKmltcGwpOwotCi0gICAgflBhdGgoKTsKLQotICAgIGFuZ2xlOjpSZXN1bHQg
c2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqY29vcmRzKTsKLQotICAgIHZvaWQgc2V0U3Ryb2tlV2lkdGgoR0xmbG9hdCB3aWR0aCk7Ci0g
ICAgdm9pZCBzZXRTdHJva2VCb3VuZChHTGZsb2F0IGJvdW5kKTsKLSAgICB2b2lkIHNldEVuZENh
cHMoR0xlbnVtIHR5cGUpOwotICAgIHZvaWQgc2V0Sm9pblN0eWxlKEdMZW51bSB0eXBlKTsKLSAg
ICB2b2lkIHNldE1pdGVyTGltaXQoR0xmbG9hdCB2YWx1ZSk7Ci0KLSAgICBHTGZsb2F0IGdldFN0
cm9rZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbVN0cm9rZVdpZHRoOyB9Ci0gICAgR0xmbG9hdCBn
ZXRTdHJva2VCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1TdHJva2VCb3VuZDsgfQotICAgIEdMZmxv
YXQgZ2V0TWl0ZXJMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1NaXRlckxpbWl0OyB9Ci0gICAgR0xl
bnVtIGdldEVuZENhcHMoKSBjb25zdCB7IHJldHVybiBtRW5kQ2FwczsgfQotICAgIEdMZW51bSBn
ZXRKb2luU3R5bGUoKSBjb25zdCB7IHJldHVybiBtSm9pblN0eWxlOyB9Ci0KLSAgICBib29sIGhh
c1BhdGhEYXRhKCkgY29uc3QgeyByZXR1cm4gbUhhc0RhdGE7IH0KLQotICAgIHJ4OjpQYXRoSW1w
bCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtUGF0aDsgfQotCi0gIHByaXZh
dGU6Ci0gICAgcng6OlBhdGhJbXBsICptUGF0aDsKLQotICAgIC8vIGEgUGF0aCBvYmplY3QgaXMg
bm90IGFjdHVhbGx5IGNvbnNpZGVyZWQgImEgcGF0aCIKLSAgICAvLyB1bnRpbGwgaXQgaGFzIGJl
ZW4gc3BlY2lmaWVkIHdpdGggZGF0YS4gU28gd2UnbGwKLSAgICAvLyBrZWVwIHRoaXMgZmxhZyB0
byBzdXBwb3J0IHRoaXMgc2VtYW50aWNzLgotICAgIGJvb2wgbUhhc0RhdGE7Ci0KLSAgICBHTGVu
dW0gbUVuZENhcHM7Ci0gICAgR0xlbnVtIG1Kb2luU3R5bGU7Ci0gICAgR0xmbG9hdCBtU3Ryb2tl
V2lkdGg7Ci0gICAgR0xmbG9hdCBtU3Ryb2tlQm91bmQ7Ci0gICAgR0xmbG9hdCBtTWl0ZXJMaW1p
dDsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBnbAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1BBVEhf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9n
cmFtLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmNw
cAppbmRleCA4ZTYzZGIyYTQ1MzYxMjIyODNkNjc2YmNmNTA2OGY1ODZhNWZlMzhmLi5jYmM2YTM2
ODE1ZTNlOTIyMWQ3YjAwNGJjMmMzZDEwODE2MTAxZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCkBAIC00MDUsMTMgKzQwNSwxOSBA
QCB2b2lkIEluaXRTaGFkZXJTdG9yYWdlQmxvY2tMaW5rZXIoY29uc3QgUHJvZ3JhbVN0YXRlICZz
dGF0ZSwgU2hhZGVyU3RvcmFnZUJsb2NrTAogfQogCiAvLyBGaW5kIHRoZSBtYXRjaGluZyB2YXJ5
aW5nIG9yIGZpZWxkIGJ5IG5hbWUuCi1jb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKkZpbmRWYXJ5
aW5nT3JGaWVsZChjb25zdCBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpCitjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKkZpbmRPdXRwdXRWYXJ5aW5nT3JGaWVs
ZChjb25zdCBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSBzdGFnZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lKQogewogICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyID0g
bnVsbHB0cjsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJnJlZiA6IHZhcnlpbmdzKQorICAgIGZvciAo
Y29uc3QgUHJvZ3JhbVZhcnlpbmdSZWYgJnJlZiA6IHZhcnlpbmdzKQogICAgIHsKLSAgICAgICAg
Y29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXJ5aW5nID0gcmVmLnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgaWYgKHJlZi5mcm9udFNoYWRlclN0YWdlICE9IHN0YWdlKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAqdmFyeWluZyA9IHJlZi5nZXQoc3RhZ2UpOwogICAgICAgICBpZiAodmFyeWluZy0+
bmFtZSA9PSBuYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgPSB2YXJ5aW5nOwpAQCAt
NjQ0LDMzICs2NTAsNiBAQCBib29sIFZhbGlkYXRlSW50ZXJmYWNlQmxvY2tzTWF0Y2goCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV3JpdGVTaGFkZXJWYXIoQmluYXJ5T3V0cHV0U3RyZWFt
ICpzdHJlYW0sIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKQotewotICAgIHN0cmVhbS0+
d3JpdGVJbnQodmFyLnR5cGUpOwotICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLnByZWNpc2lvbik7
Ci0gICAgc3RyZWFtLT53cml0ZVN0cmluZyh2YXIubmFtZSk7Ci0gICAgc3RyZWFtLT53cml0ZVN0
cmluZyh2YXIubWFwcGVkTmFtZSk7Ci0gICAgc3RyZWFtLT53cml0ZUludFZlY3Rvcih2YXIuYXJy
YXlTaXplcyk7Ci0gICAgc3RyZWFtLT53cml0ZUludCh2YXIuc3RhdGljVXNlKTsKLSAgICBzdHJl
YW0tPndyaXRlSW50KHZhci5hY3RpdmUpOwotICAgIHN0cmVhbS0+d3JpdGVTdHJpbmcodmFyLnN0
cnVjdE5hbWUpOwotICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLmhhc1BhcmVudEFycmF5SW5kZXgo
KSA/IHZhci5wYXJlbnRBcnJheUluZGV4KCkgOiAtMSk7Ci0gICAgQVNTRVJUKHZhci5maWVsZHMu
ZW1wdHkoKSk7Ci19Ci0KLXZvaWQgTG9hZFNoYWRlclZhcihCaW5hcnlJbnB1dFN0cmVhbSAqc3Ry
ZWFtLCBzaDo6U2hhZGVyVmFyaWFibGUgKnZhcikKLXsKLSAgICB2YXItPnR5cGUgICAgICAgPSBz
dHJlYW0tPnJlYWRJbnQ8R0xlbnVtPigpOwotICAgIHZhci0+cHJlY2lzaW9uICA9IHN0cmVhbS0+
cmVhZEludDxHTGVudW0+KCk7Ci0gICAgdmFyLT5uYW1lICAgICAgID0gc3RyZWFtLT5yZWFkU3Ry
aW5nKCk7Ci0gICAgdmFyLT5tYXBwZWROYW1lID0gc3RyZWFtLT5yZWFkU3RyaW5nKCk7Ci0gICAg
c3RyZWFtLT5yZWFkSW50VmVjdG9yPHVuc2lnbmVkIGludD4oJnZhci0+YXJyYXlTaXplcyk7Ci0g
ICAgdmFyLT5zdGF0aWNVc2UgID0gc3RyZWFtLT5yZWFkQm9vbCgpOwotICAgIHZhci0+YWN0aXZl
ICAgICA9IHN0cmVhbS0+cmVhZEJvb2woKTsKLSAgICB2YXItPnN0cnVjdE5hbWUgPSBzdHJlYW0t
PnJlYWRTdHJpbmcoKTsKLSAgICB2YXItPnNldFBhcmVudEFycmF5SW5kZXgoc3RyZWFtLT5yZWFk
SW50PGludD4oKSk7Ci19Ci0KIHZvaWQgV3JpdGVTaGFkZXJWYXJpYWJsZUJ1ZmZlcihCaW5hcnlP
dXRwdXRTdHJlYW0gKnN0cmVhbSwgY29uc3QgU2hhZGVyVmFyaWFibGVCdWZmZXIgJnZhcikKIHsK
ICAgICBzdHJlYW0tPndyaXRlSW50KHZhci5iaW5kaW5nKTsKQEAgLTc1Myw2ICs3MzIsNyBAQCB2
b2lkIExvYWRJbnRlcmZhY2VCbG9jayhCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtLCBJbnRlcmZh
Y2VCbG9jayAqYmxvY2spCiAgICAgTG9hZFNoYWRlclZhcmlhYmxlQnVmZmVyKHN0cmVhbSwgYmxv
Y2spOwogfQogCisvLyBUT0RPKHRpbXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBSZW1v
dmUgd2hlbiBQUE9zIGFyZSBzdXBwb3J0ZWQKIHNpemVfdCBDb3VudFVuaXF1ZUJsb2Nrcyhjb25z
dCBzdGQ6OnZlY3RvcjxJbnRlcmZhY2VCbG9jaz4gJmJsb2NrcykKIHsKICAgICBzaXplX3QgY291
bnQgPSAwOwpAQCAtOTA0LDYgKzg4NCw0NiBAQCB2b2lkIExvYWRCbG9ja01lbWJlckluZm8oQmlu
YXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSwgc2g6OkJsb2NrTWVtYmVySW5mbyAqdmFyKQogICAgIHZh
ci0+dG9wTGV2ZWxBcnJheVN0cmlkZSA9IHN0cmVhbS0+cmVhZEludDxpbnQ+KCk7CiB9CiAKK3Zv
aWQgV3JpdGVTaGFkZXJWYXIoQmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0sIGNvbnN0IHNoOjpT
aGFkZXJWYXJpYWJsZSAmdmFyKQoreworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLnR5cGUpOwor
ICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLnByZWNpc2lvbik7CisgICAgc3RyZWFtLT53cml0ZVN0
cmluZyh2YXIubmFtZSk7CisgICAgc3RyZWFtLT53cml0ZVN0cmluZyh2YXIubWFwcGVkTmFtZSk7
CisgICAgc3RyZWFtLT53cml0ZUludFZlY3Rvcih2YXIuYXJyYXlTaXplcyk7CisgICAgc3RyZWFt
LT53cml0ZUludCh2YXIuc3RhdGljVXNlKTsKKyAgICBzdHJlYW0tPndyaXRlSW50KHZhci5hY3Rp
dmUpOworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLmJpbmRpbmcpOworICAgIHN0cmVhbS0+d3Jp
dGVTdHJpbmcodmFyLnN0cnVjdE5hbWUpOworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLmhhc1Bh
cmVudEFycmF5SW5kZXgoKSA/IHZhci5wYXJlbnRBcnJheUluZGV4KCkgOiAtMSk7CisKKyAgICBz
dHJlYW0tPndyaXRlSW50KHZhci5pbWFnZVVuaXRGb3JtYXQpOworICAgIHN0cmVhbS0+d3JpdGVJ
bnQodmFyLm9mZnNldCk7CisgICAgc3RyZWFtLT53cml0ZUludCh2YXIucmVhZG9ubHkpOworICAg
IHN0cmVhbS0+d3JpdGVJbnQodmFyLndyaXRlb25seSk7CisKKyAgICBBU1NFUlQodmFyLmZpZWxk
cy5lbXB0eSgpKTsKK30KKwordm9pZCBMb2FkU2hhZGVyVmFyKEJpbmFyeUlucHV0U3RyZWFtICpz
dHJlYW0sIHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyKQoreworICAgIHZhci0+dHlwZSAgICAgICA9
IHN0cmVhbS0+cmVhZEludDxHTGVudW0+KCk7CisgICAgdmFyLT5wcmVjaXNpb24gID0gc3RyZWFt
LT5yZWFkSW50PEdMZW51bT4oKTsKKyAgICB2YXItPm5hbWUgICAgICAgPSBzdHJlYW0tPnJlYWRT
dHJpbmcoKTsKKyAgICB2YXItPm1hcHBlZE5hbWUgPSBzdHJlYW0tPnJlYWRTdHJpbmcoKTsKKyAg
ICBzdHJlYW0tPnJlYWRJbnRWZWN0b3I8dW5zaWduZWQgaW50PigmdmFyLT5hcnJheVNpemVzKTsK
KyAgICB2YXItPnN0YXRpY1VzZSAgPSBzdHJlYW0tPnJlYWRCb29sKCk7CisgICAgdmFyLT5hY3Rp
dmUgICAgID0gc3RyZWFtLT5yZWFkQm9vbCgpOworICAgIHZhci0+YmluZGluZyAgICA9IHN0cmVh
bS0+cmVhZEludDxpbnQ+KCk7CisgICAgdmFyLT5zdHJ1Y3ROYW1lID0gc3RyZWFtLT5yZWFkU3Ry
aW5nKCk7CisgICAgdmFyLT5zZXRQYXJlbnRBcnJheUluZGV4KHN0cmVhbS0+cmVhZEludDxpbnQ+
KCkpOworCisgICAgdmFyLT5pbWFnZVVuaXRGb3JtYXQgPSBzdHJlYW0tPnJlYWRJbnQ8R0xlbnVt
PigpOworICAgIHZhci0+b2Zmc2V0ICAgICAgICAgID0gc3RyZWFtLT5yZWFkSW50PGludD4oKTsK
KyAgICB2YXItPnJlYWRvbmx5ICAgICAgICA9IHN0cmVhbS0+cmVhZEJvb2woKTsKKyAgICB2YXIt
PndyaXRlb25seSAgICAgICA9IHN0cmVhbS0+cmVhZEJvb2woKTsKK30KKwogLy8gVmFyaWFibGVM
b2NhdGlvbiBpbXBsZW1lbnRhdGlvbi4KIFZhcmlhYmxlTG9jYXRpb246OlZhcmlhYmxlTG9jYXRp
b24oKSA6IGFycmF5SW5kZXgoMCksIGluZGV4KGtVbnVzZWQpLCBpZ25vcmVkKGZhbHNlKSB7fQog
CkBAIC05OTMsNiArMTAxMywxOCBAQCBpbnQgUHJvZ3JhbUFsaWFzZWRCaW5kaW5nczo6Z2V0Qmlu
ZGluZ0J5TmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKICAgICByZXR1cm4gKGl0
ZXIgIT0gbUJpbmRpbmdzLmVuZCgpKSA/IGl0ZXItPnNlY29uZC5sb2NhdGlvbiA6IC0xOwogfQog
CitpbnQgUHJvZ3JhbUFsaWFzZWRCaW5kaW5nczo6Z2V0QmluZGluZ0J5TG9jYXRpb24oR0x1aW50
IGxvY2F0aW9uKSBjb25zdAoreworICAgIGZvciAoY29uc3QgYXV0byAmaXRlciA6IG1CaW5kaW5n
cykKKyAgICB7CisgICAgICAgIGlmIChpdGVyLnNlY29uZC5sb2NhdGlvbiA9PSBsb2NhdGlvbikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGl0ZXIuc2Vjb25kLmxvY2F0aW9uOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiAtMTsKK30KKwogaW50IFByb2dyYW1BbGlhc2VkQmlu
ZGluZ3M6OmdldEJpbmRpbmcoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJpYWJsZSkgY29u
c3QKIHsKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSA9IHZhcmlhYmxlLm5hbWU7CkBAIC0x
MDYwLDcgKzEwOTIsNiBAQCBQcm9ncmFtU3RhdGU6OlByb2dyYW1TdGF0ZSgpCiAgICAgOiBtTGFi
ZWwoKSwKICAgICAgIG1BdHRhY2hlZFNoYWRlcnN7fSwKICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlck1vZGUoR0xfSU5URVJMRUFWRURfQVRUUklCUyksCi0gICAgICBtTWF4QWN0aXZlQXR0
cmliTG9jYXRpb24oMCksCiAgICAgICBtRGVmYXVsdFVuaWZvcm1SYW5nZSgwLCAwKSwKICAgICAg
IG1TYW1wbGVyVW5pZm9ybVJhbmdlKDAsIDApLAogICAgICAgbUltYWdlVW5pZm9ybVJhbmdlKDAs
IDApLApAQCAtMTA3NywxMSArMTEwOCwxMCBAQCBQcm9ncmFtU3RhdGU6OlByb2dyYW1TdGF0ZSgp
CiAgICAgICBtQmFzZVZlcnRleExvY2F0aW9uKC0xKSwKICAgICAgIG1CYXNlSW5zdGFuY2VMb2Nh
dGlvbigtMSksCiAgICAgICBtQ2FjaGVkQmFzZVZlcnRleCgwKSwKLSAgICAgIG1DYWNoZWRCYXNl
SW5zdGFuY2UoMCksCi0gICAgICBtQWN0aXZlU2FtcGxlclJlZkNvdW50c3t9CisgICAgICBtQ2Fj
aGVkQmFzZUluc3RhbmNlKDApCiB7CiAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemUuZmlsbCgx
KTsKLSAgICBtQWN0aXZlU2FtcGxlclR5cGVzLmZpbGwoVGV4dHVyZVR5cGU6OkludmFsaWRFbnVt
KTsKKyAgICBtRXhlY3V0YWJsZS5zZXRQcm9ncmFtU3RhdGUodGhpcyk7CiB9CiAKIFByb2dyYW1T
dGF0ZTo6flByb2dyYW1TdGF0ZSgpCkBAIC0xMTAwLDYgKzExMzAsNyBAQCBTaGFkZXIgKlByb2dy
YW1TdGF0ZTo6Z2V0QXR0YWNoZWRTaGFkZXIoU2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25zdAog
ICAgIHJldHVybiBtQXR0YWNoZWRTaGFkZXJzW3NoYWRlclR5cGVdOwogfQogCisvLyBUT0RPKHRp
bXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBSZW1vdmUgd2hlbiBQUE9zIGFyZSBzdXBw
b3J0ZWQKIHNpemVfdCBQcm9ncmFtU3RhdGU6OmdldFVuaXF1ZVVuaWZvcm1CbG9ja0NvdW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gQ291bnRVbmlxdWVCbG9ja3MobVVuaWZvcm1CbG9ja3MpOwpA
QCAtMTExMCw2ICsxMTQxLDExIEBAIHNpemVfdCBQcm9ncmFtU3RhdGU6OmdldFVuaXF1ZVN0b3Jh
Z2VCbG9ja0NvdW50KCkgY29uc3QKICAgICByZXR1cm4gQ291bnRVbmlxdWVCbG9ja3MobVNoYWRl
clN0b3JhZ2VCbG9ja3MpOwogfQogCitzaXplX3QgUHJvZ3JhbVN0YXRlOjpnZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlckNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRyYW5zZm9ybUZlZWRi
YWNrU3RyaWRlcy5zaXplKCk7Cit9CisKIEdMdWludCBQcm9ncmFtU3RhdGU6OmdldFVuaWZvcm1J
bmRleEZyb21OYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogewogICAgIHJldHVy
biBHZXRSZXNvdXJjZUluZGV4RnJvbU5hbWUobVVuaWZvcm1zLCBuYW1lKTsKQEAgLTExMjAsMTMg
KzExNTYsMTMgQEAgR0x1aW50IFByb2dyYW1TdGF0ZTo6Z2V0QnVmZmVyVmFyaWFibGVJbmRleEZy
b21OYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb24KICAgICByZXR1cm4gR2V0UmVzb3Vy
Y2VJbmRleEZyb21OYW1lKG1CdWZmZXJWYXJpYWJsZXMsIG5hbWUpOwogfQogCi1HTHVpbnQgUHJv
Z3JhbVN0YXRlOjpnZXRVbmlmb3JtSW5kZXhGcm9tTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNv
bnN0CitHTHVpbnQgUHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtSW5kZXhGcm9tTG9jYXRpb24oVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uKSBjb25zdAogewotICAgIEFTU0VSVChsb2NhdGlvbiA+PSAw
ICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwgbVVuaWZvcm1Mb2NhdGlvbnMuc2l6
ZSgpKTsKLSAgICByZXR1cm4gbVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dLmluZGV4OworICAg
IEFTU0VSVChsb2NhdGlvbi52YWx1ZSA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRp
b24udmFsdWUpIDwgbVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbVVuaWZv
cm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdLmluZGV4OwogfQogCi1PcHRpb25hbDxHTHVpbnQ+
IFByb2dyYW1TdGF0ZTo6Z2V0U2FtcGxlckluZGV4KEdMaW50IGxvY2F0aW9uKSBjb25zdAorT3B0
aW9uYWw8R0x1aW50PiBQcm9ncmFtU3RhdGU6OmdldFNhbXBsZXJJbmRleChVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24pIGNvbnN0CiB7CiAgICAgR0x1aW50IGluZGV4ID0gZ2V0VW5pZm9ybUluZGV4
RnJvbUxvY2F0aW9uKGxvY2F0aW9uKTsKICAgICBpZiAoIWlzU2FtcGxlclVuaWZvcm1JbmRleChp
bmRleCkpCkBAIC0xMjAwLDEzICsxMjM2LDEzIEBAIFNoYWRlclR5cGUgUHJvZ3JhbVN0YXRlOjpn
ZXRGaXJzdEF0dGFjaGVkU2hhZGVyU3RhZ2VUeXBlKCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0
IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6a0FsbEdyYXBoaWNzU2hhZGVyVHlwZXMp
CiAgICAgewotICAgICAgICBpZiAoaGFzTGlua2VkU2hhZGVyU3RhZ2Uoc2hhZGVyVHlwZSkpCisg
ICAgICAgIGlmIChtRXhlY3V0YWJsZS5oYXNMaW5rZWRTaGFkZXJTdGFnZShzaGFkZXJUeXBlKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHNoYWRlclR5cGU7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkp
CisgICAgaWYgKG1FeGVjdXRhYmxlLmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNv
bXB1dGUpKQogICAgIHsKICAgICAgICAgcmV0dXJuIFNoYWRlclR5cGU6OkNvbXB1dGU7CiAgICAg
fQpAQCAtMTIyMCwxMyArMTI1NiwxMyBAQCBTaGFkZXJUeXBlIFByb2dyYW1TdGF0ZTo6Z2V0TGFz
dEF0dGFjaGVkU2hhZGVyU3RhZ2VUeXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IGds
OjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgPSBnbDo6a0FsbEdyYXBoaWNzU2hhZGVyVHlwZXNbaV07
CiAKLSAgICAgICAgaWYgKGhhc0xpbmtlZFNoYWRlclN0YWdlKHNoYWRlclR5cGUpKQorICAgICAg
ICBpZiAobUV4ZWN1dGFibGUuaGFzTGlua2VkU2hhZGVyU3RhZ2Uoc2hhZGVyVHlwZSkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBzaGFkZXJUeXBlOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1dGUpKQorICAg
IGlmIChtRXhlY3V0YWJsZS5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpDb21wdXRl
KSkKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFkZXJUeXBlOjpDb21wdXRlOwogICAgIH0KQEAg
LTEzNDAsMTYgKzEzNzYsMTAgQEAgdm9pZCBQcm9ncmFtOjpiaW5kQXR0cmlidXRlTG9jYXRpb24o
R0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQogICAgIG1BdHRyaWJ1dGVCaW5kaW5ncy5i
aW5kTG9jYXRpb24oaW5kZXgsIG5hbWUpOwogfQogCi12b2lkIFByb2dyYW06OmJpbmRVbmlmb3Jt
TG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQordm9pZCBQcm9ncmFtOjpi
aW5kVW5pZm9ybUxvY2F0aW9uKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgY29uc3QgY2hhciAq
bmFtZSkKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgbVVuaWZvcm1Mb2NhdGlv
bkJpbmRpbmdzLmJpbmRMb2NhdGlvbihpbmRleCwgbmFtZSk7Ci19Ci0KLXZvaWQgUHJvZ3JhbTo6
YmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihHTGludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkK
LXsKLSAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgbUZyYWdtZW50SW5wdXRCaW5kaW5n
cy5iaW5kTG9jYXRpb24oaW5kZXgsIG5hbWUpOworICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9u
QmluZGluZ3MuYmluZExvY2F0aW9uKGxvY2F0aW9uLnZhbHVlLCBuYW1lKTsKIH0KIAogdm9pZCBQ
cm9ncmFtOjpiaW5kRnJhZ21lbnRPdXRwdXRMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNo
YXIgKm5hbWUpCkBAIC0xMzYyLDgwICsxMzkyLDYgQEAgdm9pZCBQcm9ncmFtOjpiaW5kRnJhZ21l
bnRPdXRwdXRJbmRleChHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgbUZyYWdt
ZW50T3V0cHV0SW5kZXhlcy5iaW5kTG9jYXRpb24oaW5kZXgsIG5hbWUpOwogfQogCi1CaW5kaW5n
SW5mbyBQcm9ncmFtOjpnZXRGcmFnbWVudElucHV0QmluZGluZ0luZm8oR0xpbnQgaW5kZXgpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIEJpbmRpbmdJbmZvIHJldDsK
LSAgICByZXQudHlwZSAgPSBHTF9OT05FOwotICAgIHJldC52YWxpZCA9IGZhbHNlOwotCi0gICAg
U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFNoYWRlcihTaGFkZXJU
eXBlOjpGcmFnbWVudCk7Ci0gICAgQVNTRVJUKGZyYWdtZW50U2hhZGVyKTsKLQotICAgIC8vIEZp
bmQgdGhlIGFjdHVhbCBmcmFnbWVudCBzaGFkZXIgdmFyeWluZyB3ZSdyZSBpbnRlcmVzdGVkIGlu
Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiAmaW5wdXRzID0gZnJh
Z21lbnRTaGFkZXItPmdldElucHV0VmFyeWluZ3MoKTsKLQotICAgIGZvciAoY29uc3QgYXV0byAm
YmluZGluZyA6IG1GcmFnbWVudElucHV0QmluZGluZ3MpCi0gICAgewotICAgICAgICBpZiAoYmlu
ZGluZy5zZWNvbmQgIT0gc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICByZXQudmFsaWQgPSB0cnVlOwotCi0gICAgICAgIHNpemVfdCBu
YW1lTGVuZ3RoV2l0aG91dEFycmF5SW5kZXg7Ci0gICAgICAgIHVuc2lnbmVkIGludCBhcnJheUlu
ZGV4ID0gUGFyc2VBcnJheUluZGV4KGJpbmRpbmcuZmlyc3QsICZuYW1lTGVuZ3RoV2l0aG91dEFy
cmF5SW5kZXgpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byAmaW4gOiBpbnB1dHMpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChpbi5uYW1lLmxlbmd0aCgpID09IG5hbWVMZW5ndGhXaXRo
b3V0QXJyYXlJbmRleCAmJgotICAgICAgICAgICAgICAgIGFuZ2xlOjpCZWdpbnNXaXRoKGluLm5h
bWUsIGJpbmRpbmcuZmlyc3QsIG5hbWVMZW5ndGhXaXRob3V0QXJyYXlJbmRleCkpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGluLmlzQXJyYXkoKSkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjbGllbnQgd2FudHMgdG8gYmluZCBlaXRo
ZXIgIm5hbWUiIG9yICJuYW1lWzBdIi4KLSAgICAgICAgICAgICAgICAgICAgLy8gR0wgRVMgMy4x
IHNwZWMgcmVmZXJzIHRvIGFjdGl2ZSBhcnJheSBuYW1lcyB3aXRoIGxhbmd1YWdlIHN1Y2ggYXM6
Ci0gICAgICAgICAgICAgICAgICAgIC8vICJpZiB0aGUgc3RyaW5nIGlkZW50aWZpZXMgdGhlIGJh
c2UgbmFtZSBvZiBhbiBhY3RpdmUgYXJyYXksIHdoZXJlIHRoZQotICAgICAgICAgICAgICAgICAg
ICAvLyBzdHJpbmcgd291bGQgZXhhY3RseSBtYXRjaCB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUg
aWYgdGhlIHN1ZmZpeCAiWzBdIgotICAgICAgICAgICAgICAgICAgICAvLyB3ZXJlIGFwcGVuZGVk
IHRvIHRoZSBzdHJpbmciLgotICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlJbmRleCA9PSBH
TF9JTlZBTElEX0lOREVYKQotICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlJbmRleCA9IDA7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWUgPSBpbi5tYXBwZWROYW1lICsgIlsiICsg
VG9TdHJpbmcoYXJyYXlJbmRleCkgKyAiXSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldC5u
YW1lID0gaW4ubWFwcGVkTmFtZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0LnR5cGUgPSBpbi50eXBlOwotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi12b2lkIFBy
b2dyYW06OnBhdGhGcmFnbWVudElucHV0R2VuKEdMaW50IGluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQotewotICAgIEFTU0VSVChtTGlua1Jl
c29sdmVkKTsKLSAgICAvLyBJZiB0aGUgbG9jYXRpb24gaXMgLTEgdGhlbiB0aGUgY29tbWFuZCBp
cyBzaWxlbnRseSBpZ25vcmVkCi0gICAgaWYgKGluZGV4ID09IC0xKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gZ2V0RnJhZ21lbnRJbnB1dEJpbmRpbmdJbmZv
KGluZGV4KTsKLQotICAgIC8vIElmIHRoZSBpbnB1dCBkb2Vzbid0IGV4aXN0IHRoZW4gdGhlbiB0
aGUgY29tbWFuZCBpcyBzaWxlbnRseSBpZ25vcmVkCi0gICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4g
dGhyb3VnaCBvcHRpbWl6YXRpb24gZm9yIGV4YW1wbGUsIHRoZSBzaGFkZXIgdHJhbnNsYXRvcgot
ICAgIC8vIGRlY2lkZXMgdGhhdCBhIHZhcmlhYmxlIGlzIG5vdCBhY3R1YWxseSBiZWluZyB1c2Vk
IGFuZCBvcHRpbWl6ZXMgaXQgYXdheS4KLSAgICBpZiAoYmluZGluZy5uYW1lLmVtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1Qcm9ncmFtLT5zZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihi
aW5kaW5nLm5hbWUsIGdlbk1vZGUsIGNvbXBvbmVudHMsIGNvZWZmcyk7Ci19Ci0KIC8vIFRoZSBh
dHRhY2hlZCBzaGFkZXJzIGFyZSBjaGVja2VkIGZvciBsaW5raW5nIGVycm9ycyBieSBtYXRjaGlu
ZyB1cCB0aGVpciB2YXJpYWJsZXMuCiAvLyBVbmlmb3JtLCBpbnB1dCBhbmQgb3V0cHV0IHZhcmlh
YmxlcyBnZXQgY29sbGVjdGVkLgogLy8gVGhlIGNvZGUgZ2V0cyBjb21waWxlZCBpbnRvIGJpbmFy
aWVzLgpAQCAtMTQ0MywxNSArMTM5OSwxNiBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW06Omxpbmso
Y29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CiAg
ICAgY29uc3QgYXV0byAmZGF0YSA9IGNvbnRleHQtPmdldFN0YXRlKCk7CisgICAgSW5mb0xvZyAm
aW5mb0xvZyA9IG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRJbmZvTG9nKCk7CiAKICAgICBhdXRvICpw
bGF0Zm9ybSAgID0gQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKICAgICBkb3VibGUgc3RhcnRUaW1l
ID0gcGxhdGZvcm0tPmN1cnJlbnRUaW1lKHBsYXRmb3JtKTsKIAogICAgIHVubGluaygpOwotICAg
IG1JbmZvTG9nLnJlc2V0KCk7CisgICAgaW5mb0xvZy5yZXNldCgpOwogCiAgICAgLy8gVmFsaWRh
dGUgd2UgaGF2ZSBwcm9wZXJseSBhdHRhY2hlZCBzaGFkZXJzIGJlZm9yZSBjaGVja2luZyB0aGUg
Y2FjaGUuCi0gICAgaWYgKCFsaW5rVmFsaWRhdGVTaGFkZXJzKG1JbmZvTG9nKSkKKyAgICBpZiAo
IWxpbmtWYWxpZGF0ZVNoYWRlcnMoaW5mb0xvZykpCiAgICAgewogICAgICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQpAQCAtMTQ4MCw3ICsxNDM3LDcgQEAgYW5nbGU6
OlJlc3VsdCBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiAgICAgdW5saW5r
KCk7CiAKICAgICAvLyBSZS1saW5rIHNoYWRlcnMgYWZ0ZXIgdGhlIHVubGluayBjYWxsLgotICAg
IGJvb2wgcmVzdWx0ID0gbGlua1ZhbGlkYXRlU2hhZGVycyhtSW5mb0xvZyk7CisgICAgYm9vbCBy
ZXN1bHQgPSBsaW5rVmFsaWRhdGVTaGFkZXJzKGluZm9Mb2cpOwogICAgIEFTU0VSVChyZXN1bHQp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1MaW5rZWRSZXNvdXJjZXM+IHJlc291cmNl
czsKQEAgLTE0OTEsOCArMTQ0OCw4IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6bGluayhjb25z
dCBDb250ZXh0ICpjb250ZXh0KQogICAgICAgICAgICAgJm1TdGF0ZS5tU2hhZGVyU3RvcmFnZUJs
b2NrcywgJm1TdGF0ZS5tQnVmZmVyVmFyaWFibGVzLCAmbVN0YXRlLm1BdG9taWNDb3VudGVyQnVm
ZmVycykpOwogCiAgICAgICAgIEdMdWludCBjb21iaW5lZEltYWdlVW5pZm9ybXMgPSAwdTsKLSAg
ICAgICAgaWYgKCFsaW5rVW5pZm9ybXMoY29udGV4dC0+Z2V0Q2FwcygpLCBjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCksIG1JbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtVW5p
Zm9ybUxvY2F0aW9uQmluZGluZ3MsICZjb21iaW5lZEltYWdlVW5pZm9ybXMsCisgICAgICAgIGlm
ICghbGlua1VuaWZvcm1zKGNvbnRleHQtPmdldENhcHMoKSwgY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpLCBpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUubVVuaWZv
cm1Mb2NhdGlvbkJpbmRpbmdzLCAmY29tYmluZWRJbWFnZVVuaWZvcm1zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAmcmVzb3VyY2VzLT51bnVzZWRVbmlmb3JtcykpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTE1MDAsNyArMTQ1
Nyw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0
KQogCiAgICAgICAgIEdMdWludCBjb21iaW5lZFNoYWRlclN0b3JhZ2VCbG9ja3MgPSAwdTsKICAg
ICAgICAgaWYgKCFsaW5rSW50ZXJmYWNlQmxvY2tzKGNvbnRleHQtPmdldENhcHMoKSwgY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSwgbUluZm9Mb2csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
d2ViZ2xDb21wYXRpYmlsaXR5LCBpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmNvbWJpbmVkU2hhZGVyU3RvcmFnZUJsb2NrcykpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTE1MTQsNyArMTQ3MSw3IEBA
IGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAg
ICAgICBpZiAoY29tYmluZWRJbWFnZVVuaWZvcm1zICsgY29tYmluZWRTaGFkZXJTdG9yYWdlQmxv
Y2tzID4KICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oY29udGV4dC0+Z2V0Q2Fwcygp
Lm1heENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzKSkKICAgICAgICAgewotICAgICAgICAg
ICAgbUluZm9Mb2cKKyAgICAgICAgICAgIGluZm9Mb2cKICAgICAgICAgICAgICAgICA8PCAiVGhl
IHN1bSBvZiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBpbWFnZSB1bmlmb3JtcywgYWN0aXZlIHNoYWRl
ciBzdG9yYWdlIGJsb2NrcyAiCiAgICAgICAgICAgICAgICAgICAgImFuZCBhY3RpdmUgZnJhZ21l
bnQgc2hhZGVyIG91dHB1dHMgZXhjZWVkcyAiCiAgICAgICAgICAgICAgICAgICAgIk1BWF9DT01C
SU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUyAoIgpAQCAtMTU0NSwxOSArMTUwMiwxOSBAQCBh
bmdsZTo6UmVzdWx0IFByb2dyYW06OmxpbmsoY29uc3QgQ29udGV4dCAqY29udGV4dCkKICAgICAg
ICAgICAgICZtU3RhdGUubVVuaWZvcm1zLCAmbVN0YXRlLm1TaGFkZXJTdG9yYWdlQmxvY2tzLCAm
bVN0YXRlLm1CdWZmZXJWYXJpYWJsZXMsCiAgICAgICAgICAgICAmbVN0YXRlLm1BdG9taWNDb3Vu
dGVyQnVmZmVycykpOwogCi0gICAgICAgIGlmICghbGlua0F0dHJpYnV0ZXMoY29udGV4dCwgbUlu
Zm9Mb2cpKQorICAgICAgICBpZiAoIWxpbmtBdHRyaWJ1dGVzKGNvbnRleHQsIGluZm9Mb2cpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoIWxpbmtWYXJ5aW5ncyhtSW5mb0xvZykpCisgICAgICAg
IGlmICghbGlua1ZhcnlpbmdzKGluZm9Mb2cpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBHTHVpbnQg
Y29tYmluZWRJbWFnZVVuaWZvcm1zID0gMHU7Ci0gICAgICAgIGlmICghbGlua1VuaWZvcm1zKGNv
bnRleHQtPmdldENhcHMoKSwgY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpLCBtSW5mb0xvZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgbVVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzLCAmY29t
YmluZWRJbWFnZVVuaWZvcm1zLAorICAgICAgICBpZiAoIWxpbmtVbmlmb3Jtcyhjb250ZXh0LT5n
ZXRDYXBzKCksIGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgaW5mb0xvZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25CaW5kaW5ncywgJmNvbWJp
bmVkSW1hZ2VVbmlmb3JtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc291cmNlcy0+
dW51c2VkVW5pZm9ybXMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7CkBAIC0xNTY1LDEzICsxNTIyLDEzIEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbTo6bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogCiAgICAgICAgIEdMdWludCBjb21i
aW5lZFNoYWRlclN0b3JhZ2VCbG9ja3MgPSAwdTsKICAgICAgICAgaWYgKCFsaW5rSW50ZXJmYWNl
QmxvY2tzKGNvbnRleHQtPmdldENhcHMoKSwgY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LndlYmdsQ29tcGF0aWJpbGl0eSwgbUluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5LCBpbmZv
TG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbWJpbmVkU2hhZGVyU3Rv
cmFnZUJsb2NrcykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghbGlua1ZhbGlkYXRlR2xvYmFs
TmFtZXMobUluZm9Mb2cpKQorICAgICAgICBpZiAoIWxpbmtWYWxpZGF0ZUdsb2JhbE5hbWVzKGlu
Zm9Mb2cpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiAgICAgICAgIH0KQEAgLTE1ODMsNyArMTU0MCw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbTo6bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgYXV0byAm
bWVyZ2VkVmFyeWluZ3MgPSBnZXRNZXJnZWRWYXJ5aW5ncygpOworICAgICAgICBjb25zdCBQcm9n
cmFtTWVyZ2VkVmFyeWluZ3MgJm1lcmdlZFZhcnlpbmdzID0gZ2V0TWVyZ2VkVmFyeWluZ3MoKTsK
IAogICAgICAgICBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUubUF0dGFjaGVkU2hh
ZGVyc1tTaGFkZXJUeXBlOjpWZXJ0ZXhdOwogICAgICAgICBpZiAodmVydGV4U2hhZGVyKQpAQCAt
MTU5NCwxOSArMTU1MSwyMiBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW06OmxpbmsoY29uc3QgQ29u
dGV4dCAqY29udGV4dCkKICAgICAgICAgSW5pdFVuaWZvcm1CbG9ja0xpbmtlcihtU3RhdGUsICZy
ZXNvdXJjZXMtPnVuaWZvcm1CbG9ja0xpbmtlcik7CiAgICAgICAgIEluaXRTaGFkZXJTdG9yYWdl
QmxvY2tMaW5rZXIobVN0YXRlLCAmcmVzb3VyY2VzLT5zaGFkZXJTdG9yYWdlQmxvY2tMaW5rZXIp
OwogCi0gICAgICAgIGlmICghbGlua1ZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpLCBtSW5mb0xvZywgbWVyZ2VkVmFyeWluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2FwcygpKSkKKyAg
ICAgICAgU2hhZGVyVHlwZSB0ZlN0YWdlID0gbVN0YXRlLm1BdHRhY2hlZFNoYWRlcnNbU2hhZGVy
VHlwZTo6R2VvbWV0cnldID8gU2hhZGVyVHlwZTo6R2VvbWV0cnkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogU2hhZGVyVHlwZTo6VmVydGV4OworCisgICAgICAgIGlmICghbGlua1ZhbGlkYXRlVHJhbnNm
b3JtRmVlZGJhY2soY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpLCBpbmZvTG9nLCBtZXJnZWRW
YXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZlN0
YWdlLCBjb250ZXh0LT5nZXRDYXBzKCkpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXJlc291
cmNlcy0+dmFyeWluZ1BhY2tpbmcuY29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3MoCi0gICAgICAg
ICAgICAgICAgbUluZm9Mb2csIG1lcmdlZFZhcnlpbmdzLCBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nTmFtZXMoKSkpCisgICAgICAgICAgICAgICAgaW5mb0xvZywgbWVyZ2VkVmFy
eWluZ3MsIG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcygpLCBpc1NlcGFy
YWJsZSgpKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhtZXJnZWRWYXJ5aW5ncyk7CisgICAgICAgIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MobWVyZ2VkVmFyeWluZ3MsIHRmU3RhZ2UpOwogICAgICAgICBtU3RhdGUudXBkYXRlVHJh
bnNmb3JtRmVlZGJhY2tTdHJpZGVzKCk7CiAgICAgfQogCkBAIC0xNjE1LDcgKzE1NzUsNyBAQCBh
bmdsZTo6UmVzdWx0IFByb2dyYW06OmxpbmsoY29uc3QgQ29udGV4dCAqY29udGV4dCkKICAgICBt
TGlua2luZ1N0YXRlLnJlc2V0KG5ldyBMaW5raW5nU3RhdGUoKSk7CiAgICAgbUxpbmtpbmdTdGF0
ZS0+bGlua2luZ0Zyb21CaW5hcnkgPSBmYWxzZTsKICAgICBtTGlua2luZ1N0YXRlLT5wcm9ncmFt
SGFzaCAgICAgICA9IHByb2dyYW1IYXNoOwotICAgIG1MaW5raW5nU3RhdGUtPmxpbmtFdmVudCAg
ICAgICAgID0gbVByb2dyYW0tPmxpbmsoY29udGV4dCwgKnJlc291cmNlcywgbUluZm9Mb2cpOwor
ICAgIG1MaW5raW5nU3RhdGUtPmxpbmtFdmVudCAgICAgICAgID0gbVByb2dyYW0tPmxpbmsoY29u
dGV4dCwgKnJlc291cmNlcywgaW5mb0xvZyk7CiAgICAgbUxpbmtpbmdTdGF0ZS0+cmVzb3VyY2Vz
ICAgICAgICAgPSBzdGQ6Om1vdmUocmVzb3VyY2VzKTsKICAgICBtTGlua1Jlc29sdmVkICAgICAg
ICAgICAgICAgICAgICA9IGZhbHNlOwogCkBAIC0xNjY0LDEwICsxNjI0LDYgQEAgdm9pZCBQcm9n
cmFtOjpyZXNvbHZlTGlua0ltcGwoY29uc3QgQ29udGV4dCAqY29udGV4dCkKICAgICAvLyBNdXN0
IGJlIGNhbGxlZCBhZnRlciBtYXJrVW51c2VkVW5pZm9ybUxvY2F0aW9ucy4KICAgICBwb3N0UmVz
b2x2ZUxpbmsoY29udGV4dCk7CiAKLSAgICAvLyBUT0RPKHN5b3Vzc2VmaSk6IHRoaXMgbWlnaHQg
bmVlZCB0byBiZSBtb3ZlZCB0byBwb3N0UmVzb2x2ZUxpbmsoKSBzbyBpdCB3aWxsIGJlIGNhbGxl
ZCBmcm9tCi0gICAgLy8gZGVzZXJpYWxpemUoKSBhcyB3ZWxsLiAgaHR0cDovL2FuZ2xlYnVnLmNv
bS8zMDg5Ci0gICAgc2V0VW5pZm9ybVZhbHVlc0Zyb21CaW5kaW5nUXVhbGlmaWVycygpOwotCiAg
ICAgLy8gU2F2ZSB0byB0aGUgcHJvZ3JhbSBjYWNoZS4KICAgICBNZW1vcnlQcm9ncmFtQ2FjaGUg
KmNhY2hlID0gY29udGV4dC0+Z2V0TWVtb3J5UHJvZ3JhbUNhY2hlKCk7CiAgICAgaWYgKGNhY2hl
ICYmCkBAIC0xNjg1LDEzICsxNjQxLDEzIEBAIHZvaWQgUHJvZ3JhbTo6cmVzb2x2ZUxpbmtJbXBs
KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiAKIHZvaWQgUHJvZ3JhbTo6dXBkYXRlTGlua2VkU2hh
ZGVyU3RhZ2VzKCkKIHsKLSAgICBtU3RhdGUubUxpbmtlZFNoYWRlclN0YWdlcy5yZXNldCgpOwor
ICAgIG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKS5yZXNldCgpOwog
CiAgICAgZm9yIChjb25zdCBTaGFkZXIgKnNoYWRlciA6IG1TdGF0ZS5tQXR0YWNoZWRTaGFkZXJz
KQogICAgIHsKICAgICAgICAgaWYgKHNoYWRlcikKICAgICAgICAgewotICAgICAgICAgICAgbVN0
YXRlLm1MaW5rZWRTaGFkZXJTdGFnZXMuc2V0KHNoYWRlci0+Z2V0VHlwZSgpKTsKKyAgICAgICAg
ICAgIG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKS5zZXQoc2hhZGVy
LT5nZXRUeXBlKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTcyMiw0OCArMTY3OCwxMyBA
QCB2b2lkIFByb2dyYW1TdGF0ZTo6dXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tTdHJpZGVzKCkKIAog
dm9pZCBQcm9ncmFtU3RhdGU6OnVwZGF0ZUFjdGl2ZVNhbXBsZXJzKCkKIHsKLSAgICBtQWN0aXZl
U2FtcGxlclJlZkNvdW50cy5maWxsKDApOwotCi0gICAgZm9yIChTYW1wbGVyQmluZGluZyAmc2Ft
cGxlckJpbmRpbmcgOiBtU2FtcGxlckJpbmRpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKHNhbXBs
ZXJCaW5kaW5nLnVucmVmZXJlbmNlZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGZvciAoR0xpbnQgdGV4dHVyZVVuaXQgOiBzYW1wbGVyQmluZGluZy5ib3VuZFRleHR1cmVVbml0
cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCsrbUFjdGl2ZVNhbXBsZXJSZWZDb3VudHNb
dGV4dHVyZVVuaXRdID09IDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUFjdGl2
ZVNhbXBsZXJUeXBlc1t0ZXh0dXJlVW5pdF0gICA9IHNhbXBsZXJCaW5kaW5nLnRleHR1cmVUeXBl
OwotICAgICAgICAgICAgICAgIG1BY3RpdmVTYW1wbGVyRm9ybWF0c1t0ZXh0dXJlVW5pdF0gPSBz
YW1wbGVyQmluZGluZy5mb3JtYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1BY3RpdmVTYW1wbGVyVHlwZXNbdGV4
dHVyZVVuaXRdICE9IHNhbXBsZXJCaW5kaW5nLnRleHR1cmVUeXBlKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZVNhbXBsZXJUeXBlc1t0ZXh0dXJlVW5pdF0g
PSBUZXh0dXJlVHlwZTo6SW52YWxpZEVudW07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChtQWN0aXZlU2FtcGxlckZvcm1hdHNbdGV4dHVyZVVuaXRdICE9IHNhbXBsZXJC
aW5kaW5nLmZvcm1hdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1B
Y3RpdmVTYW1wbGVyRm9ybWF0c1t0ZXh0dXJlVW5pdF0gPSBTYW1wbGVyRm9ybWF0OjpJbnZhbGlk
RW51bTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtQWN0
aXZlU2FtcGxlcnNNYXNrLnNldCh0ZXh0dXJlVW5pdCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
bUV4ZWN1dGFibGUubUFjdGl2ZVNhbXBsZXJSZWZDb3VudHMuZmlsbCgwKTsKKyAgICBtRXhlY3V0
YWJsZS51cGRhdGVBY3RpdmVTYW1wbGVycyhtU2FtcGxlckJpbmRpbmdzKTsKIH0KIAogdm9pZCBQ
cm9ncmFtU3RhdGU6OnVwZGF0ZUFjdGl2ZUltYWdlcygpCiB7Ci0gICAgZm9yIChJbWFnZUJpbmRp
bmcgJmltYWdlQmluZGluZyA6IG1JbWFnZUJpbmRpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKGlt
YWdlQmluZGluZy51bnJlZmVyZW5jZWQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICBmb3IgKEdMaW50IGltYWdlVW5pdCA6IGltYWdlQmluZGluZy5ib3VuZEltYWdlVW5pdHMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1BY3RpdmVJbWFnZXNNYXNrLnNldChpbWFnZVVuaXQpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIG1FeGVjdXRhYmxlLnVwZGF0ZUFjdGl2ZUltYWdlcyhtSW1h
Z2VCaW5kaW5ncyk7CiB9CiAKIHZvaWQgUHJvZ3JhbVN0YXRlOjp1cGRhdGVQcm9ncmFtSW50ZXJm
YWNlSW5wdXRzKCkKQEAgLTE4NTksMTQgKzE3ODAsMTEgQEAgdm9pZCBQcm9ncmFtU3RhdGU6OnVw
ZGF0ZVByb2dyYW1JbnRlcmZhY2VPdXRwdXRzKCkKIHZvaWQgUHJvZ3JhbTo6dW5saW5rKCkKIHsK
ICAgICBtU3RhdGUubVByb2dyYW1JbnB1dHMuY2xlYXIoKTsKLSAgICBtU3RhdGUubUF0dHJpYnV0
ZXNUeXBlTWFzay5yZXNldCgpOwotICAgIG1TdGF0ZS5tQXR0cmlidXRlc01hc2sucmVzZXQoKTsK
LSAgICBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2sucmVzZXQoKTsKLSAgICBtU3Rh
dGUubU1heEFjdGl2ZUF0dHJpYkxvY2F0aW9uID0gMDsKICAgICBtU3RhdGUubUxpbmtlZFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MuY2xlYXIoKTsKICAgICBtU3RhdGUubVVuaWZvcm1zLmNsZWFy
KCk7CiAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1V
bmlmb3JtQmxvY2tzLmNsZWFyKCk7CisgICAgbVN0YXRlLm1CdWZmZXJWYXJpYWJsZXMuY2xlYXIo
KTsKICAgICBtU3RhdGUubVNoYWRlclN0b3JhZ2VCbG9ja3MuY2xlYXIoKTsKICAgICBtU3RhdGUu
bUFjdGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzLnJlc2V0KCk7CiAgICAgbVN0YXRlLm1BdG9taWND
b3VudGVyQnVmZmVycy5jbGVhcigpOwpAQCAtMTg3OSw3ICsxNzk3LDYgQEAgdm9pZCBQcm9ncmFt
Ojp1bmxpbmsoKQogICAgIG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZS5maWxsKDEpOwog
ICAgIG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdzLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1JbWFnZUJp
bmRpbmdzLmNsZWFyKCk7Ci0gICAgbVN0YXRlLm1BY3RpdmVJbWFnZXNNYXNrLnJlc2V0KCk7CiAg
ICAgbVN0YXRlLm1OdW1WaWV3cyAgICAgICAgICAgICAgICAgICAgICAgICAgPSAtMTsKICAgICBt
U3RhdGUubUdlb21ldHJ5U2hhZGVySW5wdXRQcmltaXRpdmVUeXBlICA9IFByaW1pdGl2ZU1vZGU6
OlRyaWFuZ2xlczsKICAgICBtU3RhdGUubUdlb21ldHJ5U2hhZGVyT3V0cHV0UHJpbWl0aXZlVHlw
ZSA9IFByaW1pdGl2ZU1vZGU6OlRyaWFuZ2xlU3RyaXA7CkBAIC0xODk0LDcgKzE4MTEsOCBAQCB2
b2lkIFByb2dyYW06OnVubGluaygpCiAgICAgbVZhbGlkYXRlZCA9IGZhbHNlOwogCiAgICAgbUxp
bmtlZCA9IGZhbHNlOwotICAgIG1JbmZvTG9nLnJlc2V0KCk7CisKKyAgICBtU3RhdGUubUV4ZWN1
dGFibGUucmVzZXQoKTsKIH0KIAogYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpsb2FkQmluYXJ5KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCkBAIC0xOTAyLDYgKzE4MjAsNyBAQCBhbmdsZTo6UmVzdWx0
IFByb2dyYW06OmxvYWRCaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpCiB7CisgICAgSW5mb0xvZyAmaW5m
b0xvZyA9IG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRJbmZvTG9nKCk7CiAgICAgQVNTRVJUKG1MaW5r
UmVzb2x2ZWQpOwogICAgIHVubGluaygpOwogCkBAIC0xOTExLDEyICsxODMwLDEyIEBAIGFuZ2xl
OjpSZXN1bHQgUHJvZ3JhbTo6bG9hZEJpbmFyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
IEFTU0VSVChiaW5hcnlGb3JtYXQgPT0gR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUpOwogICAgIGlm
IChiaW5hcnlGb3JtYXQgIT0gR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUpCiAgICAgewotICAgICAg
ICBtSW5mb0xvZyA8PCAiSW52YWxpZCBwcm9ncmFtIGJpbmFyeSBmb3JtYXQuIjsKKyAgICAgICAg
aW5mb0xvZyA8PCAiSW52YWxpZCBwcm9ncmFtIGJpbmFyeSBmb3JtYXQuIjsKICAgICAgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KIAogICAgIEJpbmFyeUlucHV0U3Ry
ZWFtIHN0cmVhbShiaW5hcnksIGxlbmd0aCk7Ci0gICAgQU5HTEVfVFJZKGRlc2VyaWFsaXplKGNv
bnRleHQsIHN0cmVhbSwgbUluZm9Mb2cpKTsKKyAgICBBTkdMRV9UUlkoZGVzZXJpYWxpemUoY29u
dGV4dCwgc3RyZWFtLCBpbmZvTG9nKSk7CiAKICAgICAvLyBDdXJyZW50bHkgd2UgcmVxdWlyZSB0
aGUgZnVsbCBzaGFkZXIgdGV4dCB0byBjb21wdXRlIHRoZSBwcm9ncmFtIGhhc2guCiAgICAgLy8g
V2UgY291bGQgYWxzbyBzdG9yZSB0aGUgYmluYXJ5IGluIHRoZSBpbnRlcm5hbCBwcm9ncmFtIGNh
Y2hlLgpAQCAtMTkyOSw3ICsxODQ4LDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpsb2FkQmlu
YXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAKICAgICBtTGlua2luZ1N0YXRlLnJlc2V0KG5l
dyBMaW5raW5nU3RhdGUoKSk7CiAgICAgbUxpbmtpbmdTdGF0ZS0+bGlua2luZ0Zyb21CaW5hcnkg
PSB0cnVlOwotICAgIG1MaW5raW5nU3RhdGUtPmxpbmtFdmVudCAgICAgICAgID0gbVByb2dyYW0t
PmxvYWQoY29udGV4dCwgJnN0cmVhbSwgbUluZm9Mb2cpOworICAgIG1MaW5raW5nU3RhdGUtPmxp
bmtFdmVudCAgICAgICAgID0gbVByb2dyYW0tPmxvYWQoY29udGV4dCwgJnN0cmVhbSwgaW5mb0xv
Zyk7CiAgICAgbUxpbmtSZXNvbHZlZCAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKIAogICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTIwNDYsMTggKzE5NjUsNiBAQCB1
bnNpZ25lZCBpbnQgUHJvZ3JhbTo6Z2V0UmVmQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtUmVm
Q291bnQ7CiB9CiAKLWludCBQcm9ncmFtOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obUlu
Zm9Mb2cuZ2V0TGVuZ3RoKCkpOwotfQotCi12b2lkIFByb2dyYW06OmdldEluZm9Mb2coR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIHJldHVybiBtSW5mb0xvZy5nZXRMb2coYnVmU2l6
ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKLX0KLQogdm9pZCBQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRl
cnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIFNoYWRlclByb2dyYW1JRCAqc2hh
ZGVycykgY29uc3QKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CkBAIC0yMDg0LDEzICsx
OTkxLDYgQEAgR0x1aW50IFByb2dyYW06OmdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUuZ2V0QXR0cmlidXRlTG9jYXRp
b24obmFtZSk7CiB9CiAKLWJvb2wgUHJvZ3JhbTo6aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShzaXpl
X3QgYXR0cmliTG9jYXRpb24pIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwot
ICAgIEFTU0VSVChhdHRyaWJMb2NhdGlvbiA8IG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzay5zaXplKCkpOwotICAgIHJldHVybiBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01h
c2tbYXR0cmliTG9jYXRpb25dOwotfQotCiB2b2lkIFByb2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0
ZShHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCkBAIC0yNDM1LDEyICsyMzM1LDcgQEAgY29uc3QgUHJvZ3JhbUJpbmRpbmdzICZQcm9ncmFt
OjpnZXRBdHRyaWJ1dGVCaW5kaW5ncygpIGNvbnN0CiBjb25zdCBQcm9ncmFtQWxpYXNlZEJpbmRp
bmdzICZQcm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb25CaW5kaW5ncygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIHJldHVybiBtVW5pZm9ybUxvY2F0aW9uQmluZGlu
Z3M7Ci19Ci1jb25zdCBQcm9ncmFtQmluZGluZ3MgJlByb2dyYW06OmdldEZyYWdtZW50SW5wdXRC
aW5kaW5ncygpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIHJldHVy
biBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzOworICAgIHJldHVybiBtU3RhdGUubVVuaWZvcm1Mb2Nh
dGlvbkJpbmRpbmdzOwogfQogCiBDb21wb25lbnRUeXBlTWFzayBQcm9ncmFtOjpnZXREcmF3QnVm
ZmVyVHlwZU1hc2soKSBjb25zdApAQCAtMjQ0OCwxNiArMjM0Myw2IEBAIENvbXBvbmVudFR5cGVN
YXNrIFByb2dyYW06OmdldERyYXdCdWZmZXJUeXBlTWFzaygpIGNvbnN0CiAgICAgQVNTRVJUKG1M
aW5rUmVzb2x2ZWQpOwogICAgIHJldHVybiBtU3RhdGUubURyYXdCdWZmZXJUeXBlTWFzazsKIH0K
LUNvbXBvbmVudFR5cGVNYXNrIFByb2dyYW06OmdldEF0dHJpYnV0ZXNUeXBlTWFzaygpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIHJldHVybiBtU3RhdGUubUF0dHJp
YnV0ZXNUeXBlTWFzazsKLX0KLUF0dHJpYnV0ZXNNYXNrIFByb2dyYW06OmdldEF0dHJpYnV0ZXNN
YXNrKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgcmV0dXJuIG1T
dGF0ZS5tQXR0cmlidXRlc01hc2s7Ci19CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPEdMc2l6ZWk+ICZQ
cm9ncmFtOjpnZXRUcmFuc2Zvcm1GZWVkYmFja1N0cmlkZXMoKSBjb25zdAogewpAQCAtMjU3NCwy
NiArMjQ1OSwyOSBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1heExlbmd0aCk7CiB9CiAKLWJv
b2wgUHJvZ3JhbTo6aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QK
K2Jvb2wgUHJvZ3JhbTo6aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwogICAgIEFTU0VSVChh
bmdsZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxHTGludD4obVN0YXRlLm1Vbmlmb3Jt
TG9jYXRpb25zLnNpemUoKSkpOwotICAgIHJldHVybiAobG9jYXRpb24gPj0gMCAmJiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkg
JiYKLSAgICAgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxvY2F0aW9uKV0udXNlZCgpKTsKKyAgICByZXR1cm4gKGxvY2F0aW9uLnZhbHVlID49IDAg
JiYKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24udmFsdWUpIDwgbVN0
YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSAmJgorICAgICAgICAgICAgbVN0YXRlLm1Vbmlm
b3JtTG9jYXRpb25zW3N0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24udmFsdWUpXS51c2VkKCkp
OwogfQogCi1jb25zdCBMaW5rZWRVbmlmb3JtICZQcm9ncmFtOjpnZXRVbmlmb3JtQnlMb2NhdGlv
bihHTGludCBsb2NhdGlvbikgY29uc3QKK2NvbnN0IExpbmtlZFVuaWZvcm0gJlByb2dyYW06Omdl
dFVuaWZvcm1CeUxvY2F0aW9uKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3QKIHsKICAg
ICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgQVNTRVJUKGxvY2F0aW9uID49IDAgJiYgc3Rh
dGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikgPCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMuc2l6
ZSgpKTsKKyAgICBBU1NFUlQobG9jYXRpb24udmFsdWUgPj0gMCAmJgorICAgICAgICAgICBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uLnZhbHVlKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9u
cy5zaXplKCkpOwogICAgIHJldHVybiBtU3RhdGUubVVuaWZvcm1zW21TdGF0ZS5nZXRVbmlmb3Jt
SW5kZXhGcm9tTG9jYXRpb24obG9jYXRpb24pXTsKIH0KIAotY29uc3QgVmFyaWFibGVMb2NhdGlv
biAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdAorY29u
c3QgVmFyaWFibGVMb2NhdGlvbiAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0g
ICAgQVNTRVJUKGxvY2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikg
PCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKTsKLSAgICByZXR1cm4gbVN0YXRlLm1V
bmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBBU1NFUlQobG9jYXRpb24udmFsdWUgPj0g
MCAmJgorICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uLnZhbHVlKSA8IG1T
dGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOworICAgIHJldHVybiBtU3RhdGUubVVuaWZv
cm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdOwogfQogCiBjb25zdCBCdWZmZXJWYXJpYWJsZSAm
UHJvZ3JhbTo6Z2V0QnVmZmVyVmFyaWFibGVCeUluZGV4KEdMdWludCBpbmRleCkgY29uc3QKQEAg
LTI2MDMsMTAgKzI0OTEsMTAgQEAgY29uc3QgQnVmZmVyVmFyaWFibGUgJlByb2dyYW06OmdldEJ1
ZmZlclZhcmlhYmxlQnlJbmRleChHTHVpbnQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIG1TdGF0
ZS5tQnVmZmVyVmFyaWFibGVzW2luZGV4XTsKIH0KIAotR0xpbnQgUHJvZ3JhbTo6Z2V0VW5pZm9y
bUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAorVW5pZm9ybUxvY2F0aW9u
IFByb2dyYW06OmdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29u
c3QKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgcmV0dXJuIEdldFZhcmlhYmxl
TG9jYXRpb24obVN0YXRlLm1Vbmlmb3JtcywgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLCBuYW1l
KTsKKyAgICByZXR1cm4ge0dldFZhcmlhYmxlTG9jYXRpb24obVN0YXRlLm1Vbmlmb3JtcywgbVN0
YXRlLm1Vbmlmb3JtTG9jYXRpb25zLCBuYW1lKX07CiB9CiAKIEdMdWludCBQcm9ncmFtOjpnZXRV
bmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CkBAIC0yNjE1LDQ1ICsy
NTAzLDg4IEBAIEdMdWludCBQcm9ncmFtOjpnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG1TdGF0ZS5nZXRVbmlmb3JtSW5kZXhGcm9tTmFt
ZShuYW1lKTsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBQcm9ncmFtOjpzaG91bGRJ
Z25vcmVVbmlmb3JtKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3QKK3sKKyAgICBpZiAo
bG9jYXRpb24udmFsdWUgPT0gLTEpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBpZiAobVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW3N0YXRpY19jYXN0PHNpemVfdD4o
bG9jYXRpb24udmFsdWUpXS5pZ25vcmVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0x
ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJsZUxv
Y2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25d
OworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbklu
Zm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdOwogICAgIEdMc2l6
ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1wVW5pZm9ybUNvdW50KGxvY2F0
aW9uSW5mbywgY291bnQsIDEsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0
aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0
aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZv
cm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit2
b2lkIFByb2dyYW06OnNldFVuaWZvcm0yZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVk
KTsKLSAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVu
aWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxv
Y2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBWYXJp
YWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9j
YXRpb24udmFsdWVdOwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAgICA9
IGNsYW1wVW5pZm9ybUNvdW50KGxvY2F0aW9uSW5mbywgY291bnQsIDIsIHYpOwotICAgIG1Qcm9n
cmFtLT5zZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9n
cmFtLT5zZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogfQog
Ci12b2lkIFByb2dyYW06OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0zZnYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewog
ICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZs
b2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOworICAgIGlm
IChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3Rh
dGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdOwogICAgIEdMc2l6ZWkgY2xhbXBl
ZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1wVW5pZm9ybUNvdW50KGxvY2F0aW9uSW5mbywg
Y291bnQsIDMsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCBjbGFt
cGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLnZhbHVl
LCBjbGFtcGVkQ291bnQsIHYpOwogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZvcm00ZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit2b2lkIFByb2dy
YW06OnNldFVuaWZvcm00ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBj
b25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2Nh
dGlvbnNbbG9jYXRpb25dOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkK
KyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0
aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFs
dWVdOwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1wVW5p
Zm9ybUNvdW50KGxvY2F0aW9uSW5mbywgY291bnQsIDQsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRV
bmlmb3JtNGZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRV
bmlmb3JtNGZ2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCi12b2lkIFBy
b2dyYW06OnNldFVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQordm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtMWl2
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAg
QVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0
aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgaWYgKHNo
b3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5t
VW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFtcGVkQ291
bnQgICAgICAgICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZvLCBjb3Vu
dCwgMSwgdik7CiAKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTFpdihsb2NhdGlvbiwgY2xhbXBl
ZENvdW50LCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTFpdihsb2NhdGlvbi52YWx1ZSwg
Y2xhbXBlZENvdW50LCB2KTsKIAogICAgIGlmIChtU3RhdGUuaXNTYW1wbGVyVW5pZm9ybUluZGV4
KGxvY2F0aW9uSW5mby5pbmRleCkpCiAgICAgewpAQCAtMjY2MSwxNTAgKzI1OTIsMjMwIEBAIHZv
aWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTFpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uCiAgICAgfQogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZv
cm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQordm9p
ZCBQcm9ncmFtOjpzZXRVbmlmb3JtMml2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwot
ICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9y
bUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRp
b24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFZhcmlhYmxl
TG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlv
bi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgICAgICAgICAgICAgICAgID0gY2xh
bXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZvLCBjb3VudCwgMiwgdik7Ci0gICAgbVByb2dyYW0t
PnNldFVuaWZvcm0yaXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7CisgICAgbVByb2dyYW0t
PnNldFVuaWZvcm0yaXYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKLXZv
aWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnYpCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0zaXYoVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKICAgICBBU1NF
UlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25J
bmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBpZiAoc2hvdWxk
SWdub3JlVW5pZm9ybShsb2NhdGlvbikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlm
b3JtTG9jYXRpb25zW2xvY2F0aW9uLnZhbHVlXTsKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCAg
ICAgICAgICAgICAgICAgPSBjbGFtcFVuaWZvcm1Db3VudChsb2NhdGlvbkluZm8sIGNvdW50LCAz
LCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbiwgY2xhbXBlZENvdW50
LCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbi52YWx1ZSwgY2xhbXBl
ZENvdW50LCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybTRpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJs
ZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRp
b25dOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlv
bkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdOwogICAgIEdM
c2l6ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1wVW5pZm9ybUNvdW50KGxv
Y2F0aW9uSW5mbywgY291bnQsIDQsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtNGl2KGxv
Y2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtNGl2KGxv
Y2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCi12b2lkIFByb2dyYW06OnNldFVu
aWZvcm0xdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYp
Cit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0xdWl2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29s
dmVkKTsKLSAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUu
bVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3Jt
KGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBW
YXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNb
bG9jYXRpb24udmFsdWVdOwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAg
ICA9IGNsYW1wVW5pZm9ybUNvdW50KGxvY2F0aW9uSW5mbywgY291bnQsIDEsIHYpOwotICAgIG1Q
cm9ncmFtLT5zZXRVbmlmb3JtMXVpdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB2KTsKKyAgICBt
UHJvZ3JhbS0+c2V0VW5pZm9ybTF1aXYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdik7
CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTJ1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTJ1aXYo
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYp
CiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRp
b24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07Cisg
ICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9
IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBj
bGFtcGVkQ291bnQgICAgICAgICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25J
bmZvLCBjb3VudCwgMiwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0ydWl2KGxvY2F0aW9u
LCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtMnVpdihsb2NhdGlv
bi52YWx1ZSwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3Jt
M3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQordm9p
ZCBQcm9ncmFtOjpzZXRVbmlmb3JtM3VpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7
Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlm
b3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBpZiAoc2hvdWxkSWdub3JlVW5pZm9ybShsb2Nh
dGlvbikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgVmFyaWFi
bGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0
aW9uLnZhbHVlXTsKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCAgICAgICAgICAgICAgICAgPSBj
bGFtcFVuaWZvcm1Db3VudChsb2NhdGlvbkluZm8sIGNvdW50LCAzLCB2KTsKLSAgICBtUHJvZ3Jh
bS0+c2V0VW5pZm9ybTN1aXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7CisgICAgbVByb2dy
YW0tPnNldFVuaWZvcm0zdWl2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogfQog
Ci12b2lkIFByb2dyYW06OnNldFVuaWZvcm00dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnYpCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm00dWl2KFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewog
ICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZs
b2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOworICAgIGlm
IChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3Rh
dGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdOwogICAgIEdMc2l6ZWkgY2xhbXBl
ZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1wVW5pZm9ybUNvdW50KGxvY2F0aW9uSW5mbywg
Y291bnQsIDQsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtNHVpdihsb2NhdGlvbiwgY2xh
bXBlZENvdW50LCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTR1aXYobG9jYXRpb24udmFs
dWUsIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJp
eDJmdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDJmdihV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOworICAgIGlmIChzaG91
bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IGNsYW1wTWF0cml4VW5pZm9ybUNvdW50PDIs
IDI+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOworICAg
IG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291
bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDNm
dihHTGludCBsb2NhdGlvbiwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDNmdihVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOworICAgIGlmIChzaG91bGRJ
Z25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IGNsYW1wTWF0cml4VW5pZm9ybUNvdW50PDMsIDM+
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIG1Q
cm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQs
IHRyYW5zcG9zZSwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDRmdihH
TGludCBsb2NhdGlvbiwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDRmdihVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOworICAgIGlmIChzaG91bGRJZ25v
cmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IGNsYW1wTWF0cml4VW5pZm9ybUNvdW50PDQsIDQ+KGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIG1Qcm9n
cmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHRy
YW5zcG9zZSwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KEdM
aW50IGxvY2F0aW9uLAordm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4MngzZnYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKKyAgICBpZiAoc2hv
dWxkSWdub3JlVW5pZm9ybShsb2NhdGlvbikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBjbGFtcE1hdHJpeFVuaWZvcm1Db3VudDwy
LCAzPihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVu
aWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwor
ICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24udmFsdWUsIGNsYW1w
ZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0
cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgy
eDRmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwor
ICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IGNsYW1wTWF0cml4VW5p
Zm9ybUNvdW50PDIsIDQ+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJv
Z3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHRyYW5z
cG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbi52
YWx1ZSwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lkIFByb2dyYW06OnNl
dFVuaWZvcm1NYXRyaXgzeDJmdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybU1hdHJpeDN4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBBU1NFUlQobUxpbmtS
ZXNvbHZlZCk7CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gY2xh
bXBNYXRyaXhVbmlmb3JtQ291bnQ8MywgMj4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYp
OwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIGNsYW1wZWRD
b3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDN4MmZ2
KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKLXZvaWQg
UHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLAordm9pZCBQcm9n
cmFtOjpzZXRVbmlmb3JtTWF0cml4M3g0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIEFT
U0VSVChtTGlua1Jlc29sdmVkKTsKKyAgICBpZiAoc2hvdWxkSWdub3JlVW5pZm9ybShsb2NhdGlv
bikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgR0xzaXplaSBjbGFtcGVk
Q291bnQgPSBjbGFtcE1hdHJpeFVuaWZvcm1Db3VudDwzLCA0Pihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlv
biwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3Jt
TWF0cml4M3g0ZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsK
IH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24s
Cit2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXg0eDJmdihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnYp
CiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlm
b3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBHTHNp
emVpIGNsYW1wZWRDb3VudCA9IGNsYW1wTWF0cml4VW5pZm9ybUNvdW50PDQsIDI+KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4
MmZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0t
PnNldFVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbi52YWx1ZSwgY2xhbXBlZENvdW50LCB0cmFu
c3Bvc2UsIHYpOwogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXg0eDNmdihHTGlu
dCBsb2NhdGlvbiwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdikKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CisgICAgaWYgKHNob3Vs
ZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gY2xhbXBNYXRyaXhVbmlmb3JtQ291bnQ8NCwg
Mz4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlm
b3JtTWF0cml4NHgzZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAg
ICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVk
Q291bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKIEdMdWludCBQcm9ncmFtOjpnZXRTYW1wbGVyVW5p
Zm9ybUJpbmRpbmcoY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmdW5pZm9ybUxvY2F0aW9uKSBjb25z
dApAQCAtMjgyNCwxMCArMjgzNSwxMCBAQCBHTHVpbnQgUHJvZ3JhbTo6Z2V0SW1hZ2VVbmlmb3Jt
QmluZGluZyhjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZ1bmlmb3JtTG9jYXRpb24pCiAgICAgcmV0
dXJuIGJvdW5kSW1hZ2VVbml0c1t1bmlmb3JtTG9jYXRpb24uYXJyYXlJbmRleF07CiB9CiAKLXZv
aWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxv
Y2F0aW9uLCBHTGZsb2F0ICp2KSBjb25zdAordm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtZnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGZsb2F0ICp2
KSBjb25zdAogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJs
ZUxvY2F0aW9uICZ1bmlmb3JtTG9jYXRpb24gPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygp
W2xvY2F0aW9uXTsKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZ1bmlmb3JtTG9jYXRpb24g
PSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0aW9uLnZhbHVlXTsKICAgICBjb25z
dCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtICAgICAgICAgICAgPSBtU3RhdGUuZ2V0VW5pZm9ybXMo
KVt1bmlmb3JtTG9jYXRpb24uaW5kZXhdOwogCiAgICAgaWYgKHVuaWZvcm0uaXNTYW1wbGVyKCkp
CkBAIC0yODQ0LDcgKzI4NTUsNyBAQCB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1mdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqdikgYwogICAgIGNvbnN0
IEdMZW51bSBuYXRpdmVUeXBlID0gZ2w6OlZhcmlhYmxlQ29tcG9uZW50VHlwZSh1bmlmb3JtLnR5
cGUpOwogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0ZMT0FUKQogICAgIHsKLSAgICAgICAgbVBy
b2dyYW0tPmdldFVuaWZvcm1mdihjb250ZXh0LCBsb2NhdGlvbiwgdik7CisgICAgICAgIG1Qcm9n
cmFtLT5nZXRVbmlmb3JtZnYoY29udGV4dCwgbG9jYXRpb24udmFsdWUsIHYpOwogICAgIH0KICAg
ICBlbHNlCiAgICAgewpAQCAtMjg1MiwxMCArMjg2MywxMCBAQCB2b2lkIFByb2dyYW06OmdldFVu
aWZvcm1mdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAq
dikgYwogICAgIH0KIH0KIAotdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtaXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICp2KSBjb25zdAordm9pZCBQcm9ncmFt
OjpnZXRVbmlmb3JtaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLCBHTGludCAqdikgY29uc3QKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0g
ICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmdW5pZm9ybUxvY2F0aW9uID0gbVN0YXRlLmdldFVu
aWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl07CisgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAm
dW5pZm9ybUxvY2F0aW9uID0gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbi52
YWx1ZV07CiAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSAgICAgICAgICAgID0gbVN0
YXRlLmdldFVuaWZvcm1zKClbdW5pZm9ybUxvY2F0aW9uLmluZGV4XTsKIAogICAgIGlmICh1bmlm
b3JtLmlzU2FtcGxlcigpKQpAQCAtMjg3Miw3ICsyODgzLDcgQEAgdm9pZCBQcm9ncmFtOjpnZXRV
bmlmb3JtaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICp2
KSBjb24KICAgICBjb25zdCBHTGVudW0gbmF0aXZlVHlwZSA9IGdsOjpWYXJpYWJsZUNvbXBvbmVu
dFR5cGUodW5pZm9ybS50eXBlKTsKICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlQgfHwgbmF0
aXZlVHlwZSA9PSBHTF9CT09MKQogICAgIHsKLSAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm1p
dihjb250ZXh0LCBsb2NhdGlvbiwgdik7CisgICAgICAgIG1Qcm9ncmFtLT5nZXRVbmlmb3JtaXYo
Y29udGV4dCwgbG9jYXRpb24udmFsdWUsIHYpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAt
Mjg4MCwxMCArMjg5MSwxMCBAQCB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1pdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnYpIGNvbgogICAgIH0KIH0KIAot
dm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50
IGxvY2F0aW9uLCBHTHVpbnQgKnYpIGNvbnN0Cit2b2lkIFByb2dyYW06OmdldFVuaWZvcm11aXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHVpbnQg
KnYpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlh
YmxlTG9jYXRpb24gJnVuaWZvcm1Mb2NhdGlvbiA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25z
KClbbG9jYXRpb25dOworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJnVuaWZvcm1Mb2NhdGlv
biA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb24udmFsdWVdOwogICAgIGNv
bnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gICAgICAgICAgICA9IG1TdGF0ZS5nZXRVbmlmb3Jt
cygpW3VuaWZvcm1Mb2NhdGlvbi5pbmRleF07CiAKICAgICBpZiAodW5pZm9ybS5pc1NhbXBsZXIo
KSkKQEAgLTI5MDAsNyArMjkxMSw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybXVpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0x1aW50ICp2KSBjCiAgICAgY29u
c3QgR0xlbnVtIG5hdGl2ZVR5cGUgPSBWYXJpYWJsZUNvbXBvbmVudFR5cGUodW5pZm9ybS50eXBl
KTsKICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCiAgICAgewotICAgICAg
ICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybXVpdihjb250ZXh0LCBsb2NhdGlvbiwgdik7CisgICAgICAg
IG1Qcm9ncmFtLT5nZXRVbmlmb3JtdWl2KGNvbnRleHQsIGxvY2F0aW9uLnZhbHVlLCB2KTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTI5MjMsMjggKzI5MzQsMzAgQEAgYm9vbCBQcm9ncmFt
Ojppc0ZsYWdnZWRGb3JEZWxldGlvbigpIGNvbnN0CiB2b2lkIFByb2dyYW06OnZhbGlkYXRlKGNv
bnN0IENhcHMgJmNhcHMpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIG1JbmZv
TG9nLnJlc2V0KCk7CisgICAgbVN0YXRlLm1FeGVjdXRhYmxlLnJlc2V0SW5mb0xvZygpOworICAg
IEluZm9Mb2cgJmluZm9Mb2cgPSBtU3RhdGUubUV4ZWN1dGFibGUuZ2V0SW5mb0xvZygpOwogCiAg
ICAgaWYgKG1MaW5rZWQpCiAgICAgewotICAgICAgICBtVmFsaWRhdGVkID0gQ29udmVydFRvQm9v
bChtUHJvZ3JhbS0+dmFsaWRhdGUoY2FwcywgJm1JbmZvTG9nKSk7CisgICAgICAgIG1WYWxpZGF0
ZWQgPSBDb252ZXJ0VG9Cb29sKG1Qcm9ncmFtLT52YWxpZGF0ZShjYXBzLCAmaW5mb0xvZykpOwog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBtSW5mb0xvZyA8PCAiUHJvZ3JhbSBoYXMg
bm90IGJlZW4gc3VjY2Vzc2Z1bGx5IGxpbmtlZC4iOworICAgICAgICBpbmZvTG9nIDw8ICJQcm9n
cmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkLiI7CiAgICAgfQogfQogCiBib29s
IFByb2dyYW06OnZhbGlkYXRlU2FtcGxlcnNJbXBsKEluZm9Mb2cgKmluZm9Mb2csIGNvbnN0IENh
cHMgJmNhcHMpCiB7CisgICAgY29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUgJmV4ZWN1dGFibGUgPSBt
U3RhdGUubUV4ZWN1dGFibGU7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwogCiAgICAgLy8g
aWYgYW55IHR3byBhY3RpdmUgc2FtcGxlcnMgaW4gYSBwcm9ncmFtIGFyZSBvZiBkaWZmZXJlbnQg
dHlwZXMsIGJ1dCByZWZlciB0byB0aGUgc2FtZQogICAgIC8vIHRleHR1cmUgaW1hZ2UgdW5pdCwg
YW5kIHRoaXMgaXMgdGhlIGN1cnJlbnQgcHJvZ3JhbSwgdGhlbiBWYWxpZGF0ZVByb2dyYW0gd2ls
bCBmYWlsLCBhbmQKICAgICAvLyBEcmF3QXJyYXlzIGFuZCBEcmF3RWxlbWVudHMgd2lsbCBpc3N1
ZSB0aGUgSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IuCi0gICAgZm9yIChzaXplX3QgdGV4dHVyZVVu
aXQgOiBtU3RhdGUubUFjdGl2ZVNhbXBsZXJzTWFzaykKKyAgICBmb3IgKHNpemVfdCB0ZXh0dXJl
VW5pdCA6IGV4ZWN1dGFibGUubUFjdGl2ZVNhbXBsZXJzTWFzaykKICAgICB7Ci0gICAgICAgIGlm
IChtU3RhdGUubUFjdGl2ZVNhbXBsZXJUeXBlc1t0ZXh0dXJlVW5pdF0gPT0gVGV4dHVyZVR5cGU6
OkludmFsaWRFbnVtKQorICAgICAgICBpZiAoZXhlY3V0YWJsZS5tQWN0aXZlU2FtcGxlclR5cGVz
W3RleHR1cmVVbml0XSA9PSBUZXh0dXJlVHlwZTo6SW52YWxpZEVudW0pCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChpbmZvTG9nKQogICAgICAgICAgICAgewpAQCAtMzI1OSw3ICszMjcyLDcg
QEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVTaGFkZXJzKEluZm9Mb2cgJmluZm9Mb2cpCiAg
ICAgICAgICAgICBpZiAodmVydGV4U2hhZGVyICYmCiAgICAgICAgICAgICAgICAgKGdlb21ldHJ5
U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gdmVydGV4U2hhZGVyLT5nZXRTaGFkZXJWZXJz
aW9uKCkpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1JbmZvTG9nIDw8ICJHZW9t
ZXRyeSBzaGFkZXIgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB2ZXJ0ZXggc2hhZGVyIHZlcnNpb24u
IjsKKyAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJHZW9tZXRyeSBzaGFkZXIgdmVyc2lvbiBk
b2VzIG5vdCBtYXRjaCB2ZXJ0ZXggc2hhZGVyIHZlcnNpb24uIjsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZ2VvbWV0cnlT
aGFkZXItPmdldFR5cGUoKSA9PSBTaGFkZXJUeXBlOjpHZW9tZXRyeSk7CkBAIC0zMjY4LDcgKzMy
ODEsNyBAQCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVNoYWRlcnMoSW5mb0xvZyAmaW5mb0xv
ZykKICAgICAgICAgICAgICAgICBnZW9tZXRyeVNoYWRlci0+Z2V0R2VvbWV0cnlTaGFkZXJJbnB1
dFByaW1pdGl2ZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghaW5wdXRQcmltaXRpdmUudmFsaWQo
KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtSW5mb0xvZyA8PCAiSW5wdXQgcHJp
bWl0aXZlIHR5cGUgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgZ2VvbWV0cnkgc2hhZGVyLiI7Cisg
ICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAiSW5wdXQgcHJpbWl0aXZlIHR5cGUgaXMgbm90IHNw
ZWNpZmllZCBpbiB0aGUgZ2VvbWV0cnkgc2hhZGVyLiI7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC0zMjc2LDE0ICszMjg5LDE0IEBAIGJvb2wgUHJv
Z3JhbTo6bGlua1ZhbGlkYXRlU2hhZGVycyhJbmZvTG9nICZpbmZvTG9nKQogICAgICAgICAgICAg
ICAgIGdlb21ldHJ5U2hhZGVyLT5nZXRHZW9tZXRyeVNoYWRlck91dHB1dFByaW1pdGl2ZVR5cGUo
KTsKICAgICAgICAgICAgIGlmICghb3V0cHV0UHJpbWl0aXZlLnZhbGlkKCkpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbUluZm9Mb2cgPDwgIk91dHB1dCBwcmltaXRpdmUgdHlwZSBp
cyBub3Qgc3BlY2lmaWVkIGluIHRoZSBnZW9tZXRyeSBzaGFkZXIuIjsKKyAgICAgICAgICAgICAg
ICBpbmZvTG9nIDw8ICJPdXRwdXQgcHJpbWl0aXZlIHR5cGUgaXMgbm90IHNwZWNpZmllZCBpbiB0
aGUgZ2VvbWV0cnkgc2hhZGVyLiI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBPcHRpb25hbDxHTGludD4gbWF4VmVydGljZXMgPSBn
ZW9tZXRyeVNoYWRlci0+Z2V0R2VvbWV0cnlTaGFkZXJNYXhWZXJ0aWNlcygpOwogICAgICAgICAg
ICAgaWYgKCFtYXhWZXJ0aWNlcy52YWxpZCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG1JbmZvTG9nIDw8ICInbWF4X3ZlcnRpY2VzJyBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBn
ZW9tZXRyeSBzaGFkZXIuIjsKKyAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICInbWF4X3ZlcnRp
Y2VzJyBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBnZW9tZXRyeSBzaGFkZXIuIjsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKQEAgLTMzOTQsMTEgKzM0MDcs
NiBAQCBib29sIFByb2dyYW06OmxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFsaW5rVmFsaWRhdGVGcmFn
bWVudElucHV0QmluZGluZ3MoaW5mb0xvZykpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM0NzMsNDQgKzM0ODEsNiBAQCBi
b29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVNoYWRlckludGVyZmFjZU1hdGNoaW5nKGdsOjpTaGFk
ZXIgKmdlbmVyYXRpbmdTaGFkZXIsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJvZ3Jh
bTo6bGlua1ZhbGlkYXRlRnJhZ21lbnRJbnB1dEJpbmRpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9n
KSBjb25zdAotewotICAgIHN0ZDo6bWFwPEdMdWludCwgc3RkOjpzdHJpbmc+IHN0YXRpY0ZyYWdt
ZW50SW5wdXRMb2NhdGlvbnM7Ci0KLSAgICBTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRl
Lm1BdHRhY2hlZFNoYWRlcnNbU2hhZGVyVHlwZTo6RnJhZ21lbnRdOwotCi0gICAgaWYgKCFmcmFn
bWVudFNoYWRlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGZv
ciAoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZpbnB1dCA6IGZyYWdtZW50U2hhZGVyLT5nZXRJ
bnB1dFZhcnlpbmdzKCkpCi0gICAgewotICAgICAgICBpZiAoaW5wdXQuaXNCdWlsdEluKCkgfHwg
IWlucHV0LnN0YXRpY1VzZSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBhdXRvIGlucHV0QmluZGluZyA9IG1GcmFnbWVudElucHV0
QmluZGluZ3MuZ2V0QmluZGluZyhpbnB1dCk7Ci0gICAgICAgIGlmIChpbnB1dEJpbmRpbmcgPT0g
LTEpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvIGl0ID0gc3Rh
dGljRnJhZ21lbnRJbnB1dExvY2F0aW9ucy5maW5kKGlucHV0QmluZGluZyk7Ci0gICAgICAgIGlm
IChpdCA9PSBzdGQ6OmVuZChzdGF0aWNGcmFnbWVudElucHV0TG9jYXRpb25zKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljRnJhZ21lbnRJbnB1dExvY2F0aW9ucy5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIoaW5wdXRCaW5kaW5nLCBpbnB1dC5uYW1lKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvTG9nIDw8ICJCaW5kaW5nIGZvciBmcmFn
bWVudCBpbnB1dCAiIDw8IGlucHV0Lm5hbWUgPDwgIiBjb25mbGljdHMgd2l0aCAiCi0gICAgICAg
ICAgICAgICAgICAgIDw8IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBQcm9ncmFtOjps
aW5rVW5pZm9ybXMoY29uc3QgQ2FwcyAmY2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlcnNpb24gJnZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZv
TG9nICZpbmZvTG9nLApAQCAtMzc3Niw4ICszNzQ2LDggQEAgYm9vbCBQcm9ncmFtOjpsaW5rQXR0
cmlidXRlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBJbmZvTG9nICZpbmZvTG9nKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgQVNTRVJUKG1TdGF0ZS5tQXR0cmlidXRlc1R5cGVNYXNrLm5vbmUo
KSk7Ci0gICAgQVNTRVJUKG1TdGF0ZS5tQXR0cmlidXRlc01hc2subm9uZSgpKTsKKyAgICBBU1NF
UlQobVN0YXRlLm1FeGVjdXRhYmxlLm1BdHRyaWJ1dGVzVHlwZU1hc2subm9uZSgpKTsKKyAgICBB
U1NFUlQobVN0YXRlLm1FeGVjdXRhYmxlLm1BdHRyaWJ1dGVzTWFzay5ub25lKCkpOwogCiAgICAg
Ly8gUHJ1bmUgaW5hY3RpdmUgYXR0cmlidXRlcy4gVGhpcyBzdGVwIGlzIG9ubHkgbmVlZGVkIG9u
IHNoYWRlclZlcnNpb24gPj0gMzAwIHNpbmNlIG9uIGVhcmxpZXIKICAgICAvLyBzaGFkZXIgdmVy
c2lvbnMgd2UncmUgb25seSBwcm9jZXNzaW5nIGFjdGl2ZSBhdHRyaWJ1dGVzIHRvIGJlZ2luIHdp
dGguCkBAIC0zODA5LDE1ICszNzc5LDE2IEBAIGJvb2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgSW5mb0xvZyAmaW5mb0xvZykKICAgICAgICAgICAgIC8v
IEJ1aWx0LWluIGFjdGl2ZSBwcm9ncmFtIGlucHV0cyBkb24ndCBoYXZlIGEgYm91bmQgYXR0cmli
dXRlLgogICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUuaXNCdWlsdEluKCkpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrLnNl
dChsb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgbVN0YXRlLm1NYXhBY3RpdmVBdHRyaWJMb2Nh
dGlvbiA9Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1TdGF0ZS5tTWF4QWN0aXZlQXR0
cmliTG9jYXRpb24sIGxvY2F0aW9uICsgMSk7CisgICAgICAgICAgICAgICAgbVN0YXRlLm1FeGVj
dXRhYmxlLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrLnNldChsb2NhdGlvbik7CisgICAgICAg
ICAgICAgICAgbVN0YXRlLm1FeGVjdXRhYmxlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbiA9Cisg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KG1TdGF0ZS5tRXhlY3V0YWJsZS5tTWF4QWN0aXZl
QXR0cmliTG9jYXRpb24sIGxvY2F0aW9uICsgMSk7CiAKICAgICAgICAgICAgICAgICBDb21wb25l
bnRUeXBlIGNvbXBvbmVudFR5cGUgPQogICAgICAgICAgICAgICAgICAgICBHTGVudW1Ub0NvbXBv
bmVudFR5cGUoVmFyaWFibGVDb21wb25lbnRUeXBlKGF0dHJpYnV0ZS50eXBlKSk7CiAKLSAgICAg
ICAgICAgICAgICBTZXRDb21wb25lbnRUeXBlTWFzayhjb21wb25lbnRUeXBlLCBsb2NhdGlvbiwg
Jm1TdGF0ZS5tQXR0cmlidXRlc1R5cGVNYXNrKTsKLSAgICAgICAgICAgICAgICBtU3RhdGUubUF0
dHJpYnV0ZXNNYXNrLnNldChsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgU2V0Q29tcG9uZW50
VHlwZU1hc2soY29tcG9uZW50VHlwZSwgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJm1TdGF0ZS5tRXhlY3V0YWJsZS5tQXR0cmlidXRlc1R5cGVNYXNrKTsK
KyAgICAgICAgICAgICAgICBtU3RhdGUubUV4ZWN1dGFibGUubUF0dHJpYnV0ZXNNYXNrLnNldChs
b2NhdGlvbik7CiAKICAgICAgICAgICAgICAgICBsb2NhdGlvbisrOwogICAgICAgICAgICAgfQpA
QCAtNDEwNyw2ICs0MDc4LDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVCdWlsdEluVmFy
eWluZ3MoSW5mb0xvZyAmaW5mb0xvZykgY29uc3QKIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRl
VHJhbnNmb3JtRmVlZGJhY2soY29uc3QgVmVyc2lvbiAmdmVyc2lvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbU1lcmdlZFZh
cnlpbmdzICZ2YXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyVHlwZSBzdGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcykgY29uc3QKIHsKIApAQCAtNDE0Nyw3ICs0MTE5
LDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBW
ZXJzaW9uICZ2ZXJzaW9uLAogICAgICAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBpbnQ+IHN1YnNj
cmlwdHM7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gUGFyc2VSZXNvdXJjZU5hbWUo
dGZWYXJ5aW5nTmFtZSwgJnN1YnNjcmlwdHMpOwogCi0gICAgICAgIGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAqdmFyID0gRmluZFZhcnlpbmdPckZpZWxkKHZhcnlpbmdzLCBiYXNlTmFtZSk7Cisg
ICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyID0gRmluZE91dHB1dFZhcnlpbmdP
ckZpZWxkKHZhcnlpbmdzLCBzdGFnZSwgYmFzZU5hbWUpOwogICAgICAgICBpZiAodmFyID09IG51
bGxwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluZm9Mb2cgPDwgIlRyYW5zZm9ybSBmZWVk
YmFjayB2YXJ5aW5nICIgPDwgdGZWYXJ5aW5nTmFtZQpAQCAtNDMyOCw3ICs0MzAwLDggQEAgYm9v
bCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVHbG9iYWxOYW1lcyhJbmZvTG9nICZpbmZvTG9nKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFByb2dyYW06OmdhdGhlclRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MoY29uc3QgUHJvZ3JhbU1lcmdlZFZhcnlpbmdzICZ2YXJ5aW5ncykKK3Zv
aWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBQcm9ncmFt
TWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclR5cGUgc3RhZ2UpCiB7CiAgICAgLy8gR2F0aGVyIHRoZSBs
aW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0aGV5
IHNob3VsZCBhbGwgZXhpc3QuCiAgICAgbVN0YXRlLm1MaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzLmNsZWFyKCk7CkBAIC00MzQxLDkgKzQzMTQsMTQgQEAgdm9pZCBQcm9ncmFtOjpnYXRo
ZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyAm
dmFyeWkKICAgICAgICAgewogICAgICAgICAgICAgc3Vic2NyaXB0ID0gc3Vic2NyaXB0cy5iYWNr
KCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChjb25zdCBhdXRvICZyZWYgOiB2YXJ5aW5ncykK
KyAgICAgICAgZm9yIChjb25zdCBQcm9ncmFtVmFyeWluZ1JlZiAmcmVmIDogdmFyeWluZ3MpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyeWluZyA9
IHJlZi5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBpZiAocmVmLmZyb250U2hhZGVyU3RhZ2Ug
IT0gc3RhZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyeWlu
ZyA9IHJlZi5nZXQoc3RhZ2UpOwogICAgICAgICAgICAgaWYgKGJhc2VOYW1lID09IHZhcnlpbmct
Pm5hbWUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbVN0YXRlLm1MaW5rZWRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzLmVtcGxhY2VfYmFjaygKQEAgLTQzNjYsMjUgKzQzNDQsMTEz
IEBAIHZvaWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBQ
cm9ncmFtTWVyZ2VkVmFyeWluZ3MgJnZhcnlpCiAKIFByb2dyYW1NZXJnZWRWYXJ5aW5ncyBQcm9n
cmFtOjpnZXRNZXJnZWRWYXJ5aW5ncygpIGNvbnN0CiB7CisgICAgQVNTRVJUKG1TdGF0ZS5tQXR0
YWNoZWRTaGFkZXJzW1NoYWRlclR5cGU6OkNvbXB1dGVdID09IG51bGxwdHIpOworCisgICAgLy8g
VmFyeWluZ3MgYXJlIG1hdGNoZWQgYmV0d2VlbiBwYWlycyBvZiBjb25zZWN1dGl2ZSBzdGFnZXMs
IGJ5IGxvY2F0aW9uIGlmIGFzc2lnbmVkIG9yCisgICAgLy8gYnkgbmFtZSBvdGhlcndpc2UuICBO
b3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3Igb25lIHN0YWdlIHRvIHNwZWNpZnkgbG9jYXRpb24g
YW5kIHRoZSBvdGhlcgorICAgIC8vIG5vdDogaHR0cHM6Ly9jdnMua2hyb25vcy5vcmcvYnVnemls
bGEvc2hvd19idWcuY2dpP2lkPTE2MjYxCisKKyAgICAvLyBNYXAgc3RhZ2VzIHRvIHRoZSBwcmV2
aW91cyBhY3RpdmUgc3RhZ2UgaW4gdGhlIHJlbmRlcmluZyBwaXBlbGluZS4gIFdoZW4gbG9va2lu
ZyBhdCBpbnB1dAorICAgIC8vIHZhcnlpbmdzIG9mIGEgc3RhZ2UsIHRoaXMgaXMgdXNlZCB0byBm
aW5kIHRoZSBzdGFnZSB3aG9zZSBvdXRwdXQgdmFyeWluZ3MgYXJlIGJlaW5nIGxpbmtlZAorICAg
IC8vIHdpdGggdGhlbS4KKyAgICBTaGFkZXJNYXA8U2hhZGVyVHlwZT4gcHJldmlvdXNBY3RpdmVT
dGFnZTsKKworICAgIC8vIE5vdGUgdGhhdCBrQWxsR3JhcGhpY3NTaGFkZXJUeXBlcyBpcyBzb3J0
ZWQgYWNjb3JkaW5nIHRvIHRoZSByZW5kZXJpbmcgcGlwZWxpbmUuCisgICAgU2hhZGVyVHlwZSBs
YXN0QWN0aXZlU3RhZ2UgPSBTaGFkZXJUeXBlOjpJbnZhbGlkRW51bTsKKyAgICBmb3IgKFNoYWRl
clR5cGUgc3RhZ2UgOiBrQWxsR3JhcGhpY3NTaGFkZXJUeXBlcykKKyAgICB7CisgICAgICAgIHBy
ZXZpb3VzQWN0aXZlU3RhZ2Vbc3RhZ2VdID0gbGFzdEFjdGl2ZVN0YWdlOworICAgICAgICBpZiAo
bVN0YXRlLm1BdHRhY2hlZFNoYWRlcnNbc3RhZ2VdKQorICAgICAgICB7CisgICAgICAgICAgICBs
YXN0QWN0aXZlU3RhZ2UgPSBzdGFnZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZpcnN0
LCBnbyB0aHJvdWdoIG91dHB1dCB2YXJ5aW5ncyBhbmQgY3JlYXRlIHR3byBtYXBzIChvbmUgYnkg
bmFtZSwgb25lIGJ5IGxvY2F0aW9uKSBmb3IKKyAgICAvLyBmYXN0ZXIgbG9va3VwIHdoZW4gbWF0
Y2hpbmcgaW5wdXQgdmFyeWluZ3MuCisKKyAgICBTaGFkZXJNYXA8c3RkOjptYXA8c3RkOjpzdHJp
bmcsIHNpemVfdD4+IG91dHB1dFZhcnlpbmdOYW1lVG9JbmRleDsKKyAgICBTaGFkZXJNYXA8c3Rk
OjptYXA8aW50LCBzaXplX3Q+PiBvdXRwdXRWYXJ5aW5nTG9jYXRpb25Ub0luZGV4OworCiAgICAg
UHJvZ3JhbU1lcmdlZFZhcnlpbmdzIG1lcmdlZDsKIAorICAgIC8vIEdhdGhlciBvdXRwdXQgdmFy
eWluZ3MuCiAgICAgZm9yIChTaGFkZXIgKnNoYWRlciA6IG1TdGF0ZS5tQXR0YWNoZWRTaGFkZXJz
KQogICAgIHsKLSAgICAgICAgaWYgKHNoYWRlcikKKyAgICAgICAgaWYgKCFzaGFkZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIFNoYWRlclR5
cGUgc3RhZ2UgPSBzaGFkZXItPmdldFR5cGUoKTsKKworICAgICAgICBmb3IgKGNvbnN0IHNoOjpT
aGFkZXJWYXJpYWJsZSAmdmFyeWluZyA6IHNoYWRlci0+Z2V0T3V0cHV0VmFyeWluZ3MoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgbWVyZ2VkLnB1c2hfYmFjayh7fSk7CisgICAgICAgICAgICBQ
cm9ncmFtVmFyeWluZ1JlZiAqcmVmID0gJm1lcmdlZC5iYWNrKCk7CisKKyAgICAgICAgICAgIHJl
Zi0+ZnJvbnRTaGFkZXIgICAgICA9ICZ2YXJ5aW5nOworICAgICAgICAgICAgcmVmLT5mcm9udFNo
YWRlclN0YWdlID0gc3RhZ2U7CisKKyAgICAgICAgICAgIC8vIEFsd2F5cyBtYXAgYnkgbmFtZS4g
IEV2ZW4gaWYgbG9jYXRpb24gaXMgcHJvdmlkZWQgaW4gdGhpcyBzdGFnZSwgaXQgbWF5IG5vdCBi
ZSBpbiB0aGUKKyAgICAgICAgICAgIC8vIHBhaXJlZCBzdGFnZS4KKyAgICAgICAgICAgIG91dHB1
dFZhcnlpbmdOYW1lVG9JbmRleFtzdGFnZV1bdmFyeWluZy5uYW1lXSA9IG1lcmdlZC5zaXplKCkg
LSAxOworCisgICAgICAgICAgICAvLyBJZiBsb2NhdGlvbiBpcyBwcm92aWRlZCwgYWxzbyBrZWVw
IGl0IGluIGEgbWFwIGJ5IGxvY2F0aW9uLgorICAgICAgICAgICAgaWYgKHZhcnlpbmcubG9jYXRp
b24gIT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgb3V0cHV0VmFyeWluZ0xv
Y2F0aW9uVG9JbmRleFtzdGFnZV1bdmFyeWluZy5sb2NhdGlvbl0gPSBtZXJnZWQuc2l6ZSgpIC0g
MTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEdhdGhlciBpbnB1
dCB2YXJ5aW5ncywgYW5kIG1hdGNoIHRoZW0gd2l0aCBvdXRwdXQgdmFyeWluZ3Mgb2YgdGhlIHBy
ZXZpb3VzIHN0YWdlLgorICAgIGZvciAoU2hhZGVyICpzaGFkZXIgOiBtU3RhdGUubUF0dGFjaGVk
U2hhZGVycykKKyAgICB7CisgICAgICAgIGlmICghc2hhZGVyKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBTaGFkZXJUeXBlIHNoYWRlclR5cGUgPSBzaGFkZXItPmdldFR5cGUoKTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nIDogc2hhZGVyLT5nZXRP
dXRwdXRWYXJ5aW5ncygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgU2hhZGVyVHlwZSBzdGFnZSAgICAgICAgID0gc2hhZGVyLT5nZXRUeXBlKCk7CisgICAgICAg
IFNoYWRlclR5cGUgcHJldmlvdXNTdGFnZSA9IHByZXZpb3VzQWN0aXZlU3RhZ2Vbc3RhZ2VdOwor
CisgICAgICAgIGZvciAoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nIDogc2hhZGVy
LT5nZXRJbnB1dFZhcnlpbmdzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVfdCBtZXJn
ZWRJbmRleCA9IG1lcmdlZC5zaXplKCk7CisgICAgICAgICAgICBpZiAocHJldmlvdXNTdGFnZSAh
PSBTaGFkZXJUeXBlOjpJbnZhbGlkRW51bSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBQcm9ncmFtVmFyeWluZ1JlZiAqcmVmID0gJm1lcmdlZFt2YXJ5aW5nLm5hbWVdOwotICAgICAg
ICAgICAgICAgIHJlZi0+ZnJvbnRTaGFkZXIgICAgICAgPSAmdmFyeWluZzsKLSAgICAgICAgICAg
ICAgICByZWYtPmZyb250U2hhZGVyU3RhZ2UgID0gc2hhZGVyVHlwZTsKKyAgICAgICAgICAgICAg
ICAvLyBJZiBsb2NhdGlvbiBpcyBwcm92aWRlZCwgc2VlIGlmIHdlIGNhbiBtYXRjaCBieSBsb2Nh
dGlvbi4KKyAgICAgICAgICAgICAgICBpZiAodmFyeWluZy5sb2NhdGlvbiAhPSAtMSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYnlMb2NhdGlvbkl0ZXIgPQor
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0VmFyeWluZ0xvY2F0aW9uVG9JbmRleFtwcmV2
aW91c1N0YWdlXS5maW5kKHZhcnlpbmcubG9jYXRpb24pOworICAgICAgICAgICAgICAgICAgICBp
ZiAoYnlMb2NhdGlvbkl0ZXIgIT0gb3V0cHV0VmFyeWluZ0xvY2F0aW9uVG9JbmRleFtwcmV2aW91
c1N0YWdlXS5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbWVyZ2VkSW5kZXggPSBieUxvY2F0aW9uSXRlci0+c2Vjb25kOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gSWYgbm90
IGZvdW5kLCB0cnkgdG8gbWF0Y2ggYnkgbmFtZS4KKyAgICAgICAgICAgICAgICBpZiAobWVyZ2Vk
SW5kZXggPT0gbWVyZ2VkLnNpemUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gYnlOYW1lSXRlciA9IG91dHB1dFZhcnlpbmdOYW1lVG9JbmRleFtwcmV2aW91
c1N0YWdlXS5maW5kKHZhcnlpbmcubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChieU5h
bWVJdGVyICE9IG91dHB1dFZhcnlpbmdOYW1lVG9JbmRleFtwcmV2aW91c1N0YWdlXS5lbmQoKSkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VkSW5k
ZXggPSBieU5hbWVJdGVyLT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IHNoOjpTaGFk
ZXJWYXJpYWJsZSAmdmFyeWluZyA6IHNoYWRlci0+Z2V0SW5wdXRWYXJ5aW5ncygpKQorCisgICAg
ICAgICAgICAvLyBJZiBubyBwcmV2aW91cyBzdGFnZSwgb3Igbm90IG1hdGNoZWQgYnkgbG9jYXRp
b24gb3IgbmFtZSwgY3JlYXRlIGEgbmV3IGVudHJ5IGZvciBpdC4KKyAgICAgICAgICAgIGlmICht
ZXJnZWRJbmRleCA9PSBtZXJnZWQuc2l6ZSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFByb2dyYW1WYXJ5aW5nUmVmICpyZWYgPSAmbWVyZ2VkW3ZhcnlpbmcubmFtZV07Ci0gICAg
ICAgICAgICAgICAgcmVmLT5iYWNrU2hhZGVyICAgICAgICA9ICZ2YXJ5aW5nOwotICAgICAgICAg
ICAgICAgIHJlZi0+YmFja1NoYWRlclN0YWdlICAgPSBzaGFkZXJUeXBlOworICAgICAgICAgICAg
ICAgIG1lcmdlZC5wdXNoX2JhY2soe30pOworICAgICAgICAgICAgICAgIG1lcmdlZEluZGV4ID0g
bWVyZ2VkLnNpemUoKSAtIDE7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFByb2dyYW1W
YXJ5aW5nUmVmICpyZWYgPSAmbWVyZ2VkW21lcmdlZEluZGV4XTsKKworICAgICAgICAgICAgcmVm
LT5iYWNrU2hhZGVyICAgICAgPSAmdmFyeWluZzsKKyAgICAgICAgICAgIHJlZi0+YmFja1NoYWRl
clN0YWdlID0gc3RhZ2U7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ0OTIsNiArNDU1OCw3IEBA
IGJvb2wgUHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcyhjb25zdCBDYXBzICZjYXBzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb21iaW5lZEltYWdlVW5pZm9y
bXNDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY29tYmlu
ZWRTaGFkZXJTdG9yYWdlQmxvY2tzQ291bnQpCiB7CisgICAgSW5mb0xvZyAmaW5mb0xvZyAgICAg
ICA9IG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRJbmZvTG9nKCk7CiAgICAgU2hhZGVyICpmcmFnbWVu
dFNoYWRlciA9IG1TdGF0ZS5tQXR0YWNoZWRTaGFkZXJzW1NoYWRlclR5cGU6OkZyYWdtZW50XTsK
IAogICAgIEFTU0VSVChtU3RhdGUubU91dHB1dFZhcmlhYmxlVHlwZXMuZW1wdHkoKSk7CkBAIC00
NTQ5LDcgKzQ2MTYsNyBAQCBib29sIFByb2dyYW06OmxpbmtPdXRwdXRWYXJpYWJsZXMoY29uc3Qg
Q2FwcyAmY2FwcywKICAgICAgICAgICAgICAgICBtU3RhdGUubUFjdGl2ZU91dHB1dFZhcmlhYmxl
cy5jb3VudCgpID4KICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oY2Fwcy5tYXhDb21i
aW5lZFNoYWRlck91dHB1dFJlc291cmNlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1JbmZv
TG9nCisgICAgICAgICAgICBpbmZvTG9nCiAgICAgICAgICAgICAgICAgPDwgIlRoZSBzdW0gb2Yg
dGhlIG51bWJlciBvZiBhY3RpdmUgaW1hZ2UgdW5pZm9ybXMsIGFjdGl2ZSBzaGFkZXIgc3RvcmFn
ZSBibG9ja3MgIgogICAgICAgICAgICAgICAgICAgICJhbmQgYWN0aXZlIGZyYWdtZW50IHNoYWRl
ciBvdXRwdXRzIGV4Y2VlZHMgIgogICAgICAgICAgICAgICAgICAgICJNQVhfQ09NQklORURfU0hB
REVSX09VVFBVVF9SRVNPVVJDRVMgKCIKQEAgLTQ2MjMsOCArNDY5MCw4IEBAIGJvb2wgUHJvZ3Jh
bTo6bGlua091dHB1dFZhcmlhYmxlcyhjb25zdCBDYXBzICZjYXBzLAogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKG91dHB1dExvY2F0aW9uc1tsb2NhdGlvbl0udXNlZCgpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1JbmZvTG9nIDw8ICJMb2NhdGlvbiBvZiB2YXJpYWJs
ZSAiIDw8IG91dHB1dFZhcmlhYmxlLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICA8PCAi
IGNvbmZsaWN0cyB3aXRoIGFub3RoZXIgdmFyaWFibGUuIjsKKyAgICAgICAgICAgICAgICBpbmZv
TG9nIDw8ICJMb2NhdGlvbiBvZiB2YXJpYWJsZSAiIDw8IG91dHB1dFZhcmlhYmxlLm5hbWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIgY29uZmxpY3RzIHdpdGggYW5vdGhlciB2YXJpYWJs
ZS4iOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG91dHB1dExvY2F0aW9uc1tsb2NhdGlvbl0gPSBsb2NhdGlvbkluZm87CkBAIC00NjYz
LDggKzQ3MzAsOCBAQCBib29sIFByb2dyYW06OmxpbmtPdXRwdXRWYXJpYWJsZXMoY29uc3QgQ2Fw
cyAmY2FwcywKICAgICAgICAgaWYgKEZpbmRVc2VkT3V0cHV0TG9jYXRpb24ob3V0cHV0TG9jYXRp
b25zLCBiYXNlTG9jYXRpb24sIGVsZW1lbnRDb3VudCwgcmVzZXJ2ZWRMb2NhdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFZhcmlhYmxlSW5kZXgpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtSW5mb0xvZyA8PCAiTG9jYXRpb24gb2YgdmFyaWFibGUgIiA8
PCBvdXRwdXRWYXJpYWJsZS5uYW1lCi0gICAgICAgICAgICAgICAgICAgICA8PCAiIGNvbmZsaWN0
cyB3aXRoIGFub3RoZXIgdmFyaWFibGUuIjsKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgIkxvY2F0
aW9uIG9mIHZhcmlhYmxlICIgPDwgb3V0cHV0VmFyaWFibGUubmFtZQorICAgICAgICAgICAgICAg
ICAgICA8PCAiIGNvbmZsaWN0cyB3aXRoIGFub3RoZXIgdmFyaWFibGUuIjsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBBc3NpZ25PdXRwdXRMb2NhdGlvbnMo
b3V0cHV0TG9jYXRpb25zLCBiYXNlTG9jYXRpb24sIGVsZW1lbnRDb3VudCwgcmVzZXJ2ZWRMb2Nh
dGlvbnMsCkBAIC00NzMxLDggKzQ3OTgsOCBAQCBib29sIFByb2dyYW06OmxpbmtPdXRwdXRWYXJp
YWJsZXMoY29uc3QgQ2FwcyAmY2FwcywKICAgICAgICAgICAgIC8vICJpZiB0aGUgZXhwbGljaXQg
YmluZGluZyBhc3NpZ25tZW50cyBkbyBub3QgbGVhdmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbGlu
a2VyIHRvCiAgICAgICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IGFzc2lnbiBhIGxvY2F0aW9uIGZv
ciBhIHZhcnlpbmcgb3V0IGFycmF5LCB3aGljaCByZXF1aXJlcyBtdWx0aXBsZQogICAgICAgICAg
ICAgLy8gY29udGlndW91cyBsb2NhdGlvbnMuIgotICAgICAgICAgICAgbUluZm9Mb2cgPDwgIkNv
dWxkIG5vdCBmaXQgb3V0cHV0IHZhcmlhYmxlIGludG8gYXZhaWxhYmxlIGxvY2F0aW9uczogIgot
ICAgICAgICAgICAgICAgICAgICAgPDwgb3V0cHV0VmFyaWFibGUubmFtZTsKKyAgICAgICAgICAg
IGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBmaXQgb3V0cHV0IHZhcmlhYmxlIGludG8gYXZhaWxhYmxl
IGxvY2F0aW9uczogIgorICAgICAgICAgICAgICAgICAgICA8PCBvdXRwdXRWYXJpYWJsZS5uYW1l
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDc0Nyw4
ICs0ODE0LDggQEAgdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtVmFsdWVzRnJvbUJpbmRpbmdRdWFs
aWZpZXJzKCkKICAgICAgICAgY29uc3QgYXV0byAmc2FtcGxlclVuaWZvcm0gPSBtU3RhdGUubVVu
aWZvcm1zW3NhbXBsZXJJbmRleF07CiAgICAgICAgIGlmIChzYW1wbGVyVW5pZm9ybS5iaW5kaW5n
ICE9IC0xKQogICAgICAgICB7Ci0gICAgICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdldFVuaWZv
cm1Mb2NhdGlvbihzYW1wbGVyVW5pZm9ybS5uYW1lKTsKLSAgICAgICAgICAgIEFTU0VSVChsb2Nh
dGlvbiAhPSAtMSk7CisgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24gPSBnZXRV
bmlmb3JtTG9jYXRpb24oc2FtcGxlclVuaWZvcm0ubmFtZSk7CisgICAgICAgICAgICBBU1NFUlQo
bG9jYXRpb24udmFsdWUgIT0gLTEpOwogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGJv
dW5kVGV4dHVyZVVuaXRzOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudElu
ZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgZWxlbWVudEluZGV4IDwgc2FtcGxlclVuaWZvcm0u
Z2V0QmFzaWNUeXBlRWxlbWVudENvdW50KCk7ICsrZWxlbWVudEluZGV4KQpAQCAtNDc5OSwyNCAr
NDg2NiwyNCBAQCB2b2lkIFByb2dyYW06OnVwZGF0ZVNhbXBsZXJVbmlmb3JtKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgIGJvdW5kVGV4dHVyZVVuaXRzW2FycmF5SW5kZXggKyBsb2NhdGlvbklu
Zm8uYXJyYXlJbmRleF0gPSBuZXdUZXh0dXJlVW5pdDsKIAogICAgICAgICAvLyBVcGRhdGUgdGhl
IHJlZmVyZW5jZSBjb3VudHMuCi0gICAgICAgIHVpbnQzMl90ICZvbGRSZWZDb3VudCA9IG1TdGF0
ZS5tQWN0aXZlU2FtcGxlclJlZkNvdW50c1tvbGRUZXh0dXJlVW5pdF07Ci0gICAgICAgIHVpbnQz
Ml90ICZuZXdSZWZDb3VudCA9IG1TdGF0ZS5tQWN0aXZlU2FtcGxlclJlZkNvdW50c1tuZXdUZXh0
dXJlVW5pdF07CisgICAgICAgIHVpbnQzMl90ICZvbGRSZWZDb3VudCA9IG1TdGF0ZS5tRXhlY3V0
YWJsZS5tQWN0aXZlU2FtcGxlclJlZkNvdW50c1tvbGRUZXh0dXJlVW5pdF07CisgICAgICAgIHVp
bnQzMl90ICZuZXdSZWZDb3VudCA9IG1TdGF0ZS5tRXhlY3V0YWJsZS5tQWN0aXZlU2FtcGxlclJl
ZkNvdW50c1tuZXdUZXh0dXJlVW5pdF07CiAgICAgICAgIEFTU0VSVChvbGRSZWZDb3VudCA+IDAp
OwogICAgICAgICBBU1NFUlQobmV3UmVmQ291bnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCkpOwogICAgICAgICBvbGRSZWZDb3VudC0tOwogICAgICAgICBuZXdSZWZDb3Vu
dCsrOwogCiAgICAgICAgIC8vIENoZWNrIGZvciBiaW5kaW5nIHR5cGUgY2hhbmdlLgotICAgICAg
ICBUZXh0dXJlVHlwZSAmbmV3U2FtcGxlclR5cGUgICAgID0gbVN0YXRlLm1BY3RpdmVTYW1wbGVy
VHlwZXNbbmV3VGV4dHVyZVVuaXRdOwotICAgICAgICBUZXh0dXJlVHlwZSAmb2xkU2FtcGxlclR5
cGUgICAgID0gbVN0YXRlLm1BY3RpdmVTYW1wbGVyVHlwZXNbb2xkVGV4dHVyZVVuaXRdOwotICAg
ICAgICBTYW1wbGVyRm9ybWF0ICZuZXdTYW1wbGVyRm9ybWF0ID0gbVN0YXRlLm1BY3RpdmVTYW1w
bGVyRm9ybWF0c1tuZXdUZXh0dXJlVW5pdF07Ci0gICAgICAgIFNhbXBsZXJGb3JtYXQgJm9sZFNh
bXBsZXJGb3JtYXQgPSBtU3RhdGUubUFjdGl2ZVNhbXBsZXJGb3JtYXRzW29sZFRleHR1cmVVbml0
XTsKKyAgICAgICAgVGV4dHVyZVR5cGUgJm5ld1NhbXBsZXJUeXBlICAgICA9IG1TdGF0ZS5tRXhl
Y3V0YWJsZS5tQWN0aXZlU2FtcGxlclR5cGVzW25ld1RleHR1cmVVbml0XTsKKyAgICAgICAgVGV4
dHVyZVR5cGUgJm9sZFNhbXBsZXJUeXBlICAgICA9IG1TdGF0ZS5tRXhlY3V0YWJsZS5tQWN0aXZl
U2FtcGxlclR5cGVzW29sZFRleHR1cmVVbml0XTsKKyAgICAgICAgU2FtcGxlckZvcm1hdCAmbmV3
U2FtcGxlckZvcm1hdCA9IG1TdGF0ZS5tRXhlY3V0YWJsZS5tQWN0aXZlU2FtcGxlckZvcm1hdHNb
bmV3VGV4dHVyZVVuaXRdOworICAgICAgICBTYW1wbGVyRm9ybWF0ICZvbGRTYW1wbGVyRm9ybWF0
ID0gbVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyRm9ybWF0c1tvbGRUZXh0dXJlVW5p
dF07CiAKICAgICAgICAgaWYgKG5ld1JlZkNvdW50ID09IDEpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG5ld1NhbXBsZXJUeXBlICAgPSBzYW1wbGVyQmluZGluZy50ZXh0dXJlVHlwZTsKICAgICAg
ICAgICAgIG5ld1NhbXBsZXJGb3JtYXQgPSBzYW1wbGVyQmluZGluZy5mb3JtYXQ7Ci0gICAgICAg
ICAgICBtU3RhdGUubUFjdGl2ZVNhbXBsZXJzTWFzay5zZXQobmV3VGV4dHVyZVVuaXQpOworICAg
ICAgICAgICAgbVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyc01hc2suc2V0KG5ld1Rl
eHR1cmVVbml0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTQ4MzYs
NyArNDkwMyw3IEBAIHZvaWQgUHJvZ3JhbTo6dXBkYXRlU2FtcGxlclVuaWZvcm0oQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgewogICAgICAgICAgICAgb2xkU2FtcGxlclR5cGUgICA9IFRleHR1
cmVUeXBlOjpJbnZhbGlkRW51bTsKICAgICAgICAgICAgIG9sZFNhbXBsZXJGb3JtYXQgPSBTYW1w
bGVyRm9ybWF0OjpJbnZhbGlkRW51bTsKLSAgICAgICAgICAgIG1TdGF0ZS5tQWN0aXZlU2FtcGxl
cnNNYXNrLnJlc2V0KG9sZFRleHR1cmVVbml0KTsKKyAgICAgICAgICAgIG1TdGF0ZS5tRXhlY3V0
YWJsZS5tQWN0aXZlU2FtcGxlcnNNYXNrLnJlc2V0KG9sZFRleHR1cmVVbml0KTsKICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTQ4NjIsNDQgKzQ5MjksNyBAQCB2b2lkIFBy
b2dyYW06OnVwZGF0ZVNhbXBsZXJVbmlmb3JtKENvbnRleHQgKmNvbnRleHQsCiAKIHZvaWQgUHJv
Z3JhbVN0YXRlOjpzZXRTYW1wbGVyVW5pZm9ybVRleHR1cmVUeXBlQW5kRm9ybWF0KHNpemVfdCB0
ZXh0dXJlVW5pdEluZGV4KQogewotICAgIGJvb2wgZm91bmRCaW5kaW5nICAgICAgICAgPSBmYWxz
ZTsKLSAgICBUZXh0dXJlVHlwZSBmb3VuZFR5cGUgICAgID0gVGV4dHVyZVR5cGU6OkludmFsaWRF
bnVtOwotICAgIFNhbXBsZXJGb3JtYXQgZm91bmRGb3JtYXQgPSBTYW1wbGVyRm9ybWF0OjpJbnZh
bGlkRW51bTsKLQotICAgIGZvciAoY29uc3QgU2FtcGxlckJpbmRpbmcgJmJpbmRpbmcgOiBtU2Ft
cGxlckJpbmRpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKGJpbmRpbmcudW5yZWZlcmVuY2VkKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gQSBjb25mbGljdCBleGlzdHMgaWYg
c2FtcGxlcnMgb2YgZGlmZmVyZW50IHR5cGVzIGFyZSBzb3VyY2VkIGJ5IHRoZSBzYW1lIHRleHR1
cmUgdW5pdC4KLSAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwgYm91bmQgdGV4dHVyZXMg
dG8gZGV0ZWN0IHRoaXMgZXJyb3IgY2FzZS4KLSAgICAgICAgZm9yIChHTHVpbnQgdGV4dHVyZVVu
aXQgOiBiaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAodGV4dHVyZVVuaXQgPT0gdGV4dHVyZVVuaXRJbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIWZvdW5kQmluZGluZykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIGZvdW5kQmluZGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGZv
dW5kVHlwZSAgICA9IGJpbmRpbmcudGV4dHVyZVR5cGU7Ci0gICAgICAgICAgICAgICAgICAgIGZv
dW5kRm9ybWF0ICA9IGJpbmRpbmcuZm9ybWF0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAo
Zm91bmRUeXBlICE9IGJpbmRpbmcudGV4dHVyZVR5cGUpCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kVHlwZSA9IFRleHR1cmVUeXBlOjpJbnZhbGlk
RW51bTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoZm91
bmRGb3JtYXQgIT0gYmluZGluZy5mb3JtYXQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kRm9ybWF0ID0gU2FtcGxlckZvcm1hdDo6SW52YWxpZEVu
dW07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtQWN0aXZlU2FtcGxlclR5cGVzW3RleHR1cmVV
bml0SW5kZXhdICAgPSBmb3VuZFR5cGU7Ci0gICAgbUFjdGl2ZVNhbXBsZXJGb3JtYXRzW3RleHR1
cmVVbml0SW5kZXhdID0gZm91bmRGb3JtYXQ7CisgICAgbUV4ZWN1dGFibGUuc2V0U2FtcGxlclVu
aWZvcm1UZXh0dXJlVHlwZUFuZEZvcm1hdCh0ZXh0dXJlVW5pdEluZGV4LCBtU2FtcGxlckJpbmRp
bmdzKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC00OTI5LDEyICs0OTU5LDEyIEBA
IEdMc2l6ZWkgUHJvZ3JhbTo6Y2xhbXBVbmlmb3JtQ291bnQoY29uc3QgVmFyaWFibGVMb2NhdGlv
biAmbG9jYXRpb25JbmZvLAogfQogCiB0ZW1wbGF0ZSA8c2l6ZV90IGNvbHMsIHNpemVfdCByb3dz
LCB0eXBlbmFtZSBUPgotR0xzaXplaSBQcm9ncmFtOjpjbGFtcE1hdHJpeFVuaWZvcm1Db3VudChH
TGludCBsb2NhdGlvbiwKK0dMc2l6ZWkgUHJvZ3JhbTo6Y2xhbXBNYXRyaXhVbmlmb3JtQ291bnQo
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUICp2KQogewotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRp
b24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07Cisg
ICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3Jt
TG9jYXRpb25zW2xvY2F0aW9uLnZhbHVlXTsKIAogICAgIGlmICghdHJhbnNwb3NlKQogICAgIHsK
QEAgLTQ5NTUsNyArNDk4NSw3IEBAIEdMc2l6ZWkgUHJvZ3JhbTo6Y2xhbXBNYXRyaXhVbmlmb3Jt
Q291bnQoR0xpbnQgbG9jYXRpb24sCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdFQ+CiB2b2lkIFBy
b2dyYW06OmdldFVuaWZvcm1JbnRlcm5hbChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzdFQgKmRhdGFPdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNvbXBvbmVudHMpIGNvbnN0CiB7CkBAIC00OTY0LDcgKzQ5OTQsNyBA
QCB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1JbnRlcm5hbChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICBjYXNlIEdMX0JPT0w6CiAgICAgICAgIHsKICAgICAgICAgICAgIEdMaW50IHRl
bXBWYWx1ZVsxNl0gPSB7MH07Ci0gICAgICAgICAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWl2KGNv
bnRleHQsIGxvY2F0aW9uLCB0ZW1wVmFsdWUpOworICAgICAgICAgICAgbVByb2dyYW0tPmdldFVu
aWZvcm1pdihjb250ZXh0LCBsb2NhdGlvbi52YWx1ZSwgdGVtcFZhbHVlKTsKICAgICAgICAgICAg
IFVuaWZvcm1TdGF0ZVF1ZXJ5Q2FzdExvb3A8R0xib29sZWFuPigKICAgICAgICAgICAgICAgICBk
YXRhT3V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4odGVtcFZhbHVlKSwgY29t
cG9uZW50cyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ5NzIsNyArNTAwMiw3IEBAIHZvaWQg
UHJvZ3JhbTo6Z2V0VW5pZm9ybUludGVybmFsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgIGNhc2UgR0xfSU5UOgogICAgICAgICB7CiAgICAgICAgICAgICBHTGludCB0ZW1wVmFsdWVb
MTZdID0gezB9OwotICAgICAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm1pdihjb250ZXh0LCBs
b2NhdGlvbiwgdGVtcFZhbHVlKTsKKyAgICAgICAgICAgIG1Qcm9ncmFtLT5nZXRVbmlmb3JtaXYo
Y29udGV4dCwgbG9jYXRpb24udmFsdWUsIHRlbXBWYWx1ZSk7CiAgICAgICAgICAgICBVbmlmb3Jt
U3RhdGVRdWVyeUNhc3RMb29wPEdMaW50PihkYXRhT3V0LCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QgKj4odGVtcFZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbXBvbmVudHMpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00OTgwLDcg
KzUwMTAsNyBAQCB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1JbnRlcm5hbChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKICAgICAgICAgewogICAg
ICAgICAgICAgR0x1aW50IHRlbXBWYWx1ZVsxNl0gPSB7MH07Ci0gICAgICAgICAgICBtUHJvZ3Jh
bS0+Z2V0VW5pZm9ybXVpdihjb250ZXh0LCBsb2NhdGlvbiwgdGVtcFZhbHVlKTsKKyAgICAgICAg
ICAgIG1Qcm9ncmFtLT5nZXRVbmlmb3JtdWl2KGNvbnRleHQsIGxvY2F0aW9uLnZhbHVlLCB0ZW1w
VmFsdWUpOwogICAgICAgICAgICAgVW5pZm9ybVN0YXRlUXVlcnlDYXN0TG9vcDxHTHVpbnQ+KGRh
dGFPdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPih0ZW1wVmFsdWUpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC00OTg4LDcgKzUwMTgsNyBAQCB2b2lkIFByb2dyYW06Omdl
dFVuaWZvcm1JbnRlcm5hbChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICBjYXNlIEdM
X0ZMT0FUOgogICAgICAgICB7CiAgICAgICAgICAgICBHTGZsb2F0IHRlbXBWYWx1ZVsxNl0gPSB7
MH07Ci0gICAgICAgICAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWZ2KGNvbnRleHQsIGxvY2F0aW9u
LCB0ZW1wVmFsdWUpOworICAgICAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm1mdihjb250ZXh0
LCBsb2NhdGlvbi52YWx1ZSwgdGVtcFZhbHVlKTsKICAgICAgICAgICAgIFVuaWZvcm1TdGF0ZVF1
ZXJ5Q2FzdExvb3A8R0xmbG9hdD4oCiAgICAgICAgICAgICAgICAgZGF0YU91dCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHRlbXBWYWx1ZSksIGNvbXBvbmVudHMpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC01MDQ0LDE0ICs1MDc0LDEyIEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3Jh
bTo6c2VyaWFsaXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGFuZ2xlOjpNZW1vcnlCdWZmZXIg
KmJpCiAKICAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1OdW1WaWV3cyk7CiAKLSAgICBzdHJl
YW0ud3JpdGVJbnQobVN0YXRlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbik7Ci0KICAgICBzdGF0
aWNfYXNzZXJ0KE1BWF9WRVJURVhfQVRUUklCUyAqIDIgPD0gc2l6ZW9mKHVpbnQzMl90KSAqIDgs
CiAgICAgICAgICAgICAgICAgICAiQWxsIGJpdHMgb2YgbUF0dHJpYnV0ZXNUeXBlTWFzayB0eXBl
cyBhbmQgbWFzayBmaXQgaW50byAzMiBiaXRzIGVhY2giKTsKLSAgICBzdHJlYW0ud3JpdGVJbnQo
c3RhdGljX2Nhc3Q8aW50PihtU3RhdGUubUF0dHJpYnV0ZXNUeXBlTWFzay50b191bG9uZygpKSk7
Ci0gICAgc3RyZWFtLndyaXRlSW50KHN0YXRpY19jYXN0PGludD4obVN0YXRlLm1BdHRyaWJ1dGVz
TWFzay50b191bG9uZygpKSk7Ci0KLSAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLmdldEFjdGl2
ZUF0dHJpYkxvY2F0aW9uc01hc2soKS50b191bG9uZygpKTsKKyAgICBzdHJlYW0ud3JpdGVJbnQo
c3RhdGljX2Nhc3Q8aW50PihtU3RhdGUubUV4ZWN1dGFibGUubUF0dHJpYnV0ZXNUeXBlTWFzay50
b191bG9uZygpKSk7CisgICAgc3RyZWFtLndyaXRlSW50KHN0YXRpY19jYXN0PGludD4obVN0YXRl
Lm1FeGVjdXRhYmxlLm1BdHRyaWJ1dGVzTWFzay50b191bG9uZygpKSk7CisgICAgc3RyZWFtLndy
aXRlSW50KG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCku
dG9fdWxvbmcoKSk7CisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tRXhlY3V0YWJsZS5tTWF4
QWN0aXZlQXR0cmliTG9jYXRpb24pOwogCiAgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5nZXRQ
cm9ncmFtSW5wdXRzKCkuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJs
ZSAmYXR0cmliIDogbVN0YXRlLmdldFByb2dyYW1JbnB1dHMoKSkKQEAgLTUwNzAsNiArNTA5OCw4
IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6c2VyaWFsaXplKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIGFuZ2xlOjpNZW1vcnlCdWZmZXIgKmJpCiAgICAgICAgIHN0cmVhbS53cml0ZUludCh1bmlm
b3JtLmJ1ZmZlckluZGV4KTsKICAgICAgICAgV3JpdGVCbG9ja01lbWJlckluZm8oJnN0cmVhbSwg
dW5pZm9ybS5ibG9ja0luZm8pOwogCisgICAgICAgIHN0cmVhbS53cml0ZUludFZlY3Rvcih1bmlm
b3JtLm91dGVyQXJyYXlTaXplcyk7CisKICAgICAgICAgLy8gQWN0aXZlIHNoYWRlciBpbmZvCiAg
ICAgICAgIGZvciAoU2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRlclR5cGVzKCkp
CiAgICAgICAgIHsKQEAgLTUxOTYsNyArNTIyNiw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6
c2VyaWFsaXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGFuZ2xlOjpNZW1vcnlCdWZmZXIgKmJp
CiAgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5nZXRBdG9taWNDb3VudGVyVW5pZm9ybVJhbmdl
KCkubG93KCkpOwogICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUuZ2V0QXRvbWljQ291bnRlclVu
aWZvcm1SYW5nZSgpLmhpZ2goKSk7CiAKLSAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLmdldExp
bmtlZFNoYWRlclN0YWdlcygpLnRvX3Vsb25nKCkpOworICAgIHN0cmVhbS53cml0ZUludChtU3Rh
dGUubUV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkudG9fdWxvbmcoKSk7CiAKICAg
ICBtUHJvZ3JhbS0+c2F2ZShjb250ZXh0LCAmc3RyZWFtKTsKIApAQCAtNTI0NCwxNiArNTI3NCwx
MyBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW06OmRlc2VyaWFsaXplKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAKICAgICBtU3RhdGUubU51bVZpZXdzID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOwog
Ci0gICAgbVN0YXRlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbiA9IHN0cmVhbS5yZWFkSW50PHVu
c2lnbmVkIGludD4oKTsKLQogICAgIHN0YXRpY19hc3NlcnQoTUFYX1ZFUlRFWF9BVFRSSUJTICog
MiA8PSBzaXplb2YodWludDMyX3QpICogOCwKLSAgICAgICAgICAgICAgICAgICJBbGwgYml0cyBv
ZiBtQXR0cmlidXRlc1R5cGVNYXNrIHR5cGVzIGFuZCBtYXNrIGZpdCBpbnRvIDMyIGJpdHMgZWFj
aCIpOwotICAgIG1TdGF0ZS5tQXR0cmlidXRlc1R5cGVNYXNrID0gZ2w6OkNvbXBvbmVudFR5cGVN
YXNrKHN0cmVhbS5yZWFkSW50PHVpbnQzMl90PigpKTsKLSAgICBtU3RhdGUubUF0dHJpYnV0ZXNN
YXNrICAgICA9IHN0cmVhbS5yZWFkSW50PGdsOjpBdHRyaWJ1dGVzTWFzaz4oKTsKLQotICAgIHN0
YXRpY19hc3NlcnQoTUFYX1ZFUlRFWF9BVFRSSUJTIDw9IHNpemVvZih1bnNpZ25lZCBsb25nKSAq
IDgsCi0gICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgdmVydGV4IGF0dHJpYnMgZm9yIG1hc2si
KTsKLSAgICBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2sgPSBzdHJlYW0ucmVhZElu
dDxnbDo6QXR0cmlidXRlc01hc2s+KCk7CisgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgdmVy
dGV4IGF0dHJpYnMgZm9yIG1hc2s6IEFsbCBiaXRzIG9mIG1BdHRyaWJ1dGVzVHlwZU1hc2sgdHlw
ZXMgYW5kICIKKyAgICAgICAgICAgICAgICAgICJtYXNrIGZpdCBpbnRvIDMyIGJpdHMgZWFjaCIp
OworICAgIG1TdGF0ZS5tRXhlY3V0YWJsZS5tQXR0cmlidXRlc1R5cGVNYXNrID0gZ2w6OkNvbXBv
bmVudFR5cGVNYXNrKHN0cmVhbS5yZWFkSW50PHVpbnQzMl90PigpKTsKKyAgICBtU3RhdGUubUV4
ZWN1dGFibGUubUF0dHJpYnV0ZXNNYXNrICAgICA9IHN0cmVhbS5yZWFkSW50PGdsOjpBdHRyaWJ1
dGVzTWFzaz4oKTsKKyAgICBtU3RhdGUubUV4ZWN1dGFibGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9u
c01hc2sgPSBzdHJlYW0ucmVhZEludDxnbDo6QXR0cmlidXRlc01hc2s+KCk7CisgICAgbVN0YXRl
Lm1FeGVjdXRhYmxlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbiAgID0gc3RyZWFtLnJlYWRJbnQ8
dW5zaWduZWQgaW50PigpOwogCiAgICAgdW5zaWduZWQgaW50IGF0dHJpYkNvdW50ID0gc3RyZWFt
LnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOwogICAgIEFTU0VSVChtU3RhdGUubVByb2dyYW1JbnB1
dHMuZW1wdHkoKSk7CkBAIC01Mjc1LDYgKzUzMDIsOCBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW06
OmRlc2VyaWFsaXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHVuaWZvcm0uYnVm
ZmVySW5kZXggPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7CiAgICAgICAgIExvYWRCbG9ja01lbWJl
ckluZm8oJnN0cmVhbSwgJnVuaWZvcm0uYmxvY2tJbmZvKTsKIAorICAgICAgICBzdHJlYW0ucmVh
ZEludFZlY3Rvcjx1bnNpZ25lZCBpbnQ+KCZ1bmlmb3JtLm91dGVyQXJyYXlTaXplcyk7CisKICAg
ICAgICAgdW5pZm9ybS50eXBlSW5mbyA9ICZHZXRVbmlmb3JtVHlwZUluZm8odW5pZm9ybS50eXBl
KTsKIAogICAgICAgICAvLyBBY3RpdmUgc2hhZGVyIGluZm8KQEAgLTU0NTAsNyArNTQ3OSw3IEBA
IGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6ZGVzZXJpYWxpemUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKIAogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oU2hhZGVy
VHlwZTo6RW51bUNvdW50KSA8PSBzaXplb2YodW5zaWduZWQgbG9uZykgKiA4LAogICAgICAgICAg
ICAgICAgICAgIlRvbyBtYW55IHNoYWRlciB0eXBlcyIpOwotICAgIG1TdGF0ZS5tTGlua2VkU2hh
ZGVyU3RhZ2VzID0gU2hhZGVyQml0U2V0KHN0cmVhbS5yZWFkSW50PHVpbnQ4X3Q+KCkpOworICAg
IG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSA9IFNoYWRlckJpdFNl
dChzdHJlYW0ucmVhZEludDx1aW50OF90PigpKTsKIAogICAgIGlmICghbVN0YXRlLm1BdHRhY2hl
ZFNoYWRlcnNbU2hhZGVyVHlwZTo6Q29tcHV0ZV0pCiAgICAgewpAQCAtNTQ2NywxNSArNTQ5Niwx
NyBAQCB2b2lkIFByb2dyYW06OnBvc3RSZXNvbHZlTGluayhjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCkKICAgICBtU3RhdGUudXBkYXRlQWN0aXZlU2FtcGxlcnMoKTsKICAgICBtU3RhdGUudXBk
YXRlQWN0aXZlSW1hZ2VzKCk7CiAKKyAgICBzZXRVbmlmb3JtVmFsdWVzRnJvbUJpbmRpbmdRdWFs
aWZpZXJzKCk7CisKICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm11bHRpRHJhdykK
ICAgICB7Ci0gICAgICAgIG1TdGF0ZS5tRHJhd0lETG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRp
b24oImdsX0RyYXdJRCIpOworICAgICAgICBtU3RhdGUubURyYXdJRExvY2F0aW9uID0gZ2V0VW5p
Zm9ybUxvY2F0aW9uKCJnbF9EcmF3SUQiKS52YWx1ZTsKICAgICB9CiAKICAgICBpZiAoY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UpCiAgICAgewotICAgICAg
ICBtU3RhdGUubUJhc2VWZXJ0ZXhMb2NhdGlvbiAgID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJnbF9C
YXNlVmVydGV4Iik7Ci0gICAgICAgIG1TdGF0ZS5tQmFzZUluc3RhbmNlTG9jYXRpb24gPSBnZXRV
bmlmb3JtTG9jYXRpb24oImdsX0Jhc2VJbnN0YW5jZSIpOworICAgICAgICBtU3RhdGUubUJhc2VW
ZXJ0ZXhMb2NhdGlvbiAgID0gZ2V0VW5pZm9ybUxvY2F0aW9uKCJnbF9CYXNlVmVydGV4IikudmFs
dWU7CisgICAgICAgIG1TdGF0ZS5tQmFzZUluc3RhbmNlTG9jYXRpb24gPSBnZXRVbmlmb3JtTG9j
YXRpb24oImdsX0Jhc2VJbnN0YW5jZSIpLnZhbHVlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmgKaW5kZXggZjk2MmVmZmJhMTdm
YjZmYjMxZTVhY2QwZWI3MjdhMzNiNDUzMzk2MS4uNWI2OTgwNzJhMmRiYzE4OGU2NDkwMTNmYmU3
NzYwZjM1NWJlMjFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1Byb2dyYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvUHJvZ3JhbS5oCkBAIC0yOCw2ICsyOCw5IEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ29uc3Rh
bnRzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9F
cnJvci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0luZm9Mb2cuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9Qcm9ncmFtRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW1MaW5rZWRS
ZXNvdXJjZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgi
CkBAIC00OCw3ICs1MSw2IEBAIHN0cnVjdCBDYXBzOwogY2xhc3MgQ29udGV4dDsKIHN0cnVjdCBF
eHRlbnNpb25zOwogY2xhc3MgRnJhbWVidWZmZXI7Ci1jbGFzcyBJbmZvTG9nOwogY2xhc3MgU2hh
ZGVyOwogY2xhc3MgU2hhZGVyUHJvZ3JhbU1hbmFnZXI7CiBjbGFzcyBTdGF0ZTsKQEAgLTg0LDc5
ICs4Niw2IEBAIGVudW0gY2xhc3MgTGlua01pc21hdGNoRXJyb3IKICAgICBNQVRSSVhfUEFDS0lO
R19NSVNNQVRDSCwKIH07CiAKLWNsYXNzIEluZm9Mb2cgOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsK
LSAgcHVibGljOgotICAgIEluZm9Mb2coKTsKLSAgICB+SW5mb0xvZygpOwotCi0gICAgc2l6ZV90
IGdldExlbmd0aCgpIGNvbnN0OwotICAgIHZvaWQgZ2V0TG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKSBjb25zdDsKLQotICAgIHZvaWQgYXBwZW5kU2Fu
aXRpemVkKGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwotICAgIHZvaWQgcmVzZXQoKTsKLQotICAgIC8v
IFRoaXMgaGVscGVyIGNsYXNzIGVuc3VyZXMgd2UgYXBwZW5kIGEgbmV3bGluZSBhZnRlciB3cml0
aW5nIGEgbGluZS4KLSAgICBjbGFzcyBTdHJlYW1IZWxwZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUK
LSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmVhbUhlbHBlcihTdHJlYW1IZWxwZXIg
JiZyaHMpIDogbVN0cmVhbShyaHMubVN0cmVhbSkgeyByaHMubVN0cmVhbSA9IG51bGxwdHI7IH0K
LQotICAgICAgICBTdHJlYW1IZWxwZXIgJm9wZXJhdG9yPShTdHJlYW1IZWxwZXIgJiZyaHMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChtU3RyZWFtLCByaHMubVN0cmVhbSk7Ci0g
ICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB+U3RyZWFtSGVs
cGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gV3JpdGUgbmV3bGluZSB3aGVuIGRlc3Ry
b3llZCBvbiB0aGUgc3RhY2sKLSAgICAgICAgICAgIGlmIChtU3RyZWFtKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICgqbVN0cmVhbSkgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIFN0
cmVhbUhlbHBlciAmb3BlcmF0b3I8PChjb25zdCBUICZ2YWx1ZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgKCptU3RyZWFtKSA8PCB2YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICAgICAgfQotCi0gICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgSW5mb0xvZzsK
LQotICAgICAgICBTdHJlYW1IZWxwZXIoc3RkOjpzdHJpbmdzdHJlYW0gKnN0cmVhbSkgOiBtU3Ry
ZWFtKHN0cmVhbSkgeyBBU1NFUlQoc3RyZWFtKTsgfQotCi0gICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtICptU3RyZWFtOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBT
dHJlYW1IZWxwZXIgb3BlcmF0b3I8PChjb25zdCBUICZ2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGVu
c3VyZUluaXRpYWxpemVkKCk7Ci0gICAgICAgIFN0cmVhbUhlbHBlciBoZWxwZXIobUxhenlTdHJl
YW0uZ2V0KCkpOwotICAgICAgICBoZWxwZXIgPDwgdmFsdWU7Ci0gICAgICAgIHJldHVybiBoZWxw
ZXI7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgc3RyKCkgY29uc3QgeyByZXR1cm4gbUxhenlT
dHJlYW0gPyBtTGF6eVN0cmVhbS0+c3RyKCkgOiAiIjsgfQotCi0gICAgYm9vbCBlbXB0eSgpIGNv
bnN0OwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBlbnN1cmVJbml0aWFsaXplZCgpCi0gICAgewot
ICAgICAgICBpZiAoIW1MYXp5U3RyZWFtKQotICAgICAgICB7Ci0gICAgICAgICAgICBtTGF6eVN0
cmVhbS5yZXNldChuZXcgc3RkOjpzdHJpbmdzdHJlYW0oKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmdzdHJlYW0+IG1MYXp5U3RyZWFtOwotfTsK
LQogdm9pZCBMb2dMaW5rTWlzbWF0Y2goSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJpYWJsZU5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICp2YXJpYWJsZVR5cGUsCkBAIC0xNzAsNiArOTksOSBAQCBib29sIElz
QWN0aXZlSW50ZXJmYWNlQmxvY2soY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VC
bG9jayk7CiB2b2lkIFdyaXRlQmxvY2tNZW1iZXJJbmZvKEJpbmFyeU91dHB1dFN0cmVhbSAqc3Ry
ZWFtLCBjb25zdCBzaDo6QmxvY2tNZW1iZXJJbmZvICZ2YXIpOwogdm9pZCBMb2FkQmxvY2tNZW1i
ZXJJbmZvKEJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0sIHNoOjpCbG9ja01lbWJlckluZm8gKnZh
cik7CiAKK3ZvaWQgV3JpdGVTaGFkZXJWYXIoQmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0sIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKTsKK3ZvaWQgTG9hZFNoYWRlclZhcihCaW5hcnlJ
bnB1dFN0cmVhbSAqc3RyZWFtLCBzaDo6U2hhZGVyVmFyaWFibGUgKnZhcik7CisKIC8vIFN0cnVj
dCB1c2VkIGZvciBjb3JyZWxhdGluZyB1bmlmb3Jtcy9lbGVtZW50cyBvZiB1bmlmb3JtIGFycmF5
cyB0byBoYW5kbGVzCiBzdHJ1Y3QgVmFyaWFibGVMb2NhdGlvbgogewpAQCAtMjE5LDI4ICsxNTEs
NiBAQCBzdHJ1Y3QgQmluZGluZ0luZm8KICAgICBib29sIHZhbGlkOwogfTsKIAotLy8gVGhpcyBz
bWFsbCBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGJpbmRpbmcgc2FtcGxlciB1bmlmb3JtcyB0byBh
Y3RpdmUgR0wgdGV4dHVyZXMuCi1zdHJ1Y3QgU2FtcGxlckJpbmRpbmcKLXsKLSAgICBTYW1wbGVy
QmluZGluZyhUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZUluLAotICAgICAgICAgICAgICAgICAgIFNh
bXBsZXJGb3JtYXQgZm9ybWF0SW4sCi0gICAgICAgICAgICAgICAgICAgc2l6ZV90IGVsZW1lbnRD
b3VudCwKLSAgICAgICAgICAgICAgICAgICBib29sIHVucmVmZXJlbmNlZCk7Ci0gICAgU2FtcGxl
ckJpbmRpbmcoY29uc3QgU2FtcGxlckJpbmRpbmcgJm90aGVyKTsKLSAgICB+U2FtcGxlckJpbmRp
bmcoKTsKLQotICAgIC8vIE5lY2Vzc2FyeSBmb3IgcmV0cmlldmluZyBhY3RpdmUgdGV4dHVyZXMg
ZnJvbSB0aGUgR0wgc3RhdGUuCi0gICAgVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGU7Ci0KLSAgICBT
YW1wbGVyRm9ybWF0IGZvcm1hdDsKLQotICAgIC8vIExpc3Qgb2YgYWxsIHRleHR1cmVzIGJvdW5k
IHRvIHRoaXMgc2FtcGxlciwgb2YgdHlwZSB0ZXh0dXJlVHlwZS4KLSAgICBzdGQ6OnZlY3RvcjxH
THVpbnQ+IGJvdW5kVGV4dHVyZVVuaXRzOwotCi0gICAgLy8gQSBub3RlIGlmIHRoaXMgc2FtcGxl
ciBpcyBhbiB1bnJlZmVyZW5jZWQgdW5pZm9ybS4KLSAgICBib29sIHVucmVmZXJlbmNlZDsKLX07
Ci0KIC8vIEEgdmFyeWluZyB3aXRoIHRyYW5mb3JtIGZlZWRiYWNrIGVuYWJsZWQuIElmIGl0J3Mg
YW4gYXJyYXksIGVpdGhlciB0aGUgd2hvbGUgYXJyYXkgb3Igb25lIG9mIGl0cwogLy8gZWxlbWVu
dHMgc3BlY2lmaWVkIGJ5ICdhcnJheUluZGV4JyBjYW4gc2V0IHRvIGJlIGVuYWJsZWQuCiBzdHJ1
Y3QgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nIDogcHVibGljIHNoOjpTaGFkZXJWYXJpYWJsZQpA
QCAtMjgwLDE3ICsxOTAsNTIgQEAgc3RydWN0IFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyA6IHB1
YmxpYyBzaDo6U2hhZGVyVmFyaWFibGUKICAgICBHTHVpbnQgYXJyYXlJbmRleDsKIH07CiAKLXN0
cnVjdCBJbWFnZUJpbmRpbmcKK3N0cnVjdCBQcm9ncmFtQmluZGluZwogewotICAgIEltYWdlQmlu
ZGluZyhzaXplX3QgY291bnQpOwotICAgIEltYWdlQmluZGluZyhHTHVpbnQgaW1hZ2VVbml0LCBz
aXplX3QgY291bnQsIGJvb2wgdW5yZWZlcmVuY2VkKTsKLSAgICBJbWFnZUJpbmRpbmcoY29uc3Qg
SW1hZ2VCaW5kaW5nICZvdGhlcik7Ci0gICAgfkltYWdlQmluZGluZygpOworICAgIFByb2dyYW1C
aW5kaW5nKCkgOiBsb2NhdGlvbihHTF9JTlZBTElEX0lOREVYKSwgYWxpYXNlZChmYWxzZSkge30K
KyAgICBQcm9ncmFtQmluZGluZyhHTHVpbnQgaW5kZXgpIDogbG9jYXRpb24oaW5kZXgpLCBhbGlh
c2VkKGZhbHNlKSB7fQogCi0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBib3VuZEltYWdlVW5pdHM7
CisgICAgR0x1aW50IGxvY2F0aW9uOworICAgIC8vIFdoZXRoZXIgYW5vdGhlciBiaW5kaW5nIHdh
cyBzZXQgdGhhdCBtYXkgcG90ZW50aWFsbHkgYWxpYXMgdGhpcy4KKyAgICBib29sIGFsaWFzZWQ7
Cit9OworCitjbGFzcyBQcm9ncmFtQmluZGluZ3MgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUK
K3sKKyAgcHVibGljOgorICAgIFByb2dyYW1CaW5kaW5ncygpOworICAgIH5Qcm9ncmFtQmluZGlu
Z3MoKTsKKworICAgIHZvaWQgYmluZExvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpOworICAgIGludCBnZXRCaW5kaW5nQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5n
ICZuYW1lKSBjb25zdDsKKyAgICBpbnQgZ2V0QmluZGluZyhjb25zdCBzaDo6U2hhZGVyVmFyaWFi
bGUgJnZhcmlhYmxlKSBjb25zdDsKKworICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBHTHVpbnQ+Ojpjb25zdF9pdGVyYXRvcjsKKyAgICBj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNv
bnN0OwogCi0gICAgLy8gQSBub3RlIGlmIHRoaXMgaW1hZ2UgdW5pdCBpcyBhbiB1bnJlZmVyZW5j
ZWQgdW5pZm9ybS4KLSAgICBib29sIHVucmVmZXJlbmNlZDsKKyAgcHJpdmF0ZToKKyAgICBzdGQ6
OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIEdMdWludD4gbUJpbmRpbmdzOworfTsKKworLy8g
VW5pZm9ybXMgYW5kIEZyYWdtZW50IE91dHB1dHMgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudCBk
dWUgdG8gYXJyYXkgbm90YXRpb24gKGUuZy4sICJbMF0iKQorY2xhc3MgUHJvZ3JhbUFsaWFzZWRC
aW5kaW5ncyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgUHJv
Z3JhbUFsaWFzZWRCaW5kaW5ncygpOworICAgIH5Qcm9ncmFtQWxpYXNlZEJpbmRpbmdzKCk7CisK
KyAgICB2b2lkIGJpbmRMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lKTsKKyAgICBpbnQgZ2V0QmluZGluZ0J5TmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkg
Y29uc3Q7CisgICAgaW50IGdldEJpbmRpbmdCeUxvY2F0aW9uKEdMdWludCBsb2NhdGlvbikgY29u
c3Q7CisgICAgaW50IGdldEJpbmRpbmcoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJpYWJs
ZSkgY29uc3Q7CisKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgUHJvZ3JhbUJpbmRpbmc+Ojpjb25zdF9pdGVyYXRvcjsKKyAgICBjb25z
dF9pdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0
OworCisgIHByaXZhdGU6CisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBQcm9n
cmFtQmluZGluZz4gbUJpbmRpbmdzOwogfTsKIAogY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCkBAIC0zMjMsMTIgKzI2OCw2IEBAIGNsYXNzIFByb2dyYW1TdGF0
ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICByZXR1cm4gbUFjdGl2ZVVuaWZv
cm1CbG9ja0JpbmRpbmdzOwogICAgIH0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVy
VmFyaWFibGU+ICZnZXRQcm9ncmFtSW5wdXRzKCkgY29uc3QgeyByZXR1cm4gbVByb2dyYW1JbnB1
dHM7IH0KLSAgICBjb25zdCBBdHRyaWJ1dGVzTWFzayAmZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzaygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbUFjdGl2ZUF0dHJpYkxvY2F0aW9u
c01hc2s7Ci0gICAgfQotICAgIGNvbnN0IEF0dHJpYnV0ZXNNYXNrICZnZXROb25CdWlsdGluQXR0
cmliTG9jYXRpb25zTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1BdHRyaWJ1dGVzTWFzazsgfQotICAg
IHVuc2lnbmVkIGludCBnZXRNYXhBY3RpdmVBdHRyaWJMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbjsgfQogICAgIERyYXdCdWZmZXJNYXNrIGdldEFjdGl2
ZU91dHB1dFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7
IH0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+ICZnZXRPdXRwdXRW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtT3V0cHV0VmFyaWFibGVzOyB9CiAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4gJmdldE91dHB1dExvY2F0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1PdXRwdXRMb2NhdGlvbnM7IH0KQEAgLTM1MSw3ICsyOTAsNiBAQCBjbGFzcyBQ
cm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBjb25zdCBSYW5nZVVJ
ICZnZXRTYW1wbGVyVW5pZm9ybVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXJVbmlmb3Jt
UmFuZ2U7IH0KICAgICBjb25zdCBSYW5nZVVJICZnZXRJbWFnZVVuaWZvcm1SYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIG1JbWFnZVVuaWZvcm1SYW5nZTsgfQogICAgIGNvbnN0IFJhbmdlVUkgJmdldEF0
b21pY0NvdW50ZXJVbmlmb3JtUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtQXRvbWljQ291bnRlclVu
aWZvcm1SYW5nZTsgfQotICAgIGNvbnN0IENvbXBvbmVudFR5cGVNYXNrICZnZXRBdHRyaWJ1dGVz
VHlwZU1hc2soKSBjb25zdCB7IHJldHVybiBtQXR0cmlidXRlc1R5cGVNYXNrOyB9CiAKICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc+ICZnZXRMaW5rZWRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCkgY29uc3QKICAgICB7CkBAIC0zNjEsNyArMjk5LDYgQEAg
Y2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgewogICAg
ICAgICByZXR1cm4gbVRyYW5zZm9ybUZlZWRiYWNrU3RyaWRlczsKICAgICB9Ci0gICAgc2l6ZV90
IGdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtVHJhbnNm
b3JtRmVlZGJhY2tTdHJpZGVzLnNpemUoKTsgfQogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEF0b21p
Y0NvdW50ZXJCdWZmZXI+ICZnZXRBdG9taWNDb3VudGVyQnVmZmVycygpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbUF0b21pY0NvdW50ZXJCdWZmZXJzOwpAQCAtMzcwLDEwICszMDcsMTEg
QEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8g
Q291bnQgdGhlIG51bWJlciBvZiB1bmlmb3JtIGFuZCBzdG9yYWdlIGJ1ZmZlciBkZWNsYXJhdGlv
bnMsIGNvdW50aW5nIGFycmF5cyBhcyBvbmUuCiAgICAgc2l6ZV90IGdldFVuaXF1ZVVuaWZvcm1C
bG9ja0NvdW50KCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldFVuaXF1ZVN0b3JhZ2VCbG9ja0NvdW50
KCkgY29uc3Q7CisgICAgc2l6ZV90IGdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKSBj
b25zdDsKIAogICAgIEdMdWludCBnZXRVbmlmb3JtSW5kZXhGcm9tTmFtZShjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSkgY29uc3Q7Ci0gICAgR0x1aW50IGdldFVuaWZvcm1JbmRleEZyb21Mb2NhdGlv
bihHTGludCBsb2NhdGlvbikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8R0x1aW50PiBnZXRTYW1wbGVy
SW5kZXgoR0xpbnQgbG9jYXRpb24pIGNvbnN0OworICAgIEdMdWludCBnZXRVbmlmb3JtSW5kZXhG
cm9tTG9jYXRpb24oVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uKSBjb25zdDsKKyAgICBPcHRpb25h
bDxHTHVpbnQ+IGdldFNhbXBsZXJJbmRleChVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24pIGNvbnN0
OwogICAgIGJvb2wgaXNTYW1wbGVyVW5pZm9ybUluZGV4KEdMdWludCBpbmRleCkgY29uc3Q7CiAg
ICAgR0x1aW50IGdldFNhbXBsZXJJbmRleEZyb21Vbmlmb3JtSW5kZXgoR0x1aW50IHVuaWZvcm1J
bmRleCkgY29uc3Q7CiAgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleEZyb21TYW1wbGVySW5kZXgo
R0x1aW50IHNhbXBsZXJJbmRleCkgY29uc3Q7CkBAIC0zODcsMjMgKzMyNSwyOSBAQCBjbGFzcyBQ
cm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBpbnQgZ2V0TnVtVmll
d3MoKSBjb25zdCB7IHJldHVybiBtTnVtVmlld3M7IH0KICAgICBib29sIHVzZXNNdWx0aXZpZXco
KSBjb25zdCB7IHJldHVybiBtTnVtVmlld3MgIT0gLTE7IH0KIAotICAgIGNvbnN0IFNoYWRlckJp
dFNldCAmZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkgY29uc3QgeyByZXR1cm4gbUxpbmtlZFNoYWRl
clN0YWdlczsgfQotICAgIGJvb2wgaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZSBzaGFk
ZXJUeXBlKSBjb25zdAorICAgIGJvb2wgaGFzQXR0YWNoZWRTaGFkZXIoKSBjb25zdDsKKworICAg
IFNoYWRlclR5cGUgZ2V0Rmlyc3RBdHRhY2hlZFNoYWRlclN0YWdlVHlwZSgpIGNvbnN0OworICAg
IFNoYWRlclR5cGUgZ2V0TGFzdEF0dGFjaGVkU2hhZGVyU3RhZ2VUeXBlKCkgY29uc3Q7CisKKyAg
ICBjb25zdCBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzICZnZXRVbmlmb3JtTG9jYXRpb25CaW5kaW5n
cygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbUxpbmtlZFNoYWRlclN0YWdlc1tzaGFk
ZXJUeXBlXTsKKyAgICAgICAgcmV0dXJuIG1Vbmlmb3JtTG9jYXRpb25CaW5kaW5nczsKICAgICB9
Ci0gICAgc2l6ZV90IGdldExpbmtlZFNoYWRlclN0YWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBt
TGlua2VkU2hhZGVyU3RhZ2VzLmNvdW50KCk7IH0KLSAgICBib29sIGlzQ29tcHV0ZSgpIGNvbnN0
IHsgcmV0dXJuIGhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1dGUpOyB9CiAK
LSAgICBib29sIGhhc0F0dGFjaGVkU2hhZGVyKCkgY29uc3Q7CisgICAgY29uc3QgUHJvZ3JhbUV4
ZWN1dGFibGUgJmdldFByb2dyYW1FeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbUV4ZWN1dGFi
bGU7IH0KKyAgICBQcm9ncmFtRXhlY3V0YWJsZSAmZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKSB7IHJl
dHVybiBtRXhlY3V0YWJsZTsgfQogCi0gICAgY29uc3QgQWN0aXZlVGV4dHVyZU1hc2sgJmdldEFj
dGl2ZVNhbXBsZXJzTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVTYW1wbGVyc01hc2s7IH0K
LSAgICBTYW1wbGVyRm9ybWF0IGdldFNhbXBsZXJGb3JtYXRGb3JUZXh0dXJlVW5pdEluZGV4KHNp
emVfdCB0ZXh0dXJlVW5pdEluZGV4KSBjb25zdAorICAgIGJvb2wgaGFzRGVmYXVsdFVuaWZvcm1z
KCkgY29uc3QgeyByZXR1cm4gIWdldERlZmF1bHRVbmlmb3JtUmFuZ2UoKS5lbXB0eSgpOyB9Cisg
ICAgYm9vbCBoYXNUZXh0dXJlcygpIGNvbnN0IHsgcmV0dXJuICFnZXRTYW1wbGVyQmluZGluZ3Mo
KS5lbXB0eSgpOyB9CisgICAgYm9vbCBoYXNVbmlmb3JtQnVmZmVycygpIGNvbnN0IHsgcmV0dXJu
ICFnZXRVbmlmb3JtQmxvY2tzKCkuZW1wdHkoKTsgfQorICAgIGJvb2wgaGFzU3RvcmFnZUJ1ZmZl
cnMoKSBjb25zdCB7IHJldHVybiAhZ2V0U2hhZGVyU3RvcmFnZUJsb2NrcygpLmVtcHR5KCk7IH0K
KyAgICBib29sIGhhc0F0b21pY0NvdW50ZXJCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gIWdldEF0
b21pY0NvdW50ZXJCdWZmZXJzKCkuZW1wdHkoKTsgfQorICAgIGJvb2wgaGFzSW1hZ2VzKCkgY29u
c3QgeyByZXR1cm4gIWdldEltYWdlQmluZGluZ3MoKS5lbXB0eSgpOyB9CisgICAgYm9vbCBoYXNU
cmFuc2Zvcm1GZWVkYmFja091dHB1dCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbUFj
dGl2ZVNhbXBsZXJGb3JtYXRzW3RleHR1cmVVbml0SW5kZXhdOworICAgICAgICByZXR1cm4gIWdl
dExpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKS5lbXB0eSgpOwogICAgIH0KLSAgICBT
aGFkZXJUeXBlIGdldEZpcnN0QXR0YWNoZWRTaGFkZXJTdGFnZVR5cGUoKSBjb25zdDsKLSAgICBT
aGFkZXJUeXBlIGdldExhc3RBdHRhY2hlZFNoYWRlclN0YWdlVHlwZSgpIGNvbnN0OwogCiAgIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE1lbW9yeVByb2dyYW1DYWNoZTsKQEAgLTQyNCw2ICsz
NjgsNyBAQCBjbGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAog
ICAgIFNoYWRlck1hcDxTaGFkZXIgKj4gbUF0dGFjaGVkU2hhZGVyczsKIAorICAgIHVpbnQzMl90
IG1Mb2NhdGlvbnNVc2VkRm9yWGZiRXh0ZW5zaW9uOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXM7CiAgICAgc3RkOjp2ZWN0b3I8VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nPiBtTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczsK
ICAgICBHTGVudW0gbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZTsKQEAgLTQzMywxMSArMzc4
LDYgQEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAg
ICAvLyBWZXJ0ZXggYXR0cmlidXRlcywgRnJhZ21lbnQgaW5wdXQgdmFyeWluZ3MsIGV0Yy4KICAg
ICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IG1Qcm9ncmFtSW5wdXRzOwotICAgIGFu
Z2xlOjpCaXRTZXQ8TUFYX1ZFUlRFWF9BVFRSSUJTPiBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFz
azsKLSAgICB1bnNpZ25lZCBpbnQgbU1heEFjdGl2ZUF0dHJpYkxvY2F0aW9uOwotICAgIENvbXBv
bmVudFR5cGVNYXNrIG1BdHRyaWJ1dGVzVHlwZU1hc2s7Ci0gICAgLy8gbUF0dHJpYnV0ZXNNYXNr
IGlzIGlkZW50aWNhbCB0byBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzayB3aXRoIGJ1aWx0LWlu
IGF0dHJpYnV0ZXMgcmVtb3ZlZC4KLSAgICBBdHRyaWJ1dGVzTWFzayBtQXR0cmlidXRlc01hc2s7
CiAKICAgICAvLyBVbmlmb3JtcyBhcmUgc29ydGVkIGluIG9yZGVyOgogICAgIC8vICAxLiBOb24t
b3BhcXVlIHVuaWZvcm1zCkBAIC00ODQsNyArNDI0LDYgQEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBib29sIG1CaW5hcnlSZXRyaWV2ZWFibGVI
aW50OwogICAgIGJvb2wgbVNlcGFyYWJsZTsKLSAgICBTaGFkZXJCaXRTZXQgbUxpbmtlZFNoYWRl
clN0YWdlczsKIAogICAgIC8vIEFOR0xFX211bHRpdmlldy4KICAgICBpbnQgbU51bVZpZXdzOwpA
QCAtNTA5LDY2ICs0NDgsMjIgQEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiAgICAgLy8gVGhlIHNpemUgb2YgdGhlIGRhdGEgd3JpdHRlbiB0byBlYWNoIHRy
YW5zZm9ybSBmZWVkYmFjayBidWZmZXIgcGVyIHZlcnRleC4KICAgICBzdGQ6OnZlY3RvcjxHTHNp
emVpPiBtVHJhbnNmb3JtRmVlZGJhY2tTdHJpZGVzOwogCi0gICAgLy8gQ2FjaGVkIG1hc2sgb2Yg
YWN0aXZlIHNhbXBsZXJzIGFuZCBzYW1wbGVyIHR5cGVzLgotICAgIEFjdGl2ZVRleHR1cmVNYXNr
IG1BY3RpdmVTYW1wbGVyc01hc2s7Ci0gICAgQWN0aXZlVGV4dHVyZUFycmF5PHVpbnQzMl90PiBt
QWN0aXZlU2FtcGxlclJlZkNvdW50czsKLSAgICBBY3RpdmVUZXh0dXJlQXJyYXk8VGV4dHVyZVR5
cGU+IG1BY3RpdmVTYW1wbGVyVHlwZXM7Ci0gICAgQWN0aXZlVGV4dHVyZUFycmF5PFNhbXBsZXJG
b3JtYXQ+IG1BY3RpdmVTYW1wbGVyRm9ybWF0czsKLQotICAgIC8vIENhY2hlZCBtYXNrIG9mIGFj
dGl2ZSBpbWFnZXMuCi0gICAgQWN0aXZlVGV4dHVyZU1hc2sgbUFjdGl2ZUltYWdlc01hc2s7Ci19
OwotCi1zdHJ1Y3QgUHJvZ3JhbUJpbmRpbmcKLXsKLSAgICBQcm9ncmFtQmluZGluZygpIDogbG9j
YXRpb24oR0xfSU5WQUxJRF9JTkRFWCksIGFsaWFzZWQoZmFsc2UpIHt9Ci0gICAgUHJvZ3JhbUJp
bmRpbmcoR0x1aW50IGluZGV4KSA6IGxvY2F0aW9uKGluZGV4KSwgYWxpYXNlZChmYWxzZSkge30K
LQotICAgIEdMdWludCBsb2NhdGlvbjsKLSAgICAvLyBXaGV0aGVyIGFub3RoZXIgYmluZGluZyB3
YXMgc2V0IHRoYXQgbWF5IHBvdGVudGlhbGx5IGFsaWFzIHRoaXMuCi0gICAgYm9vbCBhbGlhc2Vk
OwotfTsKLQotY2xhc3MgUHJvZ3JhbUJpbmRpbmdzIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
Ci17Ci0gIHB1YmxpYzoKLSAgICBQcm9ncmFtQmluZGluZ3MoKTsKLSAgICB+UHJvZ3JhbUJpbmRp
bmdzKCk7Ci0KLSAgICB2b2lkIGJpbmRMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKTsKLSAgICBpbnQgZ2V0QmluZGluZ0J5TmFtZShjb25zdCBzdGQ6OnN0cmlu
ZyAmbmFtZSkgY29uc3Q7Ci0gICAgaW50IGdldEJpbmRpbmcoY29uc3Qgc2g6OlNoYWRlclZhcmlh
YmxlICZ2YXJpYWJsZSkgY29uc3Q7Ci0KLSAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgR0x1aW50Pjo6Y29uc3RfaXRlcmF0b3I7Ci0gICAg
Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKLSAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdDsKLQotICBwcml2YXRlOgotICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywg
R0x1aW50PiBtQmluZGluZ3M7Ci19OwotCi0vLyBVbmlmb3JtcyBhbmQgRnJhZ21lbnQgT3V0cHV0
cyByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50IGR1ZSB0byBhcnJheSBub3RhdGlvbiAoZS5nLiwg
IlswXSIpCi1jbGFzcyBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzKCk7Ci0gICAg
flByb2dyYW1BbGlhc2VkQmluZGluZ3MoKTsKLQotICAgIHZvaWQgYmluZExvY2F0aW9uKEdMdWlu
dCBpbmRleCwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpOwotICAgIGludCBnZXRCaW5kaW5nQnlO
YW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKLSAgICBpbnQgZ2V0QmluZGluZyhj
b25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlKSBjb25zdDsKLQotICAgIHVzaW5nIGNv
bnN0X2l0ZXJhdG9yID0gc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBQcm9ncmFtQmlu
ZGluZz46OmNvbnN0X2l0ZXJhdG9yOwotICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7
Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CisgICAgLy8gTm90ZSB0aGF0IHRoaXMg
aGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBiaW5kaW5nIGxheW91dCBxdWFsaWZpZXJzIHRoYXQgY2Fu
IGJlIHNldCBmb3Igc29tZQorICAgIC8vIHVuaWZvcm1zIGluIEdMRVMzLjErLiBJdCBpcyB1c2Vk
IHRvIHByZS1zZXQgdGhlIGxvY2F0aW9uIG9mIHVuaWZvcm1zLgorICAgIFByb2dyYW1BbGlhc2Vk
QmluZGluZ3MgbVVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzOwogCi0gIHByaXZhdGU6Ci0gICAgc3Rk
Ojp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBQcm9ncmFtQmluZGluZz4gbUJpbmRpbmdzOwor
ICAgIFByb2dyYW1FeGVjdXRhYmxlIG1FeGVjdXRhYmxlOwogfTsKIAogc3RydWN0IFByb2dyYW1W
YXJ5aW5nUmVmCiB7Ci0gICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICpnZXQoKSBjb25zdCB7
IHJldHVybiBmcm9udFNoYWRlciA/IGZyb250U2hhZGVyIDogYmFja1NoYWRlcjsgfQorICAgIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqZ2V0KFNoYWRlclR5cGUgc3RhZ2UpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoc3RhZ2UgPT0gZnJvbnRTaGFkZXJTdGFnZSB8fCBzdGFnZSA9PSBi
YWNrU2hhZGVyU3RhZ2UpOworICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKnJlZiA9
IHN0YWdlID09IGZyb250U2hhZGVyU3RhZ2UgPyBmcm9udFNoYWRlciA6IGJhY2tTaGFkZXI7Cisg
ICAgICAgIEFTU0VSVChyZWYpOworICAgICAgICByZXR1cm4gcmVmOworICAgIH0KIAogICAgIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqZnJvbnRTaGFkZXIgPSBudWxscHRyOwogICAgIGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAqYmFja1NoYWRlciAgPSBudWxscHRyOwpAQCAtNTc2LDcgKzQ3
MSw3IEBAIHN0cnVjdCBQcm9ncmFtVmFyeWluZ1JlZgogICAgIFNoYWRlclR5cGUgYmFja1NoYWRl
clN0YWdlICAgICAgICAgICAgPSBTaGFkZXJUeXBlOjpJbnZhbGlkRW51bTsKIH07CiAKLXVzaW5n
IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBQcm9ncmFtVmFy
eWluZ1JlZj47Cit1c2luZyBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgPSBzdGQ6OnZlY3RvcjxQcm9n
cmFtVmFyeWluZ1JlZj47CiAKIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFi
bGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7CkBAIC02MDIsMTIgKzQ5Nyw3IEBAIGNsYXNzIFBy
b2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAg
ICAgY29uc3QgU2hhZGVyICpnZXRBdHRhY2hlZFNoYWRlcihTaGFkZXJUeXBlIHNoYWRlclR5cGUp
IGNvbnN0OwogCiAgICAgdm9pZCBiaW5kQXR0cmlidXRlTG9jYXRpb24oR0x1aW50IGluZGV4LCBj
b25zdCBjaGFyICpuYW1lKTsKLSAgICB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb24oR0x1aW50IGlu
ZGV4LCBjb25zdCBjaGFyICpuYW1lKTsKLQotICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5n
Ci0gICAgQmluZGluZ0luZm8gZ2V0RnJhZ21lbnRJbnB1dEJpbmRpbmdJbmZvKEdMaW50IGluZGV4
KSBjb25zdDsKLSAgICB2b2lkIGJpbmRGcmFnbWVudElucHV0TG9jYXRpb24oR0xpbnQgaW5kZXgs
IGNvbnN0IGNoYXIgKm5hbWUpOwotICAgIHZvaWQgcGF0aEZyYWdtZW50SW5wdXRHZW4oR0xpbnQg
aW5kZXgsIEdMZW51bSBnZW5Nb2RlLCBHTGludCBjb21wb25lbnRzLCBjb25zdCBHTGZsb2F0ICpj
b2VmZnMpOworICAgIHZvaWQgYmluZFVuaWZvcm1Mb2NhdGlvbihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sIGNvbnN0IGNoYXIgKm5hbWUpOwogCiAgICAgLy8gRVhUX2JsZW5kX2Z1bmNfZXh0ZW5k
ZWQKICAgICB2b2lkIGJpbmRGcmFnbWVudE91dHB1dExvY2F0aW9uKEdMdWludCBpbmRleCwgY29u
c3QgY2hhciAqbmFtZSk7CkBAIC02MjcsMTMgKzUxNyw2IEBAIGNsYXNzIFByb2dyYW0gZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgICAgIHJldHVy
biBtTGlua2VkOwogICAgIH0KIAotICAgIGJvb2wgaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVy
VHlwZSBzaGFkZXJUeXBlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHNoYWRlclR5cGUg
IT0gU2hhZGVyVHlwZTo6SW52YWxpZEVudW0pOwotICAgICAgICByZXR1cm4gbVN0YXRlLmhhc0xp
bmtlZFNoYWRlclN0YWdlKHNoYWRlclR5cGUpOwotICAgIH0KLSAgICBib29sIGlzQ29tcHV0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5pc0NvbXB1dGUoKTsgfQotCiAgICAgYW5nbGU6OlJlc3Vs
dCBsb2FkQmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKQEAgLTY1MCwxMiArNTMzLDkgQEAgY2xhc3MgUHJvZ3Jh
bSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICB2
b2lkIHNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSk7CiAgICAgYm9vbCBpc1NlcGFyYWJsZSgp
IGNvbnN0OwogCi0gICAgaW50IGdldEluZm9Mb2dMZW5ndGgoKSBjb25zdDsKLSAgICB2b2lkIGdl
dEluZm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cp
IGNvbnN0OwogICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKEdMc2l6ZWkgbWF4Q291bnQsIEdM
c2l6ZWkgKmNvdW50LCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnMpIGNvbnN0OwogCiAgICAgR0x1
aW50IGdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsK
LSAgICBib29sIGlzQXR0cmliTG9jYXRpb25BY3RpdmUoc2l6ZV90IGF0dHJpYkxvY2F0aW9uKSBj
b25zdDsKIAogICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCkBAIC02ODgsOSArNTY4LDkg
QEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVs
ZWRPYmplY3QKICAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtQ291bnQoKSBjb25zdDsKICAgICBz
aXplX3QgZ2V0QWN0aXZlQnVmZmVyVmFyaWFibGVDb3VudCgpIGNvbnN0OwogICAgIEdMaW50IGdl
dEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWRVbmlmb3Jt
TG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0OwotICAgIGNvbnN0IExpbmtlZFVuaWZvcm0g
JmdldFVuaWZvcm1CeUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdDsKLSAgICBjb25zdCBW
YXJpYWJsZUxvY2F0aW9uICZnZXRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0
OworICAgIGJvb2wgaXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24pIGNvbnN0OworICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJmdldFVuaWZvcm1CeUxvY2F0aW9u
KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3Q7CisgICAgY29uc3QgVmFyaWFibGVMb2Nh
dGlvbiAmZ2V0VW5pZm9ybUxvY2F0aW9uKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3Q7
CiAKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9uPiAmZ2V0VW5pZm9ybUxv
Y2F0aW9ucygpIGNvbnN0CiAgICAgewpAQCAtNzEzLDYwICs1OTMsNjAgQEAgY2xhc3MgUHJvZ3Jh
bSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICAg
ICAgTm9TYW1wbGVyQ2hhbmdlLAogICAgIH07CiAKLSAgICBHTGludCBnZXRVbmlmb3JtTG9jYXRp
b24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIFVuaWZvcm1Mb2NhdGlvbiBn
ZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OwogICAgIEdM
dWludCBnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OwotICAg
IHZvaWQgc2V0VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xmbG9hdCAqdik7Ci0gICAgdm9pZCBzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKLSAgICB2b2lkIHNldFVuaWZvcm0zZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwotICAgIHZvaWQg
c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9h
dCAqdik7Ci0gICAgdm9pZCBzZXRVbmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0gICAgdm9pZCBzZXRVbmlm
b3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0g
ICAgdm9pZCBzZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdik7Ci0gICAgdm9pZCBzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Ci0gICAgdm9pZCBzZXRVbmlmb3JtMXVpdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KTsKLSAgICB2b2lkIHNl
dFVuaWZvcm0ydWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQg
KnYpOwotICAgIHZvaWQgc2V0VW5pZm9ybTN1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMdWludCAqdik7Ci0gICAgdm9pZCBzZXRVbmlmb3JtNHVpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KTsKLSAgICB2b2lkIHNldFVuaWZv
cm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sCisgICAgdm9pZCBzZXRVbmlmb3JtMWZ2KFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Cisg
ICAgdm9pZCBzZXRVbmlmb3JtMmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgdm9pZCBzZXRVbmlmb3JtM2Z2KFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAg
dm9pZCBzZXRVbmlmb3JtNGZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgdm9pZCBzZXRVbmlmb3JtMWl2KENvbnRleHQgKmNv
bnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnYpOworICAgIHZvaWQgc2V0VW5pZm9ybTJpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKKyAgICB2b2lkIHNldFVuaWZvcm0zaXYo
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7
CisgICAgdm9pZCBzZXRVbmlmb3JtNGl2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIHZvaWQgc2V0VW5pZm9ybTF1aXYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpOworICAg
IHZvaWQgc2V0VW5pZm9ybTJ1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnYpOworICAgIHZvaWQgc2V0VW5pZm9ybTN1aXYoVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpOworICAgIHZv
aWQgc2V0VW5pZm9ybTR1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTHVpbnQgKnYpOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJmdihVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAg
ICB2b2lkIHNldFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgdm9pZCBzZXRV
bmlmb3JtTWF0cml4M2Z2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBs
b2NhdGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0ZnYoVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRV
bmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgdm9pZCBzZXRVbmlmb3JtTWF0
cml4MngzZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4M3gyZnYoR0xpbnQg
bG9jYXRpb24sCisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4M3gyZnYoVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAg
dm9pZCBzZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgdm9pZCBzZXRV
bmlmb3JtTWF0cml4Mng0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgy
ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgyZnYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAg
dm9pZCBzZXRVbmlmb3JtTWF0cml4M3g0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3Jt
TWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgz
ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CiAKLSAgICB2b2lkIGdldFVuaWZvcm1mdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKSBjb25zdDsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQg
KnBhcmFtcykgY29uc3Q7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykgY29uc3Q7CisgICAgdm9pZCBn
ZXRVbmlmb3JtZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLCBHTGZsb2F0ICpwYXJhbXMpIGNvbnN0OworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xpbnQgKnBhcmFt
cykgY29uc3Q7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpIGNvbnN0OwogCiAgICAg
dm9pZCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKGNvbnN0IEdMdWludCBibG9ja0luZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCkBAIC04
NjgsMTIgKzc0OCw2IEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUs
IHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAKICAgICBib29sIGlzVmFsaWRhdGVkKCkgY29uc3Q7CiAK
LSAgICBjb25zdCBBdHRyaWJ1dGVzTWFzayAmZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygp
IGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgICAgIHJl
dHVybiBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2s7Ci0gICAgfQotCiAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8U2FtcGxlckJpbmRpbmc+ICZnZXRTYW1wbGVyQmluZGluZ3MoKSBjb25z
dDsKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxJbWFnZUJpbmRpbmc+ICZnZXRJbWFnZUJpbmRpbmdz
KCkgY29uc3QKICAgICB7CkBAIC05MjEsNyArNzk1LDYgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBjb25zdCBzaDo6
U2hhZGVyVmFyaWFibGUgJmdldE91dHB1dFJlc291cmNlKHNpemVfdCBpbmRleCkgY29uc3Q7CiAK
ICAgICBjb25zdCBQcm9ncmFtQmluZGluZ3MgJmdldEF0dHJpYnV0ZUJpbmRpbmdzKCkgY29uc3Q7
Ci0gICAgY29uc3QgUHJvZ3JhbUJpbmRpbmdzICZnZXRGcmFnbWVudElucHV0QmluZGluZ3MoKSBj
b25zdDsKICAgICBjb25zdCBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzICZnZXRVbmlmb3JtTG9jYXRp
b25CaW5kaW5ncygpIGNvbnN0OwogCiAgICAgaW50IGdldE51bVZpZXdzKCkgY29uc3QKQEAgLTkz
MywxOSArODA2LDkgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwg
cHVibGljIExhYmVsZWRPYmplY3QKICAgICBib29sIHVzZXNNdWx0aXZpZXcoKSBjb25zdCB7IHJl
dHVybiBtU3RhdGUudXNlc011bHRpdmlldygpOyB9CiAKICAgICBDb21wb25lbnRUeXBlTWFzayBn
ZXREcmF3QnVmZmVyVHlwZU1hc2soKSBjb25zdDsKLSAgICBDb21wb25lbnRUeXBlTWFzayBnZXRB
dHRyaWJ1dGVzVHlwZU1hc2soKSBjb25zdDsKLSAgICBBdHRyaWJ1dGVzTWFzayBnZXRBdHRyaWJ1
dGVzTWFzaygpIGNvbnN0OwogCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xzaXplaT4gJmdldFRy
YW5zZm9ybUZlZWRiYWNrU3RyaWRlcygpIGNvbnN0OwogCi0gICAgY29uc3QgQWN0aXZlVGV4dHVy
ZU1hc2sgJmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tQWN0
aXZlU2FtcGxlcnNNYXNrOyB9Ci0gICAgY29uc3QgQWN0aXZlVGV4dHVyZU1hc2sgJmdldEFjdGl2
ZUltYWdlc01hc2soKSBjb25zdCB7IHJldHVybiBtU3RhdGUubUFjdGl2ZUltYWdlc01hc2s7IH0K
LQotICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVBcnJheTxUZXh0dXJlVHlwZT4gJmdldEFjdGl2ZVNh
bXBsZXJUeXBlcygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbVN0YXRlLm1BY3RpdmVT
YW1wbGVyVHlwZXM7Ci0gICAgfQotCiAgICAgLy8gUHJvZ3JhbSBkaXJ0eSBiaXRzLgogICAgIGVu
dW0gRGlydHlCaXRUeXBlCiAgICAgewpAQCAtOTc2LDYgKzgzOSw5IEBAIGNsYXNzIFByb2dyYW0g
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAKICAgICBy
eDo6U2VyaWFsIHNlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1TZXJpYWw7IH0KIAorICAgIGNvbnN0
IFByb2dyYW1FeGVjdXRhYmxlICZnZXRFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRl
LmdldFByb2dyYW1FeGVjdXRhYmxlKCk7IH0KKyAgICBQcm9ncmFtRXhlY3V0YWJsZSAmZ2V0RXhl
Y3V0YWJsZSgpIHsgcmV0dXJuIG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOyB9CisKICAg
cHJpdmF0ZToKICAgICBzdHJ1Y3QgTGlua2luZ1N0YXRlOwogCkBAIC0xMDE3LDE4ICs4ODMsMTUg
QEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVs
ZWRPYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlciAqY29uc3VtaW5nU2hhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZykgY29uc3Q7CiAKLSAgICAvLyBDaGVjayBmb3Ig
YWxpYXNlZCBwYXRoIHJlbmRlcmluZyBpbnB1dCBiaW5kaW5ncyAoaWYgYW55KS4KLSAgICAvLyBJ
ZiBtb3JlIHRoYW4gb25lIGJpbmRpbmcgcmVmZXIgc3RhdGljYWxseSB0byB0aGUgc2FtZSBsb2Nh
dGlvbiB0aGUgbGluayBtdXN0IGZhaWwuCi0gICAgYm9vbCBsaW5rVmFsaWRhdGVGcmFnbWVudElu
cHV0QmluZGluZ3MoSW5mb0xvZyAmaW5mb0xvZykgY29uc3Q7Ci0KICAgICBib29sIGxpbmtWYWxp
ZGF0ZUJ1aWx0SW5WYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nKSBjb25zdDsKICAgICBib29sIGxp
bmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IFZlcnNpb24gJnZlcnNpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvTG9nICZpbmZvTG9nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbU1lcmdlZFZh
cnlpbmdzICZsaW5rZWRWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclR5cGUgc3RhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDYXBzICZjYXBzKSBjb25zdDsKICAgICBib29sIGxpbmtWYWxpZGF0ZUds
b2JhbE5hbWVzKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OwogCi0gICAgdm9pZCBnYXRoZXJUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyAmdmFyeWlu
Z3MpOworICAgIHZvaWQgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBQcm9n
cmFtTWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzLCBTaGFkZXJUeXBlIHN0YWdlKTsKIAogICAgIFBy
b2dyYW1NZXJnZWRWYXJ5aW5ncyBnZXRNZXJnZWRWYXJ5aW5ncygpIGNvbnN0OwogICAgIGludCBn
ZXRPdXRwdXRMb2NhdGlvbkZvckxpbmsoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZvdXRwdXRW
YXJpYWJsZSkgY29uc3Q7CkBAIC0xMDQwLDYgKzkwMyw3IEBAIGNsYXNzIFByb2dyYW0gZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBjb21iaW5lZFNoYWRlclN0b3JhZ2VCbG9ja3NDb3VudCk7
CiAKICAgICB2b2lkIHNldFVuaWZvcm1WYWx1ZXNGcm9tQmluZGluZ1F1YWxpZmllcnMoKTsKKyAg
ICBib29sIHNob3VsZElnbm9yZVVuaWZvcm0oVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uKSBjb25z
dDsKIAogICAgIHZvaWQgaW5pdEludGVyZmFjZUJsb2NrQmluZGluZ3MoKTsKIApAQCAtMTA1MSw3
ICs5MTUsMTAgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVi
bGljIExhYmVsZWRPYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZWN0
b3JTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAqdik7CiAgICAg
dGVtcGxhdGUgPHNpemVfdCBjb2xzLCBzaXplX3Qgcm93cywgdHlwZW5hbWUgVD4KLSAgICBHTHNp
emVpIGNsYW1wTWF0cml4VW5pZm9ybUNvdW50KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUICp2KTsKKyAgICBHTHNpemVpIGNsYW1wTWF0
cml4VW5pZm9ybUNvdW50KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVCAqdik7CiAKICAgICB2b2lkIHVwZGF0ZVNhbXBsZXJV
bmlmb3JtKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8sCkBAIC0xMDYxLDcgKzkyOCw3IEBA
IGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVk
T2JqZWN0CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RUPgogICAgIHZvaWQgZ2V0VW5pZm9y
bUludGVybmFsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRGVzdFQgKmRhdGFPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wb25lbnRzKSBjb25zdDsKIApAQCAt
MTA5MSwxMyArOTU4LDYgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZSwgcHVibGljIExhYmVsZWRPYmplY3QKIAogICAgIFByb2dyYW1CaW5kaW5ncyBtQXR0cmlidXRl
QmluZGluZ3M7CiAKLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRo
IGJpbmRpbmcgbGF5b3V0IHF1YWxpZmllcnMgdGhhdCBjYW4gYmUgc2V0IGZvciBzb21lCi0gICAg
Ly8gdW5pZm9ybXMgaW4gR0xFUzMuMSsuIEl0IGlzIHVzZWQgdG8gcHJlLXNldCB0aGUgbG9jYXRp
b24gb2YgdW5pZm9ybXMuCi0gICAgUHJvZ3JhbUFsaWFzZWRCaW5kaW5ncyBtVW5pZm9ybUxvY2F0
aW9uQmluZGluZ3M7Ci0KLSAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIFByb2dy
YW1CaW5kaW5ncyBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzOwotCiAgICAgLy8gRVhUX2JsZW5kX2Z1
bmNfZXh0ZW5kZWQKICAgICBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzIG1GcmFnbWVudE91dHB1dExv
Y2F0aW9uczsKICAgICBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzIG1GcmFnbWVudE91dHB1dEluZGV4
ZXM7CkBAIC0xMTEyLDggKzk3Miw2IEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9u
Q29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgU2hhZGVyUHJvZ3JhbU1hbmFnZXIg
Km1SZXNvdXJjZU1hbmFnZXI7CiAgICAgY29uc3QgU2hhZGVyUHJvZ3JhbUlEIG1IYW5kbGU7CiAK
LSAgICBJbmZvTG9nIG1JbmZvTG9nOwotCiAgICAgLy8gQ2FjaGUgZm9yIHNhbXBsZXIgdmFsaWRh
dGlvbgogICAgIE9wdGlvbmFsPGJvb2w+IG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1By
b2dyYW1FeGVjdXRhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2I5YWNmYmI0MDhjMTgwOTA1ZmVlMzRi
NjgwOTY2MWM4MTY3NzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtMCwwICsxLDI3MCBAQAor
Ly8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKy8vIFByb2dyYW1FeGVjdXRhYmxlLmNwcDogQ29sbGVjdHMgdGhlIGludGVyZmFj
ZXMgY29tbW9uIHRvIGJvdGggUHJvZ3JhbXMgYW5kCisvLyBQcm9ncmFtUGlwZWxpbmVzIGluIG9y
ZGVyIHRvIGV4ZWN1dGUvZHJhdyB3aXRoIGVpdGhlci4KKworI2luY2x1ZGUgImxpYkFOR0xFL1By
b2dyYW1FeGVjdXRhYmxlLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCisKK25h
bWVzcGFjZSBnbAoreworCitQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUoKQor
ICAgIDogbVByb2dyYW1TdGF0ZShudWxscHRyKSwKKyAgICAgIG1Qcm9ncmFtUGlwZWxpbmVTdGF0
ZShudWxscHRyKSwKKyAgICAgIG1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbigwKSwKKyAgICAgIG1B
dHRyaWJ1dGVzVHlwZU1hc2soMCksCisgICAgICBtQXR0cmlidXRlc01hc2soMCksCisgICAgICBt
QWN0aXZlU2FtcGxlcnNNYXNrKDApLAorICAgICAgbUFjdGl2ZVNhbXBsZXJSZWZDb3VudHN7fSwK
KyAgICAgIG1BY3RpdmVJbWFnZXNNYXNrKDApCit7CisgICAgbUFjdGl2ZVNhbXBsZXJUeXBlcy5m
aWxsKFRleHR1cmVUeXBlOjpJbnZhbGlkRW51bSk7CisgICAgbUFjdGl2ZVNhbXBsZXJGb3JtYXRz
LmZpbGwoU2FtcGxlckZvcm1hdDo6SW52YWxpZEVudW0pOworfQorCitQcm9ncmFtRXhlY3V0YWJs
ZTo6flByb2dyYW1FeGVjdXRhYmxlKCkgPSBkZWZhdWx0OworCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlOjpyZXNldCgpCit7CisgICAgcmVzZXRJbmZvTG9nKCk7CisgICAgbUFjdGl2ZUF0dHJpYkxv
Y2F0aW9uc01hc2sucmVzZXQoKTsKKyAgICBtQXR0cmlidXRlc1R5cGVNYXNrLnJlc2V0KCk7Cisg
ICAgbUF0dHJpYnV0ZXNNYXNrLnJlc2V0KCk7CisgICAgbU1heEFjdGl2ZUF0dHJpYkxvY2F0aW9u
ID0gMDsKKworICAgIG1BY3RpdmVTYW1wbGVyc01hc2sucmVzZXQoKTsKKyAgICBtQWN0aXZlU2Ft
cGxlclJlZkNvdW50cyA9IHt9OworICAgIG1BY3RpdmVTYW1wbGVyVHlwZXMuZmlsbChUZXh0dXJl
VHlwZTo6SW52YWxpZEVudW0pOworICAgIG1BY3RpdmVTYW1wbGVyRm9ybWF0cy5maWxsKFNhbXBs
ZXJGb3JtYXQ6OkludmFsaWRFbnVtKTsKKworICAgIG1BY3RpdmVJbWFnZXNNYXNrLnJlc2V0KCk7
Cit9CisKK2ludCBQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0SW5mb0xvZ0xlbmd0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obUluZm9Mb2cuZ2V0TGVuZ3RoKCkpOworfQor
Cit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKSBjb25zdAoreworICAgIHJldHVybiBtSW5mb0xv
Zy5nZXRMb2coYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKK30KKworc3RkOjpzdHJpbmcgUHJv
Z3JhbUV4ZWN1dGFibGU6OmdldEluZm9Mb2dTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBt
SW5mb0xvZy5zdHIoKTsKK30KKworYm9vbCBQcm9ncmFtRXhlY3V0YWJsZTo6aXNBdHRyaWJMb2Nh
dGlvbkFjdGl2ZShzaXplX3QgYXR0cmliTG9jYXRpb24pIGNvbnN0Cit7CisgICAgLy8gVE9ETyh0
aW12cCk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzU3MDogRW5hYmxlIHRoaXMgYXNzZXJ0IGhlcmUg
c29tZWhvdy4KKyAgICAvLyAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CisgICAgQVNTRVJUKGF0
dHJpYkxvY2F0aW9uIDwgbUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2suc2l6ZSgpKTsKKyAgICBy
ZXR1cm4gbUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2tbYXR0cmliTG9jYXRpb25dOworfQorCitB
dHRyaWJ1dGVzTWFzayBQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0QXR0cmlidXRlc01hc2soKSBjb25z
dAoreworICAgIC8vIFRPRE8odGltdnApOiBodHRwOi8vYW5nbGVidWcuY29tLzM1NzA6IEVuYWJs
ZSB0aGlzIGFzc2VydCBoZXJlIHNvbWVob3cuCisgICAgLy8gICAgQVNTRVJUKG1MaW5rUmVzb2x2
ZWQpOworICAgIHJldHVybiBtQXR0cmlidXRlc01hc2s7Cit9CisKK2Jvb2wgUHJvZ3JhbUV4ZWN1
dGFibGU6Omhhc0RlZmF1bHRVbmlmb3Jtcyhjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1Qcm9ncmFtU3RhdGUgfHwgbVByb2dyYW1QaXBlbGluZVN0YXRlKTsK
KyAgICBpZiAobVByb2dyYW1TdGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtUHJvZ3JhbVN0
YXRlLT5oYXNEZWZhdWx0VW5pZm9ybXMoKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKHRpbXZwKTog
aHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBTdXBwb3J0IHByb2dyYW0gcGlwZWxpbmVzCisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUHJvZ3JhbUV4ZWN1dGFibGU6Omhhc1RleHR1cmVz
KGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobVByb2dyYW1T
dGF0ZSB8fCBtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgIGlmIChtUHJvZ3JhbVN0YXRlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1Qcm9ncmFtU3RhdGUtPmhhc1RleHR1cmVzKCk7CisgICAg
fQorCisgICAgLy8gVE9ETyh0aW12cCk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzU3MDogU3VwcG9y
dCBwcm9ncmFtIHBpcGVsaW5lcworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFByb2dy
YW1FeGVjdXRhYmxlOjpoYXNVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1Qcm9ncmFtU3RhdGUgfHwgbVByb2dyYW1QaXBlbGluZVN0
YXRlKTsKKyAgICBpZiAobVByb2dyYW1TdGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtUHJv
Z3JhbVN0YXRlLT5oYXNVbmlmb3JtQnVmZmVycygpOworICAgIH0KKworICAgIC8vIFRPRE8odGlt
dnApOiBodHRwOi8vYW5nbGVidWcuY29tLzM1NzA6IFN1cHBvcnQgcHJvZ3JhbSBwaXBlbGluZXMK
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBQcm9ncmFtRXhlY3V0YWJsZTo6aGFzU3Rv
cmFnZUJ1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdAoreworICAgIEFTU0VS
VChtUHJvZ3JhbVN0YXRlIHx8IG1Qcm9ncmFtUGlwZWxpbmVTdGF0ZSk7CisgICAgaWYgKG1Qcm9n
cmFtU3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gbVByb2dyYW1TdGF0ZS0+aGFzU3RvcmFn
ZUJ1ZmZlcnMoKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKHRpbXZwKTogaHR0cDovL2FuZ2xlYnVn
LmNvbS8zNTcwOiBTdXBwb3J0IHByb2dyYW0gcGlwZWxpbmVzCisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgUHJvZ3JhbUV4ZWN1dGFibGU6Omhhc0F0b21pY0NvdW50ZXJCdWZmZXJzKGNv
bnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobVByb2dyYW1TdGF0
ZSB8fCBtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgIGlmIChtUHJvZ3JhbVN0YXRlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1Qcm9ncmFtU3RhdGUtPmhhc0F0b21pY0NvdW50ZXJCdWZmZXJz
KCk7CisgICAgfQorCisgICAgLy8gVE9ETyh0aW12cCk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzU3
MDogU3VwcG9ydCBwcm9ncmFtIHBpcGVsaW5lcworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFByb2dyYW1FeGVjdXRhYmxlOjpoYXNJbWFnZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRl
KSBjb25zdAoreworICAgIEFTU0VSVChtUHJvZ3JhbVN0YXRlIHx8IG1Qcm9ncmFtUGlwZWxpbmVT
dGF0ZSk7CisgICAgaWYgKG1Qcm9ncmFtU3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gbVBy
b2dyYW1TdGF0ZS0+aGFzSW1hZ2VzKCk7CisgICAgfQorCisgICAgLy8gVE9ETyh0aW12cCk6IGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMzU3MDogU3VwcG9ydCBwcm9ncmFtIHBpcGVsaW5lcworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFByb2dyYW1FeGVjdXRhYmxlOjpoYXNUcmFuc2Zvcm1G
ZWVkYmFja091dHB1dChjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1Qcm9ncmFtU3RhdGUgfHwgbVByb2dyYW1QaXBlbGluZVN0YXRlKTsKKyAgICBpZiAobVBy
b2dyYW1TdGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtUHJvZ3JhbVN0YXRlLT5oYXNUcmFu
c2Zvcm1GZWVkYmFja091dHB1dCgpOworICAgIH0KKworICAgIC8vIFRPRE8odGltdnApOiBodHRw
Oi8vYW5nbGVidWcuY29tLzM1NzA6IFN1cHBvcnQgcHJvZ3JhbSBwaXBlbGluZXMKKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworc2l6ZV90IFByb2dyYW1FeGVjdXRhYmxlOjpnZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlckNvdW50KGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobVByb2dyYW1TdGF0ZSB8fCBtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgIGlm
IChtUHJvZ3JhbVN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1Qcm9ncmFtU3RhdGUtPmdl
dFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKHRp
bXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBTdXBwb3J0IHByb2dyYW0gcGlwZWxpbmVz
CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dXBkYXRlQWN0
aXZlU2FtcGxlcnMoY29uc3Qgc3RkOjp2ZWN0b3I8U2FtcGxlckJpbmRpbmc+ICZzYW1wbGVyQmlu
ZGluZ3MpCit7CisgICAgZm9yIChjb25zdCBTYW1wbGVyQmluZGluZyAmc2FtcGxlckJpbmRpbmcg
OiBzYW1wbGVyQmluZGluZ3MpCisgICAgeworICAgICAgICBpZiAoc2FtcGxlckJpbmRpbmcudW5y
ZWZlcmVuY2VkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZm9yIChHTGludCB0
ZXh0dXJlVW5pdCA6IHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoKyttQWN0aXZlU2FtcGxlclJlZkNvdW50c1t0ZXh0dXJlVW5pdF0g
PT0gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtQWN0aXZlU2FtcGxlclR5cGVz
W3RleHR1cmVVbml0XSAgID0gc2FtcGxlckJpbmRpbmcudGV4dHVyZVR5cGU7CisgICAgICAgICAg
ICAgICAgbUFjdGl2ZVNhbXBsZXJGb3JtYXRzW3RleHR1cmVVbml0XSA9IHNhbXBsZXJCaW5kaW5n
LmZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAobUFjdGl2ZVNhbXBsZXJUeXBlc1t0ZXh0dXJlVW5pdF0gIT0g
c2FtcGxlckJpbmRpbmcudGV4dHVyZVR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBtQWN0aXZlU2FtcGxlclR5cGVzW3RleHR1cmVVbml0XSA9IFRleHR1cmVUeXBl
OjpJbnZhbGlkRW51bTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1B
Y3RpdmVTYW1wbGVyRm9ybWF0c1t0ZXh0dXJlVW5pdF0gIT0gc2FtcGxlckJpbmRpbmcuZm9ybWF0
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZVNhbXBsZXJG
b3JtYXRzW3RleHR1cmVVbml0XSA9IFNhbXBsZXJGb3JtYXQ6OkludmFsaWRFbnVtOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1BY3RpdmVTYW1wbGVyc01h
c2suc2V0KHRleHR1cmVVbml0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBQcm9ncmFt
RXhlY3V0YWJsZTo6dXBkYXRlQWN0aXZlSW1hZ2VzKHN0ZDo6dmVjdG9yPEltYWdlQmluZGluZz4g
JmltYWdlQmluZGluZ3MpCit7CisgICAgZm9yIChJbWFnZUJpbmRpbmcgJmltYWdlQmluZGluZyA6
IGltYWdlQmluZGluZ3MpCisgICAgeworICAgICAgICBpZiAoaW1hZ2VCaW5kaW5nLnVucmVmZXJl
bmNlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZvciAoR0xpbnQgaW1hZ2VV
bml0IDogaW1hZ2VCaW5kaW5nLmJvdW5kSW1hZ2VVbml0cykKKyAgICAgICAgeworICAgICAgICAg
ICAgbUFjdGl2ZUltYWdlc01hc2suc2V0KGltYWdlVW5pdCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnNldFNhbXBsZXJVbmlmb3JtVGV4dHVyZVR5cGVB
bmRGb3JtYXQoCisgICAgc2l6ZV90IHRleHR1cmVVbml0SW5kZXgsCisgICAgc3RkOjp2ZWN0b3I8
U2FtcGxlckJpbmRpbmc+ICZzYW1wbGVyQmluZGluZ3MpCit7CisgICAgYm9vbCBmb3VuZEJpbmRp
bmcgICAgICAgICA9IGZhbHNlOworICAgIFRleHR1cmVUeXBlIGZvdW5kVHlwZSAgICAgPSBUZXh0
dXJlVHlwZTo6SW52YWxpZEVudW07CisgICAgU2FtcGxlckZvcm1hdCBmb3VuZEZvcm1hdCA9IFNh
bXBsZXJGb3JtYXQ6OkludmFsaWRFbnVtOworCisgICAgZm9yIChjb25zdCBTYW1wbGVyQmluZGlu
ZyAmYmluZGluZyA6IHNhbXBsZXJCaW5kaW5ncykKKyAgICB7CisgICAgICAgIGlmIChiaW5kaW5n
LnVucmVmZXJlbmNlZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEEgY29u
ZmxpY3QgZXhpc3RzIGlmIHNhbXBsZXJzIG9mIGRpZmZlcmVudCB0eXBlcyBhcmUgc291cmNlZCBi
eSB0aGUgc2FtZSB0ZXh0dXJlIHVuaXQuCisgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgYWxs
IGJvdW5kIHRleHR1cmVzIHRvIGRldGVjdCB0aGlzIGVycm9yIGNhc2UuCisgICAgICAgIGZvciAo
R0x1aW50IHRleHR1cmVVbml0IDogYmluZGluZy5ib3VuZFRleHR1cmVVbml0cykKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHRleHR1cmVVbml0ID09IHRleHR1cmVVbml0SW5kZXgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFmb3VuZEJpbmRpbmcpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBmb3VuZEJpbmRpbmcgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBmb3VuZFR5cGUgICAgPSBiaW5kaW5nLnRleHR1cmVUeXBlOworICAgICAg
ICAgICAgICAgICAgICBmb3VuZEZvcm1hdCAgPSBiaW5kaW5nLmZvcm1hdDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGZvdW5kVHlwZSAhPSBiaW5kaW5nLnRleHR1cmVUeXBlKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZFR5cGUgPSBUZXh0
dXJlVHlwZTo6SW52YWxpZEVudW07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvdW5kRm9ybWF0ICE9IGJpbmRpbmcuZm9ybWF0KQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEZvcm1hdCA9IFNhbXBsZXJG
b3JtYXQ6OkludmFsaWRFbnVtOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbUFjdGl2ZVNhbXBs
ZXJUeXBlc1t0ZXh0dXJlVW5pdEluZGV4XSAgID0gZm91bmRUeXBlOworICAgIG1BY3RpdmVTYW1w
bGVyRm9ybWF0c1t0ZXh0dXJlVW5pdEluZGV4XSA9IGZvdW5kRm9ybWF0OworfQorCit9ICAvLyBu
YW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Qcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q3ZTc4NTMzZWFkYzk4ZmNh
M2I1MjE3ZjllNzMzMjNmYjQ3ZTljZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC0wLDAgKzEsMTY3
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gUHJvZ3JhbUV4ZWN1dGFibGUuaDogQ29sbGVjdHMgdGhlIGluZm9y
bWF0aW9uIGFuZCBpbnRlcmZhY2VzIGNvbW1vbiB0byBib3RoIFByb2dyYW1zIGFuZAorLy8gUHJv
Z3JhbVBpcGVsaW5lcyBpbiBvcmRlciB0byBleGVjdXRlL2RyYXcgd2l0aCBlaXRoZXIuCisKKyNp
Zm5kZWYgTElCQU5HTEVfUFJPR1JBTUVYRUNVVEFCTEVfSF8KKyNkZWZpbmUgTElCQU5HTEVfUFJP
R1JBTUVYRUNVVEFCTEVfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9JbmZvTG9nLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmFyeWluZ1BhY2tpbmcu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisKK25hbWVzcGFjZSBnbAorewor
CisvLyBUaGlzIHNtYWxsIHN0cnVjdHVyZSBlbmNhcHN1bGF0ZXMgYmluZGluZyBzYW1wbGVyIHVu
aWZvcm1zIHRvIGFjdGl2ZSBHTCB0ZXh0dXJlcy4KK3N0cnVjdCBTYW1wbGVyQmluZGluZworewor
ICAgIFNhbXBsZXJCaW5kaW5nKFRleHR1cmVUeXBlIHRleHR1cmVUeXBlSW4sCisgICAgICAgICAg
ICAgICAgICAgU2FtcGxlckZvcm1hdCBmb3JtYXRJbiwKKyAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZWxlbWVudENvdW50LAorICAgICAgICAgICAgICAgICAgIGJvb2wgdW5yZWZlcmVuY2VkKTsK
KyAgICBTYW1wbGVyQmluZGluZyhjb25zdCBTYW1wbGVyQmluZGluZyAmb3RoZXIpOworICAgIH5T
YW1wbGVyQmluZGluZygpOworCisgICAgLy8gTmVjZXNzYXJ5IGZvciByZXRyaWV2aW5nIGFjdGl2
ZSB0ZXh0dXJlcyBmcm9tIHRoZSBHTCBzdGF0ZS4KKyAgICBUZXh0dXJlVHlwZSB0ZXh0dXJlVHlw
ZTsKKworICAgIFNhbXBsZXJGb3JtYXQgZm9ybWF0OworCisgICAgLy8gTGlzdCBvZiBhbGwgdGV4
dHVyZXMgYm91bmQgdG8gdGhpcyBzYW1wbGVyLCBvZiB0eXBlIHRleHR1cmVUeXBlLgorICAgIHN0
ZDo6dmVjdG9yPEdMdWludD4gYm91bmRUZXh0dXJlVW5pdHM7CisKKyAgICAvLyBBIG5vdGUgaWYg
dGhpcyBzYW1wbGVyIGlzIGFuIHVucmVmZXJlbmNlZCB1bmlmb3JtLgorICAgIGJvb2wgdW5yZWZl
cmVuY2VkOworfTsKKworc3RydWN0IEltYWdlQmluZGluZworeworICAgIEltYWdlQmluZGluZyhz
aXplX3QgY291bnQpOworICAgIEltYWdlQmluZGluZyhHTHVpbnQgaW1hZ2VVbml0LCBzaXplX3Qg
Y291bnQsIGJvb2wgdW5yZWZlcmVuY2VkKTsKKyAgICBJbWFnZUJpbmRpbmcoY29uc3QgSW1hZ2VC
aW5kaW5nICZvdGhlcik7CisgICAgfkltYWdlQmluZGluZygpOworCisgICAgc3RkOjp2ZWN0b3I8
R0x1aW50PiBib3VuZEltYWdlVW5pdHM7CisKKyAgICAvLyBBIG5vdGUgaWYgdGhpcyBpbWFnZSB1
bml0IGlzIGFuIHVucmVmZXJlbmNlZCB1bmlmb3JtLgorICAgIGJvb2wgdW5yZWZlcmVuY2VkOwor
fTsKKworY2xhc3MgUHJvZ3JhbVN0YXRlOworY2xhc3MgUHJvZ3JhbVBpcGVsaW5lU3RhdGU7CisK
K2NsYXNzIFByb2dyYW1FeGVjdXRhYmxlCit7CisgIHB1YmxpYzoKKyAgICBQcm9ncmFtRXhlY3V0
YWJsZSgpOworICAgIHZpcnR1YWwgflByb2dyYW1FeGVjdXRhYmxlKCk7CisKKyAgICB2b2lkIHJl
c2V0KCk7CisKKyAgICBpbnQgZ2V0SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OworICAgIEluZm9Mb2cg
JmdldEluZm9Mb2coKSB7IHJldHVybiBtSW5mb0xvZzsgfQorICAgIHZvaWQgZ2V0SW5mb0xvZyhH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykgY29uc3Q7Cisg
ICAgc3RkOjpzdHJpbmcgZ2V0SW5mb0xvZ1N0cmluZygpIGNvbnN0OworICAgIHZvaWQgcmVzZXRJ
bmZvTG9nKCkgeyBtSW5mb0xvZy5yZXNldCgpOyB9CisKKyAgICBjb25zdCBTaGFkZXJCaXRTZXQg
JmdldExpbmtlZFNoYWRlclN0YWdlcygpIGNvbnN0IHsgcmV0dXJuIG1MaW5rZWRTaGFkZXJTdGFn
ZXM7IH0KKyAgICBTaGFkZXJCaXRTZXQgJmdldExpbmtlZFNoYWRlclN0YWdlcygpIHsgcmV0dXJu
IG1MaW5rZWRTaGFkZXJTdGFnZXM7IH0KKyAgICBib29sIGhhc0xpbmtlZFNoYWRlclN0YWdlKFNo
YWRlclR5cGUgc2hhZGVyVHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChzaGFkZXJU
eXBlICE9IFNoYWRlclR5cGU6OkludmFsaWRFbnVtKTsKKyAgICAgICAgcmV0dXJuIG1MaW5rZWRT
aGFkZXJTdGFnZXNbc2hhZGVyVHlwZV07CisgICAgfQorICAgIHNpemVfdCBnZXRMaW5rZWRTaGFk
ZXJTdGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbUxpbmtlZFNoYWRlclN0YWdlcy5jb3VudCgp
OyB9CisgICAgYm9vbCBpc0NvbXB1dGUoKSBjb25zdCB7IHJldHVybiBoYXNMaW5rZWRTaGFkZXJT
dGFnZShTaGFkZXJUeXBlOjpDb21wdXRlKTsgfQorCisgICAgY29uc3QgQXR0cmlidXRlc01hc2sg
JmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOworICAgIH0KKyAgICBib29sIGlzQXR0cmli
TG9jYXRpb25BY3RpdmUoc2l6ZV90IGF0dHJpYkxvY2F0aW9uKSBjb25zdDsKKyAgICBjb25zdCBB
dHRyaWJ1dGVzTWFzayAmZ2V0Tm9uQnVpbHRpbkF0dHJpYkxvY2F0aW9uc01hc2soKSBjb25zdCB7
IHJldHVybiBtQXR0cmlidXRlc01hc2s7IH0KKyAgICB1bnNpZ25lZCBpbnQgZ2V0TWF4QWN0aXZl
QXR0cmliTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtTWF4QWN0aXZlQXR0cmliTG9jYXRpb247
IH0KKyAgICBjb25zdCBDb21wb25lbnRUeXBlTWFzayAmZ2V0QXR0cmlidXRlc1R5cGVNYXNrKCkg
Y29uc3QgeyByZXR1cm4gbUF0dHJpYnV0ZXNUeXBlTWFzazsgfQorICAgIEF0dHJpYnV0ZXNNYXNr
IGdldEF0dHJpYnV0ZXNNYXNrKCkgY29uc3Q7CisKKyAgICBjb25zdCBBY3RpdmVUZXh0dXJlTWFz
ayAmZ2V0QWN0aXZlU2FtcGxlcnNNYXNrKCkgY29uc3QgeyByZXR1cm4gbUFjdGl2ZVNhbXBsZXJz
TWFzazsgfQorICAgIFNhbXBsZXJGb3JtYXQgZ2V0U2FtcGxlckZvcm1hdEZvclRleHR1cmVVbml0
SW5kZXgoc2l6ZV90IHRleHR1cmVVbml0SW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbUFjdGl2ZVNhbXBsZXJGb3JtYXRzW3RleHR1cmVVbml0SW5kZXhdOworICAgIH0KKyAgICBj
b25zdCBBY3RpdmVUZXh0dXJlTWFzayAmZ2V0QWN0aXZlSW1hZ2VzTWFzaygpIGNvbnN0IHsgcmV0
dXJuIG1BY3RpdmVJbWFnZXNNYXNrOyB9CisKKyAgICBjb25zdCBBY3RpdmVUZXh0dXJlQXJyYXk8
VGV4dHVyZVR5cGU+ICZnZXRBY3RpdmVTYW1wbGVyVHlwZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1BY3RpdmVTYW1wbGVyVHlwZXM7CisgICAgfQorCisgICAgYm9vbCBoYXNEZWZh
dWx0VW5pZm9ybXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdDsKKyAgICBib29sIGhh
c1RleHR1cmVzKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3Q7CisgICAgYm9vbCBoYXNV
bmlmb3JtQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpIGNvbnN0OworICAgIGJvb2wg
aGFzU3RvcmFnZUJ1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdDsKKyAgICBi
b29sIGhhc0F0b21pY0NvdW50ZXJCdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29u
c3Q7CisgICAgYm9vbCBoYXNJbWFnZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdDsK
KyAgICBib29sIGhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KGNvbnN0IGdsOjpTdGF0ZSAmZ2xT
dGF0ZSkgY29uc3Q7CisKKyAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHVuaWZvcm0gYW5kIHN0
b3JhZ2UgYnVmZmVyIGRlY2xhcmF0aW9ucywgY291bnRpbmcgYXJyYXlzIGFzIG9uZS4KKyAgICBz
aXplX3QgZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudChjb25zdCBnbDo6U3RhdGUgJmds
U3RhdGUpIGNvbnN0OworCisgICAgLy8gVE9ETzogaHR0cDovL2FuZ2xlYnVnLmNvbS80NTIwOiBS
ZW1vdmUgbVByb2dyYW1TdGF0ZS9tUHJvZ3JhbVBpcGVsaW5lU3RhdGUKKyAgICB2b2lkIHNldFBy
b2dyYW1TdGF0ZShQcm9ncmFtU3RhdGUgKnN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
UHJvZ3JhbVN0YXRlICYmICFtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgICAgICBtUHJvZ3Jh
bVN0YXRlID0gc3RhdGU7CisgICAgfQorICAgIHZvaWQgc2V0UHJvZ3JhbVBpcGVsaW5lU3RhdGUo
UHJvZ3JhbVBpcGVsaW5lU3RhdGUgKnN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtUHJv
Z3JhbVN0YXRlICYmICFtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgICAgICBtUHJvZ3JhbVBp
cGVsaW5lU3RhdGUgPSBzdGF0ZTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICAvLyBUT0RPKHRp
bXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBJbnZlc3RpZ2F0ZSByZW1vdmluZyB0aGVz
ZSBmcmllbmQKKyAgICAvLyBjbGFzcyBkZWNsYXJhdGlvbnMgYW5kIGFjY2Vzc2luZyB0aGUgbmVj
ZXNzYXJ5IG1lbWJlcnMgd2l0aCBnZXR0ZXJzL3NldHRlcnMuCisgICAgZnJpZW5kIGNsYXNzIFBy
b2dyYW07CisgICAgZnJpZW5kIGNsYXNzIFByb2dyYW1QaXBlbGluZTsKKyAgICBmcmllbmQgY2xh
c3MgUHJvZ3JhbVN0YXRlOworCisgICAgdm9pZCB1cGRhdGVBY3RpdmVTYW1wbGVycyhjb25zdCBz
dGQ6OnZlY3RvcjxTYW1wbGVyQmluZGluZz4gJnNhbXBsZXJCaW5kaW5ncyk7CisgICAgdm9pZCB1
cGRhdGVBY3RpdmVJbWFnZXMoc3RkOjp2ZWN0b3I8SW1hZ2VCaW5kaW5nPiAmaW1hZ2VCaW5kaW5n
cyk7CisKKyAgICAvLyBTY2FucyB0aGUgc2FtcGxlciBiaW5kaW5ncyBmb3IgdHlwZSBjb25mbGlj
dHMgd2l0aCBzYW1wbGVyICd0ZXh0dXJlVW5pdEluZGV4Jy4KKyAgICB2b2lkIHNldFNhbXBsZXJV
bmlmb3JtVGV4dHVyZVR5cGVBbmRGb3JtYXQoc2l6ZV90IHRleHR1cmVVbml0SW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFNh
bXBsZXJCaW5kaW5nPiAmc2FtcGxlckJpbmRpbmdzKTsKKworICAgIC8vIFRPRE86IGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vNDUyMDogUmVtb3ZlIG1Qcm9ncmFtU3RhdGUvbVByb2dyYW1QaXBlbGluZVN0
YXRlCisgICAgUHJvZ3JhbVN0YXRlICptUHJvZ3JhbVN0YXRlOworICAgIFByb2dyYW1QaXBlbGlu
ZVN0YXRlICptUHJvZ3JhbVBpcGVsaW5lU3RhdGU7CisKKyAgICBJbmZvTG9nIG1JbmZvTG9nOwor
CisgICAgU2hhZGVyQml0U2V0IG1MaW5rZWRTaGFkZXJTdGFnZXM7CisKKyAgICBhbmdsZTo6Qml0
U2V0PE1BWF9WRVJURVhfQVRUUklCUz4gbUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2s7CisgICAg
dW5zaWduZWQgaW50IG1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbjsKKyAgICBDb21wb25lbnRUeXBl
TWFzayBtQXR0cmlidXRlc1R5cGVNYXNrOworICAgIC8vIG1BdHRyaWJ1dGVzTWFzayBpcyBpZGVu
dGljYWwgdG8gbUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2sgd2l0aCBidWlsdC1pbiBhdHRyaWJ1
dGVzIHJlbW92ZWQuCisgICAgQXR0cmlidXRlc01hc2sgbUF0dHJpYnV0ZXNNYXNrOworCisgICAg
Ly8gQ2FjaGVkIG1hc2sgb2YgYWN0aXZlIHNhbXBsZXJzIGFuZCBzYW1wbGVyIHR5cGVzLgorICAg
IEFjdGl2ZVRleHR1cmVNYXNrIG1BY3RpdmVTYW1wbGVyc01hc2s7CisgICAgQWN0aXZlVGV4dHVy
ZUFycmF5PHVpbnQzMl90PiBtQWN0aXZlU2FtcGxlclJlZkNvdW50czsKKyAgICBBY3RpdmVUZXh0
dXJlQXJyYXk8VGV4dHVyZVR5cGU+IG1BY3RpdmVTYW1wbGVyVHlwZXM7CisgICAgQWN0aXZlVGV4
dHVyZUFycmF5PFNhbXBsZXJGb3JtYXQ+IG1BY3RpdmVTYW1wbGVyRm9ybWF0czsKKworICAgIC8v
IENhY2hlZCBtYXNrIG9mIGFjdGl2ZSBpbWFnZXMuCisgICAgQWN0aXZlVGV4dHVyZU1hc2sgbUFj
dGl2ZUltYWdlc01hc2s7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlmICAvLyBM
SUJBTkdMRV9QUk9HUkFNRVhFQ1VUQUJMRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmNwcAppbmRleCBlMTk3ZTk5
OGZkOWRjMjkwMmUwMmRjZmZjZjE0MDA2YjVkNzQ4ZjhlLi5kMTc1MWFkNzQyNzMwZTRlNzRkZjEw
ZjBlN2UzODUzNDk3ZWQzZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmNwcApAQCAtMTcsNyArMTcsMTAgQEAK
IG5hbWVzcGFjZSBnbAogewogCi1Qcm9ncmFtUGlwZWxpbmVTdGF0ZTo6UHJvZ3JhbVBpcGVsaW5l
U3RhdGUoKSA6IG1MYWJlbCgpIHt9CitQcm9ncmFtUGlwZWxpbmVTdGF0ZTo6UHJvZ3JhbVBpcGVs
aW5lU3RhdGUoKSA6IG1MYWJlbCgpCit7CisgICAgbUV4ZWN1dGFibGUuc2V0UHJvZ3JhbVBpcGVs
aW5lU3RhdGUodGhpcyk7Cit9CiAKIFByb2dyYW1QaXBlbGluZVN0YXRlOjp+UHJvZ3JhbVBpcGVs
aW5lU3RhdGUoKSB7fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmgKaW5kZXggNmRhNDEwM2RkZTcwZjFlNjFkNzA4YTg2
M2RiZTUwOTVlMGQ1ODBiNC4uOTg3MzE1Mjc4MTNlMmIyMzRkMDIxOWJmNTAxOWFhOWU3NjBmODdj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dy
YW1QaXBlbGluZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Q
cm9ncmFtUGlwZWxpbmUuaApAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL1Byb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmpl
Y3QuaCIKIAogbmFtZXNwYWNlIHJ4CkBAIC0zNiwxMCArMzcsMTUgQEAgY2xhc3MgUHJvZ3JhbVBp
cGVsaW5lU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0OwogCisgICAgY29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUg
JmdldEV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtRXhlY3V0YWJsZTsgfQorICAgIFByb2dy
YW1FeGVjdXRhYmxlICZnZXRFeGVjdXRhYmxlKCkgeyByZXR1cm4gbUV4ZWN1dGFibGU7IH0KKwog
ICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9ncmFtUGlwZWxpbmU7CiAKICAgICBzdGQ6
OnN0cmluZyBtTGFiZWw7CisKKyAgICBQcm9ncmFtRXhlY3V0YWJsZSBtRXhlY3V0YWJsZTsKIH07
CiAKIGNsYXNzIFByb2dyYW1QaXBlbGluZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9iamVjdDxQ
cm9ncmFtUGlwZWxpbmVJRD4sIHB1YmxpYyBMYWJlbGVkT2JqZWN0CkBAIC01Myw2ICs1OSwxMSBA
QCBjbGFzcyBQcm9ncmFtUGlwZWxpbmUgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3Q8UHJv
Z3JhbVBpcGVsaW5lSUQ+LCBwdWJsaWMgTAogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKSBvdmVycmlkZTsKICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIGNvbnN0IFBy
b2dyYW1QaXBlbGluZVN0YXRlICZnZXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZTsgfQor
CisgICAgY29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUgJmdldEV4ZWN1dGFibGUoKSBjb25zdCB7IHJl
dHVybiBtU3RhdGUuZ2V0RXhlY3V0YWJsZSgpOyB9CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUgJmdl
dEV4ZWN1dGFibGUoKSB7IHJldHVybiBtU3RhdGUuZ2V0RXhlY3V0YWJsZSgpOyB9CisKICAgICBy
eDo6UHJvZ3JhbVBpcGVsaW5lSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdDsKIAogICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1Jlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAxNWYwNDVhMWI3YjdhMDdmNjk4YjEzYmM0ZGI5
Yjc5Yjg5Y2E4YTQ2Li44Zjk5NTdhYjYwMGRmYWFiZmNjNTFiMTlkZGE0ZGY5NTI4NjI2NmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVz
b3VyY2VNYW5hZ2VyLmNwcApAQCAtMTMsOSArMTMsOSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Nv
bnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GZW5jZS5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L01lbW9yeU9iamVjdC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1BhdGguaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJi
dWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TYW1wbGVyLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvU2VtYXBob3JlLmgiCkBAIC0xMDIsNyArMTAyLDYgQEAgdm9pZCBUeXBlZFJlc291cmNlTWFu
YWdlcjxSZXNvdXJjZVR5cGUsIEhhbmRsZUFsbG9jYXRvclR5cGUsIEltcGxULCBJRFR5cGU+Ojpk
ZWwKIH0KIAogdGVtcGxhdGUgY2xhc3MgUmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVBbGxvY2F0
b3I+OwotdGVtcGxhdGUgY2xhc3MgUmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVSYW5nZUFsbG9j
YXRvcj47CiB0ZW1wbGF0ZSBjbGFzcyBUeXBlZFJlc291cmNlTWFuYWdlcjxCdWZmZXIsIEhhbmRs
ZUFsbG9jYXRvciwgQnVmZmVyTWFuYWdlciwgQnVmZmVySUQ+OwogdGVtcGxhdGUgY2xhc3MgVHlw
ZWRSZXNvdXJjZU1hbmFnZXI8VGV4dHVyZSwgSGFuZGxlQWxsb2NhdG9yLCBUZXh0dXJlTWFuYWdl
ciwgVGV4dHVyZUlEPjsKIHRlbXBsYXRlIGNsYXNzIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFJlbmRl
cmJ1ZmZlciwKQEAgLTM0Niw4MCArMzQ1LDYgQEAgU3luYyAqU3luY01hbmFnZXI6OmdldFN5bmMo
R0x1aW50IGhhbmRsZSkgY29uc3QKICAgICByZXR1cm4gbU9iamVjdE1hcC5xdWVyeShoYW5kbGUp
OwogfQogCi0vLyBQYXRoTWFuYWdlciBJbXBsZW1lbnRhdGlvbi4KLQotUGF0aE1hbmFnZXI6OlBh
dGhNYW5hZ2VyKCkgPSBkZWZhdWx0OwotCi1hbmdsZTo6UmVzdWx0IFBhdGhNYW5hZ2VyOjpjcmVh
dGVQYXRocyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIHJhbmdlLCBQYXRoSUQgKmNyZWF0ZWRP
dXQpCi17Ci0gICAgKmNyZWF0ZWRPdXQgPSB7MH07Ci0KLSAgICAvLyBBbGxvY2F0ZSBjbGllbnQg
c2lkZSBoYW5kbGVzLgotICAgIGNvbnN0IEdMdWludCBjbGllbnQgPSBtSGFuZGxlQWxsb2NhdG9y
LmFsbG9jYXRlUmFuZ2Uoc3RhdGljX2Nhc3Q8R0x1aW50PihyYW5nZSkpOwotICAgIGlmIChjbGll
bnQgPT0gSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmtJbnZhbGlkSGFuZGxlKQotICAgIHsKLSAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBhbGxv
Y2F0ZSBwYXRoIGhhbmRsZSByYW5nZS4iLCBfX0ZJTEVfXywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRlVOQ1RJT04sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIGFuZ2xl
OjpSZXN1bHQ6OlN0b3A7Ci0gICAgfQotCi0gICAgY29uc3QgYXV0byAmcGF0aHMgPSBjb250ZXh0
LT5nZXRJbXBsZW1lbnRhdGlvbigpLT5jcmVhdGVQYXRocyhyYW5nZSk7Ci0gICAgaWYgKHBhdGhz
LmVtcHR5KCkpCi0gICAgewotICAgICAgICBtSGFuZGxlQWxsb2NhdG9yLnJlbGVhc2VSYW5nZShj
bGllbnQsIHJhbmdlKTsKLSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgIkZhaWxlZCB0byBhbGxvY2F0ZSBwYXRoIG9iamVjdHMuIiwgX19GSUxFX18sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZVTkNUSU9OLCBfX0xJTkVfXyk7Ci0gICAg
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpTdG9wOwotICAgIH0KLQotICAgIGZvciAoR0xzaXpl
aSBpID0gMDsgaSA8IHJhbmdlOyArK2kpCi0gICAgewotICAgICAgICByeDo6UGF0aEltcGwgKmlt
cGwgPSBwYXRoc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSldOwotICAgICAgICBQYXRoSUQgaWQg
ICAgICAgICAgPSBQYXRoSUR7Y2xpZW50ICsgaX07Ci0gICAgICAgIG1QYXRocy5hc3NpZ24oaWQs
IG5ldyBQYXRoKGltcGwpKTsKLSAgICB9Ci0gICAgKmNyZWF0ZWRPdXQgPSBQYXRoSUR7Y2xpZW50
fTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUGF0aE1h
bmFnZXI6OmRlbGV0ZVBhdGhzKFBhdGhJRCBmaXJzdCwgR0xzaXplaSByYW5nZSkKLXsKLSAgICBH
THVpbnQgZmlyc3RIYW5kbGUgPSBmaXJzdC52YWx1ZTsKLSAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7
IGkgPCByYW5nZTsgKytpKQotICAgIHsKLSAgICAgICAgR0x1aW50IGlkID0gZmlyc3RIYW5kbGUg
KyBpOwotICAgICAgICBQYXRoICpwICAgPSBudWxscHRyOwotICAgICAgICBpZiAoIW1QYXRocy5l
cmFzZSh7aWR9LCAmcCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZGVsZXRlIHA7
Ci0gICAgfQotICAgIG1IYW5kbGVBbGxvY2F0b3IucmVsZWFzZVJhbmdlKGZpcnN0SGFuZGxlLCBz
dGF0aWNfY2FzdDxHTHVpbnQ+KHJhbmdlKSk7Ci19Ci0KLVBhdGggKlBhdGhNYW5hZ2VyOjpnZXRQ
YXRoKFBhdGhJRCBoYW5kbGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1QYXRocy5xdWVyeShoYW5k
bGUpOwotfQotCi1ib29sIFBhdGhNYW5hZ2VyOjpoYXNQYXRoKFBhdGhJRCBoYW5kbGUpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1IYW5kbGVBbGxvY2F0b3IuaXNVc2VkKEdldElEVmFsdWUoaGFuZGxl
KSk7Ci19Ci0KLVBhdGhNYW5hZ2VyOjp+UGF0aE1hbmFnZXIoKQotewotICAgIEFTU0VSVChtUGF0
aHMuZW1wdHkoKSk7Ci19Ci0KLXZvaWQgUGF0aE1hbmFnZXI6OnJlc2V0KGNvbnN0IENvbnRleHQg
KmNvbnRleHQpCi17Ci0gICAgZm9yIChhdXRvIHBhdGggOiBtUGF0aHMpCi0gICAgewotICAgICAg
ICBTYWZlRGVsZXRlKHBhdGguc2Vjb25kKTsKLSAgICB9Ci0gICAgbVBhdGhzLmNsZWFyKCk7Ci19
Ci0KIC8vIEZyYW1lYnVmZmVyTWFuYWdlciBJbXBsZW1lbnRhdGlvbi4KIAogLy8gc3RhdGljCkBA
IC01OTAsNSArNTE1LDQgQEAgU2VtYXBob3JlICpTZW1hcGhvcmVNYW5hZ2VyOjpnZXRTZW1hcGhv
cmUoU2VtYXBob3JlSUQgaGFuZGxlKSBjb25zdAogewogICAgIHJldHVybiBtU2VtYXBob3Jlcy5x
dWVyeShoYW5kbGUpOwogfQotCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaAppbmRleCA2
NjI0YWUyYmVmYWNkNTE2NjZjZTMxOTBmNmFhOGYzY2U0YjliMzlkLi41MmJlMjI3OThiYThlMTFi
OTI0MDUxYTE2NzBhYWI1MDU1NDY5NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oCkBAIC0xNCw3ICsxNCw2IEBA
CiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJv
ci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVzb3Vy
Y2VNYXAuaCIKIAogbmFtZXNwYWNlIHJ4CkBAIC0yNjQsMjQgKzI2Myw2IEBAIGNsYXNzIFN5bmNN
YW5hZ2VyIDogcHVibGljIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFN5bmMsIEhhbmRsZUFsbG9jYXRv
ciwgU3luY01hbmFnCiAgICAgflN5bmNNYW5hZ2VyKCkgb3ZlcnJpZGUge30KIH07CiAKLWNsYXNz
IFBhdGhNYW5hZ2VyIDogcHVibGljIFJlc291cmNlTWFuYWdlckJhc2U8SGFuZGxlUmFuZ2VBbGxv
Y2F0b3I+Ci17Ci0gIHB1YmxpYzoKLSAgICBQYXRoTWFuYWdlcigpOwotCi0gICAgYW5nbGU6OlJl
c3VsdCBjcmVhdGVQYXRocyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIHJhbmdlLCBQYXRoSUQg
Km51bUNyZWF0ZWQpOwotICAgIHZvaWQgZGVsZXRlUGF0aHMoUGF0aElEIGZpcnN0LCBHTHNpemVp
IHJhbmdlKTsKLSAgICBQYXRoICpnZXRQYXRoKFBhdGhJRCBoYW5kbGUpIGNvbnN0OwotICAgIGJv
b2wgaGFzUGF0aChQYXRoSUQgaGFuZGxlKSBjb25zdDsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgflBh
dGhNYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldChjb25zdCBDb250ZXh0ICpjb250
ZXh0KSBvdmVycmlkZTsKLQotICBwcml2YXRlOgotICAgIFJlc291cmNlTWFwPFBhdGgsIFBhdGhJ
RD4gbVBhdGhzOwotfTsKLQogY2xhc3MgRnJhbWVidWZmZXJNYW5hZ2VyCiAgICAgOiBwdWJsaWMg
VHlwZWRSZXNvdXJjZU1hbmFnZXI8RnJhbWVidWZmZXIsIEhhbmRsZUFsbG9jYXRvciwgRnJhbWVi
dWZmZXJNYW5hZ2VyLCBGcmFtZWJ1ZmZlcklEPgogewpAQCAtMzY1LDcgKzM0Niw2IEBAIGNsYXNz
IFNlbWFwaG9yZU1hbmFnZXIgOiBwdWJsaWMgUmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVBbGxv
Y2F0b3I+CiAKICAgICBSZXNvdXJjZU1hcDxTZW1hcGhvcmUsIFNlbWFwaG9yZUlEPiBtU2VtYXBo
b3JlczsKIH07Ci0KIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1JF
U09VUkNFTUFOQUdFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1Jlc291cmNlTWFwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvUmVzb3VyY2VNYXAuaAppbmRleCBhYmYzNjhkZmM3MTJhZTMwYzA2Mjg3MTY4ZDRlNWFm
Y2FhMGI0YzM5Li5iNGNlYTg1YzRhMjhmYTJjYzE0Mjg2NDk3YTlmZTQxOTBmMjU4ZTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYXAu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYXAu
aApAQCAtNjIsMTMgKzYyLDE1IEBAIGNsYXNzIFJlc291cmNlTWFwIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiAgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZU1hcDsKICAgICAgICAgSXRl
cmF0b3IoY29uc3QgUmVzb3VyY2VNYXAgJm9yaWdpbiwKICAgICAgICAgICAgICAgICAgR0x1aW50
IGZsYXRJbmRleCwKLSAgICAgICAgICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDo6Y29uc3RfaXRl
cmF0b3IgaGFzaEluZGV4KTsKKyAgICAgICAgICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDo6Y29u
c3RfaXRlcmF0b3IgaGFzaEluZGV4LAorICAgICAgICAgICAgICAgICBib29sIHNraXBOdWxscyk7
CiAgICAgICAgIHZvaWQgdXBkYXRlVmFsdWUoKTsKIAogICAgICAgICBjb25zdCBSZXNvdXJjZU1h
cCAmbU9yaWdpbjsKICAgICAgICAgR0x1aW50IG1GbGF0SW5kZXg7CiAgICAgICAgIHR5cGVuYW1l
IEhhc2hNYXA6OmNvbnN0X2l0ZXJhdG9yIG1IYXNoSW5kZXg7CiAgICAgICAgIEluZGV4QW5kUmVz
b3VyY2UgbVZhbHVlOworICAgICAgICBib29sIG1Ta2lwTnVsbHM7CiAgICAgfTsKIAogICAgIC8v
IG51bGwgdmFsdWVzIHJlcHJlc2VudCByZXNlcnZlZCBoYW5kbGVzLgpAQCAtNzYsMTMgKzc4LDE2
IEBAIGNsYXNzIFJlc291cmNlTWFwIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgSXRl
cmF0b3IgZW5kKCkgY29uc3Q7CiAgICAgSXRlcmF0b3IgZmluZChJRFR5cGUgaGFuZGxlKSBjb25z
dDsKIAorICAgIEl0ZXJhdG9yIGJlZ2luV2l0aE51bGwoKSBjb25zdDsKKyAgICBJdGVyYXRvciBl
bmRXaXRoTnVsbCgpIGNvbnN0OworCiAgICAgLy8gTm90IGEgY29uc3RhbnQtdGltZSBvcGVyYXRp
b24sIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHZlcmlmaWNhdGlvbi4KICAgICBib29sIGVtcHR5
KCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSXRlcmF0b3I7CiAKLSAg
ICBHTHVpbnQgbmV4dE5vbk51bGxSZXNvdXJjZShzaXplX3QgZmxhdEluZGV4KSBjb25zdDsKKyAg
ICBHTHVpbnQgbmV4dFJlc291cmNlKHNpemVfdCBmbGF0SW5kZXgsIGJvb2wgc2tpcE51bGxzKSBj
b25zdDsKIAogICAgIC8vIGNvbnN0ZXhwciBtZXRob2RzIGNhbm5vdCBjb250YWluIHJlaW50ZXJw
cmV0X2Nhc3QsIHNvIHdlIG5lZWQgYSBzdGF0aWMgbWV0aG9kLgogICAgIHN0YXRpYyBSZXNvdXJj
ZVR5cGUgKkludmFsaWRQb2ludGVyKCk7CkBAIC0xOTQsMTMgKzE5OSwyNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzb3VyY2VUeXBlLCB0eXBlbmFtZSBJRFR5cGU+CiB0eXBlbmFtZSBSZXNvdXJj
ZU1hcDxSZXNvdXJjZVR5cGUsIElEVHlwZT46Okl0ZXJhdG9yIFJlc291cmNlTWFwPFJlc291cmNl
VHlwZSwgSURUeXBlPjo6YmVnaW4oKQogICAgIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEl0ZXJhdG9y
KCp0aGlzLCBuZXh0Tm9uTnVsbFJlc291cmNlKDApLCBtSGFzaGVkUmVzb3VyY2VzLmJlZ2luKCkp
OworICAgIHJldHVybiBJdGVyYXRvcigqdGhpcywgbmV4dFJlc291cmNlKDAsIHRydWUpLCBtSGFz
aGVkUmVzb3VyY2VzLmJlZ2luKCksIHRydWUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVz
b3VyY2VUeXBlLCB0eXBlbmFtZSBJRFR5cGU+CiB0eXBlbmFtZSBSZXNvdXJjZU1hcDxSZXNvdXJj
ZVR5cGUsIElEVHlwZT46Okl0ZXJhdG9yIFJlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBl
Pjo6ZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIHN0YXRpY19jYXN0
PEdMdWludD4obUZsYXRSZXNvdXJjZXNTaXplKSwgbUhhc2hlZFJlc291cmNlcy5lbmQoKSk7Cisg
ICAgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1GbGF0UmVzb3Vy
Y2VzU2l6ZSksIG1IYXNoZWRSZXNvdXJjZXMuZW5kKCksIHRydWUpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUmVzb3VyY2VUeXBlLCB0eXBlbmFtZSBJRFR5cGU+Cit0eXBlbmFtZSBSZXNvdXJj
ZU1hcDxSZXNvdXJjZVR5cGUsIElEVHlwZT46Okl0ZXJhdG9yCitSZXNvdXJjZU1hcDxSZXNvdXJj
ZVR5cGUsIElEVHlwZT46OmJlZ2luV2l0aE51bGwoKSBjb25zdAoreworICAgIHJldHVybiBJdGVy
YXRvcigqdGhpcywgbmV4dFJlc291cmNlKDAsIGZhbHNlKSwgbUhhc2hlZFJlc291cmNlcy5iZWdp
bigpLCBmYWxzZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVu
YW1lIElEVHlwZT4KK3R5cGVuYW1lIFJlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBlPjo6
SXRlcmF0b3IKK1Jlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBlPjo6ZW5kV2l0aE51bGwo
KSBjb25zdAoreworICAgIHJldHVybiBJdGVyYXRvcigqdGhpcywgc3RhdGljX2Nhc3Q8R0x1aW50
PihtRmxhdFJlc291cmNlc1NpemUpLCBtSGFzaGVkUmVzb3VyY2VzLmVuZCgpLCBmYWxzZSk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1lIElEVHlwZT4KQEAg
LTIzNCwxMSArMjUzLDEyIEBAIHZvaWQgUmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlLCBJRFR5cGU+
OjpjbGVhcigpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1l
IElEVHlwZT4KLUdMdWludCBSZXNvdXJjZU1hcDxSZXNvdXJjZVR5cGUsIElEVHlwZT46Om5leHRO
b25OdWxsUmVzb3VyY2Uoc2l6ZV90IGZsYXRJbmRleCkgY29uc3QKK0dMdWludCBSZXNvdXJjZU1h
cDxSZXNvdXJjZVR5cGUsIElEVHlwZT46Om5leHRSZXNvdXJjZShzaXplX3QgZmxhdEluZGV4LCBi
b29sIHNraXBOdWxscykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IGZsYXRJbmRl
eDsgaW5kZXggPCBtRmxhdFJlc291cmNlc1NpemU7IGluZGV4KyspCiAgICAgewotICAgICAgICBp
ZiAobUZsYXRSZXNvdXJjZXNbaW5kZXhdICE9IG51bGxwdHIgJiYgbUZsYXRSZXNvdXJjZXNbaW5k
ZXhdICE9IEludmFsaWRQb2ludGVyKCkpCisgICAgICAgIGlmICgobUZsYXRSZXNvdXJjZXNbaW5k
ZXhdICE9IG51bGxwdHIgfHwgIXNraXBOdWxscykgJiYKKyAgICAgICAgICAgIG1GbGF0UmVzb3Vy
Y2VzW2luZGV4XSAhPSBJbnZhbGlkUG9pbnRlcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCk7CiAgICAgICAgIH0KQEAgLTI1Nyw4ICsy
NzcsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzb3VyY2VUeXBlLCB0eXBlbmFtZSBJRFR5cGU+
CiBSZXNvdXJjZU1hcDxSZXNvdXJjZVR5cGUsIElEVHlwZT46Okl0ZXJhdG9yOjpJdGVyYXRvcigK
ICAgICBjb25zdCBSZXNvdXJjZU1hcCAmb3JpZ2luLAogICAgIEdMdWludCBmbGF0SW5kZXgsCi0g
ICAgdHlwZW5hbWUgUmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlLCBJRFR5cGU+OjpIYXNoTWFwOjpj
b25zdF9pdGVyYXRvciBoYXNoSW5kZXgpCi0gICAgOiBtT3JpZ2luKG9yaWdpbiksIG1GbGF0SW5k
ZXgoZmxhdEluZGV4KSwgbUhhc2hJbmRleChoYXNoSW5kZXgpCisgICAgdHlwZW5hbWUgUmVzb3Vy
Y2VNYXA8UmVzb3VyY2VUeXBlLCBJRFR5cGU+OjpIYXNoTWFwOjpjb25zdF9pdGVyYXRvciBoYXNo
SW5kZXgsCisgICAgYm9vbCBza2lwTnVsbHMpCisgICAgOiBtT3JpZ2luKG9yaWdpbiksIG1GbGF0
SW5kZXgoZmxhdEluZGV4KSwgbUhhc2hJbmRleChoYXNoSW5kZXgpLCBtU2tpcE51bGxzKHNraXBO
dWxscykKIHsKICAgICB1cGRhdGVWYWx1ZSgpOwogfQpAQCAtMjgxLDcgKzMwMiw3IEBAIG9wZXJh
dG9yKysoKQogewogICAgIGlmIChtRmxhdEluZGV4IDwgc3RhdGljX2Nhc3Q8R0x1aW50PihtT3Jp
Z2luLm1GbGF0UmVzb3VyY2VzU2l6ZSkpCiAgICAgewotICAgICAgICBtRmxhdEluZGV4ID0gbU9y
aWdpbi5uZXh0Tm9uTnVsbFJlc291cmNlKG1GbGF0SW5kZXggKyAxKTsKKyAgICAgICAgbUZsYXRJ
bmRleCA9IG1PcmlnaW4ubmV4dFJlc291cmNlKG1GbGF0SW5kZXggKyAxLCBtU2tpcE51bGxzKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9TZW1hcGhvcmUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1NlbWFwaG9yZS5jcHAKaW5kZXggZGY2MmUyMzFjZDRhOWRkN2IyZjM1ZTE5
OTJhMTU2YjM0NGJkM2M4My4uNDU2MjE2NTNlMzIxZDFlYjAwMTJjOGFhMjQ5MTkwYTY5MjQ4OGI5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NlbWFw
aG9yZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NlbWFw
aG9yZS5jcHAKQEAgLTMwLDYgKzMwLDExIEBAIGFuZ2xlOjpSZXN1bHQgU2VtYXBob3JlOjppbXBv
cnRGZChDb250ZXh0ICpjb250ZXh0LCBIYW5kbGVUeXBlIGhhbmRsZVR5cGUsIEdMaW50CiAgICAg
cmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+aW1wb3J0RmQoY29udGV4dCwgaGFuZGxlVHlwZSwgZmQp
OwogfQogCithbmdsZTo6UmVzdWx0IFNlbWFwaG9yZTo6aW1wb3J0WmlyY29uSGFuZGxlKENvbnRl
eHQgKmNvbnRleHQsIEhhbmRsZVR5cGUgaGFuZGxlVHlwZSwgR0x1aW50IGhhbmRsZSkKK3sKKyAg
ICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5pbXBvcnRaaXJjb25IYW5kbGUoY29udGV4dCwgaGFu
ZGxlVHlwZSwgaGFuZGxlKTsKK30KKwogYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmU6OndhaXQoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1ZmZl
ckJhcnJpZXJWZWN0b3IgJmJ1ZmZlckJhcnJpZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGV4dHVyZUJhcnJpZXJWZWN0b3IgJnRleHR1cmVCYXJyaWVycykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TZW1hcGhvcmUuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TZW1hcGhvcmUuaAppbmRleCA2
MjIzMGEzYjgzOGE1NGUwYjBmYTU1MTg5NTk2ZGMwZDYzZTNmMGM0Li4wMmJkYWJlZGNhOTRkNGUz
MTM1OGVmZGIwNjBmODNkZmI5NzhjMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvU2VtYXBob3JlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1NlbWFwaG9yZS5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFNlbWFw
aG9yZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9iamVjdDxTZW1hcGhvcmVJRD4KICAgICByeDo6
U2VtYXBob3JlSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVt
ZW50YXRpb24uZ2V0KCk7IH0KIAogICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0RmQoQ29udGV4dCAq
Y29udGV4dCwgSGFuZGxlVHlwZSBoYW5kbGVUeXBlLCBHTGludCBmZCk7CisgICAgYW5nbGU6OlJl
c3VsdCBpbXBvcnRaaXJjb25IYW5kbGUoQ29udGV4dCAqY29udGV4dCwgSGFuZGxlVHlwZSBoYW5k
bGVUeXBlLCBHTHVpbnQgaGFuZGxlKTsKIAogICAgIGFuZ2xlOjpSZXN1bHQgd2FpdChDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWZmZXJCYXJyaWVyVmVj
dG9yICZidWZmZXJCYXJyaWVycywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvU3RhdGUuY3BwCmluZGV4IGZhMWJkMmYxNjViZDNmYzg5NmVmNmM5YzY1ZTJmMjZhN2Jk
ZDFmZDkuLjEwYWI1ZmMxNzg3ZDRiZjcwM2FiNzI0MTg4ZTJkYmIwZDZjMDVhNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcApAQCAtMjU2LDYg
KzI1Niw1NiBAQCBjb25zdCBhbmdsZTo6UGFja2VkRW51bU1hcDxCdWZmZXJCaW5kaW5nLCBTdGF0
ZTo6QnVmZmVyQmluZGluZ1NldHRlcj4gU3RhdGU6OmtCdQogICAgIEdldEJ1ZmZlckJpbmRpbmdT
ZXR0ZXI8QnVmZmVyQmluZGluZzo6VW5pZm9ybT4oKSwKIH19OwogCitBY3RpdmVUZXh0dXJlc0Nh
Y2hlOjpBY3RpdmVUZXh0dXJlc0NhY2hlKCkgOiBtVGV4dHVyZXN7fSB7fQorCitBY3RpdmVUZXh0
dXJlc0NhY2hlOjp+QWN0aXZlVGV4dHVyZXNDYWNoZSgpCit7CisgICAgQVNTRVJUKGVtcHR5KCkp
OworfQorCit2b2lkIEFjdGl2ZVRleHR1cmVzQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBmb3IgKHNp
emVfdCB0ZXh0dXJlSW5kZXggPSAwOyB0ZXh0dXJlSW5kZXggPCBtVGV4dHVyZXMuc2l6ZSgpOyAr
K3RleHR1cmVJbmRleCkKKyAgICB7CisgICAgICAgIHJlc2V0KHRleHR1cmVJbmRleCk7CisgICAg
fQorfQorCitib29sIEFjdGl2ZVRleHR1cmVzQ2FjaGU6OmVtcHR5KCkgY29uc3QKK3sKKyAgICBm
b3IgKFRleHR1cmUgKnRleHR1cmUgOiBtVGV4dHVyZXMpCisgICAgeworICAgICAgICBpZiAodGV4
dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0FOR0xFX0lOTElORSB2b2lkIEFjdGl2ZVRl
eHR1cmVzQ2FjaGU6OnJlc2V0KHNpemVfdCB0ZXh0dXJlSW5kZXgpCit7CisgICAgaWYgKG1UZXh0
dXJlc1t0ZXh0dXJlSW5kZXhdKQorICAgIHsKKyAgICAgICAgbVRleHR1cmVzW3RleHR1cmVJbmRl
eF0tPm9uVW5iaW5kQXNTYW1wbGVyVGV4dHVyZSgpOworICAgICAgICBtVGV4dHVyZXNbdGV4dHVy
ZUluZGV4XSA9IG51bGxwdHI7CisgICAgfQorfQorCitBTkdMRV9JTkxJTkUgdm9pZCBBY3RpdmVU
ZXh0dXJlc0NhY2hlOjpzZXQoc2l6ZV90IHRleHR1cmVJbmRleCwgVGV4dHVyZSAqdGV4dHVyZSkK
K3sKKyAgICAvLyBXZSBkb24ndCBjYWxsIHJlc2V0KCkgaGVyZSB0byBhdm9pZCBzZXR0aW5nIG51
bGxwdHIgYmVmb3JlIHJlYmluZC4KKyAgICBpZiAobVRleHR1cmVzW3RleHR1cmVJbmRleF0pCisg
ICAgeworICAgICAgICBtVGV4dHVyZXNbdGV4dHVyZUluZGV4XS0+b25VbmJpbmRBc1NhbXBsZXJU
ZXh0dXJlKCk7CisgICAgfQorCisgICAgQVNTRVJUKHRleHR1cmUpOworICAgIHRleHR1cmUtPm9u
QmluZEFzU2FtcGxlclRleHR1cmUoKTsKKyAgICBtVGV4dHVyZXNbdGV4dHVyZUluZGV4XSA9IHRl
eHR1cmU7Cit9CisKIFN0YXRlOjpTdGF0ZShDb250ZXh0SUQgY29udGV4dEluLAogICAgICAgICAg
ICAgIGNvbnN0IFN0YXRlICpzaGFyZUNvbnRleHRTdGF0ZSwKICAgICAgICAgICAgICBUZXh0dXJl
TWFuYWdlciAqc2hhcmVUZXh0dXJlcywKQEAgLTI4NCw3ICszMzQsNiBAQCBTdGF0ZTo6U3RhdGUo
Q29udGV4dElEIGNvbnRleHRJbiwKICAgICAgIG1TYW1wbGVyTWFuYWdlcigKICAgICAgICAgICBB
bGxvY2F0ZU9yR2V0U2hhcmVkUmVzb3VyY2VNYW5hZ2VyKHNoYXJlQ29udGV4dFN0YXRlLCAmU3Rh
dGU6Om1TYW1wbGVyTWFuYWdlcikpLAogICAgICAgbVN5bmNNYW5hZ2VyKEFsbG9jYXRlT3JHZXRT
aGFyZWRSZXNvdXJjZU1hbmFnZXIoc2hhcmVDb250ZXh0U3RhdGUsICZTdGF0ZTo6bVN5bmNNYW5h
Z2VyKSksCi0gICAgICBtUGF0aE1hbmFnZXIoQWxsb2NhdGVPckdldFNoYXJlZFJlc291cmNlTWFu
YWdlcihzaGFyZUNvbnRleHRTdGF0ZSwgJlN0YXRlOjptUGF0aE1hbmFnZXIpKSwKICAgICAgIG1G
cmFtZWJ1ZmZlck1hbmFnZXIobmV3IEZyYW1lYnVmZmVyTWFuYWdlcigpKSwKICAgICAgIG1Qcm9n
cmFtUGlwZWxpbmVNYW5hZ2VyKG5ldyBQcm9ncmFtUGlwZWxpbmVNYW5hZ2VyKCkpLAogICAgICAg
bU1lbW9yeU9iamVjdE1hbmFnZXIoCkBAIC0yOTYsNiArMzQ1LDcgQEAgU3RhdGU6OlN0YXRlKENv
bnRleHRJRCBjb250ZXh0SW4sCiAgICAgICBtRGVwdGhDbGVhclZhbHVlKDApLAogICAgICAgbVN0
ZW5jaWxDbGVhclZhbHVlKDApLAogICAgICAgbVNjaXNzb3JUZXN0KGZhbHNlKSwKKyAgICAgIG1T
YW1wbGVBbHBoYVRvQ292ZXJhZ2UoZmFsc2UpLAogICAgICAgbVNhbXBsZUNvdmVyYWdlKGZhbHNl
KSwKICAgICAgIG1TYW1wbGVDb3ZlcmFnZVZhbHVlKDApLAogICAgICAgbVNhbXBsZUNvdmVyYWdl
SW52ZXJ0KGZhbHNlKSwKQEAgLTMxMywxMCArMzYzLDEwIEBAIFN0YXRlOjpTdGF0ZShDb250ZXh0
SUQgY29udGV4dEluLAogICAgICAgbVJlYWRGcmFtZWJ1ZmZlcihudWxscHRyKSwKICAgICAgIG1E
cmF3RnJhbWVidWZmZXIobnVsbHB0ciksCiAgICAgICBtUHJvZ3JhbShudWxscHRyKSwKKyAgICAg
IG1FeGVjdXRhYmxlKG51bGxwdHIpLAogICAgICAgbVByb3Zva2luZ1ZlcnRleChnbDo6UHJvdm9r
aW5nVmVydGV4Q29udmVudGlvbjo6TGFzdFZlcnRleENvbnZlbnRpb24pLAogICAgICAgbVZlcnRl
eEFycmF5KG51bGxwdHIpLAogICAgICAgbUFjdGl2ZVNhbXBsZXIoMCksCi0gICAgICBtQWN0aXZl
VGV4dHVyZXNDYWNoZXt9LAogICAgICAgbVRleHR1cmVzSW5jb21wYXRpYmxlV2l0aFNhbXBsZXJz
KDApLAogICAgICAgbVByaW1pdGl2ZVJlc3RhcnQoZmFsc2UpLAogICAgICAgbURlYnVnKGRlYnVn
KSwKQEAgLTMyNyw3ICszNzcsOCBAQCBTdGF0ZTo6U3RhdGUoQ29udGV4dElEIGNvbnRleHRJbiwK
ICAgICAgIG1Qcm9ncmFtQmluYXJ5Q2FjaGVFbmFibGVkKHByb2dyYW1CaW5hcnlDYWNoZUVuYWJs
ZWQpLAogICAgICAgbVRleHR1cmVSZWN0YW5nbGVFbmFibGVkKHRydWUpLAogICAgICAgbU1heFNo
YWRlckNvbXBpbGVyVGhyZWFkcyhzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpKSwK
LSAgICAgIG1PdmVybGF5KG92ZXJsYXkpCisgICAgICBtT3ZlcmxheShvdmVybGF5KSwKKyAgICAg
IG1Ob1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYyhmYWxzZSkKIHt9
CiAKIFN0YXRlOjp+U3RhdGUoKSB7fQpAQCAtNDQxLDcgKzQ5Miw4IEBAIHZvaWQgU3RhdGU6Omlu
aXRpYWxpemUoQ29udGV4dCAqY29udGV4dCkKICAgICAgICAgbUFjdGl2ZVF1ZXJpZXNbdHlwZV0u
c2V0KGNvbnRleHQsIG51bGxwdHIpOwogICAgIH0KIAotICAgIG1Qcm9ncmFtID0gbnVsbHB0cjsK
KyAgICBtUHJvZ3JhbSAgICA9IG51bGxwdHI7CisgICAgbUV4ZWN1dGFibGUgPSBudWxscHRyOwog
CiAgICAgbVJlYWRGcmFtZWJ1ZmZlciA9IG51bGxwdHI7CiAgICAgbURyYXdGcmFtZWJ1ZmZlciA9
IG51bGxwdHI7CkBAIC00NTUsMTEgKzUwNyw5IEBAIHZvaWQgU3RhdGU6OmluaXRpYWxpemUoQ29u
dGV4dCAqY29udGV4dCkKIAogICAgIG1Db3ZlcmFnZU1vZHVsYXRpb24gPSBHTF9OT05FOwogCi0g
ICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0aE1hdHJpeFByb2op
OwotICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNldFRvSWRlbnRpdHkobVBhdGhNYXRyaXhN
Vik7Ci0gICAgbVBhdGhTdGVuY2lsRnVuYyA9IEdMX0FMV0FZUzsKLSAgICBtUGF0aFN0ZW5jaWxS
ZWYgID0gMDsKLSAgICBtUGF0aFN0ZW5jaWxNYXNrID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVp
bnQ+OjptYXgoKTsKKyAgICBtTm9TaW11bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVu
ZEZ1bmMgPQorICAgICAgICBjb250ZXh0LT5nZXRMaW1pdGF0aW9ucygpLm5vU2ltdWx0YW5lb3Vz
Q29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jIHx8CisgICAgICAgIGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHk7CiAKICAgICAvLyBHTEVTMSBlbXVsYXRpb246
IEluaXRpYWxpemUgc3RhdGUgZm9yIEdMRVMxIGlmIHZlcnNpb24gYXBwbGllcwogICAgIC8vIFRP
RE8oaHR0cDovL2FuZ2xlYnVnLmNvbS8zNzQ1KTogV2hlbiBvbiBkZXNrdG9wIGNsaWVudCBvbmx5
IGRvIHRoaXMgaW4gY29tcGF0aWJpbGl0eSBwcm9maWxlCkBAIC01MDQsOCArNTU0LDggQEAgdm9p
ZCBTdGF0ZTo6cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKICAgICB7CiAgICAgICAgIG1Q
cm9ncmFtLT5yZWxlYXNlKGNvbnRleHQpOwogICAgIH0KLSAgICBtUHJvZ3JhbSA9IG51bGxwdHI7
Ci0KKyAgICBtUHJvZ3JhbSAgICA9IG51bGxwdHI7CisgICAgbUV4ZWN1dGFibGUgPSBudWxscHRy
OwogICAgIG1Qcm9ncmFtUGlwZWxpbmUuc2V0KGNvbnRleHQsIG51bGxwdHIpOwogCiAgICAgaWYg
KG1UcmFuc2Zvcm1GZWVkYmFjay5nZXQoKSkKQEAgLTUzMiwxMSArNTgyLDcgQEAgdm9pZCBTdGF0
ZTo6cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKICAgICAgICAgVXBkYXRlSW5kZXhlZEJ1
ZmZlckJpbmRpbmcoY29udGV4dCwgJmJ1ZiwgbnVsbHB0ciwgQnVmZmVyQmluZGluZzo6U2hhZGVy
U3RvcmFnZSwgMCwgMCk7CiAgICAgfQogCi0gICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0
VG9JZGVudGl0eShtUGF0aE1hdHJpeFByb2opOwotICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46
OnNldFRvSWRlbnRpdHkobVBhdGhNYXRyaXhNVik7Ci0gICAgbVBhdGhTdGVuY2lsRnVuYyA9IEdM
X0FMV0FZUzsKLSAgICBtUGF0aFN0ZW5jaWxSZWYgID0gMDsKLSAgICBtUGF0aFN0ZW5jaWxNYXNr
ID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKTsKKyAgICBtQWN0aXZlVGV4dHVy
ZXNDYWNoZS5jbGVhcigpOwogCiAgICAgc2V0QWxsRGlydHlCaXRzKCk7CiB9CkBAIC01NDQsOSAr
NTkwLDkgQEAgdm9pZCBTdGF0ZTo6cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIEFOR0xF
X0lOTElORSB2b2lkIFN0YXRlOjp1bnNldEFjdGl2ZVRleHR1cmVzKEFjdGl2ZVRleHR1cmVNYXNr
IHRleHR1cmVNYXNrKQogewogICAgIC8vIFVuc2V0IGFueSByZWxldmFudCBib3VuZCB0ZXh0dXJl
cy4KLSAgICBmb3IgKHNpemVfdCB0ZXh0dXJlSW5kZXggOiBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2Ft
cGxlcnNNYXNrKCkpCisgICAgZm9yIChzaXplX3QgdGV4dHVyZUluZGV4IDogbUV4ZWN1dGFibGUt
PmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpKQogICAgIHsKLSAgICAgICAgbUFjdGl2ZVRleHR1cmVz
Q2FjaGVbdGV4dHVyZUluZGV4XSA9IG51bGxwdHI7CisgICAgICAgIG1BY3RpdmVUZXh0dXJlc0Nh
Y2hlLnJlc2V0KHRleHR1cmVJbmRleCk7CiAgICAgICAgIG1Db21wbGV0ZVRleHR1cmVCaW5kaW5n
c1t0ZXh0dXJlSW5kZXhdLnJlc2V0KCk7CiAgICAgfQogfQpAQCAtNTU4LDExICs2MDQsMTEgQEAg
QU5HTEVfSU5MSU5FIHZvaWQgU3RhdGU6OnVwZGF0ZUFjdGl2ZVRleHR1cmVTdGF0ZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogewogICAgIGlmICghdGV4dHVyZS0+aXNTYW1wbGVyQ29tcGxldGUo
Y29udGV4dCwgc2FtcGxlcikpCiAgICAgewotICAgICAgICBtQWN0aXZlVGV4dHVyZXNDYWNoZVt0
ZXh0dXJlSW5kZXhdID0gbnVsbHB0cjsKKyAgICAgICAgbUFjdGl2ZVRleHR1cmVzQ2FjaGUucmVz
ZXQodGV4dHVyZUluZGV4KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbUFjdGl2
ZVRleHR1cmVzQ2FjaGVbdGV4dHVyZUluZGV4XSA9IHRleHR1cmU7CisgICAgICAgIG1BY3RpdmVU
ZXh0dXJlc0NhY2hlLnNldCh0ZXh0dXJlSW5kZXgsIHRleHR1cmUpOwogCiAgICAgICAgIGlmICh0
ZXh0dXJlLT5oYXNBbnlEaXJ0eUJpdCgpKQogICAgICAgICB7CkBAIC01ODEsOCArNjI3LDcgQEAg
QU5HTEVfSU5MSU5FIHZvaWQgU3RhdGU6OnVwZGF0ZUFjdGl2ZVRleHR1cmVTdGF0ZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgc2FtcGxlciA/IHNhbXBsZXItPmdldFNhbXBs
ZXJTdGF0ZSgpIDogdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCk7CiAgICAgICAgIG1UZXh0dXJl
c0luY29tcGF0aWJsZVdpdGhTYW1wbGVyc1t0ZXh0dXJlSW5kZXhdID0KICAgICAgICAgICAgICF0
ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5jb21wYXRpYmxlV2l0aFNhbXBsZXJGb3JtYXQoCi0g
ICAgICAgICAgICAgICAgbVByb2dyYW0tPmdldFN0YXRlKCkuZ2V0U2FtcGxlckZvcm1hdEZvclRl
eHR1cmVVbml0SW5kZXgodGV4dHVyZUluZGV4KSwKLSAgICAgICAgICAgICAgICBzYW1wbGVyU3Rh
dGUpOworICAgICAgICAgICAgICAgIG1FeGVjdXRhYmxlLT5nZXRTYW1wbGVyRm9ybWF0Rm9yVGV4
dHVyZVVuaXRJbmRleCh0ZXh0dXJlSW5kZXgpLCBzYW1wbGVyU3RhdGUpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewpAQCAtNjAyLDcgKzY0Nyw3IEBAIEFOR0xFX0lOTElORSB2b2lkIFN0YXRlOjp1
cGRhdGVBY3RpdmVUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAoIXRl
eHR1cmUpCiAgICAgewotICAgICAgICBtQWN0aXZlVGV4dHVyZXNDYWNoZVt0ZXh0dXJlSW5kZXhd
ID0gbnVsbHB0cjsKKyAgICAgICAgbUFjdGl2ZVRleHR1cmVzQ2FjaGUucmVzZXQodGV4dHVyZUlu
ZGV4KTsKICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1RFWFRVUkVfQklORElOR1Mp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjEwLDYgKzY1NSwxOCBAQCBBTkdMRV9JTkxJ
TkUgdm9pZCBTdGF0ZTo6dXBkYXRlQWN0aXZlVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgIHVwZGF0ZUFjdGl2ZVRleHR1cmVTdGF0ZShjb250ZXh0LCB0ZXh0dXJlSW5kZXgsIHNh
bXBsZXIsIHRleHR1cmUpOwogfQogCitBTkdMRV9JTkxJTkUgYm9vbCBTdGF0ZTo6aGFzQ29uc3Rh
bnRDb2xvcihHTGVudW0gc291cmNlUkdCLCBHTGVudW0gZGVzdFJHQikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc291cmNlUkdCID09IEdMX0NPTlNUQU5UX0NPTE9SIHx8IHNvdXJjZVJHQiA9PSBHTF9P
TkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgfHwKKyAgICAgICAgICAgZGVzdFJHQiA9PSBHTF9DT05T
VEFOVF9DT0xPUiB8fCBkZXN0UkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjsKK30K
KworQU5HTEVfSU5MSU5FIGJvb2wgU3RhdGU6Omhhc0NvbnN0YW50QWxwaGEoR0xlbnVtIHNvdXJj
ZVJHQiwgR0xlbnVtIGRlc3RSR0IpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNvdXJjZVJHQiA9PSBH
TF9DT05TVEFOVF9BTFBIQSB8fCBzb3VyY2VSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FM
UEhBIHx8CisgICAgICAgICAgIGRlc3RSR0IgPT0gR0xfQ09OU1RBTlRfQUxQSEEgfHwgZGVzdFJH
QiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE7Cit9CisKIGNvbnN0IFJhc3Rlcml6ZXJT
dGF0ZSAmU3RhdGU6OmdldFJhc3Rlcml6ZXJTdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1S
YXN0ZXJpemVyOwpAQCAtNjQzLDEzICs3MDAsNTQgQEAgdm9pZCBTdGF0ZTo6c2V0U3RlbmNpbENs
ZWFyVmFsdWUoaW50IHN0ZW5jaWwpCiAKIHZvaWQgU3RhdGU6OnNldENvbG9yTWFzayhib29sIHJl
ZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQogewotICAgIG1CbGVuZC5jb2xv
ck1hc2tSZWQgICA9IHJlZDsKLSAgICBtQmxlbmQuY29sb3JNYXNrR3JlZW4gPSBncmVlbjsKLSAg
ICBtQmxlbmQuY29sb3JNYXNrQmx1ZSAgPSBibHVlOwotICAgIG1CbGVuZC5jb2xvck1hc2tBbHBo
YSA9IGFscGhhOworICAgIGZvciAoQmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA6IG1CbGVuZFN0YXRl
QXJyYXkpCisgICAgeworICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza1JlZCAgID0gcmVkOwor
ICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuID0gZ3JlZW47CisgICAgICAgIGJsZW5k
U3RhdGUuY29sb3JNYXNrQmx1ZSAgPSBibHVlOworICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFz
a0FscGhhID0gYWxwaGE7CisgICAgfQogICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xP
Ul9NQVNLKTsKIH0KIAordm9pZCBTdGF0ZTo6c2V0Q29sb3JNYXNrSW5kZXhlZChib29sIHJlZCwg
Ym9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhLCBHTHVpbnQgaW5kZXgpCit7CisgICAg
QVNTRVJUKGluZGV4IDwgbUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgIG1CbGVuZFN0YXRl
QXJyYXlbaW5kZXhdLmNvbG9yTWFza1JlZCAgID0gcmVkOworICAgIG1CbGVuZFN0YXRlQXJyYXlb
aW5kZXhdLmNvbG9yTWFza0dyZWVuID0gZ3JlZW47CisgICAgbUJsZW5kU3RhdGVBcnJheVtpbmRl
eF0uY29sb3JNYXNrQmx1ZSAgPSBibHVlOworICAgIG1CbGVuZFN0YXRlQXJyYXlbaW5kZXhdLmNv
bG9yTWFza0FscGhhID0gYWxwaGE7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9S
X01BU0spOworfQorCitib29sIFN0YXRlOjphbGxBY3RpdmVEcmF3QnVmZmVyQ2hhbm5lbHNNYXNr
ZWQoKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGRyYXdCdWZmZXJJbmRleCA6IG1EcmF3RnJh
bWVidWZmZXItPmdldERyYXdCdWZmZXJNYXNrKCkpCisgICAgeworICAgICAgICBjb25zdCBCbGVu
ZFN0YXRlICZibGVuZFN0YXRlID0gbUJsZW5kU3RhdGVBcnJheVtkcmF3QnVmZmVySW5kZXhdOwor
ICAgICAgICBpZiAoYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQgfHwgYmxlbmRTdGF0ZS5jb2xvck1h
c2tHcmVlbiB8fCBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgfHwKKyAgICAgICAgICAgIGJsZW5k
U3RhdGUuY29sb3JNYXNrQWxwaGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTdGF0ZTo6
YW55QWN0aXZlRHJhd0J1ZmZlckNoYW5uZWxNYXNrZWQoKSBjb25zdAoreworICAgIGZvciAoc2l6
ZV90IGRyYXdCdWZmZXJJbmRleCA6IG1EcmF3RnJhbWVidWZmZXItPmdldERyYXdCdWZmZXJNYXNr
KCkpCisgICAgeworICAgICAgICBjb25zdCBCbGVuZFN0YXRlICZibGVuZFN0YXRlID0gbUJsZW5k
U3RhdGVBcnJheVtkcmF3QnVmZmVySW5kZXhdOworICAgICAgICBpZiAoIShibGVuZFN0YXRlLmNv
bG9yTWFza1JlZCAmJiBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuICYmIGJsZW5kU3RhdGUuY29s
b3JNYXNrQmx1ZSAmJgorICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhKSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFN0YXRlOjpzZXREZXB0aE1hc2soYm9vbCBtYXNr
KQogewogICAgIGlmIChtRGVwdGhTdGVuY2lsLmRlcHRoTWFzayAhPSBtYXNrKQpAQCAtNzEzLDIx
ICs4MTEsOTEgQEAgdm9pZCBTdGF0ZTo6c2V0RGVwdGhSYW5nZShmbG9hdCB6TmVhciwgZmxvYXQg
ekZhcikKIAogdm9pZCBTdGF0ZTo6c2V0QmxlbmQoYm9vbCBlbmFibGVkKQogewotICAgIG1CbGVu
ZC5ibGVuZCA9IGVuYWJsZWQ7CisgICAgZm9yIChCbGVuZFN0YXRlICZibGVuZFN0YXRlIDogbUJs
ZW5kU3RhdGVBcnJheSkKKyAgICB7CisgICAgICAgIGJsZW5kU3RhdGUuYmxlbmQgPSBlbmFibGVk
OworICAgIH0KKyAgICBlbmFibGVkID8gbUJsZW5kRW5hYmxlZERyYXdCdWZmZXJzLnNldCgpIDog
bUJsZW5kRW5hYmxlZERyYXdCdWZmZXJzLnJlc2V0KCk7CisgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX0JMRU5EX0VOQUJMRUQpOworfQorCit2b2lkIFN0YXRlOjpzZXRCbGVuZEluZGV4ZWQo
Ym9vbCBlbmFibGVkLCBHTHVpbnQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4IDwgbUJsZW5k
U3RhdGVBcnJheS5zaXplKCkpOworICAgIG1CbGVuZFN0YXRlQXJyYXlbaW5kZXhdLmJsZW5kID0g
ZW5hYmxlZDsKKyAgICBtQmxlbmRFbmFibGVkRHJhd0J1ZmZlcnMuc2V0KGluZGV4LCBlbmFibGVk
KTsKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfRU5BQkxFRCk7CiB9CiAKIHZv
aWQgU3RhdGU6OnNldEJsZW5kRmFjdG9ycyhHTGVudW0gc291cmNlUkdCLCBHTGVudW0gZGVzdFJH
QiwgR0xlbnVtIHNvdXJjZUFscGhhLCBHTGVudW0gZGVzdEFscGhhKQogewotICAgIG1CbGVuZC5z
b3VyY2VCbGVuZFJHQiAgID0gc291cmNlUkdCOwotICAgIG1CbGVuZC5kZXN0QmxlbmRSR0IgICAg
ID0gZGVzdFJHQjsKLSAgICBtQmxlbmQuc291cmNlQmxlbmRBbHBoYSA9IHNvdXJjZUFscGhhOwot
ICAgIG1CbGVuZC5kZXN0QmxlbmRBbHBoYSAgID0gZGVzdEFscGhhOworICAgIGZvciAoQmxlbmRT
dGF0ZSAmYmxlbmRTdGF0ZSA6IG1CbGVuZFN0YXRlQXJyYXkpCisgICAgeworICAgICAgICBibGVu
ZFN0YXRlLnNvdXJjZUJsZW5kUkdCICAgPSBzb3VyY2VSR0I7CisgICAgICAgIGJsZW5kU3RhdGUu
ZGVzdEJsZW5kUkdCICAgICA9IGRlc3RSR0I7CisgICAgICAgIGJsZW5kU3RhdGUuc291cmNlQmxl
bmRBbHBoYSA9IHNvdXJjZUFscGhhOworICAgICAgICBibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhh
ICAgPSBkZXN0QWxwaGE7CisgICAgfQorCisgICAgaWYgKG1Ob1NpbXVsdGFuZW91c0NvbnN0YW50
Q29sb3JBbmRBbHBoYUJsZW5kRnVuYykKKyAgICB7CisgICAgICAgIGlmIChoYXNDb25zdGFudENv
bG9yKHNvdXJjZVJHQiwgZGVzdFJHQikpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1CbGVuZEZ1
bmNDb25zdGFudENvbG9yRHJhd0J1ZmZlcnMuc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBtQmxlbmRGdW5jQ29uc3RhbnRDb2xvckRyYXdCdWZm
ZXJzLnJlc2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzQ29uc3RhbnRBbHBoYShz
b3VyY2VSR0IsIGRlc3RSR0IpKQorICAgICAgICB7CisgICAgICAgICAgICBtQmxlbmRGdW5jQ29u
c3RhbnRBbHBoYURyYXdCdWZmZXJzLnNldCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgbUJsZW5kRnVuY0NvbnN0YW50QWxwaGFEcmF3QnVmZmVycy5y
ZXNldCgpOworICAgICAgICB9CisgICAgfQorICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9C
TEVORF9GVU5DUyk7Cit9CisKK3ZvaWQgU3RhdGU6OnNldEJsZW5kRmFjdG9yc0luZGV4ZWQoR0xl
bnVtIHNvdXJjZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3Vy
Y2VBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RB
bHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4KQor
eworICAgIEFTU0VSVChpbmRleCA8IG1CbGVuZFN0YXRlQXJyYXkuc2l6ZSgpKTsKKyAgICBtQmxl
bmRTdGF0ZUFycmF5W2luZGV4XS5zb3VyY2VCbGVuZFJHQiAgID0gc291cmNlUkdCOworICAgIG1C
bGVuZFN0YXRlQXJyYXlbaW5kZXhdLmRlc3RCbGVuZFJHQiAgICAgPSBkZXN0UkdCOworICAgIG1C
bGVuZFN0YXRlQXJyYXlbaW5kZXhdLnNvdXJjZUJsZW5kQWxwaGEgPSBzb3VyY2VBbHBoYTsKKyAg
ICBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5kZXN0QmxlbmRBbHBoYSAgID0gZGVzdEFscGhhOwor
CisgICAgaWYgKG1Ob1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYykK
KyAgICB7CisgICAgICAgIG1CbGVuZEZ1bmNDb25zdGFudENvbG9yRHJhd0J1ZmZlcnMuc2V0KGlu
ZGV4LCBoYXNDb25zdGFudENvbG9yKHNvdXJjZVJHQiwgZGVzdFJHQikpOworICAgICAgICBtQmxl
bmRGdW5jQ29uc3RhbnRBbHBoYURyYXdCdWZmZXJzLnNldChpbmRleCwgaGFzQ29uc3RhbnRBbHBo
YShzb3VyY2VSR0IsIGRlc3RSR0IpKTsKKyAgICB9CiAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlf
QklUX0JMRU5EX0ZVTkNTKTsKIH0KIAogdm9pZCBTdGF0ZTo6c2V0QmxlbmRDb2xvcihmbG9hdCBy
ZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKIHsKKyAgICAvLyBJbiBF
UzIgd2l0aG91dCByZW5kZXItdG8tZmxvYXQgZXh0ZW5zaW9ucywgQmxlbmRDb2xvciBjbGFtcHMg
dG8gWzAsMV0gb24gc3RvcmUuCisgICAgLy8gT24gRVMzKywgb3Igd2l0aCByZW5kZXItdG8tZmxv
YXQgZXh0cyBlbmFibGVkLCBpdCBkb2VzIG5vdCBjbGFtcCBvbiBzdG9yZS4KKyAgICBjb25zdCBi
b29sIGlzRVMyID0gbUNsaWVudFZlcnNpb24ubWFqb3IgPT0gMjsKKyAgICBjb25zdCBib29sIGhh
c0Zsb2F0QmxlbmRpbmcgPQorICAgICAgICBtRXh0ZW5zaW9ucy5jb2xvckJ1ZmZlckZsb2F0IHx8
IG1FeHRlbnNpb25zLmNvbG9yQnVmZmVySGFsZkZsb2F0IHx8CisgICAgICAgIG1FeHRlbnNpb25z
LmNvbG9yQnVmZmVyRmxvYXRSR0IgfHwgbUV4dGVuc2lvbnMuY29sb3JCdWZmZXJGbG9hdFJHQkE7
CisgICAgaWYgKGlzRVMyICYmICFoYXNGbG9hdEJsZW5kaW5nKQorICAgIHsKKyAgICAgICAgcmVk
ICAgPSBjbGFtcDAxKHJlZCk7CisgICAgICAgIGdyZWVuID0gY2xhbXAwMShncmVlbik7CisgICAg
ICAgIGJsdWUgID0gY2xhbXAwMShibHVlKTsKKyAgICAgICAgYWxwaGEgPSBjbGFtcDAxKGFscGhh
KTsKKyAgICB9CisKICAgICBtQmxlbmRDb2xvci5yZWQgICA9IHJlZDsKICAgICBtQmxlbmRDb2xv
ci5ncmVlbiA9IGdyZWVuOwogICAgIG1CbGVuZENvbG9yLmJsdWUgID0gYmx1ZTsKQEAgLTczNyw4
ICs5MDUsMTkgQEAgdm9pZCBTdGF0ZTo6c2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdy
ZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKIAogdm9pZCBTdGF0ZTo6c2V0QmxlbmRFcXVh
dGlvbihHTGVudW0gcmdiRXF1YXRpb24sIEdMZW51bSBhbHBoYUVxdWF0aW9uKQogewotICAgIG1C
bGVuZC5ibGVuZEVxdWF0aW9uUkdCICAgPSByZ2JFcXVhdGlvbjsKLSAgICBtQmxlbmQuYmxlbmRF
cXVhdGlvbkFscGhhID0gYWxwaGFFcXVhdGlvbjsKKyAgICBmb3IgKEJsZW5kU3RhdGUgJmJsZW5k
U3RhdGUgOiBtQmxlbmRTdGF0ZUFycmF5KQorICAgIHsKKyAgICAgICAgYmxlbmRTdGF0ZS5ibGVu
ZEVxdWF0aW9uUkdCICAgPSByZ2JFcXVhdGlvbjsKKyAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZEVx
dWF0aW9uQWxwaGEgPSBhbHBoYUVxdWF0aW9uOworICAgIH0KKyAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfQkxFTkRfRVFVQVRJT05TKTsKK30KKwordm9pZCBTdGF0ZTo6c2V0QmxlbmRFcXVh
dGlvbkluZGV4ZWQoR0xlbnVtIHJnYkVxdWF0aW9uLCBHTGVudW0gYWxwaGFFcXVhdGlvbiwgR0x1
aW50IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IG1CbGVuZFN0YXRlQXJyYXkuc2l6ZSgp
KTsKKyAgICBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5ibGVuZEVxdWF0aW9uUkdCICAgPSByZ2JF
cXVhdGlvbjsKKyAgICBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5ibGVuZEVxdWF0aW9uQWxwaGEg
PSBhbHBoYUVxdWF0aW9uOwogICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9FUVVB
VElPTlMpOwogfQogCkBAIC04NDEsNyArMTAyMCw3IEBAIHZvaWQgU3RhdGU6OnNldFBvbHlnb25P
ZmZzZXRQYXJhbXMoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpCiAKIHZvaWQgU3RhdGU6
OnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShib29sIGVuYWJsZWQpCiB7Ci0gICAgbUJsZW5kLnNh
bXBsZUFscGhhVG9Db3ZlcmFnZSA9IGVuYWJsZWQ7CisgICAgbVNhbXBsZUFscGhhVG9Db3ZlcmFn
ZSA9IGVuYWJsZWQ7CiAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NBTVBMRV9BTFBIQV9U
T19DT1ZFUkFHRV9FTkFCTEVEKTsKIH0KIApAQCAtODg2LDIyICsxMDY1LDI5IEBAIHZvaWQgU3Rh
dGU6OnNldE11bHRpc2FtcGxpbmcoYm9vbCBlbmFibGVkKQogCiB2b2lkIFN0YXRlOjpzZXRTY2lz
c29yVGVzdChib29sIGVuYWJsZWQpCiB7Ci0gICAgbVNjaXNzb3JUZXN0ID0gZW5hYmxlZDsKLSAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0NJU1NPUl9URVNUX0VOQUJMRUQpOworICAgIGlm
IChtU2Npc3NvclRlc3QgIT0gZW5hYmxlZCkKKyAgICB7CisgICAgICAgIG1TY2lzc29yVGVzdCA9
IGVuYWJsZWQ7CisgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TQ0lTU09SX1RFU1Rf
RU5BQkxFRCk7CisgICAgfQogfQogCiB2b2lkIFN0YXRlOjpzZXRTY2lzc29yUGFyYW1zKEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogewotICAgIG1TY2lz
c29yLnggICAgICA9IHg7Ci0gICAgbVNjaXNzb3IueSAgICAgID0geTsKLSAgICBtU2Npc3Nvci53
aWR0aCAgPSB3aWR0aDsKLSAgICBtU2Npc3Nvci5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX1NDSVNTT1IpOworICAgIC8vIFNraXAgaWYgc2FtZSBzY2lzc29y
IGluZm8KKyAgICBpZiAobVNjaXNzb3IueCAhPSB4IHx8IG1TY2lzc29yLnkgIT0geSB8fCBtU2Np
c3Nvci53aWR0aCAhPSB3aWR0aCB8fCBtU2Npc3Nvci5oZWlnaHQgIT0gaGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbVNjaXNzb3IueCAgICAgID0geDsKKyAgICAgICAgbVNjaXNzb3IueSAgICAgID0g
eTsKKyAgICAgICAgbVNjaXNzb3Iud2lkdGggID0gd2lkdGg7CisgICAgICAgIG1TY2lzc29yLmhl
aWdodCA9IGhlaWdodDsKKyAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NDSVNTT1Ip
OworICAgIH0KIH0KIAogdm9pZCBTdGF0ZTo6c2V0RGl0aGVyKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBtQmxlbmQuZGl0aGVyID0gZW5hYmxlZDsKKyAgICBtUmFzdGVyaXplci5kaXRoZXIgPSBlbmFi
bGVkOwogICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ESVRIRVJfRU5BQkxFRCk7CiB9CiAK
QEAgLTEwMzAsNiArMTIxNiwxOCBAQCB2b2lkIFN0YXRlOjpzZXRFbmFibGVGZWF0dXJlKEdMZW51
bSBmZWF0dXJlLCBib29sIGVuYWJsZWQpCiAgICAgfQogfQogCit2b2lkIFN0YXRlOjpzZXRFbmFi
bGVGZWF0dXJlSW5kZXhlZChHTGVudW0gZmVhdHVyZSwgYm9vbCBlbmFibGVkLCBHTHVpbnQgaW5k
ZXgpCit7CisgICAgc3dpdGNoIChmZWF0dXJlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CTEVO
RDoKKyAgICAgICAgICAgIHNldEJsZW5kSW5kZXhlZChlbmFibGVkLCBpbmRleCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorfQorCiBib29sIFN0YXRlOjpnZXRFbmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJl
KSBjb25zdAogewogICAgIHN3aXRjaCAoZmVhdHVyZSkKQEAgLTExMzYsNiArMTMzNCwxOSBAQCBi
b29sIFN0YXRlOjpnZXRFbmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJlKSBjb25zdAogICAgIH0K
IH0KIAorYm9vbCBTdGF0ZTo6Z2V0RW5hYmxlRmVhdHVyZUluZGV4ZWQoR0xlbnVtIGZlYXR1cmUs
IEdMdWludCBpbmRleCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX0JMRU5EOgorICAgICAgICAgICAgcmV0dXJuIGlzQmxlbmRFbmFibGVkSW5k
ZXhlZChpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
fQorCiB2b2lkIFN0YXRlOjpzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkKIHsKICAgICBtTGlu
ZVdpZHRoID0gd2lkdGg7CkBAIC0xMTU5LDExICsxMzcwLDE2IEBAIHZvaWQgU3RhdGU6OnNldEZy
YWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQoR0xlbnVtIGhpbnQpCiAKIHZvaWQgU3RhdGU6OnNl
dFZpZXdwb3J0UGFyYW1zKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KQogewotICAgIG1WaWV3cG9ydC54ICAgICAgPSB4OwotICAgIG1WaWV3cG9ydC55ICAg
ICAgPSB5OwotICAgIG1WaWV3cG9ydC53aWR0aCAgPSB3aWR0aDsKLSAgICBtVmlld3BvcnQuaGVp
Z2h0ID0gaGVpZ2h0OwotICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9WSUVXUE9SVCk7Cisg
ICAgLy8gU2tpcCBpZiBzYW1lIHZpZXdwb3J0IGluZm8KKyAgICBpZiAobVZpZXdwb3J0LnggIT0g
eCB8fCBtVmlld3BvcnQueSAhPSB5IHx8IG1WaWV3cG9ydC53aWR0aCAhPSB3aWR0aCB8fAorICAg
ICAgICBtVmlld3BvcnQuaGVpZ2h0ICE9IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1WaWV3cG9y
dC54ICAgICAgPSB4OworICAgICAgICBtVmlld3BvcnQueSAgICAgID0geTsKKyAgICAgICAgbVZp
ZXdwb3J0LndpZHRoICA9IHdpZHRoOworICAgICAgICBtVmlld3BvcnQuaGVpZ2h0ID0gaGVpZ2h0
OworICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfVklFV1BPUlQpOworICAgIH0KIH0K
IAogdm9pZCBTdGF0ZTo6c2V0QWN0aXZlU2FtcGxlcih1bnNpZ25lZCBpbnQgYWN0aXZlKQpAQCAt
MTE3NSw4ICsxMzkxLDggQEAgdm9pZCBTdGF0ZTo6c2V0U2FtcGxlclRleHR1cmUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdHlwZSwgVGV4dHVyZQogewogICAgIG1TYW1wbGVy
VGV4dHVyZXNbdHlwZV1bbUFjdGl2ZVNhbXBsZXJdLnNldChjb250ZXh0LCB0ZXh0dXJlKTsKIAot
ICAgIGlmIChtUHJvZ3JhbSAmJiBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKClbbUFj
dGl2ZVNhbXBsZXJdICYmCi0gICAgICAgIElzVGV4dHVyZUNvbXBhdGlibGVXaXRoU2FtcGxlcih0
eXBlLCBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlclR5cGVzKClbbUFjdGl2ZVNhbXBsZXJdKSkK
KyAgICBpZiAobUV4ZWN1dGFibGUgJiYgbUV4ZWN1dGFibGUtPmdldEFjdGl2ZVNhbXBsZXJzTWFz
aygpW21BY3RpdmVTYW1wbGVyXSAmJgorICAgICAgICBJc1RleHR1cmVDb21wYXRpYmxlV2l0aFNh
bXBsZXIodHlwZSwgbUV4ZWN1dGFibGUtPmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpW21BY3RpdmVT
YW1wbGVyXSkpCiAgICAgewogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0dXJlKGNvbnRleHQsIG1B
Y3RpdmVTYW1wbGVyLCB0ZXh0dXJlKTsKICAgICB9CkBAIC0xMjc0LDYgKzE0OTAsOSBAQCB2b2lk
IFN0YXRlOjppbnZhbGlkYXRlVGV4dHVyZShUZXh0dXJlVHlwZSB0eXBlKQogCiB2b2lkIFN0YXRl
OjpzZXRTYW1wbGVyQmluZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgdGV4dHVy
ZVVuaXQsIFNhbXBsZXIgKnNhbXBsZXIpCiB7CisgICAgaWYgKG1TYW1wbGVyc1t0ZXh0dXJlVW5p
dF0uZ2V0KCkgPT0gc2FtcGxlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgbVNhbXBsZXJzW3Rl
eHR1cmVVbml0XS5zZXQoY29udGV4dCwgc2FtcGxlcik7CiAgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX1NBTVBMRVJfQklORElOR1MpOwogICAgIC8vIFRoaXMgaXMgb3Zlcmx5IGNvbnNlcnZh
dGl2ZSBhcyBpdCBhc3N1bWVzIHRoZSBzYW1wbGVyIGhhcyBuZXZlciBiZWVuIGJvdW5kLgpAQCAt
MTQ4MSwxNCArMTcwMCwxNiBAQCBhbmdsZTo6UmVzdWx0IFN0YXRlOjpzZXRQcm9ncmFtKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIFByb2dyYW0gKm5ld1Byb2dyYW0pCiAgICAgewogICAgICAgICBp
ZiAobVByb2dyYW0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2V0QWN0aXZlVGV4dHVyZXMo
bVByb2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpKTsKKyAgICAgICAgICAgIHVuc2V0QWN0
aXZlVGV4dHVyZXMobUV4ZWN1dGFibGUtPmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpKTsKICAgICAg
ICAgICAgIG1Qcm9ncmFtLT5yZWxlYXNlKGNvbnRleHQpOwogICAgICAgICB9CiAKLSAgICAgICAg
bVByb2dyYW0gPSBuZXdQcm9ncmFtOworICAgICAgICBtUHJvZ3JhbSAgICA9IG5ld1Byb2dyYW07
CisgICAgICAgIG1FeGVjdXRhYmxlID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAobVByb2dyYW0p
CiAgICAgICAgIHsKKyAgICAgICAgICAgIG1FeGVjdXRhYmxlID0gJm1Qcm9ncmFtLT5nZXRFeGVj
dXRhYmxlKCk7CiAgICAgICAgICAgICBuZXdQcm9ncmFtLT5hZGRSZWYoKTsKICAgICAgICAgICAg
IEFOR0xFX1RSWShvblByb2dyYW1FeGVjdXRhYmxlQ2hhbmdlKGNvbnRleHQsIG5ld1Byb2dyYW0p
KTsKICAgICAgICAgfQpAQCAtMTUzMiwxMSArMTc1MywyNSBAQCBib29sIFN0YXRlOjpyZW1vdmVU
cmFuc2Zvcm1GZWVkYmFja0JpbmRpbmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwKIHZvaWQgU3Rh
dGU6OnNldFByb2dyYW1QaXBlbGluZUJpbmRpbmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJv
Z3JhbVBpcGVsaW5lICpwaXBlbGluZSkKIHsKICAgICBtUHJvZ3JhbVBpcGVsaW5lLnNldChjb250
ZXh0LCBwaXBlbGluZSk7CisKKyAgICAvLyBBIGJvdW5kIFByb2dyYW0gYWx3YXlzIG92ZXJyaWRl
cyB0aGUgUHJvZ3JhbVBpcGVsaW5lLCBzbyBvbmx5IHVwZGF0ZSB0aGUKKyAgICAvLyBjdXJyZW50
IFByb2dyYW1FeGVjdXRhYmxlIGlmIHRoZXJlIGlzbid0IGN1cnJlbnRseSBhIFByb2dyYW0gYm91
bmQuCisgICAgaWYgKCFtUHJvZ3JhbSAmJiBwaXBlbGluZSkKKyAgICB7CisgICAgICAgIG1FeGVj
dXRhYmxlID0gJm1Qcm9ncmFtUGlwZWxpbmUtPmdldEV4ZWN1dGFibGUoKTsKKyAgICB9CiB9CiAK
IHZvaWQgU3RhdGU6OmRldGFjaFByb2dyYW1QaXBlbGluZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSkKIHsKICAgICBtUHJvZ3JhbVBpcGVsaW5lLnNl
dChjb250ZXh0LCBudWxscHRyKTsKKworICAgIC8vIEEgYm91bmQgUHJvZ3JhbSBhbHdheXMgb3Zl
cnJpZGVzIHRoZSBQcm9ncmFtUGlwZWxpbmUsIHNvIG9ubHkgdXBkYXRlIHRoZQorICAgIC8vIGN1
cnJlbnQgUHJvZ3JhbUV4ZWN1dGFibGUgaWYgdGhlcmUgaXNuJ3QgY3VycmVudGx5IGEgUHJvZ3Jh
bSBib3VuZC4KKyAgICBpZiAoIW1Qcm9ncmFtKQorICAgIHsKKyAgICAgICAgbUV4ZWN1dGFibGUg
PSBudWxscHRyOworICAgIH0KIH0KIAogYm9vbCBTdGF0ZTo6aXNRdWVyeUFjdGl2ZShRdWVyeVR5
cGUgdHlwZSkgY29uc3QKQEAgLTE4MTMsNDcgKzIwNDgsNiBAQCB2b2lkIFN0YXRlOjpzZXRDb3Zl
cmFnZU1vZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpCiAgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX0NPVkVSQUdFX01PRFVMQVRJT04pOwogfQogCi12b2lkIFN0YXRlOjpsb2FkUGF0aFJl
bmRlcmluZ01hdHJpeChHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KQot
ewotICAgIGlmIChtYXRyaXhNb2RlID09IEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNKQotICAg
IHsKLSAgICAgICAgbWVtY3B5KG1QYXRoTWF0cml4TVYsIG1hdHJpeCwgMTYgKiBzaXplb2YoR0xm
bG9hdCkpOwotICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkcp
OwotICAgIH0KLSAgICBlbHNlIGlmIChtYXRyaXhNb2RlID09IEdMX1BBVEhfUFJPSkVDVElPTl9D
SFJPTUlVTSkKLSAgICB7Ci0gICAgICAgIG1lbWNweShtUGF0aE1hdHJpeFByb2osIG1hdHJpeCwg
MTYgKiBzaXplb2YoR0xmbG9hdCkpOwotICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
UEFUSF9SRU5ERVJJTkcpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgIH0KLX0KLQotY29uc3QgR0xmbG9hdCAqU3RhdGU6OmdldFBhdGhSZW5kZXJp
bmdNYXRyaXgoR0xlbnVtIHdoaWNoKSBjb25zdAotewotICAgIGlmICh3aGljaCA9PSBHTF9QQVRI
X01PREVMVklFV19NQVRSSVhfQ0hST01JVU0pCi0gICAgewotICAgICAgICByZXR1cm4gbVBhdGhN
YXRyaXhNVjsKLSAgICB9Ci0gICAgZWxzZSBpZiAod2hpY2ggPT0gR0xfUEFUSF9QUk9KRUNUSU9O
X01BVFJJWF9DSFJPTUlVTSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtUGF0aE1hdHJpeFByb2o7
Ci0gICAgfQotCi0gICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
dm9pZCBTdGF0ZTo6c2V0UGF0aFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdM
dWludCBtYXNrKQotewotICAgIG1QYXRoU3RlbmNpbEZ1bmMgPSBmdW5jOwotICAgIG1QYXRoU3Rl
bmNpbFJlZiAgPSByZWY7Ci0gICAgbVBhdGhTdGVuY2lsTWFzayA9IG1hc2s7Ci0gICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX1BBVEhfUkVOREVSSU5HKTsKLX0KLQogdm9pZCBTdGF0ZTo6c2V0
RnJhbWVidWZmZXJTUkdCKGJvb2wgc1JHQikKIHsKICAgICBtRnJhbWVidWZmZXJTUkdCID0gc1JH
QjsKQEAgLTE4NjUsNyArMjA1OSw3IEBAIHZvaWQgU3RhdGU6OnNldE1heFNoYWRlckNvbXBpbGVy
VGhyZWFkcyhHTHVpbnQgY291bnQpCiAgICAgbU1heFNoYWRlckNvbXBpbGVyVGhyZWFkcyA9IGNv
dW50OwogfQogCi12b2lkIFN0YXRlOjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVh
biAqcGFyYW1zKQordm9pZCBTdGF0ZTo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xl
YW4gKnBhcmFtcykgY29uc3QKIHsKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKQEAgLTE4NzYs
MTAgKzIwNzAsMTEgQEAgdm9pZCBTdGF0ZTo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJv
b2xlYW4gKnBhcmFtcykKICAgICAgICAgICAgICpwYXJhbXMgPSBtRGVwdGhTdGVuY2lsLmRlcHRo
TWFzazsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX0NPTE9SX1dSSVRFTUFT
SzoKLSAgICAgICAgICAgIHBhcmFtc1swXSA9IG1CbGVuZC5jb2xvck1hc2tSZWQ7Ci0gICAgICAg
ICAgICBwYXJhbXNbMV0gPSBtQmxlbmQuY29sb3JNYXNrR3JlZW47Ci0gICAgICAgICAgICBwYXJh
bXNbMl0gPSBtQmxlbmQuY29sb3JNYXNrQmx1ZTsKLSAgICAgICAgICAgIHBhcmFtc1szXSA9IG1C
bGVuZC5jb2xvck1hc2tBbHBoYTsKKyAgICAgICAgICAgIC8vIG5vbi1pbmRleGVkIGdldCByZXR1
cm5zIHRoZSBzdGF0ZSBvZiBkcmF3IGJ1ZmZlciB6ZXJvCisgICAgICAgICAgICBwYXJhbXNbMF0g
PSBtQmxlbmRTdGF0ZUFycmF5WzBdLmNvbG9yTWFza1JlZDsKKyAgICAgICAgICAgIHBhcmFtc1sx
XSA9IG1CbGVuZFN0YXRlQXJyYXlbMF0uY29sb3JNYXNrR3JlZW47CisgICAgICAgICAgICBwYXJh
bXNbMl0gPSBtQmxlbmRTdGF0ZUFycmF5WzBdLmNvbG9yTWFza0JsdWU7CisgICAgICAgICAgICBw
YXJhbXNbM10gPSBtQmxlbmRTdGF0ZUFycmF5WzBdLmNvbG9yTWFza0FscGhhOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfQ1VMTF9GQUNFOgogICAgICAgICAgICAgKnBhcmFt
cyA9IG1SYXN0ZXJpemVyLmN1bGxGYWNlOwpAQCAtMTg4OCw3ICsyMDgzLDcgQEAgdm9pZCBTdGF0
ZTo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykKICAgICAgICAg
ICAgICpwYXJhbXMgPSBtUmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0RmlsbDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRToKLSAgICAg
ICAgICAgICpwYXJhbXMgPSBtQmxlbmQuc2FtcGxlQWxwaGFUb0NvdmVyYWdlOworICAgICAgICAg
ICAgKnBhcmFtcyA9IG1TYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQ09WRVJBR0U6CiAgICAgICAgICAgICAqcGFyYW1zID0g
bVNhbXBsZUNvdmVyYWdlOwpAQCAtMTkwNiwxMCArMjEwMSwxMSBAQCB2b2lkIFN0YXRlOjpnZXRC
b29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQogICAgICAgICAgICAgKnBh
cmFtcyA9IG1EZXB0aFN0ZW5jaWwuZGVwdGhUZXN0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR0xfQkxFTkQ6Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kLmJsZW5kOwor
ICAgICAgICAgICAgLy8gbm9uLWluZGV4ZWQgZ2V0IHJldHVybnMgdGhlIHN0YXRlIG9mIGRyYXcg
YnVmZmVyIHplcm8KKyAgICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmRTdGF0ZUFycmF5WzBdLmJs
ZW5kOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfRElUSEVSOgotICAgICAg
ICAgICAgKnBhcmFtcyA9IG1CbGVuZC5kaXRoZXI7CisgICAgICAgICAgICAqcGFyYW1zID0gbVJh
c3Rlcml6ZXIuZGl0aGVyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0FDVElWRToKICAgICAgICAgICAgICpwYXJhbXMgPSBnZXRDdXJyZW50
VHJhbnNmb3JtRmVlZGJhY2soKS0+aXNBY3RpdmUoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKQEAg
LTE5NjMsNyArMjE1OSw3IEBAIHZvaWQgU3RhdGU6OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwg
R0xib29sZWFuICpwYXJhbXMpCiAgICAgfQogfQogCi12b2lkIFN0YXRlOjpnZXRGbG9hdHYoR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIFN0YXRlOjpnZXRGbG9hdHYoR0xlbnVt
IHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpIGNvbnN0CiB7CiAgICAgLy8gUGxlYXNlIG5vdGU6IERF
UFRIX0NMRUFSX1ZBTFVFIGlzIGluY2x1ZGVkIGluIG91ciBpbnRlcm5hbCBnZXRGbG9hdHYgaW1w
bGVtZW50YXRpb24KICAgICAvLyBiZWNhdXNlIGl0IGlzIHN0b3JlZCBhcyBhIGZsb2F0LCBkZXNw
aXRlIHRoZSBmYWN0IHRoYXQgdGhlIEdMIEVTIDIuMCBzcGVjIG5hbWVzCkBAIC0yMDQxLDEzICsy
MjM3LDE0IEBAIHZvaWQgU3RhdGU6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBh
cmFtcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfTU9E
RUxWSUVXX01BVFJJWDoKLSAgICAgICAgICAgIG1lbWNweShwYXJhbXMsIG1HTEVTMVN0YXRlLm1N
b2RlbHZpZXdNYXRyaWNlcy5iYWNrKCkuZGF0YSgpLCAxNiAqIHNpemVvZihHTGZsb2F0KSk7Cisg
ICAgICAgICAgICBtZW1jcHkocGFyYW1zLCBtR0xFUzFTdGF0ZS5tTW9kZWx2aWV3TWF0cmljZXMu
YmFjaygpLmNvbnN0RGF0YSgpLCAxNiAqIHNpemVvZihHTGZsb2F0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHTF9QUk9KRUNUSU9OX01BVFJJWDoKLSAgICAgICAgICAgIG1l
bWNweShwYXJhbXMsIG1HTEVTMVN0YXRlLm1Qcm9qZWN0aW9uTWF0cmljZXMuYmFjaygpLmRhdGEo
KSwgMTYgKiBzaXplb2YoR0xmbG9hdCkpOworICAgICAgICAgICAgbWVtY3B5KHBhcmFtcywgbUdM
RVMxU3RhdGUubVByb2plY3Rpb25NYXRyaWNlcy5iYWNrKCkuY29uc3REYXRhKCksCisgICAgICAg
ICAgICAgICAgICAgMTYgKiBzaXplb2YoR0xmbG9hdCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVRSSVg6Ci0gICAgICAgICAgICBtZW1jcHkocGFyYW1z
LCBtR0xFUzFTdGF0ZS5tVGV4dHVyZU1hdHJpY2VzW21BY3RpdmVTYW1wbGVyXS5iYWNrKCkuZGF0
YSgpLAorICAgICAgICAgICAgbWVtY3B5KHBhcmFtcywgbUdMRVMxU3RhdGUubVRleHR1cmVNYXRy
aWNlc1ttQWN0aXZlU2FtcGxlcl0uYmFjaygpLmNvbnN0RGF0YSgpLAogICAgICAgICAgICAgICAg
ICAgIDE2ICogc2l6ZW9mKEdMZmxvYXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEdMX0xJR0hUX01PREVMX0FNQklFTlQ6CkBAIC0yMDc1LDcgKzIyNzIsNyBAQCB2b2lkIFN0
YXRlOjpnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAgICAgfQogfQog
Ci1hbmdsZTo6UmVzdWx0IFN0YXRlOjpnZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCithbmdsZTo6UmVzdWx0IFN0YXRlOjpnZXRJ
bnRlZ2Vydihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpIGNvbnN0CiB7CiAgICAgaWYgKHBuYW1lID49IEdMX0RSQVdfQlVGRkVSMF9FWFQgJiYgcG5h
bWUgPD0gR0xfRFJBV19CVUZGRVIxNV9FWFQpCiAgICAgewpAQCAtMjIxMSwyMiArMjQwOCwyMyBA
QCBhbmdsZTo6UmVzdWx0IFN0YXRlOjpnZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYQogICAgICAgICAgICAgKnBhcmFtcyA9IG1EZXB0aFN0
ZW5jaWwuZGVwdGhGdW5jOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfQkxF
TkRfU1JDX1JHQjoKLSAgICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmQuc291cmNlQmxlbmRSR0I7
CisgICAgICAgICAgICAvLyBub24taW5kZXhlZCBnZXQgcmV0dXJucyB0aGUgc3RhdGUgb2YgZHJh
dyBidWZmZXIgemVybworICAgICAgICAgICAgKnBhcmFtcyA9IG1CbGVuZFN0YXRlQXJyYXlbMF0u
c291cmNlQmxlbmRSR0I7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9CTEVO
RF9TUkNfQUxQSEE6Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kLnNvdXJjZUJsZW5kQWxw
aGE7CisgICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kU3RhdGVBcnJheVswXS5zb3VyY2VCbGVu
ZEFscGhhOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JH
QjoKLSAgICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmQuZGVzdEJsZW5kUkdCOworICAgICAgICAg
ICAgKnBhcmFtcyA9IG1CbGVuZFN0YXRlQXJyYXlbMF0uZGVzdEJsZW5kUkdCOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOgotICAgICAgICAgICAg
KnBhcmFtcyA9IG1CbGVuZC5kZXN0QmxlbmRBbHBoYTsKKyAgICAgICAgICAgICpwYXJhbXMgPSBt
QmxlbmRTdGF0ZUFycmF5WzBdLmRlc3RCbGVuZEFscGhhOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fUkdCOgotICAgICAgICAgICAgKnBhcmFtcyA9
IG1CbGVuZC5ibGVuZEVxdWF0aW9uUkdCOworICAgICAgICAgICAgKnBhcmFtcyA9IG1CbGVuZFN0
YXRlQXJyYXlbMF0uYmxlbmRFcXVhdGlvblJHQjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgotICAgICAgICAgICAgKnBhcmFtcyA9IG1C
bGVuZC5ibGVuZEVxdWF0aW9uQWxwaGE7CisgICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kU3Rh
dGVBcnJheVswXS5ibGVuZEVxdWF0aW9uQWxwaGE7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHTF9TVEVOQ0lMX1dSSVRFTUFTSzoKICAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0
TWFza1ZhbHVlKG1EZXB0aFN0ZW5jaWwuc3RlbmNpbFdyaXRlbWFzayk7CkBAIC0yNDc5LDEwICsy
Njc3LDExIEBAIGFuZ2xlOjpSZXN1bHQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhCiAgICAgICAgICAgICAqcGFyYW1zID0g
VG9HTGVudW0obUdMRVMxU3RhdGUubUxvZ2ljT3ApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR0xfQkxFTkRfU1JDOgotICAgICAgICAgICAgKnBhcmFtcyA9IG1CbGVuZC5zb3Vy
Y2VCbGVuZFJHQjsKKyAgICAgICAgICAgIC8vIG5vbi1pbmRleGVkIGdldCByZXR1cm5zIHRoZSBz
dGF0ZSBvZiBkcmF3IGJ1ZmZlciB6ZXJvCisgICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kU3Rh
dGVBcnJheVswXS5zb3VyY2VCbGVuZFJHQjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEdMX0JMRU5EX0RTVDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmQuZGVzdEJsZW5k
UkdCOworICAgICAgICAgICAgKnBhcmFtcyA9IG1CbGVuZFN0YXRlQXJyYXlbMF0uZGVzdEJsZW5k
UkdCOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfUEVSU1BFQ1RJVkVfQ09S
UkVDVElPTl9ISU5UOgogICAgICAgICBjYXNlIEdMX1BPSU5UX1NNT09USF9ISU5UOgpAQCAtMjUy
OSwxMCArMjcyOCwzNCBAQCB2b2lkIFN0YXRlOjpnZXRQb2ludGVydihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpIGNvbgogICAgIH0KIH0KIAotdm9p
ZCBTdGF0ZTo6Z2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50
ICpkYXRhKQordm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMaW50ICpkYXRhKSBjb25zdAogewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsK
KyAgICAgICAgY2FzZSBHTF9CTEVORF9TUkNfUkdCOgorICAgICAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgICAg
ICAgICAgKmRhdGEgPSBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5zb3VyY2VCbGVuZFJHQjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQToKKyAgICAg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1CbGVuZFN0YXRlQXJy
YXkuc2l6ZSgpKTsKKyAgICAgICAgICAgICpkYXRhID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0u
c291cmNlQmxlbmRBbHBoYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JM
RU5EX0RTVF9SR0I6CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRl
eCkgPCBtQmxlbmRTdGF0ZUFycmF5LnNpemUoKSk7CisgICAgICAgICAgICAqZGF0YSA9IG1CbGVu
ZFN0YXRlQXJyYXlbaW5kZXhdLmRlc3RCbGVuZFJHQjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQToKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA8IG1CbGVuZFN0YXRlQXJyYXkuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICpkYXRhID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uZGVzdEJsZW5kQWxwaGE7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9SR0I6CisgICAg
ICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtQmxlbmRTdGF0ZUFy
cmF5LnNpemUoKSk7CisgICAgICAgICAgICAqZGF0YSA9IG1CbGVuZFN0YXRlQXJyYXlbaW5kZXhd
LmJsZW5kRXF1YXRpb25SR0I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9C
TEVORF9FUVVBVElPTl9BTFBIQToKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4KSA8IG1CbGVuZFN0YXRlQXJyYXkuc2l6ZSgpKTsKKyAgICAgICAgICAgICpkYXRh
ID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uYmxlbmRFcXVhdGlvbkFscGhhOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5E
SU5HOgogICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVRy
YW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291bnQoKSk7CiAgICAgICAgICAgICAq
ZGF0YSA9IG1UcmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZlcihpbmRleCkuaWQoKS52
YWx1ZTsKQEAgLTI1OTUsNyArMjgxOCw3IEBAIHZvaWQgU3RhdGU6OmdldEludGVnZXJpX3YoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSkKICAgICB9CiB9CiAKLXZvaWQg
U3RhdGU6OmdldEludGVnZXI2NGlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50
NjQgKmRhdGEpCit2b2lkIFN0YXRlOjpnZXRJbnRlZ2VyNjRpX3YoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTGludDY0ICpkYXRhKSBjb25zdAogewogICAgIHN3aXRjaCAodGFyZ2V0KQog
ICAgIHsKQEAgLTI2MzcsMTAgKzI4NjAsMTcgQEAgdm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcjY0aV92
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSkKICAgICB9CiB9CiAK
LXZvaWQgU3RhdGU6OmdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBH
TGJvb2xlYW4gKmRhdGEpCit2b2lkIFN0YXRlOjpnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKSBjb25zdAogewogICAgIHN3aXRjaCAodGFy
Z2V0KQogICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6CisgICAgICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtQmxlbmRTdGF0ZUFycmF5LnNp
emUoKSk7CisgICAgICAgICAgICBkYXRhWzBdID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uY29s
b3JNYXNrUmVkOworICAgICAgICAgICAgZGF0YVsxXSA9IG1CbGVuZFN0YXRlQXJyYXlbaW5kZXhd
LmNvbG9yTWFza0dyZWVuOworICAgICAgICAgICAgZGF0YVsyXSA9IG1CbGVuZFN0YXRlQXJyYXlb
aW5kZXhdLmNvbG9yTWFza0JsdWU7CisgICAgICAgICAgICBkYXRhWzNdID0gbUJsZW5kU3RhdGVB
cnJheVtpbmRleF0uY29sb3JNYXNrQWxwaGE7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHTF9JTUFHRV9CSU5ESU5HX0xBWUVSRUQ6CiAgICAgICAgICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtSW1hZ2VVbml0cy5zaXplKCkpOwogICAgICAgICAgICAg
KmRhdGEgPSBtSW1hZ2VVbml0c1tpbmRleF0ubGF5ZXJlZDsKQEAgLTI2ODAsNyArMjkxMCw3IEBA
IGFuZ2xlOjpSZXN1bHQgU3RhdGU6OnN5bmNUZXh0dXJlc0luaXQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCkKICAgICBpZiAoIW1Qcm9ncmFtKQogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
Q29udGludWU7CiAKLSAgICBmb3IgKHNpemVfdCB0ZXh0dXJlVW5pdEluZGV4IDogbVByb2dyYW0t
PmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpKQorICAgIGZvciAoc2l6ZV90IHRleHR1cmVVbml0SW5k
ZXggOiBtRXhlY3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCkpCiAgICAgewogICAgICAg
ICBUZXh0dXJlICp0ZXh0dXJlID0gbUFjdGl2ZVRleHR1cmVzQ2FjaGVbdGV4dHVyZVVuaXRJbmRl
eF07CiAgICAgICAgIGlmICh0ZXh0dXJlKQpAQCAtMjY5NSw3ICsyOTI1LDcgQEAgYW5nbGU6OlJl
c3VsdCBTdGF0ZTo6c3luY0ltYWdlc0luaXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAg
ICBBU1NFUlQobVJvYnVzdFJlc291cmNlSW5pdCk7CiAgICAgQVNTRVJUKG1Qcm9ncmFtKTsKLSAg
ICBmb3IgKHNpemVfdCBpbWFnZVVuaXRJbmRleCA6IG1Qcm9ncmFtLT5nZXRBY3RpdmVJbWFnZXNN
YXNrKCkpCisgICAgZm9yIChzaXplX3QgaW1hZ2VVbml0SW5kZXggOiBtRXhlY3V0YWJsZS0+Z2V0
QWN0aXZlSW1hZ2VzTWFzaygpKQogICAgIHsKICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IG1J
bWFnZVVuaXRzW2ltYWdlVW5pdEluZGV4XS50ZXh0dXJlLmdldCgpOwogICAgICAgICBpZiAodGV4
dHVyZSkKQEAgLTI4NzIsOCArMzEwMiw5IEBAIGFuZ2xlOjpSZXN1bHQgU3RhdGU6Om9uUHJvZ3Jh
bUV4ZWN1dGFibGVDaGFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbSAqCiAgICAg
fQogCiAgICAgLy8gU2V0IGFueSBib3VuZCB0ZXh0dXJlcy4KLSAgICBjb25zdCBBY3RpdmVUZXh0
dXJlVHlwZUFycmF5ICZ0ZXh0dXJlVHlwZXMgPSBwcm9ncmFtLT5nZXRBY3RpdmVTYW1wbGVyVHlw
ZXMoKTsKLSAgICBmb3IgKHNpemVfdCB0ZXh0dXJlSW5kZXggOiBwcm9ncmFtLT5nZXRBY3RpdmVT
YW1wbGVyc01hc2soKSkKKyAgICBjb25zdCBQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSAg
ICAgICAgPSBwcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCk7CisgICAgY29uc3QgQWN0aXZlVGV4dHVy
ZVR5cGVBcnJheSAmdGV4dHVyZVR5cGVzID0gZXhlY3V0YWJsZS5nZXRBY3RpdmVTYW1wbGVyVHlw
ZXMoKTsKKyAgICBmb3IgKHNpemVfdCB0ZXh0dXJlSW5kZXggOiBleGVjdXRhYmxlLmdldEFjdGl2
ZVNhbXBsZXJzTWFzaygpKQogICAgIHsKICAgICAgICAgVGV4dHVyZVR5cGUgdHlwZSA9IHRleHR1
cmVUeXBlc1t0ZXh0dXJlSW5kZXhdOwogCkBAIC0yODg1LDcgKzMxMTYsNyBAQCBhbmdsZTo6UmVz
dWx0IFN0YXRlOjpvblByb2dyYW1FeGVjdXRhYmxlQ2hhbmdlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIFByb2dyYW0gKgogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0dXJlKGNvbnRleHQsIHRleHR1
cmVJbmRleCwgdGV4dHVyZSk7CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaW1hZ2VVbml0SW5k
ZXggOiBwcm9ncmFtLT5nZXRBY3RpdmVJbWFnZXNNYXNrKCkpCisgICAgZm9yIChzaXplX3QgaW1h
Z2VVbml0SW5kZXggOiBleGVjdXRhYmxlLmdldEFjdGl2ZUltYWdlc01hc2soKSkKICAgICB7CiAg
ICAgICAgIFRleHR1cmUgKmltYWdlID0gbUltYWdlVW5pdHNbaW1hZ2VVbml0SW5kZXhdLnRleHR1
cmUuZ2V0KCk7CiAgICAgICAgIGlmICghaW1hZ2UpCkBAIC0yOTI2LDE4ICszMTU3LDI0IEBAIHZv
aWQgU3RhdGU6OnNldEltYWdlVW5pdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBhY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCkKIHsKLSAgICBtSW1hZ2VVbml0c1t1bml0XS50ZXh0dXJlLnNldChjb250
ZXh0LCB0ZXh0dXJlKTsKLSAgICBtSW1hZ2VVbml0c1t1bml0XS5sZXZlbCAgID0gbGV2ZWw7Ci0g
ICAgbUltYWdlVW5pdHNbdW5pdF0ubGF5ZXJlZCA9IGxheWVyZWQ7Ci0gICAgbUltYWdlVW5pdHNb
dW5pdF0ubGF5ZXIgICA9IGxheWVyOwotICAgIG1JbWFnZVVuaXRzW3VuaXRdLmFjY2VzcyAgPSBh
Y2Nlc3M7Ci0gICAgbUltYWdlVW5pdHNbdW5pdF0uZm9ybWF0ICA9IGZvcm1hdDsKLSAgICBtRGly
dHlCaXRzLnNldChESVJUWV9CSVRfSU1BR0VfQklORElOR1MpOworICAgIEltYWdlVW5pdCAmaW1h
Z2VVbml0ID0gbUltYWdlVW5pdHNbdW5pdF07CiAKKyAgICBpZiAoaW1hZ2VVbml0LnRleHR1cmUu
Z2V0KCkpCisgICAgeworICAgICAgICBpbWFnZVVuaXQudGV4dHVyZS0+b25VbmJpbmRBc0ltYWdl
VGV4dHVyZSgpOworICAgIH0KICAgICBpZiAodGV4dHVyZSkKICAgICB7Ci0gICAgICAgIHRleHR1
cmUtPm9uQmluZEltYWdlVGV4dHVyZSgpOworICAgICAgICB0ZXh0dXJlLT5vbkJpbmRBc0ltYWdl
VGV4dHVyZSgpOwogICAgIH0KKyAgICBpbWFnZVVuaXQudGV4dHVyZS5zZXQoY29udGV4dCwgdGV4
dHVyZSk7CisgICAgaW1hZ2VVbml0LmxldmVsICAgPSBsZXZlbDsKKyAgICBpbWFnZVVuaXQubGF5
ZXJlZCA9IGxheWVyZWQ7CisgICAgaW1hZ2VVbml0LmxheWVyICAgPSBsYXllcjsKKyAgICBpbWFn
ZVVuaXQuYWNjZXNzICA9IGFjY2VzczsKKyAgICBpbWFnZVVuaXQuZm9ybWF0ICA9IGZvcm1hdDsK
KyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfSU1BR0VfQklORElOR1MpOworCiAgICAgb25J
bWFnZVN0YXRlQ2hhbmdlKGNvbnRleHQsIHVuaXQpOwogfQogCkBAIC0yOTQ2LDcgKzMxODMsNyBA
QCB2b2lkIFN0YXRlOjpvbkFjdGl2ZVRleHR1cmVDaGFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgc2l6ZV90IHRleHR1cmVVbml0KQogewogICAgIGlmIChtUHJvZ3JhbSkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVUeXBlIHR5cGUgPSBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlclR5cGVzKClb
dGV4dHVyZVVuaXRdOworICAgICAgICBUZXh0dXJlVHlwZSB0eXBlID0gbUV4ZWN1dGFibGUtPmdl
dEFjdGl2ZVNhbXBsZXJUeXBlcygpW3RleHR1cmVVbml0XTsKICAgICAgICAgaWYgKHR5cGUgIT0g
VGV4dHVyZVR5cGU6OkludmFsaWRFbnVtKQogICAgICAgICB7CiAgICAgICAgICAgICBUZXh0dXJl
ICphY3RpdmVUZXh0dXJlID0gZ2V0VGV4dHVyZUZvckFjdGl2ZVNhbXBsZXIodHlwZSwgdGV4dHVy
ZVVuaXQpOwpAQCAtMjk1OSw3ICszMTk2LDcgQEAgdm9pZCBTdGF0ZTo6b25BY3RpdmVUZXh0dXJl
U3RhdGVDaGFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgc2l6ZV90IHRleHR1cmVVbmkKIHsK
ICAgICBpZiAobVByb2dyYW0pCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0eXBlID0gbVBy
b2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpW3RleHR1cmVVbml0XTsKKyAgICAgICAgVGV4
dHVyZVR5cGUgdHlwZSA9IG1FeGVjdXRhYmxlLT5nZXRBY3RpdmVTYW1wbGVyVHlwZXMoKVt0ZXh0
dXJlVW5pdF07CiAgICAgICAgIGlmICh0eXBlICE9IFRleHR1cmVUeXBlOjpJbnZhbGlkRW51bSkK
ICAgICAgICAgewogICAgICAgICAgICAgVGV4dHVyZSAqYWN0aXZlVGV4dHVyZSA9IGdldFRleHR1
cmVGb3JBY3RpdmVTYW1wbGVyKHR5cGUsIHRleHR1cmVVbml0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmgKaW5kZXggM2FhN2E1NGE1ZTIxOTRmNjIxOGYx
YjZiOTQwYzdlZmY5ZmZhNzM3MS4uNTlhNGJmYTk2YTQ5YmFlYzA4MWQ2YzE5OTIwMDYzMzc0MThk
ZjlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0
YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmgK
QEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9HTEVTMVN0YXRlLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvT3ZlcmxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1Byb2dyYW1QaXBlbGluZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCkBAIC0zNiw3ICszNyw2IEBA
IHN0cnVjdCBDYXBzOwogY2xhc3MgQ29udGV4dDsKIGNsYXNzIEZyYW1lYnVmZmVyTWFuYWdlcjsK
IGNsYXNzIE1lbW9yeU9iamVjdE1hbmFnZXI7Ci1jbGFzcyBQYXRoTWFuYWdlcjsKIGNsYXNzIFBy
b2dyYW1QaXBlbGluZU1hbmFnZXI7CiBjbGFzcyBRdWVyeTsKIGNsYXNzIFJlbmRlcmJ1ZmZlck1h
bmFnZXI7CkBAIC01OSw4ICs1OSwyNyBAQCB1c2luZyBDb250ZXh0SUQgPSB1aW50cHRyX3Q7CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHVzaW5nIEJ1ZmZlckJpbmRpbmdNYXAgICAgID0gYW5nbGU6
OlBhY2tlZEVudW1NYXA8QnVmZmVyQmluZGluZywgVD47CiB1c2luZyBCb3VuZEJ1ZmZlck1hcCAg
ICAgICA9IEJ1ZmZlckJpbmRpbmdNYXA8QmluZGluZ1BvaW50ZXI8QnVmZmVyPj47Cit1c2luZyBT
YW1wbGVyQmluZGluZ1ZlY3RvciA9IHN0ZDo6dmVjdG9yPEJpbmRpbmdQb2ludGVyPFNhbXBsZXI+
PjsKIHVzaW5nIFRleHR1cmVCaW5kaW5nVmVjdG9yID0gc3RkOjp2ZWN0b3I8QmluZGluZ1BvaW50
ZXI8VGV4dHVyZT4+OwogdXNpbmcgVGV4dHVyZUJpbmRpbmdNYXAgICAgPSBhbmdsZTo6UGFja2Vk
RW51bU1hcDxUZXh0dXJlVHlwZSwgVGV4dHVyZUJpbmRpbmdWZWN0b3I+OwordXNpbmcgQWN0aXZl
UXVlcnlNYXAgICAgICAgPSBhbmdsZTo6UGFja2VkRW51bU1hcDxRdWVyeVR5cGUsIEJpbmRpbmdQ
b2ludGVyPFF1ZXJ5Pj47CisKK2NsYXNzIEFjdGl2ZVRleHR1cmVzQ2FjaGUgZmluYWwgOiBhbmds
ZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsK
KyAgICB+QWN0aXZlVGV4dHVyZXNDYWNoZSgpOworCisgICAgVGV4dHVyZSAqb3BlcmF0b3JbXShz
aXplX3QgdGV4dHVyZUluZGV4KSBjb25zdCB7IHJldHVybiBtVGV4dHVyZXNbdGV4dHVyZUluZGV4
XTsgfQorCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgc2V0KHNpemVfdCB0ZXh0dXJlSW5k
ZXgsIFRleHR1cmUgKnRleHR1cmUpOworICAgIHZvaWQgcmVzZXQoc2l6ZV90IHRleHR1cmVJbmRl
eCk7CisgICAgYm9vbCBlbXB0eSgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgQWN0aXZlVGV4
dHVyZUFycmF5PFRleHR1cmUgKj4gbVRleHR1cmVzOworfTsKIAogY2xhc3MgU3RhdGUgOiBhbmds
ZTo6Tm9uQ29weWFibGUKIHsKQEAgLTEwNiw4ICsxMjUsMTEgQEAgY2xhc3MgU3RhdGUgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICB9CiAKICAgICAvLyBTdGF0ZSBjaHVuayBnZXR0ZXJzCisgICAg
Ym9vbCBhbGxBY3RpdmVEcmF3QnVmZmVyQ2hhbm5lbHNNYXNrZWQoKSBjb25zdDsKKyAgICBib29s
IGFueUFjdGl2ZURyYXdCdWZmZXJDaGFubmVsTWFza2VkKCkgY29uc3Q7CiAgICAgY29uc3QgUmFz
dGVyaXplclN0YXRlICZnZXRSYXN0ZXJpemVyU3RhdGUoKSBjb25zdDsKLSAgICBjb25zdCBCbGVu
ZFN0YXRlICZnZXRCbGVuZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbUJsZW5kOyB9CisgICAgY29u
c3QgQmxlbmRTdGF0ZSAmZ2V0QmxlbmRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZFN0YXRl
QXJyYXlbMF07IH0KKyAgICBjb25zdCBCbGVuZFN0YXRlQXJyYXkgJmdldEJsZW5kU3RhdGVBcnJh
eSgpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZFN0YXRlQXJyYXk7IH0KICAgICBjb25zdCBEZXB0aFN0
ZW5jaWxTdGF0ZSAmZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKSBjb25zdDsKIAogICAgIC8vIENsZWFy
IGJlaGF2aW9yIHNldHRlcnMgJiBzdGF0ZSBwYXJhbWV0ZXIgYmxvY2sgZ2VuZXJhdGlvbiBmdW5j
dGlvbgpAQCAtMTIxLDYgKzE0Myw3IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiAKICAgICAvLyBXcml0ZSBtYXNrIG1hbmlwdWxhdGlvbgogICAgIHZvaWQgc2V0Q29sb3JNYXNr
KGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEpOworICAgIHZvaWQg
c2V0Q29sb3JNYXNrSW5kZXhlZChib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29s
IGFscGhhLCBHTHVpbnQgaW5kZXgpOwogICAgIHZvaWQgc2V0RGVwdGhNYXNrKGJvb2wgbWFzayk7
CiAKICAgICAvLyBEaXNjYXJkIHRvZ2dsZSAmIHF1ZXJ5CkBAIC0xNDYsMTEgKzE2OSwyNCBAQCBj
bGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGZsb2F0IGdldEZhclBsYW5lKCkg
Y29uc3QgeyByZXR1cm4gbUZhclo7IH0KIAogICAgIC8vIEJsZW5kIHN0YXRlIG1hbmlwdWxhdGlv
bgotICAgIGJvb2wgaXNCbGVuZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtQmxlbmQuYmxlbmQ7
IH0KKyAgICBib29sIGlzQmxlbmRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbUJsZW5kU3RhdGVB
cnJheVswXS5ibGVuZDsgfQorICAgIGJvb2wgaXNCbGVuZEVuYWJsZWRJbmRleGVkKEdMdWludCBp
bmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG1CbGVuZFN0YXRlQXJy
YXkuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1CbGVuZFN0YXRlQXJyYXlbaW5kZXhdLmJsZW5k
OworICAgIH0KKyAgICBEcmF3QnVmZmVyTWFzayBnZXRCbGVuZEVuYWJsZWREcmF3QnVmZmVyTWFz
aygpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZEVuYWJsZWREcmF3QnVmZmVyczsgfQogICAgIHZvaWQg
c2V0QmxlbmQoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldEJsZW5kSW5kZXhlZChib29sIGVu
YWJsZWQsIEdMdWludCBpbmRleCk7CiAgICAgdm9pZCBzZXRCbGVuZEZhY3RvcnMoR0xlbnVtIHNv
dXJjZVJHQiwgR0xlbnVtIGRlc3RSR0IsIEdMZW51bSBzb3VyY2VBbHBoYSwgR0xlbnVtIGRlc3RB
bHBoYSk7CisgICAgdm9pZCBzZXRCbGVuZEZhY3RvcnNJbmRleGVkKEdMZW51bSBzb3VyY2VSR0Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0UkdCLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlQWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0QWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCk7CiAgICAgdm9pZCBzZXRCbGVuZENvbG9yKGZs
b2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKTsKICAgICB2b2lk
IHNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0aW9uLCBHTGVudW0gYWxwaGFFcXVhdGlv
bik7CisgICAgdm9pZCBzZXRCbGVuZEVxdWF0aW9uSW5kZXhlZChHTGVudW0gcmdiRXF1YXRpb24s
IEdMZW51bSBhbHBoYUVxdWF0aW9uLCBHTHVpbnQgaW5kZXgpOwogICAgIGNvbnN0IENvbG9yRiAm
Z2V0QmxlbmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZENvbG9yOyB9CiAKICAgICAvLyBT
dGVuY2lsIHN0YXRlIG1hbml1cHVsYXRpb24KQEAgLTE3NSw3ICsyMTEsNyBAQCBjbGFzcyBTdGF0
ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZvaWQgc2V0UG9seWdvbk9mZnNldFBhcmFtcyhH
TGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CiAKICAgICAvLyBNdWx0aXNhbXBsZSBjb3Zl
cmFnZSBzdGF0ZSBtYW5pcHVsYXRpb24KLSAgICBib29sIGlzU2FtcGxlQWxwaGFUb0NvdmVyYWdl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZC5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7IH0K
KyAgICBib29sIGlzU2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1TYW1wbGVBbHBoYVRvQ292ZXJhZ2U7IH0KICAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9Db3Zl
cmFnZShib29sIGVuYWJsZWQpOwogICAgIGJvb2wgaXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtU2FtcGxlQ292ZXJhZ2U7IH0KICAgICB2b2lkIHNldFNhbXBsZUNvdmVy
YWdlKGJvb2wgZW5hYmxlZCk7CkBAIC0yMDcsMTIgKzI0MywxNCBAQCBjbGFzcyBTdGF0ZSA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgIGNvbnN0IFJlY3RhbmdsZSAmZ2V0U2Npc3NvcigpIGNvbnN0
IHsgcmV0dXJuIG1TY2lzc29yOyB9CiAKICAgICAvLyBEaXRoZXIgc3RhdGUgdG9nZ2xlICYgcXVl
cnkKLSAgICBib29sIGlzRGl0aGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZC5kaXRo
ZXI7IH0KKyAgICBib29sIGlzRGl0aGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1SYXN0ZXJp
emVyLmRpdGhlcjsgfQogICAgIHZvaWQgc2V0RGl0aGVyKGJvb2wgZW5hYmxlZCk7CiAKICAgICAv
LyBHZW5lcmljIHN0YXRlIHRvZ2dsZSAmIHF1ZXJ5CiAgICAgdm9pZCBzZXRFbmFibGVGZWF0dXJl
KEdMZW51bSBmZWF0dXJlLCBib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0RW5hYmxlRmVhdHVy
ZUluZGV4ZWQoR0xlbnVtIGZlYXR1cmUsIGJvb2wgZW5hYmxlZCwgR0x1aW50IGluZGV4KTsKICAg
ICBib29sIGdldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUpIGNvbnN0OworICAgIGJvb2wg
Z2V0RW5hYmxlRmVhdHVyZUluZGV4ZWQoR0xlbnVtIGZlYXR1cmUsIEdMdWludCBpbmRleCkgY29u
c3Q7CiAKICAgICAvLyBMaW5lIHdpZHRoIHN0YXRlIHNldHRlcgogICAgIHZvaWQgc2V0TGluZVdp
ZHRoKEdMZmxvYXQgd2lkdGgpOwpAQCAtMjYxLDcgKzI5OSw2IEBAIGNsYXNzIFN0YXRlIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAKICAgICBTYW1wbGVyICpnZXRTYW1wbGVyKEdMdWludCB0ZXh0dXJl
VW5pdCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXJzW3RleHR1cmVVbml0XS5nZXQoKTsgfQogCi0g
ICAgdXNpbmcgU2FtcGxlckJpbmRpbmdWZWN0b3IgPSBzdGQ6OnZlY3RvcjxCaW5kaW5nUG9pbnRl
cjxTYW1wbGVyPj47CiAgICAgY29uc3QgU2FtcGxlckJpbmRpbmdWZWN0b3IgJmdldFNhbXBsZXJz
KCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXJzOyB9CiAKICAgICB2b2lkIGRldGFjaFNhbXBsZXIo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgU2FtcGxlcklEIHNhbXBsZXIpOwpAQCAtMjkzLDYgKzMz
MCwxMCBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICByZXR1cm4g
bVZlcnRleEFycmF5OwogICAgIH0KIAorICAgIC8vIElmIGJvdGggYSBQcm9ncmFtIGFuZCBhIFBy
b2dyYW1QaXBlbGluZSBhcmUgYm91bmQsIHRoZSBQcm9ncmFtIHdpbGwKKyAgICAvLyBhbHdheXMg
b3ZlcnJpZGUgdGhlIFByb2dyYW1QaXBlbGluZS4KKyAgICBjb25zdCBQcm9ncmFtRXhlY3V0YWJs
ZSAqZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtRXhlY3V0YWJsZTsgfQor
CiAgICAgLy8gUHJvZ3JhbSBiaW5kaW5nIG1hbmlwdWxhdGlvbgogICAgIGFuZ2xlOjpSZXN1bHQg
c2V0UHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtICpuZXdQcm9ncmFtKTsK
IApAQCAtNDgxLDE0ICs1MjIsNiBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIHZvaWQgc2V0Q292ZXJhZ2VNb2R1bGF0aW9uKEdMZW51bSBjb21wb25lbnRzKTsKICAgICBH
TGVudW0gZ2V0Q292ZXJhZ2VNb2R1bGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUNvdmVyYWdlTW9k
dWxhdGlvbjsgfQogCi0gICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKLSAgICB2b2lkIGxv
YWRQYXRoUmVuZGVyaW5nTWF0cml4KEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICpt
YXRyaXgpOwotICAgIGNvbnN0IEdMZmxvYXQgKmdldFBhdGhSZW5kZXJpbmdNYXRyaXgoR0xlbnVt
IHdoaWNoKSBjb25zdDsKLSAgICB2b2lkIHNldFBhdGhTdGVuY2lsRnVuYyhHTGVudW0gZnVuYywg
R0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7Ci0gICAgR0xlbnVtIGdldFBhdGhTdGVuY2lsRnVuYygp
IGNvbnN0IHsgcmV0dXJuIG1QYXRoU3RlbmNpbEZ1bmM7IH0KLSAgICBHTGludCBnZXRQYXRoU3Rl
bmNpbFJlZigpIGNvbnN0IHsgcmV0dXJuIG1QYXRoU3RlbmNpbFJlZjsgfQotICAgIEdMdWludCBn
ZXRQYXRoU3RlbmNpbE1hc2soKSBjb25zdCB7IHJldHVybiBtUGF0aFN0ZW5jaWxNYXNrOyB9Ci0K
ICAgICAvLyBHTF9FWFRfc1JHQl93cml0ZV9jb250cm9sCiAgICAgdm9pZCBzZXRGcmFtZWJ1ZmZl
clNSR0IoYm9vbCBzUkdCKTsKICAgICBib29sIGdldEZyYW1lYnVmZmVyU1JHQigpIGNvbnN0IHsg
cmV0dXJuIG1GcmFtZWJ1ZmZlclNSR0I7IH0KQEAgLTQ5OCwxMyArNTMxLDEzIEBAIGNsYXNzIFN0
YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgR0x1aW50IGdldE1heFNoYWRlckNvbXBpbGVy
VGhyZWFkcygpIGNvbnN0IHsgcmV0dXJuIG1NYXhTaGFkZXJDb21waWxlclRocmVhZHM7IH0KIAog
ICAgIC8vIFN0YXRlIHF1ZXJ5IGZ1bmN0aW9ucwotICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0xlbnVt
IHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7Ci0gICAgdm9pZCBnZXRGbG9hdHYoR0xlbnVtIHBu
YW1lLCBHTGZsb2F0ICpwYXJhbXMpOwotICAgIGFuZ2xlOjpSZXN1bHQgZ2V0SW50ZWdlcnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2
b2lkIGdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpIGNvbnN0Owor
ICAgIHZvaWQgZ2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKSBjb25zdDsK
KyAgICBhbmdsZTo6UmVzdWx0IGdldEludGVnZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykgY29uc3Q7CiAgICAgdm9pZCBnZXRQb2ludGVydihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpIGNvbnN0
OwotICAgIHZvaWQgZ2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdM
aW50ICpkYXRhKTsKLSAgICB2b2lkIGdldEludGVnZXI2NGlfdihHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgsIEdMaW50NjQgKmRhdGEpOwotICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdihHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSk7CisgICAgdm9pZCBnZXRJbnRl
Z2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpIGNvbnN0Owor
ICAgIHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xp
bnQ2NCAqZGF0YSkgY29uc3Q7CisgICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKSBjb25zdDsKIAogICAgIGJvb2wgaXNSb2J1
c3RSZXNvdXJjZUluaXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbVJvYnVzdFJlc291cmNlSW5p
dDsgfQogCkBAIC01NzgsOCArNjExLDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICAgICAgRElSVFlfQklUX01VTFRJU0FNUExJTkcsCiAgICAgICAgIERJUlRZX0JJVF9T
QU1QTEVfQUxQSEFfVE9fT05FLAogICAgICAgICBESVJUWV9CSVRfQ09WRVJBR0VfTU9EVUxBVElP
TiwgIC8vIENIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMKLSAgICAgICAgRElSVFlf
QklUX1BBVEhfUkVOREVSSU5HLAotICAgICAgICBESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JHQiwg
IC8vIEdMX0VYVF9zUkdCX3dyaXRlX2NvbnRyb2wKKyAgICAgICAgRElSVFlfQklUX0ZSQU1FQlVG
RkVSX1NSR0IsICAgICAvLyBHTF9FWFRfc1JHQl93cml0ZV9jb250cm9sCiAgICAgICAgIERJUlRZ
X0JJVF9DVVJSRU5UX1ZBTFVFUywKICAgICAgICAgRElSVFlfQklUX1BST1ZPS0lOR19WRVJURVgs
CiAgICAgICAgIERJUlRZX0JJVF9JTlZBTElELApAQCAtNjUxLDcgKzY4Myw3IEBAIGNsYXNzIFN0
YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCk7CiAKICAgICBjb25zdCBJbWFnZVVuaXQgJmdldEltYWdlVW5pdChzaXplX3QgdW5pdCkg
Y29uc3QgeyByZXR1cm4gbUltYWdlVW5pdHNbdW5pdF07IH0KLSAgICBjb25zdCBBY3RpdmVUZXh0
dXJlUG9pbnRlckFycmF5ICZnZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCkgY29uc3QgeyByZXR1cm4g
bUFjdGl2ZVRleHR1cmVzQ2FjaGU7IH0KKyAgICBjb25zdCBBY3RpdmVUZXh0dXJlc0NhY2hlICZn
ZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbUFjdGl2ZVRleHR1cmVzQ2Fj
aGU7IH0KICAgICBDb21wb25lbnRUeXBlTWFzayBnZXRDdXJyZW50VmFsdWVzVHlwZU1hc2soKSBj
b25zdCB7IHJldHVybiBtQ3VycmVudFZhbHVlc1R5cGVNYXNrOyB9CiAKICAgICAvLyAib25BY3Rp
dmVUZXh0dXJlQ2hhbmdlIiBpcyBjYWxsZWQgd2hlbiBhIHRleHR1cmUgYmluZGluZyBjaGFuZ2Vz
LgpAQCAtNjg1LDcgKzcxNyw3IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAK
ICAgICBBTkdMRV9JTkxJTkUgYm9vbCB2YWxpZGF0ZVNhbXBsZXJGb3JtYXRzKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiAobVRleHR1cmVzSW5jb21wYXRpYmxlV2l0aFNhbXBsZXJzICYg
bVByb2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpKS5ub25lKCk7CisgICAgICAgIHJldHVy
biAobVRleHR1cmVzSW5jb21wYXRpYmxlV2l0aFNhbXBsZXJzICYgbUV4ZWN1dGFibGUtPmdldEFj
dGl2ZVNhbXBsZXJzTWFzaygpKS5ub25lKCk7CiAgICAgfQogCiAgICAgUHJvdm9raW5nVmVydGV4
Q29udmVudGlvbiBnZXRQcm92b2tpbmdWZXJ0ZXgoKSBjb25zdCB7IHJldHVybiBtUHJvdm9raW5n
VmVydGV4OyB9CkBAIC03MTQsNiArNzQ2LDI3IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgewogICAgICAgICByZXR1cm4gKm1TaGFkZXJQcm9ncmFtTWFuYWdlcjsKICAg
ICB9CisgICAgY29uc3QgU3luY01hbmFnZXIgJmdldFN5bmNNYW5hZ2VyRm9yQ2FwdHVyZSgpIGNv
bnN0IHsgcmV0dXJuICptU3luY01hbmFnZXI7IH0KKyAgICBjb25zdCBTYW1wbGVyTWFuYWdlciAm
Z2V0U2FtcGxlck1hbmFnZXJGb3JDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gKm1TYW1wbGVyTWFu
YWdlcjsgfQorICAgIGNvbnN0IFNhbXBsZXJCaW5kaW5nVmVjdG9yICZnZXRTYW1wbGVyQmluZGlu
Z3NGb3JDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXJzOyB9CisKKyAgICBjb25zdCBB
Y3RpdmVRdWVyeU1hcCAmZ2V0QWN0aXZlUXVlcmllc0ZvckNhcHR1cmUoKSBjb25zdCB7IHJldHVy
biBtQWN0aXZlUXVlcmllczsgfQorCisgICAgYm9vbCBoYXNDb25zdGFudEFscGhhQmxlbmRGdW5j
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAobUJsZW5kRnVuY0NvbnN0YW50QWxwaGFE
cmF3QnVmZmVycyAmIG1CbGVuZEVuYWJsZWREcmF3QnVmZmVycykuYW55KCk7CisgICAgfQorCisg
ICAgYm9vbCBoYXNTaW11bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVuZEZ1bmMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIChtQmxlbmRGdW5jQ29uc3RhbnRDb2xvckRyYXdC
dWZmZXJzICYgbUJsZW5kRW5hYmxlZERyYXdCdWZmZXJzKS5hbnkoKSAmJgorICAgICAgICAgICAg
ICAgaGFzQ29uc3RhbnRBbHBoYUJsZW5kRnVuYygpOworICAgIH0KKworICAgIGJvb2wgbm9TaW11
bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVuZEZ1bmMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1Ob1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVu
YzsKKyAgICB9CiAKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29udGV4dDsKQEAgLTcy
Niw2ICs3NzksOSBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmUgKnRleHR1cmUpOwogICAgIFRleHR1cmUg
KmdldFRleHR1cmVGb3JBY3RpdmVTYW1wbGVyKFRleHR1cmVUeXBlIHR5cGUsIHNpemVfdCBpbmRl
eCk7CiAKKyAgICBib29sIGhhc0NvbnN0YW50Q29sb3IoR0xlbnVtIHNvdXJjZVJHQiwgR0xlbnVt
IGRlc3RSR0IpIGNvbnN0OworICAgIGJvb2wgaGFzQ29uc3RhbnRBbHBoYShHTGVudW0gc291cmNl
UkdCLCBHTGVudW0gZGVzdFJHQikgY29uc3Q7CisKICAgICAvLyBGdW5jdGlvbnMgdG8gc3luY2hy
b25pemUgZGlydHkgc3RhdGVzCiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jVGV4dHVyZXNJbml0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQpOwogICAgIGFuZ2xlOjpSZXN1bHQgc3luY0ltYWdlc0luaXQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCk7CkBAIC03ODgsNyArODQ0LDYgQEAgY2xhc3MgU3RhdGUg
OiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBSZW5kZXJidWZmZXJNYW5hZ2VyICptUmVuZGVyYnVm
ZmVyTWFuYWdlcjsKICAgICBTYW1wbGVyTWFuYWdlciAqbVNhbXBsZXJNYW5hZ2VyOwogICAgIFN5
bmNNYW5hZ2VyICptU3luY01hbmFnZXI7Ci0gICAgUGF0aE1hbmFnZXIgKm1QYXRoTWFuYWdlcjsK
ICAgICBGcmFtZWJ1ZmZlck1hbmFnZXIgKm1GcmFtZWJ1ZmZlck1hbmFnZXI7CiAgICAgUHJvZ3Jh
bVBpcGVsaW5lTWFuYWdlciAqbVByb2dyYW1QaXBlbGluZU1hbmFnZXI7CiAgICAgTWVtb3J5T2Jq
ZWN0TWFuYWdlciAqbU1lbW9yeU9iamVjdE1hbmFnZXI7CkBAIC04MDYsOCArODYxLDkgQEAgY2xh
c3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBib29sIG1TY2lzc29yVGVzdDsKICAg
ICBSZWN0YW5nbGUgbVNjaXNzb3I7CiAKLSAgICBCbGVuZFN0YXRlIG1CbGVuZDsKKyAgICBCbGVu
ZFN0YXRlQXJyYXkgbUJsZW5kU3RhdGVBcnJheTsKICAgICBDb2xvckYgbUJsZW5kQ29sb3I7Cisg
ICAgYm9vbCBtU2FtcGxlQWxwaGFUb0NvdmVyYWdlOwogICAgIGJvb2wgbVNhbXBsZUNvdmVyYWdl
OwogICAgIEdMZmxvYXQgbVNhbXBsZUNvdmVyYWdlVmFsdWU7CiAgICAgYm9vbCBtU2FtcGxlQ292
ZXJhZ2VJbnZlcnQ7CkBAIC04MzYsNiArODkyLDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZmZXI+IG1SZW5kZXJidWZmZXI7
CiAgICAgUHJvZ3JhbSAqbVByb2dyYW07CiAgICAgQmluZGluZ1BvaW50ZXI8UHJvZ3JhbVBpcGVs
aW5lPiBtUHJvZ3JhbVBpcGVsaW5lOworICAgIFByb2dyYW1FeGVjdXRhYmxlICptRXhlY3V0YWJs
ZTsKIAogICAgIC8vIEdMX0FOR0xFX3Byb3Zva2luZ192ZXJ0ZXgKICAgICBQcm92b2tpbmdWZXJ0
ZXhDb252ZW50aW9uIG1Qcm92b2tpbmdWZXJ0ZXg7CkBAIC04NjQsNyArOTIxLDcgQEAgY2xhc3Mg
U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAvLyBBIGNhY2hlIG9mIGNvbXBsZXRlIHRl
eHR1cmVzLiBudWxscHRyIGluZGljYXRlcyB1bmJvdW5kIG9yIGluY29tcGxldGUuCiAgICAgLy8g
RG9uJ3QgdXNlIEJpbmRpbmdQb2ludGVyIGJlY2F1c2UgdGhpcyBjYWNoZSBpcyBvbmx5IHZhbGlk
IHdpdGhpbiBhIGRyYXcgY2FsbC4KICAgICAvLyBBbHNvIHN0b3JlcyBhIG5vdGlmaWNhdGlvbiBj
aGFubmVsIHRvIHRoZSB0ZXh0dXJlIGl0c2VsZiB0byBoYW5kbGUgdGV4dHVyZSBjaGFuZ2UgZXZl
bnRzLgotICAgIEFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgbUFjdGl2ZVRleHR1cmVzQ2FjaGU7
CisgICAgQWN0aXZlVGV4dHVyZXNDYWNoZSBtQWN0aXZlVGV4dHVyZXNDYWNoZTsKICAgICBzdGQ6
OnZlY3RvcjxhbmdsZTo6T2JzZXJ2ZXJCaW5kaW5nPiBtQ29tcGxldGVUZXh0dXJlQmluZGluZ3M7
CiAKICAgICBBY3RpdmVUZXh0dXJlTWFzayBtVGV4dHVyZXNJbmNvbXBhdGlibGVXaXRoU2FtcGxl
cnM7CkBAIC04NzQsNyArOTMxLDYgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIG1lcmdlIHRoZSBpbWFnZSBhbmQgb2JzZXJ2ZXIg
YmluZGluZy4gU2FtZSBmb3IgdGV4dHVyZXMuCiAgICAgc3RkOjp2ZWN0b3I8SW1hZ2VVbml0PiBt
SW1hZ2VVbml0czsKIAotICAgIHVzaW5nIEFjdGl2ZVF1ZXJ5TWFwID0gYW5nbGU6OlBhY2tlZEVu
dW1NYXA8UXVlcnlUeXBlLCBCaW5kaW5nUG9pbnRlcjxRdWVyeT4+OwogICAgIEFjdGl2ZVF1ZXJ5
TWFwIG1BY3RpdmVRdWVyaWVzOwogCiAgICAgLy8gU3RvcmVzIHRoZSBjdXJyZW50bHkgYm91bmQg
YnVmZmVyIGZvciBlYWNoIGJpbmRpbmcgcG9pbnQuIEl0IGhhcyBhbiBlbnRyeSBmb3IgdGhlIGVs
ZW1lbnQKQEAgLTkwMSwxMyArOTU3LDYgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKIAogICAgIEdMZW51bSBtQ292ZXJhZ2VNb2R1bGF0aW9uOwogCi0gICAgLy8gQ0hST01JVU1f
cGF0aF9yZW5kZXJpbmcKLSAgICBHTGZsb2F0IG1QYXRoTWF0cml4TVZbMTZdOwotICAgIEdMZmxv
YXQgbVBhdGhNYXRyaXhQcm9qWzE2XTsKLSAgICBHTGVudW0gbVBhdGhTdGVuY2lsRnVuYzsKLSAg
ICBHTGludCBtUGF0aFN0ZW5jaWxSZWY7Ci0gICAgR0x1aW50IG1QYXRoU3RlbmNpbE1hc2s7Ci0K
ICAgICAvLyBHTF9FWFRfc1JHQl93cml0ZV9jb250cm9sCiAgICAgYm9vbCBtRnJhbWVidWZmZXJT
UkdCOwogCkBAIC05MzUsNiArOTg0LDEyIEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAKICAgICAvLyBUaGUgT3ZlcmxheSBvYmplY3QsIHVzZWQgYnkgdGhlIGJhY2tlbmQgdG8g
cmVuZGVyIHRoZSBvdmVybGF5LgogICAgIGNvbnN0IE92ZXJsYXlUeXBlICptT3ZlcmxheTsKKwor
ICAgIC8vIE9FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZAorICAgIERyYXdCdWZmZXJNYXNrIG1CbGVu
ZEVuYWJsZWREcmF3QnVmZmVyczsKKyAgICBEcmF3QnVmZmVyTWFzayBtQmxlbmRGdW5jQ29uc3Rh
bnRBbHBoYURyYXdCdWZmZXJzOworICAgIERyYXdCdWZmZXJNYXNrIG1CbGVuZEZ1bmNDb25zdGFu
dENvbG9yRHJhd0J1ZmZlcnM7CisgICAgYm9vbCBtTm9TaW11bHRhbmVvdXNDb25zdGFudENvbG9y
QW5kQWxwaGFCbGVuZEZ1bmM7CiB9OwogCiBBTkdMRV9JTkxJTkUgYW5nbGU6OlJlc3VsdCBTdGF0
ZTo6c3luY0RpcnR5T2JqZWN0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuY3BwCmluZGV4IDYwODdiMDQ0
ODcyZTgyMzZjYzFlYTFiNTc1Y2RmMWEwNzBiODJiODIuLmEyYTlmM2M4NTFiODMxNzI0MzQzYTI4
ZDg0ZmVmZTM2NTM3YTcyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVGV4dHVyZS5jcHAKQEAgLTk5LDcgKzk5LDggQEAgVGV4dHVyZVN0YXRlOjpUZXh0
dXJlU3RhdGUoVGV4dHVyZVR5cGUgdHlwZSkKICAgICAgIG1CYXNlTGV2ZWwoMCksCiAgICAgICBt
TWF4TGV2ZWwoMTAwMCksCiAgICAgICBtRGVwdGhTdGVuY2lsVGV4dHVyZU1vZGUoR0xfREVQVEhf
Q09NUE9ORU5UKSwKLSAgICAgIG1Cb3VuZEFzSW1hZ2VUZXh0dXJlKGZhbHNlKSwKKyAgICAgIG1T
YW1wbGVyQmluZGluZ0NvdW50KDApLAorICAgICAgbUltYWdlQmluZGluZ0NvdW50KDApLAogICAg
ICAgbUltbXV0YWJsZUZvcm1hdChmYWxzZSksCiAgICAgICBtSW1tdXRhYmxlTGV2ZWxzKDApLAog
ICAgICAgbVVzYWdlKEdMX05PTkUpLApAQCAtMjcwLDcgKzI3MSw3IEBAIFNhbXBsZXJGb3JtYXQg
VGV4dHVyZVN0YXRlOjpjb21wdXRlUmVxdWlyZWRTYW1wbGVyRm9ybWF0KGNvbnN0IFNhbXBsZXJT
dGF0ZSAmc2FtCiB9CiAKIGJvb2wgVGV4dHVyZVN0YXRlOjpjb21wdXRlU2FtcGxlckNvbXBsZXRl
bmVzcyhjb25zdCBTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAmZGF0YSkgY29uc3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAm
c3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKG1CYXNlTGV2ZWwgPiBtTWF4TGV2ZWwpCiAgICAgewpA
QCAtMjk3LDEyICsyOTgsMTMgQEAgYm9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29t
cGxldGVuZXNzKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLAogICAgIC8vIGZpbHRl
ciBzdGF0ZSBvZiBtdWx0aXNhbXBsZSB0ZXh0dXJlIGlzIGlnbm9yZWQoMTEuMS4zLjMpLiBTbyBp
dCBzaG91bGRuJ3QgYmUganVkZ2VkIGFzCiAgICAgLy8gaW5jb21wbGV0ZSB0ZXh0dXJlLiBTbywg
d2UgaWdub3JlIGZpbHRlcmluZyBmb3IgbXVsdGlzYW1wbGUgdGV4dHVyZSBjb21wbGV0ZW5lc3Mg
aGVyZS4KICAgICBpZiAoIUlzTXVsdGlzYW1wbGVkKG1UeXBlKSAmJgotICAgICAgICAhYmFzZUlt
YWdlRGVzYy5mb3JtYXQuaW5mby0+ZmlsdGVyU3VwcG9ydChkYXRhLmdldENsaWVudFZlcnNpb24o
KSwgZGF0YS5nZXRFeHRlbnNpb25zKCkpICYmCisgICAgICAgICFiYXNlSW1hZ2VEZXNjLmZvcm1h
dC5pbmZvLT5maWx0ZXJTdXBwb3J0KHN0YXRlLmdldENsaWVudFZlcnNpb24oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0RXh0ZW5z
aW9ucygpKSAmJgogICAgICAgICAhSXNQb2ludFNhbXBsZWQoc2FtcGxlclN0YXRlKSkKICAgICB7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgYm9vbCBucG90U3VwcG9ydCA9IGRh
dGEuZ2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UT0VTIHx8IGRhdGEuZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPj0gMzsKKyAgICBib29sIG5wb3RTdXBwb3J0ID0gc3RhdGUuZ2V0RXh0ZW5zaW9u
cygpLnRleHR1cmVOUE9UT0VTIHx8IHN0YXRlLmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDM7
CiAgICAgaWYgKCFucG90U3VwcG9ydCkKICAgICB7CiAgICAgICAgIGlmICgoc2FtcGxlclN0YXRl
LmdldFdyYXBTKCkgIT0gR0xfQ0xBTVBfVE9fRURHRSAmJgpAQCAtMzQyLDE1ICszNDQsMjAgQEAg
Ym9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0IFNhbXBs
ZXJTdGF0ZSAmc2FtcGxlclN0YXRlLAogICAgIC8vIHRvIHRoYXQgdW5pdCwgdGhlIGJlaGF2aW9y
IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhcyBpZiB0aGUgdGV4dHVyZSB3ZXJlIGluY29tcGxl
dGUuIEZvcgogICAgIC8vIGV4YW1wbGUsIGlmIFRFWFRVUkVfV1JBUF9TIG9yIFRFWFRVUkVfV1JB
UF9UIGlzIHNldCB0byBhbnl0aGluZyBidXQgQ0xBTVBfVE9fRURHRSBvbiB0aGUKICAgICAvLyBz
YW1wbGVyIG9iamVjdCBib3VuZCB0byBhIHRleHR1cmUgdW5pdCBhbmQgdGhlIHRleHR1cmUgYm91
bmQgdG8gdGhhdCB1bml0IGlzIGFuIGV4dGVybmFsCi0gICAgLy8gdGV4dHVyZSwgdGhlIHRleHR1
cmUgd2lsbCBiZSBjb25zaWRlcmVkIGluY29tcGxldGUuCi0gICAgLy8gU2FtcGxlciBvYmplY3Qg
c3RhdGUgd2hpY2ggZG9lcyBub3QgYWZmZWN0IHNhbXBsaW5nIGZvciB0aGUgdHlwZSBvZiB0ZXh0
dXJlIGJvdW5kIHRvIGEKLSAgICAvLyB0ZXh0dXJlIHVuaXQsIHN1Y2ggYXMgVEVYVFVSRV9XUkFQ
X1IgZm9yIGFuIGV4dGVybmFsIHRleHR1cmUsIGRvZXMgbm90IGFmZmVjdCBjb21wbGV0ZW5lc3Mu
CisgICAgLy8gdGV4dHVyZSBhbmQgRVhUX0VHTF9pbWFnZV9leHRlcm5hbF93cmFwX21vZGVzIGlz
IG5vdCBlbmFibGVkLCB0aGUgdGV4dHVyZSB3aWxsIGJlIGNvbnNpZGVyZWQKKyAgICAvLyBpbmNv
bXBsZXRlLgorICAgIC8vIFNhbXBsZXIgb2JqZWN0IHN0YXRlIHdoaWNoIGRvZXMgbm90IGFmZmVj
dCBzYW1wbGluZyBmb3IgdGhlIHR5cGUgb2YgdGV4dHVyZSBib3VuZAorICAgIC8vIHRvIGEgdGV4
dHVyZSB1bml0LCBzdWNoIGFzIFRFWFRVUkVfV1JBUF9SIGZvciBhbiBleHRlcm5hbCB0ZXh0dXJl
LCBkb2VzIG5vdCBhZmZlY3QKKyAgICAvLyBjb21wbGV0ZW5lc3MuCiAgICAgaWYgKG1UeXBlID09
IFRleHR1cmVUeXBlOjpFeHRlcm5hbCkKICAgICB7Ci0gICAgICAgIGlmIChzYW1wbGVyU3RhdGUu
Z2V0V3JhcFMoKSAhPSBHTF9DTEFNUF9UT19FREdFIHx8Ci0gICAgICAgICAgICBzYW1wbGVyU3Rh
dGUuZ2V0V3JhcFQoKSAhPSBHTF9DTEFNUF9UT19FREdFKQorICAgICAgICBpZiAoIXN0YXRlLmdl
dEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4dGVybmFsV3JhcE1vZGVzRVhUKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoc2FtcGxlclN0YXRlLmdl
dFdyYXBTKCkgIT0gR0xfQ0xBTVBfVE9fRURHRSB8fAorICAgICAgICAgICAgICAgIHNhbXBsZXJT
dGF0ZS5nZXRXcmFwVCgpICE9IEdMX0NMQU1QX1RPX0VER0UpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHNhbXBsZXJTdGF0ZS5nZXRNaW5GaWx0ZXIoKSAhPSBHTF9MSU5FQVIgJiYgc2Ft
cGxlclN0YXRlLmdldE1pbkZpbHRlcigpICE9IEdMX05FQVJFU1QpCkBAIC0zNjUsNyArMzcyLDcg
QEAgYm9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0IFNh
bXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLAogICAgIC8vIE1PREUgaXMgTk9ORSwgYW5kIGVpdGhl
ciB0aGUgbWFnbmlmaWNhdGlvbiBmaWx0ZXIgaXMgbm90IE5FQVJFU1Qgb3IgdGhlIG1pbmktCiAg
ICAgLy8gZmljYXRpb24gZmlsdGVyIGlzIG5laXRoZXIgTkVBUkVTVCBub3IgTkVBUkVTVF9NSVBN
QVBfTkVBUkVTVC4KICAgICBpZiAoIUlzTXVsdGlzYW1wbGVkKG1UeXBlKSAmJiBiYXNlSW1hZ2VE
ZXNjLmZvcm1hdC5pbmZvLT5kZXB0aEJpdHMgPiAwICYmCi0gICAgICAgIGRhdGEuZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPj0gMykKKyAgICAgICAgc3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPj0gMykKICAgICB7CiAgICAgICAgIC8vIE5vdGU6IHdlIHJlc3RyaWN0IHRoaXMgdmFsaWRh
dGlvbiB0byBzaXplZCB0eXBlcy4gRm9yIHRoZSBPRVNfZGVwdGhfdGV4dHVyZXMKICAgICAgICAg
Ly8gZXh0ZW5zaW9uLCBkdWUgdG8gc29tZSB1bmRlcnNwZWNpZmljYXRpb24gcHJvYmxlbXMsIHdl
IG11c3QgYWxsb3cgbGluZWFyIGZpbHRlcmluZwpAQCAtOTI5LDYgKzkzNiwxMiBAQCBjb25zdCBU
ZXh0dXJlU3RhdGUgJlRleHR1cmU6OmdldFRleHR1cmVTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1TdGF0ZTsKIH0KIAorY29uc3QgZ2w6OkV4dGVudHMgJlRleHR1cmU6OmdldEV4dGVudHMoVGV4
dHVyZVRhcmdldCB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKK3sKKyAgICBBU1NFUlQoVGV4
dHVyZVRhcmdldFRvVHlwZSh0YXJnZXQpID09IG1TdGF0ZS5tVHlwZSk7CisgICAgcmV0dXJuIG1T
dGF0ZS5nZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuc2l6ZTsKK30KKwogc2l6ZV90IFRleHR1
cmU6OmdldFdpZHRoKFRleHR1cmVUYXJnZXQgdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKFRleHR1cmVUYXJnZXRUb1R5cGUodGFyZ2V0KSA9PSBtU3RhdGUubVR5cGUp
OwpAQCAtMTkzNiwxMyArMTk0OSwxMyBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmU6OmdldFRleElt
YWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwaXhlbHMpOwogfQogCi12b2lkIFRleHR1cmU6Om9uQmluZEltYWdlVGV4dHVyZSgpCit2
b2lkIFRleHR1cmU6Om9uQmluZEFzSW1hZ2VUZXh0dXJlKCkKIHsKLSAgICBpZiAoIW1TdGF0ZS5t
Qm91bmRBc0ltYWdlVGV4dHVyZSkKKyAgICBpZiAoIW1TdGF0ZS5pc0JvdW5kQXNJbWFnZVRleHR1
cmUoKSkKICAgICB7CiAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CT1VORF9BU19J
TUFHRSk7Ci0gICAgICAgIG1TdGF0ZS5tQm91bmRBc0ltYWdlVGV4dHVyZSA9IHRydWU7CiAgICAg
fQorICAgIG1TdGF0ZS5tSW1hZ2VCaW5kaW5nQ291bnQrKzsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IGdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4
dHVyZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaApp
bmRleCBjNDQzZjZhMjBlY2U3MjQzMDdmMDdhYmJlOGZkYjFiZTc4NzM3Yjc3Li5mNWFlYmYxNWNj
YmVhMTQ0N2MzZDA4NTZiNzMwOTQ3N2QwYWUzZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBjbGFzcyBU
ZXh0dXJlU3RhdGUgZmluYWwgOiBwcml2YXRlIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEdMZW51
bSBnZXRVc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1Vc2FnZTsgfQogICAgIEdMZW51bSBnZXREZXB0
aFN0ZW5jaWxUZXh0dXJlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1EZXB0aFN0ZW5jaWxUZXh0dXJl
TW9kZTsgfQogICAgIGJvb2wgaXNTdGVuY2lsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1EZXB0aFN0
ZW5jaWxUZXh0dXJlTW9kZSA9PSBHTF9TVEVOQ0lMX0lOREVYOyB9CisgICAgYm9vbCBpc0JvdW5k
QXNTYW1wbGVyVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVyQmluZGluZ0NvdW50ID4g
MDsgfQorICAgIGJvb2wgaXNCb3VuZEFzSW1hZ2VUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbUlt
YWdlQmluZGluZ0NvdW50ID4gMDsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgZGVzYyBvZiB0aGUg
YmFzZSBsZXZlbC4gT25seSB2YWxpZCBmb3IgY3ViZS1jb21wbGV0ZS9taXAtY29tcGxldGUgdGV4
dHVyZXMuCiAgICAgY29uc3QgSW1hZ2VEZXNjICZnZXRCYXNlTGV2ZWxEZXNjKCkgY29uc3Q7CkBA
IC0xNTcsNyArMTU5LDcgQEAgY2xhc3MgVGV4dHVyZVN0YXRlIGZpbmFsIDogcHJpdmF0ZSBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICBmcmllbmQgY2xhc3Mgcng6OlRleHR1cmVHTDsKICAgICBmcmll
bmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHR1cmVTdGF0ZSAmYSwgY29uc3QgVGV4dHVyZVN0
YXRlICZiKTsKIAotICAgIGJvb2wgY29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2Ft
cGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIGNvbnN0IFN0YXRlICZkYXRhKSBjb25zdDsKKyAgICBi
b29sIGNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxl
clN0YXRlLCBjb25zdCBTdGF0ZSAmc3RhdGUpIGNvbnN0OwogICAgIGJvb2wgY29tcHV0ZU1pcG1h
cENvbXBsZXRlbmVzcygpIGNvbnN0OwogICAgIGJvb2wgY29tcHV0ZUxldmVsQ29tcGxldGVuZXNz
KFRleHR1cmVUYXJnZXQgdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwogICAgIFNhbXBsZXJG
b3JtYXQgY29tcHV0ZVJlcXVpcmVkU2FtcGxlckZvcm1hdChjb25zdCBTYW1wbGVyU3RhdGUgJnNh
bXBsZXJTdGF0ZSkgY29uc3Q7CkBAIC0xOTAsNyArMTkyLDggQEAgY2xhc3MgVGV4dHVyZVN0YXRl
IGZpbmFsIDogcHJpdmF0ZSBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIEdMZW51bSBtRGVwdGhT
dGVuY2lsVGV4dHVyZU1vZGU7CiAKLSAgICBib29sIG1Cb3VuZEFzSW1hZ2VUZXh0dXJlOworICAg
IHVpbnQzMl90IG1TYW1wbGVyQmluZGluZ0NvdW50OworICAgIHVpbnQzMl90IG1JbWFnZUJpbmRp
bmdDb3VudDsKICAgICBib29sIG1JbW11dGFibGVGb3JtYXQ7CiAgICAgR0x1aW50IG1JbW11dGFi
bGVMZXZlbHM7CiAKQEAgLTI5OSw2ICszMDIsNyBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50T2JqZWN0PFRleHR1cmVJRD4sCiAKICAgICBjb25zdCBUZXh0dXJlU3RhdGUg
JmdldFRleHR1cmVTdGF0ZSgpIGNvbnN0OwogCisgICAgY29uc3QgZ2w6OkV4dGVudHMgJmdldEV4
dGVudHMoVGV4dHVyZVRhcmdldCB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgc2l6
ZV90IGdldFdpZHRoKFRleHR1cmVUYXJnZXQgdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0Owog
ICAgIHNpemVfdCBnZXRIZWlnaHQoVGV4dHVyZVRhcmdldCB0YXJnZXQsIHNpemVfdCBsZXZlbCkg
Y29uc3Q7CiAgICAgc2l6ZV90IGdldERlcHRoKFRleHR1cmVUYXJnZXQgdGFyZ2V0LCBzaXplX3Qg
bGV2ZWwpIGNvbnN0OwpAQCAtNDEzLDcgKzQxNywzNCBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDog
cHVibGljIFJlZkNvdW50T2JqZWN0PFRleHR1cmVJRD4sCiAgICAgYW5nbGU6OlJlc3VsdCBzZXRF
R0xJbWFnZVRhcmdldChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlLCBlZ2w6Oklt
YWdlICppbWFnZVRhcmdldCk7CiAKICAgICBhbmdsZTo6UmVzdWx0IGdlbmVyYXRlTWlwbWFwKENv
bnRleHQgKmNvbnRleHQpOwotICAgIHZvaWQgb25CaW5kSW1hZ2VUZXh0dXJlKCk7CisKKyAgICB2
b2lkIG9uQmluZEFzSW1hZ2VUZXh0dXJlKCk7CisKKyAgICBBTkdMRV9JTkxJTkUgdm9pZCBvblVu
YmluZEFzSW1hZ2VUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtU3RhdGUuaXNCb3Vu
ZEFzSW1hZ2VUZXh0dXJlKCkpOworICAgICAgICBtU3RhdGUubUltYWdlQmluZGluZ0NvdW50LS07
CisgICAgfQorCisgICAgQU5HTEVfSU5MSU5FIHZvaWQgb25CaW5kQXNTYW1wbGVyVGV4dHVyZSgp
CisgICAgeworICAgICAgICBBU1NFUlQobVN0YXRlLm1TYW1wbGVyQmluZGluZ0NvdW50IDwgc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgbVN0YXRlLm1TYW1w
bGVyQmluZGluZ0NvdW50Kys7CisgICAgICAgIGlmIChtU3RhdGUubVNhbXBsZXJCaW5kaW5nQ291
bnQgPT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgb25TdGF0ZUNoYW5nZShhbmdsZTo6U3Vi
amVjdE1lc3NhZ2U6OkJpbmRpbmdDaGFuZ2VkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFO
R0xFX0lOTElORSB2b2lkIG9uVW5iaW5kQXNTYW1wbGVyVGV4dHVyZSgpCisgICAgeworICAgICAg
ICBBU1NFUlQobVN0YXRlLmlzQm91bmRBc1NhbXBsZXJUZXh0dXJlKCkpOworICAgICAgICBtU3Rh
dGUubVNhbXBsZXJCaW5kaW5nQ291bnQtLTsKKyAgICAgICAgaWYgKG1TdGF0ZS5tU2FtcGxlckJp
bmRpbmdDb3VudCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBvblN0YXRlQ2hhbmdlKGFu
Z2xlOjpTdWJqZWN0TWVzc2FnZTo6QmluZGluZ0NoYW5nZWQpOworICAgICAgICB9CisgICAgfQog
CiAgICAgZWdsOjpTdXJmYWNlICpnZXRCb3VuZFN1cmZhY2UoKSBjb25zdDsKICAgICBlZ2w6OlN0
cmVhbSAqZ2V0Qm91bmRTdHJlYW0oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwCmluZGV4IDdm
NWJhMzM1NDYwZDNlZDA4YWM5YjFkNzZiZWVhZWQxNzFlOTY2OTEuLmNkZGMyODlmNDE0OTZkODhk
MjlhYzEyNzVmMzJkZWQwYzk3Y2I4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmNwcApAQCAtMzI2LDQg
KzMyNiw5IEBAIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6Om9uQmluZGluZ0NoYW5nZWQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgYm9vbCBib3VuZCkKICAgICAgICAgfQogICAgIH0KIH0KKworY29u
c3Qgc3RkOjp2ZWN0b3I8T2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPj4gJlRyYW5zZm9ybUZl
ZWRiYWNrOjpnZXRJbmRleGVkQnVmZmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5t
SW5kZXhlZEJ1ZmZlcnM7Cit9CiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgKaW5k
ZXggYTY0NjQyNzQ0OWI3NjhmMWRkMzgyOWFmZWEzNzk4M2U0YjgwYzI3Zi4uOWI2ZjhhMjQ2ZDNm
YzUzODZmMTE0ZjVmMTZhMjViNjg0NzIzYWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgKQEAgLTk0LDYg
Kzk0LDcgQEAgY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2sgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRP
YmplY3Q8VHJhbnNmb3JtRmVlZGJhY2tJRD4sIHB1YmwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplKTsKICAgICBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRl
cjxCdWZmZXI+ICZnZXRJbmRleGVkQnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3Q7CiAgICAgc2l6
ZV90IGdldEluZGV4ZWRCdWZmZXJDb3VudCgpIGNvbnN0OworICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4+ICZnZXRJbmRleGVkQnVmZmVycygpIGNvbnN0
OwogCiAgICAgR0xzaXplaXB0ciBnZXRWZXJ0aWNlc0RyYXduKCkgY29uc3QgeyByZXR1cm4gbVN0
YXRlLmdldFZlcnRpY2VzRHJhd24oKTsgfQogICAgIEdMc2l6ZWlwdHIgZ2V0UHJpbWl0aXZlc0Ry
YXduKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldFByaW1pdGl2ZXNEcmF3bigpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tp
bmcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNr
aW5nLmNwcAppbmRleCA0YmQ2NzA2MzgyNzExYjkyNTU0ZDUwNGQ3NmI3ZTJhMzBjYjg0NGU4Li40
OWZlN2MyNWVlNDA1NTA5MDAyZjNjNTg4OGExMDM3YmFhYjdmMWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5jcHAK
QEAgLTI4LDQ3ICsyOCw2NSBAQCBib29sIENvbXBhcmVQYWNrZWRWYXJ5aW5nKGNvbnN0IFBhY2tl
ZFZhcnlpbmcgJngsIGNvbnN0IFBhY2tlZFZhcnlpbmcgJnkpCiAgICAgLy8gbm9uLWFycmF5IHNo
YWRlciB2YXJpYWJsZSAndngnIG9yICd2eScgZm9yIGFjdHVhbCBjb21wYXJpc29uIGluc3RlYWQu
CiAgICAgc2g6OlNoYWRlclZhcmlhYmxlIHZ4LCB2eTsKICAgICBjb25zdCBzaDo6U2hhZGVyVmFy
aWFibGUgKnB4LCAqcHk7CisKKyAgICBweCA9ICZ4LnZhcnlpbmcoKTsKKyAgICBweSA9ICZ5LnZh
cnlpbmcoKTsKKwogICAgIGlmICh4LmlzQXJyYXlFbGVtZW50KCkpCiAgICAgewotICAgICAgICB2
eCA9ICp4LnZhcnlpbmc7CisgICAgICAgIHZ4ID0gKnB4OwogICAgICAgICB2eC5hcnJheVNpemVz
LmNsZWFyKCk7CiAgICAgICAgIHB4ID0gJnZ4OwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBweCA9IHgudmFyeWluZzsKLSAgICB9CiAKICAgICBpZiAoeS5pc0FycmF5RWxlbWVudCgp
KQogICAgIHsKLSAgICAgICAgdnkgPSAqeS52YXJ5aW5nOworICAgICAgICB2eSA9ICpweTsKICAg
ICAgICAgdnkuYXJyYXlTaXplcy5jbGVhcigpOwogICAgICAgICBweSA9ICZ2eTsKICAgICB9Ci0g
ICAgZWxzZQotICAgIHsKLSAgICAgICAgcHkgPSB5LnZhcnlpbmc7Ci0gICAgfQogCiAgICAgcmV0
dXJuIGdsOjpDb21wYXJlU2hhZGVyVmFyKCpweCwgKnB5KTsKIH0KIAogfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBWYXJ5aW5nSW5TaGFkZXJSZWYKK1Zh
cnlpbmdJblNoYWRlclJlZjo6VmFyeWluZ0luU2hhZGVyUmVmKFNoYWRlclR5cGUgc3RhZ2VJbiwg
Y29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXJ5aW5nSW4pCisgICAgOiB2YXJ5aW5nKHZhcnlp
bmdJbiksIHN0YWdlKHN0YWdlSW4pCit7fQorCitWYXJ5aW5nSW5TaGFkZXJSZWY6On5WYXJ5aW5n
SW5TaGFkZXJSZWYoKSA9IGRlZmF1bHQ7CisKK1ZhcnlpbmdJblNoYWRlclJlZjo6VmFyeWluZ0lu
U2hhZGVyUmVmKFZhcnlpbmdJblNoYWRlclJlZiAmJm90aGVyKQoreworICAgICp0aGlzID0gc3Rk
Ojptb3ZlKG90aGVyKTsKK30KKworVmFyeWluZ0luU2hhZGVyUmVmICZWYXJ5aW5nSW5TaGFkZXJS
ZWY6Om9wZXJhdG9yPShWYXJ5aW5nSW5TaGFkZXJSZWYgJiZvdGhlcikKK3sKKyAgICBzdGQ6OnN3
YXAodmFyeWluZywgb3RoZXIudmFyeWluZyk7CisgICAgc3RkOjpzd2FwKHN0YWdlLCBvdGhlci5z
dGFnZSk7CisgICAgc3RkOjpzd2FwKHBhcmVudFN0cnVjdE5hbWUsIG90aGVyLnBhcmVudFN0cnVj
dE5hbWUpOworICAgIHN0ZDo6c3dhcChwYXJlbnRTdHJ1Y3RNYXBwZWROYW1lLCBvdGhlci5wYXJl
bnRTdHJ1Y3RNYXBwZWROYW1lKTsKKworICAgIHJldHVybiAqdGhpczsKK30KKwogLy8gSW1wbGVt
ZW50YXRpb24gb2YgUGFja2VkVmFyeWluZwotUGFja2VkVmFyeWluZzo6UGFja2VkVmFyeWluZyhj
b25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmdJbiwKK1BhY2tlZFZhcnlpbmc6OlBhY2tl
ZFZhcnlpbmcoVmFyeWluZ0luU2hhZGVyUmVmICYmZnJvbnRWYXJ5aW5nSW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhcnlpbmdJblNoYWRlclJlZiAmJmJhY2tWYXJ5aW5nSW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpJbnRlcnBvbGF0aW9uVHlwZSBpbnRlcnBv
bGF0aW9uSW4pCi0gICAgOiBQYWNrZWRWYXJ5aW5nKHZhcnlpbmdJbiwgaW50ZXJwb2xhdGlvbklu
LCAiIiwgIiIsIGZhbHNlKQorICAgIDogUGFja2VkVmFyeWluZyhzdGQ6Om1vdmUoZnJvbnRWYXJ5
aW5nSW4pLCBzdGQ6Om1vdmUoYmFja1ZhcnlpbmdJbiksIGludGVycG9sYXRpb25JbiwgMCkKIHt9
Ci1QYWNrZWRWYXJ5aW5nOjpQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAm
dmFyeWluZ0luLAorCitQYWNrZWRWYXJ5aW5nOjpQYWNrZWRWYXJ5aW5nKFZhcnlpbmdJblNoYWRl
clJlZiAmJmZyb250VmFyeWluZ0luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJ5
aW5nSW5TaGFkZXJSZWYgJiZiYWNrVmFyeWluZ0luLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbkluLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcGFyZW50U3RydWN0TmFtZUluLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcGFyZW50U3Ry
dWN0TWFwcGVkTmFtZUluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmll
bGRJbmRleEluKQotICAgIDogdmFyeWluZygmdmFyeWluZ0luKSwKKyAgICA6IGZyb250VmFyeWlu
ZyhzdGQ6Om1vdmUoZnJvbnRWYXJ5aW5nSW4pKSwKKyAgICAgIGJhY2tWYXJ5aW5nKHN0ZDo6bW92
ZShiYWNrVmFyeWluZ0luKSksCiAgICAgICBpbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25Jbiks
Ci0gICAgICBwYXJlbnRTdHJ1Y3ROYW1lKHBhcmVudFN0cnVjdE5hbWVJbiksCi0gICAgICBwYXJl
bnRTdHJ1Y3RNYXBwZWROYW1lKHBhcmVudFN0cnVjdE1hcHBlZE5hbWVJbiksCiAgICAgICBhcnJh
eUluZGV4KEdMX0lOVkFMSURfSU5ERVgpLAogICAgICAgZmllbGRJbmRleChmaWVsZEluZGV4SW4p
CiB7fQpAQCAtNzYsMTcgKzk0LDE3IEBAIFBhY2tlZFZhcnlpbmc6OlBhY2tlZFZhcnlpbmcoY29u
c3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nSW4sCiBQYWNrZWRWYXJ5aW5nOjp+UGFja2Vk
VmFyeWluZygpID0gZGVmYXVsdDsKIAogUGFja2VkVmFyeWluZzo6UGFja2VkVmFyeWluZyhQYWNr
ZWRWYXJ5aW5nICYmb3RoZXIpCi0gICAgOiBQYWNrZWRWYXJ5aW5nKCpvdGhlci52YXJ5aW5nLCBv
dGhlci5pbnRlcnBvbGF0aW9uKQorICAgIDogZnJvbnRWYXJ5aW5nKG90aGVyLmZyb250VmFyeWlu
Zy5zdGFnZSwgb3RoZXIuZnJvbnRWYXJ5aW5nLnZhcnlpbmcpLAorICAgICAgYmFja1Zhcnlpbmco
b3RoZXIuYmFja1Zhcnlpbmcuc3RhZ2UsIG90aGVyLmJhY2tWYXJ5aW5nLnZhcnlpbmcpCiB7CiAg
ICAgKnRoaXMgPSBzdGQ6Om1vdmUob3RoZXIpOwogfQorCiBQYWNrZWRWYXJ5aW5nICZQYWNrZWRW
YXJ5aW5nOjpvcGVyYXRvcj0oUGFja2VkVmFyeWluZyAmJm90aGVyKQogewotICAgIHN0ZDo6c3dh
cCh2YXJ5aW5nLCBvdGhlci52YXJ5aW5nKTsKLSAgICBzdGQ6OnN3YXAoc2hhZGVyU3RhZ2VzLCBv
dGhlci5zaGFkZXJTdGFnZXMpOworICAgIHN0ZDo6c3dhcChmcm9udFZhcnlpbmcsIG90aGVyLmZy
b250VmFyeWluZyk7CisgICAgc3RkOjpzd2FwKGJhY2tWYXJ5aW5nLCBvdGhlci5iYWNrVmFyeWlu
Zyk7CiAgICAgc3RkOjpzd2FwKGludGVycG9sYXRpb24sIG90aGVyLmludGVycG9sYXRpb24pOwot
ICAgIHN0ZDo6c3dhcChwYXJlbnRTdHJ1Y3ROYW1lLCBvdGhlci5wYXJlbnRTdHJ1Y3ROYW1lKTsK
LSAgICBzdGQ6OnN3YXAocGFyZW50U3RydWN0TWFwcGVkTmFtZSwgb3RoZXIucGFyZW50U3RydWN0
TWFwcGVkTmFtZSk7CiAgICAgc3RkOjpzd2FwKGFycmF5SW5kZXgsIG90aGVyLmFycmF5SW5kZXgp
OwogICAgIHN0ZDo6c3dhcChmaWVsZEluZGV4LCBvdGhlci5maWVsZEluZGV4KTsKIApAQCAtMTA2
LDcgKzEyNCw3IEBAIFZhcnlpbmdQYWNraW5nOjp+VmFyeWluZ1BhY2tpbmcoKSA9IGRlZmF1bHQ7
CiAvLyBSZXR1cm5zIGZhbHNlIGlmIHVuc3VjY2Vzc2Z1bC4KIGJvb2wgVmFyeWluZ1BhY2tpbmc6
OnBhY2tWYXJ5aW5nKGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcpCiB7Ci0gICAg
Y29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWlu
ZzsKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmcgPSBwYWNrZWRWYXJ5aW5n
LnZhcnlpbmcoKTsKIAogICAgIC8vICJOb24gLSBzcXVhcmUgbWF0cmljZXMgb2YgdHlwZSBtYXRD
eFIgY29uc3VtZSB0aGUgc2FtZSBzcGFjZSBhcyBhIHNxdWFyZSBtYXRyaXggb2YgdHlwZSBtYXRO
CiAgICAgLy8gd2hlcmUgTiBpcyB0aGUgZ3JlYXRlciBvZiBDIGFuZCBSLiIKQEAgLTIzNCw3ICsy
NTIsNyBAQCBib29sIFZhcnlpbmdQYWNraW5nOjpwYWNrVmFyeWluZyhjb25zdCBQYWNrZWRWYXJ5
aW5nICZwYWNrZWRWYXJ5aW5nKQogICAgICAgICAgICAgICAgICAgICByZWdpc3RlckluZm8udmFy
eWluZ1Jvd0luZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IHJlY29yZCBy
ZWdpc3RlciBpbmZvIGZvciBidWlsdGlucy4KICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhq
bWFkaWxsKTogQ2xlYW4gdGhpcyB1cC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWNrZWRW
YXJ5aW5nLnZhcnlpbmctPmlzQnVpbHRJbigpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIXZh
cnlpbmcuaXNCdWlsdEluKCkpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1SZWdpc3Rlckxpc3QucHVzaF9iYWNrKHJlZ2lzdGVySW5mbyk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTI3Nyw3ICsyOTUsNyBAQCB2b2lkIFZhcnlpbmdQYWNraW5nOjpp
bnNlcnQodW5zaWduZWQgaW50IHJlZ2lzdGVyUm93LAogICAgIHVuc2lnbmVkIGludCB2YXJ5aW5n
Um93cyAgICA9IDA7CiAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdDb2x1bW5zID0gMDsKIAotICAg
IGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOworICAgIGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyeWluZyA9IHBhY2tlZFZhcnlpbmcudmFyeWluZygpOwog
ICAgIEFTU0VSVCghdmFyeWluZy5pc1N0cnVjdCgpKTsKICAgICBHTGVudW0gdHJhbnNwb3NlZFR5
cGUgPSBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZSh2YXJ5aW5nLnR5cGUpOwogICAgIHZhcnlpbmdS
b3dzICAgICAgICAgICA9IGdsOjpWYXJpYWJsZVJvd0NvdW50KHRyYW5zcG9zZWRUeXBlKTsKQEAg
LTMwMyw3ICszMjEsNyBAQCB2b2lkIFZhcnlpbmdQYWNraW5nOjppbnNlcnQodW5zaWduZWQgaW50
IHJlZ2lzdGVyUm93LAogICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdBcnJheUluZGV4
ID0gYXJyYXlFbGVtZW50OwogICAgICAgICAgICAgLy8gRG8gbm90IHJlY29yZCByZWdpc3RlciBp
bmZvIGZvciBidWlsdGlucy4KICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IENsZWFuIHRo
aXMgdXAuCi0gICAgICAgICAgICBpZiAoIXBhY2tlZFZhcnlpbmcudmFyeWluZy0+aXNCdWlsdElu
KCkpCisgICAgICAgICAgICBpZiAoIXZhcnlpbmcuaXNCdWlsdEluKCkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbVJlZ2lzdGVyTGlzdC5wdXNoX2JhY2socmVnaXN0ZXJJbmZvKTsK
ICAgICAgICAgICAgIH0KQEAgLTMxNiwyNiArMzM0LDExNSBAQCB2b2lkIFZhcnlpbmdQYWNraW5n
OjppbnNlcnQodW5zaWduZWQgaW50IHJlZ2lzdGVyUm93LAogICAgIH0KIH0KIAordm9pZCBWYXJ5
aW5nUGFja2luZzo6cGFja1VzZXJWYXJ5aW5nKGNvbnN0IFByb2dyYW1WYXJ5aW5nUmVmICZyZWYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyeWluZ1VuaXF1ZUZ1bGxO
YW1lcyAqdW5pcXVlRnVsbE5hbWVzKQoreworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAq
aW5wdXQgID0gcmVmLmZyb250U2hhZGVyOworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAq
b3V0cHV0ID0gcmVmLmJhY2tTaGFkZXI7CisKKyAgICAvLyBXaWxsIGdldCB0aGUgdmVydGV4IHNo
YWRlciBpbnRlcnBvbGF0aW9uIGJ5IGRlZmF1bHQuCisgICAgc2g6OkludGVycG9sYXRpb25UeXBl
IGludGVycG9sYXRpb24gPSBpbnB1dCA/IGlucHV0LT5pbnRlcnBvbGF0aW9uIDogb3V0cHV0LT5p
bnRlcnBvbGF0aW9uOworCisgICAgVmFyeWluZ0luU2hhZGVyUmVmIGZyb250VmFyeWluZyhyZWYu
ZnJvbnRTaGFkZXJTdGFnZSwgaW5wdXQpOworICAgIFZhcnlpbmdJblNoYWRlclJlZiBiYWNrVmFy
eWluZyhyZWYuYmFja1NoYWRlclN0YWdlLCBvdXRwdXQpOworCisgICAgbVBhY2tlZFZhcnlpbmdz
LmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZnJvbnRWYXJ5aW5nKSwgc3RkOjptb3ZlKGJhY2tWYXJ5
aW5nKSwgaW50ZXJwb2xhdGlvbik7CisgICAgaWYgKGlucHV0KQorICAgIHsKKyAgICAgICAgKCp1
bmlxdWVGdWxsTmFtZXMpW3JlZi5mcm9udFNoYWRlclN0YWdlXS5pbnNlcnQoCisgICAgICAgICAg
ICBtUGFja2VkVmFyeWluZ3MuYmFjaygpLmZ1bGxOYW1lKHJlZi5mcm9udFNoYWRlclN0YWdlKSk7
CisgICAgfQorICAgIGlmIChvdXRwdXQpCisgICAgeworICAgICAgICAoKnVuaXF1ZUZ1bGxOYW1l
cylbcmVmLmJhY2tTaGFkZXJTdGFnZV0uaW5zZXJ0KAorICAgICAgICAgICAgbVBhY2tlZFZhcnlp
bmdzLmJhY2soKS5mdWxsTmFtZShyZWYuYmFja1NoYWRlclN0YWdlKSk7CisgICAgfQorfQorCit2
b2lkIFZhcnlpbmdQYWNraW5nOjpwYWNrVXNlclZhcnlpbmdGaWVsZChjb25zdCBQcm9ncmFtVmFy
eWluZ1JlZiAmcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGZpZWxkSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYXJ5aW5nVW5pcXVlRnVsbE5hbWVzICp1bmlxdWVGdWxsTmFtZXMpCit7CisgICAgY29u
c3Qgc2g6OlNoYWRlclZhcmlhYmxlICppbnB1dCAgPSByZWYuZnJvbnRTaGFkZXI7CisgICAgY29u
c3Qgc2g6OlNoYWRlclZhcmlhYmxlICpvdXRwdXQgPSByZWYuYmFja1NoYWRlcjsKKworICAgIC8v
IFdpbGwgZ2V0IHRoZSB2ZXJ0ZXggc2hhZGVyIGludGVycG9sYXRpb24gYnkgZGVmYXVsdC4KKyAg
ICBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbiA9IGlucHV0ID8gaW5wdXQtPmlu
dGVycG9sYXRpb24gOiBvdXRwdXQtPmludGVycG9sYXRpb247CisKKyAgICBjb25zdCBzaDo6U2hh
ZGVyVmFyaWFibGUgKmZyb250RmllbGQgPSBpbnB1dCA/ICZpbnB1dC0+ZmllbGRzW2ZpZWxkSW5k
ZXhdIDogbnVsbHB0cjsKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKmJhY2tGaWVsZCAg
PSBvdXRwdXQgPyAmb3V0cHV0LT5maWVsZHNbZmllbGRJbmRleF0gOiBudWxscHRyOworCisgICAg
VmFyeWluZ0luU2hhZGVyUmVmIGZyb250VmFyeWluZyhyZWYuZnJvbnRTaGFkZXJTdGFnZSwgZnJv
bnRGaWVsZCk7CisgICAgVmFyeWluZ0luU2hhZGVyUmVmIGJhY2tWYXJ5aW5nKHJlZi5iYWNrU2hh
ZGVyU3RhZ2UsIGJhY2tGaWVsZCk7CisKKyAgICBpZiAoaW5wdXQpCisgICAgeworICAgICAgICBB
U1NFUlQoIWZyb250RmllbGQtPmlzU3RydWN0KCkgJiYgIWZyb250RmllbGQtPmlzQXJyYXkoKSk7
CisgICAgICAgIGZyb250VmFyeWluZy5wYXJlbnRTdHJ1Y3ROYW1lICAgICAgID0gaW5wdXQtPm5h
bWU7CisgICAgICAgIGZyb250VmFyeWluZy5wYXJlbnRTdHJ1Y3RNYXBwZWROYW1lID0gaW5wdXQt
Pm1hcHBlZE5hbWU7CisgICAgfQorICAgIGlmIChvdXRwdXQpCisgICAgeworICAgICAgICBBU1NF
UlQoIWJhY2tGaWVsZC0+aXNTdHJ1Y3QoKSAmJiAhYmFja0ZpZWxkLT5pc0FycmF5KCkpOworICAg
ICAgICBiYWNrVmFyeWluZy5wYXJlbnRTdHJ1Y3ROYW1lICAgICAgID0gb3V0cHV0LT5uYW1lOwor
ICAgICAgICBiYWNrVmFyeWluZy5wYXJlbnRTdHJ1Y3RNYXBwZWROYW1lID0gb3V0cHV0LT5tYXBw
ZWROYW1lOworICAgIH0KKworICAgIG1QYWNrZWRWYXJ5aW5ncy5lbXBsYWNlX2JhY2soc3RkOjpt
b3ZlKGZyb250VmFyeWluZyksIHN0ZDo6bW92ZShiYWNrVmFyeWluZyksIGludGVycG9sYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEluZGV4KTsKKworICAgIGlm
IChpbnB1dCkKKyAgICB7CisgICAgICAgICgqdW5pcXVlRnVsbE5hbWVzKVtyZWYuZnJvbnRTaGFk
ZXJTdGFnZV0uaW5zZXJ0KAorICAgICAgICAgICAgbVBhY2tlZFZhcnlpbmdzLmJhY2soKS5mdWxs
TmFtZShyZWYuZnJvbnRTaGFkZXJTdGFnZSkpOworICAgIH0KKyAgICBpZiAob3V0cHV0KQorICAg
IHsKKyAgICAgICAgKCp1bmlxdWVGdWxsTmFtZXMpW3JlZi5iYWNrU2hhZGVyU3RhZ2VdLmluc2Vy
dCgKKyAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCkuZnVsbE5hbWUocmVmLmJhY2tT
aGFkZXJTdGFnZSkpOworICAgIH0KK30KKwordm9pZCBWYXJ5aW5nUGFja2luZzo6cGFja1VzZXJW
YXJ5aW5nVEYoY29uc3QgUHJvZ3JhbVZhcnlpbmdSZWYgJnJlZiwgc2l6ZV90IHN1YnNjcmlwdCkK
K3sKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKmlucHV0ID0gcmVmLmZyb250U2hhZGVy
OworCisgICAgVmFyeWluZ0luU2hhZGVyUmVmIGZyb250VmFyeWluZyhyZWYuZnJvbnRTaGFkZXJT
dGFnZSwgaW5wdXQpOworICAgIFZhcnlpbmdJblNoYWRlclJlZiBiYWNrVmFyeWluZyhyZWYuYmFj
a1NoYWRlclN0YWdlLCBudWxscHRyKTsKKworICAgIG1QYWNrZWRWYXJ5aW5ncy5lbXBsYWNlX2Jh
Y2soc3RkOjptb3ZlKGZyb250VmFyeWluZyksIHN0ZDo6bW92ZShiYWNrVmFyeWluZyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC0+aW50ZXJwb2xhdGlvbik7CisgICAg
bVBhY2tlZFZhcnlpbmdzLmJhY2soKS5hcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8R0x1aW50Pihz
dWJzY3JpcHQpOworfQorCit2b2lkIFZhcnlpbmdQYWNraW5nOjpwYWNrVXNlclZhcnlpbmdGaWVs
ZFRGKGNvbnN0IFByb2dyYW1WYXJ5aW5nUmVmICZyZWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZmllbGQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaWVsZElu
ZGV4KQoreworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqaW5wdXQgPSByZWYuZnJvbnRT
aGFkZXI7CisKKyAgICBWYXJ5aW5nSW5TaGFkZXJSZWYgZnJvbnRWYXJ5aW5nKHJlZi5mcm9udFNo
YWRlclN0YWdlLCAmZmllbGQpOworICAgIFZhcnlpbmdJblNoYWRlclJlZiBiYWNrVmFyeWluZyhy
ZWYuYmFja1NoYWRlclN0YWdlLCBudWxscHRyKTsKKworICAgIGZyb250VmFyeWluZy5wYXJlbnRT
dHJ1Y3ROYW1lICAgICAgID0gaW5wdXQtPm5hbWU7CisgICAgZnJvbnRWYXJ5aW5nLnBhcmVudFN0
cnVjdE1hcHBlZE5hbWUgPSBpbnB1dC0+bWFwcGVkTmFtZTsKKworICAgIG1QYWNrZWRWYXJ5aW5n
cy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGZyb250VmFyeWluZyksIHN0ZDo6bW92ZShiYWNrVmFy
eWluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC0+aW50ZXJwb2xh
dGlvbiwgZmllbGRJbmRleCk7Cit9CisKIGJvb2wgVmFyeWluZ1BhY2tpbmc6OmNvbGxlY3RBbmRQ
YWNrVXNlclZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbU1lcmdlZFZhcnlpbmdz
ICZtZXJnZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdGZWYXJ5aW5ncykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdGZWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNTZXBhcmFibGVQcm9ncmFtKQog
ewotICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB1bmlxdWVGdWxsTmFtZXM7CisgICAgVmFyeWlu
Z1VuaXF1ZUZ1bGxOYW1lcyB1bmlxdWVGdWxsTmFtZXM7CiAgICAgbVBhY2tlZFZhcnlpbmdzLmNs
ZWFyKCk7Ci0gICAgbUlucHV0VmFyeWluZ3MuY2xlYXIoKTsKIAotICAgIGZvciAoY29uc3QgYXV0
byAmcmVmIDogbWVyZ2VkVmFyeWluZ3MpCisgICAgZm9yIChjb25zdCBQcm9ncmFtVmFyeWluZ1Jl
ZiAmcmVmIDogbWVyZ2VkVmFyeWluZ3MpCiAgICAgewotICAgICAgICBjb25zdCBzaDo6U2hhZGVy
VmFyaWFibGUgKmlucHV0ICA9IHJlZi5zZWNvbmQuZnJvbnRTaGFkZXI7Ci0gICAgICAgIGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAqb3V0cHV0ID0gcmVmLnNlY29uZC5iYWNrU2hhZGVyOwotICAg
ICAgICBpZiAoaW5wdXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1JbnB1dFZhcnlpbmdzLmVt
cGxhY2VfYmFjaygqaW5wdXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgU2hhZGVyQml0U2V0IHNo
YWRlclN0YWdlczsKLSAgICAgICAgc2hhZGVyU3RhZ2VzLnNldChyZWYuc2Vjb25kLmZyb250U2hh
ZGVyU3RhZ2UpOwotICAgICAgICBzaGFkZXJTdGFnZXMuc2V0KHJlZi5zZWNvbmQuYmFja1NoYWRl
clN0YWdlKTsKKyAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICppbnB1dCAgPSByZWYu
ZnJvbnRTaGFkZXI7CisgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqb3V0cHV0ID0g
cmVmLmJhY2tTaGFkZXI7CiAKICAgICAgICAgLy8gT25seSBwYWNrIHN0YXRpY2FsbHkgdXNlZCB2
YXJ5aW5ncyB0aGF0IGhhdmUgYSBtYXRjaGVkIGlucHV0IG9yIG91dHB1dCwgcGx1cyBzcGVjaWFs
CiAgICAgICAgIC8vIGJ1aWx0aW5zLiBOb3RlIHRoYXQgd2UgcGFjayBhbGwgc3RhdGljYWxseSB1
c2VkIHVzZXItZGVmaW5lZCB2YXJ5aW5ncyBldmVuIGlmIHRoZXkgYXJlCkBAIC0zNDQsNyArNDUx
LDggQEAgYm9vbCBWYXJ5aW5nUGFja2luZzo6Y29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3MoZ2w6
OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgIC8vIG9wdGltaXphdGlvbnMiIG1heSBiZSB1c2Vk
IHRvIG1ha2UgdmVydGV4IHNoYWRlciBvdXRwdXRzIGZpdC4KICAgICAgICAgaWYgKChpbnB1dCAm
JiBvdXRwdXQgJiYgb3V0cHV0LT5zdGF0aWNVc2UpIHx8CiAgICAgICAgICAgICAoaW5wdXQgJiYg
aW5wdXQtPmlzQnVpbHRJbigpICYmIGlucHV0LT5hY3RpdmUpIHx8Ci0gICAgICAgICAgICAob3V0
cHV0ICYmIG91dHB1dC0+aXNCdWlsdEluKCkgJiYgb3V0cHV0LT5hY3RpdmUpKQorICAgICAgICAg
ICAgKG91dHB1dCAmJiBvdXRwdXQtPmlzQnVpbHRJbigpICYmIG91dHB1dC0+YWN0aXZlKSB8fAor
ICAgICAgICAgICAgKGlzU2VwYXJhYmxlUHJvZ3JhbSAmJiAoKGlucHV0ICYmIGlucHV0LT5hY3Rp
dmUpIHx8IChvdXRwdXQgJiYgb3V0cHV0LT5hY3RpdmUpKSkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyeWluZyA9IG91dHB1dCA/IG91dHB1dCA6
IGlucHV0OwogCkBAIC0zNTMsNDAgKzQ2MSwzNSBAQCBib29sIFZhcnlpbmdQYWNraW5nOjpjb2xs
ZWN0QW5kUGFja1VzZXJWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAg
ICAgICAhKHZhcnlpbmctPm5hbWUgPT0gImdsX1BvaW50U2l6ZSIgJiYKICAgICAgICAgICAgICAg
ICAgIG1QYWNrTW9kZSA9PSBQYWNrTW9kZTo6QU5HTEVfTk9OX0NPTkZPUk1BTlRfRDNEOSkpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gV2lsbCBnZXQgdGhlIHZlcnRleCBzaGFk
ZXIgaW50ZXJwb2xhdGlvbiBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAgIGF1dG8gaW50ZXJw
b2xhdGlvbiA9IHJlZi5zZWNvbmQuZ2V0KCktPmludGVycG9sYXRpb247Ci0KLSAgICAgICAgICAg
ICAgICAvLyBOb3RlIHRoYXQgd2UgbG9zZSB0aGUgdmVydGV4IHNoYWRlciBzdGF0aWMgdXNlIGlu
Zm9ybWF0aW9uIGhlcmUuIFRoZSBkYXRhIGZvciB0aGUKLSAgICAgICAgICAgICAgICAvLyB2YXJp
YWJsZSBpcyB0YWtlbiBmcm9tIHRoZSBmcmFnbWVudCBzaGFkZXIuCiAgICAgICAgICAgICAgICAg
aWYgKHZhcnlpbmctPmlzU3RydWN0KCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoISh2YXJ5aW5nLT5pc0FycmF5KCkgJiYgdmFyeWluZyA9PSBpbnB1dCkp
OworCiAgICAgICAgICAgICAgICAgICAgIGZvciAoR0x1aW50IGZpZWxkSW5kZXggPSAwOyBmaWVs
ZEluZGV4IDwgdmFyeWluZy0+ZmllbGRzLnNpemUoKTsgKytmaWVsZEluZGV4KQogICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFy
aWFibGUgJmZpZWxkID0gdmFyeWluZy0+ZmllbGRzW2ZpZWxkSW5kZXhdOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWZpZWxkLmlzU3RydWN0KCkgJiYgIWZpZWxkLmlzQXJyYXko
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtUGFja2VkVmFyeWluZ3MuZW1wbGFjZV9iYWNr
KGZpZWxkLCBpbnRlcnBvbGF0aW9uLCB2YXJ5aW5nLT5uYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nLT5tYXBwZWROYW1lLCBm
aWVsZEluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNr
KCkuc2hhZGVyU3RhZ2VzID0gc2hhZGVyU3RhZ2VzOwotICAgICAgICAgICAgICAgICAgICAgICAg
dW5pcXVlRnVsbE5hbWVzLmluc2VydChtUGFja2VkVmFyeWluZ3MuYmFjaygpLmZ1bGxOYW1lKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcGFja1VzZXJWYXJ5aW5nRmllbGQocmVmLCBmaWVs
ZEluZGV4LCAmdW5pcXVlRnVsbE5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoaW5wdXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1lc1tyZWYuZnJvbnRTaGFkZXJTdGFnZV0uaW5z
ZXJ0KGlucHV0LT5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAob3V0cHV0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlxdWVGdWxsTmFtZXNbcmVmLmJhY2tTaGFkZXJTdGFnZV0uaW5zZXJ0KG91dHB1
dC0+bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdW5p
cXVlRnVsbE5hbWVzLmluc2VydCh2YXJ5aW5nLT5uYW1lKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgbVBhY2tlZFZhcnlpbmdzLmVtcGxhY2VfYmFjaygqdmFyeWluZywgaW50ZXJwb2xhdGlvbik7
Ci0gICAgICAgICAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCkuc2hhZGVyU3RhZ2Vz
ID0gc2hhZGVyU3RhZ2VzOwotICAgICAgICAgICAgICAgICAgICB1bmlxdWVGdWxsTmFtZXMuaW5z
ZXJ0KG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCkuZnVsbE5hbWUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHBhY2tVc2VyVmFyeWluZyhyZWYsICZ1bmlxdWVGdWxsTmFtZXMpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCiAgICAgICAgIC8vIElmIHRoZSB2YXJ5aW5nIGlzIG5vdCB1c2VkIGluIHRoZSBpbnB1dCwg
d2Uga25vdyBpdCBpcyBpbmFjdGl2ZS4KLSAgICAgICAgaWYgKCFpbnB1dCkKKyAgICAgICAgaWYg
KCFpbnB1dCAmJiAhaXNTZXBhcmFibGVQcm9ncmFtKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
SW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXMucHVzaF9iYWNrKG91dHB1dC0+bWFwcGVkTmFtZSk7
CisgICAgICAgICAgICBtSW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXNbcmVmLmJhY2tTaGFkZXJT
dGFnZV0ucHVzaF9iYWNrKG91dHB1dC0+bWFwcGVkTmFtZSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCkBAIC00MDEsNyArNTA0LDggQEAgYm9vbCBWYXJ5aW5nUGFja2luZzo6
Y29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAg
ICAgICAgICAgc3Vic2NyaXB0ID0gc3Vic2NyaXB0cy5iYWNrKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAvLyBBbHJlYWR5IHBhY2tlZCBmb3IgZnJhZ21lbnQgc2hhZGVyLgotICAgICAg
ICAgICAgaWYgKHVuaXF1ZUZ1bGxOYW1lcy5jb3VudCh0ZlZhcnlpbmcpID4gMCB8fCB1bmlxdWVG
dWxsTmFtZXMuY291bnQoYmFzZU5hbWUpID4gMCkKKyAgICAgICAgICAgIGlmICh1bmlxdWVGdWxs
TmFtZXNbcmVmLmZyb250U2hhZGVyU3RhZ2VdLmNvdW50KHRmVmFyeWluZykgPiAwIHx8CisgICAg
ICAgICAgICAgICAgdW5pcXVlRnVsbE5hbWVzW3JlZi5mcm9udFNoYWRlclN0YWdlXS5jb3VudChi
YXNlTmFtZSkgPiAwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQpAQCAtNDEzLDEzICs1MTcsMTEgQEAgYm9vbCBWYXJ5aW5nUGFja2luZzo6
Y29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAg
ICAgICAgICAgaWYgKGZpZWxkICE9IG51bGxwdHIpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWZpZWxkLT5pc1N0cnVjdCgpICYmICFmaWVsZC0+aXNBcnJh
eSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbVBhY2tlZFZhcnlpbmdzLmVtcGxhY2VfYmFjaygq
ZmllbGQsIGlucHV0LT5pbnRlcnBvbGF0aW9uLCBpbnB1dC0+bmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC0+bWFwcGVkTmFtZSwgZmll
bGRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCkuc2hh
ZGVyU3RhZ2VzLnNldChTaGFkZXJUeXBlOjpWZXJ0ZXgpOwotICAgICAgICAgICAgICAgICAgICBt
UGFja2VkVmFyeWluZ3MuYmFjaygpLmFycmF5SW5kZXggPSBHTF9JTlZBTElEX0lOREVYOwotICAg
ICAgICAgICAgICAgICAgICB1bmlxdWVGdWxsTmFtZXMuaW5zZXJ0KHRmVmFyeWluZyk7CisKKyAg
ICAgICAgICAgICAgICAgICAgcGFja1VzZXJWYXJ5aW5nRmllbGRURihyZWYsICpmaWVsZCwgZmll
bGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1lc1tyZWYuZnJvbnRT
aGFkZXJTdGFnZV0uaW5zZXJ0KHRmVmFyeWluZyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1lcy5pbnNlcnQoaW5wdXQtPm5hbWUpOworICAgICAgICAg
ICAgICAgIHVuaXF1ZUZ1bGxOYW1lc1tyZWYuZnJvbnRTaGFkZXJTdGFnZV0uaW5zZXJ0KGlucHV0
LT5uYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEFycmF5IGFzIGEgd2hvbGUg
YW5kIGFycmF5IGVsZW1lbnQgY29uZmxpY3QgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkIGluCiAg
ICAgICAgICAgICAvLyBsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjay4KQEAgLTQyOCwxMCAr
NTMwLDggQEAgYm9vbCBWYXJ5aW5nUGFja2luZzo6Y29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3Mo
Z2w6OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgLy8gb25seSBwYWNrIHZhcnlp
bmdzIHRoYXQgYXJlIG5vdCBidWlsdGlucy4KICAgICAgICAgICAgICAgICBpZiAodGZWYXJ5aW5n
LmNvbXBhcmUoMCwgMywgImdsXyIpICE9IDApCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBtUGFja2VkVmFyeWluZ3MuZW1wbGFjZV9iYWNrKCppbnB1dCwgaW5wdXQtPmlu
dGVycG9sYXRpb24pOwotICAgICAgICAgICAgICAgICAgICBtUGFja2VkVmFyeWluZ3MuYmFjaygp
LnNoYWRlclN0YWdlcy5zZXQoU2hhZGVyVHlwZTo6VmVydGV4KTsKLSAgICAgICAgICAgICAgICAg
ICAgbVBhY2tlZFZhcnlpbmdzLmJhY2soKS5hcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8R0x1aW50
PihzdWJzY3JpcHQpOwotICAgICAgICAgICAgICAgICAgICB1bmlxdWVGdWxsTmFtZXMuaW5zZXJ0
KHRmVmFyeWluZyk7CisgICAgICAgICAgICAgICAgICAgIHBhY2tVc2VyVmFyeWluZ1RGKHJlZiwg
c3Vic2NyaXB0KTsKKyAgICAgICAgICAgICAgICAgICAgdW5pcXVlRnVsbE5hbWVzW3JlZi5mcm9u
dFNoYWRlclN0YWdlXS5pbnNlcnQodGZWYXJ5aW5nKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgLy8gQ29udGludWUgdG8gbWF0Y2ggbmV4dCBhcnJheSBlbGVtZW50IGZvciAn
aW5wdXQnIGlmIHRoZSBjdXJyZW50IG1hdGNoIGlzIGFycmF5CiAgICAgICAgICAgICAgICAgLy8g
ZWxlbWVudC4KQEAgLTQ0Miw5ICs1NDIsMTMgQEAgYm9vbCBWYXJ5aW5nUGFja2luZzo6Y29sbGVj
dEFuZFBhY2tVc2VyVmFyeWluZ3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodW5pcXVlRnVsbE5hbWVzLmNvdW50KHJlZi5maXJz
dCkgPT0gMCkKKyAgICAgICAgaWYgKGlucHV0ICYmIHVuaXF1ZUZ1bGxOYW1lc1tyZWYuZnJvbnRT
aGFkZXJTdGFnZV0uY291bnQoaW5wdXQtPm5hbWUpID09IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1JbmFjdGl2ZVZhcnlpbmdNYXBwZWROYW1lc1tyZWYuZnJvbnRTaGFkZXJTdGFnZV0ucHVz
aF9iYWNrKGlucHV0LT5tYXBwZWROYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAob3V0cHV0
ICYmIHVuaXF1ZUZ1bGxOYW1lc1tyZWYuYmFja1NoYWRlclN0YWdlXS5jb3VudChvdXRwdXQtPm5h
bWUpID09IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1JbmFjdGl2ZVZhcnlpbmdNYXBwZWRO
YW1lcy5wdXNoX2JhY2soaW5wdXQtPm1hcHBlZE5hbWUpOworICAgICAgICAgICAgbUluYWN0aXZl
VmFyeWluZ01hcHBlZE5hbWVzW3JlZi5iYWNrU2hhZGVyU3RhZ2VdLnB1c2hfYmFjayhvdXRwdXQt
Pm1hcHBlZE5hbWUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NjMsNyArNTY3LDEwIEBAIGJv
b2wgVmFyeWluZ1BhY2tpbmc6OnBhY2tVc2VyVmFyeWluZ3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2cs
CiAgICAgewogICAgICAgICBpZiAoIXBhY2tWYXJ5aW5nKHBhY2tlZFZhcnlpbmcpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBpbmZvTG9nIDw8ICJDb3VsZCBub3QgcGFjayB2YXJ5aW5nICIgPDwg
cGFja2VkVmFyeWluZy5mdWxsTmFtZSgpOworICAgICAgICAgICAgU2hhZGVyVHlwZSBlaXRoZXJT
dGFnZSA9IHBhY2tlZFZhcnlpbmcuZnJvbnRWYXJ5aW5nLnZhcnlpbmcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwYWNrZWRWYXJ5aW5nLmZyb250VmFyeWluZy5z
dGFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBhY2tlZFZh
cnlpbmcuYmFja1Zhcnlpbmcuc3RhZ2U7CisgICAgICAgICAgICBpbmZvTG9nIDw8ICJDb3VsZCBu
b3QgcGFjayB2YXJ5aW5nICIgPDwgcGFja2VkVmFyeWluZy5mdWxsTmFtZShlaXRoZXJTdGFnZSk7
CiAKICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEltcGxlbWVudCBtb3JlIHNvcGhpc3Rp
Y2F0ZWQgY29tcG9uZW50IHBhY2tpbmcgaW4gRDNEOS4KICAgICAgICAgICAgIGlmIChtUGFja01v
ZGUgPT0gUGFja01vZGU6OkFOR0xFX05PTl9DT05GT1JNQU5UX0QzRDkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5oCmluZGV4
IDA4ZTZkZGEyNTFjMGJlODY2MzVjMjIxZjRjNTA2NzY0Yjk0MTYwMzEuLmM0ODc0ZDliNWQ5NDYy
ZDE0MjgyZGVlOTIyZTlmYzk0MWU1YTU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5oCkBAIC0yNSwzNCArMjUsODEg
QEAgbmFtZXNwYWNlIGdsCiBjbGFzcyBJbmZvTG9nOwogc3RydWN0IFByb2dyYW1WYXJ5aW5nUmVm
OwogCi11c2luZyBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgPSBzdGQ6Om1hcDxzdGQ6OnN0cmluZywg
UHJvZ3JhbVZhcnlpbmdSZWY+OwordXNpbmcgUHJvZ3JhbU1lcmdlZFZhcnlpbmdzID0gc3RkOjp2
ZWN0b3I8UHJvZ3JhbVZhcnlpbmdSZWY+OworCisvLyBBIHZhcnlpbmcgY2FuIGhhdmUgZGlmZmVy
ZW50IG5hbWVzIGJldHdlZW4gc3RhZ2VzIGlmIG1hdGNoZWQgYnkgdGhlIGxvY2F0aW9uIGxheW91
dCBxdWFsaWZpZXIuCisvLyBBZGRpdGlvbmFsbHksIHNhbWUgbmFtZSB2YXJ5aW5ncyBjb3VsZCBz
dGlsbCBiZSBvZiB0d28gaWRlbnRpY2FsIHN0cnVjdCB0eXBlcyB3aXRoIGRpZmZlcmVudAorLy8g
bmFtZXMuICBUaGlzIHN0cnVjdCBjb250YWlucyBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyeWluZyBp
biBvbmUgb2YgdGhlIHR3byBzdGFnZXMuICBQYWNrZWRWYXJ5aW5nCisvLyB3aWxsIHRodXMgY29u
dGFpbiB0d28gY29waWVzIG9mIHRoaXMgYWxvbmcgd2l0aCBjb21tb24gaW5mb3JtYXRpb24sIHN1
Y2ggYXMgaW50ZXJwb2xhdGlvbiBvcgorLy8gZmllbGQgaW5kZXguCitzdHJ1Y3QgVmFyeWluZ0lu
U2hhZGVyUmVmIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgICAgVmFyeWluZ0luU2hhZGVyUmVm
KFNoYWRlclR5cGUgc3RhZ2VJbiwgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXJ5aW5nSW4p
OworICAgIFZhcnlpbmdJblNoYWRlclJlZihWYXJ5aW5nSW5TaGFkZXJSZWYgJiZvdGhlcik7Cisg
ICAgflZhcnlpbmdJblNoYWRlclJlZigpOworCisgICAgVmFyeWluZ0luU2hhZGVyUmVmICZvcGVy
YXRvcj0oVmFyeWluZ0luU2hhZGVyUmVmICYmb3RoZXIpOworCisgICAgY29uc3Qgc2g6OlNoYWRl
clZhcmlhYmxlICp2YXJ5aW5nOworCisgICAgU2hhZGVyVHlwZSBzdGFnZTsKKworICAgIC8vIFN0
cnVjdCBuYW1lCisgICAgc3RkOjpzdHJpbmcgcGFyZW50U3RydWN0TmFtZTsKKyAgICBzdGQ6OnN0
cmluZyBwYXJlbnRTdHJ1Y3RNYXBwZWROYW1lOworfTsKIAogc3RydWN0IFBhY2tlZFZhcnlpbmcg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKLSAgICBQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpTaGFk
ZXJWYXJpYWJsZSAmdmFyeWluZ0luLCBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlv
bkluKTsKLSAgICBQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyeWlu
Z0luLAorICAgIC8vIFRocm91Z2hvdXQgdGhpcyBmaWxlLCB0aGUgImZyb250IiBzdGFnZSByZWZl
cnMgdG8gdGhlIHN0YWdlIHRoYXQgb3V0cHV0cyB0aGUgdmFyeWluZywgYW5kIHRoZQorICAgIC8v
ICJiYWNrIiBzdGFnZSByZWZlcnMgdG8gdGhlIHN0YWdlIHRoYXQgdGFrZXMgdGhlIHZhcnlpbmcg
YXMgaW5wdXQuICBOb3RlIHRoYXQgdGhpcyBzdHJ1Y3QKKyAgICAvLyBjb250YWlucyBsaW5rZWQg
dmFyeWluZ3MsIHdoaWNoIG1lYW5zIGJvdGggZnJvbnQgYW5kIGJhY2sgc3RhZ2UgdmFyeWluZ3Mg
YXJlIHZhbGlkLCBleGNlcHQKKyAgICAvLyBmb3IgdGhlIGZvbGxvd2luZyB3aGljaCBtYXkgaGF2
ZSBvbmx5IG9uZSB2YWxpZCBzdGFnZS4KKyAgICAvLworICAgIC8vICAtIHRyYW5zZm9ybS1mZWVk
YmFjay1jYXB0dXJlZCB2YXJ5aW5ncworICAgIC8vICAtIGJ1aWx0aW5zCisgICAgLy8gIC0gc2Vw
YXJhYmxlIHByb2dyYW0gc3RhZ2VzLAorICAgIC8vCisgICAgUGFja2VkVmFyeWluZyhWYXJ5aW5n
SW5TaGFkZXJSZWYgJiZmcm9udFZhcnlpbmdJbiwKKyAgICAgICAgICAgICAgICAgIFZhcnlpbmdJ
blNoYWRlclJlZiAmJmJhY2tWYXJ5aW5nSW4sCisgICAgICAgICAgICAgICAgICBzaDo6SW50ZXJw
b2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbkluKTsKKyAgICBQYWNrZWRWYXJ5aW5nKFZhcnlpbmdJ
blNoYWRlclJlZiAmJmZyb250VmFyeWluZ0luLAorICAgICAgICAgICAgICAgICAgVmFyeWluZ0lu
U2hhZGVyUmVmICYmYmFja1ZhcnlpbmdJbiwKICAgICAgICAgICAgICAgICAgIHNoOjpJbnRlcnBv
bGF0aW9uVHlwZSBpbnRlcnBvbGF0aW9uSW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmcGFyZW50U3RydWN0TmFtZUluLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnBhcmVudFN0cnVjdE1hcHBlZE5hbWVJbiwKICAgICAgICAgICAgICAgICAgIEdM
dWludCBmaWVsZEluZGV4SW4pOwogICAgIFBhY2tlZFZhcnlpbmcoUGFja2VkVmFyeWluZyAmJm90
aGVyKTsKICAgICB+UGFja2VkVmFyeWluZygpOwogCiAgICAgUGFja2VkVmFyeWluZyAmb3BlcmF0
b3I9KFBhY2tlZFZhcnlpbmcgJiZvdGhlcik7CiAKLSAgICBib29sIGlzU3RydWN0RmllbGQoKSBj
b25zdCB7IHJldHVybiAhcGFyZW50U3RydWN0TmFtZS5lbXB0eSgpOyB9CisgICAgYm9vbCBpc1N0
cnVjdEZpZWxkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmcm9udFZhcnlpbmcudmFy
eWluZyA/ICFmcm9udFZhcnlpbmcucGFyZW50U3RydWN0TmFtZS5lbXB0eSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICFiYWNrVmFyeWluZy5wYXJlbnRTdHJ1Y3ROYW1l
LmVtcHR5KCk7CisgICAgfQogCiAgICAgYm9vbCBpc0FycmF5RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIGFycmF5SW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsgfQogCi0gICAgc3RkOjpzdHJpbmcg
ZnVsbE5hbWUoKSBjb25zdAorICAgIC8vIFJldHVybiBlaXRoZXIgZnJvbnQgb3IgYmFjayB2YXJ5
aW5nLCB3aGljaGV2ZXIgaXMgYXZhaWxhYmxlLiAgT25seSB1c2VkIHdoZW4gdGhlIG5hbWUgb2Yg
dGhlCisgICAgLy8gdmFyeWluZyBpcyBub3QgaW1wb3J0YW50LCBidXQgb25seSB0aGUgdHlwZSBp
cyBpbnRlcmVzdGluZy4KKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmcoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyb250VmFyeWluZy52YXJ5aW5nID8gKmZyb250
VmFyeWluZy52YXJ5aW5nIDogKmJhY2tWYXJ5aW5nLnZhcnlpbmc7CisgICAgfQorCisgICAgc3Rk
OjpzdHJpbmcgZnVsbE5hbWUoU2hhZGVyVHlwZSBzdGFnZSkgY29uc3QKICAgICB7CisgICAgICAg
IEFTU0VSVChzdGFnZSA9PSBmcm9udFZhcnlpbmcuc3RhZ2UgfHwgc3RhZ2UgPT0gYmFja1Zhcnlp
bmcuc3RhZ2UpOworICAgICAgICBjb25zdCBWYXJ5aW5nSW5TaGFkZXJSZWYgJnZhcnlpbmcgPQor
ICAgICAgICAgICAgc3RhZ2UgPT0gZnJvbnRWYXJ5aW5nLnN0YWdlID8gZnJvbnRWYXJ5aW5nIDog
YmFja1Zhcnlpbmc7CisKICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZnVsbE5hbWVTdHI7CiAg
ICAgICAgIGlmIChpc1N0cnVjdEZpZWxkKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZ1bGxO
YW1lU3RyIDw8IHBhcmVudFN0cnVjdE5hbWUgPDwgIi4iOworICAgICAgICAgICAgZnVsbE5hbWVT
dHIgPDwgdmFyeWluZy5wYXJlbnRTdHJ1Y3ROYW1lIDw8ICIuIjsKICAgICAgICAgfQogCi0gICAg
ICAgIGZ1bGxOYW1lU3RyIDw8IHZhcnlpbmctPm5hbWU7CisgICAgICAgIGZ1bGxOYW1lU3RyIDw8
IHZhcnlpbmcudmFyeWluZy0+bmFtZTsKICAgICAgICAgaWYgKGFycmF5SW5kZXggIT0gR0xfSU5W
QUxJRF9JTkRFWCkKICAgICAgICAgewogICAgICAgICAgICAgZnVsbE5hbWVTdHIgPDwgIlsiIDw8
IGFycmF5SW5kZXggPDwgIl0iOwpAQCAtNjMsMjIgKzExMCwxNSBAQCBzdHJ1Y3QgUGFja2VkVmFy
eWluZyA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5
aW5ncyBjYW4gYmUgb25seSByZWZlcmVuY2VkIGluIHRoZSBWUy4KICAgICBib29sIHZlcnRleE9u
bHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgU2hhZGVyQml0U2V0IHZlcnRleDsKLSAgICAgICAg
dmVydGV4LnNldChTaGFkZXJUeXBlOjpWZXJ0ZXgpOwotICAgICAgICByZXR1cm4gc2hhZGVyU3Rh
Z2VzID09IHZlcnRleDsKKyAgICAgICAgcmV0dXJuIGZyb250VmFyeWluZy5zdGFnZSA9PSBTaGFk
ZXJUeXBlOjpWZXJ0ZXggJiYgYmFja1ZhcnlpbmcudmFyeWluZyA9PSBudWxscHRyOwogICAgIH0K
IAotICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyeWluZzsKLQotICAgIFNoYWRlckJp
dFNldCBzaGFkZXJTdGFnZXM7CisgICAgVmFyeWluZ0luU2hhZGVyUmVmIGZyb250VmFyeWluZzsK
KyAgICBWYXJ5aW5nSW5TaGFkZXJSZWYgYmFja1Zhcnlpbmc7CiAKICAgICAvLyBDYWNoZWQgc28g
d2UgY2FuIHN0b3JlIHNoOjpTaGFkZXJWYXJpYWJsZSB0byBwb2ludCB0byB2YXJ5aW5nIGZpZWxk
cy4KICAgICBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbjsKIAotICAgIC8vIFN0
cnVjdCBuYW1lCi0gICAgc3RkOjpzdHJpbmcgcGFyZW50U3RydWN0TmFtZTsKLSAgICBzdGQ6OnN0
cmluZyBwYXJlbnRTdHJ1Y3RNYXBwZWROYW1lOwotCiAgICAgR0x1aW50IGFycmF5SW5kZXg7CiAK
ICAgICAvLyBGaWVsZCBpbmRleCBpbiB0aGUgc3RydWN0LiAgSW4gVnVsa2FuLCB0aGlzIGlzIHVz
ZWQgdG8gYXNzaWduIGEKQEAgLTExMiwxNCArMTUyLDcgQEAgc3RydWN0IFBhY2tlZFZhcnlpbmdS
ZWdpc3RlciBmaW5hbAogCiAgICAgc3RkOjpzdHJpbmcgdGZWYXJ5aW5nTmFtZSgpIGNvbnN0CiAg
ICAgewotICAgICAgICBpZiAocGFja2VkVmFyeWluZy0+aXNBcnJheUVsZW1lbnQoKSB8fCBwYWNr
ZWRWYXJ5aW5nLT5pc1N0cnVjdEZpZWxkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBwYWNrZWRWYXJ5aW5nLT5mdWxsTmFtZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhY2tlZFZhcnlpbmctPnZhcnlpbmctPm5hbWU7
Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhY2tlZFZhcnlpbmctPmZ1bGxOYW1lKHBhY2tl
ZFZhcnlpbmctPmZyb250VmFyeWluZy5zdGFnZSk7CiAgICAgfQogCiAgICAgLy8gSW5kZXggdG8g
dGhlIGFycmF5IG9mIHZhcnlpbmdzLgpAQCAtMTYxLDcgKzE5NCw4IEBAIGNsYXNzIFZhcnlpbmdQ
YWNraW5nIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBib29sIGNvbGxlY3RBbmRQ
YWNrVXNlclZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbU1lcmdlZFZhcnlpbmdzICZtZXJnZWRWYXJ5
aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiAmdGZWYXJ5aW5ncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJnRmVmFyeWluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIGlzU2VwYXJhYmxl
UHJvZ3JhbSk7CiAKICAgICBzdHJ1Y3QgUmVnaXN0ZXIKICAgICB7CkBAIC0xODIsMTMgKzIxNiwx
MSBAQCBjbGFzcyBWYXJ5aW5nUGFja2luZyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtUmVnaXN0ZXJMaXN0LnNpemUo
KSk7CiAgICAgfQogCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZnZXRJbmFj
dGl2ZVZhcnlpbmdNYXBwZWROYW1lcygpIGNvbnN0CisgICAgY29uc3QgU2hhZGVyTWFwPHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPj4gJmdldEluYWN0aXZlVmFyeWluZ01hcHBlZE5hbWVzKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtSW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXM7CiAg
ICAgfQogCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiAmZ2V0SW5w
dXRWYXJ5aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1JbnB1dFZhcnlpbmdzOyB9Ci0KICAgcHJpdmF0
ZToKICAgICBib29sIHBhY2tWYXJ5aW5nKGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlp
bmcpOwogICAgIGJvb2wgaXNGcmVlKHVuc2lnbmVkIGludCByZWdpc3RlclJvdywKQEAgLTE5OSwx
MSArMjMxLDIwIEBAIGNsYXNzIFZhcnlpbmdQYWNraW5nIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ29sdW1uLAogICAgICAg
ICAgICAgICAgIGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcpOwogCisgICAgdXNp
bmcgVmFyeWluZ1VuaXF1ZUZ1bGxOYW1lcyA9IFNoYWRlck1hcDxzdGQ6OnNldDxzdGQ6OnN0cmlu
Zz4+OworICAgIHZvaWQgcGFja1VzZXJWYXJ5aW5nKGNvbnN0IFByb2dyYW1WYXJ5aW5nUmVmICZy
ZWYsIFZhcnlpbmdVbmlxdWVGdWxsTmFtZXMgKnVuaXF1ZUZ1bGxOYW1lcyk7CisgICAgdm9pZCBw
YWNrVXNlclZhcnlpbmdGaWVsZChjb25zdCBQcm9ncmFtVmFyeWluZ1JlZiAmcmVmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpZWxkSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYXJ5aW5nVW5pcXVlRnVsbE5hbWVzICp1bmlxdWVGdWxsTmFtZXMp
OworICAgIHZvaWQgcGFja1VzZXJWYXJ5aW5nVEYoY29uc3QgUHJvZ3JhbVZhcnlpbmdSZWYgJnJl
Ziwgc2l6ZV90IHN1YnNjcmlwdCk7CisgICAgdm9pZCBwYWNrVXNlclZhcnlpbmdGaWVsZFRGKGNv
bnN0IFByb2dyYW1WYXJ5aW5nUmVmICZyZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZmllbGQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBmaWVsZEluZGV4KTsKKwogICAgIHN0ZDo6dmVjdG9yPFJlZ2lz
dGVyPiBtUmVnaXN0ZXJNYXA7CiAgICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZ1JlZ2lzdGVy
PiBtUmVnaXN0ZXJMaXN0OwotICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gbUlu
cHV0VmFyeWluZ3M7CiAgICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4gbVBhY2tlZFZhcnlp
bmdzOwotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtSW5hY3RpdmVWYXJ5aW5nTWFwcGVk
TmFtZXM7CisgICAgU2hhZGVyTWFwPHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPj4gbUluYWN0aXZl
VmFyeWluZ01hcHBlZE5hbWVzOwogCiAgICAgUGFja01vZGUgbVBhY2tNb2RlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2lu
Z191bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFy
eWluZ1BhY2tpbmdfdW5pdHRlc3QuY3BwCmluZGV4IDE0YTQ2OGUyMzYwNjVjYTUyNTFiNTgzZmMz
YTQ1ODgwMGEzMDU4YTEuLmRjYWU3MzIxYWVjYjU0NWRkYWQxNDg3Mzc1NjNhNGRiZGMzMDI4ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5n
UGFja2luZ191bml0dGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1ZhcnlpbmdQYWNraW5nX3VuaXR0ZXN0LmNwcApAQCAtMzAsOSArMzAsMTEgQEAgY2xh
c3MgVmFyeWluZ1BhY2tpbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdFdpdGhQYXJhbTxH
THVpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyeWluZ1BhY2tpbmcgKnZhcnlp
bmdQYWNraW5nKQogICAgIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4gcGFj
a2VkVmFyeWluZ3M7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byAmc2hWYXJ5aW5nIDogc2hWYXJ5
aW5ncykKKyAgICAgICAgZm9yIChjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnNoVmFyeWluZyA6
IHNoVmFyeWluZ3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHBhY2tlZFZhcnlpbmdzLnB1c2hf
YmFjayhQYWNrZWRWYXJ5aW5nKHNoVmFyeWluZywgc2hWYXJ5aW5nLmludGVycG9sYXRpb24pKTsK
KyAgICAgICAgICAgIHBhY2tlZFZhcnlpbmdzLnB1c2hfYmFjayhQYWNrZWRWYXJ5aW5nKAorICAg
ICAgICAgICAgICAgIFZhcnlpbmdJblNoYWRlclJlZihTaGFkZXJUeXBlOjpWZXJ0ZXgsICZzaFZh
cnlpbmcpLAorICAgICAgICAgICAgICAgIFZhcnlpbmdJblNoYWRlclJlZihTaGFkZXJUeXBlOjpG
cmFnbWVudCwgJnNoVmFyeWluZyksIHNoVmFyeWluZy5pbnRlcnBvbGF0aW9uKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBJbmZvTG9nIGluZm9Mb2c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5jcHAKaW5kZXggNGExYzNiMTVkNjJmY2Ez
NTM1ZTI3ZWEyNzI4ODkzMTMzZjU0MzdmOC4uNjU0YzlmMWQyM2Y0MWZhMzk3OTY1NGQzZTFiODhl
MjNlZmU2YmI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2FuZ2xldHlwZXMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9hbmdsZXR5cGVzLmNwcApAQCAtMjcsNiArMjcsMTIgQEAgUmFzdGVyaXplclN0YXRlOjpS
YXN0ZXJpemVyU3RhdGUoKQogICAgIHBvbHlnb25PZmZzZXRVbml0cyAgPSAwLjBmOwogICAgIHBv
aW50RHJhd01vZGUgICAgICAgPSBmYWxzZTsKICAgICBtdWx0aVNhbXBsZSAgICAgICAgID0gZmFs
c2U7CisgICAgZGl0aGVyICAgICAgICAgICAgICA9IHRydWU7Cit9CisKK1Jhc3Rlcml6ZXJTdGF0
ZTo6UmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZSAmb3RoZXIpCit7CisgICAg
bWVtY3B5KHRoaXMsICZvdGhlciwgc2l6ZW9mKFJhc3Rlcml6ZXJTdGF0ZSkpOwogfQogCiBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmFzdGVyaXplclN0YXRlICZhLCBjb25zdCBSYXN0ZXJpemVyU3Rh
dGUgJmIpCkBAIC00MywxOSArNDksMTcgQEAgQmxlbmRTdGF0ZTo6QmxlbmRTdGF0ZSgpCiB7CiAg
ICAgbWVtc2V0KHRoaXMsIDAsIHNpemVvZihCbGVuZFN0YXRlKSk7CiAKLSAgICBibGVuZCAgICAg
ICAgICAgICAgICAgPSBmYWxzZTsKLSAgICBzb3VyY2VCbGVuZFJHQiAgICAgICAgPSBHTF9PTkU7
Ci0gICAgc291cmNlQmxlbmRBbHBoYSAgICAgID0gR0xfT05FOwotICAgIGRlc3RCbGVuZFJHQiAg
ICAgICAgICA9IEdMX1pFUk87Ci0gICAgZGVzdEJsZW5kQWxwaGEgICAgICAgID0gR0xfWkVSTzsK
LSAgICBibGVuZEVxdWF0aW9uUkdCICAgICAgPSBHTF9GVU5DX0FERDsKLSAgICBibGVuZEVxdWF0
aW9uQWxwaGEgICAgPSBHTF9GVU5DX0FERDsKLSAgICBzYW1wbGVBbHBoYVRvQ292ZXJhZ2UgPSBm
YWxzZTsKLSAgICBkaXRoZXIgICAgICAgICAgICAgICAgPSB0cnVlOwotICAgIGNvbG9yTWFza1Jl
ZCAgICAgICAgICA9IHRydWU7Ci0gICAgY29sb3JNYXNrR3JlZW4gICAgICAgID0gdHJ1ZTsKLSAg
ICBjb2xvck1hc2tCbHVlICAgICAgICAgPSB0cnVlOwotICAgIGNvbG9yTWFza0FscGhhICAgICAg
ICA9IHRydWU7CisgICAgYmxlbmQgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgc291cmNlQmxl
bmRSR0IgICAgID0gR0xfT05FOworICAgIHNvdXJjZUJsZW5kQWxwaGEgICA9IEdMX09ORTsKKyAg
ICBkZXN0QmxlbmRSR0IgICAgICAgPSBHTF9aRVJPOworICAgIGRlc3RCbGVuZEFscGhhICAgICA9
IEdMX1pFUk87CisgICAgYmxlbmRFcXVhdGlvblJHQiAgID0gR0xfRlVOQ19BREQ7CisgICAgYmxl
bmRFcXVhdGlvbkFscGhhID0gR0xfRlVOQ19BREQ7CisgICAgY29sb3JNYXNrUmVkICAgICAgID0g
dHJ1ZTsKKyAgICBjb2xvck1hc2tHcmVlbiAgICAgPSB0cnVlOworICAgIGNvbG9yTWFza0JsdWUg
ICAgICA9IHRydWU7CisgICAgY29sb3JNYXNrQWxwaGEgICAgID0gdHJ1ZTsKIH0KIAogQmxlbmRT
dGF0ZTo6QmxlbmRTdGF0ZShjb25zdCBCbGVuZFN0YXRlICZvdGhlcikKQEAgLTYzLDExICs2Nyw2
IEBAIEJsZW5kU3RhdGU6OkJsZW5kU3RhdGUoY29uc3QgQmxlbmRTdGF0ZSAmb3RoZXIpCiAgICAg
bWVtY3B5KHRoaXMsICZvdGhlciwgc2l6ZW9mKEJsZW5kU3RhdGUpKTsKIH0KIAotYm9vbCBCbGVu
ZFN0YXRlOjphbGxDaGFubmVsc01hc2tlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFjb2xvck1h
c2tSZWQgJiYgIWNvbG9yTWFza0dyZWVuICYmICFjb2xvck1hc2tCbHVlICYmICFjb2xvck1hc2tB
bHBoYTsKLX0KLQogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJsZW5kU3RhdGUgJmEsIGNvbnN0IEJs
ZW5kU3RhdGUgJmIpCiB7CiAgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihCbGVuZFN0
YXRlKSkgPT0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9hbmdsZXR5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
YW5nbGV0eXBlcy5oCmluZGV4IGQyNDQzMGRlN2E3MGZlMzE2ZDQzNDAwYWQxYTg3YjExZjVhZDU4
YTYuLjU0ZDZkZDdmMmVmNTVlMWI3YTYxMmQ1NDA5ZTUxNTYzMjY2MGE0YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaApAQCAtMTI3
LDYgKzEyNyw3IEBAIHN0cnVjdCBSYXN0ZXJpemVyU3RhdGUgZmluYWwKIHsKICAgICAvLyBUaGlz
IHdpbGwgemVyby1pbml0aWFsaXplIHRoZSBzdHJ1Y3QsIGluY2x1ZGluZyBwYWRkaW5nLgogICAg
IFJhc3Rlcml6ZXJTdGF0ZSgpOworICAgIFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBSYXN0ZXJpemVy
U3RhdGUgJm90aGVyKTsKIAogICAgIGJvb2wgY3VsbEZhY2U7CiAgICAgQ3VsbEZhY2VNb2RlIGN1
bGxNb2RlOwpAQCAtMTQwLDYgKzE0MSw4IEBAIHN0cnVjdCBSYXN0ZXJpemVyU3RhdGUgZmluYWwK
ICAgICBib29sIG11bHRpU2FtcGxlOwogCiAgICAgYm9vbCByYXN0ZXJpemVyRGlzY2FyZDsKKwor
ICAgIGJvb2wgZGl0aGVyOwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJhc3Rlcml6ZXJT
dGF0ZSAmYSwgY29uc3QgUmFzdGVyaXplclN0YXRlICZiKTsKQEAgLTE1MSw4ICsxNTQsNiBAQCBz
dHJ1Y3QgQmxlbmRTdGF0ZSBmaW5hbAogICAgIEJsZW5kU3RhdGUoKTsKICAgICBCbGVuZFN0YXRl
KGNvbnN0IEJsZW5kU3RhdGUgJm90aGVyKTsKIAotICAgIGJvb2wgYWxsQ2hhbm5lbHNNYXNrZWQo
KSBjb25zdDsKLQogICAgIGJvb2wgYmxlbmQ7CiAgICAgR0xlbnVtIHNvdXJjZUJsZW5kUkdCOwog
ICAgIEdMZW51bSBkZXN0QmxlbmRSR0I7CkBAIC0xNjUsMTUgKzE2NiwxMyBAQCBzdHJ1Y3QgQmxl
bmRTdGF0ZSBmaW5hbAogICAgIGJvb2wgY29sb3JNYXNrR3JlZW47CiAgICAgYm9vbCBjb2xvck1h
c2tCbHVlOwogICAgIGJvb2wgY29sb3JNYXNrQWxwaGE7Ci0KLSAgICBib29sIHNhbXBsZUFscGhh
VG9Db3ZlcmFnZTsKLQotICAgIGJvb2wgZGl0aGVyOwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJsZW5kU3RhdGUgJmEsIGNvbnN0IEJsZW5kU3RhdGUgJmIpOwogYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEJsZW5kU3RhdGUgJmEsIGNvbnN0IEJsZW5kU3RhdGUgJmIpOwogCit1c2luZyBCbGVu
ZFN0YXRlQXJyYXkgPSBzdGQ6OmFycmF5PEJsZW5kU3RhdGUsIElNUExFTUVOVEFUSU9OX01BWF9E
UkFXX0JVRkZFUlM+OworCiBzdHJ1Y3QgRGVwdGhTdGVuY2lsU3RhdGUgZmluYWwKIHsKICAgICAv
LyBUaGlzIHdpbGwgemVyby1pbml0aWFsaXplIHRoZSBzdHJ1Y3QsIGluY2x1ZGluZyBwYWRkaW5n
LgpAQCAtNDg4LDggKzQ4Nyw3IEBAIHVzaW5nIEFjdGl2ZVRleHR1cmVNYXNrID0gYW5nbGU6OkJp
dFNldDxJTVBMRU1FTlRBVElPTl9NQVhfQUNUSVZFX1RFWFRVUkVTPjsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogdXNpbmcgQWN0aXZlVGV4dHVyZUFycmF5ID0gc3RkOjphcnJheTxULCBJTVBMRU1F
TlRBVElPTl9NQVhfQUNUSVZFX1RFWFRVUkVTPjsKIAotdXNpbmcgQWN0aXZlVGV4dHVyZVBvaW50
ZXJBcnJheSA9IEFjdGl2ZVRleHR1cmVBcnJheTxUZXh0dXJlICo+OwotdXNpbmcgQWN0aXZlVGV4
dHVyZVR5cGVBcnJheSAgICA9IEFjdGl2ZVRleHR1cmVBcnJheTxUZXh0dXJlVHlwZT47Cit1c2lu
ZyBBY3RpdmVUZXh0dXJlVHlwZUFycmF5ID0gQWN0aXZlVGV4dHVyZUFycmF5PFRleHR1cmVUeXBl
PjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB1c2luZyBVbmlmb3JtQnVmZmVyc0FycmF5ID0g
c3RkOjphcnJheTxULCBJTVBMRU1FTlRBVElPTl9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1M+
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1
cmVfZ2xlc18yXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9hdXRvZ2VuLmNwcAppbmRleCAxYzMwYThhMWQzYTk1MWI3
NmM0YWJkMmU0NWE1MzIxNTcwNDk4NjFmLi5iODQyYjg5YWE4MTRhZjhlZGNjMWVjNTFlYmI2MTVk
NmRkMTUwNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvY2FwdHVyZV9nbGVzXzJfMF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9hdXRvZ2VuLmNwcApAQCAtMTMwNSwx
NyArMTMwNSwxOCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZUdldFVuaWZvcm1mdihjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcykKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9n
cmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxv
Y2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlv
biwgbG9jYXRpb25QYWNrZWQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFtKCJwYXJh
bXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFy
YW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIsIHBhcmFtcywgJnBhcmFtc1BhcmFtLnZhbHVlKTsKLSAg
ICBDYXB0dXJlR2V0VW5pZm9ybWZ2X3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKKyAgICBDYXB0dXJlR2V0
VW5pZm9ybWZ2X3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFy
YW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJh
bSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3Jt
ZnYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTMyNCwxNyArMTMyNSwxOCBAQCBDYWxs
Q2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENh
cHR1cmUgQ2FwdHVyZUdldFVuaWZvcm1pdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgUGFyYW1CdWZm
ZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFt
UGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50
LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKIAogICAg
IFBhcmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0xpbnRQb2lu
dGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGludFBvaW50ZXIsIHBhcmFt
cywgJnBhcmFtc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0VW5pZm9ybWl2X3BhcmFtcyhn
bFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcywgJnBh
cmFtc1BhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybWl2X3BhcmFtcyhnbFN0YXRlLCBpc0Nh
bGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJl
KGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3JtaXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpA
QCAtMTkyNCwxMSArMTkyNiwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVGV4U3ViSW1hZ2UyRChj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9p
bnQ6OlRleFN1YkltYWdlMkQsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwogfQogCi1DYWxsQ2Fw
dHVyZSBDYXB0dXJlVW5pZm9ybTFmKGNvbnN0IFN0YXRlICZnbFN0YXRlLCBib29sIGlzQ2FsbFZh
bGlkLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCkKK0NhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtMWYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCB2MCkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9u
KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjApOwogCiAgICAgcmV0
dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMWYsIHN0ZDo6bW92ZShwYXJh
bUJ1ZmZlcikpOwpAQCAtMTkzNiwyOCArMTk0MSwzMSBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5p
Zm9ybTFmKGNvbnN0IFN0YXRlICZnbFN0YXRlLCBib29sIGlzQ2FsbFZhbGlkLCBHTGludCBsb2Nh
dAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTFmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1
ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1U
eXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNr
ZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpU
R0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwg
UGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFy
YW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsK
LSAgICBDYXB0dXJlVW5pZm9ybTFmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtMWZ2X3Zh
bHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAm
dmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFy
YW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTFm
diwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CiB9CiAKLUNhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtMWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMaW50IGxvY2F0
aW9uLCBHTGludCB2MCkKK0NhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMWkoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjApCiB7CiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIs
IFBhcmFtVHlwZTo6VEdMaW50LCB2MCk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVu
dHJ5UG9pbnQ6OlVuaWZvcm0xaSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xOTY1LDE4
ICsxOTczLDE4IEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMWkoY29uc3QgU3RhdGUgJmds
U3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMaW50IGxvY2F0CiAKIENhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtMWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2
YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAg
UGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBv
aW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMaW50Q29uc3RQb2ludGVy
LCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtMWl2X3ZhbHVl
KGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJh
bSk7CisgICAgQ2FwdHVyZVVuaWZvcm0xaXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZl
ci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0
dXJlKGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMWl2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsK
QEAgLTE5ODQsMTMgKzE5OTIsMTMgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xaXYoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMmYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2Vk
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxv
YXQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6
VEdMZmxvYXQsIHYxKTsKIApAQCAtMTk5OSwxOCArMjAwNywxOCBAQCBDYWxsQ2FwdHVyZSBDYXB0
dXJlVW5pZm9ybTJmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybTJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAg
UGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0
UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9p
bnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybTJmdl92
YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwgJnZhbHVl
UGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtMmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxs
Q2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTJmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVy
KSk7CkBAIC0yMDE4LDEzICsyMDI2LDEzIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMmZ2
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJpKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgdjEpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2Vk
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50
LCB2MCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRH
TGludCwgdjEpOwogCkBAIC0yMDMzLDE4ICsyMDQxLDE4IEBAIENhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtMmkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtMml2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkK
IHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVu
aWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1D
YXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIp
OwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMaW50Q29uc3RQb2ludGVyLCB2YWx1
ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtMml2X3ZhbHVlKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7Cisg
ICAgQ2FwdHVyZVVuaWZvcm0yaXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQ
YXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGds
OjpFbnRyeVBvaW50OjpVbmlmb3JtMml2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTIw
NTIsMTQgKzIwNjAsMTQgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yaXYoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM2YoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgdjIpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7
CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5
cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYwKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYxKTsKICAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYyKTsK
QEAgLTIwNjksMTggKzIwNzcsMTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0zZihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0zZnYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3Vu
dCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1
ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIElu
aXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFs
dWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm0zZnZfdmFsdWUoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0
dXJlVW5pZm9ybTNmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0
ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5
UG9pbnQ6OlVuaWZvcm0zZnYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMjA4OCwxNCAr
MjA5NiwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTNmdihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0zaShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MikKIHsKICAg
ICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMaW50LCB2MSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgidjIiLCBQYXJhbVR5cGU6OlRHTGludCwgdjIpOwpAQCAtMjEwNSwxOCArMjExMywx
OCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTNpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
CiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTNpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6
ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFt
VHlwZTo6VEdMaW50Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6
OlRHTGludENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0
dXJlVW5pZm9ybTNpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtM2l2X3ZhbHVlKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJh
bSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAog
ICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTNpdiwgc3RkOjpt
b3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0yMTI0LDcgKzIxMzIsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0
dXJlVW5pZm9ybTNpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVy
ZVVuaWZvcm00Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MiwKQEAgLTIxMzIsNyArMjE0MCw3IEBAIENhbGxD
YXB0dXJlIENhcHR1cmVVbmlmb3JtNGYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB7CiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIs
IFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJ2MSIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYxKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYyKTsKQEAgLTIxNDMsMTggKzIxNTEs
MTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2Vk
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdM
c2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBh
cmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFt
VHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0g
ICAgQ2FwdHVyZVVuaWZvcm00ZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlVW5pZm9ybTRmdl92YWx1
ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSwgJnZh
bHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFt
KSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm00ZnYs
IHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMjE2Miw3ICsyMTcwLDcgQEAgQ2FsbENhcHR1
cmUgQ2FwdHVyZVVuaWZvcm00ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtNGkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIsCkBAIC0yMTcwLDcgKzIxNzgsNyBAQCBDYWxs
Q2FwdHVyZSBDYXB0dXJlVW5pZm9ybTRpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogewogICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAi
LCBQYXJhbVR5cGU6OlRHTGludCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InYxIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYxKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMaW50LCB2Mik7CkBAIC0yMTgxLDE4ICsyMTg5LDE4IEBA
IENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtNGkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENh
bGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtNGl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAot
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xp
bnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwg
Y291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBl
OjpUR0xpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdM
aW50Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVV
bmlmb3JtNGl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlLCAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVVuaWZvcm00aXZfdmFsdWUoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtNGl2LCBzdGQ6Om1vdmUo
cGFyYW1CdWZmZXIpKTsKQEAgLTIyMDAsMjAgKzIyMDgsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVy
ZVVuaWZvcm00aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtTWF0cml4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1
ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0
aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwg
bG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50Iiwg
UGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAg
IFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25z
dFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBv
aW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm1NYXRy
aXgyZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSwKKyAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDJmdl92YWx1ZShnbFN0YXRlLCBp
c0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0yMjIyLDIwICsyMjMw
LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4MmZ2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDNmdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBs
b2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQi
LCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6
OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgi
dmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1W
YWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0u
dmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtTWF0cml4M2Z2X3ZhbHVlKGdsU3RhdGUsIGlzQ2Fs
bFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCisgICAgQ2FwdHVyZVVu
aWZvcm1NYXRyaXgzZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZh
bHVlUGFyYW0pKTsKIApAQCAtMjI0NCwyMCArMjI1MiwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybU1hdHJpeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2Fw
dHVyZVVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291
bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0cmFuc3Bvc2UpOwog
CiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9h
dENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENv
bnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9y
bU1hdHJpeDRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlLAorICAgIENhcHR1cmVVbmlmb3JtTWF0cml4NGZ2X3ZhbHVlKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOwogICAgIHBh
cmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX2F1
dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2ds
ZXNfMl8wX2F1dG9nZW4uaAppbmRleCBjYmY2OTcwN2EyYzE1MWEwYmEzZDg0N2Y3NjRiMzMyNWY0
OWYzYjQ5Li4yZThiYjMxMDJmNjYwNDY1NTgwNGNlZDI4YTAxNjZkODRhZWMxMDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJf
MF9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Nh
cHR1cmVfZ2xlc18yXzBfYXV0b2dlbi5oCkBAIC0zNDQsMTIgKzM0NCwxMiBAQCBhbmdsZTo6Q2Fs
bENhcHR1cmUgQ2FwdHVyZUdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWZ2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVHZXRVbmlmb3JtaXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKQEAgLTUxNywxMDMgKzUxNywx
MDMgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVUZXhTdWJJbWFnZTJEKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xZihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdjApOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMWZ2KGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtMWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB2MCk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVu
aWZvcm0xaXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtMmYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVy
ZVVuaWZvcm0yZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZVVuaWZvcm0yaShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtMml2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlVW5pZm9ybTNmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHYyKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5p
Zm9ybTNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVy
ZSBDYXB0dXJlVW5pZm9ybTNpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHYyKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTNpdihj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVu
aWZvcm00Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
djMpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtNGZ2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtNGkoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2Myk7CiBhbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZVVuaWZvcm00aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwogYW5n
bGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4MmZ2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwpAQCAtOTg5
LDEzICs5ODksMTMgQEAgdm9pZCBDYXB0dXJlR2V0VW5pZm9ybUxvY2F0aW9uX25hbWUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtZnZfcGFyYW1zKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq
cGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWl2X3BhcmFtcyhjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNh
cHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dl9wb2ludGVyKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMTA5NCw2OSArMTA5NCw2OSBAQCB2
b2lkIENhcHR1cmVUZXhTdWJJbWFnZTJEX3BpeGVscyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFt
Q2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtMWZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZv
cm0xaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1D
YXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm0yZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9y
bTJpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNh
cHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybTNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3Jt
M2l2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2Fw
dHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtNGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm00
aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0
dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtTWF0
cml4NGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX3BhcmFtcy5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9wYXJh
bXMuY3BwCmluZGV4IDkxODA1Njg1YzYyZGFiNmQ5ZGQ5YmU4MDRkNzM0YTgwMzA1MjVkNjIuLjBk
MWEyNjU5ODYwMjY1ZDAxYmU5ZjliNDY2MDgxOWE2Yjc3ZDNjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX3BhcmFtcy5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xl
c18yXzBfcGFyYW1zLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgQ2FwdHVyZUdldEFjdGl2
ZUF0dHJpYl9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIENhcHR1cmVTdHJpbmdMaW1pdChuYW1lLCBidWZTaXplLCBwYXJhbUNhcHR1cmUpOwogfQog
CiB2b2lkIENhcHR1cmVHZXRBY3RpdmVVbmlmb3JtX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIENhcHR1cmVHZXRBY3RpdmVVbmlmb3JtX2xlbmd0
aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
cmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBw
YXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBzaXplb2YoR0xzaXplaSk7CiB9CiAK
IHZvaWQgQ2FwdHVyZUdldEFjdGl2ZVVuaWZvcm1fc2l6ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
QEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENhcHR1cmVHZXRBY3RpdmVVbmlmb3JtX3NpemUoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xj
aGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBwYXJhbUNhcHR1
cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBzaXplb2YoR0xpbnQpOwogfQogCiB2b2lkIENhcHR1
cmVHZXRBY3RpdmVVbmlmb3JtX3R5cGUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC0yODIsNyAr
MjgyLDcgQEAgdm9pZCBDYXB0dXJlR2V0QWN0aXZlVW5pZm9ybV90eXBlKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2Fw
dHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcGFyYW1DYXB0dXJlLT5yZWFkQnVm
ZmVyU2l6ZUJ5dGVzID0gc2l6ZW9mKEdMZW51bSk7CiB9CiAKIHZvaWQgQ2FwdHVyZUdldEFjdGl2
ZVVuaWZvcm1fbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTI5Niw3ICsyOTYsNyBAQCB2
b2lkIENhcHR1cmVHZXRBY3RpdmVVbmlmb3JtX25hbWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJlU3RyaW5nTGltaXQobmFtZSwgYnVmU2l6
ZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0QXR0YWNoZWRTaGFkZXJzX2Nv
dW50KGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgQ2FwdHVy
ZUdldFByb2dyYW1JbmZvTG9nX2luZm9Mb2coY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB7CiAgICAg
Z2w6OlByb2dyYW0gKnByb2dyYW1PYmogPSBHZXRMaW5rZWRQcm9ncmFtRm9yQ2FwdHVyZShnbFN0
YXRlLCBwcm9ncmFtKTsKICAgICBBU1NFUlQocHJvZ3JhbU9iaik7Ci0gICAgcGFyYW1DYXB0dXJl
LT5yZWFkQnVmZmVyU2l6ZUJ5dGVzID0gcHJvZ3JhbU9iai0+Z2V0SW5mb0xvZ0xlbmd0aCgpICsg
MTsKKyAgICBwYXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBwcm9ncmFtT2JqLT5n
ZXRFeGVjdXRhYmxlKCkuZ2V0SW5mb0xvZ0xlbmd0aCgpICsgMTsKIH0KIAogdm9pZCBDYXB0dXJl
R2V0UHJvZ3JhbWl2X3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTQ1OCw3ICs0NTgs
OCBAQCB2b2lkIENhcHR1cmVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRfcmFuZ2UoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnByZWNpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgLy8gcmFuZ2Ugc3BlY2lmaWVzIGEgcG9pbnRlciB0byB0d28tZWxlbWVudCBhcnJheSBj
b250YWluaW5nIGxvZzIgb2YgbWluIGFuZCBtYXgKKyAgICBwYXJhbUNhcHR1cmUtPnJlYWRCdWZm
ZXJTaXplQnl0ZXMgPSAyICogc2l6ZW9mKEdMaW50KTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0U2hh
ZGVyUHJlY2lzaW9uRm9ybWF0X3ByZWNpc2lvbihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTQ2
OSw3ICs0NzAsNyBAQCB2b2lkIENhcHR1cmVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRfcHJlY2lz
aW9uKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcHJlY2lzaW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcGFyYW1DYXB0dXJlLT5yZWFkQnVmZmVyU2l6ZUJ5
dGVzID0gc2l6ZW9mKEdMaW50KTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0U2hhZGVyU291cmNlX2xl
bmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTUzOSw3ICs1NDAsNyBAQCB2b2lkIENhcHR1
cmVHZXRVbmlmb3JtTG9jYXRpb25fbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2Fw
dHVyZUdldFVuaWZvcm1mdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewpAQCAtNTQ5LDcgKzU1MCw3IEBAIHZv
aWQgQ2FwdHVyZUdldFVuaWZvcm1mdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lk
IENhcHR1cmVHZXRVbmlmb3JtaXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7CkBAIC03NDIsNyArNzQzLDcgQEAg
dm9pZCBDYXB0dXJlVGV4U3ViSW1hZ2UyRF9waXhlbHMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAK
IHZvaWQgQ2FwdHVyZVVuaWZvcm0xZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUg
KnBhcmFtQ2FwdHVyZSkKQEAgLTc1Miw3ICs3NTMsNyBAQCB2b2lkIENhcHR1cmVVbmlmb3JtMWZ2
X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2b2lkIENhcHR1cmVVbmlmb3JtMWl2X3Zh
bHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtNzYyLDcgKzc2
Myw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0xaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm0yZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1
cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTc3Miw3ICs3NzMsNyBAQCB2b2lkIENhcHR1cmVVbmlmb3Jt
MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2b2lkIENhcHR1cmVVbmlmb3JtMml2
X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtNzgyLDcg
Kzc4Myw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0yaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm0zZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNh
cHR1cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTc5Miw3ICs3OTMsNyBAQCB2b2lkIENhcHR1cmVVbmlm
b3JtM2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2b2lkIENhcHR1cmVVbmlmb3Jt
M2l2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtODAy
LDcgKzgwMyw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0zaXZfdmFsdWUoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm00ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJh
bUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTgxMiw3ICs4MTMsNyBAQCB2b2lkIENhcHR1cmVV
bmlmb3JtNGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2b2lkIENhcHR1cmVVbmlm
b3JtNGl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAt
ODIyLDcgKzgyMyw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm00aXZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlLApAQCAtODMzLDcgKzgzNCw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyZnZfdmFs
dWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzZnZf
dmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlLApAQCAtODQ0LDcgKzg0NSw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZv
cm1NYXRyaXgzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVu
aWZvcm1NYXRyaXg0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAtODU5LDcgKzg2MCw3IEBAIHZv
aWQgQ2FwdHVyZVZlcnRleEF0dHJpYjFmdl92KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICBDYXB0dXJlTWVtb3J5KHYsIHNpemVvZihHTGZsb2F0KSwgcGFyYW1D
YXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJlVmVydGV4QXR0cmliMmZ2X3YoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCkBAIC04NjgsNyArODY5LDcgQEAgdm9pZCBDYXB0dXJlVmVydGV4QXR0cmliMmZ2
X3YoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIENhcHR1cmVN
ZW1vcnkodiwgc2l6ZW9mKEdMZmxvYXQpICogMiwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBD
YXB0dXJlVmVydGV4QXR0cmliM2Z2X3YoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC04NzcsNyAr
ODc4LDcgQEAgdm9pZCBDYXB0dXJlVmVydGV4QXR0cmliM2Z2X3YoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIENhcHR1cmVNZW1vcnkodiwgc2l6ZW9mKEdMZmxv
YXQpICogMywgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJlVmVydGV4QXR0cmliNGZ2
X3YoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC04ODYsNyArODg3LDcgQEAgdm9pZCBDYXB0dXJl
VmVydGV4QXR0cmliNGZ2X3YoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIENhcHR1cmVNZW1vcnkodiwgc2l6ZW9mKEdMZmxvYXQpICogNCwgcGFyYW1DYXB0dXJl
KTsKIH0KIAogdm9pZCBDYXB0dXJlVmVydGV4QXR0cmliUG9pbnRlcl9wb2ludGVyKGNvbnN0IFN0
YXRlICZnbFN0YXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2NhcHR1cmVfZ2xlc18zXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmNwcAppbmRleCBkOWJm
OTY5ZmU4MGNiZTFhNTdjZTAyMzliZTRmY2U5MDhjZDhlM2Q1Li42NmZmMjFmMWVlNzE3MGEzYTNh
MzA4MTk3YzY1MTExOTE1MTFhZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmNw
cApAQCAtMTEzNywxNyArMTEzNywxNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybUlu
ZGljZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9y
bXVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1U
eXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7Cisg
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBw
YXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0x1aW50UG9pbnRlcik7CiAgICAgSW5p
dFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0x1aW50UG9pbnRlciwgcGFyYW1zLCAmcGFyYW1zUGFy
YW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRVbmlmb3JtdWl2X3BhcmFtcyhnbFN0YXRlLCBpc0Nh
bGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcywKKyAgICBDYXB0dXJlR2V0
VW5pZm9ybXVpdl9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw
YXJhbXNQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhcmFtc1Bh
cmFtKSk7CiAKQEAgLTE2MzIsMTEgKzE2MzIsMTQgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgcmV0dXJuIENh
bGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLCBzdGQ6
Om1vdmUocGFyYW1CdWZmZXIpKTsKIH0KIAotQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xdWko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMaW50IGxvY2F0aW9uLCBH
THVpbnQgdjApCitDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTF1aShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjApCiB7CiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIs
IFBhcmFtVHlwZTo6VEdMdWludCwgdjApOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpVbmlmb3JtMXVpLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTE2NDQs
MTggKzE2NDcsMTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xdWkoY29uc3QgU3RhdGUg
JmdsU3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMaW50IGxvY2EKIAogQ2FsbENhcHR1cmUgQ2Fw
dHVyZVVuaWZvcm0xdWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxv
Y2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIs
IFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQp
OwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1
aW50Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnRD
b25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZv
cm0xdWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
LCAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVVuaWZvcm0xdWl2X3ZhbHVlKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAg
ICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJl
dHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTF1aXYsIHN0ZDo6bW92ZShw
YXJhbUJ1ZmZlcikpOwpAQCAtMTY2MywxMyArMTY2NiwxMyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybTF1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtMnVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxKQogewogICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAi
LCBQYXJhbVR5cGU6OlRHTHVpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJ2MSIsIFBhcmFtVHlwZTo6VEdMdWludCwgdjEpOwogCkBAIC0xNjc4LDE4ICsxNjgxLDE4IEBA
IENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMnVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBD
YWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJ1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5
cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxv
Y2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tl
ZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRH
THNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQ
YXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFt
VHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAg
ICBDYXB0dXJlVW5pZm9ybTJ1aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlVW5pZm9ybTJ1aXZfdmFs
dWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUsICZ2
YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJh
bSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMnVp
diwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xNjk3LDE0ICsxNzAwLDE0IEBAIENhbGxD
YXB0dXJlIENhcHR1cmVVbmlmb3JtMnVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENh
cHR1cmUgQ2FwdHVyZVVuaWZvcm0zdWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
djEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIpCiB7CiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIs
IFBhcmFtVHlwZTo6VEdMdWludCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InYxIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2MSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgidjIiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIHYyKTsKQEAgLTE3MTQsMTggKzE3MTcsMTgg
QEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0zdWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAK
IENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM3Vpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1C
dWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFt
VHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFj
a2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6
VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIs
IFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFy
YW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwot
ICAgIENhcHR1cmVVbmlmb3JtM3Vpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtM3Vpdl92
YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSwg
JnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBh
cmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0z
dWl2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTE3MzMsNyArMTczNiw3IEBAIENhbGxD
YXB0dXJlIENhcHR1cmVVbmlmb3JtM3Vpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENh
cHR1cmUgQ2FwdHVyZVVuaWZvcm00dWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
djEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIsCkBAIC0xNzQxLDcg
KzE3NDQsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTR1aShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2MCk7CiAgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIHYxKTsKICAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMdWludCwgdjIpOwpAQCAt
MTc1MiwxOCArMTc1NSwxOCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTR1aShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00dWl2KGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBQ
YXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNv
dW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZh
bHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyKTsKICAgICBJ
bml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFs
dWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm00dWl2X3ZhbHVlKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CisgICAgQ2Fw
dHVyZVVuaWZvcm00dWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0o
c3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50
cnlQb2ludDo6VW5pZm9ybTR1aXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTc4Niwy
MCArMTc4OSwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybUJsb2NrQmluZGluZyhjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyeDNm
dihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZm
ZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxv
Y2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBh
cmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQ
YXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQ
b2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2lu
dGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtTWF0cml4
MngzZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSwKKyAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4M2Z2X3ZhbHVlKGdsU3RhdGUs
IGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIApAQCAtMTgwOCwyMCAr
MTgxMSwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4M2Z2KGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4NGZ2KGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBw
YXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRp
b25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1U
eXBlOjpUR0xzaXplaSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRy
YW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFt
Q2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50
ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIs
IHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyeDRm
dl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlLAorICAgIENhcHR1cmVVbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0xODMwLDIwICsxODMz
LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4M3gyZnYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFt
QnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJh
bVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBh
Y2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6
OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNw
b3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0
dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7
CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFs
dWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDN4MmZ2X3Zh
bHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUsCisgICAgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDJmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxW
YWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVy
LmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKQEAgLTE4NTIsMjAgKzE4NTUsMjAg
QEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDJmdihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDRmdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2Vk
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdM
c2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2Ui
LCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUg
dmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAg
ICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwg
JnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtTWF0cml4M3g0ZnZfdmFsdWUo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwK
KyAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDN4NGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRk
UGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIApAQCAtMTg3NCwyMCArMTg3NywyMCBAQCBD
YWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXpl
aSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBh
cmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1
ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIElu
aXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFs
dWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZShnbFN0
YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAorICAg
IENhcHR1cmVVbmlmb3JtTWF0cml4NHgyZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJh
bShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0xODk2LDIwICsxODk5LDIwIEBAIENhbGxD
YXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4NHgyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAK
IENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4NHgzZnYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0g
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFj
a2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBj
b3VudCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1U
eXBlOjpUR0xib29sZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFy
YW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBh
cmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBh
cmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDR4M2Z2X3ZhbHVlKGdsU3RhdGUs
IGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCisgICAgQ2Fw
dHVyZVVuaWZvcm1NYXRyaXg0eDNmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0
ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX2F1dG9nZW4uaAppbmRl
eCBhYjk5YmJjMzJmMDk1YjliYzQyY2FjNmFlODVjZDA4NDEzMTNkZmRhLi5kYTBmZjNiMTkyMTgx
YWFhNGE2ZmJlYmQ0N2NlNTZlN2VjYjUzZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzBfYXV0b2dl
bi5oCkBAIC0zMjUsNyArMzI1LDcgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlm
b3JtSW5kaWNlcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlR2V0VW5pZm9ybXVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgKnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFZlcnRleEF0dHJp
Yklpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCkBAIC00NjcsNDQgKzQ2Nyw0NCBAQCBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlck1vZGUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtMXVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCk7CiBhbmdsZTo6Q2FsbENhcHR1cmUg
Q2FwdHVyZVVuaWZvcm0xdWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKIGFu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJ1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxKTsKIGFuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJ1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM3VpKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyKTsK
IGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTN1aXYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtNHVpKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2Myk7CiBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00dWl2KGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybUJsb2NrQmlu
ZGluZyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTUxNCwzNyArNTE0LDM3IEBAIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybUJsb2NrQmluZGluZyhjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
dW5pZm9ybUJsb2NrQmluZGluZyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1N
YXRyaXgyeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVVbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDN4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDRmdihjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4
NHgyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybU1hdHJpeDR4M2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CkBAIC05MDYsNyArOTA2
LDcgQEAgdm9pZCBDYXB0dXJlR2V0VW5pZm9ybUluZGljZXNfdW5pZm9ybUluZGljZXMoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtdWl2X3BhcmFtcyhjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFy
YW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlR2V0VmVydGV4QXR0cmliSWl2
X3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTk5Miw2NiArOTkyLDY2IEBAIHZvaWQg
Q2FwdHVyZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NfdmFyeWluZ3MoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtMXVp
dl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFy
YW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm0ydWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0
dXJlVW5pZm9ybTN1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJh
bUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtNHVpdl92YWx1ZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJl
KTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRy
aXgyeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0
dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1N
YXRyaXgzeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1D
YXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZv
cm1NYXRyaXg0eDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVz
XzNfMF9wYXJhbXMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Nh
cHR1cmVfZ2xlc18zXzBfcGFyYW1zLmNwcAppbmRleCBhMTkxZDI2ZDM1YTI3NjJhMzhiNjhjZGVm
MmQ5NGQ5OTAxMThiYzk0Li5lMGQyOTNjODdlYjkxMjI1ZGIxNDViNzUyNjRhZmY4MjUyMDMzOTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVy
ZV9nbGVzXzNfMF9wYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX3BhcmFtcy5jcHAKQEAgLTE1Niw3ICsxNTYsOCBAQCB2
b2lkIENhcHR1cmVEcmF3UmFuZ2VFbGVtZW50c19pbmRpY2VzKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRp
Y2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUg
KnBhcmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQ2FwdHVyZURyYXdF
bGVtZW50c19pbmRpY2VzKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBtb2RlUGFja2VkLCBjb3VudCwg
dHlwZVBhY2tlZCwgaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJlR2VuUXVlcmllc19pZHNQYWNrZWQoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCkBAIC0zMjEsNyArMzIyLDMzIEBAIHZvaWQgQ2FwdHVyZUdldEludGVy
bmFsZm9ybWF0aXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICAvLyBGcm9tIHRoZSBPcGVuR0wgRVMgMy4wIHNwZWM6Cisg
ICAgLy8KKyAgICAvLyBUaGUgaW5mb3JtYXRpb24gcmV0cmlldmVkIHdpbGwgYmUgd3JpdHRlbiB0
byBtZW1vcnkgYWRkcmVzc2VkIGJ5IHRoZSBwb2ludGVyIHNwZWNpZmllZCBpbgorICAgIC8vIHBh
cmFtcy4KKyAgICAvLworICAgIC8vIE5vIG1vcmUgdGhhbiBidWZTaXplIGludGVnZXJzIHdpbGwg
YmUgd3JpdHRlbiB0byB0aGlzIG1lbW9yeS4KKyAgICAvLworICAgIC8vIElmIHBuYW1lIGlzIEdM
X05VTV9TQU1QTEVfQ09VTlRTLCB0aGUgbnVtYmVyIG9mIHNhbXBsZSBjb3VudHMgdGhhdCB3b3Vs
ZCBiZSByZXR1cm5lZCBieQorICAgIC8vIHF1ZXJ5aW5nIEdMX1NBTVBMRVMgd2lsbCBiZSByZXR1
cm5lZCBpbiBwYXJhbXMuCisgICAgLy8KKyAgICAvLyBJZiBwbmFtZSBpcyBHTF9TQU1QTEVTLCB0
aGUgc2FtcGxlIGNvdW50cyBzdXBwb3J0ZWQgZm9yIGludGVybmFsZm9ybWF0IGFuZCB0YXJnZXQg
YXJlIHdyaXR0ZW4KKyAgICAvLyBpbnRvIHBhcmFtcyBpbiBkZXNjZW5kaW5nIG51bWVyaWMgb3Jk
ZXIuIE9ubHkgcG9zaXRpdmUgdmFsdWVzIGFyZSByZXR1cm5lZC4KKyAgICAvLworICAgIC8vIFF1
ZXJ5aW5nIEdMX1NBTVBMRVMgd2l0aCBidWZTaXplIG9mIG9uZSB3aWxsIHJldHVybiBqdXN0IHRo
ZSBtYXhpbXVtIHN1cHBvcnRlZCBudW1iZXIgb2YKKyAgICAvLyBzYW1wbGVzIGZvciB0aGlzIGZv
cm1hdC4KKworICAgIGlmIChidWZTaXplID09IDApCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChwYXJhbXMpCisgICAgeworICAgICAgICAvLyBGb3IgR0xfTlVNX1NBTVBMRV9DT1VOVFMsIG9u
bHkgb25lIHZhbHVlIGlzIHJldHVybmVkCisgICAgICAgIC8vIEZvciBHTF9TQU1QTEVTLCB0d28g
dmFsdWVzIHdpbGwgYmUgcmV0dXJuZWQsIHVubGVzcyBidWZTaXplIGxpbWl0cyBpdCB0byBvbmUK
KyAgICAgICAgdWludDMyX3QgcGFyYW1Db3VudCA9IChwbmFtZSA9PSBHTF9TQU1QTEVTICYmIGJ1
ZlNpemUgPiAxKSA/IDIgOiAxOworCisgICAgICAgIHBhcmFtQ2FwdHVyZS0+cmVhZEJ1ZmZlclNp
emVCeXRlcyA9IHNpemVvZihHTGludCkgKiBwYXJhbUNvdW50OworICAgIH0KIH0KIAogdm9pZCBD
YXB0dXJlR2V0UHJvZ3JhbUJpbmFyeV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC0z
MzMsNyArMzYwLDEwIEBAIHZvaWQgQ2FwdHVyZUdldFByb2dyYW1CaW5hcnlfbGVuZ3RoKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIGlmIChsZW5n
dGgpCisgICAgeworICAgICAgICBwYXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBz
aXplb2YoR0xzaXplaSk7CisgICAgfQogfQogCiB2b2lkIENhcHR1cmVHZXRQcm9ncmFtQmluYXJ5
X2JpbmFyeUZvcm1hdChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTM0NSw3ICszNzUsNyBAQCB2
b2lkIENhcHR1cmVHZXRQcm9ncmFtQmluYXJ5X2JpbmFyeUZvcm1hdChjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJp
bmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBwYXJhbUNh
cHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBzaXplb2YoR0xlbnVtKTsKIH0KIAogdm9pZCBD
YXB0dXJlR2V0UHJvZ3JhbUJpbmFyeV9iaW5hcnkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC0z
NTcsNyArMzg3LDIyIEBAIHZvaWQgQ2FwdHVyZUdldFByb2dyYW1CaW5hcnlfYmluYXJ5KGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIC8vIElmIHdl
IGhhdmUgbGVuZ3RoLCB0aGVuIGFjdHVhbCBiaW5hcnlTaXplIHdhcyB3cml0dGVuIHRoZXJlCisg
ICAgLy8gT3RoZXJ3aXNlLCB3ZSBkb24ndCBrbm93IGhvdyBtYW55IGJ5dGVzIHdlcmUgd3JpdHRl
bgorICAgIGlmICghbGVuZ3RoKQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgR0xzaXplaSBiaW5hcnlTaXplID0gKmxlbmd0aDsK
KyAgICBpZiAoYmluYXJ5U2l6ZSA+IGJ1ZlNpemUpCisgICAgeworICAgICAgICAvLyBUaGlzIGlz
IGEgR0wgZXJyb3IsIGJ1dCBjbGFtcCBpdCBhbnl3YXkKKyAgICAgICAgYmluYXJ5U2l6ZSA9IGJ1
ZlNpemU7CisgICAgfQorCisgICAgcGFyYW1DYXB0dXJlLT5yZWFkQnVmZmVyU2l6ZUJ5dGVzID0g
YmluYXJ5U2l6ZTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0UXVlcnlPYmplY3R1aXZfcGFyYW1zKGNv
bnN0IFN0YXRlICZnbFN0YXRlLApAQCAtNTE1LDcgKzU2MCw3IEBAIHZvaWQgQ2FwdHVyZUdldFVu
aWZvcm1JbmRpY2VzX3VuaWZvcm1JbmRpY2VzKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlR2V0VW5pZm9ybXVpdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7CkBAIC02NjksNyArNzE0
LDcgQEAgdm9pZCBDYXB0dXJlVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nc192YXJ5aW5ncyhjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybTF1aXZfdmFsdWUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtNjc5LDcgKzcyNCw3
IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0xdWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
CiB2b2lkIENhcHR1cmVVbmlmb3JtMnVpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1D
YXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC02ODksNyArNzM0LDcgQEAgdm9pZCBDYXB0dXJlVW5p
Zm9ybTJ1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZv
cm0zdWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVy
ZSkKQEAgLTY5OSw3ICs3NDQsNyBAQCB2b2lkIENhcHR1cmVVbmlmb3JtM3Vpdl92YWx1ZShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybTR1aXZfdmFsdWUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtNzA5LDcgKzc1NCw3
IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm00dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
CiB2b2lkIENhcHR1cmVVbmlmb3JtTWF0cml4MngzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlLApAQCAtNzIwLDcgKzc2NSw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyeDNm
dl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJp
eDJ4NGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTczMSw3ICs3NzYsNyBA
QCB2b2lkIENhcHR1cmVVbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUsCkBAIC03NDIsNyArNzg3LDcgQEAgdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJp
eDN4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2b2lkIENhcHR1cmVVbmlmb3Jt
TWF0cml4M3g0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAtNzUzLDcgKzc5
OCw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDR4MmZ2X3ZhbHVlKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTc2NCw3ICs4MDksNyBAQCB2b2lkIENhcHR1cmVVbmlmb3Jt
TWF0cml4NHgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVu
aWZvcm1NYXRyaXg0eDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNf
MV9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0
dXJlX2dsZXNfM18xX2F1dG9nZW4uY3BwCmluZGV4IDYyY2JhNjZmODQ5MzRiYzQ5NWQyNzE4MmMy
NGIyYTdiMGJhNjNmMGYuLjU2MGM1OWE1NTQ1NWZiYWI4Y2JiZTBmOWE3NGVmNzdjNzNjM2NlY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJl
X2dsZXNfM18xX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4uY3BwCkBAIC01NjgsMTMgKzU2OCwxMyBA
QCBDYWxsQ2FwdHVyZSBDYXB0dXJlTWVtb3J5QmFycmllckJ5UmVnaW9uKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdjApCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpU
U2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYwKTsKIAogICAgIHJldHVybiBDYWxsQ2Fw
dHVyZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xZiwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7CkBAIC01ODMsMjAgKzU4MywyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVu
aWZvcm0xZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTFmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewog
ICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3Jh
bVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJh
bVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBh
Y2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6
OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUi
LCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQ
YXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUp
OwotICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxp
ZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTFmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1
ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dy
YW1Vbmlmb3JtMWZ2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTYwNSwxMyArNjA1LDEz
IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFmdihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFpKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MCkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFk
ZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYwKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShn
bDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xaSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7
CkBAIC02MjAsMjAgKzYyMCwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0x
aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9y
bTFpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBQYXJh
bUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBy
b2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQp
OwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXpl
aSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1U
eXBlOjpUR0xpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6
VEdMaW50Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1
cmVQcm9ncmFtVW5pZm9ybTFpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFpdl92YWx1
ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgJnZhbHVlUGFy
YW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAK
ICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtMWl2
LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTY0MiwxMyArNjQyLDEzIEBAIENhbGxDYXB0
dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxD
YXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTF1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjApCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJv
Z3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIs
IFBhcmFtVHlwZTo6VEdMdWludCwgdjApOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybTF1aSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBA
IC02NTcsMjAgKzY1NywyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0x
dWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAg
ICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1Q
YWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1U
eXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNr
ZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpU
R0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwg
UGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJh
bVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0g
ICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMXVpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm0xdWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1
ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dy
YW1Vbmlmb3JtMXVpdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC02NzksMTQgKzY3OSwx
NCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWl2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMmYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHYxKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclBy
b2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAi
LCBQYXJhbVR5cGU6OlRHTGZsb2F0LCB2MCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgidjEiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCB2MSk7CiAKQEAgLTY5NiwyMCArNjk2LDIwIEBA
IENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJmKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMmZ2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1U
eXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7Cisg
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBh
cmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBv
aW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50
ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQ
YXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2Fs
bFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxs
Q2FwdHVyZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0yZnYsIHN0ZDo6bW92ZShwYXJh
bUJ1ZmZlcikpOwpAQCAtNzE4LDE0ICs3MTgsMTQgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtMmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtMmkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFy
YW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2Vk
IiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2Nh
dGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCB2MCk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGludCwgdjEpOwogCkBA
IC03MzUsMjAgKzczNSwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yaShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJp
dihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1
ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dy
YW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwot
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xp
bnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwg
Y291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBl
OjpUR0xpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdM
aW50Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybTJpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJpdl92YWx1ZShn
bFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgJnZhbHVlUGFyYW0p
OwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAg
ICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtMml2LCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTc1NywxNCArNzU3LDE0IEBAIENhbGxDYXB0dXJl
IENhcHR1cmVQcm9ncmFtVW5pZm9ybTJpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0
dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJ1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxKQog
ewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJv
Z3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQ
YXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlv
blBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAiLCBQYXJhbVR5cGU6
OlRHTHVpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFt
VHlwZTo6VEdMdWludCwgdjEpOwogCkBAIC03NzQsMjAgKzc3NCwyMCBAQCBDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVy
ZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZv
cm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0
dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyKTsK
ICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIHZhbHVl
LCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMnVpdl92YWx1
ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsK
KyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVy
LmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1
cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtMnVpdiwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7CkBAIC03OTYsNyArNzk2LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtMnVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTNmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgdjIpCkBAIC04MDQsNyArODA0LDcgQEAgQ2FsbENhcHR1cmUg
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtM2YoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1C
dWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9n
cmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsK
LSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdM
aW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIHYw
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMZmxv
YXQsIHYxKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6
VEdMZmxvYXQsIHYyKTsKQEAgLTgxNSwyMCArODE1LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybTNmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVy
ZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlE
LCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxv
Y2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBh
cmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFt
KCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJh
bVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJh
bS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2Z2X3ZhbHVlKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtM2Z2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjpt
b3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2lu
dDo6UHJvZ3JhbVVuaWZvcm0zZnYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtODM3LDcg
KzgzNyw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTNmdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTNpKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIp
CkBAIC04NDUsNyArODQ1LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2ko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpU
U2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCB2MCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGludCwgdjEpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYyKTsKQEAgLTg1NiwyMCArODU2
LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTNpKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2l2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBh
cmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24p
OworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAg
ICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0
UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50
ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
M2l2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQ
YXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2l2X3ZhbHVlKGdsU3RhdGUsIGlzQ2Fs
bFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxs
Q2FwdHVyZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0zaXYsIHN0ZDo6bW92ZShwYXJh
bUJ1ZmZlcikpOwpAQCAtODc4LDcgKzg3OCw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTNpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9n
cmFtVW5pZm9ybTN1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MikKQEAgLTg4Niw3ICs4ODYsNyBAQCBDYWxs
Q2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zdWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFt
UGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFt
VHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFj
a2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdM
dWludCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBl
OjpUR0x1aW50LCB2MSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjIiLCBQYXJh
bVR5cGU6OlRHTHVpbnQsIHYyKTsKQEAgLTg5NywyMCArODk3LDIwIEBAIENhbGxDYXB0dXJlIENh
cHR1cmVQcm9ncmFtVW5pZm9ybTN1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJl
IENhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9y
bUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1
cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIpOwog
ICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgdmFsdWUs
ICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zdWl2X3ZhbHVl
KGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOwor
ICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVy
ZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0zdWl2LCBzdGQ6Om1vdmUocGFyYW1CdWZm
ZXIpKTsKQEAgLTkxOSw3ICs5MTksNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm0zdWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1V
bmlmb3JtNGYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB2MiwKQEAgLTkyOCw3ICs5MjgsNyBAQCBDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm00Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1
ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dy
YW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwot
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xp
bnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjAp
OwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xmbG9h
dCwgdjEpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYyIiwgUGFyYW1UeXBlOjpU
R0xmbG9hdCwgdjIpOwpAQCAtOTQwLDIwICs5NDAsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtNGYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm00ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQs
IHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9u
IiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9j
YXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0o
InZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFt
VmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFt
LnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00ZnZfdmFsdWUoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm00ZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1v
dmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpQcm9ncmFtVW5pZm9ybTRmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC05NjIsNyAr
OTYyLDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNGZ2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNGkoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MiwK
QEAgLTk3MSw3ICs5NzEsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZv
cm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMaW50LCB2MSk7CiAgICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgidjIiLCBQYXJhbVR5cGU6OlRHTGludCwgdjIpOwpAQCAtOTgzLDIwICs5ODMs
MjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNGkoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aXYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFy
YW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7
CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5
cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAg
IFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMaW50Q29uc3RQ
b2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRl
ciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00
aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBh
cmFtKTsKKyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxs
VmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxD
YXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybTRpdiwgc3RkOjptb3ZlKHBhcmFt
QnVmZmVyKSk7CkBAIC0xMDA1LDcgKzEwMDUsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3Jh
bVVuaWZvcm00aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm00dWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIsCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBD
YWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00dWkoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9n
cmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBh
cmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9u
UGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6
VEdMdWludCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1U
eXBlOjpUR0x1aW50LCB2MSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjIiLCBQ
YXJhbVR5cGU6OlRHTHVpbnQsIHYyKTsKQEAgLTEwMjYsMjAgKzEwMjYsMjAgQEAgQ2FsbENhcHR1
cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNHVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENh
cHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNHVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBl
OjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRV
bmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFt
Q2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRl
cik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCB2
YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1aXZf
dmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJh
bSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNHVpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxW
YWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxD
YXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybTR1aXYsIHN0ZDo6bW92ZShwYXJh
bUJ1ZmZlcikpOwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtNHVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0x
MDU2LDEzICsxMDU2LDEzIEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6
VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwg
dHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFt
VHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlw
ZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAg
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtTWF0cml4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5h
ZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBD
YWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTEwODAsMTQgKzEwODAs
MTQgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVy
UHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9j
YXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJj
b3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7
CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZs
b2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0
Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQcm9n
cmFtVW5pZm9ybU1hdHJpeDJ4M2Z2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAg
IHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1
cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYs
IHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgQ2FsbENhcHR1
cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTExMDQsMTQgKzExMDQsMTQgQEAg
Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3Jh
bUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2Nh
dGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIs
IFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAg
ICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29u
c3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQ
b2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4NGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDJ4NGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2Fs
bENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYsIHN0ZDo6
bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTEyMCw3ICsxMTIwLDcgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxs
Q2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQpAQCAtMTEyOCwxMyArMTEyOCwxMyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1CdWZm
ZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFt
UGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50
LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNv
dW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5
cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJh
bSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFy
YW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFy
YW0udmFsdWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShnbFN0
YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgIENh
cHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAg
ICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIApAQCAtMTE0
NCw3ICsxMTQ0LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
TWF0cml4M3gyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBA
IC0xMTUyLDE0ICsxMTUyLDE0IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1h
dHJpeDN4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBh
cmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24p
OworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29s
ZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwg
UGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFy
YW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsK
LSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdl92YWx1ZShnbFN0YXRlLCBpc0Nh
bGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFt
KTsKKyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdl92YWx1ZShnbFN0YXRlLCBp
c0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsICZ2
YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJh
bSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5p
Zm9ybU1hdHJpeDN4MmZ2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTExNjgsNyArMTE2
OCw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4
M3g0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0xMTc2
LDE0ICsxMTc2LDE0IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4
NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwog
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpU
VW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0
cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1U
eXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
OjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxp
ZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAg
ICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxW
YWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBh
cmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwog
CiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybU1h
dHJpeDN4NGZ2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTExOTIsNyArMTE5Miw3IEBA
IENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTEyMDAsMTMgKzEyMDAsMTMgQEAgQ2FsbENh
cHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJv
Z3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQ
YXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlv
blBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5
cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidHJh
bnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1D
YXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRl
cik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwg
dmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0ZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwKKyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnZfdmFsdWUoZ2xTdGF0
ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSwg
JnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBh
cmFtKSk7CiAKQEAgLTEyMTYsNyArMTIxNiw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1
cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQpAQCAtMTIyNCwxNCArMTIyNCwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJh
bUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBy
b2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQp
OwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXpl
aSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBh
cmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1
ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIElu
aXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFs
dWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnZfdmFs
dWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZh
bHVlLCAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnZf
dmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3Rk
Ojptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQ
b2ludDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7
CkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9n
cmFtVW5pZm9ybU1hdHJpeDR4M2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQpAQCAtMTI0OCwxNCArMTI0OCwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZl
ciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291
bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlw
ZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFt
KCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJh
bVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJh
bS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZfdmFsdWUoZ2xT
dGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlLCAm
dmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZfdmFsdWUo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3Zl
KHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVz
XzNfMV9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2Fw
dHVyZV9nbGVzXzNfMV9hdXRvZ2VuLmgKaW5kZXggZmFiNGU2NDZhMDhjZjIwNjFmMjdjNTNhNzc1
M2YxMjFmNjBjN2FkNy4uMjJjNTRlMjM0ZDU5NTBhYTMzN2YyZTUzZTdkOGU5ZWMyNDkxNzQwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVf
Z2xlc18zXzFfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4uaApAQCAtMTY0LDExNSArMTY0LDExNSBAQCBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZU1lbW9yeUJhcnJpZXJCeVJlZ2lvbihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xZihj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHYwKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xZnYoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtMWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdjApOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTFpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtMXVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7
CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMmYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxKTsKIGFu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yZnYoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMmko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
djEpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJpdihjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtMnVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjEpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTJ1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2Mik7CiBhbmdsZTo6Q2FsbENhcHR1cmUg
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5n
bGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTNpKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyKTsKIGFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zaXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwog
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIpOwog
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aXYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVu
aWZvcm00Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCB2MiwKQEAgLTI4MCwxMyArMjgwLDEzIEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm00Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNGkoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIsCkBAIC0yOTQs
MTMgKzI5NCwxMyBAQCBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNGko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1V
bmlmb3JtNGl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm00dWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyLApAQCAtMzA4LDY5ICszMDgsNjkgQEAg
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1aShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00dWl2KGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVy
ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNh
bGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1V
bmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0
cml4M3gyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybU1hdHJpeDRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDR4M2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CkBAIC01NzAsOTEgKzU3
MCw5MSBAQCB2b2lkIENhcHR1cmVHZXRUZXhMZXZlbFBhcmFtZXRlcml2X3BhcmFtcyhjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWZ2X3ZhbHVlKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm0xaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFs
dWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWl2X3ZhbHVl
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUp
Owogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTJpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2Fw
dHVyZSk7CiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJ1aXZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1
cmVQcm9ncmFtVW5pZm9ybTNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2l2X3ZhbHVl
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQg
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtM3Vpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtNGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNh
cHR1cmUpOwogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aXZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlUHJvZ3Jh
bVVuaWZvcm00dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZf
dmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC02NjIsNyArNjYyLDcgQEAgdm9pZCBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2
b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQg
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDJ4NGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBA
IC02ODYsNyArNjg2LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZfdmFs
dWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDN4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC02OTQs
NyArNjk0LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdl92YWx1ZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0
ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTcwMiw3ICs3
MDIsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2X3ZhbHVlKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnZfdmFs
dWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lk
IENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUsCkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX3BhcmFtcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMV9wYXJhbXMuY3BwCmluZGV4IDFkYTAz
ZWI0MzI4OTlmNzY2YmJlZTJhYTgzMmRlMDIyZGVjN2ViM2QuLjMyZmFmNzlmODhlNjkyNzA1MTI5
Nzc0MWQ0YzJiMzZkYTdhNzE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX3BhcmFtcy5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzFfcGFyYW1zLmNwcApA
QCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQ2FwdHVyZUdldFRleExldmVsUGFyYW1ldGVyaXZfcGFy
YW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xZnZf
dmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMjYwLDcgKzI2MCw3IEBA
IHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFs
dWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBh
cmFtQ2FwdHVyZSkKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9y
bTFpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtMXVpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC0y
ODIsNyArMjgyLDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWl2X3ZhbHVlKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yZnZfdmFsdWUoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtMmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0yaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVy
ZSkKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJpdl92YWx1
ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMnVpdl92
YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC0zMTUsNyArMzE1
LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zZnZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtM2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm0zaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTMz
Nyw3ICszMzcsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTNpdl92YWx1ZShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM3Vpdl92YWx1ZShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9p
ZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zdWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
dm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFy
YW1DYXB0dXJlKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
NGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm00aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTM3MCw3ICszNzAs
NyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNHVpdl92YWx1ZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFy
YW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm00dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC0zOTMsNyArMzkz
LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2X3ZhbHVl
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZv
aWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSwKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1h
dHJpeDJ4NGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC00MjksNyArNDI5LDcgQEAgdm9p
ZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2X3ZhbHVlKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUsCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVy
ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwK
QEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2
X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lk
IENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUsCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1V
bmlmb3JtTWF0cml4NHgzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18y
X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1
cmVfZ2xlc18zXzJfYXV0b2dlbi5jcHAKaW5kZXggYzRkZWY5M2I1ZjFmYzZjY2Y4YjU0MGU4Yjgx
NGY2ZWRlMjRlMDE0Zi4uMjBhNWZiMjUyOWRlZmZjMzZhN2JjYjlhNGFiOTNlZDAyNTIwMjVhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVf
Z2xlc18zXzJfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJfYXV0b2dlbi5jcHAKQEAgLTU2OSwyMCArNTY5LDIwIEBA
IENhbGxDYXB0dXJlIENhcHR1cmVHZXRUZXhQYXJhbWV0ZXJJdWl2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtZnYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKIHsK
ICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dy
YW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25Q
YWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5
cGU6OlRHTHNpemVpLCBidWZTaXplKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgi
cGFyYW1zIiwgUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVl
KFBhcmFtVHlwZTo6VEdMZmxvYXRQb2ludGVyLCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7
Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3JtZnZfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVHZXRuVW5pZm9ybWZ2
X3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgJnBh
cmFtc1BhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGFyYW1zUGFy
YW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0blVuaWZv
cm1mdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC01OTEsMjAgKzU5MSwyMCBAQCBDYWxs
Q2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1mdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxD
YXB0dXJlIENhcHR1cmVHZXRuVW5pZm9ybWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIFBhcmFtQnVm
ZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3Jh
bVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0g
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFj
a2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiYnVmU2l6ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IGJ1ZlNpemUpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFtKCJwYXJhbXMiLCBQYXJh
bVR5cGU6OlRHTGludFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdM
aW50UG9pbnRlciwgcGFyYW1zLCAmcGFyYW1zUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRu
VW5pZm9ybWl2X3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGJ1ZlNpemUsIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnBhcmFtc1BhcmFtKTsKKyAgICBDYXB0dXJlR2V0blVuaWZvcm1pdl9wYXJhbXMoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsICZwYXJhbXNQYXJhbSk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhcmFtc1BhcmFtKSk7CiAKICAgICByZXR1
cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdldG5Vbmlmb3JtaXYsIHN0ZDo6bW92ZShw
YXJhbUJ1ZmZlcikpOwpAQCAtNjEzLDIwICs2MTMsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdl
dG5Vbmlmb3JtaXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0
blVuaWZvcm11aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFt
QnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIs
IFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRp
b24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFy
YW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgiYnVmU2l6ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGJ1ZlNpemUp
OwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRH
THVpbnRQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnRQb2lu
dGVyLCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3Jt
dWl2X3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGJ1ZlNpemUsIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJh
bXNQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2X3BhcmFtcyhnbFN0YXRlLCBpc0Nh
bGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsICZwYXJhbXNQYXJhbSk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhcmFtc1BhcmFtKSk7CiAKICAgICByZXR1cm4g
Q2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdldG5Vbmlmb3JtdWl2LCBzdGQ6Om1vdmUocGFy
YW1CdWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9jYXB0dXJlX2dsZXNfM18yX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18yX2F1dG9nZW4uaAppbmRleCAzODg4NTZiMGVi
ZGViYmM3NTM0ZGE0MTQxODUwYmE1Yjg3NTIyMTc3Li5mMDE0YWNhNzIxYThhZjczODcwZWZjYjEw
YmJjNjc2ZGM1YTg0MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJfYXV0b2dlbi5oCkBAIC0xNzcs
MTkgKzE3NywxOSBAQCBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFRleFBhcmFtZXRlckl1
aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldG5V
bmlmb3JtZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtaXYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwogYW5nbGU6
OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRuVW5pZm9ybXVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwogYW5nbGU6OkNhbGxDYXB0
dXJlIENhcHR1cmVJc0VuYWJsZWRpKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtNDY5LDIxICs0
NjksMjEgQEAgdm9pZCBDYXB0dXJlR2V0VGV4UGFyYW1ldGVySXVpdl9wYXJhbXMoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2X3BhcmFtcyhjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtaXZfcGFyYW1zKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2X3BhcmFtcyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18yX3BhcmFtcy5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9wYXJh
bXMuY3BwCmluZGV4IGNiZDg4Nzc1MGYxYzgyYTJkYzRmZmIxNGZjNDJmYWQ5ZDhhZmI4OWQuLjZh
MzkxYTcyYzc5MzI5MzBlZjNkYzZmYmY2MjVmZDBlZDZjNjAxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18yX3BhcmFtcy5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xl
c18zXzJfcGFyYW1zLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgQ2FwdHVyZUdldFRleFBh
cmFtZXRlckl1aXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0
blVuaWZvcm1mdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
cmFtQ2FwdHVyZSAqcGFyYW1zUGFyYW0pCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBDYXB0dXJl
R2V0blVuaWZvcm1mdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVH
ZXRuVW5pZm9ybWl2X3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
cmFtQ2FwdHVyZSAqcGFyYW1zUGFyYW0pCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBDYXB0dXJl
R2V0blVuaWZvcm1pdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVH
ZXRuVW5pZm9ybXVpdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1zUGFyYW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzX2V4dF9hdXRvZ2VuLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1
dG9nZW4uY3BwCmluZGV4IDc2MWVlNWZlNTJkYWJlMTczYjhhZDg5NTI2YTY2Njc4N2I4NzE0YWEu
LjJlZTUyN2JmOWY3NDY5NzkwYzY0YjcyM2NhODNjZDk0YWYzMzhmMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9n
ZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJl
X2dsZXNfZXh0X2F1dG9nZW4uY3BwCkBAIC00MDQsNiArNDA0LDIzIEBAIENhbGxDYXB0dXJlIENh
cHR1cmVWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwogfQogCitDYWxsQ2FwdHVyZSBDYXB0dXJlSW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1v
cnlPYmplY3RJRCBtZW1vcnlQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhh
bmRsZSkKK3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oIm1lbW9yeVBhY2tlZCIsIFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElE
LCBtZW1vcnlQYWNrZWQpOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInNpemUiLCBQ
YXJhbVR5cGU6OlRHTHVpbnQ2NCwgc2l6ZSk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgiaGFuZGxlVHlwZVBhY2tlZCIsIFBhcmFtVHlwZTo6VEhhbmRsZVR5cGUsIGhhbmRsZVR5cGVQ
YWNrZWQpOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImhhbmRsZSIsIFBhcmFtVHlw
ZTo6VEdMdWludCwgaGFuZGxlKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQ
b2ludDo6SW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZl
cikpOworfQorCiBDYWxsQ2FwdHVyZSBDYXB0dXJlTXVsdGlEcmF3QXJyYXlzQU5HTEUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCkBAIC04NjcsNyArODg0LDcgQEAgQ2FsbENhcHR1
cmUgQ2FwdHVyZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpwYXJhbXMpCkBAIC04NzUsMTkgKzg5MiwxOSBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1CdWZm
ZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFt
UGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50
LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWZTaXplIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwg
YnVmU2l6ZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgbGVuZ3RoUGFyYW0oImxlbmd0aCIsIFBhcmFt
VHlwZTo6VEdMc2l6ZWlQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRH
THNpemVpUG9pbnRlciwgbGVuZ3RoLCAmbGVuZ3RoUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVH
ZXRVbmlmb3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoLCBwYXJhbXMsICZsZW5ndGhQYXJhbSk7CisgICAgQ2FwdHVy
ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFX2xlbmd0aChnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJmxlbmd0aFBhcmFtKTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUobGVuZ3RoUGFyYW0pKTsKIAogICAgIFBh
cmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50
ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRQb2ludGVyLCBwYXJh
bXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldFVuaWZvcm1mdlJvYnVzdEFO
R0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGgsIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0
QU5HTEVfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBh
cmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGds
OjpFbnRyeVBvaW50OjpHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7CkBAIC04OTYsNyArOTEzLDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldFVuaWZvcm1m
dlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZUdl
dFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKQEAgLTkwNCwxOSArOTIx
LDE5IEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQ
cm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1
ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBidWZTaXplKTsKIAogICAgIFBhcmFtQ2FwdHVy
ZSBsZW5ndGhQYXJhbSgibGVuZ3RoIiwgUGFyYW1UeXBlOjpUR0xzaXplaVBvaW50ZXIpOwogICAg
IEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyLCBsZW5ndGgsICZsZW5n
dGhQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFX2xlbmd0
aChnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHBhcmFt
cywgJmxlbmd0aFBhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfbGVu
Z3RoKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6
bW92ZShsZW5ndGhQYXJhbSkpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFtKCJwYXJh
bXMiLCBQYXJhbVR5cGU6OlRHTGludFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFt
VHlwZTo6VEdMaW50UG9pbnRlciwgcGFyYW1zLCAmcGFyYW1zUGFyYW0udmFsdWUpOwotICAgIENh
cHR1cmVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRV9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBwYXJhbXMsICZwYXJhbXNQYXJhbSk7CisgICAg
Q2FwdHVyZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxp
ZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJnBhcmFtc1BhcmFt
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGFyYW1zUGFyYW0pKTsKIAog
ICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTYwMyw3ICsxNjIwLDcgQEAgQ2Fs
bENhcHR1cmUgQ2FwdHVyZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCkBAIC0xNjExLDE5ICsxNjI4LDE5IEBAIENhbGxD
YXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBw
cm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIs
IFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0
aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWZTaXplIiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgYnVmU2l6ZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgbGVuZ3RoUGFy
YW0oImxlbmd0aCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyKTsKICAgICBJbml0UGFyYW1W
YWx1ZShQYXJhbVR5cGU6OlRHTHNpemVpUG9pbnRlciwgbGVuZ3RoLCAmbGVuZ3RoUGFyYW0udmFs
dWUpOwotICAgIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVfbGVuZ3RoKGdsU3RhdGUs
IGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHBhcmFtcywgJmxlbmd0
aFBhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFX2xlbmd0aChnbFN0
YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMsICZsZW5ndGhQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKGxl
bmd0aFBhcmFtKSk7CiAKICAgICBQYXJhbUNhcHR1cmUgcGFyYW1zUGFyYW0oInBhcmFtcyIsIFBh
cmFtVHlwZTo6VEdMdWludFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6
VEdMdWludFBvaW50ZXIsIHBhcmFtcywgJnBhcmFtc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJl
R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBwYXJhbXMsICZwYXJhbXNQYXJhbSk7CisgICAgQ2Fw
dHVyZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRV9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0p
OwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAg
ICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMjExNCw3ICsyMTMxLDcgQEAgQ2Fs
bENhcHR1cmUgQ2FwdHVyZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcykKQEAgLTIxMjIsMTkgKzIxMzksMTkgQEAgQ2FsbENhcHR1cmUg
Q2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1Q
YWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1U
eXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNr
ZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6
OlRHTHNpemVpLCBidWZTaXplKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBsZW5ndGhQYXJhbSgibGVu
Z3RoIiwgUGFyYW1UeXBlOjpUR0xzaXplaVBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBh
cmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyLCBsZW5ndGgsICZsZW5ndGhQYXJhbS52YWx1ZSk7Ci0g
ICAgQ2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxs
VmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0p
OworICAgIENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEVfbGVuZ3RoKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJmxl
bmd0aFBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUobGVuZ3RoUGFy
YW0pKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBl
OjpUR0xmbG9hdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxv
YXRQb2ludGVyLCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVH
ZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGFyYW1zUGFyYW0pKTsKIAogICAgIHJl
dHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTIxNDMsNyArMjE2MCw3IEBAIENhbGxDYXB0
dXJlIENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpCkBAIC0yMTUxLDE5ICsyMTY4LDE5IEBAIENhbGxDYXB0dXJlIENhcHR1
cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJw
cm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2Vk
KTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWZTaXplIiwgUGFyYW1UeXBlOjpUR0xz
aXplaSwgYnVmU2l6ZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgbGVuZ3RoUGFyYW0oImxlbmd0aCIs
IFBhcmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5
cGU6OlRHTHNpemVpUG9pbnRlciwgbGVuZ3RoLCAmbGVuZ3RoUGFyYW0udmFsdWUpOwotICAgIENh
cHR1cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHBhcmFtcywgJmxlbmd0aFBhcmFtKTsKKyAg
ICBDYXB0dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFX2xlbmd0aChnbFN0YXRlLCBpc0NhbGxW
YWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMsICZsZW5ndGhQ
YXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKGxlbmd0aFBhcmFtKSk7
CiAKICAgICBQYXJhbUNhcHR1cmUgcGFyYW1zUGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdM
aW50UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVy
LCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRV9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVHZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEVfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGFyYW1zUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxs
Q2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFLCBzdGQ6Om1v
dmUocGFyYW1CdWZmZXIpKTsKQEAgLTIxNzIsNyArMjE4OSw3IEBAIENhbGxDYXB0dXJlIENhcHR1
cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2Fw
dHVyZSBDYXB0dXJlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpCkBAIC0yMTgwLDE5ICsyMTk3LDE5IEBAIENhbGxDYXB0dXJlIENhcHR1
cmVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
cHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tl
ZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6
OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiYnVmU2l6ZSIsIFBhcmFtVHlwZTo6VEdM
c2l6ZWksIGJ1ZlNpemUpOwogCiAgICAgUGFyYW1DYXB0dXJlIGxlbmd0aFBhcmFtKCJsZW5ndGgi
LCBQYXJhbVR5cGU6OlRHTHNpemVpUG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1U
eXBlOjpUR0xzaXplaVBvaW50ZXIsIGxlbmd0aCwgJmxlbmd0aFBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxsVmFs
aWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHBhcmFtcywgJmxlbmd0aFBhcmFtKTsK
KyAgICBDYXB0dXJlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJmxl
bmd0aFBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUobGVuZ3RoUGFy
YW0pKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBl
OjpUR0x1aW50UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0x1aW50
UG9pbnRlciwgcGFyYW1zLCAmcGFyYW1zUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVH
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTI0ODksNiArMjUwNiwyMSBAQCBDYWxs
Q2FwdHVyZSBDYXB0dXJlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0UXVl
cnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKIH0KIAor
Q2FsbENhcHR1cmUgQ2FwdHVyZUltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRs
ZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIFBhcmFtQnVmZmVyIHBh
cmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgic2VtYXBob3JlUGFj
a2VkIiwgUGFyYW1UeXBlOjpUU2VtYXBob3JlSUQsIHNlbWFwaG9yZVBhY2tlZCk7CisgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiaGFuZGxlVHlwZVBhY2tlZCIsIFBhcmFtVHlwZTo6VEhh
bmRsZVR5cGUsIGhhbmRsZVR5cGVQYWNrZWQpOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImhhbmRsZSIsIFBhcmFtVHlwZTo6VEdMdWludCwgaGFuZGxlKTsKKworICAgIHJldHVybiBD
YWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5H
TEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOworfQorCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVGV4
SW1hZ2UyREV4dGVybmFsQU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBh
Y2tlZCwKQEAgLTI2NTMsMTggKzI2ODUsMTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJl
IENhcHR1cmVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hh
ZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3Jt
TG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBuYW1lUGFyYW0o
Im5hbWUiLCBQYXJhbVR5cGU6OlRHTGNoYXJDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZh
bHVlKFBhcmFtVHlwZTo6VEdMY2hhckNvbnN0UG9pbnRlciwgbmFtZSwgJm5hbWVQYXJhbS52YWx1
ZSk7Ci0gICAgQ2FwdHVyZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTV9uYW1lKGdsU3RhdGUs
IGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVQYXJhbSk7CisgICAgQ2FwdHVy
ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTV9uYW1lKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZSwgJm5hbWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRk
UGFyYW0oc3RkOjptb3ZlKG5hbWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGds
OjpFbnRyeVBvaW50OjpCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJh
bUJ1ZmZlcikpOwpAQCAtMjc2NSwzNiArMjc5Nyw2IEBAIENhbGxDYXB0dXJlIENhcHR1cmVDb3Zl
cmFnZU1vZHVsYXRpb25DSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1cm4g
Q2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNLCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKIH0KIAotQ2FsbENhcHR1cmUgQ2FwdHVyZU1hdHJpeExv
YWRmQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hdHJpeE1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICptYXRyaXgpCi17Ci0gICAgUGFyYW1C
dWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oIm1hdHJp
eE1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHJpeE1vZGUpOwotCi0gICAgUGFyYW1DYXB0
dXJlIG1hdHJpeFBhcmFtKCJtYXRyaXgiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVy
KTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCBt
YXRyaXgsICZtYXRyaXhQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZU1hdHJpeExvYWRmQ0hST01J
VU1fbWF0cml4KGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBtYXRyaXhNb2RlLCBtYXRyaXgsICZtYXRy
aXhQYXJhbSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKG1hdHJpeFBhcmFt
KSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6Ok1hdHJpeExvYWRm
Q0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0
dXJlTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bWF0cml4TW9kZSkKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFt
QnVmZmVyLmFkZEVudW1QYXJhbSgibWF0cml4TW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIFBhcmFtVHlwZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0
cml4TW9kZSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6Ok1hdHJp
eExvYWRJZGVudGl0eUNIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQogQ2Fs
bENhcHR1cmUgQ2FwdHVyZUxvc2VDb250ZXh0Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NSZXNldFN0
YXR1cyBjdXJyZW50UGFja2VkLApAQCAtMjgwOCw1NDQgKzI4MTAsNiBAQCBDYWxsQ2FwdHVyZSBD
YXB0dXJlTG9zZUNvbnRleHRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1
cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6Okxvc2VDb250ZXh0Q0hST01JVU0sIHN0ZDo6
bW92ZShwYXJhbUJ1ZmZlcikpOwogfQogCi1DYWxsQ2FwdHVyZSBDYXB0dXJlR2VuUGF0aHNDSFJP
TUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHJhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHJldHVyblZhbHVlKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0g
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicmFuZ2UiLCBQYXJhbVR5cGU6OlRHTHNpemVp
LCByYW5nZSk7Ci0KLSAgICBQYXJhbUNhcHR1cmUgcmV0dXJuVmFsdWVDYXB0dXJlKCJyZXR1cm5W
YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludCk7Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
OjpUR0x1aW50LCByZXR1cm5WYWx1ZSwgJnJldHVyblZhbHVlQ2FwdHVyZS52YWx1ZSk7Ci0gICAg
cGFyYW1CdWZmZXIuYWRkUmV0dXJuVmFsdWUoc3RkOjptb3ZlKHJldHVyblZhbHVlQ2FwdHVyZSkp
OwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZW5QYXRoc0NIUk9N
SVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUgQ2FwdHVyZURl
bGV0ZVBhdGhzQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIGZpcnN0UGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSByYW5nZSkKLXsKLSAgICBQYXJhbUJ1
ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImZpcnN0
UGFja2VkIiwgUGFyYW1UeXBlOjpUUGF0aElELCBmaXJzdFBhY2tlZCk7Ci0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgicmFuZ2UiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCByYW5nZSk7Ci0K
LSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkRlbGV0ZVBhdGhzQ0hST01J
VU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlSXNQ
YXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWUpCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoUGFja2VkIiwgUGFyYW1U
eXBlOjpUUGF0aElELCBwYXRoUGFja2VkKTsKLQotICAgIFBhcmFtQ2FwdHVyZSByZXR1cm5WYWx1
ZUNhcHR1cmUoInJldHVyblZhbHVlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuKTsKLSAgICBJbml0
UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHJldHVyblZhbHVlLCAmcmV0dXJuVmFs
dWVDYXB0dXJlLnZhbHVlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRSZXR1cm5WYWx1ZShzdGQ6Om1v
dmUocmV0dXJuVmFsdWVDYXB0dXJlKSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVu
dHJ5UG9pbnQ6OklzUGF0aENIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQot
Q2FsbENhcHR1cmUgQ2FwdHVyZVBhdGhDb21tYW5kc0NIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBh
dGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3JkcykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJh
bUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQ
YXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oIm51bUNvbW1hbmRzIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgbnVtQ29tbWFuZHMpOwot
Ci0gICAgUGFyYW1DYXB0dXJlIGNvbW1hbmRzUGFyYW0oImNvbW1hbmRzIiwgUGFyYW1UeXBlOjpU
R0x1Ynl0ZUNvbnN0UG9pbnRlcik7Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0x1
Ynl0ZUNvbnN0UG9pbnRlciwgY29tbWFuZHMsICZjb21tYW5kc1BhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlUGF0aENvbW1hbmRzQ0hST01JVU1fY29tbWFuZHMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQs
IHBhdGhQYWNrZWQsIG51bUNvbW1hbmRzLCBjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3JkcywgJmNvbW1h
bmRzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShjb21tYW5kc1Bh
cmFtKSk7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJudW1Db29yZHMiLCBQYXJh
bVR5cGU6OlRHTHNpemVpLCBudW1Db29yZHMpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJh
bSgiY29vcmRUeXBlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xl
bnVtLCBjb29yZFR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIGNvb3Jkc1BhcmFtKCJjb29yZHMi
LCBQYXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJh
bVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyLCBjb29yZHMsICZjb29yZHNQYXJhbS52YWx1ZSk7Ci0g
ICAgQ2FwdHVyZVBhdGhDb21tYW5kc0NIUk9NSVVNX2Nvb3JkcyhnbFN0YXRlLCBpc0NhbGxWYWxp
ZCwgcGF0aFBhY2tlZCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3JkcywgJmNvb3Jk
c1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUoY29vcmRzUGFyYW0p
KTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6UGF0aENvbW1hbmRz
Q0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0
dXJlUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdmFsdWUp
Ci17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJwYXRoUGFja2VkIiwgUGFyYW1UeXBlOjpUUGF0aElELCBwYXRoUGFja2VkKTsK
LSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInBuYW1lIiwgR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBwbmFtZSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCB2YWx1ZSk7Ci0KLSAgICBy
ZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlBhdGhQYXJhbWV0ZXJmQ0hST01JVU0s
IHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlUGF0aFBh
cmFtZXRlcmlDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZhbHVlKQotewotICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
cGF0aFBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkRW51bVBhcmFtKCJwbmFtZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBh
cmFtVHlwZTo6VEdMZW51bSwgcG5hbWUpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHZhbHVlKTsKLQotICAgIHJldHVybiBDYWxsQ2Fw
dHVyZShnbDo6RW50cnlQb2ludDo6UGF0aFBhcmFtZXRlcmlDSFJPTUlVTSwgc3RkOjptb3ZlKHBh
cmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVHZXRQYXRoUGFyYW1ldGVyZnZD
SFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSkK
LXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNrZWQpOwot
ICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicG5hbWUiLCBHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIHBuYW1lKTsKLQotICAgIFBhcmFtQ2FwdHVyZSB2
YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRQb2ludGVyKTsKLSAgICBJbml0
UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFt
LnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1fdmFsdWUoZ2xT
dGF0ZSwgaXNDYWxsVmFsaWQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOwotICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7Ci0KLSAgICByZXR1cm4gQ2Fs
bENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNLCBzdGQ6
Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUgQ2FwdHVyZUdldFBhdGhQYXJh
bWV0ZXJpdkNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2
YWx1ZSkKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNr
ZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicG5hbWUiLCBHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIHBuYW1lKTsKLQotICAgIFBhcmFtQ2Fw
dHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMaW50UG9pbnRlcik7Ci0gICAg
SW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFy
YW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTV92YWx1ZShn
bFN0YXRlLCBpc0NhbGxWYWxpZCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7Ci0gICAgcGFy
YW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKLQotICAgIHJldHVybiBD
YWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0sIHN0
ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlUGF0aFN0ZW5j
aWxGdW5jQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZnVuYywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spCi17Ci0gICAgUGFyYW1CdWZm
ZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImZ1bmMiLCBH
TGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGZ1bmMpOwotICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInJlZiIsIFBhcmFtVHlwZTo6VEdMaW50LCByZWYp
OwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm1hc2siLCBQYXJhbVR5cGU6OlRHTHVp
bnQsIG1hc2spOwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQYXRo
U3RlbmNpbEZ1bmNDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxD
YXB0dXJlIENhcHR1cmVTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJ
RCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRo
SUQsIHBhdGhQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiZmlsbE1vZGUi
LCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGZpbGxNb2Rl
KTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJtYXNrIiwgUGFyYW1UeXBlOjpUR0x1
aW50LCBtYXNrKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6U3Rl
bmNpbEZpbGxQYXRoQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxs
Q2FwdHVyZSBDYXB0dXJlU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aFBhY2tlZCIsIFBhcmFt
VHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgicmVmZXJlbmNlIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHJlZmVyZW5jZSk7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgibWFzayIsIFBhcmFtVHlwZTo6VEdMdWludCwgbWFzayk7Ci0K
LSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlN0ZW5jaWxTdHJva2VQYXRo
Q0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0
dXJlQ292ZXJGaWxsUGF0aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkK
LXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNrZWQpOwot
ICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiY292ZXJNb2RlIiwgR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBjb3Zlck1vZGUpOwotCi0gICAgcmV0dXJu
IENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpDb3ZlckZpbGxQYXRoQ0hST01JVU0sIHN0ZDo6
bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlQ292ZXJTdHJva2VQ
YXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQotewotICAg
IFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgicGF0aFBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAgcGFy
YW1CdWZmZXIuYWRkRW51bVBhcmFtKCJjb3Zlck1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGNvdmVyTW9kZSk7Ci0KLSAgICByZXR1cm4gQ2FsbENh
cHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNLCBzdGQ6Om1vdmUo
cGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBh
dGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJw
YXRoUGFja2VkIiwgUGFyYW1UeXBlOjpUUGF0aElELCBwYXRoUGFja2VkKTsKLSAgICBwYXJhbUJ1
ZmZlci5hZGRFbnVtUGFyYW0oImZpbGxNb2RlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
UGFyYW1UeXBlOjpUR0xlbnVtLCBmaWxsTW9kZSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgibWFzayIsIFBhcmFtVHlwZTo6VEdMdWludCwgbWFzayk7Ci0gICAgcGFyYW1CdWZmZXIu
YWRkRW51bVBhcmFtKCJjb3Zlck1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJh
bVR5cGU6OlRHTGVudW0sIGNvdmVyTW9kZSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6
OkVudHJ5UG9pbnQ6OlN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNLCBzdGQ6Om1vdmUo
cGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0
aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUp
Ci17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJwYXRoUGFja2VkIiwgUGFyYW1UeXBlOjpUUGF0aElELCBwYXRoUGFja2VkKTsK
LSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJyZWZlcmVuY2UiLCBQYXJhbVR5cGU6OlRH
TGludCwgcmVmZXJlbmNlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJtYXNrIiwg
UGFyYW1UeXBlOjpUR0x1aW50LCBtYXNrKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0o
ImNvdmVyTW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51
bSwgY292ZXJNb2RlKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6
U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVy
KSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJh
bUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm51bVBhdGgiLCBQYXJh
bVR5cGU6OlRHTHNpemVpLCBudW1QYXRoKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0o
InBhdGhOYW1lVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdM
ZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aE5hbWVUeXBlKTsKLQotICAg
IFBhcmFtQ2FwdHVyZSBwYXRoc1BhcmFtKCJwYXRocyIsIFBhcmFtVHlwZTo6VHZvaWRDb25zdFBv
aW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXIs
IHBhdGhzLCAmcGF0aHNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUNvdmVyRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTV9wYXRocyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbnVtUGF0aCwgcGF0aE5h
bWVUeXBlLCBwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGhCYXNlUGFja2VkLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMs
ICZwYXRoc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGF0aHNQ
YXJhbSkpOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aEJhc2VQYWNrZWQi
LCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhCYXNlUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRFbnVtUGFyYW0oImNvdmVyTW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFt
VHlwZTo6VEdMZW51bSwgY292ZXJNb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0o
InRyYW5zZm9ybVR5cGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRH
TGVudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUpOwotCi0g
ICAgUGFyYW1DYXB0dXJlIHRyYW5zZm9ybVZhbHVlc1BhcmFtKCJ0cmFuc2Zvcm1WYWx1ZXMiLCBQ
YXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJh
bVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1W
YWx1ZXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTV90cmFuc2Zvcm1WYWx1ZXMoCi0gICAgICAgIGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1Q
YXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgY292ZXJNb2RlLAotICAg
ICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQYXJh
bSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHRyYW5zZm9ybVZhbHVlc1Bh
cmFtKSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkNvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19Ci0KLUNh
bGxDYXB0dXJlIENhcHR1cmVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBQYXJhbUJ1ZmZl
ciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm51bVBhdGgi
LCBQYXJhbVR5cGU6OlRHTHNpemVpLCBudW1QYXRoKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVt
UGFyYW0oInBhdGhOYW1lVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlw
ZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aE5hbWVUeXBlKTsK
LQotICAgIFBhcmFtQ2FwdHVyZSBwYXRoc1BhcmFtKCJwYXRocyIsIFBhcmFtVHlwZTo6VHZvaWRD
b25zdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VHZvaWRDb25zdFBv
aW50ZXIsIHBhdGhzLCAmcGF0aHNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUNvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZENIUk9NSVVNX3BhdGhzKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRo
LCBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm1WYWx1ZXMsICZwYXRoc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6
Om1vdmUocGF0aHNQYXJhbSkpOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0
aEJhc2VQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhCYXNlUGFja2VkKTsKLSAgICBw
YXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImNvdmVyTW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0
R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgY292ZXJNb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRFbnVtUGFyYW0oInRyYW5zZm9ybVR5cGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQ
YXJhbVR5cGU6OlRHTGVudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bVR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHRyYW5zZm9ybVZhbHVlc1BhcmFtKCJ0cmFuc2Zv
cm1WYWx1ZXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKLSAgICBJbml0UGFy
YW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB0cmFuc2Zvcm1WYWx1ZXMs
ICZ0cmFuc2Zvcm1WYWx1ZXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUNvdmVyU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNX3RyYW5zZm9ybVZhbHVlcygKLSAgICAgICAgZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBj
b3Zlck1vZGUsCi0gICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcywgJnRyYW5z
Zm9ybVZhbHVlc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodHJh
bnNmb3JtVmFsdWVzUGFyYW0pKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQ
b2ludDo6Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1
ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQ
YWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVy
OwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibnVtUGF0aCIsIFBhcmFtVHlwZTo6
VEdMc2l6ZWksIG51bVBhdGgpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicGF0aE5h
bWVUeXBlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUpOwotCi0gICAgUGFyYW1D
YXB0dXJlIHBhdGhzUGFyYW0oInBhdGhzIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcik7
Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlciwgcGF0aHMs
ICZwYXRoc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTV9wYXRocyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbnVtUGF0aCwgcGF0aE5hbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5z
Zm9ybVZhbHVlcywgJnBhdGhzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6
bW92ZShwYXRoc1BhcmFtKSk7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRo
QmFzZVBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aEJhc2VQYWNrZWQpOwotICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInJlZmVyZW5jZSIsIFBhcmFtVHlwZTo6VEdMaW50LCBy
ZWZlcmVuY2UpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm1hc2siLCBQYXJhbVR5
cGU6OlRHTHVpbnQsIG1hc2spOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgidHJhbnNm
b3JtVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSk7Ci0KLSAgICBQYXJh
bUNhcHR1cmUgdHJhbnNmb3JtVmFsdWVzUGFyYW0oInRyYW5zZm9ybVZhbHVlcyIsIFBhcmFtVHlw
ZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6
VEdMZmxvYXRDb25zdFBvaW50ZXIsIHRyYW5zZm9ybVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1Bh
cmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TV90cmFuc2Zvcm1WYWx1ZXMoCi0gICAgICAgIGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRo
LCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLAot
ICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQ
YXJhbSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHRyYW5zZm9ybVZhbHVl
c1BhcmFtKSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwot
fQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0o
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRo
TmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17
Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJudW1QYXRocyIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIG51bVBhdGhzKTsKLSAgICBw
YXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInBhdGhOYW1lVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGF0aE5hbWVUeXBlKTsKLQotICAgIFBhcmFtQ2FwdHVyZSBwYXRoc1BhcmFtKCJwYXRocyIs
IFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFt
VHlwZTo6VHZvaWRDb25zdFBvaW50ZXIsIHBhdGhzLCAmcGF0aHNQYXJhbS52YWx1ZSk7Ci0gICAg
Q2FwdHVyZVN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNX3BhdGhzKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGZpbGxN
b2RlLCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMsICZwYXRoc1BhcmFtKTsKLSAgICBw
YXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGF0aHNQYXJhbSkpOwotCi0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aEJhc2VQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQs
IHBhdGhCYXNlUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImZpbGxNb2Rl
IiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBmaWxsTW9k
ZSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibWFzayIsIFBhcmFtVHlwZTo6VEdM
dWludCwgbWFzayk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJ0cmFuc2Zvcm1UeXBl
IiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlKTsKLQotICAgIFBhcmFtQ2FwdHVy
ZSB0cmFuc2Zvcm1WYWx1ZXNQYXJhbSgidHJhbnNmb3JtVmFsdWVzIiwgUGFyYW1UeXBlOjpUR0xm
bG9hdENvbnN0UG9pbnRlcik7Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9h
dENvbnN0UG9pbnRlciwgdHJhbnNmb3JtVmFsdWVzLCAmdHJhbnNmb3JtVmFsdWVzUGFyYW0udmFs
dWUpOwotICAgIENhcHR1cmVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTV90cmFuc2Zv
cm1WYWx1ZXMoCi0gICAgICAgIGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRocywgcGF0aE5h
bWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLAotICAgICAgICB0
cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQYXJhbSk7Ci0g
ICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHRyYW5zZm9ybVZhbHVlc1BhcmFtKSk7
Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlN0ZW5jaWxGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENh
cHR1cmUgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgUGFyYW1C
dWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJudW1Q
YXRocyIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIG51bVBhdGhzKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRFbnVtUGFyYW0oInBhdGhOYW1lVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBh
cmFtVHlwZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aE5hbWVU
eXBlKTsKLQotICAgIFBhcmFtQ2FwdHVyZSBwYXRoc1BhcmFtKCJwYXRocyIsIFBhcmFtVHlwZTo6
VHZvaWRDb25zdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VHZvaWRD
b25zdFBvaW50ZXIsIHBhdGhzLCAmcGF0aHNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNX3BhdGhzKAotICAgICAgICBnbFN0
YXRlLCBpc0NhbGxWYWxpZCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNl
UGFja2VkLCBmaWxsTW9kZSwgbWFzaywKLSAgICAgICAgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBl
LCB0cmFuc2Zvcm1WYWx1ZXMsICZwYXRoc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJh
bShzdGQ6Om1vdmUocGF0aHNQYXJhbSkpOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgicGF0aEJhc2VQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhCYXNlUGFja2VkKTsK
LSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImZpbGxNb2RlIiwgR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBmaWxsTW9kZSk7Ci0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibWFzayIsIFBhcmFtVHlwZTo6VEdMdWludCwgbWFzayk7Ci0gICAg
cGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJjb3Zlck1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGNvdmVyTW9kZSk7Ci0gICAgcGFyYW1CdWZmZXIu
YWRkRW51bVBhcmFtKCJ0cmFuc2Zvcm1UeXBlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
UGFyYW1UeXBlOjpUR0xlbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1UeXBlKTsKLQotICAgIFBhcmFtQ2FwdHVyZSB0cmFuc2Zvcm1WYWx1ZXNQYXJhbSgidHJhbnNm
b3JtVmFsdWVzIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7Ci0gICAgSW5pdFBh
cmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdHJhbnNmb3JtVmFsdWVz
LCAmdHJhbnNmb3JtVmFsdWVzUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTV90cmFuc2Zvcm1WYWx1ZXMoCi0gICAgICAgIGds
U3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJh
c2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLAotICAgICAgICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5
cGUsIHRyYW5zZm9ybVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1BhcmFtKTsKLSAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodHJhbnNmb3JtVmFsdWVzUGFyYW0pKTsKLQotICAgIHJl
dHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShwYXJh
bUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNl
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1C
dWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJudW1QYXRocyIsIFBhcmFt
VHlwZTo6VEdMc2l6ZWksIG51bVBhdGhzKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0o
InBhdGhOYW1lVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdM
ZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aE5hbWVUeXBlKTsKLQotICAg
IFBhcmFtQ2FwdHVyZSBwYXRoc1BhcmFtKCJwYXRocyIsIFBhcmFtVHlwZTo6VHZvaWRDb25zdFBv
aW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXIs
IHBhdGhzLCAmcGF0aHNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fcGF0aHMoCi0gICAgICAgIGdsU3RhdGUsIGlzQ2Fs
bFZhbGlkLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIHJl
ZmVyZW5jZSwgbWFzaywKLSAgICAgICAgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zv
cm1WYWx1ZXMsICZwYXRoc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1v
dmUocGF0aHNQYXJhbSkpOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aEJh
c2VQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhCYXNlUGFja2VkKTsKLSAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJyZWZlcmVuY2UiLCBQYXJhbVR5cGU6OlRHTGludCwgcmVm
ZXJlbmNlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJtYXNrIiwgUGFyYW1UeXBl
OjpUR0x1aW50LCBtYXNrKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImNvdmVyTW9k
ZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgY292ZXJN
b2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInRyYW5zZm9ybVR5cGUiLCBHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHRyYW5z
Zm9ybVZhbHVlc1BhcmFtKCJ0cmFuc2Zvcm1WYWx1ZXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29u
c3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQ
b2ludGVyLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQYXJhbS52YWx1ZSk7Ci0g
ICAgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fdHJh
bnNmb3JtVmFsdWVzKAotICAgICAgICBnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbnVtUGF0aHMsIHBh
dGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCByZWZlcmVuY2UsIG1hc2ssCi0gICAg
ICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzLCAmdHJhbnNmb3Jt
VmFsdWVzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh0cmFuc2Zv
cm1WYWx1ZXNQYXJhbSkpOwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNLAotICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUg
Q2FwdHVyZUJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1zUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwot
Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbXNQYWNrZWQiLCBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1zUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7Ci0K
LSAgICBQYXJhbUNhcHR1cmUgbmFtZVBhcmFtKCJuYW1lIiwgUGFyYW1UeXBlOjpUR0xjaGFyQ29u
c3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGNoYXJDb25zdFBv
aW50ZXIsIG5hbWUsICZuYW1lUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU1fbmFtZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbXNQ
YWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lLCAmbmFtZVBhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShz
dGQ6Om1vdmUobmFtZVBhcmFtKSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5
UG9pbnQ6OkJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFt
QnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW5DSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQotewotICAgIFBhcmFtQnVmZmVy
IHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
bG9jYXRpb24pOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiZ2VuTW9kZSIsIEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgZ2VuTW9kZSk7Ci0gICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY29tcG9uZW50cyIsIFBhcmFtVHlwZTo6VEdMaW50
LCBjb21wb25lbnRzKTsKLQotICAgIFBhcmFtQ2FwdHVyZSBjb2VmZnNQYXJhbSgiY29lZmZzIiwg
UGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFy
YW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgY29lZmZzLCAmY29lZmZzUGFyYW0udmFsdWUp
OwotICAgIENhcHR1cmVQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTV9jb2VmZnMo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuTW9kZSwgY29t
cG9uZW50cywgY29lZmZzLCAmY29lZmZzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFt
KHN0ZDo6bW92ZShjb2VmZnNQYXJhbSkpOwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSwgc3RkOjptb3Zl
KHBhcmFtQnVmZmVyKSk7Ci19Ci0KIENhbGxDYXB0dXJlIENhcHR1cmVCaW5kRnJhZ0RhdGFMb2Nh
dGlvbkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLApAQCAt
MzU1Myw2ICszMDE3LDIzIEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZW5RdWVyaWVzRVhUKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6
R2VuUXVlcmllc0VYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CiB9CiAKK0NhbGxDYXB0dXJl
IENhcHR1cmVHZXRJbnRlZ2VyNjR2RVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEpCit7CisgICAgUGFyYW1CdWZmZXIgcGFy
YW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInBuYW1lIiwgR0xlbnVt
R3JvdXA6OkdldFBOYW1lLCBQYXJhbVR5cGU6OlRHTGVudW0sIHBuYW1lKTsKKworICAgIFBhcmFt
Q2FwdHVyZSBkYXRhUGFyYW0oImRhdGEiLCBQYXJhbVR5cGU6OlRHTGludDY0UG9pbnRlcik7Cisg
ICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnQ2NFBvaW50ZXIsIGRhdGEsICZkYXRh
UGFyYW0udmFsdWUpOworICAgIENhcHR1cmVHZXRJbnRlZ2VyNjR2RVhUX2RhdGEoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIHBuYW1lLCBkYXRhLCAmZGF0YVBhcmFtKTsKKyAgICBwYXJhbUJ1ZmZlci5h
ZGRQYXJhbShzdGQ6Om1vdmUoZGF0YVBhcmFtKSk7CisKKyAgICByZXR1cm4gQ2FsbENhcHR1cmUo
Z2w6OkVudHJ5UG9pbnQ6OkdldEludGVnZXI2NHZFWFQsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikp
OworfQorCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0UXVlcnlPYmplY3RpNjR2RVhUKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRdWVyeUlEIGlkUGFja2VkLApAQCAtMzcwMCw2ICszMTgxLDEyNyBAQCBDYWxsQ2FwdHVyZSBD
YXB0dXJlRHJhd0J1ZmZlcnNFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgcmV0dXJuIENh
bGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpEcmF3QnVmZmVyc0VYVCwgc3RkOjptb3ZlKHBhcmFt
QnVmZmVyKSk7CiB9CiAKK0NhbGxDYXB0dXJlIENhcHR1cmVCbGVuZEVxdWF0aW9uU2VwYXJhdGVp
RVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJi
dWYiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGJ1Zik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBh
cmFtKCJtb2RlUkdCIiwgR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBQYXJhbVR5
cGU6OlRHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVSR0IpOworICAg
IHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgibW9kZUFscGhhIiwgR0xlbnVtR3JvdXA6OkJsZW5k
RXF1YXRpb25Nb2RlRVhULCBQYXJhbVR5cGU6OlRHTGVudW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZGVBbHBoYSk7CisKKyAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5
UG9pbnQ6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikp
OworfQorCitDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRFcXVhdGlvbmlFWFQoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlKQorewor
ICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgiYnVmIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBidWYpOworICAgIHBhcmFtQnVmZmVyLmFk
ZEVudW1QYXJhbSgibW9kZSIsIEdMZW51bUdyb3VwOjpCbGVuZEVxdWF0aW9uTW9kZUVYVCwgUGFy
YW1UeXBlOjpUR0xlbnVtLCBtb2RlKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50
cnlQb2ludDo6QmxlbmRFcXVhdGlvbmlFWFQsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOworfQor
CitDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRGdW5jU2VwYXJhdGVpRVhUKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c3JjUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZHN0UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkc3RBbHBoYSkKK3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZiIsIFBhcmFtVHlwZTo6VEdMdWludCwgYnVmKTsKKyAg
ICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInNyY1JHQiIsIEdMZW51bUdyb3VwOjpCbGVuZGlu
Z0ZhY3RvciwgUGFyYW1UeXBlOjpUR0xlbnVtLCBzcmNSR0IpOworICAgIHBhcmFtQnVmZmVyLmFk
ZEVudW1QYXJhbSgiZHN0UkdCIiwgR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5
cGU6OlRHTGVudW0sIGRzdFJHQik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJzcmNB
bHBoYSIsIEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgUGFyYW1UeXBlOjpUR0xlbnVtLCBz
cmNBbHBoYSk7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJkc3RBbHBoYSIsIEdMZW51
bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgUGFyYW1UeXBlOjpUR0xlbnVtLCBkc3RBbHBoYSk7CisK
KyAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkJsZW5kRnVuY1NlcGFyYXRl
aUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVC
bGVuZEZ1bmNpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdCkKK3sK
KyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImJ1ZiIsIFBhcmFtVHlwZTo6VEdMdWludCwgYnVmKTsKKyAgICBwYXJhbUJ1ZmZlci5h
ZGRFbnVtUGFyYW0oInNyYyIsIEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgUGFyYW1UeXBl
OjpUR0xlbnVtLCBzcmMpOworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiZHN0IiwgR0xl
bnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRHTGVudW0sIGRzdCk7CisKKyAg
ICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkJsZW5kRnVuY2lFWFQsIHN0ZDo6
bW92ZShwYXJhbUJ1ZmZlcikpOworfQorCitDYWxsQ2FwdHVyZSBDYXB0dXJlQ29sb3JNYXNraUVY
VChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gYSkKK3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZl
cjsKKworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImluZGV4IiwgUGFyYW1UeXBlOjpU
R0x1aW50LCBpbmRleCk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiciIsIFBhcmFt
VHlwZTo6VEdMYm9vbGVhbiwgcik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiZyIs
IFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgZyk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgiYiIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgYik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgiYSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgYSk7CisKKyAgICByZXR1cm4gQ2Fs
bENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkNvbG9yTWFza2lFWFQsIHN0ZDo6bW92ZShwYXJhbUJ1
ZmZlcikpOworfQorCitDYWxsQ2FwdHVyZSBDYXB0dXJlRGlzYWJsZWlFWFQoY29uc3QgU3RhdGUg
JmdsU3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkK
K3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFtQnVmZmVyLmFkZEVu
dW1QYXJhbSgidGFyZ2V0IiwgR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgUGFyYW1UeXBlOjpUR0xl
bnVtLCB0YXJnZXQpOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImluZGV4IiwgUGFy
YW1UeXBlOjpUR0x1aW50LCBpbmRleCk7CisKKyAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVu
dHJ5UG9pbnQ6OkRpc2FibGVpRVhULCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKworQ2Fs
bENhcHR1cmUgQ2FwdHVyZUVuYWJsZWlFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsIGJvb2wgaXND
YWxsVmFsaWQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICBQYXJhbUJ1ZmZl
ciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgidGFyZ2V0Iiwg
R0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgUGFyYW1UeXBlOjpUR0xlbnVtLCB0YXJnZXQpOworICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImluZGV4IiwgUGFyYW1UeXBlOjpUR0x1aW50LCBp
bmRleCk7CisKKyAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkVuYWJsZWlF
WFQsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOworfQorCitDYWxsQ2FwdHVyZSBDYXB0dXJlSXNF
bmFibGVkaUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHJl
dHVyblZhbHVlKQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1C
dWZmZXIuYWRkRW51bVBhcmFtKCJ0YXJnZXQiLCBHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCBQYXJh
bVR5cGU6OlRHTGVudW0sIHRhcmdldCk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
aW5kZXgiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGluZGV4KTsKKworICAgIFBhcmFtQ2FwdHVyZSBy
ZXR1cm5WYWx1ZUNhcHR1cmUoInJldHVyblZhbHVlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuKTsK
KyAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHJldHVyblZhbHVlLCAm
cmV0dXJuVmFsdWVDYXB0dXJlLnZhbHVlKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRSZXR1cm5WYWx1
ZShzdGQ6Om1vdmUocmV0dXJuVmFsdWVDYXB0dXJlKSk7CisKKyAgICByZXR1cm4gQ2FsbENhcHR1
cmUoZ2w6OkVudHJ5UG9pbnQ6OklzRW5hYmxlZGlFWFQsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikp
OworfQorCiBDYWxsQ2FwdHVyZSBDYXB0dXJlRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCkBAIC00MjY0LDIwICszODY2
LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtZnZFWFQoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1
ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9u
KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBidWZTaXplKTsK
IAogICAgIFBhcmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0xm
bG9hdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRQb2lu
dGVyLCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3Jt
ZnZFWFRfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgYnVmU2l6ZSwgcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
cGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVHZXRuVW5pZm9ybWZ2RVhUX3BhcmFtcyhnbFN0YXRl
LCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGFyYW1zUGFyYW0pKTsKIAogICAg
IHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0blVuaWZvcm1mdkVYVCwgc3Rk
Ojptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC00Mjg2LDIwICszODg4LDIwIEBAIENhbGxDYXB0dXJl
IENhcHR1cmVHZXRuVW5pZm9ybWZ2RVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1
cmUgQ2FwdHVyZUdldG5Vbmlmb3JtaXZFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
CiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBw
cm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIs
IFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0
aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWZTaXplIiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgYnVmU2l6ZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgcGFyYW1zUGFy
YW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMaW50UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFs
dWUoUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyLCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7
Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3JtaXZFWFRfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVHZXRuVW5p
Zm9ybWl2RVhUX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1v
dmUocGFyYW1zUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2lu
dDo6R2V0blVuaWZvcm1pdkVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC01MDExLDYg
KzQ2MTMsMTI3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
Uyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5
UG9pbnQ6OkVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIp
KTsKIH0KIAorQ2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBQYXJhbUJ1ZmZl
ciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZiIsIFBh
cmFtVHlwZTo6VEdMdWludCwgYnVmKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oIm1v
ZGVSR0IiLCBHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIFBhcmFtVHlwZTo6VEdM
ZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZVJHQik7CisgICAgcGFyYW1C
dWZmZXIuYWRkRW51bVBhcmFtKCJtb2RlQWxwaGEiLCBHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlv
bk1vZGVFWFQsIFBhcmFtVHlwZTo6VEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbW9kZUFscGhhKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6
QmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUywgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisK
K0NhbGxDYXB0dXJlIENhcHR1cmVCbGVuZEVxdWF0aW9uaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUpCit7CisgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJi
dWYiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGJ1Zik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBh
cmFtKCJtb2RlIiwgR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBQYXJhbVR5cGU6
OlRHTGVudW0sIG1vZGUpOworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpCbGVuZEVxdWF0aW9uaU9FUywgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxD
YXB0dXJlIENhcHR1cmVCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFs
cGhhKQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiYnVmIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBidWYpOworICAgIHBhcmFt
QnVmZmVyLmFkZEVudW1QYXJhbSgic3JjUkdCIiwgR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9y
LCBQYXJhbVR5cGU6OlRHTGVudW0sIHNyY1JHQik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBh
cmFtKCJkc3RSR0IiLCBHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIFBhcmFtVHlwZTo6VEdM
ZW51bSwgZHN0UkdCKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInNyY0FscGhhIiwg
R0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRHTGVudW0sIHNyY0FscGhh
KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImRzdEFscGhhIiwgR0xlbnVtR3JvdXA6
OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRHTGVudW0sIGRzdEFscGhhKTsKKworICAgIHJl
dHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6QmxlbmRGdW5jU2VwYXJhdGVpT0VTLCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKworQ2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5kRnVu
Y2lPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0KQoreworICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
YnVmIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBidWYpOworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1Q
YXJhbSgic3JjIiwgR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRHTGVu
dW0sIHNyYyk7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJkc3QiLCBHTGVudW1Hcm91
cDo6QmxlbmRpbmdGYWN0b3IsIFBhcmFtVHlwZTo6VEdMZW51bSwgZHN0KTsKKworICAgIHJldHVy
biBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6QmxlbmRGdW5jaU9FUywgc3RkOjptb3ZlKHBh
cmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVDb2xvck1hc2tpT0VTKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBhKQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisg
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiaW5kZXgiLCBQYXJhbVR5cGU6OlRHTHVpbnQs
IGluZGV4KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJyIiwgUGFyYW1UeXBlOjpU
R0xib29sZWFuLCByKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJnIiwgUGFyYW1U
eXBlOjpUR0xib29sZWFuLCBnKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJiIiwg
UGFyYW1UeXBlOjpUR0xib29sZWFuLCBiKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJhIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCBhKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVy
ZShnbDo6RW50cnlQb2ludDo6Q29sb3JNYXNraU9FUywgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7
Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVEaXNhYmxlaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwgYm9vbCBpc0NhbGxWYWxpZCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAg
IFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFt
KCJ0YXJnZXQiLCBHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCBQYXJhbVR5cGU6OlRHTGVudW0sIHRh
cmdldCk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiaW5kZXgiLCBQYXJhbVR5cGU6
OlRHTHVpbnQsIGluZGV4KTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2lu
dDo6RGlzYWJsZWlPRVMsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOworfQorCitDYWxsQ2FwdHVy
ZSBDYXB0dXJlRW5hYmxlaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwgYm9vbCBpc0NhbGxWYWxp
ZCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFt
QnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJ0YXJnZXQiLCBHTGVudW1H
cm91cDo6RW5hYmxlQ2FwLCBQYXJhbVR5cGU6OlRHTGVudW0sIHRhcmdldCk7CisgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgiaW5kZXgiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGluZGV4KTsK
KworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6RW5hYmxlaU9FUywgc3Rk
Ojptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVJc0VuYWJsZWRp
T0VTKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcmV0dXJuVmFs
dWUpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5h
ZGRFbnVtUGFyYW0oInRhcmdldCIsIEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIFBhcmFtVHlwZTo6
VEdMZW51bSwgdGFyZ2V0KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJpbmRleCIs
IFBhcmFtVHlwZTo6VEdMdWludCwgaW5kZXgpOworCisgICAgUGFyYW1DYXB0dXJlIHJldHVyblZh
bHVlQ2FwdHVyZSgicmV0dXJuVmFsdWUiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4pOworICAgIElu
aXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgcmV0dXJuVmFsdWUsICZyZXR1cm5W
YWx1ZUNhcHR1cmUudmFsdWUpOworICAgIHBhcmFtQnVmZmVyLmFkZFJldHVyblZhbHVlKHN0ZDo6
bW92ZShyZXR1cm5WYWx1ZUNhcHR1cmUpKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6
RW50cnlQb2ludDo6SXNFbmFibGVkaU9FUywgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisK
IENhbGxDYXB0dXJlIENhcHR1cmVEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9nZW4uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9n
ZW4uaAppbmRleCBhYTViNDEzZjBkNTNlM2Y1N2E0NThhYzZjOTM5Y2IxYzVhMWI5NjExLi4xNTA2
YmFiYWZmMDc0OTNkNzAxM2IwNDgyN2YzY2ZkMzQyMWM5MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzX2V4dF9hdXRvZ2VuLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19l
eHRfYXV0b2dlbi5oCkBAIC0xNDcsNiArMTQ3LDE0IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGRpdmlzb3IpOwogCisvLyBHTF9BTkdMRV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEKK2FuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKTsKKwogLy8gR0xfQU5HTEVfbXVsdGlfZHJhdwogYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVNdWx0aURyYXdBcnJheXNBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
QEAgLTI2NCwxNCArMjcyLDE0IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VGV4UGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKIGFuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7
CkBAIC00NzQsNyArNDgyLDcgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRWZXJ0ZXhB
dHRyaWJJdWl2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBhbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMp
OwpAQCAtNTk5LDIxICs2MDcsMjEgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVSZWFkblBp
eGVsc1JvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNhbGxDYXB0dXJl
IENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7CiBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9i
dXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7CkBAIC02OTEsNiArNjk5LDEzIEBA
IGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xF
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFt
cyk7CiAKKy8vIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhCithbmdsZTo6Q2FsbENhcHR1cmUg
Q2FwdHVyZUltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CisKIC8v
IEdMX0FOR0xFX3RleHR1cmVfZXh0ZXJuYWxfdXBkYXRlCiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2Fw
dHVyZVRleEltYWdlMkRFeHRlcm5hbEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLApAQCAtNzQ5LDcgKzc2NCw3IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNh
bGxDYXB0dXJlIENhcHR1cmVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFt
ZSk7CiAKIC8vIEdMX0NIUk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJlCkBAIC03OTIsMTMg
KzgwNyw2IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQ29weVN1YlRleHR1cmVDSFJPTUlV
TShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQ292ZXJh
Z2VNb2R1bGF0aW9uQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb21wb25lbnRzKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlTWF0cml4TG9hZGZD
SFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXRyaXhNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKm1hdHJp
eCk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZU1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWF0cml4TW9kZSk7CiAK
IC8vIEdMX0NIUk9NSVVNX2xvc2VfY29udGV4dAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVM
b3NlQ29udGV4dENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtODA2LDE1NiArODE0
LDYgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVMb3NlQ29udGV4dENIUk9NSVVNKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgY3VycmVudFBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljc1Jlc2V0U3RhdHVzIG90aGVy
UGFja2VkKTsKIAotLy8gR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKLWFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlR2VuUGF0aHNDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcmFuZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJldHVy
blZhbHVlKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlRGVsZXRlUGF0aHNDSFJPTUlVTShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhdGhJRCBmaXJzdFBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHJhbmdlKTsKLWFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlSXNQYXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcmV0
dXJuVmFsdWUpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQYXRoQ29tbWFuZHNDSFJPTUlV
TShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5
dGUgKmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKTsKLWFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHZhbHVlKTsKLWFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2YWx1ZSk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUg
Q2FwdHVyZUdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSk7Ci1h
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqdmFsdWUpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQYXRoU3RlbmNpbEZ1bmND
SFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZ1bmMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2spOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2spOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVTdGVuY2lsU3Ryb2tlUGF0aENIUk9N
SVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQ292ZXJGaWxs
UGF0aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUNvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxUaGVu
Q292ZXJTdHJva2VQYXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci1hbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBy
ZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFz
ZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRy
YW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7
Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU0oCi0gICAgY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgYm9vbCBpc0Nh
bGxWYWxpZCwKLSAgICBHTHNpemVpIG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUs
Ci0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAg
IEdMaW50IHJlZmVyZW5jZSwKLSAgICBHTHVpbnQgbWFzaywKLSAgICBHTGVudW0gY292ZXJNb2Rl
LAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcyk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUJpbmRGcmFnbWVudElucHV0TG9j
YXRpb25DSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbXNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBj
b21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpOwotCiAvLyBHTF9FWFRfYmxl
bmRfZnVuY19leHRlbmRlZAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVCaW5kRnJhZ0RhdGFM
b2NhdGlvbkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKQEAgLTEwMTQsNiAr
ODcyLDEwIEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2VuUXVlcmllc0VYVChjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVy
eUlEICppZHNQYWNrZWQpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRJbnRlZ2VyNjR2
RVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJ
RCBpZFBhY2tlZCwKQEAgLTEwNTQsNiArOTE2LDQ5IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlRHJhd0J1ZmZlcnNFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpidWZzKTsKIAorLy8gR0xfRVhUX2Ry
YXdfYnVmZmVyc19pbmRleGVkCithbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5kRXF1YXRp
b25TZXBhcmF0ZWlFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVC
bGVuZEVxdWF0aW9uaUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUpOworYW5nbGU6OkNh
bGxDYXB0dXJlIENhcHR1cmVCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0FscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKTsKK2FuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRGdW5jaUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0KTsKK2FuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlQ29sb3JNYXNraUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSk7CithbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZURpc2FibGVpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgpOworYW5nbGU6OkNhbGxDYXB0
dXJlIENhcHR1cmVFbmFibGVpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgpOworYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVJc0VuYWJsZWRpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHJldHVyblZhbHVlKTsKKwogLy8gR0xf
RVhUX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJl
RHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLApAQCAtMTI0NCwxMyArMTE0OSwxMyBAQCBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBhbmdsZTo6Q2Fs
bENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtZnZFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7CiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtaXZFWFQoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwog
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVSZWFkblBpeGVsc0VYVChjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKQEAgLTEzMTcsNiArMTIyMiw4IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlSW1w
b3J0U2VtYXBob3JlRmRFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEKIAorLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YworCiAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtMTQ2NSw2ICsxMzcyLDQ5IEBAIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAKIC8vIEdMX09FU19kZXB0aDMyCiAKKy8vIEdMX09FU19kcmF3X2J1ZmZlcnNf
aW5kZXhlZAorYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVCbGVuZEVxdWF0aW9uU2VwYXJhdGVp
T0VTKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZUFscGhhKTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRFcXVhdGlv
bmlPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlKTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlQmxlbmRGdW5jU2VwYXJhdGVpT0VTKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gc3JjUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGRzdFJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSk7CithbmdsZTo6Q2FsbENhcHR1
cmUgQ2FwdHVyZUJsZW5kRnVuY2lPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdCk7CithbmdsZTo6Q2FsbENhcHR1cmUg
Q2FwdHVyZUNvbG9yTWFza2lPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGEpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1
cmVEaXNhYmxlaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4KTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJl
RW5hYmxlaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4KTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlSXNFbmFi
bGVkaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZSk7CisKIC8vIEdMX09FU19kcmF3X2Vs
ZW1lbnRzX2Jhc2VfdmVydGV4CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZURyYXdFbGVtZW50
c0Jhc2VWZXJ0ZXhPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKQEAgLTIy
NTAsNyArMjIwMCw3IEBAIHZvaWQgQ2FwdHVyZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEVf
cGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9i
dXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zLApAQCAtMjI1OCw3ICsyMjA4LDcg
QEAgdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCAqcGFyYW1zLApAQCAtMjI2Niw3ICsyMjE2LDcgQEAgdm9pZCBDYXB0dXJlR2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywK
QEAgLTIyNzQsNyArMjIyNCw3IEBAIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xF
X2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1pdlJv
YnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMsCkBAIC0yNjIyLDcgKzI1NzIsNyBA
QCB2b2lkIENhcHR1cmVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFX2xl
bmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcywKQEAgLTI2MzAsNyArMjU4MCw3IEBAIHZv
aWQgQ2FwdHVyZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zLApAQCAtMjkyMCw3ICsyODcwLDcgQEAgdm9pZCBDYXB0dXJl
UmVhZG5QaXhlbHNSb2J1c3RBTkdMRV9kYXRhKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
ICpwYXJhbXMsCkBAIC0yOTI4LDcgKzI4NzgsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0
blVuaWZvcm1mdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMs
CkBAIC0yOTM2LDcgKzI4ODYsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEVfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0blVuaWZvcm1p
dlJvYnVzdEFOR0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zLApAQCAtMjk0NCw3
ICsyODk0LDcgQEAgdm9pZCBDYXB0dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFX2xlbmd0aChj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdM
RV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKQEAgLTI5NTIsNyArMjkwMiw3IEBA
IHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFX2xlbmd0aChj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMsCkBAIC0yOTYwLDcgKzI5MTAsNyBAQCB2
b2lkIENhcHR1cmVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFX2xlbmd0aChjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVfcGFyYW1zKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcywKQEAgLTMxNDIsMTkyICszMDkyLDkgQEAg
dm9pZCBDYXB0dXJlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFX3NvdXJjZShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTV9u
YW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwot
dm9pZCBDYXB0dXJlTWF0cml4TG9hZGZDSFJPTUlVTV9tYXRyaXgoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hdHJp
eE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICptYXRyaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlUGF0aENvbW1hbmRz
Q0hST01JVU1fY29tbWFuZHMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAq
Y29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpjb29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0
dXJlUGF0aENvbW1hbmRzQ0hST01JVU1fY29vcmRzKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21t
YW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVi
eXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJl
R2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1fdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElE
IHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1
cmVHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTV92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRo
SUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1
cmVDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1fcGF0aHMoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJh
c2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZUNvdmVyRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTV90cmFuc2Zvcm1WYWx1ZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0
dXJlKTsKLXZvaWQgQ2FwdHVyZUNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNX3BhdGhz
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFt
ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBh
cmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TV90cmFuc2Zvcm1WYWx1ZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0
dXJlKTsKLXZvaWQgQ2FwdHVyZVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fcGF0
aHMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVm
ZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZVN0
ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fdHJhbnNmb3JtVmFsdWVzKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVt
UGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJl
ICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU1fcGF0aHMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxs
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU1fdHJhbnNmb3JtVmFsdWVzKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRo
QmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTV9wYXRocyhjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElE
IHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNh
cHR1cmUpOwotdm9pZCBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU1fdHJhbnNmb3JtVmFsdWVzKAotICAgIGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0gcGF0aE5h
bWVUeXBlLAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tl
ZCwKLSAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgR0x1aW50IG1hc2ssCi0gICAgR0xlbnVtIGNv
dmVyTW9kZSwKLSAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMsCi0gICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsK
LXZvaWQgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1f
cGF0aHMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJl
ZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1
cmVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNX3RyYW5zZm9ybVZh
bHVlcygKLSAgICBjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICBjb25z
dCB2b2lkICpwYXRocywKLSAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgR0xpbnQgcmVm
ZXJlbmNlLAotICAgIEdMdWludCBtYXNrLAotICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzLAot
ICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVCaW5k
RnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1fbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbXNQYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTV9jb2VmZnMoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNv
ZWZmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlQmlu
ZEZyYWdEYXRhTG9jYXRpb25FWFRfbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCkBAIC0zMzc4LDYgKzMxNDUsMTEgQEAgdm9pZCBDYXB0dXJlR2VuUXVlcmllc0VY
VF9pZHNQYWNrZWQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBRdWVyeUlEICppZHNQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwordm9pZCBDYXB0dXJlR2V0
SW50ZWdlcjY0dkVYVF9kYXRhKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50NjQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZUdldFF1ZXJ5
T2JqZWN0aTY0dkVYVF9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCkBAIC0zNTEx
LDE0ICszMjgzLDE0IEBAIHZvaWQgQ2FwdHVyZU1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUX3Bh
cmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtZnZFWFRf
cGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwog
dm9pZCBDYXB0dXJlR2V0blVuaWZvcm1pdkVYVF9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFy
YW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfcGFyYW1zLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X3BhcmFtcy5jcHAK
aW5kZXggYTIyNDMxNTdhMzU1ZTAxY2IyYTkyZjI1NTA1ZWZlNDljOGQ2MzY4Yi4uZDgxNDIwZmI5
MTk3NzczMTFkYTBiZWFmOWU0YjA3Zjk2ZDM1ZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfcGFyYW1zLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzX2V4dF9w
YXJhbXMuY3BwCkBAIC04LDYgKzgsOCBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvY2FwdHVyZV9n
bGVzX2V4dF9hdXRvZ2VuLmgiCiAKKyNpbmNsdWRlICJsaWJBTkdMRS9jYXB0dXJlX2dsZXNfM18w
X2F1dG9nZW4uaCIKKwogdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwogCiBuYW1lc3BhY2UgZ2wKQEAg
LTQxNiw3ICs0MTgsNyBAQCB2b2lkIENhcHR1cmVSZXF1ZXN0RXh0ZW5zaW9uQU5HTEVfbmFtZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICBDYXB0dXJlU3RyaW5nKG5hbWUsIHBhcmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2Fw
dHVyZURpc2FibGVFeHRlbnNpb25BTkdMRV9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAt
NDI0LDcgKzQyNiw3IEBAIHZvaWQgQ2FwdHVyZURpc2FibGVFeHRlbnNpb25BTkdMRV9uYW1lKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIENhcHR1cmVTdHJpbmcobmFtZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0
dXJlR2V0Qm9vbGVhbnZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBA
IC02NjYsNyArNjY4LDcgQEAgdm9pZCBDYXB0dXJlR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtZnZS
b2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCkBAIC02NzgsNyArNjgwLDcgQEAgdm9pZCBDYXB0
dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
dm9pZCBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zLApAQCAt
NjkwLDcgKzY5Miw3IEBAIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFX3BhcmFt
cyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1pdlJvYnVzdEFO
R0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMsCkBAIC03MDIsNyArNzA0LDcgQEAgdm9pZCBDYXB0dXJlR2V0VW5p
Zm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0
dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKQEAgLTExOTAsNyArMTE5
Miw3IEBAIHZvaWQgQ2FwdHVyZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRV9wYXJhbXMo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqcGFyYW1zLApAQCAtMTIwMiw3ICsxMjA0LDcgQEAgdm9pZCBDYXB0
dXJlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IHZvaWQgQ2FwdHVyZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMsCkBAIC0xNjI0LDcgKzE2MjYsNyBAQCB2b2lkIENhcHR1cmVSZWFkblBpeGVsc1JvYnVzdEFO
R0xFX2RhdGEoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2
Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcywKQEAgLTE2MzYsNyArMTYzOCw3IEBA
IHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcywKQEAgLTE2NDgsNyArMTY1MCw3IEBAIHZvaWQgQ2FwdHVyZUdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1
cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMsCkBAIC0xNjYw
LDcgKzE2NjIsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3Ro
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zLApAQCAtMTY3Miw3ICsxNjc0LDcgQEAgdm9pZCBDYXB0
dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgKnBhcmFtcywKQEAgLTE2ODQsNyArMTY4Niw3IEBAIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJl
R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zLApA
QCAtMTk2MiwxMSArMTk2NCwxMSBAQCB2b2lkIENhcHR1cmVHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEVfc291cmNlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlQmluZFVu
aWZvcm1Mb2NhdGlvbkNIUk9NSVVNX25hbWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJl
KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJlU3RyaW5nKG5hbWUsIHBhcmFt
Q2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2FwdHVyZU1hdHJpeExvYWRmQ0hST01JVU1fbWF0cml4KGNv
bnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjIxMyw3ICsyMjE1LDcgQEAgdm9pZCBDYXB0dXJlQmlu
ZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNX25hbWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgQ2FwdHVyZVN0cmluZyhuYW1lLCBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lk
IENhcHR1cmVQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTV9jb2VmZnMoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCkBAIC0yMjM1LDcgKzIyMzcsNyBAQCB2b2lkIENhcHR1cmVCaW5kRnJh
Z0RhdGFMb2NhdGlvbkVYVF9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0
dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJlU3RyaW5nKG5hbWUsIHBh
cmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2FwdHVyZUJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhl
ZEVYVF9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjI0Niw3ICsyMjQ4LDcgQEAgdm9p
ZCBDYXB0dXJlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUX25hbWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgQ2FwdHVyZVN0cmluZyhuYW1lLCBwYXJhbUNhcHR1cmUpOwogfQogCiB2
b2lkIENhcHR1cmVHZXRGcmFnRGF0YUluZGV4RVhUX25hbWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CkBAIC0yMjU1LDcgKzIyNTcsNyBAQCB2b2lkIENhcHR1cmVHZXRGcmFnRGF0YUluZGV4RVhUX25h
bWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICBDYXB0dXJlU3RyaW5nKG5hbWUsIHBhcmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2Fw
dHVyZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFRfbmFtZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKQEAgLTIyNjUsNyArMjI2Nyw3IEBAIHZvaWQgQ2FwdHVyZUdldFByb2dyYW1SZXNv
dXJjZUxvY2F0aW9uSW5kZXhFWFRfbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIg
Km5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIENhcHR1cmVTdHJpbmcobmFtZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJl
SW5zZXJ0RXZlbnRNYXJrZXJFWFRfbWFya2VyKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjMy
NCw2ICsyMzI2LDE1IEBAIHZvaWQgQ2FwdHVyZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVF9wYXJhbXMo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCit2b2lkIENh
cHR1cmVHZXRJbnRlZ2VyNjR2RVhUX2RhdGEoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworfQorCiB2b2lkIENhcHR1cmVHZXRRdWVyeU9iamVjdGl2RVhUX3BhcmFtcyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBRdWVyeUlEIGlkLApAQCAtMjM3MCw3ICsyMzgxLDcgQEAgdm9pZCBDYXB0dXJlRHJhd0J1
ZmZlcnNFWFRfYnVmcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xlbnVtICpidWZzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgQ2FwdHVyZURyYXdCdWZmZXJzX2J1ZnMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG4s
IGJ1ZnMsIHBhcmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2FwdHVyZURyYXdFbGVtZW50c0luc3Rh
bmNlZEVYVF9pbmRpY2VzKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjQ0NSw3ICsyNDU2LDcg
QEAgdm9pZCBDYXB0dXJlTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFRfcGFyYW1zKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0blVuaWZvcm1mdkVYVF9wYXJhbXMoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFt
Q2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMjQ1Niw3ICsyNDY3LDcgQEAgdm9pZCBDYXB0dXJl
R2V0blVuaWZvcm1mdkVYVF9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1
cmVHZXRuVW5pZm9ybWl2RVhUX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50
c19lbnVtX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L2VudHJ5X3BvaW50c19lbnVtX2F1dG9nZW4uY3BwCmluZGV4IGUxMzJhMjhjMmE3NDk2MTJlZmE1
N2JiYzEzNGMwZTBhMzg1YzI0YWQuLmUyYTIyNjJhMWIxYzIwMWI3OGU0ZmVlNWRhZTVjNDM0YzA5
MDNiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9l
bnRyeV9wb2ludHNfZW51bV9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvZW50cnlfcG9pbnRzX2VudW1fYXV0b2dlbi5jcHAKQEAgLTY2LDggKzY2
LDYgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAg
ICAgICAgIHJldHVybiAiZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQiOwogICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6OkJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVDoKICAgICAgICAg
ICAgIHJldHVybiAiZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQiOwotICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6OkJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTToKLSAgICAg
ICAgICAgIHJldHVybiAiZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0iOwogICAg
ICAgICBjYXNlIEVudHJ5UG9pbnQ6OkJpbmRGcmFtZWJ1ZmZlcjoKICAgICAgICAgICAgIHJldHVy
biAiZ2xCaW5kRnJhbWVidWZmZXIiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkJpbmRGcmFt
ZWJ1ZmZlck9FUzoKQEAgLTExNiwxNiArMTE0LDMyIEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5UG9p
bnROYW1lKEVudHJ5UG9pbnQgZXApCiAgICAgICAgICAgICByZXR1cm4gImdsQmxlbmRFcXVhdGlv
blNlcGFyYXRlIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVuZEVxdWF0aW9uU2VwYXJh
dGVpOgogICAgICAgICAgICAgcmV0dXJuICJnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWkiOworICAg
ICAgICBjYXNlIEVudHJ5UG9pbnQ6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQ6CisgICAgICAg
ICAgICByZXR1cm4gImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCI7CisgICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUzoKKyAgICAgICAgICAgIHJldHVy
biAiZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50
OjpCbGVuZEVxdWF0aW9uaToKICAgICAgICAgICAgIHJldHVybiAiZ2xCbGVuZEVxdWF0aW9uaSI7
CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmxlbmRFcXVhdGlvbmlFWFQ6CisgICAgICAgICAg
ICByZXR1cm4gImdsQmxlbmRFcXVhdGlvbmlFWFQiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OkJsZW5kRXF1YXRpb25pT0VTOgorICAgICAgICAgICAgcmV0dXJuICJnbEJsZW5kRXF1YXRpb25p
T0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVuZEZ1bmM6CiAgICAgICAgICAgICBy
ZXR1cm4gImdsQmxlbmRGdW5jIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVuZEZ1bmNT
ZXBhcmF0ZToKICAgICAgICAgICAgIHJldHVybiAiZ2xCbGVuZEZ1bmNTZXBhcmF0ZSI7CiAgICAg
ICAgIGNhc2UgRW50cnlQb2ludDo6QmxlbmRGdW5jU2VwYXJhdGVpOgogICAgICAgICAgICAgcmV0
dXJuICJnbEJsZW5kRnVuY1NlcGFyYXRlaSI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6Qmxl
bmRGdW5jU2VwYXJhdGVpRVhUOgorICAgICAgICAgICAgcmV0dXJuICJnbEJsZW5kRnVuY1NlcGFy
YXRlaUVYVCI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmxlbmRGdW5jU2VwYXJhdGVpT0VT
OgorICAgICAgICAgICAgcmV0dXJuICJnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUyI7CiAgICAgICAg
IGNhc2UgRW50cnlQb2ludDo6QmxlbmRGdW5jaToKICAgICAgICAgICAgIHJldHVybiAiZ2xCbGVu
ZEZ1bmNpIjsKKyAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVuZEZ1bmNpRVhUOgorICAgICAg
ICAgICAgcmV0dXJuICJnbEJsZW5kRnVuY2lFWFQiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OkJsZW5kRnVuY2lPRVM6CisgICAgICAgICAgICByZXR1cm4gImdsQmxlbmRGdW5jaU9FUyI7CiAg
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmxpdEZyYW1lYnVmZmVyOgogICAgICAgICAgICAgcmV0
dXJuICJnbEJsaXRGcmFtZWJ1ZmZlciI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmxpdEZy
YW1lYnVmZmVyQU5HTEU6CkBAIC0yODAsNiArMjk0LDEwIEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5
UG9pbnROYW1lKEVudHJ5UG9pbnQgZXApCiAgICAgICAgICAgICByZXR1cm4gImdsQ29sb3JNYXNr
IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpDb2xvck1hc2tpOgogICAgICAgICAgICAgcmV0
dXJuICJnbENvbG9yTWFza2kiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkNvbG9yTWFza2lF
WFQ6CisgICAgICAgICAgICByZXR1cm4gImdsQ29sb3JNYXNraUVYVCI7CisgICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6Q29sb3JNYXNraU9FUzoKKyAgICAgICAgICAgIHJldHVybiAiZ2xDb2xvck1h
c2tpT0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpDb2xvck1hdGVyaWFsOgogICAgICAg
ICAgICAgcmV0dXJuICJnbENvbG9yTWF0ZXJpYWwiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OkNvbG9yUDN1aToKQEAgLTM2MCwxNCArMzc4LDYgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2lu
dE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAgICAgICAgIHJldHVybiAiZ2xDb3B5VGV4dHVyZVN1
YkltYWdlMkQiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkNvcHlUZXh0dXJlU3ViSW1hZ2Uz
RDoKICAgICAgICAgICAgIHJldHVybiAiZ2xDb3B5VGV4dHVyZVN1YkltYWdlM0QiOwotICAgICAg
ICBjYXNlIEVudHJ5UG9pbnQ6OkNvdmVyRmlsbFBhdGhDSFJPTUlVTToKLSAgICAgICAgICAgIHJl
dHVybiAiZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0iOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xD
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0iOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbENvdmVyU3Ry
b2tlUGF0aENIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6Q292ZXJhZ2VN
b2R1bGF0aW9uQ0hST01JVU06CiAgICAgICAgICAgICByZXR1cm4gImdsQ292ZXJhZ2VNb2R1bGF0
aW9uQ0hST01JVU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkNyZWF0ZUJ1ZmZlcnM6CkBA
IC00MjQsOCArNDM0LDYgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2lu
dCBlcCkKICAgICAgICAgICAgIHJldHVybiAiZ2xEZWxldGVMaXN0cyI7CiAgICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6RGVsZXRlTWVtb3J5T2JqZWN0c0VYVDoKICAgICAgICAgICAgIHJldHVybiAi
Z2xEZWxldGVNZW1vcnlPYmplY3RzRVhUIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpEZWxl
dGVQYXRoc0NIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbERlbGV0ZVBhdGhzQ0hST01J
VU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkRlbGV0ZVByb2dyYW06CiAgICAgICAgICAg
ICByZXR1cm4gImdsRGVsZXRlUHJvZ3JhbSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6RGVs
ZXRlUHJvZ3JhbVBpcGVsaW5lczoKQEAgLTQ4Miw2ICs0OTAsMTAgQEAgY29uc3QgY2hhciAqR2V0
RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAgICAgICAgIHJldHVybiAiZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkRpc2FibGVp
OgogICAgICAgICAgICAgcmV0dXJuICJnbERpc2FibGVpIjsKKyAgICAgICAgY2FzZSBFbnRyeVBv
aW50OjpEaXNhYmxlaUVYVDoKKyAgICAgICAgICAgIHJldHVybiAiZ2xEaXNhYmxlaUVYVCI7Cisg
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6RGlzYWJsZWlPRVM6CisgICAgICAgICAgICByZXR1cm4g
ImdsRGlzYWJsZWlPRVMiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkRpc2NhcmRGcmFtZWJ1
ZmZlckVYVDoKICAgICAgICAgICAgIHJldHVybiAiZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQiOwog
ICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkRpc3BhdGNoQ29tcHV0ZToKQEAgLTU5MCw2ICs2MDIs
MTAgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAg
ICAgICAgIHJldHVybiAiZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSI7CiAgICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6RW5hYmxlaToKICAgICAgICAgICAgIHJldHVybiAiZ2xFbmFibGVpIjsKKyAg
ICAgICAgY2FzZSBFbnRyeVBvaW50OjpFbmFibGVpRVhUOgorICAgICAgICAgICAgcmV0dXJuICJn
bEVuYWJsZWlFWFQiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkVuYWJsZWlPRVM6CisgICAg
ICAgICAgICByZXR1cm4gImdsRW5hYmxlaU9FUyI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6
RW5kOgogICAgICAgICAgICAgcmV0dXJuICJnbEVuZCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2lu
dDo6RW5kQ29uZGl0aW9uYWxSZW5kZXI6CkBAIC03MTAsOCArNzI2LDYgQEAgY29uc3QgY2hhciAq
R2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAgICAgICAgIHJldHVybiAiZ2xH
ZW5GcmFtZWJ1ZmZlcnNPRVMiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6Okdlbkxpc3RzOgog
ICAgICAgICAgICAgcmV0dXJuICJnbEdlbkxpc3RzIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50
OjpHZW5QYXRoc0NIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbEdlblBhdGhzQ0hST01J
VU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkdlblByb2dyYW1QaXBlbGluZXM6CiAgICAg
ICAgICAgICByZXR1cm4gImdsR2VuUHJvZ3JhbVBpcGVsaW5lcyI7CiAgICAgICAgIGNhc2UgRW50
cnlQb2ludDo6R2VuUXVlcmllczoKQEAgLTg0OCw2ICs4NjIsOCBAQCBjb25zdCBjaGFyICpHZXRF
bnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbEdldElu
dGVnZXI2NGlfdlJvYnVzdEFOR0xFIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpHZXRJbnRl
Z2VyNjR2OgogICAgICAgICAgICAgcmV0dXJuICJnbEdldEludGVnZXI2NHYiOworICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6OkdldEludGVnZXI2NHZFWFQ6CisgICAgICAgICAgICByZXR1cm4gImds
R2V0SW50ZWdlcjY0dkVYVCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6R2V0SW50ZWdlcjY0
dlJvYnVzdEFOR0xFOgogICAgICAgICAgICAgcmV0dXJuICJnbEdldEludGVnZXI2NHZSb2J1c3RB
TkdMRSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6R2V0SW50ZWdlcmlfdjoKQEAgLTkxMiwx
MCArOTI4LDYgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkK
ICAgICAgICAgICAgIHJldHVybiAiZ2xHZXRPYmplY3RQdHJMYWJlbCI7CiAgICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6R2V0T2JqZWN0UHRyTGFiZWxLSFI6CiAgICAgICAgICAgICByZXR1cm4gImds
R2V0T2JqZWN0UHRyTGFiZWxLSFIiOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkdldFBhdGhQ
YXJhbWV0ZXJmdkNIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbEdldFBhdGhQYXJhbWV0
ZXJmdkNIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpHZXRQYXRoUGFyYW1ldGVy
aXZDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJP
TUlVTSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6R2V0UGl4ZWxNYXBmdjoKICAgICAgICAg
ICAgIHJldHVybiAiZ2xHZXRQaXhlbE1hcGZ2IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpH
ZXRQaXhlbE1hcHVpdjoKQEAgLTEyNDAsOCArMTI1MiwxMiBAQCBjb25zdCBjaGFyICpHZXRFbnRy
eVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbEhpbnQiOwog
ICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkltcG9ydE1lbW9yeUZkRVhUOgogICAgICAgICAgICAg
cmV0dXJuICJnbEltcG9ydE1lbW9yeUZkRVhUIjsKKyAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpJ
bXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRToKKyAgICAgICAgICAgIHJldHVybiAiZ2xJbXBv
cnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6SW1w
b3J0U2VtYXBob3JlRmRFWFQ6CiAgICAgICAgICAgICByZXR1cm4gImdsSW1wb3J0U2VtYXBob3Jl
RmRFWFQiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkltcG9ydFNlbWFwaG9yZVppcmNvbkhh
bmRsZUFOR0xFOgorICAgICAgICAgICAgcmV0dXJuICJnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhh
bmRsZUFOR0xFIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpJbmRleE1hc2s6CiAgICAgICAg
ICAgICByZXR1cm4gImdsSW5kZXhNYXNrIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpJbmRl
eFBvaW50ZXI6CkBAIC0xMjk4LDYgKzEzMTQsMTAgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2lu
dE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAgICAgICAgIHJldHVybiAiZ2xJc0VuYWJsZWQiOwog
ICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OklzRW5hYmxlZGk6CiAgICAgICAgICAgICByZXR1cm4g
ImdsSXNFbmFibGVkaSI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6SXNFbmFibGVkaUVYVDoK
KyAgICAgICAgICAgIHJldHVybiAiZ2xJc0VuYWJsZWRpRVhUIjsKKyAgICAgICAgY2FzZSBFbnRy
eVBvaW50OjpJc0VuYWJsZWRpT0VTOgorICAgICAgICAgICAgcmV0dXJuICJnbElzRW5hYmxlZGlP
RVMiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OklzRmVuY2VOVjoKICAgICAgICAgICAgIHJl
dHVybiAiZ2xJc0ZlbmNlTlYiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OklzRnJhbWVidWZm
ZXI6CkBAIC0xMzA4LDggKzEzMjgsNiBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShF
bnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbElzTGlzdCI7CiAgICAgICAgIGNh
c2UgRW50cnlQb2ludDo6SXNNZW1vcnlPYmplY3RFWFQ6CiAgICAgICAgICAgICByZXR1cm4gImds
SXNNZW1vcnlPYmplY3RFWFQiOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OklzUGF0aENIUk9N
SVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbElzUGF0aENIUk9NSVVNIjsKICAgICAgICAgY2Fz
ZSBFbnRyeVBvaW50OjpJc1Byb2dyYW06CiAgICAgICAgICAgICByZXR1cm4gImdsSXNQcm9ncmFt
IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpJc1Byb2dyYW1QaXBlbGluZToKQEAgLTE0MzQs
MTAgKzE0NTIsNiBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVw
KQogICAgICAgICAgICAgcmV0dXJuICJnbE1hdGVyaWFseHYiOwogICAgICAgICBjYXNlIEVudHJ5
UG9pbnQ6Ok1hdHJpeEluZGV4UG9pbnRlck9FUzoKICAgICAgICAgICAgIHJldHVybiAiZ2xNYXRy
aXhJbmRleFBvaW50ZXJPRVMiOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6Ok1hdHJpeExvYWRJ
ZGVudGl0eUNIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbE1hdHJpeExvYWRJZGVudGl0
eUNIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpNYXRyaXhMb2FkZkNIUk9NSVVN
OgotICAgICAgICAgICAgcmV0dXJuICJnbE1hdHJpeExvYWRmQ0hST01JVU0iOwogICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6Ok1hdHJpeE1vZGU6CiAgICAgICAgICAgICByZXR1cm4gImdsTWF0cml4
TW9kZSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6TWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRz
S0hSOgpAQCAtMTY0NCwxNCArMTY1OCw2IEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5UG9pbnROYW1l
KEVudHJ5UG9pbnQgZXApCiAgICAgICAgICAgICByZXR1cm4gImdsUGF0Y2hQYXJhbWV0ZXJmdiI7
CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6UGF0Y2hQYXJhbWV0ZXJpOgogICAgICAgICAgICAg
cmV0dXJuICJnbFBhdGNoUGFyYW1ldGVyaSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6UGF0
aENvbW1hbmRzQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1cm4gImdsUGF0aENvbW1hbmRzQ0hS
T01JVU0iOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlBhdGhQYXJhbWV0ZXJmQ0hST01JVU06
Ci0gICAgICAgICAgICByZXR1cm4gImdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSI7Ci0gICAgICAg
IGNhc2UgRW50cnlQb2ludDo6UGF0aFBhcmFtZXRlcmlDSFJPTUlVTToKLSAgICAgICAgICAgIHJl
dHVybiAiZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50
OjpQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xQYXRoU3Rl
bmNpbEZ1bmNDSFJPTUlVTSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6UGF1c2VUcmFuc2Zv
cm1GZWVkYmFjazoKICAgICAgICAgICAgIHJldHVybiAiZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpQaXhlbE1hcGZ2OgpAQCAtMTcyNCw4ICsxNzMw
LDYgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAg
ICAgICAgIHJldHVybiAiZ2xQcm9ncmFtQmluYXJ5T0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBv
aW50OjpQcm9ncmFtUGFyYW1ldGVyaToKICAgICAgICAgICAgIHJldHVybiAiZ2xQcm9ncmFtUGFy
YW1ldGVyaSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6UHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1cm4gImdsUHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuQ0hST01JVU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlm
b3JtMWQ6CiAgICAgICAgICAgICByZXR1cm4gImdsUHJvZ3JhbVVuaWZvcm0xZCI7CiAgICAgICAg
IGNhc2UgRW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xZHY6CkBAIC0yMDUyLDEwICsyMDU2LDYg
QEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAgICAg
ICAgIHJldHVybiAiZ2xTaWduYWxTZW1hcGhvcmVFWFQiOwogICAgICAgICBjYXNlIEVudHJ5UG9p
bnQ6OlNwZWNpYWxpemVTaGFkZXI6CiAgICAgICAgICAgICByZXR1cm4gImdsU3BlY2lhbGl6ZVNo
YWRlciI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3RlbmNpbEZpbGxQYXRoQ0hST01JVU06
Ci0gICAgICAgICAgICByZXR1cm4gImdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0iOwotICAgICAg
ICBjYXNlIEVudHJ5UG9pbnQ6OlN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNOgotICAg
ICAgICAgICAgcmV0dXJuICJnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNIjsKICAg
ICAgICAgY2FzZSBFbnRyeVBvaW50OjpTdGVuY2lsRnVuYzoKICAgICAgICAgICAgIHJldHVybiAi
Z2xTdGVuY2lsRnVuYyI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3RlbmNpbEZ1bmNTZXBh
cmF0ZToKQEAgLTIwNjgsMTggKzIwNjgsNiBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFt
ZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbFN0ZW5jaWxPcCI7CiAgICAg
ICAgIGNhc2UgRW50cnlQb2ludDo6U3RlbmNpbE9wU2VwYXJhdGU6CiAgICAgICAgICAgICByZXR1
cm4gImdsU3RlbmNpbE9wU2VwYXJhdGUiOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlN0ZW5j
aWxTdHJva2VQYXRoQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1cm4gImdsU3RlbmNpbFN0cm9r
ZVBhdGhDSFJPTUlVTSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3RlbmNpbFN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xTdGVuY2lsU3Ryb2tl
UGF0aEluc3RhbmNlZENIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1
cm4gImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0iOwotICAgICAg
ICBjYXNlIEVudHJ5UG9pbnQ6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU06Ci0g
ICAgICAgICAgICByZXR1cm4gImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSI7
Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpUZXN0
RmVuY2VOVjoKICAgICAgICAgICAgIHJldHVybiAiZ2xUZXN0RmVuY2VOViI7CiAgICAgICAgIGNh
c2UgRW50cnlQb2ludDo6VGV4QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50c19lbnVtX2F1dG9nZW4uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9lbnRyeV9wb2ludHNfZW51bV9hdXRvZ2VuLmgK
aW5kZXggOTk1OWMwODg0YzY1MjljOTc5MTNlMGY0YzM0ZDk3MDNmYmMwMDYxZi4uMDFkYzNmMjYz
NzFlZGMzMzRjZmE2N2NjN2MwMGQ3ZjI4Nzc3OWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50c19lbnVtX2F1dG9nZW4uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZW50cnlfcG9pbnRzX2VudW1f
YXV0b2dlbi5oCkBAIC0zOSw3ICszOSw2IEBAIGVudW0gY2xhc3MgRW50cnlQb2ludAogICAgIEJp
bmRGcmFnRGF0YUxvY2F0aW9uRVhULAogICAgIEJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZCwK
ICAgICBCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQsCi0gICAgQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNLAogICAgIEJpbmRGcmFtZWJ1ZmZlciwKICAgICBCaW5kRnJhbWVi
dWZmZXJPRVMsCiAgICAgQmluZEltYWdlVGV4dHVyZSwKQEAgLTY0LDExICs2MywxOSBAQCBlbnVt
IGNsYXNzIEVudHJ5UG9pbnQKICAgICBCbGVuZEVxdWF0aW9uLAogICAgIEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSwKICAgICBCbGVuZEVxdWF0aW9uU2VwYXJhdGVpLAorICAgIEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWlFWFQsCisgICAgQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUywKICAgICBCbGVuZEVx
dWF0aW9uaSwKKyAgICBCbGVuZEVxdWF0aW9uaUVYVCwKKyAgICBCbGVuZEVxdWF0aW9uaU9FUywK
ICAgICBCbGVuZEZ1bmMsCiAgICAgQmxlbmRGdW5jU2VwYXJhdGUsCiAgICAgQmxlbmRGdW5jU2Vw
YXJhdGVpLAorICAgIEJsZW5kRnVuY1NlcGFyYXRlaUVYVCwKKyAgICBCbGVuZEZ1bmNTZXBhcmF0
ZWlPRVMsCiAgICAgQmxlbmRGdW5jaSwKKyAgICBCbGVuZEZ1bmNpRVhULAorICAgIEJsZW5kRnVu
Y2lPRVMsCiAgICAgQmxpdEZyYW1lYnVmZmVyLAogICAgIEJsaXRGcmFtZWJ1ZmZlckFOR0xFLAog
ICAgIEJsaXROYW1lZEZyYW1lYnVmZmVyLApAQCAtMTQ2LDYgKzE1Myw4IEBAIGVudW0gY2xhc3Mg
RW50cnlQb2ludAogICAgIENvbG9yNHgsCiAgICAgQ29sb3JNYXNrLAogICAgIENvbG9yTWFza2ks
CisgICAgQ29sb3JNYXNraUVYVCwKKyAgICBDb2xvck1hc2tpT0VTLAogICAgIENvbG9yTWF0ZXJp
YWwsCiAgICAgQ29sb3JQM3VpLAogICAgIENvbG9yUDN1aXYsCkBAIC0xODYsMTAgKzE5NSw2IEBA
IGVudW0gY2xhc3MgRW50cnlQb2ludAogICAgIENvcHlUZXh0dXJlU3ViSW1hZ2UxRCwKICAgICBD
b3B5VGV4dHVyZVN1YkltYWdlMkQsCiAgICAgQ29weVRleHR1cmVTdWJJbWFnZTNELAotICAgIENv
dmVyRmlsbFBhdGhDSFJPTUlVTSwKLSAgICBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0s
Ci0gICAgQ292ZXJTdHJva2VQYXRoQ0hST01JVU0sCi0gICAgQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU0sCiAgICAgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0sCiAgICAgQ3JlYXRl
QnVmZmVycywKICAgICBDcmVhdGVGcmFtZWJ1ZmZlcnMsCkBAIC0yMTgsNyArMjIzLDYgQEAgZW51
bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgRGVsZXRlRnJhbWVidWZmZXJzT0VTLAogICAgIERlbGV0
ZUxpc3RzLAogICAgIERlbGV0ZU1lbW9yeU9iamVjdHNFWFQsCi0gICAgRGVsZXRlUGF0aHNDSFJP
TUlVTSwKICAgICBEZWxldGVQcm9ncmFtLAogICAgIERlbGV0ZVByb2dyYW1QaXBlbGluZXMsCiAg
ICAgRGVsZXRlUXVlcmllcywKQEAgLTI0Nyw2ICsyNTEsOCBAQCBlbnVtIGNsYXNzIEVudHJ5UG9p
bnQKICAgICBEaXNhYmxlVmVydGV4QXJyYXlBdHRyaWIsCiAgICAgRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5LAogICAgIERpc2FibGVpLAorICAgIERpc2FibGVpRVhULAorICAgIERpc2FibGVpT0VT
LAogICAgIERpc2NhcmRGcmFtZWJ1ZmZlckVYVCwKICAgICBEaXNwYXRjaENvbXB1dGUsCiAgICAg
RGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QsCkBAIC0zMDEsNiArMzA3LDggQEAgZW51bSBjbGFzcyBF
bnRyeVBvaW50CiAgICAgRW5hYmxlVmVydGV4QXJyYXlBdHRyaWIsCiAgICAgRW5hYmxlVmVydGV4
QXR0cmliQXJyYXksCiAgICAgRW5hYmxlaSwKKyAgICBFbmFibGVpRVhULAorICAgIEVuYWJsZWlP
RVMsCiAgICAgRW5kLAogICAgIEVuZENvbmRpdGlvbmFsUmVuZGVyLAogICAgIEVuZExpc3QsCkBA
IC0zNjEsNyArMzY5LDYgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgR2VuRnJhbWVidWZm
ZXJzLAogICAgIEdlbkZyYW1lYnVmZmVyc09FUywKICAgICBHZW5MaXN0cywKLSAgICBHZW5QYXRo
c0NIUk9NSVVNLAogICAgIEdlblByb2dyYW1QaXBlbGluZXMsCiAgICAgR2VuUXVlcmllcywKICAg
ICBHZW5RdWVyaWVzRVhULApAQCAtNDMwLDYgKzQzNyw3IEBAIGVudW0gY2xhc3MgRW50cnlQb2lu
dAogICAgIEdldEludGVnZXI2NGlfdiwKICAgICBHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRSwK
ICAgICBHZXRJbnRlZ2VyNjR2LAorICAgIEdldEludGVnZXI2NHZFWFQsCiAgICAgR2V0SW50ZWdl
cjY0dlJvYnVzdEFOR0xFLAogICAgIEdldEludGVnZXJpX3YsCiAgICAgR2V0SW50ZWdlcmlfdlJv
YnVzdEFOR0xFLApAQCAtNDYyLDggKzQ3MCw2IEBAIGVudW0gY2xhc3MgRW50cnlQb2ludAogICAg
IEdldE9iamVjdExhYmVsS0hSLAogICAgIEdldE9iamVjdFB0ckxhYmVsLAogICAgIEdldE9iamVj
dFB0ckxhYmVsS0hSLAotICAgIEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNLAotICAgIEdldFBh
dGhQYXJhbWV0ZXJpdkNIUk9NSVVNLAogICAgIEdldFBpeGVsTWFwZnYsCiAgICAgR2V0UGl4ZWxN
YXB1aXYsCiAgICAgR2V0UGl4ZWxNYXB1c3YsCkBAIC02MjYsNyArNjMyLDkgQEAgZW51bSBjbGFz
cyBFbnRyeVBvaW50CiAgICAgR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSwKICAgICBIaW50LAog
ICAgIEltcG9ydE1lbW9yeUZkRVhULAorICAgIEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xF
LAogICAgIEltcG9ydFNlbWFwaG9yZUZkRVhULAorICAgIEltcG9ydFNlbWFwaG9yZVppcmNvbkhh
bmRsZUFOR0xFLAogICAgIEluZGV4TWFzaywKICAgICBJbmRleFBvaW50ZXIsCiAgICAgSW5kZXhk
LApAQCAtNjU1LDEyICs2NjMsMTMgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgSXNCdWZm
ZXIsCiAgICAgSXNFbmFibGVkLAogICAgIElzRW5hYmxlZGksCisgICAgSXNFbmFibGVkaUVYVCwK
KyAgICBJc0VuYWJsZWRpT0VTLAogICAgIElzRmVuY2VOViwKICAgICBJc0ZyYW1lYnVmZmVyLAog
ICAgIElzRnJhbWVidWZmZXJPRVMsCiAgICAgSXNMaXN0LAogICAgIElzTWVtb3J5T2JqZWN0RVhU
LAotICAgIElzUGF0aENIUk9NSVVNLAogICAgIElzUHJvZ3JhbSwKICAgICBJc1Byb2dyYW1QaXBl
bGluZSwKICAgICBJc1F1ZXJ5LApAQCAtNzIzLDggKzczMiw2IEBAIGVudW0gY2xhc3MgRW50cnlQ
b2ludAogICAgIE1hdGVyaWFseCwKICAgICBNYXRlcmlhbHh2LAogICAgIE1hdHJpeEluZGV4UG9p
bnRlck9FUywKLSAgICBNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSwKLSAgICBNYXRyaXhMb2Fk
ZkNIUk9NSVVNLAogICAgIE1hdHJpeE1vZGUsCiAgICAgTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRz
S0hSLAogICAgIE1lbW9yeUJhcnJpZXIsCkBAIC04MjgsMTAgKzgzNSw2IEBAIGVudW0gY2xhc3Mg
RW50cnlQb2ludAogICAgIFBhc3NUaHJvdWdoLAogICAgIFBhdGNoUGFyYW1ldGVyZnYsCiAgICAg
UGF0Y2hQYXJhbWV0ZXJpLAotICAgIFBhdGhDb21tYW5kc0NIUk9NSVVNLAotICAgIFBhdGhQYXJh
bWV0ZXJmQ0hST01JVU0sCi0gICAgUGF0aFBhcmFtZXRlcmlDSFJPTUlVTSwKLSAgICBQYXRoU3Rl
bmNpbEZ1bmNDSFJPTUlVTSwKICAgICBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrLAogICAgIFBpeGVs
TWFwZnYsCiAgICAgUGl4ZWxNYXB1aXYsCkBAIC04NjgsNyArODcxLDYgQEAgZW51bSBjbGFzcyBF
bnRyeVBvaW50CiAgICAgUHJvZ3JhbUJpbmFyeSwKICAgICBQcm9ncmFtQmluYXJ5T0VTLAogICAg
IFByb2dyYW1QYXJhbWV0ZXJpLAotICAgIFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9N
SVVNLAogICAgIFByb2dyYW1Vbmlmb3JtMWQsCiAgICAgUHJvZ3JhbVVuaWZvcm0xZHYsCiAgICAg
UHJvZ3JhbVVuaWZvcm0xZiwKQEAgLTEwMzIsMjAgKzEwMzQsMTIgQEAgZW51bSBjbGFzcyBFbnRy
eVBvaW50CiAgICAgU2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZywKICAgICBTaWduYWxTZW1hcGhv
cmVFWFQsCiAgICAgU3BlY2lhbGl6ZVNoYWRlciwKLSAgICBTdGVuY2lsRmlsbFBhdGhDSFJPTUlV
TSwKLSAgICBTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwKICAgICBTdGVuY2lsRnVu
YywKICAgICBTdGVuY2lsRnVuY1NlcGFyYXRlLAogICAgIFN0ZW5jaWxNYXNrLAogICAgIFN0ZW5j
aWxNYXNrU2VwYXJhdGUsCiAgICAgU3RlbmNpbE9wLAogICAgIFN0ZW5jaWxPcFNlcGFyYXRlLAot
ICAgIFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0sCi0gICAgU3RlbmNpbFN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTSwKLSAgICBTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSwKLSAg
ICBTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwKLSAgICBTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNLAotICAgIFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU0sCiAgICAgVGVzdEZlbmNlTlYsCiAgICAgVGV4QnVmZmVyLAog
ICAgIFRleEJ1ZmZlclJhbmdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAppbmRleCA4YWI5Nzk0MzA0
MTY3OTRhMmY3ZTU4Njk0OTQ1Njk2Mjg1MGEyZTk0Li4wMjQ4ZmFiNThlNjUyYjE1YzY3NTVmNjdl
YzliZmI1Zjk5YThiOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9hdXRvZ2VuLmNwcApAQCAtMiw3ICsyLDcgQEAK
IC8vIEdlbmVyYXRlZCBieSBnZW5fZm9ybWF0X21hcC5weSB1c2luZyBkYXRhIGZyb20gZm9ybWF0
X21hcF9kYXRhLmpzb24uCiAvLyBFUzMgZm9ybWF0IGluZm8gZnJvbSBlczNfZm9ybWF0X3R5cGVf
Y29tYmluYXRpb25zLmpzb24uCiAvLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTUyLDYgKzUyLDI2IEBA
IEdMZW51bSBHZXRTaXplZEZvcm1hdEludGVybmFsKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJf
RVhUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfQlBUQ19VTk9STV9FWFQ6CiAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgICAgICAg
ICB7CkBAIC0xNjIsNiArMTgyLDI2IEBAIEdMZW51bSBHZXRTaXplZEZvcm1hdEludGVybmFsKEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJf
RVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JF
RF9SR1RDMV9FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FM
UEhBX0JQVENfVU5PUk1fRVhUOgogICAgICAgICAgICAgc3dpdGNoICh0eXBlKQogICAgICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zv
cm1hdF9tYXBfZGF0YS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L2Zvcm1hdF9tYXBfZGF0YS5qc29uCmluZGV4IDYzNDhhNGFiMzNhMTlhOTE2MDgxYmQ4ZmU2ZmQ1
YWE5MzgwNzQzZDkuLmQzMDE4N2JmN2M2YzRhNDY2NjhlMmFhNWJmOTc3NDg1YWMyMTI3NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXRfbWFw
X2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9y
bWF0X21hcF9kYXRhLmpzb24KQEAgLTEyOCw2ICsxMjgsMTggQEAKICAgICAiR0xfQ09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQiOiB7CiAgICAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUIgogICAgIH0sCisgICAg
IkdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiR0xfQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIgorICAgIH0sCisgICAgIkdMX0NPTVBS
RVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQiCisgICAgfSwKKyAgICAiR0xf
Q09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUIjogeworICAgICAgICAiR0xfVU5TSUdORURf
QllURSI6ICJHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQiCisgICAgfSwKKyAgICAi
R0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCI6IHsKKyAgICAgICAgIkdM
X1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VY
VCIKKyAgICB9LAogICAgICJHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQiOiB7CiAg
ICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JN
X0VYVCIKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2Zvcm1hdHV0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9mb3JtYXR1dGlscy5jcHAKaW5kZXggODYyZTRhN2VjNDk3YTVhNzJkM2M5NGU0NWM0MDM3
Zjk1NWMxOTUxNi4uZWI4Mjc0OTg1MTNmOWUyNGUxZWU1OGFlYmU2MmU5ZTAyMmU1NWE3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRp
bHMuY3BwCkBAIC05NTUsNiArOTU1LDEzIEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAg
QnVpbGRJbnRlcm5hbEZvcm1hdEluZm9NYXAoKQogICAgIEFkZENvbXByZXNzZWRGb3JtYXQoJm1h
cCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZ4NV9PRVMsICA2LCAgNiwgNSwg
MTI4LCA0LCB0cnVlLCAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9u
QVNUQ09FUz4sICAgIEFsd2F5c1N1cHBvcnRlZCwgTmV2ZXJTdXBwb3J0ZWQsICAgICAgTmV2ZXJT
dXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkKTsKICAgICBBZGRDb21wcmVzc2VkRm9ybWF0KCZtYXAs
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2eDZfT0VTLCAgNiwgIDYsIDYsIDEy
OCwgNCwgdHJ1ZSwgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFT
VENPRVM+LCAgICBBbHdheXNTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkLCAgICAgIE5ldmVyU3Vw
cG9ydGVkLCBOZXZlclN1cHBvcnRlZCk7CiAKKyAgICAvLyBGcm9tIEVYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3JndGMKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3Jt
YXQgICAgICAgICAgICAgICAgICAgICAgICB8IFcgfCBIIHxEIHwgQlMgfENDfCBTUkdCIHwgVGV4
dHVyZSBzdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUg
ICAgIHwgVGV4dHVyZSBhdHRhY2htZW50IHwgUmVuZGVyYnVmZmVyICB8IEJsZW5kCisgICAgQWRk
Q29tcHJlc3NlZEZvcm1hdCgmbWFwLCBHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQsICAgICAg
ICAgICAgICA0LCAgNCwgMSwgIDY0LCAxLCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6
dGV4dHVyZUNvbXByZXNzaW9uUkdUQz4sIEFsd2F5c1N1cHBvcnRlZCwgTmV2ZXJTdXBwb3J0ZWQs
ICAgICAgTmV2ZXJTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRDb21wcmVzc2Vk
Rm9ybWF0KCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQsICAgICAgIDQs
ICA0LCAxLCAgNjQsIDEsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29t
cHJlc3Npb25SR1RDPiwgQWx3YXlzU3VwcG9ydGVkLCBOZXZlclN1cHBvcnRlZCwgICAgICBOZXZl
clN1cHBvcnRlZCwgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZENvbXByZXNzZWRGb3JtYXQoJm1h
cCwgR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhULCAgICAgICAgNCwgIDQsIDEsIDEy
OCwgMiwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblJH
VEM+LCBBbHdheXNTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkLCAgICAgIE5ldmVyU3VwcG9ydGVk
LCBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkQ29tcHJlc3NlZEZvcm1hdCgmbWFwLCBHTF9DT01Q
UkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhULCA0LCAgNCwgMSwgMTI4LCAyLCBmYWxz
ZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uUkdUQz4sIEFsd2F5
c1N1cHBvcnRlZCwgTmV2ZXJTdXBwb3J0ZWQsICAgICAgTmV2ZXJTdXBwb3J0ZWQsIE5ldmVyU3Vw
cG9ydGVkKTsKKwogICAgIC8vIEZyb20gRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YwogICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAgICAg
ICAgICAgICAgICB8IFcgfCBIIHxEIHwgQlMgfENDfCBTUkdCIHwgVGV4dHVyZSBzdXBwb3J0ZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgIHwgVGV4dHVyZSBh
dHRhY2htZW50IHwgUmVuZGVyYnVmZmVyICB8IEJsZW5kCiAgICAgQWRkQ29tcHJlc3NlZEZvcm1h
dCgmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQsICAgICAgICAgNCwgIDQs
IDEsIDEyOCwgNCwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVz
c2lvbkJQVEM+LCBBbHdheXNTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkLCAgICAgIE5ldmVyU3Vw
cG9ydGVkLCBOZXZlclN1cHBvcnRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCmluZGV4IGQ0YWJkMWQzMTgwZWRiN2Y4YzRjNTJh
YTU1ZTcxYmUwYjllMmZjNmEuLmZhMTc3ZjAwNWEwNmZiN2RiYTJiOWExOWJhZTY4OTY3Mjg0ODky
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3Jt
YXR1dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3Jt
YXR1dGlscy5oCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8b3N0cmVhbT4KIAogI2luY2x1
ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZHJvaWRfdXRpbC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL1ZlcnNpb24uaCIKQEAgLTI3MSw2ICsyNzIsMTYgQEAgdHlwZWRlZiBzdGQ6
OnVub3JkZXJlZF9tYXA8R0xlbnVtLCBzdGQ6OnVub3JkZXJlZF9tYXA8R0xlbnVtLCBJbnRlcm5h
bEZvcm1hdD4+CiAgICAgSW50ZXJuYWxGb3JtYXRJbmZvTWFwOwogY29uc3QgSW50ZXJuYWxGb3Jt
YXRJbmZvTWFwICZHZXRJbnRlcm5hbEZvcm1hdE1hcCgpOwogCitBTkdMRV9JTkxJTkUgaW50IEdl
dE5hdGl2ZVZpc3VhbElEKGNvbnN0IEludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdCkKK3sK
KyAgICBpbnQgbmF0aXZlVmlzdWFsSWQgPSAwOworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1f
QU5EUk9JRCkKKyAgICBuYXRpdmVWaXN1YWxJZCA9CisgICAgICAgIGFuZ2xlOjphbmRyb2lkOjpH
TEludGVybmFsRm9ybWF0VG9OYXRpdmVQaXhlbEZvcm1hdChpbnRlcm5hbEZvcm1hdC5pbnRlcm5h
bEZvcm1hdCk7CisjZW5kaWYKKyAgICByZXR1cm4gbmF0aXZlVmlzdWFsSWQ7Cit9CisKIC8vIEZy
b20gdGhlIEVTU0wgMy4wMC40IHNwZWM6CiAvLyBWZXJ0ZXggc2hhZGVyIGlucHV0cyBjYW4gb25s
eSBiZSBmbG9hdCwgZmxvYXRpbmctcG9pbnQgdmVjdG9ycywgbWF0cmljZXMsIHNpZ25lZCBhbmQg
dW5zaWduZWQKIC8vIGludGVnZXJzIGFuZCBpbnRlZ2VyIHZlY3RvcnMuIFZlcnRleCBzaGFkZXIg
aW5wdXRzIGNhbm5vdCBiZSBhcnJheXMgb3Igc3RydWN0dXJlcy4KQEAgLTMyNCw2ICszMzUsNzQg
QEAgYW5nbGU6OkZvcm1hdElEIEdldEN1cnJlbnRWYWx1ZUZvcm1hdElEKFZlcnRleEF0dHJpYlR5
cGUgY3VycmVudFZhbHVlVHlwZSk7CiBjb25zdCBWZXJ0ZXhGb3JtYXQgJkdldFZlcnRleEZvcm1h
dEZyb21JRChhbmdsZTo6Rm9ybWF0SUQgdmVydGV4Rm9ybWF0SUQpOwogc2l6ZV90IEdldFZlcnRl
eEZvcm1hdFNpemUoYW5nbGU6OkZvcm1hdElEIHZlcnRleEZvcm1hdElEKTsKIAorQU5HTEVfSU5M
SU5FIGJvb2wgSXNTM1RDRm9ybWF0KGNvbnN0IEdMZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUM19FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUNV9FWFQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworQU5HTEVfSU5M
SU5FIGJvb2wgSXNSR1RDRm9ybWF0KGNvbnN0IEdMZW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNo
IChmb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VY
VDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOgorICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK0FOR0xFX0lOTElORSBib29sIElzQVNUQzJERm9ybWF0KGNvbnN0IEdM
ZW51bSBmb3JtYXQpCit7CisgICAgaWYgKChmb3JtYXQgPj0gR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfNHg0X0tIUiAmJgorICAgICAgICAgZm9ybWF0IDw9IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzEyeDEyX0tIUikgfHwKKyAgICAgICAgKGZvcm1hdCA+PSBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzR4NF9LSFIgJiYKKyAgICAgICAgIGZvcm1hdCA8PSBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUikpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitBTkdMRV9JTkxJTkUgYm9vbCBJc0VUQzJF
QUNGb3JtYXQoY29uc3QgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICAvLyBFUyAzLjEsIFRhYmxlIDgu
MTkKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SMTFfRUFDOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1NJR05FRF9SRzExX0VBQzoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhf
RVRDMjoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzI6CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKIC8vIENoZWNrIGlmIGFuIGludGVybmFsIGZvcm1hdCBpcyBldmVyIHZhbGlkIGluIEVTMy4g
IE1ha2VzIG5vIGNoZWNrcyBhYm91dCBzdXBwb3J0IGZvciBhIHNwZWNpZmljCiAvLyBjb250ZXh0
LgogYm9vbCBWYWxpZEVTM0ludGVybmFsRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZnJhbWVfY2Fw
dHVyZV9yZXBsYXlfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvZnJhbWVfY2FwdHVyZV9yZXBsYXlfYXV0b2dlbi5jcHAKaW5kZXggZjZlNGM1MTJhZGY1
YWI4ZjgyNmE1ZTZmMWU0ZjM3NGYyYjg3ZDFlZi4uMWZjODQ2OTliN2VkNjBlMmMwZmM1Y2FiMWY0
NDk2M2MxYTQ0MGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2ZyYW1lX2NhcHR1cmVfcmVwbGF5X2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3JlcGxheV9hdXRvZ2VuLmNw
cApAQCAtMTYwOSwyMSArMTYwOSwyNCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChn
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6R2V0VW5p
Zm9ybWZ2OgogICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHBhcmFtcy5nZXRQYXJh
bSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZh
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxv
Y2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQi
LCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0UmVhZEJ1ZmZlclBvaW50ZXI8
R0xmbG9hdCAqPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlciwgMikpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3Jt
aXY6CiAgICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtaXYocGFyYW1zLmdldFBhcmFtKCJw
cm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRp
b24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBh
cmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRSZWFkQnVmZmVyUG9pbnRlcjxHTGlu
dCAqPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGludFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6R2V0VW5pZm9ybXVpdjoKICAg
ICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm11aXYocGFyYW1zLmdldFBhcmFtKCJwcm9ncmFt
UGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIs
IFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldFJlYWRCdWZmZXJQb2ludGVyPEdMdWlu
dCAqPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0x1aW50UG9pbnRlciwgMikpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTY2Niw3ICsxNjY5LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxh
eUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5p
Zm9ybWZ2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIs
IFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZh
bHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
ImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRV
bmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9j
YXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJidWZTaXplIiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICBy
ZXBsYXlDb250ZXh0LT5nZXRSZWFkQnVmZmVyUG9pbnRlcjxHTGZsb2F0ICo+KAogICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMZmxvYXRQ
b2ludGVyLCAzKSkpOwpAQCAtMTY3NSw3ICsxNjc5LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJl
cGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5nZXRu
VW5pZm9ybWl2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAg
LnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3Jt
TG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJidWZTaXplIiwg
UGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAg
ICByZXBsYXlDb250ZXh0LT5nZXRSZWFkQnVmZmVyUG9pbnRlcjxHTGludCAqPigKICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGludFBv
aW50ZXIsIDMpKSk7CkBAIC0xNjg0LDcgKzE2ODksOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVw
bGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPmdldG5V
bmlmb3JtdWl2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAg
LnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3Jt
TG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJidWZTaXplIiwg
UGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAg
ICByZXBsYXlDb250ZXh0LT5nZXRSZWFkQnVmZmVyUG9pbnRlcjxHTHVpbnQgKj4oCiAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0x1aW50
UG9pbnRlciwgMykpKTsKQEAgLTIwOTQsMTQgKzIxMDAsMTYgQEAgdm9pZCBGcmFtZUNhcHR1cmU6
OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTFmKAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3Jh
bVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAg
ICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFs
LAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJh
bVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5V
bmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIs
IFBhcmFtVHlwZTo6VEdMZmxvYXQsIDIpLnZhbHVlLkdMZmxvYXRWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtMWZ2Ogog
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xZnYoCiAgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3Jh
bUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAot
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAg
ICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUu
R0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9p
bnRlcjxjb25zdCBHTGZsb2F0ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgMykpKTsKQEAgLTIx
MTAsMTQgKzIxMTgsMTYgQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpKAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclBy
b2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCAy
KS52YWx1ZS5HTGludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6
RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xaXY6CiAgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTFpdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAg
ICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwK
KyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5p
Zm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQi
LCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAg
ICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMaW50ICo+KAogICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xp
bnRDb25zdFBvaW50ZXIsIDMpKSk7CkBAIC0yMTI2LDE0ICsyMTM2LDE2IEBAIHZvaWQgRnJhbWVD
YXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWkoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAg
ICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAg
IHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUu
R0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAg
LnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCAyKS52YWx1ZS5HTHVpbnRWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3Jt
MXVpdjoKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpdigKICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFk
ZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFt
SURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFt
VHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAx
KQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAy
KS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFz
Q29uc3RQb2ludGVyPGNvbnN0IEdMdWludCAqPigKICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgMykpKTsK
QEAgLTIxNDIsNyArMjE1NCw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZigK
ICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFk
ZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxv
Y2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFs
LAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGZs
b2F0LCAyKS52YWx1ZS5HTGZsb2F0VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgidjEiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCAzKS52YWx1ZS5HTGZsb2F0VmFsKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjE1MCw3ICsyMTYzLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJl
cGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTJmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAg
ICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwK
KyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5p
Zm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQi
LCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAg
ICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCiAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRH
TGZsb2F0Q29uc3RQb2ludGVyLCAzKSkpOwpAQCAtMjE1OSw3ICsyMTczLDggQEAgdm9pZCBGcmFt
ZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpKAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAg
ICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVl
LkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAg
IC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCAyKS52YWx1ZS5HTGludFZhbCwKICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDMpLnZhbHVl
LkdMaW50VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE2Nyw3ICsyMTgyLDggQEAgdm9p
ZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpdigKICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDAp
CiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAx
KS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAg
ICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVp
VmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNv
bnN0IEdMaW50ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVl
IiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIDMpKSk7CkBAIC0yMTc2LDcgKzIxOTIs
OCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMnVpKAogICAgICAgICAgICAgICAg
IHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dy
YW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwK
LSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAg
ICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMdWludCwgMikudmFsdWUuR0x1
aW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6
OlRHTHVpbnQsIDMpLnZhbHVlLkdMdWludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIx
ODQsNyArMjIwMSw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0ydWl2KAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclBy
b2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6
ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+
Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0x1aW50ICo+KAogICAgICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCAz
KSkpOwpAQCAtMjE5Myw3ICsyMjExLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwo
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTNmKAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBh
cmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVl
LlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxv
Y2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRp
b25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6
VEdMZmxvYXQsIDIpLnZhbHVlLkdMZmxvYXRWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIDMpLnZhbHVlLkdMZmxvYXRWYWwsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMZmxvYXQs
IDQpLnZhbHVlLkdMZmxvYXRWYWwpOwpAQCAtMjIwMiw3ICsyMjIxLDggQEAgdm9pZCBGcmFtZUNh
cHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybTNmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
InByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAg
ICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5H
TGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2Vk
IiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAu
dmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAg
ICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxv
YXQgKj4oCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJh
bVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCAzKSkpOwpAQCAtMjIxMSw3ICsyMjMxLDggQEAg
dm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNpKAogICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwg
MCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAg
ICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCAyKS52YWx1ZS5HTGludFZhbCwK
ICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDMpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjIi
LCBQYXJhbVR5cGU6OlRHTGludCwgNCkudmFsdWUuR0xpbnRWYWwpOwpAQCAtMjIyMCw3ICsyMjQx
LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNpdigKICAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9n
cmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWws
Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1
ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQ
b2ludGVyPGNvbnN0IEdMaW50ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIDMpKSk7CkBAIC0yMjI5
LDcgKzIyNTEsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM3VpKAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMdWludCwgMiku
dmFsdWUuR0x1aW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQ
YXJhbVR5cGU6OlRHTHVpbnQsIDMpLnZhbHVlLkdMdWludFZhbCwKICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0x1aW50LCA0KS52YWx1ZS5HTHVpbnRW
YWwpOwpAQCAtMjIzOCw3ICsyMjYxLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwo
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTN1aXYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwg
UGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFs
dWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgi
bG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVu
aWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2Nh
dGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1U
eXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICByZXBs
YXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTHVpbnQgKj4oCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTHVpbnRDb25z
dFBvaW50ZXIsIDMpKSk7CkBAIC0yMjQ3LDcgKzIyNzEsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6
UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtNGYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFt
UGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAg
ICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5n
ZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWws
CisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVu
aWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwg
UGFyYW1UeXBlOjpUR0xmbG9hdCwgMikudmFsdWUuR0xmbG9hdFZhbCwKICAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMykudmFsdWUuR0xm
bG9hdFZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYyIiwgUGFyYW1UeXBl
OjpUR0xmbG9hdCwgNCkudmFsdWUuR0xmbG9hdFZhbCwKQEAgLTIyNTcsNyArMjI4Miw4IEBAIHZv
aWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZnYoCiAgICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAw
KQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
MSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2Nh
dGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAg
ICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXpl
aVZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxj
b25zdCBHTGZsb2F0ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInZh
bHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgMykpKTsKQEAgLTIyNjYsNyAr
MjI5Miw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aSgKICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQ
cm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURW
YWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQor
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGludCwgMikudmFsdWUu
R0xpbnRWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlw
ZTo6VEdMaW50LCAzKS52YWx1ZS5HTGludFZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDQpLnZhbHVlLkdMaW50VmFsLApAQCAtMjI3
Niw3ICsyMzAzLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpdigKICAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9n
cmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBh
cmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
LCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVp
LCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdl
dEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMaW50ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIDMpKSk7
CkBAIC0yMjg1LDcgKzIzMTMsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVp
KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFt
VHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNo
YWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3Jt
TG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25W
YWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdM
dWludCwgMikudmFsdWUuR0x1aW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgidjEiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIDMpLnZhbHVlLkdMdWludFZhbCwKICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0x1aW50LCA0KS52YWx1
ZS5HTHVpbnRWYWwsCkBAIC0yMjk1LDcgKzIzMjQsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVw
bGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtNHVpdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAg
ICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwK
KyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5p
Zm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQi
LCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAg
ICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMdWludCAqPigKICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdM
dWludENvbnN0UG9pbnRlciwgMykpKTsKQEAgLTIzMDQsNyArMjMzNCw4IEBAIHZvaWQgRnJhbWVD
YXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQog
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSku
dmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAg
ICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZh
bCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlw
ZTo6VEdMYm9vbGVhbiwgMykudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAgIHJl
cGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0yMzE0
LDcgKzIzNDUsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYo
CiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1U
eXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hh
ZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRp
b24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZh
bCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpU
R0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgMykudmFsdWUuR0xib29s
ZWFuVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVy
PGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0yMzI0LDcgKzIzNTYsOCBAQCB2b2lkIEZyYW1lQ2FwdHVy
ZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFs
dWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAg
ICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwK
ICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6
VEdMYm9vbGVhbiwgMykudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAgIHJlcGxh
eUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0yMzM0LDcg
KzIzNjcsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclBy
b2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6
ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIDMpLnZhbHVlLkdMYm9vbGVhblZh
bCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25z
dCBHTGZsb2F0ICo+KApAQCAtMjM0NCw3ICsyMzc4LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJl
cGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybU1hdHJpeDN4MmZ2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgi
cHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAg
ICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdM
aW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQi
LCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52
YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJv
b2xlYW4sIDMpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250
ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAtMjM1NCw3ICsyMzg5
LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0
cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIDMpLnZhbHVlLkdMYm9vbGVhblZhbCwK
ICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBH
TGZsb2F0ICo+KApAQCAtMjM2NCw3ICsyNDAwLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxh
eUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybU1hdHJpeDRmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dy
YW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZh
bCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFy
YW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUu
VW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291
bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFu
LCAzKS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+
Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAgLTIzNzQsNyArMjQxMSw4IEBA
IHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdigKICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQ
cm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURW
YWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQor
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52
YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNw
b3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAzKS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAg
ICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9h
dCAqPigKQEAgLTIzODQsNyArMjQyMiw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxs
KGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm1NYXRyaXg0eDNmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAg
ICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwK
KyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5p
Zm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQi
LCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAz
KS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0
QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAgLTI4NzIsMTM5ICsyOTExLDE2MyBA
QCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ6IiwgUGFyYW1U
eXBlOjpUR0xmaXhlZCwgMikudmFsdWUuR0xmaXhlZFZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTFmOgotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTFmKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYo
cGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZv
cm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMSkudmFsdWUuR0xmbG9hdFZhbCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTFm
djoKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZnYocGFyYW1zLmdldFBhcmFtKCJsb2Nh
dGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm0xZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBh
cmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVp
LCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBh
cmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTFpOgotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTFpKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWko
cGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZv
cm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMWl2Ogot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9u
IiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTFpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEp
LnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxh
eUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMaW50ICo+KAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlw
ZTo6VEdMaW50Q29uc3RQb2ludGVyLCAyKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0xdWk6Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtMXVpKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
MCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMXVpKHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxv
Y2F0aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCAxKS52YWx1ZS5HTHVpbnRWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0xdWl2Ogot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0xdWl2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJh
bVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVp
LCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0x1aW50ICo+KAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQ
YXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTJmOgotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTJmKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmYo
cGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZv
cm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMSkudmFsdWUuR0xmbG9hdFZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1U
eXBlOjpUR0xmbG9hdCwgMikudmFsdWUuR0xmbG9hdFZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTJmdjoKLSAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0yZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0y
ZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5V
bmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1ZS5HTHNpemVp
VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRB
c0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRD
b25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6
RW50cnlQb2ludDo6VW5pZm9ybTJpOgotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJpKHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xp
bnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmkocGFyYW1zLmdldFBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFyYW1U
eXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGludCwgMikudmFsdWUu
R0xpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9p
bnQ6OlVuaWZvcm0yaXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMml2KHBhcmFtcy5n
ZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xpbnRWYWws
CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMml2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1U
eXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xpbnQg
Kj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
InZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTJ1aToKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBh
cmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0ydWkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6
VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIDEpLnZhbHVlLkdM
dWludFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJ2MSIsIFBhcmFtVHlwZTo6VEdMdWludCwgMikudmFsdWUuR0x1aW50VmFsKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMnVpdjoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWl2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24i
LCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtMnVpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwg
MSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMdWludCAqPigKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFy
YW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCAyKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0zZjoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0zZihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xp
bnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3Jt
TG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIDEpLnZhbHVlLkdMZmxvYXRWYWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlw
ZTo6VEdMZmxvYXQsIDIpLnZhbHVlLkdMZmxvYXRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIDMpLnZh
bHVlLkdMZmxvYXRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVu
dHJ5UG9pbnQ6OlVuaWZvcm0zZnY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2Z2KHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xp
bnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2Z2KHBhcmFtcy5nZXRQYXJhbSgi
bG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50Iiwg
UGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3Qg
R0xmbG9hdCAqPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5n
ZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCAyKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0z
aToKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTNpKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJh
bVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1
ZS5HTGludFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYxIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDIpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjIiLCBQYXJhbVR5cGU6OlRH
TGludCwgMykudmFsdWUuR0xpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0zaXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtM2l2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCku
dmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2l2KHBhcmFtcy5n
ZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDAp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0
aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
ImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50
ZXI8Y29uc3QgR0xpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIDIp
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5p
Zm9ybTN1aToKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWkocGFyYW1zLmdldFBhcmFt
KCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTHVp
bnQsIDEpLnZhbHVlLkdMdWludFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMdWludCwgMikudmFsdWUuR0x1aW50
VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYy
IiwgUGFyYW1UeXBlOjpUR0x1aW50LCAzKS52YWx1ZS5HTHVpbnRWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0zdWl2OgotICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTN1aXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBh
cmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0zdWl2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52
YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5
Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0x1aW50ICo+KAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5
cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTRmOgotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTRmKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
MCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGYocGFyYW1z
LmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwg
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2Nh
dGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
InYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMSkudmFsdWUuR0xmbG9hdFZhbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpU
R0xmbG9hdCwgMikudmFsdWUuR0xmbG9hdFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMykudmFsdWUu
R0xmbG9hdFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYzIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgNCkudmFsdWUuR0xmbG9hdFZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTRmdjoK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm00ZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAx
KS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBs
YXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFt
VHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTRpOgotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTRpKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGkocGFy
YW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlv
biwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1M
b2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRH
TGludCwgMikudmFsdWUuR0xpbnRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMaW50LCAzKS52YWx1ZS5HTGludFZh
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYzIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIDQpLnZhbHVlLkdMaW50VmFsKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtNGl2OgotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTRpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBl
OjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTRpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9y
bUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl
LlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6
ZWlWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdl
dEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMaW50ICo+KAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMaW50Q29u
c3RQb2ludGVyLCAyKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVu
dHJ5UG9pbnQ6OlVuaWZvcm00dWk6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVpKHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xp
bnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVpKHBhcmFtcy5nZXRQYXJhbSgi
bG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFy
YW1UeXBlOjpUR0x1aW50LCAxKS52YWx1ZS5HTHVpbnRWYWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIDIp
LnZhbHVlLkdMdWludFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMdWludCwgMykudmFsdWUuR0x1aW50VmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYzIiwgUGFy
YW1UeXBlOjpUR0x1aW50LCA0KS52YWx1ZS5HTHVpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm00dWl2OgotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTR1aXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZv
cm00dWl2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZh
bHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1ZS5H
THNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4
dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0x1aW50ICo+KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRH
THVpbnRDb25zdFBvaW50ZXIsIDIpKSk7CkBAIC0zMDE4LDcgKzMwODEsOCBAQCB2b2lkIEZyYW1l
Q2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtTWF0cml4MmZ2OgogICAg
ICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdigKLSAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdMaW50
VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgIC52YWx1
ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJj
b3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xl
YW4sIDIpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0
LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAtMzAyNiw3ICszMDkwLDgg
QEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybU1h
dHJpeDJ4M2Z2OgogICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KAotICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAg
ICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xz
aXplaVZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBh
cmFtVHlwZTo6VEdMYm9vbGVhbiwgMikudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAg
ICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBA
IC0zMDM0LDcgKzMwOTksOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRy
eVBvaW50OjpVbmlmb3JtTWF0cml4Mng0ZnY6CiAgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
TWF0cml4Mng0ZnYoCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIs
IFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAog
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNp
emVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAyKS52YWx1ZS5HTGJvb2xlYW5W
YWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29u
c3QgR0xmbG9hdCAqPigKQEAgLTMwNDIsNyArMzEwOCw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpS
ZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm1NYXRyaXgzZnY6CiAgICAgICAgICAgICBj
b250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6
VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1M
b2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgMikudmFs
dWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29u
c3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0zMDUwLDcgKzMxMTcsOCBAQCB2b2lkIEZy
YW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtTWF0cml4M3gyZnY6
CiAgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYoCi0gICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1
ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFj
a2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAg
ICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAog
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpU
R0xib29sZWFuLCAyKS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5
Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAgLTMwNTgsNyAr
MzEyNiw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVu
aWZvcm1NYXRyaXgzeDRmdjoKICAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRm
digKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBl
OjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisg
ICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAg
ICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZh
bHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bv
c2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIDIpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAg
ICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0
ICo+KApAQCAtMzA2Niw3ICszMTM1LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwo
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBn
bDo6RW50cnlQb2ludDo6VW5pZm9ybU1hdHJpeDRmdjoKICAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm1NYXRyaXg0ZnYoCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxv
Y2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFs
LAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRH
THNpemVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAyKS52YWx1ZS5HTGJvb2xl
YW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8
Y29uc3QgR0xmbG9hdCAqPigKQEAgLTMwNzQsNyArMzE0NCw4IEBAIHZvaWQgRnJhbWVDYXB0dXJl
OjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm1NYXRyaXg0eDJmdjoKICAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdigKLSAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFs
LAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJh
bVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5V
bmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3Vu
dCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAg
ICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4s
IDIpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5n
ZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAtMzA4Miw3ICszMTUzLDggQEAg
dm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybU1hdHJp
eDR4M2Z2OgogICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KAotICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
MCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2Nh
dGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAg
ICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXpl
aVZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFt
VHlwZTo6VEdMYm9vbGVhbiwgMikudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAg
IHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVy
ZV91dGlsc19hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uY3BwCmluZGV4IGUyMjM0MWZlZmUyNjJiNjQ2
NzAxY2ZkNmIwZGViZTdiN2MzMGI5ZWYuLjk2MjUwYTAwYjM5NGZlYjk0Yjg4ZWMyMTE4NGM3Mzlh
ZWJhZWMzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uY3BwCkBAIC0x
NCw0MjcgKzE0LDQ1NCBAQAogCiBuYW1lc3BhY2UgYW5nbGUKIHsKLXZvaWQgV3JpdGVQYXJhbVR5
cGVUb1N0cmVhbShzdGQ6Om9zdHJlYW0gJm9zLCBQYXJhbVR5cGUgcGFyYW1UeXBlLCBjb25zdCBQ
YXJhbVZhbHVlICZwYXJhbVZhbHVlKQordm9pZCBXcml0ZVBhcmFtQ2FwdHVyZVJlcGxheShzdGQ6
Om9zdHJlYW0gJm9zLCBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwgY29uc3QgUGFyYW1DYXB0dXJl
ICZwYXJhbSkKIHsKLSAgICBzd2l0Y2ggKHBhcmFtVHlwZSkKKyAgICBzd2l0Y2ggKHBhcmFtLnR5
cGUpCiAgICAgewogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEFscGhhVGVzdEZ1bmM6Ci0gICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRBbHBoYVRlc3RGdW5j
PihvcywgcGFyYW1WYWx1ZS5BbHBoYVRlc3RGdW5jVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRBbHBoYVRlc3RGdW5jPihvcywgY2FsbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbS52YWx1ZS5BbHBoYVRlc3RGdW5jVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VEJ1ZmZlckJpbmRpbmc6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRCdWZmZXJCaW5kaW5nPihvcywgcGFyYW1WYWx1ZS5C
dWZmZXJCaW5kaW5nVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlRCdWZmZXJCaW5kaW5nPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5CdWZmZXJC
aW5kaW5nVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VEJ1ZmZlcklEOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBl
OjpUQnVmZmVySUQ+KG9zLCBwYXJhbVZhbHVlLkJ1ZmZlcklEVmFsKTsKKyAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRCdWZmZXJJRD4ob3MsIGNhbGwsIHBhcmFt
LnZhbHVlLkJ1ZmZlcklEVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBh
cmFtVHlwZTo6VEJ1ZmZlcklEQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUQnVmZmVySURDb25zdFBvaW50ZXI+KAotICAgICAgICAg
ICAgICAgIG9zLCBwYXJhbVZhbHVlLkJ1ZmZlcklEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRCdWZmZXJJRENvbnN0UG9pbnRl
cj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkJ1ZmZlcklEQ29uc3RQ
b2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VEJ1ZmZlcklEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBh
cmFtVHlwZTo6VEJ1ZmZlcklEUG9pbnRlcj4ob3MsIHBhcmFtVmFsdWUuQnVmZmVySURQb2ludGVy
VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRCdWZm
ZXJJRFBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUuQnVmZmVySURQb2ludGVy
VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEJ1ZmZl
clVzYWdlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
QnVmZmVyVXNhZ2U+KG9zLCBwYXJhbVZhbHVlLkJ1ZmZlclVzYWdlVmFsKTsKKyAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRCdWZmZXJVc2FnZT4ob3MsIGNhbGws
IHBhcmFtLnZhbHVlLkJ1ZmZlclVzYWdlVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VENsaWVudFZlcnRleEFycmF5VHlwZToKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VENsaWVudFZlcnRleEFycmF5VHlwZT4o
Ci0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuQ2xpZW50VmVydGV4QXJyYXlUeXBlVmFs
KTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRDbGllbnRW
ZXJ0ZXhBcnJheVR5cGU+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5D
bGllbnRWZXJ0ZXhBcnJheVR5cGVWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUQ3VsbEZhY2VNb2RlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
VG9TdHJlYW08UGFyYW1UeXBlOjpUQ3VsbEZhY2VNb2RlPihvcywgcGFyYW1WYWx1ZS5DdWxsRmFj
ZU1vZGVWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6
VEN1bGxGYWNlTW9kZT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkN1bGxGYWNlTW9kZVZhbCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlREcmF3RWxlbWVudHNU
eXBlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpURHJh
d0VsZW1lbnRzVHlwZT4ob3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlLkRyYXdFbGVtZW50c1R5cGVW
YWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VERyYXdF
bGVtZW50c1R5cGU+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkRyYXdFbGVtZW50c1R5
cGVWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpURmVu
Y2VOVklEOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
RmVuY2VOVklEPihvcywgcGFyYW1WYWx1ZS5GZW5jZU5WSURWYWwpOworICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEZlbmNlTlZJRD4ob3MsIGNhbGwsIHBhcmFt
LnZhbHVlLkZlbmNlTlZJRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlRGZW5jZU5WSURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGZW5jZU5WSURDb25zdFBvaW50ZXI+KAotICAgICAg
ICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkZlbmNlTlZJRENvbnN0UG9pbnRlclZhbCk7CisgICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpURmVuY2VOVklEQ29uc3RQ
b2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuRmVuY2VOVklE
Q29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFt
VHlwZTo6VEZlbmNlTlZJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0
cmVhbTxQYXJhbVR5cGU6OlRGZW5jZU5WSURQb2ludGVyPihvcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFs
dWUuRmVuY2VOVklEUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBs
YXk8UGFyYW1UeXBlOjpURmVuY2VOVklEUG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0u
dmFsdWUuRmVuY2VOVklEUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlVG9TdHJlYW08UGFyYW1UeXBlOjpURnJhbWVidWZmZXJJRD4ob3MsIHBhcmFtVmFsdWUuRnJh
bWVidWZmZXJJRFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1U
eXBlOjpURnJhbWVidWZmZXJJRD4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUuRnJhbWVidWZm
ZXJJRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRG
cmFtZWJ1ZmZlcklEQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpURnJhbWVidWZmZXJJRENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAg
ICAgICAgb3MsIHBhcmFtVmFsdWUuRnJhbWVidWZmZXJJRENvbnN0UG9pbnRlclZhbCk7CisgICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpURnJhbWVidWZmZXJJRENv
bnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkZyYW1l
YnVmZmVySURDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpURnJhbWVidWZmZXJJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEUG9pbnRlcj4oCi0gICAg
ICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuRnJhbWVidWZmZXJJRFBvaW50ZXJWYWwpOworICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEZyYW1lYnVmZmVySURQ
b2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuRnJhbWVidWZm
ZXJJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1U
eXBlOjpUR0xERUJVR1BST0M6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRHTERFQlVHUFJPQz4ob3MsIHBhcmFtVmFsdWUuR0xERUJVR1BST0NWYWwpOwor
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMREVCVUdQUk9D
PihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xERUJVR1BST0NWYWwpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xERUJVR1BST0NLSFI6Ci0gICAgICAgICAg
ICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTERFQlVHUFJPQ0tIUj4ob3Ms
IHBhcmFtVmFsdWUuR0xERUJVR1BST0NLSFJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMREVCVUdQUk9DS0hSPihvcywgY2FsbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW0udmFsdWUuR0xERUJVR1BST0NLSFJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUGFyYW1UeXBlOjpUR0xiaXRmaWVsZDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMYml0ZmllbGQ+KG9zLCBwYXJhbVZhbHVlLkdMYml0Zmll
bGRWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
Yml0ZmllbGQ+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTGJpdGZpZWxkVmFsKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMYm9vbGVhbjoKLSAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMYm9vbGVhbj4ob3MsIHBh
cmFtVmFsdWUuR0xib29sZWFuVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxh
eTxQYXJhbVR5cGU6OlRHTGJvb2xlYW4+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTGJvb2xlYW5W
YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xib29s
ZWFuQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFy
YW1UeXBlOjpUR0xib29sZWFuQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFy
YW1WYWx1ZS5HTGJvb2xlYW5Db25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMYm9vbGVhbkNvbnN0UG9pbnRlcj4oCisgICAgICAg
ICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMYm9vbGVhbkNvbnN0UG9pbnRlclZhbCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGJvb2xlYW5Q
b2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
R0xib29sZWFuUG9pbnRlcj4ob3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlLkdMYm9vbGVhblBvaW50
ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
Ym9vbGVhblBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdMYm9vbGVhblBv
aW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpU
R0xieXRlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
R0xieXRlPihvcywgcGFyYW1WYWx1ZS5HTGJ5dGVWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMYnl0ZT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdM
Ynl0ZVZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRH
TGJ5dGVDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRHTGJ5dGVDb25zdFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJh
bVZhbHVlLkdMYnl0ZUNvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFs
dWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xieXRlQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAg
ICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xieXRlQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMY2hhckNvbnN0UG9pbnRlcjoK
LSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMY2hhckNv
bnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0xjaGFyQ29uc3RQ
b2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6
OlRHTGNoYXJDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52
YWx1ZS5HTGNoYXJDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUGFyYW1UeXBlOjpUR0xjaGFyQ29uc3RQb2ludGVyUG9pbnRlcjoKLSAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMY2hhckNvbnN0UG9pbnRlclBv
aW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMY2hhckNvbnN0UG9pbnRl
clBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VEdMY2hhckNvbnN0UG9pbnRlclBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxs
LCBwYXJhbS52YWx1ZS5HTGNoYXJDb25zdFBvaW50ZXJQb2ludGVyVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMY2hhclBvaW50ZXI6Ci0gICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGNoYXJQb2ludGVyPihv
cywgcGFyYW1WYWx1ZS5HTGNoYXJQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGNoYXJQb2ludGVyPihvcywgY2FsbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bS52YWx1ZS5HTGNoYXJQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBhcmFtVHlwZTo6VEdMY2xhbXB4OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUR0xjbGFtcHg+KG9zLCBwYXJhbVZhbHVlLkdMY2xhbXB4VmFsKTsK
KyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGNsYW1weD4o
b3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMY2xhbXB4VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMZG91YmxlOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xkb3VibGU+KG9zLCBwYXJhbVZhbHVlLkdMZG91
YmxlVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRH
TGRvdWJsZT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMZG91YmxlVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMZG91YmxlQ29uc3RQb2ludGVyOgot
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xkb3VibGVD
b25zdFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMZG91YmxlQ29u
c3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRHTGRvdWJsZUNvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBh
cmFtLnZhbHVlLkdMZG91YmxlQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMZG91YmxlUG9pbnRlcjoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMZG91YmxlUG9pbnRlcj4ob3MsIHBh
cmFtVmFsdWUuR0xkb3VibGVQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGRvdWJsZVBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW0udmFsdWUuR0xkb3VibGVQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VEdMZWdsSW1hZ2VPRVM6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGVnbEltYWdlT0VTPihvcywgcGFyYW1WYWx1ZS5H
TGVnbEltYWdlT0VTVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlRHTGVnbEltYWdlT0VTPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5HTGVnbElt
YWdlT0VTVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VEdMZW51bToKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6
VEdMZW51bT4ob3MsIHBhcmFtVmFsdWUuR0xlbnVtVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGVudW0+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5H
TGVudW1WYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpU
R0xlbnVtQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUR0xlbnVtQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFy
YW1WYWx1ZS5HTGVudW1Db25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZW51bUNvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAg
ICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMZW51bUNvbnN0UG9pbnRlclZhbCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGVudW1Qb2ludGVyOgotICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xlbnVtUG9pbnRl
cj4ob3MsIHBhcmFtVmFsdWUuR0xlbnVtUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xlbnVtUG9pbnRlcj4ob3MsIGNhbGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW0udmFsdWUuR0xlbnVtUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBQYXJhbVR5cGU6OlRHTGZpeGVkOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
VG9TdHJlYW08UGFyYW1UeXBlOjpUR0xmaXhlZD4ob3MsIHBhcmFtVmFsdWUuR0xmaXhlZFZhbCk7
CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xmaXhlZD4o
b3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMZml4ZWRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xmaXhlZENvbnN0UG9pbnRlcjoKLSAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMZml4ZWRDb25zdFBvaW50ZXI+
KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMZml4ZWRDb25zdFBvaW50ZXJWYWwp
OworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZml4ZWRD
b25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTGZp
eGVkQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBh
cmFtVHlwZTo6VEdMZml4ZWRQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUR0xmaXhlZFBvaW50ZXI+KG9zLCBwYXJhbVZhbHVlLkdMZml4ZWRQ
b2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6
OlRHTGZpeGVkUG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdMZml4ZWRQb2lu
dGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdM
ZmxvYXQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRH
TGZsb2F0PihvcywgcGFyYW1WYWx1ZS5HTGZsb2F0VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGZsb2F0PihvcywgY2FsbCwgcGFyYW0udmFsdWUu
R0xmbG9hdFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6
OlRHTGZsb2F0Q29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJl
YW08UGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3Ms
IHBhcmFtVmFsdWUuR0xmbG9hdENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcj4oCisgICAgICAg
ICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMZmxvYXRDb25zdFBvaW50ZXJWYWwpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50
ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGZs
b2F0UG9pbnRlcj4ob3MsIHBhcmFtVmFsdWUuR0xmbG9hdFBvaW50ZXJWYWwpOworICAgICAgICAg
ICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZmxvYXRQb2ludGVyPihvcywg
Y2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW0udmFsdWUuR0xmbG9hdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xpbnQ6Ci0gICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGludD4ob3MsIHBhcmFtVmFsdWUuR0xp
bnRWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
aW50PihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xpbnQ2NFBvaW50ZXI6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGludDY0UG9pbnRlcj4ob3MsIHBh
cmFtVmFsdWUuR0xpbnQ2NFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VEdMaW50NjRQb2ludGVyPihvcywgY2FsbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0u
dmFsdWUuR0xpbnQ2NFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlcj4ob3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1WYWx1ZS5HTGludENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXI+KG9zLCBjYWxsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbS52YWx1ZS5HTGludENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGludFBvaW50ZXI6Ci0gICAgICAgICAg
ICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGludFBvaW50ZXI+KG9zLCBw
YXJhbVZhbHVlLkdMaW50UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVS
ZXBsYXk8UGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyPihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xp
bnRQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlw
ZTo6VEdMaW50cHRyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1U
eXBlOjpUR0xpbnRwdHI+KG9zLCBwYXJhbVZhbHVlLkdMaW50cHRyVmFsKTsKKyAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGludHB0cj4ob3MsIGNhbGwsIHBh
cmFtLnZhbHVlLkdMaW50cHRyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFBhcmFtVHlwZTo6VEdMaW50cHRyQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xpbnRwdHJDb25zdFBvaW50ZXI+KAotICAgICAg
ICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMaW50cHRyQ29uc3RQb2ludGVyVmFsKTsKKyAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGludHB0ckNvbnN0UG9p
bnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMaW50cHRyQ29u
c3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlw
ZTo6VEdMc2hvcnQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5
cGU6OlRHTHNob3J0PihvcywgcGFyYW1WYWx1ZS5HTHNob3J0VmFsKTsKKyAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHNob3J0PihvcywgY2FsbCwgcGFyYW0u
dmFsdWUuR0xzaG9ydFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJh
bVR5cGU6OlRHTHNob3J0Q29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
VG9TdHJlYW08UGFyYW1UeXBlOjpUR0xzaG9ydENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAg
ICAgb3MsIHBhcmFtVmFsdWUuR0xzaG9ydENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xzaG9ydENvbnN0UG9pbnRlcj4oCisg
ICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMc2hvcnRDb25zdFBvaW50ZXJW
YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xzaXpl
aToKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMc2l6
ZWk+KG9zLCBwYXJhbVZhbHVlLkdMc2l6ZWlWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMc2l6ZWk+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHNp
emVpVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdM
c2l6ZWlDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRHTHNpemVpQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFy
YW1WYWx1ZS5HTHNpemVpQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHNpemVpQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAg
ICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xzaXplaUNvbnN0UG9pbnRlclZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHNpemVpUG9pbnRlcjoK
LSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMc2l6ZWlQ
b2ludGVyPihvcywgcGFyYW1WYWx1ZS5HTHNpemVpUG9pbnRlclZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xzaXplaVBvaW50ZXI+KG9zLCBjYWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbS52YWx1ZS5HTHNpemVpUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHNpemVpcHRyOgotICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xzaXplaXB0cj4ob3MsIHBhcmFtVmFs
dWUuR0xzaXplaXB0clZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUR0xzaXplaXB0cj4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMc2l6ZWlwdHJWYWwp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xzaXplaXB0
ckNvbnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFt
VHlwZTo6VEdMc2l6ZWlwdHJDb25zdFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJh
bVZhbHVlLkdMc2l6ZWlwdHJDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMc2l6ZWlwdHJDb25zdFBvaW50ZXI+KAorICAgICAg
ICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHNpemVpcHRyQ29uc3RQb2ludGVyVmFs
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMc3luYzoK
LSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMc3luYz4o
b3MsIHBhcmFtVmFsdWUuR0xzeW5jVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJl
cGxheTxQYXJhbVR5cGU6OlRHTHN5bmM+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHN5bmNWYWwp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x1Ynl0ZToK
LSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMdWJ5dGU+
KG9zLCBwYXJhbVZhbHVlLkdMdWJ5dGVWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VEdMdWJ5dGU+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHVieXRl
VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMdWJ5
dGVDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlRHTHVieXRlQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1W
YWx1ZS5HTHVieXRlQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHVieXRlQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAg
ICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x1Ynl0ZUNvbnN0UG9pbnRlclZhbCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHVieXRlUG9pbnRlcjoKLSAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMdWJ5dGVQb2lu
dGVyPihvcywgcGFyYW1WYWx1ZS5HTHVieXRlUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x1Ynl0ZVBvaW50ZXI+KG9zLCBjYWxsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbS52YWx1ZS5HTHVieXRlUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHVpbnQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTHVpbnQ+KG9zLCBwYXJhbVZhbHVlLkdMdWludFZh
bCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x1aW50
PihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x1aW50VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMdWludDY0OgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x1aW50NjQ+KG9zLCBwYXJhbVZhbHVlLkdMdWlu
dDY0VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRH
THVpbnQ2ND4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMdWludDY0VmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMdWludDY0Q29uc3RQb2ludGVyOgot
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x1aW50NjRD
b25zdFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMdWludDY0Q29u
c3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRHTHVpbnQ2NENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBh
cmFtLnZhbHVlLkdMdWludDY0Q29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMdWludDY0UG9pbnRlcjoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMdWludDY0UG9pbnRlcj4ob3MsIHBh
cmFtVmFsdWUuR0x1aW50NjRQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHVpbnQ2NFBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW0udmFsdWUuR0x1aW50NjRQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRl
UGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlcj4oCi0gICAg
ICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0x1aW50Q29uc3RQb2ludGVyVmFsKTsKKyAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50
ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHVpbnRDb25zdFBv
aW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpU
R0x1aW50UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFt
VHlwZTo6VEdMdWludFBvaW50ZXI+KG9zLCBwYXJhbVZhbHVlLkdMdWludFBvaW50ZXJWYWwpOwor
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMdWludFBvaW50
ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdMdWludFBvaW50ZXJWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x1c2hvcnQ6Ci0gICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTHVzaG9ydD4ob3MsIHBh
cmFtVmFsdWUuR0x1c2hvcnRWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5
PFBhcmFtVHlwZTo6VEdMdXNob3J0PihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x1c2hvcnRWYWwp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x1c2hvcnRD
b25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5
cGU6OlRHTHVzaG9ydENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFs
dWUuR0x1c2hvcnRDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VEdMdXNob3J0Q29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAg
ICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x1c2hvcnRDb25zdFBvaW50ZXJWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x1c2hvcnRQb2ludGVyOgot
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x1c2hvcnRQ
b2ludGVyPihvcywgcGFyYW1WYWx1ZS5HTHVzaG9ydFBvaW50ZXJWYWwpOworICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMdXNob3J0UG9pbnRlcj4ob3MsIGNh
bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJhbS52YWx1ZS5HTHVzaG9ydFBvaW50ZXJWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x2b2lkQ29uc3RQb2ludGVyOgotICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x2b2lkQ29uc3RQ
b2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5HTHZvaWRDb25zdFBvaW50
ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
dm9pZENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVl
LkdMdm9pZENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRHTHZvaWRDb25zdFBvaW50ZXJQb2ludGVyOgotICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x2b2lkQ29uc3RQb2ludGVyUG9pbnRl
cj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0x2b2lkQ29uc3RQb2ludGVyUG9p
bnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
R0x2b2lkQ29uc3RQb2ludGVyUG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBh
cmFtLnZhbHVlLkdMdm9pZENvbnN0UG9pbnRlclBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR3JhcGhpY3NSZXNldFN0YXR1czoKLSAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdyYXBoaWNzUmVzZXRT
dGF0dXM+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdyYXBoaWNzUmVzZXRTdGF0
dXNWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdy
YXBoaWNzUmVzZXRTdGF0dXM+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1
ZS5HcmFwaGljc1Jlc2V0U3RhdHVzVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBhcmFtVHlwZTo6VEhhbmRsZVR5cGU6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRIYW5kbGVUeXBlPihvcywgcGFyYW1WYWx1ZS5IYW5kbGVUeXBl
VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRIYW5k
bGVUeXBlPihvcywgY2FsbCwgcGFyYW0udmFsdWUuSGFuZGxlVHlwZVZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRMaWdodFBhcmFtZXRlcjoKLSAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VExpZ2h0UGFyYW1ldGVy
PihvcywgcGFyYW1WYWx1ZS5MaWdodFBhcmFtZXRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTGlnaHRQYXJhbWV0ZXI+KG9zLCBjYWxsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJhbS52YWx1ZS5MaWdodFBhcmFtZXRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlRMb2dpY2FsT3BlcmF0aW9uOgotICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUTG9naWNhbE9wZXJhdGlvbj4ob3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbVZhbHVlLkxvZ2ljYWxPcGVyYXRpb25WYWwpOworICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VExvZ2ljYWxPcGVyYXRpb24+KG9zLCBjYWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtLnZhbHVlLkxvZ2ljYWxPcGVyYXRpb25WYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUTWF0ZXJpYWxQYXJhbWV0ZXI6Ci0gICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRNYXRlcmlhbFBhcmFt
ZXRlcj4ob3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5NYXRlcmlhbFBhcmFtZXRlclZhbCk7Cisg
ICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTWF0ZXJpYWxQYXJh
bWV0ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5NYXRlcmlhbFBhcmFtZXRlclZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRNYXRyaXhU
eXBlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUTWF0
cml4VHlwZT4ob3MsIHBhcmFtVmFsdWUuTWF0cml4VHlwZVZhbCk7CisgICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTWF0cml4VHlwZT4ob3MsIGNhbGwsIHBhcmFt
LnZhbHVlLk1hdHJpeFR5cGVWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SUQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRD4ob3MsIHBhcmFtVmFsdWUuTWVtb3J5
T2JqZWN0SURWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VE1lbW9yeU9iamVjdElEPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUuTWVtb3J5T2Jq
ZWN0SURWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpU
TWVtb3J5T2JqZWN0SURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRENvbnN0UG9pbnRlcj4oCi0gICAgICAg
ICAgICAgICAgb3MsIHBhcmFtVmFsdWUuTWVtb3J5T2JqZWN0SURDb25zdFBvaW50ZXJWYWwpOwor
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VE1lbW9yeU9iamVj
dElEQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUu
TWVtb3J5T2JqZWN0SURDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgUGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SURQb2ludGVyOgotICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SURQb2ludGVy
PigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5NZW1vcnlPYmplY3RJRFBvaW50ZXJW
YWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUGF0aElE
OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUGF0aElE
PihvcywgcGFyYW1WYWx1ZS5QYXRoSURWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEUG9pbnRlcj4oCisgICAgICAgICAgICAg
ICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLk1lbW9yeU9iamVjdElEUG9pbnRlclZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQb2ludFBhcmFtZXRlcjoK
LSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFBvaW50UGFy
YW1ldGVyPihvcywgcGFyYW1WYWx1ZS5Qb2ludFBhcmFtZXRlclZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUUG9pbnRQYXJhbWV0ZXI+KG9zLCBjYWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbS52YWx1ZS5Qb2ludFBhcmFtZXRlclZhbCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQcmltaXRpdmVNb2RlOgotICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUHJpbWl0aXZlTW9kZT4ob3MsIHBh
cmFtVmFsdWUuUHJpbWl0aXZlTW9kZVZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVS
ZXBsYXk8UGFyYW1UeXBlOjpUUHJpbWl0aXZlTW9kZT4ob3MsIGNhbGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFs
dWUuUHJpbWl0aXZlTW9kZVZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFByb2dyYW1QaXBlbGluZUlEPihvcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbVZhbHVlLlByb2dyYW1QaXBlbGluZUlEVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRD4ob3MsIGNhbGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtLnZhbHVlLlByb2dyYW1QaXBlbGluZUlEVmFsKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFByb2dyYW1QaXBlbGluZUlEQ29uc3RQb2ludGVy
OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUHJvZ3Jh
bVBpcGVsaW5lSURDb25zdFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVl
LlByb2dyYW1QaXBlbGluZUlEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRENvbnN0UG9pbnRlcj4o
CisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlByb2dyYW1QaXBlbGluZUlE
Q29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFt
VHlwZTo6VFByb2dyYW1QaXBlbGluZUlEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1W
YWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFByb2dyYW1QaXBlbGluZUlEUG9pbnRlcj4oCi0gICAg
ICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuUHJvZ3JhbVBpcGVsaW5lSURQb2ludGVyVmFsKTsK
KyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlw
ZWxpbmVJRFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5Q
cm9ncmFtUGlwZWxpbmVJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUGFyYW1UeXBlOjpUUHJvdm9raW5nVmVydGV4Q29udmVudGlvbjoKLSAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFByb3Zva2luZ1ZlcnRleENvbnZl
bnRpb24+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLlByb3Zva2luZ1ZlcnRleENv
bnZlbnRpb25WYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxs
LCBwYXJhbS52YWx1ZS5Qcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFF1ZXJ5SUQ6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRRdWVyeUlEPihvcywgcGFyYW1WYWx1
ZS5RdWVyeUlEVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRRdWVyeUlEPihvcywgY2FsbCwgcGFyYW0udmFsdWUuUXVlcnlJRFZhbCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRRdWVyeUlEQ29uc3RQb2ludGVy
OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUXVlcnlJ
RENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuUXVlcnlJRENv
bnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1U
eXBlOjpUUXVlcnlJRENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBh
cmFtLnZhbHVlLlF1ZXJ5SURDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUXVlcnlJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRRdWVyeUlEUG9pbnRlcj4ob3MsIHBhcmFt
VmFsdWUuUXVlcnlJRFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVw
bGF5PFBhcmFtVHlwZTo6VFF1ZXJ5SURQb2ludGVyPihvcywgY2FsbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFs
dWUuUXVlcnlJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFyYW1UeXBlOjpUUXVlcnlUeXBlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJl
YW08UGFyYW1UeXBlOjpUUXVlcnlUeXBlPihvcywgcGFyYW1WYWx1ZS5RdWVyeVR5cGVWYWwpOwor
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFF1ZXJ5VHlwZT4o
b3MsIGNhbGwsIHBhcmFtLnZhbHVlLlF1ZXJ5VHlwZVZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRSZW5kZXJidWZmZXJJRDoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklEPihvcywgcGFy
YW1WYWx1ZS5SZW5kZXJidWZmZXJJRFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVS
ZXBsYXk8UGFyYW1UeXBlOjpUUmVuZGVyYnVmZmVySUQ+KG9zLCBjYWxsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52
YWx1ZS5SZW5kZXJidWZmZXJJRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRSZW5kZXJidWZmZXJJRENvbnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklEQ29uc3RQb2lu
dGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5SZW5kZXJidWZmZXJJRENvbnN0
UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUUmVuZGVyYnVmZmVySURDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxs
LCBwYXJhbS52YWx1ZS5SZW5kZXJidWZmZXJJRENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRSZW5kZXJidWZmZXJJRFBvaW50ZXI6
Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRSZW5kZXJi
dWZmZXJJRFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLlJlbmRlcmJ1
ZmZlcklEUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUUmVuZGVyYnVmZmVySURQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2Fs
bCwgcGFyYW0udmFsdWUuUmVuZGVyYnVmZmVySURQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFNhbXBsZXJJRDoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNhbXBsZXJJRD4ob3MsIHBhcmFtVmFs
dWUuU2FtcGxlcklEVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlRTYW1wbGVySUQ+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5TYW1wbGVySURWYWwpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUU2FtcGxlcklEQ29u
c3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBl
OjpUU2FtcGxlcklEQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1
ZS5TYW1wbGVySURDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VFNhbXBsZXJJRENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAg
ICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlNhbXBsZXJJRENvbnN0UG9pbnRlclZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRTYW1wbGVySURQb2ludGVy
OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUU2FtcGxl
cklEUG9pbnRlcj4ob3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlLlNhbXBsZXJJRFBvaW50ZXJWYWwp
OworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNhbXBsZXJJ
RFBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLlNhbXBsZXJJRFBvaW50ZXJW
YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUU2VtYXBo
b3JlSUQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRT
ZW1hcGhvcmVJRD4ob3MsIHBhcmFtVmFsdWUuU2VtYXBob3JlSURWYWwpOworICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNlbWFwaG9yZUlEPihvcywgY2FsbCwg
cGFyYW0udmFsdWUuU2VtYXBob3JlSURWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUGFyYW1UeXBlOjpUU2VtYXBob3JlSURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTZW1hcGhvcmVJRENvbnN0UG9pbnRl
cj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuU2VtYXBob3JlSURDb25zdFBvaW50
ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNl
bWFwaG9yZUlEQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0u
dmFsdWUuU2VtYXBob3JlSURDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUU2VtYXBob3JlSURQb2ludGVyOgotICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUU2VtYXBob3JlSURQb2ludGVyPigK
LSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5TZW1hcGhvcmVJRFBvaW50ZXJWYWwpOwor
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNlbWFwaG9yZUlE
UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlNlbWFwaG9y
ZUlEUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVh
bTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQ+KG9zLCBwYXJhbVZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
U2hhZGVyUHJvZ3JhbUlEPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSURDb25zdFBvaW50ZXI+KAotICAgICAg
ICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLlNoYWRlclByb2dyYW1JRENvbnN0UG9pbnRlclZhbCk7
CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2hhZGVyUHJv
Z3JhbUlEQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFs
dWUuU2hhZGVyUHJvZ3JhbUlEQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRFBvaW50ZXI6Ci0gICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSURQ
b2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5TaGFkZXJQcm9ncmFtSURQ
b2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6
OlRTaGFkZXJQcm9ncmFtSURQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFy
YW0udmFsdWUuU2hhZGVyUHJvZ3JhbUlEUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRTaGFkZXJUeXBlOgotICAgICAgICAgICAgV3JpdGVQ
YXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUU2hhZGVyVHlwZT4ob3MsIHBhcmFtVmFsdWUu
U2hhZGVyVHlwZVZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1U
eXBlOjpUU2hhZGVyVHlwZT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLlNoYWRlclR5cGVWYWwpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUU2hhZGluZ01vZGVs
OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUU2hhZGlu
Z01vZGVsPihvcywgcGFyYW1WYWx1ZS5TaGFkaW5nTW9kZWxWYWwpOworICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNoYWRpbmdNb2RlbD4ob3MsIGNhbGwsIHBh
cmFtLnZhbHVlLlNoYWRpbmdNb2RlbFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRUZXh0dXJlRW52UGFyYW1ldGVyOgotICAgICAgICAgICAgV3JpdGVQ
YXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZUVudlBhcmFtZXRlcj4oCi0gICAg
ICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuVGV4dHVyZUVudlBhcmFtZXRlclZhbCk7CisgICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVGV4dHVyZUVudlBhcmFt
ZXRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlRleHR1cmVFbnZQ
YXJhbWV0ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUVGV4dHVyZUVudlRhcmdldDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VFRleHR1cmVFbnZUYXJnZXQ+KG9zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5U
ZXh0dXJlRW52VGFyZ2V0VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRUZXh0dXJlRW52VGFyZ2V0PihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1
ZS5UZXh0dXJlRW52VGFyZ2V0VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFBhcmFtVHlwZTo6VFRleHR1cmVJRDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3Ry
ZWFtPFBhcmFtVHlwZTo6VFRleHR1cmVJRD4ob3MsIHBhcmFtVmFsdWUuVGV4dHVyZUlEVmFsKTsK
KyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRUZXh0dXJlSUQ+
KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5UZXh0dXJlSURWYWwpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVGV4dHVyZUlEQ29uc3RQb2ludGVyOgotICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZUlEQ29uc3RQ
b2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5UZXh0dXJlSURDb25zdFBv
aW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6
VFRleHR1cmVJRENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFt
LnZhbHVlLlRleHR1cmVJRENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlRUZXh0dXJlSURQb2ludGVyOgotICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZUlEUG9pbnRlcj4ob3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbVZhbHVlLlRleHR1cmVJRFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRleHR1cmVJRFBvaW50ZXI+KG9zLCBjYWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtLnZhbHVlLlRleHR1cmVJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVGV4dHVyZVRhcmdldDoKLSAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRleHR1cmVUYXJnZXQ+KG9z
LCBwYXJhbVZhbHVlLlRleHR1cmVUYXJnZXRWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRleHR1cmVUYXJnZXQ+KG9zLCBjYWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
LnZhbHVlLlRleHR1cmVUYXJnZXRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUVGV4dHVyZVR5cGU6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRUZXh0dXJlVHlwZT4ob3MsIHBhcmFtVmFsdWUuVGV4dHVyZVR5
cGVWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRl
eHR1cmVUeXBlPihvcywgY2FsbCwgcGFyYW0udmFsdWUuVGV4dHVyZVR5cGVWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJ
RDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRyYW5z
Zm9ybUZlZWRiYWNrSUQ+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLlRyYW5zZm9y
bUZlZWRiYWNrSURWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFt
VHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSUQ+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBw
YXJhbS52YWx1ZS5UcmFuc2Zvcm1GZWVkYmFja0lEVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURDb25zdFBvaW50ZXI6
Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRUcmFuc2Zv
cm1GZWVkYmFja0lEQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1
ZS5UcmFuc2Zvcm1GZWVkYmFja0lEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRl
UGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lEQ29uc3RQb2lu
dGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuVHJhbnNmb3JtRmVl
ZGJhY2tJRENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lEUG9pbnRlcjoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURQb2lu
dGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5UcmFuc2Zvcm1GZWVkYmFja0lE
UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxs
LCBwYXJhbS52YWx1ZS5UcmFuc2Zvcm1GZWVkYmFja0lEUG9pbnRlclZhbCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb246CisgICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
PihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEOgot
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVmVydGV4QXJy
YXlJRD4ob3MsIHBhcmFtVmFsdWUuVmVydGV4QXJyYXlJRFZhbCk7CisgICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRD4ob3MsIGNhbGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW0udmFsdWUuVmVydGV4QXJyYXlJRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEQ29uc3RQb2ludGVyOgotICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRENv
bnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuVmVydGV4QXJyYXlJ
RENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUVmVydGV4QXJyYXlJRENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3Ms
IGNhbGwsIHBhcmFtLnZhbHVlLlZlcnRleEFycmF5SURDb25zdFBvaW50ZXJWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRFBvaW50
ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRWZXJ0
ZXhBcnJheUlEUG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuVmVydGV4
QXJyYXlJRFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBh
cmFtVHlwZTo6VFZlcnRleEFycmF5SURQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2Fs
bCwgcGFyYW0udmFsdWUuVmVydGV4QXJyYXlJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVmVydGV4QXR0cmliVHlwZToKLSAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFZlcnRleEF0dHJpYlR5cGU+
KG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5WZXJ0ZXhBdHRyaWJUeXBlVmFsKTsKKyAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRWZXJ0ZXhBdHRyaWJUeXBlPihv
cywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5WZXJ0ZXhBdHRyaWJUeXBlVmFsKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXI6
Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlR2b2lkQ29u
c3RQb2ludGVyPihvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUudm9pZENvbnN0UG9pbnRlclZhbCk7
CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUdm9pZENvbnN0
UG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUudm9pZENvbnN0UG9pbnRlclZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlR2b2lkQ29u
c3RQb2ludGVyUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBh
cmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXJQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywg
cGFyYW1WYWx1ZS52b2lkQ29uc3RQb2ludGVyUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlclBvaW50ZXI+KAor
ICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS52b2lkQ29uc3RQb2ludGVyUG9p
bnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlR2
b2lkUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VHZvaWRQb2ludGVyPihvcywgcGFyYW1WYWx1ZS52b2lkUG9pbnRlclZhbCk7CisgICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUdm9pZFBvaW50ZXI+KG9zLCBj
YWxsLCBwYXJhbS52YWx1ZS52b2lkUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlR2b2lkUG9pbnRlclBvaW50ZXI6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlR2b2lkUG9pbnRlclBvaW50ZXI+KAot
ICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLnZvaWRQb2ludGVyUG9pbnRlclZhbCk7Cisg
ICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUdm9pZFBvaW50ZXJQ
b2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUudm9pZFBvaW50
ZXJQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgb3MgPDwgInVua25vd24iOwpAQCAtNjAwLDggKzYyNyw2IEBAIGNvbnN0IGNoYXIg
KlBhcmFtVHlwZVRvU3RyaW5nKFBhcmFtVHlwZSBwYXJhbVR5cGUpCiAgICAgICAgICAgICByZXR1
cm4gImNvbnN0IEdMdWludCAqIjsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRNZW1vcnlPYmpl
Y3RJRFBvaW50ZXI6CiAgICAgICAgICAgICByZXR1cm4gIkdMdWludCAqIjsKLSAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRQYXRoSUQ6Ci0gICAgICAgICAgICByZXR1cm4gIkdMdWludCI7CiAgICAg
ICAgIGNhc2UgUGFyYW1UeXBlOjpUUG9pbnRQYXJhbWV0ZXI6CiAgICAgICAgICAgICByZXR1cm4g
IkdMZW51bSI7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUHJpbWl0aXZlTW9kZToKQEAgLTY3
MCw2ICs2OTUsOCBAQCBjb25zdCBjaGFyICpQYXJhbVR5cGVUb1N0cmluZyhQYXJhbVR5cGUgcGFy
YW1UeXBlKQogICAgICAgICAgICAgcmV0dXJuICJjb25zdCBHTHVpbnQgKiI7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50ZXI6CiAgICAgICAgICAgICBy
ZXR1cm4gIkdMdWludCAqIjsKKyAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b246CisgICAgICAgICAgICByZXR1cm4gIkdMZW51bSI7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUVmVydGV4QXJyYXlJRDoKICAgICAgICAgICAgIHJldHVybiAiR0x1aW50IjsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEQ29uc3RQb2ludGVyOgpAQCAtNzIwLDggKzc0
Nyw2IEBAIFJlc291cmNlSURUeXBlIEdldFJlc291cmNlSURUeXBlRnJvbVBhcmFtVHlwZShQYXJh
bVR5cGUgcGFyYW1UeXBlKQogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlSURUeXBlOjpNZW1v
cnlPYmplY3Q7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SURQb2ludGVy
OgogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlSURUeXBlOjpNZW1vcnlPYmplY3Q7Ci0gICAg
ICAgIGNhc2UgUGFyYW1UeXBlOjpUUGF0aElEOgotICAgICAgICAgICAgcmV0dXJuIFJlc291cmNl
SURUeXBlOjpQYXRoOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFByb2dyYW1QaXBlbGluZUlE
OgogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlSURUeXBlOjpQcm9ncmFtUGlwZWxpbmU7CiAg
ICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUHJvZ3JhbVBpcGVsaW5lSURDb25zdFBvaW50ZXI6CkBA
IC03OTMsOCArODE4LDYgQEAgY29uc3QgY2hhciAqR2V0UmVzb3VyY2VJRFR5cGVOYW1lKFJlc291
cmNlSURUeXBlIHJlc291cmNlSURUeXBlKQogICAgICAgICAgICAgcmV0dXJuICJGcmFtZWJ1ZmZl
ciI7CiAgICAgICAgIGNhc2UgUmVzb3VyY2VJRFR5cGU6Ok1lbW9yeU9iamVjdDoKICAgICAgICAg
ICAgIHJldHVybiAiTWVtb3J5T2JqZWN0IjsKLSAgICAgICAgY2FzZSBSZXNvdXJjZUlEVHlwZTo6
UGF0aDoKLSAgICAgICAgICAgIHJldHVybiAiUGF0aCI7CiAgICAgICAgIGNhc2UgUmVzb3VyY2VJ
RFR5cGU6OlByb2dyYW1QaXBlbGluZToKICAgICAgICAgICAgIHJldHVybiAiUHJvZ3JhbVBpcGVs
aW5lIjsKICAgICAgICAgY2FzZSBSZXNvdXJjZUlEVHlwZTo6UXVlcnk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV91dGlsc19h
dXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZnJhbWVfY2Fw
dHVyZV91dGlsc19hdXRvZ2VuLmgKaW5kZXggNjc5ODk1MmZlMzY3YTI0MTNlMWFlNjVmMThhODll
MTU1OTA1MWM5MS4uNzQxMGUwYmQyNjUwYTlkYjM3NzY4ZTk3ZjNjYmRhZjk2Njk3MDFjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2ZyYW1lX2NhcHR1
cmVfdXRpbHNfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uaApAQCAtOTQsNyArOTQsNiBAQCBlbnVt
IGNsYXNzIFBhcmFtVHlwZQogICAgIFRNZW1vcnlPYmplY3RJRCwKICAgICBUTWVtb3J5T2JqZWN0
SURDb25zdFBvaW50ZXIsCiAgICAgVE1lbW9yeU9iamVjdElEUG9pbnRlciwKLSAgICBUUGF0aElE
LAogICAgIFRQb2ludFBhcmFtZXRlciwKICAgICBUUHJpbWl0aXZlTW9kZSwKICAgICBUUHJvZ3Jh
bVBpcGVsaW5lSUQsCkBAIC0xMjksNiArMTI4LDcgQEAgZW51bSBjbGFzcyBQYXJhbVR5cGUKICAg
ICBUVHJhbnNmb3JtRmVlZGJhY2tJRCwKICAgICBUVHJhbnNmb3JtRmVlZGJhY2tJRENvbnN0UG9p
bnRlciwKICAgICBUVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50ZXIsCisgICAgVFVuaWZvcm1Mb2Nh
dGlvbiwKICAgICBUVmVydGV4QXJyYXlJRCwKICAgICBUVmVydGV4QXJyYXlJRENvbnN0UG9pbnRl
ciwKICAgICBUVmVydGV4QXJyYXlJRFBvaW50ZXIsCkBAIC0yMjAsNyArMjIwLDYgQEAgdW5pb24g
UGFyYW1WYWx1ZQogICAgIGdsOjpNZW1vcnlPYmplY3RJRCBNZW1vcnlPYmplY3RJRFZhbDsKICAg
ICBjb25zdCBnbDo6TWVtb3J5T2JqZWN0SUQgKk1lbW9yeU9iamVjdElEQ29uc3RQb2ludGVyVmFs
OwogICAgIGdsOjpNZW1vcnlPYmplY3RJRCAqTWVtb3J5T2JqZWN0SURQb2ludGVyVmFsOwotICAg
IGdsOjpQYXRoSUQgUGF0aElEVmFsOwogICAgIGdsOjpQb2ludFBhcmFtZXRlciBQb2ludFBhcmFt
ZXRlclZhbDsKICAgICBnbDo6UHJpbWl0aXZlTW9kZSBQcmltaXRpdmVNb2RlVmFsOwogICAgIGds
OjpQcm9ncmFtUGlwZWxpbmVJRCBQcm9ncmFtUGlwZWxpbmVJRFZhbDsKQEAgLTI1NSw2ICsyNTQs
NyBAQCB1bmlvbiBQYXJhbVZhbHVlCiAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrSUQgVHJhbnNm
b3JtRmVlZGJhY2tJRFZhbDsKICAgICBjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tJRCAqVHJh
bnNmb3JtRmVlZGJhY2tJRENvbnN0UG9pbnRlclZhbDsKICAgICBnbDo6VHJhbnNmb3JtRmVlZGJh
Y2tJRCAqVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50ZXJWYWw7CisgICAgZ2w6OlVuaWZvcm1Mb2Nh
dGlvbiBVbmlmb3JtTG9jYXRpb25WYWw7CiAgICAgZ2w6OlZlcnRleEFycmF5SUQgVmVydGV4QXJy
YXlJRFZhbDsKICAgICBjb25zdCBnbDo6VmVydGV4QXJyYXlJRCAqVmVydGV4QXJyYXlJRENvbnN0
UG9pbnRlclZhbDsKICAgICBnbDo6VmVydGV4QXJyYXlJRCAqVmVydGV4QXJyYXlJRFBvaW50ZXJW
YWw7CkBAIC03NzAsMTIgKzc3MCw2IEBAIGlubGluZSBnbDo6TWVtb3J5T2JqZWN0SUQgKkdldFBh
cmFtVmFsPFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEUG9pbnRlciwgZ2w6Ok1lCiAgICAgcmV0
dXJuIHZhbHVlLk1lbW9yeU9iamVjdElEUG9pbnRlclZhbDsKIH0KIAotdGVtcGxhdGUgPD4KLWlu
bGluZSBnbDo6UGF0aElEIEdldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFBhdGhJRCwgZ2w6OlBhdGhJ
RD4oY29uc3QgUGFyYW1WYWx1ZSAmdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlLlBhdGhJRFZh
bDsKLX0KLQogdGVtcGxhdGUgPD4KIGlubGluZSBnbDo6UG9pbnRQYXJhbWV0ZXIgR2V0UGFyYW1W
YWw8UGFyYW1UeXBlOjpUUG9pbnRQYXJhbWV0ZXIsIGdsOjpQb2ludFBhcmFtZXRlcj4oCiAgICAg
Y29uc3QgUGFyYW1WYWx1ZSAmdmFsdWUpCkBAIC0xMDExLDYgKzEwMDUsMTMgQEAgaW5saW5lIGds
OjpUcmFuc2Zvcm1GZWVkYmFja0lEICpHZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRUcmFuc2Zvcm1G
ZWVkYmFja0lEUG9pbnQKICAgICByZXR1cm4gdmFsdWUuVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50
ZXJWYWw7CiB9CiAKK3RlbXBsYXRlIDw+CitpbmxpbmUgZ2w6OlVuaWZvcm1Mb2NhdGlvbiBHZXRQ
YXJhbVZhbDxQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGdsOjpVbmlmb3JtTG9jYXRpb24+
KAorICAgIGNvbnN0IFBhcmFtVmFsdWUgJnZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZS5Vbmlm
b3JtTG9jYXRpb25WYWw7Cit9CisKIHRlbXBsYXRlIDw+CiBpbmxpbmUgZ2w6OlZlcnRleEFycmF5
SUQgR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRCwgZ2w6OlZlcnRleEFycmF5
SUQ+KAogICAgIGNvbnN0IFBhcmFtVmFsdWUgJnZhbHVlKQpAQCAtMTIzMCw4ICsxMjMxLDYgQEAg
VCBBY2Nlc3NQYXJhbVZhbHVlKFBhcmFtVHlwZSBwYXJhbVR5cGUsIGNvbnN0IFBhcmFtVmFsdWUg
JnZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIEdldFBhcmFtVmFsPFBhcmFtVHlwZTo6VE1lbW9y
eU9iamVjdElEQ29uc3RQb2ludGVyLCBUPih2YWx1ZSk7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUTWVtb3J5T2JqZWN0SURQb2ludGVyOgogICAgICAgICAgICAgcmV0dXJuIEdldFBhcmFtVmFs
PFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEUG9pbnRlciwgVD4odmFsdWUpOwotICAgICAgICBj
YXNlIFBhcmFtVHlwZTo6VFBhdGhJRDoKLSAgICAgICAgICAgIHJldHVybiBHZXRQYXJhbVZhbDxQ
YXJhbVR5cGU6OlRQYXRoSUQsIFQ+KHZhbHVlKTsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQ
b2ludFBhcmFtZXRlcjoKICAgICAgICAgICAgIHJldHVybiBHZXRQYXJhbVZhbDxQYXJhbVR5cGU6
OlRQb2ludFBhcmFtZXRlciwgVD4odmFsdWUpOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFBy
aW1pdGl2ZU1vZGU6CkBAIC0xMzAwLDYgKzEyOTksOCBAQCBUIEFjY2Vzc1BhcmFtVmFsdWUoUGFy
YW1UeXBlIHBhcmFtVHlwZSwgY29uc3QgUGFyYW1WYWx1ZSAmdmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRENvbnN0UG9p
bnRlciwgVD4odmFsdWUpOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRi
YWNrSURQb2ludGVyOgogICAgICAgICAgICAgcmV0dXJuIEdldFBhcmFtVmFsPFBhcmFtVHlwZTo6
VFRyYW5zZm9ybUZlZWRiYWNrSURQb2ludGVyLCBUPih2YWx1ZSk7CisgICAgICAgIGNhc2UgUGFy
YW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uOgorICAgICAgICAgICAgcmV0dXJuIEdldFBhcmFtVmFs
PFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgVD4odmFsdWUpOwogICAgICAgICBjYXNlIFBh
cmFtVHlwZTo6VFZlcnRleEFycmF5SUQ6CiAgICAgICAgICAgICByZXR1cm4gR2V0UGFyYW1WYWw8
UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRCwgVD4odmFsdWUpOwogICAgICAgICBjYXNlIFBhcmFt
VHlwZTo6VFZlcnRleEFycmF5SURDb25zdFBvaW50ZXI6CkBAIC0xODEwLDEyICsxODExLDYgQEAg
aW5saW5lIHZvaWQgU2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SURQb2ludGVy
PihnbDo6TWVtb3J5T2JqZWN0SUQgKnYKICAgICB2YWx1ZU91dC0+TWVtb3J5T2JqZWN0SURQb2lu
dGVyVmFsID0gdmFsdWVJbjsKIH0KIAotdGVtcGxhdGUgPD4KLWlubGluZSB2b2lkIFNldFBhcmFt
VmFsPFBhcmFtVHlwZTo6VFBhdGhJRD4oZ2w6OlBhdGhJRCB2YWx1ZUluLCBQYXJhbVZhbHVlICp2
YWx1ZU91dCkKLXsKLSAgICB2YWx1ZU91dC0+UGF0aElEVmFsID0gdmFsdWVJbjsKLX0KLQogdGVt
cGxhdGUgPD4KIGlubGluZSB2b2lkIFNldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFBvaW50UGFyYW1l
dGVyPihnbDo6UG9pbnRQYXJhbWV0ZXIgdmFsdWVJbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVZhbHVlICp2YWx1ZU91dCkKQEAgLTIw
NDQsNiArMjAzOSwxMyBAQCBpbmxpbmUgdm9pZCBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRUcmFu
c2Zvcm1GZWVkYmFja0lEUG9pbnRlcj4oZ2w6OlRyYW5zZm9ybUZlZQogICAgIHZhbHVlT3V0LT5U
cmFuc2Zvcm1GZWVkYmFja0lEUG9pbnRlclZhbCA9IHZhbHVlSW47CiB9CiAKK3RlbXBsYXRlIDw+
CitpbmxpbmUgdm9pZCBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24+KGds
OjpVbmlmb3JtTG9jYXRpb24gdmFsdWVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1WYWx1ZSAqdmFsdWVPdXQpCit7CisgICAgdmFs
dWVPdXQtPlVuaWZvcm1Mb2NhdGlvblZhbCA9IHZhbHVlSW47Cit9CisKIHRlbXBsYXRlIDw+CiBp
bmxpbmUgdm9pZCBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEPihnbDo6VmVy
dGV4QXJyYXlJRCB2YWx1ZUluLCBQYXJhbVZhbHVlICp2YWx1ZU91dCkKIHsKQEAgLTIzMzgsOSAr
MjM0MCw2IEBAIHZvaWQgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlIHBhcmFtVHlwZSwgVCB2YWx1
ZUluLCBQYXJhbVZhbHVlICp2YWx1ZU91dCkKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRNZW1v
cnlPYmplY3RJRFBvaW50ZXI6CiAgICAgICAgICAgICBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRN
ZW1vcnlPYmplY3RJRFBvaW50ZXI+KHZhbHVlSW4sIHZhbHVlT3V0KTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFBhdGhJRDoKLSAgICAgICAgICAgIFNldFBh
cmFtVmFsPFBhcmFtVHlwZTo6VFBhdGhJRD4odmFsdWVJbiwgdmFsdWVPdXQpOwotICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUG9pbnRQYXJhbWV0ZXI6CiAgICAg
ICAgICAgICBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRQb2ludFBhcmFtZXRlcj4odmFsdWVJbiwg
dmFsdWVPdXQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDQzLDYgKzI0NDIsOSBAQCB2b2lk
IEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZSBwYXJhbVR5cGUsIFQgdmFsdWVJbiwgUGFyYW1WYWx1
ZSAqdmFsdWVPdXQpCiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJ
RFBvaW50ZXI6CiAgICAgICAgICAgICBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRUcmFuc2Zvcm1G
ZWVkYmFja0lEUG9pbnRlcj4odmFsdWVJbiwgdmFsdWVPdXQpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uOgorICAgICAgICAgICAg
U2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uPih2YWx1ZUluLCB2YWx1ZU91
dCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRWZXJ0ZXhB
cnJheUlEOgogICAgICAgICAgICAgU2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJ
RD4odmFsdWVJbiwgdmFsdWVPdXQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDcwLDcgKzI0
NzIsMTAgQEAgdm9pZCBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGUgcGFyYW1UeXBlLCBUIHZhbHVl
SW4sIFBhcmFtVmFsdWUgKnZhbHVlT3V0KQogICAgIH0KIH0KIAotdm9pZCBXcml0ZVBhcmFtVHlw
ZVRvU3RyZWFtKHN0ZDo6b3N0cmVhbSAmb3MsIFBhcmFtVHlwZSBwYXJhbVR5cGUsIGNvbnN0IFBh
cmFtVmFsdWUgJnBhcmFtVmFsdWUpOworc3RydWN0IENhbGxDYXB0dXJlOworc3RydWN0IFBhcmFt
Q2FwdHVyZTsKKwordm9pZCBXcml0ZVBhcmFtQ2FwdHVyZVJlcGxheShzdGQ6Om9zdHJlYW0gJm9z
LCBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwgY29uc3QgUGFyYW1DYXB0dXJlICZwYXJhbSk7CiBj
b25zdCBjaGFyICpQYXJhbVR5cGVUb1N0cmluZyhQYXJhbVR5cGUgcGFyYW1UeXBlKTsKIAogZW51
bSBjbGFzcyBSZXNvdXJjZUlEVHlwZQpAQCAtMjQ3OSw3ICsyNDg0LDYgQEAgZW51bSBjbGFzcyBS
ZXNvdXJjZUlEVHlwZQogICAgIEZlbmNlTlYsCiAgICAgRnJhbWVidWZmZXIsCiAgICAgTWVtb3J5
T2JqZWN0LAotICAgIFBhdGgsCiAgICAgUHJvZ3JhbVBpcGVsaW5lLAogICAgIFF1ZXJ5LAogICAg
IFJlbmRlcmJ1ZmZlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9nbF9lbnVtX3V0aWxzX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL2dsX2VudW1fdXRpbHNfYXV0b2dlbi5jcHAKaW5kZXggYzY3MzBjYzlj
M2Y4ZjYxMzM1MmY2Mzg1OTUwNjVmZmU4ZmMwOGU2Zi4uZjc0ZjUzY2MxMTBmYzJiODMzZDFlY2Q0
Mzg2MTI0ZDRhYjgzOTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL2dsX2VudW1fdXRpbHNfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dsX2VudW1fdXRpbHNfYXV0b2dlbi5jcHAKQEAgLTE3MTIs
NiArMTcxMiwxMCBAQCBjb25zdCBjaGFyICpHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cCBlbnVt
R3JvdXAsIHVuc2lnbmVkIGludCB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJH
TF9CR1JBOF9FWFQiOwogICAgICAgICAgICAgICAgIGNhc2UgMHg5M0E2OgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gIkdMX1BST0dSQU1fQklOQVJZX0FOR0xFIjsKKyAgICAgICAgICAgICAg
ICBjYXNlIDB4OTNBRToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJHTF9IQU5ETEVfVFlQ
RV9aSVJDT05fVk1PX0FOR0xFIjsKKyAgICAgICAgICAgICAgICBjYXNlIDB4OTNBRjoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJHTF9IQU5ETEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEUi
OwogICAgICAgICAgICAgICAgIGNhc2UgMHg5M0IwOgogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIkdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NCI7CiAgICAgICAgICAgICAgICAgY2FzZSAw
eDkzQjE6CkBAIC0yNTI5LDYgKzI1MzMsMTQgQEAgY29uc3QgY2hhciAqR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXAgZW51bUdyb3VwLCB1bnNpZ25lZCBpbnQgdmFsdWUpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAiR0xfUkdCQThJIjsKICAgICAgICAgICAgICAgICBjYXNlIDB4OEQ4RjoK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJHTF9SR0I4SSI7CisgICAgICAgICAgICAgICAg
Y2FzZSAweDhEQkI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAiR0xfQ09NUFJFU1NFRF9S
RURfUkdUQzFfRVhUIjsKKyAgICAgICAgICAgICAgICBjYXNlIDB4OERCQzoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUIjsKKyAg
ICAgICAgICAgICAgICBjYXNlIDB4OERCRDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJH
TF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQiOworICAgICAgICAgICAgICAgIGNhc2Ug
MHg4REJFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkdMX0NPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQiOwogICAgICAgICAgICAgICAgIGNhc2UgMHg4RThDOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gIkdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VY
VCI7CiAgICAgICAgICAgICAgICAgY2FzZSAweDhFOEQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvb3ZlcmxheV93aWRnZXRzLmpzb24gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvb3ZlcmxheV93aWRnZXRzLmpzb24KaW5kZXgg
MGY2NWY3NTM1MWEwNjQ4NmNmZGUyNzdlYzA2ZmQyZWFiZmM1MWU3NS4uNGFlYmZjMWZiZjAyODFj
NWI2NzJhMDBmODYxZjczMGEwYzA3YjI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL292ZXJsYXlfd2lkZ2V0cy5qc29uCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9vdmVybGF5X3dpZGdldHMuanNvbgpAQCAtNTMsNyAr
NTMsNyBAQAogICAgICAgICAgICAgImxlbmd0aCI6IDI1CiAgICAgICAgIH0sCiAgICAgICAgIHsK
LSAgICAgICAgICAgICJuYW1lIjogIlZ1bGthbkNvbW1hbmRHcmFwaFNpemUiLAorICAgICAgICAg
ICAgIm5hbWUiOiAiVnVsa2FuUmVuZGVyUGFzc0NvdW50IiwKICAgICAgICAgICAgICJ0eXBlIjog
IlJ1bm5pbmdHcmFwaCg2MCkiLAogICAgICAgICAgICAgImNvbG9yIjogWzc1LCAyMDAsIDAsIDIw
MF0sCiAgICAgICAgICAgICAiY29vcmRzIjogWzEwLCAxMDBdLApAQCAtNjEsNyArNjEsNyBAQAog
ICAgICAgICAgICAgImhlaWdodCI6IDEwMCwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6IHsK
ICAgICAgICAgICAgICAgICAiY29sb3IiOiBbNzUsIDIwMCwgMCwgMjU1XSwKLSAgICAgICAgICAg
ICAgICAiY29vcmRzIjogWyJWdWxrYW5Db21tYW5kR3JhcGhTaXplLmxlZnQuYWxpZ24iLCAiVnVs
a2FuQ29tbWFuZEdyYXBoU2l6ZS50b3AuYWRqYWNlbnQiXSwKKyAgICAgICAgICAgICAgICAiY29v
cmRzIjogWyJWdWxrYW5SZW5kZXJQYXNzQ291bnQubGVmdC5hbGlnbiIsICJWdWxrYW5SZW5kZXJQ
YXNzQ291bnQudG9wLmFkamFjZW50Il0sCiAgICAgICAgICAgICAgICAgImZvbnQiOiAic21hbGwi
LAogICAgICAgICAgICAgICAgICJsZW5ndGgiOiA0MAogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lv
bnMuY3BwCmluZGV4IGZjNGEyYzZjM2YxMzRiNzUxNmJlMmU3OWM4ODQyMTEzYjE4MTU1MjEuLmZl
MjhiNGEyYzc4ZjkwMjA4YWVmOGEzNjZlZmRhYWI0ODczYTE3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB0ZW1wbGF0ZSBHTHVpbnQgQ2FzdFF1ZXJ5VmFsdWVUbzxH
THVpbnQsIEdMdWludD4oR0xlbnVtIHBuYW1lLCBHTHVpbnQgdmFsdWUpOwogdGVtcGxhdGUgR0x1
aW50IENhc3RRdWVyeVZhbHVlVG88R0x1aW50LCBHTGZsb2F0PihHTGVudW0gcG5hbWUsIEdMZmxv
YXQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVlcnlUPgotdm9pZCBDYXN0U3RhdGVW
YWx1ZXMoQ29udGV4dCAqY29udGV4dCwKK3ZvaWQgQ2FzdFN0YXRlVmFsdWVzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbmF0aXZlVHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBudW1QYXJhbXMsCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBDYXN0U3RhdGVW
YWx1ZXMoQ29udGV4dCAqY29udGV4dCwKICAgICBlbHNlIGlmIChuYXRpdmVUeXBlID09IEdMX0lO
VF82NF9BTkdMRVgpCiAgICAgewogICAgICAgICBzdGQ6OnZlY3RvcjxHTGludDY0PiBpbnQ2NFBh
cmFtcyhudW1QYXJhbXMsIDApOwotICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjR2KHBuYW1l
LCBpbnQ2NFBhcmFtcy5kYXRhKCkpOworICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjR2SW1w
bChwbmFtZSwgaW50NjRQYXJhbXMuZGF0YSgpKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IG51bVBhcmFtczsgKytpKQogICAgICAgICB7CkBAIC0yMjcsMTEgKzIyNywx
NSBAQCB2b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0LAogLy8gVGhlIGNhbGxz
IGJlbG93IHdpbGwgbWFrZSBDYXN0U3RhdGVWYWx1ZXMgc3VjY2Vzc2Z1bGx5IGxpbmsgd2l0aCB0
aGUgR0wgc3RhdGUgcXVlcnkgdHlwZXMKIC8vIFRoZSBHTCBzdGF0ZSBxdWVyeSBBUEkgdHlwZXMg
YXJlOiBib29sLCBpbnQsIHVpbnQsIGZsb2F0LCBpbnQ2NCwgdWludDY0CiAKLXRlbXBsYXRlIHZv
aWQgQ2FzdFN0YXRlVmFsdWVzPEdMYm9vbGVhbj4oQ29udGV4dCAqLCBHTGVudW0sIEdMZW51bSwg
dW5zaWduZWQgaW50LCBHTGJvb2xlYW4gKik7Ci10ZW1wbGF0ZSB2b2lkIENhc3RTdGF0ZVZhbHVl
czxHTGludD4oQ29udGV4dCAqLCBHTGVudW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTGludCAq
KTsKLXRlbXBsYXRlIHZvaWQgQ2FzdFN0YXRlVmFsdWVzPEdMdWludD4oQ29udGV4dCAqLCBHTGVu
dW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTHVpbnQgKik7Ci10ZW1wbGF0ZSB2b2lkIENhc3RT
dGF0ZVZhbHVlczxHTGZsb2F0PihDb250ZXh0ICosIEdMZW51bSwgR0xlbnVtLCB1bnNpZ25lZCBp
bnQsIEdMZmxvYXQgKik7Ci10ZW1wbGF0ZSB2b2lkIENhc3RTdGF0ZVZhbHVlczxHTGludDY0PihD
b250ZXh0ICosIEdMZW51bSwgR0xlbnVtLCB1bnNpZ25lZCBpbnQsIEdMaW50NjQgKik7Cit0ZW1w
bGF0ZSB2b2lkIENhc3RTdGF0ZVZhbHVlczxHTGJvb2xlYW4+KGNvbnN0IENvbnRleHQgKiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICopOwordGVtcGxhdGUgdm9pZCBDYXN0
U3RhdGVWYWx1ZXM8R0xpbnQ+KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtLCBHTGVudW0sIHVuc2ln
bmVkIGludCwgR0xpbnQgKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RTdGF0ZVZhbHVlczxHTHVpbnQ+
KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtLCBHTGVudW0sIHVuc2lnbmVkIGludCwgR0x1aW50ICop
OwordGVtcGxhdGUgdm9pZCBDYXN0U3RhdGVWYWx1ZXM8R0xmbG9hdD4oY29uc3QgQ29udGV4dCAq
LCBHTGVudW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTGZsb2F0ICopOwordGVtcGxhdGUgdm9p
ZCBDYXN0U3RhdGVWYWx1ZXM8R0xpbnQ2ND4oY29uc3QgQ29udGV4dCAqLCBHTGVudW0sIEdMZW51
bSwgdW5zaWduZWQgaW50LCBHTGludDY0ICopOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVlcnlU
Pgogdm9pZCBDYXN0SW5kZXhlZFN0YXRlVmFsdWVzKENvbnRleHQgKmNvbnRleHQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9u
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lv
bnMuaAppbmRleCAxY2UzZjZmNDllZTllZjg0ZTMyZmJjODQxMWQ0NzVmM2Q5NmNhMGEwLi43Nzg0
YzMzZTczOTgyMzc0MGM5NDc2OGQxYzg1MDkzYzUwNjgwYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgKQEAg
LTExOSw3ICsxMTksNyBAQCBHTGJvb2xlYW4gQ29udmVydFRvR0xCb29sZWFuKFBhcmFtVHlwZSBw
YXJhbSkKIAogLy8gVGhlIEdMIHN0YXRlIHF1ZXJ5IEFQSSB0eXBlcyBhcmU6IGJvb2wsIGludCwg
dWludCwgZmxvYXQsIGludDY0LCB1aW50NjQKIHRlbXBsYXRlIDx0eXBlbmFtZSBRdWVyeVQ+Ci12
b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0LAordm9pZCBDYXN0U3RhdGVWYWx1
ZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBu
YXRpdmVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmNwcAppbmRleCA4MzFlMjhjZGIw
ZGZmNmRhMDcwNDQyZjczN2M1ZmU3NDgxYTg2M2M0Li40ZTZmMTEyMjViZjUxMjI5MDc2OWQxYzZk
Y2U5NWNkNWEzZGIxYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcXVlcnl1dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibGli
QU5HTEUvRmVuY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0dMRVMxU3RhdGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9NZW1vcnlPYmpl
Y3QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU2FtcGxlci5oIgpAQCAtMjE3LDcg
KzIxOCwyMiBAQCB2b2lkIFF1ZXJ5VGV4TGV2ZWxQYXJhbWV0ZXJCYXNlKGNvbnN0IFRleHR1cmUg
KnRleHR1cmUsCiAgICAgfQogfQogCi10ZW1wbGF0ZSA8Ym9vbCBpc1B1cmVJbnRlZ2VyLCB0eXBl
bmFtZSBQYXJhbVR5cGU+CisvLyBUaGlzIGZ1bmN0aW9uIGlzIG5lZWRlZCB0byBoYW5kbGUgZml4
ZWRfcG9pbnQgZGF0YS4KKy8vIEl0IGNhbiBiZSB1c2VkIHdoZW4gc29tZSBwbmFtZSBuZWVkIHNw
ZWNpYWwgY29udmVyc2lvbiBmcm9tIGludC9mbG9hdC9ib29sIHRvIGZpeGVkX3BvaW50LgordGVt
cGxhdGUgPGJvb2wgaXNHTGZpeGVkLCB0eXBlbmFtZSBRdWVyeVQsIHR5cGVuYW1lIFBhcmFtVHlw
ZT4KK1F1ZXJ5VCBDYXN0RnJvbVNwZWNpYWxWYWx1ZShHTGVudW0gcG5hbWUsIGNvbnN0IFBhcmFt
VHlwZSBwYXJhbSkKK3sKKyAgICBpZiAoaXNHTGZpeGVkKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFF1ZXJ5VD4oQ29udmVydEZsb2F0VG9GaXhlZChDYXN0RnJvbVN0YXRlVmFs
dWU8R0xmbG9hdD4ocG5hbWUsIHBhcmFtKSkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICByZXR1cm4gQ2FzdEZyb21TdGF0ZVZhbHVlPFF1ZXJ5VD4ocG5hbWUsIHBhcmFtKTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlIDxib29sIGlzUHVyZUludGVnZXIsIGJvb2wgaXNHTGZpeGVkLCB0
eXBlbmFtZSBQYXJhbVR5cGU+CiB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAq
dGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKQEAgLTI1
Miw3ICsyNjgsOCBAQCB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVlPFBh
cmFtVHlwZT4ocG5hbWUsIHRleHR1cmUtPmdldFVzYWdlKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Ci0gICAgICAgICAg
ICAqcGFyYW1zID0gQ2FzdEZyb21TdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUsIHRleHR1cmUt
PmdldE1heEFuaXNvdHJvcHkoKSk7CisgICAgICAgICAgICAqcGFyYW1zID0KKyAgICAgICAgICAg
ICAgICBDYXN0RnJvbVNwZWNpYWxWYWx1ZTxpc0dMZml4ZWQsIFBhcmFtVHlwZT4ocG5hbWUsIHRl
eHR1cmUtPmdldE1heEFuaXNvdHJvcHkoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX1NXSVpaTEVfUjoKICAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0RnJv
bUdMaW50U3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRTd2l6emxlUmVk
KCkpOwpAQCAtMjczLDEwICsyOTAsMTAgQEAgdm9pZCBRdWVyeVRleFBhcmFtZXRlckJhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0RnJvbUdMaW50
U3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRNYXhMZXZlbCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDoKLSAgICAg
ICAgICAgICpwYXJhbXMgPSBDYXN0RnJvbVN0YXRlVmFsdWU8UGFyYW1UeXBlPihwbmFtZSwgdGV4
dHVyZS0+Z2V0TWluTG9kKCkpOworICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tU3BlY2lh
bFZhbHVlPGlzR0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwgdGV4dHVyZS0+Z2V0TWluTG9kKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgot
ICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tU3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1l
LCB0ZXh0dXJlLT5nZXRNYXhMb2QoKSk7CisgICAgICAgICAgICAqcGFyYW1zID0gQ2FzdEZyb21T
cGVjaWFsVmFsdWU8aXNHTGZpeGVkLCBQYXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRNYXhM
b2QoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBB
UkVfTU9ERToKICAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0RnJvbUdMaW50U3RhdGVWYWx1ZTxQ
YXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRDb21wYXJlTW9kZSgpKTsKQEAgLTI5NCwyMyAr
MzExLDIzIEBAIHZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTOgogICAgICAgICB7CiAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZjcm9wID0gdGV4dHVyZS0+Z2V0Q3JvcCgp
OwotICAgICAgICAgICAgcGFyYW1zWzBdICAgICAgICAgICAgICAgICA9IENhc3RGcm9tR0xpbnRT
dGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUsIGNyb3AueCk7Ci0gICAgICAgICAgICBwYXJhbXNb
MV0gICAgICAgICAgICAgICAgID0gQ2FzdEZyb21HTGludFN0YXRlVmFsdWU8UGFyYW1UeXBlPihw
bmFtZSwgY3JvcC55KTsKLSAgICAgICAgICAgIHBhcmFtc1syXSAgICAgICAgICAgICAgICAgPSBD
YXN0RnJvbUdMaW50U3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCBjcm9wLndpZHRoKTsKLSAg
ICAgICAgICAgIHBhcmFtc1szXSAgICAgICAgICAgICAgICAgPSBDYXN0RnJvbUdMaW50U3RhdGVW
YWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCBjcm9wLmhlaWdodCk7CisgICAgICAgICAgICBwYXJhbXNb
MF0gICAgICAgICAgICAgICAgID0gQ2FzdEZyb21TcGVjaWFsVmFsdWU8aXNHTGZpeGVkLCBQYXJh
bVR5cGU+KHBuYW1lLCBjcm9wLngpOworICAgICAgICAgICAgcGFyYW1zWzFdICAgICAgICAgICAg
ICAgICA9IENhc3RGcm9tU3BlY2lhbFZhbHVlPGlzR0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwg
Y3JvcC55KTsKKyAgICAgICAgICAgIHBhcmFtc1syXSA9IENhc3RGcm9tU3BlY2lhbFZhbHVlPGlz
R0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwgY3JvcC53aWR0aCk7CisgICAgICAgICAgICBwYXJh
bXNbM10gPSBDYXN0RnJvbVNwZWNpYWxWYWx1ZTxpc0dMZml4ZWQsIFBhcmFtVHlwZT4ocG5hbWUs
IGNyb3AuaGVpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfR0VORVJBVEVfTUlQTUFQOgogICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tR0xp
bnRTdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUsIHRleHR1cmUtPmdldEdlbmVyYXRlTWlwbWFw
SGludCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX01FTU9SWV9TSVpF
X0FOR0xFOgotICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tU3RhdGVWYWx1ZTxQYXJhbVR5
cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRNZW1vcnlTaXplKCkpOworICAgICAgICAgICAgKnBhcmFt
cyA9IENhc3RGcm9tU3BlY2lhbFZhbHVlPGlzR0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwgdGV4
dHVyZS0+Z2V0TWVtb3J5U2l6ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQk9SREVSX0NPTE9SOgogICAgICAgICAgICAgQ29udmVydEZyb21Db2xvcjxp
c1B1cmVJbnRlZ2VyPih0ZXh0dXJlLT5nZXRCb3JkZXJDb2xvcigpLCBwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9OQVRJVkVfSURfQU5HTEU6Ci0g
ICAgICAgICAgICAqcGFyYW1zID0gQ2FzdEZyb21TdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUs
IHRleHR1cmUtPmdldE5hdGl2ZUlEKCkpOworICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9t
U3BlY2lhbFZhbHVlPGlzR0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwgdGV4dHVyZS0+Z2V0TmF0
aXZlSUQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9JTVBMRU1FTlRB
VElPTl9DT0xPUl9SRUFEX0ZPUk1BVDoKICAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0RnJvbUdM
aW50U3RhdGVWYWx1ZTxQYXJhbVR5cGU+KApAQCAtMzIxLDcgKzMzOCw4IEBAIHZvaWQgUXVlcnlU
ZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
cG5hbWUsIHRleHR1cmUtPmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZShjb250ZXh0KSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9JTUFHRV9GT1JNQVRfQ09NUEFU
SUJJTElUWV9UWVBFOgotICAgICAgICAgICAgKnBhcmFtcyA9IEdMX0lNQUdFX0ZPUk1BVF9DT01Q
QVRJQklMSVRZX0JZX1NJWkU7CisgICAgICAgICAgICAqcGFyYW1zID0KKyAgICAgICAgICAgICAg
ICBDYXN0RnJvbUdMaW50U3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCBHTF9JTUFHRV9GT1JN
QVRfQ09NUEFUSUJJTElUWV9CWV9TSVpFKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKQEAgLTMyOSw3ICszNDcsMjMgQEAg
dm9pZCBRdWVyeVRleFBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICB9
CiB9CiAKLXRlbXBsYXRlIDxib29sIGlzUHVyZUludGVnZXIsIHR5cGVuYW1lIFBhcmFtVHlwZT4K
Ky8vIHRoaXMgZnVuY3Rpb24gaXMgbmVlZGVkIHRvIGhhbmRsZSBPRVNfRklYRURfUE9JTlQuCisv
LyBTb21lIHBuYW1lIHZhbHVlcyBjYW4gdGFrZSBpbiBHTGZpeGVkIHZhbHVlcyBhbmQgbWF5IG5l
ZWQgdG8gYmUgY29udmVydGVkCit0ZW1wbGF0ZSA8Ym9vbCBpc0dMZml4ZWQsIHR5cGVuYW1lIFJl
dHVyblR5cGUsIHR5cGVuYW1lIFBhcmFtVHlwZT4KK1JldHVyblR5cGUgQ29udmVydFRleFBhcmFt
KEdMZW51bSBwbmFtZSwgY29uc3QgUGFyYW1UeXBlIHBhcmFtKQoreworICAgIGlmIChpc0dMZml4
ZWQpCisgICAgeworICAgICAgICByZXR1cm4gQ2FzdFF1ZXJ5VmFsdWVUbzxSZXR1cm5UeXBlPihw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVy
dEZpeGVkVG9GbG9hdChzdGF0aWNfY2FzdDxHTGZpeGVkPihwYXJhbSkpKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIENhc3RRdWVyeVZhbHVlVG88UmV0dXJuVHlwZT4o
cG5hbWUsIHBhcmFtKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxib29sIGlzUHVyZUludGVnZXIs
IGJvb2wgaXNHTGZpeGVkLCB0eXBlbmFtZSBQYXJhbVR5cGU+CiB2b2lkIFNldFRleFBhcmFtZXRl
ckJhc2UoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBj
b25zdCBQYXJhbVR5cGUgKnBhcmFtcykKIHsKICAgICBBU1NFUlQodGV4dHVyZSAhPSBudWxscHRy
KTsKQEAgLTM1NSw3ICszODksOCBAQCB2b2lkIFNldFRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAq
Y29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdAogICAgICAgICAg
ICAgdGV4dHVyZS0+c2V0VXNhZ2UoY29udGV4dCwgQ29udmVydFRvR0xlbnVtKHBuYW1lLCBwYXJh
bXNbMF0pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFY
X0FOSVNPVFJPUFlfRVhUOgotICAgICAgICAgICAgdGV4dHVyZS0+c2V0TWF4QW5pc290cm9weShj
b250ZXh0LCBDYXN0UXVlcnlWYWx1ZVRvPEdMZmxvYXQ+KHBuYW1lLCBwYXJhbXNbMF0pKTsKKyAg
ICAgICAgICAgIHRleHR1cmUtPnNldE1heEFuaXNvdHJvcHkoY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydFRleFBhcmFtPGlzR0xmaXhlZCwgR0xm
bG9hdD4ocG5hbWUsIHBhcmFtc1swXSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6CiAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRDb21w
YXJlTW9kZShjb250ZXh0LCBDb252ZXJ0VG9HTGVudW0ocG5hbWUsIHBhcmFtc1swXSkpOwpAQCAt
Mzk4LDEwICs0MzMsMTAgQEAgdm9pZCBTZXRUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRl
eHQsIFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QKICAgICAgICAgICAgIHRl
eHR1cmUtPnNldFNSR0JEZWNvZGUoY29udGV4dCwgQ29udmVydFRvR0xlbnVtKHBuYW1lLCBwYXJh
bXNbMF0pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1JP
UF9SRUNUX09FUzoKLSAgICAgICAgICAgIHRleHR1cmUtPnNldENyb3AoZ2w6OlJlY3RhbmdsZShD
YXN0UXVlcnlWYWx1ZVRvPEdMaW50PihwbmFtZSwgcGFyYW1zWzBdKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXN0UXVlcnlWYWx1ZVRvPEdMaW50PihwbmFt
ZSwgcGFyYW1zWzFdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDYXN0UXVlcnlWYWx1ZVRvPEdMaW50PihwbmFtZSwgcGFyYW1zWzJdKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXN0UXVlcnlWYWx1ZVRvPEdMaW50Pihw
bmFtZSwgcGFyYW1zWzNdKSkpOworICAgICAgICAgICAgdGV4dHVyZS0+c2V0Q3JvcChnbDo6UmVj
dGFuZ2xlKENvbnZlcnRUZXhQYXJhbTxpc0dMZml4ZWQsIEdMaW50PihwbmFtZSwgcGFyYW1zWzBd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0VGV4
UGFyYW08aXNHTGZpeGVkLCBHTGludD4ocG5hbWUsIHBhcmFtc1sxXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydFRleFBhcmFtPGlzR0xmaXhlZCwg
R0xpbnQ+KHBuYW1lLCBwYXJhbXNbMl0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbnZlcnRUZXhQYXJhbTxpc0dMZml4ZWQsIEdMaW50PihwbmFtZSwgcGFy
YW1zWzNdKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfR0VORVJBVEVf
TUlQTUFQOgogICAgICAgICAgICAgdGV4dHVyZS0+c2V0R2VuZXJhdGVNaXBtYXBIaW50KENvbnZl
cnRUb0dMZW51bShwYXJhbXNbMF0pKTsKQEAgLTExOTQsNyArMTIyOSw3IEBAIHZvaWQgUXVlcnlQ
cm9ncmFtaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSwgR0xlbnVt
IHBuYW1lLCBHTGluCiAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+aXNWYWxpZGF0ZWQo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6
Ci0gICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+Z2V0SW5mb0xvZ0xlbmd0aCgpOworICAg
ICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW0tPmdldEV4ZWN1dGFibGUoKS5nZXRJbmZvTG9nTGVu
Z3RoKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgR0xfQVRUQUNIRURfU0hB
REVSUzoKICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtLT5nZXRBdHRhY2hlZFNoYWRlcnND
b3VudCgpOwpAQCAtMTM5Miw3ICsxNDI3LDE1IEBAIHZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJmdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7Ci0gICAg
UXVlcnlUZXhQYXJhbWV0ZXJCYXNlPGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICBRdWVyeVRleFBhcmFtZXRlckJhc2U8ZmFsc2UsIGZhbHNlPihjb250ZXh0LCB0
ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBRdWVyeVRleFBhcmFtZXRlcnh2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4
dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKQoreworICAgIFF1ZXJ5VGV4
UGFyYW1ldGVyQmFzZTxmYWxzZSwgdHJ1ZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFt
cyk7CiB9CiAKIHZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LApAQCAtMTQwMCw3ICsxNDQzLDcgQEAgdm9pZCBRdWVyeVRleFBhcmFtZXRlcml2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgUXVlcnlUZXhQ
YXJhbWV0ZXJCYXNlPGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICBRdWVyeVRleFBhcmFtZXRlckJhc2U8ZmFsc2UsIGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBw
bmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBRdWVyeVRleFBhcmFtZXRlcklpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LApAQCAtMTQwOCw3ICsxNDUxLDcgQEAgdm9pZCBRdWVyeVRleFBhcmFtZXRl
cklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7
Ci0gICAgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlPHRydWU+KGNvbnRleHQsIHRleHR1cmUsIHBuYW1l
LCBwYXJhbXMpOworICAgIFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZTx0cnVlLCBmYWxzZT4oY29udGV4
dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJJ
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCkBAIC0xNDE2LDcgKzE0NTksNyBAQCB2b2lkIFF1
ZXJ5VGV4UGFyYW1ldGVySXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpCiB7Ci0gICAgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlPHRydWU+KGNvbnRl
eHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworICAgIFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZTx0
cnVlLCBmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQg
UXVlcnlTYW1wbGVyUGFyYW1ldGVyZnYoY29uc3QgU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBu
YW1lLCBHTGZsb2F0ICpwYXJhbXMpCkBAIC0xNjA5LDM0ICsxNjUyLDQ0IEBAIGFuZ2xlOjpSZXN1
bHQgUXVlcnlTeW5jaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gYW5nbGU6
OlJlc3VsdDo6Q29udGludWU7CiB9CiAKK3ZvaWQgU2V0VGV4UGFyYW1ldGVyeChDb250ZXh0ICpj
b250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCit7
CisgICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZSwgdHJ1ZT4oY29udGV4dCwgdGV4dHVyZSwg
cG5hbWUsICZwYXJhbSk7Cit9CisKK3ZvaWQgU2V0VGV4UGFyYW1ldGVyeHYoQ29udGV4dCAqY29u
dGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJh
bXMpCit7CisgICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZSwgdHJ1ZT4oY29udGV4dCwgdGV4
dHVyZSwgcG5hbWUsIHBhcmFtcyk7Cit9CisKIHZvaWQgU2V0VGV4UGFyYW1ldGVyZihDb250ZXh0
ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
CiB7Ci0gICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5h
bWUsICZwYXJhbSk7CisgICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZSwgZmFsc2U+KGNvbnRl
eHQsIHRleHR1cmUsIHBuYW1lLCAmcGFyYW0pOwogfQogCiB2b2lkIFNldFRleFBhcmFtZXRlcmZ2
KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKQogewotICAgIFNldFRleFBhcmFtZXRlckJhc2U8ZmFsc2U+KGNvbnRl
eHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworICAgIFNldFRleFBhcmFtZXRlckJhc2U8ZmFs
c2UsIGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBT
ZXRUZXhQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRleHR1cmUsIEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7Ci0gICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZT4o
Y29udGV4dCwgdGV4dHVyZSwgcG5hbWUsICZwYXJhbSk7CisgICAgU2V0VGV4UGFyYW1ldGVyQmFz
ZTxmYWxzZSwgZmFsc2U+KGNvbnRleHQsIHRleHR1cmUsIHBuYW1lLCAmcGFyYW0pOwogfQogCiB2
b2lkIFNldFRleFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRleHR1cmUs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBTZXRUZXhQYXJhbWV0
ZXJCYXNlPGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBTZXRU
ZXhQYXJhbWV0ZXJCYXNlPGZhbHNlLCBmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBh
cmFtcyk7CiB9CiAKIHZvaWQgU2V0VGV4UGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsIFRl
eHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKLSAg
ICBTZXRUZXhQYXJhbWV0ZXJCYXNlPHRydWU+KGNvbnRleHQsIHRleHR1cmUsIHBuYW1lLCBwYXJh
bXMpOworICAgIFNldFRleFBhcmFtZXRlckJhc2U8dHJ1ZSwgZmFsc2U+KGNvbnRleHQsIHRleHR1
cmUsIHBuYW1lLCBwYXJhbXMpOwogfQogCiB2b2lkIFNldFRleFBhcmFtZXRlckl1aXYoQ29udGV4
dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQg
KnBhcmFtcykKIHsKLSAgICBTZXRUZXhQYXJhbWV0ZXJCYXNlPHRydWU+KGNvbnRleHQsIHRleHR1
cmUsIHBuYW1lLCBwYXJhbXMpOworICAgIFNldFRleFBhcmFtZXRlckJhc2U8dHJ1ZSwgZmFsc2U+
KGNvbnRleHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOwogfQogCiB2b2lkIFNldFNhbXBsZXJQ
YXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSkKQEAgLTE3MjksNyArMTc4Miw3IEBAIEdMaW50IEdldFVuaWZvcm1S
ZXNvdXJjZVByb3BlcnR5KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sIEdMdWludCBpbmRleCwgY29u
c3QgR0xlCiAgICAgICAgICAgICByZXR1cm4gR2V0Q29tbW9uVmFyaWFibGVQcm9wZXJ0eSh1bmlm
b3JtLCByZXNvdXJjZVByb3ApOwogCiAgICAgICAgIGNhc2UgR0xfTE9DQVRJT046Ci0gICAgICAg
ICAgICByZXR1cm4gcHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKHVuaWZvcm0ubmFtZSk7Cisg
ICAgICAgICAgICByZXR1cm4gcHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKHVuaWZvcm0ubmFt
ZSkudmFsdWU7CiAKICAgICAgICAgY2FzZSBHTF9CTE9DS19JTkRFWDoKICAgICAgICAgICAgIHJl
dHVybiAodW5pZm9ybS5pc0F0b21pY0NvdW50ZXIoKSA/IC0xIDogdW5pZm9ybS5idWZmZXJJbmRl
eCk7CkBAIC0xOTA0LDcgKzE5NTcsNyBAQCBHTGludCBRdWVyeVByb2dyYW1SZXNvdXJjZUxvY2F0
aW9uKGNvbnN0IFByb2dyYW0gKnByb2dyYW0sCiAgICAgICAgICAgICByZXR1cm4gcHJvZ3JhbS0+
Z2V0T3V0cHV0UmVzb3VyY2VMb2NhdGlvbihuYW1lKTsKIAogICAgICAgICBjYXNlIEdMX1VOSUZP
Uk06Ci0gICAgICAgICAgICByZXR1cm4gcHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUp
OworICAgICAgICAgICAgcmV0dXJuIHByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKS52
YWx1ZTsKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKQEAg
LTIwMjMsNiArMjA3NiwzNyBAQCB2b2lkIFF1ZXJ5UHJvZ3JhbUludGVyZmFjZWl2KGNvbnN0IFBy
b2dyYW0gKnByb2dyYW0sCiAgICAgfQogfQogCithbmdsZTo6UmVzdWx0IFNldE1lbW9yeU9iamVj
dFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdCAqbWVtb3J5T2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7
CisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfREVESUNBVEVEX01F
TU9SWV9PQkpFQ1RfRVhUOgorICAgICAgICAgICAgQU5HTEVfVFJZKG1lbW9yeU9iamVjdC0+c2V0
RGVkaWNhdGVkTWVtb3J5KGNvbnRleHQsIENvbnZlcnRUb0Jvb2wocGFyYW1zWzBdKSkpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQor
Cit2b2lkIFF1ZXJ5TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYoY29uc3QgTWVtb3J5T2JqZWN0ICpt
ZW1vcnlPYmplY3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBzd2l0Y2gg
KHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9ERURJQ0FURURfTUVNT1JZX09CSkVDVF9F
WFQ6CisgICAgICAgICAgICAqcGFyYW1zID0gbWVtb3J5T2JqZWN0LT5pc0RlZGljYXRlZE1lbW9y
eSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgfQorfQorCiBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgUGFyYW1U
b1ZlcnRleEFycmF5VHlwZShHTGVudW0gcGFyYW0pCiB7CiAgICAgc3dpdGNoIChwYXJhbSkKQEAg
LTI3OTIsNyArMjg3Niw3IEBAIHZvaWQgU2V0UG9pbnRTaXplKEdMRVMxU3RhdGUgKnN0YXRlLCBH
TGZsb2F0IHNpemUpCiAgICAgcGFyYW1zLnBvaW50U2l6ZSAgICAgICAgPSBzaXplOwogfQogCi12
b2lkIEdldFBvaW50U2l6ZShHTEVTMVN0YXRlICpzdGF0ZSwgR0xmbG9hdCAqc2l6ZU91dCkKK3Zv
aWQgR2V0UG9pbnRTaXplKGNvbnN0IEdMRVMxU3RhdGUgKnN0YXRlLCBHTGZsb2F0ICpzaXplT3V0
KQogewogICAgIGNvbnN0IFBvaW50UGFyYW1ldGVycyAmcGFyYW1zID0gc3RhdGUtPnBvaW50UGFy
YW1ldGVycygpOwogICAgICpzaXplT3V0ICAgICAgICAgICAgICAgICAgICAgID0gcGFyYW1zLnBv
aW50U2l6ZTsKQEAgLTMxMTUsMTggKzMxOTksNiBAQCBib29sIEdldFF1ZXJ5UGFyYW1ldGVySW5m
byhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChleHRl
bnNpb25zLnBhdGhSZW5kZXJpbmcpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjYXNlIEdMX1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlV
TToKLSAgICAgICAgICAgIGNhc2UgR0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJWF9DSFJPTUlVTToK
LSAgICAgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfRkxPQVQ7Ci0gICAgICAgICAgICAgICAg
Km51bVBhcmFtcyA9IDE2OwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgfQotCiAgICAgaWYgKGV4dGVuc2lvbnMuYmluZEdlbmVyYXRlc1Jlc291cmNlKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChwbmFtZSkKQEAgLTM2NTQsNiArMzcyNiw5IEBAIHZvaWQgUXVl
cnlDb25maWdBdHRyaWIoY29uc3QgQ29uZmlnICpjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIEVH
TGludCAqdmFsdWUpCiAgICAgICAgIGNhc2UgRUdMX1NVUkZBQ0VfVFlQRToKICAgICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZy0+c3VyZmFjZVR5cGU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRToKKyAgICAgICAgICAgICp2
YWx1ZSA9IGNvbmZpZy0+YmluZFRvVGV4dHVyZVRhcmdldDsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9UWVBFOgogICAgICAgICAgICAgKnZhbHVlID0g
Y29uZmlnLT50cmFuc3BhcmVudFR5cGU7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5oCmluZGV4IDQ4YTZk
OWQ2M2VmNTg1MDcxMzRmOTdkNTU3ZjhkYTZiNjcyZmJkYTkuLmMwN2E2Nzc1Mjc3MzI4MDNkNzMx
ZDNmMDViNjBjYmNlODZjZmU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaApAQCAtNjMsNiArNjMsMTAgQEAgdm9pZCBRdWVyeVRl
eFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsK
K3ZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJ4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4
ZWQgKnBhcmFtcyk7CiB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICp0ZXh0dXJlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKQEAgLTEzMCw2ICsxMzQsOCBA
QCB2b2lkIFNldFRleFBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVy
ZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYQogdm9pZCBTZXRUZXhQYXJhbWV0ZXJpdihDb250ZXh0
ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpw
YXJhbXMpOwogdm9pZCBTZXRUZXhQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwgVGV4dHVy
ZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKIHZvaWQgU2V0
VGV4UGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK3ZvaWQgU2V0VGV4UGFyYW1ldGVyeChD
b250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQg
cGFyYW0pOwordm9pZCBTZXRUZXhQYXJhbWV0ZXJ4dihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJl
ICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7CiAKIHZvaWQg
U2V0U2FtcGxlclBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwgU2FtcGxlciAqc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKIHZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmZ2
KENvbnRleHQgKmNvbnRleHQsIFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKTsKQEAgLTE3Nyw2ICsxODMsMTMgQEAgdm9pZCBRdWVyeVByb2dyYW1J
bnRlcmZhY2Vpdihjb25zdCBQcm9ncmFtICpwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKKworYW5nbGU6OlJlc3VsdCBTZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZW1vcnlPYmplY3QgKm1lbW9yeU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlNZW1vcnlP
YmplY3RQYXJhbWV0ZXJpdihjb25zdCBNZW1vcnlPYmplY3QgKm1lbW9yeU9iamVjdCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKwogLy8gR0xFUzEgZW11bGF0aW9uCiAKIENsaWVudFZl
cnRleEFycmF5VHlwZSBQYXJhbVRvVmVydGV4QXJyYXlUeXBlKEdMZW51bSBwYXJhbSk7CkBAIC0y
MzUsNyArMjQ4LDcgQEAgdm9pZCBTZXRQb2ludFBhcmFtZXRlcihHTEVTMVN0YXRlICpzdGF0ZSwg
UG9pbnRQYXJhbWV0ZXIgcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnAKIHZvaWQgR2V0UG9pbnRQYXJh
bWV0ZXIoY29uc3QgR0xFUzFTdGF0ZSAqc3RhdGUsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBHTGZs
b2F0ICpwYXJhbXMpOwogCiB2b2lkIFNldFBvaW50U2l6ZShHTEVTMVN0YXRlICpzdGF0ZSwgR0xm
bG9hdCBzaXplKTsKLXZvaWQgR2V0UG9pbnRTaXplKEdMRVMxU3RhdGUgKnN0YXRlLCBHTGZsb2F0
ICpzaXplT3V0KTsKK3ZvaWQgR2V0UG9pbnRTaXplKGNvbnN0IEdMRVMxU3RhdGUgKnN0YXRlLCBH
TGZsb2F0ICpzaXplT3V0KTsKIAogdW5zaWduZWQgaW50IEdldFRleFBhcmFtZXRlckNvdW50KEdM
ZW51bSBwbmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwCmluZGV4IDMyMDA0YTFhZjM0
MzY4OTUyNDMxNzc5ZGZlMjQ3ZGVlNjk4MzM1ZTIuLmEyZmNlMDcxZTY4Y2JkNWMzOTc2NTA4NDU3
MjI1ODg1MzA3MGNmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNwcApAQCAtMTksOTYgKzE5
LDYgQEAgQ29udGV4dEltcGw6OkNvbnRleHRJbXBsKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGds
OjpFcnJvclNldCAqZXJyb3JTZXQpCiAKIENvbnRleHRJbXBsOjp+Q29udGV4dEltcGwoKSB7fQog
Ci12b2lkIENvbnRleHRJbXBsOjpzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgs
IEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0K
LQotdm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBh
dGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsK
LX0KLQotdm9pZCBDb250ZXh0SW1wbDo6Y292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0
aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBVTlJFQUNIQUJMRSgpOwotfQotCi12b2lkIENv
bnRleHRJbXBsOjpjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBj
b3Zlck1vZGUpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0KLQotdm9pZCBDb250ZXh0SW1wbDo6
c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQot
ewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLXZvaWQgQ29udGV4dEltcGw6OnN0ZW5jaWxUaGVu
Q292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQotewot
ICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLXZvaWQgQ29udGV4dEltcGw6OmNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLXZvaWQgQ29udGV4
dEltcGw6OmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0
aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgVU5S
RUFDSEFCTEUoKTsKLX0KLQotdm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFu
Y2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLXZvaWQgQ29udGV4
dEltcGw6OnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQ
YXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17
Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0KLQotdm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0KLQot
dm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29u
c3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJl
ZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0KLQogdm9pZCBDb250ZXh0SW1w
bDo6aW52YWxpZGF0ZVRleHR1cmUoZ2w6OlRleHR1cmVUeXBlIHRhcmdldCkKIHsKICAgICBVTlJF
QUNIQUJMRSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaAppbmRleCA4MTJmYzliNTg5NWE5YjhmMjIz
MzNmMmRmMDk4NmFlZGJiNDJkNDY0Li45M2RmMmI4ZmMwOWVhZjczZmI4MWFmODdmNTVmNjVjMmM2
ZDFmMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaApAQCAtMTE1LDUyICsxMTUsNiBAQCBjbGFz
cyBDb250ZXh0SW1wbCA6IHB1YmxpYyBHTEltcGxGYWN0b3J5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpEcmF3RWxlbWVudHNUeXBlIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmluZGlyZWN0KSA9IDA7CiAKLSAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRoIGRy
YXdpbmcgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbEZpbGxQYXRoKGNvbnN0IGds
OjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMaW50IHJlZmVy
ZW5jZSwgR0x1aW50IG1hc2spOwotICAgIHZpcnR1YWwgdm9pZCBjb3ZlckZpbGxQYXRoKGNvbnN0
IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLSAgICB2aXJ0dWFsIHZvaWQgY292
ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0
aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
Y292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBjb3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0
aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotCiAgICAgLy8gRGV2aWNlIGxvc3MK
ICAgICB2aXJ0dWFsIGdsOjpHcmFwaGljc1Jlc2V0U3RhdHVzIGdldFJlc2V0U3RhdHVzKCkgPSAw
OwogCkBAIC0xNjksMTMgKzEyMywxNiBAQCBjbGFzcyBDb250ZXh0SW1wbCA6IHB1YmxpYyBHTElt
cGxGYWN0b3J5CiAgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9u
KCkgY29uc3QgPSAwOwogCiAgICAgLy8gRVhUX2RlYnVnX21hcmtlcgotICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29u
c3QgY2hhciAqbWFya2VyKSAgID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wR3JvdXBNYXJrZXIo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHZpcnR1YWwg
YW5nbGU6OlJlc3VsdCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKSA9IDA7CisgICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IHB1c2hHcm91cE1hcmtl
cihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSAgID0gMDsKKyAgICB2aXJ0dWFs
IGFuZ2xlOjpSZXN1bHQgcG9wR3JvdXBNYXJrZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogCiAgICAgLy8gS0hSX2RlYnVnCi0gICAgdmlydHVhbCB2b2lkIHB1
c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcg
Jm1lc3NhZ2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wRGVidWdHcm91cCgpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHZp
cnR1YWwgYW5nbGU6OlJlc3VsdCBwdXNoRGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCBwb3BEZWJ1Z0dy
b3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSAgPSAwOwogCiAgICAgLy8gS0hSX3BhcmFs
bGVsX3NoYWRlcl9jb21waWxlCiAgICAgdmlydHVhbCB2b2lkIHNldE1heFNoYWRlckNvbXBpbGVy
VGhyZWFkcyhHTHVpbnQgY291bnQpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0SURfYXV0b2dlbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdElEX2F1dG9nZW4uaApp
bmRleCA3NzY2MjNlOTUxZTE0MDVkYTRiYzliZDZkNzlkNDRkOTA0OWMyYmMyLi5iZTVmYWUyMjA3
NjQ0MmFhMTMwYzUyMTc5N2FjOWUzNjFhYmQ2MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0SURfYXV0b2dlbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRJRF9h
dXRvZ2VuLmgKQEAgLTEsNyArMSw3IEBACiAvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElU
LgogLy8gR2VuZXJhdGVkIGJ5IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBm
cm9tIGFuZ2xlX2Zvcm1hdF9kYXRhLmpzb24KIC8vCi0vLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIw
MjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtOTIsNiAr
OTIsMTAgQEAgZW51bSBjbGFzcyBGb3JtYXRJRAogICAgIEJDMl9SR0JBX1VOT1JNX1NSR0JfQkxP
Q0ssCiAgICAgQkMzX1JHQkFfVU5PUk1fQkxPQ0ssCiAgICAgQkMzX1JHQkFfVU5PUk1fU1JHQl9C
TE9DSywKKyAgICBCQzRfUkVEX1NOT1JNX0JMT0NLLAorICAgIEJDNF9SRURfVU5PUk1fQkxPQ0ss
CisgICAgQkM1X1JHX1NOT1JNX0JMT0NLLAorICAgIEJDNV9SR19VTk9STV9CTE9DSywKICAgICBC
UFRDX1JHQkFfVU5PUk1fQkxPQ0ssCiAgICAgQlBUQ19SR0JfU0lHTkVEX0ZMT0FUX0JMT0NLLAog
ICAgIEJQVENfUkdCX1VOU0lHTkVEX0ZMT0FUX0JMT0NLLApAQCAtMjM3LDcgKzI0MSw3IEBAIGVu
dW0gY2xhc3MgRm9ybWF0SUQKICAgICBYMlIxMEcxMEIxMF9VU0NBTEVEX1ZFUlRFWAogfTsKIAot
Y29uc3RleHByIHVpbnQzMl90IGtOdW1BTkdMRUZvcm1hdHMgPSAyMTg7Citjb25zdGV4cHIgdWlu
dDMyX3Qga051bUFOR0xFRm9ybWF0cyA9IDIyMjsKIAogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Gb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCmluZGV4IDUwMjlhN2Fm
NjMxZjg5OGI3MGM0NjQxNzFjZWVmNGNhNzVkNDQyYzUuLmVhZTBmMDFkNDBjNjFlNTY5N2M3MGU1
MzM5MDgwYWY5NGE3Zjg4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF90YWJsZV9hdXRv
Z2VuLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQu
CiAvLyBHZW5lcmF0ZWQgYnkgZ2VuX2FuZ2xlX2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZy
b20gYW5nbGVfZm9ybWF0X2RhdGEuanNvbgogLy8KLS8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAy
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC05OSw2ICs5
OSwxMCBAQCBjb25zdCBGb3JtYXQgZ0Zvcm1hdEluZm9UYWJsZVtdID0gewogICAgIHsgRm9ybWF0
SUQ6OkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDNfRVhULCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwgbnVs
bHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNiwgc3RkOjpudW1lcmljX2xpbWl0czxHTHVp
bnQ+OjptYXgoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBnbDo6VmVydGV4QXR0cmliVHlwZTo6SW52
YWxpZEVudW0gfSwKICAgICB7IEZvcm1hdElEOjpCQzNfUkdCQV9VTk9STV9CTE9DSywgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9BTkdMRSwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNiwgc3RkOjpudW1lcmlj
X2xpbWl0czxHTHVpbnQ+OjptYXgoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBnbDo6VmVydGV4QXR0
cmliVHlwZTo6SW52YWxpZEVudW0gfSwKICAgICB7IEZvcm1hdElEOjpCQzNfUkdCQV9VTk9STV9T
UkdCX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCwgR0xfQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9u
cywgbnVsbHB0ciwgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCksIHRydWUsIGZh
bHNlLCBmYWxzZSwgZ2w6OlZlcnRleEF0dHJpYlR5cGU6OkludmFsaWRFbnVtIH0sCisgICAgeyBG
b3JtYXRJRDo6QkM0X1JFRF9TTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JH
VEMxX0VYVCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwgbnVsbHB0ciwgTm9D
b3B5RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9TSUdORURfTk9STUFMSVpFRCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgOCwgc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSwg
dHJ1ZSwgZmFsc2UsIGZhbHNlLCBnbDo6VmVydGV4QXR0cmliVHlwZTo6SW52YWxpZEVudW0gfSwK
KyAgICB7IEZvcm1hdElEOjpCQzRfUkVEX1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JFRF9S
R1RDMV9FWFQsIEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwgbnVsbHB0ciwgTm9Db3B5RnVu
Y3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCA4LCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpLCB0cnVl
LCBmYWxzZSwgZmFsc2UsIGdsOjpWZXJ0ZXhBdHRyaWJUeXBlOjpJbnZhbGlkRW51bSB9LAorICAg
IHsgRm9ybWF0SUQ6OkJDNV9SR19TTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVE
X0dSRUVOX1JHVEMyX0VYVCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VY
VCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9TSUdORURf
Tk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8
R0x1aW50Pjo6bWF4KCksIHRydWUsIGZhbHNlLCBmYWxzZSwgZ2w6OlZlcnRleEF0dHJpYlR5cGU6
OkludmFsaWRFbnVtIH0sCisgICAgeyBGb3JtYXRJRDo6QkM1X1JHX1VOT1JNX0JMT0NLLCBHTF9D
T01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQsIEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JH
VEMyX0VYVCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNiwgc3RkOjpudW1lcmlj
X2xpbWl0czxHTHVpbnQ+OjptYXgoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBnbDo6VmVydGV4QXR0
cmliVHlwZTo6SW52YWxpZEVudW0gfSwKICAgICB7IEZvcm1hdElEOjpCUFRDX1JHQkFfVU5PUk1f
QkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVCwgR0xfQ09NUFJFU1NFRF9S
R0JBX0JQVENfVU5PUk1fRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIG51
bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2LCBz
dGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGds
OjpWZXJ0ZXhBdHRyaWJUeXBlOjpJbnZhbGlkRW51bSB9LAogICAgIHsgRm9ybWF0SUQ6OkJQVENf
UkdCX1NJR05FRF9GTE9BVF9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0JfQlBUQ19TSUdORURfRkxP
QVRfRVhULCBHTF9DT01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVF9FWFQsIG51bGxwdHIs
IE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgbnVsbHB0ciwgR0xfRkxPQVQsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDE2LCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpLCB0cnVlLCBm
YWxzZSwgZmFsc2UsIGdsOjpWZXJ0ZXhBdHRyaWJUeXBlOjpGbG9hdCB9LAogICAgIHsgRm9ybWF0
SUQ6OkJQVENfUkdCX1VOU0lHTkVEX0ZMT0FUX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQl9CUFRD
X1VOU0lHTkVEX0ZMT0FUX0VYVCwgR0xfQ09NUFJFU1NFRF9SR0JfQlBUQ19VTlNJR05FRF9GTE9B
VF9FWFQsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgbnVsbHB0ciwgR0xfRkxP
QVQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2LCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46
Om1heCgpLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGdsOjpWZXJ0ZXhBdHRyaWJUeXBlOjpGbG9hdCB9
LApAQCAtMjg0LDYgKzI4OCwxMCBAQCBGb3JtYXRJRCBGb3JtYXQ6OkludGVybmFsRm9ybWF0VG9J
RChHTGVudW0gaW50ZXJuYWxGb3JtYXQpCiAgICAgICAgICAgICByZXR1cm4gRm9ybWF0SUQ6OkI4
RzhSOFg4X1VOT1JNOwogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUjExX0VBQzoKICAgICAg
ICAgICAgIHJldHVybiBGb3JtYXRJRDo6RUFDX1IxMV9VTk9STV9CTE9DSzsKKyAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgICAgICByZXR1cm4g
Rm9ybWF0SUQ6OkJDNV9SR19VTk9STV9CTE9DSzsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JFRF9SR1RDMV9FWFQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0SUQ6OkJDNF9SRURfVU5P
Uk1fQkxPQ0s7CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKICAgICAgICAg
ICAgIHJldHVybiBGb3JtYXRJRDo6RUFDX1IxMUcxMV9VTk9STV9CTE9DSzsKICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjoKQEAgLTM2NCw2ICszNzIsMTAgQEAgRm9ybWF0SUQg
Rm9ybWF0OjpJbnRlcm5hbEZvcm1hdFRvSUQoR0xlbnVtIGludGVybmFsRm9ybWF0KQogICAgICAg
ICAgICAgcmV0dXJuIEZvcm1hdElEOjpCQzFfUkdCX1VOT1JNX0JMT0NLOwogICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6CiAgICAgICAgICAgICByZXR1cm4gRm9ybWF0
SUQ6OkVBQ19SMTFfU05PUk1fQkxPQ0s7CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdO
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXRJRDo6QkM1
X1JHX1NOT1JNX0JMT0NLOworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9S
R1RDMV9FWFQ6CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0SUQ6OkJDNF9SRURfU05PUk1fQkxP
Q0s7CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CiAgICAgICAg
ICAgICByZXR1cm4gRm9ybWF0SUQ6OkVBQ19SMTFHMTFfU05PUk1fQkxPQ0s7CiAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0dM
SW1wbEZhY3RvcnkuaAppbmRleCA5YTA1NGY2YTRiZjE1MjJiZjc3ZjZiMDFiMGYyMjUxNDA5ODQ2
ZDk2Li4xOTk1MTk3YjA2YjkxNGMwYTYyZmI1YWRhYmNkYjc1MzI1YzBkNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9HTEltcGxGYWN0b3J5LmgKQEAgLTkyLDggKzkyLDYgQEAgY2xhc3MgR0xJbXBsRmFjdG9yeSA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIC8vIFByb2dyYW0gUGlwZWxpbmUgb2JqZWN0IGNyZWF0
aW9uCiAgICAgdmlydHVhbCBQcm9ncmFtUGlwZWxpbmVJbXBsICpjcmVhdGVQcm9ncmFtUGlwZWxp
bmUoY29uc3QgZ2w6OlByb2dyYW1QaXBlbGluZVN0YXRlICZkYXRhKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpID0g
MDsKLQogICAgIC8vIE1lbW9yeSBvYmplY3QgY3JlYXRpb24KICAgICB2aXJ0dWFsIE1lbW9yeU9i
amVjdEltcGwgKmNyZWF0ZU1lbW9yeU9iamVjdCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL01lbW9yeU9iamVjdEltcGwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9NZW1vcnlP
YmplY3RJbXBsLmgKaW5kZXggZWRlYzExODQ1Mzg0NWZkYTQ1OGJkOTE3MWM2Mzg2OTU0MjQxMWZi
OS4uOWJiNDE1NDYwNzQyMGJhMTM4NDZhMGIwOTA4NmZmYjI5Mjc0ODZlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL01lbW9yeU9iamVj
dEltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvTWVtb3J5T2JqZWN0SW1wbC5oCkBAIC0yOSwxMCArMjksMTYgQEAgY2xhc3MgTWVtb3J5T2Jq
ZWN0SW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgdmlydHVhbCB2b2lkIG9uRGVzdHJv
eShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgPSAwOwogCisgICAgdmlydHVhbCBhbmdsZTo6
UmVzdWx0IHNldERlZGljYXRlZE1lbW9yeShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9v
bCBkZWRpY2F0ZWRNZW1vcnkpID0gMDsKKwogICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCBpbXBv
cnRGZChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50NjQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZmQpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZmQpICAgICAgICAgICAgICAgID0gMDsKKyAgICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQg
aW1wb3J0WmlyY29uSGFuZGxlKGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKSA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwN2NiYzU3NGM2NjY5NzNiM2I1ZDExMDRiNDNm
NmY5ZWU2ZTRjMjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBs
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMDIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBQYXRoSW1w
bC5oOiBEZWZpbmVzIHRoZSBQYXRoIGltcGxlbWVudGF0aW9uIGludGVyZmFjZSBmb3IKLS8vIENI
Uk9NSVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggb2JqZWN0cy4KLQotI2lmbmRlZiBMSUJBTkdMRV9S
RU5ERVJFUl9QQVRISU1QTF9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9QQVRISU1QTF9I
XwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1jbGFz
cyBQYXRoSW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgdmlydHVh
bCB+UGF0aEltcGwoKSB7fQotCi0gICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IHNldENvbW1hbmRz
KEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UGF0aFBhcmFtZXRlcihHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpID0gMDsKLX07Ci0K
LX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1BBVEhJ
TVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvUHJvZ3JhbUltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oCmluZGV4IDJiYzA3MDQwMDE0NDNiNWIxOWVhMzY3
NjZkMDhkN2MxNjY4ZDUwYTkuLmNmNmVlNjZlMTFkZWFjNTJmYTk4MWZjMDMwZjllODI3YzhkMGYz
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9Qcm9ncmFtSW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oCkBAIC0xNDUsMTMgKzE0NSw2IEBAIGNsYXNzIFBy
b2dyYW1JbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpwYXJhbXMpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMDsKIAotICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0gICAgLy8gU2V0IHBh
cmFtZXRlcnMgdG8gY29udHJvbCBmcmFnbWVudCBzaGFkZXIgaW5wdXQgdmFyaWFibGUgaW50ZXJw
b2xhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBz
dGQ6OnN0cmluZyAmaW5wdXROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSA9IDA7Ci0KICAgICAvLyBJbXBsZW1l
bnRhdGlvbi1zcGVjaWZpYyBtZXRob2QgZm9yIGlnbm9yaW5nIHVucmVmZXJlbmNlZCB1bmlmb3Jt
cy4gU29tZSBpbXBsZW1lbnRhdGlvbnMgbWF5CiAgICAgLy8gcGVyZm9ybSBtb3JlIGV4dGVuc2l2
ZSBhbmFseXNpcyBhbmQgaWdub3JlIHNvbWUgbG9jYXRpb25zIHRoYXQgQU5HTEUgZG9lc24ndCBk
ZXRlY3QgYXMKICAgICAvLyB1bnJlZmVyZW5jZWQuIFRoaXMgbWV0aG9kIGlzIG5vdCByZXF1aXJl
ZCB0byBiZSBvdmVycmlkZW4gYnkgYSBiYWNrLWVuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJUYXJnZXRDYWNoZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlclRhcmdl
dENhY2hlLmgKaW5kZXggNTI3NDk2MzJjOGFkMzY0NDMxM2RlZDg3MDQ1NTUzZWQ1YzcxZTdhZC4u
NDlhNGFlMTQ3ZTIzYTkwOWQxZGI4YTRkM2E0Zjg3NzJiN2Y3YmRjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlclRhcmdldENh
Y2hlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlclRhcmdldENhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUmVuZGVyVGFyZ2V0
Q2FjaGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB1c2luZyBSZW5kZXJUYXJnZXRB
cnJheSA9IGdsOjpBdHRhY2htZW50QXJyYXk8UmVuZGVyVGFyZ2V0VCAqPjsKIAogICAgIGNvbnN0
IFJlbmRlclRhcmdldEFycmF5ICZnZXRDb2xvcnMoKSBjb25zdDsKLSAgICBSZW5kZXJUYXJnZXRU
ICpnZXREZXB0aFN0ZW5jaWwoKSBjb25zdDsKKyAgICBSZW5kZXJUYXJnZXRUICpnZXREZXB0aFN0
ZW5jaWwoYm9vbCBhbGxvd0ZlZWRiYWNrTG9vcCkgY29uc3Q7CiAKICAgICBSZW5kZXJUYXJnZXRU
ICpnZXRDb2xvckRyYXcoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlLCBzaXplX3Qg
Y29sb3JJbmRleCkgY29uc3Q7CiAgICAgUmVuZGVyVGFyZ2V0VCAqZ2V0Q29sb3JSZWFkKGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgY29uc3Q7CkBAIC01MywyMCArNTMsMTggQEAg
Y2xhc3MgUmVuZGVyVGFyZ2V0Q2FjaGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICphdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlbmRlclRhcmdldFQgKipjYWNoZWRSZW5kZXJUYXJnZXQpOwogCi0gICAg
UmVuZGVyVGFyZ2V0VCAqbVJlYWRSZW5kZXJUYXJnZXQ7Ci0gICAgZ2w6OkF0dGFjaG1lbnRBcnJh
eTxSZW5kZXJUYXJnZXRUICo+IG1Db2xvclJlbmRlclRhcmdldHM7CisgICAgUmVuZGVyVGFyZ2V0
VCAqbVJlYWRSZW5kZXJUYXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOwor
ICAgIGdsOjpBdHRhY2htZW50QXJyYXk8UmVuZGVyVGFyZ2V0VCAqPiBtQ29sb3JSZW5kZXJUYXJn
ZXRzID0ge307CiAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGEgc2luZ2xlIERlcHRoL1N0ZW5jaWwg
UmVuZGVyVGFyZ2V0IGN1cnJlbnRseS4KLSAgICBSZW5kZXJUYXJnZXRUICptRGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0OworICAgIGJvb2wgbURlcHRoU3RlbmNpbEZlZWRiYWNrTG9vcCAgICAgICAg
ICAgPSBmYWxzZTsKKyAgICBSZW5kZXJUYXJnZXRUICptRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
ID0gbnVsbHB0cjsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZW5kZXJUYXJnZXRUPgotUmVu
ZGVyVGFyZ2V0Q2FjaGU8UmVuZGVyVGFyZ2V0VD46OlJlbmRlclRhcmdldENhY2hlKCkKLSAgICA6
IG1SZWFkUmVuZGVyVGFyZ2V0e251bGxwdHJ9LCBtQ29sb3JSZW5kZXJUYXJnZXRze3tudWxscHRy
fX0sIG1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQobnVsbHB0cikKLXt9CitSZW5kZXJUYXJnZXRD
YWNoZTxSZW5kZXJUYXJnZXRUPjo6UmVuZGVyVGFyZ2V0Q2FjaGUoKSA9IGRlZmF1bHQ7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBSZW5kZXJUYXJnZXRUPgotUmVuZGVyVGFyZ2V0Q2FjaGU8UmVuZGVy
VGFyZ2V0VD46On5SZW5kZXJUYXJnZXRDYWNoZSgpCi17fQorUmVuZGVyVGFyZ2V0Q2FjaGU8UmVu
ZGVyVGFyZ2V0VD46On5SZW5kZXJUYXJnZXRDYWNoZSgpID0gZGVmYXVsdDsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFJlbmRlclRhcmdldFQ+CiBhbmdsZTo6UmVzdWx0IFJlbmRlclRhcmdldENhY2hl
PFJlbmRlclRhcmdldFQ+Ojp1cGRhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCkBAIC0x
MTQsOSArMTEyLDkgQEAgY29uc3QgZ2w6OkF0dGFjaG1lbnRBcnJheTxSZW5kZXJUYXJnZXRUICo+
ICZSZW5kZXJUYXJnZXRDYWNoZTxSZW5kZXJUYXJnZXRUPjo6Z2UKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFJlbmRlclRhcmdldFQ+Ci1SZW5kZXJUYXJnZXRUICpSZW5kZXJUYXJnZXRDYWNoZTxS
ZW5kZXJUYXJnZXRUPjo6Z2V0RGVwdGhTdGVuY2lsKCkgY29uc3QKK1JlbmRlclRhcmdldFQgKlJl
bmRlclRhcmdldENhY2hlPFJlbmRlclRhcmdldFQ+OjpnZXREZXB0aFN0ZW5jaWwoYm9vbCBhbGxv
d0ZlZWRiYWNrTG9vcCkgY29uc3QKIHsKLSAgICByZXR1cm4gbURlcHRoU3RlbmNpbFJlbmRlclRh
cmdldDsKKyAgICByZXR1cm4gKGFsbG93RmVlZGJhY2tMb29wIHx8ICFtRGVwdGhTdGVuY2lsRmVl
ZGJhY2tMb29wKSA/IG1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgOiBudWxscHRyOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVuZGVyVGFyZ2V0VD4KQEAgLTE0OSw2ICsxNDcsNyBAQCBhbmds
ZTo6UmVzdWx0IFJlbmRlclRhcmdldENhY2hlPFJlbmRlclRhcmdldFQ+Ojp1cGRhdGVEZXB0aFN0
ZW5jaWxSZW5kZXJUYXJnZXQoCiAgICAgY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQogeworICAgIG1EZXB0aFN0ZW5jaWxG
ZWVkYmFja0xvb3AgPSBzdGF0ZS5oYXNEZXB0aFN0ZW5jaWxGZWVkYmFja0xvb3AoKTsKICAgICBy
ZXR1cm4gdXBkYXRlQ2FjaGVkUmVuZGVyVGFyZ2V0KGNvbnRleHQsIHN0YXRlLmdldERlcHRoT3JT
dGVuY2lsQXR0YWNobWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1NlbWFwaG9yZUltcGwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TZW1hcGhvcmVJbXBsLmgK
aW5kZXggMDU5ZWExNTdiNzUwYjdhM2U4NmJhZjk3YjkwNGMwNjRmYTdmNTkwZS4uNWJlZWJhMGQw
YTU2NDgwZTdjN2NmNjE2ZThmMmMxZGQ3ZDM4ZTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1NlbWFwaG9yZUltcGwuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU2VtYXBob3JlSW1w
bC5oCkBAIC0zMiw2ICszMiwxMCBAQCBjbGFzcyBTZW1hcGhvcmVJbXBsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAKICAgICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgaW1wb3J0RmQoZ2w6OkNvbnRleHQg
KmNvbnRleHQsIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsIEdMaW50IGZkKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgaW1wb3J0WmlyY29uSGFuZGxlKGdsOjpDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpID0gMDsKKwogICAgIHZpcnR1YWwgYW5nbGU6OlJl
c3VsdCB3YWl0KGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpCdWZmZXJCYXJyaWVyVmVjdG9yICZidWZmZXJCYXJyaWVycywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUJhcnJpZXJWZWN0
b3IgJnRleHR1cmVCYXJyaWVycykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9kYXRhLmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X2Rh
dGEuanNvbgppbmRleCA0MTQ5Mjc3MWI3NDBmMzFiMjU1NWI3YjI2NjQxN2YyMzhjMzBhZGI4Li43
MTY3YTJhZDI1MzEwOWQ2OGEwYzNkZjM4OGEyMzY0MmExZDQ1NzIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X2Rh
dGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvYW5nbGVfZm9ybWF0X2RhdGEuanNvbgpAQCAtMjAxLDYgKzIwMSwxOCBAQAogICAiQkMzX1JH
QkFfVU5PUk1fU1JHQl9CTE9DSyI6IHsKICAgICAiYmxvY2tQaXhlbEJ5dGVzIjogIjE2IgogICB9
LAorICAiQkM0X1JFRF9VTk9STV9CTE9DSyI6IHsKKyAgICAiYmxvY2tQaXhlbEJ5dGVzIjogIjgi
CisgIH0sCisgICJCQzRfUkVEX1NOT1JNX0JMT0NLIjogeworICAgICJibG9ja1BpeGVsQnl0ZXMi
OiAiOCIKKyAgfSwKKyAgIkJDNV9SR19VTk9STV9CTE9DSyI6IHsKKyAgICAiYmxvY2tQaXhlbEJ5
dGVzIjogIjE2IgorICB9LAorICAiQkM1X1JHX1NOT1JNX0JMT0NLIjogeworICAgICJibG9ja1Bp
eGVsQnl0ZXMiOiAiMTYiCisgIH0sCiAgICJCUFRDX1NSR0JfQUxQSEFfVU5PUk1fQkxPQ0siOiB7
CiAgICAgImJsb2NrUGl4ZWxCeXRlcyI6ICIxNiIKICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVf
Zm9ybWF0X21hcC5qc29uCmluZGV4IDk2OGM1N2E3NDkyMDE4NGUzMzA0ZWQ5MTY5M2I5YWE5Y2Uy
NWJkYmYuLjMxOGJhMzg3NTYyZDU2YTM3NDU0ZThlM2JhYjRiYTRhNmM0ODljOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9m
b3JtYXRfbWFwLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbgpAQCAtNzQsNiArNzQsMTAgQEAKICAgWyAi
R0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQiLCAiQkMyX1JHQkFfVU5PUk1f
U1JHQl9CTE9DSyIgXSwKICAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9F
WFQiLCAiQkMzX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyIgXSwKICAgWyAiR0xfQ09NUFJFU1NFRF9T
UkdCX1MzVENfRFhUMV9FWFQiLCAiQkMxX1JHQl9VTk9STV9TUkdCX0JMT0NLIiBdLAorICBbICJH
TF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQiLCAiQkM0X1JFRF9VTk9STV9CTE9DSyIgXSwKKyAg
WyAiR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCIsICJCQzRfUkVEX1NOT1JNX0JM
T0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQiLCAiQkM1X1JH
X1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdU
QzJfRVhUIiwgIkJDNV9SR19TTk9STV9CTE9DSyIgXSwKICAgWyAiR0xfQ09NUFJFU1NFRF9SR0JB
X0JQVENfVU5PUk1fRVhUIiwgIkJQVENfUkdCQV9VTk9STV9CTE9DSyIgXSwKICAgWyAiR0xfQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX0JQVENfVU5PUk1fRVhUIiwgIkJQVENfU1JHQl9BTFBIQV9VTk9S
TV9CTE9DSyIgXSwKICAgWyAiR0xfQ09NUFJFU1NFRF9SR0JfQlBUQ19TSUdORURfRkxPQVRfRVhU
IiwgIkJQVENfUkdCX1NJR05FRF9GTE9BVF9CTE9DSyIgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5h
bWljSExTTC5jcHAKaW5kZXggMjdiNDRjZTM0YjhjNTc5MTZmMGJkOTgyZjczOTM5YTUwMjBkODFh
Ny4uNjY4MjI3MmI0NDNjNWU0YmU2MjQyYjRlNDRjMTlmNjM2MjRlNGJiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWlj
SExTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9EeW5hbWljSExTTC5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIER5bmFtaWNI
TFNMOjpnZW5lcmF0ZVZhcnlpbmdMaW5rSExTTChjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWlu
Z1BhY2tpbmcsCiAgICAgZm9yIChHTHVpbnQgcmVnaXN0ZXJJbmRleCA9IDB1OyByZWdpc3Rlcklu
ZGV4IDwgcmVnaXN0ZXJJbmZvcy5zaXplKCk7ICsrcmVnaXN0ZXJJbmRleCkKICAgICB7CiAgICAg
ICAgIGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmcmVnaXN0ZXJJbmZvID0gcmVnaXN0ZXJJ
bmZvc1tyZWdpc3RlckluZGV4XTsKLSAgICAgICAgY29uc3QgYXV0byAmdmFyeWluZyAgICAgICAg
ICAgICAgICAgICAgICAgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZhcnlpbmc7Cisg
ICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgICAgICAgICAgICAgICAgICAgICAgID0gcmVnaXN0
ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZhcnlpbmcoKTsKICAgICAgICAgQVNTRVJUKCF2YXJ5aW5n
LmlzU3RydWN0KCkpOwogCiAgICAgICAgIC8vIFRPRE86IEFkZCBjaGVja3MgdG8gZW5zdXJlIEQz
RCBpbnRlcnBvbGF0aW9uIG1vZGlmaWVycyBkb24ndCByZXN1bHQgaW4gdG9vIG1hbnkKQEAgLTU5
OSwxNCArNTk5LDE1IEBAIHZvaWQgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlua0hMU0wo
Y29uc3QgZ2w6OkNhcHMgJmNhcHMsCiAgICAgewogICAgICAgICBjb25zdCBQYWNrZWRWYXJ5aW5n
UmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA9IHJlZ2lzdGVySW5mb3NbcmVnaXN0ZXJJbmRleF07CiAg
ICAgICAgIGNvbnN0IGF1dG8gJnBhY2tlZFZhcnlpbmcgICAgICAgICAgICAgICAgID0gKnJlZ2lz
dGVySW5mby5wYWNrZWRWYXJ5aW5nOwotICAgICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nICAgICAg
ICAgICAgICAgICAgICAgICA9ICpwYWNrZWRWYXJ5aW5nLnZhcnlpbmc7CisgICAgICAgIGNvbnN0
IGF1dG8gJnZhcnlpbmcgICAgICAgICAgICAgICAgICAgICAgID0gKnBhY2tlZFZhcnlpbmcuZnJv
bnRWYXJ5aW5nLnZhcnlpbmc7CiAgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc1N0cnVjdCgpKTsK
IAogICAgICAgICB2ZXJ0ZXhHZW5lcmF0ZU91dHB1dCA8PCAiICAgIG91dHB1dC52IiA8PCByZWdp
c3RlckluZGV4IDw8ICIgPSAiOwogCiAgICAgICAgIGlmIChwYWNrZWRWYXJ5aW5nLmlzU3RydWN0
RmllbGQoKSkKICAgICAgICAgewotICAgICAgICAgICAgdmVydGV4R2VuZXJhdGVPdXRwdXQgPDwg
RGVjb3JhdGVWYXJpYWJsZShwYWNrZWRWYXJ5aW5nLnBhcmVudFN0cnVjdE5hbWUpIDw8ICIuIjsK
KyAgICAgICAgICAgIHZlcnRleEdlbmVyYXRlT3V0cHV0IDw8IERlY29yYXRlVmFyaWFibGUocGFj
a2VkVmFyeWluZy5mcm9udFZhcnlpbmcucGFyZW50U3RydWN0TmFtZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICIuIjsKICAgICAgICAgfQogCiAgICAgICAgIHZlcnRleEdl
bmVyYXRlT3V0cHV0IDw8IERlY29yYXRlVmFyaWFibGUodmFyeWluZy5uYW1lKTsKQEAgLTc5OCwx
OSArNzk5LDI4IEBAIHZvaWQgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlua0hMU0woY29u
c3QgZ2w6OkNhcHMgJmNhcHMsCiAgICAgewogICAgICAgICBjb25zdCBQYWNrZWRWYXJ5aW5nUmVn
aXN0ZXIgJnJlZ2lzdGVySW5mbyA9IHJlZ2lzdGVySW5mb3NbcmVnaXN0ZXJJbmRleF07CiAgICAg
ICAgIGNvbnN0IGF1dG8gJnBhY2tlZFZhcnlpbmcgICAgICAgICAgICAgICAgID0gKnJlZ2lzdGVy
SW5mby5wYWNrZWRWYXJ5aW5nOwotICAgICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nICAgICAgICAg
ICAgICAgICAgICAgICA9ICpwYWNrZWRWYXJ5aW5nLnZhcnlpbmc7CisKKyAgICAgICAgLy8gRG9u
J3QgcmVmZXJlbmNlIFZTLW9ubHkgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIGluIHRoZSBQ
Uy4KKyAgICAgICAgaWYgKHBhY2tlZFZhcnlpbmcudmVydGV4T25seSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGF1dG8gJnZh
cnlpbmcgPSAqcGFja2VkVmFyeWluZy5iYWNrVmFyeWluZy52YXJ5aW5nOwogICAgICAgICBBU1NF
UlQoIXZhcnlpbmcuaXNCdWlsdEluKCkgJiYgIXZhcnlpbmcuaXNTdHJ1Y3QoKSk7CiAKLSAgICAg
ICAgLy8gRG9uJ3QgcmVmZXJlbmNlIFZTLW9ubHkgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdz
IGluIHRoZSBQUy4gTm90ZSB0aGF0IHdlJ3JlIHJlbHlpbmcgb24KLSAgICAgICAgLy8gdGhhdCB0
aGUgYWN0aXZlIGZsYWcgaXMgc2V0IGFjY29yZGluZyB0byB1c2FnZSBpbiB0aGUgZnJhZ21lbnQg
c2hhZGVyLgotICAgICAgICBpZiAocGFja2VkVmFyeWluZy52ZXJ0ZXhPbmx5KCkgfHwgIXZhcnlp
bmcuYWN0aXZlKQorICAgICAgICAvLyBOb3RlIHRoYXQgd2UncmUgcmVseWluZyBvbiB0aGF0IHRo
ZSBhY3RpdmUgZmxhZyBpcyBzZXQgYWNjb3JkaW5nIHRvIHVzYWdlIGluIHRoZSBmcmFnbWVudAor
ICAgICAgICAvLyBzaGFkZXIuCisgICAgICAgIGlmICghdmFyeWluZy5hY3RpdmUpCisgICAgICAg
IHsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAgICAgICAgcGl4ZWxQcm9s
b2d1ZSA8PCAiICAgICI7CiAKICAgICAgICAgaWYgKHBhY2tlZFZhcnlpbmcuaXNTdHJ1Y3RGaWVs
ZCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBwaXhlbFByb2xvZ3VlIDw8IERlY29yYXRlVmFy
aWFibGUocGFja2VkVmFyeWluZy5wYXJlbnRTdHJ1Y3ROYW1lKSA8PCAiLiI7CisgICAgICAgICAg
ICBwaXhlbFByb2xvZ3VlIDw8IERlY29yYXRlVmFyaWFibGUocGFja2VkVmFyeWluZy5iYWNrVmFy
eWluZy5wYXJlbnRTdHJ1Y3ROYW1lKSA8PCAiLiI7CiAgICAgICAgIH0KIAogICAgICAgICBwaXhl
bFByb2xvZ3VlIDw8IERlY29yYXRlVmFyaWFibGUodmFyeWluZy5uYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVi
dWZmZXJEM0QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKaW5kZXggZjVhOTAzMjU2MWYzMDZjZDg0MWNkZWZk
MDEzMzEzMjUzZDZiYThkYi4uYjc4MmZhN2M3ZmYyNzg2OWYyZTVlMjBkNDIyMzllOTliYmY1ODYz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKQEAgLTM0LDE4ICsz
NCwxMCBAQCBDbGVhclBhcmFtZXRlcnMgR2V0Q2xlYXJQYXJhbWV0ZXJzKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsIEdMYml0ZmllbGQgbWFzaykKICAgICBDbGVhclBhcmFtZXRlcnMgY2xlYXJQYXJh
bXM7CiAgICAgbWVtc2V0KCZjbGVhclBhcmFtcywgMCwgc2l6ZW9mKENsZWFyUGFyYW1ldGVycykp
OwogCi0gICAgY29uc3QgYXV0byAmYmxlbmRTdGF0ZSA9IHN0YXRlLmdldEJsZW5kU3RhdGUoKTsK
KyAgICBjb25zdCBhdXRvICZibGVuZFN0YXRlQXJyYXkgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlQXJy
YXkoKTsKIAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGNsZWFy
UGFyYW1zLmNsZWFyQ29sb3IpOyBpKyspCi0gICAgewotICAgICAgICBjbGVhclBhcmFtcy5jbGVh
ckNvbG9yW2ldID0gZmFsc2U7Ci0gICAgfQogICAgIGNsZWFyUGFyYW1zLmNvbG9yRiAgICAgICAg
ICAgPSBzdGF0ZS5nZXRDb2xvckNsZWFyVmFsdWUoKTsKICAgICBjbGVhclBhcmFtcy5jb2xvclR5
cGUgICAgICAgID0gR0xfRkxPQVQ7Ci0gICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrUmVkICAgICA9
IGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkOwotICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVu
ICAgPSBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuOwotICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFz
a0JsdWUgICAgPSBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWU7Ci0gICAgY2xlYXJQYXJhbXMuY29s
b3JNYXNrQWxwaGEgICA9IGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGE7CiAgICAgY2xlYXJQYXJh
bXMuY2xlYXJEZXB0aCAgICAgICA9IGZhbHNlOwogICAgIGNsZWFyUGFyYW1zLmRlcHRoVmFsdWUg
ICAgICAgPSBzdGF0ZS5nZXREZXB0aENsZWFyVmFsdWUoKTsKICAgICBjbGVhclBhcmFtcy5jbGVh
clN0ZW5jaWwgICAgID0gZmFsc2U7CkBAIC01NSwxNSArNDcsMTYgQEAgQ2xlYXJQYXJhbWV0ZXJz
IEdldENsZWFyUGFyYW1ldGVycyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGJpdGZpZWxkIG1h
c2spCiAgICAgY2xlYXJQYXJhbXMuc2Npc3NvciAgICAgICAgICA9IHN0YXRlLmdldFNjaXNzb3Io
KTsKIAogICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBzdGF0
ZS5nZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICBpZiAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9C
SVQpCisgICAgY29uc3QgYm9vbCBjbGVhckNvbG9yID0KKyAgICAgICAgKG1hc2sgJiBHTF9DT0xP
Ul9CVUZGRVJfQklUKSAmJiBmcmFtZWJ1ZmZlck9iamVjdC0+aGFzRW5hYmxlZERyYXdCdWZmZXIo
KTsKKyAgICBBU1NFUlQoYmxlbmRTdGF0ZUFycmF5LnNpemUoKSA9PSBnbDo6SU1QTEVNRU5UQVRJ
T05fTUFYX0RSQVdfQlVGRkVSUyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibGVuZFN0
YXRlQXJyYXkuc2l6ZSgpOyBpKyspCiAgICAgewotICAgICAgICBpZiAoZnJhbWVidWZmZXJPYmpl
Y3QtPmhhc0VuYWJsZWREcmF3QnVmZmVyKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGNsZWFyUGFyYW1zLmNsZWFyQ29sb3Ip
OyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY2xlYXJD
b2xvcltpXSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgY2xlYXJQ
YXJhbXMuY2xlYXJDb2xvcltpXSAgICAgPSBjbGVhckNvbG9yOworICAgICAgICBjbGVhclBhcmFt
cy5jb2xvck1hc2tSZWRbaV0gICA9IGJsZW5kU3RhdGVBcnJheVtpXS5jb2xvck1hc2tSZWQ7Cisg
ICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuW2ldID0gYmxlbmRTdGF0ZUFycmF5W2ld
LmNvbG9yTWFza0dyZWVuOworICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlW2ldICA9
IGJsZW5kU3RhdGVBcnJheVtpXS5jb2xvck1hc2tCbHVlOworICAgICAgICBjbGVhclBhcmFtcy5j
b2xvck1hc2tBbHBoYVtpXSA9IGJsZW5kU3RhdGVBcnJheVtpXS5jb2xvck1hc2tBbHBoYTsKICAg
ICB9CiAKICAgICBpZiAobWFzayAmIEdMX0RFUFRIX0JVRkZFUl9CSVQpCkBAIC0xMTQsNyArMTA3
LDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlckQzRDo6Y2xlYXJCdWZmZXJmdihjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCwKIAogICAgIGlmIChidWZmZXIgPT0gR0xfQ09MT1IpCiAgICAg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShjbGVhclBh
cmFtcy5jbGVhckNvbG9yKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGNsZWFyUGFyYW1zLmNsZWFyQ29sb3Iuc2l6ZSgpOyBpKyspCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGNsZWFyUGFyYW1zLmNsZWFyQ29sb3JbaV0gPSAoZHJhd2J1ZmZlciA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KGkpKTsKICAgICAgICAgfQpAQCAtMTM4LDcgKzEzMSw3IEBAIGFuZ2xlOjpSZXN1
bHQgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LAogewogICAgIC8vIGdsQ2xlYXJCdWZmZXJ1aXYgY2FuIG9ubHkgYmUgY2FsbGVkIHRvIGNs
ZWFyIGEgY29sb3IgYnVmZmVyCiAgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0
Q2xlYXJQYXJhbWV0ZXJzKGNvbnRleHQtPmdldFN0YXRlKCksIDApOwotICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGNsZWFyUGFyYW1zLmNsZWFyQ29sb3IpOyBpKysp
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjbGVhclBhcmFtcy5jbGVhckNvbG9y
LnNpemUoKTsgaSsrKQogICAgIHsKICAgICAgICAgY2xlYXJQYXJhbXMuY2xlYXJDb2xvcltpXSA9
IChkcmF3YnVmZmVyID09IHN0YXRpY19jYXN0PGludD4oaSkpOwogICAgIH0KQEAgLTE1OCw3ICsx
NTEsNyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcml2KGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgaWYgKGJ1ZmZlciA9PSBHTF9DT0xPUikKICAg
ICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGNsZWFy
UGFyYW1zLmNsZWFyQ29sb3IpOyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgY2xlYXJQYXJhbXMuY2xlYXJDb2xvci5zaXplKCk7IGkrKykKICAgICAgICAgewogICAg
ICAgICAgICAgY2xlYXJQYXJhbXMuY2xlYXJDb2xvcltpXSA9IChkcmF3YnVmZmVyID09IHN0YXRp
Y19jYXN0PGludD4oaSkpOwogICAgICAgICB9CkBAIC0zNTUsNiArMzQ4LDcgQEAgY29uc3QgZ2w6
OkF0dGFjaG1lbnRMaXN0ICZGcmFtZWJ1ZmZlckQzRDo6Z2V0Q29sb3JBdHRhY2htZW50c0ZvclJl
bmRlcihjb25zdCBnbDoKIAogICAgIC8vIERvZXMgbm90IGFjdHVhbGx5IGZyZWUgbWVtb3J5CiAg
ICAgZ2w6OkF0dGFjaG1lbnRMaXN0IGNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXI7CisgICAgbUNv
bG9yQXR0YWNobWVudHNGb3JSZW5kZXJNYXNrLnJlc2V0KCk7CiAKICAgICBjb25zdCBhdXRvICZj
b2xvckF0dGFjaG1lbnRzID0gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudHMoKTsKICAgICBjb25z
dCBhdXRvICZkcmF3QnVmZmVyU3RhdGVzID0gbVN0YXRlLmdldERyYXdCdWZmZXJTdGF0ZXMoKTsK
QEAgLTM3MSwxMCArMzY1LDEyIEBAIGNvbnN0IGdsOjpBdHRhY2htZW50TGlzdCAmRnJhbWVidWZm
ZXJEM0Q6OmdldENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIoY29uc3QgZ2w6CiAgICAgICAgICAg
ICBBU1NFUlQoZHJhd0J1ZmZlclN0YXRlID09IEdMX0JBQ0sgfHwKICAgICAgICAgICAgICAgICAg
ICBkcmF3QnVmZmVyU3RhdGUgPT0gKEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGF0dGFjaG1l
bnRJbmRleCkpOwogICAgICAgICAgICAgY29sb3JBdHRhY2htZW50c0ZvclJlbmRlci5wdXNoX2Jh
Y2soJmNvbG9yQXR0YWNobWVudCk7CisgICAgICAgICAgICBtQ29sb3JBdHRhY2htZW50c0ZvclJl
bmRlck1hc2suc2V0KGF0dGFjaG1lbnRJbmRleCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBp
ZiAoIWZlYXR1cmVzLm1ydFBlcmZXb3JrYXJvdW5kLmVuYWJsZWQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIucHVzaF9iYWNrKG51bGxwdHIpOworICAg
ICAgICAgICAgbUNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXJNYXNrLnNldChhdHRhY2htZW50SW5k
ZXgpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNE
LmgKaW5kZXggNmUwMjRhYzcwMDMxYmUwODFhYjRhZTAxZDQ3YzYyN2I5NDhkYmEzZS4uOWY5OGVk
ZjYwN2QzMDMwZDMzMDVmZmY1YTE5ZjZmOWQ2ZWVhMjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
RnJhbWVidWZmZXJEM0QuaApAQCAtMzUsMTUgKzM1LDE1IEBAIHN0cnVjdCBDbGVhclBhcmFtZXRl
cnMKICAgICBDbGVhclBhcmFtZXRlcnMoKTsKICAgICBDbGVhclBhcmFtZXRlcnMoY29uc3QgQ2xl
YXJQYXJhbWV0ZXJzICZvdGhlcik7CiAKLSAgICBib29sIGNsZWFyQ29sb3JbZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOworICAgIGdsOjpEcmF3QnVmZmVyTWFzayBjbGVhckNv
bG9yOwogICAgIGdsOjpDb2xvckYgY29sb3JGOwogICAgIGdsOjpDb2xvckkgY29sb3JJOwogICAg
IGdsOjpDb2xvclVJIGNvbG9yVUk7CiAgICAgR0xlbnVtIGNvbG9yVHlwZTsKLSAgICBib29sIGNv
bG9yTWFza1JlZDsKLSAgICBib29sIGNvbG9yTWFza0dyZWVuOwotICAgIGJvb2wgY29sb3JNYXNr
Qmx1ZTsKLSAgICBib29sIGNvbG9yTWFza0FscGhhOworICAgIGdsOjpEcmF3QnVmZmVyTWFzayBj
b2xvck1hc2tSZWQ7CisgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGNvbG9yTWFza0dyZWVuOworICAg
IGdsOjpEcmF3QnVmZmVyTWFzayBjb2xvck1hc2tCbHVlOworICAgIGdsOjpEcmF3QnVmZmVyTWFz
ayBjb2xvck1hc2tBbHBoYTsKIAogICAgIGJvb2wgY2xlYXJEZXB0aDsKICAgICBmbG9hdCBkZXB0
aFZhbHVlOwpAQCAtMTAyLDYgKzEwMiwxMSBAQCBjbGFzcyBGcmFtZWJ1ZmZlckQzRCA6IHB1Ymxp
YyBGcmFtZWJ1ZmZlckltcGwKIAogICAgIGNvbnN0IGdsOjpBdHRhY2htZW50TGlzdCAmZ2V0Q29s
b3JBdHRhY2htZW50c0ZvclJlbmRlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCk7CiAKKyAg
ICBjb25zdCBnbDo6RHJhd0J1ZmZlck1hc2sgZ2V0TGFzdENvbG9yQXR0YWNobWVudHNGb3JSZW5k
ZXJNYXNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtQ29sb3JBdHRhY2htZW50c0Zv
clJlbmRlck1hc2s7CisgICAgfQorCiAgICAgdm9pZCBkZXN0cm95KGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0KSBvdmVycmlkZTsKIAogICBwcml2YXRlOgpAQCAtMTMxLDYgKzEzNiw3IEBAIGNs
YXNzIEZyYW1lYnVmZmVyRDNEIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogICAgIFJlbmRlcmVy
RDNEICptUmVuZGVyZXI7CiAgICAgT3B0aW9uYWw8Z2w6OkF0dGFjaG1lbnRMaXN0PiBtQ29sb3JB
dHRhY2htZW50c0ZvclJlbmRlcjsKICAgICBnbDo6RHJhd0J1ZmZlck1hc2sgbUN1cnJlbnRBY3Rp
dmVQcm9ncmFtT3V0cHV0czsKKyAgICBnbDo6RHJhd0J1ZmZlck1hc2sgbUNvbG9yQXR0YWNobWVu
dHNGb3JSZW5kZXJNYXNrOwogCiAgICAgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCBtRHVtbXlB
dHRhY2htZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvT1dORVJTIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWExNzM2ZTkwNGVjNjIx
OTVkMjc2NGI2Y2MzZWFlYjgzYTgwY2JhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvT1dORVJTCkBAIC0wLDAgKzEs
MiBAQAorZ2VvZmZsYW5nQGNocm9taXVtLm9yZworam1hZGlsbEBjaHJvbWl1bS5vcmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
UHJvZ3JhbUQzRC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwCmluZGV4IGIyMjlkNmJlOWUxMDMyZTVmYzIxZTFhZjM1
ZjNmODA4OGQ5ZjY1YjUuLmVlMThjMTY3OTI0ZDJlMGI1ZDI3MTE5YWRjYjc3ODMwMjNkYjkyNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvUHJvZ3JhbUQzRC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcApAQCAtMTA0Nyw2ICsxMDQ3LDIyIEBA
IHN0ZDo6dW5pcXVlX3B0cjxyeDo6TGlua0V2ZW50PiBQcm9ncmFtRDNEOjpsb2FkKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICBtRDNEU2hhZGVyU3RvcmFnZUJsb2Nrcy5wdXNo
X2JhY2soc2hhZGVyU3RvcmFnZUJsb2NrKTsKICAgICB9CiAKKyAgICBjb25zdCB1bnNpZ25lZCBp
bnQgaW1hZ2UyRFVuaWZvcm1Db3VudCA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7
CisgICAgaWYgKHN0cmVhbS0+ZXJyb3IoKSkKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwgIklu
dmFsaWQgcHJvZ3JhbSBiaW5hcnkuIjsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua0V2ZW50RG9uZT4oYW5nbGU6OlJlc3VsdDo6SW5jb21wbGV0ZSk7CisgICAgfQorCisgICAg
QVNTRVJUKG1JbWFnZTJEVW5pZm9ybXMuZW1wdHkoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aW1hZ2UyRFVuaWZvcm1JbmRleCA9IDA7IGltYWdlMkRVbmlmb3JtSW5kZXggPCBpbWFnZTJEVW5p
Zm9ybUNvdW50OworICAgICAgICAgKytpbWFnZTJEVW5pZm9ybUluZGV4KQorICAgIHsKKyAgICAg
ICAgc2g6OlNoYWRlclZhcmlhYmxlIGltYWdlMkR1bmlmb3JtOworICAgICAgICBnbDo6TG9hZFNo
YWRlclZhcihzdHJlYW0sICZpbWFnZTJEdW5pZm9ybSk7CisgICAgICAgIG1JbWFnZTJEVW5pZm9y
bXMucHVzaF9iYWNrKGltYWdlMkR1bmlmb3JtKTsKKyAgICB9CisKICAgICBmb3IgKHVuc2lnbmVk
IGludCBpaSA9IDA7IGlpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9BVE9NSUNfQ09VTlRFUl9C
VUZGRVJTOyArK2lpKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaW50IGluZGV4ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CkBA
IC0xMjkxLDcgKzEzMDcsNyBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1EM0Q6OmxvYWRCaW5hcnlT
aGFkZXJFeGVjdXRhYmxlcyhkM2Q6OkNvbnRleHQgKmNvbnRleHREM0QsCiAgICAgICAgICAgICBz
dHJlYW0tPnJlYWRJbnQ8dW5zaWduZWQgaW50PigpLCBnbDo6VGV4dHVyZVR5cGU6Ol8yRCkpOwog
ICAgIH0KIAotICAgIGluaXRpYWxpemVVbmlmb3JtU3RvcmFnZShtU3RhdGUuZ2V0TGlua2VkU2hh
ZGVyU3RhZ2VzKCkpOworICAgIGluaXRpYWxpemVVbmlmb3JtU3RvcmFnZShtU3RhdGUuZ2V0UHJv
Z3JhbUV4ZWN1dGFibGUoKS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSk7CiAKICAgICBkaXJ0eUFs
bFVuaWZvcm1zKCk7CiAKQEAgLTEzNTgsNiArMTM3NCwxMiBAQCB2b2lkIFByb2dyYW1EM0Q6OnNh
dmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0
cmVhbQogICAgICAgICB9CiAgICAgfQogCisgICAgc3RyZWFtLT53cml0ZUludChtSW1hZ2UyRFVu
aWZvcm1zLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJmltYWdl
MkRVbmlmb3JtIDogbUltYWdlMkRVbmlmb3JtcykKKyAgICB7CisgICAgICAgIGdsOjpXcml0ZVNo
YWRlclZhcihzdHJlYW0sIGltYWdlMkRVbmlmb3JtKTsKKyAgICB9CisKICAgICBmb3IgKHVuc2ln
bmVkIGludCBpaSA9IDA7IGlpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9BVE9NSUNfQ09VTlRF
Ul9CVUZGRVJTOyArK2lpKQogICAgIHsKICAgICAgICAgc3RyZWFtLT53cml0ZUludChtQ29tcHV0
ZUF0b21pY0NvdW50ZXJCdWZmZXJSZWdpc3RlckluZGljZXNbaWldKTsKQEAgLTIzMzEsNyArMjM1
Myw3IEBAIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFVCT0NhY2hlVXNlU0I+ICZQcm9ncmFtRDNEOjpn
ZXRTaGFkZXJVbmlmb3JtQnVmZmVyQ2FjaGVVc2VTCiAKIHZvaWQgUHJvZ3JhbUQzRDo6ZGlydHlB
bGxVbmlmb3JtcygpCiB7Ci0gICAgbVNoYWRlclVuaWZvcm1zRGlydHkgPSBtU3RhdGUuZ2V0TGlu
a2VkU2hhZGVyU3RhZ2VzKCk7CisgICAgbVNoYWRlclVuaWZvcm1zRGlydHkgPSBtU3RhdGUuZ2V0
UHJvZ3JhbUV4ZWN1dGFibGUoKS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKTsKIH0KIAogdm9pZCBQ
cm9ncmFtRDNEOjptYXJrVW5pZm9ybXNDbGVhbigpCkBAIC0zMDI2LDggKzMwNDgsMTAgQEAgdm9p
ZCBQcm9ncmFtRDNEOjp1cGRhdGVDYWNoZWRJbnB1dExheW91dChTZXJpYWwgYXNzb2NpYXRlZFNl
cmlhbCwgY29uc3QgZ2w6OlN0YXQKICAgICBtQ2FjaGVkSW5wdXRMYXlvdXQuY2xlYXIoKTsKIAog
ICAgIGNvbnN0IGF1dG8gJnZlcnRleEF0dHJpYnV0ZXMgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgp
LT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZh
dHRyaWJ1dGVzTWFzayA9CisgICAgICAgIG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmdl
dEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKTsKIAotICAgIGZvciAoc2l6ZV90IGxvY2F0aW9u
SW5kZXggOiBtU3RhdGUuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKQorICAgIGZvciAo
c2l6ZV90IGxvY2F0aW9uSW5kZXggOiBhdHRyaWJ1dGVzTWFzaykKICAgICB7CiAgICAgICAgIGlu
dCBkM2RTZW1hbnRpYyA9IG1BdHRyaWJMb2NhdGlvblRvRDNEU2VtYW50aWNbbG9jYXRpb25JbmRl
eF07CiAKQEAgLTMxNDEsNyArMzE2NSw3IEBAIHZvaWQgUHJvZ3JhbUQzRDo6Z2F0aGVyVHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBnbDo6VmFyeWluZ1BhY2tpbmcgJnZhcnlpCiAgICAg
ICAgICAgICBmb3IgKEdMdWludCByZWdpc3RlckluZGV4ID0gMHU7IHJlZ2lzdGVySW5kZXggPCBy
ZWdpc3RlckluZm9zLnNpemUoKTsgKytyZWdpc3RlckluZGV4KQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8gJnJlZ2lzdGVySW5mbyA9IHJlZ2lzdGVySW5mb3NbcmVn
aXN0ZXJJbmRleF07Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byAmdmFyeWluZyAgICAgID0g
KnJlZ2lzdGVySW5mby5wYWNrZWRWYXJ5aW5nLT52YXJ5aW5nOworICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8gJnZhcnlpbmcgICAgICA9IHJlZ2lzdGVySW5mby5wYWNrZWRWYXJ5aW5nLT52YXJ5
aW5nKCk7CiAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zcG9zZWRUeXBlICAgID0gZ2w6OlRy
YW5zcG9zZU1hdHJpeFR5cGUodmFyeWluZy50eXBlKTsKICAgICAgICAgICAgICAgICBpbnQgY29t
cG9uZW50Q291bnQgICAgICAgPSBnbDo6VmFyaWFibGVDb2x1bW5Db3VudCh0cmFuc3Bvc2VkVHlw
ZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCF2YXJ5aW5nLmlzQnVpbHRJbigpICYmICF2YXJ5
aW5nLmlzU3RydWN0KCkpOwpAQCAtMzE2OCwxNCArMzE5Miw2IEBAIGNvbnN0IEQzRFVuaWZvcm0g
KlByb2dyYW1EM0Q6OmdldEQzRFVuaWZvcm1Gcm9tTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNv
bnN0CiAgICAgcmV0dXJuIG1EM0RVbmlmb3Jtc1ttU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygp
W2xvY2F0aW9uXS5pbmRleF07CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6c2V0UGF0aEZyYWdtZW50
SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXsKLSAg
ICBVTlJFQUNIQUJMRSgpOwotfQotCiBib29sIFByb2dyYW1EM0Q6Omhhc1ZlcnRleEV4ZWN1dGFi
bGVGb3JDYWNoZWRJbnB1dExheW91dCgpCiB7CiAgICAgcmV0dXJuIG1DYWNoZWRWZXJ0ZXhFeGVj
dXRhYmxlSW5kZXgudmFsaWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgKaW5kZXggMWRl
MGVmMGNhOTA4ZWE5NTY0Y2QwOTJmYzRkNmVjOWZjZGMxMDc4My4uNGZjYTE5ZGExYWU3NmRmZmZh
NTk1NGNiZjU4NWI2Y2ZmYjY4YzY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgKQEAg
LTIzNiwxMSArMjM2LDYgQEAgY2xhc3MgUHJvZ3JhbUQzRCA6IHB1YmxpYyBQcm9ncmFtSW1wbAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cp
IG92ZXJyaWRlOwogICAgIEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2Fwcywg
Z2w6OkluZm9Mb2cgKmluZm9Mb2cpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRQYXRoRnJhZ21l
bnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlkZTsKLQogICAgIHZvaWQgdXBkYXRl
VW5pZm9ybUJ1ZmZlckNhY2hlKGNvbnN0IGdsOjpDYXBzICZjYXBzKTsKIAogICAgIHVuc2lnbmVk
IGludCBnZXRBdG9taWNDb3VudGVyQnVmZmVyUmVnaXN0ZXJJbmRleChHTHVpbnQgYmluZGluZywK
QEAgLTM0NCw3ICszMzksNyBAQCBjbGFzcyBQcm9ncmFtRDNEIDogcHVibGljIFByb2dyYW1JbXBs
CiAKICAgICBib29sIGhhc1NoYWRlclN0YWdlKGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gbVN0YXRlLmdldExpbmtlZFNoYWRlclN0YWdlcygp
W3NoYWRlclR5cGVdOworICAgICAgICByZXR1cm4gbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxl
KCkuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKClbc2hhZGVyVHlwZV07CiAgICAgfQogCiAgICAgdm9p
ZCBhc3NpZ25JbWFnZTJEUmVnaXN0ZXJzKHVuc2lnbmVkIGludCBzdGFydEltYWdlSW5kZXgsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuY3BwCmluZGV4IGMxZmZjMWNi
ZTRmM2U1YjJkOWEyM2FkN2U4OGZkMWYzMjRjODUxOGYuLmI0MThiNWRjYzNmNTNjYjExMDZjZWE4
NTQ4YWViMGU0MzU4Mzg3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1h
bmFnZXIuY3BwCkBAIC0yNDgsMjAgKzI0OCwyMCBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleERhdGFN
YW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YSgKICAgICBzdGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0
cmlidXRlPiAqdHJhbnNsYXRlZEF0dHJpYnMsCiAgICAgR0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0g
ICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRl
KCk7Ci0gICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2ZXJ0ZXhBcnJheSA9IHN0YXRlLmdldFZl
cnRleEFycmF5KCk7Ci0gICAgY29uc3QgYXV0byAmdmVydGV4QXR0cmlidXRlcyAgICAgICA9IHZl
cnRleEFycmF5LT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7Ci0gICAgY29uc3QgYXV0byAmdmVydGV4
QmluZGluZ3MgICAgICAgICA9IHZlcnRleEFycmF5LT5nZXRWZXJ0ZXhCaW5kaW5ncygpOworICAg
IGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0
YXRlKCk7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gc3Rh
dGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBjb25zdCBnbDo6VmVydGV4QXJyYXkgKnZl
cnRleEFycmF5ICAgICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIGNvbnN0IGF1dG8g
JnZlcnRleEF0dHJpYnV0ZXMgICAgICAgICAgICA9IHZlcnRleEFycmF5LT5nZXRWZXJ0ZXhBdHRy
aWJ1dGVzKCk7CisgICAgY29uc3QgYXV0byAmdmVydGV4QmluZGluZ3MgICAgICAgICAgICAgID0g
dmVydGV4QXJyYXktPmdldFZlcnRleEJpbmRpbmdzKCk7CiAKICAgICBtRHluYW1pY0F0dHJpYnNN
YXNrQ2FjaGUucmVzZXQoKTsKLSAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IHN0YXRl
LmdldFByb2dyYW0oKTsKIAogICAgIHRyYW5zbGF0ZWRBdHRyaWJzLT5jbGVhcigpOwogCiAgICAg
Zm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IHZlcnRleEF0dHJpYnV0
ZXMuc2l6ZSgpOyArK2F0dHJpYkluZGV4KQogICAgIHsKICAgICAgICAgLy8gU2tpcCBhdHRyaWIg
bG9jYXRpb25zIHRoZSBwcm9ncmFtIGRvZXNuJ3QgdXNlLgotICAgICAgICBpZiAoIXByb2dyYW0t
PmlzQXR0cmliTG9jYXRpb25BY3RpdmUoYXR0cmliSW5kZXgpKQorICAgICAgICBpZiAoIWV4ZWN1
dGFibGUtPmlzQXR0cmliTG9jYXRpb25BY3RpdmUoYXR0cmliSW5kZXgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgY29uc3QgYXV0byAmYXR0cmliICA9IHZlcnRleEF0dHJpYnV0
ZXNbYXR0cmliSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAKaW5k
ZXggMGVmNzEzMmQzOWJlODQ1MTljYTNiODFlNzI5YzE4YjRkODM5NWQ0My4uOTNkNGFmNmU3YWRm
MzFkNmI5MWZjMDA1YzY5MGJiZjdmMDJhNDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0NsZWFyMTEuY3BwCkBAIC0yODcsMTUgKzI4NywxNiBAQCBhbmdsZTo6UmVzdWx0IENsZWFyMTE6
OmVuc3VyZVJlc291cmNlc0luaXRpYWxpemVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQog
ICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5zdGVuY2lsQmFja0Z1bmMgICAgICAgICAgPSBHTF9B
TFdBWVM7CiAKICAgICAvLyBJbml0aWFsaXplIEJsZW5kU3RhdGVLZXkgd2l0aCBkZWZhdWx0cwot
ICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuYmxlbmQgICAgICAgICAgICAgICAgID0gZmFs
c2U7Ci0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAgICAgICAg
PSBHTF9PTkU7Ci0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhh
ICAgICAgPSBHTF9PTkU7Ci0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5kZXN0QmxlbmRS
R0IgICAgICAgICAgPSBHTF9aRVJPOwotICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuZGVz
dEJsZW5kQWxwaGEgICAgICAgID0gR0xfWkVSTzsKLSAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0
YXRlLmJsZW5kRXF1YXRpb25SR0IgICAgICA9IEdMX0ZVTkNfQUREOwotICAgIG1CbGVuZFN0YXRl
S2V5LmJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhICAgID0gR0xfRlVOQ19BREQ7Ci0gICAg
bUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UgPSBmYWxzZTsK
LSAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRlLmRpdGhlciAgICAgICAgICAgICAgICA9IHRy
dWU7CisgICAgZm9yIChnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA6IG1CbGVuZFN0YXRlS2V5
LmJsZW5kU3RhdGVBcnJheSkKKyAgICB7CisgICAgICAgIGJsZW5kU3RhdGUuYmxlbmQgICAgICAg
ICAgICAgID0gZmFsc2U7CisgICAgICAgIGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgICAgID0g
R0xfT05FOworICAgICAgICBibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgICA9IEdMX09ORTsK
KyAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgICAgICAgPSBHTF9aRVJPOworICAgICAg
ICBibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhICAgICA9IEdMX1pFUk87CisgICAgICAgIGJsZW5k
U3RhdGUuYmxlbmRFcXVhdGlvblJHQiAgID0gR0xfRlVOQ19BREQ7CisgICAgICAgIGJsZW5kU3Rh
dGUuYmxlbmRFcXVhdGlvbkFscGhhID0gR0xfRlVOQ19BREQ7CisgICAgfQogCiAgICAgbVJlc291
cmNlc0luaXRpYWxpemVkID0gdHJ1ZTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7CkBAIC00NjEsMTQgKzQ2MiwyMCBAQCBhbmdsZTo6UmVzdWx0IENsZWFyMTE6OmNsZWFyRnJh
bWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgc3RkOjphcnJheTxJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICosIEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NP
VU5UPiBydHZzOwogICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgRDNEMTFfU0lNVUxUQU5FT1VTX1JF
TkRFUl9UQVJHRVRfQ09VTlQ+IHJ0dk1hc2tzID0ge307CiAKLSAgICB1aW50MzJfdCBudW1SdHZz
ID0gMDsKLSAgICBjb25zdCB1aW50OF90IGNvbG9yTWFzayA9Ci0gICAgICAgIGdsX2QzZDExOjpD
b252ZXJ0Q29sb3JNYXNrKGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCwgY2xlYXJQYXJhbXMuY29s
b3JNYXNrR3JlZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFy
YW1zLmNvbG9yTWFza0JsdWUsIGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhKTsKKyAgICB1aW50
MzJfdCBudW1SdHZzICAgICAgICA9IDA7CisgICAgdWludDhfdCBjb21tb25Db2xvck1hc2sgPSAw
OwogCiAgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IGZib0RhdGEuZ2V0Q29sb3JB
dHRhY2htZW50cygpOwogICAgIGZvciAoYXV0byBjb2xvckF0dGFjaG1lbnRJbmRleCA6IGZib0Rh
dGEuZ2V0RW5hYmxlZERyYXdCdWZmZXJzKCkpCiAgICAgeworICAgICAgICBjb25zdCB1aW50OF90
IGNvbG9yTWFzayA9CisgICAgICAgICAgICBnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayhjbGVh
clBhcmFtcy5jb2xvck1hc2tSZWRbY29sb3JBdHRhY2htZW50SW5kZXhdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW5bY29s
b3JBdHRhY2htZW50SW5kZXhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZVtjb2xvckF0dGFjaG1lbnRJbmRleF0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tB
bHBoYVtjb2xvckF0dGFjaG1lbnRJbmRleF0pOworCisgICAgICAgIGNvbW1vbkNvbG9yTWFzayB8
PSBjb2xvck1hc2s7CisKICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAm
YXR0YWNobWVudCA9IGNvbG9yQXR0YWNobWVudHNbY29sb3JBdHRhY2htZW50SW5kZXhdOwogCiAg
ICAgICAgIGlmICghY2xlYXJQYXJhbXMuY2xlYXJDb2xvcltjb2xvckF0dGFjaG1lbnRJbmRleF0p
CkBAIC00OTQsMTAgKzUwMSwxMCBAQCBhbmdsZTo6UmVzdWx0IENsZWFyMTE6OmNsZWFyRnJhbWVi
dWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgPDwg
IikuIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgoZm9ybWF0SW5mby5yZWRCaXRzID09IDAg
fHwgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgJiYKLSAgICAgICAgICAgIChmb3JtYXRJbmZv
LmdyZWVuQml0cyA9PSAwIHx8ICFjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbikgJiYKLSAgICAg
ICAgICAgIChmb3JtYXRJbmZvLmJsdWVCaXRzID09IDAgfHwgIWNsZWFyUGFyYW1zLmNvbG9yTWFz
a0JsdWUpICYmCi0gICAgICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPT0gMCB8fCAhY2xl
YXJQYXJhbXMuY29sb3JNYXNrQWxwaGEpKQorICAgICAgICBpZiAoKGZvcm1hdEluZm8ucmVkQml0
cyA9PSAwIHx8ICFjbGVhclBhcmFtcy5jb2xvck1hc2tSZWRbY29sb3JBdHRhY2htZW50SW5kZXhd
KSAmJgorICAgICAgICAgICAgKGZvcm1hdEluZm8uZ3JlZW5CaXRzID09IDAgfHwgIWNsZWFyUGFy
YW1zLmNvbG9yTWFza0dyZWVuW2NvbG9yQXR0YWNobWVudEluZGV4XSkgJiYKKyAgICAgICAgICAg
IChmb3JtYXRJbmZvLmJsdWVCaXRzID09IDAgfHwgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWVb
Y29sb3JBdHRhY2htZW50SW5kZXhdKSAmJgorICAgICAgICAgICAgKGZvcm1hdEluZm8uYWxwaGFC
aXRzID09IDAgfHwgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhW2NvbG9yQXR0YWNobWVudElu
ZGV4XSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEV2ZXJ5IGNoYW5uZWwgZWl0aGVyIGRv
ZXMgbm90IGV4aXN0IGluIHRoZSByZW5kZXIgdGFyZ2V0IG9yIGlzIG1hc2tlZCBvdXQKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtNTA4LDEwICs1MTUsMTAgQEAgYW5nbGU6OlJlc3VsdCBDbGVh
cjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAg
ICAgIGlmICgoIShtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkuc3VwcG9ydHND
bGVhclZpZXcpICYmIG5lZWRTY2lzc29yZWRDbGVhcikgfHwKICAgICAgICAgICAgIGNsZWFyUGFy
YW1zLmNvbG9yVHlwZSAhPSBHTF9GTE9BVCB8fAotICAgICAgICAgICAgKGZvcm1hdEluZm8ucmVk
Qml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgfHwKLSAgICAgICAgICAgIChm
b3JtYXRJbmZvLmdyZWVuQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuKSB8
fAotICAgICAgICAgICAgKGZvcm1hdEluZm8uYmx1ZUJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5j
b2xvck1hc2tCbHVlKSB8fAotICAgICAgICAgICAgKGZvcm1hdEluZm8uYWxwaGFCaXRzID4gMCAm
JiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQWxwaGEpKQorICAgICAgICAgICAgKGZvcm1hdEluZm8u
cmVkQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZFtjb2xvckF0dGFjaG1lbnRJ
bmRleF0pIHx8CisgICAgICAgICAgICAoZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYmICFjbGVh
clBhcmFtcy5jb2xvck1hc2tHcmVlbltjb2xvckF0dGFjaG1lbnRJbmRleF0pIHx8CisgICAgICAg
ICAgICAoZm9ybWF0SW5mby5ibHVlQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0Js
dWVbY29sb3JBdHRhY2htZW50SW5kZXhdKSB8fAorICAgICAgICAgICAgKGZvcm1hdEluZm8uYWxw
aGFCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQWxwaGFbY29sb3JBdHRhY2htZW50
SW5kZXhdKSkKICAgICAgICAgewogICAgICAgICAgICAgcnR2c1tudW1SdHZzXSAgICAgPSBmcmFt
ZWJ1ZmZlclJUVi5nZXQoKTsKICAgICAgICAgICAgIHJ0dk1hc2tzW251bVJ0dnNdID0gZ2xfZDNk
MTE6OkdldENvbG9yTWFzayhmb3JtYXRJbmZvKSAmIGNvbG9yTWFzazsKQEAgLTY0MywxMSArNjUw
LDE2IEBAIGFuZ2xlOjpSZXN1bHQgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICBBU1NFUlQobnVtUnR2cyA8PSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4obVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCkubWF4RHJhd0J1ZmZlcnMpKTsKIAogICAg
IC8vIFNldHVwIEJsZW5kU3RhdGVLZXkgcGFyYW1ldGVycwotICAgIG1CbGVuZFN0YXRlS2V5LmJs
ZW5kU3RhdGUuY29sb3JNYXNrUmVkICAgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQ7Ci0gICAg
bUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiA9IGNsZWFyUGFyYW1zLmNv
bG9yTWFza0dyZWVuOwotICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuY29sb3JNYXNrQmx1
ZSAgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlOwotICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5k
U3RhdGUuY29sb3JNYXNrQWxwaGEgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYTsKLSAgICBt
QmxlbmRTdGF0ZUtleS5ydHZNYXggICAgICAgICAgICAgICAgICAgID0gbnVtUnR2czsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGVBcnJheS5zaXpl
KCk7IGkrKykKKyAgICB7CisgICAgICAgIGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlID0gbUJs
ZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZUFycmF5W2ldOworICAgICAgICBibGVuZFN0YXRlLmNvbG9y
TWFza1JlZCAgICA9IGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZFtpXTsKKyAgICAgICAgYmxlbmRT
dGF0ZS5jb2xvck1hc2tHcmVlbiAgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbltpXTsKKyAg
ICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICAgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tC
bHVlW2ldOworICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhICA9IGNsZWFyUGFyYW1z
LmNvbG9yTWFza0FscGhhW2ldOworICAgIH0KKworICAgIG1CbGVuZFN0YXRlS2V5LnJ0dk1heCA9
IHN0YXRpY19jYXN0PHVpbnQxNl90PihudW1SdHZzKTsKICAgICBtZW1jcHkobUJsZW5kU3RhdGVL
ZXkucnR2TWFza3MsICZydHZNYXNrc1swXSwgc2l6ZW9mKG1CbGVuZFN0YXRlS2V5LnJ0dk1hc2tz
KSk7CiAKICAgICAvLyBHZXQgQmxlbmRTdGF0ZQpAQCAtNjc2LDE1ICs2ODgsMTYgQEAgYW5nbGU6
OlJlc3VsdCBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgIHN3aXRjaCAoY2xlYXJQYXJhbXMuY29sb3JUeXBlKQogICAgIHsKICAgICAgICAg
Y2FzZSBHTF9GTE9BVDoKLSAgICAgICAgICAgIGRpcnR5Q2IgPSBVcGRhdGVEYXRhQ2FjaGUoJm1T
aGFkZXJEYXRhLCBjbGVhclBhcmFtcy5jb2xvckYsIHpWYWx1ZSwgbnVtUnR2cywgY29sb3JNYXNr
KTsKKyAgICAgICAgICAgIGRpcnR5Q2IgPQorICAgICAgICAgICAgICAgIFVwZGF0ZURhdGFDYWNo
ZSgmbVNoYWRlckRhdGEsIGNsZWFyUGFyYW1zLmNvbG9yRiwgelZhbHVlLCBudW1SdHZzLCBjb21t
b25Db2xvck1hc2spOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UOgogICAgICAgICAgICAgZGlydHlDYiA9IFVwZGF0ZURhdGFDYWNoZShyZWludGVycHJl
dF9jYXN0PFJ0dkRzdkNsZWFySW5mbzx1aW50MzJfdD4gKj4oJm1TaGFkZXJEYXRhKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JVSSwgelZh
bHVlLCBudW1SdHZzLCBjb2xvck1hc2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhclBhcmFtcy5jb2xvclVJLCB6VmFsdWUsIG51bVJ0dnMsIGNvbW1vbkNvbG9y
TWFzayk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9JTlQ6CiAgICAgICAg
ICAgICBkaXJ0eUNiID0gVXBkYXRlRGF0YUNhY2hlKHJlaW50ZXJwcmV0X2Nhc3Q8UnR2RHN2Q2xl
YXJJbmZvPGludD4gKj4oJm1TaGFkZXJEYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JJLCB6VmFsdWUsIG51bVJ0dnMsIGNvbG9yTWFz
ayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNv
bG9ySSwgelZhbHVlLCBudW1SdHZzLCBjb21tb25Db2xvck1hc2spOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9Db250ZXh0MTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwCmluZGV4IDkwNmRmOTVkMDVhMGM3MDA0
OTdjMGM3NzUyZDNlMjEzZGM1MjhlMWEuLmZmZDIwZmIxMDhkOGRmMjA2ZTM2YmU3ODFlNDhjZWQy
ZTU3N2Y0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5jcHAKQEAg
LTIyOSwxMSArMjI5LDYgQEAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqQ29udGV4dDExOjpjcmVhdGVQ
cm9ncmFtUGlwZWxpbmUoY29uc3QgZ2w6OlByb2dyYW1QaXBlbGluZVMKICAgICByZXR1cm4gbmV3
IFByb2dyYW1QaXBlbGluZTExKGRhdGEpOwogfQogCi1zdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBD
b250ZXh0MTE6OmNyZWF0ZVBhdGhzKEdMc2l6ZWkpCi17Ci0gICAgcmV0dXJuIHN0ZDo6dmVjdG9y
PFBhdGhJbXBsICo+KCk7Ci19Ci0KIE1lbW9yeU9iamVjdEltcGwgKkNvbnRleHQxMTo6Y3JlYXRl
TWVtb3J5T2JqZWN0KCkKIHsKICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtNDkwLDE4ICs0ODUsMjAg
QEAgc3RkOjpzdHJpbmcgQ29udGV4dDExOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRSZW5kZXJlckRlc2NyaXB0aW9uKCk7CiB9CiAKLXZv
aWQgQ29udGV4dDExOjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0MTE6Omluc2VydEV2ZW50TWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7CiAgICAgbVJlbmRlcmVyLT5nZXRB
bm5vdGF0b3IoKS0+c2V0TWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHQxMTo6cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCithbmdsZTo6UmVzdWx0IENvbnRleHQxMTo6cHVz
aEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7CiAgICAg
bVJlbmRlcmVyLT5nZXRBbm5vdGF0b3IoKS0+YmVnaW5FdmVudChtYXJrZXIsIG1hcmtlcik7CiAg
ICAgbU1hcmtlclN0YWNrLnB1c2goc3RkOjpzdHJpbmcobWFya2VyKSk7CisgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHQxMTo6cG9wR3JvdXBNYXJr
ZXIoKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0MTE6OnBvcEdyb3VwTWFya2VyKCkKIHsKICAgICBj
b25zdCBjaGFyICptYXJrZXIgPSBudWxscHRyOwogICAgIGlmICghbU1hcmtlclN0YWNrLmVtcHR5
KCkpCkBAIC01MTAsMTggKzUwNywyMiBAQCB2b2lkIENvbnRleHQxMTo6cG9wR3JvdXBNYXJrZXIo
KQogICAgICAgICBtTWFya2VyU3RhY2sucG9wKCk7CiAgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5u
b3RhdG9yKCktPmVuZEV2ZW50KG1hcmtlcik7CiAgICAgfQorICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBDb250ZXh0MTE6OnB1c2hEZWJ1Z0dyb3VwKEdMZW51
bSBzb3VyY2UsIEdMdWludCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpCithbmdsZTo6
UmVzdWx0IENvbnRleHQxMTo6cHVzaERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
Jm1lc3NhZ2UpCiB7CiAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIHRoZSBFWFRfZGVidWdfbWFya2Vy
IGZ1bmN0aW9ucwotICAgIHB1c2hHcm91cE1hcmtlcihzdGF0aWNfY2FzdDxHTHNpemVpPihtZXNz
YWdlLnNpemUoKSksIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgcmV0dXJuIHB1c2hHcm91cE1hcmtl
cihzdGF0aWNfY2FzdDxHTHNpemVpPihtZXNzYWdlLnNpemUoKSksIG1lc3NhZ2UuY19zdHIoKSk7
CiB9CiAKLXZvaWQgQ29udGV4dDExOjpwb3BEZWJ1Z0dyb3VwKCkKK2FuZ2xlOjpSZXN1bHQgQ29u
dGV4dDExOjpwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogewogICAg
IC8vIEZhbGwgdGhyb3VnaCB0byB0aGUgRVhUX2RlYnVnX21hcmtlciBmdW5jdGlvbnMKLSAgICBw
b3BHcm91cE1hcmtlcigpOworICAgIHJldHVybiBwb3BHcm91cE1hcmtlcigpOwogfQogCiBhbmds
ZTo6UmVzdWx0IENvbnRleHQxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgKaW5kZXggMzNkOWY4OGUxMGU2
OGZiNjUyY2Q1MTE4YmIxZDMyZGU0NWYzYjc2My4uYWM0NzdjYjUzODA4MmQ1NjllZGJlMWFjODZk
MDQzNWE2Y2Q0ZTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oCkBA
IC02Miw5ICs2Miw2IEBAIGNsYXNzIENvbnRleHQxMSA6IHB1YmxpYyBDb250ZXh0RDNELCBwdWJs
aWMgTXVsdGlzYW1wbGVUZXh0dXJlSW5pdGlhbGl6ZXIKICAgICAvLyBQcm9ncmFtIFBpcGVsaW5l
IG9iamVjdCBjcmVhdGlvbgogICAgIFByb2dyYW1QaXBlbGluZUltcGwgKmNyZWF0ZVByb2dyYW1Q
aXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBpcGVsaW5lU3RhdGUgJmRhdGEpIG92ZXJyaWRlOwog
Ci0gICAgLy8gUGF0aCBvYmplY3QgY3JlYXRpb24uCi0gICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwg
Kj4gY3JlYXRlUGF0aHMoR0xzaXplaSkgb3ZlcnJpZGU7Ci0KICAgICAvLyBNZW1vcnkgb2JqZWN0
IGNyZWF0aW9uLgogICAgIE1lbW9yeU9iamVjdEltcGwgKmNyZWF0ZU1lbW9yeU9iamVjdCgpIG92
ZXJyaWRlOwogCkBAIC0xNTgsMTMgKzE1NSwxNiBAQCBjbGFzcyBDb250ZXh0MTEgOiBwdWJsaWMg
Q29udGV4dEQzRCwgcHVibGljIE11bHRpc2FtcGxlVGV4dHVyZUluaXRpYWxpemVyCiAgICAgc3Rk
OjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ly8gRVhUX2RlYnVnX21hcmtlcgotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNoR3JvdXBN
YXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgaW5zZXJ0
RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7
CisgICAgYW5nbGU6OlJlc3VsdCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0
IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwb3BHcm91cE1hcmtl
cigpIG92ZXJyaWRlOwogCiAgICAgLy8gS0hSX2RlYnVnCi0gICAgdm9pZCBwdXNoRGVidWdHcm91
cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBv
dmVycmlkZTsKLSAgICB2b2lkIHBvcERlYnVnR3JvdXAoKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6
UmVzdWx0IHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6
UmVzdWx0IHBvcERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRl
OwogCiAgICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJpdHMuCiAgICAgYW5nbGU6OlJlc3Vs
dCBzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1l
YnVmZmVyMTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmNwcAppbmRleCAxMzhlYWIzODg2M2ZmYTY2NGFl
NmFkN2NlZmNkNTdjMmVmOGEyNWMyLi5lZjAwNWE4MTA1M2IwOWMwZTZhYzhiZmU2ODlmMTg4ZTM2
MGU3ZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5j
cHAKQEAgLTQyMCw3ICs0MjAsNyBAQCBSZW5kZXJUYXJnZXQxMSAqRnJhbWVidWZmZXIxMTo6Z2V0
Rmlyc3RSZW5kZXJUYXJnZXQoKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwoKTsKKyAgICByZXR1cm4gbVJlbmRl
clRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCh0cnVlKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5oCmluZGV4IDg1
MTZkN2RjZjI5MGI3YTJkNGMwY2U0MTk4MmRjYzE1NmY4YjA0M2UuLjhkNTdlNWU2MTc1MjZjNjdm
NTkwMmUyNDcyYjJhOGQyYWUyODkzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
RnJhbWVidWZmZXIxMS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZyYW1lYnVmZmVyMTEgOiBw
dWJsaWMgRnJhbWVidWZmZXJEM0QKICAgICB9CiAgICAgY29uc3QgUmVuZGVyVGFyZ2V0MTEgKmdl
dENhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCgpOworICAgICAgICByZXR1
cm4gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCh0cnVlKTsKICAgICB9CiAKICAg
ICBSZW5kZXJUYXJnZXQxMSAqZ2V0Rmlyc3RSZW5kZXJUYXJnZXQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwCmluZGV4IGMxODRk
N2M2YmEyMmU2OWY1M2VmN2MxY2I3NjlmYTU3MWFiYWU3M2UuLjM5MDJiMGZiMmEzOTMyMjQ5NWJl
MTk2MDMxYWJlMzAxODM2OWYzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9JbnB1dExheW91dENhY2hlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIGFuZ2xlOjpSZXN1bHQg
SW5wdXRMYXlvdXRDYWNoZTo6Z2V0SW5wdXRMYXlvdXQoCiAgICAgY29uc3QgYXV0byAmbG9jYXRp
b25Ub1NlbWFudGljID0gcHJvZ3JhbUQzRC0+Z2V0QXR0cmliTG9jYXRpb25Ub0QzRFNlbWFudGlj
cygpOwogICAgIGludCBkaXZpc29yTXVsdGlwbGllciAgICAgICAgICA9IHByb2dyYW0tPnVzZXNN
dWx0aXZpZXcoKSA/IHByb2dyYW0tPmdldE51bVZpZXdzKCkgOiAxOwogCi0gICAgZm9yIChzaXpl
X3QgYXR0cmliSW5kZXggOiBwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkp
CisgICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggOiBzdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJs
ZSgpLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkpCiAgICAgewogICAgICAgICAvLyBS
ZWNvcmQgdGhlIHR5cGUgb2YgdGhlIGFzc29jaWF0ZWQgdmVydGV4IHNoYWRlciB2ZWN0b3IgaW4g
b3VyIGtleQogICAgICAgICAvLyBUaGlzIHdpbGwgcHJldmVudCBtaXNtYXRjaGVkIHZlcnRleCBz
aGFkZXJzIGZyb20gdXNpbmcgdGhlIHNhbWUgaW5wdXQgbGF5b3V0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRl
clN0YXRlQ2FjaGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmNwcAppbmRleCA1MmNjMWI1Yjc5MDRj
ODM2MTUyYWE5YmQzMGFhMmMyZjk2Y2QxMWIwLi5kMjQ0MjBkNDY4YTk4MmIxMzgxOGRkYTA2N2Vl
ZWJjN2ZmMDU3YzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVy
U3RhdGVDYWNoZS5jcHAKQEAgLTQ1LDI4ICs0NSw3MSBAQCB2b2lkIFJlbmRlclN0YXRlQ2FjaGU6
OmNsZWFyKCkKIC8vIHN0YXRpYwogZDNkMTE6OkJsZW5kU3RhdGVLZXkgUmVuZGVyU3RhdGVDYWNo
ZTo6R2V0QmxlbmRTdGF0ZUtleShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZm
ZXIxMSAqZnJhbWVidWZmZXIxMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpCbGVuZFN0YXRlQXJyYXkgJmJsZW5kU3RhdGVBcnJheSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYW1wbGVBbHBo
YVRvQ292ZXJhZ2UpCiB7CiAgICAgZDNkMTE6OkJsZW5kU3RhdGVLZXkga2V5OworICAgIC8vIEFs
bCBlbGVtZW50cyBvZiB0aGUgQmxlbmRTdGF0ZUFycmF5IGluc2lkZSB0aGUga2V5IHNob3VsZCBi
ZSBpbml0aWFsaXplZCBmb3IgdGhlIGNhY2hpbmcgdG8KKyAgICAvLyB3b3JrIGNvcnJlY3RseS4g
RHVlIHRvIG1ydF9wZXJmX3dvcmthcm91bmQsIHRoZSBhY3R1YWwgaW5kaWNlcyBvZiBhY3RpdmUg
ZHJhdyBidWZmZXJzIG1heSBiZQorICAgIC8vIGRpZmZlcmVudCwgc28gYm90aCBhcnJheXMgc2hv
dWxkIGJlIHRyYWNrZWQuCiAgICAgY29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZjb2xvcmJ1ZmZl
cnMgPSBmcmFtZWJ1ZmZlcjExLT5nZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKGNvbnRleHQp
OwotICAgIGNvbnN0IFVJTlQ4IGJsZW5kU3RhdGVNYXNrID0KLSAgICAgICAgZ2xfZDNkMTE6OkNv
bnZlcnRDb2xvck1hc2soYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQsIGJsZW5kU3RhdGUuY29sb3JN
YXNrR3JlZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUu
Y29sb3JNYXNrQmx1ZSwgYmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSk7CisgICAgY29uc3QgZ2w6
OkRyYXdCdWZmZXJNYXNrIGNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXJNYXNrID0KKyAgICAgICAg
ZnJhbWVidWZmZXIxMS0+Z2V0TGFzdENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXJNYXNrKCk7CiAK
LSAgICBrZXkuYmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGU7CisgICAgQVNTRVJUKGJsZW5kU3RhdGVB
cnJheS5zaXplKCkgPT0gY29sb3JBdHRhY2htZW50c0ZvclJlbmRlck1hc2suc2l6ZSgpKTsKKyAg
ICBBU1NFUlQoY29sb3JidWZmZXJzLnNpemUoKSA9PSBjb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVy
TWFzay5jb3VudCgpKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sb3JidWZmZXJz
LnNpemUoKTsgaSsrKQorICAgIHNpemVfdCBrZXlCbGVuZEluZGV4ID0gMDsKKyAgICBmb3IgKHNp
emVfdCBzb3VyY2VJbmRleCA6IGNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXJNYXNrKQogICAgIHsK
LSAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCA9IGNv
bG9yYnVmZmVyc1tpXTsKKyAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUg
PSBibGVuZFN0YXRlQXJyYXlbc291cmNlSW5kZXhdOworICAgICAgICBnbDo6QmxlbmRTdGF0ZSAm
a2V5QmxlbmRTdGF0ZSAgICA9IGtleS5ibGVuZFN0YXRlQXJyYXlba2V5QmxlbmRJbmRleF07CiAK
LSAgICAgICAgaWYgKGF0dGFjaG1lbnQpCisgICAgICAgIC8vIFdpdGggYmxlbmRpbmcgZGlzYWJs
ZWQsIGZhY3RvcnMgYW5kIGVxdWF0aW9ucyBhcmUgaWdub3JlZCB3aGVuIGJ1aWxkaW5nCisgICAg
ICAgIC8vIEQzRDExX1JFTkRFUl9UQVJHRVRfQkxFTkRfREVTQywgc28gd2UgY2FuIHJlZHVjZSB0
aGUgYW1vdW50IG9mIHVuaXF1ZSBrZXlzIGJ5CisgICAgICAgIC8vIGVuZm9yY2luZyBkZWZhdWx0
IHZhbHVlcy4KKyAgICAgICAga2V5QmxlbmRTdGF0ZSA9IGdsOjpCbGVuZFN0YXRlKCk7CisKKyAg
ICAgICAgaWYgKGJsZW5kU3RhdGUuYmxlbmQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGtleS5y
dHZNYXggPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgKyAxOwotICAgICAgICAgICAga2V5LnJ0
dk1hc2tzW2ldID0KLSAgICAgICAgICAgICAgICAoZ2xfZDNkMTE6OkdldENvbG9yTWFzaygqYXR0
YWNobWVudC0+Z2V0Rm9ybWF0KCkuaW5mbykpICYgYmxlbmRTdGF0ZU1hc2s7CisgICAgICAgICAg
ICBrZXlCbGVuZFN0YXRlLmJsZW5kICAgICAgICAgICAgICA9IHRydWU7CisgICAgICAgICAgICBr
ZXlCbGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICAgICA9IGJsZW5kU3RhdGUuc291cmNlQmxlbmRS
R0I7CisgICAgICAgICAgICBrZXlCbGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgICA9IGJsZW5k
U3RhdGUuc291cmNlQmxlbmRBbHBoYTsKKyAgICAgICAgICAgIGtleUJsZW5kU3RhdGUuZGVzdEJs
ZW5kUkdCICAgICAgID0gYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0I7CisgICAgICAgICAgICBrZXlC
bGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhICAgICA9IGJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGE7
CisgICAgICAgICAgICBrZXlCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgICA9IGJsZW5kU3Rh
dGUuYmxlbmRFcXVhdGlvblJHQjsKKyAgICAgICAgICAgIGtleUJsZW5kU3RhdGUuYmxlbmRFcXVh
dGlvbkFscGhhID0gYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGE7CiAgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgb25seSBmb3IgY2FjaGluZyAoaGFzaCBj
YWxjdWxhdGlvbikgcHVycG9zZXMuCisgICAgICAgIC8vIEFjdHVhbCB3cml0ZSBjb2xvciBtYXNr
IHZhbHVlIGlzIGRlcml2ZWQgYmVsb3cuCisgICAgICAgIGtleUJsZW5kU3RhdGUuY29sb3JNYXNr
UmVkICAgPSBibGVuZFN0YXRlLmNvbG9yTWFza1JlZDsKKyAgICAgICAga2V5QmxlbmRTdGF0ZS5j
b2xvck1hc2tHcmVlbiA9IGJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW47CisgICAgICAgIGtleUJs
ZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSAgPSBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWU7CisgICAg
ICAgIGtleUJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgPSBibGVuZFN0YXRlLmNvbG9yTWFza0Fs
cGhhOworCisgICAgICAgIEFTU0VSVChrZXlCbGVuZEluZGV4IDwgY29sb3JidWZmZXJzLnNpemUo
KSk7CisgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQg
PSBjb2xvcmJ1ZmZlcnNba2V5QmxlbmRJbmRleF07CisKKyAgICAgICAgaWYgKGF0dGFjaG1lbnQp
ICAvLyB3aGVuIG1ydF9wZXJmX3dvcmthcm91bmQgaXMgZGlzYWJsZWQsIG51bGxwdHIgYXR0YWNo
bWVudHMgbWF5IGV4aXN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGtleS5ydHZNYXggPSBzdGF0
aWNfY2FzdDx1aW50MTZfdD4oa2V5QmxlbmRJbmRleCkgKyAxOworICAgICAgICAgICAga2V5LnJ0
dk1hc2tzW2tleUJsZW5kSW5kZXhdID0KKyAgICAgICAgICAgICAgICAoZ2xfZDNkMTE6OkdldENv
bG9yTWFzaygqYXR0YWNobWVudC0+Z2V0Rm9ybWF0KCkuaW5mbykpICYKKyAgICAgICAgICAgICAg
ICBnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayhibGVuZFN0YXRlLmNvbG9yTWFza1JlZCwgYmxl
bmRTdGF0ZS5jb2xvck1hc2tHcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUsIGJsZW5kU3RhdGUuY29sb3JNYXNr
QWxwaGEpOworICAgICAgICB9CisgICAgICAgIGtleUJsZW5kSW5kZXgrKzsKKyAgICB9CisKKyAg
ICAvLyBJbml0aWFsaXplIHJlbWFpbmluZyBzbG90cyBpbiBrZXkuYmxlbmRTdGF0ZUFycmF5Cisg
ICAgaWYgKGtleUJsZW5kSW5kZXggPCBrZXkuYmxlbmRTdGF0ZUFycmF5LnNpemUoKSkKKyAgICB7
CisgICAgICAgIHN0ZDo6ZmlsbChrZXkuYmxlbmRTdGF0ZUFycmF5LmJlZ2luKCkgKyBrZXlCbGVu
ZEluZGV4LCBrZXkuYmxlbmRTdGF0ZUFycmF5LmVuZCgpLAorICAgICAgICAgICAgICAgICAgZ2w6
OkJsZW5kU3RhdGUoKSk7CiAgICAgfQogCisgICAga2V5LnNhbXBsZUFscGhhVG9Db3ZlcmFnZSA9
IHNhbXBsZUFscGhhVG9Db3ZlcmFnZSA/IDEgOiAwOwogICAgIHJldHVybiBrZXk7CiB9CiAKQEAg
LTg2LDMxICsxMjksMzUgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVu
ZFN0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgLy8gQ3JlYXRlIGEgbmV3
IGJsZW5kIHN0YXRlIGFuZCBpbnNlcnQgaXQgaW50byB0aGUgY2FjaGUKICAgICBEM0QxMV9CTEVO
RF9ERVNDIGJsZW5kRGVzYzsKLSAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX0JMRU5EX0RFU0MgJnJ0
RGVzYzAgPSBibGVuZERlc2MuUmVuZGVyVGFyZ2V0WzBdOwotICAgIGNvbnN0IGdsOjpCbGVuZFN0
YXRlICZibGVuZFN0YXRlICAgICAgICA9IGtleS5ibGVuZFN0YXRlOworICAgIGNvbnN0IGdsOjpC
bGVuZFN0YXRlQXJyYXkgJmJsZW5kU3RhdGVBcnJheSA9IGtleS5ibGVuZFN0YXRlQXJyYXk7CiAK
LSAgICBibGVuZERlc2MuQWxwaGFUb0NvdmVyYWdlRW5hYmxlICA9IGJsZW5kU3RhdGUuc2FtcGxl
QWxwaGFUb0NvdmVyYWdlOworICAgIGJsZW5kRGVzYy5BbHBoYVRvQ292ZXJhZ2VFbmFibGUgID0g
a2V5LnNhbXBsZUFscGhhVG9Db3ZlcmFnZSAhPSAwID8gVFJVRSA6IEZBTFNFOwogICAgIGJsZW5k
RGVzYy5JbmRlcGVuZGVudEJsZW5kRW5hYmxlID0ga2V5LnJ0dk1heCA+IDEgPyBUUlVFIDogRkFM
U0U7CiAKLSAgICBydERlc2MwID0ge307CisgICAgLy8gRDNEMTEgQVBJIGFsd2F5cyBhY2NlcHRz
IGFuIGFycmF5IG9mIGJsZW5kIHN0YXRlcy4gSXRzIHZhbGlkaXR5IGRlcGVuZHMgb24gdGhlIGhh
cmR3YXJlCisgICAgLy8gZmVhdHVyZSBsZXZlbC4gR2l2ZW4gdGhhdCB3ZSBkbyBub3QgZXhwb3Nl
IEdMIGVudHJ5cG9pbnRzIHRoYXQgc2V0IHBlci1idWZmZXIgYmxlbmQgc3RhdGVzIG9uCisgICAg
Ly8gc3lzdGVtcyBsb3dlciB0aGFuIEZMMTBfMSwgdGhpcyBhcnJheSB3aWxsIGJlIGFsd2F5cyB2
YWxpZC4KIAotICAgIGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAgIEFTU0VSVChibGVuZFN0YXRl
QXJyYXkuc2l6ZSgpID49IEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFS
R0VUX0NPVU5UOyBpKyspCiAgICAgewotICAgICAgICBydERlc2MwLkJsZW5kRW5hYmxlICAgID0g
dHJ1ZTsKLSAgICAgICAgcnREZXNjMC5TcmNCbGVuZCAgICAgICA9IGdsX2QzZDExOjpDb252ZXJ0
QmxlbmRGdW5jKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IsIGZhbHNlKTsKLSAgICAgICAgcnRE
ZXNjMC5EZXN0QmxlbmQgICAgICA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3Rh
dGUuZGVzdEJsZW5kUkdCLCBmYWxzZSk7Ci0gICAgICAgIHJ0RGVzYzAuQmxlbmRPcCAgICAgICAg
PSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCKTsK
LSAgICAgICAgcnREZXNjMC5TcmNCbGVuZEFscGhhICA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRG
dW5jKGJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSwgdHJ1ZSk7Ci0gICAgICAgIHJ0RGVzYzAu
RGVzdEJsZW5kQWxwaGEgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRl
c3RCbGVuZEFscGhhLCB0cnVlKTsKLSAgICAgICAgcnREZXNjMC5CbGVuZE9wQWxwaGEgICA9IGds
X2QzZDExOjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSk7Ci0g
ICAgfQorICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX0JMRU5EX0RFU0MgJnJ0RGVzYyA9IGJs
ZW5kRGVzYy5SZW5kZXJUYXJnZXRbaV07CiAKLSAgICBydERlc2MwLlJlbmRlclRhcmdldFdyaXRl
TWFzayA9IGtleS5ydHZNYXNrc1swXTsKKyAgICAgICAgcnREZXNjID0ge307ICAvLyBvdGhlcndp
c2UgaXRzIGNvbnRlbnQgbWF5IGJlIHVuZGVmaW5lZAogCi0gICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDE7IGkgPCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVDsgaSsrKQot
ICAgIHsKLSAgICAgICAgYmxlbmREZXNjLlJlbmRlclRhcmdldFtpXSAgICAgICAgICAgICAgICAg
ICAgICAgPSBydERlc2MwOwotICAgICAgICBibGVuZERlc2MuUmVuZGVyVGFyZ2V0W2ldLlJlbmRl
clRhcmdldFdyaXRlTWFzayA9IGtleS5ydHZNYXNrc1tpXTsKKyAgICAgICAgY29uc3QgZ2w6OkJs
ZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBibGVuZFN0YXRlQXJyYXlbaV07CisgICAgICAgIGlmIChi
bGVuZFN0YXRlLmJsZW5kKQorICAgICAgICB7CisgICAgICAgICAgICBydERlc2MuQmxlbmRFbmFi
bGUgICAgPSB0cnVlOworICAgICAgICAgICAgcnREZXNjLlNyY0JsZW5kICAgICAgID0gZ2xfZDNk
MTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiwgZmFsc2UpOwor
ICAgICAgICAgICAgcnREZXNjLkRlc3RCbGVuZCAgICAgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVu
ZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IsIGZhbHNlKTsKKyAgICAgICAgICAgIHJ0RGVz
Yy5CbGVuZE9wICAgICAgICA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJs
ZW5kRXF1YXRpb25SR0IpOworICAgICAgICAgICAgcnREZXNjLlNyY0JsZW5kQWxwaGEgID0gZ2xf
ZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhLCB0cnVl
KTsKKyAgICAgICAgICAgIHJ0RGVzYy5EZXN0QmxlbmRBbHBoYSA9IGdsX2QzZDExOjpDb252ZXJ0
QmxlbmRGdW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEsIHRydWUpOworICAgICAgICAgICAg
cnREZXNjLkJsZW5kT3BBbHBoYSAgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZE9wKGJsZW5kU3Rh
dGUuYmxlbmRFcXVhdGlvbkFscGhhKTsKKyAgICAgICAgfQorCisgICAgICAgIHJ0RGVzYy5SZW5k
ZXJUYXJnZXRXcml0ZU1hc2sgPSBrZXkucnR2TWFza3NbaV07CiAgICAgfQogCiAgICAgZDNkMTE6
OkJsZW5kU3RhdGUgZDNkQmxlbmRTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9SZW5kZXJTdGF0ZUNhY2hlLmgKaW5kZXggNWY4OTFmZDlkNzhkY2Y3YzlhZWI5YzUxYmU0OGNl
NThlYjgyNDNhZS4uNWJmYzU5MzEzZWIxYmMxMmRmMGU5YWZkYzg1YjAwZTQ4MTVjZDUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmgKQEAgLTY5
LDcgKzY5LDggQEAgY2xhc3MgUmVuZGVyU3RhdGVDYWNoZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
CiAgICAgc3RhdGljIGQzZDExOjpCbGVuZFN0YXRlS2V5IEdldEJsZW5kU3RhdGVLZXkoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRnJhbWVidWZmZXIxMSAqZnJhbWVidWZmZXIxMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0
ZSAmYmxlbmRTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGVBcnJheSAmYmxlbmRTdGF0ZUFycmF5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2FtcGxl
QWxwaGFUb0NvdmVyYWdlKTsKICAgICBhbmdsZTo6UmVzdWx0IGdldEJsZW5kU3RhdGUoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlcmVyMTEgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAma2V5LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
UmVuZGVyZXIxMS5jcHAKaW5kZXggMGNlNDhkYTU4N2ExZjA5MmI5M2EwOGNlMjBiZjg0N2I2ZDNk
YWQ1NS4uYTdjZTBlOTU0YjljYjQyMmVjNWZkYWEyMjQ0NTQ4NDFkOTk2ZmY1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9SZW5kZXJlcjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwCkBAIC0zODY0LDcgKzM4NjQsNyBA
QCB2b2lkIFJlbmRlcmVyMTE6OmluaXRpYWxpemVGZWF0dXJlcyhhbmdsZTo6RmVhdHVyZXNEM0Qg
KmZlYXR1cmVzKSBjb25zdAogICAgIHsKICAgICAgICAgZDNkMTE6OkluaXRpYWxpemVGZWF0dXJl
cyhtUmVuZGVyZXIxMURldmljZUNhcHMsIG1BZGFwdGVyRGVzY3JpcHRpb24sIGZlYXR1cmVzKTsK
ICAgICB9Ci0gICAgT3ZlcnJpZGVGZWF0dXJlc1dpdGhEaXNwbGF5U3RhdGUoZmVhdHVyZXMsIG1E
aXNwbGF5LT5nZXRTdGF0ZSgpKTsKKyAgICBBcHBseUZlYXR1cmVPdmVycmlkZXMoZmVhdHVyZXMs
IG1EaXNwbGF5LT5nZXRTdGF0ZSgpKTsKIH0KIAogRGV2aWNlSW1wbCAqUmVuZGVyZXIxMTo6Y3Jl
YXRlRUdMRGV2aWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFn
ZXIxMS5jcHAKaW5kZXggYjIzZTgzMTI0ZmY1NTZmOWE0NzY1NjVlY2ZkZTAzMzVkOWE4YjVjMS4u
N2ViN2YxODk2NzBiNGI1OTU2ZmUyNTFmOGMxMjg0ZmI2MzU2YTJjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0
ZU1hbmFnZXIxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAKQEAgLTE5Myw4ICsxOTMsOSBA
QCB2b2lkIFNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQoY29uc3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQz
RCwKICAgICBzb3J0ZWRBdHRyaWJ1dGVzT3V0LT5jbGVhcigpOwogCiAgICAgY29uc3QgQXR0cmli
SW5kZXhBcnJheSAmbG9jYXRpb25Ub1NlbWFudGljID0gcHJvZ3JhbUQzRC5nZXRBdHRyaWJMb2Nh
dGlvblRvRDNEU2VtYW50aWNzKCk7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZl
eGVjdXRhYmxlICAgID0gcHJvZ3JhbUQzRC5nZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxl
KCk7CiAKLSAgICBmb3IgKGF1dG8gbG9jYXRpb25JbmRleCA6IHByb2dyYW1EM0QuZ2V0U3RhdGUo
KS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkpCisgICAgZm9yIChhdXRvIGxvY2F0aW9u
SW5kZXggOiBleGVjdXRhYmxlLmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSkKICAgICB7
CiAgICAgICAgIGludCBkM2RTZW1hbnRpYyA9IGxvY2F0aW9uVG9TZW1hbnRpY1tsb2NhdGlvbklu
ZGV4XTsKICAgICAgICAgaWYgKHNvcnRlZEF0dHJpYnV0ZXNPdXQtPnNpemUoKSA8PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGQzZFNlbWFudGljKSkKQEAgLTY2NSw2ICs2NjYsOCBAQCBhbmdsZTo6UmVz
dWx0IFNoYWRlckNvbnN0YW50czExOjp1cGRhdGVCdWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiBTdGF0ZU1hbmFnZXIxMTo6U3RhdGVNYW5hZ2VyMTEoUmVuZGVyZXIxMSAqcmVuZGVy
ZXIpCiAgICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbUludGVybmFsRGlydHlCaXRz
KCksCisgICAgICBtQ3VyU2FtcGxlQWxwaGFUb0NvdmVyYWdlKGZhbHNlKSwKKyAgICAgIG1DdXJC
bGVuZFN0YXRlQXJyYXkoKSwKICAgICAgIG1DdXJCbGVuZENvbG9yKDAsIDAsIDAsIDApLAogICAg
ICAgbUN1clNhbXBsZU1hc2soMCksCiAgICAgICBtQ3VyU3RlbmNpbFJlZigwKSwKQEAgLTY5NCwy
NSArNjk3LDEyIEBAIFN0YXRlTWFuYWdlcjExOjpTdGF0ZU1hbmFnZXIxMShSZW5kZXJlcjExICpy
ZW5kZXJlcikKICAgICAgIG1WZXJ0ZXhEYXRhTWFuYWdlcihyZW5kZXJlciksCiAgICAgICBtSW5k
ZXhEYXRhTWFuYWdlcihyZW5kZXJlciksCiAgICAgICBtSXNNdWx0aXZpZXdFbmFibGVkKGZhbHNl
KSwKKyAgICAgIG1JbmRlcGVuZGVudEJsZW5kU3RhdGVzKGZhbHNlKSwKICAgICAgIG1FbXB0eVNl
cmlhbChtUmVuZGVyZXItPmdlbmVyYXRlU2VyaWFsKCkpLAogICAgICAgbVByb2dyYW1EM0QobnVs
bHB0ciksCiAgICAgICBtVmVydGV4QXJyYXkxMShudWxscHRyKSwKICAgICAgIG1GcmFtZWJ1ZmZl
cjExKG51bGxwdHIpCiB7Ci0gICAgbUN1ckJsZW5kU3RhdGUuYmxlbmQgICAgICAgICAgICAgICAg
ID0gZmFsc2U7Ci0gICAgbUN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgICAgICAgID0gR0xf
T05FOwotICAgIG1DdXJCbGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAgICAgICAgICA9IEdMX1pFUk87
Ci0gICAgbUN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSAgICAgID0gR0xfT05FOwotICAg
IG1DdXJCbGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhICAgICAgICA9IEdMX1pFUk87Ci0gICAgbUN1
ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJHQiAgICAgID0gR0xfRlVOQ19BREQ7Ci0gICAgbUN1
ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhICAgID0gR0xfRlVOQ19BREQ7Ci0gICAgbUN1
ckJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICAgICAgICAgID0gdHJ1ZTsKLSAgICBtQ3VyQmxlbmRT
dGF0ZS5jb2xvck1hc2tCbHVlICAgICAgICAgPSB0cnVlOwotICAgIG1DdXJCbGVuZFN0YXRlLmNv
bG9yTWFza0dyZWVuICAgICAgICA9IHRydWU7Ci0gICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNr
QWxwaGEgICAgICAgID0gdHJ1ZTsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292
ZXJhZ2UgPSBmYWxzZTsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5kaXRoZXIgICAgICAgICAgICAgICAg
PSBmYWxzZTsKLQogICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFRlc3QgICAgICAgICAg
ICAgICAgPSBmYWxzZTsKICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhGdW5jICAgICAg
ICAgICAgICAgID0gR0xfTEVTUzsKICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhNYXNr
ICAgICAgICAgICAgICAgID0gdHJ1ZTsKQEAgLTczOCw2ICs3MjgsNyBAQCBTdGF0ZU1hbmFnZXIx
MTo6U3RhdGVNYW5hZ2VyMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpCiAgICAgbUN1clJhc3RlclN0
YXRlLnBvbHlnb25PZmZzZXRVbml0cyAgPSAwLjBmOwogICAgIG1DdXJSYXN0ZXJTdGF0ZS5wb2lu
dERyYXdNb2RlICAgICAgID0gZmFsc2U7CiAgICAgbUN1clJhc3RlclN0YXRlLm11bHRpU2FtcGxl
ICAgICAgICAgPSBmYWxzZTsKKyAgICBtQ3VyUmFzdGVyU3RhdGUuZGl0aGVyICAgICAgICAgICAg
ICA9IGZhbHNlOwogCiAgICAgLy8gU3RhcnQgd2l0aCBhbGwgaW50ZXJuYWwgZGlydHkgYml0cyBz
ZXQgZXhjZXB0IERJUlRZX0JJVF9DT01QVVRFX1NSVlVBVl9TVEFURSBhbmQKICAgICAvLyBESVJU
WV9CSVRfR1JBUEhJQ1NfU1JWVUFWX1NUQVRFLgpAQCAtOTU5LDU0ICs5NTAsOTQgQEAgdm9pZCBT
dGF0ZU1hbmFnZXIxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBnbDo6U3RhdGU6OkRpcnQKICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6
OkRJUlRZX0JJVF9CTEVORF9FUVVBVElPTlM6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRl
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJHQiAhPSBt
Q3VyQmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCIHx8Ci0gICAgICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhICE9IG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRp
b25BbHBoYSkKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZUFycmF5ICZibGVu
ZFN0YXRlQXJyYXkgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlQXJyYXkoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBzaXplX3Qgc3RhdGVzQ291bnQgPSBtSW5kZXBlbmRlbnRCbGVuZFN0YXRlcyA/IGJs
ZW5kU3RhdGVBcnJheS5zaXplKCkgOiAxOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGVzQ291bnQ7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX1NUQVRFKTsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBi
bGVuZFN0YXRlQXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgIGlmICghYmxlbmRTdGF0ZS5i
bGVuZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U3Vic2VxdWVudCBzeW5jIHN0YWdlcyBlbmZvcmNlIGRlZmF1bHQgdmFsdWVzIGZvciBidWZmZXJz
IHdpdGggZGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJsZW5kaW5nIGFueXdh
eSwgbm8gbmVlZCB0byB0b3VjaCBpbnRlcm5hbCBkaXJ0eSBiaXRzLgorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmN1ckJsZW5kU3RhdGUgPSBtQ3VyQmxlbmRTdGF0
ZUFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0
aW9uUkdCICE9IGN1ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJHQiB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEgIT0gY3VyQmxlbmRTdGF0
ZS5ibGVuZEVxdWF0aW9uQWxwaGEpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX1NUQVRF
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9CTEVORF9GVU5DUzoKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRT
dGF0ZSA9IHN0YXRlLmdldEJsZW5kU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoYmxlbmRT
dGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBtQ3VyQmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiB8fAot
ICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAhPSBtQ3VyQmxlbmRT
dGF0ZS5kZXN0QmxlbmRSR0IgfHwKLSAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZEFscGhhICE9IG1DdXJCbGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgfHwKLSAgICAg
ICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSAhPSBtQ3VyQmxlbmRTdGF0
ZS5kZXN0QmxlbmRBbHBoYSkKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZUFy
cmF5ICZibGVuZFN0YXRlQXJyYXkgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlQXJyYXkoKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBzaXplX3Qgc3RhdGVzQ291bnQgPSBtSW5kZXBlbmRlbnRCbGVuZFN0
YXRlcyA/IGJsZW5kU3RhdGVBcnJheS5zaXplKCkgOiAxOworICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RhdGVzQ291bnQ7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5E
X1NUQVRFKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5k
U3RhdGUgPSBibGVuZFN0YXRlQXJyYXlbaV07CisgICAgICAgICAgICAgICAgICAgIGlmICghYmxl
bmRTdGF0ZS5ibGVuZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gU3Vic2VxdWVudCBzeW5jIHN0YWdlcyBlbmZvcmNlIGRlZmF1bHQgdmFsdWVzIGZv
ciBidWZmZXJzIHdpdGggZGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJsZW5k
aW5nIGFueXdheSwgbm8gbmVlZCB0byB0b3VjaCBpbnRlcm5hbCBkaXJ0eSBiaXRzLgorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmN1ckJsZW5kU3RhdGUgPSBtQ3Vy
QmxlbmRTdGF0ZUFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZS5z
b3VyY2VCbGVuZFJHQiAhPSBjdXJCbGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAhPSBjdXJCbGVuZFN0YXRl
LmRlc3RCbGVuZFJHQiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZEFscGhhICE9IGN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSAhPSBjdXJCbGVuZFN0
YXRlLmRlc3RCbGVuZEFscGhhKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9TVEFURSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQkxFTkRfRU5BQkxFRDoKLSAg
ICAgICAgICAgICAgICBpZiAoc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpLmJsZW5kICE9IG1DdXJCbGVu
ZFN0YXRlLmJsZW5kKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpC
bGVuZFN0YXRlQXJyYXkgJmJsZW5kU3RhdGVBcnJheSA9IHN0YXRlLmdldEJsZW5kU3RhdGVBcnJh
eSgpOworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzdGF0ZXNDb3VudCA9IG1JbmRlcGVu
ZGVudEJsZW5kU3RhdGVzID8gYmxlbmRTdGF0ZUFycmF5LnNpemUoKSA6IDE7CisgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZXNDb3VudDsgaSsrKQogICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUludGVybmFsRGlydHlCaXRzLnNldChESVJU
WV9CSVRfQkxFTkRfU1RBVEUpOworICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZUFy
cmF5W2ldLmJsZW5kICE9IG1DdXJCbGVuZFN0YXRlQXJyYXlbaV0uYmxlbmQpCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX0JMRU5EX1NUQVRFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJ
UlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfRU5BQkxFRDoKLSAgICAgICAgICAgICAg
ICBpZiAoc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSAhPQotICAg
ICAgICAgICAgICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UpCisg
ICAgICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgp
ICE9IG1DdXJTYW1wbGVBbHBoYVRvQ292ZXJhZ2UpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9TVEFU
RSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9ESVRIRVJfRU5BQkxFRDoKLSAgICAgICAgICAg
ICAgICBpZiAoc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpLmRpdGhlciAhPSBtQ3VyQmxlbmRTdGF0ZS5k
aXRoZXIpCisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmRp
dGhlciAhPSBtQ3VyUmFzdGVyU3RhdGUuZGl0aGVyKQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgbUludGVybmFsRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfU1RB
VEUpOworICAgICAgICAgICAgICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KERJUlRZX0JJ
VF9SQVNURVJJWkVSX1NUQVRFKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NPTE9SX01BU0s6
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJs
ZW5kU3RhdGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJs
ZW5kU3RhdGUuY29sb3JNYXNrUmVkICE9IG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza1JlZCB8fAot
ICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuICE9IG1DdXJCbGVu
ZFN0YXRlLmNvbG9yTWFza0dyZWVuIHx8Ci0gICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUu
Y29sb3JNYXNrQmx1ZSAhPSBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlIHx8Ci0gICAgICAg
ICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUu
Y29sb3JNYXNrQWxwaGEpCisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGVBcnJh
eSAmYmxlbmRTdGF0ZUFycmF5ID0gc3RhdGUuZ2V0QmxlbmRTdGF0ZUFycmF5KCk7CisgICAgICAg
ICAgICAgICAgY29uc3Qgc2l6ZV90IHN0YXRlc0NvdW50ID0gbUluZGVwZW5kZW50QmxlbmRTdGF0
ZXMgPyBibGVuZFN0YXRlQXJyYXkuc2l6ZSgpIDogMTsKKyAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0YXRlc0NvdW50OyBpKyspCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9T
VEFURSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0
YXRlICAgID0gYmxlbmRTdGF0ZUFycmF5W2ldOworICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6QmxlbmRTdGF0ZSAmY3VyQmxlbmRTdGF0ZSA9IG1DdXJCbGVuZFN0YXRlQXJyYXlbaV07Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChibGVuZFN0YXRlLmNvbG9yTWFza1JlZCAhPSBjdXJCbGVu
ZFN0YXRlLmNvbG9yTWFza1JlZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0
ZS5jb2xvck1hc2tHcmVlbiAhPSBjdXJCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgIT0gY3VyQmxlbmRT
dGF0ZS5jb2xvck1hc2tCbHVlIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRl
LmNvbG9yTWFza0FscGhhICE9IGN1ckJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0
cy5zZXQoRElSVFlfQklUX0JMRU5EX1NUQVRFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTE3NSw4ICsxMjA2LDggQEAgdm9pZCBT
dGF0ZU1hbmFnZXIxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBnbDo6U3RhdGU6OkRpcnQKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlUHJvZ3JhbUF0b21p
Y0NvdW50ZXJCdWZmZXJzKCk7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVByb2dyYW1TaGFk
ZXJTdG9yYWdlQnVmZmVycygpOwogICAgICAgICAgICAgICAgIGludmFsaWRhdGVEcml2ZXJVbmlm
b3JtcygpOwotICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtID0gc3Rh
dGUuZ2V0UHJvZ3JhbSgpOwotICAgICAgICAgICAgICAgIGlmICghcHJvZ3JhbSB8fCAhcHJvZ3Jh
bS0+aGFzTGlua2VkU2hhZGVyU3RhZ2UoZ2w6OlNoYWRlclR5cGU6OkNvbXB1dGUpKQorICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IHN0YXRl
LmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxl
IHx8ICFleGVjdXRhYmxlLT5pc0NvbXB1dGUoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX1BSSU1JVElWRV9U
T1BPTE9HWSk7CiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVWZXJ0ZXhCdWZmZXIoKTsK
QEAgLTEyMzAsNDIgKzEyNjEsMzYgQEAgdm9pZCBTdGF0ZU1hbmFnZXIxMTo6aGFuZGxlTXVsdGl2
aWV3RHJhd0ZyYW1lYnVmZmVyQ2hhbmdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb24KIH0KIAogYW5n
bGU6OlJlc3VsdCBTdGF0ZU1hbmFnZXIxMTo6c3luY0JsZW5kU3RhdGUoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlQXJyYXkgJmJsZW5k
U3RhdGVBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpDb2xvckYgJmJsZW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzaykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYW1w
bGVBbHBoYVRvQ292ZXJhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGVtdWxhdGVDb25zdGFudEFscGhhKQogewogICAgIGNvbnN0IGQzZDExOjpC
bGVuZFN0YXRlICpkeEJsZW5kU3RhdGUgPSBudWxscHRyOwotICAgIGNvbnN0IGQzZDExOjpCbGVu
ZFN0YXRlS2V5ICZrZXkgPQotICAgICAgICBSZW5kZXJTdGF0ZUNhY2hlOjpHZXRCbGVuZFN0YXRl
S2V5KGNvbnRleHQsIG1GcmFtZWJ1ZmZlcjExLCBibGVuZFN0YXRlKTsKKyAgICBjb25zdCBkM2Qx
MTo6QmxlbmRTdGF0ZUtleSAma2V5ICAgICAgID0gUmVuZGVyU3RhdGVDYWNoZTo6R2V0QmxlbmRT
dGF0ZUtleSgKKyAgICAgICAgY29udGV4dCwgbUZyYW1lYnVmZmVyMTEsIGJsZW5kU3RhdGVBcnJh
eSwgc2FtcGxlQWxwaGFUb0NvdmVyYWdlKTsKIAogICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdl
dEJsZW5kU3RhdGUoY29udGV4dCwga2V5LCAmZHhCbGVuZFN0YXRlKSk7CiAKICAgICBBU1NFUlQo
ZHhCbGVuZFN0YXRlICE9IG51bGxwdHIpOwogCisgICAgLy8gRDNEMTEgZG9lcyBub3Qgc3VwcG9y
dCBDT05TVEFOVF9BTFBIQSBhcyBzb3VyY2Ugb3IgZGVzdGluYXRpb24gY29sb3IgZmFjdG9yLCBz
byBBTkdMRSBzZXRzCisgICAgLy8gdGhlIGZhY3RvciB0byBDT05TVEFOVF9DT0xPUiBhbmQgc3dp
enpsZXMgdGhlIGNvbG9yIHZhbHVlIHRvIGFhYWEuIEZvciB0aGlzIHJlYXNvbiwgaXQncworICAg
IC8vIGltcG9zc2libGUgdG8gc2ltdWx0YW5lb3VzbHkgdXNlIENPTlNUQU5UX0FMUEhBIGFuZCBD
T05TVEFOVF9DT0xPUiBhcyBzb3VyY2Ugb3IgZGVzdGluYXRpb24KKyAgICAvLyBjb2xvciBmYWN0
b3JzIGluIHRoZSBzYW1lIGJsZW5kIHN0YXRlLiBUaGlzIGlzIGVuZm9yY2VkIGluIHRoZSB2YWxp
ZGF0aW9uIGxheWVyLgogICAgIGZsb2F0IGJsZW5kQ29sb3JzWzRdID0gezAuMGZ9OwotICAgIGlm
IChibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmCi0gICAg
ICAgIGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgIT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FM
UEhBICYmCi0gICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FM
UEhBICYmCi0gICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19D
T05TVEFOVF9BTFBIQSkKLSAgICB7Ci0gICAgICAgIGJsZW5kQ29sb3JzWzBdID0gYmxlbmRDb2xv
ci5yZWQ7Ci0gICAgICAgIGJsZW5kQ29sb3JzWzFdID0gYmxlbmRDb2xvci5ncmVlbjsKLSAgICAg
ICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENvbG9yLmJsdWU7Ci0gICAgICAgIGJsZW5kQ29sb3Jz
WzNdID0gYmxlbmRDb2xvci5hbHBoYTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
YmxlbmRDb2xvcnNbMF0gPSBibGVuZENvbG9yLmFscGhhOwotICAgICAgICBibGVuZENvbG9yc1sx
XSA9IGJsZW5kQ29sb3IuYWxwaGE7Ci0gICAgICAgIGJsZW5kQ29sb3JzWzJdID0gYmxlbmRDb2xv
ci5hbHBoYTsKLSAgICAgICAgYmxlbmRDb2xvcnNbM10gPSBibGVuZENvbG9yLmFscGhhOwotICAg
IH0KKyAgICBibGVuZENvbG9yc1swXSAgICAgICA9IGVtdWxhdGVDb25zdGFudEFscGhhID8gYmxl
bmRDb2xvci5hbHBoYSA6IGJsZW5kQ29sb3IucmVkOworICAgIGJsZW5kQ29sb3JzWzFdICAgICAg
ID0gZW11bGF0ZUNvbnN0YW50QWxwaGEgPyBibGVuZENvbG9yLmFscGhhIDogYmxlbmRDb2xvci5n
cmVlbjsKKyAgICBibGVuZENvbG9yc1syXSAgICAgICA9IGVtdWxhdGVDb25zdGFudEFscGhhID8g
YmxlbmRDb2xvci5hbHBoYSA6IGJsZW5kQ29sb3IuYmx1ZTsKKyAgICBibGVuZENvbG9yc1szXSAg
ICAgICA9IGJsZW5kQ29sb3IuYWxwaGE7CiAKICAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRl
eHQoKS0+T01TZXRCbGVuZFN0YXRlKGR4QmxlbmRTdGF0ZS0+Z2V0KCksIGJsZW5kQ29sb3JzLCBz
YW1wbGVNYXNrKTsKIAotICAgIG1DdXJCbGVuZFN0YXRlID0gYmxlbmRTdGF0ZTsKLSAgICBtQ3Vy
QmxlbmRDb2xvciA9IGJsZW5kQ29sb3I7Ci0gICAgbUN1clNhbXBsZU1hc2sgPSBzYW1wbGVNYXNr
OworICAgIG1DdXJCbGVuZFN0YXRlQXJyYXkgICAgICAgPSBibGVuZFN0YXRlQXJyYXk7CisgICAg
bUN1ckJsZW5kQ29sb3IgICAgICAgICAgICA9IGJsZW5kQ29sb3I7CisgICAgbUN1clNhbXBsZU1h
c2sgICAgICAgICAgICA9IHNhbXBsZU1hc2s7CisgICAgbUN1clNhbXBsZUFscGhhVG9Db3ZlcmFn
ZSA9IHNhbXBsZUFscGhhVG9Db3ZlcmFnZTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKIH0KQEAgLTE1MzEsNyArMTU1Niw3IEBAIHZvaWQgU3RhdGVNYW5hZ2VyMTE6OnBy
b2Nlc3NGcmFtZWJ1ZmZlckludmFsaWRhdGlvbihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkK
ICAgICAgICAgbUN1ckRpc2FibGVTdGVuY2lsID0gZGlzYWJsZVN0ZW5jaWw7CiAgICAgfQogCi0g
ICAgYm9vbCBtdWx0aVNhbXBsZSA9IChmYm8tPmdldENhY2hlZFNhbXBsZXMoY29udGV4dCwgZ2w6
OkF0dGFjaG1lbnRTYW1wbGVUeXBlOjpFbXVsYXRlZCkgIT0gMCk7CisgICAgYm9vbCBtdWx0aVNh
bXBsZSA9IChmYm8tPmdldFNhbXBsZXMoY29udGV4dCkgIT0gMCk7CiAgICAgaWYgKG11bHRpU2Ft
cGxlICE9IG1DdXJSYXN0ZXJTdGF0ZS5tdWx0aVNhbXBsZSkKICAgICB7CiAgICAgICAgIG1JbnRl
cm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX1JBU1RFUklaRVJfU1RBVEUpOwpAQCAtMTkwOSw2
ICsxOTM0LDggQEAgYW5nbGU6OlJlc3VsdCBTdGF0ZU1hbmFnZXIxMTo6ZW5zdXJlSW5pdGlhbGl6
ZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAKICAgICBtSXNNdWx0aXZpZXdFbmFibGVk
ID0gZXh0ZW5zaW9ucy5tdWx0aXZpZXcgfHwgZXh0ZW5zaW9ucy5tdWx0aXZpZXcyOwogCisgICAg
bUluZGVwZW5kZW50QmxlbmRTdGF0ZXMgPSBleHRlbnNpb25zLmRyYXdCdWZmZXJzSW5kZXhlZEFu
eSgpOyAgLy8gcmVxdWlyZXMgRkwxMF8xCisKICAgICBBTkdMRV9UUlkobVZlcnRleERhdGFNYW5h
Z2VyLmluaXRpYWxpemUoY29udGV4dCkpOwogCiAgICAgbUN1cnJlbnRBdHRyaWJ1dGVzLnJlc2Vy
dmUoZ2w6Ok1BWF9WRVJURVhfQVRUUklCUyk7CkBAIC0yMDI2LDggKzIwNTMsOSBAQCBhbmdsZTo6
UmVzdWx0IFN0YXRlTWFuYWdlcjExOjpzeW5jQ3VycmVudFZhbHVlQXR0cmlicygKICAgICBjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4
QXR0cmliQ3VycmVudFZhbHVlRGF0YT4gJmN1cnJlbnRWYWx1ZXMpCiB7Ci0gICAgY29uc3QgYXV0
byAmYWN0aXZlQXR0cmlic01hc2sgID0gbVByb2dyYW1EM0QtPmdldFN0YXRlKCkuZ2V0QWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzaygpOwotICAgIGNvbnN0IGF1dG8gJmRpcnR5QWN0aXZlQXR0cmli
cyA9IChhY3RpdmVBdHRyaWJzTWFzayAmIG1EaXJ0eUN1cnJlbnRWYWx1ZUF0dHJpYnMpOworICAg
IGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSA9IG1Qcm9ncmFtRDNELT5n
ZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgY29uc3QgYXV0byAmYWN0aXZl
QXR0cmlic01hc2sgICAgICAgICAgID0gZXhlY3V0YWJsZS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlv
bnNNYXNrKCk7CisgICAgY29uc3QgYXV0byAmZGlydHlBY3RpdmVBdHRyaWJzICAgICAgICAgID0g
KGFjdGl2ZUF0dHJpYnNNYXNrICYgbURpcnR5Q3VycmVudFZhbHVlQXR0cmlicyk7CiAKICAgICBp
ZiAoIWRpcnR5QWN0aXZlQXR0cmlicy5hbnkoKSkKICAgICB7CkBAIC0yMjQ3LDggKzIyNzUsOSBA
QCBhbmdsZTo6UmVzdWx0IFN0YXRlTWFuYWdlcjExOjp1cGRhdGVTdGF0ZShjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBBTkdMRV9UUlkoc3luY1Jhc3Rlcml6ZXJT
dGF0ZShjb250ZXh0LCBtb2RlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIERJUlRZX0JJVF9CTEVORF9TVEFURToKLSAgICAgICAgICAgICAgICBBTkdMRV9UUlko
c3luY0JsZW5kU3RhdGUoY29udGV4dCwgZ2xTdGF0ZS5nZXRCbGVuZFN0YXRlKCksIGdsU3RhdGUu
Z2V0QmxlbmRDb2xvcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVNYXNrKSk7CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKHN5bmNCbGVuZFN0YXRl
KAorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBnbFN0YXRlLmdldEJsZW5kU3RhdGVBcnJh
eSgpLCBnbFN0YXRlLmdldEJsZW5kQ29sb3IoKSwgc2FtcGxlTWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgZ2xTdGF0ZS5pc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSwgZ2xTdGF0ZS5o
YXNDb25zdGFudEFscGhhQmxlbmRGdW5jKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRElSVFlfQklUX0RFUFRIX1NURU5DSUxfU1RBVEU6CiAgICAgICAgICAg
ICAgICAgQU5HTEVfVFJZKHN5bmNEZXB0aFN0ZW5jaWxTdGF0ZShjb250ZXh0KSk7CkBAIC0yNzAy
LDcgKzI3MzEsNyBAQCBhbmdsZTo6UmVzdWx0IFN0YXRlTWFuYWdlcjExOjphcHBseVRleHR1cmVz
Rm9yU1JWcyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBBU1NFUlQoIW1Qcm9ncmFt
RDNELT5pc1NhbXBsZXJNYXBwaW5nRGlydHkoKSk7CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBV
c2UgdGhlIFByb2dyYW0ncyBzYW1wbGVyIGJpbmRpbmdzLgotICAgIGNvbnN0IGdsOjpBY3RpdmVU
ZXh0dXJlUG9pbnRlckFycmF5ICZjb21wbGV0ZVRleHR1cmVzID0gZ2xTdGF0ZS5nZXRBY3RpdmVU
ZXh0dXJlc0NhY2hlKCk7CisgICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVzQ2FjaGUgJmNvbXBs
ZXRlVGV4dHVyZXMgPSBnbFN0YXRlLmdldEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsKIAogICAgIGNv
bnN0IGdsOjpSYW5nZVVJIHNhbXBsZXJSYW5nZSA9IG1Qcm9ncmFtRDNELT5nZXRVc2VkU2FtcGxl
clJhbmdlKHNoYWRlclR5cGUpOwogICAgIGZvciAodW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9
IHNhbXBsZXJSYW5nZS5sb3coKTsgc2FtcGxlckluZGV4IDwgc2FtcGxlclJhbmdlLmhpZ2goKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaAppbmRleCBkMjhj
ZGYzMTE0NjA0NzUzMzk3OTc1YzViMDhiYmJlNWM5YWRlMmZlLi4xODk5ZDlmMTJmNDBmM2ZjOWI3
MDQ0NjYyNDVkMjE2YzA5N2E0NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dGF0ZU1hbmFnZXIxMS5oCkBAIC0zMTMsOSArMzEzLDExIEBAIGNsYXNzIFN0YXRlTWFuYWdlcjEx
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UpOwogCiAgICAgYW5nbGU6
OlJlc3VsdCBzeW5jQmxlbmRTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3Rh
dGVBcnJheSAmYmxlbmRTdGF0ZUFycmF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkNvbG9yRiAmYmxlbmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBzYW1wbGVBbHBoYVRvQ292ZXJhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGVtdWxhdGVDb25zdGFudEFscGhhKTsKIAogICAgIGFu
Z2xlOjpSZXN1bHQgc3luY0RlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0KTsKIApAQCAtNDYxLDggKzQ2MywxMCBAQCBjbGFzcyBTdGF0ZU1hbmFnZXIxMSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIERpcnR5Qml0cyBtR3JhcGhpY3NEaXJ0eUJpdHNNYXNr
OwogICAgIERpcnR5Qml0cyBtQ29tcHV0ZURpcnR5Qml0c01hc2s7CiAKKyAgICBib29sIG1DdXJT
YW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisKICAgICAvLyBCbGVuZCBTdGF0ZQotICAgIGdsOjpCbGVu
ZFN0YXRlIG1DdXJCbGVuZFN0YXRlOworICAgIGdsOjpCbGVuZFN0YXRlQXJyYXkgbUN1ckJsZW5k
U3RhdGVBcnJheTsKICAgICBnbDo6Q29sb3JGIG1DdXJCbGVuZENvbG9yOwogICAgIHVuc2lnbmVk
IGludCBtQ3VyU2FtcGxlTWFzazsKIApAQCAtNTkyLDYgKzU5Niw4IEBAIGNsYXNzIFN0YXRlTWFu
YWdlcjExIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gQU5HTEVfbXVsdGl2aWV3
LgogICAgIGJvb2wgbUlzTXVsdGl2aWV3RW5hYmxlZDsKIAorICAgIGJvb2wgbUluZGVwZW5kZW50
QmxlbmRTdGF0ZXM7CisKICAgICAvLyBEcml2ZXIgQ29uc3RhbnRzLgogICAgIGdsOjpTaGFkZXJN
YXA8ZDNkMTE6OkJ1ZmZlcj4gbVNoYWRlckRyaXZlckNvbnN0YW50QnVmZmVyczsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9TdHJlYW1Qcm9kdWNlckQzRFRleHR1cmUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlckQzRFRleHR1
cmUuY3BwCmluZGV4IDk5OGNjZjBiZWY4ZGNlMTViZTY0YzkxYTEzOGY1MTJiMDMxMWVkODEuLjdh
ZmNjYmJlZGJjMTFmMDdiNGRiMGY5NmM1MWM5ZDUzNjBiM2EwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFt
UHJvZHVjZXJEM0RUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZS5jcHAK
QEAgLTcxLDYgKzcxLDkgQEAgZWdsOjpFcnJvciBHZXRHTERlc2NGcm9tVGV4KElEM0QxMVRleHR1
cmUyRCAqY29uc3QgdGV4LAogICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9V
Tk9STToKICAgICAgICAgICAgIHBsYW5lRm9ybWF0c1swXSA9IEdMX1JHQkExNl9FWFQ7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQ6CisgICAgICAgICAgICBwbGFuZUZvcm1hdHNbMF0gPSBHTF9SR0JBMTZGOworICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBlZ2w6OkVn
bEJhZFBhcmFtZXRlcigpIDw8ICJVbnN1cHBvcnRlZCBmb3JtYXQiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0
ZXhBcnJheTExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAKaW5kZXggOGZiYjc3YTMwODIyNTQ1MTgw
MzRjMWZjZTI4ZTNhMDk0NDI3NDdlMi4uNWY4MzRiNWM4ZGJjNjNkM2JjYzM3NGVjYTE1YTE3ZWU0
NDJkNzdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEu
Y3BwCkBAIC0xMzUsMTMgKzEzNSwxNCBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleEFycmF5MTE6OnN5
bmNTdGF0ZUZvckRyYXcoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgY29uc3QgZ2w6
OlN0YXRlICZnbFN0YXRlICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIGNvbnN0IGdsOjpQ
cm9ncmFtICpwcm9ncmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgQVNTRVJUKHByb2dy
YW0pOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSA9IHByb2dy
YW0tPmdldEV4ZWN1dGFibGUoKTsKKwogICAgIG1BcHBsaWVkTnVtVmlld3NUb0Rpdmlzb3IgPSAo
cHJvZ3JhbS0+dXNlc011bHRpdmlldygpID8gcHJvZ3JhbS0+Z2V0TnVtVmlld3MoKSA6IDEpOwog
CiAgICAgaWYgKG1BdHRyaWJzVG9UcmFuc2xhdGUuYW55KCkpCiAgICAgewotICAgICAgICBjb25z
dCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUxvY2F0aW9ucyA9Ci0gICAgICAgICAgICBnbFN0
YXRlLmdldFByb2dyYW0oKS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOwotICAgICAg
ICBnbDo6QXR0cmlidXRlc01hc2sgYWN0aXZlRGlydHlBdHRyaWJzID0gKG1BdHRyaWJzVG9UcmFu
c2xhdGUgJiBhY3RpdmVMb2NhdGlvbnMpOworICAgICAgICBjb25zdCBnbDo6QXR0cmlidXRlc01h
c2sgJmFjdGl2ZUxvY2F0aW9ucyA9IGV4ZWN1dGFibGUuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzaygpOworICAgICAgICBnbDo6QXR0cmlidXRlc01hc2sgYWN0aXZlRGlydHlBdHRyaWJzICAg
ICA9IChtQXR0cmlic1RvVHJhbnNsYXRlICYgYWN0aXZlTG9jYXRpb25zKTsKICAgICAgICAgaWYg
KGFjdGl2ZURpcnR5QXR0cmlicy5hbnkoKSkKICAgICAgICAgewogICAgICAgICAgICAgQU5HTEVf
VFJZKHVwZGF0ZURpcnR5QXR0cmlicyhjb250ZXh0LCBhY3RpdmVEaXJ0eUF0dHJpYnMpKTsKQEAg
LTE1MSw5ICsxNTIsOCBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleEFycmF5MTE6OnN5bmNTdGF0ZUZv
ckRyYXcoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAobUR5bmFtaWNBdHRy
aWJzTWFzay5hbnkoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAm
YWN0aXZlTG9jYXRpb25zID0KLSAgICAgICAgICAgIGdsU3RhdGUuZ2V0UHJvZ3JhbSgpLT5nZXRB
Y3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7Ci0gICAgICAgIGdsOjpBdHRyaWJ1dGVzTWFzayBh
Y3RpdmVEeW5hbWljQXR0cmlicyA9IChtRHluYW1pY0F0dHJpYnNNYXNrICYgYWN0aXZlTG9jYXRp
b25zKTsKKyAgICAgICAgY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVMb2NhdGlvbnMg
PSBleGVjdXRhYmxlLmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKTsKKyAgICAgICAgZ2w6
OkF0dHJpYnV0ZXNNYXNrIGFjdGl2ZUR5bmFtaWNBdHRyaWJzICAgPSAobUR5bmFtaWNBdHRyaWJz
TWFzayAmIGFjdGl2ZUxvY2F0aW9ucyk7CiAKICAgICAgICAgaWYgKGFjdGl2ZUR5bmFtaWNBdHRy
aWJzLmFueSgpKQogICAgICAgICB7CkBAIC0yMzUsNyArMjM1LDggQEAgdm9pZCBWZXJ0ZXhBcnJh
eTExOjp1cGRhdGVWZXJ0ZXhBdHRyaWJTdG9yYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LAogCiBib29sIFZlcnRleEFycmF5MTE6Omhhc0FjdGl2ZUR5bmFtaWNBdHRyaWIoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgY29uc3QgYXV0byAmYWN0aXZlTG9jYXRpb25zID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCktPmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9u
c01hc2soKTsKKyAgICBjb25zdCBhdXRvICZhY3RpdmVMb2NhdGlvbnMgPQorICAgICAgICBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxlKCktPmdldEFjdGl2ZUF0dHJpYkxv
Y2F0aW9uc01hc2soKTsKICAgICBnbDo6QXR0cmlidXRlc01hc2sgYWN0aXZlRHluYW1pY0F0dHJp
YnMgPSAobUR5bmFtaWNBdHRyaWJzTWFzayAmIGFjdGl2ZUxvY2F0aW9ucyk7CiAgICAgcmV0dXJu
IGFjdGl2ZUR5bmFtaWNBdHRyaWJzLmFueSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9k
YXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbgppbmRleCA4OTFkMzBkMjUyOWU2OWI1NmVm
NzU5Yjc4ZDhmYTc3OWQwYjhhY2E1Li43Y2Q1ZDdkZTcxY2NkNzVlM2RiMmExZGQzOGM3YjFmOTU4
YjZmN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0
X2RhdGEuanNvbgpAQCAtNzksMTEgKzc5LDExIEBACiAgICAgIkJDM19VTk9STSI6ICJCQzNfUkdC
QV9VTk9STV9CTE9DSyIsCiAgICAgIkJDM19VTk9STV9TUkdCIjogIkJDM19SR0JBX1VOT1JNX1NS
R0JfQkxPQ0siLAogICAgICJCQzRfVFlQRUxFU1MiOiAiIiwKLSAgICAiQkM0X1VOT1JNIjogIiIs
Ci0gICAgIkJDNF9TTk9STSI6ICIiLAorICAgICJCQzRfVU5PUk0iOiAiQkM0X1JFRF9VTk9STV9C
TE9DSyIsCisgICAgIkJDNF9TTk9STSI6ICJCQzRfUkVEX1NOT1JNX0JMT0NLIiwKICAgICAiQkM1
X1RZUEVMRVNTIjogIiIsCi0gICAgIkJDNV9VTk9STSI6ICIiLAotICAgICJCQzVfU05PUk0iOiAi
IiwKKyAgICAiQkM1X1VOT1JNIjogIkJDNV9SR19VTk9STV9CTE9DSyIsCisgICAgIkJDNV9TTk9S
TSI6ICJCQzVfUkdfU05PUk1fQkxPQ0siLAogICAgICJCNUc2UjVfVU5PUk0iOiAiIiwKICAgICAi
QjVHNVI1QTFfVU5PUk0iOiAiIiwKICAgICAiQjhHOFI4QThfVU5PUk0iOiAiIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5j
cHAKaW5kZXggYmZjZjA1NTBiMmI4MDQ5MmU0YzBlZDQxMDI2NWQ2NjhmOTQwNTI5OS4uYTQ2NTY3
YWUwZDZkNTY0MzEwZDc1ZTE3NDNhZDlkYWVjZmRlMDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1h
dF9tYXBfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAKQEAgLTEs
NyArMSw3IEBACiAvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVk
IGJ5IGdlbl9keGdpX2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gZHhnaV9mb3JtYXRf
ZGF0YS5qc29uLgogLy8KLS8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zMTgsMTcgKzMxOCwxNyBAQCBjb25z
dCBGb3JtYXQgJkdldEZvcm1hdChEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCOgogICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6
R2V0KEZvcm1hdElEOjpCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NLKTsKICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzRfU05PUk06Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJl
dHVybiBGb3JtYXQ6OkdldChGb3JtYXRJRDo6QkM0X1JFRF9TTk9STV9CTE9DSyk7CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkM0X1RZUEVMRVNTOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0SUQ6OkJDNF9SRURfVU5PUk1fQkxPQ0sp
OwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9STToKLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdElEOjpCQzVfUkdfU05PUk1f
QkxPQ0spOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdElEOjpCQzVf
UkdfVU5PUk1fQkxPQ0spOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfVFlQRUxFU1M6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpz
b24KaW5kZXggZDcwNWI5ZWM0MDlmOTRiOWIxYTQ5ZGIyYzMyN2VkMDc0MDMyY2U1OS4uMjM0ZWMw
NDVjYWUyMzg1NjYyMjNiNmNhNTJiNzFhZDA2MTY3MWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBv
cnRfZGF0YS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X2RhdGEuanNvbgpAQCAtODcwLDkgKzg3MCw5
IEBACiAgICAgfSwKICAgICAiRFhHSV9GT1JNQVRfQkM0X1RZUEVMRVNTIjoKICAgICB7Ci0gICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0g
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIs
CisgICAgICAidGV4dHVyZTNEIjogIjEwXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAi
LAogICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0Ijog
Im5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKQEAgLTg4MSw5ICs4ODEs
OSBAQAogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNF9VTk9STSI6CiAgICAgewotICAgICAg
InRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAg
ICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAor
ICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwK
ICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5l
dmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKQEAgLTg5Miw5ICs4OTIsOSBA
QAogICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNF9TTk9STSI6CiAgICAgewotICAgICAgInRl
eHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAg
InRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAg
ICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAg
ICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVy
IiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKQEAgLTkwMyw5ICs5MDMsOSBAQAog
ICAgIH0sCiAgICAgIkRYR0lfRk9STUFUX0JDNV9UWVBFTEVTUyI6CiAgICAgewotICAgICAgInRl
eHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAg
InRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAg
ICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAg
ICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZl
ciIsCiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCkBAIC05MTQsOSArOTE0LDkgQEAK
ICAgICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzVfVU5PUk0iOgogICAgIHsKLSAgICAgICJ0ZXh0
dXJlMkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0
ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAg
ICJ0ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAg
ICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIs
CiAgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCkBAIC05MjUsOSArOTI1LDkgQEAKICAg
ICB9LAogICAgICJEWEdJX0ZPUk1BVF9CQzVfU05PUk0iOgogICAgIHsKLSAgICAgICJ0ZXh0dXJl
MkQiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0
ZXh0dXJlM0QiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAi
c2hhZGVyU2FtcGxlIjogIjEwXzAiLAogICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCiAg
ICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90
YWJsZV9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlX2F1dG9nZW4uY3BwCmluZGV4IDUx
NjY4YWJiZTliZThhYzJkMWZhYzFmZGZhZTVkNmJkZDAwYjA4MjEuLjYwYmE3Y2ViZTIyNDQ5ZDYx
OWEwNzI1ZjRjMmQyZTAxYjJmM2MyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlX2F1dG9nZW4uY3BwCkBAIC0xNjQsMzIg
KzE2NCwzMiBAQCBjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnRfOV8zKERYR0lfRk9S
TUFUIGR4Z2lGb3JtYXQpCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRf
U05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwg
MCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwg
Rl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZf
TVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8
IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzVfVFlQRUxFU1M6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzVfVU5PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBG
X01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
bygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwCmlu
ZGV4IDI5YTQ1NDQ1ODQ3NzU5YjdkY2U5N2RiZDYzNWZjMzQ3MDEzNDE4MGYuLmRjNjcyNmU4Yjll
MmZkMjU4NmU5YmM5ZjI0Y2RiZmVmZWUwYTcwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGls
cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcApAQCAtMTU3MCwxNSArMTU3MCwxOCBAQCB2
b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwKICAgICAvLyBiZWNvbWVzIGNv
cmUuIFdlYkdMIGRvZXNuJ3Qgd2FudCB0byBleHBvc2UgaXQgdW5sZXNzIHRoZXJlIGlzIG5hdGl2
ZSBzdXBwb3J0LgogICAgIGV4dGVuc2lvbnMtPmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmVPRVMg
PSBmYWxzZTsKIAotICAgIGV4dGVuc2lvbnMtPmVsZW1lbnRJbmRleFVpbnRPRVMgICAgICAgICA9
IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+Z2V0UHJvZ3JhbUJpbmFyeU9FUyAgICAgICAgID0gdHJ1
ZTsKLSAgICBleHRlbnNpb25zLT5yZ2I4cmdiYThPRVMgICAgICAgICAgICAgICAgPSB0cnVlOwot
ICAgIGV4dGVuc2lvbnMtPnJlYWRGb3JtYXRCR1JBICAgICAgICAgICAgICA9IHRydWU7Ci0gICAg
ZXh0ZW5zaW9ucy0+cGl4ZWxCdWZmZXJPYmplY3ROViAgICAgICAgID0gdHJ1ZTsKLSAgICBleHRl
bnNpb25zLT5tYXBCdWZmZXJPRVMgICAgICAgICAgICAgICAgPSB0cnVlOwotICAgIGV4dGVuc2lv
bnMtPm1hcEJ1ZmZlclJhbmdlICAgICAgICAgICAgICA9IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+
dGV4dHVyZU5QT1RPRVMgICAgICAgICAgICAgID0gR2V0TlBPVFRleHR1cmVTdXBwb3J0KGZlYXR1
cmVMZXZlbCk7Ci0gICAgZXh0ZW5zaW9ucy0+ZHJhd0J1ZmZlcnMgICAgICAgICAgICAgICAgID0g
R2V0TWF4aW11bVNpbXVsdGFuZW91c1JlbmRlclRhcmdldHMoZmVhdHVyZUxldmVsKSA+IDE7Cisg
ICAgZXh0ZW5zaW9ucy0+ZWxlbWVudEluZGV4VWludE9FUyA9IHRydWU7CisgICAgZXh0ZW5zaW9u
cy0+Z2V0UHJvZ3JhbUJpbmFyeU9FUyA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+cmdiOHJnYmE4
T0VTICAgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+cmVhZEZvcm1hdEJHUkEgICAgICA9
IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+cGl4ZWxCdWZmZXJPYmplY3ROViA9IHRydWU7CisgICAg
ZXh0ZW5zaW9ucy0+bWFwQnVmZmVyT0VTICAgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+
bWFwQnVmZmVyUmFuZ2UgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZU5QT1RP
RVMgICAgICA9IEdldE5QT1RUZXh0dXJlU3VwcG9ydChmZWF0dXJlTGV2ZWwpOworICAgIGV4dGVu
c2lvbnMtPmRyYXdCdWZmZXJzICAgICAgICAgPSBHZXRNYXhpbXVtU2ltdWx0YW5lb3VzUmVuZGVy
VGFyZ2V0cyhmZWF0dXJlTGV2ZWwpID4gMTsKKyAgICBleHRlbnNpb25zLT5kcmF3QnVmZmVyc0lu
ZGV4ZWRFWFQgPQorICAgICAgICAocmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsID49
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzEpOworICAgIGV4dGVuc2lvbnMtPmRyYXdCdWZmZXJzSW5k
ZXhlZE9FUyAgICAgICA9IGV4dGVuc2lvbnMtPmRyYXdCdWZmZXJzSW5kZXhlZEVYVDsKICAgICBl
eHRlbnNpb25zLT50ZXh0dXJlU3RvcmFnZSAgICAgICAgICAgICAgPSB0cnVlOwogICAgIGV4dGVu
c2lvbnMtPnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyAgICA9IHRydWU7CiAgICAgZXh0ZW5zaW9u
cy0+bWF4VGV4dHVyZUFuaXNvdHJvcHkgICAgICAgID0gR2V0TWF4aW11bUFuaXNvdHJvcHkoZmVh
dHVyZUxldmVsKTsKQEAgLTE2MjAsNiArMTYyMyw3IEBAIHZvaWQgR2VuZXJhdGVDYXBzKElEM0Qx
MURldmljZSAqZGV2aWNlLAogICAgIGV4dGVuc2lvbnMtPmRlYnVnTWFya2VyICAgICAgICAgICAg
ICAgICAgICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFnZU9FUyAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2VFeHRlcm5h
bE9FUyAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIGV4dGVuc2lvbnMtPmVnbEltYWdlRXh0
ZXJuYWxXcmFwTW9kZXNFWFQgICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFn
ZUV4dGVybmFsRXNzbDNPRVMgICAgICAgICAgICA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+ZWds
U3RyZWFtQ29uc3VtZXJFeHRlcm5hbE5WICAgICAgICAgPSB0cnVlOwogICAgIGV4dGVuc2lvbnMt
PnVucGFja1N1YmltYWdlICAgICAgICAgICAgICAgICAgICAgID0gdHJ1ZTsKQEAgLTIyMTMsNiAr
MjIxNywxMSBAQCBCbGVuZFN0YXRlS2V5OjpCbGVuZFN0YXRlS2V5KCkKICAgICBtZW1zZXQodGhp
cywgMCwgc2l6ZW9mKEJsZW5kU3RhdGVLZXkpKTsKIH0KIAorQmxlbmRTdGF0ZUtleTo6QmxlbmRT
dGF0ZUtleShjb25zdCBCbGVuZFN0YXRlS2V5ICZvdGhlcikKK3sKKyAgICBtZW1jcHkodGhpcywg
Jm90aGVyLCBzaXplb2YoQmxlbmRTdGF0ZUtleSkpOworfQorCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgQmxlbmRTdGF0ZUtleSAmYSwgY29uc3QgQmxlbmRTdGF0ZUtleSAmYikKIHsKICAgICByZXR1
cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKEJsZW5kU3RhdGVLZXkpKSA9PSAwOwpAQCAtMjQ0OCw4
ICsyNDU3LDkgQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3QgUmVuZGVyZXIxMURldmlj
ZUNhcHMgJmRldmljZUNhcHMsCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMs
IHNlbGVjdFZpZXdJbkdlb21ldHJ5U2hhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICFkZXZpY2VDYXBzLnN1cHBvcnRzVnBSdEluZGV4V3JpdGVGcm9tVmVydGV4U2hhZGVyKTsKIAot
ICAgIC8vIE5ldmVyIGNsZWFyIGZvciByb2J1c3QgcmVzb3VyY2UgaW5pdC4gIFRoaXMgbWF0Y2hl
cyBDaHJvbWUncyB0ZXh0dXJlIGNsZWFybmluZyBiZWhhdmlvdXIuCi0gICAgQU5HTEVfRkVBVFVS
RV9DT05ESVRJT04oZmVhdHVyZXMsIGFsbG93Q2xlYXJGb3JSb2J1c3RSZXNvdXJjZUluaXQsIGZh
bHNlKTsKKyAgICAvLyBJbnRlbCBhbmQgQU1EIGRyaXZlcnMgaGF2ZSB0cm91YmxlIGNsZWFyaW5n
IHRleHR1cmVzIHdpdGhvdXQgY2F1c2luZyBjb3JydXB0aW9uLiBOVmlkaWEsCisgICAgLy8gb24g
dGhlIG90aGVyIGhhbmQsIGNhbiBoYW5kbGUuCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04o
ZmVhdHVyZXMsIGFsbG93Q2xlYXJGb3JSb2J1c3RSZXNvdXJjZUluaXQsIGlzTnZpZGlhKTsKIAog
ICAgIC8vIERvbid0IHRyYW5zbGF0ZSB1bmlmb3JtIGJsb2NrIHRvIFN0cnVjdHVyZWRCdWZmZXIg
b24gV2luZG93cyA3IGFuZCBlYXJsaWVyLiBUaGlzIGlzIHRhcmdldGVkCiAgICAgLy8gdG8gd29y
ayBhcm91bmQgYSBidWcgdGhhdCBmYWlscyB0byBhbGxvY2F0ZSBTaGFkZXJSZXNvdXJjZVZpZXcg
Zm9yIFN0cnVjdHVyZWRCdWZmZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVu
ZGVyZXIxMV91dGlscy5oCmluZGV4IGQ0ZmY5MTk5YzdlY2NlZTY4MGRjNWIyZmMzNzc1ZmU5NjQ3
YzdjNTUuLjM5Y2UzNzllZGZhMDc2M2MzMDA3YjlmYWMyZmVjNjM2NDkyNzczYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvcmVuZGVyZXIxMV91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oCkBAIC0xNDYsMTMg
KzE0NiwxNSBAQCBzdHJ1Y3QgQmxlbmRTdGF0ZUtleSBmaW5hbAogewogICAgIC8vIFRoaXMgd2ls
bCB6ZXJvLWluaXRpYWxpemUgdGhlIHN0cnVjdCwgaW5jbHVkaW5nIHBhZGRpbmcuCiAgICAgQmxl
bmRTdGF0ZUtleSgpOworICAgIEJsZW5kU3RhdGVLZXkoY29uc3QgQmxlbmRTdGF0ZUtleSAmb3Ro
ZXIpOwogCi0gICAgZ2w6OkJsZW5kU3RhdGUgYmxlbmRTdGF0ZTsKLQotICAgIC8vIEFuIGludCBz
byBzdHJ1Y3Qgc2l6ZSByb3VuZHMgbmljZWx5LgotICAgIHVpbnQzMl90IHJ0dk1heDsKKyAgICBn
bDo6QmxlbmRTdGF0ZUFycmF5IGJsZW5kU3RhdGVBcnJheTsKIAogICAgIHVpbnQ4X3QgcnR2TWFz
a3NbRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlRdOworCisgICAgLy8gVXNl
IHR3byAxNi1iaXQgaW50cyB0byByb3VuZCB0aGUgc3RydWN0IG5pY2VseS4KKyAgICB1aW50MTZf
dCBydHZNYXg7CisgICAgdWludDE2X3Qgc2FtcGxlQWxwaGFUb0NvdmVyYWdlOwogfTsKIAogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEJsZW5kU3RhdGVLZXkgJmEsIGNvbnN0IEJsZW5kU3RhdGVLZXkg
JmIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0
X2RhdGEuanNvbgppbmRleCBhMDgyZGMyY2FhNTljYjk0MTIzM2YzYWQ1N2E4M2FlOTczOTU4N2Mw
Li45ZGE5NGIzYWNiOTkxNmYyZDA2MGYyNzgyMzc0YzE3YzQ5MjJkNGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3Rl
eHR1cmVfZm9ybWF0X2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X2RhdGEuanNvbgpAQCAt
MTcxLDYgKzE3MSwzNCBAQAogICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKICAgICAic3dp
enpsZUZvcm1hdCI6ICJHTF9SR0JBOCIKICAgfSwKKyAgIkJDNF9SRURfVU5PUk1fQkxPQ0siOiB7
CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzRfVU5PUk0iLAorICAgICJzcnZGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfQkM0X1VOT1JNIiwKKyAgICAiY2hhbm5lbHMiOiAiciIsCisgICAg
ImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4
IgorICB9LAorICAiQkM0X1JFRF9TTk9STV9CTE9DSyI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0JDNF9TTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzRf
U05PUk0iLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJzbm9y
bSIsCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQThfU05PUk0iCisgIH0sCisgICJCQzVf
UkdfVU5PUk1fQkxPQ0siOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzVfVU5P
Uk0iLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkM1X1VOT1JNIiwKKyAgICAiY2hh
bm5lbHMiOiAicmciLAorICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKKyAgICAic3dpenps
ZUZvcm1hdCI6ICJHTF9SR0JBOCIKKyAgfSwKKyAgIkJDNV9SR19TTk9STV9CTE9DSyI6IHsKKyAg
ICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDNV9TTk9STSIsCisgICAgInNydkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9CQzVfU05PUk0iLAorICAgICJjaGFubmVscyI6ICJyZyIsCisgICAgImNv
bXBvbmVudFR5cGUiOiAic25vcm0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4X1NO
T1JNIgorICB9LAogICAiQlBUQ19SR0JBX1VOT1JNX0JMT0NLIjogewogICAgICJ0ZXhGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfQkM3X1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X0JDN19VTk9STSIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcAppbmRleCA3YjQzYTI1NDAwYzI1Yjlh
NGExMWVlYjIzNTJmNGQxNjU5ZjFlMDlmLi5hMzY5MWY0MDNiOGU2OTQwNDAwMjlhODQ3YjkxMDg2
ODNjOTMzMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvLyBH
RU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVkIGJ5IGdlbl90ZXh0dXJl
X2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gdGV4dHVyZV9mb3JtYXRfZGF0YS5qc29u
CiAvLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTIyNCw2ICsyMjQsMzQgQEAgY29uc3QgRm9ybWF0ICZG
b3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VD
YXBzICZkZXYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RD
Ml9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXRJRDo6QkM1X1JHX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDNV9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQkM1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXRJRDo6QkM0
X1JFRF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfQkM0X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDNF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHMTFfRUFDOgogICAgICAgICB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsCkBAIC04MTIsNiArODQwLDM0IEBAIGNvbnN0
IEZvcm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBSZW5kZXJl
cjExRGV2aWNlQ2FwcyAmZGV2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1NOT1JNX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzVfU05P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0JDNV9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkM1X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RD
MV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1NOT1JNX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CQzRfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0JDNF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkM0X1NOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVE
X1JHMTFfRUFDOgogICAgICAgICB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9Db250ZXh0OS5jcHAKaW5kZXggYzk4ZjdhNzIyZThlMWEyNzkwMzc1Nzg0ZjFlNDFiODFl
ZDUwZGUwNC4uMjlkNDA5MWM3MWZiMDA2OTRmM2VlNmNlMzBmMDVhMDg5OGZmMDAxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0NvbnRleHQ5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwCkBAIC0xMzEsMTEgKzEzMSw2IEBAIFBy
b2dyYW1QaXBlbGluZUltcGwgKkNvbnRleHQ5OjpjcmVhdGVQcm9ncmFtUGlwZWxpbmUoY29uc3Qg
Z2w6OlByb2dyYW1QaXBlbGluZVN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0ZDo6dmVj
dG9yPFBhdGhJbXBsICo+IENvbnRleHQ5OjpjcmVhdGVQYXRocyhHTHNpemVpKQotewotICAgIHJl
dHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOwotfQotCiBNZW1vcnlPYmplY3RJbXBsICpD
b250ZXh0OTo6Y3JlYXRlTWVtb3J5T2JqZWN0KCkKIHsKICAgICBVTlJFQUNIQUJMRSgpOwpAQCAt
MzAzLDE4ICsyOTgsMjAgQEAgc3RkOjpzdHJpbmcgQ29udGV4dDk6OmdldFJlbmRlcmVyRGVzY3Jp
cHRpb24oKSBjb25zdAogICAgIHJldHVybiBtUmVuZGVyZXItPmdldFJlbmRlcmVyRGVzY3JpcHRp
b24oKTsKIH0KIAotdm9pZCBDb250ZXh0OTo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5n
dGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dDk6Omluc2VydEV2
ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7CiAgICAgbVJl
bmRlcmVyLT5nZXRBbm5vdGF0b3IoKS0+c2V0TWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHQ5OjpwdXNoR3JvdXBNYXJr
ZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29u
dGV4dDk6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2Vy
KQogewogICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmJlZ2luRXZlbnQobWFya2VyLCBt
YXJrZXIpOwogICAgIG1NYXJrZXJTdGFjay5wdXNoKHN0ZDo6c3RyaW5nKG1hcmtlcikpOworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBDb250ZXh0OTo6cG9w
R3JvdXBNYXJrZXIoKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0OTo6cG9wR3JvdXBNYXJrZXIoKQog
ewogICAgIGNvbnN0IGNoYXIgKm1hcmtlciA9IG51bGxwdHI7CiAgICAgaWYgKCFtTWFya2VyU3Rh
Y2suZW1wdHkoKSkKQEAgLTMyMywxOCArMzIwLDIyIEBAIHZvaWQgQ29udGV4dDk6OnBvcEdyb3Vw
TWFya2VyKCkKICAgICAgICAgbU1hcmtlclN0YWNrLnBvcCgpOwogICAgICAgICBtUmVuZGVyZXIt
PmdldEFubm90YXRvcigpLT5lbmRFdmVudChtYXJrZXIpOwogICAgIH0KKyAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgQ29udGV4dDk6OnB1c2hEZWJ1Z0dyb3Vw
KEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpCith
bmdsZTo6UmVzdWx0IENvbnRleHQ5OjpwdXNoRGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmbWVzc2FnZSkKIHsKICAgICAvLyBGYWxsIHRocm91Z2ggdG8gdGhlIEVYVF9kZWJ1Z19tYXJr
ZXIgZnVuY3Rpb25zCi0gICAgcHVzaEdyb3VwTWFya2VyKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1l
c3NhZ2Uuc2l6ZSgpKSwgbWVzc2FnZS5jX3N0cigpKTsKKyAgICByZXR1cm4gcHVzaEdyb3VwTWFy
a2VyKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1lc3NhZ2Uuc2l6ZSgpKSwgbWVzc2FnZS5jX3N0cigp
KTsKIH0KIAotdm9pZCBDb250ZXh0OTo6cG9wRGVidWdHcm91cCgpCithbmdsZTo6UmVzdWx0IENv
bnRleHQ5Ojpwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogewogICAg
IC8vIEZhbGwgdGhyb3VnaCB0byB0aGUgRVhUX2RlYnVnX21hcmtlciBmdW5jdGlvbnMKLSAgICBw
b3BHcm91cE1hcmtlcigpOworICAgIHJldHVybiBwb3BHcm91cE1hcmtlcigpOwogfQogCiBhbmds
ZTo6UmVzdWx0IENvbnRleHQ5OjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvQ29udGV4dDkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCmluZGV4IDlmNzIzYTNhNGYyNTRlNmRi
YzgyNzc5YmNjMzcxODMyN2UwMWIxMTguLmY2ZjM5NGY4NGYwMTE0MTMzMDQwMjFmYTdkYzRhMjI2
YWI1OWMxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oCkBAIC02MSw5ICs2
MSw2IEBAIGNsYXNzIENvbnRleHQ5IDogcHVibGljIENvbnRleHREM0QKICAgICAvLyBQcm9ncmFt
IFBpcGVsaW5lIG9iamVjdCBjcmVhdGlvbgogICAgIFByb2dyYW1QaXBlbGluZUltcGwgKmNyZWF0
ZVByb2dyYW1QaXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBpcGVsaW5lU3RhdGUgJmRhdGEpIG92
ZXJyaWRlOwogCi0gICAgLy8gUGF0aCBvYmplY3QgY3JlYXRpb24KLSAgICBzdGQ6OnZlY3RvcjxQ
YXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVpKSBvdmVycmlkZTsKLQogICAgIC8vIE1lbW9y
eSBvYmplY3QgY3JlYXRpb24uCiAgICAgTWVtb3J5T2JqZWN0SW1wbCAqY3JlYXRlTWVtb3J5T2Jq
ZWN0KCkgb3ZlcnJpZGU7CiAKQEAgLTE1NywxMyArMTU0LDE2IEBAIGNsYXNzIENvbnRleHQ5IDog
cHVibGljIENvbnRleHREM0QKICAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFRfZGVidWdfbWFya2VyCi0gICAgdm9pZCBp
bnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7
CisgICAgYW5nbGU6OlJlc3VsdCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29u
c3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHB1c2hHcm91cE1h
cmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBh
bmdsZTo6UmVzdWx0IHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBLSFJfZGVi
dWcKLSAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgY29u
c3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wRGVidWdHcm91
cCgpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcHVzaERlYnVnR3JvdXAoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3Nh
Z2UpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wRGVidWdHcm91cChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGly
dHkgYml0cy4KICAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAKaW5k
ZXggODdmZTc0NGZmNjUxYTYzNzJmMjUwNGRmNjljMDE2ODAxMDFmZTM5NC4uYjRjZjIwYzNhOThj
YTg4YmQzNmUyZDc0OTk1N2Q0NzEzNTZiMDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZyYW1lYnVmZmVyOS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFt
ZWJ1ZmZlcjk6OmNsZWFySW1wbChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVh
clBhcmFtcykKIHsKICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5hcHBseVJlbmRlclRhcmdldChj
b250ZXh0LCBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0Q29sb3JzKClbMF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRo
U3RlbmNpbCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCh0cnVlKSkpOwogCiAgICAgY29uc3Qg
Z2w6OlN0YXRlICZnbFN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICBmbG9hdCBuZWFy
WiAgICAgICAgICAgICAgPSBnbFN0YXRlLmdldE5lYXJQbGFuZSgpOwpAQCAtNzIsNyArNzIsNyBA
QCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyOTo6Y2xlYXJJbXBsKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAogICAgIG1SZW5kZXJlci0+c2V0U2Npc3NvclJlY3RhbmdsZShnbFN0YXRlLmdl
dFNjaXNzb3IoKSwgZ2xTdGF0ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpKTsKIAogICAgIG1SZW5k
ZXJlci0+Y2xlYXIoY2xlYXJQYXJhbXMsIG1SZW5kZXJUYXJnZXRDYWNoZS5nZXRDb2xvcnMoKVsw
XSwKLSAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5j
aWwoKSk7CisgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhT
dGVuY2lsKHRydWUpKTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaAppbmRleCBkOWM0ZDdiNzVk
YzgwMmZiZWIxNGI2MzNkZTVjOGJlZTkxYWM1YzZhLi44ZmJkMDcxYWQwNTE0MDAwMjVmMDgzOGMx
MTRiYjAyZWJiYjYxZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVy
OS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEZyYW1lYnVmZmVyOSA6IHB1YmxpYyBGcmFtZWJ1
ZmZlckQzRAogCiAgICAgY29uc3QgUmVuZGVyVGFyZ2V0OSAqZ2V0Q2FjaGVkRGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0
Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCk7CisgICAgICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0Q2Fj
aGUuZ2V0RGVwdGhTdGVuY2lsKHRydWUpOwogICAgIH0KIAogICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1JlbmRlcmVyOS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcAppbmRleCAzZDIzYWU2YzRmMTZlZGM0Mzc3NjA0
ZDFjODU3NTliMDkwZTM4YWY3Li44NDk5YjYwZTRjNGZiNDdjOGFlYjViNmMyMzE5MWQ5ODIxN2Ew
Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcApAQCAtMTg5OCw3
ICsxODk4LDcgQEAgdm9pZCBSZW5kZXJlcjk6OmNsZWFyKGNvbnN0IENsZWFyUGFyYW1ldGVycyAm
Y2xlYXJQYXJhbXMsCiAKICAgICAvLyBDbGVhcmluZyBpbmRpdmlkdWFsIGJ1ZmZlcnMgb3RoZXIg
dGhhbiBidWZmZXIgemVybyBpcyBub3Qgc3VwcG9ydGVkIGJ5IFJlbmRlcmVyOSBhbmQgRVMgMi4w
CiAgICAgYm9vbCBjbGVhckNvbG9yID0gY2xlYXJQYXJhbXMuY2xlYXJDb2xvclswXTsKLSAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5U2l6ZShjbGVhclBhcmFtcy5jbGVhckNv
bG9yKTsgaSsrKQorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY2xlYXJQYXJhbXMu
Y2xlYXJDb2xvci5zaXplKCk7IGkrKykKICAgICB7CiAgICAgICAgIEFTU0VSVChjbGVhclBhcmFt
cy5jbGVhckNvbG9yW2ldID09IGNsZWFyQ29sb3IpOwogICAgIH0KQEAgLTE5NDgsMTAgKzE5NDgs
MTAgQEAgdm9pZCBSZW5kZXJlcjk6OmNsZWFyKGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQ
YXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwLjBm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGVhclBhcmFt
cy5jb2xvckYuYmx1ZSkpOwogCi0gICAgICAgIGlmICgoZm9ybWF0SW5mby5yZWRCaXRzID4gMCAm
JiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrUmVkKSB8fAotICAgICAgICAgICAgKGZvcm1hdEluZm8u
Z3JlZW5CaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4pIHx8Ci0gICAgICAg
ICAgICAoZm9ybWF0SW5mby5ibHVlQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0Js
dWUpIHx8Ci0gICAgICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwICYmICFjbGVhclBh
cmFtcy5jb2xvck1hc2tBbHBoYSkpCisgICAgICAgIGlmICgoZm9ybWF0SW5mby5yZWRCaXRzID4g
MCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrUmVkWzBdKSB8fAorICAgICAgICAgICAgKGZvcm1h
dEluZm8uZ3JlZW5CaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW5bMF0pIHx8
CisgICAgICAgICAgICAoZm9ybWF0SW5mby5ibHVlQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNv
bG9yTWFza0JsdWVbMF0pIHx8CisgICAgICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAw
ICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYVswXSkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG5lZWRNYXNrZWRDb2xvckNsZWFyID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjAxOCwxMCAr
MjAxOCwxMSBAQCB2b2lkIFJlbmRlcmVyOTo6Y2xlYXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZj
bGVhclBhcmFtcywKIAogICAgICAgICBpZiAoY2xlYXJDb2xvcikKICAgICAgICAgewotICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoCi0gICAgICAgICAgICAgICAgRDNEUlNfQ09M
T1JXUklURUVOQUJMRSwKLSAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0Q29sb3JNYXNr
KGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCwgY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xv
ck1hc2tCbHVlLCBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSkpOworICAgICAgICAgICAgbURl
dmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2soY2xlYXJQ
YXJhbXMuY29sb3JNYXNrUmVkWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlblsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZVswXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMu
Y29sb3JNYXNrQWxwaGFbMF0pKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsK
QEAgLTMwMjAsNyArMzAyMSw3IEBAIHZvaWQgUmVuZGVyZXI5Ojppbml0aWFsaXplRmVhdHVyZXMo
YW5nbGU6OkZlYXR1cmVzRDNEICpmZWF0dXJlcykgY29uc3QKICAgICB7CiAgICAgICAgIGQzZDk6
OkluaXRpYWxpemVGZWF0dXJlcyhmZWF0dXJlcyk7CiAgICAgfQotICAgIE92ZXJyaWRlRmVhdHVy
ZXNXaXRoRGlzcGxheVN0YXRlKGZlYXR1cmVzLCBtRGlzcGxheS0+Z2V0U3RhdGUoKSk7CisgICAg
QXBwbHlGZWF0dXJlT3ZlcnJpZGVzKGZlYXR1cmVzLCBtRGlzcGxheS0+Z2V0U3RhdGUoKSk7CiB9
CiAKIERldmljZUltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlRUdMRGV2aWNlKCkKQEAgLTMxODMsNyAr
MzE4NCw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXI5OjphcHBseVRleHR1cmVzKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LCBnbDo6U2hhZGVyVHlwCiAgICAgQVNTRVJUKCFwcm9ncmFtRDNE
LT5pc1NhbXBsZXJNYXBwaW5nRGlydHkoKSk7CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2Ug
dGhlIFByb2dyYW0ncyBzYW1wbGVyIGJpbmRpbmdzLgotICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0
dXJlUG9pbnRlckFycmF5ICZhY3RpdmVUZXh0dXJlcyA9IGdsU3RhdGUuZ2V0QWN0aXZlVGV4dHVy
ZXNDYWNoZSgpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlc0NhY2hlICZhY3RpdmVUZXh0
dXJlcyA9IGdsU3RhdGUuZ2V0QWN0aXZlVGV4dHVyZXNDYWNoZSgpOwogCiAgICAgY29uc3QgZ2w6
OlJhbmdlVUkgc2FtcGxlclJhbmdlID0gcHJvZ3JhbUQzRC0+Z2V0VXNlZFNhbXBsZXJSYW5nZShz
aGFkZXJUeXBlKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBzYW1wbGVy
UmFuZ2UubG93KCk7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJSYW5nZS5oaWdoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvU3RhdGVNYW5hZ2VyOS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAKaW5kZXggNDVmZDNiNjJhYzU1
NDkxZDIyNmEwMzNiNmMwYzM2MjcxYzA4ODE5ZS4uY2FkMDExYjI1YThlMTRkZDVmM2FhZjcwNGY3
NjgzMzU2NTljNTdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFn
ZXI5LmNwcApAQCAtMTksNiArMTksNyBAQCBuYW1lc3BhY2UgcngKIAogU3RhdGVNYW5hZ2VyOTo6
U3RhdGVNYW5hZ2VyOShSZW5kZXJlcjkgKnJlbmRlcmVyOSkKICAgICA6IG1Vc2luZ1plcm9Db2xv
ck1hc2tXb3JrYXJvdW5kKGZhbHNlKSwKKyAgICAgIG1DdXJTYW1wbGVBbHBoYVRvQ292ZXJhZ2Uo
ZmFsc2UpLAogICAgICAgbUN1ckJsZW5kU3RhdGUoKSwKICAgICAgIG1DdXJCbGVuZENvbG9yKDAs
IDAsIDAsIDApLAogICAgICAgbUN1clNhbXBsZU1hc2soMCksCkBAIC0xNzQsOCArMTc1LDcgQEAg
dm9pZCBTdGF0ZU1hbmFnZXI5OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29u
c3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU0FNUExFX0FMUEhB
X1RPX0NPVkVSQUdFX0VOQUJMRUQ6Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldEJsZW5k
U3RhdGUoKS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UgIT0KLSAgICAgICAgICAgICAgICAgICAgbUN1
ckJsZW5kU3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdlKQorICAgICAgICAgICAgICAgIGlmIChz
dGF0ZS5pc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSAhPSBtQ3VyU2FtcGxlQWxwaGFU
b0NvdmVyYWdlKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgU3RhdGVNYW5hZ2VyOTo6c3luY1N0YXRl
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIGdsOjpT
dGF0ZTo6RElSVFlfQklUX0RJVEhFUl9FTkFCTEVEOgotICAgICAgICAgICAgICAgIGlmIChzdGF0
ZS5nZXRCbGVuZFN0YXRlKCkuZGl0aGVyICE9IG1DdXJCbGVuZFN0YXRlLmRpdGhlcikKKyAgICAg
ICAgICAgICAgICBpZiAoc3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkuZGl0aGVyICE9IG1DdXJS
YXN0ZXJTdGF0ZS5kaXRoZXIpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfRElUSEVSKTsKICAgICAgICAgICAgICAgICB9CkBA
IC0zNTQsMTQgKzM1NCwxNCBAQCB2b2lkIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5kRGVwdGhSYXN0
ZXJTdGF0ZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlLCB1bnNpZ25lZAogICAgICAgICAgICAg
ICAgIHNldEJsZW5kRnVuY3NFcXVhdGlvbnMoYmxlbmRTdGF0ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJB
R0U6Ci0gICAgICAgICAgICAgICAgc2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKGJsZW5kU3RhdGUu
c2FtcGxlQWxwaGFUb0NvdmVyYWdlKTsKKyAgICAgICAgICAgICAgICBzZXRTYW1wbGVBbHBoYVRv
Q292ZXJhZ2UoZ2xTdGF0ZS5pc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZX0JJVF9DT0xPUl9NQVNL
OgogICAgICAgICAgICAgICAgIHNldENvbG9yTWFzayhmcmFtZWJ1ZmZlciwgYmxlbmRTdGF0ZS5j
b2xvck1hc2tSZWQsIGJsZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiwgYmxlbmRTdGF0ZS5jb2xvck1h
c2tBbHBoYSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZ
X0JJVF9ESVRIRVI6Ci0gICAgICAgICAgICAgICAgc2V0RGl0aGVyKGJsZW5kU3RhdGUuZGl0aGVy
KTsKKyAgICAgICAgICAgICAgICBzZXREaXRoZXIocmFzdGVyU3RhdGUuZGl0aGVyKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRElSVFlfQklUX0NVTExfTU9ERToK
ICAgICAgICAgICAgICAgICBzZXRDdWxsTW9kZShyYXN0ZXJTdGF0ZS5jdWxsRmFjZSwgcmFzdGVy
U3RhdGUuY3VsbE1vZGUsIHJhc3RlclN0YXRlLmZyb250RmFjZSk7CkBAIC02OTIsNyArNjkyLDgg
QEAgdm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UoYm9vbCBlbmFi
bGVkKQogewogICAgIGlmIChlbmFibGVkKQogICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgLy8gRDNEOSBzdXBwb3J0IGZvciBhbHBoYS10by1jb3ZlcmFnZSBpcyB2ZW5kb3It
c3BlY2lmaWMuCisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICB9CiB9CiAKQEAgLTc2Myw3
ICs3NjQsNyBAQCB2b2lkIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5kRW5hYmxlZChib29sIGVuYWJs
ZWQpCiB2b2lkIFN0YXRlTWFuYWdlcjk6OnNldERpdGhlcihib29sIGRpdGhlcikKIHsKICAgICBt
UmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRElUSEVSRU5BQkxF
LCBkaXRoZXIgPyBUUlVFIDogRkFMU0UpOwotICAgIG1DdXJCbGVuZFN0YXRlLmRpdGhlciA9IGRp
dGhlcjsKKyAgICBtQ3VyUmFzdGVyU3RhdGUuZGl0aGVyID0gZGl0aGVyOwogfQogCiAvLyBUT0RP
KGRpYW54KSBvbmUgYml0IGZvciBjb2xvciBtYXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1N0YXRlTWFuYWdlcjkuaAppbmRleCAwNWFiOGJjZTNkMzljNDZkNDc2MGI1NjQ1ZWFjMTRkYmJm
YjJkN2I5Li5iMDQ3YjY5Y2RkZTI4MGFlZDc5YWM2MGVkOGNiYTY2MDE4OGJjYmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvU3RhdGVNYW5hZ2VyOS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgKQEAgLTE1OSw2ICsxNTksOCBA
QCBjbGFzcyBTdGF0ZU1hbmFnZXI5IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBi
b29sIG1Vc2luZ1plcm9Db2xvck1hc2tXb3JrYXJvdW5kOwogCisgICAgYm9vbCBtQ3VyU2FtcGxl
QWxwaGFUb0NvdmVyYWdlOworCiAgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgYmxlbmQgc3RhdGUK
ICAgICBnbDo6QmxlbmRTdGF0ZSBtQ3VyQmxlbmRTdGF0ZTsKICAgICBnbDo6Q29sb3JGIG1DdXJC
bGVuZENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmNwcAppbmRleCBlNjE1YWRlNzNjMjUx
MmZlOTA5NTIyMzEwNjI5ZWVhYTdhNzkwNjZkLi4xMjk4NGMyNGY0Zjk3ZDk5NDczYmQzMmFlNTE2
YWQ5ZGUyYjU4OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmNwcApAQCAtMTYsNiArMTYs
MTAgQEAKICMgICAgaW5jbHVkZSA8c3lzL3N5c3RlbV9wcm9wZXJ0aWVzLmg+CiAjZW5kaWYKIAor
I2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgpCisjICAgIGluY2x1ZGUgPHN5cy91dHNu
YW1lLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIHJ4CiB7CiAvLyBJbnRlbApAQCAtMjAyLDQgKzIw
Niw1MCBAQCBPU1ZlcnNpb24gR2V0TWFjT1NWZXJzaW9uKCkKIH0KICNlbmRpZgogCisjaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9MSU5VWCkKK2Jvb2wgUGFyc2VMaW51eE9TVmVyc2lvbihjb25z
dCBjaGFyICp2ZXJzaW9uLCBpbnQgKm1ham9yLCBpbnQgKm1pbm9yLCBpbnQgKnBhdGNoKQorewor
ICAgIGVycm5vID0gMDsgIC8vIHJlc2V0IGdsb2JhbCBlcnJvciBmbGFnLgorICAgIGNoYXIgKm5l
eHQ7CisgICAgKm1ham9yID0gc3RhdGljX2Nhc3Q8aW50PihzdHJ0b2wodmVyc2lvbiwgJm5leHQs
IDEwKSk7CisgICAgaWYgKG5leHQgPT0gbnVsbHB0ciB8fCAqbmV4dCAhPSAnLicgfHwgZXJybm8g
IT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqbWlub3Ig
PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cnRvbChuZXh0ICsgMSwgJm5leHQsIDEwKSk7CisgICAgaWYg
KG5leHQgPT0gbnVsbHB0ciB8fCAqbmV4dCAhPSAnLicgfHwgZXJybm8gIT0gMCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqcGF0Y2ggPSBzdGF0aWNfY2FzdDxp
bnQ+KHN0cnRvbChuZXh0ICsgMSwgJm5leHQsIDEwKSk7CisgICAgaWYgKGVycm5vICE9IDApCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisjZW5kaWYKKworT1NWZXJzaW9uIEdldExpbnV4T1NWZXJzaW9uKCkKK3sKKyNpZiBkZWZpbmVk
KEFOR0xFX1BMQVRGT1JNX0xJTlVYKQorICAgIHN0cnVjdCB1dHNuYW1lIHVuYW1lX2luZm87Cisg
ICAgaWYgKHVuYW1lKCZ1bmFtZV9pbmZvKSAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9T
VmVyc2lvbigwLCAwLCAwKTsKKyAgICB9CisKKyAgICBpbnQgbWFqb3JWZXJzaW9uID0gMCwgbWlu
b3JWZXJzaW9uID0gMCwgcGF0Y2hWZXJzaW9uID0gMDsKKyAgICBpZiAoUGFyc2VMaW51eE9TVmVy
c2lvbih1bmFtZV9pbmZvLnJlbGVhc2UsICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24sICZw
YXRjaFZlcnNpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9TVmVyc2lvbihtYWpvclZlcnNp
b24sIG1pbm9yVmVyc2lvbiwgcGF0Y2hWZXJzaW9uKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJl
dHVybiBPU1ZlcnNpb24oMCwgMCwgMCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZl
cl91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2RyaXZlcl91dGlscy5oCmluZGV4IGE3OTI1ZDIwOGQ1ZjI2MTE3YWE0MzRhZjE1MTI5ZjJlZmM3
Y2Q3NWIuLmRhNDFlYjg3ZmM1ZDIxMmQ1NDZjZDY0MGUxOWFjYWE5ZTBmNGMzY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJf
dXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZHJpdmVyX3V0aWxzLmgKQEAgLTMyLDEwICszMiwxMSBAQCBlbnVtIFZlbmRvcklEIDogdWlu
dDMyX3QKIAogZW51bSBBbmRyb2lkRGV2aWNlSUQgOiB1aW50MzJfdAogewotICAgIEFORFJPSURf
REVWSUNFX0lEX1VOS05PV04gID0gMHgwLAotICAgIEFORFJPSURfREVWSUNFX0lEX05FWFVTNVgg
ID0gMHg0MDEwODAwLAotICAgIEFORFJPSURfREVWSUNFX0lEX1BJWEVMMVhMID0gMHg1MDQwMDAx
LAotICAgIEFORFJPSURfREVWSUNFX0lEX1BJWEVMMiAgID0gMHg1MDMwMDA0LAorICAgIEFORFJP
SURfREVWSUNFX0lEX1VOS05PV04gICAgID0gMHgwLAorICAgIEFORFJPSURfREVWSUNFX0lEX05F
WFVTNVggICAgID0gMHg0MDEwODAwLAorICAgIEFORFJPSURfREVWSUNFX0lEX1BJWEVMMVhMICAg
ID0gMHg1MDQwMDAxLAorICAgIEFORFJPSURfREVWSUNFX0lEX1BJWEVMMiAgICAgID0gMHg1MDMw
MDA0LAorICAgIEFORFJPSURfREVWSUNFX0lEX1NXSUZUU0hBREVSID0gMHhDMERFLAogfTsKIAog
aW5saW5lIGJvb2wgSXNBTUQodWludDMyX3QgdmVuZG9ySWQpCkBAIC01OCw2ICs1OSwxMSBAQCBp
bmxpbmUgYm9vbCBJc0ludGVsKHVpbnQzMl90IHZlbmRvcklkKQogICAgIHJldHVybiB2ZW5kb3JJ
ZCA9PSBWRU5ET1JfSURfSU5URUw7CiB9CiAKK2lubGluZSBib29sIElzR29vZ2xlKHVpbnQzMl90
IHZlbmRvcklkKQoreworICAgIHJldHVybiB2ZW5kb3JJZCA9PSBWRU5ET1JfSURfR09PR0xFOwor
fQorCiBpbmxpbmUgYm9vbCBJc052aWRpYSh1aW50MzJfdCB2ZW5kb3JJZCkKIHsKICAgICByZXR1
cm4gdmVuZG9ySWQgPT0gVkVORE9SX0lEX05WSURJQTsKQEAgLTgzLDYgKzg5LDExIEBAIGlubGlu
ZSBib29sIElzUGl4ZWwyKHVpbnQzMl90IHZlbmRvcklkLCB1aW50MzJfdCBkZXZpY2VJZCkKICAg
ICByZXR1cm4gSXNRdWFsY29tbSh2ZW5kb3JJZCkgJiYgZGV2aWNlSWQgPT0gQU5EUk9JRF9ERVZJ
Q0VfSURfUElYRUwyOwogfQogCitpbmxpbmUgYm9vbCBJc1N3aWZ0c2hhZGVyKHVpbnQzMl90IHZl
bmRvcklkLCB1aW50MzJfdCBkZXZpY2VJZCkKK3sKKyAgICByZXR1cm4gSXNHb29nbGUodmVuZG9y
SWQpICYmIGRldmljZUlkID09IEFORFJPSURfREVWSUNFX0lEX1NXSUZUU0hBREVSOworfQorCiBj
b25zdCBjaGFyICpHZXRWZW5kb3JTdHJpbmcodWludDMyX3QgdmVuZG9ySWQpOwogCiAvLyBJbnRl
bApAQCAtMTYzLDYgKzE3NCw4IEBAIGJvb2wgb3BlcmF0b3I+PShjb25zdCBPU1ZlcnNpb24gJmEs
IGNvbnN0IE9TVmVyc2lvbiAmYik7CiAKIE9TVmVyc2lvbiBHZXRNYWNPU1ZlcnNpb24oKTsKIAor
T1NWZXJzaW9uIEdldExpbnV4T1NWZXJzaW9uKCk7CisKIGlubGluZSBib29sIElzQW5kcm9pZCgp
CiB7CiAjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29u
dGV4dEdMLmNwcAppbmRleCAxYzM2NWRhMGU2OTY0Y2FlNGMzMWQ1ZTZmYzZiOGI4YjVhMTNjNDM5
Li4yYTViYmRkMDEwYWQ4YTUxYTMyM2ZkZGQyODhjMDI1YTkwOGMzN2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvQ29udGV4dEdMLmNwcApAQCAtMTcsNyArMTcsNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9GdW5jdGlvbnNHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9yeU9i
amVjdEdMLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbVBpcGVsaW5lR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9RdWVyeUdMLmgiCkBAIC02Myw4ICs2Miw3IEBAIFNoYWRlckltcGwgKkNvbnRl
eHRHTDo6Y3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSkKIAogUHJvZ3Jh
bUltcGwgKkNvbnRleHRHTDo6Y3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZk
YXRhKQogewotICAgIHJldHVybiBuZXcgUHJvZ3JhbUdMKGRhdGEsIGdldEZ1bmN0aW9ucygpLCBn
ZXRGZWF0dXJlc0dMKCksIGdldFN0YXRlTWFuYWdlcigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nLCBtUmVuZGVyZXIpOworICAgIHJldHVy
biBuZXcgUHJvZ3JhbUdMKGRhdGEsIGdldEZ1bmN0aW9ucygpLCBnZXRGZWF0dXJlc0dMKCksIGdl
dFN0YXRlTWFuYWdlcigpLCBtUmVuZGVyZXIpOwogfQogCiBGcmFtZWJ1ZmZlckltcGwgKkNvbnRl
eHRHTDo6Y3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEp
CkBAIC0xNTcsMjYgKzE1NSw2IEBAIFByb2dyYW1QaXBlbGluZUltcGwgKkNvbnRleHRHTDo6Y3Jl
YXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnN0IGdsOjpQcm9ncmFtUGlwZWxpbmVTCiAgICAgcmV0dXJu
IG5ldyBQcm9ncmFtUGlwZWxpbmVHTChkYXRhLCBnZXRGdW5jdGlvbnMoKSk7CiB9CiAKLXN0ZDo6
dmVjdG9yPFBhdGhJbXBsICo+IENvbnRleHRHTDo6Y3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkK
LXsKLSAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3MgPSBnZXRGdW5jdGlvbnMoKTsKLQotICAg
IHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IHJldDsKLSAgICByZXQucmVzZXJ2ZShyYW5nZSk7Ci0K
LSAgICBjb25zdCBHTHVpbnQgZmlyc3QgPSBmdW5jcy0+Z2VuUGF0aHNOVihyYW5nZSk7Ci0gICAg
aWYgKGZpcnN0ID09IDApCi0gICAgICAgIHJldHVybiByZXQ7Ci0KLSAgICBmb3IgKEdMc2l6ZWkg
aSA9IDA7IGkgPCByYW5nZTsgKytpKQotICAgIHsKLSAgICAgICAgY29uc3QgYXV0byBpZCA9IGZp
cnN0ICsgaTsKLSAgICAgICAgcmV0LnB1c2hfYmFjayhuZXcgUGF0aEdMKGZ1bmNzLCBpZCkpOwot
ICAgIH0KLQotICAgIHJldHVybiByZXQ7Ci19Ci0KIE1lbW9yeU9iamVjdEltcGwgKkNvbnRleHRH
TDo6Y3JlYXRlTWVtb3J5T2JqZWN0KCkKIHsKICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zID0gZ2V0RnVuY3Rpb25zKCk7CkBAIC0yMjAsMTMgKzE5OCwxMyBAQCBBTkdMRV9JTkxJTkUg
YW5nbGU6OlJlc3VsdCBDb250ZXh0R0w6OnNldERyYXdBcnJheXNTdGF0ZShjb25zdCBnbDo6Q29u
dGV4dCAqY29udAogewogICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZUNhY2hlKCkuaGFzQW55QWN0
aXZlQ2xpZW50QXR0cmliKCkpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3Rh
dGUgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7Ci0gICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtICpw
cm9ncmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7Ci0gICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhB
cnJheSAqdmFvID0gZ2xTdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOwotICAgICAgICBjb25zdCBWZXJ0
ZXhBcnJheUdMICp2YW9HTCA9IEdldEltcGxBczxWZXJ0ZXhBcnJheUdMPih2YW8pOworICAgICAg
ICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRT
dGF0ZSgpOworICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUg
PSBnZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgICAgIGNvbnN0IGdsOjpW
ZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICAgICA9IGdsU3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsK
KyAgICAgICAgY29uc3QgVmVydGV4QXJyYXlHTCAqdmFvR0wgICAgICAgICAgICAgID0gR2V0SW1w
bEFzPFZlcnRleEFycmF5R0w+KHZhbyk7CiAKLSAgICAgICAgQU5HTEVfVFJZKHZhb0dMLT5zeW5j
Q2xpZW50U2lkZURhdGEoY29udGV4dCwgcHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzaygpLCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY291bnQsIGluc3RhbmNlQ291bnQpKTsKKyAgICAgICAgQU5HTEVfVFJZKHZhb0dMLT5zeW5j
Q2xpZW50U2lkZURhdGEoY29udGV4dCwgZXhlY3V0YWJsZS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRp
b25zTWFzaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpKTsKIAogI2lmIGRlZmluZWQoQU5HTEVfU1RBVEVf
VkFMSURBVElPTl9FTkFCTEVEKQogICAgICAgICB2YW9HTC0+dmFsaWRhdGVTdGF0ZSgpOwpAQCAt
MjQzLDE3ICsyMjEsMTUgQEAgQU5HTEVfSU5MSU5FIGFuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjpz
ZXREcmF3RWxlbWVudHNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY28KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICoqb3V0SW5kaWNlcykKIHsKLSAgICBjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpTdGF0
ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7CisgICAgY29u
c3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gZ2V0U3RhdGUoKS5nZXRQcm9n
cmFtRXhlY3V0YWJsZSgpOworICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAg
ICAgICA9IGdsU3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKKyAgICBjb25zdCBnbDo6U3RhdGVDYWNo
ZSAmc3RhdGVDYWNoZSAgICAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZUNhY2hlKCk7CiAKLSAgICBj
b25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbSgpOwotCi0gICAg
Y29uc3QgZ2w6OlZlcnRleEFycmF5ICp2YW8gPSBnbFN0YXRlLmdldFZlcnRleEFycmF5KCk7Ci0K
LSAgICBjb25zdCBnbDo6U3RhdGVDYWNoZSAmc3RhdGVDYWNoZSA9IGNvbnRleHQtPmdldFN0YXRl
Q2FjaGUoKTsKICAgICBpZiAoc3RhdGVDYWNoZS5oYXNBbnlBY3RpdmVDbGllbnRBdHRyaWIoKSB8
fCB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpID09IG51bGxwdHIpCiAgICAgewogICAgICAg
ICBjb25zdCBWZXJ0ZXhBcnJheUdMICp2YW9HTCA9IEdldEltcGxBczxWZXJ0ZXhBcnJheUdMPih2
YW8pOwotICAgICAgICBBTkdMRV9UUlkodmFvR0wtPnN5bmNEcmF3RWxlbWVudHNTdGF0ZShjb250
ZXh0LCBwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCksCisgICAgICAgIEFO
R0xFX1RSWSh2YW9HTC0+c3luY0RyYXdFbGVtZW50c1N0YXRlKGNvbnRleHQsIGV4ZWN1dGFibGUt
PmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlQ291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3Rh
dGUuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpLCBvdXRJbmRpY2VzKSk7CiAgICAgfQpAQCAt
MzI1LDYgKzMwMSw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogZ2w6OkF0dHJpYnV0ZXNNYXNrIENvbnRl
eHRHTDo6dXBkYXRlQXR0cmlidXRlc0ZvckJhc2VJbnN0YW5jZShjb25zdCBnbDo6UHJvZ3JhbSAq
cHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGJhc2VJbnN0YW5jZSkKIHsKKyAgICBjb25zdCBnbDo6UHJv
Z3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBnZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRh
YmxlKCk7CiAgICAgZ2w6OkF0dHJpYnV0ZXNNYXNrIGF0dHJpYlRvVXBkYXRlTWFzazsKIAogICAg
IGlmIChiYXNlSW5zdGFuY2UgIT0gMCkKQEAgLTMzNiw3ICszMTMsNyBAQCBnbDo6QXR0cmlidXRl
c01hc2sgQ29udGV4dEdMOjp1cGRhdGVBdHRyaWJ1dGVzRm9yQmFzZUluc3RhbmNlKGNvbnN0IGds
OjpQcm9ncmFtCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiA9IGF0dHJpYnNbYXR0cmliSW5kZXhdOwogICAgICAgICAgICAgY29uc3QgZ2w6
OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcgID0gYmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07
Ci0gICAgICAgICAgICBpZiAocHJvZ3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShhdHRyaWJJ
bmRleCkgJiYgYmluZGluZy5nZXREaXZpc29yKCkgIT0gMCkKKyAgICAgICAgICAgIGlmIChleGVj
dXRhYmxlLT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZlKGF0dHJpYkluZGV4KSAmJiBiaW5kaW5nLmdl
dERpdmlzb3IoKSAhPSAwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGF0dHJpYlRv
VXBkYXRlTWFzay5zZXQoYXR0cmliSW5kZXgpOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGF0dHJpYi5wb2ludGVy
KTsKQEAgLTY2NSwxMDAgKzY0Miw2IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjpkcmF3RWxl
bWVudHNJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgQ29udGV4dEdMOjpzdGVuY2lsRmlsbFBh
dGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spCi17
Ci0gICAgbVJlbmRlcmVyLT5zdGVuY2lsRmlsbFBhdGgobVN0YXRlLCBwYXRoLCBmaWxsTW9kZSwg
bWFzayk7Ci19Ci0KLXZvaWQgQ29udGV4dEdMOjpzdGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6
UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKLXsKLSAgICBtUmVuZGVy
ZXItPnN0ZW5jaWxTdHJva2VQYXRoKG1TdGF0ZSwgcGF0aCwgcmVmZXJlbmNlLCBtYXNrKTsKLX0K
LQotdm9pZCBDb250ZXh0R0w6OmNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdM
ZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgbVJlbmRlcmVyLT5jb3ZlckZpbGxQYXRoKG1TdGF0ZSwg
cGF0aCwgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBDb250ZXh0R0w6OmNvdmVyU3Ryb2tlUGF0aChj
b25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBtUmVuZGVyZXIt
PmNvdmVyU3Ryb2tlUGF0aChtU3RhdGUsIHBhdGgsIGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgQ29u
dGV4dEdMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUp
Ci17Ci0gICAgbVJlbmRlcmVyLT5zdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgobVN0YXRlLCBwYXRo
LCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBDb250ZXh0R0w6OnN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQotewot
ICAgIG1SZW5kZXJlci0+c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgobVN0YXRlLCBwYXRoLCBy
ZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgQ29udGV4dEdMOjpjb3ZlckZp
bGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBtUmVuZGVyZXItPmNvdmVyRmlsbFBhdGhJbnN0YW5j
ZWQobVN0YXRlLCBwYXRocywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1
ZXMpOwotfQotCi12b2lkIENvbnRleHRHTDo6Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0
IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cykKLXsKLSAgICBtUmVuZGVyZXItPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChtU3RhdGUsIHBh
dGhzLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZv
aWQgQ29udGV4dEdMOjpzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8
Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIG1SZW5k
ZXJlci0+c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKG1TdGF0ZSwgcGF0aHMsIGZpbGxNb2RlLCBt
YXNrLCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dEdMOjpzdGVuY2lsU3Ryb2tl
UGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBtUmVuZGVyZXItPnN0ZW5jaWxTdHJv
a2VQYXRoSW5zdGFuY2VkKG1TdGF0ZSwgcGF0aHMsIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNmb3Jt
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dEdMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKQotewotICAgIG1SZW5kZXJlci0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
KG1TdGF0ZSwgcGF0aHMsIGNvdmVyTW9kZSwgZmlsbE1vZGUsIG1hc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNm
b3JtVmFsdWVzKTsKLX0KLQotdm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgbVJlbmRlcmVyLT5zdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZChtU3RhdGUsIHBhdGhzLCBjb3Zlck1vZGUsIHJlZmVyZW5jZSwgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KIGdsOjpHcmFwaGljc1Jlc2V0U3Rh
dHVzIENvbnRleHRHTDo6Z2V0UmVzZXRTdGF0dXMoKQogewogICAgIHJldHVybiBtUmVuZGVyZXIt
PmdldFJlc2V0U3RhdHVzKCk7CkBAIC03NzQsMjkgKzY1NywzNyBAQCBzdGQ6OnN0cmluZyBDb250
ZXh0R0w6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtUmVuZGVy
ZXItPmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKTsKIH0KIAotdm9pZCBDb250ZXh0R0w6Omluc2Vy
dEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCithbmdsZTo6
UmVzdWx0IENvbnRleHRHTDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0
IGNoYXIgKm1hcmtlcikKIHsKICAgICBtUmVuZGVyZXItPmluc2VydEV2ZW50TWFya2VyKGxlbmd0
aCwgbWFya2VyKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZv
aWQgQ29udGV4dEdMOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKIHsKICAgICBtUmVuZGVyZXItPnB1c2hHcm91
cE1hcmtlcihsZW5ndGgsIG1hcmtlcik7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwogfQogCi12b2lkIENvbnRleHRHTDo6cG9wR3JvdXBNYXJrZXIoKQorYW5nbGU6OlJlc3Vs
dCBDb250ZXh0R0w6OnBvcEdyb3VwTWFya2VyKCkKIHsKICAgICBtUmVuZGVyZXItPnBvcEdyb3Vw
TWFya2VyKCk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lk
IENvbnRleHRHTDo6cHVzaERlYnVnR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBjb25z
dCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjpwdXNoRGVi
dWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKIHsKICAgICBtUmVuZGVy
ZXItPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwgaWQsIG1lc3NhZ2UpOworICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBDb250ZXh0R0w6OnBvcERlYnVnR3JvdXAo
KQorYW5nbGU6OlJlc3VsdCBDb250ZXh0R0w6OnBvcERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQpCiB7CiAgICAgbVJlbmRlcmVyLT5wb3BEZWJ1Z0dyb3VwKCk7CisgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRH
TDo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApAQCAtOTExLDUgKzgwMiw0
IEBAIHZvaWQgQ29udGV4dEdMOjpmbHVzaElmTmVjZXNzYXJ5QmVmb3JlRGVsZXRlVGV4dHVyZXMo
KQogICAgIG1SZW5kZXJlci0+Zmx1c2hJZk5lY2Vzc2FyeUJlZm9yZURlbGV0ZVRleHR1cmVzKCk7
CiB9CiAKLQogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgKaW5kZXgg
MjY0NWJlMDUyMGJhMTUzYTliZjlkYmE2NDA4NmU4NGE1NzJjNmJiNS4uYjE0YTRjMWQ5NjQyYjZm
NzM1Y2JiODgxMGM2NzFhNGU5N2JhMzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaApAQCAt
NzYsOSArNzYsNiBAQCBjbGFzcyBDb250ZXh0R0wgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAv
LyBQcm9ncmFtIFBpcGVsaW5lIG9iamVjdCBjcmVhdGlvbgogICAgIFByb2dyYW1QaXBlbGluZUlt
cGwgKmNyZWF0ZVByb2dyYW1QaXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBpcGVsaW5lU3RhdGUg
JmRhdGEpIG92ZXJyaWRlOwogCi0gICAgLy8gUGF0aCBvYmplY3QgY3JlYXRpb24KLSAgICBzdGQ6
OnZlY3RvcjxQYXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKSBvdmVycmlkZTsK
LQogICAgIC8vIE1lbW9yeSBvYmplY3QgY3JlYXRpb24uCiAgICAgTWVtb3J5T2JqZWN0SW1wbCAq
Y3JlYXRlTWVtb3J5T2JqZWN0KCkgb3ZlcnJpZGU7CiAKQEAgLTE2NCw1MCArMTYxLDYgQEAgY2xh
c3MgQ29udGV4dEdMIDogcHVibGljIENvbnRleHRJbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6RHJhd0VsZW1lbnRzVHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRl
OwogCi0gICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgaW1wbGVtZW50YXRpb24KLSAgICB2
b2lkIHN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2Rl
LCBHTHVpbnQgbWFzaykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aChjb25z
dCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292
ZXJNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0
aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgY292ZXJGaWxsUGF0aEluc3Rh
bmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOwotICAg
IHZvaWQgY292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRo
ICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsRmlsbFBhdGhJbnN0
YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOwotICAgIHZv
aWQgc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGgg
Kj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVm
ZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAq
PiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykg
b3ZlcnJpZGU7Ci0KICAgICAvLyBEZXZpY2UgbG9zcwogICAgIGdsOjpHcmFwaGljc1Jlc2V0U3Rh
dHVzIGdldFJlc2V0U3RhdHVzKCkgb3ZlcnJpZGU7CiAKQEAgLTIxNiwxMyArMTY5LDE2IEBAIGNs
YXNzIENvbnRleHRHTCA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIHN0ZDo6c3RyaW5nIGdldFJl
bmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEVYVF9kZWJ1Z19t
YXJrZXIKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBj
aGFyICptYXJrZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXIoKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IGluc2VydEV2ZW50TWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpS
ZXN1bHQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIp
IG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wR3JvdXBNYXJrZXIoKSBvdmVycmlkZTsK
IAogICAgIC8vIEtIUl9kZWJ1ZwotICAgIHZvaWQgcHVzaERlYnVnR3JvdXAoR0xlbnVtIHNvdXJj
ZSwgR0x1aW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwb3BEZWJ1Z0dyb3VwKCkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwdXNoRGVi
dWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwb3BEZWJ1
Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIC8vIFN0
YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgogICAgIGFuZ2xlOjpSZXN1bHQgc3luY1N0YXRlKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BhdGNoVGFibGVHTF9hdXRvZ2VuLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNw
YXRjaFRhYmxlR0xfYXV0b2dlbi5jcHAKaW5kZXggZjc3MDFmNzcwNTIzMDgzMzc0NGM5ODUyODky
NDYzNDNhMzc5MTc5ZS4uZWY0NDA1NDY4Yzg2Y2RhNTZmNGZlMGIwY2MxYzRkZjk0ZmFmOTgwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0Rpc3BhdGNoVGFibGVHTF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1dG9nZW4uY3Bw
CkBAIC0xLDcgKzEsNyBAQAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdl
bmVyYXRlZCBieSBnZW5lcmF0ZV9nbF9kaXNwYXRjaF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20g
Z2xfYmluZGluZ3NfZGF0YS5qc29uIGFuZCBnbC54bWwuCiAvLwotLy8gQ29weXJpZ2h0IDIwMTkg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAg
LTIzNDEsNiArMjM0MSw3IEBAIHZvaWQgRGlzcGF0Y2hUYWJsZUdMOjppbml0UHJvY3NHTEVTKGNv
bnN0IGdsOjpWZXJzaW9uICZ2ZXJzaW9uLAogICAgICAgICBBU1NJR04oImdsRGVsZXRlUXVlcmll
c0VYVCIsIGRlbGV0ZVF1ZXJpZXMpOwogICAgICAgICBBU1NJR04oImdsRW5kUXVlcnlFWFQiLCBl
bmRRdWVyeSk7CiAgICAgICAgIEFTU0lHTigiZ2xHZW5RdWVyaWVzRVhUIiwgZ2VuUXVlcmllcyk7
CisgICAgICAgIEFTU0lHTigiZ2xHZXRJbnRlZ2VyNjR2RVhUIiwgZ2V0SW50ZWdlcjY0dik7CiAg
ICAgICAgIEFTU0lHTigiZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQiLCBnZXRRdWVyeU9iamVjdGk2
NHYpOwogICAgICAgICBBU1NJR04oImdsR2V0UXVlcnlPYmplY3RpdkVYVCIsIGdldFF1ZXJ5T2Jq
ZWN0aXYpOwogICAgICAgICBBU1NJR04oImdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVCIsIGdldFF1
ZXJ5T2JqZWN0dWk2NHYpOwpAQCAtMjc4NiwzMyArMjc4Nyw2IEBAIHZvaWQgRGlzcGF0Y2hUYWJs
ZUdMOjppbml0UHJvY3NTaGFyZWRFeHRlbnNpb25zKGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
PiAmZXh0CiAgICAgICAgIEFTU0lHTigiZ2xHZXRJbnRlcm5hbGZvcm1hdFNhbXBsZWl2TlYiLCBn
ZXRJbnRlcm5hbGZvcm1hdFNhbXBsZWl2TlYpOwogICAgIH0KIAotICAgIGlmIChleHRlbnNpb25z
LmNvdW50KCJHTF9OVl9wYXRoX3JlbmRlcmluZyIpICE9IDApCi0gICAgewotICAgICAgICBBU1NJ
R04oImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WIiwgY292ZXJGaWxsUGF0aEluc3RhbmNlZE5W
KTsKLSAgICAgICAgQVNTSUdOKCJnbENvdmVyRmlsbFBhdGhOViIsIGNvdmVyRmlsbFBhdGhOVik7
Ci0gICAgICAgIEFTU0lHTigiZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROViIsIGNvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZE5WKTsKLSAgICAgICAgQVNTSUdOKCJnbENvdmVyU3Ryb2tlUGF0aE5W
IiwgY292ZXJTdHJva2VQYXRoTlYpOwotICAgICAgICBBU1NJR04oImdsRGVsZXRlUGF0aHNOViIs
IGRlbGV0ZVBhdGhzTlYpOwotICAgICAgICBBU1NJR04oImdsR2VuUGF0aHNOViIsIGdlblBhdGhz
TlYpOwotICAgICAgICBBU1NJR04oImdsR2V0UGF0aFBhcmFtZXRlcmZ2TlYiLCBnZXRQYXRoUGFy
YW1ldGVyZnZOVik7Ci0gICAgICAgIEFTU0lHTigiZ2xHZXRQYXRoUGFyYW1ldGVyaXZOViIsIGdl
dFBhdGhQYXJhbWV0ZXJpdk5WKTsKLSAgICAgICAgQVNTSUdOKCJnbElzUGF0aE5WIiwgaXNQYXRo
TlYpOwotICAgICAgICBBU1NJR04oImdsTWF0cml4TG9hZGZFWFQiLCBtYXRyaXhMb2FkZkVYVCk7
Ci0gICAgICAgIEFTU0lHTigiZ2xQYXRoQ29tbWFuZHNOViIsIHBhdGhDb21tYW5kc05WKTsKLSAg
ICAgICAgQVNTSUdOKCJnbFBhdGhQYXJhbWV0ZXJmTlYiLCBwYXRoUGFyYW1ldGVyZk5WKTsKLSAg
ICAgICAgQVNTSUdOKCJnbFBhdGhQYXJhbWV0ZXJpTlYiLCBwYXRoUGFyYW1ldGVyaU5WKTsKLSAg
ICAgICAgQVNTSUdOKCJnbFBhdGhTdGVuY2lsRnVuY05WIiwgcGF0aFN0ZW5jaWxGdW5jTlYpOwot
ICAgICAgICBBU1NJR04oImdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYiLCBwcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5OVik7Ci0gICAgICAgIEFTU0lHTigiZ2xTdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWROViIsIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZE5WKTsKLSAgICAgICAgQVNT
SUdOKCJnbFN0ZW5jaWxGaWxsUGF0aE5WIiwgc3RlbmNpbEZpbGxQYXRoTlYpOwotICAgICAgICBB
U1NJR04oImdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViIsIHN0ZW5jaWxTdHJva2VQYXRo
SW5zdGFuY2VkTlYpOwotICAgICAgICBBU1NJR04oImdsU3RlbmNpbFN0cm9rZVBhdGhOViIsIHN0
ZW5jaWxTdHJva2VQYXRoTlYpOwotICAgICAgICBBU1NJR04oImdsU3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkTlYiLCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVik7
Ci0gICAgICAgIEFTU0lHTigiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhOViIsIHN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aE5WKTsKLSAgICAgICAgQVNTSUdOKCJnbFN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkTlYiLCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZE5WKTsKLSAgICAgICAgQVNTSUdOKCJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoTlYiLCBz
dGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WKTsKLSAgICB9Ci0KICAgICBpZiAoZXh0ZW5zaW9u
cy5jb3VudCgiR0xfT1ZSX211bHRpdmlldyIpICE9IDApCiAgICAgewogICAgICAgICBBU1NJR04o
ImdsRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSIiwgZnJhbWVidWZmZXJUZXh0dXJlTXVs
dGl2aWV3T1ZSKTsKQEAgLTUxMzIsNiArNTEwNiw3IEBAIHZvaWQgRGlzcGF0Y2hUYWJsZUdMOjpp
bml0UHJvY3NHTEVTTlVMTChjb25zdCBnbDo6VmVyc2lvbiAmdmVyc2lvbiwKICAgICAgICAgZGVs
ZXRlUXVlcmllcyAgICAgICA9ICZnbERlbGV0ZVF1ZXJpZXNOVUxMOwogICAgICAgICBlbmRRdWVy
eSAgICAgICAgICAgID0gJmdsRW5kUXVlcnlOVUxMOwogICAgICAgICBnZW5RdWVyaWVzICAgICAg
ICAgID0gJmdsR2VuUXVlcmllc05VTEw7CisgICAgICAgIGdldEludGVnZXI2NHYgICAgICAgPSAm
Z2xHZXRJbnRlZ2VyNjR2TlVMTDsKICAgICAgICAgZ2V0UXVlcnlPYmplY3RpNjR2ICA9ICZnbEdl
dFF1ZXJ5T2JqZWN0aTY0dk5VTEw7CiAgICAgICAgIGdldFF1ZXJ5T2JqZWN0aXYgICAgPSAmZ2xH
ZXRRdWVyeU9iamVjdGl2TlVMTDsKICAgICAgICAgZ2V0UXVlcnlPYmplY3R1aTY0diA9ICZnbEdl
dFF1ZXJ5T2JqZWN0dWk2NHZOVUxMOwpAQCAtNTU3NywzMyArNTU1Miw2IEBAIHZvaWQgRGlzcGF0
Y2hUYWJsZUdMOjppbml0UHJvY3NTaGFyZWRFeHRlbnNpb25zTlVMTChjb25zdCBzdGQ6OnNldDxz
dGQ6OnN0cmluZz4KICAgICAgICAgZ2V0SW50ZXJuYWxmb3JtYXRTYW1wbGVpdk5WID0gJmdsR2V0
SW50ZXJuYWxmb3JtYXRTYW1wbGVpdk5WTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZXh0ZW5zaW9u
cy5jb3VudCgiR0xfTlZfcGF0aF9yZW5kZXJpbmciKSAhPSAwKQotICAgIHsKLSAgICAgICAgY292
ZXJGaWxsUGF0aEluc3RhbmNlZE5WICAgICAgICAgICAgICA9ICZnbENvdmVyRmlsbFBhdGhJbnN0
YW5jZWROVk5VTEw7Ci0gICAgICAgIGNvdmVyRmlsbFBhdGhOViAgICAgICAgICAgICAgICAgICAg
ICAgPSAmZ2xDb3ZlckZpbGxQYXRoTlZOVUxMOwotICAgICAgICBjb3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWROViAgICAgICAgICAgID0gJmdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlZOVUxMOwot
ICAgICAgICBjb3ZlclN0cm9rZVBhdGhOViAgICAgICAgICAgICAgICAgICAgID0gJmdsQ292ZXJT
dHJva2VQYXRoTlZOVUxMOwotICAgICAgICBkZWxldGVQYXRoc05WICAgICAgICAgICAgICAgICAg
ICAgICAgID0gJmdsRGVsZXRlUGF0aHNOVk5VTEw7Ci0gICAgICAgIGdlblBhdGhzTlYgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAmZ2xHZW5QYXRoc05WTlVMTDsKLSAgICAgICAgZ2V0UGF0
aFBhcmFtZXRlcmZ2TlYgICAgICAgICAgICAgICAgICA9ICZnbEdldFBhdGhQYXJhbWV0ZXJmdk5W
TlVMTDsKLSAgICAgICAgZ2V0UGF0aFBhcmFtZXRlcml2TlYgICAgICAgICAgICAgICAgICA9ICZn
bEdldFBhdGhQYXJhbWV0ZXJpdk5WTlVMTDsKLSAgICAgICAgaXNQYXRoTlYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9ICZnbElzUGF0aE5WTlVMTDsKLSAgICAgICAgbWF0cml4TG9hZGZF
WFQgICAgICAgICAgICAgICAgICAgICAgICA9ICZnbE1hdHJpeExvYWRmRVhUTlVMTDsKLSAgICAg
ICAgcGF0aENvbW1hbmRzTlYgICAgICAgICAgICAgICAgICAgICAgICA9ICZnbFBhdGhDb21tYW5k
c05WTlVMTDsKLSAgICAgICAgcGF0aFBhcmFtZXRlcmZOViAgICAgICAgICAgICAgICAgICAgICA9
ICZnbFBhdGhQYXJhbWV0ZXJmTlZOVUxMOwotICAgICAgICBwYXRoUGFyYW1ldGVyaU5WICAgICAg
ICAgICAgICAgICAgICAgID0gJmdsUGF0aFBhcmFtZXRlcmlOVk5VTEw7Ci0gICAgICAgIHBhdGhT
dGVuY2lsRnVuY05WICAgICAgICAgICAgICAgICAgICAgPSAmZ2xQYXRoU3RlbmNpbEZ1bmNOVk5V
TEw7Ci0gICAgICAgIHByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5WICAgICAgICAgPSAmZ2xQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5OVk5VTEw7Ci0gICAgICAgIHN0ZW5jaWxGaWxsUGF0
aEluc3RhbmNlZE5WICAgICAgICAgICAgPSAmZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWROVk5V
TEw7Ci0gICAgICAgIHN0ZW5jaWxGaWxsUGF0aE5WICAgICAgICAgICAgICAgICAgICAgPSAmZ2xT
dGVuY2lsRmlsbFBhdGhOVk5VTEw7Ci0gICAgICAgIHN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2Vk
TlYgICAgICAgICAgPSAmZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZE5WTlVMTDsKLSAgICAg
ICAgc3RlbmNpbFN0cm9rZVBhdGhOViAgICAgICAgICAgICAgICAgICA9ICZnbFN0ZW5jaWxTdHJv
a2VQYXRoTlZOVUxMOwotICAgICAgICBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRO
ViAgID0gJmdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkTlZOVUxMOwotICAgICAg
ICBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhOViAgICAgICAgICAgID0gJmdsU3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoTlZOVUxMOwotICAgICAgICBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZE5WID0gJmdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVk5VTEw7
Ci0gICAgICAgIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoTlYgICAgICAgICAgPSAmZ2xTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoZXh0ZW5zaW9u
cy5jb3VudCgiR0xfT1ZSX211bHRpdmlldyIpICE9IDApCiAgICAgewogICAgICAgICBmcmFtZWJ1
ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIgPSAmZ2xGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdP
VlJOVUxMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL0Rpc3BhdGNoVGFibGVHTF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1dG9nZW4u
aAppbmRleCA4ZjY1NzdmMjFkYjliZTRiNDVlZTQ5NDgyNWU3OWJjMmZmOTUzYjBhLi40NDUxZTlj
ODFkMmZhZWJlZWFkMmYzMDRhZTdmYzIyMGY0NWNlYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1
dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1dG9nZW4uaApAQCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVS
QVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCiAvLyBHZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfZ2xfZGlz
cGF0Y2hfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGdsX2JpbmRpbmdzX2RhdGEuanNvbiBhbmQg
Z2wueG1sLgogLy8KLS8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC03OTUsMzEgKzc5NSw2IEBAIGNsYXNzIERp
c3BhdGNoVGFibGVHTCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgLy8gR0xfT1ZSX211bHRp
dmlldzIKICAgICBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRU1VTFRJVklFV09WUlBST0MgZnJhbWVi
dWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSID0gbnVsbHB0cjsKLQotICAgIC8vIE5WX3BhdGhfcmVu
ZGVyaW5nIChvcmlnaW5hbGx5IHdyaXR0ZW4gYWdhaW5zdCAzLjIgY29tcGF0aWJpbGl0eSBwcm9m
aWxlKQotICAgIFBGTkdMQ09WRVJGSUxMUEFUSElOU1RBTkNFRE5WUFJPQyBjb3ZlckZpbGxQYXRo
SW5zdGFuY2VkTlYgPSBudWxscHRyOwotICAgIFBGTkdMQ09WRVJGSUxMUEFUSE5WUFJPQyBjb3Zl
ckZpbGxQYXRoTlYgPSBudWxscHRyOwotICAgIFBGTkdMQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VE
TlZQUk9DIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WID0gbnVsbHB0cjsKLSAgICBQRk5HTENP
VkVSU1RST0tFUEFUSE5WUFJPQyBjb3ZlclN0cm9rZVBhdGhOViA9IG51bGxwdHI7Ci0gICAgUEZO
R0xERUxFVEVQQVRIU05WUFJPQyBkZWxldGVQYXRoc05WID0gbnVsbHB0cjsKLSAgICBQRk5HTEdF
TlBBVEhTTlZQUk9DIGdlblBhdGhzTlYgPSBudWxscHRyOwotICAgIFBGTkdMR0VUUEFUSFBBUkFN
RVRFUkZWTlZQUk9DIGdldFBhdGhQYXJhbWV0ZXJmdk5WID0gbnVsbHB0cjsKLSAgICBQRk5HTEdF
VFBBVEhQQVJBTUVURVJJVk5WUFJPQyBnZXRQYXRoUGFyYW1ldGVyaXZOViA9IG51bGxwdHI7Ci0g
ICAgUEZOR0xJU1BBVEhOVlBST0MgaXNQYXRoTlYgPSBudWxscHRyOwotICAgIFBGTkdMTUFUUklY
TE9BREZFWFRQUk9DIG1hdHJpeExvYWRmRVhUID0gbnVsbHB0cjsKLSAgICBQRk5HTFBBVEhDT01N
QU5EU05WUFJPQyBwYXRoQ29tbWFuZHNOViA9IG51bGxwdHI7Ci0gICAgUEZOR0xQQVRIUEFSQU1F
VEVSRk5WUFJPQyBwYXRoUGFyYW1ldGVyZk5WID0gbnVsbHB0cjsKLSAgICBQRk5HTFBBVEhQQVJB
TUVURVJJTlZQUk9DIHBhdGhQYXJhbWV0ZXJpTlYgPSBudWxscHRyOwotICAgIFBGTkdMUEFUSFNU
RU5DSUxGVU5DTlZQUk9DIHBhdGhTdGVuY2lsRnVuY05WID0gbnVsbHB0cjsKLSAgICBQRk5HTFBS
T0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTk5WUFJPQyBwcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5OViA9IG51bGxwdHI7Ci0gICAgUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5DRUROVlBST0Mg
c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlYgPSBudWxscHRyOwotICAgIFBGTkdMU1RFTkNJTEZJ
TExQQVRITlZQUk9DIHN0ZW5jaWxGaWxsUGF0aE5WID0gbnVsbHB0cjsKLSAgICBQRk5HTFNURU5D
SUxTVFJPS0VQQVRISU5TVEFOQ0VETlZQUk9DIHN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkTlYg
PSBudWxscHRyOwotICAgIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhOVlBST0Mgc3RlbmNpbFN0cm9r
ZVBhdGhOViA9IG51bGxwdHI7Ci0gICAgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhJTlNU
QU5DRUROVlBST0Mgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYgPSBudWxscHRy
OwotICAgIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRITlZQUk9DIHN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aE5WID0gbnVsbHB0cjsKLSAgICBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQ
QVRISU5TVEFOQ0VETlZQUk9DIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYg
PSBudWxscHRyOwotICAgIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhOVlBST0Mgc3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhOViA9IG51bGxwdHI7CiAgICAgLy8gY2xhbmctZm9ybWF0
IG9uCiAKICAgICBEaXNwYXRjaFRhYmxlR0woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmplY3RHTC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2Jq
ZWN0R0wuY3BwCmluZGV4IDEyOGQ2MjJjZDQ3YjFkMjBjZTFiNDdhN2QxODEzYmUwZGYxNzIzZjku
Ljc4MDc4NjA1ZTBjZmUyYmM0MzMwZGExNGU2NDIzYTIzZjgxYzgxZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmpl
Y3RHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL01lbW9yeU9iamVjdEdMLmNwcApAQCAtNiw2ICs2LDcgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmplY3RHTC5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUv
Q29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKQEAgLTI5LDE2ICszMCwzNiBAQCB2b2lkIE1lbW9yeU9i
amVjdEdMOjpvbkRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAgICAgbU1lbW9y
eU9iamVjdCA9IDA7CiB9CiAKK2FuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0R0w6OnNldERlZGlj
YXRlZE1lbW9yeShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCBkZWRpY2F0ZWRNZW1v
cnkpCit7CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdldEZ1bmN0aW9uc0dM
KGNvbnRleHQpOworCisgICAgR0xpbnQgcGFyYW1zID0gZ2w6OkNvbnZlcnRUb0dMQm9vbGVhbihk
ZWRpY2F0ZWRNZW1vcnkpOworICAgIEFOR0xFX0dMX1RSWShjb250ZXh0LCBmdW5jdGlvbnMtPm1l
bW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bU1lbW9yeU9iamVjdCwgR0xfREVESUNBVEVEX01FTU9SWV9PQkpFQ1RfRVhULCAmcGFyYW1zKSk7
CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCiBhbmdsZTo6UmVzdWx0
IE1lbW9yeU9iamVjdEdMOjppbXBvcnRGZChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpCiB7CiAgICAg
Y29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyA9IEdldEZ1bmN0aW9uc0dMKGNvbnRleHQpOwot
ICAgIGZ1bmN0aW9ucy0+aW1wb3J0TWVtb3J5RmRFWFQobU1lbW9yeU9iamVjdCwgc2l6ZSwgVG9H
TGVudW0oaGFuZGxlVHlwZSksIGZkKTsKKyAgICBBTkdMRV9HTF9UUlkoY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5pbXBvcnRNZW1vcnlGZEVYVChtTWVtb3J5T2JqZWN0LCBz
aXplLCBUb0dMZW51bShoYW5kbGVUeXBlKSwgZmQpKTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7CiB9CiAKK2FuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0R0w6OmltcG9ydFpp
cmNvbkhhbmRsZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGhhbmRsZSkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpTdG9wOworfQorCiBHTHVpbnQgTWVtb3J5T2JqZWN0R0w6OmdldE1lbW9yeU9iamVjdElE
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbU1lbW9yeU9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmplY3RH
TC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL01l
bW9yeU9iamVjdEdMLmgKaW5kZXggZGVhMGQyOGY4MzA5M2QzMmU0ZWY2ZTM5MWYxMWM4YzE1ZGRi
YzAzNS4uNWMzNjQ3ODA5ZTJmNDkxY2FmM2EzY2QwMGQ5MDZiNTc5MDJhMDA0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9y
eU9iamVjdEdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmgKQEAgLTIxLDExICsyMSwxOCBAQCBjbGFzcyBNZW1v
cnlPYmplY3RHTCA6IHB1YmxpYyBNZW1vcnlPYmplY3RJbXBsCiAKICAgICB2b2lkIG9uRGVzdHJv
eShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKKyAgICBhbmdsZTo6UmVz
dWx0IHNldERlZGljYXRlZE1lbW9yeShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCBk
ZWRpY2F0ZWRNZW1vcnkpIG92ZXJyaWRlOworCiAgICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRGZChn
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpIG92ZXJyaWRlOwogCisg
ICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRaaXJjb25IYW5kbGUoZ2w6OkNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUp
IG92ZXJyaWRlOworCiAgICAgR0x1aW50IGdldE1lbW9yeU9iamVjdElEKCkgY29uc3Q7CiAKICAg
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyMjBhN2E4OTBiMDIwOGY5MWMxYzI1
NmYyZDFmZTc5NjBhNTM3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvT1dORVJTCkBAIC0wLDAgKzEsMiBAQAorZ2Vv
ZmZsYW5nQGNocm9taXVtLm9yZworam9uYWhyQGdvb2dsZS5jb20KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMDM0MzcwNDAwNTEzZWVmYmRjMTJj
OWIzMmE0MmU1MWFlMzIwMDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1BhdGhHTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0v
LyBQYXRoR0wuY3BwOiBJbXBsZW1lbnRhdGlvbiBmb3IgUGF0aEdMIGNsYXNzLgotCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci1QYXRoR0w6OlBhdGhH
TChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTHVpbnQgcGF0aCkgOiBtRnVuY3Rpb25z
KGZ1bmN0aW9ucyksIG1QYXRoSUQocGF0aCkge30KLQotUGF0aEdMOjp+UGF0aEdMKCkge30KLQot
YW5nbGU6OlJlc3VsdCBQYXRoR0w6OnNldENvbW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCi17Ci0gICAg
bUZ1bmN0aW9ucy0+cGF0aENvbW1hbmRzTlYobVBhdGhJRCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRz
LCBudW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUGF0aEdMOjpzZXRQYXRoUGFyYW1ldGVyKEdMZW51bSBw
bmFtZSwgR0xmbG9hdCB2YWx1ZSkKLXsKLSAgICBtRnVuY3Rpb25zLT5wYXRoUGFyYW1ldGVyZk5W
KG1QYXRoSUQsIHBuYW1lLCB2YWx1ZSk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRo
R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Q
YXRoR0wuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUyZmVhMTA2OTYyZjc2NTRm
MzU3MmRjOTM4OTkzZDMxOWQ4NzBhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUGF0aEdMLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0vLyBQYXRoR0wuaDogQ2xhc3MgZGVmaW5pdGlvbiBmb3IgQ0hST01JVU1fcGF0aF9yZW5kZXJp
bmcgcGF0aCBvYmplY3QgZm9yIHRoZQotLy8gR0wgYmFja2VuZC4KLQotI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9HTF9QQVRISU1QTF9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9Q
QVRISU1QTF9IXwotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaCIKLQot
bmFtZXNwYWNlIHJ4Ci17Ci0KLWNsYXNzIEZ1bmN0aW9uc0dMOwotCi1jbGFzcyBQYXRoR0wgOiBw
dWJsaWMgUGF0aEltcGwKLXsKLSAgcHVibGljOgotICAgIFBhdGhHTChjb25zdCBGdW5jdGlvbnNH
TCAqZnVuY3Rpb25zLCBHTHVpbnQgcGF0aCk7Ci0gICAgflBhdGhHTCgpIG92ZXJyaWRlOwotCi0g
ICAgYW5nbGU6OlJlc3VsdCBzZXRDb21tYW5kcyhHTHNpemVpIG51bUNvbW1hbmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBzZXRQYXRo
UGFyYW1ldGVyKEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSkgb3ZlcnJpZGU7Ci0KLSAgICBH
THVpbnQgZ2V0UGF0aElEKCkgY29uc3QgeyByZXR1cm4gbVBhdGhJRDsgfQotCi0gIHByaXZhdGU6
Ci0gICAgY29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7Ci0KLSAgICBHTHVpbnQgbVBhdGhJ
RDsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRF
UkVSX0dMX1BBVEhJTVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuY3BwCmluZGV4IGUzODIy
ZWEzODRjYTFlMmU0NWM1ZmVjOWY5ZWUyNzExNTZiYWY1OGMuLjVlOGNjYWYxODUyNzY2NWNkY2Fi
NGU5MTIyNWE5M2ZmOWM3MGE3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuY3BwCkBAIC0z
MywxMyArMzMsMTEgQEAgUHJvZ3JhbUdMOjpQcm9ncmFtR0woY29uc3QgZ2w6OlByb2dyYW1TdGF0
ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6RmVhdHVyZXNHTCAmZmVhdHVy
ZXMsCiAgICAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVQYXRoUmVuZGVyaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzaGFyZWRfcHRyPFJlbmRlcmVyR0w+ICZyZW5kZXJlcikK
ICAgICA6IFByb2dyYW1JbXBsKGRhdGEpLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAog
ICAgICAgbUZlYXR1cmVzKGZlYXR1cmVzKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVNYW5h
Z2VyKSwKLSAgICAgIG1FbmFibGVQYXRoUmVuZGVyaW5nKGVuYWJsZVBhdGhSZW5kZXJpbmcpLAog
ICAgICAgbU11bHRpdmlld0Jhc2VWaWV3TGF5ZXJJbmRleFVuaWZvcm1Mb2NhdGlvbigtMSksCiAg
ICAgICBtUHJvZ3JhbUlEKDApLAogICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKQEAgLTIyOSw5
ICsyMjcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExpbmtFdmVudD4gUHJvZ3JhbUdMOjpsaW5rKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTWFwcGVkTmFtZXM7CiAgICAgICAgIGZvciAoY29u
c3QgYXV0byAmdGZWYXJ5aW5nIDogbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05h
bWVzKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpTaGFkZXJUeXBlIHRmU2hhZGVyVHlw
ZSA9IG1TdGF0ZS5oYXNMaW5rZWRTaGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6R2VvbWV0cnkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnbDo6U2hh
ZGVyVHlwZTo6R2VvbWV0cnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IGdsOjpTaGFkZXJUeXBlOjpWZXJ0ZXg7CisgICAgICAgICAgICBnbDo6U2hhZGVy
VHlwZSB0ZlNoYWRlclR5cGUgPQorICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRQcm9ncmFtRXhl
Y3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdlKGdsOjpTaGFkZXJUeXBlOjpHZW9tZXRyeSkK
KyAgICAgICAgICAgICAgICAgICAgPyBnbDo6U2hhZGVyVHlwZTo6R2VvbWV0cnkKKyAgICAgICAg
ICAgICAgICAgICAgOiBnbDo6U2hhZGVyVHlwZTo6VmVydGV4OwogICAgICAgICAgICAgc3RkOjpz
dHJpbmcgdGZWYXJ5aW5nTWFwcGVkTmFtZSA9CiAgICAgICAgICAgICAgICAgbVN0YXRlLmdldEF0
dGFjaGVkU2hhZGVyKHRmU2hhZGVyVHlwZSkKICAgICAgICAgICAgICAgICAgICAgLT5nZXRUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdNYXBwZWROYW1lKHRmVmFyeWluZyk7CkBAIC05NDAsMzEgKzkz
OSwxMSBAQCB2b2lkIFByb2dyYW1HTDo6Z2V0QXRvbWljQ291bnRlckJ1ZmZlclNpemVNYXAoc3Rk
OjptYXA8aW50LCB1bnNpZ25lZCBpbnQ+ICpzaXplTQogICAgIH0KIH0KIAotdm9pZCBQcm9ncmFt
R0w6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICpjb2VmZnMpCi17Ci0gICAgQVNTRVJUKG1FbmFibGVQYXRoUmVuZGVyaW5nKTsKLQotICAgIGZv
ciAoY29uc3QgYXV0byAmaW5wdXQgOiBtUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXRzKQotICAg
IHsKLSAgICAgICAgaWYgKGlucHV0Lm1hcHBlZE5hbWUgPT0gaW5wdXROYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtRnVuY3Rpb25zLT5wcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5OViht
UHJvZ3JhbUlELCBpbnB1dC5sb2NhdGlvbiwgZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMsIGNvZWZmcyk7Ci0g
ICAgICAgICAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgUHJvZ3Jh
bUdMOjpwcmVMaW5rKCkKIHsKICAgICAvLyBSZXNldCB0aGUgcHJvZ3JhbSBzdGF0ZQogICAgIG1V
bmlmb3JtUmVhbExvY2F0aW9uTWFwLmNsZWFyKCk7CiAgICAgbVVuaWZvcm1CbG9ja1JlYWxMb2Nh
dGlvbk1hcC5jbGVhcigpOwotICAgIG1QYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dHMuY2xlYXIo
KTsKIAogICAgIG1NdWx0aXZpZXdCYXNlVmlld0xheWVySW5kZXhVbmlmb3JtTG9jYXRpb24gPSAt
MTsKIH0KQEAgLTEwNDUsNzEgKzEwMjQsNiBAQCB2b2lkIFByb2dyYW1HTDo6cG9zdExpbmsoKQog
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtSUQsICJt
dWx0aXZpZXdCYXNlVmlld0xheWVySW5kZXgiKTsKICAgICAgICAgQVNTRVJUKG1NdWx0aXZpZXdC
YXNlVmlld0xheWVySW5kZXhVbmlmb3JtTG9jYXRpb24gIT0gLTEpOwogICAgIH0KLQotICAgIC8v
IERpc2NvdmVyIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGZyYWdtZW50IGlucHV0cyBpZiBlbmFi
bGVkLgotICAgIGlmICghbUVuYWJsZVBhdGhSZW5kZXJpbmcpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEdMaW50IG51bUZyYWdtZW50SW5wdXRzID0gMDsKLSAgICBtRnVuY3Rpb25zLT5nZXRQcm9n
cmFtSW50ZXJmYWNlaXYobVByb2dyYW1JRCwgR0xfRlJBR01FTlRfSU5QVVRfTlYsIEdMX0FDVElW
RV9SRVNPVVJDRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZudW1G
cmFnbWVudElucHV0cyk7Ci0gICAgaWYgKG51bUZyYWdtZW50SW5wdXRzIDw9IDApCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdMaW50IG1heE5hbWVMZW5ndGggPSAwOwotICAgIG1GdW5jdGlvbnMt
PmdldFByb2dyYW1JbnRlcmZhY2VpdihtUHJvZ3JhbUlELCBHTF9GUkFHTUVOVF9JTlBVVF9OViwg
R0xfTUFYX05BTUVfTEVOR1RILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbWF4TmFtZUxlbmd0aCk7Ci0gICAgQVNTRVJUKG1heE5hbWVMZW5ndGgpOwotCi0gICAgZm9y
IChHTGludCBpID0gMDsgaSA8IG51bUZyYWdtZW50SW5wdXRzOyArK2kpCi0gICAgewotICAgICAg
ICBzdGQ6OnN0cmluZyBtYXBwZWROYW1lOwotICAgICAgICBtYXBwZWROYW1lLnJlc2l6ZShtYXhO
YW1lTGVuZ3RoKTsKLQotICAgICAgICBHTHNpemVpIG5hbWVMZW4gPSAwOwotICAgICAgICBtRnVu
Y3Rpb25zLT5nZXRQcm9ncmFtUmVzb3VyY2VOYW1lKG1Qcm9ncmFtSUQsIEdMX0ZSQUdNRU5UX0lO
UFVUX05WLCBpLCBtYXhOYW1lTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZuYW1lTGVuLCAmbWFwcGVkTmFtZVswXSk7Ci0gICAgICAgIG1hcHBlZE5h
bWUucmVzaXplKG5hbWVMZW4pOwotCi0gICAgICAgIC8vIElnbm9yZSBidWlsdC1pbnMKLSAgICAg
ICAgaWYgKGFuZ2xlOjpCZWdpbnNXaXRoKG1hcHBlZE5hbWUsICJnbF8iKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIGNvbnN0IEdMZW51bSBrUXVlcnlQcm9wZXJ0aWVzW10gPSB7
R0xfTE9DQVRJT04sIEdMX0FSUkFZX1NJWkV9OwotICAgICAgICBHTGludCBxdWVyeVJlc3VsdHNb
QXJyYXlTaXplKGtRdWVyeVByb3BlcnRpZXMpXTsKLSAgICAgICAgR0xzaXplaSBxdWVyeUxlbmd0
aCA9IDA7Ci0KLSAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbVJlc291cmNlaXYoCi0gICAg
ICAgICAgICBtUHJvZ3JhbUlELCBHTF9GUkFHTUVOVF9JTlBVVF9OViwgaSwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4oQXJyYXlTaXplKGtRdWVyeVByb3BlcnRpZXMpKSwKLSAgICAgICAgICAgIGtRdWVy
eVByb3BlcnRpZXMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShxdWVyeVJlc3VsdHMp
KSwgJnF1ZXJ5TGVuZ3RoLAotICAgICAgICAgICAgcXVlcnlSZXN1bHRzKTsKLQotICAgICAgICBB
U1NFUlQocXVlcnlMZW5ndGggPT0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKGtRdWVy
eVByb3BlcnRpZXMpKSk7Ci0KLSAgICAgICAgUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXQgYmFz
ZUVsZW1lbnRJbnB1dDsKLSAgICAgICAgYmFzZUVsZW1lbnRJbnB1dC5tYXBwZWROYW1lID0gbWFw
cGVkTmFtZTsKLSAgICAgICAgYmFzZUVsZW1lbnRJbnB1dC5sb2NhdGlvbiAgID0gcXVlcnlSZXN1
bHRzWzBdOwotICAgICAgICBtUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXRzLnB1c2hfYmFjayhz
dGQ6Om1vdmUoYmFzZUVsZW1lbnRJbnB1dCkpOwotCi0gICAgICAgIC8vIElmIHRoZSBpbnB1dCBp
cyBhbiBhcnJheSBpdCdzIGRlbm90ZWQgYnkgWzBdIHN1ZmZpeCBvbiB0aGUgdmFyaWFibGUKLSAg
ICAgICAgLy8gbmFtZS4gV2UnbGwgdGhlbiBjcmVhdGUgYW4gZW50cnkgcGVyIGVhY2ggYXJyYXkg
aW5kZXggd2hlcmUgaW5kZXggPiAwCi0gICAgICAgIGlmIChhbmdsZTo6RW5kc1dpdGgobWFwcGVk
TmFtZSwgIlswXSIpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBkcm9wIHRoZSBzdWZmaXgK
LSAgICAgICAgICAgIG1hcHBlZE5hbWUucmVzaXplKG1hcHBlZE5hbWUuc2l6ZSgpIC0gMyk7Ci0K
LSAgICAgICAgICAgIGNvbnN0IGF1dG8gYXJyYXlTaXplICAgID0gcXVlcnlSZXN1bHRzWzFdOwot
ICAgICAgICAgICAgY29uc3QgYXV0byBiYXNlTG9jYXRpb24gPSBxdWVyeVJlc3VsdHNbMF07Ci0K
LSAgICAgICAgICAgIGZvciAoR0xpbnQgYXJyYXlJbmRleCA9IDE7IGFycmF5SW5kZXggPCBhcnJh
eVNpemU7ICsrYXJyYXlJbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQYXRo
UmVuZGVyaW5nRnJhZ21lbnRJbnB1dCBhcnJheUVsZW1lbnRJbnB1dDsKLSAgICAgICAgICAgICAg
ICBhcnJheUVsZW1lbnRJbnB1dC5tYXBwZWROYW1lID0gbWFwcGVkTmFtZSArICJbIiArIFRvU3Ry
aW5nKGFycmF5SW5kZXgpICsgIl0iOwotICAgICAgICAgICAgICAgIGFycmF5RWxlbWVudElucHV0
LmxvY2F0aW9uICAgPSBiYXNlTG9jYXRpb24gKyBhcnJheUluZGV4OwotICAgICAgICAgICAgICAg
IG1QYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dHMucHVzaF9iYWNrKHN0ZDo6bW92ZShhcnJheUVs
ZW1lbnRJbnB1dCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogfQogCiB2b2lk
IFByb2dyYW1HTDo6ZW5hYmxlU2lkZUJ5U2lkZVJlbmRlcmluZ1BhdGgoKSBjb25zdApAQCAtMTE2
Niw3ICsxMDgwLDE2IEBAIHZvaWQgUHJvZ3JhbUdMOjptYXJrVW51c2VkVW5pZm9ybUxvY2F0aW9u
cyhzdGQ6OnZlY3RvcjxnbDo6VmFyaWFibGVMb2NhdGlvbj4gKnVuCiAgICAgICAgICAgICAgICAg
R0x1aW50IGltYWdlSW5kZXggPSBtU3RhdGUuZ2V0SW1hZ2VJbmRleEZyb21Vbmlmb3JtSW5kZXgo
bG9jYXRpb25SZWYuaW5kZXgpOwogICAgICAgICAgICAgICAgICgqaW1hZ2VCaW5kaW5ncylbaW1h
Z2VJbmRleF0udW5yZWZlcmVuY2VkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGxvY2F0aW9uUmVmLm1hcmtVbnVzZWQoKTsKKyAgICAgICAgICAgIC8vIElmIHRoZSBsb2NhdGlv
biBoYXMgYmVlbiBwcmV2aW91c2x5IGJvdW5kIGJ5IGEgZ2xCaW5kVW5pZm9ybUxvY2F0aW9uIGNh
bGwsIGl0IHNob3VsZAorICAgICAgICAgICAgLy8gYmUgbWFya2VkIGFzIGlnbm9yZWQuIE90aGVy
d2lzZSBpdCdzIHVudXNlZC4KKyAgICAgICAgICAgIGlmIChtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0
aW9uQmluZGluZ3MoKS5nZXRCaW5kaW5nQnlMb2NhdGlvbihsb2NhdGlvbikgIT0gLTEpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9jYXRpb25SZWYubWFya0lnbm9yZWQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBsb2NhdGlvblJlZi5tYXJrVW51c2VkKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgKaW5kZXggZTRhMDAwOTk3N2JhODNjMGNk
ZjNmMThhMTFlNGU0ZDhmNWI1ZTJiNC4uMzBlNzY5OTY2ZmVkMzMwMTI0MzM5MWM3MDQ5NGZkZGRk
NGU2Yzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaApAQCAtMzMsNyArMzMsNiBAQCBjbGFz
cyBQcm9ncmFtR0wgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAgICAgICAgICAgY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkZlYXR1cmVz
R0wgJmZlYXR1cmVzLAogICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2Vy
LAotICAgICAgICAgICAgICBib29sIGVuYWJsZVBhdGhSZW5kZXJpbmcsCiAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c2hhcmVkX3B0cjxSZW5kZXJlckdMPiAmcmVuZGVyZXIpOwogICAgIH5Qcm9n
cmFtR0woKSBvdmVycmlkZTsKIApAQCAtMTAyLDExICsxMDEsNiBAQCBjbGFzcyBQcm9ncmFtR0wg
OiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICB2b2lkIGdldFVuaWZvcm1pdihjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpwYXJhbXMpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
R0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgc2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykgb3ZlcnJpZGU7Ci0K
ICAgICB2b2lkIG1hcmtVbnVzZWRVbmlmb3JtTG9jYXRpb25zKHN0ZDo6dmVjdG9yPGdsOjpWYXJp
YWJsZUxvY2F0aW9uPiAqdW5pZm9ybUxvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGdsOjpTYW1wbGVyQmluZGluZz4gKnNhbXBsZXJCaW5k
aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGds
OjpJbWFnZUJpbmRpbmc+ICppbWFnZUJpbmRpbmdzKSBvdmVycmlkZTsKQEAgLTE1NywxNCArMTUx
LDYgQEAgY2xhc3MgUHJvZ3JhbUdMIDogcHVibGljIFByb2dyYW1JbXBsCiAgICAgc3RkOjp2ZWN0
b3I8R0xpbnQ+IG1Vbmlmb3JtUmVhbExvY2F0aW9uTWFwOwogICAgIHN0ZDo6dmVjdG9yPEdMdWlu
dD4gbVVuaWZvcm1CbG9ja1JlYWxMb2NhdGlvbk1hcDsKIAotICAgIHN0cnVjdCBQYXRoUmVuZGVy
aW5nRnJhZ21lbnRJbnB1dAotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbWFwcGVkTmFtZTsK
LSAgICAgICAgR0xpbnQgbG9jYXRpb247Ci0gICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxQYXRoUmVu
ZGVyaW5nRnJhZ21lbnRJbnB1dD4gbVBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0czsKLQotICAg
IGJvb2wgbUVuYWJsZVBhdGhSZW5kZXJpbmc7CiAgICAgR0xpbnQgbU11bHRpdmlld0Jhc2VWaWV3
TGF5ZXJJbmRleFVuaWZvcm1Mb2NhdGlvbjsKIAogICAgIEdMdWludCBtUHJvZ3JhbUlEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1JlbmRlcmVyR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1JlbmRlcmVyR0wuY3BwCmluZGV4IDY0ODUwYTcyZjhjZmJiZjZkOTdkYzNmYTQ0
NjEwNGY1YzU1MzA5MWUuLjA5Nzg5YjUxYWU3OTVhNDMzNWI4MWJhNzY3NzIxMTgzZTVlODdhMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9SZW5kZXJlckdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5jcHAKQEAgLTE0LDcgKzE0LDYgQEAKICNpbmNs
dWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1Bh
dGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1
cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKQEAgLTI2
LDcgKzI1LDYgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5WR0wuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9QYXRoR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Q
cm9ncmFtR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaCIKQEAgLTQ0LDE5
ICs0Miw2IEBACiBuYW1lc3BhY2UKIHsKIAotc3RkOjp2ZWN0b3I8R0x1aW50PiBHYXRoZXJQYXRo
cyhjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMpCi17Ci0gICAgc3RkOjp2ZWN0
b3I8R0x1aW50PiByZXQ7Ci0gICAgcmV0LnJlc2VydmUocGF0aHMuc2l6ZSgpKTsKLQotICAgIGZv
ciAoY29uc3QgYXV0byAqcCA6IHBhdGhzKQotICAgIHsKLSAgICAgICAgY29uc3QgYXV0byAqcGF0
aE9iaiA9IHJ4OjpHZXRJbXBsQXM8cng6OlBhdGhHTD4ocCk7Ci0gICAgICAgIHJldC5wdXNoX2Jh
Y2socGF0aE9iai0+Z2V0UGF0aElEKCkpOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCiB2
b2lkIFNldE1heFNoYWRlckNvbXBpbGVyVGhyZWFkcyhjb25zdCByeDo6RnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywgR0x1aW50IGNvdW50KQogewogICAgIGlmIChmdW5jdGlvbnMtPm1heFNoYWRlckNv
bXBpbGVyVGhyZWFkc0tIUiAhPSBudWxscHRyKQpAQCAtODgsODAgKzczLDkgQEAgc3RhdGljIHZv
aWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgTG9nR0xEZWJ1Z01lc3NhZ2UoR0xlbnVtIHNvdXJjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKIHsKLSAgICBzdGQ6OnN0cmluZyBz
b3VyY2VUZXh0OwotICAgIHN3aXRjaCAoc291cmNlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9E
RUJVR19TT1VSQ0VfQVBJOgotICAgICAgICAgICAgc291cmNlVGV4dCA9ICJPcGVuR0wiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1dJTkRPV19TWVNU
RU06Ci0gICAgICAgICAgICBzb3VyY2VUZXh0ID0gIldpbmRvd3MiOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUjoKLSAgICAg
ICAgICAgIHNvdXJjZVRleHQgPSAiU2hhZGVyIENvbXBpbGVyIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWToKLSAgICAgICAgICAg
IHNvdXJjZVRleHQgPSAiVGhpcmQgUGFydHkiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OOgotICAgICAgICAgICAgc291cmNlVGV4
dCA9ICJBcHBsaWNhdGlvbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9E
RUJVR19TT1VSQ0VfT1RIRVI6Ci0gICAgICAgICAgICBzb3VyY2VUZXh0ID0gIk90aGVyIjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgc291cmNlVGV4
dCA9ICJVTktOT1dOIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN0ZDo6c3Ry
aW5nIHR5cGVUZXh0OwotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xf
REVCVUdfVFlQRV9FUlJPUjoKLSAgICAgICAgICAgIHR5cGVUZXh0ID0gIkVycm9yIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhB
VklPUjoKLSAgICAgICAgICAgIHR5cGVUZXh0ID0gIkRlcHJlY2F0ZWQgYmVoYXZpb3IiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVI
QVZJT1I6Ci0gICAgICAgICAgICB0eXBlVGV4dCA9ICJVbmRlZmluZWQgYmVoYXZpb3IiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWToK
LSAgICAgICAgICAgIHR5cGVUZXh0ID0gIlBvcnRhYmlsaXR5IjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6Ci0gICAgICAgICAgICB0
eXBlVGV4dCA9ICJQZXJmb3JtYW5jZSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBHTF9ERUJVR19UWVBFX09USEVSOgotICAgICAgICAgICAgdHlwZVRleHQgPSAiT3RoZXIiOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9NQVJLRVI6Ci0g
ICAgICAgICAgICB0eXBlVGV4dCA9ICJNYXJrZXIiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0eXBlVGV4dCA9ICJVTktOT1dOIjsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHNldmVyaXR5VGV4dDsKLSAgICBz
d2l0Y2ggKHNldmVyaXR5KQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9I
SUdIOgotICAgICAgICAgICAgc2V2ZXJpdHlUZXh0ID0gIkhpZ2giOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNOgotICAgICAgICAgICAg
c2V2ZXJpdHlUZXh0ID0gIk1lZGl1bSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBHTF9ERUJVR19TRVZFUklUWV9MT1c6Ci0gICAgICAgICAgICBzZXZlcml0eVRleHQgPSAiTG93
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX05P
VElGSUNBVElPTjoKLSAgICAgICAgICAgIHNldmVyaXR5VGV4dCA9ICJOb3RpZmljYXRpb24iOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzZXZlcml0
eVRleHQgPSAiVU5LTk9XTiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9CisgICAgc3RkOjpz
dHJpbmcgc291cmNlVGV4dCAgID0gZ2w6OkdldERlYnVnTWVzc2FnZVNvdXJjZVN0cmluZyhzb3Vy
Y2UpOworICAgIHN0ZDo6c3RyaW5nIHR5cGVUZXh0ICAgICA9IGdsOjpHZXREZWJ1Z01lc3NhZ2VU
eXBlU3RyaW5nKHR5cGUpOworICAgIHN0ZDo6c3RyaW5nIHNldmVyaXR5VGV4dCA9IGdsOjpHZXRE
ZWJ1Z01lc3NhZ2VTZXZlcml0eVN0cmluZyhzZXZlcml0eSk7CiAKICNpZiBkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX0FORFJPSUQpCiAgICAgaWYgKHR5cGUgPT0gR0xfREVCVUdfVFlQRV9FUlJPUikK
QEAgLTIyNCw3ICsxMzgsNyBAQCBSZW5kZXJlckdMOjpSZW5kZXJlckdMKHN0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbnNHTD4gZnVuY3Rpb25zLAogICAgIHsKICAgICAgICAgbmF0aXZlZ2xfZ2w6Oklu
aXRpYWxpemVGZWF0dXJlcyhtRnVuY3Rpb25zLmdldCgpLCAmbUZlYXR1cmVzKTsKICAgICB9Ci0g
ICAgT3ZlcnJpZGVGZWF0dXJlc1dpdGhEaXNwbGF5U3RhdGUoJm1GZWF0dXJlcywgZGlzcGxheS0+
Z2V0U3RhdGUoKSk7CisgICAgQXBwbHlGZWF0dXJlT3ZlcnJpZGVzKCZtRmVhdHVyZXMsIGRpc3Bs
YXktPmdldFN0YXRlKCkpOwogICAgIG1TdGF0ZU1hbmFnZXIgPQogICAgICAgICBuZXcgU3RhdGVN
YW5hZ2VyR0wobUZ1bmN0aW9ucy5nZXQoKSwgZ2V0TmF0aXZlQ2FwcygpLCBnZXROYXRpdmVFeHRl
bnNpb25zKCksIG1GZWF0dXJlcyk7CiAgICAgbUJsaXR0ZXIgICAgICAgICAgPSBuZXcgQmxpdEdM
KG1GdW5jdGlvbnMuZ2V0KCksIG1GZWF0dXJlcywgbVN0YXRlTWFuYWdlcik7CkBAIC0zMDcsMTY1
ICsyMjEsNiBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlcmVyR0w6OmZpbmlzaCgpCiAgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxG
aWxsUGF0aChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaykKLXsKLSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gR2V0SW1wbEFzPFBh
dGhHTD4ocGF0aCk7Ci0KLSAgICBtRnVuY3Rpb25zLT5zdGVuY2lsRmlsbFBhdGhOVihwYXRoT2Jq
LT5nZXRQYXRoSUQoKSwgZmlsbE1vZGUsIG1hc2spOwotCi0gICAgQVNTRVJUKG1GdW5jdGlvbnMt
PmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotfQotCi12b2lkIFJlbmRlcmVyR0w6OnN0ZW5j
aWxTdHJva2VQYXRoKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrKQotewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBH
ZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKLQotICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxTdHJva2VQ
YXRoTlYocGF0aE9iai0+Z2V0UGF0aElEKCksIHJlZmVyZW5jZSwgbWFzayk7Ci0KLSAgICBBU1NF
UlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci19Ci0KLXZvaWQgUmVu
ZGVyZXJHTDo6Y292ZXJGaWxsUGF0aChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6
UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLQotICAgIGNvbnN0IGF1dG8gKnBhdGhP
YmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKLSAgICBtRnVuY3Rpb25zLT5jb3ZlckZpbGxQ
YXRoTlYocGF0aE9iai0+Z2V0UGF0aElEKCksIGNvdmVyTW9kZSk7Ci0KLSAgICBBU1NFUlQobUZ1
bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci19Ci0KLXZvaWQgUmVuZGVyZXJH
TDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpQYXRo
ICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKQotewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBH
ZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKLSAgICBtRnVuY3Rpb25zLT5jb3ZlclN0cm9rZVBhdGhO
VihwYXRoT2JqLT5nZXRQYXRoSUQoKSwgY292ZXJNb2RlKTsKLQotICAgIEFTU0VSVChtRnVuY3Rp
b25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLX0KLQotdm9pZCBSZW5kZXJlckdMOjpz
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRoICpwYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlKQotewotCi0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IEdldEltcGxBczxQYXRoR0w+KHBh
dGgpOwotICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aE5WKHBhdGhPYmot
PmdldFBhdGhJRCgpLCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKTsKLQotICAgIEFTU0VSVCht
RnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLX0KLQotdm9pZCBSZW5kZXJl
ckdMOjpzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0
aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLQotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJ
bXBsQXM8UGF0aEdMPihwYXRoKTsKLSAgICBtRnVuY3Rpb25zLT5zdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgpLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9k
ZSk7Ci0KLSAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7
Ci19Ci0KLXZvaWQgUmVuZGVyZXJHTDo6Y292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBnbDo6
U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdhdGhlclBhdGhzKHBhdGhzKTsKLQot
ICAgIG1GdW5jdGlvbnMtPmNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVihzdGF0aWNfY2FzdDxHTHNp
emVpPihwYXRoT2Jqcy5zaXplKCkpLCBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoT2Jqc1swXSwgMCwgY292ZXJNb2RlLCB0cmFu
c2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm1WYWx1ZXMpOwotCi0gICAgQVNTRVJUKG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xf
Tk9fRVJST1IpOwotfQotdm9pZCBSZW5kZXJlckdMOjpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQo
Y29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdhdGhl
clBhdGhzKHBhdGhzKTsKLQotICAgIG1GdW5jdGlvbnMtPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZE5WKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdMX1VOU0lHTkVEX0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aE9ianNb
MF0sIDAsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOwotCi0gICAgQVNTRVJUKG1GdW5j
dGlvbnMtPmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotfQotdm9pZCBSZW5kZXJlckdMOjpz
dGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQ
YXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgY29uc3Qg
YXV0byAmcGF0aE9ianMgPSBHYXRoZXJQYXRocyhwYXRocyk7Ci0KLSAgICBtRnVuY3Rpb25zLT5z
dGVuY2lsRmlsbFBhdGhJbnN0YW5jZWROVihzdGF0aWNfY2FzdDxHTHNpemVpPihwYXRoT2Jqcy5z
aXplKCkpLCBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnBhdGhPYmpzWzBdLCAwLCBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1W
YWx1ZXMpOwotCi0gICAgQVNTRVJUKG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xfTk9fRVJS
T1IpOwotfQotdm9pZCBSZW5kZXJlckdMOjpzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25z
dCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgY29uc3QgYXV0byAmcGF0aE9ianMgPSBH
YXRoZXJQYXRocyhwYXRocyk7Ci0KLSAgICBtRnVuY3Rpb25zLT5zdGVuY2lsU3Ryb2tlUGF0aElu
c3RhbmNlZE5WKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdMX1VOU0lH
TkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw
YXRoT2Jqc1swXSwgMCwgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKLQot
ICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLX0KLQot
dm9pZCBSZW5kZXJlckdMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQotewotICAgIGNvbnN0IGF1dG8gJnBhdGhPYmpzID0gR2F0aGVyUGF0aHMo
cGF0aHMpOwotCi0gICAgbUZ1bmN0aW9ucy0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkTlYoCi0gICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdM
X1VOU0lHTkVEX0lOVCwgJnBhdGhPYmpzWzBdLCAwLCBmaWxsTW9kZSwgbWFzaywKLSAgICAgICAg
Y292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotCi0gICAgQVNTRVJU
KG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotfQotdm9pZCBSZW5kZXJl
ckdMOjpzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgY29uc3QgYXV0byAmcGF0aE9ianMgPSBHYXRoZXJQYXRo
cyhwYXRocyk7Ci0KLSAgICBtRnVuY3Rpb25zLT5zdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZE5WKAotICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihwYXRoT2Jqcy5zaXplKCkp
LCBHTF9VTlNJR05FRF9JTlQsICZwYXRoT2Jqc1swXSwgMCwgcmVmZXJlbmNlLCBtYXNrLAotICAg
ICAgICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci0KLSAgICBB
U1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci19Ci0KIGdsOjpH
cmFwaGljc1Jlc2V0U3RhdHVzIFJlbmRlcmVyR0w6OmdldFJlc2V0U3RhdHVzKCkKIHsKICAgICBy
ZXR1cm4gZ2w6OkZyb21HTGVudW08Z2w6OkdyYXBoaWNzUmVzZXRTdGF0dXM+KG1GdW5jdGlvbnMt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaAppbmRl
eCA5OGQ1OTQyYzU5YWVlZjFlMTEzMDdkNTdkZWQ1OGYyMjQ1MTBmMDEwLi4xYzM2YzgyMzIxNjJl
OGFiOGIwMDlhMjBjMzIyYzRmZWQwY2M5ODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgK
QEAgLTg2LDY1ICs4Niw2IEBAIGNsYXNzIFJlbmRlcmVyR0wgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICBhbmdsZTo6UmVzdWx0IGZsdXNoKCk7CiAgICAgYW5nbGU6OlJlc3VsdCBmaW5pc2goKTsK
IAotICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIGltcGxlbWVudGF0aW9uCi0gICAgdm9p
ZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGF0aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2sp
OwotICAgIHZvaWQgc3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2spOwotICAgIHZvaWQgY292ZXJGaWxsUGF0aChjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlLCBjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7Ci0gICAg
dm9pZCBjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlBh
dGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwotICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUpOwotICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlKTsKLSAgICB2b2lkIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLSAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci0gICAgdm9p
ZCBzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAq
PiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxN
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcyk7Ci0gICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci0KLSAgICB2b2lkIHN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQ
YXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotICAg
IHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLQogICAgIGdsOjpHcmFwaGljc1Jlc2V0U3RhdHVz
IGdldFJlc2V0U3RhdHVzKCk7CiAKICAgICAvLyBFWFRfZGVidWdfbWFya2VyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2VtYXBo
b3JlR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1NlbWFwaG9yZUdMLmNwcAppbmRleCAxMDMzZjdhZDlkODg5NmZiNjU0N2YyMzI2ODBjMzBj
M2ExYjM2ZmUwLi4yNzliMDI4N2Y5ZjRlOGVkMjI1M2VlMWY4YzlhM2VkYzQxODk5Nzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
U2VtYXBob3JlR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9TZW1hcGhvcmVHTC5jcHAKQEAgLTY3LDYgKzY3LDE0IEBAIGFuZ2xlOjpS
ZXN1bHQgU2VtYXBob3JlR0w6OmltcG9ydEZkKGdsOjpDb250ZXh0ICpjb250ZXh0LCBnbDo6SGFu
ZGxlVHlwZSBoYW5kbGVUCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQog
CithbmdsZTo6UmVzdWx0IFNlbWFwaG9yZUdMOjppbXBvcnRaaXJjb25IYW5kbGUoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7Cit9CisKIGFuZ2xlOjpSZXN1bHQgU2Vt
YXBob3JlR0w6OndhaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpCdWZmZXJCYXJyaWVyVmVjdG9yICZidWZmZXJCYXJyaWVy
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVCYXJy
aWVyVmVjdG9yICZ0ZXh0dXJlQmFycmllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2VtYXBob3JlR0wuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TZW1hcGhvcmVHTC5oCmlu
ZGV4IGI1NDI5MmVlY2ZhOWZkOTlhY2QwYzkyODRjMzJlNDZkMTM2MWZhNjIuLjNjOTM4Y2Q2NmE2
MWI4MGY5ZmRjOTA4Y2U3ZWI0N2Y3MDRjODdkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TZW1hcGhvcmVHTC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TZW1hcGhvcmVH
TC5oCkBAIC0yMyw2ICsyMywxMCBAQCBjbGFzcyBTZW1hcGhvcmVHTCA6IHB1YmxpYyBTZW1hcGhv
cmVJbXBsCiAKICAgICBhbmdsZTo6UmVzdWx0IGltcG9ydEZkKGdsOjpDb250ZXh0ICpjb250ZXh0
LCBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlLCBHTGludCBmZCkgb3ZlcnJpZGU7CiAKKyAgICBh
bmdsZTo6UmVzdWx0IGltcG9ydFppcmNvbkhhbmRsZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUp
IG92ZXJyaWRlOworCiAgICAgYW5nbGU6OlJlc3VsdCB3YWl0KGdsOjpDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6QnVmZmVyQmFycmllclZlY3RvciAm
YnVmZmVyQmFycmllcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJl
QmFycmllclZlY3RvciAmdGV4dHVyZUJhcnJpZXJzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFn
ZXJHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvU3RhdGVNYW5hZ2VyR0wuY3BwCmluZGV4IDY4OTcyNjYxZmYyMzQwMmM3ZGU3ZTIxOTVhYzUw
MWYxZmFmNDc4ODguLjNmOWJjMDE2NmNmZmQ4NGQ0MGM1NmRlZWI3NWIyNjA0YTliNGE1ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9TdGF0ZU1hbmFnZXJHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcApAQCAtMTQ4LDkgKzE0OCw2IEBA
IFN0YXRlTWFuYWdlckdMOjpTdGF0ZU1hbmFnZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLAogICAgICAgbU11bHRpc2FtcGxpbmdFbmFibGVkKHRydWUpLAogICAgICAgbVNhbXBsZUFs
cGhhVG9PbmVFbmFibGVkKGZhbHNlKSwKICAgICAgIG1Db3ZlcmFnZU1vZHVsYXRpb24oR0xfTk9O
RSksCi0gICAgICBtUGF0aFN0ZW5jaWxGdW5jKEdMX0FMV0FZUyksCi0gICAgICBtUGF0aFN0ZW5j
aWxSZWYoMCksCi0gICAgICBtUGF0aFN0ZW5jaWxNYXNrKHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1
aW50Pjo6bWF4KCkpLAogICAgICAgbUlzTXVsdGl2aWV3RW5hYmxlZChleHRlbnNpb25zLm11bHRp
dmlldyB8fCBleHRlbnNpb25zLm11bHRpdmlldzIpLAogICAgICAgbVByb3Zva2luZ1ZlcnRleChH
TF9MQVNUX1ZFUlRFWF9DT05WRU5USU9OKSwKICAgICAgIG1Mb2NhbERpcnR5Qml0cygpCkBAIC0x
ODIsOSArMTc5LDYgQEAgU3RhdGVNYW5hZ2VyR0w6OlN0YXRlTWFuYWdlckdMKGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5lbmFibGUoR0xfUE9J
TlRfU1BSSVRFKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9h
dD46OnNldFRvSWRlbnRpdHkobVBhdGhNYXRyaXhQcm9qKTsKLSAgICBhbmdsZTo6TWF0cml4PEdM
ZmxvYXQ+OjpzZXRUb0lkZW50aXR5KG1QYXRoTWF0cml4TVYpOwogfQogCiBTdGF0ZU1hbmFnZXJH
TDo6flN0YXRlTWFuYWdlckdMKCkge30KQEAgLTgyMywxNiArODE3LDE2IEBAIGFuZ2xlOjpSZXN1
bHQgU3RhdGVNYW5hZ2VyR0w6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpCiAKIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1UZXh0dXJlQmluZGluZ3Mo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0
YXRlICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwotICAgIGNvbnN0IGdsOjpQcm9ncmFtICpwcm9n
cmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRl
ICAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBnbDo6UHJv
Z3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBnbFN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxl
KCk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGVyZSBpcyBubyBhY3RpdmUgcHJvZ3JhbSBk
dXJpbmcgYSBwYXRoIG9wZXJhdGlvbi4KLSAgICBpZiAoIXByb2dyYW0pCisgICAgaWYgKCFleGVj
dXRhYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZVBv
aW50ZXJBcnJheSAmdGV4dHVyZXMgID0gZ2xTdGF0ZS5nZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCk7
Ci0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVNYXNrICZhY3RpdmVUZXh0dXJlcyAgICA9IHBy
b2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpOwotICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0
dXJlVHlwZUFycmF5ICZ0ZXh0dXJlVHlwZXMgPSBwcm9ncmFtLT5nZXRBY3RpdmVTYW1wbGVyVHlw
ZXMoKTsKKyAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZXNDYWNoZSAmdGV4dHVyZXMgICAgICAg
ID0gZ2xTdGF0ZS5nZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCk7CisgICAgY29uc3QgZ2w6OkFjdGl2
ZVRleHR1cmVNYXNrICZhY3RpdmVUZXh0dXJlcyAgICA9IGV4ZWN1dGFibGUtPmdldEFjdGl2ZVNh
bXBsZXJzTWFzaygpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlVHlwZUFycmF5ICZ0ZXh0
dXJlVHlwZXMgPSBleGVjdXRhYmxlLT5nZXRBY3RpdmVTYW1wbGVyVHlwZXMoKTsKIAogICAgIGZv
ciAoc2l6ZV90IHRleHR1cmVVbml0SW5kZXggOiBhY3RpdmVUZXh0dXJlcykKICAgICB7CkBAIC04
NjIsMTAgKzg1Niw2IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1TdG9yYWdl
QnVmZmVyQmluZGluZ3MoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRlCiAgICAgY29uc3QgZ2w6OlN0
YXRlICZnbFN0YXRlICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIGNvbnN0IGdsOjpQcm9n
cmFtICpwcm9ncmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7CiAKLSAgICAvLyBJdCBpcyBwb3Nz
aWJsZSB0aGVyZSBpcyBubyBhY3RpdmUgcHJvZ3JhbSBkdXJpbmcgYSBwYXRoIG9wZXJhdGlvbi4K
LSAgICBpZiAoIXByb2dyYW0pCi0gICAgICAgIHJldHVybjsKLQogICAgIGZvciAoc2l6ZV90IGJs
b2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgcHJvZ3JhbS0+Z2V0QWN0aXZlU2hhZGVyU3RvcmFn
ZUJsb2NrQ291bnQoKTsKICAgICAgICAgIGJsb2NrSW5kZXgrKykKICAgICB7CkBAIC04OTUsMTAg
Kzg4NSw2IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1Vbmlmb3JtQnVmZmVy
QmluZGluZ3MoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRlCiAgICAgY29uc3QgZ2w6OlN0YXRlICZn
bFN0YXRlICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIGNvbnN0IGdsOjpQcm9ncmFtICpw
cm9ncmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7CiAKLSAgICAvLyBJdCBpcyBwb3NzaWJsZSB0
aGVyZSBpcyBubyBhY3RpdmUgcHJvZ3JhbSBkdXJpbmcgYSBwYXRoIG9wZXJhdGlvbi4KLSAgICBp
ZiAoIXByb2dyYW0pCi0gICAgICAgIHJldHVybjsKLQogICAgIGZvciAoc2l6ZV90IHVuaWZvcm1C
bG9ja0luZGV4ID0gMDsgdW5pZm9ybUJsb2NrSW5kZXggPCBwcm9ncmFtLT5nZXRBY3RpdmVVbmlm
b3JtQmxvY2tDb3VudCgpOwogICAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXgrKykKICAgICB7CkBA
IC05MjcsMTAgKzkxMyw2IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1BdG9t
aWNDb3VudGVyQnVmZmVyQmluZGluZ3MoY29uc3QgZ2w6OkNvbnRleHQKICAgICBjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7CiAgICAgY29uc3QgZ2w6OlBy
b2dyYW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFByb2dyYW0oKTsKIAotICAgIC8vIEl0IGlzIHBv
c3NpYmxlIHRoZXJlIGlzIG5vIGFjdGl2ZSBwcm9ncmFtIGR1cmluZyBhIHBhdGggb3BlcmF0aW9u
LgotICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgZm9yIChjb25zdCBh
dXRvICZhdG9taWNDb3VudGVyQnVmZmVyIDogcHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXRBdG9taWND
b3VudGVyQnVmZmVycygpKQogICAgIHsKICAgICAgICAgR0x1aW50IGJpbmRpbmcgICAgID0gYXRv
bWljQ291bnRlckJ1ZmZlci5iaW5kaW5nOwpAQCAtOTU1LDE1ICs5MzcsMTYgQEAgdm9pZCBTdGF0
ZU1hbmFnZXJHTDo6dXBkYXRlUHJvZ3JhbUF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5ncyhjb25z
dCBnbDo6Q29udGV4dAogCiB2b2lkIFN0YXRlTWFuYWdlckdMOjp1cGRhdGVQcm9ncmFtSW1hZ2VC
aW5kaW5ncyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBjb25zdCBnbDo6U3Rh
dGUgJmdsU3RhdGUgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7Ci0gICAgY29uc3QgZ2w6OlByb2dy
YW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFByb2dyYW0oKTsKKyAgICBjb25zdCBnbDo6U3RhdGUg
JmdsU3RhdGUgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0
IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbUV4
ZWN1dGFibGUoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSAgICAgICAgICAgICAg
PSBnbFN0YXRlLmdldFByb2dyYW0oKTsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoZXJlIGlz
IG5vIGFjdGl2ZSBwcm9ncmFtIGR1cmluZyBhIHBhdGggb3BlcmF0aW9uLgotICAgIGlmICghcHJv
Z3JhbSkKKyAgICBpZiAoIWV4ZWN1dGFibGUgfHwgIXByb2dyYW0pCiAgICAgICAgIHJldHVybjsK
IAotICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gZ2w6OkVTXzNfMSB8
fCBwcm9ncmFtLT5nZXRJbWFnZUJpbmRpbmdzKCkuc2l6ZSgpID09IDApOwotICAgIGZvciAoc2l6
ZV90IGltYWdlVW5pdEluZGV4IDogcHJvZ3JhbS0+Z2V0QWN0aXZlSW1hZ2VzTWFzaygpKQorICAg
IEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gZ2w6OkVTXzNfMSB8fCBwcm9n
cmFtLT5nZXRJbWFnZUJpbmRpbmdzKCkuZW1wdHkoKSk7CisgICAgZm9yIChzaXplX3QgaW1hZ2VV
bml0SW5kZXggOiBleGVjdXRhYmxlLT5nZXRBY3RpdmVJbWFnZXNNYXNrKCkpCiAgICAgewogICAg
ICAgICBjb25zdCBnbDo6SW1hZ2VVbml0ICZpbWFnZVVuaXQgPSBnbFN0YXRlLmdldEltYWdlVW5p
dChpbWFnZVVuaXRJbmRleCk7CiAgICAgICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMICAg
ICA9IFNhZmVHZXRJbXBsQXM8VGV4dHVyZUdMPihpbWFnZVVuaXQudGV4dHVyZS5nZXQoKSk7CkBA
IC0xNzg0LDEyICsxNzY3LDE0IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0ZShjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
Z2w6OlN0YXRlOjpESVJUWV9CSVRfUFJPR1JBTV9FWEVDVVRBQkxFOgogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtID0gc3RhdGUuZ2V0UHJv
Z3JhbSgpOwotICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtKQorICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtICAgICAgICAgICAgICA9IHN0YXRlLmdldFByb2dyYW0o
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFi
bGUgPSBzdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworCisgICAgICAgICAgICAgICAgaWYg
KHByb2dyYW0gJiYgZXhlY3V0YWJsZSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIGl0ZXIuc2V0TGF0ZXJCaXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVEVYVFVSRV9CSU5E
SU5HUyk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb2dyYW0tPmdldEFjdGl2ZUltYWdl
c01hc2soKS5hbnkoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmdldEFj
dGl2ZUltYWdlc01hc2soKS5hbnkoKSkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaXRlci5zZXRMYXRlckJpdChnbDo6U3RhdGU6OkRJUlRZX0JJVF9JTUFH
RV9CSU5ESU5HUyk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTE4MTYsNyArMTgwMSw4IEBA
IHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgIGlmICghcHJvZ3JhbSB8fCAhcHJvZ3JhbS0+aGFzTGlua2VkU2hhZGVyU3RhZ2UoZ2w6
OlNoYWRlclR5cGU6OkNvbXB1dGUpKQorICAgICAgICAgICAgICAgIGlmICghcHJvZ3JhbSB8fAor
ICAgICAgICAgICAgICAgICAgICAhcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNo
YWRlclN0YWdlKGdsOjpTaGFkZXJUeXBlOjpDb21wdXRlKSkKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZVByb2dyYW1Ub1ZBTyhwcm9ncmFtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0SW1wbEFzPFZlcnRleEFycmF5
R0w+KHN0YXRlLmdldFZlcnRleEFycmF5KCkpKTsKQEAgLTE4NTMsMTQgKzE4MzksNiBAQCB2b2lk
IFN0YXRlTWFuYWdlckdMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NPVkVSQUdFX01PRFVMQVRJT046
CiAgICAgICAgICAgICAgICAgc2V0Q292ZXJhZ2VNb2R1bGF0aW9uKHN0YXRlLmdldENvdmVyYWdl
TW9kdWxhdGlvbigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Z2w6OlN0YXRlOjpESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkc6Ci0gICAgICAgICAgICAgICAgc2V0
UGF0aFJlbmRlcmluZ01vZGVsVmlld01hdHJpeCgKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUu
Z2V0UGF0aFJlbmRlcmluZ01hdHJpeChHTF9QQVRIX01PREVMVklFV19NQVRSSVhfQ0hST01JVU0p
KTsKLSAgICAgICAgICAgICAgICBzZXRQYXRoUmVuZGVyaW5nUHJvamVjdGlvbk1hdHJpeCgKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0UGF0aFJlbmRlcmluZ01hdHJpeChHTF9QQVRIX1BS
T0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNKSk7Ci0gICAgICAgICAgICAgICAgc2V0UGF0aFJlbmRl
cmluZ1N0ZW5jaWxTdGF0ZShzdGF0ZS5nZXRQYXRoU3RlbmNpbEZ1bmMoKSwgc3RhdGUuZ2V0UGF0
aFN0ZW5jaWxSZWYoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRlLmdldFBhdGhTdGVuY2lsTWFzaygpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JHQjoK
ICAgICAgICAgICAgICAgICBzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkRm9yRnJhbWVidWZmZXIo
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHN0YXRlLmdldEZyYW1lYnVmZmVyU1JHQigp
LApAQCAtMjAxOSw0MSArMTk5Nyw2IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldENvdmVyYWdl
TW9kdWxhdGlvbihHTGVudW0gY29tcG9uZW50cykKICAgICB9CiB9CiAKLXZvaWQgU3RhdGVNYW5h
Z2VyR0w6OnNldFBhdGhSZW5kZXJpbmdNb2RlbFZpZXdNYXRyaXgoY29uc3QgR0xmbG9hdCAqbSkK
LXsKLSAgICBpZiAobWVtY21wKG1QYXRoTWF0cml4TVYsIG0sIHNpemVvZihtUGF0aE1hdHJpeE1W
KSkgIT0gMCkKLSAgICB7Ci0gICAgICAgIG1lbWNweShtUGF0aE1hdHJpeE1WLCBtLCBzaXplb2Yo
bVBhdGhNYXRyaXhNVikpOwotICAgICAgICBtRnVuY3Rpb25zLT5tYXRyaXhMb2FkZkVYVChHTF9Q
QVRIX01PREVMVklFV19DSFJPTUlVTSwgbSk7Ci0KLSAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNl
dChnbDo6U3RhdGU6OkRJUlRZX0JJVF9QQVRIX1JFTkRFUklORyk7Ci0gICAgfQotfQotCi12b2lk
IFN0YXRlTWFuYWdlckdMOjpzZXRQYXRoUmVuZGVyaW5nUHJvamVjdGlvbk1hdHJpeChjb25zdCBH
TGZsb2F0ICptKQotewotICAgIGlmIChtZW1jbXAobVBhdGhNYXRyaXhQcm9qLCBtLCBzaXplb2Yo
bVBhdGhNYXRyaXhQcm9qKSkgIT0gMCkKLSAgICB7Ci0gICAgICAgIG1lbWNweShtUGF0aE1hdHJp
eFByb2osIG0sIHNpemVvZihtUGF0aE1hdHJpeFByb2opKTsKLSAgICAgICAgbUZ1bmN0aW9ucy0+
bWF0cml4TG9hZGZFWFQoR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNLCBtKTsKLQotICAgICAg
ICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5H
KTsKLSAgICB9Ci19Ci0KLXZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFBhdGhSZW5kZXJpbmdTdGVu
Y2lsU3RhdGUoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCi17Ci0gICAgaWYg
KGZ1bmMgIT0gbVBhdGhTdGVuY2lsRnVuYyB8fCByZWYgIT0gbVBhdGhTdGVuY2lsUmVmIHx8IG1h
c2sgIT0gbVBhdGhTdGVuY2lsTWFzaykKLSAgICB7Ci0gICAgICAgIG1QYXRoU3RlbmNpbEZ1bmMg
PSBmdW5jOwotICAgICAgICBtUGF0aFN0ZW5jaWxSZWYgID0gcmVmOwotICAgICAgICBtUGF0aFN0
ZW5jaWxNYXNrID0gbWFzazsKLSAgICAgICAgbUZ1bmN0aW9ucy0+cGF0aFN0ZW5jaWxGdW5jTlYo
ZnVuYywgcmVmLCBtYXNrKTsKLQotICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0
ZTo6RElSVFlfQklUX1BBVEhfUkVOREVSSU5HKTsKLSAgICB9Ci19Ci0KIHZvaWQgU3RhdGVNYW5h
Z2VyR0w6OnNldFByb3Zva2luZ1ZlcnRleChHTGVudW0gbW9kZSkKIHsKICAgICBpZiAobW9kZSAh
PSBtUHJvdm9raW5nVmVydGV4KQpAQCAtMjEwOCw3ICsyMDUxLDggQEAgdm9pZCBTdGF0ZU1hbmFn
ZXJHTDo6cHJvcGFnYXRlUHJvZ3JhbVRvVkFPKGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtLCBW
ZXJ0ZXhBcnIKICAgICAvLyBBdHRyaWJ1dGUgZW5hYmxlZCBtYXNrOgogICAgIGlmIChwcm9ncmFt
KQogICAgIHsKLSAgICAgICAgdmFvLT5hcHBseUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2socHJv
Z3JhbS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKTsKKyAgICAgICAgdmFvLT5hcHBs
eUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soCisgICAgICAgICAgICBwcm9ncmFtLT5nZXRFeGVj
dXRhYmxlKCkuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKTsKICAgICB9CiB9CiAKQEAg
LTIxMjYsNyArMjA3MCw3IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZU11bHRpdmlld0Jh
c2VWaWV3TGF5ZXJJbmRleFVuaWZvcm1JbXBsKAogCiB2b2lkIFN0YXRlTWFuYWdlckdMOjpzeW5j
U2FtcGxlcnNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBjb25zdCBn
bDo6U3RhdGU6OlNhbXBsZXJCaW5kaW5nVmVjdG9yICZzYW1wbGVycyA9IGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0U2FtcGxlcnMoKTsKKyAgICBjb25zdCBnbDo6U2FtcGxlckJpbmRpbmdWZWN0b3Ig
JnNhbXBsZXJzID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRTYW1wbGVycygpOwogCiAgICAgLy8g
VGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgYnkgdXNpbmcgYSBzZXBhcmF0ZSBiaW5kaW5nIGRpcnR5
IGJpdCBwZXIgc2FtcGxlci4KICAgICBmb3IgKHNpemVfdCBzYW1wbGVySW5kZXggPSAwOyBzYW1w
bGVySW5kZXggPCBzYW1wbGVycy5zaXplKCk7ICsrc2FtcGxlckluZGV4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFu
YWdlckdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvU3RhdGVNYW5hZ2VyR0wuaAppbmRleCA5N2E2OGIxMzczNzQ2Nzk0ZjhiY2VlYWE0MjZkNDBi
ZGVhYTQxNTk5Li5mNmQxNzQ0NDQ3YzBkYjhmMjk2OTBiMjM1ZmQ4YjU0NWVhMmUyN2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
U3RhdGVNYW5hZ2VyR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaApAQCAtMTUwLDEwICsxNTAsNiBAQCBjbGFz
cyBTdGF0ZU1hbmFnZXJHTCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgdm9pZCBz
ZXRDb3ZlcmFnZU1vZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpOwogCi0gICAgdm9pZCBzZXRQ
YXRoUmVuZGVyaW5nTW9kZWxWaWV3TWF0cml4KGNvbnN0IEdMZmxvYXQgKm0pOwotICAgIHZvaWQg
c2V0UGF0aFJlbmRlcmluZ1Byb2plY3Rpb25NYXRyaXgoY29uc3QgR0xmbG9hdCAqbSk7Ci0gICAg
dm9pZCBzZXRQYXRoUmVuZGVyaW5nU3RlbmNpbFN0YXRlKEdMZW51bSBmdW5jLCBHTGludCByZWYs
IEdMdWludCBtYXNrKTsKLQogICAgIHZvaWQgc2V0UHJvdm9raW5nVmVydGV4KEdMZW51bSBtb2Rl
KTsKIAogICAgIHZvaWQgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOwpAQCAtMzQ0LDEyICszNDAs
NiBAQCBjbGFzcyBTdGF0ZU1hbmFnZXJHTCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAg
ICAgR0xlbnVtIG1Db3ZlcmFnZU1vZHVsYXRpb247CiAKLSAgICBHTGZsb2F0IG1QYXRoTWF0cml4
TVZbMTZdOwotICAgIEdMZmxvYXQgbVBhdGhNYXRyaXhQcm9qWzE2XTsKLSAgICBHTGVudW0gbVBh
dGhTdGVuY2lsRnVuYzsKLSAgICBHTGludCBtUGF0aFN0ZW5jaWxSZWY7Ci0gICAgR0x1aW50IG1Q
YXRoU3RlbmNpbE1hc2s7Ci0KICAgICBjb25zdCBib29sIG1Jc011bHRpdmlld0VuYWJsZWQ7CiAK
ICAgICBHTGVudW0gbVByb3Zva2luZ1ZlcnRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAK
aW5kZXggYzU2Mjg5NjE5MDUwMDRiODgwNWE2ZmE1YzUyMWRhMWI0NzMyYzAxOC4uMDE2NTJmOTM5
YmJiNTJhMjYyZmZkN2RlNzI1Y2MzZGYyNzg4ZWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVH
TC5jcHAKQEAgLTc0OSw4ICs3NDksOCBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVHTDo6Y29weVN1
YkltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkK
IHsKLSAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0RnVuY3Rpb25zR0woY29u
dGV4dCk7Ci0gICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciA9IEdldFN0YXRlTWFuYWdl
ckdMKGNvbnRleHQpOworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMgICAgICA9IEdl
dEZ1bmN0aW9uc0dMKGNvbnRleHQpOworICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIg
ICAgICA9IEdldFN0YXRlTWFuYWdlckdMKGNvbnRleHQpOwogICAgIGNvbnN0IGFuZ2xlOjpGZWF0
dXJlc0dMICZmZWF0dXJlcyA9IEdldEZlYXR1cmVzR0woY29udGV4dCk7CiAKICAgICBnbDo6VGV4
dHVyZVRhcmdldCB0YXJnZXQgICAgICAgICAgICAgICAgID0gaW5kZXguZ2V0VGFyZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL0Rpc3BsYXlDR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0KaW5kZXggY2Q4YTZjYTZiMjhjYzNiN2Zj
NDY5MmQ5ZTRhMWY4OWUyY2I0YjM4Mi4uYWU5MDc3NmRhNTg0NWM5ZDBmYTMxOWM0MDUzZjcxNDQ1
OWFmNTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbQpAQCAtMjU5LDYg
KzI1OSw4IEBAIGVnbDo6Q29uZmlnU2V0IERpc3BsYXlDR0w6OmdlbmVyYXRlQ29uZmlncygpCiAg
ICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0IgID0gRUdMX0ZBTFNFOwogICAgIGNvbmZpZy5iaW5k
VG9UZXh0dXJlUkdCQSA9IEVHTF9GQUxTRTsKIAorICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlVGFy
Z2V0ID0gRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOworCiAgICAgY29uZmlnLnN1cmZhY2VU
eXBlID0gRUdMX1dJTkRPV19CSVQgfCBFR0xfUEJVRkZFUl9CSVQ7CiAKICAgICBjb25maWcubWlu
U3dhcEludGVydmFsID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0Rpc3BsYXlFQUdMLm1tIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvRGlzcGxheUVBR0wubW0K
aW5kZXggNzk3ZDNiNzVjNTJmN2M3NWVmYzIyOWU0NDMzNWY4NTgwZmRkNzAwYy4uODU4MDQ0MTFk
NTM4YzRiM2FmYjAzZjc5ZWU4NGYyMGQzMjEzM2IwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvRGlzcGxheUVBR0wubW0K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vh
Z2wvRGlzcGxheUVBR0wubW0KQEAgLTIwNSw2ICsyMDUsMTIgQEAgZWdsOjpDb25maWdTZXQgRGlz
cGxheUVBR0w6OmdlbmVyYXRlQ29uZmlncygpCiAgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0Ig
ID0gRUdMX0ZBTFNFOwogICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCQSA9IEVHTF9GQUxTRTsK
IAorIyAgICBpZiAhQU5HTEVfUExBVEZPUk1fTUFDQ0FUQUxZU1QKKyAgICBjb25maWcuYmluZFRv
VGV4dHVyZVRhcmdldCA9IEVHTF9URVhUVVJFXzJEOworIyAgICBlbHNlCisgICAgY29uZmlnLmJp
bmRUb1RleHR1cmVUYXJnZXQgPSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisjICAgIGVu
ZGlmCisKICAgICBjb25maWcuc3VyZmFjZVR5cGUgPSBFR0xfV0lORE9XX0JJVCB8IEVHTF9QQlVG
RkVSX0JJVDsKIAogICAgIGNvbmZpZy5taW5Td2FwSW50ZXJ2YWwgPSAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNw
bGF5RUdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvRGlzcGxheUVHTC5jcHAKaW5kZXggNTFlNWJiMjUxM2Q1OTczNTRhZDdkZjQwNmQ3
NDI1MTdiMDc5MmJlMi4uM2JmNTMyYzFkM2JhZDBlYzVjNTBhMjc0NGZiM2E5ZjdmYzY3YTFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9EaXNwbGF5RUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuY3BwCkBAIC04LDE2ICs4LDEwMSBA
QAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuaCIKIAor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFj
ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvQ29udGV4dEVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9JbWFnZUVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9Q
YnVmZmVyU3VyZmFjZUVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9S
ZW5kZXJlckVHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TeW5jRUdM
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgiCiAK
LW5hbWVzcGFjZSByeAorbmFtZXNwYWNlCit7CisKK0VHTGludCBFU0JpdEZyb21QbGF0Zm9ybUF0
dHJpYihjb25zdCByeDo6RnVuY3Rpb25zRUdMICplZ2wsIGNvbnN0IEVHTEF0dHJpYiBwbGF0Zm9y
bUF0dHJpYikKIHsKKyAgICBFR0xpbnQgZXNCaXQgPSBFR0xfTk9ORTsKKyAgICBzd2l0Y2ggKHBs
YXRmb3JtQXR0cmliKQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIGVzQml0ID0gRUdMX09QRU5H
TF9CSVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoRUdMX09QRU5HTF9FUzNfQklUID09IEVHTF9PUEVOR0xfRVMzX0JJ
VF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHRlbnNpb24gZGVmaW5lIG11c3Qg
bWF0Y2ggY29yZSIpOworCisgICAgICAgICAgICBnbDo6VmVyc2lvbiBlZ2xWZXJzaW9uKGVnbC0+
bWFqb3JWZXJzaW9uLCBlZ2wtPm1pbm9yVmVyc2lvbik7CisgICAgICAgICAgICBlc0JpdCA9IChl
Z2xWZXJzaW9uID49IGdsOjpWZXJzaW9uKDEsIDUpIHx8IGVnbC0+aGFzRXh0ZW5zaW9uKCJFR0xf
S0hSX2NyZWF0ZV9jb250ZXh0IikpCisgICAgICAgICAgICAgICAgICAgICAgICA/IEVHTF9PUEVO
R0xfRVMzX0JJVAorICAgICAgICAgICAgICAgICAgICAgICAgOiBFR0xfT1BFTkdMX0VTMl9CSVQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0jZGVmaW5lIEVHTF9OT19DT05GSUcg
KChFR0xDb25maWcpMCkKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gZXNCaXQ7Cit9CisKK2NsYXNzIFdvcmtlckNvbnRleHRFR0wgZmluYWwg
OiBwdWJsaWMgcng6OldvcmtlckNvbnRleHQKK3sKKyAgcHVibGljOgorICAgIFdvcmtlckNvbnRl
eHRFR0woRUdMQ29udGV4dCBjb250ZXh0LCByeDo6RnVuY3Rpb25zRUdMICpmdW5jdGlvbnMsIEVH
TFN1cmZhY2UgcGJ1ZmZlcik7CisgICAgfldvcmtlckNvbnRleHRFR0woKSBvdmVycmlkZTsKKwor
ICAgIGJvb2wgbWFrZUN1cnJlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVubWFrZUN1cnJlbnQo
KSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIEVHTENvbnRleHQgbUNvbnRleHQ7CisgICAg
cng6OkZ1bmN0aW9uc0VHTCAqbUZ1bmN0aW9uczsKKyAgICBFR0xTdXJmYWNlIG1QYnVmZmVyOwor
fTsKKworV29ya2VyQ29udGV4dEVHTDo6V29ya2VyQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4OjpGdW5jdGlvbnNFR0wg
KmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFj
ZSBwYnVmZmVyKQorICAgIDogbUNvbnRleHQoY29udGV4dCksIG1GdW5jdGlvbnMoZnVuY3Rpb25z
KSwgbVBidWZmZXIocGJ1ZmZlcikKK3t9CisKK1dvcmtlckNvbnRleHRFR0w6On5Xb3JrZXJDb250
ZXh0RUdMKCkKK3sKKyAgICBtRnVuY3Rpb25zLT5kZXN0cm95Q29udGV4dChtQ29udGV4dCk7Cit9
CisKK2Jvb2wgV29ya2VyQ29udGV4dEVHTDo6bWFrZUN1cnJlbnQoKQoreworICAgIGlmIChtRnVu
Y3Rpb25zLT5tYWtlQ3VycmVudChtUGJ1ZmZlciwgbUNvbnRleHQpID09IEVHTF9GQUxTRSkKKyAg
ICB7CisgICAgICAgIEVSUigpIDw8ICJVbmFibGUgdG8gbWFrZSB0aGUgRUdMIGNvbnRleHQgY3Vy
cmVudC4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIFdvcmtlckNvbnRleHRFR0w6OnVubWFrZUN1cnJlbnQoKQoreworICAgIG1GdW5j
dGlvbnMtPm1ha2VDdXJyZW50KEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZQorCituYW1lc3BhY2UgcngKK3sKIAogRGlzcGxheUVHTDo6RGlzcGxh
eUVHTChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCi0gICAgOiBEaXNwbGF5R0woc3Rh
dGUpLCBtRUdMKG51bGxwdHIpLCBtQ29uZmlnKEVHTF9OT19DT05GSUcpCisgICAgOiBEaXNwbGF5
R0woc3RhdGUpLCBtUmVuZGVyZXIobnVsbHB0ciksIG1FR0wobnVsbHB0ciksIG1Db25maWcoRUdM
X05PX0NPTkZJR19LSFIpCiB7fQogCiBEaXNwbGF5RUdMOjp+RGlzcGxheUVHTCgpIHt9CkBAIC0x
MTEsNiArMTk2LDM5MiBAQCBlZ2w6OkVycm9yIERpc3BsYXlFR0w6OmluaXRpYWxpemVDb250ZXh0
KEVHTENvbnRleHQgc2hhcmVDb250ZXh0LAogICAgIHJldHVybiBlZ2w6OkVycm9yKG1FR0wtPmdl
dEVycm9yKCksICJlZ2xDcmVhdGVDb250ZXh0IGZhaWxlZCIpOwogfQogCitlZ2w6OkVycm9yIERp
c3BsYXlFR0w6OmluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQoreworICAgIG1EaXNw
bGF5QXR0cmlidXRlcyA9IGRpc3BsYXktPmdldEF0dHJpYnV0ZU1hcCgpOworICAgIG1FR0wgICAg
ICAgICAgICAgICA9IG5ldyBGdW5jdGlvbnNFR0xETCgpOworCisgICAgdm9pZCAqZWdsSGFuZGxl
ID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EaXNwbGF5QXR0cmlidXRlcy5n
ZXQoRUdMX1BMQVRGT1JNX0FOR0xFX0VHTF9IQU5ETEVfQU5HTEUsIDApKTsKKyAgICBBTkdMRV9U
UlkobUVHTC0+aW5pdGlhbGl6ZShkaXNwbGF5LT5nZXROYXRpdmVEaXNwbGF5SWQoKSwgImxpYkVH
TC5zby4xIiwgZWdsSGFuZGxlKSk7CisKKyAgICBnbDo6VmVyc2lvbiBlZ2xWZXJzaW9uKG1FR0wt
Pm1ham9yVmVyc2lvbiwgbUVHTC0+bWlub3JWZXJzaW9uKTsKKyAgICBpZiAoZWdsVmVyc2lvbiA8
IGdsOjpWZXJzaW9uKDEsIDQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsTm90SW5p
dGlhbGl6ZWQoKSA8PCAiRUdMID49IDEuNCBpcyByZXF1aXJlZCI7CisgICAgfQorCisgICAgLy8g
T25seSBzdXBwb3J0IG1vZGVybiBFR0wgaW1wbGVtZW50YXRpb24gdG8ga2VlcCBkZWZhdWx0IGlt
cGxlbWVudGF0aW9uCisgICAgLy8gc2ltcGxlLgorICAgIGNvbnN0IGNoYXIgKm5lY2Vzc2FyeUV4
dGVuc2lvbnNbXSA9IHsKKyAgICAgICAgIkVHTF9LSFJfbm9fY29uZmlnX2NvbnRleHQiLAorICAg
ICAgICAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IiwKKyAgICB9OworCisgICAgZm9yIChj
b25zdCBjaGFyICpleHQgOiBuZWNlc3NhcnlFeHRlbnNpb25zKQorICAgIHsKKyAgICAgICAgaWYg
KCFtRUdMLT5oYXNFeHRlbnNpb24oZXh0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVnbDo6RWdsTm90SW5pdGlhbGl6ZWQoKSA8PCAibmVlZCAiIDw8IGV4dDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IEVHTEF0dHJpYiBwbGF0Zm9ybUF0dHJpYiA9IG1EaXNwbGF5QXR0
cmlidXRlcy5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIDApOworICAgIEVHTGlu
dCBlc0JpdCAgICAgICAgICAgICAgICAgICA9IEVTQml0RnJvbVBsYXRmb3JtQXR0cmliKG1FR0ws
IHBsYXRmb3JtQXR0cmliKTsKKyAgICBpZiAoZXNCaXQgPT0gRUdMX05PTkUpCisgICAgeworICAg
ICAgICByZXR1cm4gZWdsOjpFZ2xOb3RJbml0aWFsaXplZCgpIDw8ICJObyBtYXRjaGluZyBFUyBC
aXQiOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gY29uZmlnQXR0cmliTGlzdEJh
c2UgPSB7CisgICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwgRUdMX1JHQl9CVUZGRVIsIEVH
TF9TVVJGQUNFX1RZUEUsIEVHTF9XSU5ET1dfQklUIHwgRUdMX1BCVUZGRVJfQklULAorICAgICAg
ICBFR0xfQ09ORklHX0NBVkVBVCwgICAgIEVHTF9OT05FLCAgICAgICBFR0xfQ09ORk9STUFOVCwg
ICBlc0JpdCwKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgICBlc0JpdCwgICAgICAgICAg
RUdMX05PTkV9OworCisgICAgbUNvbmZpZ0F0dHJpYkxpc3QgPSBjb25maWdBdHRyaWJMaXN0QmFz
ZTsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IEVHTF9OT19DT05URVhUOworICAgIG5hdGl2
ZV9lZ2w6OkF0dHJpYnV0ZVZlY3RvciBhdHRyaWJzOworICAgIEFOR0xFX1RSWShpbml0aWFsaXpl
Q29udGV4dChFR0xfTk9fQ09OVEVYVCwgbURpc3BsYXlBdHRyaWJ1dGVzLCAmY29udGV4dCwgJmF0
dHJpYnMpKTsKKworICAgIGlmICghbUVHTC0+bWFrZUN1cnJlbnQoRUdMX05PX1NVUkZBQ0UsIGNv
bnRleHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsTm90SW5pdGlhbGl6ZWQoKSA8
PCAiQ291bGQgbm90IG1ha2UgY29udGV4dCBjdXJyZW50LiI7CisgICAgfQorCisgICAgc3RkOjp1
bmlxdWVfcHRyPEZ1bmN0aW9uc0dMPiBmdW5jdGlvbnNHTChtRUdMLT5tYWtlRnVuY3Rpb25zR0wo
KSk7CisgICAgZnVuY3Rpb25zR0wtPmluaXRpYWxpemUobURpc3BsYXlBdHRyaWJ1dGVzKTsKKwor
ICAgIG1SZW5kZXJlci5yZXNldCgKKyAgICAgICAgbmV3IFJlbmRlcmVyRUdMKHN0ZDo6bW92ZShm
dW5jdGlvbnNHTCksIG1EaXNwbGF5QXR0cmlidXRlcywgdGhpcywgY29udGV4dCwgYXR0cmlicykp
OworICAgIGNvbnN0IGdsOjpWZXJzaW9uICZtYXhWZXJzaW9uID0gbVJlbmRlcmVyLT5nZXRNYXhT
dXBwb3J0ZWRFU1ZlcnNpb24oKTsKKyAgICBpZiAobWF4VmVyc2lvbiA8IGdsOjpWZXJzaW9uKDIs
IDApKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsTm90SW5pdGlhbGl6ZWQoKSA8PCAi
T3BlbkdMIEVTIDIuMCBpcyBub3Qgc3VwcG9ydGFibGUuIjsKKyAgICB9CisKKyAgICBBTkdMRV9U
UlkoRGlzcGxheUdMOjppbml0aWFsaXplKGRpc3BsYXkpKTsKKworICAgIHJldHVybiBlZ2w6Ok5v
RXJyb3IoKTsKK30KKwordm9pZCBEaXNwbGF5RUdMOjp0ZXJtaW5hdGUoKQoreworICAgIERpc3Bs
YXlHTDo6dGVybWluYXRlKCk7CisKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5tYWtl
Q3VycmVudChFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgIGlmIChzdWNjZXNz
ID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJlZ2xNYWtlQ3VycmVudCBl
cnJvciAiIDw8IGVnbDo6RXJyb3IobUVHTC0+Z2V0RXJyb3IoKSk7CisgICAgfQorCisgICAgbVJl
bmRlcmVyLnJlc2V0KCk7CisKKyAgICBlZ2w6OkVycm9yIHJlc3VsdCA9IG1FR0wtPnRlcm1pbmF0
ZSgpOworICAgIGlmIChyZXN1bHQuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwg
ImVnbFRlcm1pbmF0ZSBlcnJvciAiIDw8IHJlc3VsdDsKKyAgICB9CisKKyAgICBTYWZlRGVsZXRl
KG1FR0wpOworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheUVHTDo6Y3JlYXRlV2luZG93U3VyZmFj
ZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQoreworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgRUdMaW50IG51
bUNvbmZpZzsKKyAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7CisKKyAgICBjb25zdCBFR0xpbnQgY29u
ZmlnQXR0cmliTGlzdFtdID0ge0VHTF9DT05GSUdfSUQsIG1Db25maWdJZHNbc3RhdGUuY29uZmln
LT5jb25maWdJRF0sIEVHTF9OT05FfTsKKyAgICBzdWNjZXNzICAgICAgICAgICAgICAgICAgICAg
ICAgID0gbUVHTC0+Y2hvb3NlQ29uZmlnKGNvbmZpZ0F0dHJpYkxpc3QsICZjb25maWcsIDEsICZu
dW1Db25maWcpOworICAgIEFTU0VSVChzdWNjZXNzICYmIG51bUNvbmZpZyA9PSAxKTsKKworICAg
IHJldHVybiBuZXcgV2luZG93U3VyZmFjZUVHTChzdGF0ZSwgbUVHTCwgY29uZmlnLCB3aW5kb3cp
OworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheUVHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29u
c3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQorewor
ICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgRUdMaW50IG51bUNvbmZpZzsKKyAgICBFR0xCb29s
ZWFuIHN1Y2Nlc3M7CisKKyAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmliTGlzdFtdID0ge0VH
TF9DT05GSUdfSUQsIG1Db25maWdJZHNbc3RhdGUuY29uZmlnLT5jb25maWdJRF0sIEVHTF9OT05F
fTsKKyAgICBzdWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgID0gbUVHTC0+Y2hvb3NlQ29u
ZmlnKGNvbmZpZ0F0dHJpYkxpc3QsICZjb25maWcsIDEsICZudW1Db25maWcpOworICAgIEFTU0VS
VChzdWNjZXNzICYmIG51bUNvbmZpZyA9PSAxKTsKKworICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1
cmZhY2VFR0woc3RhdGUsIG1FR0wsIGNvbmZpZyk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5
RUdMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitTdXJmYWNlSW1wbCAqRGlzcGxheUVHTDo6Y3JlYXRl
UGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2
ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworQ29udGV4dEltcGwgKkRpc3BsYXlFR0w6OmNyZWF0
ZUNvbnRleHQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpFcnJvclNldCAqZXJyb3JTZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0
ICpzaGFyZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBzdGQ6OnNoYXJlZF9wdHI8
UmVuZGVyZXJFR0w+IHJlbmRlcmVyOworICAgIEVHTENvbnRleHQgbmF0aXZlU2hhcmVDb250ZXh0
ID0gRUdMX05PX0NPTlRFWFQ7CisgICAgaWYgKHNoYXJlQ29udGV4dCkKKyAgICB7CisgICAgICAg
IENvbnRleHRFR0wgKnNoYXJlQ29udGV4dEVHTCA9IEdldEltcGxBczxDb250ZXh0RUdMPihzaGFy
ZUNvbnRleHQpOworICAgICAgICBuYXRpdmVTaGFyZUNvbnRleHQgICAgICAgICAgPSBzaGFyZUNv
bnRleHRFR0wtPmdldENvbnRleHQoKTsKKyAgICB9CisKKyAgICBlZ2w6OkVycm9yIGVycm9yID0g
Y3JlYXRlUmVuZGVyZXIobmF0aXZlU2hhcmVDb250ZXh0LCAmcmVuZGVyZXIpOworICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBFUlIoKSA8PCAiRmFpbGVkIHRvIGNyZWF0
ZSBhIHNoYXJlZCByZW5kZXJlcjogIiA8PCBlcnJvci5nZXRNZXNzYWdlKCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBuZXcgQ29udGV4dEVHTChzdGF0ZSwg
ZXJyb3JTZXQsIHJlbmRlcmVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIERp
c3BsYXlFR0w6OmdldENvbmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmli
dXRlLCBUICp2YWx1ZSkgY29uc3QKK3sKKyAgICBFR0xpbnQgdG1wOworICAgIEVHTEJvb2xlYW4g
c3VjY2VzcyA9IG1FR0wtPmdldENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0ZSwgJnRtcCk7
CisgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RSVUUpOworICAgICp2YWx1ZSA9IHRtcDsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIERpc3BsYXlFR0w6Omdl
dENvbmZpZ0F0dHJpYklmRXh0ZW5zaW9uKEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgKnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFUgJmRl
ZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICBpZiAobUVHTC0+aGFzRXh0ZW5zaW9uKGV4dGVuc2lv
bikpCisgICAgeworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnLCBhdHRyaWJ1dGUsIHZh
bHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nh
c3Q8VD4oZGVmYXVsdFZhbHVlKTsKKyAgICB9Cit9CisKK2VnbDo6Q29uZmlnU2V0IERpc3BsYXlF
R0w6OmdlbmVyYXRlQ29uZmlncygpCit7CisgICAgZWdsOjpDb25maWdTZXQgY29uZmlnU2V0Owor
ICAgIG1Db25maWdJZHMuY2xlYXIoKTsKKworICAgIEVHTGludCBudW1Db25maWdzOworICAgIEVH
TEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPmNob29zZUNvbmZpZyhtQ29uZmlnQXR0cmliTGlzdC5k
YXRhKCksIG51bGxwdHIsIDAsICZudW1Db25maWdzKTsKKyAgICBBU1NFUlQoc3VjY2VzcyA9PSBF
R0xfVFJVRSAmJiBudW1Db25maWdzID4gMCk7CisKKyAgICBzdGQ6OnZlY3RvcjxFR0xDb25maWc+
IGNvbmZpZ3MobnVtQ29uZmlncyk7CisgICAgRUdMaW50IG51bUNvbmZpZ3MyOworICAgIHN1Y2Nl
c3MgPQorICAgICAgICBtRUdMLT5jaG9vc2VDb25maWcobUNvbmZpZ0F0dHJpYkxpc3QuZGF0YSgp
LCBjb25maWdzLmRhdGEoKSwgbnVtQ29uZmlncywgJm51bUNvbmZpZ3MyKTsKKyAgICBBU1NFUlQo
c3VjY2VzcyA9PSBFR0xfVFJVRSAmJiBudW1Db25maWdzMiA9PSBudW1Db25maWdzKTsKKworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29uZmlnczsgaSsrKQorICAgIHsKKyAgICAgICAgZWds
OjpDb25maWcgY29uZmlnOworCisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBF
R0xfQlVGRkVSX1NJWkUsICZjb25maWcuYnVmZmVyU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0
dHJpYihjb25maWdzW2ldLCBFR0xfUkVEX1NJWkUsICZjb25maWcucmVkU2l6ZSk7CisgICAgICAg
IGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfR1JFRU5fU0laRSwgJmNvbmZpZy5ncmVl
blNpemUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0JMVUVfU0la
RSwgJmNvbmZpZy5ibHVlU2l6ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ld
LCBFR0xfTFVNSU5BTkNFX1NJWkUsICZjb25maWcubHVtaW5hbmNlU2l6ZSk7CisgICAgICAgIGdl
dENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfQUxQSEFfU0laRSwgJmNvbmZpZy5hbHBoYVNp
emUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0FMUEhBX01BU0tf
U0laRSwgJmNvbmZpZy5hbHBoYU1hc2tTaXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNv
bmZpZ3NbaV0sIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCLCAmY29uZmlnLmJpbmRUb1RleHR1cmVS
R0IpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0JJTkRfVE9fVEVY
VFVSRV9SR0JBLCAmY29uZmlnLmJpbmRUb1RleHR1cmVSR0JBKTsKKyAgICAgICAgZ2V0Q29uZmln
QXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwgJmNvbmZpZy5jb2xvckJ1
ZmZlclR5cGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTkZJ
R19DQVZFQVQsICZjb25maWcuY29uZmlnQ2F2ZWF0KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmli
KGNvbmZpZ3NbaV0sIEVHTF9DT05GSUdfSUQsICZjb25maWcuY29uZmlnSUQpOworICAgICAgICBn
ZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTkZPUk1BTlQsICZjb25maWcuY29uZm9y
bWFudCk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfREVQVEhfU0la
RSwgJmNvbmZpZy5kZXB0aFNpemUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tp
XSwgRUdMX0xFVkVMLCAmY29uZmlnLmxldmVsKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNv
bmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZFUl9XSURUSCwgJmNvbmZpZy5tYXhQQnVmZmVyV2lkdGgp
OworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01BWF9QQlVGRkVSX0hF
SUdIVCwgJmNvbmZpZy5tYXhQQnVmZmVySGVpZ2h0KTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmli
KGNvbmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFMsICZjb25maWcubWF4UEJ1ZmZlclBp
eGVscyk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTUFYX1NXQVBf
SU5URVJWQUwsICZjb25maWcubWF4U3dhcEludGVydmFsKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0
cmliKGNvbmZpZ3NbaV0sIEVHTF9NSU5fU1dBUF9JTlRFUlZBTCwgJmNvbmZpZy5taW5Td2FwSW50
ZXJ2YWwpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9S
RU5ERVJBQkxFLCAmY29uZmlnLm5hdGl2ZVJlbmRlcmFibGUpOworICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9WSVNVQUxfSUQsICZjb25maWcubmF0aXZlVmlz
dWFsSUQpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX05BVElWRV9W
SVNVQUxfVFlQRSwgJmNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlKTsKKyAgICAgICAgZ2V0Q29uZmln
QXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9SRU5ERVJBQkxFX1RZUEUsICZjb25maWcucmVuZGVyYWJs
ZVR5cGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1NBTVBMRV9C
VUZGRVJTLCAmY29uZmlnLnNhbXBsZUJ1ZmZlcnMpOworICAgICAgICBnZXRDb25maWdBdHRyaWIo
Y29uZmlnc1tpXSwgRUdMX1NBTVBMRVMsICZjb25maWcuc2FtcGxlcyk7CisgICAgICAgIGdldENv
bmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfU1RFTkNJTF9TSVpFLCAmY29uZmlnLnN0ZW5jaWxT
aXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9TVVJGQUNFX1RZ
UEUsICZjb25maWcuc3VyZmFjZVR5cGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmln
c1tpXSwgRUdMX1RSQU5TUEFSRU5UX1RZUEUsICZjb25maWcudHJhbnNwYXJlbnRUeXBlKTsKKyAg
ICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9SRURfVkFM
VUUsICZjb25maWcudHJhbnNwYXJlbnRSZWRWYWx1ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJp
Yihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUUsICZjb25maWcudHJhbnNw
YXJlbnRHcmVlblZhbHVlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVH
TF9UUkFOU1BBUkVOVF9CTFVFX1ZBTFVFLCAmY29uZmlnLnRyYW5zcGFyZW50Qmx1ZVZhbHVlKTsK
KyAgICAgICAgZ2V0Q29uZmlnQXR0cmliSWZFeHRlbnNpb24oY29uZmlnc1tpXSwgRUdMX0NPTE9S
X0NPTVBPTkVOVF9UWVBFX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUsICJFR0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9hdCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9DT0xPUl9DT01QT05FTlRf
VFlQRV9GSVhFRF9FWFQpOworCisgICAgICAgIGlmIChjb25maWcuY29sb3JCdWZmZXJUeXBlID09
IEVHTF9SR0JfQlVGRkVSKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoY29uZmlnLmNv
bG9yQ29tcG9uZW50VHlwZSA9PSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUKTsK
KyAgICAgICAgICAgIGlmIChjb25maWcucmVkU2l6ZSA9PSA4ICYmIGNvbmZpZy5ncmVlblNpemUg
PT0gOCAmJiBjb25maWcuYmx1ZVNpemUgPT0gOCAmJgorICAgICAgICAgICAgICAgIGNvbmZpZy5h
bHBoYVNpemUgPT0gOCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25maWcucmVu
ZGVyVGFyZ2V0Rm9ybWF0ID0gR0xfUkdCQTg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChjb25maWcucmVkU2l6ZSA9PSA4ICYmIGNvbmZpZy5ncmVlblNpemUgPT0gOCAmJiBj
b25maWcuYmx1ZVNpemUgPT0gOCAmJgorICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFscGhh
U2l6ZSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJU
YXJnZXRGb3JtYXQgPSBHTF9SR0I4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBp
ZiAoY29uZmlnLnJlZFNpemUgPT0gNSAmJiBjb25maWcuZ3JlZW5TaXplID09IDYgJiYgY29uZmln
LmJsdWVTaXplID09IDUgJiYKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUg
PT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25maWcucmVuZGVyVGFyZ2V0
Rm9ybWF0ID0gR0xfUkdCNTY1OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
Y29uZmlnLnJlZFNpemUgPT0gNSAmJiBjb25maWcuZ3JlZW5TaXplID09IDUgJiYgY29uZmlnLmJs
dWVTaXplID09IDUgJiYKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUgPT0g
MSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25maWcucmVuZGVyVGFyZ2V0Rm9y
bWF0ID0gR0xfUkdCNV9BMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNv
bmZpZy5yZWRTaXplID09IDQgJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA0ICYmIGNvbmZpZy5ibHVl
U2l6ZSA9PSA0ICYmCisgICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFTaXplID09IDQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1h
dCA9IEdMX1JHQkE0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEVSUigpIDw8ICJSR0JBKCIgPDwgY29uZmlnLnJlZFNpemUg
PDwgIiwiIDw8IGNvbmZpZy5ncmVlblNpemUgPDwgIiwiCisgICAgICAgICAgICAgICAgICAgICAg
PDwgY29uZmlnLmJsdWVTaXplIDw8ICIsIiA8PCBjb25maWcuYWxwaGFTaXplIDw8ICIpIG5vdCBo
YW5kbGVkIjsKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb25maWcuZGVwdGhTaXplID09IDAgJiYg
Y29uZmlnLnN0ZW5jaWxTaXplID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZy5k
ZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9aRVJPOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KGNvbmZpZy5kZXB0aFNpemUgPT0gMTYgJiYgY29uZmlnLnN0ZW5jaWxTaXplID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9D
T01QT05FTlQxNjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb25maWcuZGVwdGhTaXpl
ID09IDI0ICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMjQ7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAyNCAmJiBjb25maWcu
c3RlbmNpbFNpemUgPT0gOCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uZmlnLmRlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDg7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAwICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSA4KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfU1RF
TkNJTF9JTkRFWDg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAgICAgICAgY29uZmlnLm1hdGNoTmF0
aXZlUGl4bWFwICA9IEVHTF9OT05FOworICAgICAgICBjb25maWcub3B0aW1hbE9yaWVudGF0aW9u
ID0gMDsKKworICAgICAgICBpbnQgaW50ZXJuYWxJZCAgICAgICAgID0gY29uZmlnU2V0LmFkZChj
b25maWcpOworICAgICAgICBtQ29uZmlnSWRzW2ludGVybmFsSWRdID0gY29uZmlnLmNvbmZpZ0lE
OworICAgIH0KKworICAgIHJldHVybiBjb25maWdTZXQ7Cit9CisKK2Jvb2wgRGlzcGxheUVHTDo6
dGVzdERldmljZUxvc3QoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworZWdsOjpFcnJvciBE
aXNwbGF5RUdMOjpyZXN0b3JlTG9zdERldmljZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkp
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30K
KworYm9vbCBEaXNwbGF5RUdMOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCitEZXZpY2VJbXBsICpE
aXNwbGF5RUdMOjpjcmVhdGVEZXZpY2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5RUdMOjp3YWl0Q2xpZW50KGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheUVHTDo6d2FpdE5h
dGl2ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgRUdMaW50IGVuZ2luZSkKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVy
cm9yIERpc3BsYXlFR0w6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250
ZXh0KQoreworICAgIEVHTFN1cmZhY2UgbmV3U3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOworICAg
IGlmIChkcmF3U3VyZmFjZSkKKyAgICB7CisgICAgICAgIFN1cmZhY2VFR0wgKmRyYXdTdXJmYWNl
RUdMID0gR2V0SW1wbEFzPFN1cmZhY2VFR0w+KGRyYXdTdXJmYWNlKTsKKyAgICAgICAgbmV3U3Vy
ZmFjZSAgICAgICAgICAgICAgICAgPSBkcmF3U3VyZmFjZUVHTC0+Z2V0U3VyZmFjZSgpOworICAg
IH0KKworICAgIEVHTENvbnRleHQgbmV3Q29udGV4dCA9IEVHTF9OT19DT05URVhUOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgQ29udGV4dEVHTCAqY29udGV4dEVHTCA9IEdldElt
cGxBczxDb250ZXh0RUdMPihjb250ZXh0KTsKKyAgICAgICAgbmV3Q29udGV4dCAgICAgICAgICAg
ICA9IGNvbnRleHRFR0wtPmdldENvbnRleHQoKTsKKyAgICB9CisKKyAgICBpZiAobUVHTC0+bWFr
ZUN1cnJlbnQobmV3U3VyZmFjZSwgbmV3Q29udGV4dCkgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUVHTC0+Z2V0RXJyb3IoKSwgImVnbE1ha2VDdXJyZW50
IGZhaWxlZCIpOworICAgIH0KKworICAgIHJldHVybiBEaXNwbGF5R0w6Om1ha2VDdXJyZW50KGRy
YXdTdXJmYWNlLCByZWFkU3VyZmFjZSwgY29udGV4dCk7Cit9CisKK2dsOjpWZXJzaW9uIERpc3Bs
YXlFR0w6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1S
ZW5kZXJlci0+Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCk7Cit9CisKK3ZvaWQgRGlzcGxheUVH
TDo6ZGVzdHJveU5hdGl2ZUNvbnRleHQoRUdMQ29udGV4dCBjb250ZXh0KQoreworICAgIG1FR0wt
PmRlc3Ryb3lDb250ZXh0KGNvbnRleHQpOworfQorCiB2b2lkIERpc3BsYXlFR0w6OmdlbmVyYXRl
RXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAog
ewogICAgIGdsOjpWZXJzaW9uIGVnbFZlcnNpb24obUVHTC0+bWFqb3JWZXJzaW9uLCBtRUdMLT5t
aW5vclZlcnNpb24pOwpAQCAtMTY4LDYgKzYzOSw4IEBAIHZvaWQgRGlzcGxheUVHTDo6Z2VuZXJh
dGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0
CiAKICAgICBvdXRFeHRlbnNpb25zLT5ub0NvbmZpZ0NvbnRleHQgPSBtRUdMLT5oYXNFeHRlbnNp
b24oIkVHTF9LSFJfbm9fY29uZmlnX2NvbnRleHQiKTsKIAorICAgIG91dEV4dGVuc2lvbnMtPnN1
cmZhY2VsZXNzQ29udGV4dCA9IG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX0tIUl9zdXJmYWNlbGVz
c19jb250ZXh0Iik7CisKICAgICBvdXRFeHRlbnNpb25zLT5mcmFtZWJ1ZmZlclRhcmdldEFORFJP
SUQgPSBtRUdMLT5oYXNFeHRlbnNpb24oIkVHTF9BTkRST0lEX2ZyYW1lYnVmZmVyX3RhcmdldCIp
OwogCiAgICAgRGlzcGxheUdMOjpnZW5lcmF0ZUV4dGVuc2lvbnMob3V0RXh0ZW5zaW9ucyk7CkBA
IC0xODYsNCArNjU5LDU2IEBAIHZvaWQgRGlzcGxheUVHTDo6c2V0QmxvYkNhY2hlRnVuY3MoRUdM
U2V0QmxvYkZ1bmNBTkRST0lEIHNldCwgRUdMR2V0QmxvYkZ1bmNBTkRSCiAgICAgfQogfQogCitl
Z2w6OkVycm9yIERpc3BsYXlFR0w6Om1ha2VDdXJyZW50U3VyZmFjZWxlc3MoZ2w6OkNvbnRleHQg
KmNvbnRleHQpCit7CisgICAgLy8gTm90aGluZyB0byBkbyBiZWNhdXNlIEVHTCBhbHdheXMgdXNl
cyB0aGUgc2FtZSBjb250ZXh0IGFuZCB0aGUgcHJldmlvdXMgc3VyZmFjZSBjYW4gYmUgbGVmdAor
ICAgIC8vIGN1cnJlbnQuCisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVy
cm9yIERpc3BsYXlFR0w6OmNyZWF0ZVJlbmRlcmVyKEVHTENvbnRleHQgc2hhcmVDb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNoYXJlZF9wdHI8UmVu
ZGVyZXJFR0w+ICpvdXRSZW5kZXJlcikKK3sKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBFR0xf
Tk9fQ09OVEVYVDsKKyAgICBuYXRpdmVfZWdsOjpBdHRyaWJ1dGVWZWN0b3IgYXR0cmliczsKKyAg
ICBBTkdMRV9UUlkoaW5pdGlhbGl6ZUNvbnRleHQoc2hhcmVDb250ZXh0LCBtRGlzcGxheUF0dHJp
YnV0ZXMsICZjb250ZXh0LCAmYXR0cmlicykpOworCisgICAgaWYgKG1FR0wtPm1ha2VDdXJyZW50
KEVHTF9OT19TVVJGQUNFLCBjb250ZXh0KSA9PSBFR0xfRkFMU0UpCisgICAgeworICAgICAgICBy
ZXR1cm4gZWdsOjpFZ2xOb3RJbml0aWFsaXplZCgpCisgICAgICAgICAgICAgICA8PCAiZWdsTWFr
ZUN1cnJlbnQgZmFpbGVkIHdpdGggIiA8PCBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCkpOwor
ICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbnNHTD4gZnVuY3Rpb25zR0wobUVH
TC0+bWFrZUZ1bmN0aW9uc0dMKCkpOworICAgIGZ1bmN0aW9uc0dMLT5pbml0aWFsaXplKG1EaXNw
bGF5QXR0cmlidXRlcyk7CisKKyAgICBvdXRSZW5kZXJlci0+cmVzZXQoCisgICAgICAgIG5ldyBS
ZW5kZXJlckVHTChzdGQ6Om1vdmUoZnVuY3Rpb25zR0wpLCBtRGlzcGxheUF0dHJpYnV0ZXMsIHRo
aXMsIGNvbnRleHQsIGF0dHJpYnMpKTsKKworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30K
KworV29ya2VyQ29udGV4dCAqRGlzcGxheUVHTDo6Y3JlYXRlV29ya2VyQ29udGV4dChzdGQ6OnN0
cmluZyAqaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMQ29udGV4dCBzaGFyZWRDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYXRpdmVfZWdsOjpBdHRyaWJ1dGVWZWN0b3Ig
d29ya2VyQXR0cmlicykKK3sKKyAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBtRUdMLT5jcmVhdGVD
b250ZXh0KG1Db25maWcsIHNoYXJlZENvbnRleHQsIHdvcmtlckF0dHJpYnMuZGF0YSgpKTsKKyAg
ICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkKKyAgICB7CisgICAgICAgICppbmZvTG9n
ICs9ICJVbmFibGUgdG8gY3JlYXRlIHRoZSBFR0wgY29udGV4dC4iOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBXb3JrZXJDb250ZXh0RUdMKGNvbnRleHQs
IG1FR0wsIEVHTF9OT19TVVJGQUNFKTsKK30KKwordm9pZCBEaXNwbGF5RUdMOjppbml0aWFsaXpl
RnJvbnRlbmRGZWF0dXJlcyhhbmdsZTo6RnJvbnRlbmRGZWF0dXJlcyAqZmVhdHVyZXMpIGNvbnN0
Cit7CisgICAgbVJlbmRlcmVyLT5pbml0aWFsaXplRnJvbnRlbmRGZWF0dXJlcyhmZWF0dXJlcyk7
Cit9CisKK3ZvaWQgRGlzcGxheUVHTDo6cG9wdWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVy
ZUxpc3QgKmZlYXR1cmVzKQoreworICAgIG1SZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5wb3B1bGF0
ZUZlYXR1cmVMaXN0KGZlYXR1cmVzKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L0Rpc3BsYXlFR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCmluZGV4IGJjNTk3YjYyMmRkNWYxZjgzYzYwNGM2ODRk
NTllOTY5ZmZkZjAyNjguLjQ1ZTUwMjBiYjI2NDdjMjgyNmRhMDgyODVlODI2NDAzNjRjMjA2ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvRGlzcGxheUVHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCkBAIC05LDEzICs5LDE4IEBACiAj
aWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9ESVNQTEFZRUdMX0hfCiAjZGVmaW5lIExJ
QkFOR0xFX1JFTkRFUkVSX0dMX0VHTF9ESVNQTEFZRUdMX0hfCiAKKyNpbmNsdWRlIDxtYXA+Cisj
aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9GdW5jdGlvbnNFR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
ZWdsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewogCitjbGFzcyBGdW5jdGlvbnNFR0xETDsK
K2NsYXNzIFJlbmRlcmVyRUdMOwogY2xhc3MgV29ya2VyQ29udGV4dDsKIAogY2xhc3MgRGlzcGxh
eUVHTCA6IHB1YmxpYyBEaXNwbGF5R0wKQEAgLTM1LDExICs0MCw1NSBAQCBjbGFzcyBEaXNwbGF5
RUdMIDogcHVibGljIERpc3BsYXlHTAogCiAgICAgdm9pZCBzZXRCbG9iQ2FjaGVGdW5jcyhFR0xT
ZXRCbG9iRnVuY0FORFJPSUQgc2V0LCBFR0xHZXRCbG9iRnVuY0FORFJPSUQgZ2V0KSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95TmF0aXZlQ29udGV4dChFR0xDb250ZXh0IGNv
bnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveU5hdGl2ZUNvbnRleHQoRUdMQ29u
dGV4dCBjb250ZXh0KTsKIAogICAgIHZpcnR1YWwgV29ya2VyQ29udGV4dCAqY3JlYXRlV29ya2Vy
Q29udGV4dChzdGQ6OnN0cmluZyAqaW5mb0xvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQ29udGV4dCBzaGFyZWRDb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYXRpdmVfZWdsOjpB
dHRyaWJ1dGVWZWN0b3Igd29ya2VyQXR0cmlicykgPSAwOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYXRpdmVfZWdsOjpBdHRyaWJ1dGVWZWN0
b3Igd29ya2VyQXR0cmlicyk7CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwor
CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5h
dGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJm
YWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBi
dWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJp
ZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5h
dGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKwor
ICAgIENvbnRleHRJbXBsICpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkVycm9yU2V0ICplcnJvclNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29udGV4dCAq
c2hhcmVDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKworICAgIGVnbDo6Q29uZmlnU2V0IGdl
bmVyYXRlQ29uZmlncygpIG92ZXJyaWRlOworCisgICAgYm9vbCB0ZXN0RGV2aWNlTG9zdCgpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcmVzdG9yZUxvc3REZXZpY2UoY29uc3QgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKworICAgIGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBEZXZpY2VJ
bXBsICpjcmVhdGVEZXZpY2UoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3Igd2FpdENsaWVu
dChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciB3
YWl0TmF0aXZlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgZW5naW5lKSBvdmVy
cmlkZTsKKworICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpkcmF3U3Vy
ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCkgb3Zl
cnJpZGU7CisKKyAgICBnbDo6VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25z
dCBvdmVycmlkZTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUZyb250ZW5kRmVhdHVyZXMoYW5nbGU6
OkZyb250ZW5kRmVhdHVyZXMgKmZlYXR1cmVzKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQg
cG9wdWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVyZUxpc3QgKmZlYXR1cmVzKSBvdmVycmlk
ZTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplQ29udGV4dChFR0xD
b250ZXh0IHNoYXJlQ29udGV4dCwKQEAgLTQ5LDEzICs5OCwzMiBAQCBjbGFzcyBEaXNwbGF5RUdM
IDogcHVibGljIERpc3BsYXlHTAogCiAgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpE
aXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBG
dW5jdGlvbnNFR0wgKm1FR0w7CisgICAgZWdsOjpFcnJvciBjcmVhdGVSZW5kZXJlcihFR0xDb250
ZXh0IHNoYXJlQ29udGV4dCwgc3RkOjpzaGFyZWRfcHRyPFJlbmRlcmVyRUdMPiAqb3V0UmVuZGVy
ZXIpOworCisgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudFN1cmZhY2VsZXNzKGdsOjpDb250ZXh0
ICpjb250ZXh0KSBvdmVycmlkZTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZv
aWQgZ2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQg
KnZhbHVlKSBjb25zdDsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
ICAgIHZvaWQgZ2V0Q29uZmlnQXR0cmliSWZFeHRlbnNpb24oRUdMQ29uZmlnIGNvbmZpZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUICp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFUgJmRlZmF1bHRWYWx1ZSkgY29uc3Q7CisK
KyAgICBzdGQ6OnNoYXJlZF9wdHI8UmVuZGVyZXJFR0w+IG1SZW5kZXJlcjsKKyAgICBGdW5jdGlv
bnNFR0xETCAqbUVHTDsKICAgICBFR0xDb25maWcgbUNvbmZpZzsKKyAgICBlZ2w6OkF0dHJpYnV0
ZU1hcCBtRGlzcGxheUF0dHJpYnV0ZXM7CisgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBtQ29uZmln
QXR0cmliTGlzdDsKIAogICBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGVnbDo6Q2Fw
cyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBzdGQ6Om1hcDxFR0xpbnQsIEVHTGlu
dD4gbUNvbmZpZ0lkczsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeAogCi0jZW5kaWYgLyogTElC
QU5HTEVfUkVOREVSRVJfR0xfRUdMX0RJU1BMQVlFR0xfSF8gKi8KKyNlbmRpZiAgLy8gTElCQU5H
TEVfUkVOREVSRVJfR0xfRUdMX0RJU1BMQVlFR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5
QW5kcm9pZC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwCmluZGV4IDc4YmZhY2NjMGVlNDYy
NjdkNjVkOTI4YzhjNDAxNTU2NTQxNGEwYWUuLjZkYzNlY2ZlNDM4OTU2YTlkMTkyMDgyZmUzMDk5
OGI3MWQwNjZkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lk
L0Rpc3BsYXlBbmRyb2lkLmNwcApAQCAtMTksOSArMTksOCBAQAogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvQ29udGV4dEVHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9G
dW5jdGlvbnNFR0xETC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVm
ZmVyU3VyZmFjZUVHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9SZW5k
ZXJlckVHTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJm
YWNlRUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9OYXRpdmVCdWZm
ZXJJbWFnZVNpYmxpbmdBbmRyb2lkLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
cmVuZGVyZXJnbF91dGlscy5oIgogCkBAIC0yMDAsNTIgKzE5OSw2IEBAIHZvaWQgRGlzcGxheUFu
ZHJvaWQ6OnRlcm1pbmF0ZSgpCiAgICAgU2FmZURlbGV0ZShtRUdMKTsKIH0KIAotU3VyZmFjZUlt
cGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKLXsKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIEVHTGludCBudW1Db25maWc7Ci0g
ICAgRUdMQm9vbGVhbiBzdWNjZXNzOwotCi0gICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYkxp
c3RbXSA9IHtFR0xfQ09ORklHX0lELCBtQ29uZmlnSWRzW3N0YXRlLmNvbmZpZy0+Y29uZmlnSURd
LCBFR0xfTk9ORX07Ci0gICAgc3VjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICA9IG1FR0wt
PmNob29zZUNvbmZpZyhjb25maWdBdHRyaWJMaXN0LCAmY29uZmlnLCAxLCAmbnVtQ29uZmlnKTsK
LSAgICBBU1NFUlQoc3VjY2VzcyAmJiBudW1Db25maWcgPT0gMSk7Ci0KLSAgICByZXR1cm4gbmV3
IFdpbmRvd1N1cmZhY2VFR0woc3RhdGUsIG1FR0wsIGNvbmZpZywgd2luZG93KTsKLX0KLQotU3Vy
ZmFjZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAg
IEVHTENvbmZpZyBjb25maWc7Ci0gICAgRUdMaW50IG51bUNvbmZpZzsKLSAgICBFR0xCb29sZWFu
IHN1Y2Nlc3M7Ci0KLSAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmliTGlzdFtdID0ge0VHTF9D
T05GSUdfSUQsIG1Db25maWdJZHNbc3RhdGUuY29uZmlnLT5jb25maWdJRF0sIEVHTF9OT05FfTsK
LSAgICBzdWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgID0gbUVHTC0+Y2hvb3NlQ29uZmln
KGNvbmZpZ0F0dHJpYkxpc3QsICZjb25maWcsIDEsICZudW1Db25maWcpOwotICAgIEFTU0VSVChz
dWNjZXNzICYmIG51bUNvbmZpZyA9PSAxKTsKLQotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZh
Y2VFR0woc3RhdGUsIG1FR0wsIGNvbmZpZyk7Ci19Ci0KLVN1cmZhY2VJbXBsICpEaXNwbGF5QW5k
cm9pZDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRC
dWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotU3VyZmFjZUltcGwgKkRpc3Bs
YXlBbmRyb2lkOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZz
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
LXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIENvbnRl
eHRJbXBsICpEaXNwbGF5QW5kcm9pZDo6Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6U3RhdGUgJnN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFcnJv
clNldCAqZXJyb3JTZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCkBAIC0yODAsMTczICsyMzMsNiBA
QCBDb250ZXh0SW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwKICAgICByZXR1cm4gbmV3IENvbnRleHRFR0woc3RhdGUsIGVycm9yU2V0LCBy
ZW5kZXJlcik7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBEaXNwbGF5QW5kcm9p
ZDo6Z2V0Q29uZmlnQXR0cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQg
KnZhbHVlKSBjb25zdAotewotICAgIEVHTGludCB0bXA7Ci0gICAgRUdMQm9vbGVhbiBzdWNjZXNz
ID0gbUVHTC0+Z2V0Q29uZmlnQXR0cmliKGNvbmZpZywgYXR0cmlidXRlLCAmdG1wKTsKLSAgICBB
U1NFUlQoc3VjY2VzcyA9PSBFR0xfVFJVRSk7Ci0gICAgKnZhbHVlID0gdG1wOwotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXZvaWQgRGlzcGxheUFuZHJvaWQ6OmdldENv
bmZpZ0F0dHJpYklmRXh0ZW5zaW9uKEVHTENvbmZpZyBjb25maWcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCAqdmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpl
eHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBVICZkZWZhdWx0VmFsdWUpIGNvbnN0Ci17Ci0gICAgaWYgKG1FR0wtPmhhc0V4dGVu
c2lvbihleHRlbnNpb24pKQotICAgIHsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZywg
YXR0cmlidXRlLCB2YWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgICp2YWx1
ZSA9IHN0YXRpY19jYXN0PFQ+KGRlZmF1bHRWYWx1ZSk7Ci0gICAgfQotfQotCi1lZ2w6OkNvbmZp
Z1NldCBEaXNwbGF5QW5kcm9pZDo6Z2VuZXJhdGVDb25maWdzKCkKLXsKLSAgICBlZ2w6OkNvbmZp
Z1NldCBjb25maWdTZXQ7Ci0gICAgbUNvbmZpZ0lkcy5jbGVhcigpOwotCi0gICAgRUdMaW50IG51
bUNvbmZpZ3M7Ci0gICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+Y2hvb3NlQ29uZmlnKG1D
b25maWdBdHRyaWJMaXN0LmRhdGEoKSwgbnVsbHB0ciwgMCwgJm51bUNvbmZpZ3MpOwotICAgIEFT
U0VSVChzdWNjZXNzID09IEVHTF9UUlVFICYmIG51bUNvbmZpZ3MgPiAwKTsKLQotICAgIHN0ZDo6
dmVjdG9yPEVHTENvbmZpZz4gY29uZmlncyhudW1Db25maWdzKTsKLSAgICBFR0xpbnQgbnVtQ29u
ZmlnczI7Ci0gICAgc3VjY2VzcyA9Ci0gICAgICAgIG1FR0wtPmNob29zZUNvbmZpZyhtQ29uZmln
QXR0cmliTGlzdC5kYXRhKCksIGNvbmZpZ3MuZGF0YSgpLCBudW1Db25maWdzLCAmbnVtQ29uZmln
czIpOwotICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFICYmIG51bUNvbmZpZ3MyID09IG51
bUNvbmZpZ3MpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db25maWdzOyBpKyspCi0g
ICAgewotICAgICAgICBlZ2w6OkNvbmZpZyBjb25maWc7Ci0KLSAgICAgICAgZ2V0Q29uZmlnQXR0
cmliKGNvbmZpZ3NbaV0sIEVHTF9CVUZGRVJfU0laRSwgJmNvbmZpZy5idWZmZXJTaXplKTsKLSAg
ICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9SRURfU0laRSwgJmNvbmZpZy5y
ZWRTaXplKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9HUkVFTl9T
SVpFLCAmY29uZmlnLmdyZWVuU2l6ZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfQkxVRV9TSVpFLCAmY29uZmlnLmJsdWVTaXplKTsKLSAgICAgICAgZ2V0Q29uZmln
QXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9MVU1JTkFOQ0VfU0laRSwgJmNvbmZpZy5sdW1pbmFuY2VT
aXplKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9BTFBIQV9TSVpF
LCAmY29uZmlnLmFscGhhU2l6ZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ld
LCBFR0xfQUxQSEFfTUFTS19TSVpFLCAmY29uZmlnLmFscGhhTWFza1NpemUpOwotICAgICAgICBn
ZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0IsICZjb25m
aWcuYmluZFRvVGV4dHVyZVJHQik7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ld
LCBFR0xfQklORF9UT19URVhUVVJFX1JHQkEsICZjb25maWcuYmluZFRvVGV4dHVyZVJHQkEpOwot
ICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTE9SX0JVRkZFUl9UWVBF
LCAmY29uZmlnLmNvbG9yQnVmZmVyVHlwZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25m
aWdzW2ldLCBFR0xfQ09ORklHX0NBVkVBVCwgJmNvbmZpZy5jb25maWdDYXZlYXQpOwotICAgICAg
ICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTkZJR19JRCwgJmNvbmZpZy5jb25m
aWdJRCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfQ09ORk9STUFO
VCwgJmNvbmZpZy5jb25mb3JtYW50KTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3Nb
aV0sIEVHTF9ERVBUSF9TSVpFLCAmY29uZmlnLmRlcHRoU2l6ZSk7Ci0gICAgICAgIGdldENvbmZp
Z0F0dHJpYihjb25maWdzW2ldLCBFR0xfTEVWRUwsICZjb25maWcubGV2ZWwpOwotICAgICAgICBn
ZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01BWF9QQlVGRkVSX1dJRFRILCAmY29uZmln
Lm1heFBCdWZmZXJXaWR0aCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBF
R0xfTUFYX1BCVUZGRVJfSEVJR0hULCAmY29uZmlnLm1heFBCdWZmZXJIZWlnaHQpOwotICAgICAg
ICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01BWF9QQlVGRkVSX1BJWEVMUywgJmNv
bmZpZy5tYXhQQnVmZmVyUGl4ZWxzKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3Nb
aV0sIEVHTF9NQVhfU1dBUF9JTlRFUlZBTCwgJmNvbmZpZy5tYXhTd2FwSW50ZXJ2YWwpOwotICAg
ICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01JTl9TV0FQX0lOVEVSVkFMLCAm
Y29uZmlnLm1pblN3YXBJbnRlcnZhbCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfTkFUSVZFX1JFTkRFUkFCTEUsICZjb25maWcubmF0aXZlUmVuZGVyYWJsZSk7Ci0g
ICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTkFUSVZFX1ZJU1VBTF9JRCwg
JmNvbmZpZy5uYXRpdmVWaXN1YWxJRCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFLCAmY29uZmlnLm5hdGl2ZVZpc3VhbFR5cGUpOwot
ICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1JFTkRFUkFCTEVfVFlQRSwg
JmNvbmZpZy5yZW5kZXJhYmxlVHlwZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfU0FNUExFX0JVRkZFUlMsICZjb25maWcuc2FtcGxlQnVmZmVycyk7Ci0gICAgICAg
IGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfU0FNUExFUywgJmNvbmZpZy5zYW1wbGVz
KTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9TVEVOQ0lMX1NJWkUs
ICZjb25maWcuc3RlbmNpbFNpemUpOwotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tp
XSwgRUdMX1NVUkZBQ0VfVFlQRSwgJmNvbmZpZy5zdXJmYWNlVHlwZSk7Ci0gICAgICAgIGdldENv
bmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJFTlRfVFlQRSwgJmNvbmZpZy50cmFu
c3BhcmVudFR5cGUpOwotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1RS
QU5TUEFSRU5UX1JFRF9WQUxVRSwgJmNvbmZpZy50cmFuc3BhcmVudFJlZFZhbHVlKTsKLSAgICAg
ICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxV
RSwgJmNvbmZpZy50cmFuc3BhcmVudEdyZWVuVmFsdWUpOwotICAgICAgICBnZXRDb25maWdBdHRy
aWIoY29uZmlnc1tpXSwgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUUsICZjb25maWcudHJhbnNw
YXJlbnRCbHVlVmFsdWUpOwotICAgICAgICBnZXRDb25maWdBdHRyaWJJZkV4dGVuc2lvbihjb25m
aWdzW2ldLCBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRVhULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmY29uZmlnLmNvbG9yQ29tcG9uZW50VHlwZSwgIkVHTF9FWFRfcGl4
ZWxfZm9ybWF0X2Zsb2F0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
X0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZJWEVEX0VYVCk7Ci0KLSAgICAgICAgaWYgKGNvbmZpZy5j
b2xvckJ1ZmZlclR5cGUgPT0gRUdMX1JHQl9CVUZGRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChjb25maWcuY29sb3JDb21wb25lbnRUeXBlID09IEVHTF9DT0xPUl9DT01QT05FTlRf
VFlQRV9GSVhFRF9FWFQpOwotICAgICAgICAgICAgaWYgKGNvbmZpZy5yZWRTaXplID09IDggJiYg
Y29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5ibHVlU2l6ZSA9PSA4ICYmCi0gICAgICAg
ICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSA4KQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0JBODsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5yZWRTaXplID09IDggJiYgY29uZmlnLmdy
ZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5ibHVlU2l6ZSA9PSA4ICYmCi0gICAgICAgICAgICAgICAg
ICAgICBjb25maWcuYWxwaGFTaXplID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9IEdMX1JHQjg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChjb25maWcucmVkU2l6ZSA9PSA1ICYmIGNvbmZpZy5ncmVlblNp
emUgPT0gNiAmJiBjb25maWcuYmx1ZVNpemUgPT0gNSAmJgotICAgICAgICAgICAgICAgICAgICAg
Y29uZmlnLmFscGhhU2l6ZSA9PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNv
bmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0I1NjU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmIChjb25maWcucmVkU2l6ZSA9PSA1ICYmIGNvbmZpZy5ncmVlblNpemUg
PT0gNSAmJiBjb25maWcuYmx1ZVNpemUgPT0gNSAmJgotICAgICAgICAgICAgICAgICAgICAgY29u
ZmlnLmFscGhhU2l6ZSA9PSAxKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbmZp
Zy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0I1X0ExOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAoY29uZmlnLnJlZFNpemUgPT0gNCAmJiBjb25maWcuZ3JlZW5TaXplID09
IDQgJiYgY29uZmlnLmJsdWVTaXplID09IDQgJiYKLSAgICAgICAgICAgICAgICAgICAgIGNvbmZp
Zy5hbHBoYVNpemUgPT0gNCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25maWcu
cmVuZGVyVGFyZ2V0Rm9ybWF0ID0gR0xfUkdCQTQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVJSKCkgPDwgIlJHQkEoIiA8
PCBjb25maWcucmVkU2l6ZSA8PCAiLCIgPDwgY29uZmlnLmdyZWVuU2l6ZSA8PCAiLCIKLSAgICAg
ICAgICAgICAgICAgICAgICA8PCBjb25maWcuYmx1ZVNpemUgPDwgIiwiIDw8IGNvbmZpZy5hbHBo
YVNpemUgPDwgIikgbm90IGhhbmRsZWQiOwotICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbmZpZy5k
ZXB0aFNpemUgPT0gMCAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX1pFUk87Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAxNiAmJiBjb25maWcuc3RlbmNp
bFNpemUgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZv
cm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDE2OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGNvbmZpZy5kZXB0aFNpemUgPT0gMjQgJiYgY29uZmlnLnN0ZW5jaWxTaXplID09IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9D
T01QT05FTlQyNDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjb25maWcuZGVwdGhTaXpl
ID09IDI0ICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSA4KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMODsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChjb25maWcuZGVwdGhTaXplID09IDAgJiYgY29uZmlnLnN0
ZW5jaWxTaXplID09IDgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5j
aWxGb3JtYXQgPSBHTF9TVEVOQ0lMX0lOREVYODsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25maWcubWF0Y2hOYXRpdmVQaXhtYXAgID0gRUdMX05PTkU7Ci0gICAgICAgIGNvbmZpZy5v
cHRpbWFsT3JpZW50YXRpb24gPSAwOwotCi0gICAgICAgIGludCBpbnRlcm5hbElkICAgICAgICAg
PSBjb25maWdTZXQuYWRkKGNvbmZpZyk7Ci0gICAgICAgIG1Db25maWdJZHNbaW50ZXJuYWxJZF0g
PSBjb25maWcuY29uZmlnSUQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbmZpZ1NldDsKLX0KLQot
Ym9vbCBEaXNwbGF5QW5kcm9pZDo6dGVzdERldmljZUxvc3QoKQotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9pZDo6cmVzdG9yZUxvc3REZXZpY2UoY29u
c3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KIGJvb2wgRGlzcGxheUFuZHJvaWQ6OmlzVmFsaWRO
YXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEFOYXRpdmVXaW5kb3dfZ2V0Rm9ybWF0KHdpbmRvdykgPj0gMDsKQEAgLTQ4MywyNCArMjY5
LDYgQEAgRXh0ZXJuYWxJbWFnZVNpYmxpbmdJbXBsICpEaXNwbGF5QW5kcm9pZDo6Y3JlYXRlRXh0
ZXJuYWxJbWFnZVNpYmxpbmcoCiAgICAgfQogfQogCi1EZXZpY2VJbXBsICpEaXNwbGF5QW5kcm9p
ZDo6Y3JlYXRlRGV2aWNlKCkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLWVnbDo6RXJyb3IgRGlzcGxheUFuZHJvaWQ6OndhaXRDbGllbnQoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBlZ2w6Ok5vRXJyb3IoKTsKLX0KLQotZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9pZDo6d2FpdE5h
dGl2ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgRUdMaW50IGVuZ2luZSkKLXsKLSAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQotCiBlZ2w6OkVy
cm9yIERpc3BsYXlBbmRyb2lkOjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpy
ZWFkU3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0KQpAQCAtNTYwLDE0ICszMjgsOSBAQCBlZ2w6OkVycm9yIERpc3BsYXlB
bmRyb2lkOjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAogICAgIHJldHVy
biBEaXNwbGF5R0w6Om1ha2VDdXJyZW50KGRyYXdTdXJmYWNlLCByZWFkU3VyZmFjZSwgY29udGV4
dCk7CiB9CiAKLWdsOjpWZXJzaW9uIERpc3BsYXlBbmRyb2lkOjpnZXRNYXhTdXBwb3J0ZWRFU1Zl
cnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBtUmVuZGVyZXItPmdldE1heFN1cHBvcnRlZEVT
VmVyc2lvbigpOwotfQotCiB2b2lkIERpc3BsYXlBbmRyb2lkOjpkZXN0cm95TmF0aXZlQ29udGV4
dChFR0xDb250ZXh0IGNvbnRleHQpCiB7Ci0gICAgbUVHTC0+ZGVzdHJveUNvbnRleHQoY29udGV4
dCk7CisgICAgRGlzcGxheUVHTDo6ZGVzdHJveU5hdGl2ZUNvbnRleHQoY29udGV4dCk7CiAKICAg
ICAvLyBJZiB0aGlzIGNvbnRleHQgaXMgY3VycmVudCwgcmVtb3ZlIGl0IGZyb20gdGhlIHRyYWNr
aW5nIG9mIGN1cnJlbnQgY29udGV4dHMgdG8gbWFrZSBzdXJlIHdlCiAgICAgLy8gZG9uJ3QgdHJ5
IHRvIG1ha2UgaXQgY3VycmVudCBhZ2Fpbi4KQEAgLTU4MywxOCArMzQ2LDExIEBAIHZvaWQgRGlz
cGxheUFuZHJvaWQ6OmRlc3Ryb3lOYXRpdmVDb250ZXh0KEVHTENvbnRleHQgY29udGV4dCkKIAog
dm9pZCBEaXNwbGF5QW5kcm9pZDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVu
c2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7CisgICAgRGlzcGxheUVHTDo6Z2VuZXJhdGVF
eHRlbnNpb25zKG91dEV4dGVuc2lvbnMpOworCiAgICAgLy8gU3VyZmFjZWxlc3MgY2FuIGJlIHN1
cHBvcnQgaWYgdGhlIG5hdGl2ZSBkcml2ZXIgc3VwcG9ydHMgaXQgb3Igd2Uga25vdyB0aGF0IHdl
IGFyZSBydW5uaW5nIG9uCiAgICAgLy8gYSBzaW5nbGUgdGhyZWFkIChtVmlydHVhbGl6ZWRDb250
ZXh0cyA9PSB0cnVlKQogICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VsZXNzQ29udGV4dCA9IG1T
dXBwb3J0c1N1cmZhY2VsZXNzIHx8IG1WaXJ0dWFsaXplZENvbnRleHRzOwotCi0gICAgRGlzcGxh
eUVHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKG91dEV4dGVuc2lvbnMpOwotfQotCi1lZ2w6OkVycm9y
IERpc3BsYXlBbmRyb2lkOjptYWtlQ3VycmVudFN1cmZhY2VsZXNzKGdsOjpDb250ZXh0ICpjb250
ZXh0KQotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gYmVjYXVzZSBFR0wgYWx3YXlzIHVzZXMgdGhl
IHNhbWUgY29udGV4dCBhbmQgdGhlIHByZXZpb3VzIHN1cmZhY2UgY2FuIGJlIGxlZnQKLSAgICAv
LyBjdXJyZW50LgotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZWdsOjpFcnJvciBE
aXNwbGF5QW5kcm9pZDo6Y3JlYXRlUmVuZGVyZXIoRUdMQ29udGV4dCBzaGFyZUNvbnRleHQsCkBA
IC02OTAsMTQgKzQ0Niw0IEBAIFdvcmtlckNvbnRleHQgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVX
b3JrZXJDb250ZXh0KHN0ZDo6c3RyaW5nICppbmZvTG9nLAogICAgIHJldHVybiBuZXcgV29ya2Vy
Q29udGV4dEFuZHJvaWQoY29udGV4dCwgbUVHTCwgbUR1bW15UGJ1ZmZlcik7CiB9CiAKLXZvaWQg
RGlzcGxheUFuZHJvaWQ6OmluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKGFuZ2xlOjpGcm9udGVu
ZEZlYXR1cmVzICpmZWF0dXJlcykgY29uc3QKLXsKLSAgICBtUmVuZGVyZXItPmluaXRpYWxpemVG
cm9udGVuZEZlYXR1cmVzKGZlYXR1cmVzKTsKLX0KLQotdm9pZCBEaXNwbGF5QW5kcm9pZDo6cG9w
dWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVyZUxpc3QgKmZlYXR1cmVzKQotewotICAgIG1S
ZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5wb3B1bGF0ZUZlYXR1cmVMaXN0KGZlYXR1cmVzKTsKLX0K
LQogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5k
cm9pZC9EaXNwbGF5QW5kcm9pZC5oCmluZGV4IDhkZmI3NWVlYjE3YmFkMjBkMTI2ZDc2NDFlOWUz
YzMzOTVjOThmODMuLjk2YzFhZTE4MTE0ODJlZmZiMTQyYjhlMzVmMzg2OGU0NzBlNjMyZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5o
CkBAIC0zMCwzMCArMzAsMTIgQEAgY2xhc3MgRGlzcGxheUFuZHJvaWQgOiBwdWJsaWMgRGlzcGxh
eUVHTAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92
ZXJyaWRlOwogICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CiAKLSAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQ
YnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRC
dWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGll
bnRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKLSAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBu
YXRpdmVQaXhtYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotCiAgICAgQ29udGV4dEltcGwg
KmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6RXJyb3JTZXQgKmVycm9yU2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkg
b3ZlcnJpZGU7Ci0KLSAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7Ci0gICAgZWds
OjpFcnJvciByZXN0b3JlTG9zdERldmljZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92
ZXJyaWRlOwotCiAgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHZhbGlkYXRlSW1hZ2VD
bGllbnRCdWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LApAQCAtNjUsMjcgKzQ3LDE2
IEBAIGNsYXNzIERpc3BsYXlBbmRyb2lkIDogcHVibGljIERpc3BsYXlFR0wKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1
ZmZlciBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7
CiAKLSAgICBEZXZpY2VJbXBsICpjcmVhdGVEZXZpY2UoKSBvdmVycmlkZTsKLQotICAgIGVnbDo6
RXJyb3Igd2FpdENsaWVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7Ci0g
ICAgZWdsOjpFcnJvciB3YWl0TmF0aXZlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xp
bnQgZW5naW5lKSBvdmVycmlkZTsKLQogICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoZWdsOjpT
dXJmYWNlICpkcmF3U3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3Vy
ZmFjZSAqcmVhZFN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRF
U1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKLQogICAgIHZvaWQgZGVzdHJveU5hdGl2ZUNvbnRl
eHQoRUdMQ29udGV4dCBjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIFdvcmtlckNvbnRleHQgKmNy
ZWF0ZVdvcmtlckNvbnRleHQoc3RkOjpzdHJpbmcgKmluZm9Mb2csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IHNoYXJlZENvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYXRpdmVfZWdsOjpBdHRyaWJ1
dGVWZWN0b3Igd29ya2VyQXR0cmlicykgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGluaXRpYWxpemVG
cm9udGVuZEZlYXR1cmVzKGFuZ2xlOjpGcm9udGVuZEZlYXR1cmVzICpmZWF0dXJlcykgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHBvcHVsYXRlRmVhdHVyZUxpc3QoYW5nbGU6OkZlYXR1cmVM
aXN0ICpmZWF0dXJlcykgb3ZlcnJpZGU7Ci0KICAgcHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRl
RXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtOTMsMjcgKzY0LDEwIEBAIGNsYXNzIERpc3BsYXlBbmRyb2lkIDogcHVi
bGljIERpc3BsYXlFR0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWFrZU5l
d0NvbnRleHRDdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaGFy
ZWRfcHRyPFJlbmRlcmVyRUdMPiAqb3V0UmVuZGVyZXIpOwogCi0gICAgZWdsOjpFcnJvciBtYWtl
Q3VycmVudFN1cmZhY2VsZXNzKGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLQotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgZ2V0Q29uZmlnQXR0cmliKEVHTENvbmZp
ZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQgKnZhbHVlKSBjb25zdDsKLQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIHZvaWQgZ2V0Q29uZmlnQXR0cmliSWZF
eHRlbnNpb24oRUdMQ29uZmlnIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmV4dGVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFUgJmRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0KICAgICBib29sIG1WaXJ0dWFsaXplZENvbnRl
eHRzOwotICAgIHN0ZDo6c2hhcmVkX3B0cjxSZW5kZXJlckVHTD4gbVJlbmRlcmVyOwotCi0gICAg
ZWdsOjpBdHRyaWJ1dGVNYXAgbURpc3BsYXlBdHRyaWJ1dGVzOwogCiAgICAgYm9vbCBtU3VwcG9y
dHNTdXJmYWNlbGVzczsKIAotICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gbUNvbmZpZ0F0dHJpYkxp
c3Q7Ci0gICAgc3RkOjptYXA8RUdMaW50LCBFR0xpbnQ+IG1Db25maWdJZHM7CiAgICAgRUdMU3Vy
ZmFjZSBtRHVtbXlQYnVmZmVyOwogCiAgICAgc3RydWN0IEN1cnJlbnROYXRpdmVDb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAKaW5kZXgg
NDZlNmIzZTAyMWJjNTc3YzAyMjA3ODcxNzFkZTAyNWVjNjlhZjBiYS4uNWM4NjFiNDkyMjkxNDdl
NjdhMTZkODlkODc2NmZmMTA1ZGRiNWM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9l
Z2wvb3pvbmUvRGlzcGxheU96b25lLmNwcApAQCAtMzUxLDcgKzM1MSw2IEBAIGJvb2wgRGlzcGxh
eU96b25lOjpCdWZmZXI6OmNyZWF0ZVJlbmRlcmJ1ZmZlcnMoKQogCiBEaXNwbGF5T3pvbmU6OkRp
c3BsYXlPem9uZShjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCiAgICAgOiBEaXNwbGF5
RUdMKHN0YXRlKSwKLSAgICAgIG1SZW5kZXJlcihudWxscHRyKSwKICAgICAgIG1HQk0obnVsbHB0
ciksCiAgICAgICBtQ29ubmVjdG9yKG51bGxwdHIpLAogICAgICAgbU1vZGUobnVsbHB0ciksCkBA
IC05MTEsMjMgKzkxMCw2IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5T3pvbmU6OmNyZWF0ZVBidWZm
ZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKICAgICByZXR1cm4gbmV3
IFN1cmZhY2VPem9uZShzdGF0ZSwgYnVmZmVyKTsKIH0KIAotU3VyZmFjZUltcGwgKkRpc3BsYXlP
em9uZTo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotU3VyZmFjZUltcGwgKkRpc3BsYXlPem9u
ZTo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1h
cFR5cGUgbmF0aXZlUGl4bWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKLXsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIENvbnRleHRJbXBsICpEaXNw
bGF5T3pvbmU6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkVycm9yU2V0ICplcnJvclNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCkBAIC05MzgsMTAgKzkyMCwxMSBAQCBDb250ZXh0SW1wbCAqRGlz
cGxheU96b25lOjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCiAgICAgcmV0
dXJuIG5ldyBDb250ZXh0RUdMKHN0YXRlLCBlcnJvclNldCwgbVJlbmRlcmVyKTsKIH0KIAotRGV2
aWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVEZXZpY2UoKQorZWdsOjpFcnJvciBEaXNwbGF5
T3pvbmU6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCkK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IERpc3BsYXlHTDo6bWFrZUN1cnJlbnQoZHJhd1N1cmZhY2UsIHJlYWRTdXJmYWNlLCBjb250ZXh0
KTsKIH0KIAogZWdsOjpDb25maWdTZXQgRGlzcGxheU96b25lOjpnZW5lcmF0ZUNvbmZpZ3MoKQpA
QCAtOTY1LDQ0ICs5NDgsMTEgQEAgZWdsOjpDb25maWdTZXQgRGlzcGxheU96b25lOjpnZW5lcmF0
ZUNvbmZpZ3MoKQogICAgIHJldHVybiBjb25maWdzOwogfQogCi1ib29sIERpc3BsYXlPem9uZTo6
dGVzdERldmljZUxvc3QoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotZWdsOjpFcnJvciBE
aXNwbGF5T3pvbmU6OnJlc3RvcmVMb3N0RGV2aWNlKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxh
eSkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RWdsQmFkRGlzcGxh
eSgpOwotfQotCiBib29sIERpc3BsYXlPem9uZTo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotZWds
OjpFcnJvciBEaXNwbGF5T3pvbmU6OndhaXRDbGllbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpCi17Ci0gICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgdGhpcy4KLSAgICByZXR1
cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWVnbDo6RXJyb3IgRGlzcGxheU96b25lOjp3YWl0TmF0
aXZlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgZW5naW5lKQotewotICAgIC8v
IFRPRE8oZmpoZW5pZ21hbikgSW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuIGVnbDo6Tm9FcnJv
cigpOwotfQotCi1nbDo6VmVyc2lvbiBEaXNwbGF5T3pvbmU6OmdldE1heFN1cHBvcnRlZEVTVmVy
c2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4U3VwcG9ydGVkRVNW
ZXJzaW9uKCk7Ci19Ci0KLXZvaWQgRGlzcGxheU96b25lOjpkZXN0cm95TmF0aXZlQ29udGV4dChF
R0xDb250ZXh0IGNvbnRleHQpCi17Ci0gICAgbUVHTC0+ZGVzdHJveUNvbnRleHQoY29udGV4dCk7
Ci19Ci0KIHZvaWQgRGlzcGxheU96b25lOjpzZXRTd2FwSW50ZXJ2YWwoRUdMU3VyZmFjZSBkcmF3
YWJsZSwgU3dhcENvbnRyb2xEYXRhICpkYXRhKQogewogICAgIEFTU0VSVChkYXRhICE9IG51bGxw
dHIpOwpAQCAtMTAxMCwxNiArOTYwLDEwIEBAIHZvaWQgRGlzcGxheU96b25lOjpzZXRTd2FwSW50
ZXJ2YWwoRUdMU3VyZmFjZSBkcmF3YWJsZSwgU3dhcENvbnRyb2xEYXRhICpkYXRhKQogCiB2b2lk
IERpc3BsYXlPem9uZTo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMg
Km91dEV4dGVuc2lvbnMpIGNvbnN0CiB7Ci0gICAgLy8gU3VyZmFjZWxlc3MgY29udGV4dHMgYXJl
IGVtdWxhdGVkIGV2ZW4gaWYgdGhlcmUgaXMgbm8gbmF0aXZlIHN1cHBvcnQuCi0gICAgb3V0RXh0
ZW5zaW9ucy0+c3VyZmFjZWxlc3NDb250ZXh0ID0gdHJ1ZTsKLQogICAgIERpc3BsYXlFR0w6Omdl
bmVyYXRlRXh0ZW5zaW9ucyhvdXRFeHRlbnNpb25zKTsKLX0KIAotZWdsOjpFcnJvciBEaXNwbGF5
T3pvbmU6Om1ha2VDdXJyZW50U3VyZmFjZWxlc3MoZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0g
ICAgLy8gTm90aGluZyB0byBkbywgaGFuZGxlZCBpbiB0aGUgR0wgbGF5ZXJzCi0gICAgcmV0dXJu
IGVnbDo6Tm9FcnJvcigpOworICAgIC8vIFN1cmZhY2VsZXNzIGNvbnRleHRzIGFyZSBlbXVsYXRl
ZCBldmVuIGlmIHRoZXJlIGlzIG5vIG5hdGl2ZSBzdXBwb3J0LgorICAgIG91dEV4dGVuc2lvbnMt
PnN1cmZhY2VsZXNzQ29udGV4dCA9IHRydWU7CiB9CiAKIGNsYXNzIFdvcmtlckNvbnRleHRPem9u
ZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJDb250ZXh0CkBAIC0xMDczLDE0ICsxMDE3LDQgQEAgV29y
a2VyQ29udGV4dCAqRGlzcGxheU96b25lOjpjcmVhdGVXb3JrZXJDb250ZXh0KHN0ZDo6c3RyaW5n
ICppbmZvTG9nLAogICAgIHJldHVybiBuZXcgV29ya2VyQ29udGV4dE96b25lKGNvbnRleHQsIG1F
R0wpOwogfQogCi12b2lkIERpc3BsYXlPem9uZTo6aW5pdGlhbGl6ZUZyb250ZW5kRmVhdHVyZXMo
YW5nbGU6OkZyb250ZW5kRmVhdHVyZXMgKmZlYXR1cmVzKSBjb25zdAotewotICAgIG1SZW5kZXJl
ci0+aW5pdGlhbGl6ZUZyb250ZW5kRmVhdHVyZXMoZmVhdHVyZXMpOwotfQotCi12b2lkIERpc3Bs
YXlPem9uZTo6cG9wdWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVyZUxpc3QgKmZlYXR1cmVz
KQotewotICAgIG1SZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5wb3B1bGF0ZUZlYXR1cmVMaXN0KGZl
YXR1cmVzKTsKLX0KLQogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlP
em9uZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaAppbmRleCBkZGYxMzNhNWJlNTYyODMwYTFhZTg0OTA3
YTM4MjQyMWNiNWJlYTdlLi42MTliMTIxNTFhNzZjNTMyZjJmYTEzYmQwZjM0NDM3ODI4Y2QzZmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgKQEAg
LTEyMCwxMyArMTIwLDYgQEAgY2xhc3MgRGlzcGxheU96b25lIGZpbmFsIDogcHVibGljIERpc3Bs
YXlFR0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBi
dWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1
ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVu
dEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJ
bXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5h
dGl2ZVBpeG1hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKICAgICBDb250ZXh0SW1wbCAq
Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpFcnJvclNldCAqZXJyb3JTZXQsCkBAIC0xMzQsMjIgKzEyNywxNCBA
QCBjbGFzcyBEaXNwbGF5T3pvbmUgZmluYWwgOiBwdWJsaWMgRGlzcGxheUVHTAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkg
b3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdT
dXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3Vy
ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KSBv
dmVycmlkZTsKIAotICAgIGJvb2wgdGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKLSAgICBlZ2w6
OkVycm9yIHJlc3RvcmVMb3N0RGV2aWNlKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3Zl
cnJpZGU7CisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRGV2aWNlSW1wbCAqY3JlYXRlRGV2aWNlKCkgb3ZlcnJp
ZGU7Ci0KLSAgICBlZ2w6OkVycm9yIHdhaXRDbGllbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpIG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3Igd2FpdE5hdGl2ZShjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwgRUdMaW50IGVuZ2luZSkgb3ZlcnJpZGU7Ci0KLSAgICBnbDo6VmVyc2lvbiBn
ZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgZGVz
dHJveU5hdGl2ZUNvbnRleHQoRUdMQ29udGV4dCBjb250ZXh0KSBvdmVycmlkZTsKLQogICAgIC8v
IFRPRE8oZmpoZW5pZ21hbikgSW1wbGVtZW50IHRoaXMuCiAgICAgLy8gU3dhcCBpbnRlcnZhbCBj
YW4gYmUgc2V0IGdsb2JhbGx5IG9yIHBlciBkcmF3YWJsZS4KICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHdpbGwgbWFrZSBzdXJlIHRoZSBkcmF3YWJsZSdzIHN3YXAgaW50ZXJ2YWwgaXMgdGhlCkBAIC0x
NjAsMTUgKzE0NSw5IEBAIGNsYXNzIERpc3BsYXlPem9uZSBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5
RUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IHNo
YXJlZENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBuYXRpdmVfZWdsOjpBdHRyaWJ1dGVWZWN0b3Igd29ya2VyQXR0cmlicykgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKGFuZ2xlOjpGcm9udGVuZEZlYXR1
cmVzICpmZWF0dXJlcykgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHBvcHVsYXRlRmVhdHVy
ZUxpc3QoYW5nbGU6OkZlYXR1cmVMaXN0ICpmZWF0dXJlcykgb3ZlcnJpZGU7Ci0KICAgcHJpdmF0
ZToKICAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpv
dXRFeHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJl
bnRTdXJmYWNlbGVzcyhnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7Ci0KICAgICBHTHVp
bnQgbWFrZVNoYWRlcihHTHVpbnQgdHlwZSwgY29uc3QgY2hhciAqc3JjKTsKICAgICB2b2lkIGRy
YXdCdWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEJ1ZmZlciAqYnVmZmVyKTsKICAg
ICB2b2lkIGRyYXdXaXRoVGV4dHVyZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgQnVmZmVy
ICpidWZmZXIpOwpAQCAtMTgyLDggKzE2MSw2IEBAIGNsYXNzIERpc3BsYXlPem9uZSBmaW5hbCA6
IHB1YmxpYyBEaXNwbGF5RUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KmRhdGEpOwogICAgIHZvaWQgcGFnZUZsaXBIYW5kbGVyKHVuc2lnbmVkIGludCBzZXF1ZW5jZSwg
dWludDY0X3QgdHYpOwogCi0gICAgc3RkOjpzaGFyZWRfcHRyPFJlbmRlcmVyRUdMPiBtUmVuZGVy
ZXI7Ci0KICAgICBnYm1fZGV2aWNlICptR0JNOwogICAgIGRybU1vZGVDb25uZWN0b3JQdHIgbUNv
bm5lY3RvcjsKICAgICBkcm1Nb2RlTW9kZUluZm9QdHIgbU1vZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNn
bC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Zm9ybWF0dXRpbHNnbC5jcHAKaW5kZXggZDQzNTIyODM2NjEyZDM3YzkyMTdjMGRlYWMwZDY1YTBi
Zjg4OGJkMS4uNTcwYmE0OTUzNTFiYzVmM2VkN2U2ZWY3ODBhNzk4YjYxMmQwZDQ5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zv
cm1hdHV0aWxzZ2wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRp
YyBJbnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJbnRlcm5hbEZvcm1hdEluZm9NYXAoKQogICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgIHwgT3Bl
bkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCByZW5kZXIgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0
ICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBhdHRhY2htZW50IHN1cHBvcnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIEVTIHJlbmRlcmJ1ZmZlciBzdXBwb3J0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAgICAgVmVyc2lvbk9ubHkoMSwgNSks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMSwgNSwgIkdM
X0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgyLCAwKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9u
T25seSgyLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfREVQVEhfQ09NUE9ORU5UMjQsICAgICBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3Rl
eHR1cmUiKSwgVmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZlcnNpb25Pbmx5KDIsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDIsIDApLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJz
aW9uT25seSgyLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01Q
T05FTlQzMl9PRVMsIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpLCBWZXJz
aW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0c09ubHko
IkdMX09FU19kZXB0aF90ZXh0dXJlIiksICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXh0c09ubHkoIkdMX09FU19kZXB0aDMyIiksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNf
ZGVwdGgzMiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywg
VmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoMSwgNSwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDEsIDUp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRzT25seSgiR0xfT0VTX2RlcHRo
X3RleHR1cmUiKSwgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFeHRzT25seSgiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0c09ubHkoIkdMX09FU19kZXB0aDMyIikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9BUkJfZGVwdGhfYnVmZmVyX2Zsb2F0IiksICAgQWx3YXlzU3VwcG9ydGVkKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2Rl
cHRoX2J1ZmZlcl9mbG9hdCIpLCAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIiksIFZl
cnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9TVEVOQ0lMX0lOREVYOCwgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiKSwgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZlcnNpb25Pbmx5KDIsIDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRI
MjRfU1RFTkNJTDgsICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2ZyYW1lYnVmZmVy
X29iamVjdCIpLCAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiks
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9mcmFtZWJ1ZmZlcl9vYmplY3QiKSwgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNf
ZGVwdGhfdGV4dHVyZSBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSwgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUgR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikpOwpAQCAtMjg2LDYgKzI4NiwxMyBAQCBzdGF0aWMgSW50ZXJuYWxGb3JtYXRJbmZvTWFwIEJ1
aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCkKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0xVTUlOQU5DRTMyRl9FWFQsICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90
ZXh0dXJlX2Zsb2F0IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRz
T25seSgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSwgICAgICBFeHRzT25seSgiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiksICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCwgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIEV4dHNPbmx5KCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpLCAgICAgIEV4dHNPbmx5
KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSwgICAgICBOZXZlclN1cHBvcnRlZCgpLCAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICk7CiAK
KyAgICAvLyBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIGZvcm1hdHMKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVy
ZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgT3BlbkdMIEVT
IHRleHR1cmUgYXR0YWNobWVudCBzdXBwb3J0IHwgT3BlbkdMIEVTIHJlbmRlcmJ1ZmZlciBzdXBw
b3J0IHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkVEX1JH
VEMxX0VYVCwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhULCAgICAgICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiksIEFsd2F5c1N1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
cmd0YyIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhULCAgICAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIp
LCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQsIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X2NvbXByZXNzaW9uX3JndGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICk7CisKICAgICAvLyBFWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9icHRjIGZvcm1hdHMKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgUmVuZGVy
ICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgIHwg
RmlsdGVyICAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIGF0dGFjaG1lbnQgc3VwcG9ydCB8
IE9wZW5HTCBFUyByZW5kZXJidWZmZXIgc3VwcG9ydCB8CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQsICAgICAgICAgVmVyc2lv
bk9yRXh0cyg0LCAyLCAiR0xfQVJCX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX2JwdGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgKTsKQEAg
LTMwNyw0OSArMzE0LDU2IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJbnRl
cm5hbEZvcm1hdEluZm9NYXAoKQogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMsICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwg
MywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJT
dXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiT0VTX2NvbXByZXNzZWRfRVRDMl9zUkdC
OF9hbHBoYThfdGV4dHVyZSIpLCAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAg
ICAgICAgICAgKTsKIAogICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0
MQotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAg
ICAgfCBGaWx0ZXIgICAgICAgICAgIHwgUmVuZGVyICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1
cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgT3BlbkdM
IEVTIHRleHR1cmUgYXR0YWNobWVudCBzdXBwb3J0IHwgT3BlbkdMIEVTIHJlbmRlcmJ1ZmZlciBz
dXBwb3J0IHwKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdC
X1MzVENfRFhUMV9FWFQsICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjIiksICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHko
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAg
ICAgICAgICAgICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsICAgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpLCAgIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICk7CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwg
Rm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9y
dCAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAg
ICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICB8IE9wZW5H
TCBFUyB0ZXh0dXJlIGF0dGFjaG1lbnQgc3VwcG9ydCB8IE9wZW5HTCBFUyByZW5kZXJidWZmZXIg
c3VwcG9ydCB8CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhULCAgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIiwgIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQsICAgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICAgIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0MSIsICJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiks
ICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIEZyb20gR0xf
QU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzCi0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCBFeHRzT25seSgiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMi
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUsIEV4dHNPbmx5
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiksICAgICBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyIsICJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICk7CiAKICAgICAvLyBGcm9tIEdMX0FOR0xFX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0NQotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCgpICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBFeHRzT25seSgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIEV4dHNPbmx5KCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiLCAiR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJT
dXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAg
ICAgICAgICApOworCisgICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3Rj
X3NyZ2IKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgUmVuZGVyICAg
ICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBG
aWx0ZXIgICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgYXR0YWNobWVudCBzdXBwb3J0IHwg
T3BlbkdMIEVTIHJlbmRlcmJ1ZmZlciBzdXBwb3J0IHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhULCAgICAgICBFeHRzT25seSgi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyBHTF9FWFRfdGV4dHVyZV9zUkdCIiksIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1
cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIiwgIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Mz
dGMgR0xfTlZfc1JHQl9mb3JtYXRzIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQxX0VYVCwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Mz
dGMgR0xfRVhUX3RleHR1cmVfc1JHQiIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIsICJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIEdMX05WX3NSR0JfZm9ybWF0cyIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQsIEV4dHNPbmx5KCJH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIEdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgQWx3
YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiLCAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YyBHTF9OVl9zUkdCX2Zvcm1hdHMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDVfRVhULCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YyBHTF9FWFRfdGV4dHVyZV9zUkdCIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIiwgIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMgR0xfTlZfc1JHQl9mb3JtYXRzIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICk7CiAKICAgICAvLyBGcm9tIEdMX09FU19jb21w
cmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9FVEMxX1JHQjhfT0VTLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJH
TF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90
ZXh0dXJlIiksICAgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICk7CiAKICAg
ICAvLyBGcm9tIEdMX09FU190ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGMKLSAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBPcGVuR0wgdGV4dHVyZSAgIHwgRmlsdGVyICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgfCBP
cGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAg
ICAgICAgICB8IEVTIGF0dGFjaG1lbnQgICB8IEVTIHJlbmRlcmJ1ZmZlciB8Ci0gICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSLCAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIs
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwg
QWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1
X0tIUiwgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xk
ciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q182eDVfS0hSLCAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzZ4Nl9LSFIsICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfOHg1X0tIUiwgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21w
cmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSLCAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9L
SFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiwgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHko
IkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSLCAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRz
T25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLCAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIs
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEy
X0tIUiwgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIi
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ180eDRfS0hSLCAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzV4NF9LSFIsICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiwgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLCAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9j
b21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsICAgTmV2ZXJTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwgICBOZXZlclN1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLCAgIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsICAgTmV2
ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09u
bHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIs
ICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2
X0tIUiwgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEweDhfS0hSLCAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsK
LSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfMTB4MTBfS0hSLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19s
ZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ18xMngxMF9LSFIsIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9h
c3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRleHR1cmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAgICAg
ICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgIHwgRmls
dGVyICAgICAgICAgICB8IEVTIGF0dGFjaG1lbnQgICB8IEVTIHJlbmRlcmJ1ZmZlciB8CisgICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
LCAgICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRy
IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiwgICAgICAgICAgIEV4dHNPbmx5
KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzV4NV9LSFIsICAgICAgICAgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29t
cHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSLCAg
ICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiwgICAgICAgICAgIEV4dHNPbmx5KCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzh4NV9LSFIsICAgICAgICAgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4
dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBw
b3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSLCAgICAg
ICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUiwgICAgICAgICAgIEV4dHNPbmx5KCJHTF9L
SFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
bGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDVfS0hSLCAgICAgICAgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNP
bmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiwgICAgICAg
ICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIsICAgICAgICAgIEV4dHNPbmx5KCJHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJT
dXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRy
IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzEweDEwX0tIUiwgICAgICAgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5
KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIsICAgICAgICAg
RXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29t
cHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSLCAgICAgICAgIEV4dHNPbmx5KCJHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsK
KyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNHg0X0tIUiwgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsICAgRXh0
c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSLCAgIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNng1X0tIUiwgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19s
ZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9L
SFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsICAgRXh0c09u
bHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSLCAgIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9j
b21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
OHg2X0tIUiwgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIi
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsICAgRXh0c09ubHko
IkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiwgIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21w
cmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwg
RXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
Nl9LSFIsICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwg
QWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSLCAgRXh0c09ubHkoIkdM
X0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBO
ZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVz
c2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0
c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBf
S0hSLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3
YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiwgRXh0c09ubHkoIkdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19s
ZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCkpOwogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfM3gzeDNfT0VTLCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9PRVNfdGV4dHVyZV9jb21wcmVzc2lvbl9h
c3RjIiksICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ180eDN4M19PRVMsICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX09FU190ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGMiKSwgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpKTsKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzR4NHgzX09FUywgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfT0VTX3RleHR1cmVfY29t
cHJlc3Npb25fYXN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCkpOwpAQCAtNTgzLDYgKzU5NywxNSBAQCBzdGF0aWMgR0xlbnVtIEdl
dE5hdGl2ZUNvbXByZXNzZWRGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGlmIChmZWF0dXJlcy5hdm9pZERYVDFzUkdCVGV4dHVyZUZv
cm1hdC5lbmFibGVkKQorICAgIHsKKyAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9DT01QUkVTU0VE
X1NSR0JfUzNUQ19EWFQxX0VYVCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUGFzcyBHTF9D
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCBpbnN0ZWFkIHRvIHdvcmthcm91bmQg
ZHJpdmVyIGJ1Zy4KKyAgICAgICAgICAgIHJlc3VsdCA9IEdMX0NPTVBSRVNTRURfU1JHQl9BTFBI
QV9TM1RDX0RYVDFfRVhUOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtNzI4LDggKzc1MSwxOCBAQCBUZXhTdG9yYWdlRm9ybWF0IEdldFRleFN0b3JhZ2VG
b3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQpCiB7CiAgICAgVGV4U3RvcmFn
ZUZvcm1hdCByZXN1bHQ7Ci0gICAgcmVzdWx0LmludGVybmFsRm9ybWF0ID0gR2V0TmF0aXZlSW50
ZXJuYWxGb3JtYXQoZnVuY3Rpb25zLCBmZWF0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdElu
Zm8oaW50ZXJuYWxGb3JtYXQpKTsKKyAgICAvLyBUZXhTdG9yYWdlIGVudHJ5cG9pbnRzIGFjY2Vw
dCBib3RoIGNvbXByZXNzZWQgYW5kIHVuY29tcHJlc3NlZCBmb3JtYXRzLgorICAgIC8vIEFsbCBj
b21wcmVzc2VkIGZvcm1hdHMgYXJlIHNpemVkLgorICAgIGdsOjpJbnRlcm5hbEZvcm1hdCBzaXpl
ZEZvcm1hdEluZm8gPSBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3Jt
YXQpOworICAgIGlmIChzaXplZEZvcm1hdEluZm8uY29tcHJlc3NlZCkKKyAgICB7CisgICAgICAg
IHJlc3VsdC5pbnRlcm5hbEZvcm1hdCA9IEdldE5hdGl2ZUNvbXByZXNzZWRGb3JtYXQoZnVuY3Rp
b25zLCBmZWF0dXJlcywgaW50ZXJuYWxGb3JtYXQpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXN1bHQuaW50ZXJuYWxGb3JtYXQgPSBHZXROYXRpdmVJbnRlcm5hbEZvcm1hdChm
dW5jdGlvbnMsIGZlYXR1cmVzLCBzaXplZEZvcm1hdEluZm8pOworICAgIH0KKwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNnbF90eXBlZGVmcy5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZz
LmgKaW5kZXggMmE4NmI3Nzc4NDhmYjhjNGJjYWVhNjkzZDZjZjkyYTFiMDg1ODk0MC4uNWYyYzEz
ODliOTdlN2EwZTJhZGFlMGNjZDBhY2U0NWQzNzBkN2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVk
ZWZzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgKQEAgLTE3MjYsMTEyICsxNzI2LDYgQEAgdHlwZWRl
ZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEVHTElNQUdFVEFSR0VUUkVOREVSQlVG
RkVSU1RPUkFHRU9FU1BST0MKICAgICBHTGVudW0gdGFyZ2V0LAogICAgIEdMZWdsSW1hZ2VPRVMg
aW1hZ2UpOwogCi0vLyBOVl9wYXRoX3JlbmRlcmluZyAob3JpZ2luYWxseSB3cml0dGVuIGFnYWlu
c3QgMy4yIGNvbXBhdGliaWxpdHkgcHJvZmlsZSkKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9B
UElFTlRSWSAqUEZOR0xNQVRSSVhMT0FERkVYVFBST0MpKEdMZW51bSBtYXRyaXhNb2RlLCBjb25z
dCBHTGZsb2F0ICptKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xN
QVRSSVhMT0FERk5WUFJPQykoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOwot
dHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTE1BVFJJWExPQURJREVOVElU
WU5WUFJPQykoR0xlbnVtIG1hdHJpeE1vZGUpOwotdHlwZWRlZiBHTHVpbnQoSU5URVJOQUxfR0xf
QVBJRU5UUlkgKlBGTkdMR0VOUEFUSFNOVlBST0MpKEdMc2l6ZWkgcmFuZ2UpOwotdHlwZWRlZiB2
b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTERFTEVURVBBVEhTTlZQUk9DKShHTHVpbnQg
cGF0aCwgR0xzaXplaSByYW5nZSk7Ci10eXBlZGVmIEdMYm9vbGVhbihJTlRFUk5BTF9HTF9BUElF
TlRSWSAqUEZOR0xJU1BBVEhOVlBST0MpKEdMdWludCBwYXRoKTsKLXR5cGVkZWYgdm9pZChJTlRF
Uk5BTF9HTF9BUElFTlRSWSAqUEZOR0xQQVRIQ09NTUFORFNOVlBST0MpKEdMdWludCBwYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
Y29vcmRzKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xQQVRIUEFS
QU1FVEVSSU5WUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgdmFsdWUpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTFBBVEhQ
QVJBTUVURVJGTlZQUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHZhbHVlKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xH
RVRQQVRIUEFSQU1FVEVSSVZOVlBST0MpKEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9B
UElFTlRSWSAqUEZOR0xHRVRQQVRIUEFSQU1FVEVSRlZOVlBST0MpKEdMdWludCBwYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsdWUpOwotdHlwZWRlZiB2
b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTFBBVEhTVEVOQ0lMRlVOQ05WUFJPQykoR0xl
bnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotdHlwZWRlZiB2b2lkKElOVEVSTkFM
X0dMX0FQSUVOVFJZICpQRk5HTFNURU5DSUxGSUxMUEFUSE5WUFJPQykoR0x1aW50IHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Ci10eXBlZGVmIHZvaWQo
SU5URVJOQUxfR0xfQVBJRU5UUlkgKlBGTkdMU1RFTkNJTFNUUk9LRVBBVEhOVlBST0MpKEdMdWlu
dCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKTsK
LXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xDT1ZFUkZJTExQQVRITlZQ
Uk9DKShHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7Ci10eXBlZGVmIHZvaWQoSU5URVJO
QUxfR0xfQVBJRU5UUlkgKlBGTkdMQ09WRVJTVFJPS0VQQVRITlZQUk9DKShHTHVpbnQgcGF0aCwg
R0xlbnVtIGNvdmVyTW9kZSk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJRU5UUlkgKlBG
TkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRITlZQUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xf
QVBJRU5UUlkgKlBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhOVlBST0MpKEdMdWludCBw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLXR5cGVk
ZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xDT1ZFUkZJTExQQVRISU5TVEFOQ0VE
TlZQUk9DKSgKLSAgICBHTHNpemVpIG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUs
Ci0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgR0x1aW50IHBhdGhCYXNlLAotICAgIEdMZW51
bSBjb3Zlck1vZGUsCi0gICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgY29uc3QgR0xmbG9h
dCAqdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAq
UEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRUROVlBST0MpKAotICAgIEdMc2l6ZWkgbnVtUGF0
aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICBjb25zdCB2b2lkICpwYXRocywKLSAg
ICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRl
ZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTFNURU5DSUxGSUxMUEFUSElOU1RBTkNF
RE5WUFJPQykoCi0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0gcGF0aE5hbWVUeXBl
LAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICBHTGVu
dW0gZmlsbE1vZGUsCi0gICAgR0x1aW50IG1hc2ssCi0gICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYgdm9pZChJTlRF
Uk5BTF9HTF9BUElFTlRSWSAqUEZOR0xTVEVOQ0lMU1RST0tFUEFUSElOU1RBTkNFRE5WUFJPQyko
Ci0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgIGNv
bnN0IHZvaWQgKnBhdGhzLAotICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICBHTGludCByZWZlcmVu
Y2UsCi0gICAgR0x1aW50IG1hc2ssCi0gICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9B
UElFTlRSWSAqUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhJTlNUQU5DRUROVlBST0MpKAot
ICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICBjb25z
dCB2b2lkICpwYXRocywKLSAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgIEdMdWludCBtYXNrLAotICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgR0xlbnVtIHRy
YW5zZm9ybVR5cGUsCi0gICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVk
ZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tF
UEFUSElOU1RBTkNFRE5WUFJPQykoCi0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0g
cGF0aE5hbWVUeXBlLAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIEdMdWludCBwYXRoQmFz
ZSwKLSAgICBHTGludCByZWZlcmVuY2UsCi0gICAgR0x1aW50IG1hc2ssCi0gICAgR0xlbnVtIGNv
dmVyTW9kZSwKLSAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpOwotCi10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJRU5UUlkgKlBG
TkdMQklOREZSQUdNRU5USU5QVVRMT0NBVElPTk5WUFJPQykoR0x1aW50IHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpuYW1lKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xQUk9HUkFN
UEFUSEZSQUdNRU5USU5QVVRHRU5OVlBST0MpKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpjb2VmZnMpOwotCiAvLyBFUyAzLjIKIHR5cGVkZWYgdm9pZChJTlRFUk5B
TF9HTF9BUElFTlRSWSAqUEZOR0xCTEVOREJBUlJJRVJQUk9DKSh2b2lkKTsKIHR5cGVkZWYgdm9p
ZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xQUklNSVRJVkVCT1VORElOR0JPWFBST0MpKEdM
ZmxvYXQgbWluWCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9nbF9iaW5kaW5nc19kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2xfYmluZGluZ3NfZGF0YS5qc29uCmlu
ZGV4IDRhZTA0YWQ0ZGNmYTY5YzU2M2JhYmQzNGI5MTZlYjA1N2M5NWMzYWQuLjkwNTMxNjQyZGYw
NTY2NzBhOTRlZDQ4OTIyMGVhZTU5YjJmZTc0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbF9iaW5kaW5nc19kYXRhLmpzb24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2ds
X2JpbmRpbmdzX2RhdGEuanNvbgpAQCAtMzcwLDMzICszNzAsNiBAQAogICAgICAgICAiV2FpdFN5
bmMiCiAgICAgXSwKIAotICAgICJOVl9wYXRoX3JlbmRlcmluZyAob3JpZ2luYWxseSB3cml0dGVu
IGFnYWluc3QgMy4yIGNvbXBhdGliaWxpdHkgcHJvZmlsZSkiOgotICAgIFsKLSAgICAgICAgIk1h
dHJpeExvYWRmRVhUIiwKLSAgICAgICAgIkdlblBhdGhzTlYiLAotICAgICAgICAiRGVsZXRlUGF0
aHNOViIsCi0gICAgICAgICJQYXRoQ29tbWFuZHNOViIsCi0gICAgICAgICJJc1BhdGhOViIsCi0g
ICAgICAgICJQYXRoUGFyYW1ldGVyZk5WIiwKLSAgICAgICAgIlBhdGhQYXJhbWV0ZXJpTlYiLAot
ICAgICAgICAiR2V0UGF0aFBhcmFtZXRlcmZ2TlYiLAotICAgICAgICAiR2V0UGF0aFBhcmFtZXRl
cml2TlYiLAotICAgICAgICAiUGF0aFN0ZW5jaWxGdW5jTlYiLAotICAgICAgICAiU3RlbmNpbEZp
bGxQYXRoTlYiLAotICAgICAgICAiU3RlbmNpbFN0cm9rZVBhdGhOViIsCi0gICAgICAgICJDb3Zl
ckZpbGxQYXRoTlYiLAotICAgICAgICAiQ292ZXJTdHJva2VQYXRoTlYiLAotICAgICAgICAiU3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoTlYiLAotICAgICAgICAiU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhOViIsCi0gICAgICAgICJDb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYiLAotICAgICAgICAi
Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYiLAotICAgICAgICAiU3RlbmNpbEZpbGxQYXRoSW5z
dGFuY2VkTlYiLAotICAgICAgICAiU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViIsCi0gICAg
ICAgICJTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROViIsCi0gICAgICAgICJTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WIiwKLSAgICAgICAgIlByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbk5WIgotICAgIF0sCi0KICAgICAiMy4zIjoKICAgICBbCiAgICAgICAg
ICJCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL251bGxfZnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9udWxsX2Z1
bmN0aW9ucy5jcHAKaW5kZXggODQ0NTljY2U2YzI0NzU2YjJhZjY3ZGQ1MGZhYjJlNTc2N2Q4ZjMw
OC4uNmRiZjZmYTVmYjUxMzA4NDk2NmU4NTE5NzM1OWNhNjhiYzBjZmE4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL251bGxfZnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvbnVsbF9mdW5jdGlvbnMuY3BwCkBAIC0xLDcgKzEsNyBAQAogLy8gR0VORVJBVEVE
IEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRlZCBieSBnZW5lcmF0ZV9nbF9kaXNwYXRj
aF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gZ2xfYmluZGluZ3NfZGF0YS5qc29uIGFuZCBnbC54
bWwuCiAvLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTUxOCwyOCArNTE4LDYgQEAgdm9pZCBJTlRFUk5B
TF9HTF9BUElFTlRSWSBnbENvcHlUZXh0dXJlU3ViSW1hZ2UzRE5VTEwoR0x1aW50IHRleHR1cmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCkKIHt9CiAKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3ZlckZp
bGxQYXRoSW5zdGFuY2VkTlZOVUxMKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpCi17fQotCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0aE5WTlVM
TChHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkge30KLQotdm9pZCBJTlRFUk5BTF9HTF9B
UElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WTlVMTChHTHNpemVpIG51bVBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQote30KLQotdm9pZCBJTlRFUk5BTF9H
TF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aE5WTlVMTChHTHVpbnQgcGF0aCwgR0xlbnVtIGNv
dmVyTW9kZSkge30KLQogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENvdmVyYWdlTW9kdWxh
dGlvbk5WTlVMTChHTGVudW0gY29tcG9uZW50cykge30KIAogdm9pZCBJTlRFUk5BTF9HTF9BUElF
TlRSWSBnbENyZWF0ZUJ1ZmZlcnNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKSB7fQpA
QCAtNjA3LDggKzU4NSw2IEBAIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVGcmFt
ZWJ1ZmZlcnNOVUxMKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtCiAKIHZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVNZW1vcnlPYmplY3RzRVhUTlVMTChHTHNpemVpIG4sIGNv
bnN0IEdMdWludCAqbWVtb3J5T2JqZWN0cykge30KIAotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRS
WSBnbERlbGV0ZVBhdGhzTlZOVUxMKEdMdWludCBwYXRoLCBHTHNpemVpIHJhbmdlKSB7fQotCiB2
b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsRGVsZXRlUHJvZ3JhbU5VTEwoR0x1aW50IHByb2dy
YW0pIHt9CiAKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVQcm9ncmFtUGlwZWxp
bmVzTlVMTChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKSB7fQpAQCAtODY5LDEx
ICs4NDUsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2VuRmVuY2VzTlZOVUxMKEdM
c2l6ZWkgbiwgR0x1aW50ICpmZW5jZXMpIHt9CiAKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkg
Z2xHZW5GcmFtZWJ1ZmZlcnNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpIHt9
CiAKLUdMdWludCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlblBhdGhzTlZOVUxMKEdMc2l6ZWkg
cmFuZ2UpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4oMCk7Ci19Ci0KIHZvaWQg
SU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzTlVMTChHTHNpemVpIG4s
IEdMdWludCAqcGlwZWxpbmVzKSB7fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2Vu
UXVlcmllc05VTEwoR0xzaXplaSBuLCBHTHVpbnQgKmlkcykge30KQEAgLTExNTQsMTAgKzExMjUs
NiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0T2JqZWN0UHRyTGFiZWxOVUxMKGNv
bnN0IHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xjaGFyICpsYWJlbCkKIHt9CiAKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkg
Z2xHZXRQYXRoUGFyYW1ldGVyZnZOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCAqdmFsdWUpIHt9Ci0KLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xHZXRQYXRoUGFy
YW1ldGVyaXZOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKSB7
fQotCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0UG9pbnRlcnZOVUxMKEdMZW51bSBw
bmFtZSwgdm9pZCAqKnBhcmFtcykge30KIAogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdl
dFByb2dyYW1CaW5hcnlOVUxMKEdMdWludCBwcm9ncmFtLApAQCAtMTY1NSwxMSArMTYyMiw2IEBA
IEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbElzTWVtb3J5T2JqZWN0RVhUTlVMTChH
THVpbnQgbWVtb3J5T2JqZWN0KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGJvb2xlYW4+KDAp
OwogfQogCi1HTGJvb2xlYW4gSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xJc1BhdGhOVk5VTEwoR0x1
aW50IHBhdGgpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMYm9vbGVhbj4oMCk7Ci19Ci0K
IEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbElzUHJvZ3JhbU5VTEwoR0x1aW50IHBy
b2dyYW0pCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMYm9vbGVhbj4oMCk7CkBAIC0xNzQ3
LDggKzE3MDksNiBAQCB2b2lkICpJTlRFUk5BTF9HTF9BUElFTlRSWSBnbE1hcE5hbWVkQnVmZmVy
UmFuZ2VOVUxMKEdMdWludCBidWZmZXIsCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZvaWQgKj4o
MCk7CiB9CiAKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkZkVYVE5VTEwo
R0xlbnVtIG1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pIHt9Ci0KIHZvaWQgSU5URVJOQUxfR0xfQVBJ
RU5UUlkgZ2xNYXhTaGFkZXJDb21waWxlclRocmVhZHNBUkJOVUxMKEdMdWludCBjb3VudCkge30K
IAogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbE1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0tI
Uk5VTEwoR0x1aW50IGNvdW50KSB7fQpAQCAtMTg4MSwyMCArMTg0MSw2IEBAIHZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xQYXRjaFBhcmFtZXRlcmZ2TlVMTChHTGVudW0gcG5hbWUsIGNvbnN0
IEdMZmxvYXQgKnZhCiAKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQYXRjaFBhcmFtZXRl
cmlOVUxMKEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpIHt9CiAKLXZvaWQgSU5URVJOQUxfR0xf
QVBJRU5UUlkgZ2xQYXRoQ29tbWFuZHNOVk5VTEwoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5
dGUgKmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQote30KLQotdm9pZCBJ
TlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJmTlZOVUxMKEdMdWludCBwYXRoLCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpIHt9Ci0KLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xQYXRoUGFyYW1ldGVyaU5WTlVMTChHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCB2YWx1ZSkge30KLQotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhTdGVuY2lsRnVu
Y05WTlVMTChHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykge30KLQogdm9pZCBJ
TlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2tOVUxMKCkge30KIAog
dm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBpeGVsU3RvcmVmTlVMTChHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0pIHt9CkBAIC0xOTM5LDEzICsxODg1LDYgQEAgdm9pZCBJTlRFUk5BTF9H
TF9BUElFTlRSWSBnbFByb2dyYW1CaW5hcnlOVUxMKEdMdWludCBwcm9ncmFtLAogCiB2b2lkIElO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsUHJvZ3JhbVBhcmFtZXRlcmlOVUxMKEdMdWludCBwcm9ncmFt
LCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKSB7fQogCi12b2lkIElOVEVSTkFMX0dMX0FQSUVO
VFJZIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlZOVUxMKEdMdWludCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNv
bXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXt9Ci0KIHZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFkTlVMTChHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMZG91YmxlIHYwKSB7fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZ
IGdsUHJvZ3JhbVVuaWZvcm0xZHZOVUxMKEdMdWludCBwcm9ncmFtLApAQCAtMjM1NiwxOCArMjI5
NSw2IEBAIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTaWduYWxTZW1hcGhvcmVFWFROVUxM
KEdMdWludCBzZW1hcGhvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmRzdExheW91dHMpCiB7fQogCi12b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlZOVUxMKEdMc2l6ZWkg
bnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
Ci17fQotCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoTlZOVUxM
KEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKSB7fQotCiB2b2lkIElO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbEZ1bmNOVUxMKEdMZW51bSBmdW5jLCBHTGludCBy
ZWYsIEdMdWludCBtYXNrKSB7fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNp
bEZ1bmNTZXBhcmF0ZU5VTEwoR0xlbnVtIGZhY2UsCkBAIC0yMzg4LDUzICsyMzE1LDYgQEAgdm9p
ZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlTlVMTChHTGVudW0gZmFj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGRwcGFzcykKIHt9CiAKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVuY2lsU3Ry
b2tlUGF0aEluc3RhbmNlZE5WTlVMTChHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRo
TmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNm
b3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17fQotCi12b2lk
IElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhOVk5VTEwoR0x1aW50IHBh
dGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spIHt9Ci0KLXZvaWQgSU5URVJOQUxfR0xf
QVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVk5VTEwoR0xzaXpl
aSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhOVk5VTEwoR0x1aW50IHBh
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUpCi17fQotCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZCi1nbFN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkTlZOVUxMKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0
aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17fQotCi12
b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhOVk5V
TEwoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb3Zlck1vZGUpCi17fQotCiBHTGJvb2xlYW4gSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xUZXN0RmVuY2VOVk5VTEwoR0x1aW50IGZlbmNlKQogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHTGJvb2xlYW4+KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL251bGxfZnVuY3Rpb25zLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvbnVsbF9mdW5jdGlvbnMuaAppbmRl
eCBmNTk3ZWQyNzFiODAxNjk4ZGE0MzFkM2M5YTg3OTI4ZGI1MzdhZjcxLi44NGU5ODU2ZWRiMmU5
ZmQ3ZjQyZjUyOGRlMzU5MTgwODE0YjQzMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvbnVsbF9mdW5jdGlvbnMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvbnVsbF9mdW5j
dGlvbnMuaApAQCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQu
CiAvLyBHZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfZ2xfZGlzcGF0Y2hfdGFibGUucHkgdXNpbmcgZGF0
YSBmcm9tIGdsX2JpbmRpbmdzX2RhdGEuanNvbiBhbmQgZ2wueG1sLgogLy8KLS8vIENvcHlyaWdo
dCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCkBAIC0zNzQsMjIgKzM3NCw2IEBAIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3B5
VGV4dHVyZVN1YkltYWdlM0ROVUxMKEdMdWludCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0
aEluc3RhbmNlZE5WTlVMTChHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsK
LXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQYXRoTlZOVUxMKEdMdWludCBw
YXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3Zl
clN0cm9rZVBhdGhJbnN0YW5jZWROVk5VTEwoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ292ZXJT
dHJva2VQYXRoTlZOVUxMKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKIHZvaWQgSU5U
RVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3ZlcmFnZU1vZHVsYXRpb25OVk5VTEwoR0xlbnVtIGNvbXBv
bmVudHMpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENyZWF0ZUJ1ZmZlcnNOVUxMKEdM
c2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xD
cmVhdGVGcmFtZWJ1ZmZlcnNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOwpA
QCAtNDI0LDcgKzQwOCw2IEBAIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVCdWZm
ZXJzTlVMTChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYnVmZmVycyk7CiB2b2lkIElOVEVSTkFM
X0dMX0FQSUVOVFJZIGdsRGVsZXRlRmVuY2VzTlZOVUxMKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICpmZW5jZXMpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbERlbGV0ZUZyYW1lYnVmZmVy
c05VTEwoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7CiB2b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVE5VTEwoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKm1lbW9yeU9iamVjdHMpOwotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBn
bERlbGV0ZVBhdGhzTlZOVUxMKEdMdWludCBwYXRoLCBHTHNpemVpIHJhbmdlKTsKIHZvaWQgSU5U
RVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVQcm9ncmFtTlVMTChHTHVpbnQgcHJvZ3JhbSk7CiB2
b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lc05VTEwoR0xz
aXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVO
VFJZIGdsRGVsZXRlUXVlcmllc05VTEwoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7CkBA
IC01ODYsNyArNTY5LDYgQEAgdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEZyb250RmFjZU5V
TEwoR0xlbnVtIG1vZGUpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlbkJ1ZmZlcnNO
VUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xHZW5GZW5jZXNOVk5VTEwoR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNlcyk7CiB2b2lkIElO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsR2VuRnJhbWVidWZmZXJzTlVMTChHTHNpemVpIG4sIEdMdWlu
dCAqZnJhbWVidWZmZXJzKTsKLUdMdWludCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlblBhdGhz
TlZOVUxMKEdMc2l6ZWkgcmFuZ2UpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlblBy
b2dyYW1QaXBlbGluZXNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpOwogdm9pZCBJ
TlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlblF1ZXJpZXNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpp
ZHMpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlblJlbmRlcmJ1ZmZlcnNOVUxMKEdM
c2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKTsKQEAgLTc2MCw4ICs3NDIsNiBAQCB2b2lk
IElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0T2JqZWN0UHRyTGFiZWxOVUxMKGNvbnN0IHZvaWQg
KnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpOwotdm9pZCBJTlRFUk5BTF9HTF9B
UElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJmdk5WTlVMTChHTHVpbnQgcGF0aCwgR0xlbnVtIHBu
YW1lLCBHTGZsb2F0ICp2YWx1ZSk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0UGF0
aFBhcmFtZXRlcml2TlZOVUxMKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1
ZSk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0UG9pbnRlcnZOVUxMKEdMZW51bSBw
bmFtZSwgdm9pZCAqKnBhcmFtcyk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0UHJv
Z3JhbUJpbmFyeU5VTEwoR0x1aW50IHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLApAQCAtMTA1Myw3ICsxMDMz
LDYgQEAgR0xib29sZWFuIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsSXNFbmFibGVkaU5VTEwoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKIEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9BUElFTlRS
WSBnbElzRmVuY2VOVk5VTEwoR0x1aW50IGZlbmNlKTsKIEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9B
UElFTlRSWSBnbElzRnJhbWVidWZmZXJOVUxMKEdMdWludCBmcmFtZWJ1ZmZlcik7CiBHTGJvb2xl
YW4gSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xJc01lbW9yeU9iamVjdEVYVE5VTEwoR0x1aW50IG1l
bW9yeU9iamVjdCk7Ci1HTGJvb2xlYW4gSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xJc1BhdGhOVk5V
TEwoR0x1aW50IHBhdGgpOwogR0xib29sZWFuIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsSXNQcm9n
cmFtTlVMTChHTHVpbnQgcHJvZ3JhbSk7CiBHTGJvb2xlYW4gSU5URVJOQUxfR0xfQVBJRU5UUlkg
Z2xJc1Byb2dyYW1QaXBlbGluZU5VTEwoR0x1aW50IHBpcGVsaW5lKTsKIEdMYm9vbGVhbiBJTlRF
Uk5BTF9HTF9BUElFTlRSWSBnbElzUXVlcnlOVUxMKEdMdWludCBpZCk7CkBAIC0xMDc4LDcgKzEw
NTcsNiBAQCB2b2lkICpJTlRFUk5BTF9HTF9BUElFTlRSWSBnbE1hcE5hbWVkQnVmZmVyUmFuZ2VO
VUxMKEdMdWludCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
YWNjZXNzKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkZkVYVE5VTEwo
R0xlbnVtIG1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRS
WSBnbE1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0FSQk5VTEwoR0x1aW50IGNvdW50KTsKIHZvaWQg
SU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFJOVUxMKEdM
dWludCBjb3VudCk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsTWVtb3J5QmFycmllck5V
TEwoR0xiaXRmaWVsZCBiYXJyaWVycyk7CkBAIC0xMTY2LDE1ICsxMTQ0LDYgQEAgdm9pZCBJTlRF
Uk5BTF9HTF9BUElFTlRSWSBnbE9iamVjdFB0ckxhYmVsTlVMTChjb25zdCB2b2lkICpwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbGFiZWwpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGNoUGFyYW1ldGVyZnZO
VUxMKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKIHZvaWQgSU5URVJOQUxf
R0xfQVBJRU5UUlkgZ2xQYXRjaFBhcmFtZXRlcmlOVUxMKEdMZW51bSBwbmFtZSwgR0xpbnQgdmFs
dWUpOwotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhDb21tYW5kc05WTlVMTChHTHVp
bnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpjb29yZHMpOwotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJmTlZO
VUxMKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpOwotdm9pZCBJTlRF
Uk5BTF9HTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpTlZOVUxMKEdMdWludCBwYXRoLCBHTGVu
dW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQYXRo
U3RlbmNpbEZ1bmNOVk5VTEwoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwog
dm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2tOVUxMKCk7
CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUGl4ZWxTdG9yZWZOVUxMKEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUGl4ZWxTdG9y
ZWlOVUxMKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwpAQCAtMTIwMSwxMSArMTE3MCw2IEBA
IHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQcm9ncmFtQmluYXJ5TlVMTChHTHVpbnQgcHJv
Z3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpiaW5hcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBsZW5ndGgpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFByb2dy
YW1QYXJhbWV0ZXJpTlVMTChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1
ZSk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0
R2VuTlZOVUxMKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KmNvZWZmcyk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0xZE5V
TEwoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB2MCk7CiB2b2lkIElO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0xZHZOVUxMKEdMdWludCBwcm9ncmFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKQEAgLTE0ODEsMTUgKzE0NDUsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVO
VFJZIGdsU2lnbmFsU2VtYXBob3JlRVhUTlVMTChHTHVpbnQgc2VtYXBob3JlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bVRleHR1
cmVCYXJyaWVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmRzdExheW91dHMpOwotdm9p
ZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZE5WTlVMTChH
THNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
YXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBt
YXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhOVk5V
TEwoR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOwogdm9pZCBJTlRF
Uk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxGdW5jTlVMTChHTGVudW0gZnVuYywgR0xpbnQgcmVm
LCBHTHVpbnQgbWFzayk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbEZ1bmNT
ZXBhcmF0ZU5VTEwoR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZ1bmMsCkBAIC0xNTAyLDQyICsxNDU3LDYgQEAg
dm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlTlVMTChHTGVudW0g
ZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHNmYWlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZHBmYWlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZHBwYXNzKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZE5WTlVMTChHTHNpemVpIG51bVBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOwotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoTlZOVUxM
KEdMdWludCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsKLXZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVk5VTEwo
R0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci12b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlZOVUxMKEdMdWludCBw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkKLWdsU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWROVk5VTEwoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVm
ZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci12b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhOVk5VTEwoR0x1aW50
IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUpOwogR0xib29sZWFuIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsVGVzdEZlbmNl
TlZOVUxMKEdMdWludCBmZW5jZSk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsVGV4QnVm
ZmVyTlVMTChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBidWZm
ZXIpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFRleEJ1ZmZlclJhbmdlTlVMTChHTGVu
dW0gdGFyZ2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCmluZGV4
IGExYWYxNzA0NWUwN2IzYzUzNzEyNWE3NTc4N2I5MjgxOTUwZWU1ZjMuLjZhMjUwZGI4NTQ4MTBj
NmE4NDE4NGFmNmExMWE0NTQwMmQ3NGUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVy
ZXJnbF91dGlscy5jcHAKQEAgLTksNiArOSw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgiCiAKKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRl
IDxsaW1pdHM+CiAKICNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKQEAgLTg2LDYgKzg3LDMw
IEBAIHVpbnQzMl90IEdldERldmljZUlEKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgSXNNZXNhKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlv
bnMsIHN0ZDo6YXJyYXk8aW50LCAzPiAqdmVyc2lvbikKK3sKKyAgICBBU1NFUlQodmVyc2lvbik7
CisKKyAgICBpZiAoZnVuY3Rpb25zLT5zdGFuZGFyZCAhPSBTVEFOREFSRF9HTF9ERVNLVE9QKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIG5h
dGl2ZVZlcnNpb25TdHJpbmcoCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAq
PihmdW5jdGlvbnMtPmdldFN0cmluZyhHTF9WRVJTSU9OKSkpOworICAgIHNpemVfdCBwb3MgPSBu
YXRpdmVWZXJzaW9uU3RyaW5nLmZpbmQoIk1lc2EiKTsKKyAgICBpZiAocG9zID09IHN0ZDo6c3Ry
aW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlu
dCAqZGF0YSA9IHZlcnNpb24tPmRhdGEoKTsKKyAgICBkYXRhWzBdID0gZGF0YVsxXSA9IGRhdGFb
Ml0gPSAwOworICAgIHN0ZDo6c3NjYW5mKG5hdGl2ZVZlcnNpb25TdHJpbmcuY19zdHIoKSArIHBv
cywgIk1lc2EgJWQuJWQuJWQiLCBkYXRhLCBkYXRhICsgMSwgZGF0YSArIDIpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIG5hbWVzcGFjZSBuYXRpdmVnbF9nbAogewogCkBAIC0xMTA1LDcgKzEx
MzAsMTEgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywK
ICAgICBleHRlbnNpb25zLT5zZXRUZXh0dXJlRXh0ZW5zaW9uU3VwcG9ydCgqdGV4dHVyZUNhcHNN
YXApOwogICAgIGV4dGVuc2lvbnMtPnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFJLSFIgPQogICAg
ICAgICBleHRlbnNpb25zLT50ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSS0hSICYmCi0gICAgICAg
IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19oZHIiKTsKKyAgICAgICAgZnVuY3Rpb25zLT5oYXNFeHRlbnNpb24oIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIik7CisgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZUNvbXBy
ZXNzaW9uU2xpY2VkM2RBU1RDS0hSID0KKyAgICAgICAgKGV4dGVuc2lvbnMtPnRleHR1cmVDb21w
cmVzc2lvbkFTVENMRFJLSFIgJiYKKyAgICAgICAgIGZ1bmN0aW9ucy0+aGFzRXh0ZW5zaW9uKCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX3NsaWNlZF8zZCIpKSB8fAorICAgICAgICBl
eHRlbnNpb25zLT50ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSS0hSOwogICAgIGV4dGVuc2lvbnMt
PmVsZW1lbnRJbmRleFVpbnRPRVMgPSBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dM
X0RFU0tUT1AgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX09F
U19lbGVtZW50X2luZGV4X3VpbnQiKTsKQEAgLTEyMTIsNiArMTI0MSw4IEBAIHZvaWQgR2VuZXJh
dGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0VYVF9kZWJ1Z19tYXJr
ZXIiKTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFnZU9FUyAgICAgICAgID0gZnVuY3Rpb25zLT5o
YXNHTEVTRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAgICAgZXh0ZW5zaW9ucy0+ZWds
SW1hZ2VFeHRlcm5hbE9FUyA9IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfT0VTX0VH
TF9pbWFnZV9leHRlcm5hbCIpOworICAgIGV4dGVuc2lvbnMtPmVnbEltYWdlRXh0ZXJuYWxXcmFw
TW9kZXNFWFQgPQorICAgICAgICBmdW5jdGlvbnMtPmhhc0V4dGVuc2lvbigiR0xfRVhUX0VHTF9p
bWFnZV9leHRlcm5hbF93cmFwX21vZGVzIik7CiAgICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2VFeHRl
cm5hbEVzc2wzT0VTID0KICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIik7CiAKQEAgLTEyNzAsMTkgKzEzMDEsNiBAQCB2
b2lkIEdlbmVyYXRlQ2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgIGV4dGVu
c2lvbnMtPnRleHR1cmVNdWx0aXNhbXBsZSA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZl
cnNpb24oMywgMikpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3RleHR1cmVfbXVsdGlzYW1wbGUiKTsKIAot
ICAgIC8vIE5WX3BhdGhfcmVuZGVyaW5nCi0gICAgLy8gV2UgYWxzbyBuZWVkIGludGVyZmFjZSBx
dWVyeSB3aGljaCBpcyBhdmFpbGFibGUgaW4KLSAgICAvLyA+PSA0LjMgY29yZSBvciBBUkJfaW50
ZXJmYWNlX3F1ZXJ5IG9yID49IEdMRVMgMy4xCi0gICAgY29uc3QgYm9vbCBjYW5FbmFibGVHTFBh
dGhSZW5kZXJpbmcgPQotICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9OVl9w
YXRoX3JlbmRlcmluZyIpICYmCi0gICAgICAgIChmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJH
TF9BUkJfcHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkiKSB8fAotICAgICAgICAgZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAzKSkpOwotCi0gICAgY29uc3QgYm9vbCBjYW5FbmFi
bGVFU1BhdGhSZW5kZXJpbmcgPSBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX05WX3Bh
dGhfcmVuZGVyaW5nIikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAxKSk7Ci0KLSAgICBl
eHRlbnNpb25zLT5wYXRoUmVuZGVyaW5nID0gY2FuRW5hYmxlR0xQYXRoUmVuZGVyaW5nIHx8IGNh
bkVuYWJsZUVTUGF0aFJlbmRlcmluZzsKLQogICAgIGV4dGVuc2lvbnMtPnRleHR1cmVTUkdCRGVj
b2RlID0gZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfc1JHQl9kZWNv
ZGUiKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5o
YXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9zUkdCX2RlY29kZSIpOwogCkBAIC0xNDcx
LDggKzE0ODksOSBAQCB2b2lkIEdlbmVyYXRlQ2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVu
c2lvbigiR0xfRVhUX3NlbWFwaG9yZSIpOwogICAgIGV4dGVuc2lvbnMtPm1lbW9yeU9iamVjdEZk
ID0gZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX21lbW9yeV9vYmplY3RfZmQiKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0
ZW5zaW9uKCJHTF9FWFRfbWVtb3J5X29iamVjdF9mZCIpOwotICAgIGV4dGVuc2lvbnMtPnNlbWFw
aG9yZUZkID0gZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX3NlbWFwaG9yZV9mZCIp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRl
bnNpb24oIkdMX0VYVF9zZW1hcGhvcmVfZmQiKTsKKyAgICBleHRlbnNpb25zLT5zZW1hcGhvcmVG
ZCA9ICFmZWF0dXJlcy5kaXNhYmxlU2VtYXBob3JlRmQuZW5hYmxlZCAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0VYVF9zZW1h
cGhvcmVfZmQiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX3NlbWFwaG9yZV9mZCIpKTsKICAgICBleHRlbnNpb25z
LT5ncHVTaGFkZXI1RVhUID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAw
KSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVh
c3RHTEVTKGdsOjpWZXJzaW9uKDMsIDIpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfZ3B1X3NoYWRlcjUiKSB8fApA
QCAtMTQ4OCw2ICsxNTA3LDkgQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywgYW5nbGU6OkZlYXR1cmVzR0wgKmZlYXR1cmUKICAgICBib29sIGlz
TnZpZGlhICAgPSBJc052aWRpYSh2ZW5kb3IpOwogICAgIGJvb2wgaXNRdWFsY29tbSA9IElzUXVh
bGNvbW0odmVuZG9yKTsKIAorICAgIHN0ZDo6YXJyYXk8aW50LCAzPiBtZXNhVmVyc2lvbiA9IHsw
LCAwLCAwfTsKKyAgICBib29sIGlzTWVzYSAgICAgICAgICAgICAgICAgICAgPSBJc01lc2EoZnVu
Y3Rpb25zLCAmbWVzYVZlcnNpb24pOworCiAgICAgLy8gRG9uJ3QgdXNlIDEtYml0IGFscGhhIGZv
cm1hdHMgb24gZGVza3RvcCBHTCB3aXRoIEFNRCBkcml2ZXJzLgogICAgIEFOR0xFX0ZFQVRVUkVf
Q09ORElUSU9OKGZlYXR1cmVzLCBhdm9pZDFCaXRBbHBoYVRleHR1cmVGb3JtYXRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xf
REVTS1RPUCAmJiBpc0FNRCk7CkBAIC0xNTkwLDEyICsxNjEyLDEzIEBAIHZvaWQgSW5pdGlhbGl6
ZUZlYXR1cmVzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGFuZ2xlOjpGZWF0dXJlc0dM
ICpmZWF0dXJlCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGRpc2FibGVX
b3JrZXJDb250ZXh0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSXNXaW5kb3dzKCkg
JiYgKGlzSW50ZWwgfHwgaXNBTUQpKSB8fCAoSXNMaW51eCgpICYmIGlzTnZpZGlhKSk7CiAKKyAg
ICBib29sIGxpbWl0TWF4VGV4dHVyZVNpemUgPSBpc0ludGVsICYmIElzTGludXgoKSAmJiBHZXRM
aW51eE9TVmVyc2lvbigpIDwgT1NWZXJzaW9uKDUsIDAsIDApOwogICAgIEFOR0xFX0ZFQVRVUkVf
Q09ORElUSU9OKGZlYXR1cmVzLCBsaW1pdE1heFRleHR1cmVTaXplVG80MDk2LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElzQW5kcm9pZCgpIHx8IChpc0ludGVsICYmIElzTGludXgoKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzQW5kcm9pZCgpIHx8IGxpbWl0TWF4VGV4
dHVyZVNpemUpOwogICAgIC8vIE9uIEFwcGxlIHN3aXRjaGFibGUgZ3JhcGhpY3MsIEdMX01BWF9T
QU1QTEVTIG1heSBkaWZmZXIgYmV0d2VlbiB0aGUgR1BVcy4KICAgICAvLyA0IGlzIGEgbG93ZXN0
IGNvbW1vbiBkZW5vbWluYXRvciB0aGF0IGlzIGFsd2F5cyBzdXBwb3J0ZWQuCiAgICAgQU5HTEVf
RkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGxpbWl0TWF4TVNBQVNhbXBsZXNUbzQsIElzQW5k
cm9pZCgpIHx8IChJc0FwcGxlKCkgJiYgKGlzSW50ZWwgfHwgaXNBTUQgfHwgaXNOdmlkaWEpKSk7
Ci0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGxpbWl0TWF4M2RBcnJheVRl
eHR1cmVTaXplVG8xMDI0LCBpc0ludGVsICYmIElzTGludXgoKSk7CisgICAgQU5HTEVfRkVBVFVS
RV9DT05ESVRJT04oZmVhdHVyZXMsIGxpbWl0TWF4M2RBcnJheVRleHR1cmVTaXplVG8xMDI0LCBs
aW1pdE1heFRleHR1cmVTaXplKTsKIAogICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKGZlYXR1
cmVzLCBhbGxvd0NsZWFyRm9yUm9idXN0UmVzb3VyY2VJbml0LCBJc0FwcGxlKCkpOwogCkBAIC0x
NjU0LDYgKzE2NzcsMTMgQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3QgRnVuY3Rpb25z
R0wgKmZ1bmN0aW9ucywgYW5nbGU6OkZlYXR1cmVzR0wgKmZlYXR1cmUKIAogICAgIC8vIGJ1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjI1CiAgICAgQU5HTEVfRkVBVFVSRV9DT05E
SVRJT04oZmVhdHVyZXMsIGZsdXNoQmVmb3JlQmluZEZyYW1lYnVmZmVyLCBJc0FwcGxlKCkgJiYg
aXNJbnRlbCk7CisKKyAgICAvLyBXb3JrYXJvdW5kIGZvciBpbmNvcnJlY3Qgc2FtcGxpbmcgZnJv
bSBEWFQxIHNSR0IgdGV4dHVyZXMgaW4gSW50ZWwgT3BlbkdMIG9uIFdpbmRvd3MuCisgICAgQU5H
TEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGF2b2lkRFhUMXNSR0JUZXh0dXJlRm9ybWF0
LCBJc1dpbmRvd3MoKSAmJiBpc0ludGVsKTsKKworICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9O
KAorICAgICAgICBmZWF0dXJlcywgZGlzYWJsZVNlbWFwaG9yZUZkLAorICAgICAgICBJc0xpbnV4
KCkgJiYgaXNBTUQgJiYgaXNNZXNhICYmIG1lc2FWZXJzaW9uIDwgKHN0ZDo6YXJyYXk8aW50LCAz
PnsxOSwgMywgNX0pKTsKIH0KIAogdm9pZCBJbml0aWFsaXplRnJvbnRlbmRGZWF0dXJlcyhjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBhbmdsZTo6RnJvbnRlbmRGZWF0dXJlcyAqZmVhdHVy
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2xzbGFuZ193cmFwcGVyX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuY3BwCmluZGV4IDdh
MGQ0MDdkMjg5MjcyMTYyM2YxMWE1NzhkOTQ5ZTUxM2QzZDhmMDEuLjRlNjg5MzkyNjhlYjFkNWQ0
Y2JlYjdjYTIyNzE3MmEzZGI2NjMxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dy
YXBwZXJfdXRpbHMuY3BwCkBAIC01NSwxMyArNTUsNiBAQCBjb25zdGV4cHIgY2hhciBrWGZiRGVj
bE1hcmtlcltdICAgID0gIkBAIFhGQi1ERUNMIEBAIjsKIGNvbnN0ZXhwciBjaGFyIGtYZmJPdXRN
YXJrZXJbXSAgICAgPSAiQEAgWEZCLU9VVCBAQDsiOwogY29uc3RleHByIGNoYXIga1hmYkJ1aWx0
SW5QcmVmaXhbXSA9ICJ4ZmJBTkdMRSI7CiAKLWNvbnN0ZXhwciBnbDo6U2hhZGVyTWFwPGNvbnN0
IGNoYXIgKj4ga0RlZmF1bHRVbmlmb3JtTmFtZXMgPSB7Ci0gICAge2dsOjpTaGFkZXJUeXBlOjpW
ZXJ0ZXgsIHNoOjp2azo6a0RlZmF1bHRVbmlmb3Jtc05hbWVWU30sCi0gICAge2dsOjpTaGFkZXJU
eXBlOjpHZW9tZXRyeSwgc2g6OnZrOjprRGVmYXVsdFVuaWZvcm1zTmFtZUdTfSwKLSAgICB7Z2w6
OlNoYWRlclR5cGU6OkZyYWdtZW50LCBzaDo6dms6OmtEZWZhdWx0VW5pZm9ybXNOYW1lRlN9LAot
ICAgIHtnbDo6U2hhZGVyVHlwZTo6Q29tcHV0ZSwgc2g6OnZrOjprRGVmYXVsdFVuaWZvcm1zTmFt
ZUNTfSwKLX07Ci0KIHRlbXBsYXRlIDxzaXplX3QgTj4KIGNvbnN0ZXhwciBzaXplX3QgQ29uc3RT
dHJMZW4oY29uc3QgY2hhciAoJilbTl0pCiB7CkBAIC0xNDYsNDkgKzEzOSwxMSBAQCBib29sIFVu
aWZvcm1OYW1lSXNJbmRleFplcm8oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGJvb2wgZXhjbHVk
ZUNoZWNrRm9yT3duaW5nUwogICAgIHJldHVybiB0cnVlOwogfQogCi0vLyBTdHJpcCBpbmRpY2Vz
IGZyb20gdGhlIG5hbWUuICBJZiB0aGVyZSBhcmUgbm9uLXplcm8gaW5kaWNlcywgcmV0dXJuIGZh
bHNlIHRvIGluZGljYXRlIHRoYXQgdGhpcwotLy8gaW1hZ2UgdW5pZm9ybSBkb2Vzbid0IHJlcXVp
cmUgc2V0L2JpbmRpbmcuICBUaGF0IGlzIGRvbmUgb24gaW5kZXggMC4KLWJvb2wgR2V0SW1hZ2VO
YW1lV2l0aG91dEluZGljZXMoc3RkOjpzdHJpbmcgKm5hbWUpCi17Ci0gICAgaWYgKG5hbWUtPmJh
Y2soKSAhPSAnXScpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBp
ZiAoIVVuaWZvcm1OYW1lSXNJbmRleFplcm8oKm5hbWUsIGZhbHNlKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTdHJpcCBhbGwgaW5kaWNlcwotICAgICpu
YW1lID0gbmFtZS0+c3Vic3RyKDAsIG5hbWUtPmZpbmQoJ1snKSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIGJvb2wgTWFwcGVkU2FtcGxlck5hbWVOZWVkc1VzZXJEZWZpbmVkUHJlZml4KGNvbnN0
IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpCiB7CiAgICAgcmV0dXJuIG9yaWdpbmFsTmFtZS5m
aW5kKCcuJykgPT0gc3RkOjpzdHJpbmc6Om5wb3M7CiB9CiAKLXN0ZDo6c3RyaW5nIEdldE1hcHBl
ZFNhbXBsZXJOYW1lT2xkKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpCi17Ci0gICAg
c3RkOjpzdHJpbmcgc2FtcGxlck5hbWUgPSBnbDo6UGFyc2VSZXNvdXJjZU5hbWUob3JpZ2luYWxO
YW1lLCBudWxscHRyKTsKLQotICAgIC8vIFNhbXBsZXJzIGluIHN0cnVjdHMgYXJlIGV4dHJhY3Rl
ZC4KLSAgICBzdGQ6OnJlcGxhY2Uoc2FtcGxlck5hbWUuYmVnaW4oKSwgc2FtcGxlck5hbWUuZW5k
KCksICcuJywgJ18nKTsKLQotICAgIC8vIFNhbXBsZXJzIGluIGFycmF5cyBvZiBzdHJ1Y3RzIGFy
ZSBhbHNvIGV4dHJhY3RlZC4KLSAgICBzdGQ6OnJlcGxhY2Uoc2FtcGxlck5hbWUuYmVnaW4oKSwg
c2FtcGxlck5hbWUuZW5kKCksICdbJywgJ18nKTsKLSAgICBzYW1wbGVyTmFtZS5lcmFzZShzdGQ6
OnJlbW92ZShzYW1wbGVyTmFtZS5iZWdpbigpLCBzYW1wbGVyTmFtZS5lbmQoKSwgJ10nKSwgc2Ft
cGxlck5hbWUuZW5kKCkpOwotCi0gICAgaWYgKE1hcHBlZFNhbXBsZXJOYW1lTmVlZHNVc2VyRGVm
aW5lZFByZWZpeChvcmlnaW5hbE5hbWUpKQotICAgIHsKLSAgICAgICAgc2FtcGxlck5hbWUgPSBz
aDo6a1VzZXJEZWZpbmVkTmFtZVByZWZpeCArIHNhbXBsZXJOYW1lOwotICAgIH0KLQotICAgIHJl
dHVybiBzYW1wbGVyTmFtZTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEl0ZXIsIHR5
cGVuYW1lIEltcGxpY2l0SXRlcj4KIHVpbnQzMl90IENvdW50RXhwbGljaXRPdXRwdXRzKE91dHB1
dEl0ZXIgb3V0cHV0c0JlZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0
SXRlciBvdXRwdXRzRW5kLApAQCAtMjE3LDEwICsxNzIsMTAgQEAgU2hhZGVySW50ZXJmYWNlVmFy
aWFibGVJbmZvICpHZXRTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZShTaGFkZXJJbnRlcmZhY2VWYXJp
YWJsZUkKICAgICByZXR1cm4gJigqaW5mb01hcClbdmFyTmFtZV07CiB9CiAKLVNoYWRlckludGVy
ZmFjZVZhcmlhYmxlSW5mbyAqQWRkUmVzb3VyY2VJbmZvKFNoYWRlckludGVyZmFjZVZhcmlhYmxl
SW5mb01hcCAqaW5mb01hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJOYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGVzY3JpcHRvclNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJpbmRpbmcpCitT
aGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gKkFkZFJlc291cmNlSW5mb1RvQWxsU3RhZ2VzKFNo
YWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqaW5mb01hcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnZhck5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGRlc2NyaXB0b3JTZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJpbmRpbmcpCiB7CiAg
ICAgZ2w6OlNoYWRlckJpdFNldCBhbGxTdGFnZXM7CiAgICAgYWxsU3RhZ2VzLnNldCgpOwpAQCAt
MjMyLDI4ICsxODcsNDEgQEAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICpBZGRSZXNvdXJj
ZUluZm8oU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICppbmYKICAgICByZXR1cm4gaW5m
bzsKIH0KIAorU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICpBZGRSZXNvdXJjZUluZm8oU2hh
ZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICppbmZvTWFwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhck5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXNj
cmlwdG9yU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgYmluZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUpCit7CisgICAgZ2w6OlNoYWRl
ckJpdFNldCBzdGFnZXM7CisgICAgc3RhZ2VzLnNldChzaGFkZXJUeXBlKTsKKworICAgIFNoYWRl
ckludGVyZmFjZVZhcmlhYmxlSW5mbyAqaW5mbyA9IEFkZFNoYWRlckludGVyZmFjZVZhcmlhYmxl
KGluZm9NYXAsIHZhck5hbWUpOworICAgIGluZm8tPmRlc2NyaXB0b3JTZXQgICAgICAgICAgICAg
ICA9IGRlc2NyaXB0b3JTZXQ7CisgICAgaW5mby0+YmluZGluZyAgICAgICAgICAgICAgICAgICAg
ID0gYmluZGluZzsKKyAgICBpbmZvLT5hY3RpdmVTdGFnZXMgICAgICAgICAgICAgICAgPSBzdGFn
ZXM7CisgICAgcmV0dXJuIGluZm87Cit9CisKIC8vIEFkZCBsb2NhdGlvbiBpbmZvcm1hdGlvbiBm
b3IgYW4gaW4vb3V0IHZhcmlhYmxlLgogU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICpBZGRM
b2NhdGlvbkluZm8oU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICppbmZvTWFwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnZhck5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGNvbXBvbmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJCaXRTZXQgYWN0aXZlU3RhZ2VzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlclR5cGUgc3Rh
Z2UpCiB7CiAgICAgLy8gVGhlIGluZm8gbWFwIGZvciB0aGlzIG5hbWUgbWF5IG9yIG1heSBub3Qg
ZXhpc3QgYWxyZWFkeS4gIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIHRoZQogICAgIC8vIGxvY2F0aW9u
L2NvbXBvbmVudCBpbmZvcm1hdGlvbi4KICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8g
KmluZm8gPSAmKCppbmZvTWFwKVt2YXJOYW1lXTsKIAotICAgIGZvciAoY29uc3QgZ2w6OlNoYWRl
clR5cGUgc2hhZGVyVHlwZSA6IGFjdGl2ZVN0YWdlcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChp
bmZvLT5kZXNjcmlwdG9yU2V0ID09IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFs
aWQpOwotICAgICAgICBBU1NFUlQoaW5mby0+YmluZGluZyA9PSBTaGFkZXJJbnRlcmZhY2VWYXJp
YWJsZUluZm86OmtJbnZhbGlkKTsKLSAgICAgICAgQVNTRVJUKGluZm8tPmxvY2F0aW9uW3NoYWRl
clR5cGVdID09IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQpOwotICAgICAg
ICBBU1NFUlQoaW5mby0+Y29tcG9uZW50W3NoYWRlclR5cGVdID09IFNoYWRlckludGVyZmFjZVZh
cmlhYmxlSW5mbzo6a0ludmFsaWQpOworICAgIEFTU0VSVChpbmZvLT5kZXNjcmlwdG9yU2V0ID09
IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQpOworICAgIEFTU0VSVChpbmZv
LT5iaW5kaW5nID09IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQpOworICAg
IEFTU0VSVChpbmZvLT5sb2NhdGlvbiA9PSBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJ
bnZhbGlkKTsKKyAgICBBU1NFUlQoaW5mby0+Y29tcG9uZW50ID09IFNoYWRlckludGVyZmFjZVZh
cmlhYmxlSW5mbzo6a0ludmFsaWQpOwogCi0gICAgICAgIGluZm8tPmxvY2F0aW9uW3NoYWRlclR5
cGVdICA9IGxvY2F0aW9uOwotICAgICAgICBpbmZvLT5jb21wb25lbnRbc2hhZGVyVHlwZV0gPSBj
b21wb25lbnQ7Ci0gICAgfQotICAgIGluZm8tPmFjdGl2ZVN0YWdlcyB8PSBhY3RpdmVTdGFnZXM7
CisgICAgaW5mby0+bG9jYXRpb24gID0gbG9jYXRpb247CisgICAgaW5mby0+Y29tcG9uZW50ID0g
Y29tcG9uZW50OworICAgIGluZm8tPmFjdGl2ZVN0YWdlcy5zZXQoc3RhZ2UpOwogCiAgICAgcmV0
dXJuIGluZm87CiB9CkBAIC0zNTksOCArMzI3LDkgQEAgc3RkOjpzdHJpbmcgR2VuZXJhdGVUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdPdXRwdXQoY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrVmEK
ICAgICByZXR1cm4gcmVzdWx0LnN0cigpOwogfQogCi12b2lkIEdlbmVyYXRlVHJhbnNmb3JtRmVl
ZGJhY2tFbXVsYXRpb25PdXRwdXRzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25z
LAordm9pZCBHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNrRW11bGF0aW9uT3V0cHV0cyhHbHNsYW5n
U291cmNlT3B0aW9ucyAmb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3Jh
bUludGVyZmFjZUluZm8gKnByb2dyYW1JbnRlcmZhY2VJbmZvLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdmVydGV4U2hhZGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRl
cmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsKQEAgLTM3MSwyNSAr
MzQwLDI3IEBAIHZvaWQgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja0VtdWxhdGlvbk91dHB1dHMo
Y29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvCiAgICAgICAgIHByb2dyYW1TdGF0ZS5n
ZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9JTlRFUkxFQVZFRF9BVFRSSUJT
OwogICAgIGNvbnN0IHNpemVfdCBidWZmZXJDb3VudCA9IGlzSW50ZXJsZWF2ZWQgPyAxIDogdmFy
eWluZ3Muc2l6ZSgpOwogCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgeGZiU2V0ID0gU3RyKG9wdGlv
bnMudW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXgpOworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHhmYlNldCA9IFN0cihwcm9ncmFtSW50ZXJmYWNlSW5mby0+dW5pZm9ybXNBbmRYZmJEZXNj
cmlwdG9yU2V0SW5kZXgpOwogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB4ZmJJbmRpY2Vz
KGJ1ZmZlckNvdW50KTsKIAogICAgIHN0ZDo6c3RyaW5nIHhmYkRlY2w7CiAKICAgICBmb3IgKHVp
bnQzMl90IGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBidWZmZXJDb3VudDsgKytidWZm
ZXJJbmRleCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHhmYkJpbmRpbmcgPSBT
dHIob3B0aW9ucy54ZmJCaW5kaW5nSW5kZXhTdGFydCArIGJ1ZmZlckluZGV4KTsKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgeGZiQmluZGluZyA9IFN0cihwcm9ncmFtSW50ZXJmYWNlSW5mby0+
Y3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXgpOwogICAgICAgICB4ZmJJbmRpY2VzW2J1ZmZlcklu
ZGV4XSAgICAgID0gU3RyKGJ1ZmZlckluZGV4KTsKIAotICAgICAgICBzdGQ6OnN0cmluZyBidWZm
ZXJOYW1lID0gInhmYkJ1ZmZlciIgKyB4ZmJJbmRpY2VzW2J1ZmZlckluZGV4XTsKKyAgICAgICAg
c3RkOjpzdHJpbmcgYnVmZmVyTmFtZSA9IEdldFhmYkJ1ZmZlck5hbWUoYnVmZmVySW5kZXgpOwog
CiAgICAgICAgIHhmYkRlY2wgKz0gImxheW91dChzZXQgPSAiICsgeGZiU2V0ICsgIiwgYmluZGlu
ZyA9ICIgKyB4ZmJCaW5kaW5nICsgIikgYnVmZmVyICIgKwotICAgICAgICAgICAgICAgICAgIGJ1
ZmZlck5hbWUgKyAiIHsgZmxvYXQgeGZiT3V0IiArIHhmYkluZGljZXNbYnVmZmVySW5kZXhdICsg
IltdOyB9O1xuIjsKKyAgICAgICAgICAgICAgICAgICBidWZmZXJOYW1lICsgIiB7IGZsb2F0IHhm
Yk91dCIgKyBTdHIoYnVmZmVySW5kZXgpICsgIltdOyB9O1xuIjsKIAogICAgICAgICAvLyBBZGQg
dGhpcyBlbnRyeSB0byB0aGUgaW5mbyBtYXAsIHNvIHdlIGNhbiBlYXNpbHkgYXNzZXJ0IHRoYXQg
ZXZlcnkgcmVzb3VyY2UgaGFzIGFuIGVudHJ5CiAgICAgICAgIC8vIGluIHRoaXMgbWFwLgotICAg
ICAgICBBZGRSZXNvdXJjZUluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBidWZmZXJOYW1lLCBvcHRp
b25zLnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy54ZmJCaW5kaW5nSW5kZXhTdGFydCArIGJ1ZmZlckluZGV4KTsKKyAgICAg
ICAgQWRkUmVzb3VyY2VJbmZvKHZhcmlhYmxlSW5mb01hcE91dCwgYnVmZmVyTmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT51bmlmb3Jtc0FuZFhmYkRl
c2NyaXB0b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZh
Y2VJbmZvLT5jdXJyZW50VW5pZm9ybUJpbmRpbmdJbmRleCwgZ2w6OlNoYWRlclR5cGU6OlZlcnRl
eCk7CisgICAgICAgICsrcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRVbmlmb3JtQmluZGlu
Z0luZGV4OwogICAgIH0KIAogICAgIHN0ZDo6c3RyaW5nIHhmYk91dCA9CkBAIC00NDcsNyArNDE4
LDYgQEAgYm9vbCBJc0ZpcnN0UmVnaXN0ZXJPZlZhcnlpbmcoY29uc3QgZ2w6OlBhY2tlZFZhcnlp
bmdSZWdpc3RlciAmdmFyeWluZ1JlZykKIHZvaWQgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja0V4
dGVuc2lvbk91dHB1dHMoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJv
Z3JhbUxpbmtlZFJlc291cmNlcyAmcmVzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdmVydGV4U2hhZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmxvY2F0aW9uc1VzZWRGb3JYZmJF
eHRlbnNpb25PdXQpCiB7CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZz4gJnRmVmFyeWluZ3MgPQpAQCAtNDg3LDM0ICs0NTcsMzEgQEAgdm9pZCBHZW5l
cmF0ZVRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uT3V0cHV0cyhjb25zdCBnbDo6UHJvZ3JhbVN0
YXRlICZwcm9ncmFtU3QKIH0KIAogdm9pZCBBc3NpZ25BdHRyaWJ1dGVMb2NhdGlvbnMoY29uc3Qg
Z2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OlNoYWRlclR5cGUgc3RhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsK
LSAgICBnbDo6U2hhZGVyQml0U2V0IHZlcnRleE9ubHk7Ci0gICAgdmVydGV4T25seS5zZXQoZ2w6
OlNoYWRlclR5cGU6OlZlcnRleCk7Ci0KICAgICAvLyBBc3NpZ24gYXR0cmlidXRlIGxvY2F0aW9u
cyBmb3IgdGhlIHZlcnRleCBzaGFkZXIuCiAgICAgZm9yIChjb25zdCBzaDo6U2hhZGVyVmFyaWFi
bGUgJmF0dHJpYnV0ZSA6IHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtSW5wdXRzKCkpCiAgICAgewog
ICAgICAgICBBU1NFUlQoYXR0cmlidXRlLmFjdGl2ZSk7CiAKICAgICAgICAgQWRkTG9jYXRpb25J
bmZvKHZhcmlhYmxlSW5mb01hcE91dCwgYXR0cmlidXRlLm1hcHBlZE5hbWUsIGF0dHJpYnV0ZS5s
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxl
SW5mbzo6a0ludmFsaWQsIHZlcnRleE9ubHkpOworICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCwgc3RhZ2UpOwogICAgIH0KIH0KIAog
dm9pZCBBc3NpZ25PdXRwdXRMb2NhdGlvbnMoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3Jh
bVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUg
c2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZh
cmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewogICAgIC8vIEFzc2lnbiBvdXRw
dXQgbG9jYXRpb25zIGZvciB0aGUgZnJhZ21lbnQgc2hhZGVyLgorICAgIEFTU0VSVChzaGFkZXJU
eXBlID09IGdsOjpTaGFkZXJUeXBlOjpGcmFnbWVudCk7CiAgICAgLy8gVE9ETyhzeW91c3NlZmkp
OiBBZGQgc3VwcG9ydCBmb3IgRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQuICBodHRwOi8vYW5nbGVi
dWcuY29tLzMzODUKICAgICBjb25zdCBhdXRvICZvdXRwdXRMb2NhdGlvbnMgICAgICAgICAgICAg
ICAgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0T3V0cHV0TG9jYXRpb25zKCk7CiAgICAgY29uc3Qg
YXV0byAmb3V0cHV0VmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgID0gcHJvZ3JhbVN0YXRl
LmdldE91dHB1dFZhcmlhYmxlcygpOwogICAgIGNvbnN0IHN0ZDo6YXJyYXk8c3RkOjpzdHJpbmcs
IDM+IGltcGxpY2l0T3V0cHV0cyA9IHsiZ2xfRnJhZ0RlcHRoIiwgImdsX1NhbXBsZU1hc2siLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Z2xfRnJhZ1N0ZW5jaWxSZWZBUkIifTsKIAotICAgIGdsOjpTaGFkZXJCaXRTZXQgZnJhZ21lbnRP
bmx5OwotICAgIGZyYWdtZW50T25seS5zZXQoZ2w6OlNoYWRlclR5cGU6OkZyYWdtZW50KTsKLQog
ICAgIGZvciAoY29uc3QgZ2w6OlZhcmlhYmxlTG9jYXRpb24gJm91dHB1dExvY2F0aW9uIDogb3V0
cHV0TG9jYXRpb25zKQogICAgIHsKICAgICAgICAgaWYgKG91dHB1dExvY2F0aW9uLmFycmF5SW5k
ZXggPT0gMCAmJiBvdXRwdXRMb2NhdGlvbi51c2VkKCkgJiYgIW91dHB1dExvY2F0aW9uLmlnbm9y
ZWQpCkBAIC01MzYsNyArNTAzLDcgQEAgdm9pZCBBc3NpZ25PdXRwdXRMb2NhdGlvbnMoY29uc3Qg
Z2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBBZGRMb2NhdGlvbkluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBvdXRwdXRWYXIubWFwcGVk
TmFtZSwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJm
YWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCwgZnJhZ21lbnRPbmx5KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZhbGlkLCBzaGFk
ZXJUeXBlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTQ1LDE3ICs1MTIsMTggQEAgdm9pZCBB
c3NpZ25PdXRwdXRMb2NhdGlvbnMoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRl
LAogICAgIC8vIGxvY2F0aW9uIDAgdG8gdGhlc2UgZW50cmllcywgYWRkaW5nIGFuIGVudHJ5IGZv
ciB0aGVtIGhlcmUgYWxsb3dzIHVzIHRvIEFTU0VSVCB0aGF0IGV2ZXJ5CiAgICAgLy8gc2hhZGVy
IGludGVyZmFjZSB2YXJpYWJsZSBpcyBwcm9jZXNzZWQgZHVyaW5nIHRoZSBTUElSLVYgdHJhbnNm
b3JtYXRpb24uICBUaGlzIGlzIGRvbmUgd2hlbgogICAgIC8vIGl0ZXJhdGluZyB0aGUgaWRzIHBy
b3ZpZGVkIGJ5IE9wRW50cnlQb2ludC4KLSAgICBBZGRMb2NhdGlvbkluZm8odmFyaWFibGVJbmZv
TWFwT3V0LCAid2ViZ2xfRnJhZ0NvbG9yIiwgMCwgMCwgZnJhZ21lbnRPbmx5KTsKLSAgICBBZGRM
b2NhdGlvbkluZm8odmFyaWFibGVJbmZvTWFwT3V0LCAid2ViZ2xfRnJhZ0RhdGEiLCAwLCAwLCBm
cmFnbWVudE9ubHkpOworICAgIEFkZExvY2F0aW9uSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsICJ3
ZWJnbF9GcmFnQ29sb3IiLCAwLCAwLCBzaGFkZXJUeXBlKTsKKyAgICBBZGRMb2NhdGlvbkluZm8o
dmFyaWFibGVJbmZvTWFwT3V0LCAid2ViZ2xfRnJhZ0RhdGEiLCAwLCAwLCBzaGFkZXJUeXBlKTsK
IH0KIAogdm9pZCBBc3NpZ25WYXJ5aW5nTG9jYXRpb25zKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRp
b25zICZvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNlcyAmcmVzb3VyY2VzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2
YXJpYWJsZUluZm9NYXBPdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xzbGFuZ1By
b2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5mbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxl
SW5mb01hcE91dCkKIHsKLSAgICB1aW50MzJfdCBsb2NhdGlvbnNVc2VkRm9yRW11bGF0aW9uID0g
bG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbjsKKyAgICB1aW50MzJfdCBsb2NhdGlvbnNVc2Vk
Rm9yRW11bGF0aW9uICAgICAgICA9IHByb2dyYW1JbnRlcmZhY2VJbmZvLT5sb2NhdGlvbnNVc2Vk
Rm9yWGZiRXh0ZW5zaW9uOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZ2xFeGVj
dXRhYmxlID0gcHJvZ3JhbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CiAKICAgICAvLyBT
dWJzdGl0dXRlIGxheW91dCBhbmQgcXVhbGlmaWVyIHN0cmluZ3MgZm9yIHRoZSBwb3NpdGlvbiB2
YXJ5aW5nIGFkZGVkIGZvciBsaW5lIHJhc3RlcgogICAgIC8vIGVtdWxhdGlvbi4KQEAgLTU2Mywx
MiArNTMxLDEzIEBAIHZvaWQgQXNzaWduVmFyeWluZ0xvY2F0aW9ucyhjb25zdCBHbHNsYW5nU291
cmNlT3B0aW9ucyAmb3B0aW9ucywKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGxpbmVSYXN0ZXJF
bXVsYXRpb25Qb3NpdGlvbkxvY2F0aW9uID0gbG9jYXRpb25zVXNlZEZvckVtdWxhdGlvbisrOwog
Ci0gICAgICAgIGdsOjpTaGFkZXJCaXRTZXQgYWxsQWN0aXZlU3RhZ2VzOwotICAgICAgICBhbGxB
Y3RpdmVTdGFnZXMuc2V0KCk7Ci0KLSAgICAgICAgQWRkTG9jYXRpb25JbmZvKHZhcmlhYmxlSW5m
b01hcE91dCwgc2g6OnZrOjprTGluZVJhc3RlckVtdWxhdGlvblBvc2l0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbGluZVJhc3RlckVtdWxhdGlvblBvc2l0aW9uTG9jYXRpb24sIFNoYWRl
ckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBhbGxBY3RpdmVTdGFnZXMpOworICAgICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNo
YWRlclR5cGUgOiBnbEV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFkZExvY2F0aW9uSW5mbygmKCp2YXJpYWJsZUluZm9NYXBPdXQpW3No
YWRlclR5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjp2azo6a0xpbmVSYXN0
ZXJFbXVsYXRpb25Qb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUmFz
dGVyRW11bGF0aW9uUG9zaXRpb25Mb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZhbGlkLCBzaGFkZXJUeXBlKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIC8vIEFzc2lnbiB2YXJ5aW5nIGxvY2F0aW9ucy4KQEAgLTU4
MSw2ICs1NTAsMTUgQEAgdm9pZCBBc3NpZ25WYXJ5aW5nTG9jYXRpb25zKGNvbnN0IEdsc2xhbmdT
b3VyY2VPcHRpb25zICZvcHRpb25zLAogCiAgICAgICAgIGNvbnN0IGdsOjpQYWNrZWRWYXJ5aW5n
ICZ2YXJ5aW5nID0gKnZhcnlpbmdSZWcucGFja2VkVmFyeWluZzsKIAorICAgICAgICB1aW50MzJf
dCBsb2NhdGlvbiAgPSB2YXJ5aW5nUmVnLnJlZ2lzdGVyUm93ICsgbG9jYXRpb25zVXNlZEZvckVt
dWxhdGlvbjsKKyAgICAgICAgdWludDMyX3QgY29tcG9uZW50ID0gU2hhZGVySW50ZXJmYWNlVmFy
aWFibGVJbmZvOjprSW52YWxpZDsKKyAgICAgICAgaWYgKHZhcnlpbmdSZWcucmVnaXN0ZXJDb2x1
bW4gPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIXZhcnlpbmcudmFyeWluZygp
LmlzU3RydWN0KCkpOworICAgICAgICAgICAgQVNTRVJUKCFnbDo6SXNNYXRyaXhUeXBlKHZhcnlp
bmcudmFyeWluZygpLnR5cGUpKTsKKyAgICAgICAgICAgIGNvbXBvbmVudCA9IHZhcnlpbmdSZWcu
cmVnaXN0ZXJDb2x1bW47CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5n
OgogICAgICAgICAvLwogICAgICAgICAvLyAgICAgc3RydWN0IFMgeyB2ZWM0IGZpZWxkOyB9OwpA
QCAtNTg4LDQxICs1NjYsNDkgQEAgdm9pZCBBc3NpZ25WYXJ5aW5nTG9jYXRpb25zKGNvbnN0IEds
c2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAogICAgICAgICAvLwogICAgICAgICAvLyAiX3V2
YXJTdHJ1Y3QiIGlzIGZvdW5kIHRocm91Z2ggfHBhcmVudFN0cnVjdE1hcHBlZE5hbWV8LCB3aXRo
IHx2YXJ5aW5nLT5tYXBwZWROYW1lfAogICAgICAgICAvLyBiZWluZyAiX3VmaWVsZCIuICBJbiBz
dWNoIGEgY2FzZSwgdXNlIHxwYXJlbnRTdHJ1Y3RNYXBwZWROYW1lfC4KLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUgPQotICAgICAgICAgICAgdmFyeWluZy5pc1N0cnVjdEZpZWxkKCkg
PyB2YXJ5aW5nLnBhcmVudFN0cnVjdE1hcHBlZE5hbWUgOiB2YXJ5aW5nLnZhcnlpbmctPm1hcHBl
ZE5hbWU7Ci0KLSAgICAgICAgdWludDMyX3QgbG9jYXRpb24gID0gdmFyeWluZ1JlZy5yZWdpc3Rl
clJvdyArIGxvY2F0aW9uc1VzZWRGb3JFbXVsYXRpb247Ci0gICAgICAgIHVpbnQzMl90IGNvbXBv
bmVudCA9IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQ7Ci0gICAgICAgIGlm
ICh2YXJ5aW5nUmVnLnJlZ2lzdGVyQ29sdW1uID4gMCkKKyAgICAgICAgaWYgKHZhcnlpbmcuZnJv
bnRWYXJ5aW5nLnZhcnlpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghdmFyeWlu
Zy52YXJ5aW5nLT5pc1N0cnVjdCgpKTsKLSAgICAgICAgICAgIEFTU0VSVCghZ2w6OklzTWF0cml4
VHlwZSh2YXJ5aW5nLnZhcnlpbmctPnR5cGUpKTsKLSAgICAgICAgICAgIGNvbXBvbmVudCA9IHZh
cnlpbmdSZWcucmVnaXN0ZXJDb2x1bW47CisgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
bmFtZSA9IHZhcnlpbmcuaXNTdHJ1Y3RGaWVsZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA/IHZhcnlpbmcuZnJvbnRWYXJ5aW5nLnBhcmVudFN0cnVjdE1hcHBl
ZE5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdmFyeWlu
Zy5mcm9udFZhcnlpbmcudmFyeWluZy0+bWFwcGVkTmFtZTsKKyAgICAgICAgICAgIEFkZExvY2F0
aW9uSW5mbygmKCp2YXJpYWJsZUluZm9NYXBPdXQpW3ZhcnlpbmcuZnJvbnRWYXJ5aW5nLnN0YWdl
XSwgbmFtZSwgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50
LCB2YXJ5aW5nLmZyb250VmFyeWluZy5zdGFnZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
cnlpbmcuYmFja1ZhcnlpbmcudmFyeWluZykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUgPSB2YXJ5aW5nLmlzU3RydWN0RmllbGQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB2YXJ5aW5nLmJhY2tWYXJ5aW5nLnBhcmVu
dFN0cnVjdE1hcHBlZE5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogdmFyeWluZy5iYWNrVmFyeWluZy52YXJ5aW5nLT5tYXBwZWROYW1lOworICAgICAgICAg
ICAgQWRkTG9jYXRpb25JbmZvKCYoKnZhcmlhYmxlSW5mb01hcE91dClbdmFyeWluZy5iYWNrVmFy
eWluZy5zdGFnZV0sIG5hbWUsIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbXBvbmVudCwgdmFyeWluZy5iYWNrVmFyeWluZy5zdGFnZSk7CiAgICAgICAgIH0KLQotICAg
ICAgICBBZGRMb2NhdGlvbkluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBuYW1lLCBsb2NhdGlvbiwg
Y29tcG9uZW50LCB2YXJ5aW5nLnNoYWRlclN0YWdlcyk7CiAgICAgfQogCiAgICAgLy8gQWRkIGFu
IGVudHJ5IGZvciBpbmFjdGl2ZSB2YXJ5aW5ncy4KLSAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2YXJ5aW5nTmFtZSA6IHJlc291cmNlcy52YXJ5aW5nUGFja2luZy5nZXRJbmFjdGl2ZVZhcnlp
bmdNYXBwZWROYW1lcygpKQorICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+PiAmaW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXMgPQorICAgICAgICByZXNvdXJj
ZXMudmFyeWluZ1BhY2tpbmcuZ2V0SW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXMoKTsKKyAgICBm
b3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbEV4ZWN1dGFibGUuZ2V0TGlu
a2VkU2hhZGVyU3RhZ2VzKCkpCiAgICAgewotICAgICAgICBib29sIGlzQnVpbHRpbiA9IGFuZ2xl
OjpCZWdpbnNXaXRoKHZhcnlpbmdOYW1lLCAiZ2xfIik7Ci0gICAgICAgIGlmIChpc0J1aWx0aW4p
CisgICAgICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdOYW1lIDogaW5hY3RpdmVW
YXJ5aW5nTWFwcGVkTmFtZXNbc2hhZGVyVHlwZV0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9CisgICAgICAgICAgICBib29sIGlzQnVpbHRpbiA9IGFuZ2xlOjpC
ZWdpbnNXaXRoKHZhcnlpbmdOYW1lLCAiZ2xfIik7CisgICAgICAgICAgICBpZiAoaXNCdWlsdGlu
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQogCi0gICAgICAgIC8vIFRPRE8oc3lvdXNzZWZpKTogaW5hY3RpdmUgdmFyeWluZyBuYW1lcyBz
aG91bGQgYmUgdW5pcXVlLiAgSG93ZXZlciwgZHVlIHRvIG1pc2hhbmRsaW5nIG9mCi0gICAgICAg
IC8vIHBhcnRpYWxseSBjYXB0dXJlZCBhcnJheXMsIGEgdmFyeWluZyBuYW1lIGNhbiBlbmQgdXAg
aW4gYm90aCB0aGUgYWN0aXZlIGFuZCBpbmFjdGl2ZQotICAgICAgICAvLyBsaXN0cy4gIFRoZSB0
ZXN0IGJlbG93IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhhdCBpc3N1ZSBpcyByZXNvbHZlZC4K
LSAgICAgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS80MTQwCi0gICAgICAgIGlmICh2YXJpYWJs
ZUluZm9NYXBPdXQtPmZpbmQodmFyeWluZ05hbWUpICE9IHZhcmlhYmxlSW5mb01hcE91dC0+ZW5k
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAg
ICAgICAvLyBJZiBuYW1lIGlzIGFscmVhZHkgaW4gdGhlIG1hcCwgaXQgd2lsbCBhdXRvbWF0aWNh
bGx5IGhhdmUgbWFya2VkIGFsbCBvdGhlciBzdGFnZXMKKyAgICAgICAgICAgIC8vIGluYWN0aXZl
LgorICAgICAgICAgICAgaWYgKCgqdmFyaWFibGVJbmZvTWFwT3V0KVtzaGFkZXJUeXBlXS5maW5k
KHZhcnlpbmdOYW1lKSAhPQorICAgICAgICAgICAgICAgICgqdmFyaWFibGVJbmZvTWFwT3V0KVtz
aGFkZXJUeXBlXS5lbmQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBBZGRMb2NhdGlvbkluZm8odmFyaWFibGVJbmZv
TWFwT3V0LCB2YXJ5aW5nTmFtZSwgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6
a0ludmFsaWQsIGdsOjpTaGFkZXJCaXRTZXQoKSk7CisgICAgICAgICAgICAvLyBPdGhlcndpc2Us
IGFkZCBhbiBlbnRyeSBmb3IgaXQgd2l0aCBhbGwgbG9jYXRpb25zIGluYWN0aXZlLgorICAgICAg
ICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICppbmZvID0gJigqdmFyaWFibGVJbmZv
TWFwT3V0KVtzaGFkZXJUeXBlXVt2YXJ5aW5nTmFtZV07CisgICAgICAgICAgICBBU1NFUlQoaW5m
by0+bG9jYXRpb24gPT0gU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCk7Cisg
ICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTYzMSw2ICs2MTcsNyBAQCB2b2lkIEFzc2lnblZhcnlp
bmdMb2NhdGlvbnMoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCiB2b2lkIEFz
c2lnblRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uUXVhbGlmaWVycyhjb25zdCBnbDo6UHJvZ3Jh
bVN0YXRlICZwcm9ncmFtU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNlcyAmcmVzb3VyY2Vz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJ
bnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsKICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nPiAmdGZWYXJ5aW5ncyA9
CkBAIC02NzUsMTEgKzY2Miw4IEBAIHZvaWQgQXNzaWduVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNp
b25RdWFsaWZpZXJzKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TCiAKICAgICAgICAg
ICAgIEFTU0VSVCh4ZmJWYXJ5aW5nTG9jYXRpb24gPCBsb2NhdGlvbnNVc2VkRm9yWGZiRXh0ZW5z
aW9uKTsKIAotICAgICAgICAgICAgZ2w6OlNoYWRlckJpdFNldCB2ZXJ0ZXhPbmx5OwotICAgICAg
ICAgICAgdmVydGV4T25seS5zZXQoZ2w6OlNoYWRlclR5cGU6OlZlcnRleCk7Ci0KICAgICAgICAg
ICAgIEFkZExvY2F0aW9uSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsIHhmYlZhcnlpbmdOYW1lLCB4
ZmJWYXJ5aW5nTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50
ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCwgdmVydGV4T25seSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCwgc2hh
ZGVyVHlwZSk7CiAgICAgICAgICAgICBTZXRYZmJJbmZvKHZhcmlhYmxlSW5mb01hcE91dCwgeGZi
VmFyeWluZ05hbWUsIGJ1ZmZlckluZGV4LCBjdXJyZW50T2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICBjdXJyZW50U3RyaWRlKTsKICAgICAgICAgfQpAQCAtNzAzLDcgKzY4Nyw3IEBAIHZv
aWQgQXNzaWduVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb25RdWFsaWZpZXJzKGNvbnN0IGdsOjpQ
cm9ncmFtU3RhdGUgJnByb2dyYW1TCiAKICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGFja2Vk
VmFyeWluZyAqdmFyeWluZyA9IHZhcnlpbmdSZWcucGFja2VkVmFyeWluZzsKIAotICAgICAgICAg
ICAgICAgIGlmICh2YXJ5aW5nLT52YXJ5aW5nLT5uYW1lID09IHRmVmFyeWluZy5uYW1lKQorICAg
ICAgICAgICAgICAgIGlmICh2YXJ5aW5nLT5mcm9udFZhcnlpbmcudmFyeWluZy0+bmFtZSA9PSB0
ZlZhcnlpbmcubmFtZSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG9y
aWdpbmFsVmFyeWluZyA9IHZhcnlpbmc7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NzEyLDkgKzY5NiwxMCBAQCB2b2lkIEFzc2lnblRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uUXVh
bGlmaWVycyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtUwogCiAgICAgICAgICAgICBp
ZiAob3JpZ2luYWxWYXJ5aW5nKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZtYXBwZWROYW1lID0gb3JpZ2luYWxWYXJ5aW5nLT5pc1N0cnVjdEZpZWxk
KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/
IG9yaWdpbmFsVmFyeWluZy0+cGFyZW50U3RydWN0TWFwcGVkTmFtZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogb3JpZ2luYWxWYXJ5aW5nLT52
YXJ5aW5nLT5tYXBwZWROYW1lOworICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZt
YXBwZWROYW1lID0KKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYXJ5aW5nLT5pc1N0cnVj
dEZpZWxkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gb3JpZ2luYWxWYXJ5aW5nLT5mcm9u
dFZhcnlpbmcucGFyZW50U3RydWN0TWFwcGVkTmFtZQorICAgICAgICAgICAgICAgICAgICAgICAg
OiBvcmlnaW5hbFZhcnlpbmctPmZyb250VmFyeWluZy52YXJ5aW5nLT5tYXBwZWROYW1lOwogCiAg
ICAgICAgICAgICAgICAgLy8gU2V0IHhmYiBpbmZvIGZvciB0aGlzIHZhcnlpbmcuICBBc3NpZ25W
YXJ5aW5nTG9jYXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYWRkZWQKICAgICAgICAgICAgICAg
ICAvLyBsb2NhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlc2UgdmFyeWluZ3MuCkBAIC03MjUsNzAg
KzcxMCw5MiBAQCB2b2lkIEFzc2lnblRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uUXVhbGlmaWVy
cyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtUwogICAgIH0KIH0KIAotdm9pZCBBc3Np
Z25Vbmlmb3JtQmluZGluZ3MoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiAqc2hh
ZGVyU291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZh
cmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQordm9pZCBBc3NpZ25Vbmlmb3JtQmlu
ZGluZ3MoR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8gKnByb2dyYW1JbnRl
cmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyTWFwSW50ZXJmYWNl
VmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpCiB7Ci0gICAgLy8gQXNzaWduIGJp
bmRpbmcgdG8gdGhlIGRlZmF1bHQgdW5pZm9ybXMgYmxvY2sgb2YgZWFjaCBzaGFkZXIgc3RhZ2Uu
Ci0gICAgdWludDMyX3QgYmluZGluZ0luZGV4ID0gMDsKICAgICBmb3IgKGNvbnN0IGdsOjpTaGFk
ZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKICAgICB7Ci0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTb3VyY2UgPSAoKnNoYWRlclNvdXJjZXMpW3NoYWRl
clR5cGVdOwotICAgICAgICBpZiAoIXNoYWRlclNvdXJjZS5lbXB0eSgpKQorICAgICAgICBpZiAo
cHJvZ3JhbVN0YXRlLmdldEF0dGFjaGVkU2hhZGVyKHNoYWRlclR5cGUpIHx8CisgICAgICAgICAg
ICBwcm9ncmFtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS5oYXNMaW5rZWRTaGFkZXJTdGFn
ZShzaGFkZXJUeXBlKSkKICAgICAgICAgewotICAgICAgICAgICAgQWRkUmVzb3VyY2VJbmZvKHZh
cmlhYmxlSW5mb01hcE91dCwga0RlZmF1bHRVbmlmb3JtTmFtZXNbc2hhZGVyVHlwZV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51bmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JT
ZXRJbmRleCwgYmluZGluZ0luZGV4KTsKLSAgICAgICAgICAgICsrYmluZGluZ0luZGV4OworICAg
ICAgICAgICAgQWRkUmVzb3VyY2VJbmZvKCYoKnZhcmlhYmxlSW5mb01hcE91dClbc2hhZGVyVHlw
ZV0sIGtEZWZhdWx0VW5pZm9ybU5hbWVzW3NoYWRlclR5cGVdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT51bmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JT
ZXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlSW5m
by0+Y3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXgsIHNoYWRlclR5cGUpOworICAgICAgICAgICAg
Kytwcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXg7CisKKyAg
ICAgICAgICAgIC8vIEFzc2lnbiBiaW5kaW5nIHRvIHRoZSBkcml2ZXIgdW5pZm9ybXMgYmxvY2sK
KyAgICAgICAgICAgIEFkZFJlc291cmNlSW5mb1RvQWxsU3RhZ2VzKCYoKnZhcmlhYmxlSW5mb01h
cE91dClbc2hhZGVyVHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaDo6dms6OmtEcml2ZXJVbmlmb3Jtc0Jsb2NrTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5kcml2ZXJVbmlmb3Jtc0Rl
c2NyaXB0b3JTZXRJbmRleCwgMCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICAvLyBBc3NpZ24g
YmluZGluZyB0byB0aGUgZHJpdmVyIHVuaWZvcm1zIGJsb2NrCi0gICAgQWRkUmVzb3VyY2VJbmZv
KHZhcmlhYmxlSW5mb01hcE91dCwgc2g6OnZrOjprRHJpdmVyVW5pZm9ybXNWYXJOYW1lLAotICAg
ICAgICAgICAgICAgICAgICBvcHRpb25zLmRyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4
LCAwKTsKIH0KIAotdWludDMyX3QgQXNzaWduSW50ZXJmYWNlQmxvY2tCaW5kaW5ncyhjb25zdCBH
bHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmYmxvY2tz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaW5kaW5n
U3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVy
ZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQorLy8gVE9ETzogaHR0cDov
L2FuZ2xlYnVnLmNvbS80NTEyOiBOZWVkIHRvIGNvbWJpbmUgZGVzY3JpcHRvciBzZXQgYmluZGlu
Z3MgYWNyb3NzCisvLyBzaGFkZXIgc3RhZ2VzLgordm9pZCBBc3NpZ25JbnRlcmZhY2VCbG9ja0Jp
bmRpbmdzKEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6SW50
ZXJmYWNlQmxvY2s+ICZibG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5mbywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUlu
Zm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsKLSAgICB1aW50MzJfdCBiaW5kaW5nSW5kZXgg
PSBiaW5kaW5nU3RhcnQ7CiAgICAgZm9yIChjb25zdCBnbDo6SW50ZXJmYWNlQmxvY2sgJmJsb2Nr
IDogYmxvY2tzKQogICAgIHsKICAgICAgICAgaWYgKCFibG9jay5pc0FycmF5IHx8IGJsb2NrLmFy
cmF5RWxlbWVudCA9PSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBZGRSZXNvdXJjZUluZm8o
dmFyaWFibGVJbmZvTWFwT3V0LCBibG9jay5tYXBwZWROYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbnMuc2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXgsIGJpbmRp
bmdJbmRleCk7Ci0gICAgICAgICAgICArK2JpbmRpbmdJbmRleDsKKyAgICAgICAgICAgIGZvciAo
Y29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRPRE86IGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vNDUyMzogQWxsIGJsb2NrcyBzaG91bGQgYmUgYWN0aXZlCisgICAgICAgICAgICAgICAgaWYg
KHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdl
KHNoYWRlclR5cGUpICYmCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLmlzQWN0aXZlKHNoYWRl
clR5cGUpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQWRkUmVzb3Vy
Y2VJbmZvKCYoKnZhcmlhYmxlSW5mb01hcE91dClbc2hhZGVyVHlwZV0sIGJsb2NrLm1hcHBlZE5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNl
SW5mby0+c2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFNoYWRlclJl
c291cmNlQmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hhZGVyVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICsrcHJvZ3JhbUludGVyZmFjZUluZm8t
PmN1cnJlbnRTaGFkZXJSZXNvdXJjZUJpbmRpbmdJbmRleDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICByZXR1cm4gYmluZGluZ0luZGV4
OwogfQogCi11aW50MzJfdCBBc3NpZ25BdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3MoY29uc3Qg
R2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkF0b21pY0NvdW50ZXJCdWZm
ZXI+ICZidWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGJpbmRpbmdTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01h
cE91dCkKKy8vIFRPRE86IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDUxMjogTmVlZCB0byBjb21iaW5l
IGRlc2NyaXB0b3Igc2V0IGJpbmRpbmdzIGFjcm9zcworLy8gc2hhZGVyIHN0YWdlcy4KK3ZvaWQg
QXNzaWduQXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzKEdsc2xhbmdTb3VyY2VPcHRpb25zICZv
cHRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkF0b21pY0NvdW50ZXJCdWZmZXI+ICZi
dWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xzbGFuZ1By
b2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5mbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01h
cCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewogICAgIGlmIChidWZmZXJzLnNpemUoKSA9PSAwKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJpbmRpbmdTdGFydDsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEFkZFJlc291cmNlSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsIHNoOjp2azo6a0F0
b21pY0NvdW50ZXJzVmFyTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaGFkZXJS
ZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleCwgYmluZGluZ1N0YXJ0KTsKLQotICAgIHJldHVybiBi
aW5kaW5nU3RhcnQgKyAxOworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlw
ZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyYW1TdGF0
ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdlKHNoYWRlclR5cGUp
KQorICAgICAgICB7CisgICAgICAgICAgICBBZGRSZXNvdXJjZUluZm8oJigqdmFyaWFibGVJbmZv
TWFwT3V0KVtzaGFkZXJUeXBlXSwgc2g6OnZrOjprQXRvbWljQ291bnRlcnNCbG9ja05hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPnNoYWRlclJl
c291cmNlRGVzY3JpcHRvclNldEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50U2hhZGVyUmVzb3VyY2VCaW5kaW5nSW5kZXgsIHNo
YWRlclR5cGUpOworICAgICAgICAgICAgKytwcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFNo
YWRlclJlc291cmNlQmluZGluZ0luZGV4OworICAgICAgICB9CisgICAgfQogfQogCi11aW50MzJf
dCBBc3NpZ25JbWFnZUJpbmRpbmdzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25z
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6TGlu
a2VkVW5pZm9ybT4gJnVuaWZvcm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmFuZ2VVSSAmaW1hZ2VVbmlmb3JtUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGJpbmRpbmdTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpCisv
LyBUT0RPOiBodHRwOi8vYW5nbGVidWcuY29tLzQ1MTI6IE5lZWQgdG8gY29tYmluZSBkZXNjcmlw
dG9yIHNldCBiaW5kaW5ncyBhY3Jvc3MKKy8vIHNoYWRlciBzdGFnZXMuCit2b2lkIEFzc2lnbklt
YWdlQmluZGluZ3MoR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3JtPiAm
dW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJhbmdlVUkgJmlt
YWdlVW5pZm9ybVJhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdsc2xhbmdQcm9ncmFt
SW50ZXJmYWNlSW5mbyAqcHJvZ3JhbUludGVyZmFjZUluZm8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBP
dXQpCiB7Ci0gICAgdWludDMyX3QgYmluZGluZ0luZGV4ID0gYmluZGluZ1N0YXJ0OwogICAgIGZv
ciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleCA6IGltYWdlVW5pZm9ybVJhbmdlKQogICAgIHsK
ICAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJmltYWdlVW5pZm9ybSA9IHVuaWZvcm1z
W3VuaWZvcm1JbmRleF07CkBAIC03OTYsNDYgKzgwMyw1MyBAQCB1aW50MzJfdCBBc3NpZ25JbWFn
ZUJpbmRpbmdzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAogICAgICAgICBz
dGQ6OnN0cmluZyBuYW1lID0gaW1hZ2VVbmlmb3JtLm1hcHBlZE5hbWU7CiAgICAgICAgIGlmIChH
ZXRJbWFnZU5hbWVXaXRob3V0SW5kaWNlcygmbmFtZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFkZFJlc291cmNlSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsIG5hbWUsIG9wdGlvbnMuc2hhZGVy
UmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmluZGluZ0luZGV4KTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hh
ZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmIChwcm9ncmFtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS5oYXNMaW5rZWRT
aGFkZXJTdGFnZShzaGFkZXJUeXBlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIEFkZFJlc291cmNlSW5mbygmKCp2YXJpYWJsZUluZm9NYXBPdXQpW3NoYWRlclR5cGVd
LCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVy
ZmFjZUluZm8tPnNoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRTaGFk
ZXJSZXNvdXJjZUJpbmRpbmdJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoYWRlclR5cGUpOworICAgICAgICAgICAgICAgICAgICArK3Byb2dyYW1JbnRlcmZhY2VJ
bmZvLT5jdXJyZW50U2hhZGVyUmVzb3VyY2VCaW5kaW5nSW5kZXg7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgICsrYmluZGluZ0luZGV4OwogICAg
IH0KLQotICAgIHJldHVybiBiaW5kaW5nSW5kZXg7CiB9CiAKLXZvaWQgQXNzaWduTm9uVGV4dHVy
ZUJpbmRpbmdzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAordm9pZCBBc3Np
Z25Ob25UZXh0dXJlQmluZGluZ3MoR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFt
U3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJp
YWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAqcHJvZ3JhbUludGVyZmFjZUluZm8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJs
ZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsKLSAgICB1aW50MzJfdCBiaW5kaW5nU3Rh
cnQgPSAwOwotCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmdW5p
Zm9ybUJsb2NrcyA9IHByb2dyYW1TdGF0ZS5nZXRVbmlmb3JtQmxvY2tzKCk7Ci0gICAgYmluZGlu
Z1N0YXJ0ID0KLSAgICAgICAgQXNzaWduSW50ZXJmYWNlQmxvY2tCaW5kaW5ncyhvcHRpb25zLCB1
bmlmb3JtQmxvY2tzLCBiaW5kaW5nU3RhcnQsIHZhcmlhYmxlSW5mb01hcE91dCk7CisgICAgQXNz
aWduSW50ZXJmYWNlQmxvY2tCaW5kaW5ncyhvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHVuaWZvcm1C
bG9ja3MsIHByb2dyYW1JbnRlcmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsKIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJ
bnRlcmZhY2VCbG9jaz4gJnN0b3JhZ2VCbG9ja3MgPSBwcm9ncmFtU3RhdGUuZ2V0U2hhZGVyU3Rv
cmFnZUJsb2NrcygpOwotICAgIGJpbmRpbmdTdGFydCA9Ci0gICAgICAgIEFzc2lnbkludGVyZmFj
ZUJsb2NrQmluZGluZ3Mob3B0aW9ucywgc3RvcmFnZUJsb2NrcywgYmluZGluZ1N0YXJ0LCB2YXJp
YWJsZUluZm9NYXBPdXQpOworICAgIEFzc2lnbkludGVyZmFjZUJsb2NrQmluZGluZ3Mob3B0aW9u
cywgcHJvZ3JhbVN0YXRlLCBzdG9yYWdlQmxvY2tzLCBwcm9ncmFtSW50ZXJmYWNlSW5mbywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5mb01hcE91dCk7CiAKICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6QXRvbWljQ291bnRlckJ1ZmZlcj4gJmF0b21pY0NvdW50
ZXJCdWZmZXJzID0KICAgICAgICAgcHJvZ3JhbVN0YXRlLmdldEF0b21pY0NvdW50ZXJCdWZmZXJz
KCk7Ci0gICAgYmluZGluZ1N0YXJ0ID0gQXNzaWduQXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdz
KG9wdGlvbnMsIGF0b21pY0NvdW50ZXJCdWZmZXJzLCBiaW5kaW5nU3RhcnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5mb01h
cE91dCk7CisgICAgQXNzaWduQXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzKG9wdGlvbnMsIHBy
b2dyYW1TdGF0ZSwgYXRvbWljQ291bnRlckJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLCB2YXJpYWJsZUluZm9NYXBPdXQp
OwogCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlmb3JtcyA9
IHByb2dyYW1TdGF0ZS5nZXRVbmlmb3JtcygpOwogICAgIGNvbnN0IGdsOjpSYW5nZVVJICZpbWFn
ZVVuaWZvcm1SYW5nZSAgICAgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0SW1hZ2VVbmlmb3JtUmFu
Z2UoKTsKLSAgICBiaW5kaW5nU3RhcnQgPQotICAgICAgICBBc3NpZ25JbWFnZUJpbmRpbmdzKG9w
dGlvbnMsIHVuaWZvcm1zLCBpbWFnZVVuaWZvcm1SYW5nZSwgYmluZGluZ1N0YXJ0LCB2YXJpYWJs
ZUluZm9NYXBPdXQpOworICAgIEFzc2lnbkltYWdlQmluZGluZ3Mob3B0aW9ucywgcHJvZ3JhbVN0
YXRlLCB1bmlmb3JtcywgaW1hZ2VVbmlmb3JtUmFuZ2UsIHByb2dyYW1JbnRlcmZhY2VJbmZvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsKIH0KIAotdm9pZCBB
c3NpZ25UZXh0dXJlQmluZGluZ3MoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMs
CisvLyBUT0RPOiBodHRwOi8vYW5nbGVidWcuY29tLzQ1MTI6IE5lZWQgdG8gY29tYmluZSBkZXNj
cmlwdG9yIHNldCBiaW5kaW5ncyBhY3Jvc3MKKy8vIHNoYWRlciBzdGFnZXMuCit2b2lkIEFzc2ln
blRleHR1cmVCaW5kaW5ncyhHbHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01h
cCAqdmFyaWFibGVJbmZvTWFwT3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xzbGFu
Z1Byb2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5mbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFi
bGVJbmZvTWFwT3V0KQogewogICAgIC8vIEFzc2lnbiB0ZXh0dXJlcyB0byBhIGRlc2NyaXB0b3Ig
c2V0IGFuZCBiaW5kaW5nLgotICAgIHVpbnQzMl90IGJpbmRpbmdJbmRleCAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3Jt
PiAmdW5pZm9ybXMgPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKIAogICAgIGZvciAodW5z
aWduZWQgaW50IHVuaWZvcm1JbmRleCA6IHByb2dyYW1TdGF0ZS5nZXRTYW1wbGVyVW5pZm9ybVJh
bmdlKCkpCkBAIC04NTUsMTEgKzg2OSwxOSBAQCB2b2lkIEFzc2lnblRleHR1cmVCaW5kaW5ncyhj
b25zdCBHbHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gR2V0TWFwcGVkU2FtcGxlck5hbWVPbGQoc2Ft
cGxlclVuaWZvcm0ubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogR2xzbGFuZ0dldE1hcHBlZFNhbXBsZXJOYW1lKHNhbXBsZXJVbmlmb3JtLm5h
bWUpOwogCi0gICAgICAgICAgICBBZGRSZXNvdXJjZUluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBz
YW1wbGVyTmFtZSwgb3B0aW9ucy50ZXh0dXJlRGVzY3JpcHRvclNldEluZGV4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJpbmRpbmdJbmRleCk7CisgICAgICAgICAgICBmb3IgKGNvbnN0
IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBodHRwOi8vYW5nbGVidWcuY29tLzQ1
MjM6IEFsbCB1bmlmb3JtcyBzaG91bGQgYmUgYWN0aXZlCisgICAgICAgICAgICAgICAgaWYgKHBy
b2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdlKHNo
YWRlclR5cGUpICYmCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZXJVbmlmb3JtLmlzQWN0aXZl
KHNoYWRlclR5cGUpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQWRk
UmVzb3VyY2VJbmZvKCYoKnZhcmlhYmxlSW5mb01hcE91dClbc2hhZGVyVHlwZV0sIHNhbXBsZXJO
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFj
ZUluZm8tPnRleHR1cmVEZXNjcmlwdG9yU2V0SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFRleHR1cmVCaW5kaW5n
SW5kZXgsIHNoYWRlclR5cGUpOworICAgICAgICAgICAgICAgICAgICArK3Byb2dyYW1JbnRlcmZh
Y2VJbmZvLT5jdXJyZW50VGV4dHVyZUJpbmRpbmdJbmRleDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICArK2JpbmRpbmdJbmRleDsKICAgICB9
CiB9CiAKQEAgLTk1OSw4ICs5ODEsNyBAQCBib29sIFZhbGlkYXRlU3BpcnYoY29uc3Qgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+ICZzcGlydkJsb2IpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgewogICAg
ICAgICBzdGQ6OnN0cmluZyByZWFkYWJsZVNwaXJ2OwotICAgICAgICByZXN1bHQgPSBzcGlydlRv
b2xzLkRpc2Fzc2VtYmxlKHNwaXJ2QmxvYiwgJnJlYWRhYmxlU3BpcnYsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BWX0JJTkFSWV9UT19URVhUX09QVElPTl9GUklF
TkRMWV9OQU1FUyk7CisgICAgICAgIHNwaXJ2VG9vbHMuRGlzYXNzZW1ibGUoc3BpcnZCbG9iLCAm
cmVhZGFibGVTcGlydiwgU1BWX0JJTkFSWV9UT19URVhUX09QVElPTl9GUklFTkRMWV9OQU1FUyk7
CiAgICAgICAgIFdBUk4oKSA8PCAiSW52YWxpZCBTUElSLVY6XG4iIDw8IHJlYWRhYmxlU3BpcnY7
CiAgICAgfQogCkBAIC0xMDQ2LDYgKzEwNjcsMTIgQEAgY2xhc3MgU3BpcnZUcmFuc2Zvcm1lciBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgLy8gVHJhbnNmb3JtYXRpb24gc3RhdGU6
CiAKKyAgICAvLyBOYW1lcyBhc3NvY2lhdGVkIHdpdGggaWRzIHRocm91Z2ggT3BOYW1lLiAgVGhl
IHNhbWUgbmFtZSBtYXkgYmUgYXNzaWduZWQgdG8gbXVsdGlwbGUgaWRzLCBidXQKKyAgICAvLyBu
b3QgYWxsIG5hbWVzIGFyZSBpbnRlcmVzdGluZyAoZm9yIGV4YW1wbGUgZnVuY3Rpb24gYXJndW1l
bnRzKS4gIFdoZW4gdGhlIHZhcmlhYmxlCisgICAgLy8gZGVjbGFyYXRpb24gaXMgbWV0IChPcFZh
cmlhYmxlKSwgdGhlIHZhcmlhYmxlIGluZm8gaXMgbWF0Y2hlZCB3aXRoIHRoZSBjb3JyZXNwb25k
aW5nIGlkJ3MKKyAgICAvLyBuYW1lIGJhc2VkIG9uIHRoZSBTdG9yYWdlIENsYXNzLgorICAgIHN0
ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gbU5hbWVzQnlJZDsKKwogICAgIC8vIFNoYWRlciB2YXJp
YWJsZSBpbmZvIHBlciBpZCwgaWYgaWQgaXMgYSBzaGFkZXIgdmFyaWFibGUuCiAgICAgc3RkOjp2
ZWN0b3I8Y29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICo+IG1WYXJpYWJsZUluZm9C
eUlkOwogCkBAIC0xMTE5LDYgKzExNDYsMTEgQEAgdm9pZCBTcGlydlRyYW5zZm9ybWVyOjpyZXNv
bHZlVmFyaWFibGVJZHMoKQogewogICAgIHNpemVfdCBpbmRleEJvdW5kID0gbVNwaXJ2QmxvYklu
W2tIZWFkZXJJbmRleEluZGV4Qm91bmRdOwogCisgICAgLy8gQWxsb2NhdGUgc3RvcmFnZSBmb3Ig
aWQtdG8tbmFtZSBtYXAuICBVc2VkIHRvIGFzc29jaWF0ZSBTaGFkZXJJbnRlcmZhY2VWYXJpYWJs
ZUluZm8gd2l0aCBpZHMKKyAgICAvLyBiYXNlZCBvbiBuYW1lLCBidXQgb25seSB3aGVuIGl0J3Mg
ZGV0ZXJtaW5lZCB0aGF0IHRoZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgc2hhZGVyIGludGVyZmFj
ZQorICAgIC8vIHZhcmlhYmxlLgorICAgIG1OYW1lc0J5SWQucmVzaXplKGluZGV4Qm91bmQgKyAx
LCBudWxscHRyKTsKKwogICAgIC8vIEFsbG9jYXRlIHN0b3JhZ2UgZm9yIGlkLXRvLWluZm8gbWFw
LiAgSWYgJWkgaXMgdGhlIGlkIG9mIGEgbmFtZSBpbiBtVmFyaWFibGVJbmZvTWFwLCBpbmRleCBp
CiAgICAgLy8gaW4gdGhpcyB2ZWN0b3Igd2lsbCBob2xkIGEgcG9pbnRlciB0byB0aGUgU2hhZGVy
SW50ZXJmYWNlVmFyaWFibGVJbmZvIG9iamVjdCBhc3NvY2lhdGVkIHdpdGgKICAgICAvLyB0aGF0
IG5hbWUgaW4gbVZhcmlhYmxlSW5mb01hcC4KQEAgLTEyNTEsMzcgKzEyODMsMTAgQEAgdm9pZCBT
cGlydlRyYW5zZm9ybWVyOjp2aXNpdE5hbWUoY29uc3QgdWludDMyX3QgKmluc3RydWN0aW9uKQog
ICAgIGNvbnN0IGNoYXIgKm5hbWUgID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KCZp
bnN0cnVjdGlvbltrTmFtZUluZGV4XSk7CiAKICAgICAvLyBUaGUgbmFtZXMgYW5kIGlkcyBhcmUg
dW5pcXVlCi0gICAgQVNTRVJUKGlkIDwgbVZhcmlhYmxlSW5mb0J5SWQuc2l6ZSgpKTsKLSAgICBB
U1NFUlQobVZhcmlhYmxlSW5mb0J5SWRbaWRdID09IG51bGxwdHIpOwotCi0gICAgYm9vbCBpc0J1
aWx0aW4gPSBhbmdsZTo6QmVnaW5zV2l0aChuYW1lLCAiZ2xfIik7Ci0gICAgaWYgKGlzQnVpbHRp
bikKLSAgICB7Ci0gICAgICAgIC8vIE1ha2UgYWxsIGJ1aWx0aW5zIHBvaW50IHRvIHRoaXMgbm8t
b3AgaW5mby4gIEFkZGluZyB0aGlzIGVudHJ5IGFsbG93cyB1cyB0byBBU1NFUlQgdGhhdAotICAg
ICAgICAvLyBldmVyeSBzaGFkZXIgaW50ZXJmYWNlIHZhcmlhYmxlIGlzIHByb2Nlc3NlZCBkdXJp
bmcgdGhlIFNQSVItViB0cmFuc2Zvcm1hdGlvbi4gIFRoaXMgaXMKLSAgICAgICAgLy8gZG9uZSB3
aGVuIGl0ZXJhdGluZyB0aGUgaWRzIHByb3ZpZGVkIGJ5IE9wRW50cnlQb2ludC4KLSAgICAgICAg
bVZhcmlhYmxlSW5mb0J5SWRbaWRdID0gJm1CdWlsdGluVmFyaWFibGVJbmZvOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBpbmZvSXRlciA9IG1WYXJpYWJsZUluZm9NYXAuZmlu
ZChuYW1lKTsKLSAgICBpZiAoaW5mb0l0ZXIgPT0gbVZhcmlhYmxlSW5mb01hcC5lbmQoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm8gKmluZm8gPSAmaW5mb0l0ZXItPnNlY29uZDsKLQotICAgIC8vIEFzc29jaWF0
ZSB0aGUgaWQgb2YgdGhpcyBuYW1lIHdpdGggaXRzIGluZm8uCi0gICAgbVZhcmlhYmxlSW5mb0J5
SWRbaWRdID0gaW5mbzsKKyAgICBBU1NFUlQoaWQgPCBtTmFtZXNCeUlkLnNpemUoKSk7CisgICAg
QVNTRVJUKG1OYW1lc0J5SWRbaWRdID09IG51bGxwdHIpOwogCi0gICAgLy8gTm90ZSBpZiB0aGUg
dmFyaWFibGUgaXMgY2FwdHVyZWQgYnkgdHJhbnNmb3JtIGZlZWRiYWNrLiAgSW4gdGhhdCBjYXNl
LCB0aGUgVHJhbnNmb3JtRmVlZGJhY2sKLSAgICAvLyBjYXBhYmlsaXR5IG5lZWRzIHRvIGJlIGFk
ZGVkLgotICAgIGlmIChtU2hhZGVyVHlwZSAhPSBnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQgJiYK
LSAgICAgICAgaW5mby0+eGZiQnVmZmVyICE9IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6
a0ludmFsaWQgJiYgaW5mby0+YWN0aXZlU3RhZ2VzW21TaGFkZXJUeXBlXSkKLSAgICB7Ci0gICAg
ICAgIG1IYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dCA9IHRydWU7Ci0gICAgfQorICAgIG1OYW1l
c0J5SWRbaWRdID0gbmFtZTsKIH0KIAogdm9pZCBTcGlydlRyYW5zZm9ybWVyOjp2aXNpdFR5cGVI
ZWxwZXIoY29uc3QgdWludDMyX3QgKmluc3RydWN0aW9uLApAQCAtMTI5MiwxOSArMTI5NywxNyBA
QCB2b2lkIFNwaXJ2VHJhbnNmb3JtZXI6OnZpc2l0VHlwZUhlbHBlcihjb25zdCB1aW50MzJfdCAq
aW5zdHJ1Y3Rpb24sCiAgICAgY29uc3QgdWludDMyX3QgdHlwZUlkID0gaW5zdHJ1Y3Rpb25bdHlw
ZUlkSW5kZXhdOwogCiAgICAgLy8gRXZlcnkgdHlwZSBpZCBpcyBkZWNsYXJlZCBvbmx5IG9uY2Uu
Ci0gICAgQVNTRVJUKHR5cGVJZCA8IG1WYXJpYWJsZUluZm9CeUlkLnNpemUoKSk7CisgICAgQVNT
RVJUKGlkIDwgbU5hbWVzQnlJZC5zaXplKCkpOworICAgIEFTU0VSVChtTmFtZXNCeUlkW2lkXSA9
PSBudWxscHRyKTsKIAotICAgIGlmIChtVmFyaWFibGVJbmZvQnlJZFt0eXBlSWRdICE9IG51bGxw
dHIpCi0gICAgewotICAgICAgICAvLyBDYXJyeSB0aGUgaW5mbyBmb3J3YXJkIGZyb20gdGhlIGJh
c2UgdHlwZS4gIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgZm9yIGludGVyZmFjZSBibG9ja3MsCi0g
ICAgICAgIC8vIGFzIHRoZSB2YXJpYWJsZSBpbmZvIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYmxv
Y2sgbmFtZSBpbnN0ZWFkIG9mIHRoZSB2YXJpYWJsZSBuYW1lICh0bwotICAgICAgICAvLyBzdXBw
b3J0IG5hbWVsZXNzIGludGVyZmFjZSBibG9ja3MpLiAgSW4gdGhhdCBjYXNlLCB0aGUgdmFyaWFi
bGUgaXRzZWxmIGRvZXNuJ3QgeWV0IGhhdmUKLSAgICAgICAgLy8gYW4gYXNzb2NpYXRlZCBpbmZv
LgotICAgICAgICBBU1NFUlQoaWQgPCBtVmFyaWFibGVJbmZvQnlJZC5zaXplKCkpOwotICAgICAg
ICBBU1NFUlQobVZhcmlhYmxlSW5mb0J5SWRbaWRdID09IG51bGxwdHIpOworICAgIC8vIENhcnJ5
IHRoZSBuYW1lIGZvcndhcmQgZnJvbSB0aGUgYmFzZSB0eXBlLiAgVGhpcyBpcyBvbmx5IG5lY2Vz
c2FyeSBmb3IgaW50ZXJmYWNlIGJsb2NrcywKKyAgICAvLyBhcyB0aGUgdmFyaWFibGUgaW5mbyBp
cyBhc3NvY2lhdGVkIHdpdGggdGhlIGJsb2NrIG5hbWUgaW5zdGVhZCBvZiB0aGUgdmFyaWFibGUg
bmFtZSAodG8KKyAgICAvLyBzdXBwb3J0IG5hbWVsZXNzIGludGVyZmFjZSBibG9ja3MpLiAgV2hl
biB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24gaXMgbWV0LCBlaXRoZXIgdGhlCisgICAgLy8gdHlw
ZSBuYW1lIG9yIHRoZSB2YXJpYWJsZSBuYW1lIGlzIHVzZWQgdG8gYXNzb2NpYXRlIHdpdGggaW5m
byBiYXNlZCBvbiB0aGUgdmFyaWFibGUncworICAgIC8vIHN0b3JhZ2UgY2xhc3MuCisgICAgQVNT
RVJUKHR5cGVJZCA8IG1OYW1lc0J5SWQuc2l6ZSgpKTsKIAotICAgICAgICBtVmFyaWFibGVJbmZv
QnlJZFtpZF0gPSBtVmFyaWFibGVJbmZvQnlJZFt0eXBlSWRdOwotICAgIH0KKyAgICBtTmFtZXNC
eUlkW2lkXSA9IG1OYW1lc0J5SWRbdHlwZUlkXTsKIH0KIAogdm9pZCBTcGlydlRyYW5zZm9ybWVy
Ojp2aXNpdFR5cGVBcnJheShjb25zdCB1aW50MzJfdCAqaW5zdHJ1Y3Rpb24pCkBAIC0xMzMyLDE1
ICsxMzM1LDY2IEBAIHZvaWQgU3BpcnZUcmFuc2Zvcm1lcjo6dmlzaXRWYXJpYWJsZShjb25zdCB1
aW50MzJfdCAqaW5zdHJ1Y3Rpb24pCiAgICAgY29uc3RleHByIHNpemVfdCBrSWRJbmRleCAgICAg
ICAgICAgPSAyOwogICAgIGNvbnN0ZXhwciBzaXplX3Qga1N0b3JhZ2VDbGFzc0luZGV4ID0gMzsK
IAotICAgIHZpc2l0VHlwZUhlbHBlcihpbnN0cnVjdGlvbiwga0lkSW5kZXgsIGtUeXBlSWRJbmRl
eCk7Ci0KICAgICAvLyBBbGwgcmVzb3VyY2VzIHRoYXQgdGFrZSBzZXQvYmluZGluZyBzaG91bGQg
YmUgdHJhbnNmb3JtZWQuCisgICAgY29uc3QgdWludDMyX3QgdHlwZUlkICAgICAgID0gaW5zdHJ1
Y3Rpb25ba1R5cGVJZEluZGV4XTsKICAgICBjb25zdCB1aW50MzJfdCBpZCAgICAgICAgICAgPSBp
bnN0cnVjdGlvbltrSWRJbmRleF07CiAgICAgY29uc3QgdWludDMyX3Qgc3RvcmFnZUNsYXNzID0g
aW5zdHJ1Y3Rpb25ba1N0b3JhZ2VDbGFzc0luZGV4XTsKIAotICAgIEFTU0VSVCgoc3RvcmFnZUNs
YXNzICE9IHNwdjo6U3RvcmFnZUNsYXNzVW5pZm9ybSAmJiBzdG9yYWdlQ2xhc3MgIT0gc3B2OjpT
dG9yYWdlQ2xhc3NJbWFnZSAmJgotICAgICAgICAgICAgc3RvcmFnZUNsYXNzICE9IHNwdjo6U3Rv
cmFnZUNsYXNzU3RvcmFnZUJ1ZmZlcikgfHwKLSAgICAgICAgICAgbVZhcmlhYmxlSW5mb0J5SWRb
aWRdICE9IG51bGxwdHIpOworICAgIEFTU0VSVCh0eXBlSWQgPCBtTmFtZXNCeUlkLnNpemUoKSk7
CisgICAgQVNTRVJUKGlkIDwgbU5hbWVzQnlJZC5zaXplKCkpOworCisgICAgLy8gSWYgc3RvcmFn
ZSBjbGFzcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIG5vdCBhIHNoYWRlciBpbnRlcmZhY2UgdmFy
aWFibGUsIGlnbm9yZSBpdC4KKyAgICBjb25zdCBib29sIGlzSW50ZXJmYWNlQmxvY2tWYXJpYWJs
ZSA9CisgICAgICAgIHN0b3JhZ2VDbGFzcyA9PSBzcHY6OlN0b3JhZ2VDbGFzc1VuaWZvcm0gfHwg
c3RvcmFnZUNsYXNzID09IHNwdjo6U3RvcmFnZUNsYXNzU3RvcmFnZUJ1ZmZlcjsKKyAgICBjb25z
dCBib29sIGlzT3BhcXVlVW5pZm9ybSA9IHN0b3JhZ2VDbGFzcyA9PSBzcHY6OlN0b3JhZ2VDbGFz
c1VuaWZvcm1Db25zdGFudDsKKyAgICBjb25zdCBib29sIGlzSW5PdXQgPQorICAgICAgICBzdG9y
YWdlQ2xhc3MgPT0gc3B2OjpTdG9yYWdlQ2xhc3NJbnB1dCB8fCBzdG9yYWdlQ2xhc3MgPT0gc3B2
OjpTdG9yYWdlQ2xhc3NPdXRwdXQ7CisKKyAgICBpZiAoIWlzSW50ZXJmYWNlQmxvY2tWYXJpYWJs
ZSAmJiAhaXNPcGFxdWVVbmlmb3JtICYmICFpc0luT3V0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFRoZSBpZHMgYXJlIHVuaXF1ZS4KKyAgICBBU1NFUlQoaWQgPCBt
VmFyaWFibGVJbmZvQnlJZC5zaXplKCkpOworICAgIEFTU0VSVChtVmFyaWFibGVJbmZvQnlJZFtp
ZF0gPT0gbnVsbHB0cik7CisKKyAgICAvLyBGb3IgaW50ZXJmYWNlIGJsb2NrIHZhcmlhYmxlcywg
dGhlIG5hbWUgdGhhdCdzIHVzZWQgdG8gYXNzb2NpYXRlIGluZm8gaXMgdGhlIGJsb2NrIG5hbWUK
KyAgICAvLyByYXRoZXIgdGhhbiB0aGUgdmFyaWFibGUgbmFtZS4KKyAgICBjb25zdCBjaGFyICpu
YW1lID0gbU5hbWVzQnlJZFtpc0ludGVyZmFjZUJsb2NrVmFyaWFibGUgPyB0eXBlSWQgOiBpZF07
CisgICAgQVNTRVJUKG5hbWUgIT0gbnVsbHB0cik7CisKKyAgICAvLyBIYW5kbGUgYnVpbHRpbnMs
IHdoaWNoIGFsbCBzdGFydCB3aXRoICJnbF8iLiAgRWl0aGVyIHRoZSB2YXJpYWJsZSBuYW1lIGNv
dWxkIGJlIGFuIGluZGljYXRpb24KKyAgICAvLyBvZiBhIGJ1aWx0aW4gdmFyaWFibGUgKHN1Y2gg
YXMgd2l0aCBnbF9GcmFnQ29vcmQpIG9yIHRoZSB0eXBlIG5hbWUgKHN1Y2ggYXMgd2l0aAorICAg
IC8vIGdsX1BlclZlcnRleCkuCisgICAgY29uc3QgYm9vbCBpc05hbWVCdWlsdGluID0gaXNJbk91
dCAmJiBhbmdsZTo6QmVnaW5zV2l0aChuYW1lLCAiZ2xfIik7CisgICAgY29uc3QgYm9vbCBpc1R5
cGVCdWlsdGluID0KKyAgICAgICAgaXNJbk91dCAmJiBtTmFtZXNCeUlkW3R5cGVJZF0gIT0gbnVs
bHB0ciAmJiBhbmdsZTo6QmVnaW5zV2l0aChtTmFtZXNCeUlkW3R5cGVJZF0sICJnbF8iKTsKKyAg
ICBpZiAoaXNOYW1lQnVpbHRpbiB8fCBpc1R5cGVCdWlsdGluKQorICAgIHsKKyAgICAgICAgLy8g
TWFrZSBhbGwgYnVpbHRpbnMgcG9pbnQgdG8gdGhpcyBuby1vcCBpbmZvLiAgQWRkaW5nIHRoaXMg
ZW50cnkgYWxsb3dzIHVzIHRvIEFTU0VSVCB0aGF0CisgICAgICAgIC8vIGV2ZXJ5IHNoYWRlciBp
bnRlcmZhY2UgdmFyaWFibGUgaXMgcHJvY2Vzc2VkIGR1cmluZyB0aGUgU1BJUi1WIHRyYW5zZm9y
bWF0aW9uLiAgVGhpcyBpcworICAgICAgICAvLyBkb25lIHdoZW4gaXRlcmF0aW5nIHRoZSBpZHMg
cHJvdmlkZWQgYnkgT3BFbnRyeVBvaW50LgorICAgICAgICBtVmFyaWFibGVJbmZvQnlJZFtpZF0g
PSAmbUJ1aWx0aW5WYXJpYWJsZUluZm87CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBFdmVyeSBzaGFkZXIgaW50ZXJmYWNlIHZhcmlhYmxlIHNob3VsZCBoYXZlIGFuIGFzc29jaWF0
ZWQgZGF0YS4KKyAgICBhdXRvIGluZm9JdGVyID0gbVZhcmlhYmxlSW5mb01hcC5maW5kKG5hbWUp
OworICAgIEFTU0VSVChpbmZvSXRlciAhPSBtVmFyaWFibGVJbmZvTWFwLmVuZCgpKTsKKworICAg
IGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAqaW5mbyA9ICZpbmZvSXRlci0+c2Vj
b25kOworCisgICAgLy8gQXNzb2NpYXRlIHRoZSBpZCBvZiB0aGlzIG5hbWUgd2l0aCBpdHMgaW5m
by4KKyAgICBtVmFyaWFibGVJbmZvQnlJZFtpZF0gPSBpbmZvOworCisgICAgLy8gTm90ZSBpZiB0
aGUgdmFyaWFibGUgaXMgY2FwdHVyZWQgYnkgdHJhbnNmb3JtIGZlZWRiYWNrLiAgSW4gdGhhdCBj
YXNlLCB0aGUgVHJhbnNmb3JtRmVlZGJhY2sKKyAgICAvLyBjYXBhYmlsaXR5IG5lZWRzIHRvIGJl
IGFkZGVkLgorICAgIGlmIChtU2hhZGVyVHlwZSAhPSBnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQg
JiYKKyAgICAgICAgaW5mby0+eGZiQnVmZmVyICE9IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5m
bzo6a0ludmFsaWQgJiYgaW5mby0+YWN0aXZlU3RhZ2VzW21TaGFkZXJUeXBlXSkKKyAgICB7Cisg
ICAgICAgIG1IYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dCA9IHRydWU7CisgICAgfQogfQogCiBi
b29sIFNwaXJ2VHJhbnNmb3JtZXI6OnRyYW5zZm9ybURlY29yYXRlKGNvbnN0IHVpbnQzMl90ICpp
bnN0cnVjdGlvbiwgc2l6ZV90IHdvcmRDb3VudCkKQEAgLTEzNzMsNyArMTQyNyw3IEBAIGJvb2wg
U3BpcnZUcmFuc2Zvcm1lcjo6dHJhbnNmb3JtRGVjb3JhdGUoY29uc3QgdWludDMyX3QgKmluc3Ry
dWN0aW9uLCBzaXplX3Qgd29yCiAgICAgc3dpdGNoIChkZWNvcmF0aW9uKQogICAgIHsKICAgICAg
ICAgY2FzZSBzcHY6OkRlY29yYXRpb25Mb2NhdGlvbjoKLSAgICAgICAgICAgIG5ld0RlY29yYXRp
b25WYWx1ZSA9IGluZm8tPmxvY2F0aW9uW21TaGFkZXJUeXBlXTsKKyAgICAgICAgICAgIG5ld0Rl
Y29yYXRpb25WYWx1ZSA9IGluZm8tPmxvY2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2Ugc3B2OjpEZWNvcmF0aW9uQmluZGluZzoKICAgICAgICAgICAgIG5ld0RlY29yYXRp
b25WYWx1ZSA9IGluZm8tPmJpbmRpbmc7CkBAIC0xNDAzLDEzICsxNDU3LDEzIEBAIGJvb2wgU3Bp
cnZUcmFuc2Zvcm1lcjo6dHJhbnNmb3JtRGVjb3JhdGUoY29uc3QgdWludDMyX3QgKmluc3RydWN0
aW9uLCBzaXplX3Qgd29yCiAgICAgfQogCiAgICAgLy8gQWRkIGNvbXBvbmVudCBkZWNvcmF0aW9u
LCBpZiBhbnkuCi0gICAgaWYgKGluZm8tPmNvbXBvbmVudFttU2hhZGVyVHlwZV0gIT0gU2hhZGVy
SW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCkKKyAgICBpZiAoaW5mby0+Y29tcG9uZW50
ICE9IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQpCiAgICAgewogICAgICAg
ICAvLyBDb3B5IHRoZSBsb2NhdGlvbiBkZWNvcmF0aW9uIGRlY2xhcmF0aW9uIGFuZCBtb2RpZnkg
aXQgdG8gY29udGFpbiB0aGUgQ29tcG9uZW50CiAgICAgICAgIC8vIGRlY29yYXRpb24uCiAgICAg
ICAgIGNvbnN0IHNpemVfdCBpbnN0T2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgID0gY29w
eUluc3RydWN0aW9uKGluc3RydWN0aW9uLCB3b3JkQ291bnQpOwogICAgICAgICAoKm1TcGlydkJs
b2JPdXQpW2luc3RPZmZzZXQgKyBrRGVjb3JhdGlvbkluZGV4XSA9IHNwdjo6RGVjb3JhdGlvbkNv
bXBvbmVudDsKLSAgICAgICAgKCptU3BpcnZCbG9iT3V0KVtpbnN0T2Zmc2V0ICsga0RlY29yYXRp
b25WYWx1ZUluZGV4XSA9IGluZm8tPmNvbXBvbmVudFttU2hhZGVyVHlwZV07CisgICAgICAgICgq
bVNwaXJ2QmxvYk91dClbaW5zdE9mZnNldCArIGtEZWNvcmF0aW9uVmFsdWVJbmRleF0gPSBpbmZv
LT5jb21wb25lbnQ7CiAgICAgfQogCiAgICAgLy8gQWRkIFhmYiBkZWNvcmF0aW9ucywgaWYgYW55
LgpAQCAtMTU2Miw5ICsxNjE2LDExIEBAIGJvb2wgU3BpcnZUcmFuc2Zvcm1lcjo6dHJhbnNmb3Jt
VHlwZVBvaW50ZXIoY29uc3QgdWludDMyX3QgKmluc3RydWN0aW9uLCBzaXplX3QKICAgICAvLyBT
UElSLVYgMS4wIFNlY3Rpb24gMy4zMiBJbnN0cnVjdGlvbnMsIE9wVHlwZVBvaW50ZXIKICAgICBj
b25zdGV4cHIgc2l6ZV90IGtJZEluZGV4ICAgICAgICAgICA9IDE7CiAgICAgY29uc3RleHByIHNp
emVfdCBrU3RvcmFnZUNsYXNzSW5kZXggPSAyOworICAgIGNvbnN0ZXhwciBzaXplX3Qga1R5cGVJ
ZEluZGV4ICAgICAgID0gMzsKIAogICAgIGNvbnN0IHVpbnQzMl90IGlkICAgICAgICAgICA9IGlu
c3RydWN0aW9uW2tJZEluZGV4XTsKICAgICBjb25zdCB1aW50MzJfdCBzdG9yYWdlQ2xhc3MgPSBp
bnN0cnVjdGlvbltrU3RvcmFnZUNsYXNzSW5kZXhdOworICAgIGNvbnN0IHVpbnQzMl90IHR5cGVJ
ZCAgICAgICA9IGluc3RydWN0aW9uW2tUeXBlSWRJbmRleF07CiAKICAgICAvLyBJZiB0aGUgc3Rv
cmFnZSBjbGFzcyBpcyBvdXRwdXQsIHRoaXMgbWF5IGJlIHVzZWQgdG8gY3JlYXRlIGEgdmFyaWFi
bGUgY29ycmVzcG9uZGluZyB0byBhbgogICAgIC8vIGluYWN0aXZlIHZhcnlpbmcsIG9yIGlmIHRo
YXQgdmFyeWluZyBpcyBhIHN0cnVjdCwgYW4gT3AqQWNjZXNzQ2hhaW4gcmV0cmlldmluZyBhIGZp
ZWxkIG9mCkBAIC0xNTgwLDE0ICsxNjM2LDkgQEAgYm9vbCBTcGlydlRyYW5zZm9ybWVyOjp0cmFu
c2Zvcm1UeXBlUG9pbnRlcihjb25zdCB1aW50MzJfdCAqaW5zdHJ1Y3Rpb24sIHNpemVfdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gQ2Fubm90IGNyZWF0ZSBhIFByaXZh
dGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBidWlsdGluIGdsX1BlclZlcnRleC4gIE5vdGUg
dGhhdAotICAgIC8vIG1WYXJpYWJsZUluZm9CeUlkIGlzIG9ubHkgZXZlciBzZXQgZm9yIHZhcmlh
YmxlcywgZXhjZXB0IGZvciBuYW1lbGVzcyBpbnRlcmZhY2UgYmxvY2tzIGFuZAotICAgIC8vIHRo
ZSBidWlsdGluIGdsX1BlclZlcnRleC4gIFNpbmNlIHRoZSBzdG9yYWdlIGNsYXNzIGlzIE91dHB1
dCwgaWYgbVZhcmlhYmxlSW5mb0J5SWQgZm9yIHRoaXMKLSAgICAvLyB0eXBlIGlzIG5vdCBudWxs
cHRyLCB0aGlzIG11c3QgYmUgYSBidWlsdGluLgotICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZh
cmlhYmxlSW5mbyAqaW5mbyA9IG1WYXJpYWJsZUluZm9CeUlkW2lkXTsKLSAgICBpZiAoaW5mbykK
KyAgICAvLyBDYW5ub3QgY3JlYXRlIGEgUHJpdmF0ZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gYnVp
bHRpbnMgc3VjaCBhcyBnbF9QZXJWZXJ0ZXguCisgICAgaWYgKG1OYW1lc0J5SWRbdHlwZUlkXSAh
PSBudWxscHRyICYmIGFuZ2xlOjpCZWdpbnNXaXRoKG1OYW1lc0J5SWRbdHlwZUlkXSwgImdsXyIp
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZm8gPT0gJm1CdWlsdGluVmFyaWFibGVJbmZvKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTY5NCwxMSArMTc0NSw3IEBAIHVp
bnQzMl90IFNwaXJ2VHJhbnNmb3JtZXI6OmdldE5ld0lkKCkKIAogY29uc3QgdWludDMyX3QgU2hh
ZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZDsKIAotU2hhZGVySW50ZXJmYWNlVmFy
aWFibGVJbmZvOjpTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8oKQotewotICAgIGxvY2F0aW9u
LmZpbGwoa0ludmFsaWQpOwotICAgIGNvbXBvbmVudC5maWxsKGtJbnZhbGlkKTsKLX0KK1NoYWRl
ckludGVyZmFjZVZhcmlhYmxlSW5mbzo6U2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvKCkge30K
IAogdm9pZCBHbHNsYW5nSW5pdGlhbGl6ZSgpCiB7CkBAIC0xNzEyLDYgKzE3NTksNDQgQEAgdm9p
ZCBHbHNsYW5nUmVsZWFzZSgpCiAgICAgQVNTRVJUKHJlc3VsdCAhPSAwKTsKIH0KIAorLy8gU3Ry
aXAgaW5kaWNlcyBmcm9tIHRoZSBuYW1lLiAgSWYgdGhlcmUgYXJlIG5vbi16ZXJvIGluZGljZXMs
IHJldHVybiBmYWxzZSB0byBpbmRpY2F0ZSB0aGF0IHRoaXMKKy8vIGltYWdlIHVuaWZvcm0gZG9l
c24ndCByZXF1aXJlIHNldC9iaW5kaW5nLiAgVGhhdCBpcyBkb25lIG9uIGluZGV4IDAuCitib29s
IEdldEltYWdlTmFtZVdpdGhvdXRJbmRpY2VzKHN0ZDo6c3RyaW5nICpuYW1lKQoreworICAgIGlm
IChuYW1lLT5iYWNrKCkgIT0gJ10nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKCFVbmlmb3JtTmFtZUlzSW5kZXhaZXJvKCpuYW1lLCBmYWxzZSkpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gU3RyaXAgYWxsIGluZGlj
ZXMKKyAgICAqbmFtZSA9IG5hbWUtPnN1YnN0cigwLCBuYW1lLT5maW5kKCdbJykpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGQ6OnN0cmluZyBHZXRNYXBwZWRTYW1wbGVyTmFtZU9sZChjb25z
dCBzdGQ6OnN0cmluZyAmb3JpZ2luYWxOYW1lKQoreworICAgIHN0ZDo6c3RyaW5nIHNhbXBsZXJO
YW1lID0gZ2w6OlBhcnNlUmVzb3VyY2VOYW1lKG9yaWdpbmFsTmFtZSwgbnVsbHB0cik7CisKKyAg
ICAvLyBTYW1wbGVycyBpbiBzdHJ1Y3RzIGFyZSBleHRyYWN0ZWQuCisgICAgc3RkOjpyZXBsYWNl
KHNhbXBsZXJOYW1lLmJlZ2luKCksIHNhbXBsZXJOYW1lLmVuZCgpLCAnLicsICdfJyk7CisKKyAg
ICAvLyBTYW1wbGVycyBpbiBhcnJheXMgb2Ygc3RydWN0cyBhcmUgYWxzbyBleHRyYWN0ZWQuCisg
ICAgc3RkOjpyZXBsYWNlKHNhbXBsZXJOYW1lLmJlZ2luKCksIHNhbXBsZXJOYW1lLmVuZCgpLCAn
WycsICdfJyk7CisgICAgc2FtcGxlck5hbWUuZXJhc2Uoc3RkOjpyZW1vdmUoc2FtcGxlck5hbWUu
YmVnaW4oKSwgc2FtcGxlck5hbWUuZW5kKCksICddJyksIHNhbXBsZXJOYW1lLmVuZCgpKTsKKwor
ICAgIGlmIChNYXBwZWRTYW1wbGVyTmFtZU5lZWRzVXNlckRlZmluZWRQcmVmaXgob3JpZ2luYWxO
YW1lKSkKKyAgICB7CisgICAgICAgIHNhbXBsZXJOYW1lID0gc2g6OmtVc2VyRGVmaW5lZE5hbWVQ
cmVmaXggKyBzYW1wbGVyTmFtZTsKKyAgICB9CisKKyAgICByZXR1cm4gc2FtcGxlck5hbWU7Cit9
CisKIHN0ZDo6c3RyaW5nIEdsc2xhbmdHZXRNYXBwZWRTYW1wbGVyTmFtZShjb25zdCBzdGQ6OnN0
cmluZyAmb3JpZ2luYWxOYW1lKQogewogICAgIHN0ZDo6c3RyaW5nIHNhbXBsZXJOYW1lID0gb3Jp
Z2luYWxOYW1lOwpAQCAtMTc0NywyNSArMTgzMiwyNSBAQCBzdGQ6OnN0cmluZyBHbHNsYW5nR2V0
TWFwcGVkU2FtcGxlck5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm9yaWdpbmFsTmFtZSkKICAgICBy
ZXR1cm4gc2FtcGxlck5hbWU7CiB9CiAKLXZvaWQgR2xzbGFuZ0dldFNoYWRlclNvdXJjZShjb25z
dCBHbHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKK3N0ZDo6c3RyaW5nIEdldFhmYkJ1ZmZl
ck5hbWUoY29uc3QgdWludDMyX3QgYnVmZmVySW5kZXgpCit7CisgICAgcmV0dXJuICJ4ZmJCdWZm
ZXIiICsgU3RyKGJ1ZmZlckluZGV4KTsKK30KKwordm9pZCBHbHNsYW5nR2V0U2hhZGVyU291cmNl
KEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNlcyAmcmVzb3VyY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5m
byAqcHJvZ3JhbUludGVyZmFjZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gKnNoYWRlclNvdXJjZXNPdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUlu
Zm9NYXBPdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyTWFwSW50ZXJmYWNl
VmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpCiB7Ci0gICAgdmFyaWFibGVJbmZv
TWFwT3V0LT5jbGVhcigpOwotCi0gICAgdWludDMyX3QgbG9jYXRpb25zVXNlZEZvclhmYkV4dGVu
c2lvbiA9IDA7Ci0KICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBn
bDo6QWxsU2hhZGVyVHlwZXMoKSkKICAgICB7CiAgICAgICAgIGdsOjpTaGFkZXIgKmdsU2hhZGVy
ICAgICAgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0QXR0YWNoZWRTaGFkZXIoc2hhZGVyVHlwZSk7
CiAgICAgICAgICgqc2hhZGVyU291cmNlc091dClbc2hhZGVyVHlwZV0gPSBnbFNoYWRlciA/IGds
U2hhZGVyLT5nZXRUcmFuc2xhdGVkU291cmNlKCkgOiAiIjsKICAgICB9CiAKLSAgICBzdGQ6OnN0
cmluZyAqdmVydGV4U291cmNlICAgICAgICAgPSAmKCpzaGFkZXJTb3VyY2VzT3V0KVtnbDo6U2hh
ZGVyVHlwZTo6VmVydGV4XTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTb3VyY2Ug
PSAoKnNoYWRlclNvdXJjZXNPdXQpW2dsOjpTaGFkZXJUeXBlOjpGcmFnbWVudF07Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJmNvbXB1dGVTb3VyY2UgID0gKCpzaGFkZXJTb3VyY2VzT3V0KVtnbDo6
U2hhZGVyVHlwZTo6Q29tcHV0ZV07CisgICAgc3RkOjpzdHJpbmcgKnZlcnRleFNvdXJjZSA9ICYo
KnNoYWRlclNvdXJjZXNPdXQpW2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXhdOwogCiAgICAgLy8gV3Jp
dGUgdHJhbnNmb3JtIGZlZWRiYWNrIG91dHB1dCBjb2RlLgogICAgIGlmICghdmVydGV4U291cmNl
LT5lbXB0eSgpKQpAQCAtMTc3OCw3NCArMTg2Myw5NiBAQCB2b2lkIEdsc2xhbmdHZXRTaGFkZXJT
b3VyY2UoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChvcHRpb25zLnN1cHBvcnRzVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb24p
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFj
a0V4dGVuc2lvbk91dHB1dHMocHJvZ3JhbVN0YXRlLCByZXNvdXJjZXMsIHZlcnRleFNvdXJjZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZUluZm9NYXBPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb24pOwor
ICAgICAgICAgICAgICAgIEdlbmVyYXRlVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb25PdXRwdXRz
KAorICAgICAgICAgICAgICAgICAgICBwcm9ncmFtU3RhdGUsIHJlc291cmNlcywgdmVydGV4U291
cmNlLAorICAgICAgICAgICAgICAgICAgICAmcHJvZ3JhbUludGVyZmFjZUluZm8tPmxvY2F0aW9u
c1VzZWRGb3JYZmJFeHRlbnNpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBp
ZiAob3B0aW9ucy5lbXVsYXRlVHJhbnNmb3JtRmVlZGJhY2spCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja0VtdWxhdGlvbk91dHB1dHMob3B0
aW9ucywgcHJvZ3JhbVN0YXRlLCB2ZXJ0ZXhTb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsK
KyAgICAgICAgICAgICAgICBHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNrRW11bGF0aW9uT3V0cHV0
cygKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgcHJvZ3JhbVN0YXRlLCBwcm9ncmFtSW50
ZXJmYWNlSW5mbywgdmVydGV4U291cmNlLAorICAgICAgICAgICAgICAgICAgICAmKCp2YXJpYWJs
ZUluZm9NYXBPdXQpW2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXhdKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KIAorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0
YWJsZSA9IHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworCiAgICAgLy8gQXNz
aWduIG91dHB1dHMgdG8gdGhlIGZyYWdtZW50IHNoYWRlciwgaWYgYW55LgotICAgIGlmICghZnJh
Z21lbnRTb3VyY2UuZW1wdHkoKSkKKyAgICBpZiAocHJvZ3JhbVN0YXRlLmdldEF0dGFjaGVkU2hh
ZGVyKGdsOjpTaGFkZXJUeXBlOjpGcmFnbWVudCkgfHwKKyAgICAgICAgZXhlY3V0YWJsZS5oYXNM
aW5rZWRTaGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQpKQogICAgIHsKLSAgICAg
ICAgQXNzaWduT3V0cHV0TG9jYXRpb25zKHByb2dyYW1TdGF0ZSwgdmFyaWFibGVJbmZvTWFwT3V0
KTsKKyAgICAgICAgQXNzaWduT3V0cHV0TG9jYXRpb25zKHByb2dyYW1TdGF0ZSwgZ2w6OlNoYWRl
clR5cGU6OkZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigqdmFyaWFi
bGVJbmZvTWFwT3V0KVtnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnRdKTsKICAgICB9CiAKICAgICAv
LyBBc3NpZ24gYXR0cmlidXRlcyB0byB0aGUgdmVydGV4IHNoYWRlciwgaWYgYW55LgotICAgIGlm
ICghdmVydGV4U291cmNlLT5lbXB0eSgpKQorICAgIGlmIChwcm9ncmFtU3RhdGUuZ2V0QXR0YWNo
ZWRTaGFkZXIoZ2w6OlNoYWRlclR5cGU6OlZlcnRleCkgfHwKKyAgICAgICAgZXhlY3V0YWJsZS5o
YXNMaW5rZWRTaGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6VmVydGV4KSkKICAgICB7Ci0gICAg
ICAgIEFzc2lnbkF0dHJpYnV0ZUxvY2F0aW9ucyhwcm9ncmFtU3RhdGUsIHZhcmlhYmxlSW5mb01h
cE91dCk7CisgICAgICAgIEFzc2lnbkF0dHJpYnV0ZUxvY2F0aW9ucyhwcm9ncmFtU3RhdGUsIGds
OjpTaGFkZXJUeXBlOjpWZXJ0ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
KCp2YXJpYWJsZUluZm9NYXBPdXQpW2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXhdKTsKICAgICB9CiAK
LSAgICBpZiAoY29tcHV0ZVNvdXJjZS5lbXB0eSgpKQorICAgIGlmICghcHJvZ3JhbVN0YXRlLmdl
dEF0dGFjaGVkU2hhZGVyKGdsOjpTaGFkZXJUeXBlOjpDb21wdXRlKSAmJgorICAgICAgICAhZXhl
Y3V0YWJsZS5oYXNMaW5rZWRTaGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6Q29tcHV0ZSkpCiAg
ICAgewogICAgICAgICAvLyBBc3NpZ24gdmFyeWluZyBsb2NhdGlvbnMuCi0gICAgICAgIEFzc2ln
blZhcnlpbmdMb2NhdGlvbnMob3B0aW9ucywgcHJvZ3JhbVN0YXRlLCByZXNvdXJjZXMsIGxvY2F0
aW9uc1VzZWRGb3JYZmJFeHRlbnNpb24sCisgICAgICAgIEFzc2lnblZhcnlpbmdMb2NhdGlvbnMo
b3B0aW9ucywgcHJvZ3JhbVN0YXRlLCByZXNvdXJjZXMsIHByb2dyYW1JbnRlcmZhY2VJbmZvLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5mb01hcE91dCk7CiAKICAg
ICAgICAgaWYgKCFwcm9ncmFtU3RhdGUuZ2V0TGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cygpLmVtcHR5KCkgJiYKICAgICAgICAgICAgIG9wdGlvbnMuc3VwcG9ydHNUcmFuc2Zvcm1GZWVk
YmFja0V4dGVuc2lvbikKICAgICAgICAgewogICAgICAgICAgICAgQXNzaWduVHJhbnNmb3JtRmVl
ZGJhY2tFeHRlbnNpb25RdWFsaWZpZXJzKAotICAgICAgICAgICAgICAgIHByb2dyYW1TdGF0ZSwg
cmVzb3VyY2VzLCBsb2NhdGlvbnNVc2VkRm9yWGZiRXh0ZW5zaW9uLCB2YXJpYWJsZUluZm9NYXBP
dXQpOworICAgICAgICAgICAgICAgIHByb2dyYW1TdGF0ZSwgcmVzb3VyY2VzLCBwcm9ncmFtSW50
ZXJmYWNlSW5mby0+bG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbiwKKyAgICAgICAgICAgICAg
ICBnbDo6U2hhZGVyVHlwZTo6VmVydGV4LCAmKCp2YXJpYWJsZUluZm9NYXBPdXQpW2dsOjpTaGFk
ZXJUeXBlOjpWZXJ0ZXhdKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEFzc2lnblVuaWZvcm1C
aW5kaW5ncyhvcHRpb25zLCBzaGFkZXJTb3VyY2VzT3V0LCB2YXJpYWJsZUluZm9NYXBPdXQpOwot
ICAgIEFzc2lnblRleHR1cmVCaW5kaW5ncyhvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHZhcmlhYmxl
SW5mb01hcE91dCk7Ci0gICAgQXNzaWduTm9uVGV4dHVyZUJpbmRpbmdzKG9wdGlvbnMsIHByb2dy
YW1TdGF0ZSwgdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICBBc3NpZ25Vbmlmb3JtQmluZGluZ3Mo
b3B0aW9ucywgcHJvZ3JhbVN0YXRlLCBwcm9ncmFtSW50ZXJmYWNlSW5mbywgdmFyaWFibGVJbmZv
TWFwT3V0KTsKKyAgICBBc3NpZ25UZXh0dXJlQmluZGluZ3Mob3B0aW9ucywgcHJvZ3JhbVN0YXRl
LCBwcm9ncmFtSW50ZXJmYWNlSW5mbywgdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICBBc3NpZ25O
b25UZXh0dXJlQmluZGluZ3Mob3B0aW9ucywgcHJvZ3JhbVN0YXRlLCBwcm9ncmFtSW50ZXJmYWNl
SW5mbywgdmFyaWFibGVJbmZvTWFwT3V0KTsKK30KKworYW5nbGU6OlJlc3VsdCBUcmFuc2Zvcm1T
cGlydkNvZGUoY29uc3QgR2xzbGFuZ0Vycm9yQ2FsbGJhY2sgJmNhbGxiYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZh
cmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3BpcnZCbG9iICZpbml0aWFsU3BpcnZCbG9iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3BpcnZCbG9iICpzcGlydkJsb2JPdXQpCit7CisgICAgaWYg
KGluaXRpYWxTcGlydkJsb2IuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKKyAgICB9CisKKyAgICAvLyBUcmFuc2Zvcm0gdGhlIFNQSVItViBj
b2RlIGJ5IGFzc2lnbmluZyBsb2NhdGlvbi9zZXQvYmluZGluZyB2YWx1ZXMuCisgICAgU3BpcnZU
cmFuc2Zvcm1lciB0cmFuc2Zvcm1lcihpbml0aWFsU3BpcnZCbG9iLCB2YXJpYWJsZUluZm9NYXAs
IHNoYWRlclR5cGUsIHNwaXJ2QmxvYk91dCk7CisgICAgQU5HTEVfR0xTTEFOR19DSEVDSyhjYWxs
YmFjaywgdHJhbnNmb3JtZXIudHJhbnNmb3JtKCksIEdsc2xhbmdFcnJvcjo6SW52YWxpZFNwaXJ2
KTsKKworICAgIEFTU0VSVChWYWxpZGF0ZVNwaXJ2KCpzcGlydkJsb2JPdXQpKTsKKworICAgIHJl
dHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotYW5nbGU6OlJlc3VsdCBHbHNsYW5n
R2V0U2hhZGVyU3BpcnZDb2RlKEdsc2xhbmdFcnJvckNhbGxiYWNrIGNhbGxiYWNrLAorYW5nbGU6
OlJlc3VsdCBHbHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlKGNvbnN0IEdsc2xhbmdFcnJvckNhbGxi
YWNrICZjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Q2FwcyAmZ2xDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJTb3VyY2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckludGVy
ZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5m
b01hcCAmdmFyaWFibGVJbmZvTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpTaGFkZXJNYXA8U3BpcnZCbG9iPiAqc3BpcnZCbG9ic091dCkKIHsKLSAgICBn
bDo6U2hhZGVyTWFwPHN0ZDo6dmVjdG9yPHVpbnQzMl90Pj4gaW5pdGlhbFNwaXJ2QmxvYnM7Cisg
ICAgZ2w6OlNoYWRlck1hcDxTcGlydkJsb2I+IGluaXRpYWxTcGlydkJsb2JzOwogICAgIEFOR0xF
X1RSWShHZXRTaGFkZXJTcGlydkNvZGUoY2FsbGJhY2ssIGdsQ2Fwcywgc2hhZGVyU291cmNlcywg
JmluaXRpYWxTcGlydkJsb2JzKSk7CiAKLSAgICAvLyBUcmFuc2Zvcm0gdGhlIFNQSVItViBjb2Rl
IGJ5IGFzc2lnbmluZyBsb2NhdGlvbi9zZXQvYmluZGluZyB2YWx1ZXMuCiAgICAgZm9yIChjb25z
dCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRlclR5cGVzKCkpCiAgICAg
ewotICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gaW5pdGlhbFNwaXJ2QmxvYiA9
IGluaXRpYWxTcGlydkJsb2JzW3NoYWRlclR5cGVdOwotCi0gICAgICAgIGlmIChpbml0aWFsU3Bp
cnZCbG9iLmVtcHR5KCkpCisgICAgICAgIGFuZ2xlOjpSZXN1bHQgc3RhdHVzID0KKyAgICAgICAg
ICAgIFRyYW5zZm9ybVNwaXJ2Q29kZShjYWxsYmFjaywgc2hhZGVyVHlwZSwgdmFyaWFibGVJbmZv
TWFwW3NoYWRlclR5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxT
cGlydkJsb2JzW3NoYWRlclR5cGVdLCAmKCpzcGlydkJsb2JzT3V0KVtzaGFkZXJUeXBlXSk7Cisg
ICAgICAgIGlmIChzdGF0dXMgIT0gYW5nbGU6OlJlc3VsdDo6Q29udGludWUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAg
ICAgfQotCi0gICAgICAgIFNwaXJ2QmxvYiAqc3BpcnZCbG9iID0gJigqc3BpcnZCbG9ic091dClb
c2hhZGVyVHlwZV07Ci0KLSAgICAgICAgU3BpcnZUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lcihpbml0
aWFsU3BpcnZCbG9iLCB2YXJpYWJsZUluZm9NYXAsIHNoYWRlclR5cGUsIHNwaXJ2QmxvYik7Ci0g
ICAgICAgIEFOR0xFX0dMU0xBTkdfQ0hFQ0soY2FsbGJhY2ssIHRyYW5zZm9ybWVyLnRyYW5zZm9y
bSgpLCBHbHNsYW5nRXJyb3I6OkludmFsaWRTcGlydik7Ci0KLSAgICAgICAgQVNTRVJUKFZhbGlk
YXRlU3BpcnYoKnNwaXJ2QmxvYikpOwogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaAppbmRl
eCAzZjgxN2IwMjI2NWYyMzU2YTM2ZWZlZGEwNmI2NzE3NDFhMzJkYjlmLi5lYWE5ZmZmOWMyODM4
MTAxOThkYTM0M2VlODdmMzg0NWY5ZGQ5ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2xzbGFuZ193cmFwcGVyX3V0aWxzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdf
d3JhcHBlcl91dGlscy5oCkBAIC0yMSwyMCArMjEsMzIgQEAgZW51bSBjbGFzcyBHbHNsYW5nRXJy
b3IKICAgICBJbnZhbGlkU3BpcnYsCiB9OwogCi1zdHJ1Y3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMK
K2NvbnN0ZXhwciBnbDo6U2hhZGVyTWFwPGNvbnN0IGNoYXIgKj4ga0RlZmF1bHRVbmlmb3JtTmFt
ZXMgPSB7CisgICAge2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXgsIHNoOjp2azo6a0RlZmF1bHRVbmlm
b3Jtc05hbWVWU30sCisgICAge2dsOjpTaGFkZXJUeXBlOjpHZW9tZXRyeSwgc2g6OnZrOjprRGVm
YXVsdFVuaWZvcm1zTmFtZUdTfSwKKyAgICB7Z2w6OlNoYWRlclR5cGU6OkZyYWdtZW50LCBzaDo6
dms6OmtEZWZhdWx0VW5pZm9ybXNOYW1lRlN9LAorICAgIHtnbDo6U2hhZGVyVHlwZTo6Q29tcHV0
ZSwgc2g6OnZrOjprRGVmYXVsdFVuaWZvcm1zTmFtZUNTfSwKK307CisKK3N0cnVjdCBHbHNsYW5n
UHJvZ3JhbUludGVyZmFjZUluZm8KIHsKICAgICAvLyBVbmlmb3JtcyBzZXQgaW5kZXg6Ci0gICAg
dWludDMyX3QgdW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXggPSAwOworICAgIHVpbnQz
Ml90IHVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4OworICAgIHVpbnQzMl90IGN1cnJl
bnRVbmlmb3JtQmluZGluZ0luZGV4OwogICAgIC8vIFRleHR1cmVzIHNldCBpbmRleDoKLSAgICB1
aW50MzJfdCB0ZXh0dXJlRGVzY3JpcHRvclNldEluZGV4ID0gMTsKKyAgICB1aW50MzJfdCB0ZXh0
dXJlRGVzY3JpcHRvclNldEluZGV4OworICAgIHVpbnQzMl90IGN1cnJlbnRUZXh0dXJlQmluZGlu
Z0luZGV4OwogICAgIC8vIE90aGVyIHNoYWRlciByZXNvdXJjZXMgc2V0IGluZGV4OgotICAgIHVp
bnQzMl90IHNoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4ID0gMjsKKyAgICB1aW50MzJf
dCBzaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleDsKKyAgICB1aW50MzJfdCBjdXJyZW50
U2hhZGVyUmVzb3VyY2VCaW5kaW5nSW5kZXg7CiAgICAgLy8gQU5HTEUgZHJpdmVyIHVuaWZvcm1z
IHNldCBpbmRleDoKLSAgICB1aW50MzJfdCBkcml2ZXJVbmlmb3Jtc0Rlc2NyaXB0b3JTZXRJbmRl
eCA9IDM7CisgICAgdWludDMyX3QgZHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXg7CiAK
LSAgICAvLyBCaW5kaW5nIGluZGV4IHN0YXJ0IGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVy
czoKLSAgICB1aW50MzJfdCB4ZmJCaW5kaW5nSW5kZXhTdGFydCA9IDE2OworICAgIHVpbnQzMl90
IGxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb247Cit9OwogCitzdHJ1Y3QgR2xzbGFuZ1NvdXJj
ZU9wdGlvbnMKK3sKICAgICBib29sIHVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycyAgICAgICAg
PSBmYWxzZTsKICAgICBib29sIHN1cHBvcnRzVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb24gPSBm
YWxzZTsKICAgICBib29sIGVtdWxhdGVUcmFuc2Zvcm1GZWVkYmFjayAgICAgICAgICAgPSBmYWxz
ZTsKQEAgLTYxLDggKzczLDggQEAgc3RydWN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbwog
ICAgIC8vIHZhcmlhYmxlcyB0aGF0IHNoYXJlIHRoZSBzYW1lIG5hbWUsIHN1Y2ggYXMgYSB2ZXJ0
ZXggYXR0cmlidXRlIGFuZCBhIGZyYWdtZW50IG91dHB1dC4gIFRoZXkKICAgICAvLyB3aWxsIHNo
YXJlIHRoaXMgb2JqZWN0IHNpbmNlIHRoZXkgaGF2ZSB0aGUgc2FtZSBuYW1lLCBidXQgd2lsbCBm
aW5kIHBvc3NpYmx5IGRpZmZlcmVudAogICAgIC8vIGxvY2F0aW9ucyBpbiB0aGVpciByZXNwZWN0
aXZlIHNsb3RzLgotICAgIGdsOjpTaGFkZXJNYXA8dWludDMyX3Q+IGxvY2F0aW9uOwotICAgIGds
OjpTaGFkZXJNYXA8dWludDMyX3Q+IGNvbXBvbmVudDsKKyAgICB1aW50MzJfdCBsb2NhdGlvbiAg
PSBrSW52YWxpZDsKKyAgICB1aW50MzJfdCBjb21wb25lbnQgPSBrSW52YWxpZDsKICAgICAvLyBU
aGUgc3RhZ2VzIHRoaXMgc2hhZGVyIGludGVyZmFjZSB2YXJpYWJsZSBpcyBhY3RpdmUuCiAgICAg
Z2w6OlNoYWRlckJpdFNldCBhY3RpdmVTdGFnZXM7CiAgICAgLy8gVXNlZCBmb3IgdHJhbnNmb3Jt
IGZlZWRiYWNrIGV4dGVuc2lvbiB0byBkZWNvcmF0ZSB2ZXJ0ZXggc2hhZGVyIG91dHB1dC4KQEAg
LTcxLDI4ICs4Myw0MiBAQCBzdHJ1Y3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvCiAgICAg
dWludDMyX3QgeGZiU3RyaWRlID0ga0ludmFsaWQ7CiB9OwogCisvLyBUT0RPOiBodHRwOi8vYW5n
bGVidWcuY29tLzQ1MjQ6IE5lZWQgYSBkaWZmZXJlbnQgaGFzaCBrZXkgdGhhbiBhIHN0cmluZywg
c2luY2UKKy8vIHRoYXQncyBzbG93IHRvIGNhbGN1bGF0ZS4KIHVzaW5nIFNoYWRlckludGVyZmFj
ZVZhcmlhYmxlSW5mb01hcCA9IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgU2hhZGVy
SW50ZXJmYWNlVmFyaWFibGVJbmZvPjsKK3VzaW5nIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxl
SW5mb01hcCA9IGdsOjpTaGFkZXJNYXA8U2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwPjsK
IAogdm9pZCBHbHNsYW5nSW5pdGlhbGl6ZSgpOwogdm9pZCBHbHNsYW5nUmVsZWFzZSgpOwogCiti
b29sIEdldEltYWdlTmFtZVdpdGhvdXRJbmRpY2VzKHN0ZDo6c3RyaW5nICpuYW1lKTsKKwogLy8g
R2V0IHRoZSBtYXBwZWQgc2FtcGxlciBuYW1lIGFmdGVyIHRoZSBzb3VyZSBpcyB0cmFuc2Zvcm1l
ZCBieSBHbHNsYW5nR2V0U2hhZGVyU291cmNlKCkKK3N0ZDo6c3RyaW5nIEdldE1hcHBlZFNhbXBs
ZXJOYW1lT2xkKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpOwogc3RkOjpzdHJpbmcg
R2xzbGFuZ0dldE1hcHBlZFNhbXBsZXJOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5h
bWUpOworc3RkOjpzdHJpbmcgR2V0WGZiQnVmZmVyTmFtZShjb25zdCB1aW50MzJfdCBidWZmZXJJ
bmRleCk7CiAKIC8vIFRyYW5zZm9ybSB0aGUgc291cmNlIHRvIGluY2x1ZGUgYWN0dWFsIGJpbmRp
bmcgcG9pbnRzIGZvciB2YXJpb3VzIHNoYWRlciByZXNvdXJjZXMgKHRleHR1cmVzLAogLy8gYnVm
ZmVycywgeGZiLCBldGMpLiAgRm9yIHNvbWUgdmFyaWFibGVzLCB0aGVzZSB2YWx1ZXMgYXJlIGlu
c3RlYWQgb3V0cHV0IHRvIHRoZSB2YXJpYWJsZUluZm9NYXAKIC8vIHRvIGJlIHNldCBkdXJpbmcg
YSBTUElSLVYgdHJhbnNmb3JtYXRpb24uICBUaGlzIGlzIGEgdHJhbnNpdG9yeSBzdGVwIHRvd2Fy
ZHMgbW92aW5nIGFsbCB2YXJpYWJsZXMKIC8vIHRvIHRoaXMgbWFwLCBhdCB3aGljaCBwb2ludCBH
bHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlIHdpbGwgYWxzbyBiZSBjYWxsZWQgYnkgdGhpcyBmdW5j
dGlvbi4KLXZvaWQgR2xzbGFuZ0dldFNoYWRlclNvdXJjZShjb25zdCBHbHNsYW5nU291cmNlT3B0
aW9ucyAmb3B0aW9ucywKK3ZvaWQgR2xzbGFuZ0dldFNoYWRlclNvdXJjZShHbHNsYW5nU291cmNl
T3B0aW9ucyAmb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlByb2dyYW1MaW5rZWRSZXNvdXJjZXMgJnJlc291cmNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8gKnByb2dyYW1JbnRl
cmZhY2VJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8c3Rk
OjpzdHJpbmc+ICpzaGFkZXJTb3VyY2VzT3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9N
YXAgKnZhcmlhYmxlSW5mb01hcE91dCk7CisKK2FuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtU3BpcnZD
b2RlKGNvbnN0IEdsc2xhbmdFcnJvckNhbGxiYWNrICZjYWxsYmFjaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJs
ZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMl90PiAmaW5pdGlhbFNwaXJ2QmxvYiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwaXJ2QmxvYiAqc3BpcnZCbG9iT3V0KTsKIAot
YW5nbGU6OlJlc3VsdCBHbHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlKEdsc2xhbmdFcnJvckNhbGxi
YWNrIGNhbGxiYWNrLAorYW5nbGU6OlJlc3VsdCBHbHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlKGNv
bnN0IEdsc2xhbmdFcnJvckNhbGxiYWNrICZjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q2FwcyAmZ2xDYXBzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJp
bmc+ICZzaGFkZXJTb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlck1h
cEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8U3BpcnZCbG9iPiAqc3Bp
cnZCbG9ic091dCk7CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX2RhdGEu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2Fk
X2Z1bmN0aW9uc19kYXRhLmpzb24KaW5kZXggMTdkYjBhMmIyNWMyOGZhN2UxYTdjN2U4MDk2Yzc2
OWE1M2MxNzQ1Ni4uYmQ1NTcwMDlmZDUzY2U0NmQwZjUyYmJlNjBmNTBkZTFjYjRjOTU3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xv
YWRfZnVuY3Rpb25zX2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uCkBAIC02NTAsNiArNjUw
LDkgQEAKICAgICB9CiAgIH0sCiAgICJHTF9ERVBUSF9DT01QT05FTlQyNCI6IHsKKyAgICAiRDI0
X1VOT1JNX1g4X1VJTlQiOiB7CisgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkxvYWRSMzJUb1Iy
NEc4IgorICAgIH0sCiAgICAgIkQyNF9VTk9STV9TOF9VSU5UIjogewogICAgICAgIkdMX1VOU0lH
TkVEX0lOVCI6ICJMb2FkUjMyVG9SMjRHOCIKICAgICB9LApAQCAtODc1LDYgKzg3OCwyNiBAQAog
ICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAx
LCAxNj4iCiAgICAgfQogICB9LAorICAiR0xfQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUIjogewor
ICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRU
b05hdGl2ZTw0LCA0LCAxLCA4PiIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1NJR05F
RF9SRURfUkdUQzFfRVhUIjogeworICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxLCA4PiIKKyAgICB9CisgIH0sCisg
ICJHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQiOiB7CisgICAgIk5PTkUiOiB7Cisg
ICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDEs
IDE2PiIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdU
QzJfRVhUIjogeworICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9h
ZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxLCAxNj4iCisgICAgfQorICB9LAogICAiR0xfQ09N
UFJFU1NFRF9SR0JBX0JQVENfVU5PUk1fRVhUIjogewogICAgICJOT05FIjogewogICAgICAgIkdM
X1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxLCAxNj4iCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAK
aW5kZXggMDM0NDAwN2ZjMzAwZDFlZWFiNTE2MWViYjZiNTc3MTA1MmYzMGQ5OC4uZjU3N2JiODE1
ODA3MGE1MGEzNzNhNmQ0YTk3YTgxODJhN2VkMjExYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcApAQCAtMzM4LDYgKzMzOCwzMCBA
QCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9SMTFfRUFDX3RvX1IxNl9VTk9STShH
TGVudW0gdHlwZSkKICAgICB9CiB9CiAKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VE
X1JFRF9HUkVFTl9SR1RDMl9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAg
ICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8
NCwgNCwgMSwgMTY+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVh
Y2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9u
SW5mbyBDT01QUkVTU0VEX1JFRF9SR1RDMV9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2Vk
VG9OYXRpdmU8NCwgNCwgMSwgOD4sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwogTG9hZEltYWdl
RnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkcxMV9FQUNfdG9fRUFDX1IxMUcxMV9VTk9STV9CTE9D
SyhHTGVudW0gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCkBAIC04ODAsNiArOTA0LDMwIEBA
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDX3RvX1IxNl9T
Tk9STShHTGVudW0gdHlwZSkKICAgICB9CiB9CiAKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01Q
UkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJl
c3NlZFRvTmF0aXZlPDQsIDQsIDEsIDE2PiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVF90b19kZWZh
dWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxLCA4PiwgdHJ1ZSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7Cisg
ICAgfQorfQorCiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9TSUdORURfUkcxMV9F
QUNfdG9fRUFDX1IxMUcxMV9TTk9STV9CTE9DSyhHTGVudW0gdHlwZSkKIHsKICAgICBzd2l0Y2gg
KHR5cGUpCkBAIC0xNDM4LDYgKzE0ODYsMTggQEAgTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRI
X0NPTVBPTkVOVDI0X3RvX0QyNF9VTk9STV9TOF9VSU5UKEdMZW51bSB0eXBlKQogICAgIH0KIH0K
IAorTG9hZEltYWdlRnVuY3Rpb25JbmZvIERFUFRIX0NPTVBPTkVOVDI0X3RvX0QyNF9VTk9STV9Y
OF9VSU5UKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkUjMyVG9SMjRHOCwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8gREVQVEhfQ09NUE9ORU5UMjRfdG9fRDMyX0ZMT0FUX1M4WDI0X1VJTlQo
R0xlbnVtIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQpAQCAtMzE3Nyw2ICszMjM3LDEwIEBA
IExvYWRGdW5jdGlvbk1hcCBHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwgRm9ybWF0SUQgYW5nbGVGb3JtYXQpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMy
X0VYVDoKKyAgICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFRf
dG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6Cisg
ICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUX3RvX2RlZmF1bHQ7CiAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKICAgICAgICAgewogICAgICAgICAg
ICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKQEAgLTMzMzAsNiArMzM5NCwxMCBAQCBMb2FkRnVuY3Rp
b25NYXAgR2V0TG9hZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEZvcm1hdElE
IGFuZ2xlRm9ybWF0KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhU
OgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9F
WFRfdG9fZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfUkdU
QzFfRVhUOgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9F
WFRfdG9fZGVmYXVsdDsKICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VB
QzoKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKQEAgLTM1MDcs
NiArMzU3NSw4IEBAIExvYWRGdW5jdGlvbk1hcCBHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgRm9ybWF0SUQgYW5nbGVGb3JtYXQpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgY2FzZSBGb3JtYXRJRDo6RDI0X1VOT1JNX1M4X1VJTlQ6CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBERVBUSF9DT01QT05FTlQyNF90b19EMjRfVU5PUk1fUzhfVUlOVDsK
KyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdElEOjpEMjRfVU5PUk1fWDhfVUlOVDoKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIERFUFRIX0NPTVBPTkVOVDI0X3RvX0QyNF9VTk9STV9YOF9V
SU5UOwogICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0SUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5U
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gREVQVEhfQ09NUE9ORU5UMjRfdG9fRDMyX0ZM
T0FUX1M4WDI0X1VJTlQ7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9C
VUlMRC5nbgppbmRleCA5YzJmNzdlZWU5NTUwZTAwYTE1MjJhMjIyNzkxYmIzMDhkYTY2OWNmLi5j
OGNlMjI4YTZkNzBlMzM0NDA2MGIyYTE0MjUwZmM2ZWQyZWExNTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQlVJTEQuZ24K
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L0JVSUxELmduCkBAIC0xNyw4ICsxNyw4IEBAIF9tZXRhbF9iYWNrZW5kX3NvdXJjZXMgPSBbCiAg
ICJDb250ZXh0TXRsLmgiLAogICAiQ29udGV4dE10bC5tbSIsCiAgICJEaXNwbGF5TXRsLmgiLAot
ICAiRGlzcGxheU10bF9hcGkuaCIsCiAgICJEaXNwbGF5TXRsLm1tIiwKKyAgIkRpc3BsYXlNdGxf
YXBpLmgiLAogICAiRnJhbWVCdWZmZXJNdGwuaCIsCiAgICJGcmFtZUJ1ZmZlck10bC5tbSIsCiAg
ICJQcm9ncmFtTXRsLmgiLApAQCAtNTQsOCArNTQsOCBAQCBfbWV0YWxfYmFja2VuZF9zb3VyY2Vz
ID0gWwogICAibXRsX3N0YXRlX2NhY2hlLm1tIiwKICAgIm10bF91dGlscy5oIiwKICAgIm10bF91
dGlscy5tbSIsCi0gICJzaGFkZXJzL210bF9kZWZhdWx0X3NoYWRlcnNfc3JjX2F1dG9nZW4uaW5j
IiwKICAgInNoYWRlcnMvY29tcGlsZWQvbXRsX2RlZmF1bHRfc2hhZGVycy5pbmMiLAorICAic2hh
ZGVycy9tdGxfZGVmYXVsdF9zaGFkZXJzX3NyY19hdXRvZ2VuLmluYyIsCiBdCiAKIGNvbmZpZygi
YW5nbGVfbWV0YWxfYmFja2VuZF9jb25maWciKSB7CkBAIC04Myw5ICs4Myw3IEBAIGFuZ2xlX3Nv
dXJjZV9zZXQoImFuZ2xlX21ldGFsX2JhY2tlbmQiKSB7CiAgICAgIiR7YW5nbGVfcm9vdH06bGli
QU5HTEVfaGVhZGVycyIsCiAgIF0KIAotICBkZXBzID0gWwotICAgICIke2FuZ2xlX3NwaXJ2X2Ny
b3NzX2Rpcn0vZ246c3BpcnZfY3Jvc3Nfc291cmNlcyIsCi0gIF0KKyAgZGVwcyA9IFsgIiR7YW5n
bGVfc3BpcnZfY3Jvc3NfZGlyfS9nbjpzcGlydl9jcm9zc19zb3VyY2VzIiBdCiAKICAgb2JqY19m
bGFncyA9IFsKICAgICAiLVduby1udWxsYWJpbGl0eS1jb21wbGV0ZW5lc3MiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Nv
bnRleHRNdGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9Db250ZXh0TXRsLmgKaW5kZXggYjQzZGIzZThlZDBlMDVlMjYxNGNkM2E5NjQ4NTcz
MGJjYTU1NjQ4OS4uMDM4NzJhODYyNzI0ZjRhYmRlZTc4OWNjMjIwMjFlNTRkZjJjYjI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL0NvbnRleHRNdGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oCkBAIC0xMjIsMTMgKzEyMiwxNiBAQCBjbGFz
cyBDb250ZXh0TXRsIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgbXRsOjpDb250ZXh0CiAg
ICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgLy8gRVhUX2RlYnVnX21hcmtlcgotICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xz
aXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwdXNo
R3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQg
aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3Zl
cnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgs
IGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwb3BHcm91
cE1hcmtlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gS0hSX2RlYnVnCi0gICAgdm9pZCBwdXNoRGVi
dWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNz
YWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcERlYnVnR3JvdXAoKSBvdmVycmlkZTsKKyAgICBh
bmdsZTo6UmVzdWx0IHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBh
bmdsZTo6UmVzdWx0IHBvcERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92
ZXJyaWRlOwogCiAgICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJpdHMuCiAgICAgYW5nbGU6
OlJlc3VsdCBzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCkBAIC0xODQsOSAr
MTg3LDYgQEAgY2xhc3MgQ29udGV4dE10bCA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIG10
bDo6Q29udGV4dAogICAgIC8vIFByb2dyYW0gUGlwZWxpbmUgb2JqZWN0IGNyZWF0aW9uCiAgICAg
UHJvZ3JhbVBpcGVsaW5lSW1wbCAqY3JlYXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnN0IGdsOjpQcm9n
cmFtUGlwZWxpbmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CiAKLSAgICAvLyBQYXRoIG9iamVjdCBj
cmVhdGlvbgotICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhzKEdMc2l6ZWkp
IG92ZXJyaWRlOwotCiAgICAgLy8gTWVtb3J5IG9iamVjdCBjcmVhdGlvbi4KICAgICBNZW1vcnlP
YmplY3RJbXBsICpjcmVhdGVNZW1vcnlPYmplY3QoKSBvdmVycmlkZTsKIApAQCAtMzkwLDYgKzM5
MCwxMCBAQCBjbGFzcyBDb250ZXh0TXRsIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgbXRs
OjpDb250ZXh0CiAKICAgICAgICAgLy8gV2UnbGwgdXNlIHgsIHksIHosIHcgZm9yIG5lYXIgLyBm
YXIgLyBkaWZmIC8genNjYWxlIHJlc3BlY3RpdmVseS4KICAgICAgICAgZmxvYXQgZGVwdGhSYW5n
ZVs0XTsKKworICAgICAgICAvLyBVc2VkIHRvIHByZS1yb3RhdGUgZ2xfUG9zaXRpb24gZm9yIFZ1
bGthbiBzd2FwY2hhaW4gaW1hZ2VzIG9uIEFuZHJvaWQgKGEgbWF0Miwgd2hpY2ggaXMKKyAgICAg
ICAgLy8gcGFkZGVkIHRvIHRoZSBzaXplIG9mIHR3byB2ZWM0J3MpLgorICAgICAgICBmbG9hdCBw
cmVSb3RhdGlvbls4XTsKICAgICB9OwogCiAgICAgc3RydWN0IERlZmF1bHRBdHRyaWJ1dGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9Db250ZXh0TXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwubW0KaW5kZXggZTQ4YzZkZWQ0YTA5ZWQ5Y2ZjZmJm
MTM1Y2VhOGYyNjhjMGU1NjA4Ny4uODBkZWU1Nzc4MjMyM2Y0YjRhYTBlNjEzMzlkMzZhY2Q4NzI5
MDllZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL0NvbnRleHRNdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwubW0KQEAgLTQ4MywxNiArNDgz
LDM0IEBAIHN0ZDo6c3RyaW5nIENvbnRleHRNdGw6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBj
b25zdAogfQogCiAvLyBFWFRfZGVidWdfbWFya2VyCi12b2lkIENvbnRleHRNdGw6Omluc2VydEV2
ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIHt9Ci12b2lkIENv
bnRleHRNdGw6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFy
a2VyKSB7fQotdm9pZCBDb250ZXh0TXRsOjpwb3BHcm91cE1hcmtlcigpCithbmdsZTo6UmVzdWx0
IENvbnRleHRNdGw6Omluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFy
ICptYXJrZXIpCiB7Ci0gICAgLy8gVE9ETyhocWxlCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOworfQorCithbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OnB1c2hHcm91cE1hcmtl
cihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRsOjpwb3BH
cm91cE1hcmtlcigpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQog
CiAvLyBLSFJfZGVidWcKLXZvaWQgQ29udGV4dE10bDo6cHVzaERlYnVnR3JvdXAoR0xlbnVtIHNv
dXJjZSwgR0x1aW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkge30KLXZvaWQgQ29u
dGV4dE10bDo6cG9wRGVidWdHcm91cCgpIHt9CithbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OnB1
c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKQoreworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBDb250
ZXh0TXRsOjpwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KIAogLy8gU3RhdGUgc3luYyB3aXRo
IGRpcnR5IGJpdHMuCiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OnN5bmNTdGF0ZShjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCwKQEAgLTcwMCw4ICs3MTgsNiBAQCBhbmdsZTo6UmVzdWx0IENv
bnRleHRNdGw6OnN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ09W
RVJBR0VfTU9EVUxBVElPTjoKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkc6Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0ZSQU1FQlVGRkVS
X1NSR0I6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0
ZTo6RElSVFlfQklUX0NVUlJFTlRfVkFMVUVTOgpAQCAtODQ4LDEzICs4NjQsNiBAQCBQcm9ncmFt
UGlwZWxpbmVJbXBsICpDb250ZXh0TXRsOjpjcmVhdGVQcm9ncmFtUGlwZWxpbmUoY29uc3QgZ2w6
OlByb2dyYW1QaXBlbGluZQogICAgIHJldHVybiBudWxscHRyOwogfQogCi0vLyBQYXRoIG9iamVj
dCBjcmVhdGlvbgotc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4dE10bDo6Y3JlYXRlUGF0
aHMoR0xzaXplaSkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6dmVj
dG9yPFBhdGhJbXBsICo+KCk7Ci19Ci0KIC8vIE1lbW9yeSBvYmplY3QgY3JlYXRpb24uCiBNZW1v
cnlPYmplY3RJbXBsICpDb250ZXh0TXRsOjpjcmVhdGVNZW1vcnlPYmplY3QoKQogewpAQCAtMTQz
NSw4ICsxNDQ0LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRsOjpzZXR1cERyYXcoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgQU5HTEVfVFJZKGhhbmRsZURp
cnR5RGVwdGhCaWFzKGNvbnRleHQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgRElSVFlfQklUX1NURU5DSUxfUkVGOgotICAgICAgICAgICAgICAgIG1SZW5kZXJF
bmNvZGVyLnNldFN0ZW5jaWxSZWZWYWxzKG1TdGVuY2lsUmVmRnJvbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0ZW5jaWxSZWZCYWNrKTsKKyAg
ICAgICAgICAgICAgICBtUmVuZGVyRW5jb2Rlci5zZXRTdGVuY2lsUmVmVmFscyhtU3RlbmNpbFJl
ZkZyb250LCBtU3RlbmNpbFJlZkJhY2spOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBESVJUWV9CSVRfQkxFTkRfQ09MT1I6CiAgICAgICAgICAgICAgICAgbVJlbmRl
ckVuY29kZXIuc2V0QmxlbmRDb2xvcigKQEAgLTE1MjksOCArMTUzNyw4IEBAIGFuZ2xlOjpSZXN1
bHQgQ29udGV4dE10bDo6aGFuZGxlRGlydHlBY3RpdmVUZXh0dXJlcyhjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCkKICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICA9IG1TdGF0ZTsKICAg
ICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbSgpOwogCi0g
ICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJnRleHR1cmVzID0gZ2xTdGF0
ZS5nZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCk7Ci0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVN
YXNrICZhY3RpdmVUZXh0dXJlcyAgID0gcHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCk7
CisgICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVzQ2FjaGUgJnRleHR1cmVzICAgICA9IGdsU3Rh
dGUuZ2V0QWN0aXZlVGV4dHVyZXNDYWNoZSgpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJl
TWFzayAmYWN0aXZlVGV4dHVyZXMgPSBwcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkuZ2V0QWN0aXZl
U2FtcGxlcnNNYXNrKCk7CiAKICAgICBmb3IgKHNpemVfdCB0ZXh0dXJlVW5pdCA6IGFjdGl2ZVRl
eHR1cmVzKQogICAgIHsKQEAgLTE1OTAsNiArMTU5OCwxNiBAQCBhbmdsZTo6UmVzdWx0IENvbnRl
eHRNdGw6OmhhbmRsZURpcnR5RHJpdmVyVW5pZm9ybXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpCiAgICAgbURyaXZlclVuaWZvcm1zLmRlcHRoUmFuZ2VbMl0gPSBkZXB0aFJhbmdlRGlmZjsK
ICAgICBtRHJpdmVyVW5pZm9ybXMuZGVwdGhSYW5nZVszXSA9IE5lZWRUb0ludmVydERlcHRoUmFu
Z2UoZGVwdGhSYW5nZU5lYXIsIGRlcHRoUmFuZ2VGYXIpID8gLTEgOiAxOwogCisgICAgLy8gRmls
bCBpbiBhIG1hdDIgaWRlbnRpdHkgbWF0cml4LCBwbHVzIHBhZGRpbmcKKyAgICBtRHJpdmVyVW5p
Zm9ybXMucHJlUm90YXRpb25bMF0gPSAxLjBmOworICAgIG1Ecml2ZXJVbmlmb3Jtcy5wcmVSb3Rh
dGlvblsxXSA9IDAuMGY7CisgICAgbURyaXZlclVuaWZvcm1zLnByZVJvdGF0aW9uWzJdID0gMC4w
ZjsKKyAgICBtRHJpdmVyVW5pZm9ybXMucHJlUm90YXRpb25bM10gPSAwLjBmOworICAgIG1Ecml2
ZXJVbmlmb3Jtcy5wcmVSb3RhdGlvbls0XSA9IDAuMGY7CisgICAgbURyaXZlclVuaWZvcm1zLnBy
ZVJvdGF0aW9uWzVdID0gMS4wZjsKKyAgICBtRHJpdmVyVW5pZm9ybXMucHJlUm90YXRpb25bNl0g
PSAwLjBmOworICAgIG1Ecml2ZXJVbmlmb3Jtcy5wcmVSb3RhdGlvbls3XSA9IDAuMGY7CisKICAg
ICBBU1NFUlQobVJlbmRlckVuY29kZXIudmFsaWQoKSk7CiAgICAgbVJlbmRlckVuY29kZXIuc2V0
RnJhZ21lbnREYXRhKG1Ecml2ZXJVbmlmb3JtcywgbXRsOjprRHJpdmVyVW5pZm9ybXNCaW5kaW5n
SW5kZXgpOwogICAgIG1SZW5kZXJFbmNvZGVyLnNldFZlcnRleERhdGEobURyaXZlclVuaWZvcm1z
LCBtdGw6OmtEcml2ZXJVbmlmb3Jtc0JpbmRpbmdJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rp
c3BsYXlNdGwuaAppbmRleCA4MTkwMDQyMDdjYTZiMTk1Y2JhMzlkMWJmNzdhNTVlODg0ZTJhMDQz
Li5mMDkzNzUwNzE3OGUxNDk3NzE0YWYzODc0MGI5YjAyYzNjNTRmNjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxh
eU10bC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9EaXNwbGF5TXRsLmgKQEAgLTE1Niw2ICsxNTYsOSBAQCBjbGFzcyBEaXNwbGF5TXRs
IDogcHVibGljIERpc3BsYXlJbXBsCiAgICAgbXV0YWJsZSBnbDo6TGltaXRhdGlvbnMgbU5hdGl2
ZUxpbWl0YXRpb25zOwogCiAgICAgYW5nbGU6OkZlYXR1cmVzTXRsIG1GZWF0dXJlczsKKworICAg
IC8vIHRyYWNrIHdoZXRoZXIgd2UgaW5pdGlhbGl6ZWQgKG9yIHJlbGVhc2VkKSBnbHNsYW5nCisg
ICAgYm9vbCBtR2xzbGFuZ0luaXRpYWxpemVkOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvRGlzcGxheU10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCmluZGV4IDhkYTk3MDBlZjY4MWMwNTkwNGEy
YmY0NDdkNmRjNWIyNjNhYjM5OTYuLjBjOGMyODEyNmFhMjRkODE2N2Y5OGNmZDJiN2Y2MTYyMTVh
MDc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tCkBAIC0zNyw3ICszNyw5
IEBAIERpc3BsYXlJbXBsICpDcmVhdGVNZXRhbERpc3BsYXkoY29uc3QgZWdsOjpEaXNwbGF5U3Rh
dGUgJnN0YXRlKQogICAgIHJldHVybiBuZXcgRGlzcGxheU10bChzdGF0ZSk7CiB9CiAKLURpc3Bs
YXlNdGw6OkRpc3BsYXlNdGwoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKSA6IERpc3Bs
YXlJbXBsKHN0YXRlKSwgbVV0aWxzKHRoaXMpIHt9CitEaXNwbGF5TXRsOjpEaXNwbGF5TXRsKGNv
bnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSkKKyAgICA6IERpc3BsYXlJbXBsKHN0YXRlKSwg
bVV0aWxzKHRoaXMpLCBtR2xzbGFuZ0luaXRpYWxpemVkKGZhbHNlKQore30KIAogRGlzcGxheU10
bDo6fkRpc3BsYXlNdGwoKSB7fQogCkBAIC02Nyw3ICs2OSwxMSBAQCBhbmdsZTo6UmVzdWx0IERp
c3BsYXlNdGw6OmluaXRpYWxpemVJbXBsKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKIAogICAgICAg
ICBtQ2Fwc0luaXRpYWxpemVkID0gZmFsc2U7CiAKLSAgICAgICAgR2xzbGFuZ0luaXRpYWxpemUo
KTsKKyAgICAgICAgaWYgKCFtR2xzbGFuZ0luaXRpYWxpemVkKQorICAgICAgICB7CisgICAgICAg
ICAgICBHbHNsYW5nSW5pdGlhbGl6ZSgpOworICAgICAgICAgICAgbUdsc2xhbmdJbml0aWFsaXpl
ZCA9IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1TdGF0ZS5mZWF0dXJlc0FsbERp
c2FibGVkKQogICAgICAgICB7CkBAIC05MSw3ICs5NywxMSBAQCB2b2lkIERpc3BsYXlNdGw6OnRl
cm1pbmF0ZSgpCiAgICAgbU1ldGFsRGV2aWNlICAgICA9IG5pbDsKICAgICBtQ2Fwc0luaXRpYWxp
emVkID0gZmFsc2U7CiAKLSAgICBHbHNsYW5nUmVsZWFzZSgpOworICAgIGlmIChtR2xzbGFuZ0lu
aXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgR2xzbGFuZ1JlbGVhc2UoKTsKKyAgICAgICAgbUds
c2xhbmdJbml0aWFsaXplZCA9IGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBEaXNwbGF5TXRsOjp0
ZXN0RGV2aWNlTG9zdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwuaAppbmRleCBmOWY1
ZTlkZmI0MWZhMDFjMjRiNzBjOTAwNWI5YTZkYmVmMzJlODA1Li5lMjg2MjU0N2EyMDU2Y2I0NGQ2
OTllMjUxNmI1YWNiMDhhZGI5NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLmgK
QEAgLTk5LDExICs5OSw2IEBAIGNsYXNzIFByb2dyYW1NdGwgOiBwdWJsaWMgUHJvZ3JhbUltcGwK
ICAgICB2b2lkIGdldFVuaWZvcm1pdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQg
bG9jYXRpb24sIEdMaW50ICpwYXJhbXMpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5p
Zm9ybXVpdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCAqcGFyYW1zKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0UGF0aEZyYWdtZW50SW5w
dXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKmNvZWZmcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBDYWxscyB0aGlzIGJl
Zm9yZSBkcmF3aW5nLCBjaGFuZ2VkUGlwZWxpbmVEZXNjIGlzIHBhc3NlZCB3aGVuIHZlcnRleCBh
dHRyaWJ1dGVzIGRlc2MgYW5kL29yCiAgICAgLy8gc2hhZGVyIHByb2dyYW0gY2hhbmdlZC4KICAg
ICBhbmdsZTo6UmVzdWx0IHNldHVwRHJhdyhjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LApA
QCAtMTMyLDcgKzEyNyw5IEBAIGNsYXNzIFByb2dyYW1NdGwgOiBwdWJsaWMgUHJvZ3JhbUltcGwK
IAogICAgIHZvaWQgcmVzZXQoQ29udGV4dE10bCAqY29udGV4dCk7CiAgICAgdm9pZCBsaW5rUmVz
b3VyY2VzKGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMpOwotICAg
IGFuZ2xlOjpSZXN1bHQgbGlua0ltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwgZ2w6
OkluZm9Mb2cgJmluZm9Mb2cpOworICAgIGFuZ2xlOjpSZXN1bHQgbGlua0ltcGwoY29uc3QgZ2w6
OkNvbnRleHQgKmdsQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZyk7CiAgICAgYW5nbGU6OlJlc3VsdCBjb252ZXJ0
VG9Nc2woY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nLApAQCAtMTYxLDEwICsxNTgsNiBAQCBj
bGFzcyBQcm9ncmFtTXRsIDogcHVibGljIFByb2dyYW1JbXBsCiAgICAgZ2w6OlNoYWRlckJpdFNl
dCBtU2FtcGxlckJpbmRpbmdzRGlydHk7CiAgICAgZ2w6OlNoYWRlck1hcDxEZWZhdWx0VW5pZm9y
bUJsb2NrPiBtRGVmYXVsdFVuaWZvcm1CbG9ja3M7CiAKLSAgICAvLyBXZSBrZWVwIHRoZSB0cmFu
c2xhdGVkIGxpbmtlZCBzaGFkZXIgc291cmNlcyB0byB1c2Ugd2l0aCBzaGFkZXIgZHJhdyBjYWxs
IHBhdGNoaW5nLgotICAgIGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+IG1TaGFkZXJTb3VyY2U7
Ci0gICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwIG1WYXJpYWJsZUluZm9NYXA7Ci0K
ICAgICBtdGw6OlJlbmRlclBpcGVsaW5lQ2FjaGUgbU1ldGFsUmVuZGVyUGlwZWxpbmVDYWNoZTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9Qcm9ncmFtTXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KaW5kZXggZWQ0N2E4YTliOGMw
MGQ2MDZiZDgzZWU5NjEwMGI5YTBiNzY0Mzc1ZS4uOTc5ZGFjZjk3MWQ5NTZiODFjNWI5YzhjNTg3
NGJmMzZiYjY2ZDI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwubW0KQEAgLTI5
NSwxMyArMjk1LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxMaW5rRXZlbnQ+IFByb2dyYW1NdGw6Omxp
bmsoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgLy8gYXNzaWdubWVudCBkb25lIGlu
IHRoYXQgZnVuY3Rpb24uCiAgICAgbGlua1Jlc291cmNlcyhyZXNvdXJjZXMpOwogCi0gICAgbXRs
OjpHbHNsYW5nR2V0U2hhZGVyU291cmNlKG1TdGF0ZSwgcmVzb3VyY2VzLCAmbVNoYWRlclNvdXJj
ZSwgJm1WYXJpYWJsZUluZm9NYXApOwotCiAgICAgLy8gTk9URShocWxlKTogUGFyYWxsZWxpemUg
bGlua2luZy4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rRXZlbnREb25lPihsaW5r
SW1wbChjb250ZXh0LCBpbmZvTG9nKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlu
a0V2ZW50RG9uZT4obGlua0ltcGwoY29udGV4dCwgcmVzb3VyY2VzLCBpbmZvTG9nKSk7CiB9CiAK
LWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6bGlua0ltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmds
Q29udGV4dCwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCithbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6
OmxpbmtJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNv
dXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZp
bmZvTG9nKQogewogICAgIENvbnRleHRNdGwgKmNvbnRleHRNdGwgPSBtdGw6OkdldEltcGwoZ2xD
b250ZXh0KTsKICAgICAvLyBOT1RFKGhxbGUpOiBObyB0cmFuc2Zvcm0gZmVlZGJhY2tzIGZvciBu
b3csIHNpbmNlIHdlIG9ubHkgc3VwcG9ydCBFUyAyLjAgYXRtCkBAIC0zMTAsMTAgKzMxMCwxNSBA
QCBhbmdsZTo6UmVzdWx0IFByb2dyYW1NdGw6OmxpbmtJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpn
bENvbnRleHQsIGdsOjpJbmZvTG9nICZpbgogCiAgICAgQU5HTEVfVFJZKGluaXREZWZhdWx0VW5p
Zm9ybUJsb2NrcyhnbENvbnRleHQpKTsKIAorICAgIC8vIEdhdGhlciB2YXJpYWJsZSBpbmZvIGFu
ZCB0cmFuc2Zvcm0gc291cmNlcy4KKyAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiBzaGFk
ZXJTb3VyY2VzOworICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCB2YXJpYWJs
ZUluZm9NYXA7CisgICAgbXRsOjpHbHNsYW5nR2V0U2hhZGVyU291cmNlKG1TdGF0ZSwgcmVzb3Vy
Y2VzLCAmc2hhZGVyU291cmNlcywgJnZhcmlhYmxlSW5mb01hcCk7CisKICAgICAvLyBDb252ZXJ0
IEdMU0wgdG8gc3BpcnYgY29kZQogICAgIGdsOjpTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8dWludDMy
X3Q+PiBzaGFkZXJDb2RlczsKLSAgICBBTkdMRV9UUlkobXRsOjpHbHNsYW5nR2V0U2hhZGVyU3Bp
cnZDb2RlKGNvbnRleHRNdGwsIGNvbnRleHRNdGwtPmdldENhcHMoKSwgbVNoYWRlclNvdXJjZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1WYXJpYWJsZUlu
Zm9NYXAsICZzaGFkZXJDb2RlcykpOworICAgIEFOR0xFX1RSWShtdGw6Okdsc2xhbmdHZXRTaGFk
ZXJTcGlydkNvZGUoY29udGV4dE10bCwgY29udGV4dE10bC0+Z2V0Q2FwcygpLCBzaGFkZXJTb3Vy
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGVJbmZvTWFwLCAmc2hhZGVyQ29kZXMpKTsKIAogICAgIC8vIENvbnZlcnQgc3BpcnYgY29kZSB0
byBNU0wKICAgICBBTkdMRV9UUlkoY29udmVydFRvTXNsKGdsQ29udGV4dCwgZ2w6OlNoYWRlclR5
cGU6OlZlcnRleCwgaW5mb0xvZywKQEAgLTc3NywxNCArNzgyLDYgQEAgdm9pZCBQcm9ncmFtTXRs
OjpzZXRVbmlmb3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgc2V0VW5pZm9ybU1h
dHJpeGZ2PDQsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKLXZv
aWQgUHJvZ3JhbU10bDo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcg
JmlucHV0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci19Ci0KIHZv
aWQgUHJvZ3JhbU10bDo6Z2V0VW5pZm9ybWZ2KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKSBjb25zdAogewogICAgIGdldFVuaWZvcm1J
bXBsKGxvY2F0aW9uLCBwYXJhbXMsIEdMX0ZMT0FUKTsKQEAgLTg3Miw3ICs4NjksNyBAQCBhbmds
ZTo6UmVzdWx0IFByb2dyYW1NdGw6OnVwZGF0ZVRleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpn
bENvbnRleHQsCiB7CiAgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSA9IGdsQ29udGV4dC0+Z2V0U3Rh
dGUoKTsKIAotICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlUG9pbnRlckFycmF5ICZjb21wbGV0
ZVRleHR1cmVzID0gZ2xTdGF0ZS5nZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCk7CisgICAgY29uc3Qg
Z2w6OkFjdGl2ZVRleHR1cmVzQ2FjaGUgJmNvbXBsZXRlVGV4dHVyZXMgPSBnbFN0YXRlLmdldEFj
dGl2ZVRleHR1cmVzQ2FjaGUoKTsKIAogICAgIGZvciAoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlw
ZSA6IGdsOjpBbGxHTEVTMlNoYWRlclR5cGVzKCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N1cmZhY2VNdGwu
bW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
U3VyZmFjZU10bC5tbQppbmRleCBiOTgzNDc0YTZmMmJlOGYzMmRiNzc1MDdiNTIxZjgxNGVjMmY1
ZmE1Li5hMmJjZmU1NTU4ZTEwNThhODVmZGFkNzVjYjgyNjIzZGQ2ZDM2YWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3Vy
ZmFjZU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbQpAQCAtMjI2LDcgKzIyNiwxMyBAQCB2b2lkIFN1cmZh
Y2VNdGw6OmRlc3Ryb3koY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQogICAgIG1EZXB0aFRl
eHR1cmUgICAgPSBudWxscHRyOwogICAgIG1TdGVuY2lsVGV4dHVyZSAgPSBudWxscHRyOwogICAg
IG1DdXJyZW50RHJhd2FibGUgPSBuaWw7Ci0gICAgbU1ldGFsTGF5ZXIgICAgICA9IG5pbDsKKyAg
ICBpZiAobU1ldGFsTGF5ZXIgJiYgbU1ldGFsTGF5ZXIuZ2V0KCkgIT0gbUxheWVyKQorICAgIHsK
KyAgICAgICAgLy8gSWYgd2UgY3JlYXRlZCBtZXRhbCBsYXllciBpbiBTdXJmYWNlTXRsOjppbml0
aWFsaXplKCksCisgICAgICAgIC8vIHdlIG5lZWQgdG8gZGV0YWNoIGl0IGZyb20gc3VwZXIgbGF5
ZXIgbm93LgorICAgICAgICBbbU1ldGFsTGF5ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5ZXJd
OworICAgIH0KKyAgICBtTWV0YWxMYXllciA9IG5pbDsKIH0KIAogZWdsOjpFcnJvciBTdXJmYWNl
TXRsOjppbml0aWFsaXplKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxf
Zm9ybWF0X21hcC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL21ldGFsL210bF9mb3JtYXRfbWFwLmpzb24KaW5kZXggMDViOTliMTAzYzVlNGJjMjcz
YjU5Y2JkNzVlZjViMmE2YThjY2Y2MS4uYmQ1OGYxMjI2YTFkNGJmZjQ0Mjc2Yzk1NWUxY2JmZmMw
ODc2ZWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfbWFwLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfbWFwLmpzb24K
QEAgLTU0LDcgKzU0LDExIEBACiAgICAgICAgICAgICAiQkMyX1JHQkFfVU5PUk1fQkxPQ0siOiAi
TVRMUGl4ZWxGb3JtYXRCQzJfUkdCQSIsCiAgICAgICAgICAgICAiQkMyX1JHQkFfVU5PUk1fU1JH
Ql9CTE9DSyI6ICJNVExQaXhlbEZvcm1hdEJDMl9SR0JBX3NSR0IiLAogICAgICAgICAgICAgIkJD
M19SR0JBX1VOT1JNX0JMT0NLIjogIk1UTFBpeGVsRm9ybWF0QkMzX1JHQkEiLAotICAgICAgICAg
ICAgIkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiAiTVRMUGl4ZWxGb3JtYXRCQzNfUkdCQV9z
UkdCIgorICAgICAgICAgICAgIkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiAiTVRMUGl4ZWxG
b3JtYXRCQzNfUkdCQV9zUkdCIiwKKyAgICAgICAgICAgICJCQzRfUkVEX1VOT1JNX0JMT0NLIjog
Ik1UTFBpeGVsRm9ybWF0QkM0X1JVbm9ybSIsCisgICAgICAgICAgICAiQkM0X1JFRF9TTk9STV9C
TE9DSyI6ICJNVExQaXhlbEZvcm1hdEJDNF9SU25vcm0iLAorICAgICAgICAgICAgIkJDNV9SR19V
Tk9STV9CTE9DSyI6ICJNVExQaXhlbEZvcm1hdEJDNV9SR1Vub3JtIiwKKyAgICAgICAgICAgICJC
QzVfUkdfU05PUk1fQkxPQ0siOiAiTVRMUGl4ZWxGb3JtYXRCQzVfUkdTbm9ybSIKICAgICAgICAg
fSwKICAgICAgICAgIm92ZXJyaWRlIjogewogICAgICAgICAgICAgIkw4X1VOT1JNIjogIlI4RzhC
OEE4X1VOT1JNIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3RhYmxlX2F1dG9nZW4ubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF90
YWJsZV9hdXRvZ2VuLm1tCmluZGV4IGJhYTU3ODI3ODdjMDY0OTY3YzI0NDc0NWM3OTcyNDhjZTc1
MWYzMDMuLmVkN2NiNGFiODA5MTY2YzM2ODA0MTAxZmUzNTk0NjlmNGNkMWE1ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9t
dGxfZm9ybWF0X3RhYmxlX2F1dG9nZW4ubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5tbQpA
QCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCiAvLyBHZW5l
cmF0ZWQgYnkgZ2VuX210bF9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIG10bF9mb3Jt
YXRfbWFwLmpzb24KIC8vCi0vLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtNDU0LDYgKzQ1NCwyNiBAQCB2b2lk
IEZvcm1hdDo6aW5pdChjb25zdCBEaXNwbGF5TXRsICpkaXNwbGF5LCBhbmdsZTo6Rm9ybWF0SUQg
aW50ZW5kZWRGb3JtYXRJZF8pCiAgICAgICAgICAgICB0aGlzLT5hY3R1YWxGb3JtYXRJZCA9IGFu
Z2xlOjpGb3JtYXRJRDo6QkMzX1JHQkFfVU5PUk1fU1JHQl9CTE9DSzsKICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1NOT1JNX0JMT0NL
OgorICAgICAgICAgICAgdGhpcy0+bWV0YWxGb3JtYXQgICAgPSBNVExQaXhlbEZvcm1hdEJDNF9S
U25vcm07CisgICAgICAgICAgICB0aGlzLT5hY3R1YWxGb3JtYXRJZCA9IGFuZ2xlOjpGb3JtYXRJ
RDo6QkM0X1JFRF9TTk9STV9CTE9DSzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1VOT1JNX0JMT0NLOgorICAgICAgICAgICAgdGhp
cy0+bWV0YWxGb3JtYXQgICAgPSBNVExQaXhlbEZvcm1hdEJDNF9SVW5vcm07CisgICAgICAgICAg
ICB0aGlzLT5hY3R1YWxGb3JtYXRJZCA9IGFuZ2xlOjpGb3JtYXRJRDo6QkM0X1JFRF9VTk9STV9C
TE9DSzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgYW5nbGU6OkZvcm1hdElE
OjpCQzVfUkdfU05PUk1fQkxPQ0s6CisgICAgICAgICAgICB0aGlzLT5tZXRhbEZvcm1hdCAgICA9
IE1UTFBpeGVsRm9ybWF0QkM1X1JHU25vcm07CisgICAgICAgICAgICB0aGlzLT5hY3R1YWxGb3Jt
YXRJZCA9IGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1NOT1JNX0JMT0NLOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9SR19VTk9STV9CTE9D
SzoKKyAgICAgICAgICAgIHRoaXMtPm1ldGFsRm9ybWF0ICAgID0gTVRMUGl4ZWxGb3JtYXRCQzVf
UkdVbm9ybTsKKyAgICAgICAgICAgIHRoaXMtPmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1h
dElEOjpCQzVfUkdfVU5PUk1fQkxPQ0s7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBj
YXNlIGFuZ2xlOjpGb3JtYXRJRDo6RDE2X1VOT1JNOgogICAgICAgICAgICAgdGhpcy0+bWV0YWxG
b3JtYXQgICAgPSBNVExQaXhlbEZvcm1hdERlcHRoMTZVbm9ybTsKICAgICAgICAgICAgIHRoaXMt
PmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElEOjpEMTZfVU5PUk07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X2dsc2xhbmdfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ191dGlscy5oCmluZGV4IDkyYmQxY2I0NmQ4N2ZhZTg3
NDUxZjE0YzJhZjQzYjM0ZTVmYWIzMDEuLjRlMzUxZWFkNzQ4YzdlZGUxYmVlNDkyOWJiOWEzNTcz
MGIyYTBjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ191dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ191dGlscy5o
CkBAIC0yMiwxMiArMjIsMTIgQEAgbmFtZXNwYWNlIG10bAogdm9pZCBHbHNsYW5nR2V0U2hhZGVy
U291cmNlKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNlcyAmcmVzb3Vy
Y2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJp
bmc+ICpzaGFkZXJTb3VyY2VzT3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
ckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZh
cmlhYmxlSW5mb01hcE91dCk7CiAKIGFuZ2xlOjpSZXN1bHQgR2xzbGFuZ0dldFNoYWRlclNwaXJ2
Q29kZShFcnJvckhhbmRsZXIgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmdsQ2FwcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiAmc2hh
ZGVyU291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJNYXBJbnRlcmZh
Y2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6dmVjdG9yPHVpbnQzMl90Pj4g
KnNoYWRlckNvZGVPdXQpOwogfSAgLy8gbmFtZXNwYWNlIG10bAogfSAgLy8gbmFtZXNwYWNlIHJ4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX2dsc2xhbmdfdXRpbHMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2dsc2xhbmdfdXRpbHMubW0KaW5kZXggM2Nl
Y2I4NWI2NjQzMmNiNmY0ODVhZGM1MjE5NjA0NjJhY2MzOWIzNS4uNTA4ZmM3OThkMDkzMTcwNTcw
NTkxZDQ0NWVmODAwMGUzYmI5M2YyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX3V0aWxzLm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxf
Z2xzbGFuZ191dGlscy5tbQpAQCAtMjIsMjEgKzIyLDI3IEBAIGFuZ2xlOjpSZXN1bHQgSGFuZGxl
RXJyb3IoRXJyb3JIYW5kbGVyICpjb250ZXh0LCBHbHNsYW5nRXJyb3IpCiAgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OlN0b3A7CiB9CiAKLUdsc2xhbmdTb3VyY2VPcHRpb25zIENyZWF0ZVNvdXJj
ZU9wdGlvbnMoKQordm9pZCBSZXNldEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyhHbHNsYW5n
UHJvZ3JhbUludGVyZmFjZUluZm8gKnByb2dyYW1JbnRlcmZhY2VJbmZvKQogewotICAgIEdsc2xh
bmdTb3VyY2VPcHRpb25zIG9wdGlvbnM7CiAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgdXNlIGRl
c2NyaXB0b3Igc2V0IGZvciBub3csIHRoZSBhY3R1YWwgYmluZGluZyB3aWxsIGJlIGRvbmUgaW5z
aWRlCiAgICAgLy8gUHJvZ3JhbU10bCB1c2luZyBzcGlydi1jcm9zcy4KLSAgICBvcHRpb25zLnVu
aWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4ID0ga0RlZmF1bHRVbmlmb3Jtc0JpbmRpbmdJ
bmRleDsKLSAgICBvcHRpb25zLnRleHR1cmVEZXNjcmlwdG9yU2V0SW5kZXggICAgICAgID0gMDsK
LSAgICBvcHRpb25zLmRyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4ID0ga0RyaXZlclVu
aWZvcm1zQmluZGluZ0luZGV4OworICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT51bmlmb3Jtc0Fu
ZFhmYkRlc2NyaXB0b3JTZXRJbmRleCA9IGtEZWZhdWx0VW5pZm9ybXNCaW5kaW5nSW5kZXg7Cisg
ICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRVbmlmb3JtQmluZGluZ0luZGV4ICAgICAg
ID0gMDsKKyAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+dGV4dHVyZURlc2NyaXB0b3JTZXRJbmRl
eCAgICAgICAgPSAwOworICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50VGV4dHVyZUJp
bmRpbmdJbmRleCAgICAgICA9IDA7CisgICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPmRyaXZlclVu
aWZvcm1zRGVzY3JpcHRvclNldEluZGV4ID0ga0RyaXZlclVuaWZvcm1zQmluZGluZ0luZGV4Owog
ICAgIC8vIE5PVEUoaHFsZSk6IFVudXNlZCBmb3Igbm93LCB1bnRpbCB3ZSBzdXBwb3J0IEVTIDMu
MAotICAgIG9wdGlvbnMuc2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXggPSAtMTsKLSAg
ICBvcHRpb25zLnhmYkJpbmRpbmdJbmRleFN0YXJ0ICAgICAgICAgICAgID0gLTE7CisgICAgcHJv
Z3JhbUludGVyZmFjZUluZm8tPnNoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4ICA9IC0x
OworICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50U2hhZGVyUmVzb3VyY2VCaW5kaW5n
SW5kZXggPSAwOworICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5sb2NhdGlvbnNVc2VkRm9yWGZi
RXh0ZW5zaW9uICAgICAgPSAwOwogCiAgICAgc3RhdGljX2Fzc2VydChrRGVmYXVsdFVuaWZvcm1z
QmluZGluZ0luZGV4ICE9IDAsICJrRGVmYXVsdFVuaWZvcm1zQmluZGluZ0luZGV4IG11c3Qgbm90
IGJlIDAiKTsKICAgICBzdGF0aWNfYXNzZXJ0KGtEcml2ZXJVbmlmb3Jtc0JpbmRpbmdJbmRleCAh
PSAwLCAia0RyaXZlclVuaWZvcm1zQmluZGluZ0luZGV4IG11c3Qgbm90IGJlIDAiKTsKK30KIAor
R2xzbGFuZ1NvdXJjZU9wdGlvbnMgQ3JlYXRlU291cmNlT3B0aW9ucygpCit7CisgICAgR2xzbGFu
Z1NvdXJjZU9wdGlvbnMgb3B0aW9uczsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIH0gIC8vIG5h
bWVzcGFjZQpAQCAtNDQsMTYgKzUwLDIwIEBAIEdsc2xhbmdTb3VyY2VPcHRpb25zIENyZWF0ZVNv
dXJjZU9wdGlvbnMoKQogdm9pZCBHbHNsYW5nR2V0U2hhZGVyU291cmNlKGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNlcyAmcmVzb3VyY2VzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICpzaGFkZXJTb3VyY2VzT3V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5m
b01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewot
ICAgIHJ4OjpHbHNsYW5nR2V0U2hhZGVyU291cmNlKENyZWF0ZVNvdXJjZU9wdGlvbnMoKSwgcHJv
Z3JhbVN0YXRlLCByZXNvdXJjZXMsIHNoYWRlclNvdXJjZXNPdXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICBHbHNsYW5nU291cmNlT3B0
aW9ucyBvcHRpb25zID0gQ3JlYXRlU291cmNlT3B0aW9ucygpOworICAgIEdsc2xhbmdQcm9ncmFt
SW50ZXJmYWNlSW5mbyBwcm9ncmFtSW50ZXJmYWNlSW5mbzsKKyAgICBSZXNldEdsc2xhbmdQcm9n
cmFtSW50ZXJmYWNlSW5mbygmcHJvZ3JhbUludGVyZmFjZUluZm8pOworCisgICAgcng6Okdsc2xh
bmdHZXRTaGFkZXJTb3VyY2Uob3B0aW9ucywgcHJvZ3JhbVN0YXRlLCByZXNvdXJjZXMsICZwcm9n
cmFtSW50ZXJmYWNlSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJT
b3VyY2VzT3V0LCB2YXJpYWJsZUluZm9NYXBPdXQpOwogfQogCiBhbmdsZTo6UmVzdWx0IEdsc2xh
bmdHZXRTaGFkZXJTcGlydkNvZGUoRXJyb3JIYW5kbGVyICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZnbENhcHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlck1hcDxz
dGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJs
ZUluZm9NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4+ICpzaGFkZXJDb2RlT3V0KQogewogICAgIHJldHVybiByeDo6R2xzbGFu
Z0dldFNoYWRlclNwaXJ2Q29kZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmNwcApp
bmRleCA3ODYyNjU2YmFjMjlhMzMzYzZlMTkyYzUzOTdjZWY4NTQwMGEyY2M5Li5jNjYyZmI5YjUw
NWQyMTY1MDE0NTQ0NGJhMTA3OWMzODk4ZDA0YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29u
dGV4dE5VTEwuY3BwCkBAIC0xOSw3ICsxOSw2IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9GZW5jZU5WTlVMTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwv
RnJhbWVidWZmZXJOVUxMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFn
ZU5VTEwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbVBpcGVsaW5lTlVMTC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmgiCkBAIC0yNDEsNjggKzI0MCw2IEBA
IGFuZ2xlOjpSZXN1bHQgQ29udGV4dE5VTEw6OmRyYXdFbGVtZW50c0luZGlyZWN0KGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
IH0KIAotdm9pZCBDb250ZXh0TlVMTDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpw
YXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKSB7fQotCi12b2lkIENvbnRleHROVUxM
OjpzdGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNl
LCBHTHVpbnQgbWFzaykge30KLQotdm9pZCBDb250ZXh0TlVMTDo6Y292ZXJGaWxsUGF0aChjb25z
dCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkge30KLQotdm9pZCBDb250ZXh0TlVM
TDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2Rl
KSB7fQotCi12b2lkIENvbnRleHROVUxMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoY29uc3Qg
Z2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17fQotCi12b2lkIENvbnRleHROVUxMOjpzdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkK
LXt9Ci0KLXZvaWQgQ29udGV4dE5VTEw6OmNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQot
e30KLQotdm9pZCBDb250ZXh0TlVMTDo6Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0
ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykKLXt9Ci0KLXZvaWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChj
b25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxTdHJva2VQYXRoSW5z
dGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17fQotCi12b2lkIENvbnRleHROVUxMOjpzdGVu
Y2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGgg
Kj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgQ29udGV4dE5V
TEw6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQot
e30KLQogZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXMgQ29udGV4dE5VTEw6OmdldFJlc2V0U3RhdHVz
KCkKIHsKICAgICByZXR1cm4gZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXM6Ok5vRXJyb3I7CkBAIC0z
MTgsMTUgKzI1NSwzMyBAQCBzdGQ6OnN0cmluZyBDb250ZXh0TlVMTDo6Z2V0UmVuZGVyZXJEZXNj
cmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuICJOVUxMIjsKIH0KIAotdm9pZCBDb250ZXh0TlVM
TDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikg
e30KK2FuZ2xlOjpSZXN1bHQgQ29udGV4dE5VTEw6Omluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOworfQogCi12b2lkIENvbnRleHROVUxMOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikge30KK2FuZ2xlOjpSZXN1bHQgQ29udGV4dE5V
TEw6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQor
eworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KIAotdm9pZCBDb250ZXh0
TlVMTDo6cG9wR3JvdXBNYXJrZXIoKSB7fQorYW5nbGU6OlJlc3VsdCBDb250ZXh0TlVMTDo6cG9w
R3JvdXBNYXJrZXIoKQoreworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30K
IAotdm9pZCBDb250ZXh0TlVMTDo6cHVzaERlYnVnR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50
IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkge30KK2FuZ2xlOjpSZXN1bHQgQ29udGV4
dE5VTEw6OnB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNz
YWdlKQoreworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KIAotdm9pZCBD
b250ZXh0TlVMTDo6cG9wRGVidWdHcm91cCgpIHt9CithbmdsZTo6UmVzdWx0IENvbnRleHROVUxM
Ojpwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0TlVM
TDo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJp
dHMsCkBAIC00NDAsMTYgKzM5NSw2IEBAIFByb2dyYW1QaXBlbGluZUltcGwgKkNvbnRleHROVUxM
OjpjcmVhdGVQcm9ncmFtUGlwZWxpbmUoY29uc3QgZ2w6OlByb2dyYW1QaXBlbGluCiAgICAgcmV0
dXJuIG5ldyBQcm9ncmFtUGlwZWxpbmVOVUxMKHN0YXRlKTsKIH0KIAotc3RkOjp2ZWN0b3I8UGF0
aEltcGwgKj4gQ29udGV4dE5VTEw6OmNyZWF0ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpCi17Ci0gICAg
c3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gcmVzdWx0KHJhbmdlKTsKLSAgICBmb3IgKEdMc2l6ZWkg
aWR4ID0gMDsgaWR4IDwgcmFuZ2U7IGlkeCsrKQotICAgIHsKLSAgICAgICAgcmVzdWx0W2lkeF0g
PSBuZXcgUGF0aE5VTEwoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogTWVtb3J5
T2JqZWN0SW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZU1lbW9yeU9iamVjdCgpCiB7CiAgICAgVU5S
RUFDSEFCTEUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5oCmluZGV4IDU3MjUwYmRj
YzgxNTA3NTZjNjY1MDEyYzJiMDYzYmI0ZWNiYTJmNTYuLmFkOTgwNTUyMTA3NzkxODAzZDg3ODA5
ZTkwNjdiMjYzOTJkNzhjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuaApAQCAt
MTE2LDUyICsxMTYsNiBAQCBjbGFzcyBDb250ZXh0TlVMTCA6IHB1YmxpYyBDb250ZXh0SW1wbAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5
cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmluZGlyZWN0KSBvdmVycmlkZTsKIAotICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5n
IHBhdGggZHJhd2luZyBtZXRob2RzLgotICAgIHZvaWQgc3RlbmNpbEZpbGxQYXRoKGNvbnN0IGds
OjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGludCByZWZl
cmVuY2UsIEdMdWludCBtYXNrKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvdmVyRmlsbFBhdGgoY29u
c3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKSBv
dmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0
aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7
Ci0KLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKSBvdmVycmlk
ZTsKLQotICAgIHZvaWQgY292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgY292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8
Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RlbmNpbFN0cm9rZVBhdGhJbnN0
YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2
ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7Ci0KICAgICAvLyBEZXZp
Y2UgbG9zcwogICAgIGdsOjpHcmFwaGljc1Jlc2V0U3RhdHVzIGdldFJlc2V0U3RhdHVzKCkgb3Zl
cnJpZGU7CiAKQEAgLTE3MCwxMyArMTI0LDE2IEBAIGNsYXNzIENvbnRleHROVUxMIDogcHVibGlj
IENvbnRleHRJbXBsCiAgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRVhUX2RlYnVnX21hcmtlcgotICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworICAg
IGFuZ2xlOjpSZXN1bHQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNo
YXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwdXNoR3JvdXBNYXJrZXIo
R0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgYW5nbGU6
OlJlc3VsdCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gS0hSX2RlYnVnCi0g
ICAgdm9pZCBwdXNoRGVidWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0IHN0
ZDo6c3RyaW5nICZtZXNzYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcERlYnVnR3JvdXAoKSBv
dmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBv
dmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHBvcERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQpIG92ZXJyaWRlOwogCiAgICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJp
dHMuCiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCkBAIC0yMzEsOCArMTg4LDYgQEAgY2xhc3MgQ29udGV4dE5VTEwgOiBwdWJsaWMgQ29udGV4
dEltcGwKICAgICAvLyBQcm9ncmFtIFBpcGVsaW5lIG9iamVjdCBjcmVhdGlvbgogICAgIFByb2dy
YW1QaXBlbGluZUltcGwgKmNyZWF0ZVByb2dyYW1QaXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBp
cGVsaW5lU3RhdGUgJmRhdGEpIG92ZXJyaWRlOwogCi0gICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwg
Kj4gY3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkgb3ZlcnJpZGU7Ci0KICAgICAvLyBNZW1vcnkg
b2JqZWN0IGNyZWF0aW9uLgogICAgIE1lbW9yeU9iamVjdEltcGwgKmNyZWF0ZU1lbW9yeU9iamVj
dCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE0MDhlNGY5Y2YyZTZkNDdjN2M2YTE1MWIzNjdkNDhkNDc4MTc3
NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFBhdGhOVUxMLmNw
cDoKLS8vICAgIEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIFBhdGhOVUxMLgotLy8K
LQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaCIKLQotI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgotCi1uYW1lc3BhY2UgcngKLXsKLVBhdGhOVUxMOjpQYXRoTlVM
TCgpIDogUGF0aEltcGwoKSB7fQotCi1QYXRoTlVMTDo6flBhdGhOVUxMKCkge30KLQotYW5nbGU6
OlJlc3VsdCBQYXRoTlVMTDo6c2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQotewot
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotdm9pZCBQYXRoTlVMTDo6
c2V0UGF0aFBhcmFtZXRlcihHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpIHt9Ci19ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiMDdhODBiY2M2M2EwMWQyMDkxNDJkOTk3YWQ4NTJmNzA0NzQ1ZGRkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUGF0aE5VTEwuaDoKLS8vICAgIERl
ZmluZXMgdGhlIGNsYXNzIGludGVyZmFjZSBmb3IgUGF0aE5VTEwsIGltcGxlbWVudGluZyBQYXRo
SW1wbC4KLS8vCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfTlVMTF9QQVRITlVMTF9IXwot
I2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9OVUxMX1BBVEhOVUxMX0hfCi0KLSNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotY2xhc3Mg
UGF0aE5VTEwgOiBwdWJsaWMgUGF0aEltcGwKLXsKLSAgcHVibGljOgotICAgIFBhdGhOVUxMKCk7
Ci0gICAgflBhdGhOVUxMKCkgb3ZlcnJpZGU7Ci0KLSAgICBhbmdsZTo6UmVzdWx0IHNldENvbW1h
bmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
b3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jk
cykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldFBhdGhQYXJhbWV0ZXIoR0xlbnVtIHBuYW1lLCBH
TGZsb2F0IHZhbHVlKSBvdmVycmlkZTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5k
aWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX05VTExfUEFUSE5VTExfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1O
VUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL1Byb2dyYW1OVUxMLmNwcAppbmRleCA3N2IyZTFlODQyNzkxOGIzNDhhZTQyNGQ2MGE3YzQy
ZDZlYmU4MWY5Li42MTM5ZGUzOWIzMzk3M2JhZDViMjI5ZjgwNjRhOTk2MmEzNmVkODU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9Qcm9ncmFtTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwCkBAIC0xMzYsMTAgKzEzNiw0IEBAIHZv
aWQgUHJvZ3JhbU5VTEw6OmdldFVuaWZvcm11aXYoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
IEdMaW50IGxvY2F0aW9uLCBHTHVpCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogV3JpdGUgc29tZSB2
YWx1ZXMuCiB9CiAKLXZvaWQgUHJvZ3JhbU5VTEw6OnNldFBhdGhGcmFnbWVudElucHV0R2VuKGNv
bnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCi17fQotCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oCmluZGV4IDgyNjA1Nzdk
ZmJjMDBhZTBkNjYwZjRlNjA2ZDEwMzc1N2VkNTQzMDQuLjJlMTVmODU4MTdhNzQ4ODg3NDFhZDRm
NDE5MGY5N2JhZDkwOWE2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaApAQCAt
ODUsMTMgKzg1LDYgQEAgY2xhc3MgUHJvZ3JhbU5VTEwgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAg
ICB2b2lkIGdldFVuaWZvcm1mdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgKnBhcmFtcykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlm
b3JtaXYoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCAq
cGFyYW1zKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm11aXYoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIC8vIFNldCBw
YXJhbWV0ZXJzIHRvIGNvbnRyb2wgZnJhZ21lbnQgc2hhZGVyIGlucHV0IHZhcmlhYmxlIGludGVy
cG9sYXRpb24KLSAgICB2b2lkIHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3Ry
aW5nICZpbnB1dE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Z2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVu
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2Vm
ZnMpIG92ZXJyaWRlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRl
cmVyX3V0aWxzLmNwcAppbmRleCA4YjI2YzlkYzlkYTU4ZjIyYzM0YTZmYjM3YWU3M2ExYzg4YTA0
OTNlLi45ZTZmNzVkMjJkNGRkOWVhOTAwYzZjZGFkZWQyMDhhYjk0YjVlNmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJf
dXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9yZW5kZXJlcl91dGlscy5jcHAKQEAgLTksMjAgKzksMjAgQEAKIAogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgiCiAKKyNpbmNsdWRlICJjb21tb24vc3Ry
aW5nX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgorI2luY2x1ZGUg
ImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5oIgog
I2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3JtYXRzLmgiCi0KICNpbmNsdWRlICJsaWJBTkdM
RS9BdHRyaWJ1dGVNYXAuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuaCIKLQogI2luY2x1ZGUgInBsYXRmb3JtL0ZlYXR1cmUu
aCIKIAogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIK
IAogbmFtZXNwYWNlIHJ4CiB7CkBAIC03OTQsMTEgKzc5NCwxOCBAQCBnbDo6UmVjdGFuZ2xlIENs
aXBSZWN0VG9TY2lzc29yKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSwgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmcgogICAgIHJldHVybiByZWN0OwogfQogCi12b2lkIE92ZXJyaWRlRmVhdHVyZXNXaXRo
RGlzcGxheVN0YXRlKGFuZ2xlOjpGZWF0dXJlU2V0QmFzZSAqZmVhdHVyZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0
ZSkKK3ZvaWQgQXBwbHlGZWF0dXJlT3ZlcnJpZGVzKGFuZ2xlOjpGZWF0dXJlU2V0QmFzZSAqZmVh
dHVyZXMsIGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSkKIHsKICAgICBmZWF0dXJlcy0+
b3ZlcnJpZGVGZWF0dXJlcyhzdGF0ZS5mZWF0dXJlT3ZlcnJpZGVzRW5hYmxlZCwgdHJ1ZSk7CiAg
ICAgZmVhdHVyZXMtPm92ZXJyaWRlRmVhdHVyZXMoc3RhdGUuZmVhdHVyZU92ZXJyaWRlc0Rpc2Fi
bGVkLCBmYWxzZSk7CisKKyAgICAvLyBPdmVycmlkZSB3aXRoIGVudmlyb25tZW50IGFzIHdlbGwu
CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG92ZXJyaWRlc0VuYWJsZWQgPQorICAgICAg
ICBhbmdsZTo6R2V0U3RyaW5nc0Zyb21FbnZpcm9ubWVudFZhcigiQU5HTEVfRkVBVFVSRV9PVkVS
UklERVNfRU5BQkxFRCIsICI6Iik7CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG92ZXJy
aWRlc0Rpc2FibGVkID0KKyAgICAgICAgYW5nbGU6OkdldFN0cmluZ3NGcm9tRW52aXJvbm1lbnRW
YXIoIkFOR0xFX0ZFQVRVUkVfT1ZFUlJJREVTX0RJU0FCTEVEIiwgIjoiKTsKKyAgICBmZWF0dXJl
cy0+b3ZlcnJpZGVGZWF0dXJlcyhvdmVycmlkZXNFbmFibGVkLCB0cnVlKTsKKyAgICBmZWF0dXJl
cy0+b3ZlcnJpZGVGZWF0dXJlcyhvdmVycmlkZXNEaXNhYmxlZCwgZmFsc2UpOwogfQogCiB2b2lk
IEdldFNhbXBsZVBvc2l0aW9uKEdMc2l6ZWkgc2FtcGxlQ291bnQsIHNpemVfdCBpbmRleCwgR0xm
bG9hdCAqeHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oCmluZGV4IGM4Yjc2NzhhNWI3MTYz
ZDA2NGQyZDA1ZmI1MTMyNTc1OWIwZTE4ZTYuLmZlZTAyNGJiZmExZGYyOTIzYjIxODgwZjEwMDM2
MDIyZGI5YjBmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oCkBAIC0yMzUsOCArMjM1
LDcgQEAgYW5nbGU6OlJlc3VsdCBHZXRWZXJ0ZXhSYW5nZUluZm8oY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiBnbDo6UmVjdGFuZ2xlIENsaXBSZWN0VG9TY2lzc29yKGNvbnN0IGdsOjpTdGF0
ZSAmZ2xTdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVjdCwgYm9vbCBpbnZlcnRZKTsKIAog
Ly8gSGVscGVyIG1ldGhvZCB0byBpbnRpYWxpemUgYSBGZWF0dXJlU2V0IHdpdGggb3ZlcnJpZGVz
IGZyb20gdGhlIERpc3BsYXlTdGF0ZQotdm9pZCBPdmVycmlkZUZlYXR1cmVzV2l0aERpc3BsYXlT
dGF0ZShhbmdsZTo6RmVhdHVyZVNldEJhc2UgKmZlYXR1cmVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpOwordm9p
ZCBBcHBseUZlYXR1cmVPdmVycmlkZXMoYW5nbGU6OkZlYXR1cmVTZXRCYXNlICpmZWF0dXJlcywg
Y29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIElu
PgogdWludDMyX3QgTGluZUxvb3BSZXN0YXJ0SW5kZXhDb3VudEhlbHBlcihHTHNpemVpIGluZGV4
Q291bnQsIGNvbnN0IHVpbnQ4X3QgKnNyY1B0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9zZXJpYWxfdXRpbHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9zZXJpYWxfdXRpbHMuaAppbmRl
eCBjOWEwMmY0ODJmYTNmNGY0MjNjNmVlNjBjNzVhMzgyMTQ5Y2E4ODUyLi5iZTcwMTVkODM3Njg3
NjQ1ZjA1NGM5ZmRiYjIwNmVkNzM1OWU5ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvc2VyaWFsX3V0aWxzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3NlcmlhbF91dGlscy5oCkBA
IC0xMSw2ICsxMSw3IEBACiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1NFUklBTF9VVElMU19I
XwogCiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUgImNv
bW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCkBAIC00NSw2ICs0
Niw4IEBAIGNsYXNzIFNlcmlhbCBmaW5hbAogICAgIGNvbnN0ZXhwciBTZXJpYWwoY29uc3QgU2Vy
aWFsICZvdGhlcikgPSBkZWZhdWx0OwogICAgIFNlcmlhbCAmb3BlcmF0b3I9KGNvbnN0IFNlcmlh
bCAmb3RoZXIpID0gZGVmYXVsdDsKIAorICAgIHN0YXRpYyBjb25zdGV4cHIgU2VyaWFsIEluZmlu
aXRlKCkgeyByZXR1cm4gU2VyaWFsKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSk7IH0KKwogICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VyaWFsICZvdGhl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtVmFsdWUgIT0ga0ludmFsaWQgJiYgbVZh
bHVlID09IG90aGVyLm1WYWx1ZTsKQEAgLTc1LDYgKzc4LDkgQEAgY2xhc3MgU2VyaWFsIGZpbmFs
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBrSW52YWxpZCA9IDA7CiB9OwogCisvLyBV
c2VkIGFzIGRlZmF1bHQvaW5pdGlhbCBzZXJpYWwKK3N0YXRpYyBjb25zdGV4cHIgU2VyaWFsIGta
ZXJvU2VyaWFsID0gU2VyaWFsKCk7CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBTZXJpYWxCYXNlVHlw
ZT4KIGNsYXNzIFNlcmlhbEZhY3RvcnlCYXNlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9CVUlMRC5nbgppbmRleCBjMmNiYTAwZjc4ODhjY2EyNDU4MTBlM2U3
NGRmMzc5ZGVhZjAwN2Q3Li4zODc1Y2FkMDVlZWJiZDkwYzFmNjQ4YzRmNjVhNTcyMGRkZDY4OGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vQlVJTEQuZ24KQEAgLTIwLDggKzIwLDYgQEAgZGVjbGFyZV9h
cmdzKCkgewogX3Z1bGthbl9iYWNrZW5kX3NvdXJjZXMgPSBbCiAgICJCdWZmZXJWay5jcHAiLAog
ICAiQnVmZmVyVmsuaCIsCi0gICJDb21tYW5kR3JhcGguY3BwIiwKLSAgIkNvbW1hbmRHcmFwaC5o
IiwKICAgIkNvbXBpbGVyVmsuY3BwIiwKICAgIkNvbXBpbGVyVmsuaCIsCiAgICJDb250ZXh0Vmsu
Y3BwIiwKQEAgLTQ1LDE4ICs0MywyMiBAQCBfdnVsa2FuX2JhY2tlbmRfc291cmNlcyA9IFsKICAg
Ik92ZXJsYXlWay5oIiwKICAgIlBlcnNpc3RlbnRDb21tYW5kUG9vbC5jcHAiLAogICAiUGVyc2lz
dGVudENvbW1hbmRQb29sLmgiLAotICAiUHJvZ3JhbVZrLmNwcCIsCi0gICJQcm9ncmFtVmsuaCIs
CisgICJQcm9ncmFtRXhlY3V0YWJsZVZrLmNwcCIsCisgICJQcm9ncmFtRXhlY3V0YWJsZVZrLmgi
LAogICAiUHJvZ3JhbVBpcGVsaW5lVmsuY3BwIiwKICAgIlByb2dyYW1QaXBlbGluZVZrLmgiLAor
ICAiUHJvZ3JhbVZrLmNwcCIsCisgICJQcm9ncmFtVmsuaCIsCiAgICJRdWVyeVZrLmNwcCIsCiAg
ICJRdWVyeVZrLmgiLAorICAiUmVuZGVyVGFyZ2V0VmsuY3BwIiwKKyAgIlJlbmRlclRhcmdldFZr
LmgiLAogICAiUmVuZGVyYnVmZmVyVmsuY3BwIiwKICAgIlJlbmRlcmJ1ZmZlclZrLmgiLAogICAi
UmVuZGVyZXJWay5jcHAiLAogICAiUmVuZGVyZXJWay5oIiwKLSAgIlJlbmRlclRhcmdldFZrLmNw
cCIsCi0gICJSZW5kZXJUYXJnZXRWay5oIiwKKyAgIlJlc291cmNlVmsuY3BwIiwKKyAgIlJlc291
cmNlVmsuaCIsCiAgICJTYW1wbGVyVmsuY3BwIiwKICAgIlNhbXBsZXJWay5oIiwKICAgIlNlY29u
ZGFyeUNvbW1hbmRCdWZmZXIuY3BwIiwKQEAgLTgzLDEyICs4NSwxMiBAQCBfdnVsa2FuX2JhY2tl
bmRfc291cmNlcyA9IFsKICAgInZrX2NhcHNfdXRpbHMuaCIsCiAgICJ2a19leHRfcHJvdm9raW5n
X3ZlcnRleC5oIiwKICAgInZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCIsCi0gICJ2a19mb3Jt
YXRfdXRpbHMuaCIsCiAgICJ2a19mb3JtYXRfdXRpbHMuY3BwIiwKKyAgInZrX2Zvcm1hdF91dGls
cy5oIiwKICAgInZrX2hlbHBlcnMuY3BwIiwKICAgInZrX2hlbHBlcnMuaCIsCi0gICJ2a19pbnRl
cm5hbF9zaGFkZXJzX2F1dG9nZW4uaCIsCiAgICJ2a19pbnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4u
Y3BwIiwKKyAgInZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5oIiwKICAgInZrX21hbmRhdG9y
eV9mb3JtYXRfc3VwcG9ydF90YWJsZV9hdXRvZ2VuLmNwcCIsCiAgICJ2a191dGlscy5jcHAiLAog
ICAidmtfdXRpbHMuaCIsCkBAIC0xNDQsMTAgKzE0NiwxMiBAQCBpZiAoaXNfZ2dwKSB7CiAKIGlm
IChpc19tYWMpIHsKICAgX3Z1bGthbl9iYWNrZW5kX3NvdXJjZXMgKz0gWwotICAgICJtYWMvRGlz
cGxheVZrTWFjLm1tIiwKICAgICAibWFjL0Rpc3BsYXlWa01hYy5oIiwKLSAgICAibWFjL1dpbmRv
d1N1cmZhY2VWa01hYy5tbSIsCisgICAgIm1hYy9EaXNwbGF5VmtNYWMubW0iLAorICAgICJtYWMv
SU9TdXJmYWNlU3VyZmFjZVZrTWFjLmgiLAorICAgICJtYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFj
Lm1tIiwKICAgICAibWFjL1dpbmRvd1N1cmZhY2VWa01hYy5oIiwKKyAgICAibWFjL1dpbmRvd1N1
cmZhY2VWa01hYy5tbSIsCiAgIF0KIH0KIApAQCAtMTY3LDEyICsxNzEsMTAgQEAgZ3JvdXAoImFu
Z2xlX3Z1bGthbl9lbnRyeV9wb2ludHMiKSB7CiAgICAgcHVibGljX2RlcHMgKz0gWwogICAgICAg
IiRhbmdsZV9yb290L3NyYy9jb21tb24vZnVjaHNpYV9lZ2wiLAogICAgICAgIi8vdGhpcmRfcGFy
dHkvZnVjaHNpYS1zZGs6dnVsa2FuX2Jhc2UiLAotICAgICAgIi8vdGhpcmRfcGFydHkvZnVjaHNp
YS1zZGsvc2RrOnZ1bGthbiIsCisgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGsv
cGtnL3Z1bGthbiIsCiAgICAgXQogICB9IGVsc2UgaWYgKCFpc19hbmRyb2lkICYmICFpc19nZ3Ap
IHsKLSAgICBkYXRhX2RlcHMgPSBbCi0gICAgICAiJGFuZ2xlX3Jvb3QvdGhpcmRfcGFydHkvdnVs
a2FuLWxvYWRlci9zcmM6bGlidnVsa2FuIiwKLSAgICBdCisgICAgZGF0YV9kZXBzID0gWyAiJGFu
Z2xlX3Jvb3QvdGhpcmRfcGFydHkvdnVsa2FuLWxvYWRlci9zcmM6bGlidnVsa2FuIiBdCiAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9CdWZmZXJWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAppbmRleCA5YzEyOWUzMGU3ZGYx
M2RiNTFmODExYzUwYTVmYTk2MzdlNTNlMGY4Li5hMDIxNjdjZjZkYmI5NDVmMmIxMmRmNTQ3NzVl
MzYyZDBlYmUyODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcApAQCAtNTgs
MTYgKzU4LDQ5IEBAIHNpemVfdCBDYWxjdWxhdGVTdGFnaW5nQnVmZmVyU2l6ZShnbDo6QnVmZmVy
QmluZGluZyB0YXJnZXQsIHNpemVfdCBzaXplLCBzaXplX3QKICAgICAgICAgICAgIHJldHVybiBr
U3RhZ2luZ0J1ZmZlckJhc2VTaXplOwogICAgIH0KIH0KKworLy8gQnVmZmVycyB0aGF0IGhhdmUg
YSBzdGF0aWMgdXNhZ2UgcGF0dGVybiB3aWxsIGJlIGFsbG9jYXRlZCBpbgorLy8gZGV2aWNlIGxv
Y2FsIG1lbW9yeSB0byBzcGVlZCB1cCBhY2Nlc3MgdG8gYW5kIGZyb20gdGhlIEdQVS4KKy8vIER5
bmFtaWMgdXNhZ2UgcGF0dGVybnMgb3IgdGhhdCBhcmUgZnJlcXVlbnRseSBtYXBwZWQKKy8vIHdp
bGwgbm93IHJlcXVlc3QgaG9zdCBjYWNoZWQgbWVtb3J5IHRvIHNwZWVkIHVwIGFjY2VzcyBmcm9t
IHRoZSBDUFUuCitBTkdMRV9JTkxJTkUgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIEdldFByZWZlcnJl
ZE1lbW9yeVR5cGUoZ2w6OkJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpCdWZmZXJVc2FnZSB1
c2FnZSkKK3sKKyAgICBjb25zdGV4cHIgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIGtEZXZpY2VMb2Nh
bEZsYWdzID0KKyAgICAgICAgKFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUIHwg
VktfTUVNT1JZX1BST1BFUlRZX0hPU1RfQ09IRVJFTlRfQklUIHwKKyAgICAgICAgIFZLX01FTU9S
WV9QUk9QRVJUWV9ERVZJQ0VfTE9DQUxfQklUKTsKKyAgICBjb25zdGV4cHIgVmtNZW1vcnlQcm9w
ZXJ0eUZsYWdzIGtIb3N0Q2FjaGVkRmxhZ3MgPQorICAgICAgICAoVktfTUVNT1JZX1BST1BFUlRZ
X0hPU1RfVklTSUJMRV9CSVQgfCBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9DT0hFUkVOVF9CSVQg
fAorICAgICAgICAgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfQ0FDSEVEX0JJVCk7CisKKyAgICBp
ZiAodGFyZ2V0ID09IGdsOjpCdWZmZXJCaW5kaW5nOjpQaXhlbFVucGFjaykKKyAgICB7CisgICAg
ICAgIHJldHVybiBrSG9zdENhY2hlZEZsYWdzOworICAgIH0KKworICAgIHN3aXRjaCAodXNhZ2Up
CisgICAgeworICAgICAgICBjYXNlIGdsOjpCdWZmZXJVc2FnZTo6U3RhdGljQ29weToKKyAgICAg
ICAgY2FzZSBnbDo6QnVmZmVyVXNhZ2U6OlN0YXRpY0RyYXc6CisgICAgICAgIGNhc2UgZ2w6OkJ1
ZmZlclVzYWdlOjpTdGF0aWNSZWFkOgorICAgICAgICAgICAgLy8gRm9yIHN0YXRpYyB1c2FnZSwg
cmVxdWVzdCBhIGRldmljZSBsb2NhbCBtZW1vcnkKKyAgICAgICAgICAgIHJldHVybiBrRGV2aWNl
TG9jYWxGbGFnczsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEZvciBub24tc3Rh
dGljIHVzYWdlLCByZXF1ZXN0IGEgaG9zdCBjYWNoZWQgbWVtb3J5CisgICAgICAgICAgICByZXR1
cm4ga0hvc3RDYWNoZWRGbGFnczsKKyAgICB9Cit9CiB9ICAvLyBuYW1lc3BhY2UKIAogLy8gQ29u
dmVyc2lvbkJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KIENvbnZlcnNpb25CdWZmZXI6OkNvbnZlcnNp
b25CdWZmZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZUZsYWdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5pdGlhbFNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBhbGlnbm1lbnQpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBhbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaG9zdFZpc2libGUpCiAgICAgOiBkaXJ0eSh0cnVlKSwgbGFzdEFs
bG9jYXRpb25PZmZzZXQoMCkKIHsKLSAgICBkYXRhLmluaXQocmVuZGVyZXIsIHVzYWdlRmxhZ3Ms
IGFsaWdubWVudCwgaW5pdGlhbFNpemUsIHRydWUpOworICAgIGRhdGEuaW5pdChyZW5kZXJlciwg
dXNhZ2VGbGFncywgYWxpZ25tZW50LCBpbml0aWFsU2l6ZSwgaG9zdFZpc2libGUpOwogfQogCiBD
b252ZXJzaW9uQnVmZmVyOjp+Q29udmVyc2lvbkJ1ZmZlcigpID0gZGVmYXVsdDsKQEAgLTc4LDEx
ICsxMTEsMTMgQEAgQ29udmVyc2lvbkJ1ZmZlcjo6Q29udmVyc2lvbkJ1ZmZlcihDb252ZXJzaW9u
QnVmZmVyICYmb3RoZXIpID0gZGVmYXVsdDsKIEJ1ZmZlclZrOjpWZXJ0ZXhDb252ZXJzaW9uQnVm
ZmVyOjpWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyKFJlbmRlcmVyVmsgKnJlbmRlcmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdElEIGZvcm1hdElESW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RyaWRlSW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW4p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGhvc3RWaXNpYmxlKQogICAgIDogQ29udmVyc2lvbkJ1
ZmZlcihyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgdms6OmtWZXJ0ZXhCdWZmZXJV
c2FnZUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICBrQ29udmVydGVkQXJyYXlCdWZmZXJJ
bml0aWFsU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdms6OmtWZXJ0ZXhCdWZmZXJBbGln
bm1lbnQpLAorICAgICAgICAgICAgICAgICAgICAgICB2azo6a1ZlcnRleEJ1ZmZlckFsaWdubWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgaG9zdFZpc2libGUpLAogICAgICAgZm9ybWF0SUQo
Zm9ybWF0SURJbiksCiAgICAgICBzdHJpZGUoc3RyaWRlSW4pLAogICAgICAgb2Zmc2V0KG9mZnNl
dEluKQpAQCAtMTY0LDggKzE5OSw3IEBAIGFuZ2xlOjpSZXN1bHQgQnVmZmVyVms6OnNldERhdGEo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNyZWF0ZUluZm8ucFF1ZXVlRmFt
aWx5SW5kaWNlcyAgID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBBc3N1bWUgaG9zdCB2aXNpYmxl
L2NvaGVyZW50IG1lbW9yeSBhdmFpbGFibGUuCi0gICAgICAgIGNvbnN0IFZrTWVtb3J5UHJvcGVy
dHlGbGFncyBtZW1vcnlQcm9wZXJ0eUZsYWdzID0KLSAgICAgICAgICAgIChWS19NRU1PUllfUFJP
UEVSVFlfSE9TVF9WSVNJQkxFX0JJVCB8IFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5U
X0JJVCk7CisgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1vcnlQcm9wZXJ0eUZsYWdz
ID0gR2V0UHJlZmVycmVkTWVtb3J5VHlwZSh0YXJnZXQsIHVzYWdlKTsKIAogICAgICAgICBBTkdM
RV9UUlkobUJ1ZmZlci5pbml0KGNvbnRleHRWaywgY3JlYXRlSW5mbywgbWVtb3J5UHJvcGVydHlG
bGFncykpOwogCkBAIC0yMDgsMzEgKzI0Miw5IEBAIGFuZ2xlOjpSZXN1bHQgQnVmZmVyVms6OmNv
cHlTdWJEYXRhKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgdms6OkNvbW1hbmRC
dWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBudWxscHRyOwogCi0gICAgaWYgKGNvbnRleHRWay0+Y29t
bWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgLy8gSGFuZGxlIHNlbGYtZGVwZW5k
ZW5jeSBlc3BlY2lhbGx5LgotICAgICAgICBpZiAoc291cmNlQnVmZmVyLT5tQnVmZmVyLmdldEJ1
ZmZlcigpLmdldEhhbmRsZSgpID09IG1CdWZmZXIuZ2V0QnVmZmVyKCkuZ2V0SGFuZGxlKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIFdlIHNldCB0aGUgVFJBTlNGRVJfUkVBRF9CSVQgdG8g
YmUgY29uc2VydmF0aXZlLgotICAgICAgICAgICAgbUJ1ZmZlci5vblNlbGZSZWFkV3JpdGUoY29u
dGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUNDRVNTX1RS
QU5TRkVSX1JFQURfQklUIHwgVktfQUNDRVNTX1RSQU5TRkVSX1dSSVRFX0JJVCk7Ci0KLSAgICAg
ICAgICAgIEFOR0xFX1RSWShtQnVmZmVyLnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1h
bmRCdWZmZXIpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEFOR0xFX1RSWShtQnVmZmVyLnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRC
dWZmZXIpKTsKLQotICAgICAgICAgICAgc291cmNlQnVmZmVyLT5tQnVmZmVyLm9uUmVhZEJ5QnVm
ZmVyKGNvbnRleHRWaywgJm1CdWZmZXIsIFZLX0FDQ0VTU19UUkFOU0ZFUl9SRUFEX0JJVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19BQ0NFU1Nf
VFJBTlNGRVJfV1JJVEVfQklUKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICBjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9C
SVQsICZzb3VyY2VCdWZmZXItPmdldEJ1ZmZlcigpKTsKLSAgICAgICAgY29udGV4dFZrLT5vbkJ1
ZmZlcldyaXRlKFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQsICZtQnVmZmVyKTsKLSAgICAg
ICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Z2V0T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVy
KCZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQorICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVm
ZmVyUmVhZChWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsICZzb3VyY2VCdWZmZXItPmdldEJ1
ZmZlcigpKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJXcml0ZShWS19BQ0NF
U1NfVFJBTlNGRVJfV1JJVEVfQklULCAmbUJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAK
ICAgICAvLyBFbnF1ZXVlIGEgY29weSBjb21tYW5kIG9uIHRoZSBHUFUuCiAgICAgY29uc3QgVmtC
dWZmZXJDb3B5IGNvcHlSZWdpb24gPSB7c3RhdGljX2Nhc3Q8VmtEZXZpY2VTaXplPihzb3VyY2VP
ZmZzZXQpLApAQCAtMjgwLDEzICsyOTIsMTMgQEAgYW5nbGU6OlJlc3VsdCBCdWZmZXJWazo6bWFw
UmFuZ2VJbXBsKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIGlmICgoYWNjZXNzICYgR0xfTUFQ
X1VOU1lOQ0hST05JWkVEX0JJVCkgPT0gMCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBwZW5kaW5nIGNvbW1hbmRzIGZvciB0aGUgYnVmZmVyLCBmbHVzaCB0aGVtLgotICAgICAgICBp
ZiAobUJ1ZmZlci5oYXNSZWNvcmRlZENvbW1hbmRzKCkpCisgICAgICAgIGlmIChtQnVmZmVyLnVz
ZWRJblJlY29yZGVkQ29tbWFuZHMoKSkKICAgICAgICAgewogICAgICAgICAgICAgQU5HTEVfVFJZ
KGNvbnRleHRWay0+Zmx1c2hJbXBsKG51bGxwdHIpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgZHJpdmVyIGlzIGRvbmUgd2l0aCB0aGUgYnVmZmVyLgotICAgICAgICBp
ZiAobUJ1ZmZlci5oYXNSdW5uaW5nQ29tbWFuZHMoY29udGV4dFZrLT5nZXRMYXN0Q29tcGxldGVk
UXVldWVTZXJpYWwoKSkpCisgICAgICAgIGlmIChtQnVmZmVyLnVzZWRJblJ1bm5pbmdDb21tYW5k
cyhjb250ZXh0VmstPmdldExhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCgpKSkKICAgICAgICAgewog
ICAgICAgICAgICAgQU5HTEVfVFJZKG1CdWZmZXIuZmluaXNoUnVubmluZ0NvbW1hbmRzKGNvbnRl
eHRWaykpOwogICAgICAgICB9CkBAIC0zODYsOSArMzk4LDkgQEAgYW5nbGU6OlJlc3VsdCBCdWZm
ZXJWazo6c2V0RGF0YUltcGwoQ29udGV4dFZrICpjb250ZXh0VmssCiAKICAgICAgICAgLy8gRW5x
dWV1ZSBhIGNvcHkgY29tbWFuZCBvbiB0aGUgR1BVLgogICAgICAgICBWa0J1ZmZlckNvcHkgY29w
eVJlZ2lvbiA9IHtzdGFnaW5nQnVmZmVyT2Zmc2V0LCBvZmZzZXQsIHNpemV9OwotICAgICAgICBB
TkdMRV9UUlkobUJ1ZmZlci5jb3B5RnJvbUJ1ZmZlcihjb250ZXh0VmssIG1TdGFnaW5nQnVmZmVy
LmdldEN1cnJlbnRCdWZmZXIoKS0+Z2V0QnVmZmVyKCksCisgICAgICAgIEFOR0xFX1RSWShtQnVm
ZmVyLmNvcHlGcm9tQnVmZmVyKGNvbnRleHRWaywgbVN0YWdpbmdCdWZmZXIuZ2V0Q3VycmVudEJ1
ZmZlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19BQ0NF
U1NfSE9TVF9XUklURV9CSVQsIGNvcHlSZWdpb24pKTsKLSAgICAgICAgbVN0YWdpbmdCdWZmZXIu
Z2V0Q3VycmVudEJ1ZmZlcigpLT5vblJlc291cmNlQWNjZXNzKCZjb250ZXh0VmstPmdldFJlc291
cmNlVXNlTGlzdCgpKTsKKyAgICAgICAgbVN0YWdpbmdCdWZmZXIuZ2V0Q3VycmVudEJ1ZmZlcigp
LT5yZXRhaW4oJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewpAQCAtNDE1LDMxICs0MjcsMjAgQEAgYW5nbGU6OlJlc3VsdCBCdWZmZXJWazo6
Y29weVRvQnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyQ29weSAqY29waWVzKQogewogICAgIHZrOjpD
b21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOwotICAgIGlmIChjb250ZXh0VmstPmNvbW1hbmRH
cmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShkZXN0QnVmZmVyLT5yZWNv
cmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIGNvbnRleHRWay0+b25CdWZmZXJXcml0ZShWS19BQ0NFU1NfVFJBTlNG
RVJfV1JJVEVfQklULCBkZXN0QnVmZmVyKTsKLSAgICAgICAgY29udGV4dFZrLT5vbkJ1ZmZlclJl
YWQoVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklULCAmbUJ1ZmZlcik7Ci0gICAgICAgIEFOR0xF
X1RSWShjb250ZXh0VmstPmdldE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigmY29tbWFu
ZEJ1ZmZlcikpOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRl
KFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQsIGRlc3RCdWZmZXIpKTsKKyAgICBBTkdMRV9U
UlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklULCAm
bUJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRD
b21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBjb21tYW5kQnVmZmVyLT5jb3B5
QnVmZmVyKG1CdWZmZXIuZ2V0QnVmZmVyKCksIGRlc3RCdWZmZXItPmdldEJ1ZmZlcigpLCBjb3B5
Q291bnQsIGNvcGllcyk7CiAKLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVk
KCkpCi0gICAgewotICAgICAgICBtQnVmZmVyLm9uUmVhZEJ5QnVmZmVyKGNvbnRleHRWaywgZGVz
dEJ1ZmZlciwgVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQpOwotICAgIH0KICAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIENvbnZlcnNpb25CdWZmZXIgKkJ1
ZmZlclZrOjpnZXRWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyKFJlbmRlcmVyVmsgKnJlbmRlcmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdElEIGZvcm1hdElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBob3N0VmlzaWJsZSkKIHsKICAgICBmb3IgKFZlcnRleENvbnZlcnNpb25CdWZmZXIg
JmJ1ZmZlciA6IG1WZXJ0ZXhDb252ZXJzaW9uQnVmZmVycykKICAgICB7CkBAIC00NDksNyArNDUw
LDcgQEAgQ29udmVyc2lvbkJ1ZmZlciAqQnVmZmVyVms6OmdldFZlcnRleENvbnZlcnNpb25CdWZm
ZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtVmVydGV4
Q29udmVyc2lvbkJ1ZmZlcnMuZW1wbGFjZV9iYWNrKHJlbmRlcmVyLCBmb3JtYXRJRCwgc3RyaWRl
LCBvZmZzZXQpOworICAgIG1WZXJ0ZXhDb252ZXJzaW9uQnVmZmVycy5lbXBsYWNlX2JhY2socmVu
ZGVyZXIsIGZvcm1hdElELCBzdHJpZGUsIG9mZnNldCwgaG9zdFZpc2libGUpOwogICAgIHJldHVy
biAmbVZlcnRleENvbnZlcnNpb25CdWZmZXJzLmJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJW
ay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9CdWZmZXJWay5oCmluZGV4IGNlYmU2MjgxODE0NmEzOWIxOTFlODIzZjlkNTQwYTFlMGVkZTYx
NjcuLjViYTUwNzhkOTdkMWJmNmFjNGVhZTAzYmEwNmI5YzRhNzNiNzg0ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVm
ZmVyVmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0J1ZmZlclZrLmgKQEAgLTI1LDcgKzI1LDggQEAgc3RydWN0IENvbnZlcnNpb25C
dWZmZXIKICAgICBDb252ZXJzaW9uQnVmZmVyKFJlbmRlcmVyVmsgKnJlbmRlcmVyLAogICAgICAg
ICAgICAgICAgICAgICAgVmtCdWZmZXJVc2FnZUZsYWdzIHVzYWdlRmxhZ3MsCiAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW5pdGlhbFNpemUsCi0gICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgYWxpZ25tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhbGlnbm1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICBib29sIGhvc3RWaXNpYmxlKTsKICAgICB+Q29udmVyc2lvbkJ1
ZmZlcigpOwogCiAgICAgQ29udmVyc2lvbkJ1ZmZlcihDb252ZXJzaW9uQnVmZmVyICYmb3RoZXIp
OwpAQCAtMTEwLDcgKzExMSw4IEBAIGNsYXNzIEJ1ZmZlclZrIDogcHVibGljIEJ1ZmZlckltcGwK
ICAgICBDb252ZXJzaW9uQnVmZmVyICpnZXRWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyKFJlbmRlcmVy
VmsgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdElEIGZvcm1hdElELAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0cmlkZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaG9zdFZp
c2libGUpOwogCiAgIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU3RhZ2luZ0J1ZmZlcihD
b250ZXh0VmsgKmNvbnRleHRWaywgZ2w6OkJ1ZmZlckJpbmRpbmcgdGFyZ2V0LCBzaXplX3Qgc2l6
ZSk7CkBAIC0xMjYsNyArMTI4LDggQEAgY2xhc3MgQnVmZmVyVmsgOiBwdWJsaWMgQnVmZmVySW1w
bAogICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyKFJlbmRlcmVyVmsgKnJlbmRlcmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXRJRCBmb3JtYXRJRElu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdHJpZGVJbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0SW4pOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGhvc3RWaXNpYmxlKTsKICAgICAgICAgflZlcnRleENvbnZlcnNpb25C
dWZmZXIoKTsKIAogICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uQnVmZmVyKFZlcnRleENvbnZlcnNp
b25CdWZmZXIgJiZvdGhlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YTJjMTY0NjQ0ZWQ5NjcyNWFmZjkz
ZmE4ZWRkMTk5YjVmNWFhMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9Db21tYW5kR3JhcGguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM3OCArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gQ29tbWFuZEdyYXBoOgotLy8gICAgRGVmZXJyZWQgd29yayBjb25zdHJ1Y3Rl
ZCBieSBHTCBjYWxscywgdGhhdCB3aWxsIGxhdGVyIGJlIGZsdXNoZWQgdG8gVnVsa2FuLgotLy8K
LQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIKLQot
I2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSAibGliQU5HTEUvT3ZlcmxheS5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIKLSNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi92a19mb3JtYXRfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vdmtfaGVscGVycy5oIgotCi0jaW5jbHVkZSAibGliQU5HTEUvdHJhY2UuaCIK
LQotbmFtZXNwYWNlIHJ4Ci17Ci1uYW1lc3BhY2UgdmsKLXsKLW5hbWVzcGFjZQotewotQU5HTEVf
TUFZQkVfVU5VU0VECi1hbmdsZTo6UmVzdWx0IEluaXRBbmRCZWdpbkNvbW1hbmRCdWZmZXIoQ29u
dGV4dFZrICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENvbW1hbmRQb29sICZjb21tYW5kUG9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWa0NvbW1hbmRCdWZmZXJJbmhlcml0YW5jZUluZm8gJmlu
aGVyaXRhbmNlSW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
a0NvbW1hbmRCdWZmZXJVc2FnZUZsYWdzIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpQb29sQWxsb2NhdG9yICpwb29sQWxsb2NhdG9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXY6OlNlY29uZGFyeUNvbW1h
bmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCi17Ci0gICAgQVNTRVJUKCFjb21tYW5kQnVmZmVyLT52
YWxpZCgpKTsKLSAgICBjb21tYW5kQnVmZmVyLT5pbml0aWFsaXplKHBvb2xBbGxvY2F0b3IpOwot
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotQU5HTEVfTUFZQkVfVU5V
U0VECi1hbmdsZTo6UmVzdWx0IEluaXRBbmRCZWdpbkNvbW1hbmRCdWZmZXIodms6OkNvbnRleHQg
KmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q29tbWFuZFBvb2wgJmNvbW1hbmRQb29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZrQ29tbWFuZEJ1ZmZlckluaGVyaXRhbmNlSW5mbyAmaW5oZXJpdGFu
Y2VJbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQ29tbWFu
ZEJ1ZmZlclVzYWdlRmxhZ3MgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OlBvb2xBbGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdjo6Q29tbWFuZEJ1ZmZlciAqY29tbWFu
ZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQoIWNvbW1hbmRCdWZmZXItPnZhbGlkKCkpOwotICAgIEFT
U0VSVChjb21tYW5kUG9vbC52YWxpZCgpKTsKLSAgICBWa0NvbW1hbmRCdWZmZXJBbGxvY2F0ZUlu
Zm8gY3JlYXRlSW5mbyA9IHt9OwotICAgIGNyZWF0ZUluZm8uc1R5cGUgICAgICAgICAgICAgICAg
ICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQUxMT0NBVEVfSU5GTzsK
LSAgICBjcmVhdGVJbmZvLmNvbW1hbmRQb29sICAgICAgICAgICAgICAgICA9IGNvbW1hbmRQb29s
LmdldEhhbmRsZSgpOwotICAgIGNyZWF0ZUluZm8ubGV2ZWwgICAgICAgICAgICAgICAgICAgICAg
ID0gVktfQ09NTUFORF9CVUZGRVJfTEVWRUxfU0VDT05EQVJZOwotICAgIGNyZWF0ZUluZm8uY29t
bWFuZEJ1ZmZlckNvdW50ICAgICAgICAgID0gMTsKLQotICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0
LCBjb21tYW5kQnVmZmVyLT5pbml0KGNvbnRleHQtPmdldERldmljZSgpLCBjcmVhdGVJbmZvKSk7
Ci0KLSAgICBWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8gYmVnaW5JbmZvID0ge307Ci0gICAgYmVn
aW5JbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1B
TkRfQlVGRkVSX0JFR0lOX0lORk87Ci0gICAgYmVnaW5JbmZvLmZsYWdzICAgICAgICAgICAgICAg
ICAgICA9IGZsYWdzIHwgVktfQ09NTUFORF9CVUZGRVJfVVNBR0VfT05FX1RJTUVfU1VCTUlUX0JJ
VDsKLSAgICBiZWdpbkluZm8ucEluaGVyaXRhbmNlSW5mbyAgICAgICAgID0gJmluaGVyaXRhbmNl
SW5mbzsKLQotICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0LCBjb21tYW5kQnVmZmVyLT5iZWdpbihi
ZWdpbkluZm8pKTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLWNv
bnN0IGNoYXIgKkdldFJlc291cmNlVHlwZU5hbWUoQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBo
Tm9kZUZ1bmN0aW9uIGZ1bmN0aW9uKQotewotICAgIHN3aXRjaCAocmVzb3VyY2VUeXBlKQotICAg
IHsKLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkJ1ZmZlcjoKLSAgICAg
ICAgICAgIHJldHVybiAiQnVmZmVyIjsKLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJj
ZVR5cGU6OkZyYW1lYnVmZmVyOgotICAgICAgICAgICAgcmV0dXJuICJGcmFtZWJ1ZmZlciI7Ci0g
ICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpJbWFnZToKLSAgICAgICAgICAg
IHJldHVybiAiSW1hZ2UiOwotICAgICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6
UXVlcnk6Ci0gICAgICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpCZWdpblF1ZXJ5Ogot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkJlZ2luUXVlcnkiOwotICAgICAgICAgICAgICAg
IGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpFbmRRdWVyeToKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICJFbmRRdWVyeSI7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3Jh
cGhOb2RlRnVuY3Rpb246OldyaXRlVGltZXN0YW1wOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIldyaXRlVGltZXN0YW1wIjsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlF1
ZXJ5IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5
cGU6OkRpc3BhdGNoZXI6Ci0gICAgICAgICAgICByZXR1cm4gIkRpc3BhdGNoZXIiOwotICAgICAg
ICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RW11bGF0ZWRRdWVyeToKLSAgICAgICAg
ICAgIHN3aXRjaCAoZnVuY3Rpb24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2tRdWVyeToK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJCZWdpblRyYW5zZm9ybUZlZWRiYWNrUXVlcnki
OwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpFbmRUcmFu
c2Zvcm1GZWVkYmFja1F1ZXJ5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkVuZFRyYW5z
Zm9ybUZlZWRiYWNrUXVlcnkiOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiRW11
bGF0ZWRRdWVyeSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVz
b3VyY2VUeXBlOjpGZW5jZVN5bmM6Ci0gICAgICAgICAgICBzd2l0Y2ggKGZ1bmN0aW9uKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9u
OjpTZXRGZW5jZVN5bmM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiU2V0RmVuY2VTeW5j
IjsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6V2FpdEZl
bmNlU3luYzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJXYWl0RmVuY2VTeW5jIjsKLSAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkZlbmNlU3luYyI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpHcmFwaEJhcnJpZXI6Ci0g
ICAgICAgICAgICByZXR1cm4gIkdyYXBoQmFycmllciI7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEdy
YXBoUmVzb3VyY2VUeXBlOjpEZWJ1Z01hcmtlcjoKLSAgICAgICAgICAgIHN3aXRjaCAoZnVuY3Rp
b24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2Rl
RnVuY3Rpb246Okluc2VydERlYnVnTWFya2VyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Ikluc2VydERlYnVnTWFya2VyIjsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5v
ZGVGdW5jdGlvbjo6UHVzaERlYnVnTWFya2VyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
IlB1c2hEZWJ1Z01hcmtlciI7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2Rl
RnVuY3Rpb246OlBvcERlYnVnTWFya2VyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIlBv
cERlYnVnTWFya2VyIjsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkRlYnVnTWFy
a2VyIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5
cGU6Okhvc3RBdmFpbGFiaWxpdHlPcGVyYXRpb246Ci0gICAgICAgICAgICBzd2l0Y2ggKGZ1bmN0
aW9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9k
ZUZ1bmN0aW9uOjpIb3N0QXZhaWxhYmlsaXR5T3BlcmF0aW9uOgotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gIkhvc3RBdmFpbGFiaWxpdHlPcGVyYXRpb24iOwotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAiSG9zdEF2YWlsYWJpbGl0eU9wZXJhdGlvbiI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
ICAgcmV0dXJuICIiOwotICAgIH0KLX0KLQotY29uc3QgY2hhciAqR2V0TG9hZE9wU2hvcnRoYW5k
KHVpbnQzMl90IGxvYWRPcCkKLXsKLSAgICBzd2l0Y2ggKGxvYWRPcCkKLSAgICB7Ci0gICAgICAg
IGNhc2UgVktfQVRUQUNITUVOVF9MT0FEX09QX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJD
IjsKLSAgICAgICAgY2FzZSBWS19BVFRBQ0hNRU5UX0xPQURfT1BfTE9BRDoKLSAgICAgICAgICAg
IHJldHVybiAiTCI7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gIkQiOwot
ICAgIH0KLX0KLQotY29uc3QgY2hhciAqR2V0U3RvcmVPcFNob3J0aGFuZCh1aW50MzJfdCBzdG9y
ZU9wKQotewotICAgIHN3aXRjaCAoc3RvcmVPcCkKLSAgICB7Ci0gICAgICAgIGNhc2UgVktfQVRU
QUNITUVOVF9TVE9SRV9PUF9TVE9SRToKLSAgICAgICAgICAgIHJldHVybiAiUyI7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gIkQiOwotICAgIH0KLX0KLQotdm9pZCBNYWtl
RGVidWdVdGlsc0xhYmVsKEdMZW51bSBzb3VyY2UsIGNvbnN0IGNoYXIgKm1hcmtlciwgVmtEZWJ1
Z1V0aWxzTGFiZWxFWFQgKmxhYmVsKQotewotICAgIHN0YXRpYyBjb25zdGV4cHIgYW5nbGU6OkNv
bG9yRiBrTGFiZWxDb2xvcnNbNl0gPSB7Ci0gICAgICAgIGFuZ2xlOjpDb2xvckYoMS4wZiwgMC41
ZiwgMC41ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfQVBJCi0gICAgICAgIGFuZ2xlOjpDb2xv
ckYoMC41ZiwgMS4wZiwgMC41ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RF
TQotICAgICAgICBhbmdsZTo6Q29sb3JGKDAuNWYsIDAuNWYsIDEuMGYsIDEuMGYpLCAgLy8gREVC
VUdfU09VUkNFX1NIQURFUl9DT01QSUxFUgotICAgICAgICBhbmdsZTo6Q29sb3JGKDAuN2YsIDAu
N2YsIDAuN2YsIDEuMGYpLCAgLy8gREVCVUdfU09VUkNFX1RISVJEX1BBUlRZCi0gICAgICAgIGFu
Z2xlOjpDb2xvckYoMC41ZiwgMC44ZiwgMC45ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfQVBQ
TElDQVRJT04KLSAgICAgICAgYW5nbGU6OkNvbG9yRigwLjlmLCAwLjhmLCAwLjVmLCAxLjBmKSwg
IC8vIERFQlVHX1NPVVJDRV9PVEhFUgotICAgIH07Ci0KLSAgICBpbnQgY29sb3JJbmRleCA9IHNv
dXJjZSAtIEdMX0RFQlVHX1NPVVJDRV9BUEk7Ci0gICAgQVNTRVJUKGNvbG9ySW5kZXggPj0gMCAm
JiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbG9ySW5kZXgpIDwgQXJyYXlTaXplKGtMYWJlbENvbG9y
cykpOwotCi0gICAgbGFiZWwtPnNUeXBlICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9ERUJVR19V
VElMU19MQUJFTF9FWFQ7Ci0gICAgbGFiZWwtPnBOZXh0ICAgICAgPSBudWxscHRyOwotICAgIGxh
YmVsLT5wTGFiZWxOYW1lID0gbWFya2VyOwotICAgIGtMYWJlbENvbG9yc1tjb2xvckluZGV4XS53
cml0ZURhdGEobGFiZWwtPmNvbG9yKTsKLX0KLQotY29uc3RleHByIFZrU3VicGFzc0NvbnRlbnRz
IGtSZW5kZXJQYXNzQ29udGVudHMgPQotICAgIENvbW1hbmRCdWZmZXI6OkV4ZWN1dGVzSW5saW5l
KCkgPyBWS19TVUJQQVNTX0NPTlRFTlRTX0lOTElORQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBWS19TVUJQQVNTX0NPTlRFTlRTX1NFQ09OREFSWV9DT01NQU5EX0JVRkZF
UlM7Ci0KLS8vIEhlbHBlcnMgdG8gdW5pZnkgZXhlY3V0ZUNvbW1hbmRzIGNhbGwgYmFzZWQgb24g
dW5kZXJseWluZyBjbWQgYnVmZmVyIHR5cGUKLUFOR0xFX01BWUJFX1VOVVNFRAotdm9pZCBFeGVj
dXRlQ29tbWFuZHMoUHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1DbWRCdWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgICBwcml2OjpTZWNvbmRhcnlDb21tYW5kQnVmZmVyICpzZWNDbWRCdWZmZXIp
Ci17Ci0gICAgc2VjQ21kQnVmZmVyLT5leGVjdXRlQ29tbWFuZHMocHJpbUNtZEJ1ZmZlci0+Z2V0
SGFuZGxlKCkpOwotfQotCi1BTkdMRV9NQVlCRV9VTlVTRUQKLXZvaWQgRXhlY3V0ZUNvbW1hbmRz
KFByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltQ21kQnVmZmVyLCBwcml2OjpDb21tYW5kQnVmZmVy
ICpzZWNDbWRCdWZmZXIpCi17Ci0gICAgcHJpbUNtZEJ1ZmZlci0+ZXhlY3V0ZUNvbW1hbmRzKDEs
IHNlY0NtZEJ1ZmZlcik7Ci19Ci0KLUFOR0xFX01BWUJFX1VOVVNFRAotdm9pZCBJbnNlcnRCZWdp
blRyYW5zZm9ybUZlZWRiYWNrKFByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltQ21kQnVmZmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXY6OlNlY29uZGFyeUNvbW1hbmRC
dWZmZXIgJmNvbW1hbmRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgdmFsaWRCdWZmZXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRlckJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZWJpbmRCdWZmZXIpCi17Ci0gICAgZ2w6OlRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyc0FycmF5PFZrRGV2aWNlU2l6ZT4gb2Zmc2V0cyA9IHswLCAwLCAwLCAwfTsK
LSAgICB1aW50MzJfdCBjb3VudGVyQnVmZmVyU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKHJlYmluZEJ1ZmZlcikgPyAwIDogdmFsaWRCdWZmZXJDb3VudDsKLQotICAgIHZrQ21k
QmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVChwcmltQ21kQnVmZmVyLT5nZXRIYW5kbGUoKSwgMCwg
Y291bnRlckJ1ZmZlclNpemUsIGNvdW50ZXJCdWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXRzLmRhdGEoKSk7Ci19Ci0KLUFOR0xFX01BWUJFX1VOVVNFRAot
dm9pZCBJbnNlcnRFbmRUcmFuc2Zvcm1GZWVkYmFjayhQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJp
bUNtZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdjo6U2Vjb25k
YXJ5Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgdmFsaWRCdWZmZXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVmtCdWZmZXIgKmNvdW50ZXJCdWZmZXJzKQotewotICAgIGdsOjpU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNBcnJheTxWa0RldmljZVNpemU+IG9mZnNldHMgPSB7MCwg
MCwgMCwgMH07Ci0KLSAgICB2a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUKHByaW1DbWRCdWZm
ZXItPmdldEhhbmRsZSgpLCAwLCB2YWxpZEJ1ZmZlckNvdW50LCBjb3VudGVyQnVmZmVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHMuZGF0YSgpKTsKLX0KLQotQU5H
TEVfTUFZQkVfVU5VU0VECi12b2lkIEluc2VydENvdW50ZXJCdWZmZXJQaXBlbGluZUJhcnJpZXIo
UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1DbWRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpdjo6U2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlciAmY29tbWFu
ZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
a0J1ZmZlciAqY291bnRlckJ1ZmZlcnMpCi17Ci0gICAgVmtCdWZmZXJNZW1vcnlCYXJyaWVyIGJ1
ZmZlckJhcnJpZXIgPSB7fTsKLSAgICBidWZmZXJCYXJyaWVyLnNUeXBlICAgICAgICAgICAgICAg
ICA9IFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZFUl9NRU1PUllfQkFSUklFUjsKLSAgICBidWZmZXJC
YXJyaWVyLnBOZXh0ICAgICAgICAgICAgICAgICA9IG51bGxwdHI7Ci0gICAgYnVmZmVyQmFycmll
ci5zcmNBY2Nlc3NNYXNrICAgICAgICAgPSBWS19BQ0NFU1NfVFJBTlNGT1JNX0ZFRURCQUNLX0NP
VU5URVJfV1JJVEVfQklUX0VYVDsKLSAgICBidWZmZXJCYXJyaWVyLmRzdEFjY2Vzc01hc2sgICAg
ICAgICA9IFZLX0FDQ0VTU19UUkFOU0ZPUk1fRkVFREJBQ0tfQ09VTlRFUl9SRUFEX0JJVF9FWFQ7
Ci0gICAgYnVmZmVyQmFycmllci5zcmNRdWV1ZUZhbWlseUluZGV4ICAgPSBWS19RVUVVRV9GQU1J
TFlfSUdOT1JFRDsKLSAgICBidWZmZXJCYXJyaWVyLmRzdFF1ZXVlRmFtaWx5SW5kZXggICA9IFZL
X1FVRVVFX0ZBTUlMWV9JR05PUkVEOwotICAgIGJ1ZmZlckJhcnJpZXIuYnVmZmVyICAgICAgICAg
ICAgICAgID0gY291bnRlckJ1ZmZlcnNbMF07Ci0gICAgYnVmZmVyQmFycmllci5vZmZzZXQgICAg
ICAgICAgICAgICAgPSAwOwotICAgIGJ1ZmZlckJhcnJpZXIuc2l6ZSAgICAgICAgICAgICAgICAg
ID0gVktfV0hPTEVfU0laRTsKLQotICAgIHZrQ21kUGlwZWxpbmVCYXJyaWVyKHByaW1DbWRCdWZm
ZXItPmdldEhhbmRsZSgpLCBWS19QSVBFTElORV9TVEFHRV9UUkFOU0ZPUk1fRkVFREJBQ0tfQklU
X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9EUkFXX0lO
RElSRUNUX0JJVCwgMHUsIDB1LCBudWxscHRyLCAxdSwgJmJ1ZmZlckJhcnJpZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgMHUsIG51bGxwdHIpOwotfQotCi1BTkdMRV9NQVlCRV9VTlVTRUQK
LXN0ZDo6c3RyaW5nIER1bXBDb21tYW5kcyhjb25zdCBwcml2OjpTZWNvbmRhcnlDb21tYW5kQnVm
ZmVyICZjb21tYW5kQnVmZmVyLCBjb25zdCBjaGFyICpzZXBhcmF0b3IpCi17Ci0gICAgcmV0dXJu
IGNvbW1hbmRCdWZmZXIuZHVtcENvbW1hbmRzKHNlcGFyYXRvcik7Ci19Ci0KLUFOR0xFX01BWUJF
X1VOVVNFRAotc3RkOjpzdHJpbmcgRHVtcENvbW1hbmRzKGNvbnN0IHByaXY6OkNvbW1hbmRCdWZm
ZXIgJmNvbW1hbmRCdWZmZXIsIGNvbnN0IGNoYXIgKnNlcGFyYXRvcikKLXsKLSAgICByZXR1cm4g
Ii0tYmxvYi0tIjsKLX0KLQotZmxvYXQgQ2FsY3VsYXRlU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBv
b2xXYXN0ZShjb25zdCBzdGQ6OnZlY3RvcjxDb21tYW5kR3JhcGhOb2RlICo+IG5vZGVzKQotewot
ICAgIHNpemVfdCB1c2VkICAgICAgPSAwOwotICAgIHNpemVfdCBhbGxvY2F0ZWQgPSAwOwotCi0g
ICAgZm9yIChjb25zdCBDb21tYW5kR3JhcGhOb2RlICpub2RlIDogbm9kZXMpCi0gICAgewotICAg
ICAgICBzaXplX3Qgbm9kZVVzZWQ7Ci0gICAgICAgIHNpemVfdCBub2RlQWxsb2NhdGVkOwotICAg
ICAgICBub2RlLT5nZXRNZW1vcnlVc2FnZVN0YXRzRm9yRGlhZ25vc3RpY3MoJm5vZGVVc2VkLCAm
bm9kZUFsbG9jYXRlZCk7Ci0gICAgICAgIHVzZWQgKz0gbm9kZVVzZWQ7Ci0gICAgICAgIGFsbG9j
YXRlZCArPSBub2RlQWxsb2NhdGVkOwotICAgIH0KLQotICAgIGFsbG9jYXRlZCA9IHN0ZDo6bWF4
PHNpemVfdD4oYWxsb2NhdGVkLCAxKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHVz
ZWQpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFsbG9jYXRlZCk7Ci19Ci0KLX0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKLQotLy8gQ29tbWFuZEdyYXBoUmVzb3VyY2UgaW1wbGVtZW50YXRpb24uCi1D
b21tYW5kR3JhcGhSZXNvdXJjZTo6Q29tbWFuZEdyYXBoUmVzb3VyY2UoQ29tbWFuZEdyYXBoUmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSkKLSAgICA6IG1DdXJyZW50V3JpdGluZ05vZGUobnVsbHB0
ciksIG1SZXNvdXJjZVR5cGUocmVzb3VyY2VUeXBlKQotewotICAgIG1Vc2UuaW5pdCgpOwotfQot
Ci1Db21tYW5kR3JhcGhSZXNvdXJjZTo6fkNvbW1hbmRHcmFwaFJlc291cmNlKCkKLXsKLSAgICBt
VXNlLnJlbGVhc2UoKTsKLX0KLQotYW5nbGU6OlJlc3VsdCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6
ZmluaXNoUnVubmluZ0NvbW1hbmRzKENvbnRleHRWayAqY29udGV4dFZrKQotewotICAgIHJldHVy
biBjb250ZXh0VmstPmZpbmlzaFRvU2VyaWFsKG1Vc2UuZ2V0U2VyaWFsKCkpOwotfQotCi1hbmds
ZTo6UmVzdWx0IENvbW1hbmRHcmFwaFJlc291cmNlOjpyZWNvcmRDb21tYW5kcyhDb250ZXh0Vmsg
KmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVyT3V0KQotewotICAgIEFTU0VSVChj
b250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSk7Ci0KLSAgICB1cGRhdGVDdXJyZW50QWNj
ZXNzTm9kZXMoKTsKLQotICAgIGlmICghaGFzQ2hpbGRsZXNzV3JpdGluZ05vZGUoKSB8fCBoYXNT
dGFydGVkUmVuZGVyUGFzcygpKQotICAgIHsKLSAgICAgICAgc3RhcnROZXdDb21tYW5kcyhjb250
ZXh0VmspOwotICAgICAgICByZXR1cm4gbUN1cnJlbnRXcml0aW5nTm9kZS0+YmVnaW5PdXRzaWRl
UmVuZGVyUGFzc1JlY29yZGluZygKLSAgICAgICAgICAgIGNvbnRleHRWaywgY29udGV4dFZrLT5n
ZXRDb21tYW5kUG9vbCgpLCBjb21tYW5kQnVmZmVyT3V0KTsKLSAgICB9Ci0KLSAgICBDb21tYW5k
QnVmZmVyICpvdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzID0gbUN1cnJlbnRXcml0aW5nTm9kZS0+
Z2V0T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcygpOwotICAgIGlmICghb3V0c2lkZVJlbmRlclBh
c3NDb21tYW5kcy0+dmFsaWQoKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShtQ3VycmVudFdy
aXRpbmdOb2RlLT5iZWdpbk91dHNpZGVSZW5kZXJQYXNzUmVjb3JkaW5nKAotICAgICAgICAgICAg
Y29udGV4dFZrLCBjb250ZXh0VmstPmdldENvbW1hbmRQb29sKCksIGNvbW1hbmRCdWZmZXJPdXQp
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgKmNvbW1hbmRCdWZmZXJPdXQgPSBv
dXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzOwotICAgIH0KLQotICAgIC8vIFN0b3JlIHJlZmVyZW5j
ZSB0byB1c2FnZSBpbiBncmFwaC4KLSAgICBjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgp
LmFkZChtVXNlKTsKLQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQot
YW5nbGU6OlJlc3VsdCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6YmVnaW5SZW5kZXJQYXNzKAotICAg
IENvbnRleHRWayAqY29udGV4dFZrLAotICAgIGNvbnN0IEZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZl
ciwKLSAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAotICAgIGNvbnN0IFJlbmRl
clBhc3NEZXNjICZyZW5kZXJQYXNzRGVzYywKLSAgICBjb25zdCBBdHRhY2htZW50T3BzQXJyYXkg
JnJlbmRlclBhc3NBdHRhY2htZW50T3BzLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZrQ2xlYXJW
YWx1ZT4gJmNsZWFyVmFsdWVzLAotICAgIENvbW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVyT3V0
KQotewotICAgIC8vIElmIGEgYmFycmllciBoYXMgYmVlbiBpbnNlcnRlZCBpbiB0aGUgbWVhbnRp
bWUsIHN0b3AgdGhlIGNvbW1hbmQgYnVmZmVyLgotICAgIGlmICghaGFzQ2hpbGRsZXNzV3JpdGlu
Z05vZGUoKSkKLSAgICB7Ci0gICAgICAgIHN0YXJ0TmV3Q29tbWFuZHMoY29udGV4dFZrKTsKLSAg
ICB9Ci0KLSAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5zdG9yZVJlbmRlclBhc3NJbmZvKGZyYW1l
YnVmZmVyLCByZW5kZXJBcmVhLCByZW5kZXJQYXNzRGVzYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3NBdHRhY2htZW50T3BzLCBjbGVhclZh
bHVlcyk7Ci0KLSAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5zZXRSZW5kZXJQYXNzT3duZXIoY29u
dGV4dFZrKTsKLQotICAgIHJldHVybiBtQ3VycmVudFdyaXRpbmdOb2RlLT5iZWdpbkluc2lkZVJl
bmRlclBhc3NSZWNvcmRpbmcoY29udGV4dFZrLCBjb21tYW5kQnVmZmVyT3V0KTsKLX0KLQotdm9p
ZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6YWRkV3JpdGVEZXBlbmRlbmN5KENvbnRleHRWayAqY29u
dGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bW1hbmRHcmFwaFJlc291cmNlICp3cml0aW5nUmVzb3VyY2UpCi17Ci0gICAgQVNTRVJUKGNvbnRl
eHRWay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKTsKLQotICAgIENvbW1hbmRHcmFwaE5vZGUgKndy
aXRpbmdOb2RlID0gd3JpdGluZ1Jlc291cmNlLT5tQ3VycmVudFdyaXRpbmdOb2RlOwotICAgIEFT
U0VSVCh3cml0aW5nTm9kZSk7Ci0KLSAgICBvbldyaXRlSW1wbChjb250ZXh0VmssIHdyaXRpbmdO
b2RlKTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6YWRkUmVhZERlcGVuZGVuY3ko
Q29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVhZGluZ1Jlc291cmNlKQotewotICAg
IEFTU0VSVChjb250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSk7Ci0KLSAgICBvblJlc291
cmNlQWNjZXNzKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKLQotICAgIENvbW1h
bmRHcmFwaE5vZGUgKnJlYWRpbmdOb2RlID0gcmVhZGluZ1Jlc291cmNlLT5tQ3VycmVudFdyaXRp
bmdOb2RlOwotICAgIEFTU0VSVChyZWFkaW5nTm9kZSk7Ci0KLSAgICBpZiAobUN1cnJlbnRXcml0
aW5nTm9kZSkKLSAgICB7Ci0gICAgICAgIC8vIEVuc3VyZSAncmVhZGluZ05vZGUnIGhhcHBlbnMg
YWZ0ZXIgdGhlIGN1cnJlbnQgd3JpdGluZyBub2RlLgotICAgICAgICBDb21tYW5kR3JhcGhOb2Rl
OjpTZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5jeShtQ3VycmVudFdyaXRpbmdOb2RlLCByZWFkaW5n
Tm9kZSk7Ci0gICAgfQotCi0gICAgLy8gQWRkIHRoZSByZWFkIG5vZGUgdG8gdGhlIGxpc3Qgb2Yg
bm9kZXMgY3VycmVudGx5IHJlYWRpbmcgdGhpcyByZXNvdXJjZS4KLSAgICBtQ3VycmVudFJlYWRp
bmdOb2Rlcy5wdXNoX2JhY2socmVhZGluZ05vZGUpOwotfQotCi12b2lkIENvbW1hbmRHcmFwaFJl
c291cmNlOjpmaW5pc2hDdXJyZW50Q29tbWFuZHMoQ29udGV4dFZrICpjb250ZXh0VmspCi17Ci0g
ICAgQVNTRVJUKGNvbnRleHRWay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKTsKLSAgICBzdGFydE5l
d0NvbW1hbmRzKGNvbnRleHRWayk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OnN0
YXJ0TmV3Q29tbWFuZHMoQ29udGV4dFZrICpjb250ZXh0VmspCi17Ci0gICAgQVNTRVJUKGNvbnRl
eHRWay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKTsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpuZXdD
b21tYW5kcyA9Ci0gICAgICAgIGNvbnRleHRWay0+Z2V0Q29tbWFuZEdyYXBoKCktPmFsbG9jYXRl
Tm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkdlbmVyaWMpOwotICAgIG5ld0NvbW1hbmRz
LT5zZXREaWFnbm9zdGljSW5mbyhtUmVzb3VyY2VUeXBlLCByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odGhpcykpOwotICAgIG9uV3JpdGVJbXBsKGNvbnRleHRWaywgbmV3Q29tbWFuZHMpOwot
fQotCi12b2lkIENvbW1hbmRHcmFwaFJlc291cmNlOjpvbldyaXRlSW1wbChDb250ZXh0VmsgKmNv
bnRleHRWaywgQ29tbWFuZEdyYXBoTm9kZSAqd3JpdGluZ05vZGUpCi17Ci0gICAgb25SZXNvdXJj
ZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7Ci0KLSAgICAvLyBNYWtl
IHN1cmUgYW55IG9wZW4gcmVhZHMgYW5kIHdyaXRlcyBmaW5pc2ggYmVmb3JlIHdlIGV4ZWN1dGUg
J3dyaXRpbmdOb2RlJy4KLSAgICBpZiAoIW1DdXJyZW50UmVhZGluZ05vZGVzLmVtcHR5KCkpCi0g
ICAgewotICAgICAgICBDb21tYW5kR3JhcGhOb2RlOjpTZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5j
aWVzKG1DdXJyZW50UmVhZGluZ05vZGVzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFJlYWRpbmdOb2Rlcy5zaXpl
KCksIHdyaXRpbmdOb2RlKTsKLSAgICAgICAgbUN1cnJlbnRSZWFkaW5nTm9kZXMuY2xlYXIoKTsK
LSAgICB9Ci0KLSAgICBpZiAobUN1cnJlbnRXcml0aW5nTm9kZSAmJiBtQ3VycmVudFdyaXRpbmdO
b2RlICE9IHdyaXRpbmdOb2RlKQotICAgIHsKLSAgICAgICAgQ29tbWFuZEdyYXBoTm9kZTo6U2V0
SGFwcGVuc0JlZm9yZURlcGVuZGVuY3kobUN1cnJlbnRXcml0aW5nTm9kZSwgd3JpdGluZ05vZGUp
OwotICAgIH0KLQotICAgIG1DdXJyZW50V3JpdGluZ05vZGUgPSB3cml0aW5nTm9kZTsKLX0KLQot
Ly8gQ29tbWFuZEdyYXBoTm9kZSBpbXBsZW1lbnRhdGlvbi4KLUNvbW1hbmRHcmFwaE5vZGU6OkNv
bW1hbmRHcmFwaE5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uIGZ1bmN0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UG9vbEFsbG9jYXRvciAqcG9vbEFs
bG9jYXRvcikKLSAgICA6IG1SZW5kZXJQYXNzQ2xlYXJWYWx1ZXN7fSwKLSAgICAgIG1GdW5jdGlv
bihmdW5jdGlvbiksCi0gICAgICBtUG9vbEFsbG9jYXRvcihwb29sQWxsb2NhdG9yKSwKLSAgICAg
IG1RdWVyeVBvb2woVktfTlVMTF9IQU5ETEUpLAotICAgICAgbVF1ZXJ5SW5kZXgoMCksCi0gICAg
ICBtRmVuY2VTeW5jRXZlbnQoVktfTlVMTF9IQU5ETEUpLAotICAgICAgbUhhc0NoaWxkcmVuKGZh
bHNlKSwKLSAgICAgIG1WaXNpdGVkU3RhdGUoVmlzaXRlZFN0YXRlOjpVbnZpc2l0ZWQpLAotICAg
ICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3MoMCksCi0gICAgICBtR2xvYmFsTWVtb3J5
QmFycmllckRzdEFjY2VzcygwKSwKLSAgICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3RhZ2VzKDAp
LAotICAgICAgbVJlbmRlclBhc3NPd25lcihudWxscHRyKSwKLSAgICAgIG1WYWxpZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyQ291bnQoMCkKLXt9Ci0KLUNvbW1hbmRHcmFwaE5vZGU6On5Db21tYW5k
R3JhcGhOb2RlKCkKLXsKLSAgICBtUmVuZGVyUGFzc0ZyYW1lYnVmZmVyLnNldEhhbmRsZShWS19O
VUxMX0hBTkRMRSk7Ci0gICAgLy8gQ29tbWFuZCBidWZmZXJzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBj
b21tYW5kIHBvb2wsIHNvIGRvbid0IG5lZWQgdG8gYmUgZnJlZWQuCi0gICAgbU91dHNpZGVSZW5k
ZXJQYXNzQ29tbWFuZHMucmVsZWFzZUhhbmRsZSgpOwotICAgIG1JbnNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMucmVsZWFzZUhhbmRsZSgpOwotfQotCi1hbmdsZTo6UmVzdWx0IENvbW1hbmRHcmFwaE5v
ZGU6OmJlZ2luT3V0c2lkZVJlbmRlclBhc3NSZWNvcmRpbmcoQ29udGV4dFZrICpjb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENvbW1hbmRQb29sICZjb21tYW5kUG9vbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVm
ZmVyICoqY29tbWFuZHNPdXQpCi17Ci0gICAgQVNTRVJUKCFtSGFzQ2hpbGRyZW4pOwotCi0gICAg
VmtDb21tYW5kQnVmZmVySW5oZXJpdGFuY2VJbmZvIGluaGVyaXRhbmNlSW5mbyA9IHt9OwotICAg
IGluaGVyaXRhbmNlSW5mby5zVHlwZSAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRf
QlVGRkVSX0lOSEVSSVRBTkNFX0lORk87Ci0gICAgaW5oZXJpdGFuY2VJbmZvLnJlbmRlclBhc3Mg
ID0gVktfTlVMTF9IQU5ETEU7Ci0gICAgaW5oZXJpdGFuY2VJbmZvLnN1YnBhc3MgICAgID0gMDsK
LSAgICBpbmhlcml0YW5jZUluZm8uZnJhbWVidWZmZXIgPSBWS19OVUxMX0hBTkRMRTsKLSAgICBp
bmhlcml0YW5jZUluZm8ub2NjbHVzaW9uUXVlcnlFbmFibGUgPQotICAgICAgICBDb21tYW5kQnVm
ZmVyOjpTdXBwb3J0c1F1ZXJpZXMoY29udGV4dC0+Z2V0UmVuZGVyZXIoKS0+Z2V0UGh5c2ljYWxE
ZXZpY2VGZWF0dXJlcygpKTsKLSAgICBpbmhlcml0YW5jZUluZm8ucXVlcnlGbGFncyAgICAgICAg
ID0gMDsKLSAgICBpbmhlcml0YW5jZUluZm8ucGlwZWxpbmVTdGF0aXN0aWNzID0gMDsKLQotICAg
IEFOR0xFX1RSWShJbml0QW5kQmVnaW5Db21tYW5kQnVmZmVyKGNvbnRleHQsIGNvbW1hbmRQb29s
LCBpbmhlcml0YW5jZUluZm8sIDAsIG1Qb29sQWxsb2NhdG9yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcykpOwotCi0g
ICAgKmNvbW1hbmRzT3V0ID0gJm1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzOwotICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotYW5nbGU6OlJlc3VsdCBDb21tYW5kR3Jh
cGhOb2RlOjpiZWdpbkluc2lkZVJlbmRlclBhc3NSZWNvcmRpbmcoQ29udGV4dFZrICpjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRzT3V0KQotewotICAgIEFTU0VSVCghbUhh
c0NoaWxkcmVuKTsKLQotICAgIC8vIEdldCBhIGNvbXBhdGlibGUgUmVuZGVyUGFzcyBmcm9tIHRo
ZSBjYWNoZSBzbyB3ZSBjYW4gaW5pdGlhbGl6ZSB0aGUgaW5oZXJpdGFuY2UgaW5mby4KLSAgICAv
LyBUT0RPKGptYWRpbGwpOiBTdXBwb3J0IHF1ZXJ5IGZvciBjb21wYXRpYmxlL2NvbmZvcm1hbnQg
cmVuZGVyIHBhc3MuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjM2MQotICAgIFJlbmRlclBhc3MgKmNv
bXBhdGlibGVSZW5kZXJQYXNzOwotICAgIEFOR0xFX1RSWShjb250ZXh0LT5nZXRDb21wYXRpYmxl
UmVuZGVyUGFzcyhtUmVuZGVyUGFzc0Rlc2MsICZjb21wYXRpYmxlUmVuZGVyUGFzcykpOwotCi0g
ICAgVmtDb21tYW5kQnVmZmVySW5oZXJpdGFuY2VJbmZvIGluaGVyaXRhbmNlSW5mbyA9IHt9Owot
ICAgIGluaGVyaXRhbmNlSW5mby5zVHlwZSAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1B
TkRfQlVGRkVSX0lOSEVSSVRBTkNFX0lORk87Ci0gICAgaW5oZXJpdGFuY2VJbmZvLnJlbmRlclBh
c3MgID0gY29tcGF0aWJsZVJlbmRlclBhc3MtPmdldEhhbmRsZSgpOwotICAgIGluaGVyaXRhbmNl
SW5mby5zdWJwYXNzICAgICA9IDA7Ci0gICAgaW5oZXJpdGFuY2VJbmZvLmZyYW1lYnVmZmVyID0g
bVJlbmRlclBhc3NGcmFtZWJ1ZmZlci5nZXRIYW5kbGUoKTsKLSAgICBpbmhlcml0YW5jZUluZm8u
b2NjbHVzaW9uUXVlcnlFbmFibGUgPQotICAgICAgICBDb21tYW5kQnVmZmVyOjpTdXBwb3J0c1F1
ZXJpZXMoY29udGV4dC0+Z2V0UmVuZGVyZXIoKS0+Z2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlcygp
KTsKLSAgICBpbmhlcml0YW5jZUluZm8ucXVlcnlGbGFncyAgICAgICAgID0gMDsKLSAgICBpbmhl
cml0YW5jZUluZm8ucGlwZWxpbmVTdGF0aXN0aWNzID0gMDsKLQotICAgIEFOR0xFX1RSWShJbml0
QW5kQmVnaW5Db21tYW5kQnVmZmVyKGNvbnRleHQsIGNvbnRleHQtPmdldENvbW1hbmRQb29sKCks
IGluaGVyaXRhbmNlSW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19DT01NQU5EX0JVRkZFUl9VU0FHRV9SRU5ERVJfUEFTU19DT05USU5VRV9CSVQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBvb2xBbGxvY2F0b3IsICZtSW5z
aWRlUmVuZGVyUGFzc0NvbW1hbmRzKSk7Ci0KLSAgICAqY29tbWFuZHNPdXQgPSAmbUluc2lkZVJl
bmRlclBhc3NDb21tYW5kczsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19
Ci0KLXZvaWQgQ29tbWFuZEdyYXBoTm9kZTo6c3RvcmVSZW5kZXJQYXNzSW5mbyhjb25zdCBGcmFt
ZWJ1ZmZlciAmZnJhbWVidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSByZW5kZXJBcmVhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpSZW5kZXJQYXNzRGVzYyAmcmVu
ZGVyUGFzc0Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQXR0YWNobWVudE9wc0FycmF5ICZyZW5kZXJQYXNzQXR0YWNobWVudE9wcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxW
a0NsZWFyVmFsdWU+ICZjbGVhclZhbHVlcykKLXsKLSAgICBtUmVuZGVyUGFzc0Rlc2MgICAgICAg
ICAgPSByZW5kZXJQYXNzRGVzYzsKLSAgICBtUmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMgPSByZW5k
ZXJQYXNzQXR0YWNobWVudE9wczsKLSAgICBtUmVuZGVyUGFzc0ZyYW1lYnVmZmVyLnNldEhhbmRs
ZShmcmFtZWJ1ZmZlci5nZXRIYW5kbGUoKSk7Ci0gICAgbVJlbmRlclBhc3NSZW5kZXJBcmVhID0g
cmVuZGVyQXJlYTsKLSAgICBzdGQ6OmNvcHkoY2xlYXJWYWx1ZXMuYmVnaW4oKSwgY2xlYXJWYWx1
ZXMuZW5kKCksIG1SZW5kZXJQYXNzQ2xlYXJWYWx1ZXMuYmVnaW4oKSk7Ci19Ci0KLS8vIHN0YXRp
Ywotdm9pZCBDb21tYW5kR3JhcGhOb2RlOjpTZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5jaWVzKENv
bW1hbmRHcmFwaE5vZGUgKipiZWZvcmVOb2RlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYmVmb3JlTm9kZXNDb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3Jh
cGhOb2RlICphZnRlck5vZGUpCi17Ci0gICAgYWZ0ZXJOb2RlLT5tUGFyZW50cy5pbnNlcnQoYWZ0
ZXJOb2RlLT5tUGFyZW50cy5lbmQoKSwgYmVmb3JlTm9kZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmVmb3JlTm9kZXMgKyBiZWZvcmVOb2Rlc0NvdW50KTsKLQotICAgIC8vIFRP
RE8oam1hZGlsbCk6IGlzIHRoZXJlIGEgZmFzdGVyIHdheSB0byBkbyB0aGlzPwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmVmb3JlTm9kZXNDb3VudDsgKytpKQotICAgIHsKLSAgICAgICAg
YmVmb3JlTm9kZXNbaV0tPnNldEhhc0NoaWxkcmVuKCk7Ci0KLSAgICAgICAgQVNTRVJUKGJlZm9y
ZU5vZGVzW2ldICE9IGFmdGVyTm9kZSAmJiAhYmVmb3JlTm9kZXNbaV0tPmlzQ2hpbGRPZihhZnRl
ck5vZGUpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoTm9kZTo6U2V0SGFwcGVuc0Jl
Zm9yZURlcGVuZGVuY2llcyhDb21tYW5kR3JhcGhOb2RlICpiZWZvcmVOb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaE5v
ZGUgKiphZnRlck5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBhZnRlck5vZGVzQ291bnQpCi17Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhZnRlck5vZGVzQ291bnQ7ICsraSkKLSAgICB7Ci0gICAgICAgIFNldEhhcHBl
bnNCZWZvcmVEZXBlbmRlbmN5KGJlZm9yZU5vZGUsIGFmdGVyTm9kZXNbaV0pOwotICAgIH0KLX0K
LQotYm9vbCBDb21tYW5kR3JhcGhOb2RlOjpoYXNQYXJlbnRzKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gIW1QYXJlbnRzLmVtcHR5KCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoTm9kZTo6c2V0UXVl
cnlQb29sKGNvbnN0IFF1ZXJ5UG9vbCAqcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeUluZGV4KQot
ewotICAgIEFTU0VSVChtRnVuY3Rpb24gPT0gQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpCZWdp
blF1ZXJ5IHx8Ci0gICAgICAgICAgIG1GdW5jdGlvbiA9PSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rp
b246OkVuZFF1ZXJ5IHx8Ci0gICAgICAgICAgIG1GdW5jdGlvbiA9PSBDb21tYW5kR3JhcGhOb2Rl
RnVuY3Rpb246OldyaXRlVGltZXN0YW1wIHx8Ci0gICAgICAgICAgIG1GdW5jdGlvbiA9PSBDb21t
YW5kR3JhcGhOb2RlRnVuY3Rpb246OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2tRdWVyeSB8fAotICAg
ICAgICAgICBtRnVuY3Rpb24gPT0gQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpFbmRUcmFuc2Zv
cm1GZWVkYmFja1F1ZXJ5KTsKLSAgICBtUXVlcnlQb29sICA9IHF1ZXJ5UG9vbC0+Z2V0SGFuZGxl
KCk7Ci0gICAgbVF1ZXJ5SW5kZXggPSBxdWVyeUluZGV4OwotfQotCi12b2lkIENvbW1hbmRHcmFw
aE5vZGU6OnNldEZlbmNlU3luYyhjb25zdCB2azo6RXZlbnQgJmV2ZW50KQotewotICAgIEFTU0VS
VChtRnVuY3Rpb24gPT0gQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpTZXRGZW5jZVN5bmMgfHwK
LSAgICAgICAgICAgbUZ1bmN0aW9uID09IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6V2FpdEZl
bmNlU3luYyk7Ci0gICAgbUZlbmNlU3luY0V2ZW50ID0gZXZlbnQuZ2V0SGFuZGxlKCk7Ci19Ci0K
LXZvaWQgQ29tbWFuZEdyYXBoTm9kZTo6c2V0RGVidWdNYXJrZXIoR0xlbnVtIHNvdXJjZSwgc3Rk
OjpzdHJpbmcgJiZtYXJrZXIpCi17Ci0gICAgQVNTRVJUKG1GdW5jdGlvbiA9PSBDb21tYW5kR3Jh
cGhOb2RlRnVuY3Rpb246Okluc2VydERlYnVnTWFya2VyIHx8Ci0gICAgICAgICAgIG1GdW5jdGlv
biA9PSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OlB1c2hEZWJ1Z01hcmtlcik7Ci0gICAgbURl
YnVnTWFya2VyU291cmNlID0gc291cmNlOwotICAgIG1EZWJ1Z01hcmtlciAgICAgICA9IHN0ZDo6
bW92ZShtYXJrZXIpOwotfQotCi0vLyBEbyBub3QgY2FsbCB0aGlzIGluIGFueXRoaW5nIGJ1dCB0
ZXN0aW5nIGNvZGUsIHNpbmNlIGl0J3Mgc2xvdy4KLWJvb2wgQ29tbWFuZEdyYXBoTm9kZTo6aXND
aGlsZE9mKENvbW1hbmRHcmFwaE5vZGUgKnBhcmVudCkKLXsKLSAgICBzdGQ6OnNldDxDb21tYW5k
R3JhcGhOb2RlICo+IHZpc2l0ZWRMaXN0OwotICAgIHN0ZDo6dmVjdG9yPENvbW1hbmRHcmFwaE5v
ZGUgKj4gb3Blbkxpc3Q7Ci0gICAgb3Blbkxpc3QuaW5zZXJ0KG9wZW5MaXN0LmJlZ2luKCksIG1Q
YXJlbnRzLmJlZ2luKCksIG1QYXJlbnRzLmVuZCgpKTsKLSAgICB3aGlsZSAoIW9wZW5MaXN0LmVt
cHR5KCkpCi0gICAgewotICAgICAgICBDb21tYW5kR3JhcGhOb2RlICpjdXJyZW50ID0gb3Blbkxp
c3QuYmFjaygpOwotICAgICAgICBvcGVuTGlzdC5wb3BfYmFjaygpOwotICAgICAgICBpZiAodmlz
aXRlZExpc3QuY291bnQoY3VycmVudCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGN1cnJlbnQgPT0gcGFyZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlzaXRlZExpc3QuaW5zZXJ0KGN1
cnJlbnQpOwotICAgICAgICAgICAgb3Blbkxpc3QuaW5zZXJ0KG9wZW5MaXN0LmVuZCgpLCBjdXJy
ZW50LT5tUGFyZW50cy5iZWdpbigpLCBjdXJyZW50LT5tUGFyZW50cy5lbmQoKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZpc2l0ZWRTdGF0ZSBDb21tYW5k
R3JhcGhOb2RlOjp2aXNpdGVkU3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiBtVmlzaXRlZFN0
YXRlOwotfQotCi12b2lkIENvbW1hbmRHcmFwaE5vZGU6OnZpc2l0UGFyZW50cyhzdGQ6OnZlY3Rv
cjxDb21tYW5kR3JhcGhOb2RlICo+ICpzdGFjaykKLXsKLSAgICBBU1NFUlQobVZpc2l0ZWRTdGF0
ZSA9PSBWaXNpdGVkU3RhdGU6OlVudmlzaXRlZCk7Ci0gICAgc3RhY2stPmluc2VydChzdGFjay0+
ZW5kKCksIG1QYXJlbnRzLmJlZ2luKCksIG1QYXJlbnRzLmVuZCgpKTsKLSAgICBtVmlzaXRlZFN0
YXRlID0gVmlzaXRlZFN0YXRlOjpSZWFkeTsKLX0KLQotYW5nbGU6OlJlc3VsdCBDb21tYW5kR3Jh
cGhOb2RlOjp2aXNpdEFuZEV4ZWN1dGUodms6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWwgc2VyaWFsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyUGFzc0Nh
Y2hlICpyZW5kZXJQYXNzQ2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeUNvbW1hbmRCdWZmZXIp
Ci17Ci0gICAgLy8gUmVjb3JkIHRoZSBkZWZlcnJlZCBwaXBlbGluZSBiYXJyaWVyIGlmIG5lY2Vz
c2FyeS4KLSAgICBBU1NFUlQoKG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzID09IDApID09
IChtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcyA9PSAwKSk7Ci0gICAgaWYgKG1HbG9iYWxN
ZW1vcnlCYXJyaWVyU3JjQWNjZXNzKQotICAgIHsKLSAgICAgICAgVmtNZW1vcnlCYXJyaWVyIG1l
bW9yeUJhcnJpZXIgPSB7fTsKLSAgICAgICAgbWVtb3J5QmFycmllci5zVHlwZSAgICAgICAgICAg
PSBWS19TVFJVQ1RVUkVfVFlQRV9NRU1PUllfQkFSUklFUjsKLSAgICAgICAgbWVtb3J5QmFycmll
ci5zcmNBY2Nlc3NNYXNrICAgPSBtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzczsKLSAgICAg
ICAgbWVtb3J5QmFycmllci5kc3RBY2Nlc3NNYXNrICAgPSBtR2xvYmFsTWVtb3J5QmFycmllckRz
dEFjY2VzczsKLQotICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+bWVtb3J5QmFycmllciht
R2xvYmFsTWVtb3J5QmFycmllclN0YWdlcywgbUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1vcnlCYXJyaWVy
KTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKG1GdW5jdGlvbikKLSAgICB7Ci0gICAgICAgIGNhc2Ug
Q29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpHZW5lcmljOgotICAgICAgICAgICAgQVNTRVJUKG1R
dWVyeVBvb2wgPT0gVktfTlVMTF9IQU5ETEUgJiYgbUZlbmNlU3luY0V2ZW50ID09IFZLX05VTExf
SEFORExFKTsKLQotICAgICAgICAgICAgaWYgKG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZh
bGlkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRl
eHQsIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmVuZCgpKTsKLSAgICAgICAgICAgICAgICBF
eGVjdXRlQ29tbWFuZHMocHJpbWFyeUNvbW1hbmRCdWZmZXIsICZtT3V0c2lkZVJlbmRlclBhc3ND
b21tYW5kcyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtSW5zaWRlUmVuZGVy
UGFzc0NvbW1hbmRzLnZhbGlkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8g
UHVsbCBhIFJlbmRlclBhc3MgZnJvbSB0aGUgY2FjaGUuCi0gICAgICAgICAgICAgICAgLy8gVE9E
TyhqbWFkaWxsKTogSW5zZXJ0IGxheW91dCB0cmFuc2l0aW9ucy4KLSAgICAgICAgICAgICAgICBS
ZW5kZXJQYXNzICpyZW5kZXJQYXNzID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBBTkdMRV9U
UlkocmVuZGVyUGFzc0NhY2hlLT5nZXRSZW5kZXJQYXNzV2l0aE9wcygKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgc2VyaWFsLCBtUmVuZGVyUGFzc0Rlc2MsIG1SZW5kZXJQYXNzQXR0YWNo
bWVudE9wcywgJnJlbmRlclBhc3MpKTsKLQotICAgICAgICAgICAgICAgIEFOR0xFX1ZLX1RSWShj
b250ZXh0LCBtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmVuZCgpKTsKLQotICAgICAgICAgICAg
ICAgIFZrUmVuZGVyUGFzc0JlZ2luSW5mbyBiZWdpbkluZm8gPSB7fTsKLSAgICAgICAgICAgICAg
ICBiZWdpbkluZm8uc1R5cGUgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUkVO
REVSX1BBU1NfQkVHSU5fSU5GTzsKLSAgICAgICAgICAgICAgICBiZWdpbkluZm8ucmVuZGVyUGFz
cyAgICAgICAgICAgID0gcmVuZGVyUGFzcy0+Z2V0SGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAg
YmVnaW5JbmZvLmZyYW1lYnVmZmVyICAgICAgICAgICA9IG1SZW5kZXJQYXNzRnJhbWVidWZmZXIu
Z2V0SGFuZGxlKCk7Ci0gICAgICAgICAgICAgICAgYmVnaW5JbmZvLnJlbmRlckFyZWEub2Zmc2V0
LnggICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtUmVuZGVyUGFzc1JlbmRlckFyZWEueCk7Ci0g
ICAgICAgICAgICAgICAgYmVnaW5JbmZvLnJlbmRlckFyZWEub2Zmc2V0LnkgICA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihtUmVuZGVyUGFzc1JlbmRlckFyZWEueSk7Ci0gICAgICAgICAgICAgICAg
YmVnaW5JbmZvLnJlbmRlckFyZWEuZXh0ZW50LndpZHRoID0KLSAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1SZW5kZXJQYXNzUmVuZGVyQXJlYS53aWR0aCk7Ci0gICAg
ICAgICAgICAgICAgYmVnaW5JbmZvLnJlbmRlckFyZWEuZXh0ZW50LmhlaWdodCA9Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihtUmVuZGVyUGFzc1JlbmRlckFyZWEu
aGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBiZWdpbkluZm8uY2xlYXJWYWx1ZUNvdW50ID0KLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1SZW5kZXJQYXNzRGVzYy5h
dHRhY2htZW50Q291bnQoKSk7Ci0gICAgICAgICAgICAgICAgYmVnaW5JbmZvLnBDbGVhclZhbHVl
cyA9IG1SZW5kZXJQYXNzQ2xlYXJWYWx1ZXMuZGF0YSgpOwotCi0gICAgICAgICAgICAgICAgcHJp
bWFyeUNvbW1hbmRCdWZmZXItPmJlZ2luUmVuZGVyUGFzcyhiZWdpbkluZm8sIGtSZW5kZXJQYXNz
Q29udGVudHMpOwotICAgICAgICAgICAgICAgIGlmIChtVmFsaWRUcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlckNvdW50ID09IDApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBF
eGVjdXRlQ29tbWFuZHMocHJpbWFyeUNvbW1hbmRCdWZmZXIsICZtSW5zaWRlUmVuZGVyUGFzc0Nv
bW1hbmRzKTsKLSAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUNvbW1hbmRCdWZmZXItPmVuZFJl
bmRlclBhc3MoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zZXJ0QmVnaW5UcmFuc2Zvcm1G
ZWVkYmFjayhwcmltYXJ5Q29tbWFuZEJ1ZmZlciwgbUluc2lkZVJlbmRlclBhc3NDb21tYW5kcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVmFsaWRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja0NvdW50ZXJCdWZmZXJzLmRh
dGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
UmViaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKTsKLSAgICAgICAgICAgICAgICAgICAgRXhl
Y3V0ZUNvbW1hbmRzKHByaW1hcnlDb21tYW5kQnVmZmVyLCAmbUluc2lkZVJlbmRlclBhc3NDb21t
YW5kcyk7Ci0gICAgICAgICAgICAgICAgICAgIEluc2VydEVuZFRyYW5zZm9ybUZlZWRiYWNrKHBy
aW1hcnlDb21tYW5kQnVmZmVyLCBtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVmFsaWRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tDb3VudGVyQnVmZmVycy5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+ZW5kUmVuZGVyUGFzcygpOwotICAg
ICAgICAgICAgICAgICAgICBJbnNlcnRDb3VudGVyQnVmZmVyUGlwZWxpbmVCYXJyaWVyKHByaW1h
cnlDb21tYW5kQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRi
YWNrQ291bnRlckJ1ZmZlcnMuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVG
dW5jdGlvbjo6QmVnaW5RdWVyeToKLSAgICAgICAgICAgIEFTU0VSVCghbU91dHNpZGVSZW5kZXJQ
YXNzQ29tbWFuZHMudmFsaWQoKSAmJiAhbUluc2lkZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChtUXVlcnlQb29sICE9IFZLX05VTExfSEFORExFKTsKLQot
ICAgICAgICAgICAgcHJpbWFyeUNvbW1hbmRCdWZmZXItPnJlc2V0UXVlcnlQb29sKG1RdWVyeVBv
b2wsIG1RdWVyeUluZGV4LCAxKTsKLSAgICAgICAgICAgIHByaW1hcnlDb21tYW5kQnVmZmVyLT5i
ZWdpblF1ZXJ5KG1RdWVyeVBvb2wsIG1RdWVyeUluZGV4LCAwKTsKLQotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkVuZFF1ZXJ5Ogot
ICAgICAgICAgICAgQVNTRVJUKCFtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpICYm
ICFtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZhbGlkKCkpOwotICAgICAgICAgICAgQVNTRVJU
KG1RdWVyeVBvb2wgIT0gVktfTlVMTF9IQU5ETEUpOwotCi0gICAgICAgICAgICBwcmltYXJ5Q29t
bWFuZEJ1ZmZlci0+ZW5kUXVlcnkobVF1ZXJ5UG9vbCwgbVF1ZXJ5SW5kZXgpOwotCi0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6V3Jp
dGVUaW1lc3RhbXA6Ci0gICAgICAgICAgICBBU1NFUlQoIW1PdXRzaWRlUmVuZGVyUGFzc0NvbW1h
bmRzLnZhbGlkKCkgJiYgIW1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQobVF1ZXJ5UG9vbCAhPSBWS19OVUxMX0hBTkRMRSk7Ci0KLSAgICAgICAg
ICAgIHByaW1hcnlDb21tYW5kQnVmZmVyLT5yZXNldFF1ZXJ5UG9vbChtUXVlcnlQb29sLCBtUXVl
cnlJbmRleCwgMSk7Ci0gICAgICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+d3JpdGVUaW1l
c3RhbXAoVktfUElQRUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklULCBtUXVlcnlQb29sLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1RdWVyeUlu
ZGV4KTsKLQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhO
b2RlRnVuY3Rpb246OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2tRdWVyeToKLSAgICAgICAgICAgIC8v
IFVubGVzcyB1c2luZyBWS19FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrIChub3QgaW1wbGVtZW50ZWQg
Y3VycmVudGx5KSwgdGhlcmUncyBub3RoaW5nCi0gICAgICAgICAgICAvLyB0byBkby4KLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpF
bmRUcmFuc2Zvcm1GZWVkYmFja1F1ZXJ5OgotICAgICAgICAgICAgLy8gU2FtZSBhcyBCZWdpblRy
YW5zZm9ybUZlZWRiYWNrUXVlcnkuCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6U2V0RmVuY2VTeW5jOgotICAgICAgICAgICAgQVNT
RVJUKCFtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpICYmICFtSW5zaWRlUmVuZGVy
UGFzc0NvbW1hbmRzLnZhbGlkKCkpOwotICAgICAgICAgICAgQVNTRVJUKG1GZW5jZVN5bmNFdmVu
dCAhPSBWS19OVUxMX0hBTkRMRSk7Ci0KLSAgICAgICAgICAgIHByaW1hcnlDb21tYW5kQnVmZmVy
LT5zZXRFdmVudChtRmVuY2VTeW5jRXZlbnQsIFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9Q
SVBFX0JJVCk7Ci0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdy
YXBoTm9kZUZ1bmN0aW9uOjpXYWl0RmVuY2VTeW5jOgotICAgICAgICAgICAgQVNTRVJUKCFtT3V0
c2lkZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpICYmICFtSW5zaWRlUmVuZGVyUGFzc0NvbW1h
bmRzLnZhbGlkKCkpOwotICAgICAgICAgICAgQVNTRVJUKG1GZW5jZVN5bmNFdmVudCAhPSBWS19O
VUxMX0hBTkRMRSk7Ci0KLSAgICAgICAgICAgIC8vIEZlbmNlIFN5bmNzIGFyZSBwdXJlbHkgZXhl
Y3V0aW9uIGJhcnJpZXJzLCBzbyB0aGVyZSBhcmUgbm8gbWVtb3J5IGJhcnJpZXJzIGF0dGFjaGVk
LgotICAgICAgICAgICAgcHJpbWFyeUNvbW1hbmRCdWZmZXItPndhaXRFdmVudHMoCi0gICAgICAg
ICAgICAgICAgMSwgJm1GZW5jZVN5bmNFdmVudCwgVktfUElQRUxJTkVfU1RBR0VfQk9UVE9NX09G
X1BJUEVfQklULAotICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9Q
SVBFX0JJVCwgMCwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgMCwgbnVsbHB0cik7Ci0KLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpHcmFw
aEJhcnJpZXI6Ci0gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLiAgVGhlIG1lbW9yeSBiYXJy
aWVyLCBpZiBhbnksIGlzIGFscmVhZHkgaGFuZGxlZCBhYm92ZSB0aHJvdWdoIGdsb2JhbAotICAg
ICAgICAgICAgLy8gbWVtb3J5IGJhcnJpZXIgZmxhZ3MuCi0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6SW5zZXJ0RGVidWdNYXJrZXI6
Ci0gICAgICAgICAgICBBU1NFUlQoIW1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZhbGlkKCkg
JiYgIW1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSk7Ci0KLSAgICAgICAgICAgIGlm
ICh2a0NtZEluc2VydERlYnVnVXRpbHNMYWJlbEVYVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBWa0RlYnVnVXRpbHNMYWJlbEVYVCBsYWJlbDsKLSAgICAgICAgICAgICAgICBNYWtl
RGVidWdVdGlsc0xhYmVsKG1EZWJ1Z01hcmtlclNvdXJjZSwgbURlYnVnTWFya2VyLmNfc3RyKCks
ICZsYWJlbCk7Ci0KLSAgICAgICAgICAgICAgICB2a0NtZEluc2VydERlYnVnVXRpbHNMYWJlbEVY
VChwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+Z2V0SGFuZGxlKCksICZsYWJlbCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVG
dW5jdGlvbjo6UHVzaERlYnVnTWFya2VyOgotICAgICAgICAgICAgQVNTRVJUKCFtT3V0c2lkZVJl
bmRlclBhc3NDb21tYW5kcy52YWxpZCgpICYmICFtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZh
bGlkKCkpOwotCi0gICAgICAgICAgICBpZiAodmtDbWRCZWdpbkRlYnVnVXRpbHNMYWJlbEVYVCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBWa0RlYnVnVXRpbHNMYWJlbEVYVCBsYWJl
bDsKLSAgICAgICAgICAgICAgICBNYWtlRGVidWdVdGlsc0xhYmVsKG1EZWJ1Z01hcmtlclNvdXJj
ZSwgbURlYnVnTWFya2VyLmNfc3RyKCksICZsYWJlbCk7Ci0KLSAgICAgICAgICAgICAgICB2a0Nt
ZEJlZ2luRGVidWdVdGlsc0xhYmVsRVhUKHByaW1hcnlDb21tYW5kQnVmZmVyLT5nZXRIYW5kbGUo
KSwgJmxhYmVsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpQb3BEZWJ1Z01hcmtlcjoKLSAgICAgICAg
ICAgIEFTU0VSVCghbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSAmJiAhbUluc2lk
ZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpKTsKLQotICAgICAgICAgICAgaWYgKHZrQ21kRW5k
RGVidWdVdGlsc0xhYmVsRVhUKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZrQ21k
RW5kRGVidWdVdGlsc0xhYmVsRVhUKHByaW1hcnlDb21tYW5kQnVmZmVyLT5nZXRIYW5kbGUoKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENvbW1h
bmRHcmFwaE5vZGVGdW5jdGlvbjo6SG9zdEF2YWlsYWJpbGl0eU9wZXJhdGlvbjoKLSAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBhbGwgd3JpdGVzIHRvIGhvc3QtdmlzaWJsZSBidWZmZXJzIGFyZSBm
bHVzaGVkLiAgV2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZwotICAgICAgICAgICAgLy8gd2hldGhl
ciBhbnkgYnVmZmVyIHdpbGwgYmUgbWFwcGVkIGZvciByZWFkYmFjayBpbiB0aGUgZnV0dXJlLCBh
bmQgd2UgY2FuJ3QgYWZmb3JkIHRvCi0gICAgICAgICAgICAvLyBmbHVzaCBhbmQgd2FpdCBvbiBh
IG9uZS1waXBlbGluZS1iYXJyaWVyIGNvbW1hbmQgYnVmZmVyIG9uIGV2ZXJ5IG1hcCgpLgotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIFZrTWVtb3J5QmFycmllciBtZW1vcnlCYXJyaWVy
ID0ge307Ci0gICAgICAgICAgICAgICAgbWVtb3J5QmFycmllci5zVHlwZSAgICAgICAgICAgPSBW
S19TVFJVQ1RVUkVfVFlQRV9NRU1PUllfQkFSUklFUjsKLSAgICAgICAgICAgICAgICBtZW1vcnlC
YXJyaWVyLnNyY0FjY2Vzc01hc2sgICA9IFZLX0FDQ0VTU19NRU1PUllfV1JJVEVfQklUOwotICAg
ICAgICAgICAgICAgIG1lbW9yeUJhcnJpZXIuZHN0QWNjZXNzTWFzayAgID0gVktfQUNDRVNTX0hP
U1RfUkVBRF9CSVQ7Ci0KLSAgICAgICAgICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+bWVt
b3J5QmFycmllcihWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NU
QUdFX0hPU1RfQklULCAmbWVtb3J5QmFycmllcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
LSAgICB9Ci0KLSAgICBtVmlzaXRlZFN0YXRlID0gVmlzaXRlZFN0YXRlOjpWaXNpdGVkOwotICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotY29uc3Qgc3RkOjp2ZWN0b3I8
Q29tbWFuZEdyYXBoTm9kZSAqPiAmQ29tbWFuZEdyYXBoTm9kZTo6Z2V0UGFyZW50c0ZvckRpYWdu
b3N0aWNzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVBhcmVudHM7Ci19Ci0KLXZvaWQgQ29tbWFu
ZEdyYXBoTm9kZTo6c2V0RGlhZ25vc3RpY0luZm8oQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlIHJl
c291cmNlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dHB0cl90IHJlc291cmNlSUQpCi17Ci0gICAgbVJlc291cmNlVHlwZSA9IHJlc291cmNlVHlwZTsK
LSAgICBtUmVzb3VyY2VJRCAgID0gcmVzb3VyY2VJRDsKLX0KLQotYm9vbCBDb21tYW5kR3JhcGhO
b2RlOjpoYXNEaWFnbm9zdGljSUQoKSBjb25zdAotewotICAgIC8vIEFsbCBub2RlcyBoYXZlIGRp
YWdub3N0aWMgSURzIHRvIGRpZmZlcmVudGlhdGUgdGhlbSBleGNlcHQgdGhlIGZvbGxvd2luZyBz
ZWxlY3QgZmV3LgotICAgIHJldHVybiBtUmVzb3VyY2VUeXBlICE9IENvbW1hbmRHcmFwaFJlc291
cmNlVHlwZTo6SG9zdEF2YWlsYWJpbGl0eU9wZXJhdGlvbiAmJgotICAgICAgICAgICBtUmVzb3Vy
Y2VUeXBlICE9IENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6R3JhcGhCYXJyaWVyOwotfQotCi1z
dGQ6OnN0cmluZyBDb21tYW5kR3JhcGhOb2RlOjpkdW1wQ29tbWFuZHNGb3JEaWFnbm9zdGljcyhj
b25zdCBjaGFyICpzZXBhcmF0b3IpIGNvbnN0Ci17Ci0gICAgc3RkOjpzdHJpbmcgcmVzdWx0Owot
ICAgIGlmIChtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcyAhPSAwIHx8IG1HbG9iYWxNZW1v
cnlCYXJyaWVyRHN0QWNjZXNzICE9IDApCi0gICAgewotICAgICAgICByZXN1bHQgKz0gc2VwYXJh
dG9yOwotCi0gICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvdXQ7Ci0gICAgICAgIG91dCA8PCAi
TWVtb3J5IEJhcnJpZXIgU3JjOiAweCIgPDwgc3RkOjpoZXggPDwgbUdsb2JhbE1lbW9yeUJhcnJp
ZXJTcmNBY2Nlc3MKLSAgICAgICAgICAgIDw8ICIgJnJhcnI7IERzdDogMHgiIDw8IHN0ZDo6aGV4
IDw8IG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzOwotICAgICAgICByZXN1bHQgKz0gb3V0
LnN0cigpOwotICAgIH0KLSAgICBpZiAobU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQo
KSkKLSAgICB7Ci0gICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3I7Ci0gICAgICAgIHJlc3VsdCAr
PSAiT3V0c2lkZSBSUDoiOwotICAgICAgICByZXN1bHQgKz0gRHVtcENvbW1hbmRzKG1PdXRzaWRl
UmVuZGVyUGFzc0NvbW1hbmRzLCBzZXBhcmF0b3IpOwotICAgIH0KLSAgICBpZiAobUluc2lkZVJl
bmRlclBhc3NDb21tYW5kcy52YWxpZCgpKQotICAgIHsKLSAgICAgICAgcmVzdWx0ICs9IHNlcGFy
YXRvcjsKLSAgICAgICAgcmVzdWx0ICs9ICJJbnNpZGUgUlA6IjsKLQotICAgICAgICBzaXplX3Qg
YXR0YWNobWVudENvdW50ICAgICAgICAgICAgID0gbVJlbmRlclBhc3NEZXNjLmF0dGFjaG1lbnRD
b3VudCgpOwotICAgICAgICBzaXplX3QgZGVwdGhTdGVuY2lsQXR0YWNobWVudENvdW50ID0gbVJl
bmRlclBhc3NEZXNjLmhhc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKTsKLSAgICAgICAgc2l6ZV90
IGNvbG9yQXR0YWNobWVudENvdW50ICAgICAgICA9IGF0dGFjaG1lbnRDb3VudCAtIGRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnRDb3VudDsKLQotICAgICAgICBzdGQ6OnN0cmluZyBsb2FkT3BzLCBzdG9y
ZU9wczsKLQotICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50Q291bnQgPiAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICBsb2FkT3BzICs9ICIgQ29sb3I6ICI7Ci0gICAgICAgICAgICBzdG9yZU9w
cyArPSAiIENvbG9yOiAiOwotCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
bG9yQXR0YWNobWVudENvdW50OyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
bG9hZE9wcyArPSBHZXRMb2FkT3BTaG9ydGhhbmQobVJlbmRlclBhc3NBdHRhY2htZW50T3BzW2ld
LmxvYWRPcCk7Ci0gICAgICAgICAgICAgICAgc3RvcmVPcHMgKz0gR2V0U3RvcmVPcFNob3J0aGFu
ZChtUmVuZGVyUGFzc0F0dGFjaG1lbnRPcHNbaV0uc3RvcmVPcCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudENvdW50ID4gMCkK
LSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnRDb3Vu
dCA9PSAxKTsKLQotICAgICAgICAgICAgbG9hZE9wcyArPSAiIERlcHRoL1N0ZW5jaWw6ICI7Ci0g
ICAgICAgICAgICBzdG9yZU9wcyArPSAiIERlcHRoL1N0ZW5jaWw6ICI7Ci0gICAgICAgICAgICBz
aXplX3QgZHNJbmRleCA9IGNvbG9yQXR0YWNobWVudENvdW50OwotCi0gICAgICAgICAgICBsb2Fk
T3BzICs9IEdldExvYWRPcFNob3J0aGFuZChtUmVuZGVyUGFzc0F0dGFjaG1lbnRPcHNbZHNJbmRl
eF0ubG9hZE9wKTsKLSAgICAgICAgICAgIGxvYWRPcHMgKz0gR2V0TG9hZE9wU2hvcnRoYW5kKG1S
ZW5kZXJQYXNzQXR0YWNobWVudE9wc1tkc0luZGV4XS5zdGVuY2lsTG9hZE9wKTsKLQotICAgICAg
ICAgICAgc3RvcmVPcHMgKz0gR2V0U3RvcmVPcFNob3J0aGFuZChtUmVuZGVyUGFzc0F0dGFjaG1l
bnRPcHNbZHNJbmRleF0uc3RvcmVPcCk7Ci0gICAgICAgICAgICBzdG9yZU9wcyArPSBHZXRTdG9y
ZU9wU2hvcnRoYW5kKG1SZW5kZXJQYXNzQXR0YWNobWVudE9wc1tkc0luZGV4XS5zdGVuY2lsU3Rv
cmVPcCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYXR0YWNobWVudENvdW50ID4gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmVzdWx0ICs9ICIgTG9hZE9wOiAiICsgbG9hZE9wczsKLSAg
ICAgICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3I7Ci0gICAgICAgICAgICByZXN1bHQgKz0gIi0t
LS0tLS0tLS0tLSBTdG9yZU9wOiAiICsgc3RvcmVPcHM7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXN1bHQgKz0gRHVtcENvbW1hbmRzKG1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMsIHNlcGFyYXRv
cik7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoTm9k
ZTo6Z2V0TWVtb3J5VXNhZ2VTdGF0c0ZvckRpYWdub3N0aWNzKHNpemVfdCAqdXNlZE1lbW9yeU91
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqYWxsb2NhdGVkTWVtb3J5T3V0KSBjb25zdAotewotICAgIHNpemVfdCBjb21t
YW5kQnVmZmVyVXNlZDsKLSAgICBzaXplX3QgY29tbWFuZEJ1ZmZlckFsbG9jYXRlZDsKLQotICAg
IG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmdldE1lbW9yeVVzYWdlU3RhdHModXNlZE1lbW9y
eU91dCwgYWxsb2NhdGVkTWVtb3J5T3V0KTsKLSAgICBtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRz
LmdldE1lbW9yeVVzYWdlU3RhdHMoJmNvbW1hbmRCdWZmZXJVc2VkLCAmY29tbWFuZEJ1ZmZlckFs
bG9jYXRlZCk7Ci0KLSAgICAqdXNlZE1lbW9yeU91dCArPSBjb21tYW5kQnVmZmVyVXNlZDsKLSAg
ICAqYWxsb2NhdGVkTWVtb3J5T3V0ICs9IGNvbW1hbmRCdWZmZXJBbGxvY2F0ZWQ7Ci19Ci0KLS8v
IFNoYXJlZEdhcmJhZ2UgaW1wbGVtZW50YXRpb24uCi1TaGFyZWRHYXJiYWdlOjpTaGFyZWRHYXJi
YWdlKCkgPSBkZWZhdWx0OwotCi1TaGFyZWRHYXJiYWdlOjpTaGFyZWRHYXJiYWdlKFNoYXJlZEdh
cmJhZ2UgJiZvdGhlcikKLXsKLSAgICAqdGhpcyA9IHN0ZDo6bW92ZShvdGhlcik7Ci19Ci0KLVNo
YXJlZEdhcmJhZ2U6OlNoYXJlZEdhcmJhZ2UoU2hhcmVkUmVzb3VyY2VVc2UgJiZ1c2UsIHN0ZDo6
dmVjdG9yPEdhcmJhZ2VPYmplY3Q+ICYmZ2FyYmFnZSkKLSAgICA6IG1MaWZldGltZShzdGQ6Om1v
dmUodXNlKSksIG1HYXJiYWdlKHN0ZDo6bW92ZShnYXJiYWdlKSkKLXt9Ci0KLVNoYXJlZEdhcmJh
Z2U6On5TaGFyZWRHYXJiYWdlKCkgPSBkZWZhdWx0OwotCi1TaGFyZWRHYXJiYWdlICZTaGFyZWRH
YXJiYWdlOjpvcGVyYXRvcj0oU2hhcmVkR2FyYmFnZSAmJnJocykKLXsKLSAgICBzdGQ6OnN3YXAo
bUxpZmV0aW1lLCByaHMubUxpZmV0aW1lKTsKLSAgICBzdGQ6OnN3YXAobUdhcmJhZ2UsIHJocy5t
R2FyYmFnZSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1ib29sIFNoYXJlZEdhcmJhZ2U6OmRl
c3Ryb3lJZkNvbXBsZXRlKFZrRGV2aWNlIGRldmljZSwgU2VyaWFsIGNvbXBsZXRlZFNlcmlhbCkK
LXsKLSAgICBpZiAobUxpZmV0aW1lLmlzQ3VycmVudGx5SW5Vc2UoY29tcGxldGVkU2VyaWFsKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbUxpZmV0aW1lLnJlbGVhc2UoKTsKLQotICAg
IGZvciAoR2FyYmFnZU9iamVjdCAmb2JqZWN0IDogbUdhcmJhZ2UpCi0gICAgewotICAgICAgICBv
YmplY3QuZGVzdHJveShkZXZpY2UpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0v
LyBDb21tYW5kR3JhcGggaW1wbGVtZW50YXRpb24uCi1Db21tYW5kR3JhcGg6OkNvbW1hbmRHcmFw
aChib29sIGVuYWJsZUdyYXBoRGlhZ25vc3RpY3MsIGFuZ2xlOjpQb29sQWxsb2NhdG9yICpwb29s
QWxsb2NhdG9yKQotICAgIDogbUVuYWJsZUdyYXBoRGlhZ25vc3RpY3MoZW5hYmxlR3JhcGhEaWFn
bm9zdGljcyksCi0gICAgICBtUG9vbEFsbG9jYXRvcihwb29sQWxsb2NhdG9yKSwKLSAgICAgIG1M
YXN0QmFycmllckluZGV4KGtJbnZhbGlkTm9kZUluZGV4KQotewotICAgIC8vIFB1c2ggc28gdGhh
dCBhbGxvY2F0aW9ucyBtYWRlIGZyb20gaGVyZSB3aWxsIGJlIHJlY3ljbGVkIGluIGNsZWFyKCkg
YmVsb3cuCi0gICAgbVBvb2xBbGxvY2F0b3ItPnB1c2goKTsKLX0KLQotQ29tbWFuZEdyYXBoOjp+
Q29tbWFuZEdyYXBoKCkKLXsKLSAgICBBU1NFUlQoZW1wdHkoKSk7Ci19Ci0KLUNvbW1hbmRHcmFw
aE5vZGUgKkNvbW1hbmRHcmFwaDo6YWxsb2NhdGVOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlv
biBmdW5jdGlvbikKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgYSBwb29sIGFsbG9jYXRv
ciBmb3IgdGhlIENQVSBub2RlIGFsbG9jYXRpb25zLgotICAgIENvbW1hbmRHcmFwaE5vZGUgKm5l
d0NvbW1hbmRzID0gbmV3IENvbW1hbmRHcmFwaE5vZGUoZnVuY3Rpb24sIG1Qb29sQWxsb2NhdG9y
KTsKLSAgICBtTm9kZXMuZW1wbGFjZV9iYWNrKG5ld0NvbW1hbmRzKTsKLSAgICByZXR1cm4gbmV3
Q29tbWFuZHM7Ci19Ci0KLUNvbW1hbmRHcmFwaE5vZGUgKkNvbW1hbmRHcmFwaDo6YWxsb2NhdGVC
YXJyaWVyTm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoUmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgcmVzb3VyY2VJRCkKLXsKLSAgICBDb21tYW5k
R3JhcGhOb2RlICpuZXdOb2RlID0gYWxsb2NhdGVOb2RlKGZ1bmN0aW9uKTsKLSAgICBuZXdOb2Rl
LT5zZXREaWFnbm9zdGljSW5mbyhyZXNvdXJjZVR5cGUsIHJlc291cmNlSUQpOwotICAgIHNldE5l
d0JhcnJpZXIobmV3Tm9kZSk7Ci0KLSAgICByZXR1cm4gbmV3Tm9kZTsKLX0KLQotdm9pZCBDb21t
YW5kR3JhcGg6OnNldE5ld0JhcnJpZXIoQ29tbWFuZEdyYXBoTm9kZSAqbmV3QmFycmllcikKLXsK
LSAgICBzaXplX3QgcHJldmlvdXNCYXJyaWVySW5kZXggICAgICAgPSAwOwotICAgIENvbW1hbmRH
cmFwaE5vZGUgKnByZXZpb3VzQmFycmllciA9IGdldExhc3RCYXJyaWVyTm9kZSgmcHJldmlvdXNC
YXJyaWVySW5kZXgpOwotCi0gICAgLy8gQWRkIGEgZGVwZW5kZW5jeSBmcm9tIHByZXZpb3VzQmFy
cmllciB0byBhbGwgbm9kZXMgaW4gKHByZXZpb3VzQmFycmllciwgbmV3QmFycmllcikuCi0gICAg
aWYgKHByZXZpb3VzQmFycmllciAmJiBwcmV2aW91c0JhcnJpZXJJbmRleCArIDEgPCBtTm9kZXMu
c2l6ZSgpKQotICAgIHsKLSAgICAgICAgc2l6ZV90IGFmdGVyTm9kZXNDb3VudCA9IG1Ob2Rlcy5z
aXplKCkgLSAocHJldmlvdXNCYXJyaWVySW5kZXggKyAyKTsKLSAgICAgICAgQ29tbWFuZEdyYXBo
Tm9kZTo6U2V0SGFwcGVuc0JlZm9yZURlcGVuZGVuY2llcygKLSAgICAgICAgICAgIHByZXZpb3Vz
QmFycmllciwgJm1Ob2Rlc1twcmV2aW91c0JhcnJpZXJJbmRleCArIDFdLCBhZnRlck5vZGVzQ291
bnQpOwotICAgIH0KLQotICAgIC8vIEFkZCBhIGRlcGVuZGVuY3kgZnJvbSBhbGwgbm9kZXMgaW4g
W3ByZXZpb3VzQmFycmllciwgbmV3QmFycmllcikgdG8gbmV3QmFycmllci4KLSAgICBhZGREZXBl
bmRlbmNpZXNUb05leHRCYXJyaWVyKHByZXZpb3VzQmFycmllckluZGV4LCBtTm9kZXMuc2l6ZSgp
IC0gMSwgbmV3QmFycmllcik7Ci0KLSAgICBtTGFzdEJhcnJpZXJJbmRleCA9IG1Ob2Rlcy5zaXpl
KCkgLSAxOwotfQotCi1hbmdsZTo6UmVzdWx0IENvbW1hbmRHcmFwaDo6c3VibWl0Q29tbWFuZHMo
Q29udGV4dFZrICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlcmlhbCBzZXJpYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyUGFzc0NhY2hlICpyZW5kZXJQYXNzQ2FjaGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1h
cnlDb21tYW5kQnVmZmVyKQotewotICAgIC8vIFRoZXJlIGlzIG5vIHBvaW50IGluIHN1Ym1pdHRp
bmcgYW4gZW1wdHkgY29tbWFuZCBidWZmZXIsIHNvIG1ha2Ugc3VyZSBub3QgdG8gY2FsbCB0aGlz
Ci0gICAgLy8gZnVuY3Rpb24gaWYgdGhlcmUncyBub3RoaW5nIHRvIGRvLgotICAgIEFTU0VSVCgh
bU5vZGVzLmVtcHR5KCkpOwotCi0gICAgdXBkYXRlT3ZlcmxheShjb250ZXh0KTsKLQotICAgIHNp
emVfdCBwcmV2aW91c0JhcnJpZXJJbmRleCAgICAgICA9IDA7Ci0gICAgQ29tbWFuZEdyYXBoTm9k
ZSAqcHJldmlvdXNCYXJyaWVyID0gZ2V0TGFzdEJhcnJpZXJOb2RlKCZwcmV2aW91c0JhcnJpZXJJ
bmRleCk7Ci0KLSAgICAvLyBBZGQgYSBkZXBlbmRlbmN5IGZyb20gcHJldmlvdXNCYXJyaWVyIHRv
IGFsbCBub2RlcyBpbiAocHJldmlvdXNCYXJyaWVyLCBlbmRdLgotICAgIGlmIChwcmV2aW91c0Jh
cnJpZXIgJiYgcHJldmlvdXNCYXJyaWVySW5kZXggKyAxIDwgbU5vZGVzLnNpemUoKSkKLSAgICB7
Ci0gICAgICAgIHNpemVfdCBhZnRlck5vZGVzQ291bnQgPSBtTm9kZXMuc2l6ZSgpIC0gKHByZXZp
b3VzQmFycmllckluZGV4ICsgMSk7Ci0gICAgICAgIENvbW1hbmRHcmFwaE5vZGU6OlNldEhhcHBl
bnNCZWZvcmVEZXBlbmRlbmNpZXMoCi0gICAgICAgICAgICBwcmV2aW91c0JhcnJpZXIsICZtTm9k
ZXNbcHJldmlvdXNCYXJyaWVySW5kZXggKyAxXSwgYWZ0ZXJOb2Rlc0NvdW50KTsKLSAgICB9Ci0K
LSAgICBpZiAobUVuYWJsZUdyYXBoRGlhZ25vc3RpY3MpCi0gICAgewotICAgICAgICBkdW1wR3Jh
cGhEb3RGaWxlKHN0ZDo6Y291dCk7Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8Q29tbWFuZEdy
YXBoTm9kZSAqPiBub2RlU3RhY2s7Ci0KLSAgICBWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8gYmVn
aW5JbmZvID0ge307Ci0gICAgYmVnaW5JbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgICA9IFZL
X1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lORk87Ci0gICAgYmVnaW5JbmZv
LmZsYWdzICAgICAgICAgICAgICAgICAgICA9IFZLX0NPTU1BTkRfQlVGRkVSX1VTQUdFX09ORV9U
SU1FX1NVQk1JVF9CSVQ7Ci0gICAgYmVnaW5JbmZvLnBJbmhlcml0YW5jZUluZm8gICAgICAgICA9
IG51bGxwdHI7Ci0KLSAgICBBTkdMRV9WS19UUlkoY29udGV4dCwgcHJpbWFyeUNvbW1hbmRCdWZm
ZXItPmJlZ2luKGJlZ2luSW5mbykpOwotCi0gICAgQU5HTEVfVFJZKGNvbnRleHQtPnRyYWNlR3B1
RXZlbnQocHJpbWFyeUNvbW1hbmRCdWZmZXIsIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQcmltYXJ5IENvbW1hbmQgQnVmZmVy
IikpOwotCi0gICAgZm9yIChDb21tYW5kR3JhcGhOb2RlICp0b3BMZXZlbE5vZGUgOiBtTm9kZXMp
Ci0gICAgewotICAgICAgICAvLyBPbmx5IHByb2Nlc3MgY29tbWFuZHMgdGhhdCBkb24ndCBoYXZl
IGNoaWxkIGNvbW1hbmRzLiBUaGUgb3RoZXJzIHdpbGwgYmUgcHVsbGVkIGluCi0gICAgICAgIC8v
IGF1dG9tYXRpY2FsbHkuIEFsc28gc2tpcCBjb21tYW5kcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVu
IHZpc2l0ZWQuCi0gICAgICAgIGlmICh0b3BMZXZlbE5vZGUtPmhhc0NoaWxkcmVuKCkgfHwgdG9w
TGV2ZWxOb2RlLT52aXNpdGVkU3RhdGUoKSAhPSBWaXNpdGVkU3RhdGU6OlVudmlzaXRlZCkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG5vZGVTdGFjay5wdXNoX2JhY2sodG9wTGV2
ZWxOb2RlKTsKLQotICAgICAgICB3aGlsZSAoIW5vZGVTdGFjay5lbXB0eSgpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBDb21tYW5kR3JhcGhOb2RlICpub2RlID0gbm9kZVN0YWNrLmJhY2soKTsK
LQotICAgICAgICAgICAgc3dpdGNoIChub2RlLT52aXNpdGVkU3RhdGUoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjYXNlIFZpc2l0ZWRTdGF0ZTo6VW52aXNpdGVkOgotICAgICAg
ICAgICAgICAgICAgICBub2RlLT52aXNpdFBhcmVudHMoJm5vZGVTdGFjayk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgVmlzaXRlZFN0YXRlOjpSZWFk
eToKLSAgICAgICAgICAgICAgICAgICAgQU5HTEVfVFJZKG5vZGUtPnZpc2l0QW5kRXhlY3V0ZShj
b250ZXh0LCBzZXJpYWwsIHJlbmRlclBhc3NDYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlcikpOwotICAg
ICAgICAgICAgICAgICAgICBub2RlU3RhY2sucG9wX2JhY2soKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBWaXNpdGVkU3RhdGU6OlZpc2l0ZWQ6Ci0g
ICAgICAgICAgICAgICAgICAgIG5vZGVTdGFjay5wb3BfYmFjaygpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIEFOR0xFX1RSWShjb250ZXh0LT50cmFjZUdwdUV2
ZW50KHByaW1hcnlDb21tYW5kQnVmZmVyLCBUUkFDRV9FVkVOVF9QSEFTRV9FTkQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaW1hcnkgQ29tbWFuZCBCdWZmZXIiKSk7
Ci0KLSAgICBBTkdMRV9WS19UUlkoY29udGV4dCwgcHJpbWFyeUNvbW1hbmRCdWZmZXItPmVuZCgp
KTsKLQotICAgIGNsZWFyKCk7Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7
Ci19Ci0KLWJvb2wgQ29tbWFuZEdyYXBoOjplbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1O
b2Rlcy5lbXB0eSgpOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6Y2xlYXIoKQotewotICAgIG1M
YXN0QmFycmllckluZGV4ID0ga0ludmFsaWROb2RlSW5kZXg7Ci0gICAgLy8gUmVsZWFzZSBjbWQg
Z3JhcGggcG9vbCBtZW1vcnkgbm93IHRoYXQgY21kcyBhcmUgc3VibWl0dGVkCi0gICAgLy8gTk9U
RTogVGhpcyBmcmVlcyBhbGwgbWVtb3J5IHNpbmNlIGxhc3QgcHVzaC4gUmlnaHQgbm93IG9ubHkg
dGhlIENvbW1hbmRHcmFwaAotICAgIC8vICB3aWxsIHB1c2ggdGhlIGFsbG9jYXRvciAoYXQgY3Jl
YXRpb24gYW5kIGJlbG93KS4gSWYgb3RoZXIgcGVvcGxlIHN0YXJ0Ci0gICAgLy8gIHB1c2hpbmcg
dGhlIGFsbG9jYXRvciB0aGlzIChhbmQvb3IgdGhlIGFsbG9jYXRvcikgd2lsbCBuZWVkIHRvIGJl
IHVwZGF0ZWQuCi0gICAgbVBvb2xBbGxvY2F0b3ItPnBvcCgpOwotICAgIG1Qb29sQWxsb2NhdG9y
LT5wdXNoKCk7Ci0KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgcG9vbCBhbGxvY2F0b3IgZm9y
IHBlcmZvcm1hbmNlLiBodHRwOi8vYW5nbGVidWcuY29tLzI5NTEKLSAgICBmb3IgKENvbW1hbmRH
cmFwaE5vZGUgKm5vZGUgOiBtTm9kZXMpCi0gICAgewotICAgICAgICBkZWxldGUgbm9kZTsKLSAg
ICB9Ci0gICAgbU5vZGVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoOjpiZWdpblF1
ZXJ5KGNvbnN0IFF1ZXJ5UG9vbCAqcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeUluZGV4KQotewot
ICAgIENvbW1hbmRHcmFwaE5vZGUgKm5ld05vZGUgPSBhbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1h
bmRHcmFwaE5vZGVGdW5jdGlvbjo6QmVnaW5RdWVyeSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OlF1
ZXJ5LCAwKTsKLSAgICBuZXdOb2RlLT5zZXRRdWVyeVBvb2wocXVlcnlQb29sLCBxdWVyeUluZGV4
KTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6OmVuZFF1ZXJ5KGNvbnN0IFF1ZXJ5UG9vbCAqcXVl
cnlQb29sLCB1aW50MzJfdCBxdWVyeUluZGV4KQotewotICAgIENvbW1hbmRHcmFwaE5vZGUgKm5l
d05vZGUgPQotICAgICAgICBhbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5j
dGlvbjo6RW5kUXVlcnksIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6UXVlcnksIDApOwotICAg
IG5ld05vZGUtPnNldFF1ZXJ5UG9vbChxdWVyeVBvb2wsIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lk
IENvbW1hbmRHcmFwaDo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUXVlcnlQb29sICpxdWVyeVBvb2ws
IHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17Ci0gICAgQ29tbWFuZEdyYXBoTm9kZSAqbmV3Tm9kZSA9
IGFsbG9jYXRlQmFycmllck5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpXcml0ZVRpbWVz
dGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OlF1ZXJ5LCAwKTsKLSAgICBuZXdOb2RlLT5zZXRR
dWVyeVBvb2wocXVlcnlQb29sLCBxdWVyeUluZGV4KTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6
OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFbXVsYXRlZFF1ZXJ5KCkKLXsKLSAgICBhbGxvY2F0ZUJh
cnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFj
a1F1ZXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBl
OjpFbXVsYXRlZFF1ZXJ5LCAwKTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6OmVuZFRyYW5zZm9y
bUZlZWRiYWNrRW11bGF0ZWRRdWVyeSgpCi17Ci0gICAgYWxsb2NhdGVCYXJyaWVyTm9kZShDb21t
YW5kR3JhcGhOb2RlRnVuY3Rpb246OkVuZFRyYW5zZm9ybUZlZWRiYWNrUXVlcnksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkVtdWxhdGVkUXVlcnks
IDApOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6c2V0RmVuY2VTeW5jKGNvbnN0IHZrOjpFdmVu
dCAmZXZlbnQpCi17Ci0gICAgQ29tbWFuZEdyYXBoTm9kZSAqbmV3Tm9kZSA9IGFsbG9jYXRlQmFy
cmllck5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpTZXRGZW5jZVN5bmMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBo
UmVzb3VyY2VUeXBlOjpGZW5jZVN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZldmVudCkp
OwotICAgIG5ld05vZGUtPnNldEZlbmNlU3luYyhldmVudCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdy
YXBoOjp3YWl0RmVuY2VTeW5jKGNvbnN0IHZrOjpFdmVudCAmZXZlbnQpCi17Ci0gICAgQ29tbWFu
ZEdyYXBoTm9kZSAqbmV3Tm9kZSA9IGFsbG9jYXRlQmFycmllck5vZGUoQ29tbWFuZEdyYXBoTm9k
ZUZ1bmN0aW9uOjpXYWl0RmVuY2VTeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RmVuY2VTeW5j
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmZXZlbnQpKTsKLSAgICBuZXdOb2RlLT5zZXRGZW5j
ZVN5bmMoZXZlbnQpOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6bWVtb3J5QmFycmllcihWa0Zs
YWdzIHNyY0FjY2VzcywgVmtGbGFncyBkc3RBY2Nlc3MsIFZrUGlwZWxpbmVTdGFnZUZsYWdzIHN0
YWdlcykKLXsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpuZXdOb2RlID0gYWxsb2NhdGVCYXJyaWVy
Tm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkdyYXBoQmFycmllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNv
dXJjZVR5cGU6OkdyYXBoQmFycmllciwgMCk7Ci0gICAgbmV3Tm9kZS0+YWRkR2xvYmFsTWVtb3J5
QmFycmllcihzcmNBY2Nlc3MsIGRzdEFjY2Vzcywgc3RhZ2VzKTsKLX0KLQotdm9pZCBDb21tYW5k
R3JhcGg6Omluc2VydERlYnVnTWFya2VyKEdMZW51bSBzb3VyY2UsIHN0ZDo6c3RyaW5nICYmbWFy
a2VyKQotewotICAgIENvbW1hbmRHcmFwaE5vZGUgKm5ld05vZGUgPSBhbGxvY2F0ZUJhcnJpZXJO
b2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6SW5zZXJ0RGVidWdNYXJrZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBo
UmVzb3VyY2VUeXBlOjpEZWJ1Z01hcmtlciwgMCk7Ci0gICAgbmV3Tm9kZS0+c2V0RGVidWdNYXJr
ZXIoc291cmNlLCBzdGQ6Om1vdmUobWFya2VyKSk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoOjpw
dXNoRGVidWdNYXJrZXIoR0xlbnVtIHNvdXJjZSwgc3RkOjpzdHJpbmcgJiZtYXJrZXIpCi17Ci0g
ICAgQ29tbWFuZEdyYXBoTm9kZSAqbmV3Tm9kZSA9IGFsbG9jYXRlQmFycmllck5vZGUoQ29tbWFu
ZEdyYXBoTm9kZUZ1bmN0aW9uOjpQdXNoRGVidWdNYXJrZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBl
OjpEZWJ1Z01hcmtlciwgMCk7Ci0gICAgbmV3Tm9kZS0+c2V0RGVidWdNYXJrZXIoc291cmNlLCBz
dGQ6Om1vdmUobWFya2VyKSk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoOjpwb3BEZWJ1Z01hcmtl
cigpCi17Ci0gICAgYWxsb2NhdGVCYXJyaWVyTm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246
OlBvcERlYnVnTWFya2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoUmVz
b3VyY2VUeXBlOjpEZWJ1Z01hcmtlciwgMCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoOjptYWtl
SG9zdFZpc2libGVCdWZmZXJXcml0ZUF2YWlsYWJsZSgpCi17Ci0gICAgYWxsb2NhdGVCYXJyaWVy
Tm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246Okhvc3RBdmFpbGFiaWxpdHlPcGVyYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6Okhvc3RB
dmFpbGFiaWxpdHlPcGVyYXRpb24sIDApOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6c3luY0V4
dGVybmFsTWVtb3J5KCkKLXsKLSAgICAvLyBBZGQgYW4gYWxsLWluY2x1c2l2ZSBtZW1vcnkgYmFy
cmllci4KLSAgICBtZW1vcnlCYXJyaWVyKFZLX0FDQ0VTU19NRU1PUllfV1JJVEVfQklULAotICAg
ICAgICAgICAgICAgICAgVktfQUNDRVNTX01FTU9SWV9SRUFEX0JJVCB8IFZLX0FDQ0VTU19NRU1P
UllfV1JJVEVfQklULAotICAgICAgICAgICAgICAgICAgVktfUElQRUxJTkVfU1RBR0VfQUxMX0NP
TU1BTkRTX0JJVCk7Ci19Ci0KLS8vIER1bXBzIHRoZSBjb21tYW5kIGdyYXBoIGludG8gYSBkb3Qg
ZmlsZSB0aGF0IHdvcmtzIHdpdGggZ3JhcGh2aXouCi12b2lkIENvbW1hbmRHcmFwaDo6ZHVtcEdy
YXBoRG90RmlsZShzdGQ6Om9zdHJlYW0gJm91dCkgY29uc3QKLXsKLSAgICAvLyBUaGlzIElEIG1h
cHMgYSBub2RlIHBvaW50ZXIgdG8gYSBtb25vdG9uaWMgSUQuIEl0IGFsbG93cyB1cyB0byBsb29r
IHVwIHBhcmVudCBub2RlIElEcy4KLSAgICBzdGQ6Om1hcDxjb25zdCBDb21tYW5kR3JhcGhOb2Rl
ICosIGludD4gbm9kZUlETWFwOwotICAgIHN0ZDo6bWFwPHVpbnRwdHJfdCwgaW50PiBvYmplY3RJ
RE1hcDsKLSAgICBzdGQ6Om1hcDxzdGQ6OnBhaXI8VmtRdWVyeVBvb2wsIHVpbnQzMl90PiwgaW50
PiBxdWVyeUlETWFwOwotCi0gICAgLy8gTWFwIG5vZGVzIHRvIGlkcy4KLSAgICBmb3IgKHNpemVf
dCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBtTm9kZXMuc2l6ZSgpOyArK25vZGVJbmRleCkK
LSAgICB7Ci0gICAgICAgIGNvbnN0IENvbW1hbmRHcmFwaE5vZGUgKm5vZGUgPSBtTm9kZXNbbm9k
ZUluZGV4XTsKLSAgICAgICAgbm9kZUlETWFwW25vZGVdICAgICAgICAgICAgICA9IHN0YXRpY19j
YXN0PGludD4obm9kZUluZGV4KSArIDE7Ci0gICAgfQotCi0gICAgaW50IGJ1ZmZlcklEQ291bnRl
ciAgICAgID0gMTsKLSAgICBpbnQgZnJhbWVidWZmZXJJRENvdW50ZXIgPSAxOwotICAgIGludCBp
bWFnZUlEQ291bnRlciAgICAgICA9IDE7Ci0gICAgaW50IHF1ZXJ5SURDb3VudGVyICAgICAgID0g
MTsKLSAgICBpbnQgZGlzcGF0Y2hlcklEQ291bnRlciAgPSAxOwotICAgIGludCBmZW5jZUlEQ291
bnRlciAgICAgICA9IDE7Ci0gICAgaW50IHhmYklEQ291bnRlciAgICAgICAgID0gMTsKLQotICAg
IG91dCA8PCAiZGlncmFwaCB7IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgICBmb3IgKGNvbnN0IENvbW1h
bmRHcmFwaE5vZGUgKm5vZGUgOiBtTm9kZXMpCi0gICAgewotICAgICAgICBpbnQgbm9kZUlEID0g
bm9kZUlETWFwW25vZGVdOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLSAg
ICAgICAgc3Ryc3RyIDw8IEdldFJlc291cmNlVHlwZU5hbWUobm9kZS0+Z2V0UmVzb3VyY2VUeXBl
Rm9yRGlhZ25vc3RpY3MoKSwgbm9kZS0+Z2V0RnVuY3Rpb24oKSk7Ci0KLSAgICAgICAgaWYgKG5v
ZGUtPmdldFJlc291cmNlVHlwZUZvckRpYWdub3N0aWNzKCkgPT0gQ29tbWFuZEdyYXBoUmVzb3Vy
Y2VUeXBlOjpEZWJ1Z01hcmtlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRm9yIGRlYnVn
IG1hcmtlcnMsIHVzZSB0aGUgc3RyaW5nIGZyb20gdGhlIGRlYnVnIG1hcmtlciBpdHNlbGYuCi0g
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0RnVuY3Rpb24oKSAhPSBDb21tYW5kR3JhcGhOb2RlRnVu
Y3Rpb246OlBvcERlYnVnTWFya2VyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0
cnN0ciA8PCAiICIgPDwgbm9kZS0+Z2V0RGVidWdNYXJrZXIoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRSZXNvdXJjZVR5cGVGb3JEaWFnbm9z
dGljcygpID09IENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6UXVlcnkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcXVlcmllcyBhcyB0aGV5IGNhbm5vdCBnZW5l
cmF0ZSBhIHJlc291cmNlIElEIGF0IGNyZWF0aW9uIHRpbWUgdGhhdAotICAgICAgICAgICAgLy8g
d291bGQgcmVsaWFibHkgZml0IGluIGEgdWludHB0cl90LgotICAgICAgICAgICAgc3Ryc3RyIDw8
ICIgIjsKLQotICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFJlc291cmNlSURGb3JEaWFnbm9z
dGljcygpID09IDApOwotCi0gICAgICAgICAgICBhdXRvIHF1ZXJ5SUQgPSBzdGQ6Om1ha2VfcGFp
cihub2RlLT5nZXRRdWVyeVBvb2woKSwgbm9kZS0+Z2V0UXVlcnlJbmRleCgpKTsKLQotICAgICAg
ICAgICAgYXV0byBpdCA9IHF1ZXJ5SURNYXAuZmluZChxdWVyeUlEKTsKLSAgICAgICAgICAgIGlm
IChpdCAhPSBxdWVyeUlETWFwLmVuZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHN0cnN0ciA8PCBpdC0+c2Vjb25kOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBpZCA9IHF1ZXJ5SURDb3VudGVyKys7
Ci0KLSAgICAgICAgICAgICAgICBxdWVyeUlETWFwW3F1ZXJ5SURdID0gaWQ7Ci0gICAgICAgICAg
ICAgICAgc3Ryc3RyIDw8IGlkOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKCFub2RlLT5oYXNEaWFnbm9zdGljSUQoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gTm90aGluZyB0byBhcHBlbmQgZm9yIHRoZXNlIHNwZWNpYWwgbm9kZXMuICBUaGUgbmFtZSBp
cyBzdWZmaWNpZW50LgotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgc3Ryc3RyIDw8ICIgIjsKLQotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGFzc2lnbiBl
YWNoIG9iamVjdCBhbiBJRCwgc28gYWxsIHRoZSBub2RlcyBvZiB0aGUgc2FtZSBvYmplY3QgaGF2
ZSB0aGUgc2FtZQotICAgICAgICAgICAgLy8gbGFiZWwuCi0gICAgICAgICAgICBBU1NFUlQobm9k
ZS0+Z2V0UmVzb3VyY2VJREZvckRpYWdub3N0aWNzKCkgIT0gMCk7Ci0gICAgICAgICAgICBhdXRv
IGl0ID0gb2JqZWN0SURNYXAuZmluZChub2RlLT5nZXRSZXNvdXJjZUlERm9yRGlhZ25vc3RpY3Mo
KSk7Ci0gICAgICAgICAgICBpZiAoaXQgIT0gb2JqZWN0SURNYXAuZW5kKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgc3Ryc3RyIDw8IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGlk
ID0gMDsKLQotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0UmVzb3VyY2VUeXBlRm9y
RGlhZ25vc3RpY3MoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpCdWZmZXI6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZCA9IGJ1ZmZlcklEQ291bnRlcisrOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpG
cmFtZWJ1ZmZlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gZnJhbWVidWZmZXJJRENv
dW50ZXIrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6SW1hZ2U6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZCA9IGltYWdlSURDb3VudGVyKys7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5
cGU6OkRpc3BhdGNoZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZCA9IGRpc3BhdGNoZXJJ
RENvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RmVuY2VTeW5jOgotICAgICAg
ICAgICAgICAgICAgICAgICAgaWQgPSBmZW5jZUlEQ291bnRlcisrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVz
b3VyY2VUeXBlOjpFbXVsYXRlZFF1ZXJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSB4
ZmJJRENvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIG9iamVjdElETWFwW25vZGUtPmdldFJlc291cmNlSURGb3JEaWFnbm9z
dGljcygpXSA9IGlkOwotICAgICAgICAgICAgICAgIHN0cnN0ciA8PCBpZDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCA9IHN0cnN0
ci5zdHIoKTsKLSAgICAgICAgb3V0IDw8ICIgICIgPDwgbm9kZUlEIDw8ICJbbGFiZWwgPTwiIDw8
IGxhYmVsIDw8ICI8QlIvPjxGT05UIFBPSU5ULVNJWkU9XCIxMFwiPk5vZGUgSUQgIgotICAgICAg
ICAgICAgPDwgbm9kZUlEIDw8IG5vZGUtPmR1bXBDb21tYW5kc0ZvckRpYWdub3N0aWNzKCI8QlIv
PiIpIDw8ICI8L0ZPTlQ+Pl07IiA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotCi0gICAgZm9yIChjb25z
dCBDb21tYW5kR3JhcGhOb2RlICpub2RlIDogbU5vZGVzKQotICAgIHsKLSAgICAgICAgaW50IG5v
ZGVJRCA9IG5vZGVJRE1hcFtub2RlXTsKLQotICAgICAgICBmb3IgKGNvbnN0IENvbW1hbmRHcmFw
aE5vZGUgKnBhcmVudCA6IG5vZGUtPmdldFBhcmVudHNGb3JEaWFnbm9zdGljcygpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbnQgcGFyZW50SUQgPSBub2RlSURNYXBbcGFyZW50XTsKLSAgICAg
ICAgICAgIG91dCA8PCAiICAiIDw8IHBhcmVudElEIDw8ICIgLT4gIiA8PCBub2RlSUQgPDwgIjsi
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG91dCA8PCAifSIgPDwgc3Rk
OjplbmRsOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6dXBkYXRlT3ZlcmxheShDb250ZXh0Vmsg
KmNvbnRleHRWaykgY29uc3QKLXsKLSAgICBjb25zdCBnbDo6T3ZlcmxheVR5cGUgKm92ZXJsYXkg
PSBjb250ZXh0VmstPmdldE92ZXJsYXkoKTsKLQotICAgIG92ZXJsYXktPmdldFJ1bm5pbmdHcmFw
aFdpZGdldChnbDo6V2lkZ2V0SWQ6OlZ1bGthbkNvbW1hbmRHcmFwaFNpemUpLT5hZGQobU5vZGVz
LnNpemUoKSk7Ci0KLSAgICBvdmVybGF5LT5nZXRSdW5uaW5nSGlzdG9ncmFtV2lkZ2V0KGdsOjpX
aWRnZXRJZDo6VnVsa2FuU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBvb2xXYXN0ZSkKLSAgICAgICAg
LT5zZXQoQ2FsY3VsYXRlU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBvb2xXYXN0ZShtTm9kZXMpKTsK
LSAgICBvdmVybGF5LT5nZXRSdW5uaW5nSGlzdG9ncmFtV2lkZ2V0KGdsOjpXaWRnZXRJZDo6VnVs
a2FuU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBvb2xXYXN0ZSktPm5leHQoKTsKLX0KLQotQ29tbWFu
ZEdyYXBoTm9kZSAqQ29tbWFuZEdyYXBoOjpnZXRMYXN0QmFycmllck5vZGUoc2l6ZV90ICppbmRl
eE91dCkKLXsKLSAgICAqaW5kZXhPdXQgPSBtTGFzdEJhcnJpZXJJbmRleCA9PSBrSW52YWxpZE5v
ZGVJbmRleCA/IDAgOiBtTGFzdEJhcnJpZXJJbmRleDsKLSAgICByZXR1cm4gbUxhc3RCYXJyaWVy
SW5kZXggPT0ga0ludmFsaWROb2RlSW5kZXggPyBudWxscHRyIDogbU5vZGVzW21MYXN0QmFycmll
ckluZGV4XTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6OmFkZERlcGVuZGVuY2llc1RvTmV4dEJh
cnJpZXIoc2l6ZV90IGJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaE5vZGUgKm5leHRCYXJyaWVyKQotewotICAgIGZv
ciAoc2l6ZV90IGkgPSBiZWdpbjsgaSA8IGVuZDsgKytpKQotICAgIHsKLSAgICAgICAgLy8gQXMg
YSBzbWFsbCBvcHRpbWl6YXRpb24sIG9ubHkgYWRkIGVkZ2VzIHRvIGNoaWxkbGVzcyBub2Rlcy4g
IFRoZSBvdGhlcnMgaGF2ZSBhbgotICAgICAgICAvLyBpbmRpcmVjdCBkZXBlbmRlbmN5LgotICAg
ICAgICBpZiAoIW1Ob2Rlc1tpXS0+aGFzQ2hpbGRyZW4oKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgQ29tbWFuZEdyYXBoTm9kZTo6U2V0SGFwcGVuc0JlZm9yZURlcGVuZGVuY3kobU5vZGVzW2ld
LCBuZXh0QmFycmllcik7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFJlc291cmNlVXNlTGlz
dCBpbXBsZW1lbnRhdGlvbi4KLVJlc291cmNlVXNlTGlzdDo6UmVzb3VyY2VVc2VMaXN0KCkgPSBk
ZWZhdWx0OwotCi1SZXNvdXJjZVVzZUxpc3Q6On5SZXNvdXJjZVVzZUxpc3QoKQotewotICAgIEFT
U0VSVChtUmVzb3VyY2VVc2VzLmVtcHR5KCkpOwotfQotCi12b2lkIFJlc291cmNlVXNlTGlzdDo6
cmVsZWFzZVJlc291cmNlVXNlcygpCi17Ci0gICAgZm9yIChTaGFyZWRSZXNvdXJjZVVzZSAmdXNl
IDogbVJlc291cmNlVXNlcykKLSAgICB7Ci0gICAgICAgIHVzZS5yZWxlYXNlKCk7Ci0gICAgfQot
Ci0gICAgbVJlc291cmNlVXNlcy5jbGVhcigpOwotfQotCi12b2lkIFJlc291cmNlVXNlTGlzdDo6
cmVsZWFzZVJlc291cmNlVXNlc0FuZFVwZGF0ZVNlcmlhbHMoU2VyaWFsIHNlcmlhbCkKLXsKLSAg
ICBmb3IgKFNoYXJlZFJlc291cmNlVXNlICZ1c2UgOiBtUmVzb3VyY2VVc2VzKQotICAgIHsKLSAg
ICAgICAgdXNlLnJlbGVhc2VBbmRVcGRhdGVTZXJpYWwoc2VyaWFsKTsKLSAgICB9Ci0KLSAgICBt
UmVzb3VyY2VVc2VzLmNsZWFyKCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgdmsKLX0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tbWFuZEdyYXBoLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNhNjc5Y2JhMDdlNzEzMDQwY2FmNDU4MjhlN2NhMDhiZDA4YWJh
YTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3Jh
cGguaAorKysgL2Rldi9udWxsCkBAIC0xLDgxMyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQ29tbWFu
ZEdyYXBoOgotLy8gICAgRGVmZXJyZWQgd29yayBjb25zdHJ1Y3RlZCBieSBHTCBjYWxscywgdGhh
dCB3aWxsIGxhdGVyIGJlIGZsdXNoZWQgdG8gVnVsa2FuLgotLy8KLQotI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9WVUxLQU5fQ09NTUFORF9HUkFQSF9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5E
RVJFUl9WVUxLQU5fQ09NTUFORF9HUkFQSF9IXwotCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1NlY29uZGFyeUNvbW1hbmRCdWZmZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vdmtfY2FjaGVfdXRpbHMuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLW5h
bWVzcGFjZSB2awotewotY2xhc3MgQ29tbWFuZEdyYXBoOwotCi1lbnVtIGNsYXNzIFZpc2l0ZWRT
dGF0ZQotewotICAgIFVudmlzaXRlZCwKLSAgICBSZWFkeSwKLSAgICBWaXNpdGVkLAotfTsKLQot
ZW51bSBjbGFzcyBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUKLXsKLSAgICBCdWZmZXIsCi0gICAg
RnJhbWVidWZmZXIsCi0gICAgSW1hZ2UsCi0gICAgUXVlcnksCi0gICAgRGlzcGF0Y2hlciwKLSAg
ICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgcXVlcmllcyBjb3VsZCBiZSBoYW5kbGVkIGVudGlyZWx5
IG9uIHRoZSBDUFUgKGlmIG5vdCB1c2luZwotICAgIC8vIFZLX0VYVF90cmFuc2Zvcm1fZmVlZGJh
Y2spLCBidXQgc3RpbGwgbmVlZCB0byBnZW5lcmF0ZSBhIGNvbW1hbmQgZ3JhcGggYmFycmllciBu
b2RlLgotICAgIEVtdWxhdGVkUXVlcnksCi0gICAgRmVuY2VTeW5jLAotICAgIEdyYXBoQmFycmll
ciwKLSAgICBEZWJ1Z01hcmtlciwKLSAgICBIb3N0QXZhaWxhYmlsaXR5T3BlcmF0aW9uLAotfTsK
LQotLy8gQ2VydGFpbiBmdW5jdGlvbmFsaXR5IGNhbm5vdCBiZSBwdXQgaW4gc2Vjb25kYXJ5IGNv
bW1hbmQgYnVmZmVycywgc28gdGhleSBhcmUgc3BlY2lhbC1jYXNlZCBpbgotLy8gdGhlIG5vZGUu
Ci1lbnVtIGNsYXNzIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbgotewotICAgIEdlbmVyaWMsCi0g
ICAgQmVnaW5RdWVyeSwKLSAgICBFbmRRdWVyeSwKLSAgICBXcml0ZVRpbWVzdGFtcCwKLSAgICBC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrUXVlcnksCi0gICAgRW5kVHJhbnNmb3JtRmVlZGJhY2tRdWVy
eSwKLSAgICBTZXRGZW5jZVN5bmMsCi0gICAgV2FpdEZlbmNlU3luYywKLSAgICBHcmFwaEJhcnJp
ZXIsCi0gICAgSW5zZXJ0RGVidWdNYXJrZXIsCi0gICAgUHVzaERlYnVnTWFya2VyLAotICAgIFBv
cERlYnVnTWFya2VyLAotICAgIEhvc3RBdmFpbGFiaWxpdHlPcGVyYXRpb24sCi19OwotCi0vLyBS
ZWNlaXZlcyBub3RpZmljYXRpb25zIHdoZW4gYSByZW5kZXIgcGFzcyBjb21tYW5kIGJ1ZmZlciBp
cyBubyBsb25nZXIgYWJsZSB0byByZWNvcmQuIENhbiBiZQotLy8gdXNlZCB3aXRoIGluaGVyaXRh
bmNlLiBGYXN0ZXIgdGhhbiB1c2luZyBhbiBpbnRlcmZhY2UgY2xhc3Mgc2luY2UgaXQgaGFzIGlu
bGluZWQgbWV0aG9kcy4gQ291bGQKLS8vIGJlIHVzZWQgd2l0aCBjb21wb3NpdGlvbiBieSBhZGRp
bmcgYSBnZXRDb21tYW5kQnVmZmVyIG1ldGhvZC4KLWNsYXNzIFJlbmRlclBhc3NPd25lcgotewot
ICBwdWJsaWM6Ci0gICAgUmVuZGVyUGFzc093bmVyKCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwg
flJlbmRlclBhc3NPd25lcigpIHt9Ci0KLSAgICBBTkdMRV9JTkxJTkUgdm9pZCBvblJlbmRlclBh
c3NGaW5pc2hlZCgpIHsgbVJlbmRlclBhc3NDb21tYW5kQnVmZmVyID0gbnVsbHB0cjsgfQotCi0g
IHByb3RlY3RlZDoKLSAgICBDb21tYW5kQnVmZmVyICptUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIg
PSBudWxscHRyOwotfTsKLQotLy8gT25seSB1c2VkIGludGVybmFsbHkgaW4gdGhlIGNvbW1hbmQg
Z3JhcGguIEtlcHQgaW4gdGhlIGhlYWRlciBmb3IgYmV0dGVyIGlubGluaW5nIHBlcmZvcm1hbmNl
LgotY2xhc3MgQ29tbWFuZEdyYXBoTm9kZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewot
ICBwdWJsaWM6Ci0gICAgQ29tbWFuZEdyYXBoTm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb24g
ZnVuY3Rpb24sIGFuZ2xlOjpQb29sQWxsb2NhdG9yICpwb29sQWxsb2NhdG9yKTsKLSAgICB+Q29t
bWFuZEdyYXBoTm9kZSgpOwotCi0gICAgLy8gSW1tdXRhYmxlIHF1ZXJpZXMgZm9yIHdoZW4gd2Un
cmUgd2Fsa2luZyB0aGUgY29tbWFuZHMgdHJlZS4KLSAgICBDb21tYW5kQnVmZmVyICpnZXRPdXRz
aWRlUmVuZGVyUGFzc0NvbW1hbmRzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbUhhc0NoaWxk
cmVuKTsKLSAgICAgICAgcmV0dXJuICZtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kczsKLSAgICB9
Ci0KLSAgICBDb21tYW5kQnVmZmVyICpnZXRJbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMoKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtSGFzQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4gJm1JbnNp
ZGVSZW5kZXJQYXNzQ29tbWFuZHM7Ci0gICAgfQotCi0gICAgLy8gRm9yIG91dHNpZGUgdGhlIHJl
bmRlciBwYXNzIChjb3BpZXMsIHRyYW5zaXRpb25zLCBldGMpLgotICAgIGFuZ2xlOjpSZXN1bHQg
YmVnaW5PdXRzaWRlUmVuZGVyUGFzc1JlY29yZGluZyhDb250ZXh0VmsgKmNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbW1h
bmRQb29sICZjb21tYW5kUG9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRzT3V0KTsKLQotICAgIC8vIEZv
ciByZW5kZXJpbmcgY29tbWFuZHMgKGRyYXdzKS4KLSAgICBhbmdsZTo6UmVzdWx0IGJlZ2luSW5z
aWRlUmVuZGVyUGFzc1JlY29yZGluZyhDb250ZXh0VmsgKmNvbnRleHQsIENvbW1hbmRCdWZmZXIg
Kipjb21tYW5kc091dCk7Ci0KLSAgICAvLyBzdG9yZVJlbmRlclBhc3NJbmZvIGFuZCBhcHBlbmQq
UmVuZGVyVGFyZ2V0IHN0b3JlIGluZm8gcmVsZXZhbnQgdG8gdGhlIFJlbmRlclBhc3MuCi0gICAg
dm9pZCBzdG9yZVJlbmRlclBhc3NJbmZvKGNvbnN0IEZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSByZW5kZXJB
cmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6UmVuZGVyUGFzc0Rl
c2MgJnJlbmRlclBhc3NEZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB
dHRhY2htZW50T3BzQXJyYXkgJnJlbmRlclBhc3NBdHRhY2htZW50T3BzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWa0NsZWFyVmFsdWU+ICZjbGVhclZh
bHVlcyk7Ci0KLSAgICB2b2lkIGNsZWFyUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudChzaXplX3Qg
YXR0YWNobWVudEluZGV4LCBjb25zdCBWa0NsZWFyQ29sb3JWYWx1ZSAmY2xlYXJWYWx1ZSkKLSAg
ICB7Ci0gICAgICAgIG1SZW5kZXJQYXNzQXR0YWNobWVudE9wc1thdHRhY2htZW50SW5kZXhdLmxv
YWRPcCA9IFZLX0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVBUjsKLSAgICAgICAgbVJlbmRlclBhc3ND
bGVhclZhbHVlc1thdHRhY2htZW50SW5kZXhdLmNvbG9yICAgID0gY2xlYXJWYWx1ZTsKLSAgICB9
Ci0KLSAgICB2b2lkIGNsZWFyUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChzaXplX3QgYXR0YWNo
bWVudEluZGV4LCBmbG9hdCBkZXB0aCkKLSAgICB7Ci0gICAgICAgIG1SZW5kZXJQYXNzQXR0YWNo
bWVudE9wc1thdHRhY2htZW50SW5kZXhdLmxvYWRPcCAgICAgICAgICAgPSBWS19BVFRBQ0hNRU5U
X0xPQURfT1BfQ0xFQVI7Ci0gICAgICAgIG1SZW5kZXJQYXNzQ2xlYXJWYWx1ZXNbYXR0YWNobWVu
dEluZGV4XS5kZXB0aFN0ZW5jaWwuZGVwdGggPSBkZXB0aDsKLSAgICB9Ci0KLSAgICB2b2lkIGNs
ZWFyUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgsIHVp
bnQzMl90IHN0ZW5jaWwpCi0gICAgewotICAgICAgICBtUmVuZGVyUGFzc0F0dGFjaG1lbnRPcHNb
YXR0YWNobWVudEluZGV4XS5zdGVuY2lsTG9hZE9wICAgICAgPSBWS19BVFRBQ0hNRU5UX0xPQURf
T1BfQ0xFQVI7Ci0gICAgICAgIG1SZW5kZXJQYXNzQ2xlYXJWYWx1ZXNbYXR0YWNobWVudEluZGV4
XS5kZXB0aFN0ZW5jaWwuc3RlbmNpbCA9IHN0ZW5jaWw7Ci0gICAgfQotCi0gICAgdm9pZCBpbnZh
bGlkYXRlUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4KQot
ICAgIHsKLSAgICAgICAgbVJlbmRlclBhc3NBdHRhY2htZW50T3BzW2F0dGFjaG1lbnRJbmRleF0u
c3RvcmVPcCA9IFZLX0FUVEFDSE1FTlRfU1RPUkVfT1BfRE9OVF9DQVJFOwotICAgIH0KLQotICAg
IHZvaWQgaW52YWxpZGF0ZVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnQoc2l6ZV90IGF0dGFjaG1l
bnRJbmRleCkKLSAgICB7Ci0gICAgICAgIG1SZW5kZXJQYXNzQXR0YWNobWVudE9wc1thdHRhY2ht
ZW50SW5kZXhdLnN0b3JlT3AgPSBWS19BVFRBQ0hNRU5UX1NUT1JFX09QX0RPTlRfQ0FSRTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnQoc2l6
ZV90IGF0dGFjaG1lbnRJbmRleCkKLSAgICB7Ci0gICAgICAgIG1SZW5kZXJQYXNzQXR0YWNobWVu
dE9wc1thdHRhY2htZW50SW5kZXhdLnN0ZW5jaWxTdG9yZU9wID0gVktfQVRUQUNITUVOVF9TVE9S
RV9PUF9ET05UX0NBUkU7Ci0gICAgfQotCi0gICAgLy8gRGVwZW5kZW5jeSBjb21tYW5kcyBvcmRl
ciBub2RlIGV4ZWN1dGlvbiBpbiB0aGUgY29tbWFuZCBncmFwaC4KLSAgICAvLyBPbmNlIGEgbm9k
ZSBoYXMgY29tbWFuZHMgdGhhdCBtdXN0IGhhcHBlbiBhZnRlciBpdCwgcmVjb3JkaW5nIGlzIHN0
b3BwZWQgYW5kIHRoZSBub2RlIGlzCi0gICAgLy8gZnJvemVuIGZvcmV2ZXIuCi0gICAgc3RhdGlj
IHZvaWQgU2V0SGFwcGVuc0JlZm9yZURlcGVuZGVuY3koQ29tbWFuZEdyYXBoTm9kZSAqYmVmb3Jl
Tm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5k
R3JhcGhOb2RlICphZnRlck5vZGUpCi0gICAgewotICAgICAgICBBU1NFUlQoYmVmb3JlTm9kZSAh
PSBhZnRlck5vZGUgJiYgIWJlZm9yZU5vZGUtPmlzQ2hpbGRPZihhZnRlck5vZGUpKTsKLSAgICAg
ICAgYWZ0ZXJOb2RlLT5tUGFyZW50cy5lbXBsYWNlX2JhY2soYmVmb3JlTm9kZSk7Ci0gICAgICAg
IGJlZm9yZU5vZGUtPnNldEhhc0NoaWxkcmVuKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
U2V0SGFwcGVuc0JlZm9yZURlcGVuZGVuY2llcyhDb21tYW5kR3JhcGhOb2RlICoqYmVmb3JlTm9k
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
YmVmb3JlTm9kZXNDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbW1hbmRHcmFwaE5vZGUgKmFmdGVyTm9kZSk7Ci0KLSAgICBzdGF0aWMgdm9pZCBT
ZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5jaWVzKENvbW1hbmRHcmFwaE5vZGUgKmJlZm9yZU5vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3Jh
cGhOb2RlICoqYWZ0ZXJOb2RlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBhZnRlck5vZGVzQ291bnQpOwotCi0gICAgYm9vbCBoYXNQYXJlbnRz
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1IYXNDaGls
ZHJlbjsgfQotCi0gICAgLy8gQ29tbWFuZHMgZm9yIHRyYXZlcnNpbmcgdGhlIG5vZGUgb24gYSBm
bHVzaCBvcGVyYXRpb24uCi0gICAgVmlzaXRlZFN0YXRlIHZpc2l0ZWRTdGF0ZSgpIGNvbnN0Owot
ICAgIHZvaWQgdmlzaXRQYXJlbnRzKHN0ZDo6dmVjdG9yPENvbW1hbmRHcmFwaE5vZGUgKj4gKnN0
YWNrKTsKLSAgICBhbmdsZTo6UmVzdWx0IHZpc2l0QW5kRXhlY3V0ZShDb250ZXh0ICpjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbCBzZXJpYWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyUGFzc0NhY2hlICpyZW5kZXJQYXNz
Q2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWFyeUNvbW1hbmRC
dWZmZXIgKnByaW1hcnlDb21tYW5kQnVmZmVyKTsKLQotICAgIC8vIE9ubHkgdXNlZCBpbiB0aGUg
Y29tbWFuZCBncmFwaCBkaWFnbm9zdGljcy4KLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxDb21tYW5k
R3JhcGhOb2RlICo+ICZnZXRQYXJlbnRzRm9yRGlhZ25vc3RpY3MoKSBjb25zdDsKLSAgICB2b2lk
IHNldERpYWdub3N0aWNJbmZvKENvbW1hbmRHcmFwaFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUs
IHVpbnRwdHJfdCByZXNvdXJjZUlEKTsKLQotICAgIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZSBn
ZXRSZXNvdXJjZVR5cGVGb3JEaWFnbm9zdGljcygpIGNvbnN0IHsgcmV0dXJuIG1SZXNvdXJjZVR5
cGU7IH0KLSAgICB1aW50cHRyX3QgZ2V0UmVzb3VyY2VJREZvckRpYWdub3N0aWNzKCkgY29uc3Qg
eyByZXR1cm4gbVJlc291cmNlSUQ7IH0KLSAgICBib29sIGhhc0RpYWdub3N0aWNJRCgpIGNvbnN0
OwotICAgIHN0ZDo6c3RyaW5nIGR1bXBDb21tYW5kc0ZvckRpYWdub3N0aWNzKGNvbnN0IGNoYXIg
KnNlcGFyYXRvcikgY29uc3Q7Ci0gICAgdm9pZCBnZXRNZW1vcnlVc2FnZVN0YXRzRm9yRGlhZ25v
c3RpY3Moc2l6ZV90ICp1c2VkTWVtb3J5T3V0LCBzaXplX3QgKmFsbG9jYXRlZE1lbW9yeU91dCkg
Y29uc3Q7Ci0KLSAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZnZXRSZW5kZXJQYXNzUmVuZGVyQXJl
YSgpIGNvbnN0IHsgcmV0dXJuIG1SZW5kZXJQYXNzUmVuZGVyQXJlYTsgfQotCi0gICAgQ29tbWFu
ZEdyYXBoTm9kZUZ1bmN0aW9uIGdldEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbUZ1bmN0aW9u
OyB9Ci0KLSAgICB2b2lkIHNldFF1ZXJ5UG9vbChjb25zdCBRdWVyeVBvb2wgKnF1ZXJ5UG9vbCwg
dWludDMyX3QgcXVlcnlJbmRleCk7Ci0gICAgVmtRdWVyeVBvb2wgZ2V0UXVlcnlQb29sKCkgY29u
c3QgeyByZXR1cm4gbVF1ZXJ5UG9vbDsgfQotICAgIHVpbnQzMl90IGdldFF1ZXJ5SW5kZXgoKSBj
b25zdCB7IHJldHVybiBtUXVlcnlJbmRleDsgfQotICAgIHZvaWQgc2V0RmVuY2VTeW5jKGNvbnN0
IHZrOjpFdmVudCAmZXZlbnQpOwotICAgIHZvaWQgc2V0RGVidWdNYXJrZXIoR0xlbnVtIHNvdXJj
ZSwgc3RkOjpzdHJpbmcgJiZtYXJrZXIpOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXREZWJ1
Z01hcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1EZWJ1Z01hcmtlcjsgfQotCi0gICAgQU5HTEVfSU5M
SU5FIHZvaWQgYWRkR2xvYmFsTWVtb3J5QmFycmllcihWa0ZsYWdzIHNyY0FjY2VzcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRmxhZ3MgZHN0QWNjZXNz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGlu
ZVN0YWdlRmxhZ3Mgc3RhZ2VzKQotICAgIHsKLSAgICAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJT
cmNBY2Nlc3MgfD0gc3JjQWNjZXNzOwotICAgICAgICBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFj
Y2VzcyB8PSBkc3RBY2Nlc3M7Ci0gICAgICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3RhZ2VzIHw9
IHN0YWdlczsKLSAgICB9Ci0KLSAgICBBTkdMRV9JTkxJTkUgdm9pZCBzZXRBY3RpdmVUcmFuc2Zv
cm1GZWVkYmFja0luZm8oc2l6ZV90IHZhbGlkQnVmZmVyQ291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyICpjb3Vu
dGVyQnVmZmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCByZWJpbmRCdWZmZXIpCi0gICAgewotICAgICAgICBtVmFsaWRUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlckNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbGlkQnVmZmVy
Q291bnQpOwotICAgICAgICBtUmViaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzICAgID0gcmVi
aW5kQnVmZmVyOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCB2YWxp
ZEJ1ZmZlckNvdW50OyBpbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBtVHJhbnNmb3Jt
RmVlZGJhY2tDb3VudGVyQnVmZmVyc1tpbmRleF0gPSBjb3VudGVyQnVmZmVyc1tpbmRleF07Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNhbiBvbmx5IGJlIHNldCBmb3IgUmVuZGVy
UGFzcyBub2Rlcy4gRWFjaCBSZW5kZXJQYXNzIG5vZGUgY2FuIGhhdmUgYXQgbW9zdCBvbmUgb3du
ZXIuCi0gICAgdm9pZCBzZXRSZW5kZXJQYXNzT3duZXIoUmVuZGVyUGFzc093bmVyICpvd25lcikK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtUmVuZGVyUGFzc093bmVyID09IG51bGxwdHIpOwotICAg
ICAgICBtUmVuZGVyUGFzc093bmVyID0gb3duZXI7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAg
QU5HTEVfSU5MSU5FIHZvaWQgc2V0SGFzQ2hpbGRyZW4oKQotICAgIHsKLSAgICAgICAgbUhhc0No
aWxkcmVuID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1SZW5kZXJQYXNzT3duZXIpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1SZW5kZXJQYXNzT3duZXItPm9uUmVuZGVyUGFzc0ZpbmlzaGVkKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBVc2VkIGZvciB0ZXN0aW5nIG9ubHkuCi0gICAgYm9v
bCBpc0NoaWxkT2YoQ29tbWFuZEdyYXBoTm9kZSAqcGFyZW50KTsKLQotICAgIC8vIE9ubHkgdXNl
ZCBpZiB3ZSBuZWVkIGEgUmVuZGVyUGFzcyBmb3IgdGhlc2UgY29tbWFuZHMuCi0gICAgUmVuZGVy
UGFzc0Rlc2MgbVJlbmRlclBhc3NEZXNjOwotICAgIEF0dGFjaG1lbnRPcHNBcnJheSBtUmVuZGVy
UGFzc0F0dGFjaG1lbnRPcHM7Ci0gICAgRnJhbWVidWZmZXIgbVJlbmRlclBhc3NGcmFtZWJ1ZmZl
cjsKLSAgICBnbDo6UmVjdGFuZ2xlIG1SZW5kZXJQYXNzUmVuZGVyQXJlYTsKLSAgICBnbDo6QXR0
YWNobWVudEFycmF5PFZrQ2xlYXJWYWx1ZT4gbVJlbmRlclBhc3NDbGVhclZhbHVlczsKLQotICAg
IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbiBtRnVuY3Rpb247Ci0gICAgYW5nbGU6OlBvb2xBbGxv
Y2F0b3IgKm1Qb29sQWxsb2NhdG9yOwotICAgIC8vIEtlZXAgc2VwYXJhdGUgYnVmZmVycyBmb3Ig
Y29tbWFuZHMgaW5zaWRlIGFuZCBvdXRzaWRlIGEgUmVuZGVyUGFzcy4KLSAgICAvLyBUT0RPKGpt
YWRpbGwpOiBXZSBtaWdodCBub3QgbmVlZCBpbnNpZGUgYW5kIG91dHNpZGUgUmVuZGVyUGFzcyBj
b21tYW5kcyBzZXBhcmF0ZS4KLSAgICBDb21tYW5kQnVmZmVyIG1PdXRzaWRlUmVuZGVyUGFzc0Nv
bW1hbmRzOwotICAgIENvbW1hbmRCdWZmZXIgbUluc2lkZVJlbmRlclBhc3NDb21tYW5kczsKLQot
ICAgIC8vIFNwZWNpYWwtZnVuY3Rpb24gYWRkaXRpb25hbCBkYXRhOgotICAgIC8vIFF1ZXJpZXM6
Ci0gICAgVmtRdWVyeVBvb2wgbVF1ZXJ5UG9vbDsKLSAgICB1aW50MzJfdCBtUXVlcnlJbmRleDsK
LSAgICAvLyBHTHN5bmMgYW5kIEVHTFN5bmM6Ci0gICAgVmtFdmVudCBtRmVuY2VTeW5jRXZlbnQ7
Ci0gICAgLy8gRGVidWcgbWFya2VyczoKLSAgICBHTGVudW0gbURlYnVnTWFya2VyU291cmNlOwot
ICAgIHN0ZDo6c3RyaW5nIG1EZWJ1Z01hcmtlcjsKLQotICAgIC8vIFBhcmVudHMgYXJlIGNvbW1h
bmRzIHRoYXQgbXVzdCBiZSBzdWJtaXR0ZWQgYmVmb3JlICd0aGlzJyBDb21tYW5kTm9kZSBjYW4g
YmUgc3VibWl0dGVkLgotICAgIHN0ZDo6dmVjdG9yPENvbW1hbmRHcmFwaE5vZGUgKj4gbVBhcmVu
dHM7Ci0KLSAgICAvLyBJZiB0aGlzIGlzIHRydWUsIG90aGVyIGNvbW1hbmRzIGV4aXN0IHRoYXQg
bXVzdCBiZSBzdWJtaXR0ZWQgYWZ0ZXIgJ3RoaXMnIGNvbW1hbmQuCi0gICAgYm9vbCBtSGFzQ2hp
bGRyZW47Ci0KLSAgICAvLyBVc2VkIHdoZW4gdHJhdmVyc2luZyB0aGUgZGVwZW5kZW5jeSBncmFw
aC4KLSAgICBWaXNpdGVkU3RhdGUgbVZpc2l0ZWRTdGF0ZTsKLQotICAgIC8vIEFkZGl0aW9uYWwg
ZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4KLSAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgbVJl
c291cmNlVHlwZTsKLSAgICB1aW50cHRyX3QgbVJlc291cmNlSUQ7Ci0KLSAgICAvLyBGb3IgZ2xv
YmFsIG1lbW9yeSBiYXJyaWVycy4KLSAgICBWa0ZsYWdzIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3Jj
QWNjZXNzOwotICAgIFZrRmxhZ3MgbUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3M7Ci0gICAg
VmtQaXBlbGluZVN0YWdlRmxhZ3MgbUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXM7Ci0KLSAgICAv
LyBSZW5kZXIgcGFzcyBjb21tYW5kIGJ1ZmZlciBub3RpZmljYXRpb25zLgotICAgIFJlbmRlclBh
c3NPd25lciAqbVJlbmRlclBhc3NPd25lcjsKLQotICAgIC8vIEFjdGl2ZSB0cmFuc2Zvcm0gZmVl
ZGJhY2sgc3RhdGUKLSAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzQXJyYXk8VmtCdWZm
ZXI+IG1UcmFuc2Zvcm1GZWVkYmFja0NvdW50ZXJCdWZmZXJzOwotICAgIHVpbnQzMl90IG1WYWxp
ZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQ7Ci0gICAgYm9vbCBtUmViaW5kVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJzOwotfTsKLQotLy8gVHJhY2tzIGhvdyBhIHJlc291cmNlIGlzIHVzZWQg
aW4gYSBjb21tYW5kIGdyYXBoIGFuZCBpbiBhIFZrUXVldWUuIFRoZSByZWZlcmVuY2UgY291bnQg
aW5kaWNhdGVzCi0vLyB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgcmVzb3VyY2UgaXMgdXNlZCBpbiB0
aGUgZ3JhcGguIFRoZSBzZXJpYWwgaW5kaWNhdGVzIHRoZSBsYXN0IGN1cnJlbnQgdXNlCi0vLyBv
ZiBhIHJlc291cmNlIGluIHRoZSBWa1F1ZXVlLiBUaGUgcmVmZXJlbmNlIGNvdW50IGFuZCBzZXJp
YWwgdG9nZXRoZXIgY2FuIGRldGVybWluZSBpZiBhCi0vLyByZXNvdXJjZSBpcyBpbiB1c2UuCi1z
dHJ1Y3QgUmVzb3VyY2VVc2UKLXsKLSAgICBSZXNvdXJjZVVzZSgpID0gZGVmYXVsdDsKLQotICAg
IHVpbnQzMl90IGNvdW50ZXIgPSAwOwotICAgIFNlcmlhbCBzZXJpYWw7Ci19OwotCi1jbGFzcyBT
aGFyZWRSZXNvdXJjZVVzZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6
Ci0gICAgU2hhcmVkUmVzb3VyY2VVc2UoKSA6IG1Vc2UobnVsbHB0cikge30KLSAgICB+U2hhcmVk
UmVzb3VyY2VVc2UoKSB7IEFTU0VSVCghdmFsaWQoKSk7IH0KLSAgICBTaGFyZWRSZXNvdXJjZVVz
ZShTaGFyZWRSZXNvdXJjZVVzZSAmJnJocykgOiBtVXNlKHJocy5tVXNlKSB7IHJocy5tVXNlID0g
bnVsbHB0cjsgfQotICAgIFNoYXJlZFJlc291cmNlVXNlICZvcGVyYXRvcj0oU2hhcmVkUmVzb3Vy
Y2VVc2UgJiZyaHMpCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAobVVzZSwgcmhzLm1Vc2UpOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQU5HTEVfSU5MSU5FIGJvb2wgdmFs
aWQoKSBjb25zdCB7IHJldHVybiBtVXNlICE9IG51bGxwdHI7IH0KLQotICAgIHZvaWQgaW5pdCgp
Ci0gICAgewotICAgICAgICBBU1NFUlQoIW1Vc2UpOwotICAgICAgICBtVXNlID0gbmV3IFJlc291
cmNlVXNlOwotICAgICAgICBtVXNlLT5jb3VudGVyKys7Ci0gICAgfQotCi0gICAgQU5HTEVfSU5M
SU5FIHZvaWQgcmVsZWFzZSgpCi0gICAgewotICAgICAgICBBU1NFUlQodmFsaWQoKSk7Ci0gICAg
ICAgIEFTU0VSVChtVXNlLT5jb3VudGVyID4gMCk7Ci0gICAgICAgIGlmICgtLW1Vc2UtPmNvdW50
ZXIgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlIG1Vc2U7Ci0gICAgICAgIH0K
LSAgICAgICAgbVVzZSA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAgQU5HTEVfSU5MSU5FIHZvaWQg
cmVsZWFzZUFuZFVwZGF0ZVNlcmlhbChTZXJpYWwgc2VyaWFsKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHZhbGlkKCkpOwotICAgICAgICBBU1NFUlQobVVzZS0+Y291bnRlciA+IDApOwotICAgICAg
ICBBU1NFUlQobVVzZS0+c2VyaWFsIDw9IHNlcmlhbCk7Ci0gICAgICAgIG1Vc2UtPnNlcmlhbCA9
IHNlcmlhbDsKLSAgICAgICAgcmVsZWFzZSgpOwotICAgIH0KLQotICAgIEFOR0xFX0lOTElORSB2
b2lkIHNldChjb25zdCBTaGFyZWRSZXNvdXJjZVVzZSAmcmhzKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHJocy52YWxpZCgpKTsKLSAgICAgICAgQVNTRVJUKCF2YWxpZCgpKTsKLSAgICAgICAgQVNT
RVJUKHJocy5tVXNlLT5jb3VudGVyIDwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKTsKLSAgICAgICAgbVVzZSA9IHJocy5tVXNlOwotICAgICAgICBtVXNlLT5jb3VudGVyKys7
Ci0gICAgfQotCi0gICAgLy8gVGhlIGJhc2UgY291bnRlciB2YWx1ZSBmb3IgYSBsaXZlIHJlc291
cmNlIGlzICIxIi4gQW55IHZhbHVlIGdyZWF0ZXIgdGhhbiBvbmUgaW5kaWNhdGVzCi0gICAgLy8g
dGhlIHJlc291cmNlIGlzIGluIHVzZSBieSBhIHZrOjpDb21tYW5kR3JhcGguCi0gICAgQU5HTEVf
SU5MSU5FIGJvb2wgaGFzUmVjb3JkZWRDb21tYW5kcygpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQodmFsaWQoKSk7Ci0gICAgICAgIHJldHVybiBtVXNlLT5jb3VudGVyID4gMTsKLSAgICB9
Ci0KLSAgICBBTkdMRV9JTkxJTkUgYm9vbCBoYXNSdW5uaW5nQ29tbWFuZHMoU2VyaWFsIGxhc3RD
b21wbGV0ZWRTZXJpYWwpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodmFsaWQoKSk7Ci0g
ICAgICAgIHJldHVybiBtVXNlLT5zZXJpYWwgPiBsYXN0Q29tcGxldGVkU2VyaWFsOwotICAgIH0K
LQotICAgIEFOR0xFX0lOTElORSBib29sIGlzQ3VycmVudGx5SW5Vc2UoU2VyaWFsIGxhc3RDb21w
bGV0ZWRTZXJpYWwpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaGFzUmVjb3JkZWRDb21t
YW5kcygpIHx8IGhhc1J1bm5pbmdDb21tYW5kcyhsYXN0Q29tcGxldGVkU2VyaWFsKTsKLSAgICB9
Ci0KLSAgICBBTkdMRV9JTkxJTkUgU2VyaWFsIGdldFNlcmlhbCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQodmFsaWQoKSk7Ci0gICAgICAgIHJldHVybiBtVXNlLT5zZXJpYWw7Ci0gICAg
fQotCi0gIHByaXZhdGU6Ci0gICAgUmVzb3VyY2VVc2UgKm1Vc2U7Ci19OwotCi1jbGFzcyBTaGFy
ZWRHYXJiYWdlCi17Ci0gIHB1YmxpYzoKLSAgICBTaGFyZWRHYXJiYWdlKCk7Ci0gICAgU2hhcmVk
R2FyYmFnZShTaGFyZWRHYXJiYWdlICYmb3RoZXIpOwotICAgIFNoYXJlZEdhcmJhZ2UoU2hhcmVk
UmVzb3VyY2VVc2UgJiZ1c2UsIHN0ZDo6dmVjdG9yPEdhcmJhZ2VPYmplY3Q+ICYmZ2FyYmFnZSk7
Ci0gICAgflNoYXJlZEdhcmJhZ2UoKTsKLSAgICBTaGFyZWRHYXJiYWdlICZvcGVyYXRvcj0oU2hh
cmVkR2FyYmFnZSAmJnJocyk7Ci0KLSAgICBib29sIGRlc3Ryb3lJZkNvbXBsZXRlKFZrRGV2aWNl
IGRldmljZSwgU2VyaWFsIGNvbXBsZXRlZFNlcmlhbCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBTaGFy
ZWRSZXNvdXJjZVVzZSBtTGlmZXRpbWU7Ci0gICAgc3RkOjp2ZWN0b3I8R2FyYmFnZU9iamVjdD4g
bUdhcmJhZ2U7Ci19OwotCi11c2luZyBTaGFyZWRHYXJiYWdlTGlzdCA9IHN0ZDo6dmVjdG9yPFNo
YXJlZEdhcmJhZ2U+OwotCi0vLyBNaXhpbiB0byBhYnN0cmFjdCBhd2F5IHRoZSByZXNvdXJjZSB1
c2UgdHJhY2tpbmcuCi1jbGFzcyBSZXNvdXJjZVVzZUxpc3QgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKLXsKLSAgcHVibGljOgotICAgIFJlc291cmNlVXNlTGlzdCgpOwotICAgIHZpcnR1YWwg
flJlc291cmNlVXNlTGlzdCgpOwotCi0gICAgdm9pZCBhZGQoY29uc3QgU2hhcmVkUmVzb3VyY2VV
c2UgJnJlc291cmNlVXNlKTsKLQotICAgIHZvaWQgcmVsZWFzZVJlc291cmNlVXNlcygpOwotICAg
IHZvaWQgcmVsZWFzZVJlc291cmNlVXNlc0FuZFVwZGF0ZVNlcmlhbHMoU2VyaWFsIHNlcmlhbCk7
Ci0KLSAgcHJpdmF0ZToKLSAgICBzdGQ6OnZlY3RvcjxTaGFyZWRSZXNvdXJjZVVzZT4gbVJlc291
cmNlVXNlczsKLX07Ci0KLS8vIFJlc291cmNlVXNlciBpbmxpbmVzLgotQU5HTEVfSU5MSU5FIHZv
aWQgUmVzb3VyY2VVc2VMaXN0OjphZGQoY29uc3QgU2hhcmVkUmVzb3VyY2VVc2UgJnJlc291cmNl
VXNlKQotewotICAgIC8vIERpc2FibGVkIHRoZSBhc3NlcnQgYmVjYXVzZSBvZiBkaWZmaWN1bHRp
ZXMgd2l0aCBJbWFnZVZpZXcgcmVmZXJlbmNlcy4KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBDbGVh
biB1cCB3aXRoIGdyYXBoIHJlZGVzaWduLiBodHRwOi8vYW5nbGVidWcuY29tLzQwMjkKLSAgICAv
LyBBU1NFUlQoIWVtcHR5KCkpOwotICAgIFNoYXJlZFJlc291cmNlVXNlIG5ld1VzZTsKLSAgICBu
ZXdVc2Uuc2V0KHJlc291cmNlVXNlKTsKLSAgICBtUmVzb3VyY2VVc2VzLmVtcGxhY2VfYmFjayhz
dGQ6Om1vdmUobmV3VXNlKSk7Ci19Ci0KLS8vIFRoaXMgaXMgYSBoZWxwZXIgY2xhc3MgZm9yIGJh
Y2stZW5kIG9iamVjdHMgdXNlZCBpbiBWayBjb21tYW5kIGJ1ZmZlcnMuIEl0IHJlY29yZHMgYSBz
ZXJpYWwKLS8vIGF0IGNvbW1hbmQgcmVjb3JkaW5nIHRpbWVzIGluZGljYXRpbmcgYW4gb3JkZXIg
aW4gdGhlIHF1ZXVlLiBXZSB1c2UgRmVuY2VzIHRvIGRldGVjdCB3aGVuCi0vLyBjb21tYW5kcyBm
aW5pc2gsIGFuZCB0aGVuIHJlbGVhc2UgYW55IHVucmVmZXJlbmNlZCBhbmQgZGVsZXRlZCByZXNv
dXJjZXMgYmFzZWQgb24gdGhlIHN0b3JlZAotLy8gcXVldWUgc2VyaWFsIGluIGEgc3BlY2lhbCAn
Z2FyYmFnZScgcXVldWUuIFJlc291cmNlcyBhbHNvIHRyYWNrIGN1cnJlbnQgcmVhZCBhbmQgd3Jp
dGUKLS8vIGRlcGVuZGVuY2llcy4gT25seSBvbmUgY29tbWFuZCBidWZmZXIgbm9kZSBjYW4gYmUg
d3JpdGluZyB0byB0aGUgUmVzb3VyY2UgYXQgYSB0aW1lLCBidXQgbWFueQotLy8gY2FuIGJlIHJl
YWRpbmcgZnJvbSBpdC4gVG9nZXRoZXIgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGZvcm0gYSBjb21t
YW5kIGdyYXBoIGF0IHN1Ym1pc3Npb24gdGltZS4KLWNsYXNzIENvbW1hbmRHcmFwaFJlc291cmNl
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5Db21tYW5k
R3JhcGhSZXNvdXJjZSgpOwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSByZXNvdXJjZSBo
YXMgY29tbWFuZHMgaW4gdGhlIGdyYXBoLiAgVGhpcyBpcyB1c2VkIHRvIGtub3cgaWYgYSBmbHVz
aAotICAgIC8vIHNob3VsZCBiZSBwZXJmb3JtZWQsIGUuZy4gaWYgd2UgbmVlZCB0byB3YWl0IGZv
ciB0aGUgR1BVIHRvIGZpbmlzaCB3aXRoIHRoZSByZXNvdXJjZS4KLSAgICBib29sIGhhc1JlY29y
ZGVkQ29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtVXNlLmhhc1JlY29yZGVkQ29tbWFuZHMoKTsg
fQotCi0gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIgaGFzIGZpbmlzaGVkIGV4ZWN1dGlv
biB3aXRoIHRoaXMgcmVzb3VyY2UuCi0gICAgYm9vbCBoYXNSdW5uaW5nQ29tbWFuZHMoU2VyaWFs
IGxhc3RDb21wbGV0ZWRTZXJpYWwpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbVVzZS5o
YXNSdW5uaW5nQ29tbWFuZHMobGFzdENvbXBsZXRlZFNlcmlhbCk7Ci0gICAgfQotCi0gICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSByZXNvdXJjZSBpcyBpbiB1c2UgYnkgQU5HTEUgb3IgdGhlIGRy
aXZlci4KLSAgICBib29sIGlzQ3VycmVudGx5SW5Vc2UoU2VyaWFsIGxhc3RDb21wbGV0ZWRTZXJp
YWwpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbVVzZS5pc0N1cnJlbnRseUluVXNlKGxh
c3RDb21wbGV0ZWRTZXJpYWwpOwotICAgIH0KLQotICAgIC8vIEVuc3VyZXMgdGhlIGRyaXZlciBp
cyBjYXVnaHQgdXAgdG8gdGhpcyByZXNvdXJjZSBhbmQgaXQgaXMgb25seSBpbiB1c2UgYnkgQU5H
TEUuCi0gICAgYW5nbGU6OlJlc3VsdCBmaW5pc2hSdW5uaW5nQ29tbWFuZHMoQ29udGV4dFZrICpj
b250ZXh0VmspOwotCi0gICAgLy8gU2V0cyB1cCBkZXBlbmRlbmN5IHJlbGF0aW9ucy4gJ3RoaXMn
IHJlc291cmNlIGlzIHRoZSByZXNvdXJjZSBiZWluZyB3cml0dGVuIHRvLgotICAgIHZvaWQgYWRk
V3JpdGVEZXBlbmRlbmN5KENvbnRleHRWayAqY29udGV4dFZrLCBDb21tYW5kR3JhcGhSZXNvdXJj
ZSAqd3JpdGluZ1Jlc291cmNlKTsKLQotICAgIC8vIFNldHMgdXAgZGVwZW5kZW5jeSByZWxhdGlv
bnMuICd0aGlzJyByZXNvdXJjZSBpcyB0aGUgcmVzb3VyY2UgYmVpbmcgcmVhZC4KLSAgICB2b2lk
IGFkZFJlYWREZXBlbmRlbmN5KENvbnRleHRWayAqY29udGV4dFZrLCBDb21tYW5kR3JhcGhSZXNv
dXJjZSAqcmVhZGluZ1Jlc291cmNlKTsKLQotICAgIC8vIFVwZGF0ZXMgdGhlIGluLXVzZSBzZXJp
YWwgdHJhY2tlZCBmb3IgdGhpcyByZXNvdXJjZS4gV2lsbCBjbGVhciBkZXBlbmRlbmNpZXMgaWYg
dGhlIHJlc291cmNlCi0gICAgLy8gd2FzIG5vdCB1c2VkIGluIHRoaXMgc2V0IG9mIGNvbW1hbmQg
bm9kZXMuCi0gICAgdm9pZCBvblJlc291cmNlQWNjZXNzKFJlc291cmNlVXNlTGlzdCAqcmVzb3Vy
Y2VVc2VMaXN0KTsKLSAgICB2b2lkIHVwZGF0ZUN1cnJlbnRBY2Nlc3NOb2RlcygpOwotCi0gICAg
Ly8gSWYgYSByZXNvdXJjZSBpcyByZWNyZWF0ZWQsIGFzIGluIHJlbGVhc2VkIGFuZCByZWluaXRp
YWxpemVkLCB0aGUgbmV4dCBhY2Nlc3MgdG8gdGhlCi0gICAgLy8gcmVzb3VyY2Ugd2lsbCBub3Qg
Y3JlYXRlIGFuIGVkZ2UgZnJvbSBpdHMgbGFzdCBub2RlIGFuZCB3aWxsIGNyZWF0ZSBhIG5ldyBp
bmRlcGVuZGVudCBub2RlLgotICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBtVXNlIGlzIHJlc2V0IGFu
ZCB0aGUgZ3JhcGggYmVsaWV2ZXMgaXQncyBhbiBlbnRpcmVseSBuZXcgcmVzb3VyY2UuICBJbiB2
ZXJ5Ci0gICAgLy8gcGFydGljdWxhciBjYXNlcywgc3VjaCBhcyByZWNyZWF0aW5nIGFuIGltYWdl
IHdpdGggZnVsbCBtaXBjaGFpbiBvciBhZGRpbmcgU1RPUkFHRV9JTUFHRSBmbGFnCi0gICAgLy8g
dG8gaXRzIHVzZXMsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwcmVzZXJ2ZSB0aGUgbGluayBi
ZXR3ZWVuIHRoZSBwcmV2aW91cyBhbmQgbmV3Ci0gICAgLy8gbm9kZXMgYWxsb2NhdGVkIGZvciB0
aGlzIHJlc291cmNlLgotICAgIHZvaWQgb25SZXNvdXJjZVJlY3JlYXRlZChSZXNvdXJjZVVzZUxp
c3QgKnJlc291cmNlVXNlTGlzdCk7Ci0KLSAgICAvLyBBbGxvY2F0ZXMgYSB3cml0ZSBub2RlIHZp
YSBnZXROZXdXcml0ZU5vZGUgYW5kIHJldHVybnMgYSBzdGFydGVkIGNvbW1hbmQgYnVmZmVyLgot
ICAgIC8vIFRoZSBzdGFydGVkIGNvbW1hbmQgYnVmZmVyIHdpbGwgcmVuZGVyIG91dHNpZGUgb2Yg
YSBSZW5kZXJQYXNzLgotICAgIC8vIFdpbGwgYXBwZW5kIHRvIGFuIGV4aXN0aW5nIGNvbW1hbmQg
YnVmZmVyL2dyYXBoIG5vZGUgaWYgcG9zc2libGUuCi0gICAgYW5nbGU6OlJlc3VsdCByZWNvcmRD
b21tYW5kcyhDb250ZXh0VmsgKmNvbnRleHQsIENvbW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVy
T3V0KTsKLQotICAgIC8vIEJlZ2lucyBhIGNvbW1hbmQgYnVmZmVyIG9uIHRoZSBjdXJyZW50IGdy
YXBoIG5vZGUgZm9yIGluLVJlbmRlclBhc3MgcmVuZGVyaW5nLgotICAgIC8vIENhbGxlZCBmcm9t
IEZyYW1lYnVmZmVyVms6OnN0YXJ0TmV3UmVuZGVyUGFzcyBhbmQgVXRpbHNWayBmdW5jdGlvbnMu
Ci0gICAgYW5nbGU6OlJlc3VsdCBiZWdpblJlbmRlclBhc3MoQ29udGV4dFZrICpjb250ZXh0Vmss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgJmZy
YW1lYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVuZGVyUGFzc0Rlc2MgJnJlbmRlclBhc3NEZXNjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEF0dGFjaG1lbnRPcHNBcnJheSAmcmVuZGVyUGFzc0F0dGFj
aG1lbnRPcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8VmtDbGVhclZhbHVlPiAmY2xlYXJWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpOwotCi0gICAgLy8g
Q2hlY2tzIGlmIHdlJ3JlIGluIGEgUmVuZGVyUGFzcyB3aXRob3V0IGNoaWxkcmVuLgotICAgIGJv
b2wgaGFzU3RhcnRlZFJlbmRlclBhc3MoKSBjb25zdDsKLQotICAgIC8vIENoZWNrcyBpZiB3ZSdy
ZSBpbiBhIFJlbmRlclBhc3MgdGhhdCBlbmNvbXBhc3NlcyByZW5kZXJBcmVhLCByZXR1cm5pbmcg
dHJ1ZSBpZiBzby4gVXBkYXRlcwotICAgIC8vIHNlcmlhbCBpbnRlcm5hbGx5LiBSZXR1cm5zIHRo
ZSBzdGFydGVkIGNvbW1hbmQgYnVmZmVyIGluIGNvbW1hbmRCdWZmZXJPdXQuCi0gICAgYm9vbCBh
cHBlbmRUb1N0YXJ0ZWRSZW5kZXJQYXNzKFJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZyZW5kZXJBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5k
QnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCk7Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IHJlbmRlciBwYXNzIGlzIHN0YXJ0ZWQsIGJ1dCB0aGVyZSBhcmUgbm8gY29tbWFuZHMgeWV0IHJl
Y29yZGVkIGluIGl0LgotICAgIC8vIFRoaXMgaXMgdXNlZnVsIHRvIGtub3cgaWYgdGhlIHJlbmRl
ciBwYXNzIG9wcyBjYW4gYmUgbW9kaWZpZWQuCi0gICAgYm9vbCByZW5kZXJQYXNzU3RhcnRlZEJ1
dEVtcHR5KCkgY29uc3Q7Ci0KLSAgICB2b2lkIGNsZWFyUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dChzaXplX3QgYXR0YWNobWVudEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZrQ2xlYXJDb2xvclZhbHVlICZjbGVhclZhbHVlKTsKLSAgICB2b2lk
IGNsZWFyUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4LCBm
bG9hdCBkZXB0aCk7Ci0gICAgdm9pZCBjbGVhclJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudChz
aXplX3QgYXR0YWNobWVudEluZGV4LCB1aW50MzJfdCBzdGVuY2lsKTsKLQotICAgIHZvaWQgaW52
YWxpZGF0ZVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCk7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChzaXplX3QgYXR0
YWNobWVudEluZGV4KTsKLSAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJQYXNzU3RlbmNpbEF0dGFj
aG1lbnQoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCk7Ci0KLSAgICAvLyBBY2Nlc3NvciBmb3IgUmVu
ZGVyUGFzcyBSZW5kZXJBcmVhLgotICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmdldFJlbmRlclBh
c3NSZW5kZXJBcmVhKCkgY29uc3Q7Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiAndGhpcycgb2JqZWN0
IGNoYW5nZXMsIGJ1dCB3ZSdkIGxpa2UgdG8gc3RhcnQgYSBuZXcgY29tbWFuZCBidWZmZXIgbGF0
ZXIuCi0gICAgdm9pZCBmaW5pc2hDdXJyZW50Q29tbWFuZHMoQ29udGV4dFZrICpjb250ZXh0Vmsp
OwotCi0gICAgLy8gU3RvcmUgYSBkZWZlcnJlZCBtZW1vcnkgYmFycmllci4gV2lsbCBiZSByZWNv
cmRlZCBpbnRvIGEgcHJpbWFyeSBjb21tYW5kIGJ1ZmZlciBhdCBzdWJtaXQuCi0gICAgdm9pZCBh
ZGRHbG9iYWxNZW1vcnlCYXJyaWVyKFZrRmxhZ3Mgc3JjQWNjZXNzLCBWa0ZsYWdzIGRzdEFjY2Vz
cywgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3RhZ2VzKTsKLQotICAgIC8vIFNldHMgYWN0aXZlIHRy
YW5zZm9ybSBmZWVkYmFjayBpbmZvcm1hdGlvbiB0byBjdXJyZW50IHdyaXRpbmcgbm9kZS4KLSAg
ICB2b2lkIHNldEFjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrSW5mbyhzaXplX3QgdmFsaWRCdWZmZXJD
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1
ZmZlciAqY291bnRlckJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCByZWJpbmRCdWZmZXIpOwotCi0gIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBD
b21tYW5kR3JhcGhSZXNvdXJjZShDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KTsKLQotICAgIC8vIEN1cnJlbnQgcmVzb3VyY2UgbGlmZXRpbWUuCi0gICAgU2hhcmVkUmVzb3Vy
Y2VVc2UgbVVzZTsKLQotICBwcml2YXRlOgotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5v
ZGUgaGFzIGEgY3VycmVudCB3cml0aW5nIG5vZGUgd2l0aCBubyBjaGlsZHJlbi4KLSAgICBBTkdM
RV9JTkxJTkUgYm9vbCBoYXNDaGlsZGxlc3NXcml0aW5nTm9kZSgpIGNvbnN0OwotCi0gICAgdm9p
ZCBzdGFydE5ld0NvbW1hbmRzKENvbnRleHRWayAqY29udGV4dFZrKTsKLQotICAgIHZvaWQgb25X
cml0ZUltcGwoQ29udGV4dFZrICpjb250ZXh0VmssIENvbW1hbmRHcmFwaE5vZGUgKndyaXRpbmdO
b2RlKTsKLQotICAgIHN0ZDo6dmVjdG9yPENvbW1hbmRHcmFwaE5vZGUgKj4gbUN1cnJlbnRSZWFk
aW5nTm9kZXM7Ci0KLSAgICAvLyBDdXJyZW50IGNvbW1hbmQgZ3JhcGggd3JpdGluZyBub2RlLgot
ICAgIENvbW1hbmRHcmFwaE5vZGUgKm1DdXJyZW50V3JpdGluZ05vZGU7Ci0KLSAgICAvLyBBZGRp
dGlvbmFsIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uCi0gICAgQ29tbWFuZEdyYXBoUmVzb3VyY2VU
eXBlIG1SZXNvdXJjZVR5cGU7Ci19OwotCi0vLyBUcmFuc2xhdGluZyBPcGVuR0wgY29tbWFuZHMg
aW50byBWdWxrYW4gYW5kIHN1Ym1pdHRpbmcgdGhlbSBpbW1lZGlhdGVseSBsb3NlcyBvdXQgb24g
c29tZQotLy8gb2YgdGhlIHBvd2VyZnVsIGZsZXhpYmxpdHkgVnVsa2FuIG9mZmVycyBpbiBSZW5k
ZXJQYXNzZXMuIExvYWQvU3RvcmUgb3BzIGNhbiBhdXRvbWF0aWNhbGx5Ci0vLyBjbGVhciBSZW5k
ZXJQYXNzIGF0dGFjaG1lbnRzLCBvciBwcmVzZXJ2ZSB0aGUgY29udGVudHMuIFJlbmRlclBhc3Mg
YXV0b21hdGljIGxheW91dCB0cmFuc2l0aW9ucwotLy8gY2FuIGltcHJvdmUgY2VydGFpbiBwZXJm
b3JtYW5jZSBjYXNlcy4gQWxzbywgd2UgY2FuIHJlbW92ZSByZWR1bmRhbnQgUmVuZGVyUGFzcyBC
ZWdpbiBhbmQgRW5kcwotLy8gd2hlbiBwcm9jZXNzaW5nIGludGVybGVhdmVkIGRyYXcgb3BlcmF0
aW9ucyBvbiBpbmRlcGVuZGVudCBGcmFtZWJ1ZmZlcnMuCi0vLwotLy8gQU5HTEUncyBDb21tYW5k
R3JhcGggKGFuZCBDb21tYW5kR3JhcGhOb2RlKSBhdHRlbXB0IHRvIHNvbHZlIHRoZXNlIHByb2Js
ZW1zIHVzaW5nIGRlZmVycmVkCi0vLyBjb21tYW5kIHN1Ym1pc3Npb24uIFdlIGFsc28gc29tZXRp
bWVzIGNhbGwgdGhpcyBjb21tYW5kIHJlLW9yZGVyaW5nLiBBIGJyaWVmIHN1bW1hcnk6Ci0vLwot
Ly8gRHVyaW5nIEdMIGNvbW1hbmQgcHJvY2Vzc2luZywgd2UgcmVjb3JkIFZ1bGthbiBjb21tYW5k
cyBpbnRvIFNlY29uZGFyeUNvbW1hbmRCdWZmZXJzLCB3aGljaAotLy8gYXJlIHN0b3JlZCBpbiBD
b21tYW5kR3JhcGhOb2RlcywgYW5kIHRoZXNlIG5vZGVzIGFyZSBjaGFpbmVkIHRvZ2V0aGVyIHZp
YSBkZXBlbmRlbmNpZXMgdG8KLS8vIGZvcm0gYSBkaXJlY3RlZCBhY3ljbGljIENvbW1hbmRHcmFw
aC4gV2hlbiB3ZSBuZWVkIHRvIHN1Ym1pdCB0aGUgQ29tbWFuZEdyYXBoLCBzYXkgZHVyaW5nIGEK
LS8vIFN3YXBCdWZmZXJzIG9yIFJlYWRQaXhlbHMgY2FsbCwgd2UgYmVnaW4gYSBwcmltYXJ5IFZ1
bGthbiBDb21tYW5kQnVmZmVyLCBhbmQgd2FsayB0aGUKLS8vIENvbW1hbmRHcmFwaCwgc3RhcnRp
bmcgYXQgdGhlIG1vc3Qgc2VuaW9yIG5vZGVzLCByZWNvcmRpbmcgU2Vjb25kYXJ5Q29tbWFuZEJ1
ZmZlcnMgaW5zaWRlCi0vLyBhbmQgb3V0c2lkZSBSZW5kZXJQYXNzZXMgYXMgbmVjZXNzYXJ5LCBm
aWxsZWQgd2l0aCB0aGUgcmlnaHQgbG9hZC9zdG9yZSBvcGVyYXRpb25zLiBPbmNlCi0vLyB0aGUg
cHJpbWFyeSBDb21tYW5kQnVmZmVyIGhhcyByZWNvcmRlZCBhbGwgb2YgdGhlIFNlY29uZGFyeUNv
bW1hbmRCdWZmZXJzIGZyb20gYWxsIHRoZSBvcGVuCi0vLyBDb21tYW5kR3JhcGhOb2Rlcywgd2Ug
c3VibWl0IHRoZSBwcmltYXJ5IENvbW1hbmRCdWZmZXIgdG8gdGhlIFZrUXVldWUgb24gdGhlIGRl
dmljZS4KLS8vCi0vLyBUaGUgQ29tbWFuZCBHcmFwaCBjb25zaXN0cyBvZiBhbiBhcnJheSBvZiBv
cGVuIENvbW1hbmQgR3JhcGggTm9kZXMuIEl0IHN1cHBvcnRzIGFsbG9jYXRpbmcgbmV3Ci0vLyBu
b2RlcyBmb3IgdGhlIGdyYXBoLCB3aGljaCBhcmUgbGlua2VkIHZpYSBkZXBlbmRlbmN5IHJlbGF0
aW9uIGNhbGxzIGluIENvbW1hbmRHcmFwaE5vZGUsIGFuZAotLy8gYWxzbyBzdWJtaXR0aW5nIHRo
ZSB3aG9sZSBjb21tYW5kIGdyYXBoIHZpYSBzdWJtaXRDb21tYW5kcy4KLWNsYXNzIENvbW1hbmRH
cmFwaCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgQ29tbWFuZEdyYXBoKGJvb2wgZW5hYmxlR3JhcGhEaWFnbm9zdGljcywgYW5nbGU6OlBvb2xB
bGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IpOwotICAgIH5Db21tYW5kR3JhcGgoKTsKLQotICAgIC8v
IEFsbG9jYXRlcyBhIG5ldyBDb21tYW5kR3JhcGhOb2RlIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0
IG9mIGN1cnJlbnQgb3BlbiBub2Rlcy4gTm8gb3JkZXJpbmcKLSAgICAvLyByZWxhdGlvbnMgZXhp
c3QgaW4gdGhlIG5vZGUgYnkgZGVmYXVsdC4gQ2FsbCBDb21tYW5kR3JhcGhOb2RlOjpTZXRIYXBw
ZW5zQmVmb3JlRGVwZW5kZW5jeQotICAgIC8vIHRvIHNldCB1cCBkZXBlbmRlbmN5IHJlbGF0aW9u
cy4gSWYgdGhlIG5vZGUgaXMgYSBiYXJyaWVyLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkCi0g
ICAgLy8gZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIHByZXZpb3VzIGJhcnJpZXIsIHRoZSBuZXcg
YmFycmllciBhbmQgYWxsIG5vZGVzIGluIGJldHdlZW4uCi0gICAgQ29tbWFuZEdyYXBoTm9kZSAq
YWxsb2NhdGVOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbiBmdW5jdGlvbik7Ci0KLSAgICBh
bmdsZTo6UmVzdWx0IHN1Ym1pdENvbW1hbmRzKENvbnRleHRWayAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbCBzZXJpYWwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJQYXNzQ2FjaGUgKnJlbmRlclBhc3NDYWNoZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5
Q29tbWFuZEJ1ZmZlcik7Ci0gICAgYm9vbCBlbXB0eSgpIGNvbnN0OwotICAgIHZvaWQgY2xlYXIo
KTsKLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgY3JlYXRlIHNwZWNpYWwtZnVuY3Rpb24gbm9kZXMg
dGhhdCBkb24ndCByZXF1aXJlIGEgZ3JhcGggcmVzb3VyY2UuCi0gICAgLy8gUXVlcmllczoKLSAg
ICB2b2lkIGJlZ2luUXVlcnkoY29uc3QgUXVlcnlQb29sICpxdWVyeVBvb2wsIHVpbnQzMl90IHF1
ZXJ5SW5kZXgpOwotICAgIHZvaWQgZW5kUXVlcnkoY29uc3QgUXVlcnlQb29sICpxdWVyeVBvb2ws
IHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwotICAgIHZvaWQgd3JpdGVUaW1lc3RhbXAoY29uc3QgUXVl
cnlQb29sICpxdWVyeVBvb2wsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwotICAgIHZvaWQgYmVnaW5U
cmFuc2Zvcm1GZWVkYmFja0VtdWxhdGVkUXVlcnkoKTsKLSAgICB2b2lkIGVuZFRyYW5zZm9ybUZl
ZWRiYWNrRW11bGF0ZWRRdWVyeSgpOwotICAgIC8vIEdMc3luYyBhbmQgRUdMU3luYzoKLSAgICB2
b2lkIHNldEZlbmNlU3luYyhjb25zdCB2azo6RXZlbnQgJmV2ZW50KTsKLSAgICB2b2lkIHdhaXRG
ZW5jZVN5bmMoY29uc3Qgdms6OkV2ZW50ICZldmVudCk7Ci0gICAgLy8gTWVtb3J5IGJhcnJpZXJz
OgotICAgIHZvaWQgbWVtb3J5QmFycmllcihWa0ZsYWdzIHNyY0FjY2VzcywgVmtGbGFncyBkc3RB
Y2Nlc3MsIFZrUGlwZWxpbmVTdGFnZUZsYWdzIHN0YWdlcyk7Ci0gICAgLy8gRGVidWcgbWFya2Vy
czoKLSAgICB2b2lkIGluc2VydERlYnVnTWFya2VyKEdMZW51bSBzb3VyY2UsIHN0ZDo6c3RyaW5n
ICYmbWFya2VyKTsKLSAgICB2b2lkIHB1c2hEZWJ1Z01hcmtlcihHTGVudW0gc291cmNlLCBzdGQ6
OnN0cmluZyAmJm1hcmtlcik7Ci0gICAgdm9pZCBwb3BEZWJ1Z01hcmtlcigpOwotICAgIC8vIEhv
c3QtdmlzaWJsZSBidWZmZXIgd3JpdGUgYXZhaWxhYmlsaXR5IG9wZXJhdGlvbjoKLSAgICB2b2lk
IG1ha2VIb3N0VmlzaWJsZUJ1ZmZlcldyaXRlQXZhaWxhYmxlKCk7Ci0gICAgLy8gRXh0ZXJuYWwg
bWVtb3J5IHN5bmNocm9uaXphdGlvbjoKLSAgICB2b2lkIHN5bmNFeHRlcm5hbE1lbW9yeSgpOwot
Ci0gIHByaXZhdGU6Ci0gICAgQ29tbWFuZEdyYXBoTm9kZSAqYWxsb2NhdGVCYXJyaWVyTm9kZShD
b21tYW5kR3JhcGhOb2RlRnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludHB0cl90IHJl
c291cmNlSUQpOwotICAgIHZvaWQgc2V0TmV3QmFycmllcihDb21tYW5kR3JhcGhOb2RlICpuZXdC
YXJyaWVyKTsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpnZXRMYXN0QmFycmllck5vZGUoc2l6ZV90
ICppbmRleE91dCk7Ci0gICAgdm9pZCBhZGREZXBlbmRlbmNpZXNUb05leHRCYXJyaWVyKHNpemVf
dCBiZWdpbiwgc2l6ZV90IGVuZCwgQ29tbWFuZEdyYXBoTm9kZSAqbmV4dEJhcnJpZXIpOwotCi0g
ICAgdm9pZCBkdW1wR3JhcGhEb3RGaWxlKHN0ZDo6b3N0cmVhbSAmb3V0KSBjb25zdDsKLSAgICB2
b2lkIHVwZGF0ZU92ZXJsYXkoQ29udGV4dFZrICpjb250ZXh0VmspIGNvbnN0OwotCi0gICAgc3Rk
Ojp2ZWN0b3I8Q29tbWFuZEdyYXBoTm9kZSAqPiBtTm9kZXM7Ci0gICAgYm9vbCBtRW5hYmxlR3Jh
cGhEaWFnbm9zdGljczsKLSAgICBhbmdsZTo6UG9vbEFsbG9jYXRvciAqbVBvb2xBbGxvY2F0b3I7
Ci0KLSAgICAvLyBBIHNldCBvZiBub2RlcyAoZXZlbnR1YWxseSkgZXhpc3QgdGhhdCBhY3QgYXMg
YmFycmllcnMgdG8gZ3VhcmFudGVlIHN1Ym1pc3Npb24gb3JkZXIuICBGb3IKLSAgICAvLyBleGFt
cGxlLCBhIGdsTWVtb3J5QmFycmllcigpIGNhbGxzIHdvdWxkIGxlYWQgdG8gc3VjaCBhIGJhcnJp
ZXIgb3IgYmVnaW5uaW5nIGFuZCBlbmRpbmcgYQotICAgIC8vIHF1ZXJ5LiBUaGlzIGlzIGJlY2F1
c2UgdGhlIGdyYXBoIGNhbiByZW9yZGVyIG9wZXJhdGlvbnMgaWYgaXQgc2VlcyBmaXQuICBMZXQn
cyBjYWxsIGEgYmFycmllcgotICAgIC8vIG5vZGUgQmksIGFuZCB0aGUgb3RoZXIgbm9kZXMgTmku
IFRoZSBlZGdlcyBiZXR3ZWVuIE5pIGRvbid0IGludGVyZXN0IHVzLiAgQmVmb3JlIGEgYmFycmll
ciBpcwotICAgIC8vIGluc2VydGVkLCB3ZSBoYXZlOgotICAgIC8vCi0gICAgLy8gTjAgTjEgLi4u
IE5hCi0gICAgLy8gXF9fX1xfXy9fLyAgICAgKGRlcGVuZGVuY3kgZWdkZXMsIHdoaWNoIHdlIGRv
bid0IGNhcmUgYWJvdXQgc28gSSdsbCBzdG9wIGRyYXdpbmcgdGhlbS4KLSAgICAvLyAgICAgIFwv
Ci0gICAgLy8KLSAgICAvLyBXaGVuIHRoZSBmaXJzdCBiYXJyaWVyIGlzIGluc2VydGVkLCB3ZSB3
aWxsIGhhdmU6Ci0gICAgLy8KLSAgICAvLyAgICAgX19fX19fCi0gICAgLy8gICAgLyAgX19fX1wK
LSAgICAvLyAgIC8gIC8gICAgIFwKLSAgICAvLyAgLyAgLyAgICAgIC9cCi0gICAgLy8gTjAgTjEg
Li4uIE5hIEIwCi0gICAgLy8KLSAgICAvLyBUaGlzIG1ha2VzIHN1cmUgYWxsIE4wLi5OYSBhcmUg
Y2FsbGVkIGJlZm9yZSBCMC4gIEZyb20gdGhlbiBvbiwgQjAgd2lsbCBiZSB0aGUgY3VycmVudAot
ICAgIC8vICJiYXJyaWVyIHBvaW50IiB3aGljaCBleHRlbmRzIGFuIGVkZ2UgdG8gZXZlcnkgbmV4
dCBub2RlOgotICAgIC8vCi0gICAgLy8gICAgIF9fX19fXwotICAgIC8vICAgIC8gIF9fX19cCi0g
ICAgLy8gICAvICAvICAgICBcCi0gICAgLy8gIC8gIC8gICAgICAvXAotICAgIC8vIE4wIE4xIC4u
LiBOYSBCMCBOYSsxIC4uLiBOYgotICAgIC8vICAgICAgICAgICAgICAgIFwvICAgICAgIC8KLSAg
ICAvLyAgICAgICAgICAgICAgICAgXF9fX19fXy8KLSAgICAvLwotICAgIC8vCi0gICAgLy8gV2hl
biB0aGUgbmV4dCBiYXJyaWVyIEIxIGlzIG1ldCwgYWxsIG5vZGVzIGJldHdlZW4gQjAgYW5kIEIx
IHdpbGwgYWRkIGEgZGVwZW5lbmN5IG9uIEIxIGFzCi0gICAgLy8gd2VsbCwgYW5kIHRoZSAiYmFy
cmllciBwb2ludCIgaXMgdXBkYXRlZC4KLSAgICAvLwotICAgIC8vICAgICBfX19fX18KLSAgICAv
LyAgICAvICBfX19fXCAgICAgICAgIF9fX19fXyAgICAgICAgIF9fX19fXwotICAgIC8vICAgLyAg
LyAgICAgXCAgICAgICAvICAgICAgXCAgICAgICAvICAgICAgXAotICAgIC8vICAvICAvICAgICAg
L1wgICAgIC8gICAgICAgL1wgICAgIC8gICAgICAgL1wKLSAgICAvLyBOMCBOMSAuLi4gTmEgQjAg
TmErMSAuLi4gTmIgQjEgTmIrMSAuLi4gTmMgQjIgLi4uCi0gICAgLy8gICAgICAgICAgICAgICAg
XC8gICAgICAgLyAgLyAgXC8gICAgICAgLyAgLwotICAgIC8vICAgICAgICAgICAgICAgICBcX19f
X19fLyAgLyAgICBcX19fX19fLyAgLwotICAgIC8vICAgICAgICAgICAgICAgICAgXF9fX19fX18v
ICAgICAgXF9fX19fX18vCi0gICAgLy8KLSAgICAvLwotICAgIC8vIFdoZW4gYmFycmllciBCaSBp
cyBpbnRyb2R1Y2VkLCBhbGwgbm9kZXMgYWRkZWQgc2luY2UgQmktMSBuZWVkIHRvIGFkZCBhIGRl
cGVuZGVuY3kgdG8gQmkKLSAgICAvLyAoaW5jbHVkaW5nIEJpLTEpLiBXZSB0aGVyZWZvcmUga2Vl
cCB0cmFjayBvZiB0aGUgbm9kZSBpbmRleCBvZiB0aGUgbGFzdCBiYXJyaWVyIHRoYXQgd2FzCi0g
ICAgLy8gaXNzdWVkLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtJbnZhbGlkTm9kZUlu
ZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCgpOwotICAgIHNpemVf
dCBtTGFzdEJhcnJpZXJJbmRleDsKLX07Ci0KLS8vIENvbW1hbmRHcmFwaFJlc291cmNlIGlubGlu
ZXMuCi1BTkdMRV9JTkxJTkUgYm9vbCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6aGFzU3RhcnRlZFJl
bmRlclBhc3MoKSBjb25zdAotewotICAgIHJldHVybiBoYXNDaGlsZGxlc3NXcml0aW5nTm9kZSgp
ICYmIG1DdXJyZW50V3JpdGluZ05vZGUtPmdldEluc2lkZVJlbmRlclBhc3NDb21tYW5kcygpLT52
YWxpZCgpOwotfQotCi1BTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6dXBk
YXRlQ3VycmVudEFjY2Vzc05vZGVzKCkKLXsKLSAgICAvLyBDbGVhciBkZXBlbmRlbmNpZXMgaWYg
dGhpcyBpcyBhIG5ldyBhY2Nlc3MuCi0gICAgaWYgKCFtVXNlLmhhc1JlY29yZGVkQ29tbWFuZHMo
KSkKLSAgICB7Ci0gICAgICAgIG1DdXJyZW50V3JpdGluZ05vZGUgPSBudWxscHRyOwotICAgICAg
ICBtQ3VycmVudFJlYWRpbmdOb2Rlcy5jbGVhcigpOwotICAgIH0KLX0KLQotQU5HTEVfSU5MSU5F
IHZvaWQgQ29tbWFuZEdyYXBoUmVzb3VyY2U6Om9uUmVzb3VyY2VSZWNyZWF0ZWQoUmVzb3VyY2VV
c2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QpCi17Ci0gICAgLy8gU3RvcmUgcmVmZXJlbmNlIGluIHJl
c291cmNlIGxpc3QuCi0gICAgcmVzb3VyY2VVc2VMaXN0LT5hZGQobVVzZSk7Ci19Ci0KLUFOR0xF
X0lOTElORSB2b2lkIENvbW1hbmRHcmFwaFJlc291cmNlOjpvblJlc291cmNlQWNjZXNzKFJlc291
cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KQotewotICAgIHVwZGF0ZUN1cnJlbnRBY2Nlc3NO
b2RlcygpOwotCi0gICAgLy8gU3RvcmUgcmVmZXJlbmNlIGluIHJlc291cmNlIGxpc3QuCi0gICAg
cmVzb3VyY2VVc2VMaXN0LT5hZGQobVVzZSk7Ci19Ci0KLUFOR0xFX0lOTElORSBib29sIENvbW1h
bmRHcmFwaFJlc291cmNlOjphcHBlbmRUb1N0YXJ0ZWRSZW5kZXJQYXNzKFJlc291cmNlVXNlTGlz
dCAqcmVzb3VyY2VVc2VMaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVuZGVy
QXJlYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVyT3V0KQotewotICAg
IHVwZGF0ZUN1cnJlbnRBY2Nlc3NOb2RlcygpOwotCi0gICAgaWYgKGhhc1N0YXJ0ZWRSZW5kZXJQ
YXNzKCkpCi0gICAgewotICAgICAgICAvLyBTdG9yZSByZWZlcmVuY2UgaW4gcmVzb3VyY2UgbGlz
dC4KLSAgICAgICAgcmVzb3VyY2VVc2VMaXN0LT5hZGQobVVzZSk7Ci0KLSAgICAgICAgaWYgKG1D
dXJyZW50V3JpdGluZ05vZGUtPmdldFJlbmRlclBhc3NSZW5kZXJBcmVhKCkuZW5jbG9zZXMocmVu
ZGVyQXJlYSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpjb21tYW5kQnVmZmVyT3V0ID0gbUN1
cnJlbnRXcml0aW5nTm9kZS0+Z2V0SW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotQU5HTEVfSU5MSU5FIGJvb2wgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OnJlbmRlclBhc3NT
dGFydGVkQnV0RW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBoYXNTdGFydGVkUmVuZGVyUGFz
cygpICYmICghdms6OkNvbW1hbmRCdWZmZXI6OkNhbktub3dJZkVtcHR5KCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRXcml0aW5nTm9kZS0+Z2V0SW5z
aWRlUmVuZGVyUGFzc0NvbW1hbmRzKCktPmVtcHR5KCkpOwotfQotCi1BTkdMRV9JTkxJTkUgdm9p
ZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6Y2xlYXJSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KAot
ICAgIHNpemVfdCBhdHRhY2htZW50SW5kZXgsCi0gICAgY29uc3QgVmtDbGVhckNvbG9yVmFsdWUg
JmNsZWFyVmFsdWUpCi17Ci0gICAgQVNTRVJUKHJlbmRlclBhc3NTdGFydGVkQnV0RW1wdHkoKSk7
Ci0gICAgbUN1cnJlbnRXcml0aW5nTm9kZS0+Y2xlYXJSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
KGF0dGFjaG1lbnRJbmRleCwgY2xlYXJWYWx1ZSk7Ci19Ci0KLUFOR0xFX0lOTElORSB2b2lkIENv
bW1hbmRHcmFwaFJlc291cmNlOjpjbGVhclJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnQoc2l6ZV90
IGF0dGFjaG1lbnRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVwdGgpCi17Ci0gICAgQVNT
RVJUKHJlbmRlclBhc3NTdGFydGVkQnV0RW1wdHkoKSk7Ci0gICAgbUN1cnJlbnRXcml0aW5nTm9k
ZS0+Y2xlYXJSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRleCwgZGVwdGgp
OwotfQotCi1BTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6Y2xlYXJSZW5k
ZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnQoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBzdGVuY2lsKQotewotICAgIEFTU0VSVChyZW5kZXJQYXNzU3RhcnRl
ZEJ1dEVtcHR5KCkpOwotICAgIG1DdXJyZW50V3JpdGluZ05vZGUtPmNsZWFyUmVuZGVyUGFzc1N0
ZW5jaWxBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRleCwgc3RlbmNpbCk7Ci19Ci0KLUFOR0xFX0lO
TElORSB2b2lkIENvbW1hbmRHcmFwaFJlc291cmNlOjppbnZhbGlkYXRlUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4KQotewotICAgIEFTU0VSVChoYXNTdGFy
dGVkUmVuZGVyUGFzcygpKTsKLSAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5pbnZhbGlkYXRlUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudChhdHRhY2htZW50SW5kZXgpOwotfQotCi1BTkdMRV9JTkxJ
TkUgdm9pZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6aW52YWxpZGF0ZVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnQoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCkKLXsKLSAgICBBU1NFUlQoaGFzU3RhcnRl
ZFJlbmRlclBhc3MoKSk7Ci0gICAgbUN1cnJlbnRXcml0aW5nTm9kZS0+aW52YWxpZGF0ZVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnQoYXR0YWNobWVudEluZGV4KTsKLX0KLQotQU5HTEVfSU5MSU5F
IHZvaWQgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OmludmFsaWRhdGVSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnQoCi0gICAgc2l6ZV90IGF0dGFjaG1lbnRJbmRleCkKLXsKLSAgICBBU1NFUlQoaGFz
U3RhcnRlZFJlbmRlclBhc3MoKSk7Ci0gICAgbUN1cnJlbnRXcml0aW5nTm9kZS0+aW52YWxpZGF0
ZVJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudChhdHRhY2htZW50SW5kZXgpOwotfQotCi1BTkdM
RV9JTkxJTkUgY29uc3QgZ2w6OlJlY3RhbmdsZSAmQ29tbWFuZEdyYXBoUmVzb3VyY2U6OmdldFJl
bmRlclBhc3NSZW5kZXJBcmVhKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaGFzU3RhcnRlZFJlbmRl
clBhc3MoKSk7Ci0gICAgcmV0dXJuIG1DdXJyZW50V3JpdGluZ05vZGUtPmdldFJlbmRlclBhc3NS
ZW5kZXJBcmVhKCk7Ci19Ci0KLUFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRHcmFwaFJlc291cmNl
OjphZGRHbG9iYWxNZW1vcnlCYXJyaWVyKFZrRmxhZ3Mgc3JjQWNjZXNzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtGbGFn
cyBkc3RBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzdGFnZXMpCi17Ci0gICAg
QVNTRVJUKG1DdXJyZW50V3JpdGluZ05vZGUpOwotICAgIG1DdXJyZW50V3JpdGluZ05vZGUtPmFk
ZEdsb2JhbE1lbW9yeUJhcnJpZXIoc3JjQWNjZXNzLCBkc3RBY2Nlc3MsIHN0YWdlcyk7Ci19Ci0K
LUFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRHcmFwaFJlc291cmNlOjpzZXRBY3RpdmVUcmFuc2Zv
cm1GZWVkYmFja0luZm8oCi0gICAgc2l6ZV90IHZhbGlkQnVmZmVyQ291bnQsCi0gICAgY29uc3Qg
VmtCdWZmZXIgKmNvdW50ZXJCdWZmZXJzLAotICAgIGJvb2wgcmViaW5kQnVmZmVyKQotewotICAg
IEFTU0VSVChtQ3VycmVudFdyaXRpbmdOb2RlKTsKLSAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5z
ZXRBY3RpdmVUcmFuc2Zvcm1GZWVkYmFja0luZm8odmFsaWRCdWZmZXJDb3VudCwgY291bnRlckJ1
ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYmluZEJ1ZmZlcik7Ci19Ci0KLUFOR0xFX0lOTElORSBib29sIENvbW1hbmRHcmFw
aFJlc291cmNlOjpoYXNDaGlsZGxlc3NXcml0aW5nTm9kZSgpIGNvbnN0Ci17Ci0gICAgLy8gTm90
ZTogY3VycmVudGx5LCB3ZSBkb24ndCBoYXZlIGEgcmVzb3VyY2UgdGhhdCBjYW4gaXNzdWUgYm90
aCBnZW5lcmljIGFuZCBzcGVjaWFsCi0gICAgLy8gY29tbWFuZHMuICBXZSBkb24ndCBjcmVhdGUg
cmVhZC93cml0ZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBtaXhlZCBnZW5lcmljL3NwZWNpYWwKLSAg
ICAvLyByZXNvdXJjZXMgZWl0aGVyLiAgQXMgc3VjaCwgd2UgZXhwZWN0IHRoZSBmdW5jdGlvbiB0
byBhbHdheXMgYmUgZ2VuZXJpYyBoZXJlLiAgSWYgc3VjaCBhCi0gICAgLy8gcmVzb3VyY2UgaXMg
YWRkZWQgaW4gdGhlIGZ1dHVyZSwgdGhpcyBjYW4gYWRkIGEgY2hlY2sgZm9yIGZ1bmN0aW9uID09
IGdlbmVyaWMgYW5kIGZhaWwgaWYKLSAgICAvLyBmYWxzZS4KLSAgICBBU1NFUlQobUN1cnJlbnRX
cml0aW5nTm9kZSA9PSBudWxscHRyIHx8Ci0gICAgICAgICAgIG1DdXJyZW50V3JpdGluZ05vZGUt
PmdldEZ1bmN0aW9uKCkgPT0gQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpHZW5lcmljKTsKLSAg
ICByZXR1cm4gKG1DdXJyZW50V3JpdGluZ05vZGUgIT0gbnVsbHB0ciAmJiAhbUN1cnJlbnRXcml0
aW5nTm9kZS0+aGFzQ2hpbGRyZW4oKSk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgdmsKLX0gIC8vIG5h
bWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9DT01NQU5E
X0dSQVBIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5jcHAKaW5kZXggZTgyMGY0
NzhhMGY2ODhhMDBlMzhhZTk2Y2ViMjE1ODBlNzk2NzYyOC4uMmU1YmYyMzA2YjYxOTM0OGM4YjY2
YTQ3MTYyMTRlMzc3ZDc3MDE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNw
cApAQCAtMTksNyArMTksNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29tcGlsZXJWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9GZW5jZU5WVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVi
dWZmZXJWay5oIgpAQCAtNDEsMTEgKzQwLDE3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS90cmFj
ZS5oIgogCisjaW5jbHVkZSA8aW9zdHJlYW0+CisKIG5hbWVzcGFjZSByeAogewogCiBuYW1lc3Bh
Y2UKIHsKKy8vIFRoZSB2YWx1ZSB0byBhc3NpZ24gYW4gYWxwaGEgY2hhbm5lbCB0aGF0J3MgZW11
bGF0ZWQuICBUaGUgdHlwZSBpcyB1bnNpZ25lZCBpbnQsIHRob3VnaCBpdCB3aWxsCisvLyBhdXRv
bWF0aWNhbGx5IGNvbnZlcnQgdG8gdGhlIGFjdHVhbCBkYXRhIHR5cGUuCitjb25zdGV4cHIgdW5z
aWduZWQgaW50IGtFbXVsYXRlZEFscGhhVmFsdWUgPSAxOworCiAvLyBGb3Igc2hhZGVyIHVuaWZv
cm1zIHN1Y2ggYXMgZ2xfRGVwdGhSYW5nZSBhbmQgdGhlIHZpZXdwb3J0IHNpemUuCiBzdHJ1Y3Qg
R3JhcGhpY3NEcml2ZXJVbmlmb3JtcwogewpAQCAtNzAsNiArNzUsMTAgQEAgc3RydWN0IEdyYXBo
aWNzRHJpdmVyVW5pZm9ybXMKIAogICAgIC8vIFdlJ2xsIHVzZSB4LCB5LCB6IGZvciBuZWFyIC8g
ZmFyIC8gZGlmZiByZXNwZWN0aXZlbHkuCiAgICAgc3RkOjphcnJheTxmbG9hdCwgND4gZGVwdGhS
YW5nZTsKKworICAgIC8vIFVzZWQgdG8gcHJlLXJvdGF0ZSBnbF9Qb3NpdGlvbiBmb3Igc3dhcGNo
YWluIGltYWdlcyBvbiBBbmRyb2lkIChhIG1hdDIsIHdoaWNoIGlzIHBhZGRlZCB0bworICAgIC8v
IHRoZSBzaXplIG9mIHR3byB2ZWM0J3MpLgorICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDg+IHByZVJv
dGF0aW9uOwogfTsKIAogc3RydWN0IENvbXB1dGVEcml2ZXJVbmlmb3JtcwpAQCAtMTAzLDExICsx
MTIsOCBAQCBjb25zdGV4cHIgc2l6ZV90IGtEcml2ZXJVbmlmb3Jtc0FsbG9jYXRvclBhZ2VTaXpl
ID0gNCAqIDEwMjQ7CiAKIGNvbnN0ZXhwciBzaXplX3Qga0luRmxpZ2h0Q29tbWFuZHNMaW1pdCA9
IDEwMHU7CiAKLS8vIEluaXRpYWxseSBkdW1waW5nIHRoZSBjb21tYW5kIGdyYXBocyBpcyBkaXNh
YmxlZC4KLWNvbnN0ZXhwciBib29sIGtFbmFibGVDb21tYW5kR3JhcGhEaWFnbm9zdGljcyA9IGZh
bHNlOwotCi0vLyBVc2VkIGFzIGZhbGxiYWNrIHNlcmlhbCBmb3IgbnVsbCBzYW1wbGVyIG9iamVj
dHMKLWNvbnN0ZXhwciBTZXJpYWwga1plcm9TZXJpYWwgPSBTZXJpYWwoKTsKKy8vIER1bXBpbmcg
dGhlIGNvbW1hbmQgc3RyZWFtIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCitjb25zdGV4cHIgYm9v
bCBrRW5hYmxlQ29tbWFuZFN0cmVhbURpYWdub3N0aWNzID0gZmFsc2U7CiAKIHZvaWQgSW5pdGlh
bGl6ZVN1Ym1pdEluZm8oVmtTdWJtaXRJbmZvICpzdWJtaXRJbmZvLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgJmNvbW1hbmRCdWZmZXIs
CkBAIC0xMjQsOCArMTMwLDcgQEAgdm9pZCBJbml0aWFsaXplU3VibWl0SW5mbyhWa1N1Ym1pdElu
Zm8gKnN1Ym1pdEluZm8sCiAKICAgICBpZiAod2FpdFNlbWFwaG9yZVN0YWdlTWFza3MtPnNpemUo
KSA8IHdhaXRTZW1hcGhvcmVzLnNpemUoKSkKICAgICB7Ci0gICAgICAgIHdhaXRTZW1hcGhvcmVT
dGFnZU1hc2tzLT5yZXNpemUod2FpdFNlbWFwaG9yZXMuc2l6ZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9QSVBF
X0JJVCk7CisgICAgICAgIHdhaXRTZW1hcGhvcmVTdGFnZU1hc2tzLT5yZXNpemUod2FpdFNlbWFw
aG9yZXMuc2l6ZSgpLCBWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklUKTsKICAgICB9
CiAKICAgICBzdWJtaXRJbmZvLT53YWl0U2VtYXBob3JlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4od2FpdFNlbWFwaG9yZXMuc2l6ZSgpKTsKQEAgLTE3NCw2ICsxNzksMTAxIEBAIHZvaWQg
QXBwbHlTYW1wbGVDb3ZlcmFnZShjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUsCiAgICAgKm1hc2tP
dXQgJj0gY292ZXJhZ2VNYXNrOwogfQogCitjaGFyIEdldExvYWRPcFNob3J0aGFuZCh1aW50MzJf
dCBsb2FkT3ApCit7CisgICAgc3dpdGNoIChsb2FkT3ApCisgICAgeworICAgICAgICBjYXNlIFZL
X0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVBUjoKKyAgICAgICAgICAgIHJldHVybiAnQyc7CisgICAg
ICAgIGNhc2UgVktfQVRUQUNITUVOVF9MT0FEX09QX0xPQUQ6CisgICAgICAgICAgICByZXR1cm4g
J0wnOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICdEJzsKKyAgICB9Cit9
CisKK2NoYXIgR2V0U3RvcmVPcFNob3J0aGFuZCh1aW50MzJfdCBzdG9yZU9wKQoreworICAgIHN3
aXRjaCAoc3RvcmVPcCkKKyAgICB7CisgICAgICAgIGNhc2UgVktfQVRUQUNITUVOVF9TVE9SRV9P
UF9TVE9SRToKKyAgICAgICAgICAgIHJldHVybiAnUyc7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gJ0QnOworICAgIH0KK30KKworLy8gV2hlbiBhbiBBbmRyb2lkIHN1cmZh
Y2UgaXMgcm90YXRlZCBkaWZmZXJlbnRseSB0aGFuIHRoZSBkZXZpY2UncyBuYXRpdmUgb3JpZW50
YXRpb24sIEFOR0xFIG11c3QKKy8vIHJvdGF0ZSBnbF9Qb3NpdGlvbiBpbiB0aGUgdmVydGV4IHNo
YWRlci4gIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSByb3RhdGlvbiBtYXRyaWNlcyB1c2VkLgorLy8K
Ky8vIE5vdGU6IHRoZXNlIGFyZSBtYXQyJ3MgdGhhdCBhcmUgYXBwcm9wcmlhdGVseSBwYWRkZWQg
KDQgZmxvYXRzIHBlciByb3cpLgordXNpbmcgUHJlUm90YXRpb25NYXRyaXhWYWx1ZXMgPSBzdGQ6
OmFycmF5PGZsb2F0LCA4PjsKK2NvbnN0ZXhwciBhbmdsZTo6UGFja2VkRW51bU1hcDxyeDo6U3Vy
ZmFjZVJvdGF0aW9uVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVSb3Rh
dGlvbk1hdHJpeFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
RW51bVNpemU8cng6OlN1cmZhY2VSb3RhdGlvblR5cGU+KCk+CisgICAga1ByZVJvdGF0aW9uTWF0
cmljZXMgPSB7CisgICAgICAgIHt7cng6OlN1cmZhY2VSb3RhdGlvblR5cGU6OklkZW50aXR5LCB7
ezEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGZ9fX0sCisgICAg
ICAgICB7cng6OlN1cmZhY2VSb3RhdGlvblR5cGU6OlJvdGF0ZWQ5MERlZ3JlZXMsCisgICAgICAg
ICAge3swLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZn19fSwK
KyAgICAgICAgIHtyeDo6U3VyZmFjZVJvdGF0aW9uVHlwZTo6Um90YXRlZDE4MERlZ3JlZXMsCisg
ICAgICAgICAge3stMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgLTEuMGYsIDAuMGYsIDAu
MGZ9fX0sCisgICAgICAgICB7cng6OlN1cmZhY2VSb3RhdGlvblR5cGU6OlJvdGF0ZWQyNzBEZWdy
ZWVzLAorICAgICAgICAgIHt7MC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgLTEuMGYsIDAuMGYsIDAu
MGYsIDAuMGZ9fX0sCisgICAgICAgICB7cng6OlN1cmZhY2VSb3RhdGlvblR5cGU6OkZsaXBwZWRJ
ZGVudGl0eSwKKyAgICAgICAgICB7ezEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIC0xLjBm
LCAwLjBmLCAwLjBmfX19LAorICAgICAgICAge3J4OjpTdXJmYWNlUm90YXRpb25UeXBlOjpGbGlw
cGVkUm90YXRlZDkwRGVncmVlcywKKyAgICAgICAgICB7ezAuMGYsIC0xLjBmLCAwLjBmLCAwLjBm
LCAtMS4wZiwgMC4wZiwgMC4wZiwgMC4wZn19fSwKKyAgICAgICAgIHtyeDo6U3VyZmFjZVJvdGF0
aW9uVHlwZTo6RmxpcHBlZFJvdGF0ZWQxODBEZWdyZWVzLAorICAgICAgICAgIHt7LTEuMGYsIDAu
MGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGZ9fX0sCisgICAgICAgICB7cng6
OlN1cmZhY2VSb3RhdGlvblR5cGU6OkZsaXBwZWRSb3RhdGVkMjcwRGVncmVlcywKKyAgICAgICAg
ICB7ezAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGZ9fX19fTsK
KworYm9vbCBJc1JvdGF0ZWRBc3BlY3RSYXRpbyhTdXJmYWNlUm90YXRpb25UeXBlIHJvdGF0aW9u
KQoreworICAgIHJldHVybiAoKHJvdGF0aW9uID09IFN1cmZhY2VSb3RhdGlvblR5cGU6OlJvdGF0
ZWQ5MERlZ3JlZXMpIHx8CisgICAgICAgICAgICAocm90YXRpb24gPT0gU3VyZmFjZVJvdGF0aW9u
VHlwZTo6Um90YXRlZDI3MERlZ3JlZXMpIHx8CisgICAgICAgICAgICAocm90YXRpb24gPT0gU3Vy
ZmFjZVJvdGF0aW9uVHlwZTo6RmxpcHBlZFJvdGF0ZWQ5MERlZ3JlZXMpIHx8CisgICAgICAgICAg
ICAocm90YXRpb24gPT0gU3VyZmFjZVJvdGF0aW9uVHlwZTo6RmxpcHBlZFJvdGF0ZWQyNzBEZWdy
ZWVzKSk7Cit9CisKK1N1cmZhY2VSb3RhdGlvblR5cGUgRGV0ZXJtaW5lU3VyZmFjZVJvdGF0aW9u
KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXaW5kb3dTdXJmYWNlVmsgKndpbmRvd1N1cmZhY2UpCit7Cisg
ICAgaWYgKHdpbmRvd1N1cmZhY2UgJiYgZnJhbWVidWZmZXItPmlzRGVmYXVsdCgpKQorICAgIHsK
KyAgICAgICAgc3dpdGNoICh3aW5kb3dTdXJmYWNlLT5nZXRQcmVUcmFuc2Zvcm0oKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY2FzZSBWS19TVVJGQUNFX1RSQU5TRk9STV9JREVOVElUWV9CSVRf
S0hSOgorICAgICAgICAgICAgICAgIC8vIERvIG5vdCByb3RhdGUgZ2xfUG9zaXRpb24gKHN1cmZh
Y2UgbWF0Y2hlcyB0aGUgZGV2aWNlJ3Mgb3JpZW50YXRpb24pOgorICAgICAgICAgICAgICAgIHJl
dHVybiBTdXJmYWNlUm90YXRpb25UeXBlOjpJZGVudGl0eTsKKyAgICAgICAgICAgIGNhc2UgVktf
U1VSRkFDRV9UUkFOU0ZPUk1fUk9UQVRFXzkwX0JJVF9LSFI6CisgICAgICAgICAgICAgICAgLy8g
Um90YXRlIGdsX1Bvc2l0aW9uIDkwIGRlZ3JlZXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN1
cmZhY2VSb3RhdGlvblR5cGU6OlJvdGF0ZWQ5MERlZ3JlZXM7CisgICAgICAgICAgICBjYXNlIFZL
X1NVUkZBQ0VfVFJBTlNGT1JNX1JPVEFURV8xODBfQklUX0tIUjoKKyAgICAgICAgICAgICAgICAv
LyBSb3RhdGUgZ2xfUG9zaXRpb24gMTgwIGRlZ3JlZXM6CisgICAgICAgICAgICAgICAgcmV0dXJu
IFN1cmZhY2VSb3RhdGlvblR5cGU6OlJvdGF0ZWQxODBEZWdyZWVzOworICAgICAgICAgICAgY2Fz
ZSBWS19TVVJGQUNFX1RSQU5TRk9STV9ST1RBVEVfMjcwX0JJVF9LSFI6CisgICAgICAgICAgICAg
ICAgLy8gUm90YXRlIGdsX1Bvc2l0aW9uIDI3MCBkZWdyZWVzOgorICAgICAgICAgICAgICAgIHJl
dHVybiBTdXJmYWNlUm90YXRpb25UeXBlOjpSb3RhdGVkMTgwRGVncmVlczsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gU3VyZmFjZVJvdGF0aW9uVHlwZTo6SWRlbnRpdHk7CisgICAgICAgIH0KKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gRG8gbm90IHJvdGF0ZSBnbF9Qb3NpdGlvbiAo
b2Zmc2NyZWVuIGZyYW1lYnVmZmVyKToKKyAgICAgICAgcmV0dXJuIFN1cmZhY2VSb3RhdGlvblR5
cGU6OklkZW50aXR5OworICAgIH0KK30KKworLy8gU2hvdWxkIG5vdCBnZW5lcmF0ZSBhIGNvcHkg
d2l0aCBtb2Rlcm4gQysrLgorRXZlbnROYW1lIEdldFRyYWNlRXZlbnROYW1lKGNvbnN0IGNoYXIg
KnRpdGxlLCB1aW50MzJfdCBjb3VudGVyKQoreworICAgIEV2ZW50TmFtZSBidWY7CisgICAgc25w
cmludGYoYnVmLmRhdGEoKSwga01heEdwdUV2ZW50TmFtZUxlbiAtIDEsICIlcyAldSIsIHRpdGxl
LCBjb3VudGVyKTsKKyAgICByZXR1cm4gYnVmOworfQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQogCiBDb250ZXh0Vms6OkRyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldDo6RHJpdmVyVW5pZm9y
bXNEZXNjcmlwdG9yU2V0KCkKQEAgLTQ0Miw3ICs1NDIsNyBAQCBhbmdsZTo6UmVzdWx0IENvbW1h
bmRRdWV1ZTo6c3VibWl0RnJhbWUodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgYmF0Y2guZmVu
Y2UuY29weShkZXZpY2UsIHNoYXJlZEZlbmNlKTsKIAogICAgIEFOR0xFX1RSWSgKLSAgICAgICAg
cmVuZGVyZXItPnF1ZXVlU3VibWl0KGNvbnRleHQsIHByaW9yaXR5LCBzdWJtaXRJbmZvLCBiYXRj
aC5mZW5jZS5nZXQoKSwgJmJhdGNoLnNlcmlhbCkpOworICAgICAgICByZW5kZXJlci0+cXVldWVT
dWJtaXQoY29udGV4dCwgcHJpb3JpdHksIHN1Ym1pdEluZm8sICZiYXRjaC5mZW5jZS5nZXQoKSwg
JmJhdGNoLnNlcmlhbCkpOwogCiAgICAgaWYgKCFjdXJyZW50R2FyYmFnZS0+ZW1wdHkoKSkKICAg
ICB7CkBAIC00NTUsMTQgKzU1NSwxNiBAQCBhbmdsZTo6UmVzdWx0IENvbW1hbmRRdWV1ZTo6c3Vi
bWl0RnJhbWUodms6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICBtSW5GbGlnaHRDb21tYW5kcy5l
bXBsYWNlX2JhY2soc2NvcGVkQmF0Y2gucmVsZWFzZSgpKTsKIAotICAgIC8vIENQVSBzaG91bGQg
YmUgdGhyb3R0bGVkIHRvIGF2b2lkIG1JbkZsaWdodENvbW1hbmRzIGZyb20gZ3Jvd2luZyB0b28g
ZmFzdC4gIFRoYXQgaXMgZG9uZQotICAgIC8vIG9uIHN3YXAoKSB0aG91Z2gsIGFuZCB0aGVyZSBj
b3VsZCBiZSBtdWx0aXBsZSBzdWJtaXNzaW9ucyBpbiBiZXR3ZWVuICh0aHJvdWdoIGdsRmx1c2go
KQotICAgIC8vIGNhbGxzKSwgc28gdGhlIGxpbWl0IGlzIGxhcmdlciB0aGFuIHRoZSBleHBlY3Rl
ZCBudW1iZXIgb2YgaW1hZ2VzLiAgVGhlCi0gICAgLy8gSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRh
QmVuY2htYXJrIHBlcmYgdGVzdCBmb3IgZXhhbXBsZSBpc3N1ZXMgYSBsYXJnZSBudW1iZXIgb2Yg
Zmx1c2hlcy4KLSAgICBBU1NFUlQobUluRmxpZ2h0Q29tbWFuZHMuc2l6ZSgpIDw9IGtJbkZsaWdo
dENvbW1hbmRzTGltaXQpOwotCiAgICAgQU5HTEVfVFJZKGNoZWNrQ29tcGxldGVkQ29tbWFuZHMo
Y29udGV4dCkpOwogCisgICAgLy8gQ1BVIHNob3VsZCBiZSB0aHJvdHRsZWQgdG8gYXZvaWQgbUlu
RmxpZ2h0Q29tbWFuZHMgZnJvbSBncm93aW5nIHRvbyBmYXN0LiBJbXBvcnRhbnQgZm9yCisgICAg
Ly8gb2ZmLXNjcmVlbiBzY2VuYXJpb3MuCisgICAgd2hpbGUgKG1JbkZsaWdodENvbW1hbmRzLnNp
emUoKSA+IGtJbkZsaWdodENvbW1hbmRzTGltaXQpCisgICAgeworICAgICAgICBBTkdMRV9UUlko
ZmluaXNoVG9TZXJpYWwoY29udGV4dCwgbUluRmxpZ2h0Q29tbWFuZHNbMF0uc2VyaWFsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPmdldE1heEZlbmNlV2FpdFRp
bWVOcygpKSk7CisgICAgfQorCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
fQogCkBAIC00ODYsMTMgKzU4OCwxNyBAQCBlZ2w6OkNvbnRleHRQcmlvcml0eSBHZXRDb250ZXh0
UHJpb3JpdHkoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSkKIENvbnRleHRWazo6Q29udGV4dFZrKGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGdsOjpFcnJvclNldCAqZXJyb3JTZXQsIFJlbmRlcmVyVmsg
KnJlbmRlcmVyKQogICAgIDogQ29udGV4dEltcGwoc3RhdGUsIGVycm9yU2V0KSwKICAgICAgIHZr
OjpDb250ZXh0KHJlbmRlcmVyKSwKKyAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcihudWxs
cHRyKSwKICAgICAgIG1DdXJyZW50R3JhcGhpY3NQaXBlbGluZShudWxscHRyKSwKICAgICAgIG1D
dXJyZW50Q29tcHV0ZVBpcGVsaW5lKG51bGxwdHIpLAogICAgICAgbUN1cnJlbnREcmF3TW9kZShn
bDo6UHJpbWl0aXZlTW9kZTo6SW52YWxpZEVudW0pLAogICAgICAgbUN1cnJlbnRXaW5kb3dTdXJm
YWNlKG51bGxwdHIpLAorICAgICAgbUN1cnJlbnRSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlcihTdXJm
YWNlUm90YXRpb25UeXBlOjpJZGVudGl0eSksCisgICAgICBtQ3VycmVudFJvdGF0aW9uUmVhZEZy
YW1lYnVmZmVyKFN1cmZhY2VSb3RhdGlvblR5cGU6OklkZW50aXR5KSwKICAgICAgIG1WZXJ0ZXhB
cnJheShudWxscHRyKSwKICAgICAgIG1EcmF3RnJhbWVidWZmZXIobnVsbHB0ciksCiAgICAgICBt
UHJvZ3JhbShudWxscHRyKSwKKyAgICAgIG1FeGVjdXRhYmxlKG51bGxwdHIpLAogICAgICAgbUxh
c3RJbmRleEJ1ZmZlck9mZnNldCgwKSwKICAgICAgIG1DdXJyZW50RHJhd0VsZW1lbnRzVHlwZShn
bDo6RHJhd0VsZW1lbnRzVHlwZTo6SW52YWxpZEVudW0pLAogICAgICAgbVhmYkJhc2VWZXJ0ZXgo
MCksCkBAIC01MDMsMTAgKzYwOSwxMiBAQCBDb250ZXh0Vms6OkNvbnRleHRWayhjb25zdCBnbDo6
U3RhdGUgJnN0YXRlLCBnbDo6RXJyb3JTZXQgKmVycm9yU2V0LCBSZW5kZXJlclZrCiAgICAgICBt
RW11bGF0ZVNlYW1mdWxDdWJlTWFwU2FtcGxpbmcoZmFsc2UpLAogICAgICAgbVVzZU9sZFJld3Jp
dGVTdHJ1Y3RTYW1wbGVycyhmYWxzZSksCiAgICAgICBtUG9vbEFsbG9jYXRvcihrRGVmYXVsdFBv
b2xBbGxvY2F0b3JQYWdlU2l6ZSwgMSksCi0gICAgICBtQ29tbWFuZEdyYXBoKGtFbmFibGVDb21t
YW5kR3JhcGhEaWFnbm9zdGljcywgJm1Qb29sQWxsb2NhdG9yKSwKKyAgICAgIG1IYXNQcmltYXJ5
Q29tbWFuZHMoZmFsc2UpLAogICAgICAgbUdwdUV2ZW50c0VuYWJsZWQoZmFsc2UpLAogICAgICAg
bUdwdUNsb2NrU3luY3tzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpfSwKICAgICAgIG1HcHVFdmVudFRpbWVzdGFtcE9y
aWdpbigwKSwKKyAgICAgIG1QcmltYXJ5QnVmZmVyQ291bnRlcigwKSwKKyAgICAgIG1SZW5kZXJQ
YXNzQ291bnRlcigwKSwKICAgICAgIG1Db250ZXh0UHJpb3JpdHkocmVuZGVyZXItPmdldERyaXZl
clByaW9yaXR5KEdldENvbnRleHRQcmlvcml0eShzdGF0ZSkpKQogewogICAgIEFOR0xFX1RSQUNF
X0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIkNvbnRleHRWazo6Q29udGV4dFZrIik7CkBAIC02NjQsNiAr
NzcyLDkgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmluaXRpYWxpemUoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6
OmtEZWZhdWx0VGltZXN0YW1wUXVlcnlQb29sU2l6ZSkpOwogICAgIH0KIAorICAgIC8vIEluaXQg
Z2xlcyB0byB2dWxrYW4gaW5kZXggdHlwZSBtYXAKKyAgICBpbml0SW5kZXhUeXBlTWFwKCk7CisK
ICAgICAvLyBJbml0IGRyaXZlciB1bmlmb3JtcyBhbmQgZ2V0IHRoZSBkZXNjcmlwdG9yIHNldCBs
YXlvdXRzLgogICAgIGNvbnN0ZXhwciBhbmdsZTo6UGFja2VkRW51bU1hcDxQaXBlbGluZVR5cGUs
IFZrU2hhZGVyU3RhZ2VGbGFncz4ga1BpcGVsaW5lU3RhZ2VzID0gewogICAgICAgICB7UGlwZWxp
bmVUeXBlOjpHcmFwaGljcywgVktfU0hBREVSX1NUQUdFX0FMTF9HUkFQSElDU30sCkBAIC03MDEs
NiArODEyLDE2IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjppbml0aWFsaXplKCkKICAgICBt
R3B1RXZlbnRzRW5hYmxlZCA9IGdwdUV2ZW50c0VuYWJsZWQgJiYgKmdwdUV2ZW50c0VuYWJsZWQ7
CiAjZW5kaWYKIAorICAgIG1FbXVsYXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZyA9IHNob3VsZEVt
dWxhdGVTZWFtZnVsQ3ViZU1hcFNhbXBsaW5nKCk7CisKKyAgICBtVXNlT2xkUmV3cml0ZVN0cnVj
dFNhbXBsZXJzID0gc2hvdWxkVXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzKCk7CisKKyAgICAv
LyBQdXNoIGEgc2NvcGUgaW4gdGhlIHBvb2wgYWxsb2NhdG9yIHNvIHdlIGNhbiBlYXNpbHkgcmVp
bml0aWFsaXplIG9uIGZsdXNoLgorICAgIG1Qb29sQWxsb2NhdG9yLnB1c2goKTsKKyAgICBtT3V0
c2lkZVJlbmRlclBhc3NDb21tYW5kcy5nZXRDb21tYW5kQnVmZmVyKCkuaW5pdGlhbGl6ZSgmbVBv
b2xBbGxvY2F0b3IpOworICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuaW5pdGlhbGl6ZSgmbVBvb2xB
bGxvY2F0b3IpOworICAgIEFOR0xFX1RSWShzdGFydFByaW1hcnlDb21tYW5kQnVmZmVyKCkpOwor
CiAgICAgaWYgKG1HcHVFdmVudHNFbmFibGVkKQogICAgIHsKICAgICAgICAgLy8gR1BVIGV2ZW50
cyBzaG91bGQgb25seSBiZSBhdmFpbGFibGUgaWYgdGltZXN0YW1wIHF1ZXJpZXMgYXJlIGF2YWls
YWJsZS4KQEAgLTcwOSwxNyArODMwLDExIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjppbml0
aWFsaXplKCkKICAgICAgICAgQU5HTEVfVFJZKG1HcHVFdmVudFF1ZXJ5UG9vbC5pbml0KHRoaXMs
IFZLX1FVRVJZX1RZUEVfVElNRVNUQU1QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdms6OmtEZWZhdWx0VGltZXN0YW1wUXVlcnlQb29sU2l6ZSkpOwogICAgICAg
ICBBTkdMRV9UUlkoc3luY2hyb25pemVDcHVHcHVUaW1lKCkpOwotICAgIH0KIAotICAgIG1FbXVs
YXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZyA9IHNob3VsZEVtdWxhdGVTZWFtZnVsQ3ViZU1hcFNh
bXBsaW5nKCk7Ci0KLSAgICBtVXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzID0gc2hvdWxkVXNl
T2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzKCk7CisgICAgICAgIG1QcmltYXJ5QnVmZmVyQ291bnRl
cisrOwogCi0gICAgaWYgKCFjb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewotICAgICAgICBt
T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5nZXRDb21tYW5kQnVmZmVyKCkuaW5pdGlhbGl6ZSgm
bVBvb2xBbGxvY2F0b3IpOwotICAgICAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLmluaXRpYWxpemUo
Jm1Qb29sQWxsb2NhdG9yKTsKLSAgICAgICAgQU5HTEVfVFJZKHN0YXJ0UHJpbWFyeUNvbW1hbmRC
dWZmZXIoKSk7CisgICAgICAgIEV2ZW50TmFtZSBldmVudE5hbWUgPSBHZXRUcmFjZUV2ZW50TmFt
ZSgiUHJpbWFyeSIsIG1QcmltYXJ5QnVmZmVyQ291bnRlcik7CisgICAgICAgIEFOR0xFX1RSWSh0
cmFjZUdwdUV2ZW50KCZtUHJpbWFyeUNvbW1hbmRzLCBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwg
ZXZlbnROYW1lKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OwpAQCAtNzI3LDE0ICs4NDIsMTUgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmluaXRpYWxp
emUoKQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3RhcnRQcmltYXJ5Q29tbWFuZEJ1ZmZl
cigpCiB7Ci0gICAgQVNTRVJUKCFjb21tYW5kR3JhcGhFbmFibGVkKCkpOwogICAgIEFOR0xFX1RS
WShtQ29tbWFuZFF1ZXVlLmFsbG9jYXRlUHJpbWFyeUNvbW1hbmRCdWZmZXIodGhpcywgbUNvbW1h
bmRQb29sLCAmbVByaW1hcnlDb21tYW5kcykpOwogCiAgICAgVmtDb21tYW5kQnVmZmVyQmVnaW5J
bmZvIGJlZ2luSW5mbyA9IHt9OwogICAgIGJlZ2luSW5mby5zVHlwZSAgICAgICAgICAgICAgICAg
ICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9DT01NQU5EX0JVRkZFUl9CRUdJTl9JTkZPOwotICAgIGJl
Z2luSW5mby5mbGFncyAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIGJlZ2luSW5mby5mbGFn
cyAgICAgICAgICAgICAgICAgICAgPSBWS19DT01NQU5EX0JVRkZFUl9VU0FHRV9PTkVfVElNRV9T
VUJNSVRfQklUOwogICAgIGJlZ2luSW5mby5wSW5oZXJpdGFuY2VJbmZvICAgICAgICAgPSBudWxs
cHRyOwogICAgIEFOR0xFX1ZLX1RSWSh0aGlzLCBtUHJpbWFyeUNvbW1hbmRzLmJlZ2luKGJlZ2lu
SW5mbykpOworCisgICAgbUhhc1ByaW1hcnlDb21tYW5kcyA9IGZhbHNlOwogICAgIHJldHVybiBh
bmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApAQCAtNzg2LDEyICs5MDIsOCBAQCBhbmdsZTo6
UmVzdWx0IENvbnRleHRWazo6c2V0dXBEcmF3KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICBtR3JhcGhpY3NEaXJ0eUJpdHMgfD0gbU5ld0dyYXBoaWNzQ29tbWFuZEJ1ZmZlckRp
cnR5Qml0czsKIAogICAgICAgICBnbDo6UmVjdGFuZ2xlIHNjaXNzb3JlZFJlbmRlckFyZWEgPSBt
RHJhd0ZyYW1lYnVmZmVyLT5nZXRTY2lzc29yZWRSZW5kZXJBcmVhKHRoaXMpOwotICAgICAgICBp
ZiAoIW1EcmF3RnJhbWVidWZmZXItPmFwcGVuZFRvU3RhcnRlZFJlbmRlclBhc3MoJm1SZXNvdXJj
ZVVzZUxpc3QsIHNjaXNzb3JlZFJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVJlbmRlclBhc3NDb21tYW5kQnVmZmVy
KSkKLSAgICAgICAgewotICAgICAgICAgICAgQU5HTEVfVFJZKG1EcmF3RnJhbWVidWZmZXItPnN0
YXJ0TmV3UmVuZGVyUGFzcyh0aGlzLCBzY2lzc29yZWRSZW5kZXJBcmVhLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVJlbmRlclBh
c3NDb21tYW5kQnVmZmVyKSk7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKG1EcmF3RnJh
bWVidWZmZXItPnN0YXJ0TmV3UmVuZGVyUGFzcyh0aGlzLCBzY2lzc29yZWRSZW5kZXJBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt
UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIpKTsKICAgICB9CiAKICAgICAvLyBXZSBrZWVwIGEgbG9j
YWwgY29weSBvZiB0aGUgY29tbWFuZCBidWZmZXIuIEl0J3MgcG9zc2libGUgdGhhdCBzb21lIHN0
YXRlIGNoYW5nZXMgY291bGQKQEAgLTg2MywxMiArOTc1LDI2IEBAIGFuZ2xlOjpSZXN1bHQgQ29u
dGV4dFZrOjpzZXR1cEluZGV4ZWREcmF3KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgbUxhc3RJbmRleEJ1ZmZlck9mZnNldCA9IGluZGljZXM7CiAgICAgICAgICAgICBt
VmVydGV4QXJyYXktPnVwZGF0ZUN1cnJlbnRFbGVtZW50QXJyYXlCdWZmZXJPZmZzZXQobUxhc3RJ
bmRleEJ1ZmZlck9mZnNldCk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoaW5kZXhUeXBlID09
IGdsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNpZ25lZEJ5dGUgJiYKLSAgICAgICAgICAgIG1HcmFw
aGljc0RpcnR5Qml0c1tESVJUWV9CSVRfSU5ERVhfQlVGRkVSXSkKKyAgICAgICAgaWYgKHNob3Vs
ZENvbnZlcnRVaW50OFZrSW5kZXhUeXBlKGluZGV4VHlwZSkgJiYgbUdyYXBoaWNzRGlydHlCaXRz
W0RJUlRZX0JJVF9JTkRFWF9CVUZGRVJdKQogICAgICAgICB7Ci0gICAgICAgICAgICBCdWZmZXJW
ayAqYnVmZmVyVmsgPSB2azo6R2V0SW1wbChlbGVtZW50QXJyYXlCdWZmZXIpOwotICAgICAgICAg
ICAgQU5HTEVfVFJZKG1WZXJ0ZXhBcnJheS0+Y29udmVydEluZGV4QnVmZmVyR1BVKHRoaXMsIGJ1
ZmZlclZrLCBpbmRpY2VzKSk7CisgICAgICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAg
ICAgICAgPSB2azo6R2V0SW1wbChlbGVtZW50QXJyYXlCdWZmZXIpOworICAgICAgICAgICAgdms6
OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOworCisg
ICAgICAgICAgICBpZiAoYnVmZmVySGVscGVyLmlzSG9zdFZpc2libGUoKSAmJgorICAgICAgICAg
ICAgICAgICFidWZmZXJIZWxwZXIuaXNDdXJyZW50bHlJblVzZShnZXRMYXN0Q29tcGxldGVkUXVl
dWVTZXJpYWwoKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdWludDhfdCAqc3Jj
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkoYnVmZmVyVmstPm1hcEltcGwo
dGhpcywgcmVpbnRlcnByZXRfY2FzdDx2b2lkICoqPigmc3JjKSkpOworICAgICAgICAgICAgICAg
IHNyYyArPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgICAgICAg
ICAgICAgY29uc3Qgc2l6ZV90IGJ5dGVDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4oZWxlbWVu
dEFycmF5QnVmZmVyLT5nZXRTaXplKCkpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluZGljZXMpOworICAgICAg
ICAgICAgICAgIEFOR0xFX1RSWShtVmVydGV4QXJyYXktPmNvbnZlcnRJbmRleEJ1ZmZlckNQVSh0
aGlzLCBpbmRleFR5cGUsIGJ5dGVDb3VudCwgc3JjKSk7CisgICAgICAgICAgICAgICAgYnVmZmVy
VmstPnVubWFwSW1wbCh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkobVZlcnRleEFycmF5LT5jb252
ZXJ0SW5kZXhCdWZmZXJHUFUodGhpcywgYnVmZmVyVmssIGluZGljZXMpKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIApAQCAtODg3LDggKzEwMTMsOCBAQCBhbmdsZTo6UmVzdWx0
IENvbnRleHRWazo6c2V0dXBJbmRpcmVjdERyYXcoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgR0xzaXplaSB2ZXJ0ZXhDb3VudCAgID0gMDsKICAgICBHTHNpemVpIGluc3RhbmNlQ291
bnQgPSAxOwogCi0gICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpmcmFtZWJ1ZmZlciA9IG1EcmF3
RnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVyKCk7Ci0gICAgaW5kaXJlY3RCdWZmZXItPm9uUmVh
ZCh0aGlzLCBmcmFtZWJ1ZmZlciwgVktfQUNDRVNTX0lORElSRUNUX0NPTU1BTkRfUkVBRF9CSVQp
OworICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuYnVmZmVyUmVhZCgmbVJlc291cmNlVXNlTGlzdCwg
VktfQUNDRVNTX0lORElSRUNUX0NPTU1BTkRfUkVBRF9CSVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGlyZWN0QnVmZmVyKTsKIAogICAgIEFOR0xFX1RSWShzZXR1cERy
YXcoY29udGV4dCwgbW9kZSwgZmlyc3RWZXJ0ZXgsIHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5cGU6OkludmFsaWRF
bnVtLCBudWxscHRyLCBkaXJ0eUJpdE1hc2ssCkBAIC05OTcsNyArMTEyMywxMiBAQCBhbmdsZTo6
UmVzdWx0IENvbnRleHRWazo6c2V0dXBMaW5lTG9vcERyYXcoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c2V0dXBEaXNwYXRjaChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZrOjpDb21tYW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCkKIHsKLSAgICBBTkdMRV9UUlko
bURpc3BhdGNoZXIucmVjb3JkQ29tbWFuZHModGhpcywgY29tbWFuZEJ1ZmZlck91dCkpOworICAg
IC8vIHxzZXR1cERpc3BhdGNofCBhbmQgfHNldHVwRHJhd3wgYXJlIHNwZWNpYWwgaW4gdGhhdCB0
aGV5IGZsdXNoIGRpcnR5IGJpdHMuIFRoZXJlZm9yZSB0aGV5CisgICAgLy8gZG9uJ3QgdXNlIHRo
ZSBzYW1lIEFQSXMgdG8gcmVjb3JkIGNvbW1hbmRzIGFzIHRoZSBmdW5jdGlvbnMgb3V0c2lkZSBD
b250ZXh0VmsuCisgICAgLy8gVGhlIGZvbGxvd2luZyBlbnN1cmVzIHByaW9yIGNvbW1hbmRzIGFy
ZSBmbHVzaGVkIGJlZm9yZSB3ZSBzdGFydCBwcm9jZXNzaW5nIGRpcnR5IGJpdHMuCisgICAgZmx1
c2hPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzKCk7CisgICAgQU5HTEVfVFJZKGVuZFJlbmRlclBh
c3MoKSk7CisgICAgKmNvbW1hbmRCdWZmZXJPdXQgPSAmbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFu
ZHMuZ2V0Q29tbWFuZEJ1ZmZlcigpOwogCiAgICAgaWYgKG1Qcm9ncmFtLT5kaXJ0eVVuaWZvcm1z
KCkpCiAgICAgewpAQCAtMTA0MSwxMCArMTE3MiwxMCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRW
azo6aGFuZGxlRGlydHlHcmFwaGljc1BpcGVsaW5lKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICBjb25zdCB2azo6R3JhcGhpY3NQaXBlbGluZURlc2MgKmRlc2NQdHI7CiAKICAg
ICAgICAgLy8gRHJhdyBjYWxsIHNoYWRlciBwYXRjaGluZywgc2hhZGVyIGNvbXBpbGF0aW9uLCBh
bmQgcGlwZWxpbmUgY2FjaGUgcXVlcnkuCi0gICAgICAgIEFOR0xFX1RSWSgKLSAgICAgICAgICAg
IG1Qcm9ncmFtLT5nZXRHcmFwaGljc1BpcGVsaW5lKHRoaXMsIG1DdXJyZW50RHJhd01vZGUsICpt
R3JhcGhpY3NQaXBlbGluZURlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtUHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXROb25CdWlsdGluQXR0cmliTG9jYXRpb25z
TWFzaygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc2NQ
dHIsICZtQ3VycmVudEdyYXBoaWNzUGlwZWxpbmUpKTsKKyAgICAgICAgQU5HTEVfVFJZKG1Qcm9n
cmFtLT5nZXRHcmFwaGljc1BpcGVsaW5lKAorICAgICAgICAgICAgdGhpcywgbUN1cnJlbnREcmF3
TW9kZSwgKm1HcmFwaGljc1BpcGVsaW5lRGVzYywKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS0+Z2V0Tm9uQnVpbHRpbkF0dHJpYkxvY2F0aW9u
c01hc2soKSwKKyAgICAgICAgICAgICZkZXNjUHRyLCAmbUN1cnJlbnRHcmFwaGljc1BpcGVsaW5l
KSk7CiAgICAgICAgIG1HcmFwaGljc1BpcGVsaW5lVHJhbnNpdGlvbi5yZXNldCgpOwogICAgIH0K
ICAgICBlbHNlIGlmIChtR3JhcGhpY3NQaXBlbGluZVRyYW5zaXRpb24uYW55KCkpCkBAIC0xMDU4
LDggKzExODksOCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlHcmFwaGlj
c1BpcGVsaW5lKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgICAgICAgICBBTkdM
RV9UUlkobVByb2dyYW0tPmdldEdyYXBoaWNzUGlwZWxpbmUoCiAgICAgICAgICAgICAgICAgdGhp
cywgbUN1cnJlbnREcmF3TW9kZSwgKm1HcmFwaGljc1BpcGVsaW5lRGVzYywKLSAgICAgICAgICAg
ICAgICBtUHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXROb25CdWlsdGluQXR0cmliTG9jYXRpb25zTWFz
aygpLCAmZGVzY1B0ciwKLSAgICAgICAgICAgICAgICAmbUN1cnJlbnRHcmFwaGljc1BpcGVsaW5l
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtRXhlY3V0
YWJsZSgpLT5nZXROb25CdWlsdGluQXR0cmliTG9jYXRpb25zTWFzaygpLAorICAgICAgICAgICAg
ICAgICZkZXNjUHRyLCAmbUN1cnJlbnRHcmFwaGljc1BpcGVsaW5lKSk7CiAKICAgICAgICAgICAg
IG9sZFBpcGVsaW5lLT5hZGRUcmFuc2l0aW9uKG1HcmFwaGljc1BpcGVsaW5lVHJhbnNpdGlvbiwg
ZGVzY1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50
R3JhcGhpY3NQaXBlbGluZSk7CkBAIC0xMDg4LDI4ICsxMjE5LDU3IEBAIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUNvbXB1dGVQaXBlbGluZShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLUFOR0xF
X0lOTElORSBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlUZXh0dXJlc0ltcGwo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyKQorQU5H
TEVfSU5MSU5FIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eVRleHR1cmVzSW1w
bCgKKyAgICBjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICB2azo6Q29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlciwKKyAgICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVy
SGVscGVyKQogewotICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkpCisgICAgY29uc3QgZ2w6
OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gbVN0YXRlLmdldFByb2dyYW1FeGVjdXRh
YmxlKCk7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0
dXJlTWFzayAmYWN0aXZlVGV4dHVyZXMgPSBleGVjdXRhYmxlLT5nZXRBY3RpdmVTYW1wbGVyc01h
c2soKTsKKworICAgIGZvciAoc2l6ZV90IHRleHR1cmVVbml0IDogYWN0aXZlVGV4dHVyZXMpCiAg
ICAgewotICAgICAgICBBTkdMRV9UUlkodXBkYXRlQWN0aXZlVGV4dHVyZXMoY29udGV4dCkpOwor
ICAgICAgICBjb25zdCB2azo6VGV4dHVyZVVuaXQgJnVuaXQgPSBtQWN0aXZlVGV4dHVyZXNbdGV4
dHVyZVVuaXRdOworICAgICAgICBUZXh0dXJlVmsgKnRleHR1cmVWayAgICAgICAgPSB1bml0LnRl
eHR1cmU7CisgICAgICAgIHZrOjpJbWFnZUhlbHBlciAmaW1hZ2UgICAgICA9IHRleHR1cmVWay0+
Z2V0SW1hZ2UoKTsKKworICAgICAgICAvLyBUaGUgaW1hZ2Ugc2hvdWxkIGJlIGZsdXNoZWQgYW5k
IHJlYWR5IHRvIHVzZSBhdCB0aGlzIHBvaW50LiBUaGVyZSBtYXkgc3RpbGwgYmUKKyAgICAgICAg
Ly8gbGluZ2VyaW5nIHN0YWdlZCB1cGRhdGVzIGluIGl0cyBzdGFnaW5nIGJ1ZmZlciBmb3IgdW51
c2VkIHRleHR1cmUgbWlwIGxldmVscyBvcgorICAgICAgICAvLyBsYXllcnMuIFRoZXJlZm9yZSB3
ZSBjYW4ndCB2ZXJpZnkgaXQgaGFzIG5vIHN0YWdlZCB1cGRhdGVzIHJpZ2h0IGhlcmUuCisKKyAg
ICAgICAgLy8gU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSB2azo6SW1hZ2VMYXlvdXQgZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlIHRleHR1cmUgaXMgYWxzbyBib3VuZCBhcworICAgICAgICAvLyBhIEdM
IGltYWdlLCBhbmQgd2hldGhlciB0aGUgcHJvZ3JhbSBpcyBhIGNvbXB1dGUgb3IgZ3JhcGhpY3Mg
c2hhZGVyLgorICAgICAgICB2azo6SW1hZ2VMYXlvdXQgdGV4dHVyZUxheW91dDsKKyAgICAgICAg
aWYgKHRleHR1cmVWay0+aXNCb3VuZEFzSW1hZ2VUZXh0dXJlKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRleHR1cmVMYXlvdXQgPSBleGVjdXRhYmxlLT5pc0NvbXB1dGUoKSA/IHZrOjpJbWFn
ZUxheW91dDo6Q29tcHV0ZVNoYWRlcldyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiB2azo6SW1hZ2VMYXlvdXQ6OkFsbEdyYXBoaWNzU2hh
ZGVyc1dyaXRlOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgdGV4dHVyZUxheW91dCA9IGV4ZWN1dGFibGUtPmlzQ29tcHV0ZSgpID8gdms6OkltYWdlTGF5
b3V0OjpDb21wdXRlU2hhZGVyUmVhZE9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFk
ZXJzUmVhZE9ubHk7CisgICAgICAgIH0KKyAgICAgICAgY29tbWFuZEJ1ZmZlckhlbHBlci0+aW1h
Z2VSZWFkKCZtUmVzb3VyY2VVc2VMaXN0LCBpbWFnZS5nZXRBc3BlY3RGbGFncygpLCB0ZXh0dXJl
TGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltYWdlKTsK
KworICAgICAgICB0ZXh0dXJlVmstPnJldGFpbkltYWdlVmlld3MoJm1SZXNvdXJjZVVzZUxpc3Qp
OwogCi0gICAgICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlTWFzayAmYWN0aXZlVGV4dHVyZXMg
PSBtUHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXRBY3RpdmVTYW1wbGVyc01hc2soKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgdGV4dHVyZVVuaXQgOiBhY3RpdmVUZXh0dXJlcykKKyAgICAgICAgaWYgKHVu
aXQuc2FtcGxlcikKICAgICAgICAgewotICAgICAgICAgICAgdms6OlRleHR1cmVVbml0ICZ1bml0
ID0gbUFjdGl2ZVRleHR1cmVzW3RleHR1cmVVbml0XTsKLSAgICAgICAgICAgIFRleHR1cmVWayAq
dGV4dHVyZVZrICA9IHVuaXQudGV4dHVyZTsKLSAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlVmsp
OwotICAgICAgICAgICAgdms6OkltYWdlSGVscGVyICZpbWFnZSA9IHRleHR1cmVWay0+Z2V0SW1h
Z2UoKTsKLSAgICAgICAgICAgIGltYWdlLmFkZFJlYWREZXBlbmRlbmN5KHRoaXMsIHJlY29yZGVy
KTsKKyAgICAgICAgICAgIHVuaXQuc2FtcGxlci0+cmV0YWluKCZtUmVzb3VyY2VVc2VMaXN0KTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHR1cmVW
ay0+cmV0YWluU2FtcGxlcigmbVJlc291cmNlVXNlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAobVByb2dyYW0tPmhhc1RleHR1cmVzKCkpCisgICAgaWYgKGV4ZWN1dGFibGUtPmhh
c1RleHR1cmVzKG1TdGF0ZSkpCiAgICAgewotICAgICAgICBBTkdMRV9UUlkobVByb2dyYW0tPnVw
ZGF0ZVRleHR1cmVzRGVzY3JpcHRvclNldCh0aGlzKSk7CisgICAgICAgIEFOR0xFX1RSWSgKKyAg
ICAgICAgICAgIG1Qcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkudXBkYXRlVGV4dHVyZXNEZXNjcmlw
dG9yU2V0KG1Qcm9ncmFtLT5nZXRTdGF0ZSgpLCB0aGlzKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMTExOCwxOSArMTI3OCwxOSBAQCBBTkdMRV9J
TkxJTkUgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURpcnR5VGV4dHVyZXNJbXBsKGNv
bnN0IGdsOjpDb250ZXh0CiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlHcmFw
aGljc1RleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAq
Y29tbWFuZEJ1ZmZlcikKIHsKLSAgICByZXR1cm4gaGFuZGxlRGlydHlUZXh0dXJlc0ltcGwoY29u
dGV4dCwgY29tbWFuZEJ1ZmZlciwgbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZmZXIoKSk7
CisgICAgcmV0dXJuIGhhbmRsZURpcnR5VGV4dHVyZXNJbXBsKGNvbnRleHQsIGNvbW1hbmRCdWZm
ZXIsICZtUmVuZGVyUGFzc0NvbW1hbmRzKTsKIH0KIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6
OmhhbmRsZURpcnR5Q29tcHV0ZVRleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpD
b21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKQogewotICAgIHJldHVybiBoYW5kbGVEaXJ0eVRl
eHR1cmVzSW1wbChjb250ZXh0LCBjb21tYW5kQnVmZmVyLCAmbURpc3BhdGNoZXIpOworICAgIHJl
dHVybiBoYW5kbGVEaXJ0eVRleHR1cmVzSW1wbChjb250ZXh0LCBjb21tYW5kQnVmZmVyLCAmbU91
dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMpOwogfQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6
aGFuZGxlRGlydHlHcmFwaGljc1ZlcnRleEJ1ZmZlcnMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCiB7Ci0gICAgdWludDMyX3Qg
bWF4QXR0cmliID0gbVByb2dyYW0tPmdldFN0YXRlKCkuZ2V0TWF4QWN0aXZlQXR0cmliTG9jYXRp
b24oKTsKKyAgICB1aW50MzJfdCBtYXhBdHRyaWIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFBy
b2dyYW1FeGVjdXRhYmxlKCktPmdldE1heEFjdGl2ZUF0dHJpYkxvY2F0aW9uKCk7CiAgICAgY29u
c3QgZ2w6OkF0dHJpYkFycmF5PFZrQnVmZmVyPiAmYnVmZmVySGFuZGxlcyA9IG1WZXJ0ZXhBcnJh
eS0+Z2V0Q3VycmVudEFycmF5QnVmZmVySGFuZGxlcygpOwogICAgIGNvbnN0IGdsOjpBdHRyaWJB
cnJheTxWa0RldmljZVNpemU+ICZidWZmZXJPZmZzZXRzID0KICAgICAgICAgbVZlcnRleEFycmF5
LT5nZXRDdXJyZW50QXJyYXlCdWZmZXJPZmZzZXRzKCk7CkBAIC0xMTM5LDIzICsxMjk5LDE3IEBA
IGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVmVydGV4QnVmZmVy
cyhjb25zdCBnbDo6Q29udGV4dCAqY29uCiAKICAgICBjb25zdCBnbDo6QXR0cmliQXJyYXk8dms6
OkJ1ZmZlckhlbHBlciAqPiAmYXJyYXlCdWZmZXJSZXNvdXJjZXMgPQogICAgICAgICBtVmVydGV4
QXJyYXktPmdldEN1cnJlbnRBcnJheUJ1ZmZlcnMoKTsKLSAgICB2azo6RnJhbWVidWZmZXJIZWxw
ZXIgKmZyYW1lYnVmZmVyID0gbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZmZXIoKTsKIAot
ICAgIC8vIE1hcmsgYWxsIGFjdGl2ZSB2ZXJ0ZXggYnVmZmVycyBhcyBhY2Nlc3NlZCBieSB0aGUg
Z3JhcGguCi0gICAgZ2w6OkF0dHJpYnV0ZXNNYXNrIGF0dHJpYnNNYXNrID0gbVByb2dyYW0tPmdl
dFN0YXRlKCkuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOworICAgIC8vIE1hcmsgYWxs
IGFjdGl2ZSB2ZXJ0ZXggYnVmZmVycyBhcyBhY2Nlc3NlZC4KKyAgICBjb25zdCBnbDo6UHJvZ3Jh
bUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW1F
eGVjdXRhYmxlKCk7CisgICAgZ2w6OkF0dHJpYnV0ZXNNYXNrIGF0dHJpYnNNYXNrICAgICAgICAg
ID0gZXhlY3V0YWJsZS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOwogICAgIGZvciAo
c2l6ZV90IGF0dHJpYkluZGV4IDogYXR0cmlic01hc2spCiAgICAgewogICAgICAgICB2azo6QnVm
ZmVySGVscGVyICphcnJheUJ1ZmZlciA9IGFycmF5QnVmZmVyUmVzb3VyY2VzW2F0dHJpYkluZGV4
XTsKICAgICAgICAgaWYgKGFycmF5QnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
Y29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFy
cmF5QnVmZmVyLT5vblJlYWQodGhpcywgZnJhbWVidWZmZXIsIFZLX0FDQ0VTU19WRVJURVhfQVRU
UklCVVRFX1JFQURfQklUKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBvbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1ZFUlRFWF9B
VFRSSUJVVEVfUkVBRF9CSVQsIGFycmF5QnVmZmVyKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuYnVmZmVyUmVhZCgmbVJlc291cmNlVXNlTGlzdCwgVktf
QUNDRVNTX1ZFUlRFWF9BVFRSSUJVVEVfUkVBRF9CSVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJyYXlCdWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xMTcwLDE3ICsxMzI0LDkgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURpcnR5
R3JhcGhpY3NJbmRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGUKIAogICAgIGNvbW1h
bmRCdWZmZXItPmJpbmRJbmRleEJ1ZmZlcihlbGVtZW50QXJyYXlCdWZmZXItPmdldEJ1ZmZlcigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVmVydGV4QXJyYXktPmdldEN1
cnJlbnRFbGVtZW50QXJyYXlCdWZmZXJPZmZzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xfdms6OmtJbmRleFR5cGVNYXBbbUN1cnJlbnREcmF3RWxlbWVudHNUeXBl
XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZrSW5kZXhUeXBlKG1D
dXJyZW50RHJhd0VsZW1lbnRzVHlwZSkpOwogCi0gICAgaWYgKGNvbW1hbmRHcmFwaEVuYWJsZWQo
KSkKLSAgICB7Ci0gICAgICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXIgPSBt
RHJhd0ZyYW1lYnVmZmVyLT5nZXRGcmFtZWJ1ZmZlcigpOwotICAgICAgICBlbGVtZW50QXJyYXlC
dWZmZXItPm9uUmVhZCh0aGlzLCBmcmFtZWJ1ZmZlciwgVktfQUNDRVNTX0lOREVYX1JFQURfQklU
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgb25CdWZmZXJSZWFkKFZLX0FDQ0VT
U19JTkRFWF9SRUFEX0JJVCwgZWxlbWVudEFycmF5QnVmZmVyKTsKLSAgICB9CisgICAgbVJlbmRl
clBhc3NDb21tYW5kcy5idWZmZXJSZWFkKCZtUmVzb3VyY2VVc2VMaXN0LCBWS19BQ0NFU1NfSU5E
RVhfUkVBRF9CSVQsIGVsZW1lbnRBcnJheUJ1ZmZlcik7CiAKICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7CiB9CkBAIC0xMTg4LDE3ICsxMzM0LDIxIEBAIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzSW5kZXhCdWZmZXIoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRlCiBBTkdMRV9JTkxJTkUgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURp
cnR5U2hhZGVyUmVzb3VyY2VzSW1wbCgKICAgICBjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciwKLSAgICB2azo6Q29tbWFuZEdy
YXBoUmVzb3VyY2UgKnJlY29yZGVyKQorICAgIENvbW1hbmRCdWZmZXJIZWxwZXIgKmNvbW1hbmRC
dWZmZXJIZWxwZXIpCiB7Ci0gICAgaWYgKG1Qcm9ncmFtLT5oYXNJbWFnZXMoKSkKKyAgICBjb25z
dCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4
ZWN1dGFibGUoKTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CisKKyAgICBpZiAoZXhlY3V0YWJs
ZS0+aGFzSW1hZ2VzKG1TdGF0ZSkpCiAgICAgewotICAgICAgICBBTkdMRV9UUlkodXBkYXRlQWN0
aXZlSW1hZ2VzKGNvbnRleHQsIHJlY29yZGVyKSk7CisgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVB
Y3RpdmVJbWFnZXMoY29udGV4dCwgY29tbWFuZEJ1ZmZlckhlbHBlcikpOwogICAgIH0KIAotICAg
IGlmIChtUHJvZ3JhbS0+aGFzVW5pZm9ybUJ1ZmZlcnMoKSB8fCBtUHJvZ3JhbS0+aGFzU3RvcmFn
ZUJ1ZmZlcnMoKSB8fAotICAgICAgICBtUHJvZ3JhbS0+aGFzQXRvbWljQ291bnRlckJ1ZmZlcnMo
KSB8fCBtUHJvZ3JhbS0+aGFzSW1hZ2VzKCkpCisgICAgaWYgKGV4ZWN1dGFibGUtPmhhc1VuaWZv
cm1CdWZmZXJzKG1TdGF0ZSkgfHwgZXhlY3V0YWJsZS0+aGFzU3RvcmFnZUJ1ZmZlcnMobVN0YXRl
KSB8fAorICAgICAgICBleGVjdXRhYmxlLT5oYXNBdG9taWNDb3VudGVyQnVmZmVycyhtU3RhdGUp
IHx8IGV4ZWN1dGFibGUtPmhhc0ltYWdlcyhtU3RhdGUpKQogICAgIHsKLSAgICAgICAgQU5HTEVf
VFJZKG1Qcm9ncmFtLT51cGRhdGVTaGFkZXJSZXNvdXJjZXNEZXNjcmlwdG9yU2V0KHRoaXMsIHJl
Y29yZGVyKSk7CisgICAgICAgIEFOR0xFX1RSWShtUHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLnVw
ZGF0ZVNoYWRlclJlc291cmNlc0Rlc2NyaXB0b3JTZXQoCisgICAgICAgICAgICBtUHJvZ3JhbS0+
Z2V0U3RhdGUoKSwgdGhpcywgJm1SZXNvdXJjZVVzZUxpc3QsIGNvbW1hbmRCdWZmZXJIZWxwZXIp
KTsKICAgICB9CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQpAQCAtMTIw
NiwyNCArMTM1Niw0MiBAQCBBTkdMRV9JTkxJTkUgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6Omhh
bmRsZURpcnR5U2hhZGVyUmVzb3VyY2VzSW1wbCgKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpo
YW5kbGVEaXJ0eUdyYXBoaWNzU2hhZGVyUmVzb3VyY2VzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCiB7Ci0gICAgcmV0dXJu
IGhhbmRsZURpcnR5U2hhZGVyUmVzb3VyY2VzSW1wbChjb250ZXh0LCBjb21tYW5kQnVmZmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURyYXdGcmFtZWJ1ZmZl
ci0+Z2V0RnJhbWVidWZmZXIoKSk7CisgICAgcmV0dXJuIGhhbmRsZURpcnR5U2hhZGVyUmVzb3Vy
Y2VzSW1wbChjb250ZXh0LCBjb21tYW5kQnVmZmVyLCAmbVJlbmRlclBhc3NDb21tYW5kcyk7CiB9
CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUNvbXB1dGVTaGFkZXJSZXNv
dXJjZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpj
b21tYW5kQnVmZmVyKQogewotICAgIHJldHVybiBoYW5kbGVEaXJ0eVNoYWRlclJlc291cmNlc0lt
cGwoY29udGV4dCwgY29tbWFuZEJ1ZmZlciwgJm1EaXNwYXRjaGVyKTsKKyAgICByZXR1cm4gaGFu
ZGxlRGlydHlTaGFkZXJSZXNvdXJjZXNJbXBsKGNvbnRleHQsIGNvbW1hbmRCdWZmZXIsICZtT3V0
c2lkZVJlbmRlclBhc3NDb21tYW5kcyk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpo
YW5kbGVEaXJ0eUdyYXBoaWNzVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRW11bGF0aW9uKAogICAg
IGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyKQogewotICAgIGlmIChtUHJvZ3JhbS0+aGFzVHJhbnNmb3JtRmVlZGJhY2tPdXRw
dXQoKSAmJiBtU3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZSgpKQorICAgIGNvbnN0IGds
OjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0
YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRhYmxlKTsKKworICAgIGlmIChleGVjdXRhYmxlLT5o
YXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dChtU3RhdGUpICYmIG1TdGF0ZS5pc1RyYW5zZm9ybUZl
ZWRiYWNrQWN0aXZlKCkpCiAgICAgewotICAgICAgICBBTkdMRV9UUlkobVByb2dyYW0tPnVwZGF0
ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldCgKLSAgICAgICAgICAgIHRoaXMsIG1EcmF3
RnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVyKCkpKTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlckNv
dW50ID0gZXhlY3V0YWJsZS0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudChtU3RhdGUp
OworICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6
OkJ1ZmZlcj4+ICZ4ZmJCdWZmZXJzID0KKyAgICAgICAgICAgIG1TdGF0ZS5nZXRDdXJyZW50VHJh
bnNmb3JtRmVlZGJhY2soKS0+Z2V0SW5kZXhlZEJ1ZmZlcnMoKTsKKworICAgICAgICBmb3IgKHNp
emVfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVmZmVyQ291bnQ7ICsrYnVmZmVy
SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXRCaW5kaW5nUG9p
bnRlcjxnbDo6QnVmZmVyPiAmeGZiQnVmZmVyID0geGZiQnVmZmVyc1tidWZmZXJJbmRleF07Cisg
ICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHhmYkJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChidWZmZXIgIT0g
bnVsbHB0cik7CisgICAgICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAgICAgICAgPSB2
azo6R2V0SW1wbChidWZmZXIpOworICAgICAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAmYnVmZmVy
SGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOworCisgICAgICAgICAgICBtUmVuZGVyUGFz
c0NvbW1hbmRzLmJ1ZmZlcldyaXRlKAorICAgICAgICAgICAgICAgICZtUmVzb3VyY2VVc2VMaXN0
LCBWS19BQ0NFU1NfVFJBTlNGT1JNX0ZFRURCQUNLX1dSSVRFX0JJVF9FWFQsICZidWZmZXJIZWxw
ZXIpOworICAgICAgICB9CisKKyAgICAgICAgQU5HTEVfVFJZKG1Qcm9ncmFtLT5nZXRFeGVjdXRh
YmxlKCkudXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tEZXNjcmlwdG9yU2V0KAorICAgICAgICAgICAg
bVByb2dyYW0tPmdldFN0YXRlKCksIG1Qcm9ncmFtLT5nZXREZWZhdWx0VW5pZm9ybUJsb2Nrcygp
LCB0aGlzKSk7CiAgICAgfQogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
QEAgLTEyMzIsMzUgKzE0MDAsNDEgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURp
cnR5R3JhcGhpY3NUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFeHRlbnNpb24oCiAgICAgY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZm
ZXIpCiB7Ci0gICAgaWYgKCFtUHJvZ3JhbS0+aGFzVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQoKSB8
fCAhbVN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmUoKSkKKyAgICBjb25zdCBnbDo6UHJv
Z3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CisKKyAgICBpZiAoIWV4ZWN1dGFibGUtPmhhc1Ry
YW5zZm9ybUZlZWRiYWNrT3V0cHV0KG1TdGF0ZSkgfHwgIW1TdGF0ZS5pc1RyYW5zZm9ybUZlZWRi
YWNrQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIAog
ICAgIHNpemVfdCBidWZmZXJJbmRleCAgICAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgIFRy
YW5zZm9ybUZlZWRiYWNrVmsgKnRyYW5zZm9ybUZlZWRiYWNrVmsgPSB2azo6R2V0SW1wbChtU3Rh
dGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOwogCi0gICAgc2l6ZV90IGJ1ZmZlckNv
dW50ID0gbVByb2dyYW0tPmdldFN0YXRlKCkuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3Vu
dCgpOworICAgIHNpemVfdCBidWZmZXJDb3VudCA9IGV4ZWN1dGFibGUtPmdldFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyQ291bnQobVN0YXRlKTsKICAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJzQXJyYXk8VmtCdWZmZXI+IGJ1ZmZlckhhbmRsZXM7CiAKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4+ICZ4ZmJCdWZmZXJzID0KKyAg
ICAgICAgbVN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5nZXRJbmRleGVkQnVm
ZmVycygpOworCiAgICAgZm9yIChidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVmZmVy
Q291bnQ7ICsrYnVmZmVySW5kZXgpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6T2Zmc2V0Qmlu
ZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJ1ZmZlckJpbmRpbmcgPQotICAgICAgICAgICAgbVN0
YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5nZXRJbmRleGVkQnVmZmVyKGJ1ZmZl
ckluZGV4KTsKLSAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYnVmZmVyQmluZGluZy5nZXQo
KTsKKyAgICAgICAgY29uc3QgZ2w6Ok9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZi
dWZmZXJCaW5kaW5nID0geGZiQnVmZmVyc1tidWZmZXJJbmRleF07CisgICAgICAgIGdsOjpCdWZm
ZXIgKmJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJ1ZmZl
ckJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIEFTU0VSVChidWZmZXIgIT0gbnVsbHB0cik7CisgICAg
ICAgIEJ1ZmZlclZrICpidWZmZXJWayA9IHZrOjpHZXRJbXBsKGJ1ZmZlcik7CiAKLSAgICAgICAg
dms6OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gdms6OkdldEltcGwoYnVmZmVyKS0+Z2V0
QnVmZmVyKCk7CisgICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgJmJ1ZmZlckhlbHBlciA9IGJ1ZmZl
clZrLT5nZXRCdWZmZXIoKTsKICAgICAgICAgYnVmZmVySGFuZGxlc1tidWZmZXJJbmRleF0gICAg
ID0gYnVmZmVySGVscGVyLmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOworCisgICAgICAgIG1SZW5k
ZXJQYXNzQ29tbWFuZHMuYnVmZmVyV3JpdGUoJm1SZXNvdXJjZVVzZUxpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUNDRVNTX1RSQU5TRk9STV9GRUVEQkFD
S19XUklURV9CSVRfRVhULCAmYnVmZmVySGVscGVyKTsKICAgICB9CiAKICAgICBjb25zdCBUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlclJhbmdlICZ4ZmJCdWZmZXJSYW5nZUV4dGVuc2lvbiA9CiAgICAg
ICAgIHRyYW5zZm9ybUZlZWRiYWNrVmstPmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyUmFuZ2Uo
KTsKIAotICAgIGNvbW1hbmRCdWZmZXItPmJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoYnVm
ZmVyQ291bnQsIGJ1ZmZlckhhbmRsZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeGZiQnVmZmVyUmFuZ2VFeHRlbnNpb24ub2Zmc2V0cy5k
YXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
ZmJCdWZmZXJSYW5nZUV4dGVuc2lvbi5zaXplcy5kYXRhKCkpOwotCi0gICAgdms6OkZyYW1lYnVm
ZmVySGVscGVyICpmcmFtZWJ1ZmZlciA9IG1EcmF3RnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVy
KCk7Ci0gICAgdHJhbnNmb3JtRmVlZGJhY2tWay0+YWRkRnJhbWVidWZmZXJEZXBlbmRlbmN5KHRo
aXMsIG1Qcm9ncmFtLT5nZXRTdGF0ZSgpLCBmcmFtZWJ1ZmZlcik7CisgICAgY29tbWFuZEJ1ZmZl
ci0+YmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycygKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGJ1ZmZlckNvdW50KSwgYnVmZmVySGFuZGxlcy5kYXRhKCksCisgICAgICAgIHhmYkJ1
ZmZlclJhbmdlRXh0ZW5zaW9uLm9mZnNldHMuZGF0YSgpLCB4ZmJCdWZmZXJSYW5nZUV4dGVuc2lv
bi5zaXplcy5kYXRhKCkpOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
fQpAQCAtMTI2OCwyMCArMTQ0MiwyNCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxl
RGlydHlHcmFwaGljc1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0V4dGVuc2lvbigKIGFuZ2xlOjpS
ZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVHJhbnNmb3JtRmVlZGJhY2tTdGF0
ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcikKIHsKLSAgICBpZiAoIW1Qcm9ncmFtLT5oYXNUcmFuc2Zvcm1GZWVk
YmFja091dHB1dCgpIHx8ICFtU3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2Vk
KCkpCisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gbVN0YXRl
LmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUpOworCisgICAg
aWYgKCFleGVjdXRhYmxlLT5oYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dChtU3RhdGUpIHx8Cisg
ICAgICAgICFtU3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpCiAgICAg
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIAogICAgIFRyYW5zZm9ybUZlZWRi
YWNrVmsgKnRyYW5zZm9ybUZlZWRiYWNrVmsgPSB2azo6R2V0SW1wbChtU3RhdGUuZ2V0Q3VycmVu
dFRyYW5zZm9ybUZlZWRiYWNrKCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgc2FtZSBudW1i
ZXIgb2YgY291bnRlciBidWZmZXJzIGFzIHhmYiBidWZmZXJzIGhhdmUKLSAgICBzaXplX3QgYnVm
ZmVyQ291bnQgPSBtUHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ckNvdW50KCk7CisgICAgc2l6ZV90IGJ1ZmZlckNvdW50ID0gZXhlY3V0YWJsZS0+Z2V0VHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJDb3VudChtU3RhdGUpOwogICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnNBcnJheTxWa0J1ZmZlcj4gJmNvdW50ZXJCdWZmZXJIYW5kbGVzID0KICAg
ICAgICAgdHJhbnNmb3JtRmVlZGJhY2tWay0+Z2V0Q291bnRlckJ1ZmZlckhhbmRsZXMoKTsKIAot
ICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXIgPSBtRHJhd0ZyYW1lYnVmZmVy
LT5nZXRGcmFtZWJ1ZmZlcigpOwogICAgIGJvb2wgcmViaW5kQnVmZmVyID0gdHJhbnNmb3JtRmVl
ZGJhY2tWay0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJSZWJpbmRTdGF0ZSgpOwotICAgIGZy
YW1lYnVmZmVyLT5zZXRBY3RpdmVUcmFuc2Zvcm1GZWVkYmFja0luZm8oYnVmZmVyQ291bnQsIGNv
dW50ZXJCdWZmZXJIYW5kbGVzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYmluZEJ1ZmZlcik7CisKKyAgICBtUmVuZGVyUGFzc0NvbW1h
bmRzLmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soYnVmZmVyQ291bnQsIGNvdW50ZXJCdWZmZXJIYW5k
bGVzLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmViaW5kQnVmZmVyKTsKIAogICAgIHRyYW5zZm9ybUZlZWRiYWNrVmstPnVuc2V0VHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJSZWJpbmRTdGF0ZSgpOwogCkBAIC0xMjkxLDEzICsxNDY5LDI0IEBA
IGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVHJhbnNmb3JtRmVl
ZGJhY2tTdGF0ZShjb25zdCBnbDo6Q29uCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxl
RGlydHlEZXNjcmlwdG9yU2V0cyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVm
ZmVyICpjb21tYW5kQnVmZmVyKQogewotICAgIEFOR0xFX1RSWShtUHJvZ3JhbS0+dXBkYXRlRGVz
Y3JpcHRvclNldHModGhpcywgY29tbWFuZEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShtUHJvZ3Jh
bS0+Z2V0RXhlY3V0YWJsZSgpLnVwZGF0ZURlc2NyaXB0b3JTZXRzKHRoaXMsIGNvbW1hbmRCdWZm
ZXIpKTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIGFuZ2xlOjpS
ZXN1bHQgQ29udGV4dFZrOjpzdWJtaXRGcmFtZShjb25zdCBWa1N1Ym1pdEluZm8gJnN1Ym1pdElu
Zm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlByaW1hcnlDb21t
YW5kQnVmZmVyICYmY29tbWFuZEJ1ZmZlcikKIHsKKyAgICAvLyBVcGRhdGUgb3ZlcmxheSBpZiBh
Y3RpdmUuCisgICAgZ2w6OlJ1bm5pbmdHcmFwaFdpZGdldCAqcmVuZGVyUGFzc0NvdW50ID0KKyAg
ICAgICAgbVN0YXRlLmdldE92ZXJsYXkoKS0+Z2V0UnVubmluZ0dyYXBoV2lkZ2V0KGdsOjpXaWRn
ZXRJZDo6VnVsa2FuUmVuZGVyUGFzc0NvdW50KTsKKyAgICByZW5kZXJQYXNzQ291bnQtPmFkZCht
UmVuZGVyUGFzc0NvbW1hbmRzLmdldEFuZFJlc2V0Q291bnRlcigpKTsKKyAgICByZW5kZXJQYXNz
Q291bnQtPm5leHQoKTsKKworICAgIGlmIChrRW5hYmxlQ29tbWFuZFN0cmVhbURpYWdub3N0aWNz
KQorICAgIHsKKyAgICAgICAgZHVtcENvbW1hbmRTdHJlYW1EaWFnbm9zdGljcygpOworICAgIH0K
KwogICAgIEFOR0xFX1RSWShlbnN1cmVTdWJtaXRGZW5jZUluaXRpYWxpemVkKCkpOwogICAgIEFO
R0xFX1RSWShtQ29tbWFuZFF1ZXVlLnN1Ym1pdEZyYW1lKHRoaXMsIG1Db250ZXh0UHJpb3JpdHks
IHN1Ym1pdEluZm8sIG1TdWJtaXRGZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbUN1cnJlbnRHYXJiYWdlLCAmbUNvbW1hbmRQb29sLCBzdGQ6Om1vdmUoY29t
bWFuZEJ1ZmZlcikpKTsKQEAgLTEzMTgsMjIgKzE1MDcsNiBAQCBhbmdsZTo6UmVzdWx0IENvbnRl
eHRWazo6c3VibWl0RnJhbWUoY29uc3QgVmtTdWJtaXRJbmZvICZzdWJtaXRJbmZvLAogICAgIHJl
dHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotYW5nbGU6OlJlc3VsdCBDb250ZXh0
Vms6OmZsdXNoQ29tbWFuZEdyYXBoKHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJh
dGNoKQotewotICAgIEFTU0VSVChjb21tYW5kR3JhcGhFbmFibGVkKCkpOwotCi0gICAgaWYgKG1J
c0FueUhvc3RWaXNpYmxlQnVmZmVyV3JpdHRlbikKLSAgICB7Ci0gICAgICAgIG1Db21tYW5kR3Jh
cGgubWFrZUhvc3RWaXNpYmxlQnVmZmVyV3JpdGVBdmFpbGFibGUoKTsKLSAgICB9Ci0gICAgbUlz
QW55SG9zdFZpc2libGVCdWZmZXJXcml0dGVuID0gZmFsc2U7Ci0KLSAgICBTZXJpYWwgc2VyaWFs
ID0gZ2V0Q3VycmVudFF1ZXVlU2VyaWFsKCk7Ci0gICAgbVJlc291cmNlVXNlTGlzdC5yZWxlYXNl
UmVzb3VyY2VVc2VzQW5kVXBkYXRlU2VyaWFscyhzZXJpYWwpOwotCi0gICAgcmV0dXJuIG1Db21t
YW5kR3JhcGguc3VibWl0Q29tbWFuZHModGhpcywgc2VyaWFsLCAmbVJlbmRlclBhc3NDYWNoZSwg
Y29tbWFuZEJhdGNoKTsKLX0KLQogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5bmNocm9uaXpl
Q3B1R3B1VGltZSgpCiB7CiAgICAgQVNTRVJUKG1HcHVFdmVudHNFbmFibGVkKTsKQEAgLTE0MDcs
NyArMTU4MCw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jaHJvbml6ZUNwdUdwdVRp
bWUoKQogICAgIC8vIE5vdGU6IE9uY2UgVktfRVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcyBpcyB1
YmlxdWl0b3VzLCB0aGlzIHNob3VsZCBiZSByZWRvbmUuCiAKICAgICAvLyBNYWtlIHN1cmUgbm90
aGluZyBpcyBydW5uaW5nCi0gICAgQVNTRVJUKG1Db21tYW5kR3JhcGguZW1wdHkoKSk7CisgICAg
QVNTRVJUKCFoYXNSZWNvcmRlZENvbW1hbmRzKCkpOwogCiAgICAgQU5HTEVfVFJBQ0VfRVZFTlQw
KCJncHUuYW5nbGUiLCAiUmVuZGVyZXJWazo6c3luY2hyb25pemVDcHVHcHVUaW1lIik7CiAKQEAg
LTE0NDcsNyArMTYyMCw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jaHJvbml6ZUNw
dUdwdVRpbWUoKQogCiAgICAgICAgIFZrQ29tbWFuZEJ1ZmZlckJlZ2luSW5mbyBiZWdpbkluZm8g
PSB7fTsKICAgICAgICAgYmVnaW5JbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgICA9IFZLX1NU
UlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lORk87Ci0gICAgICAgIGJlZ2luSW5m
by5mbGFncyAgICAgICAgICAgICAgICAgICAgPSAwOworICAgICAgICBiZWdpbkluZm8uZmxhZ3Mg
ICAgICAgICAgICAgICAgICAgID0gVktfQ09NTUFORF9CVUZGRVJfVVNBR0VfT05FX1RJTUVfU1VC
TUlUX0JJVDsKICAgICAgICAgYmVnaW5JbmZvLnBJbmhlcml0YW5jZUluZm8gICAgICAgICA9IG51
bGxwdHI7CiAKICAgICAgICAgQU5HTEVfVktfVFJZKHRoaXMsIGNvbW1hbmRCdWZmZXIuYmVnaW4o
YmVnaW5JbmZvKSk7CkBAIC0xNDU2LDEzICsxNjI5LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0
Vms6OnN5bmNocm9uaXplQ3B1R3B1VGltZSgpCiAgICAgICAgIGNvbW1hbmRCdWZmZXIud2FpdEV2
ZW50cygxLCBjcHVSZWFkeS5nZXQoKS5wdHIoKSwgVktfUElQRUxJTkVfU1RBR0VfSE9TVF9CSVQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9BTExf
R1JBUEhJQ1NfQklULCAwLCBudWxscHRyLCAwLCBudWxscHRyLCAwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0KLSAgICAgICAgY29tbWFuZEJ1ZmZlci5yZXNl
dFF1ZXJ5UG9vbCh0aW1lc3RhbXBRdWVyeS5nZXRRdWVyeVBvb2woKS0+Z2V0SGFuZGxlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wUXVlcnkuZ2V0UXVl
cnkoKSwgMSk7Ci0gICAgICAgIGNvbW1hbmRCdWZmZXIud3JpdGVUaW1lc3RhbXAoVktfUElQRUxJ
TkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVzdGFtcFF1ZXJ5LmdldFF1ZXJ5UG9vbCgpLT5nZXRIYW5kbGUoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBRdWVyeS5nZXRRdWVy
eSgpKTsKLQorICAgICAgICB0aW1lc3RhbXBRdWVyeS53cml0ZVRpbWVzdGFtcCgmY29tbWFuZEJ1
ZmZlcik7CiAgICAgICAgIGNvbW1hbmRCdWZmZXIuc2V0RXZlbnQoZ3B1RG9uZS5nZXQoKS5nZXRI
YW5kbGUoKSwgVktfUElQRUxJTkVfU1RBR0VfQUxMX0dSQVBISUNTX0JJVCk7CiAKICAgICAgICAg
QU5HTEVfVktfVFJZKHRoaXMsIGNvbW1hbmRCdWZmZXIuZW5kKCkpOwpAQCAtMTUwNiwxMiArMTY3
Myw4IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jaHJvbml6ZUNwdUdwdVRpbWUoKQog
ICAgICAgICAvLyBHZXQgdGhlIHF1ZXJ5IHJlc3VsdHMKICAgICAgICAgQU5HTEVfVFJZKGZpbmlz
aFRvU2VyaWFsKGdldExhc3RTdWJtaXR0ZWRRdWV1ZVNlcmlhbCgpKSk7CiAKLSAgICAgICAgY29u
c3RleHByIFZrUXVlcnlSZXN1bHRGbGFncyBxdWVyeUZsYWdzID0gVktfUVVFUllfUkVTVUxUX1dB
SVRfQklUIHwgVktfUVVFUllfUkVTVUxUXzY0X0JJVDsKLQogICAgICAgICB1aW50NjRfdCBncHVU
aW1lc3RhbXBDeWNsZXMgPSAwOwotICAgICAgICBBTkdMRV9WS19UUlkodGhpcywgdGltZXN0YW1w
UXVlcnkuZ2V0UXVlcnlQb29sKCktPmdldFJlc3VsdHMoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlLCB0aW1lc3RhbXBRdWVyeS5nZXRRdWVyeSgpLCAxLCBzaXplb2YoZ3B1
VGltZXN0YW1wQ3ljbGVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ3B1VGlt
ZXN0YW1wQ3ljbGVzLCBzaXplb2YoZ3B1VGltZXN0YW1wQ3ljbGVzKSwgcXVlcnlGbGFncykpOwor
ICAgICAgICBBTkdMRV9UUlkodGltZXN0YW1wUXVlcnkuZ2V0VWludDY0UmVzdWx0KHRoaXMsICZn
cHVUaW1lc3RhbXBDeWNsZXMpKTsKIAogICAgICAgICAvLyBVc2UgdGhlIGZpcnN0IHRpbWVzdGFt
cCBxdWVyaWVkIGFzIG9yaWdpbi4KICAgICAgICAgaWYgKG1HcHVFdmVudFRpbWVzdGFtcE9yaWdp
biA9PSAwKQpAQCAtMTU0NywyNiArMTcxMCwxOCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6
c3luY2hyb25pemVDcHVHcHVUaW1lKCkKIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnRyYWNl
R3B1RXZlbnRJbXBsKHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXZlbnRO
YW1lICZuYW1lKQogewogICAgIEFTU0VSVChtR3B1RXZlbnRzRW5hYmxlZCk7CiAKLSAgICBHcHVF
dmVudFF1ZXJ5IGV2ZW50OworICAgIEdwdUV2ZW50UXVlcnkgZ3B1RXZlbnQ7CisgICAgZ3B1RXZl
bnQubmFtZSAgPSBuYW1lOworICAgIGdwdUV2ZW50LnBoYXNlID0gcGhhc2U7CisgICAgQU5HTEVf
VFJZKG1HcHVFdmVudFF1ZXJ5UG9vbC5hbGxvY2F0ZVF1ZXJ5KHRoaXMsICZncHVFdmVudC5xdWVy
eUhlbHBlcikpOwogCi0gICAgZXZlbnQubmFtZSAgID0gbmFtZTsKLSAgICBldmVudC5waGFzZSAg
PSBwaGFzZTsKLSAgICBldmVudC5zZXJpYWwgPSBnZXRDdXJyZW50UXVldWVTZXJpYWwoKTsKLQot
ICAgIEFOR0xFX1RSWShtR3B1RXZlbnRRdWVyeVBvb2wuYWxsb2NhdGVRdWVyeSh0aGlzLCAmZXZl
bnQucXVlcnlQb29sSW5kZXgsICZldmVudC5xdWVyeUluZGV4KSk7Ci0KLSAgICBjb21tYW5kQnVm
ZmVyLT5yZXNldFF1ZXJ5UG9vbCgKLSAgICAgICAgbUdwdUV2ZW50UXVlcnlQb29sLmdldFF1ZXJ5
UG9vbChldmVudC5xdWVyeVBvb2xJbmRleCktPmdldEhhbmRsZSgpLCBldmVudC5xdWVyeUluZGV4
LCAxKTsKLSAgICBjb21tYW5kQnVmZmVyLT53cml0ZVRpbWVzdGFtcCgKLSAgICAgICAgVktfUElQ
RUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklULAotICAgICAgICBtR3B1RXZlbnRRdWVyeVBv
b2wuZ2V0UXVlcnlQb29sKGV2ZW50LnF1ZXJ5UG9vbEluZGV4KS0+Z2V0SGFuZGxlKCksIGV2ZW50
LnF1ZXJ5SW5kZXgpOwotCi0gICAgbUluRmxpZ2h0R3B1RXZlbnRRdWVyaWVzLnB1c2hfYmFjayhz
dGQ6Om1vdmUoZXZlbnQpKTsKKyAgICBncHVFdmVudC5xdWVyeUhlbHBlci53cml0ZVRpbWVzdGFt
cChjb21tYW5kQnVmZmVyKTsKIAorICAgIG1JbkZsaWdodEdwdUV2ZW50UXVlcmllcy5wdXNoX2Jh
Y2soc3RkOjptb3ZlKGdwdUV2ZW50KSk7CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwogfQogCkBAIC0xNTg0LDMxICsxNzM5LDI5IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZr
OjpjaGVja0NvbXBsZXRlZEdwdUV2ZW50cygpCiAgICAgZm9yIChHcHVFdmVudFF1ZXJ5ICZldmVu
dFF1ZXJ5IDogbUluRmxpZ2h0R3B1RXZlbnRRdWVyaWVzKQogICAgIHsKICAgICAgICAgLy8gT25s
eSBjaGVjayB0aGUgdGltZXN0YW1wIHF1ZXJ5IGlmIHRoZSBzdWJtaXNzaW9uIGhhcyBmaW5pc2hl
ZC4KLSAgICAgICAgaWYgKGV2ZW50UXVlcnkuc2VyaWFsID4gbGFzdENvbXBsZXRlZFNlcmlhbCkK
KyAgICAgICAgaWYgKGV2ZW50UXVlcnkucXVlcnlIZWxwZXIuZ2V0U3RvcmVkUXVldWVTZXJpYWwo
KSA+IGxhc3RDb21wbGV0ZWRTZXJpYWwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gU2VlIGlmIHRoZSByZXN1bHRzIGFyZSBhdmFpbGFibGUu
CiAgICAgICAgIHVpbnQ2NF90IGdwdVRpbWVzdGFtcEN5Y2xlcyA9IDA7Ci0gICAgICAgIFZrUmVz
dWx0IHJlc3VsdCAgICAgICAgICAgICA9IG1HcHVFdmVudFF1ZXJ5UG9vbC5nZXRRdWVyeVBvb2wo
ZXZlbnRRdWVyeS5xdWVyeVBvb2xJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0+Z2V0UmVzdWx0cyhnZXREZXZpY2UoKSwgZXZlbnRRdWVyeS5xdWVyeUluZGV4LCAxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihncHVUaW1lc3Rh
bXBDeWNsZXMpLCAmZ3B1VGltZXN0YW1wQ3ljbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVvZihncHVUaW1lc3RhbXBDeWNsZXMpLCBWS19RVUVSWV9S
RVNVTFRfNjRfQklUKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBWS19OT1RfUkVBRFkpCisgICAg
ICAgIGJvb2wgYXZhaWxhYmxlICAgICAgICAgICAgICA9IGZhbHNlOworICAgICAgICBBTkdMRV9U
UlkoZXZlbnRRdWVyeS5xdWVyeUhlbHBlci5nZXRVaW50NjRSZXN1bHROb25CbG9ja2luZyh0aGlz
LCAmZ3B1VGltZXN0YW1wQ3ljbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXZhaWxhYmxlKSk7CisgICAgICAg
IGlmICghYXZhaWxhYmxlKQogICAgICAgICB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9WS19UUlkodGhpcywgcmVzdWx0KTsKIAotICAgICAgICBtR3B1RXZl
bnRRdWVyeVBvb2wuZnJlZVF1ZXJ5KHRoaXMsIGV2ZW50UXVlcnkucXVlcnlQb29sSW5kZXgsIGV2
ZW50UXVlcnkucXVlcnlJbmRleCk7CisgICAgICAgIG1HcHVFdmVudFF1ZXJ5UG9vbC5mcmVlUXVl
cnkodGhpcywgJmV2ZW50UXVlcnkucXVlcnlIZWxwZXIpOwogCi0gICAgICAgIEdwdUV2ZW50IGV2
ZW50OwotICAgICAgICBldmVudC5ncHVUaW1lc3RhbXBDeWNsZXMgPSBncHVUaW1lc3RhbXBDeWNs
ZXM7Ci0gICAgICAgIGV2ZW50Lm5hbWUgICAgICAgICAgICAgICA9IGV2ZW50UXVlcnkubmFtZTsK
LSAgICAgICAgZXZlbnQucGhhc2UgICAgICAgICAgICAgID0gZXZlbnRRdWVyeS5waGFzZTsKKyAg
ICAgICAgR3B1RXZlbnQgZ3B1RXZlbnQ7CisgICAgICAgIGdwdUV2ZW50LmdwdVRpbWVzdGFtcEN5
Y2xlcyA9IGdwdVRpbWVzdGFtcEN5Y2xlczsKKyAgICAgICAgZ3B1RXZlbnQubmFtZSAgICAgICAg
ICAgICAgID0gZXZlbnRRdWVyeS5uYW1lOworICAgICAgICBncHVFdmVudC5waGFzZSAgICAgICAg
ICAgICAgPSBldmVudFF1ZXJ5LnBoYXNlOwogCi0gICAgICAgIG1HcHVFdmVudHMuZW1wbGFjZV9i
YWNrKGV2ZW50KTsKKyAgICAgICAgbUdwdUV2ZW50cy5lbXBsYWNlX2JhY2soZ3B1RXZlbnQpOwog
CiAgICAgICAgICsrZmluaXNoZWRDb3VudDsKICAgICB9CkBAIC0xNjIxLDcgKzE3NzQsNyBAQCBh
bmdsZTo6UmVzdWx0IENvbnRleHRWazo6Y2hlY2tDb21wbGV0ZWRHcHVFdmVudHMoKQogCiB2b2lk
IENvbnRleHRWazo6Zmx1c2hHcHVFdmVudHMoZG91YmxlIG5leHRTeW5jR3B1VGltZXN0YW1wUywg
ZG91YmxlIG5leHRTeW5jQ3B1VGltZXN0YW1wUykKIHsKLSAgICBpZiAobUdwdUV2ZW50cy5zaXpl
KCkgPT0gMCkKKyAgICBpZiAobUdwdUV2ZW50cy5lbXB0eSgpKQogICAgIHsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE2NDYsMTAgKzE3OTksMTAgQEAgdm9pZCBDb250ZXh0Vms6OmZsdXNo
R3B1RXZlbnRzKGRvdWJsZSBuZXh0U3luY0dwdVRpbWVzdGFtcFMsIGRvdWJsZSBuZXh0U3luY0Nw
dVQKICAgICBncHVTeW5jRHJpZnRTbG9wZSA9CiAgICAgICAgIChuZXh0R3B1U3luY0RpZmZTIC0g
bGFzdEdwdVN5bmNEaWZmUykgLyAobmV4dEdwdVN5bmNUaW1lUyAtIGxhc3RHcHVTeW5jVGltZVMp
OwogCi0gICAgZm9yIChjb25zdCBHcHVFdmVudCAmZXZlbnQgOiBtR3B1RXZlbnRzKQorICAgIGZv
ciAoY29uc3QgR3B1RXZlbnQgJmdwdUV2ZW50IDogbUdwdUV2ZW50cykKICAgICB7CiAgICAgICAg
IGRvdWJsZSBncHVUaW1lc3RhbXBTID0KLSAgICAgICAgICAgIChldmVudC5ncHVUaW1lc3RhbXBD
eWNsZXMgLSBtR3B1RXZlbnRUaW1lc3RhbXBPcmlnaW4pICoKKyAgICAgICAgICAgIChncHVFdmVu
dC5ncHVUaW1lc3RhbXBDeWNsZXMgLSBtR3B1RXZlbnRUaW1lc3RhbXBPcmlnaW4pICoKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oCiAgICAgICAgICAgICAgICAgZ2V0UmVuZGVyZXIo
KS0+Z2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzKCkubGltaXRzLnRpbWVzdGFtcFBlcmlvZCkg
KgogICAgICAgICAgICAgMWUtOTsKQEAgLTE2NjIsOCArMTgxNSw5IEBAIHZvaWQgQ29udGV4dFZr
OjpmbHVzaEdwdUV2ZW50cyhkb3VibGUgbmV4dFN5bmNHcHVUaW1lc3RhbXBTLCBkb3VibGUgbmV4
dFN5bmNDcHVUCiAgICAgICAgIHN0YXRpYyBsb25nIGxvbmcgZXZlbnRJZCA9IDE7CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29yeUVuYWJsZWQgPQogICAgICAgICAg
ICAgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEKHBsYXRmb3JtLCAiZ3B1LmFu
Z2xlLmdwdSIpOwotICAgICAgICBwbGF0Zm9ybS0+YWRkVHJhY2VFdmVudChwbGF0Zm9ybSwgZXZl
bnQucGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgZXZlbnQubmFtZSwgZXZlbnRJZCsrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncHVUaW1lc3RhbXBTLCAwLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpOworICAgICAgICBwbGF0Zm9ybS0+
YWRkVHJhY2VFdmVudChwbGF0Zm9ybSwgZ3B1RXZlbnQucGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwg
Z3B1RXZlbnQubmFtZS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50SWQrKywgZ3B1VGltZXN0YW1wUywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsKICAg
ICB9CiAKICAgICBtR3B1RXZlbnRzLmNsZWFyKCk7CkBAIC0xNjgyLDE1ICsxODM2LDggQEAgdm9p
ZCBDb250ZXh0Vms6OmNsZWFyQWxsR2FyYmFnZSgpCiAKIHZvaWQgQ29udGV4dFZrOjpoYW5kbGVE
ZXZpY2VMb3N0KCkKIHsKLSAgICBpZiAoY29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAg
ICAgICAgbUNvbW1hbmRHcmFwaC5jbGVhcigpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5yZXNldCgpOwotICAgICAgICBtUmVuZGVy
UGFzc0NvbW1hbmRzLnJlc2V0KCk7Ci0gICAgfQorICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1h
bmRzLnJlc2V0KCk7CisgICAgbVJlbmRlclBhc3NDb21tYW5kcy5yZXNldCgpOwogCiAgICAgbUNv
bW1hbmRRdWV1ZS5oYW5kbGVEZXZpY2VMb3N0KG1SZW5kZXJlcik7CiAgICAgY2xlYXJBbGxHYXJi
YWdlKCk7CkBAIC0xOTM5LDggKzIwODYsOCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6ZHJh
d0FycmF5c0luZGlyZWN0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgaWYgKG1W
ZXJ0ZXhBcnJheS0+Z2V0U3RyZWFtaW5nVmVydGV4QXR0cmlic01hc2soKS5hbnkoKSkKICAgICB7
Ci0gICAgICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXIgPSBtRHJhd0ZyYW1l
YnVmZmVyLT5nZXRGcmFtZWJ1ZmZlcigpOwotICAgICAgICBjdXJyZW50SW5kaXJlY3RCdWYtPm9u
UmVhZCh0aGlzLCBmcmFtZWJ1ZmZlciwgVktfQUNDRVNTX0lORElSRUNUX0NPTU1BTkRfUkVBRF9C
SVQpOworICAgICAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLmJ1ZmZlclJlYWQoJm1SZXNvdXJjZVVz
ZUxpc3QsIFZLX0FDQ0VTU19JTkRJUkVDVF9DT01NQU5EX1JFQURfQklULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEluZGlyZWN0QnVmKTsKIAogICAgICAg
ICAvLyBXZSBoYXZlIGluc3RhbmNlZCB2ZXJ0ZXggYXR0cmlidXRlcyB0aGF0IG5lZWQgdG8gYmUg
ZW11bGF0ZWQgZm9yIFZ1bGthbi4KICAgICAgICAgLy8gaW52YWxpZGF0ZSBhbnkgY2FjaGUgYW5k
IG1hcCB0aGUgYnVmZmVyIHNvIHRoYXQgd2UgY2FuIHJlYWQgdGhlIGluZGlyZWN0IGRhdGEuCkBA
IC0xOTkzLDggKzIxNDAsOCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6ZHJhd0VsZW1lbnRz
SW5kaXJlY3QoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAobVZlcnRleEFy
cmF5LT5nZXRTdHJlYW1pbmdWZXJ0ZXhBdHRyaWJzTWFzaygpLmFueSgpKQogICAgIHsKLSAgICAg
ICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpmcmFtZWJ1ZmZlciA9IG1EcmF3RnJhbWVidWZmZXIt
PmdldEZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIGN1cnJlbnRJbmRpcmVjdEJ1Zi0+b25SZWFkKHRo
aXMsIGZyYW1lYnVmZmVyLCBWS19BQ0NFU1NfSU5ESVJFQ1RfQ09NTUFORF9SRUFEX0JJVCk7Cisg
ICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuYnVmZmVyUmVhZCgmbVJlc291cmNlVXNlTGlzdCwg
VktfQUNDRVNTX0lORElSRUNUX0NPTU1BTkRfUkVBRF9CSVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW5kaXJlY3RCdWYpOwogCiAgICAgICAgIC8vIFdl
IGhhdmUgaW5zdGFuY2VkIHZlcnRleCBhdHRyaWJ1dGVzIHRoYXQgbmVlZCB0byBiZSBlbXVsYXRl
ZCBmb3IgVnVsa2FuLgogICAgICAgICAvLyBpbnZhbGlkYXRlIGFueSBjYWNoZSBhbmQgbWFwIHRo
ZSBidWZmZXIgc28gdGhhdCB3ZSBjYW4gcmVhZCB0aGUgaW5kaXJlY3QgZGF0YS4KQEAgLTIwMTIs
NyArMjE1OSw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpkcmF3RWxlbWVudHNJbmRpcmVj
dChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwogICAgIH0KIAotICAgIGlmICh0eXBlID09IGdsOjpEcmF3RWxlbWVudHNU
eXBlOjpVbnNpZ25lZEJ5dGUgJiYgbUdyYXBoaWNzRGlydHlCaXRzW0RJUlRZX0JJVF9JTkRFWF9C
VUZGRVJdKQorICAgIGlmIChzaG91bGRDb252ZXJ0VWludDhWa0luZGV4VHlwZSh0eXBlKSAmJiBt
R3JhcGhpY3NEaXJ0eUJpdHNbRElSVFlfQklUX0lOREVYX0JVRkZFUl0pCiAgICAgewogICAgICAg
ICB2azo6QnVmZmVySGVscGVyICpkc3RJbmRpcmVjdEJ1ZjsKICAgICAgICAgVmtEZXZpY2VTaXpl
IGRzdEluZGlyZWN0QnVmT2Zmc2V0OwpAQCAtMjA1MCw2ICsyMTk3LDExMyBAQCBhbmdsZTo6UmVz
dWx0IENvbnRleHRWazo6ZHJhd0VsZW1lbnRzSW5kaXJlY3QoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCithbmdsZTo6
UmVzdWx0IENvbnRleHRWazo6Y2xlYXJXaXRoUmVuZGVyUGFzc09wKAorICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmNsZWFyQXJlYSwKKyAgICBnbDo6RHJhd0J1ZmZlck1hc2sgY2xlYXJDb2xvckJ1
ZmZlcnMsCisgICAgYm9vbCBjbGVhckRlcHRoLAorICAgIGJvb2wgY2xlYXJTdGVuY2lsLAorICAg
IGNvbnN0IFZrQ2xlYXJDb2xvclZhbHVlICZjbGVhckNvbG9yVmFsdWUsCisgICAgY29uc3QgVmtD
bGVhckRlcHRoU3RlbmNpbFZhbHVlICZjbGVhckRlcHRoU3RlbmNpbFZhbHVlKQoreworICAgIC8v
IFZhbGlkYXRlIGNhY2hlIHZhcmlhYmxlIGlzIGluIHN5bmMuCisgICAgQVNTRVJUKG1EcmF3RnJh
bWVidWZmZXIgPT0gdms6OkdldEltcGwobVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpKSk7CisK
KyAgICAvLyBTdGFydCBhIG5ldyByZW5kZXIgcGFzcyBpZjoKKyAgICAvLworICAgIC8vIC0gbm8g
cmVuZGVyIHBhc3MgaGFzIHN0YXJ0ZWQsCisgICAgLy8gLSB0aGVyZSBpcyBhIHJlbmRlciBwYXNz
IHN0YXJ0ZWQgYnV0IGl0IGNvbnRhaW5zIGNvbW1hbmRzOyB3ZSBjYW5ub3QgbW9kaWZ5IGl0cyBv
cHMsIHNvIG5ldworICAgIC8vIHJlbmRlciBwYXNzIGlzIG5lZWRlZCwKKyAgICAvLyAtIHRoZSBj
dXJyZW50IHJlbmRlciBhcmVhIGRvZXNuJ3QgbWF0Y2ggdGhlIGNsZWFyIGFyZWEuICBXZSBuZWVk
IHRoZSByZW5kZXIgYXJlYSB0byBiZQorICAgIC8vIGV4YWN0bHkgYXMgc3BlY2lmaWVkIGJ5IHRo
ZSBzY2lzc29yIGZvciB0aGUgbG9hZE9wIHRvIGNsZWFyIG9ubHkgdGhhdCBhcmVhLiAgU2VlCisg
ICAgLy8gQ29udGV4dFZrOjp1cGRhdGVTY2lzc29yIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAg
IGlmICghbVJlbmRlclBhc3NDb21tYW5kcy5zdGFydGVkKCkgfHwKKyAgICAgICAgKG1SZW5kZXJQ
YXNzQ29tbWFuZHMuc3RhcnRlZCgpICYmICFtUmVuZGVyUGFzc0NvbW1hbmRzLmVtcHR5KCkpIHx8
CisgICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuZ2V0UmVuZGVyQXJlYSgpICE9IGNsZWFyQXJl
YSkKKyAgICB7CisgICAgICAgIG1HcmFwaGljc0RpcnR5Qml0cyB8PSBtTmV3R3JhcGhpY3NDb21t
YW5kQnVmZmVyRGlydHlCaXRzOworICAgICAgICBBTkdMRV9UUlkobURyYXdGcmFtZWJ1ZmZlci0+
c3RhcnROZXdSZW5kZXJQYXNzKHRoaXMsIGNsZWFyQXJlYSwgJm1SZW5kZXJQYXNzQ29tbWFuZEJ1
ZmZlcikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmbHVzaE91dHNpZGVSZW5k
ZXJQYXNzQ29tbWFuZHMoKTsKKyAgICB9CisKKyAgICBzaXplX3QgYXR0YWNobWVudEluZGV4Vmsg
PSAwOworCisgICAgLy8gR28gdGhyb3VnaCBjbGVhckNvbG9yQnVmZmVycyBhbmQgc2V0IHRoZSBh
cHByb3ByaWF0ZSBsb2FkT3AgYW5kIGNsZWFyIHZhbHVlcy4KKyAgICBmb3IgKHNpemVfdCBjb2xv
ckluZGV4R0wgOiBtRHJhd0ZyYW1lYnVmZmVyLT5nZXRTdGF0ZSgpLmdldEVuYWJsZWREcmF3QnVm
ZmVycygpKQorICAgIHsKKyAgICAgICAgaWYgKGNsZWFyQ29sb3JCdWZmZXJzLnRlc3QoY29sb3JJ
bmRleEdMKSkKKyAgICAgICAgeworICAgICAgICAgICAgUmVuZGVyVGFyZ2V0VmsgKnJlbmRlclRh
cmdldCA9IG1EcmF3RnJhbWVidWZmZXItPmdldENvbG9yRHJhd1JlbmRlclRhcmdldChjb2xvcklu
ZGV4R0wpOworCisgICAgICAgICAgICAvLyBJZiB0aGUgcmVuZGVyIHRhcmdldCBkb2Vzbid0IGhh
dmUgYWxwaGEsIGJ1dCBpdHMgZW11bGF0ZWQgZm9ybWF0IGhhcyBpdCwgY2xlYXIgdGhlCisgICAg
ICAgICAgICAvLyBhbHBoYSB0byAxLgorICAgICAgICAgICAgVmtDbGVhckNvbG9yVmFsdWUgdmFs
dWUgPSBjbGVhckNvbG9yVmFsdWU7CisgICAgICAgICAgICBpZiAobURyYXdGcmFtZWJ1ZmZlci0+
Z2V0RW11bGF0ZWRBbHBoYUF0dGFjaG1lbnRNYXNrKClbY29sb3JJbmRleEdMXSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCB2azo6Rm9ybWF0ICZmb3JtYXQgPSByZW5kZXJU
YXJnZXQtPmdldEltYWdlRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdC52a0Zv
cm1hdElzSW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZv
cm1hdC52a0Zvcm1hdElzVW5zaWduZWQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLnVpbnQzMlszXSA9IGtFbXVsYXRlZEFscGhhVmFsdWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5pbnQzMlszXSA9IGtF
bXVsYXRlZEFscGhhVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUuZmxvYXQzMlszXSA9IGtFbXVsYXRlZEFscGhhVmFsdWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtUmVuZGVyUGFzc0NvbW1h
bmRzLmNsZWFyUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudChhdHRhY2htZW50SW5kZXhWaywgdmFs
dWUpOworICAgICAgICB9CisgICAgICAgICsrYXR0YWNobWVudEluZGV4Vms7CisgICAgfQorCisg
ICAgLy8gU2V0IHRoZSBhcHByb3ByaWF0ZSBsb2FkT3AgYW5kIGNsZWFyIHZhbHVlcyBmb3IgZGVw
dGggYW5kIHN0ZW5jaWwuCisgICAgUmVuZGVyVGFyZ2V0VmsgKmRlcHRoU3RlbmNpbFJlbmRlclRh
cmdldCA9IG1EcmF3RnJhbWVidWZmZXItPmdldERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgpOwor
ICAgIGlmIChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBjb25zdCB2
azo6Rm9ybWF0ICZmb3JtYXQgPSBkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQtPmdldEltYWdlRm9y
bWF0KCk7CisgICAgICAgIGlmIChmb3JtYXQuaGFzRW11bGF0ZWRJbWFnZUNoYW5uZWxzKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXQuaW50ZW5kZWRGb3JtYXQoKS5zdGVuY2ls
Qml0cyA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb3Jt
YXQgd2UgcGlja2VkIGhhcyBzdGVuY2lsIGJ1dCB1c2VyIGRpZCBub3QgYXNrIGZvcgorICAgICAg
ICAgICAgICAgIC8vIGl0IGR1ZSB0byBoYXJkd2FyZSBsaW1pdGF0aW9uLCBmb3JjZSBjbGVhciB0
aGUgc3RlbmNpbCBzbworICAgICAgICAgICAgICAgIC8vIHRoYXQgbm8gbG9hZCB3aWxsIGhhcHBl
bi4gQWxzbyBkb24ndCB0cnkgdG8gc3RvcmUgc3RlbmNpbAorICAgICAgICAgICAgICAgIC8vIHZh
bHVlIGFzIHdlbGwuIFNhbWUgbG9naWMgZm9yIGRlcHRoIGJpdHMgYmVsbG93LgorICAgICAgICAg
ICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuaW52YWxpZGF0ZVJlbmRlclBhc3NTdGVuY2lsQXR0
YWNobWVudChhdHRhY2htZW50SW5kZXhWayk7CisgICAgICAgICAgICAgICAgY2xlYXJTdGVuY2ls
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmb3JtYXQuaW50ZW5kZWRG
b3JtYXQoKS5kZXB0aEJpdHMgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBt
UmVuZGVyUGFzc0NvbW1hbmRzLmludmFsaWRhdGVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50KGF0
dGFjaG1lbnRJbmRleFZrKTsKKyAgICAgICAgICAgICAgICBjbGVhckRlcHRoID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChjbGVhckRlcHRoKQorICAgICAg
ICB7CisgICAgICAgICAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLmNsZWFyUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudChhdHRhY2htZW50SW5kZXhWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRGVwdGhTdGVuY2lsVmFs
dWUuZGVwdGgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNsZWFyU3RlbmNpbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbVJlbmRlclBhc3NDb21tYW5kcy5jbGVhclJlbmRlclBhc3NTdGVu
Y2lsQXR0YWNobWVudChhdHRhY2htZW50SW5kZXhWaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJEZXB0aFN0ZW5j
aWxWYWx1ZS5zdGVuY2lsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKK30KKwogZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXMgQ29udGV4dFZr
OjpnZXRSZXNldFN0YXR1cygpCiB7CiAgICAgaWYgKG1SZW5kZXJlci0+aXNEZXZpY2VMb3N0KCkp
CkBAIC0yMDc0LDcxICsyMzI4LDc2IEBAIHN0ZDo6c3RyaW5nIENvbnRleHRWazo6Z2V0UmVuZGVy
ZXJEZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJE
ZXNjcmlwdGlvbigpOwogfQogCi12b2lkIENvbnRleHRWazo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xz
aXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZr
OjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQog
ewotICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewotICAgICAgICBzdGQ6OnN0
cmluZyBtYXJrZXJTdHIobWFya2VyLCBsZW5ndGggPD0gMCA/IHN0cmxlbihtYXJrZXIpIDogbGVu
Z3RoKTsKLSAgICAgICAgbUNvbW1hbmRHcmFwaC5pbnNlcnREZWJ1Z01hcmtlcihHTF9ERUJVR19T
T1VSQ0VfQVBQTElDQVRJT04sIHN0ZDo6bW92ZShtYXJrZXIpKTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogaHR0cDovL2FuZ2xlYnVnLmNvbS80MDI5
Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9CisgICAgaWYgKCFtUmVuZGVyZXItPmVu
YWJsZURlYnVnVXRpbHMoKSkKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OworCisgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5OworICAgIEFOR0xFX1RS
WShmbHVzaEFuZEdldFByaW1hcnlDb21tYW5kQnVmZmVyKCZwcmltYXJ5KSk7CisKKyAgICBWa0Rl
YnVnVXRpbHNMYWJlbEVYVCBsYWJlbDsKKyAgICB2azo6TWFrZURlYnVnVXRpbHNMYWJlbChHTF9E
RUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIG1hcmtlciwgJmxhYmVsKTsKKyAgICBwcmltYXJ5LT5p
bnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQobGFiZWwpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHRWazo6cHVzaEdyb3VwTWFya2VyKEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCithbmdsZTo6UmVzdWx0IENvbnRleHRWazo6
cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7Ci0g
ICAgaWYgKGNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5n
IG1hcmtlclN0cihtYXJrZXIsIGxlbmd0aCA8PSAwID8gc3RybGVuKG1hcmtlcikgOiBsZW5ndGgp
OwotICAgICAgICBtQ29tbWFuZEdyYXBoLnB1c2hEZWJ1Z01hcmtlcihHTF9ERUJVR19TT1VSQ0Vf
QVBQTElDQVRJT04sIHN0ZDo6bW92ZShtYXJrZXIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogaHR0cDovL2FuZ2xlYnVnLmNvbS80MDI5Ci0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9CisgICAgaWYgKCFtUmVuZGVyZXItPmVuYWJsZURl
YnVnVXRpbHMoKSkKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworCisg
ICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5OworICAgIEFOR0xFX1RSWShmbHVz
aEFuZEdldFByaW1hcnlDb21tYW5kQnVmZmVyKCZwcmltYXJ5KSk7CisKKyAgICBWa0RlYnVnVXRp
bHNMYWJlbEVYVCBsYWJlbDsKKyAgICB2azo6TWFrZURlYnVnVXRpbHNMYWJlbChHTF9ERUJVR19T
T1VSQ0VfQVBQTElDQVRJT04sIG1hcmtlciwgJmxhYmVsKTsKKyAgICBwcmltYXJ5LT5iZWdpbkRl
YnVnVXRpbHNMYWJlbEVYVChsYWJlbCk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpwb3BHcm91cE1hcmtlcigpCithbmdsZTo6UmVz
dWx0IENvbnRleHRWazo6cG9wR3JvdXBNYXJrZXIoKQogewotICAgIGlmIChjb21tYW5kR3JhcGhF
bmFibGVkKCkpCi0gICAgewotICAgICAgICBtQ29tbWFuZEdyYXBoLnBvcERlYnVnTWFya2VyKCk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGh0dHA6
Ly9hbmdsZWJ1Zy5jb20vNDAyOQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAg
IGlmICghbVJlbmRlcmVyLT5lbmFibGVEZWJ1Z1V0aWxzKCkpCisgICAgICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKKworICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJp
bWFyeTsKKyAgICBBTkdMRV9UUlkoZmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigmcHJp
bWFyeSkpOworICAgIHByaW1hcnktPmVuZERlYnVnVXRpbHNMYWJlbEVYVCgpOworCisgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHRWazo6cHVzaERl
YnVnR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVz
c2FnZSkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpwdXNoRGVidWdHcm91cChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKIHsKLSAgICBpZiAoY29tbWFuZEdyYXBoRW5hYmxlZCgp
KQotICAgIHsKLSAgICAgICAgbUNvbW1hbmRHcmFwaC5pbnNlcnREZWJ1Z01hcmtlcihzb3VyY2Us
IHN0ZDo6c3RyaW5nKG1lc3NhZ2UpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogaHR0cDovL2FuZ2xlYnVnLmNvbS80MDI5Ci0gICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICB9CisgICAgaWYgKCFtUmVuZGVyZXItPmVuYWJsZURlYnVnVXRpbHMo
KSkKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworCisgICAgdms6OlBy
aW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5OworICAgIEFOR0xFX1RSWShmbHVzaEFuZEdldFBy
aW1hcnlDb21tYW5kQnVmZmVyKCZwcmltYXJ5KSk7CisKKyAgICBWa0RlYnVnVXRpbHNMYWJlbEVY
VCBsYWJlbDsKKyAgICB2azo6TWFrZURlYnVnVXRpbHNMYWJlbChzb3VyY2UsIG1lc3NhZ2UuY19z
dHIoKSwgJmxhYmVsKTsKKyAgICBwcmltYXJ5LT5pbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQobGFi
ZWwpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIENv
bnRleHRWazo6cG9wRGVidWdHcm91cCgpCithbmdsZTo6UmVzdWx0IENvbnRleHRWazo6cG9wRGVi
dWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBpZiAoY29tbWFuZEdy
YXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgbUNvbW1hbmRHcmFwaC5wb3BEZWJ1Z01hcmtl
cigpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBo
dHRwOi8vYW5nbGVidWcuY29tLzQwMjkKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0K
KyAgICBpZiAoIW1SZW5kZXJlci0+ZW5hYmxlRGVidWdVdGlscygpKQorICAgICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisKKyAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIg
KnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGZsdXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRCdWZmZXIo
JnByaW1hcnkpKTsKKyAgICBwcmltYXJ5LT5lbmREZWJ1Z1V0aWxzTGFiZWxFWFQoKTsKKworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAogYm9vbCBDb250ZXh0Vms6Omlz
Vmlld3BvcnRGbGlwRW5hYmxlZEZvckRyYXdGQk8oKSBjb25zdApAQCAtMjE1MSw2ICsyNDEwLDE1
IEBAIGJvb2wgQ29udGV4dFZrOjppc1ZpZXdwb3J0RmxpcEVuYWJsZWRGb3JSZWFkRkJPKCkgY29u
c3QKICAgICByZXR1cm4gbUZsaXBWaWV3cG9ydEZvclJlYWRGcmFtZWJ1ZmZlcjsKIH0KIAorYm9v
bCBDb250ZXh0Vms6OmlzUm90YXRlZEFzcGVjdFJhdGlvRm9yRHJhd0ZCTygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIElzUm90YXRlZEFzcGVjdFJhdGlvKG1DdXJyZW50Um90YXRpb25EcmF3RnJhbWVi
dWZmZXIpOworfQorYm9vbCBDb250ZXh0Vms6OmlzUm90YXRlZEFzcGVjdFJhdGlvRm9yUmVhZEZC
TygpIGNvbnN0Cit7CisgICAgcmV0dXJuIElzUm90YXRlZEFzcGVjdFJhdGlvKG1DdXJyZW50Um90
YXRpb25SZWFkRnJhbWVidWZmZXIpOworfQorCiB2b2lkIENvbnRleHRWazo6dXBkYXRlQ29sb3JN
YXNrKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlKQogewogICAgIG1DbGVhckNvbG9y
TWFzayA9CkBAIC0yMjE4LDExICsyNDg2LDIxIEBAIHZvaWQgQ29udGV4dFZrOjp1cGRhdGVWaWV3
cG9ydChGcmFtZWJ1ZmZlclZrICpmcmFtZWJ1ZmZlclZrLAogICAgICAgICBjb3JyZWN0ZWRIZWln
aHQgPSB2aWV3cG9ydEJvdW5kc1JhbmdlSGlnaCAtIGNvcnJlY3RlZFk7CiAgICAgfQogCisgICAg
Z2w6OkJveCBmcmFtZWJ1ZmZlckRpbWVuc2lvbnMgPSBmcmFtZWJ1ZmZlclZrLT5nZXRTdGF0ZSgp
LmdldERpbWVuc2lvbnMoKTsKKyAgICBpZiAoaXNSb3RhdGVkQXNwZWN0UmF0aW9Gb3JEcmF3RkJP
KCkpCisgICAgeworICAgICAgICAvLyBUaGUgc3VyZmFjZSBpcyByb3RhdGVkIDkwLzI3MCBkZWdy
ZWVzLiAgVGhpcyBjaGFuZ2VzIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHN1cmZhY2UuCisgICAg
ICAgIC8vIFN3YXAgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0IHdlIGNhbGN1
bGF0ZSwgYW5kIHRoZSBmcmFtZWJ1ZmZlciBoZWlnaHQgdGhhdAorICAgICAgICAvLyB3ZSB1c2Ug
dG8gY2FsY3VsYXRlIGl0IHdpdGguCisgICAgICAgIC8vIFRPRE8oaWFuZWxsaW90dCk6IGhhbmRs
ZSBzbWFsbCB2aWV3cG9ydC9zY2lzc29yIGNhc2VzLiAgaHR0cDovL2FuZ2xlYnVnLmNvbS80NDMx
CisgICAgICAgIHN0ZDo6c3dhcChjb3JyZWN0ZWRXaWR0aCwgY29ycmVjdGVkSGVpZ2h0KTsKKyAg
ICAgICAgc3RkOjpzd2FwKGZyYW1lYnVmZmVyRGltZW5zaW9ucy53aWR0aCwgZnJhbWVidWZmZXJE
aW1lbnNpb25zLmhlaWdodCk7CisgICAgfQogICAgIGdsOjpSZWN0YW5nbGUgY29ycmVjdGVkUmVj
dCA9CiAgICAgICAgIGdsOjpSZWN0YW5nbGUoY29ycmVjdGVkWCwgY29ycmVjdGVkWSwgY29ycmVj
dGVkV2lkdGgsIGNvcnJlY3RlZEhlaWdodCk7CiAKICAgICBnbF92azo6R2V0Vmlld3BvcnQoY29y
cmVjdGVkUmVjdCwgbmVhclBsYW5lLCBmYXJQbGFuZSwgaW52ZXJ0Vmlld3BvcnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyVmstPmdldFN0YXRlKCkuZ2V0RGltZW5zaW9ucygp
LmhlaWdodCwgJnZrVmlld3BvcnQpOworICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZl
ckRpbWVuc2lvbnMuaGVpZ2h0LCAmdmtWaWV3cG9ydCk7CiAgICAgbUdyYXBoaWNzUGlwZWxpbmVE
ZXNjLT51cGRhdGVWaWV3cG9ydCgmbUdyYXBoaWNzUGlwZWxpbmVUcmFuc2l0aW9uLCB2a1ZpZXdw
b3J0KTsKICAgICBpbnZhbGlkYXRlR3JhcGhpY3NEcml2ZXJVbmlmb3JtcygpOwogfQpAQCAtMjIz
Myw3ICsyNTExLDcgQEAgdm9pZCBDb250ZXh0Vms6OnVwZGF0ZURlcHRoUmFuZ2UoZmxvYXQgbmVh
clBsYW5lLCBmbG9hdCBmYXJQbGFuZSkKICAgICBtR3JhcGhpY3NQaXBlbGluZURlc2MtPnVwZGF0
ZURlcHRoUmFuZ2UoJm1HcmFwaGljc1BpcGVsaW5lVHJhbnNpdGlvbiwgbmVhclBsYW5lLCBmYXJQ
bGFuZSk7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjp1cGRhdGVTY2lzc29yKGNvbnN0IGdsOjpTdGF0
ZSAmZ2xTdGF0ZSkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjp1cGRhdGVTY2lzc29yKGNvbnN0
IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkKIHsKICAgICBGcmFtZWJ1ZmZlclZrICpmcmFtZWJ1ZmZlclZr
ID0gdms6OkdldEltcGwoZ2xTdGF0ZS5nZXREcmF3RnJhbWVidWZmZXIoKSk7CiAgICAgZ2w6OlJl
Y3RhbmdsZSByZW5kZXJBcmVhICAgICA9IGZyYW1lYnVmZmVyVmstPmdldENvbXBsZXRlUmVuZGVy
QXJlYSgpOwpAQCAtMjI0NywyMSArMjUyNSw0OCBAQCB2b2lkIENvbnRleHRWazo6dXBkYXRlU2Np
c3Nvcihjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpCiAgICAgewogICAgICAgICBzY2lzc29yZWRB
cmVhLnkgPSByZW5kZXJBcmVhLmhlaWdodCAtIHNjaXNzb3JlZEFyZWEueSAtIHNjaXNzb3JlZEFy
ZWEuaGVpZ2h0OwogICAgIH0KKyAgICBpZiAoaXNSb3RhdGVkQXNwZWN0UmF0aW9Gb3JEcmF3RkJP
KCkpCisgICAgeworICAgICAgICAvLyBUaGUgc3VyZmFjZSBpcyByb3RhdGVkIDkwLzI3MCBkZWdy
ZWVzLiAgVGhpcyBjaGFuZ2VzIHRoZSBhc3BlY3QgcmF0aW8gb2YgdGhlIHN1cmZhY2UuCisgICAg
ICAgIC8vIFN3YXAgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNjaXNzb3Igd2UgdXNlLgor
ICAgICAgICAvLyBUT0RPKGlhbmVsbGlvdHQpOiBoYW5kbGUgc21hbGwgdmlld3BvcnQvc2Npc3Nv
ciBjYXNlcy4gIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQzMQorICAgICAgICBzdGQ6OnN3YXAoc2Np
c3NvcmVkQXJlYS53aWR0aCwgc2Npc3NvcmVkQXJlYS5oZWlnaHQpOworICAgIH0KIAogICAgIG1H
cmFwaGljc1BpcGVsaW5lRGVzYy0+dXBkYXRlU2Npc3NvcigmbUdyYXBoaWNzUGlwZWxpbmVUcmFu
c2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF92azo6
R2V0UmVjdChzY2lzc29yZWRBcmVhKSk7CiAKLSAgICBmcmFtZWJ1ZmZlclZrLT5vblNjaXNzb3JD
aGFuZ2UodGhpcyk7CisgICAgLy8gSWYgdGhlIHNjaXNzb3IgaGFzIGdyb3duIGJleW9uZCB0aGUg
cHJldmlvdXMgc2Npc3NvcmVkUmVuZGVyQXJlYSwgbWFrZSBzdXJlIHRoZSByZW5kZXIgcGFzcwor
ICAgIC8vIGlzIHJlc3RhcnRlZC4gIE90aGVyd2lzZSwgd2UgY2FuIGNvbnRpbnVlIHVzaW5nIHRo
ZSBzYW1lIHJlbmRlcnBhc3MgYXJlYS4KKyAgICAvLworICAgIC8vIFdpdGhvdXQgYSBzY2lzc29y
LCB0aGUgcmVuZGVyIHBhc3MgYXJlYSBjb3ZlcnMgdGhlIHdob2xlIG9mIHRoZSBmcmFtZWJ1ZmZl
ci4gIFdpdGggYQorICAgIC8vIHNjaXNzb3JlZCBjbGVhciwgdGhlIHJlbmRlciBwYXNzIGFyZWEg
Y291bGQgYmUgc21hbGxlciB0aGFuIHRoZSBmcmFtZWJ1ZmZlciBzaXplLiAgV2hlbiB0aGUKKyAg
ICAvLyBzY2lzc29yIGNoYW5nZXMsIGlmIHRoZSBzY2lzc29yIGFyZWEgaXMgY29tcGxldGVseSBl
bmNvbXBhc3NlZCBieSB0aGUgcmVuZGVyIHBhc3MgYXJlYSwgaXQncworICAgIC8vIHBvc3NpYmxl
IHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzYW1lIHJlbmRlciBwYXNzLiAgSG93ZXZlciwgaWYgdGhl
IGN1cnJlbnQgcmVuZGVyIHBhc3MgYXJlYQorICAgIC8vIGlzIHRvbyBzbWFsbCwgd2UgbmVlZCB0
byBzdGFydCBhIG5ldyBvbmUuICBUaGUgbGF0dGVyIGNhbiBoYXBwZW4gaWYgYSBzY2lzc29yZWQg
Y2xlYXIgc3RhcnRzCisgICAgLy8gYSByZW5kZXIgcGFzcywgdGhlIHNjaXNzb3IgaXMgZGlzYWJs
ZWQgYW5kIGEgZHJhdyBjYWxsIGlzIGlzc3VlZCB0byBhZmZlY3QgdGhlIHdob2xlCisgICAgLy8g
ZnJhbWVidWZmZXIuCisgICAgZ2w6OlJlY3RhbmdsZSBzY2lzc29yZWRSZW5kZXJBcmVhID0gZnJh
bWVidWZmZXJWay0+Z2V0U2Npc3NvcmVkUmVuZGVyQXJlYSh0aGlzKTsKKyAgICBpZiAoIW1SZW5k
ZXJQYXNzQ29tbWFuZHMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGlmICghbVJlbmRlclBhc3ND
b21tYW5kcy5nZXRSZW5kZXJBcmVhKCkuZW5jbG9zZXMoc2Npc3NvcmVkUmVuZGVyQXJlYSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFOR0xFX1RSWShlbmRSZW5kZXJQYXNzKCkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCiBh
bmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U3RhdGU6
OkRpcnR5Qml0cyAmZGlydHlCaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmYml0TWFzaykKIHsKLSAgICBjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpTdGF0
ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwor
ICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqcHJvZ3JhbUV4ZWN1dGFibGUgPSBnbFN0
YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CiAKICAgICBpZiAoKGRpcnR5Qml0cyAmIG1QaXBl
bGluZURpcnR5Qml0c01hc2spLmFueSgpICYmCi0gICAgICAgIChnbFN0YXRlLmdldFByb2dyYW0o
KSA9PSBudWxscHRyIHx8ICFnbFN0YXRlLmdldFByb2dyYW0oKS0+aXNDb21wdXRlKCkpKQorICAg
ICAgICAocHJvZ3JhbUV4ZWN1dGFibGUgPT0gbnVsbHB0ciB8fCAhcHJvZ3JhbUV4ZWN1dGFibGUt
PmlzQ29tcHV0ZSgpKSkKICAgICB7CiAgICAgICAgIGludmFsaWRhdGVDdXJyZW50R3JhcGhpY3NQ
aXBlbGluZSgpOwogICAgIH0KQEAgLTIyNzMsNyArMjU3OCw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29u
dGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU0NJU1NPUl9URVNUX0VOQUJM
RUQ6CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NDSVNTT1I6Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlU2Npc3NvcihnbFN0YXRlKTsKKyAgICAgICAgICAgICAgICBBTkdM
RV9UUlkodXBkYXRlU2Npc3NvcihnbFN0YXRlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1ZJRVdQT1JUOgogICAgICAgICAg
ICAgewpAQCAtMjI4MSw3ICsyNTg2LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5bmNT
dGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICB1cGRhdGVW
aWV3cG9ydChmcmFtZWJ1ZmZlclZrLCBnbFN0YXRlLmdldFZpZXdwb3J0KCksIGdsU3RhdGUuZ2V0
TmVhclBsYW5lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xTdGF0ZS5nZXRG
YXJQbGFuZSgpLCBpc1ZpZXdwb3J0RmxpcEVuYWJsZWRGb3JEcmF3RkJPKCkpOwogICAgICAgICAg
ICAgICAgIC8vIFVwZGF0ZSB0aGUgc2Npc3Nvciwgd2hpY2ggd2lsbCBiZSBjb25zdHJhaW5lZCB0
byB0aGUgdmlld3BvcnQKLSAgICAgICAgICAgICAgICB1cGRhdGVTY2lzc29yKGdsU3RhdGUpOwor
ICAgICAgICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTY2lzc29yKGdsU3RhdGUpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgZ2w6OlN0
YXRlOjpESVJUWV9CSVRfREVQVEhfUkFOR0U6CkBAIC0yNDMzLDIwICsyNzM4LDIxIEBAIGFuZ2xl
OjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElS
VFlfQklUX1JFQURfRlJBTUVCVUZGRVJfQklORElORzoKICAgICAgICAgICAgICAgICB1cGRhdGVG
bGlwVmlld3BvcnRSZWFkRnJhbWVidWZmZXIoY29udGV4dC0+Z2V0U3RhdGUoKSk7CisgICAgICAg
ICAgICAgICAgdXBkYXRlU3VyZmFjZVJvdGF0aW9uUmVhZEZyYW1lYnVmZmVyKGdsU3RhdGUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZ
X0JJVF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgLy8gRnJhbWVidWZmZXJWazo6c3luY1N0YXRlIHNpZ25hbHMgdGhhdCB3ZSBzaG91bGQg
c3RhcnQgYSBuZXcgY29tbWFuZCBidWZmZXIuCiAgICAgICAgICAgICAgICAgLy8gQnV0IGNoYW5n
aW5nIHRoZSBiaW5kaW5nIGNhbiBza2lwIEZyYW1lYnVmZmVyVms6OnN5bmNTdGF0ZSBpZiB0aGUg
RnJhbWVidWZmZXIKICAgICAgICAgICAgICAgICAvLyBoYXMgbm8gZGlydHkgYml0cy4gVGh1cyB3
ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2xlYXIgdGhlIGN1cnJlbnQgY29tbWFuZAotICAgICAgICAg
ICAgICAgIC8vIGJ1ZmZlciB0byBlbnN1cmUgd2Ugc3RhcnQgYSBuZXcgb25lLiBOb3RlIHRoYXQg
d2UgbmVlZCBhIG5ldyBjb21tYW5kIGJ1ZmZlcgotICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ug
YSBjb21tYW5kIGdyYXBoIG5vZGUgY2FuIG9ubHkgc3VwcG9ydCBvbmUgUmVuZGVyUGFzcyBjb25m
aWd1cmF0aW9uIGF0Ci0gICAgICAgICAgICAgICAgLy8gYSB0aW1lLgorICAgICAgICAgICAgICAg
IC8vIGJ1ZmZlciB0byBlbnN1cmUgd2Ugc3RhcnQgYSBuZXcgb25lLiBOb3RlIHRoYXQgd2UgYWx3
YXlzIHN0YXJ0IGEgbmV3IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAvLyBidWZmZXIgYmVjYXVz
ZSB3ZSBjdXJyZW50bHkgY2FuIG9ubHkgc3VwcG9ydCBvbmUgb3BlbiBSZW5kZXJQYXNzIGF0IGEg
dGltZS4KICAgICAgICAgICAgICAgICBvblJlbmRlclBhc3NGaW5pc2hlZCgpOwogCiAgICAgICAg
ICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldERy
YXdGcmFtZWJ1ZmZlcigpOwogICAgICAgICAgICAgICAgIG1EcmF3RnJhbWVidWZmZXIgICAgICAg
ICAgICAgICAgID0gdms6OkdldEltcGwoZHJhd0ZyYW1lYnVmZmVyKTsKICAgICAgICAgICAgICAg
ICB1cGRhdGVGbGlwVmlld3BvcnREcmF3RnJhbWVidWZmZXIoZ2xTdGF0ZSk7CisgICAgICAgICAg
ICAgICAgdXBkYXRlU3VyZmFjZVJvdGF0aW9uRHJhd0ZyYW1lYnVmZmVyKGdsU3RhdGUpOwogICAg
ICAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0KG1EcmF3RnJhbWVidWZmZXIsIGdsU3RhdGUuZ2V0
Vmlld3BvcnQoKSwgZ2xTdGF0ZS5nZXROZWFyUGxhbmUoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbFN0YXRlLmdldEZhclBsYW5lKCksIGlzVmlld3BvcnRGbGlwRW5hYmxlZEZv
ckRyYXdGQk8oKSk7CiAgICAgICAgICAgICAgICAgdXBkYXRlQ29sb3JNYXNrKGdsU3RhdGUuZ2V0
QmxlbmRTdGF0ZSgpKTsKQEAgLTI0NTYsNyArMjc2Miw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4
dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgbUdyYXBoaWNzUGlwZWxpbmVEZXNjLT51cGRhdGVGcm9udEZhY2UoJm1HcmFwaGljc1BpcGVs
aW5lVHJhbnNpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbFN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlld3BvcnRGbGlw
RW5hYmxlZEZvckRyYXdGQk8oKSk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlU2Npc3NvcihnbFN0
YXRlKTsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkodXBkYXRlU2Npc3NvcihnbFN0YXRlKSk7
CiAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNp
bFN0YXRlID0gZ2xTdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOwogICAgICAgICAgICAgICAg
IG1HcmFwaGljc1BpcGVsaW5lRGVzYy0+dXBkYXRlRGVwdGhUZXN0RW5hYmxlZCgmbUdyYXBoaWNz
UGlwZWxpbmVUcmFuc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZSwgZHJhd0ZyYW1lYnVm
ZmVyKTsKQEAgLTI0ODcsMTYgKzI3OTMsMTggQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5
bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNhc2UgZ2w6
OlN0YXRlOjpESVJUWV9CSVRfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkc6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklU
X1BST0dSQU1fQklORElORzoKLSAgICAgICAgICAgICAgICBtUHJvZ3JhbSA9IHZrOjpHZXRJbXBs
KGdsU3RhdGUuZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBtUHJvZ3JhbSAgICA9IHZr
OjpHZXRJbXBsKGdsU3RhdGUuZ2V0UHJvZ3JhbSgpKTsKKyAgICAgICAgICAgICAgICBtRXhlY3V0
YWJsZSA9ICZtUHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QUk9HUkFNX0VYRUNVVEFC
TEU6CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHByb2dyYW1FeGVjdXRh
YmxlKTsKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlQ3VycmVudERlZmF1bHRVbmlmb3Jtcygp
OwogICAgICAgICAgICAgICAgIEFTU0VSVChnbDo6U3RhdGU6OkRJUlRZX0JJVF9URVhUVVJFX0JJ
TkRJTkdTID4KICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUFJP
R1JBTV9FWEVDVVRBQkxFKTsKICAgICAgICAgICAgICAgICBpdGVyLnNldExhdGVyQml0KGdsOjpT
dGF0ZTo6RElSVFlfQklUX1RFWFRVUkVfQklORElOR1MpOwogICAgICAgICAgICAgICAgIGludmFs
aWRhdGVDdXJyZW50U2hhZGVyUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGdsU3Rh
dGUuZ2V0UHJvZ3JhbSgpLT5pc0NvbXB1dGUoKSkKKyAgICAgICAgICAgICAgICBpZiAocHJvZ3Jh
bUV4ZWN1dGFibGUtPmlzQ29tcHV0ZSgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgaW52YWxpZGF0ZUN1cnJlbnRDb21wdXRlUGlwZWxpbmUoKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0yNTA3LDcgKzI4MTUsOSBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3lu
Y1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICBp
bnZhbGlkYXRlRGVmYXVsdEF0dHJpYnV0ZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5nZXRTdGF0ZUNhY2hlKCkuZ2V0QWN0aXZlRGVmYXVsdEF0dHJpYnNNYXNrKCkpOwogICAg
ICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlVmVydGV4QW5kSW5kZXhCdWZmZXJzKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlVmVydGV4QnVmZmVyID0gKG1Qcm9ncmFtLT5nZXRTdGF0
ZSgpLmdldE1heEFjdGl2ZUF0dHJpYkxvY2F0aW9uKCkgPiAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1c2VWZXJ0ZXhCdWZmZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRl
eHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS0+Z2V0TWF4QWN0aXZlQXR0cmli
TG9jYXRpb24oKSA+CisgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgICAgICAgICAg
ICAgICAgIG1Ob25JbmRleGVkRGlydHlCaXRzTWFzay5zZXQoRElSVFlfQklUX1ZFUlRFWF9CVUZG
RVJTLCB1c2VWZXJ0ZXhCdWZmZXIpOwogICAgICAgICAgICAgICAgICAgICBtSW5kZXhlZERpcnR5
Qml0c01hc2suc2V0KERJUlRZX0JJVF9WRVJURVhfQlVGRkVSUywgdXNlVmVydGV4QnVmZmVyKTsK
ICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRHcmFwaGljc1BpcGVsaW5lID0gbnVsbHB0cjsK
QEAgLTI1NTUsOCArMjg2NSw2IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jU3RhdGUo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NPVkVSQUdFX01PRFVMQVRJT046CiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlf
QklUX1BBVEhfUkVOREVSSU5HOgotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCOgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9DVVJSRU5U
X1ZBTFVFUzoKQEAgLTI1OTYsNyArMjkwNCw2IEBAIEdMaW50NjQgQ29udGV4dFZrOjpnZXRUaW1l
c3RhbXAoKQogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgbVJlbmRlcmVyLT5yZWxvYWRWb2xrSWZOZWVkZWQo
KTsKLSAgICBBU1NFUlQobUNvbW1hbmRHcmFwaC5lbXB0eSgpKTsKIAogICAgIC8vIEZsaXAgdmll
d3BvcnRzIGlmIEZlYXR1cmVzVms6OmZsaXBWaWV3cG9ydFkgaXMgZW5hYmxlZCBhbmQgdGhlIHVz
ZXIgZGlkIG5vdCByZXF1ZXN0IHRoYXQKICAgICAvLyB0aGUgc3VyZmFjZSBpcyBmbGlwcGVkLgpA
QCAtMjYxNyw2ICsyOTI0LDggQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6Om9uTWFrZUN1cnJl
bnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAgICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0
YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICB1cGRhdGVGbGlwVmlld3BvcnREcmF3RnJh
bWVidWZmZXIoZ2xTdGF0ZSk7CiAgICAgdXBkYXRlRmxpcFZpZXdwb3J0UmVhZEZyYW1lYnVmZmVy
KGdsU3RhdGUpOworICAgIHVwZGF0ZVN1cmZhY2VSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlcihnbFN0
YXRlKTsKKyAgICB1cGRhdGVTdXJmYWNlUm90YXRpb25SZWFkRnJhbWVidWZmZXIoZ2xTdGF0ZSk7
CiAgICAgaW52YWxpZGF0ZURyaXZlclVuaWZvcm1zKCk7CiAKICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7CkBAIC0yNjQzLDYgKzI5NTIsMjAgQEAgdm9pZCBDb250ZXh0Vms6OnVw
ZGF0ZUZsaXBWaWV3cG9ydFJlYWRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUp
CiAgICAgICAgIHJlYWRGcmFtZWJ1ZmZlci0+aXNEZWZhdWx0KCkgJiYgbVJlbmRlcmVyLT5nZXRG
ZWF0dXJlcygpLmZsaXBWaWV3cG9ydFkuZW5hYmxlZDsKIH0KIAordm9pZCBDb250ZXh0Vms6OnVw
ZGF0ZVN1cmZhY2VSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlcihjb25zdCBnbDo6U3RhdGUgJmdsU3Rh
dGUpCit7CisgICAgZ2w6OkZyYW1lYnVmZmVyICpkcmF3RnJhbWVidWZmZXIgPSBnbFN0YXRlLmdl
dERyYXdGcmFtZWJ1ZmZlcigpOworICAgIG1DdXJyZW50Um90YXRpb25EcmF3RnJhbWVidWZmZXIg
PQorICAgICAgICBEZXRlcm1pbmVTdXJmYWNlUm90YXRpb24oZHJhd0ZyYW1lYnVmZmVyLCBtQ3Vy
cmVudFdpbmRvd1N1cmZhY2UpOworfQorCit2b2lkIENvbnRleHRWazo6dXBkYXRlU3VyZmFjZVJv
dGF0aW9uUmVhZEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkKK3sKKyAgICBn
bDo6RnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0UmVhZEZyYW1lYnVm
ZmVyKCk7CisgICAgbUN1cnJlbnRSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlciA9CisgICAgICAgIERl
dGVybWluZVN1cmZhY2VSb3RhdGlvbihyZWFkRnJhbWVidWZmZXIsIG1DdXJyZW50V2luZG93U3Vy
ZmFjZSk7Cit9CisKIGdsOjpDYXBzIENvbnRleHRWazo6Z2V0TmF0aXZlQ2FwcygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpOwpAQCAtMjczMywxMSArMzA1
Niw2IEBAIFByb2dyYW1QaXBlbGluZUltcGwgKkNvbnRleHRWazo6Y3JlYXRlUHJvZ3JhbVBpcGVs
aW5lKGNvbnN0IGdsOjpQcm9ncmFtUGlwZWxpbmVTCiAgICAgcmV0dXJuIG5ldyBQcm9ncmFtUGlw
ZWxpbmVWayhzdGF0ZSk7CiB9CiAKLXN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRleHRWazo6
Y3JlYXRlUGF0aHMoR0xzaXplaSkKLXsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0aEltcGwg
Kj4oKTsKLX0KLQogTWVtb3J5T2JqZWN0SW1wbCAqQ29udGV4dFZrOjpjcmVhdGVNZW1vcnlPYmpl
Y3QoKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5T2JqZWN0VmsoKTsKQEAgLTI3NTUsOCArMzA3
MywxMCBAQCBPdmVybGF5SW1wbCAqQ29udGV4dFZrOjpjcmVhdGVPdmVybGF5KGNvbnN0IGdsOjpP
dmVybGF5U3RhdGUgJnN0YXRlKQogCiB2b2lkIENvbnRleHRWazo6aW52YWxpZGF0ZUN1cnJlbnRE
ZWZhdWx0VW5pZm9ybXMoKQogewotICAgIEFTU0VSVChtUHJvZ3JhbSk7Ci0gICAgaWYgKG1Qcm9n
cmFtLT5oYXNEZWZhdWx0VW5pZm9ybXMoKSkKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFi
bGUgKmV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBBU1NF
UlQoZXhlY3V0YWJsZSk7CisKKyAgICBpZiAoZXhlY3V0YWJsZS0+aGFzRGVmYXVsdFVuaWZvcm1z
KG1TdGF0ZSkpCiAgICAgewogICAgICAgICBtR3JhcGhpY3NEaXJ0eUJpdHMuc2V0KERJUlRZX0JJ
VF9ERVNDUklQVE9SX1NFVFMpOwogICAgICAgICBtQ29tcHV0ZURpcnR5Qml0cy5zZXQoRElSVFlf
QklUX0RFU0NSSVBUT1JfU0VUUyk7CkBAIC0yNzY1LDE3ICszMDg1LDE2IEBAIHZvaWQgQ29udGV4
dFZrOjppbnZhbGlkYXRlQ3VycmVudERlZmF1bHRVbmlmb3JtcygpCiAKIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjppbnZhbGlkYXRlQ3VycmVudFRleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KQogewotICAgIEFTU0VSVChtUHJvZ3JhbSk7Ci0gICAgaWYgKG1Qcm9ncmFtLT5oYXNU
ZXh0dXJlcygpKQorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9
IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRhYmxlKTsK
KworICAgIGlmIChleGVjdXRhYmxlLT5oYXNUZXh0dXJlcyhtU3RhdGUpKQogICAgIHsKICAgICAg
ICAgbUdyYXBoaWNzRGlydHlCaXRzLnNldChESVJUWV9CSVRfVEVYVFVSRVMpOwogICAgICAgICBt
R3JhcGhpY3NEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERVNDUklQVE9SX1NFVFMpOwogICAgICAg
ICBtQ29tcHV0ZURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1RFWFRVUkVTKTsKICAgICAgICAgbUNv
bXB1dGVEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERVNDUklQVE9SX1NFVFMpOwotICAgIH0KIAot
ICAgIGlmICghY29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKICAgICAgICAgQU5HTEVfVFJZ
KHVwZGF0ZUFjdGl2ZVRleHR1cmVzKGNvbnRleHQpKTsKICAgICB9CiAKQEAgLTI3ODQsOSArMzEw
MywxMSBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aW52YWxpZGF0ZUN1cnJlbnRUZXh0dXJl
cyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIAogdm9pZCBDb250ZXh0Vms6OmludmFsaWRh
dGVDdXJyZW50U2hhZGVyUmVzb3VyY2VzKCkKIHsKLSAgICBBU1NFUlQobVByb2dyYW0pOwotICAg
IGlmIChtUHJvZ3JhbS0+aGFzVW5pZm9ybUJ1ZmZlcnMoKSB8fCBtUHJvZ3JhbS0+aGFzU3RvcmFn
ZUJ1ZmZlcnMoKSB8fAotICAgICAgICBtUHJvZ3JhbS0+aGFzQXRvbWljQ291bnRlckJ1ZmZlcnMo
KSB8fCBtUHJvZ3JhbS0+aGFzSW1hZ2VzKCkpCisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRh
YmxlICpleGVjdXRhYmxlID0gbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgQVNT
RVJUKGV4ZWN1dGFibGUpOworCisgICAgaWYgKGV4ZWN1dGFibGUtPmhhc1VuaWZvcm1CdWZmZXJz
KG1TdGF0ZSkgfHwgZXhlY3V0YWJsZS0+aGFzU3RvcmFnZUJ1ZmZlcnMobVN0YXRlKSB8fAorICAg
ICAgICBleGVjdXRhYmxlLT5oYXNBdG9taWNDb3VudGVyQnVmZmVycyhtU3RhdGUpIHx8IGV4ZWN1
dGFibGUtPmhhc0ltYWdlcyhtU3RhdGUpKQogICAgIHsKICAgICAgICAgbUdyYXBoaWNzRGlydHlC
aXRzLnNldChESVJUWV9CSVRfU0hBREVSX1JFU09VUkNFUyk7CiAgICAgICAgIG1HcmFwaGljc0Rp
cnR5Qml0cy5zZXQoRElSVFlfQklUX0RFU0NSSVBUT1JfU0VUUyk7CkBAIC0yODkzLDcgKzMyMTQs
OCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6ZGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QoY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMaQogCiAgICAgZ2w6OkJ1ZmZlciAqZ2xCdWZmZXIg
ICAgID0gZ2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIoZ2w6OkJ1ZmZlckJpbmRpbmc6OkRpc3Bh
dGNoSW5kaXJlY3QpOwogICAgIHZrOjpCdWZmZXJIZWxwZXIgJmJ1ZmZlciA9IHZrOjpHZXRJbXBs
KGdsQnVmZmVyKS0+Z2V0QnVmZmVyKCk7Ci0gICAgYnVmZmVyLm9uUmVhZCh0aGlzLCAmbURpc3Bh
dGNoZXIsIFZLX0FDQ0VTU19JTkRJUkVDVF9DT01NQU5EX1JFQURfQklUKTsKKyAgICBtT3V0c2lk
ZVJlbmRlclBhc3NDb21tYW5kcy5idWZmZXJSZWFkKCZtUmVzb3VyY2VVc2VMaXN0LCBWS19BQ0NF
U1NfSU5ESVJFQ1RfQ09NTUFORF9SRUFEX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZidWZmZXIpOwogCiAgICAgY29tbWFuZEJ1ZmZlci0+ZGlzcGF0Y2hJ
bmRpcmVjdChidWZmZXIuZ2V0QnVmZmVyKCksIGluZGlyZWN0KTsKIApAQCAtMjkwMiw4ICszMjI0
LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmRpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGkKIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6
Om1lbW9yeUJhcnJpZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFy
cmllcnMpCiB7Ci0gICAgbWVtb3J5QmFycmllckltcGwoYmFycmllcnMsIFZLX1BJUEVMSU5FX1NU
QUdFX0FMTF9DT01NQU5EU19CSVQpOwotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKKyAgICByZXR1cm4gbWVtb3J5QmFycmllckltcGwoYmFycmllcnMsIFZLX1BJUEVMSU5FX1NU
QUdFX0FMTF9DT01NQU5EU19CSVQpOwogfQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6bWVt
b3J5QmFycmllckJ5UmVnaW9uKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxk
IGJhcnJpZXJzKQpAQCAtMjkxMSwxNyArMzIzMiwxMiBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRW
azo6bWVtb3J5QmFycmllckJ5UmVnaW9uKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGJp
dAogICAgIC8vIE5vdGU6IG1lbW9yeUJhcnJpZXJCeVJlZ2lvbiBpcyBleHBlY3RlZCB0byBhZmZl
Y3Qgb25seSB0aGUgZnJhZ21lbnQgcGlwZWxpbmUsIGJ1dCBpcwogICAgIC8vIG90aGVyd2lzZSBz
aW1pbGFyIHRvIG1lbW9yeUJhcnJpZXIuCiAKLSAgICBtZW1vcnlCYXJyaWVySW1wbChiYXJyaWVy
cywgVktfUElQRUxJTkVfU1RBR0VfRlJBR01FTlRfU0hBREVSX0JJVCk7Ci0gICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAgIHJldHVybiBtZW1vcnlCYXJyaWVySW1wbChiYXJy
aWVycywgVktfUElQRUxJTkVfU1RBR0VfRlJBR01FTlRfU0hBREVSX0JJVCk7CiB9CiAKLXZvaWQg
Q29udGV4dFZrOjptZW1vcnlCYXJyaWVySW1wbChHTGJpdGZpZWxkIGJhcnJpZXJzLCBWa1BpcGVs
aW5lU3RhZ2VGbGFncyBzdGFnZU1hc2spCithbmdsZTo6UmVzdWx0IENvbnRleHRWazo6bWVtb3J5
QmFycmllckltcGwoR0xiaXRmaWVsZCBiYXJyaWVycywgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3Rh
Z2VNYXNrKQogewotICAgIC8vIE5vdGU6IG1vc3Qgb2YgdGhlIGJhcnJpZXJzIHNwZWNpZmllZCBo
ZXJlIGRvbid0IHJlcXVpcmUgdXMgdG8gaXNzdWUgYSBtZW1vcnkgYmFycmllciwgYXMKLSAgICAv
LyB0aGUgcmVsZXZhbnQgcmVzb3VyY2VzIGFscmVhZHkgaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBi
YXJyaWVycy4gIFRoZXkgZG8gaG93ZXZlciByZXF1aXJlCi0gICAgLy8gdGhlIHJlc291cmNlIHdy
aXRpbmcgbm9kZXMgdG8gZmluaXNoIHNvIGZ1dHVyZSBidWZmZXIgYmFycmllcnMgYXJlIHBsYWNl
ZCBjb3JyZWN0bHksIGFzCi0gICAgLy8gd2VsbCBhcyByZXNvdXJjZSBkZXBlbmRlbmNpZXMgbm90
IGNyZWF0aW5nIGEgZ3JhcGggbG9vcC4gIFRoaXMgaXMgZG9uZSBieSBpbnNlcnRpbmcgYQotICAg
IC8vIGNvbW1hbmQgZ3JhcGggYmFycmllciB0aGF0IGRvZXMgbm90aGluZyEKKyAgICAvLyBOb3Rl
OiBtYW55IG9mIHRoZSBiYXJyaWVycyBzcGVjaWZpZWQgaGVyZSBhcmUgYWxyZWFkeSBjb3ZlcmVk
IGF1dG9tYXRpY2FsbHkuCiAgICAgLy8KICAgICAvLyBUaGUgYmFycmllcnMgdGhhdCBhcmUgbmVj
ZXNzYXJ5IGFsbCBoYXZlIFNIQURFUl9XUklURSBhcyBzcmMgYWNjZXNzIGFuZCB0aGUgZHN0IGFj
Y2VzcyBpcwogICAgIC8vIGRldGVybWluZWQgYnkgdGhlIGdpdmVuIGJpdGZpZWxkLiAgQ3VycmVu
dGx5LCBhbGwgaW1hZ2UtcmVsYXRlZCBiYXJyaWVycyB0aGF0IHJlcXVpcmUgdGhlCkBAIC0yOTQz
LDE1ICszMjU5LDE3IEBAIHZvaWQgQ29udGV4dFZrOjptZW1vcnlCYXJyaWVySW1wbChHTGJpdGZp
ZWxkIGJhcnJpZXJzLCBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzdGFnCiAgICAgICAgIGRzdEFjY2Vz
cyB8PSBWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCB8IFZLX0FDQ0VTU19TSEFERVJfUkVBRF9C
SVQ7CiAgICAgfQogCi0gICAgaWYgKGNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAg
ICAgIG1Db21tYW5kR3JhcGgubWVtb3J5QmFycmllcihzcmNBY2Nlc3MsIGRzdEFjY2Vzcywgc3Rh
Z2VNYXNrKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogaHR0cDovL2FuZ2xlYnVnLmNvbS80MDI5Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICB9CisgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7CisgICAgQU5HTEVfVFJZ
KGVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CisKKyAg
ICBWa01lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllciA9IHt9OworICAgIG1lbW9yeUJhcnJpZXIu
c1R5cGUgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0JBUlJJRVI7CisgICAg
bWVtb3J5QmFycmllci5zcmNBY2Nlc3NNYXNrICAgPSBzcmNBY2Nlc3M7CisgICAgbWVtb3J5QmFy
cmllci5kc3RBY2Nlc3NNYXNrICAgPSBkc3RBY2Nlc3M7CisKKyAgICBjb21tYW5kQnVmZmVyLT5t
ZW1vcnlCYXJyaWVyKHN0YWdlTWFzaywgc3RhZ2VNYXNrLCAmbWVtb3J5QmFycmllcik7CisKKyAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIHZrOjpEeW5hbWljUXVlcnlQ
b29sICpDb250ZXh0Vms6OmdldFF1ZXJ5UG9vbChnbDo6UXVlcnlUeXBlIHF1ZXJ5VHlwZSkKQEAg
LTMwMzAsOSArMzM0OCwxNyBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlH
cmFwaGljc0RyaXZlclVuaWZvcm1zKGNvbnN0IGdsOjpDb250ZXh0ICpjbwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZtRHJpdmVyVW5pZm9ybXNbUGlwZWxpbmVUeXBlOjpH
cmFwaGljc10sICZidWZmZXIsICZwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm5ld0J1ZmZlcikpOwogCi0gICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZ2xWaWV3cG9y
dCA9IG1TdGF0ZS5nZXRWaWV3cG9ydCgpOworICAgIGdsOjpSZWN0YW5nbGUgZ2xWaWV3cG9ydCA9
IG1TdGF0ZS5nZXRWaWV3cG9ydCgpOwogICAgIGZsb2F0IGhhbGZSZW5kZXJBcmVhSGVpZ2h0ID0K
ICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1EcmF3RnJhbWVidWZmZXItPmdldFN0YXRlKCku
Z2V0RGltZW5zaW9ucygpLmhlaWdodCkgKiAwLjVmOworICAgIGlmIChpc1JvdGF0ZWRBc3BlY3RS
YXRpb0ZvckRyYXdGQk8oKSkKKyAgICB7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlIGlzIHJvdGF0
ZWQgOTAvMjcwIGRlZ3JlZXMuICBUaGlzIGNoYW5nZXMgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUg
c3VyZmFjZS4KKyAgICAgICAgLy8gVE9ETyhpYW5lbGxpb3R0KTogaGFuZGxlIHNtYWxsIHZpZXdw
b3J0L3NjaXNzb3IgY2FzZXMuICBodHRwOi8vYW5nbGVidWcuY29tLzQ0MzEKKyAgICAgICAgc3Rk
Ojpzd2FwKGdsVmlld3BvcnQud2lkdGgsIGdsVmlld3BvcnQuaGVpZ2h0KTsKKyAgICAgICAgaGFs
ZlJlbmRlckFyZWFIZWlnaHQgPQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1EcmF3
RnJhbWVidWZmZXItPmdldFN0YXRlKCkuZ2V0RGltZW5zaW9ucygpLndpZHRoKSAqIDAuNWY7Cisg
ICAgfQogICAgIGZsb2F0IHNjYWxlWSA9IGlzVmlld3BvcnRGbGlwRW5hYmxlZEZvckRyYXdGQk8o
KSA/IC0xLjBmIDogMS4wZjsKIAogICAgIHVpbnQzMl90IHhmYkFjdGl2ZVVucGF1c2VkID0gbVN0
YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpOwpAQCAtMzA1NCwxMyArMzM4
MCwxNiBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlHcmFwaGljc0RyaXZl
clVuaWZvcm1zKGNvbnN0IGdsOjpDb250ZXh0ICpjbwogICAgICAgICB7fSwKICAgICAgICAge30s
CiAgICAgICAgIHt9LAotICAgICAgICB7ZGVwdGhSYW5nZU5lYXIsIGRlcHRoUmFuZ2VGYXIsIGRl
cHRoUmFuZ2VEaWZmLCAwLjBmfX07CisgICAgICAgIHtkZXB0aFJhbmdlTmVhciwgZGVwdGhSYW5n
ZUZhciwgZGVwdGhSYW5nZURpZmYsIDAuMGZ9LAorICAgICAgICB7fX07CisgICAgbWVtY3B5KCZk
cml2ZXJVbmlmb3Jtcy0+cHJlUm90YXRpb24sICZrUHJlUm90YXRpb25NYXRyaWNlc1ttQ3VycmVu
dFJvdGF0aW9uRHJhd0ZyYW1lYnVmZmVyXSwKKyAgICAgICAgICAgc2l6ZW9mKFByZVJvdGF0aW9u
TWF0cml4VmFsdWVzKSk7CiAKICAgICBpZiAoeGZiQWN0aXZlVW5wYXVzZWQpCiAgICAgewogICAg
ICAgICBUcmFuc2Zvcm1GZWVkYmFja1ZrICp0cmFuc2Zvcm1GZWVkYmFja1ZrID0KICAgICAgICAg
ICAgIHZrOjpHZXRJbXBsKG1TdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSk7Ci0g
ICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmstPmdldEJ1ZmZlck9mZnNldHModGhpcywgbVN0YXRl
LmdldFByb2dyYW0oKS0+Z2V0U3RhdGUoKSwgbVhmYkJhc2VWZXJ0ZXgsCisgICAgICAgIHRyYW5z
Zm9ybUZlZWRiYWNrVmstPmdldEJ1ZmZlck9mZnNldHModGhpcywgbVhmYkJhc2VWZXJ0ZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyVW5pZm9y
bXMtPnhmYkJ1ZmZlck9mZnNldHMuZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyaXZlclVuaWZvcm1zLT54ZmJCdWZmZXJPZmZzZXRzLnNpemUo
KSk7CiAgICAgfQpAQCAtMzIwNCwxNiArMzUzMywxNyBAQCB2b2lkIENvbnRleHRWazo6aGFuZGxl
RXJyb3IoVmtSZXN1bHQgZXJyb3JDb2RlLAogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6dXBk
YXRlQWN0aXZlVGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgY29u
c3QgZ2w6OlN0YXRlICZnbFN0YXRlICAgPSBtU3RhdGU7Ci0gICAgY29uc3QgZ2w6OlByb2dyYW0g
KnByb2dyYW0gPSBnbFN0YXRlLmdldFByb2dyYW0oKTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJmds
U3RhdGUgICAgICAgICAgICAgICAgPSBtU3RhdGU7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVj
dXRhYmxlICpleGVjdXRhYmxlID0gZ2xTdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAg
IEFTU0VSVChleGVjdXRhYmxlKTsKIAogICAgIHVpbnQzMl90IHByZXZNYXhJbmRleCA9IG1BY3Rp
dmVUZXh0dXJlc0Rlc2MuZ2V0TWF4SW5kZXgoKTsKICAgICBtZW1zZXQobUFjdGl2ZVRleHR1cmVz
LmRhdGEoKSwgMCwgc2l6ZW9mKG1BY3RpdmVUZXh0dXJlc1swXSkgKiBwcmV2TWF4SW5kZXgpOwog
ICAgIG1BY3RpdmVUZXh0dXJlc0Rlc2MucmVzZXQoKTsKIAotICAgIGNvbnN0IGdsOjpBY3RpdmVU
ZXh0dXJlUG9pbnRlckFycmF5ICZ0ZXh0dXJlcyAgPSBnbFN0YXRlLmdldEFjdGl2ZVRleHR1cmVz
Q2FjaGUoKTsKLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZU1hc2sgJmFjdGl2ZVRleHR1cmVz
ICAgID0gcHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCk7Ci0gICAgY29uc3QgZ2w6OkFj
dGl2ZVRleHR1cmVUeXBlQXJyYXkgJnRleHR1cmVUeXBlcyA9IHByb2dyYW0tPmdldEFjdGl2ZVNh
bXBsZXJUeXBlcygpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlc0NhY2hlICZ0ZXh0dXJl
cyAgICAgICAgPSBnbFN0YXRlLmdldEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsKKyAgICBjb25zdCBn
bDo6QWN0aXZlVGV4dHVyZU1hc2sgJmFjdGl2ZVRleHR1cmVzICAgID0gZXhlY3V0YWJsZS0+Z2V0
QWN0aXZlU2FtcGxlcnNNYXNrKCk7CisgICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVUeXBlQXJy
YXkgJnRleHR1cmVUeXBlcyA9IGV4ZWN1dGFibGUtPmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpOwog
CiAgICAgZm9yIChzaXplX3QgdGV4dHVyZVVuaXQgOiBhY3RpdmVUZXh0dXJlcykKICAgICB7CkBA
IC0zMjM0LDQ4ICszNTY0LDE0IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjp1cGRhdGVBY3Rp
dmVUZXh0dXJlcyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICAgICAgaWYgKHNhbXBs
ZXIgPT0gbnVsbHB0cikKICAgICAgICAgewogICAgICAgICAgICAgc2FtcGxlclZrICAgICA9IG51
bGxwdHI7Ci0gICAgICAgICAgICBzYW1wbGVyU2VyaWFsID0ga1plcm9TZXJpYWw7Ci0gICAgICAg
ICAgICB0ZXh0dXJlVmstPm9uU2FtcGxlclVzZSgmbVJlc291cmNlVXNlTGlzdCk7CisgICAgICAg
ICAgICBzYW1wbGVyU2VyaWFsID0gcng6OmtaZXJvU2VyaWFsOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgc2FtcGxlclZrICAgICA9IHZrOjpHZXRJbXBs
KHNhbXBsZXIpOwogICAgICAgICAgICAgc2FtcGxlclNlcmlhbCA9IHNhbXBsZXJWay0+Z2V0U2Vy
aWFsKCk7Ci0gICAgICAgICAgICBzYW1wbGVyVmstPm9uU2FtcGxlckFjY2VzcygmbVJlc291cmNl
VXNlTGlzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2azo6SW1hZ2VIZWxwZXIgJmltYWdlID0g
dGV4dHVyZVZrLT5nZXRJbWFnZSgpOwotCi0gICAgICAgIC8vIFRoZSBpbWFnZSBzaG91bGQgYmUg
Zmx1c2hlZCBhbmQgcmVhZHkgdG8gdXNlIGF0IHRoaXMgcG9pbnQuIFRoZXJlIG1heSBzdGlsbCBi
ZQotICAgICAgICAvLyBsaW5nZXJpbmcgc3RhZ2VkIHVwZGF0ZXMgaW4gaXRzIHN0YWdpbmcgYnVm
ZmVyIGZvciB1bnVzZWQgdGV4dHVyZSBtaXAgbGV2ZWxzIG9yCi0gICAgICAgIC8vIGxheWVycy4g
VGhlcmVmb3JlIHdlIGNhbid0IHZlcmlmeSBpdCBoYXMgbm8gc3RhZ2VkIHVwZGF0ZXMgcmlnaHQg
aGVyZS4KLQotICAgICAgICB2azo6SW1hZ2VMYXlvdXQgdGV4dHVyZUxheW91dCA9IHZrOjpJbWFn
ZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHk7Ci0gICAgICAgIGlmIChwcm9ncmFt
LT5pc0NvbXB1dGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZUxheW91dCA9IHZr
OjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlclJlYWRPbmx5OwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gRW5zdXJlIHRoZSBpbWFnZSBpcyBpbiByZWFkLW9ubHkgbGF5b3V0Ci0gICAgICAgIGlm
IChpbWFnZS5pc0xheW91dENoYW5nZU5lY2Vzc2FyeSh0ZXh0dXJlTGF5b3V0KSkKLSAgICAgICAg
ewotICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKnNyY0xheW91dENoYW5nZTsKLSAgICAg
ICAgICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgQU5HTEVfVFJZKGltYWdlLnJlY29yZENvbW1hbmRzKHRoaXMsICZzcmNMYXlvdXRD
aGFuZ2UpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBBTkdMRV9UUlkoZ2V0T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVm
ZmVyKCZzcmNMYXlvdXRDaGFuZ2UpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgVmtJ
bWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzID0gaW1hZ2UuZ2V0QXNwZWN0RmxhZ3MoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChhc3BlY3RGbGFncyAhPSAwKTsKLSAgICAgICAgICAgIGltYWdlLmNo
YW5nZUxheW91dChhc3BlY3RGbGFncywgdGV4dHVyZUxheW91dCwgc3JjTGF5b3V0Q2hhbmdlKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHRleHR1cmVWay0+b25JbWFnZVZpZXdVc2UoJm1SZXNvdXJj
ZVVzZUxpc3QpOwotCiAgICAgICAgIG1BY3RpdmVUZXh0dXJlc1t0ZXh0dXJlVW5pdF0udGV4dHVy
ZSA9IHRleHR1cmVWazsKICAgICAgICAgbUFjdGl2ZVRleHR1cmVzW3RleHR1cmVVbml0XS5zYW1w
bGVyID0gc2FtcGxlclZrOwogICAgICAgICAvLyBDYWNoZSBzZXJpYWxzIGZyb20gc2FtcGxlciBh
bmQgdGV4dHVyZSwgYnV0IHJlLXVzZSB0ZXh0dXJlIGlmIG5vIHNhbXBsZXIgYm91bmQKQEAgLTMy
ODcsMTQgKzM1ODMsMTUgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnVwZGF0ZUFjdGl2ZVRl
eHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogfQogCiBhbmdsZTo6UmVzdWx0IENv
bnRleHRWazo6dXBkYXRlQWN0aXZlSW1hZ2VzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEdy
YXBoUmVzb3VyY2UgKnJlY29yZGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVySGVscGVyKQogewot
ICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgID0gbVN0YXRlOwotICAgIGNvbnN0IGdsOjpQ
cm9ncmFtICpwcm9ncmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgY29uc3QgZ2w6OlN0
YXRlICZnbFN0YXRlICAgICAgICAgICAgICAgID0gbVN0YXRlOworICAgIGNvbnN0IGdsOjpQcm9n
cmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CiAKICAgICBtQWN0aXZlSW1hZ2VzLmZpbGwobnVs
bHB0cik7CiAKLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZU1hc2sgJmFjdGl2ZUltYWdlcyA9
IHByb2dyYW0tPmdldEFjdGl2ZUltYWdlc01hc2soKTsKKyAgICBjb25zdCBnbDo6QWN0aXZlVGV4
dHVyZU1hc2sgJmFjdGl2ZUltYWdlcyA9IGV4ZWN1dGFibGUtPmdldEFjdGl2ZUltYWdlc01hc2so
KTsKIAogICAgIC8vIE5vdGU6IGN1cnJlbnRseSwgdGhlIGltYWdlIGxheW91dCBpcyB0cmFuc2l0
aW9uZWQgZW50aXJlbHkgZXZlbiBpZiBvbmx5IG9uZSBsZXZlbCBvciBsYXllciBpcwogICAgIC8v
IHVzZWQuICBUaGlzIGlzIGFuIGlzc3VlIGlmIG9uZSBzdWJyZXNvdXJjZSBvZiB0aGUgaW1hZ2Ug
aXMgdXNlZCBhcyBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IGFuZApAQCAtMzMyOCwyOSArMzYyNSwx
NSBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6dXBkYXRlQWN0aXZlSW1hZ2VzKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAvLyBsaW5nZXJpbmcgc3RhZ2VkIHVwZGF0ZXMg
aW4gaXRzIHN0YWdpbmcgYnVmZmVyIGZvciB1bnVzZWQgdGV4dHVyZSBtaXAgbGV2ZWxzIG9yCiAg
ICAgICAgIC8vIGxheWVycy4gVGhlcmVmb3JlIHdlIGNhbid0IHZlcmlmeSBpdCBoYXMgbm8gc3Rh
Z2VkIHVwZGF0ZXMgcmlnaHQgaGVyZS4KIAotICAgICAgICAvLyBUT0RPKHN5b3Vzc2VmaSk6IG1h
a2Ugc3VyZSBmcm9udC1lbmQgc3luY3MgdGV4dHVyZXMgdGhhdCBhcmUgdXNlZCBhcyBpbWFnZXMg
KHRoZXkgYXJlCi0gICAgICAgIC8vIGFscmVhZHkgbm90aWZpZWQgb2YgY29udGVudCBjaGFuZ2Up
LgotICAgICAgICAvLyBUZXN0OiBTaW1wbGVTdGF0ZUNoYW5nZVRlc3RFUzMxLkRpc3BhdGNoV2l0
aEltYWdlVGV4dHVyZVRleFN1YkltYWdlVGhlbkRpc3BhdGNoQWdhaW4KLSAgICAgICAgLy8gaHR0
cDovL2FuZ2xlYnVnLmNvbS8zNTM5Ci0gICAgICAgIEFOR0xFX1RSWSh0ZXh0dXJlVmstPmVuc3Vy
ZUltYWdlSW5pdGlhbGl6ZWQodGhpcywgSW1hZ2VNaXBMZXZlbHM6OkVuYWJsZWRMZXZlbHMpKTsK
LQogICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQgPSB2azo6SW1hZ2VMYXlvdXQ6
OkFsbEdyYXBoaWNzU2hhZGVyc1dyaXRlOwotICAgICAgICBpZiAocHJvZ3JhbS0+aXNDb21wdXRl
KCkpCisgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0NvbXB1dGUoKSkKICAgICAgICAgewogICAg
ICAgICAgICAgaW1hZ2VMYXlvdXQgPSB2azo6SW1hZ2VMYXlvdXQ6OkNvbXB1dGVTaGFkZXJXcml0
ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEVuc3VyZSB0aGUgaW1hZ2UgaXMgaW4gdGhlIGNv
cnJlY3QgbGF5b3V0Ci0gICAgICAgIGlmIChpbWFnZS0+aXNMYXlvdXRDaGFuZ2VOZWNlc3Nhcnko
aW1hZ2VMYXlvdXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAq
bGF5b3V0Q2hhbmdlOwotICAgICAgICAgICAgQU5HTEVfVFJZKGltYWdlLT5yZWNvcmRDb21tYW5k
cyh0aGlzLCAmbGF5b3V0Q2hhbmdlKSk7CisgICAgICAgIFZrSW1hZ2VBc3BlY3RGbGFncyBhc3Bl
Y3RGbGFncyA9IGltYWdlLT5nZXRBc3BlY3RGbGFncygpOwogCi0gICAgICAgICAgICBWa0ltYWdl
QXNwZWN0RmxhZ3MgYXNwZWN0RmxhZ3MgPSBpbWFnZS0+Z2V0QXNwZWN0RmxhZ3MoKTsKLSAgICAg
ICAgICAgIGltYWdlLT5jaGFuZ2VMYXlvdXQoYXNwZWN0RmxhZ3MsIGltYWdlTGF5b3V0LCBsYXlv
dXRDaGFuZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW1hZ2UtPmFkZFdyaXRlRGVwZW5kZW5j
eSh0aGlzLCByZWNvcmRlcik7CisgICAgICAgIGNvbW1hbmRCdWZmZXJIZWxwZXItPmltYWdlV3Jp
dGUoJm1SZXNvdXJjZVVzZUxpc3QsIGFzcGVjdEZsYWdzLCBpbWFnZUxheW91dCwgaW1hZ2UpOwog
ICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTMzNjksNjgg
KzM2NTIsNzYgQEAgYm9vbCBDb250ZXh0Vms6OnNob3VsZEZsdXNoKCkKIAogYm9vbCBDb250ZXh0
Vms6Omhhc1JlY29yZGVkQ29tbWFuZHMoKQogewotICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVk
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gIW1Db21tYW5kR3JhcGguZW1wdHkoKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuICFtT3V0c2lkZVJlbmRlclBhc3NDb21t
YW5kcy5lbXB0eSgpIHx8ICFtUmVuZGVyUGFzc0NvbW1hbmRzLmVtcHR5KCkgfHwKLSAgICAgICAg
ICAgICAgICFtUHJpbWFyeUNvbW1hbmRzLmVtcHR5KCk7Ci0gICAgfQorICAgIHJldHVybiAhbU91
dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuZW1wdHkoKSB8fCAhbVJlbmRlclBhc3NDb21tYW5kcy5l
bXB0eSgpIHx8CisgICAgICAgICAgIG1IYXNQcmltYXJ5Q29tbWFuZHM7CiB9CiAKIGFuZ2xlOjpS
ZXN1bHQgQ29udGV4dFZrOjpmbHVzaEltcGwoY29uc3Qgdms6OlNlbWFwaG9yZSAqc2lnbmFsU2Vt
YXBob3JlKQogewogICAgIGJvb2wgaGFzUGVuZGluZ1NlbWFwaG9yZSA9IHNpZ25hbFNlbWFwaG9y
ZSB8fCAhbVdhaXRTZW1hcGhvcmVzLmVtcHR5KCk7Ci0gICAgaWYgKCFoYXNSZWNvcmRlZENvbW1h
bmRzKCkgJiYgIWhhc1BlbmRpbmdTZW1hcGhvcmUpCisgICAgaWYgKCFoYXNSZWNvcmRlZENvbW1h
bmRzKCkgJiYgIWhhc1BlbmRpbmdTZW1hcGhvcmUgJiYgIW1HcHVFdmVudHNFbmFibGVkKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KIAogICAg
IEFOR0xFX1RSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIkNvbnRleHRWazo6Zmx1c2giKTsKIAot
ICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkpCisgICAgZmx1c2hPdXRzaWRlUmVuZGVyUGFz
c0NvbW1hbmRzKCk7CisgICAgQU5HTEVfVFJZKGVuZFJlbmRlclBhc3MoKSk7CisKKyAgICBpZiAo
bUlzQW55SG9zdFZpc2libGVCdWZmZXJXcml0dGVuKQogICAgIHsKLSAgICAgICAgdms6OkRldmlj
ZVNjb3BlZDx2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXI+IHByaW1hcnlDb21tYW5kcyhnZXREZXZp
Y2UoKSk7Ci0gICAgICAgIEFOR0xFX1RSWSgKLSAgICAgICAgICAgIG1Db21tYW5kUXVldWUuYWxs
b2NhdGVQcmltYXJ5Q29tbWFuZEJ1ZmZlcih0aGlzLCBtQ29tbWFuZFBvb2wsICZwcmltYXJ5Q29t
bWFuZHMuZ2V0KCkpKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCB3cml0ZXMgdG8gaG9zdC12
aXNpYmxlIGJ1ZmZlcnMgYXJlIGZsdXNoZWQuICBXZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nCisg
ICAgICAgIC8vIHdoZXRoZXIgYW55IGJ1ZmZlciB3aWxsIGJlIG1hcHBlZCBmb3IgcmVhZGJhY2sg
aW4gdGhlIGZ1dHVyZSwgYW5kIHdlIGNhbid0IGFmZm9yZCB0bworICAgICAgICAvLyBmbHVzaCBh
bmQgd2FpdCBvbiBhIG9uZS1waXBlbGluZS1iYXJyaWVyIGNvbW1hbmQgYnVmZmVyIG9uIGV2ZXJ5
IG1hcCgpLgorICAgICAgICBWa01lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllciA9IHt9OworICAg
ICAgICBtZW1vcnlCYXJyaWVyLnNUeXBlICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01F
TU9SWV9CQVJSSUVSOworICAgICAgICBtZW1vcnlCYXJyaWVyLnNyY0FjY2Vzc01hc2sgICA9IFZL
X0FDQ0VTU19NRU1PUllfV1JJVEVfQklUOworICAgICAgICBtZW1vcnlCYXJyaWVyLmRzdEFjY2Vz
c01hc2sgICA9IFZLX0FDQ0VTU19IT1NUX1JFQURfQklUOwogCi0gICAgICAgIGlmICghbUNvbW1h
bmRHcmFwaC5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBTkdMRV9UUlkoZmx1c2hD
b21tYW5kR3JhcGgoJnByaW1hcnlDb21tYW5kcy5nZXQoKSkpOwotICAgICAgICB9CisgICAgICAg
IG1QcmltYXJ5Q29tbWFuZHMubWVtb3J5QmFycmllcihWS19QSVBFTElORV9TVEFHRV9BTExfQ09N
TUFORFNfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfUElQ
RUxJTkVfU1RBR0VfSE9TVF9CSVQsICZtZW1vcnlCYXJyaWVyKTsKKyAgICAgICAgbUlzQW55SG9z
dFZpc2libGVCdWZmZXJXcml0dGVuID0gZmFsc2U7CisgICAgfQogCi0gICAgICAgIHdhaXRGb3JT
d2FwY2hhaW5JbWFnZUlmTmVjZXNzYXJ5KCk7CisgICAgaWYgKG1HcHVFdmVudHNFbmFibGVkKQor
ICAgIHsKKyAgICAgICAgRXZlbnROYW1lIGV2ZW50TmFtZSA9IEdldFRyYWNlRXZlbnROYW1lKCJQ
cmltYXJ5IiwgbVByaW1hcnlCdWZmZXJDb3VudGVyKTsKKyAgICAgICAgQU5HTEVfVFJZKHRyYWNl
R3B1RXZlbnQoJm1QcmltYXJ5Q29tbWFuZHMsIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgZXZlbnRO
YW1lKSk7CisgICAgfQogCi0gICAgICAgIFZrU3VibWl0SW5mbyBzdWJtaXRJbmZvID0ge307Ci0g
ICAgICAgIEluaXRpYWxpemVTdWJtaXRJbmZvKCZzdWJtaXRJbmZvLCBwcmltYXJ5Q29tbWFuZHMu
Z2V0KCksIG1XYWl0U2VtYXBob3JlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1X
YWl0U2VtYXBob3JlU3RhZ2VNYXNrcywgc2lnbmFsU2VtYXBob3JlKTsKKyAgICBBTkdMRV9WS19U
UlkodGhpcywgbVByaW1hcnlDb21tYW5kcy5lbmQoKSk7CiAKLSAgICAgICAgQU5HTEVfVFJZKHN1
Ym1pdEZyYW1lKHN1Ym1pdEluZm8sIHByaW1hcnlDb21tYW5kcy5yZWxlYXNlKCkpKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuZmx1
c2hUb1ByaW1hcnkoJm1QcmltYXJ5Q29tbWFuZHMpOwotICAgICAgICBBTkdMRV9UUlkobVJlbmRl
clBhc3NDb21tYW5kcy5mbHVzaFRvUHJpbWFyeSh0aGlzLCAmbVByaW1hcnlDb21tYW5kcykpOwot
ICAgICAgICBBTkdMRV9WS19UUlkodGhpcywgbVByaW1hcnlDb21tYW5kcy5lbmQoKSk7CisgICAg
Ly8gRnJlZSBzZWNvbmRhcnkgY29tbWFuZCBwb29sIGFsbG9jYXRpb25zIGFuZCByZXN0YXJ0IGNv
bW1hbmQgYnVmZmVycyB3aXRoIHRoZSBuZXcgcGFnZS4KKyAgICBtUG9vbEFsbG9jYXRvci5wb3Ao
KTsKKyAgICBtUG9vbEFsbG9jYXRvci5wdXNoKCk7CisgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMucmVzZXQoKTsKKyAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLnJlc2V0KCk7CiAKLSAgICAg
ICAgU2VyaWFsIHNlcmlhbCA9IGdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpOwotICAgICAgICBtUmVz
b3VyY2VVc2VMaXN0LnJlbGVhc2VSZXNvdXJjZVVzZXNBbmRVcGRhdGVTZXJpYWxzKHNlcmlhbCk7
CisgICAgU2VyaWFsIHNlcmlhbCA9IGdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpOworICAgIG1SZXNv
dXJjZVVzZUxpc3QucmVsZWFzZVJlc291cmNlVXNlc0FuZFVwZGF0ZVNlcmlhbHMoc2VyaWFsKTsK
IAotICAgICAgICB3YWl0Rm9yU3dhcGNoYWluSW1hZ2VJZk5lY2Vzc2FyeSgpOworICAgIHdhaXRG
b3JTd2FwY2hhaW5JbWFnZUlmTmVjZXNzYXJ5KCk7CiAKLSAgICAgICAgVmtTdWJtaXRJbmZvIHN1
Ym1pdEluZm8gPSB7fTsKLSAgICAgICAgSW5pdGlhbGl6ZVN1Ym1pdEluZm8oJnN1Ym1pdEluZm8s
IG1QcmltYXJ5Q29tbWFuZHMsIG1XYWl0U2VtYXBob3JlcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1XYWl0U2VtYXBob3JlU3RhZ2VNYXNrcywgc2lnbmFsU2VtYXBob3JlKTsKKyAg
ICBWa1N1Ym1pdEluZm8gc3VibWl0SW5mbyA9IHt9OworICAgIEluaXRpYWxpemVTdWJtaXRJbmZv
KCZzdWJtaXRJbmZvLCBtUHJpbWFyeUNvbW1hbmRzLCBtV2FpdFNlbWFwaG9yZXMsICZtV2FpdFNl
bWFwaG9yZVN0YWdlTWFza3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsU2VtYXBo
b3JlKTsKIAotICAgICAgICBBTkdMRV9UUlkoc3VibWl0RnJhbWUoc3VibWl0SW5mbywgc3RkOjpt
b3ZlKG1QcmltYXJ5Q29tbWFuZHMpKSk7CisgICAgQU5HTEVfVFJZKHN1Ym1pdEZyYW1lKHN1Ym1p
dEluZm8sIHN0ZDo6bW92ZShtUHJpbWFyeUNvbW1hbmRzKSkpOwogCi0gICAgICAgIEFOR0xFX1RS
WShzdGFydFByaW1hcnlDb21tYW5kQnVmZmVyKCkpOwotICAgIH0KKyAgICBBTkdMRV9UUlkoc3Rh
cnRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigpKTsKIAorICAgIG1SZW5kZXJQYXNzQ291bnRlciA9IDA7
CiAgICAgbVdhaXRTZW1hcGhvcmVzLmNsZWFyKCk7CiAKKyAgICBtUHJpbWFyeUJ1ZmZlckNvdW50
ZXIrKzsKKworICAgIGlmIChtR3B1RXZlbnRzRW5hYmxlZCkKKyAgICB7CisgICAgICAgIEV2ZW50
TmFtZSBldmVudE5hbWUgPSBHZXRUcmFjZUV2ZW50TmFtZSgiUHJpbWFyeSIsIG1QcmltYXJ5QnVm
ZmVyQ291bnRlcik7CisgICAgICAgIEFOR0xFX1RSWSh0cmFjZUdwdUV2ZW50KCZtUHJpbWFyeUNv
bW1hbmRzLCBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgZXZlbnROYW1lKSk7CisgICAgfQorCiAg
ICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC0zNTM3LDkgKzM4Mjgs
OCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6Z2V0VGltZXN0YW1wKHVpbnQ2NF90ICp0aW1l
c3RhbXBPdXQpCiAgICAgLy8gPiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBHTCB0aW1lIGFmdGVyIGFs
bCBwcmV2aW91cyBjb21tYW5kcyBoYXZlIHJlYWNoZWQgdGhlIEdMIHNlcnZlciBidXQKICAgICAv
LyBoYXZlIG5vdCB5ZXQgbmVjZXNzYXJpbHkgZXhlY3V0ZWQuCiAgICAgLy8KLSAgICAvLyBUaGUg
cHJldmlvdXMgY29tbWFuZHMgYXJlIHN0b3JlZCBpbiB0aGUgY29tbWFuZCBncmFwaCBhdCB0aGUg
bW9tZW50IGFuZCBhcmUgbm90IHlldAotICAgIC8vIGZsdXNoZWQuIFRoZSB3b3JkaW5nIGFsbG93
cyB1cyB0byBtYWtlIGEgc3VibWlzc2lvbiB0byBnZXQgdGhlIHRpbWVzdGFtcCB3aXRob3V0Ci0g
ICAgLy8gcGVyZm9ybWluZyBhIGZsdXNoLgorICAgIC8vIFRoZSBwcmV2aW91cyBjb21tYW5kcyBt
YXkgYmUgZGVmZXJyZWQgYXQgdGhlIG1vbWVudCBhbmQgbm90IHlldCBmbHVzaGVkLiBUaGUgd29y
ZGluZyBhbGxvd3MKKyAgICAvLyB1cyB0byBtYWtlIGEgc3VibWlzc2lvbiB0byBnZXQgdGhlIHRp
bWVzdGFtcCB3aXRob3V0IGZsdXNoaW5nLgogICAgIC8vCiAgICAgLy8gU2Vjb25kOgogICAgIC8v
CkBAIC0zNTY3LDE3ICszODU3LDExIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpnZXRUaW1l
c3RhbXAodWludDY0X3QgKnRpbWVzdGFtcE91dCkKIAogICAgIFZrQ29tbWFuZEJ1ZmZlckJlZ2lu
SW5mbyBiZWdpbkluZm8gPSB7fTsKICAgICBiZWdpbkluZm8uc1R5cGUgICAgICAgICAgICAgICAg
ICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQkVHSU5fSU5GTzsKLSAgICBi
ZWdpbkluZm8uZmxhZ3MgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICBiZWdpbkluZm8uZmxh
Z3MgICAgICAgICAgICAgICAgICAgID0gVktfQ09NTUFORF9CVUZGRVJfVVNBR0VfT05FX1RJTUVf
U1VCTUlUX0JJVDsKICAgICBiZWdpbkluZm8ucEluaGVyaXRhbmNlSW5mbyAgICAgICAgID0gbnVs
bHB0cjsKIAogICAgIEFOR0xFX1ZLX1RSWSh0aGlzLCBjb21tYW5kQnVmZmVyLmJlZ2luKGJlZ2lu
SW5mbykpOwotCi0gICAgY29tbWFuZEJ1ZmZlci5yZXNldFF1ZXJ5UG9vbCh0aW1lc3RhbXBRdWVy
eS5nZXRRdWVyeVBvb2woKS0+Z2V0SGFuZGxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lc3RhbXBRdWVyeS5nZXRRdWVyeSgpLCAxKTsKLSAgICBjb21tYW5kQnVmZmVy
LndyaXRlVGltZXN0YW1wKFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9QSVBFX0JJVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcFF1ZXJ5LmdldFF1ZXJ5UG9v
bCgpLT5nZXRIYW5kbGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dGFtcFF1ZXJ5LmdldFF1ZXJ5KCkpOwotCisgICAgdGltZXN0YW1wUXVlcnkud3JpdGVUaW1lc3Rh
bXAoJmNvbW1hbmRCdWZmZXIpOwogICAgIEFOR0xFX1ZLX1RSWSh0aGlzLCBjb21tYW5kQnVmZmVy
LmVuZCgpKTsKIAogICAgIC8vIENyZWF0ZSBmZW5jZSBmb3IgdGhlIHN1Ym1pc3Npb24KQEAgLTM2
MDEsMTkgKzM4ODUsMTQgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmdldFRpbWVzdGFtcCh1
aW50NjRfdCAqdGltZXN0YW1wT3V0KQogCiAgICAgU2VyaWFsIHRocm93QXdheVNlcmlhbDsKICAg
ICBBTkdMRV9UUlkoCi0gICAgICAgIG1SZW5kZXJlci0+cXVldWVTdWJtaXQodGhpcywgbUNvbnRl
eHRQcmlvcml0eSwgc3VibWl0SW5mbywgZmVuY2UuZ2V0KCksICZ0aHJvd0F3YXlTZXJpYWwpKTsK
KyAgICAgICAgbVJlbmRlcmVyLT5xdWV1ZVN1Ym1pdCh0aGlzLCBtQ29udGV4dFByaW9yaXR5LCBz
dWJtaXRJbmZvLCAmZmVuY2UuZ2V0KCksICZ0aHJvd0F3YXlTZXJpYWwpKTsKIAogICAgIC8vIFdh
aXQgZm9yIHRoZSBzdWJtaXNzaW9uIHRvIGZpbmlzaC4gIEdpdmVuIG5vIHNlbWFwaG9yZXMsIHRo
ZXJlIGlzIGhvcGUgdGhhdCBpdCB3b3VsZCBleGVjdXRlCiAgICAgLy8gaW4gcGFyYWxsZWwgd2l0
aCB3aGF0J3MgYWxyZWFkeSBydW5uaW5nIG9uIHRoZSBHUFUuCiAgICAgQU5HTEVfVktfVFJZKHRo
aXMsIGZlbmNlLmdldCgpLndhaXQoZGV2aWNlLCBtUmVuZGVyZXItPmdldE1heEZlbmNlV2FpdFRp
bWVOcygpKSk7CiAKICAgICAvLyBHZXQgdGhlIHF1ZXJ5IHJlc3VsdHMKLSAgICBjb25zdGV4cHIg
VmtRdWVyeVJlc3VsdEZsYWdzIHF1ZXJ5RmxhZ3MgPSBWS19RVUVSWV9SRVNVTFRfV0FJVF9CSVQg
fCBWS19RVUVSWV9SRVNVTFRfNjRfQklUOwotCi0gICAgQU5HTEVfVktfVFJZKHRoaXMsIHRpbWVz
dGFtcFF1ZXJ5LmdldFF1ZXJ5UG9vbCgpLT5nZXRSZXN1bHRzKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlLCB0aW1lc3RhbXBRdWVyeS5nZXRRdWVyeSgpLCAxLCBzaXplb2YoKnRp
bWVzdGFtcE91dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXBPdXQsIHNp
emVvZigqdGltZXN0YW1wT3V0KSwgcXVlcnlGbGFncykpOwotCisgICAgQU5HTEVfVFJZKHRpbWVz
dGFtcFF1ZXJ5LmdldFVpbnQ2NFJlc3VsdCh0aGlzLCB0aW1lc3RhbXBPdXQpKTsKICAgICB0aW1l
c3RhbXBRdWVyeVBvb2wuZ2V0KCkuZnJlZVF1ZXJ5KHRoaXMsICZ0aW1lc3RhbXBRdWVyeSk7CiAK
ICAgICAvLyBDb252ZXJ0IHJlc3VsdHMgdG8gbmFub3NlY29uZHMuCkBAIC0zNzA2LDk4ICszOTg1
LDM1NiBAQCBib29sIENvbnRleHRWazo6c2hvdWxkVXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJz
KCkgY29uc3QKICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLmZvcmNlT2xkUmV3
cml0ZVN0cnVjdFNhbXBsZXJzLmVuYWJsZWQ7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpvbkJ1ZmZl
clJlYWQoVmtBY2Nlc3NGbGFncyByZWFkQWNjZXNzVHlwZSwgdms6OkJ1ZmZlckhlbHBlciAqYnVm
ZmVyKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6Om9uQnVmZmVyUmVhZChWa0FjY2Vzc0ZsYWdz
IHJlYWRBY2Nlc3NUeXBlLCB2azo6QnVmZmVySGVscGVyICpidWZmZXIpCiB7CisgICAgQU5HTEVf
VFJZKGVuZFJlbmRlclBhc3MoKSk7CisKICAgICBpZiAoIWJ1ZmZlci0+Y2FuQWNjdW11bGF0ZVJl
YWQodGhpcywgcmVhZEFjY2Vzc1R5cGUpKQogICAgIHsKLSAgICAgICAgbU91dHNpZGVSZW5kZXJQ
YXNzQ29tbWFuZHMuZmx1c2hUb1ByaW1hcnkoJm1QcmltYXJ5Q29tbWFuZHMpOworICAgICAgICBm
bHVzaE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMoKTsKICAgICB9CiAKLSAgICBtT3V0c2lkZVJl
bmRlclBhc3NDb21tYW5kcy5idWZmZXJSZWFkKHJlYWRBY2Nlc3NUeXBlLCBidWZmZXIpOworICAg
IG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmJ1ZmZlclJlYWQoJm1SZXNvdXJjZVVzZUxpc3Qs
IHJlYWRBY2Nlc3NUeXBlLCBidWZmZXIpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwogfQogCi12b2lkIENvbnRleHRWazo6b25CdWZmZXJXcml0ZShWa0FjY2Vzc0ZsYWdz
IHdyaXRlQWNjZXNzVHlwZSwgdms6OkJ1ZmZlckhlbHBlciAqYnVmZmVyKQorYW5nbGU6OlJlc3Vs
dCBDb250ZXh0Vms6Om9uQnVmZmVyV3JpdGUoVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUs
IHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcikKIHsKKyAgICBBTkdMRV9UUlkoZW5kUmVuZGVyUGFz
cygpKTsKKwogICAgIGlmICghYnVmZmVyLT5jYW5BY2N1bXVsYXRlV3JpdGUodGhpcywgd3JpdGVB
Y2Nlc3NUeXBlKSkKICAgICB7Ci0gICAgICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmZs
dXNoVG9QcmltYXJ5KCZtUHJpbWFyeUNvbW1hbmRzKTsKKyAgICAgICAgZmx1c2hPdXRzaWRlUmVu
ZGVyUGFzc0NvbW1hbmRzKCk7CiAgICAgfQogCi0gICAgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFu
ZHMuYnVmZmVyV3JpdGUod3JpdGVBY2Nlc3NUeXBlLCBidWZmZXIpOworICAgIG1PdXRzaWRlUmVu
ZGVyUGFzc0NvbW1hbmRzLmJ1ZmZlcldyaXRlKCZtUmVzb3VyY2VVc2VMaXN0LCB3cml0ZUFjY2Vz
c1R5cGUsIGJ1ZmZlcik7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9
CiAKLXZvaWQgQ29udGV4dFZrOjpiZWdpblJlbmRlclBhc3MoY29uc3Qgdms6OkZyYW1lYnVmZmVy
ICZmcmFtZWJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmcmVuZGVyQXJlYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdms6OlJlbmRlclBhc3NEZXNjICZyZW5kZXJQYXNzRGVzYywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OkF0dGFjaG1lbnRPcHNBcnJheSAmcmVuZGVyUGFz
c0F0dGFjaG1lbnRPcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gJmNsZWFyVmFsdWVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpCithbmds
ZTo6UmVzdWx0IENvbnRleHRWazo6b25JbWFnZVJlYWQoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVj
dEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUxh
eW91dCBpbWFnZUxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
azo6SW1hZ2VIZWxwZXIgKmltYWdlKQogewotICAgIGlmICghbU91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMuZW1wdHkoKSkKKyAgICBBTkdMRV9UUlkoZW5kUmVuZGVyUGFzcygpKTsKKworICAgIGlm
IChpbWFnZS0+aXNMYXlvdXRDaGFuZ2VOZWNlc3NhcnkoaW1hZ2VMYXlvdXQpKQogICAgIHsKLSAg
ICAgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuZmx1c2hUb1ByaW1hcnkoJm1QcmltYXJ5
Q29tbWFuZHMpOworICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAg
ICAgICAgQU5HTEVfVFJZKGVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5k
QnVmZmVyKSk7CisgICAgICAgIGltYWdlLT5jaGFuZ2VMYXlvdXQoYXNwZWN0RmxhZ3MsIGltYWdl
TGF5b3V0LCBjb21tYW5kQnVmZmVyKTsKICAgICB9CisgICAgaW1hZ2UtPnJldGFpbigmbVJlc291
cmNlVXNlTGlzdCk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCith
bmdsZTo6UmVzdWx0IENvbnRleHRWazo6b25JbWFnZVdyaXRlKFZrSW1hZ2VBc3BlY3RGbGFncyBh
c3BlY3RGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6Oklt
YWdlTGF5b3V0IGltYWdlTGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2azo6SW1hZ2VIZWxwZXIgKmltYWdlKQoreworICAgIEFOR0xFX1RSWShlbmRSZW5kZXJQ
YXNzKCkpOworCisgICAgLy8gQmFycmllcnMgYXJlIGFsd2F5cyByZXF1aXJlZCBmb3IgaW1hZ2Ug
d3JpdGVzLgorICAgIEFTU0VSVChpbWFnZS0+aXNMYXlvdXRDaGFuZ2VOZWNlc3NhcnkoaW1hZ2VM
YXlvdXQpKTsKIAotICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuYmVnaW5SZW5kZXJQYXNzKGZyYW1l
YnVmZmVyLCByZW5kZXJBcmVhLCByZW5kZXJQYXNzRGVzYywKKyAgICB2azo6Q29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcjsKKyAgICBBTkdMRV9UUlkoZW5kUmVuZGVyUGFzc0FuZEdldENvbW1h
bmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKKworICAgIGltYWdlLT5jaGFuZ2VMYXlvdXQoYXNw
ZWN0RmxhZ3MsIGltYWdlTGF5b3V0LCBjb21tYW5kQnVmZmVyKTsKKyAgICBpbWFnZS0+cmV0YWlu
KCZtUmVzb3VyY2VVc2VMaXN0KTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKK30KKworYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmZsdXNoQW5kQmVnaW5SZW5kZXJQYXNz
KAorICAgIGNvbnN0IHZrOjpGcmFtZWJ1ZmZlciAmZnJhbWVidWZmZXIsCisgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmcmVuZGVyQXJlYSwKKyAgICBjb25zdCB2azo6UmVuZGVyUGFzc0Rlc2MgJnJl
bmRlclBhc3NEZXNjLAorICAgIGNvbnN0IHZrOjpBdHRhY2htZW50T3BzQXJyYXkgJnJlbmRlclBh
c3NBdHRhY2htZW50T3BzLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gJmNs
ZWFyVmFsdWVzLAorICAgIHZrOjpDb21tYW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCkKK3sK
KyAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGZs
dXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRCdWZmZXIoJnByaW1hcnkpKTsKKworICAgIGdsOjpSZWN0
YW5nbGUgcm90YXRlZFJlbmRlckFyZWEgPSByZW5kZXJBcmVhOworICAgIGlmIChpc1JvdGF0ZWRB
c3BlY3RSYXRpb0ZvckRyYXdGQk8oKSkKKyAgICB7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlIGlz
IHJvdGF0ZWQgOTAvMjcwIGRlZ3JlZXMuICBUaGlzIGNoYW5nZXMgdGhlIGFzcGVjdCByYXRpbyBv
ZgorICAgICAgICAvLyB0aGUgc3VyZmFjZS4gIFN3YXAgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2Yg
dGhlIHJlbmRlckFyZWEuCisgICAgICAgIC8vIFRPRE8oaWFuZWxsaW90dCk6IGhhbmRsZSBzbWFs
bCB2aWV3cG9ydC9zY2lzc29yIGNhc2VzLiAgaHR0cDovL2FuZ2xlYnVnLmNvbS80NDMxCisgICAg
ICAgIHN0ZDo6c3dhcChyb3RhdGVkUmVuZGVyQXJlYS53aWR0aCwgcm90YXRlZFJlbmRlckFyZWEu
aGVpZ2h0KTsKKyAgICB9CisKKyAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLmJlZ2luUmVuZGVyUGFz
cyhmcmFtZWJ1ZmZlciwgcm90YXRlZFJlbmRlckFyZWEsIHJlbmRlclBhc3NEZXNjLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3NBdHRhY2htZW50T3Bz
LCBjbGVhclZhbHVlcywgY29tbWFuZEJ1ZmZlck91dCk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwogfQogCi1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6Ok91dHNp
ZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigpCi0gICAgOiBtR2xvYmFsTWVtb3J5QmFycmllclNy
Y0FjY2VzcygwKSwKLSAgICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzKDApLAotICAg
ICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXMoMCkKLXt9CithbmdsZTo6UmVzdWx0IENvbnRl
eHRWazo6ZW5kUmVuZGVyUGFzcygpCit7CisgICAgb25SZW5kZXJQYXNzRmluaXNoZWQoKTsKKyAg
ICBpZiAobVJlbmRlclBhc3NDb21tYW5kcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAgIH0KIAotT3V0c2lkZVJlbmRlclBhc3NDb21t
YW5kQnVmZmVyOjp+T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCkgPSBkZWZhdWx0Owor
ICAgIGlmIChtR3B1RXZlbnRzRW5hYmxlZCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJQYXNzQ291
bnRlcisrOwogCi12b2lkIE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6Zmx1c2hUb1By
aW1hcnkodms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5KQorICAgICAgICBFdmVudE5h
bWUgZXZlbnROYW1lID0gR2V0VHJhY2VFdmVudE5hbWUoIlJQIiwgbVJlbmRlclBhc3NDb3VudGVy
KTsKKyAgICAgICAgQU5HTEVfVFJZKHRyYWNlR3B1RXZlbnQoJm1QcmltYXJ5Q29tbWFuZHMsIFRS
QUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBldmVudE5hbWUpKTsKKyAgICB9CisKKyAgICBBTkdMRV9U
UlkobVJlbmRlclBhc3NDb21tYW5kcy5mbHVzaFRvUHJpbWFyeSh0aGlzLCAmbVByaW1hcnlDb21t
YW5kcykpOworCisgICAgaWYgKG1HcHVFdmVudHNFbmFibGVkKQorICAgIHsKKyAgICAgICAgRXZl
bnROYW1lIGV2ZW50TmFtZSA9IEdldFRyYWNlRXZlbnROYW1lKCJSUCIsIG1SZW5kZXJQYXNzQ291
bnRlcik7CisgICAgICAgIEFOR0xFX1RSWSh0cmFjZUdwdUV2ZW50KCZtUHJpbWFyeUNvbW1hbmRz
LCBUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIGV2ZW50TmFtZSkpOworICAgIH0KKworICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwordm9pZCBDb250ZXh0Vms6Om9uUmVuZGVy
UGFzc0ltYWdlV3JpdGUoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0IGltYWdlTGF5b3V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlSGVscGVy
ICppbWFnZSkKIHsKLSAgICBpZiAoZW1wdHkoKSkKKyAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLmlt
YWdlV3JpdGUoJm1SZXNvdXJjZVVzZUxpc3QsIGFzcGVjdEZsYWdzLCBpbWFnZUxheW91dCwgaW1h
Z2UpOworfQorCithbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3luY0V4dGVybmFsTWVtb3J5KCkK
K3sKKyAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICBBTkdMRV9UUlko
ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKKworICAg
IFZrTWVtb3J5QmFycmllciBtZW1vcnlCYXJyaWVyID0ge307CisgICAgbWVtb3J5QmFycmllci5z
VHlwZSAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9NRU1PUllfQkFSUklFUjsKKyAgICBt
ZW1vcnlCYXJyaWVyLnNyY0FjY2Vzc01hc2sgICA9IFZLX0FDQ0VTU19NRU1PUllfV1JJVEVfQklU
OworICAgIG1lbW9yeUJhcnJpZXIuZHN0QWNjZXNzTWFzayAgID0gVktfQUNDRVNTX01FTU9SWV9S
RUFEX0JJVCB8IFZLX0FDQ0VTU19NRU1PUllfV1JJVEVfQklUOworCisgICAgY29tbWFuZEJ1ZmZl
ci0+bWVtb3J5QmFycmllcihWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1B
TkRTX0JJVCwgJm1lbW9yeUJhcnJpZXIpOworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKK30KKwordm9pZCBDb250ZXh0Vms6OmFkZENvbW1hbmRCdWZmZXJEaWFnbm9zdGljcyhj
b25zdCBzdGQ6OnN0cmluZyAmY29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzKQoreworICAgIG1Db21t
YW5kQnVmZmVyRGlhZ25vc3RpY3MucHVzaF9iYWNrKGNvbW1hbmRCdWZmZXJEaWFnbm9zdGljcyk7
Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpkdW1wQ29tbWFuZFN0cmVhbURpYWdub3N0aWNzKCkKK3sK
KyAgICBzdGQ6Om9zdHJlYW0gJm91dCA9IHN0ZDo6Y291dDsKKworICAgIGlmIChtQ29tbWFuZEJ1
ZmZlckRpYWdub3N0aWNzLmVtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtR2xv
YmFsTWVtb3J5QmFycmllclNyY0FjY2VzcykKKyAgICBvdXQgPDwgImRpZ3JhcGgge1xuIgorICAg
ICAgICA8PCAiICBub2RlIFtzaGFwZT1wbGFpbnRleHQgZm9udG5hbWU9XCJDb25zb2xhc1wiXVxu
IjsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtQ29tbWFuZEJ1ZmZlckRp
YWdub3N0aWNzLnNpemUoKTsgKytpbmRleCkKICAgICB7Ci0gICAgICAgIFZrTWVtb3J5QmFycmll
ciBtZW1vcnlCYXJyaWVyID0ge307Ci0gICAgICAgIG1lbW9yeUJhcnJpZXIuc1R5cGUgICAgICAg
ICAgID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0JBUlJJRVI7Ci0gICAgICAgIG1lbW9yeUJh
cnJpZXIuc3JjQWNjZXNzTWFzayAgID0gbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3M7Ci0g
ICAgICAgIG1lbW9yeUJhcnJpZXIuZHN0QWNjZXNzTWFzayAgID0gbUdsb2JhbE1lbW9yeUJhcnJp
ZXJEc3RBY2Nlc3M7CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwYXlsb2FkID0gbUNvbW1h
bmRCdWZmZXJEaWFnbm9zdGljc1tpbmRleF07CisgICAgICAgIG91dCA8PCAiICBjYiIgPDwgaW5k
ZXggPDwgIiBbbGFiZWwgPVwiIiA8PCBwYXlsb2FkIDw8ICJcIl07XG4iOworICAgIH0KIAotICAg
ICAgICBwcmltYXJ5LT5tZW1vcnlCYXJyaWVyKG1HbG9iYWxNZW1vcnlCYXJyaWVyU3RhZ2VzLCBt
R2xvYmFsTWVtb3J5QmFycmllclN0YWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbWVtb3J5QmFycmllcik7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1D
b21tYW5kQnVmZmVyRGlhZ25vc3RpY3Muc2l6ZSgpIC0gMTsgKytpbmRleCkKKyAgICB7CisgICAg
ICAgIG91dCA8PCAiICBjYiIgPDwgaW5kZXggPDwgIiAtPiBjYiIgPDwgaW5kZXggKyAxIDw8ICJc
biI7CiAgICAgfQogCi0gICAgbUNvbW1hbmRCdWZmZXIuZXhlY3V0ZUNvbW1hbmRzKHByaW1hcnkt
PmdldEhhbmRsZSgpKTsKKyAgICBtQ29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzLmNsZWFyKCk7CiAK
LSAgICAvLyBSZXN0YXJ0IHNlY29uZGFyeSBidWZmZXIuCi0gICAgcmVzZXQoKTsKKyAgICBvdXQg
PDwgIn1cbiI7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjppbml0SW5kZXhUeXBlTWFwKCkKK3sKKyAg
ICAvLyBJbml0IGdsZXMtdnVsa2FuIGluZGV4IHR5cGUgbWFwCisgICAgbUluZGV4VHlwZU1hcFtn
bDo6RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRCeXRlXSA9CisgICAgICAgIG1SZW5kZXJlci0+
Z2V0RmVhdHVyZXMoKS5zdXBwb3J0c0luZGV4VHlwZVVpbnQ4LmVuYWJsZWQgPyBWS19JTkRFWF9U
WVBFX1VJTlQ4X0VYVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogVktfSU5ERVhfVFlQRV9VSU5UMTY7CisgICAgbUluZGV4
VHlwZU1hcFtnbDo6RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRTaG9ydF0gPSBWS19JTkRFWF9U
WVBFX1VJTlQxNjsKKyAgICBtSW5kZXhUeXBlTWFwW2dsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNp
Z25lZEludF0gICA9IFZLX0lOREVYX1RZUEVfVUlOVDMyOworfQorCitWa0luZGV4VHlwZSBDb250
ZXh0Vms6OmdldFZrSW5kZXhUeXBlKGdsOjpEcmF3RWxlbWVudHNUeXBlIGdsSW5kZXhUeXBlKSBj
b25zdAoreworICAgIHJldHVybiBtSW5kZXhUeXBlTWFwW2dsSW5kZXhUeXBlXTsKIH0KIAotdm9p
ZCBPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OmJ1ZmZlclJlYWQoVmtBY2Nlc3NGbGFn
cyByZWFkQWNjZXNzVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcikKK3NpemVfdCBDb250ZXh0Vms6Omdl
dFZrSW5kZXhUeXBlU2l6ZShnbDo6RHJhd0VsZW1lbnRzVHlwZSBnbEluZGV4VHlwZSkgY29uc3QK
IHsKKyAgICBnbDo6RHJhd0VsZW1lbnRzVHlwZSBlbGVtZW50c1R5cGUgPSBzaG91bGRDb252ZXJ0
VWludDhWa0luZGV4VHlwZShnbEluZGV4VHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPyBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRTaG9ydAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdsSW5kZXhUeXBl
OworICAgIEFTU0VSVChlbGVtZW50c1R5cGUgPCBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6RW51bUNv
dW50KTsKKworICAgIC8vIFVzZSBHZXREcmF3RWxlbWVudHNUeXBlU2l6ZSgpIHRvIGdldCB0aGUg
c2l6ZQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGdsOjpHZXREcmF3RWxlbWVudHNU
eXBlU2l6ZShlbGVtZW50c1R5cGUpKTsKK30KKworYm9vbCBDb250ZXh0Vms6OnNob3VsZENvbnZl
cnRVaW50OFZrSW5kZXhUeXBlKGdsOjpEcmF3RWxlbWVudHNUeXBlIGdsSW5kZXhUeXBlKSBjb25z
dAoreworICAgIHJldHVybiAoZ2xJbmRleFR5cGUgPT0gZ2w6OkRyYXdFbGVtZW50c1R5cGU6OlVu
c2lnbmVkQnl0ZSAmJgorICAgICAgICAgICAgIW1SZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5zdXBw
b3J0c0luZGV4VHlwZVVpbnQ4LmVuYWJsZWQpOworfQorCit2b2lkIENvbnRleHRWazo6Zmx1c2hP
dXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzKCkKK3sKKyAgICBpZiAoIW1PdXRzaWRlUmVuZGVyUGFz
c0NvbW1hbmRzLmVtcHR5KCkpCisgICAgeworICAgICAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21t
YW5kcy5mbHVzaFRvUHJpbWFyeSh0aGlzLCAmbVByaW1hcnlDb21tYW5kcyk7CisgICAgICAgIG1I
YXNQcmltYXJ5Q29tbWFuZHMgPSB0cnVlOworICAgIH0KK30KKworQ29tbWFuZEJ1ZmZlckhlbHBl
cjo6Q29tbWFuZEJ1ZmZlckhlbHBlcigpCisgICAgOiBtSW1hZ2VCYXJyaWVyU3JjU3RhZ2VNYXNr
KDApLAorICAgICAgbUltYWdlQmFycmllckRzdFN0YWdlTWFzaygwKSwKKyAgICAgIG1HbG9iYWxN
ZW1vcnlCYXJyaWVyU3JjQWNjZXNzKDApLAorICAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RB
Y2Nlc3MoMCksCisgICAgICBtR2xvYmFsTWVtb3J5QmFycmllclN0YWdlcygwKQore30KKworQ29t
bWFuZEJ1ZmZlckhlbHBlcjo6fkNvbW1hbmRCdWZmZXJIZWxwZXIoKSA9IGRlZmF1bHQ7CisKK3Zv
aWQgQ29tbWFuZEJ1ZmZlckhlbHBlcjo6YnVmZmVyUmVhZCh2azo6UmVzb3VyY2VVc2VMaXN0ICpy
ZXNvdXJjZVVzZUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtB
Y2Nlc3NGbGFncyByZWFkQWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2azo6QnVmZmVySGVscGVyICpidWZmZXIpCit7CisgICAgYnVmZmVyLT5yZXRhaW4o
cmVzb3VyY2VVc2VMaXN0KTsKICAgICBidWZmZXItPnVwZGF0ZVJlYWRCYXJyaWVyKHJlYWRBY2Nl
c3NUeXBlLCAmbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MpOwogICAgIG1HbG9i
YWxNZW1vcnlCYXJyaWVyU3RhZ2VzID0gVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJ
VDsKIH0KIAotdm9pZCBPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OmJ1ZmZlcldyaXRl
KFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcikKK3ZvaWQg
Q29tbWFuZEJ1ZmZlckhlbHBlcjo6YnVmZmVyV3JpdGUodms6OlJlc291cmNlVXNlTGlzdCAqcmVz
b3VyY2VVc2VMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Fj
Y2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAqYnVmZmVyKQogeworICAgIGJ1ZmZlci0+cmV0YWlu
KHJlc291cmNlVXNlTGlzdCk7CiAgICAgYnVmZmVyLT51cGRhdGVXcml0ZUJhcnJpZXIod3JpdGVB
Y2Nlc3NUeXBlLCAmbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJm1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzKTsKICAgICBt
R2xvYmFsTWVtb3J5QmFycmllclN0YWdlcyA9IFZLX1BJUEVMSU5FX1NUQUdFX0FMTF9DT01NQU5E
U19CSVQ7CiB9CiAKLXZvaWQgT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjpyZXNldCgp
Cit2b2lkIENvbW1hbmRCdWZmZXJIZWxwZXI6OmltYWdlQmFycmllcihWa1BpcGVsaW5lU3RhZ2VG
bGFncyBzcmNTdGFnZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0ltYWdlTWVtb3J5QmFycmllciAmaW1hZ2VNZW1v
cnlCYXJyaWVyKQoreworICAgIEFTU0VSVChpbWFnZU1lbW9yeUJhcnJpZXIucE5leHQgPT0gbnVs
bHB0cik7CisgICAgbUltYWdlQmFycmllclNyY1N0YWdlTWFzayB8PSBzcmNTdGFnZU1hc2s7Cisg
ICAgbUltYWdlQmFycmllckRzdFN0YWdlTWFzayB8PSBkc3RTdGFnZU1hc2s7CisgICAgbUltYWdl
TWVtb3J5QmFycmllcnMucHVzaF9iYWNrKGltYWdlTWVtb3J5QmFycmllcik7Cit9CisKK3ZvaWQg
Q29tbWFuZEJ1ZmZlckhlbHBlcjo6aW1hZ2VSZWFkKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291
cmNlVXNlTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VB
c3BlY3RGbGFncyBhc3BlY3RGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZrOjpJbWFnZUxheW91dCBpbWFnZUxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZrOjpJbWFnZUhlbHBlciAqaW1hZ2UpCit7CisgICAgaW1hZ2UtPnJldGFp
bihyZXNvdXJjZVVzZUxpc3QpOworICAgIGlmIChpbWFnZS0+aXNMYXlvdXRDaGFuZ2VOZWNlc3Nh
cnkoaW1hZ2VMYXlvdXQpKQorICAgIHsKKyAgICAgICAgaW1hZ2UtPmNoYW5nZUxheW91dChhc3Bl
Y3RGbGFncywgaW1hZ2VMYXlvdXQsIHRoaXMpOworICAgIH0KK30KKwordm9pZCBDb21tYW5kQnVm
ZmVySGVscGVyOjppbWFnZVdyaXRlKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlQXNwZWN0Rmxh
Z3MgYXNwZWN0RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6
OkltYWdlTGF5b3V0IGltYWdlTGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpJbWFnZUhlbHBlciAqaW1hZ2UpCiB7Ci0gICAgbUdsb2JhbE1lbW9yeUJhcnJp
ZXJTcmNBY2Nlc3MgPSAwOwotICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzID0gMDsK
LSAgICBtR2xvYmFsTWVtb3J5QmFycmllclN0YWdlcyAgICA9IDA7CisgICAgaW1hZ2UtPnJldGFp
bihyZXNvdXJjZVVzZUxpc3QpOworICAgIGltYWdlLT5jaGFuZ2VMYXlvdXQoYXNwZWN0RmxhZ3Ms
IGltYWdlTGF5b3V0LCB0aGlzKTsKK30KIAordm9pZCBDb21tYW5kQnVmZmVySGVscGVyOjpleGVj
dXRlQmFycmllcnModms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5KQoreworICAgIGlm
IChtSW1hZ2VNZW1vcnlCYXJyaWVycy5lbXB0eSgpICYmIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3Jj
QWNjZXNzID09IDApCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmtQaXBl
bGluZVN0YWdlRmxhZ3Mgc3JjU3RhZ2VzID0gMDsKKyAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBk
c3RTdGFnZXMgPSAwOworCisgICAgVmtNZW1vcnlCYXJyaWVyIG1lbW9yeUJhcnJpZXIgPSB7fTsK
KyAgICB1aW50MzJfdCBtZW1vcnlCYXJyaWVyQ291bnQgICA9IDA7CisKKyAgICBpZiAobUdsb2Jh
bE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3MgIT0gMCkKKyAgICB7CisgICAgICAgIG1lbW9yeUJhcnJp
ZXIuc1R5cGUgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01FTU9SWV9CQVJSSUVSOworICAg
ICAgICBtZW1vcnlCYXJyaWVyLnNyY0FjY2Vzc01hc2sgPSBtR2xvYmFsTWVtb3J5QmFycmllclNy
Y0FjY2VzczsKKyAgICAgICAgbWVtb3J5QmFycmllci5kc3RBY2Nlc3NNYXNrID0gbUdsb2JhbE1l
bW9yeUJhcnJpZXJEc3RBY2Nlc3M7CisKKyAgICAgICAgbWVtb3J5QmFycmllckNvdW50Kys7Cisg
ICAgICAgIHNyY1N0YWdlcyB8PSBtR2xvYmFsTWVtb3J5QmFycmllclN0YWdlczsKKyAgICAgICAg
ZHN0U3RhZ2VzIHw9IG1HbG9iYWxNZW1vcnlCYXJyaWVyU3RhZ2VzOworCisgICAgICAgIG1HbG9i
YWxNZW1vcnlCYXJyaWVyU3JjQWNjZXNzID0gMDsKKyAgICAgICAgbUdsb2JhbE1lbW9yeUJhcnJp
ZXJEc3RBY2Nlc3MgPSAwOworICAgICAgICBtR2xvYmFsTWVtb3J5QmFycmllclN0YWdlcyAgICA9
IDA7CisgICAgfQorCisgICAgc3JjU3RhZ2VzIHw9IG1JbWFnZUJhcnJpZXJTcmNTdGFnZU1hc2s7
CisgICAgZHN0U3RhZ2VzIHw9IG1JbWFnZUJhcnJpZXJEc3RTdGFnZU1hc2s7CisgICAgcHJpbWFy
eS0+cGlwZWxpbmVCYXJyaWVyKHNyY1N0YWdlcywgZHN0U3RhZ2VzLCAwLCBtZW1vcnlCYXJyaWVy
Q291bnQsICZtZW1vcnlCYXJyaWVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4obUltYWdlTWVtb3J5QmFycmllcnMuc2l6ZSgp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUltYWdlTWVtb3J5QmFycmllcnMuZGF0
YSgpKTsKKyAgICBtSW1hZ2VNZW1vcnlCYXJyaWVycy5jbGVhcigpOworICAgIG1JbWFnZUJhcnJp
ZXJTcmNTdGFnZU1hc2sgPSAwOworICAgIG1JbWFnZUJhcnJpZXJEc3RTdGFnZU1hc2sgPSAwOwor
fQorCitPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6Ok91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZEJ1ZmZlcigpID0gZGVmYXVsdDsKKworT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVy
Ojp+T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCkgPSBkZWZhdWx0OworCit2b2lkIE91
dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6Zmx1c2hUb1ByaW1hcnkoQ29udGV4dFZrICpj
b250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5KQoreworICAgIGlmIChlbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoa0VuYWJsZUNvbW1hbmRTdHJlYW1EaWFn
bm9zdGljcykKKyAgICB7CisgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvdXQ7CisgICAgICAg
IGlmIChtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcyAhPSAwIHx8IG1HbG9iYWxNZW1vcnlC
YXJyaWVyRHN0QWNjZXNzICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiTWVt
b3J5IEJhcnJpZXIgU3JjOiAweCIgPDwgc3RkOjpoZXggPDwgbUdsb2JhbE1lbW9yeUJhcnJpZXJT
cmNBY2Nlc3MKKyAgICAgICAgICAgICAgICA8PCAiICZyYXJyOyBEc3Q6IDB4IiA8PCBzdGQ6Omhl
eCA8PCBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzcyA8PCAiXFxsIjsKKyAgICAgICAgfQor
CisgICAgICAgIG91dCA8PCBtQ29tbWFuZEJ1ZmZlci5kdW1wQ29tbWFuZHMoIlxcbCIpOworICAg
ICAgICBjb250ZXh0VmstPmFkZENvbW1hbmRCdWZmZXJEaWFnbm9zdGljcyhvdXQuc3RyKCkpOwor
ICAgIH0KKworICAgIGV4ZWN1dGVCYXJyaWVycyhwcmltYXJ5KTsKKyAgICBtQ29tbWFuZEJ1ZmZl
ci5leGVjdXRlQ29tbWFuZHMocHJpbWFyeS0+Z2V0SGFuZGxlKCkpOworCisgICAgLy8gUmVzdGFy
dCBzZWNvbmRhcnkgYnVmZmVyLgorICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgT3V0c2lkZVJlbmRl
clBhc3NDb21tYW5kQnVmZmVyOjpyZXNldCgpCit7CiAgICAgbUNvbW1hbmRCdWZmZXIucmVzZXQo
KTsKIH0KIAotUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OlJlbmRlclBhc3NDb21tYW5kQnVmZmVy
KCkgPSBkZWZhdWx0OworUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OlJlbmRlclBhc3NDb21tYW5k
QnVmZmVyKCkKKyAgICA6IG1Db3VudGVyKDApLAorICAgICAgbUNsZWFyVmFsdWVze30sCisgICAg
ICBtUmVuZGVyUGFzc1N0YXJ0ZWQoZmFsc2UpLAorICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQ291
bnRlckJ1ZmZlcnN7fSwKKyAgICAgIG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQo
MCksCisgICAgICBtUmViaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGZhbHNlKQore30KIAog
UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6On5SZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigpCiB7CkBA
IC0zODI1LDYgKzQzNjIsMjIgQEAgdm9pZCBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6YmVnaW5S
ZW5kZXJQYXNzKGNvbnN0IHZrOjpGcmFtZWJ1ZmZlciAmZnJhbWVidWZmZXIKICAgICBzdGQ6OmNv
cHkoY2xlYXJWYWx1ZXMuYmVnaW4oKSwgY2xlYXJWYWx1ZXMuZW5kKCksIG1DbGVhclZhbHVlcy5i
ZWdpbigpKTsKIAogICAgICpjb21tYW5kQnVmZmVyT3V0ID0gJm1Db21tYW5kQnVmZmVyOworCisg
ICAgbVJlbmRlclBhc3NTdGFydGVkID0gdHJ1ZTsKKyAgICBtQ291bnRlcisrOworfQorCit2b2lk
IFJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHNpemVfdCB2
YWxpZEJ1ZmZlckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRlckJ1ZmZlcnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmViaW5kQnVm
ZmVyKQoreworICAgIG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odmFsaWRCdWZmZXJDb3VudCk7CisgICAgbVJlYmluZFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVycyAgICA9IHJlYmluZEJ1ZmZlcjsKKworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCB2YWxpZEJ1ZmZlckNvdW50OyBpbmRleCsrKQorICAgIHsKKyAgICAgICAg
bVRyYW5zZm9ybUZlZWRiYWNrQ291bnRlckJ1ZmZlcnNbaW5kZXhdID0gY291bnRlckJ1ZmZlcnNb
aW5kZXhdOworICAgIH0KIH0KIAogYW5nbGU6OlJlc3VsdCBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZl
cjo6Zmx1c2hUb1ByaW1hcnkoQ29udGV4dFZrICpjb250ZXh0VmssCkBAIC0zODMzLDYgKzQzODYs
MTMgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6Zmx1c2hUb1ByaW1h
cnkoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgaWYgKGVtcHR5KCkpCiAgICAgICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIAorICAgIGlmIChrRW5hYmxlQ29tbWFuZFN0cmVh
bURpYWdub3N0aWNzKQorICAgIHsKKyAgICAgICAgYWRkUmVuZGVyUGFzc0NvbW1hbmREaWFnbm9z
dGljcyhjb250ZXh0VmspOworICAgIH0KKworICAgIGV4ZWN1dGVCYXJyaWVycyhwcmltYXJ5KTsK
KwogICAgIC8vIFB1bGwgYSBSZW5kZXJQYXNzIGZyb20gdGhlIGNhY2hlLgogICAgIFJlbmRlclBh
c3NDYWNoZSAmcmVuZGVyUGFzc0NhY2hlID0gY29udGV4dFZrLT5nZXRSZW5kZXJQYXNzQ2FjaGUo
KTsKICAgICBTZXJpYWwgc2VyaWFsICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0
Q3VycmVudFF1ZXVlU2VyaWFsKCk7CkBAIC0zODU0LDggKzQ0MTQsNDIgQEAgYW5nbGU6OlJlc3Vs
dCBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6Zmx1c2hUb1ByaW1hcnkoQ29udGV4dFZrICpjb250
ZXh0VmssCiAKICAgICAvLyBSdW4gY29tbWFuZHMgaW5zaWRlIHRoZSBSZW5kZXJQYXNzLgogICAg
IHByaW1hcnktPmJlZ2luUmVuZGVyUGFzcyhiZWdpbkluZm8sIFZLX1NVQlBBU1NfQ09OVEVOVFNf
SU5MSU5FKTsKLSAgICBtQ29tbWFuZEJ1ZmZlci5leGVjdXRlQ29tbWFuZHMocHJpbWFyeS0+Z2V0
SGFuZGxlKCkpOwotICAgIHByaW1hcnktPmVuZFJlbmRlclBhc3MoKTsKKworICAgIGlmIChtVmFs
aWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50ID09IDApCisgICAgeworICAgICAgICBtQ29t
bWFuZEJ1ZmZlci5leGVjdXRlQ29tbWFuZHMocHJpbWFyeS0+Z2V0SGFuZGxlKCkpOworICAgICAg
ICBwcmltYXJ5LT5lbmRSZW5kZXJQYXNzKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIHVpbnQzMl90IG51bUNvdW50ZXJCdWZmZXJzID0KKyAgICAgICAgICAgIChtUmViaW5kVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzKSA/IDAgOiBtVmFsaWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ckNvdW50OworCisgICAgICAgIHByaW1hcnktPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQoMCwg
bnVtQ291bnRlckJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQ291bnRlckJ1ZmZlcnMuZGF0YSgpLCBudWxscHRyKTsK
KyAgICAgICAgbUNvbW1hbmRCdWZmZXIuZXhlY3V0ZUNvbW1hbmRzKHByaW1hcnktPmdldEhhbmRs
ZSgpKTsKKyAgICAgICAgcHJpbWFyeS0+ZW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQoMCwgbVZhbGlk
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQ291bnRlckJ1ZmZlcnMuZGF0YSgpLCBu
dWxscHRyKTsKKworICAgICAgICBwcmltYXJ5LT5lbmRSZW5kZXJQYXNzKCk7CisKKyAgICAgICAg
Ly8gV291bGQgYmUgYmV0dGVyIHRvIGFjY3VtdWxhdGUgdGhpcyBiYXJyaWVyIHVzaW5nIHRoZSBj
b21tYW5kIEFQSXMuCisgICAgICAgIC8vIFRPRE86IENsZWFuIHRodXMgdXAgYmVmb3JlIHdlIGNs
b3NlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzIwNgorICAgICAgICBWa0J1ZmZlck1lbW9yeUJhcnJp
ZXIgYnVmZmVyQmFycmllciA9IHt9OworICAgICAgICBidWZmZXJCYXJyaWVyLnNUeXBlICAgICAg
ICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZFUl9NRU1PUllfQkFSUklFUjsKKyAg
ICAgICAgYnVmZmVyQmFycmllci5wTmV4dCAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAg
ICAgICBidWZmZXJCYXJyaWVyLnNyY0FjY2Vzc01hc2sgICAgICAgICA9IFZLX0FDQ0VTU19UUkFO
U0ZPUk1fRkVFREJBQ0tfQ09VTlRFUl9XUklURV9CSVRfRVhUOworICAgICAgICBidWZmZXJCYXJy
aWVyLmRzdEFjY2Vzc01hc2sgICAgICAgICA9IFZLX0FDQ0VTU19UUkFOU0ZPUk1fRkVFREJBQ0tf
Q09VTlRFUl9SRUFEX0JJVF9FWFQ7CisgICAgICAgIGJ1ZmZlckJhcnJpZXIuc3JjUXVldWVGYW1p
bHlJbmRleCAgID0gVktfUVVFVUVfRkFNSUxZX0lHTk9SRUQ7CisgICAgICAgIGJ1ZmZlckJhcnJp
ZXIuZHN0UXVldWVGYW1pbHlJbmRleCAgID0gVktfUVVFVUVfRkFNSUxZX0lHTk9SRUQ7CisgICAg
ICAgIGJ1ZmZlckJhcnJpZXIuYnVmZmVyICAgICAgICAgICAgICAgID0gbVRyYW5zZm9ybUZlZWRi
YWNrQ291bnRlckJ1ZmZlcnNbMF07CisgICAgICAgIGJ1ZmZlckJhcnJpZXIub2Zmc2V0ICAgICAg
ICAgICAgICAgID0gMDsKKyAgICAgICAgYnVmZmVyQmFycmllci5zaXplICAgICAgICAgICAgICAg
ICAgPSBWS19XSE9MRV9TSVpFOworCisgICAgICAgIHByaW1hcnktPnBpcGVsaW5lQmFycmllcihW
S19QSVBFTElORV9TVEFHRV9UUkFOU0ZPUk1fRkVFREJBQ0tfQklUX0VYVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0RSQVdfSU5ESVJFQ1RfQklU
LCAwdSwgMHUsIG51bGxwdHIsIDF1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmJ1ZmZlckJhcnJpZXIsIDB1LCBudWxscHRyKTsKKyAgICB9CiAKICAgICAvLyBSZXN0YXJ0IHRo
ZSBjb21tYW5kIGJ1ZmZlci4KICAgICByZXNldCgpOwpAQCAtMzg2Myw4ICs0NDU3LDYzIEBAIGFu
Z2xlOjpSZXN1bHQgUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OmZsdXNoVG9QcmltYXJ5KENvbnRl
eHRWayAqY29udGV4dFZrLAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
IAordm9pZCBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6YWRkUmVuZGVyUGFzc0NvbW1hbmREaWFn
bm9zdGljcyhDb250ZXh0VmsgKmNvbnRleHRWaykKK3sKKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0g
b3V0OworICAgIGlmIChtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcyAhPSAwIHx8IG1HbG9i
YWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzICE9IDApCisgICAgeworICAgICAgICBvdXQgPDwgIk1l
bW9yeSBCYXJyaWVyIFNyYzogMHgiIDw8IHN0ZDo6aGV4IDw8IG1HbG9iYWxNZW1vcnlCYXJyaWVy
U3JjQWNjZXNzCisgICAgICAgICAgICA8PCAiICZyYXJyOyBEc3Q6IDB4IiA8PCBzdGQ6OmhleCA8
PCBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzcyA8PCAiXFxsIjsKKyAgICB9CisKKyAgICBz
aXplX3QgYXR0YWNobWVudENvdW50ICAgICAgICAgICAgID0gbVJlbmRlclBhc3NEZXNjLmF0dGFj
aG1lbnRDb3VudCgpOworICAgIHNpemVfdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50Q291bnQgPSBt
UmVuZGVyUGFzc0Rlc2MuaGFzRGVwdGhTdGVuY2lsQXR0YWNobWVudCgpOworICAgIHNpemVfdCBj
b2xvckF0dGFjaG1lbnRDb3VudCAgICAgICAgPSBhdHRhY2htZW50Q291bnQgLSBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50Q291bnQ7CisKKyAgICBzdGQ6OnN0cmluZyBsb2FkT3BzLCBzdG9yZU9wczsK
KworICAgIGlmIChjb2xvckF0dGFjaG1lbnRDb3VudCA+IDApCisgICAgeworICAgICAgICBsb2Fk
T3BzICs9ICIgQ29sb3I6ICI7CisgICAgICAgIHN0b3JlT3BzICs9ICIgQ29sb3I6ICI7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2xvckF0dGFjaG1lbnRDb3VudDsgKytpKQor
ICAgICAgICB7CisgICAgICAgICAgICBsb2FkT3BzICs9IEdldExvYWRPcFNob3J0aGFuZChtQXR0
YWNobWVudE9wc1tpXS5sb2FkT3ApOworICAgICAgICAgICAgc3RvcmVPcHMgKz0gR2V0U3RvcmVP
cFNob3J0aGFuZChtQXR0YWNobWVudE9wc1tpXS5zdG9yZU9wKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50Q291bnQgPiAwKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnRDb3VudCA9PSAxKTsKKworICAgICAgICBs
b2FkT3BzICs9ICIgRGVwdGgvU3RlbmNpbDogIjsKKyAgICAgICAgc3RvcmVPcHMgKz0gIiBEZXB0
aC9TdGVuY2lsOiAiOworICAgICAgICBzaXplX3QgZHNJbmRleCA9IGNvbG9yQXR0YWNobWVudENv
dW50OworCisgICAgICAgIGxvYWRPcHMgKz0gR2V0TG9hZE9wU2hvcnRoYW5kKG1BdHRhY2htZW50
T3BzW2RzSW5kZXhdLmxvYWRPcCk7CisgICAgICAgIGxvYWRPcHMgKz0gR2V0TG9hZE9wU2hvcnRo
YW5kKG1BdHRhY2htZW50T3BzW2RzSW5kZXhdLnN0ZW5jaWxMb2FkT3ApOworCisgICAgICAgIHN0
b3JlT3BzICs9IEdldFN0b3JlT3BTaG9ydGhhbmQobUF0dGFjaG1lbnRPcHNbZHNJbmRleF0uc3Rv
cmVPcCk7CisgICAgICAgIHN0b3JlT3BzICs9IEdldFN0b3JlT3BTaG9ydGhhbmQobUF0dGFjaG1l
bnRPcHNbZHNJbmRleF0uc3RlbmNpbFN0b3JlT3ApOworICAgIH0KKworICAgIGlmIChhdHRhY2ht
ZW50Q291bnQgPiAwKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJMb2FkT3A6ICAiIDw8IGxvYWRP
cHMgPDwgIlxcbCI7CisgICAgICAgIG91dCA8PCAiU3RvcmVPcDogIiA8PCBzdG9yZU9wcyA8PCAi
XFxsIjsKKyAgICB9CisKKyAgICBvdXQgPDwgbUNvbW1hbmRCdWZmZXIuZHVtcENvbW1hbmRzKCJc
XGwiKTsKKyAgICBjb250ZXh0VmstPmFkZENvbW1hbmRCdWZmZXJEaWFnbm9zdGljcyhvdXQuc3Ry
KCkpOworfQorCiB2b2lkIFJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjpyZXNldCgpCiB7CiAgICAg
bUNvbW1hbmRCdWZmZXIucmVzZXQoKTsKKyAgICBtUmVuZGVyUGFzc1N0YXJ0ZWQgICAgICAgICAg
ICAgICAgID0gZmFsc2U7CisgICAgbVZhbGlkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCA9
IDA7CisgICAgbVJlYmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyAgICA9IGZhbHNlOwogfQog
fSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaAppbmRleCBi
YThiZjJkZjU0NGJmZmQwYzVjNmVmZDM0YTU5ZmUwOWMxNzcyN2ZjLi5jMjMzNDllZTYxNjcxOGNk
MDE1MDQ1NmM0MzM2OWZiMTQ3ODQxMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZr
LmgKQEAgLTI2LDkgKzI2LDI3IEBAIHN0cnVjdCBGZWF0dXJlc1ZrOwogCiBuYW1lc3BhY2UgcngK
IHsKK2NsYXNzIFByb2dyYW1FeGVjdXRhYmxlVms7CiBjbGFzcyBSZW5kZXJlclZrOwogY2xhc3Mg
V2luZG93U3VyZmFjZVZrOwogCisvLyBUaGUgcG9zc2libGUgcm90YXRpb25zIG9mIHRoZSBzdXJm
YWNlL2RyYXcgZnJhbWVidWZmZXIsIHVzZWQgZm9yIHByZS1yb3RhdGluZyBnbF9Qb3NpdGlvbgor
Ly8gaW4gdGhlIHZlcnRleCBzaGFkZXIuCitlbnVtIGNsYXNzIFN1cmZhY2VSb3RhdGlvblR5cGUK
K3sKKyAgICBJZGVudGl0eSwKKyAgICBSb3RhdGVkOTBEZWdyZWVzLAorICAgIFJvdGF0ZWQxODBE
ZWdyZWVzLAorICAgIFJvdGF0ZWQyNzBEZWdyZWVzLAorICAgIEZsaXBwZWRJZGVudGl0eSwKKyAg
ICBGbGlwcGVkUm90YXRlZDkwRGVncmVlcywKKyAgICBGbGlwcGVkUm90YXRlZDE4MERlZ3JlZXMs
CisgICAgRmxpcHBlZFJvdGF0ZWQyNzBEZWdyZWVzLAorCisgICAgSW52YWxpZEVudW0sCisgICAg
RW51bUNvdW50ID0gSW52YWxpZEVudW0sCit9OworCiBzdHJ1Y3QgQ29tbWFuZEJhdGNoIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgICAgQ29tbWFuZEJhdGNoKCk7CkBAIC05NSwzMSAr
MTEzLDYwIEBAIGNsYXNzIENvbW1hbmRRdWV1ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIHZrOjpQZXJzaXN0ZW50Q29tbWFuZFBvb2wgbVByaW1hcnlDb21tYW5kUG9vbDsKIH07CiAK
LWNsYXNzIE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQorc3RydWN0IENvbW1hbmRCdWZmZXJIZWxwZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUK
IHsKICAgcHVibGljOgotICAgIE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigpOwotICAg
IH5PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoKTsKLQotICAgIHZvaWQgYnVmZmVyUmVh
ZChWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NUeXBlLCB2azo6QnVmZmVySGVscGVyICpidWZmZXIp
OwotICAgIHZvaWQgYnVmZmVyV3JpdGUoVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUsIHZr
OjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcik7Ci0KLSAgICB2b2lkIGZsdXNoVG9QcmltYXJ5KHZrOjpQ
cmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeSk7CisgICAgdm9pZCBidWZmZXJSZWFkKHZrOjpS
ZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgVmtB
Y2Nlc3NGbGFncyByZWFkQWNjZXNzVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgdms6OkJ1ZmZl
ckhlbHBlciAqYnVmZmVyKTsKKyAgICB2b2lkIGJ1ZmZlcldyaXRlKHZrOjpSZXNvdXJjZVVzZUxp
c3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3Mg
d3JpdGVBY2Nlc3NUeXBlLAorICAgICAgICAgICAgICAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAq
YnVmZmVyKTsKKworICAgIHZvaWQgaW1hZ2VSZWFkKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291
cmNlVXNlTGlzdCwKKyAgICAgICAgICAgICAgICAgICBWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0
RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0IGltYWdlTGF5b3V0LAor
ICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUhlbHBlciAqaW1hZ2UpOworCisgICAgdm9pZCBp
bWFnZVdyaXRlKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzLAorICAgICAgICAgICAg
ICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQsCisgICAgICAgICAgICAgICAgICAg
IHZrOjpJbWFnZUhlbHBlciAqaW1hZ2UpOworCisgICAgdm9pZCBpbWFnZUJhcnJpZXIoVmtQaXBl
bGluZVN0YWdlRmxhZ3Mgc3JjU3RhZ2VNYXNrLAorICAgICAgICAgICAgICAgICAgICAgIFZrUGlw
ZWxpbmVTdGFnZUZsYWdzIGRzdFN0YWdlTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWa0ltYWdlTWVtb3J5QmFycmllciAmaW1hZ2VNZW1vcnlCYXJyaWVyKTsKIAogICAgIHZrOjpD
b21tYW5kQnVmZmVyICZnZXRDb21tYW5kQnVmZmVyKCkgeyByZXR1cm4gbUNvbW1hbmRCdWZmZXI7
IH0KIAotICAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBtQ29tbWFuZEJ1ZmZlci5lbXB0
eSgpOyB9Ci0gICAgdm9pZCByZXNldCgpOworICBwcm90ZWN0ZWQ6CisgICAgQ29tbWFuZEJ1ZmZl
ckhlbHBlcigpOworICAgIH5Db21tYW5kQnVmZmVySGVscGVyKCk7CiAKLSAgcHJpdmF0ZToKKyAg
ICB2b2lkIGV4ZWN1dGVCYXJyaWVycyh2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnkp
OworCisgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgbUltYWdlQmFycmllclNyY1N0YWdlTWFzazsK
KyAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBtSW1hZ2VCYXJyaWVyRHN0U3RhZ2VNYXNrOworICAg
IHN0ZDo6dmVjdG9yPFZrSW1hZ2VNZW1vcnlCYXJyaWVyPiBtSW1hZ2VNZW1vcnlCYXJyaWVyczsK
ICAgICBWa0ZsYWdzIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3JjQWNjZXNzOwogICAgIFZrRmxhZ3Mg
bUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3M7CiAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3Mg
bUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXM7Ci0KICAgICB2azo6Q29tbWFuZEJ1ZmZlciBtQ29t
bWFuZEJ1ZmZlcjsKIH07CiAKLWNsYXNzIFJlbmRlclBhc3NDb21tYW5kQnVmZmVyIGZpbmFsIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCitjbGFzcyBPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIg
ZmluYWwgOiBwdWJsaWMgQ29tbWFuZEJ1ZmZlckhlbHBlcgoreworICBwdWJsaWM6CisgICAgT3V0
c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCk7CisgICAgfk91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZEJ1ZmZlcigpOworCisgICAgdm9pZCBmbHVzaFRvUHJpbWFyeShDb250ZXh0VmsgKmNvbnRl
eHRWaywgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5KTsKKworICAgIGJvb2wgZW1w
dHkoKSBjb25zdCB7IHJldHVybiBtQ29tbWFuZEJ1ZmZlci5lbXB0eSgpOyB9CisgICAgdm9pZCBy
ZXNldCgpOworfTsKKworY2xhc3MgUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIgZmluYWwgOiBwdWJs
aWMgQ29tbWFuZEJ1ZmZlckhlbHBlcgogewogICBwdWJsaWM6CiAgICAgUmVuZGVyUGFzc0NvbW1h
bmRCdWZmZXIoKTsKQEAgLTEzNCw2ICsxODEsMTAgQEAgY2xhc3MgUmVuZGVyUGFzc0NvbW1hbmRC
dWZmZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxWa0NsZWFyVmFsdWU+ICZjbGVhclZhbHVlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpOwog
CisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrKHNpemVfdCB2YWxpZEJ1ZmZlckNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRl
ckJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmViaW5kQnVm
ZmVyKTsKKwogICAgIHZvaWQgY2xlYXJSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KHNpemVfdCBh
dHRhY2htZW50SW5kZXgsIGNvbnN0IFZrQ2xlYXJDb2xvclZhbHVlICZjbGVhclZhbHVlKQogICAg
IHsKICAgICAgICAgbUF0dGFjaG1lbnRPcHNbYXR0YWNobWVudEluZGV4XS5sb2FkT3AgPSBWS19B
VFRBQ0hNRU5UX0xPQURfT1BfQ0xFQVI7CkBAIC0xNjcsMjEgKzIxOCw0MiBAQCBjbGFzcyBSZW5k
ZXJQYXNzQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBt
QXR0YWNobWVudE9wc1thdHRhY2htZW50SW5kZXhdLnN0ZW5jaWxTdG9yZU9wID0gVktfQVRUQUNI
TUVOVF9TVE9SRV9PUF9ET05UX0NBUkU7CiAgICAgfQogCisgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmZ2V0UmVuZGVyQXJlYSgpIGNvbnN0IHsgcmV0dXJuIG1SZW5kZXJBcmVhOyB9CisKICAgICBh
bmdsZTo6UmVzdWx0IGZsdXNoVG9QcmltYXJ5KENvbnRleHRWayAqY29udGV4dFZrLCB2azo6UHJp
bWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnkpOwogCi0gICAgYm9vbCBlbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1Db21tYW5kQnVmZmVyLmVtcHR5KCk7IH0KKyAgICBib29sIGVtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIXN0YXJ0ZWQoKSAmJiBtQ29tbWFuZEJ1ZmZlci5lbXB0eSgpOyB9CisgICAgYm9v
bCBzdGFydGVkKCkgY29uc3QgeyByZXR1cm4gbVJlbmRlclBhc3NTdGFydGVkOyB9CiAgICAgdm9p
ZCByZXNldCgpOwogCisgICAgdWludDMyX3QgZ2V0QW5kUmVzZXRDb3VudGVyKCkKKyAgICB7Cisg
ICAgICAgIHVpbnQzMl90IGNvdW50ID0gbUNvdW50ZXI7CisgICAgICAgIG1Db3VudGVyICAgICAg
ID0gMDsKKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKwogICBwcml2YXRlOgorICAgIHZv
aWQgYWRkUmVuZGVyUGFzc0NvbW1hbmREaWFnbm9zdGljcyhDb250ZXh0VmsgKmNvbnRleHRWayk7
CisKKyAgICB1aW50MzJfdCBtQ291bnRlcjsKICAgICB2azo6UmVuZGVyUGFzc0Rlc2MgbVJlbmRl
clBhc3NEZXNjOwogICAgIHZrOjpBdHRhY2htZW50T3BzQXJyYXkgbUF0dGFjaG1lbnRPcHM7CiAg
ICAgdms6OkZyYW1lYnVmZmVyIG1GcmFtZWJ1ZmZlcjsKICAgICBnbDo6UmVjdGFuZ2xlIG1SZW5k
ZXJBcmVhOwogICAgIGdsOjpBdHRhY2htZW50QXJyYXk8VmtDbGVhclZhbHVlPiBtQ2xlYXJWYWx1
ZXM7Ci0gICAgdms6OkNvbW1hbmRCdWZmZXIgbUNvbW1hbmRCdWZmZXI7CisgICAgYm9vbCBtUmVu
ZGVyUGFzc1N0YXJ0ZWQ7CisKKyAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgc3RhdGUKKyAgICBn
bDo6VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzQXJyYXk8VmtCdWZmZXI+IG1UcmFuc2Zvcm1GZWVk
YmFja0NvdW50ZXJCdWZmZXJzOworICAgIHVpbnQzMl90IG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyQ291bnQ7CisgICAgYm9vbCBtUmViaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzOwog
fTsKIAotY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNv
bnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc093bmVyCitzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IGtNYXhHcHVFdmVudE5hbWVMZW4gPSAzMjsKK3VzaW5nIEV2ZW50TmFtZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6YXJyYXk8Y2hhciwga01heEdwdUV2ZW50TmFtZUxl
bj47CisKK2NsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpD
b250ZXh0CiB7CiAgIHB1YmxpYzoKICAgICBDb250ZXh0VmsoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwgZ2w6OkVycm9yU2V0ICplcnJvclNldCwgUmVuZGVyZXJWayAqcmVuZGVyZXIpOwpAQCAtMjY2
LDYgKzMzOCwxMiBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1Ymxp
YyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpEcmF3RWxlbWVudHNUeXBlIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVj
dCkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBjbGVhcldpdGhSZW5kZXJQYXNzT3AoY29u
c3QgZ2w6OlJlY3RhbmdsZSAmY2xlYXJBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpEcmF3QnVmZmVyTWFzayBjbGVhckNvbG9yQnVmZmVycywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNsZWFyRGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjbGVhclN0ZW5jaWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtDbGVhckNvbG9y
VmFsdWUgJmNsZWFyQ29sb3JWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWa0NsZWFyRGVwdGhTdGVuY2lsVmFsdWUgJmNsZWFyRGVwdGhTdGVuY2ls
VmFsdWUpOwogCiAgICAgLy8gRGV2aWNlIGxvc3MKICAgICBnbDo6R3JhcGhpY3NSZXNldFN0YXR1
cyBnZXRSZXNldFN0YXR1cygpIG92ZXJyaWRlOwpAQCAtMjc1LDE2ICszNTMsMjQgQEAgY2xhc3Mg
Q29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1Ymxp
YyB2azo6UmVuZGVyUGFzc08KICAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFRfZGVidWdfbWFya2VyCi0gICAgdm9pZCBp
bnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7
CisgICAgYW5nbGU6OlJlc3VsdCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29u
c3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHB1c2hHcm91cE1h
cmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBh
bmdsZTo6UmVzdWx0IHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBLSFJfZGVi
dWcKLSAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgY29u
c3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9wRGVidWdHcm91
cCgpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcHVzaERlYnVnR3JvdXAoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3Nh
Z2UpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wRGVidWdHcm91cChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzVmlld3BvcnRGbGlwRW5h
YmxlZEZvckRyYXdGQk8oKSBjb25zdDsKICAgICBib29sIGlzVmlld3BvcnRGbGlwRW5hYmxlZEZv
clJlYWRGQk8oKSBjb25zdDsKKyAgICAvLyBXaGVuIHRoZSBkZXZpY2Uvc3VyZmFjZSBpcyByb3Rh
dGVkIHN1Y2ggdGhhdCB0aGUgc3VyZmFjZSdzIGFzcGVjdCByYXRpbyBpcyBkaWZmZXJlbnQgdGhh
bgorICAgIC8vIHRoZSBuYXRpdmUgZGV2aWNlIChlLmcuIDkwIGRlZ3JlZXMpLCB0aGUgd2lkdGgg
YW5kIGhlaWdodCBvZiB0aGUgdmlld3BvcnQsIHNjaXNzb3IsIGFuZAorICAgIC8vIHJlbmRlciBh
cmVhIG11c3QgYmUgc3dhcHBlZC4KKyAgICBib29sIGlzUm90YXRlZEFzcGVjdFJhdGlvRm9yRHJh
d0ZCTygpIGNvbnN0OworICAgIGJvb2wgaXNSb3RhdGVkQXNwZWN0UmF0aW9Gb3JSZWFkRkJPKCkg
Y29uc3Q7CiAKICAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KICAgICBhbmdsZTo6
UmVzdWx0IHN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKQEAgLTM0MCw5ICs0
MjYsNiBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyB2azo6
Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAgIC8vIFByb2dyYW0gUGlwZWxpbmUg
b2JqZWN0IGNyZWF0aW9uCiAgICAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqY3JlYXRlUHJvZ3JhbVBp
cGVsaW5lKGNvbnN0IGdsOjpQcm9ncmFtUGlwZWxpbmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CiAK
LSAgICAvLyBQYXRoIG9iamVjdCBjcmVhdGlvbgotICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+
IGNyZWF0ZVBhdGhzKEdMc2l6ZWkpIG92ZXJyaWRlOwotCiAgICAgLy8gTWVtb3J5IG9iamVjdCBj
cmVhdGlvbi4KICAgICBNZW1vcnlPYmplY3RJbXBsICpjcmVhdGVNZW1vcnlPYmplY3QoKSBvdmVy
cmlkZTsKIApAQCAtMzY1LDcgKzQ0OCw2IEBAIGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250
ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAg
ZWdsOjpDb250ZXh0UHJpb3JpdHkgZ2V0UHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtQ29udGV4
dFByaW9yaXR5OyB9CiAKICAgICBBTkdMRV9JTkxJTkUgY29uc3QgYW5nbGU6OkZlYXR1cmVzVmsg
JmdldEZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbVJlbmRlcmVyLT5nZXRGZWF0dXJlcygpOyB9
Ci0gICAgQU5HTEVfSU5MSU5FIGJvb2wgY29tbWFuZEdyYXBoRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIGdldEZlYXR1cmVzKCkuY29tbWFuZEdyYXBoLmVuYWJsZWQ7IH0KIAogICAgIEFOR0xFX0lO
TElORSB2b2lkIGludmFsaWRhdGVWZXJ0ZXhBbmRJbmRleEJ1ZmZlcnMoKQogICAgIHsKQEAgLTQ3
Nyw5ICs1NTksNiBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1Ymxp
YyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAgIGFuZ2xlOjpSZXN1bHQg
Z2V0TmV4dFN1Ym1pdEZlbmNlKHZrOjpTaGFyZWQ8dms6OkZlbmNlPiAqc2hhcmVkRmVuY2VPdXQp
OwogICAgIHZrOjpTaGFyZWQ8dms6OkZlbmNlPiBnZXRMYXN0U3VibWl0dGVkRmVuY2UoKSBjb25z
dDsKIAotICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gUmVzb3VyY2VWay4K
LSAgICB2azo6Q29tbWFuZEdyYXBoICpnZXRDb21tYW5kR3JhcGgoKSB7IHJldHVybiAmbUNvbW1h
bmRHcmFwaDsgfQotCiAgICAgdms6OlNoYWRlckxpYnJhcnkgJmdldFNoYWRlckxpYnJhcnkoKSB7
IHJldHVybiBtU2hhZGVyTGlicmFyeTsgfQogICAgIFV0aWxzVmsgJmdldFV0aWxzKCkgeyByZXR1
cm4gbVV0aWxzOyB9CiAKQEAgLTQ5MCw3ICs1NjksNyBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJs
aWMgQ29udGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNz
TwogICAgIC8vIGFyZSBUUkFDRV9FVkVOVF9QSEFTRV8qCiAgICAgQU5HTEVfSU5MSU5FIGFuZ2xl
OjpSZXN1bHQgdHJhY2VHcHVFdmVudCh2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKmNvbW1hbmRC
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
IHBoYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEV2ZW50TmFtZSAmbmFtZSkKICAgICB7CiAgICAgICAgIGlmIChtR3B1RXZlbnRz
RW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybiB0cmFjZUdwdUV2ZW50SW1wbChjb21tYW5kQnVm
ZmVyLCBwaGFzZSwgbmFtZSk7CkBAIC01MDgsOCArNTg3LDkgQEAgY2xhc3MgQ29udGV4dFZrIDog
cHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVy
UGFzc08KICAgICAvLyBhdm9pZCBjYWxsaW5nIHZrQWxsb2NhdGVEZXNjdGlwb3JTZXRzIGVhY2gg
dGV4dHVyZSB1cGRhdGUuCiAgICAgU2VyaWFsIGdlbmVyYXRlVGV4dHVyZVNlcmlhbCgpIHsgcmV0
dXJuIG1UZXh0dXJlU2VyaWFsRmFjdG9yeS5nZW5lcmF0ZSgpOyB9CiAgICAgY29uc3Qgdms6OlRl
eHR1cmVEZXNjcmlwdG9yRGVzYyAmZ2V0QWN0aXZlVGV4dHVyZXNEZXNjKCkgY29uc3QgeyByZXR1
cm4gbUFjdGl2ZVRleHR1cmVzRGVzYzsgfQorICAgIFNlcmlhbCBnZW5lcmF0ZUF0dGFjaG1lbnRJ
bWFnZVNlcmlhbCgpIHsgcmV0dXJuIG1BdHRhY2htZW50SW1hZ2VTZXJpYWxGYWN0b3J5LmdlbmVy
YXRlKCk7IH0KIAotICAgIHZvaWQgdXBkYXRlU2Npc3Nvcihjb25zdCBnbDo6U3RhdGUgJmdsU3Rh
dGUpOworICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlU2Npc3Nvcihjb25zdCBnbDo6U3RhdGUgJmds
U3RhdGUpOwogCiAgICAgYm9vbCBlbXVsYXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZygpIGNvbnN0
IHsgcmV0dXJuIG1FbXVsYXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZzsgfQogCkBAIC01MTksMzUg
KzU5OSw2OSBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyB2
azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogCiAgICAgdms6OlJlc291cmNlVXNl
TGlzdCAmZ2V0UmVzb3VyY2VVc2VMaXN0KCkgeyByZXR1cm4gbVJlc291cmNlVXNlTGlzdDsgfQog
Ci0gICAgdm9pZCBvbkJ1ZmZlclJlYWQoVmtBY2Nlc3NGbGFncyByZWFkQWNjZXNzVHlwZSwgdms6
OkJ1ZmZlckhlbHBlciAqYnVmZmVyKTsKLSAgICB2b2lkIG9uQnVmZmVyV3JpdGUoVmtBY2Nlc3NG
bGFncyB3cml0ZUFjY2Vzc1R5cGUsIHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcik7Ci0gICAgYW5n
bGU6OlJlc3VsdCBnZXRPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIodms6OkNvbW1hbmRC
dWZmZXIgKipjb21tYW5kQnVmZmVyT3V0KQorICAgIGFuZ2xlOjpSZXN1bHQgb25CdWZmZXJSZWFk
KFZrQWNjZXNzRmxhZ3MgcmVhZEFjY2Vzc1R5cGUsIHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcik7
CisgICAgYW5nbGU6OlJlc3VsdCBvbkJ1ZmZlcldyaXRlKFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nl
c3NUeXBlLCB2azo6QnVmZmVySGVscGVyICpidWZmZXIpOworCisgICAgYW5nbGU6OlJlc3VsdCBv
bkltYWdlUmVhZChWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0RmxhZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgKmltYWdlKTsKKworICAgIGFuZ2xl
OjpSZXN1bHQgb25JbWFnZVdyaXRlKFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RGbGFncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlSGVscGVyICppbWFnZSk7
CisKKyAgICB2b2lkIG9uUmVuZGVyUGFzc0ltYWdlV3JpdGUoVmtJbWFnZUFzcGVjdEZsYWdzIGFz
cGVjdEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlv
dXQgaW1hZ2VMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFn
ZUhlbHBlciAqaW1hZ2UpOworCisgICAgYW5nbGU6OlJlc3VsdCBlbmRSZW5kZXJQYXNzQW5kR2V0
Q29tbWFuZEJ1ZmZlcih2azo6Q29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpCiAgICAg
ewotICAgICAgICBpZiAoIW1SZW5kZXJQYXNzQ29tbWFuZHMuZW1wdHkoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJQYXNzQ29tbWFuZHMuZmx1c2hUb1ByaW1hcnko
dGhpcywgJm1QcmltYXJ5Q29tbWFuZHMpKTsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlko
ZW5kUmVuZGVyUGFzcygpKTsKICAgICAgICAgKmNvbW1hbmRCdWZmZXJPdXQgPSAmbU91dHNpZGVS
ZW5kZXJQYXNzQ29tbWFuZHMuZ2V0Q29tbWFuZEJ1ZmZlcigpOwogICAgICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQogCi0gICAgdm9pZCBiZWdpblJlbmRlclBhc3Mo
Y29uc3Qgdms6OkZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZrOjpSZW5kZXJQYXNzRGVzYyAmcmVuZGVyUGFzc0Rlc2MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OkF0dGFjaG1lbnRPcHNBcnJheSAmcmVuZGVyUGFz
c0F0dGFjaG1lbnRPcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8VmtDbGVhclZhbHVlPiAmY2xlYXJWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
dms6OkNvbW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVyT3V0KTsKKyAgICBhbmdsZTo6UmVzdWx0
IGZsdXNoQW5kQmVnaW5SZW5kZXJQYXNzKGNvbnN0IHZrOjpGcmFtZWJ1ZmZlciAmZnJhbWVidWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdms6OlJlbmRlclBhc3NEZXNjICZyZW5kZXJQYXNzRGVzYywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpBdHRhY2htZW50
T3BzQXJyYXkgJnJlbmRlclBhc3NBdHRhY2htZW50T3BzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmtDbGVhclZhbHVlPiAmY2xl
YXJWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6
Q29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpOworCisgICAgYm9vbCBoYXNTdGFydGVk
UmVuZGVyUGFzcygpIGNvbnN0IHsgcmV0dXJuICFtUmVuZGVyUGFzc0NvbW1hbmRzLmVtcHR5KCk7
IH0KIAotICAgIFJlbmRlclBhc3NDb21tYW5kQnVmZmVyICZnZXRSZW5kZXJQYXNzQ29tbWFuZEJ1
ZmZlcigpCisgICAgUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIgJmdldFN0YXJ0ZWRSZW5kZXJQYXNz
Q29tbWFuZHMoKQogICAgIHsKLSAgICAgICAgaWYgKCFtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5k
cy5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21t
YW5kcy5mbHVzaFRvUHJpbWFyeSgmbVByaW1hcnlDb21tYW5kcyk7Ci0gICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKGhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpOwogICAgICAgICByZXR1cm4gbVJlbmRl
clBhc3NDb21tYW5kczsKICAgICB9CiAKKyAgICBhbmdsZTo6UmVzdWx0IGZsdXNoQW5kR2V0UHJp
bWFyeUNvbW1hbmRCdWZmZXIodms6OlByaW1hcnlDb21tYW5kQnVmZmVyICoqcHJpbWFyeUNvbW1h
bmRzKQorICAgIHsKKyAgICAgICAgZmx1c2hPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzKCk7Cisg
ICAgICAgIEFOR0xFX1RSWShlbmRSZW5kZXJQYXNzKCkpOworICAgICAgICAqcHJpbWFyeUNvbW1h
bmRzID0gJm1QcmltYXJ5Q29tbWFuZHM7CisKKyAgICAgICAgLy8gV2UgYXNzdW1lIGFueSBjYWxs
aW5nIGNvZGUgaXMgZ29pbmcgdG8gcmVjb3JkIHByaW1hcnkgY29tbWFuZHMuCisgICAgICAgIG1I
YXNQcmltYXJ5Q29tbWFuZHMgPSB0cnVlOworICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
Q29udGludWU7CisgICAgfQorCiAgICAgZWdsOjpDb250ZXh0UHJpb3JpdHkgZ2V0Q29udGV4dFBy
aW9yaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbUNvbnRleHRQcmlvcml0eTsgfQorICAg
IGFuZ2xlOjpSZXN1bHQgZW5kUmVuZGVyUGFzcygpOworCisgICAgYW5nbGU6OlJlc3VsdCBzeW5j
RXh0ZXJuYWxNZW1vcnkoKTsKKworICAgIHZvaWQgYWRkQ29tbWFuZEJ1ZmZlckRpYWdub3N0aWNz
KGNvbnN0IHN0ZDo6c3RyaW5nICZjb21tYW5kQnVmZmVyRGlhZ25vc3RpY3MpOworCisgICAgVmtJ
bmRleFR5cGUgZ2V0VmtJbmRleFR5cGUoZ2w6OkRyYXdFbGVtZW50c1R5cGUgZ2xJbmRleFR5cGUp
IGNvbnN0OworICAgIHNpemVfdCBnZXRWa0luZGV4VHlwZVNpemUoZ2w6OkRyYXdFbGVtZW50c1R5
cGUgZ2xJbmRleFR5cGUpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ29udmVydFVpbnQ4VmtJbmRl
eFR5cGUoZ2w6OkRyYXdFbGVtZW50c1R5cGUgZ2xJbmRleFR5cGUpIGNvbnN0OworCisgICAgY29u
c3QgUHJvZ3JhbUV4ZWN1dGFibGVWayAqZ2V0RXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1F
eGVjdXRhYmxlOyB9CisgICAgUHJvZ3JhbUV4ZWN1dGFibGVWayAqZ2V0RXhlY3V0YWJsZSgpIHsg
cmV0dXJuIG1FeGVjdXRhYmxlOyB9CisKKyAgICBQcm9ncmFtVmsgKmdldFNoYWRlclByb2dyYW0o
Y29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlLCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25z
dDsKIAogICBwcml2YXRlOgogICAgIC8vIERpcnR5IGJpdHMuCkBAIC02MDgsMTMgKzcyMiw5IEBA
IGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0
LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAgLy8gICBzdWJtaXR0ZWQsIHRoZSBxdWVyeSBp
cyBub3QgY2hlY2tlZCB0byBhdm9pZCBpbmN1cmluZyBhIGZsdXNoLgogICAgIHN0cnVjdCBHcHVF
dmVudFF1ZXJ5IGZpbmFsCiAgICAgewotICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAg
ICBFdmVudE5hbWUgbmFtZTsKICAgICAgICAgY2hhciBwaGFzZTsKLQotICAgICAgICB1aW50MzJf
dCBxdWVyeUluZGV4OwotICAgICAgICBzaXplX3QgcXVlcnlQb29sSW5kZXg7Ci0KLSAgICAgICAg
U2VyaWFsIHNlcmlhbDsKKyAgICAgICAgdms6OlF1ZXJ5SGVscGVyIHF1ZXJ5SGVscGVyOwogICAg
IH07CiAKICAgICAvLyBPbmNlIGEgcXVlcnkgcmVzdWx0IGlzIGF2YWlsYWJsZSwgdGhlIHRpbWVz
dGFtcCBpcyByZWFkIGFuZCBhIEdwdUV2ZW50IG9iamVjdCBpcyBrZXB0IHVudGlsCkBAIC02MjMs
NyArNzMzLDcgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMg
dms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc08KICAgICBzdHJ1Y3QgR3B1RXZlbnQg
ZmluYWwKICAgICB7CiAgICAgICAgIHVpbnQ2NF90IGdwdVRpbWVzdGFtcEN5Y2xlczsKLSAgICAg
ICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICAgICAgc3RkOjphcnJheTxjaGFyLCBrTWF4R3B1RXZl
bnROYW1lTGVuPiBuYW1lOwogICAgICAgICBjaGFyIHBoYXNlOwogICAgIH07CiAKQEAgLTY5Niwx
MCArODA2LDEyIEBAIGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGlj
IHZrOjpDb250ZXh0LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAgdm9pZCB1cGRhdGVEZXB0
aFJhbmdlKGZsb2F0IG5lYXJQbGFuZSwgZmxvYXQgZmFyUGxhbmUpOwogICAgIHZvaWQgdXBkYXRl
RmxpcFZpZXdwb3J0RHJhd0ZyYW1lYnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSk7CiAg
ICAgdm9pZCB1cGRhdGVGbGlwVmlld3BvcnRSZWFkRnJhbWVidWZmZXIoY29uc3QgZ2w6OlN0YXRl
ICZnbFN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZVN1cmZhY2VSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpOworICAgIHZvaWQgdXBkYXRlU3VyZmFjZVJvdGF0
aW9uUmVhZEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSk7CiAKICAgICBhbmds
ZTo6UmVzdWx0IHVwZGF0ZUFjdGl2ZVRleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
KTsKICAgICBhbmdsZTo6UmVzdWx0IHVwZGF0ZUFjdGl2ZUltYWdlcyhjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29t
bWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVySGVscGVyKTsKICAg
ICBhbmdsZTo6UmVzdWx0IHVwZGF0ZURlZmF1bHRBdHRyaWJ1dGUoc2l6ZV90IGF0dHJpYkluZGV4
KTsKIAogICAgIEFOR0xFX0lOTElORSB2b2lkIGludmFsaWRhdGVDdXJyZW50R3JhcGhpY3NQaXBl
bGluZSgpCkBAIC03NTksMTAgKzg3MSwxMCBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29u
dGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAg
IC8vIENvbW1vbiBwYXJ0cyBvZiB0aGUgY29tbW9uIGRpcnR5IGJpdCBoYW5kbGVycy4KICAgICBh
bmdsZTo6UmVzdWx0IGhhbmRsZURpcnR5VGV4dHVyZXNJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNv
bW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJIZWxwZXIg
KmNvbW1hbmRCdWZmZXJIZWxwZXIpOwogICAgIGFuZ2xlOjpSZXN1bHQgaGFuZGxlRGlydHlTaGFk
ZXJSZXNvdXJjZXNJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpj
b21tYW5kQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJIZWxwZXIg
KmNvbW1hbmRCdWZmZXJIZWxwZXIpOwogICAgIHZvaWQgaGFuZGxlRGlydHlEcml2ZXJVbmlmb3Jt
c0JpbmRpbmdJbXBsKHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUGlwZWxpbmVCaW5kUG9pbnQg
YmluZFBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IERyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldCAmZHJpdmVyVW5pZm9ybXMpOwpAQCAt
NzgyLDEzICs4OTQsMTIgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBw
dWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc08KIAogICAgIGFuZ2xlOjpS
ZXN1bHQgc3VibWl0RnJhbWUoY29uc3QgVmtTdWJtaXRJbmZvICZzdWJtaXRJbmZvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICYmY29tbWFu
ZEJ1ZmZlcik7Ci0gICAgYW5nbGU6OlJlc3VsdCBmbHVzaENvbW1hbmRHcmFwaCh2azo6UHJpbWFy
eUNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCYXRjaCk7Ci0gICAgdm9pZCBtZW1vcnlCYXJyaWVySW1w
bChHTGJpdGZpZWxkIGJhcnJpZXJzLCBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzdGFnZU1hc2spOwor
ICAgIGFuZ2xlOjpSZXN1bHQgbWVtb3J5QmFycmllckltcGwoR0xiaXRmaWVsZCBiYXJyaWVycywg
VmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3RhZ2VNYXNrKTsKIAogICAgIGFuZ2xlOjpSZXN1bHQgc3lu
Y2hyb25pemVDcHVHcHVUaW1lKCk7CiAgICAgYW5nbGU6OlJlc3VsdCB0cmFjZUdwdUV2ZW50SW1w
bCh2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBFdmVudE5hbWUgJm5hbWUpOwogICAgIGFuZ2xlOjpSZXN1bHQg
Y2hlY2tDb21wbGV0ZWRHcHVFdmVudHMoKTsKICAgICB2b2lkIGZsdXNoR3B1RXZlbnRzKGRvdWJs
ZSBuZXh0U3luY0dwdVRpbWVzdGFtcFMsIGRvdWJsZSBuZXh0U3luY0NwdVRpbWVzdGFtcFMpOwog
ICAgIHZvaWQgaGFuZGxlRGV2aWNlTG9zdCgpOwpAQCAtNzk5LDE1ICs5MTAsMjcgQEAgY2xhc3Mg
Q29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1Ymxp
YyB2azo6UmVuZGVyUGFzc08KICAgICBhbmdsZTo6UmVzdWx0IGVuc3VyZVN1Ym1pdEZlbmNlSW5p
dGlhbGl6ZWQoKTsKICAgICBhbmdsZTo6UmVzdWx0IHN0YXJ0UHJpbWFyeUNvbW1hbmRCdWZmZXIo
KTsKICAgICBib29sIGhhc1JlY29yZGVkQ29tbWFuZHMoKTsKKyAgICB2b2lkIGR1bXBDb21tYW5k
U3RyZWFtRGlhZ25vc3RpY3MoKTsKKyAgICB2b2lkIGZsdXNoT3V0c2lkZVJlbmRlclBhc3NDb21t
YW5kcygpOworCisgICAgQU5HTEVfSU5MSU5FIHZvaWQgb25SZW5kZXJQYXNzRmluaXNoZWQoKSB7
IG1SZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7IH0KKworICAgIHZvaWQgaW5pdElu
ZGV4VHlwZU1hcCgpOwogCiAgICAgc3RkOjphcnJheTxEaXJ0eUJpdEhhbmRsZXIsIERJUlRZX0JJ
VF9NQVg+IG1HcmFwaGljc0RpcnR5Qml0SGFuZGxlcnM7CiAgICAgc3RkOjphcnJheTxEaXJ0eUJp
dEhhbmRsZXIsIERJUlRZX0JJVF9NQVg+IG1Db21wdXRlRGlydHlCaXRIYW5kbGVyczsKIAorICAg
IHZrOjpDb21tYW5kQnVmZmVyICptUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI7CisKICAgICB2azo6
UGlwZWxpbmVIZWxwZXIgKm1DdXJyZW50R3JhcGhpY3NQaXBlbGluZTsKICAgICB2azo6UGlwZWxp
bmVBbmRTZXJpYWwgKm1DdXJyZW50Q29tcHV0ZVBpcGVsaW5lOwogICAgIGdsOjpQcmltaXRpdmVN
b2RlIG1DdXJyZW50RHJhd01vZGU7CiAKICAgICBXaW5kb3dTdXJmYWNlVmsgKm1DdXJyZW50V2lu
ZG93U3VyZmFjZTsKKyAgICAvLyBSZWNvcmRzIHRoZSBjdXJyZW50IHJvdGF0aW9uIG9mIHRoZSBz
dXJmYWNlIChkcmF3L3JlYWQpIGZyYW1lYnVmZmVyLCBkZXJpdmVkIGZyb20KKyAgICAvLyBtQ3Vy
cmVudFdpbmRvd1N1cmZhY2UtPmdldFByZVRyYW5zZm9ybSgpLgorICAgIFN1cmZhY2VSb3RhdGlv
blR5cGUgbUN1cnJlbnRSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlcjsKKyAgICBTdXJmYWNlUm90YXRp
b25UeXBlIG1DdXJyZW50Um90YXRpb25SZWFkRnJhbWVidWZmZXI7CiAKICAgICAvLyBLZWVwIGEg
Y2FjaGVkIHBpcGVsaW5lIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSB0aGF0IGNhbiBiZSB1c2VkIHRv
IHF1ZXJ5IHRoZSBwaXBlbGluZSBjYWNoZS4KICAgICAvLyBLZXB0IGluIGEgcG9pbnRlciBzbyBh
bGxvY2F0aW9ucyBjYW4gYmUgYWxpZ25lZCwgYW5kIHN0cnVjdHMgY2FuIGJlIHBvcnRhYmx5IHBh
Y2tlZC4KQEAgLTgzMyw2ICs5NTYsNyBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4
dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAgIFZl
cnRleEFycmF5VmsgKm1WZXJ0ZXhBcnJheTsKICAgICBGcmFtZWJ1ZmZlclZrICptRHJhd0ZyYW1l
YnVmZmVyOwogICAgIFByb2dyYW1WayAqbVByb2dyYW07CisgICAgUHJvZ3JhbUV4ZWN1dGFibGVW
ayAqbUV4ZWN1dGFibGU7CiAKICAgICAvLyBHcmFwaCByZXNvdXJjZSB1c2VkIHRvIHJlY29yZCBk
aXNwYXRjaCBjb21tYW5kcyBhbmQgaG9sZCByZXNvdXJjZSBkZXBlbmRlbmNpZXMuCiAgICAgdms6
OkRpc3BhdGNoSGVscGVyIG1EaXNwYXRjaGVyOwpAQCAtODQwLDYgKzk2NCw3IEBAIGNsYXNzIENv
bnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMg
dms6OlJlbmRlclBhc3NPCiAgICAgLy8gVGhlIG9mZnNldCB3ZSBoYWQgdGhlIGxhc3QgdGltZSB3
ZSBib3VuZCB0aGUgaW5kZXggYnVmZmVyLgogICAgIGNvbnN0IEdMdm9pZCAqbUxhc3RJbmRleEJ1
ZmZlck9mZnNldDsKICAgICBnbDo6RHJhd0VsZW1lbnRzVHlwZSBtQ3VycmVudERyYXdFbGVtZW50
c1R5cGU7CisgICAgYW5nbGU6OlBhY2tlZEVudW1NYXA8Z2w6OkRyYXdFbGVtZW50c1R5cGUsIFZr
SW5kZXhUeXBlPiBtSW5kZXhUeXBlTWFwOwogCiAgICAgLy8gQ2FjaGUgdGhlIGN1cnJlbnQgZHJh
dyBjYWxsJ3MgZmlyc3RWZXJ0ZXggdG8gYmUgcGFzc2VkIHRvCiAgICAgLy8gVHJhbnNmb3JtRmVl
ZGJhY2tWazo6Z2V0QnVmZmVyT2Zmc2V0cy4gIFVuZm9ydHVuYXRlbHksIGdsX0Jhc2VWZXJ0ZXgg
c3VwcG9ydCBpbiBWdWxrYW4gaXMKQEAgLTkwNSwxNCArMTAzMCwxMiBAQCBjbGFzcyBDb250ZXh0
VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpS
ZW5kZXJQYXNzTwogICAgIC8vIFBvb2wgYWxsb2NhdG9yIHVzZWQgZm9yIGNvbW1hbmQgZ3JhcGgg
YnV0IG1heSBiZSBleHBhbmRlZCB0byBvdGhlciBhbGxvY2F0aW9ucwogICAgIGFuZ2xlOjpQb29s
QWxsb2NhdG9yIG1Qb29sQWxsb2NhdG9yOwogCi0gICAgLy8gU2VlIENvbW1hbmRHcmFwaC5oIGZv
ciBhIGRlc3JpcHRpb24gb2YgdGhlIENvbW1hbmQgR3JhcGguCi0gICAgdms6OkNvbW1hbmRHcmFw
aCBtQ29tbWFuZEdyYXBoOwotCiAgICAgLy8gV2hlbiB0aGUgY29tbWFuZCBncmFwaCBpcyBkaXNh
YmxlZCB3ZSByZWNvcmQgY29tbWFuZHMgY29tcGxldGVseSBsaW5lYXJseS4gV2UgaGF2ZSBwbGFu
cyB0bwogICAgIC8vIHJlb3JkZXIgaW5kZXBlbmRlbnQgZHJhd3Mgc28gdGhhdCB3ZSBjYW4gY3Jl
YXRlIGZld2VyIFJlbmRlclBhc3NlcyBpbiBzb21lIHNjZW5hcmlvcy4KICAgICBPdXRzaWRlUmVu
ZGVyUGFzc0NvbW1hbmRCdWZmZXIgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHM7CiAgICAgUmVu
ZGVyUGFzc0NvbW1hbmRCdWZmZXIgbVJlbmRlclBhc3NDb21tYW5kczsKICAgICB2azo6UHJpbWFy
eUNvbW1hbmRCdWZmZXIgbVByaW1hcnlDb21tYW5kczsKKyAgICBib29sIG1IYXNQcmltYXJ5Q29t
bWFuZHM7CiAKICAgICAvLyBJbnRlcm5hbCBzaGFkZXIgbGlicmFyeS4KICAgICB2azo6U2hhZGVy
TGlicmFyeSBtU2hhZGVyTGlicmFyeTsKQEAgLTkzOCw4ICsxMDYxLDEzIEBAIGNsYXNzIENvbnRl
eHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMgdms6
OlJlbmRlclBhc3NPCiAgICAgLy8gZG91YmxlLgogICAgIHVpbnQ2NF90IG1HcHVFdmVudFRpbWVz
dGFtcE9yaWdpbjsKIAotICAgIC8vIEdlbmVyYXRvciBmb3IgdGV4dXJlIHNlcmlhbHMuCisgICAg
Ly8gVXNlZCB0byBjb3VudCBldmVudHMgZm9yIHRyYWNpbmcuCisgICAgdWludDMyX3QgbVByaW1h
cnlCdWZmZXJDb3VudGVyOworICAgIHVpbnQzMl90IG1SZW5kZXJQYXNzQ291bnRlcjsKKworICAg
IC8vIEdlbmVyYXRvcnMgZm9yIHRleHR1cmUgJiBmcmFtZWJ1ZmZlciBzZXJpYWxzLgogICAgIFNl
cmlhbEZhY3RvcnkgbVRleHR1cmVTZXJpYWxGYWN0b3J5OworICAgIFNlcmlhbEZhY3RvcnkgbUF0
dGFjaG1lbnRJbWFnZVNlcmlhbEZhY3Rvcnk7CiAKICAgICBnbDo6U3RhdGU6OkRpcnR5Qml0cyBt
UGlwZWxpbmVEaXJ0eUJpdHNNYXNrOwogCkBAIC05NDcsNiArMTA3NSw4IEBAIGNsYXNzIENvbnRl
eHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMgdms6
OlJlbmRlclBhc3NPCiAgICAgdms6OlJlc291cmNlVXNlTGlzdCBtUmVzb3VyY2VVc2VMaXN0Owog
CiAgICAgZWdsOjpDb250ZXh0UHJpb3JpdHkgbUNvbnRleHRQcmlvcml0eTsKKworICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBtQ29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzOwogfTsKIH0gIC8v
IG5hbWVzcGFjZSByeAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAKaW5kZXgg
YjdjN2Y1MmIwMmI1YjM0NDk3MmNkMzBiYWU4YzcwZGZkYTU5NDE0YS4uMjk0YWE3Mjg3OTQ5YTk4
ZWJlMjg1NmU2ZGZjNDhiYjlhODFiODVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxh
eVZrLmNwcApAQCAtOTIsOCArOTIsMTMgQEAgZWdsOjpFcnJvciBEaXNwbGF5Vms6OndhaXRDbGll
bnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAKIGVnbDo6RXJyb3IgRGlzcGxheVZrOjp3
YWl0TmF0aXZlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgZW5naW5lKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFZ2xCYWRBY2Nlc3MoKTsKKyAg
ICBBTkdMRV9UUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJEaXNwbGF5Vms6OndhaXROYXRpdmUi
KTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdFRvRUdMKHdhaXROYXRpdmVJbXBsKCkpOworfQor
CithbmdsZTo6UmVzdWx0IERpc3BsYXlWazo6d2FpdE5hdGl2ZUltcGwoKQoreworICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlWazo6
Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCkBAIC0x
NjksNyArMTc0LDcgQEAgZ2w6OlZlcnNpb24gRGlzcGxheVZrOjpnZXRNYXhDb25mb3JtYW50RVNW
ZXJzaW9uKCkgY29uc3QKIAogdm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6
OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAogewotICAgIG91dEV4dGVu
c2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzICAgICAgPSB0cnVlOworICAgIG91dEV4dGVu
c2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzICAgICAgPSBnZXRSZW5kZXJlcigpLT5nZXRO
YXRpdmVFeHRlbnNpb25zKCkucm9idXN0bmVzczsKICAgICBvdXRFeHRlbnNpb25zLT5zdXJmYWNl
T3JpZW50YXRpb24gICAgICAgICAgID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5kaXNwbGF5
VGV4dHVyZVNoYXJlR3JvdXAgICAgID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5yb2J1c3RS
ZXNvdXJjZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKQEAgLTE5OCw3ICsyMDMsOCBAQCB2b2lkIERp
c3BsYXlWazo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4
dGVuc2lvbnMpIGNvbnN0CiAgICAgb3V0RXh0ZW5zaW9ucy0+ZnJhbWVidWZmZXJUYXJnZXRBTkRS
T0lEID0gdHJ1ZTsKICNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQog
Ci0gICAgb3V0RXh0ZW5zaW9ucy0+Y29udGV4dFByaW9yaXR5ID0gdHJ1ZTsKKyAgICAvLyBEaXNh
YmxlIGNvbnRleHQgcHJpb3JpdHkgd2hlbiBub24temVybyBtZW1vcnkgaW5pdCBpcyBlbmFibGVk
LiBUaGlzIGVuZm9yY2VzIGEgcXVldWUgb3JkZXIuCisgICAgb3V0RXh0ZW5zaW9ucy0+Y29udGV4
dFByaW9yaXR5ID0gIWdldFJlbmRlcmVyKCktPmdldEZlYXR1cmVzKCkuYWxsb2NhdGVOb25aZXJv
TWVtb3J5LmVuYWJsZWQ7CiAgICAgb3V0RXh0ZW5zaW9ucy0+bm9Db25maWdDb250ZXh0ID0gdHJ1
ZTsKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fR0dQKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5Vmsu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
RGlzcGxheVZrLmgKaW5kZXggZWY1ODYzODQ4ODZkYWY1ZjkwMzVhNWNmOTA3NmZiZDYzMmM5NDc2
Mi4uMzkyZWIxYTE2Y2U2NmJiZjZjZDNjZTMzNTU3YzE2OGFjM2ZkOTdmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNw
bGF5VmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0Rpc3BsYXlWay5oCkBAIC05NSwxMiArOTUsMTYgQEAgY2xhc3MgRGlzcGxheVZr
IDogcHVibGljIERpc3BsYXlJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQKIAogICAgIHZvaWQgcG9w
dWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVyZUxpc3QgKmZlYXR1cmVzKSBvdmVycmlkZTsK
IAorICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5
RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlVmsoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgPSAwOwotICAgIHZvaWQg
Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2Fw
cykgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgd2FpdE5hdGl2
ZUltcGwoKTsKKwogICAgIG11dGFibGUgYW5nbGU6OlNjcmF0Y2hCdWZmZXIgbVNjcmF0Y2hCdWZm
ZXI7CiAKICAgICBzdGQ6OnN0cmluZyBtU3RvcmVkRXJyb3JTdHJpbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1l
YnVmZmVyVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmNwcAppbmRleCBjNDRjOGM2NWU2YTMyNmE2NTAzZTRk
ZTQ3ZWU4MjY5ZTkzN2E2MTI2Li5kYzI5MmQzOTM3N2ZmNzg5N2Q3ZjRjODE4YjgyODcxYzcxNTQx
ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5jcHAKQEAgLTE3
LDExICsxNywxMSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRl
cmVyX3V0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRH
cmFwaC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9TdXJmYWNlVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vdmtfZm9ybWF0X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvdHJhY2UuaCIKQEAgLTMx
LDEwICszMSw2IEBAIG5hbWVzcGFjZSByeAogCiBuYW1lc3BhY2UKIHsKLS8vIFRoZSB2YWx1ZSB0
byBhc3NpZ24gYW4gYWxwaGEgY2hhbm5lbCB0aGF0J3MgZW11bGF0ZWQuICBUaGUgdHlwZSBpcyB1
bnNpZ25lZCBpbnQsIHRob3VnaCBpdCB3aWxsCi0vLyBhdXRvbWF0aWNhbGx5IGNvbnZlcnQgdG8g
dGhlIGFjdHVhbCBkYXRhIHR5cGUuCi1jb25zdGV4cHIgdW5zaWduZWQgaW50IGtFbXVsYXRlZEFs
cGhhVmFsdWUgPSAxOwotCiBjb25zdGV4cHIgc2l6ZV90IGtNaW5SZWFkUGl4ZWxzQnVmZmVyU2l6
ZSA9IDEyODAwMDsKIAogLy8gQWxpZ25tZW50IHZhbHVlIHRvIGFjY29tbW9kYXRlIHRoZSBsYXJn
ZXN0IGtub3duLCBmb3Igbm93LCB1bmNvbXByZXNzZWQgVnVsa2FuIGZvcm1hdApAQCAtNjksNyAr
NjUsNyBAQCBib29sIEhhc0RzdEJsaXRGZWF0dXJlKFJlbmRlcmVyVmsgKnJlbmRlcmVyLCBSZW5k
ZXJUYXJnZXRWayAqZHN0UmVuZGVyVGFyZ2V0KQogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIGRlc3Rp
bmF0aW9uIGhhcyBhbnkgY2hhbm5lbCB0aGUgc291cmNlIGRvZXNuJ3QuICBUaGlzIG1lYW5zIHRo
YXQgY2hhbm5lbCB3YXMKIC8vIGVtdWxhdGVkIGFuZCB1c2luZyB0aGUgVnVsa2FuIGJsaXQgY29t
bWFuZCB3b3VsZCBvdmVyd3JpdGUgdGhhdCBlbXVsYXRlZCBjaGFubmVsLgotYm9vbCBhcmVTcmNB
bmREc3RDb2xvckNoYW5uZWxzQmxpdENvbXBhdGlibGUoUmVuZGVyVGFyZ2V0VmsgKnNyY1JlbmRl
clRhcmdldCwKK2Jvb2wgQXJlU3JjQW5kRHN0Q29sb3JDaGFubmVsc0JsaXRDb21wYXRpYmxlKFJl
bmRlclRhcmdldFZrICpzcmNSZW5kZXJUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXRWayAqZHN0UmVuZGVyVGFyZ2V0KQogewog
ICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJnNyY0Zvcm1hdCA9IHNyY1JlbmRlclRhcmdldC0+Z2V0
SW1hZ2VGb3JtYXQoKS5pbnRlbmRlZEZvcm1hdCgpOwpAQCAtODcsNyArODMsNyBAQCBib29sIGFy
ZVNyY0FuZERzdENvbG9yQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZShSZW5kZXJUYXJnZXRWayAqc3Jj
UmVuZGVyVGFyZ2V0LAogICAgICAgICAgICAoZHN0Rm9ybWF0LmFscGhhQml0cyA+IDAgfHwgc3Jj
Rm9ybWF0LmFscGhhQml0cyA9PSAwKTsKIH0KIAotYm9vbCBhcmVTcmNBbmREc3REZXB0aFN0ZW5j
aWxDaGFubmVsc0JsaXRDb21wYXRpYmxlKFJlbmRlclRhcmdldFZrICpzcmNSZW5kZXJUYXJnZXQs
Citib29sIEFyZVNyY0FuZERzdERlcHRoU3RlbmNpbENoYW5uZWxzQmxpdENvbXBhdGlibGUoUmVu
ZGVyVGFyZ2V0VmsgKnNyY1JlbmRlclRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXRWayAqZHN0UmVuZGVyVGFyZ2V0
KQogewogICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJnNyY0Zvcm1hdCA9IHNyY1JlbmRlclRhcmdl
dC0+Z2V0SW1hZ2VGb3JtYXQoKS5pbnRlbmRlZEZvcm1hdCgpOwpAQCAtOTYsMjUgKzkyLDYgQEAg
Ym9vbCBhcmVTcmNBbmREc3REZXB0aFN0ZW5jaWxDaGFubmVsc0JsaXRDb21wYXRpYmxlKFJlbmRl
clRhcmdldFZrICpzcmNSZW5kZXJUYXIKICAgICByZXR1cm4gKGRzdEZvcm1hdC5kZXB0aEJpdHMg
PiAwIHx8IHNyY0Zvcm1hdC5kZXB0aEJpdHMgPT0gMCkgJiYKICAgICAgICAgICAgKGRzdEZvcm1h
dC5zdGVuY2lsQml0cyA+IDAgfHwgc3JjRm9ybWF0LnN0ZW5jaWxCaXRzID09IDApOwogfQotCi12
b2lkIFNldEVtdWxhdGVkQWxwaGFWYWx1ZShjb25zdCB2azo6Rm9ybWF0ICZmb3JtYXQsIFZrQ2xl
YXJDb2xvclZhbHVlICp2YWx1ZSkKLXsKLSAgICBpZiAoZm9ybWF0LnZrRm9ybWF0SXNJbnQpCi0g
ICAgewotICAgICAgICBpZiAoZm9ybWF0LnZrRm9ybWF0SXNVbnNpZ25lZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFsdWUtPnVpbnQzMlszXSA9IGtFbXVsYXRlZEFscGhhVmFsdWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB2YWx1ZS0+aW50MzJb
M10gPSBrRW11bGF0ZWRBbHBoYVZhbHVlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHZhbHVlLT5mbG9hdDMyWzNdID0ga0VtdWxhdGVkQWxwaGFWYWx1ZTsKLSAg
ICB9Ci19CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIC8vIHN0YXRpYwpAQCAtMTM0LDcg
KzExMSwxMiBAQCBGcmFtZWJ1ZmZlclZrICpGcmFtZWJ1ZmZlclZrOjpDcmVhdGVEZWZhdWx0RkJP
KFJlbmRlcmVyVmsgKnJlbmRlcmVyLAogRnJhbWVidWZmZXJWazo6RnJhbWVidWZmZXJWayhSZW5k
ZXJlclZrICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
aW5kb3dTdXJmYWNlVmsgKmJhY2tidWZmZXIpCi0gICAgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUp
LCBtQmFja2J1ZmZlcihiYWNrYnVmZmVyKSwgbUFjdGl2ZUNvbG9yQ29tcG9uZW50cygwKQorICAg
IDogRnJhbWVidWZmZXJJbXBsKHN0YXRlKSwKKyAgICAgIG1CYWNrYnVmZmVyKGJhY2tidWZmZXIp
LAorICAgICAgbUZyYW1lYnVmZmVyKG51bGxwdHIpLAorICAgICAgbUFjdGl2ZUNvbG9yQ29tcG9u
ZW50cygwKSwKKyAgICAgIG1TdXBwb3J0RGVwdGhTdGVuY2lsRmVlZGJhY2tMb29wcygKKyAgICAg
ICAgICByZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5zdXBwb3J0RGVwdGhTdGVuY2lsUmVuZGVyaW5n
RmVlZGJhY2tMb29wcy5lbmFibGVkKQogewogICAgIG1SZWFkUGl4ZWxCdWZmZXIuaW5pdChyZW5k
ZXJlciwgVktfQlVGRkVSX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQsIGtSZWFkUGl4ZWxzQnVmZmVy
QWxpZ25tZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICBrTWluUmVhZFBpeGVsc0J1ZmZl
clNpemUsIHRydWUpOwpAQCAtMTQyLDEyICsxMjQsMjIgQEAgRnJhbWVidWZmZXJWazo6RnJhbWVi
dWZmZXJWayhSZW5kZXJlclZrICpyZW5kZXJlciwKIAogRnJhbWVidWZmZXJWazo6fkZyYW1lYnVm
ZmVyVmsoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgRnJhbWVidWZmZXJWazo6Y2xlYXJDYWNoZShDb250
ZXh0VmsgKmNvbnRleHRWaykKK3sKKyAgICBmb3IgKGF1dG8gJmVudHJ5IDogbUZyYW1lYnVmZmVy
Q2FjaGUpCisgICAgeworICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgJnRtcEZCID0gZW50
cnkuc2Vjb25kOworICAgICAgICB0bXBGQi5yZWxlYXNlKGNvbnRleHRWayk7CisgICAgfQorICAg
IG1GcmFtZWJ1ZmZlckNhY2hlLmNsZWFyKCk7Cit9CisKIHZvaWQgRnJhbWVidWZmZXJWazo6ZGVz
dHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKICAgICBDb250ZXh0VmsgKmNvbnRl
eHRWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOwotICAgIG1GcmFtZWJ1ZmZlci5yZWxlYXNlKGNv
bnRleHRWayk7CiAKICAgICBtUmVhZFBpeGVsQnVmZmVyLnJlbGVhc2UoY29udGV4dFZrLT5nZXRS
ZW5kZXJlcigpKTsKKyAgICBjbGVhckNhY2hlKGNvbnRleHRWayk7CiB9CiAKIGFuZ2xlOjpSZXN1
bHQgRnJhbWVidWZmZXJWazo6ZGlzY2FyZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKQEAg
LTE2MSwxNCArMTUzLDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjppbnZhbGlkYXRl
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewotICAgIENvbnRleHRWayAq
Y29udGV4dFZrID0gdms6OkdldEltcGwoY29udGV4dCk7Ci0gICAgbUZyYW1lYnVmZmVyLm9uUmVz
b3VyY2VBY2Nlc3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwotCi0gICAgaWYg
KG1GcmFtZWJ1ZmZlci52YWxpZCgpICYmIG1GcmFtZWJ1ZmZlci5oYXNTdGFydGVkUmVuZGVyUGFz
cygpKQotICAgIHsKLSAgICAgICAgaW52YWxpZGF0ZUltcGwoY29udGV4dFZrLCBjb3VudCwgYXR0
YWNobWVudHMpOwotICAgIH0KLQorICAgIC8vIFRPRE8oam1hZGlsbCk6IFJlLWVuYWJsZS4gU2Vl
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ0NAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKIH0KIApAQCAtMTc3LDE3ICsxNjIsNyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVy
Vms6OmludmFsaWRhdGVTdWIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZhcmVhKQogewotICAgIENvbnRleHRWayAqY29udGV4dFZrID0gdms6OkdldElt
cGwoY29udGV4dCk7Ci0gICAgbUZyYW1lYnVmZmVyLm9uUmVzb3VyY2VBY2Nlc3MoJmNvbnRleHRW
ay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwotCi0gICAgLy8gUmVuZGVyUGFzcycgc3RvcmVPcCBj
YW5ub3QgYmUgbWFkZSBjb25kaXRpb25hbCB0byBhIHNwZWNpZmljIHJlZ2lvbiwgc28gd2Ugb25s
eSBhcHBseSB0aGlzCi0gICAgLy8gaGludCBpZiB0aGUgcmVxdWVzdGVkIGFyZWEgZW5jb21wYXNz
ZXMgdGhlIHJlbmRlciBhcmVhLgotICAgIGlmIChtRnJhbWVidWZmZXIudmFsaWQoKSAmJiBtRnJh
bWVidWZmZXIuaGFzU3RhcnRlZFJlbmRlclBhc3MoKSAmJgotICAgICAgICBhcmVhLmVuY2xvc2Vz
KG1GcmFtZWJ1ZmZlci5nZXRSZW5kZXJQYXNzUmVuZGVyQXJlYSgpKSkKLSAgICB7Ci0gICAgICAg
IGludmFsaWRhdGVJbXBsKGNvbnRleHRWaywgY291bnQsIGF0dGFjaG1lbnRzKTsKLSAgICB9Ci0K
KyAgICAvLyBUT0RPKGptYWRpbGwpOiBSZS1lbmFibGUuIFNlZSBodHRwOi8vYW5nbGVidWcuY29t
LzQ0NDQKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAgLTIyOSw4
ICsyMDQsNiBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmNsZWFySW1wbChjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwogICAgIH0KIAotICAgIG1GcmFtZWJ1ZmZlci51cGRhdGVDdXJyZW50QWNjZXNzTm9kZXMo
KTsKLQogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IG9ubHkgZW5hYmxlZCBhdHRh
Y2htZW50cyBhcmUgYXNrZWQgdG8gYmUgY2xlYXJlZC4KICAgICBBU1NFUlQoKGNsZWFyQ29sb3JC
dWZmZXJzICYgbVN0YXRlLmdldEVuYWJsZWREcmF3QnVmZmVycygpKSA9PSBjbGVhckNvbG9yQnVm
ZmVycyk7CiAKQEAgLTI1OCw2ICsyMzEsMzYgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZr
OjpjbGVhckltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgLy8gVGhlIGZyb250
LWVuZCBzaG91bGQgZW5zdXJlIHdlIGRvbid0IGF0dGVtcHQgdG8gY2xlYXIgc3RlbmNpbCBpZiBh
bGwgYml0cyBhcmUgbWFza2VkLgogICAgIEFTU0VSVCghY2xlYXJTdGVuY2lsIHx8IHN0ZW5jaWxN
YXNrICE9IDApOwogCisgICAgLy8gU3BlY2lhbCBjYXNlIGZvciByZW5kZXJpbmcgZmVlZGJhY2sg
bG9vcHM6IGNsZWFycyBhcmUgYWx3YXlzIHZhbGlkIGluIEdMIHNpbmNlIHRoZXkgZG9uJ3QKKyAg
ICAvLyBzYW1wbGUgZnJvbSBhbnkgdGV4dHVyZXMuCisgICAgaWYgKChjbGVhckRlcHRoIHx8IGNs
ZWFyU3RlbmNpbCkgJiYgbVN0YXRlLmhhc0RlcHRoU3RlbmNpbEZlZWRiYWNrTG9vcCgpKQorICAg
IHsKKyAgICAgICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhbmRsZSBzY2lzc29yZWQgY2xlYXJz
IHdpdGggcmVuZGVyaW5nIGZlZWRiYWNrIGxvb3BzLgorICAgICAgICBBTkdMRV9WS19DSEVDSyhj
b250ZXh0VmssIHNjaXNzb3JlZFJlbmRlckFyZWEgPT0gZ2V0Q29tcGxldGVSZW5kZXJBcmVhKCks
CisgICAgICAgICAgICAgICAgICAgICAgIFZLX0VSUk9SX0lOQ09NUEFUSUJMRV9EUklWRVIpOwor
CisgICAgICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSVCA9IG1SZW5kZXJUYXJnZXRD
YWNoZS5nZXREZXB0aFN0ZW5jaWwodHJ1ZSk7CisgICAgICAgIHZrOjpJbWFnZUhlbHBlciAmaW1h
Z2UgICAgICAgICA9IGRlcHRoU3RlbmNpbFJULT5nZXRJbWFnZSgpOworCisgICAgICAgIHZrOjpD
b21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOworICAgICAgICBBTkdMRV9UUlkoCisgICAgICAg
ICAgICBjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShpbWFnZS5nZXRBc3BlY3RGbGFncygpLCB2azo6
SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCAmaW1hZ2UpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNv
bnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIp
KTsKKworICAgICAgICBWa0ltYWdlU3VicmVzb3VyY2VSYW5nZSByYW5nZTsKKyAgICAgICAgcmFu
Z2UuYXNwZWN0TWFzayAgICAgPSBpbWFnZS5nZXRBc3BlY3RGbGFncygpOworICAgICAgICByYW5n
ZS5iYXNlTWlwTGV2ZWwgICA9IGRlcHRoU3RlbmNpbFJULT5nZXRMZXZlbEluZGV4KCk7CisgICAg
ICAgIHJhbmdlLmxldmVsQ291bnQgICAgID0gMTsKKyAgICAgICAgcmFuZ2UuYmFzZUFycmF5TGF5
ZXIgPSBkZXB0aFN0ZW5jaWxSVC0+Z2V0TGF5ZXJJbmRleCgpOworICAgICAgICByYW5nZS5sYXll
ckNvdW50ICAgICA9IDE7CisKKyAgICAgICAgY29tbWFuZEJ1ZmZlci0+Y2xlYXJEZXB0aFN0ZW5j
aWxJbWFnZShpbWFnZS5nZXRJbWFnZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckRlcHRoU3Rl
bmNpbFZhbHVlLCAxLCAmcmFuZ2UpOworICAgICAgICBjbGVhckRlcHRoICAgPSBmYWxzZTsKKyAg
ICAgICAgY2xlYXJTdGVuY2lsID0gZmFsc2U7CisgICAgfQorCiAgICAgLy8gSWYgdGhlcmUgaXMg
bm90aGluZyB0byBjbGVhciwgcmV0dXJuIHJpZ2h0IGF3YXkgKGZvciBleGFtcGxlLCBpZiBhc2tl
ZCB0byBjbGVhciBkZXB0aCwgYnV0CiAgICAgLy8gdGhlcmUgaXMgbm8gZGVwdGggYXR0YWNobWVu
dCkuCiAgICAgaWYgKCFjbGVhckNvbG9yICYmICFjbGVhckRlcHRoICYmICFjbGVhclN0ZW5jaWwp
CkBAIC0yOTIsOCArMjk1LDkgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpjbGVhcklt
cGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHsKICAgICAgICAgICAgIGNs
ZWFyQnVmZmVyc1dpdGhSZW5kZXJQYXNzTG9hZE9wID0gY2xlYXJDb2xvckJ1ZmZlcnM7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfVFJZKGNsZWFyV2l0aFJlbmRlclBhc3NPcCgKLSAgICAgICAg
ICAgIGNvbnRleHRWaywgc2Npc3NvcmVkUmVuZGVyQXJlYSwgY2xlYXJCdWZmZXJzV2l0aFJlbmRl
clBhc3NMb2FkT3AsIGNsZWFyRGVwdGgsCisKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+
Y2xlYXJXaXRoUmVuZGVyUGFzc09wKAorICAgICAgICAgICAgc2Npc3NvcmVkUmVuZGVyQXJlYSwg
Y2xlYXJCdWZmZXJzV2l0aFJlbmRlclBhc3NMb2FkT3AsIGNsZWFyRGVwdGgsCiAgICAgICAgICAg
ICBjbGVhclN0ZW5jaWxXaXRoUmVuZGVyUGFzc0xvYWRPcCwgY2xlYXJDb2xvclZhbHVlLCBtb2Rp
ZmllZERlcHRoU3RlbmNpbFZhbHVlKSk7CiAKICAgICAgICAgLy8gRmFsbGJhY2sgdG8gb3RoZXIg
bWV0aG9kcyBmb3Igd2hhdGV2ZXIgaXNuJ3QgY2xlYXJlZCBoZXJlLgpAQCAtNDc1LDcgKzQ3OSw5
IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6cmVhZFBpeGVscyhjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKIAogUmVuZGVyVGFyZ2V0VmsgKkZyYW1lYnVmZmVyVms6OmdldERlcHRo
U3RlbmNpbFJlbmRlclRhcmdldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRD
YWNoZS5nZXREZXB0aFN0ZW5jaWwoKTsKKyAgICAvLyBJZiB3ZSBtYXNrIG91dCBkZXB0aC9zdGVu
Y2lsIGZlZWRiYWNrIGxvb3BzLCBkbyBub3QgYWxsb3cgdGhlIHVzZXIgdG8gYWNjZXNzIHRoZSBs
b29wZWQgRFMKKyAgICAvLyByZW5kZXIgdGFyZ2V0LiBQYXNzaW5nICJmYWxzZSIgdG8gZ2V0RGVw
dGhTdGVuY2lsIGZvcmNlcyBhIHJldHVybiBvZiAibnVsbHB0ciIgZm9yIGxvb3BzLgorICAgIHJl
dHVybiBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCFtU3VwcG9ydERlcHRoU3Rl
bmNpbEZlZWRiYWNrTG9vcHMpOwogfQogCiBSZW5kZXJUYXJnZXRWayAqRnJhbWVidWZmZXJWazo6
Z2V0Q29sb3JEcmF3UmVuZGVyVGFyZ2V0KHNpemVfdCBjb2xvckluZGV4KSBjb25zdApAQCAtNTEw
LDcgKzUxNiw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6YmxpdFdpdGhDb21tYW5k
KENvbnRleHRWayAqY29udGV4dFZrLAogICAgIEFTU0VSVChjb2xvckJsaXQgIT0gKGRlcHRoQmxp
dCB8fCBzdGVuY2lsQmxpdCkpOwogCiAgICAgdms6OkltYWdlSGVscGVyICpzcmNJbWFnZSA9ICZy
ZWFkUmVuZGVyVGFyZ2V0LT5nZXRJbWFnZSgpOwotICAgIHZrOjpJbWFnZUhlbHBlciAqZHN0SW1h
Z2UgPSBkcmF3UmVuZGVyVGFyZ2V0LT5nZXRJbWFnZUZvcldyaXRlKGNvbnRleHRWaywgJm1GcmFt
ZWJ1ZmZlcik7CisgICAgdms6OkltYWdlSGVscGVyICpkc3RJbWFnZSA9IGRyYXdSZW5kZXJUYXJn
ZXQtPmdldEltYWdlRm9yV3JpdGUoY29udGV4dFZrKTsKIAogICAgIFZrSW1hZ2VBc3BlY3RGbGFn
cyBpbWFnZUFzcGVjdE1hc2sgPSBzcmNJbWFnZS0+Z2V0QXNwZWN0RmxhZ3MoKTsKICAgICBWa0lt
YWdlQXNwZWN0RmxhZ3MgYmxpdEFzcGVjdE1hc2sgID0gaW1hZ2VBc3BlY3RNYXNrOwpAQCAtNTI1
LDE3ICs1MzEsMTAgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpibGl0V2l0aENvbW1h
bmQoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIGJsaXRBc3BlY3RNYXNrICY9IH5WS19J
TUFHRV9BU1BFQ1RfU1RFTkNJTF9CSVQ7CiAgICAgfQogCi0gICAgaWYgKHNyY0ltYWdlLT5pc0xh
eW91dENoYW5nZU5lY2Vzc2FyeSh2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjKSkKLSAgICB7
Ci0gICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpzcmNMYXlvdXRDaGFuZ2U7Ci0gICAgICAgIEFO
R0xFX1RSWShzcmNJbWFnZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmc3JjTGF5b3V0Q2hh
bmdlKSk7Ci0gICAgICAgIHNyY0ltYWdlLT5jaGFuZ2VMYXlvdXQoaW1hZ2VBc3BlY3RNYXNrLCB2
azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjLCBzcmNMYXlvdXRDaGFuZ2UpOwotICAgIH0KLQog
ICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICBBTkdM
RV9UUlkobUZyYW1lYnVmZmVyLnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZm
ZXIpKTsKLQotICAgIHNyY0ltYWdlLT5hZGRSZWFkRGVwZW5kZW5jeShjb250ZXh0VmssICZtRnJh
bWVidWZmZXIpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VSZWFkKGltYWdlQXNw
ZWN0TWFzaywgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywgc3JjSW1hZ2UpKTsKKyAgICBB
TkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlV3JpdGUoaW1hZ2VBc3BlY3RNYXNrLCB2azo6SW1h
Z2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCBkc3RJbWFnZSkpOworICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAK
ICAgICBWa0ltYWdlQmxpdCBibGl0ICAgICAgICAgICAgICAgICAgID0ge307CiAgICAgYmxpdC5z
cmNTdWJyZXNvdXJjZS5hc3BlY3RNYXNrICAgICA9IGJsaXRBc3BlY3RNYXNrOwpAQCAtNTUxLDEw
ICs1NTAsNiBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmJsaXRXaXRoQ29tbWFuZChD
b250ZXh0VmsgKmNvbnRleHRWaywKICAgICBibGl0LmRzdE9mZnNldHNbMF0gICAgICAgICAgICAg
ICAgID0ge2Rlc3RBcmVhLngwKCksIGRlc3RBcmVhLnkwKCksIDB9OwogICAgIGJsaXQuZHN0T2Zm
c2V0c1sxXSAgICAgICAgICAgICAgICAgPSB7ZGVzdEFyZWEueDEoKSwgZGVzdEFyZWEueTEoKSwg
MX07CiAKLSAgICAvLyBSZXF1aXJlbWVudCBvZiB0aGUgY29weUltYWdlVG9CdWZmZXIsIHRoZSBk
c3QgaW1hZ2UgbXVzdCBiZSBpbgotICAgIC8vIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1Rf
T1BUSU1BTCBsYXlvdXQuCi0gICAgZHN0SW1hZ2UtPmNoYW5nZUxheW91dChpbWFnZUFzcGVjdE1h
c2ssIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3QsIGNvbW1hbmRCdWZmZXIpOwotCiAgICAg
Y29tbWFuZEJ1ZmZlci0+YmxpdEltYWdlKHNyY0ltYWdlLT5nZXRJbWFnZSgpLCBWS19JTUFHRV9M
QVlPVVRfVFJBTlNGRVJfU1JDX09QVElNQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRzdEltYWdlLT5nZXRJbWFnZSgpLCBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElN
QUwsIDEsICZibGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF92azo6R2V0Rmls
dGVyKGZpbHRlcikpOwpAQCAtNzQ0LDcgKzczOSw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZm
ZXJWazo6YmxpdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBj
YW5CbGl0V2l0aENvbW1hbmQgJiYgSGFzRHN0QmxpdEZlYXR1cmUocmVuZGVyZXIsIGRyYXdSZW5k
ZXJUYXJnZXQpOwogICAgICAgICAgICAgYXJlQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZSA9CiAgICAg
ICAgICAgICAgICAgYXJlQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZSAmJgotICAgICAgICAgICAgICAg
IGFyZVNyY0FuZERzdENvbG9yQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZShyZWFkUmVuZGVyVGFyZ2V0
LCBkcmF3UmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBBcmVTcmNBbmREc3RDb2xvckNo
YW5uZWxzQmxpdENvbXBhdGlibGUocmVhZFJlbmRlclRhcmdldCwgZHJhd1JlbmRlclRhcmdldCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY2FuQmxpdFdpdGhDb21tYW5kICYmIGFyZUNoYW5u
ZWxzQmxpdENvbXBhdGlibGUpCkBAIC03NjcsNyArNzYyLDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFt
ZWJ1ZmZlclZrOjpibGl0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICB7CiAg
ICAgICAgICAgICBjb25zdCB2azo6SW1hZ2VWaWV3ICpyZWFkSW1hZ2VWaWV3ID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIEFOR0xFX1RSWShyZWFkUmVuZGVyVGFyZ2V0LT5nZXRJbWFnZVZpZXcoY29u
dGV4dFZrLCAmcmVhZEltYWdlVmlldykpOwotICAgICAgICAgICAgcmVhZFJlbmRlclRhcmdldC0+
b25JbWFnZVZpZXdBY2Nlc3MoY29udGV4dFZrKTsKKyAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJn
ZXQtPnJldGFpbkltYWdlVmlld3MoY29udGV4dFZrKTsKICAgICAgICAgICAgIEFOR0xFX1RSWSh1
dGlsc1ZrLmNvbG9yQmxpdFJlc29sdmUoY29udGV4dFZrLCB0aGlzLCAmcmVhZFJlbmRlclRhcmdl
dC0+Z2V0SW1hZ2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVhZEltYWdlVmlldywgcGFyYW1zKSk7CiAgICAgICAgIH0KQEAgLTc3Niw3ICs3NzEs
NyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmJsaXQoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgaWYgKGJsaXREZXB0aEJ1ZmZlciB8fCBibGl0U3RlbmNpbEJ1ZmZlcikK
ICAgICB7CiAgICAgICAgIFJlbmRlclRhcmdldFZrICpyZWFkUmVuZGVyVGFyZ2V0ID0gc3JjRnJh
bWVidWZmZXJWay0+Z2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCk7Ci0gICAgICAgIFJlbmRl
clRhcmdldFZrICpkcmF3UmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRo
U3RlbmNpbCgpOworICAgICAgICBSZW5kZXJUYXJnZXRWayAqZHJhd1JlbmRlclRhcmdldCA9IG1S
ZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwodHJ1ZSk7CiAgICAgICAgIHBhcmFtcy5z
cmNMYXllciAgICAgICAgICAgICAgICAgID0gcmVhZFJlbmRlclRhcmdldC0+Z2V0TGF5ZXJJbmRl
eCgpOwogCiAgICAgICAgIC8vIE11bHRpc2FtcGxlZCBpbWFnZXMgYXJlIG5vdCBhbGxvd2VkIHRv
IGhhdmUgbWlwcy4KQEAgLTc4OCw3ICs3ODMsNyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVy
Vms6OmJsaXQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSGFzU3JjQmxpdEZlYXR1cmUocmVuZGVyZXIsIHJlYWRSZW5kZXJUYXJn
ZXQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzRHN0QmxpdEZlYXR1
cmUocmVuZGVyZXIsIGRyYXdSZW5kZXJUYXJnZXQpOwogICAgICAgICBib29sIGFyZUNoYW5uZWxz
QmxpdENvbXBhdGlibGUgPQotICAgICAgICAgICAgYXJlU3JjQW5kRHN0RGVwdGhTdGVuY2lsQ2hh
bm5lbHNCbGl0Q29tcGF0aWJsZShyZWFkUmVuZGVyVGFyZ2V0LCBkcmF3UmVuZGVyVGFyZ2V0KTsK
KyAgICAgICAgICAgIEFyZVNyY0FuZERzdERlcHRoU3RlbmNpbENoYW5uZWxzQmxpdENvbXBhdGli
bGUocmVhZFJlbmRlclRhcmdldCwgZHJhd1JlbmRlclRhcmdldCk7CiAKICAgICAgICAgaWYgKGNh
bkJsaXRXaXRoQ29tbWFuZCAmJiBhcmVDaGFubmVsc0JsaXRDb21wYXRpYmxlKQogICAgICAgICB7
CkBAIC04NTksMTkgKzg1NCw5IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6cmVzb2x2
ZUNvbG9yV2l0aENvbW1hbmQoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFV0aWxzVms6OkJsaXRS
ZXNvbHZlUGFyYW1ldGVycyAmcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgKnNyY0ltYWdlKQogewotICAg
IGlmIChzcmNJbWFnZS0+aXNMYXlvdXRDaGFuZ2VOZWNlc3Nhcnkodms6OkltYWdlTGF5b3V0OjpU
cmFuc2ZlclNyYykpCi0gICAgewotICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqc3JjTGF5b3V0
Q2hhbmdlOwotICAgICAgICBBTkdMRV9UUlkoc3JjSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRl
eHRWaywgJnNyY0xheW91dENoYW5nZSkpOwotICAgICAgICBzcmNJbWFnZS0+Y2hhbmdlTGF5b3V0
KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTGF5b3V0Q2hhbmdlKTsKLSAgICB9
Ci0KICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAg
QU5HTEVfVFJZKG1GcmFtZWJ1ZmZlci5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5k
QnVmZmVyKSk7Ci0KLSAgICAvLyBTb3VyY2UncyBsYXlvdXQgY2hhbmdlIHNob3VsZCBoYXBwZW4g
YmVmb3JlIHJlbmRlcmluZwotICAgIHNyY0ltYWdlLT5hZGRSZWFkRGVwZW5kZW5jeShjb250ZXh0
VmssICZtRnJhbWVidWZmZXIpOworICAgIEFOR0xFX1RSWSgKKyAgICAgICAgY29udGV4dFZrLT5v
bkltYWdlUmVhZChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlvdXQ6OlRy
YW5zZmVyU3JjLCBzcmNJbWFnZSkpOwogCiAgICAgVmtJbWFnZVJlc29sdmUgcmVzb2x2ZVJlZ2lv
biAgICAgICAgICAgICAgICA9IHt9OwogICAgIHJlc29sdmVSZWdpb24uc3JjU3VicmVzb3VyY2Uu
YXNwZWN0TWFzayAgICAgPSBWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklUOwpAQCAtODkzLDkgKzg3
OCw5IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6cmVzb2x2ZUNvbG9yV2l0aENvbW1h
bmQoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgZm9yIChzaXplX3QgY29sb3JJbmRleEdMIDog
bVN0YXRlLmdldEVuYWJsZWREcmF3QnVmZmVycygpKQogICAgIHsKICAgICAgICAgUmVuZGVyVGFy
Z2V0VmsgKmRyYXdSZW5kZXJUYXJnZXQgPSBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0Q29sb3JzKClb
Y29sb3JJbmRleEdMXTsKLSAgICAgICAgdms6OkltYWdlSGVscGVyICpkcmF3SW1hZ2UgPSBkcmF3
UmVuZGVyVGFyZ2V0LT5nZXRJbWFnZUZvcldyaXRlKGNvbnRleHRWaywgJm1GcmFtZWJ1ZmZlcik7
Ci0gICAgICAgIGRyYXdJbWFnZS0+Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9C
SVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOworICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5v
bkltYWdlV3JpdGUoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpU
cmFuc2ZlckRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZk
cmF3UmVuZGVyVGFyZ2V0LT5nZXRJbWFnZSgpKSk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAK
ICAgICAgICAgcmVzb2x2ZVJlZ2lvbi5kc3RTdWJyZXNvdXJjZS5taXBMZXZlbCAgICAgICA9IGRy
YXdSZW5kZXJUYXJnZXQtPmdldExldmVsSW5kZXgoKTsKICAgICAgICAgcmVzb2x2ZVJlZ2lvbi5k
c3RTdWJyZXNvdXJjZS5iYXNlQXJyYXlMYXllciA9IGRyYXdSZW5kZXJUYXJnZXQtPmdldExheWVy
SW5kZXgoKTsKQEAgLTk0Niw5ICs5MzEsMTEgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZr
Ojp1cGRhdGVDb2xvckF0dGFjaG1lbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIHMKICAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXJW
azo6aW52YWxpZGF0ZUltcGwoQ29udGV4dFZrICpjb250ZXh0VmssIHNpemVfdCBjb3VudCwgY29u
c3QgR0xlbnVtICphdHRhY2htZW50cykKK2FuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6aW52
YWxpZGF0ZUltcGwoQ29udGV4dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKLSAg
ICBBU1NFUlQobUZyYW1lYnVmZmVyLmhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpOworICAgIEFTU0VS
VChjb250ZXh0VmstPmhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpOwogCiAgICAgZ2w6OkRyYXdCdWZm
ZXJNYXNrIGludmFsaWRhdGVDb2xvckJ1ZmZlcnM7CiAgICAgYm9vbCBpbnZhbGlkYXRlRGVwdGhC
dWZmZXIgICA9IGZhbHNlOwpAQCAtOTg4LDIyICs5NzUsMjUgQEAgdm9pZCBGcmFtZWJ1ZmZlclZr
OjppbnZhbGlkYXRlSW1wbChDb250ZXh0VmsgKmNvbnRleHRWaywgc2l6ZV90IGNvdW50LCBjb25z
dCBHTGUKICAgICB7CiAgICAgICAgIGlmIChpbnZhbGlkYXRlQ29sb3JCdWZmZXJzLnRlc3QoY29s
b3JJbmRleEdMKSkKICAgICAgICAgewotICAgICAgICAgICAgbUZyYW1lYnVmZmVyLmludmFsaWRh
dGVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRleFZrKTsKKyAgICAgICAg
ICAgIGNvbnRleHRWay0+Z2V0U3RhcnRlZFJlbmRlclBhc3NDb21tYW5kcygpLmludmFsaWRhdGVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KAorICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJbmRl
eFZrKTsKICAgICAgICAgfQogICAgICAgICArK2F0dGFjaG1lbnRJbmRleFZrOwogICAgIH0KIAot
ICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBtUmVuZGVyVGFy
Z2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCk7CisgICAgUmVuZGVyVGFyZ2V0VmsgKmRlcHRoU3Rl
bmNpbFJlbmRlclRhcmdldCA9IG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwodHJ1
ZSk7CiAgICAgaWYgKGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCkKICAgICB7CiAgICAgICAgIGlm
IChpbnZhbGlkYXRlRGVwdGhCdWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1GcmFtZWJ1
ZmZlci5pbnZhbGlkYXRlUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChhdHRhY2htZW50SW5kZXhW
ayk7CisgICAgICAgICAgICBjb250ZXh0VmstPmdldFN0YXJ0ZWRSZW5kZXJQYXNzQ29tbWFuZHMo
KS5pbnZhbGlkYXRlUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudCgKKyAgICAgICAgICAgICAgICBh
dHRhY2htZW50SW5kZXhWayk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaW52YWxpZGF0ZVN0
ZW5jaWxCdWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1GcmFtZWJ1ZmZlci5pbnZhbGlk
YXRlUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRleFZrKTsKKyAgICAg
ICAgICAgIGNvbnRleHRWay0+Z2V0U3RhcnRlZFJlbmRlclBhc3NDb21tYW5kcygpLmludmFsaWRh
dGVSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnQoCisgICAgICAgICAgICAgICAgYXR0YWNobWVu
dEluZGV4VmspOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDIwLDcgKzEwMTAsMjUgQEAgdm9p
ZCBGcmFtZWJ1ZmZlclZrOjppbnZhbGlkYXRlSW1wbChDb250ZXh0VmsgKmNvbnRleHRWaywgc2l6
ZV90IGNvdW50LCBjb25zdCBHTGUKICAgICAvLyB0aGlzIHBhdHRlcm4sIHRoaXMgb3B0aW1pemF0
aW9uIG1heSBub3QgYmUgbmVjZXNzYXJ5IGlmIG5vIGFwcGxpY2F0aW9uIGRvZXMgdGhpcy4gIEl0
IGlzCiAgICAgLy8gZXhwZWN0ZWQgdGhhdCBhbiBhcHBsaWNhdGlvbiB3b3VsZCBpbnZhbGlkYXRl
KCkgd2hlbiBpdCdzIGRvbmUgd2l0aCB0aGUgZnJhbWVidWZmZXIsIHNvIHRoZQogICAgIC8vIHJl
bmRlciBwYXNzIHdvdWxkIGhhdmUgY2xvc2VkIGVpdGhlciB3YXkuCi0gICAgbUZyYW1lYnVmZmVy
LmZpbmlzaEN1cnJlbnRDb21tYW5kcyhjb250ZXh0VmspOworICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmVuZFJlbmRlclBhc3MoKSk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXJWazo6dXBkYXRlRGVwdGhTdGVuY2lsQXR0YWNobWVu
dFNlcmlhbChDb250ZXh0VmsgKmNvbnRleHRWaykKK3sKKyAgICBSZW5kZXJUYXJnZXRWayAqZGVw
dGhTdGVuY2lsUlQgPSBnZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKTsKKworICAgIGlmIChk
ZXB0aFN0ZW5jaWxSVCAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgbUN1cnJlbnRGcmFtZWJ1
ZmZlckRlc2MudXBkYXRlKHZrOjprRnJhbWVidWZmZXJEZXNjRGVwdGhTdGVuY2lsSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxSVC0+Z2V0
QXNzaWduU2VyaWFsKGNvbnRleHRWaykpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtQ3VycmVudEZyYW1lYnVmZmVyRGVzYy51cGRhdGUodms6OmtGcmFtZWJ1ZmZlckRlc2NEZXB0
aFN0ZW5jaWxJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjprWmVyb0F0dGFjaG1lbnRTZXJpYWwpOworICAgIH0KIH0KIAogYW5nbGU6OlJlc3VsdCBGcmFt
ZWJ1ZmZlclZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCkBAIC0xMDI4
LDI3ICsxMDM2LDUzIEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6c3luY1N0YXRlKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogewogICAgIENvbnRleHRWayAqY29udGV4dFZrID0g
dms6OkdldEltcGwoY29udGV4dCk7CiAKKyAgICB2azo6RnJhbWVidWZmZXJEZXNjIHByaW9yRnJh
bWVidWZmZXJEZXNjID0gbUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2M7CisKKyAgICAvLyBGb3IgYW55
IHVwZGF0ZWQgYXR0YWNobWVudHMgd2UnbGwgdXBkYXRlIHRoZWlyIFNlcmlhbHMgYmVsb3cKICAg
ICBBU1NFUlQoZGlydHlCaXRzLmFueSgpKTsKICAgICBmb3IgKHNpemVfdCBkaXJ0eUJpdCA6IGRp
cnR5Qml0cykKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZGlydHlCaXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVQVEhfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkobVJlbmRlclRhcmdldENhY2hlLnVwZGF0ZURl
cHRoU3RlbmNpbFJlbmRlclRhcmdldChjb250ZXh0LCBtU3RhdGUpKTsKKyAgICAgICAgICAgICAg
ICB1cGRhdGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50U2VyaWFsKGNvbnRleHRWayk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlf
QklUX1NURU5DSUxfQVRUQUNITUVOVDoKICAgICAgICAgICAgICAgICBBTkdMRV9UUlkobVJlbmRl
clRhcmdldENhY2hlLnVwZGF0ZURlcHRoU3RlbmNpbFJlbmRlclRhcmdldChjb250ZXh0LCBtU3Rh
dGUpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50U2VyaWFs
KGNvbnRleHRWayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGds
OjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0RFUFRIX0JVRkZFUl9DT05URU5UUzoKICAgICAgICAg
ICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfU1RFTkNJTF9CVUZGRVJfQ09OVEVO
VFM6Ci0gICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0
aFN0ZW5jaWwoKS0+Zmx1c2hTdGFnZWRVcGRhdGVzKGNvbnRleHRWaykpOworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSVCA9IGdldERl
cHRoU3RlbmNpbFJlbmRlclRhcmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChkZXB0aFN0
ZW5jaWxSVCAhPSBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkoZGVwdGhTdGVu
Y2lsUlQtPmZsdXNoU3RhZ2VkVXBkYXRlcyhjb250ZXh0VmspKTsKKyAgICAgICAgICAgICAgICBt
Q3VycmVudEZyYW1lYnVmZmVyRGVzYy51cGRhdGUodms6OmtGcmFtZWJ1ZmZlckRlc2NEZXB0aFN0
ZW5jaWxJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVwdGhTdGVuY2lsUlQtPmdldEFzc2lnblNlcmlhbChjb250ZXh0VmspKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgZ2w6OkZyYW1l
YnVmZmVyOjpESVJUWV9CSVRfUkVBRF9CVUZGRVI6CiAgICAgICAgICAgICAgICAgQU5HTEVfVFJZ
KG1SZW5kZXJUYXJnZXRDYWNoZS51cGRhdGUoY29udGV4dCwgbVN0YXRlLCBkaXJ0eUJpdHMpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVy
OjpESVJUWV9CSVRfRFJBV19CVUZGRVJTOgorICAgICAgICAgICAgICAgIC8vIEZvcmNlIHVwZGF0
ZSBvZiBzZXJpYWwgZm9yIGVuYWJsZWQgZHJhdyBidWZmZXJzCisgICAgICAgICAgICAgICAgbUN1
cnJlbnRGcmFtZWJ1ZmZlckRlc2MucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBjb2xvckluZGV4R0wgOiBtU3RhdGUuZ2V0RW5hYmxlZERyYXdCdWZmZXJzKCkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtQ3VycmVudEZyYW1lYnVmZmVyRGVzYy51
cGRhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29s
b3JJbmRleEdMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRDYWNoZS5n
ZXRDb2xvcnMoKVtjb2xvckluZGV4R0xdLT5nZXRBc3NpZ25TZXJpYWwoY29udGV4dFZrKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVwZGF0ZURlcHRoU3RlbmNpbEF0dGFj
aG1lbnRTZXJpYWwoY29udGV4dFZrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVGQVVMVF9XSURUSDoKICAgICAg
ICAgICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVGQVVMVF9IRUlHSFQ6CiAg
ICAgICAgICAgICBjYXNlIGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0RFRkFVTFRfU0FNUExF
UzoKICAgICAgICAgICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVGQVVMVF9G
SVhFRF9TQU1QTEVfTE9DQVRJT05TOgorICAgICAgICAgICAgICAgIC8vIEludmFsaWRhdGUgdGhl
IGNhY2hlLiBJZiB3ZSBoYXZlIHBlcmZvcm1hbmNlIGNyaXRpY2FsIGNvZGUgaGl0dGluZyB0aGlz
IHBhdGggd2UKKyAgICAgICAgICAgICAgICAvLyBjYW4gYWRkIHJlbGF0ZWQgZGF0YSAoc3VjaCBh
cyB3aWR0aC9oZWlnaHQpIHRvIHRoZSBjYWNoZQorICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGUo
Y29udGV4dFZrKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICB7CkBAIC0xMDU4LDYgKzEwOTIsMTkgQEAgYW5nbGU6OlJlc3VsdCBGcmFt
ZWJ1ZmZlclZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBjb2xvckluZGV4R0wgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KAog
ICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlCaXQgLSBnbDo6RnJhbWVidWZmZXI6OkRJUlRZ
X0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzApOwogICAgICAgICAgICAgICAgICAgICBBTkdMRV9UUlko
dXBkYXRlQ29sb3JBdHRhY2htZW50KGNvbnRleHQsIGNvbG9ySW5kZXhHTCkpOworICAgICAgICAg
ICAgICAgICAgICBpZiAobVJlbmRlclRhcmdldENhY2hlLmdldENvbG9ycygpW2NvbG9ySW5kZXhH
TF0gIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldEVuYWJs
ZWREcmF3QnVmZmVycygpW2NvbG9ySW5kZXhHTF0pCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50RnJhbWVidWZmZXJEZXNjLnVwZGF0ZSgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29sb3JJbmRl
eEdMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0
Q29sb3JzKClbY29sb3JJbmRleEdMXS0+Z2V0QXNzaWduU2VyaWFsKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0VmspKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1DdXJyZW50RnJhbWVidWZmZXJEZXNjLnVwZGF0ZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oY29sb3JJbmRleEdMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2azo6a1plcm9BdHRhY2htZW50U2VyaWFsKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgewpAQCAtMTA2NywyNyArMTExNCwzMCBAQCBhbmdsZTo6UmVzdWx0
IEZyYW1lYnVmZmVyVms6OnN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcnR5Qml0IC0gZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9C
SVRfQ09MT1JfQlVGRkVSX0NPTlRFTlRTXzApOwogICAgICAgICAgICAgICAgICAgICBBTkdMRV9U
UlkobVJlbmRlclRhcmdldENhY2hlLmdldENvbG9ycygpW2NvbG9ySW5kZXhHTF0tPmZsdXNoU3Rh
Z2VkVXBkYXRlcygKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRWaykpOworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobVJlbmRlclRhcmdldENhY2hlLmdldENvbG9ycygpW2NvbG9y
SW5kZXhHTF0gIT0gbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50RnJhbWVi
dWZmZXJEZXNjLnVwZGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVp
bnQzMl90Pihjb2xvckluZGV4R0wpLAorICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlclRh
cmdldENhY2hlLmdldENvbG9ycygpW2NvbG9ySW5kZXhHTF0tPmdldEFzc2lnblNlcmlhbChjb250
ZXh0VmspKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICAvLyBUaGUgRkJPcyBuZXcgYXR0YWNobWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHRo
ZSByZW5kZXJhYmxlIGFyZWEKKyAgICAvLyBOby1vcCByZWR1bmRhbnQgY2hhbmdlcyB0byBwcmV2
ZW50IGNsb3NpbmcgdGhlIFJlbmRlclBhc3MuCisgICAgaWYgKG1DdXJyZW50RnJhbWVidWZmZXJE
ZXNjID09IHByaW9yRnJhbWVidWZmZXJEZXNjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFuZ2xl
OjpSZXN1bHQ6OkNvbnRpbnVlOworICAgIH0KKworICAgIC8vIFRoZSBGQk8ncyBuZXcgYXR0YWNo
bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSByZW5kZXJhYmxlIGFyZWEKICAgICBjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwotICAgIGNvbnRleHRWay0+dXBk
YXRlU2Npc3NvcihnbFN0YXRlKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT51cGRhdGVTY2lz
c29yKGdsU3RhdGUpKTsKIAogICAgIG1BY3RpdmVDb2xvckNvbXBvbmVudHMgPSBnbF92azo6R2V0
Q29sb3JDb21wb25lbnRGbGFncygKICAgICAgICAgbUFjdGl2ZUNvbG9yQ29tcG9uZW50TWFza3NG
b3JDbGVhclswXS5hbnkoKSwgbUFjdGl2ZUNvbG9yQ29tcG9uZW50TWFza3NGb3JDbGVhclsxXS5h
bnkoKSwKICAgICAgICAgbUFjdGl2ZUNvbG9yQ29tcG9uZW50TWFza3NGb3JDbGVhclsyXS5hbnko
KSwgbUFjdGl2ZUNvbG9yQ29tcG9uZW50TWFza3NGb3JDbGVhclszXS5hbnkoKSk7CiAKLSAgICBt
RnJhbWVidWZmZXIucmVsZWFzZShjb250ZXh0VmspOwotCi0gICAgaWYgKGNvbnRleHRWay0+Y29t
bWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgLy8gV2lsbCBmcmVlemUgdGhlIGN1
cnJlbnQgc2V0IG9mIGRlcGVuZGVuY2llcyBvbiB0aGlzIEZCTy4gVGhlIG5leHQgdGltZSB3ZSBy
ZW5kZXIgd2Ugd2lsbAotICAgICAgICAvLyBjcmVhdGUgYSBuZXcgZW50cnkgaW4gdGhlIGNvbW1h
bmQgZ3JhcGguCi0gICAgICAgIG1GcmFtZWJ1ZmZlci5maW5pc2hDdXJyZW50Q29tbWFuZHMoY29u
dGV4dFZrKTsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzcygp
KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgQ29udGV4dFZrIHRvIHVwZGF0ZSB0aGUgcGlwZWxpbmUg
ZGVzYy4KICAgICB1cGRhdGVSZW5kZXJQYXNzRGVzYygpOwpAQCAtMTA5Nyw2ICsxMTQ3LDggQEAg
YW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgewogICAgICAgICBjb250ZXh0VmstPm9uRHJhd0ZyYW1lYnVmZmVyQ2hh
bmdlKHRoaXMpOwogICAgIH0KKyAgICAvLyBEZWFjdGl2YXRlIEZyYW1lYnVmZmVyCisgICAgbUZy
YW1lYnVmZmVyID0gbnVsbHB0cjsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKIH0KQEAgLTExMjMsNyArMTE3NSw3IEBAIHZvaWQgRnJhbWVidWZmZXJWazo6dXBkYXRlUmVu
ZGVyUGFzc0Rlc2MoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgUmVuZGVyVGFyZ2V0VmsgKmRl
cHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5j
aWwoKTsKKyAgICBSZW5kZXJUYXJnZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gZ2V0
RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCk7CiAgICAgaWYgKGRlcHRoU3RlbmNpbFJlbmRlclRh
cmdldCkKICAgICB7CiAgICAgICAgIG1SZW5kZXJQYXNzRGVzYy5wYWNrRGVwdGhTdGVuY2lsQXR0
YWNobWVudCgKQEAgLTExMzMsMTMgKzExODUsMjcgQEAgdm9pZCBGcmFtZWJ1ZmZlclZrOjp1cGRh
dGVSZW5kZXJQYXNzRGVzYygpCiAKIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6Z2V0RnJh
bWVidWZmZXIoQ29udGV4dFZrICpjb250ZXh0VmssIHZrOjpGcmFtZWJ1ZmZlciAqKmZyYW1lYnVm
ZmVyT3V0KQogewotICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY3JlYXRlZCBvdXIgY2FjaGVkIEZy
YW1lYnVmZmVyLCByZXR1cm4gaXQuCi0gICAgaWYgKG1GcmFtZWJ1ZmZlci52YWxpZCgpKQorICAg
IC8vIEZpcnN0IHJldHVybiBhIHByZXNlbnRseSB2YWxpZCBGcmFtZWJ1ZmZlcgorICAgIGlmICht
RnJhbWVidWZmZXIgIT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgICpmcmFtZWJ1ZmZlck91dCA9
ICZtRnJhbWVidWZmZXIuZ2V0RnJhbWVidWZmZXIoKTsKKyAgICAgICAgKmZyYW1lYnVmZmVyT3V0
ID0gJm1GcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZmZXIoKTsKICAgICAgICAgcmV0dXJuIGFuZ2xl
OjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KLQorICAgIC8vIE5vIGN1cnJlbnQgRkIsIHNvIG5v
dyBjaGVjayBmb3IgcHJldmlvdXNseSBjYWNoZWQgRnJhbWVidWZmZXIKKyAgICBhdXRvIGl0ZXIg
PSBtRnJhbWVidWZmZXJDYWNoZS5maW5kKG1DdXJyZW50RnJhbWVidWZmZXJEZXNjKTsKKyAgICBp
ZiAoaXRlciAhPSBtRnJhbWVidWZmZXJDYWNoZS5lbmQoKSkKKyAgICB7CisgICAgICAgIGlmIChj
b250ZXh0VmstPmdldFJlbmRlcmVyKCktPmdldEZlYXR1cmVzKCkuZW5hYmxlRnJhbWVidWZmZXJW
a0NhY2hlLmVuYWJsZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgICpmcmFtZWJ1ZmZlck91dCA9
ICZpdGVyLT5zZWNvbmQuZ2V0RnJhbWVidWZmZXIoKTsKKyAgICAgICAgICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFdoZW4gY2FjaGUgaXMgb2ZmIGp1c3QgcmVsZWFzZSBwcmV2aW91cyBl
bnRyeSwgaXQgd2lsbCBiZSByZWNyZWF0ZWQgYmVsb3cKKyAgICAgICAgICAgIGl0ZXItPnNlY29u
ZC5yZWxlYXNlKGNvbnRleHRWayk7CisgICAgICAgIH0KKyAgICB9CiAgICAgdms6OlJlbmRlclBh
c3MgKmNvbXBhdGlibGVSZW5kZXJQYXNzID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkoY29udGV4
dFZrLT5nZXRDb21wYXRpYmxlUmVuZGVyUGFzcyhtUmVuZGVyUGFzc0Rlc2MsICZjb21wYXRpYmxl
UmVuZGVyUGFzcykpOwogCkBAIC0xMTY4LDcgKzEyMzQsNyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1l
YnVmZmVyVms6OmdldEZyYW1lYnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLCB2azo6RnJhbWVi
dWZmZQogICAgICAgICBhdHRhY2htZW50c1NpemUgPSBjb2xvclJlbmRlclRhcmdldC0+Z2V0RXh0
ZW50cygpOwogICAgIH0KIAotICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSZW5kZXJU
YXJnZXQgPSBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCk7CisgICAgUmVuZGVy
VGFyZ2V0VmsgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IGdldERlcHRoU3RlbmNpbFJlbmRl
clRhcmdldCgpOwogICAgIGlmIChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCiAgICAgewogICAg
ICAgICBjb25zdCB2azo6SW1hZ2VWaWV3ICppbWFnZVZpZXcgPSBudWxscHRyOwpAQCAtMTE4OCw3
ICsxMjU0LDYgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpnZXRGcmFtZWJ1ZmZlcihD
b250ZXh0VmsgKmNvbnRleHRWaywgdms6OkZyYW1lYnVmZmUKICAgICAgICAgYXR0YWNobWVudHNT
aXplLndpZHRoICA9IG1TdGF0ZS5nZXREZWZhdWx0V2lkdGgoKTsKICAgICAgICAgYXR0YWNobWVu
dHNTaXplLmRlcHRoICA9IDA7CiAgICAgfQotCiAgICAgVmtGcmFtZWJ1ZmZlckNyZWF0ZUluZm8g
ZnJhbWVidWZmZXJJbmZvID0ge307CiAKICAgICBmcmFtZWJ1ZmZlckluZm8uc1R5cGUgICAgICAg
ICAgID0gVktfU1RSVUNUVVJFX1RZUEVfRlJBTUVCVUZGRVJfQ1JFQVRFX0lORk87CkBAIC0xMjAw
LDEwMCArMTI2NSwxMiBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmdldEZyYW1lYnVm
ZmVyKENvbnRleHRWayAqY29udGV4dFZrLCB2azo6RnJhbWVidWZmZQogICAgIGZyYW1lYnVmZmVy
SW5mby5oZWlnaHQgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0YWNobWVudHNT
aXplLmhlaWdodCk7CiAgICAgZnJhbWVidWZmZXJJbmZvLmxheWVycyAgICAgICAgICA9IDE7CiAK
LSAgICBBTkdMRV9UUlkobUZyYW1lYnVmZmVyLmluaXQoY29udGV4dFZrLCBmcmFtZWJ1ZmZlcklu
Zm8pKTsKLQotICAgICpmcmFtZWJ1ZmZlck91dCA9ICZtRnJhbWVidWZmZXIuZ2V0RnJhbWVidWZm
ZXIoKTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLWFuZ2xlOjpS
ZXN1bHQgRnJhbWVidWZmZXJWazo6Y2xlYXJXaXRoUmVuZGVyUGFzc09wKAotICAgIENvbnRleHRW
ayAqY29udGV4dFZrLAotICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsZWFyQXJlYSwKLSAgICBn
bDo6RHJhd0J1ZmZlck1hc2sgY2xlYXJDb2xvckJ1ZmZlcnMsCi0gICAgYm9vbCBjbGVhckRlcHRo
LAotICAgIGJvb2wgY2xlYXJTdGVuY2lsLAotICAgIGNvbnN0IFZrQ2xlYXJDb2xvclZhbHVlICZj
bGVhckNvbG9yVmFsdWUsCi0gICAgY29uc3QgVmtDbGVhckRlcHRoU3RlbmNpbFZhbHVlICZjbGVh
ckRlcHRoU3RlbmNpbFZhbHVlKQotewotICAgIC8vIFN0YXJ0IGEgbmV3IHJlbmRlciBwYXNzIGlm
OgotICAgIC8vCi0gICAgLy8gLSBubyByZW5kZXIgcGFzcyBoYXMgc3RhcnRlZCwKLSAgICAvLyAt
IHRoZXJlIGlzIGEgcmVuZGVyIHBhc3Mgc3RhcnRlZCBidXQgaXQgY29udGFpbnMgY29tbWFuZHM7
IHdlIGNhbm5vdCBtb2RpZnkgaXRzIG9wcywgc28gbmV3Ci0gICAgLy8gcmVuZGVyIHBhc3MgaXMg
bmVlZGVkLAotICAgIC8vIC0gdGhlIGN1cnJlbnQgcmVuZGVyIGFyZWEgZG9lc24ndCBtYXRjaCB0
aGUgY2xlYXIgYXJlYS4gIFdlIG5lZWQgdGhlIHJlbmRlciBhcmVhIHRvIGJlCi0gICAgLy8gZXhh
Y3RseSBhcyBzcGVjaWZpZWQgYnkgdGhlIHNjaXNzb3IgZm9yIHRoZSBsb2FkT3AgdG8gY2xlYXIg
b25seSB0aGF0IGFyZWEuICBTZWUKLSAgICAvLyBvblNjaXNzb3JDaGFuZ2UgZm9yIG1vcmUgaW5m
b3JtYXRpb24uCi0KLSAgICBpZiAoIW1GcmFtZWJ1ZmZlci52YWxpZCgpIHx8ICFtRnJhbWVidWZm
ZXIucmVuZGVyUGFzc1N0YXJ0ZWRCdXRFbXB0eSgpIHx8Ci0gICAgICAgIG1GcmFtZWJ1ZmZlci5n
ZXRSZW5kZXJQYXNzUmVuZGVyQXJlYSgpICE9IGNsZWFyQXJlYSkKLSAgICB7Ci0gICAgICAgIHZr
OjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOwotICAgICAgICBBTkdMRV9UUlkoc3RhcnRO
ZXdSZW5kZXJQYXNzKGNvbnRleHRWaywgY2xlYXJBcmVhLCAmY29tbWFuZEJ1ZmZlcikpOwotICAg
IH0KLQotICAgIHNpemVfdCBhdHRhY2htZW50SW5kZXhWayA9IDA7Ci0KLSAgICAvLyBHbyB0aHJv
dWdoIGNsZWFyQ29sb3JCdWZmZXJzIGFuZCBzZXQgdGhlIGFwcHJvcHJpYXRlIGxvYWRPcCBhbmQg
Y2xlYXIgdmFsdWVzLgotICAgIGZvciAoc2l6ZV90IGNvbG9ySW5kZXhHTCA6IG1TdGF0ZS5nZXRF
bmFibGVkRHJhd0J1ZmZlcnMoKSkKLSAgICB7Ci0gICAgICAgIGlmIChjbGVhckNvbG9yQnVmZmVy
cy50ZXN0KGNvbG9ySW5kZXhHTCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlclRhcmdl
dFZrICpyZW5kZXJUYXJnZXQgPSBnZXRDb2xvckRyYXdSZW5kZXJUYXJnZXQoY29sb3JJbmRleEdM
KTsKLQotICAgICAgICAgICAgLy8gSWYgdGhlIHJlbmRlciB0YXJnZXQgZG9lc24ndCBoYXZlIGFs
cGhhLCBidXQgaXRzIGVtdWxhdGVkIGZvcm1hdCBoYXMgaXQsIGNsZWFyIHRoZQotICAgICAgICAg
ICAgLy8gYWxwaGEgdG8gMS4KLSAgICAgICAgICAgIFZrQ2xlYXJDb2xvclZhbHVlIHZhbHVlID0g
Y2xlYXJDb2xvclZhbHVlOwotICAgICAgICAgICAgaWYgKG1FbXVsYXRlZEFscGhhQXR0YWNobWVu
dE1hc2tbY29sb3JJbmRleEdMXSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTZXRF
bXVsYXRlZEFscGhhVmFsdWUocmVuZGVyVGFyZ2V0LT5nZXRJbWFnZUZvcm1hdCgpLCAmdmFsdWUp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3Jh
cGhFbmFibGVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUZyYW1lYnVmZmVy
LmNsZWFyUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudChhdHRhY2htZW50SW5kZXhWaywgdmFsdWUp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHRWay0+Z2V0UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoKS5jbGVhclJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnQoCi0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJ
bmRleFZrLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgKythdHRh
Y2htZW50SW5kZXhWazsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGFwcHJvcHJpYXRlIGxvYWRP
cCBhbmQgY2xlYXIgdmFsdWVzIGZvciBkZXB0aCBhbmQgc3RlbmNpbC4KLSAgICBSZW5kZXJUYXJn
ZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldENhY2hlLmdldERl
cHRoU3RlbmNpbCgpOwotICAgIGlmIChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCi0gICAgewot
ICAgICAgICBpZiAoY2xlYXJEZXB0aCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRl
eHRWay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG1GcmFtZWJ1ZmZlci5jbGVhclJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnQoYXR0YWNobWVu
dEluZGV4VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGVhckRlcHRoU3RlbmNpbFZhbHVlLmRlcHRoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0VmstPmdldFJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCkuY2xlYXJSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50KAotICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50SW5kZXhWaywgY2xlYXJE
ZXB0aFN0ZW5jaWxWYWx1ZS5kZXB0aCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoY2xlYXJTdGVuY2lsKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGV4
dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbUZyYW1lYnVmZmVyLmNsZWFyUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KGF0dGFjaG1l
bnRJbmRleFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhckRlcHRoU3RlbmNpbFZhbHVlLnN0ZW5jaWwpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHRWay0+Z2V0UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoKS5jbGVhclJlbmRlclBhc3NT
dGVuY2lsQXR0YWNobWVudCgKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudEluZGV4Vmss
IGNsZWFyRGVwdGhTdGVuY2lsVmFsdWUuc3RlbmNpbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9CisgICAgdms6OkZyYW1lYnVmZmVySGVscGVyIG5ld0ZyYW1lYnVmZmVyOworICAg
IEFOR0xFX1RSWShuZXdGcmFtZWJ1ZmZlci5pbml0KGNvbnRleHRWaywgZnJhbWVidWZmZXJJbmZv
KSk7CiAKKyAgICBtRnJhbWVidWZmZXJDYWNoZVttQ3VycmVudEZyYW1lYnVmZmVyRGVzY10gPSBz
dGQ6Om1vdmUobmV3RnJhbWVidWZmZXIpOworICAgIG1GcmFtZWJ1ZmZlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9ICZtRnJhbWVidWZmZXJDYWNoZVttQ3VycmVudEZyYW1lYnVmZmVy
RGVzY107CisgICAgKmZyYW1lYnVmZmVyT3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
Jm1GcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZmZXIoKTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7CiB9CiAKQEAgLTEzNjQsMTUgKzEzNDEsNyBAQCBhbmdsZTo6UmVzdWx0IEZy
YW1lYnVmZmVyVms6OnN0YXJ0TmV3UmVuZGVyUGFzcyhDb250ZXh0VmsgKmNvbnRleHRWaywKICAg
ICB2azo6QXR0YWNobWVudE9wc0FycmF5IHJlbmRlclBhc3NBdHRhY2htZW50T3BzOwogICAgIHN0
ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gYXR0YWNobWVudENsZWFyVmFsdWVzOwogCi0gICAgdms6
OkNvbW1hbmRCdWZmZXIgKndyaXRlQ29tbWFuZHMgPSBudWxscHRyOwotICAgIGlmIChjb250ZXh0
VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShtRnJh
bWVidWZmZXIucmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmd3JpdGVDb21tYW5kcykpOwotICAg
IH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5nZXRPdXRz
aWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoJndyaXRlQ29tbWFuZHMpKTsKLSAgICB9CisgICAg
QU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzcygpKTsKIAogICAgIC8vIEluaXRpYWxp
emUgUmVuZGVyUGFzcyBpbmZvLgogICAgIGNvbnN0IGF1dG8gJmNvbG9yUmVuZGVyVGFyZ2V0cyA9
IG1SZW5kZXJUYXJnZXRDYWNoZS5nZXRDb2xvcnMoKTsKQEAgLTEzODEsNyArMTM1MCw3IEBAIGFu
Z2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6c3RhcnROZXdSZW5kZXJQYXNzKENvbnRleHRWayAq
Y29udGV4dFZrLAogICAgICAgICBSZW5kZXJUYXJnZXRWayAqY29sb3JSZW5kZXJUYXJnZXQgPSBj
b2xvclJlbmRlclRhcmdldHNbY29sb3JJbmRleEdMXTsKICAgICAgICAgQVNTRVJUKGNvbG9yUmVu
ZGVyVGFyZ2V0KTsKIAotICAgICAgICBBTkdMRV9UUlkoY29sb3JSZW5kZXJUYXJnZXQtPm9uQ29s
b3JEcmF3KGNvbnRleHRWaywgJm1GcmFtZWJ1ZmZlciwgd3JpdGVDb21tYW5kcykpOworICAgICAg
ICBBTkdMRV9UUlkoY29sb3JSZW5kZXJUYXJnZXQtPm9uQ29sb3JEcmF3KGNvbnRleHRWaykpOwog
CiAgICAgICAgIHJlbmRlclBhc3NBdHRhY2htZW50T3BzLmluaXRXaXRoTG9hZFN0b3JlKGF0dGFj
aG1lbnRDbGVhclZhbHVlcy5zaXplKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hNRU5UX09QVElN
QUwsCkBAIC0xMzg5LDExICsxMzU4LDEwIEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6
c3RhcnROZXdSZW5kZXJQYXNzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICBhdHRhY2ht
ZW50Q2xlYXJWYWx1ZXMuZW1wbGFjZV9iYWNrKGtVbmluaXRpYWxpemVkQ2xlYXJWYWx1ZSk7CiAg
ICAgfQogCi0gICAgUmVuZGVyVGFyZ2V0VmsgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IG1S
ZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwoKTsKKyAgICBSZW5kZXJUYXJnZXRWayAq
ZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gZ2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCk7
CiAgICAgaWYgKGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIEFOR0xF
X1RSWSgKLSAgICAgICAgICAgIGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldC0+b25EZXB0aFN0ZW5j
aWxEcmF3KGNvbnRleHRWaywgJm1GcmFtZWJ1ZmZlciwgd3JpdGVDb21tYW5kcykpOworICAgICAg
ICBBTkdMRV9UUlkoZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5vbkRlcHRoU3RlbmNpbERyYXco
Y29udGV4dFZrKSk7CiAKICAgICAgICAgcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMuaW5pdFdpdGhM
b2FkU3RvcmUoYXR0YWNobWVudENsZWFyVmFsdWVzLnNpemUoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfSU1BR0VfTEFZT1VUX0RFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVF9PUFRJTUFMLApAQCAtMTQwMSwxOSArMTM2OSw5IEBAIGFuZ2xlOjpS
ZXN1bHQgRnJhbWVidWZmZXJWazo6c3RhcnROZXdSZW5kZXJQYXNzKENvbnRleHRWayAqY29udGV4
dFZrLAogICAgICAgICBhdHRhY2htZW50Q2xlYXJWYWx1ZXMuZW1wbGFjZV9iYWNrKGtVbmluaXRp
YWxpemVkQ2xlYXJWYWx1ZSk7CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHRWay0+Y29tbWFuZEdy
YXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1GcmFtZWJ1ZmZlci5iZWdpblJl
bmRlclBhc3MoY29udGV4dFZrLCAqZnJhbWVidWZmZXIsIHJlbmRlckFyZWEsIG1SZW5kZXJQYXNz
RGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy
UGFzc0F0dGFjaG1lbnRPcHMsIGF0dGFjaG1lbnRDbGVhclZhbHVlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlck91dCk7Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnRleHRWay0+YmVnaW5SZW5kZXJQYXNzKCpmcmFt
ZWJ1ZmZlciwgcmVuZGVyQXJlYSwgbVJlbmRlclBhc3NEZXNjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZW5kZXJQYXNzQXR0YWNobWVudE9wcywgYXR0YWNobWVudENsZWFy
VmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kQnVmZmVy
T3V0KTsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotICAgIH0KKyAg
ICByZXR1cm4gY29udGV4dFZrLT5mbHVzaEFuZEJlZ2luUmVuZGVyUGFzcygqZnJhbWVidWZmZXIs
IHJlbmRlckFyZWEsIG1SZW5kZXJQYXNzRGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW5kZXJQYXNzQXR0YWNobWVudE9wcywgYXR0YWNobWVudENs
ZWFyVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmRCdWZmZXJPdXQpOwogfQogCiB2b2lkIEZyYW1lYnVmZmVyVms6OnVwZGF0ZUFjdGl2
ZUNvbG9yTWFza3Moc2l6ZV90IGNvbG9ySW5kZXhHTCwgYm9vbCByLCBib29sIGcsIGJvb2wgYiwg
Ym9vbCBhKQpAQCAtMTQ2OCwyOCArMTQyNiw2IEBAIGdsOjpSZWN0YW5nbGUgRnJhbWVidWZmZXJW
azo6Z2V0U2Npc3NvcmVkUmVuZGVyQXJlYShDb250ZXh0VmsgKmNvbnRleHRWaykgY29uc3QKICAg
ICByZXR1cm4gQ2xpcFJlY3RUb1NjaXNzb3IoY29udGV4dFZrLT5nZXRTdGF0ZSgpLCByZW5kZXJB
cmVhLCBpbnZlcnRWaWV3cG9ydCk7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXJWazo6b25TY2lzc29y
Q2hhbmdlKENvbnRleHRWayAqY29udGV4dFZrKQotewotICAgIGdsOjpSZWN0YW5nbGUgc2Npc3Nv
cmVkUmVuZGVyQXJlYSA9IGdldFNjaXNzb3JlZFJlbmRlckFyZWEoY29udGV4dFZrKTsKLQotICAg
IC8vIElmIHRoZSBzY2lzc29yIGhhcyBncm93biBiZXlvbmQgdGhlIHByZXZpb3VzIHNjaXNzb3Jl
ZFJlbmRlckFyZWEsIG1ha2Ugc3VyZSB0aGUgcmVuZGVyIHBhc3MKLSAgICAvLyBpcyByZXN0YXJ0
ZWQuICBPdGhlcndpc2UsIHdlIGNhbiBjb250aW51ZSB1c2luZyB0aGUgc2FtZSByZW5kZXJwYXNz
IGFyZWEuCi0gICAgLy8KLSAgICAvLyBXaXRob3V0IGEgc2Npc3NvciwgdGhlIHJlbmRlciBwYXNz
IGFyZWEgY292ZXJzIHRoZSB3aG9sZSBvZiB0aGUgZnJhbWVidWZmZXIuICBXaXRoIGEKLSAgICAv
LyBzY2lzc29yZWQgY2xlYXIsIHRoZSByZW5kZXIgcGFzcyBhcmVhIGNvdWxkIGJlIHNtYWxsZXIg
dGhhbiB0aGUgZnJhbWVidWZmZXIgc2l6ZS4gIFdoZW4gdGhlCi0gICAgLy8gc2Npc3NvciBjaGFu
Z2VzLCBpZiB0aGUgc2Npc3NvciBhcmVhIGlzIGNvbXBsZXRlbHkgZW5jb21wYXNzZWQgYnkgdGhl
IHJlbmRlciBwYXNzIGFyZWEsIGl0J3MKLSAgICAvLyBwb3NzaWJsZSB0byBjb250aW51ZSB1c2lu
ZyB0aGUgc2FtZSByZW5kZXIgcGFzcy4gIEhvd2V2ZXIsIGlmIHRoZSBjdXJyZW50IHJlbmRlciBw
YXNzIGFyZWEKLSAgICAvLyBpcyB0b28gc21hbGwsIHdlIG5lZWQgdG8gc3RhcnQgYSBuZXcgb25l
LiAgVGhlIGxhdHRlciBjYW4gaGFwcGVuIGlmIGEgc2Npc3NvcmVkIGNsZWFyIHN0YXJ0cwotICAg
IC8vIGEgcmVuZGVyIHBhc3MsIHRoZSBzY2lzc29yIGlzIGRpc2FibGVkIGFuZCBhIGRyYXcgY2Fs
bCBpcyBpc3N1ZWQgdG8gYWZmZWN0IHRoZSB3aG9sZQotICAgIC8vIGZyYW1lYnVmZmVyLgotICAg
IG1GcmFtZWJ1ZmZlci51cGRhdGVDdXJyZW50QWNjZXNzTm9kZXMoKTsKLSAgICBpZiAobUZyYW1l
YnVmZmVyLmhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkgJiYKLSAgICAgICAgIW1GcmFtZWJ1ZmZlci5n
ZXRSZW5kZXJQYXNzUmVuZGVyQXJlYSgpLmVuY2xvc2VzKHNjaXNzb3JlZFJlbmRlckFyZWEpKQot
ICAgIHsKLSAgICAgICAgbUZyYW1lYnVmZmVyLmZpbmlzaEN1cnJlbnRDb21tYW5kcyhjb250ZXh0
VmspOwotICAgIH0KLX0KLQogUmVuZGVyVGFyZ2V0VmsgKkZyYW1lYnVmZmVyVms6OmdldEZpcnN0
UmVuZGVyVGFyZ2V0KCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8gKnJlbmRlclRhcmdldCA6IG1S
ZW5kZXJUYXJnZXRDYWNoZS5nZXRDb2xvcnMoKSkKQEAgLTE1MDAsNyArMTQzNiw3IEBAIFJlbmRl
clRhcmdldFZrICpGcmFtZWJ1ZmZlclZrOjpnZXRGaXJzdFJlbmRlclRhcmdldCgpIGNvbnN0CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRo
U3RlbmNpbCgpOworICAgIHJldHVybiBnZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKTsKIH0K
IAogR0xpbnQgRnJhbWVidWZmZXJWazo6Z2V0U2FtcGxlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1l
YnVmZmVyVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vRnJhbWVidWZmZXJWay5oCmluZGV4IDRhMTRmNGFhNjNiNGE4YmRhN2VlZGZjODJl
NmIwOTVmYjRjN2RhMGUuLjBjNGE3MDlmMGY0YTYxYjI1N2RjMWJmOWE5YjdiZDRkZjFjNzQ3ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vRnJhbWVidWZmZXJWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oCkBAIC0xMyw3ICsxMyw3
IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0Q2FjaGUuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vQ29tbWFuZEdyYXBoLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1Jlc291cmNlVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vVXRpbHNWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYWNo
ZV91dGlscy5oIgogCkBAIC0xMDUsMjMgKzEwNSwxMCBAQCBjbGFzcyBGcmFtZWJ1ZmZlclZrIDog
cHVibGljIEZyYW1lYnVmZmVySW1wbAogICAgIGdsOjpSZWN0YW5nbGUgZ2V0Q29tcGxldGVSZW5k
ZXJBcmVhKCkgY29uc3Q7CiAgICAgZ2w6OlJlY3RhbmdsZSBnZXRTY2lzc29yZWRSZW5kZXJBcmVh
KENvbnRleHRWayAqY29udGV4dFZrKSBjb25zdDsKIAotICAgIHZvaWQgb25TY2lzc29yQ2hhbmdl
KENvbnRleHRWayAqY29udGV4dFZrKTsKLQogICAgIGNvbnN0IGdsOjpEcmF3QnVmZmVyTWFzayAm
Z2V0RW11bGF0ZWRBbHBoYUF0dGFjaG1lbnRNYXNrKCkgY29uc3Q7CiAgICAgUmVuZGVyVGFyZ2V0
VmsgKmdldENvbG9yRHJhd1JlbmRlclRhcmdldChzaXplX3QgY29sb3JJbmRleCkgY29uc3Q7CiAg
ICAgUmVuZGVyVGFyZ2V0VmsgKmdldENvbG9yUmVhZFJlbmRlclRhcmdldCgpIGNvbnN0OwogCi0g
ICAgLy8gVGhpcyB3aWxsIGNsZWFyIHRoZSBjdXJyZW50IHdyaXRlIG9wZXJhdGlvbiBpZiBpdCBp
cyBjb21wbGV0ZS4KLSAgICBib29sIGFwcGVuZFRvU3RhcnRlZFJlbmRlclBhc3Modms6OlJlc291
cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQp
Ci0gICAgewotICAgICAgICByZXR1cm4gbUZyYW1lYnVmZmVyLmFwcGVuZFRvU3RhcnRlZFJlbmRl
clBhc3MocmVzb3VyY2VVc2VMaXN0LCByZW5kZXJBcmVhLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlck91dCk7Ci0gICAg
fQotCi0gICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpnZXRGcmFtZWJ1ZmZlcigpIHsgcmV0dXJu
ICZtRnJhbWVidWZmZXI7IH0KLQogICAgIGFuZ2xlOjpSZXN1bHQgc3RhcnROZXdSZW5kZXJQYXNz
KENvbnRleHRWayAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCk7CkBA
IC0xMzAsNiArMTE3LDcgQEAgY2xhc3MgRnJhbWVidWZmZXJWayA6IHB1YmxpYyBGcmFtZWJ1ZmZl
ckltcGwKICAgICBHTGludCBnZXRTYW1wbGVzKCkgY29uc3Q7CiAKICAgICBjb25zdCB2azo6UmVu
ZGVyUGFzc0Rlc2MgJmdldFJlbmRlclBhc3NEZXNjKCkgY29uc3QgeyByZXR1cm4gbVJlbmRlclBh
c3NEZXNjOyB9CisgICAgY29uc3Qgdms6OkZyYW1lYnVmZmVyRGVzYyAmZ2V0RnJhbWVidWZmZXJE
ZXNjKCkgY29uc3QgeyByZXR1cm4gbUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2M7IH0KIAogICBwcml2
YXRlOgogICAgIEZyYW1lYnVmZmVyVmsoUmVuZGVyZXJWayAqcmVuZGVyZXIsCkBAIC0xNjIsMTMg
KzE1MCw2IEBAIGNsYXNzIEZyYW1lYnVmZmVyVmsgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjbGVhclN0ZW5jaWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVmtDbGVhckNvbG9yVmFsdWUgJmNsZWFyQ29sb3JWYWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0NsZWFyRGVwdGhTdGVuY2ls
VmFsdWUgJmNsZWFyRGVwdGhTdGVuY2lsVmFsdWUpOwotICAgIGFuZ2xlOjpSZXN1bHQgY2xlYXJX
aXRoUmVuZGVyUGFzc09wKENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsZWFyQXJlYSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RHJhd0J1ZmZlck1hc2sg
Y2xlYXJDb2xvckJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjbGVhckRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY2xlYXJTdGVuY2lsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFZrQ2xlYXJDb2xvclZhbHVlICZjbGVhckNvbG9yVmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtDbGVhckRlcHRoU3RlbmNp
bFZhbHVlICZjbGVhckRlcHRoU3RlbmNpbFZhbHVlKTsKICAgICBhbmdsZTo6UmVzdWx0IGNsZWFy
V2l0aERyYXcoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmNsZWFyQXJlYSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGNsZWFyQ29sb3JCdWZmZXJzLApAQCAt
MTgwLDEyICsxNjEsMTUgQEAgY2xhc3MgRnJhbWVidWZmZXJWayA6IHB1YmxpYyBGcmFtZWJ1ZmZl
ckltcGwKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZUNvbG9yTWFza3Moc2l6ZV90IGNvbG9ySW5kZXgs
IGJvb2wgciwgYm9vbCBnLCBib29sIGIsIGJvb2wgYSk7CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJQ
YXNzRGVzYygpOwogICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlQ29sb3JBdHRhY2htZW50KGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LCBzaXplX3QgY29sb3JJbmRleCk7Ci0gICAgdm9pZCBpbnZh
bGlkYXRlSW1wbChDb250ZXh0VmsgKmNvbnRleHRWaywgc2l6ZV90IGNvdW50LCBjb25zdCBHTGVu
dW0gKmF0dGFjaG1lbnRzKTsKKyAgICBhbmdsZTo6UmVzdWx0IGludmFsaWRhdGVJbXBsKENvbnRl
eHRWayAqY29udGV4dFZrLCBzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMp
OworICAgIC8vIFJlbGVhc2UgYWxsIEZyYW1lYnVmZmVyVmsgb2JqZWN0cyBpbiB0aGUgY2FjaGUg
YW5kIGNsZWFyIGNhY2hlCisgICAgdm9pZCBjbGVhckNhY2hlKENvbnRleHRWayAqY29udGV4dFZr
KTsKKyAgICB2b2lkIHVwZGF0ZURlcHRoU3RlbmNpbEF0dGFjaG1lbnRTZXJpYWwoQ29udGV4dFZr
ICpjb250ZXh0VmspOwogCiAgICAgV2luZG93U3VyZmFjZVZrICptQmFja2J1ZmZlcjsKIAogICAg
IHZrOjpSZW5kZXJQYXNzRGVzYyBtUmVuZGVyUGFzc0Rlc2M7Ci0gICAgdms6OkZyYW1lYnVmZmVy
SGVscGVyIG1GcmFtZWJ1ZmZlcjsKKyAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKm1GcmFtZWJ1
ZmZlcjsKICAgICBSZW5kZXJUYXJnZXRDYWNoZTxSZW5kZXJUYXJnZXRWaz4gbVJlbmRlclRhcmdl
dENhY2hlOwogCiAgICAgLy8gVGhlc2UgdHdvIHZhcmlhYmxlcyBhcmUgdXNlZCB0byBxdWlja2x5
IGNvbXB1dGUgaWYgd2UgbmVlZCB0byBkbyBhIG1hc2tlZCBjbGVhci4gSWYgYSBjb2xvcgpAQCAt
MTk5LDYgKzE4MywxMCBAQCBjbGFzcyBGcmFtZWJ1ZmZlclZrIDogcHVibGljIEZyYW1lYnVmZmVy
SW1wbAogICAgIC8vIHRoZSBmcmFtZWJ1ZmZlciBkb2VzIG5vdCwgd2UgbmVlZCB0byBtYXNrIG91
dCB0aGUgYWxwaGEgY2hhbm5lbC4gVGhpcyBEcmF3QnVmZmVyTWFzayB3aWxsCiAgICAgLy8gY29u
dGFpbiB0aGUgbWFzayB0byBhcHBseSB0byB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIGRyYXdpbmcu
CiAgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIG1FbXVsYXRlZEFscGhhQXR0YWNobWVudE1hc2s7CisK
KyAgICB2azo6RnJhbWVidWZmZXJEZXNjIG1DdXJyZW50RnJhbWVidWZmZXJEZXNjOworICAgIHN0
ZDo6dW5vcmRlcmVkX21hcDx2azo6RnJhbWVidWZmZXJEZXNjLCB2azo6RnJhbWVidWZmZXJIZWxw
ZXI+IG1GcmFtZWJ1ZmZlckNhY2hlOworICAgIGJvb2wgbVN1cHBvcnREZXB0aFN0ZW5jaWxGZWVk
YmFja0xvb3BzOwogfTsKIH0gIC8vIG5hbWVzcGFjZSByeAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFw
cGVyVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9HbHNsYW5nV3JhcHBlclZrLmNwcAppbmRleCA5YmM5M2RkMjRmZjA0ZDFmODkzMDll
NmQ2ODdkZDM0ODY0NTlkZmRhLi4yZTMyYzI2ZjNiMjA0ODI4YmU1OTRhYjU1YjAzMDMwMDg2NTU4
MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXJWay5jcHAK
QEAgLTIxLDQzICsyMSw3NiBAQCBhbmdsZTo6UmVzdWx0IEVycm9ySGFuZGxlcih2azo6Q29udGV4
dCAqY29udGV4dCwgR2xzbGFuZ0Vycm9yKQogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpTdG9w
OwogfQogCi1HbHNsYW5nU291cmNlT3B0aW9ucyBDcmVhdGVTb3VyY2VPcHRpb25zKGNvbnN0IGFu
Z2xlOjpGZWF0dXJlc1ZrICZmZWF0dXJlcykKK30gIC8vIG5hbWVzcGFjZQorCisvLyBzdGF0aWMK
K0dsc2xhbmdTb3VyY2VPcHRpb25zIEdsc2xhbmdXcmFwcGVyVms6OkNyZWF0ZVNvdXJjZU9wdGlv
bnMoY29uc3QgYW5nbGU6OkZlYXR1cmVzVmsgJmZlYXR1cmVzKQogewogICAgIEdsc2xhbmdTb3Vy
Y2VPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy51bmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JT
ZXRJbmRleCA9IGtVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleDsKLSAgICBvcHRpb25z
LnRleHR1cmVEZXNjcmlwdG9yU2V0SW5kZXggICAgICAgID0ga1RleHR1cmVEZXNjcmlwdG9yU2V0
SW5kZXg7Ci0gICAgb3B0aW9ucy5zaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleCA9IGtT
aGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleDsKLSAgICBvcHRpb25zLmRyaXZlclVuaWZv
cm1zRGVzY3JpcHRvclNldEluZGV4ID0ga0RyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4
OwotICAgIG9wdGlvbnMueGZiQmluZGluZ0luZGV4U3RhcnQgICAgICAgICAgICAgPSBrWGZiQmlu
ZGluZ0luZGV4U3RhcnQ7Ci0gICAgb3B0aW9ucy51c2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMg
ICAgICA9IGZlYXR1cmVzLmZvcmNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzLmVuYWJsZWQ7CisK
KyAgICBvcHRpb25zLnVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycyA9IGZlYXR1cmVzLmZvcmNl
T2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzLmVuYWJsZWQ7CiAgICAgb3B0aW9ucy5zdXBwb3J0c1Ry
YW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uID0KICAgICAgICAgZmVhdHVyZXMuc3VwcG9ydHNUcmFu
c2Zvcm1GZWVkYmFja0V4dGVuc2lvbi5lbmFibGVkOwogICAgIG9wdGlvbnMuZW11bGF0ZVRyYW5z
Zm9ybUZlZWRiYWNrID0gZmVhdHVyZXMuZW11bGF0ZVRyYW5zZm9ybUZlZWRiYWNrLmVuYWJsZWQ7
CiAgICAgb3B0aW9ucy5lbXVsYXRlQnJlc2VuaGFtTGluZXMgICAgPSBmZWF0dXJlcy5iYXNpY0dM
TGluZVJhc3Rlcml6YXRpb24uZW5hYmxlZDsKKwogICAgIHJldHVybiBvcHRpb25zOwogfQotfSAg
Ly8gbmFtZXNwYWNlCisKKy8vIHN0YXRpYwordm9pZCBHbHNsYW5nV3JhcHBlclZrOjpSZXNldEds
c2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbygKKyAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUlu
Zm8gKmdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbykKK3sKKyAgICBnbHNsYW5nUHJvZ3JhbUlu
dGVyZmFjZUluZm8tPnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4ID0KKyAgICAgICAg
a1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4OworICAgIGdsc2xhbmdQcm9ncmFtSW50
ZXJmYWNlSW5mby0+Y3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXggPSAwOworICAgIGdsc2xhbmdQ
cm9ncmFtSW50ZXJmYWNlSW5mby0+dGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleCAgPSBrVGV4dHVy
ZURlc2NyaXB0b3JTZXRJbmRleDsKKyAgICBnbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8tPmN1
cnJlbnRUZXh0dXJlQmluZGluZ0luZGV4ID0gMDsKKyAgICBnbHNsYW5nUHJvZ3JhbUludGVyZmFj
ZUluZm8tPnNoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4ID0KKyAgICAgICAga1NoYWRl
clJlc291cmNlRGVzY3JpcHRvclNldEluZGV4OworICAgIGdsc2xhbmdQcm9ncmFtSW50ZXJmYWNl
SW5mby0+Y3VycmVudFNoYWRlclJlc291cmNlQmluZGluZ0luZGV4ID0gMDsKKyAgICBnbHNsYW5n
UHJvZ3JhbUludGVyZmFjZUluZm8tPmRyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4ID0K
KyAgICAgICAga0RyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4OworCisgICAgZ2xzbGFu
Z1Byb2dyYW1JbnRlcmZhY2VJbmZvLT5sb2NhdGlvbnNVc2VkRm9yWGZiRXh0ZW5zaW9uID0gMDsK
K30KIAogLy8gc3RhdGljCiB2b2lkIEdsc2xhbmdXcmFwcGVyVms6OkdldFNoYWRlclNvdXJjZShj
b25zdCBhbmdsZTo6RmVhdHVyZXNWayAmZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxp
bmtlZFJlc291cmNlcyAmcmVzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8
c3RkOjpzdHJpbmc+ICpzaGFkZXJTb3VyY2VzT3V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUlu
Zm9NYXBPdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJN
YXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsKLSAgICBH
bHNsYW5nR2V0U2hhZGVyU291cmNlKENyZWF0ZVNvdXJjZU9wdGlvbnMoZmVhdHVyZXMpLCBwcm9n
cmFtU3RhdGUsIHJlc291cmNlcywgc2hhZGVyU291cmNlc091dCwKKyAgICBHbHNsYW5nU291cmNl
T3B0aW9ucyBvcHRpb25zID0gQ3JlYXRlU291cmNlT3B0aW9ucyhmZWF0dXJlcyk7CisgICAgR2xz
bGFuZ0dldFNoYWRlclNvdXJjZShvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHJlc291cmNlcywgcHJv
Z3JhbUludGVyZmFjZUluZm8sIHNoYWRlclNvdXJjZXNPdXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZUluZm9NYXBPdXQpOwogfQogCiAvLyBzdGF0aWMKLWFuZ2xlOjpSZXN1
bHQgR2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyQ29kZSh2azo6Q29udGV4dCAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
Q2FwcyAmZ2xDYXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJTb3VyY2VzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlcklu
dGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8
dWludDMyX3Q+PiAqc2hhZGVyQ29kZU91dCkKK2FuZ2xlOjpSZXN1bHQgR2xzbGFuZ1dyYXBwZXJW
azo6R2V0U2hhZGVyQ29kZSgKKyAgICB2azo6Q29udGV4dCAqY29udGV4dCwKKyAgICBjb25zdCBn
bDo6Q2FwcyAmZ2xDYXBzLAorICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZz
aGFkZXJTb3VyY2VzLAorICAgIGNvbnN0IFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01h
cCAmdmFyaWFibGVJbmZvTWFwLAorICAgIGdsOjpTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8dWludDMy
X3Q+PiAqc2hhZGVyQ29kZU91dCkKIHsKICAgICByZXR1cm4gR2xzbGFuZ0dldFNoYWRlclNwaXJ2
Q29kZSgKICAgICAgICAgW2NvbnRleHRdKEdsc2xhbmdFcnJvciBlcnJvcikgeyByZXR1cm4gRXJy
b3JIYW5kbGVyKGNvbnRleHQsIGVycm9yKTsgfSwgZ2xDYXBzLAogICAgICAgICBzaGFkZXJTb3Vy
Y2VzLCB2YXJpYWJsZUluZm9NYXAsIHNoYWRlckNvZGVPdXQpOwogfQorCisvLyBzdGF0aWMKK2Fu
Z2xlOjpSZXN1bHQgR2xzbGFuZ1dyYXBwZXJWazo6VHJhbnNmb3JtU3BpclYoCisgICAgdms6OkNv
bnRleHQgKmNvbnRleHQsCisgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAg
ICBjb25zdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwK
KyAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gJmluaXRpYWxTcGlydkJsb2IsCisgICAgc3RkOjp2
ZWN0b3I8dWludDMyX3Q+ICpzaGFkZXJDb2RlT3V0KQoreworICAgIHJldHVybiBUcmFuc2Zvcm1T
cGlydkNvZGUoCisgICAgICAgIFtjb250ZXh0XShHbHNsYW5nRXJyb3IgZXJyb3IpIHsgcmV0dXJu
IEVycm9ySGFuZGxlcihjb250ZXh0LCBlcnJvcik7IH0sIHNoYWRlclR5cGUsCisgICAgICAgIHZh
cmlhYmxlSW5mb01hcCwgaW5pdGlhbFNwaXJ2QmxvYiwgc2hhZGVyQ29kZU91dCk7Cit9CiB9ICAv
LyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXJWay5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBlclZr
LmgKaW5kZXggZmE0ODY2Y2ZhMTk0Yzk5MGMwMjMwZjY0N2MzMDEzZjZiMDE4Nzk0NC4uYzViMzNj
MjFiNzZkN2JlOWE1M2M1Nzg4NTY2MjUyOWFiMjFiOGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBl
clZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9HbHNsYW5nV3JhcHBlclZrLmgKQEAgLTI1LDE3ICsyNSwyOSBAQCBuYW1lc3BhY2Ug
cngKIGNsYXNzIEdsc2xhbmdXcmFwcGVyVmsKIHsKICAgcHVibGljOgorICAgIHN0YXRpYyBHbHNs
YW5nU291cmNlT3B0aW9ucyBDcmVhdGVTb3VyY2VPcHRpb25zKGNvbnN0IGFuZ2xlOjpGZWF0dXJl
c1ZrICZmZWF0dXJlcyk7CisKKyAgICBzdGF0aWMgdm9pZCBSZXNldEdsc2xhbmdQcm9ncmFtSW50
ZXJmYWNlSW5mbygKKyAgICAgICAgR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvICpnbHNsYW5n
UHJvZ3JhbUludGVyZmFjZUluZm8pOworCiAgICAgc3RhdGljIHZvaWQgR2V0U2hhZGVyU291cmNl
KGNvbnN0IGFuZ2xlOjpGZWF0dXJlc1ZrICZmZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNl
cyAmcmVzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJv
Z3JhbUludGVyZmFjZUluZm8gKnByb2dyYW1JbnRlcmZhY2VJbmZvLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiAqc2hhZGVyU291cmNl
c091dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFy
aWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5m
b01hcE91dCk7CiAKICAgICBzdGF0aWMgYW5nbGU6OlJlc3VsdCBHZXRTaGFkZXJDb2RlKHZrOjpD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkNhcHMgJmdsQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJTb3VyY2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVySW50ZXJm
YWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9N
YXAgJnZhcmlhYmxlSW5mb01hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8dWludDMyX3Q+PiAqc2hhZGVyQ29kZXNPdXQp
OworCisgICAgc3RhdGljIGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtU3BpclYodms6OkNvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxl
SW5mb01hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZl
Y3Rvcjx1aW50MzJfdD4gJmluaXRpYWxTcGlydkJsb2IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ICpzaGFkZXJDb2RlT3V0KTsK
IH07CiB9ICAvLyBuYW1lc3BhY2UgcngKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9NZW1vcnlPYmplY3RWay5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL01lbW9y
eU9iamVjdFZrLmNwcAppbmRleCA5NmNhODM1NWZjMDg3ODIxZTJjNjliMDk1MTVjZWE0ZjllYjU3
MzM2Li45NDhlMDkyOGE0MGZkOTM1NWQyYmRiYTBjYzRlMjE0M2U1NDcxY2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL01l
bW9yeU9iamVjdFZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL01lbW9yeU9iamVjdFZrLmNwcApAQCAtNywxMiArNywxMiBAQAog
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL01lbW9yeU9iamVjdFZrLmgiCiAK
LSNpbmNsdWRlICJ2b2xrLmgiCi0KICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0NvbnRleHRWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJl
clZrLmgiCisjaW5jbHVkZSAidm9say5oIgorI2luY2x1ZGUgInZ1bGthbi92dWxrYW5fZnVjaHNp
YV9leHQuaCIKIAogI2lmICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCiAjICAgIGlu
Y2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMjAsMTQgKzIwLDE3IEBACiAjICAgIGluY2x1ZGUgPGlvLmg+
CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fRlVDSFNJQSkKKyMgICAgaW5j
bHVkZSA8emlyY29uL3N0YXR1cy5oPgorIyAgICBpbmNsdWRlIDx6aXJjb24vc3lzY2FsbHMuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgcngKIHsKIAogbmFtZXNwYWNlCiB7CiAKLWNvbnN0ZXhwciBp
bnQga0ludmFsaWRGZCA9IC0xOwotCiAjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dT
KQogaW50IGNsb3NlKGludCBmZCkKIHsKQEAgLTM1LDkgKzM4LDQ1IEBAIGludCBjbG9zZShpbnQg
ZmQpCiB9CiAjZW5kaWYKIAordm9pZCBDbG9zZVppcmNvblZtbyh6eF9oYW5kbGVfdCBoYW5kbGUp
Cit7CisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9GVUNIU0lBKQorICAgIHp4X2hhbmRsZV9j
bG9zZShoYW5kbGUpOworI2Vsc2UKKyAgICBVTlJFQUNIQUJMRSgpOworI2VuZGlmCit9CisKK2Fu
Z2xlOjpSZXN1bHQgRHVwbGljYXRlWmlyY29uVm1vKENvbnRleHRWayAqY29udGV4dFZrLCB6eF9o
YW5kbGVfdCBoYW5kbGUsIHp4X2hhbmRsZV90ICpkdXBsaWNhdGUpCit7CisjaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9GVUNIU0lBKQorICAgIHp4X3N0YXR1c190IHN0YXR1cyA9IHp4X2hhbmRs
ZV9kdXBsaWNhdGUoaGFuZGxlLCBaWF9SSUdIVF9TQU1FX1JJR0hUUywgZHVwbGljYXRlKTsKKyAg
ICBBTkdMRV9WS19DSEVDSyhjb250ZXh0VmssIHN0YXR1cyA9PSBaWF9PSywgVktfRVJST1JfSU5W
QUxJRF9FWFRFUk5BTF9IQU5ETEUpOworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKKyNlbHNlCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
U3RvcDsKKyNlbmRpZgorfQorCitWa0V4dGVybmFsTWVtb3J5SGFuZGxlVHlwZUZsYWdCaXRzIFRv
VnVsa2FuSGFuZGxlVHlwZShnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlKQoreworICAgIHN3aXRj
aCAoaGFuZGxlVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgZ2w6OkhhbmRsZVR5cGU6Ok9wYXF1
ZUZkOgorICAgICAgICAgICAgcmV0dXJuIFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9P
UEFRVUVfRkRfQklUOworICAgICAgICBjYXNlIGdsOjpIYW5kbGVUeXBlOjpaaXJjb25WbW86Cisg
ICAgICAgICAgICByZXR1cm4gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX1RFTVBfWklS
Q09OX1ZNT19CSVRfRlVDSFNJQTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIE5v
dCBhIG1lbW9yeSBoYW5kbGUgdHlwZS4KKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX0ZMQUdfQklUU19N
QVhfRU5VTTsKKyAgICB9Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCi1NZW1vcnlPYmplY3RWazo6
TWVtb3J5T2JqZWN0VmsoKSA6IG1TaXplKDApLCBtRmQoa0ludmFsaWRGZCkge30KK01lbW9yeU9i
amVjdFZrOjpNZW1vcnlPYmplY3RWaygpIHt9CiAKIE1lbW9yeU9iamVjdFZrOjp+TWVtb3J5T2Jq
ZWN0VmsoKSA9IGRlZmF1bHQ7CiAKQEAgLTQ4LDYgKzg3LDE4IEBAIHZvaWQgTWVtb3J5T2JqZWN0
Vms6Om9uRGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICAgICAgY2xvc2Uo
bUZkKTsKICAgICAgICAgbUZkID0ga0ludmFsaWRGZDsKICAgICB9CisKKyAgICBpZiAobVppcmNv
bkhhbmRsZSAhPSBaWF9IQU5ETEVfSU5WQUxJRCkKKyAgICB7CisgICAgICAgIENsb3NlWmlyY29u
Vm1vKG1aaXJjb25IYW5kbGUpOworICAgICAgICBtWmlyY29uSGFuZGxlID0gWlhfSEFORExFX0lO
VkFMSUQ7CisgICAgfQorfQorCithbmdsZTo6UmVzdWx0IE1lbW9yeU9iamVjdFZrOjpzZXREZWRp
Y2F0ZWRNZW1vcnkoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGJvb2wgZGVkaWNhdGVkTWVt
b3J5KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
Q29udGludWU7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmltcG9ydEZkKGds
OjpDb250ZXh0ICpjb250ZXh0LApAQCAtNTUsMTAgKzEwNiwzMCBAQCBhbmdsZTo6UmVzdWx0IE1l
bW9yeU9iamVjdFZrOjppbXBvcnRGZChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmZCkKIHsKKyAgICBD
b250ZXh0VmsgKmNvbnRleHRWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOworCiAgICAgc3dpdGNo
IChoYW5kbGVUeXBlKQogICAgIHsKICAgICAgICAgY2FzZSBnbDo6SGFuZGxlVHlwZTo6T3BhcXVl
RmQ6Ci0gICAgICAgICAgICByZXR1cm4gaW1wb3J0T3BhcXVlRmQoY29udGV4dCwgc2l6ZSwgZmQp
OworICAgICAgICAgICAgcmV0dXJuIGltcG9ydE9wYXF1ZUZkKGNvbnRleHRWaywgc2l6ZSwgZmQp
OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CisgICAgfQorfQorCithbmdsZTo6UmVz
dWx0IE1lbW9yeU9iamVjdFZrOjppbXBvcnRaaXJjb25IYW5kbGUoZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpCit7CisgICAgQ29udGV4dFZr
ICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsKKworICAgIHN3aXRjaCAoaGFuZGxl
VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgZ2w6OkhhbmRsZVR5cGU6OlppcmNvblZtbzoKKyAg
ICAgICAgICAgIHJldHVybiBpbXBvcnRaaXJjb25WbW8oY29udGV4dFZrLCBzaXplLCBoYW5kbGUp
OwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtNjYs
MTUgKzEzNywyOSBAQCBhbmdsZTo6UmVzdWx0IE1lbW9yeU9iamVjdFZrOjppbXBvcnRGZChnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICB9CiB9CiAKLWFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0
Vms6OmltcG9ydE9wYXF1ZUZkKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQ2NCBzaXplLCBH
TGludCBmZCkKK2FuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmltcG9ydE9wYXF1ZUZkKENv
bnRleHRWayAqY29udGV4dFZrLCBHTHVpbnQ2NCBzaXplLCBHTGludCBmZCkKIHsKKyAgICBBU1NF
UlQobUhhbmRsZVR5cGUgPT0gZ2w6OkhhbmRsZVR5cGU6OkludmFsaWRFbnVtKTsKICAgICBBU1NF
UlQobUZkID09IGtJbnZhbGlkRmQpOwotICAgIG1GZCAgID0gZmQ7Ci0gICAgbVNpemUgPSBzaXpl
OworICAgIEFTU0VSVChmZCAhPSBrSW52YWxpZEZkKTsKKyAgICBtSGFuZGxlVHlwZSA9IGdsOjpI
YW5kbGVUeXBlOjpPcGFxdWVGZDsKKyAgICBtRmQgICAgICAgICA9IGZkOworICAgIG1TaXplICAg
ICAgID0gc2l6ZTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK2Fu
Z2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmltcG9ydFppcmNvblZtbyhDb250ZXh0VmsgKmNv
bnRleHRWaywgR0x1aW50NjQgc2l6ZSwgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBBU1NFUlQobUhh
bmRsZVR5cGUgPT0gZ2w6OkhhbmRsZVR5cGU6OkludmFsaWRFbnVtKTsKKyAgICBBU1NFUlQobVpp
cmNvbkhhbmRsZSA9PSBaWF9IQU5ETEVfSU5WQUxJRCk7CisgICAgQVNTRVJUKGhhbmRsZSAhPSBa
WF9IQU5ETEVfSU5WQUxJRCk7CisgICAgbUhhbmRsZVR5cGUgICA9IGdsOjpIYW5kbGVUeXBlOjpa
aXJjb25WbW87CisgICAgbVppcmNvbkhhbmRsZSA9IGhhbmRsZTsKKyAgICBtU2l6ZSAgICAgICAg
ID0gc2l6ZTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLWFuZ2xl
OjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmNyZWF0ZUltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAorYW5nbGU6OlJlc3VsdCBNZW1vcnlPYmplY3RWazo6Y3JlYXRlSW1hZ2UoQ29udGV4
dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZVR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC04Miw3ICsxNjcsNiBAQCBhbmds
ZTo6UmVzdWx0IE1lbW9yeU9iamVjdFZrOjpjcmVhdGVJbWFnZShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dDY0IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjpJbWFnZUhlbHBlciAqaW1hZ2UpCiB7Ci0gICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6
R2V0SW1wbChjb250ZXh0KTsKICAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRleHRWay0+
Z2V0UmVuZGVyZXIoKTsKIAogICAgIGNvbnN0IHZrOjpGb3JtYXQgJnZrRm9ybWF0ID0gcmVuZGVy
ZXItPmdldEZvcm1hdChpbnRlcm5hbEZvcm1hdCk7CkBAIC05NCw3ICsxNzgsNyBAQCBhbmdsZTo6
UmVzdWx0IE1lbW9yeU9iamVjdFZrOjpjcmVhdGVJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKIAogICAgIFZrRXh0ZXJuYWxNZW1vcnlJbWFnZUNyZWF0ZUluZm8gZXh0ZXJuYWxNZW1v
cnlJbWFnZUNyZWF0ZUluZm8gPSB7fTsKICAgICBleHRlcm5hbE1lbW9yeUltYWdlQ3JlYXRlSW5m
by5zVHlwZSAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0VYVEVSTkFMX01FTU9SWV9JTUFHRV9D
UkVBVEVfSU5GTzsKLSAgICBleHRlcm5hbE1lbW9yeUltYWdlQ3JlYXRlSW5mby5oYW5kbGVUeXBl
cyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUOworICAgIGV4
dGVybmFsTWVtb3J5SW1hZ2VDcmVhdGVJbmZvLmhhbmRsZVR5cGVzID0gVG9WdWxrYW5IYW5kbGVU
eXBlKG1IYW5kbGVUeXBlKTsKIAogICAgIFZrRXh0ZW50M0QgdmtFeHRlbnRzOwogICAgIHVpbnQz
Ml90IGxheWVyQ291bnQ7CkBAIC0xMDgsMTEgKzE5MiwzMCBAQCBhbmdsZTo6UmVzdWx0IE1lbW9y
eU9iamVjdFZrOjpjcmVhdGVJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBW
a01lbW9yeVJlcXVpcmVtZW50cyBleHRlcm5hbE1lbW9yeVJlcXVpcmVtZW50czsKICAgICBpbWFn
ZS0+Z2V0SW1hZ2UoKS5nZXRNZW1vcnlSZXF1aXJlbWVudHMocmVuZGVyZXItPmdldERldmljZSgp
LCAmZXh0ZXJuYWxNZW1vcnlSZXF1aXJlbWVudHMpOwogCi0gICAgQVNTRVJUKG1GZCAhPSAtMSk7
Ci0gICAgVmtJbXBvcnRNZW1vcnlGZEluZm9LSFIgaW1wb3J0TWVtb3J5RmRJbmZvID0ge307Ci0g
ICAgaW1wb3J0TWVtb3J5RmRJbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgID0gVktfU1RSVUNU
VVJFX1RZUEVfSU1QT1JUX01FTU9SWV9GRF9JTkZPX0tIUjsKLSAgICBpbXBvcnRNZW1vcnlGZElu
Zm8uaGFuZGxlVHlwZSAgICAgICAgICAgICAgPSBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZ
UEVfT1BBUVVFX0ZEX0JJVDsKLSAgICBpbXBvcnRNZW1vcnlGZEluZm8uZmQgICAgICAgICAgICAg
ICAgICAgICAgPSBkdXAobUZkKTsKKyAgICB2b2lkICppbXBvcnRNZW1vcnlJbmZvICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIFZrSW1w
b3J0TWVtb3J5RmRJbmZvS0hSIGltcG9ydE1lbW9yeUZkSW5mbyAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHt9OworICAgIFZrSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlSW5mb0ZVQ0hTSUEgaW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlSW5mbyA9IHt9OworICAgIHN3aXRjaCAobUhhbmRsZVR5cGUp
CisgICAgeworICAgICAgICBjYXNlIGdsOjpIYW5kbGVUeXBlOjpPcGFxdWVGZDoKKyAgICAgICAg
ICAgIEFTU0VSVChtRmQgIT0ga0ludmFsaWRGZCk7CisgICAgICAgICAgICBpbXBvcnRNZW1vcnlG
ZEluZm8uc1R5cGUgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNUE9SVF9NRU1PUllfRkRfSU5G
T19LSFI7CisgICAgICAgICAgICBpbXBvcnRNZW1vcnlGZEluZm8uaGFuZGxlVHlwZSA9IFRvVnVs
a2FuSGFuZGxlVHlwZShtSGFuZGxlVHlwZSk7CisgICAgICAgICAgICBpbXBvcnRNZW1vcnlGZElu
Zm8uZmQgICAgICAgICA9IGR1cChtRmQpOworICAgICAgICAgICAgaW1wb3J0TWVtb3J5SW5mbyAg
ICAgICAgICAgICAgPSAmaW1wb3J0TWVtb3J5RmRJbmZvOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgZ2w6OkhhbmRsZVR5cGU6OlppcmNvblZtbzoKKyAgICAgICAgICAgIEFTU0VS
VChtWmlyY29uSGFuZGxlICE9IFpYX0hBTkRMRV9JTlZBTElEKTsKKyAgICAgICAgICAgIGltcG9y
dE1lbW9yeVppcmNvbkhhbmRsZUluZm8uc1R5cGUgPQorICAgICAgICAgICAgICAgIFZLX1NUUlVD
VFVSRV9UWVBFX1RFTVBfSU1QT1JUX01FTU9SWV9aSVJDT05fSEFORExFX0lORk9fRlVDSFNJQTsK
KyAgICAgICAgICAgIGltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUluZm8uaGFuZGxlVHlwZSA9IFRv
VnVsa2FuSGFuZGxlVHlwZShtSGFuZGxlVHlwZSk7CisgICAgICAgICAgICBBTkdMRV9UUlkoCisg
ICAgICAgICAgICAgICAgRHVwbGljYXRlWmlyY29uVm1vKGNvbnRleHRWaywgbVppcmNvbkhhbmRs
ZSwgJmltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUluZm8uaGFuZGxlKSk7CisgICAgICAgICAgICBp
bXBvcnRNZW1vcnlJbmZvID0gJmltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUluZm87CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgfQogCiAgICAgLy8gVE9ETyhqbWFkaWxsLCBzcGFuZyk6IE1lbW9yeSBzdWItYWxsb2Nh
dGlvbi4gaHR0cDovL2FuZ2xlYnVnLmNvbS8yMTYyCiAgICAgQVNTRVJUKG9mZnNldCA9PSAwKTsK
QEAgLTEyMCw3ICsyMjMsNyBAQCBhbmdsZTo6UmVzdWx0IE1lbW9yeU9iamVjdFZrOjpjcmVhdGVJ
bWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIAogICAgIFZrTWVtb3J5UHJvcGVydHlG
bGFncyBmbGFncyA9IDA7CiAgICAgQU5HTEVfVFJZKGltYWdlLT5pbml0RXh0ZXJuYWxNZW1vcnko
Y29udGV4dFZrLCByZW5kZXJlci0+Z2V0TWVtb3J5UHJvcGVydGllcygpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsTWVtb3J5UmVxdWlyZW1lbnRzLCAm
aW1wb3J0TWVtb3J5RmRJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4dGVybmFsTWVtb3J5UmVxdWlyZW1lbnRzLCBpbXBvcnRNZW1vcnlJbmZvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX1FVRVVFX0ZBTUlMWV9FWFRFUk5B
TCwgZmxhZ3MpKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vTWVtb3J5T2JqZWN0VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vTWVtb3J5T2JqZWN0VmsuaAppbmRleCA5OTYzZjNkNzgyMDRlZmNi
ZjhiODQzODJhZmY5YWFmZGYxMTI3NDM0Li5iNTU3ZmJmMDUzY2VlNjE5NTgyMTZhNzQ2MDU5ZWNi
MGY4YjBiYzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL01lbW9yeU9iamVjdFZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9NZW1vcnlPYmplY3RWay5oCkBA
IC0yMywxMiArMjMsMTkgQEAgY2xhc3MgTWVtb3J5T2JqZWN0VmsgOiBwdWJsaWMgTWVtb3J5T2Jq
ZWN0SW1wbAogCiAgICAgdm9pZCBvbkRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQp
IG92ZXJyaWRlOwogCisgICAgYW5nbGU6OlJlc3VsdCBzZXREZWRpY2F0ZWRNZW1vcnkoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsIGJvb2wgZGVkaWNhdGVkTWVtb3J5KSBvdmVycmlkZTsKKwog
ICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0RmQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGZkKSBvdmVycmlkZTsKIAotICAgIGFuZ2xlOjpSZXN1bHQgY3JlYXRlSW1hZ2Uo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRaaXJj
b25IYW5kbGUoZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpIG92ZXJyaWRlOworCisgICAgYW5nbGU6OlJl
c3VsdCBjcmVhdGVJbWFnZShDb250ZXh0VmsgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6VGV4dHVyZVR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCkBAIC0zNywxMCArNDQsMTUgQEAgY2xhc3MgTWVtb3J5T2JqZWN0
VmsgOiBwdWJsaWMgTWVtb3J5T2JqZWN0SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdms6OkltYWdlSGVscGVyICppbWFnZSk7CiAKICAgcHJpdmF0ZToKLSAgICBhbmdsZTo6UmVz
dWx0IGltcG9ydE9wYXF1ZUZkKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQ2NCBzaXplLCBH
TGludCBmZCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQga0ludmFsaWRGZCA9IC0xOworICAg
IGFuZ2xlOjpSZXN1bHQgaW1wb3J0T3BhcXVlRmQoQ29udGV4dFZrICpjb250ZXh0VmssIEdMdWlu
dDY0IHNpemUsIEdMaW50IGZkKTsKKyAgICBhbmdsZTo6UmVzdWx0IGltcG9ydFppcmNvblZtbyhD
b250ZXh0VmsgKmNvbnRleHRWaywgR0x1aW50NjQgc2l6ZSwgR0x1aW50IGhhbmRsZSk7CisKKyAg
ICBHTHVpbnQ2NCBtU2l6ZSAgICAgICAgICAgICA9IDA7CisgICAgZ2w6OkhhbmRsZVR5cGUgbUhh
bmRsZVR5cGUgPSBnbDo6SGFuZGxlVHlwZTo6SW52YWxpZEVudW07CisgICAgaW50IG1GZCAgICAg
ICAgICAgICAgICAgICAgPSBrSW52YWxpZEZkOwogCi0gICAgR0x1aW50NjQgbVNpemU7Ci0gICAg
aW50IG1GZDsKKyAgICB6eF9oYW5kbGVfdCBtWmlyY29uSGFuZGxlID0gWlhfSEFORExFX0lOVkFM
SUQ7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vT1dORVJTIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9PV05FUlMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWJiYmVhNmZhZjFmOWJjY2M3YzE3YTgyYjA4NDFmNTcwYzIzNGEzZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vT1dORVJTCkBAIC0wLDAgKzEsMiBAQAoram1hZGlsbEBjaHJvbWl1bS5vcmcKK3N5b3Vz
c2VmaUBjaHJvbWl1bS5vcmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vT3ZlcmxheVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vT3ZlcmxheVZrLmNwcAppbmRl
eCA4MDc1MzMxNzVhMzA4M2Q4ZjA2MjU2ODhkZTkyMDZmMmMyYWQ4NmJhLi4xYzgyZTVmNjg4MzMy
ZWQwNTExNzVjMmYzNGRkMjQ0ZTRiYmUzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL092ZXJsYXlWay5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9PdmVy
bGF5VmsuY3BwCkBAIC0xMjEsMTIgKzEyMSwxMCBAQCBhbmdsZTo6UmVzdWx0IE92ZXJsYXlWazo6
Y3JlYXRlRm9udChDb250ZXh0VmsgKmNvbnRleHRWaykKIAogICAgIC8vIENvcHkgZm9udCBkYXRh
IGZyb20gc3RhZ2luZyBidWZmZXIuCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmZvbnREYXRhVXBs
b2FkOwotICAgIEFOR0xFX1RSWShtRm9udEltYWdlLnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywg
JmZvbnREYXRhVXBsb2FkKSk7Ci0KLSAgICBmb250RGF0YUJ1ZmZlci5nZXQoKS5vblJlYWQoY29u
dGV4dFZrLCAmbUZvbnRJbWFnZSwgVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklUKTsKLQotICAg
IG1Gb250SW1hZ2UuY2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJ
bWFnZUxheW91dDo6VHJhbnNmZXJEc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9u
dERhdGFVcGxvYWQpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19B
Q0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsICZmb250RGF0YUJ1ZmZlci5nZXQoKSkpOworICAgIEFO
R0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklU
LCB2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbUZvbnRJbWFnZSkpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVu
ZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZmb250RGF0YVVwbG9hZCkpOwogCiAgICAg
VmtCdWZmZXJJbWFnZUNvcHkgY29weSAgICAgICAgICAgPSB7fTsKICAgICBjb3B5LmJ1ZmZlclJv
d0xlbmd0aCAgICAgICAgICAgICA9IGdsOjpvdmVybGF5OjprRm9udEltYWdlV2lkdGg7CkBAIC0x
NDEsOSArMTM5LDYgQEAgYW5nbGU6OlJlc3VsdCBPdmVybGF5Vms6OmNyZWF0ZUZvbnQoQ29udGV4
dFZrICpjb250ZXh0VmspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1G
b250SW1hZ2UuZ2V0SW1hZ2UoKSwgVktfSU1BR0VfTEFZT1VUX1RSQU5TRkVSX0RTVF9PUFRJTUFM
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmY29weSk7CiAKLSAg
ICBtRm9udEltYWdlLmNoYW5nZUxheW91dChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6
SW1hZ2VMYXlvdXQ6OkNvbXB1dGVTaGFkZXJSZWFkT25seSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb250RGF0YVVwbG9hZCk7Ci0KICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1dGFibGVWay5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1FeGVjdXRh
YmxlVmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MzZhYjAwZjk3NzA5MjQ3ODQ1NzhiOGY5NDA0OTVjNDFj
ZjExZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1FeGVjdXRhYmxlVmsuY3BwCkBAIC0wLDAgKzEs
MTI2NyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIFByb2dyYW1FeGVjdXRhYmxlVmsuY3BwOiBDb2xsZWN0cyB0
aGUgaW5mb3JtYXRpb24gYW5kIGludGVyZmFjZXMgY29tbW9uIHRvIGJvdGggUHJvZ3JhbVZrcyBh
bmQKKy8vIFByb2dyYW1QaXBlbGluZVZrcyBpbiBvcmRlciB0byBleGVjdXRlL2RyYXcgd2l0aCBl
aXRoZXIuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1
dGFibGVWay5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2xzbGFuZ193cmFwcGVy
X3V0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyVmsuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaGVscGVycy5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a191dGlscy5oIgorCituYW1lc3BhY2UgcngKK3sKKwor
RGVmYXVsdFVuaWZvcm1CbG9jazo6RGVmYXVsdFVuaWZvcm1CbG9jaygpID0gZGVmYXVsdDsKKwor
RGVmYXVsdFVuaWZvcm1CbG9jazo6fkRlZmF1bHRVbmlmb3JtQmxvY2soKSA9IGRlZmF1bHQ7CisK
Ky8vIFNoYWRlckluZm8gaW1wbGVtZW50YXRpb24uCitTaGFkZXJJbmZvOjpTaGFkZXJJbmZvKCkg
e30KKworU2hhZGVySW5mbzo6flNoYWRlckluZm8oKSA9IGRlZmF1bHQ7CisKK2FuZ2xlOjpSZXN1
bHQgU2hhZGVySW5mbzo6aW5pdFNoYWRlcnMoQ29udGV4dFZrICpjb250ZXh0VmssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpz
dHJpbmc+ICZzaGFkZXJTb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5m
b01hcCkKK3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOworCisgICAgQU5HTEVfVFJZKEdsc2xhbmdX
cmFwcGVyVms6OkdldFNoYWRlckNvZGUoY29udGV4dFZrLCBjb250ZXh0VmstPmdldENhcHMoKSwg
c2hhZGVyU291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZUluZm9NYXAsICZtU3BpcnZCbG9icykpOworCisgICAgbUlzSW5pdGlhbGl6
ZWQgPSB0cnVlOworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwordm9p
ZCBTaGFkZXJJbmZvOjpyZWxlYXNlKENvbnRleHRWayAqY29udGV4dFZrKQoreworICAgIGZvciAo
U3BpcnZCbG9iICZzcGlydkJsb2IgOiBtU3BpcnZCbG9icykKKyAgICB7CisgICAgICAgIHNwaXJ2
QmxvYi5jbGVhcigpOworICAgIH0KKyAgICBtSXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCit2
b2lkIFNoYWRlckluZm86OmxvYWQoZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCit7Cisg
ICAgLy8gUmVhZCBpbiBzaGFkZXIgY29kZXMgZm9yIGFsbCBzaGFkZXIgdHlwZXMKKyAgICBmb3Ig
KGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkK
KyAgICB7CisgICAgICAgIFNwaXJ2QmxvYiAqc3BpcnZCbG9iID0gJm1TcGlydkJsb2JzW3NoYWRl
clR5cGVdOworCisgICAgICAgIC8vIFJlYWQgdGhlIFNQSVItVgorICAgICAgICBzdHJlYW0tPnJl
YWRJbnRWZWN0b3I8dWludDMyX3Q+KHNwaXJ2QmxvYik7CisgICAgfQorCisgICAgbUlzSW5pdGlh
bGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFNoYWRlckluZm86OnNhdmUoZ2w6OkJpbmFyeU91dHB1
dFN0cmVhbSAqc3RyZWFtKQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKworICAgIC8vIFdyaXRl
IG91dCBzaGFkZXIgY29kZXMgZm9yIGFsbCBzaGFkZXIgdHlwZXMKKyAgICBmb3IgKGNvbnN0IGds
OjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IFNwaXJ2QmxvYiAmc3BpcnZCbG9iID0gbVNwaXJ2QmxvYnNbc2hhZGVyVHlw
ZV07CisKKyAgICAgICAgLy8gV3JpdGUgdGhlIFNQSVItVgorICAgICAgICBzdHJlYW0tPndyaXRl
SW50VmVjdG9yKHNwaXJ2QmxvYik7CisgICAgfQorfQorCisvLyBQcm9ncmFtSW5mbyBpbXBsZW1l
bnRhdGlvbi4KK1Byb2dyYW1JbmZvOjpQcm9ncmFtSW5mbygpIHt9CisKK1Byb2dyYW1JbmZvOjp+
UHJvZ3JhbUluZm8oKSA9IGRlZmF1bHQ7CisKK2FuZ2xlOjpSZXN1bHQgUHJvZ3JhbUluZm86Omlu
aXRQcm9ncmFtKENvbnRleHRWayAqY29udGV4dFZrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU2hhZGVySW5mbyAmc2hhZGVySW5mbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlTGluZVJhc3RlckVtdWxhdGlv
bikKK3sKKyAgICBjb25zdCBnbDo6U2hhZGVyTWFwPFNwaXJ2QmxvYj4gJnNwaXJ2QmxvYnMgPSBz
aGFkZXJJbmZvLmdldFNwaXJ2QmxvYnMoKTsKKworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5
cGUgc2hhZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQorICAgIHsKKyAgICAgICAgY29u
c3QgU3BpcnZCbG9iICZzcGlydkJsb2IgPSBzcGlydkJsb2JzW3NoYWRlclR5cGVdOworCisgICAg
ICAgIGlmICghc3BpcnZCbG9iLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFOR0xF
X1RSWSh2azo6SW5pdFNoYWRlckFuZFNlcmlhbChjb250ZXh0VmssICZtU2hhZGVyc1tzaGFkZXJU
eXBlXS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGlydkJsb2IuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNwaXJ2QmxvYi5zaXplKCkgKiBzaXplb2YodWludDMyX3QpKSk7CisKKyAgICAg
ICAgICAgIG1Qcm9ncmFtSGVscGVyLnNldFNoYWRlcihzaGFkZXJUeXBlLCAmbVNoYWRlcnNbc2hh
ZGVyVHlwZV0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGVuYWJsZUxpbmVSYXN0ZXJF
bXVsYXRpb24pCisgICAgeworICAgICAgICBtUHJvZ3JhbUhlbHBlci5lbmFibGVTcGVjaWFsaXph
dGlvbkNvbnN0YW50KAorICAgICAgICAgICAgc2g6OnZrOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50
SWQ6OkxpbmVSYXN0ZXJFbXVsYXRpb24pOworICAgIH0KKworICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpDb250aW51ZTsKK30KKwordm9pZCBQcm9ncmFtSW5mbzo6cmVsZWFzZShDb250ZXh0Vmsg
KmNvbnRleHRWaykKK3sKKyAgICBtUHJvZ3JhbUhlbHBlci5yZWxlYXNlKGNvbnRleHRWayk7CisK
KyAgICBmb3IgKHZrOjpSZWZDb3VudGVkPHZrOjpTaGFkZXJBbmRTZXJpYWw+ICZzaGFkZXIgOiBt
U2hhZGVycykKKyAgICB7CisgICAgICAgIHNoYWRlci5nZXQoKS5kZXN0cm95KGNvbnRleHRWay0+
Z2V0RGV2aWNlKCkpOworICAgIH0KK30KKworUHJvZ3JhbUV4ZWN1dGFibGVWazo6UHJvZ3JhbUV4
ZWN1dGFibGVWaygpCisgICAgOiBtRW1wdHlEZXNjcmlwdG9yU2V0c3t9LCBtTnVtRGVmYXVsdFVu
aWZvcm1EZXNjcmlwdG9ycygwKSwgbUR5bmFtaWNCdWZmZXJPZmZzZXRze30KK3t9CisKK1Byb2dy
YW1FeGVjdXRhYmxlVms6On5Qcm9ncmFtRXhlY3V0YWJsZVZrKCkgPSBkZWZhdWx0OworCit2b2lk
IFByb2dyYW1FeGVjdXRhYmxlVms6OnJlc2V0KENvbnRleHRWayAqY29udGV4dFZrKQoreworICAg
IFJlbmRlcmVyVmsgKnJlbmRlcmVyID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpOworCisgICAg
Zm9yIChhdXRvICZkZXNjcmlwdG9yU2V0TGF5b3V0IDogbURlc2NyaXB0b3JTZXRMYXlvdXRzKQor
ICAgIHsKKyAgICAgICAgZGVzY3JpcHRvclNldExheW91dC5yZXNldCgpOworICAgIH0KKyAgICBt
UGlwZWxpbmVMYXlvdXQucmVzZXQoKTsKKworICAgIG1FbXB0eUJ1ZmZlci5yZWxlYXNlKHJlbmRl
cmVyKTsKKworICAgIG1EZXNjcmlwdG9yU2V0cy5jbGVhcigpOworICAgIG1FbXB0eURlc2NyaXB0
b3JTZXRzLmZpbGwoVktfTlVMTF9IQU5ETEUpOworICAgIG1OdW1EZWZhdWx0VW5pZm9ybURlc2Ny
aXB0b3JzID0gMDsKKworICAgIGZvciAodms6OlJlZkNvdW50ZWREZXNjcmlwdG9yUG9vbEJpbmRp
bmcgJmJpbmRpbmcgOiBtRGVzY3JpcHRvclBvb2xCaW5kaW5ncykKKyAgICB7CisgICAgICAgIGJp
bmRpbmcucmVzZXQoKTsKKyAgICB9CisKKyAgICBmb3IgKHZrOjpEeW5hbWljRGVzY3JpcHRvclBv
b2wgJmRlc2NyaXB0b3JQb29sIDogbUR5bmFtaWNEZXNjcmlwdG9yUG9vbHMpCisgICAgeworICAg
ICAgICBkZXNjcmlwdG9yUG9vbC5yZWxlYXNlKGNvbnRleHRWayk7CisgICAgfQorCisgICAgbVRl
eHR1cmVEZXNjcmlwdG9yc0NhY2hlLmNsZWFyKCk7CisgICAgbURlc2NyaXB0b3JCdWZmZXJzQ2Fj
aGUuY2xlYXIoKTsKKworICAgIG1EZWZhdWx0UHJvZ3JhbUluZm8ucmVsZWFzZShjb250ZXh0Vmsp
OworICAgIG1MaW5lUmFzdGVyUHJvZ3JhbUluZm8ucmVsZWFzZShjb250ZXh0VmspOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8cng6OkxpbmtFdmVudD4gUHJvZ3JhbUV4ZWN1dGFibGVWazo6bG9hZChn
bDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKK3sKKyAgICBjbGVhclZhcmlhYmxlSW5mb01h
cCgpOworCisgICAgZm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRl
clR5cGVzKCkpCisgICAgeworICAgICAgICBzaXplX3QgdmFyaWFibGVJbmZvTWFwU2l6ZSA9IHN0
cmVhbS0+cmVhZEludDxzaXplX3Q+KCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YXJpYWJsZUluZm9NYXBTaXplOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHZhcmlhYmxlTmFtZSAgICA9IHN0cmVhbS0+cmVhZFN0cmluZygpOworICAg
ICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICppbmZvID0gJm1WYXJpYWJsZUlu
Zm9NYXBbc2hhZGVyVHlwZV1bdmFyaWFibGVOYW1lXTsKKworICAgICAgICAgICAgaW5mby0+ZGVz
Y3JpcHRvclNldCA9IHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKKyAgICAgICAgICAgIGlu
Zm8tPmJpbmRpbmcgICAgICAgPSBzdHJlYW0tPnJlYWRJbnQ8dWludDMyX3Q+KCk7CisgICAgICAg
ICAgICBpbmZvLT5sb2NhdGlvbiAgICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90PigpOwor
ICAgICAgICAgICAgaW5mby0+Y29tcG9uZW50ICAgICA9IHN0cmVhbS0+cmVhZEludDx1aW50MzJf
dD4oKTsKKyAgICAgICAgICAgIC8vIFBhY2tlZEVudW1CaXRTZXQgdXNlcyB1aW50OF90CisgICAg
ICAgICAgICBpbmZvLT5hY3RpdmVTdGFnZXMgPSBnbDo6U2hhZGVyQml0U2V0KHN0cmVhbS0+cmVh
ZEludDx1aW50OF90PigpKTsKKyAgICAgICAgICAgIGluZm8tPnhmYkJ1ZmZlciAgICA9IHN0cmVh
bS0+cmVhZEludDx1aW50MzJfdD4oKTsKKyAgICAgICAgICAgIGluZm8tPnhmYk9mZnNldCAgICA9
IHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKKyAgICAgICAgICAgIGluZm8tPnhmYlN0cmlk
ZSAgICA9IHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+KGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlKTsKK30KKwordm9pZCBQcm9ncmFtRXhlY3V0YWJsZVZrOjpzYXZlKGdsOjpCaW5h
cnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKK3sKKyAgICBmb3IgKGdsOjpTaGFkZXJUeXBlIHNoYWRl
clR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKKyAgICB7CisgICAgICAgIHN0cmVhbS0+d3Jp
dGVJbnQ8c2l6ZV90PihtVmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdLnNpemUoKSk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byAmaXQgOiBtVmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdHJlYW0tPndyaXRlU3RyaW5nKGl0LmZpcnN0KTsKKyAg
ICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQ8dWludDMyX3Q+KGl0LnNlY29uZC5kZXNjcmlwdG9y
U2V0KTsKKyAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQ8dWludDMyX3Q+KGl0LnNlY29uZC5i
aW5kaW5nKTsKKyAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQ8dWludDMyX3Q+KGl0LnNlY29u
ZC5sb2NhdGlvbik7CisgICAgICAgICAgICBzdHJlYW0tPndyaXRlSW50PHVpbnQzMl90PihpdC5z
ZWNvbmQuY29tcG9uZW50KTsKKyAgICAgICAgICAgIC8vIFBhY2tlZEVudW1CaXRTZXQgdXNlcyB1
aW50OF90CisgICAgICAgICAgICBzdHJlYW0tPndyaXRlSW50PHVpbnQ4X3Q+KGl0LnNlY29uZC5h
Y3RpdmVTdGFnZXMuYml0cygpKTsKKyAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQ8dWludDMy
X3Q+KGl0LnNlY29uZC54ZmJCdWZmZXIpOworICAgICAgICAgICAgc3RyZWFtLT53cml0ZUludDx1
aW50MzJfdD4oaXQuc2Vjb25kLnhmYk9mZnNldCk7CisgICAgICAgICAgICBzdHJlYW0tPndyaXRl
SW50PHVpbnQzMl90PihpdC5zZWNvbmQueGZiU3RyaWRlKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBQcm9ncmFtRXhlY3V0YWJsZVZrOjpjbGVhclZhcmlhYmxlSW5mb01hcCgpCit7Cisg
ICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRlclR5
cGVzKCkpCisgICAgeworICAgICAgICBtVmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdLmNsZWFy
KCk7CisgICAgfQorfQorCit1aW50MzJfdCBHZXRJbnRlcmZhY2VCbG9ja0FycmF5U2l6ZShjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBidWZmZXJJbmRleCkKK3sKKyAgICBjb25z
dCBnbDo6SW50ZXJmYWNlQmxvY2sgJmJsb2NrID0gYmxvY2tzW2J1ZmZlckluZGV4XTsKKworICAg
IGlmICghYmxvY2suaXNBcnJheSkKKyAgICB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwor
ICAgIEFTU0VSVChibG9jay5hcnJheUVsZW1lbnQgPT0gMCk7CisKKyAgICAvLyBTZWFyY2ggY29u
c2VjdXRpdmVseSB1bnRpbCBhbGwgYXJyYXkgaW5kaWNlcyBvZiB0aGlzIGJsb2NrIGFyZSB2aXNp
dGVkLgorICAgIHVpbnQzMl90IGFycmF5U2l6ZTsKKyAgICBmb3IgKGFycmF5U2l6ZSA9IDE7IGJ1
ZmZlckluZGV4ICsgYXJyYXlTaXplIDwgYmxvY2tzLnNpemUoKTsgKythcnJheVNpemUpCisgICAg
eworICAgICAgICBjb25zdCBnbDo6SW50ZXJmYWNlQmxvY2sgJm5leHRCbG9jayA9IGJsb2Nrc1ti
dWZmZXJJbmRleCArIGFycmF5U2l6ZV07CisKKyAgICAgICAgaWYgKG5leHRCbG9jay5hcnJheUVs
ZW1lbnQgIT0gYXJyYXlTaXplKQorICAgICAgICB7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEl0J3MgdW5leHBlY3RlZCBmb3IgYW4gYXJyYXkgdG8gc3RhcnQg
YXQgYSBub24temVybyBhcnJheSBzaXplLCBzbyB3ZSBjYW4gYWx3YXlzIHJlbHkgb24KKyAgICAg
ICAgLy8gdGhlIHNlcXVlbnRpYWwgYGFycmF5RWxlbWVudGBzIHRvIGJlbG9uZyB0byB0aGUgc2Ft
ZSBibG9jay4KKyAgICAgICAgQVNTRVJUKG5leHRCbG9jay5uYW1lID09IGJsb2NrLm5hbWUpOwor
ICAgICAgICBBU1NFUlQobmV4dEJsb2NrLmlzQXJyYXkpOworICAgIH0KKworICAgIHJldHVybiBh
cnJheVNpemU7Cit9CisKK2FuZ2xlOjpSZXN1bHQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6YWxsb2Nh
dGVEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGVzY3JpcHRv
clNldEluZGV4KQoreworICAgIGJvb2wgaWdub3JlTmV3UG9vbEFsbG9jYXRlZDsKKyAgICByZXR1
cm4gYWxsb2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyhjb250ZXh0VmssIGRlc2NyaXB0b3JT
ZXRJbmRleCwgJmlnbm9yZU5ld1Bvb2xBbGxvY2F0ZWQpOworfQorCithbmdsZTo6UmVzdWx0IFBy
b2dyYW1FeGVjdXRhYmxlVms6OmFsbG9jYXRlRGVzY3JpcHRvclNldEFuZEdldEluZm8oQ29udGV4
dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGVzY3JpcHRvclNldEluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgKm5ld1Bvb2xBbGxvY2F0ZWRPdXQpCit7CisgICAgdms6OkR5bmFtaWNE
ZXNjcmlwdG9yUG9vbCAmZHluYW1pY0Rlc2NyaXB0b3JQb29sID0gbUR5bmFtaWNEZXNjcmlwdG9y
UG9vbHNbZGVzY3JpcHRvclNldEluZGV4XTsKKworICAgIHVpbnQzMl90IHBvdGVudGlhbE5ld0Nv
dW50ID0gZGVzY3JpcHRvclNldEluZGV4ICsgMTsKKyAgICBpZiAocG90ZW50aWFsTmV3Q291bnQg
PiBtRGVzY3JpcHRvclNldHMuc2l6ZSgpKQorICAgIHsKKyAgICAgICAgbURlc2NyaXB0b3JTZXRz
LnJlc2l6ZShwb3RlbnRpYWxOZXdDb3VudCwgVktfTlVMTF9IQU5ETEUpOworICAgIH0KKworICAg
IGNvbnN0IHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0ICZkZXNjcmlwdG9yU2V0TGF5b3V0ID0KKyAg
ICAgICAgbURlc2NyaXB0b3JTZXRMYXlvdXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0uZ2V0KCk7Cisg
ICAgQU5HTEVfVFJZKGR5bmFtaWNEZXNjcmlwdG9yUG9vbC5hbGxvY2F0ZVNldHNBbmRHZXRJbmZv
KAorICAgICAgICBjb250ZXh0VmssIGRlc2NyaXB0b3JTZXRMYXlvdXQucHRyKCksIDEsICZtRGVz
Y3JpcHRvclBvb2xCaW5kaW5nc1tkZXNjcmlwdG9yU2V0SW5kZXhdLAorICAgICAgICAmbURlc2Ny
aXB0b3JTZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0sIG5ld1Bvb2xBbGxvY2F0ZWRPdXQpKTsKKyAg
ICBtRW1wdHlEZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5kZXhdID0gVktfTlVMTF9IQU5E
TEU7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK3ZvaWQgUHJv
Z3JhbUV4ZWN1dGFibGVWazo6YWRkSW50ZXJmYWNlQmxvY2tEZXNjcmlwdG9yU2V0RGVzYygKKyAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MsCisgICAgY29u
c3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NU
eXBlLAorICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyAqZGVzY091dCkKK3sKKyAgICBm
b3IgKHVpbnQzMl90IGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBibG9ja3Muc2l6ZSgp
OykKKyAgICB7CisgICAgICAgIGdsOjpJbnRlcmZhY2VCbG9jayBibG9jayA9IGJsb2Nrc1tidWZm
ZXJJbmRleF07CisgICAgICAgIGNvbnN0IHVpbnQzMl90IGFycmF5U2l6ZSA9IEdldEludGVyZmFj
ZUJsb2NrQXJyYXlTaXplKGJsb2NrcywgYnVmZmVySW5kZXgpOworICAgICAgICBidWZmZXJJbmRl
eCArPSBhcnJheVNpemU7CisKKyAgICAgICAgaWYgKCFibG9jay5pc0FjdGl2ZShzaGFkZXJUeXBl
KSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBibG9ja05hbWUgICAgICAgICAgICAgPSBibG9jay5tYXBwZWRO
YW1lOworICAgICAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmluZm8gPSBt
VmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdW2Jsb2NrTmFtZV07CisKKyAgICAgICAgZGVzY091
dC0+dXBkYXRlKGluZm8uYmluZGluZywgZGVzY1R5cGUsIGFycmF5U2l6ZSwgZ2xfdms6OmtTaGFk
ZXJTdGFnZU1hcFtzaGFkZXJUeXBlXSk7CisgICAgfQorfQorCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlVms6OmFkZEF0b21pY0NvdW50ZXJCdWZmZXJEZXNjcmlwdG9yU2V0RGVzYygKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6QXRvbWljQ291bnRlckJ1ZmZlcj4gJmF0b21pY0NvdW50ZXJCdWZm
ZXJzLAorICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCisgICAgdms6OkRlc2Ny
aXB0b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0KQoreworICAgIGlmIChhdG9taWNDb3VudGVyQnVm
ZmVycy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0ZDo6
c3RyaW5nIGJsb2NrTmFtZShzaDo6dms6OmtBdG9taWNDb3VudGVyc0Jsb2NrTmFtZSk7CisgICAg
Y29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICZpbmZvID0gbVZhcmlhYmxlSW5mb01h
cFtzaGFkZXJUeXBlXVtibG9ja05hbWVdOworCisgICAgaWYgKCFpbmZvLmFjdGl2ZVN0YWdlc1tz
aGFkZXJUeXBlXSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBIHNp
bmdsZSBzdG9yYWdlIGJ1ZmZlciBhcnJheSBpcyB1c2VkIGZvciBhbGwgc3RhZ2VzIGZvciBzaW1w
bGljaXR5LgorICAgIGRlc2NPdXQtPnVwZGF0ZShpbmZvLmJpbmRpbmcsIFZLX0RFU0NSSVBUT1Jf
VFlQRV9TVE9SQUdFX0JVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OklNUExFTUVOVEFU
SU9OX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTLAorICAgICAgICAgICAgICAgICAgICBnbF92
azo6a1NoYWRlclN0YWdlTWFwW3NoYWRlclR5cGVdKTsKK30KKwordm9pZCBQcm9ncmFtRXhlY3V0
YWJsZVZrOjphZGRJbWFnZURlc2NyaXB0b3JTZXREZXNjKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUg
JnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2MgKmRlc2NPdXQpCit7CisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkltYWdlQmluZGluZz4gJmltYWdlQmluZGluZ3MgPSBwcm9n
cmFtU3RhdGUuZ2V0SW1hZ2VCaW5kaW5ncygpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpM
aW5rZWRVbmlmb3JtPiAmdW5pZm9ybXMgICAgID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1zKCk7
CisKKyAgICBmb3IgKHVpbnQzMl90IGltYWdlSW5kZXggPSAwOyBpbWFnZUluZGV4IDwgaW1hZ2VC
aW5kaW5ncy5zaXplKCk7ICsraW1hZ2VJbmRleCkKKyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpJ
bWFnZUJpbmRpbmcgJmltYWdlQmluZGluZyA9IGltYWdlQmluZGluZ3NbaW1hZ2VJbmRleF07CisK
KyAgICAgICAgdWludDMyX3QgdW5pZm9ybUluZGV4ID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1J
bmRleEZyb21JbWFnZUluZGV4KGltYWdlSW5kZXgpOworICAgICAgICBjb25zdCBnbDo6TGlua2Vk
VW5pZm9ybSAmaW1hZ2VVbmlmb3JtID0gdW5pZm9ybXNbdW5pZm9ybUluZGV4XTsKKworICAgICAg
ICAvLyBUaGUgZnJvbnQtZW5kIGFsd2F5cyBiaW5kcyBhcnJheSBpbWFnZSB1bml0cyBzZXF1ZW50
aWFsbHkuCisgICAgICAgIHVpbnQzMl90IGFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihpbWFnZUJpbmRpbmcuYm91bmRJbWFnZVVuaXRzLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChj
b25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDoKKyAgICAgICAgICAgICBwcm9ncmFtU3Rh
dGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFpbWFnZVVuaWZvcm0uaXNBY3RpdmUoc2hhZGVyVHlwZSkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBpbWFnZVVuaWZvcm0ubWFwcGVkTmFt
ZTsKKyAgICAgICAgICAgIEdldEltYWdlTmFtZVdpdGhvdXRJbmRpY2VzKCZuYW1lKTsKKyAgICAg
ICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAmaW5mbyA9IG1WYXJpYWJsZUluZm9N
YXBbc2hhZGVyVHlwZV1bbmFtZV07CisgICAgICAgICAgICBWa1NoYWRlclN0YWdlRmxhZ3MgYWN0
aXZlU3RhZ2VzICAgPSBnbF92azo6a1NoYWRlclN0YWdlTWFwW3NoYWRlclR5cGVdOworICAgICAg
ICAgICAgZGVzY091dC0+dXBkYXRlKGluZm8uYmluZGluZywgVktfREVTQ1JJUFRPUl9UWVBFX1NU
T1JBR0VfSU1BR0UsIGFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rp
dmVTdGFnZXMpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFByb2dyYW1FeGVjdXRhYmxl
Vms6OmFkZFRleHR1cmVEZXNjcmlwdG9yU2V0RGVzYyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZw
cm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpEZXNjcmlwdG9y
U2V0TGF5b3V0RGVzYyAqZGVzY091dCkKK3sKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6U2Ft
cGxlckJpbmRpbmc+ICZzYW1wbGVyQmluZGluZ3MgPSBwcm9ncmFtU3RhdGUuZ2V0U2FtcGxlckJp
bmRpbmdzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlm
b3JtcyAgICAgICAgID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1zKCk7CisKKyAgICBmb3IgKHVp
bnQzMl90IHRleHR1cmVJbmRleCA9IDA7IHRleHR1cmVJbmRleCA8IHNhbXBsZXJCaW5kaW5ncy5z
aXplKCk7ICsrdGV4dHVyZUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OlNhbXBsZXJC
aW5kaW5nICZzYW1wbGVyQmluZGluZyA9IHNhbXBsZXJCaW5kaW5nc1t0ZXh0dXJlSW5kZXhdOwor
CisgICAgICAgIHVpbnQzMl90IHVuaWZvcm1JbmRleCA9IHByb2dyYW1TdGF0ZS5nZXRVbmlmb3Jt
SW5kZXhGcm9tU2FtcGxlckluZGV4KHRleHR1cmVJbmRleCk7CisgICAgICAgIGNvbnN0IGdsOjpM
aW5rZWRVbmlmb3JtICZzYW1wbGVyVW5pZm9ybSA9IHVuaWZvcm1zW3VuaWZvcm1JbmRleF07CisK
KyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgc2FtcGxlck5hbWUgPSB1c2VPbGRSZXdyaXRlU3Ry
dWN0U2FtcGxlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PyBHZXRNYXBwZWRTYW1wbGVyTmFtZU9sZChzYW1wbGVyVW5pZm9ybS5uYW1lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEdsc2xhbmdHZXRNYXBwZWRTYW1w
bGVyTmFtZShzYW1wbGVyVW5pZm9ybS5uYW1lKTsKKworICAgICAgICAvLyBUaGUgZnJvbnQtZW5k
IGFsd2F5cyBiaW5kcyBhcnJheSBzYW1wbGVyIHVuaXRzIHNlcXVlbnRpYWxseS4KKyAgICAgICAg
dWludDMyX3QgYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNhbXBsZXJCaW5kaW5n
LmJvdW5kVGV4dHVyZVVuaXRzLnNpemUoKSk7CisKKyAgICAgICAgaWYgKCF1c2VPbGRSZXdyaXRl
U3RydWN0U2FtcGxlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIDJEIGFycmF5cyBhcmUg
c3BsaXQgaW50byBtdWx0aXBsZSAxRCBhcnJheXMgd2hlbiBnZW5lcmF0aW5nCisgICAgICAgICAg
ICAvLyBMaW5rZWRVbmlmb3Jtcy4gU2luY2UgdGhleSBhcmUgZmxhdHRlbmVkIGludG8gb25lIGFy
cmF5LCBpZ25vcmUgdGhlCisgICAgICAgICAgICAvLyBub256ZXJvIGVsZW1lbnRzIGFuZCBleHBh
bmQgdGhlIGFycmF5IHRvIHRoZSB0b3RhbCBhcnJheSBzaXplLgorICAgICAgICAgICAgaWYgKGds
OjpTYW1wbGVyTmFtZUNvbnRhaW5zTm9uWmVyb0FycmF5RWxlbWVudChzYW1wbGVyVW5pZm9ybS5u
YW1lKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgb3V0ZXJBcnJheVNpemUgOiBz
YW1wbGVyVW5pZm9ybS5vdXRlckFycmF5U2l6ZXMpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgYXJyYXlTaXplICo9IG91dGVyQXJyYXlTaXplOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDoKKyAg
ICAgICAgICAgICBwcm9ncmFtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS5nZXRMaW5rZWRT
aGFkZXJTdGFnZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFzYW1wbGVyVW5pZm9y
bS5pc0FjdGl2ZShzaGFkZXJUeXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFy
aWFibGVJbmZvICZpbmZvID0gbVZhcmlhYmxlSW5mb01hcFtzaGFkZXJUeXBlXVtzYW1wbGVyTmFt
ZV07CisgICAgICAgICAgICBWa1NoYWRlclN0YWdlRmxhZ3MgYWN0aXZlU3RhZ2VzICAgPSBnbF92
azo6a1NoYWRlclN0YWdlTWFwW3NoYWRlclR5cGVdOworCisgICAgICAgICAgICBkZXNjT3V0LT51
cGRhdGUoaW5mby5iaW5kaW5nLCBWS19ERVNDUklQVE9SX1RZUEVfQ09NQklORURfSU1BR0VfU0FN
UExFUiwgYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVN0YWdl
cyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgV3JpdGVCdWZmZXJEZXNjcmlwdG9yU2V0
QmluZGluZyhjb25zdCBnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJ1ZmZl
ckJpbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VT
aXplIG1heFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXNj
cmlwdG9yU2V0IGRlc2NTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmtEZXNjcmlwdG9yVHlwZSBkZXNjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBiaW5kaW5nSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgYXJyYXlFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSByZXF1aXJlZE9mZnNldEFsaWdubWVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZv
ICpidWZmZXJJbmZvT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZr
V3JpdGVEZXNjcmlwdG9yU2V0ICp3cml0ZUluZm9PdXQpCit7CisgICAgZ2w6OkJ1ZmZlciAqYnVm
ZmVyID0gYnVmZmVyQmluZGluZy5nZXQoKTsKKyAgICBBU1NFUlQoYnVmZmVyICE9IG51bGxwdHIp
OworCisgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3Mgbm8gcG9zc2libGUgdW5kZXIvb3ZlcmZsb3cg
d2l0aCBiaW5kaW5nIHNpemUuCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmtEZXZpY2VTaXpl
KSA+PSBzaXplb2YoYnVmZmVyQmluZGluZy5nZXRTaXplKCkpLAorICAgICAgICAgICAgICAgICAg
IlZrRGV2aWNlU2l6ZSB0b28gc21hbGwiKTsKKyAgICBBU1NFUlQoYnVmZmVyQmluZGluZy5nZXRT
aXplKCkgPj0gMCk7CisKKyAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAgICAgICAgPSB2azo6
R2V0SW1wbChidWZmZXIpOworICAgIFZrRGV2aWNlU2l6ZSBvZmZzZXQgICAgICAgICAgICA9IGJ1
ZmZlckJpbmRpbmcuZ2V0T2Zmc2V0KCk7CisgICAgVmtEZXZpY2VTaXplIHNpemUgICAgICAgICAg
ICAgID0gYnVmZmVyQmluZGluZy5nZXRTaXplKCk7CisgICAgdms6OkJ1ZmZlckhlbHBlciAmYnVm
ZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOworCisgICAgLy8gSWYgc2l6ZSBpcyAw
LCB3ZSBjYW4ndCBhbHdheXMgdXNlIFZLX1dIT0xFX1NJWkUgKG9yIGJ1ZmZlckhlbHBlci5nZXRT
aXplKCkpLCBhcyB0aGUKKyAgICAvLyBiYWNraW5nIGJ1ZmZlciBtYXkgYmUgbGFyZ2VyIHRoYW4g
bWF4KkJ1ZmZlclJhbmdlLiAgSW4gdGhhdCBjYXNlLCB3ZSB1c2UgdGhlIG1pbmltdW0gb2YKKyAg
ICAvLyB0aGUgYmFja2luZyBidWZmZXIgc2l6ZSAod2hhdCdzIGxlZnQgYWZ0ZXIgb2Zmc2V0KSBh
bmQgdGhlIGJ1ZmZlciBzaXplIGFzIGRlZmluZWQgYnkgdGhlCisgICAgLy8gc2hhZGVyLiAgVGhh
dCBsYXR0ZXIgaXMgb25seSB2YWxpZCBmb3IgVUJPcywgYXMgU1NCT3MgbWF5IGhhdmUgdmFyaWFi
bGUgbGVuZ3RoIGFycmF5cy4KKyAgICBzaXplID0gc2l6ZSA+IDAgPyBzaXplIDogKGJ1ZmZlckhl
bHBlci5nZXRTaXplKCkgLSBvZmZzZXQpOworICAgIGlmIChtYXhTaXplID4gMCkKKyAgICB7Cisg
ICAgICAgIHNpemUgPSBzdGQ6Om1pbihzaXplLCBtYXhTaXplKTsKKyAgICB9CisKKyAgICAvLyBJ
ZiByZXF1aXJlZE9mZnNldEFsaWdubWVudCBpcyAwLCB0aGUgYnVmZmVyIG9mZnNldCBpcyBndWFy
YW50ZWVkIHRvIGhhdmUgdGhlIG5lY2Vzc2FyeQorICAgIC8vIGFsaWdubWVudCB0aHJvdWdoIG90
aGVyIG1lYW5zICh0aGUgYmFja2VuZCBzcGVjaWZ5aW5nIHRoZSBhbGlnbm1lbnQgdGhyb3VnaCBh
IEdMRVMgbGltaXQgdGhhdAorICAgIC8vIHRoZSBmcm9udGVuZCB0aGVuIGVuZm9yY2VzKS4gIElm
IGl0J3Mgbm90IDAsIHdlIG5lZWQgdG8gYmluZCB0aGUgYnVmZmVyIGF0IGFuIG9mZnNldCB0aGF0
J3MKKyAgICAvLyBhbGlnbmVkLiAgVGhlIGRpZmZlcmVuY2UgaW4gb2Zmc2V0cyBpcyBjb21tdW5p
Y2F0ZWQgdG8gdGhlIHNoYWRlciB2aWEgZHJpdmVyIHVuaWZvcm1zLgorICAgIGlmIChyZXF1aXJl
ZE9mZnNldEFsaWdubWVudCkKKyAgICB7CisgICAgICAgIFZrRGV2aWNlU2l6ZSBhbGlnbmVkT2Zm
c2V0ID0gKG9mZnNldCAvIHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50KSAqIHJlcXVpcmVkT2Zmc2V0
QWxpZ25tZW50OworICAgICAgICBWa0RldmljZVNpemUgb2Zmc2V0RGlmZiAgICA9IG9mZnNldCAt
IGFsaWduZWRPZmZzZXQ7CisKKyAgICAgICAgb2Zmc2V0ID0gYWxpZ25lZE9mZnNldDsKKyAgICAg
ICAgc2l6ZSArPSBvZmZzZXREaWZmOworICAgIH0KKworICAgIGJ1ZmZlckluZm9PdXQtPmJ1ZmZl
ciA9IGJ1ZmZlckhlbHBlci5nZXRCdWZmZXIoKS5nZXRIYW5kbGUoKTsKKyAgICBidWZmZXJJbmZv
T3V0LT5vZmZzZXQgPSBvZmZzZXQ7CisgICAgYnVmZmVySW5mb091dC0+cmFuZ2UgID0gc2l6ZTsK
KworICAgIHdyaXRlSW5mb091dC0+c1R5cGUgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBF
X1dSSVRFX0RFU0NSSVBUT1JfU0VUOworICAgIHdyaXRlSW5mb091dC0+cE5leHQgICAgICAgICAg
ICA9IG51bGxwdHI7CisgICAgd3JpdGVJbmZvT3V0LT5kc3RTZXQgICAgICAgICAgID0gZGVzY1Nl
dDsKKyAgICB3cml0ZUluZm9PdXQtPmRzdEJpbmRpbmcgICAgICAgPSBiaW5kaW5nSW5kZXg7Cisg
ICAgd3JpdGVJbmZvT3V0LT5kc3RBcnJheUVsZW1lbnQgID0gYXJyYXlFbGVtZW50OworICAgIHdy
aXRlSW5mb091dC0+ZGVzY3JpcHRvckNvdW50ICA9IDE7CisgICAgd3JpdGVJbmZvT3V0LT5kZXNj
cmlwdG9yVHlwZSAgID0gZGVzY1R5cGU7CisgICAgd3JpdGVJbmZvT3V0LT5wSW1hZ2VJbmZvICAg
ICAgID0gbnVsbHB0cjsKKyAgICB3cml0ZUluZm9PdXQtPnBCdWZmZXJJbmZvICAgICAgPSBidWZm
ZXJJbmZvT3V0OworICAgIHdyaXRlSW5mb091dC0+cFRleGVsQnVmZmVyVmlldyA9IG51bGxwdHI7
CisgICAgQVNTRVJUKHdyaXRlSW5mb091dC0+cEJ1ZmZlckluZm9bMF0uYnVmZmVyICE9IFZLX05V
TExfSEFORExFKTsKK30KKworYW5nbGU6OlJlc3VsdCBQcm9ncmFtRXhlY3V0YWJsZVZrOjpjcmVh
dGVQaXBlbGluZUxheW91dChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UHJvZ3JhbUV4ZWN1dGFibGUgJmdsRXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAm
cHJvZ3JhbVN0YXRlKQoreworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAg
ICAgICAgICA9IGdsQ29udGV4dC0+Z2V0U3RhdGUoKTsKKyAgICBDb250ZXh0VmsgKmNvbnRleHRW
ayAgICAgICAgICAgICAgICAgICAgICAgPSB2azo6R2V0SW1wbChnbENvbnRleHQpOworICAgIFJl
bmRlcmVyVmsgKnJlbmRlcmVyICAgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0
UmVuZGVyZXIoKTsKKyAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNr
ICAgPSBnbFN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIGNvbnN0IGds
OjpTaGFkZXJCaXRTZXQgJmxpbmtlZFNoYWRlclN0YWdlcyA9IGdsRXhlY3V0YWJsZS5nZXRMaW5r
ZWRTaGFkZXJTdGFnZXMoKTsKKworICAgIHJlc2V0KGNvbnRleHRWayk7CisKKyAgICAvLyBTdG9y
ZSBhIHJlZmVyZW5jZSB0byB0aGUgcGlwZWxpbmUgYW5kIGRlc2NyaXB0b3Igc2V0IGxheW91dHMu
IFRoaXMgd2lsbCBjcmVhdGUgdGhlbSBpZiB0aGV5CisgICAgLy8gZG9uJ3QgYWxyZWFkeSBleGlz
dCBpbiB0aGUgY2FjaGUuCisKKyAgICAvLyBEZWZhdWx0IHVuaWZvcm1zIGFuZCB0cmFuc2Zvcm0g
ZmVlZGJhY2s6CisgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjIHVuaWZvcm1zQW5kWGZi
U2V0RGVzYzsKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBsaW5r
ZWRTaGFkZXJTdGFnZXMpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB1bmlmb3Jt
QmxvY2tOYW1lID0ga0RlZmF1bHRVbmlmb3JtTmFtZXNbc2hhZGVyVHlwZV07CisgICAgICAgIFNo
YWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAmaW5mbyAgPSBtVmFyaWFibGVJbmZvTWFwW3NoYWRl
clR5cGVdW3VuaWZvcm1CbG9ja05hbWVdOworICAgICAgICBpZiAoIWluZm8uYWN0aXZlU3RhZ2Vz
W3NoYWRlclR5cGVdKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHVuaWZvcm1zQW5kWGZiU2V0RGVzYy51cGRhdGUoaW5mby5iaW5kaW5nLCBW
S19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVJfRFlOQU1JQywgMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbF92azo6a1NoYWRlclN0YWdlTWFwW3NoYWRlclR5
cGVdKTsKKyAgICAgICAgbU51bURlZmF1bHRVbmlmb3JtRGVzY3JpcHRvcnMrKzsKKyAgICB9Cisg
ICAgYm9vbCBoYXNWZXJ0ZXhTaGFkZXIgPSBnbEV4ZWN1dGFibGUuaGFzTGlua2VkU2hhZGVyU3Rh
Z2UoZ2w6OlNoYWRlclR5cGU6OlZlcnRleCk7CisgICAgYm9vbCBoYXNYZmJWYXJ5aW5ncyAgPSAh
cHJvZ3JhbVN0YXRlLmdldExpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKS5lbXB0eSgp
OworICAgIGlmIChoYXNWZXJ0ZXhTaGFkZXIgJiYgdHJhbnNmb3JtRmVlZGJhY2sgJiYgaGFzWGZi
VmFyeWluZ3MpCisgICAgeworICAgICAgICBzaXplX3QgeGZiQnVmZmVyQ291bnQgICAgICAgICAg
ICAgICAgICAgID0gcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQo
KTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tWayAqdHJhbnNmb3JtRmVlZGJhY2tWayA9IHZr
OjpHZXRJbXBsKHRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tW
ay0+dXBkYXRlRGVzY3JpcHRvclNldExheW91dChjb250ZXh0VmssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVZhcmlhYmxlSW5mb01hcFtn
bDo6U2hhZGVyVHlwZTo6VmVydGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4ZmJCdWZmZXJDb3VudCwgJnVuaWZvcm1zQW5kWGZiU2V0
RGVzYyk7CisgICAgfQorCisgICAgQU5HTEVfVFJZKHJlbmRlcmVyLT5nZXREZXNjcmlwdG9yU2V0
TGF5b3V0KAorICAgICAgICBjb250ZXh0VmssIHVuaWZvcm1zQW5kWGZiU2V0RGVzYywKKyAgICAg
ICAgJm1EZXNjcmlwdG9yU2V0TGF5b3V0c1trVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5k
ZXhdKSk7CisKKyAgICAvLyBVbmlmb3JtIGFuZCBzdG9yYWdlIGJ1ZmZlcnMsIGF0b21pYyBjb3Vu
dGVyIGJ1ZmZlcnMgYW5kIGltYWdlczoKKyAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2Mg
cmVzb3VyY2VzU2V0RGVzYzsKKworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVy
VHlwZSA6IGxpbmtlZFNoYWRlclN0YWdlcykKKyAgICB7CisgICAgICAgIGFkZEludGVyZmFjZUJs
b2NrRGVzY3JpcHRvclNldERlc2MocHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKSwgc2hh
ZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19E
RVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVIsICZyZXNvdXJjZXNTZXREZXNjKTsKKyAgICAg
ICAgYWRkSW50ZXJmYWNlQmxvY2tEZXNjcmlwdG9yU2V0RGVzYyhwcm9ncmFtU3RhdGUuZ2V0U2hh
ZGVyU3RvcmFnZUJsb2NrcygpLCBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwgJnJl
c291cmNlc1NldERlc2MpOworICAgICAgICBhZGRBdG9taWNDb3VudGVyQnVmZmVyRGVzY3JpcHRv
clNldERlc2MocHJvZ3JhbVN0YXRlLmdldEF0b21pY0NvdW50ZXJCdWZmZXJzKCksIHNoYWRlclR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVz
b3VyY2VzU2V0RGVzYyk7CisgICAgfQorCisgICAgYWRkSW1hZ2VEZXNjcmlwdG9yU2V0RGVzYyhw
cm9ncmFtU3RhdGUsICZyZXNvdXJjZXNTZXREZXNjKTsKKworICAgIEFOR0xFX1RSWShyZW5kZXJl
ci0+Z2V0RGVzY3JpcHRvclNldExheW91dCgKKyAgICAgICAgY29udGV4dFZrLCByZXNvdXJjZXNT
ZXREZXNjLCAmbURlc2NyaXB0b3JTZXRMYXlvdXRzW2tTaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JT
ZXRJbmRleF0pKTsKKworICAgIC8vIFRleHR1cmVzOgorICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5
b3V0RGVzYyB0ZXh0dXJlc1NldERlc2M7CisKKyAgICBhZGRUZXh0dXJlRGVzY3JpcHRvclNldERl
c2MocHJvZ3JhbVN0YXRlLCBjb250ZXh0VmstPnVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycygp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGV4dHVyZXNTZXREZXNjKTsKKwor
ICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0RGVzY3JpcHRvclNldExheW91dChjb250ZXh0Vmss
IHRleHR1cmVzU2V0RGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1EZXNjcmlwdG9yU2V0TGF5b3V0c1trVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRl
eF0pKTsKKworICAgIC8vIERyaXZlciB1bmlmb3JtczoKKyAgICBWa1NoYWRlclN0YWdlRmxhZ3Mg
ZHJpdmVyVW5pZm9ybXNTdGFnZXMgPQorICAgICAgICBnbEV4ZWN1dGFibGUuaXNDb21wdXRlKCkg
PyBWS19TSEFERVJfU1RBR0VfQ09NUFVURV9CSVQgOiBWS19TSEFERVJfU1RBR0VfQUxMX0dSQVBI
SUNTOworICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyBkcml2ZXJVbmlmb3Jtc1NldERl
c2MgPQorICAgICAgICBjb250ZXh0VmstPmdldERyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldERl
c2MoZHJpdmVyVW5pZm9ybXNTdGFnZXMpOworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0RGVz
Y3JpcHRvclNldExheW91dCgKKyAgICAgICAgY29udGV4dFZrLCBkcml2ZXJVbmlmb3Jtc1NldERl
c2MsCisgICAgICAgICZtRGVzY3JpcHRvclNldExheW91dHNba0RyaXZlclVuaWZvcm1zRGVzY3Jp
cHRvclNldEluZGV4XSkpOworCisgICAgLy8gQ3JlYXRlIHBpcGVsaW5lIGxheW91dCB3aXRoIHRo
ZXNlIDQgZGVzY3JpcHRvciBzZXRzLgorICAgIHZrOjpQaXBlbGluZUxheW91dERlc2MgcGlwZWxp
bmVMYXlvdXREZXNjOworICAgIHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0
TGF5b3V0KGtVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3Jtc0FuZFhmYlNldERlc2Mp
OworICAgIHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KGtTaGFk
ZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNTZXREZXNjKTsKKyAgICBwaXBlbGluZUxh
eW91dERlc2MudXBkYXRlRGVzY3JpcHRvclNldExheW91dChrVGV4dHVyZURlc2NyaXB0b3JTZXRJ
bmRleCwgdGV4dHVyZXNTZXREZXNjKTsKKyAgICBwaXBlbGluZUxheW91dERlc2MudXBkYXRlRGVz
Y3JpcHRvclNldExheW91dChrRHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyVW5pZm9y
bXNTZXREZXNjKTsKKworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0UGlwZWxpbmVMYXlvdXQo
Y29udGV4dFZrLCBwaXBlbGluZUxheW91dERlc2MsIG1EZXNjcmlwdG9yU2V0TGF5b3V0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtUGlwZWxpbmVMYXlvdXQp
KTsKKworICAgIC8vIEluaXRpYWxpemUgZGVzY3JpcHRvciBwb29scy4KKyAgICBzdGQ6OmFycmF5
PFZrRGVzY3JpcHRvclBvb2xTaXplLCAyPiB1bmlmb3JtQW5kWGZiU2V0U2l6ZSA9IHsKKyAgICAg
ICAge3tWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVJfRFlOQU1JQywKKyAgICAgICAg
ICBzdGF0aWNfY2FzdDx1aW50MzJfdD4obU51bURlZmF1bHRVbmlmb3JtRGVzY3JpcHRvcnMpfSwK
KyAgICAgICAgIHtWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIsIGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUlN9fX07CisKKyAgICB1aW50MzJf
dCB1bmlmb3JtQmxvY2tDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9ncmFtU3RhdGUu
Z2V0VW5pZm9ybUJsb2NrcygpLnNpemUoKSk7CisgICAgdWludDMyX3Qgc3RvcmFnZUJsb2NrQ291
bnQgPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvZ3JhbVN0YXRlLmdldFNoYWRl
clN0b3JhZ2VCbG9ja3MoKS5zaXplKCkpOworICAgIHVpbnQzMl90IGF0b21pY0NvdW50ZXJCdWZm
ZXJDb3VudCA9CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9ncmFtU3RhdGUuZ2V0
QXRvbWljQ291bnRlckJ1ZmZlcnMoKS5zaXplKCkpOworICAgIHVpbnQzMl90IGltYWdlQ291bnQg
ICA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihwcm9ncmFtU3RhdGUuZ2V0SW1hZ2VCaW5kaW5ncygp
LnNpemUoKSk7CisgICAgdWludDMyX3QgdGV4dHVyZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHByb2dyYW1TdGF0ZS5nZXRTYW1wbGVyQmluZGluZ3MoKS5zaXplKCkpOworCisgICAgaWYg
KHJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLmJpbmRFbXB0eUZvclVudXNlZERlc2NyaXB0b3JTZXRz
LmVuYWJsZWQpCisgICAgeworICAgICAgICAvLyBGb3IgdGhpcyB3b3JrYXJvdW5kLCB3ZSBoYXZl
IHRvIGNyZWF0ZSBhbiBlbXB0eSBkZXNjcmlwdG9yIHNldCBmb3IgZWFjaCBkZXNjcmlwdG9yIHNl
dAorICAgICAgICAvLyBpbmRleCwgc28gbWFrZSBzdXJlIHRoZWlyIHBvb2xzIGFyZSBpbml0aWFs
aXplZC4KKyAgICAgICAgdW5pZm9ybUJsb2NrQ291bnQgPSBzdGQ6Om1heCh1bmlmb3JtQmxvY2tD
b3VudCwgMXUpOworICAgICAgICB0ZXh0dXJlQ291bnQgICAgICA9IHN0ZDo6bWF4KHRleHR1cmVD
b3VudCwgMXUpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBzaXplX3Qga1Jlc291cmNlVHlwZXNJ
blJlc291cmNlc1NldCA9IDM7CisgICAgYW5nbGU6OkZpeGVkVmVjdG9yPFZrRGVzY3JpcHRvclBv
b2xTaXplLCBrUmVzb3VyY2VUeXBlc0luUmVzb3VyY2VzU2V0PiByZXNvdXJjZVNldFNpemU7Cisg
ICAgaWYgKHVuaWZvcm1CbG9ja0NvdW50ID4gMCkKKyAgICB7CisgICAgICAgIHJlc291cmNlU2V0
U2l6ZS5lbXBsYWNlX2JhY2soVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fQlVGRkVSLCB1bmlm
b3JtQmxvY2tDb3VudCk7CisgICAgfQorICAgIGlmIChzdG9yYWdlQmxvY2tDb3VudCA+IDAgfHwg
YXRvbWljQ291bnRlckJ1ZmZlckNvdW50ID4gMCkKKyAgICB7CisgICAgICAgIC8vIE5vdGUgdGhh
dCB3ZSBhbHdheXMgdXNlIGFuIGFycmF5IG9mIElNUExFTUVOVEFUSU9OX01BWF9BVE9NSUNfQ09V
TlRFUl9CVUZGRVJTIHN0b3JhZ2UKKyAgICAgICAgLy8gYnVmZmVycyBmb3IgZW11bGF0aW5nIGF0
b21pYyBjb3VudGVycywgc28gaWYgdGhlcmUgYXJlIGFueSBhdG9taWMgY291bnRlciBidWZmZXJz
LCB3ZQorICAgICAgICAvLyBuZWVkIHRvIGFsbG9jYXRlIElNUExFTUVOVEFUSU9OX01BWF9BVE9N
SUNfQ09VTlRFUl9CVUZGRVJTIGRlc2NyaXB0b3JzLgorICAgICAgICBjb25zdCB1aW50MzJfdCBh
dG9taWNDb3VudGVyU3RvcmFnZUJ1ZmZlckNvdW50ID0KKyAgICAgICAgICAgIGF0b21pY0NvdW50
ZXJCdWZmZXJDb3VudCA+IDAgPyBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVS
X0JVRkZFUlMgOiAwOworICAgICAgICBjb25zdCB1aW50MzJfdCBzdG9yYWdlQnVmZmVyRGVzY0Nv
dW50ID0gc3RvcmFnZUJsb2NrQ291bnQgKyBhdG9taWNDb3VudGVyU3RvcmFnZUJ1ZmZlckNvdW50
OworICAgICAgICByZXNvdXJjZVNldFNpemUuZW1wbGFjZV9iYWNrKFZLX0RFU0NSSVBUT1JfVFlQ
RV9TVE9SQUdFX0JVRkZFUiwgc3RvcmFnZUJ1ZmZlckRlc2NDb3VudCk7CisgICAgfQorICAgIGlm
IChpbWFnZUNvdW50ID4gMCkKKyAgICB7CisgICAgICAgIHJlc291cmNlU2V0U2l6ZS5lbXBsYWNl
X2JhY2soVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfSU1BR0UsIGltYWdlQ291bnQpOworICAg
IH0KKworICAgIFZrRGVzY3JpcHRvclBvb2xTaXplIHRleHR1cmVTZXRTaXplID0ge1ZLX0RFU0NS
SVBUT1JfVFlQRV9DT01CSU5FRF9JTUFHRV9TQU1QTEVSLCB0ZXh0dXJlQ291bnR9OworCisgICAg
QU5HTEVfVFJZKG1EeW5hbWljRGVzY3JpcHRvclBvb2xzW2tVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0
b3JTZXRJbmRleF0uaW5pdCgKKyAgICAgICAgY29udGV4dFZrLCB1bmlmb3JtQW5kWGZiU2V0U2l6
ZS5kYXRhKCksIHVuaWZvcm1BbmRYZmJTZXRTaXplLnNpemUoKSkpOworICAgIGlmIChyZXNvdXJj
ZVNldFNpemUuc2l6ZSgpID4gMCkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShtRHluYW1pY0Rl
c2NyaXB0b3JQb29sc1trU2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXhdLmluaXQoCisg
ICAgICAgICAgICBjb250ZXh0VmssIHJlc291cmNlU2V0U2l6ZS5kYXRhKCksIHN0YXRpY19jYXN0
PHVpbnQzMl90PihyZXNvdXJjZVNldFNpemUuc2l6ZSgpKSkpOworICAgIH0KKyAgICBpZiAodGV4
dHVyZUNvdW50ID4gMCkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShtRHluYW1pY0Rlc2NyaXB0
b3JQb29sc1trVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleF0uaW5pdChjb250ZXh0VmssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmdGV4dHVyZVNldFNpemUsIDEpKTsKKyAgICB9CisKKyAgICBtRHluYW1p
Y0J1ZmZlck9mZnNldHMucmVzaXplKGdsRXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZUNv
dW50KCkpOworCisgICAgLy8gSW5pdGlhbGl6ZSBhbiAiZW1wdHkiIGJ1ZmZlciBmb3IgdXNlIHdp
dGggZGVmYXVsdCB1bmlmb3JtIGJsb2NrcyB3aGVyZSB0aGVyZSBhcmUgbm8gdW5pZm9ybXMsCisg
ICAgLy8gb3IgYXRvbWljIGNvdW50ZXIgYnVmZmVyIGFycmF5IGluZGljZXMgdGhhdCBhcmUgdW51
c2VkLgorICAgIGNvbnN0ZXhwciBWa0J1ZmZlclVzYWdlRmxhZ3Mga0VtcHR5QnVmZmVyVXNhZ2Ug
PQorICAgICAgICBWS19CVUZGRVJfVVNBR0VfVU5JRk9STV9CVUZGRVJfQklUIHwgVktfQlVGRkVS
X1VTQUdFX1NUT1JBR0VfQlVGRkVSX0JJVDsKKworICAgIFZrQnVmZmVyQ3JlYXRlSW5mbyBlbXB0
eUJ1ZmZlckluZm8gICAgPSB7fTsKKyAgICBlbXB0eUJ1ZmZlckluZm8uc1R5cGUgICAgICAgICAg
ICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQlVGRkVSX0NSRUFURV9JTkZPOworICAgIGVtcHR5
QnVmZmVySW5mby5mbGFncyAgICAgICAgICAgICAgICAgPSAwOworICAgIGVtcHR5QnVmZmVySW5m
by5zaXplICAgICAgICAgICAgICAgICAgPSA0OworICAgIGVtcHR5QnVmZmVySW5mby51c2FnZSAg
ICAgICAgICAgICAgICAgPSBrRW1wdHlCdWZmZXJVc2FnZTsKKyAgICBlbXB0eUJ1ZmZlckluZm8u
c2hhcmluZ01vZGUgICAgICAgICAgID0gVktfU0hBUklOR19NT0RFX0VYQ0xVU0lWRTsKKyAgICBl
bXB0eUJ1ZmZlckluZm8ucXVldWVGYW1pbHlJbmRleENvdW50ID0gMDsKKyAgICBlbXB0eUJ1ZmZl
ckluZm8ucFF1ZXVlRmFtaWx5SW5kaWNlcyAgID0gbnVsbHB0cjsKKworICAgIGNvbnN0ZXhwciBW
a01lbW9yeVByb3BlcnR5RmxhZ3Mga01lbW9yeVR5cGUgPSBWS19NRU1PUllfUFJPUEVSVFlfREVW
SUNFX0xPQ0FMX0JJVDsKKyAgICByZXR1cm4gbUVtcHR5QnVmZmVyLmluaXQoY29udGV4dFZrLCBl
bXB0eUJ1ZmZlckluZm8sIGtNZW1vcnlUeXBlKTsKK30KKwordm9pZCBQcm9ncmFtRXhlY3V0YWJs
ZVZrOjp1cGRhdGVEZWZhdWx0VW5pZm9ybXNEZXNjcmlwdG9yU2V0KAorICAgIGNvbnN0IGdsOjpQ
cm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICBnbDo6U2hhZGVyTWFwPERlZmF1bHRVbmlm
b3JtQmxvY2s+ICZkZWZhdWx0VW5pZm9ybUJsb2NrcywKKyAgICBDb250ZXh0VmsgKmNvbnRleHRW
aykKK3sKKyAgICB1aW50MzJfdCBzaGFkZXJTdGFnZUNvdW50ID0KKyAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmdldExpbmtl
ZFNoYWRlclN0YWdlQ291bnQoKSk7CisKKyAgICBnbDo6U2hhZGVyVmVjdG9yPFZrRGVzY3JpcHRv
ckJ1ZmZlckluZm8+IGRlc2NyaXB0b3JCdWZmZXJJbmZvKHNoYWRlclN0YWdlQ291bnQpOworICAg
IGdsOjpTaGFkZXJWZWN0b3I8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRlRGVzY3JpcHRvcklu
Zm8oc2hhZGVyU3RhZ2VDb3VudCk7CisKKyAgICBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNoZS5jbGVh
cigpOworCisgICAgLy8gV3JpdGUgZGVmYXVsdCB1bmlmb3JtcyBmb3IgZWFjaCBzaGFkZXIgdHlw
ZS4KKyAgICB1aW50MzJfdCB3cml0ZUluZm9Db3VudCA9IDA7CisgICAgZm9yIChjb25zdCBnbDo6
U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDoKKyAgICAgICAgIHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFt
RXhlY3V0YWJsZSgpLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQorICAgIHsKKyAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdW5pZm9ybUJsb2NrTmFtZSA9IGtEZWZhdWx0VW5pZm9ybU5hbWVzW3No
YWRlclR5cGVdOworICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmluZm8gID0g
bVZhcmlhYmxlSW5mb01hcFtzaGFkZXJUeXBlXVt1bmlmb3JtQmxvY2tOYW1lXTsKKyAgICAgICAg
aWYgKCFpbmZvLmFjdGl2ZVN0YWdlc1tzaGFkZXJUeXBlXSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgRGVmYXVsdFVuaWZvcm1CbG9jayAmdW5p
Zm9ybUJsb2NrICA9IGRlZmF1bHRVbmlmb3JtQmxvY2tzW3NoYWRlclR5cGVdOworICAgICAgICBW
a0Rlc2NyaXB0b3JCdWZmZXJJbmZvICZidWZmZXJJbmZvID0gZGVzY3JpcHRvckJ1ZmZlckluZm9b
d3JpdGVJbmZvQ291bnRdOworICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZv
ICAgID0gd3JpdGVEZXNjcmlwdG9ySW5mb1t3cml0ZUluZm9Db3VudF07CisKKyAgICAgICAgaWYg
KCF1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgdms6OkJ1ZmZlckhlbHBlciAqYnVmZmVySGVscGVyID0gdW5pZm9ybUJsb2NrLnN0b3JhZ2Uu
Z2V0Q3VycmVudEJ1ZmZlcigpOworICAgICAgICAgICAgYnVmZmVySW5mby5idWZmZXIgICAgICAg
ICAgICAgID0gYnVmZmVySGVscGVyLT5nZXRCdWZmZXIoKS5nZXRIYW5kbGUoKTsKKyAgICAgICAg
ICAgIG1EZXNjcmlwdG9yQnVmZmVyc0NhY2hlLmVtcGxhY2VfYmFjayhidWZmZXJIZWxwZXIpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbUVtcHR5QnVm
ZmVyLnJldGFpbigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CisgICAgICAgICAg
ICBidWZmZXJJbmZvLmJ1ZmZlciA9IG1FbXB0eUJ1ZmZlci5nZXRCdWZmZXIoKS5nZXRIYW5kbGUo
KTsKKyAgICAgICAgICAgIG1EZXNjcmlwdG9yQnVmZmVyc0NhY2hlLmVtcGxhY2VfYmFjaygmbUVt
cHR5QnVmZmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlckluZm8ub2Zmc2V0ID0gMDsK
KyAgICAgICAgYnVmZmVySW5mby5yYW5nZSAgPSBWS19XSE9MRV9TSVpFOworCisgICAgICAgIHdy
aXRlSW5mby5zVHlwZSAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfV1JJVEVfREVTQ1JJ
UFRPUl9TRVQ7CisgICAgICAgIHdyaXRlSW5mby5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0cjsK
KyAgICAgICAgd3JpdGVJbmZvLmRzdFNldCAgICAgICAgICAgPSBtRGVzY3JpcHRvclNldHNba1Vu
aWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XTsKKyAgICAgICAgd3JpdGVJbmZvLmRzdEJp
bmRpbmcgICAgICAgPSBpbmZvLmJpbmRpbmc7CisgICAgICAgIHdyaXRlSW5mby5kc3RBcnJheUVs
ZW1lbnQgID0gMDsKKyAgICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JDb3VudCAgPSAxOworICAg
ICAgICB3cml0ZUluZm8uZGVzY3JpcHRvclR5cGUgICA9IFZLX0RFU0NSSVBUT1JfVFlQRV9VTklG
T1JNX0JVRkZFUl9EWU5BTUlDOworICAgICAgICB3cml0ZUluZm8ucEltYWdlSW5mbyAgICAgICA9
IG51bGxwdHI7CisgICAgICAgIHdyaXRlSW5mby5wQnVmZmVySW5mbyAgICAgID0gJmJ1ZmZlcklu
Zm87CisgICAgICAgIHdyaXRlSW5mby5wVGV4ZWxCdWZmZXJWaWV3ID0gbnVsbHB0cjsKKworICAg
ICAgICArK3dyaXRlSW5mb0NvdW50OworICAgIH0KKworICAgIFZrRGV2aWNlIGRldmljZSA9IGNv
bnRleHRWay0+Z2V0RGV2aWNlKCk7CisKKyAgICBBU1NFUlQod3JpdGVJbmZvQ291bnQgPD0ga1Jl
c2VydmVkRGVmYXVsdFVuaWZvcm1CaW5kaW5nQ291bnQpOworCisgICAgdmtVcGRhdGVEZXNjcmlw
dG9yU2V0cyhkZXZpY2UsIHdyaXRlSW5mb0NvdW50LCB3cml0ZURlc2NyaXB0b3JJbmZvLmRhdGEo
KSwgMCwgbnVsbHB0cik7Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6dXBkYXRlQnVm
ZmVyc0Rlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBl
IHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZl
ckhlbHBlciAqY29tbWFuZEJ1ZmZlckhlbHBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFj
ZUJsb2NrPiAmYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NyaXB0b3JUeXBlKQoreworICAgIGlm
IChibG9ja3MuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBW
a0Rlc2NyaXB0b3JTZXQgZGVzY3JpcHRvclNldCA9IG1EZXNjcmlwdG9yU2V0c1trU2hhZGVyUmVz
b3VyY2VEZXNjcmlwdG9yU2V0SW5kZXhdOworCisgICAgQVNTRVJUKGRlc2NyaXB0b3JUeXBlID09
IFZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUiB8fAorICAgICAgICAgICBkZXNjcmlw
dG9yVHlwZSA9PSBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIpOworICAgIGNvbnN0
IGJvb2wgaXNTdG9yYWdlQnVmZmVyID0gZGVzY3JpcHRvclR5cGUgPT0gVktfREVTQ1JJUFRPUl9U
WVBFX1NUT1JBR0VfQlVGRkVSOworCisgICAgc3RhdGljX2Fzc2VydCgKKyAgICAgICAgZ2w6OklN
UExFTUVOVEFUSU9OX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MgPj0KKyAgICAg
ICAgICAgIGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1MsCisg
ICAgICAgICJUaGUgZGVzY3JpcHRvciBhcnJheXMgaGVyZSB3b3VsZCBoYXZlIGluYWRlcXVhdGUg
c2l6ZSBmb3IgdW5pZm9ybSBidWZmZXIgb2JqZWN0cyIpOworCisgICAgZ2w6OlN0b3JhZ2VCdWZm
ZXJzQXJyYXk8VmtEZXNjcmlwdG9yQnVmZmVySW5mbz4gZGVzY3JpcHRvckJ1ZmZlckluZm87Cisg
ICAgZ2w6OlN0b3JhZ2VCdWZmZXJzQXJyYXk8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRlRGVz
Y3JpcHRvckluZm87CisgICAgdWludDMyX3Qgd3JpdGVDb3VudCA9IDA7CisKKyAgICAvLyBXcml0
ZSB1bmlmb3JtIG9yIHN0b3JhZ2UgYnVmZmVycy4KKyAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3Rh
dGUgPSBjb250ZXh0VmstPmdldFN0YXRlKCk7CisgICAgZm9yICh1aW50MzJfdCBidWZmZXJJbmRl
eCA9IDA7IGJ1ZmZlckluZGV4IDwgYmxvY2tzLnNpemUoKTsgKytidWZmZXJJbmRleCkKKyAgICB7
CisgICAgICAgIGNvbnN0IGdsOjpJbnRlcmZhY2VCbG9jayAmYmxvY2sgPSBibG9ja3NbYnVmZmVy
SW5kZXhdOworICAgICAgICBjb25zdCBnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZl
cj4gJmJ1ZmZlckJpbmRpbmcgPQorICAgICAgICAgICAgaXNTdG9yYWdlQnVmZmVyID8gZ2xTdGF0
ZS5nZXRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1ZmZlcihibG9jay5iaW5kaW5nKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogZ2xTdGF0ZS5nZXRJbmRleGVkVW5pZm9ybUJ1ZmZlcihibG9j
ay5iaW5kaW5nKTsKKworICAgICAgICBpZiAoIWJsb2NrLmlzQWN0aXZlKHNoYWRlclR5cGUpKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChidWZmZXJCaW5kaW5nLmdldCgpID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJ
bmZvIGluZm8gPSBtVmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdW2Jsb2NrLm1hcHBlZE5hbWVd
OworICAgICAgICB1aW50MzJfdCBiaW5kaW5nICAgICAgICAgICAgICAgICA9IGluZm8uYmluZGlu
ZzsKKyAgICAgICAgdWludDMyX3QgYXJyYXlFbGVtZW50ICAgICAgICAgICAgPSBibG9jay5pc0Fy
cmF5ID8gYmxvY2suYXJyYXlFbGVtZW50IDogMDsKKyAgICAgICAgVmtEZXZpY2VTaXplIG1heEJs
b2NrU2l6ZSAgICAgICAgPSBpc1N0b3JhZ2VCdWZmZXIgPyAwIDogYmxvY2suZGF0YVNpemU7CisK
KyAgICAgICAgVmtEZXNjcmlwdG9yQnVmZmVySW5mbyAmYnVmZmVySW5mbyA9IGRlc2NyaXB0b3JC
dWZmZXJJbmZvW3dyaXRlQ291bnRdOworICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3Jp
dGVJbmZvICAgID0gd3JpdGVEZXNjcmlwdG9ySW5mb1t3cml0ZUNvdW50XTsKKworICAgICAgICBX
cml0ZUJ1ZmZlckRlc2NyaXB0b3JTZXRCaW5kaW5nKGJ1ZmZlckJpbmRpbmcsIG1heEJsb2NrU2l6
ZSwgZGVzY3JpcHRvclNldCwgZGVzY3JpcHRvclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmluZGluZywgYXJyYXlFbGVtZW50LCAwLCAmYnVmZmVySW5mbywg
JndyaXRlSW5mbyk7CisKKyAgICAgICAgQnVmZmVyVmsgKmJ1ZmZlclZrICAgICAgICAgICAgID0g
dms6OkdldEltcGwoYnVmZmVyQmluZGluZy5nZXQoKSk7CisgICAgICAgIHZrOjpCdWZmZXJIZWxw
ZXIgJmJ1ZmZlckhlbHBlciA9IGJ1ZmZlclZrLT5nZXRCdWZmZXIoKTsKKworICAgICAgICBpZiAo
aXNTdG9yYWdlQnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSBzZXQgdGhlIFNI
QURFUl9SRUFEX0JJVCB0byBiZSBjb25zZXJ2YXRpdmUuCisgICAgICAgICAgICBWa0FjY2Vzc0Zs
YWdzIGFjY2Vzc0ZsYWdzID0gVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCB8IFZLX0FDQ0VTU19T
SEFERVJfV1JJVEVfQklUOworICAgICAgICAgICAgY29tbWFuZEJ1ZmZlckhlbHBlci0+YnVmZmVy
V3JpdGUocmVzb3VyY2VVc2VMaXN0LCBhY2Nlc3NGbGFncywgJmJ1ZmZlckhlbHBlcik7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjb21tYW5kQnVmZmVy
SGVscGVyLT5idWZmZXJSZWFkKHJlc291cmNlVXNlTGlzdCwgVktfQUNDRVNTX1VOSUZPUk1fUkVB
RF9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZm
ZXJIZWxwZXIpOworICAgICAgICB9CisKKyAgICAgICAgKyt3cml0ZUNvdW50OworICAgIH0KKwor
ICAgIFZrRGV2aWNlIGRldmljZSA9IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7CisKKyAgICB2a1Vw
ZGF0ZURlc2NyaXB0b3JTZXRzKGRldmljZSwgd3JpdGVDb3VudCwgd3JpdGVEZXNjcmlwdG9ySW5m
by5kYXRhKCksIDAsIG51bGxwdHIpOworfQorCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlVms6OnVw
ZGF0ZUF0b21pY0NvdW50ZXJCdWZmZXJzRGVzY3JpcHRvclNldCgKKyAgICBjb25zdCBnbDo6UHJv
Z3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVy
VHlwZSwKKyAgICBDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICB2azo6UmVzb3VyY2VVc2VMaXN0
ICpyZXNvdXJjZVVzZUxpc3QsCisgICAgQ29tbWFuZEJ1ZmZlckhlbHBlciAqY29tbWFuZEJ1ZmZl
ckhlbHBlcikKK3sKKyAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0VmstPmdl
dFN0YXRlKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkF0b21pY0NvdW50ZXJCdWZmZXI+
ICZhdG9taWNDb3VudGVyQnVmZmVycyA9CisgICAgICAgIHByb2dyYW1TdGF0ZS5nZXRBdG9taWND
b3VudGVyQnVmZmVycygpOworCisgICAgaWYgKGF0b21pY0NvdW50ZXJCdWZmZXJzLmVtcHR5KCkp
CisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmtEZXNjcmlwdG9yU2V0IGRl
c2NyaXB0b3JTZXQgPSBtRGVzY3JpcHRvclNldHNba1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNl
dEluZGV4XTsKKworICAgIHN0ZDo6c3RyaW5nIGJsb2NrTmFtZShzaDo6dms6OmtBdG9taWNDb3Vu
dGVyc0Jsb2NrTmFtZSk7CisgICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICZp
bmZvID0gbVZhcmlhYmxlSW5mb01hcFtzaGFkZXJUeXBlXVtibG9ja05hbWVdOworCisgICAgaWYg
KCFpbmZvLmFjdGl2ZVN0YWdlc1tzaGFkZXJUeXBlXSkKKyAgICB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBnbDo6QXRvbWljQ291bnRlckJ1ZmZlcnNBcnJheTxWa0Rlc2NyaXB0b3JC
dWZmZXJJbmZvPiBkZXNjcmlwdG9yQnVmZmVySW5mbzsKKyAgICBnbDo6QXRvbWljQ291bnRlckJ1
ZmZlcnNBcnJheTxWa1dyaXRlRGVzY3JpcHRvclNldD4gd3JpdGVEZXNjcmlwdG9ySW5mbzsKKyAg
ICBnbDo6QXRvbWljQ291bnRlckJ1ZmZlck1hc2sgd3JpdHRlbkJpbmRpbmdzOworCisgICAgUmVu
ZGVyZXJWayAqcmVuZGVyZXJWayA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKTsKKyAgICBjb25z
dCBWa0RldmljZVNpemUgcmVxdWlyZWRPZmZzZXRBbGlnbm1lbnQgPQorICAgICAgICByZW5kZXJl
clZrLT5nZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMoKS5saW1pdHMubWluU3RvcmFnZUJ1ZmZl
ck9mZnNldEFsaWdubWVudDsKKworICAgIC8vIFdyaXRlIGF0b21pYyBjb3VudGVyIGJ1ZmZlcnMu
CisgICAgZm9yICh1aW50MzJfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYXRvbWlj
Q291bnRlckJ1ZmZlcnMuc2l6ZSgpOyArK2J1ZmZlckluZGV4KQorICAgIHsKKyAgICAgICAgY29u
c3QgZ2w6OkF0b21pY0NvdW50ZXJCdWZmZXIgJmF0b21pY0NvdW50ZXJCdWZmZXIgPSBhdG9taWND
b3VudGVyQnVmZmVyc1tidWZmZXJJbmRleF07CisgICAgICAgIHVpbnQzMl90IGJpbmRpbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRvbWljQ291bnRlckJ1ZmZlci5iaW5k
aW5nOworICAgICAgICBjb25zdCBnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4g
JmJ1ZmZlckJpbmRpbmcgPQorICAgICAgICAgICAgZ2xTdGF0ZS5nZXRJbmRleGVkQXRvbWljQ291
bnRlckJ1ZmZlcihiaW5kaW5nKTsKKworICAgICAgICBpZiAoYnVmZmVyQmluZGluZy5nZXQoKSA9
PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIFZrRGVzY3JpcHRvckJ1ZmZlckluZm8gJmJ1ZmZlckluZm8gPSBkZXNjcmlwdG9y
QnVmZmVySW5mb1tiaW5kaW5nXTsKKyAgICAgICAgVmtXcml0ZURlc2NyaXB0b3JTZXQgJndyaXRl
SW5mbyAgICA9IHdyaXRlRGVzY3JpcHRvckluZm9bYmluZGluZ107CisKKyAgICAgICAgV3JpdGVC
dWZmZXJEZXNjcmlwdG9yU2V0QmluZGluZyhidWZmZXJCaW5kaW5nLCAwLCBkZXNjcmlwdG9yU2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0RFU0NSSVBUT1Jf
VFlQRV9TVE9SQUdFX0JVRkZFUiwgaW5mby5iaW5kaW5nLCBiaW5kaW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50LCAmYnVm
ZmVySW5mbywgJndyaXRlSW5mbyk7CisKKyAgICAgICAgQnVmZmVyVmsgKmJ1ZmZlclZrICAgICAg
ICAgICAgID0gdms6OkdldEltcGwoYnVmZmVyQmluZGluZy5nZXQoKSk7CisgICAgICAgIHZrOjpC
dWZmZXJIZWxwZXIgJmJ1ZmZlckhlbHBlciA9IGJ1ZmZlclZrLT5nZXRCdWZmZXIoKTsKKworICAg
ICAgICAvLyBXZSBzZXQgU0hBREVSX1JFQURfQklUIHRvIGJlIGNvbnNlcnZhdGl2ZS4KKyAgICAg
ICAgY29tbWFuZEJ1ZmZlckhlbHBlci0+YnVmZmVyV3JpdGUoCisgICAgICAgICAgICByZXNvdXJj
ZVVzZUxpc3QsIFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQgfCBWS19BQ0NFU1NfU0hBREVSX1dS
SVRFX0JJVCwgJmJ1ZmZlckhlbHBlcik7CisKKyAgICAgICAgd3JpdHRlbkJpbmRpbmdzLnNldChi
aW5kaW5nKTsKKyAgICB9CisKKyAgICAvLyBCaW5kIHRoZSBlbXB0eSBidWZmZXIgdG8gZXZlcnkg
YXJyYXkgc2xvdCB0aGF0J3MgdW51c2VkLgorICAgIG1FbXB0eUJ1ZmZlci5yZXRhaW4oJmNvbnRl
eHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworICAgIGZvciAoc2l6ZV90IGJpbmRpbmcgOiB+
d3JpdHRlbkJpbmRpbmdzKQorICAgIHsKKyAgICAgICAgVmtEZXNjcmlwdG9yQnVmZmVySW5mbyAm
YnVmZmVySW5mbyA9IGRlc2NyaXB0b3JCdWZmZXJJbmZvW2JpbmRpbmddOworICAgICAgICBWa1dy
aXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICAgID0gd3JpdGVEZXNjcmlwdG9ySW5mb1tiaW5k
aW5nXTsKKworICAgICAgICBidWZmZXJJbmZvLmJ1ZmZlciA9IG1FbXB0eUJ1ZmZlci5nZXRCdWZm
ZXIoKS5nZXRIYW5kbGUoKTsKKyAgICAgICAgYnVmZmVySW5mby5vZmZzZXQgPSAwOworICAgICAg
ICBidWZmZXJJbmZvLnJhbmdlICA9IFZLX1dIT0xFX1NJWkU7CisKKyAgICAgICAgd3JpdGVJbmZv
LnNUeXBlICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9XUklURV9ERVNDUklQVE9SX1NF
VDsKKyAgICAgICAgd3JpdGVJbmZvLnBOZXh0ICAgICAgICAgICAgPSBudWxscHRyOworICAgICAg
ICB3cml0ZUluZm8uZHN0U2V0ICAgICAgICAgICA9IGRlc2NyaXB0b3JTZXQ7CisgICAgICAgIHdy
aXRlSW5mby5kc3RCaW5kaW5nICAgICAgID0gaW5mby5iaW5kaW5nOworICAgICAgICB3cml0ZUlu
Zm8uZHN0QXJyYXlFbGVtZW50ICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihiaW5kaW5nKTsKKyAg
ICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JDb3VudCAgPSAxOworICAgICAgICB3cml0ZUluZm8u
ZGVzY3JpcHRvclR5cGUgICA9IFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUjsKKyAg
ICAgICAgd3JpdGVJbmZvLnBJbWFnZUluZm8gICAgICAgPSBudWxscHRyOworICAgICAgICB3cml0
ZUluZm8ucEJ1ZmZlckluZm8gICAgICA9ICZidWZmZXJJbmZvOworICAgICAgICB3cml0ZUluZm8u
cFRleGVsQnVmZmVyVmlldyA9IG51bGxwdHI7CisgICAgfQorCisgICAgVmtEZXZpY2UgZGV2aWNl
ID0gY29udGV4dFZrLT5nZXREZXZpY2UoKTsKKworICAgIHZrVXBkYXRlRGVzY3JpcHRvclNldHMo
ZGV2aWNlLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZURlc2NyaXB0b3JJbmZvLmRhdGEoKSwgMCwg
bnVsbHB0cik7Cit9CisKK2FuZ2xlOjpSZXN1bHQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6dXBkYXRl
SW1hZ2VzRGVzY3JpcHRvclNldChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0VmsgKmNv
bnRleHRWaykKK3sKKyAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxnbDo6SW1hZ2VCaW5kaW5nPiAmaW1hZ2VCaW5kaW5ncyA9IHByb2dyYW1TdGF0ZS5nZXRJbWFn
ZUJpbmRpbmdzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1
bmlmb3JtcyAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKKworICAgIGlmIChpbWFn
ZUJpbmRpbmdzLmVtcHR5KCkpCisgICAgeworICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
Q29udGludWU7CisgICAgfQorCisgICAgVmtEZXNjcmlwdG9yU2V0IGRlc2NyaXB0b3JTZXQgPSBt
RGVzY3JpcHRvclNldHNba1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4XTsKKworICAg
IGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlQXJyYXk8VGV4dHVyZVZrICo+ICZhY3RpdmVJbWFnZXMg
PSBjb250ZXh0VmstPmdldEFjdGl2ZUltYWdlcygpOworCisgICAgZ2w6OkltYWdlc0FycmF5PFZr
RGVzY3JpcHRvckltYWdlSW5mbz4gZGVzY3JpcHRvckltYWdlSW5mbzsKKyAgICBnbDo6SW1hZ2Vz
QXJyYXk8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRlRGVzY3JpcHRvckluZm87CisgICAgdWlu
dDMyX3Qgd3JpdGVDb3VudCA9IDA7CisKKyAgICAvLyBXcml0ZSBpbWFnZXMuCisgICAgZm9yICh1
aW50MzJfdCBpbWFnZUluZGV4ID0gMDsgaW1hZ2VJbmRleCA8IGltYWdlQmluZGluZ3Muc2l6ZSgp
OyArK2ltYWdlSW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBnbDo6SW1hZ2VCaW5kaW5nICZp
bWFnZUJpbmRpbmcgPSBpbWFnZUJpbmRpbmdzW2ltYWdlSW5kZXhdOworICAgICAgICB1aW50MzJf
dCB1bmlmb3JtSW5kZXggPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybUluZGV4RnJvbUltYWdlSW5k
ZXgoaW1hZ2VJbmRleCk7CisgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZpbWFnZVVu
aWZvcm0gPSB1bmlmb3Jtc1t1bmlmb3JtSW5kZXhdOworCisgICAgICAgIGlmICghaW1hZ2VVbmlm
b3JtLmlzQWN0aXZlKHNoYWRlclR5cGUpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBpbWFnZVVuaWZvcm0u
bWFwcGVkTmFtZTsKKyAgICAgICAgR2V0SW1hZ2VOYW1lV2l0aG91dEluZGljZXMoJm5hbWUpOwor
ICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmluZm8gPSBtVmFyaWFibGVJbmZv
TWFwW3NoYWRlclR5cGVdW25hbWVdOworCisgICAgICAgIEFTU0VSVCghaW1hZ2VCaW5kaW5nLnVu
cmVmZXJlbmNlZCk7CisKKyAgICAgICAgZm9yICh1aW50MzJfdCBhcnJheUVsZW1lbnQgPSAwOyBh
cnJheUVsZW1lbnQgPCBpbWFnZUJpbmRpbmcuYm91bmRJbWFnZVVuaXRzLnNpemUoKTsKKyAgICAg
ICAgICAgICArK2FycmF5RWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgR0x1aW50IGlt
YWdlVW5pdCAgICAgICAgICAgICA9IGltYWdlQmluZGluZy5ib3VuZEltYWdlVW5pdHNbYXJyYXlF
bGVtZW50XTsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpJbWFnZVVuaXQgJmJpbmRpbmcgPSBnbFN0
YXRlLmdldEltYWdlVW5pdChpbWFnZVVuaXQpOworICAgICAgICAgICAgVGV4dHVyZVZrICp0ZXh0
dXJlVmsgICAgICAgICA9IGFjdGl2ZUltYWdlc1tpbWFnZVVuaXRdOworCisgICAgICAgICAgICB2
azo6SW1hZ2VIZWxwZXIgKmltYWdlICAgICAgICAgPSAmdGV4dHVyZVZrLT5nZXRJbWFnZSgpOwor
ICAgICAgICAgICAgY29uc3Qgdms6OkltYWdlVmlldyAqaW1hZ2VWaWV3ID0gbnVsbHB0cjsKKwor
ICAgICAgICAgICAgQU5HTEVfVFJZKHRleHR1cmVWay0+Z2V0U3RvcmFnZUltYWdlVmlldyhjb250
ZXh0VmssIChiaW5kaW5nLmxheWVyZWQgPT0gR0xfVFJVRSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcubGV2ZWwsIGJpbmRpbmcu
bGF5ZXIsICZpbWFnZVZpZXcpKTsKKworICAgICAgICAgICAgLy8gTm90ZTogYmluZGluZy5hY2Nl
c3MgaXMgdW51c2VkIGJlY2F1c2UgaXQgaXMgaW1wbGllZCBieSB0aGUgc2hhZGVyLgorCisgICAg
ICAgICAgICAvLyBUT0RPKHN5b3Vzc2VmaSk6IFN1cHBvcnQgaW1hZ2UgZGF0YSByZWludGVycHJl
dGF0aW9uIGJ5IHVzaW5nIGJpbmRpbmcuZm9ybWF0LgorICAgICAgICAgICAgLy8gaHR0cDovL2Fu
Z2xlYnVnLmNvbS8zNTYzCisKKyAgICAgICAgICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyAmaW1h
Z2VJbmZvID0gZGVzY3JpcHRvckltYWdlSW5mb1t3cml0ZUNvdW50XTsKKyAgICAgICAgICAgIFZr
V3JpdGVEZXNjcmlwdG9yU2V0ICZ3cml0ZUluZm8gID0gd3JpdGVEZXNjcmlwdG9ySW5mb1t3cml0
ZUNvdW50XTsKKworICAgICAgICAgICAgaW1hZ2VJbmZvLnNhbXBsZXIgICAgID0gVktfTlVMTF9I
QU5ETEU7CisgICAgICAgICAgICBpbWFnZUluZm8uaW1hZ2VWaWV3ICAgPSBpbWFnZVZpZXctPmdl
dEhhbmRsZSgpOworICAgICAgICAgICAgaW1hZ2VJbmZvLmltYWdlTGF5b3V0ID0gaW1hZ2UtPmdl
dEN1cnJlbnRMYXlvdXQoKTsKKworICAgICAgICAgICAgd3JpdGVJbmZvLnNUeXBlICAgICAgICAg
ICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9XUklURV9ERVNDUklQVE9SX1NFVDsKKyAgICAgICAgICAg
IHdyaXRlSW5mby5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHdyaXRl
SW5mby5kc3RTZXQgICAgICAgICAgID0gZGVzY3JpcHRvclNldDsKKyAgICAgICAgICAgIHdyaXRl
SW5mby5kc3RCaW5kaW5nICAgICAgID0gaW5mby5iaW5kaW5nOworICAgICAgICAgICAgd3JpdGVJ
bmZvLmRzdEFycmF5RWxlbWVudCAgPSBhcnJheUVsZW1lbnQ7CisgICAgICAgICAgICB3cml0ZUlu
Zm8uZGVzY3JpcHRvckNvdW50ICA9IDE7CisgICAgICAgICAgICB3cml0ZUluZm8uZGVzY3JpcHRv
clR5cGUgICA9IFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0lNQUdFOworICAgICAgICAgICAg
d3JpdGVJbmZvLnBJbWFnZUluZm8gICAgICAgPSAmaW1hZ2VJbmZvOworICAgICAgICAgICAgd3Jp
dGVJbmZvLnBCdWZmZXJJbmZvICAgICAgPSBudWxscHRyOworICAgICAgICAgICAgd3JpdGVJbmZv
LnBUZXhlbEJ1ZmZlclZpZXcgPSBudWxscHRyOworCisgICAgICAgICAgICArK3dyaXRlQ291bnQ7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWa0RldmljZSBkZXZpY2UgPSBjb250ZXh0VmstPmdl
dERldmljZSgpOworCisgICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyhkZXZpY2UsIHdyaXRlQ291
bnQsIHdyaXRlRGVzY3JpcHRvckluZm8uZGF0YSgpLCAwLCBudWxscHRyKTsKKworICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBQcm9ncmFtRXhl
Y3V0YWJsZVZrOjp1cGRhdGVTaGFkZXJSZXNvdXJjZXNEZXNjcmlwdG9yU2V0KAorICAgIGNvbnN0
IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICBDb250ZXh0VmsgKmNvbnRleHRW
aywKKyAgICB2azo6UmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QsCisgICAgQ29tbWFu
ZEJ1ZmZlckhlbHBlciAqY29tbWFuZEJ1ZmZlckhlbHBlcikKK3sKKyAgICBjb25zdCBnbDo6UHJv
Z3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBjb250ZXh0VmstPmdldFN0YXRlKCkuZ2V0UHJv
Z3JhbUV4ZWN1dGFibGUoKTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CisKKyAgICBBTkdMRV9U
UlkoYWxsb2NhdGVEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywga1NoYWRlclJlc291cmNlRGVzY3Jp
cHRvclNldEluZGV4KSk7CisKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5
cGUgOiBleGVjdXRhYmxlLT5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICB7CisgICAgICAg
IHVwZGF0ZUJ1ZmZlcnNEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywgc2hhZGVyVHlwZSwgcmVzb3Vy
Y2VVc2VMaXN0LCBjb21tYW5kQnVmZmVySGVscGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrcygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVIp
OworICAgICAgICB1cGRhdGVCdWZmZXJzRGVzY3JpcHRvclNldChjb250ZXh0VmssIHNoYWRlclR5
cGUsIHJlc291cmNlVXNlTGlzdCwgY29tbWFuZEJ1ZmZlckhlbHBlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbVN0YXRlLmdldFNoYWRlclN0b3JhZ2VCbG9ja3Mo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfREVTQ1JJUFRPUl9UWVBF
X1NUT1JBR0VfQlVGRkVSKTsKKyAgICAgICAgdXBkYXRlQXRvbWljQ291bnRlckJ1ZmZlcnNEZXNj
cmlwdG9yU2V0KHByb2dyYW1TdGF0ZSwgc2hhZGVyVHlwZSwgY29udGV4dFZrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VVc2VMaXN0LCBj
b21tYW5kQnVmZmVySGVscGVyKTsKKyAgICAgICAgYW5nbGU6OlJlc3VsdCBzdGF0dXMgPSB1cGRh
dGVJbWFnZXNEZXNjcmlwdG9yU2V0KHByb2dyYW1TdGF0ZSwgc2hhZGVyVHlwZSwgY29udGV4dFZr
KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBhbmdsZTo6UmVzdWx0OjpDb250aW51ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBQcm9n
cmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXQoCisg
ICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgIGdsOjpTaGFkZXJN
YXA8RGVmYXVsdFVuaWZvcm1CbG9jaz4gJmRlZmF1bHRVbmlmb3JtQmxvY2tzLAorICAgIENvbnRl
eHRWayAqY29udGV4dFZrKQoreworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAg
ICAgICAgICA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4
ZWN1dGFibGUgJmV4ZWN1dGFibGUgPSBwcm9ncmFtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZS5oYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dChnbFN0
YXRlKSk7CisKKyAgICBBTkdMRV9UUlkoYWxsb2NhdGVEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywg
a1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4KSk7CisKKyAgICB1cGRhdGVEZWZhdWx0
VW5pZm9ybXNEZXNjcmlwdG9yU2V0KHByb2dyYW1TdGF0ZSwgZGVmYXVsdFVuaWZvcm1CbG9ja3Ms
IGNvbnRleHRWayk7CisgICAgdXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tEZXNjcmlwdG9yU2V0SW1w
bChwcm9ncmFtU3RhdGUsIGNvbnRleHRWayk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
Q29udGludWU7Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6dXBkYXRlVHJhbnNmb3Jt
RmVlZGJhY2tEZXNjcmlwdG9yU2V0SW1wbCgKKyAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZw
cm9ncmFtU3RhdGUsCisgICAgQ29udGV4dFZrICpjb250ZXh0VmspCit7CisgICAgY29uc3QgZ2w6
OlN0YXRlICZnbFN0YXRlICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsK
KyAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gZ2xTdGF0ZS5n
ZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1
dGFibGUgJmV4ZWN1dGFibGUgID0gcHJvZ3JhbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7
CisKKyAgICBpZiAoIWV4ZWN1dGFibGUuaGFzVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQoZ2xTdGF0
ZSkpCisgICAgeworICAgICAgICAvLyBJZiB4ZmIgaGFzIG5vIG91dHB1dCB0aGVyZSBpcyBubyBu
ZWVkIHRvIHVwZGF0ZSBkZXNjcmlwdG9yIHNldC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoIWdsU3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZSgpKQorICAgIHsKKyAgICAg
ICAgLy8gV2Ugc2V0IGVtcHR5IEJ1ZmZlciB0byB4ZmIgZGVzY3JpcHRvciBzZXQgYmVjYXVzZSB4
ZmIgZGVzY3JpcHRvciBzZXQKKyAgICAgICAgLy8gcmVxdWlyZXMgdmFsaWQgYnVmZmVyIGJpbmRp
bmdzLCBldmVuIGlmIHRoZXkgYXJlIGVtcHR5IGJ1ZmZlciwKKyAgICAgICAgLy8gb3RoZXJ3aXNl
IFZ1bGthbiB2YWxpZGF0aW9uIGxheWVyIGdlbmVyYXRlcyBlcnJvcnMuCisgICAgICAgIGlmICh0
cmFuc2Zvcm1GZWVkYmFjaykKKyAgICAgICAgeworICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJh
Y2tWayAqdHJhbnNmb3JtRmVlZGJhY2tWayA9IHZrOjpHZXRJbXBsKHRyYW5zZm9ybUZlZWRiYWNr
KTsKKyAgICAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmstPmluaXREZXNjcmlwdG9yU2V0KAor
ICAgICAgICAgICAgICAgIGNvbnRleHRWaywgcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyQ291bnQoKSwgJm1FbXB0eUJ1ZmZlciwKKyAgICAgICAgICAgICAgICBtRGVzY3Jp
cHRvclNldHNba1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRyYW5zZm9ybUZlZWRiYWNrVmsgKnRyYW5z
Zm9ybUZlZWRiYWNrVmsgPSB2azo6R2V0SW1wbChnbFN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1G
ZWVkYmFjaygpKTsKKyAgICB0cmFuc2Zvcm1GZWVkYmFja1ZrLT51cGRhdGVEZXNjcmlwdG9yU2V0
KGNvbnRleHRWaywgcHJvZ3JhbVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbURlc2NyaXB0b3JTZXRzW2tVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JT
ZXRJbmRleF0pOworfQorCithbmdsZTo6UmVzdWx0IFByb2dyYW1FeGVjdXRhYmxlVms6OnVwZGF0
ZVRleHR1cmVzRGVzY3JpcHRvclNldChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb250ZXh0VmsgKmNvbnRleHRWaykKK3sKKyAgICBjb25zdCBnbDo6U3RhdGUg
JmdsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0VmstPmdldFN0YXRlKCk7Cisg
ICAgY29uc3Qgdms6OlRleHR1cmVEZXNjcmlwdG9yRGVzYyAmdGV4dHVyZXNEZXNjID0gY29udGV4
dFZrLT5nZXRBY3RpdmVUZXh0dXJlc0Rlc2MoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1
dGFibGUgJmV4ZWN1dGFibGUgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFi
bGUoKTsKKworICAgIGF1dG8gaXRlciA9IG1UZXh0dXJlRGVzY3JpcHRvcnNDYWNoZS5maW5kKHRl
eHR1cmVzRGVzYyk7CisgICAgaWYgKGl0ZXIgIT0gbVRleHR1cmVEZXNjcmlwdG9yc0NhY2hlLmVu
ZCgpKQorICAgIHsKKyAgICAgICAgbURlc2NyaXB0b3JTZXRzW2tUZXh0dXJlRGVzY3JpcHRvclNl
dEluZGV4XSA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOworICAgIH0KKworICAgIEFTU0VSVChleGVjdXRhYmxlLmhhc1RleHR1cmVzKGdsU3Rh
dGUpKTsKKyAgICBib29sIG5ld1Bvb2xBbGxvY2F0ZWQ7CisgICAgQU5HTEVfVFJZKAorICAgICAg
ICBhbGxvY2F0ZURlc2NyaXB0b3JTZXRBbmRHZXRJbmZvKGNvbnRleHRWaywga1RleHR1cmVEZXNj
cmlwdG9yU2V0SW5kZXgsICZuZXdQb29sQWxsb2NhdGVkKSk7CisKKyAgICAvLyBDbGVhciBkZXNj
cmlwdG9yIHNldCBjYWNoZS4gSXQgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KKyAgICBpZiAobmV3
UG9vbEFsbG9jYXRlZCkKKyAgICB7CisgICAgICAgIG1UZXh0dXJlRGVzY3JpcHRvcnNDYWNoZS5j
bGVhcigpOworICAgIH0KKworICAgIFZrRGVzY3JpcHRvclNldCBkZXNjcmlwdG9yU2V0ID0gbURl
c2NyaXB0b3JTZXRzW2tUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4XTsKKworICAgIGdsOjpBY3Rp
dmVUZXh0dXJlQXJyYXk8VmtEZXNjcmlwdG9ySW1hZ2VJbmZvPiBkZXNjcmlwdG9ySW1hZ2VJbmZv
OworICAgIGdsOjpBY3RpdmVUZXh0dXJlQXJyYXk8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRl
RGVzY3JpcHRvckluZm87CisgICAgdWludDMyX3Qgd3JpdGVDb3VudCA9IDA7CisKKyAgICBjb25z
dCBnbDo6QWN0aXZlVGV4dHVyZUFycmF5PHZrOjpUZXh0dXJlVW5pdD4gJmFjdGl2ZVRleHR1cmVz
ID0gY29udGV4dFZrLT5nZXRBY3RpdmVUZXh0dXJlcygpOworCisgICAgYm9vbCBlbXVsYXRlU2Vh
bWZ1bEN1YmVNYXBTYW1wbGluZyA9IGNvbnRleHRWay0+ZW11bGF0ZVNlYW1mdWxDdWJlTWFwU2Ft
cGxpbmcoKTsKKyAgICBib29sIHVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycyAgID0gY29udGV4
dFZrLT51c2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMoKTsKKworICAgIGZvciAoY29uc3QgZ2w6
OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2Vz
KCkpCisgICAgeworICAgICAgICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVpbnQz
Ml90PiBtYXBwZWRTYW1wbGVyTmFtZVRvQXJyYXlPZmZzZXQ7CisgICAgICAgIGZvciAodWludDMy
X3QgdGV4dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgcHJvZ3JhbVN0YXRlLmdldFNhbXBs
ZXJCaW5kaW5ncygpLnNpemUoKTsKKyAgICAgICAgICAgICArK3RleHR1cmVJbmRleCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29uc3QgZ2w6OlNhbXBsZXJCaW5kaW5nICZzYW1wbGVyQmluZGlu
ZyA9CisgICAgICAgICAgICAgICAgcHJvZ3JhbVN0YXRlLmdldFNhbXBsZXJCaW5kaW5ncygpW3Rl
eHR1cmVJbmRleF07CisKKyAgICAgICAgICAgIEFTU0VSVCghc2FtcGxlckJpbmRpbmcudW5yZWZl
cmVuY2VkKTsKKworICAgICAgICAgICAgdWludDMyX3QgdW5pZm9ybUluZGV4ID0gcHJvZ3JhbVN0
YXRlLmdldFVuaWZvcm1JbmRleEZyb21TYW1wbGVySW5kZXgodGV4dHVyZUluZGV4KTsKKyAgICAg
ICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZzYW1wbGVyVW5pZm9ybSA9IHByb2dyYW1T
dGF0ZS5nZXRVbmlmb3JtcygpW3VuaWZvcm1JbmRleF07CisgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBtYXBwZWRTYW1wbGVyTmFtZSA9IEdsc2xhbmdHZXRNYXBwZWRTYW1wbGVyTmFtZShzYW1wbGVy
VW5pZm9ybS5uYW1lKTsKKworICAgICAgICAgICAgaWYgKCFzYW1wbGVyVW5pZm9ybS5pc0FjdGl2
ZShzaGFkZXJUeXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdWludDMyX3QgYXJyYXlPZmZzZXQgPSAwOwor
ICAgICAgICAgICAgdWludDMyX3QgYXJyYXlTaXplICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
c2FtcGxlckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHMuc2l6ZSgpKTsKKworICAgICAgICAgICAg
aWYgKCF1c2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgYXJyYXlPZmZzZXQgPSBtYXBwZWRTYW1wbGVyTmFtZVRvQXJyYXlPZmZzZXRbbWFw
cGVkU2FtcGxlck5hbWVdOworICAgICAgICAgICAgICAgIC8vIEZyb250LWVuZCBnZW5lcmF0ZXMg
YXJyYXkgZWxlbWVudHMgaW4gb3JkZXIsIHNvIHdlIGNhbiBqdXN0IGluY3JlbWVudAorICAgICAg
ICAgICAgICAgIC8vIHRoZSBvZmZzZXQgZWFjaCB0aW1lIHdlIHByb2Nlc3MgYSBuZXN0ZWQgYXJy
YXkuCisgICAgICAgICAgICAgICAgbWFwcGVkU2FtcGxlck5hbWVUb0FycmF5T2Zmc2V0W21hcHBl
ZFNhbXBsZXJOYW1lXSArPSBhcnJheVNpemU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvciAodWludDMyX3QgYXJyYXlFbGVtZW50ID0gMDsgYXJyYXlFbGVtZW50IDwgYXJyYXlTaXpl
OyArK2FycmF5RWxlbWVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHTHVpbnQg
dGV4dHVyZVVuaXQgICA9IHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzW2FycmF5RWxl
bWVudF07CisgICAgICAgICAgICAgICAgVGV4dHVyZVZrICp0ZXh0dXJlVmsgPSBhY3RpdmVUZXh0
dXJlc1t0ZXh0dXJlVW5pdF0udGV4dHVyZTsKKyAgICAgICAgICAgICAgICBTYW1wbGVyVmsgKnNh
bXBsZXJWayA9IGFjdGl2ZVRleHR1cmVzW3RleHR1cmVVbml0XS5zYW1wbGVyOworCisgICAgICAg
ICAgICAgICAgdms6OkltYWdlSGVscGVyICZpbWFnZSA9IHRleHR1cmVWay0+Z2V0SW1hZ2UoKTsK
KworICAgICAgICAgICAgICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyAmaW1hZ2VJbmZvID0gZGVz
Y3JpcHRvckltYWdlSW5mb1t3cml0ZUNvdW50XTsKKworICAgICAgICAgICAgICAgIC8vIFVzZSBi
b3VuZCBzYW1wbGVyIG9iamVjdCBpZiBvbmUgcHJlc2VudCwgb3RoZXJ3aXNlIHVzZSB0ZXh0dXJl
J3Mgc2FtcGxlcgorICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpTYW1wbGVyICZzYW1wbGVyID0K
KyAgICAgICAgICAgICAgICAgICAgKHNhbXBsZXJWayAhPSBudWxscHRyKSA/IHNhbXBsZXJWay0+
Z2V0U2FtcGxlcigpIDogdGV4dHVyZVZrLT5nZXRTYW1wbGVyKCk7CisKKyAgICAgICAgICAgICAg
ICBpbWFnZUluZm8uc2FtcGxlciAgICAgPSBzYW1wbGVyLmdldEhhbmRsZSgpOworICAgICAgICAg
ICAgICAgIGltYWdlSW5mby5pbWFnZUxheW91dCA9IGltYWdlLmdldEN1cnJlbnRMYXlvdXQoKTsK
KworICAgICAgICAgICAgICAgIGlmIChlbXVsYXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZykKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIGVtdWxhdGluZyBzZWFt
ZnVsIGN1YmVtYXBwaW5nLCB1c2UgdGhlIGZldGNoIGltYWdlIHZpZXcuICBUaGlzIGlzCisgICAg
ICAgICAgICAgICAgICAgIC8vIGJhc2ljYWxseSB0aGUgc2FtZSBpbWFnZSB2aWV3IGFzIHJlYWQs
IGV4Y2VwdCBpdCdzIGEgMkRBcnJheSB2aWV3IGZvcgorICAgICAgICAgICAgICAgICAgICAvLyBj
dWJlIG1hcHMuCisgICAgICAgICAgICAgICAgICAgIGltYWdlSW5mby5pbWFnZVZpZXcgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVZrLT5nZXRGZXRjaEltYWdlVmlld0FuZFJlY29y
ZFVzZShjb250ZXh0VmspLmdldEhhbmRsZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbWFn
ZUluZm8uaW1hZ2VWaWV3ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVWay0+Z2V0
UmVhZEltYWdlVmlld0FuZFJlY29yZFVzZShjb250ZXh0VmspLmdldEhhbmRsZSgpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5m
b01hcCAmdmFyaWFibGVJbmZvTWFwID0gbVZhcmlhYmxlSW5mb01hcFtzaGFkZXJUeXBlXTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBzYW1wbGVyTmFtZSA9CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKS0+Z2V0RmVhdHVyZXMoKS5mb3JjZU9s
ZFJld3JpdGVTdHJ1Y3RTYW1wbGVycy5lbmFibGVkCisgICAgICAgICAgICAgICAgICAgICAgICA/
IEdldE1hcHBlZFNhbXBsZXJOYW1lT2xkKHNhbXBsZXJVbmlmb3JtLm5hbWUpCisgICAgICAgICAg
ICAgICAgICAgICAgICA6IEdsc2xhbmdHZXRNYXBwZWRTYW1wbGVyTmFtZShzYW1wbGVyVW5pZm9y
bS5uYW1lKTsKKyAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmlu
Zm8gPSB2YXJpYWJsZUluZm9NYXBbc2FtcGxlck5hbWVdOworCisgICAgICAgICAgICAgICAgVmtX
cml0ZURlc2NyaXB0b3JTZXQgJndyaXRlSW5mbyA9IHdyaXRlRGVzY3JpcHRvckluZm9bd3JpdGVD
b3VudF07CisKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8uc1R5cGUgICAgICAgICAgICA9IFZL
X1NUUlVDVFVSRV9UWVBFX1dSSVRFX0RFU0NSSVBUT1JfU0VUOworICAgICAgICAgICAgICAgIHdy
aXRlSW5mby5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICB3cml0
ZUluZm8uZHN0U2V0ICAgICAgICAgICA9IGRlc2NyaXB0b3JTZXQ7CisgICAgICAgICAgICAgICAg
d3JpdGVJbmZvLmRzdEJpbmRpbmcgICAgICAgPSBpbmZvLmJpbmRpbmc7CisgICAgICAgICAgICAg
ICAgd3JpdGVJbmZvLmRzdEFycmF5RWxlbWVudCAgPSBhcnJheU9mZnNldCArIGFycmF5RWxlbWVu
dDsKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8uZGVzY3JpcHRvckNvdW50ICA9IDE7CisgICAg
ICAgICAgICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JUeXBlICAgPSBWS19ERVNDUklQVE9SX1RZ
UEVfQ09NQklORURfSU1BR0VfU0FNUExFUjsKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8ucElt
YWdlSW5mbyAgICAgICA9ICZpbWFnZUluZm87CisgICAgICAgICAgICAgICAgd3JpdGVJbmZvLnBC
dWZmZXJJbmZvICAgICAgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHdyaXRlSW5mby5wVGV4
ZWxCdWZmZXJWaWV3ID0gbnVsbHB0cjsKKworICAgICAgICAgICAgICAgICsrd3JpdGVDb3VudDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFZrRGV2aWNlIGRldmljZSA9
IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7CisKKyAgICBBU1NFUlQod3JpdGVDb3VudCA+IDApOwor
CisgICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyhkZXZpY2UsIHdyaXRlQ291bnQsIHdyaXRlRGVz
Y3JpcHRvckluZm8uZGF0YSgpLCAwLCBudWxscHRyKTsKKworICAgIG1UZXh0dXJlRGVzY3JpcHRv
cnNDYWNoZS5lbXBsYWNlKHRleHR1cmVzRGVzYywgZGVzY3JpcHRvclNldCk7CisKKyAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK2FuZ2xlOjpSZXN1bHQgUHJvZ3JhbUV4
ZWN1dGFibGVWazo6dXBkYXRlRGVzY3JpcHRvclNldHMoQ29udGV4dFZrICpjb250ZXh0VmssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKQoreworICAgIC8vIENhbiBwcm9iYWJseSB1
c2UgYmV0dGVyIGRpcnR5IGJpdHMgaGVyZS4KKworICAgIGlmIChtRGVzY3JpcHRvclNldHMuZW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworCisgICAgLy8g
RmluZCB0aGUgbWF4aW11bSBub24tbnVsbCBkZXNjcmlwdG9yIHNldC4gIFRoaXMgaXMgdXNlZCBp
biBjb25qdW5jdGlvbiB3aXRoIGEgZHJpdmVyCisgICAgLy8gd29ya2Fyb3VuZCB0byBiaW5kIGVt
cHR5IGRlc2NyaXB0b3Igc2V0cyBvbmx5IGZvciBnYXBzIGluIGJldHdlZW4gMCBhbmQgbWF4IGFu
ZCBhdm9pZAorICAgIC8vIGJpbmRpbmcgdW5uZWNlc3NhcnkgZW1wdHkgZGVzY3JpcHRvciBzZXRz
IGZvciB0aGUgc2V0cyBiZXlvbmQgbWF4LgorICAgIGNvbnN0IHNpemVfdCBkZXNjcmlwdG9yU2V0
U3RhcnQgPSBrVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXg7CisgICAgc2l6ZV90IGRl
c2NyaXB0b3JTZXRSYW5nZSAgICAgICA9IDA7CisgICAgZm9yIChzaXplX3QgZGVzY3JpcHRvclNl
dEluZGV4ID0gZGVzY3JpcHRvclNldFN0YXJ0OworICAgICAgICAgZGVzY3JpcHRvclNldEluZGV4
IDwgbURlc2NyaXB0b3JTZXRzLnNpemUoKTsgKytkZXNjcmlwdG9yU2V0SW5kZXgpCisgICAgewor
ICAgICAgICBpZiAobURlc2NyaXB0b3JTZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0gIT0gVktfTlVM
TF9IQU5ETEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0b3JTZXRSYW5nZSA9IGRl
c2NyaXB0b3JTZXRJbmRleCArIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUgICAgICAgICAgICAgICAgICAgID0gY29udGV4dFZrLT5nZXRTdGF0ZSgp
OworICAgIGNvbnN0IFZrUGlwZWxpbmVCaW5kUG9pbnQgcGlwZWxpbmVCaW5kUG9pbnQgPSBnbFN0
YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCktPmlzQ29tcHV0ZSgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFZLX1BJUEVMSU5FX0JJTkRf
UE9JTlRfQ09NUFVURQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBWS19QSVBFTElORV9CSU5EX1BPSU5UX0dSQVBISUNTOworCisgICAgZm9y
ICh1aW50MzJfdCBkZXNjcmlwdG9yU2V0SW5kZXggPSBkZXNjcmlwdG9yU2V0U3RhcnQ7IGRlc2Ny
aXB0b3JTZXRJbmRleCA8IGRlc2NyaXB0b3JTZXRSYW5nZTsKKyAgICAgICAgICsrZGVzY3JpcHRv
clNldEluZGV4KQorICAgIHsKKyAgICAgICAgVmtEZXNjcmlwdG9yU2V0IGRlc2NTZXQgPSBtRGVz
Y3JpcHRvclNldHNbZGVzY3JpcHRvclNldEluZGV4XTsKKyAgICAgICAgaWYgKGRlc2NTZXQgPT0g
VktfTlVMTF9IQU5ETEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dFZrLT5n
ZXRSZW5kZXJlcigpLT5nZXRGZWF0dXJlcygpLmJpbmRFbXB0eUZvclVudXNlZERlc2NyaXB0b3JT
ZXRzLmVuYWJsZWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdvcmthcm91bmQgYSBkcml2ZXIgYnVnIHdo
ZXJlIG1pc3NpbmcgKHRob3VnaCB1bnVzZWQpIGRlc2NyaXB0b3Igc2V0cyBpbmRpY2VzIGNhdXNl
CisgICAgICAgICAgICAvLyBsYXRlciBzZXRzIHRvIG1pc2JlaGF2ZS4KKyAgICAgICAgICAgIGlm
IChtRW1wdHlEZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5kZXhdID09IFZLX05VTExfSEFO
RExFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpEZXNjcmlwdG9y
U2V0TGF5b3V0ICZkZXNjcmlwdG9yU2V0TGF5b3V0ID0KKyAgICAgICAgICAgICAgICAgICAgbURl
c2NyaXB0b3JTZXRMYXlvdXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0uZ2V0KCk7CisKKyAgICAgICAg
ICAgICAgICBBTkdMRV9UUlkobUR5bmFtaWNEZXNjcmlwdG9yUG9vbHNbZGVzY3JpcHRvclNldElu
ZGV4XS5hbGxvY2F0ZVNldHMoCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHRWaywgZGVzY3Jp
cHRvclNldExheW91dC5wdHIoKSwgMSwKKyAgICAgICAgICAgICAgICAgICAgJm1EZXNjcmlwdG9y
UG9vbEJpbmRpbmdzW2Rlc2NyaXB0b3JTZXRJbmRleF0sCisgICAgICAgICAgICAgICAgICAgICZt
RW1wdHlEZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5kZXhdKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZXNjU2V0ID0gbUVtcHR5RGVzY3JpcHRvclNldHNbZGVzY3JpcHRvclNl
dEluZGV4XTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERlZmF1bHQgdW5pZm9ybXMgYXJlIGVu
Y29tcGFzc2VkIGluIGEgYmxvY2sgcGVyIHNoYWRlciBzdGFnZSwgYW5kIHRoZXkgYXJlIGFzc2ln
bmVkCisgICAgICAgIC8vIHRocm91Z2ggZHluYW1pYyB1bmlmb3JtIGJ1ZmZlcnMgKHJlcXVpcmlu
ZyBkeW5hbWljIG9mZnNldHMpLiAgTm8gb3RoZXIgZGVzY3JpcHRvcgorICAgICAgICAvLyByZXF1
aXJlcyBhIGR5bmFtaWMgb2Zmc2V0LgorICAgICAgICBjb25zdCB1aW50MzJfdCB1bmlmb3JtQmxv
Y2tPZmZzZXRDb3VudCA9CisgICAgICAgICAgICBkZXNjcmlwdG9yU2V0SW5kZXggPT0ga1VuaWZv
cm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4CisgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obU51bURlZmF1bHRVbmlmb3JtRGVzY3JpcHRvcnMpCisgICAgICAgICAgICAg
ICAgOiAwOworCisgICAgICAgIGNvbW1hbmRCdWZmZXItPmJpbmREZXNjcmlwdG9yU2V0cyhnZXRQ
aXBlbGluZUxheW91dCgpLCBwaXBlbGluZUJpbmRQb2ludCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JTZXRJbmRleCwgMSwgJmRlc2NTZXQsIHVu
aWZvcm1CbG9ja09mZnNldENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbUR5bmFtaWNCdWZmZXJPZmZzZXRzLmRhdGEoKSk7CisgICAgfQorCisgICAgZm9y
ICh2azo6QnVmZmVySGVscGVyICpidWZmZXIgOiBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNoZSkKKyAg
ICB7CisgICAgICAgIGJ1ZmZlci0+cmV0YWluKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlz
dCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtRXhlY3V0YWJsZVZrLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1F
eGVjdXRhYmxlVmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmE3N2ZiOGMzODFkMTBjYjhjMjA3NDUzMjEyOTQ2
ODFmOGVmNDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtRXhlY3V0YWJsZVZrLmgKQEAgLTAsMCAr
MSwyMDIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFByb2dyYW1FeGVjdXRhYmxlVmsuaDogQ29sbGVjdHMg
dGhlIGluZm9ybWF0aW9uIGFuZCBpbnRlcmZhY2VzIGNvbW1vbiB0byBib3RoIFByb2dyYW1Wa3Mg
YW5kCisvLyBQcm9ncmFtUGlwZWxpbmVWa3MgaW4gb3JkZXIgdG8gZXhlY3V0ZS9kcmF3IHdpdGgg
ZWl0aGVyLgorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9QUk9HUkFNRVhFQ1VU
QUJMRVZLX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9QUk9HUkFNRVhFQ1VU
QUJMRVZLX0hfCisKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0luZm9Mb2cuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL3ZrX2hlbHBlcnMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNz
IFNoYWRlckluZm8gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAg
IFNoYWRlckluZm8oKTsKKyAgICB+U2hhZGVySW5mbygpOworCisgICAgYW5nbGU6OlJlc3VsdCBp
bml0U2hhZGVycyhDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJTb3VyY2VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyTWFwSW50ZXJmYWNlVmFy
aWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXApOworICAgIHZvaWQgcmVsZWFzZShDb250ZXh0
VmsgKmNvbnRleHRWayk7CisKKyAgICBBTkdMRV9JTkxJTkUgYm9vbCB2YWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1Jc0luaXRpYWxpemVkOyB9CisKKyAgICBjb25zdCBnbDo6U2hhZGVyTWFwPFNwaXJ2
QmxvYj4gJmdldFNwaXJ2QmxvYnMoKSBjb25zdCB7IHJldHVybiBtU3BpcnZCbG9iczsgfQorCisg
ICAgLy8gU2F2ZSBhbmQgbG9hZCBpbXBsZW1lbnRhdGlvbiBmb3IgR0xFUyBQcm9ncmFtIEJpbmFy
eSBzdXBwb3J0LgorICAgIHZvaWQgbG9hZChnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSk7
CisgICAgdm9pZCBzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSk7CisKKyAgcHJp
dmF0ZToKKyAgICBnbDo6U2hhZGVyTWFwPFNwaXJ2QmxvYj4gbVNwaXJ2QmxvYnM7CisgICAgYm9v
bCBtSXNJbml0aWFsaXplZCA9IGZhbHNlOworfTsKKworY2xhc3MgUHJvZ3JhbUluZm8gZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIFByb2dyYW1JbmZvKCk7Cisg
ICAgflByb2dyYW1JbmZvKCk7CisKKyAgICBhbmdsZTo6UmVzdWx0IGluaXRQcm9ncmFtKENvbnRl
eHRWayAqY29udGV4dFZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hh
ZGVySW5mbyAmc2hhZGVySW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZW5hYmxlTGluZVJhc3RlckVtdWxhdGlvbik7CisgICAgdm9pZCByZWxlYXNlKENvbnRleHRWayAq
Y29udGV4dFZrKTsKKworICAgIEFOR0xFX0lOTElORSBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbVByb2dyYW1IZWxwZXIudmFsaWQoKTsgfQorCisgICAgdms6OlNoYWRlclByb2dyYW1IZWxw
ZXIgKmdldFNoYWRlclByb2dyYW0oKSB7IHJldHVybiAmbVByb2dyYW1IZWxwZXI7IH0KKworICBw
cml2YXRlOgorICAgIHZrOjpTaGFkZXJQcm9ncmFtSGVscGVyIG1Qcm9ncmFtSGVscGVyOworICAg
IGdsOjpTaGFkZXJNYXA8dms6OlJlZkNvdW50ZWQ8dms6OlNoYWRlckFuZFNlcmlhbD4+IG1TaGFk
ZXJzOworfTsKKworLy8gU3RhdGUgZm9yIHRoZSBkZWZhdWx0IHVuaWZvcm0gYmxvY2tzLgorc3Ry
dWN0IERlZmF1bHRVbmlmb3JtQmxvY2sgZmluYWwgOiBwcml2YXRlIGFuZ2xlOjpOb25Db3B5YWJs
ZQoreworICAgIERlZmF1bHRVbmlmb3JtQmxvY2soKTsKKyAgICB+RGVmYXVsdFVuaWZvcm1CbG9j
aygpOworCisgICAgdms6OkR5bmFtaWNCdWZmZXIgc3RvcmFnZTsKKworICAgIC8vIFNoYWRvdyBj
b3BpZXMgb2YgdGhlIHNoYWRlciB1bmlmb3JtIGRhdGEuCisgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZl
ciB1bmlmb3JtRGF0YTsKKworICAgIC8vIFNpbmNlIHRoZSBkZWZhdWx0IGJsb2NrcyBhcmUgbGFp
ZCBvdXQgaW4gc3RkMTQwLCB0aGlzIHRlbGxzIHVzIHdoZXJlIHRvIHdyaXRlIG9uIGEgY2FsbAor
ICAgIC8vIHRvIGEgc2V0VW5pZm9ybSBtZXRob2QuIFRoZXkgYXJlIGFycmFuZ2VkIGluIHVuaWZv
cm0gbG9jYXRpb24gb3JkZXIuCisgICAgc3RkOjp2ZWN0b3I8c2g6OkJsb2NrTWVtYmVySW5mbz4g
dW5pZm9ybUxheW91dDsKK307CisKK2NsYXNzIFByb2dyYW1FeGVjdXRhYmxlVmsKK3sKKyAgcHVi
bGljOgorICAgIFByb2dyYW1FeGVjdXRhYmxlVmsoKTsKKyAgICB2aXJ0dWFsIH5Qcm9ncmFtRXhl
Y3V0YWJsZVZrKCk7CisKKyAgICB2b2lkIHJlc2V0KENvbnRleHRWayAqY29udGV4dFZrKTsKKwor
ICAgIHZvaWQgc2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxyeDo6TGlua0V2ZW50PiBsb2FkKGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3Ry
ZWFtKTsKKworICAgIHZvaWQgY2xlYXJWYXJpYWJsZUluZm9NYXAoKTsKKyAgICBTaGFkZXJNYXBJ
bnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJmdldFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01h
cCgpCisgICAgeworICAgICAgICByZXR1cm4gbVZhcmlhYmxlSW5mb01hcDsKKyAgICB9CisKKyAg
ICBjb25zdCB2azo6UGlwZWxpbmVMYXlvdXQgJmdldFBpcGVsaW5lTGF5b3V0KCkgY29uc3QgeyBy
ZXR1cm4gbVBpcGVsaW5lTGF5b3V0LmdldCgpOyB9CisgICAgYW5nbGU6OlJlc3VsdCBjcmVhdGVQ
aXBlbGluZUxheW91dChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZn
bEV4ZWN1dGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUpOworCisgICAgYW5nbGU6OlJlc3VsdCB1
cGRhdGVUZXh0dXJlc0Rlc2NyaXB0b3JTZXQoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3Jh
bVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bnRleHRWayAqY29udGV4dFZrKTsKKyAgICBhbmdsZTo6UmVzdWx0IHVwZGF0ZVNoYWRlclJlc291
cmNlc0Rlc2NyaXB0b3JTZXQoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250
ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5k
QnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVySGVscGVyKTsKKyAgICBhbmdsZTo6UmVzdWx0IHVw
ZGF0ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldCgKKyAgICAgICAgY29uc3QgZ2w6OlBy
b2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAgICBnbDo6U2hhZGVyTWFwPERlZmF1bHRV
bmlmb3JtQmxvY2s+ICZkZWZhdWx0VW5pZm9ybUJsb2NrcywKKyAgICAgICAgQ29udGV4dFZrICpj
b250ZXh0VmspOworCisgICAgYW5nbGU6OlJlc3VsdCB1cGRhdGVEZXNjcmlwdG9yU2V0cyhDb250
ZXh0VmsgKmNvbnRleHRWaywgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpOworCisg
IHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFByb2dyYW1WazsKKyAgICBmcmllbmQgY2xhc3Mg
UHJvZ3JhbVBpcGVsaW5lVms7CisKKyAgICBhbmdsZTo6UmVzdWx0IGFsbG9jYXRlRGVzY3JpcHRv
clNldChDb250ZXh0VmsgKmNvbnRleHRWaywgdWludDMyX3QgZGVzY3JpcHRvclNldEluZGV4KTsK
KyAgICBhbmdsZTo6UmVzdWx0IGFsbG9jYXRlRGVzY3JpcHRvclNldEFuZEdldEluZm8oQ29udGV4
dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGRlc2NyaXB0b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqbmV3UG9vbEFsbG9jYXRlZE91
dCk7CisgICAgdm9pZCBhZGRJbnRlcmZhY2VCbG9ja0Rlc2NyaXB0b3JTZXREZXNjKGNvbnN0IHN0
ZDo6dmVjdG9yPGdsOjpJbnRlcmZhY2VCbG9jaz4gJmJsb2NrcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXNjcmlw
dG9yVHlwZSBkZXNjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0KTsKKyAgICB2b2lkIGFk
ZEF0b21pY0NvdW50ZXJCdWZmZXJEZXNjcmlwdG9yU2V0RGVzYygKKyAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OkF0b21pY0NvdW50ZXJCdWZmZXI+ICZhdG9taWNDb3VudGVyQnVmZmVycywK
KyAgICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgdms6OkRl
c2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0KTsKKyAgICB2b2lkIGFkZEltYWdlRGVzY3Jp
cHRvclNldERlc2MoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2Mg
KmRlc2NPdXQpOworICAgIHZvaWQgYWRkVGV4dHVyZURlc2NyaXB0b3JTZXREZXNjKGNvbnN0IGds
OjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2MgKmRl
c2NPdXQpOworCisgICAgdm9pZCB1cGRhdGVEZWZhdWx0VW5pZm9ybXNEZXNjcmlwdG9yU2V0KAor
ICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgIGds
OjpTaGFkZXJNYXA8RGVmYXVsdFVuaWZvcm1CbG9jaz4gJmRlZmF1bHRVbmlmb3JtQmxvY2tzLAor
ICAgICAgICBDb250ZXh0VmsgKmNvbnRleHRWayk7CisgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm1G
ZWVkYmFja0Rlc2NyaXB0b3JTZXRJbXBsKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1T
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29udGV4dFZrICpjb250ZXh0VmspOworICAgIHZvaWQgdXBkYXRlQnVmZmVyc0Rlc2NyaXB0b3JT
ZXQoQ29udGV4dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlckhlbHBlciAq
Y29tbWFuZEJ1ZmZlckhlbHBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbnRlcmZhY2VCbG9jaz4gJmJsb2NrcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGVzY3JpcHRvclR5cGUgZGVzY3JpcHRvclR5
cGUpOworICAgIHZvaWQgdXBkYXRlQXRvbWljQ291bnRlckJ1ZmZlcnNEZXNjcmlwdG9yU2V0KGNv
bnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bnRleHRWayAqY29udGV4dFZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVy
SGVscGVyICpjb21tYW5kQnVmZmVySGVscGVyKTsKKyAgICBhbmdsZTo6UmVzdWx0IHVwZGF0ZUlt
YWdlc0Rlc2NyaXB0b3JTZXQoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2hh
ZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb250ZXh0VmsgKmNvbnRleHRWayk7CisKKyAgICAvLyBUaGlzIGlzIGEgc3BlY2lh
bCAiZW1wdHkiIHBsYWNlaG9sZGVyIGJ1ZmZlciBmb3Igd2hlbiBhIHNoYWRlciBoYXMgbm8gdW5p
Zm9ybXMgb3IgZG9lc24ndAorICAgIC8vIHVzZSBhbGwgc2xvdHMgaW4gdGhlIGF0b21pYyBjb3Vu
dGVyIGJ1ZmZlciBhcnJheS4KKyAgICAvLworICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSBiZWNhdXNl
IHdlIHdhbnQgdG8ga2VlcCBhIGNvbXBhdGlibGUgcGlwZWxpbmUgbGF5b3V0IGluIGFsbCBjYXNl
cywKKyAgICAvLyBhbmQgVnVsa2FuIGRvZXMgbm90IHRvbGVyYXRlIGhhdmluZyBudWxsIGhhbmRs
ZXMgaW4gYSBkZXNjcmlwdG9yIHNldC4KKyAgICB2azo6QnVmZmVySGVscGVyIG1FbXB0eUJ1ZmZl
cjsKKworICAgIC8vIERlc2NyaXB0b3Igc2V0cyBmb3IgdW5pZm9ybSBibG9ja3MgYW5kIHRleHR1
cmVzIGZvciB0aGlzIHByb2dyYW0uCisgICAgc3RkOjp2ZWN0b3I8VmtEZXNjcmlwdG9yU2V0PiBt
RGVzY3JpcHRvclNldHM7CisgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXRBcnJheTxWa0Rlc2Ny
aXB0b3JTZXQ+IG1FbXB0eURlc2NyaXB0b3JTZXRzOworICAgIHN0ZDo6dmVjdG9yPHZrOjpCdWZm
ZXJIZWxwZXIgKj4gbURlc2NyaXB0b3JCdWZmZXJzQ2FjaGU7CisgICAgc2l6ZV90IG1OdW1EZWZh
dWx0VW5pZm9ybURlc2NyaXB0b3JzOworCisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPHZrOjpUZXh0
dXJlRGVzY3JpcHRvckRlc2MsIFZrRGVzY3JpcHRvclNldD4gbVRleHR1cmVEZXNjcmlwdG9yc0Nh
Y2hlOworCisgICAgLy8gV2Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcGlwZWxpbmUgYW5kIGRl
c2NyaXB0b3Igc2V0IGxheW91dHMuIFRoaXMgZW5zdXJlcyB0aGV5IGRvbid0IGdldAorICAgIC8v
IGRlbGV0ZWQgd2hpbGUgdGhpcyBwcm9ncmFtIGlzIGluIHVzZS4KKyAgICB2azo6QmluZGluZ1Bv
aW50ZXI8dms6OlBpcGVsaW5lTGF5b3V0PiBtUGlwZWxpbmVMYXlvdXQ7CisgICAgdms6OkRlc2Ny
aXB0b3JTZXRMYXlvdXRQb2ludGVyQXJyYXkgbURlc2NyaXB0b3JTZXRMYXlvdXRzOworCisgICAg
Ly8gS2VlcCBiaW5kaW5ncyB0byB0aGUgZGVzY3JpcHRvciBwb29scy4gVGhpcyBlbnN1cmVzIHRo
ZSBwb29scyBzdGF5IHZhbGlkIHdoaWxlIHRoZSBQcm9ncmFtCisgICAgLy8gaXMgaW4gdXNlLgor
ICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0QXJyYXk8dms6OlJlZkNvdW50ZWREZXNjcmlwdG9y
UG9vbEJpbmRpbmc+IG1EZXNjcmlwdG9yUG9vbEJpbmRpbmdzOworCisgICAgLy8gU3RvcmUgZGVz
Y3JpcHRvciBwb29scyBoZXJlLiBXZSBzdG9yZSB0aGUgZGVzY3JpcHRvcnMgaW4gdGhlIFByb2dy
YW0gdG8gZmFjaWxpdGF0ZSBkZXNjcmlwdG9yCisgICAgLy8gY2FjaGUgbWFuYWdlbWVudC4gSXQg
Y2FuIGFsc28gYWxsb3cgZmV3ZXIgZGVzY3JpcHRvcnMgZm9yIHNoYWRlcnMgd2hpY2ggdXNlIGZl
d2VyCisgICAgLy8gdGV4dHVyZXMvYnVmZmVycy4KKyAgICB2azo6RGVzY3JpcHRvclNldExheW91
dEFycmF5PHZrOjpEeW5hbWljRGVzY3JpcHRvclBvb2w+IG1EeW5hbWljRGVzY3JpcHRvclBvb2xz
OworCisgICAgZ2w6OlNoYWRlclZlY3Rvcjx1aW50MzJfdD4gbUR5bmFtaWNCdWZmZXJPZmZzZXRz
OworCisgICAgLy8gVE9ETzogaHR0cDovL2FuZ2xlYnVnLmNvbS80NTI0OiBOZWVkIGEgZGlmZmVy
ZW50IGhhc2gga2V5IHRoYW4gYSBzdHJpbmcsCisgICAgLy8gc2luY2UgdGhhdCdzIHNsb3cgdG8g
Y2FsY3VsYXRlLgorICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCBtVmFyaWFi
bGVJbmZvTWFwOworCisgICAgUHJvZ3JhbUluZm8gbURlZmF1bHRQcm9ncmFtSW5mbzsKKyAgICBQ
cm9ncmFtSW5mbyBtTGluZVJhc3RlclByb2dyYW1JbmZvOworfTsKKworfSAgLy8gbmFtZXNwYWNl
IHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1BST0dSQU1FWEVDVVRB
QkxFVktfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcAppbmRleCAxMzk1NjJl
YTRiMjQzMDNiODIzNWQ5YmI1MTNkNmJhODU2ZTFmNjczLi4zZWEwMjc0Mzg1NzUyNjE1ZjU1YmQx
OTI4NDZkMGIyYzMzOWY2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuY3Bw
CkBAIC0xNTMsMjA1ICsxNTMsNiBAQCBhbmdsZTo6UmVzdWx0IFN5bmNEZWZhdWx0VW5pZm9ybUJs
b2NrKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKIH0KIAotdWludDMyX3QgR2V0SW50ZXJmYWNlQmxvY2tBcnJheVNpemUoY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmYmxvY2tzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgYnVmZmVySW5kZXgpCi17Ci0gICAgY29uc3QgZ2w6
OkludGVyZmFjZUJsb2NrICZibG9jayA9IGJsb2Nrc1tidWZmZXJJbmRleF07Ci0KLSAgICBpZiAo
IWJsb2NrLmlzQXJyYXkpCi0gICAgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBB
U1NFUlQoYmxvY2suYXJyYXlFbGVtZW50ID09IDApOwotCi0gICAgLy8gU2VhcmNoIGNvbnNlY3V0
aXZlbHkgdW50aWwgYWxsIGFycmF5IGluZGljZXMgb2YgdGhpcyBibG9jayBhcmUgdmlzaXRlZC4K
LSAgICB1aW50MzJfdCBhcnJheVNpemU7Ci0gICAgZm9yIChhcnJheVNpemUgPSAxOyBidWZmZXJJ
bmRleCArIGFycmF5U2l6ZSA8IGJsb2Nrcy5zaXplKCk7ICsrYXJyYXlTaXplKQotICAgIHsKLSAg
ICAgICAgY29uc3QgZ2w6OkludGVyZmFjZUJsb2NrICZuZXh0QmxvY2sgPSBibG9ja3NbYnVmZmVy
SW5kZXggKyBhcnJheVNpemVdOwotCi0gICAgICAgIGlmIChuZXh0QmxvY2suYXJyYXlFbGVtZW50
ICE9IGFycmF5U2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBJdCdzIHVuZXhwZWN0ZWQgZm9yIGFuIGFycmF5IHRvIHN0YXJ0IGF0IGEg
bm9uLXplcm8gYXJyYXkgc2l6ZSwgc28gd2UgY2FuIGFsd2F5cyByZWx5IG9uCi0gICAgICAgIC8v
IHRoZSBzZXF1ZW50aWFsIGBhcnJheUVsZW1lbnRgcyB0byBiZWxvbmcgdG8gdGhlIHNhbWUgYmxv
Y2suCi0gICAgICAgIEFTU0VSVChuZXh0QmxvY2submFtZSA9PSBibG9jay5uYW1lKTsKLSAgICAg
ICAgQVNTRVJUKG5leHRCbG9jay5pc0FycmF5KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXlT
aXplOwotfQotCi12b2lkIEFkZEludGVyZmFjZUJsb2NrRGVzY3JpcHRvclNldERlc2MoY29uc3Qg
c3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmYmxvY2tzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJpbmRpbmdTdGFydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpEZXNjcmlwdG9y
U2V0TGF5b3V0RGVzYyAqZGVzY091dCkKLXsKLSAgICB1aW50MzJfdCBiaW5kaW5nSW5kZXggPSAw
OwotICAgIGZvciAodWludDMyX3QgYnVmZmVySW5kZXggPSAwOyBidWZmZXJJbmRleCA8IGJsb2Nr
cy5zaXplKCk7KQotICAgIHsKLSAgICAgICAgY29uc3QgdWludDMyX3QgYXJyYXlTaXplID0gR2V0
SW50ZXJmYWNlQmxvY2tBcnJheVNpemUoYmxvY2tzLCBidWZmZXJJbmRleCk7Ci0gICAgICAgIFZr
U2hhZGVyU3RhZ2VGbGFncyBhY3RpdmVTdGFnZXMgPQotICAgICAgICAgICAgZ2xfdms6OkdldFNo
YWRlclN0YWdlRmxhZ3MoYmxvY2tzW2J1ZmZlckluZGV4XS5hY3RpdmVTaGFkZXJzKCkpOwotCi0g
ICAgICAgIGRlc2NPdXQtPnVwZGF0ZShiaW5kaW5nU3RhcnQgKyBiaW5kaW5nSW5kZXgsIGRlc2NU
eXBlLCBhcnJheVNpemUsIGFjdGl2ZVN0YWdlcyk7Ci0KLSAgICAgICAgYnVmZmVySW5kZXggKz0g
YXJyYXlTaXplOwotICAgICAgICArK2JpbmRpbmdJbmRleDsKLSAgICB9Ci19Ci0KLXZvaWQgQWRk
QXRvbWljQ291bnRlckJ1ZmZlckRlc2NyaXB0b3JTZXREZXNjKAotICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPGdsOjpBdG9taWNDb3VudGVyQnVmZmVyPiAmYXRvbWljQ291bnRlckJ1ZmZlcnMsCi0gICAg
dWludDMyX3QgYmluZGluZ1N0YXJ0LAotICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyAq
ZGVzY091dCkKLXsKLSAgICBpZiAoYXRvbWljQ291bnRlckJ1ZmZlcnMuZW1wdHkoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWa1NoYWRlclN0YWdlRmxhZ3MgYWN0aXZl
U3RhZ2VzID0gMDsKLSAgICBmb3IgKGNvbnN0IGdsOjpBdG9taWNDb3VudGVyQnVmZmVyICZidWZm
ZXIgOiBhdG9taWNDb3VudGVyQnVmZmVycykKLSAgICB7Ci0gICAgICAgIGFjdGl2ZVN0YWdlcyB8
PSBnbF92azo6R2V0U2hhZGVyU3RhZ2VGbGFncyhidWZmZXIuYWN0aXZlU2hhZGVycygpKTsKLSAg
ICB9Ci0KLSAgICAvLyBBIHNpbmdsZSBzdG9yYWdlIGJ1ZmZlciBhcnJheSBpcyB1c2VkIGZvciBh
bGwgc3RhZ2VzIGZvciBzaW1wbGljaXR5LgotICAgIGRlc2NPdXQtPnVwZGF0ZShiaW5kaW5nU3Rh
cnQsIFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwKLSAgICAgICAgICAgICAgICAg
ICAgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTLCBhY3RpdmVT
dGFnZXMpOwotfQotCi12b2lkIEFkZEltYWdlRGVzY3JpcHRvclNldERlc2MoY29uc3QgZ2w6OlBy
b2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGJpbmRpbmdTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
azo6RGVzY3JpcHRvclNldExheW91dERlc2MgKmRlc2NPdXQpCi17Ci0gICAgY29uc3Qgc3RkOjp2
ZWN0b3I8Z2w6OkltYWdlQmluZGluZz4gJmltYWdlQmluZGluZ3MgPSBwcm9ncmFtU3RhdGUuZ2V0
SW1hZ2VCaW5kaW5ncygpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3Jt
PiAmdW5pZm9ybXMgICAgID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1zKCk7Ci0KLSAgICBmb3Ig
KHVpbnQzMl90IGltYWdlSW5kZXggPSAwOyBpbWFnZUluZGV4IDwgaW1hZ2VCaW5kaW5ncy5zaXpl
KCk7ICsraW1hZ2VJbmRleCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpJbWFnZUJpbmRpbmcg
JmltYWdlQmluZGluZyA9IGltYWdlQmluZGluZ3NbaW1hZ2VJbmRleF07Ci0KLSAgICAgICAgdWlu
dDMyX3QgdW5pZm9ybUluZGV4ID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21JbWFn
ZUluZGV4KGltYWdlSW5kZXgpOwotICAgICAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmaW1h
Z2VVbmlmb3JtID0gdW5pZm9ybXNbdW5pZm9ybUluZGV4XTsKLQotICAgICAgICAvLyBUaGUgZnJv
bnQtZW5kIGFsd2F5cyBiaW5kcyBhcnJheSBpbWFnZSB1bml0cyBzZXF1ZW50aWFsbHkuCi0gICAg
ICAgIHVpbnQzMl90IGFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihpbWFnZUJpbmRp
bmcuYm91bmRJbWFnZVVuaXRzLnNpemUoKSk7Ci0gICAgICAgIFZrU2hhZGVyU3RhZ2VGbGFncyBh
Y3RpdmVTdGFnZXMgPSBnbF92azo6R2V0U2hhZGVyU3RhZ2VGbGFncyhpbWFnZVVuaWZvcm0uYWN0
aXZlU2hhZGVycygpKTsKLQotICAgICAgICB1aW50MzJfdCBiaW5kaW5nSW5kZXggPSBiaW5kaW5n
U3RhcnQgKyBpbWFnZUluZGV4OwotICAgICAgICBkZXNjT3V0LT51cGRhdGUoYmluZGluZ0luZGV4
LCBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRSwgYXJyYXlTaXplLCBhY3RpdmVTdGFn
ZXMpOwotICAgIH0KLX0KLQotdm9pZCBBZGRUZXh0dXJlRGVzY3JpcHRvclNldERlc2MoY29uc3Qg
Z2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1c2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2MgKmRlc2NPdXQp
Ci17Ci0gICAgdWludDMyX3QgYmluZGluZ0luZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMDsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6U2FtcGxlckJpbmRpbmc+ICZz
YW1wbGVyQmluZGluZ3MgPSBwcm9ncmFtU3RhdGUuZ2V0U2FtcGxlckJpbmRpbmdzKCk7Ci0gICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlmb3JtcyAgICAgICAgID0g
cHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1zKCk7Ci0KLSAgICBmb3IgKHVpbnQzMl90IHRleHR1cmVJ
bmRleCA9IDA7IHRleHR1cmVJbmRleCA8IHNhbXBsZXJCaW5kaW5ncy5zaXplKCk7ICsrdGV4dHVy
ZUluZGV4KQotICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OlNhbXBsZXJCaW5kaW5nICZzYW1wbGVy
QmluZGluZyA9IHNhbXBsZXJCaW5kaW5nc1t0ZXh0dXJlSW5kZXhdOwotCi0gICAgICAgIHVpbnQz
Ml90IHVuaWZvcm1JbmRleCA9IHByb2dyYW1TdGF0ZS5nZXRVbmlmb3JtSW5kZXhGcm9tU2FtcGxl
ckluZGV4KHRleHR1cmVJbmRleCk7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZz
YW1wbGVyVW5pZm9ybSA9IHVuaWZvcm1zW3VuaWZvcm1JbmRleF07Ci0KLSAgICAgICAgLy8gVGhl
IGZyb250LWVuZCBhbHdheXMgYmluZHMgYXJyYXkgc2FtcGxlciB1bml0cyBzZXF1ZW50aWFsbHku
Ci0gICAgICAgIHVpbnQzMl90IGFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzYW1w
bGVyQmluZGluZy5ib3VuZFRleHR1cmVVbml0cy5zaXplKCkpOwotICAgICAgICBWa1NoYWRlclN0
YWdlRmxhZ3MgYWN0aXZlU3RhZ2VzID0KLSAgICAgICAgICAgIGdsX3ZrOjpHZXRTaGFkZXJTdGFn
ZUZsYWdzKHNhbXBsZXJVbmlmb3JtLmFjdGl2ZVNoYWRlcnMoKSk7Ci0KLSAgICAgICAgaWYgKCF1
c2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIDJE
IGFycmF5cyBhcmUgc3BsaXQgaW50byBtdWx0aXBsZSAxRCBhcnJheXMgd2hlbiBnZW5lcmF0aW5n
Ci0gICAgICAgICAgICAvLyBMaW5rZWRVbmlmb3Jtcy4gU2luY2UgdGhleSBhcmUgZmxhdHRlbmVk
IGludG8gb25lIGFycmF5LCBpZ25vcmUgdGhlCi0gICAgICAgICAgICAvLyBub256ZXJvIGVsZW1l
bnRzIGFuZCBleHBhbmQgdGhlIGFycmF5IHRvIHRoZSB0b3RhbCBhcnJheSBzaXplLgotICAgICAg
ICAgICAgaWYgKGdsOjpTYW1wbGVyTmFtZUNvbnRhaW5zTm9uWmVyb0FycmF5RWxlbWVudChzYW1w
bGVyVW5pZm9ybS5uYW1lKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgb3V0ZXJB
cnJheVNpemUgOiBzYW1wbGVyVW5pZm9ybS5vdXRlckFycmF5U2l6ZXMpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgYXJyYXlTaXplICo9IG91dGVyQXJyYXlTaXplOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZGVzY091dC0+dXBkYXRlKGJpbmRpbmdJbmRleCsr
LCBWS19ERVNDUklQVE9SX1RZUEVfQ09NQklORURfSU1BR0VfU0FNUExFUiwgYXJyYXlTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlU3RhZ2VzKTsKLSAgICB9Ci19Ci0KLXZvaWQg
V3JpdGVCdWZmZXJEZXNjcmlwdG9yU2V0QmluZGluZyhjb25zdCBnbDo6T2Zmc2V0QmluZGluZ1Bv
aW50ZXI8Z2w6OkJ1ZmZlcj4gJmJ1ZmZlckJpbmRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmtEZXZpY2VTaXplIG1heFNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmtEZXNjcmlwdG9yU2V0IGRlc2NTZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXNjcmlwdG9yVHlwZSBkZXNjVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaW5kaW5nSW5kZXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJyYXlFbGVtZW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSByZXF1
aXJlZE9mZnNldEFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZvICpidWZmZXJJbmZvT3V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0ICp3cml0ZUluZm9PdXQp
Ci17Ci0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYnVmZmVyQmluZGluZy5nZXQoKTsKLSAgICBB
U1NFUlQoYnVmZmVyICE9IG51bGxwdHIpOwotCi0gICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3Mgbm8g
cG9zc2libGUgdW5kZXIvb3ZlcmZsb3cgd2l0aCBiaW5kaW5nIHNpemUuCi0gICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVmtEZXZpY2VTaXplKSA+PSBzaXplb2YoYnVmZmVyQmluZGluZy5nZXRTaXpl
KCkpLAotICAgICAgICAgICAgICAgICAgIlZrRGV2aWNlU2l6ZSB0b28gc21hbGwiKTsKLSAgICBB
U1NFUlQoYnVmZmVyQmluZGluZy5nZXRTaXplKCkgPj0gMCk7Ci0KLSAgICBCdWZmZXJWayAqYnVm
ZmVyVmsgICAgICAgICAgICAgPSB2azo6R2V0SW1wbChidWZmZXIpOwotICAgIFZrRGV2aWNlU2l6
ZSBvZmZzZXQgICAgICAgICAgICA9IGJ1ZmZlckJpbmRpbmcuZ2V0T2Zmc2V0KCk7Ci0gICAgVmtE
ZXZpY2VTaXplIHNpemUgICAgICAgICAgICAgID0gYnVmZmVyQmluZGluZy5nZXRTaXplKCk7Ci0g
ICAgdms6OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigp
OwotCi0gICAgLy8gSWYgc2l6ZSBpcyAwLCB3ZSBjYW4ndCBhbHdheXMgdXNlIFZLX1dIT0xFX1NJ
WkUgKG9yIGJ1ZmZlckhlbHBlci5nZXRTaXplKCkpLCBhcyB0aGUKLSAgICAvLyBiYWNraW5nIGJ1
ZmZlciBtYXkgYmUgbGFyZ2VyIHRoYW4gbWF4KkJ1ZmZlclJhbmdlLiAgSW4gdGhhdCBjYXNlLCB3
ZSB1c2UgdGhlIG1pbmltdW0gb2YKLSAgICAvLyB0aGUgYmFja2luZyBidWZmZXIgc2l6ZSAod2hh
dCdzIGxlZnQgYWZ0ZXIgb2Zmc2V0KSBhbmQgdGhlIGJ1ZmZlciBzaXplIGFzIGRlZmluZWQgYnkg
dGhlCi0gICAgLy8gc2hhZGVyLiAgVGhhdCBsYXR0ZXIgaXMgb25seSB2YWxpZCBmb3IgVUJPcywg
YXMgU1NCT3MgbWF5IGhhdmUgdmFyaWFibGUgbGVuZ3RoIGFycmF5cy4KLSAgICBzaXplID0gc2l6
ZSA+IDAgPyBzaXplIDogKGJ1ZmZlckhlbHBlci5nZXRTaXplKCkgLSBvZmZzZXQpOwotICAgIGlm
IChtYXhTaXplID4gMCkKLSAgICB7Ci0gICAgICAgIHNpemUgPSBzdGQ6Om1pbihzaXplLCBtYXhT
aXplKTsKLSAgICB9Ci0KLSAgICAvLyBJZiByZXF1aXJlZE9mZnNldEFsaWdubWVudCBpcyAwLCB0
aGUgYnVmZmVyIG9mZnNldCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIG5lY2Vzc2FyeQotICAg
IC8vIGFsaWdubWVudCB0aHJvdWdoIG90aGVyIG1lYW5zICh0aGUgYmFja2VuZCBzcGVjaWZ5aW5n
IHRoZSBhbGlnbm1lbnQgdGhyb3VnaCBhIEdMRVMgbGltaXQgdGhhdAotICAgIC8vIHRoZSBmcm9u
dGVuZCB0aGVuIGVuZm9yY2VzKS4gIElmIGl0J3Mgbm90IDAsIHdlIG5lZWQgdG8gYmluZCB0aGUg
YnVmZmVyIGF0IGFuIG9mZnNldCB0aGF0J3MKLSAgICAvLyBhbGlnbmVkLiAgVGhlIGRpZmZlcmVu
Y2UgaW4gb2Zmc2V0cyBpcyBjb21tdW5pY2F0ZWQgdG8gdGhlIHNoYWRlciB2aWEgZHJpdmVyIHVu
aWZvcm1zLgotICAgIGlmIChyZXF1aXJlZE9mZnNldEFsaWdubWVudCkKLSAgICB7Ci0gICAgICAg
IFZrRGV2aWNlU2l6ZSBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAvIHJlcXVpcmVkT2Zmc2V0QWxp
Z25tZW50KSAqIHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50OwotICAgICAgICBWa0RldmljZVNpemUg
b2Zmc2V0RGlmZiAgICA9IG9mZnNldCAtIGFsaWduZWRPZmZzZXQ7Ci0KLSAgICAgICAgb2Zmc2V0
ID0gYWxpZ25lZE9mZnNldDsKLSAgICAgICAgc2l6ZSArPSBvZmZzZXREaWZmOwotICAgIH0KLQot
ICAgIGJ1ZmZlckluZm9PdXQtPmJ1ZmZlciA9IGJ1ZmZlckhlbHBlci5nZXRCdWZmZXIoKS5nZXRI
YW5kbGUoKTsKLSAgICBidWZmZXJJbmZvT3V0LT5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgYnVmZmVy
SW5mb091dC0+cmFuZ2UgID0gc2l6ZTsKLQotICAgIHdyaXRlSW5mb091dC0+c1R5cGUgICAgICAg
ICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1dSSVRFX0RFU0NSSVBUT1JfU0VUOwotICAgIHdyaXRl
SW5mb091dC0+cE5leHQgICAgICAgICAgICA9IG51bGxwdHI7Ci0gICAgd3JpdGVJbmZvT3V0LT5k
c3RTZXQgICAgICAgICAgID0gZGVzY1NldDsKLSAgICB3cml0ZUluZm9PdXQtPmRzdEJpbmRpbmcg
ICAgICAgPSBiaW5kaW5nSW5kZXg7Ci0gICAgd3JpdGVJbmZvT3V0LT5kc3RBcnJheUVsZW1lbnQg
ID0gYXJyYXlFbGVtZW50OwotICAgIHdyaXRlSW5mb091dC0+ZGVzY3JpcHRvckNvdW50ICA9IDE7
Ci0gICAgd3JpdGVJbmZvT3V0LT5kZXNjcmlwdG9yVHlwZSAgID0gZGVzY1R5cGU7Ci0gICAgd3Jp
dGVJbmZvT3V0LT5wSW1hZ2VJbmZvICAgICAgID0gbnVsbHB0cjsKLSAgICB3cml0ZUluZm9PdXQt
PnBCdWZmZXJJbmZvICAgICAgPSBidWZmZXJJbmZvT3V0OwotICAgIHdyaXRlSW5mb091dC0+cFRl
eGVsQnVmZmVyVmlldyA9IG51bGxwdHI7Ci0gICAgQVNTRVJUKHdyaXRlSW5mb091dC0+cEJ1ZmZl
ckluZm9bMF0uYnVmZmVyICE9IFZLX05VTExfSEFORExFKTsKLX0KLQogY2xhc3MgU3RkMTQwQmxv
Y2tMYXlvdXRFbmNvZGVyRmFjdG9yeSA6IHB1YmxpYyBnbDo6Q3VzdG9tQmxvY2tMYXlvdXRFbmNv
ZGVyRmFjdG9yeQogewogICBwdWJsaWM6CkBAIC0zNTksMTY0ICsxNjAsMTIgQEAgY2xhc3MgU3Rk
MTQwQmxvY2tMYXlvdXRFbmNvZGVyRmFjdG9yeSA6IHB1YmxpYyBnbDo6Q3VzdG9tQmxvY2tMYXlv
dXRFbmNvZGVyRmFjdG8KIH07CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLS8vIFByb2dy
YW1Wazo6U2hhZGVySW5mbyBpbXBsZW1lbnRhdGlvbi4KLVByb2dyYW1Wazo6U2hhZGVySW5mbzo6
U2hhZGVySW5mbygpIHt9Ci0KLVByb2dyYW1Wazo6U2hhZGVySW5mbzo6flNoYWRlckluZm8oKSA9
IGRlZmF1bHQ7Ci0KLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjpTaGFkZXJJbmZvOjppbml0U2hh
ZGVycygKLSAgICBDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICBjb25zdCBnbDo6U2hhZGVyTWFw
PHN0ZDo6c3RyaW5nPiAmc2hhZGVyU291cmNlcywKLSAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKLSAgICBnbDo6U2hhZGVyTWFwPFNwaXJ2
QmxvYj4gKnNwaXJ2QmxvYnNPdXQpCi17Ci0gICAgQVNTRVJUKCF2YWxpZCgpKTsKLQotICAgIEFO
R0xFX1RSWShHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJDb2RlKGNvbnRleHRWaywgY29udGV4
dFZrLT5nZXRDYXBzKCksIHNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJbmZvTWFwLCBzcGlydkJsb2JzT3V0KSk7Ci0K
LSAgICBtSXNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwotfQotCi12b2lkIFByb2dyYW1Wazo6U2hhZGVySW5mbzo6cmVsZWFzZShDb250ZXh0
VmsgKmNvbnRleHRWaykKLXsKLSAgICBmb3IgKFNwaXJ2QmxvYiAmc3BpcnZCbG9iIDogbVNwaXJ2
QmxvYnMpCi0gICAgewotICAgICAgICBzcGlydkJsb2IuY2xlYXIoKTsKLSAgICB9Ci0gICAgbUlz
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKLX0KLQotLy8gUHJvZ3JhbVZrOjpQcm9ncmFtSW5mbyBpbXBs
ZW1lbnRhdGlvbi4KLVByb2dyYW1Wazo6UHJvZ3JhbUluZm86OlByb2dyYW1JbmZvKCkge30KLQot
UHJvZ3JhbVZrOjpQcm9ncmFtSW5mbzo6flByb2dyYW1JbmZvKCkgPSBkZWZhdWx0OwotCi1hbmds
ZTo6UmVzdWx0IFByb2dyYW1Wazo6UHJvZ3JhbUluZm86OmluaXRQcm9ncmFtKENvbnRleHRWayAq
Y29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaGFkZXJJbmZvICZzaGFkZXJJbmZvLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZUxpbmVSYXN0ZXJFbXVsYXRp
b24pCi17Ci0gICAgY29uc3QgZ2w6OlNoYWRlck1hcDxTcGlydkJsb2I+ICZzcGlydkJsb2JzID0g
c2hhZGVySW5mby5nZXRTcGlydkJsb2JzKCk7Ci0KLSAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJU
eXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKLSAgICB7Ci0gICAgICAgIGNv
bnN0IFNwaXJ2QmxvYiAmc3BpcnZCbG9iID0gc3BpcnZCbG9ic1tzaGFkZXJUeXBlXTsKLQotICAg
ICAgICBpZiAoIXNwaXJ2QmxvYi5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBTkdM
RV9UUlkodms6OkluaXRTaGFkZXJBbmRTZXJpYWwoY29udGV4dFZrLCAmbVNoYWRlcnNbc2hhZGVy
VHlwZV0uZ2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3BpcnZCbG9iLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcGlydkJsb2Iuc2l6ZSgpICogc2l6ZW9mKHVpbnQzMl90KSkpOwotCi0gICAg
ICAgICAgICBtUHJvZ3JhbUhlbHBlci5zZXRTaGFkZXIoc2hhZGVyVHlwZSwgJm1TaGFkZXJzW3No
YWRlclR5cGVdKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChlbmFibGVMaW5lUmFzdGVy
RW11bGF0aW9uKQotICAgIHsKLSAgICAgICAgbVByb2dyYW1IZWxwZXIuZW5hYmxlU3BlY2lhbGl6
YXRpb25Db25zdGFudCgKLSAgICAgICAgICAgIHNoOjp2azo6U3BlY2lhbGl6YXRpb25Db25zdGFu
dElkOjpMaW5lUmFzdGVyRW11bGF0aW9uKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUHJvZ3JhbVZrOjpQcm9ncmFtSW5mbzo6cmVsZWFz
ZShDb250ZXh0VmsgKmNvbnRleHRWaykKLXsKLSAgICBtUHJvZ3JhbUhlbHBlci5yZWxlYXNlKGNv
bnRleHRWayk7Ci0KLSAgICBmb3IgKHZrOjpSZWZDb3VudGVkPHZrOjpTaGFkZXJBbmRTZXJpYWw+
ICZzaGFkZXIgOiBtU2hhZGVycykKLSAgICB7Ci0gICAgICAgIHNoYWRlci5nZXQoKS5kZXN0cm95
KGNvbnRleHRWay0+Z2V0RGV2aWNlKCkpOwotICAgIH0KLX0KLQotYW5nbGU6OlJlc3VsdCBQcm9n
cmFtVms6OmxvYWRTcGlydkJsb2IoQ29udGV4dFZrICpjb250ZXh0VmssIGdsOjpCaW5hcnlJbnB1
dFN0cmVhbSAqc3RyZWFtKQotewotICAgIC8vIFJlYWQgaW4gc2hhZGVyIGNvZGVzIGZvciBhbGwg
c2hhZGVyIHR5cGVzCi0gICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDog
Z2w6OkFsbFNoYWRlclR5cGVzKCkpCi0gICAgewotICAgICAgICAvLyBSZWFkIHRoZSBzaGFkZXIg
c291cmNlCi0gICAgICAgIG1TaGFkZXJTb3VyY2VzW3NoYWRlclR5cGVdID0gc3RyZWFtLT5yZWFk
U3RyaW5nKCk7Ci0KLSAgICAgICAgU3BpcnZCbG9iICpzcGlydkJsb2IgPSAmbVNoYWRlckluZm8u
Z2V0U3BpcnZCbG9icygpW3NoYWRlclR5cGVdOwotCi0gICAgICAgIC8vIFJlYWQgdGhlIFNQSVIt
VgotICAgICAgICBzdHJlYW0tPnJlYWRJbnRWZWN0b3I8dWludDMyX3Q+KHNwaXJ2QmxvYik7Ci0g
ICAgfQotCi0gICAgLy8gUmVhZCB0aGUgZXhwZWN0ZWQgYmluZGluZ3MKLSAgICBzaXplX3QgaW5m
b0NvdW50ID0gc3RyZWFtLT5yZWFkSW50PHNpemVfdD4oKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGluZm9Db3VudDsgKytpKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgdmFyTmFt
ZSA9IHN0cmVhbS0+cmVhZFN0cmluZygpOwotICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJs
ZUluZm8gaW5mbzsKLQotICAgICAgICBpbmZvLmRlc2NyaXB0b3JTZXQgPSBzdHJlYW0tPnJlYWRJ
bnQ8dWludDMyX3Q+KCk7Ci0gICAgICAgIGluZm8uYmluZGluZyAgICAgICA9IHN0cmVhbS0+cmVh
ZEludDx1aW50MzJfdD4oKTsKLSAgICAgICAgaW5mby5hY3RpdmVTdGFnZXMgID0gZ2w6OlNoYWRl
ckJpdFNldChzdGF0aWNfY2FzdDx1aW50OF90PihzdHJlYW0tPnJlYWRJbnQ8dWludDMyX3Q+KCkp
KTsKLSAgICAgICAgaW5mby54ZmJCdWZmZXIgICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90
PigpOwotICAgICAgICBpbmZvLnhmYk9mZnNldCAgICAgPSBzdHJlYW0tPnJlYWRJbnQ8dWludDMy
X3Q+KCk7Ci0gICAgICAgIGluZm8ueGZiU3RyaWRlICAgICA9IHN0cmVhbS0+cmVhZEludDx1aW50
MzJfdD4oKTsKLSAgICAgICAgZm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFs
bFNoYWRlclR5cGVzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm8ubG9jYXRpb25bc2hh
ZGVyVHlwZV0gID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90PigpOwotICAgICAgICAgICAgaW5m
by5jb21wb25lbnRbc2hhZGVyVHlwZV0gPSBzdHJlYW0tPnJlYWRJbnQ8dWludDMyX3Q+KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtVmFyaWFibGVJbmZvTWFwW3Zhck5hbWVdID0gaW5mbzsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUHJv
Z3JhbVZrOjpzYXZlU3BpcnZCbG9iKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKKy8v
IFByb2dyYW1WayBpbXBsZW1lbnRhdGlvbi4KK1Byb2dyYW1Wazo6UHJvZ3JhbVZrKGNvbnN0IGds
OjpQcm9ncmFtU3RhdGUgJnN0YXRlKSA6IFByb2dyYW1JbXBsKHN0YXRlKQogewotICAgIC8vIFdy
aXRlIG91dCBzaGFkZXIgY29kZXMgZm9yIGFsbCBzaGFkZXIgdHlwZXMKLSAgICBmb3IgKGNvbnN0
IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKLSAgICB7
Ci0gICAgICAgIC8vIFdyaXRlIHRoZSBzaGFkZXIgc291cmNlCi0gICAgICAgIHN0cmVhbS0+d3Jp
dGVTdHJpbmcobVNoYWRlclNvdXJjZXNbc2hhZGVyVHlwZV0pOwotCi0gICAgICAgIGNvbnN0IFNw
aXJ2QmxvYiAmc3BpcnZCbG9iID0gbVNoYWRlckluZm8uZ2V0U3BpcnZCbG9icygpW3NoYWRlclR5
cGVdOwotCi0gICAgICAgIC8vIFdyaXRlIHRoZSBTUElSLVYKLSAgICAgICAgc3RyZWFtLT53cml0
ZUludFZlY3RvcihzcGlydkJsb2IpOwotICAgIH0KLQotICAgIC8vIFdyaXRlIHRoZSBleHBlY3Rl
ZCBiaW5kaW5ncwotICAgIHN0cmVhbS0+d3JpdGVJbnQobVZhcmlhYmxlSW5mb01hcC5zaXplKCkp
OwotICAgIGZvciAoY29uc3QgYXV0byAmbmFtZUluZm8gOiBtVmFyaWFibGVJbmZvTWFwKQotICAg
IHsKLSAgICAgICAgc3RyZWFtLT53cml0ZVN0cmluZyhuYW1lSW5mby5maXJzdCk7Ci0gICAgICAg
IHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZShuYW1lSW5mby5zZWNvbmQuZGVzY3JpcHRvclNldCk7
Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZShuYW1lSW5mby5zZWNvbmQuYmluZGlu
Zyk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZShuYW1lSW5mby5zZWNvbmQuYWN0
aXZlU3RhZ2VzLmJpdHMoKSk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZShuYW1l
SW5mby5zZWNvbmQueGZiQnVmZmVyKTsKLSAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25l
KG5hbWVJbmZvLnNlY29uZC54ZmJPZmZzZXQpOwotICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JO
ZWdPbmUobmFtZUluZm8uc2Vjb25kLnhmYlN0cmlkZSk7Ci0gICAgICAgIGZvciAoZ2w6OlNoYWRl
clR5cGUgc2hhZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUobmFtZUluZm8uc2Vjb25kLmxvY2F0aW9u
W3NoYWRlclR5cGVdKTsKLSAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZShuYW1l
SW5mby5zZWNvbmQuY29tcG9uZW50W3NoYWRlclR5cGVdKTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBHbHNsYW5nV3JhcHBlclZrOjpSZXNldEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbygmbUds
c2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyk7CiB9CiAKLS8vIFByb2dyYW1WayBpbXBsZW1lbnRh
dGlvbi4KLVByb2dyYW1Wazo6RGVmYXVsdFVuaWZvcm1CbG9jazo6RGVmYXVsdFVuaWZvcm1CbG9j
aygpIHt9Ci0KLVByb2dyYW1Wazo6RGVmYXVsdFVuaWZvcm1CbG9jazo6fkRlZmF1bHRVbmlmb3Jt
QmxvY2soKSA9IGRlZmF1bHQ7Ci0KLVByb2dyYW1Wazo6UHJvZ3JhbVZrKGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJnN0YXRlKQotICAgIDogUHJvZ3JhbUltcGwoc3RhdGUpLAotICAgICAgbUR5bmFt
aWNCdWZmZXJPZmZzZXRze30sCi0gICAgICBtU3RvcmFnZUJsb2NrQmluZGluZ3NPZmZzZXQoMCks
Ci0gICAgICBtQXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzT2Zmc2V0KDApLAotICAgICAgbUlt
YWdlQmluZGluZ3NPZmZzZXQoMCkKLXt9Ci0KIFByb2dyYW1Wazo6flByb2dyYW1WaygpID0gZGVm
YXVsdDsKIAogdm9pZCBQcm9ncmFtVms6OmRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpCkBAIC01MjcsNDAgKzE3NiwxOCBAQCB2b2lkIFByb2dyYW1Wazo6ZGVzdHJveShjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCkKIAogdm9pZCBQcm9ncmFtVms6OnJlc2V0KENvbnRleHRWayAq
Y29udGV4dFZrKQogewotICAgIGZvciAoYXV0byAmZGVzY3JpcHRvclNldExheW91dCA6IG1EZXNj
cmlwdG9yU2V0TGF5b3V0cykKLSAgICB7Ci0gICAgICAgIGRlc2NyaXB0b3JTZXRMYXlvdXQucmVz
ZXQoKTsKLSAgICB9Ci0gICAgbVBpcGVsaW5lTGF5b3V0LnJlc2V0KCk7Ci0KICAgICBSZW5kZXJl
clZrICpyZW5kZXJlciA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKTsKIAotICAgIGZvciAoYXV0
byAmdW5pZm9ybUJsb2NrIDogbURlZmF1bHRVbmlmb3JtQmxvY2tzKQotICAgIHsKLSAgICAgICAg
dW5pZm9ybUJsb2NrLnN0b3JhZ2UucmVsZWFzZShyZW5kZXJlcik7Ci0gICAgfQotCiAgICAgbVNo
YWRlckluZm8ucmVsZWFzZShjb250ZXh0VmspOwotICAgIG1EZWZhdWx0UHJvZ3JhbUluZm8ucmVs
ZWFzZShjb250ZXh0VmspOwotICAgIG1MaW5lUmFzdGVyUHJvZ3JhbUluZm8ucmVsZWFzZShjb250
ZXh0VmspOwogCi0gICAgbUVtcHR5QnVmZmVyLnJlbGVhc2UocmVuZGVyZXIpOwotCi0gICAgbURl
c2NyaXB0b3JTZXRzLmNsZWFyKCk7Ci0gICAgbUVtcHR5RGVzY3JpcHRvclNldHMuZmlsbChWS19O
VUxMX0hBTkRMRSk7Ci0KLSAgICBmb3IgKHZrOjpSZWZDb3VudGVkRGVzY3JpcHRvclBvb2xCaW5k
aW5nICZiaW5kaW5nIDogbURlc2NyaXB0b3JQb29sQmluZGluZ3MpCisgICAgZm9yIChhdXRvICZ1
bmlmb3JtQmxvY2sgOiBtRGVmYXVsdFVuaWZvcm1CbG9ja3MpCiAgICAgewotICAgICAgICBiaW5k
aW5nLnJlc2V0KCk7CisgICAgICAgIHVuaWZvcm1CbG9jay5zdG9yYWdlLnJlbGVhc2UocmVuZGVy
ZXIpOwogICAgIH0KIAotICAgIGZvciAodms6OkR5bmFtaWNEZXNjcmlwdG9yUG9vbCAmZGVzY3Jp
cHRvclBvb2wgOiBtRHluYW1pY0Rlc2NyaXB0b3JQb29scykKLSAgICB7Ci0gICAgICAgIGRlc2Ny
aXB0b3JQb29sLnJlbGVhc2UoY29udGV4dFZrKTsKLSAgICB9CisgICAgR2xzbGFuZ1dyYXBwZXJW
azo6UmVzZXRHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8oJm1HbHNsYW5nUHJvZ3JhbUludGVy
ZmFjZUluZm8pOwogCi0gICAgbVRleHR1cmVEZXNjcmlwdG9yc0NhY2hlLmNsZWFyKCk7Ci0gICAg
bURlc2NyaXB0b3JCdWZmZXJzQ2FjaGUuY2xlYXIoKTsKKyAgICBtRXhlY3V0YWJsZS5yZXNldChj
b250ZXh0VmspOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8cng6OkxpbmtFdmVudD4gUHJvZ3JhbVZr
Ojpsb2FkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApAQCAtNTcxLDExICsxOTgsMTAgQEAg
c3RkOjp1bmlxdWVfcHRyPHJ4OjpMaW5rRXZlbnQ+IFByb2dyYW1Wazo6bG9hZChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICBnbDo6U2hhZGVyTWFwPHNpemVfdD4gcmVxdWlyZWRCdWZm
ZXJTaXplOwogICAgIHJlcXVpcmVkQnVmZmVyU2l6ZS5maWxsKDApOwogCi0gICAgYW5nbGU6OlJl
c3VsdCBzdGF0dXMgPSBsb2FkU3BpcnZCbG9iKGNvbnRleHRWaywgc3RyZWFtKTsKLSAgICBpZiAo
c3RhdHVzICE9IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGlua0V2ZW50RG9uZT4oc3RhdHVzKTsKLSAgICB9CisgICAgcmVz
ZXQoY29udGV4dFZrKTsKKworICAgIG1TaGFkZXJJbmZvLmxvYWQoc3RyZWFtKTsKKyAgICBtRXhl
Y3V0YWJsZS5sb2FkKHN0cmVhbSk7CiAKICAgICAvLyBEZXNlcmlhbGl6ZXMgdGhlIHVuaWZvcm1M
YXlvdXQgZGF0YSBvZiBtRGVmYXVsdFVuaWZvcm1CbG9ja3MKICAgICBmb3IgKGdsOjpTaGFkZXJU
eXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKQEAgLTU5NSwyMyArMjIxLDIy
IEBAIHN0ZDo6dW5pcXVlX3B0cjxyeDo6TGlua0V2ZW50PiBQcm9ncmFtVms6OmxvYWQoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJlcXVpcmVkQnVmZmVyU2l6ZVtzaGFkZXJU
eXBlXSA9IHN0cmVhbS0+cmVhZEludDxzaXplX3Q+KCk7CiAgICAgfQogCi0gICAgcmVzZXQoY29u
dGV4dFZrKTsKLQogICAgIC8vIEluaXRpYWxpemUgYW5kIHJlc2l6ZSB0aGUgbURlZmF1bHRVbmlm
b3JtQmxvY2tzJyBtZW1vcnkKLSAgICBzdGF0dXMgPSByZXNpemVVbmlmb3JtQmxvY2tNZW1vcnko
Y29udGV4dFZrLCByZXF1aXJlZEJ1ZmZlclNpemUpOworICAgIGFuZ2xlOjpSZXN1bHQgc3RhdHVz
ID0gcmVzaXplVW5pZm9ybUJsb2NrTWVtb3J5KGNvbnRleHRWaywgcmVxdWlyZWRCdWZmZXJTaXpl
KTsKICAgICBpZiAoc3RhdHVzICE9IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua0V2ZW50RG9uZT4oc3RhdHVzKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rRXZlbnREb25lPihsaW5rSW1w
bChjb250ZXh0LCBpbmZvTG9nKSk7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZn
bEV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBzdGF0dXMg
PSBtRXhlY3V0YWJsZS5jcmVhdGVQaXBlbGluZUxheW91dChjb250ZXh0LCBnbEV4ZWN1dGFibGUs
IG1TdGF0ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua0V2ZW50RG9uZT4oc3Rh
dHVzKTsKIH0KIAogdm9pZCBQcm9ncmFtVms6OnNhdmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsIGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKIHsKLSAgICAvLyAoZ2VvZmZsYW5n
KTogTG9vayBpbnRvIHNhdmluZyBzaGFkZXIgbW9kdWxlcyBpbiBTaGFkZXJJbmZvIG9iamVjdHMg
KGtlZXAgaW4gbWluZCB0aGF0IHdlCi0gICAgLy8gY29tcGlsZSBzaGFkZXJzIGxhemlseSkKLSAg
ICBzYXZlU3BpcnZCbG9iKHN0cmVhbSk7CisgICAgbVNoYWRlckluZm8uc2F2ZShzdHJlYW0pOwor
ICAgIG1FeGVjdXRhYmxlLnNhdmUoc3RyZWFtKTsKIAogICAgIC8vIFNlcmlhbGl6ZXMgdGhlIHVu
aWZvcm1MYXlvdXQgZGF0YSBvZiBtRGVmYXVsdFVuaWZvcm1CbG9ja3MKICAgICBmb3IgKGdsOjpT
aGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKQEAgLTY1MiwxODYg
KzI3NywzNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGlua0V2ZW50PiBQcm9ncmFtVms6OmxpbmsoY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgLy8gYXNzaWdubWVudCBkb25lIGluIHRoYXQg
ZnVuY3Rpb24uCiAgICAgbGlua1Jlc291cmNlcyhyZXNvdXJjZXMpOwogCi0gICAgR2xzbGFuZ1dy
YXBwZXJWazo6R2V0U2hhZGVyU291cmNlKGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKS0+Z2V0RmVh
dHVyZXMoKSwgbVN0YXRlLCByZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtU2hhZGVyU291cmNlcywgJm1WYXJpYWJsZUluZm9NYXApOwotCiAgICAgcmVz
ZXQoY29udGV4dFZrKTsKKyAgICBtRXhlY3V0YWJsZS5jbGVhclZhcmlhYmxlSW5mb01hcCgpOwor
CisgICAgLy8gR2F0aGVyIHZhcmlhYmxlIGluZm8gYW5kIHRyYW5zZm9ybSBzb3VyY2VzLgorICAg
IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+IHNoYWRlclNvdXJjZXM7CisgICAgR2xzbGFuZ1dy
YXBwZXJWazo6R2V0U2hhZGVyU291cmNlKGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKS0+Z2V0RmVh
dHVyZXMoKSwgbVN0YXRlLCByZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvLCAmc2hhZGVyU291cmNlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1FeGVjdXRhYmxlLm1WYXJp
YWJsZUluZm9NYXApOwogCi0gICAgYW5nbGU6OlJlc3VsdCBzdGF0dXMgPSBpbml0RGVmYXVsdFVu
aWZvcm1CbG9ja3MoY29udGV4dCk7CisgICAgLy8gQ29tcGlsZSB0aGUgc2hhZGVycy4KKyAgICBh
bmdsZTo6UmVzdWx0IHN0YXR1cyA9CisgICAgICAgIG1TaGFkZXJJbmZvLmluaXRTaGFkZXJzKGNv
bnRleHRWaywgc2hhZGVyU291cmNlcywgbUV4ZWN1dGFibGUubVZhcmlhYmxlSW5mb01hcCk7CiAg
ICAgaWYgKHN0YXR1cyAhPSBhbmdsZTo6UmVzdWx0OjpDb250aW51ZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+KHN0YXR1cyk7CiAgICAgfQog
Ci0gICAgLy8gVE9ETyhqaWUuYS5jaGVuQGludGVsLmNvbSk6IFBhcmFsbGVsaXplIGxpbmtpbmcu
Ci0gICAgLy8gaHR0cDovL2NyYnVnLmNvbS84NDk1NzYKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMaW5rRXZlbnREb25lPihsaW5rSW1wbChjb250ZXh0LCBpbmZvTG9nKSk7Ci19Ci0KLWFu
Z2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjpsaW5rSW1wbChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250
ZXh0LCBnbDo6SW5mb0xvZyAmaW5mb0xvZykKLXsKLSAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3Rh
dGUgICAgICAgICAgICAgICAgID0gZ2xDb250ZXh0LT5nZXRTdGF0ZSgpOwotICAgIENvbnRleHRW
ayAqY29udGV4dFZrICAgICAgICAgICAgICAgICAgICAgPSB2azo6R2V0SW1wbChnbENvbnRleHQp
OwotICAgIFJlbmRlcmVyVmsgKnJlbmRlcmVyICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0
VmstPmdldFJlbmRlcmVyKCk7Ci0gICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zvcm1G
ZWVkYmFjayA9IGdsU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0KLSAgICB1
cGRhdGVCaW5kaW5nT2Zmc2V0cygpOwotCi0gICAgLy8gU3RvcmUgYSByZWZlcmVuY2UgdG8gdGhl
IHBpcGVsaW5lIGFuZCBkZXNjcmlwdG9yIHNldCBsYXlvdXRzLiBUaGlzIHdpbGwgY3JlYXRlIHRo
ZW0gaWYgdGhleQotICAgIC8vIGRvbid0IGFscmVhZHkgZXhpc3QgaW4gdGhlIGNhY2hlLgotCi0g
ICAgLy8gRGVmYXVsdCB1bmlmb3JtcyBhbmQgdHJhbnNmb3JtIGZlZWRiYWNrOgotICAgIHZrOjpE
ZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyB1bmlmb3Jtc0FuZFhmYlNldERlc2M7Ci0gICAgdWludDMy
X3QgdW5pZm9ybUJpbmRpbmdJbmRleCA9IDA7Ci0gICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlw
ZSBzaGFkZXJUeXBlIDogbVN0YXRlLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQotICAgIHsKLSAg
ICAgICAgdW5pZm9ybXNBbmRYZmJTZXREZXNjLnVwZGF0ZSh1bmlmb3JtQmluZGluZ0luZGV4Kyss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfREVTQ1JJUFRPUl9UWVBF
X1VOSUZPUk1fQlVGRkVSX0RZTkFNSUMsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xfdms6OmtTaGFkZXJTdGFnZU1hcFtzaGFkZXJUeXBlXSk7Ci0gICAgfQotICAg
IGlmIChtU3RhdGUuaGFzTGlua2VkU2hhZGVyU3RhZ2UoZ2w6OlNoYWRlclR5cGU6OlZlcnRleCkg
JiYgdHJhbnNmb3JtRmVlZGJhY2sgJiYKLSAgICAgICAgIW1TdGF0ZS5nZXRMaW5rZWRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKCkuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIFRyYW5zZm9ybUZl
ZWRiYWNrVmsgKnRyYW5zZm9ybUZlZWRiYWNrVmsgPSB2azo6R2V0SW1wbCh0cmFuc2Zvcm1GZWVk
YmFjayk7Ci0gICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmstPnVwZGF0ZURlc2NyaXB0b3JTZXRM
YXlvdXQoY29udGV4dFZrLCBtU3RhdGUsICZ1bmlmb3Jtc0FuZFhmYlNldERlc2MpOwotICAgIH0K
LQotICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0RGVzY3JpcHRvclNldExheW91dCgKLSAgICAg
ICAgY29udGV4dFZrLCB1bmlmb3Jtc0FuZFhmYlNldERlc2MsCi0gICAgICAgICZtRGVzY3JpcHRv
clNldExheW91dHNba1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XSkpOwotCi0gICAg
Ly8gVW5pZm9ybSBhbmQgc3RvcmFnZSBidWZmZXJzLCBhdG9taWMgY291bnRlciBidWZmZXJzIGFu
ZCBpbWFnZXM6Ci0gICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjIHJlc291cmNlc1NldERl
c2M7Ci0KLSAgICBBZGRJbnRlcmZhY2VCbG9ja0Rlc2NyaXB0b3JTZXREZXNjKG1TdGF0ZS5nZXRV
bmlmb3JtQmxvY2tzKCksIGdldFVuaWZvcm1CbG9ja0JpbmRpbmdzT2Zmc2V0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9S
TV9CVUZGRVIsICZyZXNvdXJjZXNTZXREZXNjKTsKLSAgICBBZGRJbnRlcmZhY2VCbG9ja0Rlc2Ny
aXB0b3JTZXREZXNjKG1TdGF0ZS5nZXRTaGFkZXJTdG9yYWdlQmxvY2tzKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTdG9yYWdlQmxvY2tCaW5kaW5nc09mZnNl
dCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfREVTQ1JJUFRP
Ul9UWVBFX1NUT1JBR0VfQlVGRkVSLCAmcmVzb3VyY2VzU2V0RGVzYyk7Ci0gICAgQWRkQXRvbWlj
Q291bnRlckJ1ZmZlckRlc2NyaXB0b3JTZXREZXNjKG1TdGF0ZS5nZXRBdG9taWNDb3VudGVyQnVm
ZmVycygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRB
dG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3NPZmZzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnJlc291cmNlc1NldERlc2MpOwotICAgIEFkZEltYWdl
RGVzY3JpcHRvclNldERlc2MobVN0YXRlLCBnZXRJbWFnZUJpbmRpbmdzT2Zmc2V0KCksICZyZXNv
dXJjZXNTZXREZXNjKTsKLQotICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0RGVzY3JpcHRvclNl
dExheW91dCgKLSAgICAgICAgY29udGV4dFZrLCByZXNvdXJjZXNTZXREZXNjLCAmbURlc2NyaXB0
b3JTZXRMYXlvdXRzW2tTaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleF0pKTsKLQotICAg
IC8vIFRleHR1cmVzOgotICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyB0ZXh0dXJlc1Nl
dERlc2M7Ci0KLSAgICBBZGRUZXh0dXJlRGVzY3JpcHRvclNldERlc2MobVN0YXRlLCBjb250ZXh0
VmstPnVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycygpLCAmdGV4dHVyZXNTZXREZXNjKTsKLQot
ICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0RGVzY3JpcHRvclNldExheW91dChjb250ZXh0Vmss
IHRleHR1cmVzU2V0RGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1EZXNjcmlwdG9yU2V0TGF5b3V0c1trVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRl
eF0pKTsKLQotICAgIC8vIERyaXZlciB1bmlmb3JtczoKLSAgICBWa1NoYWRlclN0YWdlRmxhZ3Mg
ZHJpdmVyVW5pZm9ybXNTdGFnZXMgPQotICAgICAgICBtU3RhdGUuaXNDb21wdXRlKCkgPyBWS19T
SEFERVJfU1RBR0VfQ09NUFVURV9CSVQgOiBWS19TSEFERVJfU1RBR0VfQUxMX0dSQVBISUNTOwot
ICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyBkcml2ZXJVbmlmb3Jtc1NldERlc2MgPQot
ICAgICAgICBjb250ZXh0VmstPmdldERyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldERlc2MoZHJp
dmVyVW5pZm9ybXNTdGFnZXMpOwotICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0RGVzY3JpcHRv
clNldExheW91dCgKLSAgICAgICAgY29udGV4dFZrLCBkcml2ZXJVbmlmb3Jtc1NldERlc2MsCi0g
ICAgICAgICZtRGVzY3JpcHRvclNldExheW91dHNba0RyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNl
dEluZGV4XSkpOwotCi0gICAgLy8gQ3JlYXRlIHBpcGVsaW5lIGxheW91dCB3aXRoIHRoZXNlIDQg
ZGVzY3JpcHRvciBzZXRzLgotICAgIHZrOjpQaXBlbGluZUxheW91dERlc2MgcGlwZWxpbmVMYXlv
dXREZXNjOwotICAgIHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0TGF5b3V0
KGtVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3Jtc0FuZFhmYlNldERlc2MpOwotICAg
IHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KGtTaGFkZXJSZXNv
dXJjZURlc2NyaXB0b3JTZXRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvdXJjZXNTZXREZXNjKTsKLSAgICBwaXBlbGluZUxheW91dERl
c2MudXBkYXRlRGVzY3JpcHRvclNldExheW91dChrVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleCwg
dGV4dHVyZXNTZXREZXNjKTsKLSAgICBwaXBlbGluZUxheW91dERlc2MudXBkYXRlRGVzY3JpcHRv
clNldExheW91dChrRHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyVW5pZm9ybXNTZXRE
ZXNjKTsKLQotICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Z2V0UGlwZWxpbmVMYXlvdXQoY29udGV4
dFZrLCBwaXBlbGluZUxheW91dERlc2MsIG1EZXNjcmlwdG9yU2V0TGF5b3V0cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtUGlwZWxpbmVMYXlvdXQpKTsKLQot
ICAgIC8vIEluaXRpYWxpemUgZGVzY3JpcHRvciBwb29scy4KLSAgICBzdGQ6OmFycmF5PFZrRGVz
Y3JpcHRvclBvb2xTaXplLCAyPiB1bmlmb3JtQW5kWGZiU2V0U2l6ZSA9IHsKLSAgICAgICAge3tW
S19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVJfRFlOQU1JQywKLSAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obVN0YXRlLmdldExpbmtlZFNoYWRlclN0YWdlQ291bnQoKSl9LAot
ICAgICAgICAge1ZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwgZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSU319fTsKLQotICAgIHVpbnQzMl90
IHVuaWZvcm1CbG9ja0NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1TdGF0ZS5nZXRVbmlm
b3JtQmxvY2tzKCkuc2l6ZSgpKTsKLSAgICB1aW50MzJfdCBzdG9yYWdlQmxvY2tDb3VudCA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihtU3RhdGUuZ2V0U2hhZGVyU3RvcmFnZUJsb2NrcygpLnNpemUo
KSk7Ci0gICAgdWludDMyX3QgYXRvbWljQ291bnRlckJ1ZmZlckNvdW50ID0KLSAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1TdGF0ZS5nZXRBdG9taWNDb3VudGVyQnVmZmVycygpLnNpemUo
KSk7Ci0gICAgdWludDMyX3QgaW1hZ2VDb3VudCAgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1T
dGF0ZS5nZXRJbWFnZUJpbmRpbmdzKCkuc2l6ZSgpKTsKLSAgICB1aW50MzJfdCB0ZXh0dXJlQ291
bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obVN0YXRlLmdldFNhbXBsZXJCaW5kaW5ncygpLnNp
emUoKSk7Ci0KLSAgICBpZiAocmVuZGVyZXItPmdldEZlYXR1cmVzKCkuYmluZEVtcHR5Rm9yVW51
c2VkRGVzY3JpcHRvclNldHMuZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIC8vIEZvciB0aGlzIHdv
cmthcm91bmQsIHdlIGhhdmUgdG8gY3JlYXRlIGFuIGVtcHR5IGRlc2NyaXB0b3Igc2V0IGZvciBl
YWNoIGRlc2NyaXB0b3Igc2V0Ci0gICAgICAgIC8vIGluZGV4LCBzbyBtYWtlIHN1cmUgdGhlaXIg
cG9vbHMgYXJlIGluaXRpYWxpemVkLgotICAgICAgICB1bmlmb3JtQmxvY2tDb3VudCA9IHN0ZDo6
bWF4KHVuaWZvcm1CbG9ja0NvdW50LCAxdSk7Ci0gICAgICAgIHRleHR1cmVDb3VudCAgICAgID0g
c3RkOjptYXgodGV4dHVyZUNvdW50LCAxdSk7Ci0gICAgfQotCi0gICAgY29uc3RleHByIHNpemVf
dCBrUmVzb3VyY2VUeXBlc0luUmVzb3VyY2VzU2V0ID0gMzsKLSAgICBhbmdsZTo6Rml4ZWRWZWN0
b3I8VmtEZXNjcmlwdG9yUG9vbFNpemUsIGtSZXNvdXJjZVR5cGVzSW5SZXNvdXJjZXNTZXQ+IHJl
c291cmNlU2V0U2l6ZTsKLSAgICBpZiAodW5pZm9ybUJsb2NrQ291bnQgPiAwKQotICAgIHsKLSAg
ICAgICAgcmVzb3VyY2VTZXRTaXplLmVtcGxhY2VfYmFjayhWS19ERVNDUklQVE9SX1RZUEVfVU5J
Rk9STV9CVUZGRVIsIHVuaWZvcm1CbG9ja0NvdW50KTsKLSAgICB9Ci0gICAgaWYgKHN0b3JhZ2VC
bG9ja0NvdW50ID4gMCB8fCBhdG9taWNDb3VudGVyQnVmZmVyQ291bnQgPiAwKQotICAgIHsKLSAg
ICAgICAgLy8gTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYW4gYXJyYXkgb2YgSU1QTEVNRU5UQVRJ
T05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgc3RvcmFnZQotICAgICAgICAvLyBidWZmZXJz
IGZvciBlbXVsYXRpbmcgYXRvbWljIGNvdW50ZXJzLCBzbyBpZiB0aGVyZSBhcmUgYW55IGF0b21p
YyBjb3VudGVyIGJ1ZmZlcnMsIHdlCi0gICAgICAgIC8vIG5lZWQgdG8gYWxsb2NhdGUgSU1QTEVN
RU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgZGVzY3JpcHRvcnMuCi0gICAgICAg
IGNvbnN0IHVpbnQzMl90IGF0b21pY0NvdW50ZXJTdG9yYWdlQnVmZmVyQ291bnQgPQotICAgICAg
ICAgICAgYXRvbWljQ291bnRlckJ1ZmZlckNvdW50ID4gMCA/IGdsOjpJTVBMRU1FTlRBVElPTl9N
QVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyA6IDA7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IHN0
b3JhZ2VCdWZmZXJEZXNjQ291bnQgPSBzdG9yYWdlQmxvY2tDb3VudCArIGF0b21pY0NvdW50ZXJT
dG9yYWdlQnVmZmVyQ291bnQ7Ci0gICAgICAgIHJlc291cmNlU2V0U2l6ZS5lbXBsYWNlX2JhY2so
VktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSLCBzdG9yYWdlQnVmZmVyRGVzY0NvdW50
KTsKLSAgICB9Ci0gICAgaWYgKGltYWdlQ291bnQgPiAwKQotICAgIHsKLSAgICAgICAgcmVzb3Vy
Y2VTZXRTaXplLmVtcGxhY2VfYmFjayhWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRSwg
aW1hZ2VDb3VudCk7Ci0gICAgfQotCi0gICAgVmtEZXNjcmlwdG9yUG9vbFNpemUgdGV4dHVyZVNl
dFNpemUgPSB7VktfREVTQ1JJUFRPUl9UWVBFX0NPTUJJTkVEX0lNQUdFX1NBTVBMRVIsIHRleHR1
cmVDb3VudH07Ci0KLSAgICBBTkdMRV9UUlkobUR5bmFtaWNEZXNjcmlwdG9yUG9vbHNba1VuaWZv
cm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XS5pbml0KAotICAgICAgICBjb250ZXh0VmssIHVu
aWZvcm1BbmRYZmJTZXRTaXplLmRhdGEoKSwgdW5pZm9ybUFuZFhmYlNldFNpemUuc2l6ZSgpKSk7
Ci0gICAgaWYgKHJlc291cmNlU2V0U2l6ZS5zaXplKCkgPiAwKQotICAgIHsKLSAgICAgICAgQU5H
TEVfVFJZKG1EeW5hbWljRGVzY3JpcHRvclBvb2xzW2tTaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JT
ZXRJbmRleF0uaW5pdCgKLSAgICAgICAgICAgIGNvbnRleHRWaywgcmVzb3VyY2VTZXRTaXplLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlU2V0U2l6ZS5zaXplKCkpKSk7Ci0g
ICAgfQotICAgIGlmICh0ZXh0dXJlQ291bnQgPiAwKQorICAgIHN0YXR1cyA9IGluaXREZWZhdWx0
VW5pZm9ybUJsb2Nrcyhjb250ZXh0KTsKKyAgICBpZiAoc3RhdHVzICE9IGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlKQogICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKG1EeW5hbWljRGVzY3JpcHRvclBv
b2xzW2tUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4XS5pbml0KGNvbnRleHRWaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZ0ZXh0dXJlU2V0U2l6ZSwgMSkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMaW5rRXZlbnREb25lPihzdGF0dXMpOwogICAgIH0KIAotICAgIG1EeW5hbWljQnVm
ZmVyT2Zmc2V0cy5yZXNpemUobVN0YXRlLmdldExpbmtlZFNoYWRlclN0YWdlQ291bnQoKSk7Ci0K
LSAgICAvLyBJbml0aWFsaXplIGFuICJlbXB0eSIgYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZhdWx0
IHVuaWZvcm0gYmxvY2tzIHdoZXJlIHRoZXJlIGFyZSBubyB1bmlmb3JtcywKLSAgICAvLyBvciBh
dG9taWMgY291bnRlciBidWZmZXIgYXJyYXkgaW5kaWNlcyB0aGF0IGFyZSB1bnVzZWQuCi0gICAg
Y29uc3RleHByIFZrQnVmZmVyVXNhZ2VGbGFncyBrRW1wdHlCdWZmZXJVc2FnZSA9Ci0gICAgICAg
IFZLX0JVRkZFUl9VU0FHRV9VTklGT1JNX0JVRkZFUl9CSVQgfCBWS19CVUZGRVJfVVNBR0VfU1RP
UkFHRV9CVUZGRVJfQklUOwotCi0gICAgVmtCdWZmZXJDcmVhdGVJbmZvIGVtcHR5QnVmZmVySW5m
byAgICA9IHt9OwotICAgIGVtcHR5QnVmZmVySW5mby5zVHlwZSAgICAgICAgICAgICAgICAgPSBW
S19TVFJVQ1RVUkVfVFlQRV9CVUZGRVJfQ1JFQVRFX0lORk87Ci0gICAgZW1wdHlCdWZmZXJJbmZv
LmZsYWdzICAgICAgICAgICAgICAgICA9IDA7Ci0gICAgZW1wdHlCdWZmZXJJbmZvLnNpemUgICAg
ICAgICAgICAgICAgICA9IDQ7Ci0gICAgZW1wdHlCdWZmZXJJbmZvLnVzYWdlICAgICAgICAgICAg
ICAgICA9IGtFbXB0eUJ1ZmZlclVzYWdlOwotICAgIGVtcHR5QnVmZmVySW5mby5zaGFyaW5nTW9k
ZSAgICAgICAgICAgPSBWS19TSEFSSU5HX01PREVfRVhDTFVTSVZFOwotICAgIGVtcHR5QnVmZmVy
SW5mby5xdWV1ZUZhbWlseUluZGV4Q291bnQgPSAwOwotICAgIGVtcHR5QnVmZmVySW5mby5wUXVl
dWVGYW1pbHlJbmRpY2VzICAgPSBudWxscHRyOwotCi0gICAgY29uc3RleHByIFZrTWVtb3J5UHJv
cGVydHlGbGFncyBrTWVtb3J5VHlwZSA9IFZLX01FTU9SWV9QUk9QRVJUWV9ERVZJQ0VfTE9DQUxf
QklUOwotICAgIHJldHVybiBtRW1wdHlCdWZmZXIuaW5pdChjb250ZXh0VmssIGVtcHR5QnVmZmVy
SW5mbywga01lbW9yeVR5cGUpOwotfQotCi12b2lkIFByb2dyYW1Wazo6dXBkYXRlQmluZGluZ09m
ZnNldHMoKQotewotICAgIG1TdG9yYWdlQmxvY2tCaW5kaW5nc09mZnNldCA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihtU3RhdGUuZ2V0VW5pcXVlVW5pZm9ybUJsb2NrQ291bnQoKSk7Ci0KLSAgICBt
QXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzT2Zmc2V0ID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KG1TdG9yYWdlQmxvY2tCaW5kaW5nc09mZnNldCArIG1TdGF0ZS5nZXRVbmlxdWVT
dG9yYWdlQmxvY2tDb3VudCgpKTsKLQotICAgIHVpbnQzMl90IGF0b21pY0NvdW50ZXJCaW5kaW5n
Q291bnQgPSBtU3RhdGUuZ2V0QXRvbWljQ291bnRlckJ1ZmZlcnMoKS5lbXB0eSgpID8gMCA6IDE7
Ci0gICAgbUltYWdlQmluZGluZ3NPZmZzZXQgPSBtQXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdz
T2Zmc2V0ICsgYXRvbWljQ291bnRlckJpbmRpbmdDb3VudDsKKyAgICAvLyBUT0RPKGppZS5hLmNo
ZW5AaW50ZWwuY29tKTogUGFyYWxsZWxpemUgbGlua2luZy4KKyAgICAvLyBodHRwOi8vY3JidWcu
Y29tLzg0OTU3NgorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZ2xFeGVjdXRhYmxl
ID0gbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgc3RhdHVzID0gbUV4ZWN1dGFi
bGUuY3JlYXRlUGlwZWxpbmVMYXlvdXQoY29udGV4dCwgZ2xFeGVjdXRhYmxlLCBtU3RhdGUpOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+KHN0YXR1cyk7CiB9CiAK
IHZvaWQgUHJvZ3JhbVZrOjpsaW5rUmVzb3VyY2VzKGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVz
b3VyY2VzICZyZXNvdXJjZXMpCkBAIC04NjEsNyArMzM0LDkgQEAgYW5nbGU6OlJlc3VsdCBQcm9n
cmFtVms6OmluaXREZWZhdWx0VW5pZm9ybUJsb2Nrcyhjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250
ZXh0KQogdm9pZCBQcm9ncmFtVms6OmdlbmVyYXRlVW5pZm9ybUxheW91dE1hcHBpbmcoZ2w6OlNo
YWRlck1hcDxzaDo6QmxvY2tMYXlvdXRNYXA+ICZsYXlvdXRNYXAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHNpemVfdD4gJnJlcXVp
cmVkQnVmZmVyU2l6ZSkKIHsKLSAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5
cGUgOiBtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAgY29uc3QgZ2w6OlByb2dy
YW1FeGVjdXRhYmxlICZnbEV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsKKworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsRXhlY3V0
YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKICAgICB7CiAgICAgICAgIGdsOjpTaGFkZXIg
KnNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFNoYWRlcihzaGFkZXJUeXBlKTsKIApAQCAtODc3
LDcgKzM1Miw5IEBAIHZvaWQgUHJvZ3JhbVZrOjpnZW5lcmF0ZVVuaWZvcm1MYXlvdXRNYXBwaW5n
KGdsOjpTaGFkZXJNYXA8c2g6OkJsb2NrTGF5b3V0TWFwPiAmCiB2b2lkIFByb2dyYW1Wazo6aW5p
dERlZmF1bHRVbmlmb3JtTGF5b3V0TWFwcGluZyhnbDo6U2hhZGVyTWFwPHNoOjpCbG9ja0xheW91
dE1hcD4gJmxheW91dE1hcCkKIHsKICAgICAvLyBJbml0IHRoZSBkZWZhdWx0IGJsb2NrIGxheW91
dCBpbmZvLgotICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1zID0gbVN0YXRlLmdldFVuaWZvcm1zKCk7
CisgICAgY29uc3QgYXV0byAmdW5pZm9ybXMgICAgICAgICAgICAgICAgICAgICAgPSBtU3RhdGUu
Z2V0VW5pZm9ybXMoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgJmdsRXhlY3V0
YWJsZSA9IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworCiAgICAgZm9yIChjb25zdCBn
bDo6VmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb24gOiBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9u
cygpKQogICAgIHsKICAgICAgICAgZ2w6OlNoYWRlck1hcDxzaDo6QmxvY2tNZW1iZXJJbmZvPiBs
YXlvdXRJbmZvOwpAQCAtODk3LDcgKzM3NCw3IEBAIHZvaWQgUHJvZ3JhbVZrOjppbml0RGVmYXVs
dFVuaWZvcm1MYXlvdXRNYXBwaW5nKGdsOjpTaGFkZXJNYXA8c2g6OkJsb2NrTGF5b3V0TWFwCiAK
ICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAKLSAgICAgICAgICAgICAgICBm
b3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBtU3RhdGUuZ2V0TGlua2VkU2hh
ZGVyU3RhZ2VzKCkpCisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBz
aGFkZXJUeXBlIDogZ2xFeGVjdXRhYmxlLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBpdCA9IGxheW91dE1hcFtzaGFk
ZXJUeXBlXS5maW5kKHVuaWZvcm1OYW1lKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ICE9
IGxheW91dE1hcFtzaGFkZXJUeXBlXS5lbmQoKSkKQEAgLTkxMSw3ICszODgsNyBAQCB2b2lkIFBy
b2dyYW1Wazo6aW5pdERlZmF1bHRVbmlmb3JtTGF5b3V0TWFwcGluZyhnbDo6U2hhZGVyTWFwPHNo
OjpCbG9ja0xheW91dE1hcAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZm9y
IChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogbVN0YXRlLmdldExpbmtlZFNoYWRl
clN0YWdlcygpKQorICAgICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUg
OiBnbEV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1EZWZhdWx0VW5pZm9ybUJsb2Nrc1tzaGFkZXJUeXBlXS51bmlmb3JtTGF5b3V0LnB1
c2hfYmFjayhsYXlvdXRJbmZvW3NoYWRlclR5cGVdKTsKICAgICAgICAgfQpAQCAtOTIxLDggKzM5
OCwxMCBAQCB2b2lkIFByb2dyYW1Wazo6aW5pdERlZmF1bHRVbmlmb3JtTGF5b3V0TWFwcGluZyhn
bDo6U2hhZGVyTWFwPHNoOjpCbG9ja0xheW91dE1hcAogYW5nbGU6OlJlc3VsdCBQcm9ncmFtVms6
OnJlc2l6ZVVuaWZvcm1CbG9ja01lbW9yeShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxz
aXplX3Q+ICZyZXF1aXJlZEJ1ZmZlclNpemUpCiB7Ci0gICAgUmVuZGVyZXJWayAqcmVuZGVyZXIg
PSBjb250ZXh0VmstPmdldFJlbmRlcmVyKCk7Ci0gICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlw
ZSBzaGFkZXJUeXBlIDogbVN0YXRlLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQorICAgIFJlbmRl
cmVyVmsgKnJlbmRlcmVyICAgICAgICAgICAgICAgICAgICAgID0gY29udGV4dFZrLT5nZXRSZW5k
ZXJlcigpOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZ2xFeGVjdXRhYmxlID0g
bVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFk
ZXJUeXBlIHNoYWRlclR5cGUgOiBnbEV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkp
CiAgICAgewogICAgICAgICBpZiAocmVxdWlyZWRCdWZmZXJTaXplW3NoYWRlclR5cGVdID4gMCkK
ICAgICAgICAgewpAQCAtOTU2LDE0ICs0MzUsMTUgQEAgR0xib29sZWFuIFByb2dyYW1Wazo6dmFs
aWRhdGUoY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGdsOjpJbmZvTG9nICppbmZvTG9nKQogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiB2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybUltcGwoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IFQgKnYsIEdMZW51bSBlbnRyeVBvaW50VHlwZSkK
IHsKLSAgICBjb25zdCBnbDo6VmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRl
LmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl07Ci0gICAgY29uc3QgZ2w6OkxpbmtlZFVu
aWZvcm0gJmxpbmtlZFVuaWZvcm0gICA9IG1TdGF0ZS5nZXRVbmlmb3JtcygpW2xvY2F0aW9uSW5m
by5pbmRleF07CisgICAgY29uc3QgZ2w6OlZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyAg
PSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0aW9uXTsKKyAgICBjb25zdCBnbDo6
TGlua2VkVW5pZm9ybSAmbGlua2VkVW5pZm9ybSAgICA9IG1TdGF0ZS5nZXRVbmlmb3JtcygpW2xv
Y2F0aW9uSW5mby5pbmRleF07CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZnbEV4
ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIAogICAgIEFTU0VSVCgh
bGlua2VkVW5pZm9ybS5pc1NhbXBsZXIoKSk7CiAKICAgICBpZiAobGlua2VkVW5pZm9ybS50eXBl
SW5mby0+dHlwZSA9PSBlbnRyeVBvaW50VHlwZSkKICAgICB7Ci0gICAgICAgIGZvciAoY29uc3Qg
Z2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IG1TdGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMo
KSkKKyAgICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2xFeGVj
dXRhYmxlLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQogICAgICAgICB7CiAgICAgICAgICAgICBE
ZWZhdWx0VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgICAgID0gbURlZmF1bHRVbmlmb3JtQmxv
Y2tzW3NoYWRlclR5cGVdOwogICAgICAgICAgICAgY29uc3Qgc2g6OkJsb2NrTWVtYmVySW5mbyAm
bGF5b3V0SW5mbyA9IHVuaWZvcm1CbG9jay51bmlmb3JtTGF5b3V0W2xvY2F0aW9uXTsKQEAgLTk4
Miw3ICs0NjIsNyBAQCB2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybUltcGwoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IFQgKnYsIEdMZW51bQogICAgIH0KICAgICBlbHNlCiAg
ICAgewotICAgICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBtU3Rh
dGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAgICAgIGZvciAoY29uc3QgZ2w6OlNoYWRl
clR5cGUgc2hhZGVyVHlwZSA6IGdsRXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgRGVmYXVsdFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2Nr
ICAgICA9IG1EZWZhdWx0VW5pZm9ybUJsb2Nrc1tzaGFkZXJUeXBlXTsKICAgICAgICAgICAgIGNv
bnN0IHNoOjpCbG9ja01lbWJlckluZm8gJmxheW91dEluZm8gPSB1bmlmb3JtQmxvY2sudW5pZm9y
bUxheW91dFtsb2NhdGlvbl07CkBAIC0xMTIyLDEwICs2MDIsMTEgQEAgdm9pZCBQcm9ncmFtVms6
OnNldFVuaWZvcm1NYXRyaXhmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgY29uc3QgZ2w6OlZh
cmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25z
KClbbG9jYXRpb25dOwotICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZsaW5rZWRVbmlmb3Jt
ICAgPSBtU3RhdGUuZ2V0VW5pZm9ybXMoKVtsb2NhdGlvbkluZm8uaW5kZXhdOworICAgIGNvbnN0
IGdsOjpWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gID0gbVN0YXRlLmdldFVuaWZvcm1M
b2NhdGlvbnMoKVtsb2NhdGlvbl07CisgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJmxpbmtl
ZFVuaWZvcm0gICAgPSBtU3RhdGUuZ2V0VW5pZm9ybXMoKVtsb2NhdGlvbkluZm8uaW5kZXhdOwor
ICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZ2xFeGVjdXRhYmxlID0gbVN0YXRlLmdl
dFByb2dyYW1FeGVjdXRhYmxlKCk7CiAKLSAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNo
YWRlclR5cGUgOiBtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAgZm9yIChjb25z
dCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2xFeGVjdXRhYmxlLmdldExpbmtlZFNoYWRl
clN0YWdlcygpKQogICAgIHsKICAgICAgICAgRGVmYXVsdFVuaWZvcm1CbG9jayAmdW5pZm9ybUJs
b2NrICAgICA9IG1EZWZhdWx0VW5pZm9ybUJsb2Nrc1tzaGFkZXJUeXBlXTsKICAgICAgICAgY29u
c3Qgc2g6OkJsb2NrTWVtYmVySW5mbyAmbGF5b3V0SW5mbyA9IHVuaWZvcm1CbG9jay51bmlmb3Jt
TGF5b3V0W2xvY2F0aW9uXTsKQEAgLTEyMTYsNDIgKzY5Nyw2IEBAIHZvaWQgUHJvZ3JhbVZrOjpz
ZXRVbmlmb3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgc2V0VW5pZm9ybU1hdHJp
eGZ2PDQsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKLXZvaWQg
UHJvZ3JhbVZrOjpzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5w
dXROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBn
ZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNv
bXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqY29lZmZzKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLX0KLQotYW5nbGU6OlJl
c3VsdCBQcm9ncmFtVms6OmFsbG9jYXRlRGVzY3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRW
aywgdWludDMyX3QgZGVzY3JpcHRvclNldEluZGV4KQotewotICAgIGJvb2wgaWdub3JlTmV3UG9v
bEFsbG9jYXRlZDsKLSAgICByZXR1cm4gYWxsb2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyhj
b250ZXh0VmssIGRlc2NyaXB0b3JTZXRJbmRleCwgJmlnbm9yZU5ld1Bvb2xBbGxvY2F0ZWQpOwot
fQotCi1hbmdsZTo6UmVzdWx0IFByb2dyYW1Wazo6YWxsb2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0
SW5mbyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlc2NyaXB0b3JTZXRJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgKm5ld1Bvb2xBbGxvY2F0ZWRPdXQpCi17Ci0gICAgdms6OkR5bmFtaWNEZXNjcmlwdG9y
UG9vbCAmZHluYW1pY0Rlc2NyaXB0b3JQb29sID0gbUR5bmFtaWNEZXNjcmlwdG9yUG9vbHNbZGVz
Y3JpcHRvclNldEluZGV4XTsKLQotICAgIHVpbnQzMl90IHBvdGVudGlhbE5ld0NvdW50ID0gZGVz
Y3JpcHRvclNldEluZGV4ICsgMTsKLSAgICBpZiAocG90ZW50aWFsTmV3Q291bnQgPiBtRGVzY3Jp
cHRvclNldHMuc2l6ZSgpKQotICAgIHsKLSAgICAgICAgbURlc2NyaXB0b3JTZXRzLnJlc2l6ZShw
b3RlbnRpYWxOZXdDb3VudCwgVktfTlVMTF9IQU5ETEUpOwotICAgIH0KLQotICAgIGNvbnN0IHZr
OjpEZXNjcmlwdG9yU2V0TGF5b3V0ICZkZXNjcmlwdG9yU2V0TGF5b3V0ID0KLSAgICAgICAgbURl
c2NyaXB0b3JTZXRMYXlvdXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0uZ2V0KCk7Ci0gICAgQU5HTEVf
VFJZKGR5bmFtaWNEZXNjcmlwdG9yUG9vbC5hbGxvY2F0ZVNldHNBbmRHZXRJbmZvKAotICAgICAg
ICBjb250ZXh0VmssIGRlc2NyaXB0b3JTZXRMYXlvdXQucHRyKCksIDEsICZtRGVzY3JpcHRvclBv
b2xCaW5kaW5nc1tkZXNjcmlwdG9yU2V0SW5kZXhdLAotICAgICAgICAmbURlc2NyaXB0b3JTZXRz
W2Rlc2NyaXB0b3JTZXRJbmRleF0sIG5ld1Bvb2xBbGxvY2F0ZWRPdXQpKTsKLSAgICBtRW1wdHlE
ZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5kZXhdID0gVktfTlVMTF9IQU5ETEU7Ci0KLSAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KIHZvaWQgUHJvZ3JhbVZrOjpn
ZXRVbmlmb3JtZnYoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBH
TGZsb2F0ICpwYXJhbXMpIGNvbnN0CiB7CiAgICAgZ2V0VW5pZm9ybUltcGwobG9jYXRpb24sIHBh
cmFtcywgR0xfRkxPQVQpOwpAQCAtMTI3MSwyMCArNzE2LDIxIEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbVZrOjp1cGRhdGVVbmlmb3JtcyhDb250ZXh0VmsgKmNvbnRleHRWaykKIHsKICAgICBBU1NF
UlQoZGlydHlVbmlmb3JtcygpKTsKIAotICAgIGJvb2wgYW55TmV3QnVmZmVyQWxsb2NhdGVkID0g
ZmFsc2U7Ci0gICAgdWludDMyX3Qgb2Zmc2V0SW5kZXggICAgICAgPSAwOworICAgIGJvb2wgYW55
TmV3QnVmZmVyQWxsb2NhdGVkICAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgdWludDMyX3Qg
b2Zmc2V0SW5kZXggICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIGNvbnN0IGdsOjpQcm9n
cmFtRXhlY3V0YWJsZSAmZ2xFeGVjdXRhYmxlID0gbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxl
KCk7CiAKICAgICAvLyBVcGRhdGUgYnVmZmVyIG1lbW9yeSBieSBpbW1lZGlhdGUgbWFwcGluZy4g
VGhpcyBpbW1lZGlhdGUgdXBkYXRlIG9ubHkgd29ya3Mgb25jZS4KLSAgICBmb3IgKGdsOjpTaGFk
ZXJUeXBlIHNoYWRlclR5cGUgOiBtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAg
Zm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2xFeGVjdXRhYmxlLmdldExp
bmtlZFNoYWRlclN0YWdlcygpKQogICAgIHsKICAgICAgICAgRGVmYXVsdFVuaWZvcm1CbG9jayAm
dW5pZm9ybUJsb2NrID0gbURlZmF1bHRVbmlmb3JtQmxvY2tzW3NoYWRlclR5cGVdOwogCiAgICAg
ICAgIGlmIChtRGVmYXVsdFVuaWZvcm1CbG9ja3NEaXJ0eVtzaGFkZXJUeXBlXSkKICAgICAgICAg
ewogICAgICAgICAgICAgYm9vbCBidWZmZXJNb2RpZmllZCA9IGZhbHNlOwotICAgICAgICAgICAg
QU5HTEVfVFJZKAotICAgICAgICAgICAgICAgIFN5bmNEZWZhdWx0VW5pZm9ybUJsb2NrKGNvbnRl
eHRWaywgJnVuaWZvcm1CbG9jay5zdG9yYWdlLCB1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1EeW5hbWljQnVmZmVyT2Zm
c2V0c1tvZmZzZXRJbmRleF0sICZidWZmZXJNb2RpZmllZCkpOworICAgICAgICAgICAgQU5HTEVf
VFJZKFN5bmNEZWZhdWx0VW5pZm9ybUJsb2NrKAorICAgICAgICAgICAgICAgIGNvbnRleHRWaywg
JnVuaWZvcm1CbG9jay5zdG9yYWdlLCB1bmlmb3JtQmxvY2sudW5pZm9ybURhdGEsCisgICAgICAg
ICAgICAgICAgJm1FeGVjdXRhYmxlLm1EeW5hbWljQnVmZmVyT2Zmc2V0c1tvZmZzZXRJbmRleF0s
ICZidWZmZXJNb2RpZmllZCkpOwogICAgICAgICAgICAgbURlZmF1bHRVbmlmb3JtQmxvY2tzRGly
dHkucmVzZXQoc2hhZGVyVHlwZSk7CiAKICAgICAgICAgICAgIGlmIChidWZmZXJNb2RpZmllZCkK
QEAgLTEzMDAsNTExICs3NDYsMTQgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtVms6OnVwZGF0ZVVu
aWZvcm1zKENvbnRleHRWayAqY29udGV4dFZrKQogICAgIHsKICAgICAgICAgLy8gV2UgbmVlZCB0
byByZWluaXRpYWxpemUgdGhlIGRlc2NyaXB0b3Igc2V0cyBpZiB3ZSBuZXdseSBhbGxvY2F0ZWQg
YnVmZmVycyBzaW5jZSB3ZSBjYW4ndAogICAgICAgICAvLyBtb2RpZnkgdGhlIGRlc2NyaXB0b3Ig
c2V0cyBvbmNlIGluaXRpYWxpemVkLgotICAgICAgICBBTkdMRV9UUlkoYWxsb2NhdGVEZXNjcmlw
dG9yU2V0KGNvbnRleHRWaywga1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4KSk7Ci0g
ICAgICAgIHVwZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQoY29udGV4dFZrKTsKLSAg
ICAgICAgdXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tEZXNjcmlwdG9yU2V0SW1wbChjb250ZXh0Vmsp
OworICAgICAgICBBTkdMRV9UUlkobUV4ZWN1dGFibGUuYWxsb2NhdGVEZXNjcmlwdG9yU2V0KGNv
bnRleHRWaywga1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4KSk7CisgICAgICAgIG1F
eGVjdXRhYmxlLnVwZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQobVN0YXRlLCBtRGVm
YXVsdFVuaWZvcm1CbG9ja3MsIGNvbnRleHRWayk7CisgICAgICAgIG1FeGVjdXRhYmxlLnVwZGF0
ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldEltcGwobVN0YXRlLCBjb250ZXh0VmspOwog
ICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBQ
cm9ncmFtVms6OnVwZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpj
b250ZXh0VmspCi17Ci0gICAgdWludDMyX3Qgc2hhZGVyU3RhZ2VDb3VudCA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VDb3VudCgpKTsKLQotICAgIGds
OjpTaGFkZXJWZWN0b3I8VmtEZXNjcmlwdG9yQnVmZmVySW5mbz4gZGVzY3JpcHRvckJ1ZmZlcklu
Zm8oc2hhZGVyU3RhZ2VDb3VudCk7Ci0gICAgZ2w6OlNoYWRlclZlY3RvcjxWa1dyaXRlRGVzY3Jp
cHRvclNldD4gd3JpdGVEZXNjcmlwdG9ySW5mbyhzaGFkZXJTdGFnZUNvdW50KTsKLQotICAgIHVp
bnQzMl90IGJpbmRpbmdJbmRleCA9IDA7Ci0KLSAgICBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNoZS5j
bGVhcigpOwotCi0gICAgLy8gV3JpdGUgZGVmYXVsdCB1bmlmb3JtcyBmb3IgZWFjaCBzaGFkZXIg
dHlwZS4KLSAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBtU3RhdGUu
Z2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCi0gICAgewotICAgICAgICBEZWZhdWx0VW5pZm9ybUJs
b2NrICZ1bmlmb3JtQmxvY2sgID0gbURlZmF1bHRVbmlmb3JtQmxvY2tzW3NoYWRlclR5cGVdOwot
ICAgICAgICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZvICZidWZmZXJJbmZvID0gZGVzY3JpcHRvckJ1
ZmZlckluZm9bYmluZGluZ0luZGV4XTsKLSAgICAgICAgVmtXcml0ZURlc2NyaXB0b3JTZXQgJndy
aXRlSW5mbyAgICA9IHdyaXRlRGVzY3JpcHRvckluZm9bYmluZGluZ0luZGV4XTsKLQotICAgICAg
ICBpZiAoIXVuaWZvcm1CbG9jay51bmlmb3JtRGF0YS5lbXB0eSgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB2azo6QnVmZmVySGVscGVyICpidWZmZXJIZWxwZXIgPSB1bmlmb3JtQmxvY2suc3Rv
cmFnZS5nZXRDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICBidWZmZXJJbmZvLmJ1ZmZlciAg
ICAgICAgICAgICAgPSBidWZmZXJIZWxwZXItPmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOwotICAg
ICAgICAgICAgbURlc2NyaXB0b3JCdWZmZXJzQ2FjaGUuZW1wbGFjZV9iYWNrKGJ1ZmZlckhlbHBl
cik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBtRW1w
dHlCdWZmZXIub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3Qo
KSk7Ci0gICAgICAgICAgICBidWZmZXJJbmZvLmJ1ZmZlciA9IG1FbXB0eUJ1ZmZlci5nZXRCdWZm
ZXIoKS5nZXRIYW5kbGUoKTsKLSAgICAgICAgICAgIG1EZXNjcmlwdG9yQnVmZmVyc0NhY2hlLmVt
cGxhY2VfYmFjaygmbUVtcHR5QnVmZmVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1ZmZlcklu
Zm8ub2Zmc2V0ID0gMDsKLSAgICAgICAgYnVmZmVySW5mby5yYW5nZSAgPSBWS19XSE9MRV9TSVpF
OwotCi0gICAgICAgIHdyaXRlSW5mby5zVHlwZSAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZ
UEVfV1JJVEVfREVTQ1JJUFRPUl9TRVQ7Ci0gICAgICAgIHdyaXRlSW5mby5wTmV4dCAgICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICAgICAgd3JpdGVJbmZvLmRzdFNldCAgICAgICAgICAgPSBtRGVz
Y3JpcHRvclNldHNba1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XTsKLSAgICAgICAg
d3JpdGVJbmZvLmRzdEJpbmRpbmcgICAgICAgPSBiaW5kaW5nSW5kZXg7Ci0gICAgICAgIHdyaXRl
SW5mby5kc3RBcnJheUVsZW1lbnQgID0gMDsKLSAgICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JD
b3VudCAgPSAxOwotICAgICAgICB3cml0ZUluZm8uZGVzY3JpcHRvclR5cGUgICA9IFZLX0RFU0NS
SVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUl9EWU5BTUlDOwotICAgICAgICB3cml0ZUluZm8ucElt
YWdlSW5mbyAgICAgICA9IG51bGxwdHI7Ci0gICAgICAgIHdyaXRlSW5mby5wQnVmZmVySW5mbyAg
ICAgID0gJmJ1ZmZlckluZm87Ci0gICAgICAgIHdyaXRlSW5mby5wVGV4ZWxCdWZmZXJWaWV3ID0g
bnVsbHB0cjsKLQotICAgICAgICArK2JpbmRpbmdJbmRleDsKLSAgICB9Ci0KLSAgICBWa0Rldmlj
ZSBkZXZpY2UgPSBjb250ZXh0VmstPmdldERldmljZSgpOwotCi0gICAgQVNTRVJUKGJpbmRpbmdJ
bmRleCA9PSBzaGFkZXJTdGFnZUNvdW50KTsKLSAgICBBU1NFUlQoc2hhZGVyU3RhZ2VDb3VudCA8
PSBrUmVzZXJ2ZWREZWZhdWx0VW5pZm9ybUJpbmRpbmdDb3VudCk7Ci0KLSAgICB2a1VwZGF0ZURl
c2NyaXB0b3JTZXRzKGRldmljZSwgc2hhZGVyU3RhZ2VDb3VudCwgd3JpdGVEZXNjcmlwdG9ySW5m
by5kYXRhKCksIDAsIG51bGxwdHIpOwotfQotCi12b2lkIFByb2dyYW1Wazo6dXBkYXRlQnVmZmVy
c0Rlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWNvcmRl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXNjcmlwdG9yVHlwZSBkZXNjcmlwdG9yVHlwZSkK
LXsKLSAgICBpZiAoYmxvY2tzLmVtcHR5KCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgVmtEZXNjcmlwdG9yU2V0IGRlc2NyaXB0b3JTZXQgPSBtRGVzY3JpcHRvclNldHNb
a1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4XTsKLQotICAgIEFTU0VSVChkZXNjcmlw
dG9yVHlwZSA9PSBWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVIgfHwKLSAgICAgICAg
ICAgZGVzY3JpcHRvclR5cGUgPT0gVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSKTsK
LSAgICBjb25zdCBib29sIGlzU3RvcmFnZUJ1ZmZlciA9IGRlc2NyaXB0b3JUeXBlID09IFZLX0RF
U0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUjsKLSAgICBjb25zdCB1aW50MzJfdCBiaW5kaW5n
U3RhcnQgPQotICAgICAgICBpc1N0b3JhZ2VCdWZmZXIgPyBnZXRTdG9yYWdlQmxvY2tCaW5kaW5n
c09mZnNldCgpIDogZ2V0VW5pZm9ybUJsb2NrQmluZGluZ3NPZmZzZXQoKTsKLQotICAgIHN0YXRp
Y19hc3NlcnQoCi0gICAgICAgIGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfU0hBREVSX1NUT1JBR0Vf
QlVGRkVSX0JJTkRJTkdTID49Ci0gICAgICAgICAgICBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1VO
SUZPUk1fQlVGRkVSX0JJTkRJTkdTLAotICAgICAgICAiVGhlIGRlc2NyaXB0b3IgYXJyYXlzIGhl
cmUgd291bGQgaGF2ZSBpbmFkZXF1YXRlIHNpemUgZm9yIHVuaWZvcm0gYnVmZmVyIG9iamVjdHMi
KTsKLQotICAgIGdsOjpTdG9yYWdlQnVmZmVyc0FycmF5PFZrRGVzY3JpcHRvckJ1ZmZlckluZm8+
IGRlc2NyaXB0b3JCdWZmZXJJbmZvOwotICAgIGdsOjpTdG9yYWdlQnVmZmVyc0FycmF5PFZrV3Jp
dGVEZXNjcmlwdG9yU2V0PiB3cml0ZURlc2NyaXB0b3JJbmZvOwotICAgIHVpbnQzMl90IHdyaXRl
Q291bnQgPSAwOwotICAgIC8vIFRoZSBiaW5kaW5nIGlzIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUg
YXJyYXlFbGVtZW50IDAgaXMgZW5jb3VudGVyZWQsIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwKLSAg
ICAvLyBiZSBhbiBpbmNyZW1lbnQgcmlnaHQgYXQgdGhlIHN0YXJ0LiAgU3RhcnQgZnJvbSAtMSB0
byBnZXQgMCBhcyB0aGUgZmlyc3QgYmluZGluZy4KLSAgICBpbnQzMl90IGN1cnJlbnRCaW5kaW5n
ID0gLTE7Ci0KLSAgICAvLyBXcml0ZSB1bmlmb3JtIG9yIHN0b3JhZ2UgYnVmZmVycy4KLSAgICBj
b25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0VmstPmdldFN0YXRlKCk7Ci0gICAgZm9y
ICh1aW50MzJfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYmxvY2tzLnNpemUoKTsg
KytidWZmZXJJbmRleCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpJbnRlcmZhY2VCbG9jayAm
YmxvY2sgPSBibG9ja3NbYnVmZmVySW5kZXhdOwotICAgICAgICBjb25zdCBnbDo6T2Zmc2V0Qmlu
ZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJ1ZmZlckJpbmRpbmcgPQotICAgICAgICAgICAgaXNT
dG9yYWdlQnVmZmVyID8gZ2xTdGF0ZS5nZXRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1ZmZlcihibG9j
ay5iaW5kaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2xTdGF0ZS5nZXRJbmRl
eGVkVW5pZm9ybUJ1ZmZlcihibG9jay5iaW5kaW5nKTsKLQotICAgICAgICBpZiAoIWJsb2NrLmlz
QXJyYXkgfHwgYmxvY2suYXJyYXlFbGVtZW50ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIEFycmF5IGluZGljZXMgb2YgdGhlIHNhbWUgYnVmZmVyIGJpbmRpbmcgYXJlIHBsYWNlZCBz
ZXF1ZW50aWFsbHkgaW4gYGJsb2Nrc2AuCi0gICAgICAgICAgICAvLyBUaHVzLCB0aGUgYmxvY2sg
YmluZGluZyBpcyB1cGRhdGVkIG9ubHkgd2hlbiBhcnJheSBpbmRleCAwIGlzIGVuY291bnRlcmVk
LgotICAgICAgICAgICAgKytjdXJyZW50QmluZGluZzsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChidWZmZXJCaW5kaW5nLmdldCgpID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludDMyX3QgYmluZGluZyAgICAgICAg
ICA9IGJpbmRpbmdTdGFydCArIGN1cnJlbnRCaW5kaW5nOwotICAgICAgICB1aW50MzJfdCBhcnJh
eUVsZW1lbnQgICAgID0gYmxvY2suaXNBcnJheSA/IGJsb2NrLmFycmF5RWxlbWVudCA6IDA7Ci0g
ICAgICAgIFZrRGV2aWNlU2l6ZSBtYXhCbG9ja1NpemUgPSBpc1N0b3JhZ2VCdWZmZXIgPyAwIDog
YmxvY2suZGF0YVNpemU7Ci0KLSAgICAgICAgVmtEZXNjcmlwdG9yQnVmZmVySW5mbyAmYnVmZmVy
SW5mbyA9IGRlc2NyaXB0b3JCdWZmZXJJbmZvW3dyaXRlQ291bnRdOwotICAgICAgICBWa1dyaXRl
RGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICAgID0gd3JpdGVEZXNjcmlwdG9ySW5mb1t3cml0ZUNv
dW50XTsKLQotICAgICAgICBXcml0ZUJ1ZmZlckRlc2NyaXB0b3JTZXRCaW5kaW5nKGJ1ZmZlckJp
bmRpbmcsIG1heEJsb2NrU2l6ZSwgZGVzY3JpcHRvclNldCwgZGVzY3JpcHRvclR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZywgYXJyYXlFbGVtZW50
LCAwLCAmYnVmZmVySW5mbywgJndyaXRlSW5mbyk7Ci0KLSAgICAgICAgQnVmZmVyVmsgKmJ1ZmZl
clZrICAgICAgICAgICAgID0gdms6OkdldEltcGwoYnVmZmVyQmluZGluZy5nZXQoKSk7Ci0gICAg
ICAgIHZrOjpCdWZmZXJIZWxwZXIgJmJ1ZmZlckhlbHBlciA9IGJ1ZmZlclZrLT5nZXRCdWZmZXIo
KTsKLQotICAgICAgICBpZiAoaXNTdG9yYWdlQnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBXZSBzZXQgdGhlIFNIQURFUl9SRUFEX0JJVCB0byBiZSBjb25zZXJ2YXRpdmUuCi0gICAg
ICAgICAgICBWa0FjY2Vzc0ZsYWdzIGFjY2Vzc0ZsYWdzID0gVktfQUNDRVNTX1NIQURFUl9SRUFE
X0JJVCB8IFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklUOwotICAgICAgICAgICAgaWYgKGNvbnRl
eHRWay0+Z2V0RmVhdHVyZXMoKS5jb21tYW5kR3JhcGguZW5hYmxlZCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBidWZmZXJIZWxwZXIub25Xcml0ZShjb250ZXh0VmssIHJlY29yZGVy
LCBhY2Nlc3NGbGFncyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKGFjY2Vzc0Zs
YWdzLCAmYnVmZmVySGVscGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0VmstPmdldEZlYXR1cmVzKCku
Y29tbWFuZEdyYXBoLmVuYWJsZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnVm
ZmVySGVscGVyLm9uUmVhZChjb250ZXh0VmssIHJlY29yZGVyLCBWS19BQ0NFU1NfVU5JRk9STV9S
RUFEX0JJVCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1VOSUZP
Uk1fUkVBRF9CSVQsICZidWZmZXJIZWxwZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgKyt3cml0ZUNvdW50OwotICAgIH0KLQotICAgIFZrRGV2aWNlIGRldmljZSA9IGNv
bnRleHRWay0+Z2V0RGV2aWNlKCk7Ci0KLSAgICB2a1VwZGF0ZURlc2NyaXB0b3JTZXRzKGRldmlj
ZSwgd3JpdGVDb3VudCwgd3JpdGVEZXNjcmlwdG9ySW5mby5kYXRhKCksIDAsIG51bGxwdHIpOwot
fQotCi12b2lkIFByb2dyYW1Wazo6dXBkYXRlQXRvbWljQ291bnRlckJ1ZmZlcnNEZXNjcmlwdG9y
U2V0KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29y
ZGVyKQotewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRleHRWay0+Z2V0U3Rh
dGUoKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6QXRvbWljQ291bnRlckJ1ZmZlcj4gJmF0
b21pY0NvdW50ZXJCdWZmZXJzID0KLSAgICAgICAgbVN0YXRlLmdldEF0b21pY0NvdW50ZXJCdWZm
ZXJzKCk7Ci0KLSAgICBpZiAoYXRvbWljQ291bnRlckJ1ZmZlcnMuZW1wdHkoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY3JpcHRvclNl
dCA9IG1EZXNjcmlwdG9yU2V0c1trU2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXhdOwot
Ci0gICAgY29uc3QgdWludDMyX3QgYmluZGluZ1N0YXJ0ID0gZ2V0QXRvbWljQ291bnRlckJ1ZmZl
ckJpbmRpbmdzT2Zmc2V0KCk7Ci0KLSAgICBnbDo6QXRvbWljQ291bnRlckJ1ZmZlcnNBcnJheTxW
a0Rlc2NyaXB0b3JCdWZmZXJJbmZvPiBkZXNjcmlwdG9yQnVmZmVySW5mbzsKLSAgICBnbDo6QXRv
bWljQ291bnRlckJ1ZmZlcnNBcnJheTxWa1dyaXRlRGVzY3JpcHRvclNldD4gd3JpdGVEZXNjcmlw
dG9ySW5mbzsKLSAgICBnbDo6QXRvbWljQ291bnRlckJ1ZmZlck1hc2sgd3JpdHRlbkJpbmRpbmdz
OwotCi0gICAgUmVuZGVyZXJWayAqcmVuZGVyZXJWayA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIo
KTsKLSAgICBjb25zdCBWa0RldmljZVNpemUgcmVxdWlyZWRPZmZzZXRBbGlnbm1lbnQgPQotICAg
ICAgICByZW5kZXJlclZrLT5nZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMoKS5saW1pdHMubWlu
U3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudDsKLQotICAgIC8vIFdyaXRlIGF0b21pYyBjb3Vu
dGVyIGJ1ZmZlcnMuCi0gICAgZm9yICh1aW50MzJfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlcklu
ZGV4IDwgYXRvbWljQ291bnRlckJ1ZmZlcnMuc2l6ZSgpOyArK2J1ZmZlckluZGV4KQotICAgIHsK
LSAgICAgICAgY29uc3QgZ2w6OkF0b21pY0NvdW50ZXJCdWZmZXIgJmF0b21pY0NvdW50ZXJCdWZm
ZXIgPSBhdG9taWNDb3VudGVyQnVmZmVyc1tidWZmZXJJbmRleF07Ci0gICAgICAgIHVpbnQzMl90
IGJpbmRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRvbWljQ291bnRl
ckJ1ZmZlci5iaW5kaW5nOwotICAgICAgICBjb25zdCBnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8
Z2w6OkJ1ZmZlcj4gJmJ1ZmZlckJpbmRpbmcgPQotICAgICAgICAgICAgZ2xTdGF0ZS5nZXRJbmRl
eGVkQXRvbWljQ291bnRlckJ1ZmZlcihiaW5kaW5nKTsKLQotICAgICAgICBpZiAoYnVmZmVyQmlu
ZGluZy5nZXQoKSA9PSBudWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIFZrRGVzY3JpcHRvckJ1ZmZlckluZm8gJmJ1ZmZlckluZm8g
PSBkZXNjcmlwdG9yQnVmZmVySW5mb1tiaW5kaW5nXTsKLSAgICAgICAgVmtXcml0ZURlc2NyaXB0
b3JTZXQgJndyaXRlSW5mbyAgICA9IHdyaXRlRGVzY3JpcHRvckluZm9bYmluZGluZ107Ci0KLSAg
ICAgICAgV3JpdGVCdWZmZXJEZXNjcmlwdG9yU2V0QmluZGluZyhidWZmZXJCaW5kaW5nLCAwLCBk
ZXNjcmlwdG9yU2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZL
X0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwgYmluZGluZ1N0YXJ0LCBiaW5kaW5nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkT2Zmc2V0QWxp
Z25tZW50LCAmYnVmZmVySW5mbywgJndyaXRlSW5mbyk7Ci0KLSAgICAgICAgQnVmZmVyVmsgKmJ1
ZmZlclZrICAgICAgICAgICAgID0gdms6OkdldEltcGwoYnVmZmVyQmluZGluZy5nZXQoKSk7Ci0g
ICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgJmJ1ZmZlckhlbHBlciA9IGJ1ZmZlclZrLT5nZXRCdWZm
ZXIoKTsKLQotICAgICAgICAvLyBXZSBzZXQgU0hBREVSX1JFQURfQklUIHRvIGJlIGNvbnNlcnZh
dGl2ZS4KLSAgICAgICAgYnVmZmVySGVscGVyLm9uV3JpdGUoY29udGV4dFZrLCByZWNvcmRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCB8
IFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklUKTsKLQotICAgICAgICB3cml0dGVuQmluZGluZ3Mu
c2V0KGJpbmRpbmcpOwotICAgIH0KLQotICAgIC8vIEJpbmQgdGhlIGVtcHR5IGJ1ZmZlciB0byBl
dmVyeSBhcnJheSBzbG90IHRoYXQncyB1bnVzZWQuCi0gICAgbUVtcHR5QnVmZmVyLm9uUmVzb3Vy
Y2VBY2Nlc3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwotICAgIGZvciAoc2l6
ZV90IGJpbmRpbmcgOiB+d3JpdHRlbkJpbmRpbmdzKQotICAgIHsKLSAgICAgICAgVmtEZXNjcmlw
dG9yQnVmZmVySW5mbyAmYnVmZmVySW5mbyA9IGRlc2NyaXB0b3JCdWZmZXJJbmZvW2JpbmRpbmdd
OwotICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICAgID0gd3JpdGVEZXNj
cmlwdG9ySW5mb1tiaW5kaW5nXTsKLQotICAgICAgICBidWZmZXJJbmZvLmJ1ZmZlciA9IG1FbXB0
eUJ1ZmZlci5nZXRCdWZmZXIoKS5nZXRIYW5kbGUoKTsKLSAgICAgICAgYnVmZmVySW5mby5vZmZz
ZXQgPSAwOwotICAgICAgICBidWZmZXJJbmZvLnJhbmdlICA9IFZLX1dIT0xFX1NJWkU7Ci0KLSAg
ICAgICAgd3JpdGVJbmZvLnNUeXBlICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9XUklU
RV9ERVNDUklQVE9SX1NFVDsKLSAgICAgICAgd3JpdGVJbmZvLnBOZXh0ICAgICAgICAgICAgPSBu
dWxscHRyOwotICAgICAgICB3cml0ZUluZm8uZHN0U2V0ICAgICAgICAgICA9IGRlc2NyaXB0b3JT
ZXQ7Ci0gICAgICAgIHdyaXRlSW5mby5kc3RCaW5kaW5nICAgICAgID0gYmluZGluZ1N0YXJ0Owot
ICAgICAgICB3cml0ZUluZm8uZHN0QXJyYXlFbGVtZW50ICA9IHN0YXRpY19jYXN0PHVpbnQzMl90
PihiaW5kaW5nKTsKLSAgICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JDb3VudCAgPSAxOwotICAg
ICAgICB3cml0ZUluZm8uZGVzY3JpcHRvclR5cGUgICA9IFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9S
QUdFX0JVRkZFUjsKLSAgICAgICAgd3JpdGVJbmZvLnBJbWFnZUluZm8gICAgICAgPSBudWxscHRy
OwotICAgICAgICB3cml0ZUluZm8ucEJ1ZmZlckluZm8gICAgICA9ICZidWZmZXJJbmZvOwotICAg
ICAgICB3cml0ZUluZm8ucFRleGVsQnVmZmVyVmlldyA9IG51bGxwdHI7Ci0gICAgfQotCi0gICAg
VmtEZXZpY2UgZGV2aWNlID0gY29udGV4dFZrLT5nZXREZXZpY2UoKTsKLQotICAgIHZrVXBkYXRl
RGVzY3JpcHRvclNldHMoZGV2aWNlLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VO
VEVSX0JVRkZFUlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZURlc2NyaXB0b3JJ
bmZvLmRhdGEoKSwgMCwgbnVsbHB0cik7Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjp1
cGRhdGVJbWFnZXNEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFw
aFJlc291cmNlICpyZWNvcmRlcikKLXsKLSAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsKLSAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6SW1hZ2VCaW5kaW5nPiAmaW1hZ2VCaW5kaW5ncyA9IG1TdGF0ZS5n
ZXRJbWFnZUJpbmRpbmdzKCk7Ci0KLSAgICBpZiAoaW1hZ2VCaW5kaW5ncy5lbXB0eSgpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotICAgIH0KLQotICAg
IFZrRGVzY3JpcHRvclNldCBkZXNjcmlwdG9yU2V0ID0gbURlc2NyaXB0b3JTZXRzW2tTaGFkZXJS
ZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleF07Ci0KLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVy
ZUFycmF5PFRleHR1cmVWayAqPiAmYWN0aXZlSW1hZ2VzID0gY29udGV4dFZrLT5nZXRBY3RpdmVJ
bWFnZXMoKTsKLQotICAgIGNvbnN0IHVpbnQzMl90IGJpbmRpbmdTdGFydCA9IGdldEltYWdlQmlu
ZGluZ3NPZmZzZXQoKTsKLQotICAgIGdsOjpJbWFnZXNBcnJheTxWa0Rlc2NyaXB0b3JJbWFnZUlu
Zm8+IGRlc2NyaXB0b3JJbWFnZUluZm87Ci0gICAgZ2w6OkltYWdlc0FycmF5PFZrV3JpdGVEZXNj
cmlwdG9yU2V0PiB3cml0ZURlc2NyaXB0b3JJbmZvOwotICAgIHVpbnQzMl90IHdyaXRlQ291bnQg
PSAwOwotCi0gICAgLy8gV3JpdGUgaW1hZ2VzLgotICAgIGZvciAodWludDMyX3QgaW1hZ2VJbmRl
eCA9IDA7IGltYWdlSW5kZXggPCBpbWFnZUJpbmRpbmdzLnNpemUoKTsgKytpbWFnZUluZGV4KQot
ICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OkltYWdlQmluZGluZyAmaW1hZ2VCaW5kaW5nID0gaW1h
Z2VCaW5kaW5nc1tpbWFnZUluZGV4XTsKLQotICAgICAgICBBU1NFUlQoIWltYWdlQmluZGluZy51
bnJlZmVyZW5jZWQpOwotCi0gICAgICAgIGZvciAodWludDMyX3QgYXJyYXlFbGVtZW50ID0gMDsg
YXJyYXlFbGVtZW50IDwgaW1hZ2VCaW5kaW5nLmJvdW5kSW1hZ2VVbml0cy5zaXplKCk7Ci0gICAg
ICAgICAgICAgKythcnJheUVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdMdWludCBp
bWFnZVVuaXQgICAgICAgICAgICAgPSBpbWFnZUJpbmRpbmcuYm91bmRJbWFnZVVuaXRzW2FycmF5
RWxlbWVudF07Ci0gICAgICAgICAgICBjb25zdCBnbDo6SW1hZ2VVbml0ICZiaW5kaW5nID0gZ2xT
dGF0ZS5nZXRJbWFnZVVuaXQoaW1hZ2VVbml0KTsKLSAgICAgICAgICAgIFRleHR1cmVWayAqdGV4
dHVyZVZrICAgICAgICAgPSBhY3RpdmVJbWFnZXNbaW1hZ2VVbml0XTsKLQotICAgICAgICAgICAg
dms6OkltYWdlSGVscGVyICppbWFnZSAgICAgICAgID0gJnRleHR1cmVWay0+Z2V0SW1hZ2UoKTsK
LSAgICAgICAgICAgIGNvbnN0IHZrOjpJbWFnZVZpZXcgKmltYWdlVmlldyA9IG51bGxwdHI7Ci0K
LSAgICAgICAgICAgIEFOR0xFX1RSWSh0ZXh0dXJlVmstPmdldFN0b3JhZ2VJbWFnZVZpZXcoY29u
dGV4dFZrLCAoYmluZGluZy5sYXllcmVkID09IEdMX1RSVUUpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nLmxldmVsLCBiaW5kaW5n
LmxheWVyLCAmaW1hZ2VWaWV3KSk7Ci0KLSAgICAgICAgICAgIC8vIE5vdGU6IGJpbmRpbmcuYWNj
ZXNzIGlzIHVudXNlZCBiZWNhdXNlIGl0IGlzIGltcGxpZWQgYnkgdGhlIHNoYWRlci4KLQotICAg
ICAgICAgICAgLy8gVE9ETyhzeW91c3NlZmkpOiBTdXBwb3J0IGltYWdlIGRhdGEgcmVpbnRlcnBy
ZXRhdGlvbiBieSB1c2luZyBiaW5kaW5nLmZvcm1hdC4KLSAgICAgICAgICAgIC8vIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMzU2MwotCi0gICAgICAgICAgICBWa0Rlc2NyaXB0b3JJbWFnZUluZm8gJmlt
YWdlSW5mbyA9IGRlc2NyaXB0b3JJbWFnZUluZm9bd3JpdGVDb3VudF07Ci0gICAgICAgICAgICBW
a1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICA9IHdyaXRlRGVzY3JpcHRvckluZm9bd3Jp
dGVDb3VudF07Ci0KLSAgICAgICAgICAgIGltYWdlSW5mby5zYW1wbGVyICAgICA9IFZLX05VTExf
SEFORExFOwotICAgICAgICAgICAgaW1hZ2VJbmZvLmltYWdlVmlldyAgID0gaW1hZ2VWaWV3LT5n
ZXRIYW5kbGUoKTsKLSAgICAgICAgICAgIGltYWdlSW5mby5pbWFnZUxheW91dCA9IGltYWdlLT5n
ZXRDdXJyZW50TGF5b3V0KCk7Ci0KLSAgICAgICAgICAgIHdyaXRlSW5mby5zVHlwZSAgICAgICAg
ICAgID0gVktfU1RSVUNUVVJFX1RZUEVfV1JJVEVfREVTQ1JJUFRPUl9TRVQ7Ci0gICAgICAgICAg
ICB3cml0ZUluZm8ucE5leHQgICAgICAgICAgICA9IG51bGxwdHI7Ci0gICAgICAgICAgICB3cml0
ZUluZm8uZHN0U2V0ICAgICAgICAgICA9IGRlc2NyaXB0b3JTZXQ7Ci0gICAgICAgICAgICB3cml0
ZUluZm8uZHN0QmluZGluZyAgICAgICA9IGJpbmRpbmdTdGFydCArIGltYWdlSW5kZXg7Ci0gICAg
ICAgICAgICB3cml0ZUluZm8uZHN0QXJyYXlFbGVtZW50ICA9IGFycmF5RWxlbWVudDsKLSAgICAg
ICAgICAgIHdyaXRlSW5mby5kZXNjcmlwdG9yQ291bnQgID0gMTsKLSAgICAgICAgICAgIHdyaXRl
SW5mby5kZXNjcmlwdG9yVHlwZSAgID0gVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfSU1BR0U7
Ci0gICAgICAgICAgICB3cml0ZUluZm8ucEltYWdlSW5mbyAgICAgICA9ICZpbWFnZUluZm87Ci0g
ICAgICAgICAgICB3cml0ZUluZm8ucEJ1ZmZlckluZm8gICAgICA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICB3cml0ZUluZm8ucFRleGVsQnVmZmVyVmlldyA9IG51bGxwdHI7Ci0KLSAgICAgICAgICAg
ICsrd3JpdGVDb3VudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZrRGV2aWNlIGRldmljZSA9
IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7Ci0KLSAgICB2a1VwZGF0ZURlc2NyaXB0b3JTZXRzKGRl
dmljZSwgd3JpdGVDb3VudCwgd3JpdGVEZXNjcmlwdG9ySW5mby5kYXRhKCksIDAsIG51bGxwdHIp
OwotCi0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotfQotCi1hbmdsZTo6UmVz
dWx0IFByb2dyYW1Wazo6dXBkYXRlU2hhZGVyUmVzb3VyY2VzRGVzY3JpcHRvclNldChDb250ZXh0
VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIpCi17
Ci0gICAgQU5HTEVfVFJZKGFsbG9jYXRlRGVzY3JpcHRvclNldChjb250ZXh0VmssIGtTaGFkZXJS
ZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleCkpOwotCi0gICAgdXBkYXRlQnVmZmVyc0Rlc2NyaXB0
b3JTZXQoY29udGV4dFZrLCByZWNvcmRlciwgbVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9C
VUZGRVIpOwotICAgIHVwZGF0ZUJ1ZmZlcnNEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywgcmVjb3Jk
ZXIsIG1TdGF0ZS5nZXRTaGFkZXJTdG9yYWdlQmxvY2tzKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSKTsKLSAgICB1cGRh
dGVBdG9taWNDb3VudGVyQnVmZmVyc0Rlc2NyaXB0b3JTZXQoY29udGV4dFZrLCByZWNvcmRlcik7
Ci0gICAgcmV0dXJuIHVwZGF0ZUltYWdlc0Rlc2NyaXB0b3JTZXQoY29udGV4dFZrLCByZWNvcmRl
cik7Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjp1cGRhdGVUcmFuc2Zvcm1GZWVkYmFj
a0Rlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpGcmFtZWJ1ZmZl
ckhlbHBlciAqZnJhbWVidWZmZXIpCi17Ci0gICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlID0g
Y29udGV4dFZrLT5nZXRTdGF0ZSgpOwotICAgIEFTU0VSVChoYXNUcmFuc2Zvcm1GZWVkYmFja091
dHB1dCgpKTsKLQotICAgIFRyYW5zZm9ybUZlZWRiYWNrVmsgKnRyYW5zZm9ybUZlZWRiYWNrVmsg
PSB2azo6R2V0SW1wbChnbFN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpKTsKLSAg
ICB0cmFuc2Zvcm1GZWVkYmFja1ZrLT5hZGRGcmFtZWJ1ZmZlckRlcGVuZGVuY3koY29udGV4dFZr
LCBtU3RhdGUsIGZyYW1lYnVmZmVyKTsKLQotICAgIEFOR0xFX1RSWShhbGxvY2F0ZURlc2NyaXB0
b3JTZXQoY29udGV4dFZrLCBrVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXgpKTsKLQot
ICAgIHVwZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQoY29udGV4dFZrKTsKLSAgICB1
cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXRJbXBsKGNvbnRleHRWayk7Ci0KLSAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUHJvZ3JhbVZrOjp1
cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXRJbXBsKENvbnRleHRWayAqY29udGV4
dFZrKQotewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICAgPSBj
b250ZXh0VmstPmdldFN0YXRlKCk7Ci0gICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICp0cmFuc2Zv
cm1GZWVkYmFjayA9IGdsU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0KLSAg
ICBpZiAoIWhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KCkpCi0gICAgewotICAgICAgICAvLyBJ
ZiB4ZmIgaGFzIG5vIG91dHB1dCB0aGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSBkZXNjcmlwdG9y
IHNldC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWdsU3RhdGUuaXNUcmFuc2Zv
cm1GZWVkYmFja0FjdGl2ZSgpKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IGVtcHR5IEJ1ZmZl
ciB0byB4ZmIgZGVzY3JpcHRvciBzZXQgYmVjYXVzZSB4ZmIgZGVzY3JpcHRvciBzZXQKLSAgICAg
ICAgLy8gcmVxdWlyZXMgdmFsaWQgYnVmZmVyIGJpbmRpbmdzLCBldmVuIGlmIHRoZXkgYXJlIGVt
cHR5IGJ1ZmZlciwKLSAgICAgICAgLy8gb3RoZXJ3aXNlIFZ1bGthbiB2YWxpZGF0aW9uIGxheWVy
IGdlbmVyYXRlcyBlcnJvcnMuCi0gICAgICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFjaykKLSAgICAg
ICAgewotICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tWayAqdHJhbnNmb3JtRmVlZGJhY2tW
ayA9IHZrOjpHZXRJbXBsKHRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAgICAgICAgIHRyYW5zZm9y
bUZlZWRiYWNrVmstPmluaXREZXNjcmlwdG9yU2V0KAotICAgICAgICAgICAgICAgIGNvbnRleHRW
aywgbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKSwgJm1FbXB0eUJ1ZmZl
ciwKLSAgICAgICAgICAgICAgICBtRGVzY3JpcHRvclNldHNba1VuaWZvcm1zQW5kWGZiRGVzY3Jp
cHRvclNldEluZGV4XSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IFRyYW5zZm9ybUZlZWRiYWNrVmsgKnRyYW5zZm9ybUZlZWRiYWNrVmsgPSB2azo6R2V0SW1wbChn
bFN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpKTsKLSAgICB0cmFuc2Zvcm1GZWVk
YmFja1ZrLT51cGRhdGVEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywgbVN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURlc2NyaXB0b3JTZXRzW2tVbmlm
b3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleF0pOwotfQotCi1hbmdsZTo6UmVzdWx0IFByb2dy
YW1Wazo6dXBkYXRlVGV4dHVyZXNEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrKQot
ewotICAgIGNvbnN0IHZrOjpUZXh0dXJlRGVzY3JpcHRvckRlc2MgJnRleHR1cmVzRGVzYyA9IGNv
bnRleHRWay0+Z2V0QWN0aXZlVGV4dHVyZXNEZXNjKCk7Ci0KLSAgICBhdXRvIGl0ZXIgPSBtVGV4
dHVyZURlc2NyaXB0b3JzQ2FjaGUuZmluZCh0ZXh0dXJlc0Rlc2MpOwotICAgIGlmIChpdGVyICE9
IG1UZXh0dXJlRGVzY3JpcHRvcnNDYWNoZS5lbmQoKSkKLSAgICB7Ci0gICAgICAgIG1EZXNjcmlw
dG9yU2V0c1trVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleF0gPSBpdGVyLT5zZWNvbmQ7Ci0gICAg
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLSAgICB9Ci0KLSAgICBBU1NFUlQo
aGFzVGV4dHVyZXMoKSk7Ci0gICAgYm9vbCBuZXdQb29sQWxsb2NhdGVkOwotICAgIEFOR0xFX1RS
WSgKLSAgICAgICAgYWxsb2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyhjb250ZXh0VmssIGtU
ZXh0dXJlRGVzY3JpcHRvclNldEluZGV4LCAmbmV3UG9vbEFsbG9jYXRlZCkpOwotCi0gICAgLy8g
Q2xlYXIgZGVzY3JpcHRvciBzZXQgY2FjaGUuIEl0IG1heSBubyBsb25nZXIgYmUgdmFsaWQuCi0g
ICAgaWYgKG5ld1Bvb2xBbGxvY2F0ZWQpCi0gICAgewotICAgICAgICBtVGV4dHVyZURlc2NyaXB0
b3JzQ2FjaGUuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY3JpcHRv
clNldCA9IG1EZXNjcmlwdG9yU2V0c1trVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleF07Ci0KLSAg
ICBnbDo6QWN0aXZlVGV4dHVyZUFycmF5PFZrRGVzY3JpcHRvckltYWdlSW5mbz4gZGVzY3JpcHRv
ckltYWdlSW5mbzsKLSAgICBnbDo6QWN0aXZlVGV4dHVyZUFycmF5PFZrV3JpdGVEZXNjcmlwdG9y
U2V0PiB3cml0ZURlc2NyaXB0b3JJbmZvOwotICAgIHVpbnQzMl90IHdyaXRlQ291bnQgPSAwOwot
Ci0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVBcnJheTx2azo6VGV4dHVyZVVuaXQ+ICZhY3Rp
dmVUZXh0dXJlcyA9IGNvbnRleHRWay0+Z2V0QWN0aXZlVGV4dHVyZXMoKTsKLQotICAgIGJvb2wg
ZW11bGF0ZVNlYW1mdWxDdWJlTWFwU2FtcGxpbmcgPSBjb250ZXh0VmstPmVtdWxhdGVTZWFtZnVs
Q3ViZU1hcFNhbXBsaW5nKCk7Ci0gICAgYm9vbCB1c2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMg
ICA9IGNvbnRleHRWay0+dXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzKCk7Ci0KLSAgICBzdGQ6
OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVpbnQzMl90PiBtYXBwZWRTYW1wbGVyTmFtZVRv
QmluZGluZ0luZGV4OwotICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMy
X3Q+IG1hcHBlZFNhbXBsZXJOYW1lVG9BcnJheU9mZnNldDsKLQotICAgIHVpbnQzMl90IGN1cnJl
bnRCaW5kaW5nSW5kZXggPSAwOwotCi0gICAgZm9yICh1aW50MzJfdCB0ZXh0dXJlSW5kZXggPSAw
OyB0ZXh0dXJlSW5kZXggPCBtU3RhdGUuZ2V0U2FtcGxlckJpbmRpbmdzKCkuc2l6ZSgpOwotICAg
ICAgICAgKyt0ZXh0dXJlSW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCBnbDo6U2FtcGxlckJp
bmRpbmcgJnNhbXBsZXJCaW5kaW5nID0gbVN0YXRlLmdldFNhbXBsZXJCaW5kaW5ncygpW3RleHR1
cmVJbmRleF07Ci0KLSAgICAgICAgQVNTRVJUKCFzYW1wbGVyQmluZGluZy51bnJlZmVyZW5jZWQp
OwotCi0gICAgICAgIHVpbnQzMl90IHVuaWZvcm1JbmRleCA9IG1TdGF0ZS5nZXRVbmlmb3JtSW5k
ZXhGcm9tU2FtcGxlckluZGV4KHRleHR1cmVJbmRleCk7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5r
ZWRVbmlmb3JtICZzYW1wbGVyVW5pZm9ybSA9IG1TdGF0ZS5nZXRVbmlmb3JtcygpW3VuaWZvcm1J
bmRleF07Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG1hcHBlZFNhbXBsZXJOYW1lICAgICAgICAgICA9
IEdsc2xhbmdHZXRNYXBwZWRTYW1wbGVyTmFtZShzYW1wbGVyVW5pZm9ybS5uYW1lKTsKLQotICAg
ICAgICBpZiAodXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzIHx8Ci0gICAgICAgICAgICBtYXBw
ZWRTYW1wbGVyTmFtZVRvQmluZGluZ0luZGV4LmVtcGxhY2UobWFwcGVkU2FtcGxlck5hbWUsIGN1
cnJlbnRCaW5kaW5nSW5kZXgpLnNlY29uZCkKLSAgICAgICAgewotICAgICAgICAgICAgY3VycmVu
dEJpbmRpbmdJbmRleCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgdWludDMyX3QgYmluZGluZ0lu
ZGV4ID0gdGV4dHVyZUluZGV4OwotICAgICAgICB1aW50MzJfdCBhcnJheU9mZnNldCAgPSAwOwot
ICAgICAgICB1aW50MzJfdCBhcnJheVNpemUgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc2Ft
cGxlckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHMuc2l6ZSgpKTsKLQotICAgICAgICBpZiAoIXVz
ZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycykKLSAgICAgICAgewotICAgICAgICAgICAgYmluZGlu
Z0luZGV4ID0gbWFwcGVkU2FtcGxlck5hbWVUb0JpbmRpbmdJbmRleFttYXBwZWRTYW1wbGVyTmFt
ZV07Ci0gICAgICAgICAgICBhcnJheU9mZnNldCAgPSBtYXBwZWRTYW1wbGVyTmFtZVRvQXJyYXlP
ZmZzZXRbbWFwcGVkU2FtcGxlck5hbWVdOwotICAgICAgICAgICAgLy8gRnJvbnQtZW5kIGdlbmVy
YXRlcyBhcnJheSBlbGVtZW50cyBpbiBvcmRlciwgc28gd2UgY2FuIGp1c3QgaW5jcmVtZW50Ci0g
ICAgICAgICAgICAvLyB0aGUgb2Zmc2V0IGVhY2ggdGltZSB3ZSBwcm9jZXNzIGEgbmVzdGVkIGFy
cmF5LgotICAgICAgICAgICAgbWFwcGVkU2FtcGxlck5hbWVUb0FycmF5T2Zmc2V0W21hcHBlZFNh
bXBsZXJOYW1lXSArPSBhcnJheVNpemU7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHVpbnQz
Ml90IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IGFycmF5U2l6ZTsgKythcnJheUVs
ZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlVW5pdCAgID0gc2Ft
cGxlckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHNbYXJyYXlFbGVtZW50XTsKLSAgICAgICAgICAg
IFRleHR1cmVWayAqdGV4dHVyZVZrID0gYWN0aXZlVGV4dHVyZXNbdGV4dHVyZVVuaXRdLnRleHR1
cmU7Ci0gICAgICAgICAgICBTYW1wbGVyVmsgKnNhbXBsZXJWayA9IGFjdGl2ZVRleHR1cmVzW3Rl
eHR1cmVVbml0XS5zYW1wbGVyOwotCi0gICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgJmltYWdl
ID0gdGV4dHVyZVZrLT5nZXRJbWFnZSgpOwotCi0gICAgICAgICAgICBWa0Rlc2NyaXB0b3JJbWFn
ZUluZm8gJmltYWdlSW5mbyA9IGRlc2NyaXB0b3JJbWFnZUluZm9bd3JpdGVDb3VudF07Ci0KLSAg
ICAgICAgICAgIC8vIFVzZSBib3VuZCBzYW1wbGVyIG9iamVjdCBpZiBvbmUgcHJlc2VudCwgb3Ro
ZXJ3aXNlIHVzZSB0ZXh0dXJlJ3Mgc2FtcGxlcgotICAgICAgICAgICAgY29uc3Qgdms6OlNhbXBs
ZXIgJnNhbXBsZXIgPQotICAgICAgICAgICAgICAgIChzYW1wbGVyVmsgIT0gbnVsbHB0cikgPyBz
YW1wbGVyVmstPmdldFNhbXBsZXIoKSA6IHRleHR1cmVWay0+Z2V0U2FtcGxlcigpOwotCi0gICAg
ICAgICAgICBpbWFnZUluZm8uc2FtcGxlciAgICAgPSBzYW1wbGVyLmdldEhhbmRsZSgpOwotICAg
ICAgICAgICAgaW1hZ2VJbmZvLmltYWdlTGF5b3V0ID0gaW1hZ2UuZ2V0Q3VycmVudExheW91dCgp
OwotCi0gICAgICAgICAgICBpZiAoZW11bGF0ZVNlYW1mdWxDdWJlTWFwU2FtcGxpbmcpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgZW11bGF0aW5nIHNlYW1mdWwgY3ViZW1h
cHBpbmcsIHVzZSB0aGUgZmV0Y2ggaW1hZ2Ugdmlldy4gIFRoaXMgaXMgYmFzaWNhbGx5Ci0gICAg
ICAgICAgICAgICAgLy8gdGhlIHNhbWUgaW1hZ2UgdmlldyBhcyByZWFkLCBleGNlcHQgaXQncyBh
IDJEQXJyYXkgdmlldyBmb3IgY3ViZSBtYXBzLgotICAgICAgICAgICAgICAgIGltYWdlSW5mby5p
bWFnZVZpZXcgPQotICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlVmstPmdldEZldGNoSW1hZ2VW
aWV3QW5kUmVjb3JkVXNlKGNvbnRleHRWaykuZ2V0SGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW1hZ2VJbmZv
LmltYWdlVmlldyA9Ci0gICAgICAgICAgICAgICAgICAgIHRleHR1cmVWay0+Z2V0UmVhZEltYWdl
Vmlld0FuZFJlY29yZFVzZShjb250ZXh0VmspLmdldEhhbmRsZSgpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvID0gd3JpdGVEZXNj
cmlwdG9ySW5mb1t3cml0ZUNvdW50XTsKLQotICAgICAgICAgICAgd3JpdGVJbmZvLnNUeXBlICAg
ICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9XUklURV9ERVNDUklQVE9SX1NFVDsKLSAgICAg
ICAgICAgIHdyaXRlSW5mby5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICAgICAgICAg
IHdyaXRlSW5mby5kc3RTZXQgICAgICAgICAgID0gZGVzY3JpcHRvclNldDsKLSAgICAgICAgICAg
IHdyaXRlSW5mby5kc3RCaW5kaW5nICAgICAgID0gYmluZGluZ0luZGV4OwotICAgICAgICAgICAg
d3JpdGVJbmZvLmRzdEFycmF5RWxlbWVudCAgPSBhcnJheU9mZnNldCArIGFycmF5RWxlbWVudDsK
LSAgICAgICAgICAgIHdyaXRlSW5mby5kZXNjcmlwdG9yQ291bnQgID0gMTsKLSAgICAgICAgICAg
IHdyaXRlSW5mby5kZXNjcmlwdG9yVHlwZSAgID0gVktfREVTQ1JJUFRPUl9UWVBFX0NPTUJJTkVE
X0lNQUdFX1NBTVBMRVI7Ci0gICAgICAgICAgICB3cml0ZUluZm8ucEltYWdlSW5mbyAgICAgICA9
ICZpbWFnZUluZm87Ci0gICAgICAgICAgICB3cml0ZUluZm8ucEJ1ZmZlckluZm8gICAgICA9IG51
bGxwdHI7Ci0gICAgICAgICAgICB3cml0ZUluZm8ucFRleGVsQnVmZmVyVmlldyA9IG51bGxwdHI7
Ci0KLSAgICAgICAgICAgICsrd3JpdGVDb3VudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFZr
RGV2aWNlIGRldmljZSA9IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7Ci0KLSAgICBBU1NFUlQod3Jp
dGVDb3VudCA+IDApOwotCi0gICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyhkZXZpY2UsIHdyaXRl
Q291bnQsIHdyaXRlRGVzY3JpcHRvckluZm8uZGF0YSgpLCAwLCBudWxscHRyKTsKLQotICAgIG1U
ZXh0dXJlRGVzY3JpcHRvcnNDYWNoZS5lbXBsYWNlKHRleHR1cmVzRGVzYywgZGVzY3JpcHRvclNl
dCk7Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KIHZvaWQgUHJv
Z3JhbVZrOjpzZXREZWZhdWx0VW5pZm9ybUJsb2Nrc01pblNpemVGb3JUZXN0aW5nKHNpemVfdCBt
aW5TaXplKQogewogICAgIGZvciAoRGVmYXVsdFVuaWZvcm1CbG9jayAmYmxvY2sgOiBtRGVmYXVs
dFVuaWZvcm1CbG9ja3MpCkBAIC0xODEzLDc1ICs3NjIsNCBAQCB2b2lkIFByb2dyYW1Wazo6c2V0
RGVmYXVsdFVuaWZvcm1CbG9ja3NNaW5TaXplRm9yVGVzdGluZyhzaXplX3QgbWluU2l6ZSkKICAg
ICB9CiB9CiAKLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjp1cGRhdGVEZXNjcmlwdG9yU2V0cyhD
b250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKLXsKLSAgICAvLyBD
YW4gcHJvYmFibHkgdXNlIGJldHRlciBkaXJ0eSBiaXRzIGhlcmUuCi0KLSAgICBpZiAobURlc2Ny
aXB0b3JTZXRzLmVtcHR5KCkpCi0gICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKLQotICAgIC8vIEZpbmQgdGhlIG1heGltdW0gbm9uLW51bGwgZGVzY3JpcHRvciBzZXQuICBU
aGlzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGRyaXZlcgotICAgIC8vIHdvcmthcm91
bmQgdG8gYmluZCBlbXB0eSBkZXNjcmlwdG9yIHNldHMgb25seSBmb3IgZ2FwcyBpbiBiZXR3ZWVu
IDAgYW5kIG1heCBhbmQgYXZvaWQKLSAgICAvLyBiaW5kaW5nIHVubmVjZXNzYXJ5IGVtcHR5IGRl
c2NyaXB0b3Igc2V0cyBmb3IgdGhlIHNldHMgYmV5b25kIG1heC4KLSAgICBjb25zdCBzaXplX3Qg
ZGVzY3JpcHRvclNldFN0YXJ0ID0ga1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4Owot
ICAgIHNpemVfdCBkZXNjcmlwdG9yU2V0UmFuZ2UgICAgICAgPSAwOwotICAgIGZvciAoc2l6ZV90
IGRlc2NyaXB0b3JTZXRJbmRleCA9IGRlc2NyaXB0b3JTZXRTdGFydDsKLSAgICAgICAgIGRlc2Ny
aXB0b3JTZXRJbmRleCA8IG1EZXNjcmlwdG9yU2V0cy5zaXplKCk7ICsrZGVzY3JpcHRvclNldElu
ZGV4KQotICAgIHsKLSAgICAgICAgaWYgKG1EZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5k
ZXhdICE9IFZLX05VTExfSEFORExFKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXNjcmlwdG9y
U2V0UmFuZ2UgPSBkZXNjcmlwdG9yU2V0SW5kZXggKyAxOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgY29uc3QgVmtQaXBlbGluZUJpbmRQb2ludCBwaXBlbGluZUJpbmRQb2ludCA9Ci0gICAgICAg
IG1TdGF0ZS5pc0NvbXB1dGUoKSA/IFZLX1BJUEVMSU5FX0JJTkRfUE9JTlRfQ09NUFVURSA6IFZL
X1BJUEVMSU5FX0JJTkRfUE9JTlRfR1JBUEhJQ1M7Ci0KLSAgICBmb3IgKHVpbnQzMl90IGRlc2Ny
aXB0b3JTZXRJbmRleCA9IGRlc2NyaXB0b3JTZXRTdGFydDsgZGVzY3JpcHRvclNldEluZGV4IDwg
ZGVzY3JpcHRvclNldFJhbmdlOwotICAgICAgICAgKytkZXNjcmlwdG9yU2V0SW5kZXgpCi0gICAg
ewotICAgICAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY1NldCA9IG1EZXNjcmlwdG9yU2V0c1tkZXNj
cmlwdG9yU2V0SW5kZXhdOwotICAgICAgICBpZiAoZGVzY1NldCA9PSBWS19OVUxMX0hBTkRMRSkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFjb250ZXh0VmstPmdldFJlbmRlcmVyKCktPmdl
dEZlYXR1cmVzKCkuYmluZEVtcHR5Rm9yVW51c2VkRGVzY3JpcHRvclNldHMuZW5hYmxlZCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBhIGRyaXZlciBidWcgd2hlcmUgbWlzc2luZyAodGhv
dWdoIHVudXNlZCkgZGVzY3JpcHRvciBzZXRzIGluZGljZXMgY2F1c2UKLSAgICAgICAgICAgIC8v
IGxhdGVyIHNldHMgdG8gbWlzYmVoYXZlLgotICAgICAgICAgICAgaWYgKG1FbXB0eURlc2NyaXB0
b3JTZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0gPT0gVktfTlVMTF9IQU5ETEUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29uc3Qgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXQgJmRlc2Ny
aXB0b3JTZXRMYXlvdXQgPQotICAgICAgICAgICAgICAgICAgICBtRGVzY3JpcHRvclNldExheW91
dHNbZGVzY3JpcHRvclNldEluZGV4XS5nZXQoKTsKLQotICAgICAgICAgICAgICAgIEFOR0xFX1RS
WShtRHluYW1pY0Rlc2NyaXB0b3JQb29sc1tkZXNjcmlwdG9yU2V0SW5kZXhdLmFsbG9jYXRlU2V0
cygKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dFZrLCBkZXNjcmlwdG9yU2V0TGF5b3V0LnB0
cigpLCAxLAotICAgICAgICAgICAgICAgICAgICAmbURlc2NyaXB0b3JQb29sQmluZGluZ3NbZGVz
Y3JpcHRvclNldEluZGV4XSwKLSAgICAgICAgICAgICAgICAgICAgJm1FbXB0eURlc2NyaXB0b3JT
ZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRl
c2NTZXQgPSBtRW1wdHlEZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5kZXhdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gRGVmYXVsdCB1bmlmb3JtcyBhcmUgZW5jb21wYXNzZWQgaW4gYSBi
bG9jayBwZXIgc2hhZGVyIHN0YWdlLCBhbmQgdGhleSBhcmUgYXNzaWduZWQKLSAgICAgICAgLy8g
dGhyb3VnaCBkeW5hbWljIHVuaWZvcm0gYnVmZmVycyAocmVxdWlyaW5nIGR5bmFtaWMgb2Zmc2V0
cykuICBObyBvdGhlciBkZXNjcmlwdG9yCi0gICAgICAgIC8vIHJlcXVpcmVzIGEgZHluYW1pYyBv
ZmZzZXQuCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IHVuaWZvcm1CbG9ja09mZnNldENvdW50ID0K
LSAgICAgICAgICAgIGRlc2NyaXB0b3JTZXRJbmRleCA9PSBrVW5pZm9ybXNBbmRYZmJEZXNjcmlw
dG9yU2V0SW5kZXgKLSAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihtRHlu
YW1pY0J1ZmZlck9mZnNldHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIDogMDsKLQotICAgICAg
ICBjb21tYW5kQnVmZmVyLT5iaW5kRGVzY3JpcHRvclNldHMobVBpcGVsaW5lTGF5b3V0LmdldCgp
LCBwaXBlbGluZUJpbmRQb2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc2NyaXB0b3JTZXRJbmRleCwgMSwgJmRlc2NTZXQsIHVuaWZvcm1CbG9ja09mZnNl
dENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUR5bmFt
aWNCdWZmZXJPZmZzZXRzLmRhdGEoKSk7Ci0gICAgfQotCi0gICAgZm9yICh2azo6QnVmZmVySGVs
cGVyICpidWZmZXIgOiBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNoZSkKLSAgICB7Ci0gICAgICAgIGJ1
ZmZlci0+b25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotfQogfSAgLy8g
bmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaAppbmRleCA2MTExOWQw
YzlkZWM2ZjVmNzhmMjc1ZDViZjQwM2E5MzE5MmU2ZjBiLi5iY2VmMjkwZTdlMjgxZGM2ZDhhYjNm
YTAyMjRjMDgxZTQxM2EwYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgKQEAg
LTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdfd3JhcHBlcl91dGlscy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1dGFibGVWay5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaGVscGVycy5oIgpAQCAtOTksMzYgKzEwMCwxNCBA
QCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICB2b2lkIGdldFVuaWZv
cm1pdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpw
YXJhbXMpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgc2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpz
dHJpbmcgJmlucHV0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9u
ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNv
ZWZmcykgb3ZlcnJpZGU7Ci0KLSAgICAvLyBBbHNvIGluaXRpYWxpemVzIHRoZSBwaXBlbGluZSBs
YXlvdXQsIGRlc2NyaXB0b3Igc2V0IGxheW91dHMsIGFuZCB1c2VkIGRlc2NyaXB0b3IgcmFuZ2Vz
LgotCiAgICAgYW5nbGU6OlJlc3VsdCB1cGRhdGVVbmlmb3JtcyhDb250ZXh0VmsgKmNvbnRleHRW
ayk7Ci0gICAgYW5nbGU6OlJlc3VsdCB1cGRhdGVUZXh0dXJlc0Rlc2NyaXB0b3JTZXQoQ29udGV4
dFZrICpjb250ZXh0VmspOwotICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlU2hhZGVyUmVzb3VyY2Vz
RGVzY3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFwaFJlc291cmNl
ICpyZWNvcmRlcik7Ci0gICAgYW5nbGU6OlJlc3VsdCB1cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rl
c2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpm
cmFtZWJ1ZmZlcik7Ci0KLSAgICBhbmdsZTo6UmVzdWx0IHVwZGF0ZURlc2NyaXB0b3JTZXRzKENv
bnRleHRWayAqY29udGV4dFZrLCB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcik7CiAK
ICAgICAvLyBGb3IgdGVzdGluZyBvbmx5LgogICAgIHZvaWQgc2V0RGVmYXVsdFVuaWZvcm1CbG9j
a3NNaW5TaXplRm9yVGVzdGluZyhzaXplX3QgbWluU2l6ZSk7CiAKLSAgICBjb25zdCB2azo6UGlw
ZWxpbmVMYXlvdXQgJmdldFBpcGVsaW5lTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbVBpcGVsaW5l
TGF5b3V0LmdldCgpOyB9Ci0KLSAgICBib29sIGhhc0RlZmF1bHRVbmlmb3JtcygpIGNvbnN0IHsg
cmV0dXJuICFtU3RhdGUuZ2V0RGVmYXVsdFVuaWZvcm1SYW5nZSgpLmVtcHR5KCk7IH0KLSAgICBi
b29sIGhhc1RleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gIW1TdGF0ZS5nZXRTYW1wbGVyQmluZGlu
Z3MoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNVbmlmb3JtQnVmZmVycygpIGNvbnN0IHsgcmV0
dXJuICFtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrcygpLmVtcHR5KCk7IH0KLSAgICBib29sIGhhc1N0
b3JhZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gIW1TdGF0ZS5nZXRTaGFkZXJTdG9yYWdlQmxv
Y2tzKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzQXRvbWljQ291bnRlckJ1ZmZlcnMoKSBjb25z
dCB7IHJldHVybiAhbVN0YXRlLmdldEF0b21pY0NvdW50ZXJCdWZmZXJzKCkuZW1wdHkoKTsgfQot
ICAgIGJvb2wgaGFzSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gIW1TdGF0ZS5nZXRJbWFnZUJpbmRp
bmdzKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQoKSBj
b25zdAorICAgIGNvbnN0IHZrOjpQaXBlbGluZUxheW91dCAmZ2V0UGlwZWxpbmVMYXlvdXQoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICFtU3RhdGUuZ2V0TGlua2VkVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncygpLmVtcHR5KCk7CisgICAgICAgIHJldHVybiBtRXhlY3V0YWJsZS5tUGlw
ZWxpbmVMYXlvdXQuZ2V0KCk7CiAgICAgfQogCiAgICAgYm9vbCBkaXJ0eVVuaWZvcm1zKCkgY29u
c3QgeyByZXR1cm4gbURlZmF1bHRVbmlmb3JtQmxvY2tzRGlydHkuYW55KCk7IH0KQEAgLTE0OCw4
ICsxMjcsOSBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAgICAg
QU5HTEVfVFJZKHJlbmRlcmVyLT5nZXRQaXBlbGluZUNhY2hlKCZwaXBlbGluZUNhY2hlKSk7CiAg
ICAgICAgIHJldHVybiBzaGFkZXJQcm9ncmFtLT5nZXRHcmFwaGljc1BpcGVsaW5lKAogICAgICAg
ICAgICAgY29udGV4dFZrLCAmY29udGV4dFZrLT5nZXRSZW5kZXJQYXNzQ2FjaGUoKSwgKnBpcGVs
aW5lQ2FjaGUsCi0gICAgICAgICAgICBjb250ZXh0VmstPmdldEN1cnJlbnRRdWV1ZVNlcmlhbCgp
LCBtUGlwZWxpbmVMYXlvdXQuZ2V0KCksIGRlc2MsIGFjdGl2ZUF0dHJpYkxvY2F0aW9ucywKLSAg
ICAgICAgICAgIG1TdGF0ZS5nZXRBdHRyaWJ1dGVzVHlwZU1hc2soKSwgZGVzY1B0ck91dCwgcGlw
ZWxpbmVPdXQpOworICAgICAgICAgICAgY29udGV4dFZrLT5nZXRDdXJyZW50UXVldWVTZXJpYWwo
KSwgbUV4ZWN1dGFibGUubVBpcGVsaW5lTGF5b3V0LmdldCgpLCBkZXNjLAorICAgICAgICAgICAg
YWN0aXZlQXR0cmliTG9jYXRpb25zLCBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS5nZXRB
dHRyaWJ1dGVzVHlwZU1hc2soKSwKKyAgICAgICAgICAgIGRlc2NQdHJPdXQsIHBpcGVsaW5lT3V0
KTsKICAgICB9CiAKICAgICBhbmdsZTo6UmVzdWx0IGdldENvbXB1dGVQaXBlbGluZShDb250ZXh0
VmsgKmNvbnRleHRWaywgdms6OlBpcGVsaW5lQW5kU2VyaWFsICoqcGlwZWxpbmVPdXQpCkBAIC0x
NTcsMTUgKzEzNywyMSBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAg
ICAgICAgdms6OlNoYWRlclByb2dyYW1IZWxwZXIgKnNoYWRlclByb2dyYW07CiAgICAgICAgIEFO
R0xFX1RSWShpbml0Q29tcHV0ZVByb2dyYW0oY29udGV4dFZrLCAmc2hhZGVyUHJvZ3JhbSkpOwog
ICAgICAgICBBU1NFUlQoIXNoYWRlclByb2dyYW0tPmlzR3JhcGhpY3NQcm9ncmFtKCkpOwotICAg
ICAgICByZXR1cm4gc2hhZGVyUHJvZ3JhbS0+Z2V0Q29tcHV0ZVBpcGVsaW5lKGNvbnRleHRWaywg
bVBpcGVsaW5lTGF5b3V0LmdldCgpLCBwaXBlbGluZU91dCk7CisgICAgICAgIHJldHVybiBzaGFk
ZXJQcm9ncmFtLT5nZXRDb21wdXRlUGlwZWxpbmUoY29udGV4dFZrLCBtRXhlY3V0YWJsZS5tUGlw
ZWxpbmVMYXlvdXQuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGlwZWxpbmVPdXQpOwogICAgIH0KIAogICAgIC8vIFVzZWQgaW4gdGVzdGlu
ZyBvbmx5LgogICAgIHZrOjpEeW5hbWljRGVzY3JpcHRvclBvb2wgKmdldER5bmFtaWNEZXNjcmlw
dG9yUG9vbCh1aW50MzJfdCBwb29sSW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gJm1EeW5h
bWljRGVzY3JpcHRvclBvb2xzW3Bvb2xJbmRleF07CisgICAgICAgIHJldHVybiAmbUV4ZWN1dGFi
bGUubUR5bmFtaWNEZXNjcmlwdG9yUG9vbHNbcG9vbEluZGV4XTsKICAgICB9CiAKKyAgICBjb25z
dCBQcm9ncmFtRXhlY3V0YWJsZVZrICZnZXRFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbUV4
ZWN1dGFibGU7IH0KKyAgICBQcm9ncmFtRXhlY3V0YWJsZVZrICZnZXRFeGVjdXRhYmxlKCkgeyBy
ZXR1cm4gbUV4ZWN1dGFibGU7IH0KKworICAgIGdsOjpTaGFkZXJNYXA8RGVmYXVsdFVuaWZvcm1C
bG9jaz4gJmdldERlZmF1bHRVbmlmb3JtQmxvY2tzKCkgeyByZXR1cm4gbURlZmF1bHRVbmlmb3Jt
QmxvY2tzOyB9CisKICAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8aW50IGNvbHMsIGludCByb3dz
PgogICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeGZ2KEdMaW50IGxvY2F0aW9uLApAQCAtMTc0LDEw
ICsxNjAsNiBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiAKICAgICB2b2lkIHJl
c2V0KENvbnRleHRWayAqY29udGV4dFZrKTsKLSAgICBhbmdsZTo6UmVzdWx0IGFsbG9jYXRlRGVz
Y3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaywgdWludDMyX3QgZGVzY3JpcHRvclNldElu
ZGV4KTsKLSAgICBhbmdsZTo6UmVzdWx0IGFsbG9jYXRlRGVzY3JpcHRvclNldEFuZEdldEluZm8o
Q29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlc2NyaXB0b3JTZXRJbmRleCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqbmV3UG9vbEFsbG9j
YXRlZE91dCk7CiAgICAgYW5nbGU6OlJlc3VsdCBpbml0RGVmYXVsdFVuaWZvcm1CbG9ja3MoY29u
c3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCk7CiAgICAgdm9pZCBnZW5lcmF0ZVVuaWZvcm1MYXlv
dXRNYXBwaW5nKGdsOjpTaGFkZXJNYXA8c2g6OkJsb2NrTGF5b3V0TWFwPiAmbGF5b3V0TWFwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHNpemVf
dD4gJnJlcXVpcmVkQnVmZmVyU2l6ZSk7CkBAIC0xODUsMTcgKzE2Nyw2IEBAIGNsYXNzIFByb2dy
YW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIGFuZ2xlOjpSZXN1bHQgcmVzaXplVW5pZm9y
bUJsb2NrTWVtb3J5KENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8c2l6ZV90PiAmcmVxdWlyZWRCdWZm
ZXJTaXplKTsKIAotICAgIHZvaWQgdXBkYXRlRGVmYXVsdFVuaWZvcm1zRGVzY3JpcHRvclNldChD
b250ZXh0VmsgKmNvbnRleHRWayk7Ci0gICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rl
c2NyaXB0b3JTZXRJbXBsKENvbnRleHRWayAqY29udGV4dFZrKTsKLSAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcnNEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWNvcmRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpJbnRlcmZhY2VCbG9jaz4gJmJsb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZrRGVzY3JpcHRvclR5cGUgZGVzY3JpcHRvclR5cGUpOwotICAgIHZvaWQgdXBkYXRl
QXRvbWljQ291bnRlckJ1ZmZlcnNEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21t
YW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIpOwotICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlSW1h
Z2VzRGVzY3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWNv
cmRlcik7Ci0KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgICB2b2lkIGdldFVuaWZvcm1JbXBs
KEdMaW50IGxvY2F0aW9uLCBUICp2LCBHTGVudW0gZW50cnlQb2ludFR5cGUpIGNvbnN0OwogCkBA
IC0yMDQsMjggKzE3NSwxMSBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwK
ICAgICBhbmdsZTo6UmVzdWx0IGxpbmtJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQs
IGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKICAgICB2b2lkIGxpbmtSZXNvdXJjZXMoY29uc3QgZ2w6
OlByb2dyYW1MaW5rZWRSZXNvdXJjZXMgJnJlc291cmNlcyk7CiAKLSAgICB2b2lkIHVwZGF0ZUJp
bmRpbmdPZmZzZXRzKCk7Ci0gICAgdWludDMyX3QgZ2V0VW5pZm9ybUJsb2NrQmluZGluZ3NPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdWludDMyX3QgZ2V0U3RvcmFnZUJsb2NrQmlu
ZGluZ3NPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtU3RvcmFnZUJsb2NrQmluZGluZ3NPZmZzZXQ7
IH0KLSAgICB1aW50MzJfdCBnZXRBdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3NPZmZzZXQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1BdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3NP
ZmZzZXQ7Ci0gICAgfQotICAgIHVpbnQzMl90IGdldEltYWdlQmluZGluZ3NPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtSW1hZ2VCaW5kaW5nc09mZnNldDsgfQotCi0gICAgY2xhc3MgUHJvZ3JhbUlu
Zm87CiAgICAgQU5HTEVfSU5MSU5FIGFuZ2xlOjpSZXN1bHQgaW5pdFByb2dyYW0oQ29udGV4dFZr
ICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBlbmFibGVMaW5lUmFzdGVyRW11bGF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFByb2dyYW1JbmZvICpwcm9ncmFtSW5mbywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6U2hhZGVyUHJvZ3JhbUhlbHBlciAq
KnNoYWRlclByb2dyYW1PdXQpCiAgICAgewotICAgICAgICAvLyBDb21waWxlIHNoYWRlcnMgaWYg
bm90IGFscmVhZHkuICBUaGlzIGlzIGRvbmUgb25seSBvbmNlIHJlZ2FyZGxlc3Mgb2Ygc3BlY2lh
bGl6YXRpb24KLSAgICAgICAgLy8gY29uc3RhbnRzLgotICAgICAgICBpZiAoIW1TaGFkZXJJbmZv
LnZhbGlkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFOR0xFX1RSWShtU2hhZGVySW5mby5p
bml0U2hhZGVycyhjb250ZXh0VmssIG1TaGFkZXJTb3VyY2VzLCBtVmFyaWFibGVJbmZvTWFwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU2hhZGVySW5m
by5nZXRTcGlydkJsb2JzKCkpKTsKLSAgICAgICAgfQogICAgICAgICBBU1NFUlQobVNoYWRlcklu
Zm8udmFsaWQoKSk7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBwcm9ncmFtIHBpcGVsaW5lLiAg
VGhpcyBpcyBkb25lIGxhemlseSBhbmQgb25jZSBwZXIgY29tYmluYXRpb24gb2YKQEAgLTI0Niw4
ICsyMDAsOCBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICB7CiAg
ICAgICAgIGJvb2wgZW5hYmxlTGluZVJhc3RlckVtdWxhdGlvbiA9IFVzZUxpbmVSYXN0ZXIoY29u
dGV4dFZrLCBtb2RlKTsKIAotICAgICAgICBQcm9ncmFtSW5mbyAmcHJvZ3JhbUluZm8gPQotICAg
ICAgICAgICAgZW5hYmxlTGluZVJhc3RlckVtdWxhdGlvbiA/IG1MaW5lUmFzdGVyUHJvZ3JhbUlu
Zm8gOiBtRGVmYXVsdFByb2dyYW1JbmZvOworICAgICAgICBQcm9ncmFtSW5mbyAmcHJvZ3JhbUlu
Zm8gPSBlbmFibGVMaW5lUmFzdGVyRW11bGF0aW9uID8gbUV4ZWN1dGFibGUubUxpbmVSYXN0ZXJQ
cm9ncmFtSW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogbUV4ZWN1dGFibGUubURlZmF1bHRQcm9ncmFtSW5mbzsKIAogICAg
ICAgICByZXR1cm4gaW5pdFByb2dyYW0oY29udGV4dFZrLCBlbmFibGVMaW5lUmFzdGVyRW11bGF0
aW9uLCAmcHJvZ3JhbUluZm8sIHNoYWRlclByb2dyYW1PdXQpOwogICAgIH0KQEAgLTI1NSwxMjIg
KzIwOSwxOCBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICBBTkdM
RV9JTkxJTkUgYW5nbGU6OlJlc3VsdCBpbml0Q29tcHV0ZVByb2dyYW0oQ29udGV4dFZrICpjb250
ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZrOjpTaGFkZXJQcm9ncmFtSGVscGVyICoqc2hhZGVyUHJvZ3JhbU91dCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBpbml0UHJvZ3JhbShjb250ZXh0VmssIGZhbHNlLCAmbURlZmF1bHRQcm9ncmFt
SW5mbywgc2hhZGVyUHJvZ3JhbU91dCk7CisgICAgICAgIHJldHVybiBpbml0UHJvZ3JhbShjb250
ZXh0VmssIGZhbHNlLCAmbUV4ZWN1dGFibGUubURlZmF1bHRQcm9ncmFtSW5mbywgc2hhZGVyUHJv
Z3JhbU91dCk7CiAgICAgfQogCi0gICAgLy8gU2F2ZSBhbmQgbG9hZCBpbXBsZW1lbnRhdGlvbiBm
b3IgR0xFUyBQcm9ncmFtIEJpbmFyeSBzdXBwb3J0LgotICAgIGFuZ2xlOjpSZXN1bHQgbG9hZFNw
aXJ2QmxvYihDb250ZXh0VmsgKmNvbnRleHRWaywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJl
YW0pOwotICAgIHZvaWQgc2F2ZVNwaXJ2QmxvYihnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJl
YW0pOwotCi0gICAgLy8gU3RhdGUgZm9yIHRoZSBkZWZhdWx0IHVuaWZvcm0gYmxvY2tzLgotICAg
IHN0cnVjdCBEZWZhdWx0VW5pZm9ybUJsb2NrIGZpbmFsIDogcHJpdmF0ZSBhbmdsZTo6Tm9uQ29w
eWFibGUKLSAgICB7Ci0gICAgICAgIERlZmF1bHRVbmlmb3JtQmxvY2soKTsKLSAgICAgICAgfkRl
ZmF1bHRVbmlmb3JtQmxvY2soKTsKLQotICAgICAgICB2azo6RHluYW1pY0J1ZmZlciBzdG9yYWdl
OwotCi0gICAgICAgIC8vIFNoYWRvdyBjb3BpZXMgb2YgdGhlIHNoYWRlciB1bmlmb3JtIGRhdGEu
Ci0gICAgICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgdW5pZm9ybURhdGE7Ci0KLSAgICAgICAgLy8g
U2luY2UgdGhlIGRlZmF1bHQgYmxvY2tzIGFyZSBsYWlkIG91dCBpbiBzdGQxNDAsIHRoaXMgdGVs
bHMgdXMgd2hlcmUgdG8gd3JpdGUgb24gYSBjYWxsCi0gICAgICAgIC8vIHRvIGEgc2V0VW5pZm9y
bSBtZXRob2QuIFRoZXkgYXJlIGFycmFuZ2VkIGluIHVuaWZvcm0gbG9jYXRpb24gb3JkZXIuCi0g
ICAgICAgIHN0ZDo6dmVjdG9yPHNoOjpCbG9ja01lbWJlckluZm8+IHVuaWZvcm1MYXlvdXQ7Ci0g
ICAgfTsKLQogICAgIGdsOjpTaGFkZXJNYXA8RGVmYXVsdFVuaWZvcm1CbG9jaz4gbURlZmF1bHRV
bmlmb3JtQmxvY2tzOwogICAgIGdsOjpTaGFkZXJCaXRTZXQgbURlZmF1bHRVbmlmb3JtQmxvY2tz
RGlydHk7CiAKLSAgICBnbDo6U2hhZGVyVmVjdG9yPHVpbnQzMl90PiBtRHluYW1pY0J1ZmZlck9m
ZnNldHM7Ci0KLSAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCAiZW1wdHkiIHBsYWNlaG9sZGVyIGJ1
ZmZlciBmb3Igd2hlbiBhIHNoYWRlciBoYXMgbm8gdW5pZm9ybXMgb3IgZG9lc24ndAotICAgIC8v
IHVzZSBhbGwgc2xvdHMgaW4gdGhlIGF0b21pYyBjb3VudGVyIGJ1ZmZlciBhcnJheS4KLSAgICAv
LwotICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIHdhbnQgdG8ga2VlcCBhIGNvbXBh
dGlibGUgcGlwZWxpbmUgbGF5b3V0IGluIGFsbCBjYXNlcywKLSAgICAvLyBhbmQgVnVsa2FuIGRv
ZXMgbm90IHRvbGVyYXRlIGhhdmluZyBudWxsIGhhbmRsZXMgaW4gYSBkZXNjcmlwdG9yIHNldC4K
LSAgICB2azo6QnVmZmVySGVscGVyIG1FbXB0eUJ1ZmZlcjsKLQotICAgIC8vIERlc2NyaXB0b3Ig
c2V0cyBmb3IgdW5pZm9ybSBibG9ja3MgYW5kIHRleHR1cmVzIGZvciB0aGlzIHByb2dyYW0uCi0g
ICAgc3RkOjp2ZWN0b3I8VmtEZXNjcmlwdG9yU2V0PiBtRGVzY3JpcHRvclNldHM7Ci0gICAgdms6
OkRlc2NyaXB0b3JTZXRMYXlvdXRBcnJheTxWa0Rlc2NyaXB0b3JTZXQ+IG1FbXB0eURlc2NyaXB0
b3JTZXRzOwotICAgIHN0ZDo6dmVjdG9yPHZrOjpCdWZmZXJIZWxwZXIgKj4gbURlc2NyaXB0b3JC
dWZmZXJzQ2FjaGU7Ci0KLSAgICBzdGQ6OnVub3JkZXJlZF9tYXA8dms6OlRleHR1cmVEZXNjcmlw
dG9yRGVzYywgVmtEZXNjcmlwdG9yU2V0PiBtVGV4dHVyZURlc2NyaXB0b3JzQ2FjaGU7Ci0KLSAg
ICAvLyBXZSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBwaXBlbGluZSBhbmQgZGVzY3JpcHRvciBz
ZXQgbGF5b3V0cy4gVGhpcyBlbnN1cmVzIHRoZXkgZG9uJ3QgZ2V0Ci0gICAgLy8gZGVsZXRlZCB3
aGlsZSB0aGlzIHByb2dyYW0gaXMgaW4gdXNlLgotICAgIHZrOjpCaW5kaW5nUG9pbnRlcjx2azo6
UGlwZWxpbmVMYXlvdXQ+IG1QaXBlbGluZUxheW91dDsKLSAgICB2azo6RGVzY3JpcHRvclNldExh
eW91dFBvaW50ZXJBcnJheSBtRGVzY3JpcHRvclNldExheW91dHM7Ci0KLSAgICAvLyBLZWVwIGJp
bmRpbmdzIHRvIHRoZSBkZXNjcmlwdG9yIHBvb2xzLiBUaGlzIGVuc3VyZXMgdGhlIHBvb2xzIHN0
YXkgdmFsaWQgd2hpbGUgdGhlIFByb2dyYW0KLSAgICAvLyBpcyBpbiB1c2UuCi0gICAgdms6OkRl
c2NyaXB0b3JTZXRMYXlvdXRBcnJheTx2azo6UmVmQ291bnRlZERlc2NyaXB0b3JQb29sQmluZGlu
Zz4gbURlc2NyaXB0b3JQb29sQmluZGluZ3M7Ci0KLSAgICBjbGFzcyBTaGFkZXJJbmZvIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCi0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBTaGFk
ZXJJbmZvKCk7Ci0gICAgICAgIH5TaGFkZXJJbmZvKCk7Ci0KLSAgICAgICAgYW5nbGU6OlJlc3Vs
dCBpbml0U2hhZGVycyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiAmc2hhZGVyU291
cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJJbnRl
cmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPFNwaXJ2QmxvYj4gKnNwaXJ2QmxvYnNPdXQp
OwotICAgICAgICB2b2lkIHJlbGVhc2UoQ29udGV4dFZrICpjb250ZXh0VmspOwotCi0gICAgICAg
IEFOR0xFX0lOTElORSBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4gbUlzSW5pdGlhbGl6ZWQ7
IH0KLQotICAgICAgICBnbDo6U2hhZGVyTWFwPFNwaXJ2QmxvYj4gJmdldFNwaXJ2QmxvYnMoKSB7
IHJldHVybiBtU3BpcnZCbG9iczsgfQotICAgICAgICBjb25zdCBnbDo6U2hhZGVyTWFwPFNwaXJ2
QmxvYj4gJmdldFNwaXJ2QmxvYnMoKSBjb25zdCB7IHJldHVybiBtU3BpcnZCbG9iczsgfQotCi0g
ICAgICBwcml2YXRlOgotICAgICAgICBnbDo6U2hhZGVyTWFwPFNwaXJ2QmxvYj4gbVNwaXJ2Qmxv
YnM7Ci0gICAgICAgIGJvb2wgbUlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB9OwotCi0gICAg
Y2xhc3MgUHJvZ3JhbUluZm8gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKLSAgICB7Ci0gICAg
ICBwdWJsaWM6Ci0gICAgICAgIFByb2dyYW1JbmZvKCk7Ci0gICAgICAgIH5Qcm9ncmFtSW5mbygp
OwotCi0gICAgICAgIGFuZ2xlOjpSZXN1bHQgaW5pdFByb2dyYW0oQ29udGV4dFZrICpjb250ZXh0
VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVySW5mbyAm
c2hhZGVySW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJs
ZUxpbmVSYXN0ZXJFbXVsYXRpb24pOwotICAgICAgICB2b2lkIHJlbGVhc2UoQ29udGV4dFZrICpj
b250ZXh0VmspOwotCi0gICAgICAgIEFOR0xFX0lOTElORSBib29sIHZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbVByb2dyYW1IZWxwZXIudmFsaWQoKTsgfQotCi0gICAgICAgIHZrOjpTaGFkZXJQcm9n
cmFtSGVscGVyICpnZXRTaGFkZXJQcm9ncmFtKCkgeyByZXR1cm4gJm1Qcm9ncmFtSGVscGVyOyB9
Ci0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIHZrOjpTaGFkZXJQcm9ncmFtSGVscGVyIG1Qcm9n
cmFtSGVscGVyOwotICAgICAgICBnbDo6U2hhZGVyTWFwPHZrOjpSZWZDb3VudGVkPHZrOjpTaGFk
ZXJBbmRTZXJpYWw+PiBtU2hhZGVyczsKLSAgICB9OwotCi0gICAgUHJvZ3JhbUluZm8gbURlZmF1
bHRQcm9ncmFtSW5mbzsKLSAgICBQcm9ncmFtSW5mbyBtTGluZVJhc3RlclByb2dyYW1JbmZvOwot
Ci0gICAgLy8gV2Uga2VlcCB0aGUgdHJhbnNsYXRlZCBsaW5rZWQgc2hhZGVyIHNvdXJjZXMgYW5k
IHRoZSBleHBlY3RlZCBsb2NhdGlvbi9zZXQvYmluZGluZyBtYXBwaW5nIHRvCi0gICAgLy8gdXNl
IHdpdGggc2hhZGVyIGRyYXcgY2FsbCBjb21waWxhdGlvbi4KLSAgICAvLyBUT0RPKHN5b3Vzc2Vm
aSk6IFJlbW92ZSB3aGVuIHNoYWRlciBjb21waWxhdGlvbiBpcyBkb25lIGF0IGxpbmsgdGltZS4K
LSAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzMzOTQKLSAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6
c3RyaW5nPiBtU2hhZGVyU291cmNlczsKLSAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9N
YXAgbVZhcmlhYmxlSW5mb01hcDsKICAgICAvLyBXZSBrZWVwIHRoZSBTUElSLVYgY29kZSB0byB1
c2UgZm9yIGRyYXcgY2FsbCBwaXBlbGluZSBjcmVhdGlvbi4KICAgICBTaGFkZXJJbmZvIG1TaGFk
ZXJJbmZvOwogCi0gICAgLy8gSW4gdGhlaXIgZGVzY3JpcHRvciBzZXQsIHVuaWZvcm0gYnVmZmVy
cyBhcmUgcGxhY2VkIGZpcnN0LCB0aGVuIHN0b3JhZ2UgYnVmZmVycywgdGhlbiBhdG9taWMKLSAg
ICAvLyBjb3VudGVyIGJ1ZmZlcnMgYW5kIHRoZW4gaW1hZ2VzLiAgVGhlc2UgY2FjaGVkIHZhbHVl
cyBjb250YWluIHRoZSBvZmZzZXRzIHdoZXJlIHN0b3JhZ2UKLSAgICAvLyBidWZmZXIsIGF0b21p
YyBjb3VudGVyIGJ1ZmZlciBhbmQgaW1hZ2UgYmluZGluZ3Mgc3RhcnQuCi0gICAgdWludDMyX3Qg
bVN0b3JhZ2VCbG9ja0JpbmRpbmdzT2Zmc2V0OwotICAgIHVpbnQzMl90IG1BdG9taWNDb3VudGVy
QnVmZmVyQmluZGluZ3NPZmZzZXQ7Ci0gICAgdWludDMyX3QgbUltYWdlQmluZGluZ3NPZmZzZXQ7
Ci0KLSAgICAvLyBTdG9yZSBkZXNjcmlwdG9yIHBvb2xzIGhlcmUuIFdlIHN0b3JlIHRoZSBkZXNj
cmlwdG9ycyBpbiB0aGUgUHJvZ3JhbSB0byBmYWNpbGl0YXRlIGRlc2NyaXB0b3IKLSAgICAvLyBj
YWNoZSBtYW5hZ2VtZW50LiBJdCBjYW4gYWxzbyBhbGxvdyBmZXdlciBkZXNjcmlwdG9ycyBmb3Ig
c2hhZGVycyB3aGljaCB1c2UgZmV3ZXIKLSAgICAvLyB0ZXh0dXJlcy9idWZmZXJzLgotICAgIHZr
OjpEZXNjcmlwdG9yU2V0TGF5b3V0QXJyYXk8dms6OkR5bmFtaWNEZXNjcmlwdG9yUG9vbD4gbUR5
bmFtaWNEZXNjcmlwdG9yUG9vbHM7CisgICAgR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvIG1H
bHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm87CisKKyAgICBQcm9ncmFtRXhlY3V0YWJsZVZrIG1F
eGVjdXRhYmxlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9R
dWVyeVZrLmNwcAppbmRleCBjNTM3YzZlZmViZGYyNjcyNDMwNWQzMjRhZTk0NThlYzNjZmRiM2Rm
Li5jMmU0N2E4NTI3MGUyNGE1ZmE1NDVhOGQwYjUwNWU2OThmMzE2NTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5
VmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vUXVlcnlWay5jcHAKQEAgLTQ5LDExICs0OSwxMSBAQCBhbmdsZTo6UmVzdWx0IFF1
ZXJ5Vms6OmJlZ2luKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAgIGlmIChnZXRUeXBl
KCkgPT0gZ2w6OlF1ZXJ5VHlwZTo6VHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVzV3JpdHRlbikK
ICAgICB7CiAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZXNEcmF3biA9IDA7Ci0g
ICAgICAgIGNvbnRleHRWay0+Z2V0Q29tbWFuZEdyYXBoKCktPmJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2tFbXVsYXRlZFF1ZXJ5KCk7CisgICAgICAgIC8vIFdlIGNvdWxkIGNvbnNpZGVyIHVzaW5nIFZL
X1FVRVJZX1RZUEVfVFJBTlNGT1JNX0ZFRURCQUNLX1NUUkVBTV9FWFQuCiAgICAgICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAgICB9CiAKLSAgICBpZiAoIW1RdWVyeUhlbHBl
ci5nZXRRdWVyeVBvb2woKSkKKyAgICBpZiAoIW1RdWVyeUhlbHBlci52YWxpZCgpKQogICAgIHsK
ICAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Z2V0UXVlcnlQb29sKGdldFR5cGUoKSktPmFs
bG9jYXRlUXVlcnkoY29udGV4dFZrLCAmbVF1ZXJ5SGVscGVyKSk7CiAgICAgfQpAQCAtNjEsMTcg
KzYxLDE3IEBAIGFuZ2xlOjpSZXN1bHQgUXVlcnlWazo6YmVnaW4oY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQpCiAgICAgLy8gTm90ZTogVGltZUVsYXBzZWQgaXMgaW1wbGVtZW50ZWQgYnkgdXNp
bmcgdHdvIFRpbWVzdGFtcCBxdWVyaWVzIGFuZCB0YWtpbmcgdGhlIGRpZmYuCiAgICAgaWYgKGdl
dFR5cGUoKSA9PSBnbDo6UXVlcnlUeXBlOjpUaW1lRWxhcHNlZCkKICAgICB7Ci0gICAgICAgIGlm
ICghbVF1ZXJ5SGVscGVyVGltZUVsYXBzZWRCZWdpbi5nZXRRdWVyeVBvb2woKSkKKyAgICAgICAg
aWYgKCFtUXVlcnlIZWxwZXJUaW1lRWxhcHNlZEJlZ2luLnZhbGlkKCkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmdldFF1ZXJ5UG9vbChnZXRUeXBlKCkpLT5h
bGxvY2F0ZVF1ZXJ5KAogICAgICAgICAgICAgICAgIGNvbnRleHRWaywgJm1RdWVyeUhlbHBlclRp
bWVFbGFwc2VkQmVnaW4pKTsKICAgICAgICAgfQogCi0gICAgICAgIG1RdWVyeUhlbHBlclRpbWVF
bGFwc2VkQmVnaW4ud3JpdGVUaW1lc3RhbXAoY29udGV4dFZrKTsKKyAgICAgICAgQU5HTEVfVFJZ
KG1RdWVyeUhlbHBlclRpbWVFbGFwc2VkQmVnaW4uZmx1c2hBbmRXcml0ZVRpbWVzdGFtcChjb250
ZXh0VmspKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbVF1ZXJ5SGVscGVyLmJl
Z2luUXVlcnkoY29udGV4dFZrKTsKKyAgICAgICAgQU5HTEVfVFJZKG1RdWVyeUhlbHBlci5iZWdp
blF1ZXJ5KGNvbnRleHRWaykpOwogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKQEAgLTk0LDE1ICs5NCwxNSBAQCBhbmdsZTo6UmVzdWx0IFF1ZXJ5Vms6OmVuZChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICAgICAgICAgIG1DYWNoZWRSZXN1bHQgKz0g
dHJhbnNmb3JtRmVlZGJhY2stPmdldFByaW1pdGl2ZXNEcmF3bigpOwogICAgICAgICB9CiAgICAg
ICAgIG1DYWNoZWRSZXN1bHRWYWxpZCA9IHRydWU7Ci0gICAgICAgIGNvbnRleHRWay0+Z2V0Q29t
bWFuZEdyYXBoKCktPmVuZFRyYW5zZm9ybUZlZWRiYWNrRW11bGF0ZWRRdWVyeSgpOworICAgICAg
ICAvLyBXZSBjb3VsZCBjb25zaWRlciB1c2luZyBWS19RVUVSWV9UWVBFX1RSQU5TRk9STV9GRUVE
QkFDS19TVFJFQU1fRVhULgogICAgIH0KICAgICBlbHNlIGlmIChnZXRUeXBlKCkgPT0gZ2w6OlF1
ZXJ5VHlwZTo6VGltZUVsYXBzZWQpCiAgICAgewotICAgICAgICBtUXVlcnlIZWxwZXIud3JpdGVU
aW1lc3RhbXAoY29udGV4dFZrKTsKKyAgICAgICAgQU5HTEVfVFJZKG1RdWVyeUhlbHBlci5mbHVz
aEFuZFdyaXRlVGltZXN0YW1wKGNvbnRleHRWaykpOwogICAgIH0KICAgICBlbHNlCiAgICAgewot
ICAgICAgICBtUXVlcnlIZWxwZXIuZW5kUXVlcnkoY29udGV4dFZrKTsKKyAgICAgICAgQU5HTEVf
VFJZKG1RdWVyeUhlbHBlci5lbmRRdWVyeShjb250ZXh0VmspKTsKICAgICB9CiAKICAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CkBAIC0xMTQsMTYgKzExNCwxNCBAQCBhbmdsZTo6
UmVzdWx0IFF1ZXJ5Vms6OnF1ZXJ5Q291bnRlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkK
IAogICAgIG1DYWNoZWRSZXN1bHRWYWxpZCA9IGZhbHNlOwogCi0gICAgaWYgKCFtUXVlcnlIZWxw
ZXIuZ2V0UXVlcnlQb29sKCkpCisgICAgaWYgKCFtUXVlcnlIZWxwZXIudmFsaWQoKSkKICAgICB7
CiAgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmdldFF1ZXJ5UG9vbChnZXRUeXBlKCkpLT5h
bGxvY2F0ZVF1ZXJ5KGNvbnRleHRWaywgJm1RdWVyeUhlbHBlcikpOwogICAgIH0KIAogICAgIEFT
U0VSVChnZXRUeXBlKCkgPT0gZ2w6OlF1ZXJ5VHlwZTo6VGltZXN0YW1wKTsKIAotICAgIG1RdWVy
eUhlbHBlci53cml0ZVRpbWVzdGFtcChjb250ZXh0VmspOwotCi0gICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOworICAgIHJldHVybiBtUXVlcnlIZWxwZXIuZmx1c2hBbmRXcml0ZVRp
bWVzdGFtcChjb250ZXh0VmspOwogfQogCiBhbmdsZTo6UmVzdWx0IFF1ZXJ5Vms6OmdldFJlc3Vs
dChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCB3YWl0KQpAQCAtMTYxLDE5ICsxNTks
MjAgQEAgYW5nbGU6OlJlc3VsdCBRdWVyeVZrOjpnZXRSZXN1bHQoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsIGJvb2wgd2FpdCkKICAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZmluaXNo
VG9TZXJpYWwobVF1ZXJ5SGVscGVyLmdldFN0b3JlZFF1ZXVlU2VyaWFsKCkpKTsKICAgICB9CiAK
LSAgICBWa1F1ZXJ5UmVzdWx0RmxhZ3MgZmxhZ3MgPSAod2FpdCA/IFZLX1FVRVJZX1JFU1VMVF9X
QUlUX0JJVCA6IDApIHwgVktfUVVFUllfUkVTVUxUXzY0X0JJVDsKLQotICAgIFZrUmVzdWx0IHJl
c3VsdCA9IG1RdWVyeUhlbHBlci5nZXRRdWVyeVBvb2woKS0+Z2V0UmVzdWx0cygKLSAgICAgICAg
Y29udGV4dFZrLT5nZXREZXZpY2UoKSwgbVF1ZXJ5SGVscGVyLmdldFF1ZXJ5KCksIDEsIHNpemVv
ZihtQ2FjaGVkUmVzdWx0KSwgJm1DYWNoZWRSZXN1bHQsCi0gICAgICAgIHNpemVvZihtQ2FjaGVk
UmVzdWx0KSwgZmxhZ3MpOwotICAgIC8vIElmIHRoZSByZXN1bHRzIGFyZSBub3QgcmVhZHksIGRv
IG5vdGhpbmcuICBtQ2FjaGVkUmVzdWx0VmFsaWQgcmVtYWlucyBmYWxzZS4KLSAgICBpZiAocmVz
dWx0ID09IFZLX05PVF9SRUFEWSkKKyAgICBpZiAod2FpdCkKICAgICB7Ci0gICAgICAgIC8vIElm
IFZLX1FVRVJZX1JFU1VMVF9XQUlUX0JJVCB3YXMgZ2l2ZW4sIFZLX05PVF9SRUFEWSBjYW5ub3Qg
aGF2ZSBiZWVuIHJldHVybmVkLgotICAgICAgICBBU1NFUlQoIXdhaXQpOwotICAgICAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAgICAgIEFOR0xFX1RSWShtUXVlcnlIZWxw
ZXIuZ2V0VWludDY0UmVzdWx0KGNvbnRleHRWaywgJm1DYWNoZWRSZXN1bHQpKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgYm9vbCBhdmFpbGFibGUgPSBmYWxzZTsKKyAgICAgICAg
QU5HTEVfVFJZKG1RdWVyeUhlbHBlci5nZXRVaW50NjRSZXN1bHROb25CbG9ja2luZyhjb250ZXh0
VmssICZtQ2FjaGVkUmVzdWx0LCAmYXZhaWxhYmxlKSk7CisgICAgICAgIGlmICghYXZhaWxhYmxl
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBJZiB0aGUgcmVzdWx0cyBhcmUgbm90IHJlYWR5
LCBkbyBub3RoaW5nLiAgbUNhY2hlZFJlc3VsdFZhbGlkIHJlbWFpbnMgZmFsc2UuCisgICAgICAg
ICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAgICAgIH0KICAgICB9Ci0g
ICAgQU5HTEVfVktfVFJZKGNvbnRleHRWaywgcmVzdWx0KTsKIAogICAgIGRvdWJsZSB0aW1lc3Rh
bXBQZXJpb2QgPSByZW5kZXJlci0+Z2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzKCkubGltaXRz
LnRpbWVzdGFtcFBlcmlvZDsKIApAQCAtMTkyLDEzICsxOTEsOSBAQCBhbmdsZTo6UmVzdWx0IFF1
ZXJ5Vms6OmdldFJlc3VsdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCB3YWl0KQog
ICAgICAgICB7CiAgICAgICAgICAgICB1aW50NjRfdCB0aW1lRWxhcHNlZEVuZCA9IG1DYWNoZWRS
ZXN1bHQ7CiAKLSAgICAgICAgICAgIHJlc3VsdCA9IG1RdWVyeUhlbHBlclRpbWVFbGFwc2VkQmVn
aW4uZ2V0UXVlcnlQb29sKCktPmdldFJlc3VsdHMoCi0gICAgICAgICAgICAgICAgY29udGV4dFZr
LT5nZXREZXZpY2UoKSwgbVF1ZXJ5SGVscGVyVGltZUVsYXBzZWRCZWdpbi5nZXRRdWVyeSgpLCAx
LAotICAgICAgICAgICAgICAgIHNpemVvZihtQ2FjaGVkUmVzdWx0KSwgJm1DYWNoZWRSZXN1bHQs
IHNpemVvZihtQ2FjaGVkUmVzdWx0KSwgZmxhZ3MpOwogICAgICAgICAgICAgLy8gU2luY2UgdGhl
IHJlc3VsdCBvZiB0aGUgZW5kIHF1ZXJ5IG9mIHRpbWUtZWxhcHNlZCBpcyBhbHJlYWR5IGF2YWls
YWJsZSwgdGhlCiAgICAgICAgICAgICAvLyByZXN1bHQgb2YgYmVnaW4gcXVlcnkgbXVzdCBiZSBh
dmFpbGFibGUgdG9vLgotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBWS19OT1RfUkVBRFkp
OwotICAgICAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHRWaywgcmVzdWx0KTsKKyAgICAgICAg
ICAgIEFOR0xFX1RSWShtUXVlcnlIZWxwZXJUaW1lRWxhcHNlZEJlZ2luLmdldFVpbnQ2NFJlc3Vs
dChjb250ZXh0VmssICZtQ2FjaGVkUmVzdWx0KSk7CiAKICAgICAgICAgICAgIG1DYWNoZWRSZXN1
bHQgPSB0aW1lRWxhcHNlZEVuZCAtIG1DYWNoZWRSZXN1bHQ7CiAgICAgICAgICAgICBtQ2FjaGVk
UmVzdWx0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1DYWNoZWRSZXN1bHQgKiB0aW1lc3RhbXBQ
ZXJpb2QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JFQURNRS5tZAppbmRleCBkZTMzYmE5NzEyNDRiOWMx
YTdjZTkyY2JmMzI5MDVmYTJmZjA4ZjMxLi4wOTc5NzYzNmY0ZDE5MGZkYjFhMjE3YjcxMGVmYjc1
NzQ4ZGU0ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1JFQURNRS5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JFQURNRS5tZApAQCAtMjIsNyArMjIsNTUg
QEAgYW5kIFtpbnRlcm5hbCBWdWxrYW4gc2hhZGVyc10oc2hhZGVycykuIFRoZSBbQ29udGV4dFZr
XShDb250ZXh0VmsuY3BwKSBjbGFzcyBpbXAKIG9mIGEgZnJvbnQtZW5kIE9wZW5HTCBDb250ZXh0
LiBDb250ZXh0VmsgcHJvY2Vzc2VzIHN0YXRlIGNoYW5nZXMgYW5kIGhhbmRsZXMgYWN0aW9uIGNv
bW1hbmRzIGxpa2UKIGBnbERyYXdBcnJheXNgIGFuZCBgZ2xEcmF3RWxlbWVudHNgLgogCi1JbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgYGRvY2AgZGlyZWN0b3J5Lgor
IyMgQ29tbWFuZCByZWNvcmRpbmcKKworVGhlIGJhY2stZW5kIHJlY29yZHMgY29tbWFuZHMgaW50
byBjb21tYW5kIGJ1ZmZlcnMgdmlhIHRoZSB0aGUgZm9sbG93aW5nIGBDb250ZXh0VmtgIEFQSXM6
CisKKyAqIGBlbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcmA6IHJldHVybnMgYSBzZWNv
bmRhcnkgY29tbWFuZCBidWZmZXIgKm91dHNpZGUqIGEgUmVuZGVyUGFzcyBpbnN0YW5jZS4KKyAq
IGBmbHVzaEFuZEJlZ2luUmVuZGVyUGFzc2A6IHJldHVybnMgYSBzZWNvbmRhcnkgY29tbWFuZCBi
dWZmZXIgKmluc2lkZSogYSBSZW5kZXJQYXNzIGluc3RhbmNlLgorICogYGZsdXNoQW5kR2V0UHJp
bWFyeUNvbW1hbmRCdWZmZXJgOiByZXR1cm5zIHRoZSBwcmltYXJ5IGNvbW1hbmQgYnVmZmVyLiBZ
b3Ugc2hvdWxkIHJhcmVseSBuZWVkIHRoaXMgQVBJLgorCisqTm90ZSo6IEFsbCBvZiB0aGVzZSBj
b21tYW5kcyBtYXkgd3JpdGUgb3V0IChha2EgZmx1c2gpIHByaW9yIHBlbmRpbmcgY29tbWFuZHMg
aW50byBhIHByaW1hcnkKK2NvbW1hbmQgYnVmZmVyLiBXaGVuIGEgUmVuZGVyUGFzcyBpcyBvcGVu
IGBlbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcmAgd2lsbCBmbHVzaCB0aGUKK3BlbmRp
bmcgUmVuZGVyUGFzcyBjb21tYW5kcy4gYGZsdXNoQW5kQmVnaW5SZW5kZXJQYXNzYCB3aWxsIGZs
dXNoIG91dCBwZW5kaW5nIGNvbW1hbmRzIG91dHNpZGUgYQorUmVuZGVyUGFzcyB0byBhIHByaW1h
cnkgYnVmZmVyLiBPbiBzdWJtaXQgQU5HTEUgc3VibWl0cyB0aGUgcHJpbWFyeSBjb21tYW5kIGJ1
ZmZlciB0byBhIGBWa1F1ZXVlYC4KKworSWYgeW91IG5lZWQgdG8gcmVjb3JkIGluc2lkZSBhIFJl
bmRlclBhc3MsIHVzZSBgZmx1c2hBbmRCZWdpblJlbmRlclBhc3NgLiBPdGhlcndpc2UsIHVzZQor
YGVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyYC4gWW91IHNob3VsZCByYXJlbHkgbmVl
ZCB0byBjYWxsIGBmbHVzaEFuZEdldFByaW1hcnlDb21tYW5kQnVmZmVyYC4KK0l0J3MgdGhlcmUg
Zm9yIGNvbW1hbmRzIGxpa2UgZGVidWcgbGFiZWxzLCBiYXJyaWVycyBhbmQgcXVlcmllcyB0aGF0
IG5lZWQgdG8gYmUgcmVjb3JkZWQgc2VyaWFsbHkgb24KK3RoZSBwcmltYXJ5IGNvbW1hbmQgYnVm
ZmVyLgorCitUaGUgYmFjay1lbmQgdXN1YWxseSByZWNvcmRzIEltYWdlIGFuZCBCdWZmZXIgYmFy
cmllcnMgdGhyb3VnaCBhZGRpdGlvbmFsIGBDb250ZXh0VmtgIEFQSXM6CisKKyAqIGBvbkJ1ZmZl
clJlYWRgIGFuZCBgb25CdWZmZXJXcml0ZWAgYWNjdW11bGF0ZSBgVmtCdWZmZXJgIGJhcnJpZXJz
LgorICogYG9uSW1hZ2VSZWFkYCBhbmQgYG9uSW1hZ2VXcml0ZWAgYWNjdW11bGF0ZSBgVmtJbWFn
ZWAgYmFycmllcnMuCisgKiBgb25SZW5kZXJQYXNzSW1hZ2VXcml0ZWAgaXMgYSBzcGVjaWFsIEFQ
SSBmb3Igd3JpdGUgYmFycmllcnMgaW5zaWRlIGEgUmVuZGVyUGFzcyBpbnN0YW5jZS4KKworQWZ0
ZXIgdGhlIGJhY2stZW5kIHJlY29yZHMgY29tbWFuZHMgdG8gdGhlIHByaW1hcnkgYnVmZmVyIHdl
IGZsdXNoIChlLmcuIG9uIHN3YXApIG9yIHdoZW4gd2UgY2FsbAorYENvbnRleHRWazo6ZmluaXNo
VG9TZXJpYWxgLgorCitTZWUgdGhlIFtjb2RlXVtDb21tYW5kQVBJc10gZm9yIG1vcmUgZGV0YWls
cy4KKworIyMjIFNpbXBsZSBjb21tYW5kIHJlY29yZGluZyBleGFtcGxlCisKK0luIHRoaXMgZXhh
bXBsZSB3ZSdsbCBiZSByZWNvcmRpbmcgYSBidWZmZXIgY29weSBjb21tYW5kOgorCitgYGAKKyAg
ICAjIEVuc3VyZSB0aGF0IEFOR0xFIHNldHMgcHJvcGVyIHJlYWQgYW5kIHdyaXRlIGJhcnJpZXJz
IGZvciB0aGUgQnVmZmVycy4KKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRl
KFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQsIGRlc3RCdWZmZXIpKTsKKyAgICBBTkdMRV9U
UlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklULCBz
cmNCdWZmZXIpKTsKKworICAgICMgR2V0IGEgcG9pbnRlciB0byBhIHNlY29uZGFyeSBjb21tYW5k
IGJ1ZmZlciBmb3IgY29tbWFuZCByZWNvcmRpbmcuIE1heSAiZmx1c2giIHRoZSBSUC4KKyAgICB2
azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZr
LT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOworCisg
ICAgIyBSZWNvcmQgdGhlIGNvcHkgY29tbWFuZCBpbnRvIHRoZSBzZWNvbmRhcnkgYnVmZmVyLiBX
ZSdyZSBkb25lIQorICAgIGNvbW1hbmRCdWZmZXItPmNvcHlCdWZmZXIoc3JjQnVmZmVyLT5nZXRC
dWZmZXIoKSwgZGVzdEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGNvcHlDb3VudCwgY29waWVzKTsKK2Bg
YAorCisjIyBBZGRpdGlvbmFsIFJlYWRpbmcKKworTW9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgYGRvY2AgZGlyZWN0b3J5OgogCiAtIFtGYXN0IE9wZW5HTCBT
dGF0ZSBUcmFuc2l0aW9uc10oZG9jL0Zhc3RPcGVuR0xTdGF0ZVRyYW5zaXRpb25zLm1kKQogLSBb
U2hhZGVyIE1vZHVsZSBDb21waWxhdGlvbl0oZG9jL1NoYWRlck1vZHVsZUNvbXBpbGF0aW9uLm1k
KQpAQCAtMzEsMyArNzksNSBAQCBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGNhbiBiZSBmb3VuZCBp
biB0aGUgYGRvY2AgZGlyZWN0b3J5LgogCiBbVmtEZXZpY2VdOiBodHRwczovL3d3dy5raHJvbm9z
Lm9yZy9yZWdpc3RyeS92dWxrYW4vc3BlY3MvMS4xLWV4dGVuc2lvbnMvbWFuL2h0bWwvVmtEZXZp
Y2UuaHRtbAogW1ZrUXVldWVdOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxr
YW4vc3BlY3MvMS4xLWV4dGVuc2lvbnMvbWFuL2h0bWwvVmtRdWV1ZS5odG1sCitbQ29tbWFuZEFQ
SXNdOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUvKy9hYTA5
Y2E2OWU0MTczY2IxNDI2MWUzOWJlM2I3YmRmNTZiYmQzODQwL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29udGV4dFZrLmgjNTc5CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5k
ZXJUYXJnZXRWay5jcHAKaW5kZXggNzc1MWUyZmE2OTUxNTgwOThlNDcyNWM1YjgxZDk2MjYxNWJl
ZDVlZC4uZGE2YWRlYzdlY2VjMTJhY2E3OGI3YTcwZTI3OWQzNWRmYTVhYTFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9S
ZW5kZXJUYXJnZXRWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJnZXRWay5jcHAKQEAgLTksOCArOSw4IEBACiAK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCIKIAot
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jlc291cmNlVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL3ZrX2Zvcm1hdF91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi92a19oZWxwZXJzLmgiCkBAIC01NCw0NSArNTQsNDAgQEAgdm9pZCBSZW5kZXJUYXJnZXRW
azo6cmVzZXQoKQogICAgIG1MYXllckluZGV4ID0gMDsKIH0KIAotYW5nbGU6OlJlc3VsdCBSZW5k
ZXJUYXJnZXRWazo6b25Db2xvckRyYXcoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKmZy
YW1lYnVmZmVyVmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKK3ZrOjpBdHRhY2htZW50U2VyaWFsIFJl
bmRlclRhcmdldFZrOjpnZXRBc3NpZ25TZXJpYWwoQ29udGV4dFZrICpjb250ZXh0VmspCiB7Ci0g
ICAgQVNTRVJUKGNvbW1hbmRCdWZmZXItPnZhbGlkKCkpOwotICAgIEFTU0VSVCghbUltYWdlLT5n
ZXRGb3JtYXQoKS5hY3R1YWxJbWFnZUZvcm1hdCgpLmhhc0RlcHRoT3JTdGVuY2lsQml0cygpKTsK
LQotICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBhdXRvbWF0aWMgbGF5b3V0IHRyYW5zaXRpb24u
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjM2MQotICAgIG1JbWFnZS0+Y2hhbmdlTGF5b3V0KFZLX0lN
QUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6Q29sb3JBdHRhY2htZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOworICAgIEFTU0VSVChtSW1h
Z2UgJiYgbUltYWdlLT52YWxpZCgpKTsKKyAgICB2azo6QXR0YWNobWVudFNlcmlhbCBhdHRhY2ht
ZW50U2VyaWFsOworICAgIEFTU0VSVChtTGF5ZXJJbmRleCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDE2X3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKG1MZXZlbEluZGV4IDwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MTZfdD46Om1heCgpKTsKKyAgICBTZXJpYWwgaW1hZ2VTZXJpYWwgPSBtSW1h
Z2UtPmdldEFzc2lnblNlcmlhbChjb250ZXh0VmspOworICAgIEFTU0VSVChpbWFnZVNlcmlhbC5n
ZXRWYWx1ZSgpIDwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKyAgICBT
ZXRCaXRGaWVsZChhdHRhY2htZW50U2VyaWFsLmxheWVyLCBtTGF5ZXJJbmRleCk7CisgICAgU2V0
Qml0RmllbGQoYXR0YWNobWVudFNlcmlhbC5sZXZlbCwgbUxldmVsSW5kZXgpOworICAgIFNldEJp
dEZpZWxkKGF0dGFjaG1lbnRTZXJpYWwuaW1hZ2VTZXJpYWwsIGltYWdlU2VyaWFsLmdldFZhbHVl
KCkpOworICAgIHJldHVybiBhdHRhY2htZW50U2VyaWFsOworfQogCi0gICAgaWYgKGNvbnRleHRW
ay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgLy8gU2V0IHVwIGRlcGVu
ZGVuY2llcyBiZXR3ZWVuIHRoZSBSVCByZXNvdXJjZSBhbmQgdGhlIEZyYW1lYnVmZmVyLgotICAg
ICAgICBtSW1hZ2UtPmFkZFdyaXRlRGVwZW5kZW5jeShjb250ZXh0VmssIGZyYW1lYnVmZmVyVmsp
OwotICAgIH0KK2FuZ2xlOjpSZXN1bHQgUmVuZGVyVGFyZ2V0Vms6Om9uQ29sb3JEcmF3KENvbnRl
eHRWayAqY29udGV4dFZrKQoreworICAgIEFTU0VSVCghbUltYWdlLT5nZXRGb3JtYXQoKS5hY3R1
YWxJbWFnZUZvcm1hdCgpLmhhc0RlcHRoT3JTdGVuY2lsQml0cygpKTsKIAotICAgIG9uSW1hZ2VW
aWV3QWNjZXNzKGNvbnRleHRWayk7CisgICAgY29udGV4dFZrLT5vblJlbmRlclBhc3NJbWFnZVdy
aXRlKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6Q29sb3JBdHRh
Y2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSW1hZ2UpOwor
ICAgIHJldGFpbkltYWdlVmlld3MoY29udGV4dFZrKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpDb250aW51ZTsKIH0KIAotYW5nbGU6OlJlc3VsdCBSZW5kZXJUYXJnZXRWazo6b25EZXB0
aFN0ZW5jaWxEcmF3KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVi
dWZmZXJWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKK2FuZ2xlOjpSZXN1bHQgUmVuZGVy
VGFyZ2V0Vms6Om9uRGVwdGhTdGVuY2lsRHJhdyhDb250ZXh0VmsgKmNvbnRleHRWaykKIHsKLSAg
ICBBU1NFUlQoY29tbWFuZEJ1ZmZlci0+dmFsaWQoKSk7CiAgICAgQVNTRVJUKG1JbWFnZS0+Z2V0
Rm9ybWF0KCkuYWN0dWFsSW1hZ2VGb3JtYXQoKS5oYXNEZXB0aE9yU3RlbmNpbEJpdHMoKSk7CiAK
LSAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgYXV0b21hdGljIGxheW91dCB0cmFuc2l0aW9uLiBo
dHRwOi8vYW5nbGVidWcuY29tLzIzNjEKICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZmb3JtYXQg
ICAgPSBtSW1hZ2UtPmdldEZvcm1hdCgpLmFjdHVhbEltYWdlRm9ybWF0KCk7CiAgICAgVmtJbWFn
ZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzID0gdms6OkdldERlcHRoU3RlbmNpbEFzcGVjdEZsYWdz
KGZvcm1hdCk7CiAKLSAgICBtSW1hZ2UtPmNoYW5nZUxheW91dChhc3BlY3RGbGFncywgdms6Oklt
YWdlTGF5b3V0OjpEZXB0aFN0ZW5jaWxBdHRhY2htZW50LCBjb21tYW5kQnVmZmVyKTsKLQotICAg
IC8vIFNldCB1cCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUgUlQgcmVzb3VyY2UgYW5kIHRoZSBG
cmFtZWJ1ZmZlci4KLSAgICBtSW1hZ2UtPmFkZFdyaXRlRGVwZW5kZW5jeShjb250ZXh0VmssIGZy
YW1lYnVmZmVyVmspOwotCi0gICAgb25JbWFnZVZpZXdBY2Nlc3MoY29udGV4dFZrKTsKKyAgICBj
b250ZXh0VmstPm9uUmVuZGVyUGFzc0ltYWdlV3JpdGUoYXNwZWN0RmxhZ3MsIHZrOjpJbWFnZUxh
eW91dDo6RGVwdGhTdGVuY2lsQXR0YWNobWVudCwgbUltYWdlKTsKKyAgICByZXRhaW5JbWFnZVZp
ZXdzKGNvbnRleHRWayk7CiAKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9
CkBAIC0xMzYsNDAgKzEzMSwxMCBAQCB2b2lkIFJlbmRlclRhcmdldFZrOjp1cGRhdGVTd2FwY2hh
aW5JbWFnZSh2azo6SW1hZ2VIZWxwZXIgKmltYWdlLCB2azo6SW1hZ2VWaWV3SAogICAgIG1JbWFn
ZVZpZXdzID0gaW1hZ2VWaWV3czsKIH0KIAotdms6OkltYWdlSGVscGVyICpSZW5kZXJUYXJnZXRW
azo6Z2V0SW1hZ2VGb3JSZWFkKENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJj
ZSAqcmVhZGluZ1Jlc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91dCBsYXlvdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRC
dWZmZXIpCi17Ci0gICAgQVNTRVJUKG1JbWFnZSAmJiBtSW1hZ2UtPnZhbGlkKCkpOwotCi0gICAg
Ly8gVE9ETyhqbWFkaWxsKTogQmV0dGVyIHNpbXVsdGFuZW91cyByZXNvdXJjZSBhY2Nlc3MuIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMjY3OQotICAgIC8vCi0gICAgLy8gQSBiZXR0ZXIgYWx0ZXJuYXRp
dmUgd291bGQgYmU6Ci0gICAgLy8KLSAgICAvLyBpZiAobUltYWdlLT5pc0xheW91dENoYW5nZU5l
Y2Vzc2FyeShsYXlvdXQpCi0gICAgLy8gewotICAgIC8vICAgICB2azo6Q29tbWFuZEJ1ZmZlciAq
c3JjTGF5b3V0Q2hhbmdlOwotICAgIC8vICAgICBBTkdMRV9UUlkobUltYWdlLT5yZWNvcmRDb21t
YW5kcyhjb250ZXh0VmssICZzcmNMYXlvdXRDaGFuZ2UpKTsKLSAgICAvLyAgICAgbUltYWdlLT5j
aGFuZ2VMYXlvdXQobUltYWdlLT5nZXRBc3BlY3RGbGFncygpLCBsYXlvdXQsIHNyY0xheW91dENo
YW5nZSk7Ci0gICAgLy8gfQotICAgIC8vIG1JbWFnZS0+YWRkUmVhZERlcGVuZGVuY3kocmVhZGlu
Z1Jlc291cmNlKTsKLSAgICAvLwotICAgIC8vIEkuZS4gdGhlIHRyYW5zaXRpb24gc2hvdWxkIGhh
cHBlbiBvbiBhIG5vZGUgZ2VuZXJhdGVkIGZyb20gbUltYWdlIGl0c2VsZi4KLSAgICAvLyBIb3dl
dmVyLCB0aGlzIG5lZWRzIGNvbnRleHQgdG8gYmUgYXZhaWxhYmxlIGhlcmUsIG9yIGFsbCBjYWxs
IHNpdGVzIGNoYW5nZWQKLSAgICAvLyB0byBwZXJmb3JtIHRoZSBsYXlvdXQgdHJhbnNpdGlvbiBh
bmQgc2V0IHRoZSBkZXBlbmRlbmN5LgotICAgIG1JbWFnZS0+YWRkV3JpdGVEZXBlbmRlbmN5KGNv
bnRleHRWaywgcmVhZGluZ1Jlc291cmNlKTsKLSAgICBtSW1hZ2UtPmNoYW5nZUxheW91dChtSW1h
Z2UtPmdldEFzcGVjdEZsYWdzKCksIGxheW91dCwgY29tbWFuZEJ1ZmZlcik7Ci0gICAgb25JbWFn
ZVZpZXdBY2Nlc3MoY29udGV4dFZrKTsKLSAgICByZXR1cm4gbUltYWdlOwotfQotCi12azo6SW1h
Z2VIZWxwZXIgKlJlbmRlclRhcmdldFZrOjpnZXRJbWFnZUZvcldyaXRlKENvbnRleHRWayAqY29u
dGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKndyaXRpbmdSZXNvdXJjZSkgY29uc3QKK3ZrOjpJ
bWFnZUhlbHBlciAqUmVuZGVyVGFyZ2V0Vms6OmdldEltYWdlRm9yV3JpdGUoQ29udGV4dFZrICpj
b250ZXh0VmspIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1JbWFnZSAmJiBtSW1hZ2UtPnZhbGlkKCkp
OwotICAgIG1JbWFnZS0+YWRkV3JpdGVEZXBlbmRlbmN5KGNvbnRleHRWaywgd3JpdGluZ1Jlc291
cmNlKTsKLSAgICBvbkltYWdlVmlld0FjY2Vzcyhjb250ZXh0VmspOworICAgIHJldGFpbkltYWdl
Vmlld3MoY29udGV4dFZrKTsKICAgICByZXR1cm4gbUltYWdlOwogfQogCkBAIC0xODAsMTMgKzE0
NSwxMyBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlclRhcmdldFZrOjpmbHVzaFN0YWdlZFVwZGF0ZXMo
Q29udGV4dFZrICpjb250ZXh0VmspCiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOwotICAgIEFOR0xF
X1RSWShtSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsK
KyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZl
cigmY29tbWFuZEJ1ZmZlcikpOwogICAgIHJldHVybiBtSW1hZ2UtPmZsdXNoU3RhZ2VkVXBkYXRl
cyhjb250ZXh0VmssIG1MZXZlbEluZGV4LCBtTGV2ZWxJbmRleCArIDEsIG1MYXllckluZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGF5ZXJJbmRleCArIDEsIGNv
bW1hbmRCdWZmZXIpOwogfQogCi12b2lkIFJlbmRlclRhcmdldFZrOjpvbkltYWdlVmlld0FjY2Vz
cyhDb250ZXh0VmsgKmNvbnRleHRWaykgY29uc3QKK3ZvaWQgUmVuZGVyVGFyZ2V0Vms6OnJldGFp
bkltYWdlVmlld3MoQ29udGV4dFZrICpjb250ZXh0VmspIGNvbnN0CiB7Ci0gICAgbUltYWdlVmll
d3MtPm9uUmVzb3VyY2VBY2Nlc3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwor
ICAgIG1JbWFnZVZpZXdzLT5yZXRhaW4oJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkp
OwogfQogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRh
cmdldFZrLmgKaW5kZXggYjFlZTY3MTNlOTA1Y2U3MzY3MDQ4OTNkODFmMDMxNjM2YTgyYTIxNy4u
MTNiNzIyYThlMjU4YTFjOTEyODZkNmUzNDYxZGVkYmJjOWY1YmQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJU
YXJnZXRWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaApAQCAtMjQsNyArMjQsNyBAQCBzdHJ1Y3QgRm9y
bWF0OwogY2xhc3MgRnJhbWVidWZmZXJIZWxwZXI7CiBjbGFzcyBJbWFnZUhlbHBlcjsKIGNsYXNz
IEltYWdlVmlldzsKLWNsYXNzIENvbW1hbmRHcmFwaFJlc291cmNlOworY2xhc3MgUmVzb3VyY2U7
CiBjbGFzcyBSZW5kZXJQYXNzRGVzYzsKIH0gIC8vIG5hbWVzcGFjZSB2awogCkBAIC00OCwyNSAr
NDgsMTggQEAgY2xhc3MgUmVuZGVyVGFyZ2V0VmsgZmluYWwgOiBwdWJsaWMgRnJhbWVidWZmZXJB
dHRhY2htZW50UmVuZGVyVGFyZ2V0CiAgICAgICAgICAgICAgIHVpbnQzMl90IGxldmVsSW5kZXgs
CiAgICAgICAgICAgICAgIHVpbnQzMl90IGxheWVySW5kZXgpOwogICAgIHZvaWQgcmVzZXQoKTsK
KyAgICAvLyBUaGlzIHJldHVybnMgdGhlIHNlcmlhbCBmcm9tIHVuZGVybHlpbmcgSW1hZ2VIZWxw
ZXIsIGZpcnN0IGFzc2lnbmluZyBvbmUgaWYgcmVxdWlyZWQKKyAgICB2azo6QXR0YWNobWVudFNl
cmlhbCBnZXRBc3NpZ25TZXJpYWwoQ29udGV4dFZrICpjb250ZXh0VmspOwogCiAgICAgLy8gTm90
ZTogUmVuZGVyVGFyZ2V0cyBzaG91bGQgYmUgY2FsbGVkIGluIG9yZGVyLCB3aXRoIHRoZSBkZXB0
aC9zdGVuY2lsIG9uUmVuZGVyIGxhc3QuCi0gICAgYW5nbGU6OlJlc3VsdCBvbkNvbG9yRHJhdyhD
b250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpG
cmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXJWaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKTsKLSAgICBhbmdsZTo6UmVz
dWx0IG9uRGVwdGhTdGVuY2lsRHJhdyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKmZyYW1lYnVm
ZmVyVmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRC
dWZmZXIgKmNvbW1hbmRCdWZmZXIpOworICAgIGFuZ2xlOjpSZXN1bHQgb25Db2xvckRyYXcoQ29u
dGV4dFZrICpjb250ZXh0VmspOworICAgIGFuZ2xlOjpSZXN1bHQgb25EZXB0aFN0ZW5jaWxEcmF3
KENvbnRleHRWayAqY29udGV4dFZrKTsKIAogICAgIHZrOjpJbWFnZUhlbHBlciAmZ2V0SW1hZ2Uo
KTsKICAgICBjb25zdCB2azo6SW1hZ2VIZWxwZXIgJmdldEltYWdlKCkgY29uc3Q7CiAKICAgICAv
LyBnZXRJbWFnZUZvclJlYWQgd2lsbCBhbHNvIHRyYW5zaXRpb24gdGhlIHJlc291cmNlIHRvIHRo
ZSBnaXZlbiBsYXlvdXQuCi0gICAgdms6OkltYWdlSGVscGVyICpnZXRJbWFnZUZvclJlYWQoQ29u
dGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dms6OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWFkaW5nUmVzb3VyY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0IGxheW91dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1
ZmZlcik7Ci0gICAgdms6OkltYWdlSGVscGVyICpnZXRJbWFnZUZvcldyaXRlKENvbnRleHRWayAq
Y29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29t
bWFuZEdyYXBoUmVzb3VyY2UgKndyaXRpbmdSZXNvdXJjZSkgY29uc3Q7CisgICAgdms6OkltYWdl
SGVscGVyICpnZXRJbWFnZUZvcldyaXRlKENvbnRleHRWayAqY29udGV4dFZrKSBjb25zdDsKIAog
ICAgIC8vIEZvciBjdWJlIG1hcHMgd2UgdXNlIHNpbmdsZS1sZXZlbCBzaW5nbGUtbGF5ZXIgMkQg
YXJyYXkgdmlld3MuCiAgICAgYW5nbGU6OlJlc3VsdCBnZXRJbWFnZVZpZXcoQ29udGV4dFZrICpj
b250ZXh0VmssIGNvbnN0IHZrOjpJbWFnZVZpZXcgKippbWFnZVZpZXdPdXQpIGNvbnN0OwpAQCAt
ODIsNyArNzUsNyBAQCBjbGFzcyBSZW5kZXJUYXJnZXRWayBmaW5hbCA6IHB1YmxpYyBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQKIAogICAgIGFuZ2xlOjpSZXN1bHQgZmx1c2hTdGFn
ZWRVcGRhdGVzKENvbnRleHRWayAqY29udGV4dFZrKTsKIAotICAgIHZvaWQgb25JbWFnZVZpZXdB
Y2Nlc3MoQ29udGV4dFZrICpjb250ZXh0VmspIGNvbnN0OworICAgIHZvaWQgcmV0YWluSW1hZ2VW
aWV3cyhDb250ZXh0VmsgKmNvbnRleHRWaykgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICB2azo6
SW1hZ2VIZWxwZXIgKm1JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyYnVmZmVyVmsuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZm
ZXJWay5jcHAKaW5kZXggN2YzNzkxNTA1MDdkYzNlYWQ4OTdhZDgzZmQxMDI1ZWVlYWNjNmFiZi4u
N2NhYjI3MmI5NTkwODY1MTUzM2NkYjUwMzBjNDdlY2E3M2Y2YTZhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJi
dWZmZXJWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBhbmds
ZTo6UmVzdWx0IFJlbmRlcmJ1ZmZlclZrOjpzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleAogICAgIGlmIChtSW1hZ2UtPmlzUXVldWVDaGFuZ2VOZWNjZXNh
cnkocmVuZGVyZXJRdWV1ZUZhbWlseUluZGV4KSkKICAgICB7CiAgICAgICAgIHZrOjpDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgQU5HTEVfVFJZKG1JbWFn
ZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOworICAgICAgICBB
TkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29t
bWFuZEJ1ZmZlcikpOwogICAgICAgICBtSW1hZ2UtPmNoYW5nZUxheW91dEFuZFF1ZXVlKGFzcGVj
dCwgdms6OkltYWdlTGF5b3V0OjpDb2xvckF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyZXJRdWV1ZUZhbWlseUluZGV4LCBjb21tYW5kQnVmZmVy
KTsKICAgICB9CkBAIC0xNjAsNyArMTYwLDcgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJidWZmZXJW
azo6aW5pdGlhbGl6ZUNvbnRlbnRzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbWFnZUluZGV4KQogewogICAgIC8vIE5vdGU6IHN0YWdlU3VicmVzb3VyY2VSb2J1
c3RDbGVhciBvbmx5IHVzZXMgdGhlIGludGVuZGVkIGZvcm1hdCB0byBjb3VudCBjaGFubmVscy4K
LSAgICBtSW1hZ2UtPnN0YWdlU3VicmVzb3VyY2VSb2J1c3RDbGVhcihpbWFnZUluZGV4LCBtSW1h
Z2UtPmdldEZvcm1hdCgpLmludGVuZGVkRm9ybWF0KCkpOworICAgIG1JbWFnZS0+c3RhZ2VTdWJy
ZXNvdXJjZVJvYnVzdENsZWFyKGltYWdlSW5kZXgsIG1JbWFnZS0+Z2V0Rm9ybWF0KCkpOwogICAg
IHJldHVybiBtSW1hZ2UtPmZsdXNoQWxsU3RhZ2VkVXBkYXRlcyh2azo6R2V0SW1wbChjb250ZXh0
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuY3BwCmluZGV4IGFkNzll
Mzg3MzgwN2FhZTlkYmE0MzdjZDdhZDhhYmNkNGRiYTI5YWQuLjhkZDRiOTNkOWY3NmIwYzNhMDM1
ZjBiOTYxMDgyMGVjYTA1NTA4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZr
LmNwcApAQCAtMjIsMTIgKzIyLDEyIEBACiAjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdfd3JhcHBlcl91dGlscy5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9Db250ZXh0VmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
RGlzcGxheVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVm
ZmVyVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jlc291cmNlVmsuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYXBzX3V0aWxzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF91dGlscy5oIgpAQCAtNDAsNyArNDAsNiBA
QCBuYW1lc3BhY2UKIGNvbnN0IHVpbnQzMl90IGtNb2NrVmVuZG9ySUQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDB4YmE1ZWJhMTE7CiBjb25zdCB1aW50MzJfdCBrTW9ja0RldmljZUlE
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweGYwMDViYTExOwogY29uc3RleHByIGNo
YXIga01vY2tEZXZpY2VOYW1lW10gICAgICAgICAgICAgICAgICAgICAgICAgID0gIlZ1bGthbiBN
b2NrIERldmljZSI7Ci1jb25zdCB1aW50MzJfdCBrU3dpZnRTaGFkZXJEZXZpY2VJRCAgICAgICAg
ICAgICAgICAgICAgICAgPSAweEMwREU7CiBjb25zdGV4cHIgY2hhciBrU3dpZnRTaGFkZXJEZXZp
Y2VOYW1lW10gICAgICAgICAgICAgICAgICAgPSAiU3dpZnRTaGFkZXIgRGV2aWNlIjsKIGNvbnN0
ZXhwciBWa0Zvcm1hdEZlYXR1cmVGbGFncyBrSW52YWxpZEZvcm1hdEZlYXR1cmVGbGFncyA9IHN0
YXRpY19jYXN0PFZrRm9ybWF0RmVhdHVyZUZsYWdzPigtMSk7CiB9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCkBAIC0xMjYsNiArMTI1LDEwIEBAIGNvbnN0ZXhwciBjb25zdCBjaGFyICprU2tpcHBl
ZE1lc3NhZ2VzW10gPSB7CiAgICAgIlZVSUQtVmtEZXZpY2VDcmVhdGVJbmZvLXBOZXh0LXBOZXh0
IiwKICAgICAiVlVJRC1Wa1BpcGVsaW5lUmFzdGVyaXphdGlvblN0YXRlQ3JlYXRlSW5mby1wTmV4
dC1wTmV4dCIsCiAgICAgIlZVSURfVW5kZWZpbmVkIiwKKyAgICAvLyBodHRwOi8vYW5nbGVidWcu
Y29tLzMwNzgKKyAgICAiVU5BU1NJR05FRC1Db3JlVmFsaWRhdGlvbi1TaGFkZXItSW50ZXJmYWNl
VHlwZU1pc21hdGNoIiwKKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQ1MTAKKyAgICAiVlVJ
RC12a1F1ZXVlUHJlc2VudEtIUi1wV2FpdFNlbWFwaG9yZXMtMDMyNjgiLAogfTsKIAogLy8gU3Vw
cHJlc3MgdmFsaWRhdGlvbiBlcnJvcnMgdGhhdCBhcmUga25vd24KQEAgLTIxNiw5ICsyMTksNyBA
QCBjb25zdCBjaGFyICpHZXRWa09iamVjdFR5cGVOYW1lKFZrT2JqZWN0VHlwZSB0eXBlKQogICAg
ICAgICAgICAgcmV0dXJuICJEaXNwbGF5IE1vZGUiOwogICAgICAgICBjYXNlIFZLX09CSkVDVF9U
WVBFX0RFQlVHX1JFUE9SVF9DQUxMQkFDS19FWFQ6CiAgICAgICAgICAgICByZXR1cm4gIkRlYnVn
IFJlcG9ydCBDYWxsYmFjayI7Ci0gICAgICAgIGNhc2UgVktfT0JKRUNUX1RZUEVfT0JKRUNUX1RB
QkxFX05WWDoKLSAgICAgICAgICAgIHJldHVybiAiT2JqZWN0IFRhYmxlIjsKLSAgICAgICAgY2Fz
ZSBWS19PQkpFQ1RfVFlQRV9JTkRJUkVDVF9DT01NQU5EU19MQVlPVVRfTlZYOgorICAgICAgICBj
YXNlIFZLX09CSkVDVF9UWVBFX0lORElSRUNUX0NPTU1BTkRTX0xBWU9VVF9OVjoKICAgICAgICAg
ICAgIHJldHVybiAiSW5kaXJlY3QgQ29tbWFuZHMgTGF5b3V0IjsKICAgICAgICAgY2FzZSBWS19P
QkpFQ1RfVFlQRV9ERUJVR19VVElMU19NRVNTRU5HRVJfRVhUOgogICAgICAgICAgICAgcmV0dXJu
ICJEZWJ1ZyBVdGlscyBNZXNzZW5nZXIiOwpAQCAtMjMxLDYgKzIzMiwyMSBAQCBjb25zdCBjaGFy
ICpHZXRWa09iamVjdFR5cGVOYW1lKFZrT2JqZWN0VHlwZSB0eXBlKQogICAgIH0KIH0KIAorLy8g
VGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgb24gQW5kcm9pZC9GdXNjaGlhL0dHUAorI2lmICFkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpICYmICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0ZV
Q0hTSUEpICYmIFwKKyAgICAhZGVmaW5lZChBTkdMRV9QTEFURk9STV9HR1ApCitjb25zdCBzdGQ6
OnN0cmluZyBXcmFwSUNERW52aXJvbm1lbnQoY29uc3QgY2hhciAqaWNkRW52aXJvbm1lbnQpCit7
CisjICAgIGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCisgICAgLy8gT24gTWFjT1Mg
dGhlIGxpYnJhcmllcyBhcmUgYnVuZGxlZCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBkaXJlY3RvcnkK
KyAgICBzdGQ6OnN0cmluZyByZXQgPSBhbmdsZTo6R2V0SGVscGVyRXhlY3V0YWJsZURpcigpICsg
aWNkRW52aXJvbm1lbnQ7CisgICAgcmV0dXJuIHJldDsKKyMgICAgZW5kaWYgIC8vIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fQVBQTEUpCisgICAgcmV0dXJuIGljZEVudmlyb25tZW50OworfQorI2Vu
ZGlmICAvLyAhZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKSAmJiAhZGVmaW5lZChBTkdM
RV9QTEFURk9STV9GVUNIU0lBKSAmJgorICAgICAgICAvLyAhZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9HR1ApCisKIFZLQVBJX0FUVFIgVmtCb29sMzIgVktBUElfQ0FMTAogRGVidWdVdGlsc01lc3Nl
bmdlcihWa0RlYnVnVXRpbHNNZXNzYWdlU2V2ZXJpdHlGbGFnQml0c0VYVCBtZXNzYWdlU2V2ZXJp
dHksCiAgICAgICAgICAgICAgICAgICAgIFZrRGVidWdVdGlsc01lc3NhZ2VUeXBlRmxhZ3NFWFQg
bWVzc2FnZVR5cGVzLApAQCAtMzcwLDcgKzM4Niw3IEBAIGNsYXNzIFNjb3BlZFZrTG9hZGVyRW52
aXJvbm1lbnQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAhZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9HR1ApCiAgICAgICAgIGlmIChpY2QgPT0gdms6OklDRDo6TW9jaykKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFzZXRJQ0RFbnZpcm9ubWVudChBTkdMRV9WS19NT0NLX0lDRF9KU09OKSkK
KyAgICAgICAgICAgIGlmICghc2V0SUNERW52aXJvbm1lbnQoV3JhcElDREVudmlyb25tZW50KEFO
R0xFX1ZLX01PQ0tfSUNEX0pTT04pLmNfc3RyKCkpKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIEVSUigpIDw8ICJFcnJvciBzZXR0aW5nIGVudmlyb25tZW50IGZvciBNb2NrL051bGwg
RHJpdmVyLiI7CiAgICAgICAgICAgICB9CkBAIC0zNzgsNyArMzk0LDcgQEAgY2xhc3MgU2NvcGVk
VmtMb2FkZXJFbnZpcm9ubWVudCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogIyAgICBpZiBkZWZpbmVk
KEFOR0xFX1ZLX1NXSUZUU0hBREVSX0lDRF9KU09OKQogICAgICAgICBlbHNlIGlmIChpY2QgPT0g
dms6OklDRDo6U3dpZnRTaGFkZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc2V0SUNE
RW52aXJvbm1lbnQoQU5HTEVfVktfU1dJRlRTSEFERVJfSUNEX0pTT04pKQorICAgICAgICAgICAg
aWYgKCFzZXRJQ0RFbnZpcm9ubWVudChXcmFwSUNERW52aXJvbm1lbnQoQU5HTEVfVktfU1dJRlRT
SEFERVJfSUNEX0pTT04pLmNfc3RyKCkpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IEVSUigpIDw8ICJFcnJvciBzZXR0aW5nIGVudmlyb25tZW50IGZvciBTd2lmdFNoYWRlci4iOwog
ICAgICAgICAgICAgfQpAQCAtNDgyLDggKzQ5OCw3IEBAIElDREZpbHRlckZ1bmMgR2V0RmlsdGVy
Rm9ySUNEKHZrOjpJQ0QgcHJlZmVycmVkSUNEKQogICAgICAgICAgICAgfTsKICAgICAgICAgY2Fz
ZSB2azo6SUNEOjpTd2lmdFNoYWRlcjoKICAgICAgICAgICAgIHJldHVybiBbXShjb25zdCBWa1Bo
eXNpY2FsRGV2aWNlUHJvcGVydGllcyAmZGV2aWNlUHJvcGVydGllcykgewotICAgICAgICAgICAg
ICAgIHJldHVybiAoKGRldmljZVByb3BlcnRpZXMudmVuZG9ySUQgPT0gVkVORE9SX0lEX0dPT0dM
RSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIChkZXZpY2VQcm9wZXJ0aWVzLmRldmljZUlE
ID09IGtTd2lmdFNoYWRlckRldmljZUlEKSAmJgorICAgICAgICAgICAgICAgIHJldHVybiAoSXNT
d2lmdHNoYWRlcihkZXZpY2VQcm9wZXJ0aWVzLnZlbmRvcklELCBkZXZpY2VQcm9wZXJ0aWVzLmRl
dmljZUlEKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHN0cm5jbXAoZGV2aWNlUHJvcGVy
dGllcy5kZXZpY2VOYW1lLCBrU3dpZnRTaGFkZXJEZXZpY2VOYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RybGVuKGtTd2lmdFNoYWRlckRldmljZU5hbWUpKSA9PSAwKSk7
CiAgICAgICAgICAgICB9OwpAQCAtNTQzLDkgKzU1OCw5IEBAIGdsOjpWZXJzaW9uIExpbWl0VmVy
c2lvblRvKGNvbnN0IGdsOjpWZXJzaW9uICZjdXJyZW50LCBjb25zdCBnbDo6VmVyc2lvbiAmbG93
ZXIpCiBSZW5kZXJlclZrOjpSZW5kZXJlclZrKCkKICAgICA6IG1EaXNwbGF5KG51bGxwdHIpLAog
ICAgICAgbUNhcHNJbml0aWFsaXplZChmYWxzZSksCi0gICAgICBtRmVhdHVyZXNJbml0aWFsaXpl
ZChmYWxzZSksCiAgICAgICBtSW5zdGFuY2UoVktfTlVMTF9IQU5ETEUpLAogICAgICAgbUVuYWJs
ZVZhbGlkYXRpb25MYXllcnMoZmFsc2UpLAorICAgICAgbUVuYWJsZURlYnVnVXRpbHMoZmFsc2Up
LAogICAgICAgbUVuYWJsZWRJQ0Qodms6OklDRDo6RGVmYXVsdCksCiAgICAgICBtRGVidWdVdGls
c01lc3NlbmdlcihWS19OVUxMX0hBTkRMRSksCiAgICAgICBtRGVidWdSZXBvcnRDYWxsYmFjayhW
S19OVUxMX0hBTkRMRSksCkBAIC01NTMsMTMgKzU2OCwxNSBAQCBSZW5kZXJlclZrOjpSZW5kZXJl
clZrKCkKICAgICAgIG1DdXJyZW50UXVldWVGYW1pbHlJbmRleChzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWF4KCkpLAogICAgICAgbU1heFZlcnRleEF0dHJpYkRpdmlzb3IoMSksCiAg
ICAgICBtTWF4VmVydGV4QXR0cmliU3RyaWRlKDApLAorICAgICAgbU1pbkltcG9ydGVkSG9zdFBv
aW50ZXJBbGlnbm1lbnQoMSksCiAgICAgICBtRGV2aWNlKFZLX05VTExfSEFORExFKSwKICAgICAg
IG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwobVF1ZXVlU2VyaWFsRmFjdG9yeS5nZW5lcmF0ZSgp
KSwKICAgICAgIG1DdXJyZW50UXVldWVTZXJpYWwobVF1ZXVlU2VyaWFsRmFjdG9yeS5nZW5lcmF0
ZSgpKSwKICAgICAgIG1EZXZpY2VMb3N0KGZhbHNlKSwKICAgICAgIG1QaXBlbGluZUNhY2hlVmtV
cGRhdGVUaW1lb3V0KGtQaXBlbGluZUNhY2hlVmtVcGRhdGVQZXJpb2QpLAogICAgICAgbVBpcGVs
aW5lQ2FjaGVEaXJ0eShmYWxzZSksCi0gICAgICBtUGlwZWxpbmVDYWNoZUluaXRpYWxpemVkKGZh
bHNlKQorICAgICAgbVBpcGVsaW5lQ2FjaGVJbml0aWFsaXplZChmYWxzZSksCisgICAgICBtR2xz
bGFuZ0luaXRpYWxpemVkKGZhbHNlKQogewogICAgIFZrRm9ybWF0UHJvcGVydGllcyBpbnZhbGlk
ID0gezAsIDAsIGtJbnZhbGlkRm9ybWF0RmVhdHVyZUZsYWdzfTsKICAgICBtRm9ybWF0UHJvcGVy
dGllcy5maWxsKGludmFsaWQpOwpAQCAtNTc3LDkgKzU5NCwyNyBAQCBSZW5kZXJlclZrOjp+UmVu
ZGVyZXJWaygpCiAKIHZvaWQgUmVuZGVyZXJWazo6b25EZXN0cm95KHZrOjpDb250ZXh0ICpjb250
ZXh0KQogeworICAgIC8vIEZvcmNlIGFsbCBjb21tYW5kcyB0byBmaW5pc2ggYnkgZmx1c2hpbmcg
YWxsIHF1ZXVlcy4KKyAgICBmb3IgKFZrUXVldWUgcXVldWUgOiBtUXVldWVzKQorICAgIHsKKyAg
ICAgICAgaWYgKHF1ZXVlICE9IFZLX05VTExfSEFORExFKQorICAgICAgICB7CisgICAgICAgICAg
ICB2a1F1ZXVlV2FpdElkbGUocXVldWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhl
biBhc3NpZ24gYW4gaW5maW5pdGUgImxhc3QgY29tcGxldGVkIiBzZXJpYWwgdG8gZm9yY2UgZ2Fy
YmFnZSB0byBkZWxldGUuCisgICAgbUxhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCA9IFNlcmlhbDo6
SW5maW5pdGUoKTsKICAgICAodm9pZCljbGVhbnVwR2FyYmFnZShjb250ZXh0LCB0cnVlKTsKICAg
ICBBU1NFUlQobVNoYXJlZEdhcmJhZ2UuZW1wdHkoKSk7CiAKKyAgICBmb3IgKFBlbmRpbmdPbmVP
ZmZDb21tYW5kcyAmcGVuZGluZyA6IG1QZW5kaW5nT25lT2ZmQ29tbWFuZHMpCisgICAgeworICAg
ICAgICBwZW5kaW5nLmNvbW1hbmRCdWZmZXIucmVsZWFzZUhhbmRsZSgpOworICAgIH0KKworICAg
IG1PbmVPZmZDb21tYW5kUG9vbC5kZXN0cm95KG1EZXZpY2UpOworCiAgICAgbUZlbmNlUmVjeWNs
ZXIuZGVzdHJveShtRGV2aWNlKTsKIAogICAgIG1QaXBlbGluZUxheW91dENhY2hlLmRlc3Ryb3ko
bURldmljZSk7CkBAIC01ODcsNyArNjIyLDExIEBAIHZvaWQgUmVuZGVyZXJWazo6b25EZXN0cm95
KHZrOjpDb250ZXh0ICpjb250ZXh0KQogCiAgICAgbVBpcGVsaW5lQ2FjaGUuZGVzdHJveShtRGV2
aWNlKTsKIAotICAgIEdsc2xhbmdSZWxlYXNlKCk7CisgICAgaWYgKG1HbHNsYW5nSW5pdGlhbGl6
ZWQpCisgICAgeworICAgICAgICBHbHNsYW5nUmVsZWFzZSgpOworICAgICAgICBtR2xzbGFuZ0lu
aXRpYWxpemVkID0gZmFsc2U7CisgICAgfQogCiAgICAgaWYgKG1EZXZpY2UpCiAgICAgewpAQCAt
NzA5LDE1ICs3NDgsMTQgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJlclZrOjppbml0aWFsaXplKERp
c3BsYXlWayAqZGlzcGxheVZrLAogICAgIEV4dGVuc2lvbk5hbWVMaXN0IGVuYWJsZWRJbnN0YW5j
ZUV4dGVuc2lvbnM7CiAgICAgZW5hYmxlZEluc3RhbmNlRXh0ZW5zaW9ucy5wdXNoX2JhY2soVktf
S0hSX1NVUkZBQ0VfRVhURU5TSU9OX05BTUUpOwogICAgIGVuYWJsZWRJbnN0YW5jZUV4dGVuc2lv
bnMucHVzaF9iYWNrKHdzaUV4dGVuc2lvbik7Ci0gICAgYm9vbCBlbmFibGVEZWJ1Z1V0aWxzID0K
LSAgICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMgJiYKLSAgICAgICAgRXh0ZW5zaW9uRm91
bmQoVktfRVhUX0RFQlVHX1VUSUxTX0VYVEVOU0lPTl9OQU1FLCBpbnN0YW5jZUV4dGVuc2lvbk5h
bWVzKTsKKyAgICBtRW5hYmxlRGVidWdVdGlscyA9IG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzICYm
CisgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb25Gb3VuZChWS19FWFRfREVCVUdfVVRJ
TFNfRVhURU5TSU9OX05BTUUsIGluc3RhbmNlRXh0ZW5zaW9uTmFtZXMpOwogCiAgICAgYm9vbCBl
bmFibGVEZWJ1Z1JlcG9ydCA9Ci0gICAgICAgIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzICYmICFl
bmFibGVEZWJ1Z1V0aWxzICYmCisgICAgICAgIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzICYmICFt
RW5hYmxlRGVidWdVdGlscyAmJgogICAgICAgICBFeHRlbnNpb25Gb3VuZChWS19FWFRfREVCVUdf
UkVQT1JUX0VYVEVOU0lPTl9OQU1FLCBpbnN0YW5jZUV4dGVuc2lvbk5hbWVzKTsKIAotICAgIGlm
IChlbmFibGVEZWJ1Z1V0aWxzKQorICAgIGlmIChtRW5hYmxlRGVidWdVdGlscykKICAgICB7CiAg
ICAgICAgIGVuYWJsZWRJbnN0YW5jZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0VYVF9ERUJVR19V
VElMU19FWFRFTlNJT05fTkFNRSk7CiAgICAgfQpAQCAtNzI5LDcgKzc2Nyw3IEBAIGFuZ2xlOjpS
ZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZShEaXNwbGF5VmsgKmRpc3BsYXlWaywKICAgICBp
ZiAoRXh0ZW5zaW9uRm91bmQoVktfRVhUX1NXQVBDSEFJTl9DT0xPUl9TUEFDRV9FWFRFTlNJT05f
TkFNRSwgaW5zdGFuY2VFeHRlbnNpb25OYW1lcykpCiAgICAgewogICAgICAgICBlbmFibGVkSW5z
dGFuY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19FWFRfU1dBUENIQUlOX0NPTE9SX1NQQUNFX0VY
VEVOU0lPTl9OQU1FKTsKLSAgICAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVy
ZXMpLCBzdXBwb3J0c1N3YXBjaGFpbkNvbG9yc3BhY2UsIHRydWUpOworICAgICAgICBBTkdMRV9G
RUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBzdXBwb3J0c1N3YXBjaGFpbkNvbG9yc3BhY2Us
IHRydWUpOwogICAgIH0KIAogICAgIC8vIFZlcmlmeSB0aGUgcmVxdWlyZWQgZXh0ZW5zaW9ucyBh
cmUgaW4gdGhlIGV4dGVuc2lvbiBuYW1lcyBzZXQuIEZhaWwgaWYgbm90LgpAQCAtNzg3LDcgKzgy
NSw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZShEaXNwbGF5VmsgKmRp
c3BsYXlWaywKICAgICBBTkdMRV9WS19UUlkoZGlzcGxheVZrLCB2a0NyZWF0ZUluc3RhbmNlKCZp
bnN0YW5jZUluZm8sIG51bGxwdHIsICZtSW5zdGFuY2UpKTsKICAgICB2b2xrTG9hZEluc3RhbmNl
KG1JbnN0YW5jZSk7CiAKLSAgICBpZiAoZW5hYmxlRGVidWdVdGlscykKKyAgICBpZiAobUVuYWJs
ZURlYnVnVXRpbHMpCiAgICAgewogICAgICAgICAvLyBVc2UgdGhlIG5ld2VyIEVYVF9kZWJ1Z191
dGlscyBpZiBpdCBleGlzdHMuCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgbWVzc2VuZ2VyIGNhbGxi
YWNrLgpAQCAtODg5LDcgKzkyNywxMSBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlcmVyVms6OmluaXRp
YWxpemUoRGlzcGxheVZrICpkaXNwbGF5VmssCiAgICAgLy8gU3RvcmUgdGhlIHBoeXNpY2FsIGRl
dmljZSBtZW1vcnkgcHJvcGVydGllcyBzbyB3ZSBjYW4gZmluZCB0aGUgcmlnaHQgbWVtb3J5IHBv
b2xzLgogICAgIG1NZW1vcnlQcm9wZXJ0aWVzLmluaXQobVBoeXNpY2FsRGV2aWNlKTsKIAotICAg
IEdsc2xhbmdJbml0aWFsaXplKCk7CisgICAgaWYgKCFtR2xzbGFuZ0luaXRpYWxpemVkKQorICAg
IHsKKyAgICAgICAgR2xzbGFuZ0luaXRpYWxpemUoKTsKKyAgICAgICAgbUdsc2xhbmdJbml0aWFs
aXplZCA9IHRydWU7CisgICAgfQogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZm9ybWF0IHRhYmxl
LgogICAgIG1Gb3JtYXRUYWJsZS5pbml0aWFsaXplKHRoaXMsICZtTmF0aXZlVGV4dHVyZUNhcHMs
ICZtTmF0aXZlQ2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMpOwpAQCAtOTIwLDkgKzk2Miwx
NiBAQCB2b2lkIFJlbmRlcmVyVms6OnF1ZXJ5RGV2aWNlRXh0ZW5zaW9uRmVhdHVyZXMoY29uc3Qg
RXh0ZW5zaW9uTmFtZUxpc3QgJmRldmljZUV4dAogICAgIG1UcmFuc2Zvcm1GZWVkYmFja0ZlYXR1
cmVzLnNUeXBlID0KICAgICAgICAgVktfU1RSVUNUVVJFX1RZUEVfUEhZU0lDQUxfREVWSUNFX1RS
QU5TRk9STV9GRUVEQkFDS19GRUFUVVJFU19FWFQ7CiAKKyAgICBtSW5kZXhUeXBlVWludDhGZWF0
dXJlcyAgICAgICA9IHt9OworICAgIG1JbmRleFR5cGVVaW50OEZlYXR1cmVzLnNUeXBlID0gVktf
U1RSVUNUVVJFX1RZUEVfUEhZU0lDQUxfREVWSUNFX0lOREVYX1RZUEVfVUlOVDhfRkVBVFVSRVNf
RVhUOworCiAgICAgbVBoeXNpY2FsRGV2aWNlU3ViZ3JvdXBQcm9wZXJ0aWVzICAgICAgID0ge307
CiAgICAgbVBoeXNpY2FsRGV2aWNlU3ViZ3JvdXBQcm9wZXJ0aWVzLnNUeXBlID0gVktfU1RSVUNU
VVJFX1RZUEVfUEhZU0lDQUxfREVWSUNFX1NVQkdST1VQX1BST1BFUlRJRVM7CiAKKyAgICBtUGh5
c2ljYWxEZXZpY2VFeHRlcm5hbE1lbW9yeUhvc3RQcm9wZXJ0aWVzID0ge307CisgICAgbVBoeXNp
Y2FsRGV2aWNlRXh0ZXJuYWxNZW1vcnlIb3N0UHJvcGVydGllcy5zVHlwZSA9CisgICAgICAgIFZL
X1NUUlVDVFVSRV9UWVBFX1BIWVNJQ0FMX0RFVklDRV9FWFRFUk5BTF9NRU1PUllfSE9TVF9QUk9Q
RVJUSUVTX0VYVDsKKwogICAgIGlmICghdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMyS0hS
IHx8ICF2a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMyS0hSKQogICAgIHsKICAgICAgICAgcmV0
dXJuOwpAQCAtOTYwLDYgKzEwMDksMTggQEAgdm9pZCBSZW5kZXJlclZrOjpxdWVyeURldmljZUV4
dGVuc2lvbkZlYXR1cmVzKGNvbnN0IEV4dGVuc2lvbk5hbWVMaXN0ICZkZXZpY2VFeHQKICAgICAg
ICAgdms6OkFkZFRvUE5leHRDaGFpbigmZGV2aWNlRmVhdHVyZXMsICZtVHJhbnNmb3JtRmVlZGJh
Y2tGZWF0dXJlcyk7CiAgICAgfQogCisgICAgLy8gUXVlcnkgdWludDggaW5kZXggdHlwZSBmZWF0
dXJlcworICAgIGlmIChFeHRlbnNpb25Gb3VuZChWS19FWFRfSU5ERVhfVFlQRV9VSU5UOF9FWFRF
TlNJT05fTkFNRSwgZGV2aWNlRXh0ZW5zaW9uTmFtZXMpKQorICAgIHsKKyAgICAgICAgdms6OkFk
ZFRvUE5leHRDaGFpbigmZGV2aWNlRmVhdHVyZXMsICZtSW5kZXhUeXBlVWludDhGZWF0dXJlcyk7
CisgICAgfQorCisgICAgLy8gUXVlcnkgZXh0ZXJuYWwgbWVtb3J5IGhvc3QgcHJvcGVydGllcwor
ICAgIGlmIChFeHRlbnNpb25Gb3VuZChWS19FWFRfRVhURVJOQUxfTUVNT1JZX0hPU1RfRVhURU5T
SU9OX05BTUUsIGRldmljZUV4dGVuc2lvbk5hbWVzKSkKKyAgICB7CisgICAgICAgIHZrOjpBZGRU
b1BOZXh0Q2hhaW4oJmRldmljZVByb3BlcnRpZXMsICZtUGh5c2ljYWxEZXZpY2VFeHRlcm5hbE1l
bW9yeUhvc3RQcm9wZXJ0aWVzKTsKKyAgICB9CisKICAgICAvLyBRdWVyeSBzdWJncm91cCBwcm9w
ZXJ0aWVzCiAgICAgdms6OkFkZFRvUE5leHRDaGFpbigmZGV2aWNlUHJvcGVydGllcywgJm1QaHlz
aWNhbERldmljZVN1Ymdyb3VwUHJvcGVydGllcyk7CiAKQEAgLTk2NywxMiArMTAyOCwxNCBAQCB2
b2lkIFJlbmRlcmVyVms6OnF1ZXJ5RGV2aWNlRXh0ZW5zaW9uRmVhdHVyZXMoY29uc3QgRXh0ZW5z
aW9uTmFtZUxpc3QgJmRldmljZUV4dAogICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVz
MktIUihtUGh5c2ljYWxEZXZpY2UsICZkZXZpY2VQcm9wZXJ0aWVzKTsKIAogICAgIC8vIENsZWFu
IHVwIHBOZXh0IGNoYWlucwotICAgIG1MaW5lUmFzdGVyaXphdGlvbkZlYXR1cmVzLnBOZXh0ICAg
ICAgICA9IG51bGxwdHI7Ci0gICAgbVByb3Zva2luZ1ZlcnRleEZlYXR1cmVzLnBOZXh0ICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICBtVmVydGV4QXR0cmlidXRlRGl2aXNvckZlYXR1cmVzLnBOZXh0
ICAgPSBudWxscHRyOwotICAgIG1WZXJ0ZXhBdHRyaWJ1dGVEaXZpc29yUHJvcGVydGllcy5wTmV4
dCA9IG51bGxwdHI7Ci0gICAgbVRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZXMucE5leHQgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBtUGh5c2ljYWxEZXZpY2VTdWJncm91cFByb3BlcnRpZXMucE5leHQg
PSBudWxscHRyOworICAgIG1MaW5lUmFzdGVyaXphdGlvbkZlYXR1cmVzLnBOZXh0ICAgICAgICAg
ICAgICAgICAgPSBudWxscHRyOworICAgIG1Qcm92b2tpbmdWZXJ0ZXhGZWF0dXJlcy5wTmV4dCAg
ICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIG1WZXJ0ZXhBdHRyaWJ1dGVEaXZpc29y
RmVhdHVyZXMucE5leHQgICAgICAgICAgICAgPSBudWxscHRyOworICAgIG1WZXJ0ZXhBdHRyaWJ1
dGVEaXZpc29yUHJvcGVydGllcy5wTmV4dCAgICAgICAgICAgPSBudWxscHRyOworICAgIG1UcmFu
c2Zvcm1GZWVkYmFja0ZlYXR1cmVzLnBOZXh0ICAgICAgICAgICAgICAgICAgPSBudWxscHRyOwor
ICAgIG1JbmRleFR5cGVVaW50OEZlYXR1cmVzLnBOZXh0ICAgICAgICAgICAgICAgICAgICAgPSBu
dWxscHRyOworICAgIG1QaHlzaWNhbERldmljZVN1Ymdyb3VwUHJvcGVydGllcy5wTmV4dCAgICAg
ICAgICAgPSBudWxscHRyOworICAgIG1QaHlzaWNhbERldmljZUV4dGVybmFsTWVtb3J5SG9zdFBy
b3BlcnRpZXMucE5leHQgPSBudWxscHRyOwogfQogCiBhbmdsZTo6UmVzdWx0IFJlbmRlcmVyVms6
OmluaXRpYWxpemVEZXZpY2UoRGlzcGxheVZrICpkaXNwbGF5VmssIHVpbnQzMl90IHF1ZXVlRmFt
aWx5SW5kZXgpCkBAIC0xMDcxLDEyICsxMTM0LDcgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJlclZr
Ojppbml0aWFsaXplRGV2aWNlKERpc3BsYXlWayAqZGlzcGxheVZrLCB1aW50MzJfdCBxdWV1ZUYK
ICAgICBxdWVyeURldmljZUV4dGVuc2lvbkZlYXR1cmVzKGRldmljZUV4dGVuc2lvbk5hbWVzKTsK
IAogICAgIC8vIEluaXRpYWxpemUgZmVhdHVyZXMgYW5kIHdvcmthcm91bmRzLgotICAgIGlmICgh
ZGlzcGxheVZrLT5nZXRTdGF0ZSgpLmZlYXR1cmVzQWxsRGlzYWJsZWQpCi0gICAgewotICAgICAg
ICBpbml0RmVhdHVyZXMoZGV2aWNlRXh0ZW5zaW9uTmFtZXMpOwotICAgIH0KLSAgICBPdmVycmlk
ZUZlYXR1cmVzV2l0aERpc3BsYXlTdGF0ZSgmbUZlYXR1cmVzLCBkaXNwbGF5VmstPmdldFN0YXRl
KCkpOwotICAgIG1GZWF0dXJlc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpbml0RmVhdHVyZXMo
ZGlzcGxheVZrLCBkZXZpY2VFeHRlbnNpb25OYW1lcyk7CiAKICAgICAvLyBTZWxlY3RpdmVseSBl
bmFibGUgS0hSX01BSU5URU5BTkNFMSB0byBzdXBwb3J0IHZpZXdwb3J0IGZsaXBwaW5nLgogICAg
IGlmICgoZ2V0RmVhdHVyZXMoKS5mbGlwVmlld3BvcnRZLmVuYWJsZWQpICYmCkBAIC0xMDg5LDEy
ICsxMTQ3LDYgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJlclZrOjppbml0aWFsaXplRGV2aWNlKERp
c3BsYXlWayAqZGlzcGxheVZrLCB1aW50MzJfdCBxdWV1ZUYKICAgICAgICAgZW5hYmxlZERldmlj
ZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0tIUl9JTkNSRU1FTlRBTF9QUkVTRU5UX0VYVEVOU0lP
Tl9OQU1FKTsKICAgICB9CiAKLSAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0FuZHJvaWRI
YXJkd2FyZUJ1ZmZlci5lbmFibGVkIHx8Ci0gICAgICAgIGdldEZlYXR1cmVzKCkuc3VwcG9ydHNF
eHRlcm5hbE1lbW9yeUZkLmVuYWJsZWQpCi0gICAgewotICAgICAgICBlbmFibGVkRGV2aWNlRXh0
ZW5zaW9ucy5wdXNoX2JhY2soVktfS0hSX0VYVEVSTkFMX01FTU9SWV9FWFRFTlNJT05fTkFNRSk7
Ci0gICAgfQotCiAjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQogICAgIGlmIChn
ZXRGZWF0dXJlcygpLnN1cHBvcnRzQW5kcm9pZEhhcmR3YXJlQnVmZmVyLmVuYWJsZWQpCiAgICAg
ewpAQCAtMTEwNiwxMiArMTE1OCwyNSBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlcmVyVms6OmluaXRp
YWxpemVEZXZpY2UoRGlzcGxheVZrICpkaXNwbGF5VmssIHVpbnQzMl90IHF1ZXVlRgogICAgIEFT
U0VSVCghZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0FuZHJvaWRIYXJkd2FyZUJ1ZmZlci5lbmFibGVk
KTsKICNlbmRpZgogCisgICAgaWYgKGdldEZlYXR1cmVzKCkuc3VwcG9ydHNBbmRyb2lkSGFyZHdh
cmVCdWZmZXIuZW5hYmxlZCB8fAorICAgICAgICBnZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJu
YWxNZW1vcnlGZC5lbmFibGVkIHx8CisgICAgICAgIGdldEZlYXR1cmVzKCkuc3VwcG9ydHNFeHRl
cm5hbE1lbW9yeUZ1Y2hzaWEuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGVuYWJsZWREZXZpY2VF
eHRlbnNpb25zLnB1c2hfYmFjayhWS19LSFJfRVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1F
KTsKKyAgICB9CisKICAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsTWVtb3J5
RmQuZW5hYmxlZCkKICAgICB7CiAgICAgICAgIGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLnB1c2hf
YmFjayhWS19LSFJfRVhURVJOQUxfTUVNT1JZX0ZEX0VYVEVOU0lPTl9OQU1FKTsKICAgICB9CiAK
LSAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsU2VtYXBob3JlRmQuZW5hYmxl
ZCkKKyAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsTWVtb3J5RnVjaHNpYS5l
bmFibGVkKQorICAgIHsKKyAgICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNr
KFZLX0ZVQ0hTSUFfRVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FKTsKKyAgICB9CisKKyAg
ICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsU2VtYXBob3JlRmQuZW5hYmxlZCB8
fAorICAgICAgICBnZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGdWNoc2lh
LmVuYWJsZWQpCiAgICAgewogICAgICAgICBlbmFibGVkRGV2aWNlRXh0ZW5zaW9ucy5wdXNoX2Jh
Y2soVktfS0hSX0VYVEVSTkFMX1NFTUFQSE9SRV9FWFRFTlNJT05fTkFNRSk7CiAgICAgfQpAQCAt
MTEyMSw2ICsxMTg2LDExIEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZURl
dmljZShEaXNwbGF5VmsgKmRpc3BsYXlWaywgdWludDMyX3QgcXVldWVGCiAgICAgICAgIGVuYWJs
ZWREZXZpY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19LSFJfRVhURVJOQUxfU0VNQVBIT1JFX0ZE
X0VYVEVOU0lPTl9OQU1FKTsKICAgICB9CiAKKyAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0
c0V4dGVybmFsU2VtYXBob3JlRnVjaHNpYS5lbmFibGVkKQorICAgIHsKKyAgICAgICAgZW5hYmxl
ZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0ZVQ0hTSUFfRVhURVJOQUxfU0VNQVBIT1JF
X0VYVEVOU0lPTl9OQU1FKTsKKyAgICB9CisKICAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0
c1NoYWRlclN0ZW5jaWxFeHBvcnQuZW5hYmxlZCkKICAgICB7CiAgICAgICAgIGVuYWJsZWREZXZp
Y2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19FWFRfU0hBREVSX1NURU5DSUxfRVhQT1JUX0VYVEVO
U0lPTl9OQU1FKTsKQEAgLTExOTksNiArMTI2OSwxOSBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlcmVy
Vms6OmluaXRpYWxpemVEZXZpY2UoRGlzcGxheVZrICpkaXNwbGF5VmssIHVpbnQzMl90IHF1ZXVl
RgogICAgICAgICB2azo6QWRkVG9QTmV4dENoYWluKCZjcmVhdGVJbmZvLCAmbVRyYW5zZm9ybUZl
ZWRiYWNrRmVhdHVyZXMpOwogICAgIH0KIAorICAgIGlmIChnZXRGZWF0dXJlcygpLnN1cHBvcnRz
SW5kZXhUeXBlVWludDguZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGVuYWJsZWREZXZpY2VFeHRl
bnNpb25zLnB1c2hfYmFjayhWS19FWFRfSU5ERVhfVFlQRV9VSU5UOF9FWFRFTlNJT05fTkFNRSk7
CisgICAgICAgIHZrOjpBZGRUb1BOZXh0Q2hhaW4oJmNyZWF0ZUluZm8sICZtSW5kZXhUeXBlVWlu
dDhGZWF0dXJlcyk7CisgICAgfQorCisgICAgaWYgKGdldEZlYXR1cmVzKCkuc3VwcG9ydHNFeHRl
cm5hbE1lbW9yeUhvc3QuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGVuYWJsZWREZXZpY2VFeHRl
bnNpb25zLnB1c2hfYmFjayhWS19FWFRfRVhURVJOQUxfTUVNT1JZX0hPU1RfRVhURU5TSU9OX05B
TUUpOworICAgICAgICBtTWluSW1wb3J0ZWRIb3N0UG9pbnRlckFsaWdubWVudCA9CisgICAgICAg
ICAgICBtUGh5c2ljYWxEZXZpY2VFeHRlcm5hbE1lbW9yeUhvc3RQcm9wZXJ0aWVzLm1pbkltcG9y
dGVkSG9zdFBvaW50ZXJBbGlnbm1lbnQ7CisgICAgfQorCiAgICAgY3JlYXRlSW5mby5zVHlwZSAg
ICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9ERVZJQ0VfQ1JFQVRFX0lORk87CiAg
ICAgY3JlYXRlSW5mby5mbGFncyAgICAgICAgICAgICAgICAgPSAwOwogICAgIGNyZWF0ZUluZm8u
cXVldWVDcmVhdGVJbmZvQ291bnQgID0gMTsKQEAgLTE0NDEsNDYgKzE1MjQsNTQgQEAgZ2w6OlZl
cnNpb24gUmVuZGVyZXJWazo6Z2V0TWF4Q29uZm9ybWFudEVTVmVyc2lvbigpIGNvbnN0CiAgICAg
cmV0dXJuIExpbWl0VmVyc2lvblRvKGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpLCB7MywgMH0p
OwogfQogCi12b2lkIFJlbmRlcmVyVms6OmluaXRGZWF0dXJlcyhjb25zdCBFeHRlbnNpb25OYW1l
TGlzdCAmZGV2aWNlRXh0ZW5zaW9uTmFtZXMpCit2b2lkIFJlbmRlcmVyVms6OmluaXRGZWF0dXJl
cyhEaXNwbGF5VmsgKmRpc3BsYXlWaywgY29uc3QgRXh0ZW5zaW9uTmFtZUxpc3QgJmRldmljZUV4
dGVuc2lvbk5hbWVzKQogeworICAgIGlmIChkaXNwbGF5VmstPmdldFN0YXRlKCkuZmVhdHVyZXNB
bGxEaXNhYmxlZCkKKyAgICB7CisgICAgICAgIEFwcGx5RmVhdHVyZU92ZXJyaWRlcygmbUZlYXR1
cmVzLCBkaXNwbGF5VmstPmdldFN0YXRlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgYm9vbCBpc0FNRCAgICAgID0gSXNBTUQobVBoeXNpY2FsRGV2aWNlUHJvcGVydGllcy52ZW5k
b3JJRCk7CiAgICAgYm9vbCBpc0ludGVsICAgID0gSXNJbnRlbChtUGh5c2ljYWxEZXZpY2VQcm9w
ZXJ0aWVzLnZlbmRvcklEKTsKICAgICBib29sIGlzTnZpZGlhICAgPSBJc052aWRpYShtUGh5c2lj
YWxEZXZpY2VQcm9wZXJ0aWVzLnZlbmRvcklEKTsKICAgICBib29sIGlzUXVhbGNvbW0gPSBJc1F1
YWxjb21tKG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMudmVuZG9ySUQpOworICAgIGJvb2wgaXNT
d1MgPQorICAgICAgICBJc1N3aWZ0c2hhZGVyKG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMudmVu
ZG9ySUQsIG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMuZGV2aWNlSUQpOwogCiAgICAgaWYgKG1M
aW5lUmFzdGVyaXphdGlvbkZlYXR1cmVzLmJyZXNlbmhhbUxpbmVzID09IFZLX1RSVUUpCiAgICAg
ewogICAgICAgICBBU1NFUlQobUxpbmVSYXN0ZXJpemF0aW9uRmVhdHVyZXMuc1R5cGUgPT0KICAg
ICAgICAgICAgICAgIFZLX1NUUlVDVFVSRV9UWVBFX1BIWVNJQ0FMX0RFVklDRV9MSU5FX1JBU1RF
UklaQVRJT05fRkVBVFVSRVNfRVhUKTsKLSAgICAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04o
KCZtRmVhdHVyZXMpLCBicmVzZW5oYW1MaW5lUmFzdGVyaXphdGlvbiwgdHJ1ZSk7CisgICAgICAg
IEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCZtRmVhdHVyZXMsIGJyZXNlbmhhbUxpbmVSYXN0ZXJp
emF0aW9uLCB0cnVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgLy8gVXNlIE9w
ZW5HTCBsaW5lIHJhc3Rlcml6YXRpb24gcnVsZXMgaWYgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUg
YnkgZGVmYXVsdC4KICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRml4IEFuZHJvaWQgc3VwcG9y
dC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8yODMwCi0gICAgICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElU
SU9OKCgmbUZlYXR1cmVzKSwgYmFzaWNHTExpbmVSYXN0ZXJpemF0aW9uLCAhSXNBbmRyb2lkKCkp
OworICAgICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBiYXNpY0dMTGlu
ZVJhc3Rlcml6YXRpb24sICFJc0FuZHJvaWQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1Qcm92b2tp
bmdWZXJ0ZXhGZWF0dXJlcy5wcm92b2tpbmdWZXJ0ZXhMYXN0ID09IFZLX1RSVUUpCiAgICAgewog
ICAgICAgICBBU1NFUlQobVByb3Zva2luZ1ZlcnRleEZlYXR1cmVzLnNUeXBlID09CiAgICAgICAg
ICAgICAgICBWS19TVFJVQ1RVUkVfVFlQRV9QSFlTSUNBTF9ERVZJQ0VfUFJPVk9LSU5HX1ZFUlRF
WF9GRUFUVVJFU19FWFQpOwotICAgICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0
dXJlcyksIHByb3Zva2luZ1ZlcnRleCwgdHJ1ZSk7CisgICAgICAgIEFOR0xFX0ZFQVRVUkVfQ09O
RElUSU9OKCZtRmVhdHVyZXMsIHByb3Zva2luZ1ZlcnRleCwgdHJ1ZSk7CiAgICAgfQogCiAgICAg
Ly8gVE9ETyhsdWNmZXJyb24pOiBDdXJyZW50bHkgZGlzYWJsZWQgb24gSW50ZWwgb25seSBzaW5j
ZSBtYW55IHRlc3RzIGFyZSBmYWlsaW5nIGFuZCBuZWVkCiAgICAgLy8gaW52ZXN0aWdhdGlvbi4g
aHR0cDovL2FuZ2xlYnVnLmNvbS8yNzI4CiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCi0g
ICAgICAgICgmbUZlYXR1cmVzKSwgZmxpcFZpZXdwb3J0WSwKKyAgICAgICAgJm1GZWF0dXJlcywg
ZmxpcFZpZXdwb3J0WSwKICAgICAgICAgIUlzSW50ZWwobVBoeXNpY2FsRGV2aWNlUHJvcGVydGll
cy52ZW5kb3JJRCkgJiYKICAgICAgICAgICAgICAgICAobVBoeXNpY2FsRGV2aWNlUHJvcGVydGll
cy5hcGlWZXJzaW9uID49IFZLX01BS0VfVkVSU0lPTigxLCAxLCAwKSkgfHwKICAgICAgICAgICAg
IEV4dGVuc2lvbkZvdW5kKFZLX0tIUl9NQUlOVEVOQU5DRTFfRVhURU5TSU9OX05BTUUsIGRldmlj
ZUV4dGVuc2lvbk5hbWVzKSk7CiAKICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzI4MzgKLSAg
ICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGV4dHJhQ29weUJ1ZmZlclJl
Z2lvbiwgSXNXaW5kb3dzKCkgJiYgaXNJbnRlbCk7CisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJ
T04oJm1GZWF0dXJlcywgZXh0cmFDb3B5QnVmZmVyUmVnaW9uLCBJc1dpbmRvd3MoKSAmJiBpc0lu
dGVsKTsKIAogICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzA1NQotICAgIEFOR0xFX0ZFQVRV
UkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgZm9yY2VDUFVQYXRoRm9yQ3ViZU1hcENvcHksIElz
V2luZG93cygpICYmIGlzSW50ZWwpOworICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCZtRmVh
dHVyZXMsIGZvcmNlQ1BVUGF0aEZvckN1YmVNYXBDb3B5LCBJc1dpbmRvd3MoKSAmJiBpc0ludGVs
KTsKIAogICAgIC8vIFdvcmsgYXJvdW5kIGluY29ycmVjdCBOVklESUEgcG9pbnQgc2l6ZSByYW5n
ZSBjbGFtcGluZy4KICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzI5NzAjYzEwCkBAIC0xNDkz
LDIzICsxNTg0LDIzIEBAIHZvaWQgUmVuZGVyZXJWazo6aW5pdEZlYXR1cmVzKGNvbnN0IEV4dGVu
c2lvbk5hbWVMaXN0ICZkZXZpY2VFeHRlbnNpb25OYW1lcykKICAgICAgICAgbnZpZGlhVmVyc2lv
biA9CiAgICAgICAgICAgICBhbmdsZTo6UGFyc2VOdmlkaWFEcml2ZXJWZXJzaW9uKHRoaXMtPm1Q
aHlzaWNhbERldmljZVByb3BlcnRpZXMuZHJpdmVyVmVyc2lvbik7CiAgICAgfQotICAgIEFOR0xF
X0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgY2xhbXBQb2ludFNpemUsCisgICAgQU5H
TEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgY2xhbXBQb2ludFNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNOdmlkaWEgJiYgbnZpZGlhVmVyc2lvbi5tYWpvciA8IHVp
bnQzMl90KElzV2luZG93cygpID8gNDMwIDogNDIxKSk7CiAKICAgICAvLyBXb3JrIGFyb3VuZCBp
bmVmZmVjdGl2ZSBjb21wdXRlLWdyYXBoaWNzIGJhcnJpZXJzIG9uIE5leHVzIDVYLgogICAgIC8v
IFRPRE8oc3lvdXNzZWZpKTogRmlndXJlIG91dCB3aGljaCBvdGhlciB2ZW5kb3JzIGFuZCBkcml2
ZXIgdmVyc2lvbnMgYXJlIGFmZmVjdGVkLgogICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzAx
OQotICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgZmx1c2hBZnRlclZl
cnRleENvbnZlcnNpb24sCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywg
Zmx1c2hBZnRlclZlcnRleENvbnZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SXNBbmRyb2lkKCkgJiYgSXNOZXh1czVYKG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMudmVuZG9y
SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMuZGV2aWNlSUQpKTsKIAogICAgIEFOR0xFX0ZFQVRV
UkVfQ09ORElUSU9OKAotICAgICAgICAoJm1GZWF0dXJlcyksIHN1cHBvcnRzSW5jcmVtZW50YWxQ
cmVzZW50LAorICAgICAgICAmbUZlYXR1cmVzLCBzdXBwb3J0c0luY3JlbWVudGFsUHJlc2VudCwK
ICAgICAgICAgRXh0ZW5zaW9uRm91bmQoVktfS0hSX0lOQ1JFTUVOVEFMX1BSRVNFTlRfRVhURU5T
SU9OX05BTUUsIGRldmljZUV4dGVuc2lvbk5hbWVzKSk7CiAKICNpZiBkZWZpbmVkKEFOR0xFX1BM
QVRGT1JNX0FORFJPSUQpCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCi0gICAgICAgICgm
bUZlYXR1cmVzKSwgc3VwcG9ydHNBbmRyb2lkSGFyZHdhcmVCdWZmZXIsCisgICAgICAgICZtRmVh
dHVyZXMsIHN1cHBvcnRzQW5kcm9pZEhhcmR3YXJlQnVmZmVyLAogICAgICAgICBJc0FuZHJvaWQo
KSAmJgogICAgICAgICAgICAgRXh0ZW5zaW9uRm91bmQoVktfQU5EUk9JRF9FWFRFUk5BTF9NRU1P
UllfQU5EUk9JRF9IQVJEV0FSRV9CVUZGRVJfRVhURU5TSU9OX05BTUUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VFeHRlbnNpb25OYW1lcykgJiYKQEAgLTE1MTcsNTQgKzE2MDgs
NzkgQEAgdm9pZCBSZW5kZXJlclZrOjppbml0RmVhdHVyZXMoY29uc3QgRXh0ZW5zaW9uTmFtZUxp
c3QgJmRldmljZUV4dGVuc2lvbk5hbWVzKQogI2VuZGlmCiAKICAgICBBTkdMRV9GRUFUVVJFX0NP
TkRJVElPTigKLSAgICAgICAgKCZtRmVhdHVyZXMpLCBzdXBwb3J0c0V4dGVybmFsTWVtb3J5RmQs
CisgICAgICAgICZtRmVhdHVyZXMsIHN1cHBvcnRzRXh0ZXJuYWxNZW1vcnlGZCwKICAgICAgICAg
RXh0ZW5zaW9uRm91bmQoVktfS0hSX0VYVEVSTkFMX01FTU9SWV9GRF9FWFRFTlNJT05fTkFNRSwg
ZGV2aWNlRXh0ZW5zaW9uTmFtZXMpKTsKIAogICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKAot
ICAgICAgICAoJm1GZWF0dXJlcyksIHN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGZCwKKyAgICAg
ICAgJm1GZWF0dXJlcywgc3VwcG9ydHNFeHRlcm5hbE1lbW9yeUZ1Y2hzaWEsCisgICAgICAgIEV4
dGVuc2lvbkZvdW5kKFZLX0ZVQ0hTSUFfRVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FLCBk
ZXZpY2VFeHRlbnNpb25OYW1lcykpOworCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCisg
ICAgICAgICZtRmVhdHVyZXMsIHN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGZCwKICAgICAgICAg
RXh0ZW5zaW9uRm91bmQoVktfS0hSX0VYVEVSTkFMX1NFTUFQSE9SRV9GRF9FWFRFTlNJT05fTkFN
RSwgZGV2aWNlRXh0ZW5zaW9uTmFtZXMpKTsKIAogICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9O
KAotICAgICAgICAoJm1GZWF0dXJlcyksIHN1cHBvcnRzU2hhZGVyU3RlbmNpbEV4cG9ydCwKKyAg
ICAgICAgJm1GZWF0dXJlcywgc3VwcG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZ1Y2hzaWEsCisgICAg
ICAgIEV4dGVuc2lvbkZvdW5kKFZLX0ZVQ0hTSUFfRVhURVJOQUxfU0VNQVBIT1JFX0VYVEVOU0lP
Tl9OQU1FLCBkZXZpY2VFeHRlbnNpb25OYW1lcykpOworCisgICAgQU5HTEVfRkVBVFVSRV9DT05E
SVRJT04oCisgICAgICAgICZtRmVhdHVyZXMsIHN1cHBvcnRzU2hhZGVyU3RlbmNpbEV4cG9ydCwK
ICAgICAgICAgRXh0ZW5zaW9uRm91bmQoVktfRVhUX1NIQURFUl9TVEVOQ0lMX0VYUE9SVF9FWFRF
TlNJT05fTkFNRSwgZGV2aWNlRXh0ZW5zaW9uTmFtZXMpKTsKIAotICAgIEFOR0xFX0ZFQVRVUkVf
Q09ORElUSU9OKCgmbUZlYXR1cmVzKSwgc3VwcG9ydHNUcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lv
biwKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBzdXBwb3J0c1RyYW5z
Zm9ybUZlZWRiYWNrRXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UcmFu
c2Zvcm1GZWVkYmFja0ZlYXR1cmVzLnRyYW5zZm9ybUZlZWRiYWNrID09IFZLX1RSVUUpOwogCi0g
ICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCBlbXVsYXRlVHJhbnNmb3Jt
RmVlZGJhY2ssCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgc3VwcG9y
dHNJbmRleFR5cGVVaW50OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSW5kZXhUeXBl
VWludDhGZWF0dXJlcy5pbmRleFR5cGVVaW50OCA9PSBWS19UUlVFKTsKKworICAgIEFOR0xFX0ZF
QVRVUkVfQ09ORElUSU9OKCZtRmVhdHVyZXMsIGVtdWxhdGVUcmFuc2Zvcm1GZWVkYmFjaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobUZlYXR1cmVzLnN1cHBvcnRzVHJhbnNmb3JtRmVl
ZGJhY2tFeHRlbnNpb24uZW5hYmxlZCA9PSBWS19GQUxTRSAmJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy52ZXJ0ZXhQaXBlbGluZVN0b3Jlc0Fu
ZEF0b21pY3MgPT0gVktfVFJVRSkpOwogCi0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZt
RmVhdHVyZXMpLCBkaXNhYmxlRmlmb1ByZXNlbnRNb2RlLCBJc0xpbnV4KCkgJiYgaXNJbnRlbCk7
CisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgZGlzYWJsZUZpZm9QcmVz
ZW50TW9kZSwgSXNMaW51eCgpICYmIGlzSW50ZWwpOwogCi0gICAgQU5HTEVfRkVBVFVSRV9DT05E
SVRJT04oKCZtRmVhdHVyZXMpLCBiaW5kRW1wdHlGb3JVbnVzZWREZXNjcmlwdG9yU2V0cywKKyAg
ICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBiaW5kRW1wdHlGb3JVbnVzZWRE
ZXNjcmlwdG9yU2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0FuZHJvaWQoKSAm
JiBpc1F1YWxjb21tKTsKIAotICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVz
KSwgZm9yY2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMsIElzQW5kcm9pZCgpKTsKKyAgICBBTkdM
RV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBmb3JjZU9sZFJld3JpdGVTdHJ1Y3RTYW1w
bGVycywgSXNBbmRyb2lkKCkgJiYgIWlzU3dTKTsKIAotICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElU
SU9OKCgmbUZlYXR1cmVzKSwgcGVyRnJhbWVXaW5kb3dTaXplUXVlcnksCisgICAgQU5HTEVfRkVB
VFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgcGVyRnJhbWVXaW5kb3dTaXplUXVlcnksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXNJbnRlbCB8fCAoSXNXaW5kb3dzKCkgJiYgaXNBTUQp
IHx8IElzRnVjaHNpYSgpKTsKIAogICAgIC8vIERpc2FibGVkIG9uIEFNRC93aW5kb3dzIGR1ZSB0
byBidWdneSBiZWhhdmlvci4KLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJl
cyksIGRpc2FsbG93U2VhbWZ1bEN1YmVNYXBFbXVsYXRpb24sIElzV2luZG93cygpICYmIGlzQU1E
KTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBkaXNhbGxvd1NlYW1m
dWxDdWJlTWFwRW11bGF0aW9uLCBJc1dpbmRvd3MoKSAmJiBpc0FNRCk7CiAKLSAgICAvLyBSb3Vu
ZCB1cCBidWZmZXIgc2l6ZXMgaW4gdGhlIHByZXNlbmNlIG9mIHJvYnVzdEJ1ZmZlckFjY2VzcyB0
byBlbXVsYXRlIEdMRVMgYmVoYXZpb3Igd2hlbgotICAgIC8vIHZlcnRleCBhdHRyaWJ1dGVzIGFy
ZSBmZXRjaGVkIGZyb20gYmV5b25kIHRoZSBsYXN0IG11bHRpcGxlIG9mIHRoZSBzdHJpZGUuICBD
dXJyZW50bHksIG9ubHkKLSAgICAvLyBBTUQgaXMga25vd24gdG8gcmVmdXNlIHJlYWRpbmcgdGhl
c2UgYXR0cmlidXRlcy4KLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyks
IHJvdW5kVXBCdWZmZXJzVG9NYXhWZXJ0ZXhBdHRyaWJTdHJpZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaXNBTUQgJiYgbVBoeXNpY2FsRGV2aWNlRmVhdHVyZXMucm9idXN0QnVmZmVy
QWNjZXNzKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBwYWRCdWZm
ZXJzVG9NYXhWZXJ0ZXhBdHRyaWJTdHJpZGUsIGlzQU1EKTsKICAgICBtTWF4VmVydGV4QXR0cmli
U3RyaWRlID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdsOjpsaW1pdHM6OmtNYXhW
ZXJ0ZXhBdHRyaWJTdHJpZGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLmxpbWl0cy5tYXhWZXJ0ZXhJbnB1dEJpbmRpbmdT
dHJpZGUpOwogCi0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCBmb3Jj
ZUQxNlRleEZpbHRlciwgSXNBbmRyb2lkKCkgJiYgaXNRdWFsY29tbSk7CisgICAgQU5HTEVfRkVB
VFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgZm9yY2VEMTZUZXhGaWx0ZXIsIElzQW5kcm9pZCgp
ICYmIGlzUXVhbGNvbW0pOwogCi0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVy
ZXMpLCBkaXNhYmxlRmxpcHBpbmdCbGl0V2l0aENvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXNBbmRyb2lkKCkgJiYgaXNRdWFsY29tbSk7CisgICAgQU5HTEVfRkVBVFVSRV9D
T05ESVRJT04oJm1GZWF0dXJlcywgZGlzYWJsZUZsaXBwaW5nQmxpdFdpdGhDb21tYW5kLCBJc0Fu
ZHJvaWQoKSAmJiBpc1F1YWxjb21tKTsKKworICAgIC8vIEFsbG9jYXRpb24gc2FuaXRpemF0aW9u
IGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBhIGhlYXZleXdlaWdodCBpbXBsZW1lbnRh
dGlvbgorICAgIC8vIHRoYXQgY2FuIGNhdXNlIE9PTSBhbmQgdGltZW91dHMuCisgICAgQU5HTEVf
RkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgYWxsb2NhdGVOb25aZXJvTWVtb3J5LCBmYWxz
ZSk7CiAKLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGNvbW1hbmRH
cmFwaCwgdHJ1ZSk7CisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCisgICAgICAgICZtRmVh
dHVyZXMsIHN1cHBvcnRzRXh0ZXJuYWxNZW1vcnlIb3N0LAorICAgICAgICBFeHRlbnNpb25Gb3Vu
ZChWS19FWFRfRVhURVJOQUxfTUVNT1JZX0hPU1RfRVhURU5TSU9OX05BTUUsIGRldmljZUV4dGVu
c2lvbk5hbWVzKSk7CisKKyAgICAvLyBQcmUtcm90YXRpb24gc3VwcG9ydCBpcyBub3QgZnVsbHkg
cmVhZHkgdG8gYmUgZW5hYmxlZC4KKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1
cmVzLCBlbmFibGVQcmVSb3RhdGVTdXJmYWNlcywgZmFsc2UpOworCisgICAgLy8gQ3VycmVudGx5
IGRpc2FibGUgRnJhbWVidWZmZXJWayBjYWNoZSBvbiBBcHBsZTogaHR0cDovL2FuZ2xlYnVnLmNv
bS80NDQyCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgZW5hYmxlRnJh
bWVidWZmZXJWa0NhY2hlLCAhSXNBcHBsZSgpKTsKKworICAgIC8vIEN1cnJlbnRseSBkaXNhYmxl
ZCBieSBkZWZhdWx0OiBodHRwOi8vYW5nbGVidWcuY29tLzMwNzgKKyAgICBBTkdMRV9GRUFUVVJF
X0NPTkRJVElPTigmbUZlYXR1cmVzLCBlbmFibGVQcmVjaXNpb25RdWFsaWZpZXJzLCBmYWxzZSk7
CisKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBzdXBwb3J0RGVwdGhT
dGVuY2lsUmVuZGVyaW5nRmVlZGJhY2tMb29wcywgdHJ1ZSk7CiAKICAgICBhbmdsZTo6UGxhdGZv
cm1NZXRob2RzICpwbGF0Zm9ybSA9IEFOR0xFUGxhdGZvcm1DdXJyZW50KCk7CiAgICAgcGxhdGZv
cm0tPm92ZXJyaWRlRmVhdHVyZXNWayhwbGF0Zm9ybSwgJm1GZWF0dXJlcyk7CisKKyAgICBBcHBs
eUZlYXR1cmVPdmVycmlkZXMoJm1GZWF0dXJlcywgZGlzcGxheVZrLT5nZXRTdGF0ZSgpKTsKIH0K
IAogdm9pZCBSZW5kZXJlclZrOjppbml0UGlwZWxpbmVDYWNoZVZrS2V5KCkKQEAgLTE3ODgsMTIg
KzE5MDQsMTMgQEAgYm9vbCBSZW5kZXJlclZrOjpoYXNCdWZmZXJGb3JtYXRGZWF0dXJlQml0cyhW
a0Zvcm1hdCBmb3JtYXQsIGNvbnN0IFZrRm9ybWF0RmVhdHUKIGFuZ2xlOjpSZXN1bHQgUmVuZGVy
ZXJWazo6cXVldWVTdWJtaXQodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVnbDo6Q29udGV4dFByaW9yaXR5IHByaW9yaXR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa1N1Ym1pdEluZm8gJnN1
Ym1pdEluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZr
OjpGZW5jZSAmZmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZrOjpGZW5jZSAqZmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlcmlhbCAqc2VyaWFsT3V0KQogewogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PGRlY2x0eXBlKG1RdWV1ZU11dGV4KT4gbG9jayhtUXVldWVNdXRleCk7Ci0gICAgICAgIEFOR0xF
X1ZLX1RSWShjb250ZXh0LCB2a1F1ZXVlU3VibWl0KG1RdWV1ZXNbcHJpb3JpdHldLCAxLCAmc3Vi
bWl0SW5mbywgZmVuY2UuZ2V0SGFuZGxlKCkpKTsKKyAgICAgICAgVmtGZW5jZSBoYW5kbGUgPSBm
ZW5jZSA/IGZlbmNlLT5nZXRIYW5kbGUoKSA6IFZLX05VTExfSEFORExFOworICAgICAgICBBTkdM
RV9WS19UUlkoY29udGV4dCwgdmtRdWV1ZVN1Ym1pdChtUXVldWVzW3ByaW9yaXR5XSwgMSwgJnN1
Ym1pdEluZm8sIGhhbmRsZSkpOwogICAgIH0KIAogICAgIEFOR0xFX1RSWShjbGVhbnVwR2FyYmFn
ZShjb250ZXh0LCBmYWxzZSkpOwpAQCAtMTgwNSw2ICsxOTIyLDIzIEBAIGFuZ2xlOjpSZXN1bHQg
UmVuZGVyZXJWazo6cXVldWVTdWJtaXQodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCithbmdsZTo6UmVzdWx0IFJlbmRlcmVyVms6
OnF1ZXVlU3VibWl0T25lT2ZmKHZrOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgJiZw
cmltYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6
OkNvbnRleHRQcmlvcml0eSBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2VyaWFsICpzZXJpYWxPdXQpCit7CisgICAgVmtTdWJtaXRJbmZvIHN1
Ym1pdEluZm8gICAgICAgPSB7fTsKKyAgICBzdWJtaXRJbmZvLnNUeXBlICAgICAgICAgICAgICA9
IFZLX1NUUlVDVFVSRV9UWVBFX1NVQk1JVF9JTkZPOworICAgIHN1Ym1pdEluZm8uY29tbWFuZEJ1
ZmZlckNvdW50ID0gMTsKKyAgICBzdWJtaXRJbmZvLnBDb21tYW5kQnVmZmVycyAgICA9IHByaW1h
cnkucHRyKCk7CisKKyAgICBBTkdMRV9UUlkocXVldWVTdWJtaXQoY29udGV4dCwgcHJpb3JpdHks
IHN1Ym1pdEluZm8sIG51bGxwdHIsIHNlcmlhbE91dCkpOworCisgICAgbVBlbmRpbmdPbmVPZmZD
b21tYW5kcy5wdXNoX2JhY2soeypzZXJpYWxPdXQsIHN0ZDo6bW92ZShwcmltYXJ5KX0pOworCisg
ICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCiBhbmdsZTo6UmVzdWx0IFJl
bmRlcmVyVms6OnF1ZXVlV2FpdElkbGUodms6OkNvbnRleHQgKmNvbnRleHQsIGVnbDo6Q29udGV4
dFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIHsKQEAgLTE5NTAsMTQgKzIwODQsNTIgQEAgdm9p
ZCBSZW5kZXJlclZrOjpvbkNvbXBsZXRlZFNlcmlhbChTZXJpYWwgc2VyaWFsKQogCiB2b2lkIFJl
bmRlcmVyVms6OnJlbG9hZFZvbGtJZk5lZWRlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKHZvbGtHZXRM
b2FkZWRJbnN0YW5jZSgpICE9IG1JbnN0YW5jZSkKKyAgICBpZiAoKG1JbnN0YW5jZSAhPSBWS19O
VUxMX0hBTkRMRSkgJiYgKHZvbGtHZXRMb2FkZWRJbnN0YW5jZSgpICE9IG1JbnN0YW5jZSkpCiAg
ICAgewogICAgICAgICB2b2xrTG9hZEluc3RhbmNlKG1JbnN0YW5jZSk7CiAgICAgfQogCi0gICAg
aWYgKHZvbGtHZXRMb2FkZWREZXZpY2UoKSAhPSBtRGV2aWNlKQorICAgIGlmICgobURldmljZSAh
PSBWS19OVUxMX0hBTkRMRSkgJiYgKHZvbGtHZXRMb2FkZWREZXZpY2UoKSAhPSBtRGV2aWNlKSkK
ICAgICB7CiAgICAgICAgIHZvbGtMb2FkRGV2aWNlKG1EZXZpY2UpOwogICAgIH0KIH0KKworYW5n
bGU6OlJlc3VsdCBSZW5kZXJlclZrOjpnZXRDb21tYW5kQnVmZmVyT25lT2ZmKHZrOjpDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlck91dCkKK3sKKyAgICBp
ZiAoIW1PbmVPZmZDb21tYW5kUG9vbC52YWxpZCgpKQorICAgIHsKKyAgICAgICAgVmtDb21tYW5k
UG9vbENyZWF0ZUluZm8gY3JlYXRlSW5mbyA9IHt9OworICAgICAgICBjcmVhdGVJbmZvLnNUeXBl
ICAgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9QT09MX0NSRUFU
RV9JTkZPOworICAgICAgICBjcmVhdGVJbmZvLmZsYWdzICAgICAgICAgICAgICAgICAgID0gVktf
Q09NTUFORF9QT09MX0NSRUFURV9SRVNFVF9DT01NQU5EX0JVRkZFUl9CSVQ7CisgICAgICAgIEFO
R0xFX1ZLX1RSWShjb250ZXh0LCBtT25lT2ZmQ29tbWFuZFBvb2wuaW5pdChtRGV2aWNlLCBjcmVh
dGVJbmZvKSk7CisgICAgfQorCisgICAgaWYgKCFtUGVuZGluZ09uZU9mZkNvbW1hbmRzLmVtcHR5
KCkgJiYKKyAgICAgICAgbVBlbmRpbmdPbmVPZmZDb21tYW5kcy5mcm9udCgpLnNlcmlhbCA8IG1M
YXN0Q29tcGxldGVkUXVldWVTZXJpYWwpCisgICAgeworICAgICAgICAqY29tbWFuZEJ1ZmZlck91
dCA9IHN0ZDo6bW92ZShtUGVuZGluZ09uZU9mZkNvbW1hbmRzLmZyb250KCkuY29tbWFuZEJ1ZmZl
cik7CisgICAgICAgIG1QZW5kaW5nT25lT2ZmQ29tbWFuZHMucG9wX2Zyb250KCk7CisgICAgICAg
IEFOR0xFX1ZLX1RSWShjb250ZXh0LCBjb21tYW5kQnVmZmVyT3V0LT5yZXNldCgpKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVmtDb21tYW5kQnVmZmVyQWxsb2NhdGVJbmZvIGFs
bG9jSW5mbyA9IHt9OworICAgICAgICBhbGxvY0luZm8uc1R5cGUgICAgICAgICAgICAgICAgICAg
ICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQUxMT0NBVEVfSU5GTzsKKyAg
ICAgICAgYWxsb2NJbmZvLmxldmVsICAgICAgICAgICAgICAgICAgICAgICA9IFZLX0NPTU1BTkRf
QlVGRkVSX0xFVkVMX1BSSU1BUlk7CisgICAgICAgIGFsbG9jSW5mby5jb21tYW5kQnVmZmVyQ291
bnQgICAgICAgICAgPSAxOworICAgICAgICBhbGxvY0luZm8uY29tbWFuZFBvb2wgICAgICAgICAg
ICAgICAgID0gbU9uZU9mZkNvbW1hbmRQb29sLmdldEhhbmRsZSgpOworCisgICAgICAgIEFOR0xF
X1ZLX1RSWShjb250ZXh0LCBjb21tYW5kQnVmZmVyT3V0LT5pbml0KGNvbnRleHQtPmdldERldmlj
ZSgpLCBhbGxvY0luZm8pKTsKKyAgICB9CisKKyAgICBWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8g
YmVnaW5JbmZvID0ge307CisgICAgYmVnaW5JbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgICA9
IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lORk87CisgICAgYmVnaW5J
bmZvLmZsYWdzICAgICAgICAgICAgICAgICAgICA9IFZLX0NPTU1BTkRfQlVGRkVSX1VTQUdFX09O
RV9USU1FX1NVQk1JVF9CSVQ7CisgICAgYmVnaW5JbmZvLnBJbmhlcml0YW5jZUluZm8gICAgICAg
ICA9IG51bGxwdHI7CisgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIGNvbW1hbmRCdWZmZXJPdXQt
PmJlZ2luKGJlZ2luSW5mbykpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OworfQogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5o
CmluZGV4IDRlNzlhYmM0NzVlYjc1YTAwY2FiZmIwOGJhM2YxMWE4ZGVmYTc5YzkuLmQyM2VmODg4
NzdhMzI1OWNhYmQ5YjgwNTkyMjU5NmQ4MWJkNmUwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
UmVuZGVyZXJWay5oCkBAIC0xMCw4ICsxMCwxMCBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJF
Ul9WVUxLQU5fUkVOREVSRVJWS19IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5f
UkVOREVSRVJWS19IXwogCisjaW5jbHVkZSA8ZGVxdWU+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPG11dGV4PgorCiAjaW5jbHVkZSAidmtfZXh0X3Byb3Zva2luZ192ZXJ0ZXguaCIKICNp
bmNsdWRlICJ2b2xrLmgiCiAKQEAgLTIwLDggKzIyLDggQEAKICNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Jsb2JDYWNoZS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0NhcHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tbWFu
ZEdyYXBoLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9VdGlsc1ZrLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJzLmgiCkBAIC0xNDEsMTQgKzE0MywxNSBAQCBjbGFz
cyBSZW5kZXJlclZrIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gSXNzdWVzIGEgbmV3IHNl
cmlhbCBmb3IgbGlua2VkIHNoYWRlciBtb2R1bGVzLiBVc2VkIGluIHRoZSBwaXBlbGluZSBjYWNo
ZS4KICAgICBTZXJpYWwgaXNzdWVTaGFkZXJTZXJpYWwoKTsKIAotICAgIGNvbnN0IGFuZ2xlOjpG
ZWF0dXJlc1ZrICZnZXRGZWF0dXJlcygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobUZl
YXR1cmVzSW5pdGlhbGl6ZWQpOwotICAgICAgICByZXR1cm4gbUZlYXR1cmVzOwotICAgIH0KKyAg
ICBjb25zdCBhbmdsZTo6RmVhdHVyZXNWayAmZ2V0RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBt
RmVhdHVyZXM7IH0KICAgICB1aW50MzJfdCBnZXRNYXhWZXJ0ZXhBdHRyaWJEaXZpc29yKCkgY29u
c3QgeyByZXR1cm4gbU1heFZlcnRleEF0dHJpYkRpdmlzb3I7IH0KICAgICBWa0RldmljZVNpemUg
Z2V0TWF4VmVydGV4QXR0cmliU3RyaWRlKCkgY29uc3QgeyByZXR1cm4gbU1heFZlcnRleEF0dHJp
YlN0cmlkZTsgfQogCisgICAgVmtEZXZpY2VTaXplIGdldE1pbkltcG9ydGVkSG9zdFBvaW50ZXJB
bGlnbm1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1NaW5JbXBvcnRlZEhvc3RQ
b2ludGVyQWxpZ25tZW50OworICAgIH0KKwogICAgIGJvb2wgaXNNb2NrSUNERW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1FbmFibGVkSUNEID09IHZrOjpJQ0Q6Ok1vY2s7IH0KIAogICAgIC8vIFF1
ZXJ5IHRoZSBmb3JtYXQgcHJvcGVydGllcyBmb3Igc2VsZWN0IGJpdHMgKGxpbmVhclRpbGluZ0Zl
YXR1cmVzLCBvcHRpbWFsVGlsaW5nRmVhdHVyZXMgYW5kCkBAIC0xNjgsMTIgKzE3MSwyMyBAQCBj
bGFzcyBSZW5kZXJlclZrIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYW5nbGU6OlJlc3VsdCBx
dWV1ZVN1Ym1pdCh2azo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVnbDo6Q29udGV4dFByaW9yaXR5IHByaW9yaXR5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVmtTdWJtaXRJbmZvICZzdWJtaXRJbmZvLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OkZlbmNlICZmZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpGZW5jZSAqZmVuY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTZXJpYWwgKnNlcmlhbE91dCk7CiAgICAgYW5nbGU6OlJlc3VsdCBxdWV1
ZVdhaXRJZGxlKHZrOjpDb250ZXh0ICpjb250ZXh0LCBlZ2w6OkNvbnRleHRQcmlvcml0eSBwcmlv
cml0eSk7CiAgICAgYW5nbGU6OlJlc3VsdCBkZXZpY2VXYWl0SWRsZSh2azo6Q29udGV4dCAqY29u
dGV4dCk7CiAgICAgVmtSZXN1bHQgcXVldWVQcmVzZW50KGVnbDo6Q29udGV4dFByaW9yaXR5IHBy
aW9yaXR5LCBjb25zdCBWa1ByZXNlbnRJbmZvS0hSICZwcmVzZW50SW5mbyk7CiAKKyAgICAvLyBU
aGlzIGNvbW1hbmQgYnVmZmVyIHNob3VsZCBiZSBzdWJtaXR0ZWQgaW1tZWRpYXRlbHkgdmlhIHF1
ZXVlU3VibWl0T25lT2ZmLgorICAgIGFuZ2xlOjpSZXN1bHQgZ2V0Q29tbWFuZEJ1ZmZlck9uZU9m
Zih2azo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyT3V0KTsKKwor
ICAgIC8vIEZpcmUgb2ZmIGEgc2luZ2xlIGNvbW1hbmQgYnVmZmVyIGltbWVkaWF0ZWx5IHdpdGgg
ZGVmYXVsdCBwcmlvcml0eS4KKyAgICAvLyBDb21tYW5kIGJ1ZmZlciBtdXN0IGJlIGFsbG9jYXRl
ZCB3aXRoIGdldENvbW1hbmRCdWZmZXJPbmVPZmYgYW5kIGlzIHJlY2xhaW1lZC4KKyAgICBhbmds
ZTo6UmVzdWx0IHF1ZXVlU3VibWl0T25lT2ZmKHZrOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICYm
cHJpbWFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6Q29udGV4
dFByaW9yaXR5IHByaW9yaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2VyaWFsICpzZXJpYWxPdXQpOworCiAgICAgYW5nbGU6OlJlc3VsdCBuZXdTaGFyZWRGZW5jZSh2
azo6Q29udGV4dCAqY29udGV4dCwgdms6OlNoYXJlZDx2azo6RmVuY2U+ICpzaGFyZWRGZW5jZU91
dCk7CiAgICAgaW5saW5lIHZvaWQgcmVzZXRTaGFyZWRGZW5jZSh2azo6U2hhcmVkPHZrOjpGZW5j
ZT4gKnNoYXJlZEZlbmNlSW4pCiAgICAgewpAQCAtMjAwLDcgKzIxNCwxMCBAQCBjbGFzcyBSZW5k
ZXJlclZrIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKHZr
OjpTaGFyZWRSZXNvdXJjZVVzZSAmJnVzZSwgc3RkOjp2ZWN0b3I8dms6OkdhcmJhZ2VPYmplY3Q+
ICYmc2hhcmVkR2FyYmFnZSkKICAgICB7Ci0gICAgICAgIG1TaGFyZWRHYXJiYWdlLmVtcGxhY2Vf
YmFjayhzdGQ6Om1vdmUodXNlKSwgc3RkOjptb3ZlKHNoYXJlZEdhcmJhZ2UpKTsKKyAgICAgICAg
aWYgKCFzaGFyZWRHYXJiYWdlLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TaGFy
ZWRHYXJiYWdlLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUodXNlKSwgc3RkOjptb3ZlKHNoYXJlZEdh
cmJhZ2UpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGtNYXhFeHRlbnNpb25OYW1lcyA9IDIwMDsKQEAgLTIyNCwxMyArMjQxLDE1IEBAIGNsYXNzIFJl
bmRlcmVyVmsgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgcmV0dXJuIChtU2hhcmVkR2Fy
YmFnZS5zaXplKCkgPiBtR2FyYmFnZUNvbGxlY3Rpb25GbHVzaFRocmVzaG9sZCk7CiAgICAgfQog
CisgICAgYm9vbCBlbmFibGVEZWJ1Z1V0aWxzKCkgY29uc3QgeyByZXR1cm4gbUVuYWJsZURlYnVn
VXRpbHM7IH0KKwogICBwcml2YXRlOgogICAgIGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZURldmlj
ZShEaXNwbGF5VmsgKmRpc3BsYXlWaywgdWludDMyX3QgcXVldWVGYW1pbHlJbmRleCk7CiAgICAg
dm9pZCBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgcXVlcnlEZXZp
Y2VFeHRlbnNpb25GZWF0dXJlcyhjb25zdCBFeHRlbnNpb25OYW1lTGlzdCAmZGV2aWNlRXh0ZW5z
aW9uTmFtZXMpOwogCi0gICAgdm9pZCBpbml0RmVhdHVyZXMoY29uc3QgRXh0ZW5zaW9uTmFtZUxp
c3QgJmV4dGVuc2lvbnMpOworICAgIHZvaWQgaW5pdEZlYXR1cmVzKERpc3BsYXlWayAqZGlzcGxh
eSwgY29uc3QgRXh0ZW5zaW9uTmFtZUxpc3QgJmV4dGVuc2lvbnMpOwogICAgIHZvaWQgaW5pdFBp
cGVsaW5lQ2FjaGVWa0tleSgpOwogICAgIGFuZ2xlOjpSZXN1bHQgaW5pdFBpcGVsaW5lQ2FjaGUo
RGlzcGxheVZrICpkaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dms6OlBpcGVsaW5lQ2FjaGUgKnBpcGVsaW5lQ2FjaGUsCkBAIC0yNTIsMTEgKzI3MSwxMSBAQCBj
bGFzcyBSZW5kZXJlclZrIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgbXV0YWJsZSBnbDo6VGV4
dHVyZUNhcHNNYXAgbU5hdGl2ZVRleHR1cmVDYXBzOwogICAgIG11dGFibGUgZ2w6OkV4dGVuc2lv
bnMgbU5hdGl2ZUV4dGVuc2lvbnM7CiAgICAgbXV0YWJsZSBnbDo6TGltaXRhdGlvbnMgbU5hdGl2
ZUxpbWl0YXRpb25zOwotICAgIG11dGFibGUgYm9vbCBtRmVhdHVyZXNJbml0aWFsaXplZDsKICAg
ICBtdXRhYmxlIGFuZ2xlOjpGZWF0dXJlc1ZrIG1GZWF0dXJlczsKIAogICAgIFZrSW5zdGFuY2Ug
bUluc3RhbmNlOwogICAgIGJvb2wgbUVuYWJsZVZhbGlkYXRpb25MYXllcnM7CisgICAgYm9vbCBt
RW5hYmxlRGVidWdVdGlsczsKICAgICB2azo6SUNEIG1FbmFibGVkSUNEOwogICAgIFZrRGVidWdV
dGlsc01lc3NlbmdlckVYVCBtRGVidWdVdGlsc01lc3NlbmdlcjsKICAgICBWa0RlYnVnUmVwb3J0
Q2FsbGJhY2tFWFQgbURlYnVnUmVwb3J0Q2FsbGJhY2s7CkBAIC0yNjgsNyArMjg3LDkgQEAgY2xh
c3MgUmVuZGVyZXJWayA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIFZrUGh5c2ljYWxEZXZpY2VW
ZXJ0ZXhBdHRyaWJ1dGVEaXZpc29yRmVhdHVyZXNFWFQgbVZlcnRleEF0dHJpYnV0ZURpdmlzb3JG
ZWF0dXJlczsKICAgICBWa1BoeXNpY2FsRGV2aWNlVmVydGV4QXR0cmlidXRlRGl2aXNvclByb3Bl
cnRpZXNFWFQgbVZlcnRleEF0dHJpYnV0ZURpdmlzb3JQcm9wZXJ0aWVzOwogICAgIFZrUGh5c2lj
YWxEZXZpY2VUcmFuc2Zvcm1GZWVkYmFja0ZlYXR1cmVzRVhUIG1UcmFuc2Zvcm1GZWVkYmFja0Zl
YXR1cmVzOworICAgIFZrUGh5c2ljYWxEZXZpY2VJbmRleFR5cGVVaW50OEZlYXR1cmVzRVhUIG1J
bmRleFR5cGVVaW50OEZlYXR1cmVzOwogICAgIFZrUGh5c2ljYWxEZXZpY2VTdWJncm91cFByb3Bl
cnRpZXMgbVBoeXNpY2FsRGV2aWNlU3ViZ3JvdXBQcm9wZXJ0aWVzOworICAgIFZrUGh5c2ljYWxE
ZXZpY2VFeHRlcm5hbE1lbW9yeUhvc3RQcm9wZXJ0aWVzRVhUIG1QaHlzaWNhbERldmljZUV4dGVy
bmFsTWVtb3J5SG9zdFByb3BlcnRpZXM7CiAgICAgc3RkOjp2ZWN0b3I8VmtRdWV1ZUZhbWlseVBy
b3BlcnRpZXM+IG1RdWV1ZUZhbWlseVByb3BlcnRpZXM7CiAgICAgc3RkOjptdXRleCBtUXVldWVN
dXRleDsKICAgICBhbmdsZTo6UGFja2VkRW51bU1hcDxlZ2w6OkNvbnRleHRQcmlvcml0eSwgVmtR
dWV1ZT4gbVF1ZXVlczsKQEAgLTI3Niw2ICsyOTcsNyBAQCBjbGFzcyBSZW5kZXJlclZrIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgdWludDMyX3QgbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4Owog
ICAgIHVpbnQzMl90IG1NYXhWZXJ0ZXhBdHRyaWJEaXZpc29yOwogICAgIFZrRGV2aWNlU2l6ZSBt
TWF4VmVydGV4QXR0cmliU3RyaWRlOworICAgIFZrRGV2aWNlU2l6ZSBtTWluSW1wb3J0ZWRIb3N0
UG9pbnRlckFsaWdubWVudDsKICAgICBWa0RldmljZSBtRGV2aWNlOwogICAgIEF0b21pY1Nlcmlh
bEZhY3RvcnkgbVF1ZXVlU2VyaWFsRmFjdG9yeTsKICAgICBBdG9taWNTZXJpYWxGYWN0b3J5IG1T
aGFkZXJTZXJpYWxGYWN0b3J5OwpAQCAtMzIxLDYgKzM0MywxOSBAQCBjbGFzcyBSZW5kZXJlclZr
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUga1BlcmNl
bnRNYXhNZW1vcnlBbGxvY2F0aW9uQ291bnQgPSAwLjM7CiAgICAgLy8gSG93IG1hbnkgb2JqZWN0
cyB0byBnYXJiYWdlIGNvbGxlY3QgYmVmb3JlIGlzc3VpbmcgYSBmbHVzaCgpCiAgICAgdWludDMy
X3QgbUdhcmJhZ2VDb2xsZWN0aW9uRmx1c2hUaHJlc2hvbGQ7CisKKyAgICAvLyBPbmx5IHVzZWQg
Zm9yICJvbmUgb2ZmIiBjb21tYW5kIGJ1ZmZlcnMuCisgICAgdms6OkNvbW1hbmRQb29sIG1PbmVP
ZmZDb21tYW5kUG9vbDsKKworICAgIHN0cnVjdCBQZW5kaW5nT25lT2ZmQ29tbWFuZHMKKyAgICB7
CisgICAgICAgIFNlcmlhbCBzZXJpYWw7CisgICAgICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZl
ciBjb21tYW5kQnVmZmVyOworICAgIH07CisgICAgc3RkOjpkZXF1ZTxQZW5kaW5nT25lT2ZmQ29t
bWFuZHM+IG1QZW5kaW5nT25lT2ZmQ29tbWFuZHM7CisKKyAgICAvLyB0cmFjayB3aGV0aGVyIHdl
IGluaXRpYWxpemVkIChvciByZWxlYXNlZCkgZ2xzbGFuZworICAgIGJvb2wgbUdsc2xhbmdJbml0
aWFsaXplZDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
UmVzb3VyY2VWay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZmYyODYxZTAzZDQ0NmI3MjBiMjkwYzc3ZGFl
YzRmZjY1ZGUwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5jcHAKQEAgLTAsMCArMSw5OCBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIFJlc291cmNlOgorLy8gICAgUmVzb3VyY2UgbGlmZXRpbWUgdHJhY2tp
bmcgaW4gdGhlIFZ1bGthbiBiYWNrLWVuZC4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUmVzb3VyY2VWay5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0NvbnRleHRWay5oIgorCituYW1lc3BhY2UgcngKK3sKK25hbWVzcGFjZSB2aworewor
Ly8gUmVzb3VyY2UgaW1wbGVtZW50YXRpb24uCitSZXNvdXJjZTo6UmVzb3VyY2UoKQoreworICAg
IG1Vc2UuaW5pdCgpOworfQorCitSZXNvdXJjZTo6flJlc291cmNlKCkKK3sKKyAgICBtVXNlLnJl
bGVhc2UoKTsKK30KKworYW5nbGU6OlJlc3VsdCBSZXNvdXJjZTo6ZmluaXNoUnVubmluZ0NvbW1h
bmRzKENvbnRleHRWayAqY29udGV4dFZrKQoreworICAgIHJldHVybiBjb250ZXh0VmstPmZpbmlz
aFRvU2VyaWFsKG1Vc2UuZ2V0U2VyaWFsKCkpOworfQorCisvLyBTaGFyZWRHYXJiYWdlIGltcGxl
bWVudGF0aW9uLgorU2hhcmVkR2FyYmFnZTo6U2hhcmVkR2FyYmFnZSgpID0gZGVmYXVsdDsKKwor
U2hhcmVkR2FyYmFnZTo6U2hhcmVkR2FyYmFnZShTaGFyZWRHYXJiYWdlICYmb3RoZXIpCit7Cisg
ICAgKnRoaXMgPSBzdGQ6Om1vdmUob3RoZXIpOworfQorCitTaGFyZWRHYXJiYWdlOjpTaGFyZWRH
YXJiYWdlKFNoYXJlZFJlc291cmNlVXNlICYmdXNlLCBzdGQ6OnZlY3RvcjxHYXJiYWdlT2JqZWN0
PiAmJmdhcmJhZ2UpCisgICAgOiBtTGlmZXRpbWUoc3RkOjptb3ZlKHVzZSkpLCBtR2FyYmFnZShz
dGQ6Om1vdmUoZ2FyYmFnZSkpCit7fQorCitTaGFyZWRHYXJiYWdlOjp+U2hhcmVkR2FyYmFnZSgp
ID0gZGVmYXVsdDsKKworU2hhcmVkR2FyYmFnZSAmU2hhcmVkR2FyYmFnZTo6b3BlcmF0b3I9KFNo
YXJlZEdhcmJhZ2UgJiZyaHMpCit7CisgICAgc3RkOjpzd2FwKG1MaWZldGltZSwgcmhzLm1MaWZl
dGltZSk7CisgICAgc3RkOjpzd2FwKG1HYXJiYWdlLCByaHMubUdhcmJhZ2UpOworICAgIHJldHVy
biAqdGhpczsKK30KKworYm9vbCBTaGFyZWRHYXJiYWdlOjpkZXN0cm95SWZDb21wbGV0ZShWa0Rl
dmljZSBkZXZpY2UsIFNlcmlhbCBjb21wbGV0ZWRTZXJpYWwpCit7CisgICAgaWYgKG1MaWZldGlt
ZS5pc0N1cnJlbnRseUluVXNlKGNvbXBsZXRlZFNlcmlhbCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIG1MaWZldGltZS5yZWxlYXNlKCk7CisKKyAgICBmb3IgKEdhcmJhZ2VPYmplY3Qg
Jm9iamVjdCA6IG1HYXJiYWdlKQorICAgIHsKKyAgICAgICAgb2JqZWN0LmRlc3Ryb3koZGV2aWNl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUmVzb3VyY2VVc2VMaXN0IGlt
cGxlbWVudGF0aW9uLgorUmVzb3VyY2VVc2VMaXN0OjpSZXNvdXJjZVVzZUxpc3QoKSA9IGRlZmF1
bHQ7CisKK1Jlc291cmNlVXNlTGlzdDo6flJlc291cmNlVXNlTGlzdCgpCit7CisgICAgQVNTRVJU
KG1SZXNvdXJjZVVzZXMuZW1wdHkoKSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VVc2VMaXN0OjpyZWxl
YXNlUmVzb3VyY2VVc2VzKCkKK3sKKyAgICBmb3IgKFNoYXJlZFJlc291cmNlVXNlICZ1c2UgOiBt
UmVzb3VyY2VVc2VzKQorICAgIHsKKyAgICAgICAgdXNlLnJlbGVhc2UoKTsKKyAgICB9CisKKyAg
ICBtUmVzb3VyY2VVc2VzLmNsZWFyKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VVc2VMaXN0OjpyZWxl
YXNlUmVzb3VyY2VVc2VzQW5kVXBkYXRlU2VyaWFscyhTZXJpYWwgc2VyaWFsKQoreworICAgIGZv
ciAoU2hhcmVkUmVzb3VyY2VVc2UgJnVzZSA6IG1SZXNvdXJjZVVzZXMpCisgICAgeworICAgICAg
ICB1c2UucmVsZWFzZUFuZFVwZGF0ZVNlcmlhbChzZXJpYWwpOworICAgIH0KKworICAgIG1SZXNv
dXJjZVVzZXMuY2xlYXIoKTsKK30KK30gIC8vIG5hbWVzcGFjZSB2aworfSAgLy8gbmFtZXNwYWNl
IHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1Jlc291cmNlVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YjdiMmZj
MDNiODY2ODgxMjFjNWI0M2JmMjA1NDBmNWM4Y2M5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jlc291cmNl
VmsuaApAQCAtMCwwICsxLDIwMCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE3IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlc291cmNlVms6CisvLyAgICBS
ZXNvdXJjZSBsaWZldGltZSB0cmFja2luZyBpbiB0aGUgVnVsa2FuIGJhY2stZW5kLgorLy8KKwor
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUkVTT1VSQ0VWS19IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUkVTT1VSQ0VWS19IXworCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3V0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworbmFtZXNw
YWNlIHZrCit7CisvLyBUcmFja3MgaG93IGEgcmVzb3VyY2UgaXMgdXNlZCBieSBBTkdMRSBhbmQg
YnkgYSBWa1F1ZXVlLiBUaGUgcmVmZXJlbmNlIGNvdW50IGluZGljYXRlcyB0aGUgbnVtYmVyCisv
LyBvZiB0aW1lcyBhIHJlc291cmNlIGlzIHJldGFpbmVkIGJ5IEFOR0xFLiBUaGUgc2VyaWFsIGlu
ZGljYXRlcyB0aGUgbW9zdCByZWNlbnQgdXNlIG9mIGEgcmVzb3VyY2UKKy8vIGluIHRoZSBWa1F1
ZXVlLiBUaGUgcmVmZXJlbmNlIGNvdW50IGFuZCBzZXJpYWwgdG9nZXRoZXIgY2FuIGRldGVybWlu
ZSBpZiBhIHJlc291cmNlIGlzIGN1cnJlbnRseQorLy8gaW4gdXNlLgorc3RydWN0IFJlc291cmNl
VXNlCit7CisgICAgUmVzb3VyY2VVc2UoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBUaGUgbnVtYmVy
IG9mIHRpbWVzIGEgcmVzb3VyY2UgaXMgcmV0YWluZWQgYnkgQU5HTEUuCisgICAgdWludDMyX3Qg
Y291bnRlciA9IDA7CisKKyAgICAvLyBUaGUgbW9zdCByZWNlbnQgdGltZSBvZiB1c2UgaW4gYSBW
a1F1ZXVlLgorICAgIFNlcmlhbCBzZXJpYWw7Cit9OworCitjbGFzcyBTaGFyZWRSZXNvdXJjZVVz
ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgU2hhcmVkUmVz
b3VyY2VVc2UoKSA6IG1Vc2UobnVsbHB0cikge30KKyAgICB+U2hhcmVkUmVzb3VyY2VVc2UoKSB7
IEFTU0VSVCghdmFsaWQoKSk7IH0KKyAgICBTaGFyZWRSZXNvdXJjZVVzZShTaGFyZWRSZXNvdXJj
ZVVzZSAmJnJocykgOiBtVXNlKHJocy5tVXNlKSB7IHJocy5tVXNlID0gbnVsbHB0cjsgfQorICAg
IFNoYXJlZFJlc291cmNlVXNlICZvcGVyYXRvcj0oU2hhcmVkUmVzb3VyY2VVc2UgJiZyaHMpCisg
ICAgeworICAgICAgICBzdGQ6OnN3YXAobVVzZSwgcmhzLm1Vc2UpOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorCisgICAgQU5HTEVfSU5MSU5FIGJvb2wgdmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtVXNlICE9IG51bGxwdHI7IH0KKworICAgIHZvaWQgaW5pdCgpCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1Vc2UpOworICAgICAgICBtVXNlID0gbmV3IFJlc291cmNlVXNlOworICAgICAg
ICBtVXNlLT5jb3VudGVyKys7CisgICAgfQorCisgICAgLy8gU3BlY2lmaWNhbGx5IGZvciB1c2Ug
d2l0aCBjb21tYW5kIGJ1ZmZlcnMgdGhhdCBhcmUgdXNlZCBhcyBvbmUtb2Zmcy4KKyAgICB2b2lk
IHVwZGF0ZVNlcmlhbE9uZU9mZihTZXJpYWwgc2VyaWFsKSB7IG1Vc2UtPnNlcmlhbCA9IHNlcmlh
bDsgfQorCisgICAgQU5HTEVfSU5MSU5FIHZvaWQgcmVsZWFzZSgpCisgICAgeworICAgICAgICBB
U1NFUlQodmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChtVXNlLT5jb3VudGVyID4gMCk7CisgICAg
ICAgIGlmICgtLW1Vc2UtPmNvdW50ZXIgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVs
ZXRlIG1Vc2U7CisgICAgICAgIH0KKyAgICAgICAgbVVzZSA9IG51bGxwdHI7CisgICAgfQorCisg
ICAgQU5HTEVfSU5MSU5FIHZvaWQgcmVsZWFzZUFuZFVwZGF0ZVNlcmlhbChTZXJpYWwgc2VyaWFs
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKCkpOworICAgICAgICBBU1NFUlQobVVzZS0+
Y291bnRlciA+IDApOworICAgICAgICBBU1NFUlQobVVzZS0+c2VyaWFsIDw9IHNlcmlhbCk7Cisg
ICAgICAgIG1Vc2UtPnNlcmlhbCA9IHNlcmlhbDsKKyAgICAgICAgcmVsZWFzZSgpOworICAgIH0K
KworICAgIEFOR0xFX0lOTElORSB2b2lkIHNldChjb25zdCBTaGFyZWRSZXNvdXJjZVVzZSAmcmhz
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJocy52YWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKCF2
YWxpZCgpKTsKKyAgICAgICAgQVNTRVJUKHJocy5tVXNlLT5jb3VudGVyIDwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgbVVzZSA9IHJocy5tVXNlOworICAg
ICAgICBtVXNlLT5jb3VudGVyKys7CisgICAgfQorCisgICAgLy8gVGhlIGJhc2UgY291bnRlciB2
YWx1ZSBmb3IgYSBsaXZlIHJlc291cmNlIGlzICIxIi4gQW55IHZhbHVlIGdyZWF0ZXIgdGhhbiBv
bmUgaW5kaWNhdGVzCisgICAgLy8gdGhlIHJlc291cmNlIGlzIGluIHVzZSBieSBhIGNvbW1hbmQg
YnVmZmVyLgorICAgIEFOR0xFX0lOTElORSBib29sIHVzZWRJblJlY29yZGVkQ29tbWFuZHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKCkpOworICAgICAgICByZXR1cm4gbVVz
ZS0+Y291bnRlciA+IDE7CisgICAgfQorCisgICAgQU5HTEVfSU5MSU5FIGJvb2wgdXNlZEluUnVu
bmluZ0NvbW1hbmRzKFNlcmlhbCBsYXN0Q29tcGxldGVkU2VyaWFsKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHZhbGlkKCkpOworICAgICAgICByZXR1cm4gbVVzZS0+c2VyaWFsID4gbGFz
dENvbXBsZXRlZFNlcmlhbDsKKyAgICB9CisKKyAgICBBTkdMRV9JTkxJTkUgYm9vbCBpc0N1cnJl
bnRseUluVXNlKFNlcmlhbCBsYXN0Q29tcGxldGVkU2VyaWFsKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHVzZWRJblJlY29yZGVkQ29tbWFuZHMoKSB8fCB1c2VkSW5SdW5uaW5nQ29tbWFu
ZHMobGFzdENvbXBsZXRlZFNlcmlhbCk7CisgICAgfQorCisgICAgQU5HTEVfSU5MSU5FIFNlcmlh
bCBnZXRTZXJpYWwoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKCkpOworICAg
ICAgICByZXR1cm4gbVVzZS0+c2VyaWFsOworICAgIH0KKworICBwcml2YXRlOgorICAgIFJlc291
cmNlVXNlICptVXNlOworfTsKKworY2xhc3MgU2hhcmVkR2FyYmFnZQoreworICBwdWJsaWM6Cisg
ICAgU2hhcmVkR2FyYmFnZSgpOworICAgIFNoYXJlZEdhcmJhZ2UoU2hhcmVkR2FyYmFnZSAmJm90
aGVyKTsKKyAgICBTaGFyZWRHYXJiYWdlKFNoYXJlZFJlc291cmNlVXNlICYmdXNlLCBzdGQ6OnZl
Y3RvcjxHYXJiYWdlT2JqZWN0PiAmJmdhcmJhZ2UpOworICAgIH5TaGFyZWRHYXJiYWdlKCk7Cisg
ICAgU2hhcmVkR2FyYmFnZSAmb3BlcmF0b3I9KFNoYXJlZEdhcmJhZ2UgJiZyaHMpOworCisgICAg
Ym9vbCBkZXN0cm95SWZDb21wbGV0ZShWa0RldmljZSBkZXZpY2UsIFNlcmlhbCBjb21wbGV0ZWRT
ZXJpYWwpOworCisgIHByaXZhdGU6CisgICAgU2hhcmVkUmVzb3VyY2VVc2UgbUxpZmV0aW1lOwor
ICAgIHN0ZDo6dmVjdG9yPEdhcmJhZ2VPYmplY3Q+IG1HYXJiYWdlOworfTsKKwordXNpbmcgU2hh
cmVkR2FyYmFnZUxpc3QgPSBzdGQ6OnZlY3RvcjxTaGFyZWRHYXJiYWdlPjsKKworLy8gTWl4aW4g
dG8gYWJzdHJhY3QgYXdheSB0aGUgcmVzb3VyY2UgdXNlIHRyYWNraW5nLgorY2xhc3MgUmVzb3Vy
Y2VVc2VMaXN0IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBS
ZXNvdXJjZVVzZUxpc3QoKTsKKyAgICB2aXJ0dWFsIH5SZXNvdXJjZVVzZUxpc3QoKTsKKworICAg
IHZvaWQgYWRkKGNvbnN0IFNoYXJlZFJlc291cmNlVXNlICZyZXNvdXJjZVVzZSk7CisKKyAgICB2
b2lkIHJlbGVhc2VSZXNvdXJjZVVzZXMoKTsKKyAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZVVzZXNB
bmRVcGRhdGVTZXJpYWxzKFNlcmlhbCBzZXJpYWwpOworCisgIHByaXZhdGU6CisgICAgc3RkOjp2
ZWN0b3I8U2hhcmVkUmVzb3VyY2VVc2U+IG1SZXNvdXJjZVVzZXM7Cit9OworCitBTkdMRV9JTkxJ
TkUgdm9pZCBSZXNvdXJjZVVzZUxpc3Q6OmFkZChjb25zdCBTaGFyZWRSZXNvdXJjZVVzZSAmcmVz
b3VyY2VVc2UpCit7CisgICAgU2hhcmVkUmVzb3VyY2VVc2UgbmV3VXNlOworICAgIG5ld1VzZS5z
ZXQocmVzb3VyY2VVc2UpOworICAgIG1SZXNvdXJjZVVzZXMuZW1wbGFjZV9iYWNrKHN0ZDo6bW92
ZShuZXdVc2UpKTsKK30KKworLy8gVGhpcyBpcyBhIGhlbHBlciBjbGFzcyBmb3IgYmFjay1lbmQg
b2JqZWN0cyB1c2VkIGluIFZrIGNvbW1hbmQgYnVmZmVycy4gVGhleSBrZWVwIGEgcmVjb3JkCisv
LyBvZiB0aGVpciB1c2UgaW4gQU5HTEUgYW5kIFZrUXVldWVzIHZpYSBTaGFyZWRSZXNvdXJjZVVz
ZS4KK2NsYXNzIFJlc291cmNlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5SZXNvdXJjZSgpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSByZXNv
dXJjZSBpcyB1c2VkIGJ5IEFOR0xFIGluIGFuIHVuZmx1c2hlZCBjb21tYW5kIGJ1ZmZlci4KKyAg
ICBib29sIHVzZWRJblJlY29yZGVkQ29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBtVXNlLnVzZWRJ
blJlY29yZGVkQ29tbWFuZHMoKTsgfQorCisgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBkcml2ZXIg
aGFzIGZpbmlzaGVkIGV4ZWN1dGlvbiB3aXRoIHRoaXMgcmVzb3VyY2UuCisgICAgYm9vbCB1c2Vk
SW5SdW5uaW5nQ29tbWFuZHMoU2VyaWFsIGxhc3RDb21wbGV0ZWRTZXJpYWwpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbVVzZS51c2VkSW5SdW5uaW5nQ29tbWFuZHMobGFzdENvbXBsZXRl
ZFNlcmlhbCk7CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSByZXNvdXJjZSBp
cyBpbiB1c2UgYnkgQU5HTEUgb3IgdGhlIGRyaXZlci4KKyAgICBib29sIGlzQ3VycmVudGx5SW5V
c2UoU2VyaWFsIGxhc3RDb21wbGV0ZWRTZXJpYWwpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbVVzZS5pc0N1cnJlbnRseUluVXNlKGxhc3RDb21wbGV0ZWRTZXJpYWwpOworICAgIH0KKwor
ICAgIC8vIEVuc3VyZXMgdGhlIGRyaXZlciBpcyBjYXVnaHQgdXAgdG8gdGhpcyByZXNvdXJjZSBh
bmQgaXQgaXMgb25seSBpbiB1c2UgYnkgQU5HTEUuCisgICAgYW5nbGU6OlJlc3VsdCBmaW5pc2hS
dW5uaW5nQ29tbWFuZHMoQ29udGV4dFZrICpjb250ZXh0VmspOworCisgICAgLy8gQWRkcyB0aGUg
cmVzb3VyY2UgdG8gYSByZXNvdXJjZSB1c2UgbGlzdC4KKyAgICB2b2lkIHJldGFpbihSZXNvdXJj
ZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCk7CisKKyAgcHJvdGVjdGVkOgorICAgIFJlc291cmNl
KCk7CisKKyAgICAvLyBDdXJyZW50IHJlc291cmNlIGxpZmV0aW1lLgorICAgIFNoYXJlZFJlc291
cmNlVXNlIG1Vc2U7Cit9OworCitBTkdMRV9JTkxJTkUgdm9pZCBSZXNvdXJjZTo6cmV0YWluKFJl
c291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KQoreworICAgIC8vIFN0b3JlIHJlZmVyZW5j
ZSBpbiByZXNvdXJjZSBsaXN0LgorICAgIHJlc291cmNlVXNlTGlzdC0+YWRkKG1Vc2UpOworfQor
fSAgLy8gbmFtZXNwYWNlIHZrCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fUkVTT1VSQ0VWS19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Ft
cGxlclZrLmgKaW5kZXggZmQ5MmMzZjA2YjY5NDUyNWEyOWQ4NzNjMjAwMWFjMzUwNmJlMjZhNS4u
MjhjOTExZjY0ZmU4M2IzMWZmNThjYzE3NTQxZTRjNjliNDQyNzVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVy
VmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1NhbXBsZXJWay5oCkBAIC0zNCwxMCArMzQsNyBAQCBjbGFzcyBTYW1wbGVyVmsgOiBw
dWJsaWMgU2FtcGxlckltcGwKIAogICAgIFNlcmlhbCBnZXRTZXJpYWwoKSBjb25zdCB7IHJldHVy
biBtU2VyaWFsOyB9CiAKLSAgICB2b2lkIG9uU2FtcGxlckFjY2Vzcyh2azo6UmVzb3VyY2VVc2VM
aXN0ICpyZXNvdXJjZVVzZUxpc3QpCi0gICAgewotICAgICAgICBtU2FtcGxlci5vblJlc291cmNl
QWNjZXNzKHJlc291cmNlVXNlTGlzdCk7Ci0gICAgfQorICAgIHZvaWQgcmV0YWluKHZrOjpSZXNv
dXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCkgeyBtU2FtcGxlci5yZXRhaW4ocmVzb3VyY2VV
c2VMaXN0KTsgfQogCiAgIHByaXZhdGU6CiAgICAgdms6OlNhbXBsZXJIZWxwZXIgbVNhbXBsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1NlY29uZGFyeUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZWNvbmRhcnlDb21tYW5kQnVmZmVy
LmNwcAppbmRleCA4MDI1N2EwMDc4ZmQ4NWI0MzkyYTc2MjVjOWRkNzJmY2VkNDVjNDVjLi5jY2Ji
MzQzMzNhYzIwMWE2N2QwMjk5OWE1ODE2NWFjNzk3OThmZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NlY29uZGFyeUNv
bW1hbmRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5jcHAKQEAgLTE3LDYgKzE3
LDEwMyBAQCBuYW1lc3BhY2UgdmsKIHsKIG5hbWVzcGFjZSBwcml2CiB7CituYW1lc3BhY2UKK3sK
K2NvbnN0IGNoYXIgKkdldENvbW1hbmRTdHJpbmcoQ29tbWFuZElEIGlkKQoreworICAgIHN3aXRj
aCAoaWQpCisgICAgeworICAgICAgICBjYXNlIENvbW1hbmRJRDo6SW52YWxpZDoKKyAgICAgICAg
ICAgIHJldHVybiAiLS1JbnZhbGlkLS0iOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6QmVnaW5R
dWVyeToKKyAgICAgICAgICAgIHJldHVybiAiQmVnaW5RdWVyeSI7CisgICAgICAgIGNhc2UgQ29t
bWFuZElEOjpCaW5kQ29tcHV0ZVBpcGVsaW5lOgorICAgICAgICAgICAgcmV0dXJuICJCaW5kQ29t
cHV0ZVBpcGVsaW5lIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmREZXNjcmlwdG9yU2V0
czoKKyAgICAgICAgICAgIHJldHVybiAiQmluZERlc2NyaXB0b3JTZXRzIjsKKyAgICAgICAgY2Fz
ZSBDb21tYW5kSUQ6OkJpbmRHcmFwaGljc1BpcGVsaW5lOgorICAgICAgICAgICAgcmV0dXJuICJC
aW5kR3JhcGhpY3NQaXBlbGluZSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCaW5kSW5kZXhC
dWZmZXI6CisgICAgICAgICAgICByZXR1cm4gIkJpbmRJbmRleEJ1ZmZlciI7CisgICAgICAgIGNh
c2UgQ29tbWFuZElEOjpCaW5kVmVydGV4QnVmZmVyczoKKyAgICAgICAgICAgIHJldHVybiAiQmlu
ZFZlcnRleEJ1ZmZlcnMiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6QmluZFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyczoKKyAgICAgICAgICAgIHJldHVybiAiQmluZFRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVycyI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCbGl0SW1hZ2U6CisgICAgICAgICAg
ICByZXR1cm4gIkJsaXRJbWFnZSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCdWZmZXJCYXJy
aWVyOgorICAgICAgICAgICAgcmV0dXJuICJCdWZmZXJCYXJyaWVyIjsKKyAgICAgICAgY2FzZSBD
b21tYW5kSUQ6OkNsZWFyQXR0YWNobWVudHM6CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyQXR0
YWNobWVudHMiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6Q2xlYXJDb2xvckltYWdlOgorICAg
ICAgICAgICAgcmV0dXJuICJDbGVhckNvbG9ySW1hZ2UiOworICAgICAgICBjYXNlIENvbW1hbmRJ
RDo6Q2xlYXJEZXB0aFN0ZW5jaWxJbWFnZToKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXJEZXB0
aFN0ZW5jaWxJbWFnZSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDb3B5QnVmZmVyOgorICAg
ICAgICAgICAgcmV0dXJuICJDb3B5QnVmZmVyIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkNv
cHlCdWZmZXJUb0ltYWdlOgorICAgICAgICAgICAgcmV0dXJuICJDb3B5QnVmZmVyVG9JbWFnZSI7
CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDb3B5SW1hZ2U6CisgICAgICAgICAgICByZXR1cm4g
IkNvcHlJbWFnZSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDb3B5SW1hZ2VUb0J1ZmZlcjoK
KyAgICAgICAgICAgIHJldHVybiAiQ29weUltYWdlVG9CdWZmZXIiOworICAgICAgICBjYXNlIENv
bW1hbmRJRDo6RGlzcGF0Y2g6CisgICAgICAgICAgICByZXR1cm4gIkRpc3BhdGNoIjsKKyAgICAg
ICAgY2FzZSBDb21tYW5kSUQ6OkRpc3BhdGNoSW5kaXJlY3Q6CisgICAgICAgICAgICByZXR1cm4g
IkRpc3BhdGNoSW5kaXJlY3QiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJhdzoKKyAgICAg
ICAgICAgIHJldHVybiAiRHJhdyI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5kZXhl
ZDoKKyAgICAgICAgICAgIHJldHVybiAiRHJhd0luZGV4ZWQiOworICAgICAgICBjYXNlIENvbW1h
bmRJRDo6RHJhd0luZGV4ZWRCYXNlVmVydGV4OgorICAgICAgICAgICAgcmV0dXJuICJEcmF3SW5k
ZXhlZEJhc2VWZXJ0ZXgiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJhd0luZGV4ZWRJbnN0
YW5jZWQ6CisgICAgICAgICAgICByZXR1cm4gIkRyYXdJbmRleGVkSW5zdGFuY2VkIjsKKyAgICAg
ICAgY2FzZSBDb21tYW5kSUQ6OkRyYXdJbmRleGVkSW5zdGFuY2VkQmFzZVZlcnRleDoKKyAgICAg
ICAgICAgIHJldHVybiAiRHJhd0luZGV4ZWRJbnN0YW5jZWRCYXNlVmVydGV4IjsKKyAgICAgICAg
Y2FzZSBDb21tYW5kSUQ6OkRyYXdJbmRleGVkSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5j
ZToKKyAgICAgICAgICAgIHJldHVybiAiRHJhd0luZGV4ZWRJbnN0YW5jZWRCYXNlVmVydGV4QmFz
ZUluc3RhbmNlIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkRyYXdJbnN0YW5jZWQ6CisgICAg
ICAgICAgICByZXR1cm4gIkRyYXdJbnN0YW5jZWQiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6
RHJhd0luc3RhbmNlZEJhc2VJbnN0YW5jZToKKyAgICAgICAgICAgIHJldHVybiAiRHJhd0luc3Rh
bmNlZEJhc2VJbnN0YW5jZSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5kZXhlZElu
ZGlyZWN0OgorICAgICAgICAgICAgcmV0dXJuICJEcmF3SW5kZXhlZEluZGlyZWN0IjsKKyAgICAg
ICAgY2FzZSBDb21tYW5kSUQ6OkRyYXdJbmRpcmVjdDoKKyAgICAgICAgICAgIHJldHVybiAiRHJh
d0luZGlyZWN0IjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkVuZFF1ZXJ5OgorICAgICAgICAg
ICAgcmV0dXJuICJFbmRRdWVyeSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpFeGVjdXRpb25C
YXJyaWVyOgorICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRpb25CYXJyaWVyIjsKKyAgICAgICAg
Y2FzZSBDb21tYW5kSUQ6OkZpbGxCdWZmZXI6CisgICAgICAgICAgICByZXR1cm4gIkZpbGxCdWZm
ZXIiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6SW1hZ2VCYXJyaWVyOgorICAgICAgICAgICAg
cmV0dXJuICJJbWFnZUJhcnJpZXIiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6TWVtb3J5QmFy
cmllcjoKKyAgICAgICAgICAgIHJldHVybiAiTWVtb3J5QmFycmllciI7CisgICAgICAgIGNhc2Ug
Q29tbWFuZElEOjpQaXBlbGluZUJhcnJpZXI6CisgICAgICAgICAgICByZXR1cm4gIlBpcGVsaW5l
QmFycmllciI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpQdXNoQ29uc3RhbnRzOgorICAgICAg
ICAgICAgcmV0dXJuICJQdXNoQ29uc3RhbnRzIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlJl
c2V0RXZlbnQ6CisgICAgICAgICAgICByZXR1cm4gIlJlc2V0RXZlbnQiOworICAgICAgICBjYXNl
IENvbW1hbmRJRDo6UmVzZXRRdWVyeVBvb2w6CisgICAgICAgICAgICByZXR1cm4gIlJlc2V0UXVl
cnlQb29sIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlJlc29sdmVJbWFnZToKKyAgICAgICAg
ICAgIHJldHVybiAiUmVzb2x2ZUltYWdlIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlNldEV2
ZW50OgorICAgICAgICAgICAgcmV0dXJuICJTZXRFdmVudCI7CisgICAgICAgIGNhc2UgQ29tbWFu
ZElEOjpXYWl0RXZlbnRzOgorICAgICAgICAgICAgcmV0dXJuICJXYWl0RXZlbnRzIjsKKyAgICAg
ICAgY2FzZSBDb21tYW5kSUQ6OldyaXRlVGltZXN0YW1wOgorICAgICAgICAgICAgcmV0dXJuICJX
cml0ZVRpbWVzdGFtcCI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBOZWVkIHRo
aXMgdG8gd29yayBhcm91bmQgTVNWQyB3YXJuaW5nIDQ3MTUuCisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuICItLXVucmVhY2hhYmxlLS0iOworICAgIH0KK30K
K30gIC8vIG5hbWVzcGFjZQogCiBBTkdMRV9JTkxJTkUgY29uc3QgQ29tbWFuZEhlYWRlciAqTmV4
dENvbW1hbmQoY29uc3QgQ29tbWFuZEhlYWRlciAqY29tbWFuZCkKIHsKQEAgLTQxOSwxMzkgKzUx
NiwxNiBAQCB2b2lkIFNlY29uZGFyeUNvbW1hbmRCdWZmZXI6OmdldE1lbW9yeVVzYWdlU3RhdHMo
c2l6ZV90ICp1c2VkTWVtb3J5T3V0LAogCiBzdGQ6OnN0cmluZyBTZWNvbmRhcnlDb21tYW5kQnVm
ZmVyOjpkdW1wQ29tbWFuZHMoY29uc3QgY2hhciAqc2VwYXJhdG9yKSBjb25zdAogewotICAgIHN0
ZDo6c3RyaW5nIHJlc3VsdDsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSByZXN1bHQ7CiAgICAgZm9y
IChjb25zdCBDb21tYW5kSGVhZGVyICpjb21tYW5kIDogbUNvbW1hbmRzKQogICAgIHsKICAgICAg
ICAgZm9yIChjb25zdCBDb21tYW5kSGVhZGVyICpjdXJyZW50Q29tbWFuZCAgICAgICAgICAgICAg
ICAgICAgICA9IGNvbW1hbmQ7CiAgICAgICAgICAgICAgY3VycmVudENvbW1hbmQtPmlkICE9IENv
bW1hbmRJRDo6SW52YWxpZDsgY3VycmVudENvbW1hbmQgPSBOZXh0Q29tbWFuZChjdXJyZW50Q29t
bWFuZCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3I7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDb21tYW5kLT5pZCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6QmVnaW5RdWVyeToKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ICs9ICJCZWdpblF1ZXJ5IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmRDb21wdXRlUGlwZWxpbmU6Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQmluZENvbXB1dGVQaXBlbGluZSI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCaW5k
RGVzY3JpcHRvclNldHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQmluZERlc2Ny
aXB0b3JTZXRzIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDb21tYW5kSUQ6OkJpbmRHcmFwaGljc1BpcGVsaW5lOgotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgKz0gIkJpbmRHcmFwaGljc1BpcGVsaW5lIjsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmRJbmRleEJ1ZmZlcjoK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJCaW5kSW5kZXhCdWZmZXIiOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6Qmlu
ZFZlcnRleEJ1ZmZlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQmluZFZlcnRl
eEJ1ZmZlcnMiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENvbW1hbmRJRDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyczoKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ICs9ICJCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzIjsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJs
aXRJbWFnZToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJCbGl0SW1hZ2UiOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6
QnVmZmVyQmFycmllcjoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJCdWZmZXJCYXJy
aWVyIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
b21tYW5kSUQ6OkNsZWFyQXR0YWNobWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCAr
PSAiQ2xlYXJBdHRhY2htZW50cyI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDbGVhckNvbG9ySW1hZ2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSAiQ2xlYXJDb2xvckltYWdlIjsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkNsZWFyRGVwdGhTdGVuY2ls
SW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQ2xlYXJEZXB0aFN0ZW5jaWxJ
bWFnZSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q29tbWFuZElEOjpDb3B5QnVmZmVyOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkNv
cHlCdWZmZXIiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENvbW1hbmRJRDo6Q29weUJ1ZmZlclRvSW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPSAiQ29weUJ1ZmZlclRvSW1hZ2UiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6Q29weUltYWdlOgotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gIkNvcHlJbWFnZSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDb3B5SW1hZ2VUb0J1ZmZlcjoKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJDb3B5SW1hZ2VUb0J1ZmZlciI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEaXNw
YXRjaDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJEaXNwYXRjaCI7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEaXNw
YXRjaEluZGlyZWN0OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkRpc3BhdGNoSW5k
aXJlY3QiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IENvbW1hbmRJRDo6RHJhdzoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJEcmF3IjsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5k
SUQ6OkRyYXdJbmRleGVkOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkRyYXdJbmRl
eGVkIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
b21tYW5kSUQ6OkRyYXdJbmRleGVkQmFzZVZlcnRleDoKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ICs9ICJEcmF3SW5kZXhlZEJhc2VWZXJ0ZXgiOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJhd0luZGV4ZWRJbnN0YW5jZWQ6
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRHJhd0luZGV4ZWRJbnN0YW5jZWQiOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJ
RDo6RHJhd0luZGV4ZWRJbnN0YW5jZWRCYXNlVmVydGV4OgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gIkRyYXdJbmRleGVkSW5zdGFuY2VkQmFzZVZlcnRleCI7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5zdGFu
Y2VkOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkRyYXdJbnN0YW5jZWQiOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6
RHJhd0luZGV4ZWRJbmRpcmVjdDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJEcmF3
SW5kZXhlZEluZGlyZWN0IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDb21tYW5kSUQ6OkVuZFF1ZXJ5OgotICAgICAgICAgICAgICAgICAgICByZXN1
bHQgKz0gIkVuZFF1ZXJ5IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDb21tYW5kSUQ6OkV4ZWN1dGlvbkJhcnJpZXI6Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCArPSAiRXhlY3V0aW9uQmFycmllciI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpGaWxsQnVmZmVyOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgKz0gIkZpbGxCdWZmZXIiOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6SW1hZ2VCYXJyaWVyOgot
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkltYWdlQmFycmllciI7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpNZW1vcnlC
YXJyaWVyOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIk1lbW9yeUJhcnJpZXIiOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJ
RDo6UGlwZWxpbmVCYXJyaWVyOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlBpcGVs
aW5lQmFycmllciI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ29tbWFuZElEOjpQdXNoQ29uc3RhbnRzOgotICAgICAgICAgICAgICAgICAgICByZXN1
bHQgKz0gIlB1c2hDb25zdGFudHMiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6UmVzZXRFdmVudDoKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ICs9ICJSZXNldEV2ZW50IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlJlc2V0UXVlcnlQb29sOgotICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gIlJlc2V0UXVlcnlQb29sIjsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlJlc29sdmVJbWFnZToK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJSZXNvbHZlSW1hZ2UiOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6U2V0RXZl
bnQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiU2V0RXZlbnQiOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6V2FpdEV2
ZW50czoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJXYWl0RXZlbnRzIjsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6Oldy
aXRlVGltZXN0YW1wOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIldyaXRlVGltZXN0
YW1wIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiLS1pbnZhbGlkLS0iOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXN1bHQgPDwgR2V0Q29tbWFuZFN0cmluZyhjdXJyZW50Q29tbWFuZC0+aWQpIDw8
IHNlcGFyYXRvcjsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiByZXN1bHQuc3RyKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBwcml2CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Nl
Y29uZGFyeUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5oCmluZGV4IDQzODBi
YzM3MWZkZmVjNWYxOGY3YjEzMWZhNjk2NmQzMjE3ZjQ0NmQuLjQzOTgzOTc1MjMyYTkyMTk4Y2Ix
MGI0MDVjYzA1NGFhMjBkMWIyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
U2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5oCkBAIC00NTEsNyArNDUxLDcgQEAgY2xhc3MgU2Vjb25k
YXJ5Q29tbWFuZEJ1ZmZlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgdm9pZCBi
aW5kSW5kZXhCdWZmZXIoY29uc3QgQnVmZmVyICZidWZmZXIsIFZrRGV2aWNlU2l6ZSBvZmZzZXQs
IFZrSW5kZXhUeXBlIGluZGV4VHlwZSk7CiAKLSAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlcnMoc2l6ZV90IGJpbmRpbmdDb3VudCwKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnModWludDMyX3QgYmluZGluZ0NvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqYnVmZmVycywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtEZXZpY2VTaXplICpvZmZzZXRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZVNpemUgKnNp
emVzKTsKQEAgLTU1OSw3ICs1NTksNyBAQCBjbGFzcyBTZWNvbmRhcnlDb21tYW5kQnVmZmVyIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICB2b2lkIGltYWdlQmFycmllcihWa1BpcGVs
aW5lU3RhZ2VGbGFncyBzcmNTdGFnZU1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgVmtQaXBl
bGluZVN0YWdlRmxhZ3MgZHN0U3RhZ2VNYXNrLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZrSW1hZ2VNZW1vcnlCYXJyaWVyICppbWFnZU1lbW9yeUJhcnJpZXIpOworICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZrSW1hZ2VNZW1vcnlCYXJyaWVyICZpbWFnZU1lbW9yeUJhcnJpZXIp
OwogCiAgICAgdm9pZCBtZW1vcnlCYXJyaWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdl
TWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZHN0U3Rh
Z2VNYXNrLApAQCAtNzk2LDcgKzc5Niw3IEBAIEFOR0xFX0lOTElORSB2b2lkIFNlY29uZGFyeUNv
bW1hbmRCdWZmZXI6OmJpbmRJbmRleEJ1ZmZlcihjb25zdCBCdWZmZXIgJmJ1ZmZlciwKICAgICBw
YXJhbVN0cnVjdC0+aW5kZXhUeXBlID0gaW5kZXhUeXBlOwogfQogCi1BTkdMRV9JTkxJTkUgdm9p
ZCBTZWNvbmRhcnlDb21tYW5kQnVmZmVyOjpiaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKHNp
emVfdCBiaW5kaW5nQ291bnQsCitBTkdMRV9JTkxJTkUgdm9pZCBTZWNvbmRhcnlDb21tYW5kQnVm
ZmVyOjpiaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKHVpbnQzMl90IGJpbmRpbmdDb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmtCdWZmZXIgKmJ1ZmZlcnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZrRGV2aWNlU2l6ZSAqb2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtEZXZpY2VT
aXplICpzaXplcykKQEAgLTgxMCw3ICs4MTAsNyBAQCBBTkdMRV9JTkxJTkUgdm9pZCBTZWNvbmRh
cnlDb21tYW5kQnVmZmVyOjpiaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKHNpemVfdCBiaQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
dWZmZXJzU2l6ZSArIG9mZnNldHNTaXplICsgc2l6ZXNTaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVQdHIpOwogICAgIC8v
IENvcHkgcGFyYW1zCi0gICAgcGFyYW1TdHJ1Y3QtPmJpbmRpbmdDb3VudCA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihiaW5kaW5nQ291bnQpOworICAgIHBhcmFtU3RydWN0LT5iaW5kaW5nQ291bnQg
PSBiaW5kaW5nQ291bnQ7CiAgICAgd3JpdGVQdHIgICAgICAgICAgICAgICAgICA9IHN0b3JlUG9p
bnRlclBhcmFtZXRlcih3cml0ZVB0ciwgYnVmZmVycywgYnVmZmVyc1NpemUpOwogICAgIHdyaXRl
UHRyICAgICAgICAgICAgICAgICAgPSBzdG9yZVBvaW50ZXJQYXJhbWV0ZXIod3JpdGVQdHIsIG9m
ZnNldHMsIG9mZnNldHNTaXplKTsKICAgICBzdG9yZVBvaW50ZXJQYXJhbWV0ZXIod3JpdGVQdHIs
IHNpemVzLCBzaXplc1NpemUpOwpAQCAtMTEyOSwxMiArMTEyOSwxMyBAQCBBTkdMRV9JTkxJTkUg
dm9pZCBTZWNvbmRhcnlDb21tYW5kQnVmZmVyOjpmaWxsQnVmZmVyKGNvbnN0IEJ1ZmZlciAmZHN0
QnVmZmVyLAogQU5HTEVfSU5MSU5FIHZvaWQgU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlcjo6aW1hZ2VC
YXJyaWVyKAogICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKICAgICBWa1Bp
cGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCi0gICAgY29uc3QgVmtJbWFnZU1lbW9yeUJh
cnJpZXIgKmltYWdlTWVtb3J5QmFycmllcikKKyAgICBjb25zdCBWa0ltYWdlTWVtb3J5QmFycmll
ciAmaW1hZ2VNZW1vcnlCYXJyaWVyKQogewogICAgIEltYWdlQmFycmllclBhcmFtcyAqcGFyYW1T
dHJ1Y3QgPSBpbml0Q29tbWFuZDxJbWFnZUJhcnJpZXJQYXJhbXM+KENvbW1hbmRJRDo6SW1hZ2VC
YXJyaWVyKTsKKyAgICBBU1NFUlQoaW1hZ2VNZW1vcnlCYXJyaWVyLnBOZXh0ID09IG51bGxwdHIp
OwogICAgIHBhcmFtU3RydWN0LT5zcmNTdGFnZU1hc2sgICAgICAgPSBzcmNTdGFnZU1hc2s7CiAg
ICAgcGFyYW1TdHJ1Y3QtPmRzdFN0YWdlTWFzayAgICAgICA9IGRzdFN0YWdlTWFzazsKLSAgICBw
YXJhbVN0cnVjdC0+aW1hZ2VNZW1vcnlCYXJyaWVyID0gKmltYWdlTWVtb3J5QmFycmllcjsKKyAg
ICBwYXJhbVN0cnVjdC0+aW1hZ2VNZW1vcnlCYXJyaWVyID0gaW1hZ2VNZW1vcnlCYXJyaWVyOwog
fQogCiBBTkdMRV9JTkxJTkUgdm9pZCBTZWNvbmRhcnlDb21tYW5kQnVmZmVyOjptZW1vcnlCYXJy
aWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2VtYXBob3Jl
VmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9TZW1hcGhvcmVWay5jcHAKaW5kZXggNmVkODIyMGJmOGM3NDhhY2IzODZlNGQ1NGM3ZmZm
YmMxZWUxZjhkOS4uMDE1MGZmZTdiMGZmOGM3OTNkNzgzOWQ1ODBmODUzMmE2YzVkNWVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9TZW1hcGhvcmVWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZW1hcGhvcmVWay5jcHAKQEAgLTY1LDEzICs2NSwzMiBA
QCB2b2lkIFNlbWFwaG9yZVZrOjpvbkRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQp
CiAKIGFuZ2xlOjpSZXN1bHQgU2VtYXBob3JlVms6OmltcG9ydEZkKGdsOjpDb250ZXh0ICpjb250
ZXh0LCBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlLCBHTGludCBmZCkKIHsKKyAgICBDb250ZXh0
VmsgKmNvbnRleHRWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOworCiAgICAgc3dpdGNoIChoYW5k
bGVUeXBlKQogICAgIHsKICAgICAgICAgY2FzZSBnbDo6SGFuZGxlVHlwZTo6T3BhcXVlRmQ6Ci0g
ICAgICAgICAgICByZXR1cm4gaW1wb3J0T3BhcXVlRmQoY29udGV4dCwgZmQpOworICAgICAgICAg
ICAgcmV0dXJuIGltcG9ydE9wYXF1ZUZkKGNvbnRleHRWaywgZmQpOwogCiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBTkdMRV9WS19VTlJFQUNIQUJMRSh2azo6R2V0SW1wbChjb250ZXh0
KSk7CisgICAgICAgICAgICBBTkdMRV9WS19VTlJFQUNIQUJMRShjb250ZXh0VmspOworICAgICAg
ICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CisgICAgfQorfQorCithbmdsZTo6UmVz
dWx0IFNlbWFwaG9yZVZrOjppbXBvcnRaaXJjb25IYW5kbGUoZ2w6OkNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkhhbmRs
ZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIENvbnRleHRWayAqY29udGV4dFZrID0gdms6
OkdldEltcGwoY29udGV4dCk7CisKKyAgICBzd2l0Y2ggKGhhbmRsZVR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIGdsOjpIYW5kbGVUeXBlOjpaaXJjb25FdmVudDoKKyAgICAgICAgICAgIHJldHVy
biBpbXBvcnRaaXJjb25FdmVudChjb250ZXh0VmssIGhhbmRsZSk7CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFOR0xFX1ZLX1VOUkVBQ0hBQkxFKGNvbnRleHRWayk7CiAgICAgICAg
ICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6U3RvcDsKICAgICB9CiB9CkBAIC04NSw3ICsxMDQs
NyBAQCBhbmdsZTo6UmVzdWx0IFNlbWFwaG9yZVZrOjp3YWl0KGdsOjpDb250ZXh0ICpjb250ZXh0
LAogICAgIGlmICghYnVmZmVyQmFycmllcnMuZW1wdHkoKSB8fCAhdGV4dHVyZUJhcnJpZXJzLmVt
cHR5KCkpCiAgICAgewogICAgICAgICAvLyBDcmVhdGUgb25lIGdsb2JhbCBtZW1vcnkgYmFycmll
ciB0byBjb3ZlciBhbGwgYmFycmllcnMuCi0gICAgICAgIGNvbnRleHRWay0+Z2V0Q29tbWFuZEdy
YXBoKCktPnN5bmNFeHRlcm5hbE1lbW9yeSgpOworICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZr
LT5zeW5jRXh0ZXJuYWxNZW1vcnkoKSk7CiAgICAgfQogCiAgICAgdWludDMyX3QgcmVuZGVyZXJR
dWV1ZUZhbWlseUluZGV4ID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLT5nZXRRdWV1ZUZhbWls
eUluZGV4KCk7CkBAIC05OCwxNSArMTE3LDExIEBAIGFuZ2xlOjpSZXN1bHQgU2VtYXBob3JlVms6
OndhaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBCdWZmZXJWayAqYnVmZmVy
VmsgICAgICAgICAgICAgPSB2azo6R2V0SW1wbChidWZmZXIpOwogICAgICAgICAgICAgdms6OkJ1
ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOwogCi0gICAg
ICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIEdMIGNvbW1hbmRzIHVzaW5nIHRoaXMgYnVmZmVyIHBy
aW9yIHRvIHRoaXMgY2FsbCwgdGhhdCdzIGEKLSAgICAgICAgICAgIC8vIHN5bmNocm9uaXphdGlv
biBlcnJvciBvbiBiZWhhbGYgb2YgdGhlIHByb2dyYW0uCi0gICAgICAgICAgICBBU1NFUlQoIWJ1
ZmZlckhlbHBlci5oYXNSZWNvcmRlZENvbW1hbmRzKCkpOwotCi0gICAgICAgICAgICB2azo6Q29t
bWFuZEJ1ZmZlciAqcXVldWVDaGFuZ2U7Ci0gICAgICAgICAgICBBTkdMRV9UUlkoYnVmZmVySGVs
cGVyLnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJnF1ZXVlQ2hhbmdlKSk7CisgICAgICAgICAg
ICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICAgICAgICAgIEFOR0xFX1RS
WShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVm
ZmVyKSk7CiAKICAgICAgICAgICAgIC8vIFF1ZXVlIG93bmVyc2hpcCB0cmFuc2Zlci4KLSAgICAg
ICAgICAgIGJ1ZmZlckhlbHBlci5jaGFuZ2VRdWV1ZShyZW5kZXJlclF1ZXVlRmFtaWx5SW5kZXgs
IHF1ZXVlQ2hhbmdlKTsKKyAgICAgICAgICAgIGJ1ZmZlckhlbHBlci5jaGFuZ2VRdWV1ZShyZW5k
ZXJlclF1ZXVlRmFtaWx5SW5kZXgsIGNvbW1hbmRCdWZmZXIpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMjEsMTkgKzEzNiwxNSBAQCBhbmdsZTo6UmVzdWx0IFNlbWFwaG9yZVZrOjp3YWl0KGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgdms6OkltYWdlSGVscGVyICZpbWFnZSA9
IHRleHR1cmVWay0+Z2V0SW1hZ2UoKTsKICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91dCBsYXlv
dXQgPSBHZXRWdWxrYW5JbWFnZUxheW91dCh0ZXh0dXJlQW5kTGF5b3V0LmxheW91dCk7CiAKLSAg
ICAgICAgICAgIC8vIElmIHRoZXJlIHdlcmUgR0wgY29tbWFuZHMgdXNpbmcgdGhpcyBpbWFnZSBw
cmlvciB0byB0aGlzIGNhbGwsIHRoYXQncyBhCi0gICAgICAgICAgICAvLyBzeW5jaHJvbml6YXRp
b24gZXJyb3Igb24gYmVoYWxmIG9mIHRoZSBwcm9ncmFtLgotICAgICAgICAgICAgQVNTRVJUKCFp
bWFnZS5oYXNSZWNvcmRlZENvbW1hbmRzKCkpOwotCiAgICAgICAgICAgICAvLyBJbmZvcm0gdGhl
IGltYWdlIHRoYXQgdGhlIGxheW91dCBoYXMgYmVlbiBleHRlcm5hbGx5IGNoYW5nZWQuCiAgICAg
ICAgICAgICBpbWFnZS5vbkV4dGVybmFsTGF5b3V0Q2hhbmdlKGxheW91dCk7CiAKLSAgICAgICAg
ICAgIHZrOjpDb21tYW5kQnVmZmVyICpxdWV1ZUNoYW5nZTsKLSAgICAgICAgICAgIEFOR0xFX1RS
WShpbWFnZS5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZxdWV1ZUNoYW5nZSkpOworICAgICAg
ICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7CisgICAgICAgICAgICBBTkdM
RV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFu
ZEJ1ZmZlcikpOwogCiAgICAgICAgICAgICAvLyBRdWV1ZSBvd25lcnNoaXAgdHJhbnNmZXIuCiAg
ICAgICAgICAgICBpbWFnZS5jaGFuZ2VMYXlvdXRBbmRRdWV1ZShpbWFnZS5nZXRBc3BlY3RGbGFn
cygpLCBsYXlvdXQsIHJlbmRlcmVyUXVldWVGYW1pbHlJbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xNTUsMTEgKzE2NiwxMSBAQCBhbmdsZTo6UmVzdWx0IFNlbWFwaG9yZVZrOjpzaWduYWwoZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAg
ICAgICAgPSB2azo6R2V0SW1wbChidWZmZXIpOwogICAgICAgICAgICAgdms6OkJ1ZmZlckhlbHBl
ciAmYnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOwogCi0gICAgICAgICAgICB2
azo6Q29tbWFuZEJ1ZmZlciAqcXVldWVDaGFuZ2U7Ci0gICAgICAgICAgICBBTkdMRV9UUlkoYnVm
ZmVySGVscGVyLnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJnF1ZXVlQ2hhbmdlKSk7CisgICAg
ICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICAgICAgICAgIEFO
R0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21t
YW5kQnVmZmVyKSk7CiAKICAgICAgICAgICAgIC8vIFF1ZXVlIG93bmVyc2hpcCB0cmFuc2Zlci4K
LSAgICAgICAgICAgIGJ1ZmZlckhlbHBlci5jaGFuZ2VRdWV1ZShWS19RVUVVRV9GQU1JTFlfRVhU
RVJOQUwsIHF1ZXVlQ2hhbmdlKTsKKyAgICAgICAgICAgIGJ1ZmZlckhlbHBlci5jaGFuZ2VRdWV1
ZShWS19RVUVVRV9GQU1JTFlfRVhURVJOQUwsIGNvbW1hbmRCdWZmZXIpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xODEsMjcgKzE5MiwyNiBAQCBhbmdsZTo6UmVzdWx0IFNlbWFwaG9yZVZrOjpz
aWduYWwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgbGF5b3V0ID0gaW1h
Z2UuZ2V0Q3VycmVudEltYWdlTGF5b3V0KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHZrOjpDb21tYW5kQnVmZmVyICpsYXlvdXRDaGFuZ2U7Ci0gICAgICAgICAgICBBTkdMRV9UUlko
aW1hZ2UucmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmbGF5b3V0Q2hhbmdlKSk7CisgICAgICAg
ICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICAgICAgICAgIEFOR0xF
X1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5k
QnVmZmVyKSk7CiAKICAgICAgICAgICAgIC8vIFF1ZXVlIG93bmVyc2hpcCB0cmFuc2ZlciBhbmQg
bGF5b3V0IHRyYW5zaXRpb24uCiAgICAgICAgICAgICBpbWFnZS5jaGFuZ2VMYXlvdXRBbmRRdWV1
ZShpbWFnZS5nZXRBc3BlY3RGbGFncygpLCBsYXlvdXQsIFZLX1FVRVVFX0ZBTUlMWV9FWFRFUk5B
TCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dENoYW5nZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kQnVmZmVyKTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghYnVmZmVyQmFycmllcnMuZW1wdHkoKSB8fCAh
dGV4dHVyZUJhcnJpZXJzLmVtcHR5KCkpCiAgICAgewogICAgICAgICAvLyBDcmVhdGUgb25lIGds
b2JhbCBtZW1vcnkgYmFycmllciB0byBjb3ZlciBhbGwgYmFycmllcnMuCi0gICAgICAgIGNvbnRl
eHRWay0+Z2V0Q29tbWFuZEdyYXBoKCktPnN5bmNFeHRlcm5hbE1lbW9yeSgpOworICAgICAgICBB
TkdMRV9UUlkoY29udGV4dFZrLT5zeW5jRXh0ZXJuYWxNZW1vcnkoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGNvbnRleHRWay0+Zmx1c2hJbXBsKCZtU2VtYXBob3JlKTsKIH0KIAotYW5nbGU6OlJl
c3VsdCBTZW1hcGhvcmVWazo6aW1wb3J0T3BhcXVlRmQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdM
aW50IGZkKQorYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmVWazo6aW1wb3J0T3BhcXVlRmQoQ29udGV4
dFZrICpjb250ZXh0VmssIEdMaW50IGZkKQogewotICAgIENvbnRleHRWayAqY29udGV4dFZrID0g
dms6OkdldEltcGwoY29udGV4dCk7CiAgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgPSBjb250ZXh0
VmstPmdldFJlbmRlcmVyKCk7CiAKICAgICBpZiAoIW1TZW1hcGhvcmUudmFsaWQoKSkKQEAgLTIy
Myw0ICsyMzMsMzUgQEAgYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmVWazo6aW1wb3J0T3BhcXVlRmQo
Z2w6OkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGZkKQogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKIH0KIAorYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmVWazo6aW1wb3J0WmlyY29u
RXZlbnQoQ29udGV4dFZrICpjb250ZXh0VmssIEdMdWludCBoYW5kbGUpCit7CisgICAgUmVuZGVy
ZXJWayAqcmVuZGVyZXIgPSBjb250ZXh0VmstPmdldFJlbmRlcmVyKCk7CisKKyAgICBpZiAoIW1T
ZW1hcGhvcmUudmFsaWQoKSkKKyAgICB7CisgICAgICAgIG1TZW1hcGhvcmUuaW5pdChyZW5kZXJl
ci0+Z2V0RGV2aWNlKCkpOworICAgIH0KKworICAgIEFTU0VSVChtU2VtYXBob3JlLnZhbGlkKCkp
OworCisgICAgVmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVJbmZvRlVDSFNJQSBpbXBvcnRT
ZW1hcGhvcmVaaXJjb25IYW5kbGVJbmZvID0ge307CisgICAgaW1wb3J0U2VtYXBob3JlWmlyY29u
SGFuZGxlSW5mby5zVHlwZSA9CisgICAgICAgIFZLX1NUUlVDVFVSRV9UWVBFX1RFTVBfSU1QT1JU
X1NFTUFQSE9SRV9aSVJDT05fSEFORExFX0lORk9fRlVDSFNJQTsKKyAgICBpbXBvcnRTZW1hcGhv
cmVaaXJjb25IYW5kbGVJbmZvLnNlbWFwaG9yZSA9IG1TZW1hcGhvcmUuZ2V0SGFuZGxlKCk7Cisg
ICAgaW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlSW5mby5mbGFncyAgICAgPSAwOworICAgIGlt
cG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUluZm8uaGFuZGxlVHlwZSA9CisgICAgICAgIFZLX0VY
VEVSTkFMX1NFTUFQSE9SRV9IQU5ETEVfVFlQRV9URU1QX1pJUkNPTl9FVkVOVF9CSVRfRlVDSFNJ
QTsKKyAgICBpbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVJbmZvLmhhbmRsZSA9IGhhbmRsZTsK
KworICAgIC8vIFRPRE8oc3BhbmcpOiBBZGQgdmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVG
VUNIU0lBIHRvIHZvbGsuCisgICAgc3RhdGljIFBGTl92a0ltcG9ydFNlbWFwaG9yZVppcmNvbkhh
bmRsZUZVQ0hTSUEgdmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVGVUNIU0lBID0KKyAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxQRk5fdmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVGVUNI
U0lBPigKKyAgICAgICAgICAgIHZrR2V0SW5zdGFuY2VQcm9jQWRkcihyZW5kZXJlci0+Z2V0SW5z
dGFuY2UoKSwgInZrSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlRlVDSFNJQSIpKTsKKworICAg
IEFOR0xFX1ZLX1RSWShjb250ZXh0VmssIHZrSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlRlVD
SFNJQShyZW5kZXJlci0+Z2V0RGV2aWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbXBvcnRTZW1hcGhvcmVaaXJj
b25IYW5kbGVJbmZvKSk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9
CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZW1hcGhvcmVWay5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZW1hcGhvcmVWay5o
CmluZGV4IDQ4NjE5MzA1ZjYyODEwYmUxMjk4MjY2NjQwNTY5M2ExZTA1MGI5N2EuLmFmODM4YzM3
M2I2MjU1MzYzNTFjNjRiNDRmODA0ZGQ3YzM3NjNkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2VtYXBob3JlVmsuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1NlbWFwaG9yZVZrLmgKQEAgLTI1LDYgKzI1LDEwIEBAIGNsYXNzIFNlbWFwaG9yZVZrIDogcHVi
bGljIFNlbWFwaG9yZUltcGwKIAogICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0RmQoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsIEdMaW50IGZkKSBvdmVycmlk
ZTsKIAorICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0WmlyY29uSGFuZGxlKGdsOjpDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpIYW5kbGVU
eXBlIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGhhbmRsZSkgb3ZlcnJpZGU7CisKICAgICBhbmdsZTo6UmVzdWx0IHdhaXQoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCdWZmZXJCYXJy
aWVyVmVjdG9yICZidWZmZXJCYXJyaWVycywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlRleHR1cmVCYXJyaWVyVmVjdG9yICZ0ZXh0dXJlQmFycmllcnMpIG92ZXJyaWRlOwpAQCAt
MzQsNyArMzgsOCBAQCBjbGFzcyBTZW1hcGhvcmVWayA6IHB1YmxpYyBTZW1hcGhvcmVJbXBsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVCYXJyaWVyVmVjdG9yICZ0
ZXh0dXJlQmFycmllcnMpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgYW5nbGU6OlJlc3Vs
dCBpbXBvcnRPcGFxdWVGZChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQgZmQpOworICAgIGFu
Z2xlOjpSZXN1bHQgaW1wb3J0T3BhcXVlRmQoQ29udGV4dFZrICpjb250ZXh0VmssIEdMaW50IGZk
KTsKKyAgICBhbmdsZTo6UmVzdWx0IGltcG9ydFppcmNvbkV2ZW50KENvbnRleHRWayAqY29udGV4
dFZrLCBHTHVpbnQgaGFuZGxlKTsKIAogICAgIHZrOjpTZW1hcGhvcmUgbVNlbWFwaG9yZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1NoYWRlclZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCmluZGV4IGQ3NzdjZDFmNTkzNjNhN2Yx
MTQ5ZjM3OWNmYzE5MzRhZjcxZWRlZTYuLjZlODE0NTc4NzVlNjAyNzJiNzQ5M2Y0MjYyYTZkNWE4
N2UzNDhjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCkBAIC01NSw2ICs1
NSwxMSBAQCBzdGQ6OnNoYXJlZF9wdHI8V2FpdGFibGVDb21waWxlRXZlbnQ+IFNoYWRlclZrOjpj
b21waWxlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZQogICAgICAgICBjb21waWxlT3B0aW9ucyB8
PSBTSF9VU0VfT0xEX1JFV1JJVEVfU1RSVUNUX1NBTVBMRVJTOwogICAgIH0KIAorICAgIGlmICgh
Y29udGV4dFZrLT5nZXRGZWF0dXJlcygpLmVuYWJsZVByZWNpc2lvblF1YWxpZmllcnMuZW5hYmxl
ZCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVPcHRpb25zIHw9IFNIX0lHTk9SRV9QUkVDSVNJT05f
UVVBTElGSUVSUzsKKyAgICB9CisKICAgICByZXR1cm4gY29tcGlsZUltcGwoY29udGV4dCwgY29t
cGlsZXJJbnN0YW5jZSwgbURhdGEuZ2V0U291cmNlKCksIGNvbXBpbGVPcHRpb25zIHwgb3B0aW9u
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNwcAppbmRleCAzOGViNmE0
MDUyMWMyNGEyYTdkNjU0ZmUyNzkyZDk5NzVhMWVlZjRjLi4yM2YxNmQ2MDc2MmNjYjU1YjMyYThh
MWZkYmE2ZmUyZjNlOTgxZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3Bw
CkBAIC05NSw2ICs5NSwxOSBAQCBjb25zdGV4cHIgVmtJbWFnZVVzYWdlRmxhZ3Mga1N1cmZhY2VW
S0NvbG9ySW1hZ2VVc2FnZUZsYWdzID0KIGNvbnN0ZXhwciBWa0ltYWdlVXNhZ2VGbGFncyBrU3Vy
ZmFjZVZLRGVwdGhTdGVuY2lsSW1hZ2VVc2FnZUZsYWdzID0KICAgICBrU3VyZmFjZVZLSW1hZ2VV
c2FnZUZsYWdzIHwgVktfSU1BR0VfVVNBR0VfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UX0JJVDsK
IAorLy8gSWYgdGhlIGRldmljZSBpcyByb3RhdGVkIHdpdGggYW55IG9mIHRoZSBmb2xsb3dpbmcg
dHJhbnNmb3JtIGZsYWdzLCB0aGUgc3dhcGNoYWluIHdpZHRoIGFuZAorLy8gaGVpZ2h0IG11c3Qg
YmUgc3dhcHBlZCAoZS5nLiBtYWtlIGEgbGFuZHNjYXBlIHdpbmRvdyBwb3J0cmFpdCkuICBUaGlz
IG11c3QgYWxzbyBiZSBkb25lIGZvciBhbGwKKy8vIGF0dGFjaG1lbnRzIHVzZWQgd2l0aCB0aGUg
c3dhcGNoYWluIChpLmUuIGRlcHRoLCBzdGVuY2lsLCBhbmQgbXVsdGlzYW1wbGUgYnVmZmVycyku
Citjb25zdGV4cHIgVmtTdXJmYWNlVHJhbnNmb3JtRmxhZ3NLSFIgazkwRGVncmVlUm90YXRpb25W
YXJpYW50cyA9CisgICAgVktfU1VSRkFDRV9UUkFOU0ZPUk1fUk9UQVRFXzkwX0JJVF9LSFIgfCBW
S19TVVJGQUNFX1RSQU5TRk9STV9ST1RBVEVfMjcwX0JJVF9LSFIgfAorICAgIFZLX1NVUkZBQ0Vf
VFJBTlNGT1JNX0hPUklaT05UQUxfTUlSUk9SX1JPVEFURV85MF9CSVRfS0hSIHwKKyAgICBWS19T
VVJGQUNFX1RSQU5TRk9STV9IT1JJWk9OVEFMX01JUlJPUl9ST1RBVEVfMjcwX0JJVF9LSFI7CisK
K2Jvb2wgSXM5MERlZ3JlZVJvdGF0aW9uKFZrU3VyZmFjZVRyYW5zZm9ybUZsYWdzS0hSIHRyYW5z
Zm9ybSkKK3sKKyAgICByZXR1cm4gKCh0cmFuc2Zvcm0gJiBrOTBEZWdyZWVSb3RhdGlvblZhcmlh
bnRzKSAhPSAwKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIFN1cmZhY2VWazo6U3VyZmFjZVZr
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUpIDogU3VyZmFjZUltcGwoc3Vy
ZmFjZVN0YXRlKSB7fQpAQCAtMTU1LDE2ICsxNjgsNTYgQEAgYW5nbGU6OlJlc3VsdCBPZmZzY3Jl
ZW5TdXJmYWNlVms6OkF0dGFjaG1lbnRJbWFnZTo6aW5pdGlhbGl6ZShEaXNwbGF5VmsgKmRpc3Bs
YXkKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKK2FuZ2xlOjpSZXN1
bHQgT2Zmc2NyZWVuU3VyZmFjZVZrOjpBdHRhY2htZW50SW1hZ2U6OmluaXRpYWxpemVXaXRoRXh0
ZXJuYWxNZW1vcnkoCisgICAgRGlzcGxheVZrICpkaXNwbGF5VmssCisgICAgRUdMaW50IHdpZHRo
LAorICAgIEVHTGludCBoZWlnaHQsCisgICAgY29uc3Qgdms6OkZvcm1hdCAmdmtGb3JtYXQsCisg
ICAgR0xpbnQgc2FtcGxlcywKKyAgICB2b2lkICpidWZmZXIpCit7CisgICAgUmVuZGVyZXJWayAq
cmVuZGVyZXIgPSBkaXNwbGF5VmstPmdldFJlbmRlcmVyKCk7CisKKyAgICBBU1NFUlQocmVuZGVy
ZXItPmdldEZlYXR1cmVzKCkuc3VwcG9ydHNFeHRlcm5hbE1lbW9yeUhvc3QuZW5hYmxlZCk7CisK
KyAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZ0ZXh0dXJlRm9ybWF0ID0gdmtGb3JtYXQuYWN0dWFs
SW1hZ2VGb3JtYXQoKTsKKyAgICBib29sIGlzRGVwdGhPclN0ZW5jaWxGb3JtYXQgICA9IHRleHR1
cmVGb3JtYXQuZGVwdGhCaXRzID4gMCB8fCB0ZXh0dXJlRm9ybWF0LnN0ZW5jaWxCaXRzID4gMDsK
KyAgICBjb25zdCBWa0ltYWdlVXNhZ2VGbGFncyB1c2FnZSA9IGlzRGVwdGhPclN0ZW5jaWxGb3Jt
YXQgPyBrU3VyZmFjZVZLRGVwdGhTdGVuY2lsSW1hZ2VVc2FnZUZsYWdzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga1N1cmZhY2VW
S0NvbG9ySW1hZ2VVc2FnZUZsYWdzOworCisgICAgVmtFeHRlbnQzRCBleHRlbnRzID0ge3N0ZDo6
bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aWR0aCksIDF1KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlaWdodCksIDF1KSwgMXV9
OworICAgIEFOR0xFX1RSWSgKKyAgICAgICAgaW1hZ2UuaW5pdChkaXNwbGF5VmssIGdsOjpUZXh0
dXJlVHlwZTo6XzJELCBleHRlbnRzLCB2a0Zvcm1hdCwgc2FtcGxlcywgdXNhZ2UsIDAsIDAsIDEs
IDEpKTsKKworICAgIFZrSW1wb3J0TWVtb3J5SG9zdFBvaW50ZXJJbmZvRVhUIGltcG9ydE1lbW9y
eUhvc3RQb2ludGVySW5mbyA9IHt9OworICAgIGltcG9ydE1lbW9yeUhvc3RQb2ludGVySW5mby5z
VHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNUE9SVF9NRU1PUllfSE9TVF9QT0lOVEVSX0lORk9f
RVhUOworICAgIGltcG9ydE1lbW9yeUhvc3RQb2ludGVySW5mby5wTmV4dCA9IG51bGxwdHI7Cisg
ICAgaW1wb3J0TWVtb3J5SG9zdFBvaW50ZXJJbmZvLmhhbmRsZVR5cGUgPQorICAgICAgICBWS19F
WFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfSE9TVF9NQVBQRURfRk9SRUlHTl9NRU1PUllfQklU
X0VYVDsKKyAgICBpbXBvcnRNZW1vcnlIb3N0UG9pbnRlckluZm8ucEhvc3RQb2ludGVyID0gYnVm
ZmVyOworCisgICAgVmtNZW1vcnlSZXF1aXJlbWVudHMgZXh0ZXJuYWxNZW1vcnlSZXF1aXJlbWVu
dHM7CisgICAgaW1hZ2UuZ2V0SW1hZ2UoKS5nZXRNZW1vcnlSZXF1aXJlbWVudHMocmVuZGVyZXIt
PmdldERldmljZSgpLCAmZXh0ZXJuYWxNZW1vcnlSZXF1aXJlbWVudHMpOworCisgICAgVmtNZW1v
cnlQcm9wZXJ0eUZsYWdzIGZsYWdzID0gMDsKKyAgICBBTkdMRV9UUlkoaW1hZ2UuaW5pdEV4dGVy
bmFsTWVtb3J5KGRpc3BsYXlWaywgcmVuZGVyZXItPmdldE1lbW9yeVByb3BlcnRpZXMoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsTWVtb3J5UmVxdWly
ZW1lbnRzLCAmaW1wb3J0TWVtb3J5SG9zdFBvaW50ZXJJbmZvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVktfUVVFVUVfRkFNSUxZX0VYVEVSTkFMLCBmbGFncykpOwor
CisgICAgLy8gQ2xlYXIgdGhlIGltYWdlIGlmIGl0IGhhcyBlbXVsYXRlZCBjaGFubmVscy4KKyAg
ICBpbWFnZS5zdGFnZUNsZWFySWZFbXVsYXRlZEZvcm1hdChnbDo6SW1hZ2VJbmRleDo6TWFrZTJE
KDApLCB2a0Zvcm1hdCk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9
CisKIHZvaWQgT2Zmc2NyZWVuU3VyZmFjZVZrOjpBdHRhY2htZW50SW1hZ2U6OmRlc3Ryb3koY29u
c3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQogewogICAgIERpc3BsYXlWayAqZGlzcGxheVZrID0g
dms6OkdldEltcGwoZGlzcGxheSk7Ci0gICAgVmtEZXZpY2UgZGV2aWNlICAgICAgPSBkaXNwbGF5
VmstPmdldERldmljZSgpOwotCi0gICAgLy8gSXQgc2hvdWxkIGJlIHNhZmUgdG8gaW1tZWRpYXRl
bHkgZGVzdHJveSB0aGUgYmFja2luZyBpbWFnZXMgb2YgYSBzdXJmYWNlIG9uIHN1cmZhY2UKLSAg
ICAvLyBkZXN0cnVjdGlvbi4gSWYgdGhpcyBhc3N1bXB0aW9uIGlzIGluY29ycmVjdCwgd2UgY291
bGQgdXNlIHRoZSBsYXN0IHN1Ym1pdCBzZXJpYWwKLSAgICAvLyB0byBkZXRlcm1pbmUgd2hlbiB0
byBkZXN0cm95IHRoZSBzdXJmYWNlLgotICAgIGltYWdlLmRlc3Ryb3koZGV2aWNlKTsKLSAgICBp
bWFnZVZpZXdzLmRlc3Ryb3koZGV2aWNlKTsKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGRp
c3BsYXlWay0+Z2V0UmVuZGVyZXIoKTsKKyAgICBpbWFnZS5yZWxlYXNlSW1hZ2UocmVuZGVyZXIp
OworICAgIGltYWdlLnJlbGVhc2VTdGFnaW5nQnVmZmVyKHJlbmRlcmVyKTsKKyAgICBpbWFnZVZp
ZXdzLnJlbGVhc2UocmVuZGVyZXIpOwogfQogCiBPZmZzY3JlZW5TdXJmYWNlVms6Ok9mZnNjcmVl
blN1cmZhY2VWayhjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3VyZmFjZVN0YXRlKQpAQCAtMzA0
LDE1ICszNTcsMTUgQEAgYW5nbGU6OlJlc3VsdCBPZmZzY3JlZW5TdXJmYWNlVms6OmluaXRpYWxp
emVDb250ZW50cyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIAogICAgIGlmIChtQ29sb3JB
dHRhY2htZW50LmltYWdlLnZhbGlkKCkpCiAgICAgewotICAgICAgICBtQ29sb3JBdHRhY2htZW50
LmltYWdlLnN0YWdlU3VicmVzb3VyY2VSb2J1c3RDbGVhcigKLSAgICAgICAgICAgIGltYWdlSW5k
ZXgsIG1Db2xvckF0dGFjaG1lbnQuaW1hZ2UuZ2V0Rm9ybWF0KCkuaW50ZW5kZWRGb3JtYXQoKSk7
CisgICAgICAgIG1Db2xvckF0dGFjaG1lbnQuaW1hZ2Uuc3RhZ2VTdWJyZXNvdXJjZVJvYnVzdENs
ZWFyKGltYWdlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1Db2xvckF0dGFjaG1lbnQuaW1hZ2UuZ2V0Rm9ybWF0KCkpOwog
ICAgICAgICBBTkdMRV9UUlkobUNvbG9yQXR0YWNobWVudC5pbWFnZS5mbHVzaEFsbFN0YWdlZFVw
ZGF0ZXMoY29udGV4dFZrKSk7CiAgICAgfQogCiAgICAgaWYgKG1EZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmltYWdlLnZhbGlkKCkpCiAgICAgewogICAgICAgICBtRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5pbWFnZS5zdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoCi0gICAgICAgICAgICBpbWFnZUlu
ZGV4LCBtRGVwdGhTdGVuY2lsQXR0YWNobWVudC5pbWFnZS5nZXRGb3JtYXQoKS5pbnRlbmRlZEZv
cm1hdCgpKTsKKyAgICAgICAgICAgIGltYWdlSW5kZXgsIG1EZXB0aFN0ZW5jaWxBdHRhY2htZW50
LmltYWdlLmdldEZvcm1hdCgpKTsKICAgICAgICAgQU5HTEVfVFJZKG1EZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LmltYWdlLmZsdXNoQWxsU3RhZ2VkVXBkYXRlcyhjb250ZXh0VmspKTsKICAgICB9CiAg
ICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtNTE0LDYgKzU2NywyNyBAQCBh
bmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZhY2VWazo6aW5pdGlhbGl6ZUltcGwoRGlzcGxheVZrICpk
aXNwbGF5VmspCiAKICAgICBnbDo6RXh0ZW50cyBleHRlbnRzKHN0YXRpY19jYXN0PGludD4od2lk
dGgpLCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCksIDEpOwogCisgICAgaWYgKHJlbmRlcmVyLT5n
ZXRGZWF0dXJlcygpLmVuYWJsZVByZVJvdGF0ZVN1cmZhY2VzLmVuYWJsZWQpCisgICAgeworICAg
ICAgICAvLyBVc2UgdGhlIHN1cmZhY2UncyB0cmFuc2Zvcm0uICBGb3IgbWFueSBwbGF0Zm9ybXMs
IHRoaXMgd2lsbCBhbHdheXMgYmUgaWRlbnRpdHkgKEFOR0xFCisgICAgICAgIC8vIGRvZXMgbm90
IG5lZWQgdG8gZG8gYW55IHByZS1yb3RhdGlvbikuICBIb3dldmVyLCB3aGVuIG1TdXJmYWNlQ2Fw
cy5jdXJyZW50VHJhbnNmb3JtIGlzCisgICAgICAgIC8vIG5vdCBpZGVudGl0eSwgdGhlIGRldmlj
ZSBoYXMgYmVlbiByb3RhdGVkIGF3YXkgZnJvbSBpdHMgbmF0dXJhbCBvcmllbnRhdGlvbi4gIElu
IHN1Y2ggYQorICAgICAgICAvLyBjYXNlLCBBTkdMRSBtdXN0IHJvdGF0ZSBhbGwgcmVuZGVyaW5n
IGluIG9yZGVyIHRvIGF2b2lkIHRoZSBjb21wb3NpdG9yCisgICAgICAgIC8vIChlLmcuIFN1cmZh
Y2VGbGluZ2VyIG9uIEFuZHJvaWQpIHBlcmZvcm1pbmcgYW4gYWRkaXRpb25hbCByb3RhdGlvbiBi
bGl0LiAgSW4gYWRkaXRpb24sCisgICAgICAgIC8vIEFOR0xFIG11c3QgY3JlYXRlIHRoZSBzd2Fw
Y2hhaW4gd2l0aCBWa1N3YXBjaGFpbkNyZWF0ZUluZm9LSFI6OnByZVRyYW5zZm9ybSBzZXQgdG8g
dGhlCisgICAgICAgIC8vIHZhbHVlIG9mIG1TdXJmYWNlQ2Fwcy5jdXJyZW50VHJhbnNmb3JtLgor
ICAgICAgICBtUHJlVHJhbnNmb3JtID0gbVN1cmZhY2VDYXBzLmN1cnJlbnRUcmFuc2Zvcm07Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIERlZmF1bHQgdG8gaWRlbnRpdHkgdHJh
bnNmb3JtLgorICAgICAgICBtUHJlVHJhbnNmb3JtID0gVktfU1VSRkFDRV9UUkFOU0ZPUk1fSURF
TlRJVFlfQklUX0tIUjsKKyAgICAgICAgaWYgKChtU3VyZmFjZUNhcHMuc3VwcG9ydGVkVHJhbnNm
b3JtcyAmIG1QcmVUcmFuc2Zvcm0pID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1QcmVU
cmFuc2Zvcm0gPSBtU3VyZmFjZUNhcHMuY3VycmVudFRyYW5zZm9ybTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIHVpbnQzMl90IHByZXNlbnRNb2RlQ291bnQgPSAwOwogICAgIEFOR0xFX1ZLX1RS
WShkaXNwbGF5VmssIHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSKHBo
eXNpY2FsRGV2aWNlLCBtU3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJlc2VudE1vZGVDb3VudCwg
bnVsbHB0cikpOwpAQCAtNTI3LDEzICs2MDEsNiBAQCBhbmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZh
Y2VWazo6aW5pdGlhbGl6ZUltcGwoRGlzcGxheVZrICpkaXNwbGF5VmspCiAgICAgLy8gd2lsbCBn
ZXQgY2xhbXBlZCB0byB0aGUgbWluL21heCB2YWx1ZXMgc3BlY2lmaWVkIGF0IGRpc3BsYXkgY3Jl
YXRpb24gdGltZS4KICAgICBzZXRTd2FwSW50ZXJ2YWwocmVuZGVyZXItPmdldEZlYXR1cmVzKCku
ZGlzYWJsZUZpZm9QcmVzZW50TW9kZS5lbmFibGVkID8gMCA6IDEpOwogCi0gICAgLy8gRGVmYXVs
dCB0byBpZGVudGl0eSB0cmFuc2Zvcm0uCi0gICAgbVByZVRyYW5zZm9ybSA9IFZLX1NVUkZBQ0Vf
VFJBTlNGT1JNX0lERU5USVRZX0JJVF9LSFI7Ci0gICAgaWYgKChtU3VyZmFjZUNhcHMuc3VwcG9y
dGVkVHJhbnNmb3JtcyAmIG1QcmVUcmFuc2Zvcm0pID09IDApCi0gICAgewotICAgICAgICBtUHJl
VHJhbnNmb3JtID0gbVN1cmZhY2VDYXBzLmN1cnJlbnRUcmFuc2Zvcm07Ci0gICAgfQotCiAgICAg
dWludDMyX3Qgc3VyZmFjZUZvcm1hdENvdW50ID0gMDsKICAgICBBTkdMRV9WS19UUlkoZGlzcGxh
eVZrLCB2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIocGh5c2ljYWxEZXZpY2Us
IG1TdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmc3VyZmFjZUZvcm1hdENvdW50LCBudWxscHRyKSk7CkBAIC03
NTMsNiArODIwLDE5IEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3VyZmFjZVZrOjpjcmVhdGVTd2Fw
Q2hhaW4odms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgY29uc3Qgdms6OkZvcm1hdCAmZm9ybWF0
ID0gcmVuZGVyZXItPmdldEZvcm1hdChtU3RhdGUuY29uZmlnLT5yZW5kZXJUYXJnZXRGb3JtYXQp
OwogICAgIFZrRm9ybWF0IG5hdGl2ZUZvcm1hdCAgICA9IGZvcm1hdC52a0ltYWdlRm9ybWF0Owog
CisgICAgZ2w6OkV4dGVudHMgcm90YXRlZEV4dGVudHMgPSBleHRlbnRzOworICAgIGlmIChJczkw
RGVncmVlUm90YXRpb24obVByZVRyYW5zZm9ybSkpCisgICAgeworICAgICAgICAvLyBUaGUgU3Vy
ZmFjZSBpcyBvcmllbnRlZCBzdWNoIHRoYXQgaXRzIGFzcGVjdCByYXRpbyBubyBsb25nZXIgbWF0
Y2hlcyB0aGF0IG9mIHRoZQorICAgICAgICAvLyBkZXZpY2UuICBJbiB0aGlzIGNhc2UsIHRoZSB3
aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzd2FwY2hhaW4gaW1hZ2VzIG11c3QgYmUgc3dhcHBlZCB0
bworICAgICAgICAvLyBtYXRjaCB0aGUgZGV2aWNlJ3MgbmF0aXZlIG9yaWVudGF0aW9uLiAgVGhp
cyBtdXN0IGFsc28gYmUgZG9uZSBmb3Igb3RoZXIgYXR0YWNobWVudHMKKyAgICAgICAgLy8gdXNl
ZCB3aXRoIHRoZSBzd2FwY2hhaW4gKGUuZy4gZGVwdGggYnVmZmVyKS4gIFRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG9mIHRoZSB2aWV3cG9ydCwKKyAgICAgICAgLy8gc2Npc3NvciwgYW5kIHJlbmRlci1w
YXNzIHJlbmRlciBhcmVhIG11c3QgYWxzbyBiZSBzd2FwcGVkLiAgVGhlbiwgd2hlbiBBTkdMRSBy
b3RhdGVzCisgICAgICAgIC8vIGdsX1Bvc2l0aW9uIGluIHRoZSB2ZXJ0ZXggc2hhZGVyLCB0aGUg
cmVuZGVyaW5nIHdpbGwgbG9vayB0aGUgc2FtZSBhcyBpZiBubworICAgICAgICAvLyBwcmUtcm90
YXRpb24gaGFkIGJlZW4gZG9uZS4KKyAgICAgICAgc3RkOjpzd2FwKHJvdGF0ZWRFeHRlbnRzLndp
ZHRoLCByb3RhdGVkRXh0ZW50cy5oZWlnaHQpOworICAgIH0KKwogICAgIC8vIFdlIG5lZWQgdHJh
bnNmZXIgc3JjIGZvciByZWFkaW5nIGJhY2sgZnJvbSB0aGUgYmFja2J1ZmZlci4KICAgICBWa0lt
YWdlVXNhZ2VGbGFncyBpbWFnZVVzYWdlRmxhZ3MgPSBrU3VyZmFjZVZLQ29sb3JJbWFnZVVzYWdl
RmxhZ3M7CiAKQEAgLTc3Myw4ICs4NTMsOCBAQCBhbmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZhY2VW
azo6Y3JlYXRlU3dhcENoYWluKHZrOjpDb250ZXh0ICpjb250ZXh0LAogICAgIHN3YXBjaGFpbklu
Zm8uaW1hZ2VDb2xvclNwYWNlICAgICAgICAgID0gTWFwRWdsQ29sb3JTcGFjZVRvVmtDb2xvclNw
YWNlKAogICAgICAgICBzdGF0aWNfY2FzdDxFR0xlbnVtPihtU3RhdGUuYXR0cmlidXRlcy5nZXQo
RUdMX0dMX0NPTE9SU1BBQ0UsIEVHTF9OT05FKSkpOwogICAgIC8vIE5vdGU6IFZ1bGthbiBkb2Vz
bid0IGFsbG93IDAtd2lkdGgvaGVpZ2h0IHN3YXBjaGFpbnMuCi0gICAgc3dhcGNoYWluSW5mby5p
bWFnZUV4dGVudC53aWR0aCAgICAgPSBzdGQ6Om1heChleHRlbnRzLndpZHRoLCAxKTsKLSAgICBz
d2FwY2hhaW5JbmZvLmltYWdlRXh0ZW50LmhlaWdodCAgICA9IHN0ZDo6bWF4KGV4dGVudHMuaGVp
Z2h0LCAxKTsKKyAgICBzd2FwY2hhaW5JbmZvLmltYWdlRXh0ZW50LndpZHRoICAgICA9IHN0ZDo6
bWF4KHJvdGF0ZWRFeHRlbnRzLndpZHRoLCAxKTsKKyAgICBzd2FwY2hhaW5JbmZvLmltYWdlRXh0
ZW50LmhlaWdodCAgICA9IHN0ZDo6bWF4KHJvdGF0ZWRFeHRlbnRzLmhlaWdodCwgMSk7CiAgICAg
c3dhcGNoYWluSW5mby5pbWFnZUFycmF5TGF5ZXJzICAgICAgPSAxOwogICAgIHN3YXBjaGFpbklu
Zm8uaW1hZ2VVc2FnZSAgICAgICAgICAgID0gaW1hZ2VVc2FnZUZsYWdzOwogICAgIHN3YXBjaGFp
bkluZm8uaW1hZ2VTaGFyaW5nTW9kZSAgICAgID0gVktfU0hBUklOR19NT0RFX0VYQ0xVU0lWRTsK
QEAgLTgwNSw3ICs4ODUsNyBAQCBhbmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZhY2VWazo6Y3JlYXRl
U3dhcENoYWluKHZrOjpDb250ZXh0ICpjb250ZXh0LAogICAgIEFOR0xFX1ZLX0NIRUNLKGNvbnRl
eHQsIHNhbXBsZXMgPiAwLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQpOwogCiAgICAg
VmtFeHRlbnQzRCB2a0V4dGVudHM7Ci0gICAgZ2xfdms6OkdldEV4dGVudChleHRlbnRzLCAmdmtF
eHRlbnRzKTsKKyAgICBnbF92azo6R2V0RXh0ZW50KHJvdGF0ZWRFeHRlbnRzLCAmdmtFeHRlbnRz
KTsKIAogICAgIGlmIChzYW1wbGVzID4gMSkKICAgICB7CkBAIC04ODYsMTIgKzk2NiwxNyBAQCBh
bmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZhY2VWazo6Y2hlY2tGb3JPdXRPZkRhdGVTd2FwY2hhaW4o
Q29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIC8vIElmIHdpbmRvdyBzaXplIGhhcyBjaGFu
Z2VkLCBjaGVjayB3aXRoIHN1cmZhY2UgY2FwYWJpbGl0aWVzLiAgSXQgaGFzIGJlZW4gb2JzZXJ2
ZWQgb24KICAgICAgICAgLy8gQW5kcm9pZCB0aGF0IGBnZXRDdXJyZW50V2luZG93U2l6ZSgpYCBy
ZXR1cm5zIDE5MjB4MTA4MCBmb3IgZXhhbXBsZSwgd2hpbGUgc3VyZmFjZQogICAgICAgICAvLyBj
YXBhYmlsaXRpZXMgcmV0dXJucyB0aGUgc2l6ZSB0aGUgc3VyZmFjZSB3YXMgY3JlYXRlZCB3aXRo
LgotICAgICAgICBpZiAoY3VycmVudEV4dGVudHMgIT0gc3dhcGNoYWluRXh0ZW50cykKKyAgICAg
ICAgY29uc3QgVmtQaHlzaWNhbERldmljZSAmcGh5c2ljYWxEZXZpY2UgPSBjb250ZXh0VmstPmdl
dFJlbmRlcmVyKCktPmdldFBoeXNpY2FsRGV2aWNlKCk7CisgICAgICAgIEFOR0xFX1ZLX1RSWShj
b250ZXh0VmssIHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSKHBoeXNp
Y2FsRGV2aWNlLCBtU3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1TdXJmYWNlQ2FwcykpOwor
ICAgICAgICBpZiAoY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLmVuYWJsZVByZVJvdGF0ZVN1cmZh
Y2VzLmVuYWJsZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFZrUGh5c2ljYWxEZXZp
Y2UgJnBoeXNpY2FsRGV2aWNlID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLT5nZXRQaHlzaWNh
bERldmljZSgpOwotICAgICAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHRWaywgdmtHZXRQaHlz
aWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNlLCAmbVN1cmZhY2VDYXBz
KSk7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHN1cmZhY2UncyB0cmFuc2Zvcm0sIHdoaWNo
IGNhbiBjaGFuZ2UgZXZlbiBpZiB0aGUgd2luZG93IHNpemUgZG9lcyBub3QuCisgICAgICAgICAg
ICBtUHJlVHJhbnNmb3JtID0gbVN1cmZhY2VDYXBzLmN1cnJlbnRUcmFuc2Zvcm07CisgICAgICAg
IH0KIAorICAgICAgICBpZiAoY3VycmVudEV4dGVudHMgIT0gc3dhcGNoYWluRXh0ZW50cykKKyAg
ICAgICAgewogICAgICAgICAgICAgdWludDMyX3Qgd2lkdGggID0gbVN1cmZhY2VDYXBzLmN1cnJl
bnRFeHRlbnQud2lkdGg7CiAgICAgICAgICAgICB1aW50MzJfdCBoZWlnaHQgPSBtU3VyZmFjZUNh
cHMuY3VycmVudEV4dGVudC5oZWlnaHQ7CiAKQEAgLTEwMzIsMjQgKzExMTcsMTYgQEAgYW5nbGU6
OlJlc3VsdCBXaW5kb3dTdXJmYWNlVms6OnByZXNlbnQoQ29udGV4dFZrICpjb250ZXh0VmssCiAg
ICAgU3dhcGNoYWluSW1hZ2UgJmltYWdlID0gbVN3YXBjaGFpbkltYWdlc1ttQ3VycmVudFN3YXBj
aGFpbkltYWdlSW5kZXhdOwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIg
PSBudWxscHRyOwotICAgIGlmICghY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCi0g
ICAgewotICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5nZXRPdXRzaWRlUmVuZGVyUGFzc0Nv
bW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvbnRl
eHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsK
IAogICAgIGlmIChtQ29sb3JJbWFnZU1TLnZhbGlkKCkpCiAgICAgewogICAgICAgICAvLyBUcmFu
c2l0aW9uIHRoZSBtdWx0aXNhbXBsZWQgaW1hZ2UgdG8gVFJBTlNGRVJfU1JDIGZvciByZXNvbHZl
LgotICAgICAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFOR0xFX1RSWShtQ29sb3JJbWFnZU1TLnJlY29yZENvbW1hbmRzKGNv
bnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1Db2xvcklt
YWdlTVMuY2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxh
eW91dDo6VHJhbnNmZXJTcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmRCdWZmZXIpOwotCi0gICAgICAgIC8vIFNldHVwIGdyYXBoIGRlcGVuZGVuY3kgYmV0d2Vl
biB0aGUgc3dhcGNoYWluIGltYWdlIGFuZCB0aGUgbXVsdGlzYW1wbGVkIG9uZS4KLSAgICAgICAg
aW1hZ2UuaW1hZ2UuYWRkUmVhZERlcGVuZGVuY3koY29udGV4dFZrLCAmbUNvbG9ySW1hZ2VNUyk7
CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VSZWFkKFZLX0lNQUdFX0FTUEVD
VF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQ29sb3JJbWFnZU1TKSk7CisgICAgICAgIEFO
R0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklU
LCB2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmltYWdlLmltYWdlKSk7CisgICAgICAgIEFOR0xFX1RSWShjb250
ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7
CiAKICAgICAgICAgVmtJbWFnZVJlc29sdmUgcmVzb2x2ZVJlZ2lvbiAgICAgICAgICAgICAgICA9
IHt9OwogICAgICAgICByZXNvbHZlUmVnaW9uLnNyY1N1YnJlc291cmNlLmFzcGVjdE1hc2sgICAg
ID0gVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVDsKQEAgLTEwNjEsMTkgKzExMzgsMTEgQEAgYW5n
bGU6OlJlc3VsdCBXaW5kb3dTdXJmYWNlVms6OnByZXNlbnQoQ29udGV4dFZrICpjb250ZXh0Vmss
CiAgICAgICAgIHJlc29sdmVSZWdpb24uZHN0T2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgPSB7
fTsKICAgICAgICAgcmVzb2x2ZVJlZ2lvbi5leHRlbnQgICAgICAgICAgICAgICAgICAgICAgICA9
IGltYWdlLmltYWdlLmdldEV4dGVudHMoKTsKIAotICAgICAgICBpZiAoY29udGV4dFZrLT5jb21t
YW5kR3JhcGhFbmFibGVkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFOR0xFX1RSWShpbWFn
ZS5pbWFnZS5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0gICAg
ICAgIH0KICAgICAgICAgbUNvbG9ySW1hZ2VNUy5yZXNvbHZlKCZpbWFnZS5pbWFnZSwgcmVzb2x2
ZVJlZ2lvbiwgY29tbWFuZEJ1ZmZlcik7CiAgICAgfQogCiAgICAgQU5HTEVfVFJZKHVwZGF0ZUFu
ZERyYXdPdmVybGF5KGNvbnRleHRWaywgJmltYWdlKSk7CiAKLSAgICBpZiAoY29udGV4dFZrLT5j
b21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewotICAgICAgICBBTkdMRV9UUlkoaW1hZ2UuaW1h
Z2UucmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotICAgIH0KICAg
ICBpbWFnZS5pbWFnZS5jaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6
OkltYWdlTGF5b3V0OjpQcmVzZW50LCBjb21tYW5kQnVmZmVyKTsKIAogICAgIC8vIEtub3dpbmcg
dGhhdCB0aGUga1N3YXBIaXN0b3J5U2l6ZSd0aCBzdWJtaXNzaW9uIGFnbyBoYXMgZmluaXNoZWQs
IHdlIGNhbiBrbm93IHRoYXQgdGhlCkBAIC0xMTU1LDEzICsxMjI0LDI0IEBAIGFuZ2xlOjpSZXN1
bHQgV2luZG93U3VyZmFjZVZrOjpwcmVzZW50KENvbnRleHRWayAqY29udGV4dFZrLAogICAgIC8v
IElmIE9VVF9PRl9EQVRFIGlzIHJldHVybmVkLCBpdCdzIG9rLCB3ZSBqdXN0IG5lZWQgdG8gcmVj
cmVhdGUgdGhlIHN3YXBjaGFpbiBiZWZvcmUKICAgICAvLyBjb250aW51aW5nLgogICAgIC8vIElm
IFZLX1NVQk9QVElNQUxfS0hSIGlzIHJldHVybmVkIGl0J3MgYmVjYXVzZSB0aGUgZGV2aWNlIG9y
aWVudGF0aW9uIGNoYW5nZWQgYW5kIHdlIHNob3VsZAotICAgIC8vIHJlY3JlYXRlIHRoZSBzd2Fw
Y2hhaW4gd2l0aCBhIG5ldyB3aW5kb3cgb3JpZW50YXRpb24uIFdlIGFyZW4ndCBxdWl0ZSByZWFk
eSBmb3IgdGhhdCBzbyBqdXN0Ci0gICAgLy8gaWdub3JlIGZvciBub3cuCi0gICAgLy8gVE9ETzog
Q2hlY2sgZm9yIHByZVJvdGF0aW9uOiBodHRwOi8vYW5nbGVidWcuY29tLzM1MDIKLSAgICAqcHJl
c2VudE91dE9mRGF0ZSA9IHJlc3VsdCA9PSBWS19FUlJPUl9PVVRfT0ZfREFURV9LSFI7Ci0gICAg
aWYgKCEqcHJlc2VudE91dE9mRGF0ZSAmJiByZXN1bHQgIT0gVktfU1VCT1BUSU1BTF9LSFIpCisg
ICAgLy8gcmVjcmVhdGUgdGhlIHN3YXBjaGFpbiB3aXRoIGEgbmV3IHdpbmRvdyBvcmllbnRhdGlv
bi4KKyAgICBpZiAoY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLmVuYWJsZVByZVJvdGF0ZVN1cmZh
Y2VzLmVuYWJsZWQpCiAgICAgewotICAgICAgICBBTkdMRV9WS19UUlkoY29udGV4dFZrLCByZXN1
bHQpOworICAgICAgICAvLyBBbHNvIGNoZWNrIGZvciBWS19TVUJPUFRJTUFMX0tIUi4KKyAgICAg
ICAgKnByZXNlbnRPdXRPZkRhdGUgPSAoKHJlc3VsdCA9PSBWS19FUlJPUl9PVVRfT0ZfREFURV9L
SFIpIHx8IChyZXN1bHQgPT0gVktfU1VCT1BUSU1BTF9LSFIpKTsKKyAgICAgICAgaWYgKCEqcHJl
c2VudE91dE9mRGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRl
eHRWaywgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICAvLyBXZSBhcmVuJ3QgcXVpdGUgcmVhZHkgZm9yIHRoYXQgc28ganVzdCBpZ25vcmUgZm9yIG5v
dy4KKyAgICAgICAgKnByZXNlbnRPdXRPZkRhdGUgPSByZXN1bHQgPT0gVktfRVJST1JfT1VUX09G
X0RBVEVfS0hSOworICAgICAgICBpZiAoISpwcmVzZW50T3V0T2ZEYXRlICYmIHJlc3VsdCAhPSBW
S19TVUJPUFRJTUFMX0tIUikKKyAgICAgICAgeworICAgICAgICAgICAgQU5HTEVfVktfVFJZKGNv
bnRleHRWaywgcmVzdWx0KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKQEAgLTEzNzUsNyArMTQ1NSwxMSBAQCBhbmdsZTo6UmVzdWx0IFdp
bmRvd1N1cmZhY2VWazo6Z2V0Q3VycmVudEZyYW1lYnVmZmVyKENvbnRleHRWayAqY29udGV4dFZr
LAogICAgIGZyYW1lYnVmZmVySW5mby5wQXR0YWNobWVudHMgICAgPSBpbWFnZVZpZXdzLmRhdGEo
KTsKICAgICBmcmFtZWJ1ZmZlckluZm8ud2lkdGggICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGV4dGVudHMud2lkdGgpOwogICAgIGZyYW1lYnVmZmVySW5mby5oZWlnaHQgICAgICAg
ICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXh0ZW50cy5oZWlnaHQpOwotICAgIGZyYW1lYnVm
ZmVySW5mby5sYXllcnMgICAgICAgICAgPSAxOworICAgIGlmIChJczkwRGVncmVlUm90YXRpb24o
bVByZVRyYW5zZm9ybSkpCisgICAgeworICAgICAgICBzdGQ6OnN3YXAoZnJhbWVidWZmZXJJbmZv
LndpZHRoLCBmcmFtZWJ1ZmZlckluZm8uaGVpZ2h0KTsKKyAgICB9CisgICAgZnJhbWVidWZmZXJJ
bmZvLmxheWVycyA9IDE7CiAKICAgICBpZiAoaXNNdWx0aVNhbXBsZWQoKSkKICAgICB7CkBAIC0x
NDE5LDEzICsxNTAzLDEzIEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3VyZmFjZVZrOjppbml0aWFs
aXplQ29udGVudHMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICB2azo6SW1hZ2VI
ZWxwZXIgKmltYWdlID0KICAgICAgICAgaXNNdWx0aVNhbXBsZWQoKSA/ICZtQ29sb3JJbWFnZU1T
IDogJm1Td2FwY2hhaW5JbWFnZXNbbUN1cnJlbnRTd2FwY2hhaW5JbWFnZUluZGV4XS5pbWFnZTsK
LSAgICBpbWFnZS0+c3RhZ2VTdWJyZXNvdXJjZVJvYnVzdENsZWFyKGltYWdlSW5kZXgsIGltYWdl
LT5nZXRGb3JtYXQoKS5pbnRlbmRlZEZvcm1hdCgpKTsKKyAgICBpbWFnZS0+c3RhZ2VTdWJyZXNv
dXJjZVJvYnVzdENsZWFyKGltYWdlSW5kZXgsIGltYWdlLT5nZXRGb3JtYXQoKSk7CiAgICAgQU5H
TEVfVFJZKGltYWdlLT5mbHVzaEFsbFN0YWdlZFVwZGF0ZXMoY29udGV4dFZrKSk7CiAKICAgICBp
ZiAobURlcHRoU3RlbmNpbEltYWdlLnZhbGlkKCkpCiAgICAgewotICAgICAgICBtRGVwdGhTdGVu
Y2lsSW1hZ2Uuc3RhZ2VTdWJyZXNvdXJjZVJvYnVzdENsZWFyKAotICAgICAgICAgICAgZ2w6Oklt
YWdlSW5kZXg6Ok1ha2UyRCgwKSwgbURlcHRoU3RlbmNpbEltYWdlLmdldEZvcm1hdCgpLmludGVu
ZGVkRm9ybWF0KCkpOworICAgICAgICBtRGVwdGhTdGVuY2lsSW1hZ2Uuc3RhZ2VTdWJyZXNvdXJj
ZVJvYnVzdENsZWFyKGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoMCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbEltYWdl
LmdldEZvcm1hdCgpKTsKICAgICAgICAgQU5HTEVfVFJZKG1EZXB0aFN0ZW5jaWxJbWFnZS5mbHVz
aEFsbFN0YWdlZFVwZGF0ZXMoY29udGV4dFZrKSk7CiAgICAgfQogCkBAIC0xNDYzLDggKzE1NDcs
NiBAQCBhbmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZhY2VWazo6dXBkYXRlQW5kRHJhd092ZXJsYXko
Q29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIGltYWdlLT5pbWFnZVZpZXdzLmdldExldmVs
TGF5ZXJEcmF3SW1hZ2VWaWV3KGNvbnRleHRWaywgaW1hZ2UtPmltYWdlLCAwLCAwLCAmaW1hZ2VW
aWV3KSk7CiAgICAgQU5HTEVfVFJZKG92ZXJsYXlWay0+b25QcmVzZW50KGNvbnRleHRWaywgJmlt
YWdlLT5pbWFnZSwgaW1hZ2VWaWV3KSk7CiAKLSAgICBvdmVybGF5LT5nZXRSdW5uaW5nR3JhcGhX
aWRnZXQoZ2w6OldpZGdldElkOjpWdWxrYW5Db21tYW5kR3JhcGhTaXplKS0+bmV4dCgpOwotCiAg
ICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VW
ay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9TdXJmYWNlVmsuaAppbmRleCA5ZDFmYWY5YzEyYTRkZjZjODUwZjA2YTExZmZkZjRlNGM2Y2Uy
NzY4Li5lMDY5YTAzMjYzZmY5YTI5OGEwMmMxZGJlOGM1ZWYzYWY2MGU5Y2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1
cmZhY2VWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vU3VyZmFjZVZrLmgKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgT2Zmc2NyZWVu
U3VyZmFjZVZrIDogcHVibGljIFN1cmZhY2VWawogCiAgICAgdms6OkltYWdlSGVscGVyICpnZXRD
b2xvckF0dGFjaG1lbnRJbWFnZSgpOwogCi0gIHByaXZhdGU6CisgIHByb3RlY3RlZDoKICAgICBz
dHJ1Y3QgQXR0YWNobWVudEltYWdlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgewog
ICAgICAgICBBdHRhY2htZW50SW1hZ2UoKTsKQEAgLTg2LDEzICs4NiwyMSBAQCBjbGFzcyBPZmZz
Y3JlZW5TdXJmYWNlVmsgOiBwdWJsaWMgU3VyZmFjZVZrCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xpbnQgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdms6OkZvcm1hdCAmdmtGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzYW1wbGVzKTsKKworICAgICAgICBhbmdsZTo6UmVzdWx0IGluaXRpYWxp
emVXaXRoRXh0ZXJuYWxNZW1vcnkoRGlzcGxheVZrICpkaXNwbGF5VmssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdms6OkZvcm1hdCAmdmtGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmZmVyKTsKKwogICAgICAg
ICB2b2lkIGRlc3Ryb3koY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KTsKIAogICAgICAgICB2
azo6SW1hZ2VIZWxwZXIgaW1hZ2U7CiAgICAgICAgIHZrOjpJbWFnZVZpZXdIZWxwZXIgaW1hZ2VW
aWV3czsKICAgICB9OwogCi0gICAgYW5nbGU6OlJlc3VsdCBpbml0aWFsaXplSW1wbChEaXNwbGF5
VmsgKmRpc3BsYXlWayk7CisgICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IGluaXRpYWxpemVJbXBs
KERpc3BsYXlWayAqZGlzcGxheVZrKTsKIAogICAgIEVHTGludCBtV2lkdGg7CiAgICAgRUdMaW50
IG1IZWlnaHQ7CkBAIC0yMTYsNiArMjI0LDggQEAgY2xhc3MgV2luZG93U3VyZmFjZVZrIDogcHVi
bGljIFN1cmZhY2VWawogCiAgICAgdms6OlNlbWFwaG9yZSBnZXRBY3F1aXJlSW1hZ2VTZW1hcGhv
cmUoKTsKIAorICAgIFZrU3VyZmFjZVRyYW5zZm9ybUZsYWdCaXRzS0hSIGdldFByZVRyYW5zZm9y
bSgpIHsgcmV0dXJuIG1QcmVUcmFuc2Zvcm07IH0KKwogICBwcm90ZWN0ZWQ6CiAgICAgYW5nbGU6
OlJlc3VsdCBzd2FwSW1wbChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCAqcmVjdHMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N5bmNWay5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N5bmNWay5j
cHAKaW5kZXggMzJjZmQ1MjQyYzQ3MGQwMzcxOGY5MmRiY2VlNDczOTljZTZjOGIxNC4uMDQ5Yzdk
NmQ0NTU5ZmJjYTVmMTgwZjAwZDAyMWNkMzI0ZjQ2NGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TeW5jVmsuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
U3luY1ZrLmNwcApAQCAtNTIsOCArNTIsOSBAQCBhbmdsZTo6UmVzdWx0IFN5bmNIZWxwZXI6Omlu
aXRpYWxpemUoQ29udGV4dFZrICpjb250ZXh0VmspCiAKICAgICBtRXZlbnQgPSBldmVudC5yZWxl
YXNlKCk7CiAKLSAgICBDb21tYW5kR3JhcGggKmNvbW1hbmRHcmFwaCA9IGNvbnRleHRWay0+Z2V0
Q29tbWFuZEdyYXBoKCk7Ci0gICAgY29tbWFuZEdyYXBoLT5zZXRGZW5jZVN5bmMobUV2ZW50KTsK
KyAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGNv
bnRleHRWay0+Zmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigmcHJpbWFyeSkpOworICAg
IHByaW1hcnktPnNldEV2ZW50KG1FdmVudC5nZXRIYW5kbGUoKSwgVktfUElQRUxJTkVfU1RBR0Vf
Qk9UVE9NX09GX1BJUEVfQklUKTsKICAgICBjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgp
LmFkZChtVXNlKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTEw
MywxMSArMTA0LDE0IEBAIGFuZ2xlOjpSZXN1bHQgU3luY0hlbHBlcjo6Y2xpZW50V2FpdChDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAot
dm9pZCBTeW5jSGVscGVyOjpzZXJ2ZXJXYWl0KENvbnRleHRWayAqY29udGV4dFZrKQorYW5nbGU6
OlJlc3VsdCBTeW5jSGVscGVyOjpzZXJ2ZXJXYWl0KENvbnRleHRWayAqY29udGV4dFZrKQogewot
ICAgIENvbW1hbmRHcmFwaCAqY29tbWFuZEdyYXBoID0gY29udGV4dFZrLT5nZXRDb21tYW5kR3Jh
cGgoKTsKLSAgICBjb21tYW5kR3JhcGgtPndhaXRGZW5jZVN5bmMobUV2ZW50KTsKKyAgICB2azo6
UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+
Zmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigmcHJpbWFyeSkpOworICAgIHByaW1hcnkt
PndhaXRFdmVudHMoMSwgbUV2ZW50LnB0cigpLCBWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0Zf
UElQRV9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9CT1RU
T01fT0ZfUElQRV9CSVQsIDAsIG51bGxwdHIsIDAsIG51bGxwdHIsIDAsIG51bGxwdHIpOwogICAg
IGNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkuYWRkKG1Vc2UpOworICAgIHJldHVybiBh
bmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAogYW5nbGU6OlJlc3VsdCBTeW5jSGVscGVyOjpn
ZXRTdGF0dXMoQ29udGV4dCAqY29udGV4dCwgYm9vbCAqc2lnbmFsZWQpCkBAIC0xODEsOCArMTg1
LDcgQEAgYW5nbGU6OlJlc3VsdCBTeW5jVms6OnNlcnZlcldhaXQoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsIEdMYml0ZmllbGQgZmxhZ3MsIEcKICAgICBBU1NFUlQodGltZW91dCA9PSBHTF9U
SU1FT1VUX0lHTk9SRUQpOwogCiAgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1w
bChjb250ZXh0KTsKLSAgICBtRmVuY2VTeW5jLnNlcnZlcldhaXQoY29udGV4dFZrKTsKLSAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAgcmV0dXJuIG1GZW5jZVN5bmMuc2Vy
dmVyV2FpdChjb250ZXh0VmspOwogfQogCiBhbmdsZTo6UmVzdWx0IFN5bmNWazo6Z2V0U3RhdHVz
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGludCAqb3V0UmVzdWx0KQpAQCAtMjY5LDkg
KzI3MiwxMCBAQCBlZ2w6OkVycm9yIEVHTFN5bmNWazo6c2VydmVyV2FpdChjb25zdCBlZ2w6OkRp
c3BsYXkgKmRpc3BsYXksCiAgICAgLy8gTm8gZmxhZ3MgYXJlIGN1cnJlbnRseSBpbXBsZW1lbnRl
ZC4KICAgICBBU1NFUlQoZmxhZ3MgPT0gMCk7CiAKKyAgICBEaXNwbGF5VmsgKmRpc3BsYXlWayA9
IHZrOjpHZXRJbXBsKGRpc3BsYXkpOwogICAgIENvbnRleHRWayAqY29udGV4dFZrID0gdms6Okdl
dEltcGwoY29udGV4dCk7Ci0gICAgbUZlbmNlU3luYy5zZXJ2ZXJXYWl0KGNvbnRleHRWayk7Ci0g
ICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworCisgICAgcmV0dXJuIGFuZ2xlOjpUb0VHTChtRmVu
Y2VTeW5jLnNlcnZlcldhaXQoY29udGV4dFZrKSwgZGlzcGxheVZrLCBFR0xfQkFEX0FMTE9DKTsK
IH0KIAogZWdsOjpFcnJvciBFR0xTeW5jVms6OmdldFN0YXR1cyhjb25zdCBlZ2w6OkRpc3BsYXkg
KmRpc3BsYXksIEVHTGludCAqb3V0U3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TeW5jVmsuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3luY1ZrLmgKaW5k
ZXggMGE5N2MxMTU1NDBlYjY1ODNlNTlhYzgzYzY1NWQ1YzM4YmVlZDA2Yi4uZGU3Y2NjY2JmZGY3
M2Y3ZTdlYWRjOGNjOGYxYmJlNWFlMjNlYTk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TeW5jVmsuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N5bmNWay5o
CkBAIC0xMiw3ICsxMiw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9FR0xTeW5j
SW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N5bmNJbXBsLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmgiCiAKIG5hbWVzcGFjZSBlZ2wKIHsK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU3luY0hlbHBlcgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZsdXNoQ29tbWFuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ2NF90IHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUmVzdWx0
ICpvdXRSZXN1bHQpOwotICAgIHZvaWQgc2VydmVyV2FpdChDb250ZXh0VmsgKmNvbnRleHRWayk7
CisgICAgYW5nbGU6OlJlc3VsdCBzZXJ2ZXJXYWl0KENvbnRleHRWayAqY29udGV4dFZrKTsKICAg
ICBhbmdsZTo6UmVzdWx0IGdldFN0YXR1cyhDb250ZXh0ICpjb250ZXh0LCBib29sICpzaWduYWxl
ZCk7CiAKICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcAppbmRl
eCA4NTkwZGIzMjk0NTc1NmU3NWRmMjU0MDY3NDQzMjIxYWQyZmJkZjQ2Li5mZjQyYzFmOGMyMGRl
MzM2ZWNhM2IxYTZhMzlhNmJmZGVkOTMwMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0
dXJlVmsuY3BwCkBAIC0yOSw4ICsyOSw5IEBAIG5hbWVzcGFjZSByeAogewogbmFtZXNwYWNlCiB7
Ci1jb25zdGV4cHIgVmtJbWFnZVVzYWdlRmxhZ3Mga0RyYXdTdGFnaW5nSW1hZ2VGbGFncyA9Ci0g
ICAgVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfU1JDX0JJVCB8IFZLX0lNQUdFX1VTQUdFX0NPTE9S
X0FUVEFDSE1FTlRfQklUOworY29uc3RleHByIFZrSW1hZ2VVc2FnZUZsYWdzIGtEcmF3U3RhZ2lu
Z0ltYWdlRmxhZ3MgPSBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9TUkNfQklUIHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfSU1BR0VfVVNB
R0VfQ09MT1JfQVRUQUNITUVOVF9CSVQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9EU1RfQklUOwog
CiBjb25zdGV4cHIgVmtJbWFnZVVzYWdlRmxhZ3Mga1RyYW5zZmVyU3RhZ2luZ0ltYWdlRmxhZ3Mg
PQogICAgIFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX1NSQ19CSVQgfCBWS19JTUFHRV9VU0FHRV9U
UkFOU0ZFUl9EU1RfQklUOwpAQCAtNDQ3LDcgKzQ0OCw3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVy
ZVZrOjpjb3B5U3ViSW1hZ2VJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAg
ICAgIGNvbnN0IHZrOjpJbWFnZVZpZXcgKnJlYWRJbWFnZVZpZXcgPSBudWxscHRyOwogICAgICAg
ICBBTkdMRV9UUlkoY29sb3JSZWFkUlQtPmdldEltYWdlVmlldyhjb250ZXh0VmssICZyZWFkSW1h
Z2VWaWV3KSk7Ci0gICAgICAgIGNvbG9yUmVhZFJULT5vbkltYWdlVmlld0FjY2Vzcyhjb250ZXh0
VmspOworICAgICAgICBjb2xvclJlYWRSVC0+cmV0YWluSW1hZ2VWaWV3cyhjb250ZXh0VmspOwog
CiAgICAgICAgIHJldHVybiBjb3B5U3ViSW1hZ2VJbXBsV2l0aERyYXcoY29udGV4dFZrLCBvZmZz
ZXRJbWFnZUluZGV4LCBtb2RpZmllZERlc3RPZmZzZXQsIGRlc3RGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgY2xpcHBlZFNvdXJjZUFyZWEsIGlzVmll
d3BvcnRGbGlwWSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKQEAgLTUxMSw4ICs1MTIsOSBAQCBhbmds
ZTo6UmVzdWx0IFRleHR1cmVWazo6Y29weVN1YlRleHR1cmVJbXBsKENvbnRleHRWayAqY29udGV4
dFZrLAogCiAgICAgLy8gUmVhZCBiYWNrIHRoZSByZXF1ZXN0ZWQgcmVnaW9uIG9mIHRoZSBzb3Vy
Y2UgdGV4dHVyZQogICAgIHVpbnQ4X3QgKnNvdXJjZURhdGEgPSBudWxscHRyOwotICAgIEFOR0xF
X1RSWShzb3VyY2UtPmNvcHlJbWFnZURhdGFUb0J1ZmZlckFuZEdldERhdGEoY29udGV4dFZrLCBz
b3VyY2VMZXZlbCwgMSwgc291cmNlQXJlYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VEYXRhKSk7CisgICAgZ2w6OkJveCBhcmVh
KDAsIDAsIDAsIHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0LCAxKTsKKyAgICBB
TkdMRV9UUlkoCisgICAgICAgIHNvdXJjZS0+Y29weUltYWdlRGF0YVRvQnVmZmVyQW5kR2V0RGF0
YShjb250ZXh0VmssIHNvdXJjZUxldmVsLCAxLCBhcmVhLCAmc291cmNlRGF0YSkpOwogCiAgICAg
Y29uc3QgYW5nbGU6OkZvcm1hdCAmc291cmNlVGV4dHVyZUZvcm1hdCA9IHNvdXJjZVZrRm9ybWF0
LmFjdHVhbEltYWdlRm9ybWF0KCk7CiAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmZGVzdFRleHR1
cmVGb3JtYXQgICA9IGRlc3RWa0Zvcm1hdC5hY3R1YWxJbWFnZUZvcm1hdCgpOwpAQCAtNTcyLDEz
ICs1NzQsOCBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Y29weVN1YkltYWdlSW1wbFdpdGhU
cmFuc2ZlcihDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICBnbDo6RXh0ZW50cyBleHRlbnRzICA9
IHtzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCwgMX07CiAKICAgICAvLyBDaGFu
Z2Ugc291cmNlIGxheW91dCBpZiBuZWNlc3NhcnkKLSAgICBpZiAoc3JjSW1hZ2UtPmlzTGF5b3V0
Q2hhbmdlTmVjZXNzYXJ5KHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMpKQotICAgIHsKLSAg
ICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKnNyY0xheW91dENoYW5nZTsKLSAgICAgICAgQU5HTEVf
VFJZKHNyY0ltYWdlLT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZzcmNMYXlvdXRDaGFuZ2Up
KTsKLSAgICAgICAgc3JjSW1hZ2UtPmNoYW5nZUxheW91dChWS19JTUFHRV9BU1BFQ1RfQ09MT1Jf
QklULCB2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNyY0xheW91dENoYW5nZSk7Ci0gICAgfQorICAgIEFOR0xFX1RSWSgKKyAgICAg
ICAgY29udGV4dFZrLT5vbkltYWdlUmVhZChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6
SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjLCBzcmNJbWFnZSkpOwogCiAgICAgVmtJbWFnZVN1YnJl
c291cmNlTGF5ZXJzIHNyY1N1YnJlc291cmNlID0ge307CiAgICAgc3JjU3VicmVzb3VyY2UuYXNw
ZWN0TWFzayAgICAgICAgICAgICAgID0gVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVDsKQEAgLTU5
MywxNCArNTkwLDkgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmNvcHlTdWJJbWFnZUltcGxX
aXRoVHJhbnNmZXIoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIEFOR0xFX1RSWShlbnN1
cmVJbWFnZUluaXRpYWxpemVkKGNvbnRleHRWaywgSW1hZ2VNaXBMZXZlbHM6OkVuYWJsZWRMZXZl
bHMpKTsKIAogICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKLSAgICAg
ICAgQU5HTEVfVFJZKG1JbWFnZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1
ZmZlcikpOwotCi0gICAgICAgIC8vIENoYW5nZSB0aGUgaW1hZ2UgbGF5b3V0IGJlZm9yZSB0aGUg
dHJhbnNmZXIKLSAgICAgICAgbUltYWdlLT5jaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NP
TE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZEJ1ZmZlcik7Ci0KLSAgICAgICAgLy8gU291cmNlJ3MgbGF5b3V0
IGNoYW5nZSBzaG91bGQgaGFwcGVuIGJlZm9yZSB0aGUgY29weQotICAgICAgICBzcmNJbWFnZS0+
YWRkUmVhZERlcGVuZGVuY3koY29udGV4dFZrLCBtSW1hZ2UpOworICAgICAgICBBTkdMRV9UUlko
Y29udGV4dFZrLT5vbkltYWdlV3JpdGUoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6Oklt
YWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1JbWFnZSkpOworICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5k
ZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgICAgIFZr
SW1hZ2VTdWJyZXNvdXJjZUxheWVycyBkZXN0U3VicmVzb3VyY2UgPSBzcmNTdWJyZXNvdXJjZTsK
ICAgICAgICAgZGVzdFN1YnJlc291cmNlLm1pcExldmVsICAgICAgICAgICAgICAgICA9IGxldmVs
OwpAQCAtNjI4LDE0ICs2MjAsOSBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Y29weVN1Yklt
YWdlSW1wbFdpdGhUcmFuc2ZlcihDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Rm9ybWF0LCBrVHJhbnNmZXJTdGFn
aW5nSW1hZ2VGbGFncywgbGF5ZXJDb3VudCkpOwogCiAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVy
ICpjb21tYW5kQnVmZmVyOwotICAgICAgICBBTkdMRV9UUlkoc3RhZ2luZ0ltYWdlLT5yZWNvcmRD
b21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0KLSAgICAgICAgLy8gQ2hhbmdl
IHRoZSBpbWFnZSBsYXlvdXQgYmVmb3JlIHRoZSB0cmFuc2ZlcgotICAgICAgICBzdGFnaW5nSW1h
Z2UtPmNoYW5nZUxheW91dChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlv
dXQ6OlRyYW5zZmVyRHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kQnVmZmVyKTsKLQotICAgICAgICAvLyBTb3VyY2UncyBsYXlvdXQgY2hhbmdlIHNob3VsZCBo
YXBwZW4gYmVmb3JlIHRoZSBjb3B5Ci0gICAgICAgIHNyY0ltYWdlLT5hZGRSZWFkRGVwZW5kZW5j
eShjb250ZXh0VmssIHN0YWdpbmdJbWFnZS5nZXQoKSk7CisgICAgICAgIEFOR0xFX1RSWShjb250
ZXh0VmstPm9uSW1hZ2VXcml0ZShWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VM
YXlvdXQ6OlRyYW5zZmVyRHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhZ2luZ0ltYWdlLmdldCgpKSk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0Vmst
PmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAg
ICAgICAgVmtJbWFnZVN1YnJlc291cmNlTGF5ZXJzIGRlc3RTdWJyZXNvdXJjZSA9IHNyY1N1YnJl
c291cmNlOwogICAgICAgICBkZXN0U3VicmVzb3VyY2UubWlwTGV2ZWwgICAgICAgICAgICAgICAg
ID0gMDsKQEAgLTgwMyw3ICs3OTAsNyBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6c2V0U3Rv
cmFnZUV4dGVybmFsTWVtb3J5KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIHNldElt
YWdlSGVscGVyKGNvbnRleHRWaywgbmV3IHZrOjpJbWFnZUhlbHBlcigpLCBtU3RhdGUuZ2V0VHlw
ZSgpLCBmb3JtYXQsIDAsIDAsIDAsIHRydWUpOwogCiAgICAgQU5HTEVfVFJZKAotICAgICAgICBt
ZW1vcnlPYmplY3RWay0+Y3JlYXRlSW1hZ2UoY29udGV4dCwgdHlwZSwgbGV2ZWxzLCBpbnRlcm5h
bEZvcm1hdCwgc2l6ZSwgb2Zmc2V0LCBtSW1hZ2UpKTsKKyAgICAgICAgbWVtb3J5T2JqZWN0Vmst
PmNyZWF0ZUltYWdlKGNvbnRleHRWaywgdHlwZSwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgc2l6
ZSwgb2Zmc2V0LCBtSW1hZ2UpKTsKIAogICAgIGdsOjpGb3JtYXQgZ2xGb3JtYXQoaW50ZXJuYWxG
b3JtYXQpOwogICAgIEFOR0xFX1RSWShpbml0SW1hZ2VWaWV3cyhjb250ZXh0VmssIGZvcm1hdCwg
Z2xGb3JtYXQuaW5mby0+c2l6ZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihsZXZlbHMpLApAQCAt
ODM2LDcgKzgyMyw3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpzZXRFR0xJbWFnZVRhcmdl
dChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBpZiAobUltYWdlLT5pc1F1ZXVlQ2hh
bmdlTmVjY2VzYXJ5KHJlbmRlcmVyUXVldWVGYW1pbHlJbmRleCkpCiAgICAgewogICAgICAgICB2
azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIEFOR0xF
X1RSWShtSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsK
KyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRC
dWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKICAgICAgICAgbUltYWdlLT5jaGFuZ2VMYXlvdXRBbmRR
dWV1ZShWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXJRdWV1ZUZhbWls
eUluZGV4LCBjb21tYW5kQnVmZmVyKTsKQEAgLTEwMDAsNyArOTg3LDcgQEAgYW5nbGU6OlJlc3Vs
dCBUZXh0dXJlVms6OnJlZGVmaW5lSW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiBh
bmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Y29weUltYWdlRGF0YVRvQnVmZmVyQW5kR2V0RGF0YShD
b250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxheWVy
Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAm
c291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKipvdXREYXRhUHRyKQogewogICAgIEFOR0xFX1RSQUNFX0VW
RU5UMCgiZ3B1LmFuZ2xlIiwgIlRleHR1cmVWazo6Y29weUltYWdlRGF0YVRvQnVmZmVyQW5kR2V0
RGF0YSIpOwpAQCAtMTAwOCwxMyArOTk1LDExIEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpj
b3B5SW1hZ2VEYXRhVG9CdWZmZXJBbmRHZXREYXRhKENvbnRleHRWayAqY29udGV4dFZrLAogICAg
IC8vIE1ha2Ugc3VyZSB0aGUgc291cmNlIGlzIGluaXRpYWxpemVkIGFuZCBpdCdzIGltYWdlcyBh
cmUgZmx1c2hlZC4KICAgICBBTkdMRV9UUlkoZW5zdXJlSW1hZ2VJbml0aWFsaXplZChjb250ZXh0
VmssIEltYWdlTWlwTGV2ZWxzOjpFbmFibGVkTGV2ZWxzKSk7CiAKLSAgICBnbDo6Qm94IGFyZWEo
MCwgMCwgMCwgc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEpOwotCiAgICAg
dms6OkJ1ZmZlckhlbHBlciAqY29weUJ1ZmZlciAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7
CiAgICAgdms6OlN0YWdpbmdCdWZmZXJPZmZzZXRBcnJheSBzb3VyY2VDb3B5T2Zmc2V0cyA9IHsw
LCAwfTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMDsKIAotICAgIEFOR0xFX1RSWShtSW1hZ2UtPmNvcHlJbWFnZURhdGFUb0J1ZmZlcihjb250
ZXh0VmssIHNvdXJjZUxldmVsLCBsYXllckNvdW50LCAwLCBhcmVhLAorICAgIEFOR0xFX1RSWSht
SW1hZ2UtPmNvcHlJbWFnZURhdGFUb0J1ZmZlcihjb250ZXh0VmssIHNvdXJjZUxldmVsLCBsYXll
ckNvdW50LCAwLCBzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmY29weUJ1ZmZlciwgJmJ1ZmZlclNpemUsICZzb3VyY2VDb3B5T2Zmc2V0cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0RGF0YVB0cikp
OwogCkBAIC0xMDQ1LDEzICsxMDMwLDEwIEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpjb3B5
QnVmZmVyRGF0YVRvSW1hZ2UoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgQU5HTEVfVFJZKGVu
c3VyZUltYWdlSW5pdGlhbGl6ZWQoY29udGV4dFZrLCBJbWFnZU1pcExldmVsczo6RW5hYmxlZExl
dmVscykpOwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBudWxscHRy
OwotICAgIEFOR0xFX1RSWShtSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1h
bmRCdWZmZXIpKTsKLQotICAgIG1JbWFnZS0+Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9D
T0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3QsIGNvbW1hbmRCdWZmZXIpOwot
Ci0gICAgLy8gU291cmNlJ3MgbGF5b3V0IGNoYW5nZSBzaG91bGQgaGFwcGVuIGJlZm9yZSB0aGUg
Y29weQotICAgIC8vIEFsc28gdXBkYXRlcyB0aGUgc2VyaWFsIG9mIHRoZSBzcmNCdWZmZXIKLSAg
ICBzcmNCdWZmZXItPmFkZFJlYWREZXBlbmRlbmN5KGNvbnRleHRWaywgbUltYWdlKTsKKyAgICBB
TkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1RSQU5TRkVSX1JFQURf
QklULCBzcmNCdWZmZXIpKTsKKyAgICBBTkdMRV9UUlkoCisgICAgICAgIGNvbnRleHRWay0+b25J
bWFnZVdyaXRlKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJh
bnNmZXJEc3QsIG1JbWFnZSkpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBh
c3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBWa0J1ZmZlcklt
YWdlQ29weSByZWdpb24gICAgICAgICAgICAgICA9IHt9OwogICAgIHJlZ2lvbi5idWZmZXJPZmZz
ZXQgICAgICAgICAgICAgICAgICAgID0gb2Zmc2V0OwpAQCAtMTA4OCwxNCArMTA3MCwxNiBAQCBh
bmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Z2VuZXJhdGVNaXBtYXBzV2l0aENQVShjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCkKICAgICB1aW50MzJfdCBpbWFnZUxheWVyQ291bnQgICAgICAgICAg
PSBtSW1hZ2UtPmdldExheWVyQ291bnQoKTsKIAogICAgIHVpbnQ4X3QgKmltYWdlRGF0YSA9IG51
bGxwdHI7Ci0gICAgZ2w6OlJlY3RhbmdsZSBpbWFnZUFyZWEoMCwgMCwgYmFzZUxldmVsRXh0ZW50
cy53aWR0aCwgYmFzZUxldmVsRXh0ZW50cy5oZWlnaHQpOworICAgIGdsOjpCb3ggaW1hZ2VBcmVh
KDAsIDAsIDAsIGJhc2VMZXZlbEV4dGVudHMud2lkdGgsIGJhc2VMZXZlbEV4dGVudHMuaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgIGJhc2VMZXZlbEV4dGVudHMuZGVwdGgpOwogCiAgICAg
QU5HTEVfVFJZKGNvcHlJbWFnZURhdGFUb0J1ZmZlckFuZEdldERhdGEoY29udGV4dFZrLCBtU3Rh
dGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW1hZ2VMYXllckNvdW50LCBpbWFnZUFyZWEsICZpbWFnZURhdGEp
KTsKIAogICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmFuZ2xlRm9ybWF0ID0gbUltYWdlLT5nZXRG
b3JtYXQoKS5hY3R1YWxJbWFnZUZvcm1hdCgpOwogICAgIEdMdWludCBzb3VyY2VSb3dQaXRjaCAg
ICAgICAgICAgID0gYmFzZUxldmVsRXh0ZW50cy53aWR0aCAqIGFuZ2xlRm9ybWF0LnBpeGVsQnl0
ZXM7Ci0gICAgc2l6ZV90IGJhc2VMZXZlbEFsbG9jYXRpb25TaXplICAgPSBzb3VyY2VSb3dQaXRj
aCAqIGJhc2VMZXZlbEV4dGVudHMuaGVpZ2h0OworICAgIEdMdWludCBzb3VyY2VEZXB0aFBpdGNo
ICAgICAgICAgID0gc291cmNlUm93UGl0Y2ggKiBiYXNlTGV2ZWxFeHRlbnRzLmhlaWdodDsKKyAg
ICBzaXplX3QgYmFzZUxldmVsQWxsb2NhdGlvblNpemUgICA9IHNvdXJjZURlcHRoUGl0Y2ggKiBi
YXNlTGV2ZWxFeHRlbnRzLmRlcHRoOwogCiAgICAgLy8gV2Ugbm93IGhhdmUgdGhlIGJhc2UgbGV2
ZWwgYXZhaWxhYmxlIHRvIGJlIG1hbmlwdWxhdGVkIGluIHRoZSBpbWFnZURhdGEgcG9pbnRlci4g
R2VuZXJhdGUgYWxsCiAgICAgLy8gdGhlIG1pc3NpbmcgbWlwbWFwcyB3aXRoIHRoZSBzbG93IHBh
dGguIEZvciBlYWNoIGxheWVyLCB1c2UgdGhlIGNvcGllZCBkYXRhIHRvIGdlbmVyYXRlIGFsbApA
QCAtMTEwNywxMSArMTA5MSwxMSBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Z2VuZXJhdGVN
aXBtYXBzV2l0aENQVShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICAgICAgQU5HTEVf
VFJZKGdlbmVyYXRlTWlwbWFwTGV2ZWxzV2l0aENQVSgKICAgICAgICAgICAgIGNvbnRleHRWaywg
YW5nbGVGb3JtYXQsIGxheWVyLCBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCkgKyAxLAog
ICAgICAgICAgICAgbVN0YXRlLmdldE1pcG1hcE1heExldmVsKCksIGJhc2VMZXZlbEV4dGVudHMu
d2lkdGgsIGJhc2VMZXZlbEV4dGVudHMuaGVpZ2h0LAotICAgICAgICAgICAgc291cmNlUm93UGl0
Y2gsIGltYWdlRGF0YSArIGJ1ZmZlck9mZnNldCkpOworICAgICAgICAgICAgYmFzZUxldmVsRXh0
ZW50cy5kZXB0aCwgc291cmNlUm93UGl0Y2gsIHNvdXJjZURlcHRoUGl0Y2gsIGltYWdlRGF0YSAr
IGJ1ZmZlck9mZnNldCkpOwogICAgIH0KIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5k
QnVmZmVyID0gbnVsbHB0cjsKLSAgICBBTkdMRV9UUlkobUltYWdlLT5yZWNvcmRDb21tYW5kcyhj
b250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5k
UmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKICAgICByZXR1
cm4gbUltYWdlLT5mbHVzaFN0YWdlZFVwZGF0ZXMoY29udGV4dFZrLCBnZXROYXRpdmVJbWFnZUxl
dmVsKDApLCBtSW1hZ2UtPmdldExldmVsQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0TmF0aXZlSW1hZ2VMYXllcigwKSwgbUltYWdlLT5nZXRMYXllckNv
dW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZm
ZXIpOwpAQCAtMTE1NSw3ICsxMTM5LDggQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmdlbmVy
YXRlTWlwbWFwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAgICAgICBpZiAobUltYWdl
LT5oYXNTdGFnZWRVcGRhdGVzKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZrOjpDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAgIEFOR0xFX1RSWSht
SW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKKyAgICAg
ICAgICAgIG1JbWFnZS0+cmV0YWluKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsK
KyAgICAgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21t
YW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAgICAgICAgICAgICBBTkdMRV9UUlkobUltYWdl
LT5mbHVzaFN0YWdlZFVwZGF0ZXMoY29udGV4dFZrLCBnZXROYXRpdmVJbWFnZUxldmVsKDApLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbWFnZS0+
Z2V0TGV2ZWxDb3VudCgpLCBnZXROYXRpdmVJbWFnZUxheWVyKDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbWFnZS0+Z2V0TGF5ZXJDb3VudCgp
LCBjb21tYW5kQnVmZmVyKSk7CkBAIC0xMTY2LDE3ICsxMTUxLDExIEBAIGFuZ2xlOjpSZXN1bHQg
VGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1hcChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAg
ICAgICAgQU5HTEVfVFJZKGNvcHlBbmRTdGFnZUltYWdlU3VicmVzb3VyY2UoY29udGV4dFZrLCBi
YXNlTGV2ZWxEZXNjLCBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0TmF0aXZlSW1hZ2VMYXllcigwKSwgMCwgbUltYWdlLT5nZXRCYXNlTGV2
ZWwoKSkpOwogCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBub2RlIGZvciB0aGUgaW1hZ2UgYW5k
IGFkZCBhIGdsb2JhbCBtZW1vcnkgYmFycmllciBmb3IgdGhlIHN0YWdpbmcgYnVmZmVyLgotICAg
ICAgICAvLyBJdCdzIHdyaXR0ZW4gdG8gYW5kIHN0YWdlZCB0byBiZSByZWFkIGZyb20gd2hlbiBl
bnN1cmVJbWFnZUluaXRpYWxpemVkKCkgaXMgY2FsbGVkLgotICAgICAgICBtSW1hZ2UtPmZpbmlz
aEN1cnJlbnRDb21tYW5kcyhjb250ZXh0VmspOwotICAgICAgICBtSW1hZ2UtPmFkZEdsb2JhbE1l
bW9yeUJhcnJpZXIoVktfQUNDRVNTX1RSQU5TRkVSX1dSSVRFX0JJVCwgVktfQUNDRVNTX1RSQU5T
RkVSX1JFQURfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktf
UElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCk7Ci0KICAgICAgICAgb25TdGFnaW5nQnVm
ZmVyQ2hhbmdlKCk7CiAgICAgICAgIC8vIFJlbGVhc2UgdGhlIG9yaWdpbiBpbWFnZSBhbmQgcmVj
cmVhdGUgaXQgd2l0aCBuZXcgbWlwbWFwIGNvdW50cy4KICAgICAgICAgcmVsZWFzZUltYWdlKGNv
bnRleHRWayk7CiAKLSAgICAgICAgbUltYWdlLT5vblJlc291cmNlUmVjcmVhdGVkKCZjb250ZXh0
VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKKyAgICAgICAgbUltYWdlLT5yZXRhaW4oJmNvbnRl
eHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwogCiAgICAgICAgIEFOR0xFX1RSWShlbnN1cmVJ
bWFnZUluaXRpYWxpemVkKGNvbnRleHRWaywgSW1hZ2VNaXBMZXZlbHM6OkZ1bGxNaXBDaGFpbikp
OwogICAgIH0KQEAgLTEyODMsNyArMTI2Miw3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpj
aGFuZ2VMZXZlbHMoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgaWYgKG1JbWFnZS0+dmFsaWQo
KSAmJiBtSW1hZ2UtPmhhc1N0YWdlZFVwZGF0ZXMoKSkKICAgICB7CiAgICAgICAgIHZrOjpDb21t
YW5kQnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgQU5HTEVfVFJZKG1J
bWFnZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOworICAgICAg
ICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigm
Y29tbWFuZEJ1ZmZlcikpOwogICAgICAgICBBTkdMRV9UUlkobUltYWdlLT5mbHVzaFN0YWdlZFVw
ZGF0ZXMoY29udGV4dFZrLCBnZXROYXRpdmVJbWFnZUxldmVsKDApLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUltYWdlLT5nZXRMZXZlbENvdW50KCksIGdl
dE5hdGl2ZUltYWdlTGF5ZXIoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtSW1hZ2UtPmdldExheWVyQ291bnQoKSwgY29tbWFuZEJ1ZmZlcikpOwpAQCAt
MTMzMywxOSArMTMxMiwxMyBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Y2hhbmdlTGV2ZWxz
KENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQ3JlYXRl
IGEgbmV3IG5vZGUgZm9yIHRoZSBpbWFnZSBhbmQgYWRkIGEgZ2xvYmFsIG1lbW9yeSBiYXJyaWVy
IGZvciB0aGUgc3RhZ2luZyBidWZmZXJzLgotICAgIC8vIFRoZXkgYXJlIHdyaXR0ZW4gdG8gYW5k
IHN0YWdlZCB0byBiZSByZWFkIGZyb20gd2hlbiBlbnN1cmVJbWFnZUluaXRpYWxpemVkKCkgaXMg
Y2FsbGVkLgotICAgIG1JbWFnZS0+ZmluaXNoQ3VycmVudENvbW1hbmRzKGNvbnRleHRWayk7Ci0g
ICAgbUltYWdlLT5hZGRHbG9iYWxNZW1vcnlCYXJyaWVyKFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklU
RV9CSVQsIFZLX0FDQ0VTU19UUkFOU0ZFUl9SRUFEX0JJVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCk7Ci0KICAg
ICAvLyBJbmZvcm0gdGhlIGZyb250IGVuZCB0aGF0IHdlJ3ZlIHVwZGF0ZWQgdGhlIHN0YWdpbmcg
YnVmZmVyCiAgICAgb25TdGFnaW5nQnVmZmVyQ2hhbmdlKCk7CiAgICAgLy8gTm93IHRoYXQgd2Un
dmUgc3RhZ2VkIGFsbCB0aGUgdXBkYXRlcywgcmVsZWFzZSB0aGUgY3VycmVudCBpbWFnZSBzbyB0
aGF0IGl0IHdpbGwgYmUKICAgICAvLyByZWNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdCBudW1iZXIg
b2YgbWlwIGxldmVscywgYmFzZSBsZXZlbCwgYW5kIG1heCBsZXZlbC4KICAgICByZWxlYXNlSW1h
Z2UoY29udGV4dFZrKTsKIAotICAgIG1JbWFnZS0+b25SZXNvdXJjZVJlY3JlYXRlZCgmY29udGV4
dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CisgICAgbUltYWdlLT5yZXRhaW4oJmNvbnRleHRW
ay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwogfQpAQCAtMTQyOSwxNCArMTQwMiw3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZr
OjplbnN1cmVJbWFnZUluaXRpYWxpemVkSW1wbChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICB9
CiAKICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAg
aWYgKGNvbnRleHRWay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgQU5H
TEVfVFJZKG1JbWFnZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5n
ZXRPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKLSAgICB9
CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZm
ZXIoJmNvbW1hbmRCdWZmZXIpKTsKICAgICByZXR1cm4gbUltYWdlLT5mbHVzaFN0YWdlZFVwZGF0
ZXMoY29udGV4dFZrLCBnZXROYXRpdmVJbWFnZUxldmVsKDApLCBtSW1hZ2UtPmdldExldmVsQ291
bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmF0aXZlSW1h
Z2VMYXllcigwKSwgbUltYWdlLT5nZXRMYXllckNvdW50KCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOwpAQCAtMTU4NSw3ICsxNTUxLDggQEAg
YW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmluaXRpYWxpemVDb250ZW50cyhjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICBjb25zdCB2azo6Rm9ybWF0ICZmb3JtYXQgPQogICAgICAgICB2
azo6R2V0SW1wbChjb250ZXh0KS0+Z2V0UmVuZGVyZXIoKS0+Z2V0Rm9ybWF0KGRlc2MuZm9ybWF0
LmluZm8tPnNpemVkSW50ZXJuYWxGb3JtYXQpOwogCi0gICAgbUltYWdlLT5zdGFnZVN1YnJlc291
cmNlUm9idXN0Q2xlYXIoaW1hZ2VJbmRleCwgZm9ybWF0LmludGVuZGVkRm9ybWF0KCkpOworICAg
IG1JbWFnZS0+c3RhZ2VTdWJyZXNvdXJjZVJvYnVzdENsZWFyKGltYWdlSW5kZXgsIGZvcm1hdCk7
CisgICAgb25TdGFnaW5nQnVmZmVyQ2hhbmdlKCk7CiAKICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fu
bm90IGVuc3VyZSB0aGUgaW1hZ2UgaXMgaW5pdGlhbGl6ZWQgYmVjYXVzZSB3ZSBtaWdodCBiZSBj
YWxsaW5nIHN1YkltYWdlCiAgICAgLy8gb24gYSBub24tY29tcGxldGUgY3ViZSBtYXAuCkBAIC0x
NjA0LDcgKzE1NzEsNyBAQCBjb25zdCB2azo6SW1hZ2VWaWV3ICZUZXh0dXJlVms6OmdldFJlYWRJ
bWFnZVZpZXdBbmRSZWNvcmRVc2UoQ29udGV4dFZrICpjb250ZXh0VgogewogICAgIEFTU0VSVCht
SW1hZ2UtPnZhbGlkKCkpOwogCi0gICAgbUltYWdlVmlld3Mub25SZXNvdXJjZUFjY2VzcygmY29u
dGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CisgICAgbUltYWdlVmlld3MucmV0YWluKCZj
b250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKIAogICAgIGlmIChtU3RhdGUuaXNTdGVu
Y2lsTW9kZSgpICYmIG1JbWFnZVZpZXdzLmhhc1N0ZW5jaWxSZWFkSW1hZ2VWaWV3KCkpCiAgICAg
ewpAQCAtMTYxOCw3ICsxNTg1LDcgQEAgY29uc3Qgdms6OkltYWdlVmlldyAmVGV4dHVyZVZrOjpn
ZXRGZXRjaEltYWdlVmlld0FuZFJlY29yZFVzZShDb250ZXh0VmsgKmNvbnRleHQKIHsKICAgICBB
U1NFUlQobUltYWdlLT52YWxpZCgpKTsKIAotICAgIG1JbWFnZVZpZXdzLm9uUmVzb3VyY2VBY2Nl
c3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworICAgIG1JbWFnZVZpZXdzLnJl
dGFpbigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CiAKICAgICAvLyBXZSBkb24n
dCBjdXJyZW50bHkgc3VwcG9ydCBmZXRjaCBmb3IgZGVwdGgvc3RlbmNpbCBjdWJlIG1hcCB0ZXh0
dXJlcy4KICAgICBBU1NFUlQoIW1JbWFnZVZpZXdzLmhhc1N0ZW5jaWxSZWFkSW1hZ2VWaWV3KCkg
fHwgIW1JbWFnZVZpZXdzLmhhc0ZldGNoSW1hZ2VWaWV3KCkpOwpAQCAtMTY4MCwxNiArMTY0Nywx
NyBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6aW5pdEltYWdlKENvbnRleHRWayAqY29udGV4
dFZrLAogCiAgICAgQU5HTEVfVFJZKGluaXRJbWFnZVZpZXdzKGNvbnRleHRWaywgZm9ybWF0LCBz
aXplZCwgbGV2ZWxDb3VudCwgbGF5ZXJDb3VudCkpOwogCi0gICAgLy8gSWYgdGhlIGltYWdlIGhh
cyBhbiBlbXVsYXRlZCBjaGFubmVsLCBhbHdheXMgY2xlYXIgaXQuICBUaGVzZSBjaGFubmVscyB3
aWxsIGJlIG1hc2tlZCBvdXQgaW4KLSAgICAvLyBmdXR1cmUgd3JpdGVzLCBhbmQgc2hvdWxkbid0
IGNvbnRhaW4gdW5pbml0aWFsaXplZCB2YWx1ZXMuCi0gICAgaWYgKGZvcm1hdC5oYXNFbXVsYXRl
ZEltYWdlQ2hhbm5lbHMoKSkKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGFuIGVtdWxhdGVkIGNo
YW5uZWwgb3Igcm9idXN0IHJlc291cmNlIGluaXQgaXMgZW5hYmxlZCwgYWx3YXlzIGNsZWFyIGl0
LgorICAgIC8vIFRoZXNlIGNoYW5uZWxzIHdpbGwgYmUgbWFza2VkIG91dCBpbiBmdXR1cmUgd3Jp
dGVzLCBhbmQgc2hvdWxkbid0IGNvbnRhaW4gdW5pbml0aWFsaXplZAorICAgIC8vIHZhbHVlcy4K
KyAgICBpZiAoY29udGV4dFZrLT5nZXRTdGF0ZSgpLmlzUm9idXN0UmVzb3VyY2VJbml0RW5hYmxl
ZCgpIHx8IGZvcm1hdC5oYXNFbXVsYXRlZEltYWdlQ2hhbm5lbHMoKSkKICAgICB7CiAgICAgICAg
IHVpbnQzMl90IGxldmVsQ291bnQgPSBtSW1hZ2UtPmdldExldmVsQ291bnQoKTsKIAogICAgICAg
ICBmb3IgKHVpbnQzMl90IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbENvdW50OyArK2xldmVsKQog
ICAgICAgICB7CiAgICAgICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUlu
ZGV4OjpNYWtlMkRBcnJheVJhbmdlKGxldmVsLCAwLCBsYXllckNvdW50KTsKLSAgICAgICAgICAg
IG1JbWFnZS0+c3RhZ2VTdWJyZXNvdXJjZUVtdWxhdGVkQ2xlYXIoaW5kZXgsIGZvcm1hdC5pbnRl
bmRlZEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1JbWFnZS0+c3RhZ2VTdWJyZXNvdXJjZVJvYnVz
dENsZWFyKGluZGV4LCBmb3JtYXQpOwogICAgICAgICAgICAgb25TdGFnaW5nQnVmZmVyQ2hhbmdl
KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzgzLDI2ICsxNzUxLDMzIEBAIGFuZ2xlOjpSZXN1
bHQgVGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1hcExldmVsc1dpdGhDUFUoQ29udGV4dFZrICpjb250
ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXhNaXBMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNvdXJjZVdpZHRoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qg
c291cmNlSGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNlRGVwdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzb3VyY2VSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc2l6ZV90IHNvdXJjZURlcHRoUGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNvdXJjZURhdGEpCiB7Ci0g
ICAgc2l6ZV90IHByZXZpb3VzTGV2ZWxXaWR0aCAgICA9IHNvdXJjZVdpZHRoOwotICAgIHNpemVf
dCBwcmV2aW91c0xldmVsSGVpZ2h0ICAgPSBzb3VyY2VIZWlnaHQ7Ci0gICAgdWludDhfdCAqcHJl
dmlvdXNMZXZlbERhdGEgICA9IHNvdXJjZURhdGE7Ci0gICAgc2l6ZV90IHByZXZpb3VzTGV2ZWxS
b3dQaXRjaCA9IHNvdXJjZVJvd1BpdGNoOworICAgIHNpemVfdCBwcmV2aW91c0xldmVsV2lkdGgg
ICAgICA9IHNvdXJjZVdpZHRoOworICAgIHNpemVfdCBwcmV2aW91c0xldmVsSGVpZ2h0ICAgICA9
IHNvdXJjZUhlaWdodDsKKyAgICBzaXplX3QgcHJldmlvdXNMZXZlbERlcHRoICAgICAgPSBzb3Vy
Y2VEZXB0aDsKKyAgICB1aW50OF90ICpwcmV2aW91c0xldmVsRGF0YSAgICAgPSBzb3VyY2VEYXRh
OworICAgIHNpemVfdCBwcmV2aW91c0xldmVsUm93UGl0Y2ggICA9IHNvdXJjZVJvd1BpdGNoOwor
ICAgIHNpemVfdCBwcmV2aW91c0xldmVsRGVwdGhQaXRjaCA9IHNvdXJjZURlcHRoUGl0Y2g7CiAK
ICAgICBmb3IgKEdMdWludCBjdXJyZW50TWlwTGV2ZWwgPSBmaXJzdE1pcExldmVsOyBjdXJyZW50
TWlwTGV2ZWwgPD0gbWF4TWlwTGV2ZWw7IGN1cnJlbnRNaXBMZXZlbCsrKQogICAgIHsKICAgICAg
ICAgLy8gQ29tcHV0ZSBuZXh0IGxldmVsIHdpZHRoIGFuZCBoZWlnaHQuCiAgICAgICAgIHNpemVf
dCBtaXBXaWR0aCAgPSBzdGQ6Om1heDxzaXplX3Q+KDEsIHByZXZpb3VzTGV2ZWxXaWR0aCA+PiAx
KTsKICAgICAgICAgc2l6ZV90IG1pcEhlaWdodCA9IHN0ZDo6bWF4PHNpemVfdD4oMSwgcHJldmlv
dXNMZXZlbEhlaWdodCA+PiAxKTsKKyAgICAgICAgc2l6ZV90IG1pcERlcHRoICA9IHN0ZDo6bWF4
PHNpemVfdD4oMSwgcHJldmlvdXNMZXZlbERlcHRoID4+IDEpOwogCiAgICAgICAgIC8vIFdpdGgg
dGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIG5leHQgbWlwLCB3ZSBjYW4gYWxsb2NhdGUgdGhl
IG5leHQgYnVmZmVyIHdlIG5lZWQuCi0gICAgICAgIHVpbnQ4X3QgKmRlc3REYXRhICAgPSBudWxs
cHRyOwotICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoID0gbWlwV2lkdGggKiBzb3VyY2VGb3Jt
YXQucGl4ZWxCeXRlczsKKyAgICAgICAgdWludDhfdCAqZGVzdERhdGEgICAgID0gbnVsbHB0cjsK
KyAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCAgID0gbWlwV2lkdGggKiBzb3VyY2VGb3JtYXQu
cGl4ZWxCeXRlczsKKyAgICAgICAgc2l6ZV90IGRlc3REZXB0aFBpdGNoID0gZGVzdFJvd1BpdGNo
ICogbWlwSGVpZ2h0OwogCi0gICAgICAgIHNpemVfdCBtaXBBbGxvY2F0aW9uU2l6ZSA9IGRlc3RS
b3dQaXRjaCAqIG1pcEhlaWdodDsKLSAgICAgICAgZ2w6OkV4dGVudHMgbWlwTGV2ZWxFeHRlbnRz
KHN0YXRpY19jYXN0PGludD4obWlwV2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1pcEhlaWdodCks
IDEpOworICAgICAgICBzaXplX3QgbWlwQWxsb2NhdGlvblNpemUgPSBkZXN0RGVwdGhQaXRjaCAq
IG1pcERlcHRoOworICAgICAgICBnbDo6RXh0ZW50cyBtaXBMZXZlbEV4dGVudHMoc3RhdGljX2Nh
c3Q8aW50PihtaXBXaWR0aCksIHN0YXRpY19jYXN0PGludD4obWlwSGVpZ2h0KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obWlwRGVwdGgpKTsK
IAogICAgICAgICBBTkdMRV9UUlkobUltYWdlLT5zdGFnZVN1YnJlc291cmNlVXBkYXRlQW5kR2V0
RGF0YSgKICAgICAgICAgICAgIGNvbnRleHRWaywgbWlwQWxsb2NhdGlvblNpemUsCkBAIC0xODEx
LDE1ICsxNzg2LDE3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1hcExl
dmVsc1dpdGhDUFUoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIG9uU3RhZ2luZ0J1ZmZl
ckNoYW5nZSgpOwogCiAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBtaXBtYXAgaW50byB0aGF0IG5l
dyBidWZmZXIKLSAgICAgICAgc291cmNlRm9ybWF0Lm1pcEdlbmVyYXRpb25GdW5jdGlvbihwcmV2
aW91c0xldmVsV2lkdGgsIHByZXZpb3VzTGV2ZWxIZWlnaHQsIDEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNMZXZlbERhdGEsIHByZXZpb3VzTGV2
ZWxSb3dQaXRjaCwgMCwgZGVzdERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdFJvd1BpdGNoLCAwKTsKKyAgICAgICAgc291cmNlRm9ybWF0Lm1pcEdl
bmVyYXRpb25GdW5jdGlvbigKKyAgICAgICAgICAgIHByZXZpb3VzTGV2ZWxXaWR0aCwgcHJldmlv
dXNMZXZlbEhlaWdodCwgcHJldmlvdXNMZXZlbERlcHRoLCBwcmV2aW91c0xldmVsRGF0YSwKKyAg
ICAgICAgICAgIHByZXZpb3VzTGV2ZWxSb3dQaXRjaCwgcHJldmlvdXNMZXZlbERlcHRoUGl0Y2gs
IGRlc3REYXRhLCBkZXN0Um93UGl0Y2gsIGRlc3REZXB0aFBpdGNoKTsKIAogICAgICAgICAvLyBT
d2FwIGZvciB0aGUgbmV4dCBpdGVyYXRpb24KLSAgICAgICAgcHJldmlvdXNMZXZlbFdpZHRoICAg
ID0gbWlwV2lkdGg7Ci0gICAgICAgIHByZXZpb3VzTGV2ZWxIZWlnaHQgICA9IG1pcEhlaWdodDsK
LSAgICAgICAgcHJldmlvdXNMZXZlbERhdGEgICAgID0gZGVzdERhdGE7Ci0gICAgICAgIHByZXZp
b3VzTGV2ZWxSb3dQaXRjaCA9IGRlc3RSb3dQaXRjaDsKKyAgICAgICAgcHJldmlvdXNMZXZlbFdp
ZHRoICAgICAgPSBtaXBXaWR0aDsKKyAgICAgICAgcHJldmlvdXNMZXZlbEhlaWdodCAgICAgPSBt
aXBIZWlnaHQ7CisgICAgICAgIHByZXZpb3VzTGV2ZWxEZXB0aCAgICAgID0gbWlwRGVwdGg7Cisg
ICAgICAgIHByZXZpb3VzTGV2ZWxEYXRhICAgICAgID0gZGVzdERhdGE7CisgICAgICAgIHByZXZp
b3VzTGV2ZWxSb3dQaXRjaCAgID0gZGVzdFJvd1BpdGNoOworICAgICAgICBwcmV2aW91c0xldmVs
RGVwdGhQaXRjaCA9IGRlc3REZXB0aFBpdGNoOwogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oCmluZGV4IGRl
YzJiOWVjYTcxMWMxNDA4YTc1Yjc4NDE1OTgxNWNiMmQ4ZGFmYWYuLjA3MWMyZjY0YTE4NGU0MDc0
ODY4MThkNGExNzI5MTdjOTQ1ZDczMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsu
aApAQCAtMTEsOCArMTEsOCBAQAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVEVY
VFVSRVZLX0hfCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oIgot
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vdmtfaGVscGVycy5oIgogCkBAIC0xNzksMTUgKzE3OSwxMiBAQCBjbGFzcyBU
ZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICAgICAgcmV0dXJuICptSW1hZ2U7CiAg
ICAgfQogCi0gICAgdm9pZCBvbkltYWdlVmlld1VzZSh2azo6UmVzb3VyY2VVc2VMaXN0ICpyZXNv
dXJjZVVzZUxpc3QpCisgICAgdm9pZCByZXRhaW5JbWFnZVZpZXdzKHZrOjpSZXNvdXJjZVVzZUxp
c3QgKnJlc291cmNlVXNlTGlzdCkKICAgICB7Ci0gICAgICAgIG1JbWFnZVZpZXdzLm9uUmVzb3Vy
Y2VBY2Nlc3MocmVzb3VyY2VVc2VMaXN0KTsKKyAgICAgICAgbUltYWdlVmlld3MucmV0YWluKHJl
c291cmNlVXNlTGlzdCk7CiAgICAgfQogCi0gICAgdm9pZCBvblNhbXBsZXJVc2Uodms6OlJlc291
cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KQotICAgIHsKLSAgICAgICAgbVNhbXBsZXIub25S
ZXNvdXJjZUFjY2VzcyhyZXNvdXJjZVVzZUxpc3QpOwotICAgIH0KKyAgICB2b2lkIHJldGFpblNh
bXBsZXIodms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KSB7IG1TYW1wbGVyLnJl
dGFpbihyZXNvdXJjZVVzZUxpc3QpOyB9CiAKICAgICB2b2lkIHJlbGVhc2VPd25lcnNoaXBPZklt
YWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIApAQCAtMjI5LDYgKzIyNiw4IEBAIGNs
YXNzIFRleHR1cmVWayA6IHB1YmxpYyBUZXh0dXJlSW1wbAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpwaXhlbHMpIG92ZXJyaWRlOwogCisgICAgQU5HTEVfSU5MSU5FIGJvb2wgaXNCb3VuZEFzSW1h
Z2VUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmlzQm91bmRBc0ltYWdlVGV4dHVyZSgp
OyB9CisKICAgcHJpdmF0ZToKICAgICAvLyBUcmFuc2Zvcm0gYW4gaW1hZ2UgaW5kZXggZnJvbSB0
aGUgZnJvbnRlbmQgaW50byBvbmUgdGhhdCBjYW4gYmUgdXNlZCBvbiB0aGUgYmFja2luZwogICAg
IC8vIEltYWdlSGVscGVyLCB0YWtpbmcgaW50byBhY2NvdW50IG1pcG1hcCBvciBjdWJlIGZhY2Ug
b2Zmc2V0cwpAQCAtMjczLDcgKzI3Miw3IEBAIGNsYXNzIFRleHR1cmVWayA6IHB1YmxpYyBUZXh0
dXJlSW1wbAogICAgIGFuZ2xlOjpSZXN1bHQgY29weUltYWdlRGF0YVRvQnVmZmVyQW5kR2V0RGF0
YShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXllckNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICoqb3V0RGF0YVB0
cik7CiAKICAgICBhbmdsZTo6UmVzdWx0IGNvcHlCdWZmZXJEYXRhVG9JbWFnZShDb250ZXh0Vmsg
KmNvbnRleHRWaywKQEAgLTI5MSw5ICsyOTAsMTEgQEAgY2xhc3MgVGV4dHVyZVZrIDogcHVibGlj
IFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGxheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBmaXJzdE1pcExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXhNaXBMZXZlbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlV2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUhlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
c291cmNlUm93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc2l6ZV90IHNvdXJjZVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzb3VyY2VIZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNvdXJj
ZURlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNpemVfdCBzb3VyY2VSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNlRGVwdGhQaXRjaCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpzb3VyY2VEYXRh
KTsKIAogICAgIGFuZ2xlOjpSZXN1bHQgY29weVN1YkltYWdlSW1wbChjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRi
YWNrVmsuY3BwCmluZGV4IDgwNjVlMjZhMDk4ZjI2ZGQ2NjQ4YzBkZjMwZmVjYTUzODk0ZTBiOGQu
LmE3YTEzMDc1YWU1MGM0OTAyNjE1OGYxMDIyOWEzNzEwNmE2MDk5OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNm
b3JtRmVlZGJhY2tWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmNwcApAQCAtMTEsNiArMTEs
NyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2xzbGFuZ193cmFwcGVyX3V0
aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmgiCkBAIC01Miw5ICs1Myw3
IEBAIGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtRmVlZGJhY2tWazo6YmVnaW4oY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgIG1SZWJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlciA9
IHRydWU7CiAgICAgfQogCi0gICAgb25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZChjb250
ZXh0KTsKLQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKKyAgICByZXR1cm4g
b25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZChjb250ZXh0VmspOwogfQogCiBhbmdsZTo6
UmVzdWx0IFRyYW5zZm9ybUZlZWRiYWNrVms6OmVuZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkKQEAgLTY5LDExICs2OCwxMCBAQCBhbmdsZTo6UmVzdWx0IFRyYW5zZm9ybUZlZWRiYWNrVms6
OmVuZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICAgICAgdms6OkdldEltcGwodHJh
bnNmb3JtRmVlZGJhY2tRdWVyeSktPm9uVHJhbnNmb3JtRmVlZGJhY2tFbmQoY29udGV4dCk7CiAg
ICAgfQogCi0gICAgdms6OkdldEltcGwoY29udGV4dCktPm9uVHJhbnNmb3JtRmVlZGJhY2tTdGF0
ZUNoYW5nZWQoKTsKLQotICAgIG9uVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZUNoYW5nZWQoY29udGV4
dCk7CisgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsKKyAg
ICBjb250ZXh0VmstPm9uVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZUNoYW5nZWQoKTsKIAotICAgIHJl
dHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKKyAgICByZXR1cm4gb25UcmFuc2Zvcm1GZWVk
YmFja1N0YXRlQ2hhbmdlZChjb250ZXh0VmspOwogfQogCiBhbmdsZTo6UmVzdWx0IFRyYW5zZm9y
bUZlZWRiYWNrVms6OnBhdXNlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQpAQCAtODQsOSAr
ODIsOSBAQCBhbmdsZTo6UmVzdWx0IFRyYW5zZm9ybUZlZWRiYWNrVms6OnBhdXNlKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0KQogCiAgICAgaWYgKGNvbnRleHRWay0+Z2V0RmVhdHVyZXMoKS5z
dXBwb3J0c1RyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uLmVuYWJsZWQpCiAgICAgewotICAgICAg
ICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBuZXcgY29tbWFuZEdyYXBoTm9kZSB0byBwZXJmb3JtIHRy
YW5zZm9ybSBmZWVkYmFjayBwYXVzZS9yZXN1bWUKLSAgICAgICAgLy8gYmVjYXN1ZSB2a0NtZEJl
Z2luL0VuZFRyYW5zZm9ybUZlZWRiYWNrIGNhbiBiZSBwbGFjZWQgb25jZSBwZXIgY29tbWFuZEdy
YXBoTm9kZS4KLSAgICAgICAgb25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZChjb250ZXh0
KTsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBlbmQgdGhlIFJlbmRlclBhc3MgdG8gcGVyZm9ybSB0
cmFuc2Zvcm0gZmVlZGJhY2sgcGF1c2UvcmVzdW1lCisgICAgICAgIC8vIGJlY2FzdWUgdmtDbWRC
ZWdpbi9FbmRUcmFuc2Zvcm1GZWVkYmFjayBjYW4gYmUgcGxhY2VkIG9uY2UgcGVyIFJlbmRlclBh
c3MuCisgICAgICAgIEFOR0xFX1RSWShvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNv
bnRleHRWaykpOwogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
QEAgLTEwMCw5ICs5OCw5IEBAIGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtRmVlZGJhY2tWazo6cmVz
dW1lKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogCiAgICAgaWYgKGNvbnRleHRWay0+Z2V0
RmVhdHVyZXMoKS5zdXBwb3J0c1RyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uLmVuYWJsZWQpCiAg
ICAgewotICAgICAgICAvLyBXZSBuZWVkIHRvIGNyZWF0ZSBuZXcgY29tbWFuZEdyYXBoTm9kZSB0
byBwZXJmb3JtIHRyYW5zZm9ybSBmZWVkYmFjayBwYXVzZS9yZXN1bWUKLSAgICAgICAgLy8gYmVj
YXN1ZSB2a0NtZEJlZ2luL0VuZFRyYW5zZm9ybUZlZWRiYWNrIGNhbiBiZSBwbGFjZWQgb25jZSBw
ZXIgY29tbWFuZEdyYXBoTm9kZS4KLSAgICAgICAgb25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hh
bmdlZChjb250ZXh0KTsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBlbmQgdGhlIFJlbmRlclBhc3Mg
dG8gcGVyZm9ybSB0cmFuc2Zvcm0gZmVlZGJhY2sgcGF1c2UvcmVzdW1lCisgICAgICAgIC8vIGJl
Y2FzdWUgdmtDbWRCZWdpbi9FbmRUcmFuc2Zvcm1GZWVkYmFjayBjYW4gYmUgcGxhY2VkIG9uY2Ug
cGVyIFJlbmRlclBhc3MuCisgICAgICAgIEFOR0xFX1RSWShvblRyYW5zZm9ybUZlZWRiYWNrU3Rh
dGVDaGFuZ2VkKGNvbnRleHRWaykpOwogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKQEAgLTE2NCw1MSArMTYyLDIwIEBAIGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3Jt
RmVlZGJhY2tWazo6YmluZEluZGV4ZWRCdWZmZXIoCiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tW
azo6dXBkYXRlRGVzY3JpcHRvclNldExheW91dCgKICAgICBDb250ZXh0VmsgKmNvbnRleHRWaywK
LSAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgU2hhZGVySW50
ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2c1ZhcmlhYmxlSW5mb01hcCwKKyAgICBzaXplX3QgeGZi
QnVmZmVyQ291bnQsCiAgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjU2V0TGF5
b3V0T3V0KSBjb25zdAogewogICAgIGlmICghY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLmVtdWxh
dGVUcmFuc2Zvcm1GZWVkYmFjay5lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXpl
X3QgeGZiQnVmZmVyQ291bnQgPSBwcm9ncmFtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJDb3VudCgpOwotCiAgICAgZm9yICh1aW50MzJfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlcklu
ZGV4IDwgeGZiQnVmZmVyQ291bnQ7ICsrYnVmZmVySW5kZXgpCiAgICAgewotICAgICAgICBkZXNj
U2V0TGF5b3V0T3V0LT51cGRhdGUoa1hmYkJpbmRpbmdJbmRleFN0YXJ0ICsgYnVmZmVySW5kZXgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfU1RP
UkFHRV9CVUZGRVIsIDEsIFZLX1NIQURFUl9TVEFHRV9WRVJURVhfQklUKTsKLSAgICB9Ci19Ci0K
LXZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWazo6YWRkRnJhbWVidWZmZXJEZXBlbmRlbmN5KENvbnRl
eHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkZyYW1lYnVm
ZmVySGVscGVyICpmcmFtZWJ1ZmZlcikgY29uc3QKLXsKLSAgICBjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4+ICZ4ZmJCdWZmZXJzID0KLSAgICAg
ICAgbVN0YXRlLmdldEluZGV4ZWRCdWZmZXJzKCk7Ci0gICAgc2l6ZV90IHhmYkJ1ZmZlckNvdW50
ID0gcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKTsKKyAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgYnVmZmVyTmFtZSAgICAgICAgICAgID0gR2V0WGZiQnVmZmVy
TmFtZShidWZmZXJJbmRleCk7CisgICAgICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxl
SW5mbyAmaW5mbyA9IHZzVmFyaWFibGVJbmZvTWFwW2J1ZmZlck5hbWVdOwogCi0gICAgQVNTRVJU
KHhmYkJ1ZmZlckNvdW50ID4gMCk7Ci0gICAgQVNTRVJUKHByb2dyYW1TdGF0ZS5nZXRUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlck1vZGUoKSAhPSBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTIHx8Ci0gICAg
ICAgICAgIHhmYkJ1ZmZlckNvdW50ID09IDEpOwotCi0gICAgVmtBY2Nlc3NGbGFncyB3cml0ZUFj
Y2Vzc1R5cGUgPSBWS19BQ0NFU1NfVFJBTlNGT1JNX0ZFRURCQUNLX1dSSVRFX0JJVF9FWFQ7Ci0g
ICAgaWYgKCFjb250ZXh0VmstPmdldEZlYXR1cmVzKCkuc3VwcG9ydHNUcmFuc2Zvcm1GZWVkYmFj
a0V4dGVuc2lvbi5lbmFibGVkKQotICAgIHsKLSAgICAgICAgd3JpdGVBY2Nlc3NUeXBlID0gVktf
QUNDRVNTX1NIQURFUl9XUklURV9CSVQ7Ci0gICAgfQotCi0gICAgLy8gU2V0IGZyYW1lYnVmZmVy
IGRlcGVuZGVudCB0byB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMuICBUaGlzIGlzIGVz
cGVjaWFsbHkgZG9uZQotICAgIC8vIHNlcGFyYXRlbHkgZnJvbSB8dXBkYXRlRGVzY3JpcHRvclNl
dHwsIHRvIGF2b2lkIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGJ1ZmZlciBiYXJyaWVycwotICAg
IC8vIGV2ZXJ5IHRpbWUgdGhlIGRlc2NyaXB0b3Igc2V0IGlzIHVwZGF0ZWQgKHdoaWNoLCBhcyB0
aGUgc2V0IGlzIHNoYXJlZCB3aXRoIGRlZmF1bHQgdW5pZm9ybXMsCi0gICAgLy8gY291bGQgZ2V0
IHVwZGF0ZWQgZnJlcXVlbnRseSkuCi0gICAgZm9yIChzaXplX3QgYnVmZmVySW5kZXggPSAwOyBi
dWZmZXJJbmRleCA8IHhmYkJ1ZmZlckNvdW50OyArK2J1ZmZlckluZGV4KQotICAgIHsKLSAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZidWZmZXJCaW5k
aW5nID0geGZiQnVmZmVyc1tidWZmZXJJbmRleF07Ci0gICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJ1ZmZlckJpbmRpbmcu
Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChidWZmZXIgIT0gbnVsbHB0cik7Ci0KLSAgICAgICAgdms6
OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gdms6OkdldEltcGwoYnVmZmVyKS0+Z2V0QnVm
ZmVyKCk7Ci0gICAgICAgIGJ1ZmZlckhlbHBlci5vbldyaXRlKGNvbnRleHRWaywgZnJhbWVidWZm
ZXIsIHdyaXRlQWNjZXNzVHlwZSk7CisgICAgICAgIGRlc2NTZXRMYXlvdXRPdXQtPnVwZGF0ZShp
bmZvLmJpbmRpbmcsIFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwgMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX1NIQURFUl9TVEFHRV9WRVJURVhfQklUKTsK
ICAgICB9CiB9CiAKQEAgLTI0Myw3ICsyMTAsOSBAQCB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6
OnVwZGF0ZURlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCiAKICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4+ICZ4ZmJCdWZm
ZXJzID0KICAgICAgICAgbVN0YXRlLmdldEluZGV4ZWRCdWZmZXJzKCk7Ci0gICAgc2l6ZV90IHhm
YkJ1ZmZlckNvdW50ID0gcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291
bnQoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBjb250
ZXh0VmstPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBBU1NFUlQoZXhl
Y3V0YWJsZSk7CisgICAgc2l6ZV90IHhmYkJ1ZmZlckNvdW50ID0gZXhlY3V0YWJsZS0+Z2V0VHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudChjb250ZXh0VmstPmdldFN0YXRlKCkpOwogCiAgICAg
QVNTRVJUKHhmYkJ1ZmZlckNvdW50ID4gMCk7CiAgICAgQVNTRVJUKHByb2dyYW1TdGF0ZS5nZXRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSAhPSBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTIHx8
CkBAIC0yNzUsNyArMjQ0LDYgQEAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjp1cGRhdGVEZXNj
cmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLAogfQogCiB2b2lkIFRyYW5zZm9ybUZlZWRi
YWNrVms6OmdldEJ1ZmZlck9mZnNldHMoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAm
cHJvZ3JhbVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRyYXdDYWxsRmlyc3RWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCAqb2Zmc2V0c091dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0c1NpemUpIGNvbnN0CkBAIC0yODYs
NyArMjU0LDkgQEAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpnZXRCdWZmZXJPZmZzZXRzKENv
bnRleHRWayAqY29udGV4dFZrLAogICAgIEdMc2l6ZWlwdHIgdmVydGljZXNEcmF3biA9IG1TdGF0
ZS5nZXRWZXJ0aWNlc0RyYXduKCk7CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xzaXplaT4gJmJ1
ZmZlclN0cmlkZXMgPQogICAgICAgICBtU3RhdGUuZ2V0Qm91bmRQcm9ncmFtKCktPmdldFRyYW5z
Zm9ybUZlZWRiYWNrU3RyaWRlcygpOwotICAgIHNpemVfdCB4ZmJCdWZmZXJDb3VudCA9IHByb2dy
YW1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50KCk7CisgICAgY29uc3QgZ2w6
OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gY29udGV4dFZrLT5nZXRTdGF0ZSgpLmdl
dFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUpOworICAgIHNpemVf
dCB4ZmJCdWZmZXJDb3VudCA9IGV4ZWN1dGFibGUtPmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
Q291bnQoY29udGV4dFZrLT5nZXRTdGF0ZSgpKTsKIAogICAgIEFTU0VSVCh4ZmJCdWZmZXJDb3Vu
dCA+IDApOwogCkBAIC0zMTIsNyArMjgyLDcgQEAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpn
ZXRCdWZmZXJPZmZzZXRzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIH0KIH0KIAotdm9pZCBU
cmFuc2Zvcm1GZWVkYmFja1ZrOjpvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KQorYW5nbGU6OlJlc3VsdCBUcmFuc2Zvcm1GZWVkYmFja1Zr
OjpvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKENvbnRleHRWayAqY29udGV4dFZrKQog
ewogICAgIC8vIEN1cnJlbnRseSwgd2UgZG9uJ3QgaGFuZGxlIHJlc291cmNlcyBzd2l0Y2hpbmcg
ZnJvbSByZWFkLW9ubHkgdG8gd3JpdGFibGUgYW5kIGJhY2sgY29ycmVjdGx5LgogICAgIC8vIElu
IHRoZSBjYXNlIG9mIHRyYW5zZm9ybSBmZWVkYmFjaywgdGhlIGF0dGFjaGVkIGJ1ZmZlcnMgY2Fu
IHN3aXRjaCBiZXR3ZWVuIGJlaW5nIHdyaXR0ZW4gYnkKQEAgLTMyMiwxNSArMjkyLDggQEAgdm9p
ZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNv
bnN0IGdsOjpDb250ZXh0ICpjb24KICAgICAvLyBUT0RPKHN5b3Vzc2VmaSk6IGRldGVjdCBjaGFu
Z2VzIHRvIGJ1ZmZlciB1c2FnZSAoZS5nLiBhcyB0cmFuc2Zvcm0gZmVlZGJhY2sgb3V0cHV0LCB2
ZXJ0ZXgKICAgICAvLyBvciBpbmRleCBkYXRhIGV0YykgaW4gdGhlIGZyb250IGVuZCBhbmQgbm90
aWZ5IHRoZSBiYWNrZW5kLiAgQSBuZXcgbm9kZSBzaG91bGQgYmUgY3JlYXRlZAogICAgIC8vIG9u
bHkgb24gc3VjaCBjaGFuZ2VzLiAgaHR0cDovL2FuZ2xlYnVnLmNvbS8zMjA1Ci0gICAgQ29udGV4
dFZrICpjb250ZXh0VmsgICAgICAgICAgICAgICA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOwotICAg
IEZyYW1lYnVmZmVyVmsgKmZyYW1lYnVmZmVyVmsgICAgICAgPSB2azo6R2V0SW1wbChjb250ZXh0
LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpKTsKLSAgICB2azo6RnJhbWVidWZmZXJI
ZWxwZXIgKmZyYW1lYnVmZmVyID0gZnJhbWVidWZmZXJWay0+Z2V0RnJhbWVidWZmZXIoKTsKLQot
ICAgIGZyYW1lYnVmZmVyLT51cGRhdGVDdXJyZW50QWNjZXNzTm9kZXMoKTsKLSAgICBpZiAoZnJh
bWVidWZmZXItPmhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpCi0gICAgewotICAgICAgICBmcmFtZWJ1
ZmZlci0+ZmluaXNoQ3VycmVudENvbW1hbmRzKGNvbnRleHRWayk7Ci0gICAgfQorICAgIEFOR0xF
X1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3MoKSk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwogfQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6OndyaXRlRGVzY3Jp
cHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaywKQEAgLTMzOCwxMiArMzAxLDE3IEBAIHZvaWQg
VHJhbnNmb3JtRmVlZGJhY2tWazo6d3JpdGVEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4
dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXNj
cmlwdG9yQnVmZmVySW5mbyAqcEJ1ZmZlckluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY1NldCkgY29uc3QKIHsKLSAg
ICBWa0RldmljZSBkZXZpY2UgPSBjb250ZXh0VmstPmdldERldmljZSgpOworICAgIFZrRGV2aWNl
IGRldmljZSAgICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7CisgICAg
UHJvZ3JhbUV4ZWN1dGFibGVWayAqZXhlY3V0YWJsZVZrID0gY29udGV4dFZrLT5nZXRFeGVjdXRh
YmxlKCk7CisgICAgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwIHZhcmlhYmxlSW5m
b01hcCA9CisgICAgICAgIGV4ZWN1dGFibGVWay0+Z2V0U2hhZGVySW50ZXJmYWNlVmFyaWFibGVJ
bmZvTWFwKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgYnVmZmVyTmFtZSAgICAgID0gR2V0WGZi
QnVmZmVyTmFtZSgwKTsKKyAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmluZm8gPSB2
YXJpYWJsZUluZm9NYXBbZ2w6OlNoYWRlclR5cGU6OlZlcnRleF1bYnVmZmVyTmFtZV07CiAKICAg
ICBWa1dyaXRlRGVzY3JpcHRvclNldCB3cml0ZURlc2NyaXB0b3JJbmZvID0ge307CiAgICAgd3Jp
dGVEZXNjcmlwdG9ySW5mby5zVHlwZSAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBF
X1dSSVRFX0RFU0NSSVBUT1JfU0VUOwogICAgIHdyaXRlRGVzY3JpcHRvckluZm8uZHN0U2V0ICAg
ICAgICAgICAgICAgPSBkZXNjU2V0OwotICAgIHdyaXRlRGVzY3JpcHRvckluZm8uZHN0QmluZGlu
ZyAgICAgICAgICAgPSBrWGZiQmluZGluZ0luZGV4U3RhcnQ7CisgICAgd3JpdGVEZXNjcmlwdG9y
SW5mby5kc3RCaW5kaW5nICAgICAgICAgICA9IGluZm8uYmluZGluZzsKICAgICB3cml0ZURlc2Ny
aXB0b3JJbmZvLmRzdEFycmF5RWxlbWVudCAgICAgID0gMDsKICAgICB3cml0ZURlc2NyaXB0b3JJ
bmZvLmRlc2NyaXB0b3JDb3VudCAgICAgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHhmYkJ1ZmZl
ckNvdW50KTsKICAgICB3cml0ZURlc2NyaXB0b3JJbmZvLmRlc2NyaXB0b3JUeXBlICAgICAgID0g
VktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVk
YmFja1ZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaAppbmRleCAwYWMxNzdiYjk2Y2IzNWI1ZDlmNGE2
ZDI4YzliZDdmMWFhYjczNTE2Li4zMjE5ODkwN2RiYWQ5OGI0OGZkMzA2ODYzZGQ0NWIwNGVhZGMy
ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsu
aApAQCAtMTEsNiArMTEsOCBAQAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fVFJB
TlNGT1JNRkVFREJBQ0tWS19IXwogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVHJhbnNm
b3JtRmVlZGJhY2tJbXBsLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbHNsYW5n
X3dyYXBwZXJfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
aGVscGVycy5oIgogCiBuYW1lc3BhY2UgZ2wKQEAgLTU0LDExICs1Niw5IEBAIGNsYXNzIFRyYW5z
Zm9ybUZlZWRiYWNrVmsgOiBwdWJsaWMgVHJhbnNmb3JtRmVlZGJhY2tJbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0QmluZGluZ1BvaW50ZXI8
Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVEZXNjcmlw
dG9yU2V0TGF5b3V0KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5m
b01hcCAmdnNWYXJpYWJsZUluZm9NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB4ZmJCdWZmZXJDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjU2V0TGF5b3V0T3V0KSBjb25z
dDsKLSAgICB2b2lkIGFkZEZyYW1lYnVmZmVyRGVwZW5kZW5jeShDb250ZXh0VmsgKmNvbnRleHRW
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0
YXRlICZwcm9ncmFtU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6
OkZyYW1lYnVmZmVySGVscGVyICpmcmFtZWJ1ZmZlcikgY29uc3Q7CiAgICAgdm9pZCBpbml0RGVz
Y3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCB4ZmJCdWZmZXJDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjpCdWZmZXJIZWxwZXIgKmVtcHR5QnVmZmVyLApAQCAtNjcsNyArNjcsNiBAQCBjbGFzcyBUcmFu
c2Zvcm1GZWVkYmFja1ZrIDogcHVibGljIFRyYW5zZm9ybUZlZWRiYWNrSW1wbAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGVzY3JpcHRvclNldCBkZXNjU2V0KSBj
b25zdDsKICAgICB2b2lkIGdldEJ1ZmZlck9mZnNldHMoQ29udGV4dFZrICpjb250ZXh0VmssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1T
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd0NhbGxGaXJzdFZlcnRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqb2Zmc2V0c091dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldHNTaXplKSBjb25zdDsKQEAgLTg3LDcg
Kzg2LDcgQEAgY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tWayA6IHB1YmxpYyBUcmFuc2Zvcm1GZWVk
YmFja0ltcGwKICAgICB9CiAKICAgcHJpdmF0ZToKLSAgICB2b2lkIG9uVHJhbnNmb3JtRmVlZGJh
Y2tTdGF0ZUNoYW5nZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOworICAgIGFuZ2xlOjpS
ZXN1bHQgb25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZChDb250ZXh0VmsgKmNvbnRleHRW
ayk7CiAgICAgdm9pZCB3cml0ZURlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhmYkJ1ZmZlckNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZrRGVzY3JpcHRvckJ1ZmZlckluZm8gKnBCdWZmZXJJbmZv
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9VdGlsc1ZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vVXRpbHNWay5jcHAKaW5kZXggZWI0MzY5NjZjYjIxMzNlMDQ0
MjdjOWVhYjgwZTM0YzcwOWEwYWEwYS4uNmM0YWMwYmJiZDI3NTY0YjYwYjJkMTVmMjAxYzliYjZh
ZWFmZWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9VdGlsc1ZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1V0aWxzVmsuY3BwCkBAIC0xNywxNCArMTcs
MTUgQEAKIG5hbWVzcGFjZSByeAogewogCi1uYW1lc3BhY2UgQnVmZmVyVXRpbHNfY29tcCAgICAg
ICAgICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6QnVmZmVyVXRpbHNfY29tcDsKLW5hbWVz
cGFjZSBDb252ZXJ0VmVydGV4X2NvbXAgICAgICAgICAgICAgID0gdms6OkludGVybmFsU2hhZGVy
OjpDb252ZXJ0VmVydGV4X2NvbXA7Ci1uYW1lc3BhY2UgSW1hZ2VDbGVhcl9mcmFnICAgICAgICAg
ICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6SW1hZ2VDbGVhcl9mcmFnOwotbmFtZXNwYWNl
IEltYWdlQ29weV9mcmFnICAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxTaGFkZXI6Oklt
YWdlQ29weV9mcmFnOwotbmFtZXNwYWNlIEJsaXRSZXNvbHZlX2ZyYWcgICAgICAgICAgICAgICAg
PSB2azo6SW50ZXJuYWxTaGFkZXI6OkJsaXRSZXNvbHZlX2ZyYWc7Ci1uYW1lc3BhY2UgQmxpdFJl
c29sdmVTdGVuY2lsTm9FeHBvcnRfY29tcCA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6QmxpdFJlc29s
dmVTdGVuY2lsTm9FeHBvcnRfY29tcDsKLW5hbWVzcGFjZSBPdmVybGF5Q3VsbF9jb21wICAgICAg
ICAgICAgICAgID0gdms6OkludGVybmFsU2hhZGVyOjpPdmVybGF5Q3VsbF9jb21wOwotbmFtZXNw
YWNlIE92ZXJsYXlEcmF3X2NvbXAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxTaGFkZXI6
Ok92ZXJsYXlEcmF3X2NvbXA7CituYW1lc3BhY2UgQnVmZmVyVXRpbHNfY29tcCAgICAgICAgICAg
ICAgICAgID0gdms6OkludGVybmFsU2hhZGVyOjpCdWZmZXJVdGlsc19jb21wOworbmFtZXNwYWNl
IENvbnZlcnRWZXJ0ZXhfY29tcCAgICAgICAgICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6
Q29udmVydFZlcnRleF9jb21wOworbmFtZXNwYWNlIEltYWdlQ2xlYXJfZnJhZyAgICAgICAgICAg
ICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6SW1hZ2VDbGVhcl9mcmFnOworbmFtZXNwYWNl
IEltYWdlQ29weV9mcmFnICAgICAgICAgICAgICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6
SW1hZ2VDb3B5X2ZyYWc7CituYW1lc3BhY2UgQmxpdFJlc29sdmVfZnJhZyAgICAgICAgICAgICAg
ICAgID0gdms6OkludGVybmFsU2hhZGVyOjpCbGl0UmVzb2x2ZV9mcmFnOworbmFtZXNwYWNlIEJs
aXRSZXNvbHZlU3RlbmNpbE5vRXhwb3J0X2NvbXAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6Qmxp
dFJlc29sdmVTdGVuY2lsTm9FeHBvcnRfY29tcDsKK25hbWVzcGFjZSBPdmVybGF5Q3VsbF9jb21w
ICAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxTaGFkZXI6Ok92ZXJsYXlDdWxsX2NvbXA7
CituYW1lc3BhY2UgT3ZlcmxheURyYXdfY29tcCAgICAgICAgICAgICAgICAgID0gdms6OkludGVy
bmFsU2hhZGVyOjpPdmVybGF5RHJhd19jb21wOworbmFtZXNwYWNlIENvbnZlcnRJbmRleEluZGly
ZWN0TGluZUxvb3BfY29tcCA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6Q29udmVydEluZGV4SW5kaXJl
Y3RMaW5lTG9vcF9jb21wOwogCiBuYW1lc3BhY2UKIHsKQEAgLTI5Nyw2ICsyOTgsMjIgQEAgdWlu
dDMyX3QgR2V0QmxpdFJlc29sdmVGbGFncyhib29sIGJsaXRDb2xvciwKICAgICB9CiB9CiAKK3Vp
bnQzMl90IEdldENvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BGbGFnKHVpbnQzMl90IGluZGlj
ZXNCaXRzV2lkdGgpCit7CisgICAgc3dpdGNoIChpbmRpY2VzQml0c1dpZHRoKQorICAgIHsKKyAg
ICAgICAgY2FzZSA4OgorICAgICAgICAgICAgcmV0dXJuIENvbnZlcnRJbmRleEluZGlyZWN0TGlu
ZUxvb3BfY29tcDo6a0lzOEJpdHM7CisgICAgICAgIGNhc2UgMTY6CisgICAgICAgICAgICByZXR1
cm4gQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wOjprSXMxNkJpdHM7CisgICAgICAg
IGNhc2UgMzI6CisgICAgICAgICAgICByZXR1cm4gQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9v
cF9jb21wOjprSXMzMkJpdHM7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiB1aW50MzJfdCBHZXRG
b3JtYXREZWZhdWx0Q2hhbm5lbE1hc2soY29uc3Qgdms6OkZvcm1hdCAmZm9ybWF0KQogewogICAg
IHVpbnQzMl90IG1hc2sgPSAwOwpAQCAtNzc3LDEwICs3OTQsOSBAQCBhbmdsZTo6UmVzdWx0IFV0
aWxzVms6OmNsZWFyQnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIEFOR0xFX1RSWShl
bnN1cmVCdWZmZXJDbGVhclJlc291cmNlc0luaXRpYWxpemVkKGNvbnRleHRWaykpOwogCiAgICAg
dms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZKGRlc3QtPnJl
Y29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIC8vIFRlbGwg
ZGVzdCBpdCdzIGJlaW5nIHdyaXR0ZW4gdG8uCi0gICAgZGVzdC0+b25TZWxmUmVhZFdyaXRlKGNv
bnRleHRWaywgVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQpOworICAgIC8vIFRlbGwgdGhlIGNv
bnRleHQgZGVzdCB0aGF0IHdlIGFyZSB3cml0aW5nIHRvIGRlc3QuCisgICAgQU5HTEVfVFJZKGNv
bnRleHRWay0+b25CdWZmZXJXcml0ZShWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCwgZGVzdCkp
OworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVm
ZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBjb25zdCB2azo6Rm9ybWF0ICZkZXN0Rm9ybWF0
ID0gZGVzdC0+Z2V0Vmlld0Zvcm1hdCgpOwogCkBAIC04MjksMTAgKzg0NSw5IEBAIGFuZ2xlOjpS
ZXN1bHQgVXRpbHNWazo6Y29udmVydEluZGV4QnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAog
ICAgIEFOR0xFX1RSWShlbnN1cmVDb252ZXJ0SW5kZXhSZXNvdXJjZXNJbml0aWFsaXplZChjb250
ZXh0VmspKTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOwotICAgIEFO
R0xFX1RSWShkZXN0LT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7
Ci0KLSAgICAvLyBUZWxsIHNyYyB3ZSBhcmUgZ29pbmcgdG8gcmVhZCBmcm9tIGl0IGFuZCBkZXN0
IGl0J3MgYmVpbmcgd3JpdHRlbiB0by4KLSAgICBzcmMtPm9uUmVhZEJ5QnVmZmVyKGNvbnRleHRW
aywgZGVzdCwgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCwgVktfQUNDRVNTX1NIQURFUl9XUklU
RV9CSVQpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1Nf
U0hBREVSX1JFQURfQklULCBzcmMpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZl
cldyaXRlKFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklULCBkZXN0KSk7CisgICAgQU5HTEVfVFJZ
KGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZm
ZXIpKTsKIAogICAgIFZrRGVzY3JpcHRvclNldCBkZXNjcmlwdG9yU2V0OwogICAgIHZrOjpSZWZD
b3VudGVkRGVzY3JpcHRvclBvb2xCaW5kaW5nIGRlc2NyaXB0b3JQb29sQmluZGluZzsKQEAgLTg5
MiwxNyArOTA3LDExIEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y29udmVydEluZGV4SW5kaXJl
Y3RCdWZmZXIoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgQU5HTEVfVFJZKGVuc3VyZUNvbnZl
cnRJbmRleEluZGlyZWN0UmVzb3VyY2VzSW5pdGlhbGl6ZWQoY29udGV4dFZrKSk7CiAKICAgICB2
azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKLSAgICBBTkdMRV9UUlkoZHN0SW5kZXhC
dWYtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIC8v
IFRlbGwgc3JjIHdlIGFyZSBnb2luZyB0byByZWFkIGZyb20gaXQgYW5kIGRlc3QgaXQncyBiZWlu
ZyB3cml0dGVuIHRvLgotICAgIHNyY0luZGV4QnVmLT5vblJlYWRCeUJ1ZmZlcihjb250ZXh0Vmss
IGRzdEluZGV4QnVmLCBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCk7Ci0gICAgc3JjSW5k
aXJlY3RCdWYtPm9uUmVhZEJ5QnVmZmVyKGNvbnRleHRWaywgZHN0SW5kZXhCdWYsIFZLX0FDQ0VT
U19TSEFERVJfUkVBRF9CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZL
X0FDQ0VTU19TSEFERVJfV1JJVEVfQklUKTsKLQotICAgIEFOR0xFX1RSWShkc3RJbmRpcmVjdEJ1
Zi0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotICAgIHNyY0lu
ZGlyZWN0QnVmLT5vblJlYWRCeUJ1ZmZlcihjb250ZXh0VmssIGRzdEluZGlyZWN0QnVmLCBWS19B
Q0NFU1NfU0hBREVSX1JFQURfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+
b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIHNyY0luZGlyZWN0QnVmKSk7
CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19TSEFERVJf
UkVBRF9CSVQsIHNyY0luZGV4QnVmKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZm
ZXJXcml0ZShWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCwgZHN0SW5kaXJlY3RCdWYpKTsKKyAg
ICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKFZLX0FDQ0VTU19TSEFERVJfV1JJ
VEVfQklULCBkc3RJbmRleEJ1ZikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRl
clBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBWa0Rlc2Ny
aXB0b3JTZXQgZGVzY3JpcHRvclNldDsKICAgICB2azo6UmVmQ291bnRlZERlc2NyaXB0b3JQb29s
QmluZGluZyBkZXNjcmlwdG9yUG9vbEJpbmRpbmc7CkBAIC05NjYsMTggKzk3NSwxMSBAQCBhbmds
ZTo6UmVzdWx0IFV0aWxzVms6OmNvbnZlcnRMaW5lTG9vcEluZGV4SW5kaXJlY3RCdWZmZXIoCiAg
ICAgQU5HTEVfVFJZKGVuc3VyZUNvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BSZXNvdXJjZXNJ
bml0aWFsaXplZChjb250ZXh0VmspKTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5k
QnVmZmVyOwotICAgIEFOR0xFX1RSWShkc3RJbmRleEJ1ZmZlci0+cmVjb3JkQ29tbWFuZHMoY29u
dGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgLy8gVGVsbCBzcmMgd2UgYXJlIGdvaW5n
IHRvIHJlYWQgZnJvbSBpdCBhbmQgZGVzdCBpdCdzIGJlaW5nIHdyaXR0ZW4gdG8uCi0gICAgc3Jj
SW5kZXhCdWZmZXItPm9uUmVhZEJ5QnVmZmVyKGNvbnRleHRWaywgZHN0SW5kZXhCdWZmZXIsIFZL
X0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklUKTsKLSAgICBzcmNJbmRpcmVjdEJ1ZmZlci0+
b25SZWFkQnlCdWZmZXIoY29udGV4dFZrLCBkc3RJbmRleEJ1ZmZlciwgVktfQUNDRVNTX1NIQURF
Ul9SRUFEX0JJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUND
RVNTX1NIQURFUl9XUklURV9CSVQpOwotCi0gICAgQU5HTEVfVFJZKGRzdEluZGlyZWN0QnVmZmVy
LT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0KLSAgICBzcmNJ
bmRpcmVjdEJ1ZmZlci0+b25SZWFkQnlCdWZmZXIoY29udGV4dFZrLCBkc3RJbmRpcmVjdEJ1ZmZl
ciwgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQpOworICAgIEFOR0xFX1RSWShj
b250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULCBzcmNJbmRp
cmVjdEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19B
Q0NFU1NfU0hBREVSX1JFQURfQklULCBzcmNJbmRleEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShj
b250ZXh0VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQsIGRzdElu
ZGlyZWN0QnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJXcml0ZShW
S19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCwgZHN0SW5kZXhCdWZmZXIpKTsKKyAgICBBTkdMRV9U
UlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1
ZmZlcikpOwogCiAgICAgVmtEZXNjcmlwdG9yU2V0IGRlc2NyaXB0b3JTZXQ7CiAgICAgdms6OlJl
ZkNvdW50ZWREZXNjcmlwdG9yUG9vbEJpbmRpbmcgZGVzY3JpcHRvclBvb2xCaW5kaW5nOwpAQCAt
MTAwNSwxMSArMTAwNyw3IEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y29udmVydExpbmVMb29w
SW5kZXhJbmRpcmVjdEJ1ZmZlcigKICAgICAgICAgcGFyYW1zLmluZGlyZWN0QnVmZmVyT2Zmc2V0
ID4+IDIsIHBhcmFtcy5kc3RJbmRpcmVjdEJ1ZmZlck9mZnNldCA+PiAyLAogICAgICAgICBwYXJh
bXMuZHN0SW5kZXhCdWZmZXJPZmZzZXQgPj4gMiwgY29udGV4dFZrLT5nZXRTdGF0ZSgpLmlzUHJp
bWl0aXZlUmVzdGFydEVuYWJsZWQoKX07CiAKLSAgICB1aW50MzJfdCBmbGFncyA9IDA7Ci0gICAg
aWYgKHBhcmFtcy5pczMyQml0KQotICAgIHsKLSAgICAgICAgZmxhZ3MgfD0gdms6OkludGVybmFs
U2hhZGVyOjpDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXA6OmtJczMyQml0OwotICAg
IH0KKyAgICB1aW50MzJfdCBmbGFncyA9IEdldENvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BG
bGFnKHBhcmFtcy5pbmRpY2VzQml0c1dpZHRoKTsKIAogICAgIHZrOjpSZWZDb3VudGVkPHZrOjpT
aGFkZXJBbmRTZXJpYWw+ICpzaGFkZXIgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmdldFNoYWRlckxpYnJhcnkoKS5nZXRDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2Nv
bXAoY29udGV4dFZrLCBmbGFncywKQEAgLTEwMzcsMTYgKzEwMzUsMTAgQEAgYW5nbGU6OlJlc3Vs
dCBVdGlsc1ZrOjpjb252ZXJ0TGluZUxvb3BBcnJheUluZGlyZWN0QnVmZmVyKAogICAgIEFOR0xF
X1RSWShlbnN1cmVDb252ZXJ0SW5kaXJlY3RMaW5lTG9vcFJlc291cmNlc0luaXRpYWxpemVkKGNv
bnRleHRWaykpOwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAg
QU5HTEVfVFJZKGRlc3RJbmRleEJ1ZmZlci0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29t
bWFuZEJ1ZmZlcikpOwotCi0gICAgLy8gVGVsbCBzcmMgd2UgYXJlIGdvaW5nIHRvIHJlYWQgZnJv
bSBpdCBhbmQgZGVzdCBpdCdzIGJlaW5nIHdyaXR0ZW4gdG8uCi0gICAgc3JjSW5kaXJlY3RCdWZm
ZXItPm9uUmVhZEJ5QnVmZmVyKGNvbnRleHRWaywgZGVzdEluZGV4QnVmZmVyLCBWS19BQ0NFU1Nf
U0hBREVSX1JFQURfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
S19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCk7Ci0KLSAgICBBTkdMRV9UUlkoZGVzdEluZGlyZWN0
QnVmZmVyLT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0KLSAg
ICBzcmNJbmRpcmVjdEJ1ZmZlci0+b25SZWFkQnlCdWZmZXIoY29udGV4dFZrLCBkZXN0SW5kaXJl
Y3RCdWZmZXIsIFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklUKTsKKyAgICBBTkdM
RV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCwg
c3JjSW5kaXJlY3RCdWZmZXIpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldy
aXRlKFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklULCBkZXN0SW5kaXJlY3RCdWZmZXIpKTsKKyAg
ICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKFZLX0FDQ0VTU19TSEFERVJfV1JJ
VEVfQklULCBkZXN0SW5kZXhCdWZmZXIpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRS
ZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgVmtE
ZXNjcmlwdG9yU2V0IGRlc2NyaXB0b3JTZXQ7CiAgICAgdms6OlJlZkNvdW50ZWREZXNjcmlwdG9y
UG9vbEJpbmRpbmcgZGVzY3JpcHRvclBvb2xCaW5kaW5nOwpAQCAtMTA5OSwxMCArMTA5MSw5IEBA
IGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y29udmVydFZlcnRleEJ1ZmZlcihDb250ZXh0VmsgKmNv
bnRleHRWaywKICAgICBBTkdMRV9UUlkoZW5zdXJlQ29udmVydFZlcnRleFJlc291cmNlc0luaXRp
YWxpemVkKGNvbnRleHRWaykpOwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZm
ZXI7Ci0gICAgQU5HTEVfVFJZKGRlc3QtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1h
bmRCdWZmZXIpKTsKLQotICAgIC8vIFRlbGwgc3JjIHdlIGFyZSBnb2luZyB0byByZWFkIGZyb20g
aXQgYW5kIGRlc3QgaXQncyBiZWluZyB3cml0dGVuIHRvLgotICAgIHNyYy0+b25SZWFkQnlCdWZm
ZXIoY29udGV4dFZrLCBkZXN0LCBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULCBWS19BQ0NFU1Nf
U0hBREVSX1dSSVRFX0JJVCk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFk
KFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIHNyYykpOworICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQsIGRlc3QpKTsKKyAg
ICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigm
Y29tbWFuZEJ1ZmZlcikpOwogCiAgICAgQ29udmVydFZlcnRleFNoYWRlclBhcmFtcyBzaGFkZXJQ
YXJhbXM7CiAgICAgc2hhZGVyUGFyYW1zLk5zID0gcGFyYW1zLnNyY0Zvcm1hdC0+Y2hhbm5lbENv
dW50OwpAQCAtMTE4NCw2ICsxMTc1LDEyIEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6c3RhcnRS
ZW5kZXJQYXNzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIGZyYW1lYnVmZmVySW5mby53aWR0
aCAgICAgICAgICAgPSByZW5kZXJBcmVhLnggKyByZW5kZXJBcmVhLndpZHRoOwogICAgIGZyYW1l
YnVmZmVySW5mby5oZWlnaHQgICAgICAgICAgPSByZW5kZXJBcmVhLnkgKyByZW5kZXJBcmVhLmhl
aWdodDsKICAgICBmcmFtZWJ1ZmZlckluZm8ubGF5ZXJzICAgICAgICAgID0gMTsKKyAgICBpZiAo
Y29udGV4dFZrLT5pc1JvdGF0ZWRBc3BlY3RSYXRpb0ZvckRyYXdGQk8oKSkKKyAgICB7CisgICAg
ICAgIC8vIFRoZSBzdXJmYWNlIGlzIHJvdGF0ZWQgOTAvMjcwIGRlZ3JlZXMuICBUaGlzIGNoYW5n
ZXMgdGhlIGFzcGVjdCByYXRpbyBvZgorICAgICAgICAvLyB0aGUgc3VyZmFjZS4gIFN3YXAgdGhl
IHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGZyYW1lYnVmZmVyLgorICAgICAgICBzdGQ6OnN3YXAo
ZnJhbWVidWZmZXJJbmZvLndpZHRoLCBmcmFtZWJ1ZmZlckluZm8uaGVpZ2h0KTsKKyAgICB9CiAK
ICAgICB2azo6RnJhbWVidWZmZXIgZnJhbWVidWZmZXI7CiAgICAgQU5HTEVfVktfVFJZKGNvbnRl
eHRWaywgZnJhbWVidWZmZXIuaW5pdChjb250ZXh0VmstPmdldERldmljZSgpLCBmcmFtZWJ1ZmZl
ckluZm8pKTsKQEAgLTExOTUsOCArMTE5Miw5IEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6c3Rh
cnRSZW5kZXJQYXNzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIHJlbmRlclBhc3NBdHRhY2ht
ZW50T3BzLmluaXRXaXRoTG9hZFN0b3JlKDAsIFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hN
RU5UX09QVElNQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVktfSU1BR0VfTEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTCk7CiAKLSAgICBBTkdM
RV9UUlkoaW1hZ2UtPmJlZ2luUmVuZGVyUGFzcyhjb250ZXh0VmssIGZyYW1lYnVmZmVyLCByZW5k
ZXJBcmVhLCByZW5kZXJQYXNzRGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZW5kZXJQYXNzQXR0YWNobWVudE9wcywgY2xlYXJWYWx1ZXMsIGNvbW1hbmRCdWZmZXJP
dXQpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5mbHVzaEFuZEJlZ2luUmVuZGVyUGFzcyhm
cmFtZWJ1ZmZlciwgcmVuZGVyQXJlYSwgcmVuZGVyUGFzc0Rlc2MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMs
IGNsZWFyVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmRCdWZmZXJPdXQpKTsKIAogICAgIGNvbnRleHRWay0+YWRkR2FyYmFnZSgm
ZnJhbWVidWZmZXIpOwogCkBAIC0xMjEyLDExICsxMjEwLDcgQEAgYW5nbGU6OlJlc3VsdCBVdGls
c1ZrOjpjbGVhckZyYW1lYnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNjaXNzb3JlZFJlbmRlckFyZWEgPSBwYXJhbXMuY2xlYXJBcmVhOwogCiAg
ICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgaWYgKCFmcmFtZWJ1ZmZl
ci0+YXBwZW5kVG9TdGFydGVkUmVuZGVyUGFzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxp
c3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
aXNzb3JlZFJlbmRlckFyZWEsICZjb21tYW5kQnVmZmVyKSkKLSAgICB7Ci0gICAgICAgIEFOR0xF
X1RSWShmcmFtZWJ1ZmZlci0+c3RhcnROZXdSZW5kZXJQYXNzKGNvbnRleHRWaywgc2Npc3NvcmVk
UmVuZGVyQXJlYSwgJmNvbW1hbmRCdWZmZXIpKTsKLSAgICB9CisgICAgQU5HTEVfVFJZKGZyYW1l
YnVmZmVyLT5zdGFydE5ld1JlbmRlclBhc3MoY29udGV4dFZrLCBzY2lzc29yZWRSZW5kZXJBcmVh
LCAmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgSW1hZ2VDbGVhclNoYWRlclBhcmFtcyBzaGFkZXJQ
YXJhbXM7CiAgICAgc2hhZGVyUGFyYW1zLmNsZWFyVmFsdWUgPSBwYXJhbXMuY29sb3JDbGVhclZh
bHVlOwpAQCAtMTQzMiwyMyArMTQyNiwxMSBAQCBhbmdsZTo6UmVzdWx0IFV0aWxzVms6OmJsaXRS
ZXNvbHZlSW1wbChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICBwaXBlbGluZURlc2Muc2V0U2Np
c3NvcihnbF92azo6R2V0UmVjdChwYXJhbXMuYmxpdEFyZWEpKTsKIAogICAgIC8vIENoYW5nZSBz
b3VyY2UgbGF5b3V0IG91dHNpZGUgcmVuZGVyIHBhc3MKLSAgICBpZiAoc3JjLT5pc0xheW91dENo
YW5nZU5lY2Vzc2FyeSh2azo6SW1hZ2VMYXlvdXQ6OkFsbEdyYXBoaWNzU2hhZGVyc1JlYWRPbmx5
KSkKLSAgICB7Ci0gICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpzcmNMYXlvdXRDaGFuZ2U7Ci0g
ICAgICAgIEFOR0xFX1RSWShzcmMtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJnNyY0xheW91
dENoYW5nZSkpOwotICAgICAgICBzcmMtPmNoYW5nZUxheW91dChzcmMtPmdldEFzcGVjdEZsYWdz
KCksIHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHNyY0xheW91dENoYW5nZSk7Ci0gICAgfQorICAgIEFOR0xFX1RS
WShjb250ZXh0VmstPm9uSW1hZ2VSZWFkKHNyYy0+Z2V0QXNwZWN0RmxhZ3MoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQ6OkFsbEdyYXBoaWNz
U2hhZGVyc1JlYWRPbmx5LCBzcmMpKTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5k
QnVmZmVyOwotICAgIGlmICghZnJhbWVidWZmZXItPmFwcGVuZFRvU3RhcnRlZFJlbmRlclBhc3Mo
JmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCksIHBhcmFtcy5ibGl0QXJlYSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21tYW5kQnVmZmVy
KSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShmcmFtZWJ1ZmZlci0+c3RhcnROZXdSZW5kZXJQ
YXNzKGNvbnRleHRWaywgcGFyYW1zLmJsaXRBcmVhLCAmY29tbWFuZEJ1ZmZlcikpOwotICAgIH0K
LQotICAgIC8vIFNvdXJjZSdzIGxheW91dCBjaGFuZ2Ugc2hvdWxkIGhhcHBlbiBiZWZvcmUgcmVu
ZGVyaW5nCi0gICAgc3JjLT5hZGRSZWFkRGVwZW5kZW5jeShjb250ZXh0VmssIGZyYW1lYnVmZmVy
LT5nZXRGcmFtZWJ1ZmZlcigpKTsKKyAgICBBTkdMRV9UUlkoZnJhbWVidWZmZXItPnN0YXJ0TmV3
UmVuZGVyUGFzcyhjb250ZXh0VmssIHBhcmFtcy5ibGl0QXJlYSwgJmNvbW1hbmRCdWZmZXIpKTsK
IAogICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyBpbWFnZUluZm9zWzJdID0ge307CiAKQEAgLTE1
NTIsNyArMTUzNCw3IEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6c3RlbmNpbEJsaXRSZXNvbHZl
Tm9TaGFkZXJFeHBvcnQoQ29udGV4dFZrICpjb250ZXh0VmssCiAKICAgICBBTkdMRV9UUlkoCiAg
ICAgICAgIGJsaXRCdWZmZXIuZ2V0KCkuaW5pdChjb250ZXh0VmssIGJsaXRCdWZmZXJJbmZvLCBW
S19NRU1PUllfUFJPUEVSVFlfREVWSUNFX0xPQ0FMX0JJVCkpOwotICAgIGJsaXRCdWZmZXIuZ2V0
KCkub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7Cisg
ICAgYmxpdEJ1ZmZlci5nZXQoKS5yZXRhaW4oJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0
KCkpOwogCiAgICAgQmxpdFJlc29sdmVTdGVuY2lsTm9FeHBvcnRTaGFkZXJQYXJhbXMgc2hhZGVy
UGFyYW1zOwogICAgIGlmIChpc1Jlc29sdmUpCkBAIC0xNTgzLDE5ICsxNTY1LDE3IEBAIGFuZ2xl
OjpSZXN1bHQgVXRpbHNWazo6c3RlbmNpbEJsaXRSZXNvbHZlTm9TaGFkZXJFeHBvcnQoQ29udGV4
dFZrICpjb250ZXh0VmssCiAgICAgdWludDMyX3QgZmxhZ3MgPSBzcmMtPmdldExheWVyQ291bnQo
KSA+IDEgPyBCbGl0UmVzb2x2ZVN0ZW5jaWxOb0V4cG9ydF9jb21wOjprU3JjSXNBcnJheSA6IDA7
CiAgICAgZmxhZ3MgfD0gaXNSZXNvbHZlID8gQmxpdFJlc29sdmVfZnJhZzo6a0lzUmVzb2x2ZSA6
IDA7CiAKLSAgICAvLyBDaGFuZ2Ugc291cmNlIGxheW91dCBwcmlvciB0byBjb21wdXRhdGlvbi4K
LSAgICBpZiAoc3JjLT5pc0xheW91dENoYW5nZU5lY2Vzc2FyeSh2azo6SW1hZ2VMYXlvdXQ6OkNv
bXB1dGVTaGFkZXJSZWFkT25seSkpCi0gICAgewotICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAq
c3JjTGF5b3V0Q2hhbmdlOwotICAgICAgICBBTkdMRV9UUlkoc3JjLT5yZWNvcmRDb21tYW5kcyhj
b250ZXh0VmssICZzcmNMYXlvdXRDaGFuZ2UpKTsKLSAgICAgICAgc3JjLT5jaGFuZ2VMYXlvdXQo
c3JjLT5nZXRBc3BlY3RGbGFncygpLCB2azo6SW1hZ2VMYXlvdXQ6OkNvbXB1dGVTaGFkZXJSZWFk
T25seSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTGF5b3V0Q2hhbmdlKTsKLSAgICB9
CisgICAgUmVuZGVyVGFyZ2V0VmsgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IGZyYW1lYnVm
ZmVyLT5nZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKTsKKyAgICBBU1NFUlQoZGVwdGhTdGVu
Y2lsUmVuZGVyVGFyZ2V0ICE9IG51bGxwdHIpOworICAgIHZrOjpJbWFnZUhlbHBlciAqZGVwdGhT
dGVuY2lsSW1hZ2UgPSAmZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXRJbWFnZSgpOwogCiAg
ICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZKGZyYW1l
YnVmZmVyLT5nZXRGcmFtZWJ1ZmZlcigpLT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21t
YW5kQnVmZmVyKSk7Ci0KLSAgICBzcmMtPmFkZFJlYWREZXBlbmRlbmN5KGNvbnRleHRWaywgZnJh
bWVidWZmZXItPmdldEZyYW1lYnVmZmVyKCkpOworICAgIC8vIENoYW5nZSBzb3VyY2UgbGF5b3V0
IHByaW9yIHRvIGNvbXB1dGF0aW9uLgorICAgIEFOR0xFX1RSWSgKKyAgICAgICAgY29udGV4dFZr
LT5vbkltYWdlUmVhZChzcmMtPmdldEFzcGVjdEZsYWdzKCksIHZrOjpJbWFnZUxheW91dDo6Q29t
cHV0ZVNoYWRlclJlYWRPbmx5LCBzcmMpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbklt
YWdlV3JpdGUoZGVwdGhTdGVuY2lsSW1hZ2UtPmdldEFzcGVjdEZsYWdzKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3Qs
IGRlcHRoU3RlbmNpbEltYWdlKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVy
UGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgIC8vIEJsaXQv
cmVzb2x2ZSBzdGVuY2lsIGludG8gdGhlIGJ1ZmZlci4KICAgICBWa0Rlc2NyaXB0b3JJbWFnZUlu
Zm8gaW1hZ2VJbmZvID0ge307CkBAIC0xNjU3LDEzICsxNjM3LDYgQEAgYW5nbGU6OlJlc3VsdCBV
dGlsc1ZrOjpzdGVuY2lsQmxpdFJlc29sdmVOb1NoYWRlckV4cG9ydChDb250ZXh0VmsgKmNvbnRl
eHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbnVsbHB0cik7CiAK
ICAgICAvLyBDb3B5IHRoZSByZXN1bHRpbmcgYnVmZmVyIGludG8gZGVzdC4KLSAgICBSZW5kZXJU
YXJnZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXItPmdldERlcHRo
U3RlbmNpbFJlbmRlclRhcmdldCgpOwotICAgIEFTU0VSVChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJn
ZXQgIT0gbnVsbHB0cik7Ci0gICAgdms6OkltYWdlSGVscGVyICpkZXB0aFN0ZW5jaWxJbWFnZSA9
ICZkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQtPmdldEltYWdlKCk7Ci0KLSAgICBkZXB0aFN0ZW5j
aWxJbWFnZS0+Y2hhbmdlTGF5b3V0KGRlcHRoU3RlbmNpbEltYWdlLT5nZXRBc3BlY3RGbGFncygp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0OjpU
cmFuc2ZlckRzdCwgY29tbWFuZEJ1ZmZlcik7Ci0KICAgICBWa0J1ZmZlckltYWdlQ29weSByZWdp
b24gICAgICAgICAgICAgICA9IHt9OwogICAgIHJlZ2lvbi5idWZmZXJPZmZzZXQgICAgICAgICAg
ICAgICAgICAgID0gMDsKICAgICByZWdpb24uYnVmZmVyUm93TGVuZ3RoICAgICAgICAgICAgICAg
ICA9IGJ1ZmZlclJvd0xlbmd0aEluVWludHMgKiBzaXplb2YodWludDMyX3QpOwpAQCAtMTc2MSwy
OCArMTczNCwxNSBAQCBhbmdsZTo6UmVzdWx0IFV0aWxzVms6OmNvcHlJbWFnZShDb250ZXh0Vmsg
KmNvbnRleHRWaywKICAgICBwaXBlbGluZURlc2Muc2V0U2Npc3NvcihzY2lzc29yKTsKIAogICAg
IC8vIENoYW5nZSBzb3VyY2UgbGF5b3V0IG91dHNpZGUgcmVuZGVyIHBhc3MKLSAgICBpZiAoc3Jj
LT5pc0xheW91dENoYW5nZU5lY2Vzc2FyeSh2azo6SW1hZ2VMYXlvdXQ6OkFsbEdyYXBoaWNzU2hh
ZGVyc1JlYWRPbmx5KSkKLSAgICB7Ci0gICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpzcmNMYXlv
dXRDaGFuZ2U7Ci0gICAgICAgIEFOR0xFX1RSWShzcmMtPnJlY29yZENvbW1hbmRzKGNvbnRleHRW
aywgJnNyY0xheW91dENoYW5nZSkpOwotICAgICAgICBzcmMtPmNoYW5nZUxheW91dChWS19JTUFH
RV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlvdXQ6OkFsbEdyYXBoaWNzU2hhZGVyc1Jl
YWRPbmx5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNMYXlvdXRDaGFuZ2UpOwotICAg
IH0KLQotICAgIC8vIENoYW5nZSBkZXN0aW5hdGlvbiBsYXlvdXQgb3V0c2lkZSByZW5kZXIgcGFz
cyBhcyB3ZWxsCi0gICAgdms6OkNvbW1hbmRCdWZmZXIgKmRlc3RMYXlvdXRDaGFuZ2U7Ci0gICAg
QU5HTEVfVFJZKGRlc3QtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmRlc3RMYXlvdXRDaGFu
Z2UpKTsKLQotICAgIGRlc3QtPmNoYW5nZUxheW91dChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklU
LCB2azo6SW1hZ2VMYXlvdXQ6OkNvbG9yQXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdExheW91dENoYW5nZSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25JbWFnZVJl
YWQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQ6OkFsbEdyYXBoaWNzU2hhZGVyc1JlYWRPbmx5LCBz
cmMpKTsKKyAgICBBTkdMRV9UUlkoCisgICAgICAgIGNvbnRleHRWay0+b25JbWFnZVdyaXRlKFZL
X0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6Q29sb3JBdHRhY2htZW50
LCBkZXN0KSk7CiAKICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKICAgICBB
TkdMRV9UUlkoCiAgICAgICAgIHN0YXJ0UmVuZGVyUGFzcyhjb250ZXh0VmssIGRlc3QsIGRlc3RW
aWV3LCByZW5kZXJQYXNzRGVzYywgcmVuZGVyQXJlYSwgJmNvbW1hbmRCdWZmZXIpKTsKIAotICAg
IC8vIFNvdXJjZSdzIGxheW91dCBjaGFuZ2Ugc2hvdWxkIGhhcHBlbiBiZWZvcmUgcmVuZGVyaW5n
Ci0gICAgc3JjLT5hZGRSZWFkRGVwZW5kZW5jeShjb250ZXh0VmssIGRlc3QpOwotCiAgICAgVmtE
ZXNjcmlwdG9ySW1hZ2VJbmZvIGltYWdlSW5mbyA9IHt9OwogICAgIGltYWdlSW5mby5pbWFnZVZp
ZXcgICAgICAgICAgICAgPSBzcmNWaWV3LT5nZXRIYW5kbGUoKTsKICAgICBpbWFnZUluZm8uaW1h
Z2VMYXlvdXQgICAgICAgICAgID0gc3JjLT5nZXRDdXJyZW50TGF5b3V0KCk7CkBAIC0xODQzLDEx
ICsxODAzLDEwIEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y3VsbE92ZXJsYXlXaWRnZXRzKENv
bnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmRlc2NyaXB0b3JTZXQpKTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVy
OwotICAgIEFOR0xFX1RSWShkZXN0LT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5k
QnVmZmVyKSk7Ci0gICAgZGVzdC0+Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9C
SVQsIHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlcldyaXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kQnVmZmVyKTsKLQotICAgIGVuYWJsZWRXaWRnZXRzQnVmZmVyLT5vblJl
YWQoY29udGV4dFZrLCBkZXN0LCBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklUKTsKKyAgICBBTkdM
RV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCwg
ZW5hYmxlZFdpZGdldHNCdWZmZXIpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdl
V3JpdGUoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0OjpDb21wdXRlU2hhZGVyV3JpdGUsIGRlc3Qp
KTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1
ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgVmtEZXNjcmlwdG9ySW1hZ2VJbmZvIGltYWdl
SW5mbyA9IHt9OwogICAgIGltYWdlSW5mby5pbWFnZVZpZXcgICAgICAgICAgICAgPSBkZXN0Vmll
dy0+Z2V0SGFuZGxlKCk7CkBAIC0xODg0LDkgKzE4NDMsNiBAQCBhbmdsZTo6UmVzdWx0IFV0aWxz
Vms6OmN1bGxPdmVybGF5V2lkZ2V0cyhDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICBjb21tYW5k
QnVmZmVyLT5kaXNwYXRjaChkZXN0LT5nZXRFeHRlbnRzKCkud2lkdGgsIGRlc3QtPmdldEV4dGVu
dHMoKS5oZWlnaHQsIDEpOwogICAgIGRlc2NyaXB0b3JQb29sQmluZGluZy5yZXNldCgpOwogCi0g
ICAgZGVzdC0+Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFn
ZUxheW91dDo6Q29tcHV0ZVNoYWRlclJlYWRPbmx5LAotICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kQnVmZmVyKTsKLQogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
IApAQCAtMTkxOCwxNCArMTg3NCwxNiBAQCBhbmdsZTo6UmVzdWx0IFV0aWxzVms6OmRyYXdPdmVy
bGF5KENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmRlc2NyaXB0b3JTZXQpKTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5k
QnVmZmVyOwotICAgIEFOR0xFX1RSWShkZXN0LT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZj
b21tYW5kQnVmZmVyKSk7Ci0gICAgZGVzdC0+Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9D
T0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlcldyaXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kQnVmZmVyKTsKLQotICAgIGN1bGxlZFdpZGdldHMtPmFkZFJl
YWREZXBlbmRlbmN5KGNvbnRleHRWaywgZGVzdCk7Ci0gICAgZm9udC0+YWRkUmVhZERlcGVuZGVu
Y3koY29udGV4dFZrLCBkZXN0KTsKLSAgICB0ZXh0V2lkZ2V0c0J1ZmZlci0+b25SZWFkKGNvbnRl
eHRWaywgZGVzdCwgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCk7Ci0gICAgZ3JhcGhXaWRnZXRz
QnVmZmVyLT5vblJlYWQoY29udGV4dFZrLCBkZXN0LCBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklU
KTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlV3JpdGUoVktfSU1BR0VfQVNQRUNU
X0NPTE9SX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6Oklt
YWdlTGF5b3V0OjpDb21wdXRlU2hhZGVyV3JpdGUsIGRlc3QpKTsKKyAgICBBTkdMRV9UUlkoY29u
dGV4dFZrLT5vbkltYWdlUmVhZChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRl
clJlYWRPbmx5LCBjdWxsZWRXaWRnZXRzKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25J
bWFnZVJlYWQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQ6OkNvbXB1dGVTaGFkZXJSZWFkT25seSwg
Zm9udCkpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1Nf
U0hBREVSX1JFQURfQklULCB0ZXh0V2lkZ2V0c0J1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250
ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULCBncmFwaFdpZGdl
dHNCdWZmZXIpKTsKKworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRH
ZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBWa0Rlc2NyaXB0b3JJbWFn
ZUluZm8gaW1hZ2VJbmZvc1szXSA9IHt9OwogICAgIGltYWdlSW5mb3NbMF0uaW1hZ2VWaWV3ICAg
ICAgICAgICAgID0gZGVzdFZpZXctPmdldEhhbmRsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9VdGlsc1ZrLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1V0aWxz
VmsuaAppbmRleCA0ZmI3MTNjODk3MDUyZDQ0Zjc1NTZkNGNiM2YwMTRjZmU4MDdhOTg0Li5jZjI2
M2QyNzEwZTAyZmYwMjI5ODhmZjYzNjA4MjM0MTQ3ZDM1OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1V0aWxzVmsuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1V0aWxzVmsuaApAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBVdGlsc1ZrIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgICAgIHVpbnQzMl90IGluZGlyZWN0QnVmZmVyT2Zmc2V0ICAgID0gMDsKICAg
ICAgICAgdWludDMyX3QgZHN0SW5kaXJlY3RCdWZmZXJPZmZzZXQgPSAwOwogICAgICAgICB1aW50
MzJfdCBkc3RJbmRleEJ1ZmZlck9mZnNldCAgICA9IDA7Ci0gICAgICAgIHVpbnQzMl90IGlzMzJC
aXQgICAgICAgICAgICAgICAgID0gMDsKKyAgICAgICAgdWludDMyX3QgaW5kaWNlc0JpdHNXaWR0
aCAgICAgICAgPSAwOwogICAgIH07CiAKICAgICBzdHJ1Y3QgQ29udmVydExpbmVMb29wQXJyYXlJ
bmRpcmVjdFBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5Vmsu
Y3BwCmluZGV4IGNlNzU1OTBkMzYyY2VjYTMyYjg1ODU4OGQ2MzcwYTg2OTM3ZGNkZGMuLmE0ZmNi
MGI2MTVlYjg2OTJlOThmNDJhMDkxZDFkM2NmNjMwNzU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlW
ay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcApAQCAtMTMsMTAgKzEzLDEwIEBACiAjaW5jbHVkZSAi
Y29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vQ29tbWFuZEdyYXBoLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1JlbmRlcmVyVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVz
b3VyY2VWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRf
dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS90cmFjZS5oIgogCkBAIC0yOTYsMjEgKzI5Niwx
NCBAQCBhbmdsZTo6UmVzdWx0IFZlcnRleEFycmF5Vms6OmNvbnZlcnRJbmRleEJ1ZmZlckNQVShD
b250ZXh0VmsgKmNvbnRleHRWaywKIAogICAgIG1EeW5hbWljSW5kZXhEYXRhLnJlbGVhc2VJbkZs
aWdodEJ1ZmZlcnMoY29udGV4dFZrKTsKIAotICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGdsOjpH
ZXREcmF3RWxlbWVudHNUeXBlU2l6ZShpbmRleFR5cGUpOwotICAgIGlmIChpbmRleFR5cGUgPT0g
Z2w6OkRyYXdFbGVtZW50c1R5cGU6OlVuc2lnbmVkQnl0ZSkKLSAgICB7Ci0gICAgICAgIC8vIDgt
Yml0IGluZGljZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgVnVsa2FuLCBzbyB0aGV5IGFyZSBwcm9t
b3RlZCB0bwotICAgICAgICAvLyAxNi1iaXQgaW5kaWNlcyBiZWxvdwotICAgICAgICBlbGVtZW50
U2l6ZSA9IHNpemVvZihHTHVzaG9ydCk7Ci0gICAgfQotCisgICAgc2l6ZV90IGVsZW1lbnRTaXpl
ICA9IGNvbnRleHRWay0+Z2V0VmtJbmRleFR5cGVTaXplKGluZGV4VHlwZSk7CiAgICAgY29uc3Qg
c2l6ZV90IGFtb3VudCA9IGVsZW1lbnRTaXplICogaW5kZXhDb3VudDsKICAgICBHTHVieXRlICpk
c3QgICAgICAgID0gbnVsbHB0cjsKIAogICAgIEFOR0xFX1RSWShtRHluYW1pY0luZGV4RGF0YS5h
bGxvY2F0ZShjb250ZXh0VmssIGFtb3VudCwgJmRzdCwgbnVsbHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1DdXJyZW50RWxlbWVudEFycmF5QnVmZmVyT2Zm
c2V0LCBudWxscHRyKSk7CiAgICAgbUN1cnJlbnRFbGVtZW50QXJyYXlCdWZmZXIgPSBtRHluYW1p
Y0luZGV4RGF0YS5nZXRDdXJyZW50QnVmZmVyKCk7Ci0gICAgaWYgKGluZGV4VHlwZSA9PSBnbDo6
RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRCeXRlKQorICAgIGlmIChjb250ZXh0VmstPnNob3Vs
ZENvbnZlcnRVaW50OFZrSW5kZXhUeXBlKGluZGV4VHlwZSkpCiAgICAgewogICAgICAgICAvLyBV
bnNpZ25lZCBieXRlcyBkb24ndCBoYXZlIGRpcmVjdCBzdXBwb3J0IGluIFZ1bGthbiBzbyB3ZSBo
YXZlIHRvIGV4cGFuZCB0aGUKICAgICAgICAgLy8gbWVtb3J5IHRvIGEgR0x1c2hvcnQuCkBAIC01
OTAsNyArNTgzLDcgQEAgYW5nbGU6OlJlc3VsdCBWZXJ0ZXhBcnJheVZrOjpzeW5jRGlydHlBdHRy
aWIoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Q29udmVyc2lvbkJ1ZmZlciAqY29udmVyc2lvbiA9IGJ1ZmZlclZrLT5nZXRWZXJ0ZXhDb252ZXJz
aW9uQnVmZmVyKAogICAgICAgICAgICAgICAgICAgICByZW5kZXJlciwgaW50ZW5kZWRGb3JtYXQu
aWQsIGJpbmRpbmcuZ2V0U3RyaWRlKCksCi0gICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuZ2V0
T2Zmc2V0KCkgKyBhdHRyaWIucmVsYXRpdmVPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBi
aW5kaW5nLmdldE9mZnNldCgpICsgYXR0cmliLnJlbGF0aXZlT2Zmc2V0LCAhYmluZGluZ0lzQWxp
Z25lZCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnZlcnNpb24tPmRpcnR5KQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRpbmdJc0FsaWduZWQpCkBAIC02
MzksOCArNjMyLDEzIEBAIGFuZ2xlOjpSZXN1bHQgVmVydGV4QXJyYXlWazo6c3luY0RpcnR5QXR0
cmliKENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICB2azo6QnVmZmVy
SGVscGVyICZidWZmZXJIZWxwZXIgICAgICAgICAgPSBidWZmZXJWay0+Z2V0QnVmZmVyKCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1DdXJyZW50QXJyYXlCdWZmZXJzW2F0dHJpYkluZGV4XSAgICAg
ICA9ICZidWZmZXJIZWxwZXI7CiAgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50QXJyYXlCdWZm
ZXJIYW5kbGVzW2F0dHJpYkluZGV4XSA9IGJ1ZmZlckhlbHBlci5nZXRCdWZmZXIoKS5nZXRIYW5k
bGUoKTsKLSAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlck9mZnNldHNbYXR0
cmliSW5kZXhdID0gYmluZGluZy5nZXRPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgc3Ry
aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYmluZGluZy5nZXRTdHJpZGUo
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBWdWxrYW4gcmVxdWlyZXMgdGhlIG9mZnNldCBp
cyB3aXRoaW4gdGhlIGJ1ZmZlci4gV2UgdXNlIHJvYnVzdCBhY2Nlc3MKKyAgICAgICAgICAgICAg
ICAgICAgLy8gYmVoYXZpb3VyIHRvIHJlc2V0IHRoZSBvZmZzZXQgaWYgaXQgc3RhcnRzIG91dHNp
ZGUgdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlck9m
ZnNldHNbYXR0cmliSW5kZXhdID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuZ2V0
T2Zmc2V0KCkgPCBidWZmZXJWay0+Z2V0U2l6ZSgpID8gYmluZGluZy5nZXRPZmZzZXQoKSA6IDA7
CisKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlID0gYmluZGluZy5nZXRTdHJpZGUoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZG9jL0Zh
c3RPcGVuR0xTdGF0ZVRyYW5zaXRpb25zLm1kIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvRmFzdE9wZW5HTFN0YXRlVHJhbnNpdGlvbnMu
bWQKaW5kZXggMDY0YWE3YzVhNzkwMjc4MTg2OGU3ZTk0ODQ0OTE4Y2JhYzBkOGVjNy4uMjU3MjUy
MDMzNmY2ZGNjMDYxMThkMDJkOWU4NTZiYmViODc0MzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvRmFzdE9wZW5H
TFN0YXRlVHJhbnNpdGlvbnMubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvRmFzdE9wZW5HTFN0YXRlVHJhbnNpdGlvbnMubWQK
QEAgLTMsMTUgKzMsMTkgQEAKIFR5cGljYWwgT3BlbkdMIHByb2dyYW1zIGlzc3VlIGEgZmV3IHNt
YWxsIHN0YXRlIGNoYW5nZSBjb21tYW5kcyBiZXR3ZWVuIGRyYXcgY2FsbCBjb21tYW5kcy4gV2Ug
d2FudAogdGhlIHR5cGljYWwgYXBwJ3MgdXNlIGNhc2UgdG8gYmUgYXMgZmFzdCBhcyBwb3NzaWJs
ZSBzbyB0aGlzIGxlYWRzIHRvIHVuaXF1ZSBwZXJmb3JtYW5jZSBjaGFsbGVuZ2VzLgogCi1WdWxr
YW4gaW4gcXVpdGUgZGlmZmVyZW50IGZyb20gT3BlbkdMIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBz
ZXBhcmF0ZSBjb21waWxlZAorVnVsa2FuIGlzIHF1aXRlIGRpZmZlcmVudCBmcm9tIE9wZW5HTCBi
ZWNhdXNlIGl0IHJlcXVpcmVzIGEgc2VwYXJhdGUgY29tcGlsZWQKIFtWa1BpcGVsaW5lXVtWa1Bp
cGVsaW5lXSBmb3IgZWFjaCBzdGF0ZSB2ZWN0b3IuIENvbXBpbGluZyBWa1BpcGVsaW5lcyBpcyBt
dWx0aXBsZSBvcmRlcnMgb2YKIG1hZ25pdHVkZSBzbG93ZXIgdGhhbiBlbmFibGluZyBvciBkaXNh
YmxpbmcgYW4gT3BlbkdMIHJlbmRlciBzdGF0ZS4gVG8gc3BlZWQgdGhpcyB1cCB3ZSB1c2UgdGhy
ZWUKIGxldmVscyBvZiBjYWNoaW5nIHdoZW4gdHJhbnNpdGlvbmluZyBzdGF0ZXMgaW4gdGhlIFZ1
bGthbiBiYWNrLWVuZC4KIAotVGhlIGZpcnN0IGxldmVsIGlzIHRoZSBkcml2ZXIncyBbVmtQaXBl
bGluZUNhY2hlXVtWa1BpcGVsaW5lQ2FjaGVdLiBUaGUgZHJpdmVyCisjIyBMMyBDYWNoZQorCitU
aGUgb3V0ZXJtb3N0IGxldmVsIGlzIHRoZSBkcml2ZXIncyBbVmtQaXBlbGluZUNhY2hlXVtWa1Bp
cGVsaW5lQ2FjaGVdLiBUaGUgZHJpdmVyCiBjYWNoZSByZWR1Y2VzIHBpcGVsaW5lIHJlY29tcGls
YXRpb24gdGltZSBzaWduaWZpY2FudGx5LiBCdXQgZXZlbiBjYWNoZWQKIHBpcGVsaW5lIHJlY29t
cGlsYXRpb25zIGFyZSBvcmRlcnMgb2YgbWFuaXR1ZGUgc2xvd2VyIHRoYW4gT3BlbkdMIHN0YXRl
IGNoYW5nZXMuCiAKKyMjIEwyIENhY2hlCisKIFRoZSBzZWNvbmQgbGV2ZWwgY2FjaGUgaXMgYW4g
QU5HTEUtb3duZWQgaGFzaCBtYXAgZnJvbSBPcGVuR0wgc3RhdGUgdmVjdG9ycyB0byBjb21waWxl
ZCBwaXBlbGluZXMuCiBTZWUgW0dyYXBoaWNzUGlwZWxpbmVDYWNoZV1bR3JhcGhpY3NQaXBlbGlu
ZUNhY2hlXSBpbiBbdmtfY2FjaGVfdXRpbHMuaF0oLi4vdmtfY2FjaGVfdXRpbHMuaCkuIEFOR0xF
J3MKIFtHcmFwaGljc1BpcGVsaW5lRGVzY11bR3JhcGhpY3NQaXBlbGluZURlc2NdIGNsYXNzIGlz
IGEgdGlnaHRseSBwYWNrZWQgMjU2LWJ5dGUgZGVzY3JpcHRpb24gb2YgdGhlCkBAIC0xOSw2ICsy
Myw4IEBAIGN1cnJlbnQgT3BlbkdMIHJlbmRlcmluZyBzdGF0ZS4gV2UgYWxzbyB1c2UgYSBbeHhI
YXNoXShodHRwczovL2dpdGh1Yi5jb20vQ3lhbjQ5CiBmYXN0ZXN0IHBvc3NpYmxlIGhhc2ggY29t
cHV0YXRpb24uIFRoZSBoYXNoIG1hcCBzcGVlZHMgdXAgc3RhdGUgY2hhbmdlcyBjb25zaWRlcmFi
bHkuIEJ1dCBpdCBpcwogc3RpbGwgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBPcGVuR0wgaW1w
bGVtZW50YXRpb25zLgogCisjIyBMMSBDYWNoZQorCiBUbyBnZXQgYmVzdCBwZXJmb3JtYW5jZSB3
ZSB1c2UgYSB0cmFuc2l0aW9uIHRhYmxlIGZyb20gZWFjaCBPcGVuR0wgc3RhdGUgdmVjdG9yIHRv
IG5laWdoYm91cmluZwogc3RhdGUgdmVjdG9ycy4gVGhlIHRyYW5zaXRpb24gdGFibGUgcG9pbnRz
IGZyb20gR3JhcGhpY3NQaXBlbGluZUNhY2hlIGVudHJpZXMgZGlyZWN0bHkgdG8KIG5laWdoYm91
cmluZyBWa1BpcGVsaW5lIG9iamVjdHMuIFdoZW4gdGhlIGFwcGxpY2F0aW9uIGNoYW5nZXMgc3Rh
dGUgdGhlIHN0YXRlIGNoYW5nZSBiaXRzIGFyZQpAQCAtMzUsNiArNDEsMTEgQEAgYXBwbGljYXRp
b25zIG1hcCBmcm9tIG9uZSBzdGF0ZSB0byBtYW55IHRoaXMgd2lsbCBzbG93IGRvd24gdGhlIHRy
YW5zaXRpb24gdGltZS4KIGltcHJvdmVkIGluIHRoZSBmdXR1cmUgdXNpbmcgYSBmYXN0ZXIgbG9v
ayB1cC4gRm9yIGluc3RhbmNlIHdlIGNvdWxkIGtlZXAgYSBzb3J0ZWQgdHJhbnNpdGlvbiB0YWJs
ZQogb3IgdXNlIGEgc21hbGwgaGFzaCBtYXAgZm9yIHRyYW5zaXRpb25zLgogCisjIyBMMCBDYWNo
ZQorCitUaGUgY3VycmVudCBhY3RpdmUgUFNPIGlzIHN0b3JlZCBhcyBhIGhhbmRsZSBpbiB0aGUg
YENvbnRleHRWa2AgZm9yIHVzZSBiZXR3ZWVuIGRyYXdzIHdpdGggbm8gc3RhdGUKK2NoYW5nZS4K
KwogW1ZrUGlwZWxpbmVdOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4v
c3BlY3MvMS4xLWV4dGVuc2lvbnMvbWFuL2h0bWwvVmtQaXBlbGluZS5odG1sCiBbVmtQaXBlbGlu
ZUNhY2hlXTogaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvdnVsa2FuL3NwZWNzLzEu
MS1leHRlbnNpb25zL21hbi9odG1sL1ZrUGlwZWxpbmVDYWNoZS5odG1sCiBbR3JhcGhpY3NQaXBl
bGluZUNhY2hlXTogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xlL2FuZ2xl
LysvMjI1ZjA4YmY4NWEzNjhmOTA1MzYyY2RkMTM2NmU0Nzk1NjgwNDUyYy9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmgjNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9Gb3JtYXRU
YWJsZXNBbmRFbXVsYXRpb24ubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9Gb3JtYXRUYWJsZXNBbmRFbXVsYXRpb24ubWQKaW5kZXgg
MDRjZGJkODIzOTBlNGI5OTcxZjhmYmM3NzRlN2M4ZGVlYmY1Mzc2NC4uZjhmMzM3MGQ3MGUwMjg0
YzgyNzIzMzEwZjMzOTIyZGU4ODI3MzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvRm9ybWF0VGFibGVzQW5kRW11
bGF0aW9uLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vZG9jL0Zvcm1hdFRhYmxlc0FuZEVtdWxhdGlvbi5tZApAQCAtMTcsOSArMTcs
OCBAQCBpcyBub3Qgc3VwcG9ydGVkLgogCiAjIyBUaGUgVnVsa2FuIEZvcm1hdCBUYWJsZQogCi1P
dmVycmlkZXMgYW5kIGZhbGxiYWNrcyBhcmUgaW1wbGVtZW50ZWQgaW4gQU5HTEUncyBbVnVsa2Fu
IGZvcm1hdAotdGFibGVdWy4uL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcF0uIFRoZSB0YWJs
ZSBpcyBhdXRvLWdlbmVyYXRlZCBieQotW2BnZW5fdmtfZm9ybWF0X3RhYmxlLnB5YF0oLi4vZ2Vu
X3ZrX2Zvcm1hdF90YWJsZS5weSkuIFdlIHN0b3JlIHRoZSBtYXBwaW5nIGZyb20KK092ZXJyaWRl
cyBhbmQgZmFsbGJhY2tzIGFyZSBpbXBsZW1lbnRlZCBpbiBBTkdMRSdzIFtWdWxrYW4gZm9ybWF0
IHRhYmxlXVsuLi92a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHBdLgorVGhlIHRhYmxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGJ5IFtgZ2VuX3ZrX2Zvcm1hdF90YWJsZS5weWBdKC4uL2dlbl92a19mb3Jt
YXRfdGFibGUucHkpLiBXZSBzdG9yZSB0aGUgbWFwcGluZyBmcm9tCiBbYGFuZ2xlOjpGb3JtYXQ6
OklEYF0oLi4vLi4vRm9ybWF0SURfYXV0b2dlbi5oKSB0byBbVmtGb3JtYXRdW1ZrRm9ybWF0XSBp
bgogW2B2a19mb3JtYXRfbWFwLmpzb25gXSguLi92a19mb3JtYXRfbWFwLmpzb24pLiBUaGUgZm9y
bWF0IG1hcCBhbHNvIGxpc3RzIHRoZSBvdmVycmlkZXMgYW5kIGZhbGxiYWNrcy4KIFRvIHVwZGF0
ZSB0aGUgdGFibGVzIHBsZWFzZSBtb2RpZnkgdGhlIGZvcm1hdCBtYXAgSlNPTiBhbmQgdGhlbiBy
dW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vZG9jL1NoYWRlck1vZHVsZUNvbXBpbGF0aW9uLm1kIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvU2hhZGVyTW9kdWxl
Q29tcGlsYXRpb24ubWQKaW5kZXggODk3MzBiMjNjZjEwZmNjNDE3ZTA5MjExMTY3YzhmYzdhNTE4
NmU4NC4uMGYzMTQ2YTA3YTM3YTFiMjBlY2Y1OGUyMjg4OTdjN2YwZmJmY2M5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9k
b2MvU2hhZGVyTW9kdWxlQ29tcGlsYXRpb24ubWQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvU2hhZGVyTW9kdWxlQ29tcGlsYXRp
b24ubWQKQEAgLTEwLDI1ICsxMCwzMyBAQCB3aXRoIHNvbWUgYWRkaXRpb25hbCB3b3JrYXJvdW5k
cyBhbmQgZW11bGF0aW9uLiBXZSBlbXVsYXRlIE9wZW5HTCdzIGRpZmZlcmVudCBkZQogeSBmbGlw
cGluZywgZGVmYXVsdCB1bmlmb3JtcywgYW5kIE9wZW5HTAogW2xpbmUgc2VnbWVudCByYXN0ZXJp
emF0aW9uXShPcGVuR0xMaW5lU2VnbWVudFJhc3Rlcml6YXRpb24ubWQpLiBGb3IgbW9yZSBpbmZv
IHNlZQogW1RyYW5zbGF0b3JWdWxrYW4uY3BwXVtUcmFuc2xhdG9yVnVsa2FuLmNwcF0uIEFmdGVy
IGluaXRpYWwgY29tcGlsYXRpb24gdGhlIHNoYWRlcnMgYXJlIG5vdAotY29tcGxldGUuIFRoZXkg
YXJlIHRlbXBsYXRlZCB3aXRoIG1hcmtlcnMgdGhhdCBhcmUgZmlsbGVkIGluIGxhdGVyIGF0IGxp
bmsgdGltZS4KLQotMS4gKipMaW5rLVRpbWUgVHJhbnNsYXRpb24qKjogRHVyaW5nIGEgY2FsbCB0
byBgZ2xMaW5rUHJvZ3JhbWAgdGhlIFZ1bGthbiBiYWNrLWVuZCBjYW4ga25vdyB0aGUKLW5lY2Vz
c2FyeSBsb2NhdGlvbnMgYW5kIHByb3BlcnRpZXMgdG8gd3JpdGUgdG8gY29ubmVjdCB0aGUgc2hh
ZGVyIHN0YWdlIGludGVyZmFjZXMuIFdlIGdldCB0aGUKLWNvbXBsZXRlZCBzaGFkZXIgc291cmNl
IHVzaW5nIEFOR0xFJ3MgW0dsc2xhbmdXcmFwcGVyVmtdW0dsc2xhbmdXcmFwcGVyVmsuY3BwXSBo
ZWxwZXIgY2xhc3MuIFdlIHN0aWxsCi1jYW5ub3QgZ2VuZXJhdGUgYFZrU2hhZGVyTW9kdWxlc2Ag
c2luY2Ugc29tZSBBTkdMRSBmZWF0dXJlcyBsaWtlCi1bT3BlbkdMIGxpbmUgcmFzdGVyaXphdGlv
bl0oT3BlbkdMTGluZVNlZ21lbnRSYXN0ZXJpemF0aW9uLm1kKSBlbXVsYXRpb24gZGVwZW5kIG9u
IGRyYXctdGltZQotaW5mb3JtYXRpb24uCi0KLTEuICoqRHJhdy10aW1lIFNQSVItViBHZW5lcmF0
aW9uKio6IE9uY2UgdGhlIGFwcGxpY2F0aW9uIHJlY29yZHMgYSBkcmF3IGNhbGwgd2UgdXNlIEto
cm9ub3MnCi1bZ2xzbGFuZ11bZ2xzbGFuZ10gdG8gY29udmVydCB0aGUgVnVsa2FuLWNvbXBhdGli
bGUgR0xTTCBpbnRvIFNQSVItVi4gIFRoZSBTUElSLVYgaXMgdGhlbiBjb21waWxlZAotaW50byBg
VmtTaGFkZXJNb2R1bGVzYC4gRm9yIGRldGFpbHMgcGxlYXNlIHNlZSBbR2xzbGFuZ1dyYXBwZXJW
ay5jcHBdW0dsc2xhbmdXcmFwcGVyVmsuY3BwXS4gVGhlCi1gVmtTaGFkZXJNb2R1bGVzYCBhcmUg
dGhlbiB1c2VkIGJ5IGBWa1BpcGVsaW5lc2Agd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3BlY2lhbGl6
YXRpb24gY29uc3RhbnQKLXZhbHVlcy4gTm90ZSB0aGF0IHdlIGN1cnJlbnRseSBkb24ndCB1c2Ug
W1NQSVJWLVRvb2xzXVtTUElSVi1Ub29sc10gdG8gcGVyZm9ybSBhbnkgU1BJUi1WCi1vcHRpbWl6
YXRpb24uIFRoaXMgY291bGQgYmUgc29tZXRoaW5nIHRvIGltcHJvdmUgb24gaW4gdGhlIGZ1dHVy
ZS4KK2NvbXBsZXRlLiBUaGUgdHJhbnNsYXRvciBpbml0aWFsbHkgYXNzaWducyByZXNvdXJjZXMg
YW5kIGluL291dCB2YXJpYWJsZXMgYXJiaXRyYXJ5IGRlc2NyaXB0b3Igc2V0LAorYmluZGluZyBh
bmQgbG9jYXRpb24gaW5kaWNlcy4gVGhlIGNvcnJlY3QgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGF0
IGxpbmsgdGltZS4gRm9yIHRoZSBzYWtlIG9mCit0cmFuc2Zvcm0gZmVlZGJhY2ssIHNvbWUgbWFy
a2VycyBhcmUgbGVmdCBpbiB0aGUgc2hhZGVyIGZvciBsaW5rLXRpbWUgc3Vic3RpdHV0aW9uLgor
CisgIFRoZSB0cmFuc2xhdG9yIG91dHB1dHMgc29tZSBmZWF0dXJlIGNvZGUgY29uZGl0aW9uYWwg
dG8gVnVsa2FuIHNwZWNpYWxpemF0aW9uIGNvbnN0YW50cywgd2hpY2ggYXJlCityZXNvbHZlZCBh
dCBkcmF3LXRpbWUuIEZvciBleGFtcGxlLAorW0JyZXNlbmhhbSBsaW5lIHJhc3Rlcml6YXRpb25d
KE9wZW5HTExpbmVTZWdtZW50UmFzdGVyaXphdGlvbi5tZCkgZW11bGF0aW9uLgorCisxLiAqKkxp
bmstVGltZSBDb21waWxhdGlvbiBhbmQgVHJhbnNmb3JtYXRpb24qKjogRHVyaW5nIGEgY2FsbCB0
byBgZ2xMaW5rUHJvZ3JhbWAgdGhlIFZ1bGthbgorYmFjay1lbmQgY2FuIGtub3cgdGhlIG5lY2Vz
c2FyeSBsb2NhdGlvbnMgYW5kIHByb3BlcnRpZXMgdG8gd3JpdGUgdG8gY29ubmVjdCB0aGUgc2hh
ZGVyIHN0YWdlCitpbnRlcmZhY2VzLiBXZSBnZXQgdGhlIGNvbXBsZXRlZCBzaGFkZXIgc291cmNl
IHVzaW5nIEFOR0xFJ3MKK1tHbHNsYW5nV3JhcHBlclZrXVtHbHNsYW5nV3JhcHBlclZrLmNwcF0g
aGVscGVyIGNsYXNzLiBBdCB0aGlzIHRpbWUsIHdlIHVzZSBLaHJvbm9zJworW2dsc2xhbmddW2ds
c2xhbmddIHRvIGNvbnZlcnQgdGhlIFZ1bGthbi1jb21wYXRpYmxlIEdMU0wgaW50byBTUElSLVYu
IEEgdHJhbnNmb3JtYXRpb24gcGFzcyBpcyBkb25lCitvbiB0aGUgZ2VuZXJhdGVkIFNQSVItViB0
byB1cGRhdGUgdGhlIGFyYml0cmFyeSBkZXNjcmlwdG9yIHNldCwgYmluZGluZyBhbmQgbG9jYXRp
b24gaW5kaWNlcyBzZXQgaW4KK3N0ZXAgMS4gQWRkaXRpb25hbGx5LCBjb21wb25lbnQgYW5kIHZh
cmlvdXMgdHJhbnNmb3JtIGZlZWRiYWNrIGRlY29yYXRpb25zIGFyZSBhZGRlZCBhbmQgaW5hY3Rp
dmUKK3ZhcnlpbmdzIGFyZSByZW1vdmVkIGZyb20gdGhlIHNoYWRlciBpbnRlcmZhY2UuIFdlIGN1
cnJlbnRseSBkb24ndCBnZW5lcmF0ZSBgVmtTaGFkZXJNb2R1bGVzYCBhdAordGhpcyB0aW1lLCBi
dXQgdGhhdCBjb3VsZCBiZSBhIGZ1dHVyZSBvcHRpbWl6YXRpb24uCisKKzEuICoqRHJhdy10aW1l
IFBpcGVsaW5lIENyZWF0aW9uKio6IE9uY2UgdGhlIGFwcGxpY2F0aW9uIHJlY29yZHMgYSBkcmF3
IGNhbGwsIHRoZSBTUElSLVYgaXMgY29tcGlsZWQKK2ludG8gYFZrU2hhZGVyTW9kdWxlYHMuIFRo
ZSBhcHByb3ByaWF0ZSBzcGVjaWFsaXphdGlvbiBjb25zdGFudHMgYXJlIHRoZW4gcmVzb2x2ZWQg
YW5kIHRoZQorYFZrUGlwZWxpbmVgIG9iamVjdCBpcyBjcmVhdGVkLiAgTm90ZSB0aGF0IHdlIGN1
cnJlbnRseSBkb24ndCB1c2UgW1NQSVJWLVRvb2xzXVtTUElSVi1Ub29sc10gdG8KK3BlcmZvcm0g
YW55IFNQSVItViBvcHRpbWl6YXRpb24uIFRoaXMgY291bGQgYmUgc29tZXRoaW5nIHRvIGltcHJv
dmUgb24gaW4gdGhlIGZ1dHVyZS4KIAogU2VlIHRoZSBiZWxvdyBkaWFncmFtIGZvciBhIGhpZ2gt
bGV2ZWwgdmlldyBvZiB0aGUgc2hhZGVyIHRyYW5zbGF0aW9uIGZsb3c6CiAKIDwhLS0gR2VuZXJh
dGVkIGZyb20gaHR0cHM6Ly9icmFtcC5naXRodWIuaW8vanMtc2VxdWVuY2UtZGlhZ3JhbXMvCisg
ICAgIE5vdGU6IHJlbW92ZSB3aGl0ZXNwYWNlIGluIC0gLT4gYXJyb3dzLgogcGFydGljaXBhbnQg
QXBwCiBwYXJ0aWNpcGFudCAiQU5HTEUgRnJvbnQtZW5kIgogcGFydGljaXBhbnQgIlZ1bGthbiBC
YWNrLWVuZCIKQEAgLTQxLDcgKzQ5LDcgQEAgQXBwLT4iQU5HTEUgRnJvbnQtZW5kIjogZ2xDb21w
aWxlU2hhZGVyIChWUykKICJWdWxrYW4gQmFjay1lbmQiLT4iQU5HTEUgVHJhbnNsYXRvciI6IHNo
OjpDb21waWxlCiAiQU5HTEUgVHJhbnNsYXRvciItIC0+IkFOR0xFIEZyb250LWVuZCI6IHJldHVy
biBWdWxrYW4tY29tcGF0aWJsZSBHTFNMCiAKLU5vdGUgcmlnaHQgb2YgIkFOR0xFIEZyb250LWVu
ZCI6IFNvdXJjZSBpcyB0ZW1wbGF0ZWRcbndpdGggbWFya2VycyB0byBiZVxuZmlsbGVkIGF0IGxp
bmsgdGltZS4KK05vdGUgcmlnaHQgb2YgIkFOR0xFIEZyb250LWVuZCI6IFNvdXJjZSBpcyB1c2lu
ZyBib2d1c1xuVnVsa2FuIHF1YWxpZmllcnMgdG8gYmVcbmNvcnJlY3RlZCBhdCBsaW5rIHRpbWUu
CiAKIE5vdGUgcmlnaHQgb2YgQXBwOiBTYW1lIGZvciBGUywgR1MsIGV0Yy4uLgogCkBAIC01Miwx
MSArNjAsMTMgQEAgQXBwLT4iQU5HTEUgRnJvbnQtZW5kIjogZ2xMaW5rUHJvZ3JhbQogCiBOb3Rl
IHJpZ2h0IG9mICJWdWxrYW4gQmFjay1lbmQiOiBQcm9ncmFtVmsgaW5pdHMgdW5pZm9ybXMsXG5s
YXlvdXRzLCBhbmQgZGVzY3JpcHRvcnMuCiAKLSJWdWxrYW4gQmFjay1lbmQiLT5HbHNsYW5nV3Jh
cHBlclZrOiBHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJTb3VyY2UKLUdsc2xhbmdXcmFwcGVy
VmstIC0+IlZ1bGthbiBCYWNrLWVuZCI6IHJldHVybiBmaWxsZWQtaW4gc291cmNlcworIlZ1bGth
biBCYWNrLWVuZCItPkdsc2xhbmdXcmFwcGVyVms6IEdsc2xhbmdXcmFwcGVyVms6OkdldFNoYWRl
clNwaXJ2Q29kZQorR2xzbGFuZ1dyYXBwZXJWay0+R2xzbGFuZzogR2xzbGFuZ1RvU3B2CitHbHNs
YW5nLSAtPkdsc2xhbmdXcmFwcGVyVms6IFJldHVybiBTUElSLVYKIAotTm90ZSByaWdodCBvZiAi
VnVsa2FuIEJhY2stZW5kIjogU291cmNlIGlzIHRlbXBsYXRlZCB3aXRoXG5kZWZpbmVzIHRvIGJl
IHJlc29sdmVkIGF0XG5kcmF3IHRpbWUuCitOb3RlIHJpZ2h0IG9mIEdsc2xhbmdXcmFwcGVyVms6
IFRyYW5zZm9ybSBTUElSLVYKIAorR2xzbGFuZ1dyYXBwZXJWay0gLT4iVnVsa2FuIEJhY2stZW5k
IjogcmV0dXJuIHRyYW5zZm9ybWVkIFNQSVItVgogIlZ1bGthbiBCYWNrLWVuZCItIC0+IkFOR0xF
IEZyb250LWVuZCI6IHJldHVybiBzdWNjZXNzCiAKIE5vdGUgcmlnaHQgb2YgQXBwOiBBcHAgZXhl
Y3V0aW9uIGNvbnRpbnVlcy4uLgpAQCAtNjQsMTAgKzc0LDYgQEAgTm90ZSByaWdodCBvZiBBcHA6
IEFwcCBleGVjdXRpb24gY29udGludWVzLi4uCiBBcHAtPiJBTkdMRSBGcm9udC1lbmQiOiBnbERy
YXdBcnJheXMgKGFueSBkcmF3KQogIkFOR0xFIEZyb250LWVuZCItPiJWdWxrYW4gQmFjay1lbmQi
OiBDb250ZXh0Vms6OmRyYXdBcnJheXMKIAotIlZ1bGthbiBCYWNrLWVuZCItPkdsc2xhbmdXcmFw
cGVyVms6IEdsc2xhbmdXcmFwcGVyVms6OkdldFNoYWRlckNvZGUgKHdpdGggZGVmaW5lcykKLUds
c2xhbmdXcmFwcGVyVmstPkdsc2xhbmc6IEdsc2xhbmdUb1NwdgotR2xzbGFuZy0gLT4iVnVsa2Fu
IEJhY2stZW5kIjogUmV0dXJuIFNQSVItVgotCiBOb3RlIHJpZ2h0IG9mICJWdWxrYW4gQmFjay1l
bmQiOiBXZSBpbml0IFZrU2hhZGVyTW9kdWxlc1xuYW5kIFZrUGlwZWxpbmUgdGhlblxucmVjb3Jk
IHRoZSBkcmF3LgogCiAiVnVsa2FuIEJhY2stZW5kIi0gLT4iQU5HTEUgRnJvbnQtZW5kIjogcmV0
dXJuIHN1Y2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vZG9jL2ltZy9WdWxrYW5TaGFkZXJUcmFuc2xhdGlvbi5zdmcg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2Rv
Yy9pbWcvVnVsa2FuU2hhZGVyVHJhbnNsYXRpb24uc3ZnCmluZGV4IDc3MjkwOGI2YWE4NzRkOGRm
ZDc1MzEyNTA4YjE4MWVjM2EwMjE5YTIuLjEwNzU2NWJiNTE3MDE4MjI5ZTkwYzJjOTU0NDhmYTQz
NDQxODUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vZG9jL2ltZy9WdWxrYW5TaGFkZXJUcmFuc2xhdGlvbi5zdmcKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9k
b2MvaW1nL1Z1bGthblNoYWRlclRyYW5zbGF0aW9uLnN2ZwpAQCAtMSw0ICsxLDQgQEAKLTw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQ
RSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMjAwMTA5MDQvL0VOIiAiaHR0cDovL3d3dy53
My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RURC9zdmcxMC5kdGQiPjxzdmcgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTE4NSIgaGVpZ2h0PSIxMjI5IiB4
bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHNvdXJjZT48IVtDREFU
QVtwYXJ0aWNpcGFudCBBcHAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiBz
dGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMjAw
MTA5MDQvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RU
RC9zdmcxMC5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0
aD0iMTM3MCIgaGVpZ2h0PSIxMTUyIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayI+PHNvdXJjZT48IVtDREFUQVtwYXJ0aWNpcGFudCBBcHAKIHBhcnRpY2lwYW50ICJB
TkdMRSBGcm9udC1lbmQiCiBwYXJ0aWNpcGFudCAiVnVsa2FuIEJhY2stZW5kIgogcGFydGljaXBh
bnQgIkFOR0xFIFRyYW5zbGF0b3IiCkBAIC0xMCw3ICsxMCw3IEBAIEFwcC0+IkFOR0xFIEZyb250
LWVuZCI6IGdsQ29tcGlsZVNoYWRlciAoVlMpCiAiVnVsa2FuIEJhY2stZW5kIi0+IkFOR0xFIFRy
YW5zbGF0b3IiOiBzaDo6Q29tcGlsZQogIkFOR0xFIFRyYW5zbGF0b3IiLS0+IkFOR0xFIEZyb250
LWVuZCI6IHJldHVybiBWdWxrYW4tY29tcGF0aWJsZSBHTFNMCiAKLU5vdGUgcmlnaHQgb2YgIkFO
R0xFIEZyb250LWVuZCI6IFNvdXJjZSBpcyB0ZW1wbGF0ZWRcbndpdGggbWFya2VycyB0byBiZVxu
ZmlsbGVkIGF0IGxpbmsgdGltZS4KK05vdGUgcmlnaHQgb2YgIkFOR0xFIEZyb250LWVuZCI6IFNv
dXJjZSBpcyB1c2luZyBib2d1c1xuVnVsa2FuIHF1YWxpZmllcnMgdG8gYmVcbmNvcnJlY3RlZCBh
dCBsaW5rIHRpbWUuCiAKIE5vdGUgcmlnaHQgb2YgQXBwOiBTYW1lIGZvciBGUywgR1MsIGV0Yy4u
LgogCkBAIC0yMSwxMSArMjEsMTMgQEAgQXBwLT4iQU5HTEUgRnJvbnQtZW5kIjogZ2xMaW5rUHJv
Z3JhbQogCiBOb3RlIHJpZ2h0IG9mICJWdWxrYW4gQmFjay1lbmQiOiBQcm9ncmFtVmsgaW5pdHMg
dW5pZm9ybXMsXG5sYXlvdXRzLCBhbmQgZGVzY3JpcHRvcnMuCiAKLSJWdWxrYW4gQmFjay1lbmQi
LT5HbHNsYW5nV3JhcHBlclZrOiBHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJTb3VyY2UKLUds
c2xhbmdXcmFwcGVyVmstLT4iVnVsa2FuIEJhY2stZW5kIjogcmV0dXJuIGZpbGxlZC1pbiBzb3Vy
Y2VzCisiVnVsa2FuIEJhY2stZW5kIi0+R2xzbGFuZ1dyYXBwZXJWazogR2xzbGFuZ1dyYXBwZXJW
azo6R2V0U2hhZGVyU3BpcnZDb2RlCitHbHNsYW5nV3JhcHBlclZrLT5HbHNsYW5nOiBHbHNsYW5n
VG9TcHYKK0dsc2xhbmctLT5HbHNsYW5nV3JhcHBlclZrOiBSZXR1cm4gU1BJUi1WCiAKLU5vdGUg
cmlnaHQgb2YgIlZ1bGthbiBCYWNrLWVuZCI6IFNvdXJjZSBpcyB0ZW1wbGF0ZWQgd2l0aFxuZGVm
aW5lcyB0byBiZSByZXNvbHZlZCBhdFxuZHJhdyB0aW1lLgorTm90ZSByaWdodCBvZiBHbHNsYW5n
V3JhcHBlclZrOiBUcmFuc2Zvcm0gU1BJUi1WCiAKK0dsc2xhbmdXcmFwcGVyVmstLT4iVnVsa2Fu
IEJhY2stZW5kIjogcmV0dXJuIHRyYW5zZm9ybWVkIFNQSVItVgogIlZ1bGthbiBCYWNrLWVuZCIt
LT4iQU5HTEUgRnJvbnQtZW5kIjogcmV0dXJuIHN1Y2Nlc3MKIAogTm90ZSByaWdodCBvZiBBcHA6
IEFwcCBleGVjdXRpb24gY29udGludWVzLi4uCkBAIC0zMywxMSArMzUsNyBAQCBOb3RlIHJpZ2h0
IG9mIEFwcDogQXBwIGV4ZWN1dGlvbiBjb250aW51ZXMuLi4KIEFwcC0+IkFOR0xFIEZyb250LWVu
ZCI6IGdsRHJhd0FycmF5cyAoYW55IGRyYXcpCiAiQU5HTEUgRnJvbnQtZW5kIi0+IlZ1bGthbiBC
YWNrLWVuZCI6IENvbnRleHRWazo6ZHJhd0FycmF5cwogCi0iVnVsa2FuIEJhY2stZW5kIi0+R2xz
bGFuZ1dyYXBwZXJWazogR2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyQ29kZSAod2l0aCBkZWZp
bmVzKQotR2xzbGFuZ1dyYXBwZXJWay0+R2xzbGFuZzogR2xzbGFuZ1RvU3B2Ci1HbHNsYW5nLS0+
IlZ1bGthbiBCYWNrLWVuZCI6IFJldHVybiBTUElSLVYgCi0KIE5vdGUgcmlnaHQgb2YgIlZ1bGth
biBCYWNrLWVuZCI6IFdlIGluaXQgVmtTaGFkZXJNb2R1bGVzXG5hbmQgVmtQaXBlbGluZSB0aGVu
XG5yZWNvcmQgdGhlIGRyYXcuCiAKICJWdWxrYW4gQmFjay1lbmQiLS0+IkFOR0xFIEZyb250LWVu
ZCI6IHJldHVybiBzdWNjZXNzCi1dXT48L3NvdXJjZT48ZGVzYz48L2Rlc2M+PGRlZnM+PG1hcmtl
ciB2aWV3Qm94PSIwIDAgNSA1IiBtYXJrZXJXaWR0aD0iNSIgbWFya2VySGVpZ2h0PSI1IiBvcmll
bnQ9ImF1dG8iIHJlZlg9IjUiIHJlZlk9IjIuNSIgaWQ9Im1hcmtlckFycm93QmxvY2siPjxwYXRo
IGQ9Ik0gMCAwIEwgNSAyLjUgTCAwIDUgeiI+PC9wYXRoPjwvbWFya2VyPjxtYXJrZXIgdmlld0Jv
eD0iMCAwIDkuNiAxNiIgbWFya2VyV2lkdGg9IjQiIG1hcmtlckhlaWdodD0iMTYiIG9yaWVudD0i
YXV0byIgcmVmWD0iOS42IiByZWZZPSI4IiBpZD0ibWFya2VyQXJyb3dPcGVuIj48cGF0aCBkPSJN
IDkuNiw4IDEuOTIsMTYgMCwxMy43IDUuNzYsOCAwLDIuMjg2IDEuOTIsMCA5LjYsOCB6Ij48L3Bh
dGg+PC9tYXJrZXI+PC9kZWZzPjxnIGNsYXNzPSJ0aXRsZSI+PC9nPjxnIGNsYXNzPSJhY3RvciI+
PHJlY3QgeD0iMTAiIHk9IjIwIiB3aWR0aD0iNDcuNTkzNzUiIGhlaWdodD0iMzkiIHN0cm9rZT0i
IzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48
dGV4dCB4PSIyMSIgeT0iNDUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAm
cXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjIwIj5BcHA8L3Rz
cGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMCIgeT0iMTE3MC4zNTkz
NzUiIHdpZHRoPSI0Ny41OTM3NSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIj
ZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjIxIiB5PSIx
MTk1LjM1OTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0Fu
ZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMjAiPkFwcDwvdHNwYW4+PC90
ZXh0PjwvZz48bGluZSB4MT0iMzMuNzk2ODc1IiB4Mj0iMzMuNzk2ODc1IiB5MT0iNTkiIHkyPSIx
MTcwLjM1OTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdp
ZHRoOiAyOyI+PC9saW5lPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iMjM3LjAzOTA2MjUiIHk9
IjIwIiB3aWR0aD0iMTUyLjk1MzEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxs
PSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjI0OC4w
MzkwNjI1IiB5PSI0NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90
O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMjQ3LjAzOTA2MjUiPkFO
R0xFIEZyb250LWVuZDwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9
IjIzNy4wMzkwNjI1IiB5PSIxMTcwLjM1OTM3NSIgd2lkdGg9IjE1Mi45NTMxMjUiIGhlaWdodD0i
MzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDog
MjsiPjwvcmVjdD48dGV4dCB4PSIyNDguMDM5MDYyNSIgeT0iMTE5NS4zNTkzNzUiIHN0eWxlPSJm
b250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9u
b3NwYWNlOyI+PHRzcGFuIHg9IjI0Ny4wMzkwNjI1Ij5BTkdMRSBGcm9udC1lbmQ8L3RzcGFuPjwv
dGV4dD48L2c+PGxpbmUgeDE9IjMxMy41MTU2MjUiIHgyPSIzMTMuNTE1NjI1IiB5MT0iNTkiIHky
PSIxMTcwLjM1OTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tl
LXdpZHRoOiAyOyI+PC9saW5lPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iNDYyLjk3NjU2MjUi
IHk9IjIwIiB3aWR0aD0iMTUyLjk1MzEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBm
aWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjQ3
My45NzY1NjI1IiB5PSI0NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNDcyLjk3NjU2MjUi
PlZ1bGthbiBCYWNrLWVuZDwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0
IHg9IjQ2Mi45NzY1NjI1IiB5PSIxMTcwLjM1OTM3NSIgd2lkdGg9IjE1Mi45NTMxMjUiIGhlaWdo
dD0iMzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0
aDogMjsiPjwvcmVjdD48dGV4dCB4PSI0NzMuOTc2NTYyNSIgeT0iMTE5NS4zNTkzNzUiIHN0eWxl
PSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90Oywg
bW9ub3NwYWNlOyI+PHRzcGFuIHg9IjQ3Mi45NzY1NjI1Ij5WdWxrYW4gQmFjay1lbmQ8L3RzcGFu
PjwvdGV4dD48L2c+PGxpbmUgeDE9IjUzOS40NTMxMjUiIHgyPSI1MzkuNDUzMTI1IiB5MT0iNTki
IHkyPSIxMTcwLjM1OTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ry
b2tlLXdpZHRoOiAyOyI+PC9saW5lPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iNzI4LjM5ODQz
NzUiIHk9IjIwIiB3aWR0aD0iMTYxLjk1MzEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAw
IiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9
IjczOS4zOTg0Mzc1IiB5PSI0NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6
ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNzM4LjM5ODQz
NzUiPkFOR0xFIFRyYW5zbGF0b3I8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48
cmVjdCB4PSI3MjguMzk4NDM3NSIgeT0iMTE3MC4zNTkzNzUiIHdpZHRoPSIxNjEuOTUzMTI1IiBo
ZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Ut
d2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0iNzM5LjM5ODQzNzUiIHk9IjExOTUuMzU5Mzc1IiBz
dHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVv
dDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI3MzguMzk4NDM3NSI+QU5HTEUgVHJhbnNsYXRvcjwv
dHNwYW4+PC90ZXh0PjwvZz48bGluZSB4MT0iODA5LjM3NSIgeDI9IjgwOS4zNzUiIHkxPSI1OSIg
eTI9IjExNzAuMzU5Mzc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJv
a2Utd2lkdGg6IDI7Ij48L2xpbmU+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSI5MTAuMzUxNTYy
NSIgeT0iMjAiIHdpZHRoPSIxNDMuMzU5Mzc1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAi
IGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0i
OTIwLjM1MTU2MjUiIHk9IjQ1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTog
JnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI5MjAuMzUxNTYy
NSI+R2xzbGFuZ1dyYXBwZXJWazwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxy
ZWN0IHg9IjkxMC4zNTE1NjI1IiB5PSIxMTcwLjM1OTM3NSIgd2lkdGg9IjE0My4zNTkzNzUiIGhl
aWdodD0iMzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13
aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSI5MjAuMzUxNTYyNSIgeT0iMTE5NS4zNTkzNzUiIHN0
eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90
OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjkyMC4zNTE1NjI1Ij5HbHNsYW5nV3JhcHBlclZrPC90
c3Bhbj48L3RleHQ+PC9nPjxsaW5lIHgxPSI5ODIuMDMxMjUiIHgyPSI5ODIuMDMxMjUiIHkxPSI1
OSIgeTI9IjExNzAuMzU5Mzc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJz
dHJva2Utd2lkdGg6IDI7Ij48L2xpbmU+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMDczLjcx
MDkzNzUiIHk9IjIwIiB3aWR0aD0iODEuNzgxMjUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAwMDAw
MCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4
PSIxMDgzLjcxMDkzNzUiIHk9IjQ1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWls
eTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMDgzLjcx
MDkzNzUiPkdsc2xhbmc8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4
PSIxMDczLjcxMDkzNzUiIHk9IjExNzAuMzU5Mzc1IiB3aWR0aD0iODEuNzgxMjUiIGhlaWdodD0i
MzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDog
MjsiPjwvcmVjdD48dGV4dCB4PSIxMDgzLjcxMDkzNzUiIHk9IjExOTUuMzU5Mzc1IiBzdHlsZT0i
Zm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1v
bm9zcGFjZTsiPjx0c3BhbiB4PSIxMDgzLjcxMDkzNzUiPkdsc2xhbmc8L3RzcGFuPjwvdGV4dD48
L2c+PGxpbmUgeDE9IjExMTQuNjAxNTYyNSIgeDI9IjExMTQuNjAxNTYyNSIgeTE9IjU5IiB5Mj0i
MTE3MC4zNTkzNzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13
aWR0aDogMjsiPjwvbGluZT48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI4NS42ODc1IiB5PSI4
OS41IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1v
bm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI4NS42ODc1Ij5nbENvbXBpbGVTaGFkZXIg
KFZTKTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzMy43OTY4NzUiIHgyPSIzMTMuNTE1NjI1IiB5
MT0iOTgiIHkyPSI5OCIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tl
LXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDsp
OyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIzNTEuNjA5Mzc1IiB5PSIx
MjguNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBN
b25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMzUxLjYwOTM3NSI+U2hhZGVyVms6OmNv
bXBpbGU8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzEzLjUxNTYyNSIgeDI9IjUzOS40NTMxMjUi
IHkxPSIxMzciIHkyPSIxMzciIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0
cm9rZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1
b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iNjI1LjkyOTY4NzUi
IHk9IjE2Ny41IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5k
YWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI2MjUuOTI5Njg3NSI+c2g6OkNv
bXBpbGU8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iNTM5LjQ1MzEyNSIgeDI9IjgwOS4zNzUiIHkx
PSIxNzYiIHkyPSIxNzYiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9r
ZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7
KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iNDMzLjg5MDYyNSIgeT0i
MjA2LjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUg
TW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjQzMy44OTA2MjUiPnJldHVybiBWdWxr
YW4tY29tcGF0aWJsZSBHTFNMPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjgwOS4zNzUiIHgyPSIz
MTMuNTE1NjI1IiB5MT0iMjE1IiB5Mj0iMjE1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUi
IHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDYsIDI7IG1hcmtlci1l
bmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNs
YXNzPSJub3RlIj48cmVjdCB4PSIzMzMuNTE1NjI1IiB5PSIyMzUiIHdpZHRoPSIxODUuOTM3NSIg
aGVpZ2h0PSI2Ny4zOTA2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9
InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSIzMzguNTE1NjI1IiB5PSIyNTUiIHN0
eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90
OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjMzOC41MTU2MjUiPlNvdXJjZSBpcyB0ZW1wbGF0ZWQ8
L3RzcGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9IjMzOC41MTU2MjUiPndpdGggbWFya2VycyB0byBi
ZTwvdHNwYW4+PHRzcGFuIGR5PSIxLjJlbSIgeD0iMzM4LjUxNTYyNSI+ZmlsbGVkIGF0IGxpbmsg
dGltZS48L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9IjUzLjc5Njg3
NSIgeT0iMzIyLjM5MDYyNSIgd2lkdGg9IjIxMi4zMjgxMjUiIGhlaWdodD0iMjkiIHN0cm9rZT0i
IzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48
dGV4dCB4PSI1OC43OTY4NzUiIHk9IjM0Mi4zOTA2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7
IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFu
IHg9IjU4Ljc5Njg3NSI+U2FtZSBmb3IgRlMsIEdTLCBldGMuLi48L3RzcGFuPjwvdGV4dD48L2c+
PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iODEuMjg5MDYyNSIgeT0iMzgxLjg5MDYyNSIgc3R5
bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7
LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iODEuMjg5MDYyNSI+Z2xDcmVhdGVQcm9ncmFtICguLi4p
PC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjMzLjc5Njg3NSIgeDI9IjMxMy41MTU2MjUiIHkxPSIz
OTAuMzkwNjI1IiB5Mj0iMzkwLjM5MDYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBz
dHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93
QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI4NS42
ODc1IiB5PSI0MjAuODkwNjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTog
JnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI4NS42ODc1Ij5n
bEF0dGFjaFNoYWRlciAoLi4uKTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzMy43OTY4NzUiIHgy
PSIzMTMuNTE1NjI1IiB5MT0iNDI5LjM5MDYyNSIgeTI9IjQyOS4zOTA2MjUiIHN0cm9rZT0iIzAw
MDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJs
KCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9InNp
Z25hbCI+PHRleHQgeD0iMTE2LjM3NSIgeT0iNDU5Ljg5MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTog
MTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48
dHNwYW4geD0iMTE2LjM3NSI+Z2xMaW5rUHJvZ3JhbTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIz
My43OTY4NzUiIHgyPSIzMTMuNTE1NjI1IiB5MT0iNDY4LjM5MDYyNSIgeTI9IjQ2OC4zOTA2MjUi
IHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFy
a2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+
PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iMzYwLjQwNjI1IiB5PSI0OTguODkwNjI1IiBzdHls
ZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDss
IG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIzNjAuNDA2MjUiPlByb2dyYW1Wazo6bGluazwvdHNwYW4+
PC90ZXh0PjxsaW5lIHgxPSIzMTMuNTE1NjI1IiB4Mj0iNTM5LjQ1MzEyNSIgeTE9IjUwNy4zOTA2
MjUiIHkyPSI1MDcuMzkwNjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJz
dHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZx
dW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNsYXNzPSJub3RlIj48cmVjdCB4PSI1NTkuNDUzMTI1IiB5
PSI1MjcuMzkwNjI1IiB3aWR0aD0iMjI5LjkyMTg3NSIgaGVpZ2h0PSI0OC4xODc1IiBzdHJva2U9
IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L3JlY3Q+
PHRleHQgeD0iNTY0LjQ1MzEyNSIgeT0iNTQ3LjM5MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZw
eDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNw
YW4geD0iNTY0LjQ1MzEyNSI+UHJvZ3JhbVZrIGluaXRzIHVuaWZvcm1zLDwvdHNwYW4+PHRzcGFu
IGR5PSIxLjJlbSIgeD0iNTY0LjQ1MzEyNSI+bGF5b3V0cywgYW5kIGRlc2NyaXB0b3JzLjwvdHNw
YW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI2MjQuMjg5MDYyNSIgeT0i
NjA2LjA3ODEyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0Fu
ZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNjI0LjI4OTA2MjUiPkdsc2xh
bmdXcmFwcGVyVms6OkdldFNoYWRlclNvdXJjZTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSI1Mzku
NDUzMTI1IiB4Mj0iOTgyLjAzMTI1IiB5MT0iNjE0LjU3ODEyNSIgeTI9IjYxNC41NzgxMjUiIHN0
cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2Vy
LWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcg
Y2xhc3M9InNpZ25hbCI+PHRleHQgeD0iNjU1LjE3OTY4NzUiIHk9IjY0NS4wNzgxMjUiIHN0eWxl
PSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90Oywg
bW9ub3NwYWNlOyI+PHRzcGFuIHg9IjY1NS4xNzk2ODc1Ij5yZXR1cm4gZmlsbGVkLWluIHNvdXJj
ZXM8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iOTgyLjAzMTI1IiB4Mj0iNTM5LjQ1MzEyNSIgeTE9
IjY1My41NzgxMjUiIHkyPSI2NTMuNTc4MTI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUi
IHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDYsIDI7IG1hcmtlci1l
bmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNs
YXNzPSJub3RlIj48cmVjdCB4PSI1NTkuNDUzMTI1IiB5PSI2NzMuNTc4MTI1IiB3aWR0aD0iMjI5
LjkyMTg3NSIgaGVpZ2h0PSI2Ny4zOTA2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZm
ZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSI1NjQuNDUzMTI1IiB5
PSI2OTMuNTc4MTI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7
QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI1NjQuNDUzMTI1Ij5Tb3Vy
Y2UgaXMgdGVtcGxhdGVkIHdpdGg8L3RzcGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9IjU2NC40NTMx
MjUiPmRlZmluZXMgdG8gYmUgcmVzb2x2ZWQgYXQ8L3RzcGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9
IjU2NC40NTMxMjUiPmRyYXcgdGltZS48L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9InNpZ25h
bCI+PHRleHQgeD0iMzY0LjkwNjI1IiB5PSI3NzEuNDY4NzUiIHN0eWxlPSJmb250LXNpemU6IDE2
cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRz
cGFuIHg9IjM2NC45MDYyNSI+cmV0dXJuIHN1Y2Nlc3M8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0i
NTM5LjQ1MzEyNSIgeDI9IjMxMy41MTU2MjUiIHkxPSI3NzkuOTY4NzUiIHkyPSI3NzkuOTY4NzUi
IHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgc3Ry
b2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Js
b2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9IjUzLjc5Njg3
NSIgeT0iNzk5Ljk2ODc1IiB3aWR0aD0iMjM5LjcxODc1IiBoZWlnaHQ9IjI5IiBzdHJva2U9IiMw
MDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L3JlY3Q+PHRl
eHQgeD0iNTkuNzk2ODc1IiB5PSI4MTkuOTY4NzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZv
bnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9
IjU4Ljc5Njg3NSI+QXBwIGV4ZWN1dGlvbiBjb250aW51ZXMuLi48L3RzcGFuPjwvdGV4dD48L2c+
PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iNzIuNDkyMTg3NSIgeT0iODU5LjQ2ODc1IiBzdHls
ZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDss
IG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI3Mi40OTIxODc1Ij5nbERyYXdBcnJheXMgKGFueSBkcmF3
KTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzMy43OTY4NzUiIHgyPSIzMTMuNTE1NjI1IiB5MT0i
ODY3Ljk2ODc1IiB5Mj0iODY3Ljk2ODc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0
eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dC
bG9jayZxdW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9IjMzNC4x
MTcxODc1IiB5PSI4OTguNDY4NzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5
OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjMzNC4xMTcx
ODc1Ij5Db250ZXh0Vms6OmRyYXdBcnJheXM8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzEzLjUx
NTYyNSIgeDI9IjUzOS40NTMxMjUiIHkxPSI5MDYuOTY4NzUiIHkyPSI5MDYuOTY4NzUiIHN0cm9r
ZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVu
ZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xh
c3M9InNpZ25hbCI+PHRleHQgeD0iNTY3LjIxMDkzNzUiIHk9IjkzNy40Njg3NSIgc3R5bGU9ImZv
bnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25v
c3BhY2U7Ij48dHNwYW4geD0iNTY3LjIxMDkzNzUiPkdsc2xhbmdXcmFwcGVyVms6OkdldFNoYWRl
ckNvZGUgKHdpdGggZGVmaW5lcyk8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iNTM5LjQ1MzEyNSIg
eDI9Ijk4Mi4wMzEyNSIgeTE9Ijk0NS45Njg3NSIgeTI9Ijk0NS45Njg3NSIgc3Ryb2tlPSIjMDAw
MDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwo
JnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2ln
bmFsIj48dGV4dCB4PSI5OTUuNDMzNTkzNzUiIHk9Ijk3Ni40Njg3NSIgc3R5bGU9ImZvbnQtc2l6
ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7
Ij48dHNwYW4geD0iOTk1LjQzMzU5Mzc1Ij5HbHNsYW5nVG9TcHY8L3RzcGFuPjwvdGV4dD48bGlu
ZSB4MT0iOTgyLjAzMTI1IiB4Mj0iMTExNC42MDE1NjI1IiB5MT0iOTg0Ljk2ODc1IiB5Mj0iOTg0
Ljk2ODc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6
IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7Ij48L2xp
bmU+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9Ijc2OS4yNDYwOTM3NSIgeT0iMTAxNS40
Njg3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBN
b25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNzY5LjI0NjA5Mzc1Ij5SZXR1cm4gU1BJ
Ui1WPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjExMTQuNjAxNTYyNSIgeDI9IjUzOS40NTMxMjUi
IHkxPSIxMDIzLjk2ODc1IiB5Mj0iMTAyMy45Njg3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJu
b25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2LCAyOyBtYXJr
ZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48
ZyBjbGFzcz0ibm90ZSI+PHJlY3QgeD0iNTU5LjQ1MzEyNSIgeT0iMTA0My45Njg3NSIgd2lkdGg9
IjIxMi4zMjgxMjUiIGhlaWdodD0iNjcuMzkwNjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNm
ZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0iNTY0LjQ1MzEy
NSIgeT0iMTA2My45Njg3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTY0LjQ1MzEyNSI+
V2UgaW5pdCBWa1NoYWRlck1vZHVsZXM8L3RzcGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9IjU2NC40
NTMxMjUiPmFuZCBWa1BpcGVsaW5lIHRoZW48L3RzcGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9IjU2
NC40NTMxMjUiPnJlY29yZCB0aGUgZHJhdy48L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9InNp
Z25hbCI+PHRleHQgeD0iMzY0LjkwNjI1IiB5PSIxMTQxLjg1OTM3NSIgc3R5bGU9ImZvbnQtc2l6
ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7
Ij48dHNwYW4geD0iMzY0LjkwNjI1Ij5yZXR1cm4gc3VjY2VzczwvdHNwYW4+PC90ZXh0PjxsaW5l
IHgxPSI1MzkuNDUzMTI1IiB4Mj0iMzEzLjUxNTYyNSIgeTE9IjExNTAuMzU5Mzc1IiB5Mj0iMTE1
MC4zNTkzNzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0
aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJr
ZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorXV0+PC9zb3VyY2U+PGRlc2M+PC9kZXNjPjxkZWZzPjxtYXJrZXIgdmlld0Jv
eD0iMCAwIDUgNSIgbWFya2VyV2lkdGg9IjUiIG1hcmtlckhlaWdodD0iNSIgb3JpZW50PSJhdXRv
IiByZWZYPSI1IiByZWZZPSIyLjUiIGlkPSJtYXJrZXJBcnJvd0Jsb2NrIj48cGF0aCBkPSJNIDAg
MCBMIDUgMi41IEwgMCA1IHoiPjwvcGF0aD48L21hcmtlcj48bWFya2VyIHZpZXdCb3g9IjAgMCA5
LjYgMTYiIG1hcmtlcldpZHRoPSI0IiBtYXJrZXJIZWlnaHQ9IjE2IiBvcmllbnQ9ImF1dG8iIHJl
Zlg9IjkuNiIgcmVmWT0iOCIgaWQ9Im1hcmtlckFycm93T3BlbiI+PHBhdGggZD0iTSA5LjYsOCAx
LjkyLDE2IDAsMTMuNyA1Ljc2LDggMCwyLjI4NiAxLjkyLDAgOS42LDggeiI+PC9wYXRoPjwvbWFy
a2VyPjwvZGVmcz48ZyBjbGFzcz0idGl0bGUiPjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9
IjEwIiB5PSIyMCIgd2lkdGg9IjQ4LjkwNjI1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAi
IGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxp
bmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0
YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tl
PSIiPjwvcmVjdD48dGV4dCB4PSIyMCIgeT0iNDUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZv
bnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9
IjIwIj5BcHA8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMCIg
eT0iMTA5My4wMTU2MjUiIHdpZHRoPSI0OC45MDYyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAw
MDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXIt
aW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsi
IGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0
cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iMjAiIHk9IjExMTguMDE1NjI1IiBzdHlsZT0iZm9udC1z
aXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFj
ZTsiPjx0c3BhbiB4PSIyMCI+QXBwPC90c3Bhbj48L3RleHQ+PC9nPjxsaW5lIHgxPSIzNC40NTMx
MjUiIHgyPSIzNC40NTMxMjUiIHkxPSI1OSIgeTI9IjEwOTMuMDE1NjI1IiBzdHJva2U9IiMwMDAw
MDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxp
bmUtZmlsbDpub25lOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1k
YXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIi
PjwvbGluZT48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjI1Mi42NTYyNSIgeT0iMjAiIHdpZHRo
PSIxNjQuNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHls
ZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1k
YXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUt
ZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0i
MjYyLjY1NjI1IiB5PSI0NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMjYyLjY1NjI1Ij5B
TkdMRSBGcm9udC1lbmQ8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4
PSIyNTIuNjU2MjUiIHk9IjEwOTMuMDE1NjI1IiB3aWR0aD0iMTY0LjUiIGhlaWdodD0iMzkiIHN0
cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1k
YXJrcmVhZGVyLWlubGluZS1maWxsOiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tl
OiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVy
LWlubGluZS1zdHJva2U9IiI+PC9yZWN0Pjx0ZXh0IHg9IjI2Mi42NTYyNSIgeT0iMTExOC4wMTU2
MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9u
byZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjI2Mi42NTYyNSI+QU5HTEUgRnJvbnQtZW5k
PC90c3Bhbj48L3RleHQ+PC9nPjxsaW5lIHgxPSIzMzQuOTA2MjUiIHgyPSIzMzQuOTA2MjUiIHkx
PSI1OSIgeTI9IjEwOTMuMDE1NjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxl
PSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmty
ZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxs
PSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48ZyBjbGFzcz0iYWN0
b3IiPjxyZWN0IHg9IjUyNC4yMTg3NSIgeT0iMjAiIHdpZHRoPSIxNjQuNSIgaGVpZ2h0PSIzOSIg
c3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAt
LWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJv
a2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFk
ZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iNTM0LjIxODc1IiB5PSI0NSIgc3R5
bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7
LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTM0LjIxODc1Ij5WdWxrYW4gQmFjay1lbmQ8L3RzcGFu
PjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSI1MjQuMjE4NzUiIHk9IjEwOTMu
MDE1NjI1IiB3aWR0aD0iMTY0LjUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0i
I2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxs
OiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmty
ZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9y
ZWN0Pjx0ZXh0IHg9IjUzNC4yMTg3NSIgeT0iMTExOC4wMTU2MjUiIHN0eWxlPSJmb250LXNpemU6
IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+
PHRzcGFuIHg9IjUzNC4yMTg3NSI+VnVsa2FuIEJhY2stZW5kPC90c3Bhbj48L3RleHQ+PC9nPjxs
aW5lIHgxPSI2MDYuNDY4NzUiIHgyPSI2MDYuNDY4NzUiIHkxPSI1OSIgeTI9IjEwOTMuMDE1NjI1
IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0t
ZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZToj
MDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1p
bmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjgxMC4wNDY4
NzUiIHk9IjIwIiB3aWR0aD0iMTc0LjUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAwMDAwMCIgZmls
bD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlubGluZS1m
aWxsOiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRh
cmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+
PC9yZWN0Pjx0ZXh0IHg9IjgyMC4wNDY4NzUiIHk9IjQ1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4
OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3Bh
biB4PSI4MjAuMDQ2ODc1Ij5BTkdMRSBUcmFuc2xhdG9yPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNs
YXNzPSJhY3RvciI+PHJlY3QgeD0iODEwLjA0Njg3NSIgeT0iMTA5My4wMTU2MjUiIHdpZHRoPSIx
NzQuNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0i
c3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJr
cmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmls
bD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iODIw
LjA0Njg3NSIgeT0iMTExOC4wMTU2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFt
aWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjgyMC4w
NDY4NzUiPkFOR0xFIFRyYW5zbGF0b3I8L3RzcGFuPjwvdGV4dD48L2c+PGxpbmUgeDE9Ijg5Ny4y
OTY4NzUiIHgyPSI4OTcuMjk2ODc1IiB5MT0iNTkiIHkyPSIxMDkzLjAxNTYyNSIgc3Ryb2tlPSIj
MDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXIt
aW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRh
dGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9r
ZT0iIj48L2xpbmU+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMDA0LjU0Njg3NSIgeT0iMjAi
IHdpZHRoPSIxNzQuNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZm
IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdl
MTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1p
bmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRl
eHQgeD0iMTAxNC41NDY4NzUiIHk9IjQ1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZh
bWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMDE0
LjU0Njg3NSI+R2xzbGFuZ1dyYXBwZXJWazwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0
b3IiPjxyZWN0IHg9IjEwMDQuNTQ2ODc1IiB5PSIxMDkzLjAxNTYyNSIgd2lkdGg9IjE3NC41IiBo
ZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Ut
d2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXIt
aW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRh
dGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSIxMDE0LjU0Njg3
NSIgeT0iMTExOC4wMTU2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAm
cXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjEwMTQuNTQ2ODc1
Ij5HbHNsYW5nV3JhcHBlclZrPC90c3Bhbj48L3RleHQ+PC9nPjxsaW5lIHgxPSIxMDkxLjc5Njg3
NSIgeDI9IjEwOTEuNzk2ODc1IiB5MT0iNTkiIHkyPSIxMDkzLjAxNTYyNSIgc3Ryb2tlPSIjMDAw
MDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5s
aW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEt
ZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0i
Ij48L2xpbmU+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMjUyLjU3ODEyNSIgeT0iMjAiIHdp
ZHRoPSI4Ny40Mzc1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYi
IHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2Ux
OyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlu
bGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4
dCB4PSIxMjYyLjU3ODEyNSIgeT0iNDUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFt
aWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjEyNjIu
NTc4MTI1Ij5HbHNsYW5nPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJhY3RvciI+PHJlY3Qg
eD0iMTI1Mi41NzgxMjUiIHk9IjEwOTMuMDE1NjI1IiB3aWR0aD0iODcuNDM3NSIgaGVpZ2h0PSIz
OSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAy
OyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVyLWlubGluZS1z
dHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmty
ZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iMTI2Mi41NzgxMjUiIHk9IjEx
MTguMDE1NjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5k
YWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMjYyLjU3ODEyNSI+R2xzbGFu
ZzwvdHNwYW4+PC90ZXh0PjwvZz48bGluZSB4MT0iMTI5Ni4yOTY4NzUiIHgyPSIxMjk2LjI5Njg3
NSIgeTE9IjU5IiB5Mj0iMTA5My4wMTU2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIg
c3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0t
ZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5l
LWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjxnIGNsYXNz
PSJzaWduYWwiPjx0ZXh0IHg9Ijg4LjM1MTU2MjUiIHk9Ijg5LjUiIHN0eWxlPSJmb250LXNpemU6
IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+
PHRzcGFuIHg9Ijg4LjM1MTU2MjUiPmdsQ29tcGlsZVNoYWRlciAoVlMpPC90c3Bhbj48L3RleHQ+
PGxpbmUgeDE9IjM0LjQ1MzEyNSIgeDI9IjMzNC45MDYyNSIgeTE9Ijk4IiB5Mj0iOTgiIHN0cm9r
ZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVu
ZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlubGlu
ZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRh
cmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+
PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIzODguODA0Njg3NSIgeT0iMTI4
LjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9u
byZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjM4OC44MDQ2ODc1Ij5TaGFkZXJWazo6Y29t
cGlsZTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzMzQuOTA2MjUiIHgyPSI2MDYuNDY4NzUiIHkx
PSIxMzciIHkyPSIxMzciIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9r
ZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7
KTsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ry
b2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVh
ZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4
PSI2OTguODk4NDM3NSIgeT0iMTY3LjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFt
aWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjY5OC44
OTg0Mzc1Ij5zaDo6Q29tcGlsZTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSI2MDYuNDY4NzUiIHgy
PSI4OTcuMjk2ODc1IiB5MT0iMTc2IiB5Mj0iMTc2IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5v
bmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2Vy
QXJyb3dCbG9jayZxdW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmty
ZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxs
PSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xhc3M9
InNpZ25hbCI+PHRleHQgeD0iNDc2LjQyMTg3NSIgeT0iMjA2LjUiIHN0eWxlPSJmb250LXNpemU6
IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+
PHRzcGFuIHg9IjQ3Ni40MjE4NzUiPnJldHVybiBWdWxrYW4tY29tcGF0aWJsZSBHTFNMPC90c3Bh
bj48L3RleHQ+PGxpbmUgeDE9Ijg5Ny4yOTY4NzUiIHgyPSIzMzQuOTA2MjUiIHkxPSIyMTUiIHky
PSIyMTUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDog
Mjsgc3Ryb2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJB
cnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3Jl
YWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9
IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0i
bm90ZSI+PHJlY3QgeD0iMzU0LjkwNjI1IiB5PSIyMzUiIHdpZHRoPSIyMzEuNTYyNSIgaGVpZ2h0
PSI2Ny40MDYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tl
LXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVy
LWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBk
YXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iMzU5LjkwNjI1
IiB5PSIyNTUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRh
bGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjM1OS45MDYyNSI+U291cmNlIGlz
IHVzaW5nIGJvZ3VzPC90c3Bhbj48dHNwYW4gZHk9IjEuMmVtIiB4PSIzNTkuOTA2MjUiPlZ1bGth
biBxdWFsaWZpZXJzIHRvIGJlPC90c3Bhbj48dHNwYW4gZHk9IjEuMmVtIiB4PSIzNTkuOTA2MjUi
PmNvcnJlY3RlZCBhdCBsaW5rIHRpbWUuPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJub3Rl
Ij48cmVjdCB4PSI1NC40NTMxMjUiIHk9IjMyMi40MDYyNSIgd2lkdGg9IjIzMS41NjI1IiBoZWln
aHQ9IjI5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lk
dGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5s
aW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEt
ZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSI1OS40NTMxMjUiIHk9
IjM0Mi40MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0Fu
ZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTkuNDUzMTI1Ij5TYW1lIGZv
ciBGUywgR1MsIGV0Yy4uLjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4
dCB4PSI4My41MzEyNSIgeT0iMzgxLjkwNjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250
LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI4
My41MzEyNSI+Z2xDcmVhdGVQcm9ncmFtICguLi4pPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjM0
LjQ1MzEyNSIgeDI9IjMzNC45MDYyNSIgeTE9IjM5MC40MDYyNSIgeTI9IjM5MC40MDYyNSIgc3Ry
b2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXIt
ZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyAtLWRhcmtyZWFkZXItaW5s
aW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEt
ZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0i
Ij48L2xpbmU+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9Ijg4LjM1MTU2MjUiIHk9IjQy
MC45MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFs
ZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iODguMzUxNTYyNSI+Z2xBdHRhY2hT
aGFkZXIgKC4uLik8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzQuNDUzMTI1IiB4Mj0iMzM0Ljkw
NjI1IiB5MT0iNDI5LjQwNjI1IiB5Mj0iNDI5LjQwNjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9
Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFy
a2VyQXJyb3dCbG9jayZxdW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRh
cmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1m
aWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xh
c3M9InNpZ25hbCI+PHRleHQgeD0iMTIyLjA2MjUiIHk9IjQ1OS45MDYyNSIgc3R5bGU9ImZvbnQt
c2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3Bh
Y2U7Ij48dHNwYW4geD0iMTIyLjA2MjUiPmdsTGlua1Byb2dyYW08L3RzcGFuPjwvdGV4dD48bGlu
ZSB4MT0iMzQuNDUzMTI1IiB4Mj0iMzM0LjkwNjI1IiB5MT0iNDY4LjQwNjI1IiB5Mj0iNDY4LjQw
NjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7
IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7IC0tZGFya3Jl
YWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAw
OyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUt
c3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iMzk4LjI1Nzgx
MjUiIHk9IjQ5OC45MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMzk4LjI1NzgxMjUi
PlByb2dyYW1Wazo6bGluazwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzMzQuOTA2MjUiIHgyPSI2
MDYuNDY4NzUiIHkxPSI1MDcuNDA2MjUiIHkyPSI1MDcuNDA2MjUiIHN0cm9rZT0iIzAwMDAwMCIg
ZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90
OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7
IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5s
aW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48
ZyBjbGFzcz0ibm90ZSI+PHJlY3QgeD0iNjI2LjQ2ODc1IiB5PSI1MjcuNDA2MjUiIHdpZHRoPSIy
NTAuODI4MTI1IiBoZWlnaHQ9IjQ4LjIwMzEyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZm
ZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2Vh
ZTdlMTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRl
ci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+
PHRleHQgeD0iNjMxLjQ2ODc1IiB5PSI1NDcuNDA2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7
IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFu
IHg9IjYzMS40Njg3NSI+UHJvZ3JhbVZrIGluaXRzIHVuaWZvcm1zLDwvdHNwYW4+PHRzcGFuIGR5
PSIxLjJlbSIgeD0iNjMxLjQ2ODc1Ij5sYXlvdXRzLCBhbmQgZGVzY3JpcHRvcnMuPC90c3Bhbj48
L3RleHQ+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9IjY3NS43NDIxODc1IiB5PSI2MDYu
MTA5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxl
IE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI2NzUuNzQyMTg3NSI+R2xzbGFuZ1dy
YXBwZXJWazo6R2V0U2hhZGVyU3BpcnZDb2RlPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjYwNi40
Njg3NSIgeDI9IjEwOTEuNzk2ODc1IiB5MT0iNjE0LjYwOTM3NSIgeTI9IjYxNC42MDkzNzUiIHN0
cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2Vy
LWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlu
bGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRh
LWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9
IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIxMTM2LjI1IiB5PSI2NDUu
MTA5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxl
IE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMTM2LjI1Ij5HbHNsYW5nVG9TcHY8
L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMTA5MS43OTY4NzUiIHgyPSIxMjk2LjI5Njg3NSIgeTE9
IjY1My42MDkzNzUiIHkyPSI2NTMuNjA5Mzc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUi
IHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJy
b3dCbG9jayZxdW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmtyZWFk
ZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIi
IGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xhc3M9InNp
Z25hbCI+PHRleHQgeD0iMTEzMS4yNSIgeT0iNjg0LjEwOTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTog
MTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48
dHNwYW4geD0iMTEzMS4yNSI+UmV0dXJuIFNQSVItVjwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIx
Mjk2LjI5Njg3NSIgeDI9IjEwOTEuNzk2ODc1IiB5MT0iNjkyLjYwOTM3NSIgeTI9IjY5Mi42MDkz
NzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsg
c3Ryb2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJv
d0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRl
ci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIg
ZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ibm90
ZSI+PHJlY3QgeD0iMTExMS43OTY4NzUiIHk9IjcxMi42MDkzNzUiIHdpZHRoPSIxNjQuNSIgaGVp
Z2h0PSIyOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdp
ZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVyLWlu
bGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRh
LWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iMTExNi43OTY4NzUi
IHk9IjczMi42MDkzNzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVv
dDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjExMTYuNzk2ODc1Ij5U
cmFuc2Zvcm0gU1BJUi1WPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0
IHg9IjcyOC41MzkwNjI1IiB5PSI3NzIuMTA5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBm
b250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4
PSI3MjguNTM5MDYyNSI+cmV0dXJuIHRyYW5zZm9ybWVkIFNQSVItVjwvdHNwYW4+PC90ZXh0Pjxs
aW5lIHgxPSIxMDkxLjc5Njg3NSIgeDI9IjYwNi40Njg3NSIgeTE9Ijc4MC42MDkzNzUiIHkyPSI3
ODAuNjA5Mzc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lk
dGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDYsIDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFy
a2VyQXJyb3dCbG9jayZxdW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRh
cmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1m
aWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xh
c3M9InNpZ25hbCI+PHRleHQgeD0iNDAzLjI1NzgxMjUiIHk9IjgxMS4xMDkzNzUiIHN0eWxlPSJm
b250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9u
b3NwYWNlOyI+PHRzcGFuIHg9IjQwMy4yNTc4MTI1Ij5yZXR1cm4gc3VjY2VzczwvdHNwYW4+PC90
ZXh0PjxsaW5lIHgxPSI2MDYuNDY4NzUiIHgyPSIzMzQuOTA2MjUiIHkxPSI4MTkuNjA5Mzc1IiB5
Mj0iODE5LjYwOTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tl
LXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2LCAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7
I21hcmtlckFycm93QmxvY2smcXVvdDspOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsg
LS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxp
bmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L2xpbmU+PC9nPjxn
IGNsYXNzPSJub3RlIj48cmVjdCB4PSI1NC40NTMxMjUiIHk9IjgzOS42MDkzNzUiIHdpZHRoPSIy
NjAuNDUzMTI1IiBoZWlnaHQ9IjI5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0
eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAt
LWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGlu
ZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4
PSI1OS40NTMxMjUiIHk9Ijg1OS42MDkzNzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQt
ZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjU5
LjQ1MzEyNSI+QXBwIGV4ZWN1dGlvbiBjb250aW51ZXMuLi48L3RzcGFuPjwvdGV4dD48L2c+PGcg
Y2xhc3M9InNpZ25hbCI+PHRleHQgeD0iNzMuODk4NDM3NSIgeT0iODk5LjEwOTM3NSIgc3R5bGU9
ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBt
b25vc3BhY2U7Ij48dHNwYW4geD0iNzMuODk4NDM3NSI+Z2xEcmF3QXJyYXlzIChhbnkgZHJhdyk8
L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzQuNDUzMTI1IiB4Mj0iMzM0LjkwNjI1IiB5MT0iOTA3
LjYwOTM3NSIgeTI9IjkwNy42MDkzNzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5
bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Js
b2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1p
bmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0
YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFs
Ij48dGV4dCB4PSIzNjkuNTM5MDYyNSIgeT0iOTM4LjEwOTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTog
MTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48
dHNwYW4geD0iMzY5LjUzOTA2MjUiPkNvbnRleHRWazo6ZHJhd0FycmF5czwvdHNwYW4+PC90ZXh0
PjxsaW5lIHgxPSIzMzQuOTA2MjUiIHgyPSI2MDYuNDY4NzUiIHkxPSI5NDYuNjA5Mzc1IiB5Mj0i
OTQ2LjYwOTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdp
ZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyAt
LWRhcmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6
IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXIt
aW5saW5lLXN0cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNzPSJub3RlIj48cmVjdCB4PSI2MjYu
NDY4NzUiIHk9Ijk2Ni42MDkzNzUiIHdpZHRoPSIyMzEuNTYyNSIgaGVpZ2h0PSI2Ny40MDYyNSIg
c3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAt
LWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJv
a2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFk
ZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iNjMxLjQ2ODc1IiB5PSI5ODYuNjA5
Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1v
bm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI2MzEuNDY4NzUiPldlIGluaXQgVmtTaGFk
ZXJNb2R1bGVzPC90c3Bhbj48dHNwYW4gZHk9IjEuMmVtIiB4PSI2MzEuNDY4NzUiPmFuZCBWa1Bp
cGVsaW5lIHRoZW48L3RzcGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9IjYzMS40Njg3NSI+cmVjb3Jk
IHRoZSBkcmF3LjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI0
MDMuMjU3ODEyNSIgeT0iMTA2NC41MTU2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQt
ZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjQw
My4yNTc4MTI1Ij5yZXR1cm4gc3VjY2VzczwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSI2MDYuNDY4
NzUiIHgyPSIzMzQuOTA2MjUiIHkxPSIxMDczLjAxNTYyNSIgeTI9IjEwNzMuMDE1NjI1IiBzdHJv
a2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1k
YXNoYXJyYXk6IDYsIDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZx
dW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmtyZWFkZXItaW5saW5l
LXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFy
a3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9tYWMvRGlzcGxheVZrTWFjLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21hYy9EaXNwbGF5VmtNYWMu
aAppbmRleCA5MGI0NmRhYTFlNWQ4ZDllMjQ5NzQwYTU0ZjA5ZmNiZjVmY2MxY2FiLi5jZTJlMTVi
N2EzMWM4MjA4MjNmZjBlZDUxNjc0NjZmZmIyZDY5NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21hYy9EaXNwbGF5VmtN
YWMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL21hYy9EaXNwbGF5VmtNYWMuaApAQCAtMjUsOSArMjUsMjEgQEAgY2xhc3MgRGlzcGxh
eVZrTWFjIDogcHVibGljIERpc3BsYXlWawogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dT
dXJmYWNlVmsoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIG92ZXJy
aWRlOwogCisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisKICAgICBlZ2w6OkNvbmZpZ1Nl
dCBnZW5lcmF0ZUNvbmZpZ3MoKSBvdmVycmlkZTsKICAgICBib29sIGNoZWNrQ29uZmlnU3VwcG9y
dChlZ2w6OkNvbmZpZyAqY29uZmlnKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZ2VuZXJhdGVFeHRl
bnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgZWdsOjpFcnJvciB2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3Qgb3ZlcnJpZGU7
CisKICAgICBjb25zdCBjaGFyICpnZXRXU0lFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5tbQppbmRleCA0
ZTg2ZWNiYzc1MDM1MTk4OGY2MTM1MTg4NmI3OTgzNDU0ZWM1NjE0Li42ZTIwNGUzM2Y4ZjAyNGNl
ZjRhOTVhNDViZGNjNmRkMWM3YWVhNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21hYy9EaXNwbGF5VmtNYWMubW0KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9t
YWMvRGlzcGxheVZrTWFjLm1tCkBAIC0xMSw2ICsxMSw4IEBACiAKICNpbmNsdWRlIDx2dWxrYW4v
dnVsa2FuLmg+CiAKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJW
ay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9tYWMvSU9TdXJmYWNlU3Vy
ZmFjZVZrTWFjLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21hYy9XaW5k
b3dTdXJmYWNlVmtNYWMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
Y2Fwc191dGlscy5oIgogCkBAIC0zNCw2ICszNiwxNiBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheVZr
TWFjOjpjcmVhdGVXaW5kb3dTdXJmYWNlVmsoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAogICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZVZrTWFjKHN0YXRlLCB3aW5kb3cpOwogfQog
CitTdXJmYWNlSW1wbCAqRGlzcGxheVZrTWFjOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZl
cihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpCit7CisgICAgQVNTRVJUKGJ1ZnR5cGUgPT0gRUdMX0lPU1VSRkFDRV9BTkdMRSk7CisKKyAg
ICByZXR1cm4gbmV3IElPU3VyZmFjZVN1cmZhY2VWa01hYyhzdGF0ZSwgY2xpZW50QnVmZmVyLCBh
dHRyaWJzKTsKK30KKwogZWdsOjpDb25maWdTZXQgRGlzcGxheVZrTWFjOjpnZW5lcmF0ZUNvbmZp
Z3MoKQogewogICAgIGNvbnN0ZXhwciBHTGVudW0ga0NvbG9yRm9ybWF0c1tdID0ge0dMX0JHUkE4
X0VYVCwgR0xfQkdSWDhfQU5HTEVYfTsKQEAgLTYyLDQgKzc0LDI2IEBAIERpc3BsYXlJbXBsICpD
cmVhdGVWdWxrYW5NYWNEaXNwbGF5KGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSkKICAg
ICByZXR1cm4gbmV3IERpc3BsYXlWa01hYyhzdGF0ZSk7CiB9CiAKK3ZvaWQgRGlzcGxheVZrTWFj
OjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9u
cykgY29uc3QKK3sKKyAgICBvdXRFeHRlbnNpb25zLT5pb3N1cmZhY2VDbGllbnRCdWZmZXIgPQor
ICAgICAgICBnZXRSZW5kZXJlcigpLT5nZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJuYWxNZW1v
cnlIb3N0LmVuYWJsZWQ7CisKKyAgICBEaXNwbGF5Vms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhvdXRF
eHRlbnNpb25zKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5VmtNYWM6OnZhbGlkYXRlQ2xpZW50
QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xp
ZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBjb25zdAoreworICAgIEFTU0VSVChi
dWZ0eXBlID09IEVHTF9JT1NVUkZBQ0VfQU5HTEUpOworCisgICAgaWYgKCFJT1N1cmZhY2VTdXJm
YWNlVmtNYWM6OlZhbGlkYXRlQXR0cmlidXRlcyh0aGlzLCBjbGllbnRCdWZmZXIsIGF0dHJpYnMp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RWdsQmFkQXR0cmlidXRlKCk7CisgICAgfQor
ICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL21hYy9JT1N1cmZhY2VTdXJmYWNlVmtNYWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0lPU3VyZmFjZVN1cmZhY2VWa01hYy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU0ODI3YmE0NzE0MTg5NzQ5ZWQxNDY5Njg0ZmIxYjJmMThiN2I2YjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL21hYy9JT1N1cmZhY2VTdXJmYWNlVmtNYWMuaApAQCAtMCwwICsxLDU5IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gSU9TdXJmYWNlU3VyZmFjZVZrTWFjLmg6CisvLyAgICBTdWJjbGFzc2Vz
IFN1cmZhY2VWayBmb3IgdGhlIE1hYyBwbGF0Zm9ybSB0byBpbXBsZW1lbnQgUEJ1ZmZlcnMgdXNp
bmcgYW4gSU9TdXJmYWNlCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9N
QUNfSU9TVVJGQUNFU1VSRkFDRVZLTUFDX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZV
TEtBTl9NQUNfSU9TVVJGQUNFU1VSRkFDRVZLTUFDX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgiCisKK3N0cnVjdCBfX0lPU3VyZmFjZTsKK3R5cGVk
ZWYgX19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsKKworbmFtZXNwYWNlIGVnbAoreworY2xhc3Mg
QXR0cmlidXRlTWFwOworfSAgLy8gbmFtZXNwYWNlIGVnbAorCituYW1lc3BhY2UgcngKK3sKKwor
Y2xhc3MgSU9TdXJmYWNlU3VyZmFjZVZrTWFjIDogcHVibGljIE9mZnNjcmVlblN1cmZhY2VWawor
eworICBwdWJsaWM6CisgICAgSU9TdXJmYWNlU3VyZmFjZVZrTWFjKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVy
IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpOworICAgIH5JT1N1cmZhY2VTdXJmYWNlVmtNYWMoKSBvdmVycmlkZTsKKwor
ICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92
ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciB1bk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0KSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBidWZm
ZXIpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcmVsZWFzZVRleEltYWdlKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKworICAgIHN0YXRpYyBi
b29sIFZhbGlkYXRlQXR0cmlidXRlcyhjb25zdCBEaXNwbGF5VmsgKmRpc3BsYXlWaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpOworCisgIHByb3RlY3RlZDoKKyAgICBhbmdsZTo6UmVzdWx0IGluaXRpYWxpemVJ
bXBsKERpc3BsYXlWayAqZGlzcGxheVZrKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIElP
U3VyZmFjZVJlZiBtSU9TdXJmYWNlOworCisgICAgaW50IG1QbGFuZTsKKyAgICBpbnQgbUZvcm1h
dEluZGV4OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVf
UkVOREVSRVJfVlVMS0FOX01BQ19JT1NVUkZBQ0VTVVJGQUNFVktNQUNfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFj
L0lPU3VyZmFjZVN1cmZhY2VWa01hYy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0lPU3VyZmFjZVN1cmZhY2VWa01hYy5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNTgzMGQyZTYyN2ViZjI5ODljMGVjNzRlMmUyNmVlM2I4MDBiMWYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9tYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFjLm1tCkBAIC0wLDAgKzEsMjIyIEBACisv
LworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gSU9TdXJmYWNlU3VyZmFjZVZrTWFjLm1tOgorLy8gICAgSW1wbGVtZW50cyBt
ZXRob2RzIGZyb20gSU9TdXJmYWNlU3VyZmFjZVZrTWFjLgorLy8KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9tYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFjLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0NvbnRleHRWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9E
aXNwbGF5VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZm
ZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaCIK
KworI2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KKworbmFtZXNwYWNlIHJ4Cit7CisK
K25hbWVzcGFjZQoreworCitzdHJ1Y3QgSU9TdXJmYWNlRm9ybWF0SW5mbworeworICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdDsKKyAgICBHTGVudW0gdHlwZTsKKworICAgIHNpemVfdCBjb21wb25l
bnRCeXRlczsKKworICAgIEdMZW51bSBuYXRpdmVTaXplZEludGVybmFsRm9ybWF0OworfTsKKwor
Ly8gY2xhbmctZm9ybWF0IG9mZgorY29uc3RleHByIHN0ZDo6YXJyYXk8SU9TdXJmYWNlRm9ybWF0
SW5mbywgNj4ga0lPU3VyZmFjZUZvcm1hdHMgPSB7eworICAgIHtHTF9SRUQsICAgICAgR0xfVU5T
SUdORURfQllURSwgIDEsIEdMX1I4ICAgfSwKKyAgICB7R0xfUjE2VUksICAgIEdMX1VOU0lHTkVE
X1NIT1JULCAyLCBHTF9SMTZVSSAgfSwKKyAgICB7R0xfUkcsICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUsICAyLCBHTF9SRzggfSwKKyAgICB7R0xfUkdCLCAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICA0
LCBHTF9CR1JBOF9FWFR9LAorICAgIHtHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgIDQs
IEdMX0JHUkE4X0VYVCB9LAorICAgIHtHTF9SR0JBLCAgICAgR0xfSEFMRl9GTE9BVCwgICAgIDgs
IEdMX1JHQkExNkYgfSwKK319OworLy8gY2xhbmctZm9ybWF0IG9uCisKK2ludCBGaW5kSU9TdXJm
YWNlRm9ybWF0SW5kZXgoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gdHlwZSkKK3sKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oa0lPU3VyZmFjZUZvcm1hdHMu
c2l6ZSgpKTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmZm9ybWF0SW5mbyA9IGtJ
T1N1cmZhY2VGb3JtYXRzW2ldOworICAgICAgICBpZiAoZm9ybWF0SW5mby5pbnRlcm5hbEZvcm1h
dCA9PSBpbnRlcm5hbEZvcm1hdCAmJiBmb3JtYXRJbmZvLnR5cGUgPT0gdHlwZSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIC0x
OworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0lPU3VyZmFjZVN1cmZhY2VWa01h
Yzo6SU9TdXJmYWNlU3VyZmFjZVZrTWFjKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1
ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IE9mZnNjcmVlblN1cmZh
Y2VWayhzdGF0ZSksIG1JT1N1cmZhY2UobnVsbHB0ciksIG1QbGFuZSgwKSwgbUZvcm1hdEluZGV4
KC0xKQoreworICAgIC8vIEtlZXAgcmVmZXJlbmNlIHRvIHRoZSBJT1N1cmZhY2Ugc28gaXQgZG9l
c24ndCBnZXQgZGVsZXRlZCB3aGlsZSB0aGUgcGJ1ZmZlciBleGlzdHMuCisgICAgbUlPU3VyZmFj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SU9TdXJmYWNlUmVmPihidWZmZXIpOworICAgIENGUmV0YWlu
KG1JT1N1cmZhY2UpOworCisgICAgLy8gRXh0cmFjdCBhdHRyaWJzIHVzZWZ1bCBmb3IgdGhlIGNh
bGwgdG8gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRAorICAgIG1XaWR0aCAgPSBzdGF0aWNfY2FzdDxp
bnQ+KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCkpOworICAgIG1IZWlnaHQgPSBzdGF0aWNfY2FzdDxp
bnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQpKTsKKyAgICBtUGxhbmUgID0gc3RhdGljX2Nhc3Q8
aW50PihhdHRyaWJzLmdldChFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFKSk7CisKKyAgICBFR0xB
dHRyaWIgaW50ZXJuYWxGb3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9JTlRFUk5BTF9G
T1JNQVRfQU5HTEUpOworICAgIEVHTEF0dHJpYiB0eXBlICAgICAgICAgICA9IGF0dHJpYnMuZ2V0
KEVHTF9URVhUVVJFX1RZUEVfQU5HTEUpOworICAgIG1Gb3JtYXRJbmRleCA9CisgICAgICAgIEZp
bmRJT1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+KGludGVybmFsRm9ybWF0
KSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisgICAgQVNTRVJUKG1Gb3JtYXRJbmRleCA+
PSAwKTsKK30KKworSU9TdXJmYWNlU3VyZmFjZVZrTWFjOjp+SU9TdXJmYWNlU3VyZmFjZVZrTWFj
KCkKK3sKKyAgICBpZiAobUlPU3VyZmFjZSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgQ0ZS
ZWxlYXNlKG1JT1N1cmZhY2UpOworICAgICAgICBtSU9TdXJmYWNlID0gbnVsbHB0cjsKKyAgICB9
Cit9CisKK2VnbDo6RXJyb3IgSU9TdXJmYWNlU3VyZmFjZVZrTWFjOjppbml0aWFsaXplKGNvbnN0
IGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBEaXNwbGF5VmsgKmRpc3BsYXlWayA9IHZr
OjpHZXRJbXBsKGRpc3BsYXkpOworICAgIGFuZ2xlOjpSZXN1bHQgcmVzdWx0ID0gaW5pdGlhbGl6
ZUltcGwoZGlzcGxheVZrKTsKKyAgICByZXR1cm4gYW5nbGU6OlRvRUdMKHJlc3VsdCwgZGlzcGxh
eVZrLCBFR0xfQkFEX1NVUkZBQ0UpOworfQorCithbmdsZTo6UmVzdWx0IElPU3VyZmFjZVN1cmZh
Y2VWa01hYzo6aW5pdGlhbGl6ZUltcGwoRGlzcGxheVZrICpkaXNwbGF5VmspCit7CisgICAgUmVu
ZGVyZXJWayAqcmVuZGVyZXIgICAgICA9IGRpc3BsYXlWay0+Z2V0UmVuZGVyZXIoKTsKKyAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnID0gbVN0YXRlLmNvbmZpZzsKKworICAgIEdMaW50IHNh
bXBsZXMgPSAxOworICAgIGlmIChjb25maWctPnNhbXBsZUJ1ZmZlcnMgJiYgY29uZmlnLT5zYW1w
bGVzID4gMSkKKyAgICB7CisgICAgICAgIHNhbXBsZXMgPSBjb25maWctPnNhbXBsZXM7CisgICAg
fQorICAgIEFOR0xFX1ZLX0NIRUNLKGRpc3BsYXlWaywgc2FtcGxlcyA+IDAsIFZLX0VSUk9SX0lO
SVRJQUxJWkFUSU9OX0ZBSUxFRCk7CisKKyAgICAvLyBTd2lmdHNoYWRlciB3aWxsIHVzZSB0aGUg
cmF3IHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciByZWZlcmVuY2VkIGJ5IHRoZSBJT1N1cmZhY2VSZWYK
KyAgICBBTkdMRV9UUlkobUNvbG9yQXR0YWNobWVudC5pbml0aWFsaXplV2l0aEV4dGVybmFsTWVt
b3J5KAorICAgICAgICBkaXNwbGF5VmssIG1XaWR0aCwgbUhlaWdodCwKKyAgICAgICAgcmVuZGVy
ZXItPmdldEZvcm1hdChrSU9TdXJmYWNlRm9ybWF0c1ttRm9ybWF0SW5kZXhdLm5hdGl2ZVNpemVk
SW50ZXJuYWxGb3JtYXQpLCBzYW1wbGVzLAorICAgICAgICBJT1N1cmZhY2VHZXRCYXNlQWRkcmVz
c09mUGxhbmUobUlPU3VyZmFjZSwgbVBsYW5lKSkpOworICAgIG1Db2xvclJlbmRlclRhcmdldC5p
bml0KCZtQ29sb3JBdHRhY2htZW50LmltYWdlLCAmbUNvbG9yQXR0YWNobWVudC5pbWFnZVZpZXdz
LCAwLCAwKTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworZWds
OjpFcnJvciBJT1N1cmZhY2VTdXJmYWNlVmtNYWM6OnVuTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQgIT0gbnVsbHB0cik7CisgICAg
Q29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsKKyAgICBEaXNwbGF5
VmsgKmRpc3BsYXlWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQtPmdldERpc3BsYXkoKSk7CisgICAg
YW5nbGU6OlJlc3VsdCByZXN1bHQgPSBjb250ZXh0VmstPmZsdXNoSW1wbChudWxscHRyKTsKKyAg
ICByZXR1cm4gYW5nbGU6OlRvRUdMKHJlc3VsdCwgZGlzcGxheVZrLCBFR0xfQkFEX1NVUkZBQ0Up
OworfQorCitlZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VWa01hYzo6YmluZFRleEltYWdlKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICBJT1N1
cmZhY2VMb2NrKG1JT1N1cmZhY2UsIDAsIG51bGxwdHIpOworCisgICAgcmV0dXJuIGVnbDo6Tm9F
cnJvcigpOworfQorCitlZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZhY2VWa01hYzo6cmVsZWFzZVRl
eEltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgYnVmZmVyKQoreworICAg
IEFTU0VSVChjb250ZXh0ICE9IG51bGxwdHIpOworICAgIENvbnRleHRWayAqY29udGV4dFZrID0g
dms6OkdldEltcGwoY29udGV4dCk7CisgICAgRGlzcGxheVZrICpkaXNwbGF5VmsgPSB2azo6R2V0
SW1wbChjb250ZXh0LT5nZXREaXNwbGF5KCkpOworICAgIGFuZ2xlOjpSZXN1bHQgcmVzdWx0ID0g
Y29udGV4dFZrLT5maW5pc2hJbXBsKCk7CisKKyAgICBJT1N1cmZhY2VVbmxvY2sobUlPU3VyZmFj
ZSwgMCwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gYW5nbGU6OlRvRUdMKHJlc3VsdCwgZGlzcGxh
eVZrLCBFR0xfQkFEX1NVUkZBQ0UpOworfQorCisvLyBzdGF0aWMKK2Jvb2wgSU9TdXJmYWNlU3Vy
ZmFjZVZrTWFjOjpWYWxpZGF0ZUF0dHJpYnV0ZXMoY29uc3QgRGlzcGxheVZrICpkaXNwbGF5Vmss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVu
dEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIEFTU0VSVChk
aXNwbGF5VmsgIT0gbnVsbHB0cik7CisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgPSBkaXNwbGF5
VmstPmdldFJlbmRlcmVyKCk7CisKKyAgICBJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gcmVpbnRl
cnByZXRfY2FzdDxJT1N1cmZhY2VSZWY+KGJ1ZmZlcik7CisKKyAgICAvLyBUaGUgcGxhbmUgbXVz
dCBleGlzdCBmb3IgdGhpcyBJT1N1cmZhY2UuIElPU3VyZmFjZUdldFBsYW5lQ291bnQgY2FuIHJl
dHVybiAwIGZvciBub24tcGxhbmFyCisgICAgLy8gaW9TdXJmYWNlcyBidXQgd2Ugd2lsbCB0cmVh
dCBub24tcGxhbmFyIGxpa2UgaXQgaXMgYSBzaW5nbGUgcGxhbmUuCisgICAgc2l6ZV90IHN1cmZh
Y2VQbGFuZUNvdW50ID0gc3RkOjptYXgoc2l6ZV90KDEpLCBJT1N1cmZhY2VHZXRQbGFuZUNvdW50
KGlvU3VyZmFjZSkpOworICAgIEVHTEF0dHJpYiBwbGFuZSAgICAgICAgICA9IGF0dHJpYnMuZ2V0
KEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUpOworICAgIGlmIChwbGFuZSA8IDAgfHwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihwbGFuZSkgPj0gc3VyZmFjZVBsYW5lQ291bnQpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGhlIHdpZHRoIGhlaWdodCBzcGVjaWZp
ZWQgbXVzdCBiZSBhdCBsZWFzdCAoMSwgMSkgYW5kIGF0IG1vc3QgdGhlIHBsYW5lIHNpemUKKyAg
ICBFR0xBdHRyaWIgd2lkdGggID0gYXR0cmlicy5nZXQoRUdMX1dJRFRIKTsKKyAgICBFR0xBdHRy
aWIgaGVpZ2h0ID0gYXR0cmlicy5nZXQoRUdMX0hFSUdIVCk7CisgICAgaWYgKHdpZHRoIDw9IDAg
fHwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih3aWR0aCkgPiBJT1N1cmZhY2VHZXRXaWR0aE9mUGxhbmUo
aW9TdXJmYWNlLCBwbGFuZSkgfHwKKyAgICAgICAgaGVpZ2h0IDw9IDAgfHwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihoZWlnaHQpID4gSU9TdXJmYWNlR2V0SGVpZ2h0T2ZQbGFuZShpb1N1cmZhY2UsIHBs
YW5lKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBGaW5k
IHRoaXMgSU9TdXJmYWNlIGZvcm1hdAorICAgIEVHTEF0dHJpYiBpbnRlcm5hbEZvcm1hdCA9IGF0
dHJpYnMuZ2V0KEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSk7CisgICAgRUdMQXR0
cmliIHR5cGUgICAgICAgICAgID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSk7
CisKKyAgICBpbnQgZm9ybWF0SW5kZXggPQorICAgICAgICBGaW5kSU9TdXJmYWNlRm9ybWF0SW5k
ZXgoc3RhdGljX2Nhc3Q8R0xlbnVtPihpbnRlcm5hbEZvcm1hdCksIHN0YXRpY19jYXN0PEdMZW51
bT4odHlwZSkpOworCisgICAgaWYgKGZvcm1hdEluZGV4IDwgMCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBmb3JtYXQgbWF0Y2hl
cyB0aGlzIElPU3VyZmFjZSBwbGFuZQorICAgIGlmIChJT1N1cmZhY2VHZXRCeXRlc1BlckVsZW1l
bnRPZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpICE9CisgICAgICAgIGtJT1N1cmZhY2VGb3JtYXRz
W2Zvcm1hdEluZGV4XS5jb21wb25lbnRCeXRlcykKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB2b2lkICpwb2ludGVyID0gSU9TdXJmYWNlR2V0QmFzZUFkZHJlc3NP
ZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpOworICAgIFZrTWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0
aWVzRVhUIG1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllcyA9IHt9OworICAgIG1lbW9yeUhvc3RQ
b2ludGVyUHJvcGVydGllcy5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX01FTU9SWV9IT1NUX1BP
SU5URVJfUFJPUEVSVElFU19FWFQ7CisgICAgdmtHZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRp
ZXNFWFQoCisgICAgICAgIHJlbmRlcmVyLT5nZXREZXZpY2UoKSwgVktfRVhURVJOQUxfTUVNT1JZ
X0hBTkRMRV9UWVBFX0hPU1RfTUFQUEVEX0ZPUkVJR05fTUVNT1JZX0JJVF9FWFQsCisgICAgICAg
IHBvaW50ZXIsICZtZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXMpOworCisgICAgYm9vbCBob3N0
VmlzaWJsZSA9CisgICAgICAgIG1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllcy5tZW1vcnlUeXBl
Qml0cyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUOworICAgIGlmICghaG9z
dFZpc2libGUpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVmtE
ZXZpY2VTaXplIGFsaWdubWVudCA9IHJlbmRlcmVyLT5nZXRNaW5JbXBvcnRlZEhvc3RQb2ludGVy
QWxpZ25tZW50KCk7CisgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Pihwb2ludGVyKSAl
IGFsaWdubWVudCAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVy
cy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAwLmluYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVy
cy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAwLmluYwppbmRl
eCBiMjI0MGFlZWQzMDJmNDNmZTUzODIyY2Q2NjQ2YTI5MjcyMTVjMDVlLi4xMzYwNGIzNTU5YTky
N2ZkZGNhZDdiNTAzMmQ0MTFjYmQyMWMyOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJ
bmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252
ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDAuaW5jCkBAIC0xLDkgKzEsOSBA
QAogCS8vIDcuMTIuMzIyNgogCSAjcHJhZ21hIG9uY2UKIGNvbnN0IHVpbnQzMl90IGtDb252ZXJ0
SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBfMDAwMDAwMDBbXSA9IHsKLQkweDA3MjMwMjAzLDB4
MDAwMTAwMDAsMHgwMDA4MDAwNywweDAwMDAwMGVlLDB4MDAwMDAwMDAsMHgwMDAyMDAxMSwweDAw
MDAwMDAxLDB4MDAwNjAwMGIsCisJMHgwNzIzMDIwMywweDAwMDEwMDAwLDB4MDAwODAwMDcsMHgw
MDAwMDBlYiwweDAwMDAwMDAwLDB4MDAwMjAwMTEsMHgwMDAwMDAwMSwweDAwMDYwMDBiLAogCTB4
MDAwMDAwMDEsMHg0YzUzNGM0NywweDY0NzQ3MzJlLDB4MzAzNTM0MmUsMHgwMDAwMDAwMCwweDAw
MDMwMDBlLDB4MDAwMDAwMDAsMHgwMDAwMDAwMSwKLQkweDAwMDYwMDBmLDB4MDAwMDAwMDUsMHgw
MDAwMDAwNCwweDZlNjk2MTZkLDB4MDAwMDAwMDAsMHgwMDAwMDA2YiwweDAwMDYwMDEwLDB4MDAw
MDAwMDQsCisJMHgwMDA2MDAwZiwweDAwMDAwMDA1LDB4MDAwMDAwMDQsMHg2ZTY5NjE2ZCwweDAw
MDAwMDAwLDB4MDAwMDAwNjgsMHgwMDA2MDAxMCwweDAwMDAwMDA0LAogCTB4MDAwMDAwMTEsMHgw
MDAwMDA0MCwweDAwMDAwMDAxLDB4MDAwMDAwMDEsMHgwMDAzMDAwMywweDAwMDAwMDAyLDB4MDAw
MDAxYzIsMHgwMDA0MDAwNSwKIAkweDAwMDAwMDA0LDB4NmU2OTYxNmQsMHgwMDAwMDAwMCwweDAw
MDcwMDA1LDB4MDAwMDAwMGEsMHg0OTc0NjU0NywweDc4NjU2NDZlLDB4NzU2YzYxNTYsCiAJMHgz
MTc1Mjg2NSwweDAwMDAwMDNiLDB4MDAwNDAwMDUsMHgwMDAwMDAwOSwweDY1NjQ2ZTY5LDB4MDAw
MDAwNzgsMHgwMDA4MDAwNSwweDAwMDAwMDBmLApAQCAtMTEsMTk0ICsxMSwxOTEgQEAgY29uc3Qg
dWludDMyX3Qga0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcF8wMDAwMDAwMFtdID0g
ewogCTB4NjU2NDZlNjksMHgwMDAwMDA3OCwweDAwMDQwMDA1LDB4MDAwMDAwMGUsMHg3NTZjNjE3
NiwweDAwMDAwMDY1LDB4MDAwNTAwMDUsMHgwMDAwMDAxMSwKIAkweDQyNjM3MjczLDB4NmI2MzZm
NmMsMHgwMDAwMDAwMCwweDAwMDMwMDA1LDB4MDAwMDAwMTMsMHgwMDYzNzI3MywweDAwMDUwMDA2
LDB4MDAwMDAwMTMsCiAJMHgwMDAwMDAwMCwweDQ0NjM3MjczLDB4MDA2MTc0NjEsMHgwMDAzMDAw
NSwweDAwMDAwMDE1LDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDFlLAotCTB4NTM2Mzcy
NzMsMHg3NDY2Njk2OCwweDAwMDAwMDAwLDB4MDAwNDAwMDUsMHgwMDAwMDAyNCwweDRkNjM3Mjcz
LDB4MDA2YjczNjEsMHgwMDA0MDAwNSwKLQkweDAwMDAwMDI2LDB4NzU2YzYxNzYsMHgwMDAwMDA2
NSwweDAwMDUwMDA1LDB4MDAwMDAwMmYsMHg0OTc0NzM2NCwweDc4NjU2NDZlLDB4MDAwMDAwMDAs
Ci0JMHgwMDA2MDAwNSwweDAwMDAwMDMwLDB4Njg3Mzc1NTAsMHg3MzZlNmY0MywweDc0NmU2MTc0
LDB4MDAwMDAwNzMsMHgwMDA3MDAwNiwweDAwMDAwMDMwLAotCTB4MDAwMDAwMDAsMHg0ZjY0NmQ2
MywweDY1NzM2NjY2LDB4NzY2OTQ0NzQsMHgwMDAwMDAzNCwweDAwMDgwMDA2LDB4MDAwMDAwMzAs
MHgwMDAwMDAwMSwKLQkweDQzNzQ3MzY0LDB4NjY0ZjY0NmQsMHg3NDY1NzM2NiwweDM0NzY2OTQ0
LDB4MDAwMDAwMDAsMHgwMDA3MDAwNiwweDAwMDAwMDMwLDB4MDAwMDAwMDIsCi0JMHg0Zjc0NzM2
NCwweDY1NzM2NjY2LDB4NzY2OTQ0NzQsMHgwMDAwMDAzNCwweDAwMDgwMDA2LDB4MDAwMDAwMzAs
MHgwMDAwMDAwMywweDY1NTI3MzY5LAotCTB4NzI2MTc0NzMsMHg2MTZlNDU3NCwweDY0NjU2YzYy
LDB4MDAwMDAwMDAsMHgwMDAzMDAwNSwweDAwMDAwMDMyLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwK
LQkweDAwMDAwMDNhLDB4NDI2MzcyNzMsMHg2YjYzNmY2YywweDAwMDAwMDAwLDB4MDAwMzAwMDUs
MHgwMDAwMDAzYywweDAwNzQ3MzY0LDB4MDAwNTAwMDYsCi0JMHgwMDAwMDAzYywweDAwMDAwMDAw
LDB4NDQ3NDczNjQsMHgwMDYxNzQ2MSwweDAwMDMwMDA1LDB4MDAwMDAwM2UsMHgwMDAwMDAwMCww
eDAwMDUwMDA1LAotCTB4MDAwMDAwNDIsMHg1MzYzNzI3MywweDc0NjY2OTY4LDB4MDAwMDAwMDAs
MHgwMDA0MDAwNSwweDAwMDAwMDQ2LDB4NGQ2MzcyNzMsMHgwMDZiNzM2MSwKLQkweDAwMDUwMDA1
LDB4MDAwMDAwNTUsMHg2NTY0NmU2OSwweDc1NmY0Mzc4LDB4MDAwMDc0NmUsMHgwMDAzMDAwNSww
eDAwMDAwMDU3LDB4MDA2NDZkNjMsCi0JMHgwMDA1MDAwNiwweDAwMDAwMDU3LDB4MDAwMDAwMDAs
MHg0NDY0NmQ2MywweDAwNjE3NDYxLDB4MDAwMzAwMDUsMHgwMDAwMDA1OSwweDAwMDAwMDAwLAot
CTB4MDAwNTAwMDUsMHgwMDAwMDA1ZSwweDczNzI2OTY2LDB4NjQ2ZTQ5NzQsMHgwMDAwNzg2NSww
eDAwMDUwMDA1LDB4MDAwMDAwNjUsMHg0OTY0NmU2NSwKLQkweDc4NjU2NDZlLDB4MDAwMDAwMDAs
MHgwMDA4MDAwNSwweDAwMDAwMDZiLDB4NDc1ZjZjNjcsMHg2MTYyNmY2YywweDc2NmU0OTZjLDB4
NzQ2MTYzNmYsCi0JMHg0OTZlNmY2OSwweDAwMDAwMDQ0LDB4MDAwNjAwMDUsMHgwMDAwMDA3NSww
eDZiNzI2Zjc3LDB4NDM2NzZlNjksMHg3NDZlNzU2ZiwweDAwMDAwMDAwLAotCTB4MDAwNDAwMDUs
MHgwMDAwMDA3NiwweDQ5NjM3MjczLDB4MDAwMDc4NjQsMHgwMDA3MDAwNSwweDAwMDAwMDc4LDB4
Njk2NDZlNjksMHg1MjczNjU2MywKLQkweDY5NjE2ZDY1LDB4Njc2ZTY5NmUsMHgwMDAwMDAwMCww
eDAwMDUwMDA1LDB4MDAwMDAwN2EsMHg2NTZlNjk2YywweDY1N2E2OTUzLDB4MDAwMDAwMDAsCi0J
MHgwMDA2MDAwNSwweDAwMDAwMDdiLDB4NzM3MjY5NjYsMHg2NDZlNDk3NCwweDYxNTY3ODY1LDB4
MDA2NTc1NmMsMHgwMDA2MDAwNSwweDAwMDAwMDgzLAotCTB4NzQ3MzY1NzIsMHg1Njc0NzI2MSww
eDY1NzU2YzYxLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDg0LDB4NjU2NDZlNjksMHg2
YzYxNTY3OCwKLQkweDAwMDA2NTc1LDB4MDAwNDAwMDUsMHgwMDAwMDA4NywweDYxNzI2MTcwLDB4
MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGEwLDB4NjE3MjYxNzAsCi0JMHgwMDAwMDA2ZCww
eDAwMDQwMDA1LDB4MDAwMDAwYTEsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgw
MDAwMDBhYSwweDYxNzI2MTcwLAotCTB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGFiLDB4
NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYWYsMHg2MTcyNjE3MCwKLQkw
eDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBiMSwweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgw
MDA0MDAwNSwweDAwMDAwMGJjLDB4NjE3MjYxNzAsCi0JMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4
MDAwMDAwYmUsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBjNCwweDQz
NzQ3MzY0LAotCTB4MDAwMDY0NmQsMHgwMDA2MDAwNiwweDAwMDAwMGM0LDB4MDAwMDAwMDAsMHg0
Mzc0NzM2NCwweDYxNDQ2NDZkLDB4MDAwMDYxNzQsMHgwMDAzMDAwNSwKLQkweDAwMDAwMGM2LDB4
MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDEyLDB4MDAwMDAwMDYsMHgwMDAwMDAwNCwweDAw
MDQwMDQ4LDB4MDAwMDAwMTMsCisJMHg1MzYzNzI3MywweDc0NjY2OTY4LDB4MDAwMDAwMDAsMHgw
MDA0MDAwNSwweDAwMDAwMDI0LDB4NzU2YzYxNzYsMHgwMDAwMDA2NSwweDAwMDUwMDA1LAorCTB4
MDAwMDAwMmQsMHg0OTc0NzM2NCwweDc4NjU2NDZlLDB4MDAwMDAwMDAsMHgwMDA2MDAwNSwweDAw
MDAwMDJlLDB4Njg3Mzc1NTAsMHg3MzZlNmY0MywKKwkweDc0NmU2MTc0LDB4MDAwMDAwNzMsMHgw
MDA3MDAwNiwweDAwMDAwMDJlLDB4MDAwMDAwMDAsMHg0ZjY0NmQ2MywweDY1NzM2NjY2LDB4NzY2
OTQ0NzQsCisJMHgwMDAwMDAzNCwweDAwMDgwMDA2LDB4MDAwMDAwMmUsMHgwMDAwMDAwMSwweDQz
NzQ3MzY0LDB4NjY0ZjY0NmQsMHg3NDY1NzM2NiwweDM0NzY2OTQ0LAorCTB4MDAwMDAwMDAsMHgw
MDA3MDAwNiwweDAwMDAwMDJlLDB4MDAwMDAwMDIsMHg0Zjc0NzM2NCwweDY1NzM2NjY2LDB4NzY2
OTQ0NzQsMHgwMDAwMDAzNCwKKwkweDAwMDgwMDA2LDB4MDAwMDAwMmUsMHgwMDAwMDAwMywweDY1
NTI3MzY5LDB4NzI2MTc0NzMsMHg2MTZlNDU3NCwweDY0NjU2YzYyLDB4MDAwMDAwMDAsCisJMHgw
MDAzMDAwNSwweDAwMDAwMDMwLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDM3LDB4NDI2
MzcyNzMsMHg2YjYzNmY2YywweDAwMDAwMDAwLAorCTB4MDAwMzAwMDUsMHgwMDAwMDAzOSwweDAw
NzQ3MzY0LDB4MDAwNTAwMDYsMHgwMDAwMDAzOSwweDAwMDAwMDAwLDB4NDQ3NDczNjQsMHgwMDYx
NzQ2MSwKKwkweDAwMDMwMDA1LDB4MDAwMDAwM2IsMHgwMDAwMDAwMCwweDAwMDUwMDA1LDB4MDAw
MDAwM2YsMHg1MzYzNzI3MywweDc0NjY2OTY4LDB4MDAwMDAwMDAsCisJMHgwMDA1MDAwNSwweDAw
MDAwMDUyLDB4NjU2NDZlNjksMHg3NTZmNDM3OCwweDAwMDA3NDZlLDB4MDAwMzAwMDUsMHgwMDAw
MDA1NCwweDAwNjQ2ZDYzLAorCTB4MDAwNTAwMDYsMHgwMDAwMDA1NCwweDAwMDAwMDAwLDB4NDQ2
NDZkNjMsMHgwMDYxNzQ2MSwweDAwMDMwMDA1LDB4MDAwMDAwNTYsMHgwMDAwMDAwMCwKKwkweDAw
MDUwMDA1LDB4MDAwMDAwNWIsMHg3MzcyNjk2NiwweDY0NmU0OTc0LDB4MDAwMDc4NjUsMHgwMDA1
MDAwNSwweDAwMDAwMDYyLDB4NDk2NDZlNjUsCisJMHg3ODY1NjQ2ZSwweDAwMDAwMDAwLDB4MDAw
ODAwMDUsMHgwMDAwMDA2OCwweDQ3NWY2YzY3LDB4NjE2MjZmNmMsMHg3NjZlNDk2YywweDc0NjE2
MzZmLAorCTB4NDk2ZTZmNjksMHgwMDAwMDA0NCwweDAwMDYwMDA1LDB4MDAwMDAwNzMsMHg2Yjcy
NmY3NywweDQzNjc2ZTY5LDB4NzQ2ZTc1NmYsMHgwMDAwMDAwMCwKKwkweDAwMDQwMDA1LDB4MDAw
MDAwNzQsMHg0OTYzNzI3MywweDAwMDA3ODY0LDB4MDAwNzAwMDUsMHgwMDAwMDA3NiwweDY5NjQ2
ZTY5LDB4NTI3MzY1NjMsCisJMHg2OTYxNmQ2NSwweDY3NmU2OTZlLDB4MDAwMDAwMDAsMHgwMDA1
MDAwNSwweDAwMDAwMDc4LDB4NjU2ZTY5NmMsMHg2NTdhNjk1MywweDAwMDAwMDAwLAorCTB4MDAw
NjAwMDUsMHgwMDAwMDA3OSwweDczNzI2OTY2LDB4NjQ2ZTQ5NzQsMHg2MTU2Nzg2NSwweDAwNjU3
NTZjLDB4MDAwNjAwMDUsMHgwMDAwMDA4MSwKKwkweDc0NzM2NTcyLDB4NTY3NDcyNjEsMHg2NTc1
NmM2MSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDA4MiwweDY1NjQ2ZTY5LDB4NmM2MTU2
NzgsCisJMHgwMDAwNjU3NSwweDAwMDQwMDA1LDB4MDAwMDAwODYsMHg2MTcyNjE3MCwweDAwMDAw
MDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA5ZSwweDYxNzI2MTcwLAorCTB4MDAwMDAwNmQsMHgwMDA0
MDAwNSwweDAwMDAwMDlmLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAw
YTgsMHg2MTcyNjE3MCwKKwkweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBhOSwweDYxNzI2
MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGFkLDB4NjE3MjYxNzAsCisJMHgwMDAw
MDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYWYsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAw
MDUsMHgwMDAwMDBiYSwweDYxNzI2MTcwLAorCTB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAw
MGJjLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYzIsMHg0Mzc0NzM2
NCwKKwkweDAwMDA2NDZkLDB4MDAwNjAwMDYsMHgwMDAwMDBjMiwweDAwMDAwMDAwLDB4NDM3NDcz
NjQsMHg2MTQ0NjQ2ZCwweDAwMDA2MTc0LDB4MDAwMzAwMDUsCisJMHgwMDAwMDBjNCwweDAwMDAw
MDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAxMiwweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgwMDA0MDA0
OCwweDAwMDAwMDEzLAogCTB4MDAwMDAwMDAsMHgwMDAwMDAxOCwweDAwMDUwMDQ4LDB4MDAwMDAw
MTMsMHgwMDAwMDAwMCwweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywKIAkweDAwMDAw
MDEzLDB4MDAwMDAwMDMsMHgwMDA0MDA0NywweDAwMDAwMDE1LDB4MDAwMDAwMjIsMHgwMDAwMDAw
MCwweDAwMDQwMDQ3LDB4MDAwMDAwMTUsCi0JMHgwMDAwMDAyMSwweDAwMDAwMDAxLDB4MDAwNTAw
NDgsMHgwMDAwMDAzMCwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDUwMDQ4
LAotCTB4MDAwMDAwMzAsMHgwMDAwMDAwMSwweDAwMDAwMDIzLDB4MDAwMDAwMDQsMHgwMDA1MDA0
OCwweDAwMDAwMDMwLDB4MDAwMDAwMDIsMHgwMDAwMDAyMywKLQkweDAwMDAwMDA4LDB4MDAwNTAw
NDgsMHgwMDAwMDAzMCwweDAwMDAwMDAzLDB4MDAwMDAwMjMsMHgwMDAwMDAwYywweDAwMDMwMDQ3
LDB4MDAwMDAwMzAsCi0JMHgwMDAwMDAwMiwweDAwMDQwMDQ3LDB4MDAwMDAwM2IsMHgwMDAwMDAw
NiwweDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAzYywweDAwMDAwMDAwLAotCTB4MDAwMDAw
MjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwM2MsMHgwMDAwMDAwMywweDAwMDQwMDQ3
LDB4MDAwMDAwM2UsMHgwMDAwMDAyMiwKLQkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAz
ZSwweDAwMDAwMDIxLDB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDU2LDB4MDAwMDAwMDYs
Ci0JMHgwMDAwMDAwNCwweDAwMDQwMDQ4LDB4MDAwMDAwNTcsMHgwMDAwMDAwMCwweDAwMDAwMDE4
LDB4MDAwNTAwNDgsMHgwMDAwMDA1NywweDAwMDAwMDAwLAotCTB4MDAwMDAwMjMsMHgwMDAwMDAw
MCwweDAwMDMwMDQ3LDB4MDAwMDAwNTcsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAwNTks
MHgwMDAwMDAyMiwKLQkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDA1OSwweDAwMDAwMDIx
LDB4MDAwMDAwMDIsMHgwMDA0MDA0NywweDAwMDAwMDZiLDB4MDAwMDAwMGIsCi0JMHgwMDAwMDAx
YywweDAwMDQwMDQ3LDB4MDAwMDAwYzMsMHgwMDAwMDAwNiwweDAwMDAwMDA0LDB4MDAwNTAwNDgs
MHgwMDAwMDBjNCwweDAwMDAwMDAwLAotCTB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3
LDB4MDAwMDAwYzQsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAwYzYsMHgwMDAwMDAyMiwK
LQkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDBjNiwweDAwMDAwMDIxLDB4MDAwMDAwMDMs
MHgwMDA0MDA0NywweDAwMDAwMGVkLDB4MDAwMDAwMGIsCisJMHgwMDAwMDAyMSwweDAwMDAwMDAx
LDB4MDAwNTAwNDgsMHgwMDAwMDAyZSwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgwMDAwMDAwMCww
eDAwMDUwMDQ4LAorCTB4MDAwMDAwMmUsMHgwMDAwMDAwMSwweDAwMDAwMDIzLDB4MDAwMDAwMDQs
MHgwMDA1MDA0OCwweDAwMDAwMDJlLDB4MDAwMDAwMDIsMHgwMDAwMDAyMywKKwkweDAwMDAwMDA4
LDB4MDAwNTAwNDgsMHgwMDAwMDAyZSwweDAwMDAwMDAzLDB4MDAwMDAwMjMsMHgwMDAwMDAwYyww
eDAwMDMwMDQ3LDB4MDAwMDAwMmUsCisJMHgwMDAwMDAwMiwweDAwMDQwMDQ3LDB4MDAwMDAwMzgs
MHgwMDAwMDAwNiwweDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAzOSwweDAwMDAwMDAwLAor
CTB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwMzksMHgwMDAwMDAwMyww
eDAwMDQwMDQ3LDB4MDAwMDAwM2IsMHgwMDAwMDAyMiwKKwkweDAwMDAwMDAwLDB4MDAwNDAwNDcs
MHgwMDAwMDAzYiwweDAwMDAwMDIxLDB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDUzLDB4
MDAwMDAwMDYsCisJMHgwMDAwMDAwNCwweDAwMDQwMDQ4LDB4MDAwMDAwNTQsMHgwMDAwMDAwMCww
eDAwMDAwMDE4LDB4MDAwNTAwNDgsMHgwMDAwMDA1NCwweDAwMDAwMDAwLAorCTB4MDAwMDAwMjMs
MHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwNTQsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4
MDAwMDAwNTYsMHgwMDAwMDAyMiwKKwkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDA1Niww
eDAwMDAwMDIxLDB4MDAwMDAwMDIsMHgwMDA0MDA0NywweDAwMDAwMDY4LDB4MDAwMDAwMGIsCisJ
MHgwMDAwMDAxYywweDAwMDQwMDQ3LDB4MDAwMDAwYzEsMHgwMDAwMDAwNiwweDAwMDAwMDA0LDB4
MDAwNTAwNDgsMHgwMDAwMDBjMiwweDAwMDAwMDAwLAorCTB4MDAwMDAwMjMsMHgwMDAwMDAwMCww
eDAwMDMwMDQ3LDB4MDAwMDAwYzIsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAwYzQsMHgw
MDAwMDAyMiwKKwkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDBjNCwweDAwMDAwMDIxLDB4
MDAwMDAwMDMsMHgwMDA0MDA0NywweDAwMDAwMGVhLDB4MDAwMDAwMGIsCiAJMHgwMDAwMDAxOSww
eDAwMDIwMDEzLDB4MDAwMDAwMDIsMHgwMDAzMDAyMSwweDAwMDAwMDAzLDB4MDAwMDAwMDIsMHgw
MDA0MDAxNSwweDAwMDAwMDA2LAogCTB4MDAwMDAwMjAsMHgwMDAwMDAwMCwweDAwMDQwMDIwLDB4
MDAwMDAwMDcsMHgwMDAwMDAwNywweDAwMDAwMDA2LDB4MDAwNDAwMjEsMHgwMDAwMDAwOCwKIAkw
eDAwMDAwMDA2LDB4MDAwMDAwMDcsMHgwMDA1MDAyMSwweDAwMDAwMDBjLDB4MDAwMDAwMDIsMHgw
MDAwMDAwNywweDAwMDAwMDA3LDB4MDAwMzAwMWQsCiAJMHgwMDAwMDAxMiwweDAwMDAwMDA2LDB4
MDAwMzAwMWUsMHgwMDAwMDAxMywweDAwMDAwMDEyLDB4MDAwNDAwMjAsMHgwMDAwMDAxNCwweDAw
MDAwMDAyLAogCTB4MDAwMDAwMTMsMHgwMDA0MDAzYiwweDAwMDAwMDE0LDB4MDAwMDAwMTUsMHgw
MDAwMDAwMiwweDAwMDQwMDE1LDB4MDAwMDAwMTYsMHgwMDAwMDAyMCwKIAkweDAwMDAwMDAxLDB4
MDAwNDAwMmIsMHgwMDAwMDAxNiwweDAwMDAwMDE3LDB4MDAwMDAwMDAsMHgwMDA0MDAyYiwweDAw
MDAwMDE2LDB4MDAwMDAwMTksCi0JMHgwMDAwMDAwMSwweDAwMDQwMDIwLDB4MDAwMDAwMWIsMHgw
MDAwMDAwMiwweDAwMDAwMDA2LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDIwLAotCTB4
MDAwMDAwMDEsMHgwMDA0MDAyYiwweDAwMDAwMDE2LDB4MDAwMDAwMjIsMHgwMDAwMDAwNCwweDAw
MDQwMDJiLDB4MDAwMDAwMDYsMHgwMDAwMDAyNSwKLQkweDAwMDBmZmZmLDB4MDAwNjAwMWUsMHgw
MDAwMDAzMCwweDAwMDAwMDA2LDB4MDAwMDAwMDYsMHgwMDAwMDAwNiwweDAwMDAwMDA2LDB4MDAw
NDAwMjAsCi0JMHgwMDAwMDAzMSwweDAwMDAwMDA5LDB4MDAwMDAwMzAsMHgwMDA0MDAzYiwweDAw
MDAwMDMxLDB4MDAwMDAwMzIsMHgwMDAwMDAwOSwweDAwMDQwMDJiLAotCTB4MDAwMDAwMTYsMHgw
MDAwMDAzMywweDAwMDAwMDAyLDB4MDAwNDAwMjAsMHgwMDAwMDAzNCwweDAwMDAwMDA5LDB4MDAw
MDAwMDYsMHgwMDAzMDAxZCwKLQkweDAwMDAwMDNiLDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAw
MDAwMDNjLDB4MDAwMDAwM2IsMHgwMDA0MDAyMCwweDAwMDAwMDNkLDB4MDAwMDAwMDIsCi0JMHgw
MDAwMDAzYywweDAwMDQwMDNiLDB4MDAwMDAwM2QsMHgwMDAwMDAzZSwweDAwMDAwMDAyLDB4MDAw
MzAwMWQsMHgwMDAwMDA1NiwweDAwMDAwMDA2LAotCTB4MDAwMzAwMWUsMHgwMDAwMDA1NywweDAw
MDAwMDU2LDB4MDAwNDAwMjAsMHgwMDAwMDA1OCwweDAwMDAwMDAyLDB4MDAwMDAwNTcsMHgwMDA0
MDAzYiwKLQkweDAwMDAwMDU4LDB4MDAwMDAwNTksMHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAw
MDAwMDYsMHgwMDAwMDA2MSwweDAwMDAwMDAyLDB4MDAwNDAwMTcsCi0JMHgwMDAwMDA2OSwweDAw
MDAwMDA2LDB4MDAwMDAwMDMsMHgwMDA0MDAyMCwweDAwMDAwMDZhLDB4MDAwMDAwMDEsMHgwMDAw
MDA2OSwweDAwMDQwMDNiLAotCTB4MDAwMDAwNmEsMHgwMDAwMDA2YiwweDAwMDAwMDAxLDB4MDAw
NDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDZjLDB4MDAwMDAwMDAsMHgwMDA0MDAyMCwKLQkweDAw
MDAwMDZkLDB4MDAwMDAwMDEsMHgwMDAwMDAwNiwweDAwMDIwMDE0LDB4MDAwMDAwNzAsMHgwMDA0
MDAyYiwweDAwMDAwMDE2LDB4MDAwMDAwOTAsCi0JMHgwMDAwMDAwMywweDAwMDMwMDFkLDB4MDAw
MDAwYzMsMHgwMDAwMDAwNiwweDAwMDMwMDFlLDB4MDAwMDAwYzQsMHgwMDAwMDBjMywweDAwMDQw
MDIwLAotCTB4MDAwMDAwYzUsMHgwMDAwMDAwMiwweDAwMDAwMGM0LDB4MDAwNDAwM2IsMHgwMDAw
MDBjNSwweDAwMDAwMGM2LDB4MDAwMDAwMDIsMHgwMDA0MDAyYiwKLQkweDAwMDAwMDA2LDB4MDAw
MDAwZGEsMHgwMDAwMDAwMywweDAwMDQwMDJiLDB4MDAwMDAwMDYsMHgwMDAwMDBlNCwweDAwMDAw
MDA0LDB4MDAwNDAwMmIsCi0JMHgwMDAwMDAwNiwweDAwMDAwMGVjLDB4MDAwMDAwNDAsMHgwMDA2
MDAyYywweDAwMDAwMDY5LDB4MDAwMDAwZWQsMHgwMDAwMDBlYywweDAwMDAwMDIwLAotCTB4MDAw
MDAwMjAsMHgwMDA1MDAzNiwweDAwMDAwMDAyLDB4MDAwMDAwMDQsMHgwMDAwMDAwMCwweDAwMDAw
MDAzLDB4MDAwMjAwZjgsMHgwMDAwMDAwNSwKLQkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAw
MDA1NSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDVlLDB4MDAwMDAw
MDcsCi0JMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNjUsMHgwMDAwMDAwNywweDAwMDQw
MDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3NSwweDAwMDAwMDA3LAotCTB4MDAwNDAwM2IsMHgwMDAw
MDAwNywweDAwMDAwMDc2LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAw
NzgsMHgwMDAwMDAwNywKLQkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3YSwweDAwMDAw
MDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDdiLDB4MDAwMDAwMDcsCi0JMHgwMDA0
MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwODMsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAw
MDcsMHgwMDAwMDA4NCwweDAwMDAwMDA3LAotCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAw
MDg3LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYTAsMHgwMDAwMDAw
NywKLQkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBhMSwweDAwMDAwMDA3LDB4MDAwNDAw
M2IsMHgwMDAwMDAwNywweDAwMDAwMGFhLDB4MDAwMDAwMDcsCi0JMHgwMDA0MDAzYiwweDAwMDAw
MDA3LDB4MDAwMDAwYWIsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBh
ZiwweDAwMDAwMDA3LAotCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGIxLDB4MDAwMDAw
MDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYmMsMHgwMDAwMDAwNywKLQkweDAwMDQw
MDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBiZSwweDAwMDAwMDA3LDB4MDAwNTAwNDEsMHgwMDAwMDAz
NCwweDAwMDAwMDVhLDB4MDAwMDAwMzIsCi0JMHgwMDAwMDAxNywweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDA1YiwweDAwMDAwMDVhLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDVj
LAotCTB4MDAwMDAwNTksMHgwMDAwMDAxNywweDAwMDAwMDViLDB4MDAwNDAwM2QsMHgwMDAwMDAw
NiwweDAwMDAwMDVkLDB4MDAwMDAwNWMsMHgwMDAzMDAzZSwKLQkweDAwMDAwMDU1LDB4MDAwMDAw
NWQsMHgwMDA1MDA0MSwweDAwMDAwMDM0LDB4MDAwMDAwNWYsMHgwMDAwMDAzMiwweDAwMDAwMDE3
LDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDYwLDB4MDAwMDAwNWYsMHgwMDA1MDA4
MCwweDAwMDAwMDA2LDB4MDAwMDAwNjIsMHgwMDAwMDA2MCwweDAwMDAwMDYxLAotCTB4MDAwNjAw
NDEsMHgwMDAwMDAxYiwweDAwMDAwMDYzLDB4MDAwMDAwNTksMHgwMDAwMDAxNywweDAwMDAwMDYy
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKLQkweDAwMDAwMDY0LDB4MDAwMDAwNjMsMHgwMDAzMDAz
ZSwweDAwMDAwMDVlLDB4MDAwMDAwNjQsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNjYs
Ci0JMHgwMDAwMDA1ZSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2NywweDAwMDAwMDU1
LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDY4LAotCTB4MDAwMDAwNjYsMHgwMDAwMDA2
NywweDAwMDMwMDNlLDB4MDAwMDAwNjUsMHgwMDAwMDA2OCwweDAwMDUwMDQxLDB4MDAwMDAwNmQs
MHgwMDAwMDA2ZSwKLQkweDAwMDAwMDZiLDB4MDAwMDAwNmMsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwNmYsMHgwMDAwMDA2ZSwweDAwMDUwMGFlLDB4MDAwMDAwNzAsCi0JMHgwMDAwMDA3
MSwweDAwMDAwMDZmLDB4MDAwMDAwMjAsMHgwMDAzMDBmNywweDAwMDAwMDczLDB4MDAwMDAwMDAs
MHgwMDA0MDBmYSwweDAwMDAwMDcxLAotCTB4MDAwMDAwNzIsMHgwMDAwMDA3MywweDAwMDIwMGY4
LDB4MDAwMDAwNzIsMHgwMDAxMDBmZCwweDAwMDIwMGY4LDB4MDAwMDAwNzMsMHgwMDAzMDAzZSwK
LQkweDAwMDAwMDc1LDB4MDAwMDAwNmMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNzcs
MHgwMDAwMDA1ZSwweDAwMDMwMDNlLDB4MDAwMDAwNzYsCi0JMHgwMDAwMDA3NywweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDA3OSwweDAwMDAwMDU1LDB4MDAwMzAwM2UsMHgwMDAwMDA3OCww
eDAwMDAwMDc5LAotCTB4MDAwMzAwM2UsMHgwMDAwMDA3YSwweDAwMDAwMDZjLDB4MDAwMzAwM2Us
MHgwMDAwMDA3YiwweDAwMDAwMDZjLDB4MDAwMjAwZjksMHgwMDAwMDA3YywKLQkweDAwMDIwMGY4
LDB4MDAwMDAwN2MsMHgwMDA0MDBmNiwweDAwMDAwMDdlLDB4MDAwMDAwN2YsMHgwMDAwMDAwMCww
eDAwMDIwMGY5LDB4MDAwMDAwODAsCi0JMHgwMDAyMDBmOCwweDAwMDAwMDgwLDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDgxLDB4MDAwMDAwNzgsMHgwMDA1MDBhYywweDAwMDAwMDcwLAot
CTB4MDAwMDAwODIsMHgwMDAwMDA4MSwweDAwMDAwMDZjLDB4MDAwNDAwZmEsMHgwMDAwMDA4Miww
eDAwMDAwMDdkLDB4MDAwMDAwN2UsMHgwMDAyMDBmOCwKLQkweDAwMDAwMDdkLDB4MDAwMzAwM2Us
MHgwMDAwMDA4MywweDAwMDAwMDI1LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDg1LDB4
MDAwMDAwNzYsCi0JMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwODYsMHgwMDAwMDA4NSww
eDAwMDAwMDE5LDB4MDAwMzAwM2UsMHgwMDAwMDA3NiwweDAwMDAwMDg2LAotCTB4MDAwMzAwM2Us
MHgwMDAwMDA4NywweDAwMDAwMDg1LDB4MDAwNTAwMzksMHgwMDAwMDAwNiwweDAwMDAwMDg4LDB4
MDAwMDAwMGEsMHgwMDAwMDA4NywKLQkweDAwMDMwMDNlLDB4MDAwMDAwODQsMHgwMDAwMDA4OCww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4OSwweDAwMDAwMDdhLDB4MDAwNTAwYWEsCi0J
MHgwMDAwMDA3MCwweDAwMDAwMDhhLDB4MDAwMDAwODksMHgwMDAwMDA2YywweDAwMDMwMGY3LDB4
MDAwMDAwOGMsMHgwMDAwMDAwMCwweDAwMDQwMGZhLAotCTB4MDAwMDAwOGEsMHgwMDAwMDA4Yiww
eDAwMDAwMDhjLDB4MDAwMjAwZjgsMHgwMDAwMDA4YiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDA4ZCwKLQkweDAwMDAwMDg0LDB4MDAwMzAwM2UsMHgwMDAwMDA3YiwweDAwMDAwMDhkLDB4
MDAwMjAwZjksMHgwMDAwMDA4YywweDAwMDIwMGY4LDB4MDAwMDAwOGMsCi0JMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwOGUsMHgwMDAwMDA3OCwweDAwMDUwMDgyLDB4MDAwMDAwMDYsMHgw
MDAwMDA4ZiwweDAwMDAwMDhlLAotCTB4MDAwMDAwMTksMHgwMDAzMDAzZSwweDAwMDAwMDc4LDB4
MDAwMDAwOGYsMHgwMDA1MDA0MSwweDAwMDAwMDM0LDB4MDAwMDAwOTEsMHgwMDAwMDAzMiwKLQkw
eDAwMDAwMDkwLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDkyLDB4MDAwMDAwOTEsMHgw
MDA1MDBhYSwweDAwMDAwMDcwLDB4MDAwMDAwOTMsCi0JMHgwMDAwMDA5MiwweDAwMDAwMDIwLDB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDk0LDB4MDAwMDAwODQsMHgwMDA0MDAzZCwweDAw
MDAwMDA2LAotCTB4MDAwMDAwOTUsMHgwMDAwMDA4MywweDAwMDUwMGFhLDB4MDAwMDAwNzAsMHgw
MDAwMDA5NiwweDAwMDAwMDk0LDB4MDAwMDAwOTUsMHgwMDA1MDBhNywKLQkweDAwMDAwMDcwLDB4
MDAwMDAwOTcsMHgwMDAwMDA5MywweDAwMDAwMDk2LDB4MDAwMzAwZjcsMHgwMDAwMDA5OSwweDAw
MDAwMDAwLDB4MDAwNDAwZmEsCi0JMHgwMDAwMDA5NywweDAwMDAwMDk4LDB4MDAwMDAwYWUsMHgw
MDAyMDBmOCwweDAwMDAwMDk4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDlhLAotCTB4
MDAwMDAwN2EsMHgwMDA1MDBhYywweDAwMDAwMDcwLDB4MDAwMDAwOWIsMHgwMDAwMDA5YSwweDAw
MDAwMDIwLDB4MDAwMzAwZjcsMHgwMDAwMDA5ZCwKLQkweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgw
MDAwMDA5YiwweDAwMDAwMDljLDB4MDAwMDAwOWQsMHgwMDAyMDBmOCwweDAwMDAwMDljLDB4MDAw
NDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDllLDB4MDAwMDAwNzUsMHgwMDA1MDA4MCwweDAw
MDAwMDA2LDB4MDAwMDAwOWYsMHgwMDAwMDA5ZSwweDAwMDAwMDE5LAotCTB4MDAwMzAwM2UsMHgw
MDAwMDA3NSwweDAwMDAwMDlmLDB4MDAwMzAwM2UsMHgwMDAwMDBhMCwweDAwMDAwMDllLDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwKLQkweDAwMDAwMGEyLDB4MDAwMDAwN2IsMHgwMDAzMDAzZSwweDAw
MDAwMGExLDB4MDAwMDAwYTIsMHgwMDA2MDAzOSwweDAwMDAwMDAyLDB4MDAwMDAwYTMsCi0JMHgw
MDAwMDAwZiwweDAwMDAwMGEwLDB4MDAwMDAwYTEsMHgwMDAyMDBmOSwweDAwMDAwMDlkLDB4MDAw
MjAwZjgsMHgwMDAwMDA5ZCwweDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDBhNCwweDAw
MDAwMDdhLDB4MDAwNTAwYWMsMHgwMDAwMDA3MCwweDAwMDAwMGE1LDB4MDAwMDAwYTQsMHgwMDAw
MDA2YywKLQkweDAwMDMwMGY3LDB4MDAwMDAwYTcsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAw
MDAwYTUsMHgwMDAwMDBhNiwweDAwMDAwMGE3LDB4MDAwMjAwZjgsCi0JMHgwMDAwMDBhNiwweDAw
MDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhOCwweDAwMDAwMDc1LDB4MDAwNTAwODAsMHgwMDAw
MDAwNiwweDAwMDAwMGE5LAotCTB4MDAwMDAwYTgsMHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4MDAw
MDAwNzUsMHgwMDAwMDBhOSwweDAwMDMwMDNlLDB4MDAwMDAwYWEsMHgwMDAwMDBhOCwKLQkweDAw
MDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhYywweDAwMDAwMDgzLDB4MDAwMzAwM2UsMHgwMDAw
MDBhYiwweDAwMDAwMGFjLDB4MDAwNjAwMzksCi0JMHgwMDAwMDAwMiwweDAwMDAwMGFkLDB4MDAw
MDAwMGYsMHgwMDAwMDBhYSwweDAwMDAwMGFiLDB4MDAwMjAwZjksMHgwMDAwMDBhNywweDAwMDIw
MGY4LAotCTB4MDAwMDAwYTcsMHgwMDAzMDAzZSwweDAwMDAwMDdhLDB4MDAwMDAwNmMsMHgwMDAy
MDBmOSwweDAwMDAwMDk5LDB4MDAwMjAwZjgsMHgwMDAwMDBhZSwKLQkweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDBiMCwweDAwMDAwMDc1LDB4MDAwMzAwM2UsMHgwMDAwMDBhZiwweDAwMDAw
MGIwLDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMGIyLDB4MDAwMDAwODQsMHgwMDAz
MDAzZSwweDAwMDAwMGIxLDB4MDAwMDAwYjIsMHgwMDA2MDAzOSwweDAwMDAwMDAyLAotCTB4MDAw
MDAwYjMsMHgwMDAwMDAwZiwweDAwMDAwMGFmLDB4MDAwMDAwYjEsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwYjQsMHgwMDAwMDA3NSwKLQkweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAw
MDBiNSwweDAwMDAwMGI0LDB4MDAwMDAwMTksMHgwMDAzMDAzZSwweDAwMDAwMDc1LDB4MDAwMDAw
YjUsCi0JMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYjYsMHgwMDAwMDA3YSwweDAwMDUw
MDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBiNywweDAwMDAwMGI2LAotCTB4MDAwMDAwMTksMHgwMDAz
MDAzZSwweDAwMDAwMDdhLDB4MDAwMDAwYjcsMHgwMDAyMDBmOSwweDAwMDAwMDk5LDB4MDAwMjAw
ZjgsMHgwMDAwMDA5OSwKLQkweDAwMDIwMGY5LDB4MDAwMDAwN2YsMHgwMDAyMDBmOCwweDAwMDAw
MDdmLDB4MDAwMjAwZjksMHgwMDAwMDA3YywweDAwMDIwMGY4LDB4MDAwMDAwN2UsCi0JMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYjgsMHgwMDAwMDA3YSwweDAwMDUwMGFjLDB4MDAwMDAw
NzAsMHgwMDAwMDBiOSwweDAwMDAwMGI4LAotCTB4MDAwMDAwMjAsMHgwMDAzMDBmNywweDAwMDAw
MGJiLDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMGI5LDB4MDAwMDAwYmEsMHgwMDAwMDBi
YiwKLQkweDAwMDIwMGY4LDB4MDAwMDAwYmEsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAw
YmQsMHgwMDAwMDA3NSwweDAwMDMwMDNlLDB4MDAwMDAwYmMsCi0JMHgwMDAwMDBiZCwweDAwMDQw
MDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiZiwweDAwMDAwMDdiLDB4MDAwMzAwM2UsMHgwMDAwMDBi
ZSwweDAwMDAwMGJmLAotCTB4MDAwNjAwMzksMHgwMDAwMDAwMiwweDAwMDAwMGMwLDB4MDAwMDAw
MGYsMHgwMDAwMDBiYywweDAwMDAwMGJlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKLQkweDAwMDAw
MGMxLDB4MDAwMDAwNzUsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYzIsMHgwMDAwMDBj
MSwweDAwMDAwMDE5LDB4MDAwMzAwM2UsCi0JMHgwMDAwMDA3NSwweDAwMDAwMGMyLDB4MDAwMjAw
ZjksMHgwMDAwMDBiYiwweDAwMDIwMGY4LDB4MDAwMDAwYmIsMHgwMDA1MDA0MSwweDAwMDAwMDM0
LAotCTB4MDAwMDAwYzcsMHgwMDAwMDAzMiwweDAwMDAwMDE5LDB4MDAwNDAwM2QsMHgwMDAwMDAw
NiwweDAwMDAwMGM4LDB4MDAwMDAwYzcsMHgwMDA0MDAzZCwKLQkweDAwMDAwMDA2LDB4MDAwMDAw
YzksMHgwMDAwMDA3NSwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDBjYSwweDAwMDAwMGM2
LDB4MDAwMDAwMTcsCi0JMHgwMDAwMDBjOCwweDAwMDMwMDNlLDB4MDAwMDAwY2EsMHgwMDAwMDBj
OSwweDAwMDUwMDQxLDB4MDAwMDAwMzQsMHgwMDAwMDBjYiwweDAwMDAwMDMyLAotCTB4MDAwMDAw
MTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwY2MsMHgwMDAwMDBjYiwweDAwMDUwMDgw
LDB4MDAwMDAwMDYsMHgwMDAwMDBjZCwKLQkweDAwMDAwMGNjLDB4MDAwMDAwMjAsMHgwMDA1MDA0
MSwweDAwMDAwMDM0LDB4MDAwMDAwY2UsMHgwMDAwMDAzMiwweDAwMDAwMDE3LDB4MDAwNDAwM2Qs
Ci0JMHgwMDAwMDAwNiwweDAwMDAwMGNmLDB4MDAwMDAwY2UsMHgwMDA1MDA4MCwweDAwMDAwMDA2
LDB4MDAwMDAwZDAsMHgwMDAwMDBjZiwweDAwMDAwMDIwLAotCTB4MDAwNjAwNDEsMHgwMDAwMDAx
YiwweDAwMDAwMGQxLDB4MDAwMDAwNTksMHgwMDAwMDAxNywweDAwMDAwMGQwLDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwKLQkweDAwMDAwMGQyLDB4MDAwMDAwZDEsMHgwMDA2MDA0MSwweDAwMDAwMDFi
LDB4MDAwMDAwZDMsMHgwMDAwMDBjNiwweDAwMDAwMDE3LDB4MDAwMDAwY2QsCi0JMHgwMDAzMDAz
ZSwweDAwMDAwMGQzLDB4MDAwMDAwZDIsMHgwMDA1MDA0MSwweDAwMDAwMDM0LDB4MDAwMDAwZDQs
MHgwMDAwMDAzMiwweDAwMDAwMDE5LAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGQ1
LDB4MDAwMDAwZDQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwZDYsMHgwMDAwMDBkNSwK
LQkweDAwMDAwMDYxLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGQ3LDB4MDAwMDAwYzYs
MHgwMDAwMDAxNywweDAwMDAwMGQ2LDB4MDAwMzAwM2UsCi0JMHgwMDAwMDBkNywweDAwMDAwMDZj
LDB4MDAwNTAwNDEsMHgwMDAwMDAzNCwweDAwMDAwMGQ4LDB4MDAwMDAwMzIsMHgwMDAwMDAxOSww
eDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDBkOSwweDAwMDAwMGQ4LDB4MDAwNTAwODAs
MHgwMDAwMDAwNiwweDAwMDAwMGRiLDB4MDAwMDAwZDksMHgwMDAwMDBkYSwKLQkweDAwMDUwMDQx
LDB4MDAwMDAwMzQsMHgwMDAwMDBkYywweDAwMDAwMDMyLDB4MDAwMDAwMTcsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwZGQsCi0JMHgwMDAwMDBkYywweDAwMDUwMDgwLDB4MDAwMDAwMDYs
MHgwMDAwMDBkZSwweDAwMDAwMGRkLDB4MDAwMDAwZGEsMHgwMDA2MDA0MSwweDAwMDAwMDFiLAot
CTB4MDAwMDAwZGYsMHgwMDAwMDA1OSwweDAwMDAwMDE3LDB4MDAwMDAwZGUsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwZTAsMHgwMDAwMDBkZiwKLQkweDAwMDYwMDQxLDB4MDAwMDAwMWIs
MHgwMDAwMDBlMSwweDAwMDAwMGM2LDB4MDAwMDAwMTcsMHgwMDAwMDBkYiwweDAwMDMwMDNlLDB4
MDAwMDAwZTEsCi0JMHgwMDAwMDBlMCwweDAwMDUwMDQxLDB4MDAwMDAwMzQsMHgwMDAwMDBlMiww
eDAwMDAwMDMyLDB4MDAwMDAwMTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwZTMs
MHgwMDAwMDBlMiwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBlNSwweDAwMDAwMGUzLDB4
MDAwMDAwZTQsMHgwMDA1MDA0MSwKLQkweDAwMDAwMDM0LDB4MDAwMDAwZTYsMHgwMDAwMDAzMiww
eDAwMDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGU3LDB4MDAwMDAwZTYsCi0J
MHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwZTgsMHgwMDAwMDBlNywweDAwMDAwMGU0LDB4
MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGU5LAotCTB4MDAwMDAwNTksMHgwMDAwMDAxNyww
eDAwMDAwMGU4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGVhLDB4MDAwMDAwZTksMHgw
MDA2MDA0MSwKLQkweDAwMDAwMDFiLDB4MDAwMDAwZWIsMHgwMDAwMDBjNiwweDAwMDAwMDE3LDB4
MDAwMDAwZTUsMHgwMDAzMDAzZSwweDAwMDAwMGViLDB4MDAwMDAwZWEsCisJMHgwMDAwMDAwMiww
eDAwMDQwMDIwLDB4MDAwMDAwMWIsMHgwMDAwMDAwMiwweDAwMDAwMDA2LDB4MDAwNDAwMmIsMHgw
MDAwMDAwNiwweDAwMDAwMDIwLAorCTB4MDAwMDAwMDMsMHgwMDA0MDAyYiwweDAwMDAwMDE2LDB4
MDAwMDAwMjIsMHgwMDAwMDAwMywweDAwMDQwMDJiLDB4MDAwMDAwMDYsMHgwMDAwMDAyOCwKKwkw
eDAwMDAwMGZmLDB4MDAwNjAwMWUsMHgwMDAwMDAyZSwweDAwMDAwMDA2LDB4MDAwMDAwMDYsMHgw
MDAwMDAwNiwweDAwMDAwMDA2LDB4MDAwNDAwMjAsCisJMHgwMDAwMDAyZiwweDAwMDAwMDA5LDB4
MDAwMDAwMmUsMHgwMDA0MDAzYiwweDAwMDAwMDJmLDB4MDAwMDAwMzAsMHgwMDAwMDAwOSwweDAw
MDQwMDIwLAorCTB4MDAwMDAwMzEsMHgwMDAwMDAwOSwweDAwMDAwMDA2LDB4MDAwMzAwMWQsMHgw
MDAwMDAzOCwweDAwMDAwMDA2LDB4MDAwMzAwMWUsMHgwMDAwMDAzOSwKKwkweDAwMDAwMDM4LDB4
MDAwNDAwMjAsMHgwMDAwMDAzYSwweDAwMDAwMDAyLDB4MDAwMDAwMzksMHgwMDA0MDAzYiwweDAw
MDAwMDNhLDB4MDAwMDAwM2IsCisJMHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgw
MDAwMDA0MywweDAwMDAwMGZmLDB4MDAwMzAwMWQsMHgwMDAwMDA1MywweDAwMDAwMDA2LAorCTB4
MDAwMzAwMWUsMHgwMDAwMDA1NCwweDAwMDAwMDUzLDB4MDAwNDAwMjAsMHgwMDAwMDA1NSwweDAw
MDAwMDAyLDB4MDAwMDAwNTQsMHgwMDA0MDAzYiwKKwkweDAwMDAwMDU1LDB4MDAwMDAwNTYsMHgw
MDAwMDAwMiwweDAwMDQwMDJiLDB4MDAwMDAwMDYsMHgwMDAwMDA1ZSwweDAwMDAwMDAyLDB4MDAw
NDAwMTcsCisJMHgwMDAwMDA2NiwweDAwMDAwMDA2LDB4MDAwMDAwMDMsMHgwMDA0MDAyMCwweDAw
MDAwMDY3LDB4MDAwMDAwMDEsMHgwMDAwMDA2NiwweDAwMDQwMDNiLAorCTB4MDAwMDAwNjcsMHgw
MDAwMDA2OCwweDAwMDAwMDAxLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDY5LDB4MDAw
MDAwMDAsMHgwMDA0MDAyMCwKKwkweDAwMDAwMDZhLDB4MDAwMDAwMDEsMHgwMDAwMDAwNiwweDAw
MDQwMDJiLDB4MDAwMDAwMDYsMHgwMDAwMDA2ZCwweDAwMDAwMDAxLDB4MDAwMjAwMTQsCisJMHgw
MDAwMDA2ZSwweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgwMDAwMDA4NCwweDAwMDAwMDAxLDB4MDAw
MzAwMWQsMHgwMDAwMDBjMSwweDAwMDAwMDA2LAorCTB4MDAwMzAwMWUsMHgwMDAwMDBjMiwweDAw
MDAwMGMxLDB4MDAwNDAwMjAsMHgwMDAwMDBjMywweDAwMDAwMDAyLDB4MDAwMDAwYzIsMHgwMDA0
MDAzYiwKKwkweDAwMDAwMGMzLDB4MDAwMDAwYzQsMHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAw
MDAwMDYsMHgwMDAwMDBlMSwweDAwMDAwMDA0LDB4MDAwNDAwMmIsCisJMHgwMDAwMDAwNiwweDAw
MDAwMGU5LDB4MDAwMDAwNDAsMHgwMDA2MDAyYywweDAwMDAwMDY2LDB4MDAwMDAwZWEsMHgwMDAw
MDBlOSwweDAwMDAwMDZkLAorCTB4MDAwMDAwNmQsMHgwMDA1MDAzNiwweDAwMDAwMDAyLDB4MDAw
MDAwMDQsMHgwMDAwMDAwMCwweDAwMDAwMDAzLDB4MDAwMjAwZjgsMHgwMDAwMDAwNSwKKwkweDAw
MDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA1MiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAw
MDAwNywweDAwMDAwMDViLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAw
MDAwNjIsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3MywweDAwMDAw
MDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDc0LDB4MDAwMDAwMDcsMHgwMDA0
MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNzYsMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4MDAw
MDAwMDcsMHgwMDAwMDA3OCwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAw
MDc5LDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwODEsMHgwMDAw
MDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA4MiwweDAwMDAwMDA3LAorCTB4MDAw
NDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDg2LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAw
MDA3LDB4MDAwMDAwOWUsMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAw
MDA5ZiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGE4LDB4MDAwMDAw
MDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYTksMHgwMDAwMDAwNywweDAwMDQw
MDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBhZCwweDAwMDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAw
MDAwNywweDAwMDAwMGFmLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAw
YmEsMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBiYywweDAwMDAw
MDA3LDB4MDAwNTAwNDEsMHgwMDAwMDAzMSwweDAwMDAwMDU3LDB4MDAwMDAwMzAsCisJMHgwMDAw
MDAxNywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA1OCwweDAwMDAwMDU3LDB4MDAwNjAw
NDEsMHgwMDAwMDAxYiwweDAwMDAwMDU5LAorCTB4MDAwMDAwNTYsMHgwMDAwMDAxNywweDAwMDAw
MDU4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDVhLDB4MDAwMDAwNTksMHgwMDAzMDAz
ZSwKKwkweDAwMDAwMDUyLDB4MDAwMDAwNWEsMHgwMDA1MDA0MSwweDAwMDAwMDMxLDB4MDAwMDAw
NWMsMHgwMDAwMDAzMCwweDAwMDAwMDE3LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAw
MDVkLDB4MDAwMDAwNWMsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwNWYsMHgwMDAwMDA1
ZCwweDAwMDAwMDVlLAorCTB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDYwLDB4MDAwMDAw
NTYsMHgwMDAwMDAxNywweDAwMDAwMDVmLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAw
MDYxLDB4MDAwMDAwNjAsMHgwMDAzMDAzZSwweDAwMDAwMDViLDB4MDAwMDAwNjEsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwNjMsCisJMHgwMDAwMDA1YiwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDA2NCwweDAwMDAwMDUyLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDY1
LAorCTB4MDAwMDAwNjMsMHgwMDAwMDA2NCwweDAwMDMwMDNlLDB4MDAwMDAwNjIsMHgwMDAwMDA2
NSwweDAwMDUwMDQxLDB4MDAwMDAwNmEsMHgwMDAwMDA2YiwKKwkweDAwMDAwMDY4LDB4MDAwMDAw
NjksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNmMsMHgwMDAwMDA2YiwweDAwMDUwMGFl
LDB4MDAwMDAwNmUsCisJMHgwMDAwMDA2ZiwweDAwMDAwMDZjLDB4MDAwMDAwNmQsMHgwMDAzMDBm
NywweDAwMDAwMDcxLDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDZmLAorCTB4MDAwMDAw
NzAsMHgwMDAwMDA3MSwweDAwMDIwMGY4LDB4MDAwMDAwNzAsMHgwMDAxMDBmZCwweDAwMDIwMGY4
LDB4MDAwMDAwNzEsMHgwMDAzMDAzZSwKKwkweDAwMDAwMDczLDB4MDAwMDAwNjksMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwNzUsMHgwMDAwMDA1YiwweDAwMDMwMDNlLDB4MDAwMDAwNzQs
CisJMHgwMDAwMDA3NSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3NywweDAwMDAwMDUy
LDB4MDAwMzAwM2UsMHgwMDAwMDA3NiwweDAwMDAwMDc3LAorCTB4MDAwMzAwM2UsMHgwMDAwMDA3
OCwweDAwMDAwMDY5LDB4MDAwMzAwM2UsMHgwMDAwMDA3OSwweDAwMDAwMDY5LDB4MDAwMjAwZjks
MHgwMDAwMDA3YSwKKwkweDAwMDIwMGY4LDB4MDAwMDAwN2EsMHgwMDA0MDBmNiwweDAwMDAwMDdj
LDB4MDAwMDAwN2QsMHgwMDAwMDAwMCwweDAwMDIwMGY5LDB4MDAwMDAwN2UsCisJMHgwMDAyMDBm
OCwweDAwMDAwMDdlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDdmLDB4MDAwMDAwNzYs
MHgwMDA1MDBhYywweDAwMDAwMDZlLAorCTB4MDAwMDAwODAsMHgwMDAwMDA3ZiwweDAwMDAwMDY5
LDB4MDAwNDAwZmEsMHgwMDAwMDA4MCwweDAwMDAwMDdiLDB4MDAwMDAwN2MsMHgwMDAyMDBmOCwK
KwkweDAwMDAwMDdiLDB4MDAwMzAwM2UsMHgwMDAwMDA4MSwweDAwMDAwMDI4LDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDgzLDB4MDAwMDAwNzQsCisJMHgwMDA1MDA4MCwweDAwMDAwMDA2
LDB4MDAwMDAwODUsMHgwMDAwMDA4MywweDAwMDAwMDg0LDB4MDAwMzAwM2UsMHgwMDAwMDA3NCww
eDAwMDAwMDg1LAorCTB4MDAwMzAwM2UsMHgwMDAwMDA4NiwweDAwMDAwMDgzLDB4MDAwNTAwMzks
MHgwMDAwMDAwNiwweDAwMDAwMDg3LDB4MDAwMDAwMGEsMHgwMDAwMDA4NiwKKwkweDAwMDMwMDNl
LDB4MDAwMDAwODIsMHgwMDAwMDA4NywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4OCww
eDAwMDAwMDc4LDB4MDAwNTAwYWEsCisJMHgwMDAwMDA2ZSwweDAwMDAwMDg5LDB4MDAwMDAwODgs
MHgwMDAwMDA2OSwweDAwMDMwMGY3LDB4MDAwMDAwOGIsMHgwMDAwMDAwMCwweDAwMDQwMGZhLAor
CTB4MDAwMDAwODksMHgwMDAwMDA4YSwweDAwMDAwMDhiLDB4MDAwMjAwZjgsMHgwMDAwMDA4YSww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4YywKKwkweDAwMDAwMDgyLDB4MDAwMzAwM2Us
MHgwMDAwMDA3OSwweDAwMDAwMDhjLDB4MDAwMjAwZjksMHgwMDAwMDA4YiwweDAwMDIwMGY4LDB4
MDAwMDAwOGIsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOGQsMHgwMDAwMDA3Niww
eDAwMDUwMDgyLDB4MDAwMDAwMDYsMHgwMDAwMDA4ZSwweDAwMDAwMDhkLAorCTB4MDAwMDAwODQs
MHgwMDAzMDAzZSwweDAwMDAwMDc2LDB4MDAwMDAwOGUsMHgwMDA1MDA0MSwweDAwMDAwMDMxLDB4
MDAwMDAwOGYsMHgwMDAwMDAzMCwKKwkweDAwMDAwMDIyLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDkwLDB4MDAwMDAwOGYsMHgwMDA1MDBhYSwweDAwMDAwMDZlLDB4MDAwMDAwOTEsCisJ
MHgwMDAwMDA5MCwweDAwMDAwMDZkLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDkyLDB4
MDAwMDAwODIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwOTMsMHgwMDAwMDA4MSww
eDAwMDUwMGFhLDB4MDAwMDAwNmUsMHgwMDAwMDA5NCwweDAwMDAwMDkyLDB4MDAwMDAwOTMsMHgw
MDA1MDBhNywKKwkweDAwMDAwMDZlLDB4MDAwMDAwOTUsMHgwMDAwMDA5MSwweDAwMDAwMDk0LDB4
MDAwMzAwZjcsMHgwMDAwMDA5NywweDAwMDAwMDAwLDB4MDAwNDAwZmEsCisJMHgwMDAwMDA5NSww
eDAwMDAwMDk2LDB4MDAwMDAwYWMsMHgwMDAyMDBmOCwweDAwMDAwMDk2LDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwweDAwMDAwMDk4LAorCTB4MDAwMDAwNzgsMHgwMDA1MDBhYywweDAwMDAwMDZlLDB4
MDAwMDAwOTksMHgwMDAwMDA5OCwweDAwMDAwMDZkLDB4MDAwMzAwZjcsMHgwMDAwMDA5YiwKKwkw
eDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA5OSwweDAwMDAwMDlhLDB4MDAwMDAwOWIsMHgw
MDAyMDBmOCwweDAwMDAwMDlhLDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMDljLDB4
MDAwMDAwNzMsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwOWQsMHgwMDAwMDA5YywweDAw
MDAwMDg0LAorCTB4MDAwMzAwM2UsMHgwMDAwMDA3MywweDAwMDAwMDlkLDB4MDAwMzAwM2UsMHgw
MDAwMDA5ZSwweDAwMDAwMDljLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMGEwLDB4
MDAwMDAwNzksMHgwMDAzMDAzZSwweDAwMDAwMDlmLDB4MDAwMDAwYTAsMHgwMDA2MDAzOSwweDAw
MDAwMDAyLDB4MDAwMDAwYTEsCisJMHgwMDAwMDAwZiwweDAwMDAwMDllLDB4MDAwMDAwOWYsMHgw
MDAyMDBmOSwweDAwMDAwMDliLDB4MDAwMjAwZjgsMHgwMDAwMDA5YiwweDAwMDQwMDNkLAorCTB4
MDAwMDAwMDYsMHgwMDAwMDBhMiwweDAwMDAwMDc4LDB4MDAwNTAwYWMsMHgwMDAwMDA2ZSwweDAw
MDAwMGEzLDB4MDAwMDAwYTIsMHgwMDAwMDA2OSwKKwkweDAwMDMwMGY3LDB4MDAwMDAwYTUsMHgw
MDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwYTMsMHgwMDAwMDBhNCwweDAwMDAwMGE1LDB4MDAw
MjAwZjgsCisJMHgwMDAwMDBhNCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhNiwweDAw
MDAwMDczLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGE3LAorCTB4MDAwMDAwYTYsMHgw
MDAwMDA4NCwweDAwMDMwMDNlLDB4MDAwMDAwNzMsMHgwMDAwMDBhNywweDAwMDMwMDNlLDB4MDAw
MDAwYTgsMHgwMDAwMDBhNiwKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhYSwweDAw
MDAwMDgxLDB4MDAwMzAwM2UsMHgwMDAwMDBhOSwweDAwMDAwMGFhLDB4MDAwNjAwMzksCisJMHgw
MDAwMDAwMiwweDAwMDAwMGFiLDB4MDAwMDAwMGYsMHgwMDAwMDBhOCwweDAwMDAwMGE5LDB4MDAw
MjAwZjksMHgwMDAwMDBhNSwweDAwMDIwMGY4LAorCTB4MDAwMDAwYTUsMHgwMDAzMDAzZSwweDAw
MDAwMDc4LDB4MDAwMDAwNjksMHgwMDAyMDBmOSwweDAwMDAwMDk3LDB4MDAwMjAwZjgsMHgwMDAw
MDBhYywKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhZSwweDAwMDAwMDczLDB4MDAw
MzAwM2UsMHgwMDAwMDBhZCwweDAwMDAwMGFlLDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAw
MDAwMGIwLDB4MDAwMDAwODIsMHgwMDAzMDAzZSwweDAwMDAwMGFmLDB4MDAwMDAwYjAsMHgwMDA2
MDAzOSwweDAwMDAwMDAyLAorCTB4MDAwMDAwYjEsMHgwMDAwMDAwZiwweDAwMDAwMGFkLDB4MDAw
MDAwYWYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYjIsMHgwMDAwMDA3MywKKwkweDAw
MDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBiMywweDAwMDAwMGIyLDB4MDAwMDAwODQsMHgwMDAz
MDAzZSwweDAwMDAwMDczLDB4MDAwMDAwYjMsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwYjQsMHgwMDAwMDA3OCwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBiNSwweDAwMDAw
MGI0LAorCTB4MDAwMDAwODQsMHgwMDAzMDAzZSwweDAwMDAwMDc4LDB4MDAwMDAwYjUsMHgwMDAy
MDBmOSwweDAwMDAwMDk3LDB4MDAwMjAwZjgsMHgwMDAwMDA5NywKKwkweDAwMDIwMGY5LDB4MDAw
MDAwN2QsMHgwMDAyMDBmOCwweDAwMDAwMDdkLDB4MDAwMjAwZjksMHgwMDAwMDA3YSwweDAwMDIw
MGY4LDB4MDAwMDAwN2MsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYjYsMHgwMDAw
MDA3OCwweDAwMDUwMGFjLDB4MDAwMDAwNmUsMHgwMDAwMDBiNywweDAwMDAwMGI2LAorCTB4MDAw
MDAwNmQsMHgwMDAzMDBmNywweDAwMDAwMGI5LDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAw
MGI3LDB4MDAwMDAwYjgsMHgwMDAwMDBiOSwKKwkweDAwMDIwMGY4LDB4MDAwMDAwYjgsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYmIsMHgwMDAwMDA3MywweDAwMDMwMDNlLDB4MDAwMDAw
YmEsCisJMHgwMDAwMDBiYiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiZCwweDAwMDAw
MDc5LDB4MDAwMzAwM2UsMHgwMDAwMDBiYywweDAwMDAwMGJkLAorCTB4MDAwNjAwMzksMHgwMDAw
MDAwMiwweDAwMDAwMGJlLDB4MDAwMDAwMGYsMHgwMDAwMDBiYSwweDAwMDAwMGJjLDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMGJmLDB4MDAwMDAwNzMsMHgwMDA1MDA4MCwweDAwMDAw
MDA2LDB4MDAwMDAwYzAsMHgwMDAwMDBiZiwweDAwMDAwMDg0LDB4MDAwMzAwM2UsCisJMHgwMDAw
MDA3MywweDAwMDAwMGMwLDB4MDAwMjAwZjksMHgwMDAwMDBiOSwweDAwMDIwMGY4LDB4MDAwMDAw
YjksMHgwMDA1MDA0MSwweDAwMDAwMDMxLAorCTB4MDAwMDAwYzUsMHgwMDAwMDAzMCwweDAwMDAw
MDg0LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGM2LDB4MDAwMDAwYzUsMHgwMDA0MDAz
ZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwYzcsMHgwMDAwMDA3MywweDAwMDYwMDQxLDB4MDAwMDAw
MWIsMHgwMDAwMDBjOCwweDAwMDAwMGM0LDB4MDAwMDAwMTcsCisJMHgwMDAwMDBjNiwweDAwMDMw
MDNlLDB4MDAwMDAwYzgsMHgwMDAwMDBjNywweDAwMDUwMDQxLDB4MDAwMDAwMzEsMHgwMDAwMDBj
OSwweDAwMDAwMDMwLAorCTB4MDAwMDAwODQsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAw
Y2EsMHgwMDAwMDBjOSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBjYiwKKwkweDAwMDAw
MGNhLDB4MDAwMDAwNmQsMHgwMDA1MDA0MSwweDAwMDAwMDMxLDB4MDAwMDAwY2MsMHgwMDAwMDAz
MCwweDAwMDAwMDE3LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMGNkLDB4MDAwMDAw
Y2MsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwY2UsMHgwMDAwMDBjZCwweDAwMDAwMDZk
LAorCTB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGNmLDB4MDAwMDAwNTYsMHgwMDAwMDAx
NywweDAwMDAwMGNlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMGQwLDB4MDAwMDAw
Y2YsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwZDEsMHgwMDAwMDBjNCwweDAwMDAwMDE3
LDB4MDAwMDAwY2IsCisJMHgwMDAzMDAzZSwweDAwMDAwMGQxLDB4MDAwMDAwZDAsMHgwMDA1MDA0
MSwweDAwMDAwMDMxLDB4MDAwMDAwZDIsMHgwMDAwMDAzMCwweDAwMDAwMDg0LAorCTB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwweDAwMDAwMGQzLDB4MDAwMDAwZDIsMHgwMDA1MDA4MCwweDAwMDAwMDA2
LDB4MDAwMDAwZDQsMHgwMDAwMDBkMywKKwkweDAwMDAwMDVlLDB4MDAwNjAwNDEsMHgwMDAwMDAx
YiwweDAwMDAwMGQ1LDB4MDAwMDAwYzQsMHgwMDAwMDAxNywweDAwMDAwMGQ0LDB4MDAwMzAwM2Us
CisJMHgwMDAwMDBkNSwweDAwMDAwMDY5LDB4MDAwNTAwNDEsMHgwMDAwMDAzMSwweDAwMDAwMGQ2
LDB4MDAwMDAwMzAsMHgwMDAwMDA4NCwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAwMDBk
NywweDAwMDAwMGQ2LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGQ4LDB4MDAwMDAwZDcs
MHgwMDAwMDAyMCwKKwkweDAwMDUwMDQxLDB4MDAwMDAwMzEsMHgwMDAwMDBkOSwweDAwMDAwMDMw
LDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZGEsCisJMHgwMDAwMDBk
OSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBkYiwweDAwMDAwMGRhLDB4MDAwMDAwMjAs
MHgwMDA2MDA0MSwweDAwMDAwMDFiLAorCTB4MDAwMDAwZGMsMHgwMDAwMDA1NiwweDAwMDAwMDE3
LDB4MDAwMDAwZGIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZGQsMHgwMDAwMDBkYywK
KwkweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDBkZSwweDAwMDAwMGM0LDB4MDAwMDAwMTcs
MHgwMDAwMDBkOCwweDAwMDMwMDNlLDB4MDAwMDAwZGUsCisJMHgwMDAwMDBkZCwweDAwMDUwMDQx
LDB4MDAwMDAwMzEsMHgwMDAwMDBkZiwweDAwMDAwMDMwLDB4MDAwMDAwODQsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LAorCTB4MDAwMDAwZTAsMHgwMDAwMDBkZiwweDAwMDUwMDgwLDB4MDAwMDAwMDYs
MHgwMDAwMDBlMiwweDAwMDAwMGUwLDB4MDAwMDAwZTEsMHgwMDA1MDA0MSwKKwkweDAwMDAwMDMx
LDB4MDAwMDAwZTMsMHgwMDAwMDAzMCwweDAwMDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMGU0LDB4MDAwMDAwZTMsCisJMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwZTUs
MHgwMDAwMDBlNCwweDAwMDAwMGUxLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGU2LAor
CTB4MDAwMDAwNTYsMHgwMDAwMDAxNywweDAwMDAwMGU1LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMGU3LDB4MDAwMDAwZTYsMHgwMDA2MDA0MSwKKwkweDAwMDAwMDFiLDB4MDAwMDAwZTgs
MHgwMDAwMDBjNCwweDAwMDAwMDE3LDB4MDAwMDAwZTIsMHgwMDAzMDAzZSwweDAwMDAwMGU4LDB4
MDAwMDAwZTcsCiAJMHgwMDAxMDBmZCwweDAwMDEwMDM4LDB4MDAwNTAwMzYsMHgwMDAwMDAwNiww
eDAwMDAwMDBhLDB4MDAwMDAwMDAsMHgwMDAwMDAwOCwweDAwMDMwMDM3LAogCTB4MDAwMDAwMDcs
MHgwMDAwMDAwOSwweDAwMDIwMGY4LDB4MDAwMDAwMGIsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4
MDAwMDAwMTEsMHgwMDAwMDAwNywKIAkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAxZSww
eDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDI0LDB4MDAwMDAwMDcsCi0J
MHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwMjYsMHgwMDAwMDAwNywweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDAxOCwweDAwMDAwMDA5LAotCTB4MDAwNTAwYzIsMHgwMDAwMDAwNiww
eDAwMDAwMDFhLDB4MDAwMDAwMTgsMHgwMDAwMDAxOSwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgw
MDAwMDAxYywKLQkweDAwMDAwMDE1LDB4MDAwMDAwMTcsMHgwMDAwMDAxYSwweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDAxZCwweDAwMDAwMDFjLDB4MDAwMzAwM2UsCi0JMHgwMDAwMDAxMSww
eDAwMDAwMDFkLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDFmLDB4MDAwMDAwMDksMHgw
MDA1MDBjNywweDAwMDAwMDA2LAotCTB4MDAwMDAwMjEsMHgwMDAwMDAxZiwweDAwMDAwMDIwLDB4
MDAwNTAwYzQsMHgwMDAwMDAwNiwweDAwMDAwMDIzLDB4MDAwMDAwMjEsMHgwMDAwMDAyMiwKLQkw
eDAwMDMwMDNlLDB4MDAwMDAwMWUsMHgwMDAwMDAyMywweDAwMDMwMDNlLDB4MDAwMDAwMjQsMHgw
MDAwMDAyNSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDAyNywweDAwMDAwMDExLDB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDI4LDB4MDAwMDAwMWUsMHgwMDA1MDBjMiwweDAw
MDAwMDA2LAotCTB4MDAwMDAwMjksMHgwMDAwMDAyNywweDAwMDAwMDI4LDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwweDAwMDAwMDJhLDB4MDAwMDAwMjQsMHgwMDA1MDBjNywKLQkweDAwMDAwMDA2LDB4
MDAwMDAwMmIsMHgwMDAwMDAyOSwweDAwMDAwMDJhLDB4MDAwMzAwM2UsMHgwMDAwMDAyNiwweDAw
MDAwMDJiLDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDJjLDB4MDAwMDAwMjYsMHgw
MDAyMDBmZSwweDAwMDAwMDJjLDB4MDAwMTAwMzgsMHgwMDA1MDAzNiwweDAwMDAwMDAyLAotCTB4
MDAwMDAwMGYsMHgwMDAwMDAwMCwweDAwMDAwMDBjLDB4MDAwMzAwMzcsMHgwMDAwMDAwNywweDAw
MDAwMDBkLDB4MDAwMzAwMzcsMHgwMDAwMDAwNywKLQkweDAwMDAwMDBlLDB4MDAwMjAwZjgsMHgw
MDAwMDAxMCwweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAyZiwweDAwMDAwMDA3LDB4MDAw
NDAwM2IsCi0JMHgwMDAwMDAwNywweDAwMDAwMDNhLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAw
MDAwMDA3LDB4MDAwMDAwNDIsMHgwMDAwMDAwNywweDAwMDQwMDNiLAotCTB4MDAwMDAwMDcsMHgw
MDAwMDA0NiwweDAwMDAwMDA3LDB4MDAwNTAwNDEsMHgwMDAwMDAzNCwweDAwMDAwMDM1LDB4MDAw
MDAwMzIsMHgwMDAwMDAzMywKLQkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzNiwweDAw
MDAwMDM1LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDM3LDB4MDAwMDAwMGQsCi0JMHgw
MDA1MDBjMiwweDAwMDAwMDA2LDB4MDAwMDAwMzgsMHgwMDAwMDAzNywweDAwMDAwMDE5LDB4MDAw
NTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDM5LAotCTB4MDAwMDAwMzYsMHgwMDAwMDAzOCwweDAw
MDMwMDNlLDB4MDAwMDAwMmYsMHgwMDAwMDAzOSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDAzZiwKLQkweDAwMDAwMDJmLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDQwLDB4MDAw
MDAwM2UsMHgwMDAwMDAxNywweDAwMDAwMDNmLDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAwNiwweDAw
MDAwMDQxLDB4MDAwMDAwNDAsMHgwMDAzMDAzZSwweDAwMDAwMDNhLDB4MDAwMDAwNDEsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwNDMsMHgwMDAwMDAwZCwweDAwMDUwMGM3LDB4MDAw
MDAwMDYsMHgwMDAwMDA0NCwweDAwMDAwMDQzLDB4MDAwMDAwMjAsMHgwMDA1MDBjNCwKLQkweDAw
MDAwMDA2LDB4MDAwMDAwNDUsMHgwMDAwMDA0NCwweDAwMDAwMDIyLDB4MDAwMzAwM2UsMHgwMDAw
MDA0MiwweDAwMDAwMDQ1LDB4MDAwMzAwM2UsCi0JMHgwMDAwMDA0NiwweDAwMDAwMDI1LDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDQ3LDB4MDAwMDAwNDYsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LAotCTB4MDAwMDAwNDgsMHgwMDAwMDA0MiwweDAwMDUwMGM0LDB4MDAwMDAwMDYsMHgwMDAw
MDA0OSwweDAwMDAwMDQ3LDB4MDAwMDAwNDgsMHgwMDA0MDBjOCwKLQkweDAwMDAwMDA2LDB4MDAw
MDAwNGEsMHgwMDAwMDA0OSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0YiwweDAwMDAw
MDNhLDB4MDAwNTAwYzcsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDRjLDB4MDAwMDAwNGIsMHgwMDAw
MDA0YSwweDAwMDMwMDNlLDB4MDAwMDAwM2EsMHgwMDAwMDA0YywweDAwMDQwMDNkLAotCTB4MDAw
MDAwMDYsMHgwMDAwMDA0ZCwweDAwMDAwMDBlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MDRlLDB4MDAwMDAwNDIsMHgwMDA1MDBjNCwKLQkweDAwMDAwMDA2LDB4MDAwMDAwNGYsMHgwMDAw
MDA0ZCwweDAwMDAwMDRlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDUwLDB4MDAwMDAw
M2EsCi0JMHgwMDA1MDBjNSwweDAwMDAwMDA2LDB4MDAwMDAwNTEsMHgwMDAwMDA1MCwweDAwMDAw
MDRmLDB4MDAwMzAwM2UsMHgwMDAwMDAzYSwweDAwMDAwMDUxLAotCTB4MDAwNDAwM2QsMHgwMDAw
MDAwNiwweDAwMDAwMDUyLDB4MDAwMDAwMmYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAw
NTMsMHgwMDAwMDAzYSwKLQkweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDA1NCwweDAwMDAw
MDNlLDB4MDAwMDAwMTcsMHgwMDAwMDA1MiwweDAwMDMwMDNlLDB4MDAwMDAwNTQsCi0JMHgwMDAw
MDA1MywweDAwMDEwMGZkLDB4MDAwMTAwMzgKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDAxOCwweDAwMDAwMDA5LDB4MDAwNTAwYzIsMHgwMDAwMDAwNiwweDAwMDAwMDFhLDB4MDAwMDAw
MTgsCisJMHgwMDAwMDAxOSwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDAxYywweDAwMDAw
MDE1LDB4MDAwMDAwMTcsMHgwMDAwMDAxYSwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAw
MDAxZCwweDAwMDAwMDFjLDB4MDAwMzAwM2UsMHgwMDAwMDAxMSwweDAwMDAwMDFkLDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDFmLDB4MDAwMDAwMDksMHgwMDA1MDBjNywweDAwMDAw
MDA2LDB4MDAwMDAwMjEsMHgwMDAwMDAxZiwweDAwMDAwMDIwLDB4MDAwNTAwYzQsCisJMHgwMDAw
MDAwNiwweDAwMDAwMDIzLDB4MDAwMDAwMjEsMHgwMDAwMDAyMiwweDAwMDMwMDNlLDB4MDAwMDAw
MWUsMHgwMDAwMDAyMywweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAwMDAyNSwweDAwMDAw
MDExLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDI2LDB4MDAwMDAwMWUsMHgwMDA1MDBj
MiwKKwkweDAwMDAwMDA2LDB4MDAwMDAwMjcsMHgwMDAwMDAyNSwweDAwMDAwMDI2LDB4MDAwNTAw
YzcsMHgwMDAwMDAwNiwweDAwMDAwMDI5LDB4MDAwMDAwMjcsCisJMHgwMDAwMDAyOCwweDAwMDMw
MDNlLDB4MDAwMDAwMjQsMHgwMDAwMDAyOSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAy
YSwweDAwMDAwMDI0LAorCTB4MDAwMjAwZmUsMHgwMDAwMDAyYSwweDAwMDEwMDM4LDB4MDAwNTAw
MzYsMHgwMDAwMDAwMiwweDAwMDAwMDBmLDB4MDAwMDAwMDAsMHgwMDAwMDAwYywKKwkweDAwMDMw
MDM3LDB4MDAwMDAwMDcsMHgwMDAwMDAwZCwweDAwMDMwMDM3LDB4MDAwMDAwMDcsMHgwMDAwMDAw
ZSwweDAwMDIwMGY4LDB4MDAwMDAwMTAsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAw
MmQsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAzNywweDAwMDAwMDA3
LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDNmLDB4MDAwMDAwMDcsMHgwMDA1MDA0
MSwweDAwMDAwMDMxLDB4MDAwMDAwMzIsMHgwMDAwMDAzMCwKKwkweDAwMDAwMDE5LDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwweDAwMDAwMDMzLDB4MDAwMDAwMzIsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwMzQsCisJMHgwMDAwMDAwZCwweDAwMDUwMGMyLDB4MDAwMDAwMDYsMHgwMDAwMDAz
NSwweDAwMDAwMDM0LDB4MDAwMDAwMTksMHgwMDA1MDA4MCwweDAwMDAwMDA2LAorCTB4MDAwMDAw
MzYsMHgwMDAwMDAzMywweDAwMDAwMDM1LDB4MDAwMzAwM2UsMHgwMDAwMDAyZCwweDAwMDAwMDM2
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDNjLDB4MDAwMDAwMmQsMHgwMDA2MDA0
MSwweDAwMDAwMDFiLDB4MDAwMDAwM2QsMHgwMDAwMDAzYiwweDAwMDAwMDE3LDB4MDAwMDAwM2Ms
CisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwM2UsMHgwMDAwMDAzZCwweDAwMDMwMDNl
LDB4MDAwMDAwMzcsMHgwMDAwMDAzZSwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAwMDA0
MCwweDAwMDAwMDBkLDB4MDAwNTAwYzcsMHgwMDAwMDAwNiwweDAwMDAwMDQxLDB4MDAwMDAwNDAs
MHgwMDAwMDAyMCwKKwkweDAwMDUwMGM0LDB4MDAwMDAwMDYsMHgwMDAwMDA0MiwweDAwMDAwMDQx
LDB4MDAwMDAwMjIsMHgwMDAzMDAzZSwweDAwMDAwMDNmLDB4MDAwMDAwNDIsCisJMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwNDQsMHgwMDAwMDAzZiwweDAwMDUwMGM0LDB4MDAwMDAwMTYs
MHgwMDAwMDA0NSwweDAwMDAwMDQzLAorCTB4MDAwMDAwNDQsMHgwMDA0MDBjOCwweDAwMDAwMDE2
LDB4MDAwMDAwNDYsMHgwMDAwMDA0NSwweDAwMDQwMDdjLDB4MDAwMDAwMDYsMHgwMDAwMDA0NywK
KwkweDAwMDAwMDQ2LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDQ4LDB4MDAwMDAwMzcs
MHgwMDA1MDBjNywweDAwMDAwMDA2LDB4MDAwMDAwNDksCisJMHgwMDAwMDA0OCwweDAwMDAwMDQ3
LDB4MDAwMzAwM2UsMHgwMDAwMDAzNywweDAwMDAwMDQ5LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDRhLAorCTB4MDAwMDAwMGUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNGIs
MHgwMDAwMDAzZiwweDAwMDUwMGM0LDB4MDAwMDAwMDYsMHgwMDAwMDA0YywKKwkweDAwMDAwMDRh
LDB4MDAwMDAwNGIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNGQsMHgwMDAwMDAzNyww
eDAwMDUwMGM1LDB4MDAwMDAwMDYsCisJMHgwMDAwMDA0ZSwweDAwMDAwMDRkLDB4MDAwMDAwNGMs
MHgwMDAzMDAzZSwweDAwMDAwMDM3LDB4MDAwMDAwNGUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAor
CTB4MDAwMDAwNGYsMHgwMDAwMDAyZCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA1MCww
eDAwMDAwMDM3LDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwKKwkweDAwMDAwMDUxLDB4MDAwMDAwM2Is
MHgwMDAwMDAxNywweDAwMDAwMDRmLDB4MDAwMzAwM2UsMHgwMDAwMDA1MSwweDAwMDAwMDUwLDB4
MDAwMTAwZmQsCisJMHgwMDAxMDAzOAogfTsKIAogLy8gR2VuZXJhdGVkIGZyb206CkBAIC0yNDYs
MTMgKzI0MywxMSBAQCBjb25zdCB1aW50MzJfdCBrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9v
cF9jb21wXzAwMDAwMDAwW10gPSB7CiAvLyB1aW50IEdldEluZGV4VmFsdWUodWludCBpbmRleCkK
IC8vIHsKIC8vCi0vLyAgICAgdWludCBzcmNCbG9jayA9IHNyY0RhdGFbaW5kZXggPj4gMV07Cisv
LyAgICAgdWludCBzcmNCbG9jayA9IHNyY0RhdGFbaW5kZXggPj4gMl07CiAvLwotLy8gICAgIHVp
bnQgc3JjU2hpZnQgPShpbmRleCAmIDB4MSk8PCA0OworLy8gICAgIHVpbnQgc3JjU2hpZnQgPSgo
aW5kZXggJiAweDMpPDwgMyk7CiAvLwotLy8gICAgIHVpbnQgc3JjTWFzayA9IDB4ZmZmZjsKLS8v
Ci0vLyAgICAgdWludCB2YWx1ZSA9KHNyY0Jsb2NrID4+IHNyY1NoaWZ0KSYgc3JjTWFzazsKKy8v
ICAgICB1aW50IHZhbHVlID0oc3JjQmxvY2sgPj4gc3JjU2hpZnQpJiAweGZmOwogLy8gICAgIHJl
dHVybiB2YWx1ZTsKIC8vCiAvLyB9CkBAIC0yNjAsMTQgKzI1NSwxMyBAQCBjb25zdCB1aW50MzJf
dCBrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAwW10gPSB7CiAvLyB2
b2lkIFB1dEluZGV4VmFsdWUodWludCBpbmRleCwgdWludCB2YWx1ZSkKIC8vIHsKIC8vCi0vLyAg
ICAgdWludCBkc3RJbmRleCA9IGRzdE9mZnNldERpdjQgKyhpbmRleCA+PiAxKTsKKy8vICAgICB1
aW50IGRzdEluZGV4ID0gZHN0T2Zmc2V0RGl2NCArKGluZGV4ID4+IDIpOwogLy8KIC8vICAgICB1
aW50IHNyY0Jsb2NrID0gZHN0RGF0YVtkc3RJbmRleF07CiAvLwotLy8gICAgIHVpbnQgc3JjU2hp
ZnQgPShpbmRleCAmIDB4MSk8PCA0OwotLy8gICAgIHVpbnQgc3JjTWFzayA9IDB4ZmZmZjsKKy8v
ICAgICB1aW50IHNyY1NoaWZ0ID0oKGluZGV4ICYgMHgzKTw8IDMpOwogLy8KLS8vICAgICBzcmNC
bG9jayAmPSB+KHNyY01hc2sgPDwgc3JjU2hpZnQpOworLy8gICAgIHNyY0Jsb2NrICY9IH4oMHhm
ZiA8PCBzcmNTaGlmdCk7CiAvLwogLy8gICAgIHNyY0Jsb2NrIHw9IHZhbHVlIDw8IHNyY1NoaWZ0
OwogLy8KQEAgLTI5Myw5ICsyODcsNyBAQCBjb25zdCB1aW50MzJfdCBrQ29udmVydEluZGV4SW5k
aXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAwW10gPSB7CiAvLyAgICAgd2hpbGUoaW5kaWNlc1Jl
bWFpbmluZyA+IDApCiAvLyAgICAgewogLy8gICAgICAgICB1aW50IGluZGV4VmFsdWU7Ci0vLwot
Ly8gICAgICAgICB1aW50IHJlc3RhcnRWYWx1ZSA9IDB4ZmZmZjsKLS8vCisvLyAgICAgICAgIHVp
bnQgcmVzdGFydFZhbHVlID0gMHhmZjsKIC8vICAgICAgICAgaW5kZXhWYWx1ZSA9IEdldEluZGV4
VmFsdWUoc3JjSWR4ICsrKTsKIC8vICAgICAgICAgaWYobGluZVNpemUgPT0gMCkKIC8vICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNv
bXAuMDAwMDAwMDEuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNv
bXAuMDAwMDAwMDEuaW5jCmluZGV4IGRmMjI5Yzc4ZDg2N2MxMDExZjgxN2I0OWFiY2VlMWQyMWUz
N2ZhZjguLmU3NWZmNDFmYWFkM2JiNGFhNjg5NTFmOGNiYjdkNzA1MTU3MGU0NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
c2hhZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAxLmlu
YworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAw
MS5pbmMKQEAgLTEsMTc1ICsxLDIwMSBAQAogCS8vIDcuMTIuMzIyNgogCSAjcHJhZ21hIG9uY2UK
IGNvbnN0IHVpbnQzMl90IGtDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBfMDAwMDAw
MDFbXSA9IHsKLQkweDA3MjMwMjAzLDB4MDAwMTAwMDAsMHgwMDA4MDAwNywweDAwMDAwMGM5LDB4
MDAwMDAwMDAsMHgwMDAyMDAxMSwweDAwMDAwMDAxLDB4MDAwNjAwMGIsCisJMHgwNzIzMDIwMyww
eDAwMDEwMDAwLDB4MDAwODAwMDcsMHgwMDAwMDBlYywweDAwMDAwMDAwLDB4MDAwMjAwMTEsMHgw
MDAwMDAwMSwweDAwMDYwMDBiLAogCTB4MDAwMDAwMDEsMHg0YzUzNGM0NywweDY0NzQ3MzJlLDB4
MzAzNTM0MmUsMHgwMDAwMDAwMCwweDAwMDMwMDBlLDB4MDAwMDAwMDAsMHgwMDAwMDAwMSwKLQkw
eDAwMDYwMDBmLDB4MDAwMDAwMDUsMHgwMDAwMDAwNCwweDZlNjk2MTZkLDB4MDAwMDAwMDAsMHgw
MDAwMDA0MywweDAwMDYwMDEwLDB4MDAwMDAwMDQsCisJMHgwMDA2MDAwZiwweDAwMDAwMDA1LDB4
MDAwMDAwMDQsMHg2ZTY5NjE2ZCwweDAwMDAwMDAwLDB4MDAwMDAwNjksMHgwMDA2MDAxMCwweDAw
MDAwMDA0LAogCTB4MDAwMDAwMTEsMHgwMDAwMDA0MCwweDAwMDAwMDAxLDB4MDAwMDAwMDEsMHgw
MDAzMDAwMywweDAwMDAwMDAyLDB4MDAwMDAxYzIsMHgwMDA0MDAwNSwKIAkweDAwMDAwMDA0LDB4
NmU2OTYxNmQsMHgwMDAwMDAwMCwweDAwMDcwMDA1LDB4MDAwMDAwMGEsMHg0OTc0NjU0NywweDc4
NjU2NDZlLDB4NzU2YzYxNTYsCiAJMHgzMTc1Mjg2NSwweDAwMDAwMDNiLDB4MDAwNDAwMDUsMHgw
MDAwMDAwOSwweDY1NjQ2ZTY5LDB4MDAwMDAwNzgsMHgwMDA4MDAwNSwweDAwMDAwMDBmLAogCTB4
NDk3NDc1NTAsMHg3ODY1NjQ2ZSwweDc1NmM2MTU2LDB4MzE3NTI4NjUsMHgzYjMxNzUzYiwweDAw
MDAwMDAwLDB4MDAwNDAwMDUsMHgwMDAwMDAwZCwKLQkweDY1NjQ2ZTY5LDB4MDAwMDAwNzgsMHgw
MDA0MDAwNSwweDAwMDAwMDBlLDB4NzU2YzYxNzYsMHgwMDAwMDA2NSwweDAwMDMwMDA1LDB4MDAw
MDAwMTIsCi0JMHgwMDYzNzI3MywweDAwMDUwMDA2LDB4MDAwMDAwMTIsMHgwMDAwMDAwMCwweDQ0
NjM3MjczLDB4MDA2MTc0NjEsMHgwMDAzMDAwNSwweDAwMDAwMDE0LAotCTB4MDAwMDAwMDAsMHgw
MDAzMDAwNSwweDAwMDAwMDFlLDB4MDA3NDczNjQsMHgwMDA1MDAwNiwweDAwMDAwMDFlLDB4MDAw
MDAwMDAsMHg0NDc0NzM2NCwKLQkweDAwNjE3NDYxLDB4MDAwMzAwMDUsMHgwMDAwMDAyMCwweDAw
MDAwMDAwLDB4MDAwNjAwMDUsMHgwMDAwMDAyMSwweDY4NzM3NTUwLDB4NzM2ZTZmNDMsCi0JMHg3
NDZlNjE3NCwweDAwMDAwMDczLDB4MDAwNzAwMDYsMHgwMDAwMDAyMSwweDAwMDAwMDAwLDB4NGY2
NDZkNjMsMHg2NTczNjY2NiwweDc2Njk0NDc0LAotCTB4MDAwMDAwMzQsMHgwMDA4MDAwNiwweDAw
MDAwMDIxLDB4MDAwMDAwMDEsMHg0Mzc0NzM2NCwweDY2NGY2NDZkLDB4NzQ2NTczNjYsMHgzNDc2
Njk0NCwKLQkweDAwMDAwMDAwLDB4MDAwNzAwMDYsMHgwMDAwMDAyMSwweDAwMDAwMDAyLDB4NGY3
NDczNjQsMHg2NTczNjY2NiwweDc2Njk0NDc0LDB4MDAwMDAwMzQsCi0JMHgwMDA4MDAwNiwweDAw
MDAwMDIxLDB4MDAwMDAwMDMsMHg2NTUyNzM2OSwweDcyNjE3NDczLDB4NjE2ZTQ1NzQsMHg2NDY1
NmM2MiwweDAwMDAwMDAwLAotCTB4MDAwMzAwMDUsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAw
NTAwMDUsMHgwMDAwMDAyZCwweDY1NjQ2ZTY5LDB4NzU2ZjQzNzgsMHgwMDAwNzQ2ZSwKLQkweDAw
MDMwMDA1LDB4MDAwMDAwMmYsMHgwMDY0NmQ2MywweDAwMDUwMDA2LDB4MDAwMDAwMmYsMHgwMDAw
MDAwMCwweDQ0NjQ2ZDYzLDB4MDA2MTc0NjEsCi0JMHgwMDAzMDAwNSwweDAwMDAwMDMxLDB4MDAw
MDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDM2LDB4NzM3MjY5NjYsMHg2NDZlNDk3NCwweDAwMDA3
ODY1LAotCTB4MDAwNTAwMDUsMHgwMDAwMDAzZCwweDQ5NjQ2ZTY1LDB4Nzg2NTY0NmUsMHgwMDAw
MDAwMCwweDAwMDgwMDA1LDB4MDAwMDAwNDMsMHg0NzVmNmM2NywKLQkweDYxNjI2ZjZjLDB4NzY2
ZTQ5NmMsMHg3NDYxNjM2ZiwweDQ5NmU2ZjY5LDB4MDAwMDAwNDQsMHgwMDA2MDAwNSwweDAwMDAw
MDRlLDB4NmI3MjZmNzcsCi0JMHg0MzY3NmU2OSwweDc0NmU3NTZmLDB4MDAwMDAwMDAsMHgwMDA0
MDAwNSwweDAwMDAwMDRmLDB4NDk2MzcyNzMsMHgwMDAwNzg2NCwweDAwMDcwMDA1LAotCTB4MDAw
MDAwNTEsMHg2OTY0NmU2OSwweDUyNzM2NTYzLDB4Njk2MTZkNjUsMHg2NzZlNjk2ZSwweDAwMDAw
MDAwLDB4MDAwNTAwMDUsMHgwMDAwMDA1MywKLQkweDY1NmU2OTZjLDB4NjU3YTY5NTMsMHgwMDAw
MDAwMCwweDAwMDYwMDA1LDB4MDAwMDAwNTQsMHg3MzcyNjk2NiwweDY0NmU0OTc0LDB4NjE1Njc4
NjUsCi0JMHgwMDY1NzU2YywweDAwMDYwMDA1LDB4MDAwMDAwNWMsMHg3NDczNjU3MiwweDU2NzQ3
MjYxLDB4NjU3NTZjNjEsMHgwMDAwMDAwMCwweDAwMDUwMDA1LAotCTB4MDAwMDAwNWUsMHg2NTY0
NmU2OSwweDZjNjE1Njc4LDB4MDAwMDY1NzUsMHgwMDA0MDAwNSwweDAwMDAwMDYyLDB4NjE3MjYx
NzAsMHgwMDAwMDA2ZCwKLQkweDAwMDQwMDA1LDB4MDAwMDAwN2IsMHg2MTcyNjE3MCwweDAwMDAw
MDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA3YywweDYxNzI2MTcwLDB4MDAwMDAwNmQsCi0JMHgwMDA0
MDAwNSwweDAwMDAwMDg1LDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAw
ODYsMHg2MTcyNjE3MCwweDAwMDAwMDZkLAotCTB4MDAwNDAwMDUsMHgwMDAwMDA4YSwweDYxNzI2
MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMDhjLDB4NjE3MjYxNzAsMHgwMDAwMDA2
ZCwKLQkweDAwMDQwMDA1LDB4MDAwMDAwOTcsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAw
MDUsMHgwMDAwMDA5OSwweDYxNzI2MTcwLDB4MDAwMDAwNmQsCi0JMHgwMDA0MDAwNSwweDAwMDAw
MDlmLDB4NDM3NDczNjQsMHgwMDAwNjQ2ZCwweDAwMDYwMDA2LDB4MDAwMDAwOWYsMHgwMDAwMDAw
MCwweDQzNzQ3MzY0LAotCTB4NjE0NDY0NmQsMHgwMDAwNjE3NCwweDAwMDMwMDA1LDB4MDAwMDAw
YTEsMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwMTEsMHgwMDAwMDAwNiwKLQkweDAwMDAw
MDA0LDB4MDAwNDAwNDgsMHgwMDAwMDAxMiwweDAwMDAwMDAwLDB4MDAwMDAwMTgsMHgwMDA1MDA0
OCwweDAwMDAwMDEyLDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAw
NDcsMHgwMDAwMDAxMiwweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDAxNCwweDAwMDAwMDIy
LAotCTB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDE0LDB4MDAwMDAwMjEsMHgwMDAwMDAw
MSwweDAwMDQwMDQ3LDB4MDAwMDAwMWQsMHgwMDAwMDAwNiwKLQkweDAwMDAwMDA0LDB4MDAwNTAw
NDgsMHgwMDAwMDAxZSwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3
LDB4MDAwMDAwMWUsCi0JMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAwMjAsMHgwMDAwMDAy
MiwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAyMCwweDAwMDAwMDIxLAotCTB4MDAwMDAw
MDAsMHgwMDA1MDA0OCwweDAwMDAwMDIxLDB4MDAwMDAwMDAsMHgwMDAwMDAyMywweDAwMDAwMDAw
LDB4MDAwNTAwNDgsMHgwMDAwMDAyMSwKLQkweDAwMDAwMDAxLDB4MDAwMDAwMjMsMHgwMDAwMDAw
NCwweDAwMDUwMDQ4LDB4MDAwMDAwMjEsMHgwMDAwMDAwMiwweDAwMDAwMDIzLDB4MDAwMDAwMDgs
Ci0JMHgwMDA1MDA0OCwweDAwMDAwMDIxLDB4MDAwMDAwMDMsMHgwMDAwMDAyMywweDAwMDAwMDBj
LDB4MDAwMzAwNDcsMHgwMDAwMDAyMSwweDAwMDAwMDAyLAotCTB4MDAwNDAwNDcsMHgwMDAwMDAy
ZSwweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgwMDA0MDA0OCwweDAwMDAwMDJmLDB4MDAwMDAwMDAs
MHgwMDAwMDAxOCwKLQkweDAwMDUwMDQ4LDB4MDAwMDAwMmYsMHgwMDAwMDAwMCwweDAwMDAwMDIz
LDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAwMDAwMDJmLDB4MDAwMDAwMDMsCi0JMHgwMDA0MDA0
NywweDAwMDAwMDMxLDB4MDAwMDAwMjIsMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwMzEs
MHgwMDAwMDAyMSwweDAwMDAwMDAyLAotCTB4MDAwNDAwNDcsMHgwMDAwMDA0MywweDAwMDAwMDBi
LDB4MDAwMDAwMWMsMHgwMDA0MDA0NywweDAwMDAwMDllLDB4MDAwMDAwMDYsMHgwMDAwMDAwNCwK
LQkweDAwMDUwMDQ4LDB4MDAwMDAwOWYsMHgwMDAwMDAwMCwweDAwMDAwMDIzLDB4MDAwMDAwMDAs
MHgwMDAzMDA0NywweDAwMDAwMDlmLDB4MDAwMDAwMDMsCi0JMHgwMDA0MDA0NywweDAwMDAwMGEx
LDB4MDAwMDAwMjIsMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwYTEsMHgwMDAwMDAyMSww
eDAwMDAwMDAzLAotCTB4MDAwNDAwNDcsMHgwMDAwMDBjOCwweDAwMDAwMDBiLDB4MDAwMDAwMTks
MHgwMDAyMDAxMywweDAwMDAwMDAyLDB4MDAwMzAwMjEsMHgwMDAwMDAwMywKLQkweDAwMDAwMDAy
LDB4MDAwNDAwMTUsMHgwMDAwMDAwNiwweDAwMDAwMDIwLDB4MDAwMDAwMDAsMHgwMDA0MDAyMCww
eDAwMDAwMDA3LDB4MDAwMDAwMDcsCi0JMHgwMDAwMDAwNiwweDAwMDQwMDIxLDB4MDAwMDAwMDgs
MHgwMDAwMDAwNiwweDAwMDAwMDA3LDB4MDAwNTAwMjEsMHgwMDAwMDAwYywweDAwMDAwMDAyLAot
CTB4MDAwMDAwMDcsMHgwMDAwMDAwNywweDAwMDMwMDFkLDB4MDAwMDAwMTEsMHgwMDAwMDAwNiww
eDAwMDMwMDFlLDB4MDAwMDAwMTIsMHgwMDAwMDAxMSwKLQkweDAwMDQwMDIwLDB4MDAwMDAwMTMs
MHgwMDAwMDAwMiwweDAwMDAwMDEyLDB4MDAwNDAwM2IsMHgwMDAwMDAxMywweDAwMDAwMDE0LDB4
MDAwMDAwMDIsCi0JMHgwMDA0MDAxNSwweDAwMDAwMDE1LDB4MDAwMDAwMjAsMHgwMDAwMDAwMSww
eDAwMDQwMDJiLDB4MDAwMDAwMTUsMHgwMDAwMDAxNiwweDAwMDAwMDAwLAotCTB4MDAwNDAwMjAs
MHgwMDAwMDAxOCwweDAwMDAwMDAyLDB4MDAwMDAwMDYsMHgwMDAzMDAxZCwweDAwMDAwMDFkLDB4
MDAwMDAwMDYsMHgwMDAzMDAxZSwKLQkweDAwMDAwMDFlLDB4MDAwMDAwMWQsMHgwMDA0MDAyMCww
eDAwMDAwMDFmLDB4MDAwMDAwMDIsMHgwMDAwMDAxZSwweDAwMDQwMDNiLDB4MDAwMDAwMWYsCi0J
MHgwMDAwMDAyMCwweDAwMDAwMDAyLDB4MDAwNjAwMWUsMHgwMDAwMDAyMSwweDAwMDAwMDA2LDB4
MDAwMDAwMDYsMHgwMDAwMDAwNiwweDAwMDAwMDA2LAotCTB4MDAwNDAwMjAsMHgwMDAwMDAyMiww
eDAwMDAwMDA5LDB4MDAwMDAwMjEsMHgwMDA0MDAzYiwweDAwMDAwMDIyLDB4MDAwMDAwMjMsMHgw
MDAwMDAwOSwKLQkweDAwMDQwMDJiLDB4MDAwMDAwMTUsMHgwMDAwMDAyNCwweDAwMDAwMDAyLDB4
MDAwNDAwMjAsMHgwMDAwMDAyNSwweDAwMDAwMDA5LDB4MDAwMDAwMDYsCi0JMHgwMDAzMDAxZCww
eDAwMDAwMDJlLDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAwMDAwMDJmLDB4MDAwMDAwMmUsMHgw
MDA0MDAyMCwweDAwMDAwMDMwLAotCTB4MDAwMDAwMDIsMHgwMDAwMDAyZiwweDAwMDQwMDNiLDB4
MDAwMDAwMzAsMHgwMDAwMDAzMSwweDAwMDAwMDAyLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwKLQkw
eDAwMDAwMDM5LDB4MDAwMDAwMDIsMHgwMDA0MDAxNywweDAwMDAwMDQxLDB4MDAwMDAwMDYsMHgw
MDAwMDAwMywweDAwMDQwMDIwLDB4MDAwMDAwNDIsCi0JMHgwMDAwMDAwMSwweDAwMDAwMDQxLDB4
MDAwNDAwM2IsMHgwMDAwMDA0MiwweDAwMDAwMDQzLDB4MDAwMDAwMDEsMHgwMDA0MDAyYiwweDAw
MDAwMDA2LAotCTB4MDAwMDAwNDQsMHgwMDAwMDAwMCwweDAwMDQwMDIwLDB4MDAwMDAwNDUsMHgw
MDAwMDAwMSwweDAwMDAwMDA2LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwKLQkweDAwMDAwMDQ4LDB4
MDAwMDAwMDEsMHgwMDAyMDAxNCwweDAwMDAwMDQ5LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAw
MDAwMDVkLDB4ZmZmZmZmZmYsCi0JMHgwMDA0MDAyYiwweDAwMDAwMDE1LDB4MDAwMDAwNjAsMHgw
MDAwMDAwMSwweDAwMDQwMDJiLDB4MDAwMDAwMTUsMHgwMDAwMDA2YiwweDAwMDAwMDAzLAotCTB4
MDAwMzAwMWQsMHgwMDAwMDA5ZSwweDAwMDAwMDA2LDB4MDAwMzAwMWUsMHgwMDAwMDA5ZiwweDAw
MDAwMDllLDB4MDAwNDAwMjAsMHgwMDAwMDBhMCwKLQkweDAwMDAwMDAyLDB4MDAwMDAwOWYsMHgw
MDA0MDAzYiwweDAwMDAwMGEwLDB4MDAwMDAwYTEsMHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAw
MDAwMDYsCi0JMHgwMDAwMDBiNSwweDAwMDAwMDAzLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAw
MDAwMGJmLDB4MDAwMDAwMDQsMHgwMDA0MDAyYiwweDAwMDAwMDA2LAotCTB4MDAwMDAwYzcsMHgw
MDAwMDA0MCwweDAwMDYwMDJjLDB4MDAwMDAwNDEsMHgwMDAwMDBjOCwweDAwMDAwMGM3LDB4MDAw
MDAwNDgsMHgwMDAwMDA0OCwKLQkweDAwMDUwMDM2LDB4MDAwMDAwMDIsMHgwMDAwMDAwNCwweDAw
MDAwMDAwLDB4MDAwMDAwMDMsMHgwMDAyMDBmOCwweDAwMDAwMDA1LDB4MDAwNDAwM2IsCi0JMHgw
MDAwMDAwNywweDAwMDAwMDJkLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAw
MDAwMzYsMHgwMDAwMDAwNywweDAwMDQwMDNiLAotCTB4MDAwMDAwMDcsMHgwMDAwMDAzZCwweDAw
MDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDRlLDB4MDAwMDAwMDcsMHgwMDA0
MDAzYiwKLQkweDAwMDAwMDA3LDB4MDAwMDAwNGYsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAw
MDAwMDcsMHgwMDAwMDA1MSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsCi0JMHgwMDAwMDAwNywweDAw
MDAwMDUzLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNTQsMHgwMDAw
MDAwNywweDAwMDQwMDNiLAotCTB4MDAwMDAwMDcsMHgwMDAwMDA1YywweDAwMDAwMDA3LDB4MDAw
NDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDVlLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKLQkweDAw
MDAwMDA3LDB4MDAwMDAwNjIsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAw
MDA3YiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsCi0JMHgwMDAwMDAwNywweDAwMDAwMDdjLDB4MDAw
MDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwODUsMHgwMDAwMDAwNywweDAwMDQw
MDNiLAotCTB4MDAwMDAwMDcsMHgwMDAwMDA4NiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAw
MDAwNywweDAwMDAwMDhhLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKLQkweDAwMDAwMDA3LDB4MDAw
MDAwOGMsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA5NywweDAwMDAw
MDA3LDB4MDAwNDAwM2IsCi0JMHgwMDAwMDAwNywweDAwMDAwMDk5LDB4MDAwMDAwMDcsMHgwMDA1
MDA0MSwweDAwMDAwMDI1LDB4MDAwMDAwMzIsMHgwMDAwMDAyMywweDAwMDAwMDE2LAotCTB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDMzLDB4MDAwMDAwMzIsMHgwMDA2MDA0MSwweDAwMDAw
MDE4LDB4MDAwMDAwMzQsMHgwMDAwMDAzMSwKLQkweDAwMDAwMDE2LDB4MDAwMDAwMzMsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMzUsMHgwMDAwMDAzNCwweDAwMDMwMDNlLDB4MDAwMDAw
MmQsCi0JMHgwMDAwMDAzNSwweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDAzNywweDAwMDAw
MDIzLDB4MDAwMDAwMTYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwMzgsMHgwMDAw
MDAzNywweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDAzYSwweDAwMDAwMDM4LDB4MDAwMDAw
MzksMHgwMDA2MDA0MSwKLQkweDAwMDAwMDE4LDB4MDAwMDAwM2IsMHgwMDAwMDAzMSwweDAwMDAw
MDE2LDB4MDAwMDAwM2EsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwM2MsCi0JMHgwMDAw
MDAzYiwweDAwMDMwMDNlLDB4MDAwMDAwMzYsMHgwMDAwMDAzYywweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDAzZSwweDAwMDAwMDM2LAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MDNmLDB4MDAwMDAwMmQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwNDAsMHgwMDAwMDAz
ZSwKLQkweDAwMDAwMDNmLDB4MDAwMzAwM2UsMHgwMDAwMDAzZCwweDAwMDAwMDQwLDB4MDAwNTAw
NDEsMHgwMDAwMDA0NSwweDAwMDAwMDQ2LDB4MDAwMDAwNDMsCi0JMHgwMDAwMDA0NCwweDAwMDQw
MDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0NywweDAwMDAwMDQ2LDB4MDAwNTAwYWUsMHgwMDAwMDA0
OSwweDAwMDAwMDRhLAotCTB4MDAwMDAwNDcsMHgwMDAwMDA0OCwweDAwMDMwMGY3LDB4MDAwMDAw
NGMsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwNGEsMHgwMDAwMDA0YiwKLQkweDAwMDAw
MDRjLDB4MDAwMjAwZjgsMHgwMDAwMDA0YiwweDAwMDEwMGZkLDB4MDAwMjAwZjgsMHgwMDAwMDA0
YywweDAwMDMwMDNlLDB4MDAwMDAwNGUsCi0JMHgwMDAwMDA0NCwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDA1MCwweDAwMDAwMDM2LDB4MDAwMzAwM2UsMHgwMDAwMDA0ZiwweDAwMDAwMDUw
LAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDUyLDB4MDAwMDAwMmQsMHgwMDAzMDAz
ZSwweDAwMDAwMDUxLDB4MDAwMDAwNTIsMHgwMDAzMDAzZSwKLQkweDAwMDAwMDUzLDB4MDAwMDAw
NDQsMHgwMDAzMDAzZSwweDAwMDAwMDU0LDB4MDAwMDAwNDQsMHgwMDAyMDBmOSwweDAwMDAwMDU1
LDB4MDAwMjAwZjgsCi0JMHgwMDAwMDA1NSwweDAwMDQwMGY2LDB4MDAwMDAwNTcsMHgwMDAwMDA1
OCwweDAwMDAwMDAwLDB4MDAwMjAwZjksMHgwMDAwMDA1OSwweDAwMDIwMGY4LAotCTB4MDAwMDAw
NTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNWEsMHgwMDAwMDA1MSwweDAwMDUwMGFj
LDB4MDAwMDAwNDksMHgwMDAwMDA1YiwKLQkweDAwMDAwMDVhLDB4MDAwMDAwNDQsMHgwMDA0MDBm
YSwweDAwMDAwMDViLDB4MDAwMDAwNTYsMHgwMDAwMDA1NywweDAwMDIwMGY4LDB4MDAwMDAwNTYs
Ci0JMHgwMDAzMDAzZSwweDAwMDAwMDVjLDB4MDAwMDAwNWQsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwNWYsMHgwMDAwMDA0ZiwweDAwMDUwMDgwLAotCTB4MDAwMDAwMDYsMHgwMDAwMDA2
MSwweDAwMDAwMDVmLDB4MDAwMDAwNjAsMHgwMDAzMDAzZSwweDAwMDAwMDRmLDB4MDAwMDAwNjEs
MHgwMDAzMDAzZSwKLQkweDAwMDAwMDYyLDB4MDAwMDAwNWYsMHgwMDA1MDAzOSwweDAwMDAwMDA2
LDB4MDAwMDAwNjMsMHgwMDAwMDAwYSwweDAwMDAwMDYyLDB4MDAwMzAwM2UsCi0JMHgwMDAwMDA1
ZSwweDAwMDAwMDYzLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDY0LDB4MDAwMDAwNTMs
MHgwMDA1MDBhYSwweDAwMDAwMDQ5LAotCTB4MDAwMDAwNjUsMHgwMDAwMDA2NCwweDAwMDAwMDQ0
LDB4MDAwMzAwZjcsMHgwMDAwMDA2NywweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA2NSwK
LQkweDAwMDAwMDY2LDB4MDAwMDAwNjcsMHgwMDAyMDBmOCwweDAwMDAwMDY2LDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDY4LDB4MDAwMDAwNWUsCi0JMHgwMDAzMDAzZSwweDAwMDAwMDU0
LDB4MDAwMDAwNjgsMHgwMDAyMDBmOSwweDAwMDAwMDY3LDB4MDAwMjAwZjgsMHgwMDAwMDA2Nyww
eDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDA2OSwweDAwMDAwMDUxLDB4MDAwNTAwODIs
MHgwMDAwMDAwNiwweDAwMDAwMDZhLDB4MDAwMDAwNjksMHgwMDAwMDA2MCwKLQkweDAwMDMwMDNl
LDB4MDAwMDAwNTEsMHgwMDAwMDA2YSwweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDA2Yyww
eDAwMDAwMDIzLDB4MDAwMDAwNmIsCi0JMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNmQs
MHgwMDAwMDA2YywweDAwMDUwMGFhLDB4MDAwMDAwNDksMHgwMDAwMDA2ZSwweDAwMDAwMDZkLAot
CTB4MDAwMDAwNDgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNmYsMHgwMDAwMDA1ZSww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3MCwKLQkweDAwMDAwMDVjLDB4MDAwNTAwYWEs
MHgwMDAwMDA0OSwweDAwMDAwMDcxLDB4MDAwMDAwNmYsMHgwMDAwMDA3MCwweDAwMDUwMGE3LDB4
MDAwMDAwNDksCi0JMHgwMDAwMDA3MiwweDAwMDAwMDZlLDB4MDAwMDAwNzEsMHgwMDAzMDBmNyww
eDAwMDAwMDc0LDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDcyLAotCTB4MDAwMDAwNzMs
MHgwMDAwMDA4OSwweDAwMDIwMGY4LDB4MDAwMDAwNzMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwNzUsMHgwMDAwMDA1MywKLQkweDAwMDUwMGFjLDB4MDAwMDAwNDksMHgwMDAwMDA3Niww
eDAwMDAwMDc1LDB4MDAwMDAwNDgsMHgwMDAzMDBmNywweDAwMDAwMDc4LDB4MDAwMDAwMDAsCi0J
MHgwMDA0MDBmYSwweDAwMDAwMDc2LDB4MDAwMDAwNzcsMHgwMDAwMDA3OCwweDAwMDIwMGY4LDB4
MDAwMDAwNzcsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwNzksMHgwMDAwMDA0ZSww
eDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA3YSwweDAwMDAwMDc5LDB4MDAwMDAwNjAsMHgw
MDAzMDAzZSwKLQkweDAwMDAwMDRlLDB4MDAwMDAwN2EsMHgwMDAzMDAzZSwweDAwMDAwMDdiLDB4
MDAwMDAwNzksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwN2QsCi0JMHgwMDAwMDA1NCww
eDAwMDMwMDNlLDB4MDAwMDAwN2MsMHgwMDAwMDA3ZCwweDAwMDYwMDM5LDB4MDAwMDAwMDIsMHgw
MDAwMDA3ZSwweDAwMDAwMDBmLAotCTB4MDAwMDAwN2IsMHgwMDAwMDA3YywweDAwMDIwMGY5LDB4
MDAwMDAwNzgsMHgwMDAyMDBmOCwweDAwMDAwMDc4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKLQkw
eDAwMDAwMDdmLDB4MDAwMDAwNTMsMHgwMDA1MDBhYywweDAwMDAwMDQ5LDB4MDAwMDAwODAsMHgw
MDAwMDA3ZiwweDAwMDAwMDQ0LDB4MDAwMzAwZjcsCi0JMHgwMDAwMDA4MiwweDAwMDAwMDAwLDB4
MDAwNDAwZmEsMHgwMDAwMDA4MCwweDAwMDAwMDgxLDB4MDAwMDAwODIsMHgwMDAyMDBmOCwweDAw
MDAwMDgxLAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDgzLDB4MDAwMDAwNGUsMHgw
MDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwODQsMHgwMDAwMDA4MywKLQkweDAwMDAwMDYwLDB4
MDAwMzAwM2UsMHgwMDAwMDA0ZSwweDAwMDAwMDg0LDB4MDAwMzAwM2UsMHgwMDAwMDA4NSwweDAw
MDAwMDgzLDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDg3LDB4MDAwMDAwNWMsMHgw
MDAzMDAzZSwweDAwMDAwMDg2LDB4MDAwMDAwODcsMHgwMDA2MDAzOSwweDAwMDAwMDAyLAotCTB4
MDAwMDAwODgsMHgwMDAwMDAwZiwweDAwMDAwMDg1LDB4MDAwMDAwODYsMHgwMDAyMDBmOSwweDAw
MDAwMDgyLDB4MDAwMjAwZjgsMHgwMDAwMDA4MiwKLQkweDAwMDMwMDNlLDB4MDAwMDAwNTMsMHgw
MDAwMDA0NCwweDAwMDIwMGY5LDB4MDAwMDAwNzQsMHgwMDAyMDBmOCwweDAwMDAwMDg5LDB4MDAw
NDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDhiLDB4MDAwMDAwNGUsMHgwMDAzMDAzZSwweDAw
MDAwMDhhLDB4MDAwMDAwOGIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwOGQsMHgw
MDAwMDA1ZSwweDAwMDMwMDNlLDB4MDAwMDAwOGMsMHgwMDAwMDA4ZCwweDAwMDYwMDM5LDB4MDAw
MDAwMDIsMHgwMDAwMDA4ZSwKLQkweDAwMDAwMDBmLDB4MDAwMDAwOGEsMHgwMDAwMDA4YywweDAw
MDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4ZiwweDAwMDAwMDRlLDB4MDAwNTAwODAsCi0JMHgw
MDAwMDAwNiwweDAwMDAwMDkwLDB4MDAwMDAwOGYsMHgwMDAwMDA2MCwweDAwMDMwMDNlLDB4MDAw
MDAwNGUsMHgwMDAwMDA5MCwweDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDA5MSwweDAw
MDAwMDUzLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDkyLDB4MDAwMDAwOTEsMHgwMDAw
MDA2MCwKLQkweDAwMDMwMDNlLDB4MDAwMDAwNTMsMHgwMDAwMDA5MiwweDAwMDIwMGY5LDB4MDAw
MDAwNzQsMHgwMDAyMDBmOCwweDAwMDAwMDc0LDB4MDAwMjAwZjksCi0JMHgwMDAwMDA1OCwweDAw
MDIwMGY4LDB4MDAwMDAwNTgsMHgwMDAyMDBmOSwweDAwMDAwMDU1LDB4MDAwMjAwZjgsMHgwMDAw
MDA1NywweDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDA5MywweDAwMDAwMDUzLDB4MDAw
NTAwYWMsMHgwMDAwMDA0OSwweDAwMDAwMDk0LDB4MDAwMDAwOTMsMHgwMDAwMDA0OCwKLQkweDAw
MDMwMGY3LDB4MDAwMDAwOTYsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwOTQsMHgwMDAw
MDA5NSwweDAwMDAwMDk2LDB4MDAwMjAwZjgsCi0JMHgwMDAwMDA5NSwweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDA5OCwweDAwMDAwMDRlLDB4MDAwMzAwM2UsMHgwMDAwMDA5NywweDAwMDAw
MDk4LAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDlhLDB4MDAwMDAwNTQsMHgwMDAz
MDAzZSwweDAwMDAwMDk5LDB4MDAwMDAwOWEsMHgwMDA2MDAzOSwKLQkweDAwMDAwMDAyLDB4MDAw
MDAwOWIsMHgwMDAwMDAwZiwweDAwMDAwMDk3LDB4MDAwMDAwOTksMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwOWMsCi0JMHgwMDAwMDA0ZSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAw
MDA5ZCwweDAwMDAwMDljLDB4MDAwMDAwNjAsMHgwMDAzMDAzZSwweDAwMDAwMDRlLAotCTB4MDAw
MDAwOWQsMHgwMDAyMDBmOSwweDAwMDAwMDk2LDB4MDAwMjAwZjgsMHgwMDAwMDA5NiwweDAwMDUw
MDQxLDB4MDAwMDAwMjUsMHgwMDAwMDBhMiwKLQkweDAwMDAwMDIzLDB4MDAwMDAwNjAsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYTMsMHgwMDAwMDBhMiwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsCi0JMHgwMDAwMDBhNCwweDAwMDAwMDRlLDB4MDAwNjAwNDEsMHgwMDAwMDAxOCwweDAwMDAw
MGE1LDB4MDAwMDAwYTEsMHgwMDAwMDAxNiwweDAwMDAwMGEzLAotCTB4MDAwMzAwM2UsMHgwMDAw
MDBhNSwweDAwMDAwMGE0LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMGE2LDB4MDAwMDAw
MjMsMHgwMDAwMDA2MCwKLQkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhNywweDAwMDAw
MGE2LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGE4LDB4MDAwMDAwYTcsCi0JMHgwMDAw
MDA0OCwweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDBhOSwweDAwMDAwMDIzLDB4MDAwMDAw
MTYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwYWEsMHgwMDAwMDBhOSwweDAwMDUw
MDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBhYiwweDAwMDAwMGFhLDB4MDAwMDAwNDgsMHgwMDA2MDA0
MSwKLQkweDAwMDAwMDE4LDB4MDAwMDAwYWMsMHgwMDAwMDAzMSwweDAwMDAwMDE2LDB4MDAwMDAw
YWIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYWQsCi0JMHgwMDAwMDBhYywweDAwMDYw
MDQxLDB4MDAwMDAwMTgsMHgwMDAwMDBhZSwweDAwMDAwMGExLDB4MDAwMDAwMTYsMHgwMDAwMDBh
OCwweDAwMDMwMDNlLAotCTB4MDAwMDAwYWUsMHgwMDAwMDBhZCwweDAwMDUwMDQxLDB4MDAwMDAw
MjUsMHgwMDAwMDBhZiwweDAwMDAwMDIzLDB4MDAwMDAwNjAsMHgwMDA0MDAzZCwKLQkweDAwMDAw
MDA2LDB4MDAwMDAwYjAsMHgwMDAwMDBhZiwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBi
MSwweDAwMDAwMGIwLDB4MDAwMDAwMzksCi0JMHgwMDA2MDA0MSwweDAwMDAwMDE4LDB4MDAwMDAw
YjIsMHgwMDAwMDBhMSwweDAwMDAwMDE2LDB4MDAwMDAwYjEsMHgwMDAzMDAzZSwweDAwMDAwMGIy
LAotCTB4MDAwMDAwNDQsMHgwMDA1MDA0MSwweDAwMDAwMDI1LDB4MDAwMDAwYjMsMHgwMDAwMDAy
MywweDAwMDAwMDYwLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKLQkweDAwMDAwMGI0LDB4MDAwMDAw
YjMsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYjYsMHgwMDAwMDBiNCwweDAwMDAwMGI1
LDB4MDAwNTAwNDEsCi0JMHgwMDAwMDAyNSwweDAwMDAwMGI3LDB4MDAwMDAwMjMsMHgwMDAwMDAx
NiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiOCwweDAwMDAwMGI3LAotCTB4MDAwNTAw
ODAsMHgwMDAwMDAwNiwweDAwMDAwMGI5LDB4MDAwMDAwYjgsMHgwMDAwMDBiNSwweDAwMDYwMDQx
LDB4MDAwMDAwMTgsMHgwMDAwMDBiYSwKLQkweDAwMDAwMDMxLDB4MDAwMDAwMTYsMHgwMDAwMDBi
OSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiYiwweDAwMDAwMGJhLDB4MDAwNjAwNDEs
Ci0JMHgwMDAwMDAxOCwweDAwMDAwMGJjLDB4MDAwMDAwYTEsMHgwMDAwMDAxNiwweDAwMDAwMGI2
LDB4MDAwMzAwM2UsMHgwMDAwMDBiYywweDAwMDAwMGJiLAotCTB4MDAwNTAwNDEsMHgwMDAwMDAy
NSwweDAwMDAwMGJkLDB4MDAwMDAwMjMsMHgwMDAwMDA2MCwweDAwMDQwMDNkLDB4MDAwMDAwMDYs
MHgwMDAwMDBiZSwKLQkweDAwMDAwMGJkLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGMw
LDB4MDAwMDAwYmUsMHgwMDAwMDBiZiwweDAwMDUwMDQxLDB4MDAwMDAwMjUsCi0JMHgwMDAwMDBj
MSwweDAwMDAwMDIzLDB4MDAwMDAwMTYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYzIs
MHgwMDAwMDBjMSwweDAwMDUwMDgwLAotCTB4MDAwMDAwMDYsMHgwMDAwMDBjMywweDAwMDAwMGMy
LDB4MDAwMDAwYmYsMHgwMDA2MDA0MSwweDAwMDAwMDE4LDB4MDAwMDAwYzQsMHgwMDAwMDAzMSwK
LQkweDAwMDAwMDE2LDB4MDAwMDAwYzMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYzUs
MHgwMDAwMDBjNCwweDAwMDYwMDQxLDB4MDAwMDAwMTgsCi0JMHgwMDAwMDBjNiwweDAwMDAwMGEx
LDB4MDAwMDAwMTYsMHgwMDAwMDBjMCwweDAwMDMwMDNlLDB4MDAwMDAwYzYsMHgwMDAwMDBjNSww
eDAwMDEwMGZkLAotCTB4MDAwMTAwMzgsMHgwMDA1MDAzNiwweDAwMDAwMDA2LDB4MDAwMDAwMGEs
MHgwMDAwMDAwMCwweDAwMDAwMDA4LDB4MDAwMzAwMzcsMHgwMDAwMDAwNywKLQkweDAwMDAwMDA5
LDB4MDAwMjAwZjgsMHgwMDAwMDAwYiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAxNyww
eDAwMDAwMDA5LDB4MDAwNjAwNDEsCi0JMHgwMDAwMDAxOCwweDAwMDAwMDE5LDB4MDAwMDAwMTQs
MHgwMDAwMDAxNiwweDAwMDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDFhLAot
CTB4MDAwMDAwMTksMHgwMDAyMDBmZSwweDAwMDAwMDFhLDB4MDAwMTAwMzgsMHgwMDA1MDAzNiww
eDAwMDAwMDAyLDB4MDAwMDAwMGYsMHgwMDAwMDAwMCwKLQkweDAwMDAwMDBjLDB4MDAwMzAwMzcs
MHgwMDAwMDAwNywweDAwMDAwMDBkLDB4MDAwMzAwMzcsMHgwMDAwMDAwNywweDAwMDAwMDBlLDB4
MDAwMjAwZjgsCi0JMHgwMDAwMDAxMCwweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDAyNiww
eDAwMDAwMDIzLDB4MDAwMDAwMjQsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwMjcs
MHgwMDAwMDAyNiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAyOCwweDAwMDAwMDBkLDB4
MDAwNTAwODAsMHgwMDAwMDAwNiwKLQkweDAwMDAwMDI5LDB4MDAwMDAwMjcsMHgwMDAwMDAyOCww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAyYSwweDAwMDAwMDBlLDB4MDAwNjAwNDEsCi0J
MHgwMDAwMDAxOCwweDAwMDAwMDJiLDB4MDAwMDAwMjAsMHgwMDAwMDAxNiwweDAwMDAwMDI5LDB4
MDAwMzAwM2UsMHgwMDAwMDAyYiwweDAwMDAwMDJhLAotCTB4MDAwMTAwZmQsMHgwMDAxMDAzOAor
CTB4NjU2NDZlNjksMHgwMDAwMDA3OCwweDAwMDQwMDA1LDB4MDAwMDAwMGUsMHg3NTZjNjE3Niww
eDAwMDAwMDY1LDB4MDAwNTAwMDUsMHgwMDAwMDAxMSwKKwkweDQyNjM3MjczLDB4NmI2MzZmNmMs
MHgwMDAwMDAwMCwweDAwMDMwMDA1LDB4MDAwMDAwMTMsMHgwMDYzNzI3MywweDAwMDUwMDA2LDB4
MDAwMDAwMTMsCisJMHgwMDAwMDAwMCwweDQ0NjM3MjczLDB4MDA2MTc0NjEsMHgwMDAzMDAwNSww
eDAwMDAwMDE1LDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDFlLAorCTB4NTM2MzcyNzMs
MHg3NDY2Njk2OCwweDAwMDAwMDAwLDB4MDAwNDAwMDUsMHgwMDAwMDAyNCwweDc1NmM2MTc2LDB4
MDAwMDAwNjUsMHgwMDA1MDAwNSwKKwkweDAwMDAwMDJkLDB4NDk3NDczNjQsMHg3ODY1NjQ2ZSww
eDAwMDAwMDAwLDB4MDAwNjAwMDUsMHgwMDAwMDAyZSwweDY4NzM3NTUwLDB4NzM2ZTZmNDMsCisJ
MHg3NDZlNjE3NCwweDAwMDAwMDczLDB4MDAwNzAwMDYsMHgwMDAwMDAyZSwweDAwMDAwMDAwLDB4
NGY2NDZkNjMsMHg2NTczNjY2NiwweDc2Njk0NDc0LAorCTB4MDAwMDAwMzQsMHgwMDA4MDAwNiww
eDAwMDAwMDJlLDB4MDAwMDAwMDEsMHg0Mzc0NzM2NCwweDY2NGY2NDZkLDB4NzQ2NTczNjYsMHgz
NDc2Njk0NCwKKwkweDAwMDAwMDAwLDB4MDAwNzAwMDYsMHgwMDAwMDAyZSwweDAwMDAwMDAyLDB4
NGY3NDczNjQsMHg2NTczNjY2NiwweDc2Njk0NDc0LDB4MDAwMDAwMzQsCisJMHgwMDA4MDAwNiww
eDAwMDAwMDJlLDB4MDAwMDAwMDMsMHg2NTUyNzM2OSwweDcyNjE3NDczLDB4NjE2ZTQ1NzQsMHg2
NDY1NmM2MiwweDAwMDAwMDAwLAorCTB4MDAwMzAwMDUsMHgwMDAwMDAzMCwweDAwMDAwMDAwLDB4
MDAwNTAwMDUsMHgwMDAwMDAzOCwweDQyNjM3MjczLDB4NmI2MzZmNmMsMHgwMDAwMDAwMCwKKwkw
eDAwMDMwMDA1LDB4MDAwMDAwM2EsMHgwMDc0NzM2NCwweDAwMDUwMDA2LDB4MDAwMDAwM2EsMHgw
MDAwMDAwMCwweDQ0NzQ3MzY0LDB4MDA2MTc0NjEsCisJMHgwMDAzMDAwNSwweDAwMDAwMDNjLDB4
MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDQwLDB4NTM2MzcyNzMsMHg3NDY2Njk2OCwweDAw
MDAwMDAwLAorCTB4MDAwNTAwMDUsMHgwMDAwMDA1MywweDY1NjQ2ZTY5LDB4NzU2ZjQzNzgsMHgw
MDAwNzQ2ZSwweDAwMDMwMDA1LDB4MDAwMDAwNTUsMHgwMDY0NmQ2MywKKwkweDAwMDUwMDA2LDB4
MDAwMDAwNTUsMHgwMDAwMDAwMCwweDQ0NjQ2ZDYzLDB4MDA2MTc0NjEsMHgwMDAzMDAwNSwweDAw
MDAwMDU3LDB4MDAwMDAwMDAsCisJMHgwMDA1MDAwNSwweDAwMDAwMDVjLDB4NzM3MjY5NjYsMHg2
NDZlNDk3NCwweDAwMDA3ODY1LDB4MDAwNTAwMDUsMHgwMDAwMDA2MywweDQ5NjQ2ZTY1LAorCTB4
Nzg2NTY0NmUsMHgwMDAwMDAwMCwweDAwMDgwMDA1LDB4MDAwMDAwNjksMHg0NzVmNmM2NywweDYx
NjI2ZjZjLDB4NzY2ZTQ5NmMsMHg3NDYxNjM2ZiwKKwkweDQ5NmU2ZjY5LDB4MDAwMDAwNDQsMHgw
MDA2MDAwNSwweDAwMDAwMDczLDB4NmI3MjZmNzcsMHg0MzY3NmU2OSwweDc0NmU3NTZmLDB4MDAw
MDAwMDAsCisJMHgwMDA0MDAwNSwweDAwMDAwMDc0LDB4NDk2MzcyNzMsMHgwMDAwNzg2NCwweDAw
MDcwMDA1LDB4MDAwMDAwNzYsMHg2OTY0NmU2OSwweDUyNzM2NTYzLAorCTB4Njk2MTZkNjUsMHg2
NzZlNjk2ZSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDA3OCwweDY1NmU2OTZjLDB4NjU3
YTY5NTMsMHgwMDAwMDAwMCwKKwkweDAwMDYwMDA1LDB4MDAwMDAwNzksMHg3MzcyNjk2NiwweDY0
NmU0OTc0LDB4NjE1Njc4NjUsMHgwMDY1NzU2YywweDAwMDYwMDA1LDB4MDAwMDAwODEsCisJMHg3
NDczNjU3MiwweDU2NzQ3MjYxLDB4NjU3NTZjNjEsMHgwMDAwMDAwMCwweDAwMDUwMDA1LDB4MDAw
MDAwODIsMHg2NTY0NmU2OSwweDZjNjE1Njc4LAorCTB4MDAwMDY1NzUsMHgwMDA0MDAwNSwweDAw
MDAwMDg1LDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwOWUsMHg2MTcy
NjE3MCwKKwkweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA5ZiwweDYxNzI2MTcwLDB4MDAw
MDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGE4LDB4NjE3MjYxNzAsCisJMHgwMDAwMDA2ZCwweDAw
MDQwMDA1LDB4MDAwMDAwYTksMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAw
MDBhZCwweDYxNzI2MTcwLAorCTB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGFmLDB4NjE3
MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYmEsMHg2MTcyNjE3MCwKKwkweDAw
MDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBiYywweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0
MDAwNSwweDAwMDAwMGMyLDB4NDM3NDczNjQsCisJMHgwMDAwNjQ2ZCwweDAwMDYwMDA2LDB4MDAw
MDAwYzIsMHgwMDAwMDAwMCwweDQzNzQ3MzY0LDB4NjE0NDY0NmQsMHgwMDAwNjE3NCwweDAwMDMw
MDA1LAorCTB4MDAwMDAwYzQsMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwMTIsMHgwMDAw
MDAwNiwweDAwMDAwMDA0LDB4MDAwNDAwNDgsMHgwMDAwMDAxMywKKwkweDAwMDAwMDAwLDB4MDAw
MDAwMTgsMHgwMDA1MDA0OCwweDAwMDAwMDEzLDB4MDAwMDAwMDAsMHgwMDAwMDAyMywweDAwMDAw
MDAwLDB4MDAwMzAwNDcsCisJMHgwMDAwMDAxMywweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAw
MDAxNSwweDAwMDAwMDIyLDB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDE1LAorCTB4MDAw
MDAwMjEsMHgwMDAwMDAwMSwweDAwMDUwMDQ4LDB4MDAwMDAwMmUsMHgwMDAwMDAwMCwweDAwMDAw
MDIzLDB4MDAwMDAwMDAsMHgwMDA1MDA0OCwKKwkweDAwMDAwMDJlLDB4MDAwMDAwMDEsMHgwMDAw
MDAyMywweDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAyZSwweDAwMDAwMDAyLDB4MDAwMDAw
MjMsCisJMHgwMDAwMDAwOCwweDAwMDUwMDQ4LDB4MDAwMDAwMmUsMHgwMDAwMDAwMywweDAwMDAw
MDIzLDB4MDAwMDAwMGMsMHgwMDAzMDA0NywweDAwMDAwMDJlLAorCTB4MDAwMDAwMDIsMHgwMDA0
MDA0NywweDAwMDAwMDM5LDB4MDAwMDAwMDYsMHgwMDAwMDAwNCwweDAwMDUwMDQ4LDB4MDAwMDAw
M2EsMHgwMDAwMDAwMCwKKwkweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAwMDAw
MDNhLDB4MDAwMDAwMDMsMHgwMDA0MDA0NywweDAwMDAwMDNjLDB4MDAwMDAwMjIsCisJMHgwMDAw
MDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwM2MsMHgwMDAwMDAyMSwweDAwMDAwMDAwLDB4MDAwNDAw
NDcsMHgwMDAwMDA1NCwweDAwMDAwMDA2LAorCTB4MDAwMDAwMDQsMHgwMDA0MDA0OCwweDAwMDAw
MDU1LDB4MDAwMDAwMDAsMHgwMDAwMDAxOCwweDAwMDUwMDQ4LDB4MDAwMDAwNTUsMHgwMDAwMDAw
MCwKKwkweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAwMDAwMDU1LDB4MDAwMDAw
MDMsMHgwMDA0MDA0NywweDAwMDAwMDU3LDB4MDAwMDAwMjIsCisJMHgwMDAwMDAwMCwweDAwMDQw
MDQ3LDB4MDAwMDAwNTcsMHgwMDAwMDAyMSwweDAwMDAwMDAyLDB4MDAwNDAwNDcsMHgwMDAwMDA2
OSwweDAwMDAwMDBiLAorCTB4MDAwMDAwMWMsMHgwMDA0MDA0NywweDAwMDAwMGMxLDB4MDAwMDAw
MDYsMHgwMDAwMDAwNCwweDAwMDUwMDQ4LDB4MDAwMDAwYzIsMHgwMDAwMDAwMCwKKwkweDAwMDAw
MDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAwMDAwMGMyLDB4MDAwMDAwMDMsMHgwMDA0MDA0
NywweDAwMDAwMGM0LDB4MDAwMDAwMjIsCisJMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAw
YzQsMHgwMDAwMDAyMSwweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDBlYiwweDAwMDAwMDBi
LAorCTB4MDAwMDAwMTksMHgwMDAyMDAxMywweDAwMDAwMDAyLDB4MDAwMzAwMjEsMHgwMDAwMDAw
MywweDAwMDAwMDAyLDB4MDAwNDAwMTUsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDIwLDB4MDAwMDAw
MDAsMHgwMDA0MDAyMCwweDAwMDAwMDA3LDB4MDAwMDAwMDcsMHgwMDAwMDAwNiwweDAwMDQwMDIx
LDB4MDAwMDAwMDgsCisJMHgwMDAwMDAwNiwweDAwMDAwMDA3LDB4MDAwNTAwMjEsMHgwMDAwMDAw
YywweDAwMDAwMDAyLDB4MDAwMDAwMDcsMHgwMDAwMDAwNywweDAwMDMwMDFkLAorCTB4MDAwMDAw
MTIsMHgwMDAwMDAwNiwweDAwMDMwMDFlLDB4MDAwMDAwMTMsMHgwMDAwMDAxMiwweDAwMDQwMDIw
LDB4MDAwMDAwMTQsMHgwMDAwMDAwMiwKKwkweDAwMDAwMDEzLDB4MDAwNDAwM2IsMHgwMDAwMDAx
NCwweDAwMDAwMDE1LDB4MDAwMDAwMDIsMHgwMDA0MDAxNSwweDAwMDAwMDE2LDB4MDAwMDAwMjAs
CisJMHgwMDAwMDAwMSwweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgwMDAwMDAxNywweDAwMDAwMDAw
LDB4MDAwNDAwMmIsMHgwMDAwMDAxNiwweDAwMDAwMDE5LAorCTB4MDAwMDAwMDEsMHgwMDA0MDAy
MCwweDAwMDAwMDFiLDB4MDAwMDAwMDIsMHgwMDAwMDAwNiwweDAwMDQwMDJiLDB4MDAwMDAwMDYs
MHgwMDAwMDAyMCwKKwkweDAwMDAwMDAxLDB4MDAwNDAwMmIsMHgwMDAwMDAxNiwweDAwMDAwMDIy
LDB4MDAwMDAwMDQsMHgwMDA0MDAyYiwweDAwMDAwMDA2LDB4MDAwMDAwMjgsCisJMHgwMDAwZmZm
ZiwweDAwMDYwMDFlLDB4MDAwMDAwMmUsMHgwMDAwMDAwNiwweDAwMDAwMDA2LDB4MDAwMDAwMDYs
MHgwMDAwMDAwNiwweDAwMDQwMDIwLAorCTB4MDAwMDAwMmYsMHgwMDAwMDAwOSwweDAwMDAwMDJl
LDB4MDAwNDAwM2IsMHgwMDAwMDAyZiwweDAwMDAwMDMwLDB4MDAwMDAwMDksMHgwMDA0MDAyYiwK
KwkweDAwMDAwMDE2LDB4MDAwMDAwMzEsMHgwMDAwMDAwMiwweDAwMDQwMDIwLDB4MDAwMDAwMzIs
MHgwMDAwMDAwOSwweDAwMDAwMDA2LDB4MDAwMzAwMWQsCisJMHgwMDAwMDAzOSwweDAwMDAwMDA2
LDB4MDAwMzAwMWUsMHgwMDAwMDAzYSwweDAwMDAwMDM5LDB4MDAwNDAwMjAsMHgwMDAwMDAzYiww
eDAwMDAwMDAyLAorCTB4MDAwMDAwM2EsMHgwMDA0MDAzYiwweDAwMDAwMDNiLDB4MDAwMDAwM2Ms
MHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgwMDAwMDA0NCwKKwkweDAwMDBmZmZm
LDB4MDAwMzAwMWQsMHgwMDAwMDA1NCwweDAwMDAwMDA2LDB4MDAwMzAwMWUsMHgwMDAwMDA1NSww
eDAwMDAwMDU0LDB4MDAwNDAwMjAsCisJMHgwMDAwMDA1NiwweDAwMDAwMDAyLDB4MDAwMDAwNTUs
MHgwMDA0MDAzYiwweDAwMDAwMDU2LDB4MDAwMDAwNTcsMHgwMDAwMDAwMiwweDAwMDQwMDJiLAor
CTB4MDAwMDAwMDYsMHgwMDAwMDA1ZiwweDAwMDAwMDAyLDB4MDAwNDAwMTcsMHgwMDAwMDA2Nyww
eDAwMDAwMDA2LDB4MDAwMDAwMDMsMHgwMDA0MDAyMCwKKwkweDAwMDAwMDY4LDB4MDAwMDAwMDEs
MHgwMDAwMDA2NywweDAwMDQwMDNiLDB4MDAwMDAwNjgsMHgwMDAwMDA2OSwweDAwMDAwMDAxLDB4
MDAwNDAwMmIsCisJMHgwMDAwMDAwNiwweDAwMDAwMDZhLDB4MDAwMDAwMDAsMHgwMDA0MDAyMCww
eDAwMDAwMDZiLDB4MDAwMDAwMDEsMHgwMDAwMDAwNiwweDAwMDIwMDE0LAorCTB4MDAwMDAwNmUs
MHgwMDA0MDAyYiwweDAwMDAwMDE2LDB4MDAwMDAwOGUsMHgwMDAwMDAwMywweDAwMDMwMDFkLDB4
MDAwMDAwYzEsMHgwMDAwMDAwNiwKKwkweDAwMDMwMDFlLDB4MDAwMDAwYzIsMHgwMDAwMDBjMSww
eDAwMDQwMDIwLDB4MDAwMDAwYzMsMHgwMDAwMDAwMiwweDAwMDAwMGMyLDB4MDAwNDAwM2IsCisJ
MHgwMDAwMDBjMywweDAwMDAwMGM0LDB4MDAwMDAwMDIsMHgwMDA0MDAyYiwweDAwMDAwMDA2LDB4
MDAwMDAwZDgsMHgwMDAwMDAwMywweDAwMDQwMDJiLAorCTB4MDAwMDAwMDYsMHgwMDAwMDBlMiww
eDAwMDAwMDA0LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMGVhLDB4MDAwMDAwNDAsMHgw
MDA2MDAyYywKKwkweDAwMDAwMDY3LDB4MDAwMDAwZWIsMHgwMDAwMDBlYSwweDAwMDAwMDIwLDB4
MDAwMDAwMjAsMHgwMDA1MDAzNiwweDAwMDAwMDAyLDB4MDAwMDAwMDQsCisJMHgwMDAwMDAwMCww
eDAwMDAwMDAzLDB4MDAwMjAwZjgsMHgwMDAwMDAwNSwweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgw
MDAwMDA1MywweDAwMDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDVjLDB4
MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNjMsMHgwMDAwMDAwNywKKwkw
eDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3MywweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgw
MDAwMDAwNywweDAwMDAwMDc0LDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4
MDAwMDAwNzYsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3OCwweDAw
MDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDc5LDB4MDAwMDAwMDcsMHgw
MDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwODEsMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4
MDAwMDAwMDcsMHgwMDAwMDA4MiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAw
MDAwMDg1LDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwOWUsMHgw
MDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA5ZiwweDAwMDAwMDA3LAorCTB4
MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGE4LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAw
MDAwMDA3LDB4MDAwMDAwYTksMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgw
MDAwMDBhZCwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGFmLDB4MDAw
MDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYmEsMHgwMDAwMDAwNywweDAw
MDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBiYywweDAwMDAwMDA3LAorCTB4MDAwNTAwNDEsMHgw
MDAwMDAzMiwweDAwMDAwMDU4LDB4MDAwMDAwMzAsMHgwMDAwMDAxNywweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDA1OSwKKwkweDAwMDAwMDU4LDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAw
MDAwMDVhLDB4MDAwMDAwNTcsMHgwMDAwMDAxNywweDAwMDAwMDU5LDB4MDAwNDAwM2QsCisJMHgw
MDAwMDAwNiwweDAwMDAwMDViLDB4MDAwMDAwNWEsMHgwMDAzMDAzZSwweDAwMDAwMDUzLDB4MDAw
MDAwNWIsMHgwMDA1MDA0MSwweDAwMDAwMDMyLAorCTB4MDAwMDAwNWQsMHgwMDAwMDAzMCwweDAw
MDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDVlLDB4MDAwMDAwNWQsMHgwMDA1
MDA4MCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwNjAsMHgwMDAwMDA1ZSwweDAwMDAwMDVmLDB4MDAw
NjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDYxLDB4MDAwMDAwNTcsCisJMHgwMDAwMDAxNywweDAw
MDAwMDYwLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDYyLDB4MDAwMDAwNjEsMHgwMDAz
MDAzZSwweDAwMDAwMDVjLAorCTB4MDAwMDAwNjIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwNjQsMHgwMDAwMDA1YywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2NSwKKwkweDAw
MDAwMDUzLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDY2LDB4MDAwMDAwNjQsMHgwMDAw
MDA2NSwweDAwMDMwMDNlLDB4MDAwMDAwNjMsCisJMHgwMDAwMDA2NiwweDAwMDUwMDQxLDB4MDAw
MDAwNmIsMHgwMDAwMDA2YywweDAwMDAwMDY5LDB4MDAwMDAwNmEsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LAorCTB4MDAwMDAwNmQsMHgwMDAwMDA2YywweDAwMDUwMGFlLDB4MDAwMDAwNmUsMHgwMDAw
MDA2ZiwweDAwMDAwMDZkLDB4MDAwMDAwMjAsMHgwMDAzMDBmNywKKwkweDAwMDAwMDcxLDB4MDAw
MDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDZmLDB4MDAwMDAwNzAsMHgwMDAwMDA3MSwweDAwMDIw
MGY4LDB4MDAwMDAwNzAsCisJMHgwMDAxMDBmZCwweDAwMDIwMGY4LDB4MDAwMDAwNzEsMHgwMDAz
MDAzZSwweDAwMDAwMDczLDB4MDAwMDAwNmEsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAw
MDAwNzUsMHgwMDAwMDA1YywweDAwMDMwMDNlLDB4MDAwMDAwNzQsMHgwMDAwMDA3NSwweDAwMDQw
MDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3NywKKwkweDAwMDAwMDUzLDB4MDAwMzAwM2UsMHgwMDAw
MDA3NiwweDAwMDAwMDc3LDB4MDAwMzAwM2UsMHgwMDAwMDA3OCwweDAwMDAwMDZhLDB4MDAwMzAw
M2UsCisJMHgwMDAwMDA3OSwweDAwMDAwMDZhLDB4MDAwMjAwZjksMHgwMDAwMDA3YSwweDAwMDIw
MGY4LDB4MDAwMDAwN2EsMHgwMDA0MDBmNiwweDAwMDAwMDdjLAorCTB4MDAwMDAwN2QsMHgwMDAw
MDAwMCwweDAwMDIwMGY5LDB4MDAwMDAwN2UsMHgwMDAyMDBmOCwweDAwMDAwMDdlLDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDdmLDB4MDAwMDAwNzYsMHgwMDA1MDBhYywweDAwMDAw
MDZlLDB4MDAwMDAwODAsMHgwMDAwMDA3ZiwweDAwMDAwMDZhLDB4MDAwNDAwZmEsCisJMHgwMDAw
MDA4MCwweDAwMDAwMDdiLDB4MDAwMDAwN2MsMHgwMDAyMDBmOCwweDAwMDAwMDdiLDB4MDAwMzAw
M2UsMHgwMDAwMDA4MSwweDAwMDAwMDI4LAorCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MDgzLDB4MDAwMDAwNzQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwODQsMHgwMDAwMDA4
MywKKwkweDAwMDAwMDE5LDB4MDAwMzAwM2UsMHgwMDAwMDA3NCwweDAwMDAwMDg0LDB4MDAwMzAw
M2UsMHgwMDAwMDA4NSwweDAwMDAwMDgzLDB4MDAwNTAwMzksCisJMHgwMDAwMDAwNiwweDAwMDAw
MDg2LDB4MDAwMDAwMGEsMHgwMDAwMDA4NSwweDAwMDMwMDNlLDB4MDAwMDAwODIsMHgwMDAwMDA4
NiwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAwMDA4NywweDAwMDAwMDc4LDB4MDAwNTAw
YWEsMHgwMDAwMDA2ZSwweDAwMDAwMDg4LDB4MDAwMDAwODcsMHgwMDAwMDA2YSwKKwkweDAwMDMw
MGY3LDB4MDAwMDAwOGEsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwODgsMHgwMDAwMDA4
OSwweDAwMDAwMDhhLDB4MDAwMjAwZjgsCisJMHgwMDAwMDA4OSwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDA4YiwweDAwMDAwMDgyLDB4MDAwMzAwM2UsMHgwMDAwMDA3OSwweDAwMDAwMDhi
LAorCTB4MDAwMjAwZjksMHgwMDAwMDA4YSwweDAwMDIwMGY4LDB4MDAwMDAwOGEsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwOGMsMHgwMDAwMDA3NiwKKwkweDAwMDUwMDgyLDB4MDAwMDAw
MDYsMHgwMDAwMDA4ZCwweDAwMDAwMDhjLDB4MDAwMDAwMTksMHgwMDAzMDAzZSwweDAwMDAwMDc2
LDB4MDAwMDAwOGQsCisJMHgwMDA1MDA0MSwweDAwMDAwMDMyLDB4MDAwMDAwOGYsMHgwMDAwMDAz
MCwweDAwMDAwMDhlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDkwLAorCTB4MDAwMDAw
OGYsMHgwMDA1MDBhYSwweDAwMDAwMDZlLDB4MDAwMDAwOTEsMHgwMDAwMDA5MCwweDAwMDAwMDIw
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDkyLDB4MDAwMDAwODIsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwOTMsMHgwMDAwMDA4MSwweDAwMDUwMGFhLDB4MDAwMDAwNmUs
CisJMHgwMDAwMDA5NCwweDAwMDAwMDkyLDB4MDAwMDAwOTMsMHgwMDA1MDBhNywweDAwMDAwMDZl
LDB4MDAwMDAwOTUsMHgwMDAwMDA5MSwweDAwMDAwMDk0LAorCTB4MDAwMzAwZjcsMHgwMDAwMDA5
NywweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA5NSwweDAwMDAwMDk2LDB4MDAwMDAwYWMs
MHgwMDAyMDBmOCwKKwkweDAwMDAwMDk2LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDk4
LDB4MDAwMDAwNzgsMHgwMDA1MDBhYywweDAwMDAwMDZlLDB4MDAwMDAwOTksCisJMHgwMDAwMDA5
OCwweDAwMDAwMDIwLDB4MDAwMzAwZjcsMHgwMDAwMDA5YiwweDAwMDAwMDAwLDB4MDAwNDAwZmEs
MHgwMDAwMDA5OSwweDAwMDAwMDlhLAorCTB4MDAwMDAwOWIsMHgwMDAyMDBmOCwweDAwMDAwMDlh
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDljLDB4MDAwMDAwNzMsMHgwMDA1MDA4MCwK
KwkweDAwMDAwMDA2LDB4MDAwMDAwOWQsMHgwMDAwMDA5YywweDAwMDAwMDE5LDB4MDAwMzAwM2Us
MHgwMDAwMDA3MywweDAwMDAwMDlkLDB4MDAwMzAwM2UsCisJMHgwMDAwMDA5ZSwweDAwMDAwMDlj
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGEwLDB4MDAwMDAwNzksMHgwMDAzMDAzZSww
eDAwMDAwMDlmLAorCTB4MDAwMDAwYTAsMHgwMDA2MDAzOSwweDAwMDAwMDAyLDB4MDAwMDAwYTEs
MHgwMDAwMDAwZiwweDAwMDAwMDllLDB4MDAwMDAwOWYsMHgwMDAyMDBmOSwKKwkweDAwMDAwMDli
LDB4MDAwMjAwZjgsMHgwMDAwMDA5YiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhMiww
eDAwMDAwMDc4LDB4MDAwNTAwYWMsCisJMHgwMDAwMDA2ZSwweDAwMDAwMGEzLDB4MDAwMDAwYTIs
MHgwMDAwMDA2YSwweDAwMDMwMGY3LDB4MDAwMDAwYTUsMHgwMDAwMDAwMCwweDAwMDQwMGZhLAor
CTB4MDAwMDAwYTMsMHgwMDAwMDBhNCwweDAwMDAwMGE1LDB4MDAwMjAwZjgsMHgwMDAwMDBhNCww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhNiwKKwkweDAwMDAwMDczLDB4MDAwNTAwODAs
MHgwMDAwMDAwNiwweDAwMDAwMGE3LDB4MDAwMDAwYTYsMHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4
MDAwMDAwNzMsCisJMHgwMDAwMDBhNywweDAwMDMwMDNlLDB4MDAwMDAwYTgsMHgwMDAwMDBhNiww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhYSwweDAwMDAwMDgxLAorCTB4MDAwMzAwM2Us
MHgwMDAwMDBhOSwweDAwMDAwMGFhLDB4MDAwNjAwMzksMHgwMDAwMDAwMiwweDAwMDAwMGFiLDB4
MDAwMDAwMGYsMHgwMDAwMDBhOCwKKwkweDAwMDAwMGE5LDB4MDAwMjAwZjksMHgwMDAwMDBhNSww
eDAwMDIwMGY4LDB4MDAwMDAwYTUsMHgwMDAzMDAzZSwweDAwMDAwMDc4LDB4MDAwMDAwNmEsCisJ
MHgwMDAyMDBmOSwweDAwMDAwMDk3LDB4MDAwMjAwZjgsMHgwMDAwMDBhYywweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDBhZSwweDAwMDAwMDczLAorCTB4MDAwMzAwM2UsMHgwMDAwMDBhZCww
eDAwMDAwMGFlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGIwLDB4MDAwMDAwODIsMHgw
MDAzMDAzZSwKKwkweDAwMDAwMGFmLDB4MDAwMDAwYjAsMHgwMDA2MDAzOSwweDAwMDAwMDAyLDB4
MDAwMDAwYjEsMHgwMDAwMDAwZiwweDAwMDAwMGFkLDB4MDAwMDAwYWYsCisJMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwYjIsMHgwMDAwMDA3MywweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgw
MDAwMDBiMywweDAwMDAwMGIyLAorCTB4MDAwMDAwMTksMHgwMDAzMDAzZSwweDAwMDAwMDczLDB4
MDAwMDAwYjMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYjQsMHgwMDAwMDA3OCwKKwkw
eDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBiNSwweDAwMDAwMGI0LDB4MDAwMDAwMTksMHgw
MDAzMDAzZSwweDAwMDAwMDc4LDB4MDAwMDAwYjUsCisJMHgwMDAyMDBmOSwweDAwMDAwMDk3LDB4
MDAwMjAwZjgsMHgwMDAwMDA5NywweDAwMDIwMGY5LDB4MDAwMDAwN2QsMHgwMDAyMDBmOCwweDAw
MDAwMDdkLAorCTB4MDAwMjAwZjksMHgwMDAwMDA3YSwweDAwMDIwMGY4LDB4MDAwMDAwN2MsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYjYsMHgwMDAwMDA3OCwKKwkweDAwMDUwMGFjLDB4
MDAwMDAwNmUsMHgwMDAwMDBiNywweDAwMDAwMGI2LDB4MDAwMDAwMjAsMHgwMDAzMDBmNywweDAw
MDAwMGI5LDB4MDAwMDAwMDAsCisJMHgwMDA0MDBmYSwweDAwMDAwMGI3LDB4MDAwMDAwYjgsMHgw
MDAwMDBiOSwweDAwMDIwMGY4LDB4MDAwMDAwYjgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4
MDAwMDAwYmIsMHgwMDAwMDA3MywweDAwMDMwMDNlLDB4MDAwMDAwYmEsMHgwMDAwMDBiYiwweDAw
MDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiZCwKKwkweDAwMDAwMDc5LDB4MDAwMzAwM2UsMHgw
MDAwMDBiYywweDAwMDAwMGJkLDB4MDAwNjAwMzksMHgwMDAwMDAwMiwweDAwMDAwMGJlLDB4MDAw
MDAwMGYsCisJMHgwMDAwMDBiYSwweDAwMDAwMGJjLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMGJmLDB4MDAwMDAwNzMsMHgwMDA1MDA4MCwweDAwMDAwMDA2LAorCTB4MDAwMDAwYzAsMHgw
MDAwMDBiZiwweDAwMDAwMDE5LDB4MDAwMzAwM2UsMHgwMDAwMDA3MywweDAwMDAwMGMwLDB4MDAw
MjAwZjksMHgwMDAwMDBiOSwKKwkweDAwMDIwMGY4LDB4MDAwMDAwYjksMHgwMDA1MDA0MSwweDAw
MDAwMDMyLDB4MDAwMDAwYzUsMHgwMDAwMDAzMCwweDAwMDAwMDE5LDB4MDAwNDAwM2QsCisJMHgw
MDAwMDAwNiwweDAwMDAwMGM2LDB4MDAwMDAwYzUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwYzcsMHgwMDAwMDA3MywweDAwMDYwMDQxLAorCTB4MDAwMDAwMWIsMHgwMDAwMDBjOCwweDAw
MDAwMGM0LDB4MDAwMDAwMTcsMHgwMDAwMDBjNiwweDAwMDMwMDNlLDB4MDAwMDAwYzgsMHgwMDAw
MDBjNywKKwkweDAwMDUwMDQxLDB4MDAwMDAwMzIsMHgwMDAwMDBjOSwweDAwMDAwMDMwLDB4MDAw
MDAwMTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwY2EsCisJMHgwMDAwMDBjOSwweDAw
MDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBjYiwweDAwMDAwMGNhLDB4MDAwMDAwMjAsMHgwMDA1
MDA0MSwweDAwMDAwMDMyLAorCTB4MDAwMDAwY2MsMHgwMDAwMDAzMCwweDAwMDAwMDE3LDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGNkLDB4MDAwMDAwY2MsMHgwMDA1MDA4MCwKKwkweDAw
MDAwMDA2LDB4MDAwMDAwY2UsMHgwMDAwMDBjZCwweDAwMDAwMDIwLDB4MDAwNjAwNDEsMHgwMDAw
MDAxYiwweDAwMDAwMGNmLDB4MDAwMDAwNTcsCisJMHgwMDAwMDAxNywweDAwMDAwMGNlLDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGQwLDB4MDAwMDAwY2YsMHgwMDA2MDA0MSwweDAwMDAw
MDFiLAorCTB4MDAwMDAwZDEsMHgwMDAwMDBjNCwweDAwMDAwMDE3LDB4MDAwMDAwY2IsMHgwMDAz
MDAzZSwweDAwMDAwMGQxLDB4MDAwMDAwZDAsMHgwMDA1MDA0MSwKKwkweDAwMDAwMDMyLDB4MDAw
MDAwZDIsMHgwMDAwMDAzMCwweDAwMDAwMDE5LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MGQzLDB4MDAwMDAwZDIsCisJMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwZDQsMHgwMDAw
MDBkMywweDAwMDAwMDVmLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGQ1LAorCTB4MDAw
MDAwYzQsMHgwMDAwMDAxNywweDAwMDAwMGQ0LDB4MDAwMzAwM2UsMHgwMDAwMDBkNSwweDAwMDAw
MDZhLDB4MDAwNTAwNDEsMHgwMDAwMDAzMiwKKwkweDAwMDAwMGQ2LDB4MDAwMDAwMzAsMHgwMDAw
MDAxOSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBkNywweDAwMDAwMGQ2LDB4MDAwNTAw
ODAsCisJMHgwMDAwMDAwNiwweDAwMDAwMGQ5LDB4MDAwMDAwZDcsMHgwMDAwMDBkOCwweDAwMDUw
MDQxLDB4MDAwMDAwMzIsMHgwMDAwMDBkYSwweDAwMDAwMDMwLAorCTB4MDAwMDAwMTcsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZGIsMHgwMDAwMDBkYSwweDAwMDUwMDgwLDB4MDAwMDAw
MDYsMHgwMDAwMDBkYywKKwkweDAwMDAwMGRiLDB4MDAwMDAwZDgsMHgwMDA2MDA0MSwweDAwMDAw
MDFiLDB4MDAwMDAwZGQsMHgwMDAwMDA1NywweDAwMDAwMDE3LDB4MDAwMDAwZGMsCisJMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZGUsMHgwMDAwMDBkZCwweDAwMDYwMDQxLDB4MDAwMDAw
MWIsMHgwMDAwMDBkZiwweDAwMDAwMGM0LAorCTB4MDAwMDAwMTcsMHgwMDAwMDBkOSwweDAwMDMw
MDNlLDB4MDAwMDAwZGYsMHgwMDAwMDBkZSwweDAwMDUwMDQxLDB4MDAwMDAwMzIsMHgwMDAwMDBl
MCwKKwkweDAwMDAwMDMwLDB4MDAwMDAwMTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAw
ZTEsMHgwMDAwMDBlMCwweDAwMDUwMDgwLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBlMywweDAwMDAw
MGUxLDB4MDAwMDAwZTIsMHgwMDA1MDA0MSwweDAwMDAwMDMyLDB4MDAwMDAwZTQsMHgwMDAwMDAz
MCwweDAwMDAwMDE3LAorCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGU1LDB4MDAwMDAw
ZTQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwZTYsMHgwMDAwMDBlNSwKKwkweDAwMDAw
MGUyLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGU3LDB4MDAwMDAwNTcsMHgwMDAwMDAx
NywweDAwMDAwMGU2LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMGU4LDB4MDAwMDAw
ZTcsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwZTksMHgwMDAwMDBjNCwweDAwMDAwMDE3
LAorCTB4MDAwMDAwZTMsMHgwMDAzMDAzZSwweDAwMDAwMGU5LDB4MDAwMDAwZTgsMHgwMDAxMDBm
ZCwweDAwMDEwMDM4LDB4MDAwNTAwMzYsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDBhLDB4MDAwMDAw
MDAsMHgwMDAwMDAwOCwweDAwMDMwMDM3LDB4MDAwMDAwMDcsMHgwMDAwMDAwOSwweDAwMDIwMGY4
LDB4MDAwMDAwMGIsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwMTEsMHgwMDAwMDAw
NywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAxZSwweDAwMDAwMDA3LAorCTB4MDAwNDAw
M2IsMHgwMDAwMDAwNywweDAwMDAwMDI0LDB4MDAwMDAwMDcsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwMTgsMHgwMDAwMDAwOSwKKwkweDAwMDUwMGMyLDB4MDAwMDAwMDYsMHgwMDAwMDAx
YSwweDAwMDAwMDE4LDB4MDAwMDAwMTksMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwMWMs
CisJMHgwMDAwMDAxNSwweDAwMDAwMDE3LDB4MDAwMDAwMWEsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwMWQsMHgwMDAwMDAxYywweDAwMDMwMDNlLAorCTB4MDAwMDAwMTEsMHgwMDAwMDAx
ZCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAxZiwweDAwMDAwMDA5LDB4MDAwNTAwYzcs
MHgwMDAwMDAwNiwKKwkweDAwMDAwMDIxLDB4MDAwMDAwMWYsMHgwMDAwMDAyMCwweDAwMDUwMGM0
LDB4MDAwMDAwMDYsMHgwMDAwMDAyMywweDAwMDAwMDIxLDB4MDAwMDAwMjIsCisJMHgwMDAzMDAz
ZSwweDAwMDAwMDFlLDB4MDAwMDAwMjMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMjUs
MHgwMDAwMDAxMSwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAwMDAyNiwweDAwMDAwMDFl
LDB4MDAwNTAwYzIsMHgwMDAwMDAwNiwweDAwMDAwMDI3LDB4MDAwMDAwMjUsMHgwMDAwMDAyNiwK
KwkweDAwMDUwMGM3LDB4MDAwMDAwMDYsMHgwMDAwMDAyOSwweDAwMDAwMDI3LDB4MDAwMDAwMjgs
MHgwMDAzMDAzZSwweDAwMDAwMDI0LDB4MDAwMDAwMjksCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwMmEsMHgwMDAwMDAyNCwweDAwMDIwMGZlLDB4MDAwMDAwMmEsMHgwMDAxMDAzOCww
eDAwMDUwMDM2LAorCTB4MDAwMDAwMDIsMHgwMDAwMDAwZiwweDAwMDAwMDAwLDB4MDAwMDAwMGMs
MHgwMDAzMDAzNywweDAwMDAwMDA3LDB4MDAwMDAwMGQsMHgwMDAzMDAzNywKKwkweDAwMDAwMDA3
LDB4MDAwMDAwMGUsMHgwMDAyMDBmOCwweDAwMDAwMDEwLDB4MDAwNDAwM2IsMHgwMDAwMDAwNyww
eDAwMDAwMDJkLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwMzgs
MHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA0MCwweDAwMDAwMDA3LAor
CTB4MDAwNTAwNDEsMHgwMDAwMDAzMiwweDAwMDAwMDMzLDB4MDAwMDAwMzAsMHgwMDAwMDAzMSww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzNCwKKwkweDAwMDAwMDMzLDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDM1LDB4MDAwMDAwMGQsMHgwMDA1MDBjMiwweDAwMDAwMDA2LDB4
MDAwMDAwMzYsCisJMHgwMDAwMDAzNSwweDAwMDAwMDE5LDB4MDAwNTAwODAsMHgwMDAwMDAwNiww
eDAwMDAwMDM3LDB4MDAwMDAwMzQsMHgwMDAwMDAzNiwweDAwMDMwMDNlLAorCTB4MDAwMDAwMmQs
MHgwMDAwMDAzNywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzZCwweDAwMDAwMDJkLDB4
MDAwNjAwNDEsMHgwMDAwMDAxYiwKKwkweDAwMDAwMDNlLDB4MDAwMDAwM2MsMHgwMDAwMDAxNyww
eDAwMDAwMDNkLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDNmLDB4MDAwMDAwM2UsCisJ
MHgwMDAzMDAzZSwweDAwMDAwMDM4LDB4MDAwMDAwM2YsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwNDEsMHgwMDAwMDAwZCwweDAwMDUwMGM3LAorCTB4MDAwMDAwMDYsMHgwMDAwMDA0Miww
eDAwMDAwMDQxLDB4MDAwMDAwMjAsMHgwMDA1MDBjNCwweDAwMDAwMDA2LDB4MDAwMDAwNDMsMHgw
MDAwMDA0MiwKKwkweDAwMDAwMDIyLDB4MDAwMzAwM2UsMHgwMDAwMDA0MCwweDAwMDAwMDQzLDB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDQ1LDB4MDAwMDAwNDAsCisJMHgwMDA1MDBjNCww
eDAwMDAwMDE2LDB4MDAwMDAwNDYsMHgwMDAwMDA0NCwweDAwMDAwMDQ1LDB4MDAwNDAwYzgsMHgw
MDAwMDAxNiwweDAwMDAwMDQ3LAorCTB4MDAwMDAwNDYsMHgwMDA0MDA3YywweDAwMDAwMDA2LDB4
MDAwMDAwNDgsMHgwMDAwMDA0NywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0OSwKKwkw
eDAwMDAwMDM4LDB4MDAwNTAwYzcsMHgwMDAwMDAwNiwweDAwMDAwMDRhLDB4MDAwMDAwNDksMHgw
MDAwMDA0OCwweDAwMDMwMDNlLDB4MDAwMDAwMzgsCisJMHgwMDAwMDA0YSwweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDA0YiwweDAwMDAwMDBlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMDRjLAorCTB4MDAwMDAwNDAsMHgwMDA1MDBjNCwweDAwMDAwMDA2LDB4MDAwMDAwNGQsMHgw
MDAwMDA0YiwweDAwMDAwMDRjLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDRlLDB4
MDAwMDAwMzgsMHgwMDA1MDBjNSwweDAwMDAwMDA2LDB4MDAwMDAwNGYsMHgwMDAwMDA0ZSwweDAw
MDAwMDRkLDB4MDAwMzAwM2UsCisJMHgwMDAwMDAzOCwweDAwMDAwMDRmLDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwweDAwMDAwMDUwLDB4MDAwMDAwMmQsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4
MDAwMDAwNTEsMHgwMDAwMDAzOCwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDA1MiwweDAw
MDAwMDNjLDB4MDAwMDAwMTcsMHgwMDAwMDA1MCwKKwkweDAwMDMwMDNlLDB4MDAwMDAwNTIsMHgw
MDAwMDA1MSwweDAwMDEwMGZkLDB4MDAwMTAwMzgKIH07CiAKIC8vIEdlbmVyYXRlZCBmcm9tOgpA
QCAtMjE3LDE1ICsyNDMsMjkgQEAgY29uc3QgdWludDMyX3Qga0NvbnZlcnRJbmRleEluZGlyZWN0
TGluZUxvb3BfY29tcF8wMDAwMDAwMVtdID0gewogLy8gdWludCBHZXRJbmRleFZhbHVlKHVpbnQg
aW5kZXgpCiAvLyB7CiAvLwotLy8gICAgIHJldHVybiBzcmNEYXRhW2luZGV4XTsKKy8vICAgICB1
aW50IHNyY0Jsb2NrID0gc3JjRGF0YVtpbmRleCA+PiAxXTsKKy8vCisvLyAgICAgdWludCBzcmNT
aGlmdCA9KChpbmRleCAmIDB4MSk8PCA0KTsKKy8vCisvLyAgICAgdWludCB2YWx1ZSA9KHNyY0Js
b2NrID4+IHNyY1NoaWZ0KSYgMHhmZmZmOworLy8gICAgIHJldHVybiB2YWx1ZTsKIC8vCiAvLyB9
CiAvLwogLy8gdm9pZCBQdXRJbmRleFZhbHVlKHVpbnQgaW5kZXgsIHVpbnQgdmFsdWUpCiAvLyB7
CiAvLwotLy8gICAgIGRzdERhdGFbZHN0T2Zmc2V0RGl2NCArIGluZGV4XT0gdmFsdWU7Ci0vLyAg
ICAgcmV0dXJuOworLy8gICAgIHVpbnQgZHN0SW5kZXggPSBkc3RPZmZzZXREaXY0ICsoaW5kZXgg
Pj4gMSk7CisvLworLy8gICAgIHVpbnQgc3JjQmxvY2sgPSBkc3REYXRhW2RzdEluZGV4XTsKKy8v
CisvLyAgICAgdWludCBzcmNTaGlmdCA9KChpbmRleCAmIDB4MSk8PCA0KTsKKy8vCisvLyAgICAg
c3JjQmxvY2sgJj0gfigweGZmZmYgPDwgc3JjU2hpZnQpOworLy8KKy8vICAgICBzcmNCbG9jayB8
PSB2YWx1ZSA8PCBzcmNTaGlmdDsKKy8vCisvLyAgICAgZHN0RGF0YVtkc3RJbmRleF09IHNyY0Js
b2NrOwogLy8KIC8vIH0KIC8vCkBAIC0yNDcsOSArMjg3LDcgQEAgY29uc3QgdWludDMyX3Qga0Nv
bnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcF8wMDAwMDAwMVtdID0gewogLy8gICAgIHdo
aWxlKGluZGljZXNSZW1haW5pbmcgPiAwKQogLy8gICAgIHsKIC8vICAgICAgICAgdWludCBpbmRl
eFZhbHVlOwotLy8KLS8vICAgICAgICAgdWludCByZXN0YXJ0VmFsdWUgPSAweGZmZmZmZmZmOwot
Ly8KKy8vICAgICAgICAgdWludCByZXN0YXJ0VmFsdWUgPSAweGZmZmY7CiAvLyAgICAgICAgIGlu
ZGV4VmFsdWUgPSBHZXRJbmRleFZhbHVlKHNyY0lkeCArKyk7CiAvLyAgICAgICAgIGlmKGxpbmVT
aXplID09IDApCiAvLyAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGV4
SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAyLmluYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGV4
SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAyLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDJlMmU4MzI4
ZWVjY2ZmMzlkNjIwMWE4ZTIyN2Q1OWFlMTI5YTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dl
bi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDIuaW5jCkBAIC0wLDAg
KzEsMjg1IEBACisJLy8gNy4xMi4zMjI2CisJICNwcmFnbWEgb25jZQorY29uc3QgdWludDMyX3Qg
a0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcF8wMDAwMDAwMltdID0geworCTB4MDcy
MzAyMDMsMHgwMDAxMDAwMCwweDAwMDgwMDA3LDB4MDAwMDAwYzgsMHgwMDAwMDAwMCwweDAwMDIw
MDExLDB4MDAwMDAwMDEsMHgwMDA2MDAwYiwKKwkweDAwMDAwMDAxLDB4NGM1MzRjNDcsMHg2NDc0
NzMyZSwweDMwMzUzNDJlLDB4MDAwMDAwMDAsMHgwMDAzMDAwZSwweDAwMDAwMDAwLDB4MDAwMDAw
MDEsCisJMHgwMDA2MDAwZiwweDAwMDAwMDA1LDB4MDAwMDAwMDQsMHg2ZTY5NjE2ZCwweDAwMDAw
MDAwLDB4MDAwMDAwNDIsMHgwMDA2MDAxMCwweDAwMDAwMDA0LAorCTB4MDAwMDAwMTEsMHgwMDAw
MDA0MCwweDAwMDAwMDAxLDB4MDAwMDAwMDEsMHgwMDAzMDAwMywweDAwMDAwMDAyLDB4MDAwMDAx
YzIsMHgwMDA0MDAwNSwKKwkweDAwMDAwMDA0LDB4NmU2OTYxNmQsMHgwMDAwMDAwMCwweDAwMDcw
MDA1LDB4MDAwMDAwMGEsMHg0OTc0NjU0NywweDc4NjU2NDZlLDB4NzU2YzYxNTYsCisJMHgzMTc1
Mjg2NSwweDAwMDAwMDNiLDB4MDAwNDAwMDUsMHgwMDAwMDAwOSwweDY1NjQ2ZTY5LDB4MDAwMDAw
NzgsMHgwMDA4MDAwNSwweDAwMDAwMDBmLAorCTB4NDk3NDc1NTAsMHg3ODY1NjQ2ZSwweDc1NmM2
MTU2LDB4MzE3NTI4NjUsMHgzYjMxNzUzYiwweDAwMDAwMDAwLDB4MDAwNDAwMDUsMHgwMDAwMDAw
ZCwKKwkweDY1NjQ2ZTY5LDB4MDAwMDAwNzgsMHgwMDA0MDAwNSwweDAwMDAwMDBlLDB4NzU2YzYx
NzYsMHgwMDAwMDA2NSwweDAwMDMwMDA1LDB4MDAwMDAwMTIsCisJMHgwMDYzNzI3MywweDAwMDUw
MDA2LDB4MDAwMDAwMTIsMHgwMDAwMDAwMCwweDQ0NjM3MjczLDB4MDA2MTc0NjEsMHgwMDAzMDAw
NSwweDAwMDAwMDE0LAorCTB4MDAwMDAwMDAsMHgwMDAzMDAwNSwweDAwMDAwMDFlLDB4MDA3NDcz
NjQsMHgwMDA1MDAwNiwweDAwMDAwMDFlLDB4MDAwMDAwMDAsMHg0NDc0NzM2NCwKKwkweDAwNjE3
NDYxLDB4MDAwMzAwMDUsMHgwMDAwMDAyMCwweDAwMDAwMDAwLDB4MDAwNjAwMDUsMHgwMDAwMDAy
MSwweDY4NzM3NTUwLDB4NzM2ZTZmNDMsCisJMHg3NDZlNjE3NCwweDAwMDAwMDczLDB4MDAwNzAw
MDYsMHgwMDAwMDAyMSwweDAwMDAwMDAwLDB4NGY2NDZkNjMsMHg2NTczNjY2NiwweDc2Njk0NDc0
LAorCTB4MDAwMDAwMzQsMHgwMDA4MDAwNiwweDAwMDAwMDIxLDB4MDAwMDAwMDEsMHg0Mzc0NzM2
NCwweDY2NGY2NDZkLDB4NzQ2NTczNjYsMHgzNDc2Njk0NCwKKwkweDAwMDAwMDAwLDB4MDAwNzAw
MDYsMHgwMDAwMDAyMSwweDAwMDAwMDAyLDB4NGY3NDczNjQsMHg2NTczNjY2NiwweDc2Njk0NDc0
LDB4MDAwMDAwMzQsCisJMHgwMDA4MDAwNiwweDAwMDAwMDIxLDB4MDAwMDAwMDMsMHg2NTUyNzM2
OSwweDcyNjE3NDczLDB4NjE2ZTQ1NzQsMHg2NDY1NmM2MiwweDAwMDAwMDAwLAorCTB4MDAwMzAw
MDUsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDAyYywweDY1NjQ2ZTY5
LDB4NzU2ZjQzNzgsMHgwMDAwNzQ2ZSwKKwkweDAwMDMwMDA1LDB4MDAwMDAwMmUsMHgwMDY0NmQ2
MywweDAwMDUwMDA2LDB4MDAwMDAwMmUsMHgwMDAwMDAwMCwweDQ0NjQ2ZDYzLDB4MDA2MTc0NjEs
CisJMHgwMDAzMDAwNSwweDAwMDAwMDMwLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDM1
LDB4NzM3MjY5NjYsMHg2NDZlNDk3NCwweDAwMDA3ODY1LAorCTB4MDAwNTAwMDUsMHgwMDAwMDAz
YywweDQ5NjQ2ZTY1LDB4Nzg2NTY0NmUsMHgwMDAwMDAwMCwweDAwMDgwMDA1LDB4MDAwMDAwNDIs
MHg0NzVmNmM2NywKKwkweDYxNjI2ZjZjLDB4NzY2ZTQ5NmMsMHg3NDYxNjM2ZiwweDQ5NmU2ZjY5
LDB4MDAwMDAwNDQsMHgwMDA2MDAwNSwweDAwMDAwMDRkLDB4NmI3MjZmNzcsCisJMHg0MzY3NmU2
OSwweDc0NmU3NTZmLDB4MDAwMDAwMDAsMHgwMDA0MDAwNSwweDAwMDAwMDRlLDB4NDk2MzcyNzMs
MHgwMDAwNzg2NCwweDAwMDcwMDA1LAorCTB4MDAwMDAwNTAsMHg2OTY0NmU2OSwweDUyNzM2NTYz
LDB4Njk2MTZkNjUsMHg2NzZlNjk2ZSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDA1MiwK
KwkweDY1NmU2OTZjLDB4NjU3YTY5NTMsMHgwMDAwMDAwMCwweDAwMDYwMDA1LDB4MDAwMDAwNTMs
MHg3MzcyNjk2NiwweDY0NmU0OTc0LDB4NjE1Njc4NjUsCisJMHgwMDY1NzU2YywweDAwMDYwMDA1
LDB4MDAwMDAwNWIsMHg3NDczNjU3MiwweDU2NzQ3MjYxLDB4NjU3NTZjNjEsMHgwMDAwMDAwMCww
eDAwMDUwMDA1LAorCTB4MDAwMDAwNWQsMHg2NTY0NmU2OSwweDZjNjE1Njc4LDB4MDAwMDY1NzUs
MHgwMDA0MDAwNSwweDAwMDAwMDYxLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwKKwkweDAwMDQwMDA1
LDB4MDAwMDAwN2EsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA3Yiww
eDYxNzI2MTcwLDB4MDAwMDAwNmQsCisJMHgwMDA0MDAwNSwweDAwMDAwMDg0LDB4NjE3MjYxNzAs
MHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwODUsMHg2MTcyNjE3MCwweDAwMDAwMDZkLAor
CTB4MDAwNDAwMDUsMHgwMDAwMDA4OSwweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSww
eDAwMDAwMDhiLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwKKwkweDAwMDQwMDA1LDB4MDAwMDAwOTYs
MHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA5OCwweDYxNzI2MTcwLDB4
MDAwMDAwNmQsCisJMHgwMDA0MDAwNSwweDAwMDAwMDllLDB4NDM3NDczNjQsMHgwMDAwNjQ2ZCww
eDAwMDYwMDA2LDB4MDAwMDAwOWUsMHgwMDAwMDAwMCwweDQzNzQ3MzY0LAorCTB4NjE0NDY0NmQs
MHgwMDAwNjE3NCwweDAwMDMwMDA1LDB4MDAwMDAwYTAsMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4
MDAwMDAwMTEsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDA0LDB4MDAwNDAwNDgsMHgwMDAwMDAxMiww
eDAwMDAwMDAwLDB4MDAwMDAwMTgsMHgwMDA1MDA0OCwweDAwMDAwMDEyLDB4MDAwMDAwMDAsCisJ
MHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAwNDcsMHgwMDAwMDAxMiwweDAwMDAwMDAzLDB4
MDAwNDAwNDcsMHgwMDAwMDAxNCwweDAwMDAwMDIyLAorCTB4MDAwMDAwMDAsMHgwMDA0MDA0Nyww
eDAwMDAwMDE0LDB4MDAwMDAwMjEsMHgwMDAwMDAwMSwweDAwMDQwMDQ3LDB4MDAwMDAwMWQsMHgw
MDAwMDAwNiwKKwkweDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAxZSwweDAwMDAwMDAwLDB4
MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwMWUsCisJMHgwMDAwMDAwMyww
eDAwMDQwMDQ3LDB4MDAwMDAwMjAsMHgwMDAwMDAyMiwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgw
MDAwMDAyMCwweDAwMDAwMDIxLAorCTB4MDAwMDAwMDAsMHgwMDA1MDA0OCwweDAwMDAwMDIxLDB4
MDAwMDAwMDAsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwNTAwNDgsMHgwMDAwMDAyMSwKKwkw
eDAwMDAwMDAxLDB4MDAwMDAwMjMsMHgwMDAwMDAwNCwweDAwMDUwMDQ4LDB4MDAwMDAwMjEsMHgw
MDAwMDAwMiwweDAwMDAwMDIzLDB4MDAwMDAwMDgsCisJMHgwMDA1MDA0OCwweDAwMDAwMDIxLDB4
MDAwMDAwMDMsMHgwMDAwMDAyMywweDAwMDAwMDBjLDB4MDAwMzAwNDcsMHgwMDAwMDAyMSwweDAw
MDAwMDAyLAorCTB4MDAwNDAwNDcsMHgwMDAwMDAyZCwweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgw
MDA0MDA0OCwweDAwMDAwMDJlLDB4MDAwMDAwMDAsMHgwMDAwMDAxOCwKKwkweDAwMDUwMDQ4LDB4
MDAwMDAwMmUsMHgwMDAwMDAwMCwweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAw
MDAwMDJlLDB4MDAwMDAwMDMsCisJMHgwMDA0MDA0NywweDAwMDAwMDMwLDB4MDAwMDAwMjIsMHgw
MDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwMzAsMHgwMDAwMDAyMSwweDAwMDAwMDAyLAorCTB4
MDAwNDAwNDcsMHgwMDAwMDA0MiwweDAwMDAwMDBiLDB4MDAwMDAwMWMsMHgwMDA0MDA0NywweDAw
MDAwMDlkLDB4MDAwMDAwMDYsMHgwMDAwMDAwNCwKKwkweDAwMDUwMDQ4LDB4MDAwMDAwOWUsMHgw
MDAwMDAwMCwweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAwMDAwMDllLDB4MDAw
MDAwMDMsCisJMHgwMDA0MDA0NywweDAwMDAwMGEwLDB4MDAwMDAwMjIsMHgwMDAwMDAwMCwweDAw
MDQwMDQ3LDB4MDAwMDAwYTAsMHgwMDAwMDAyMSwweDAwMDAwMDAzLAorCTB4MDAwNDAwNDcsMHgw
MDAwMDBjNywweDAwMDAwMDBiLDB4MDAwMDAwMTksMHgwMDAyMDAxMywweDAwMDAwMDAyLDB4MDAw
MzAwMjEsMHgwMDAwMDAwMywKKwkweDAwMDAwMDAyLDB4MDAwNDAwMTUsMHgwMDAwMDAwNiwweDAw
MDAwMDIwLDB4MDAwMDAwMDAsMHgwMDA0MDAyMCwweDAwMDAwMDA3LDB4MDAwMDAwMDcsCisJMHgw
MDAwMDAwNiwweDAwMDQwMDIxLDB4MDAwMDAwMDgsMHgwMDAwMDAwNiwweDAwMDAwMDA3LDB4MDAw
NTAwMjEsMHgwMDAwMDAwYywweDAwMDAwMDAyLAorCTB4MDAwMDAwMDcsMHgwMDAwMDAwNywweDAw
MDMwMDFkLDB4MDAwMDAwMTEsMHgwMDAwMDAwNiwweDAwMDMwMDFlLDB4MDAwMDAwMTIsMHgwMDAw
MDAxMSwKKwkweDAwMDQwMDIwLDB4MDAwMDAwMTMsMHgwMDAwMDAwMiwweDAwMDAwMDEyLDB4MDAw
NDAwM2IsMHgwMDAwMDAxMywweDAwMDAwMDE0LDB4MDAwMDAwMDIsCisJMHgwMDA0MDAxNSwweDAw
MDAwMDE1LDB4MDAwMDAwMjAsMHgwMDAwMDAwMSwweDAwMDQwMDJiLDB4MDAwMDAwMTUsMHgwMDAw
MDAxNiwweDAwMDAwMDAwLAorCTB4MDAwNDAwMjAsMHgwMDAwMDAxOCwweDAwMDAwMDAyLDB4MDAw
MDAwMDYsMHgwMDAzMDAxZCwweDAwMDAwMDFkLDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwKKwkweDAw
MDAwMDFlLDB4MDAwMDAwMWQsMHgwMDA0MDAyMCwweDAwMDAwMDFmLDB4MDAwMDAwMDIsMHgwMDAw
MDAxZSwweDAwMDQwMDNiLDB4MDAwMDAwMWYsCisJMHgwMDAwMDAyMCwweDAwMDAwMDAyLDB4MDAw
NjAwMWUsMHgwMDAwMDAyMSwweDAwMDAwMDA2LDB4MDAwMDAwMDYsMHgwMDAwMDAwNiwweDAwMDAw
MDA2LAorCTB4MDAwNDAwMjAsMHgwMDAwMDAyMiwweDAwMDAwMDA5LDB4MDAwMDAwMjEsMHgwMDA0
MDAzYiwweDAwMDAwMDIyLDB4MDAwMDAwMjMsMHgwMDAwMDAwOSwKKwkweDAwMDQwMDJiLDB4MDAw
MDAwMTUsMHgwMDAwMDAyNCwweDAwMDAwMDAyLDB4MDAwNDAwMjAsMHgwMDAwMDAyNSwweDAwMDAw
MDA5LDB4MDAwMDAwMDYsCisJMHgwMDAzMDAxZCwweDAwMDAwMDJkLDB4MDAwMDAwMDYsMHgwMDAz
MDAxZSwweDAwMDAwMDJlLDB4MDAwMDAwMmQsMHgwMDA0MDAyMCwweDAwMDAwMDJmLAorCTB4MDAw
MDAwMDIsMHgwMDAwMDAyZSwweDAwMDQwMDNiLDB4MDAwMDAwMmYsMHgwMDAwMDAzMCwweDAwMDAw
MDAyLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDM4LDB4MDAwMDAwMDIsMHgwMDA0
MDAxNywweDAwMDAwMDQwLDB4MDAwMDAwMDYsMHgwMDAwMDAwMywweDAwMDQwMDIwLDB4MDAwMDAw
NDEsCisJMHgwMDAwMDAwMSwweDAwMDAwMDQwLDB4MDAwNDAwM2IsMHgwMDAwMDA0MSwweDAwMDAw
MDQyLDB4MDAwMDAwMDEsMHgwMDA0MDAyYiwweDAwMDAwMDA2LAorCTB4MDAwMDAwNDMsMHgwMDAw
MDAwMCwweDAwMDQwMDIwLDB4MDAwMDAwNDQsMHgwMDAwMDAwMSwweDAwMDAwMDA2LDB4MDAwNDAw
MmIsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDQ3LDB4MDAwMDAwMDEsMHgwMDAyMDAxNCwweDAwMDAw
MDQ4LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDVjLDB4ZmZmZmZmZmYsCisJMHgwMDA0
MDAyYiwweDAwMDAwMDE1LDB4MDAwMDAwNWYsMHgwMDAwMDAwMSwweDAwMDQwMDJiLDB4MDAwMDAw
MTUsMHgwMDAwMDA2YSwweDAwMDAwMDAzLAorCTB4MDAwMzAwMWQsMHgwMDAwMDA5ZCwweDAwMDAw
MDA2LDB4MDAwMzAwMWUsMHgwMDAwMDA5ZSwweDAwMDAwMDlkLDB4MDAwNDAwMjAsMHgwMDAwMDA5
ZiwKKwkweDAwMDAwMDAyLDB4MDAwMDAwOWUsMHgwMDA0MDAzYiwweDAwMDAwMDlmLDB4MDAwMDAw
YTAsMHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBiNCwweDAwMDAw
MDAzLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMGJlLDB4MDAwMDAwMDQsMHgwMDA0MDAy
YiwweDAwMDAwMDA2LAorCTB4MDAwMDAwYzYsMHgwMDAwMDA0MCwweDAwMDYwMDJjLDB4MDAwMDAw
NDAsMHgwMDAwMDBjNywweDAwMDAwMGM2LDB4MDAwMDAwNDcsMHgwMDAwMDA0NywKKwkweDAwMDUw
MDM2LDB4MDAwMDAwMDIsMHgwMDAwMDAwNCwweDAwMDAwMDAwLDB4MDAwMDAwMDMsMHgwMDAyMDBm
OCwweDAwMDAwMDA1LDB4MDAwNDAwM2IsCisJMHgwMDAwMDAwNywweDAwMDAwMDJjLDB4MDAwMDAw
MDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwMzUsMHgwMDAwMDAwNywweDAwMDQwMDNi
LAorCTB4MDAwMDAwMDcsMHgwMDAwMDAzYywweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAw
NywweDAwMDAwMDRkLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKKwkweDAwMDAwMDA3LDB4MDAwMDAw
NGUsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA1MCwweDAwMDAwMDA3
LDB4MDAwNDAwM2IsCisJMHgwMDAwMDAwNywweDAwMDAwMDUyLDB4MDAwMDAwMDcsMHgwMDA0MDAz
YiwweDAwMDAwMDA3LDB4MDAwMDAwNTMsMHgwMDAwMDAwNywweDAwMDQwMDNiLAorCTB4MDAwMDAw
MDcsMHgwMDAwMDA1YiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDVk
LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKKwkweDAwMDAwMDA3LDB4MDAwMDAwNjEsMHgwMDAwMDAw
NywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3YSwweDAwMDAwMDA3LDB4MDAwNDAwM2Is
CisJMHgwMDAwMDAwNywweDAwMDAwMDdiLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3
LDB4MDAwMDAwODQsMHgwMDAwMDAwNywweDAwMDQwMDNiLAorCTB4MDAwMDAwMDcsMHgwMDAwMDA4
NSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDg5LDB4MDAwMDAwMDcs
MHgwMDA0MDAzYiwKKwkweDAwMDAwMDA3LDB4MDAwMDAwOGIsMHgwMDAwMDAwNywweDAwMDQwMDNi
LDB4MDAwMDAwMDcsMHgwMDAwMDA5NiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsCisJMHgwMDAwMDAw
NywweDAwMDAwMDk4LDB4MDAwMDAwMDcsMHgwMDA1MDA0MSwweDAwMDAwMDI1LDB4MDAwMDAwMzEs
MHgwMDAwMDAyMywweDAwMDAwMDE2LAorCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDMy
LDB4MDAwMDAwMzEsMHgwMDA2MDA0MSwweDAwMDAwMDE4LDB4MDAwMDAwMzMsMHgwMDAwMDAzMCwK
KwkweDAwMDAwMDE2LDB4MDAwMDAwMzIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMzQs
MHgwMDAwMDAzMywweDAwMDMwMDNlLDB4MDAwMDAwMmMsCisJMHgwMDAwMDAzNCwweDAwMDUwMDQx
LDB4MDAwMDAwMjUsMHgwMDAwMDAzNiwweDAwMDAwMDIzLDB4MDAwMDAwMTYsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LAorCTB4MDAwMDAwMzcsMHgwMDAwMDAzNiwweDAwMDUwMDgwLDB4MDAwMDAwMDYs
MHgwMDAwMDAzOSwweDAwMDAwMDM3LDB4MDAwMDAwMzgsMHgwMDA2MDA0MSwKKwkweDAwMDAwMDE4
LDB4MDAwMDAwM2EsMHgwMDAwMDAzMCwweDAwMDAwMDE2LDB4MDAwMDAwMzksMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwM2IsCisJMHgwMDAwMDAzYSwweDAwMDMwMDNlLDB4MDAwMDAwMzUs
MHgwMDAwMDAzYiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzZCwweDAwMDAwMDM1LAor
CTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDNlLDB4MDAwMDAwMmMsMHgwMDA1MDA4MCww
eDAwMDAwMDA2LDB4MDAwMDAwM2YsMHgwMDAwMDAzZCwKKwkweDAwMDAwMDNlLDB4MDAwMzAwM2Us
MHgwMDAwMDAzYywweDAwMDAwMDNmLDB4MDAwNTAwNDEsMHgwMDAwMDA0NCwweDAwMDAwMDQ1LDB4
MDAwMDAwNDIsCisJMHgwMDAwMDA0MywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0Niww
eDAwMDAwMDQ1LDB4MDAwNTAwYWUsMHgwMDAwMDA0OCwweDAwMDAwMDQ5LAorCTB4MDAwMDAwNDYs
MHgwMDAwMDA0NywweDAwMDMwMGY3LDB4MDAwMDAwNGIsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4
MDAwMDAwNDksMHgwMDAwMDA0YSwKKwkweDAwMDAwMDRiLDB4MDAwMjAwZjgsMHgwMDAwMDA0YSww
eDAwMDEwMGZkLDB4MDAwMjAwZjgsMHgwMDAwMDA0YiwweDAwMDMwMDNlLDB4MDAwMDAwNGQsCisJ
MHgwMDAwMDA0MywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0ZiwweDAwMDAwMDM1LDB4
MDAwMzAwM2UsMHgwMDAwMDA0ZSwweDAwMDAwMDRmLAorCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDUxLDB4MDAwMDAwMmMsMHgwMDAzMDAzZSwweDAwMDAwMDUwLDB4MDAwMDAwNTEsMHgw
MDAzMDAzZSwKKwkweDAwMDAwMDUyLDB4MDAwMDAwNDMsMHgwMDAzMDAzZSwweDAwMDAwMDUzLDB4
MDAwMDAwNDMsMHgwMDAyMDBmOSwweDAwMDAwMDU0LDB4MDAwMjAwZjgsCisJMHgwMDAwMDA1NCww
eDAwMDQwMGY2LDB4MDAwMDAwNTYsMHgwMDAwMDA1NywweDAwMDAwMDAwLDB4MDAwMjAwZjksMHgw
MDAwMDA1OCwweDAwMDIwMGY4LAorCTB4MDAwMDAwNTgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwNTksMHgwMDAwMDA1MCwweDAwMDUwMGFjLDB4MDAwMDAwNDgsMHgwMDAwMDA1YSwKKwkw
eDAwMDAwMDU5LDB4MDAwMDAwNDMsMHgwMDA0MDBmYSwweDAwMDAwMDVhLDB4MDAwMDAwNTUsMHgw
MDAwMDA1NiwweDAwMDIwMGY4LDB4MDAwMDAwNTUsCisJMHgwMDAzMDAzZSwweDAwMDAwMDViLDB4
MDAwMDAwNWMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNWUsMHgwMDAwMDA0ZSwweDAw
MDUwMDgwLAorCTB4MDAwMDAwMDYsMHgwMDAwMDA2MCwweDAwMDAwMDVlLDB4MDAwMDAwNWYsMHgw
MDAzMDAzZSwweDAwMDAwMDRlLDB4MDAwMDAwNjAsMHgwMDAzMDAzZSwKKwkweDAwMDAwMDYxLDB4
MDAwMDAwNWUsMHgwMDA1MDAzOSwweDAwMDAwMDA2LDB4MDAwMDAwNjIsMHgwMDAwMDAwYSwweDAw
MDAwMDYxLDB4MDAwMzAwM2UsCisJMHgwMDAwMDA1ZCwweDAwMDAwMDYyLDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwweDAwMDAwMDYzLDB4MDAwMDAwNTIsMHgwMDA1MDBhYSwweDAwMDAwMDQ4LAorCTB4
MDAwMDAwNjQsMHgwMDAwMDA2MywweDAwMDAwMDQzLDB4MDAwMzAwZjcsMHgwMDAwMDA2NiwweDAw
MDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA2NCwKKwkweDAwMDAwMDY1LDB4MDAwMDAwNjYsMHgw
MDAyMDBmOCwweDAwMDAwMDY1LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDY3LDB4MDAw
MDAwNWQsCisJMHgwMDAzMDAzZSwweDAwMDAwMDUzLDB4MDAwMDAwNjcsMHgwMDAyMDBmOSwweDAw
MDAwMDY2LDB4MDAwMjAwZjgsMHgwMDAwMDA2NiwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgw
MDAwMDA2OCwweDAwMDAwMDUwLDB4MDAwNTAwODIsMHgwMDAwMDAwNiwweDAwMDAwMDY5LDB4MDAw
MDAwNjgsMHgwMDAwMDA1ZiwKKwkweDAwMDMwMDNlLDB4MDAwMDAwNTAsMHgwMDAwMDA2OSwweDAw
MDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDA2YiwweDAwMDAwMDIzLDB4MDAwMDAwNmEsCisJMHgw
MDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNmMsMHgwMDAwMDA2YiwweDAwMDUwMGFhLDB4MDAw
MDAwNDgsMHgwMDAwMDA2ZCwweDAwMDAwMDZjLAorCTB4MDAwMDAwNDcsMHgwMDA0MDAzZCwweDAw
MDAwMDA2LDB4MDAwMDAwNmUsMHgwMDAwMDA1ZCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDA2ZiwKKwkweDAwMDAwMDViLDB4MDAwNTAwYWEsMHgwMDAwMDA0OCwweDAwMDAwMDcwLDB4MDAw
MDAwNmUsMHgwMDAwMDA2ZiwweDAwMDUwMGE3LDB4MDAwMDAwNDgsCisJMHgwMDAwMDA3MSwweDAw
MDAwMDZkLDB4MDAwMDAwNzAsMHgwMDAzMDBmNywweDAwMDAwMDczLDB4MDAwMDAwMDAsMHgwMDA0
MDBmYSwweDAwMDAwMDcxLAorCTB4MDAwMDAwNzIsMHgwMDAwMDA4OCwweDAwMDIwMGY4LDB4MDAw
MDAwNzIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNzQsMHgwMDAwMDA1MiwKKwkweDAw
MDUwMGFjLDB4MDAwMDAwNDgsMHgwMDAwMDA3NSwweDAwMDAwMDc0LDB4MDAwMDAwNDcsMHgwMDAz
MDBmNywweDAwMDAwMDc3LDB4MDAwMDAwMDAsCisJMHgwMDA0MDBmYSwweDAwMDAwMDc1LDB4MDAw
MDAwNzYsMHgwMDAwMDA3NywweDAwMDIwMGY4LDB4MDAwMDAwNzYsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LAorCTB4MDAwMDAwNzgsMHgwMDAwMDA0ZCwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAw
MDA3OSwweDAwMDAwMDc4LDB4MDAwMDAwNWYsMHgwMDAzMDAzZSwKKwkweDAwMDAwMDRkLDB4MDAw
MDAwNzksMHgwMDAzMDAzZSwweDAwMDAwMDdhLDB4MDAwMDAwNzgsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwN2MsCisJMHgwMDAwMDA1MywweDAwMDMwMDNlLDB4MDAwMDAwN2IsMHgwMDAw
MDA3YywweDAwMDYwMDM5LDB4MDAwMDAwMDIsMHgwMDAwMDA3ZCwweDAwMDAwMDBmLAorCTB4MDAw
MDAwN2EsMHgwMDAwMDA3YiwweDAwMDIwMGY5LDB4MDAwMDAwNzcsMHgwMDAyMDBmOCwweDAwMDAw
MDc3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDdlLDB4MDAwMDAwNTIsMHgwMDA1
MDBhYywweDAwMDAwMDQ4LDB4MDAwMDAwN2YsMHgwMDAwMDA3ZSwweDAwMDAwMDQzLDB4MDAwMzAw
ZjcsCisJMHgwMDAwMDA4MSwweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA3ZiwweDAwMDAw
MDgwLDB4MDAwMDAwODEsMHgwMDAyMDBmOCwweDAwMDAwMDgwLAorCTB4MDAwNDAwM2QsMHgwMDAw
MDAwNiwweDAwMDAwMDgyLDB4MDAwMDAwNGQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAw
ODMsMHgwMDAwMDA4MiwKKwkweDAwMDAwMDVmLDB4MDAwMzAwM2UsMHgwMDAwMDA0ZCwweDAwMDAw
MDgzLDB4MDAwMzAwM2UsMHgwMDAwMDA4NCwweDAwMDAwMDgyLDB4MDAwNDAwM2QsCisJMHgwMDAw
MDAwNiwweDAwMDAwMDg2LDB4MDAwMDAwNWIsMHgwMDAzMDAzZSwweDAwMDAwMDg1LDB4MDAwMDAw
ODYsMHgwMDA2MDAzOSwweDAwMDAwMDAyLAorCTB4MDAwMDAwODcsMHgwMDAwMDAwZiwweDAwMDAw
MDg0LDB4MDAwMDAwODUsMHgwMDAyMDBmOSwweDAwMDAwMDgxLDB4MDAwMjAwZjgsMHgwMDAwMDA4
MSwKKwkweDAwMDMwMDNlLDB4MDAwMDAwNTIsMHgwMDAwMDA0MywweDAwMDIwMGY5LDB4MDAwMDAw
NzMsMHgwMDAyMDBmOCwweDAwMDAwMDg4LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAw
MDhhLDB4MDAwMDAwNGQsMHgwMDAzMDAzZSwweDAwMDAwMDg5LDB4MDAwMDAwOGEsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwOGMsMHgwMDAwMDA1ZCwweDAwMDMwMDNlLDB4MDAwMDAw
OGIsMHgwMDAwMDA4YywweDAwMDYwMDM5LDB4MDAwMDAwMDIsMHgwMDAwMDA4ZCwKKwkweDAwMDAw
MDBmLDB4MDAwMDAwODksMHgwMDAwMDA4YiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4
ZSwweDAwMDAwMDRkLDB4MDAwNTAwODAsCisJMHgwMDAwMDAwNiwweDAwMDAwMDhmLDB4MDAwMDAw
OGUsMHgwMDAwMDA1ZiwweDAwMDMwMDNlLDB4MDAwMDAwNGQsMHgwMDAwMDA4ZiwweDAwMDQwMDNk
LAorCTB4MDAwMDAwMDYsMHgwMDAwMDA5MCwweDAwMDAwMDUyLDB4MDAwNTAwODAsMHgwMDAwMDAw
NiwweDAwMDAwMDkxLDB4MDAwMDAwOTAsMHgwMDAwMDA1ZiwKKwkweDAwMDMwMDNlLDB4MDAwMDAw
NTIsMHgwMDAwMDA5MSwweDAwMDIwMGY5LDB4MDAwMDAwNzMsMHgwMDAyMDBmOCwweDAwMDAwMDcz
LDB4MDAwMjAwZjksCisJMHgwMDAwMDA1NywweDAwMDIwMGY4LDB4MDAwMDAwNTcsMHgwMDAyMDBm
OSwweDAwMDAwMDU0LDB4MDAwMjAwZjgsMHgwMDAwMDA1NiwweDAwMDQwMDNkLAorCTB4MDAwMDAw
MDYsMHgwMDAwMDA5MiwweDAwMDAwMDUyLDB4MDAwNTAwYWMsMHgwMDAwMDA0OCwweDAwMDAwMDkz
LDB4MDAwMDAwOTIsMHgwMDAwMDA0NywKKwkweDAwMDMwMGY3LDB4MDAwMDAwOTUsMHgwMDAwMDAw
MCwweDAwMDQwMGZhLDB4MDAwMDAwOTMsMHgwMDAwMDA5NCwweDAwMDAwMDk1LDB4MDAwMjAwZjgs
CisJMHgwMDAwMDA5NCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA5NywweDAwMDAwMDRk
LDB4MDAwMzAwM2UsMHgwMDAwMDA5NiwweDAwMDAwMDk3LAorCTB4MDAwNDAwM2QsMHgwMDAwMDAw
NiwweDAwMDAwMDk5LDB4MDAwMDAwNTMsMHgwMDAzMDAzZSwweDAwMDAwMDk4LDB4MDAwMDAwOTks
MHgwMDA2MDAzOSwKKwkweDAwMDAwMDAyLDB4MDAwMDAwOWEsMHgwMDAwMDAwZiwweDAwMDAwMDk2
LDB4MDAwMDAwOTgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOWIsCisJMHgwMDAwMDA0
ZCwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA5YywweDAwMDAwMDliLDB4MDAwMDAwNWYs
MHgwMDAzMDAzZSwweDAwMDAwMDRkLAorCTB4MDAwMDAwOWMsMHgwMDAyMDBmOSwweDAwMDAwMDk1
LDB4MDAwMjAwZjgsMHgwMDAwMDA5NSwweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDBhMSwK
KwkweDAwMDAwMDIzLDB4MDAwMDAwNWYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYTIs
MHgwMDAwMDBhMSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBhMywweDAwMDAwMDRk
LDB4MDAwNjAwNDEsMHgwMDAwMDAxOCwweDAwMDAwMGE0LDB4MDAwMDAwYTAsMHgwMDAwMDAxNiww
eDAwMDAwMGEyLAorCTB4MDAwMzAwM2UsMHgwMDAwMDBhNCwweDAwMDAwMGEzLDB4MDAwNTAwNDEs
MHgwMDAwMDAyNSwweDAwMDAwMGE1LDB4MDAwMDAwMjMsMHgwMDAwMDA1ZiwKKwkweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDBhNiwweDAwMDAwMGE1LDB4MDAwNTAwODAsMHgwMDAwMDAwNiww
eDAwMDAwMGE3LDB4MDAwMDAwYTYsCisJMHgwMDAwMDA0NywweDAwMDUwMDQxLDB4MDAwMDAwMjUs
MHgwMDAwMDBhOCwweDAwMDAwMDIzLDB4MDAwMDAwMTYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAor
CTB4MDAwMDAwYTksMHgwMDAwMDBhOCwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBhYSww
eDAwMDAwMGE5LDB4MDAwMDAwNDcsMHgwMDA2MDA0MSwKKwkweDAwMDAwMDE4LDB4MDAwMDAwYWIs
MHgwMDAwMDAzMCwweDAwMDAwMDE2LDB4MDAwMDAwYWEsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwYWMsCisJMHgwMDAwMDBhYiwweDAwMDYwMDQxLDB4MDAwMDAwMTgsMHgwMDAwMDBhZCww
eDAwMDAwMGEwLDB4MDAwMDAwMTYsMHgwMDAwMDBhNywweDAwMDMwMDNlLAorCTB4MDAwMDAwYWQs
MHgwMDAwMDBhYywweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDBhZSwweDAwMDAwMDIzLDB4
MDAwMDAwNWYsMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwYWYsMHgwMDAwMDBhZSww
eDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBiMCwweDAwMDAwMGFmLDB4MDAwMDAwMzgsCisJ
MHgwMDA2MDA0MSwweDAwMDAwMDE4LDB4MDAwMDAwYjEsMHgwMDAwMDBhMCwweDAwMDAwMDE2LDB4
MDAwMDAwYjAsMHgwMDAzMDAzZSwweDAwMDAwMGIxLAorCTB4MDAwMDAwNDMsMHgwMDA1MDA0MSww
eDAwMDAwMDI1LDB4MDAwMDAwYjIsMHgwMDAwMDAyMywweDAwMDAwMDVmLDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwKKwkweDAwMDAwMGIzLDB4MDAwMDAwYjIsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4
MDAwMDAwYjUsMHgwMDAwMDBiMywweDAwMDAwMGI0LDB4MDAwNTAwNDEsCisJMHgwMDAwMDAyNSww
eDAwMDAwMGI2LDB4MDAwMDAwMjMsMHgwMDAwMDAxNiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDBiNywweDAwMDAwMGI2LAorCTB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGI4LDB4
MDAwMDAwYjcsMHgwMDAwMDBiNCwweDAwMDYwMDQxLDB4MDAwMDAwMTgsMHgwMDAwMDBiOSwKKwkw
eDAwMDAwMDMwLDB4MDAwMDAwMTYsMHgwMDAwMDBiOCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDBiYSwweDAwMDAwMGI5LDB4MDAwNjAwNDEsCisJMHgwMDAwMDAxOCwweDAwMDAwMGJiLDB4
MDAwMDAwYTAsMHgwMDAwMDAxNiwweDAwMDAwMGI1LDB4MDAwMzAwM2UsMHgwMDAwMDBiYiwweDAw
MDAwMGJhLAorCTB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMGJjLDB4MDAwMDAwMjMsMHgw
MDAwMDA1ZiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiZCwKKwkweDAwMDAwMGJjLDB4
MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGJmLDB4MDAwMDAwYmQsMHgwMDAwMDBiZSwweDAw
MDUwMDQxLDB4MDAwMDAwMjUsCisJMHgwMDAwMDBjMCwweDAwMDAwMDIzLDB4MDAwMDAwMTYsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYzEsMHgwMDAwMDBjMCwweDAwMDUwMDgwLAorCTB4
MDAwMDAwMDYsMHgwMDAwMDBjMiwweDAwMDAwMGMxLDB4MDAwMDAwYmUsMHgwMDA2MDA0MSwweDAw
MDAwMDE4LDB4MDAwMDAwYzMsMHgwMDAwMDAzMCwKKwkweDAwMDAwMDE2LDB4MDAwMDAwYzIsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYzQsMHgwMDAwMDBjMywweDAwMDYwMDQxLDB4MDAw
MDAwMTgsCisJMHgwMDAwMDBjNSwweDAwMDAwMGEwLDB4MDAwMDAwMTYsMHgwMDAwMDBiZiwweDAw
MDMwMDNlLDB4MDAwMDAwYzUsMHgwMDAwMDBjNCwweDAwMDEwMGZkLAorCTB4MDAwMTAwMzgsMHgw
MDA1MDAzNiwweDAwMDAwMDA2LDB4MDAwMDAwMGEsMHgwMDAwMDAwMCwweDAwMDAwMDA4LDB4MDAw
MzAwMzcsMHgwMDAwMDAwNywKKwkweDAwMDAwMDA5LDB4MDAwMjAwZjgsMHgwMDAwMDAwYiwweDAw
MDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAxNywweDAwMDAwMDA5LDB4MDAwNjAwNDEsCisJMHgw
MDAwMDAxOCwweDAwMDAwMDE5LDB4MDAwMDAwMTQsMHgwMDAwMDAxNiwweDAwMDAwMDE3LDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDFhLAorCTB4MDAwMDAwMTksMHgwMDAyMDBmZSwweDAw
MDAwMDFhLDB4MDAwMTAwMzgsMHgwMDA1MDAzNiwweDAwMDAwMDAyLDB4MDAwMDAwMGYsMHgwMDAw
MDAwMCwKKwkweDAwMDAwMDBjLDB4MDAwMzAwMzcsMHgwMDAwMDAwNywweDAwMDAwMDBkLDB4MDAw
MzAwMzcsMHgwMDAwMDAwNywweDAwMDAwMDBlLDB4MDAwMjAwZjgsCisJMHgwMDAwMDAxMCwweDAw
MDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDAyNiwweDAwMDAwMDIzLDB4MDAwMDAwMjQsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwMjcsMHgwMDAwMDAyNiwweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDAyOCwweDAwMDAwMDBkLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwKKwkweDAw
MDAwMDI5LDB4MDAwMDAwMjcsMHgwMDAwMDAyOCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDAyYSwweDAwMDAwMDBlLDB4MDAwNjAwNDEsCisJMHgwMDAwMDAxOCwweDAwMDAwMDJiLDB4MDAw
MDAwMjAsMHgwMDAwMDAxNiwweDAwMDAwMDI5LDB4MDAwMzAwM2UsMHgwMDAwMDAyYiwweDAwMDAw
MDJhLAorCTB4MDAwMTAwZmQsMHgwMDAxMDAzOAorfTsKKworLy8gR2VuZXJhdGVkIGZyb206Cisv
LworLy8gI3ZlcnNpb24gNDUwIGNvcmUKKy8vCisvLyBsYXlvdXQobG9jYWxfc2l6ZV94ID0gNjQs
IGxvY2FsX3NpemVfeSA9IDEsIGxvY2FsX3NpemVfeiA9IDEpaW47CisvLworLy8gbGF5b3V0KHNl
dCA9IDAsIGJpbmRpbmcgPSAwKWJ1ZmZlciBkc3QKKy8vIHsKKy8vCisvLyAgICAgdWludCBkc3RE
YXRhW107CisvLyB9OworLy8KKy8vIGxheW91dChzZXQgPSAwLCBiaW5kaW5nID0gMSlyZWFkb25s
eSBidWZmZXIgc3JjCisvLyB7CisvLworLy8gICAgIHVpbnQgc3JjRGF0YVtdOworLy8gfTsKKy8v
CisvLyBsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDIpcmVhZG9ubHkgYnVmZmVyIGNtZAorLy8g
eworLy8KKy8vICAgICB1aW50IGNtZERhdGFbXTsKKy8vIH07CisvLworLy8gbGF5b3V0KHNldCA9
IDAsIGJpbmRpbmcgPSAzKWJ1ZmZlciBkc3RDbWQKKy8vIHsKKy8vCisvLyAgICAgdWludCBkc3RD
bWREYXRhW107CisvLyB9OworLy8KKy8vIGxheW91dChwdXNoX2NvbnN0YW50KXVuaWZvcm0gUHVz
aENvbnN0YW50cworLy8geworLy8KKy8vICAgICB1aW50IGNtZE9mZnNldERpdjQ7CisvLworLy8g
ICAgIHVpbnQgZHN0Q21kT2Zmc2V0RGl2NDsKKy8vCisvLyAgICAgdWludCBkc3RPZmZzZXREaXY0
OworLy8KKy8vICAgICB1aW50IGlzUmVzdGFydEVuYWJsZWQ7CisvLyB9OworLy8KKy8vIHVpbnQg
R2V0SW5kZXhWYWx1ZSh1aW50IGluZGV4KQorLy8geworLy8KKy8vICAgICByZXR1cm4gc3JjRGF0
YVtpbmRleF07CisvLworLy8gfQorLy8KKy8vIHZvaWQgUHV0SW5kZXhWYWx1ZSh1aW50IGluZGV4
LCB1aW50IHZhbHVlKQorLy8geworLy8KKy8vICAgICBkc3REYXRhW2RzdE9mZnNldERpdjQgKyBp
bmRleF09IHZhbHVlOworLy8KKy8vIH0KKy8vCisvLyB2b2lkIG1haW4oKQorLy8geworLy8KKy8v
ICAgICB1aW50IGluZGV4Q291bnQgPSBjbWREYXRhW2NtZE9mZnNldERpdjRdOworLy8gICAgIHVp
bnQgZmlyc3RJbmRleCA9IGNtZERhdGFbY21kT2Zmc2V0RGl2NCArIDJdOworLy8gICAgIHVpbnQg
ZW5kSW5kZXggPSBmaXJzdEluZGV4ICsgaW5kZXhDb3VudDsKKy8vCisvLyAgICAgaWYoZ2xfR2xv
YmFsSW52b2NhdGlvbklEIC4geCA+PSAxKQorLy8gICAgICAgICByZXR1cm47CisvLworLy8gICAg
IHVpbnQgd29ya2luZ0NvdW50ID0gMDsKKy8vICAgICB1aW50IHNyY0lkeCA9IGZpcnN0SW5kZXg7
CisvLyAgICAgdWludCBpbmRpY2VzUmVtYWluaW5nID0gaW5kZXhDb3VudDsKKy8vICAgICB1aW50
IGxpbmVTaXplID0gMDsKKy8vICAgICB1aW50IGZpcnN0SW5kZXhWYWx1ZSA9IDA7CisvLyAgICAg
d2hpbGUoaW5kaWNlc1JlbWFpbmluZyA+IDApCisvLyAgICAgeworLy8gICAgICAgICB1aW50IGlu
ZGV4VmFsdWU7CisvLyAgICAgICAgIHVpbnQgcmVzdGFydFZhbHVlID0gMHhmZmZmZmZmZjsKKy8v
ICAgICAgICAgaW5kZXhWYWx1ZSA9IEdldEluZGV4VmFsdWUoc3JjSWR4ICsrKTsKKy8vICAgICAg
ICAgaWYobGluZVNpemUgPT0gMCkKKy8vICAgICAgICAgeworLy8gICAgICAgICAgICAgZmlyc3RJ
bmRleFZhbHVlID0gaW5kZXhWYWx1ZTsKKy8vICAgICAgICAgfQorLy8gICAgICAgICBpbmRpY2Vz
UmVtYWluaW5nIC0tOworLy8gICAgICAgICBpZigoaXNSZXN0YXJ0RW5hYmxlZCA9PSAxKSYmKGlu
ZGV4VmFsdWUgPT0gcmVzdGFydFZhbHVlKSkKKy8vICAgICAgICAgeworLy8KKy8vICAgICAgICAg
ICAgIGlmKGxpbmVTaXplID4gMSkKKy8vICAgICAgICAgICAgIHsKKy8vICAgICAgICAgICAgICAg
ICBQdXRJbmRleFZhbHVlKHdvcmtpbmdDb3VudCArKywgZmlyc3RJbmRleFZhbHVlKTsKKy8vICAg
ICAgICAgICAgIH0KKy8vICAgICAgICAgICAgIGlmKGxpbmVTaXplID4gMCkKKy8vICAgICAgICAg
ICAgIHsKKy8vICAgICAgICAgICAgICAgICBQdXRJbmRleFZhbHVlKHdvcmtpbmdDb3VudCArKywg
cmVzdGFydFZhbHVlKTsKKy8vICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgIGxpbmVTaXpl
ID0gMDsKKy8vICAgICAgICAgfSBlbHNlIHsKKy8vICAgICAgICAgICAgIFB1dEluZGV4VmFsdWUo
d29ya2luZ0NvdW50LCBpbmRleFZhbHVlKTsKKy8vICAgICAgICAgICAgIHdvcmtpbmdDb3VudCAr
KzsKKy8vICAgICAgICAgICAgIGxpbmVTaXplICsrOworLy8gICAgICAgICB9CisvLyAgICAgfQor
Ly8gICAgIGlmKGxpbmVTaXplID4gMSkKKy8vICAgICB7CisvLyAgICAgICAgIFB1dEluZGV4VmFs
dWUod29ya2luZ0NvdW50LCBmaXJzdEluZGV4VmFsdWUpOworLy8gICAgICAgICB3b3JraW5nQ291
bnQgKys7CisvLyAgICAgfQorLy8KKy8vICAgICBkc3RDbWREYXRhW2RzdENtZE9mZnNldERpdjRd
PSB3b3JraW5nQ291bnQ7CisvLyAgICAgZHN0Q21kRGF0YVtkc3RDbWRPZmZzZXREaXY0ICsgMV09
IGNtZERhdGFbY21kT2Zmc2V0RGl2NCArIDFdOworLy8gICAgIGRzdENtZERhdGFbZHN0Q21kT2Zm
c2V0RGl2NCArIDJdPSAwOworLy8gICAgIGRzdENtZERhdGFbZHN0Q21kT2Zmc2V0RGl2NCArIDNd
PSBjbWREYXRhW2NtZE9mZnNldERpdjQgKyAzXTsKKy8vICAgICBkc3RDbWREYXRhW2RzdENtZE9m
ZnNldERpdjQgKyA0XT0gY21kRGF0YVtjbWRPZmZzZXREaXY0ICsgNF07CisvLyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3NoYWRlcnMvc3JjL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9zcmMv
Q29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wCmluZGV4IDA1M2IzMjI4YjIyNjg4ZDkx
OTY0Y2MyNzZjYzU3NzJlZWJmNDI1YmYuLmRiNjQ4ZTY4NGNjNjFmMDM4M2UyZjRlNjIzNzBmNGNi
NzFhNDY1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9v
cC5jb21wCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wCkBA
IC04LDEyICs4LDI5IEBACiAvLwogLy8gVGhlIGZvbGxvd2luZyBkZWZpbmVzIHR3ZWFrIHRoZSBm
dW5jdGlvbmFsaXR5LCBhbmQgYSBkaWZmZXJlbnQgc2hhZGVyIGlzIGJ1aWx0IGJhc2VkIG9uIHRo
ZXNlLgogLy8KLS8vICAtIEZsYWdzOgotLy8gICAgKiBJczMyQml0OiBQcm9jZXNzIDMyLWJpdCBp
bmRpY2VzLCBvdGhlcndpc2UgcHJvY2VzcyAxNi1iaXQuCisvLyAgLSBJbmRpY2VzQml0c1dpZHRo
OgorLy8gICAgKiBJczhCaXRzOiAgUHJvY2VzcyA4LWJpdCBpbmRpY2VzLgorLy8gICAgKiBJczE2
Qml0czogUHJvY2VzcyAxNi1iaXQgaW5kaWNlcy4KKy8vICAgICogSXMzMkJpdHM6IFByb2Nlc3Mg
MzItYml0IGluZGljZXMuCiAvLwogCiAjdmVyc2lvbiA0NTAgY29yZQogCisjaWYgSXMzMkJpdHMK
KyNkZWZpbmUgQklUU01BU0sgMHhmZmZmZmZmZgorI2VsaWYgSXMxNkJpdHMKKyNkZWZpbmUgQklU
U01BU0sgMHhmZmZmCisjZGVmaW5lIElEWFNISUZUIDEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gMTZiaXRzIGluZGV4IGRpdmlzaW9uIHNoaWZ0CisjZGVmaW5lIFNSQ1NISUZUKGluZGV4
KSAoKGluZGV4ICYgMHgxKSA8PCA0KSAgLy8gMTZiaXRzIGRhdGEgc2hpZnQgdmFsdWUgaW4gMzJi
aXRzIGluZGV4CisjZWxpZiBJczhCaXRzCisjZGVmaW5lIEJJVFNNQVNLIDB4ZmYKKyNkZWZpbmUg
SURYU0hJRlQgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA4Yml0cyBpbmRleCBkaXZp
c2lvbiBzaGlmdAorI2RlZmluZSBTUkNTSElGVChpbmRleCkgKChpbmRleCAmIDB4MykgPDwgMykg
IC8vIDhiaXRzIGRhdGEgc2hpZnQgdmFsdWUgaW4gMzJiaXRzIGluZGV4CisjZWxzZQorLy8gRWFy
bHkgZXJyb3Igb3V0CisjZXJyb3IgIk5vdCBhbGwgYml0cyBhcmUgYWNjb3VudGVkIGZvciIKKyNl
bmRpZgorCiBsYXlvdXQgKGxvY2FsX3NpemVfeCA9IDY0LCBsb2NhbF9zaXplX3kgPSAxLCBsb2Nh
bF9zaXplX3ogPSAxKSBpbjsKIAogbGF5b3V0IChzZXQgPSAwLCBiaW5kaW5nID0gMCkgYnVmZmVy
IGRzdApAQCAtNjQsNDMgKzgxLDQyIEBAIGxheW91dCAocHVzaF9jb25zdGFudCkgdW5pZm9ybSBQ
dXNoQ29uc3RhbnRzCiAKIHVpbnQgR2V0SW5kZXhWYWx1ZSh1aW50IGluZGV4KQogewotI2lmZGVm
IElzMzJCaXQKKyNpZiBJczMyQml0cwogICAgIHJldHVybiBzcmNEYXRhW2luZGV4XTsKLSNlbHNl
CisjZWxpZiBJczE2Qml0cyB8fCBJczhCaXRzCiAgICAgLy8gc3JjRGF0YSBwb2ludHMgdG8gMzJi
aXQgd29yZHMsIGdldCB0aGUgd29yZCB3aXRoIG91ciBpbmRleCB2YWx1ZQotICAgIHVpbnQgc3Jj
QmxvY2sgPSBzcmNEYXRhW2luZGV4ID4+IDFdOworICAgIHVpbnQgc3JjQmxvY2sgPSBzcmNEYXRh
W2luZGV4ID4+IElEWFNISUZUXTsKICAgICAvLyBDb21wdXRlIHRoZSBzaGlmdCBuZWNlc3Nhcnkg
dG8gYWNjZXNzIGRlc2lyZWQgaW5kZXggdmFsdWUKLSAgICB1aW50IHNyY1NoaWZ0ID0gKGluZGV4
ICYgMHgxKSA8PCA0OwotICAgIC8vIE9ubHkgd2FudCAxNmJpdHMKLSAgICB1aW50IHNyY01hc2sg
PSAweGZmZmY7Ci0KLSAgICAvLyB1bnBhY2tpbmcgY29ycmVjdCAxNmJpdCBpbmRleCB2YWx1ZSBm
cm9tIHRoZSAzMmJpdCB3b3JkCi0gICAgdWludCB2YWx1ZSA9IChzcmNCbG9jayA+PiBzcmNTaGlm
dCkgJiBzcmNNYXNrOworICAgIHVpbnQgc3JjU2hpZnQgPSBTUkNTSElGVChpbmRleCk7CisgICAg
Ly8gdW5wYWNraW5nIGNvcnJlY3QgOC8xNiBiaXRzIGluZGV4IHZhbHVlIGZyb20gdGhlIDMyYml0
IHdvcmQKKyAgICB1aW50IHZhbHVlID0gKHNyY0Jsb2NrID4+IHNyY1NoaWZ0KSAmIEJJVFNNQVNL
OwogICAgIHJldHVybiB2YWx1ZTsKLSNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IGFsbCBiaXRz
IGFyZSBhY2NvdW50ZWQgZm9yIgorI2VuZGlmIC8vIElzMzJCaXRzCiB9CiAKIHZvaWQgUHV0SW5k
ZXhWYWx1ZSh1aW50IGluZGV4LCB1aW50IHZhbHVlKQogewotI2lmZGVmIElzMzJCaXQKKyNpZiBJ
czMyQml0cwogICAgIGRzdERhdGFbZHN0T2Zmc2V0RGl2NCArIGluZGV4XSA9IHZhbHVlOwotICAg
IHJldHVybjsKLSNlbHNlCisjZWxpZiBJczE2Qml0cyB8fCBJczhCaXRzCiAgICAgLy8gQ29tcHV0
ZSBpbmRleCBpbnRvIGRzdERhdGEgZm9yIG91ciBpbmRleCB2YWx1ZQotICAgIHVpbnQgZHN0SW5k
ZXggPSBkc3RPZmZzZXREaXY0ICsgKGluZGV4ID4+IDEpOworICAgIHVpbnQgZHN0SW5kZXggPSBk
c3RPZmZzZXREaXY0ICsgKGluZGV4ID4+IElEWFNISUZUKTsKICAgICAvLyBHZXQgZGVzdCBpbmRl
eCB2YWx1ZQogICAgIHVpbnQgc3JjQmxvY2sgPSBkc3REYXRhW2RzdEluZGV4XTsKICAgICAvLyBD
b21wdXRlIHRoZSBzaGlmdCBmb3Igb3VyIGluZGV4IHZhbHVlCi0gICAgdWludCBzcmNTaGlmdCA9
IChpbmRleCAmIDB4MSkgPDwgNDsKLSAgICB1aW50IHNyY01hc2sgPSAweGZmZmY7CisgICAgdWlu
dCBzcmNTaGlmdCA9IFNSQ1NISUZUKGluZGV4KTsKIAotICAgIC8vIENsZWFyIGFwcHJvcHJpYXRl
IDE2Yml0cyBvZiAzMmJpdCB3b3JkCi0gICAgc3JjQmxvY2sgJj0gfihzcmNNYXNrIDw8IHNyY1No
aWZ0KTsKLSAgICAvLyBTaGlmdCB2YWx1ZSB0byBwYWNrIDE2Yml0IHZhbHVlIGludG8gMzJiaXQg
d29yZAorICAgIC8vIENsZWFyIGFwcHJvcHJpYXRlIGJpdHMgb2YgMzJiaXQgd29yZAorICAgIHNy
Y0Jsb2NrICY9IH4oQklUU01BU0sgPDwgc3JjU2hpZnQpOworICAgIC8vIFNoaWZ0IHZhbHVlIHRv
IHBhY2sgOC8xNiBiaXRzIHZhbHVlIGludG8gMzJiaXQgd29yZAogICAgIHNyY0Jsb2NrIHw9IHZh
bHVlIDw8IHNyY1NoaWZ0OwogICAgIC8vIFN0b3JlIHVwZGF0ZWQgdmFsdWUgaW4gZGVzdGluYXRp
b24KICAgICBkc3REYXRhW2RzdEluZGV4XSA9IHNyY0Jsb2NrOwotI2VuZGlmCisjZWxzZQorI2Vy
cm9yICJOb3QgYWxsIGJpdHMgYXJlIGFjY291bnRlZCBmb3IiCisjZW5kaWYgLy8gSXMzMkJpdHMK
IH0KIAogdm9pZCBtYWluKCkKQEAgLTEyMiwxMiArMTM4LDcgQEAgdm9pZCBtYWluKCkKICAgICB3
aGlsZSAoaW5kaWNlc1JlbWFpbmluZyA+IDApCiAgICAgewogICAgICAgICB1aW50IGluZGV4VmFs
dWU7Ci0KLSNpZmRlZiBJczMyQml0Ci0gICAgICAgIHVpbnQgcmVzdGFydFZhbHVlID0gMHhmZmZm
ZmZmZjsKLSNlbHNlCi0gICAgICAgIHVpbnQgcmVzdGFydFZhbHVlID0gMHhmZmZmOwotI2VuZGlm
CisgICAgICAgIHVpbnQgcmVzdGFydFZhbHVlID0gQklUU01BU0s7CiAgICAgICAgIGluZGV4VmFs
dWUgPSBHZXRJbmRleFZhbHVlKHNyY0lkeCsrKTsKICAgICAgICAgaWYgKGxpbmVTaXplID09IDAp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydEluZGV4SW5kaXJlY3RMaW5l
TG9vcC5jb21wLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL3NoYWRlcnMvc3JjL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29t
cC5qc29uCmluZGV4IGJkZTMwNzVlY2RiYjFmMmFiMzE1ODAzOWJlMGY3YjFiMTI3YmMyMWUuLmZl
MTA4Y2VhZDkwOGY0MjU1ZDI1ZmJiMTVlMTk1NzFkOTRiOWUzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9z
cmMvQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLmpzb24KKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL3NyYy9D
b252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuanNvbgpAQCAtMSwxMiArMSwxNCBAQAog
ewogICAgICJEZXNjcmlwdGlvbiI6IFsKLSAgICAgICAgIkNvcHlyaWdodCAyMDE5IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIiwKKyAgICAgICAgIkNvcHly
aWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IiwKICAgICAgICAgIlVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUiLAogICAgICAgICAiZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4iLAogICAgICAgICAiIiwKICAgICAgICAgIkNvbnZlcnRJbmRleEluZGlyZWN0TGlu
ZUxvb3AuY29tcC5qc29uOiBCdWlsZCBwYXJhbWV0ZXJzIGZvciBDb252ZXJ0SW5kZXhJbmRpcmVj
dExpbmVMb29wLmNvbXAuIgogICAgIF0sCi0gICAgIkZsYWdzIjogWwotICAgICAgICAiSXMzMkJp
dCIKKyAgICAiSW5kaWNlc0JpdHNXaWR0aCI6IFsKKyAgICAgICAgIklzOEJpdHMiLAorICAgICAg
ICAiSXMxNkJpdHMiLAorICAgICAgICAiSXMzMkJpdHMiCiAgICAgXQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19j
YWNoZV91dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmNwcAppbmRleCAwN2VjNzA3MmJlY2NmYmJmYWUz
N2UzYjNlY2I1MTEwNmNiNDQ2NDQ0Li5lM2Y4NzA4Yjg1MDE2ZDZjN2QzNWE4NjA5OGI1NzA0ZDUy
NDc5ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmNwcApA
QCAtMzUzLDExICszNTMsNiBAQCBEZXN0VCBJbnQ0QXJyYXlfR2V0KGNvbnN0IHVpbnQ4X3QgKmFy
cmF5Qnl0ZXMsIHVpbnQzMl90IGFycmF5SW5kZXgpCiAgICAgfQogfQogCi0vLyBIZWxwZXIgbWFj
cm8gdGhhdCBjYXN0cyB0byBhIGJpdGZpZWxkIHR5cGUgdGhlbiB2ZXJpZmllcyBubyBiaXRzIHdl
cmUgZHJvcHBlZC4KLSNkZWZpbmUgU2V0Qml0RmllbGQobGhzLCByaHMpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbGhzID0gc3RhdGljX2Nhc3Q8dHlwZW5h
bWUgc3RkOjpkZWNheTxkZWNsdHlwZShsaHMpPjo6dHlwZT4ocmhzKTsgXAotICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxkZWNsdHlwZShyaHMpPihsaHMpID09IChyaHMpKQotCiAvLyBXaGVuIGNvbnZl
cnRpbmcgYSBieXRlIG51bWJlciB0byBhIHRyYW5zaXRpb24gYml0IGluZGV4IHdlIGNhbiBzaGlm
dCBpbnN0ZWFkIG9mIGRpdmlkZS4KIGNvbnN0ZXhwciBzaXplX3Qga1RyYW5zaXRpb25CeXRlU2hp
ZnQgPSBMb2cyKGtHcmFwaGljc1BpcGVsaW5lRGlydHlCaXRCeXRlcyk7CiAKQEAgLTgyNiw3ICs4
MjEsNyBAQCBhbmdsZTo6UmVzdWx0IEdyYXBoaWNzUGlwZWxpbmVEZXNjOjppbml0aWFsaXplUGlw
ZWxpbmUoCiAKICAgICBWa1BpcGVsaW5lUmFzdGVyaXphdGlvbkxpbmVTdGF0ZUNyZWF0ZUluZm9F
WFQgcmFzdGVyTGluZVN0YXRlID0ge307CiAgICAgcmFzdGVyTGluZVN0YXRlLnNUeXBlID0gVktf
U1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfUkFTVEVSSVpBVElPTl9MSU5FX1NUQVRFX0NSRUFURV9J
TkZPX0VYVDsKLSAgICAvLyBBbHdheXMgZW5hYmxlIEJyZXNlbmhhbSBsaW5lIHJhc3Rlcml6YXRp
b24gaWYgYXZhaWxhYmxlLgorICAgIC8vIEVuYWJsZSBCcmVzZW5oYW0gbGluZSByYXN0ZXJpemF0
aW9uIGlmIGF2YWlsYWJsZSBhbmQgbm90IG11bHRpc2FtcGxpbmcuCiAgICAgaWYgKHJhc3RlckFu
ZE1TLmJpdHMucmFzdGVyaXphdGlvblNhbXBsZXMgPD0gMSAmJgogICAgICAgICBjb250ZXh0Vmst
PmdldEZlYXR1cmVzKCkuYnJlc2VuaGFtTGluZVJhc3Rlcml6YXRpb24uZW5hYmxlZCkKICAgICB7
CkBAIC0xNjUwLDYgKzE2NDUsMzcgQEAgYm9vbCBUZXh0dXJlRGVzY3JpcHRvckRlc2M6Om9wZXJh
dG9yPT0oY29uc3QgVGV4dHVyZURlc2NyaXB0b3JEZXNjICZvdGhlcikgY29uc3QKICAgICByZXR1
cm4gbWVtY21wKG1TZXJpYWxzLmRhdGEoKSwgb3RoZXIubVNlcmlhbHMuZGF0YSgpLCBzaXplb2Yo
VGV4VW5pdFNlcmlhbHMpICogbU1heEluZGV4KSA9PSAwOwogfQogCitGcmFtZWJ1ZmZlckRlc2M6
OkZyYW1lYnVmZmVyRGVzYygpCit7CisgICAgcmVzZXQoKTsKK30KKworRnJhbWVidWZmZXJEZXNj
Ojp+RnJhbWVidWZmZXJEZXNjKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBkZWZhdWx0
OworRnJhbWVidWZmZXJEZXNjOjpGcmFtZWJ1ZmZlckRlc2MoY29uc3QgRnJhbWVidWZmZXJEZXNj
ICZvdGhlcikgPSBkZWZhdWx0OworRnJhbWVidWZmZXJEZXNjICZGcmFtZWJ1ZmZlckRlc2M6Om9w
ZXJhdG9yPShjb25zdCBGcmFtZWJ1ZmZlckRlc2MgJm90aGVyKSA9IGRlZmF1bHQ7CisKK3ZvaWQg
RnJhbWVidWZmZXJEZXNjOjp1cGRhdGUodWludDMyX3QgaW5kZXgsIEF0dGFjaG1lbnRTZXJpYWwg
c2VyaWFsKQoreworICAgIEFTU0VSVChpbmRleCA8IGtNYXhGcmFtZWJ1ZmZlckF0dGFjaG1lbnRz
KTsKKyAgICBtU2VyaWFsc1tpbmRleF0gPSBzZXJpYWw7Cit9CisKK3NpemVfdCBGcmFtZWJ1ZmZl
ckRlc2M6Omhhc2goKSBjb25zdAoreworICAgIHJldHVybiBhbmdsZTo6Q29tcHV0ZUdlbmVyaWNI
YXNoKCZtU2VyaWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
b2YoQXR0YWNobWVudFNlcmlhbCkgKiBrTWF4RnJhbWVidWZmZXJBdHRhY2htZW50cyk7Cit9CisK
K3ZvaWQgRnJhbWVidWZmZXJEZXNjOjpyZXNldCgpCit7CisgICAgbWVtc2V0KCZtU2VyaWFscywg
MCwgc2l6ZW9mKEF0dGFjaG1lbnRTZXJpYWwpICoga01heEZyYW1lYnVmZmVyQXR0YWNobWVudHMp
OworfQorCitib29sIEZyYW1lYnVmZmVyRGVzYzo6b3BlcmF0b3I9PShjb25zdCBGcmFtZWJ1ZmZl
ckRlc2MgJm90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtZW1jbXAoJm1TZXJpYWxzLCAmb3Ro
ZXIubVNlcmlhbHMsIHNpemVvZihTZXJpYWwpICoga01heEZyYW1lYnVmZmVyQXR0YWNobWVudHMp
ID09IDA7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB2awogCiAvLyBSZW5kZXJQYXNzQ2FjaGUgaW1w
bGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmgKaW5k
ZXggMTZmNDBiYzVkOGRmN2U0ZWM5Y2MxM2VhN2VkNTRkNzNlOTcxNWFkNi4uNWNkMWQ0NmYwZDYw
YWFiYTZiYzYwZTNhNmZkNjJjZmM4NDQ2MTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYWNoZV91dGlscy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
dmtfY2FjaGVfdXRpbHMuaApAQCAtMjgsNiArMjgsMTEgQEAgdXNpbmcgUGlwZWxpbmVBbmRTZXJp
YWwgICA9IE9iamVjdEFuZFNlcmlhbDxQaXBlbGluZT47CiB1c2luZyBSZWZDb3VudGVkRGVzY3Jp
cHRvclNldExheW91dCA9IFJlZkNvdW50ZWQ8RGVzY3JpcHRvclNldExheW91dD47CiB1c2luZyBS
ZWZDb3VudGVkUGlwZWxpbmVMYXlvdXQgICAgICA9IFJlZkNvdW50ZWQ8UGlwZWxpbmVMYXlvdXQ+
OwogCisvLyBIZWxwZXIgbWFjcm8gdGhhdCBjYXN0cyB0byBhIGJpdGZpZWxkIHR5cGUgdGhlbiB2
ZXJpZmllcyBubyBiaXRzIHdlcmUgZHJvcHBlZC4KKyNkZWZpbmUgU2V0Qml0RmllbGQobGhzLCBy
aHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbGhzID0g
c3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpkZWNheTxkZWNsdHlwZShsaHMpPjo6dHlwZT4ocmhz
KTsgXAorICAgIEFTU0VSVChzdGF0aWNfY2FzdDxkZWNsdHlwZShyaHMpPihsaHMpID09IChyaHMp
KQorCiAvLyBQYWNrZWQgVmsgcmVzb3VyY2UgZGVzY3JpcHRpb25zLgogLy8gTW9zdCBWayB0eXBl
cyB1c2UgbWFueSBtb3JlIGJpdHMgdGhhbiByZXF1aXJlZCB0byByZXByZXNlbnQgdGhlIHVuZGVy
bHlpbmcgZGF0YS4KIC8vIFNpbmNlIEFOR0xFIHdhbnRzIHRvIGNhY2hlIHRoaW5ncyBsaWtlIFJl
bmRlclBhc3NlcyBhbmQgUGlwZWxpbmUgU3RhdGUgT2JqZWN0cyB1c2luZwpAQCAtNzE1LDYgKzcy
MCwzOSBAQCBjbGFzcyBUZXh0dXJlRGVzY3JpcHRvckRlc2MKICAgICB9OwogICAgIGdsOjpBY3Rp
dmVUZXh0dXJlQXJyYXk8VGV4VW5pdFNlcmlhbHM+IG1TZXJpYWxzOwogfTsKKworLy8gVGhpcyBp
cyBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTICsgMSBmb3IgRFMgYXR0YWNobWVudAor
Y29uc3RleHByIHNpemVfdCBrTWF4RnJhbWVidWZmZXJBdHRhY2htZW50cyA9IGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfRlJBTUVCVUZGRVJfQVRUQUNITUVOVFM7CisvLyBDb2xvciBzZXJpYWxzIGFy
ZSBhdCBpbmRleCBbMDpnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUy0xXQorLy8g
RGVwdGgvc3RlbmNpbCBpbmRleCBpcyBhdCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVG
RkVSUworY29uc3RleHByIHNpemVfdCBrRnJhbWVidWZmZXJEZXNjRGVwdGhTdGVuY2lsSW5kZXgg
PSBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUzsKKy8vIFN0cnVjdCBmb3IgQXR0
YWNobWVudFNlcmlhbCBjYWNoZSBzaWduYXR1cmVzLiBJbmNsdWRlcyBsZXZlbC9sYXllciBmb3Ig
aW1hZ2VWaWV3IGFzCisvLyAgd2VsbCBhcyBhIHVuaXF1ZSBTZXJpYWwgdmFsdWUgZm9yIHRoZSB1
bmRlcmx5aW5nIGltYWdlCitzdHJ1Y3QgQXR0YWNobWVudFNlcmlhbAoreworICAgIHVpbnQxNl90
IGxldmVsOworICAgIHVpbnQxNl90IGxheWVyOworICAgIHVpbnQzMl90IGltYWdlU2VyaWFsOwor
fTsKK2NvbnN0ZXhwciBBdHRhY2htZW50U2VyaWFsIGtaZXJvQXR0YWNobWVudFNlcmlhbCA9IHsw
LCAwLCAwfTsKK2NsYXNzIEZyYW1lYnVmZmVyRGVzYworeworICBwdWJsaWM6CisgICAgRnJhbWVi
dWZmZXJEZXNjKCk7CisgICAgfkZyYW1lYnVmZmVyRGVzYygpOworCisgICAgRnJhbWVidWZmZXJE
ZXNjKGNvbnN0IEZyYW1lYnVmZmVyRGVzYyAmb3RoZXIpOworICAgIEZyYW1lYnVmZmVyRGVzYyAm
b3BlcmF0b3I9KGNvbnN0IEZyYW1lYnVmZmVyRGVzYyAmb3RoZXIpOworCisgICAgdm9pZCB1cGRh
dGUodWludDMyX3QgaW5kZXgsIEF0dGFjaG1lbnRTZXJpYWwgc2VyaWFsKTsKKyAgICBzaXplX3Qg
aGFzaCgpIGNvbnN0OworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGcmFtZWJ1ZmZlckRlc2MgJm90aGVyKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIGds
OjpBdHRhY2htZW50QXJyYXk8QXR0YWNobWVudFNlcmlhbD4gbVNlcmlhbHM7Cit9OwogfSAgLy8g
bmFtZXNwYWNlIHZrCiB9ICAvLyBuYW1lc3BhY2UgcngKIApAQCAtNzU2LDYgKzc5NCwxMiBAQCBz
dHJ1Y3QgaGFzaDxyeDo6dms6OlRleHR1cmVEZXNjcmlwdG9yRGVzYz4KIHsKICAgICBzaXplX3Qg
b3BlcmF0b3IoKShjb25zdCByeDo6dms6OlRleHR1cmVEZXNjcmlwdG9yRGVzYyAma2V5KSBjb25z
dCB7IHJldHVybiBrZXkuaGFzaCgpOyB9CiB9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IGhhc2g8
cng6OnZrOjpGcmFtZWJ1ZmZlckRlc2M+Cit7CisgICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3Qg
cng6OnZrOjpGcmFtZWJ1ZmZlckRlc2MgJmtleSkgY29uc3QgeyByZXR1cm4ga2V5Lmhhc2goKTsg
fQorfTsKIH0gIC8vIG5hbWVzcGFjZSBzdGQKIAogbmFtZXNwYWNlIHJ4CkBAIC05MzMsOCArOTc3
LDYgQEAgY29uc3RleHByIHVpbnQzMl90IGtSZXNlcnZlZERyaXZlclVuaWZvcm1CaW5kaW5nQ291
bnQgPSAxOwogLy8gc3VwcG9ydGVkLgogY29uc3RleHByIHVpbnQzMl90IGtSZXNlcnZlZFBlclN0
YWdlRGVmYXVsdFVuaWZvcm1CaW5kaW5nQ291bnQgPSAxOwogY29uc3RleHByIHVpbnQzMl90IGtS
ZXNlcnZlZERlZmF1bHRVbmlmb3JtQmluZGluZ0NvdW50ICAgICAgICAgPSAzOwotLy8gQmluZGlu
ZyBpbmRleCBzdGFydCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnM6Ci1jb25zdGV4cHIg
dWludDMyX3Qga1hmYkJpbmRpbmdJbmRleFN0YXJ0ID0ga1Jlc2VydmVkRGVmYXVsdFVuaWZvcm1C
aW5kaW5nQ291bnQ7CiB9ICAvLyBuYW1lc3BhY2UgcngKIAogI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9WVUxLQU5fVktfQ0FDSEVfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfY2Fwc191dGlscy5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3ZrX2NhcHNfdXRpbHMuY3BwCmluZGV4IGIzZDcwN2JiZDVmYTMxMmIyMzFiODZhZWMxNTYwNzZj
MzUyOWE3YTcuLjhmZTYzMTNkN2U0NGRkOThjZjlhZDAxMGY2ODQyYmM0ODI4MGM1N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vdmtfY2Fwc191dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYXBzX3V0aWxzLmNwcApAQCAtMTQsNiArMTQsNyBA
QAogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vRGlzcGxheVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jl
bmRlcmVyVmsuaCIKICNpbmNsdWRlICJ2a19mb3JtYXRfdXRpbHMuaCIKQEAgLTQ3LDkgKzQ4LDIz
IEBAIHZvaWQgUmVuZGVyZXJWazo6ZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3QKIAogICAg
IG1OYXRpdmVFeHRlbnNpb25zLnNldFRleHR1cmVFeHRlbnNpb25TdXBwb3J0KG1OYXRpdmVUZXh0
dXJlQ2Fwcyk7CiAKLSAgICAvLyBWdWxrYW4gdGVjaG5pY2FsbHkgb25seSBzdXBwb3J0cyB0aGUg
TERSIHByb2ZpbGUgYnV0IGRyaXZlciBhbGwgYXBwZWFyIHRvIHN1cHBvcnQgdGhlIEhEUgotICAg
IC8vIHByb2ZpbGUgYXMgd2VsbC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8xMTg1I2M4Ci0gICAgbU5h
dGl2ZUV4dGVuc2lvbnMudGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUktIUiA9IG1OYXRpdmVFeHRl
bnNpb25zLnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFJLSFI7CisgICAgLy8gVG8gZW5zdXJlIHRo
YXQgRVRDMi9FQUMgZm9ybWF0cyBhcmUgZW5hYmxlZCBvbmx5IG9uIGhhcmR3YXJlIHRoYXQgc3Vw
cG9ydHMgdGhlbSBuYXRpdmVseSwKKyAgICAvLyB0aGlzIGZsYWcgaXMgbm90IHNldCBieSB0aGUg
ZnVuY3Rpb24gYWJvdmUgYW5kIG11c3QgYmUgc2V0IGV4cGxpY2l0bHkuIEl0IGV4cG9zZXMKKyAg
ICAvLyBBTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIGV4dGVuc2lvbiBzdHJpbmcuCisgICAg
bU5hdGl2ZUV4dGVuc2lvbnMuY29tcHJlc3NlZFRleHR1cmVFVEMgPQorICAgICAgICAobVBoeXNp
Y2FsRGV2aWNlRmVhdHVyZXMudGV4dHVyZUNvbXByZXNzaW9uRVRDMiA9PSBWS19UUlVFKSAmJgor
ICAgICAgICBnbDo6RGV0ZXJtaW5lQ29tcHJlc3NlZFRleHR1cmVFVENTdXBwb3J0KG1OYXRpdmVU
ZXh0dXJlQ2Fwcyk7CisKKyAgICAvLyBWdWxrYW4gZG9lc24ndCBzdXBwb3J0IEFTVEMgM0QgYmxv
Y2sgdGV4dHVyZXMsIHdoaWNoIGFyZSByZXF1aXJlZCBieQorICAgIC8vIEdMX09FU190ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGMuCisgICAgbU5hdGl2ZUV4dGVuc2lvbnMudGV4dHVyZUNvbXByZXNz
aW9uQVNUQ09FUyA9IGZhbHNlOworCisgICAgLy8gVnVsa2FuIGRvZXNuJ3QgZ3VhcmFudGVlIEhE
UiBibG9ja3MgZGVjb2Rpbmcgd2l0aG91dCBWS19FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2hkci4KKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy50ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSS0hS
ID0gZmFsc2U7CisKKyAgICAvLyBWdWxrYW4gc3VwcG9ydHMgc2xpY2VkIDNEIEFTVEMgdGV4dHVy
ZSB1cGxvYWRzIHdoZW4gQVNUQyBpcyBzdXBwb3J0ZWQuCisgICAgbU5hdGl2ZUV4dGVuc2lvbnMu
dGV4dHVyZUNvbXByZXNzaW9uU2xpY2VkM2RBU1RDS0hSID0KKyAgICAgICAgbU5hdGl2ZUV4dGVu
c2lvbnMudGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUktIUjsKIAogICAgIC8vIEVuYWJsZSB0aGlz
IGZvciBzaW1wbGUgYnVmZmVyIHJlYWRiYWNrIHRlc3RpbmcsIGJ1dCBzb21lIGZ1bmN0aW9uYWxp
dHkgaXMgbWlzc2luZy4KICAgICAvLyBUT0RPKGptYWRpbGwpOiBTdXBwb3J0IGZ1bGwgbWFwQnVm
ZmVyUmFuZ2UgZXh0ZW5zaW9uLgpAQCAtNjMsNyArNzgsOCBAQCB2b2lkIFJlbmRlcmVyVms6OmVu
c3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMuY29weVRl
eHR1cmUgICAgICAgICAgICA9IHRydWU7CiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMuY29weUNvbXBy
ZXNzZWRUZXh0dXJlICA9IHRydWU7CiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMuZGVidWdNYXJrZXIg
ICAgICAgICAgICA9IHRydWU7Ci0gICAgbU5hdGl2ZUV4dGVuc2lvbnMucm9idXN0bmVzcyAgICAg
ICAgICAgICA9IHRydWU7CisgICAgbU5hdGl2ZUV4dGVuc2lvbnMucm9idXN0bmVzcyA9CisgICAg
ICAgICFJc1N3aWZ0c2hhZGVyKG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMudmVuZG9ySUQsIG1Q
aHlzaWNhbERldmljZVByb3BlcnRpZXMuZGV2aWNlSUQpOwogICAgIG1OYXRpdmVFeHRlbnNpb25z
LnRleHR1cmVCb3JkZXJDbGFtcE9FUyAgPSBmYWxzZTsgIC8vIG5vdCBpbXBsZW1lbnRlZCB5ZXQK
ICAgICBtTmF0aXZlRXh0ZW5zaW9ucy50cmFuc2xhdGVkU2hhZGVyU291cmNlID0gdHJ1ZTsKICAg
ICBtTmF0aXZlRXh0ZW5zaW9ucy5kaXNjYXJkRnJhbWVidWZmZXIgICAgID0gdHJ1ZTsKQEAgLTgx
LDE1ICs5NywyMCBAQCB2b2lkIFJlbmRlcmVyVms6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNv
bnN0CiAgICAgLy8gRW5hYmxlIEVYVF9ibGVuZF9taW5tYXgKICAgICBtTmF0aXZlRXh0ZW5zaW9u
cy5ibGVuZE1pbk1heCA9IHRydWU7CiAKLSAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJbWFnZU9F
UyAgICAgICAgICAgICAgPSB0cnVlOwotICAgIG1OYXRpdmVFeHRlbnNpb25zLmVnbEltYWdlRXh0
ZXJuYWxPRVMgICAgICA9IHRydWU7Ci0gICAgbU5hdGl2ZUV4dGVuc2lvbnMuZWdsSW1hZ2VFeHRl
cm5hbEVzc2wzT0VTID0gdHJ1ZTsKKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJbWFnZU9FUyAg
ICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJbWFnZUV4
dGVybmFsT0VTICAgICAgICAgID0gdHJ1ZTsKKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJbWFn
ZUV4dGVybmFsV3JhcE1vZGVzRVhUID0gdHJ1ZTsKKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJ
bWFnZUV4dGVybmFsRXNzbDNPRVMgICAgID0gdHJ1ZTsKIAogICAgIG1OYXRpdmVFeHRlbnNpb25z
Lm1lbW9yeU9iamVjdCAgID0gdHJ1ZTsKICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5tZW1vcnlPYmpl
Y3RGZCA9IGdldEZlYXR1cmVzKCkuc3VwcG9ydHNFeHRlcm5hbE1lbW9yeUZkLmVuYWJsZWQ7Cisg
ICAgbU5hdGl2ZUV4dGVuc2lvbnMubWVtb3J5T2JqZWN0RnVjaHNpYUFOR0xFID0KKyAgICAgICAg
Z2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsTWVtb3J5RnVjaHNpYS5lbmFibGVkOwogCiAg
ICAgbU5hdGl2ZUV4dGVuc2lvbnMuc2VtYXBob3JlICAgPSB0cnVlOwogICAgIG1OYXRpdmVFeHRl
bnNpb25zLnNlbWFwaG9yZUZkID0gZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsU2VtYXBo
b3JlRmQuZW5hYmxlZDsKKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5zZW1hcGhvcmVGdWNoc2lhQU5H
TEUgPQorICAgICAgICBnZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGdWNo
c2lhLmVuYWJsZWQ7CiAKICAgICBtTmF0aXZlRXh0ZW5zaW9ucy52ZXJ0ZXhIYWxmRmxvYXRPRVMg
PSB0cnVlOwogCkBAIC0xNDEsNiArMTYyLDkgQEAgdm9pZCBSZW5kZXJlclZrOjplbnN1cmVDYXBz
SW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIC8vIFdlIHN1cHBvcnQgZ2V0dGluZyBpbWFnZSBkYXRh
IGZvciBUZXh0dXJlcyBhbmQgUmVuZGVyYnVmZmVycy4KICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5n
ZXRJbWFnZUFOR0xFID0gdHJ1ZTsKIAorICAgIC8vIEltcGxlbWVudGVkIGluIHRoZSB0cmFuc2xh
dG9yCisgICAgbU5hdGl2ZUV4dGVuc2lvbnMuc2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0aWFsaXpl
cnNFWFQgPSB0cnVlOworCiAgICAgLy8gVnVsa2FuIGhhcyBubyByZXN0cmljdGlvbnMgb2YgdGhl
IGZvcm1hdCBvZiBjdWJlbWFwcywgc28gaWYgdGhlIHByb3BlciBmb3JtYXRzIGFyZSBzdXBwb3J0
ZWQsCiAgICAgLy8gY3JlYXRpbmcgYSBjdWJlIG9mIGFueSBvZiB0aGVzZSBmb3JtYXRzIHNob3Vs
ZCBiZSBpbXBsaWNpdGx5IHN1cHBvcnRlZC4KICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5kZXB0aFRl
eHR1cmVDdWJlTWFwT0VTID0KQEAgLTQzNiw4ICs0NjAsMjcgQEAgdm9pZCBSZW5kZXJlclZrOjpl
bnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIC8vIHZhcnMgc2VjdGlvbi4gSXQgaXMg
aW1wbGljaXQgdGhhdCB3ZSBuZWVkIHRvIGFjdHVhbGx5IHJlc2VydmUgaXQgZm9yIFZ1bGthbiBp
biB0aGF0IGNhc2UuCiAgICAgR0xpbnQgcmVzZXJ2ZWRWYXJ5aW5nVmVjdG9yQ291bnQgPSAxOwog
Ci0gICAgbU5hdGl2ZUNhcHMubWF4VmFyeWluZ1ZlY3RvcnMgPSBMaW1pdFRvSW50KAotICAgICAg
ICAobGltaXRzVmsubWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cyAvIGtDb21wb25lbnRzUGVyVmVj
dG9yKSAtIHJlc2VydmVkVmFyeWluZ1ZlY3RvckNvdW50KTsKKyAgICAvLyByZXNlcnZlIDEgZXh0
cmEgZm9yIEFOR0xFUG9zaXRpb24gd2hlbiBHTExpbmVSYXN0ZXJpemF0aW9uIGlzIGVuYWJsZWQK
KyAgICBjb25zdGV4cHIgR0xpbnQga1JzZXJ2ZWRWYXJ5aW5nRm9yR0xMaW5lUmFzdGVyaXphdGlv
biA9IDE7CisgICAgLy8gcmVzZXJ2ZSAyIGV4dHJhIGZvciBidWlsdGluIHZhcmFibGVzIHdoZW4g
ZmVlZGJhY2sgaXMgZW5hYmxlZAorICAgIC8vIHBvc3NpYmxlIGNhcHR1cmFibGUgb3V0IHZhcmFi
bGU6IGdsX1Bvc2l0aW9uLCBnbF9Qb2ludFNpemUKKyAgICAvLyBodHRwczovL3d3dy5raHJvbm9z
Lm9yZy9yZWdpc3RyeS9PcGVuR0wvc3BlY3MvZXMvMy4xL0dMU0xfRVNfU3BlY2lmaWNhdGlvbl8z
LjEwLndpdGhjaGFuZ2VzLnBkZgorICAgIC8vIHBhZ2UgMTA1CisgICAgY29uc3RleHByIEdMaW50
IGtSZXNlcnZlZFZhcnlpbmdGb3JUcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvbiA9IDI7CisKKyAg
ICBpZiAoZ2V0RmVhdHVyZXMoKS5iYXNpY0dMTGluZVJhc3Rlcml6YXRpb24uZW5hYmxlZCkKKyAg
ICB7CisgICAgICAgIHJlc2VydmVkVmFyeWluZ1ZlY3RvckNvdW50ICs9IGtSc2VydmVkVmFyeWlu
Z0ZvckdMTGluZVJhc3Rlcml6YXRpb247CisgICAgfQorICAgIGlmIChnZXRGZWF0dXJlcygpLnN1
cHBvcnRzVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb24uZW5hYmxlZCkKKyAgICB7CisgICAgICAg
IHJlc2VydmVkVmFyeWluZ1ZlY3RvckNvdW50ICs9IGtSZXNlcnZlZFZhcnlpbmdGb3JUcmFuc2Zv
cm1GZWVkYmFja0V4dGVuc2lvbjsKKyAgICB9CisKKyAgICBjb25zdCBHTGludCBtYXhWYXJ5aW5n
Q291bnQgPQorICAgICAgICBzdGQ6Om1pbihsaW1pdHNWay5tYXhWZXJ0ZXhPdXRwdXRDb21wb25l
bnRzLCBsaW1pdHNWay5tYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyk7CisgICAgbU5hdGl2ZUNh
cHMubWF4VmFyeWluZ1ZlY3RvcnMgPQorICAgICAgICBMaW1pdFRvSW50KChtYXhWYXJ5aW5nQ291
bnQgLyBrQ29tcG9uZW50c1BlclZlY3RvcikgLSByZXNlcnZlZFZhcnlpbmdWZWN0b3JDb3VudCk7
CiAgICAgbU5hdGl2ZUNhcHMubWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cyA9IExpbWl0VG9JbnQo
bGltaXRzVmsubWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cyk7CiAKICAgICBtTmF0aXZlQ2Fwcy5t
YXhUcmFuc2Zvcm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50cyA9CkBAIC01ODAsNyArNjIz
LDcgQEAgZWdsOjpDb25maWcgR2VuZXJhdGVEZWZhdWx0Q29uZmlnKGNvbnN0IFJlbmRlcmVyVmsg
KnJlbmRlcmVyLAogICAgIGNvbmZpZy5tYXhTd2FwSW50ZXJ2YWwgICAgPSAxOwogICAgIGNvbmZp
Zy5taW5Td2FwSW50ZXJ2YWwgICAgPSAwOwogICAgIGNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlICAg
PSBFR0xfVFJVRTsKLSAgICBjb25maWcubmF0aXZlVmlzdWFsSUQgICAgID0gMDsKKyAgICBjb25m
aWcubmF0aXZlVmlzdWFsSUQgICAgID0gc3RhdGljX2Nhc3Q8RUdMaW50PihHZXROYXRpdmVWaXN1
YWxJRChjb2xvckZvcm1hdCkpOwogICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlICAgPSBFR0xf
Tk9ORTsKICAgICBjb25maWcucmVuZGVyYWJsZVR5cGUgICAgID0gZXMyU3VwcG9ydCB8IGVzM1N1
cHBvcnQ7CiAgICAgY29uZmlnLnNhbXBsZUJ1ZmZlcnMgICAgICA9IChzYW1wbGVDb3VudCA+IDAp
ID8gMSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF9tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfZm9ybWF0X21hcC5qc29uCmlu
ZGV4IDExM2E0MWE3NGJiOGY4YjYwYTU0NmVmNDMyNGJhZTFlZDAyM2I5M2YuLjNlYzcxNjA1NmE2
OGJlOGI5MTU1ODAzMmQ4NzgwMjA0NTEyZTk1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfZm9ybWF0X21hcC5qc29u
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vdmtfZm9ybWF0X21hcC5qc29uCkBAIC00MCw3ICs0MCw2IEBACiAgICAgICAgICJSOEc4X1NJ
TlQiOiAiVktfRk9STUFUX1I4RzhfU0lOVCIsCiAgICAgICAgICJSOEc4X1VTQ0FMRUQiOiAiVktf
Rk9STUFUX1I4RzhfVVNDQUxFRCIsCiAgICAgICAgICJSOEc4X1NTQ0FMRUQiOiAiVktfRk9STUFU
X1I4RzhfU1NDQUxFRCIsCi0gICAgICAgICJSOEc4QjhfVU5PUk0iOiAiVktfRk9STUFUX1I4RzhC
OF9VTk9STSIsCiAgICAgICAgICJSOEc4QjhfU05PUk0iOiAiVktfRk9STUFUX1I4RzhCOF9TTk9S
TSIsCiAgICAgICAgICJSOEc4QjhfVUlOVCI6ICJWS19GT1JNQVRfUjhHOEI4X1VJTlQiLAogICAg
ICAgICAiUjhHOEI4X1NJTlQiOiAiVktfRk9STUFUX1I4RzhCOF9TSU5UIiwKQEAgLTEwOCw2ICsx
MDcsNyBAQAogICAgICAgICAiRDMyX0ZMT0FUIjogIlZLX0ZPUk1BVF9EMzJfU0ZMT0FUIiwKICAg
ICAgICAgIlM4X1VJTlQiOiAiVktfRk9STUFUX1M4X1VJTlQiLAogICAgICAgICAiRDI0X1VOT1JN
X1M4X1VJTlQiOiAiVktfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKKyAgICAgICAgIkQyNF9V
Tk9STV9YOF9VSU5UIjogIlZLX0ZPUk1BVF9YOF9EMjRfVU5PUk1fUEFDSzMyIiwKICAgICAgICAg
IkQzMl9GTE9BVF9TOFgyNF9VSU5UIjogIlZLX0ZPUk1BVF9EMzJfU0ZMT0FUX1M4X1VJTlQiLAog
ICAgICAgICAiQkMxX1JHQl9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkMxX1JHQl9VTk9STV9C
TE9DSyIsCiAgICAgICAgICJCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0JD
MV9SR0JfU1JHQl9CTE9DSyIsCkBAIC0xMTcsNiArMTE3LDEwIEBACiAgICAgICAgICJCQzJfUkdC
QV9VTk9STV9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzJfU1JHQl9CTE9DSyIsCiAgICAgICAg
ICJCQzNfUkdCQV9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkMzX1VOT1JNX0JMT0NLIiwKICAg
ICAgICAgIkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0JDM19TUkdCX0JM
T0NLIiwKKyAgICAgICAgIkJDNF9SRURfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNF9VTk9S
TV9CTE9DSyIsCisgICAgICAgICJCQzRfUkVEX1NOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzRf
U05PUk1fQkxPQ0siLAorICAgICAgICAiQkM1X1JHX1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9C
QzVfVU5PUk1fQkxPQ0siLAorICAgICAgICAiQkM1X1JHX1NOT1JNX0JMT0NLIjogIlZLX0ZPUk1B
VF9CQzVfU05PUk1fQkxPQ0siLAogICAgICAgICAiQlBUQ19SR0JfVU5TSUdORURfRkxPQVRfQkxP
Q0siOiAiVktfRk9STUFUX0JDNkhfVUZMT0FUX0JMT0NLIiwKICAgICAgICAgIkJQVENfUkdCX1NJ
R05FRF9GTE9BVF9CTE9DSyI6ICJWS19GT1JNQVRfQkM2SF9TRkxPQVRfQkxPQ0siLAogICAgICAg
ICAiQlBUQ19SR0JBX1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzdfVU5PUk1fQkxPQ0siLApA
QCAtMjA2LDcgKzIxMCw2IEBACiAgICAgICAgICAgICAiaW1hZ2UiOiAiQjhHOFI4QThfVU5PUk0i
CiAgICAgICAgIH0sCiAgICAgICAgICJEMjRfVU5PUk1fWDhfVUlOVCI6IHsKLSAgICAgICAgICAg
ICJidWZmZXIiOiAiTk9ORSIsCiAgICAgICAgICAgICAiaW1hZ2UiOiBbIkQyNF9VTk9STV9TOF9V
SU5UIiwgIkQzMl9GTE9BVF9TOFgyNF9VSU5UIl0KICAgICAgICAgfSwKICAgICAgICAgIkQzMl9V
Tk9STSI6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vdmtfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfdGFi
bGVfYXV0b2dlbi5jcHAKaW5kZXggYzIzNGRhMjU0NGM2NDdjMTc2NDhiZDkxMTZiZjNhODNlZDJh
MTgxYi4uYmVmNTlkYzhiOTJmOWQ1ODAxMDA2NGI3NmIxNjEwZDI2MGMzZWZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92
a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAK
QEAgLTcyNiw2ICs3MjYsNTQgQEAgdm9pZCBGb3JtYXQ6OmluaXRpYWxpemUoUmVuZGVyZXJWayAq
cmVuZGVyZXIsIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmFuZ2xlRm9ybWF0KQogICAgICAgICAgICAg
dmVydGV4TG9hZFJlcXVpcmVzQ29udmVyc2lvbiA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7
CiAKKyAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfU05PUk1fQkxPQ0s6Cisg
ICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCAgICAgICAgICAgICAgID0gR0xfQ09NUFJFU1NFRF9T
SUdORURfUkVEX1JHVEMxX0VYVDsKKyAgICAgICAgICAgIGFjdHVhbEltYWdlRm9ybWF0SUQgICAg
ICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfU05PUk1fQkxPQ0s7CisgICAgICAgICAg
ICB2a0ltYWdlRm9ybWF0ICAgICAgICAgICAgICAgID0gVktfRk9STUFUX0JDNF9TTk9STV9CTE9D
SzsKKyAgICAgICAgICAgIGltYWdlSW5pdGlhbGl6ZXJGdW5jdGlvbiAgICAgPSBudWxscHRyOwor
ICAgICAgICAgICAgYWN0dWFsQnVmZmVyRm9ybWF0SUQgICAgICAgICA9IGFuZ2xlOjpGb3JtYXRJ
RDo6QkM0X1JFRF9TTk9STV9CTE9DSzsKKyAgICAgICAgICAgIHZrQnVmZmVyRm9ybWF0ICAgICAg
ICAgICAgICAgPSBWS19GT1JNQVRfQkM0X1NOT1JNX0JMT0NLOworICAgICAgICAgICAgdmtCdWZm
ZXJGb3JtYXRJc1BhY2tlZCAgICAgICA9IGZhbHNlOworICAgICAgICAgICAgdmVydGV4TG9hZEZ1
bmN0aW9uICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkUmVxdWly
ZXNDb252ZXJzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IGFuZ2xlOjpGb3JtYXRJRDo6QkM0X1JFRF9VTk9STV9CTE9DSzoKKyAgICAgICAgICAgIGludGVy
bmFsRm9ybWF0ICAgICAgICAgICAgICAgPSBHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ7Cisg
ICAgICAgICAgICBhY3R1YWxJbWFnZUZvcm1hdElEICAgICAgICAgID0gYW5nbGU6OkZvcm1hdElE
OjpCQzRfUkVEX1VOT1JNX0JMT0NLOworICAgICAgICAgICAgdmtJbWFnZUZvcm1hdCAgICAgICAg
ICAgICAgICA9IFZLX0ZPUk1BVF9CQzRfVU5PUk1fQkxPQ0s7CisgICAgICAgICAgICBpbWFnZUlu
aXRpYWxpemVyRnVuY3Rpb24gICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGFjdHVhbEJ1ZmZl
ckZvcm1hdElEICAgICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfVU5PUk1fQkxPQ0s7
CisgICAgICAgICAgICB2a0J1ZmZlckZvcm1hdCAgICAgICAgICAgICAgID0gVktfRk9STUFUX0JD
NF9VTk9STV9CTE9DSzsKKyAgICAgICAgICAgIHZrQnVmZmVyRm9ybWF0SXNQYWNrZWQgICAgICAg
PSBmYWxzZTsKKyAgICAgICAgICAgIHZlcnRleExvYWRGdW5jdGlvbiAgICAgICAgICAgPSBudWxs
cHRyOworICAgICAgICAgICAgdmVydGV4TG9hZFJlcXVpcmVzQ29udmVyc2lvbiA9IGZhbHNlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9S
R19TTk9STV9CTE9DSzoKKyAgICAgICAgICAgIGludGVybmFsRm9ybWF0ICAgICAgICAgICAgICAg
PSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUOworICAgICAgICAgICAg
YWN0dWFsSW1hZ2VGb3JtYXRJRCAgICAgICAgICA9IGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1NO
T1JNX0JMT0NLOworICAgICAgICAgICAgdmtJbWFnZUZvcm1hdCAgICAgICAgICAgICAgICA9IFZL
X0ZPUk1BVF9CQzVfU05PUk1fQkxPQ0s7CisgICAgICAgICAgICBpbWFnZUluaXRpYWxpemVyRnVu
Y3Rpb24gICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGFjdHVhbEJ1ZmZlckZvcm1hdElEICAg
ICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9SR19TTk9STV9CTE9DSzsKKyAgICAgICAgICAg
IHZrQnVmZmVyRm9ybWF0ICAgICAgICAgICAgICAgPSBWS19GT1JNQVRfQkM1X1NOT1JNX0JMT0NL
OworICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXRJc1BhY2tlZCAgICAgICA9IGZhbHNlOworICAg
ICAgICAgICAgdmVydGV4TG9hZEZ1bmN0aW9uICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAg
ICAgICB2ZXJ0ZXhMb2FkUmVxdWlyZXNDb252ZXJzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1VOT1JNX0JMT0NL
OgorICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgICAgICAgICAgICAgICA9IEdMX0NPTVBSRVNT
RURfUkVEX0dSRUVOX1JHVEMyX0VYVDsKKyAgICAgICAgICAgIGFjdHVhbEltYWdlRm9ybWF0SUQg
ICAgICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9SR19VTk9STV9CTE9DSzsKKyAgICAgICAg
ICAgIHZrSW1hZ2VGb3JtYXQgICAgICAgICAgICAgICAgPSBWS19GT1JNQVRfQkM1X1VOT1JNX0JM
T0NLOworICAgICAgICAgICAgaW1hZ2VJbml0aWFsaXplckZ1bmN0aW9uICAgICA9IG51bGxwdHI7
CisgICAgICAgICAgICBhY3R1YWxCdWZmZXJGb3JtYXRJRCAgICAgICAgID0gYW5nbGU6OkZvcm1h
dElEOjpCQzVfUkdfVU5PUk1fQkxPQ0s7CisgICAgICAgICAgICB2a0J1ZmZlckZvcm1hdCAgICAg
ICAgICAgICAgID0gVktfRk9STUFUX0JDNV9VTk9STV9CTE9DSzsKKyAgICAgICAgICAgIHZrQnVm
ZmVyRm9ybWF0SXNQYWNrZWQgICAgICAgPSBmYWxzZTsKKyAgICAgICAgICAgIHZlcnRleExvYWRG
dW5jdGlvbiAgICAgICAgICAgPSBudWxscHRyOworICAgICAgICAgICAgdmVydGV4TG9hZFJlcXVp
cmVzQ29udmVyc2lvbiA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2Fz
ZSBhbmdsZTo6Rm9ybWF0SUQ6OkJQVENfUkdCQV9VTk9STV9CTE9DSzoKICAgICAgICAgICAgIGlu
dGVybmFsRm9ybWF0ICAgICAgICAgICAgICAgPSBHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9S
TV9FWFQ7CiAgICAgICAgICAgICBhY3R1YWxJbWFnZUZvcm1hdElEICAgICAgICAgID0gYW5nbGU6
OkZvcm1hdElEOjpCUFRDX1JHQkFfVU5PUk1fQkxPQ0s7CkBAIC04MDYsMTUgKzg1NCwxNiBAQCB2
b2lkIEZvcm1hdDo6aW5pdGlhbGl6ZShSZW5kZXJlclZrICpyZW5kZXJlciwgY29uc3QgYW5nbGU6
OkZvcm1hdCAmYW5nbGVGb3JtYXQpCiAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCA9IEdMX0RF
UFRIX0NPTVBPTkVOVDI0OwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgSW1hZ2VGb3JtYXRJbml0SW5mbyBrSW5mb1tdID0geworICAgICAgICAgICAgICAg
ICAgICB7YW5nbGU6OkZvcm1hdElEOjpEMjRfVU5PUk1fWDhfVUlOVCwgVktfRk9STUFUX1g4X0Qy
NF9VTk9STV9QQUNLMzIsIG51bGxwdHJ9LAogICAgICAgICAgICAgICAgICAgICB7YW5nbGU6OkZv
cm1hdElEOjpEMjRfVU5PUk1fUzhfVUlOVCwgVktfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULCBu
dWxscHRyfSwKICAgICAgICAgICAgICAgICAgICAge2FuZ2xlOjpGb3JtYXRJRDo6RDMyX0ZMT0FU
X1M4WDI0X1VJTlQsIFZLX0ZPUk1BVF9EMzJfU0ZMT0FUX1M4X1VJTlQsIG51bGxwdHJ9fTsKICAg
ICAgICAgICAgICAgICBpbml0SW1hZ2VGYWxsYmFjayhyZW5kZXJlciwga0luZm8sIEFycmF5U2l6
ZShrSW5mbykpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYWN0dWFsQnVmZmVyRm9ybWF0
SUQgICAgICAgICA9IGFuZ2xlOjpGb3JtYXRJRDo6Tk9ORTsKLSAgICAgICAgICAgIHZrQnVmZmVy
Rm9ybWF0ICAgICAgICAgICAgICAgPSBWS19GT1JNQVRfVU5ERUZJTkVEOwotICAgICAgICAgICAg
dmtCdWZmZXJGb3JtYXRJc1BhY2tlZCAgICAgICA9IGZhbHNlOwotICAgICAgICAgICAgdmVydGV4
TG9hZEZ1bmN0aW9uICAgICAgICAgICA9IG51bGxwdHI7Ci0gICAgICAgICAgICB2ZXJ0ZXhMb2Fk
UmVxdWlyZXNDb252ZXJzaW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGFjdHVhbEJ1ZmZlckZvcm1h
dElEICAgICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkQyNF9VTk9STV9YOF9VSU5UOworICAgICAg
ICAgICAgdmtCdWZmZXJGb3JtYXQgICAgICAgICAgICAgICA9IFZLX0ZPUk1BVF9YOF9EMjRfVU5P
Uk1fUEFDSzMyOworICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXRJc1BhY2tlZCAgICAgICA9IHRy
dWU7CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkRnVuY3Rpb24gICAgICAgICAgID0gQ29weU5hdGl2
ZVZlcnRleERhdGE8R0x1aW50LCAxLCAxLCAwPjsKKyAgICAgICAgICAgIHZlcnRleExvYWRSZXF1
aXJlc0NvbnZlcnNpb24gPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgYW5nbGU6OkZvcm1hdElEOjpEMzJfRkxPQVQ6CkBAIC0yMjI1LDIyICsyMjc0LDE1IEBAIHZv
aWQgRm9ybWF0Ojppbml0aWFsaXplKFJlbmRlcmVyVmsgKnJlbmRlcmVyLCBjb25zdCBhbmdsZTo6
Rm9ybWF0ICZhbmdsZUZvcm1hdCkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
YW5nbGU6OkZvcm1hdElEOjpSOEc4QjhfVU5PUk06Ci0gICAgICAgICAgICBpbnRlcm5hbEZvcm1h
dCA9IEdMX1JHQjg7Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBJbWFnZUZvcm1hdEluaXRJbmZvIGtJbmZvW10gPSB7Ci0gICAgICAgICAgICAgICAgICAg
IHthbmdsZTo6Rm9ybWF0SUQ6OlI4RzhCOF9VTk9STSwgVktfRk9STUFUX1I4RzhCOF9VTk9STSwg
bnVsbHB0cn0sCi0gICAgICAgICAgICAgICAgICAgIHthbmdsZTo6Rm9ybWF0SUQ6OlI4RzhCOEE4
X1VOT1JNLCBWS19GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICBJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj59
fTsKLSAgICAgICAgICAgICAgICBpbml0SW1hZ2VGYWxsYmFjayhyZW5kZXJlciwga0luZm8sIEFy
cmF5U2l6ZShrSW5mbykpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgQnVmZmVyRm9ybWF0SW5pdEluZm8ga0luZm9bXSA9IHsK
LSAgICAgICAgICAgICAgICAgICAge2FuZ2xlOjpGb3JtYXRJRDo6UjhHOEI4X1VOT1JNLCBWS19G
T1JNQVRfUjhHOEI4X1VOT1JNLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIENvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIDMsIDA+LCBmYWxzZX0sCi0gICAgICAgICAgICAgICAg
ICAgIHthbmdsZTo6Rm9ybWF0SUQ6OlIzMkczMkIzMl9GTE9BVCwgVktfRk9STUFUX1IzMkczMkIz
Ml9TRkxPQVQsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgQ29weVRvMzJGVmVydGV4RGF0
YTxHTHVieXRlLCAzLCAzLCB0cnVlPiwgdHJ1ZX19OwotICAgICAgICAgICAgICAgIGluaXRCdWZm
ZXJGYWxsYmFjayhyZW5kZXJlciwga0luZm8sIEFycmF5U2l6ZShrSW5mbykpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgICAgICAgICAgID0gR0xfUkdCODsKKyAg
ICAgICAgICAgIGFjdHVhbEltYWdlRm9ybWF0SUQgICAgICA9IGFuZ2xlOjpGb3JtYXRJRDo6UjhH
OEI4QThfVU5PUk07CisgICAgICAgICAgICB2a0ltYWdlRm9ybWF0ICAgICAgICAgICAgPSBWS19G
T1JNQVRfUjhHOEI4QThfVU5PUk07CisgICAgICAgICAgICBpbWFnZUluaXRpYWxpemVyRnVuY3Rp
b24gPSBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwg
MHhGRj47CisgICAgICAgICAgICBhY3R1YWxCdWZmZXJGb3JtYXRJRCAgICAgPSBhbmdsZTo6Rm9y
bWF0SUQ6OlIzMkczMkIzMl9GTE9BVDsKKyAgICAgICAgICAgIHZrQnVmZmVyRm9ybWF0ICAgICAg
ICAgICA9IFZLX0ZPUk1BVF9SMzJHMzJCMzJfU0ZMT0FUOworICAgICAgICAgICAgdmtCdWZmZXJG
b3JtYXRJc1BhY2tlZCAgID0gZmFsc2U7CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkRnVuY3Rpb24g
ICAgICAgPSBDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIDMsIHRydWU+OworICAgICAg
ICAgICAgdmVydGV4TG9hZFJlcXVpcmVzQ29udmVyc2lvbiA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6UjhHOEI4X1VOT1JNX1NSR0I6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL3ZrX2hlbHBlcnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJzLmNwcAppbmRleCBlNTQwNTA3ZTdkMzhj
MzhlYWQ2NGU4NDBkYTAyMmU4MzE1YTY1YTc5Li5mYWM0NjYzZjg0OGZjZmMyMjg5ZmMzNDU2MmFj
MzY5YjU3Mzk2NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2hlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaGVscGVycy5jcHAKQEAg
LTI2NCw3ICsyNjQsOCBAQCBWa0ltYWdlQ3JlYXRlRmxhZ3MgR2V0SW1hZ2VDcmVhdGVGbGFncyhn
bDo6VGV4dHVyZVR5cGUgdGV4dHVyZVR5cGUpCiAgICAgfQogfQogCi12b2lkIEhhbmRsZVByaW1p
dGl2ZVJlc3RhcnQoZ2w6OkRyYXdFbGVtZW50c1R5cGUgZ2xJbmRleFR5cGUsCit2b2lkIEhhbmRs
ZVByaW1pdGl2ZVJlc3RhcnQoQ29udGV4dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5cGUgZ2xJbmRleFR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbmRleENvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyY1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRQdHIpCkBAIC0yNzIsNyArMjczLDE0IEBAIHZvaWQgSGFuZGxlUHJp
bWl0aXZlUmVzdGFydChnbDo6RHJhd0VsZW1lbnRzVHlwZSBnbEluZGV4VHlwZSwKICAgICBzd2l0
Y2ggKGdsSW5kZXhUeXBlKQogICAgIHsKICAgICAgICAgY2FzZSBnbDo6RHJhd0VsZW1lbnRzVHlw
ZTo6VW5zaWduZWRCeXRlOgotICAgICAgICAgICAgQ29weUxpbmVMb29wSW5kaWNlc1dpdGhSZXN0
YXJ0PHVpbnQ4X3QsIHVpbnQxNl90PihpbmRleENvdW50LCBzcmNQdHIsIG91dFB0cik7CisgICAg
ICAgICAgICBpZiAoY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLnN1cHBvcnRzSW5kZXhUeXBlVWlu
dDguZW5hYmxlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb3B5TGluZUxvb3BJ
bmRpY2VzV2l0aFJlc3RhcnQ8dWludDhfdCwgdWludDhfdD4oaW5kZXhDb3VudCwgc3JjUHRyLCBv
dXRQdHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIENvcHlMaW5lTG9vcEluZGljZXNXaXRoUmVzdGFydDx1aW50OF90LCB1
aW50MTZfdD4oaW5kZXhDb3VudCwgc3JjUHRyLCBvdXRQdHIpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkRyYXdFbGVtZW50c1R5cGU6OlVuc2ln
bmVkU2hvcnQ6CiAgICAgICAgICAgICBDb3B5TGluZUxvb3BJbmRpY2VzV2l0aFJlc3RhcnQ8dWlu
dDE2X3QsIHVpbnQxNl90PihpbmRleENvdW50LCBzcmNQdHIsIG91dFB0cik7CkBAIC05MzEsNTIg
KzkzOSwzMyBAQCB2b2lkIER5bmFtaWNRdWVyeVBvb2w6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNl
KQogCiBhbmdsZTo6UmVzdWx0IER5bmFtaWNRdWVyeVBvb2w6OmFsbG9jYXRlUXVlcnkoQ29udGV4
dFZrICpjb250ZXh0VmssIFF1ZXJ5SGVscGVyICpxdWVyeU91dCkKIHsKLSAgICBBU1NFUlQoIXF1
ZXJ5T3V0LT5nZXRRdWVyeVBvb2woKSk7CisgICAgQVNTRVJUKCFxdWVyeU91dC0+dmFsaWQoKSk7
CiAKLSAgICBzaXplX3QgcG9vbEluZGV4ICAgID0gMDsKLSAgICB1aW50MzJfdCBxdWVyeUluZGV4
ID0gMDsKLSAgICBBTkdMRV9UUlkoYWxsb2NhdGVRdWVyeShjb250ZXh0VmssICZwb29sSW5kZXgs
ICZxdWVyeUluZGV4KSk7CisgICAgaWYgKG1DdXJyZW50RnJlZUVudHJ5ID49IG1Qb29sU2l6ZSkK
KyAgICB7CisgICAgICAgIC8vIE5vIG1vcmUgcXVlcmllcyBsZWZ0IGluIHRoaXMgcG9vbCwgY3Jl
YXRlIGFub3RoZXIgb25lLgorICAgICAgICBBTkdMRV9UUlkoYWxsb2NhdGVOZXdQb29sKGNvbnRl
eHRWaykpOworICAgIH0KIAotICAgIHF1ZXJ5T3V0LT5pbml0KHRoaXMsIHBvb2xJbmRleCwgcXVl
cnlJbmRleCk7CisgICAgdWludDMyX3QgcXVlcnlJbmRleCA9IG1DdXJyZW50RnJlZUVudHJ5Kys7
CisgICAgcXVlcnlPdXQtPmluaXQodGhpcywgbUN1cnJlbnRQb29sLCBxdWVyeUluZGV4KTsKIAog
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAogdm9pZCBEeW5hbWljUXVl
cnlQb29sOjpmcmVlUXVlcnkoQ29udGV4dFZrICpjb250ZXh0VmssIFF1ZXJ5SGVscGVyICpxdWVy
eSkKIHsKLSAgICBpZiAocXVlcnktPmdldFF1ZXJ5UG9vbCgpKQorICAgIGlmIChxdWVyeS0+dmFs
aWQoKSkKICAgICB7Ci0gICAgICAgIHNpemVfdCBwb29sSW5kZXggPSBxdWVyeS0+Z2V0UXVlcnlQ
b29sSW5kZXgoKTsKLSAgICAgICAgQVNTRVJUKHF1ZXJ5LT5nZXRRdWVyeVBvb2woKS0+dmFsaWQo
KSk7CisgICAgICAgIHNpemVfdCBwb29sSW5kZXggPSBxdWVyeS0+bVF1ZXJ5UG9vbEluZGV4Owor
ICAgICAgICBBU1NFUlQoZ2V0UXVlcnlQb29sKHBvb2xJbmRleCkudmFsaWQoKSk7CiAKLSAgICAg
ICAgZnJlZVF1ZXJ5KGNvbnRleHRWaywgcG9vbEluZGV4LCBxdWVyeS0+Z2V0UXVlcnkoKSk7Cisg
ICAgICAgIG9uRW50cnlGcmVlZChjb250ZXh0VmssIHBvb2xJbmRleCk7CiAKICAgICAgICAgcXVl
cnktPmRlaW5pdCgpOwogICAgIH0KIH0KIAotYW5nbGU6OlJlc3VsdCBEeW5hbWljUXVlcnlQb29s
OjphbGxvY2F0ZVF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqcG9vbEluZGV4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpxdWVyeUluZGV4
KQotewotICAgIGlmIChtQ3VycmVudEZyZWVFbnRyeSA+PSBtUG9vbFNpemUpCi0gICAgewotICAg
ICAgICAvLyBObyBtb3JlIHF1ZXJpZXMgbGVmdCBpbiB0aGlzIHBvb2wsIGNyZWF0ZSBhbm90aGVy
IG9uZS4KLSAgICAgICAgQU5HTEVfVFJZKGFsbG9jYXRlTmV3UG9vbChjb250ZXh0VmspKTsKLSAg
ICB9Ci0KLSAgICAqcG9vbEluZGV4ICA9IG1DdXJyZW50UG9vbDsKLSAgICAqcXVlcnlJbmRleCA9
IG1DdXJyZW50RnJlZUVudHJ5Kys7Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7Ci19Ci0KLXZvaWQgRHluYW1pY1F1ZXJ5UG9vbDo6ZnJlZVF1ZXJ5KENvbnRleHRWayAqY29u
dGV4dFZrLCBzaXplX3QgcG9vbEluZGV4LCB1aW50MzJfdCBxdWVyeUluZGV4KQotewotICAgIEFO
R0xFX1VOVVNFRF9WQVJJQUJMRShxdWVyeUluZGV4KTsKLSAgICBvbkVudHJ5RnJlZWQoY29udGV4
dFZrLCBwb29sSW5kZXgpOwotfQotCiBhbmdsZTo6UmVzdWx0IER5bmFtaWNRdWVyeVBvb2w6OmFs
bG9jYXRlTmV3UG9vbChDb250ZXh0VmsgKmNvbnRleHRWaykKIHsKICAgICBpZiAoZmluZEZyZWVF
bnRyeVBvb2woY29udGV4dFZrKSkKQEAgLTEwMTksMjIgKzEwMDgsNDAgQEAgdm9pZCBRdWVyeUhl
bHBlcjo6ZGVpbml0KCkKICAgICBtUXVlcnkgICAgICAgICAgICA9IDA7CiB9CiAKLXZvaWQgUXVl
cnlIZWxwZXI6OmJlZ2luUXVlcnkoQ29udGV4dFZrICpjb250ZXh0VmspCithbmdsZTo6UmVzdWx0
IFF1ZXJ5SGVscGVyOjpiZWdpblF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrKQogewotICAgIGNv
bnRleHRWay0+Z2V0Q29tbWFuZEdyYXBoKCktPmJlZ2luUXVlcnkoZ2V0UXVlcnlQb29sKCksIGdl
dFF1ZXJ5KCkpOworICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeUNvbW1hbmRz
OworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmZsdXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRCdWZm
ZXIoJnByaW1hcnlDb21tYW5kcykpOworICAgIGNvbnN0IFF1ZXJ5UG9vbCAmcXVlcnlQb29sID0g
Z2V0UXVlcnlQb29sKCk7CisgICAgcHJpbWFyeUNvbW1hbmRzLT5yZXNldFF1ZXJ5UG9vbChxdWVy
eVBvb2wsIG1RdWVyeSwgMSk7CisgICAgcHJpbWFyeUNvbW1hbmRzLT5iZWdpblF1ZXJ5KHF1ZXJ5
UG9vbCwgbVF1ZXJ5LCAwKTsKICAgICBtTW9zdFJlY2VudFNlcmlhbCA9IGNvbnRleHRWay0+Z2V0
Q3VycmVudFF1ZXVlU2VyaWFsKCk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OwogfQogCi12b2lkIFF1ZXJ5SGVscGVyOjplbmRRdWVyeShDb250ZXh0VmsgKmNvbnRleHRWaykK
K2FuZ2xlOjpSZXN1bHQgUXVlcnlIZWxwZXI6OmVuZFF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZr
KQogewotICAgIGNvbnRleHRWay0+Z2V0Q29tbWFuZEdyYXBoKCktPmVuZFF1ZXJ5KGdldFF1ZXJ5
UG9vbCgpLCBnZXRRdWVyeSgpKTsKKyAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1h
cnlDb21tYW5kczsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5mbHVzaEFuZEdldFByaW1hcnlD
b21tYW5kQnVmZmVyKCZwcmltYXJ5Q29tbWFuZHMpKTsKKyAgICBwcmltYXJ5Q29tbWFuZHMtPmVu
ZFF1ZXJ5KGdldFF1ZXJ5UG9vbCgpLCBtUXVlcnkpOwogICAgIG1Nb3N0UmVjZW50U2VyaWFsID0g
Y29udGV4dFZrLT5nZXRDdXJyZW50UXVldWVTZXJpYWwoKTsKKyAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgUXVlcnlIZWxwZXI6OndyaXRlVGltZXN0YW1wKENv
bnRleHRWayAqY29udGV4dFZrKQorYW5nbGU6OlJlc3VsdCBRdWVyeUhlbHBlcjo6Zmx1c2hBbmRX
cml0ZVRpbWVzdGFtcChDb250ZXh0VmsgKmNvbnRleHRWaykKIHsKLSAgICBjb250ZXh0VmstPmdl
dENvbW1hbmRHcmFwaCgpLT53cml0ZVRpbWVzdGFtcChnZXRRdWVyeVBvb2woKSwgZ2V0UXVlcnko
KSk7CisgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5OworICAgIEFOR0xFX1RS
WShjb250ZXh0VmstPmZsdXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRCdWZmZXIoJnByaW1hcnkpKTsK
KyAgICB3cml0ZVRpbWVzdGFtcChwcmltYXJ5KTsKICAgICBtTW9zdFJlY2VudFNlcmlhbCA9IGNv
bnRleHRWay0+Z2V0Q3VycmVudFF1ZXVlU2VyaWFsKCk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOworfQorCit2b2lkIFF1ZXJ5SGVscGVyOjp3cml0ZVRpbWVzdGFtcCh2azo6
UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnkpCit7CisgICAgY29uc3QgUXVlcnlQb29sICZx
dWVyeVBvb2wgPSBnZXRRdWVyeVBvb2woKTsKKyAgICBwcmltYXJ5LT5yZXNldFF1ZXJ5UG9vbChx
dWVyeVBvb2wsIG1RdWVyeSwgMSk7CisgICAgcHJpbWFyeS0+d3JpdGVUaW1lc3RhbXAoVktfUElQ
RUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklULCBxdWVyeVBvb2wsIG1RdWVyeSk7CiB9CiAK
IGJvb2wgUXVlcnlIZWxwZXI6Omhhc1BlbmRpbmdXb3JrKENvbnRleHRWayAqY29udGV4dFZrKQpA
QCAtMTA0NCw2ICsxMDUxLDM5IEBAIGJvb2wgUXVlcnlIZWxwZXI6Omhhc1BlbmRpbmdXb3JrKENv
bnRleHRWayAqY29udGV4dFZrKQogICAgIHJldHVybiBtTW9zdFJlY2VudFNlcmlhbCA9PSBjb250
ZXh0VmstPmdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpOwogfQogCithbmdsZTo6UmVzdWx0IFF1ZXJ5
SGVscGVyOjpnZXRVaW50NjRSZXN1bHROb25CbG9ja2luZyhDb250ZXh0VmsgKmNvbnRleHRWaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ2NF90ICpyZXN1bHRPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sICphdmFpbGFibGVPdXQpCit7CisgICAgQVNTRVJUKHZhbGlk
KCkpOworICAgIFZrRGV2aWNlIGRldmljZSAgICAgICAgICAgICAgICAgICAgID0gY29udGV4dFZr
LT5nZXREZXZpY2UoKTsKKyAgICBjb25zdGV4cHIgVmtRdWVyeVJlc3VsdEZsYWdzIGtGbGFncyA9
IFZLX1FVRVJZX1JFU1VMVF82NF9CSVQ7CisgICAgVmtSZXN1bHQgcmVzdWx0ID0gZ2V0UXVlcnlQ
b29sKCkuZ2V0UmVzdWx0cyhkZXZpY2UsIG1RdWVyeSwgMSwgc2l6ZW9mKHVpbnQ2NF90KSwgcmVz
dWx0T3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZW9mKHVpbnQ2NF90KSwga0ZsYWdzKTsKKworICAgIGlmIChyZXN1bHQgPT0gVktfTk9UX1JF
QURZKQorICAgIHsKKyAgICAgICAgKmF2YWlsYWJsZU91dCA9IGZhbHNlOworICAgICAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0VmssIHJlc3VsdCk7CisgICAgICAgICphdmFpbGFibGVP
dXQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9
CisKK2FuZ2xlOjpSZXN1bHQgUXVlcnlIZWxwZXI6OmdldFVpbnQ2NFJlc3VsdChDb250ZXh0Vmsg
KmNvbnRleHRWaywgdWludDY0X3QgKnJlc3VsdE91dCkKK3sKKyAgICBBU1NFUlQodmFsaWQoKSk7
CisgICAgVmtEZXZpY2UgZGV2aWNlICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0VmstPmdl
dERldmljZSgpOworICAgIGNvbnN0ZXhwciBWa1F1ZXJ5UmVzdWx0RmxhZ3Mga0ZsYWdzID0gVktf
UVVFUllfUkVTVUxUXzY0X0JJVCB8IFZLX1FVRVJZX1JFU1VMVF9XQUlUX0JJVDsKKyAgICBBTkdM
RV9WS19UUlkoY29udGV4dFZrLCBnZXRRdWVyeVBvb2woKS5nZXRSZXN1bHRzKGRldmljZSwgbVF1
ZXJ5LCAxLCBzaXplb2YodWludDY0X3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0T3V0LCBzaXplb2YodWludDY0X3QpLCBrRmxh
Z3MpKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKIC8vIER5bmFt
aWNTZW1hcGhvcmVQb29sIGltcGxlbWVudGF0aW9uCiBEeW5hbWljU2VtYXBob3JlUG9vbDo6RHlu
YW1pY1NlbWFwaG9yZVBvb2woKSA9IGRlZmF1bHQ7CiAKQEAgLTEyMjIsMTEgKzEyNjIsOCBAQCBh
bmdsZTo6UmVzdWx0IExpbmVMb29wSGVscGVyOjpnZXRJbmRleEJ1ZmZlckZvckVsZW1lbnRBcnJh
eUJ1ZmZlcihDb250ZXh0VmsgKmNvbgogCiAgICAgKmluZGV4Q291bnRPdXQgPSBpbmRleENvdW50
ICsgMTsKIAotICAgIFZrSW5kZXhUeXBlIGluZGV4VHlwZSA9IGdsX3ZrOjprSW5kZXhUeXBlTWFw
W2dsSW5kZXhUeXBlXTsKLSAgICBBU1NFUlQoaW5kZXhUeXBlID09IFZLX0lOREVYX1RZUEVfVUlO
VDE2IHx8IGluZGV4VHlwZSA9PSBWS19JTkRFWF9UWVBFX1VJTlQzMik7Ci0gICAgdWludDMyX3Qg
KmluZGljZXMgPSBudWxscHRyOwotCi0gICAgYXV0byB1bml0U2l6ZSA9IChpbmRleFR5cGUgPT0g
VktfSU5ERVhfVFlQRV9VSU5UMTYgPyBzaXplb2YodWludDE2X3QpIDogc2l6ZW9mKHVpbnQzMl90
KSk7CisgICAgdWludDMyX3QgKmluZGljZXMgICAgPSBudWxscHRyOworICAgIHNpemVfdCB1bml0
U2l6ZSAgICAgID0gY29udGV4dFZrLT5nZXRWa0luZGV4VHlwZVNpemUoZ2xJbmRleFR5cGUpOwog
ICAgIHNpemVfdCBhbGxvY2F0ZUJ5dGVzID0gdW5pdFNpemUgKiAoaW5kZXhDb3VudCArIDEpICsg
MTsKIAogICAgIG1EeW5hbWljSW5kZXhCdWZmZXIucmVsZWFzZUluRmxpZ2h0QnVmZmVycyhjb250
ZXh0VmspOwpAQCAtMTI1OCwxMSArMTI5NSwxMCBAQCBhbmdsZTo6UmVzdWx0IExpbmVMb29wSGVs
cGVyOjpzdHJlYW1JbmRpY2VzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNpemUgKmJ1ZmZlck9mZnNldE91
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
KmluZGV4Q291bnRPdXQpCiB7Ci0gICAgVmtJbmRleFR5cGUgaW5kZXhUeXBlID0gZ2xfdms6OmtJ
bmRleFR5cGVNYXBbZ2xJbmRleFR5cGVdOworICAgIHNpemVfdCB1bml0U2l6ZSA9IGNvbnRleHRW
ay0+Z2V0VmtJbmRleFR5cGVTaXplKGdsSW5kZXhUeXBlKTsKIAogICAgIHVpbnQ4X3QgKmluZGlj
ZXMgPSBudWxscHRyOwogCi0gICAgYXV0byB1bml0U2l6ZSA9IChpbmRleFR5cGUgPT0gVktfSU5E
RVhfVFlQRV9VSU5UMTYgPyBzaXplb2YodWludDE2X3QpIDogc2l6ZW9mKHVpbnQzMl90KSk7CiAg
ICAgdWludDMyX3QgbnVtT3V0SW5kaWNlcyA9IGluZGV4Q291bnQgKyAxOwogICAgIGlmIChjb250
ZXh0VmstPmdldFN0YXRlKCkuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpKQogICAgIHsKQEAg
LTEyNzcsMTMgKzEzMTMsMTQgQEAgYW5nbGU6OlJlc3VsdCBMaW5lTG9vcEhlbHBlcjo6c3RyZWFt
SW5kaWNlcyhDb250ZXh0VmsgKmNvbnRleHRWaywKIAogICAgIGlmIChjb250ZXh0VmstPmdldFN0
YXRlKCkuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpKQogICAgIHsKLSAgICAgICAgSGFuZGxl
UHJpbWl0aXZlUmVzdGFydChnbEluZGV4VHlwZSwgaW5kZXhDb3VudCwgc3JjUHRyLCBpbmRpY2Vz
KTsKKyAgICAgICAgSGFuZGxlUHJpbWl0aXZlUmVzdGFydChjb250ZXh0VmssIGdsSW5kZXhUeXBl
LCBpbmRleENvdW50LCBzcmNQdHIsIGluZGljZXMpOwogICAgIH0KICAgICBlbHNlCiAgICAgewot
ICAgICAgICBpZiAoZ2xJbmRleFR5cGUgPT0gZ2w6OkRyYXdFbGVtZW50c1R5cGU6OlVuc2lnbmVk
Qnl0ZSkKKyAgICAgICAgaWYgKGNvbnRleHRWay0+c2hvdWxkQ29udmVydFVpbnQ4VmtJbmRleFR5
cGUoZ2xJbmRleFR5cGUpKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBWdWxrYW4gZG9lc24n
dCBzdXBwb3J0IHVpbnQ4IGluZGV4IHR5cGVzLCBzbyB3ZSBuZWVkIHRvIGVtdWxhdGUgaXQuCisg
ICAgICAgICAgICAvLyBJZiB2dWxrYW4gZG9lc24ndCBzdXBwb3J0IHVpbnQ4IGluZGV4IHR5cGVz
LCB3ZSBuZWVkIHRvIGVtdWxhdGUgaXQuCisgICAgICAgICAgICBWa0luZGV4VHlwZSBpbmRleFR5
cGUgPSBjb250ZXh0VmstPmdldFZrSW5kZXhUeXBlKGdsSW5kZXhUeXBlKTsKICAgICAgICAgICAg
IEFTU0VSVChpbmRleFR5cGUgPT0gVktfSU5ERVhfVFlQRV9VSU5UMTYpOwogICAgICAgICAgICAg
dWludDE2X3QgKmluZGljZXNEc3QgPSByZWludGVycHJldF9jYXN0PHVpbnQxNl90ICo+KGluZGlj
ZXMpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleENvdW50OyBpKyspCkBA
IC0xMzE0LDkgKzEzNTEsNyBAQCBhbmdsZTo6UmVzdWx0IExpbmVMb29wSGVscGVyOjpzdHJlYW1J
bmRpY2VzSW5kaXJlY3QoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySGVscGVyICoqaW5kaXJlY3RC
dWZmZXJPdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtEZXZpY2VTaXplICppbmRpcmVjdEJ1ZmZlck9mZnNldE91dCkKIHsKLSAgICBWa0lu
ZGV4VHlwZSBpbmRleFR5cGUgPSBnbF92azo6a0luZGV4VHlwZU1hcFtnbEluZGV4VHlwZV07Ci0K
LSAgICBhdXRvIHVuaXRTaXplID0gKGluZGV4VHlwZSA9PSBWS19JTkRFWF9UWVBFX1VJTlQxNiA/
IHNpemVvZih1aW50MTZfdCkgOiBzaXplb2YodWludDMyX3QpKTsKKyAgICBzaXplX3QgdW5pdFNp
emUgICAgICA9IGNvbnRleHRWay0+Z2V0VmtJbmRleFR5cGVTaXplKGdsSW5kZXhUeXBlKTsKICAg
ICBzaXplX3QgYWxsb2NhdGVCeXRlcyA9IHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXhCdWZmZXIt
PmdldFNpemUoKSArIHVuaXRTaXplKTsKIAogICAgIGlmIChjb250ZXh0VmstPmdldFN0YXRlKCku
aXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpKQpAQCAtMTM1Myw3ICsxMzg4LDcgQEAgYW5nbGU6
OlJlc3VsdCBMaW5lTG9vcEhlbHBlcjo6c3RyZWFtSW5kaWNlc0luZGlyZWN0KENvbnRleHRWayAq
Y29udGV4dFZrLAogICAgIHBhcmFtcy5pbmRpcmVjdEJ1ZmZlck9mZnNldCAgICA9IHN0YXRpY19j
YXN0PHVpbnQzMl90PihpbmRpcmVjdEJ1ZmZlck9mZnNldCk7CiAgICAgcGFyYW1zLmRzdEluZGly
ZWN0QnVmZmVyT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCppbmRpcmVjdEJ1ZmZlck9m
ZnNldE91dCk7CiAgICAgcGFyYW1zLmRzdEluZGV4QnVmZmVyT2Zmc2V0ICAgID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KCppbmRleEJ1ZmZlck9mZnNldE91dCk7Ci0gICAgcGFyYW1zLmlzMzJCaXQg
ICAgICAgICAgICAgICAgID0gdW5pdFNpemUgPT0gNDsKKyAgICBwYXJhbXMuaW5kaWNlc0JpdHNX
aWR0aCAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odW5pdFNpemUgKiA4KTsKIAogICAg
IEFOR0xFX1RSWShjb250ZXh0VmstPmdldFV0aWxzKCkuY29udmVydExpbmVMb29wSW5kZXhJbmRp
cmVjdEJ1ZmZlcigKICAgICAgICAgY29udGV4dFZrLCBpbmRpcmVjdEJ1ZmZlciwgZGVzdEluZGly
ZWN0QnVmZmVyLCBkZXN0SW5kZXhCdWZmZXIsIGluZGV4QnVmZmVyLCBwYXJhbXMpKTsKQEAgLTE0
MjIsOCArMTQ1Nyw3IEBAIHZvaWQgTGluZUxvb3BIZWxwZXI6OkRyYXcodWludDMyX3QgY291bnQs
IHVpbnQzMl90IGJhc2VWZXJ0ZXgsIENvbW1hbmRCdWZmZXIgKmNvCiAKIC8vIEJ1ZmZlckhlbHBl
ciBpbXBsZW1lbnRhdGlvbi4KIEJ1ZmZlckhlbHBlcjo6QnVmZmVySGVscGVyKCkKLSAgICA6IENv
bW1hbmRHcmFwaFJlc291cmNlKENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6QnVmZmVyKSwKLSAg
ICAgIG1NZW1vcnlQcm9wZXJ0eUZsYWdze30sCisgICAgOiBtTWVtb3J5UHJvcGVydHlGbGFnc3t9
LAogICAgICAgbVNpemUoMCksCiAgICAgICBtTWFwcGVkTWVtb3J5KG51bGxwdHIpLAogICAgICAg
bVZpZXdGb3JtYXQobnVsbHB0ciksCkBAIC0xNDM4LDcgKzE0NzIsNyBAQCBhbmdsZTo6UmVzdWx0
IEJ1ZmZlckhlbHBlcjo6aW5pdChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyQ3JlYXRlSW5mbyAmcmVxdWVzdGVkQ3Jl
YXRlSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVy
dHlGbGFncyBtZW1vcnlQcm9wZXJ0eUZsYWdzKQogewotICAgIFJlbmRlcmVyVmsgKnJlbmRlcmVy
VmsgPSBjb250ZXh0VmstPmdldFJlbmRlcmVyKCk7CisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIg
PSBjb250ZXh0VmstPmdldFJlbmRlcmVyKCk7CiAKICAgICAvLyBUT0RPOiBSZW1vdmUgd2l0aCBh
bmdsZWJ1Zy5jb20vMjE2MjogVnVsa2FuOiBJbXBsZW1lbnQgZGV2aWNlIG1lbW9yeSBzdWItYWxs
b2NhdGlvbgogICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgdG9vIG1hbnkgcmVzb3VyY2VzIGFsbG9j
YXRlZCBhbHJlYWR5IGFuZCBuZWVkIHRvIGZyZWUgc29tZSBiZWZvcmUgYWxsb2NhdGluZwpAQCAt
MTQ1MywxOSArMTQ4Nyw2NSBAQCBhbmdsZTo6UmVzdWx0IEJ1ZmZlckhlbHBlcjo6aW5pdChDb250
ZXh0VmsgKmNvbnRleHRWaywKICAgICBWa0J1ZmZlckNyZWF0ZUluZm8gbW9kaWZpZWRDcmVhdGVJ
bmZvOwogICAgIGNvbnN0IFZrQnVmZmVyQ3JlYXRlSW5mbyAqY3JlYXRlSW5mbyA9ICZyZXF1ZXN0
ZWRDcmVhdGVJbmZvOwogCi0gICAgaWYgKHJlbmRlcmVyVmstPmdldEZlYXR1cmVzKCkucm91bmRV
cEJ1ZmZlcnNUb01heFZlcnRleEF0dHJpYlN0cmlkZS5lbmFibGVkKQorICAgIGlmIChyZW5kZXJl
ci0+Z2V0RmVhdHVyZXMoKS5wYWRCdWZmZXJzVG9NYXhWZXJ0ZXhBdHRyaWJTdHJpZGUuZW5hYmxl
ZCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFZrRGV2aWNlU2l6ZSBtYXhWZXJ0ZXhBdHRyaWJTdHJp
ZGUgPSByZW5kZXJlclZrLT5nZXRNYXhWZXJ0ZXhBdHRyaWJTdHJpZGUoKTsKKyAgICAgICAgY29u
c3QgVmtEZXZpY2VTaXplIG1heFZlcnRleEF0dHJpYlN0cmlkZSA9IHJlbmRlcmVyLT5nZXRNYXhW
ZXJ0ZXhBdHRyaWJTdHJpZGUoKTsKICAgICAgICAgQVNTRVJUKG1heFZlcnRleEF0dHJpYlN0cmlk
ZSk7Ci0gICAgICAgIG1vZGlmaWVkQ3JlYXRlSW5mbyAgICAgID0gcmVxdWVzdGVkQ3JlYXRlSW5m
bzsKLSAgICAgICAgbW9kaWZpZWRDcmVhdGVJbmZvLnNpemUgPSByb3VuZFVwKG1vZGlmaWVkQ3Jl
YXRlSW5mby5zaXplLCBtYXhWZXJ0ZXhBdHRyaWJTdHJpZGUpOwotICAgICAgICBjcmVhdGVJbmZv
ICAgICAgICAgICAgICA9ICZtb2RpZmllZENyZWF0ZUluZm87CisgICAgICAgIG1vZGlmaWVkQ3Jl
YXRlSW5mbyA9IHJlcXVlc3RlZENyZWF0ZUluZm87CisgICAgICAgIG1vZGlmaWVkQ3JlYXRlSW5m
by5zaXplICs9IG1heFZlcnRleEF0dHJpYlN0cmlkZTsKKyAgICAgICAgY3JlYXRlSW5mbyA9ICZt
b2RpZmllZENyZWF0ZUluZm87CiAgICAgfQogCiAgICAgQU5HTEVfVktfVFJZKGNvbnRleHRWaywg
bUJ1ZmZlci5pbml0KGNvbnRleHRWay0+Z2V0RGV2aWNlKCksICpjcmVhdGVJbmZvKSk7CisKKyAg
ICBWa0RldmljZVNpemUgc2l6ZTsKICAgICBBTkdMRV9UUlkoQWxsb2NhdGVCdWZmZXJNZW1vcnko
Y29udGV4dFZrLCBtZW1vcnlQcm9wZXJ0eUZsYWdzLCAmbU1lbW9yeVByb3BlcnR5RmxhZ3MsIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQnVmZmVyLCAmbURl
dmljZU1lbW9yeSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUJ1ZmZl
ciwgJm1EZXZpY2VNZW1vcnksICZzaXplKSk7CiAgICAgbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4
ID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLT5nZXRRdWV1ZUZhbWlseUluZGV4KCk7CisKKyAg
ICBpZiAocmVuZGVyZXItPmdldEZlYXR1cmVzKCkuYWxsb2NhdGVOb25aZXJvTWVtb3J5LmVuYWJs
ZWQpCisgICAgeworICAgICAgICAvLyBUaGlzIG1lbW9yeSBjYW4ndCBiZSBtYXBwZWQsIHNvIHRo
ZSBidWZmZXIgbXVzdCBiZSBtYXJrZWQgYXMgYSB0cmFuc2ZlciBkZXN0aW5hdGlvbiBzbyB3ZQor
ICAgICAgICAvLyBjYW4gdXNlIGEgc3RhZ2luZyByZXNvdXJjZSB0byBpbml0aWFsaXplIGl0IHRv
IGEgbm9uLXplcm8gdmFsdWUuIElmIHRoZSBtZW1vcnkgaXMKKyAgICAgICAgLy8gbWFwcGFibGUg
d2UgZG8gdGhlIGluaXRpYWxpemF0aW9uIGluIEFsbG9jYXRlQnVmZmVyTWVtb3J5LgorICAgICAg
ICBpZiAoKG1lbW9yeVByb3BlcnR5RmxhZ3MgJiBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJ
QkxFX0JJVCkgPT0gMCAmJgorICAgICAgICAgICAgKHJlcXVlc3RlZENyZWF0ZUluZm8udXNhZ2Ug
JiBWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgQU5HTEVfVFJZKGluaXRpYWxpemVOb25aZXJvTWVtb3J5KGNvbnRleHRWaywgc2l6
ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOworfQorCithbmdsZTo6UmVzdWx0IEJ1ZmZlckhlbHBlcjo6aW5pdGlhbGl6ZU5vblplcm9N
ZW1vcnkoQ29udGV4dCAqY29udGV4dCwgVmtEZXZpY2VTaXplIHNpemUpCit7CisgICAgLy8gU3Rh
Z2luZyBidWZmZXIgbWVtb3J5IGlzIG5vbi16ZXJvLWluaXRpYWxpemVkIGluICdpbml0Jy4KKyAg
ICBTdGFnaW5nQnVmZmVyIHN0YWdpbmdCdWZmZXI7CisgICAgQU5HTEVfVFJZKHN0YWdpbmdCdWZm
ZXIuaW5pdChjb250ZXh0LCBzaXplLCBTdGFnaW5nVXNhZ2U6OkJvdGgpKTsKKworICAgIFJlbmRl
cmVyVmsgKnJlbmRlcmVyID0gY29udGV4dC0+Z2V0UmVuZGVyZXIoKTsKKworICAgIHZrOjpQcmlt
YXJ5Q29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyOworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+
Z2V0Q29tbWFuZEJ1ZmZlck9uZU9mZihjb250ZXh0LCAmY29tbWFuZEJ1ZmZlcikpOworCisgICAg
Ly8gUXVldWUgYSBETUEgY29weS4KKyAgICBWa0J1ZmZlckNvcHkgY29weVJlZ2lvbiA9IHt9Owor
ICAgIGNvcHlSZWdpb24uc3JjT2Zmc2V0ICAgID0gMDsKKyAgICBjb3B5UmVnaW9uLmRzdE9mZnNl
dCAgICA9IDA7CisgICAgY29weVJlZ2lvbi5zaXplICAgICAgICAgPSBzaXplOworCisgICAgY29t
bWFuZEJ1ZmZlci5jb3B5QnVmZmVyKHN0YWdpbmdCdWZmZXIuZ2V0QnVmZmVyKCksIG1CdWZmZXIs
IDEsICZjb3B5UmVnaW9uKTsKKworICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0LCBjb21tYW5kQnVm
ZmVyLmVuZCgpKTsKKworICAgIFNlcmlhbCBzZXJpYWw7CisgICAgQU5HTEVfVFJZKHJlbmRlcmVy
LT5xdWV1ZVN1Ym1pdE9uZU9mZihjb250ZXh0LCBzdGQ6Om1vdmUoY29tbWFuZEJ1ZmZlciksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkNvbnRleHRQcmlv
cml0eTo6TWVkaXVtLCAmc2VyaWFsKSk7CisKKyAgICBzdGFnaW5nQnVmZmVyLmNvbGxlY3RHYXJi
YWdlKHJlbmRlcmVyLCBzZXJpYWwpOworICAgIG1Vc2UudXBkYXRlU2VyaWFsT25lT2ZmKHNlcmlh
bCk7CisKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAgLTE1MDYs
NDggKzE1ODYsMTcgQEAgYm9vbCBCdWZmZXJIZWxwZXI6Om5lZWRzT25Xcml0ZUJhcnJpZXIoVmtB
Y2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUsCiAgICAgcmV0dXJuIG5lZWRzQmFycmllcjsKIH0K
IAotdm9pZCBCdWZmZXJIZWxwZXI6Om9uV3JpdGVBY2Nlc3MoQ29udGV4dFZrICpjb250ZXh0Vmss
IFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NUeXBlKQotewotICAgIFZrQWNjZXNzRmxhZ3MgYmFy
cmllclNyYywgYmFycmllckRzdDsKLSAgICBpZiAobmVlZHNPbldyaXRlQmFycmllcih3cml0ZUFj
Y2Vzc1R5cGUsICZiYXJyaWVyU3JjLCAmYmFycmllckRzdCkpCi0gICAgewotICAgICAgICBhZGRH
bG9iYWxNZW1vcnlCYXJyaWVyKGJhcnJpZXJTcmMsIGJhcnJpZXJEc3QsIFZLX1BJUEVMSU5FX1NU
QUdFX0FMTF9DT01NQU5EU19CSVQpOwotICAgIH0KLQotICAgIGJvb2wgaG9zdFZpc2libGUgPSBt
TWVtb3J5UHJvcGVydHlGbGFncyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklU
OwotICAgIGlmIChob3N0VmlzaWJsZSAmJiB3cml0ZUFjY2Vzc1R5cGUgIT0gVktfQUNDRVNTX0hP
U1RfV1JJVEVfQklUKQotICAgIHsKLSAgICAgICAgY29udGV4dFZrLT5vbkhvc3RWaXNpYmxlQnVm
ZmVyV3JpdGUoKTsKLSAgICB9Ci19Ci0KIGFuZ2xlOjpSZXN1bHQgQnVmZmVySGVscGVyOjpjb3B5
RnJvbUJ1ZmZlcihDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWZmZXIgJmJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJIZWxwZXIgKnNyY0J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0FjY2Vzc0ZsYWdzIGJ1
ZmZlckFjY2Vzc1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmtCdWZmZXJDb3B5ICZjb3B5UmVnaW9uKQogewotICAgIC8vICdyZWNvcmRDb21t
YW5kcycgd2lsbCBpbXBsaWNpdGx5IHN0b3AgYW55IHJlYWRzIGZyb20gdXNpbmcgdGhlIG9sZCBi
dWZmZXIgZGF0YS4KICAgICBDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsK
LSAgICBBTkdMRV9UUlkocmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikp
OworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoYnVmZmVyQWNjZXNzVHlw
ZSwgdGhpcykpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NF
U1NfVFJBTlNGRVJfUkVBRF9CSVQsIHNyY0J1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAK
LSAgICBpZiAobUN1cnJlbnRSZWFkQWNjZXNzICE9IDAgfHwgbUN1cnJlbnRXcml0ZUFjY2VzcyAh
PSAwIHx8IGJ1ZmZlckFjY2Vzc1R5cGUgIT0gMCkKLSAgICB7Ci0gICAgICAgIC8vIEluc2VydCBh
IGJhcnJpZXIgdG8gZW5zdXJlIHJlYWRzL3dyaXRlcyBhcmUgY29tcGxldGUuCi0gICAgICAgIC8v
IFVzZSBhIGdsb2JhbCBtZW1vcnkgYmFycmllciB0byBrZWVwIHRoaW5ncyBzaW1wbGUuCi0gICAg
ICAgIFZrTWVtb3J5QmFycmllciBtZW1vcnlCYXJyaWVyID0ge307Ci0gICAgICAgIG1lbW9yeUJh
cnJpZXIuc1R5cGUgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0JBUlJJRVI7
Ci0gICAgICAgIG1lbW9yeUJhcnJpZXIuc3JjQWNjZXNzTWFzayAgID0gbUN1cnJlbnRSZWFkQWNj
ZXNzIHwgbUN1cnJlbnRXcml0ZUFjY2VzcyB8IGJ1ZmZlckFjY2Vzc1R5cGU7Ci0gICAgICAgIG1l
bW9yeUJhcnJpZXIuZHN0QWNjZXNzTWFzayAgID0gVktfQUNDRVNTX1RSQU5TRkVSX1dSSVRFX0JJ
VDsKLQotICAgICAgICBjb21tYW5kQnVmZmVyLT5waXBlbGluZUJhcnJpZXIoVktfUElQRUxJTkVf
U1RBR0VfQUxMX0NPTU1BTkRTX0JJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX1RSQU5TRkVSX0JJVCwgMCwgMSwgJm1lbW9yeUJhcnJp
ZXIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAw
LCBudWxscHRyKTsKLSAgICB9Ci0KLSAgICBtQ3VycmVudFdyaXRlQWNjZXNzID0gVktfQUNDRVNT
X1RSQU5TRkVSX1dSSVRFX0JJVDsKLSAgICBtQ3VycmVudFJlYWRBY2Nlc3MgID0gMDsKLQotICAg
IGNvbW1hbmRCdWZmZXItPmNvcHlCdWZmZXIoYnVmZmVyLCBtQnVmZmVyLCAxLCAmY29weVJlZ2lv
bik7CisgICAgY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZlcihzcmNCdWZmZXItPmdldEJ1ZmZlcigp
LCBtQnVmZmVyLCAxLCAmY29weVJlZ2lvbik7CiAKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6
Q29udGludWU7CiB9CkBAIC0xNjQ0LDcgKzE2OTMsNyBAQCBib29sIEJ1ZmZlckhlbHBlcjo6Y2Fu
QWNjdW11bGF0ZVJlYWQoQ29udGV4dFZrICpjb250ZXh0VmssIFZrQWNjZXNzRmxhZ3MgcmVhZEFj
YwogewogICAgIC8vIFdlIG9ubHkgbmVlZCB0byBzdGFydCBhIG5ldyBjb21tYW5kIGJ1ZmZlciB3
aGVuIHdlIG5lZWQgYSBuZXcgYmFycmllci4KICAgICAvLyBGb3Igc2ltcGxpY2l0eSdzIHNha2Ug
Zm9yIG5vdyB3ZSBhbHdheXMgc3RhcnQgYSBuZXcgY29tbWFuZCBidWZmZXIuCi0gICAgLy8gVE9E
TyhqbWFkaWxsKTogUmUtdXNlIHRoZSBjb21tYW5kIGJ1ZmZlci4gaHR0cDovL2FuZ2xlYnVnLmNv
bS80MDI5CisgICAgLy8gVE9ETyhqbWFkaWxsKTogUmUtdXNlIHRoZSBjb21tYW5kIGJ1ZmZlci4g
aHR0cDovL2FuZ2xlYnVnLmNvbS80NDI5CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjUy
LDcgKzE3MDEsNyBAQCBib29sIEJ1ZmZlckhlbHBlcjo6Y2FuQWNjdW11bGF0ZVdyaXRlKENvbnRl
eHRWayAqY29udGV4dFZrLCBWa0FjY2Vzc0ZsYWdzIHdyaXRlQQogewogICAgIC8vIFdlIG9ubHkg
bmVlZCB0byBzdGFydCBhIG5ldyBjb21tYW5kIGJ1ZmZlciB3aGVuIHdlIG5lZWQgYSBuZXcgYmFy
cmllci4KICAgICAvLyBGb3Igc2ltcGxpY2l0eSdzIHNha2UgZm9yIG5vdyB3ZSBhbHdheXMgc3Rh
cnQgYSBuZXcgY29tbWFuZCBidWZmZXIuCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogUmUtdXNlIHRo
ZSBjb21tYW5kIGJ1ZmZlci4gaHR0cDovL2FuZ2xlYnVnLmNvbS80MDI5CisgICAgLy8gVE9ETyhq
bWFkaWxsKTogUmUtdXNlIHRoZSBjb21tYW5kIGJ1ZmZlci4gaHR0cDovL2FuZ2xlYnVnLmNvbS80
NDI5CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjg3LDkgKzE3MzYsOSBAQCB2b2lkIEJ1
ZmZlckhlbHBlcjo6dXBkYXRlV3JpdGVCYXJyaWVyKFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NU
eXBlLAogCiAvLyBJbWFnZUhlbHBlciBpbXBsZW1lbnRhdGlvbi4KIEltYWdlSGVscGVyOjpJbWFn
ZUhlbHBlcigpCi0gICAgOiBDb21tYW5kR3JhcGhSZXNvdXJjZShDb21tYW5kR3JhcGhSZXNvdXJj
ZVR5cGU6OkltYWdlKSwKLSAgICAgIG1Gb3JtYXQobnVsbHB0ciksCisgICAgOiBtRm9ybWF0KG51
bGxwdHIpLAogICAgICAgbVNhbXBsZXMoMSksCisgICAgICBtU2VyaWFsKHJ4OjprWmVyb1Nlcmlh
bCksCiAgICAgICBtQ3VycmVudExheW91dChJbWFnZUxheW91dDo6VW5kZWZpbmVkKSwKICAgICAg
IG1DdXJyZW50UXVldWVGYW1pbHlJbmRleChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6
bWF4KCkpLAogICAgICAgbUJhc2VMZXZlbCgwKSwKQEAgLTE2OTksMTIgKzE3NDgsMTIgQEAgSW1h
Z2VIZWxwZXI6OkltYWdlSGVscGVyKCkKIHt9CiAKIEltYWdlSGVscGVyOjpJbWFnZUhlbHBlcihJ
bWFnZUhlbHBlciAmJm90aGVyKQotICAgIDogQ29tbWFuZEdyYXBoUmVzb3VyY2UoQ29tbWFuZEdy
YXBoUmVzb3VyY2VUeXBlOjpJbWFnZSksCi0gICAgICBtSW1hZ2Uoc3RkOjptb3ZlKG90aGVyLm1J
bWFnZSkpLAorICAgIDogbUltYWdlKHN0ZDo6bW92ZShvdGhlci5tSW1hZ2UpKSwKICAgICAgIG1E
ZXZpY2VNZW1vcnkoc3RkOjptb3ZlKG90aGVyLm1EZXZpY2VNZW1vcnkpKSwKICAgICAgIG1FeHRl
bnRzKG90aGVyLm1FeHRlbnRzKSwKICAgICAgIG1Gb3JtYXQob3RoZXIubUZvcm1hdCksCiAgICAg
ICBtU2FtcGxlcyhvdGhlci5tU2FtcGxlcyksCisgICAgICBtU2VyaWFsKG90aGVyLm1TZXJpYWwp
LAogICAgICAgbUN1cnJlbnRMYXlvdXQob3RoZXIubUN1cnJlbnRMYXlvdXQpLAogICAgICAgbUN1
cnJlbnRRdWV1ZUZhbWlseUluZGV4KG90aGVyLm1DdXJyZW50UXVldWVGYW1pbHlJbmRleCksCiAg
ICAgICBtQmFzZUxldmVsKG90aGVyLm1CYXNlTGV2ZWwpLApAQCAtMTcyMCw2ICsxNzY5LDcgQEAg
SW1hZ2VIZWxwZXI6OkltYWdlSGVscGVyKEltYWdlSGVscGVyICYmb3RoZXIpCiAgICAgb3RoZXIu
bU1heExldmVsICAgICAgPSAwOwogICAgIG90aGVyLm1MYXllckNvdW50ICAgID0gMDsKICAgICBv
dGhlci5tTGV2ZWxDb3VudCAgICA9IDA7CisgICAgb3RoZXIubVNlcmlhbCAgICAgICAgPSByeDo6
a1plcm9TZXJpYWw7CiB9CiAKIEltYWdlSGVscGVyOjp+SW1hZ2VIZWxwZXIoKQpAQCAtMTc0Nyw2
ICsxNzk3LDcgQEAgYW5nbGU6OlJlc3VsdCBJbWFnZUhlbHBlcjo6aW5pdChDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtaXBMZXZlbHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxheWVyQ291bnQpCiB7
CisgICAgbVNlcmlhbCA9IHJ4OjprWmVyb1NlcmlhbDsKICAgICByZXR1cm4gaW5pdEV4dGVybmFs
KGNvbnRleHQsIHRleHR1cmVUeXBlLCBleHRlbnRzLCBmb3JtYXQsIHNhbXBsZXMsIHVzYWdlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VMYXlvdXQ6OlVuZGVmaW5lZCwgbnVsbHB0ciwg
YmFzZUxldmVsLCBtYXhMZXZlbCwgbWlwTGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAg
bGF5ZXJDb3VudCk7CkBAIC0xODA4LDYgKzE4NTksNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVs
cGVyOjppbml0RXh0ZXJuYWwoQ29udGV4dCAqY29udGV4dCwKIAogdm9pZCBJbWFnZUhlbHBlcjo6
cmVsZWFzZUltYWdlKFJlbmRlcmVyVmsgKnJlbmRlcmVyKQogeworICAgIG1TZXJpYWwgPSByeDo6
a1plcm9TZXJpYWw7CiAgICAgcmVuZGVyZXItPmNvbGxlY3RHYXJiYWdlQW5kUmVpbml0KCZtVXNl
LCAmbUltYWdlLCAmbURldmljZU1lbW9yeSk7CiB9CiAKQEAgLTE4MjcsMTMgKzE4NzksNjkgQEAg
dm9pZCBJbWFnZUhlbHBlcjo6cmVzZXRJbWFnZVdlYWtSZWZlcmVuY2UoKQogICAgIG1JbWFnZS5y
ZXNldCgpOwogfQogCithbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjppbml0aWFsaXplTm9uWmVy
b01lbW9yeShDb250ZXh0ICpjb250ZXh0LCBWa0RldmljZVNpemUgc2l6ZSkKK3sKKyAgICAvLyBU
aGUgc3RhZ2luZyBidWZmZXIgbWVtb3J5IGlzIG5vbi16ZXJvLWluaXRpYWxpemVkIGluICdpbml0
Jy4KKyAgICB2azo6U3RhZ2luZ0J1ZmZlciBzdGFnaW5nQnVmZmVyOworICAgIEFOR0xFX1RSWShz
dGFnaW5nQnVmZmVyLmluaXQoY29udGV4dCwgc2l6ZSwgdms6OlN0YWdpbmdVc2FnZTo6V3JpdGUp
KTsKKworICAgIFJlbmRlcmVyVmsgKnJlbmRlcmVyID0gY29udGV4dC0+Z2V0UmVuZGVyZXIoKTsK
KworICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyOworICAgIEFOR0xF
X1RSWShyZW5kZXJlci0+Z2V0Q29tbWFuZEJ1ZmZlck9uZU9mZihjb250ZXh0LCAmY29tbWFuZEJ1
ZmZlcikpOworCisgICAgLy8gUXVldWUgYSBETUEgY29weS4KKyAgICBmb3JjZUNoYW5nZUxheW91
dEFuZFF1ZXVlKGdldEFzcGVjdEZsYWdzKCksIEltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgbUN1
cnJlbnRRdWV1ZUZhbWlseUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNv
bW1hbmRCdWZmZXIpOworCisgICAgVmtCdWZmZXJJbWFnZUNvcHkgY29weVJlZ2lvbiAgICAgICAg
ICAgPSB7fTsKKyAgICBjb3B5UmVnaW9uLmltYWdlRXh0ZW50ICAgICAgICAgICAgICAgICA9IG1F
eHRlbnRzOworICAgIGNvcHlSZWdpb24uaW1hZ2VTdWJyZXNvdXJjZS5hc3BlY3RNYXNrID0gZ2V0
QXNwZWN0RmxhZ3MoKTsKKyAgICBjb3B5UmVnaW9uLmltYWdlU3VicmVzb3VyY2UubGF5ZXJDb3Vu
dCA9IDE7CisKKyAgICBjb21tYW5kQnVmZmVyLmNvcHlCdWZmZXJUb0ltYWdlKHN0YWdpbmdCdWZm
ZXIuZ2V0QnVmZmVyKCkuZ2V0SGFuZGxlKCksIG1JbWFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCwgMSwg
JmNvcHlSZWdpb24pOworCisgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIGNvbW1hbmRCdWZmZXIu
ZW5kKCkpOworCisgICAgU2VyaWFsIHNlcmlhbDsKKyAgICBBTkdMRV9UUlkocmVuZGVyZXItPnF1
ZXVlU3VibWl0T25lT2ZmKGNvbnRleHQsIHN0ZDo6bW92ZShjb21tYW5kQnVmZmVyKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6Q29udGV4dFByaW9yaXR5
OjpNZWRpdW0sICZzZXJpYWwpKTsKKworICAgIHN0YWdpbmdCdWZmZXIuY29sbGVjdEdhcmJhZ2Uo
cmVuZGVyZXIsIHNlcmlhbCk7CisgICAgbVVzZS51cGRhdGVTZXJpYWxPbmVPZmYoc2VyaWFsKTsK
KworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwogYW5nbGU6OlJlc3Vs
dCBJbWFnZUhlbHBlcjo6aW5pdE1lbW9yeShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZW1vcnlQcm9wZXJ0aWVzICZtZW1vcnlQ
cm9wZXJ0aWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa01lbW9y
eVByb3BlcnR5RmxhZ3MgZmxhZ3MpCiB7CiAgICAgLy8gVE9ETyhqbWFkaWxsKTogTWVtb3J5IHN1
Yi1hbGxvY2F0aW9uLiBodHRwOi8vYW5nbGVidWcuY29tLzIxNjIKLSAgICBBTkdMRV9UUlkoQWxs
b2NhdGVJbWFnZU1lbW9yeShjb250ZXh0LCBmbGFncywgbnVsbHB0ciwgJm1JbWFnZSwgJm1EZXZp
Y2VNZW1vcnkpKTsKKyAgICBWa0RldmljZVNpemUgc2l6ZTsKKyAgICBBTkdMRV9UUlkoQWxsb2Nh
dGVJbWFnZU1lbW9yeShjb250ZXh0LCBmbGFncywgbnVsbHB0ciwgJm1JbWFnZSwgJm1EZXZpY2VN
ZW1vcnksICZzaXplKSk7CiAgICAgbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4ID0gY29udGV4dC0+
Z2V0UmVuZGVyZXIoKS0+Z2V0UXVldWVGYW1pbHlJbmRleCgpOworCisgICAgUmVuZGVyZXJWayAq
cmVuZGVyZXIgPSBjb250ZXh0LT5nZXRSZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlci0+Z2V0
RmVhdHVyZXMoKS5hbGxvY2F0ZU5vblplcm9NZW1vcnkuZW5hYmxlZCkKKyAgICB7CisgICAgICAg
IC8vIENhbid0IG1hcCB0aGUgbWVtb3J5LiBVc2UgYSBzdGFnaW5nIHJlc291cmNlLgorICAgICAg
ICBpZiAoKGZsYWdzICYgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJMRV9CSVQpID09IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE9ubHkgY3VycmVudGx5IHdvcmtzIHdpdGggc2lu
Z2xlLXNhbXBsZWQgY29sb3IgaW1hZ2VzIHdpdGggb25lIG1pcC9sYXllci4KKyAgICAgICAgICAg
IGlmIChtTGV2ZWxDb3VudCA9PSAxICYmIG1MYXllckNvdW50ID09IDEgJiYKKyAgICAgICAgICAg
ICAgICBnZXRBc3BlY3RGbGFncygpID09IFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQgJiYgbVNh
bXBsZXMgPT0gMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkoaW5p
dGlhbGl6ZU5vblplcm9NZW1vcnkoY29udGV4dCwgc2l6ZSkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApAQCAtMTkxMiw2ICsyMDIwLDcgQEAgdm9pZCBJbWFn
ZUhlbHBlcjo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCiAgICAgbUN1cnJlbnRMYXlvdXQgPSBJ
bWFnZUxheW91dDo6VW5kZWZpbmVkOwogICAgIG1MYXllckNvdW50ICAgID0gMDsKICAgICBtTGV2
ZWxDb3VudCAgICA9IDA7CisgICAgbVNlcmlhbCAgICAgICAgPSByeDo6a1plcm9TZXJpYWw7CiB9
CiAKIHZvaWQgSW1hZ2VIZWxwZXI6OmluaXQyRFdlYWtSZWZlcmVuY2UoVmtJbWFnZSBoYW5kbGUs
CkBAIC0yMDEwLDE4ICsyMTE5LDYgQEAgYm9vbCBJbWFnZUhlbHBlcjo6aXNMYXlvdXRDaGFuZ2VO
ZWNlc3NhcnkoSW1hZ2VMYXlvdXQgbmV3TGF5b3V0KSBjb25zdAogICAgIHJldHVybiAhc2FtZUxh
eW91dEFuZE5vTmVlZEZvckJhcnJpZXI7CiB9CiAKLXZvaWQgSW1hZ2VIZWxwZXI6OmNoYW5nZUxh
eW91dChWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0TWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbWFnZUxheW91dCBuZXdMYXlvdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBpZiAoIWlzTGF5
b3V0Q2hhbmdlTmVjZXNzYXJ5KG5ld0xheW91dCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgZm9yY2VDaGFuZ2VMYXlvdXRBbmRRdWV1ZShhc3BlY3RNYXNrLCBuZXdMYXlv
dXQsIG1DdXJyZW50UXVldWVGYW1pbHlJbmRleCwgY29tbWFuZEJ1ZmZlcik7Ci19Ci0KIHZvaWQg
SW1hZ2VIZWxwZXI6OmNoYW5nZUxheW91dEFuZFF1ZXVlKFZrSW1hZ2VBc3BlY3RGbGFncyBhc3Bl
Y3RNYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VMYXlv
dXQgbmV3TGF5b3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbmV3UXVldWVGYW1pbHlJbmRleCwKQEAgLTIwNTEsMTAgKzIxNDgsMTIgQEAgdm9pZCBJ
bWFnZUhlbHBlcjo6c2V0QmFzZUFuZE1heExldmVscyh1aW50MzJfdCBiYXNlTGV2ZWwsIHVpbnQz
Ml90IG1heExldmVsKQogICAgIG1NYXhMZXZlbCAgPSBtYXhMZXZlbDsKIH0KIAorLy8gR2VuZXJh
bGl6ZWQgdG8gYWNjZXB0IGJvdGggInByaW1hcnkiIGFuZCAic2Vjb25kYXJ5IiBjb21tYW5kIGJ1
ZmZlcnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29tbWFuZEJ1ZmZlclQ+CiB2b2lkIEltYWdlSGVs
cGVyOjpmb3JjZUNoYW5nZUxheW91dEFuZFF1ZXVlKFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RN
YXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUxh
eW91dCBuZXdMYXlvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IG5ld1F1ZXVlRmFtaWx5SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJUICpj
b21tYW5kQnVmZmVyKQogewogICAgIGNvbnN0IEltYWdlTWVtb3J5QmFycmllckRhdGEgJnRyYW5z
aXRpb25Gcm9tID0ga0ltYWdlTWVtb3J5QmFycmllckRhdGFbbUN1cnJlbnRMYXlvdXRdOwogICAg
IGNvbnN0IEltYWdlTWVtb3J5QmFycmllckRhdGEgJnRyYW5zaXRpb25UbyAgID0ga0ltYWdlTWVt
b3J5QmFycmllckRhdGFbbmV3TGF5b3V0XTsKQEAgLTIwNjksNyArMjE2OCw3IEBAIHZvaWQgSW1h
Z2VIZWxwZXI6OmZvcmNlQ2hhbmdlTGF5b3V0QW5kUXVldWUoVmtJbWFnZUFzcGVjdEZsYWdzIGFz
cGVjdE1hc2ssCiAgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLmRzdFF1ZXVlRmFtaWx5SW5kZXggID0g
bmV3UXVldWVGYW1pbHlJbmRleDsKICAgICBpbWFnZU1lbW9yeUJhcnJpZXIuaW1hZ2UgICAgICAg
ICAgICAgICAgPSBtSW1hZ2UuZ2V0SGFuZGxlKCk7CiAKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBJ
cyB0aGlzIG5lZWRlZCBmb3IgbWlwcGVkL2xheWVyIGltYWdlcz8KKyAgICAvLyBUcmFuc2l0aW9u
IHRoZSB3aG9sZSByZXNvdXJjZS4KICAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc3VicmVzb3VyY2VS
YW5nZS5hc3BlY3RNYXNrICAgICA9IGFzcGVjdE1hc2s7CiAgICAgaW1hZ2VNZW1vcnlCYXJyaWVy
LnN1YnJlc291cmNlUmFuZ2UuYmFzZU1pcExldmVsICAgPSAwOwogICAgIGltYWdlTWVtb3J5QmFy
cmllci5zdWJyZXNvdXJjZVJhbmdlLmxldmVsQ291bnQgICAgID0gbUxldmVsQ291bnQ7CkBAIC0y
MDc3LDExICsyMTc2LDE3IEBAIHZvaWQgSW1hZ2VIZWxwZXI6OmZvcmNlQ2hhbmdlTGF5b3V0QW5k
UXVldWUoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCiAgICAgaW1hZ2VNZW1vcnlCYXJy
aWVyLnN1YnJlc291cmNlUmFuZ2UubGF5ZXJDb3VudCAgICAgPSBtTGF5ZXJDb3VudDsKIAogICAg
IGNvbW1hbmRCdWZmZXItPmltYWdlQmFycmllcih0cmFuc2l0aW9uRnJvbS5zcmNTdGFnZU1hc2ss
IHRyYW5zaXRpb25Uby5kc3RTdGFnZU1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZpbWFnZU1lbW9yeUJhcnJpZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbWFnZU1lbW9yeUJhcnJpZXIpOwogICAgIG1DdXJyZW50TGF5b3V0ICAgICAgICAgICA9IG5l
d0xheW91dDsKICAgICBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXggPSBuZXdRdWV1ZUZhbWlseUlu
ZGV4OwogfQogCisvLyBFeHBsaWNpdGx5IGluc3RhbnRpYXRlIGZvcmNlQ2hhbmdlTGF5b3V0QW5k
UXVldWUgd2l0aCBDb21tYW5kQnVmZmVySGVscGVyLgordGVtcGxhdGUgdm9pZCBJbWFnZUhlbHBl
cjo6Zm9yY2VDaGFuZ2VMYXlvdXRBbmRRdWV1ZShWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0TWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW1hZ2VMYXlvdXQgbmV3TGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdRdWV1ZUZhbWlseUluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVm
ZmVySGVscGVyICpjb21tYW5kQnVmZmVyKTsKKwogdm9pZCBJbWFnZUhlbHBlcjo6Y2xlYXJDb2xv
cihjb25zdCBWa0NsZWFyQ29sb3JWYWx1ZSAmY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGJhc2VNaXBMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgbGV2ZWxDb3VudCwKQEAgLTIxNTcsNiArMjI2MiwxNSBAQCBnbDo6RXh0ZW50
cyBJbWFnZUhlbHBlcjo6Z2V0U2l6ZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDF1LCBtRXh0ZW50cy5oZWlnaHQgPj4g
bWlwTGV2ZWwpLCBtRXh0ZW50cy5kZXB0aCk7CiB9CiAKK1NlcmlhbCBJbWFnZUhlbHBlcjo6Z2V0
QXNzaWduU2VyaWFsKENvbnRleHRWayAqY29udGV4dFZrKQoreworICAgIGlmIChtU2VyaWFsLmdl
dFZhbHVlKCkgPT0gMCkKKyAgICB7CisgICAgICAgIG1TZXJpYWwgPSBjb250ZXh0VmstPmdlbmVy
YXRlQXR0YWNobWVudEltYWdlU2VyaWFsKCk7CisgICAgfQorICAgIHJldHVybiBtU2VyaWFsOwor
fQorCiAvLyBzdGF0aWMKIHZvaWQgSW1hZ2VIZWxwZXI6OkNvcHkoSW1hZ2VIZWxwZXIgKnNyY0lt
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUhlbHBlciAqZHN0SW1hZ2UsCkBAIC0y
MTkyLDE0ICsyMzA2LDE0IEBAIHZvaWQgSW1hZ2VIZWxwZXI6OkNvcHkoSW1hZ2VIZWxwZXIgKnNy
Y0ltYWdlLAogYW5nbGU6OlJlc3VsdCBJbWFnZUhlbHBlcjo6Z2VuZXJhdGVNaXBtYXBzV2l0aEJs
aXQoQ29udGV4dFZrICpjb250ZXh0VmssIEdMdWludCBtYXhMZXZlbCkKIHsKICAgICBDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICBBTkdMRV9UUlkocmVjb3JkQ29t
bWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgY2hhbmdlTGF5b3V0KFZL
X0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIEltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgY29tbWFu
ZEJ1ZmZlcik7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25JbWFnZVdyaXRlKFZLX0lNQUdF
X0FTUEVDVF9DT0xPUl9CSVQsIEltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgdGhpcykpOworICAg
IEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZj
b21tYW5kQnVmZmVyKSk7CiAKICAgICAvLyBXZSBhcmUgYWJsZSB0byB1c2UgYmxpdEltYWdlIHNp
bmNlIHRoZSBpbWFnZSBmb3JtYXQgd2UgYXJlIHVzaW5nIHN1cHBvcnRzIGl0LiBUaGlzCiAgICAg
Ly8gaXMgYSBmYXN0ZXIgd2F5IHdlIGNhbiBnZW5lcmF0ZSB0aGUgbWlwcy4KICAgICBpbnQzMl90
IG1pcFdpZHRoICA9IG1FeHRlbnRzLndpZHRoOwogICAgIGludDMyX3QgbWlwSGVpZ2h0ID0gbUV4
dGVudHMuaGVpZ2h0OworICAgIGludDMyX3QgbWlwRGVwdGggID0gbUV4dGVudHMuZGVwdGg7CiAK
ICAgICAvLyBNYW51YWxseSBtYW5hZ2UgdGhlIGltYWdlIG1lbW9yeSBiYXJyaWVyIGJlY2F1c2Ug
aXQgdXNlcyBhIGxvdCBtb3JlIHBhcmFtZXRlcnMgdGhhbiBvdXIKICAgICAvLyB1c3VhbCBvbmUu
CkBAIC0yMjE3LDYgKzIzMzEsNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpnZW5lcmF0
ZU1pcG1hcHNXaXRoQmxpdChDb250ZXh0VmsgKmNvbnRleHRWaywgR0x1aW50CiAgICAgewogICAg
ICAgICBpbnQzMl90IG5leHRNaXBXaWR0aCAgPSBzdGQ6Om1heDxpbnQzMl90PigxLCBtaXBXaWR0
aCA+PiAxKTsKICAgICAgICAgaW50MzJfdCBuZXh0TWlwSGVpZ2h0ID0gc3RkOjptYXg8aW50MzJf
dD4oMSwgbWlwSGVpZ2h0ID4+IDEpOworICAgICAgICBpbnQzMl90IG5leHRNaXBEZXB0aCAgPSBz
dGQ6Om1heDxpbnQzMl90PigxLCBtaXBEZXB0aCA+PiAxKTsKIAogICAgICAgICBiYXJyaWVyLnN1
YnJlc291cmNlUmFuZ2UuYmFzZU1pcExldmVsID0gbWlwTGV2ZWwgLSAxOwogICAgICAgICBiYXJy
aWVyLm9sZExheW91dCAgICAgICAgICAgICAgICAgICAgID0gZ2V0Q3VycmVudExheW91dCgpOwpA
QCAtMjIyNiwxNiArMjM0MSwxNiBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpnZW5lcmF0
ZU1pcG1hcHNXaXRoQmxpdChDb250ZXh0VmsgKmNvbnRleHRWaywgR0x1aW50CiAKICAgICAgICAg
Ly8gV2UgY2FuIGRvIGl0IGZvciBhbGwgbGF5ZXJzIGF0IG9uY2UuCiAgICAgICAgIGNvbW1hbmRC
dWZmZXItPmltYWdlQmFycmllcihWS19QSVBFTElORV9TVEFHRV9UUkFOU0ZFUl9CSVQsIFZLX1BJ
UEVMSU5FX1NUQUdFX1RSQU5TRkVSX0JJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZiYXJyaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
cnJpZXIpOwogICAgICAgICBWa0ltYWdlQmxpdCBibGl0ICAgICAgICAgICAgICAgICAgID0ge307
CiAgICAgICAgIGJsaXQuc3JjT2Zmc2V0c1swXSAgICAgICAgICAgICAgICAgPSB7MCwgMCwgMH07
Ci0gICAgICAgIGJsaXQuc3JjT2Zmc2V0c1sxXSAgICAgICAgICAgICAgICAgPSB7bWlwV2lkdGgs
IG1pcEhlaWdodCwgMX07CisgICAgICAgIGJsaXQuc3JjT2Zmc2V0c1sxXSAgICAgICAgICAgICAg
ICAgPSB7bWlwV2lkdGgsIG1pcEhlaWdodCwgbWlwRGVwdGh9OwogICAgICAgICBibGl0LnNyY1N1
YnJlc291cmNlLmFzcGVjdE1hc2sgICAgID0gVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVDsKICAg
ICAgICAgYmxpdC5zcmNTdWJyZXNvdXJjZS5taXBMZXZlbCAgICAgICA9IG1pcExldmVsIC0gMTsK
ICAgICAgICAgYmxpdC5zcmNTdWJyZXNvdXJjZS5iYXNlQXJyYXlMYXllciA9IDA7CiAgICAgICAg
IGJsaXQuc3JjU3VicmVzb3VyY2UubGF5ZXJDb3VudCAgICAgPSBtTGF5ZXJDb3VudDsKICAgICAg
ICAgYmxpdC5kc3RPZmZzZXRzWzBdICAgICAgICAgICAgICAgICA9IHswLCAwLCAwfTsKLSAgICAg
ICAgYmxpdC5kc3RPZmZzZXRzWzFdICAgICAgICAgICAgICAgICA9IHtuZXh0TWlwV2lkdGgsIG5l
eHRNaXBIZWlnaHQsIDF9OworICAgICAgICBibGl0LmRzdE9mZnNldHNbMV0gICAgICAgICAgICAg
ICAgID0ge25leHRNaXBXaWR0aCwgbmV4dE1pcEhlaWdodCwgbmV4dE1pcERlcHRofTsKICAgICAg
ICAgYmxpdC5kc3RTdWJyZXNvdXJjZS5hc3BlY3RNYXNrICAgICA9IFZLX0lNQUdFX0FTUEVDVF9D
T0xPUl9CSVQ7CiAgICAgICAgIGJsaXQuZHN0U3VicmVzb3VyY2UubWlwTGV2ZWwgICAgICAgPSBt
aXBMZXZlbDsKICAgICAgICAgYmxpdC5kc3RTdWJyZXNvdXJjZS5iYXNlQXJyYXlMYXllciA9IDA7
CkBAIC0yMjQzLDYgKzIzNTgsNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpnZW5lcmF0
ZU1pcG1hcHNXaXRoQmxpdChDb250ZXh0VmsgKmNvbnRleHRWaywgR0x1aW50CiAKICAgICAgICAg
bWlwV2lkdGggID0gbmV4dE1pcFdpZHRoOwogICAgICAgICBtaXBIZWlnaHQgPSBuZXh0TWlwSGVp
Z2h0OworICAgICAgICBtaXBEZXB0aCAgPSBuZXh0TWlwRGVwdGg7CiAKICAgICAgICAgYm9vbCBm
b3JtYXRTdXBwb3J0c0xpbmVhckZpbHRlcmluZyA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKS0+
aGFzSW1hZ2VGb3JtYXRGZWF0dXJlQml0cygKICAgICAgICAgICAgIGdldEZvcm1hdCgpLnZrSW1h
Z2VGb3JtYXQsIFZLX0ZPUk1BVF9GRUFUVVJFX1NBTVBMRURfSU1BR0VfRklMVEVSX0xJTkVBUl9C
SVQpOwpAQCAtMjI2MSw3ICsyMzc3LDcgQEAgYW5nbGU6OlJlc3VsdCBJbWFnZUhlbHBlcjo6Z2Vu
ZXJhdGVNaXBtYXBzV2l0aEJsaXQoQ29udGV4dFZrICpjb250ZXh0VmssIEdMdWludAogCiAgICAg
Ly8gV2UgY2FuIGRvIGl0IGZvciBhbGwgbGF5ZXJzIGF0IG9uY2UuCiAgICAgY29tbWFuZEJ1ZmZl
ci0+aW1hZ2VCYXJyaWVyKFZLX1BJUEVMSU5FX1NUQUdFX1RSQU5TRkVSX0JJVCwgVktfUElQRUxJ
TkVfU1RBR0VfVFJBTlNGRVJfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
YmFycmllcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhcnJpZXIpOwogICAg
IC8vIFRoaXMgaXMganVzdCBjaGFuZ2luZyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGltYWdl
IGhlbHBlciBzbyB0aGF0IHRoZSBuZXh0IGNhbGwKICAgICAvLyB0byBjaGFuZ2VMYXlvdXQgd2ls
bCB1c2UgdGhpcyBsYXlvdXQgYXMgdGhlICJvbGRMYXlvdXQiIGFyZ3VtZW50LgogICAgIG1DdXJy
ZW50TGF5b3V0ID0gSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjOwpAQCAtMjI3NCw4ICsyMzkwLDYg
QEAgdm9pZCBJbWFnZUhlbHBlcjo6cmVzb2x2ZShJbWFnZUhlbHBlciAqZGVzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKIHsKICAgICBB
U1NFUlQobUN1cnJlbnRMYXlvdXQgPT0gSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjKTsKLSAgICBk
ZXN0LT5jaGFuZ2VMYXlvdXQocmVnaW9uLmRzdFN1YnJlc291cmNlLmFzcGVjdE1hc2ssIEltYWdl
TGF5b3V0OjpUcmFuc2ZlckRzdCwgY29tbWFuZEJ1ZmZlcik7Ci0KICAgICBjb21tYW5kQnVmZmVy
LT5yZXNvbHZlSW1hZ2UoZ2V0SW1hZ2UoKSwgVktfSU1BR0VfTEFZT1VUX1RSQU5TRkVSX1NSQ19P
UFRJTUFMLCBkZXN0LT5nZXRJbWFnZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwsIDEsICZyZWdpb24pOwogfQpA
QCAtMjc3MSwxMCArMjg4NSwxMSBAQCB2b2lkIEltYWdlSGVscGVyOjpzdGFnZVN1YnJlc291cmNl
VXBkYXRlRnJvbUltYWdlKEltYWdlSGVscGVyICppbWFnZSwKICAgICBtU3VicmVzb3VyY2VVcGRh
dGVzLmVtcGxhY2VfYmFjayhpbWFnZSwgY29weVRvSW1hZ2UpOwogfQogCi12b2lkIEltYWdlSGVs
cGVyOjpzdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoY29uc3QgZ2w6OkltYWdlSW5kZXggJmlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGFuZ2xlOjpGb3JtYXQgJmZvcm1hdCkKK3ZvaWQgSW1hZ2VIZWxwZXI6OnN0YWdlU3VicmVzb3Vy
Y2VSb2J1c3RDbGVhcihjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IEZvcm1hdCAm
Zm9ybWF0KQogewotICAgIHN0YWdlU3VicmVzb3VyY2VDbGVhcihpbmRleCwgZm9ybWF0LCBrV2Vi
R0xJbml0Q29sb3JWYWx1ZSwga1dlYkdMSW5pdERlcHRoU3RlbmNpbFZhbHVlKTsKKyAgICBWa0Ns
ZWFyQ29sb3JWYWx1ZSBpbml0VmFsdWUgPQorICAgICAgICBmb3JtYXQuaGFzRW11bGF0ZWRJbWFn
ZUNoYW5uZWxzKCkgPyBrRW11bGF0ZWRJbml0Q29sb3JWYWx1ZSA6IGtXZWJHTEluaXRDb2xvclZh
bHVlOworICAgIHN0YWdlU3VicmVzb3VyY2VDbGVhcihpbmRleCwgZm9ybWF0LmludGVuZGVkRm9y
bWF0KCksIGluaXRWYWx1ZSwga1dlYkdMSW5pdERlcHRoU3RlbmNpbFZhbHVlKTsKIH0KIAogdm9p
ZCBJbWFnZUhlbHBlcjo6c3RhZ2VTdWJyZXNvdXJjZUVtdWxhdGVkQ2xlYXIoY29uc3QgZ2w6Oklt
YWdlSW5kZXggJmluZGV4LApAQCAtMjg1Miw3ICsyOTY3LDcgQEAgYW5nbGU6OlJlc3VsdCBJbWFn
ZUhlbHBlcjo6Zmx1c2hTdGFnZWRVcGRhdGVzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIHVp
bnQ2NF90IHN1YnJlc291cmNlVXBsb2Fkc0luUHJvZ3Jlc3MgICAgICAgICAgICA9IDA7CiAKICAg
ICAvLyBTdGFydCBpbiBUcmFuc2ZlckRzdC4KLSAgICBjaGFuZ2VMYXlvdXQoYXNwZWN0RmxhZ3Ms
IEltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgY29tbWFuZEJ1ZmZlcik7CisgICAgQU5HTEVfVFJZ
KGNvbnRleHRWay0+b25JbWFnZVdyaXRlKGFzcGVjdEZsYWdzLCBJbWFnZUxheW91dDo6VHJhbnNm
ZXJEc3QsIHRoaXMpKTsKIAogICAgIGZvciAoU3VicmVzb3VyY2VVcGRhdGUgJnVwZGF0ZSA6IG1T
dWJyZXNvdXJjZVVwZGF0ZXMpCiAgICAgewpAQCAtMjk1MCwxNSArMzA2NSwxNiBAQCBhbmdsZTo6
UmVzdWx0IEltYWdlSGVscGVyOjpmbHVzaFN0YWdlZFVwZGF0ZXMoQ29udGV4dFZrICpjb250ZXh0
VmssCiAKICAgICAgICAgICAgIEJ1ZmZlckhlbHBlciAqY3VycmVudEJ1ZmZlciA9IGJ1ZmZlclVw
ZGF0ZS5idWZmZXJIZWxwZXI7CiAgICAgICAgICAgICBBU1NFUlQoY3VycmVudEJ1ZmZlciAmJiBj
dXJyZW50QnVmZmVyLT52YWxpZCgpKTsKLSAgICAgICAgICAgIGN1cnJlbnRCdWZmZXItPm9uUmVz
b3VyY2VBY2Nlc3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworCisgICAgICAg
ICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1RSQU5TRkVS
X1JFQURfQklULCBjdXJyZW50QnVmZmVyKSk7CiAKICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIt
PmNvcHlCdWZmZXJUb0ltYWdlKGN1cnJlbnRCdWZmZXItPmdldEJ1ZmZlcigpLmdldEhhbmRsZSgp
LCBtSW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZXRDdXJyZW50TGF5b3V0KCksIDEsICZ1cGRhdGUuYnVmZmVyLmNvcHlSZWdpb24pOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgdXBkYXRlLmltYWdlLmlt
YWdlLT5jaGFuZ2VMYXlvdXQoYXNwZWN0RmxhZ3MsIEltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywg
Y29tbWFuZEJ1ZmZlcik7Ci0gICAgICAgICAgICB1cGRhdGUuaW1hZ2UuaW1hZ2UtPmFkZFJlYWRE
ZXBlbmRlbmN5KGNvbnRleHRWaywgdGhpcyk7CisgICAgICAgICAgICBBTkdMRV9UUlkoCisgICAg
ICAgICAgICAgICAgY29udGV4dFZrLT5vbkltYWdlUmVhZChhc3BlY3RGbGFncywgSW1hZ2VMYXlv
dXQ6OlRyYW5zZmVyU3JjLCB1cGRhdGUuaW1hZ2UuaW1hZ2UpKTsKIAogICAgICAgICAgICAgY29t
bWFuZEJ1ZmZlci0+Y29weUltYWdlKHVwZGF0ZS5pbWFnZS5pbWFnZS0+Z2V0SW1hZ2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUuaW1hZ2UuaW1hZ2UtPmdl
dEN1cnJlbnRMYXlvdXQoKSwgbUltYWdlLApAQCAtMjk4Myw3ICszMDk5LDcgQEAgYW5nbGU6OlJl
c3VsdCBJbWFnZUhlbHBlcjo6Zmx1c2hBbGxTdGFnZWRVcGRhdGVzKENvbnRleHRWayAqY29udGV4
dFZrKQogewogICAgIC8vIENsZWFyIHRoZSBpbWFnZS4KICAgICBDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICBBTkdMRV9UUlkocmVjb3JkQ29tbWFuZHMoY29udGV4
dFZrLCAmY29tbWFuZEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRl
clBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAgICAgcmV0dXJuIGZs
dXNoU3RhZ2VkVXBkYXRlcyhjb250ZXh0VmssIDAsIG1MZXZlbENvdW50LCAwLCBtTGF5ZXJDb3Vu
dCwgY29tbWFuZEJ1ZmZlcik7CiB9CiAKQEAgLTMwNjAsMTcgKzMxNzYsMTcgQEAgYW5nbGU6OlJl
c3VsdCBJbWFnZUhlbHBlcjo6Y29weUltYWdlRGF0YVRvQnVmZmVyKENvbnRleHRWayAqY29udGV4
dFZrLAogCiAgICAgKmJ1ZmZlclNpemUgPSBzb3VyY2VBcmVhLndpZHRoICogc291cmNlQXJlYS5o
ZWlnaHQgKiBzb3VyY2VBcmVhLmRlcHRoICogcGl4ZWxCeXRlcyAqIGxheWVyQ291bnQ7CiAKLSAg
ICBDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICBBTkdMRV9UUlko
cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgLy8gVHJh
bnNpdGlvbiB0aGUgaW1hZ2UgdG8gcmVhZGFibGUgbGF5b3V0CiAgICAgY29uc3QgVmtJbWFnZUFz
cGVjdEZsYWdzIGFzcGVjdEZsYWdzID0gZ2V0QXNwZWN0RmxhZ3MoKTsKLSAgICBjaGFuZ2VMYXlv
dXQoYXNwZWN0RmxhZ3MsIEltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywgY29tbWFuZEJ1ZmZlcik7
CiAKICAgICAvLyBBbGxvY2F0ZSBzdGFnaW5nIGJ1ZmZlciBkYXRhCiAgICAgQU5HTEVfVFJZKGFs
bG9jYXRlU3RhZ2luZ01lbW9yeShjb250ZXh0VmssICpidWZmZXJTaXplLCBvdXREYXRhUHRyLCBi
dWZmZXJPdXQsIGJ1ZmZlck9mZnNldHNPdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKSk7CiAKKyAgICBDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyID0g
bnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlUmVhZChhc3BlY3RGbGFn
cywgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjLCB0aGlzKSk7CisgICAgQU5HTEVfVFJZKGNvbnRl
eHRWay0+b25CdWZmZXJXcml0ZShWS19BQ0NFU1NfVFJBTlNGRVJfV1JJVEVfQklULCAqYnVmZmVy
T3V0KSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1h
bmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKKwogICAgIFZrQnVmZmVySW1hZ2VDb3B5IHJlZ2lv
bnNbMl0gPSB7fTsKICAgICAvLyBEZWZhdWx0IHRvIG5vbi1jb21iaW5lZCBEUyBjYXNlCiAgICAg
cmVnaW9uc1swXS5idWZmZXJPZmZzZXQgICAgICAgICAgICAgICAgICAgID0gKCpidWZmZXJPZmZz
ZXRzT3V0KVswXTsKQEAgLTMxNjgsMTkgKzMyODQsMzMgQEAgYW5nbGU6OlJlc3VsdCBJbWFnZUhl
bHBlcjo6cmVhZFBpeGVsc0ZvckdldEltYWdlKENvbnRleHRWayAqY29udGV4dFZrLAogewogICAg
IGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmFuZ2xlRm9ybWF0ID0gR2V0Rm9ybWF0RnJvbUZvcm1hdFR5
cGUoZm9ybWF0LCB0eXBlKTsKIAotICAgIC8vIERlcHRoL3N0ZW5jaWwgcmVhZGJhY2sgaXMgbm90
IHlldCBpbXBsZW1lbnRlZC4KLSAgICAvLyBUT0RPKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDA1OCk6
IERlcHRoL3N0ZW5jaWwgcmVhZGJhY2suCi0gICAgaWYgKGFuZ2xlRm9ybWF0LmRlcHRoQml0cyA+
IDAgfHwgYW5nbGVGb3JtYXQuc3RlbmNpbEJpdHMgPiAwKQorICAgIFZrSW1hZ2VBc3BlY3RGbGFn
Qml0cyBhc3BlY3RGbGFncyA9IHt9OworICAgIGlmIChhbmdsZUZvcm1hdC5yZWRCaXRzID4gMCB8
fCBhbmdsZUZvcm1hdC5ibHVlQml0cyA+IDAgfHwgYW5nbGVGb3JtYXQuZ3JlZW5CaXRzID4gMCB8
fAorICAgICAgICBhbmdsZUZvcm1hdC5hbHBoYUJpdHMgPiAwKQogICAgIHsKLSAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cisg
ICAgICAgIGFzcGVjdEZsYWdzID0gVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVDsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYgKGFuZ2xlRm9ybWF0LmRlcHRoQml0cyA+IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGFzcGVjdEZsYWdzID0gVktfSU1BR0VfQVNQRUNUX0RFUFRI
X0JJVDsKKyAgICAgICAgfQorICAgICAgICBpZiAoYW5nbGVGb3JtYXQuc3RlbmNpbEJpdHMgPiAw
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoYW5nbGVGb3JtYXQuZGVwdGhCaXRzID09
IDApOworICAgICAgICAgICAgYXNwZWN0RmxhZ3MgPSBWS19JTUFHRV9BU1BFQ1RfU1RFTkNJTF9C
SVQ7CisgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQoYXNwZWN0RmxhZ3MgIT0gMCk7CisK
ICAgICBQYWNrUGl4ZWxzUGFyYW1zIHBhcmFtczsKICAgICBHTHVpbnQgb3V0cHV0U2tpcEJ5dGVz
ID0gMDsKIAogICAgIHVpbnQzMl90IHdpZHRoICA9IHN0ZDo6bWF4KDF1LCBtRXh0ZW50cy53aWR0
aCA+PiBsZXZlbCk7CiAgICAgdWludDMyX3QgaGVpZ2h0ID0gc3RkOjptYXgoMXUsIG1FeHRlbnRz
LmhlaWdodCA+PiBsZXZlbCk7CisgICAgdWludDMyX3QgZGVwdGggID0gc3RkOjptYXgoMXUsIG1F
eHRlbnRzLmRlcHRoID4+IGxldmVsKTsKICAgICBnbDo6UmVjdGFuZ2xlIGFyZWEoMCwgMCwgd2lk
dGgsIGhlaWdodCk7CiAKICAgICBBTkdMRV9UUlkoR2V0UmVhZFBpeGVsc1BhcmFtcyhjb250ZXh0
VmssIHBhY2tTdGF0ZSwgcGFja0J1ZmZlciwgZm9ybWF0LCB0eXBlLCBhcmVhLCBhcmVhLApAQCAt
MzE5MSw4ICszMzIxLDI2IEBAIGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OnJlYWRQaXhlbHNG
b3JHZXRJbWFnZShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICBzdGFnaW5nQnVmZmVyLmdldCgp
LmluaXQoY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLCBWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJf
RFNUX0JJVCwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1N0YWdpbmdCdWZmZXJT
aXplLCB0cnVlKTsKIAotICAgIHJldHVybiByZWFkUGl4ZWxzKGNvbnRleHRWaywgYXJlYSwgcGFy
YW1zLCBWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCBsZXZlbCwgbGF5ZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdCAqPihwaXhlbHMpICsgb3V0cHV0U2tpcEJ5
dGVzLCAmc3RhZ2luZ0J1ZmZlci5nZXQoKSk7CisgICAgaWYgKG1FeHRlbnRzLmRlcHRoID4gMSkK
KyAgICB7CisgICAgICAgIC8vIERlcHRoID4gMSBtZWFucyB0aGlzIGlzIGEgM0QgdGV4dHVyZSBh
bmQgd2UgbmVlZCB0byBjb3B5IGFsbCBsYXllcnMKKyAgICAgICAgZm9yIChsYXllciA9IDA7IGxh
eWVyIDwgZGVwdGg7IGxheWVyKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIEFOR0xFX1RSWShy
ZWFkUGl4ZWxzKGNvbnRleHRWaywgYXJlYSwgcGFyYW1zLCBhc3BlY3RGbGFncywgbGV2ZWwsIGxh
eWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhf
dCAqPihwaXhlbHMpICsgb3V0cHV0U2tpcEJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnN0YWdpbmdCdWZmZXIuZ2V0KCkpKTsKKworICAgICAgICAgICAgb3V0cHV0U2tp
cEJ5dGVzICs9IHdpZHRoICogaGVpZ2h0ICogZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhmb3Jt
YXQsIHR5cGUpLnBpeGVsQnl0ZXM7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgQU5HTEVfVFJZKHJlYWRQaXhlbHMoY29udGV4dFZrLCBhcmVhLCBwYXJhbXMsIGFz
cGVjdEZsYWdzLCBsZXZlbCwgbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVpbnQ4X3QgKj4ocGl4ZWxzKSArIG91dHB1dFNraXBCeXRlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnN0YWdpbmdCdWZmZXIuZ2V0KCkpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgSW1h
Z2VIZWxwZXI6OnJlYWRQaXhlbHMoQ29udGV4dFZrICpjb250ZXh0VmssCkBAIC0zMjA4LDE3ICsz
MzU2LDMwIEBAIGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OnJlYWRQaXhlbHMoQ29udGV4dFZr
ICpjb250ZXh0VmssCiAKICAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRleHRWay0+Z2V0
UmVuZGVyZXIoKTsKIAotICAgIC8vIE5vdGUgdGhhdCBhbHRob3VnaCB3ZSdyZSByZWFkaW5nIGZy
b20gdGhlIGltYWdlLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5b3V0IGJlbG93LgotICAgIENv
bW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgaWYgKGNvbnRleHRWay0+Y29tbWFuZEdy
YXBoRW5hYmxlZCgpKQorICAgIC8vIElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgbXVsdGlzYW1wbGVk
LCB3ZSBuZWVkIHRvIHJlc29sdmUgaXQgaW50byBhIHRlbXBvcmFyeSBpbWFnZSBiZWZvcmUKKyAg
ICAvLyBwZXJmb3JtaW5nIGEgcmVhZGJhY2suCisgICAgYm9vbCBpc011bHRpc2FtcGxlZCA9IG1T
YW1wbGVzID4gMTsKKyAgICBEZXZpY2VTY29wZWQ8SW1hZ2VIZWxwZXI+IHJlc29sdmVkSW1hZ2Uo
Y29udGV4dFZrLT5nZXREZXZpY2UoKSk7CisKKyAgICBJbWFnZUhlbHBlciAqc3JjID0gdGhpczsK
KworICAgIGlmIChpc011bHRpc2FtcGxlZCkKICAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShyZWNv
cmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7CisgICAgICAgIEFOR0xFX1RS
WShyZXNvbHZlZEltYWdlLmdldCgpLmluaXQyRFN0YWdpbmcoCisgICAgICAgICAgICBjb250ZXh0
VmssIHJlbmRlcmVyLT5nZXRNZW1vcnlQcm9wZXJ0aWVzKCksIGdsOjpFeHRlbnRzKGFyZWEud2lk
dGgsIGFyZWEuaGVpZ2h0LCAxKSwKKyAgICAgICAgICAgICptRm9ybWF0LCBWS19JTUFHRV9VU0FH
RV9UUkFOU0ZFUl9TUkNfQklUIHwgVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVCwgMSkp
OworICAgICAgICByZXNvbHZlZEltYWdlLmdldCgpLnJldGFpbigmY29udGV4dFZrLT5nZXRSZXNv
dXJjZVVzZUxpc3QoKSk7CiAgICAgfQotICAgIGVsc2UKKworICAgIC8vIE5vdGUgdGhhdCBhbHRo
b3VnaCB3ZSdyZSByZWFkaW5nIGZyb20gdGhlIGltYWdlLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUg
bGF5b3V0IGJlbG93LgorICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7CisgICAgaWYg
KGlzTXVsdGlzYW1wbGVkKQogICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Z2V0
T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CisgICAgICAg
IEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShjb3B5QXNwZWN0RmxhZ3MsIEltYWdl
TGF5b3V0OjpUcmFuc2ZlckRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZyZXNvbHZlZEltYWdlLmdldCgpKSk7CiAgICAgfQotICAgIGNoYW5nZUxheW91dChj
b3B5QXNwZWN0RmxhZ3MsIEltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywgY29tbWFuZEJ1ZmZlcik7
CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25JbWFnZVJlYWQoY29weUFzcGVjdEZsYWdzLCBJ
bWFnZUxheW91dDo6VHJhbnNmZXJTcmMsIHRoaXMpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZr
LT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogCiAg
ICAgY29uc3QgYW5nbGU6OkZvcm1hdCAqcmVhZEZvcm1hdCA9ICZtRm9ybWF0LT5hY3R1YWxJbWFn
ZUZvcm1hdCgpOwogCkBAIC0zMjQ1LDIwICszNDA2LDggQEAgYW5nbGU6OlJlc3VsdCBJbWFnZUhl
bHBlcjo6cmVhZFBpeGVscyhDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgc3JjU3VicmVz
b3VyY2UuYmFzZUFycmF5TGF5ZXIgPSAwOwogICAgIH0KIAotICAgIC8vIElmIHRoZSBzb3VyY2Ug
aW1hZ2UgaXMgbXVsdGlzYW1wbGVkLCB3ZSBuZWVkIHRvIHJlc29sdmUgaXQgaW50byBhIHRlbXBv
cmFyeSBpbWFnZSBiZWZvcmUKLSAgICAvLyBwZXJmb3JtaW5nIGEgcmVhZGJhY2suCi0gICAgYm9v
bCBpc011bHRpc2FtcGxlZCA9IG1TYW1wbGVzID4gMTsKLSAgICBEZXZpY2VTY29wZWQ8SW1hZ2VI
ZWxwZXI+IHJlc29sdmVkSW1hZ2UoY29udGV4dFZrLT5nZXREZXZpY2UoKSk7Ci0KLSAgICBJbWFn
ZUhlbHBlciAqc3JjID0gdGhpczsKLQogICAgIGlmIChpc011bHRpc2FtcGxlZCkKICAgICB7Ci0g
ICAgICAgIEFOR0xFX1RSWShyZXNvbHZlZEltYWdlLmdldCgpLmluaXQyRFN0YWdpbmcoCi0gICAg
ICAgICAgICBjb250ZXh0VmssIHJlbmRlcmVyLT5nZXRNZW1vcnlQcm9wZXJ0aWVzKCksIGdsOjpF
eHRlbnRzKGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxKSwKLSAgICAgICAgICAgICptRm9ybWF0
LCBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9TUkNfQklUIHwgVktfSU1BR0VfVVNBR0VfVFJBTlNG
RVJfRFNUX0JJVCwgMSkpOwotICAgICAgICByZXNvbHZlZEltYWdlLmdldCgpLm9uUmVzb3VyY2VB
Y2Nlc3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwotCiAgICAgICAgIC8vIE5v
dGU6IHJlc29sdmUgb25seSB3b3JrcyBvbiBjb2xvciBpbWFnZXMgKG5vdCBkZXB0aC9zdGVuY2ls
KS4KICAgICAgICAgLy8KICAgICAgICAgLy8gVE9ETzogQ3VycmVudGx5LCBkZXB0aC9zdGVuY2ls
IGJsaXQgY2FuIHBlcmZvcm0gYSBkZXB0aC9zdGVuY2lsIHJlYWRiYWNrLCBidXQgdGhhdCBjb2Rl
CkBAIC0zMjc3LDcgKzM0MjYsOCBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpyZWFkUGl4
ZWxzKENvbnRleHRWayAqY29udGV4dFZrLAogCiAgICAgICAgIHJlc29sdmUoJnJlc29sdmVkSW1h
Z2UuZ2V0KCksIHJlc29sdmVSZWdpb24sIGNvbW1hbmRCdWZmZXIpOwogCi0gICAgICAgIHJlc29s
dmVkSW1hZ2UuZ2V0KCkuY2hhbmdlTGF5b3V0KGNvcHlBc3BlY3RGbGFncywgSW1hZ2VMYXlvdXQ6
OlRyYW5zZmVyU3JjLCBjb21tYW5kQnVmZmVyKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRW
ay0+b25JbWFnZVJlYWQoY29weUFzcGVjdEZsYWdzLCBJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNvbHZlZEltYWdl
LmdldCgpKSk7CiAKICAgICAgICAgLy8gTWFrZSB0aGUgcmVzb2x2ZWQgaW1hZ2UgdGhlIHRhcmdl
dCBvZiBidWZmZXIgY29weS4KICAgICAgICAgc3JjICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAmcmVzb2x2ZWRJbWFnZS5nZXQoKTsKQEAgLTM0MDAsMTEgKzM1NTAsMjEgQEAgYm9vbCBJbWFn
ZUhlbHBlcjo6U3VicmVzb3VyY2VVcGRhdGU6OmlzVXBkYXRlVG9MYXllckxldmVsKHVpbnQzMl90
IGxheWVySW5kZXgsCiB9CiAKIC8vIEZyYW1lYnVmZmVySGVscGVyIGltcGxlbWVudGF0aW9uLgot
RnJhbWVidWZmZXJIZWxwZXI6OkZyYW1lYnVmZmVySGVscGVyKCkgOiBDb21tYW5kR3JhcGhSZXNv
dXJjZShDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkZyYW1lYnVmZmVyKQote30KK0ZyYW1lYnVm
ZmVySGVscGVyOjpGcmFtZWJ1ZmZlckhlbHBlcigpID0gZGVmYXVsdDsKIAogRnJhbWVidWZmZXJI
ZWxwZXI6On5GcmFtZWJ1ZmZlckhlbHBlcigpID0gZGVmYXVsdDsKIAorRnJhbWVidWZmZXJIZWxw
ZXI6OkZyYW1lYnVmZmVySGVscGVyKEZyYW1lYnVmZmVySGVscGVyICYmb3RoZXIpCit7CisgICAg
bUZyYW1lYnVmZmVyID0gc3RkOjptb3ZlKG90aGVyLm1GcmFtZWJ1ZmZlcik7Cit9CisKK0ZyYW1l
YnVmZmVySGVscGVyICZGcmFtZWJ1ZmZlckhlbHBlcjo6b3BlcmF0b3I9KEZyYW1lYnVmZmVySGVs
cGVyICYmb3RoZXIpCit7CisgICAgc3RkOjpzd2FwKG1GcmFtZWJ1ZmZlciwgb3RoZXIubUZyYW1l
YnVmZmVyKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZm
ZXJIZWxwZXI6OmluaXQoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrRnJhbWVidWZmZXJDcmVhdGVJbmZvICZjcmVhdGVJ
bmZvKQogewpAQCAtMzQ0MSwxMyArMzYwMSwyNSBAQCB2b2lkIEltYWdlVmlld0hlbHBlcjo6cmVs
ZWFzZShSZW5kZXJlclZrICpyZW5kZXJlcikKIHsKICAgICBzdGQ6OnZlY3RvcjxHYXJiYWdlT2Jq
ZWN0PiBnYXJiYWdlOwogCi0gICAgZ2FyYmFnZS5lbXBsYWNlX2JhY2soR2V0R2FyYmFnZSgmbVJl
YWRJbWFnZVZpZXcpKTsKLSAgICBnYXJiYWdlLmVtcGxhY2VfYmFjayhHZXRHYXJiYWdlKCZtRmV0
Y2hJbWFnZVZpZXcpKTsKLSAgICBnYXJiYWdlLmVtcGxhY2VfYmFjayhHZXRHYXJiYWdlKCZtU3Rl
bmNpbFJlYWRJbWFnZVZpZXcpKTsKKyAgICBpZiAobVJlYWRJbWFnZVZpZXcudmFsaWQoKSkKKyAg
ICB7CisgICAgICAgIGdhcmJhZ2UuZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJm1SZWFkSW1hZ2VW
aWV3KSk7CisgICAgfQorICAgIGlmIChtRmV0Y2hJbWFnZVZpZXcudmFsaWQoKSkKKyAgICB7Cisg
ICAgICAgIGdhcmJhZ2UuZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJm1GZXRjaEltYWdlVmlldykp
OworICAgIH0KKyAgICBpZiAobVN0ZW5jaWxSZWFkSW1hZ2VWaWV3LnZhbGlkKCkpCisgICAgewor
ICAgICAgICBnYXJiYWdlLmVtcGxhY2VfYmFjayhHZXRHYXJiYWdlKCZtU3RlbmNpbFJlYWRJbWFn
ZVZpZXcpKTsKKyAgICB9CiAKICAgICBmb3IgKEltYWdlVmlldyAmaW1hZ2VWaWV3IDogbUxldmVs
RHJhd0ltYWdlVmlld3MpCiAgICAgewotICAgICAgICBnYXJiYWdlLmVtcGxhY2VfYmFjayhHZXRH
YXJiYWdlKCZpbWFnZVZpZXcpKTsKKyAgICAgICAgaWYgKGltYWdlVmlldy52YWxpZCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBnYXJiYWdlLmVtcGxhY2VfYmFjayhHZXRHYXJiYWdlKCZpbWFn
ZVZpZXcpKTsKKyAgICAgICAgfQogICAgIH0KICAgICBtTGV2ZWxEcmF3SW1hZ2VWaWV3cy5jbGVh
cigpOwogCkBAIC0zNDU1LDE1ICszNjI3LDIxIEBAIHZvaWQgSW1hZ2VWaWV3SGVscGVyOjpyZWxl
YXNlKFJlbmRlcmVyVmsgKnJlbmRlcmVyKQogICAgIHsKICAgICAgICAgZm9yIChJbWFnZVZpZXcg
JmltYWdlVmlldyA6IGxheWVyVmlld3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdhcmJhZ2Uu
ZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJmltYWdlVmlldykpOworICAgICAgICAgICAgaWYgKGlt
YWdlVmlldy52YWxpZCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdhcmJhZ2Uu
ZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJmltYWdlVmlldykpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogICAgIG1MYXllckxldmVsRHJhd0ltYWdlVmlld3MuY2xlYXIoKTsKIAot
ICAgIHJlbmRlcmVyLT5jb2xsZWN0R2FyYmFnZShzdGQ6Om1vdmUobVVzZSksIHN0ZDo6bW92ZShn
YXJiYWdlKSk7CisgICAgaWYgKCFnYXJiYWdlLmVtcHR5KCkpCisgICAgeworICAgICAgICByZW5k
ZXJlci0+Y29sbGVjdEdhcmJhZ2Uoc3RkOjptb3ZlKG1Vc2UpLCBzdGQ6Om1vdmUoZ2FyYmFnZSkp
OwogCi0gICAgLy8gRW5zdXJlIHRoZSByZXNvdXJjZSB1c2UgaXMgYWx3YXlzIHZhbGlkLgotICAg
IG1Vc2UuaW5pdCgpOworICAgICAgICAvLyBFbnN1cmUgdGhlIHJlc291cmNlIHVzZSBpcyBhbHdh
eXMgdmFsaWQuCisgICAgICAgIG1Vc2UuaW5pdCgpOworICAgIH0KIH0KIAogdm9pZCBJbWFnZVZp
ZXdIZWxwZXI6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQpAQCAtMzUzNiwxMCArMzcxNCw5IEBA
IGFuZ2xlOjpSZXN1bHQgSW1hZ2VWaWV3SGVscGVyOjpnZXRMZXZlbERyYXdJbWFnZVZpZXcoQ29u
dGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGxheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbWFnZVZpZXcgKippbWFnZVZpZXdP
dXQpCiB7Ci0gICAgb25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxp
c3QoKSk7CisgICAgcmV0YWluKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKIAot
ICAgIC8vIFRPRE8oaHR0cDovL2FuZ2xlYnVnLmNvbS80MDA4KTogUG9zc2libHkgaW5jb3JyZWN0
IGxldmVsIGNvdW50LgotICAgIEltYWdlVmlldyAqaW1hZ2VWaWV3ID0gR2V0TGV2ZWxJbWFnZVZp
ZXcoJm1MZXZlbERyYXdJbWFnZVZpZXdzLCBsZXZlbCwgMSk7CisgICAgSW1hZ2VWaWV3ICppbWFn
ZVZpZXcgPSBHZXRMZXZlbEltYWdlVmlldygmbUxldmVsRHJhd0ltYWdlVmlld3MsIGxldmVsLCBp
bWFnZS5nZXRMZXZlbENvdW50KCkpOwogCiAgICAgKmltYWdlVmlld091dCA9IGltYWdlVmlldzsK
ICAgICBpZiAoaW1hZ2VWaWV3LT52YWxpZCgpKQpAQCAtMzU2MSw3ICszNzM4LDcgQEAgYW5nbGU6
OlJlc3VsdCBJbWFnZVZpZXdIZWxwZXI6OmdldExldmVsTGF5ZXJEcmF3SW1hZ2VWaWV3KENvbnRl
eHRWayAqY29udGV4dFZrLAogICAgIEFTU0VSVChpbWFnZS52YWxpZCgpKTsKICAgICBBU1NFUlQo
IWltYWdlLmdldEZvcm1hdCgpLmFjdHVhbEltYWdlRm9ybWF0KCkuaXNCbG9jayk7CiAKLSAgICBv
blJlc291cmNlQWNjZXNzKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKKyAgICBy
ZXRhaW4oJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwogCiAgICAgdWludDMyX3Qg
bGF5ZXJDb3VudCA9IEdldEltYWdlTGF5ZXJDb3VudEZvclZpZXcoaW1hZ2UpOwogCkBAIC0zNjA2
LDcgKzM3ODMsNyBAQCB2b2lkIFNhbXBsZXJIZWxwZXI6OnJlbGVhc2UoUmVuZGVyZXJWayAqcmVu
ZGVyZXIpCiB9CiAKIC8vIERpc3BhdGNoSGVscGVyIGltcGxlbWVudGF0aW9uLgotRGlzcGF0Y2hI
ZWxwZXI6OkRpc3BhdGNoSGVscGVyKCkgOiBDb21tYW5kR3JhcGhSZXNvdXJjZShDb21tYW5kR3Jh
cGhSZXNvdXJjZVR5cGU6OkRpc3BhdGNoZXIpIHt9CitEaXNwYXRjaEhlbHBlcjo6RGlzcGF0Y2hI
ZWxwZXIoKSA9IGRlZmF1bHQ7CiAKIERpc3BhdGNoSGVscGVyOjp+RGlzcGF0Y2hIZWxwZXIoKSA9
IGRlZmF1bHQ7CiAKQEAgLTM2ODksMjUgKzM4NjYsNSBAQCBhbmdsZTo6UmVzdWx0IFNoYWRlclBy
b2dyYW1IZWxwZXI6OmdldENvbXB1dGVQaXBlbGluZShDb250ZXh0ICpjb250ZXh0LAogICAgICpw
aXBlbGluZU91dCA9ICZtQ29tcHV0ZVBpcGVsaW5lOwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKIH0KLQotdm9pZCBNYWtlRGVidWdVdGlsc0xhYmVsKEdMZW51bSBzb3VyY2Us
IGNvbnN0IGNoYXIgKm1hcmtlciwgVmtEZWJ1Z1V0aWxzTGFiZWxFWFQgKmxhYmVsKQotewotICAg
IHN0YXRpYyBjb25zdGV4cHIgYW5nbGU6OkNvbG9yRiBrTGFiZWxDb2xvcnNbNl0gPSB7Ci0gICAg
ICAgIGFuZ2xlOjpDb2xvckYoMS4wZiwgMC41ZiwgMC41ZiwgMS4wZiksICAvLyBERUJVR19TT1VS
Q0VfQVBJCi0gICAgICAgIGFuZ2xlOjpDb2xvckYoMC41ZiwgMS4wZiwgMC41ZiwgMS4wZiksICAv
LyBERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQotICAgICAgICBhbmdsZTo6Q29sb3JGKDAuNWYs
IDAuNWYsIDEuMGYsIDEuMGYpLCAgLy8gREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUgotICAg
ICAgICBhbmdsZTo6Q29sb3JGKDAuN2YsIDAuN2YsIDAuN2YsIDEuMGYpLCAgLy8gREVCVUdfU09V
UkNFX1RISVJEX1BBUlRZCi0gICAgICAgIGFuZ2xlOjpDb2xvckYoMC41ZiwgMC44ZiwgMC45Ziwg
MS4wZiksICAvLyBERUJVR19TT1VSQ0VfQVBQTElDQVRJT04KLSAgICAgICAgYW5nbGU6OkNvbG9y
RigwLjlmLCAwLjhmLCAwLjVmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJDRV9PVEhFUgotICAgIH07
Ci0KLSAgICBpbnQgY29sb3JJbmRleCA9IHNvdXJjZSAtIEdMX0RFQlVHX1NPVVJDRV9BUEk7Ci0g
ICAgQVNTRVJUKGNvbG9ySW5kZXggPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbG9ySW5k
ZXgpIDwgQXJyYXlTaXplKGtMYWJlbENvbG9ycykpOwotCi0gICAgbGFiZWwtPnNUeXBlICAgICAg
PSBWS19TVFJVQ1RVUkVfVFlQRV9ERUJVR19VVElMU19MQUJFTF9FWFQ7Ci0gICAgbGFiZWwtPnBO
ZXh0ICAgICAgPSBudWxscHRyOwotICAgIGxhYmVsLT5wTGFiZWxOYW1lID0gbWFya2VyOwotICAg
IGtMYWJlbENvbG9yc1tjb2xvckluZGV4XS53cml0ZURhdGEobGFiZWwtPmNvbG9yKTsKLX0KIH0g
IC8vIG5hbWVzcGFjZSB2awogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2hlbHBlcnMu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
dmtfaGVscGVycy5oCmluZGV4IGE0ZDFkYWJiNThmYTI2ZmFmNTU1NmY0Mjg0ODUwZGIyMjM4ODMz
NTIuLmQ5ZDQ2YjcxODk4ZWJjZTEyODk1ZjlmNWEzY2ZhNmQ2YWRjMGYwN2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
aGVscGVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vdmtfaGVscGVycy5oCkBAIC05LDggKzksOCBAQAogI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9WVUxLQU5fVktfSEVMUEVSU19IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9WVUxLQU5fVktfSEVMUEVSU19IXwogCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0NvbW1hbmRHcmFwaC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92
a191dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZr
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmgi
CiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMjgxLDEyICsyODEsNyBAQCBjbGFzcyBEeW5hbWljUXVl
cnlQb29sIGZpbmFsIDogcHVibGljIER5bmFtaWNhbGx5R3Jvd2luZ1Bvb2w8UXVlcnlQb29sPgog
ICAgIGFuZ2xlOjpSZXN1bHQgYWxsb2NhdGVRdWVyeShDb250ZXh0VmsgKmNvbnRleHRWaywgUXVl
cnlIZWxwZXIgKnF1ZXJ5T3V0KTsKICAgICB2b2lkIGZyZWVRdWVyeShDb250ZXh0VmsgKmNvbnRl
eHRWaywgUXVlcnlIZWxwZXIgKnF1ZXJ5KTsKIAotICAgIC8vIFNwZWNpYWwgYWxsb2NhdG9yIHRo
YXQgZG9lc24ndCB3b3JrIHdpdGggUXVlcnlIZWxwZXIsIHdoaWNoIGlzIGEgQ29tbWFuZEdyYXBo
UmVzb3VyY2UuCi0gICAgLy8gQ3VycmVudGx5IG9ubHkgdXNlZCB3aXRoIFJlbmRlcmVyVms6Okdw
dUV2ZW50UXVlcnkuCi0gICAgYW5nbGU6OlJlc3VsdCBhbGxvY2F0ZVF1ZXJ5KENvbnRleHRWayAq
Y29udGV4dFZrLCBzaXplX3QgKnBvb2xJbmRleCwgdWludDMyX3QgKnF1ZXJ5SW5kZXgpOwotICAg
IHZvaWQgZnJlZVF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrLCBzaXplX3QgcG9vbEluZGV4LCB1
aW50MzJfdCBxdWVyeUluZGV4KTsKLQotICAgIGNvbnN0IFF1ZXJ5UG9vbCAqZ2V0UXVlcnlQb29s
KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gJm1Qb29sc1tpbmRleF07IH0KKyAgICBjb25z
dCBRdWVyeVBvb2wgJmdldFF1ZXJ5UG9vbChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1Q
b29sc1tpbmRleF07IH0KIAogICBwcml2YXRlOgogICAgIGFuZ2xlOjpSZXN1bHQgYWxsb2NhdGVO
ZXdQb29sKENvbnRleHRWayAqY29udGV4dFZrKTsKQEAgLTMxNSwyMyArMzEwLDMwIEBAIGNsYXNz
IFF1ZXJ5SGVscGVyIGZpbmFsCiAgICAgICAgICAgICAgIHVpbnQzMl90IHF1ZXJ5KTsKICAgICB2
b2lkIGRlaW5pdCgpOwogCi0gICAgY29uc3QgUXVlcnlQb29sICpnZXRRdWVyeVBvb2woKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1EeW5hbWljUXVlcnlQb29sID8gbUR5bmFtaWNRdWVy
eVBvb2wtPmdldFF1ZXJ5UG9vbChtUXVlcnlQb29sSW5kZXgpIDogbnVsbHB0cjsKLSAgICB9Ci0g
ICAgdWludDMyX3QgZ2V0UXVlcnkoKSBjb25zdCB7IHJldHVybiBtUXVlcnk7IH0KKyAgICBib29s
IHZhbGlkKCkgY29uc3QgeyByZXR1cm4gbUR5bmFtaWNRdWVyeVBvb2wgIT0gbnVsbHB0cjsgfQog
Ci0gICAgLy8gVXNlZCBvbmx5IGJ5IER5bmFtaWNRdWVyeVBvb2wuCi0gICAgc2l6ZV90IGdldFF1
ZXJ5UG9vbEluZGV4KCkgY29uc3QgeyByZXR1cm4gbVF1ZXJ5UG9vbEluZGV4OyB9CisgICAgYW5n
bGU6OlJlc3VsdCBiZWdpblF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrKTsKKyAgICBhbmdsZTo6
UmVzdWx0IGVuZFF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrKTsKIAotICAgIHZvaWQgYmVnaW5R
dWVyeShDb250ZXh0VmsgKmNvbnRleHRWayk7Ci0gICAgdm9pZCBlbmRRdWVyeShDb250ZXh0Vmsg
KmNvbnRleHRWayk7Ci0gICAgdm9pZCB3cml0ZVRpbWVzdGFtcChDb250ZXh0VmsgKmNvbnRleHRW
ayk7CisgICAgYW5nbGU6OlJlc3VsdCBmbHVzaEFuZFdyaXRlVGltZXN0YW1wKENvbnRleHRWayAq
Y29udGV4dFZrKTsKKyAgICB2b2lkIHdyaXRlVGltZXN0YW1wKHZrOjpQcmltYXJ5Q29tbWFuZEJ1
ZmZlciAqcHJpbWFyeSk7CiAKICAgICBTZXJpYWwgZ2V0U3RvcmVkUXVldWVTZXJpYWwoKSB7IHJl
dHVybiBtTW9zdFJlY2VudFNlcmlhbDsgfQogICAgIGJvb2wgaGFzUGVuZGluZ1dvcmsoQ29udGV4
dFZrICpjb250ZXh0VmspOwogCisgICAgYW5nbGU6OlJlc3VsdCBnZXRVaW50NjRSZXN1bHROb25C
bG9ja2luZyhDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpyZXN1bHRPdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICphdmFpbGFibGVPdXQpOworICAgIGFu
Z2xlOjpSZXN1bHQgZ2V0VWludDY0UmVzdWx0KENvbnRleHRWayAqY29udGV4dFZrLCB1aW50NjRf
dCAqcmVzdWx0T3V0KTsKKwogICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEeW5hbWljUXVl
cnlQb29sOworICAgIGNvbnN0IFF1ZXJ5UG9vbCAmZ2V0UXVlcnlQb29sKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1EeW5hbWljUXVlcnlQ
b29sLT5nZXRRdWVyeVBvb2wobVF1ZXJ5UG9vbEluZGV4KTsKKyAgICB9CisKICAgICBjb25zdCBE
eW5hbWljUXVlcnlQb29sICptRHluYW1pY1F1ZXJ5UG9vbDsKICAgICBzaXplX3QgbVF1ZXJ5UG9v
bEluZGV4OwogICAgIHVpbnQzMl90IG1RdWVyeTsKQEAgLTQ1OCw3ICs0NjAsNyBAQCBjbGFzcyBM
aW5lTG9vcEhlbHBlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiBjbGFzcyBGcmFtZWJ1
ZmZlckhlbHBlcjsKIAotY2xhc3MgQnVmZmVySGVscGVyIGZpbmFsIDogcHVibGljIENvbW1hbmRH
cmFwaFJlc291cmNlCitjbGFzcyBCdWZmZXJIZWxwZXIgZmluYWwgOiBwdWJsaWMgUmVzb3VyY2UK
IHsKICAgcHVibGljOgogICAgIEJ1ZmZlckhlbHBlcigpOwpAQCAtNDc1LDUwICs0NzcsMTggQEAg
Y2xhc3MgQnVmZmVySGVscGVyIGZpbmFsIDogcHVibGljIENvbW1hbmRHcmFwaFJlc291cmNlCiAg
ICAgY29uc3QgQnVmZmVyICZnZXRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyOyB9CiAg
ICAgY29uc3QgRGV2aWNlTWVtb3J5ICZnZXREZXZpY2VNZW1vcnkoKSBjb25zdCB7IHJldHVybiBt
RGV2aWNlTWVtb3J5OyB9CiAgICAgVmtEZXZpY2VTaXplIGdldFNpemUoKSBjb25zdCB7IHJldHVy
biBtU2l6ZTsgfQotCi0gICAgLy8gSGVscGVycyBmb3Igc2V0dGluZyB0aGUgZ3JhcGggZGVwZW5k
ZW5jaWVzICphbmQqIHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlIGJhcnJpZXIuICBUaGVzZSBhcmUK
LSAgICAvLyBtYWRlIGZvciBkZXBlbmRlbmNpZXMgdG8gbm9uLWJ1ZmZlciByZXNvdXJjZXMsIGFz
IG9ubHkgb25lIG9mIHR3byByZXNvdXJjZXMgcGFydGljaXBhdGluZyBpbgotICAgIC8vIHRoZSBk
ZXBlbmRlbmN5IHdvdWxkIHJlcXVpcmUgYSBtZW1vcnkgYmFycmllci4gIE5vdGUgdGhhdCBvbldy
aXRlIHRha2VzIHJlYWQgYWNjZXNzIGZsYWdzCi0gICAgLy8gdG9vLCBhcyBvdXRwdXQgYnVmZmVy
cyBjb3VsZCBiZSByZWFkIGFzIHdlbGwuCi0gICAgdm9pZCBvblJlYWQoQ29udGV4dFZrICpjb250
ZXh0VmssIENvbW1hbmRHcmFwaFJlc291cmNlICpyZWFkZXIsIFZrQWNjZXNzRmxhZ3MgcmVhZEFj
Y2Vzc1R5cGUpCisgICAgYm9vbCBpc0hvc3RWaXNpYmxlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGFkZFJlYWREZXBlbmRlbmN5KGNvbnRleHRWaywgcmVhZGVyKTsKLSAgICAgICAgb25SZWFkQWNj
ZXNzKHJlYWRlciwgcmVhZEFjY2Vzc1R5cGUpOwotICAgIH0KLSAgICB2b2lkIG9uV3JpdGUoQ29u
dGV4dFZrICpjb250ZXh0VmssIENvbW1hbmRHcmFwaFJlc291cmNlICp3cml0ZXIsIFZrQWNjZXNz
RmxhZ3Mgd3JpdGVBY2Nlc3NUeXBlKQotICAgIHsKLSAgICAgICAgYWRkV3JpdGVEZXBlbmRlbmN5
KGNvbnRleHRWaywgd3JpdGVyKTsKLSAgICAgICAgb25Xcml0ZUFjY2Vzcyhjb250ZXh0VmssIHdy
aXRlQWNjZXNzVHlwZSk7Ci0gICAgfQotICAgIC8vIEhlbHBlciBmb3Igc2V0dGluZyBhIGdyYXBo
IGRlcGVuZGVuY3kgYmV0d2VlbiB0d28gYnVmZmVycy4gIFRoaXMgaXMgYSBzcGVjaWFsaXplZCBm
dW5jdGlvbiBhcwotICAgIC8vIGJvdGggYnVmZmVycyBtYXkgaW5jdXIgYSBtZW1vcnkgYmFycmll
ci4gIFVzaW5nIHxvblJlYWR8IGZvbGxvd2VkIGJ5IHxvbldyaXRlfCBiZXR3ZWVuIHRoZQotICAg
IC8vIGJ1ZmZlcnMgaXMgaW1wb3NzaWJsZSBhcyBpdCB3b3VsZCByZXN1bHQgaW4gYSBjb21tYW5k
IGdyYXBoIGxvb3AuCi0gICAgdm9pZCBvblJlYWRCeUJ1ZmZlcihDb250ZXh0VmsgKmNvbnRleHRW
aywKLSAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckhlbHBlciAqcmVhZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgVmtBY2Nlc3NGbGFncyByZWFkQWNjZXNzVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NUeXBlKQotICAgIHsKLSAg
ICAgICAgYWRkUmVhZERlcGVuZGVuY3koY29udGV4dFZrLCByZWFkZXIpOwotICAgICAgICBvblJl
YWRBY2Nlc3MocmVhZGVyLCByZWFkQWNjZXNzVHlwZSk7Ci0gICAgICAgIHJlYWRlci0+b25Xcml0
ZUFjY2Vzcyhjb250ZXh0VmssIHdyaXRlQWNjZXNzVHlwZSk7Ci0gICAgfQotICAgIC8vIEhlbHBl
ciBmb3Igc2V0dGluZyBhIGJhcnJpZXIgd2hlbiBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHNhbWUg
YnVmZmVyIGlzIGJlaW5nIHJlYWQgZnJvbSBhbmQKLSAgICAvLyB3cml0dGVuIHRvIGluIHRoZSBz
YW1lIGNvbW1hbmQuCi0gICAgdm9pZCBvblNlbGZSZWFkV3JpdGUoQ29udGV4dFZrICpjb250ZXh0
VmssIFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NUeXBlKQotICAgIHsKLSAgICAgICAgaWYgKG1D
dXJyZW50UmVhZEFjY2VzcyB8fCBtQ3VycmVudFdyaXRlQWNjZXNzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmaW5pc2hDdXJyZW50Q29tbWFuZHMoY29udGV4dFZrKTsKLSAgICAgICAgfQotICAg
ICAgICBvbldyaXRlQWNjZXNzKGNvbnRleHRWaywgd3JpdGVBY2Nlc3NUeXBlKTsKKyAgICAgICAg
cmV0dXJuIChtTWVtb3J5UHJvcGVydHlGbGFncyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJ
U0lCTEVfQklUKSAhPSAwOwogICAgIH0KKwogICAgIC8vIFNldCB3cml0ZSBhY2Nlc3MgbWFzayB3
aGVuIHRoZSBidWZmZXIgaXMgbW9kaWZpZWQgZXh0ZXJuYWxseSwgZS5nLiBieSBob3N0LiAgVGhl
cmUgaXMgbm8KICAgICAvLyBncmFwaCByZXNvdXJjZSB0byBjcmVhdGUgYSBkZXBlbmRlbmN5IHRv
LgogICAgIHZvaWQgb25FeHRlcm5hbFdyaXRlKFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NUeXBl
KSB7IG1DdXJyZW50V3JpdGVBY2Nlc3MgfD0gd3JpdGVBY2Nlc3NUeXBlOyB9CiAKICAgICAvLyBB
bHNvIGltcGxpY2l0bHkgc2V0cyB1cCB0aGUgY29ycmVjdCBiYXJyaWVycy4KICAgICBhbmdsZTo6
UmVzdWx0IGNvcHlGcm9tQnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVyICZidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXJIZWxwZXIgKnNyY0J1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3MgYnVmZmVyQWNjZXNzVHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyQ29weSAmY29weVJl
Z2lvbik7CiAKQEAgLTU1Nyw3ICs1MjcsNyBAQCBjbGFzcyBCdWZmZXJIZWxwZXIgZmluYWwgOiBw
dWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKIAogICAgIHZvaWQgY2hhbmdlUXVldWUodWludDMy
X3QgbmV3UXVldWVGYW1pbHlJbmRleCwgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcik7CiAK
LSAgICAvLyBOZXcgbWV0aG9kcyB1c2VkIHdoZW4gdGhlIENvbW1hbmRHcmFwaCBpcyBkaXNhYmxl
ZC4KKyAgICAvLyBDdXJyZW50bHkgYWx3YXlzIHJldHVybnMgZmFsc2UuIFNob3VsZCBiZSBzbWFy
dGVyIGFib3V0IGFjY3VtdWxhdGlvbi4KICAgICBib29sIGNhbkFjY3VtdWxhdGVSZWFkKENvbnRl
eHRWayAqY29udGV4dFZrLCBWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NUeXBlKTsKICAgICBib29s
IGNhbkFjY3VtdWxhdGVXcml0ZShDb250ZXh0VmsgKmNvbnRleHRWaywgVmtBY2Nlc3NGbGFncyB3
cml0ZUFjY2Vzc1R5cGUpOwogCkBAIC01ODQsMTkgKzU1NCwxMSBAQCBjbGFzcyBCdWZmZXJIZWxw
ZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKICAgICAgICAgbUN1cnJlbnRS
ZWFkQWNjZXNzIHw9IHJlYWRBY2Nlc3NUeXBlOwogICAgICAgICByZXR1cm4gbmVlZHNCYXJyaWVy
OwogICAgIH0KLSAgICB2b2lkIG9uUmVhZEFjY2VzcyhDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVh
ZGVyLCBWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NUeXBlKQotICAgIHsKLSAgICAgICAgVmtBY2Nl
c3NGbGFncyBiYXJyaWVyU3JjLCBiYXJyaWVyRHN0OwotICAgICAgICBpZiAobmVlZHNPblJlYWRC
YXJyaWVyKHJlYWRBY2Nlc3NUeXBlLCAmYmFycmllclNyYywgJmJhcnJpZXJEc3QpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZWFkZXItPmFkZEdsb2JhbE1lbW9yeUJhcnJpZXIoYmFycmllclNy
YywgYmFycmllckRzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklUKTsKLSAgICAgICAgfQotICAgIH0K
ICAgICBib29sIG5lZWRzT25Xcml0ZUJhcnJpZXIoVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3MgKmJhcnJpZXJT
cmNPdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3MgKmJhcnJp
ZXJEc3RPdXQpOwotICAgIHZvaWQgb25Xcml0ZUFjY2VzcyhDb250ZXh0VmsgKmNvbnRleHRWaywg
VmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUpOworCisgICAgYW5nbGU6OlJlc3VsdCBpbml0
aWFsaXplTm9uWmVyb01lbW9yeShDb250ZXh0ICpjb250ZXh0LCBWa0RldmljZVNpemUgc2l6ZSk7
CiAKICAgICAvLyBWdWxrYW4gb2JqZWN0cy4KICAgICBCdWZmZXIgbUJ1ZmZlcjsKQEAgLTY2NSw3
ICs2MjcsNyBAQCBlbnVtIGNsYXNzIEltYWdlTGF5b3V0CiAgICAgRW51bUNvdW50ICAgPSAxMywK
IH07CiAKLWNsYXNzIEltYWdlSGVscGVyIGZpbmFsIDogcHVibGljIENvbW1hbmRHcmFwaFJlc291
cmNlCitjbGFzcyBJbWFnZUhlbHBlciBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZQogewogICBwdWJs
aWM6CiAgICAgSW1hZ2VIZWxwZXIoKTsKQEAgLTc3Nyw2ICs3MzksMTAgQEAgY2xhc3MgSW1hZ2VI
ZWxwZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKIAogICAgIGdsOjpFeHRl
bnRzIGdldFNpemUoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdDsKIAorICAgIC8v
IFJldHVybiB1bmlxdWUgU2VyaWFsIGZvciB1bmRlcmx5aW5nIGltYWdlLCBmaXJzdCBhc3NpZ25p
bmcgaXQgaWYgaXQgaGFzbid0IGJlZW4gc2V0IHlldAorICAgIFNlcmlhbCBnZXRBc3NpZ25TZXJp
YWwoQ29udGV4dFZrICpjb250ZXh0VmspOworICAgIHZvaWQgcmVzZXRTZXJpYWwoKSB7IG1TZXJp
YWwgPSByeDo6a1plcm9TZXJpYWw7IH0KKwogICAgIHN0YXRpYyB2b2lkIENvcHkoSW1hZ2VIZWxw
ZXIgKnNyY0ltYWdlLAogICAgICAgICAgICAgICAgICAgICAgSW1hZ2VIZWxwZXIgKmRzdEltYWdl
LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmc3JjT2Zmc2V0LApAQCAt
ODUwLDcgKzgxNiw3IEBAIGNsYXNzIEltYWdlSGVscGVyIGZpbmFsIDogcHVibGljIENvbW1hbmRH
cmFwaFJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZrSW1hZ2VUeXBlIGltYWdlVHlwZSk7CiAKICAgICAvLyBTdGFnZSBhIGNsZWFyIG9wZXJh
dGlvbiB0byBhIGNsZWFyIHZhbHVlIGJhc2VkIG9uIFdlYkdMIHJlcXVpcmVtZW50cy4KLSAgICB2
b2lkIHN0YWdlU3VicmVzb3VyY2VSb2J1c3RDbGVhcihjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgsIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmZvcm1hdCk7CisgICAgdm9pZCBzdGFnZVN1YnJlc291
cmNlUm9idXN0Q2xlYXIoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBjb25zdCBGb3JtYXQg
JmZvcm1hdCk7CiAKICAgICAvLyBTdGFnZSBhIGNsZWFyIG9wZXJhdGlvbiB0byBhIGNsZWFyIHZh
bHVlIHRoYXQgaW5pdGlhbGl6ZXMgZW11bGF0ZWQgY2hhbm5lbHMgdG8gdGhlIGRlc2lyZWQKICAg
ICAvLyB2YWx1ZXMuCkBAIC04OTIsOSArODU4LDE4IEBAIGNsYXNzIEltYWdlSGVscGVyIGZpbmFs
IDogcHVibGljIENvbW1hbmRHcmFwaFJlc291cmNlCiAgICAgLy8gcHVycG9zZSBvZiBwZXJmb3Jt
aW5nIGEgdHJhbnNpdGlvbiAod2hpY2ggbWF5IHRoZW4gbm90IGJlIGlzc3VlZCkuCiAgICAgYm9v
bCBpc0xheW91dENoYW5nZU5lY2Vzc2FyeShJbWFnZUxheW91dCBuZXdMYXlvdXQpIGNvbnN0Owog
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbW1hbmRCdWZmZXJUPgogICAgIHZvaWQgY2hhbmdl
TGF5b3V0KFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RNYXNrLAogICAgICAgICAgICAgICAgICAg
ICAgIEltYWdlTGF5b3V0IG5ld0xheW91dCwKLSAgICAgICAgICAgICAgICAgICAgICBDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVm
ZmVyVCAqY29tbWFuZEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGlmICghaXNMYXlvdXRDaGFuZ2VO
ZWNlc3NhcnkobmV3TGF5b3V0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yY2VDaGFuZ2VMYXlvdXRBbmRRdWV1ZShhc3BlY3RNYXNrLCBu
ZXdMYXlvdXQsIG1DdXJyZW50UXVldWVGYW1pbHlJbmRleCwgY29tbWFuZEJ1ZmZlcik7CisgICAg
fQogCiAgICAgYm9vbCBpc1F1ZXVlQ2hhbmdlTmVjY2VzYXJ5KHVpbnQzMl90IG5ld1F1ZXVlRmFt
aWx5SW5kZXgpIGNvbnN0CiAgICAgewpAQCAtOTYyLDEwICs5MzcsMTIgQEAgY2xhc3MgSW1hZ2VI
ZWxwZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppbnB1dFNraXBCeXRlcyk7CiAKICAgcHJp
dmF0ZToKKyAgICAvLyBHZW5lcmFsaXplZCB0byBhY2NlcHQgYm90aCAicHJpbWFyeSIgYW5kICJz
ZWNvbmRhcnkiIGNvbW1hbmQgYnVmZmVycy4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29tbWFu
ZEJ1ZmZlclQ+CiAgICAgdm9pZCBmb3JjZUNoYW5nZUxheW91dEFuZFF1ZXVlKFZrSW1hZ2VBc3Bl
Y3RGbGFncyBhc3BlY3RNYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bWFnZUxheW91dCBuZXdMYXlvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IG5ld1F1ZXVlRmFtaWx5SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVyVCAqY29tbWFuZEJ1ZmZlcik7CiAKICAg
ICB2b2lkIHN0YWdlU3VicmVzb3VyY2VDbGVhcihjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmZm9y
bWF0LApAQCAtOTg4LDYgKzk2NSw4IEBAIGNsYXNzIEltYWdlSGVscGVyIGZpbmFsIDogcHVibGlj
IENvbW1hbmRHcmFwaFJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBsYXllckNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAq
Y29tbWFuZEJ1ZmZlcik7CiAKKyAgICBhbmdsZTo6UmVzdWx0IGluaXRpYWxpemVOb25aZXJvTWVt
b3J5KENvbnRleHQgKmNvbnRleHQsIFZrRGV2aWNlU2l6ZSBzaXplKTsKKwogICAgIGVudW0gY2xh
c3MgVXBkYXRlU291cmNlCiAgICAgewogICAgICAgICBDbGVhciwKQEAgLTEwNDcsNiArMTAyNiw3
IEBAIGNsYXNzIEltYWdlSGVscGVyIGZpbmFsIDogcHVibGljIENvbW1hbmRHcmFwaFJlc291cmNl
CiAgICAgVmtFeHRlbnQzRCBtRXh0ZW50czsKICAgICBjb25zdCBGb3JtYXQgKm1Gb3JtYXQ7CiAg
ICAgR0xpbnQgbVNhbXBsZXM7CisgICAgU2VyaWFsIG1TZXJpYWw7CiAKICAgICAvLyBDdXJyZW50
IHN0YXRlLgogICAgIEltYWdlTGF5b3V0IG1DdXJyZW50TGF5b3V0OwpAQCAtMTA4OSw3ICsxMDY5
LDcgQEAgY2xhc3MgSW1hZ2VWaWV3SGVscGVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYm9v
bCBoYXNGZXRjaEltYWdlVmlldygpIGNvbnN0IHsgcmV0dXJuIG1GZXRjaEltYWdlVmlldy52YWxp
ZCgpOyB9CiAKICAgICAvLyBTdG9yZSByZWZlcmVuY2UgdG8gdXNhZ2UgaW4gZ3JhcGguCi0gICAg
dm9pZCBvblJlc291cmNlQWNjZXNzKFJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KSBj
b25zdCB7IHJlc291cmNlVXNlTGlzdC0+YWRkKG1Vc2UpOyB9CisgICAgdm9pZCByZXRhaW4oUmVz
b3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QpIGNvbnN0IHsgcmVzb3VyY2VVc2VMaXN0LT5h
ZGQobVVzZSk7IH0KIAogICAgIC8vIENyZWF0ZXMgdmlld3Mgd2l0aCBtdWx0aXBsZSBsYXllcnMg
YW5kIGxldmVscy4KICAgICBhbmdsZTo6UmVzdWx0IGluaXRSZWFkVmlld3MoQ29udGV4dFZrICpj
b250ZXh0VmssCkBAIC0xMTQ0LDE5ICsxMTI0LDIyIEBAIGNsYXNzIFNhbXBsZXJIZWxwZXIgZmlu
YWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBTYW1wbGVyICZnZXQoKSB7IHJldHVybiBtU2Ft
cGxlcjsgfQogICAgIGNvbnN0IFNhbXBsZXIgJmdldCgpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVy
OyB9CiAKLSAgICB2b2lkIG9uUmVzb3VyY2VBY2Nlc3MoUmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJj
ZVVzZUxpc3QpIHsgcmVzb3VyY2VVc2VMaXN0LT5hZGQobVVzZSk7IH0KKyAgICB2b2lkIHJldGFp
bihSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCkgeyByZXNvdXJjZVVzZUxpc3QtPmFk
ZChtVXNlKTsgfQogCiAgIHByaXZhdGU6CiAgICAgU2hhcmVkUmVzb3VyY2VVc2UgbVVzZTsKICAg
ICBTYW1wbGVyIG1TYW1wbGVyOwogfTsKIAotY2xhc3MgRnJhbWVidWZmZXJIZWxwZXIgOiBwdWJs
aWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKK2NsYXNzIEZyYW1lYnVmZmVySGVscGVyIDogcHVibGlj
IFJlc291cmNlCiB7CiAgIHB1YmxpYzoKICAgICBGcmFtZWJ1ZmZlckhlbHBlcigpOwogICAgIH5G
cmFtZWJ1ZmZlckhlbHBlcigpIG92ZXJyaWRlOwogCisgICAgRnJhbWVidWZmZXJIZWxwZXIoRnJh
bWVidWZmZXJIZWxwZXIgJiZvdGhlcik7CisgICAgRnJhbWVidWZmZXJIZWxwZXIgJm9wZXJhdG9y
PShGcmFtZWJ1ZmZlckhlbHBlciAmJm90aGVyKTsKKwogICAgIGFuZ2xlOjpSZXN1bHQgaW5pdChD
b250ZXh0VmsgKmNvbnRleHRWaywgY29uc3QgVmtGcmFtZWJ1ZmZlckNyZWF0ZUluZm8gJmNyZWF0
ZUluZm8pOwogICAgIHZvaWQgcmVsZWFzZShDb250ZXh0VmsgKmNvbnRleHRWayk7CiAKQEAgLTEx
ODEsNyArMTE2NCw3IEBAIGNsYXNzIEZyYW1lYnVmZmVySGVscGVyIDogcHVibGljIENvbW1hbmRH
cmFwaFJlc291cmNlCiAKIC8vIEEgc3BlY2lhbCBjb21tYW5kIGdyYXBoIHJlc291cmNlIHRvIGhv
bGQgcmVzb3VyY2UgZGVwZW5kZW5jaWVzIGZvciBkaXNwYXRjaCBjYWxscy4gIEl0J3MgdGhlCiAv
LyBlcXVpdmFsZW50IG9mIEZyYW1lYnVmZmVySGVscGVyLCB0aG91Z2ggaXQgZG9lc24ndCBjb250
YWluIGEgVnVsa2FuIG9iamVjdC4KLWNsYXNzIERpc3BhdGNoSGVscGVyIDogcHVibGljIENvbW1h
bmRHcmFwaFJlc291cmNlCitjbGFzcyBEaXNwYXRjaEhlbHBlciA6IHB1YmxpYyBSZXNvdXJjZQog
ewogICBwdWJsaWM6CiAgICAgRGlzcGF0Y2hIZWxwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaW50ZXJuYWxf
c2hhZGVyc19hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmNwcAppbmRleCA3
Y2ExMTI2ZDQ0MzZjMTIyMDE0MDNiMjBlZjkyM2M1MGNkNTVlZTBiLi5lOGQ0OGI4YWY4YzZlOWIw
YTZiZTA0MWIyOWYzM2RkNTRkNWNlOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNfYXV0
b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4uY3BwCkBAIC0xLDcgKzEsNyBA
QAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRlZCBieSBnZW5f
dmtfaW50ZXJuYWxfc2hhZGVycy5weSB1c2luZyBkYXRhIGZyb20gc2hhZGVycy9zcmMvKgogLy8K
LS8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KIC8vCkBAIC02Miw2ICs2Miw3IEBAIG5hbWVzcGFjZQogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXguY29tcC4wMDAw
MDAwMy5pbmMiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2Vu
L0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGly
ZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMS5pbmMiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4w
MDAwMDAwMi5pbmMiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMv
Z2VuL0NvbnZlcnRJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDAuaW5jIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0VmVydGV4LmNvbXAu
MDAwMDAwMDAuaW5jIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJz
L2dlbi9Db252ZXJ0VmVydGV4LmNvbXAuMDAwMDAwMDEuaW5jIgpAQCAtMTk2LDYgKzE5Nyw4IEBA
IGNvbnN0ZXhwciBTaGFkZXJCbG9iIGtDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBf
c2hhZGVyc1tdID0gewogICAgICBzaXplb2Yoa0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3Bf
Y29tcF8wMDAwMDAwMCl9LAogICAgIHtrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21w
XzAwMDAwMDAxLAogICAgICBzaXplb2Yoa0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29t
cF8wMDAwMDAwMSl9LAorICAgIHtrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAw
MDAwMDAyLAorICAgICBzaXplb2Yoa0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcF8w
MDAwMDAwMil9LAogfTsKIGNvbnN0ZXhwciBTaGFkZXJCbG9iIGtDb252ZXJ0SW5kaXJlY3RMaW5l
TG9vcF9jb21wX3NoYWRlcnNbXSA9IHsKICAgICB7a0NvbnZlcnRJbmRpcmVjdExpbmVMb29wX2Nv
bXBfMDAwMDAwMDAsIHNpemVvZihrQ29udmVydEluZGlyZWN0TGluZUxvb3BfY29tcF8wMDAwMDAw
MCl9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4uZ25pIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9z
aGFkZXJzX2F1dG9nZW4uZ25pCmluZGV4IGUwN2VlNDVlN2ZmNzMyMjMwZjYwYTk2OGRmM2JhNjQ5
NGRmNGFkOWIuLjI0ZDAzZDRkNzBjNzExYTVmMTEzMjYxMTM1NGIyMTEyZGVmYzIyMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNf
YXV0b2dlbi5nbmkKQEAgLTEsNyArMSw3IEBACiAjIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVE
SVQuCiAjIEdlbmVyYXRlZCBieSBnZW5fdmtfaW50ZXJuYWxfc2hhZGVycy5weSB1c2luZyBkYXRh
IGZyb20gc2hhZGVycy9zcmMvKgogIwotIyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CiAjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAjCkBAIC01NSw2ICs1NSw3IEBAIGFuZ2xl
X3Z1bGthbl9pbnRlcm5hbF9zaGFkZXJzID0gWwogICAic2hhZGVycy9nZW4vQ29udmVydEluZGV4
LmNvbXAuMDAwMDAwMDMuaW5jIiwKICAgInNoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0
TGluZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMiLAogICAic2hhZGVycy9nZW4vQ29udmVydEluZGV4
SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAxLmluYyIsCisgICJzaGFkZXJzL2dlbi9Db252
ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDIuaW5jIiwKICAgInNoYWRlcnMv
Z2VuL0NvbnZlcnRJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDAuaW5jIiwKICAgInNoYWRl
cnMvZ2VuL0NvbnZlcnRWZXJ0ZXguY29tcC4wMDAwMDAwMC5pbmMiLAogICAic2hhZGVycy9nZW4v
Q29udmVydFZlcnRleC5jb21wLjAwMDAwMDAxLmluYyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3No
YWRlcnNfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4uaAppbmRleCA1YTc1M2Vi
OGQwN2Y2MjdmZmIxOWYxNWIyYWM0MGNkOThhMTRkMGE2Li41Njc4MTRhNGYyMjk4ZjcxYjBiYjE5
Njk3OTFmNDhmMGM4MGY2ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmgKQEAgLTEsNyArMSw3IEBACiAvLyBHRU5F
UkFURUQgRklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVkIGJ5IGdlbl92a19pbnRlcm5h
bF9zaGFkZXJzLnB5IHVzaW5nIGRhdGEgZnJvbSBzaGFkZXJzL3NyYy8qCiAvLwotLy8gQ29weXJp
Z2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgogLy8KQEAgLTgwLDExICs4MCwxMyBAQCBjb25zdGV4cHIgc2l6ZV90IGtBcnJheUxlbiA9IDB4
MDAwMDAwMDQ7CiAKIG5hbWVzcGFjZSBDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXAK
IHsKLWVudW0gZmxhZ3MKK2VudW0gSW5kaWNlc0JpdHNXaWR0aAogewotICAgIGtJczMyQml0ID0g
MHgwMDAwMDAwMSwKKyAgICBrSXM4Qml0cyAgPSAweDAwMDAwMDAwLAorICAgIGtJczE2Qml0cyA9
IDB4MDAwMDAwMDEsCisgICAga0lzMzJCaXRzID0gMHgwMDAwMDAwMiwKIH07Ci1jb25zdGV4cHIg
c2l6ZV90IGtBcnJheUxlbiA9IDB4MDAwMDAwMDI7Citjb25zdGV4cHIgc2l6ZV90IGtBcnJheUxl
biA9IDB4MDAwMDAwMDM7CiB9ICAvLyBuYW1lc3BhY2UgQ29udmVydEluZGV4SW5kaXJlY3RMaW5l
TG9vcF9jb21wCiAKIG5hbWVzcGFjZSBDb252ZXJ0SW5kaXJlY3RMaW5lTG9vcF9jb21wCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3ZrX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vdmtfdXRpbHMuY3BwCmluZGV4IDdhYzcyOTFkOGUwYTVlYzI2YmE5NWNh
NGIyYzk1MTlkZTFjN2E0ZmMuLjNiN2RiMTEzOTY0ODk1MGNlOWNmYjZjMzhiZTM3NTlmMzFhYjdj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vdmtfdXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfdXRpbHMuY3BwCkBAIC0xMSwyOSArMTEsMTAg
QEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vQ29tbWFuZEdyYXBoLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0NvbnRleHRWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5
VmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgot
Ci1uYW1lc3BhY2UKLXsKLVZrSW1hZ2VVc2FnZUZsYWdzIEdldFN0YWdpbmdCdWZmZXJVc2FnZUZs
YWdzKHJ4Ojp2azo6U3RhZ2luZ1VzYWdlIHVzYWdlKQotewotICAgIHN3aXRjaCAodXNhZ2UpCi0g
ICAgewotICAgICAgICBjYXNlIHJ4Ojp2azo6U3RhZ2luZ1VzYWdlOjpSZWFkOgotICAgICAgICAg
ICAgcmV0dXJuIFZLX0JVRkZFUl9VU0FHRV9UUkFOU0ZFUl9EU1RfQklUOwotICAgICAgICBjYXNl
IHJ4Ojp2azo6U3RhZ2luZ1VzYWdlOjpXcml0ZToKLSAgICAgICAgICAgIHJldHVybiBWS19CVUZG
RVJfVVNBR0VfVFJBTlNGRVJfU1JDX0JJVDsKLSAgICAgICAgY2FzZSByeDo6dms6OlN0YWdpbmdV
c2FnZTo6Qm90aDoKLSAgICAgICAgICAgIHJldHVybiAoVktfQlVGRkVSX1VTQUdFX1RSQU5TRkVS
X0RTVF9CSVQgfCBWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJfU1JDX0JJVCk7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotfQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmgiCiAKIG5hbWVzcGFjZSBhbmdsZQogewpAQCAt
NTIsNDggKzMzLDIyIEBAIGVnbDo6RXJyb3IgVG9FR0woUmVzdWx0IHJlc3VsdCwgcng6OkRpc3Bs
YXlWayAqZGlzcGxheVZrLCBFR0xpbnQgZXJyb3JDb2RlKQogCiBuYW1lc3BhY2UgcngKIHsKLS8v
IFVuaWZpZWQgbGF5ZXIgdGhhdCBpbmNsdWRlcyBmdWxsIHZhbGlkYXRpb24gbGF5ZXIgc3RhY2sK
LWNvbnN0IGNoYXIgKmdfVmtLaHJvbm9zVmFsaWRhdGlvbkxheWVyTmFtZSAgPSAiVktfTEFZRVJf
S0hST05PU192YWxpZGF0aW9uIjsKLWNvbnN0IGNoYXIgKmdfVmtTdGFuZGFyZFZhbGlkYXRpb25M
YXllck5hbWUgPSAiVktfTEFZRVJfTFVOQVJHX3N0YW5kYXJkX3ZhbGlkYXRpb24iOwotY29uc3Qg
Y2hhciAqZ19Wa1ZhbGlkYXRpb25MYXllck5hbWVzW10gICAgICA9IHsKLSAgICAiVktfTEFZRVJf
R09PR0xFX3RocmVhZGluZyIsICJWS19MQVlFUl9MVU5BUkdfcGFyYW1ldGVyX3ZhbGlkYXRpb24i
LAotICAgICJWS19MQVlFUl9MVU5BUkdfb2JqZWN0X3RyYWNrZXIiLCAiVktfTEFZRVJfTFVOQVJH
X2NvcmVfdmFsaWRhdGlvbiIsCi0gICAgIlZLX0xBWUVSX0dPT0dMRV91bmlxdWVfb2JqZWN0cyJ9
OwotCi1ib29sIEhhc1ZhbGlkYXRpb25MYXllcihjb25zdCBzdGQ6OnZlY3RvcjxWa0xheWVyUHJv
cGVydGllcz4gJmxheWVyUHJvcHMsIGNvbnN0IGNoYXIgKmxheWVyTmFtZSkKLXsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8gJmxheWVyUHJvcCA6IGxheWVyUHJvcHMpCi0gICAgewotICAgICAgICBpZiAo
c3RkOjpzdHJpbmcobGF5ZXJQcm9wLmxheWVyTmFtZSkgPT0gbGF5ZXJOYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotYm9vbCBIYXNLaHJvbm9zVmFsaWRhdGlvbkxheWVyKGNvbnN0IHN0ZDo6
dmVjdG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcykKLXsKLSAgICByZXR1cm4gSGFz
VmFsaWRhdGlvbkxheWVyKGxheWVyUHJvcHMsIGdfVmtLaHJvbm9zVmFsaWRhdGlvbkxheWVyTmFt
ZSk7Ci19Ci0KLWJvb2wgSGFzU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXIoY29uc3Qgc3RkOjp2ZWN0
b3I8VmtMYXllclByb3BlcnRpZXM+ICZsYXllclByb3BzKQorbmFtZXNwYWNlCiB7Ci0gICAgcmV0
dXJuIEhhc1ZhbGlkYXRpb25MYXllcihsYXllclByb3BzLCBnX1ZrU3RhbmRhcmRWYWxpZGF0aW9u
TGF5ZXJOYW1lKTsKLX0KLQotYm9vbCBIYXNWYWxpZGF0aW9uTGF5ZXJzKGNvbnN0IHN0ZDo6dmVj
dG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcykKK1ZrSW1hZ2VVc2FnZUZsYWdzIEdl
dFN0YWdpbmdCdWZmZXJVc2FnZUZsYWdzKHZrOjpTdGFnaW5nVXNhZ2UgdXNhZ2UpCiB7Ci0gICAg
Zm9yIChjb25zdCBjaGFyICpsYXllck5hbWUgOiBnX1ZrVmFsaWRhdGlvbkxheWVyTmFtZXMpCisg
ICAgc3dpdGNoICh1c2FnZSkKICAgICB7Ci0gICAgICAgIGlmICghSGFzVmFsaWRhdGlvbkxheWVy
KGxheWVyUHJvcHMsIGxheWVyTmFtZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQorICAgICAgICBjYXNlIHZrOjpTdGFnaW5nVXNhZ2U6OlJlYWQ6Cisg
ICAgICAgICAgICByZXR1cm4gVktfQlVGRkVSX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQ7CisgICAg
ICAgIGNhc2Ugdms6OlN0YWdpbmdVc2FnZTo6V3JpdGU6CisgICAgICAgICAgICByZXR1cm4gVktf
QlVGRkVSX1VTQUdFX1RSQU5TRkVSX1NSQ19CSVQ7CisgICAgICAgIGNhc2Ugdms6OlN0YWdpbmdV
c2FnZTo6Qm90aDoKKyAgICAgICAgICAgIHJldHVybiAoVktfQlVGRkVSX1VTQUdFX1RSQU5TRkVS
X0RTVF9CSVQgfCBWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJfU1JDX0JJVCk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgRmluZEFuZEFs
bG9jYXRlQ29tcGF0aWJsZU1lbW9yeSh2azo6Q29udGV4dCAqY29udGV4dCwKQEAgLTEwNCw2ICs1
OSwxMSBAQCBhbmdsZTo6UmVzdWx0IEZpbmRBbmRBbGxvY2F0ZUNvbXBhdGlibGVNZW1vcnkodms6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqZXh0cmFBbGxvY2F0aW9uSW5mbywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RGV2aWNlTWVtb3J5ICpkZXZpY2VN
ZW1vcnlPdXQpCiB7CisgICAgLy8gUGljayBhbiBhcmJpdHJhcnkgdmFsdWUgdG8gaW5pdGlhbGl6
ZSBub24temVybyBtZW1vcnkgZm9yIHNhbml0aXphdGlvbi4KKyAgICBjb25zdGV4cHIgaW50IGtO
b25aZXJvSW5pdFZhbHVlID0gNTU7CisKKyAgICBWa0RldmljZSBkZXZpY2UgPSBjb250ZXh0LT5n
ZXREZXZpY2UoKTsKKwogICAgIHVpbnQzMl90IG1lbW9yeVR5cGVJbmRleCA9IDA7CiAgICAgQU5H
TEVfVFJZKG1lbW9yeVByb3BlcnRpZXMuZmluZENvbXBhdGlibGVNZW1vcnlJbmRleChjb250ZXh0
LCBtZW1vcnlSZXF1aXJlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRNZW1vcnlQcm9wZXJ0eUZsYWdzLApAQCAt
MTE1LDcgKzc1LDIxIEBAIGFuZ2xlOjpSZXN1bHQgRmluZEFuZEFsbG9jYXRlQ29tcGF0aWJsZU1l
bW9yeSh2azo6Q29udGV4dCAqY29udGV4dCwKICAgICBhbGxvY0luZm8ubWVtb3J5VHlwZUluZGV4
ICAgICAgPSBtZW1vcnlUeXBlSW5kZXg7CiAgICAgYWxsb2NJbmZvLmFsbG9jYXRpb25TaXplICAg
ICAgID0gbWVtb3J5UmVxdWlyZW1lbnRzLnNpemU7CiAKLSAgICBBTkdMRV9WS19UUlkoY29udGV4
dCwgZGV2aWNlTWVtb3J5T3V0LT5hbGxvY2F0ZShjb250ZXh0LT5nZXREZXZpY2UoKSwgYWxsb2NJ
bmZvKSk7CisgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIGRldmljZU1lbW9yeU91dC0+YWxsb2Nh
dGUoZGV2aWNlLCBhbGxvY0luZm8pKTsKKworICAgIC8vIFdpcGUgbWVtb3J5IHRvIGFuIGludmFs
aWQgdmFsdWUgd2hlbiB0aGUgJ2FsbG9jYXRlTm9uWmVyb01lbW9yeScgZmVhdHVyZSBpcyBlbmFi
bGVkLiBUaGUKKyAgICAvLyBpbnZhbGlkIHZhbHVlcyBlbnN1cmVzIG91ciB0ZXN0aW5nIGRvZXNu
J3QgYXNzdW1lIHplcm8taW5pdGlhbGl6ZWQgbWVtb3J5LgorICAgIFJlbmRlcmVyVmsgKnJlbmRl
cmVyID0gY29udGV4dC0+Z2V0UmVuZGVyZXIoKTsKKyAgICBpZiAocmVuZGVyZXItPmdldEZlYXR1
cmVzKCkuYWxsb2NhdGVOb25aZXJvTWVtb3J5LmVuYWJsZWQpCisgICAgeworICAgICAgICBpZiAo
KCptZW1vcnlQcm9wZXJ0eUZsYWdzT3V0ICYgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJM
RV9CSVQpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENhbiBtYXAgdGhlIG1lbW9y
eS4KKyAgICAgICAgICAgIEFOR0xFX1RSWSh2azo6SW5pdE1hcHBhYmxlRGV2aWNlTWVtb3J5KGNv
bnRleHQsIGRldmljZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lbW9yeVJlcXVpcmVtZW50cy5zaXplLCBrTm9uWmVyb0luaXRW
YWx1ZSkpOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwogfQogCkBAIC0xNDMsNyArMTE3LDggQEAgYW5nbGU6OlJlc3VsdCBBbGxvY2F0ZUJ1
ZmZlck9ySW1hZ2VNZW1vcnkodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgKm1lbW9yeVBy
b3BlcnR5RmxhZ3NPdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpleHRyYUFsbG9jYXRpb25JbmZvLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVCAqYnVmZmVyT3JJbWFnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9yeU91
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpEZXZpY2VN
ZW1vcnkgKmRldmljZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqc2l6ZU91dCkKIHsKICAgICAvLyBDYWxsIGRyaXZlciB0
byBkZXRlcm1pbmUgbWVtb3J5IHJlcXVpcmVtZW50cy4KICAgICBWa01lbW9yeVJlcXVpcmVtZW50
cyBtZW1vcnlSZXF1aXJlbWVudHM7CkBAIC0xNTMsOSArMTI4LDU2IEBAIGFuZ2xlOjpSZXN1bHQg
QWxsb2NhdGVCdWZmZXJPckltYWdlTWVtb3J5KHZrOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICBjb250ZXh0LCByZXF1ZXN0ZWRNZW1vcnlQcm9wZXJ0eUZsYWdzLCBtZW1vcnlQcm9wZXJ0eUZs
YWdzT3V0LCBtZW1vcnlSZXF1aXJlbWVudHMsCiAgICAgICAgIGV4dHJhQWxsb2NhdGlvbkluZm8s
IGJ1ZmZlck9ySW1hZ2UsIGRldmljZU1lbW9yeU91dCkpOwogCisgICAgKnNpemVPdXQgPSBtZW1v
cnlSZXF1aXJlbWVudHMuc2l6ZTsKKwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKIH0KIAorLy8gVW5pZmllZCBsYXllciB0aGF0IGluY2x1ZGVzIGZ1bGwgdmFsaWRhdGlvbiBs
YXllciBzdGFjaworY29uc3RleHByIGNoYXIga1ZrS2hyb25vc1ZhbGlkYXRpb25MYXllck5hbWVb
XSAgPSAiVktfTEFZRVJfS0hST05PU192YWxpZGF0aW9uIjsKK2NvbnN0ZXhwciBjaGFyIGtWa1N0
YW5kYXJkVmFsaWRhdGlvbkxheWVyTmFtZVtdID0gIlZLX0xBWUVSX0xVTkFSR19zdGFuZGFyZF92
YWxpZGF0aW9uIjsKK2NvbnN0IGNoYXIgKmtWa1ZhbGlkYXRpb25MYXllck5hbWVzW10gICAgICAg
ICAgID0geworICAgICJWS19MQVlFUl9HT09HTEVfdGhyZWFkaW5nIiwgIlZLX0xBWUVSX0xVTkFS
R19wYXJhbWV0ZXJfdmFsaWRhdGlvbiIsCisgICAgIlZLX0xBWUVSX0xVTkFSR19vYmplY3RfdHJh
Y2tlciIsICJWS19MQVlFUl9MVU5BUkdfY29yZV92YWxpZGF0aW9uIiwKKyAgICAiVktfTEFZRVJf
R09PR0xFX3VuaXF1ZV9vYmplY3RzIn07CisKK2Jvb2wgSGFzVmFsaWRhdGlvbkxheWVyKGNvbnN0
IHN0ZDo6dmVjdG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcywgY29uc3QgY2hhciAq
bGF5ZXJOYW1lKQoreworICAgIGZvciAoY29uc3QgYXV0byAmbGF5ZXJQcm9wIDogbGF5ZXJQcm9w
cykKKyAgICB7CisgICAgICAgIGlmIChzdGQ6OnN0cmluZyhsYXllclByb3AubGF5ZXJOYW1lKSA9
PSBsYXllck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEhhc0tocm9ub3NWYWxp
ZGF0aW9uTGF5ZXIoY29uc3Qgc3RkOjp2ZWN0b3I8VmtMYXllclByb3BlcnRpZXM+ICZsYXllclBy
b3BzKQoreworICAgIHJldHVybiBIYXNWYWxpZGF0aW9uTGF5ZXIobGF5ZXJQcm9wcywga1ZrS2hy
b25vc1ZhbGlkYXRpb25MYXllck5hbWUpOworfQorCitib29sIEhhc1N0YW5kYXJkVmFsaWRhdGlv
bkxheWVyKGNvbnN0IHN0ZDo6dmVjdG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcykK
K3sKKyAgICByZXR1cm4gSGFzVmFsaWRhdGlvbkxheWVyKGxheWVyUHJvcHMsIGtWa1N0YW5kYXJk
VmFsaWRhdGlvbkxheWVyTmFtZSk7Cit9CisKK2Jvb2wgSGFzVmFsaWRhdGlvbkxheWVycyhjb25z
dCBzdGQ6OnZlY3RvcjxWa0xheWVyUHJvcGVydGllcz4gJmxheWVyUHJvcHMpCit7CisgICAgZm9y
IChjb25zdCBjaGFyICpsYXllck5hbWUgOiBrVmtWYWxpZGF0aW9uTGF5ZXJOYW1lcykKKyAgICB7
CisgICAgICAgIGlmICghSGFzVmFsaWRhdGlvbkxheWVyKGxheWVyUHJvcHMsIGxheWVyTmFtZSkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCiBjb25z
dCBjaGFyICpWdWxrYW5SZXN1bHRTdHJpbmcoVmtSZXN1bHQgcmVzdWx0KQogewogICAgIHN3aXRj
aCAocmVzdWx0KQpAQCAtMjI2LDE1ICsyNDgsMTUgQEAgYm9vbCBHZXRBdmFpbGFibGVWYWxpZGF0
aW9uTGF5ZXJzKGNvbnN0IHN0ZDo6dmVjdG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm8K
ICAgICAvLyBGYXZvciB1bmlmaWVkIEtocm9ub3MgbGF5ZXIsIGJ1dCBmYWxsYmFjayB0byBzdGFu
ZGFyZCB2YWxpZGF0aW9uCiAgICAgaWYgKEhhc0tocm9ub3NWYWxpZGF0aW9uTGF5ZXIobGF5ZXJQ
cm9wcykpCiAgICAgewotICAgICAgICBlbmFibGVkTGF5ZXJOYW1lcy0+cHVzaF9iYWNrKGdfVmtL
aHJvbm9zVmFsaWRhdGlvbkxheWVyTmFtZSk7CisgICAgICAgIGVuYWJsZWRMYXllck5hbWVzLT5w
dXNoX2JhY2soa1ZrS2hyb25vc1ZhbGlkYXRpb25MYXllck5hbWUpOwogICAgIH0KICAgICBlbHNl
IGlmIChIYXNTdGFuZGFyZFZhbGlkYXRpb25MYXllcihsYXllclByb3BzKSkKICAgICB7Ci0gICAg
ICAgIGVuYWJsZWRMYXllck5hbWVzLT5wdXNoX2JhY2soZ19Wa1N0YW5kYXJkVmFsaWRhdGlvbkxh
eWVyTmFtZSk7CisgICAgICAgIGVuYWJsZWRMYXllck5hbWVzLT5wdXNoX2JhY2soa1ZrU3RhbmRh
cmRWYWxpZGF0aW9uTGF5ZXJOYW1lKTsKICAgICB9CiAgICAgZWxzZSBpZiAoSGFzVmFsaWRhdGlv
bkxheWVycyhsYXllclByb3BzKSkKICAgICB7Ci0gICAgICAgIGZvciAoY29uc3QgY2hhciAqbGF5
ZXJOYW1lIDogZ19Wa1ZhbGlkYXRpb25MYXllck5hbWVzKQorICAgICAgICBmb3IgKGNvbnN0IGNo
YXIgKmxheWVyTmFtZSA6IGtWa1ZhbGlkYXRpb25MYXllck5hbWVzKQogICAgICAgICB7CiAgICAg
ICAgICAgICBlbmFibGVkTGF5ZXJOYW1lcy0+cHVzaF9iYWNrKGxheWVyTmFtZSk7CiAgICAgICAg
IH0KQEAgLTMyOSw2ICszNTEsMjkgQEAgYW5nbGU6OlJlc3VsdCBNZW1vcnlQcm9wZXJ0aWVzOjpm
aW5kQ29tcGF0aWJsZU1lbW9yeUluZGV4KAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gV2Ug
ZGlkIG5vdCBmaW5kIGEgY29tcGF0aWJsZSBtZW1vcnkgdHlwZSwgdGhlIFZ1bGthbiBzcGVjIHNh
eXMgdGhlIGZvbGxvd2luZyAtCisgICAgLy8gICAgIFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25l
IG1lbW9yeSB0eXBlIHdpdGggYm90aCB0aGUKKyAgICAvLyAgICAgVktfTUVNT1JZX1BST1BFUlRZ
X0hPU1RfVklTSUJMRV9CSVQgYW5kIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJ
VAorICAgIC8vICAgICBiaXRzIHNldCBpbiBpdHMgcHJvcGVydHlGbGFncworICAgIGNvbnN0ZXhw
ciBWa01lbW9yeVByb3BlcnR5RmxhZ3MgZmFsbGJhY2tNZW1vcnlQcm9wZXJ0eUZsYWdzID0KKyAg
ICAgICAgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJMRV9CSVQgfCBWS19NRU1PUllfUFJP
UEVSVFlfSE9TVF9DT0hFUkVOVF9CSVQ7CisKKyAgICAvLyBJZiB0aGUgY2FsbGVyIHdhbnRlZCBh
IGhvc3QgdmlzaWJsZSBtZW1vcnksIGp1c3QgcmV0dXJuIHRoZSBtZW1vcnkgaW5kZXgKKyAgICAv
LyB3aXRoIHRoZSBmYWxsYmFjayBtZW1vcnkgZmxhZ3MuCisgICAgaWYgKHJlcXVlc3RlZE1lbW9y
eVByb3BlcnR5RmxhZ3MgJiBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCkKKyAg
ICB7CisgICAgICAgIGZvciAoc2l6ZV90IG1lbW9yeUluZGV4IDogYW5nbGU6OkJpdFNldDMyPDMy
PihtZW1vcnlSZXF1aXJlbWVudHMubWVtb3J5VHlwZUJpdHMpKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoKG1NZW1vcnlQcm9wZXJ0aWVzLm1lbW9yeVR5cGVzW21lbW9yeUluZGV4XS5wcm9w
ZXJ0eUZsYWdzICYKKyAgICAgICAgICAgICAgICAgZmFsbGJhY2tNZW1vcnlQcm9wZXJ0eUZsYWdz
KSA9PSBmYWxsYmFja01lbW9yeVByb3BlcnR5RmxhZ3MpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgKm1lbW9yeVByb3BlcnR5RmxhZ3NPdXQgPSBtTWVtb3J5UHJvcGVydGllcy5tZW1v
cnlUeXBlc1ttZW1vcnlJbmRleF0ucHJvcGVydHlGbGFnczsKKyAgICAgICAgICAgICAgICAqdHlw
ZUluZGV4T3V0ICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtZW1vcnlJbmRleCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogQWRkIGVy
cm9yIG1lc3NhZ2UgdG8gZXJyb3IuCiAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoVktfRVJST1Jf
SU5DT01QQVRJQkxFX0RSSVZFUiwgX19GSUxFX18sIEFOR0xFX0ZVTkNUSU9OLCBfX0xJTkVfXyk7
CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CkBAIC0zNDQsMTYgKzM4OSw4IEBAIHZv
aWQgU3RhZ2luZ0J1ZmZlcjo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCiAgICAgbVNpemUgPSAw
OwogfQogCi1hbmdsZTo6UmVzdWx0IFN0YWdpbmdCdWZmZXI6OmluaXQoQ29udGV4dFZrICpjb250
ZXh0VmssIFZrRGV2aWNlU2l6ZSBzaXplLCBTdGFnaW5nVXNhZ2UgdXNhZ2UpCithbmdsZTo6UmVz
dWx0IFN0YWdpbmdCdWZmZXI6OmluaXQoQ29udGV4dCAqY29udGV4dCwgVmtEZXZpY2VTaXplIHNp
emUsIFN0YWdpbmdVc2FnZSB1c2FnZSkKIHsKLSAgICAvLyBUT0RPOiBSZW1vdmUgd2l0aCBhbmds
ZWJ1Zy5jb20vMjE2MjogVnVsa2FuOiBJbXBsZW1lbnQgZGV2aWNlIG1lbW9yeSBzdWItYWxsb2Nh
dGlvbgotICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgdG9vIG1hbnkgcmVzb3VyY2VzIGFsbG9jYXRl
ZCBhbHJlYWR5IGFuZCBuZWVkIHRvIGZyZWUgc29tZSBiZWZvcmUgYWxsb2NhdGluZwotICAgIC8v
IG1vcmUgYW5kIChwb3NzaWJseSkgZXhjZWVkaW5nIHRoZSBkZXZpY2UncyBsaW1pdHMuCi0gICAg
aWYgKGNvbnRleHRWay0+c2hvdWxkRmx1c2goKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShj
b250ZXh0VmstPmZsdXNoSW1wbChudWxscHRyKSk7Ci0gICAgfQotCiAgICAgVmtCdWZmZXJDcmVh
dGVJbmZvIGNyZWF0ZUluZm8gICAgPSB7fTsKICAgICBjcmVhdGVJbmZvLnNUeXBlICAgICAgICAg
ICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZFUl9DUkVBVEVfSU5GTzsKICAgICBjcmVh
dGVJbmZvLmZsYWdzICAgICAgICAgICAgICAgICA9IDA7CkBAIC0zNjYsOSArNDAzLDExIEBAIGFu
Z2xlOjpSZXN1bHQgU3RhZ2luZ0J1ZmZlcjo6aW5pdChDb250ZXh0VmsgKmNvbnRleHRWaywgVmtE
ZXZpY2VTaXplIHNpemUsIFN0YWdpCiAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIGZsYWdzID0K
ICAgICAgICAgKFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUIHwgVktfTUVNT1JZ
X1BST1BFUlRZX0hPU1RfQ09IRVJFTlRfQklUKTsKIAotICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0
VmssIG1CdWZmZXIuaW5pdChjb250ZXh0VmstPmdldERldmljZSgpLCBjcmVhdGVJbmZvKSk7Cisg
ICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIG1CdWZmZXIuaW5pdChjb250ZXh0LT5nZXREZXZpY2Uo
KSwgY3JlYXRlSW5mbykpOwogICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBmbGFnc091dCA9IDA7
Ci0gICAgQU5HTEVfVFJZKEFsbG9jYXRlQnVmZmVyTWVtb3J5KGNvbnRleHRWaywgZmxhZ3MsICZm
bGFnc091dCwgbnVsbHB0ciwgJm1CdWZmZXIsICZtRGV2aWNlTWVtb3J5KSk7CisgICAgVmtEZXZp
Y2VTaXplIHNpemVJZ25vcmVkOworICAgIEFOR0xFX1RSWShBbGxvY2F0ZUJ1ZmZlck1lbW9yeShj
b250ZXh0LCBmbGFncywgJmZsYWdzT3V0LCBudWxscHRyLCAmbUJ1ZmZlciwgJm1EZXZpY2VNZW1v
cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplSWdub3JlZCkpOwog
ICAgIG1TaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKTsKICAgICByZXR1cm4gYW5nbGU6
OlJlc3VsdDo6Q29udGludWU7CiB9CkBAIC0zNzksMjcgKzQxOCw2MyBAQCB2b2lkIFN0YWdpbmdC
dWZmZXI6OnJlbGVhc2UoQ29udGV4dFZrICpjb250ZXh0VmspCiAgICAgY29udGV4dFZrLT5hZGRH
YXJiYWdlKCZtRGV2aWNlTWVtb3J5KTsKIH0KIAordm9pZCBTdGFnaW5nQnVmZmVyOjpjb2xsZWN0
R2FyYmFnZShSZW5kZXJlclZrICpyZW5kZXJlciwgU2VyaWFsIHNlcmlhbCkKK3sKKyAgICB2azo6
R2FyYmFnZUxpc3QgZ2FyYmFnZUxpc3Q7CisgICAgZ2FyYmFnZUxpc3QuZW1wbGFjZV9iYWNrKHZr
OjpHZXRHYXJiYWdlKCZtQnVmZmVyKSk7CisgICAgZ2FyYmFnZUxpc3QuZW1wbGFjZV9iYWNrKHZr
OjpHZXRHYXJiYWdlKCZtRGV2aWNlTWVtb3J5KSk7CisKKyAgICB2azo6U2hhcmVkUmVzb3VyY2VV
c2Ugc2hhcmVkVXNlOworICAgIHNoYXJlZFVzZS5pbml0KCk7CisgICAgc2hhcmVkVXNlLnVwZGF0
ZVNlcmlhbE9uZU9mZihzZXJpYWwpOworICAgIHJlbmRlcmVyLT5jb2xsZWN0R2FyYmFnZShzdGQ6
Om1vdmUoc2hhcmVkVXNlKSwgc3RkOjptb3ZlKGdhcmJhZ2VMaXN0KSk7Cit9CisKK2FuZ2xlOjpS
ZXN1bHQgSW5pdE1hcHBhYmxlRGV2aWNlTWVtb3J5KENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKQor
eworICAgIFZrRGV2aWNlIGRldmljZSA9IGNvbnRleHQtPmdldERldmljZSgpOworCisgICAgdWlu
dDhfdCAqbWFwUG9pbnRlcjsKKyAgICBBTkdMRV9WS19UUlkoY29udGV4dCwgZGV2aWNlTWVtb3J5
LT5tYXAoZGV2aWNlLCAwLCBWS19XSE9MRV9TSVpFLCAwLCAmbWFwUG9pbnRlcikpOworICAgIG1l
bXNldChtYXBQb2ludGVyLCB2YWx1ZSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7CisKKyAg
ICBWa01hcHBlZE1lbW9yeVJhbmdlIG1hcHBlZFJhbmdlID0ge307CisgICAgbWFwcGVkUmFuZ2Uu
c1R5cGUgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01BUFBFRF9NRU1PUllfUkFO
R0U7CisgICAgbWFwcGVkUmFuZ2UubWVtb3J5ICAgICAgICAgICAgICA9IGRldmljZU1lbW9yeS0+
Z2V0SGFuZGxlKCk7CisgICAgbWFwcGVkUmFuZ2Uuc2l6ZSAgICAgICAgICAgICAgICA9IFZLX1dI
T0xFX1NJWkU7CisgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIHZrRmx1c2hNYXBwZWRNZW1vcnlS
YW5nZXMoZGV2aWNlLCAxLCAmbWFwcGVkUmFuZ2UpKTsKKworICAgIGRldmljZU1lbW9yeS0+dW5t
YXAoZGV2aWNlKTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwog
YW5nbGU6OlJlc3VsdCBBbGxvY2F0ZUJ1ZmZlck1lbW9yeSh2azo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdz
IHJlcXVlc3RlZE1lbW9yeVByb3BlcnR5RmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyAqbWVtb3J5UHJvcGVydHlGbGFnc091dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZXh0cmFBbGxv
Y2F0aW9uSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICpi
dWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZU1lbW9yeSAq
ZGV2aWNlTWVtb3J5T3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZp
Y2VNZW1vcnkgKmRldmljZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtEZXZpY2VTaXplICpzaXplT3V0KQogewogICAgIHJldHVybiBBbGxvY2F0ZUJ1ZmZl
ck9ySW1hZ2VNZW1vcnkoY29udGV4dCwgcmVxdWVzdGVkTWVtb3J5UHJvcGVydHlGbGFncywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeVByb3BlcnR5RmxhZ3NP
dXQsIGV4dHJhQWxsb2NhdGlvbkluZm8sIGJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZU1lbW9yeU91dCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VNZW1vcnlPdXQsIHNpemVPdXQpOwogfQogCiBhbmdsZTo6
UmVzdWx0IEFsbG9jYXRlSW1hZ2VNZW1vcnkodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbW9yeVBy
b3BlcnR5RmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqZXh0cmFBbGxvY2F0aW9uSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbWFnZSAqaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNl
TWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmtEZXZpY2VTaXplICpzaXplT3V0KQogewogICAgIFZrTWVtb3J5UHJvcGVy
dHlGbGFncyBtZW1vcnlQcm9wZXJ0eUZsYWdzT3V0ID0gMDsKICAgICByZXR1cm4gQWxsb2NhdGVC
dWZmZXJPckltYWdlTWVtb3J5KGNvbnRleHQsIG1lbW9yeVByb3BlcnR5RmxhZ3MsICZtZW1vcnlQ
cm9wZXJ0eUZsYWdzT3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0cmFBbGxvY2F0aW9uSW5mbywgaW1hZ2UsIGRldmljZU1lbW9yeU91dCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUFsbG9jYXRpb25JbmZvLCBpbWFnZSwg
ZGV2aWNlTWVtb3J5T3V0LCBzaXplT3V0KTsKIH0KIAogYW5nbGU6OlJlc3VsdCBBbGxvY2F0ZUlt
YWdlTWVtb3J5V2l0aFJlcXVpcmVtZW50cyh2azo6Q29udGV4dCAqY29udGV4dCwKQEAgLTU0Niw2
ICs2MjEsMjUgQEAgdm9pZCBHYXJiYWdlT2JqZWN0OjpkZXN0cm95KFZrRGV2aWNlIGRldmljZSkK
ICAgICB9CiB9CiAKK3ZvaWQgTWFrZURlYnVnVXRpbHNMYWJlbChHTGVudW0gc291cmNlLCBjb25z
dCBjaGFyICptYXJrZXIsIFZrRGVidWdVdGlsc0xhYmVsRVhUICpsYWJlbCkKK3sKKyAgICBzdGF0
aWMgY29uc3RleHByIGFuZ2xlOjpDb2xvckYga0xhYmVsQ29sb3JzWzZdID0geworICAgICAgICBh
bmdsZTo6Q29sb3JGKDEuMGYsIDAuNWYsIDAuNWYsIDEuMGYpLCAgLy8gREVCVUdfU09VUkNFX0FQ
SQorICAgICAgICBhbmdsZTo6Q29sb3JGKDAuNWYsIDEuMGYsIDAuNWYsIDEuMGYpLCAgLy8gREVC
VUdfU09VUkNFX1dJTkRPV19TWVNURU0KKyAgICAgICAgYW5nbGU6OkNvbG9yRigwLjVmLCAwLjVm
LCAxLjBmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIKKyAgICAgICAg
YW5nbGU6OkNvbG9yRigwLjdmLCAwLjdmLCAwLjdmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJDRV9U
SElSRF9QQVJUWQorICAgICAgICBhbmdsZTo6Q29sb3JGKDAuNWYsIDAuOGYsIDAuOWYsIDEuMGYp
LCAgLy8gREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OCisgICAgICAgIGFuZ2xlOjpDb2xvckYoMC45
ZiwgMC44ZiwgMC41ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfT1RIRVIKKyAgICB9OworCisg
ICAgaW50IGNvbG9ySW5kZXggPSBzb3VyY2UgLSBHTF9ERUJVR19TT1VSQ0VfQVBJOworICAgIEFT
U0VSVChjb2xvckluZGV4ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2xvckluZGV4KSA8
IEFycmF5U2l6ZShrTGFiZWxDb2xvcnMpKTsKKworICAgIGxhYmVsLT5zVHlwZSAgICAgID0gVktf
U1RSVUNUVVJFX1RZUEVfREVCVUdfVVRJTFNfTEFCRUxfRVhUOworICAgIGxhYmVsLT5wTmV4dCAg
ICAgID0gbnVsbHB0cjsKKyAgICBsYWJlbC0+cExhYmVsTmFtZSA9IG1hcmtlcjsKKyAgICBrTGFi
ZWxDb2xvcnNbY29sb3JJbmRleF0ud3JpdGVEYXRhKGxhYmVsLT5jb2xvcik7Cit9CiB9ICAvLyBu
YW1lc3BhY2UgdmsKIAogbmFtZXNwYWNlIGdsX3ZrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3V0aWxzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3V0aWxz
LmgKaW5kZXggMmFhMjQ1NzdiMzM4ZjlhZGY5YWU5NmExN2RkZGI1YWEwNTNjOTMxNC4uYmQ2MWQ5
NjI0YWJiZjZiZjYzMmJhNWU1NmY2ODQzNDI3OTU2N2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a191dGlscy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
dmtfdXRpbHMuaApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3NlcmlhbF91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZWNv
bmRhcnlDb21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3ZrX3dyYXBwZXIuaCIKKyNpbmNsdWRlICJ2dWxrYW4vdnVsa2FuX2Z1Y2hzaWFfZXh0LmgiCiAK
ICNkZWZpbmUgQU5HTEVfR0xfT0JKRUNUU19YKFBST0MpIFwKICAgICBQUk9DKEJ1ZmZlcikgICAg
ICAgICAgICAgICAgIFwKQEAgLTI4MCw4ICsyODEsOCBAQCB1c2luZyBHYXJiYWdlTGlzdCA9IHN0
ZDo6dmVjdG9yPEdhcmJhZ2VPYmplY3Q+OwogLy8gQSBsaXN0IG9mIGdhcmJhZ2Ugb2JqZWN0cyBh
bmQgdGhlIGFzc29jaWF0ZWQgc2VyaWFsIGFmdGVyIHdoaWNoIHRoZSBvYmplY3RzIGNhbiBiZSBk
ZXN0cm95ZWQuCiB1c2luZyBHYXJiYWdlQW5kU2VyaWFsID0gT2JqZWN0QW5kU2VyaWFsPEdhcmJh
Z2VMaXN0PjsKIAotLy8gSG91c2VzIG11bHRpcGxlIGxpc3RzIG9mIGdhcmJhZ2Ugb2JqZWN0cy4g
RWFjaCBzdWItbGlzdCBoYXMgYSBkaWZmZXJlbnQgbGlmZXRpbWUuIFRoZXkgc2hvdWxkCi0vLyBi
ZSBzb3J0ZWQgc3VjaCB0aGF0IGxhdGVyLWxpdmluZyBnYXJiYWdlIGlzIG9yZGVyZWQgbGF0ZXIg
aW4gdGhlIGxpc3QuCisvLyBIb3VzZXMgbXVsdGlwbGUgbGlzdHMgb2YgZ2FyYmFnZSBvYmplY3Rz
LiBFYWNoIHN1Yi1saXN0IGhhcyBhIGRpZmZlcmVudCBsaWZldGltZS4gVGhleSBzaG91bGQgYmUK
Ky8vIHNvcnRlZCBzdWNoIHRoYXQgbGF0ZXItbGl2aW5nIGdhcmJhZ2UgaXMgb3JkZXJlZCBsYXRl
ciBpbiB0aGUgbGlzdC4KIHVzaW5nIEdhcmJhZ2VRdWV1ZSA9IHN0ZDo6dmVjdG9yPEdhcmJhZ2VB
bmRTZXJpYWw+OwogCiBjbGFzcyBNZW1vcnlQcm9wZXJ0aWVzIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCkBAIC0zMDcsOSArMzA4LDEwIEBAIGNsYXNzIFN0YWdpbmdCdWZmZXIgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKICAgcHVibGljOgogICAgIFN0YWdpbmdCdWZmZXIoKTsKICAgICB2
b2lkIHJlbGVhc2UoQ29udGV4dFZrICpjb250ZXh0VmspOworICAgIHZvaWQgY29sbGVjdEdhcmJh
Z2UoUmVuZGVyZXJWayAqcmVuZGVyZXIsIFNlcmlhbCBzZXJpYWwpOwogICAgIHZvaWQgZGVzdHJv
eShWa0RldmljZSBkZXZpY2UpOwogCi0gICAgYW5nbGU6OlJlc3VsdCBpbml0KENvbnRleHRWayAq
Y29udGV4dCwgVmtEZXZpY2VTaXplIHNpemUsIFN0YWdpbmdVc2FnZSB1c2FnZSk7CisgICAgYW5n
bGU6OlJlc3VsdCBpbml0KENvbnRleHQgKmNvbnRleHQsIFZrRGV2aWNlU2l6ZSBzaXplLCBTdGFn
aW5nVXNhZ2UgdXNhZ2UpOwogCiAgICAgQnVmZmVyICZnZXRCdWZmZXIoKSB7IHJldHVybiBtQnVm
ZmVyOyB9CiAgICAgY29uc3QgQnVmZmVyICZnZXRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtQnVm
ZmVyOyB9CkBAIC0zMjMsMTggKzMyNSwyNiBAQCBjbGFzcyBTdGFnaW5nQnVmZmVyIGZpbmFsIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgc2l6ZV90IG1TaXplOwogfTsKIAorYW5nbGU6OlJlc3Vs
dCBJbml0TWFwcGFibGVEZXZpY2VNZW1vcnkodms6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RGV2aWNlTWVtb3J5ICpkZXZpY2VN
ZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNp
emUgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1
ZSk7CisKIGFuZ2xlOjpSZXN1bHQgQWxsb2NhdGVCdWZmZXJNZW1vcnkoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZs
YWdzIHJlcXVlc3RlZE1lbW9yeVByb3BlcnR5RmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyAqbWVtb3J5UHJvcGVydHlGbGFnc091
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZXh0cmFB
bGxvY2F0aW9uSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
ICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZU1lbW9y
eSAqZGV2aWNlTWVtb3J5T3V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqc2l6ZU91dCk7CiAKIGFuZ2xlOjpSZXN1bHQgQWxsb2Nh
dGVJbWFnZU1lbW9yeShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1vcnlQcm9wZXJ0eUZsYWdzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmV4dHJhQWxsb2NhdGlv
bkluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UgKmltYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZU1lbW9yeSAqZGV2aWNlTWVt
b3J5T3V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VNZW1vcnkg
KmRldmljZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rl
dmljZVNpemUgKnNpemVPdXQpOworCiBhbmdsZTo6UmVzdWx0IEFsbG9jYXRlSW1hZ2VNZW1vcnlX
aXRoUmVxdWlyZW1lbnRzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1vcnlQ
cm9wZXJ0eUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWa01lbW9yeVJlcXVpcmVtZW50cyAmbWVtb3J5UmVxdWlyZW1lbnRzLApA
QCAtNjE0LDYgKzYyNCw3IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRCaXRTZXQpID09IHNpemVvZih1aW50MzJfdCksICJVbmV4cGVjCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIHVzaW5nIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRNYXAgPSBhbmdsZTo6UGFja2Vk
RW51bU1hcDxzaDo6dms6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRJZCwgVD47CiAKK3ZvaWQgTWFr
ZURlYnVnVXRpbHNMYWJlbChHTGVudW0gc291cmNlLCBjb25zdCBjaGFyICptYXJrZXIsIFZrRGVi
dWdVdGlsc0xhYmVsRVhUICpsYWJlbCk7CiB9ICAvLyBuYW1lc3BhY2UgdmsKIAogbmFtZXNwYWNl
IGdsX3ZrCkBAIC02MjksMTIgKzY0MCw2IEBAIFZrU2FtcGxlQ291bnRGbGFnQml0cyBHZXRTYW1w
bGVzKEdMaW50IHNhbXBsZUNvdW50KTsKIFZrQ29tcG9uZW50U3dpenpsZSBHZXRTd2l6emxlKGNv
bnN0IEdMZW51bSBzd2l6emxlKTsKIFZrQ29tcGFyZU9wIEdldENvbXBhcmVPcChjb25zdCBHTGVu
dW0gY29tcGFyZUZ1bmMpOwogCi1jb25zdGV4cHIgYW5nbGU6OlBhY2tlZEVudW1NYXA8Z2w6OkRy
YXdFbGVtZW50c1R5cGUsIFZrSW5kZXhUeXBlPiBrSW5kZXhUeXBlTWFwID0gewotICAgIHtnbDo6
RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRCeXRlLCBWS19JTkRFWF9UWVBFX1VJTlQxNn0sCi0g
ICAge2dsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNpZ25lZFNob3J0LCBWS19JTkRFWF9UWVBFX1VJ
TlQxNn0sCi0gICAge2dsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNpZ25lZEludCwgVktfSU5ERVhf
VFlQRV9VSU5UMzJ9LAotfTsKLQogY29uc3RleHByIGdsOjpTaGFkZXJNYXA8VmtTaGFkZXJTdGFn
ZUZsYWdCaXRzPiBrU2hhZGVyU3RhZ2VNYXAgPSB7CiAgICAge2dsOjpTaGFkZXJUeXBlOjpWZXJ0
ZXgsIFZLX1NIQURFUl9TVEFHRV9WRVJURVhfQklUfSwKICAgICB7Z2w6OlNoYWRlclR5cGU6OkZy
YWdtZW50LCBWS19TSEFERVJfU1RBR0VfRlJBR01FTlRfQklUfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfd3JhcHBl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi92a193cmFwcGVyLmgKaW5kZXggZmU5OGI1YjJiNTk3ZjI2NWZmMWVkMDQ3ZDEzYmJlYTBlOTFk
YmU3Yy4uZWNiNmY1ODFhNzY2MzZkYThhZTMxMWM1MTllYmQ0NmYwMTA3ZGU0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92
a193cmFwcGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi92a193cmFwcGVyLmgKQEAgLTEzMSw2ICsxMzEsOSBAQCBjbGFzcyBDb21t
YW5kUG9vbCBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PENvbW1hbmRQb29sLCBWa0NvbW1h
bmRQb29sPgogCiAgICAgdm9pZCBkZXN0cm95KFZrRGV2aWNlIGRldmljZSk7CiAgICAgVmtSZXN1
bHQgcmVzZXQoVmtEZXZpY2UgZGV2aWNlLCBWa0NvbW1hbmRQb29sUmVzZXRGbGFncyBmbGFncyk7
CisgICAgdm9pZCBmcmVlQ29tbWFuZEJ1ZmZlcnMoVmtEZXZpY2UgZGV2aWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNvbW1hbmRCdWZmZXJDb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0NvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXJz
KTsKIAogICAgIFZrUmVzdWx0IGluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0NvbW1hbmRQ
b29sQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbyk7CiB9OwpAQCAtMTg1LDcgKzE4OCw3IEBAIGNsYXNz
IENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxDb21tYW5kQnVmZmVyLCBWa0Nv
bW1hbmRCdWZmZXI+CiAKICAgICBWa1Jlc3VsdCBiZWdpbihjb25zdCBWa0NvbW1hbmRCdWZmZXJC
ZWdpbkluZm8gJmluZm8pOwogCi0gICAgdm9pZCBiZWdpblF1ZXJ5KFZrUXVlcnlQb29sIHF1ZXJ5
UG9vbCwgdWludDMyX3QgcXVlcnksIFZrUXVlcnlDb250cm9sRmxhZ3MgZmxhZ3MpOworICAgIHZv
aWQgYmVnaW5RdWVyeShjb25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwgdWludDMyX3QgcXVlcnks
IFZrUXVlcnlDb250cm9sRmxhZ3MgZmxhZ3MpOwogCiAgICAgdm9pZCBiZWdpblJlbmRlclBhc3Mo
Y29uc3QgVmtSZW5kZXJQYXNzQmVnaW5JbmZvICZiZWdpbkluZm8sIFZrU3VicGFzc0NvbnRlbnRz
IHN1YnBhc3NDb250ZW50cyk7CiAKQEAgLTI5MSw3ICsyOTQsNyBAQCBjbGFzcyBDb21tYW5kQnVm
ZmVyIDogcHVibGljIFdyYXBwZWRPYmplY3Q8Q29tbWFuZEJ1ZmZlciwgVmtDb21tYW5kQnVmZmVy
PgogICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0cmlkZSk7CiAKICAgICBWa1Jlc3Vs
dCBlbmQoKTsKLSAgICB2b2lkIGVuZFF1ZXJ5KFZrUXVlcnlQb29sIHF1ZXJ5UG9vbCwgdWludDMy
X3QgcXVlcnkpOworICAgIHZvaWQgZW5kUXVlcnkoY29uc3QgUXVlcnlQb29sICZxdWVyeVBvb2ws
IHVpbnQzMl90IHF1ZXJ5KTsKICAgICB2b2lkIGVuZFJlbmRlclBhc3MoKTsKICAgICB2b2lkIGV4
ZWN1dGVDb21tYW5kcyh1aW50MzJfdCBjb21tYW5kQnVmZmVyQ291bnQsIGNvbnN0IENvbW1hbmRC
dWZmZXIgKmNvbW1hbmRCdWZmZXJzKTsKIApAQCAtMzEwLDcgKzMxMyw3IEBAIGNsYXNzIENvbW1h
bmRCdWZmZXIgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxDb21tYW5kQnVmZmVyLCBWa0NvbW1hbmRC
dWZmZXI+CiAKICAgICB2b2lkIGltYWdlQmFycmllcihWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNT
dGFnZU1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZHN0
U3RhZ2VNYXNrLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrSW1hZ2VNZW1vcnlCYXJy
aWVyICppbWFnZU1lbW9yeUJhcnJpZXIpOworICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZr
SW1hZ2VNZW1vcnlCYXJyaWVyICZpbWFnZU1lbW9yeUJhcnJpZXIpOwogCiAgICAgdm9pZCBtZW1v
cnlCYXJyaWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKICAgICAgICAgICAg
ICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZHN0U3RhZ2VNYXNrLApAQCAtMzM1LDcg
KzMzOCw3IEBAIGNsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxDb21t
YW5kQnVmZmVyLCBWa0NvbW1hbmRCdWZmZXI+CiAgICAgdm9pZCBzZXRFdmVudChWa0V2ZW50IGV2
ZW50LCBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzdGFnZU1hc2spOwogICAgIFZrUmVzdWx0IHJlc2V0
KCk7CiAgICAgdm9pZCByZXNldEV2ZW50KFZrRXZlbnQgZXZlbnQsIFZrUGlwZWxpbmVTdGFnZUZs
YWdzIHN0YWdlTWFzayk7Ci0gICAgdm9pZCByZXNldFF1ZXJ5UG9vbChWa1F1ZXJ5UG9vbCBxdWVy
eVBvb2wsIHVpbnQzMl90IGZpcnN0UXVlcnksIHVpbnQzMl90IHF1ZXJ5Q291bnQpOworICAgIHZv
aWQgcmVzZXRRdWVyeVBvb2woY29uc3QgUXVlcnlQb29sICZxdWVyeVBvb2wsIHVpbnQzMl90IGZp
cnN0UXVlcnksIHVpbnQzMl90IHF1ZXJ5Q291bnQpOwogICAgIHZvaWQgcmVzb2x2ZUltYWdlKGNv
bnN0IEltYWdlICZzcmNJbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlTGF5b3V0
IHNyY0ltYWdlTGF5b3V0LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEltYWdlICZkc3RJ
bWFnZSwKQEAgLTM1NCw4ICszNTcsMjggQEAgY2xhc3MgQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBX
cmFwcGVkT2JqZWN0PENvbW1hbmRCdWZmZXIsIFZrQ29tbWFuZEJ1ZmZlcj4KICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgKmltYWdlTWVtb3J5QmFycmllcnMp
OwogCiAgICAgdm9pZCB3cml0ZVRpbWVzdGFtcChWa1BpcGVsaW5lU3RhZ2VGbGFnQml0cyBwaXBl
bGluZVN0YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgVmtRdWVyeVBvb2wgcXVlcnlQb29s
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVlcnlQb29sICZxdWVyeVBvb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBxdWVyeSk7CisKKyAgICAvLyBWS19FWFRf
dHJhbnNmb3JtX2ZlZWRiYWNrCisgICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhUKHVp
bnQzMl90IGZpcnN0Q291bnRlckJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgY291bnRlckJ1ZmZlckNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRlckJ1ZmZlcnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrRGV2aWNlU2l6ZSAqY291bnRlckJ1ZmZl
ck9mZnNldHMpOworICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQodWludDMyX3QgZmly
c3RDb3VudGVyQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgY291bnRlckJ1ZmZlckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVmtCdWZmZXIgKmNvdW50ZXJCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmtEZXZpY2VTaXplICpjb3VudGVyQnVmZmVyT2Zmc2V0cyk7CisgICAg
dm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUKHVpbnQzMl90IGZpcnN0QmluZGlu
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmlu
ZGluZ0NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWa0J1ZmZlciAqYnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVmtEZXZpY2VTaXplICpvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZVNpemUgKnNpemVzKTsKKworICAgIC8v
IFZLX0VYVF9kZWJ1Z191dGlscworICAgIHZvaWQgYmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQoY29u
c3QgVmtEZWJ1Z1V0aWxzTGFiZWxFWFQgJmxhYmVsSW5mbyk7CisgICAgdm9pZCBlbmREZWJ1Z1V0
aWxzTGFiZWxFWFQoKTsKKyAgICB2b2lkIGluc2VydERlYnVnVXRpbHNMYWJlbEVYVChjb25zdCBW
a0RlYnVnVXRpbHNMYWJlbEVYVCAmbGFiZWxJbmZvKTsKIH07CiB9ICAvLyBuYW1lc3BhY2UgcHJp
dgogCkBAIC01ODksNiArNjEyLDE0IEBAIEFOR0xFX0lOTElORSBWa1Jlc3VsdCBDb21tYW5kUG9v
bDo6cmVzZXQoVmtEZXZpY2UgZGV2aWNlLCBWa0NvbW1hbmRQb29sUmVzZXRGbGFnCiAgICAgcmV0
dXJuIHZrUmVzZXRDb21tYW5kUG9vbChkZXZpY2UsIG1IYW5kbGUsIGZsYWdzKTsKIH0KIAorQU5H
TEVfSU5MSU5FIHZvaWQgQ29tbWFuZFBvb2w6OmZyZWVDb21tYW5kQnVmZmVycyhWa0RldmljZSBk
ZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGNvbW1hbmRCdWZmZXJDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtDb21tYW5kQnVmZmVyICpjb21tYW5kQnVm
ZmVycykKK3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgdmtGcmVlQ29tbWFuZEJ1ZmZlcnMo
ZGV2aWNlLCBtSGFuZGxlLCBjb21tYW5kQnVmZmVyQ291bnQsIGNvbW1hbmRCdWZmZXJzKTsKK30K
KwogQU5HTEVfSU5MSU5FIFZrUmVzdWx0IENvbW1hbmRQb29sOjppbml0KFZrRGV2aWNlIGRldmlj
ZSwgY29uc3QgVmtDb21tYW5kUG9vbENyZWF0ZUluZm8gJmNyZWF0ZUluZm8pCiB7CiAgICAgQVNT
RVJUKCF2YWxpZCgpKTsKQEAgLTY4NywxMSArNzE4LDExIEBAIEFOR0xFX0lOTElORSB2b2lkIENv
bW1hbmRCdWZmZXI6OmJ1ZmZlckJhcnJpZXIoVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3JjU3RhZ2VN
YXNrCiAKIEFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OmltYWdlQmFycmllcihWa1Bp
cGVsaW5lU3RhZ2VGbGFncyBzcmNTdGFnZU1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZHN0U3RhZ2VNYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrSW1h
Z2VNZW1vcnlCYXJyaWVyICppbWFnZU1lbW9yeUJhcnJpZXIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgJmlt
YWdlTWVtb3J5QmFycmllcikKIHsKICAgICBBU1NFUlQodmFsaWQoKSk7CiAgICAgdmtDbWRQaXBl
bGluZUJhcnJpZXIobUhhbmRsZSwgc3JjU3RhZ2VNYXNrLCBkc3RTdGFnZU1hc2ssIDAsIDAsIG51
bGxwdHIsIDAsIG51bGxwdHIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VNZW1v
cnlCYXJyaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2VNZW1vcnlCYXJyaWVy
KTsKIH0KIAogQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6ZGVzdHJveShWa0Rldmlj
ZSBkZXZpY2UpCkBAIC04ODUsMTIgKzkxNiwxMiBAQCBBTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5k
QnVmZmVyOjp3YWl0RXZlbnRzKHVpbnQzMl90IGV2ZW50Q291bnQsCiAgICAgICAgICAgICAgICAg
ICAgIGltYWdlTWVtb3J5QmFycmllckNvdW50LCBpbWFnZU1lbW9yeUJhcnJpZXJzKTsKIH0KIAot
QU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6cmVzZXRRdWVyeVBvb2woVmtRdWVyeVBv
b2wgcXVlcnlQb29sLAorQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6cmVzZXRRdWVy
eVBvb2woY29uc3QgUXVlcnlQb29sICZxdWVyeVBvb2wsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmaXJzdFF1ZXJ5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcXVlcnlDb3Vu
dCkKIHsKLSAgICBBU1NFUlQodmFsaWQoKSk7Ci0gICAgdmtDbWRSZXNldFF1ZXJ5UG9vbChtSGFu
ZGxlLCBxdWVyeVBvb2wsIGZpcnN0UXVlcnksIHF1ZXJ5Q291bnQpOworICAgIEFTU0VSVCh2YWxp
ZCgpICYmIHF1ZXJ5UG9vbC52YWxpZCgpKTsKKyAgICB2a0NtZFJlc2V0UXVlcnlQb29sKG1IYW5k
bGUsIHF1ZXJ5UG9vbC5nZXRIYW5kbGUoKSwgZmlyc3RRdWVyeSwgcXVlcnlDb3VudCk7CiB9CiAK
IEFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OnJlc29sdmVJbWFnZShjb25zdCBJbWFn
ZSAmc3JjSW1hZ2UsCkBAIC05MDUsMjYgKzkzNiwyNiBAQCBBTkdMRV9JTkxJTkUgdm9pZCBDb21t
YW5kQnVmZmVyOjpyZXNvbHZlSW1hZ2UoY29uc3QgSW1hZ2UgJnNyY0ltYWdlLAogICAgICAgICAg
ICAgICAgICAgICAgIGRzdEltYWdlTGF5b3V0LCByZWdpb25Db3VudCwgcmVnaW9ucyk7CiB9CiAK
LUFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OmJlZ2luUXVlcnkoVmtRdWVyeVBvb2wg
cXVlcnlQb29sLAorQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6YmVnaW5RdWVyeShj
b25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgcXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrUXVlcnlDb250cm9sRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgQVNT
RVJUKHZhbGlkKCkpOwotICAgIHZrQ21kQmVnaW5RdWVyeShtSGFuZGxlLCBxdWVyeVBvb2wsIHF1
ZXJ5LCBmbGFncyk7CisgICAgQVNTRVJUKHZhbGlkKCkgJiYgcXVlcnlQb29sLnZhbGlkKCkpOwor
ICAgIHZrQ21kQmVnaW5RdWVyeShtSGFuZGxlLCBxdWVyeVBvb2wuZ2V0SGFuZGxlKCksIHF1ZXJ5
LCBmbGFncyk7CiB9CiAKLUFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OmVuZFF1ZXJ5
KFZrUXVlcnlQb29sIHF1ZXJ5UG9vbCwgdWludDMyX3QgcXVlcnkpCitBTkdMRV9JTkxJTkUgdm9p
ZCBDb21tYW5kQnVmZmVyOjplbmRRdWVyeShjb25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwgdWlu
dDMyX3QgcXVlcnkpCiB7Ci0gICAgQVNTRVJUKHZhbGlkKCkpOwotICAgIHZrQ21kRW5kUXVlcnko
bUhhbmRsZSwgcXVlcnlQb29sLCBxdWVyeSk7CisgICAgQVNTRVJUKHZhbGlkKCkgJiYgcXVlcnlQ
b29sLnZhbGlkKCkpOworICAgIHZrQ21kRW5kUXVlcnkobUhhbmRsZSwgcXVlcnlQb29sLmdldEhh
bmRsZSgpLCBxdWVyeSk7CiB9CiAKIEFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6Ondy
aXRlVGltZXN0YW1wKFZrUGlwZWxpbmVTdGFnZUZsYWdCaXRzIHBpcGVsaW5lU3RhZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa1F1ZXJ5UG9vbCBx
dWVyeVBvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHF1ZXJ5KQogewogICAgIEFTU0VSVCh2YWxp
ZCgpKTsKLSAgICB2a0NtZFdyaXRlVGltZXN0YW1wKG1IYW5kbGUsIHBpcGVsaW5lU3RhZ2UsIHF1
ZXJ5UG9vbCwgcXVlcnkpOworICAgIHZrQ21kV3JpdGVUaW1lc3RhbXAobUhhbmRsZSwgcGlwZWxp
bmVTdGFnZSwgcXVlcnlQb29sLmdldEhhbmRsZSgpLCBxdWVyeSk7CiB9CiAKIEFOR0xFX0lOTElO
RSB2b2lkIENvbW1hbmRCdWZmZXI6OmRyYXcodWludDMyX3QgdmVydGV4Q291bnQsCkBAIC0xMDY1
LDYgKzEwOTYsNjAgQEAgQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6YmluZFZlcnRl
eEJ1ZmZlcnModWludDMyX3QgZmlyc3RCaW5kaW5nLAogICAgIHZrQ21kQmluZFZlcnRleEJ1ZmZl
cnMobUhhbmRsZSwgZmlyc3RCaW5kaW5nLCBiaW5kaW5nQ291bnQsIGJ1ZmZlcnMsIG9mZnNldHMp
OwogfQogCitBTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kQnVmZmVyOjpiZWdpblRyYW5zZm9ybUZl
ZWRiYWNrRVhUKHVpbnQzMl90IGZpcnN0Q291bnRlckJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY291bnRl
ckJ1ZmZlckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRlckJ1ZmZlcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZrRGV2aWNlU2l6ZSAqY291bnRlckJ1ZmZlck9mZnNldHMpCit7CisgICAgQVNTRVJUKHZhbGlk
KCkpOworICAgIEFTU0VSVCh2a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQpOworICAgIHZr
Q21kQmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVChtSGFuZGxlLCBmaXJzdENvdW50ZXJCdWZmZXIs
IGNvdW50ZXJCdWZmZXJDb3VudCwgY291bnRlckJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50ZXJCdWZmZXJPZmZzZXRzKTsKK30KKworQU5HTEVfSU5MSU5F
IHZvaWQgQ29tbWFuZEJ1ZmZlcjo6ZW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQodWludDMyX3QgZmly
c3RDb3VudGVyQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgY291bnRlckJ1ZmZlckNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtC
dWZmZXIgKmNvdW50ZXJCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtEZXZpY2VTaXplICpjb3VudGVyQnVmZmVy
T2Zmc2V0cykKK3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgQVNTRVJUKHZrQ21kRW5kVHJh
bnNmb3JtRmVlZGJhY2tFWFQpOworICAgIHZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQobUhh
bmRsZSwgZmlyc3RDb3VudGVyQnVmZmVyLCBjb3VudGVyQnVmZmVyQ291bnQsIGNvdW50ZXJCdWZm
ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRlckJ1ZmZlck9mZnNl
dHMpOworfQorCitBTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kQnVmZmVyOjpiaW5kVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJzRVhUKHVpbnQzMl90IGZpcnN0QmluZGluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgYmluZGluZ0NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqYnVmZmVycywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmtEZXZpY2VTaXplICpvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZVNp
emUgKnNpemVzKQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICBBU1NFUlQodmtDbWRCaW5k
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUKTsKKyAgICB2a0NtZEJpbmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnNFWFQobUhhbmRsZSwgZmlyc3RCaW5kaW5nLCBiaW5kaW5nQ291bnQsIGJ1ZmZl
cnMsIG9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVzKTsKK30KKworQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6YmVnaW5EZWJ1Z1V0
aWxzTGFiZWxFWFQoY29uc3QgVmtEZWJ1Z1V0aWxzTGFiZWxFWFQgJmxhYmVsSW5mbykKK3sKKyAg
ICBBU1NFUlQodmFsaWQoKSk7CisgICAgQVNTRVJUKHZrQ21kQmVnaW5EZWJ1Z1V0aWxzTGFiZWxF
WFQpOworICAgIHZrQ21kQmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQobUhhbmRsZSwgJmxhYmVsSW5m
byk7Cit9CisKK0FOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OmVuZERlYnVnVXRpbHNM
YWJlbEVYVCgpCit7CisgICAgQVNTRVJUKHZhbGlkKCkpOworICAgIEFTU0VSVCh2a0NtZEVuZERl
YnVnVXRpbHNMYWJlbEVYVCk7CisgICAgdmtDbWRFbmREZWJ1Z1V0aWxzTGFiZWxFWFQobUhhbmRs
ZSk7Cit9CisKK0FOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6Omluc2VydERlYnVnVXRp
bHNMYWJlbEVYVChjb25zdCBWa0RlYnVnVXRpbHNMYWJlbEVYVCAmbGFiZWxJbmZvKQoreworICAg
IEFTU0VSVCh2YWxpZCgpKTsKKyAgICBBU1NFUlQodmtDbWRJbnNlcnREZWJ1Z1V0aWxzTGFiZWxF
WFQpOworICAgIHZrQ21kSW5zZXJ0RGVidWdVdGlsc0xhYmVsRVhUKG1IYW5kbGUsICZsYWJlbElu
Zm8pOworfQogfSAgLy8gbmFtZXNwYWNlIHByaXYKIAogLy8gSW1hZ2UgaW1wbGVtZW50YXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL3hjYi9EaXNwbGF5VmtYY2IuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi94Y2IvRGlzcGxheVZrWGNiLmNwcAppbmRleCBk
ZTNlMDc1M2VlZDljODBlZGJkMGVkMmVmYWU1ZTY2MmIyNTIxNDQxLi4yZDhiMzk5ZDIwY2Y3YTQz
MmI2ZDhjMWNjNWIwYjAyMGIxY2I5MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3hjYi9EaXNwbGF5VmtYY2IuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
eGNiL0Rpc3BsYXlWa1hjYi5jcHAKQEAgLTExLDYgKzExLDcgQEAKIAogI2luY2x1ZGUgPHhjYi94
Y2IuaD4KIAorI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vdmtfY2Fwc191dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi94Y2IvV2luZG93U3VyZmFjZVZrWGNiLmgiCiAKQEAgLTEyMSw0ICsxMjIs
MTAgQEAgRGlzcGxheUltcGwgKkNyZWF0ZVZ1bGthblhjYkRpc3BsYXkoY29uc3QgZWdsOjpEaXNw
bGF5U3RhdGUgJnN0YXRlKQogewogICAgIHJldHVybiBuZXcgRGlzcGxheVZrWGNiKHN0YXRlKTsK
IH0KKworYW5nbGU6OlJlc3VsdCBEaXNwbGF5VmtYY2I6OndhaXROYXRpdmVJbXBsKCkKK3sKKyAg
ICBYU3luYyhtU3RhdGUuZGlzcGxheUlkLCBGYWxzZSk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOworfQogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3hjYi9EaXNwbGF5
VmtYY2IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4veGNiL0Rpc3BsYXlWa1hjYi5oCmluZGV4IGM0MDQ1ZDIyODczODA2NjY0NzU0MWNjNDc4
NDIwODk0OTUxZTc5ZDAuLmRkZGJhNDI1NzM3MTA5MmVkNmQxNGVjZmY3YWIxZDM0NGY3MmRkYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4veGNiL0Rpc3BsYXlWa1hjYi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4veGNiL0Rpc3BsYXlWa1hjYi5oCkBAIC0zNCw2
ICszNCw3IEBAIGNsYXNzIERpc3BsYXlWa1hjYiA6IHB1YmxpYyBEaXNwbGF5VmsKICAgICBib29s
IGNoZWNrQ29uZmlnU3VwcG9ydChlZ2w6OkNvbmZpZyAqY29uZmlnKSBvdmVycmlkZTsKIAogICAg
IGNvbnN0IGNoYXIgKmdldFdTSUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGFuZ2xl
OjpSZXN1bHQgd2FpdE5hdGl2ZUltcGwoKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIHhj
Yl9jb25uZWN0aW9uX3QgKm1YY2JDb25uZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwCmluZGV4IDM1NDhkMjk0
NDExMzY3MzkzMTI3NWIxZmFiZWJkZDkwMmQ0ODgwMDQuLmFmZjYyNGRmNDk0NzI4OGZjNGEwY2Vl
NmJmMjRiNjMxOTRlMmVlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAKQEAgLTIyNSw2ICsyMjUsMTMgQEAgRXJy
b3IgVmFsaWRhdGVDb25maWdBdHRyaWJ1dGUoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgRUdMQXR0
cmliIGF0dHJpYnV0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisgICAg
ICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEU6CisgICAgICAgICAgICBp
ZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5pb3N1cmZhY2VDbGllbnRCdWZmZXIpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVnbEJhZEF0dHJpYnV0ZSgpIDw8ICJF
R0xfQU5HTEVfaW9zdXJmYWNlX2NsaWVudF9idWZmZXIgaXMgbm90IGVuYWJsZWQuIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gRWdsQmFkQXR0cmlidXRlKCkgPDwgIlVua25vd24gYXR0cmlidXRlLiI7CiAg
ICAgfQpAQCAtNTU5LDYgKzU2NiwxNCBAQCBFcnJvciBWYWxpZGF0ZUdldFBsYXRmb3JtRGlzcGxh
eUNvbW1vbihFR0xlbnVtIHBsYXRmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfRUdMX0FOR0xFOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybUFO
R0xFRGV2aWNlVHlwZUVHTEFOR0xFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVnbEJhZEF0dHJpYnV0ZSgpIDw8
ICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZGV2aWNlX3R5cGVfIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVnbF9hbmdsZSBp
cyBub3Qgc3VwcG9ydGVkIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1NXSUZUU0hBREVSX0FOR0xFOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybUFO
R0xFRGV2aWNlVHlwZVN3aWZ0U2hhZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
QEAgLTE4NzQsMTkgKzE4ODksMTEgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVQYnVmZmVyRnJvbUNs
aWVudEJ1ZmZlcihEaXNwbGF5ICpkaXNwbGF5LAogCiAgICAgaWYgKGJ1ZnR5cGUgPT0gRUdMX0lP
U1VSRkFDRV9BTkdMRSkKICAgICB7Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNPUykg
fHwgZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNDQVRBTFlTVCkKLSAgICAgICAgaWYgKHRleHR1
cmVUYXJnZXQgIT0gRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFKQorICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8RUdMZW51bT4odGV4dHVyZVRhcmdldCkgIT0gY29uZmlnLT5iaW5kVG9UZXh0dXJl
VGFyZ2V0KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRWdsQmFkQXR0cmlidXRlKCkK
LSAgICAgICAgICAgICAgICAgICA8PCAiRUdMX0lPU1VSRkFDRSByZXF1aXJlcyB0aGUgRUdMX1RF
WFRVUkVfUkVDVEFOR0xFIHRhcmdldCBvbiBkZXNrdG9wIG1hY09TIjsKKyAgICAgICAgICAgICAg
ICAgICA8PCAiRUdMX0lPU1VSRkFDRSByZXF1aXJlcyB0aGUgdGV4dHVyZSB0YXJnZXQgdG8gbWF0
Y2ggdGhlIGNvbmZpZyI7CiAgICAgICAgIH0KLSNlbHNlIC8vIGRlZmluZWQoQU5HTEVfUExBVEZP
Uk1fTUFDT1MpIHx8IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDQ0FUQUxZU1QpCi0gICAgICAg
IGlmICh0ZXh0dXJlVGFyZ2V0ICE9IEVHTF9URVhUVVJFXzJEKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gRWdsQmFkQXR0cmlidXRlKCkgPDwgIkVHTF9JT1NVUkZBQ0UgcmVxdWlyZXMg
dGhlIEVHTF9URVhUVVJFXzJEIHRhcmdldCBvbiBpT1MiOwotICAgICAgICB9Ci0jZW5kaWYgLy8g
ZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNPUykgfHwgZGVmaW5lZChBTkdMRV9QTEFURk9STV9N
QUNDQVRBTFlTVCkKLQogICAgICAgICBpZiAodGV4dHVyZUZvcm1hdCAhPSBFR0xfVEVYVFVSRV9S
R0JBKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gRWdsQmFkQXR0cmlidXRlKCkgPDwg
IkVHTF9JT1NVUkZBQ0UgcmVxdWlyZXMgdGhlIEVHTF9URVhUVVJFX1JHQkEgZm9ybWF0IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25F
Uy5jcHAKaW5kZXggYTE2MWZkNzdlODBhNDRlMWYwYWI5Y2E3YzJkMDQ1MDRlMGU2ZmFmNS4uYmZh
OTg3NjkxYTU5Yzk1ZWI5MmNhNTQxMGYyZDg3MjU0YzQ1ZTQ0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKQEAgLTU3
LDYgKzU3LDEwIEBAIGJvb2wgQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRSZXF1aXJlc0V4YWN0U2l6
ZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpCiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgogICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQThfTE9TU1lfREVDT0RFX0VUQzJfRUFDX0FOR0xFOgogICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0xPU1NZX0RFQ09ERV9FVEMyX0VB
Q19BTkdMRToKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ6CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVDoKICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQ6CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX0JQVENfVU5PUk1fRVhUOgogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
X0JQVENfU0lHTkVEX0ZMT0FUX0VYVDoKQEAgLTg0LDcgKzg4LDcgQEAgYm9vbCBEaWZmZXJlbmNl
Q2FuT3ZlcmZsb3coR0xpbnQgYSwgR0xpbnQgYikKICAgICByZXR1cm4gIWNoZWNrZWRBLklzVmFs
aWQoKTsKIH0KIAotYm9vbCBWYWxpZFJlYWRQaXhlbHNUeXBlRW51bShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSkKK2Jvb2wgVmFsaWRSZWFkUGl4ZWxzVHlwZUVudW0oY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKQEAg
LTEyNiw3ICsxMzAsNyBAQCBib29sIFZhbGlkUmVhZFBpeGVsc1R5cGVFbnVtKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0eXBlKQogICAgIH0KIH0KIAotYm9vbCBWYWxpZFJlYWRQaXhlbHNGb3Jt
YXRFbnVtKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmb3JtYXQpCitib29sIFZhbGlkUmVhZFBp
eGVsc0Zvcm1hdEVudW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZvcm1hdCkKIHsK
ICAgICBzd2l0Y2ggKGZvcm1hdCkKICAgICB7CkBAIC0xNTcsNyArMTYxLDcgQEAgYm9vbCBWYWxp
ZFJlYWRQaXhlbHNGb3JtYXRFbnVtKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmb3JtYXQpCiAg
ICAgfQogfQogCi1ib29sIFZhbGlkUmVhZFBpeGVsc0Zvcm1hdFR5cGUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRSZWFkUGl4ZWxzRm9ybWF0VHlwZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1h
dCAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQpAQCAtMTk0LDcgKzE5
OCw3IEBAIGJvb2wgVmFsaWRSZWFkUGl4ZWxzRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LAog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0ZVRleHR1cmVX
cmFwTW9kZVZhbHVlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVdyYXBN
b2RlVmFsdWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHJlc3RyaWN0ZWRXcmFwTW9kZXMpCiB7CkBAIC0yMzAsNyArMjM0
LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVXcmFwTW9kZVZhbHVlKENvbnRleHQgKmNvbnRleHQs
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Ci1ib29sIFZhbGlkYXRlVGV4dHVy
ZU1pbkZpbHRlclZhbHVlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZU1p
bkZpbHRlclZhbHVlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHJlc3RyaWN0ZWRNaW5GaWx0ZXIpCiB7CkBAIC0yNjEs
NyArMjY1LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVNaW5GaWx0ZXJWYWx1ZShDb250ZXh0ICpj
b250ZXh0LAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0
ZVRleHR1cmVNYWdGaWx0ZXJWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBjb25zdCBQYXJhbVR5cGUg
KnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlTWFnRmlsdGVyVmFsdWUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgY29uc3QgUGFyYW1UeXBlICpwYXJhbXMpCiB7CiAgICAgc3dpdGNoIChDb252
ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKICAgICB7CkBAIC0yNzgsNyArMjgyLDcgQEAgYm9vbCBW
YWxpZGF0ZVRleHR1cmVNYWdGaWx0ZXJWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBjb25zdCBQYXJh
bVR5cGUgKnBhcmFtcykKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KLWJvb2wg
VmFsaWRhdGVUZXh0dXJlQ29tcGFyZU1vZGVWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBjb25zdCBQ
YXJhbVR5cGUgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlQ29tcGFyZU1vZGVWYWx1ZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcykKIHsKICAgICAv
LyBBY2NlcHRhYmxlIG1vZGUgcGFyYW1ldGVycyBmcm9tIEdMRVMgMy4wLjIgc3BlYywgdGFibGUg
My4xNwogICAgIHN3aXRjaCAoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpCkBAIC0yOTYsNyAr
MzAwLDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVDb21wYXJlTW9kZVZhbHVlKENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
UGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0ZVRleHR1cmVDb21wYXJlRnVuY1ZhbHVlKENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZVRleHR1cmVD
b21wYXJlRnVuY1ZhbHVlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAq
cGFyYW1zKQogewogICAgIC8vIEFjY2VwdGFibGUgZnVuY3Rpb24gcGFyYW1ldGVycyBmcm9tIEdM
RVMgMy4wLjIgc3BlYywgdGFibGUgMy4xNwogICAgIHN3aXRjaCAoQ29udmVydFRvR0xlbnVtKHBh
cmFtc1swXSkpCkBAIC0zMjAsNyArMzI0LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVDb21wYXJl
RnVuY1ZhbHVlKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0ZVRleHR1cmVTUkdC
RGVjb2RlVmFsdWUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgUGFyYW1UeXBlICpwYXJhbXMpCiti
b29sIFZhbGlkYXRlVGV4dHVyZVNSR0JEZWNvZGVWYWx1ZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS50ZXh0dXJlU1JHQkRlY29kZSkKICAgICB7CkBAIC0zNDIsNyArMzQ2LDcgQEAgYm9v
bCBWYWxpZGF0ZVRleHR1cmVTUkdCRGVjb2RlVmFsdWUoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
UGFyYW1UeXBlICpwYXJhbXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVU
ZXh0dXJlTWF4QW5pc290cm9weUV4dGVuc2lvbkVuYWJsZWQoQ29udGV4dCAqY29udGV4dCkKK2Jv
b2wgVmFsaWRhdGVUZXh0dXJlTWF4QW5pc290cm9weUV4dGVuc2lvbkVuYWJsZWQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlRmlsdGVyQW5pc290cm9waWMpCiAgICAgewpAQCAtMzUzLDcgKzM1Nyw3IEBAIGJvb2wgVmFs
aWRhdGVUZXh0dXJlTWF4QW5pc290cm9weUV4dGVuc2lvbkVuYWJsZWQoQ29udGV4dCAqY29udGV4
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVNYXhBbmlzb3Ry
b3B5VmFsdWUoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBwYXJhbVZhbHVlKQorYm9vbCBWYWxp
ZGF0ZVRleHR1cmVNYXhBbmlzb3Ryb3B5VmFsdWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xm
bG9hdCBwYXJhbVZhbHVlKQogewogICAgIGlmICghVmFsaWRhdGVUZXh0dXJlTWF4QW5pc290cm9w
eUV4dGVuc2lvbkVuYWJsZWQoY29udGV4dCkpCiAgICAgewpAQCAtMzcxLDcgKzM3NSw3IEBAIGJv
b2wgVmFsaWRhdGVUZXh0dXJlTWF4QW5pc290cm9weVZhbHVlKENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgcGFyYW1WYWx1ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZy
YWdtZW50U2hhZGVyQ29sb3JCdWZmZXJNYXNrTWF0Y2goQ29udGV4dCAqY29udGV4dCkKK2Jvb2wg
VmFsaWRhdGVGcmFnbWVudFNoYWRlckNvbG9yQnVmZmVyTWFza01hdGNoKGNvbnN0IENvbnRleHQg
KmNvbnRleHQpCiB7CiAgICAgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSAgICAgICAgID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRMaW5rZWRQcm9ncmFtKGNvbnRleHQpOwogICAgIGNvbnN0IEZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVm
ZmVyKCk7CkBAIC0zODIsNyArMzg2LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYWdtZW50U2hhZGVyQ29s
b3JCdWZmZXJNYXNrTWF0Y2goQ29udGV4dCAqY29udGV4dCkKICAgICByZXR1cm4gZHJhd0J1ZmZl
ck1hc2sgPT0gKGRyYXdCdWZmZXJNYXNrICYgZnJhZ21lbnRPdXRwdXRNYXNrKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUZyYWdtZW50U2hhZGVyQ29sb3JCdWZmZXJUeXBlTWF0Y2goQ29udGV4dCAqY29u
dGV4dCkKK2Jvb2wgVmFsaWRhdGVGcmFnbWVudFNoYWRlckNvbG9yQnVmZmVyVHlwZU1hdGNoKGNv
bnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSAgICAg
ICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRMaW5rZWRQcm9ncmFtKGNvbnRleHQpOwogICAg
IGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
RHJhd0ZyYW1lYnVmZmVyKCk7CkBAIC0zOTMsNyArMzk3LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYWdt
ZW50U2hhZGVyQ29sb3JCdWZmZXJUeXBlTWF0Y2goQ29udGV4dCAqY29udGV4dCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXItPmdldERyYXdCdWZmZXJN
YXNrKCkudG9fdWxvbmcoKSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhTaGFkZXJBdHRyaWJ1
dGVUeXBlTWF0Y2goQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhTaGFkZXJB
dHRyaWJ1dGVUeXBlTWF0Y2goY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBjb25zdCBh
dXRvICZnbFN0YXRlICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICBjb25zdCBQcm9ncmFt
ICpwcm9ncmFtID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRMaW5rZWRQcm9ncmFtKGNvbnRleHQp
OwpAQCAtNDA3LDkgKzQxMSw5IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhTaGFkZXJBdHRyaWJ1dGVU
eXBlTWF0Y2goQ29udGV4dCAqY29udGV4dCkKICAgICB2YW9BdHRyaWJUeXBlQml0cyA9ICh2YW9B
dHRyaWJFbmFibGVkTWFzayAmIHZhb0F0dHJpYlR5cGVCaXRzKTsKICAgICB2YW9BdHRyaWJUeXBl
Qml0cyB8PSAofnZhb0F0dHJpYkVuYWJsZWRNYXNrICYgc3RhdGVDdXJyZW50VmFsdWVzVHlwZUJp
dHMpOwogCi0gICAgcmV0dXJuIFZhbGlkYXRlQ29tcG9uZW50VHlwZU1hc2tzKHByb2dyYW0tPmdl
dEF0dHJpYnV0ZXNUeXBlTWFzaygpLnRvX3Vsb25nKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhb0F0dHJpYlR5cGVCaXRzLCBwcm9ncmFtLT5nZXRBdHRyaWJ1dGVz
TWFzaygpLnRvX3Vsb25nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4RkZGRik7CisgICAgcmV0dXJuIFZhbGlkYXRlQ29tcG9uZW50VHlwZU1hc2tzKAorICAgICAg
ICBwcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkuZ2V0QXR0cmlidXRlc1R5cGVNYXNrKCkudG9fdWxv
bmcoKSwgdmFvQXR0cmliVHlwZUJpdHMsCisgICAgICAgIHByb2dyYW0tPmdldEV4ZWN1dGFibGUo
KS5nZXRBdHRyaWJ1dGVzTWFzaygpLnRvX3Vsb25nKCksIDB4RkZGRik7CiB9CiAKIGJvb2wgSXND
b21wYXRpYmxlRHJhd01vZGVXaXRoR2VvbWV0cnlTaGFkZXIoUHJpbWl0aXZlTW9kZSBkcmF3TW9k
ZSwKQEAgLTQ2NSwzMyArNDY5LDE0IEBAIHVuc2lnbmVkIGludCBHZXRTYW1wbGVyUGFyYW1ldGVy
Q291bnQoR0xlbnVtIHBuYW1lKQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLXZvaWQg
U2V0Um9idXN0TGVuZ3RoUGFyYW0oR0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpIHZhbHVlKQordm9p
ZCBTZXRSb2J1c3RMZW5ndGhQYXJhbShjb25zdCBHTHNpemVpICpsZW5ndGgsIEdMc2l6ZWkgdmFs
dWUpCiB7CiAgICAgaWYgKGxlbmd0aCkKICAgICB7Ci0gICAgICAgICpsZW5ndGggPSB2YWx1ZTsK
LSAgICB9Ci19Ci0KLWJvb2wgSXNFVEMyRUFDRm9ybWF0KGNvbnN0IEdMZW51bSBmb3JtYXQpCi17
Ci0gICAgLy8gRVMgMy4xLCBUYWJsZSA4LjE5Ci0gICAgc3dpdGNoIChmb3JtYXQpCi0gICAgewot
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUjExX0VBQzoKLSAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDOgotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkcxMV9F
QUM6Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6Ci0gICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzI6Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9TUkdCOF9FVEMyOgotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9V
R0hfQUxQSEExX0VUQzI6Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzI6Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQzoKLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzoK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBtb2RpZnkgcm9idXN0IGxl
bmd0aCBwYXJhbWV0ZXJzIGluIHRoZSB2YWxpZGF0aW9uIGxheWVyLiBXZSBzaG91bGQgYmUgb25s
eQorICAgICAgICAvLyBkb2luZyB0aGlzIGluIHRoZSBDb250ZXh0IGluc3RlYWQuCisgICAgICAg
IC8vIFRPRE8oaHR0cDovL2FuZ2xlYnVnLmNvbS80NDA2KTogUmVtb3ZlIHdoZW4gcG9zc2libGUu
CisgICAgICAgICpjb25zdF9jYXN0PEdMc2l6ZWkgKj4obGVuZ3RoKSA9IHZhbHVlOwogICAgIH0K
IH0KIApAQCAtNjI5LDcgKzYxNCw3IEBAIGJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1By
aW1pdGl2ZU1vZGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICB9CiB9CiAKLWJvb2wgVmFs
aWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZSwKQEAgLTY2Miw3ICs2NDcsNyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdJbnN0YW5j
ZWRBdHRyaWJzKGNvbnRleHQsIHByaW1jb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJy
YXlzSW5zdGFuY2VkQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJh
eXNJbnN0YW5jZWRCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC02OTQsMTIgKzY3OSwxMSBAQCBib29s
IFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gVmFsaWRhdGVEcmF3SW5zdGFuY2VkQXR0cmlicyhjb250ZXh0LCBwcmltY291bnQpOwog
fQogCi1ib29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQpCiti
b29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgLy8gVmVyaWZ5IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBhY3RpdmUgYXR0cmlidXRlIHdp
dGggYSBkaXZpc29yIG9mIHplcm8KLSAgICBjb25zdCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpOwotCi0gICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IHN0YXRlLmdldExpbmtlZFByb2dy
YW0oY29udGV4dCk7CisgICAgY29uc3QgU3RhdGUgJnN0YXRlICAgICAgICAgICAgICAgICAgPSBj
b250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IFByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRh
YmxlID0gc3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIAogICAgIGNvbnN0IGF1dG8gJmF0
dHJpYnMgID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlcygpOwog
ICAgIGNvbnN0IGF1dG8gJmJpbmRpbmdzID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVy
dGV4QmluZGluZ3MoKTsKQEAgLTcwNyw3ICs2OTEsNyBAQCBib29sIFZhbGlkYXRlRHJhd0luc3Rh
bmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQpCiAgICAgewogICAgICAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiA9IGF0dHJpYnNbYXR0cmlidXRlSW5kZXhdOwogICAgICAgICBjb25z
dCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nICA9IGJpbmRpbmdzW2F0dHJpYi5iaW5kaW5nSW5kZXhd
OwotICAgICAgICBpZiAocHJvZ3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShhdHRyaWJ1dGVJ
bmRleCkgJiYgYmluZGluZy5nZXREaXZpc29yKCkgPT0gMCkKKyAgICAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzQXR0cmliTG9jYXRpb25BY3RpdmUoYXR0cmlidXRlSW5kZXgpICYmIGJpbmRpbmcuZ2V0
RGl2aXNvcigpID09IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CkBAIC04MDQsNyArNzg4LDcgQEAgYm9vbCBWYWxpZE1pcExldmVsKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUsIEdMaW50IGxldmVsKQogICAgIHJldHVybiBs
ZXZlbCA8PSBsb2cyKG1heERpbWVuc2lvbikgJiYgbGV2ZWwgPj0gMDsKIH0KIAotYm9vbCBWYWxp
ZEltYWdlU2l6ZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRJbWFnZVNp
emVQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCkBAIC05MzcsNyArOTIxLDcgQEAgYm9vbCBWYWxpZENvbXByZXNzZWRTdWJJbWFnZVNp
emUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZEltYWdlRGF0YVNpemUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRJbWFnZURhdGFT
aXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVHlwZSB0ZXhUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LApAQCAtMTAzMCw3ICsxMDE0
LDcgQEAgYm9vbCBWYWxpZFF1ZXJ5VHlwZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5
cGUgcXVlcnlUeXBlKQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZVdlYkdMVmVydGV4QXR0cmli
UG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVdlYkdMVmVydGV4QXR0cmli
UG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKQEAgLTEwNzMsNyArMTA1Nyw3
IEBAIGJvb2wgVmFsaWRhdGVXZWJHTFZlcnRleEF0dHJpYlBvaW50ZXIoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUHJvZ3JhbSAqR2V0VmFsaWRQcm9ncmFtTm9SZXNv
bHZlKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBpZCkKK1Byb2dyYW0gKkdldFZh
bGlkUHJvZ3JhbU5vUmVzb2x2ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFt
SUQgaWQpCiB7CiAgICAgLy8gRVMzIHNwZWMgKHNlY3Rpb24gMi4xMS4xKSAtLSAiQ29tbWFuZHMg
dGhhdCBhY2NlcHQgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IG5hbWVzIHdpbGwKICAgICAvLyBn
ZW5lcmF0ZSB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBu
b3QgdGhlIG5hbWUgb2YgZWl0aGVyIGEgc2hhZGVyCkBAIC0xMDk3LDcgKzEwODEsNyBAQCBQcm9n
cmFtICpHZXRWYWxpZFByb2dyYW1Ob1Jlc29sdmUoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJv
Z3JhbUlEIGlkKQogICAgIHJldHVybiB2YWxpZFByb2dyYW07CiB9CiAKLVByb2dyYW0gKkdldFZh
bGlkUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpCitQcm9ncmFt
ICpHZXRWYWxpZFByb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlE
IGlkKQogewogICAgIFByb2dyYW0gKnByb2dyYW0gPSBHZXRWYWxpZFByb2dyYW1Ob1Jlc29sdmUo
Y29udGV4dCwgaWQpOwogICAgIGlmIChwcm9ncmFtKQpAQCAtMTEwNyw3ICsxMDkxLDcgQEAgUHJv
Z3JhbSAqR2V0VmFsaWRQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBp
ZCkKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KIAotU2hhZGVyICpHZXRWYWxpZFNoYWRlcihDb250
ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpCitTaGFkZXIgKkdldFZhbGlkU2hhZGVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBpZCkKIHsKICAgICAvLyBT
ZWUgVmFsaWRQcm9ncmFtIGZvciBzcGVjIGRldGFpbHMuCiAKQEAgLTExMjgsNyArMTExMiw3IEBA
IFNoYWRlciAqR2V0VmFsaWRTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlE
IGlkKQogICAgIHJldHVybiB2YWxpZFNoYWRlcjsKIH0KIAotYm9vbCBWYWxpZGF0ZUF0dGFjaG1l
bnRUYXJnZXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1lbnQpCitib29sIFZhbGlk
YXRlQXR0YWNobWVudFRhcmdldChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYXR0YWNo
bWVudCkKIHsKICAgICBpZiAoYXR0YWNobWVudCA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQg
JiYgYXR0YWNobWVudCA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTVfRVhUKQogICAgIHsKQEAgLTEx
NzMsNyArMTE1Nyw3IEBAIGJvb2wgVmFsaWRhdGVBdHRhY2htZW50VGFyZ2V0KENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBhdHRhY2htZW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMTIzMSw3ICsx
MjE1LDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LApAQCAtMTI3Myw3ICsxMjU3
LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyUGFyYW1ldGVycyhDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmxpdEZy
YW1lYnVmZmVyUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsaXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKQEAgLTE1MTgsNyArMTUwMiw3IEBAIGJv
b2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTE1MjYs
MTAgKzE1MTAsMTAgQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpyb3dzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJv
YnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtMTU1OCw3ICsxNTQy
LDcgQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLApAQCAtMTU2Niw3ICsxNTUwLDcgQEAgYm9vbCBWYWxpZGF0ZVJlYWRu
UGl4ZWxzRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoYnVmU2l6ZSA8IDApCiAgICAgewpA
QCAtMTU3OCw3ICsxNTYyLDcgQEAgYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVs
bHB0ciwgcGl4ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC0x
NTg2LDEwICsxNTcwLDEwIEBAIGJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqcm93cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpCiB7CiAgICAgR0xz
aXplaSB3cml0ZUxlbmd0aCAgPSAwOwogICAgIEdMc2l6ZWkgd3JpdGVDb2x1bW5zID0gMDsKQEAg
LTE2MTgsNyArMTYwMiw3IEBAIGJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZW5R
dWVyaWVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgUXVlcnlJRCAqaWRzKQorYm9v
bCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBu
LCBjb25zdCBRdWVyeUlEICppZHMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYmCiAgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQpAQCAtMTYzMCw3ICsxNjE0LDcgQEAgYm9vbCBWYWxp
ZGF0ZUdlblF1ZXJpZXNFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBRdWVyeUlEICpp
ZHMpCiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEZWxldGVRdWVyaWVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwg
Y29uc3QgUXVlcnlJRCAqaWRzKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXNFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBRdWVyeUlEICppZHMpCiB7CiAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYmCiAg
ICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQpAQCAt
MTY0Miw3ICsxNjI2LDcgQEAgYm9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXNFWFQoQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBRdWVyeUlEICppZHMpCiAgICAgcmV0dXJuIFZhbGlk
YXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhU
KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQpCitib29sIFZhbGlkYXRlSXNRdWVyeUVYVChj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkKQogewogICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiAmJgogICAgICAgICAhY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKQEAgLTE2NTQsNyArMTYzOCw3
IEBAIGJvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5QmFzZShDb250
ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBRdWVyeUlEIGlkKQorYm9vbCBWYWxpZGF0
ZUJlZ2luUXVlcnlCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQs
IFF1ZXJ5SUQgaWQpCiB7CiAgICAgaWYgKCFWYWxpZFF1ZXJ5VHlwZShjb250ZXh0LCB0YXJnZXQp
KQogICAgIHsKQEAgLTE2OTAsMTcgKzE2NzQsMTYgQEAgYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlC
YXNlKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIFF1ZXJ5SUQgaWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250
ZXh0LT5nZXRRdWVyeShpZCwgdHJ1ZSwgdGFyZ2V0KTsKLQogICAgIC8vIGNoZWNrIHRoYXQgbmFt
ZSB3YXMgb2J0YWluZWQgd2l0aCBnbEdlblF1ZXJpZXMKLSAgICBpZiAoIXF1ZXJ5T2JqZWN0KQor
ICAgIGlmICghY29udGV4dC0+aXNRdWVyeUdlbmVyYXRlZChpZCkpCiAgICAgewogICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkUXVl
cnlJZCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBjaGVjayBmb3Ig
dHlwZSBtaXNtYXRjaAotICAgIGlmIChxdWVyeU9iamVjdC0+Z2V0VHlwZSgpICE9IHRhcmdldCkK
KyAgICAvLyBDaGVjayBmb3IgdHlwZSBtaXNtYXRjaC4gSWYgcXVlcnkgaXMgbm90IHlldCBzdGFy
dGVkIHdlJ3JlIGdvb2QgdG8gZ28uCisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+
Z2V0UXVlcnkoaWQpOworICAgIGlmIChxdWVyeU9iamVjdCAmJiBxdWVyeU9iamVjdC0+Z2V0VHlw
ZSgpICE9IHRhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwga1F1ZXJ5VGFyZ2V0TWlzbWF0Y2gpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNzA5LDcgKzE2OTIsNyBAQCBib29sIFZhbGlkYXRlQmVnaW5RdWVyeUJh
c2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoQ29udGV4dCAqY29u
dGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCkKK2Jvb2wgVmFsaWRhdGVCZWdpblF1
ZXJ5RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIFF1ZXJ5SUQg
aWQpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlC
b29sZWFuICYmCiAgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1l
clF1ZXJ5ICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5KQpAQCAtMTcyMSw3
ICsxNzA0LDcgQEAgYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoQ29udGV4dCAqY29udGV4dCwg
UXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCkKICAgICByZXR1cm4gVmFsaWRhdGVCZWdpblF1
ZXJ5QmFzZShjb250ZXh0LCB0YXJnZXQsIGlkKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5
QmFzZShDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0KQorYm9vbCBWYWxpZGF0ZUVu
ZFF1ZXJ5QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0KQogewog
ICAgIGlmICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7CkBAIC0xNzQw
LDcgKzE3MjMsNyBAQCBib29sIFZhbGlkYXRlRW5kUXVlcnlCYXNlKENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5VHlwZSB0YXJnZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVF
bmRRdWVyeUVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0KQorYm9vbCBWYWxp
ZGF0ZUVuZFF1ZXJ5RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQp
CiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29s
ZWFuICYmCiAgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1
ZXJ5ICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5KQpAQCAtMTc1Miw3ICsx
NzM1LDcgQEAgYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5
VHlwZSB0YXJnZXQpCiAgICAgcmV0dXJuIFZhbGlkYXRlRW5kUXVlcnlCYXNlKGNvbnRleHQsIHRh
cmdldCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVRdWVyeUNvdW50ZXJFWFQoQ29udGV4dCAqY29udGV4
dCwgUXVlcnlJRCBpZCwgUXVlcnlUeXBlIHRhcmdldCkKK2Jvb2wgVmFsaWRhdGVRdWVyeUNvdW50
ZXJFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgUXVlcnlUeXBlIHRhcmdl
dCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVl
cnkpCiAgICAgewpAQCAtMTc2NiwxNCArMTc0OSwxNSBAQCBib29sIFZhbGlkYXRlUXVlcnlDb3Vu
dGVyRVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIFF1ZXJ5VHlwZSB0YXJnZXQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBj
b250ZXh0LT5nZXRRdWVyeShpZCwgdHJ1ZSwgdGFyZ2V0KTsKLSAgICBpZiAocXVlcnlPYmplY3Qg
PT0gbnVsbHB0cikKKyAgICBpZiAoIWNvbnRleHQtPmlzUXVlcnlHZW5lcmF0ZWQoaWQpKQogICAg
IHsKICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCBrSW52YWxpZFF1ZXJ5SWQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
aWYgKGNvbnRleHQtPmdldFN0YXRlKCkuaXNRdWVyeUFjdGl2ZShxdWVyeU9iamVjdCkpCisgICAg
Ly8gSWYgcXVlcnkgb2JqZWN0IGlzIG5vdCBzdGFydGVkLCB0aGF0J3MgZmluZS4KKyAgICBRdWVy
eSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCk7CisgICAgaWYgKHF1ZXJ5T2Jq
ZWN0ICYmIGNvbnRleHQtPmdldFN0YXRlKCkuaXNRdWVyeUFjdGl2ZShxdWVyeU9iamVjdCkpCiAg
ICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIGtRdWVyeUFjdGl2ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3ODIsNyArMTc2
NiwxMCBAQCBib29sIFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKENvbnRleHQgKmNvbnRleHQsIFF1
ZXJ5SUQgaWQsIFF1ZXJ5VHlwZSB0YXJnZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRRdWVyeWl2QmFzZShDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgKm51bVBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRRdWVy
eWl2QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFF1ZXJ5VHlwZSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcykK
IHsKICAgICBpZiAobnVtUGFyYW1zKQogICAgIHsKQEAgLTE4MjYsNyArMTgxMywxMCBAQCBib29s
IFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0UXVlcnlpdkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0UXVlcnlpdkVYVChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlUeXBlIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVzaW9uUXVlcnlCb29sZWFuICYmCiAgICAgICAgICFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5ICYmICFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5KQpAQCAtMTgzOCwxMiArMTgyOCwxMiBAQCBib29sIFZh
bGlkYXRlR2V0UXVlcnlpdkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaQogICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlpdlJv
YnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6
ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0
LCBidWZTaXplKSkKICAgICB7CkBAIC0xODY3LDcgKzE4NTcsMTAgQEAgYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoQ29udGV4dCAqY29udGV4
dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpICpudW1QYXJhbXMpCitib29sIFZh
bGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJhbXMpCiB7CiAgICAgaWYgKG51
bVBhcmFtcykKICAgICB7CkBAIC0xODkwLDcgKzE4ODMsNyBAQCBib29sIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RWYWx1ZUJhc2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBu
YW1lLAogICAgICAgICB9CiAgICAgfQogCi0gICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4
dC0+Z2V0UXVlcnkoaWQsIGZhbHNlLCBRdWVyeVR5cGU6OkludmFsaWRFbnVtKTsKKyAgICBRdWVy
eSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCk7CiAKICAgICBpZiAoIXF1ZXJ5
T2JqZWN0KQogICAgIHsKQEAgLTE5MTgsNyArMTkxMSwxMCBAQCBib29sIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RWYWx1ZUJhc2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBu
YW1lLAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3Rp
dkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdkVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQogICAgIHsKQEAgLTE5
MjgsMTIgKzE5MjQsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZFWFQoQ29udGV4
dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTGkKICAgICByZXR1cm4gVmFs
aWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIp
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFF1ZXJ5SUQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCiAgICAgewpAQCAtMTk2Myw3ICsxOTU5
LDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2Jq
ZWN0dWl2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgR0x1
aW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlE
IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKIHsK
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYK
ICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4g
JiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zeW5jUXVlcnkpCkBAIC0xOTc0LDEyICsxOTcz
LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChDb250ZXh0ICpjb250ZXh0
LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEdMCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lLCBudWxscHRyKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVy
eUlEIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYKICAgICAgICAgIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYgIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zeW5jUXVlcnkpCkBAIC0yMDEwLDcgKzIwMDksMTAgQEAgYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVChDb250ZXh0ICpj
b250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcykKK2Jvb2wg
VmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQogICAgIHsKQEAgLTIwMjAsMTEgKzIw
MjIsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVChDb250ZXh0ICpjb250
ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEcKICAgICByZXR1cm4gVmFsaWRhdGVHZXRR
dWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFF1ZXJ5SUQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCkBAIC0yMDU1LDcgKzIwNTcsMTAg
QEAgYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVj
dHVpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgR0x1
aW50NjQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2RVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR
dWVyeUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFt
cykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVl
cnkpCiAgICAgewpAQCAtMjA2NSwxMSArMjA3MCwxMSBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlP
YmplY3R1aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUs
CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQs
IHBuYW1lLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
dWk2NHZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dDY0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9p
bnRUaW1lclF1ZXJ5KQpAQCAtMjEwMCw5ICsyMTA1LDkgQEAgYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoQ29udGV4dCAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtICpwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVu
aWZvcm1Db21tb25CYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICoqdW5pZm9ybU91dCkKIHsKQEAgLTIxMjUsMTQgKzIx
MzAsMTQgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobG9jYXRpb24gPT0gLTEp
CisgICAgaWYgKGxvY2F0aW9uLnZhbHVlID09IC0xKQogICAgIHsKICAgICAgICAgLy8gU2lsZW50
bHkgaWdub3JlIHRoZSB1bmlmb3JtIGNvbW1hbmQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1Mb2NhdGlvbnMgPSBwcm9ncmFtLT5nZXRVbmlm
b3JtTG9jYXRpb25zKCk7Ci0gICAgc2l6ZV90IGNhc3RlZExvY2F0aW9uICAgICAgICA9IHN0YXRp
Y19jYXN0PHNpemVfdD4obG9jYXRpb24pOworICAgIHNpemVfdCBjYXN0ZWRMb2NhdGlvbiAgICAg
ICAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uLnZhbHVlKTsKICAgICBpZiAoY2FzdGVk
TG9jYXRpb24gPj0gdW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpCiAgICAgewogICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkVW5pZm9y
bUxvY2F0aW9uKTsKQEAgLTIxNjUsNyArMjE3MCw3IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtQ29t
bW9uQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVW5pZm9ybTFpdlZhbHVlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5p
Zm9ybTFpdlZhbHVlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB1bmlmb3JtVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnZhbHVlKQpAQCAtMjE5Nyw3ICsyMjAyLDcgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm0xaXZW
YWx1ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXhWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdmFsdWVUeXBl
LCBHTGVudW0gdW5pZm9ybVR5cGUpCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51bSB1bmlmb3JtVHlw
ZSkKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1ZSB0eXBlIGlzIGNvbXBhdGlibGUgd2l0
aCB1bmlmb3JtIHR5cGUuCiAgICAgaWYgKHZhbHVlVHlwZSA9PSB1bmlmb3JtVHlwZSkKQEAgLTIy
MDksNyArMjIxNCwxMCBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51bSB1bmlmbwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZh
bHVlVHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQpCitib29sIFZhbGlkYXRlVW5p
Zm9ybShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHZhbHVlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQpCiB7CiAgICAgY29uc3QgTGlu
a2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0TGlua2VkUHJvZ3JhbShjb250ZXh0KTsK
QEAgLTIyMTcsNyArMjIyNSwxMCBAQCBib29sIFZhbGlkYXRlVW5pZm9ybShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdmFsdWVUeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaQogICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1WYWx1ZShjb250ZXh0LCB2YWx1ZVR5cGUsIHVuaWZvcm0tPnR5cGUp
OwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTFpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0
ZVVuaWZvcm0xaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUp
CiB7CiAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7CiAgICAgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0TGlua2Vk
UHJvZ3JhbShjb250ZXh0KTsKQEAgLTIyMjUsOSArMjIzNiw5IEBAIGJvb2wgVmFsaWRhdGVVbmlm
b3JtMWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHCiAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTFpdlZhbHVlKGNvbnRleHQsIHVuaWZv
cm0tPnR5cGUsIGNvdW50LCB2YWx1ZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHZhbHVlVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UpCiB7CkBAIC0yMjQzLDcgKzIyNTQsMTAgQEAgYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXgoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgVmFsaWRhdGVV
bmlmb3JtTWF0cml4VmFsdWUoY29udGV4dCwgdmFsdWVUeXBlLCB1bmlmb3JtLT50eXBlKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVN0YXRlUXVlcnkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
LCBHTGVudW0gKm5hdGl2ZVR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQorYm9vbCBWYWxp
ZGF0ZVN0YXRlUXVlcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqbmF0
aXZlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqbnVtUGFyYW1z
KQogewogICAgIGlmICghY29udGV4dC0+Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKHBuYW1lLCBuYXRp
dmVUeXBlLCBudW1QYXJhbXMpKQogICAgIHsKQEAgLTIzMzQsMTEgKzIzNDgsMTEgQEAgYm9vbCBW
YWxpZGF0ZVN0YXRlUXVlcnkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGVudW0g
Km5hdGl2ZVR5cGUsIHVuc2kKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdl
dEJvb2xlYW52Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRC
b29sZWFudlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMYm9vbGVhbiAqcGFyYW1zKQogewogICAgIEdMZW51bSBuYXRp
dmVUeXBlOwogICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOwpAQCAtMjM1MywxMSArMjM2
NywxMSBAQCBib29sIFZhbGlkYXRlR2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RmxvYXR2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRGbG9hdHZSb2J1c3RBTkdM
RShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFy
YW1zKQogewogICAgIEdMZW51bSBuYXRpdmVUeXBlOwogICAgIHVuc2lnbmVkIGludCBudW1QYXJh
bXMgPSAwOwpAQCAtMjM3MiwxMSArMjM4NiwxMSBAQCBib29sIFZhbGlkYXRlR2V0RmxvYXR2Um9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldEludGVnZXJ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpkYXRhKQogewogICAgIEdMZW51bSBuYXRpdmVU
eXBlOwogICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOwpAQCAtMjM5MSwxMCArMjQwNSwx
MCBAQCBib29sIFZhbGlkYXRlR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0dlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0dlJvYnVz
dEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSkKIHsKICAgICBHTGVudW0gbmF0aXZlVHlwZTsKQEAg
LTI0MTUsNyArMjQyOSw3IEBAIGJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJv
YnVzdFN0YXRlUXVlcnkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSb2J1c3RTdGF0
ZVF1ZXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm5hdGl2ZVR5
cGUsCkBAIC0yNDM5LDcgKzI0NTMsNyBAQCBib29sIFZhbGlkYXRlUm9idXN0U3RhdGVRdWVyeShD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29w
eVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVD
b3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKQEAgLTI2MzYsNyArMjY1MCw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0
ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogCiAvLyBOb3RlIGFsbCBlcnJvcnMgcmV0dXJuZWQg
ZnJvbSB0aGlzIGZ1bmN0aW9uIGFyZSBJTlZBTElEX09QRVJBVElPTiBleGNlcHQgZm9yIHRoZSBk
cmF3IGZyYW1lYnVmZmVyCiAvLyBjb21wbGV0ZW5lc3MgY2hlY2suCi1jb25zdCBjaGFyICpWYWxp
ZGF0ZURyYXdTdGF0ZXMoQ29udGV4dCAqY29udGV4dCkKK2NvbnN0IGNoYXIgKlZhbGlkYXRlRHJh
d1N0YXRlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIGNvbnN0IEV4dGVuc2lvbnMg
JmV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CiAgICAgY29uc3QgU3RhdGUg
JnN0YXRlICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7CkBAIC0yNjkwLDEwICsyNzA0
LDMwIEBAIGNvbnN0IGNoYXIgKlZhbGlkYXRlRHJhd1N0YXRlcyhDb250ZXh0ICpjb250ZXh0KQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFleHRlbnNpb25zLmZsb2F0QmxlbmQgJiYgY29u
dGV4dC0+Z2V0U3RhdGUoKS5pc0JsZW5kRW5hYmxlZCgpICYmCi0gICAgICAgIGZyYW1lYnVmZmVy
LT5oYXNBY3RpdmVGbG9hdDMyQ29sb3JBdHRhY2htZW50KCkpCisgICAgaWYgKCFleHRlbnNpb25z
LmZsb2F0QmxlbmQpCiAgICAgewotICAgICAgICByZXR1cm4ga1Vuc3VwcG9ydGVkRmxvYXRCbGVu
ZGluZzsKKyAgICAgICAgY29uc3QgRHJhd0J1ZmZlck1hc2sgYmxlbmRFbmFibGVkQWN0aXZlRmxv
YXQzMkNvbG9yQXR0YWNobWVudERyYXdCdWZmZXJNYXNrID0KKyAgICAgICAgICAgIHN0YXRlLmdl
dEJsZW5kRW5hYmxlZERyYXdCdWZmZXJNYXNrKCkgJgorICAgICAgICAgICAgZnJhbWVidWZmZXIt
PmdldEFjdGl2ZUZsb2F0MzJDb2xvckF0dGFjaG1lbnREcmF3QnVmZmVyTWFzaygpOworICAgICAg
ICBpZiAoYmxlbmRFbmFibGVkQWN0aXZlRmxvYXQzMkNvbG9yQXR0YWNobWVudERyYXdCdWZmZXJN
YXNrLmFueSgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4ga1Vuc3VwcG9ydGVkRmxv
YXRCbGVuZGluZzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRMaW1p
dGF0aW9ucygpLm5vU2ltdWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jIHx8
CisgICAgICAgIGV4dGVuc2lvbnMud2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAgICAgICAg
aWYgKHN0YXRlLmhhc1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYygp
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXh0ZW5zaW9ucy53ZWJnbENvbXBhdGliaWxp
dHkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtJbnZhbGlkQ29uc3Rh
bnRDb2xvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgV0FSTigpIDw8IGtDb25zdGFu
dENvbG9yQWxwaGFMaW1pdGF0aW9uOworICAgICAgICAgICAgcmV0dXJuIGtDb25zdGFudENvbG9y
QWxwaGFMaW1pdGF0aW9uOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFmcmFtZWJ1ZmZl
ci0+aXNDb21wbGV0ZShjb250ZXh0KSkKQEAgLTI3MDQsNyArMjczOCw3IEBAIGNvbnN0IGNoYXIg
KlZhbGlkYXRlRHJhd1N0YXRlcyhDb250ZXh0ICpjb250ZXh0KQogCiAgICAgaWYgKGNvbnRleHQt
PmdldFN0YXRlQ2FjaGUoKS5oYXNBbnlFbmFibGVkQ2xpZW50QXR0cmliKCkpCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSB8fCAh
c3RhdGUuYXJlQ2xpZW50QXJyYXlzRW5hYmxlZCgpKQorICAgICAgICBpZiAoZXh0ZW5zaW9ucy53
ZWJnbENvbXBhdGliaWxpdHkgfHwgIXN0YXRlLmFyZUNsaWVudEFycmF5c0VuYWJsZWQoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgLy8gW1dlYkdMIDEuMF0gU2VjdGlvbiA2LjUgRW5hYmxlZCBW
ZXJ0ZXggQXR0cmlidXRlcyBhbmQgUmFuZ2UgQ2hlY2tpbmcKICAgICAgICAgICAgIC8vIElmIGEg
dmVydGV4IGF0dHJpYnV0ZSBpcyBlbmFibGVkIGFzIGFuIGFycmF5IHZpYSBlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSBidXQgbm8KQEAgLTI3MzQsOCArMjc2OCw4IEBAIGNvbnN0IGNoYXIgKlZhbGlk
YXRlRHJhd1N0YXRlcyhDb250ZXh0ICpjb250ZXh0KQogICAgICAgICAvLyB2ZXJ0ZXggc2hhZGVy
IHN0YWdlIG9yIGZyYWdtZW50IHNoYWRlciBzdGFnZSBpcyBhIHVuZGVmaW5lZCBiZWhhdmlvdXIu
CiAgICAgICAgIC8vIEJ1dCBBTkdMRSBzaG91bGQgY2xlYXJseSBnZW5lcmF0ZSBhbiBJTlZBTElE
X09QRVJBVElPTiBlcnJvciBpbnN0ZWFkIG9mCiAgICAgICAgIC8vIHByb2R1Y2UgdW5kZWZpbmVk
IHJlc3VsdC4KLSAgICAgICAgaWYgKCFwcm9ncmFtLT5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFk
ZXJUeXBlOjpWZXJ0ZXgpIHx8Ci0gICAgICAgICAgICAhcHJvZ3JhbS0+aGFzTGlua2VkU2hhZGVy
U3RhZ2UoU2hhZGVyVHlwZTo6RnJhZ21lbnQpKQorICAgICAgICBpZiAoIXByb2dyYW0tPmdldEV4
ZWN1dGFibGUoKS5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpWZXJ0ZXgpIHx8Cisg
ICAgICAgICAgICAhcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdl
KFNoYWRlclR5cGU6OkZyYWdtZW50KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGtO
b0FjdGl2ZUdyYXBoaWNzU2hhZGVyU3RhZ2U7CiAgICAgICAgIH0KQEAgLTI4MTEsNyArMjg0NSw3
IEBAIGNvbnN0IGNoYXIgKlZhbGlkYXRlRHJhd1N0YXRlcyhDb250ZXh0ICpjb250ZXh0KQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBEZXRlY3QgcmVuZGVyaW5nIGZlZWRiYWNrIGxv
b3BzIGZvciBXZWJHTC4KLSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Zm9ybXNSZW5kZXJp
bmdGZWVkYmFja0xvb3BXaXRoKGNvbnRleHQpKQorICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVy
LT5oYXNSZW5kZXJpbmdGZWVkYmFja0xvb3AoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4ga0ZlZWRiYWNrTG9vcDsKICAgICAgICAgICAgIH0KQEAgLTI4MjMsNyArMjg1
Nyw3IEBAIGNvbnN0IGNoYXIgKlZhbGlkYXRlRHJhd1N0YXRlcyhDb250ZXh0ICpjb250ZXh0KQog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
UmFzdGVyaXplclN0YXRlKCkucmFzdGVyaXplckRpc2NhcmQgJiYKLSAgICAgICAgICAgICAgICAh
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXRCbGVuZFN0YXRlKCkuYWxsQ2hhbm5lbHNNYXNrZWQoKSkK
KyAgICAgICAgICAgICAgICAhY29udGV4dC0+Z2V0U3RhdGUoKS5hbGxBY3RpdmVEcmF3QnVmZmVy
Q2hhbm5lbHNNYXNrZWQoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBEZXRl
Y3QgdGhhdCBpZiB0aGVyZSdzIGFjdGl2ZSBjb2xvciBidWZmZXIgd2l0aG91dCBmcmFnbWVudCBz
aGFkZXIgb3V0cHV0CiAgICAgICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZUZyYWdtZW50U2hhZGVy
Q29sb3JCdWZmZXJNYXNrTWF0Y2goY29udGV4dCkpCkBAIC0yODQ5LDcgKzI4ODMsNyBAQCBjb25z
dCBjaGFyICpWYWxpZGF0ZURyYXdTdGF0ZXMoQ29udGV4dCAqY29udGV4dCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotdm9pZCBSZWNvcmREcmF3TW9kZUVycm9yKENvbnRleHQgKmNvbnRleHQs
IFByaW1pdGl2ZU1vZGUgbW9kZSkKK3ZvaWQgUmVjb3JkRHJhd01vZGVFcnJvcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1vZGUpCiB7CiAgICAgY29uc3QgU3RhdGUgJnN0
YXRlICAgICAgICAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICBUcmFu
c2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJh
bnNmb3JtRmVlZGJhY2soKTsKQEAgLTI4OTgsNyArMjkzMiw3IEBAIHZvaWQgUmVjb3JkRHJhd01v
ZGVFcnJvcihDb250ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1vZGUpCiAgICAgICAgIEFT
U0VSVChwcm9ncmFtKTsKIAogICAgICAgICAvLyBEbyBnZW9tZXRyeSBzaGFkZXIgc3BlY2lmaWMg
dmFsaWRhdGlvbnMKLSAgICAgICAgaWYgKHByb2dyYW0tPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNo
YWRlclR5cGU6Okdlb21ldHJ5KSkKKyAgICAgICAgaWYgKHByb2dyYW0tPmdldEV4ZWN1dGFibGUo
KS5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpHZW9tZXRyeSkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghSXNDb21wYXRpYmxlRHJhd01vZGVXaXRoR2VvbWV0cnlTaGFkZXIo
CiAgICAgICAgICAgICAgICAgICAgIG1vZGUsIHByb2dyYW0tPmdldEdlb21ldHJ5U2hhZGVySW5w
dXRQcmltaXRpdmVUeXBlKCkpKQpAQCAtMjkxNCw3ICsyOTQ4LDcgQEAgdm9pZCBSZWNvcmREcmF3
TW9kZUVycm9yKENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgbW9kZSkKICAgICBVTlJF
QUNIQUJMRSgpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCkBAIC0yOTM0LDcgKzI5NjgsNyBAQCBib29sIFZhbGlkYXRlRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRl
RHJhd0luc3RhbmNlZEFOR0xFKGNvbnRleHQpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0FycmF5
c0luc3RhbmNlZEVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJ
bnN0YW5jZWRFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTI5NTQsNyArMjk4OCw3IEBAIGJvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWNvbnN0IGNoYXIgKlZhbGlkYXRlRHJhd0VsZW1lbnRzU3RhdGVzKENvbnRleHQg
KmNvbnRleHQpCitjb25zdCBjaGFyICpWYWxpZGF0ZURyYXdFbGVtZW50c1N0YXRlcyhjb25zdCBD
b250ZXh0ICpjb250ZXh0KQogewogICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNvbnRleHQtPmdl
dFN0YXRlKCk7CiAKQEAgLTMwMDYsNyArMzA0MCw3IEBAIGNvbnN0IGNoYXIgKlZhbGlkYXRlRHJh
d0VsZW1lbnRzU3RhdGVzKENvbnRleHQgKmNvbnRleHQpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtMzAyNyw3ICszMDYxLDcgQEAgYm9vbCBWYWxpZGF0
ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IFZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKGNvbnRleHQpOwogfQogCi1ib29sIFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlLApAQCAt
MzA0OCw3ICszMDgyLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEVYVChD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJh
bWVidWZmZXJUZXh0dXJlQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLApAQCAtMzA5NCw3ICszMTI4LDkgQEAg
Ym9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhc2UoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CYXNlKENvbnRleHQg
KmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbikKK2Jvb2wg
VmFsaWRhdGVHZXRVbmlmb3JtQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikKIHsKICAgICBpZiAocHJv
Z3JhbS52YWx1ZSA9PSAwKQogICAgIHsKQEAgLTMxMjMsOSArMzE1OSw5IEBAIGJvb2wgVmFsaWRh
dGVHZXRVbmlmb3JtQmFzZShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwgR0xpbnQgbG9jCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIFZhbGlkYXRl
U2l6ZWRHZXRVbmlmb3JtKENvbnRleHQgKmNvbnRleHQsCitzdGF0aWMgYm9vbCBWYWxpZGF0ZVNp
emVkR2V0VW5pZm9ybShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkKIHsKQEAgLTMxNjEsNjcgKzMx
OTcsNjYgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oQ29udGV4dCAqY29u
dGV4dCwKICAgICB7CiAgICAgICAgICpsZW5ndGggPSBWYXJpYWJsZUNvbXBvbmVudENvdW50KHVu
aWZvcm0udHlwZSk7CiAgICAgfQotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRuVW5pZm9ybWZ2RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0blVu
aWZvcm1mdkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFt
cykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3Jh
bSwgbG9jYXRpb24sIGJ1ZlNpemUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0blVu
aWZvcm1mdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0blVuaWZvcm1pdkVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldG5Vbmlmb3JtaXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwg
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1mdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZh
bGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC0zMjQx
LDEyICszMjc2LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VW5p
Zm9ybWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpA
QCAtMzI2NiwxMiArMzMwMSwxMiBAQCBib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1z
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqcGFyYW1zKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQs
IGJ1ZlNpemUpKQogICAgIHsKQEAgLTMyOTcsNyArMzMzMiw3IEBAIGJvb2wgVmFsaWRhdGVHZXRV
bmlmb3JtdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2ht
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAq
YXR0YWNobWVudHMsCkBAIC0zMzYwLDcgKzMzOTUsNyBAQCBib29sIFZhbGlkYXRlRGlzY2FyZEZy
YW1lYnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK2Jvb2wgVmFsaWRhdGVJbnNlcnRFdmVudE1h
cmtlckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnTWFy
a2VyKQogICAgIHsKQEAgLTMzODQsNyArMzQxOSw3IEBAIGJvb2wgVmFsaWRhdGVJbnNlcnRFdmVu
dE1hcmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQo
Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK2Jv
b2wgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xz
aXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kZWJ1Z01hcmtlcikKICAgICB7CkBAIC0zNDA4LDcgKzM0NDMsOSBAQCBi
b29sIFZhbGlkYXRlUHVzaEdyb3VwTWFya2VyRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBjaGFyICptYQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5
cGUgdHlwZSwgR0xlZ2xJbWFnZU9FUyBpbWFnZSkKK2Jvb2wgVmFsaWRhdGVFR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlZ2xJbWFnZU9FUyBpbWFnZSkKIHsKICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZU9FUyAmJiAhY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWxPRVMpCiAgICAgewpAQCAtMzQ2MSw3ICszNDk4LDcg
QEAgYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKENvbnRleHQgKmNvbnRl
eHQsIFRleHR1cmVUeXBlIHR5cGUsIEdMZWcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVnbEltYWdlT0VTIGltYWdlKQogewpAQCAtMzQ5
OSw3ICszNTM2LDcgQEAgYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3Rv
cmFnZU9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlQmluZFZlcnRleEFycmF5QmFzZShDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlE
IGFycmF5KQorYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmlzVmVy
dGV4QXJyYXlHZW5lcmF0ZWQoYXJyYXkpKQogICAgIHsKQEAgLTM1MTIsNyArMzU0OSw3IEBAIGJv
b2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlCYXNlKENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFy
cmF5SUQgYXJyYXkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFt
QmluYXJ5QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnlC
YXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpiaW5hcnksCkBAIC0zNTQyLDEyICszNTc5LDEyIEBAIGJvb2wgVmFsaWRhdGVQ
cm9ncmFtQmluYXJ5QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeUJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmluYXJ5KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmJpbmFyeUZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnkpCiB7CiAgICAgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsK
ICAgICBpZiAocHJvZ3JhbU9iamVjdCA9PSBudWxscHRyKQpAQCAtMzU3MCw3ICszNjA3LDcgQEAg
Ym9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QnVmZmVyc0Jhc2UoQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCitib29sIFZhbGlkYXRlRHJh
d0J1ZmZlcnNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xl
bnVtICpidWZzKQogewogICAgIC8vIElOVkFMSURfVkFMVUUgaXMgZ2VuZXJhdGVkIGlmIG4gaXMg
bmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIHZhbHVlIG9mIE1BWF9EUkFXX0JVRkZFUlMKICAgICBp
ZiAobiA8IDApCkBAIC0zNjQyLDExICszNjc5LDExIEBAIGJvb2wgVmFsaWRhdGVEcmF3QnVmZmVy
c0Jhc2UoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2Uo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFy
YW1zKQogewogICAgIGlmIChsZW5ndGgpCiAgICAgewpAQCAtMzY4Niw3ICszNzIzLDcgQEAgYm9v
bCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKENvbnRleHQgKmNv
bnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQorYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyQmFz
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCkKIHsKICAgICBp
ZiAoIWNvbnRleHQtPmlzVmFsaWRCdWZmZXJCaW5kaW5nKHRhcmdldCkpCiAgICAgewpAQCAtMzcw
NSw3ICszNzQyLDcgQEAgYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyQmFzZShDb250ZXh0ICpjb250
ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZU1hcEJ1ZmZlclJhbmdlQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZU1hcEJ1ZmZlclJhbmdlQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwKQEAgLTM3OTUsNyArMzgzMiw3IEBAIGJvb2wg
VmFsaWRhdGVNYXBCdWZmZXJSYW5nZUJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
VmFsaWRhdGVNYXBCdWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldCk7CiB9CiAKLWJvb2wgVmFsaWRh
dGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
bGVuZ3RoKQpAQCAtMzg0Niw3ICszODgzLDcgQEAgYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVm
ZmVyUmFuZ2VCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZW5PckRlbGV0ZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKQorYm9vbCBW
YWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pCiB7CiAg
ICAgaWYgKG4gPCAwKQogICAgIHsKQEAgLTM4NTYsNyArMzg5Myw3IEBAIGJvb2wgVmFsaWRhdGVH
ZW5PckRlbGV0ZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlUm9idXN0RW50cnlQb2ludChDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIGJ1ZlNpemUpCitib29sIFZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucm9idXN0Q2xpZW50TWVtb3J5KQogICAgIHsKQEAgLTM4NzMsNyArMzkxMCw3IEBA
IGJvb2wgVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkg
YnVmU2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJvYnVzdEJ1ZmZl
clNpemUoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpIG51bVBhcmFt
cykKK2Jvb2wgVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSBudW1QYXJhbXMpCiB7CiAgICAgaWYgKGJ1ZlNpemUg
PCBudW1QYXJhbXMpCiAgICAgewpAQCAtMzg4NCw3ICszOTIxLDcgQEAgYm9vbCBWYWxpZGF0ZVJv
YnVzdEJ1ZmZlclNpemUoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
IG51bVBhcmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2QmFzZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLApAQCAtNDE1
MSwxMyArNDE4OCwxMyBAQCBib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpA
QCAtNDE4MSwxMiArNDIxOCwxMiBAQCBib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5
UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDIwOSwxMiArNDI0NiwxMiBAQCBi
b29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1l
dGVyaTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcg
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAq
cGFyYW1zKQogewogICAgIEdMc2l6ZWkgbnVtUGFyYW1zID0gMDsKIApAQCAtNDIzOCw3ICs0Mjc1
LDcgQEAgYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJv
Z3JhbWl2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdkJh
c2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbnVt
UGFyYW1zKQpAQCAtNDMzNCw3ICs0MzcxLDcgQEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdkJh
c2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtQcm9ncmFtTm90TGlua2VkKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXBy
b2dyYW1PYmplY3QtPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1dGUpKQor
ICAgICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5nZXRFeGVjdXRhYmxlKCkuaGFzTGlua2Vk
U2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
Tm9BY3RpdmVDb21wdXRlU2hhZGVyU3RhZ2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQzNjEsNyArNDM5OCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXZCYXNlKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrUHJvZ3JhbU5vdExpbmtlZCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFwcm9ncmFt
T2JqZWN0LT5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpHZW9tZXRyeSkpCisgICAg
ICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmdldEV4ZWN1dGFibGUoKS5oYXNMaW5rZWRTaGFk
ZXJTdGFnZShTaGFkZXJUeXBlOjpHZW9tZXRyeSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrTm9B
Y3RpdmVHZW9tZXRyeVNoYWRlclN0YWdlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00Mzg0LDEyICs0NDIxLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXZCYXNlKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQ
cm9ncmFtaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFBy
b2dyYW1pdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZh
bGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00NDEz
LDEyICs0NDUwLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZh
bGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00NDQy
LDEyICs0NDc5LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0U2hhZGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIGlmICgh
VmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAgLTQ0
NzEsMTIgKzQ1MDgsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldFNoYWRlcml2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVu
dHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDUwMCwxMiArNDUzNywxMiBA
QCBib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqcGFyYW1zKQogewogCiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29u
dGV4dCwgYnVmU2l6ZSkpCkBAIC00NTI3LDI5ICs0NTY0LDI5IEBAIGJvb2wgVmFsaWRhdGVHZXRU
ZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1z
KQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LApAQCAtNDU2Myw3ICs0NjAwLDcgQEAgYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJC
YXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHRydWUsIHBhcmFtcyk7CiB9CiAK
LWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLApAQCAtNDU3Nyw3ICs0NjE0LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJh
bWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIHRydWUsIHBhcmFtcyk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCkBAIC00NTg3LDcgKzQ2MjQsNyBAQCBib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKQEAgLTQ1OTcsMTIgKzQ2MzQsMTIgQEAgYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAo
IVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00
NjI1LDEyICs0NjYyLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4
dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDY1MywyOSArNDY5MCwyOSBAQCBib29sIFZhbGlkYXRl
R2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIFVO
SU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRT
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKQEAgLTQ2ODksNyArNDcy
Niw3IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnRl
eHQsIHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZh
bGlkYXRlU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCkBAIC00NzAzLDcgKzQ3NDAsNyBAQCBib29sIFZhbGlkYXRlU2Ft
cGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgYnVm
U2l6ZSwgdHJ1ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CkBAIC00NzEzLDcgKzQ3NTAsNyBAQCBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLApAQCAtNDcyMywxMiArNDc2MCwxMiBAQCBi
b29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJp
YmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJmdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4
dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDc1MSwxMiArNDc4OCwxMiBAQCBib29sIFZhbGlkYXRl
R2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYml2Um9idXN0QU5H
TEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAg
IGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsK
QEAgLTQ3ODAsMTIgKzQ4MTcsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYml2Um9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcG9pbnRlcikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmNvbnN0ICpwb2ludGVyKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RF
bnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAgLTQ4MDksMTIgKzQ4NDYsMTIg
QEAgYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQ
b2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00ODM4LDEyICs0ODc1LDEyIEBAIGJv
b2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0
cmliSXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5
UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDg2NywxMyArNDkwNCwxMyBAQCBi
b29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QWN0
aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9i
dXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00ODk4LDEzICs0OTM1
LDEzIEBAIGJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRJ
bnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
aWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpA
QCAtNDkzMyw3ICs0OTcwLDcgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogLy8gSW4gdGhlIFdlYkdMIDIgQVBJLCB0cnlpbmcg
dG8gcGVyZm9ybSBhIGNsZWFyIHdoZW4gdGhlcmUgaXMgYSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSB0
eXBlIG9mIHRoZQogLy8gc3BlY2lmaWVkIGNsZWFyIHZhbHVlIGFuZCB0aGUgdHlwZSBvZiBhIGJ1
ZmZlciB0aGF0IGlzIGJlaW5nIGNsZWFyZWQgZ2VuZXJhdGVzIGFuCiAvLyBJTlZBTElEX09QRVJB
VElPTiBlcnJvciBpbnN0ZWFkIG9mIHByb2R1Y2luZyB1bmRlZmluZWQgcmVzdWx0cwotYm9vbCBW
YWxpZGF0ZVdlYkdMRnJhbWVidWZmZXJBdHRhY2htZW50Q2xlYXJUeXBlKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlV2ViR0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqdmFsaWRDb21wb25lbnRUeXBl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgdmFsaWRDb21wb25lbnRUeXBlQ291bnQpCkBAIC00OTU0LDcgKzQ5OTEsOSBAQCBib29sIFZh
bGlkYXRlV2ViR0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJvYnVzdENvbXByZXNzZWRU
ZXhJbWFnZUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBpbWFnZVNpemUsIEdMc2l6ZWkg
ZGF0YVNpemUpCitib29sIFZhbGlkYXRlUm9idXN0Q29tcHJlc3NlZFRleEltYWdlQmFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RF
bnRyeVBvaW50KGNvbnRleHQsIGRhdGFTaXplKSkKICAgICB7CkBAIC00OTcyLDcgKzUwMTEsNyBA
QCBib29sIFZhbGlkYXRlUm9idXN0Q29tcHJlc3NlZFRleEltYWdlQmFzZShDb250ZXh0ICpjb250
ZXh0LCBHTHNpemVpIGltYWdlU2l6ZSwgRwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldEJ1ZmZlclBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwb2ludGVyVmVyc2lvbiwKQEAgLTUwNjMs
NyArNTEwMiw3IEBAIGJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgpCkBAIC01MTM2LDcgKzUxNzUsNyBAQCBib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRTaGFkZXJpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZXRTaGFkZXJpdkJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgpCkBAIC01MjA0LDcgKzUyNDMsNyBAQCBib29sIFZhbGlkYXRlR2V0U2hh
ZGVyaXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0VGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKQpAQCAtNTM1Niw3ICs1Mzk1LDcgQEAgYm9vbCBW
YWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCkBAIC01NDUxLDcgKzU0OTAs
NyBAQCBib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliQmFzZShDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUGl4ZWxQYWNrKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUGl4ZWxQYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LApAQCAtNTQ2
MCw3ICs1NDk5LDcgQEAgYm9vbCBWYWxpZGF0ZVBpeGVsUGFjayhDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIC8vIENoZWNrIGZvciBwaXhl
bCBwYWNrIGJ1ZmZlciByZWxhdGVkIEFQSSBlcnJvcnMKICAgICBCdWZmZXIgKnBpeGVsUGFja0J1
ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEJ1ZmZlckJpbmRpbmc6
OlBpeGVsUGFjayk7CkBAIC01NTI3LDcgKzU1NjYsNyBAQCBib29sIFZhbGlkYXRlUGl4ZWxQYWNr
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVS
ZWFkUGl4ZWxzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNC
YXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC01NTM4LDcgKzU1NzcsNyBAQCBi
b29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqY29sdW1ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpyb3dzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYg
KGxlbmd0aCAhPSBudWxscHRyKQogICAgIHsKQEAgLTU3MDIsNyArNTc0MSw3IEBAIGJvb2wgVmFs
aWRhdGVSZWFkUGl4ZWxzQmFzZShDb250ZXh0ICpjb250ZXh0LAogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCkBAIC01ODA0LDggKzU4NDMsOSBA
QCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOgogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9S
OgogICAgICAgICB7Ci0gICAgICAgICAgICBib29sIHJlc3RyaWN0ZWRXcmFwTW9kZXMgPQotICAg
ICAgICAgICAgICAgIHRhcmdldCA9PSBUZXh0dXJlVHlwZTo6RXh0ZXJuYWwgfHwgdGFyZ2V0ID09
IFRleHR1cmVUeXBlOjpSZWN0YW5nbGU7CisgICAgICAgICAgICBib29sIHJlc3RyaWN0ZWRXcmFw
TW9kZXMgPSAoKHRhcmdldCA9PSBUZXh0dXJlVHlwZTo6RXh0ZXJuYWwgJiYKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
Z2xJbWFnZUV4dGVybmFsV3JhcE1vZGVzRVhUKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldCA9PSBUZXh0dXJlVHlwZTo6UmVjdGFuZ2xlKTsKICAgICAg
ICAgICAgIGlmICghVmFsaWRhdGVUZXh0dXJlV3JhcE1vZGVWYWx1ZShjb250ZXh0LCBwYXJhbXMs
IHJlc3RyaWN0ZWRXcmFwTW9kZXMpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTYwMDAsMjYgKzYwNDAsMjYgQEAgYm9vbCBWYWxpZGF0ZVRleFBhcmFt
ZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxh
dGUgYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAqLAordGVtcGxhdGUgYm9v
bCBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKik7Ci10ZW1wbGF0ZSBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShDb250
ZXh0ICosCit0ZW1wbGF0ZSBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250
ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKik7Ci10ZW1wbGF0ZSBib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVyQmFzZShDb250ZXh0ICosCit0ZW1wbGF0ZSBib29sIFZhbGlkYXRlVGV4UGFyYW1l
dGVyQmFzZShjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICopOwogCi1ib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQog
ICAgIHsKQEAgLTYwMzAsNyArNjA3MCw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRl
eChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdkJhc2UoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdkJhc2UoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLApAQCAtNjA5Myw3ICs2MTMzLDcgQEAgYm9v
bCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2QmFzZShDb250ZXh0ICpjb250ZXh0LAog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFt
ZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLApAQCAtNjIwMSwyNiArNjI0MSwyNiBAQCBib29sIFZhbGlkYXRlU2Ft
cGxlclBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdGVtcGxhdGUgYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKENvbnRleHQgKiwK
K3RlbXBsYXRlIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklE
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqKTsKLXRlbXBsYXRl
IGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShDb250ZXh0ICosCit0ZW1wbGF0ZSBi
b29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICopOwotdGVtcGxhdGUgYm9vbCBWYWxpZGF0
ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKENvbnRleHQgKiwKK3RlbXBsYXRlIGJvb2wgVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklELAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICopOwogCi1ib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRl
ckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgpCkBAIC02MjkwLDcgKzYzMzAsNyBAQCBib29sIFZhbGlkYXRl
R2V0U2FtcGxlclBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEludGVybmFsRm9ybWF0aXZCYXNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdkJhc2UoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCkBAIC02MzcyLDggKzY0MTIsOCBAQCBib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3Jt
YXRpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyTm90TXVsdGlzYW1wbGVkKENvbnRleHQgKmNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVm
ZmVyLAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyTm90TXVsdGlzYW1wbGVkKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgbmVlZFJlc291cmNlU2FtcGxlcykKIHsKICAgICBpbnQgc2FtcGxl
cyA9IG5lZWRSZXNvdXJjZVNhbXBsZXMgPyBmcmFtZWJ1ZmZlci0+Z2V0UmVzb3VyY2VTYW1wbGVz
KGNvbnRleHQpCkBAIC02Mzg2LDcgKzY0MjYsNyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJO
b3RNdWx0aXNhbXBsZWQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU11bHRpdGV4dHVyZVVuaXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRl
eHR1cmUpCitib29sIFZhbGlkYXRlTXVsdGl0ZXh0dXJlVW5pdChjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGV4dHVyZSkKIHsKICAgICBpZiAodGV4dHVyZSA8IEdMX1RFWFRVUkUwIHx8
IHRleHR1cmUgPj0gR0xfVEVYVFVSRTAgKyBjb250ZXh0LT5nZXRDYXBzKCkubWF4TXVsdGl0ZXh0
dXJlVW5pdHMpCiAgICAgewpAQCAtNjM5Niw3ICs2NDM2LDcgQEAgYm9vbCBWYWxpZGF0ZU11bHRp
dGV4dHVyZVVuaXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTXVsdGlzYW1wbGUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFs
Rm9ybWF0LApAQCAtNjQ1Myw3ICs2NDkzLDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNdWx0
aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4U3RvcmFnZTJETXVsdGlzYW1wbGVCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlzYW1wbGVCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBl
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBpbnRlcm5hbEZvcm1hdCwKQEAgLTY0NzUsNyArNjUxNSw3IEBAIGJvb2wgVmFsaWRhdGVUZXhT
dG9yYWdlMkRNdWx0aXNhbXBsZUJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFs
aWRhdGVUZXhTdG9yYWdlTXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRl
cm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZl
bFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZl
bFBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCkBAIC02NTQ1LDcgKzY1ODUsMTAgQEAg
Ym9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdkJhc2Uo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZh
bCkKK2Jvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QmFzZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsKQogewogICAgIGlmIChw
bmFtZSAhPSBHTF9TQU1QTEVfUE9TSVRJT04pCiAgICAgewpAQCAtNjU2NSw3ICs2NjA4LDcgQEAg
Ym9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBwbmFtZSwgR0x1aW50IGluZGV4LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlU2FtcGxlTWFza2lCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBH
TGJpdGZpZWxkIG1hc2spCitib29sIFZhbGlkYXRlU2FtcGxlTWFza2lCYXNlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCiB7CiAgICAg
aWYgKG1hc2tOdW1iZXIgPj0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCku
bWF4U2FtcGxlTWFza1dvcmRzKSkKICAgICB7CkBAIC02NTc2LDcgKzY2MTksNyBAQCBib29sIFZh
bGlkYXRlU2FtcGxlTWFza2lCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVy
LCBHTGJpdGZpZWxkIG1hcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZERyYXdB
dHRyaWJzRXJyb3IoQ29udGV4dCAqY29udGV4dCkKK3ZvaWQgUmVjb3JkRHJhd0F0dHJpYnNFcnJv
cihjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIC8vIEFuIG92ZXJmbG93IGNhbiBoYXBw
ZW4gd2hlbiBhZGRpbmcgdGhlIG9mZnNldC4gQ2hlY2sgYWdhaW5zdCBhIHNwZWNpYWwgY29uc3Rh
bnQuCiAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5nZXROb25JbnN0YW5jZWRWZXJ0
ZXhFbGVtZW50TGltaXQoKSA9PQpAQCAtNjU5NCw3ICs2NjM3LDcgQEAgdm9pZCBSZWNvcmREcmF3
QXR0cmlic0Vycm9yKENvbnRleHQgKmNvbnRleHQpCiAgICAgfQogfQogCi1ib29sIFZhbGlkYXRl
TG9zZUNvbnRleHRDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUxvc2VD
b250ZXh0Q0hST01JVU0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgY3VycmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgb3RoZXIpCiB7CkBAIC02
NjMwLDcgKzY2NzMsNyBAQCBib29sIFZhbGlkYXRlTG9zZUNvbnRleHRDSFJPTUlVTShDb250ZXh0
ICpjb250ZXh0LAogfQogCiAvLyBHTF9BTkdMRV90ZXh0dXJlX3N0b3JhZ2VfZXh0ZXJuYWwKLWJv
b2wgVmFsaWRhdGVUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVRleEltYWdlMkRFeHRlcm5hbEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQs
CkBAIC02Njc1LDcgKzY3MTgsNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UyREV4dGVybmFsQU5H
TEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUludmFsaWRhdGVUZXh0dXJlQU5HTEUoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFy
Z2V0KQorYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXh0dXJlQU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0KQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleHR1cmVFeHRlcm5hbFVwZGF0ZUFOR0xFKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuaAppbmRleCA2
YmRlNWFlNzJlY2VmNTg1ZDQ4OTMzMGVhMWZkZWJiYTZmMjg5MzgyLi5hYzdkNzdkYzE1ZmYyYmEy
MmIxNjhjMTYxMGNlODRkYWE0MjNiZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oCkBAIC0zNiw4ICszNiw3IEBAIHN0cnVj
dCBMaW5rZWRVbmlmb3JtOwogY2xhc3MgUHJvZ3JhbTsKIGNsYXNzIFNoYWRlcjsKIAotdm9pZCBT
ZXRSb2J1c3RMZW5ndGhQYXJhbShHTHNpemVpICpsZW5ndGgsIEdMc2l6ZWkgdmFsdWUpOwotYm9v
bCBJc0VUQzJFQUNGb3JtYXQoY29uc3QgR0xlbnVtIGZvcm1hdCk7Cit2b2lkIFNldFJvYnVzdExl
bmd0aFBhcmFtKGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwgR0xzaXplaSB2YWx1ZSk7CiBib29sIFZh
bGlkVGV4dHVyZVRhcmdldChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBl
KTsKIGJvb2wgVmFsaWRUZXh0dXJlMkRUYXJnZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4
dHVyZVR5cGUgdHlwZSk7CiBib29sIFZhbGlkVGV4dHVyZTNEVGFyZ2V0KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCk7CkBAIC00OCw3ICs0Nyw3IEBAIGJvb2wgVmFs
aWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0
dXJlVGFyZ2V0IHRhcmdlCiBib29sIFZhbGlkVGV4TGV2ZWxEZXN0aW5hdGlvblRhcmdldChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlKTsKIGJvb2wgVmFsaWRGcmFtZWJ1
ZmZlclRhcmdldChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wg
VmFsaWRNaXBMZXZlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlLCBH
TGludCBsZXZlbCk7Ci1ib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTcyLDcgKzcxLDcgQEAgYm9vbCBWYWxp
ZENvbXByZXNzZWRTdWJJbWFnZVNpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0ZXh0dXJlV2lkdGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdGV4dHVyZUhlaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0ZXh0dXJlRGVwdGgpOwotYm9vbCBWYWxpZElt
YWdlRGF0YVNpemUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRJbWFnZURhdGFTaXplKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlw
ZSB0ZXhUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LApAQCAtODQsNyArODMsNyBAQCBib29s
IFZhbGlkSW1hZ2VEYXRhU2l6ZShDb250ZXh0ICpjb250ZXh0LAogCiBib29sIFZhbGlkUXVlcnlU
eXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSBxdWVyeVR5cGUpOwogCi1ib29s
IFZhbGlkYXRlV2ViR0xWZXJ0ZXhBdHRyaWJQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlV2ViR0xWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUg
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5v
cm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c3RyaWRlLApAQCAtOTQsMjcgKzkzLDI3IEBAIGJvb2wgVmFsaWRhdGVXZWJHTFZlcnRleEF0dHJp
YlBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKIC8vIFJldHVybnMgdmFsaWQgcHJvZ3JhbSBpZiBp
ZCBpcyBhIHZhbGlkIHByb2dyYW0gbmFtZQogLy8gRXJyb3JzIElOVkFMSURfT1BFUkFUSU9OIGlm
IHZhbGlkIHNoYWRlciBpcyBnaXZlbiBhbmQgcmV0dXJucyBOVUxMCiAvLyBFcnJvcnMgSU5WQUxJ
RF9WQUxVRSBvdGhlcndpc2UgYW5kIHJldHVybnMgTlVMTAotUHJvZ3JhbSAqR2V0VmFsaWRQcm9n
cmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBpZCk7CitQcm9ncmFtICpHZXRW
YWxpZFByb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIGlkKTsK
IAogLy8gUmV0dXJucyB2YWxpZCBzaGFkZXIgaWYgaWQgaXMgYSB2YWxpZCBzaGFkZXIgbmFtZQog
Ly8gRXJyb3JzIElOVkFMSURfT1BFUkFUSU9OIGlmIHZhbGlkIHByb2dyYW0gaXMgZ2l2ZW4gYW5k
IHJldHVybnMgTlVMTAogLy8gRXJyb3JzIElOVkFMSURfVkFMVUUgb3RoZXJ3aXNlIGFuZCByZXR1
cm5zIE5VTEwKLVNoYWRlciAqR2V0VmFsaWRTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVy
UHJvZ3JhbUlEIGlkKTsKK1NoYWRlciAqR2V0VmFsaWRTaGFkZXIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgU2hhZGVyUHJvZ3JhbUlEIGlkKTsKIAotYm9vbCBWYWxpZGF0ZUF0dGFjaG1lbnRUYXJn
ZXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1lbnQpOwotYm9vbCBWYWxpZGF0ZVJl
bmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0
dGFjaG1lbnQpOworYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFz
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyUGFyYW1ldGVy
cyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
UGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlbmRlcmJ1
ZmZlcnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKTsKIAotYm9vbCBWYWxpZGF0ZUJsaXRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGl0RnJh
bWVidWZmZXJQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDEsCkBAIC0xMjYsNyArMTI1LDcgQEAgYm9vbCBW
YWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpOwogCi1ib29s
IFZhbGlkYXRlUGl4ZWxQYWNrKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUGl4ZWxQ
YWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4LApAQCAtMTM1LDkgKzEzNCw5IEBAIGJvb2wgVmFsaWRhdGVQ
aXhlbFBhY2soQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpwaXhlbHMpOworICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhl
bHMpOwogCi1ib29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApA
QCAtMTQ4LDggKzE0Nyw4IEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpOworYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtMTU3LDExICsxNTYsMTEg
QEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNp
emVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpyb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCkBAIC0xNjksOCArMTY4LDggQEAgYm9vbCBWYWxpZGF0ZVJlYWRuUGl4
ZWxzRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1Jv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBA
IC0xNzgsNzEgKzE3Nyw4OSBAQCBib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY29sdW1ucywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKTsKLQotYm9vbCBWYWxpZGF0
ZUdlblF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgUXVlcnlJRCAq
aWRzKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVRdWVyaWVzRVhUKGdsOjpDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkcyk7Ci1ib29sIFZhbGlkYXRlSXNRdWVyeUVY
VChnbDo6Q29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCk7Ci1ib29sIFZhbGlkYXRlQmVnaW5R
dWVyeUJhc2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCk7
Ci1ib29sIFZhbGlkYXRlQmVnaW5RdWVyeUVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUg
dGFyZ2V0LCBRdWVyeUlEIGlkKTsKLWJvb2wgVmFsaWRhdGVFbmRRdWVyeUJhc2UoQ29udGV4dCAq
Y29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCk7Ci1ib29sIFZhbGlkYXRlRW5kUXVlcnlFWFQoQ29u
dGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCk7Ci1ib29sIFZhbGlkYXRlUXVlcnlDb3Vu
dGVyRVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIFF1ZXJ5VHlwZSB0YXJnZXQpOwot
Ym9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSAqbnVtUGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVH
ZXRRdWVyeWl2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqcm93cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOworCitib29sIFZhbGlkYXRlR2VuUXVlcmllc0VYVChj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkcyk7Citi
b29sIFZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkcyk7Citib29sIFZhbGlkYXRlSXNRdWVyeUVYVChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkKTsKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBRdWVyeUlEIGlk
KTsKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1
ZXJ5VHlwZSB0YXJnZXQsIFF1ZXJ5SUQgaWQpOworYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5QmFzZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0KTsKK2Jvb2wgVmFsaWRhdGVF
bmRRdWVyeUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0KTsKK2Jv
b2wgVmFsaWRhdGVRdWVyeUNvdW50ZXJFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlJ
RCBpZCwgUXVlcnlUeXBlIHRhcmdldCk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeVR5
cGUgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUdldFF1ZXJ5aXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlUeXBl
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7Ci1ib29sIFZhbGlkYXRl
R2V0UXVlcnlPYmplY3RpdkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZF
WFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFF1ZXJ5SUQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UXVlcnlJRCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoQ29udGV4
dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVl
cnlJRCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1
ZXJ5SUQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKENv
bnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1z
KTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0
dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRdWVyeUlEIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xl
bnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVy
eU9iamVjdHVpNjR2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50NjQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQg
KnBhcmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZShDb250ZXh0ICpjb250
ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBW
YWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICoqdW5pZm9ybU91dCk7Ci1ib29sIFZh
bGlkYXRlVW5pZm9ybTFpdlZhbHVlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5p
Zm9ybTFpdlZhbHVlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB1bmlmb3JtVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnZhbHVlKTsKIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVVbmlmb3JtVmFsdWUoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHZhbHVlVHlwZSwgR0xlbnVtIHVuaWZvcm1UeXBlKQorQU5H
TEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVVbmlmb3JtVmFsdWUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHZhbHVlVHlwZSwgR0xlbnVtIHVuaWZvcm1UeXBlKQogewogICAgIC8vIENoZWNr
IHRoYXQgdGhlIHZhbHVlIHR5cGUgaXMgY29tcGF0aWJsZSB3aXRoIHVuaWZvcm0gdHlwZS4KICAg
ICAvLyBEbyB0aGUgY2hlYXBlciB0ZXN0IGZpcnN0LCBmb3IgYSBsaXR0bGUgZXh0cmEgc3BlZWQu
CkBAIC0yNTQsNDQgKzI3MSw0NyBAQCBBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZVVuaWZvcm1W
YWx1ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdmFsdWVUeXBlLCBHTGVudQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51bSB1bmlmb3JtVHlwZSk7Ci1ib29sIFZhbGlk
YXRlVW5pZm9ybShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdW5pZm9ybVR5cGUsIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51bSB1bmlmb3JtVHlwZSk7Citib29s
IFZhbGlkYXRlVW5pZm9ybShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHVuaWZvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCk7Citi
b29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hdHJpeFR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
KTsKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFudlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpwYXJhbXMpOwotYm9vbCBW
YWxpZGF0ZUdldEZsb2F0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xlYW4gKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlR2V0RmxvYXR2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVN0YXRlUXVl
cnkoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVTdGF0ZVF1ZXJ5KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm5hdGl2ZVR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0SW50
ZWdlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEludGVn
ZXJ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludDY0ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVSb2J1c3RTdGF0ZVF1ZXJ5
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUm9idXN0U3RhdGVRdWVyeShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpuYXRpdmVUeXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpudW1QYXJhbXMpOwogCi1ib29sIFZh
bGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKQEAgLTMwNiwxMCArMzI2LDEwIEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1h
Z2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGb3JtYXQgKnRleHR1cmVGb3JtYXRPdXQpOwogCi12b2lkIFJlY29y
ZERyYXdNb2RlRXJyb3IoQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlKTsKLWNv
bnN0IGNoYXIgKlZhbGlkYXRlRHJhd0VsZW1lbnRzU3RhdGVzKENvbnRleHQgKmNvbnRleHQpOwor
dm9pZCBSZWNvcmREcmF3TW9kZUVycm9yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2
ZU1vZGUgbW9kZSk7Citjb25zdCBjaGFyICpWYWxpZGF0ZURyYXdFbGVtZW50c1N0YXRlcyhjb25z
dCBDb250ZXh0ICpjb250ZXh0KTsKIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3QmFz
ZShDb250ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1vZGUpCitBTkdMRV9JTkxJTkUgYm9v
bCBWYWxpZGF0ZURyYXdCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUg
bW9kZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5pc1ZhbGlkRHJhd01v
ZGUobW9kZSkpCiAgICAgewpAQCAtMzM0LDE5OSArMzU0LDIwMSBAQCBBTkdMRV9JTkxJTkUgYm9v
bCBWYWxpZGF0ZURyYXdCYXNlKENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgbW9kZSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRC
YXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJh
c2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHByaW1jb3VudCk7Ci1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhU
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEVYVChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBw
cmltY291bnQpOwogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1j
b3VudCk7Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0Vs
ZW1lbnRzVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHByaW1jb3VudCk7CiAKLWJvb2wgVmFsaWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUo
Q29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEVYVChDb250ZXh0
ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEVYVChjb25zdCBDb250ZXh0
ICpjb250ZXh0KTsKIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhc2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
KTsKIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CYXNlKENvbnRleHQgKmNvbnRleHQsIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbik7Ci1ib29sIFZhbGlkYXRlR2V0blVu
aWZvcm1mdkVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CYXNl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2
Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRh
dGVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1m
dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVH
ZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBW
YWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7
Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVEaXNjYXJk
RnJhbWVidWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGlzY2FyZEZy
YW1lYnVmZmVyQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWZhdWx0RnJhbWVidWZmZXIpOwogCi1ib29s
IFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcik7Ci1ib29sIFZhbGlkYXRlUHVzaEdyb3VwTWFya2Vy
RVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIp
OworYm9vbCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpOworYm9vbCBWYWxpZGF0ZVB1
c2hHcm91cE1hcmtlckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwg
Y29uc3QgY2hhciAqbWFya2VyKTsKIAotYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVy
ZTJET0VTKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OlRleHR1cmVUeXBlIHR5cGUsCitib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwotYm9vbCBWYWxp
ZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVnbEltYWdlT0VTIGltYWdlKTsKIAotYm9vbCBWYWxp
ZGF0ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBh
cnJheSk7Citib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5QmFzZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KTsKIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5h
cnlCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeUJhc2Uo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYmluYXJ5Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmJpbmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZW5n
dGgpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlCYXNlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJpbmFyeSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYmluYXJ5Rm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSk7CiAKLWJv
b2wgVmFsaWRhdGVEcmF3QnVmZmVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBj
b25zdCBHTGVudW0gKmJ1ZnMpOworYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzQmFzZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CiAKLWJvb2wg
VmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVVbm1hcEJ1
ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQpOwotYm9vbCBW
YWxpZGF0ZU1hcEJ1ZmZlclJhbmdlQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVVbm1hcEJ1ZmZlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0
YXJnZXQpOworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlQmFzZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpOwotYm9vbCBWYWxp
ZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0
ciBsZW5ndGgpOwogCi1ib29sIFZhbGlkYXRlR2VuT3JEZWxldGUoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbik7Citib29sIFZhbGlkYXRlR2VuT3JEZWxldGUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgbik7CiAKLWJvb2wgVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KENvbnRleHQgKmNv
bnRleHQsIEdMc2l6ZWkgYnVmU2l6ZSk7Ci1ib29sIFZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgbnVtUGFyYW1zKTsKK2Jv
b2wgVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgYnVmU2l6ZSk7Citib29sIFZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgbnVtUGFyYW1zKTsKIAotYm9vbCBW
YWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2QmFzZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpudW1QYXJhbXMpOwogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFy
YW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFt
ZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBwb2ludGVyVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFt
aXZCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2QmFzZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJh
bXMpOwogCi1ib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZCYXNlKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZCYXNl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKTsKIAotYm9vbCBWYWxpZGF0ZUdldFNo
YWRlcml2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNoYWRlcml2QmFz
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgc2hhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCk7
CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKTsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFBhcmFtVHlwZT4KLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB2ZWN0b3JQYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRy
aWJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliQmFz
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwb2ludGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdXJlSW50ZWdlckVudHJ5UG9pbnQpOwog
Ci1BTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZVZlcnRleEZvcm1hdChDb250ZXh0ICpjb250ZXh0
LAorQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVWZXJ0ZXhGb3JtYXQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBl
Q2FzZSB2YWxpZGF0aW9uKQpAQCAtNTcyLDcgKzU5NCw3IEBAIEFOR0xFX0lOTElORSBib29sIFZh
bGlkYXRlVmVydGV4Rm9ybWF0KENvbnRleHQgKmNvbnRleHQsCiB9CiAKIC8vIE5vdGU6IFRoZXNl
IGJ5dGUsIHNob3J0LCBhbmQgaW50IHR5cGVzIGFyZSBhbGwgY29udmVydGVkIHRvIGZsb2F0IGZv
ciB0aGUgc2hhZGVyLgotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVGbG9hdFZlcnRleEZvcm1h
dChDb250ZXh0ICpjb250ZXh0LAorQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVGbG9hdFZlcnRl
eEZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZSkKQEAgLTU4MSw3ICs2
MDMsNyBAQCBBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZUZsb2F0VmVydGV4Rm9ybWF0KENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdl
dFN0YXRlQ2FjaGUoKS5nZXRWZXJ0ZXhBdHRyaWJUeXBlVmFsaWRhdGlvbih0eXBlKSk7CiB9CiAK
LUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlSW50ZWdlclZlcnRleEZvcm1hdChDb250ZXh0ICpj
b250ZXh0LAorQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVJbnRlZ2VyVmVydGV4Rm9ybWF0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlKQpAQCAtNTkwLDc1ICs2MTIs
NzcgQEAgQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVJbnRlZ2VyVmVydGV4Rm9ybWF0KENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgIGNvbnRleHQsIGluZGV4LCBzaXplLCBjb250ZXh0LT5nZXRT
dGF0ZUNhY2hlKCkuZ2V0SW50ZWdlclZlcnRleEF0dHJpYlR5cGVWYWxpZGF0aW9uKHR5cGUpKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVdlYkdMRnJhbWVidWZmZXJBdHRhY2htZW50Q2xlYXJUeXBlKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlV2ViR0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRD
bGVhclR5cGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqdmFsaWRD
b21wb25lbnRUeXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgdmFsaWRDb21wb25lbnRUeXBlQ291bnQpOwogCi1ib29sIFZhbGlkYXRl
Um9idXN0Q29tcHJlc3NlZFRleEltYWdlQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGlt
YWdlU2l6ZSwgR0xzaXplaSBkYXRhU2l6ZSk7Citib29sIFZhbGlkYXRlUm9idXN0Q29tcHJlc3Nl
ZFRleEltYWdlQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplKTsKIAotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCk7
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4KTsKIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2QmFz
ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCk7CiAKLWJv
b2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
ckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFz
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2ZWN0b3JQ
YXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyYW1UeXBl
ICpwYXJhbXMpOwogCi1ib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdkJhc2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2QmFzZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bnVtUGFyYW1zKTsKIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyTm90TXVsdGlzYW1wbGVkKENv
bnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyTm90TXVs
dGlzYW1wbGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbmVlZFJlc291cmNlU2FtcGxl
cyk7CiAKLWJvb2wgVmFsaWRhdGVNdWx0aXRleHR1cmVVbml0KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0ZXh0dXJlKTsKK2Jvb2wgVmFsaWRhdGVNdWx0aXRleHR1cmVVbml0KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKTsKIAogYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZl
ZWRiYWNrUHJpbWl0aXZlTW9kZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIHRyYW5zZm9ybUZl
ZWRiYWNrUHJpbWl0aXZlTW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJpbWl0aXZlTW9kZSByZW5kZXJQcmltaXRpdmVNb2RlKTsKIAogLy8gQ29tbW9u
IHZhbGlkYXRpb24gZm9yIDJEIGFuZCAzRCB2YXJpYW50cyBvZiBUZXhTdG9yYWdlKk11bHRpc2Ft
cGxlLgotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKIAotYm9vbCBW
YWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQmFzZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0KTsKIAotYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVy
QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVy
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoKTsKIAotYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlckJhc2UoQ29u
dGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQpOwotYm9vbCBWYWxpZGF0ZUluZGV4
ZWRTdGF0ZVF1ZXJ5KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4
LCBHTHNpemVpICpsZW5ndGgpOwotYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJz
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwQnVmZmVyQmFzZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCk7Citib29sIFZhbGlkYXRlSW5kZXhl
ZFN0YXRlUXVlcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQg
aW5kZXgsIEdMc2l6ZWkgKmxlbmd0aCk7Citib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UyRFBhcmFt
ZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC02NzUsNyArNjk5LDcgQEAgYm9vbCBW
YWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRh
dGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCkBAIC02ODgsMTQgKzcxMiwxNCBAQCBib29sIFZhbGlkYXRlRVMzQ29weVRl
eEltYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpOwotYm9vbCBWYWxpZGF0ZUVTM1Rl
eFN0b3JhZ2UyRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFUzNU
ZXhTdG9yYWdlMkRQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpOwotYm9vbCBW
YWxpZGF0ZUVTM1RleFN0b3JhZ2UzRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVFUzNUZXhTdG9yYWdlM0RQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwKQEAgLTcwMyw4ICs3MjcsMTEgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2Uz
RFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBkZXB0aCk7CiAKLWJvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBs
ZWZ2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xm
bG9hdCAqdmFsKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUJhc2UoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzayk7Citib29sIFZhbGlkYXRlR2V0
TXVsdGlzYW1wbGVmdkJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbCk7Citib29sIFZhbGlkYXRlU2FtcGxlTWFza2lCYXNlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2sp
OwogCiAvLyBVdGlsaXR5IG1hY3JvIGZvciBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbiBtZXRob2Rz
IGluc2lkZSBWYWxpZGF0aW9uLgogI2RlZmluZSBBTkdMRV9IQU5ETEVfVkFMSURBVElPTl9FUlIo
WCkgXApAQCAtNzE3LDcgKzc0NCw4IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUJhc2UoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzCiAvLyBpbmNv
bmdydWVudCB3aXRoIHRoZSBvdGhlciBlcnJvcnMuCiAvLyBJbmxpbmVkIGZvciBzcGVlZC4KIHRl
bXBsYXRlIDxHTGVudW0gRXJyb3JDb2RlID0gR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04+Ci1BTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyQ29tcGxldGUoQ29udGV4
dCAqY29udGV4dCwgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQorQU5HTEVfSU5MSU5FIGJvb2wg
VmFsaWRhdGVGcmFtZWJ1ZmZlckNvbXBsZXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyKQogewogICAgIGlmICghZnJhbWVidWZmZXItPmlzQ29tcGxldGUoY29u
dGV4dCkpCiAgICAgewpAQCAtNzI4LDExICs3NTYsMTEgQEAgQU5HTEVfSU5MSU5FIGJvb2wgVmFs
aWRhdGVGcmFtZWJ1ZmZlckNvbXBsZXRlKENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVmZmVyICpm
cmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3U3RhdGVz
KENvbnRleHQgKmNvbnRleHQpOworY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3U3RhdGVzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQpOwogCi12b2lkIFJlY29yZERyYXdBdHRyaWJzRXJyb3IoQ29udGV4
dCAqY29udGV4dCk7Cit2b2lkIFJlY29yZERyYXdBdHRyaWJzRXJyb3IoY29uc3QgQ29udGV4dCAq
Y29udGV4dCk7CiAKLUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0F0dHJpYnMoQ29udGV4
dCAqY29udGV4dCwgaW50NjRfdCBtYXhWZXJ0ZXgpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0
ZURyYXdBdHRyaWJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGludDY0X3QgbWF4VmVydGV4KQog
ewogICAgIGlmIChtYXhWZXJ0ZXggPiBjb250ZXh0LT5nZXRTdGF0ZUNhY2hlKCkuZ2V0Tm9uSW5z
dGFuY2VkVmVydGV4RWxlbWVudExpbWl0KCkpCiAgICAgewpAQCAtNzQzLDcgKzc3MSw3IEBAIEFO
R0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0F0dHJpYnMoQ29udGV4dCAqY29udGV4dCwgaW50
NjRfdCBtYXhWZXJ0ZXgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUFOR0xFX0lOTElORSBib29s
IFZhbGlkYXRlRHJhd0FycmF5c0F0dHJpYnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNBdHRy
aWJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQog
ewogICAgIGlmICghY29udGV4dC0+aXNCdWZmZXJBY2Nlc3NWYWxpZGF0aW9uRW5hYmxlZCgpKQog
ICAgIHsKQEAgLTc2Niw3ICs3OTQsNyBAQCBBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdB
cnJheXNBdHRyaWJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGZpcnN0LCBHTHNpegogICAgIHJl
dHVybiBWYWxpZGF0ZURyYXdBdHRyaWJzKGNvbnRleHQsIG1heFZlcnRleCk7CiB9CiAKLUFOR0xF
X0lOTElORSBib29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEF0dHJpYnMoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgcHJpbWNvdW50KQorQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3SW5zdGFu
Y2VkQXR0cmlicyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBwcmltY291bnQpCiB7CiAg
ICAgaWYgKCFjb250ZXh0LT5pc0J1ZmZlckFjY2Vzc1ZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAg
ewpAQCAtNzgyLDcgKzgxMCw3IEBAIEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0luc3Rh
bmNlZEF0dHJpYnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcHJpbWNvdW50CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0FycmF5c0NvbW1vbihD
b250ZXh0ICpjb250ZXh0LAorQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzQ29t
bW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC04MjUsNyArODUzLDcgQEAg
QU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzQ29tbW9uKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0FycmF5c0F0dHJpYnMoY29udGV4dCwgZmlyc3Qs
IGNvdW50KTsKIH0KIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNl
KENvbnRleHQgKmNvbnRleHQsCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50
c0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlKQogewpAQCAtODU1
LDcgKzg4Myw3IEBAIEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZShD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1BTkdMRV9JTkxJTkUgYm9v
bCBWYWxpZGF0ZURyYXdFbGVtZW50c0NvbW1vbihDb250ZXh0ICpjb250ZXh0LAorQU5HTEVfSU5M
SU5FIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNDb21tb24oY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMS5jcHAKaW5kZXggNTk0ZmEzMDgzYmVh
YmQyZTE3MGUxMTI1YjA4YmZkYjMwM2MzNTE3Yi4uZmMxZDZjY2QwZDgzMjFlMTQwOTRjYWM4YTBh
ZGM3ODdlOGY4MjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FUzEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uRVMxLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2Ug
Z2wKIHsKIHVzaW5nIG5hbWVzcGFjZSBlcnI7CiAKLWJvb2wgVmFsaWRhdGVBbHBoYUZ1bmNDb21t
b24oQ29udGV4dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBmdW5jKQorYm9vbCBWYWxpZGF0ZUFs
cGhhRnVuY0NvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBBbHBoYVRlc3RGdW5jIGZ1bmMp
CiB7CiAgICAgc3dpdGNoIChmdW5jKQogICAgIHsKQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBWYWxp
ZGF0ZUFscGhhRnVuY0NvbW1vbihDb250ZXh0ICpjb250ZXh0LCBBbHBoYVRlc3RGdW5jIGZ1bmMp
CiAgICAgfQogfQogCi1ib29sIFZhbGlkYXRlQ2xpZW50U3RhdGVDb21tb24oQ29udGV4dCAqY29u
dGV4dCwgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5VHlwZSkKK2Jvb2wgVmFsaWRhdGVDbGll
bnRTdGF0ZUNvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5
cGUgYXJyYXlUeXBlKQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwog
ICAgIHN3aXRjaCAoYXJyYXlUeXBlKQpAQCAtNzIsNyArNzIsNyBAQCBib29sIFZhbGlkYXRlQ2xp
ZW50U3RhdGVDb21tb24oQ29udGV4dCAqY29udGV4dCwgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFy
cmF5VHlwZQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZUJ1aWx0aW5WZXJ0ZXhBdHRyaWJ1dGVD
b21tb24oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCdWlsdGluVmVydGV4QXR0cmli
dXRlQ29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlUeXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlw
ZSwKQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFZhbGlkYXRlQnVpbHRpblZlcnRleEF0dHJpYnV0
ZUNvbW1vbihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlTGlnaHRDYXBzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCkKK2Jvb2wgVmFs
aWRhdGVMaWdodENhcHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0KQogewog
ICAgIGlmIChsaWdodCA8IEdMX0xJR0hUMCB8fCBsaWdodCA+PSBHTF9MSUdIVDAgKyBjb250ZXh0
LT5nZXRDYXBzKCkubWF4TGlnaHRzKQogICAgIHsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIFZh
bGlkYXRlTGlnaHRDYXBzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0Q29tbW9uKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlTGlnaHRDb21tb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbGlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKQpAQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgVmFsaWRhdGVMaWdodENv
bW1vbihDb250ZXh0ICpjb250ZXh0LAogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0U2lu
Z2xlQ29tcG9uZW50KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTGlnaHRTaW5nbGVD
b21wb25lbnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbGlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBwYXJhbSkKQEAgLTIzOCw3ICsyMzgsNyBAQCBib29sIFZhbGlkYXRlTGlnaHRT
aW5nbGVDb21wb25lbnQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU1hdGVyaWFsQ29tbW9uKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlTWF0ZXJpYWxDb21tb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXRlcmlhbFBhcmFtZXRlciBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICpwYXJhbXMpCkBAIC0yNDYsNiArMjQ2LDcgQEAgYm9vbCBWYWxpZGF0ZU1hdGVy
aWFsQ29tbW9uKENvbnRleHQgKmNvbnRleHQsCiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CiAg
ICAgICAgIGNhc2UgTWF0ZXJpYWxQYXJhbWV0ZXI6OkFtYmllbnQ6CisgICAgICAgIGNhc2UgTWF0
ZXJpYWxQYXJhbWV0ZXI6OkFtYmllbnRBbmREaWZmdXNlOgogICAgICAgICBjYXNlIE1hdGVyaWFs
UGFyYW1ldGVyOjpEaWZmdXNlOgogICAgICAgICBjYXNlIE1hdGVyaWFsUGFyYW1ldGVyOjpTcGVj
dWxhcjoKICAgICAgICAgY2FzZSBNYXRlcmlhbFBhcmFtZXRlcjo6RW1pc3Npb246CkBAIC0yNjMs
NyArMjY0LDcgQEAgYm9vbCBWYWxpZGF0ZU1hdGVyaWFsQ29tbW9uKENvbnRleHQgKmNvbnRleHQs
CiAgICAgfQogfQogCi1ib29sIFZhbGlkYXRlTWF0ZXJpYWxTZXR0aW5nKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlTWF0ZXJpYWxTZXR0aW5nKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQpAQCAtMjc5LDcgKzI4MCw3IEBA
IGJvb2wgVmFsaWRhdGVNYXRlcmlhbFNldHRpbmcoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gVmFsaWRhdGVNYXRlcmlhbENvbW1vbihjb250ZXh0LCBmYWNlLCBwbmFtZSwgcGFyYW1zKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU1hdGVyaWFsUXVlcnkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lKQorYm9vbCBWYWxpZGF0ZU1hdGVyaWFsUXVl
cnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lKQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogCkBAIC0y
OTQsNyArMjk1LDcgQEAgYm9vbCBWYWxpZGF0ZU1hdGVyaWFsUXVlcnkoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW0KICAgICByZXR1cm4gVmFsaWRh
dGVNYXRlcmlhbENvbW1vbihjb250ZXh0LCBmYWNlLCBwbmFtZSwgZHVtbXlQYXJhbXMpOwogfQog
Ci1ib29sIFZhbGlkYXRlTWF0ZXJpYWxTaW5nbGVDb21wb25lbnQoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVNYXRlcmlhbFNpbmdsZUNvbXBvbmVudChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0p
CkBAIC0zMTMsNyArMzE0LDcgQEAgYm9vbCBWYWxpZGF0ZU1hdGVyaWFsU2luZ2xlQ29tcG9uZW50
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVM
aWdodE1vZGVsQ29tbW9uKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSkKK2Jvb2wgVmFs
aWRhdGVMaWdodE1vZGVsQ29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICBzd2l0Y2gg
KHBuYW1lKQpAQCAtMzI3LDcgKzMyOCw3IEBAIGJvb2wgVmFsaWRhdGVMaWdodE1vZGVsQ29tbW9u
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRh
dGVMaWdodE1vZGVsU2luZ2xlQ29tcG9uZW50KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSkKK2Jvb2wgVmFsaWRhdGVMaWdodE1vZGVsU2luZ2xlQ29tcG9uZW50KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSkKIHsKICAgICBpZiAoIVZhbGlkYXRlTGlnaHRNb2RlbENv
bW1vbihjb250ZXh0LCBwbmFtZSkpCiAgICAgewpAQCAtMzQ0LDcgKzM0NSw3IEBAIGJvb2wgVmFs
aWRhdGVMaWdodE1vZGVsU2luZ2xlQ29tcG9uZW50KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bmFtZSkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGlwUGxhbmVDb21tb24oQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBsYW5lKQorYm9vbCBWYWxpZGF0ZUNsaXBQbGFuZUNvbW1vbihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVf
SVNfR0xFUzEoY29udGV4dCk7CiAKQEAgLTM1Nyw3ICszNTgsNyBAQCBib29sIFZhbGlkYXRlQ2xp
cFBsYW5lQ29tbW9uKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZvZ0NvbW1vbihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVGb2dDb21tb24o
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJh
bXMpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAKQEAgLTM5Niw3
ICszOTcsNyBAQCBib29sIFZhbGlkYXRlRm9nQ29tbW9uKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4RW52Q29tbW9uKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4RW52Q29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpCkBAIC01NDAsNyArNTQxLDkgQEAgYm9vbCBWYWxpZGF0ZVRl
eEVudkNvbW1vbihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0VGV4RW52Q29tbW9uKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0LCBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lKQorYm9vbCBWYWxpZGF0ZUdldFRl
eEVudkNvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZSkKIHsKICAgICBHTGZsb2F0IGR1bW15WzRd
ID0ge307CiAgICAgc3dpdGNoIChwbmFtZSkKQEAgLTU4MCw3ICs1ODMsOSBAQCBib29sIFZhbGlk
YXRlR2V0VGV4RW52Q29tbW9uKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVFbnZUYXJnZXQgdGFy
Z2V0LCBUZXh0dXJlRQogICAgIHJldHVybiBWYWxpZGF0ZVRleEVudkNvbW1vbihjb250ZXh0LCB0
YXJnZXQsIHBuYW1lLCBkdW1teSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlckNv
bW1vbihDb250ZXh0ICpjb250ZXh0LCBQb2ludFBhcmFtZXRlciBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyQ29tbW9uKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRQYXJh
bWV0ZXIgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqcGFyYW1zKQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwog
CkBAIC02MDcsNyArNjEyLDcgQEAgYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyQ29tbW9uKENv
bnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9pbnRTaXplQ29tbW9uKENvbnRleHQgKmNvbnRleHQs
IEdMZmxvYXQgc2l6ZSkKK2Jvb2wgVmFsaWRhdGVQb2ludFNpemVDb21tb24oY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xmbG9hdCBzaXplKQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMx
KGNvbnRleHQpOwogCkBAIC02MjAsNyArNjI1LDcgQEAgYm9vbCBWYWxpZGF0ZVBvaW50U2l6ZUNv
bW1vbihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVEcmF3VGV4Q29tbW9uKENvbnRleHQgKmNvbnRleHQsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpCitib29sIFZhbGlkYXRlRHJhd1RleENvbW1vbihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQogewogICAgIEFOR0xFX1ZB
TElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogCkBAIC02MzgsNjUgKzY0Myw4MSBAQCBib29sIFZh
bGlkYXRlRHJhd1RleENvbW1vbihDb250ZXh0ICpjb250ZXh0LCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KQogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVBbHBoYUZ1bmMoQ29udGV4
dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBmdW5jLCBHTGZsb2F0IHJlZikKK2Jvb2wgVmFsaWRh
dGVBbHBoYUZ1bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBmdW5jLCBH
TGZsb2F0IHJlZikKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAg
ICByZXR1cm4gVmFsaWRhdGVBbHBoYUZ1bmNDb21tb24oY29udGV4dCwgZnVuYyk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVBbHBoYUZ1bmN4KENvbnRleHQgKmNvbnRleHQsIEFscGhhVGVzdEZ1bmMgZnVu
YywgR0xmaXhlZCByZWYpCitib29sIFZhbGlkYXRlQWxwaGFGdW5jeChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBBbHBoYVRlc3RGdW5jIGZ1bmMsIEdMZml4ZWQgcmVmKQogewogICAgIEFOR0xFX1ZB
TElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVybiBWYWxpZGF0ZUFscGhhRnVuY0Nv
bW1vbihjb250ZXh0LCBmdW5jKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyQ29sb3J4KENvbnRl
eHQgKmNvbnRleHQsIEdMZml4ZWQgcmVkLCBHTGZpeGVkIGdyZWVuLCBHTGZpeGVkIGJsdWUsIEdM
Zml4ZWQgYWxwaGEpCitib29sIFZhbGlkYXRlQ2xlYXJDb2xvcngoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHJlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZpeGVkIGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGFscGhhKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyRGVwdGh4KENvbnRl
eHQgKmNvbnRleHQsIEdMZml4ZWQgZGVwdGgpCitib29sIFZhbGlkYXRlQ2xlYXJEZXB0aHgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBkZXB0aCkKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGllbnRBY3RpdmVUZXh0dXJlKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0ZXh0dXJlKQorYm9vbCBWYWxpZGF0ZUNsaWVudEFjdGl2ZVRleHR1cmUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpCiB7CiAgICAgQU5HTEVfVkFMSURB
VEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIFZhbGlkYXRlTXVsdGl0ZXh0dXJlVW5p
dChjb250ZXh0LCB0ZXh0dXJlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsaXBQbGFuZWYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBjb25zdCBHTGZsb2F0ICplcW4pCitib29sIFZhbGlk
YXRlQ2xpcFBsYW5lZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0
IEdMZmxvYXQgKmVxbikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVDbGlwUGxhbmVDb21tb24oY29u
dGV4dCwgcGxhbmUpOwogfQogCi1ib29sIFZhbGlkYXRlQ2xpcFBsYW5leChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZml4ZWQgKmVxdWF0aW9uKQorYm9vbCBWYWxpZGF0
ZUNsaXBQbGFuZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBjb25zdCBH
TGZpeGVkICplcXVhdGlvbikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVDbGlwUGxhbmVDb21tb24o
Y29udGV4dCwgcGxhbmUpOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0ZihDb250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFs
cGhhKQorYm9vbCBWYWxpZGF0ZUNvbG9yNGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgYWxwaGEpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEo
Y29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjR1YihD
b250ZXh0ICpjb250ZXh0LCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVl
LCBHTHVieXRlIGFscGhhKQorYm9vbCBWYWxpZGF0ZUNvbG9yNHViKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSByZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgR0x1Ynl0ZSBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGJs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBhbHBoYSkKIHsKICAgICBBTkdMRV9W
QUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUNvbG9yNHgoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCByZWQsIEdMZml4ZWQgZ3Jl
ZW4sIEdMZml4ZWQgYmx1ZSwgR0xmaXhlZCBhbHBoYSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjR4KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHJlZCwK
KyAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAg
ICBHTGZpeGVkIGJsdWUsCisgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGFscGhhKQogewog
ICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlQ29sb3JQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlQ29sb3JQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRl
eEF0dHJpYlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJp
ZGUsCkBAIC03MDYsNTggKzcyNyw3NCBAQCBib29sIFZhbGlkYXRlQ29sb3JQb2ludGVyKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpZGUsIHBvaW50ZXIpOwogfQogCi1ib29sIFZhbGlkYXRlQ3VsbEZhY2UoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlQ3VsbEZhY2UoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVwdGhSYW5nZXgoQ29udGV4dCAqY29u
dGV4dCwgR0xmaXhlZCBuLCBHTGZpeGVkIGYpCitib29sIFZhbGlkYXRlRGVwdGhSYW5nZXgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBuLCBHTGZpeGVkIGYpCiB7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOworICAgIGlm
IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5ICYmIG4gPiBmKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBrSW52YWxpZERlcHRoUmFuZ2UpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEaXNhYmxlQ2xpZW50U3RhdGUo
Q29udGV4dCAqY29udGV4dCwgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5VHlwZSkKK2Jvb2wg
VmFsaWRhdGVEaXNhYmxlQ2xpZW50U3RhdGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQ2xpZW50
VmVydGV4QXJyYXlUeXBlIGFycmF5VHlwZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVDbGllbnRT
dGF0ZUNvbW1vbihjb250ZXh0LCBhcnJheVR5cGUpOwogfQogCi1ib29sIFZhbGlkYXRlRW5hYmxl
Q2xpZW50U3RhdGUoQ29udGV4dCAqY29udGV4dCwgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5
VHlwZSkKK2Jvb2wgVmFsaWRhdGVFbmFibGVDbGllbnRTdGF0ZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlUeXBlKQogewogICAgIHJldHVybiBWYWxp
ZGF0ZUNsaWVudFN0YXRlQ29tbW9uKGNvbnRleHQsIGFycmF5VHlwZSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVGb2dmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkK
K2Jvb2wgVmFsaWRhdGVGb2dmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCBwYXJhbSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVGb2dDb21tb24oY29udGV4dCwg
cG5hbWUsICZwYXJhbSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVGb2dmdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVGb2dm
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVGb2dDb21tb24oY29udGV4dCwgcG5hbWUsIHBh
cmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVGb2d4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bmFtZSwgR0xmaXhlZCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVGb2d4KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKLSAgICBHTGZsb2F0IGFzRmxv
YXQgPSBDb252ZXJ0Rml4ZWRUb0Zsb2F0KHBhcmFtKTsKKyAgICBBTkdMRV9WQUxJREFURV9JU19H
TEVTMShjb250ZXh0KTsKKyAgICBHTGZsb2F0IGFzRmxvYXQgPQorICAgICAgICBwbmFtZSA9PSBH
TF9GT0dfTU9ERSA/IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhcmFtKSA6IENvbnZlcnRGaXhlZFRv
RmxvYXQocGFyYW0pOwogICAgIHJldHVybiBWYWxpZGF0ZUZvZ0NvbW1vbihjb250ZXh0LCBwbmFt
ZSwgJmFzRmxvYXQpOwogfQogCi1ib29sIFZhbGlkYXRlRm9neHYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCitib29sIFZhbGlkYXRlRm9neHYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJh
bXMpCiB7CisgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgdW5zaWdu
ZWQgaW50IHBhcmFtQ291bnQgPSBHZXRGb2dQYXJhbWV0ZXJDb3VudChwbmFtZSk7CiAgICAgR0xm
bG9hdCBwYXJhbXNmWzRdICAgICAgPSB7fTsKIAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgcGFyYW1Db3VudDsgaSsrKQorICAgIGlmIChwbmFtZSA9PSBHTF9GT0dfTU9ERSkKICAg
ICB7Ci0gICAgICAgIHBhcmFtc2ZbaV0gPSBDb252ZXJ0Rml4ZWRUb0Zsb2F0KHBhcmFtc1tpXSk7
CisgICAgICAgIHBhcmFtc2ZbMF0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbXNbMF0pOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBhcmFtQ291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgcGFyYW1zZltpXSA9
IENvbnZlcnRGaXhlZFRvRmxvYXQocGFyYW1zW2ldKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHJldHVybiBWYWxpZGF0ZUZvZ0NvbW1vbihjb250ZXh0LCBwbmFtZSwgcGFyYW1zZik7CiB9CiAK
LWJvb2wgVmFsaWRhdGVGcnVzdHVtZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZy
dXN0dW1mKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCBsLAogICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgciwKICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IGIsCkBAIC03NzMsNyArODEwLDcgQEAgYm9vbCBWYWxpZGF0ZUZydXN0
dW1mKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVGcnVzdHVteChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZydXN0dW14KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBsLAogICAg
ICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKICAgICAgICAgICAgICAgICAgICAgICBHTGZp
eGVkIGIsCkBAIC03ODksNzUgKzgyNiw5NSBAQCBib29sIFZhbGlkYXRlRnJ1c3R1bXgoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZl
clBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0Q2xpcFBsYW5lZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIEdM
ZmxvYXQgKmVxdWF0aW9uKQorYm9vbCBWYWxpZGF0ZUdldENsaXBQbGFuZWYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBjb25zdCBHTGZsb2F0ICplcXVhdGlvbikKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVDbGlwUGxhbmVDb21tb24oY29udGV4dCwgcGxhbmUpOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5leChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUs
IEdMZml4ZWQgKmVxdWF0aW9uKQorYm9vbCBWYWxpZGF0ZUdldENsaXBQbGFuZXgoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBjb25zdCBHTGZpeGVkICplcXVhdGlvbikKIHsK
ICAgICByZXR1cm4gVmFsaWRhdGVDbGlwUGxhbmVDb21tb24oY29udGV4dCwgcGxhbmUpOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0Rml4ZWR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
R0xmaXhlZCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldEZpeGVkdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xF
UzEoY29udGV4dCk7CisgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CisgICAgdW5zaWduZWQgaW50IG51
bVBhcmFtcyA9IDA7CisgICAgcmV0dXJuIFZhbGlkYXRlU3RhdGVRdWVyeShjb250ZXh0LCBwbmFt
ZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TGlnaHRm
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0TGlnaHRmdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgR0xmbG9hdCBkdW1teVBhcmFtc1s0
XSA9IHswLjBmLCAwLjBmLCAwLjBmLCAwLjBmfTsKICAgICByZXR1cm4gVmFsaWRhdGVMaWdodENv
bW1vbihjb250ZXh0LCBsaWdodCwgcG5hbWUsIGR1bW15UGFyYW1zKTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldExpZ2h0eHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFt
ZXRlciBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldExpZ2h0eHYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewogICAgIEdMZmxvYXQg
ZHVtbXlQYXJhbXNbNF0gPSB7MC4wZiwgMC4wZiwgMC4wZiwgMC4wZn07CiAgICAgcmV0dXJuIFZh
bGlkYXRlTGlnaHRDb21tb24oY29udGV4dCwgbGlnaHQsIHBuYW1lLCBkdW1teVBhcmFtcyk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRNYXRlcmlhbGZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBm
YWNlLCBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxp
ZGF0ZUdldE1hdGVyaWFsZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0
ZXJpYWxQYXJhbWV0ZXIgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlTWF0ZXJpYWxRdWVyeShjb250
ZXh0LCBmYWNlLCBwbmFtZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRNYXRlcmlhbHh2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZSwgR0xmaXhl
ZCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldE1hdGVyaWFseHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlk
YXRlTWF0ZXJpYWxRdWVyeShjb250ZXh0LCBmYWNlLCBwbmFtZSk7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRUZXhFbnZmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleEVudmZ2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUVudlRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBh
cmFtZXRlciBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAg
IHJldHVybiBWYWxpZGF0ZUdldFRleEVudkNvbW1vbihjb250ZXh0LCB0YXJnZXQsIHBuYW1lKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleEVudml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0VGV4RW52aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhFbnZDb21tb24oY29udGV4dCwgdGFy
Z2V0LCBwbmFtZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhFbnZ4dihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleEVudnh2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZpeGVkICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldFRleEVudkNv
bW1vbihjb250ZXh0LCB0YXJnZXQsIHBuYW1lKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlcnh2KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGZpeGVkICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyeHYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFt
cykKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKIApAQCAtODY5LDQy
ICs5MjYsNDggQEAgYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcnh2KENvbnRleHQgKmNvbnRl
eHQsIFRleHR1cmVUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVMaWdodE1vZGVsZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIFZh
bGlkYXRlTGlnaHRNb2RlbFNpbmdsZUNvbXBvbmVudChjb250ZXh0LCBwbmFtZSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVMaWdodE1vZGVsZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlTGlnaHRNb2RlbGZ2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewog
ICAgIHJldHVybiBWYWxpZGF0ZUxpZ2h0TW9kZWxDb21tb24oY29udGV4dCwgcG5hbWUpOwogfQog
Ci1ib29sIFZhbGlkYXRlTGlnaHRNb2RlbHgoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
LCBHTGZpeGVkIHBhcmFtKQorYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWx4KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVMaWdodE1vZGVsU2luZ2xlQ29tcG9uZW50KGNvbnRleHQsIHBuYW1lKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUxpZ2h0TW9kZWx4dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZml4ZWQgKnBhcmFtKQorYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWx4dihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtKQogewogICAg
IHJldHVybiBWYWxpZGF0ZUxpZ2h0TW9kZWxDb21tb24oY29udGV4dCwgcG5hbWUpOwogfQogCi1i
b29sIFZhbGlkYXRlTGlnaHRmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgTGlnaHRQ
YXJhbWV0ZXIgcG5hbWUsIEdMZmxvYXQgcGFyYW0pCitib29sIFZhbGlkYXRlTGlnaHRmKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsIEdM
ZmxvYXQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlTGlnaHRTaW5nbGVDb21wb25lbnQo
Y29udGV4dCwgbGlnaHQsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaWdodGZ2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVMaWdodGZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbGlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVMaWdodENvbW1vbihj
b250ZXh0LCBsaWdodCwgcG5hbWUsIHBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaWdodHgo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwgR0xm
aXhlZCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVMaWdodHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVMaWdodFNpbmdsZUNvbXBvbmVudChjb250ZXh0LCBsaWdodCwgcG5h
bWUsIENvbnZlcnRGaXhlZFRvRmxvYXQocGFyYW0pKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0
eHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwg
Y29uc3QgR0xmaXhlZCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUxpZ2h0eHYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewogICAgIEdMZmxvYXQgcGFyYW1zZls0XTsKICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEdldExpZ2h0UGFyYW1ldGVyQ291bnQocG5hbWUp
OyBpKyspCkBAIC05MTUsMzEgKzk3OCwzNyBAQCBib29sIFZhbGlkYXRlTGlnaHR4dihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lLCBjb25zdAogICAg
IHJldHVybiBWYWxpZGF0ZUxpZ2h0Q29tbW9uKGNvbnRleHQsIGxpZ2h0LCBwbmFtZSwgcGFyYW1z
Zik7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaW5lV2lkdGh4KENvbnRleHQgKmNvbnRleHQsIEdMZml4
ZWQgd2lkdGgpCitib29sIFZhbGlkYXRlTGluZVdpZHRoeChjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGZpeGVkIHdpZHRoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBBTkdMRV9WQUxJ
REFURV9JU19HTEVTMShjb250ZXh0KTsKKyAgICBpZiAod2lkdGggPD0gMCkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFdp
ZHRoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlTG9hZElkZW50aXR5KENvbnRleHQgKmNvbnRleHQpCitib29sIFZh
bGlkYXRlTG9hZElkZW50aXR5KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgQU5HTEVf
VkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVMb2FkTWF0cml4ZihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKQor
Ym9vbCBWYWxpZGF0ZUxvYWRNYXRyaXhmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKm0pCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVMb2FkTWF0cml4eChDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGZpeGVkICptKQorYm9vbCBWYWxpZGF0ZUxvYWRNYXRyaXh4KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKm0pCiB7CiAgICAgQU5HTEVfVkFMSURBVEVf
SVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVM
b2dpY09wKENvbnRleHQgKmNvbnRleHQsIExvZ2ljYWxPcGVyYXRpb24gb3Bjb2RlKQorYm9vbCBW
YWxpZGF0ZUxvZ2ljT3AoY29uc3QgQ29udGV4dCAqY29udGV4dCwgTG9naWNhbE9wZXJhdGlvbiBv
cGNvZGUpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgc3dp
dGNoIChvcGNvZGUpCkBAIC05NjcsMTIgKzEwMzYsMTIgQEAgYm9vbCBWYWxpZGF0ZUxvZ2ljT3Ao
Q29udGV4dCAqY29udGV4dCwgTG9naWNhbE9wZXJhdGlvbiBvcGNvZGUpCiAgICAgfQogfQogCi1i
b29sIFZhbGlkYXRlTWF0ZXJpYWxmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBNYXRl
cmlhbFBhcmFtZXRlciBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVNYXRlcmlh
bGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAgIHJldHVybiBWYWxpZGF0ZU1hdGVyaWFsU2lu
Z2xlQ29tcG9uZW50KGNvbnRleHQsIGZhY2UsIHBuYW1lLCBwYXJhbSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVNYXRlcmlhbGZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWF0ZXJpYWxm
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKQEAgLTk4MCwx
MiArMTA0OSwxMiBAQCBib29sIFZhbGlkYXRlTWF0ZXJpYWxmdihDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiBWYWxpZGF0ZU1hdGVyaWFsU2V0dGluZyhjb250ZXh0LCBmYWNlLCBwbmFtZSwg
cGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hdGVyaWFseChDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gZmFjZSwgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitib29s
IFZhbGlkYXRlTWF0ZXJpYWx4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBN
YXRlcmlhbFBhcmFtZXRlciBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVNYXRlcmlhbFNpbmdsZUNvbXBvbmVudChjb250ZXh0LCBmYWNlLCBwbmFtZSwgQ29udmVy
dEZpeGVkVG9GbG9hdChwYXJhbSkpOwogfQogCi1ib29sIFZhbGlkYXRlTWF0ZXJpYWx4dihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hdGVyaWFseHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCkBAIC0xMDAwLDcgKzEwNjksNyBAQCBib29sIFZh
bGlkYXRlTWF0ZXJpYWx4dihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZU1h
dGVyaWFsU2V0dGluZyhjb250ZXh0LCBmYWNlLCBwbmFtZSwgcGFyYW1zZik7CiB9CiAKLWJvb2wg
VmFsaWRhdGVNYXRyaXhNb2RlKENvbnRleHQgKmNvbnRleHQsIE1hdHJpeFR5cGUgbW9kZSkKK2Jv
b2wgVmFsaWRhdGVNYXRyaXhNb2RlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIE1hdHJpeFR5cGUg
bW9kZSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICBzd2l0
Y2ggKG1vZGUpCkBAIC0xMDE1LDE5ICsxMDg0LDE5IEBAIGJvb2wgVmFsaWRhdGVNYXRyaXhNb2Rl
KENvbnRleHQgKmNvbnRleHQsIE1hdHJpeFR5cGUgbW9kZSkKICAgICB9CiB9CiAKLWJvb2wgVmFs
aWRhdGVNdWx0TWF0cml4ZihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKQorYm9v
bCBWYWxpZGF0ZU11bHRNYXRyaXhmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxv
YXQgKm0pCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0TWF0cml4eChDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGZpeGVkICptKQorYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXh4KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKm0pCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNf
R0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkNGYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3Jk
NGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHQsCkBAIC0xMDM4LDcgKzExMDcs
NyBAQCBib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRmKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIFZhbGlkYXRlTXVsdGl0ZXh0dXJlVW5pdChjb250ZXh0LCB0YXJnZXQpOwogfQogCi1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDR4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlTXVsdGlUZXhDb29yZDR4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZml4ZWQgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB0LApA
QCAtMTA0OSwxOSArMTExOCwxOSBAQCBib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDR4KENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlTXVsdGl0ZXh0dXJlVW5pdChjb250ZXh0
LCB0YXJnZXQpOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsM2YoQ29udGV4dCAqY29udGV4dCwg
R0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueikKK2Jvb2wgVmFsaWRhdGVOb3JtYWwz
Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0
IG56KQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsM3goQ29udGV4dCAqY29udGV4dCwgR0xm
aXhlZCBueCwgR0xmaXhlZCBueSwgR0xmaXhlZCBueikKK2Jvb2wgVmFsaWRhdGVOb3JtYWwzeChj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIG54LCBHTGZpeGVkIG55LCBHTGZpeGVkIG56
KQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZU5vcm1hbFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKQEAgLTEwNzAsNyArMTEzOSw3IEBAIGJvb2wgVmFsaWRh
dGVOb3JtYWxQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUsIHBvaW50ZXIpOwogfQogCi1ib29sIFZh
bGlkYXRlT3J0aG9mKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlT3J0aG9mKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbCwKICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCByLAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGIs
CkBAIC0xMDc5LDE0ICsxMTQ4LDE3IEBAIGJvb2wgVmFsaWRhdGVPcnRob2YoQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBmKQogewogICAgIEFOR0xFX1ZBTElE
QVRFX0lTX0dMRVMxKGNvbnRleHQpOwotICAgIGlmIChsID09IHIgfHwgYiA9PSB0IHx8IG4gPT0g
ZiB8fCBuIDw9IDAuMGYgfHwgZiA8PSAwLjBmKQorICAgIC8vIFtPcGVuR0wgRVMgMS4xLjEyXSBz
ZWN0aW9uIDIuMTAuMiBwYWdlIDMxOgorICAgIC8vIElmIGwgaXMgZXF1YWwgdG8gciwgYiBpcyBl
cXVhbCB0byB0LCBvciBuIGlzIGVxdWFsIHRvIGYsIHRoZQorICAgIC8vIGVycm9yIElOVkFMSUQg
VkFMVUUgcmVzdWx0cy4KKyAgICBpZiAobCA9PSByIHx8IGIgPT0gdCB8fCBuID09IGYpCiAgICAg
ewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0lu
dmFsaWRQcm9qZWN0aW9uTWF0cml4KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVPcnRob3goQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVPcnRob3go
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBsLAog
ICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHIsCiAgICAgICAgICAgICAgICAgICAgIEdMZml4
ZWQgYiwKQEAgLTEwOTUsMTQgKzExNjcsMTQgQEAgYm9vbCBWYWxpZGF0ZU9ydGhveChDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGYpCiB7CiAgICAgQU5HTEVf
VkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7Ci0gICAgaWYgKGwgPT0gciB8fCBiID09IHQgfHwg
biA9PSBmIHx8IG4gPD0gMCB8fCBmIDw9IDApCisgICAgaWYgKGwgPT0gciB8fCBiID09IHQgfHwg
biA9PSBmKQogICAgIHsKICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFM
SURfVkFMVUUsIGtJbnZhbGlkUHJvamVjdGlvbk1hdHJpeCk7CiAgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQs
IFBvaW50UGFyYW1ldGVyIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVBvaW50
UGFyYW1ldGVyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQb2ludFBhcmFtZXRlciBwbmFtZSwg
R0xmbG9hdCBwYXJhbSkKIHsKICAgICB1bnNpZ25lZCBpbnQgcGFyYW1Db3VudCA9IEdldFBvaW50
UGFyYW1ldGVyQ291bnQocG5hbWUpOwogICAgIGlmIChwYXJhbUNvdW50ICE9IDEpCkBAIC0xMTE0
LDEyICsxMTg2LDEyIEBAIGJvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmYoQ29udGV4dCAqY29u
dGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUsIEdMZmxvYXQgcGFyCiAgICAgcmV0dXJuIFZhbGlk
YXRlUG9pbnRQYXJhbWV0ZXJDb21tb24oY29udGV4dCwgcG5hbWUsICZwYXJhbSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1l
dGVyIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlUG9pbnRQYXJh
bWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQb2ludFBhcmFtZXRlciBwbmFtZSwgY29u
c3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZVBvaW50UGFyYW1ldGVy
Q29tbW9uKGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlUG9pbnRQ
YXJhbWV0ZXJ4KENvbnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBHTGZpeGVk
IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeChjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBQb2ludFBhcmFtZXRlciBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICB1bnNpZ25l
ZCBpbnQgcGFyYW1Db3VudCA9IEdldFBvaW50UGFyYW1ldGVyQ291bnQocG5hbWUpOwogICAgIGlm
IChwYXJhbUNvdW50ICE9IDEpCkBAIC0xMTMyLDcgKzEyMDQsNyBAQCBib29sIFZhbGlkYXRlUG9p
bnRQYXJhbWV0ZXJ4KENvbnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBHTGZp
eGVkIHBhcgogICAgIHJldHVybiBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyQ29tbW9uKGNvbnRleHQs
IHBuYW1lLCAmcGFyYW1mKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeHYoQ29u
dGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFt
cykKK2Jvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcnh2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFBvaW50UGFyYW1ldGVyIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgR0xm
bG9hdCBwYXJhbXNmWzRdID0ge307CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBH
ZXRQb2ludFBhcmFtZXRlckNvdW50KHBuYW1lKTsgaSsrKQpAQCAtMTE0MiwyMyArMTIxNCwyMyBA
QCBib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJ4dihDb250ZXh0ICpjb250ZXh0LCBQb2ludFBh
cmFtZXRlciBwbmFtZSwgY29uc3QgR0xmaQogICAgIHJldHVybiBWYWxpZGF0ZVBvaW50UGFyYW1l
dGVyQ29tbW9uKGNvbnRleHQsIHBuYW1lLCBwYXJhbXNmKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBv
aW50U2l6ZShDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHNpemUpCitib29sIFZhbGlkYXRlUG9p
bnRTaXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgc2l6ZSkKIHsKICAgICByZXR1
cm4gVmFsaWRhdGVQb2ludFNpemVDb21tb24oY29udGV4dCwgc2l6ZSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVQb2ludFNpemV4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgc2l6ZSkKK2Jvb2wgVmFs
aWRhdGVQb2ludFNpemV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgc2l6ZSkKIHsK
ICAgICByZXR1cm4gVmFsaWRhdGVQb2ludFNpemVDb21tb24oY29udGV4dCwgQ29udmVydEZpeGVk
VG9GbG9hdChzaXplKSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0eChDb250ZXh0
ICpjb250ZXh0LCBHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0cykKK2Jvb2wgVmFsaWRhdGVQ
b2x5Z29uT2Zmc2V0eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIGZhY3RvciwgR0xm
aXhlZCB1bml0cykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQU5HTEVfVkFMSURBVEVf
SVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQ
b3BNYXRyaXgoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVQb3BNYXRyaXgoY29uc3Qg
Q29udGV4dCAqY29udGV4dCkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0
KTsKICAgICBjb25zdCBhdXRvICZzdGFjayA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2xlczEoKS5j
dXJyZW50TWF0cml4U3RhY2soKTsKQEAgLTExNzAsNyArMTI0Miw3IEBAIGJvb2wgVmFsaWRhdGVQ
b3BNYXRyaXgoQ29udGV4dCAqY29udGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVB1c2hNYXRyaXgoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVQdXNoTWF0
cml4KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xF
UzEoY29udGV4dCk7CiAgICAgY29uc3QgYXV0byAmc3RhY2sgPSBjb250ZXh0LT5nZXRTdGF0ZSgp
LmdsZXMxKCkuY3VycmVudE1hdHJpeFN0YWNrKCk7CkBAIC0xMTgyLDM3ICsxMjU0LDM3IEBAIGJv
b2wgVmFsaWRhdGVQdXNoTWF0cml4KENvbnRleHQgKmNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVSb3RhdGVmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgYW5n
bGUsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZhbGlkYXRlUm90YXRl
Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGFuZ2xlLCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6KQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUm90YXRleChDb250ZXh0ICpj
b250ZXh0LCBHTGZpeGVkIGFuZ2xlLCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQor
Ym9vbCBWYWxpZGF0ZVJvdGF0ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBhbmds
ZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKIHsKICAgICBBTkdMRV9WQUxJREFU
RV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVNhbXBsZUNvdmVyYWdleChDb250ZXh0ICpjb250ZXh0LCBHTGNsYW1weCB2YWx1ZSwgR0xib29s
ZWFuIGludmVydCkKK2Jvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZXgoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xjbGFtcHggdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpCiB7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2NhbGVmKENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZhbGlkYXRlU2NhbGVmKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAg
ICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVTY2FsZXgoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCB4LCBHTGZp
eGVkIHksIEdMZml4ZWQgeikKK2Jvb2wgVmFsaWRhdGVTY2FsZXgoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKIHsKICAgICBBTkdMRV9WQUxJ
REFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVNoYWRlTW9kZWwoQ29udGV4dCAqY29udGV4dCwgU2hhZGluZ01vZGVsIG1vZGUpCitib29s
IFZhbGlkYXRlU2hhZGVNb2RlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkaW5nTW9kZWwg
bW9kZSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICBzd2l0
Y2ggKG1vZGUpCkBAIC0xMjI2LDcgKzEyOTgsNyBAQCBib29sIFZhbGlkYXRlU2hhZGVNb2RlbChD
b250ZXh0ICpjb250ZXh0LCBTaGFkaW5nTW9kZWwgbW9kZSkKICAgICB9CiB9CiAKLWJvb2wgVmFs
aWRhdGVUZXhDb29yZFBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhD
b29yZFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4
QXR0cmliVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0
cmlkZSwKQEAgLTEyMzYsNyArMTMwOCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhDb29yZFBvaW50ZXIo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUsIHN0cmlkZSwgcG9pbnRlcik7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhF
bnZmKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4RW52Zihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJhbSkKQEAgLTEyNDQsNyArMTMxNiw3IEBAIGJvb2wg
VmFsaWRhdGVUZXhFbnZmKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVGV4
RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsICZwYXJhbSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVUZXhFbnZmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudmZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRh
cmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCkBAIC0x
MjUyLDcgKzEzMjQsNyBAQCBib29sIFZhbGlkYXRlVGV4RW52ZnYoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gVmFsaWRhdGVUZXhFbnZDb21tb24oY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwg
cGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEVudmkoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXhFbnZpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBHTGludCBwYXJh
bSkKQEAgLTEyNjEsNyArMTMzMyw3IEBAIGJvb2wgVmFsaWRhdGVUZXhFbnZpKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVGV4RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwg
cG5hbWUsICZwYXJhbWYpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4RW52aXYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhFbnZpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnBhcmFtcykKQEAgLTEyNzQsNjIgKzEzNDYsNzkgQEAgYm9vbCBWYWxp
ZGF0ZVRleEVudml2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVGV4RW52
Q29tbW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtc2YpOwogfQogCi1ib29sIFZhbGlk
YXRlVGV4RW52eChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudngoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQg
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcGFyYW0pCiB7Ci0gICAgR0xmbG9hdCBwYXJh
bWYgPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbSk7Ci0gICAgcmV0dXJuIFZhbGlkYXRlVGV4
RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsICZwYXJhbWYpOworICAgIEFOR0xFX1ZB
TElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOworICAgIEdMZmxvYXQgcGFyYW1zZls0XSA9IHt9Owor
ICAgIENvbnZlcnRUZXh0dXJlRW52RnJvbUZpeGVkKHBuYW1lLCAmcGFyYW0sIHBhcmFtc2YpOwor
ICAgIHJldHVybiBWYWxpZGF0ZVRleEVudkNvbW1vbihjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBw
YXJhbXNmKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEVudnh2KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlVGV4RW52eHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZml4ZWQgKnBhcmFtcykKIHsKLSAgICBHTGZsb2F0IHBhcmFtc2ZbNF07Ci0gICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBHZXRUZXh0dXJlRW52UGFyYW1ldGVyQ291bnQocG5hbWUp
OyBpKyspCisgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CisgICAgR0xmbG9h
dCBwYXJhbXNmWzRdID0ge307CisgICAgQ29udmVydFRleHR1cmVFbnZGcm9tRml4ZWQocG5hbWUs
IHBhcmFtcywgcGFyYW1zZik7CisgICAgcmV0dXJuIFZhbGlkYXRlVGV4RW52Q29tbW9uKGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtc2YpOworfQorCitib29sIFZhbGlkYXRlVGV4UGFyYW1l
dGVyQmFzZUZvckdMZml4ZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZlY3RvclBhcmFtcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCit7
CisgICAgLy8gQ29udmVydCBHTGZpeGVkIHBhcmFtZXRlciBmb3IgR0xfVEVYVFVSRV9NQVhfQU5J
U09UUk9QWV9FWFQgaW5kZXBlbmRlbnRseQorICAgIC8vIHNpbmNlIGl0IGNvbXBhcmVzIGFnYWlu
c3QgMSBhbmQgbWF4VGV4dHVyZUFuaXNvdHJvcHkgaW5zdGVhZCBvZiBqdXN0IDAKKyAgICAvLyAo
b3RoZXIgdmFsdWVzIGFyZSBmaW5lIHRvIGxlYXZlIHVuY29udmVydGVkIHNpbmNlIHRoZXkgb25s
eSBjaGVjayBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBvcgorICAgIC8vIGFyZSB1c2VkIGFzIGVudW1z
KQorICAgIEdMZmxvYXQgcGFyYW1WYWx1ZTsKKyAgICBpZiAocG5hbWUgPT0gR0xfVEVYVFVSRV9N
QVhfQU5JU09UUk9QWV9FWFQpCiAgICAgewotICAgICAgICBwYXJhbXNmW2ldID0gc3RhdGljX2Nh
c3Q8R0xmbG9hdD4ocGFyYW1zW2ldKTsKKyAgICAgICAgcGFyYW1WYWx1ZSA9IENvbnZlcnRGaXhl
ZFRvRmxvYXQoc3RhdGljX2Nhc3Q8R0xmaXhlZD4ocGFyYW1zWzBdKSk7CiAgICAgfQotICAgIHJl
dHVybiBWYWxpZGF0ZVRleEVudkNvbW1vbihjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXNm
KTsKKyAgICBlbHNlCisgICAgeworICAgICAgICBwYXJhbVZhbHVlID0gc3RhdGljX2Nhc3Q8R0xm
bG9hdD4ocGFyYW1zWzBdKTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVy
QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZTaXplLCB2ZWN0b3JQYXJhbXMsICZwYXJh
bVZhbHVlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcngoQ29udGV4dCAqY29udGV4
dCwgVGV4dHVyZVR5cGUgdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitib29s
IFZhbGlkYXRlVGV4UGFyYW1ldGVyeChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlw
ZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICBBTkdMRV9WQUxJ
REFURV9JU19HTEVTMShjb250ZXh0KTsKLSAgICBHTGZsb2F0IHBhcmFtZiA9IENvbnZlcnRGaXhl
ZFRvRmxvYXQocGFyYW0pOwotICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29u
dGV4dCwgdGFyZ2V0LCBwbmFtZSwgLTEsIGZhbHNlLCAmcGFyYW1mKTsKKyAgICByZXR1cm4gVmFs
aWRhdGVUZXhQYXJhbWV0ZXJCYXNlRm9yR0xmaXhlZChjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAt
MSwgZmFsc2UsICZwYXJhbSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4dihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcnh2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgQU5HTEVfVkFM
SURBVEVfSVNfR0xFUzEoY29udGV4dCk7Ci0gICAgR0xmbG9hdCBwYXJhbXNmWzRdID0ge307Ci0g
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBHZXRUZXhQYXJhbWV0ZXJDb3VudChwbmFt
ZSk7IGkrKykKLSAgICB7Ci0gICAgICAgIHBhcmFtc2ZbaV0gPSBDb252ZXJ0Rml4ZWRUb0Zsb2F0
KHBhcmFtc1tpXSk7Ci0gICAgfQotICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2Uo
Y29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgLTEsIHRydWUsIHBhcmFtc2YpOworICAgIHJldHVybiBW
YWxpZGF0ZVRleFBhcmFtZXRlckJhc2VGb3JHTGZpeGVkKGNvbnRleHQsIHRhcmdldCwgcG5hbWUs
IC0xLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlVHJhbnNsYXRlZihDb250ZXh0
ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQorYm9vbCBWYWxpZGF0
ZVRyYW5zbGF0ZWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHks
IEdMZmxvYXQgeikKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZXgoQ29udGV4dCAqY29u
dGV4dCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKK2Jvb2wgVmFsaWRhdGVUcmFu
c2xhdGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgeCwgR0xmaXhlZCB5LCBHTGZp
eGVkIHopCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhQb2ludGVyKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVmVydGV4UG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc3RyaWRlLApAQCAtMTMzOSw3ICsxNDI4LDcgQEAgYm9vbCBWYWxpZGF0ZVZl
cnRleFBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwgcG9pbnRlcik7CiB9CiAKLWJvb2wgVmFsaWRh
dGVEcmF3VGV4Zk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdUZXhmT0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHosCkBAIC0xMzQ5LDI0ICsxNDM4LDI5IEBAIGJvb2wgVmFsaWRh
dGVEcmF3VGV4Zk9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdU
ZXhDb21tb24oY29udGV4dCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3
VGV4ZnZPRVMoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqY29vcmRzKQorYm9vbCBW
YWxpZGF0ZURyYXdUZXhmdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0
ICpjb29yZHMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd1RleENvbW1vbihjb250ZXh0LCBj
b29yZHNbM10sIGNvb3Jkc1s0XSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3VGV4aU9FUyhDb250
ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3aWR0aCwgR0xp
bnQgaGVpZ2h0KQorYm9vbCBWYWxpZGF0ZURyYXdUZXhpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHosCisgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgaGVpZ2h0KQogewogICAgIHJldHVybiBWYWxpZGF0ZURyYXdUZXhDb21tb24oY29u
dGV4dCwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4od2lkdGgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaGVpZ2h0KSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVEcmF3VGV4aXZPRVMoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKmNvb3JkcykK
K2Jvb2wgVmFsaWRhdGVEcmF3VGV4aXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xpbnQgKmNvb3JkcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3VGV4Q29tbW9uKGNvbnRl
eHQsIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGNvb3Jkc1szXSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0Pihjb29yZHNbNF0pKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZURyYXdUZXhzT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJh
d1RleHNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNob3J0IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgeiwKQEAgLTEzNzcsMTMgKzE0NzEsMTMgQEAgYm9v
bCBWYWxpZGF0ZURyYXdUZXhzT0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0PihoZWlnaHQpKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZURyYXdUZXhzdk9FUyhDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICpj
b29yZHMpCitib29sIFZhbGlkYXRlRHJhd1RleHN2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMc2hvcnQgKmNvb3JkcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3VGV4Q29t
bW9uKGNvbnRleHQsIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGNvb3Jkc1szXSksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0Pihjb29yZHNbNF0pKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURyYXdUZXh4T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRHJhd1RleHhPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZpeGVkIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB5
LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgeiwKQEAgLTEzOTMsMjUgKzE0ODcs
MjUgQEAgYm9vbCBWYWxpZGF0ZURyYXdUZXh4T0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIFZhbGlkYXRlRHJhd1RleENvbW1vbihjb250ZXh0LCBDb252ZXJ0Rml4ZWRUb0Zsb2F0KHdp
ZHRoKSwgQ29udmVydEZpeGVkVG9GbG9hdChoZWlnaHQpKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURy
YXdUZXh4dk9FUyhDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZpeGVkICpjb29yZHMpCitib29s
IFZhbGlkYXRlRHJhd1RleHh2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZml4
ZWQgKmNvb3JkcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3VGV4Q29tbW9uKGNvbnRleHQs
IENvbnZlcnRGaXhlZFRvRmxvYXQoY29vcmRzWzNdKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvbnZlcnRGaXhlZFRvRmxvYXQoY29vcmRzWzRdKSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWF0
cml4cGFsZXR0ZWluZGV4KQorYm9vbCBWYWxpZGF0ZUN1cnJlbnRQYWxldHRlTWF0cml4T0VTKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXRyaXhwYWxldHRlaW5kZXgpCiB7CiAgICAg
VU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTG9h
ZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTKENvbnRleHQgKmNvbnRleHQpCitib29sIFZh
bGlkYXRlTG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTKGNvbnN0IENvbnRleHQgKmNv
bnRleHQpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlTWF0cml4SW5kZXhQb2ludGVyT0VTKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlTWF0cml4SW5kZXhQb2ludGVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKQEAgLTE0MjEsNyArMTUxNSw3IEBAIGJv
b2wgVmFsaWRhdGVNYXRyaXhJbmRleFBvaW50ZXJPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdlaWdodFBvaW50ZXJPRVMoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVXZWlnaHRQb2ludGVyT0VTKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKQEAgLTE0MzEsNyArMTUyNSw3IEBAIGJvb2wgVmFs
aWRhdGVXZWlnaHRQb2ludGVyT0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVQb2ludFNpemVQb2ludGVyT0VTKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlUG9pbnRTaXplUG9pbnRlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQpAQCAtMTQ0
MCwzMSArMTUzNCwzNyBAQCBib29sIFZhbGlkYXRlUG9pbnRTaXplUG9pbnRlck9FUyhDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyaWRlLCBwb2ludGVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVF1ZXJ5TWF0cml4eE9FUyhD
b250ZXh0ICpjb250ZXh0LCBHTGZpeGVkICptYW50aXNzYSwgR0xpbnQgKmV4cG9uZW50KQorYm9v
bCBWYWxpZGF0ZVF1ZXJ5TWF0cml4eE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGZpeGVkICptYW50aXNzYSwgY29uc3QgR0xpbnQgKmV4cG9uZW50KQogewogICAgIFVOSU1QTEVN
RU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbkZyYW1lYnVm
ZmVyc09FUyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIEZyYW1lYnVmZmVySUQgKmZyYW1l
YnVmZmVycykKK2Jvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnNPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1
ZmZlcnMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbiwgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzKQorYm9vbCBWYWxpZGF0ZURl
bGV0ZUZyYW1lYnVmZmVyc09FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVycykKIHsKICAgICBV
TklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZW5S
ZW5kZXJidWZmZXJzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgUmVuZGVyYnVmZmVy
SUQgKnJlbmRlcmJ1ZmZlcnMpCitib29sIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVyc09FUyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyYnVm
ZmVySUQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVyc09FUyhDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1
ZmZlcklEICpyZW5kZXJidWZmZXJzKQogewpAQCAtMTQ3MiwyNSArMTU3MiwyNSBAQCBib29sIFZh
bGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVyc09FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmluZEZyYW1lYnVmZmVyT0VTKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIpCitib29sIFZh
bGlkYXRlQmluZEZyYW1lYnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlck9F
UyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBSZW5kZXJidWZmZXJJRCByZW5kZXJi
dWZmZXIpCitib29sIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlck9FUyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0LCBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXIpCiB7CiAg
ICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1c09FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
KQorYm9vbCBWYWxpZGF0ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FUyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyT0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcmJ0YXJnZXQsCkBAIC0xNTAwLDcgKzE2MDAsNyBAQCBib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJET0VTKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVUYXJnZXQgdGV4dGFyZ2V0LApAQCAtMTUxMSw0NCArMTYxMSw0NCBAQCBib29sIFZhbGlk
YXRlRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwT0VTKENvbnRleHQgKmNvbnRl
eHQsIFRleHR1cmVUeXBlIHRhcmdldCkKK2Jvb2wgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcE9FUyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpCiB7CiAgICAgVU5JTVBM
RU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5U
RUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzRnJhbWVidWZmZXJP
RVMoQ29udGV4dCAqY29udGV4dCwgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlcikKK2Jvb2wgVmFs
aWRhdGVJc0ZyYW1lYnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVmZmVy
SUQgZnJhbWVidWZmZXIpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlSXNSZW5kZXJidWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwg
UmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKQorYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVy
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikK
IHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC0xNTYwLDU1ICsx
NjYwLDYxIEBAIGJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNv
bnRleHQsCiAKIC8vIEdMX09FU190ZXh0dXJlX2N1YmVfbWFwCiAKLWJvb2wgVmFsaWRhdGVHZXRU
ZXhHZW5mdk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFRleEdlbmZ2T0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRF
RCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4R2VuaXZPRVMo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGludCAqcGFyYW1z
KQorYm9vbCBWYWxpZGF0ZUdldFRleEdlbml2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBpbnQgKnBhcmFtcykKIHsKICAgICBVTklN
UExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhH
ZW54dk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xm
aXhlZCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFRleEdlbnh2T0VTKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4R2VuZnZPRVMoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKK2Jvb2wgVmFsaWRhdGVUZXhHZW5mdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAg
IFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRl
eEdlbml2T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGludCAqcGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VuaXZPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh
bSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXhHZW54dk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtKQorYm9vbCBWYWxpZGF0ZVRleEdlbnh2T0VTKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGludCAqcGFyYW0pCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVGV4R2VuZk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVUZXhHZW5mT0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleEdlbmlPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3Jk
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVRleEdlbmlPRVMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBh
cmFtKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVRleEdlbnhPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VueE9FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMV9hdXRv
Z2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVT
MV9hdXRvZ2VuLmgKaW5kZXggZjhiYjFhNmNjYjE0YWRhYzFkZWVhYTk4ZjBiM2I2ZTNkMzY4YWI1
YS4uZDkzMWViYWUyMDIwNzQ0ZDRjYWUwNmJkOTNjMjBjMGY4Y2NlZTRiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzFfYXV0b2dl
bi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMxX2F1dG9nZW4uaApAQCAtMTcsMTkzICsxNywyMjggQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFz
cyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRlQWxwaGFGdW5jKENvbnRleHQgKmNvbnRleHQsIEFs
cGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCwgR0xmbG9hdCByZWYpOwotYm9vbCBWYWxpZGF0ZUFscGhh
RnVuY3goQ29udGV4dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBmdW5jUGFja2VkLCBHTGZpeGVk
IHJlZik7Ci1ib29sIFZhbGlkYXRlQ2xlYXJDb2xvcngoQ29udGV4dCAqY29udGV4dCwgR0xmaXhl
ZCByZWQsIEdMZml4ZWQgZ3JlZW4sIEdMZml4ZWQgYmx1ZSwgR0xmaXhlZCBhbHBoYSk7Ci1ib29s
IFZhbGlkYXRlQ2xlYXJEZXB0aHgoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBkZXB0aCk7Ci1i
b29sIFZhbGlkYXRlQ2xpZW50QWN0aXZlVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGV4dHVyZSk7Ci1ib29sIFZhbGlkYXRlQ2xpcFBsYW5lZihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gcCwgY29uc3QgR0xmbG9hdCAqZXFuKTsKLWJvb2wgVmFsaWRhdGVDbGlwUGxhbmV4KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pOwotYm9v
bCBWYWxpZGF0ZUNvbG9yNGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQsIEdMZmxvYXQg
Z3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Ci1ib29sIFZhbGlkYXRlQ29sb3I0
dWIoQ29udGV4dCAqY29udGV4dCwgR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUg
Ymx1ZSwgR0x1Ynl0ZSBhbHBoYSk7Ci1ib29sIFZhbGlkYXRlQ29sb3I0eChDb250ZXh0ICpjb250
ZXh0LCBHTGZpeGVkIHJlZCwgR0xmaXhlZCBncmVlbiwgR0xmaXhlZCBibHVlLCBHTGZpeGVkIGFs
cGhhKTsKLWJvb2wgVmFsaWRhdGVDb2xvclBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVBbHBoYUZ1bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBm
dW5jUGFja2VkLCBHTGZsb2F0IHJlZik7Citib29sIFZhbGlkYXRlQWxwaGFGdW5jeChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQsIEdMZml4ZWQgcmVmKTsK
K2Jvb2wgVmFsaWRhdGVDbGVhckNvbG9yeChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZml4ZWQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBibHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUNs
ZWFyRGVwdGh4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgZGVwdGgpOworYm9vbCBW
YWxpZGF0ZUNsaWVudEFjdGl2ZVRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRleHR1cmUpOworYm9vbCBWYWxpZGF0ZUNsaXBQbGFuZWYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHAsIGNvbnN0IEdMZmxvYXQgKmVxbik7Citib29sIFZhbGlkYXRlQ2xpcFBsYW5l
eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZml4ZWQgKmVx
dWF0aW9uKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjRmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHJlZCwKKyAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsCisgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IGFscGhhKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1Yihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgcmVkLAor
ICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAg
ICAgR0x1Ynl0ZSBibHVlLAorICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgYWxwaGEpOwor
Ym9vbCBWYWxpZGF0ZUNvbG9yNHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZml4ZWQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBncmVl
biwKKyAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgYmx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgIEdMZml4ZWQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUNvbG9yUG9pbnRlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsKLWJvb2wgVmFsaWRhdGVEZXB0aFJhbmdleChD
b250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIG4sIEdMZml4ZWQgZik7Ci1ib29sIFZhbGlkYXRlRGlz
YWJsZUNsaWVudFN0YXRlKENvbnRleHQgKmNvbnRleHQsIENsaWVudFZlcnRleEFycmF5VHlwZSBh
cnJheVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRW5hYmxlQ2xpZW50U3RhdGUoQ29udGV4dCAqY29u
dGV4dCwgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVG
b2dmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Ci1ib29s
IFZhbGlkYXRlRm9nZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUZvZ3goQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHBuYW1lLCBHTGZpeGVkIHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVGb2d4dihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVG
cnVzdHVtZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2V4KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgbiwgR0xmaXhlZCBmKTsKK2Jvb2wgVmFsaWRhdGVE
aXNhYmxlQ2xpZW50U3RhdGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQ2xpZW50VmVydGV4QXJy
YXlUeXBlIGFycmF5UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVFbmFibGVDbGllbnRTdGF0ZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlQYWNrZWQpOwor
Ym9vbCBWYWxpZGF0ZUZvZ2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVGb2dmdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlRm9n
eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pOwor
Ym9vbCBWYWxpZGF0ZUZvZ3h2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmaXhlZCAqcGFyYW0pOworYm9vbCBWYWxpZGF0ZUZydXN0dW1mKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBsLAogICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgciwKICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGIs
CiAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB0LAogICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgbiwKICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGYpOwotYm9vbCBWYWxp
ZGF0ZUZydXN0dW14KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJ1c3R1bXgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGwsCiAg
ICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCByLAogICAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgYiwKICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgR0xmaXhlZCBuLAogICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgZik7Ci1i
b29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5lZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUs
IEdMZmxvYXQgKmVxdWF0aW9uKTsKLWJvb2wgVmFsaWRhdGVHZXRDbGlwUGxhbmV4KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbGFuZSwgR0xmaXhlZCAqZXF1YXRpb24pOwotYm9vbCBWYWxpZGF0
ZUdldEZpeGVkdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFt
cyk7Ci1ib29sIFZhbGlkYXRlR2V0TGlnaHRmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldENsaXBQbGFuZWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBj
b25zdCBHTGZsb2F0ICplcXVhdGlvbik7Citib29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5leChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZml4ZWQgKmVxdWF0aW9u
KTsKK2Jvb2wgVmFsaWRhdGVHZXRGaXhlZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldExpZ2h0ZnYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBs
aWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRh
dGVHZXRMaWdodHh2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldExpZ2h0eHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRNYXRl
cmlhbGZ2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZpeGVkICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldE1hdGVyaWFsZnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldE1hdGVyaWFseHYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0TWF0ZXJpYWx4dihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFt
ZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlR2V0VGV4RW52ZnYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4
RW52ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4RW52aXYoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwor
Ym9vbCBWYWxpZGF0ZUdldFRleEVudml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhF
bnZ4dihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleEVudnh2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFt
ZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkICpwYXJhbXMpOwotYm9v
bCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcnh2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRU
ZXhQYXJhbWV0ZXJ4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVMaWdodE1vZGVsZihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUxpZ2h0
TW9kZWxmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlTGlnaHRNb2RlbHgoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHBuYW1lLCBHTGZpeGVkIHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVMaWdodE1vZGVseHYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbSk7Ci1ib29sIFZh
bGlkYXRlTGlnaHRmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgTGlnaHRQYXJhbWV0
ZXIgcG5hbWVQYWNrZWQsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUxpZ2h0ZnYoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZp
eGVkICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxmKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Citib29sIFZhbGlkYXRlTGlnaHRN
b2RlbGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVMaWdodE1vZGVseChjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZUxpZ2h0TW9k
ZWx4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQg
KnBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVMaWdodGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAgICAgICAgICAgICBMaWdo
dFBhcmFtZXRlciBwbmFtZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJh
bSk7Citib29sIFZhbGlkYXRlTGlnaHRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgTGlnaHRQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUxpZ2h0eChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
bGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkLCBHTGZpeGVkIHBhcmFtKTsKLWJvb2wg
VmFsaWRhdGVMaWdodHh2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTGlnaHR4KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCisgICAgICAg
ICAgICAgICAgICAgIEdMZml4ZWQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZUxpZ2h0eHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVMaW5lV2lk
dGh4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgd2lkdGgpOwotYm9vbCBWYWxpZGF0ZUxvYWRJ
ZGVudGl0eShDb250ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVMb2FkTWF0cml4ZihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKTsKLWJvb2wgVmFsaWRhdGVMb2FkTWF0cml4
eChDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZpeGVkICptKTsKLWJvb2wgVmFsaWRhdGVMb2dp
Y09wKENvbnRleHQgKmNvbnRleHQsIExvZ2ljYWxPcGVyYXRpb24gb3Bjb2RlUGFja2VkKTsKLWJv
b2wgVmFsaWRhdGVNYXRlcmlhbGYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVy
aWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkLCBHTGZsb2F0IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVN
YXRlcmlhbGZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTGluZVdpZHRoeChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIHdpZHRoKTsKK2Jvb2wgVmFsaWRhdGVMb2FkSWRl
bnRpdHkoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlTG9hZE1hdHJpeGYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSk7Citib29sIFZhbGlkYXRl
TG9hZE1hdHJpeHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmaXhlZCAqbSk7Citi
b29sIFZhbGlkYXRlTG9naWNPcChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBMb2dpY2FsT3BlcmF0
aW9uIG9wY29kZVBhY2tlZCk7Citib29sIFZhbGlkYXRlTWF0ZXJpYWxmKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCBwYXJhbSk7Citib29sIFZhbGlkYXRlTWF0ZXJpYWxmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlTWF0ZXJpYWx4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBNYXRlcmlhbFBh
cmFtZXRlciBwbmFtZVBhY2tlZCwgR0xmaXhlZCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlTWF0ZXJp
YWx4dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hdGVyaWFseChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMZml4ZWQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZU1hdGVyaWFseHYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
YWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbSk7Ci1ib29s
IFZhbGlkYXRlTWF0cml4TW9kZShDb250ZXh0ICpjb250ZXh0LCBNYXRyaXhUeXBlIG1vZGVQYWNr
ZWQpOwotYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXhmKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKm0pOwotYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXh4KENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZml4ZWQgKm0pOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hdHJpeE1vZGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
TWF0cml4VHlwZSBtb2RlUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVNdWx0TWF0cml4Zihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKTsKK2Jvb2wgVmFsaWRhdGVNdWx0TWF0
cml4eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZpeGVkICptKTsKK2Jvb2wgVmFs
aWRhdGVNdWx0aVRleENvb3JkNGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBxKTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNHgo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNHgoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1
cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmaXhlZCB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZpeGVkIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcSk7Ci1i
b29sIFZhbGlkYXRlTm9ybWFsM2YoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBueCwgR0xmbG9h
dCBueSwgR0xmbG9hdCBueik7Ci1ib29sIFZhbGlkYXRlTm9ybWFsM3goQ29udGV4dCAqY29udGV4
dCwgR0xmaXhlZCBueCwgR0xmaXhlZCBueSwgR0xmaXhlZCBueik7Ci1ib29sIFZhbGlkYXRlTm9y
bWFsUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU5vcm1hbDNmKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnopOwor
Ym9vbCBWYWxpZGF0ZU5vcm1hbDN4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgbngs
IEdMZml4ZWQgbnksIEdMZml4ZWQgbnopOworYm9vbCBWYWxpZGF0ZU5vcm1hbFBvaW50ZXIoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0
dHJpYlR5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcik7
Ci1ib29sIFZhbGlkYXRlT3J0aG9mKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlT3J0
aG9mKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
bCwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByLAogICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IGIsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdCwKICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBuLAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGYpOwotYm9vbCBW
YWxpZGF0ZU9ydGhveChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU9ydGhveChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGwsCiAgICAg
ICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBi
LAogICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHQsCiAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgbiwKICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBmKTsKLWJvb2wgVmFsaWRhdGVQ
b2ludFBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZnYoQ29udGV4
dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJ4KENvbnRleHQgKmNvbnRleHQsIFBv
aW50UGFyYW1ldGVyIHBuYW1lUGFja2VkLCBHTGZpeGVkIHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVQ
b2ludFBhcmFtZXRlcnh2KENvbnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFj
a2VkLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVBvaW50U2l6ZShDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHNpemUpOwotYm9vbCBWYWxpZGF0ZVBvaW50U2l6ZXgoQ29u
dGV4dCAqY29udGV4dCwgR0xmaXhlZCBzaXplKTsKLWJvb2wgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0
eChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0cyk7Ci1ib29s
IFZhbGlkYXRlUG9wTWF0cml4KENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZVB1c2hN
YXRyaXgoQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlUm90YXRlZihDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IGFuZ2xlLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsK
LWJvb2wgVmFsaWRhdGVSb3RhdGV4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgYW5nbGUsIEdM
Zml4ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopOwotYm9vbCBWYWxpZGF0ZVNhbXBsZUNvdmVy
YWdleChDb250ZXh0ICpjb250ZXh0LCBHTGNsYW1weCB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7
Ci1ib29sIFZhbGlkYXRlU2NhbGVmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHopOwotYm9vbCBWYWxpZGF0ZVNjYWxleChDb250ZXh0ICpjb250ZXh0LCBH
TGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KTsKLWJvb2wgVmFsaWRhdGVTaGFkZU1vZGVs
KENvbnRleHQgKmNvbnRleHQsIFNoYWRpbmdNb2RlbCBtb2RlUGFja2VkKTsKLWJvb2wgVmFsaWRh
dGVUZXhDb29yZFBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQb2ludFBh
cmFtZXRlcmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQsIEdMZmxvYXQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50UGFy
YW1ldGVyIHBuYW1lUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcngoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsIEdMZml4ZWQgcGFyYW0p
OworYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsK
K2Jvb2wgVmFsaWRhdGVQb2ludFNpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBz
aXplKTsKK2Jvb2wgVmFsaWRhdGVQb2ludFNpemV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
Zml4ZWQgc2l6ZSk7Citib29sIFZhbGlkYXRlUG9seWdvbk9mZnNldHgoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xmaXhlZCBmYWN0b3IsIEdMZml4ZWQgdW5pdHMpOworYm9vbCBWYWxpZGF0ZVBv
cE1hdHJpeChjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVQdXNoTWF0cml4
KGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVJvdGF0ZWYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeik7Citib29sIFZhbGlkYXRlUm90YXRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZp
eGVkIGFuZ2xlLCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KTsKK2Jvb2wgVmFsaWRh
dGVTYW1wbGVDb3ZlcmFnZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xjbGFtcHggdmFsdWUs
IEdMYm9vbGVhbiBpbnZlcnQpOworYm9vbCBWYWxpZGF0ZVNjYWxlZihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKK2Jvb2wgVmFsaWRhdGVT
Y2FsZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4
ZWQgeik7Citib29sIFZhbGlkYXRlU2hhZGVNb2RlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBT
aGFkaW5nTW9kZWwgbW9kZVBhY2tlZCk7Citib29sIFZhbGlkYXRlVGV4Q29vcmRQb2ludGVyKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlw
ZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwotYm9vbCBW
YWxpZGF0ZVRleEVudmYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhFbnZmKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52VGFy
Z2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0
ZXIgcG5hbWVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKTsKLWJv
b2wgVmFsaWRhdGVUZXhFbnZmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVu
dmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUVudlRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVu
dlBhcmFtZXRlciBwbmFtZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleEVudmkoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXhFbnZpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4RW52aXYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhFbnZpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4RW52eChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudngoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleEVudnh2
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4RW52eHYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7Ci1ib29s
IFZhbGlkYXRlVGV4UGFyYW1ldGVyeChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVyeHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHBhcmFtKTsKK2Jvb2wg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJ4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUcmFuc2xhdGVmKENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwotYm9vbCBWYWxp
ZGF0ZVRyYW5zbGF0ZXgoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdM
Zml4ZWQgeik7Ci1ib29sIFZhbGlkYXRlVmVydGV4UG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVRyYW5zbGF0ZWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4
LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7Citib29sIFZhbGlkYXRlVHJhbnNsYXRleChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzdHJpZGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAKaW5kZXggNTBjYTVlYTk4ZjkyYWIzMDBmOWU0ODQ5
YTdkMzIwMjQ3Y2NhMjhlMC4uZmFkYmRhYzc3MzMyMDA5MDI1OWNjMzBhMjFmNjk5ZjdhNGEwMTQ0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25FUzIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRVMyLmNwcApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Zl
bmNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9NZW1vcnlP
YmplY3QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9TaGFkZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCkBAIC0zNSw3
ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBlcnI7CiBuYW1lc3BhY2UKIHsKIAotYm9vbCBJc1Bh
cnRpYWxCbGl0KGdsOjpDb250ZXh0ICpjb250ZXh0LAorYm9vbCBJc1BhcnRpYWxCbGl0KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50ICpyZWFkQnVmZmVyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqd3JpdGVCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Jj
WDAsCkBAIC02NiwxNDkgKzY3LDYgQEAgYm9vbCBJc1BhcnRpYWxCbGl0KGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1i
b29sIFZhbGlkYXRlUGF0aEluc3RhbmNlcyhnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
dGhJRCBwYXRoQmFzZSkKLXsKLSAgICBjb25zdCBhdXRvICphcnJheSA9IHN0YXRpY19jYXN0PGNv
bnN0IFQgKj4ocGF0aHMpOwotCi0gICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgbnVtUGF0aHM7
ICsraSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IEdMdWludCBwYXRoTmFtZSA9IGFycmF5W2ldICsg
cGF0aEJhc2UudmFsdWU7Ci0gICAgICAgIGlmIChjb250ZXh0LT5pc1BhdGhHZW5lcmF0ZWQoe3Bh
dGhOYW1lfSkgJiYgIWNvbnRleHQtPmlzUGF0aCh7cGF0aE5hbWV9KSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
Tm9TdWNoUGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVJbnN0YW5jZWRQYXRoUGFyYW1l
dGVycyhnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGF0aElEIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29u
dGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90
RW5hYmxlZCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAocGF0aHMg
PT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9J
TlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhOYW1lQXJyYXkpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgaWYgKG51bVBhdGhzIDwgMCkKLSAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhOdW1QYXRo
cyk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWFuZ2xlOjpJc1Zh
bHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHN0ZDo6dWludDMyX3Q+KG51bVBhdGhzKSkKLSAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
a0ludGVnZXJPdmVyZmxvdyk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBz
dGQ6OnVpbnQzMl90IHBhdGhOYW1lVHlwZVNpemUgPSAwOwotICAgIHN0ZDo6dWludDMyX3QgY29t
cG9uZW50Q291bnQgICA9IDA7Ci0KLSAgICBzd2l0Y2ggKHBhdGhOYW1lVHlwZSkKLSAgICB7Ci0g
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgIHBhdGhOYW1lVHlwZVNp
emUgPSBzaXplb2YoR0x1Ynl0ZSk7Ci0gICAgICAgICAgICBpZiAoIVZhbGlkYXRlUGF0aEluc3Rh
bmNlczxHTHVieXRlPihjb250ZXh0LCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIEdMX0JZVEU6Ci0gICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0gc2l6ZW9mKEdMYnl0
ZSk7Ci0gICAgICAgICAgICBpZiAoIVZhbGlkYXRlUGF0aEluc3RhbmNlczxHTGJ5dGU+KGNvbnRl
eHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlQ6Ci0gICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0gc2l6ZW9mKEdMdXNob3J0KTsKLSAg
ICAgICAgICAgIGlmICghVmFsaWRhdGVQYXRoSW5zdGFuY2VzPEdMdXNob3J0Pihjb250ZXh0LCBu
dW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEdMX1NIT1JUOgotICAgICAgICAg
ICAgcGF0aE5hbWVUeXBlU2l6ZSA9IHNpemVvZihHTHNob3J0KTsKLSAgICAgICAgICAgIGlmICgh
VmFsaWRhdGVQYXRoSW5zdGFuY2VzPEdMc2hvcnQ+KGNvbnRleHQsIG51bVBhdGhzLCBwYXRocywg
cGF0aEJhc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICAgICAgcGF0aE5h
bWVUeXBlU2l6ZSA9IHNpemVvZihHTHVpbnQpOwotICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVBh
dGhJbnN0YW5jZXM8R0x1aW50Pihjb250ZXh0LCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICAgIHBhdGhOYW1lVHlwZVNpemUgPSBzaXplb2Yo
R0xpbnQpOwotICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVBhdGhJbnN0YW5jZXM8R0xpbnQ+KGNv
bnRleHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFBh
dGhOYW1lVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dp
dGNoICh0cmFuc2Zvcm1UeXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9OT05FOgotICAgICAg
ICAgICAgY29tcG9uZW50Q291bnQgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU06Ci0gICAgICAgIGNhc2UgR0xfVFJBTlNMQVRFX1lf
Q0hST01JVU06Ci0gICAgICAgICAgICBjb21wb25lbnRDb3VudCA9IDE7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVfMkRfQ0hST01JVU06Ci0gICAgICAgICAg
ICBjb21wb25lbnRDb3VudCA9IDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBH
TF9UUkFOU0xBVEVfM0RfQ0hST01JVU06Ci0gICAgICAgICAgICBjb21wb25lbnRDb3VudCA9IDM7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9BRkZJTkVfMkRfQ0hST01JVU06
Ci0gICAgICAgIGNhc2UgR0xfVFJBTlNQT1NFX0FGRklORV8yRF9DSFJPTUlVTToKLSAgICAgICAg
ICAgIGNvbXBvbmVudENvdW50ID0gNjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEdMX0FGRklORV8zRF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9UUkFOU1BPU0VfQUZGSU5F
XzNEX0NIUk9NSVVNOgotICAgICAgICAgICAgY29tcG9uZW50Q291bnQgPSAxMjsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRh
dGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRUcmFuc2Zvcm1hdGlvbik7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChjb21wb25lbnRDb3VudCAhPSAw
ICYmIHRyYW5zZm9ybVZhbHVlcyA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtOb1RyYW5zZm9ybUFycmF5KTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxz
dGQ6OnVpbnQzMl90PiBjaGVja2VkU2l6ZSgwKTsKLSAgICBjaGVja2VkU2l6ZSArPSAobnVtUGF0
aHMgKiBwYXRoTmFtZVR5cGVTaXplKTsKLSAgICBjaGVja2VkU2l6ZSArPSAobnVtUGF0aHMgKiBz
aXplb2YoR0xmbG9hdCkgKiBjb21wb25lbnRDb3VudCk7Ci0gICAgaWYgKCFjaGVja2VkU2l6ZS5J
c1ZhbGlkKCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGtJbnRlZ2VyT3ZlcmZsb3cpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgSXNWYWxpZENvcHlUZXh0dXJl
U291cmNlSW50ZXJuYWxGb3JtYXRFbnVtKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICAv
LyBUYWJsZSAxLjEgZnJvbSB0aGUgQ0hST01JVU1fY29weV90ZXh0dXJlIHNwZWMKQEAgLTI4Niw3
ICsxNDQsOSBAQCBib29sIElzVmFsaWRDb3B5U3ViVGV4dHVyZURlc3Rpb25hdGlvbkludGVybmFs
Rm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKICAgICByZXR1cm4gSXNWYWxpZENvcHlUZXh0
dXJlRGVzdGluYXRpb25JbnRlcm5hbEZvcm1hdEVudW0oaW50ZXJuYWxGb3JtYXQpOwogfQogCi1i
b29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uRm9ybWF0VHlwZShDb250ZXh0ICpjb250
ZXh0LCBHTGludCBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5cGUpCitib29sIElzVmFsaWRDb3B5
VGV4dHVyZURlc3RpbmF0aW9uRm9ybWF0VHlwZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSkKIHsKICAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uSW50ZXJu
YWxGb3JtYXRFbnVtKGludGVybmFsRm9ybWF0KSkKICAgICB7CkBAIC0zMTAsNyArMTcwLDcgQEAg
Ym9vbCBJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvbkZvcm1hdFR5cGUoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgaW50ZXJuYWxGb3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJc1Zh
bGlkQ29weVRleHR1cmVEZXN0aW5hdGlvblRhcmdldEVudW0oQ29udGV4dCAqY29udGV4dCwgVGV4
dHVyZVRhcmdldCB0YXJnZXQpCitib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFy
Z2V0RW51bShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVGFyZ2V0IHRhcmdldCkKIHsK
ICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7CkBAIC0zMzEsMTQgKzE5MSwxNCBAQCBib29sIElz
VmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0RW51bShDb250ZXh0ICpjb250ZXh0LCBU
ZXh0dXJlVGFyZ2V0IHRhcgogICAgIH0KIH0KIAotYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVEZXN0
aW5hdGlvblRhcmdldChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVE
ZXN0aW5hdGlvblRhcmdldChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQp
CiB7CiAgICAgcmV0dXJuIFRleHR1cmVUYXJnZXRUb1R5cGUodGFyZ2V0KSA9PSB0ZXh0dXJlVHlw
ZTsKIH0KIAotYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VUYXJnZXQoQ29udGV4dCAqY29u
dGV4dCwgVGV4dHVyZVR5cGUgdHlwZSkKK2Jvb2wgSXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFy
Z2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUpCiB7CiAgICAgc3dp
dGNoICh0eXBlKQogICAgIHsKQEAgLTM1NSw3ICsyMTUsNyBAQCBib29sIElzVmFsaWRDb3B5VGV4
dHVyZVNvdXJjZVRhcmdldChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlKQogICAg
IH0KIH0KIAotYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VMZXZlbChDb250ZXh0ICpjb250
ZXh0LCBUZXh0dXJlVHlwZSB0eXBlLCBHTGludCBsZXZlbCkKK2Jvb2wgSXNWYWxpZENvcHlUZXh0
dXJlU291cmNlTGV2ZWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdHlwZSwg
R0xpbnQgbGV2ZWwpCiB7CiAgICAgaWYgKCFWYWxpZE1pcExldmVsKGNvbnRleHQsIHR5cGUsIGxl
dmVsKSkKICAgICB7CkBAIC0zNzAsNyArMjMwLDcgQEAgYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVT
b3VyY2VMZXZlbChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlLCBHTGludCBsZXYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlv
bkxldmVsKENvbnRleHQgKmNvbnRleHQsCitib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0
aW9uTGV2ZWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC00NTgsNyArMzE4LDcgQEAgYm9vbCBJ
c1ZhbGlkU3RlbmNpbE9wKEdMZW51bSBvcCkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzJD
b3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRVMy
Q29weVRleEltYWdlUGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAg
LTQ5Miw3ICszNTIsNyBAQCBib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29u
c3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBHTGVudW0gY29s
b3JidWZmZXJGb3JtYXQgPQogICAgICAgICBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yQXR0YWNo
bWVudCgpLT5nZXRGb3JtYXQoKS5pbmZvLT5zaXplZEludGVybmFsRm9ybWF0OwogICAgIGNvbnN0
IGF1dG8gJmZvcm1hdEluZm8gPSAqdGV4dHVyZUZvcm1hdC5pbmZvOwpAQCAtMTA0NCw3ICs5MDQs
NyBAQCBib29sIElzVmFsaWRFU1NMU2hhZGVyU291cmNlU3RyaW5nKGNvbnN0IGNoYXIgKnN0ciwg
c2l6ZV90IGxlbiwgYm9vbCBsaW5lQ29udGludQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlV2ViR0xOYW1lUHJlZml4KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMY2hhciAq
bmFtZSkKK2Jvb2wgVmFsaWRhdGVXZWJHTE5hbWVQcmVmaXgoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xjaGFyICpuYW1lKQogewogICAgIEFTU0VSVChjb250ZXh0LT5pc1dlYkdMKCkp
OwogCkBAIC0xMDU5LDcgKzkxOSw3IEBAIGJvb2wgVmFsaWRhdGVXZWJHTE5hbWVQcmVmaXgoQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlV2ViR0xOYW1lTGVuZ3RoKENvbnRleHQgKmNvbnRleHQsIHNpemVfdCBs
ZW5ndGgpCitib29sIFZhbGlkYXRlV2ViR0xOYW1lTGVuZ3RoKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzV2ViR0woKSk7CiAK
QEAgLTEwODMsMjUgKzk0Myw5IEBAIGJvb2wgVmFsaWRhdGVXZWJHTE5hbWVMZW5ndGgoQ29udGV4
dCAqY29udGV4dCwgc2l6ZV90IGxlbmd0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZU1hdHJpeE1vZGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeE1vZGUpCi17
Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKLSAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
a0V4dGVuc2lvbk5vdEVuYWJsZWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgaWYgKG1hdHJpeE1vZGUgIT0gR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0gJiYgbWF0cml4
TW9kZSAhPSBHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0pCi0gICAgewotICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZE1hdHJpeE1vZGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCiBi
b29sIFZhbGlkQmxlbmRGdW5jKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB2YWwpCiB7
Ci0gICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmV4dCA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KTsKKyAgICBjb25zdCBFeHRlbnNpb25zICZleHQgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7
CiAKICAgICAvLyB0aGVzZSBhcmUgYWx3YXlzIHZhbGlkIGZvciBzcmMgYW5kIGRzdC4KICAgICBz
d2l0Y2ggKHZhbCkKQEAgLTExODEsNyArMTAyNSw3IEBAIGJvb2wgSXNWYWxpZEltYWdlTGF5b3V0
KEltYWdlTGF5b3V0IGxheW91dCkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzJUZXhJbWFn
ZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBh
cmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0xMjA4LDkgKzEwNTIsMjEgQEAgYm9vbCBW
YWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBpbWFnZVNp
emUsIHBpeGVscyk7CiB9CiAKK2Jvb2wgSXNWYWxpZE1lbW9yeU9iamVjdFBhcmFtYXRlcihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpCit7CisgICAgc3dpdGNoIChwbmFtZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfREVESUNBVEVEX01FTU9SWV9PQkpFQ1RfRVhUOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotYm9v
bCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LApAQCAtMTI0Nyw3ICsxMTAzLDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdl
UGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwor
ICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CiAKICAgICBzd2l0Y2gg
KHRleFR5cGUpCiAgICAgewpAQCAtMTI5Niw3ICsxMTUyLDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRl
eEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdl
dFRleHR1cmVCeVR5cGUodGV4VHlwZSk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQt
PmdldFRleHR1cmVCeVR5cGUodGV4VHlwZSk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgIHsKICAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrQnVm
ZmVyTm90Qm91bmQpOwpAQCAtMTkzMyw3ICsxNzg5LDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleElt
YWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGltYWdlU2l6ZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzJUZXhTdG9yYWdlUGFy
YW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJh
bWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTE5NTksMjAgKzE4MTUsMjAgQEAg
Ym9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2
ZWxzICE9IGdsOjpsb2cyKHN0ZDo6bWF4KHdpZHRoLCBoZWlnaHQpKSArIDEpCisgICAgaWYgKGxl
dmVscyAhPSAxICYmIGxldmVscyAhPSBsb2cyKHN0ZDo6bWF4KHdpZHRoLCBoZWlnaHQpKSArIDEp
CiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sIGtJbnZhbGlkTWlwTGV2ZWxzKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRTaXpl
ZEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7CisgICAgY29uc3QgSW50ZXJuYWxG
b3JtYXQgJmZvcm1hdEluZm8gPSBHZXRTaXplZEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZv
cm1hdCk7CiAgICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0ID09IEdMX05PTkUgfHwgZm9ybWF0SW5m
by50eXBlID09IEdMX05PTkUpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZEZvcm1hdCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMo
KTsKKyAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwogCiAgICAgc3dp
dGNoICh0YXJnZXQpCiAgICAgewpAQCAtMjAxNSw3ICsxODcxLDcgQEAgYm9vbCBWYWxpZGF0ZUVT
MlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAobGV2ZWxz
ICE9IDEgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVE9FUykKICAgICB7
Ci0gICAgICAgIGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0KSkK
KyAgICAgICAgaWYgKCFpc1BvdzIod2lkdGgpIHx8ICFpc1BvdzIoaGVpZ2h0KSkKICAgICAgICAg
ewogICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBrRGltZW5zaW9uc011c3RCZVBvdzIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjIwNiw3ICsyMDYyLDcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJz
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBnbDo6
VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRleHR1cmVCeVR5cGUodGFyZ2V0KTsKKyAg
ICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0YXJnZXQpOwog
ICAgIGlmICghdGV4dHVyZSB8fCB0ZXh0dXJlLT5pZCgpLnZhbHVlID09IDApCiAgICAgewogICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtNaXNz
aW5nVGV4dHVyZSk7CkBAIC0yMjIyLDcgKzIwNzgsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4U3Rv
cmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRz
KQpAQCAtMjI1MCw3ICsyMTA2LDcgQEAgYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVY
VChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhB
cnJheU9FUyhDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KQorYm9vbCBWYWxp
ZGF0ZUJpbmRWZXJ0ZXhBcnJheU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJh
eUlEIGFycmF5KQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRleEFy
cmF5T2JqZWN0T0VTKQogICAgIHsKQEAgLTIyNjEsNyArMjExNyw3IEBAIGJvb2wgVmFsaWRhdGVC
aW5kVmVydGV4QXJyYXlPRVMoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkK
ICAgICByZXR1cm4gVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlCYXNlKGNvbnRleHQsIGFycmF5KTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5c09FUyhDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIGNvbnN0IFZlcnRleEFycmF5SUQgKmFycmF5cykKK2Jvb2wgVmFsaWRhdGVE
ZWxldGVWZXJ0ZXhBcnJheXNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBj
b25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudmVydGV4QXJyYXlPYmplY3RPRVMpCiAgICAgewpAQCAtMjI3Miw3ICsyMTI4LDcg
QEAgYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5c09FUyhDb250ZXh0ICpjb250ZXh0LCBH
THNpemVpIG4sIGNvbnN0IFZlcnRleEFycmEKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0
ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFycmF5c09FUyhDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFZlcnRleEFycmF5SUQgKmFycmF5cykKK2Jvb2wgVmFs
aWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBu
LCBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3RPRVMpCiAgICAgewpAQCAtMjI4Myw3ICsyMTM5
LDcgQEAgYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFycmF5c09FUyhDb250ZXh0ICpjb250ZXh0LCBH
THNpemVpIG4sIFZlcnRleEFycmF5SUQgKmFycmEKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRl
bGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoQ29u
dGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkKK2Jvb2wgVmFsaWRhdGVJc1ZlcnRl
eEFycmF5T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXkpCiB7
CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3RPRVMp
CiAgICAgewpAQCAtMjI5NCw3ICsyMTUwLDcgQEAgYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlP
RVMoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnlPRVMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnksCkBAIC0yMzA5LDEyICsy
MTY1LDEyIEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5T0VTKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeUJhc2UoY29udGV4dCwgcHJvZ3JhbSwg
YmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9n
cmFtQmluYXJ5T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJp
bmFyeU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKmJpbmFyeUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmJpbmFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6
ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51
bSAqYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqYmluYXJ5KQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFBy
b2dyYW1CaW5hcnlPRVMpCiAgICAgewpAQCAtMjM4MCw3ICsyMjM2LDcgQEAgc3RhdGljIGJvb2wg
VmFsaWREZWJ1Z1NldmVyaXR5KEdMZW51bSBzZXZlcml0eSkKICAgICB9CiB9CiAKLWJvb2wgVmFs
aWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlRGVidWdNZXNzYWdlQ29udHJvbEtIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LApAQCAtMjQzMCw3ICsyMjg2LDcgQEAg
Ym9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2xLSFIoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLApAQCAt
MjQ3OSw3ICsyMzM1LDcgQEAgYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVidWdN
ZXNzYWdlQ2FsbGJhY2tLSFIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01l
c3NhZ2VDYWxsYmFja0tIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKIHsKQEAg
LTI0OTIsMTUgKzIzNDgsMTUgQEAgYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNhbGxiYWNrS0hS
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXREZWJ1Z01lc3NhZ2VMb2dLSFIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRE
ZWJ1Z01lc3NhZ2VMb2dLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSAqc291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtICp0eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICppZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAq
c2V2ZXJpdGllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICptZXNz
YWdlTG9nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0g
KnNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51
bSAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqaWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0g
KnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqbWVzc2FnZUxvZykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kZWJ1ZykKICAgICB7CkBAIC0yNTE3LDcgKzIzNzMsNyBAQCBib29sIFZhbGlkYXRlR2V0RGVi
dWdNZXNzYWdlTG9nS0hSKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwS0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBsZW5ndGgsCkBAIC0yNTUyLDcgKzI0MDgsNyBAQCBib29sIFZhbGlkYXRlUHVzaERl
YnVnR3JvdXBLSFIoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRh
dGVQb3BEZWJ1Z0dyb3VwS0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCiAgICAgewpAQCAtMjU3MCw3ICsyNDI2LDcg
QEAgYm9vbCBWYWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoQ29udGV4dCAqY29udGV4dCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgVmFsaWRhdGVPYmplY3RJZGVudGlmaWVyQW5k
TmFtZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUpCitz
dGF0aWMgYm9vbCBWYWxpZGF0ZU9iamVjdElkZW50aWZpZXJBbmROYW1lKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSkKIHsKICAgICBzd2l0Y2gg
KGlkZW50aWZpZXIpCiAgICAgewpAQCAtMjY2MCw3ICsyNTE2LDcgQEAgc3RhdGljIGJvb2wgVmFs
aWRhdGVPYmplY3RJZGVudGlmaWVyQW5kTmFtZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gaWRl
bnRpZmllciwKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIFZhbGlkYXRlTGFiZWxMZW5ndGgoQ29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpCitzdGF0
aWMgYm9vbCBWYWxpZGF0ZUxhYmVsTGVuZ3RoKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIHNpemVfdCBsYWJlbExlbmd0
aCA9IDA7CiAKQEAgLTI2ODUsNyArMjU0MSw3IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlTGFiZWxM
ZW5ndGgoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVPYmplY3RMYWJlbEtIUihDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU9iamVjdExhYmVsS0hSKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCkBAIC0yNzEwLDEyICsyNTY2LDEyIEBAIGJvb2wg
VmFsaWRhdGVPYmplY3RMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRPYmplY3RMYWJlbEtIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xj
aGFyICpsYWJlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICps
YWJlbCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKICAgICB7
CkBAIC0yNzM3LDcgKzI1OTMsNyBAQCBib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWxLSFIoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgVmFsaWRh
dGVPYmplY3RQdHJOYW1lKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IHZvaWQgKnB0cikKK3N0YXRp
YyBib29sIFZhbGlkYXRlT2JqZWN0UHRyTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25z
dCB2b2lkICpwdHIpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldFN5bmMocmVpbnRlcnByZXRfY2Fz
dDxHTHN5bmM+KGNvbnN0X2Nhc3Q8dm9pZCAqPihwdHIpKSkgPT0gbnVsbHB0cikKICAgICB7CkBA
IC0yNzQ4LDcgKzI2MDQsNyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZU9iamVjdFB0ck5hbWUoQ29u
dGV4dCAqY29udGV4dCwgY29uc3Qgdm9pZCAqcHRyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlT2JqZWN0UHRyTGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVPYmplY3RQdHJMYWJlbEtIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKQpAQCAtMjc3MiwxMSArMjYyOCwxMSBAQCBib29sIFZh
bGlkYXRlT2JqZWN0UHRyTGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsS0hSKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0T2JqZWN0UHRyTGFiZWxLSFIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKQEAgLTI3OTgsNyArMjY1NCw3IEBA
IGJvb2wgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UG9pbnRlcnZLSFIoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFBv
aW50ZXJ2S0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgdm9pZCAqY29u
c3QgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykK
ICAgICB7CkBAIC0yODIxLDE3ICsyNjc3LDE3IEBAIGJvb2wgVmFsaWRhdGVHZXRQb2ludGVydktI
UihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQb2ludGVydlJvYnVzdEFO
R0xFUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
KnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5URUQo
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c3JjWTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDEsCkBA
IC0yOTY0LDcgKzI4MjAsNyBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFy
KENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykKK2Jvb2wgVmFsaWRhdGVDbGVhcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCiB7CiAgICAgRnJhbWVidWZm
ZXIgKmZibyAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVm
ZmVyKCk7CiAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKTsKQEAgLTMwMTAsNyArMjg2Niw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhcihDb250
ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNv
bnN0IEdMZW51bSAqYnVmcykKK2Jvb2wgVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKIHsKICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVycykKICAgICB7CkBAIC0zMDIxLDcg
KzI4NzcsNyBAQCBib29sIFZhbGlkYXRlRHJhd0J1ZmZlcnNFWFQoQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0J1
ZmZlcnNCYXNlKGNvbnRleHQsIG4sIGJ1ZnMpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4SW1hZ2Uy
RChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEltYWdlMkQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKQEAgLTMwNDQsNyArMjkwMCw3IEBAIGJvb2wg
VmFsaWRhdGVUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleElt
YWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEltYWdl
MkRSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LApAQCAtMzA3NCw3ICsyOTMwLDcgQEAgYm9v
bCBWYWxpZGF0ZVRleEltYWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4
U3ViSW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBA
IC0zMDk4LDcgKzI5NTQsNyBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRChDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVs
cyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LApAQCAtMzEyOCw3ICsyOTg0LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdWJJbWFn
ZTNET0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRE9FUyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0z
MTQ1LDcgKzMwMDEsNyBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRE9FUyhDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTJEKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCkBAIC0zMTc3LDcgKzMwMzMsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRl
eEltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9y
bWF0SW5mbyA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKIAog
ICAgIEdMdWludCBibG9ja1NpemUgPSAwOwotICAgIGlmICghZm9ybWF0SW5mby5jb21wdXRlQ29t
cHJlc3NlZEltYWdlU2l6ZShnbDo6RXh0ZW50cyh3aWR0aCwgaGVpZ2h0LCAxKSwgJmJsb2NrU2l6
ZSkpCisgICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKEV4dGVu
dHMod2lkdGgsIGhlaWdodCwgMSksICZibG9ja1NpemUpKQogICAgIHsKICAgICAgICAgY29udGV4
dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrSW50ZWdlck92ZXJmbG93
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE5OCw3ICszMDU0LDcgQEAgYm9vbCBWYWxp
ZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAg
LTMyMTgsNyArMzA3NCw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpOwogfQogCi1ib29sIFZhbGlkYXRlQ29t
cHJlc3NlZFRleEltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21w
cmVzc2VkVGV4SW1hZ2UzRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTMyMzMsNyAr
MzA4OSw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyhDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBi
b3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0zMjU0LDcgKzMxMTAsNyBAQCBib29sIFZhbGlk
YXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgaW1hZ2VT
aXplLCBkYXRhKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB4b2Zmc2V0LApAQCAtMzI4Niw3ICszMTQyLDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNz
ZWRUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAKICAgICBjb25zdCBJbnRlcm5hbEZv
cm1hdCAmZm9ybWF0SW5mbyA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXRJbmZvKGZvcm1hdCk7CiAg
ICAgR0x1aW50IGJsb2NrU2l6ZSAgICAgICAgICAgICAgICAgPSAwOwotICAgIGlmICghZm9ybWF0
SW5mby5jb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6ZShnbDo6RXh0ZW50cyh3aWR0aCwgaGVpZ2h0
LCAxKSwgJmJsb2NrU2l6ZSkpCisgICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2Vk
SW1hZ2VTaXplKEV4dGVudHMod2lkdGgsIGhlaWdodCwgMSksICZibG9ja1NpemUpKQogICAgIHsK
ICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
SW50ZWdlck92ZXJmbG93KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzMwMSw3ICszMTU3
LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRE9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhT
dWJJbWFnZTNET0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTMzMTgsMTAgKzMxNzQs
MTAgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
QnVmZmVyUG9pbnRlcnZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCdWZm
ZXJQb2ludGVydk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICoqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmNvbnN0ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkubWFwQnVmZmVyT0VTKQogICAgIHsKQEAgLTMzMzIsNyArMzE4OCw3IEBAIGJvb2wgVmFsaWRh
dGVHZXRCdWZmZXJQb2ludGVydk9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxp
ZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBudWxscHRy
LCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlTWFwQnVmZmVyT0VTKENvbnRleHQgKmNvbnRl
eHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQorYm9vbCBWYWxpZGF0ZU1h
cEJ1ZmZlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCwg
R0xlbnVtIGFjY2VzcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXBC
dWZmZXJPRVMpCiAgICAgewpAQCAtMzM2OSw3ICszMjI1LDcgQEAgYm9vbCBWYWxpZGF0ZU1hcEJ1
ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCwgR0xlbnVtIGFj
Y2VzcykKICAgICByZXR1cm4gVmFsaWRhdGVNYXBCdWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldCk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVVbm1hcEJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBCdWZm
ZXJCaW5kaW5nIHRhcmdldCkKK2Jvb2wgVmFsaWRhdGVVbm1hcEJ1ZmZlck9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCkKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5tYXBCdWZmZXJPRVMpCiAgICAgewpAQCAtMzM4MCw3ICszMjM2LDcg
QEAgYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0KQogICAgIHJldHVybiBWYWxpZGF0ZVVubWFwQnVmZmVyQmFzZShjb250ZXh0
LCB0YXJnZXQpOwogfQogCi1ib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VFWFQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwKQEAgLTMzOTUs
NyArMzI1MSw3IEBAIGJvb2wgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlQmFzZShjb250ZXh0LCB0YXJn
ZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogfQogCi1ib29sIFZhbGlkYXRlQnVmZmVyU3Rv
cmFnZU1lbUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2VN
ZW1FWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1l
bW9yeU9iamVjdElEIG1lbW9yeSwKQEAgLTM0MTEsNyArMzI2Nyw5IEBAIGJvb2wgVmFsaWRhdGVC
dWZmZXJTdG9yYWdlTWVtRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVChDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIE1lbW9yeU9iamVjdElEICptZW1vcnlPYmplY3RzKQorYm9vbCBWYWxpZGF0
ZUNyZWF0ZU1lbW9yeU9iamVjdHNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lbW9yeU9iamVjdElEICptZW1vcnlPYmplY3RzKQog
ewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1lbW9yeU9iamVjdCkKICAgICB7
CkBAIC0zNDIyLDcgKzMyODAsNyBAQCBib29sIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VY
VChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIE1lbW9yeU9iamVjdElECiAgICAgcmV0dXJu
IFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxl
dGVNZW1vcnlPYmplY3RzRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRl
TWVtb3J5T2JqZWN0c0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHMpCiB7CkBAIC0z
NDM1LDEwICszMjkzLDEwIEBAIGJvb2wgVmFsaWRhdGVEZWxldGVNZW1vcnlPYmplY3RzRVhUKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwg
bik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhU
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAg
ICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWVtb3J5T2JqZWN0KQogICAgIHsKQEAg
LTM0NDYsMTEgKzMzMDQsMjIgQEAgYm9vbCBWYWxpZGF0ZUdldE1lbW9yeU9iamVjdFBhcmFtZXRl
cml2RVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IE1lbW9y
eU9iamVjdCAqbWVtb3J5ID0gY29udGV4dC0+Z2V0TWVtb3J5T2JqZWN0KG1lbW9yeU9iamVjdCk7
CisgICAgaWYgKG1lbW9yeSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFs
aWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkTWVtb3J5T2JqZWN0KTsKKyAg
ICB9CisKKyAgICBpZiAoIUlzVmFsaWRNZW1vcnlPYmplY3RQYXJhbWF0ZXIoY29udGV4dCwgcG5h
bWUpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURf
RU5VTSwga0ludmFsaWRNZW1vcnlPYmplY3RQYXJhbWV0ZXIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbnNp
Z25lZEJ5dGV2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1Ynl0ZSAqZGF0
YSkKK2Jvb2wgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGV2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1Ynl0ZSAqZGF0YSkKIHsKICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5tZW1vcnlPYmplY3QgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zZW1hcGhvcmUpCiAgICAgewpAQCAtMzQ2Miw3ICszMzMxLDEwIEBAIGJvb2wgVmFsaWRh
dGVHZXRVbnNpZ25lZEJ5dGV2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1
Ynl0ZSAqZGF0YSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbnNp
Z25lZEJ5dGVpX3ZFWFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4LCBHTHVieXRlICpkYXRhKQorYm9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVYVChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5
dGUgKmRhdGEpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWVtb3J5T2Jq
ZWN0ICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc2VtYXBob3JlKQogICAgIHsKQEAgLTM0
NzQsNyArMzM0Niw3IEBAIGJvb2wgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFZhbGlkYXRlSXNNZW1vcnlPYmplY3RFWFQoQ29udGV4dCAqY29udGV4dCwg
TWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0KQorYm9vbCBWYWxpZGF0ZUlzTWVtb3J5T2JqZWN0
RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdCkK
IHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tZW1vcnlPYmplY3QpCiAgICAg
ewpAQCAtMzQ4NSw3ICszMzU3LDcgQEAgYm9vbCBWYWxpZGF0ZUlzTWVtb3J5T2JqZWN0RVhUKENv
bnRleHQgKmNvbnRleHQsIE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCkBAIC0zNDk2LDExICszMzY4LDI5
IEBAIGJvb2wgVmFsaWRhdGVNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBNZW1vcnlPYmplY3QgKm1lbW9yeSA9IGNv
bnRleHQtPmdldE1lbW9yeU9iamVjdChtZW1vcnlPYmplY3QpOworICAgIGlmIChtZW1vcnkgPT0g
bnVsbHB0cikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCBrSW52YWxpZE1lbW9yeU9iamVjdCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAobWVtb3J5LT5pc0ltbXV0YWJsZSgpKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrSW1tdXRhYmxl
TWVtb3J5T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
SXNWYWxpZE1lbW9yeU9iamVjdFBhcmFtYXRlcihjb250ZXh0LCBwbmFtZSkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZE1l
bW9yeU9iamVjdFBhcmFtZXRlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yREVYVChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yREVYVChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
CkBAIC0zNTI2LDcgKzM0MTYsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJERVhUKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zREVYVChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zREVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC0z
NTQ2LDcgKzM0MzYsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlSW1wb3J0TWVt
b3J5RmRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJbXBvcnRNZW1vcnlGZEVY
VChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1lbW9yeU9iamVjdElEIG1lbW9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQ2NCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5cGUg
aGFuZGxlVHlwZSwKQEAgLTM1NzAsNyArMzQ2MCwzMSBAQCBib29sIFZhbGlkYXRlSW1wb3J0TWVt
b3J5RmRFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBj
b25zdCBTZW1hcGhvcmVJRCAqc2VtYXBob3JlcykKK2Jvb2wgVmFsaWRhdGVJbXBvcnRNZW1vcnla
aXJjb25IYW5kbGVBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxl
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1lbW9yeU9iamVj
dEZ1Y2hzaWFBTkdMRSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChoYW5kbGVUeXBlKQorICAgIHsKKyAgICAg
ICAgY2FzZSBIYW5kbGVUeXBlOjpaaXJjb25WbW86CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZB
TElEX0VOVU0sIGtJbnZhbGlkSGFuZGxlVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVTZW1h
cGhvcmVzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgU2VtYXBo
b3JlSUQgKnNlbWFwaG9yZXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c2VtYXBob3JlKQogICAgIHsKQEAgLTM1ODEsNyArMzQ5NSw3IEBAIGJvb2wgVmFsaWRhdGVEZWxl
dGVTZW1hcGhvcmVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgU2VtYXBo
b3JlSUQKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUdlblNlbWFwaG9yZXNFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBu
LCBTZW1hcGhvcmVJRCAqc2VtYXBob3JlcykKK2Jvb2wgVmFsaWRhdGVHZW5TZW1hcGhvcmVzRVhU
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgU2VtYXBob3JlSUQgKnNl
bWFwaG9yZXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc2VtYXBob3Jl
KQogICAgIHsKQEAgLTM1OTIsMTAgKzM1MDYsMTAgQEAgYm9vbCBWYWxpZGF0ZUdlblNlbWFwaG9y
ZXNFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBTZW1hcGhvcmVJRCAqc2VtYXBob3IK
ICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW1h
cGhvcmVJRCBzZW1hcGhvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludDY0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50NjQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zZW1hcGhvcmUpCiAgICAgewpAQCAtMzYwNyw3ICszNTIxLDcgQEAg
Ym9vbCBWYWxpZGF0ZUdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQo
Q29udGV4dCAqY29udGV4dCwgU2VtYXBob3JlSUQgc2VtYXBob3JlKQorYm9vbCBWYWxpZGF0ZUlz
U2VtYXBob3JlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNlbWFwaG9yZUlEIHNlbWFwaG9y
ZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zZW1hcGhvcmUpCiAgICAg
ewpAQCAtMzYxOCw3ICszNTMyLDcgQEAgYm9vbCBWYWxpZGF0ZUlzU2VtYXBob3JlRVhUKENvbnRl
eHQgKmNvbnRleHQsIFNlbWFwaG9yZUlEIHNlbWFwaG9yZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW1h
cGhvcmVJRCBzZW1hcGhvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludDY0ICpwYXJhbXMpCkBAIC0zNjMzLDcgKzM1NDcsNyBAQCBib29sIFZhbGlk
YXRlU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVTaWduYWxTZW1hcGhvcmVFWFQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTaWduYWxTZW1hcGhvcmVFWFQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VtYXBob3JlSUQgc2Vt
YXBob3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtQnVmZmVy
QmFycmllcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1ZmZlcklE
ICpidWZmZXJzLApAQCAtMzY1OSw3ICszNTczLDcgQEAgYm9vbCBWYWxpZGF0ZVNpZ25hbFNlbWFw
aG9yZUVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlV2FpdFNlbWFwaG9yZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVdh
aXRTZW1hcGhvcmVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzLApAQCAtMzY4NSw3ICszNTk5LDcgQEAg
Ym9vbCBWYWxpZGF0ZVdhaXRTZW1hcGhvcmVFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUltcG9ydFNlbWFwaG9yZUZkRVhUKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlSW1wb3J0U2VtYXBob3JlRmRFWFQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW1hcGhvcmVJ
RCBzZW1hcGhvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlw
ZSBoYW5kbGVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZk
KQpAQCAtMzcwOCw3ICszNjIyLDMwIEBAIGJvb2wgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVY
VChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
TWFwQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCkKK2Jv
b2wgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNlbWFwaG9yZUlEIHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5zZW1hcGhvcmVGdWNoc2lhQU5HTEUpCisgICAgeworICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRl
bnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3
aXRjaCAoaGFuZGxlVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgSGFuZGxlVHlwZTo6WmlyY29u
RXZlbnQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkSGFuZGxl
VHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVNYXBCdWZmZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQogewogICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKICAgICBBU1NFUlQoYnVmZmVy
ICE9IG51bGxwdHIpOwpAQCAtMzczOCw3ICszNjc1LDcgQEAgYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZl
ckJhc2UoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCkKQEAgLTM3NTIsOSArMzY4OSw5IEBAIGJvb2wgVmFs
aWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2UoY29udGV4dCwgdGFyZ2V0LCBv
ZmZzZXQsIGxlbmd0aCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hS
T01JVU0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9u
Q0hST01JVU0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFt
ZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kVW5pZm9ybUxvY2F0
aW9uKQpAQCAtMzc2OSwxNCArMzcwNiwxNCBAQCBib29sIFZhbGlkYXRlQmluZFVuaWZvcm1Mb2Nh
dGlvbkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpZiAobG9jYXRpb24gPCAwKQorICAgIGlmIChsb2NhdGlvbi52YWx1ZSA8IDAp
CiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwga05lZ2F0aXZlTG9jYXRpb24pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8bG9uZz4obG9jYXRpb24pID49CisgICAgaWYgKHN0YXRpY19jYXN0PGxvbmc+KGxvY2F0
aW9uLnZhbHVlKSA+PQogICAgICAgICAoY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyArIGNh
cHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycykgKiA0KQogICAgIHsKICAgICAgICAgY29udGV4
dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkQmluZFVuaWZvcm1M
b2NhdGlvbik7CkBAIC0zODAwLDcgKzM3MzcsNyBAQCBib29sIFZhbGlkYXRlQmluZFVuaWZvcm1M
b2NhdGlvbkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gY29tcG9uZW50cykKK2Jvb2wgVmFsaWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJP
TUlVTShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29tcG9uZW50cykKIHsKICAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck1peGVkU2FtcGxlcykKICAg
ICB7CkBAIC0zODIyLDg4NyArMzc1OSwxMDkgQEAgYm9vbCBWYWxpZGF0ZUNvdmVyYWdlTW9kdWxh
dGlvbkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb21wb25lbnRzKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi0vLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotCi1ib29sIFZhbGlk
YXRlTWF0cml4TG9hZGZDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWF0cml4TW9k
ZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KQorYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlQ0hST01J
VU0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVJRCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVRhcmdldCBkZXN0VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZUlEIGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGRlc3RMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0Zs
aXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1By
ZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKQogewotICAgIGlmICghVmFsaWRhdGVNYXRyaXhNb2Rl
KGNvbnRleHQsIG1hdHJpeE1vZGUpKQorICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmNvcHlUZXh0dXJlKQogICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobWF0cml4ID09IG51bGxwdHIpCisgICAgY29uc3Qg
VGV4dHVyZSAqc291cmNlID0gY29udGV4dC0+Z2V0VGV4dHVyZShzb3VyY2VJZCk7CisgICAgaWYg
KHNvdXJjZSA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrSW52YWxpZFBhdGhNYXRyaXgpOworICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRTb3VyY2VU
ZXh0dXJlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFZhbGlkYXRlTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1hdHJpeE1vZGUpCi17Ci0gICAgcmV0dXJuIFZhbGlkYXRlTWF0cml4
TW9kZShjb250ZXh0LCBtYXRyaXhNb2RlKTsKLX0KLQotYm9vbCBWYWxpZGF0ZUdlblBhdGhzQ0hS
T01JVU0oQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSByYW5nZSkKLXsKLSAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQorICAgIGlmICghSXNWYWxpZENvcHlU
ZXh0dXJlU291cmNlVGFyZ2V0KGNvbnRleHQsIHNvdXJjZS0+Z2V0VHlwZSgpKSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4
dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkSW50ZXJuYWxGb3JtYXQpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gcmFuZ2UgPSAwIGlzIHVuZGVmaW5lZCBpbiBOVl9w
YXRoX3JlbmRlcmluZy4KLSAgICAvLyB3ZSBhZGQgc3RyaWN0ZXIgc2VtYW50aWMgY2hlY2sgaGVy
ZSBhbmQgcmVxdWlyZSBhIG5vbiB6ZXJvIHBvc2l0aXZlIHJhbmdlLgotICAgIGlmIChyYW5nZSA8
PSAwKQorICAgIFRleHR1cmVUeXBlIHNvdXJjZVR5cGUgPSBzb3VyY2UtPmdldFR5cGUoKTsKKyAg
ICBBU1NFUlQoc291cmNlVHlwZSAhPSBUZXh0dXJlVHlwZTo6Q3ViZU1hcCk7CisgICAgVGV4dHVy
ZVRhcmdldCBzb3VyY2VUYXJnZXQgPSBOb25DdWJlVGV4dHVyZVR5cGVUb1RhcmdldChzb3VyY2VU
eXBlKTsKKworICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlU291cmNlTGV2ZWwoY29udGV4dCwg
c291cmNlVHlwZSwgc291cmNlTGV2ZWwpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRh
dGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkUmFuZ2UpOworICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRTb3VyY2VUZXh0
dXJlTGV2ZWwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFhbmds
ZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxzdGQ6OnVpbnQzMl90PihyYW5nZSkpCisg
ICAgR0xzaXplaSBzb3VyY2VXaWR0aCAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzb3VyY2UtPmdl
dFdpZHRoKHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpKTsKKyAgICBHTHNpemVpIHNvdXJjZUhl
aWdodCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNvdXJjZS0+Z2V0SGVpZ2h0KHNvdXJjZVRhcmdl
dCwgc291cmNlTGV2ZWwpKTsKKyAgICBpZiAoc291cmNlV2lkdGggPT0gMCB8fCBzb3VyY2VIZWln
aHQgPT0gMCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwga0ludGVnZXJPdmVyZmxvdyk7CisgICAgICAgIGNvbnRleHQtPnZhbGlk
YXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRJbnRlcm5hbEZvcm1hdCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBWYWxpZGF0ZURlbGV0ZVBhdGhzQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgUGF0aElE
IHBhdGgsIEdMc2l6ZWkgcmFuZ2UpCi17Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkucGF0aFJlbmRlcmluZykKKyAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmc291cmNlRm9ybWF0
ID0gKnNvdXJjZS0+Z2V0Rm9ybWF0KHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpLmluZm87Cisg
ICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VJbnRlcm5hbEZvcm1hdEVudW0oc291cmNl
Rm9ybWF0LmludGVybmFsRm9ybWF0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZh
bGlkU291cmNlVGV4dHVyZUludGVybmFsRm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIC8vIHJhbmdlID0gMCBpcyB1bmRlZmluZWQgaW4gTlZfcGF0aF9yZW5kZXJp
bmcuCi0gICAgLy8gd2UgYWRkIHN0cmljdGVyIHNlbWFudGljIGNoZWNrIGhlcmUgYW5kIHJlcXVp
cmUgYSBub24gemVybyBwb3NpdGl2ZSByYW5nZS4KLSAgICBpZiAocmFuZ2UgPD0gMCkKKyAgICBp
ZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0RW51bShjb250ZXh0LCBkZXN0
VGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCBrSW52YWxpZFJhbmdlKTsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVy
cm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRUZXh0dXJlVGFyZ2V0KTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzdGQ6OnVpbnQz
Ml90PiBjaGVja2VkUmFuZ2UocGF0aC52YWx1ZSk7Ci0gICAgY2hlY2tlZFJhbmdlICs9IHJhbmdl
OwotCi0gICAgaWYgKCFhbmdsZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxzdGQ6OnVp
bnQzMl90PihyYW5nZSkgfHwgIWNoZWNrZWRSYW5nZS5Jc1ZhbGlkKCkpCisgICAgY29uc3QgVGV4
dHVyZSAqZGVzdCA9IGNvbnRleHQtPmdldFRleHR1cmUoZGVzdElkKTsKKyAgICBpZiAoZGVzdCA9
PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBrSW50ZWdlck92ZXJmbG93KTsKKyAgICAgICAgY29udGV4dC0+dmFs
aWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkRGVzdGluYXRpb25UZXh0dXJl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KIAot
Ym9vbCBWYWxpZGF0ZVBhdGhDb21tYW5kc0NIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3JkcykKLXsKLSAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQorICAgIGlmICghSXNWYWxpZENvcHlUZXh0
dXJlRGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgZGVzdC0+Z2V0VHlwZSgpLCBkZXN0VGFyZ2V0
KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWREZXN0aW5hdGlvblRleHR1cmVUeXBl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoIWNvbnRleHQtPmlzUGF0
aEdlbmVyYXRlZChwYXRoKSkKKworICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRp
b25MZXZlbChjb250ZXh0LCBkZXN0LT5nZXRUeXBlKCksIGRlc3RMZXZlbCwgc291cmNlV2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUhlaWdo
dCwgZmFsc2UpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBrTm9TdWNoUGF0aCk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZE1pcExldmVsKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChudW1Db21tYW5kcyA8IDApCisgICAgaWYgKCFJ
c1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvbkZvcm1hdFR5cGUoY29udGV4dCwgaW50ZXJuYWxG
b3JtYXQsIGRlc3RUeXBlKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhOdW1Db21tYW5kcyk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgZWxzZSBpZiAobnVtQ29tbWFuZHMgPiAwKQotICAgIHsK
LSAgICAgICAgaWYgKCFjb21tYW5kcykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkUGF0aENvbW1hbmRzQXJy
YXkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQogCi0gICAg
aWYgKG51bUNvb3JkcyA8IDApCisgICAgaWYgKGRlc3QtPmdldFR5cGUoKSA9PSBUZXh0dXJlVHlw
ZTo6Q3ViZU1hcCAmJiBzb3VyY2VXaWR0aCAhPSBzb3VyY2VIZWlnaHQpCiAgICAgewotICAgICAg
ICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRQYXRo
TnVtQ29vcmRzKTsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURf
VkFMVUUsIGtDdWJlbWFwRmFjZXNFcXVhbERpbWVuc2lvbnMpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGVsc2UgaWYgKG51bUNvb3JkcyA+IDApCi0gICAgewotICAgICAgICBp
ZiAoIWNvb3JkcykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkUGF0aE51bUNvb3Jkc0FycmF5KTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KIAotICAgIHN0ZDo6dWludDMy
X3QgY29vcmRUeXBlU2l6ZSA9IDA7Ci0gICAgc3dpdGNoIChjb29yZFR5cGUpCisgICAgaWYgKGRl
c3QtPmdldEltbXV0YWJsZUZvcm1hdCgpKQogICAgIHsKLSAgICAgICAgY2FzZSBHTF9CWVRFOgot
ICAgICAgICAgICAgY29vcmRUeXBlU2l6ZSA9IHNpemVvZihHTGJ5dGUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgY29v
cmRUeXBlU2l6ZSA9IHNpemVvZihHTHVieXRlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgR0xfU0hPUlQ6Ci0gICAgICAgICAgICBjb29yZFR5cGVTaXplID0gc2l6ZW9mKEdM
c2hvcnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVDoKLSAgICAgICAgICAgIGNvb3JkVHlwZVNpemUgPSBzaXplb2YoR0x1c2hvcnQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBHTF9GTE9BVDoKLSAgICAgICAgICAgIGNv
b3JkVHlwZVNpemUgPSBzaXplb2YoR0xmbG9hdCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfRU5VTSwga0ludmFsaWRQYXRoQ29vcmRpbmF0ZVR5cGUpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxzdGQ6OnVpbnQz
Ml90PiBjaGVja2VkU2l6ZShudW1Db21tYW5kcyk7Ci0gICAgY2hlY2tlZFNpemUgKz0gKGNvb3Jk
VHlwZVNpemUgKiBudW1Db29yZHMpOwotICAgIGlmICghY2hlY2tlZFNpemUuSXNWYWxpZCgpKQot
ICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBrSW50ZWdlck92ZXJmbG93KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIC8vIGVhcmx5IHJldHVybiBza2lwcyBjb21tYW5kIGRhdGEgdmFsaWRhdGlvbiB3aGVuIGl0
IGRvZXNuJ3QgZXhpc3QuCi0gICAgaWYgKCFjb21tYW5kcykKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBHTHNpemVpIGV4cGVjdGVkTnVtQ29vcmRzID0gMDsKLSAgICBmb3IgKEdMc2l6ZWkg
aSA9IDA7IGkgPCBudW1Db21tYW5kczsgKytpKQotICAgIHsKLSAgICAgICAgc3dpdGNoIChjb21t
YW5kc1tpXSkKLSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9DTE9TRV9QQVRIX0NIUk9N
SVVNOiAgLy8gbm8gY29vcmRpbmF0ZXMuCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEdMX01PVkVfVE9fQ0hST01JVU06Ci0gICAgICAgICAgICBjYXNlIEdMX0xJTkVf
VE9fQ0hST01JVU06Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWROdW1Db29yZHMgKz0gMjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xfUVVBRFJBVElDX0NVUlZF
X1RPX0NIUk9NSVVNOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDQ7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdMX0NVQklDX0NVUlZFX1RP
X0NIUk9NSVVNOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDY7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdMX0NPTklDX0NVUlZFX1RPX0NI
Uk9NSVVNOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkTnVtQ29vcmRzICs9IDU7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkUGF0aENvbW1h
bmQpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGlmIChleHBlY3RlZE51bUNvb3JkcyAhPSBudW1Db29yZHMpCi0gICAgewotICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRQYXRoTnVt
Q29vcmRzKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFZhbGlkYXRlUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShDb250ZXh0ICpjb250
ZXh0LCBQYXRoSUQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQotewotICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCi0gICAgewotICAgICAg
ICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNp
b25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoIWNv
bnRleHQtPmlzUGF0aEdlbmVyYXRlZChwYXRoKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZh
bGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga05vU3VjaFBhdGgpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoIChwbmFtZSkKLSAgICB7Ci0gICAg
ICAgIGNhc2UgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU06Ci0gICAgICAgICAgICBpZiAo
dmFsdWUgPCAwLjBmKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnZh
bGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhTdHJva2VXaWR0aCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTToKLSAgICAg
ICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1ZSkpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9GTEFUX0NIUk9NSVVNOgotICAgICAgICAgICAgICAg
IGNhc2UgR0xfU1FVQVJFX0NIUk9NSVVNOgotICAgICAgICAgICAgICAgIGNhc2UgR0xfUk9VTkRf
Q0hST01JVU06Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9J
TlZBTElEX0VOVU0sIGtJbnZhbGlkUGF0aEVuZENhcHMpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU06Ci0gICAgICAgICAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNhc2UgR0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNOgotICAgICAgICAgICAgICAgIGNhc2UgR0xf
QkVWRUxfQ0hST01JVU06Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9ST1VORF9DSFJPTUlVTToK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5V
TSwga0ludmFsaWRQYXRoSm9pblN0eWxlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xf
UEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTToKLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAuMGYp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkUGF0aE1pdGVyTGltaXQpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgR0xfUEFUSF9TVFJPS0VfQk9VTkRfQ0hST01JVU06Ci0gICAgICAgICAgICAv
LyBubyBlcnJvcnMsIG9ubHkgY2xhbXBpbmcuCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFM
SURfRU5VTSwga0ludmFsaWRQYXRoUGFyYW1ldGVyKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVQYXRoUGFyYW1l
dGVyaUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoLCBHTGVudW0gcG5hbWUs
IEdMaW50IHZhbHVlKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBwcm9wZXIgY2xhbXBp
bmcgY2FzdC4KLSAgICByZXR1cm4gVmFsaWRhdGVQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKGNvbnRl
eHQsIHBhdGgsIHBuYW1lLCBzdGF0aWNfY2FzdDxHTGZsb2F0Pih2YWx1ZSkpOwotfQotCi1ib29s
IFZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgUGF0
aElEIHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUpCi17Ci0gICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykKLSAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVu
YWJsZWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFjb250ZXh0
LT5pc1BhdGhHZW5lcmF0ZWQocGF0aCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb1N1Y2hQYXRoKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghdmFsdWUpCi0gICAgewotICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRQYXRoVmFsdWVB
cnJheSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHBuYW1l
KQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTToKLSAg
ICAgICAgY2FzZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX1BB
VEhfSk9JTl9TVFlMRV9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9QQVRIX01JVEVSX0xJTUlU
X0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNOgot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkUGF0aFBhcmFtZXRl
cik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgVmFsaWRhdGVHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTShDb250ZXh0ICpj
b250ZXh0LCBQYXRoSUQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFsdWUpCi17Ci0gICAg
cmV0dXJuIFZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0oY29udGV4dCwgcGF0aCwg
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxHTGZsb2F0ICo+KHZhbHVlKSk7Ci19Ci0KLWJvb2wgVmFsaWRhdGVQYXRo
U3RlbmNpbEZ1bmNDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYywgR0xpbnQg
cmVmLCBHTHVpbnQgbWFzaykKLXsKLSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
YXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGZ1bmMpCi0gICAgewotICAgICAgICBjYXNl
IEdMX05FVkVSOgotICAgICAgICBjYXNlIEdMX0FMV0FZUzoKLSAgICAgICAgY2FzZSBHTF9MRVNT
OgotICAgICAgICBjYXNlIEdMX0xFUVVBTDoKLSAgICAgICAgY2FzZSBHTF9FUVVBTDoKLSAgICAg
ICAgY2FzZSBHTF9HRVFVQUw6Ci0gICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKLSAgICAgICAgY2Fz
ZSBHTF9OT1RFUVVBTDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFs
aWRTdGVuY2lsKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotLy8gTm90ZSB0aGF0IHRoZSBzcGVjIHNwZWNpZmllcyB0aGF0IGZvciB0
aGUgcGF0aCBkcmF3aW5nIGNvbW1hbmRzCi0vLyBpZiB0aGUgcGF0aCBvYmplY3QgaXMgbm90IGFu
IGV4aXN0aW5nIHBhdGggb2JqZWN0IHRoZSBjb21tYW5kCi0vLyBkb2VzIG5vdGhpbmcgYW5kIG5v
IGVycm9yIGlzIGdlbmVyYXRlZC4KLS8vIEhvd2V2ZXIgaWYgdGhlIHBhdGggb2JqZWN0IGV4aXN0
cyBidXQgaGFzIG5vdCBiZWVuIHNwZWNpZmllZCBhbnkKLS8vIGNvbW1hbmRzIHRoZW4gYW4gZXJy
b3IgaXMgZ2VuZXJhdGVkLgotCi1ib29sIFZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0o
Q29udGV4dCAqY29udGV4dCwgUGF0aElEIHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1h
c2spCi17Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmluZykK
LSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIGlmIChjb250ZXh0LT5pc1BhdGhHZW5lcmF0ZWQocGF0aCkgJiYgIWNvbnRleHQtPmlz
UGF0aChwYXRoKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwga05vU3VjaFBhdGgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgc3dpdGNoIChmaWxsTW9kZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfSU5W
RVJUOgotICAgICAgICBjYXNlIEdMX0NPVU5UX1VQX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdM
X0NPVU5UX0RPV05fQ0hST01JVU06Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0s
IGtJbnZhbGlkRmlsbE1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGlmICghaXNQb3cyKG1hc2sgKyAxKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlk
YXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFN0ZW5jaWxCaXRNYXNrKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQYXRo
SUQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKLXsKLSAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29udGV4
dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5h
YmxlZCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoY29udGV4dC0+
aXNQYXRoR2VuZXJhdGVkKHBhdGgpICYmICFjb250ZXh0LT5pc1BhdGgocGF0aCkpCi0gICAgewot
ICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtO
b1BhdGhPck5vUGF0aERhdGEpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVDb3ZlclBhdGhDSFJPTUlVTShDb250ZXh0
ICpjb250ZXh0LCBQYXRoSUQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29u
dGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90
RW5hYmxlZCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGNvbnRleHQt
PmlzUGF0aEdlbmVyYXRlZChwYXRoKSAmJiAhY29udGV4dC0+aXNQYXRoKHBhdGgpKQotICAgIHsK
LSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
Tm9TdWNoUGF0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2gg
KGNvdmVyTW9kZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06
Ci0gICAgICAgIGNhc2UgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZENvdmVyTW9kZSk7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlQ292
ZXJGaWxsUGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoLCBHTGVudW0g
Y292ZXJNb2RlKQotewotICAgIHJldHVybiBWYWxpZGF0ZUNvdmVyUGF0aENIUk9NSVVNKGNvbnRl
eHQsIHBhdGgsIGNvdmVyTW9kZSk7Ci19Ci0KLWJvb2wgVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhD
SFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQYXRoSUQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkK
LXsKLSAgICByZXR1cm4gVmFsaWRhdGVDb3ZlclBhdGhDSFJPTUlVTShjb250ZXh0LCBwYXRoLCBj
b3Zlck1vZGUpOwotfQotCi1ib29sIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXRoSUQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICByZXR1
cm4gVmFsaWRhdGVTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShjb250ZXh0LCBwYXRoLCBmaWxsTW9k
ZSwgbWFzaykgJiYKLSAgICAgICAgICAgVmFsaWRhdGVDb3ZlclBhdGhDSFJPTUlVTShjb250ZXh0
LCBwYXRoLCBjb3Zlck1vZGUpOwotfQotCi1ib29sIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUpCi17Ci0gICAgcmV0dXJuIFZhbGlkYXRlU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShj
b250ZXh0LCBwYXRoLCByZWZlcmVuY2UsIG1hc2spICYmCi0gICAgICAgICAgIFZhbGlkYXRlQ292
ZXJQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aCwgY292ZXJNb2RlKTsKLX0KLQotYm9vbCBWYWxp
ZGF0ZUlzUGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoKQotewotICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCi0gICAgewotICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRl
bnNpb25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIGlmICghVmFsaWRhdGVJbnN0YW5jZWRQ
YXRoUGFyYW1ldGVycyhjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bVR5cGUsIHRyYW5zZm9ybVZhbHVlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3
aXRjaCAoY292ZXJNb2RlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9DT05WRVhfSFVMTF9DSFJP
TUlVTToKLSAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hfQ0hST01JVU06Ci0gICAgICAgIGNh
c2UgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNOgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZENvdmVyTW9kZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFs
aWRhdGVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVt
UGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJh
bWV0ZXJzKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwg
dHJhbnNmb3JtVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChj
b3Zlck1vZGUpCi0gICAgewotICAgICAgICBjYXNlIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNOgot
ICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9C
T1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU06Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkQ292ZXJNb2RlKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZVN0
ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQotewotCi0gICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0
ZXJzKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChmaWxs
TW9kZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfSU5WRVJUOgotICAgICAgICBjYXNlIEdMX0NP
VU5UX1VQX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX0NPVU5UX0RPV05fQ0hST01JVU06Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkRmlsbE1vZGUpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoIWlzUG93MihtYXNrICsgMSkp
Ci0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwga0ludmFsaWRTdGVuY2lsQml0TWFzayk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGF0aElEIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKLXsKLSAgICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRl
cnMoY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFu
c2Zvcm1WYWx1ZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBubyBtb3JlIHZh
bGlkYXRpb24gaGVyZS4KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlU3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0
aElEIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsK
LSAgICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0
aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKGNvdmVyTW9kZSkKLSAgICB7Ci0gICAg
ICAgIGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06Ci0gICAgICAgIGNhc2UgR0xfQk9VTkRJ
TkdfQk9YX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElO
R19CT1hFU19DSFJPTUlVTToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0lu
dmFsaWRDb3Zlck1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHN3aXRjaCAoZmlsbE1vZGUpCi0gICAgewotICAgICAgICBjYXNlIEdMX0lOVkVSVDoKLSAgICAg
ICAgY2FzZSBHTF9DT1VOVF9VUF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9DT1VOVF9ET1dO
X0NIUk9NSVVNOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZEZp
bGxNb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKCFpc1Bv
dzIobWFzayArIDEpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdM
X0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkU3RlbmNpbEJpdE1hc2spOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGF0aElEIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0
ZXJzKGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChjb3Zl
ck1vZGUpCi0gICAgewotICAgICAgICBjYXNlIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNOgotICAg
ICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9CT1VO
RElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU06Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkQ292ZXJNb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZUJpbmRG
cmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKLXsKLSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5wYXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjb25zdCBHTGludCBNYXhMb2NhdGlvbiA9IGNv
bnRleHQtPmdldENhcHMoKS5tYXhWYXJ5aW5nVmVjdG9ycyAqIDQ7Ci0gICAgaWYgKGxvY2F0aW9u
ID49IE1heExvY2F0aW9uKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkVmFyeWluZ0xvY2F0aW9uKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGF1dG8gKnByb2dyYW1PYmplY3QgPSBjb250
ZXh0LT5nZXRQcm9ncmFtTm9SZXNvbHZlTGluayhwcm9ncmFtKTsKLSAgICBpZiAoIXByb2dyYW1P
YmplY3QpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sIGtQcm9ncmFtTm90Qm91bmQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKCFuYW1lKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlv
bkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtNaXNzaW5nTmFtZSk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYW5nbGU6OkJlZ2luc1dpdGgobmFtZSwgImdsXyIpKQot
ICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBrTmFtZUJlZ2luc1dpdGhHTCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Y29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRGVzdGluYXRp
b25JbW11dGFibGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJP
TUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGF1dG8gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtUmVzb2x2ZUxpbmsocHJvZ3JhbSk7Ci0gICAgaWYgKCFw
cm9ncmFtT2JqZWN0IHx8IHByb2dyYW1PYmplY3QtPmlzRmxhZ2dlZEZvckRlbGV0aW9uKCkpCi0g
ICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIGtQcm9ncmFtRG9lc05vdEV4aXN0KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKLSAgICB7Ci0gICAgICAgIGNv
bnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga1Byb2dyYW1Ob3RM
aW5rZWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoIChnZW5N
b2RlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9OT05FOgotICAgICAgICAgICAgaWYgKGNvbXBv
bmVudHMgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRDb21wb25lbnRzKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIEdMX09CSkVDVF9MSU5FQVJfQ0hST01JVU06Ci0gICAgICAgIGNh
c2UgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DSFJP
TUlVTToKLSAgICAgICAgICAgIGlmIChjb21wb25lbnRzIDwgMSB8fCBjb21wb25lbnRzID4gNCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRDb21wb25lbnRzKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNvZWZmcykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwga0ludmFsaWRQYXRoQ29lZmZpY2llbnRzQXJyYXkpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFBhdGhHZW5Nb2RlKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgbG9jYXRpb24gaXMgLTEgdGhlbiB0aGUg
Y29tbWFuZCBpcyBzaWxlbnRseSBpZ25vcmVkCi0gICAgLy8gYW5kIG5vIGZ1cnRoZXIgdmFsaWRh
dGlvbiBpcyBuZWVkZWQuCi0gICAgaWYgKGxvY2F0aW9uID09IC0xKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSBwcm9ncmFtT2JqZWN0LT5nZXRGcmFn
bWVudElucHV0QmluZGluZ0luZm8obG9jYXRpb24pOwotCi0gICAgaWYgKCFiaW5kaW5nLnZhbGlk
KQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCBrSW52YWxpZEZyYWdtZW50SW5wdXRCaW5kaW5nKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmIChiaW5kaW5nLnR5cGUgIT0gR0xfTk9ORSkKLSAgICB7Ci0g
ICAgICAgIEdMaW50IGV4cGVjdGVkQ29tcG9uZW50cyA9IDA7Ci0gICAgICAgIHN3aXRjaCAoYmlu
ZGluZy50eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAg
ICAgICAgICAgIGV4cGVjdGVkQ29tcG9uZW50cyA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6Ci0gICAgICAgICAgICAgICAgZXhwZWN0
ZWRDb21wb25lbnRzID0gMjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgR0xfRkxPQVRfVkVDMzoKLSAgICAgICAgICAgICAgICBleHBlY3RlZENvbXBvbmVudHMgPSAz
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0
OgotICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29tcG9uZW50cyA9IDQ7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ZyYWdtZW50SW5wdXRUeXBl
Tm90RmxvYXRpbmdQb2ludCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChleHBlY3RlZENvbXBvbmVudHMgIT0gY29tcG9uZW50cyAmJiBnZW5N
b2RlICE9IEdMX05PTkUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRQYXRoQ29tcG9uZW50cyk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRl
eHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgc291cmNlSWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCBkZXN0SWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBo
YSkKLXsKLSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb3B5VGV4dHVyZSkKLSAg
ICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgY29uc3QgVGV4dHVyZSAqc291cmNlID0gY29udGV4dC0+Z2V0VGV4dHVyZShzb3VyY2VJ
ZCk7Ci0gICAgaWYgKHNvdXJjZSA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkU291cmNlVGV4dHVyZSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIUlzVmFsaWRDb3B5VGV4
dHVyZVNvdXJjZVRhcmdldChjb250ZXh0LCBzb3VyY2UtPmdldFR5cGUoKSkpCi0gICAgewotICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZh
bGlkSW50ZXJuYWxGb3JtYXQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
VGV4dHVyZVR5cGUgc291cmNlVHlwZSA9IHNvdXJjZS0+Z2V0VHlwZSgpOwotICAgIEFTU0VSVChz
b3VyY2VUeXBlICE9IFRleHR1cmVUeXBlOjpDdWJlTWFwKTsKLSAgICBUZXh0dXJlVGFyZ2V0IHNv
dXJjZVRhcmdldCA9IE5vbkN1YmVUZXh0dXJlVHlwZVRvVGFyZ2V0KHNvdXJjZVR5cGUpOwotCi0g
ICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VMZXZlbChjb250ZXh0LCBzb3VyY2VUeXBl
LCBzb3VyY2VMZXZlbCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRTb3VyY2VUZXh0dXJlTGV2ZWwpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgR0xzaXplaSBzb3VyY2VXaWR0aCAgPSBzdGF0aWNf
Y2FzdDxHTHNpemVpPihzb3VyY2UtPmdldFdpZHRoKHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwp
KTsKLSAgICBHTHNpemVpIHNvdXJjZUhlaWdodCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNvdXJj
ZS0+Z2V0SGVpZ2h0KHNvdXJjZVRhcmdldCwgc291cmNlTGV2ZWwpKTsKLSAgICBpZiAoc291cmNl
V2lkdGggPT0gMCB8fCBzb3VyY2VIZWlnaHQgPT0gMCkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRJbnRlcm5hbEZv
cm1hdCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjb25zdCBJbnRlcm5h
bEZvcm1hdCAmc291cmNlRm9ybWF0ID0gKnNvdXJjZS0+Z2V0Rm9ybWF0KHNvdXJjZVRhcmdldCwg
c291cmNlTGV2ZWwpLmluZm87Ci0gICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VJbnRl
cm5hbEZvcm1hdEVudW0oc291cmNlRm9ybWF0LmludGVybmFsRm9ybWF0KSkKLSAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFs
aWRTb3VyY2VUZXh0dXJlSW50ZXJuYWxGb3JtYXQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvblRhcmdldEVudW0o
Y29udGV4dCwgZGVzdFRhcmdldCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFRleHR1cmVUYXJnZXQpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgY29uc3QgVGV4dHVyZSAqZGVzdCA9IGNvbnRleHQt
PmdldFRleHR1cmUoZGVzdElkKTsKLSAgICBpZiAoZGVzdCA9PSBudWxscHRyKQotICAgIHsKLSAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlk
RGVzdGluYXRpb25UZXh0dXJlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmICghSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgZGVzdC0+
Z2V0VHlwZSgpLCBkZXN0VGFyZ2V0KSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZERlc3RpbmF0aW9uVGV4dHVyZVR5cGUp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFJc1ZhbGlkQ29weVRl
eHR1cmVEZXN0aW5hdGlvbkxldmVsKGNvbnRleHQsIGRlc3QtPmdldFR5cGUoKSwgZGVzdExldmVs
LCBzb3VyY2VXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc291cmNlSGVpZ2h0LCBmYWxzZSkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRNaXBMZXZlbCk7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0
aW9uRm9ybWF0VHlwZShjb250ZXh0LCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChkZXN0LT5nZXRUeXBlKCkg
PT0gVGV4dHVyZVR5cGU6OkN1YmVNYXAgJiYgc291cmNlV2lkdGggIT0gc291cmNlSGVpZ2h0KQot
ICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUs
IGtDdWJlbWFwRmFjZXNFcXVhbERpbWVuc2lvbnMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKGRlc3QtPmdldEltbXV0YWJsZUZvcm1hdCgpKQotICAgIHsKLSAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRGVzdGlu
YXRpb25JbW11dGFibGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IGRlc3RUYXJnZXQsCkBAIC00ODM1LDcgKzM5OTQsOSBAQCBib29sIFZhbGlkYXRl
Q29weVN1YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oQ29udGV4
dCAqY29udGV4dCwgVGV4dHVyZUlEIHNvdXJjZUlkLCBUZXh0dXJlSUQgZGVzdElkKQorYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlE
IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVJRCBkZXN0SWQpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29w
eUNvbXByZXNzZWRUZXh0dXJlKQogICAgIHsKQEAgLTQ4NDMsNyArNDAwNCw3IEBAIGJvb2wgVmFs
aWRhdGVDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBUZXh0
dXJlSUQgc291cmNlSWQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25z
dCBnbDo6VGV4dHVyZSAqc291cmNlID0gY29udGV4dC0+Z2V0VGV4dHVyZShzb3VyY2VJZCk7Cisg
ICAgY29uc3QgVGV4dHVyZSAqc291cmNlID0gY29udGV4dC0+Z2V0VGV4dHVyZShzb3VyY2VJZCk7
CiAgICAgaWYgKHNvdXJjZSA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgY29udGV4dC0+dmFs
aWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkU291cmNlVGV4dHVyZSk7CkBA
IC00ODYzLDE0ICs0MDI0LDE0IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkQ29weVRleHR1cmVD
SFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgc291cmNlSWQsCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6Rm9ybWF0ICZzb3VyY2VGb3JtYXQg
PSBzb3VyY2UtPmdldEZvcm1hdChUZXh0dXJlVGFyZ2V0OjpfMkQsIDApOworICAgIGNvbnN0IEZv
cm1hdCAmc291cmNlRm9ybWF0ID0gc291cmNlLT5nZXRGb3JtYXQoVGV4dHVyZVRhcmdldDo6XzJE
LCAwKTsKICAgICBpZiAoIXNvdXJjZUZvcm1hdC5pbmZvLT5jb21wcmVzc2VkKQogICAgIHsKICAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrU291
cmNlVGV4dHVyZU11c3RCZUNvbXByZXNzZWQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgY29uc3QgZ2w6OlRleHR1cmUgKmRlc3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlKGRl
c3RJZCk7CisgICAgY29uc3QgVGV4dHVyZSAqZGVzdCA9IGNvbnRleHQtPmdldFRleHR1cmUoZGVz
dElkKTsKICAgICBpZiAoZGVzdCA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkRGVzdGluYXRpb25UZXh0
dXJlKTsKQEAgLTQ4OTIsNyArNDA1Myw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkQ29weVRl
eHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgc291cmNlSWQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXIoQ29udGV4dCAqY29u
dGV4dCwgU2hhZGVyVHlwZSB0eXBlKQorYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBTaGFkZXJUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQog
ICAgIHsKQEAgLTQ5MjMsNyArNDA4NCw3IEBAIGJvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXIoQ29u
dGV4dCAqY29udGV4dCwgU2hhZGVyVHlwZSB0eXBlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlQnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJ1
ZmZlckRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
IEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0
ciBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKQEAgLTQ5
ODQsNyArNDE0NSw3IEBAIGJvb2wgVmFsaWRhdGVCdWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCdWZmZXJTdWJEYXRhKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCkBAIC01MDQ3LDcgKzQyMDgsNyBAQCBi
b29sIFZhbGlkYXRlQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVxdWVzdEV4dGVuc2lvbkFOR0xFKENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMY2hhciAqbmFtZSkKK2Jvb2wgVmFsaWRhdGVSZXF1ZXN0RXh0ZW5zaW9u
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKQogewogICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlcXVlc3RFeHRlbnNpb24pCiAgICAgewpA
QCAtNTA2NCw3ICs0MjI1LDcgQEAgYm9vbCBWYWxpZGF0ZVJlcXVlc3RFeHRlbnNpb25BTkdMRShD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVEaXNhYmxlRXh0ZW5zaW9uQU5HTEUoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xjaGFyICpuYW1lKQorYm9vbCBWYWxpZGF0ZURpc2FibGVFeHRlbnNpb25BTkdMRShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVxdWVzdEV4dGVuc2lvbikKICAgICB7CkBAIC01MDgx
LDcgKzQyNDIsNyBAQCBib29sIFZhbGlkYXRlRGlzYWJsZUV4dGVuc2lvbkFOR0xFKENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMY2hhciAqbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUp
Citib29sIFZhbGlkYXRlQWN0aXZlVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGV4dHVyZSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAyKQogICAgIHsKQEAgLTUwOTksNyArNDI2MCw3IEBAIGJvb2wgVmFsaWRhdGVBY3RpdmVUZXh0
dXJlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlQXR0YWNoU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLCBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyKQorYm9vbCBWYWxpZGF0ZUF0
dGFjaFNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0
ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogICAgIGlmICghcHJvZ3JhbU9i
amVjdCkKQEAgLTUxMjIsNyArNDI4Myw3IEBAIGJvb2wgVmFsaWRhdGVBdHRhY2hTaGFkZXIoQ29u
dGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFNoYWRlclByb2dyCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQpA
QCAtNTE2MCw3ICs0MzIxLDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRBdHRyaWJMb2NhdGlvbihDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3Jh
bSkgIT0gbnVsbHB0cjsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlcihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyKQorYm9v
bCBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyKQogewogICAgIGlmICghVmFsaWRGcmFt
ZWJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQogICAgIHsKQEAgLTUxNzgsNyArNDMzOSw3
IEBAIGJvb2wgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgRnJhbWVidWZmZXJJRCBmcmFtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVCaW5kUmVuZGVyYnVm
ZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIFJlbmRlcmJ1ZmZlcklE
IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBpZiAodGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZFUikKICAg
ICB7CkBAIC01MjE0LDEyICs0Mzc1LDE2IEBAIHN0YXRpYyBib29sIFZhbGlkQmxlbmRFcXVhdGlv
bk1vZGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCiAgICAgfQogfQogCi1i
b29sIFZhbGlkYXRlQmxlbmRDb2xvcihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xm
bG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhKQorYm9vbCBWYWxpZGF0ZUJs
ZW5kQ29sb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBncmVlbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgYWxwaGEpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVCbGVuZEVxdWF0aW9uKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKQorYm9vbCBWYWxp
ZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCiB7
CiAgICAgaWYgKCFWYWxpZEJsZW5kRXF1YXRpb25Nb2RlKGNvbnRleHQsIG1vZGUpKQogICAgIHsK
QEAgLTUyMzAsNyArNDM5NSw3IEBAIGJvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBtb2RlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlUkdC
LCBHTGVudW0gbW9kZUFscGhhKQorYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkK
IHsKICAgICBpZiAoIVZhbGlkQmxlbmRFcXVhdGlvbk1vZGUoY29udGV4dCwgbW9kZVJHQikpCiAg
ICAgewpAQCAtNTI0NywxMiArNDQxMiwxMiBAQCBib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNl
cGFyYXRlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmxlbmRGdW5jKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3RvcikKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1
bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9y
KQogewogICAgIHJldHVybiBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlKGNvbnRleHQsIHNmYWN0
b3IsIGRmYWN0b3IsIHNmYWN0b3IsIGRmYWN0b3IpOwogfQogCi1ib29sIFZhbGlkYXRlQmxlbmRG
dW5jU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNTZXBh
cmF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzcmNSR0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRzdFJHQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEs
CkBAIC01MzEwLDcgKzQ0NzUsNyBAQCBib29sIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGUoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFN0
cmluZyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbmFtZSkKK2Jvb2wgVmFsaWRhdGVHZXRTdHJp
bmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hbWUpCiB7CiAgICAgc3dpdGNoIChu
YW1lKQogICAgIHsKQEAgLTUzMzcsNyArNDUwMiw3IEBAIGJvb2wgVmFsaWRhdGVHZXRTdHJpbmco
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVMaW5lV2lkdGgoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB3aWR0aCkKK2Jv
b2wgVmFsaWRhdGVMaW5lV2lkdGgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB3aWR0
aCkKIHsKICAgICBpZiAod2lkdGggPD0gMC4wZiB8fCBpc05hTih3aWR0aCkpCiAgICAgewpAQCAt
NTM0OCw3ICs0NTEzLDcgQEAgYm9vbCBWYWxpZGF0ZUxpbmVXaWR0aChDb250ZXh0ICpjb250ZXh0
LCBHTGZsb2F0IHdpZHRoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVw
dGhSYW5nZWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB6TmVhciwgR0xmbG9hdCB6RmFyKQor
Ym9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
ek5lYXIsIEdMZmxvYXQgekZhcikKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LndlYmdsQ29tcGF0aWJpbGl0eSAmJiB6TmVhciA+IHpGYXIpCiAgICAgewpAQCAtNTM1OSw3ICs0
NTI0LDcgQEAgYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VmKENvbnRleHQgKmNvbnRleHQsIEdMZmxv
YXQgek5lYXIsIEdMZmxvYXQgekZhcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVS
ZW5kZXJidWZmZXJTdG9yYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTUzNjksNyArNDUzNCw3IEBAIGJvb2wgVmFs
aWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LApAQCAtNTQwOSw3ICs0NTc0LDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpOwogfQogCi1ib29s
IFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0KQorYm9vbCBWYWxpZGF0ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJU
YXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7CkBAIC01NDIwLDIyICs0NTg1LDI2IEBAIGJv
b2wgVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhckNvbG9y
KENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJs
dWUsIEdMZmxvYXQgYWxwaGEpCitib29sIFZhbGlkYXRlQ2xlYXJDb2xvcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBhbHBoYSkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyRGVwdGhmKENvbnRleHQg
KmNvbnRleHQsIEdMZmxvYXQgZGVwdGgpCitib29sIFZhbGlkYXRlQ2xlYXJEZXB0aGYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBkZXB0aCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUNsZWFyU3RlbmNpbChDb250ZXh0ICpjb250ZXh0LCBHTGludCBzKQor
Ym9vbCBWYWxpZGF0ZUNsZWFyU3RlbmNpbChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBz
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3JNYXNrKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29sb3JNYXNrKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGJsdWUsCkBAIC01NDQ0LDE3ICs0NjEzLDE3IEBAIGJvb2wgVmFsaWRhdGVDb2xvck1hc2so
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNv
bXBpbGVTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKK2Jv
b2wgVmFsaWRhdGVDb21waWxlU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBzaGFkZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVD
cmVhdGVQcm9ncmFtKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRlQ3JlYXRlUHJvZ3Jh
bShjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlQ3VsbEZhY2UoQ29udGV4dCAqY29udGV4dCwgQ3VsbEZhY2VNb2RlIG1vZGUpCiti
b29sIFZhbGlkYXRlQ3VsbEZhY2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQ3VsbEZhY2VNb2Rl
IG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKQogICAgIHsKQEAgLTU0NzEsNyArNDY0MCw3IEBA
IGJvb2wgVmFsaWRhdGVDdWxsRmFjZShDb250ZXh0ICpjb250ZXh0LCBDdWxsRmFjZU1vZGUgbW9k
ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVByb2dyYW0oQ29u
dGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCitib29sIFZhbGlkYXRlRGVs
ZXRlUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSkKIHsKICAgICBpZiAocHJvZ3JhbS52YWx1ZSA9PSAwKQogICAgIHsKQEAgLTU0OTUsNyArNDY2
NCw3IEBAIGJvb2wgVmFsaWRhdGVEZWxldGVQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
RGVsZXRlU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBzaGFkZXIpCiti
b29sIFZhbGlkYXRlRGVsZXRlU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBzaGFkZXIpCiB7CiAgICAgaWYgKHNoYWRlci52YWx1ZSA9PSAwKQogICAgIHsKQEAg
LTU1MTksNyArNDY4OCw3IEBAIGJvb2wgVmFsaWRhdGVEZWxldGVTaGFkZXIoQ29udGV4dCAqY29u
dGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZURlcHRoRnVuYyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYykKK2Jvb2wg
VmFsaWRhdGVEZXB0aEZ1bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZ1bmMpCiB7
CiAgICAgc3dpdGNoIChmdW5jKQogICAgIHsKQEAgLTU1NDEsMTIgKzQ3MTAsMTIgQEAgYm9vbCBW
YWxpZGF0ZURlcHRoRnVuYyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYykKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlcHRoTWFzayhDb250ZXh0ICpjb250ZXh0LCBH
TGJvb2xlYW4gZmxhZykKK2Jvb2wgVmFsaWRhdGVEZXB0aE1hc2soY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xib29sZWFuIGZsYWcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVEZXRhY2hTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sIFNoYWRlclByb2dyYW1JRCBzaGFkZXIpCitib29sIFZhbGlkYXRlRGV0YWNoU2hhZGVyKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBTaGFkZXJQcm9n
cmFtSUQgc2hhZGVyKQogewogICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFBy
b2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CiAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQpAQCAtNTU3
MCw3ICs0NzM5LDcgQEAgYm9vbCBWYWxpZGF0ZURldGFjaFNoYWRlcihDb250ZXh0ICpjb250ZXh0
LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgU2hhZGVyUHJvZ3IKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXgg
Pj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgIHsKQEAgLTU1ODEsNyArNDc1MCw3IEBAIGJvb2wg
VmFsaWRhdGVEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KQorYm9vbCBWYWxpZGF0
ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQogICAgIHsKQEAg
LTU1OTIsMTcgKzQ3NjEsMTcgQEAgYm9vbCBWYWxpZGF0ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUZpbmlzaChDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUZpbmlz
aChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlRmx1c2goQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVGbHVzaChjb25z
dCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRnJvbnRGYWNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKQorYm9vbCBWYWxpZGF0
ZUZyb250RmFjZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSkKIHsKICAgICBz
d2l0Y2ggKG1vZGUpCiAgICAgewpAQCAtNTYxNywxNCArNDc4NiwxNCBAQCBib29sIFZhbGlkYXRl
RnJvbnRGYWNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqc2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpuYW1lKQogewogICAgIGlmIChidWZzaXplIDwgMCkKICAgICB7CkBAIC01NjQ4LDE0ICs0ODE3
LDE0IEBAIGJvb2wgVmFsaWRhdGVHZXRBY3RpdmVBdHRyaWIoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0oQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKGJ1ZnNpemUgPCAw
KQogICAgIHsKQEAgLTU2NzksMTEgKzQ4NDgsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm0oQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dEF0dGFjaGVkU2hhZGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBtYXhjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCAqc2hhZGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoYWRlclByb2dyYW1JRCAqc2hhZGVycykKIHsKICAgICBpZiAobWF4Y291bnQg
PCAwKQogICAgIHsKQEAgLTU3MDEsNyArNDg3MCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRBdHRhY2hl
ZFNoYWRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldEF0dHJpYkxvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCitib29sIFZhbGlkYXRlR2V0QXR0cmliTG9j
YXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNv
bnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICAvLyBUaGUgV2ViR0wgc3BlYyAoc2VjdGlvbiA2LjIw
KSBkaXNhbGxvd3Mgc3RyaW5ncyBjb250YWluaW5nIGludmFsaWQgRVNTTCBjaGFyYWN0ZXJzIGZv
cgogICAgIC8vIHNoYWRlci1yZWxhdGVkIGVudHJ5IHBvaW50cwpAQCAtNTcyOCwzNyArNDg5Nywz
NyBAQCBib29sIFZhbGlkYXRlR2V0QXR0cmliTG9jYXRpb24oQ29udGV4dCAqY29udGV4dCwgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRCb29sZWFudihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMYm9v
bGVhbiAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW52KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xib29sZWFuICpwYXJhbXMpCiB7CiAgICAgR0xl
bnVtIG5hdGl2ZVR5cGU7CiAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7CiAgICAgcmV0
dXJuIFZhbGlkYXRlU3RhdGVRdWVyeShjb250ZXh0LCBwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1Q
YXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RXJyb3IoQ29udGV4dCAqY29udGV4dCkKK2Jv
b2wgVmFsaWRhdGVHZXRFcnJvcihjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RmxvYXR2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldEZsb2F0dihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykK
IHsKICAgICBHTGVudW0gbmF0aXZlVHlwZTsKICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0g
MDsKICAgICByZXR1cm4gVmFsaWRhdGVTdGF0ZVF1ZXJ5KGNvbnRleHQsIHBuYW1lLCAmbmF0aXZl
VHlwZSwgJm51bVBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VydihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0
SW50ZWdlcnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIEdMZW51bSBuYXRpdmVUeXBlOwogICAgIHVuc2lnbmVkIGludCBu
dW1QYXJhbXMgPSAwOwogICAgIHJldHVybiBWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5h
bWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dy
YW1JbmZvTG9nKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUluZm9M
b2coY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqaW5mb2xv
ZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICppbmZvbG9nKQog
ewogICAgIGlmIChidWZzaXplIDwgMCkKICAgICB7CkBAIC01Nzc1LDExICs0OTQ0LDExIEBAIGJv
b2wgVmFsaWRhdGVHZXRQcm9ncmFtSW5mb0xvZyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNoYWRlckluZm9Mb2coY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGNoYXIgKmluZm9sb2cpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKmluZm9sb2cpCiB7CiAgICAgaWYgKGJ1ZnNpemUgPCAwKQogICAgIHsK
QEAgLTU3OTYsMTEgKzQ5NjUsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldFNoYWRlckluZm9Mb2coQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByZWNpc2lvbnR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpyYW5nZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lvbikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnJhbmdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcHJlY2lzaW9uKQogewog
ICAgIHN3aXRjaCAoc2hhZGVydHlwZSkKICAgICB7CkBAIC01ODMzLDExICs1MDAyLDExIEBAIGJv
b2wgVmFsaWRhdGVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hh
ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xjaGFyICpzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpzb3VyY2UpCiB7CiAgICAgaWYgKGJ1ZnNpemUgPCAwKQogICAgIHsKQEAg
LTU4NTQsNyArNTAyMyw3IEBAIGJvb2wgVmFsaWRhdGVHZXRTaGFkZXJTb3VyY2UoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1M
b2NhdGlvbihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgY29uc3Qg
R0xjaGFyICpuYW1lKQorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1l
KQogewogICAgIGlmIChzdHJzdHIobmFtZSwgImdsXyIpID09IG5hbWUpCiAgICAgewpAQCAtNTg4
NSw3ICs1MDU0LDcgQEAgYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihDb250ZXh0ICpj
b250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUhpbnQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlSGludChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpCiAgICAgewpA
QCAtNTkzMiwzNyArNTEwMSwzNyBAQCBib29sIFZhbGlkYXRlSGludChDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUlzQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlcikKK2Jv
b2wgVmFsaWRhdGVJc0J1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZm
ZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc0ZyYW1lYnVmZmVy
KENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIpCitib29sIFZhbGlk
YXRlSXNGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZy
YW1lYnVmZmVyKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNQcm9n
cmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQorYm9vbCBWYWxp
ZGF0ZUlzUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVm
ZmVyKENvbnRleHQgKmNvbnRleHQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikKK2Jvb2wg
VmFsaWRhdGVJc1JlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBSZW5kZXJidWZm
ZXJJRCByZW5kZXJidWZmZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVJc1NoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyKQorYm9v
bCBWYWxpZGF0ZUlzU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1J
RCBzaGFkZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc1RleHR1
cmUoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmUpCitib29sIFZhbGlkYXRlSXNU
ZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWkoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVQaXhlbFN0b3Jl
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogewog
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAt
NjA0NCwyMiArNTIxMywyMiBAQCBib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWkoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXQoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBmYWN0
b3IsIEdMZmxvYXQgdW5pdHMpCitib29sIFZhbGlkYXRlUG9seWdvbk9mZnNldChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlbGVhc2VTaGFkZXJDb21waWxlcihDb250ZXh0
ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVJlbGVhc2VTaGFkZXJDb21waWxlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Ft
cGxlQ292ZXJhZ2UoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB2YWx1ZSwgR0xib29sZWFuIGlu
dmVydCkKK2Jvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlU2Npc3NvcihDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK2Jvb2wgVmFsaWRhdGVTY2lzc29y
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKICAg
ICB7CkBAIC02MDcwLDcgKzUyMzksNyBAQCBib29sIFZhbGlkYXRlU2Npc3NvcihDb250ZXh0ICpj
b250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTaGFkZXJCaW5hcnkoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVTaGFkZXJCaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBiaW5hcnlmb3JtYXQsCkBAIC02MDg4LDcgKzUyNTcsNyBAQCBib29sIFZh
bGlkYXRlU2hhZGVyQmluYXJ5KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVTaGFkZXJTb3VyY2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xj
aGFyICpjb25zdCAqc3RyaW5nLApAQCAtNjEyOCw3ICs1Mjk3LDcgQEAgYm9vbCBWYWxpZGF0ZVNo
YWRlclNvdXJjZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlU3RlbmNpbEZ1bmMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZ1bmMsIEdMaW50
IHJlZiwgR0x1aW50IG1hc2spCitib29sIFZhbGlkYXRlU3RlbmNpbEZ1bmMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCiB7CiAgICAg
aWYgKCFJc1ZhbGlkU3RlbmNpbEZ1bmMoZnVuYykpCiAgICAgewpAQCAtNjEzOSw3ICs1MzA4LDEx
IEBAIGJvb2wgVmFsaWRhdGVTdGVuY2lsRnVuYyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVu
YywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2Us
IEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQorYm9vbCBWYWxpZGF0ZVN0ZW5j
aWxGdW5jU2VwYXJhdGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCByZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaykKIHsK
ICAgICBpZiAoIUlzVmFsaWRTdGVuY2lsRmFjZShmYWNlKSkKICAgICB7CkBAIC02MTU2LDEyICs1
MzI5LDEyIEBAIGJvb2wgVmFsaWRhdGVTdGVuY2lsRnVuY1NlcGFyYXRlKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVTdGVuY2lsTWFzayhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFzaykK
K2Jvb2wgVmFsaWRhdGVTdGVuY2lsTWFzayhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
bWFzaykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxNYXNr
U2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQorYm9v
bCBWYWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJhdGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGZhY2UsIEdMdWludCBtYXNrKQogewogICAgIGlmICghSXNWYWxpZFN0ZW5jaWxGYWNlKGZh
Y2UpKQogICAgIHsKQEAgLTYxNzIsNyArNTM0NSw3IEBAIGJvb2wgVmFsaWRhdGVTdGVuY2lsTWFz
a1NlcGFyYXRlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzaykKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpCitib29sIFZhbGlk
YXRlU3RlbmNpbE9wKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWlsLCBHTGVudW0g
emZhaWwsIEdMZW51bSB6cGFzcykKIHsKICAgICBpZiAoIUlzVmFsaWRTdGVuY2lsT3AoZmFpbCkp
CiAgICAgewpAQCAtNjE5NSw3ICs1MzY4LDcgQEAgYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcChDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcFNlcGFyYXRlKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU3RlbmNpbE9wU2VwYXJhdGUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFpbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gemZhaWwsCkBAIC02MjEwLDc4ICs1MzgzLDExMyBA
QCBib29sIFZhbGlkYXRlU3RlbmNpbE9wU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gVmFsaWRhdGVTdGVuY2lsT3AoY29udGV4dCwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB4KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZmxvYXQgeCkKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FULCBsb2NhdGlvbiwgMSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtMWZ2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZnYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVy
biBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVQsIGxvY2F0aW9uLCBjb3VudCk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMWkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRp
b24sIEdMaW50IHgpCitib29sIFZhbGlkYXRlVW5pZm9ybTFpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xpbnQgeCkKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVVbmlmb3JtMWl2KGNvbnRleHQsIGxvY2F0aW9uLCAxLCAmeCk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtMmZ2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiBWYWxp
ZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDMiwgbG9jYXRpb24sIGNvdW50KTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xpbnQgeCwgR0xpbnQgeSkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KQog
ewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzIsIGxvY2F0
aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaXYoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBWYWxp
ZGF0ZVVuaWZvcm0yaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdikK
IHsKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0lOVF9WRUMyLCBsb2Nh
dGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTNmKENvbnRleHQgKmNvbnRl
eHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQorYm9v
bCBWYWxpZGF0ZVVuaWZvcm0zZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHopCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9y
bShjb250ZXh0LCBHTF9GTE9BVF9WRUMzLCBsb2NhdGlvbiwgMSk7CiB9CiAKLWJvb2wgVmFsaWRh
dGVVbmlmb3JtM2Z2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiBWYWxpZGF0
ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDMywgbG9jYXRpb24sIGNvdW50KTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0zaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2koY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCB4LCBHTGlu
dCB5LCBHTGludCB6KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xf
SU5UX1ZFQzMsIGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaXYoQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdM
X0lOVF9WRUMzLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTRm
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6LCBHTGZsb2F0IHcpCitib29sIFZhbGlkYXRlVW5pZm9ybTRmKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB3KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVu
aWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDNCwgbG9jYXRpb24sIDEpOwogfQogCi1ib29sIFZh
bGlkYXRlVW5pZm9ybTRmdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGZ2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzQsIGxvY2F0aW9uLCBjb3VudCk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRp
b24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCitib29sIFZhbGlkYXRlVW5p
Zm9ybTRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdykKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0lOVF9WRUM0LCBsb2NhdGlvbiwgMSk7CiB9CiAK
LWJvb2wgVmFsaWRhdGVVbmlmb3JtNGl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJu
IFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDNCwgbG9jYXRpb24sIGNvdW50KTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYoQ29udGV4dCAqY29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0
ZVVuaWZvcm1NYXRyaXgyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC02Mjg5LDggKzU0OTcsOCBAQCBib29sIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDJmdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgoY29udGV4dCwgR0xfRkxPQVRfTUFUMiwgbG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDNmdihDb250ZXh0ICpjb250
ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29s
IFZhbGlkYXRlVW5pZm9ybU1hdHJpeDNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTYyOTgsOCArNTUwNiw4IEBAIGJvb2wg
VmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeChjb250ZXh0LCBHTF9GTE9BVF9NQVQzLCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NGZ2KENvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNjMwNyw3ICs1NTE1LDcg
QEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gVmFsaWRhdGVVbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDQsIGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3Jh
bShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKK2Jvb2wgVmFsaWRh
dGVWYWxpZGF0ZVByb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0pCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtKTsKIApAQCAtNjMxOSwzNyArNTUyNywzNyBAQCBib29sIFZhbGlk
YXRlVmFsaWRhdGVQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWYo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCitib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliMWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwg
aW5kZXgpOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWZ2KENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQorYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYjFmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRl
eChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQorYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0
cmliSW5kZXgoY29udGV4dCwgaW5kZXgpOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
MmZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVz
KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWIzZihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliM2YoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6KQogewogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQs
IGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWIzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5k
ZXgoY29udGV4dCwgaW5kZXgpOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGYoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Zihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB5LApAQCAtNjM1OSwxMiArNTU2NywxMiBAQCBib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliNGYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWI0ZnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZXMpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGZ2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQogewogICAgIHJldHVybiBW
YWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQsIGluZGV4KTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVZpZXdwb3J0KENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorYm9vbCBWYWxpZGF0ZVZpZXdwb3J0KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KQogewogICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKICAgICB7CkBAIC02Mzc1
LDIyICs1NTgzLDI1IEBAIGJvb2wgVmFsaWRhdGVWaWV3cG9ydChDb250ZXh0ICpjb250ZXh0LCBH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2QmFzZShjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1l
bnQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdihD
b250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0
ZUdldFByb2dyYW1pdkJhc2UoY29udGV4dCwgcHJvZ3JhbSwgcG5hbWUsIG51bGxwdHIpOwogfQog
Ci1ib29sIFZhbGlkYXRlQ29weVRleEltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVDb3B5VGV4SW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTY0MTEsNyArNTYyMiw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5
VGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOwogfQog
Ci1ib29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC02NDMxLDcgKzU2NDIsNyBAQCBib29sIFZhbGlk
YXRlQ29weVRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgMCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgMCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRE9FUyhDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNET0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAg
LTY0NDYsMjcgKzU2NTcsMjkgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNET0VTKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVp
Z2h0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZUJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbiwgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnMpCitib29sIFZhbGlkYXRlRGVsZXRlQnVm
ZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBCdWZmZXJJRCAqYnVm
ZmVycykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZURlbGV0ZUZyYW1lYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCBuLCBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnMpCitib29sIFZhbGlkYXRlRGVs
ZXRlRnJhbWVidWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEZy
YW1lYnVmZmVySUQgKmZyYW1lYnVmZmVycykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRl
bGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnMo
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1
ZmZlcnMpCitib29sIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVycyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJi
dWZmZXJzKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwog
fQogCi1ib29sIFZhbGlkYXRlRGVsZXRlVGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQg
biwgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlcykKK2Jvb2wgVmFsaWRhdGVEZWxldGVUZXh0dXJl
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBUZXh0dXJlSUQgKnRleHR1
cmVzKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQog
Ci1ib29sIFZhbGlkYXRlRGlzYWJsZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY2FwKQorYm9v
bCBWYWxpZGF0ZURpc2FibGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKIHsK
ICAgICBpZiAoIVZhbGlkQ2FwKGNvbnRleHQsIGNhcCwgZmFsc2UpKQogICAgIHsKQEAgLTY0Nzcs
NyArNTY5MCw3IEBAIGJvb2wgVmFsaWRhdGVEaXNhYmxlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBjYXApCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmFibGUoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKK2Jvb2wgVmFsaWRhdGVFbmFibGUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKIHsKICAgICBpZiAoIVZhbGlkQ2FwKGNvbnRleHQsIGNh
cCwgZmFsc2UpKQogICAgIHsKQEAgLTY0OTksNyArNTcxMiw3IEBAIGJvb2wgVmFsaWRhdGVFbmFi
bGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQsCkBAIC02NTIxLDcgKzU3MzQsNyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5kZXJidWZmZXIp
OwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXQsCkBA
IC02NTQ0LDE2ICs1NzU3LDE2IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChD
b250ZXh0ICpjb250ZXh0LAogCiAgICAgaWYgKHRleHR1cmUudmFsdWUgIT0gMCkKICAgICB7Ci0g
ICAgICAgIGdsOjpUZXh0dXJlICp0ZXggPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1cmUpOwor
ICAgICAgICBUZXh0dXJlICp0ZXggPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1cmUpOwogICAg
ICAgICBBU1NFUlQodGV4KTsKIAotICAgICAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9IGNvbnRl
eHQtPmdldENhcHMoKTsKKyAgICAgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENh
cHMoKTsKIAogICAgICAgICBzd2l0Y2ggKHRleHRhcmdldCkKICAgICAgICAgewogICAgICAgICAg
ICAgY2FzZSBUZXh0dXJlVGFyZ2V0OjpfMkQ6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKKyAgICAgICAg
ICAgICAgICBpZiAobGV2ZWwgPiBsb2cyKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkpCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRNaXBMZXZlbCk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTY1ODgsNyArNTgwMSw3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1
ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY2FzZSBUZXh0dXJl
VGFyZ2V0OjpDdWJlTWFwUG9zaXRpdmVZOgogICAgICAgICAgICAgY2FzZSBUZXh0dXJlVGFyZ2V0
OjpDdWJlTWFwUG9zaXRpdmVaOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChs
ZXZlbCA+IGdsOjpsb2cyKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplKSkKKyAgICAgICAgICAg
ICAgICBpZiAobGV2ZWwgPiBsb2cyKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplKSkKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZE1pcExldmVsKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNjYzMyw3ICs1ODQ2LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyhDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTNET0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRh
cmdldFBhY2tlZCwKQEAgLTY2NjYsMTYgKzU4NzksMTYgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVm
ZmVyVGV4dHVyZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAodGV4dHVyZS52YWx1
ZSAhPSAwKQogICAgIHsKLSAgICAgICAgZ2w6OlRleHR1cmUgKnRleCA9IGNvbnRleHQtPmdldFRl
eHR1cmUodGV4dHVyZSk7CisgICAgICAgIFRleHR1cmUgKnRleCA9IGNvbnRleHQtPmdldFRleHR1
cmUodGV4dHVyZSk7CiAgICAgICAgIEFTU0VSVCh0ZXgpOwogCi0gICAgICAgIGNvbnN0IGdsOjpD
YXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgICAgICBjb25zdCBDYXBzICZjYXBz
ID0gY29udGV4dC0+Z2V0Q2FwcygpOwogCiAgICAgICAgIHN3aXRjaCAodGV4dGFyZ2V0UGFja2Vk
KQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIFRleHR1cmVUYXJnZXQ6Ol8zRDoKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6bG9nMihjYXBzLm1heDNE
VGV4dHVyZVNpemUpKQorICAgICAgICAgICAgICAgIGlmIChsZXZlbCA+IGxvZzIoY2Fwcy5tYXgz
RFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZE1pcExldmVs
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjcwMiwyNyArNTkxNSwy
NyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbkJ1ZmZlcnMoQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgbiwgQnVmZmVySUQgKmJ1ZmZlcnMpCitib29sIFZhbGlkYXRlR2Vu
QnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBCdWZmZXJJRCAq
YnVmZmVycykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdlbkZyYW1lYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCBuLCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnMpCitib29sIFZhbGlkYXRlR2VuRnJhbWVi
dWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEZyYW1lYnVmZmVy
SUQgKmZyYW1lYnVmZmVycykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250
ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblJlbmRlcmJ1ZmZlcnMoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbiwgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnMpCitib29sIFZhbGlk
YXRlR2VuUmVuZGVyYnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25z
dCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVycykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVH
ZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblRleHR1cmVzKENv
bnRleHQgKmNvbnRleHQsIEdMaW50IG4sIFRleHR1cmVJRCAqdGV4dHVyZXMpCitib29sIFZhbGlk
YXRlR2VuVGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgVGV4
dHVyZUlEICp0ZXh0dXJlcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250
ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwKENvbnRleHQgKmNvbnRl
eHQsIFRleHR1cmVUeXBlIHRhcmdldCkKK2Jvb2wgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpCiB7CiAgICAgaWYgKCFWYWxp
ZFRleHR1cmVUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7CkBAIC02NzQyLDcgKzU5NTUs
NyBAQCBib29sIFZhbGlkYXRlR2VuZXJhdGVNaXBtYXAoQ29udGV4dCAqY29udGV4dCwgVGV4dHVy
ZVR5cGUgdGFyZ2V0KQogCiAgICAgLy8gVGhpcyBlcnJvciBpc24ndCBzcGVsbGVkIG91dCBpbiB0
aGUgc3BlYyBpbiBhIHZlcnkgZXhwbGljaXQgd2F5LCBidXQgd2UgaW50ZXJwcmV0IHRoZSBzcGVj
IHNvCiAgICAgLy8gdGhhdCBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbCBoYXMgYSBub24tY29sb3It
cmVuZGVyYWJsZSAvIG5vbi10ZXh0dXJlLWZpbHRlcmFibGUgZm9ybWF0LgotICAgIGlmIChlZmZl
Y3RpdmVCYXNlTGV2ZWwgPj0gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykK
KyAgICBpZiAoZWZmZWN0aXZlQmFzZUxldmVsID49IElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJF
X0xFVkVMUykKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwga0Jhc2VMZXZlbE91dE9mUmFuZ2UpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02ODE1LDQxICs2MDI4LDUwIEBAIGJvb2wgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChD
b250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGZh
bHNlLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxw
dHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U2hhZGVyaXYoQ29udGV4dCAqY29udGV4dCwgU2hh
ZGVyUHJvZ3JhbUlEIHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorYm9vbCBW
YWxpZGF0ZUdldFNoYWRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRTaGFkZXJpdkJhc2UoY29udGV4dCwg
c2hhZGVyLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0
ZXJmdihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQs
IHBuYW1lLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2KENv
bnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVy
biBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVs
bHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZPRVMoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7
CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBA
IC02ODU5LDEwICs2MDgxLDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZPRVMo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNl
KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
VGV4UGFyYW1ldGVySXVpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRl
eFBhcmFtZXRlckl1aXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC02ODcyLDM1ICs2MDk0LDQ3IEBA
IGJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBu
YW1lLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1mdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1mdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoY29u
dGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24pOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2
KENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtaXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVHZXRVbmlmb3JtQmFzZShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlv
bik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdihDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxp
ZGF0ZUdldFZlcnRleEF0dHJpYmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VmVydGV4QXR0
cmliQmFzZShjb250ZXh0LCBpbmRleCwgcG5hbWUsIG51bGxwdHIsIGZhbHNlLCBmYWxzZSk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRW
ZXJ0ZXhBdHRyaWJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNv
bnRleHQsIGluZGV4LCBwbmFtZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbnRlcikKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0
ZXhBdHRyaWJQb2ludGVydihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqY29uc3QgKnBvaW50ZXIpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRl
R2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRleCwgcG5hbWUsIG51bGxwdHIsIHRydWUs
IGZhbHNlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZChDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gY2FwKQorYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZChjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gY2FwKQogewogICAgIGlmICghVmFsaWRDYXAoY29udGV4dCwgY2FwLCB0cnVlKSkK
ICAgICB7CkBAIC02OTExLDcgKzYxNDUsNyBAQCBib29sIFZhbGlkYXRlSXNFbmFibGVkKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBjYXApCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVMaW5rUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSkKK2Jvb2wgVmFsaWRhdGVMaW5rUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSkKIHsKICAgICBpZiAoY29udGV4dC0+aGFzQWN0aXZlVHJhbnNm
b3JtRmVlZGJhY2socHJvZ3JhbSkpCiAgICAgewpAQCAtNjkyOSwyNSArNjE2MywyNSBAQCBib29s
IFZhbGlkYXRlTGlua1Byb2dyYW0oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUmVhZFBpeGVscyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRl
UmVhZFBpeGVsc0Jhc2UoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBl
LCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLCBwaXhlbHMpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyZihDb250
ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFRleHR1cmVUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAg
IHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwg
LTEsIGZhbHNlLCAmcGFyYW0pOwogfQogCi1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyZnYoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQpAQCAtNjk1NSwxNyArNjE4
OSwyMCBAQCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUs
IC0xLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaShDb250
ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBU
ZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgcmV0
dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAtMSwg
ZmFsc2UsICZwYXJhbSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdihDb250ZXh0
ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQg
KnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIC0xLCB0cnVlLCBwYXJhbXMp
OwogfQogCi1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySWl2T0VTKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySWl2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQpAQCAtNjk3OCw3ICs2MjE1
LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdk9FUyhDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFt
ZSwgLTEsIHRydWUsIHBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2
T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdk9FUyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICpwYXJhbXMpCkBAIC02OTkxLDcgKzYyMjgsNyBAQCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVy
SXVpdk9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRl
ckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgLTEsIHRydWUsIHBhcmFtcyk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVVc2VQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtKQorYm9vbCBWYWxpZGF0ZVVzZVByb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCiB7CiAgICAgaWYgKHByb2dyYW0udmFsdWUgIT0gMCkK
ICAgICB7CkBAIC03MDI2LDcgKzYyNjMsNyBAQCBib29sIFZhbGlkYXRlVXNlUHJvZ3JhbShDb250
ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZUZlbmNlc05WKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbiwgY29uc3QgRmVuY2VOVklEICpmZW5jZXMpCitib29sIFZhbGlkYXRlRGVsZXRlRmVuY2Vz
TlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBGZW5jZU5WSUQgKmZl
bmNlcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mZW5jZU5WKQogICAg
IHsKQEAgLTcwNDMsNyArNjI4MCw3IEBAIGJvb2wgVmFsaWRhdGVEZWxldGVGZW5jZXNOVihDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEZlbmNlTlZJRCAqZmVuY2VzCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGaW5pc2hGZW5jZU5WKENvbnRleHQgKmNvbnRl
eHQsIEZlbmNlTlZJRCBmZW5jZSkKK2Jvb2wgVmFsaWRhdGVGaW5pc2hGZW5jZU5WKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5mZW5jZU5WKQogICAgIHsKQEAgLTcwNjgsNyArNjMwNSw3IEBAIGJvb2wg
VmFsaWRhdGVGaW5pc2hGZW5jZU5WKENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbkZlbmNlc05WKENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbiwgRmVuY2VOVklEICpmZW5jZXMpCitib29sIFZhbGlkYXRlR2Vu
RmVuY2VzTlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBGZW5jZU5W
SUQgKmZlbmNlcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mZW5jZU5W
KQogICAgIHsKQEAgLTcwODUsNyArNjMyMiwxMCBAQCBib29sIFZhbGlkYXRlR2VuRmVuY2VzTlYo
Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBGZW5jZU5WSUQgKmZlbmNlcykKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEZlbmNlaXZOVihDb250ZXh0ICpjb250ZXh0
LCBGZW5jZU5WSUQgZmVuY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFs
aWRhdGVHZXRGZW5jZWl2TlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgRmVuY2VOVklEIGZlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZmVuY2VOVikKICAgICB7
CkBAIC03MTIxLDcgKzYzNjEsNyBAQCBib29sIFZhbGlkYXRlR2V0RmVuY2Vpdk5WKENvbnRleHQg
KmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBHTGludAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVChDb250
ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5yb2J1c3RuZXNzKQogICAgIHsKQEAgLTcxMzIsMTEgKzYzNzIsMTEgQEAgYm9vbCBWYWxpZGF0
ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoQ29udGV4dCAqY29udGV4dCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpzb3VyY2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xjaGFyICpzb3VyY2UpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dHJhbnNsYXRlZFNoYWRlclNvdXJjZSkKICAgICB7CkBAIC03MTYxLDcgKzY0MDEsNyBAQCBib29s
IFZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc0ZlbmNlTlYoQ29udGV4dCAq
Y29udGV4dCwgRmVuY2VOVklEIGZlbmNlKQorYm9vbCBWYWxpZGF0ZUlzRmVuY2VOVihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2UpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZmVuY2VOVikKICAgICB7CkBAIC03MTcyLDcgKzY0MTIsNyBAQCBib29s
IFZhbGlkYXRlSXNGZW5jZU5WKENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNldEZlbmNlTlYoQ29udGV4dCAqY29u
dGV4dCwgRmVuY2VOVklEIGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQorYm9vbCBWYWxpZGF0ZVNl
dEZlbmNlTlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlLCBHTGVudW0g
Y29uZGl0aW9uKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZlbmNlTlYp
CiAgICAgewpAQCAtNzE5Nyw3ICs2NDM3LDcgQEAgYm9vbCBWYWxpZGF0ZVNldEZlbmNlTlYoQ29u
dGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGVzdEZlbmNlTlYoQ29udGV4dCAqY29udGV4
dCwgRmVuY2VOVklEIGZlbmNlKQorYm9vbCBWYWxpZGF0ZVRlc3RGZW5jZU5WKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5mZW5jZU5WKQogICAgIHsKQEAgLTcyMjIsNyArNjQ2Miw3IEBAIGJvb2wgVmFs
aWRhdGVUZXN0RmVuY2VOVihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2UpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRFWFQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRFWFQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTcyNDYsNyArNjQ4Niw3
IEBAIGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogfQogCi1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgR0x1aW50IGRpdmlzb3IpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3Ip
CiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaW5zdGFuY2VkQXJyYXlzQU5H
TEUpCiAgICAgewpAQCAtNzI3Niw3ICs2NTE2LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBkaXYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3JF
WFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuaW5zdGFuY2VkQXJyYXlzRVhUKQogICAgIHsKQEAgLTcyOTMsNyArNjUzMyw3IEBA
IGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0x1aW50IGRpdmlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVUZXhJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1h
Z2UzRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKQEAgLTczMDksNyArNjU0OSw3IEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFnZTNET0VTKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb3BHcm91cE1hcmtlckVYVChDb250ZXh0ICpj
b250ZXh0KQorYm9vbCBWYWxpZGF0ZVBvcEdyb3VwTWFya2VyRVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWdNYXJrZXIp
CiAgICAgewpAQCAtNzMyMiw3ICs2NTYyLDcgQEAgYm9vbCBWYWxpZGF0ZVBvcEdyb3VwTWFya2Vy
RVhUKENvbnRleHQgKmNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVUZXhTdG9yYWdlMURFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9y
YWdlMURFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKQEAgLTczMzMsNyArNjU3Myw3IEBAIGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMURFWFQo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVU
ZXhTdG9yYWdlM0RFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdl
M0RFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LApAQCAtNzM1Nyw3ICs2NTk3LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzREVY
VChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVwdGgpOwogfQogCi1ib29sIFZhbGlkYXRlTWF4U2hhZGVyQ29tcGlsZXJUaHJl
YWRzS0hSKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBjb3VudCkKK2Jvb2wgVmFsaWRhdGVNYXhT
aGFkZXJDb21waWxlclRocmVhZHNLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGNv
dW50KQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhcmFsbGVsU2hhZGVy
Q29tcGlsZSkKICAgICB7CkBAIC03MzY3LDcgKzY2MDcsNyBAQCBib29sIFZhbGlkYXRlTWF4U2hh
ZGVyQ29tcGlsZXJUaHJlYWRzS0hSKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBjb3VudCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0FOR0xFKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzQU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlt
aXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKmZpcnN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpjb3VudHMsCkBAIC03Mzg4LDcgKzY2MjgsNyBAQCBib29sIFZhbGlkYXRlTXVsdGlE
cmF3QXJyYXlzQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0FOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3Vu
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBl
IHR5cGUsCkBAIC03NDEwLDcgKzY2NTAsNyBAQCBib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVu
dHNBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvdm9raW5nVmVydGV4QU5HTEUoQ29udGV4dCAqY29udGV4dCwgUHJvdm9raW5nVmVy
dGV4Q29udmVudGlvbiBtb2RlUGFja2VkKQorYm9vbCBWYWxpZGF0ZVByb3Zva2luZ1ZlcnRleEFO
R0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9k
ZVBhY2tlZCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wcm92b2tpbmdW
ZXJ0ZXgpCiAgICAgewpAQCAtNzQzMSw3ICs2NjcxLDcgQEAgYm9vbCBWYWxpZGF0ZVByb3Zva2lu
Z1ZlcnRleEFOR0xFKENvbnRleHQgKmNvbnRleHQsIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24g
bW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVy
ZTJETXVsdGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1
ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGV4dGFyZ2V0LApAQCAtNzUxNCw3ICs2NzU0LDcgQEAgYm9vbCBWYWxpZGF0
ZUZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKQEAgLTc1NTgsNyArNjc5OCw3IEBAIGJvb2wgVmFsaWRhdGVSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBSZWNvcmRCaW5kVGV4dHVyZVR5cGVFcnJvcihDb250ZXh0ICpjb250
ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpCit2b2lkIFJlY29yZEJpbmRUZXh0dXJlVHlwZUVycm9y
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCkKIHsKICAgICBBU1NF
UlQoIWNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5pc1ZhbGlkQmluZFRleHR1cmVUeXBlKHRhcmdl
dCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkVTMi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FUzIuaAppbmRleCBjYmEzNGEzNjQ2YjJjNmM5NTFiNjYwNTk0YmRmMDZlZjQ1YmEw
NWFlLi4yMjlkNzA0OWE0OWVlODYxYWJlYWY0ODg2NzUxZDhjOTQzMWFkYTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgK
QEAgLTE1LDcgKzE1LDcgQEAKIAogbmFtZXNwYWNlIGdsCiB7Ci1BTkdMRV9JTkxJTkUgYm9vbCBW
YWxpZGF0ZURyYXdBcnJheXMoQ29udGV4dCAqY29udGV4dCwKK0FOR0xFX0lOTElORSBib29sIFZh
bGlkYXRlRHJhd0FycmF5cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50KQpAQCAtMjMsMTIgKzIzLDE1IEBAIEFOR0xF
X0lOTElORSBib29sIFZhbGlkYXRlRHJhd0FycmF5cyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiBWYWxpZGF0ZURyYXdBcnJheXNDb21tb24oY29udGV4dCwgbW9kZSwgZmlyc3QsIGNvdW50
LCAxKTsKIH0KIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVVbmlmb3JtMmYoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQorQU5HTEVfSU5M
SU5FIGJvb2wgVmFsaWRhdGVVbmlmb3JtMmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSkKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzIsIGxvY2F0aW9uLCAxKTsKIH0KIAot
QU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVCaW5kQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0LCBCdWZmZXJJRCBidWZmZXIpCitBTkdMRV9JTkxJTkUgYm9vbCBW
YWxpZGF0ZUJpbmRCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0
YXJnZXQsIEJ1ZmZlcklEIGJ1ZmZlcikKIHsKICAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWRCdWZm
ZXJCaW5kaW5nKHRhcmdldCkpCiAgICAgewpAQCAtNDYsNyArNDksNyBAQCBBTkdMRV9JTkxJTkUg
Ym9vbCBWYWxpZGF0ZUJpbmRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0
YXJnZXQsIEJ1ZgogICAgIHJldHVybiB0cnVlOwogfQogCi1BTkdMRV9JTkxJTkUgYm9vbCBWYWxp
ZGF0ZURyYXdFbGVtZW50cyhDb250ZXh0ICpjb250ZXh0LAorQU5HTEVfSU5MSU5FIGJvb2wgVmFs
aWRhdGVEcmF3RWxlbWVudHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCkBAIC01NSw3
ICs1OCw3IEBAIEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0VsZW1lbnRzQ29tbW9uKGNvbnRleHQs
IG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAxKTsKIH0KIAotQU5HTEVfSU5MSU5FIGJvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitBTkdMRV9JTkxJ
TkUgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhBdHRyaWJUeXBlIHR5cGUsCkBAIC0xMjIsOSArMTI1LDkgQEAgQU5HTEVfSU5MSU5FIGJv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkQmluZFRleHR1cmVUeXBlRXJyb3IoQ29udGV4dCAq
Y29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0KTsKK3ZvaWQgUmVjb3JkQmluZFRleHR1cmVUeXBl
RXJyb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0KTsKIAotQU5H
TEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVCaW5kVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LCBUZXh0
dXJlVHlwZSB0YXJnZXQsIFRleHR1cmVJRCB0ZXh0dXJlKQorQU5HTEVfSU5MSU5FIGJvb2wgVmFs
aWRhdGVCaW5kVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJn
ZXQsIFRleHR1cmVJRCB0ZXh0dXJlKQogewogICAgIGlmICghY29udGV4dC0+Z2V0U3RhdGVDYWNo
ZSgpLmlzVmFsaWRCaW5kVGV4dHVyZVR5cGUodGFyZ2V0KSkKICAgICB7CkBAIC0xNTUsNyArMTU4
LDcgQEAgQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVCaW5kVGV4dHVyZShDb250ZXh0ICpjb250
ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQsIFRleHQKIH0KIAogLy8gVmFsaWRhdGlvbiBvZiBhbGwg
VGV4W1N1Yl1JbWFnZTJEIHBhcmFtZXRlcnMgZXhjZXB0IFRleHR1cmVUYXJnZXQuCi1ib29sIFZh
bGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVyc0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkVTMl9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTMl9hdXRvZ2VuLmgKaW5kZXggZjE4NWUwYWE2MmE1YWU4N2I0ZDY3
N2Y5MGQ5ZjI1YjNlMDFkMTI5NC4uOGNmYzRjMWE4NzVhYTVjZjhkY2NmZjYzZGFiZTEwY2Q5MGVl
YjgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FUzJfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRVMyX2F1dG9nZW4uaApAQCAtMTcsNDkgKzE3LDYxIEBAIG5hbWVz
cGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpOwotYm9vbCBWYWxpZGF0ZUF0dGFjaFNo
YWRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpOworYm9vbCBWYWxpZGF0ZUF0dGFjaFNo
YWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmluZEF0dHJpYkxv
Y2F0aW9uKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZEF0dHJpYkxvY2F0aW9u
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlQmluZEJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwgQnVmZmVySUQgYnVmZmVyUGFja2VkKTsK
LWJvb2wgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmlu
ZFJlbmRlcmJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBSZW5kZXJidWZm
ZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlKENvbnRl
eHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwgVGV4dHVyZUlEIHRleHR1cmVQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJsZW5kQ29sb3IoQ29udGV4dCAqY29udGV4dCwgR0xmbG9h
dCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Ci1ib29s
IFZhbGlkYXRlQmxlbmRFcXVhdGlvbihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Ci1i
b29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKLWJvb2wgVmFsaWRhdGVCbGVuZEZ1bmMoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKTsKLWJvb2wgVmFs
aWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJp
bmRCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNr
ZWQsIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCk7Citib29sIFZhbGlkYXRlQmluZEZyYW1lYnVmZmVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQg
ZnJhbWVidWZmZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUJpbmRSZW5kZXJidWZmZXIoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5k
ZXJidWZmZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQpOworYm9vbCBWYWxpZGF0ZUJsZW5kQ29sb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcmVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUJs
ZW5kRXF1YXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpOworYm9vbCBW
YWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7Citib29sIFZhbGlkYXRlQmxlbmRGdW5jKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7Citi
b29sIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2ZhY3RvclJHQiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGZhY3RvclJHQiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc2ZhY3RvckFscGhhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkZmFjdG9yQWxwaGEpOwotYm9vbCBWYWxpZGF0ZUJ1ZmZlckRh
dGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCdWZmZXJEYXRhKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJVc2FnZSB1c2FnZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQnVmZmVyU3ViRGF0
YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcg
dGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKLWJvb2wg
VmFsaWRhdGVDbGVhcihDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spOwotYm9vbCBW
YWxpZGF0ZUNsZWFyQ29sb3IoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQsIEdMZmxvYXQg
Z3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJE
ZXB0aGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBkKTsKLWJvb2wgVmFsaWRhdGVDbGVhclN0
ZW5jaWwoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcyk7Ci1ib29sIFZhbGlkYXRlQ29sb3JNYXNr
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgVmFsaWRhdGVDbGVh
cihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spOworYm9vbCBWYWxpZGF0
ZUNsZWFyQ29sb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBncmVlbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUNsZWFyRGVwdGhmKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZmxvYXQgZCk7Citib29sIFZhbGlkYXRlQ2xlYXJTdGVuY2lsKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHMpOworYm9vbCBWYWxpZGF0ZUNvbG9yTWFzayhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
cmVkLAogICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZ3JlZW4sCiAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBibHVlLAogICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gYWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoQ29udGV4dCAqY29udGV4
dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQ29tcHJlc3Nl
ZFRleEltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21waWxlU2hhZGVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQpOwor
Ym9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApA
QCAtNjgsNyArODAsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3Jk
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1i
b29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs
CkBAIC03OCw3ICs5MCw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ29weVRleEltYWdlMkQoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTg3LDcgKzk5LDcgQEAgYm9v
bCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3Jk
ZXIpOwotYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtOTYsMTk4ICsxMDgsMjE2IEBA
IGJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlQ3JlYXRlUHJvZ3JhbShDb250ZXh0ICpjb250
ZXh0KTsKLWJvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVy
VHlwZSB0eXBlUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVDdWxsRmFjZShDb250ZXh0ICpjb250ZXh0
LCBDdWxsRmFjZU1vZGUgbW9kZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlQnVmZmVycyhD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2Vk
KTsKLWJvb2wgVmFsaWRhdGVEZWxldGVGcmFtZWJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBW
YWxpZGF0ZUNyZWF0ZVNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJUeXBlIHR5
cGVQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUN1bGxGYWNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEN1bGxGYWNlTW9kZSBtb2RlUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVEZWxldGVCdWZmZXJzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0ZUZyYW1lYnVmZmVycyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVm
ZmVyc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0
LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlUmVu
ZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlbGV0ZVByb2dyYW0o
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOwor
Ym9vbCBWYWxpZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJz
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hh
ZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlVGV4dHVyZXMo
Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBUZXh0dXJlSUQgKnRleHR1cmVzUGFj
a2VkKTsKLWJvb2wgVmFsaWRhdGVEZXB0aEZ1bmMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZ1
bmMpOwotYm9vbCBWYWxpZGF0ZURlcHRoTWFzayhDb250ZXh0ICpjb250ZXh0LCBHTGJvb2xlYW4g
ZmxhZyk7Ci1ib29sIFZhbGlkYXRlRGVwdGhSYW5nZWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9h
dCBuLCBHTGZsb2F0IGYpOwotYm9vbCBWYWxpZGF0ZURldGFjaFNoYWRlcihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZURlbGV0ZVNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBT
aGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVEZWxldGVUZXh0dXJl
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFRleHR1cmVJRCAqdGV4
dHVyZXNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURlcHRoRnVuYyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gZnVuYyk7Citib29sIFZhbGlkYXRlRGVwdGhNYXNrKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKTsKK2Jvb2wgVmFsaWRhdGVEZXB0aFJhbmdlZihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IG4sIEdMZmxvYXQgZik7Citib29sIFZhbGlkYXRl
RGV0YWNoU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEaXNh
YmxlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApOwotYm9vbCBWYWxpZGF0ZURpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpOwotYm9vbCBW
YWxpZGF0ZURyYXdBcnJheXMoQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlUGFj
a2VkLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCk7Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1l
bnRzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGlzYWJsZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gY2FwKTsKK2Jvb2wgVmFsaWRhdGVEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQpOworYm9v
bCBWYWxpZGF0ZURyYXdFbGVtZW50cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqaW5kaWNlcyk7Ci1ib29sIFZhbGlkYXRlRW5hYmxlKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBjYXApOwotYm9vbCBWYWxpZGF0ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5KENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCk7Ci1ib29sIFZhbGlkYXRlRmluaXNoKENvbnRleHQg
KmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZUZsdXNoKENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRW5hYmxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApOworYm9vbCBW
YWxpZGF0ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCk7Citib29sIFZhbGlkYXRlRmluaXNoKGNvbnN0IENvbnRleHQgKmNvbnRleHQp
OworYm9vbCBWYWxpZGF0ZUZsdXNoKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxp
ZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRl
cmJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0
YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwpOwotYm9vbCBWYWxpZGF0ZUZyb250RmFjZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
bW9kZSk7Ci1ib29sIFZhbGlkYXRlR2VuQnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4sIEJ1ZmZlcklEICpidWZmZXJzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZl
cnMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZl
cnNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlblJlbmRlcmJ1ZmZlcnMoQ29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuLCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCk7Ci1ib29s
IFZhbGlkYXRlR2VuVGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBUZXh0dXJl
SUQgKnRleHR1cmVzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChDb250ZXh0
ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdldEFj
dGl2ZUF0dHJpYihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyb250RmFjZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlR2VuQnVmZmVy
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEJ1ZmZlcklEICpidWZm
ZXJzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZUdlblJlbmRlcmJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJz
UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVHZW5UZXh0dXJlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQpOworYm9vbCBWYWxp
ZGF0ZUdlbmVyYXRlTWlwbWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCk7Citib29sIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpOwot
Ym9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0oY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxp
ZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBtYXhDb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCk7Ci1ib29sIFZh
bGlkYXRlR2V0QXR0cmliTG9jYXRpb24oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0Qm9v
bGVhbnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKmRhdGEpOwot
Ym9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldEF0dHJpYkxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpuYW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFudihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMYm9vbGVhbiAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0
QnVmZmVyUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0RXJyb3Io
Q29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlR2V0RmxvYXR2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRFcnJvcihjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVHZXRGbG9h
dHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpk
YXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZUdldEludGVnZXJ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1JbmZvTG9nKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0SW50ZWdlcnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqZGF0YSk7Citib29s
IFZhbGlkYXRlR2V0UHJvZ3JhbUluZm9Mb2coY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMY2hhciAqaW5mb0xvZyk7Ci1ib29sIFZhbGlkYXRlR2V0UHJvZ3Jh
bWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqaW5mb0xvZyk7Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0
U2hhZGVySW5mb0xvZyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFNo
YWRlckluZm9Mb2coY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNo
YXIgKmluZm9Mb2cpOwotYm9vbCBWYWxpZGF0ZUdldFNoYWRlclByZWNpc2lvbkZvcm1hdChDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpp
bmZvTG9nKTsKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHNoYWRlcnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwcmVjaXNpb250eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwcmVjaXNpb24pOwotYm9vbCBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwcmVjaXNpb24pOworYm9vbCBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgc2hhZGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpzb3VyY2UpOwotYm9vbCBWYWxpZGF0
ZUdldFNoYWRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpzb3VyY2UpOworYm9vbCBWYWxpZGF0ZUdldFNoYWRlcml2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHNoYWRlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0
U3RyaW5nKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRU
ZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFN0cmluZyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbmFtZSk7Citib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVy
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRV
bmlmb3JtTG9jYXRpb24oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtTG9j
YXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9y
bWZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRVbmlmb3JtaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1p
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbnRlcik7Ci1ib29sIFZhbGlkYXRl
R2V0VmVydGV4QXR0cmliZnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXYo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZUhpbnQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xlbnVtIG1vZGUpOwotYm9vbCBWYWxpZGF0ZUlzQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1
ZmZlcklEIGJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlSXNFbmFibGVkKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBjYXApOwotYm9vbCBWYWxpZGF0ZUlzRnJhbWVidWZmZXIoQ29udGV4dCAq
Y29udGV4dCwgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRl
SXNQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
KTsKLWJvb2wgVmFsaWRhdGVJc1JlbmRlcmJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBSZW5kZXJi
dWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUlzU2hhZGVyKENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0
ZUlzVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCk7Ci1i
b29sIFZhbGlkYXRlTGluZVdpZHRoKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgd2lkdGgpOwot
Ym9vbCBWYWxpZGF0ZUxpbmtQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVQaXhlbFN0b3JlaShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVQb2x5Z29uT2Zm
c2V0KENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKLWJv
b2wgVmFsaWRhdGVSZWFkUGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4
QXR0cmliUG9pbnRlcnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmNvbnN0ICpwb2ludGVyKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlSGlu
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7Citi
b29sIFZhbGlkYXRlSXNCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVm
ZmVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVJc0VuYWJsZWQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGNhcCk7Citib29sIFZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkKTsKK2Jvb2wgVmFsaWRh
dGVJc1Byb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQpOworYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCk7Citib29sIFZhbGlkYXRl
SXNTaGFkZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBh
Y2tlZCk7Citib29sIFZhbGlkYXRlSXNUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVMaW5lV2lkdGgoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCB3aWR0aCk7Citib29sIFZhbGlkYXRlTGlua1Byb2dyYW0o
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOwor
Ym9vbCBWYWxpZGF0ZVBpeGVsU3RvcmVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOworYm9vbCBWYWxp
ZGF0ZVJlYWRQaXhlbHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVSZWxlYXNlU2hhZGVyQ29tcGlsZXIo
Q29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxz
KTsKK2Jvb2wgVmFsaWRhdGVSZWxlYXNlU2hhZGVyQ29tcGlsZXIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCk7Citib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRl
U2FtcGxlQ292ZXJhZ2UoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB2YWx1ZSwgR0xib29sZWFu
IGludmVydCk7Ci1ib29sIFZhbGlkYXRlU2Npc3NvcihDb250ZXh0ICpjb250ZXh0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRl
U2hhZGVyQmluYXJ5KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlQ292ZXJh
Z2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB2YWx1ZSwgR0xib29sZWFuIGludmVy
dCk7Citib29sIFZhbGlkYXRlU2Npc3Nvcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Citib29sIFZhbGlkYXRl
U2hhZGVyQmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNo
YWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJpbmFyeWZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCk7Ci1i
b29sIFZhbGlkYXRlU2hhZGVyU291cmNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
U2hhZGVyU291cmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Y2hhciAqY29uc3QgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKmxlbmd0aCk7Ci1ib29sIFZhbGlkYXRlU3RlbmNpbEZ1bmMoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotYm9vbCBWYWxpZGF0ZVN0ZW5j
aWxGdW5jU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsRnVu
Yyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQg
bWFzayk7Citib29sIFZhbGlkYXRlU3RlbmNpbEZ1bmNTZXBhcmF0ZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZnVuYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrKTsKLWJvb2wgVmFsaWRhdGVTdGVuY2lsTWFzayhDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgbWFzayk7Ci1ib29sIFZhbGlkYXRlU3RlbmNpbE1hc2tTZXBhcmF0
ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spOwotYm9vbCBWYWxp
ZGF0ZVN0ZW5jaWxPcChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWls
LCBHTGVudW0genBhc3MpOwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcFNlcGFyYXRlKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlU3RlbmNpbE1hc2soY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IG1hc2spOworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJhdGUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKTsKK2Jvb2wgVmFsaWRh
dGVTdGVuY2lsT3AoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhaWwsIEdMZW51bSB6
ZmFpbCwgR0xlbnVtIHpwYXNzKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsT3BTZXBhcmF0ZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZmFpbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHBmYWlsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcHBhc3MpOwotYm9vbCBWYWxpZGF0ZVRleEltYWdl
MkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTJEKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCkBAIC0yOTcsMTcgKzMyNywyMyBA
QCBib29sIFZhbGlkYXRlVGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJv
b2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRl
cmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0pOworYm9v
bCBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmko
Q29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVRleFN1YkltYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LApAQCAtMzE3LDY1ICszNTMsMTA1IEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJE
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZVVuaWZv
cm0xZihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCk7Ci1ib29s
IFZhbGlkYXRlVW5pZm9ybTFmdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0x
aShDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApOwotYm9vbCBWYWxp
ZGF0ZVVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTJmKENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtMmZ2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9y
bTJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEp
OwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5p
Zm9ybTNmKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZs
b2F0IHYxLCBHTGZsb2F0IHYyKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtM2Z2KENvbnRleHQgKmNv
bnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTNpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0
aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3Jt
M2l2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZihDb250ZXh0ICpjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVV
bmlmb3JtMWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLCBHTGZsb2F0IHYwKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworYm9vbCBWYWxpZGF0
ZVVuaWZvcm0xaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsIEdMaW50IHYwKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVV
bmlmb3JtMmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxKTsKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBHTGludCB2MSk7
Citib29sIFZhbGlkYXRlVW5pZm9ybTJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlVW5pZm9ybTNmKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB2Mik7Citib29sIFZhbGlkYXRlVW5pZm9ybTNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2koY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHYyKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAog
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxLAogICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHYyLAogICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYzKTsKLWJvb2wg
VmFsaWRhdGVVbmlmb3JtNGZ2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTRp
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdM
aW50IHYyLCBHTGludCB2Myk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTRpdihDb250ZXh0ICpjb250
ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsK
LWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlm
b3JtNGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm00aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHYzKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlm
b3JtTWF0cml4MmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2KENv
bnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4NGZ2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVc2VQcm9ncmFtKENvbnRleHQgKmNvbnRleHQs
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVWYWxpZGF0ZVBy
b2dyYW0oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFmKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xmbG9hdCB4KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWIyZihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xm
bG9hdCB5KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZnYoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIzZihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjRmKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVXNlUHJvZ3JhbShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7Citib29s
IFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCk7Citib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliMWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwg
Y29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMmYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Citib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgY29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliM2YoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZnYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWI0Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHcpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYlBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWI0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0
ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwotYm9vbCBWYWxpZGF0ZVZp
ZXdwb3J0KENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KTsKK2Jvb2wgVmFsaWRhdGVWaWV3cG9ydChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7
CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VT
Ml9BVVRPR0VOX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAKaW5kZXggNGM2Mzg0MWVhZWJlYjdhMzc3YmZjMGY1ZDZh
NWEzNmQ4Y2Y0ZGU4ZS4uNmNjYjk4MTRhYzk2ZjlmMDJmYTc1MDQ1MzFmNTkzOGEyYTk5NjQwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25FUzMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMzLmNwcApAQCAtMjksNyArMjksNyBAQCB1c2luZyBuYW1lc3BhY2UgZXJyOwogCiBu
YW1lc3BhY2UKIHsKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdCYXNl
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVN
dWx0aXZpZXdCYXNlQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFj
aG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlLApAQCAtNjMsOCArNjMsOCBAQCBib29sIFZhbGlkYXRlRnJhbWVi
dWZmZXJUZXh0dXJlTXVsdGl2aWV3QmFzZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdM
ZXZlbEFuZEZvcm1hdChDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmUgKnRleHR1cmUsCitib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3TGV2ZWxBbmRGb3JtYXQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICp0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKQogewogICAg
IFRleHR1cmVUeXBlIHR5cGUgPSB0ZXh0dXJlLT5nZXRUeXBlKCk7CkBAIC04Myw3ICs4MywxMCBA
QCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3TGV2ZWxBbmRGb3JtYXQo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVu
aWZvcm1FUzMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHVuaWZvcm1UeXBlLCBHTGludCBsb2Nh
dGlvbiwgR0xpbnQgY291bnQpCitib29sIFZhbGlkYXRlVW5pZm9ybUVTMyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVuaWZvcm1UeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC05NCw5ICs5Nyw5IEBAIGJvb2wgVmFs
aWRhdGVVbmlmb3JtRVMzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB1bmlmb3JtVHlwZSwgR0xp
bnQgbG9jYXRpb24sIEdMCiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCB1bmlm
b3JtVHlwZSwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXhFUzMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4RVMzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdmFsdWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSkKIHsKQEAgLTExMCw3
ICsxMTMsNyBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeEVTMyhDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoY29udGV4dCwgdmFsdWVUeXBlLCBs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZW5PckRlbGV0
ZUVTMyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKQorYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRl
RVMzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pCiB7CiAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0xMjAsNyArMTIzLDcgQEAg
Ym9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlRVMzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pCiAg
ICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZW5PckRlbGV0ZUNvdW50RVMzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGNvdW50KQor
Ym9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlQ291bnRFUzMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgY291bnQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICB7CkBAIC0xMzUsNyArMTM4LDcgQEAgYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRl
Q291bnRFUzMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgY291bnQpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZTNEQ29tbW9uKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ29weVRleHR1cmUzRENvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqc291cmNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNJbnRlcm5hbEZvcm1hdCwK
QEAgLTI1OCw3ICsyNjEsNyBAQCBib29sIFZhbGlkYXRlQ29weVRleHR1cmUzRENvbW1vbihDb250
ZXh0ICpjb250ZXh0LAogfQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1zdGF0aWMgYm9v
bCBWYWxpZGF0ZVRleEltYWdlRm9ybWF0Q29tYmluYXRpb24oZ2w6OkNvbnRleHQgKmNvbnRleHQs
CitzdGF0aWMgYm9vbCBWYWxpZGF0ZVRleEltYWdlRm9ybWF0Q29tYmluYXRpb24oY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0zMzYsNyArMzM5
LDcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVUZXhJbWFnZUZvcm1hdENvbWJpbmF0aW9uKGdsOjpD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5h
bEZvcm1hdCwgdHlwZSk7CisgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQsIHR5cGUpOwogICAgIGlmICghZm9y
bWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkSW50ZXJuYWxGb3JtYXQpOwpAQCAt
MzQ2LDcgKzM0OSw0MCBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZVRleEltYWdlRm9ybWF0Q29tYmlu
YXRpb24oZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCitzdGF0
aWMgYm9vbCBWYWxpZGF0ZUVTM0NvbXByZXNzZWRGb3JtYXRGb3JUZXh0dXJlM0QoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBpZiAoSXNFVEMyRUFDRm9ybWF0
KGZvcm1hdCkpCisgICAgeworICAgICAgICAvLyBFUyAzLjEsIFNlY3Rpb24gOC43LCBwYWdlIDE2
OS4KKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCBrSW50ZXJuYWxGb3JtYXRSZXF1aXJlc1RleHR1cmUyREFycmF5KTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmIChJc0FTVEMyREZvcm1hdChmb3JtYXQpICYmICEoY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFJLSFIgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS50ZXh0dXJlQ29tcHJlc3Npb25TbGljZWQzZEFTVENLSFIpKQorICAgIHsKKyAgICAgICAgLy8g
R0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIsIFRFWFRVUkVfM0QgaXMgbm90IHN1
cHBvcnRlZCB3aXRob3V0IEhEUiBwcm9maWxlCisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25F
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludGVybmFsRm9ybWF0UmVxdWlyZXNUZXh0dXJl
MkRBcnJheUFTVEMpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKElz
UzNUQ0Zvcm1hdChmb3JtYXQpKQorICAgIHsKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0YworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sIGtJbnRlcm5hbEZvcm1hdFJlcXVpcmVzVGV4dHVyZTJEQXJyYXlTM1RDKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChJc1JHVENGb3JtYXQoZm9y
bWF0KSkKKyAgICB7CisgICAgICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMK
KyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
SW50ZXJuYWxGb3JtYXRSZXF1aXJlc1RleHR1cmUyREFycmF5UkdUQyk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVFUzNU
ZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAt
Mzk0LDcgKzQzMCw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25z
dCBnbDo6Q2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBjb25zdCBDYXBzICZj
YXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwogCiAgICAgc3dpdGNoICh0ZXhUeXBlKQogICAgIHsK
QEAgLTQ2MSw3ICs0OTcsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFz
ZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0ZXhU
eXBlKTsKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0
ZXhUeXBlKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtNaXNzaW5nVGV4dHVyZSk7CkBAIC00
NzcsMTAgKzUxMyw5IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENv
bnRleHQgKmNvbnRleHQsCiAgICAgaWYgKGlzQ29tcHJlc3NlZCAmJiB0ZXhUeXBlID09IFRleHR1
cmVUeXBlOjpfM0QpCiAgICAgewogICAgICAgICBHTGVudW0gY29tcHJlc3NlZERhdGFGb3JtYXQg
PSBpc1N1YkltYWdlID8gZm9ybWF0IDogaW50ZXJuYWxmb3JtYXQ7Ci0gICAgICAgIGlmIChJc0VU
QzJFQUNGb3JtYXQoY29tcHJlc3NlZERhdGFGb3JtYXQpKQorICAgICAgICBpZiAoIVZhbGlkYXRl
RVMzQ29tcHJlc3NlZEZvcm1hdEZvclRleHR1cmUzRChjb250ZXh0LCBjb21wcmVzc2VkRGF0YUZv
cm1hdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIEVTIDMuMSwgU2VjdGlvbiA4LjcsIHBh
Z2UgMTY5LgotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBrSW50ZXJuYWxGb3JtYXRSZXF1aXJlc1RleHR1cmUyREFycmF5KTsKKyAgICAg
ICAgICAgIC8vIEVycm9yIGFscmVhZHkgZ2VuZXJhdGVkLgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDk0LDkgKzUyOSw5IEBAIGJvb2wgVmFsaWRhdGVF
UzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmFjdHVhbEZv
cm1hdEluZm8gPSBpc1N1YkltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gKnRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxldmVsKS5p
bmZvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0LCB0eXBlKTsKKyAgICBjb25z
dCBJbnRlcm5hbEZvcm1hdCAmYWN0dWFsRm9ybWF0SW5mbyA9IGlzU3ViSW1hZ2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICp0ZXh0dXJlLT5nZXRG
b3JtYXQodGFyZ2V0LCBsZXZlbCkuaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0
LCB0eXBlKTsKICAgICBpZiAoaXNDb21wcmVzc2VkKQogICAgIHsKICAgICAgICAgaWYgKCFhY3R1
YWxGb3JtYXRJbmZvLmNvbXByZXNzZWQpCkBAIC01OTIsNyArNjI3LDcgQEAgYm9vbCBWYWxpZGF0
ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgfQog
CiAgICAgICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCAmJiBkZXB0aCA+IDAgJiYgcGl4
ZWxzID09IG51bGxwdHIgJiYKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFy
Z2V0QnVmZmVyKGdsOjpCdWZmZXJCaW5kaW5nOjpQaXhlbFVucGFjaykgPT0gbnVsbHB0cikKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEJ1ZmZlckJpbmRp
bmc6OlBpeGVsVW5wYWNrKSA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga1BpeGVsRGF0YU51bGwpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjA3LDcgKzY0Miw3IEBAIGJvb2wgVmFsaWRh
dGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgfQogCiAg
ICAgLy8gQ2hlY2sgZm9yIHBpeGVsIHVucGFjayBidWZmZXIgcmVsYXRlZCBBUEkgZXJyb3JzCi0g
ICAgZ2w6OkJ1ZmZlciAqcGl4ZWxVbnBhY2tCdWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dFRhcmdldEJ1ZmZlcihCdWZmZXJCaW5kaW5nOjpQaXhlbFVucGFjayk7CisgICAgQnVmZmVyICpw
aXhlbFVucGFja0J1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEJ1
ZmZlckJpbmRpbmc6OlBpeGVsVW5wYWNrKTsKICAgICBpZiAocGl4ZWxVbnBhY2tCdWZmZXIgIT0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIC8vIC4uLmRhdGEgaXMgbm90IGV2ZW5seSBkaXZpc2li
bGUgaW50byB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0byBzdG9yZSBpbiBtZW1vcnkgYQpA
QCAtNjE2LDcgKzY1MSw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNl
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGlmICghaXNDb21wcmVzc2VkKQogICAgICAgICB7
CiAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ICAgICAgICAgICAgPSByZWludGVycHJldF9jYXN0
PHNpemVfdD4ocGl4ZWxzKTsKLSAgICAgICAgICAgIHNpemVfdCBkYXRhQnl0ZXNQZXJQaXhlbCA9
IHN0YXRpY19jYXN0PHNpemVfdD4oZ2w6OkdldFR5cGVJbmZvKHR5cGUpLmJ5dGVzKTsKKyAgICAg
ICAgICAgIHNpemVfdCBkYXRhQnl0ZXNQZXJQaXhlbCA9IHN0YXRpY19jYXN0PHNpemVfdD4oR2V0
VHlwZUluZm8odHlwZSkuYnl0ZXMpOwogCiAgICAgICAgICAgICBpZiAoKG9mZnNldCAlIGRhdGFC
eXRlc1BlclBpeGVsKSAhPSAwKQogICAgICAgICAgICAgewpAQCAtNjM2LDcgKzY3MSw3IEBAIGJv
b2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZTJEUGFyYW1ldGVy
cyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNjY1LDcgKzcwMCw3IEBAIGJvb2wgVmFsaWRh
dGVFUzNUZXhJbWFnZTJEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBpbWFnZVNpemUsIHBpeGVscyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZTNE
UGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlM0RQ
YXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtOTUxLDcgKzk4Niw3IEBAIHN0
YXRpYyBib29sIElzVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbihjb25zdCBJbnRlcm5h
bEZvcm1hdCAmdGV4dHVyZUZvcm1hCiAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzaW9uIGJl
dHdlZW4gdGhlc2UgZm9ybWF0cy4KIH0KIAotYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBh
cmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRVMzQ29weVRleElt
YWdlUGFyYW1ldGVyc0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCkBAIC05NzUsNyArMTAxMCw3IEBAIGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2VQYXJh
bWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIEFTU0VSVCh0ZXh0dXJlRm9ybWF0LnZh
bGlkKCkgfHwgIWlzU3ViSW1hZ2UpOwogCiAgICAgY29uc3QgYXV0byAmc3RhdGUgICAgICAgICAg
ICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7Ci0gICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciAgICA9IHN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciAgICAgICAgPSBzdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBGcmFt
ZWJ1ZmZlcklEIHJlYWRGcmFtZWJ1ZmZlcklEID0gZnJhbWVidWZmZXItPmlkKCk7CiAKICAgICBp
ZiAoIVZhbGlkYXRlRnJhbWVidWZmZXJDb21wbGV0ZShjb250ZXh0LCBmcmFtZWJ1ZmZlcikpCkBA
IC0xMDI2LDcgKzEwNjEsNyBAQCBib29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVy
c0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gKHdpZHRoID4gMCAmJiBoZWlnaHQg
PiAwKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJEUGFyYW1ldGVycyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJEUGFyYW1ldGVycyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTEwNTEsNyArMTA4Niw3IEBA
IGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Jk
ZXIpOwogfQogCi1ib29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlM0RQYXJhbWV0ZXJzKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlM0RQYXJhbWV0ZXJzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMTA3Niw3ICsxMTExLDcgQEAg
Ym9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTNEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRl
cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMTA5NiwxMyArMTEzMSwxMyBA
QCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgIG1heERpbSA9IHN0ZDo6bWF4KG1heERpbSwgZGVwdGgpOwogICAgIH0KIAot
ICAgIGlmIChsZXZlbHMgPiBnbDo6bG9nMihtYXhEaW0pICsgMSkKKyAgICBpZiAobGV2ZWxzID4g
bG9nMihtYXhEaW0pICsgMSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRNaXBMZXZlbHMpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5n
ZXRDYXBzKCk7CisgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKIAog
ICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKQEAgLTExNzUsNyArMTIxMCw3IEBAIGJvb2wgVmFs
aWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRleHR1cmVCeVR5cGUodGFyZ2V0KTsKKyAgICBUZXh0dXJlICp0ZXh0dXJl
ID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0YXJnZXQpOwogICAgIGlmICghdGV4dHVyZSB8
fCB0ZXh0dXJlLT5pZCgpLnZhbHVlID09IDApCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtNaXNzaW5nVGV4dHVyZSk7CkBAIC0x
MTg4LDcgKzEyMjMsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNl
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBj
b25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0U2l6ZWRJbnRlcm5h
bEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZm
b3JtYXRJbmZvID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwog
ICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAgewogICAgICAgICBjb250ZXh0
LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZEZvcm1hdCk7CkBAIC0x
MjA5LDE0ICsxMjQ0LDE3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jh
c2UoQ29udGV4dCAqY29udGV4dCwKIAogICAgIGlmIChmb3JtYXRJbmZvLmNvbXByZXNzZWQgJiYg
dGFyZ2V0ID09IFRleHR1cmVUeXBlOjpfM0QpCiAgICAgewotICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkVGV4dHVyZVRhcmdldCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUVTM0NvbXByZXNz
ZWRGb3JtYXRGb3JUZXh0dXJlM0QoY29udGV4dCwgZm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEVycm9yIGFscmVhZHkgZ2VuZXJhdGVkLgorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZTJEUGFyYW1ldGVycyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0xMjM0LDcgKzEyNzIsNyBAQCBib29sIFZhbGlk
YXRlRVMzVGV4U3RvcmFnZTJEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2UzRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlM0RQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTEyNTIsNyArMTI5MCw3IEBAIGJvb2wgVmFsaWRhdGVFUzNU
ZXhTdG9yYWdlM0RQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgpOwogfQogCi1ib29s
IFZhbGlkYXRlQmVnaW5RdWVyeShnbDo6Q29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdl
dCwgUXVlcnlJRCBpZCkKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIFF1ZXJ5SUQgaWQpCiB7CiAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0xMjYzLDcgKzEzMDEsNyBA
QCBib29sIFZhbGlkYXRlQmVnaW5RdWVyeShnbDo6Q29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBl
IHRhcmdldCwgUXVlcnlJRCBpZCkKICAgICByZXR1cm4gVmFsaWRhdGVCZWdpblF1ZXJ5QmFzZShj
b250ZXh0LCB0YXJnZXQsIGlkKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5KGdsOjpDb250
ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0KQorYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQpCiB7CiAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0xMjc0LDcgKzEzMTIs
NyBAQCBib29sIFZhbGlkYXRlRW5kUXVlcnkoZ2w6OkNvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlw
ZSB0YXJnZXQpCiAgICAgcmV0dXJuIFZhbGlkYXRlRW5kUXVlcnlCYXNlKGNvbnRleHQsIHRhcmdl
dCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5
VHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVH
ZXRRdWVyeWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTEyODUsNyArMTMyMywxMCBAQCBib29s
IFZhbGlkYXRlR2V0UXVlcnlpdihDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29u
dGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVy
eU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEdM
dWludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0xMjk2LDcgKzEz
MzcsNyBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXYoQ29udGV4dCAqY29udGV4dCwg
UXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbgogICAgIHJldHVybiBWYWxpZGF0ZUdldFF1
ZXJ5T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKQEAg
LTEzMTQsNyArMTM1NSw3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29u
c3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAgY29uc3QgQ2FwcyAm
Y2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKICAgICBpZiAodGV4dHVyZS52YWx1ZSAhPSAwKQog
ICAgIHsKICAgICAgICAgaWYgKGxheWVyIDwgMCkKQEAgLTEzMjMsMTQgKzEzNjQsMTQgQEAgYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6VGV4dHVyZSAq
dGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgVGV4dHVyZSAqdGV4
ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKICAgICAgICAgQVNTRVJUKHRleCk7CiAK
ICAgICAgICAgc3dpdGNoICh0ZXgtPmdldFR5cGUoKSkKICAgICAgICAgewogICAgICAgICAgICAg
Y2FzZSBUZXh0dXJlVHlwZTo6XzJEQXJyYXk6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKKyAgICAgICAg
ICAgICAgICBpZiAobGV2ZWwgPiBsb2cyKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkpCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwga0ZyYW1lYnVmZmVyVGV4dHVyZUludmFsaWRNaXBMZXZlbCk7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNDYsNyArMTM4Nyw3IEBAIGJv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LAogCiAg
ICAgICAgICAgICBjYXNlIFRleHR1cmVUeXBlOjpfM0Q6CiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgzRFRleHR1cmVTaXplKSkKKyAg
ICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBsb2cyKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSkpCiAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ZyYW1lYnVmZmVyVGV4dHVyZUludmFsaWRNaXBMZXZl
bCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzOTMsNyArMTQzNCw3
IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCkBAIC0xNDI0LDcgKzE0NjUsNyBAQCBib29sIFZh
bGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RnJhbWVidWZmZXIpOwogfQog
Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0
YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZW51bSAqYXR0YWNobWVudHMsCkBAIC0xNDQyLDcgKzE0ODMsNyBAQCBib29sIFZhbGlkYXRlSW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlk
YXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMs
IGF0dGFjaG1lbnRzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyKENvbnRleHQgKmNv
bnRleHQpCitib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCkK
IHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsK
QEAgLTE0NTgsNyArMTQ5OSw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcihDb250ZXh0ICpj
b250ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxl
bWVudHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50cyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKQEAgLTE0
OTIsMTAgKzE1MzMsMTAgQEAgYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3Jt
dWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0xNTA2LDcgKzE1NDcsNyBAQCBi
b29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBW
YWxpZGF0ZUdldFVuaWZvcm1CYXNlKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVJlYWRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHNyYykKK2Jv
b2wgVmFsaWRhdGVSZWFkQnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBzcmMp
CiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7
CkBAIC0xNTU1LDcgKzE1OTYsNyBAQCBib29sIFZhbGlkYXRlUmVhZEJ1ZmZlcihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gc3JjKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
Q29tcHJlc3NlZFRleEltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21w
cmVzc2VkVGV4SW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTE1OTQsNyArMTYzNSw3IEBAIGJv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgIH0K
IAogICAgIEdMdWludCBibG9ja1NpemUgPSAwOwotICAgIGlmICghZm9ybWF0SW5mby5jb21wdXRl
Q29tcHJlc3NlZEltYWdlU2l6ZShnbDo6RXh0ZW50cyh3aWR0aCwgaGVpZ2h0LCBkZXB0aCksICZi
bG9ja1NpemUpKQorICAgIGlmICghZm9ybWF0SW5mby5jb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6
ZShFeHRlbnRzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgJmJsb2NrU2l6ZSkpCiAgICAgewogICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludGVnZXJP
dmVyZmxvdyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2MjQsNyArMTY2NSw3IEBAIGJv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNE
Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCkBAIC0xNjQ1LDcgKzE2ODYsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdl
M0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJ
RCBhcnJheSkKK2Jvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTE2NTYsNyArMTY5Nyw3IEBAIGJvb2wgVmFs
aWRhdGVCaW5kVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJh
eSkKICAgICByZXR1cm4gVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlCYXNlKGNvbnRleHQsIGFycmF5
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCwgVmVy
dGV4QXJyYXlJRCBhcnJheSkKK2Jvb2wgVmFsaWRhdGVJc1ZlcnRleEFycmF5KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXkpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0xNjY3LDcgKzE3MDgsNyBAQCBi
b29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlE
IGFycmF5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBWYWxpZGF0ZUJpbmRC
dWZmZXJDb21tb24oQ29udGV4dCAqY29udGV4dCwKK3N0YXRpYyBib29sIFZhbGlkYXRlQmluZEJ1
ZmZlckNvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCkBAIC0xNzgxLDEyICsxODIyLDE1IEBAIHN0
YXRpYyBib29sIFZhbGlkYXRlQmluZEJ1ZmZlckNvbW1vbihDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmluZEJ1ZmZlckJhc2UoQ29udGV4dCAq
Y29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQsIEdMdWludCBpbmRleCwgQnVmZmVySUQgYnVm
ZmVyKQorYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVCaW5kQnVm
ZmVyQ29tbW9uKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgMCwgMCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVCaW5kQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVCaW5kQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVm
ZmVySUQgYnVmZmVyLApAQCAtMTgwMSw3ICsxODQ1LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRCdWZm
ZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZUJpbmRCdWZmZXJD
b21tb24oY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBvZmZzZXQsIHNpemUpOwogfQog
Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVByb2dyYW1CaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmJpbmFyeSwKQEAgLTE4MTYsMTIgKzE4NjAsMTIgQEAgYm9vbCBWYWxpZGF0
ZVByb2dyYW1CaW5hcnkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVQcm9n
cmFtQmluYXJ5QmFzZShjb250ZXh0LCBwcm9ncmFtLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVu
Z3RoKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnkoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqYmluYXJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xlbnVtICpiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpiaW5hcnkpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lv
bigpIDwgMykKICAgICB7CkBAIC0xODMyLDcgKzE4NzYsMTAgQEAgYm9vbCBWYWxpZGF0ZUdldFBy
b2dyYW1CaW5hcnkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRQcm9n
cmFtQmluYXJ5QmFzZShjb250ZXh0LCBwcm9ncmFtLCBidWZTaXplLCBsZW5ndGgsIGJpbmFyeUZv
cm1hdCwgYmluYXJ5KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50
IHZhbHVlKQorYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZhbHVlKQogewogICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMTg3Nyw3ICsxOTI0
LDcgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGVudW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUJsaXRGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzcmNYMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc3JjWTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gxLApA
QCAtMTg5OSw3ICsxOTQ2LDEwIEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXIoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyQnVm
ZmVyaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwg
Y29uc3QgR0xpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyaXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIHN3aXRjaCAoYnVm
ZmVyKQogICAgIHsKQEAgLTE5MzYsNyArMTk4NiwxMCBAQCBib29sIFZhbGlkYXRlQ2xlYXJCdWZm
ZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBj
bwogICAgIHJldHVybiBWYWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnRleHQpOwogfQogCi1ib29sIFZh
bGlkYXRlQ2xlYXJCdWZmZXJ1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xp
bnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2YWx1ZSkKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1
ZmZlcnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJh
d2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVl
KQogewogICAgIHN3aXRjaCAoYnVmZmVyKQogICAgIHsKQEAgLTE5NjUsNyArMjAxOCwxMCBAQCBi
b29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJ1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZl
ciwgR0xpbnQgZHJhd2J1ZmZlciwgYwogICAgIHJldHVybiBWYWxpZGF0ZUNsZWFyQnVmZmVyKGNv
bnRleHQpOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJmdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIHN3aXRjaCAoYnVmZmVyKQogICAgIHsKQEAgLTIw
MDMsNyArMjA1OSw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZ2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvCiAgICAgcmV0dXJuIFZhbGlk
YXRlQ2xlYXJCdWZmZXIoY29udGV4dCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZp
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJmaShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLApAQCAtMjAyNyw3ICsyMDgzLDcgQEAgYm9v
bCBWYWxpZGF0ZUNsZWFyQnVmZmVyZmkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFs
aWRhdGVDbGVhckJ1ZmZlcihjb250ZXh0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJz
KENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQorYm9vbCBW
YWxpZGF0ZURyYXdCdWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29u
c3QgR0xlbnVtICpidWZzKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMpCiAgICAgewpAQCAtMjAzOCw3ICsyMDk0LDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdC
dWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQog
ICAgIHJldHVybiBWYWxpZGF0ZURyYXdCdWZmZXJzQmFzZShjb250ZXh0LCBuLCBidWZzKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMjA1OSw3ICsyMTE1LDcgQEAgYm9vbCBWYWxp
ZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIDApOwogfQogCi1ib29sIFZhbGlkYXRlQ29weVRleHR1cmUzREFOR0xFKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVRleHR1cmUzREFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJ
RCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNl
TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgZGVz
dFRhcmdldCwKQEAgLTIxMjAsNyArMjE3Niw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZTNE
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUNvcHlTdWJUZXh0dXJlM0RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUNvcHlTdWJUZXh0dXJlM0RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgc291cmNlSWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXQsCkBAIC0yMjEw
LDcgKzIyNjYsNyBAQCBib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmUzREFOR0xFKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTNE
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2UzRChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LApAQCAtMjIzMyw3ICsyMjg5LDcgQEAgYm9vbCBW
YWxpZGF0ZVRleEltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4SW1h
Z2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCkBAIC0yMjYyLDcgKzIzMTgsNyBAQCBib29s
IFZhbGlkYXRlVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgcGl4ZWxzKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVUZXhTdWJJbWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9m
ZnNldCwKQEAgLTIyODYsNyArMjM0Miw3IEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNEKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLTEsIHBpeGVscyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5H
TEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMjMxNiw3ICsyMzcyLDcgQEAgYm9vbCBWYWxpZGF0
ZVRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIHBpeGVscyk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTIz
NDMsNyArMjM5OSw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChDb250
ZXh0ICpjb250ZXh0LAogICAgIH0KIAogICAgIEdMdWludCBibG9ja1NpemUgPSAwOwotICAgIGlm
ICghZm9ybWF0SW5mby5jb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6ZShnbDo6RXh0ZW50cyh3aWR0
aCwgaGVpZ2h0LCBkZXB0aCksICZibG9ja1NpemUpKQorICAgIGlmICghZm9ybWF0SW5mby5jb21w
dXRlQ29tcHJlc3NlZEltYWdlU2l6ZShFeHRlbnRzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgJmJs
b2NrU2l6ZSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGtJbnRlZ2VyT3ZlcmZsb3cpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMzcxLDcgKzI0MjcsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdl
M0QoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTIzOTQsMzIgKzI0NTAs
MzQgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZW5RdWVyaWVzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIFF1ZXJ5SUQgKikKK2Jv
b2wgVmFsaWRhdGVHZW5RdWVyaWVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNv
bnN0IFF1ZXJ5SUQgKnF1ZXJpZXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVF
UzMoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVRdWVyaWVzKENvbnRleHQg
KmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IFF1ZXJ5SUQgKikKK2Jvb2wgVmFsaWRhdGVEZWxldGVR
dWVyaWVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IFF1ZXJ5SUQgKnF1
ZXJpZXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMoY29udGV4dCwgbik7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZW5TYW1wbGVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBj
b3VudCwgU2FtcGxlcklEICpzYW1wbGVycykKK2Jvb2wgVmFsaWRhdGVHZW5TYW1wbGVycyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBjb3VudCwgY29uc3QgU2FtcGxlcklEICpzYW1wbGVy
cykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZUNvdW50RVMzKGNvbnRleHQsIGNv
dW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IGNvdW50LCBjb25zdCBTYW1wbGVySUQgKnNhbXBsZXJzKQorYm9vbCBWYWxpZGF0ZURl
bGV0ZVNhbXBsZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGNvdW50LCBjb25zdCBT
YW1wbGVySUQgKnNhbXBsZXJzKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlQ291
bnRFUzMoY29udGV4dCwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlR2VuVHJhbnNmb3JtRmVl
ZGJhY2tzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlk
cykKK2Jvb2wgVmFsaWRhdGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbiwgY29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRzKQogewogICAgIHJl
dHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlRVMzKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZhbGlk
YXRlRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNv
bnN0IFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkcykKK2Jvb2wgVmFsaWRhdGVEZWxldGVUcmFuc2Zv
cm1GZWVkYmFja3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRzKQogewogICAgIGlmICghVmFs
aWRhdGVHZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKSkKICAgICB7CkBAIC0yNDM4LDE3ICsyNDk2
LDE3IEBAIGJvb2wgVmFsaWRhdGVEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbiwgY29uc3QgVHJhbnNmb3JtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgVmVy
dGV4QXJyYXlJRCAqYXJyYXlzKQorYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFycmF5cyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXMpCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMoY29udGV4dCwgbik7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEZWxldGVWZXJ0ZXhBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwg
Y29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFy
cmF5cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBWZXJ0ZXhBcnJheUlE
ICphcnJheXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMoY29udGV4dCwg
bik7CiB9CiAKLWJvb2wgVmFsaWRhdGVCZWdpblRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNv
bnRleHQsIFByaW1pdGl2ZU1vZGUgcHJpbWl0aXZlTW9kZSkKK2Jvb2wgVmFsaWRhdGVCZWdpblRy
YW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgcHJp
bWl0aXZlTW9kZSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKQEAgLTI1MTQsNyArMjU3MiwxMCBAQCBib29sIFZhbGlkYXRlQmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIHByaW1pdGl2ZU1v
ZAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYo
Q29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9p
ZCAqKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcg
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFyYW1zKQogewogICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMjUy
NSwxMiArMjU4NiwxMiBAQCBib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYoQ29udGV4dCAq
Y29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQsIEdMZW51bSBwbgogICAgIHJldHVybiBWYWxp
ZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBudWxscHRy
LCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBhcmFtcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnN0ICpwYXJh
bXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6
ZSkpCiAgICAgewpAQCAtMjU2MCw3ICsyNjIxLDcgQEAgYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBv
aW50ZXJ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRp
bmcgdGFyZ2V0KQorYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMjU3MSw3ICsyNjMyLDcgQEAgYm9vbCBWYWxp
ZGF0ZVVubWFwQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQog
ICAgIHJldHVybiBWYWxpZGF0ZVVubWFwQnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXQpOwogfQog
Ci1ib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVNYXBCdWZmZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpcHRyIGxlbmd0aCwKQEAgLTI1ODYsNyArMjY0Nyw3IEBAIGJvb2wgVmFsaWRhdGVNYXBC
dWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZU1hcEJ1ZmZl
clJhbmdlQmFzZShjb250ZXh0LCB0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogfQog
Ci1ib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgp
CkBAIC0yNjAwLDcgKzI2NjEsNyBAQCBib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5n
ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVy
UmFuZ2VCYXNlKGNvbnRleHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgpOwogfQogCi1ib29sIFZh
bGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
THVpbnQgaW5kZXgsIEdMc2l6ZWkgKmxlbmd0aCkKK2Jvb2wgVmFsaWRhdGVJbmRleGVkU3RhdGVR
dWVyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwg
R0xzaXplaSAqbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGgpCiAgICAgewpAQCAtMjYxOCw2ICsy
Njc5LDE5IEBAIGJvb2wgVmFsaWRhdGVJbmRleGVkU3RhdGVRdWVyeShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xzCiAgICAgY29uc3QgQ2FwcyAmY2FwcyA9
IGNvbnRleHQtPmdldENhcHMoKTsKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9CTEVORF9TUkNfUkdCOgorICAgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQToK
KyAgICAgICAgY2FzZSBHTF9CTEVORF9EU1RfUkdCOgorICAgICAgICBjYXNlIEdMX0JMRU5EX0RT
VF9BTFBIQToKKyAgICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9SR0I6CisgICAgICAgIGNh
c2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEE6CisgICAgICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVN
QVNLOgorICAgICAgICAgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PEdMdWludD4oY2Fwcy5t
YXhEcmF3QnVmZmVycykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbmRleEV4Y2VlZHNNYXhEcmF3QnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
X1NUQVJUOgogICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRToK
ICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CkBAIC0y
NzM2LDcgKzI4MTAsNyBAQCBib29sIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMcwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcmlfdihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKQorYm9vbCBWYWxpZGF0ZUdldElu
dGVnZXJpX3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGludCAqZGF0YSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgRVNfM18wKQogICAgIHsKQEAgLTI3NDYsMTIgKzI4MjAsMTIgQEAgYm9vbCBWYWxp
ZGF0ZUdldEludGVnZXJpX3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGludAogICAgIHJldHVybiBWYWxpZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KGNvbnRl
eHQsIHRhcmdldCwgaW5kZXgsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0SW50ZWdl
cmlfdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZWdl
cmlfdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpkYXRhKQogewogICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCBFU18zXzApCiAgICAgewpAQCAtMjc4MSw3ICsyODU1LDEwIEBAIGJv
b2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRhdGEpCiti
b29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQ2NCAqZGF0YSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lv
bigpIDwgRVNfM18wKQogICAgIHsKQEAgLTI3OTEsMTIgKzI4NjgsMTIgQEAgYm9vbCBWYWxpZGF0
ZUdldEludGVnZXI2NGlfdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMaW4KICAgICByZXR1cm4gVmFsaWRhdGVJbmRleGVkU3RhdGVRdWVyeShjb250ZXh0
LCB0YXJnZXQsIGluZGV4LCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2
NGlfdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZWdl
cjY0aV92Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKmRhdGEpCiB7CiAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMCkKICAgICB7CkBAIC0y
ODI2LDcgKzI5MDMsNyBAQCBib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNv
cHlCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weUJ1ZmZl
clN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJCaW5kaW5nIHJlYWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyQmluZGluZyB3cml0ZVRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludHB0ciByZWFkT2Zmc2V0LApAQCAtMjkyNCw3ICszMDAxLDcgQEAgYm9v
bCBWYWxpZGF0ZUNvcHlCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTdHJpbmdpKENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlR2V0U3RyaW5naShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KQogewogICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMjk2Myw3ICsz
MDQwLDcgQEAgYm9vbCBWYWxpZGF0ZUdldFN0cmluZ2koQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IG5hbWUsIEdMdWludCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTI5ODUsNyArMzA2Miw3IEBAIGJvb2wgVmFsaWRh
dGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dCAqY29udGV4dCwKICAgICAv
LyBUaGUgRVMzIHNwZWMoc2VjdGlvbiA0LjQuMikgc3RhdGVzIHRoYXQgdGhlIGludGVybmFsIGZv
cm1hdCBtdXN0IGJlIHNpemVkIGFuZCBub3QgYW4gaW50ZWdlcgogICAgIC8vIGZvcm1hdCBpZiBz
YW1wbGVzIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLiBJbiBFUzMuMShzZWN0aW9uIDkuMi41KSwgaXQg
Y2FuIHN1cHBvcnQgaW50ZWdlcgogICAgIC8vIG11bHRpc2FtcGxlIHJlbmRlcmJ1ZmZlciwgYnV0
IHRoZSBzYW1wbGVzIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIE1BWF9JTlRFR0VSX1NBTVBM
RVMuCi0gICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldFNp
emVkSW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKKyAgICBjb25zdCBJbnRlcm5h
bEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFs
Zm9ybWF0KTsKICAgICBpZiAoZm9ybWF0SW5mby5pc0ludCgpKQogICAgIHsKICAgICAgICAgaWYg
KChzYW1wbGVzID4gMCAmJiBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPT0gRVNfM18wKSB8
fApAQCAtMzAwNyw3ICszMDg0LDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliSVBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZSwKQEAgLTMwNzIsMTIgKzMxNDksMTIgQEAg
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYklQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTeW5jaXYoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRTeW5jaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzeW5jIHN5bmMsCiAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICp2YWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlcykKIHsK
ICAgICBpZiAoKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykgJiYgIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nbFN5bmNBUkIpCiAgICAgewpAQCAtMzEzMCw3ICszMjA3LDcg
QEAgYm9vbCBWYWxpZGF0ZUdldFN5bmNpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0
eXBlLApAQCAtMzE0Niw3ICszMjIzLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdFbGVtZW50c0lu
c3RhbmNlZEJhc2UoY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNl
Q291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqZmlyc3RzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50cywKQEAg
LTMxODEsNyArMzI1OCw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRB
TkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTMyMTcsNyArMzI5
NCw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJy
YXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTMyMzYsNyArMzMxMyw3
IEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5z
dGFuY2VBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAg
LTMyNTcsNyArMzMzNCw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNl
VmVydGV4QmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5j
ZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVN
b2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmZpcnN0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3VudHMs
CkBAIC0zMjg1LDcgKzMzNjIsNyBAQCBib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5zdGFu
Y2VkQmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJh
c2VJbnN0YW5jZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqY291bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlw
ZVBhY2tlZCwKQEAgLTMzMTUsNyArMzM5Miw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRShDb250ZXh0ICpjb250CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0
aXZpZXdPVlIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1
cmVNdWx0aXZpZXdPVlIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLApA
QCAtMzM3NywyMyArMzQ1NCwyNyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTXVs
dGl2aWV3T1ZSKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVVbmlmb3JtMXVpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjApCitib29sIFZhbGlkYXRlVW5pZm9ybTF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMdWludCB2MCkKIHsKICAgICByZXR1cm4gVmFsaWRh
dGVVbmlmb3JtRVMzKGNvbnRleHQsIEdMX1VOU0lHTkVEX0lOVCwgbG9jYXRpb24sIDEpOwogfQog
Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTJ1aShDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0x1aW50IHYwLCBHTHVpbnQgdjEpCitib29sIFZhbGlkYXRlVW5pZm9ybTJ1aShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMdWludCB2MCwgR0x1
aW50IHYxKQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1FUzMoY29udGV4dCwgR0xfVU5T
SUdORURfSU5UX1ZFQzIsIGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0z
dWkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYx
LCBHTHVpbnQgdjIpCitib29sIFZhbGlkYXRlVW5pZm9ybTN1aShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYxLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyKQogewogICAg
IHJldHVybiBWYWxpZGF0ZVVuaWZvcm1FUzMoY29udGV4dCwgR0xfVU5TSUdORURfSU5UX1ZFQzMs
IGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm00dWkoQ29udGV4dCAqY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxp
ZGF0ZVVuaWZvcm00dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB2MiwKQEAgLTM0MDIsMjcgKzM0ODMsMzkgQEAgYm9vbCBW
YWxpZGF0ZVVuaWZvcm00dWkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVV
bmlmb3JtRVMzKGNvbnRleHQsIEdMX1VOU0lHTkVEX0lOVF9WRUM0LCBsb2NhdGlvbiwgMSk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMXVpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSkKK2Jvb2wgVmFsaWRhdGVV
bmlmb3JtMXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFs
dWUpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybUVTMyhjb250ZXh0LCBHTF9VTlNJR05F
RF9JTlQsIGxvY2F0aW9uLCBjb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMnVpdihD
b250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1
aW50ICp2YWx1ZSkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMnVpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5p
Zm9ybUVTMyhjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRfVkVDMiwgbG9jYXRpb24sIGNvdW50KTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0zdWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0
ZVVuaWZvcm0zdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2
YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtRVMzKGNvbnRleHQsIEdMX1VOU0lH
TkVEX0lOVF9WRUMzLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9y
bTR1aXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMdWludCAqdmFsdWUpCitib29sIFZhbGlkYXRlVW5pZm9ybTR1aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIHJldHVybiBWYWxp
ZGF0ZVVuaWZvcm1FUzMoY29udGV4dCwgR0xfVU5TSUdORURfSU5UX1ZFQzQsIGxvY2F0aW9uLCBj
b3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc1F1ZXJ5KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5
SUQgaWQpCitib29sIFZhbGlkYXRlSXNRdWVyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVy
eUlEIGlkKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMp
CiAgICAgewpAQCAtMzQzMyw4ICszNTI2LDggQEAgYm9vbCBWYWxpZGF0ZUlzUXVlcnkoQ29udGV4
dCAqY29udGV4dCwgUXVlcnlJRCBpZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXgyeDNmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0
cml4MngzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTM0NDIsOCArMzUzNSw4IEBAIGJvb2wgVmFsaWRhdGVV
bmlmb3JtTWF0cml4MngzZnYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVV
bmlmb3JtTWF0cml4RVMzKGNvbnRleHQsIEdMX0ZMT0FUX01BVDJ4MywgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4MmZ2KENvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtMzQ1
MSw4ICszNTQ0LDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJmdihDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1NYXRyaXhFUzMoY29udGV4dCwgR0xf
RkxPQVRfTUFUM3gyLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4Mng0ZnYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1h
dHJpeDJ4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0zNDYwLDggKzM1NTMsOCBAQCBib29sIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDJ4NGZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeEVTMyhjb250ZXh0LCBHTF9GTE9BVF9NQVQyeDQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdihDb250
ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTM0
NjksOCArMzU2Miw4IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZnYoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtTWF0cml4RVMzKGNvbnRleHQsIEdM
X0ZMT0FUX01BVDR4MiwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDN4NGZ2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1N
YXRyaXgzeDRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtMzQ3OCw4ICszNTcxLDggQEAgYm9vbCBWYWxpZGF0
ZVVuaWZvcm1NYXRyaXgzeDRmdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0
ZVVuaWZvcm1NYXRyaXhFUzMoY29udGV4dCwgR0xfRkxPQVRfTUFUM3g0LCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZnYoQ29u
dGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4M2Z2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0z
NDg3LDcgKzM1ODAsNyBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4M2Z2KENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybU1hdHJpeEVTMyhjb250ZXh0LCBH
TF9GTE9BVF9NQVQ0eDMsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlk
YXRlRW5kVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM1MDcs
NyArMzYwMCw3IEBAIGJvb2wgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpj
b250ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnZhcnlpbmdz
LApAQCAtMzU1MywxNCArMzY0NiwxNCBAQCBib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMY2hhciAqbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHNpemVpICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM1ODksNyArMzY4Miw3
IEBAIGJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBUcmFuc2Zvcm1GZWVkYmFj
a0lEIGlkKQorYm9vbCBWYWxpZGF0ZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkKQogewogICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMzYy
Nyw3ICszNzIwLDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBUcmFuc2Zvcm1GZWUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUlzVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCwg
VHJhbnNmb3JtRmVlZGJhY2tJRCBpZCkKK2Jvb2wgVmFsaWRhdGVJc1RyYW5zZm9ybUZlZWRiYWNr
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQpCiB7CiAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0zNjM4
LDcgKzM3MzEsNyBAQCBib29sIFZhbGlkYXRlSXNUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpj
b250ZXh0LCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlUGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0KQorYm9v
bCBWYWxpZGF0ZVBhdXNlVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCkK
IHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsK
QEAgLTM2NjUsNyArMzc1OCw3IEBAIGJvb2wgVmFsaWRhdGVQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
KENvbnRleHQgKmNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVS
ZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0zNjkyLDcg
KzM3ODUsMTIgQEAgYm9vbCBWYWxpZGF0ZVJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQg
KmNvbnRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJNGkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBH
TGludCB6LCBHTGludCB3KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHcpCiB7CiAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0zNzAzLDcgKzM4
MDEsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRpKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0xpbnQgeCwgR0xpbnQgeSwgRwogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkluZGV4KGNvbnRleHQsIGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0
dHJpYkk0dWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVp
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB5LApAQCAtMzcxOSw3ICszODE3LDcg
QEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWkoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KQogewogICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMzczMCw3
ICszODI4LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aXYoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKICAgICByZXR1cm4gVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJNHVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAq
dikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM3NDEsNyArMzgzOSw5IEBAIGJv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMdWludCAqdikKICAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRl
eChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGcmFnRGF0YUxvY2F0aW9u
KENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBjb25zdCBHTGNoYXIg
Km5hbWUpCitib29sIFZhbGlkYXRlR2V0RnJhZ0RhdGFMb2NhdGlvbihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIg
Km5hbWUpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykK
ICAgICB7CkBAIC0zNzY0LDExICszODY0LDExIEBAIGJvb2wgVmFsaWRhdGVHZXRGcmFnRGF0YUxv
Y2F0aW9uKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBjb25zCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtSW5kaWNlcyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1JbmRpY2VzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB1bmlm
b3JtQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpj
b25zdCAqdW5pZm9ybU5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqdW5pZm9ybUluZGljZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp1bmlmb3JtSW5kaWNlcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM3OTEsMTIgKzM4OTEsMTIgQEAgYm9vbCBWYWxp
ZGF0ZUdldFVuaWZvcm1JbmRpY2VzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3Jtc2l2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybXNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHVuaWZvcm1Db3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdW5pZm9y
bUluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM4NjAs
NyArMzk2MCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3Jtc2l2KENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtQmxv
Y2tJbmRleChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CbG9ja0lu
ZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKQogewpAQCAtMzg3OSwyMSAr
Mzk3OSwyMSBAQCBib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdkJhc2UoY29udGV4dCwgcHJvZ3JhbSwgdW5pZm9y
bUJsb2NrSW5kZXgsIHBuYW1lLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tOYW1lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqdW5pZm9y
bUJsb2NrTmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM5MTYsNyArNDAxNiw3IEBAIGJv
b2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtQmxvY2tCaW5kaW5nKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5pZm9ybUJsb2NrQmluZGluZyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKQEAgLTM5NDksNyArNDA0OSw3IEBAIGJvb2wgVmFs
aWRhdGVVbmlmb3JtQmxvY2tCaW5kaW5nKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtMzk2NCw3ICs0MDY0
LDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZShjb250ZXh0LCBtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVGZW5jZVN5bmMo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncykKK2Jv
b2wgVmFsaWRhdGVGZW5jZVN5bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvbmRp
dGlvbiwgR0xiaXRmaWVsZCBmbGFncykKIHsKICAgICBpZiAoKGNvbnRleHQtPmdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMykgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nbFN5bmNBUkIp
CiAgICAgewpAQCAtMzk4Nyw3ICs0MDg3LDcgQEAgYm9vbCBWYWxpZGF0ZUZlbmNlU3luYyhDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNTeW5jKENvbnRleHQgKmNvbnRleHQsIEdM
c3luYyBzeW5jKQorYm9vbCBWYWxpZGF0ZUlzU3luYyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THN5bmMgc3luYykKIHsKICAgICBpZiAoKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nbFN5bmNBUkIpCiAgICAgewpAQCAt
Mzk5OCw3ICs0MDk4LDcgQEAgYm9vbCBWYWxpZGF0ZUlzU3luYyhDb250ZXh0ICpjb250ZXh0LCBH
THN5bmMgc3luYykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVN5
bmMoQ29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMpCitib29sIFZhbGlkYXRlRGVsZXRlU3lu
Yyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYykKIHsKICAgICBpZiAoKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nbFN5bmNBUkIpCiAgICAgewpAQCAtNDAxNSw3ICs0MTE1LDcgQEAgYm9vbCBWYWxpZGF0
ZURlbGV0ZVN5bmMoQ29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGllbnRXYWl0U3luYyhDb250ZXh0ICpjb250ZXh0LCBH
THN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkKK2Jvb2wgVmFs
aWRhdGVDbGllbnRXYWl0U3luYyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYywg
R0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkKIHsKICAgICBpZiAoKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5nbFN5bmNBUkIpCiAgICAgewpAQCAtNDAzOSw3ICs0MTM5LDcgQEAgYm9vbCBWYWxpZGF0ZUNs
aWVudFdhaXRTeW5jKENvbnRleHQgKmNvbnRleHQsIEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZs
YWdzLCBHTHUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdhaXRTeW5jKENv
bnRleHQgKmNvbnRleHQsIEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0
aW1lb3V0KQorYm9vbCBWYWxpZGF0ZVdhaXRTeW5jKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
c3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KQogewogICAgIGlm
ICgoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmdsU3luY0FSQikKICAgICB7CkBAIC00MDY5LDcgKzQxNjksNyBAQCBib29s
IFZhbGlkYXRlV2FpdFN5bmMoQ29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMsIEdMYml0Zmll
bGQgZmxhZ3MsIEdMdWludDY0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRJbnRlZ2VyNjR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFy
YW1zKQorYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgaWYgKChjb250ZXh0
LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2xTeW5jQVJCKQogICAgIHsKQEAgLTQwODcsNyArNDE4Nyw3IEBAIGJvb2wgVmFsaWRhdGVH
ZXRJbnRlZ2VyNjR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFy
YW1zKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNTYW1wbGVyKENvbnRl
eHQgKmNvbnRleHQsIFNhbXBsZXJJRCBzYW1wbGVyKQorYm9vbCBWYWxpZGF0ZUlzU2FtcGxlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBTYW1wbGVySUQgc2FtcGxlcikKIHsKICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTQwOTgsNyArNDE5
OCw3IEBAIGJvb2wgVmFsaWRhdGVJc1NhbXBsZXIoQ29udGV4dCAqY29udGV4dCwgU2FtcGxlcklE
IHNhbXBsZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kU2FtcGxl
cihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgdW5pdCwgU2FtcGxlcklEIHNhbXBsZXIpCitib29s
IFZhbGlkYXRlQmluZFNhbXBsZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHVuaXQs
IFNhbXBsZXJJRCBzYW1wbGVyKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgewpAQCAtNDEyMSw3ICs0MjIxLDcgQEAgYm9vbCBWYWxpZGF0ZUJp
bmRTYW1wbGVyKENvbnRleHQgKmNvbnRleHQsIEdMdWludCB1bml0LCBTYW1wbGVySUQgc2FtcGxl
cikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlz
b3IoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC00MTMyLDcgKzQyMzIsNyBAQCBib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliRGl2aXNvcihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdM
dWludCBkaXZpc29yKQogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRl
eHQsIGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRChDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC00MTU0LDcgKzQyNTQsNyBAQCBib29sIFZhbGlk
YXRlVGV4U3RvcmFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVUZXhTdG9yYWdlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LApAQCAtNDE3NywzMSArNDI3NywzNCBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNE
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
QnVmZmVyUGFyYW1ldGVyaTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZh
bGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBmYWxz
ZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnYoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Ft
cGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpw
YXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckJhc2UoY29u
dGV4dCwgc2FtcGxlciwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U2Ft
cGxlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIFNhbXBsZXJJRCBzYW1wbGVyLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRl
cml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
CiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7
CkBAIC00MjExLDEwICs0MzE0LDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
SWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0U2FtcGxlclBh
cmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBz
YW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBh
cmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKQEAgLTQyMjQsMTIgKzQzMjcsMTUgQEAgYm9vbCBWYWxpZGF0ZUdldFNhbXBs
ZXJQYXJhbWV0ZXJJdWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRl
R2V0U2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIG51bGxwdHIp
OwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwg
U2FtcGxlcklEIHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK2Jvb2wgVmFs
aWRhdGVTYW1wbGVyUGFyYW1ldGVyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHBhcmFtKQogewogICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0
ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCAtMSwgZmFsc2UsICZwYXJhbSk7CiB9CiAK
LWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQpAQCAtNDIzNywxMiArNDM0MywxMiBA
QCBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5h
bWUsIC0xLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
cmkoQ29udGV4dCAqY29udGV4dCwgU2FtcGxlcklEIHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgU2FtcGxlcklEIHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxl
ciwgcG5hbWUsIC0xLCBmYWxzZSwgJnBhcmFtKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0
ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKQpAQCAtNDI1MCw3ICs0MzU2LDcgQEAgYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCAtMSwgdHJ1ZSwgcGFyYW1zKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCkBA
IC00MjYzLDcgKzQzNjksNyBAQCBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdk9FUyhD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNl
KGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCAtMSwgdHJ1ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCkBAIC00
Mjc2LDI4ICs0MzgyLDM0IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNl
KGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCAtMSwgdHJ1ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRy
aWJJaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0
LCBpbmRleCwgcG5hbWUsIG51bGxwdHIsIGZhbHNlLCB0cnVlKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYkl1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1
aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
cGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoY29udGV4
dCwgaW5kZXgsIHBuYW1lLCBudWxscHRyLCBmYWxzZSwgdHJ1ZSk7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRJbnRlcm5hbGZvcm1hdGl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
SW50ZXJuYWxmb3JtYXRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldEludGVybmFsRm9ybWF0aXZCYXNlKGNv
bnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogfQogCi1ib29sIFZh
bGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgY29sb3JOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKQEAgLTQzNDYsNyArNDQ1OCw3IEBAIGJv
b2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0
aW9uRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRp
b25FWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgY29sb3JOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKQEAgLTQzNTQsNyArNDQ2Niw3IEBA
IGJvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVChjb250ZXh0
LCBwcm9ncmFtLCBjb2xvck51bWJlciwgMHUsIG5hbWUpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
RnJhZ0RhdGFJbmRleEVYVChDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwgY29uc3QgY2hhciAqbmFtZSkKK2Jvb2wgVmFsaWRhdGVHZXRGcmFnRGF0YUluZGV4RVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBjb25zdCBjaGFy
ICpuYW1lKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmJsZW5kRnVuY0V4
dGVuZGVkKQogICAgIHsKQEAgLTQzNzksNyArNDQ5MSw3IEBAIGJvb2wgVmFsaWRhdGVHZXRGcmFn
RGF0YUluZGV4RVhUKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBj
b25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0
aXNhbXBsZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJE
TXVsdGlzYW1wbGVBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0
LApAQCAtNDM5NywxMSArNDUwOSwxMSBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlz
YW1wbGVBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdkFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdkFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFt
cykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTXVsdGlzYW1w
bGUpCiAgICAgewpAQCAtNDQxMiwxMSArNDUyNCwxMSBAQCBib29sIFZhbGlkYXRlR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdkFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRl
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBu
dWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXZBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXZBTkdM
RShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTXVsdGlzYW1wbGUpCiAgICAgewpAQCAtNDQyNyw3ICs0
NTM5LDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlckJhc2Uo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0TXVsdGlzYW1wbGVmdkFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
R0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCitib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVm
dkFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWwpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
dHVyZU11bHRpc2FtcGxlKQogICAgIHsKQEAgLTQ0MzgsNyArNDU1Myw3IEBAIGJvb2wgVmFsaWRh
dGVHZXRNdWx0aXNhbXBsZWZ2QU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
THVpbnQgaW5kZXgsCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdkJhc2UoY29u
dGV4dCwgcG5hbWUsIGluZGV4LCB2YWwpOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlTWFza2lB
TkdMRShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNr
KQorYm9vbCBWYWxpZGF0ZVNhbXBsZU1hc2tpQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTXVsdGlzYW1wbGUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmgKaW5kZXgg
MjIwNmRiNDRiMmVkZThiOTNlNDYyZmIzMTM3NGQyODM2NDQ1YzljMS4uZDU0NmE1NzY4NTNiMTQ4
YmRlZTA1MGRhODM1MzNjM2M2MTQzZDFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oCkBAIC0xNCw3ICsxNCw3IEBACiAK
IG5hbWVzcGFjZSBnbAogewotYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2Uo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5jcHAKaW5kZXggYmJmODM2
MTA3YWZjZTk2YzExZjIzNGU4NjU1NDQ5MTQ1OTg5YTVlMy4uNDk2MDZjYmMxNDg2NmNjNmY5NzA4
MGMyNTVlMjM4MjhiOGUzMTk2YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuY3BwCkBAIC0yOTcsMTAgKzI5NywxMCBA
QCBib29sIFZhbGlkYXRlUHJvZ3JhbVJlc291cmNlSW5kZXgoY29uc3QgUHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCwKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHZhbHVlVHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCkKIHsKICAgICAvLyBDaGVjayBmb3IgRVMzMSBwcm9ncmFt
IHVuaWZvcm0gZW50cnkgcG9pbnRzCkBAIC0zMTYsMTAgKzMxNiwxMCBAQCBib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm0oQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtVmFsdWUoY29udGV4dCwgdmFsdWVUeXBlLCB1bmlmb3JtLT50eXBlKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdmFsdWVUeXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UpCiB7CkBAIC0zMzYsNyArMzM2LDcg
QEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKGNvbnRleHQsIHZhbHVlVHlwZSwg
dW5pZm9ybS0+dHlwZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJGb3JtYXRDb21t
b24oQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJlbGF0aXZlT2Zmc2V0KQorYm9vbCBWYWxpZGF0
ZVZlcnRleEF0dHJpYkZvcm1hdENvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
cmVsYXRpdmVPZmZzZXQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8
IEVTXzNfMSkKICAgICB7CkBAIC0zNjQsNyArMzY0LDEwIEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJGb3JtYXRDb21tb24oQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJlbGF0aXZlT2Zmc2V0
KQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFu
aV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29s
ZWFuICpkYXRhKQorYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGJvb2xlYW4gKmRhdGEpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0zODAsMTIgKzM4MywxMiBAQCBib29sIFZh
bGlkYXRlR2V0Qm9vbGVhbmlfdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgsIEdMYm9vbAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqZGF0YSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xlYW4gKmRhdGEpCiB7CiAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC00MTQsNyAr
NDE3LDcgQEAgYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0luZGlyZWN0
QmFzZShDb250ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1vZGUsIGNvbnN0IHZvaWQgKmlu
ZGlyZWN0KQorYm9vbCBWYWxpZGF0ZURyYXdJbmRpcmVjdEJhc2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTQ2Myw3
ICs0NjYsNyBAQCBib29sIFZhbGlkYXRlRHJhd0luZGlyZWN0QmFzZShDb250ZXh0ICpjb250ZXh0
LCBQcmltaXRpdmVNb2RlIG1vZGUsIGNvbnN0IHZvaWQgKgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luZGlyZWN0KENvbnRleHQgKmNvbnRleHQsIFByaW1p
dGl2ZU1vZGUgbW9kZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QpCitib29sIFZhbGlkYXRlRHJhd0Fy
cmF5c0luZGlyZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgbW9kZSwg
Y29uc3Qgdm9pZCAqaW5kaXJlY3QpCiB7CiAgICAgY29uc3QgU3RhdGUgJnN0YXRlICAgICAgICAg
ICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICBUcmFuc2Zvcm1GZWVkYmFj
ayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJh
Y2soKTsKQEAgLTUwOSw3ICs1MTIsNyBAQCBib29sIFZhbGlkYXRlRHJhd0FycmF5c0luZGlyZWN0
KENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgbW9kZSwgY29uc3Qgdm9pZAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5kaXJlY3QoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqaW5kaXJlY3QpCkBAIC01NDYsMTQgKzU0OSwxNyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1l
bnRzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWkoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCkKK2Jvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTFpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHYwKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MWl2KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCAxLCAmdjApOwogfQogCi1ib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0yaShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtMmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxKQogewpAQCAt
NTYxLDkgKzU2Nyw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaXYoY29udGV4dCwgcHJv
Z3JhbSwgbG9jYXRpb24sIDEsIHh5KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
M2koQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHYyKQpAQCAtNTcyLDkgKzU3OCw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTNpKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0zaXYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5eik7CiB9CiAKLWJvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm00aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MiwKQEAgLTU4NCwxNCArNTkwLDE3
IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00aXYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRp
b24sIDEsIHh5encpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoQ29udGV4
dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjApCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwKQogewogICAg
IHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMXVpdihjb250ZXh0LCBwcm9ncmFtLCBsb2Nh
dGlvbiwgMSwgJnYwKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVpKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSkKIHsKQEAgLTU5OSw5ICs2MDgsOSBAQCBi
b29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aXYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24s
IDEsIHh5KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3VpKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjIpCkBAIC02MTAsOSArNjE5LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtM3VpKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0zdWl2KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eXopOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00dWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTR1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MiwKQEAgLTYyMiwx
NCArNjMxLDE3IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpdihjb250ZXh0LCBwcm9n
cmFtLCBsb2NhdGlvbiwgMSwgeHl6dyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTFmKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCB2MCkKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFmKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAp
CiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZnYoY29udGV4dCwgcHJvZ3Jh
bSwgbG9jYXRpb24sIDEsICZ2MCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJm
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxKQogewpAQCAtNjM3LDkgKzY0OSw5IEBA
IGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZnYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24s
IDEsIHh5KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHYyKQpAQCAtNjQ4LDkgKzY2MCw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNm
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZnYo
Y29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5eik7CiB9CiAKLWJvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTRmKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm00Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MiwKQEAgLTY2MCw5ICs2NzIsOSBAQCBi
b29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCAx
LCB4eXp3KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWl2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CkBAIC02NzksMTA4ICs2
OTEsMTA4IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpdihDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0xaXZWYWx1ZShjb250ZXh0LCB1bmlmb3JtLT50
eXBlLCBjb3VudCwgdmFsdWUpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaXYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMiwgcHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
M2l2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzMs
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTRpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVl
KQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdMX0lOVF9W
RUM0LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0xdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnZhbHVlKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRl
eHQsIEdMX1VOU0lHTkVEX0lOVCwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtMnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybShjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRfVkVDMiwgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3VpdihDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3Vpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRf
VkVDMywgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtNHVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250
ZXh0LCBHTF9VTlNJR05FRF9JTlRfVkVDNCwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWZ2KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybShjb250ZXh0LCBHTF9GTE9BVCwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmZ2KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9GTE9BVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZnYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIHJldHVybiBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzMsIHByb2dyYW0sIGxv
Y2F0aW9uLCBjb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmdihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAg
cmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDNCwgcHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4MmZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzg5LDkgKzgw
MSw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTgwMCw5ICs4MTIsOSBAQCBib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzZnYoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXg0ZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybU1hdHJpeDRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBA
IC04MTEsOSArODIzLDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTgyMiw5
ICs4MzQsOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
cG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC04MzMsOSArODQ1
LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2Up
OwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtODQ0LDkgKzg1Niw5IEBA
IGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTg1NSw5ICs4NjcsOSBAQCBib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC04NjYsOSArODc4LDkgQEAgYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtODc3LDExICs4ODksMTEgQEAgYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUdldFRleExldmVsUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC04OTIsMjMgKzkwNCwyMyBA
QCBib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZl
bFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewog
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewpAQCAt
OTE5LDE5ICs5MzEsMTkgQEAgYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXYoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlckJh
c2UoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0aXNhbXBs
ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC05NDksNyArOTYxLDcgQEAgYm9vbCBWYWxp
ZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC05NjksNyArOTgxLDEwIEBAIGJvb2wg
VmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVChDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnYoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZhbCkK
K2Jvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWwpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC05ODAsMTggKzk5NSwxOCBAQCBib29sIFZhbGlk
YXRlR2V0TXVsdGlzYW1wbGVmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWlu
dCBpbmRleCwgR0xmbAogICAgIHJldHVybiBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZCYXNlKGNv
bnRleHQsIHBuYW1lLCBpbmRleCwgdmFsKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE11bHRp
c2FtcGxlZnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWwp
CiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVy
UGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCBFU18zXzEpCiAgICAgewpAQCAtMTA3Myw3ICsxMDg4LDEwIEBAIGJvb2wgVmFsaWRhdGVG
cmFtZWJ1ZmZlclBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTExMTcsMTggKzExMzUsMTggQEAgYm9vbCBW
YWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdl
dEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRF
RCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNv
dXJjZUluZGV4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291
cmNlSW5kZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCkBAIC0xMTU0LDcg
KzExNzIsNyBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhC
dWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kVmVydGV4QnVmZmVyKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYmluZGluZ0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQg
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LApA
QCAtMTIwMiw3ICsxMjIwLDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXIoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEJp
bmRpbmdEaXZpc29yKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBiaW5kaW5nSW5kZXgsIEdMdWlu
dCBkaXZpc29yKQorYm9vbCBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBiaW5kaW5nSW5kZXgsIEdMdWludCBkaXZpc29yKQogewogICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewpAQCAtMTIy
OCw3ICsxMjQ2LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBiaW5kaW5nSW5kZXgsIEdMdWludAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlLApAQCAtMTI0Myw3ICsxMjYxLDcg
QEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1hdChDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiBWYWxpZGF0ZUZsb2F0VmVydGV4Rm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBz
aXplLCB0eXBlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJRm9ybWF0KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0
cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlLApA
QCAtMTI1Nyw3ICsxMjc1LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVJbnRlZ2VyVmVydGV4Rm9ybWF0KGNv
bnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkJpbmRpbmcoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGF0dHJpYkluZGV4LCBHTHVp
bnQgYmluZGluZ0luZGV4KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkJpbmRpbmcoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGF0dHJpYkluZGV4LCBHTHVpbnQgYmluZGluZ0luZGV4
KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAg
ewpAQCAtMTI4OSwxMyArMTMwNywxMyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGlu
ZyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYXR0cmliSW5kZXgsIEdMdWludCBiaQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZU5hbWUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNo
YXIgKm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVT
XzNfMSkKICAgICB7CkBAIC0xMzMwLDcgKzEzNDgsNyBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3Jh
bVJlc291cmNlTmFtZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlRGlzcGF0Y2hDb21wdXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBudW1Hcm91cHNYLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG51bUdyb3Vwc1opCkBAIC0xMzQ0LDcgKzEzNjIsNyBAQCBib29sIFZhbGlkYXRlRGlz
cGF0Y2hDb21wdXRlKENvbnRleHQgKmNvbnRleHQsCiAgICAgY29uc3QgU3RhdGUgJnN0YXRlID0g
Y29udGV4dC0+Z2V0U3RhdGUoKTsKICAgICBQcm9ncmFtICpwcm9ncmFtICAgPSBzdGF0ZS5nZXRM
aW5rZWRQcm9ncmFtKGNvbnRleHQpOwogCi0gICAgaWYgKHByb2dyYW0gPT0gbnVsbHB0ciB8fCAh
cHJvZ3JhbS0+aGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkpCisgICAg
aWYgKHByb2dyYW0gPT0gbnVsbHB0ciB8fCAhcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmhhc0xp
bmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1dGUpKQogICAgIHsKICAgICAgICAgY29u
dGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrTm9BY3RpdmVQcm9n
cmFtV2l0aENvbXB1dGVTaGFkZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzcwLDcg
KzEzODgsNyBAQCBib29sIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGVJbmRp
cmVjdChDb250ZXh0ICpjb250ZXh0LCBHTGludHB0ciBpbmRpcmVjdCkKK2Jvb2wgVmFsaWRhdGVE
aXNwYXRjaENvbXB1dGVJbmRpcmVjdChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludHB0ciBp
bmRpcmVjdCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18x
KQogICAgIHsKQEAgLTEzODEsNyArMTM5OSw3IEBAIGJvb2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1
dGVJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LCBHTGludHB0ciBpbmRpcmVjdCkKICAgICBjb25z
dCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIFByb2dyYW0gKnByb2dy
YW0gICA9IHN0YXRlLmdldExpbmtlZFByb2dyYW0oY29udGV4dCk7CiAKLSAgICBpZiAocHJvZ3Jh
bSA9PSBudWxscHRyIHx8ICFwcm9ncmFtLT5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBl
OjpDb21wdXRlKSkKKyAgICBpZiAocHJvZ3JhbSA9PSBudWxscHRyIHx8ICFwcm9ncmFtLT5nZXRF
eGVjdXRhYmxlKCkuaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkpCiAg
ICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIGtOb0FjdGl2ZVByb2dyYW1XaXRoQ29tcHV0ZVNoYWRlcik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE0MTgsNyArMTQzNiw3IEBAIGJvb2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGVJ
bmRpcmVjdChDb250ZXh0ICpjb250ZXh0LCBHTGludHB0ciBpbmRpcmVjdCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVCaW5kSW1hZ2VUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCkBAIC0xNDkzLDcgKzE1MTEsNyBAQCBib29sIFZhbGlk
YXRlQmluZEltYWdlVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24oQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKQEAgLTE1MjQsMTUgKzE1NDIsMTUg
QEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3Vy
Y2VpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZWl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgcHJvcENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZW51bSAqcHJvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1z
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAg
ewpAQCAtMTU4MSwxMSArMTU5OSwxMSBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNl
aXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFByb2dyYW1JbnRlcmZhY2VpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dFByb2dyYW1JbnRlcmZhY2Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTE2NDEsMTkgKzE2NTks
MTkgQEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1JbnRlcmZhY2VpdihDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUludGVyZmFj
ZWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFt
SW50ZXJmYWNlaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotc3RhdGljIGJvb2wgVmFsaWRhdGVHZW5PckRlbGV0ZUVTMzEoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbikKK3N0YXRpYyBib29sIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMxKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IG4pCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0xNjY0LDE3ICsxNjgyLDIxIEBAIHN0YXRpYyBib29s
IFZhbGlkYXRlR2VuT3JEZWxldGVFUzMxKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pCiAgICAg
cmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZW5Qcm9ncmFtUGlwZWxpbmVzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIFByb2dyYW1Q
aXBlbGluZUlEICpwaXBlbGluZXMpCitib29sIFZhbGlkYXRlR2VuUHJvZ3JhbVBpcGVsaW5lcyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1Q
aXBlbGluZUlEICpwaXBlbGluZXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVF
UzMxKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbVBpcGVsaW5l
cyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqcGlw
ZWxpbmVzKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVByb2dyYW1QaXBlbGluZXMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtUGlwZWxp
bmVJRCAqcGlwZWxpbmVzKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlRVMzMShj
b250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRQcm9ncmFtUGlwZWxpbmUoQ29udGV4
dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUpCitib29sIFZhbGlkYXRlQmlu
ZFByb2dyYW1QaXBlbGluZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmVJ
RCBwaXBlbGluZSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNf
M18xKQogICAgIHsKQEAgLTE2OTEsNyArMTcxMyw3IEBAIGJvb2wgVmFsaWRhdGVCaW5kUHJvZ3Jh
bVBpcGVsaW5lKENvbnRleHQgKmNvbnRleHQsIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNQcm9ncmFtUGlwZWxpbmUoQ29u
dGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUpCitib29sIFZhbGlkYXRl
SXNQcm9ncmFtUGlwZWxpbmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5l
SUQgcGlwZWxpbmUpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVT
XzNfMSkKICAgICB7CkBAIC0xNzAyLDcgKzE3MjQsNyBAQCBib29sIFZhbGlkYXRlSXNQcm9ncmFt
UGlwZWxpbmUoQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVc2VQcm9ncmFtU3RhZ2VzKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVXNlUHJvZ3JhbVN0YWdlcyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbVBpcGVsaW5l
SUQgcGlwZWxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIHN0
YWdlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtKQpAQCAtMTcxMSw3ICsxNzMzLDcgQEAgYm9vbCBWYWxpZGF0ZVVzZVByb2dyYW1TdGFnZXMo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVB
Y3RpdmVTaGFkZXJQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQWN0aXZl
U2hhZGVyUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKIHsKQEAgLTE3MTks
NyArMTc0MSw3IEBAIGJvb2wgVmFsaWRhdGVBY3RpdmVTaGFkZXJQcm9ncmFtKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlU2hhZGVy
UHJvZ3JhbXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXJQcm9n
cmFtdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqY29uc3QgKnN0cmluZ3MpCkBAIC0xNzI4LDMyICsxNzUwLDMyIEBAIGJvb2wgVmFs
aWRhdGVDcmVhdGVTaGFkZXJQcm9ncmFtdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1QaXBlbGluZWl2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5laXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtUGlwZWxp
bmVJRCBwaXBlbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQog
ewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWYWxpZGF0ZVByb2dyYW1QaXBlbGluZShDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlw
ZWxpbmVJRCBwaXBlbGluZSkKK2Jvb2wgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW1QaXBlbGluZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSkKIHsKICAg
ICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUdldFByb2dyYW1QaXBlbGluZUluZm9Mb2coY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVs
aW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZv
TG9nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xjaGFyICppbmZvTG9nKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVNZW1vcnlCYXJyaWVyKENvbnRleHQgKmNvbnRleHQsIEdM
Yml0ZmllbGQgYmFycmllcnMpCitib29sIFZhbGlkYXRlTWVtb3J5QmFycmllcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIGJhcnJpZXJzKQogewogICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewpAQCAtMTc4MSw3ICsxODAzLDcgQEAg
Ym9vbCBWYWxpZGF0ZU1lbW9yeUJhcnJpZXIoQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBi
YXJyaWVycykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1lbW9yeUJhcnJp
ZXJCeVJlZ2lvbihDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIGJhcnJpZXJzKQorYm9vbCBW
YWxpZGF0ZU1lbW9yeUJhcnJpZXJCeVJlZ2lvbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJp
dGZpZWxkIGJhcnJpZXJzKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCBFU18zXzEpCiAgICAgewpAQCAtMTgwNyw3ICsxODI5LDcgQEAgYm9vbCBWYWxpZGF0ZU1lbW9y
eUJhcnJpZXJCeVJlZ2lvbihDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIGJhcnJpZXJzKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlTWFza2koQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKK2Jvb2wgVmFsaWRh
dGVTYW1wbGVNYXNraShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFza051bWJlciwg
R0xiaXRmaWVsZCBtYXNrKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCBFU18zXzEpCiAgICAgewpAQCAtMTgxOCw3ICsxODQwLDcgQEAgYm9vbCBWYWxpZGF0ZVNhbXBs
ZU1hc2tpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1h
c2spCiAgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlTWFza2lCYXNlKGNvbnRleHQsIG1hc2tOdW1i
ZXIsIG1hc2spOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlRVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlRVhUKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4
dHVyZSwKQEAgLTE4MzIsNyArMTg1NCw3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1
cmVFWFQoQ29udGV4dCAqY29udGV4dCwKIAogICAgIGlmICh0ZXh0dXJlLnZhbHVlICE9IDApCiAg
ICAgewotICAgICAgICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0
dXJlKTsKKyAgICAgICAgVGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJl
KTsKIAogICAgICAgICAvLyBbRVhUX2dlb21ldHJ5X3NoYWRlcl0gU2VjdGlvbiA5LjIuOCAiQXR0
YWNoaW5nIFRleHR1cmUgSW1hZ2VzIHRvIGEgRnJhbWVidWZmZXIiCiAgICAgICAgIC8vIEFuIElO
VkFMSURfVkFMVUUgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDx0ZXh0dXJlPiBpcyBub3QgdGhlIG5h
bWUgb2YgYSB0ZXh0dXJlIG9iamVjdC4KQEAgLTE4NjYsNyArMTg4OCw3IEBAIGJvb2wgVmFsaWRh
dGVGcmFtZWJ1ZmZlclRleHR1cmVFWFQoQ29udGV4dCAqY29udGV4dCwKIH0KIAogLy8gR0xfT0VT
X3RleHR1cmVfc3RvcmFnZV9tdWx0aXNhbXBsZV8yZF9hcnJheQotYm9vbCBWYWxpZGF0ZVRleFN0
b3JhZ2UzRE11bHRpc2FtcGxlT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4
U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaXplZGludGVybmFs
Zm9ybWF0LApAQCAtMTg5Nyw3ICsxOTE5LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzRE11
bHRpc2FtcGxlT0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlaWdodCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTWVt
M0RNdWx0aXNhbXBsZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3Jh
Z2VNZW0zRE11bHRpc2FtcGxlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCkBAIC0xOTE4LDcgKzE5NDAsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1l
bTNETXVsdGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRl
eEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVy
ZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKm5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTMzFfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxX2F1dG9nZW4uaAppbmRleCBiNzQzMmMwMmU1
MjBiYzE4YWI1NTBkM2FjYTUyNDE3ZDQxODZhYTZlLi4wNTYzNDI4NTAyZGNmMTdkOTY2MzBjYjVi
NDZlYjJmOGVjNDU5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTMzFfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMV9hdXRvZ2VuLmgKQEAgLTE3LDEwICsx
NywxMCBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRhdGVB
Y3RpdmVTaGFkZXJQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQWN0aXZl
U2hhZGVyUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7
Ci1ib29sIFZhbGlkYXRlQmluZEltYWdlVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUJpbmRJbWFnZVRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bml0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKQEAgLTI4LDI5NCArMjgsMzA3IEBAIGJvb2wgVmFsaWRhdGVC
aW5kSW1hZ2VUZXh0dXJlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBhY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0KTsK
LWJvb2wgVmFsaWRhdGVCaW5kUHJvZ3JhbVBpcGVsaW5lKENvbnRleHQgKmNvbnRleHQsIFByb2dy
YW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QnVm
ZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZFByb2dyYW1QaXBlbGluZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCk7
Citib29sIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRpbmdpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKTsKLWJvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXJQ
cm9ncmFtdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlclByb2dy
YW12KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpjb25zdCAqc3RyaW5ncyk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3Jh
bVBpcGVsaW5lcyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlbGV0ZVByb2dyYW1Q
aXBlbGluZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXNQYWNrZWQpOwotYm9vbCBWYWxp
ZGF0ZURpc3BhdGNoQ29tcHV0ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURpc3Bh
dGNoQ29tcHV0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbnVtX2dyb3Vwc194LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbnVtX2dyb3Vwc195LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbnVtX2dyb3Vwc196KTsKLWJvb2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGVJbmRpcmVjdChD
b250ZXh0ICpjb250ZXh0LCBHTGludHB0ciBpbmRpcmVjdCk7Ci1ib29sIFZhbGlkYXRlRHJhd0Fy
cmF5c0luZGlyZWN0KENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwg
Y29uc3Qgdm9pZCAqaW5kaXJlY3QpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luZGlyZWN0
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3Qo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnRwdHIgaW5kaXJlY3QpOworYm9vbCBWYWxpZGF0
ZURyYXdBcnJheXNJbmRpcmVjdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlyZWN0KTsKK2Jvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3Qp
OwotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVH
ZW5Qcm9ncmFtUGlwZWxpbmVzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgUHJvZ3JhbVBp
cGVsaW5lSUQgKnBpcGVsaW5lc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2V0Qm9vbGVhbmlfdihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAq
ZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFs
aWRhdGVHZW5Qcm9ncmFtUGlwZWxpbmVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFja2VkKTsK
K2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xib29sZWFuICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKTsKLWJv
b2wgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwor
Ym9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbCk7Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUludGVyZmFj
ZWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUGlw
ZWxpbmVJbmZvTG9nKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1Q
aXBlbGluZUluZm9Mb2coY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvTG9nKTsK
LWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVpdihDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpp
bmZvTG9nKTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1QaXBl
bGluZUlEIHBpcGVsaW5lUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUluZGV4KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFt
UmVzb3VyY2VMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dy
YW1SZXNvdXJjZUxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlaXYoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlaXYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBwcm9wQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xlbnVtICpwcm9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7
Citib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsK
K2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29s
IFZhbGlkYXRlSXNQcm9ncmFtUGlwZWxpbmUoQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVs
aW5lSUQgcGlwZWxpbmVQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZU1lbW9yeUJhcnJpZXIoQ29udGV4
dCAqY29udGV4dCwgR0xiaXRmaWVsZCBiYXJyaWVycyk7Ci1ib29sIFZhbGlkYXRlTWVtb3J5QmFy
cmllckJ5UmVnaW9uKENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpOwotYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUlzUHJvZ3JhbVBpcGVsaW5lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByb2dyYW1QaXBl
bGluZUlEIHBpcGVsaW5lUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVNZW1vcnlCYXJyaWVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpOworYm9vbCBWYWxpZGF0ZU1l
bW9yeUJhcnJpZXJCeVJlZ2lvbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIGJh
cnJpZXJzKTsKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFmKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCk7Ci1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTFmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTFpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0x
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHYwKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWl2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKLWJvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0xdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0x
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxKTsKLWJvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MmkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
djAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSk7Ci1ib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0yaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0y
dWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxKTsKLWJv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtM2YoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTNmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyKTsKLWJvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtM2koQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNp
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTNpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
M2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3VpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHYyKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTN1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHYyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2Myk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZnYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm00aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYzKTsKLWJvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTRpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtNGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCB2Myk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyeDNmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4MngzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4NGZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybU1hdHJpeDN4MmZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzeDJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0
cml4M3g0ZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1h
dHJpeDN4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDNmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4NHgzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraShDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKTsKLWJvb2wgVmFsaWRhdGVUZXhT
dG9yYWdlMkRNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBs
ZU1hc2tpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZp
ZWxkIG1hc2spOworYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwotYm9vbCBWYWxpZGF0ZVVzZVByb2dyYW1T
dGFnZXMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVVc2VQcm9ncmFtU3RhZ2VzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9n
cmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYml0ZmllbGQgc3RhZ2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3Jh
bVBpcGVsaW5lKENvbnRleHQgKmNvbnRleHQsIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFj
a2VkKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJCaW5kaW5nKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBhdHRyaWJpbmRleCwgR0x1aW50IGJpbmRpbmdpbmRleCk7Ci1ib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmFsaWRh
dGVQcm9ncmFtUGlwZWxpbmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5l
SUQgcGlwZWxpbmVQYWNrZWQpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkJpbmRpbmcoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGF0dHJpYmluZGV4LCBHTHVpbnQgYmluZGluZ2lu
ZGV4KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJGb3JtYXQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVsYXRpdmVvZmZzZXQpOwotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlb2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhCaW5kaW5nRGl2aXNvcihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYmluZGluZ2luZGV4LCBH
THVpbnQgZGl2aXNvcik7Citib29sIFZhbGlkYXRlVmVydGV4QmluZGluZ0Rpdmlzb3IoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGJpbmRpbmdpbmRleCwgR0x1aW50IGRpdmlzb3IpOwog
fSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9FUzMx
X0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uRVMzMi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTMzIuY3BwCmluZGV4IDcwNDViZDY4NjUzYjQ4ZTg2ZGE0ODdlMzM0
YjQ2YTBjYjBmZjE2YmUuLjljNDE1NGViMTdjOTMzMzkxZDdlMGU3ZmVhZDEyMDlkY2Y1OTY4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRVMzMi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FUzMyLmNwcApAQCAtMjUsNDcgKzI1LDEwNCBAQCBuYW1lc3BhY2UgZ2wKIHsKIHVz
aW5nIG5hbWVzcGFjZSBlcnI7CiAKLWJvb2wgVmFsaWRhdGVCbGVuZEJhcnJpZXIoQ29udGV4dCAq
Y29udGV4dCkKK2Jvb2wgVmFsaWRhdGVCbGVuZEJhcnJpZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdM
ZW51bSBtb2RlQWxwaGEpCitib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBt
b2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVB
bHBoYSkKIHsKKyAgICBpZiAoYnVmID49IHN0YXRpY19jYXN0PEdMdWludD4oY29udGV4dC0+Z2V0
Q2FwcygpLm1heERyYXdCdWZmZXJzKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrRXhjZWVkc01heERyYXdCdWZmZXJzKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVCbGVuZEVxdWF0aW9u
U2VwYXJhdGUoY29udGV4dCwgbW9kZVJHQiwgbW9kZUFscGhhKSkKKyAgICB7CisgICAgICAgIC8v
IGVycm9yIGFscmVhZHkgZ2VuZXJhdGVkCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pKENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKQorYm9vbCBWYWxpZGF0ZUJsZW5k
RXF1YXRpb25pKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBtb2Rl
KQogeworICAgIGlmIChidWYgPj0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBz
KCkubWF4RHJhd0J1ZmZlcnMpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsIGtFeGNlZWRzTWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZUJsZW5kRXF1YXRpb24oY29u
dGV4dCwgbW9kZSkpCisgICAgeworICAgICAgICAvLyBlcnJvciBhbHJlYWR5IGdlbmVyYXRlZAor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRzdFJHQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHNyY0FscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxw
aGEpCiB7CisgICAgaWYgKGJ1ZiA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbnRleHQtPmdldENh
cHMoKS5tYXhEcmF3QnVmZmVycykpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0V4Y2VlZHNNYXhEcmF3QnVmZmVycyk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlQmxlbmRGdW5jU2VwYXJh
dGUoY29udGV4dCwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkpCisgICAgewor
ICAgICAgICAvLyBlcnJvciBhbHJlYWR5IGdlbmVyYXRlZAorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGVuZEZ1bmNp
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCiti
b29sIFZhbGlkYXRlQmxlbmRGdW5jaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVm
LCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQogeworICAgIGlmIChidWYgPj0gc3RhdGljX2Nhc3Q8
R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtFeGNlZWRzTWF4
RHJhd0J1ZmZlcnMpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFW
YWxpZGF0ZUJsZW5kRnVuYyhjb250ZXh0LCBzcmMsIGRzdCkpCisgICAgeworICAgICAgICAvLyBl
cnJvciBhbHJlYWR5IGdlbmVyYXRlZAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvck1hc2tpKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlQ29sb3JNYXNraShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZywK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIGEpCiB7CisgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PEdMdWlu
dD4oY29udGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW5kZXhFeGNlZWRzTWF4
RHJhd0J1ZmZlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvcHlJbWFnZVN1YkRhdGEoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVDb3B5SW1hZ2VTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3JjTmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNUYXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzcmNMZXZlbCwKQEAgLTg1LDEyICsxNDIsMTQgQEAgYm9vbCBW
YWxpZGF0ZUNvcHlJbWFnZVN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNhbGxiYWNrKENvbnRleHQgKmNvbnRl
eHQsIEdMREVCVUdQUk9DIGNhbGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYW0pCitib29sIFZh
bGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTERFQlVHUFJPQyBjYWxsYmFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LApAQCAtMTAx
LDcgKzE2MCw3IEBAIGJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJ
bnNlcnQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKQEAgLTExMiwx
MiArMTcxLDI1IEBAIGJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURpc2FibGVpKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK2Jvb2wgVmFsaWRhdGVE
aXNhYmxlaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpCiB7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0JMRU5E
OgorICAgICAgICAgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PEdMdWludD4oY29udGV4dC0+
Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0luZGV4RXhjZWVk
c01heERyYXdCdWZmZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Y29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0VudW1Ob3RTdXBwb3J0
ZWQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2Rl
IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0
eXBlLApAQCAtMTMzLDcgKzIwNSw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVy
dGV4KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0VsZW1lbnRzQ29t
bW9uKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAxKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtMTUwLDcgKzIyMiw3IEBA
IGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZShjb250
ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBlbmQsCkBAIC0xODIsMjYgKzI1NCwyOCBAQCBib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIC8vIE5vdGUgdGhhdCByZXNvbHZpbmcgdGhlIGluZGV4IHJhbmdlIGlzIGEg
Yml0IHNsb3cuIFdlIHNob3VsZCBwcm9iYWJseSBvcHRpbWl6ZSB0aGlzLgotICAgIEluZGV4UmFu
Z2UgaW5kZXhSYW5nZTsKLSAgICBBTkdMRV9WQUxJREFUSU9OX1RSWShjb250ZXh0LT5nZXRTdGF0
ZSgpLmdldFZlcnRleEFycmF5KCktPmdldEluZGV4UmFuZ2UoY29udGV4dCwgdHlwZSwgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsICZpbmRleFJhbmdlKSk7Ci0KLSAgICBpZiAo
aW5kZXhSYW5nZS5lbmQgPiBlbmQgfHwgaW5kZXhSYW5nZS5zdGFydCA8IHN0YXJ0KQotICAgIHsK
LSAgICAgICAgLy8gR0wgc3BlYyBzYXlzIHRoYXQgYmVoYXZpb3IgaW4gdGhpcyBjYXNlIGlzIHVu
ZGVmaW5lZCAtIGdlbmVyYXRpbmcgYW4gZXJyb3IgaXMgZmluZS4KLSAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXhjZWVkc0VsZW1lbnRSYW5n
ZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVFbmFibGVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCkKK2Jvb2wgVmFsaWRhdGVFbmFibGVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfQkxFTkQ6CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gc3Rh
dGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9J
TlZBTElEX1ZBTFVFLCBrSW5kZXhFeGNlZWRzTWF4RHJhd0J1ZmZlcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCBrRW51bU5vdFN1cHBvcnRlZCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJU
ZXh0dXJlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBh
dHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4
dHVyZSwKQEAgLTIxMCw0NCArMjg0LDQ0IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1
cmUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldERlYnVnTWVzc2FnZUxvZyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldERl
YnVnTWVzc2FnZUxvZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICpzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5
cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0aWVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xlbnVtICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZW51bSAqc2V2ZXJpdGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlTG9nKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1cyhDb250ZXh0ICpjb250ZXh0KQor
Ym9vbCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXMoY29uc3QgQ29udGV4dCAqY29udGV4
dCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE9iamVjdExhYmVs
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWwoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaWRlbnRp
ZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2hhciAqbGFiZWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJl
bChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bmFtZSwgdm9pZCAqKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRQb2ludGVydihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQgKmNvbnN0ICpwYXJhbXMpCiB7CiAgICAg
VmVyc2lvbiBjbGllbnRWZXJzaW9uID0gY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpOwogCkBA
IC0yODUsNzYgKzM1OSw4OSBAQCBib29sIFZhbGlkYXRlR2V0UG9pbnRlcnYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQogICAgIH0KIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZXRTYW1wbGVyUGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFt
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBh
cmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFt
ZXRlcklpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFt
ZXRlckl1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJ
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
blVuaWZvcm1mdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0blVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0blVuaWZvcm11aXYoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc0VuYWJs
ZWRpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK2Jvb2wg
VmFsaWRhdGVJc0VuYWJsZWRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCkKIHsKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfQkxFTkQ6CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8R0x1aW50
Pihjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBr
SW5kZXhFeGNlZWRzTWF4RHJhd0J1ZmZlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrRW51
bU5vdFN1cHBvcnRlZCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWluU2FtcGxlU2hhZGluZyhDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IHZhbHVlKQorYm9vbCBWYWxpZGF0ZU1pblNhbXBsZVNoYWRpbmcoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU9iamVjdExhYmVsKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlT2JqZWN0TGFiZWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKQEAg
LTM2MywyMiArNDUwLDI1IEBAIGJvb2wgVmFsaWRhdGVPYmplY3RMYWJlbChDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlT2JqZWN0UHRyTGFiZWwo
Q29udGV4dCAqY29udGV4dCwgY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3Qg
R0xjaGFyICpsYWJlbCkKK2Jvb2wgVmFsaWRhdGVPYmplY3RQdHJMYWJlbChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlUGF0Y2hQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCitib29sIFZhbGlkYXRlUGF0Y2hQYXJhbWV0ZXJpKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKENvbnRleHQgKmNv
bnRleHQpCitib29sIFZhbGlkYXRlUG9wRGVidWdHcm91cChjb25zdCBDb250ZXh0ICpjb250ZXh0
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJpbWl0aXZlQm91bmRp
bmdCb3goQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcmltaXRpdmVCb3VuZGluZ0Jv
eChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgbWluWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IG1pblksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5a
LApAQCAtMzkxLDcgKzQ4MSw3IEBAIGJvb2wgVmFsaWRhdGVQcmltaXRpdmVCb3VuZGluZ0JveChD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHVz
aERlYnVnR3JvdXAoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91
cChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLApAQCAtNDAwLDcgKzQ5MCw3
IEBAIGJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91cChDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVhZG5QaXhlbHMoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVscyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtNDA4
LDEyICs0OTgsMTIgQEAgYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKQpAQCAtNDIxLDcgKzUxMSw3
IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Ft
cGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
cGFyYW0pCkBAIC00MjksMTIgKzUxOSwxNSBAQCBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
ckl1aXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVRleEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEJ1ZmZlcklEIGJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVUZXhCdWZmZXIoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVUZXhCdWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVRleEJ1ZmZlclJhbmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVySUQgYnVmZmVyLApAQCAtNDQ0LDcgKzUzNyw3IEBAIGJvb2wgVmFsaWRhdGVUZXhCdWZm
ZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqcGFyYW1zKQpAQCAtNDUyLDcgKzU0NSw3IEBAIGJvb2wgVmFsaWRhdGVUZXhQYXJh
bWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlckl1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJJdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnBhcmFtcykKQEAgLTQ2MCw3ICs1NTMsNyBAQCBib29sIFZhbGlkYXRl
VGV4UGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGUoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FUzMyX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMl9hdXRvZ2VuLmgKaW5kZXggZTFiNDliMDc0ZTA0
MzczMTJhMTVmMTNmOTE0MzE2ZjJhZWQwMmUwOC4uYjYyMWIzODY3NGMwNWEzNTljNmYyN2M4YjQ2
MzJmNjY2OTczYzI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FUzMyX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzJfYXV0b2dlbi5oCkBAIC0xNywyMyArMTcs
MjYgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRlQmxl
bmRCYXJyaWVyKENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdM
ZW51bSBtb2RlQWxwaGEpOwotYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKTsKLWJvb2wgVmFsaWRhdGVCbGVuZEZ1bmNT
ZXBhcmF0ZWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGVuZEJhcnJpZXIoY29u
c3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRl
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGVBbHBoYSk7Citib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZUJsZW5kRnVu
Y1NlcGFyYXRlaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gc3JjUkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0
UkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSk7Ci1ib29sIFZh
bGlkYXRlQmxlbmRGdW5jaShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gc3Jj
LCBHTGVudW0gZHN0KTsKLWJvb2wgVmFsaWRhdGVDb2xvck1hc2tpKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQmxlbmRGdW5jaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
YnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KTsKK2Jvb2wgVmFsaWRhdGVDb2xvck1hc2tpKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBnLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSk7Ci1ib29sIFZhbGlkYXRl
Q29weUltYWdlU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlJbWFn
ZVN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBzcmNOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHNyY1RhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY0xl
dmVsLApAQCAtNDksMzYgKzUyLDM4IEBAIGJvb2wgVmFsaWRhdGVDb3B5SW1hZ2VTdWJEYXRhKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNy
Y1dpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzcmNIZWlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNyY0RlcHRoKTsKLWJvb2wg
VmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFjayhDb250ZXh0ICpjb250ZXh0LCBHTERFQlVHUFJP
QyBjYWxsYmFjaywgY29uc3Qgdm9pZCAqdXNlclBhcmFtKTsKLWJvb2wgVmFsaWRhdGVEZWJ1Z01l
c3NhZ2VDb250cm9sKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVidWdNZXNzYWdl
Q2FsbGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTERFQlVHUFJPQyBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pOworYm9vbCBWYWxpZGF0ZURlYnVnTWVz
c2FnZUNvbnRyb2woY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBzZXZlcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlkcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBlbmFibGVkKTsKLWJv
b2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNl
dmVyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpOwotYm9v
bCBWYWxpZGF0ZURpc2FibGVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCk7Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZURpc2FibGVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Citib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFz
ZVZlcnRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KTsKLWJvb2wgVmFsaWRhdGVE
cmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBiYXNldmVydGV4KTsKLWJvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0
ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCkBAIC04Niw3NiArOTEsNzkgQEAgYm9v
bCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBl
IHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGJhc2V2ZXJ0ZXgpOwotYm9vbCBWYWxpZGF0ZUVuYWJsZWkoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1
ZmZlclRleHR1cmUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFbmFibGVpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Citib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwpOwotYm9vbCBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxv
ZyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzb3VyY2VzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtICpzZXZlcml0aWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGNoYXIgKm1lc3NhZ2VMb2cpOwotYm9vbCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXMo
Q29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWwoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpz
b3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnR5
cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlkcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpzZXZlcml0aWVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1lc3NhZ2VM
b2cpOworYm9vbCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCk7Citib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWwoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaWRlbnRpZmllciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFi
ZWwpOwotYm9vbCBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpOworYm9vbCBWYWxpZGF0
ZUdldE9iamVjdFB0ckxhYmVsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFy
ICpsYWJlbCk7Ci1ib29sIFZhbGlkYXRlR2V0UG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVySWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbGFiZWwpOworYm9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgdm9pZCAqY29uc3QgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwotYm9v
bCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlckl1aXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVy
SXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnYoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2KENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybXVp
dihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0blVuaWZvcm11aXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVJc0Vu
YWJsZWRpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Ci1i
b29sIFZhbGlkYXRlTWluU2FtcGxlU2hhZGluZyhDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVPYmplY3RMYWJlbChDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVJc0VuYWJsZWRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCk7Citib29sIFZhbGlkYXRlTWluU2FtcGxlU2hhZGluZyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IHZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVPYmplY3RMYWJlbChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlm
aWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbGFiZWwpOwotYm9vbCBWYWxpZGF0ZU9iamVjdFB0ckxhYmVsKENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAq
bGFiZWwpOwotYm9vbCBWYWxpZGF0ZVBhdGNoUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKENv
bnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZVByaW1pdGl2ZUJvdW5kaW5nQm94KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlT2JqZWN0UHRyTGFiZWwoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCk7Citib29sIFZhbGlkYXRlUGF0Y2hQ
YXJhbWV0ZXJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFs
dWUpOworYm9vbCBWYWxpZGF0ZVBvcERlYnVnR3JvdXAoY29uc3QgQ29udGV4dCAqY29udGV4dCk7
Citib29sIFZhbGlkYXRlUHJpbWl0aXZlQm91bmRpbmdCb3goY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1pblgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5ZLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWluWiwKQEAgLTE2NCwxMiArMTcyLDEyIEBA
IGJvb2wgVmFsaWRhdGVQcmltaXRpdmVCb3VuZGluZ0JveChDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWF4WSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1heFosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBtYXhXKTsKLWJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91
cChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICptZXNzYWdlKTsKLWJvb2wgVmFsaWRhdGVSZWFkblBpeGVscyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCkBAIC0xNzcsMzQgKzE4NSwzNCBAQCBib29sIFZhbGlkYXRlUmVhZG5QaXhlbHMoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRh
KTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Citib29sIFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlcklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJJdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFt
ZXRlckl1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4QnVmZmVyKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4QnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVUZXhCdWZmZXJSYW5nZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEJ1ZmZlclJhbmdlKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpcHRyIHNpemUpOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRl
eFBhcmFtZXRlckl1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0RNdWx0aXNh
bXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2Ft
cGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTM19hdXRvZ2VuLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTM19hdXRvZ2Vu
LmgKaW5kZXggMTQwOWIxM2ZlMmYyYjVlMjhlZTM4ZGIwN2E0ODk4M2M3NmVlMzFiZC4uODAzZGEx
ZWYwMGVjNjY3NGE4OWNkNDA2YWUzOTVmYjFlMjAwYzE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzNfYXV0b2dlbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzX2F1dG9n
ZW4uaApAQCAtMTcsMjIgKzE3LDI0IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsK
IAotYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnkoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRh
cmdldFBhY2tlZCwgUXVlcnlJRCBpZFBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIHByaW1pdGl2ZU1vZGVQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlQmVnaW5RdWVyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUg
dGFyZ2V0UGFja2VkLCBRdWVyeUlEIGlkUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVCZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgcHJpbWl0
aXZlTW9kZVBhY2tlZCk7Citib29sIFZhbGlkYXRlQmluZEJ1ZmZlckJhc2UoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkKTsKLWJvb2wg
VmFsaWRhdGVCaW5kQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVC
aW5kQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6
ZSk7Ci1ib29sIFZhbGlkYXRlQmluZFNhbXBsZXIoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHVu
aXQsIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCaW5kVHJhbnNmb3Jt
RmVlZGJhY2soQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgVHJhbnNmb3JtRmVlZGJh
Y2tJRCBpZFBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5KENvbnRleHQgKmNv
bnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJsaXRGcmFt
ZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRTYW1wbGVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMdWludCB1bml0LCBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCk7
Citib29sIFZhbGlkYXRlQmluZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVCbGl0RnJhbWVi
dWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKQEAgLTQzLDE2ICs0
NSwyOCBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFkxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmaWx0ZXIpOwotYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyZmkoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
dGVuY2lsKTsKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZ2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJv
b2wgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBidWZmZXIs
IEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlQ2xl
YXJCdWZmZXJ1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1
ZmZlciwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlQ2xpZW50V2FpdFN5bmMo
Q29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0
IHRpbWVvdXQpOwotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOworYm9vbCBWYWxp
ZGF0ZUNsZWFyQnVmZmVydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZUNsaWVudFdhaXRTeW5jKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzeW5jIHN5bmMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBmbGFncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQ2NCB0aW1lb3V0KTsKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2Vk
VGV4SW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTYyLDcgKzc2LDcgQEAgYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtNzQsMTMgKzg4LDEzIEBAIGJv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1ib29sIFZh
bGlkYXRlQ29weUJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVD
b3B5QnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgcmVhZFRhcmdldFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHdyaXRlVGFyZ2V0UGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHJlYWRPZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgd3JpdGVPZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKLWJvb2wgVmFsaWRhdGVD
b3B5VGV4U3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhT
dWJJbWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeG9mZnNldCwKQEAgLTkwLDEzNiArMTA0LDE1NSBAQCBib29sIFZhbGlkYXRlQ29weVRl
eFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOwotYm9v
bCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25z
dCBRdWVyeUlEICppZHNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURlbGV0ZVNhbXBsZXJzKENvbnRl
eHQgKmNvbnRleHQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNr
ZWQpOwotYm9vbCBWYWxpZGF0ZURlbGV0ZVN5bmMoQ29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5
bmMpOwotYm9vbCBWYWxpZGF0ZURlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBuLCBjb25zdCBRdWVyeUlEICppZHNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0
ZVNhbXBsZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IFNh
bXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVN5bmMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVRyYW5z
Zm9ybUZlZWRiYWNrcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkc1BhY2tlZCk7Ci1ib29s
IFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwg
Y29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEcmF3QXJy
YXlzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRlVmVydGV4
QXJyYXlzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5z
dGFuY2VkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGluc3RhbmNlY291bnQpOwotYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzKENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKLWJvb2wgVmFsaWRhdGVEcmF3RWxl
bWVudHNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3QnVmZmVy
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7
Citib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0
eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlY291bnQpOwotYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcyk7Ci1ib29sIFZhbGlkYXRlRW5kUXVlcnkoQ29u
dGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRW5k
VHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlRmVuY2VT
eW5jKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3Mp
OwotYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVFbmRRdWVyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUg
dGFyZ2V0UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBD
b250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVGZW5jZVN5bmMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncyk7Citib29sIFZhbGlk
YXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCk7Ci1i
b29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGF5ZXIpOwotYm9vbCBW
YWxpZGF0ZUdlblF1ZXJpZXMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBRdWVyeUlEICpp
ZHNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlblNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQsIEdM
c2l6ZWkgY291bnQsIFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdl
blRyYW5zZm9ybUZlZWRiYWNrcyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFRyYW5zZm9y
bUZlZWRiYWNrSUQgKmlkc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2VuVmVydGV4QXJyYXlzKENv
bnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkKTsK
LWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2VuUXVlcmllcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4sIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuU2FtcGxlcnMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBjb3VudCwgY29uc3QgU2FtcGxlcklEICpz
YW1wbGVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuVHJhbnNmb3JtRmVlZGJhY2tzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNm
b3JtRmVlZGJhY2tJRCAqaWRzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBWZXJ0ZXhBcnJheUlEICph
cnJheXNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKTsKLWJv
b2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICp1
bmlmb3JtQmxvY2tOYW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0QWN0aXZl
VW5pZm9ybXNpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm1zaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB1bmlmb3JtQ291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnVuaWZvcm1JbmRpY2VzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFy
YW1ldGVyaTY0dihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1l
dGVyaTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBv
aW50ZXJ2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50
ZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KipwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhTG9jYXRpb24oQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRGcmFnRGF0YUxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSk7Ci1ib29sIFZhbGlk
YXRlR2V0SW50ZWdlcjY0dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50NjQg
KmRhdGEpOwotYm9vbCBWYWxpZGF0ZUdldEludGVnZXJpX3YoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0
SW50ZXJuYWxmb3JtYXRpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEludGVn
ZXI2NGlfdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKmRhdGEp
OworYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGludDY0ICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2Vy
aV92KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
Y29uc3QgR0xpbnQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRQcm9ncmFtQmluYXJ5KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRQ
cm9ncmFtQmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSAqYmluYXJ5Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
YmluYXJ5KTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0
LCBRdWVyeUlEIGlkUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRRdWVyeWl2KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXRQYWNr
ZWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0U2FtcGxl
clBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gKmJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmJpbmFyeSk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR
dWVyeUlEIGlkUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFt
cyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
YW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTdHJpbmdpKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBuYW1lLCBHTHVpbnQgaW5kZXgpOwotYm9vbCBWYWxpZGF0ZUdldFN5bmNpdihDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTdHJpbmdpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0ZUdldFN5bmNpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBHTHN5bmMgc3luYywK
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlcyk7Ci1ib29sIFZhbGlk
YXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpzaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7Ci1i
b29sIFZhbGlkYXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpOwotYm9vbCBWYWxpZGF0ZUdl
dFVuaWZvcm1JbmRpY2VzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9y
bUluZGljZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHVuaWZvcm1Db3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICp1bmlmb3JtTmFtZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICp1bmlmb3JtSW5kaWNlcyk7Ci1ib29sIFZhbGlk
YXRlR2V0VW5pZm9ybXVpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdW5pZm9ybUluZGljZXMpOworYm9vbCBWYWxpZGF0ZUdl
dFVuaWZvcm11aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0
ZUZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmli
SWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwotYm9v
bCBWYWxpZGF0ZUludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1l
bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzLApAQCAtMjI3LDUxICsyNjAsNTEgQEAgYm9vbCBWYWxpZGF0ZUludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlSXNRdWVyeShDb250ZXh0ICpjb250
ZXh0LCBRdWVyeUlEIGlkUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVJc1NhbXBsZXIoQ29udGV4dCAq
Y29udGV4dCwgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUlzU3luYyhD
b250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYyk7Ci1ib29sIFZhbGlkYXRlSXNUcmFuc2Zvcm1G
ZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2VkKTsK
LWJvb2wgVmFsaWRhdGVJc1ZlcnRleEFycmF5KENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5
SUQgYXJyYXlQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlSXNRdWVyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVy
eUlEIGlkUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVJc1NhbXBsZXIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUlzU3luYyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYyk7Citib29sIFZhbGlkYXRlSXNUcmFuc2Zv
cm1GZWVkYmFjayhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlk
UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVJc1ZlcnRleEFycmF5KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQpOworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJh
bmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzKTsK
LWJvb2wgVmFsaWRhdGVQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQpOwot
Ym9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBW
YWxpZGF0ZVByb2dyYW1CaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbGVuZ3RoKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtUGFyYW1ldGVyaShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZhbHVlKTsKLWJvb2wg
VmFsaWRhdGVSZWFkQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBzcmMpOwotYm9vbCBW
YWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVJlYWRCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHNy
Yyk7Citib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRl
UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZXN1bWVU
cmFuc2Zvcm1GZWVkYmFjayhjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklE
IHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFy
YW0pOwotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleEltYWdlM0QoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
aW50ZXJuYWxmb3JtYXQsCkBAIC0yODIsMjAgKzMxNSwyMCBAQCBib29sIFZhbGlkYXRlVGV4SW1h
Z2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdl
MkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNEKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpOwotYm9vbCBWYWxp
ZGF0ZVRleFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJ
bWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwK
QEAgLTMwNyw3NiArMzQwLDEwMCBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRChDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqdmFy
eWluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVm
ZmVyTW9kZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTF1aShDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCBsb2NhdGlvbiwgR0x1aW50IHYwKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMXVpdihDb250ZXh0
ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2
YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTJ1aShDb250ZXh0ICpjb250ZXh0LCBHTGludCBs
b2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0ydWl2
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtM3VpKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKTsKLWJvb2wg
VmFsaWRhdGVVbmlmb3JtM3VpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTR1
aShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCitib29sIFZhbGlkYXRlVW5pZm9ybTF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMdWludCB2MCk7Citib29sIFZhbGlkYXRlVW5p
Zm9ybTF1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCisgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdjEpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0ydWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7Citib29sIFZhbGlkYXRl
VW5pZm9ybTN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHYyKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM3Vpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwor
Ym9vbCBWYWxpZGF0ZVVuaWZvcm00dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB2Myk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTR1aXYoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFs
dWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRpbmcoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVVbmlmb3JtNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRp
bmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpOwotYm9vbCBWYWxpZGF0
ZVVuaWZvcm1NYXRyaXgyeDNmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
MngzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGZ2
KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRmdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoQ29udGV4dCAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDN4MmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0
ZVVuaWZvcm1NYXRyaXgzeDRmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
M3g0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmZ2
KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZnYoQ29udGV4dCAqY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDR4M2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0
ZVVubWFwQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0
aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50
IHosIEdMaW50IHcpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aXYoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTR1aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkKTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHcpOworYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgeSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHcpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWl2KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsKLWJvb2wgVmFsaWRhdGVX
YWl0U3luYyhDb250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywg
R0x1aW50NjQgdGltZW91dCk7Citib29sIFZhbGlkYXRlV2FpdFN5bmMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQp
OwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9F
UzNfQVVUT0dFTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FU0VYVC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTRVhULmNwcAppbmRleCBlYTBkMDQ1ZGE0YTIyYzFjYTgxZGM4
NTJjNDQ5NjIxMGQ3ZDNlN2FkLi5jMzlhZjA2YTcxNjAxYWE3YjRjYjNlZGExM2I0YmNkYWVlOGEy
MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTRVhULmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkVTRVhULmNwcApAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgImxpYkFO
R0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvclN0cmluZ3MuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0
aW9uRVMzMi5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTE4LDcgKzE5LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIGVycjsKIG5hbWVzcGFjZQogewogdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFQ+Ci1i
b29sIFZhbGlkYXRlR2V0SW1hZ2VGb3JtYXRBbmRUeXBlKENvbnRleHQgKmNvbnRleHQsIE9iamVj
dFQgKm9iaiwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCitib29sIFZhbGlkYXRlR2V0SW1h
Z2VGb3JtYXRBbmRUeXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIE9iamVjdFQgKm9iaiwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCiB7CiAgICAgR0xlbnVtIGltcGxGb3JtYXQgPSBvYmot
PmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KGNvbnRleHQpOwogICAgIGlmICghVmFs
aWRFUzNGb3JtYXQoZm9ybWF0KSAmJiAoZm9ybWF0ICE9IGltcGxGb3JtYXQgfHwgZm9ybWF0ID09
IEdMX05PTkUpKQpAQCAtNDEsMTIgKzQyLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRJbWFnZUZvcm1h
dEFuZFR5cGUoQ29udGV4dCAqY29udGV4dCwgT2JqZWN0VCAqb2JqLCBHTGVudW0gZm9ybWF0CiAK
IH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFZhbGlkYXRlR2V0VGV4SW1hZ2VBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleEltYWdlQU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0SW1hZ2VBTkdM
RSkKICAgICB7CkBAIC05MSwxMSArOTIsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldFRleEltYWdlQU5H
TEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFJlbmRlcmJ1ZmZlckltYWdlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEltYWdlQU5HTEUpCiAgICAgewpAQCAtMTI2LDcg
KzEyNyw3IEBAIGJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVu
dHNCYXNlVmVydGV4RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0VsZW1l
bnRzQmFzZVZlcnRleEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTE0Miw3
ICsxNDMsNyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdFbGVtZW50c0NvbW1vbihjb250ZXh0
LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3
RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTE1OSw3ICsxNjAs
NyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVChDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2UoY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlY291bnQpOwog
fQogCi1ib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLApAQCAtMjA1LDcgKzIwNiw3IEBAIGJvb2wg
VmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFz
ZVZlcnRleEVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1l
bnRzQmFzZVZlcnRleEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGUsCkBAIC0yMTYsNyArMjE3LDcgQEAgYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0Vs
ZW1lbnRzQmFzZVZlcnRleEVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGUsCkBAIC0yMzIsNyArMjMzLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdF
bGVtZW50c0Jhc2VWZXJ0ZXhPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRh
dGVEcmF3RWxlbWVudHNDb21tb24oY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMs
IDEpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9F
UyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXhPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGUsCkBAIC0yNDksNyArMjUwLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50
c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFs
aWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBl
LCBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVs
ZW1lbnRzQmFzZVZlcnRleE9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdS
YW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFy
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVu
ZCwKQEAgLTI5NCw0ICsyOTUsMjI0IEBAIGJvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jh
c2VWZXJ0ZXhPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CisKK2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVS
R0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFs
cGhhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5k
ZXhlZEVYVCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaShj
b250ZXh0LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVCbGVu
ZEVxdWF0aW9uaUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0g
bW9kZSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0lu
ZGV4ZWRFWFQpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pKGNvbnRleHQs
IGJ1ZiwgbW9kZSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNy
Y1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFJHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0FscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpCit7CisgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNJbmRleGVkRVhUKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWkoY29udGV4dCwgYnVmLCBzcmNS
R0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKK30KKworYm9vbCBWYWxpZGF0ZUJsZW5k
RnVuY2lFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywg
R0xlbnVtIGRzdCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVm
ZmVyc0luZGV4ZWRFWFQpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUJsZW5kRnVuY2koY29udGV4
dCwgYnVmLCBzcmMsIGRzdCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb2xvck1hc2tpRVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSkKK3sK
KyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4ZWRFWFQp
CisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiBWYWxpZGF0ZUNvbG9yTWFza2koY29udGV4dCwgaW5kZXgsIHIsIGcs
IGIsIGEpOworfQorCitib29sIFZhbGlkYXRlRGlzYWJsZWlFWFQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZEVYVCkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5v
dEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZh
bGlkYXRlRGlzYWJsZWkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVFbmFibGVpRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVy
c0luZGV4ZWRFWFQpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVuYWJsZWkoY29udGV4dCwgdGFy
Z2V0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVJc0VuYWJsZWRpRVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4ZWRFWFQpCisgICAgeworICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRl
bnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBWYWxpZGF0ZUlzRW5hYmxlZGkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKK2Jv
b2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKQor
eworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZE9F
UykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaShjb250ZXh0
LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0
aW9uaU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSkK
K3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4ZWRP
RVMpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pKGNvbnRleHQsIGJ1Ziwg
bW9kZSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFJHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0FscGhhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpCit7CisgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNJbmRleGVkT0VTKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0
ZW5zaW9uTm90RW5hYmxlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWkoY29udGV4dCwgYnVmLCBzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKK30KKworYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY2lP
RVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVt
IGRzdCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0lu
ZGV4ZWRPRVMpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUJsZW5kRnVuY2koY29udGV4dCwgYnVm
LCBzcmMsIGRzdCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb2xvck1hc2tpT0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSkKK3sKKyAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4ZWRPRVMpCisgICAg
eworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
IGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiBWYWxpZGF0ZUNvbG9yTWFza2koY29udGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEp
OworfQorCitib29sIFZhbGlkYXRlRGlzYWJsZWlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZE9FUykKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJs
ZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRl
RGlzYWJsZWkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVFbmFi
bGVpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4
ZWRPRVMpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVuYWJsZWkoY29udGV4dCwgdGFyZ2V0LCBp
bmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVJc0VuYWJsZWRpT0VTKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4ZWRPRVMpCisgICAgeworICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25O
b3RFbmFibGVkKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBW
YWxpZGF0ZUlzRW5hYmxlZGkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFs
aWRhdGVHZXRJbnRlZ2VyNjR2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQ2NCAqZGF0YSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMZW51bSBuYXRpdmVUeXBlICAgICAg
PSBHTF9OT05FOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAgIGlmICghVmFs
aWRhdGVTdGF0ZVF1ZXJ5KGNvbnRleHQsIHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcykp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFRfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FU0VYVF9hdXRvZ2VuLmgKaW5kZXgg
ODU3OWEzZDMzMjUxMjVkOGUyZTIxMWZmZjAwNGNhNzM5ODE5YTQ3MS4uYWE5ZjYwMmZiOWQyYWZk
NjYzYmRiMWEwZmZkMTg4OTI4YWVhM2YzMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FU0VYVF9hdXRvZ2VuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FU0VYVF9hdXRvZ2VuLmgK
QEAgLTE4LDEzICsxOCwxMyBAQCBuYW1lc3BhY2UgZ2wKIGNsYXNzIENvbnRleHQ7CiAKIC8vIEdM
X0FOR0xFX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlz
SW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYmFzZUluc3RhbmNlKTsKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNl
VmVydGV4QmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVE
cmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCkBAIC0zMiwxNCAr
MzIsMTQgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNl
SW5zdGFuY2VBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291
bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBiYXNlVmVydGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmFzZUluc3RhbmNlKTsK
LWJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJh
c2VJbnN0YW5jZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpmaXJzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmluc3RhbmNlQ291bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqYmFzZUluc3RhbmNlcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGRyYXdjb3VudCk7Ci1ib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNl
VmVydGV4QmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVN
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3VudHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRz
VHlwZSB0eXBlUGFja2VkLApAQCAtNTAsNyArNTAsNyBAQCBib29sIFZhbGlkYXRlTXVsdGlEcmF3
RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29u
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsKIAogLy8gR0xfQU5HTEVfY29weV90ZXh0
dXJlXzNkCi1ib29sIFZhbGlkYXRlQ29weVRleHR1cmUzREFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ29weVRleHR1cmUzREFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBh
Y2tlZCwKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlM0RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdW5wYWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKLWJvb2wgVmFsaWRhdGVDb3B5U3Vi
VGV4dHVyZTNEQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5U3ViVGV4
dHVyZTNEQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkLApAQCAtODEs
NyArODEsNyBAQCBib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmUzREFOR0xFKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBh
Y2tVbm11bHRpcGx5QWxwaGEpOwogCiAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Ci1ib29s
IFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVCbGl0RnJhbWVidWZmZXJBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNyY1gxLApAQCAtOTQsNyArOTQsNyBAQCBib29sIFZhbGlkYXRlQmxp
dEZyYW1lYnVmZmVyQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKTsKIAogLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUKLWJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsZm9ybWF0LApAQCAtMTAyLDUxICsxMDIsNTggQEAgYm9vbCBWYWxpZGF0ZVJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQp
OwogCiAvLyBHTF9BTkdMRV9nZXRfaW1hZ2UKLWJvb2wgVmFsaWRhdGVHZXRUZXhJbWFnZUFOR0xF
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4SW1hZ2VBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVy
SW1hZ2VBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJJbWFn
ZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7CiAKIC8vIEdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMK
LWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9k
ZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmlt
Y291bnQpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCk7Ci1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgR0x1aW50IGRpdmlzb3IpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29y
KTsKKworLy8gR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhCitib29sIFZhbGlkYXRlSW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1v
cnlQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI
YW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CiAKIC8vIEdMX0FOR0xFX211bHRpX2RyYXcK
LWJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0FOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpmaXJzdHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsK
LWJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpmaXJzdHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmluc3RhbmNl
Q291bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgZHJhd2NvdW50KTsKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0FOR0xFKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqY291bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpjb25zdCAqaW5kaWNlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsKLWJvb2wgVmFsaWRh
dGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnRzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLApAQCAt
MTU3LDEwMiArMTY0LDEwMiBAQCBib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAogLy8gR0xfQU5HTEVfcHJvZ3JhbV9iaW5hcnkKIAog
Ly8gR0xfQU5HTEVfcHJvdm9raW5nX3ZlcnRleAotYm9vbCBWYWxpZGF0ZVByb3Zva2luZ1ZlcnRl
eEFOR0xFKENvbnRleHQgKmNvbnRleHQsIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9kZVBh
Y2tlZCk7Citib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4QU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkKTsKIAogLy8gR0xf
QU5HTEVfcmVxdWVzdF9leHRlbnNpb24KLWJvb2wgVmFsaWRhdGVSZXF1ZXN0RXh0ZW5zaW9uQU5H
TEUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVE
aXNhYmxlRXh0ZW5zaW9uQU5HTEUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1l
KTsKK2Jvb2wgVmFsaWRhdGVSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKTsKK2Jvb2wgVmFsaWRhdGVEaXNhYmxlRXh0ZW5zaW9u
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKTsKIAogLy8g
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFudlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0Qm9vbGVhbnZSb2J1
c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMYm9vbGVhbiAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRCdWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldEZsb2F0dlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVHZXRGbG9hdHZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldEludGVnZXJ2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXJ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlR2V0U2hhZGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0U2hhZGVyaXZS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRl
eFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxp
ZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJp
YmZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcG9pbnRlcik7
Ci1ib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpjb25zdCAqcG9pbnRlcik7Citib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVz
dEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CkBAIC0yNjAsMTEgKzI2NywxMSBAQCBib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY29sdW1ucywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUZXhJ
bWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpyb3dzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZVRl
eEltYWdlMkRSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LApAQCAtMjc1LDE3ICsy
ODIsMTcgQEAgYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMjk2LDcgKzMwMyw3
IEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsK
LWJvb2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwK
QEAgLTMwOCw3ICszMTUsNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVs
cyk7Ci1ib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwKQEAgLTMyMSw3ICszMjgsNyBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2Uz
RFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleElt
YWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNz
ZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0zMzEsNyArMzM4LDcgQEAgYm9vbCBWYWxpZGF0ZUNv
bXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkYXRh
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHhvZmZzZXQsCkBAIC0zNDIsNyArMzQ5LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBkYXRhU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdl
M0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhJbWFnZTNEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0zNTMsNyArMzYwLDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXBy
ZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkYXRhU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB4b2Zmc2V0LApAQCAtMzY2LDE0NiArMzczLDE0NiBAQCBib29sIFZhbGlkYXRlQ29tcHJl
c3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGRhdGFTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0SW50ZWdl
cmlfdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpOwotYm9vbCBWYWxpZGF0
ZUdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpkYXRhKTsK
K2Jvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVH
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYkl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOwor
Ym9vbCBWYWxpZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0dlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSk7Ci1ib29sIFZh
bGlkYXRlR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpkYXRh
KTsKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2
NCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50NjQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBh
cmFtZXRlcmk2NHZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVTYW1w
bGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50NjQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7Ci1ib29s
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNh
bXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUdldFNh
bXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVH
ZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0Qm9vbGVh
bmlfdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xib29sZWFuICpkYXRhKTsKK2Jvb2wgVmFsaWRh
dGVHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICp2YWwpOwot
Ym9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbCk7Citib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRQb2ludGVydlJvYnVzdEFOR0xF
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGFyYW1zKTsKLWJvb2wgVmFsaWRh
dGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29u
c3QgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtNTEzLDkz
ICs1MjAsOTkgQEAgYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpyb3dzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqcm93cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFt
cyk7Citib29sIFZhbGlkYXRlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhQ
YXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7
Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbSk7Ci1i
b29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Ft
cGxlcklEIHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmpl
Y3RpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxp
ZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRdWVyeUlEIGlkUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0
UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dDY0ICpwYXJhbXMpOworCisvLyBHTF9BTkdMRV9zZW1hcGhvcmVfZnVjaHNpYQorYm9vbCBWYWxp
ZGF0ZUltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VtYXBo
b3JlSUQgc2VtYXBob3JlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKTsKIAogLy8gR0xf
QU5HTEVfdGV4dHVyZV9leHRlcm5hbF91cGRhdGUKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTJERXh0
ZXJuYWxBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRFeHRl
cm5hbEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCkBAIC02MDgsNDkgKzYyMSw1
MiBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSk7Ci1ib29sIFZhbGlk
YXRlSW52YWxpZGF0ZVRleHR1cmVBTkdMRShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0
YXJnZXRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXh0dXJlQU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkKTsKIAogLy8gR0xfQU5H
TEVfdGV4dHVyZV9tdWx0aXNhbXBsZQotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2Ft
cGxlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0
aXNhbXBsZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwotYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1l
dGVyaXZBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFy
YW1ldGVyaXZBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdkFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZBTkdMRShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QU5H
TEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQg
KnZhbCk7Ci1ib29sIFZhbGlkYXRlU2FtcGxlTWFza2lBTkdMRShDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRNdWx0aXNhbXBsZWZ2QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbCk7Citib29sIFZhbGlkYXRlU2FtcGxlTWFz
a2lBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFza051bWJlciwgR0xiaXRm
aWVsZCBtYXNrKTsKIAogLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlCi1ib29s
IFZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKnNvdXJjZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpzb3VyY2UpOwogCiAvLyBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24KLWJvb2wg
VmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CiAKIC8vIEdMX0NI
Uk9NSVVNX2NvcHlfY29tcHJlc3NlZF90ZXh0dXJlCi1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZENv
cHlUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVz
c2VkQ29weVRleHR1cmVDSFJPTUlVTShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQg
ZGVzdElkUGFja2VkKTsKIAogLy8gR0xfQ0hST01JVU1fY29weV90ZXh0dXJlCi1ib29sIFZhbGlk
YXRlQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNv
cHlUZXh0dXJlQ0hST01JVU0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkLApAQCAtNjYx
LDcgKzY3Nyw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNr
RmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNr
UHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJl
Q0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNI
Uk9NSVVNKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCwKQEAgLTY3OCwx
OTEgKzY5NCwxMTIgQEAgYm9vbCBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlQ0hST01JVU0oQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogCiAvLyBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9t
aXhlZF9zYW1wbGVzCi1ib29sIFZhbGlkYXRlQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIGNvbXBvbmVudHMpOwotYm9vbCBWYWxpZGF0ZU1hdHJpeExv
YWRmQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdM
ZmxvYXQgKm1hdHJpeCk7Ci1ib29sIFZhbGlkYXRlTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0o
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hdHJpeE1vZGUpOworYm9vbCBWYWxpZGF0ZUNvdmVy
YWdlTW9kdWxhdGlvbkNIUk9NSVVNKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb21w
b25lbnRzKTsKIAogLy8gR0xfQ0hST01JVU1fbG9zZV9jb250ZXh0Ci1ib29sIFZhbGlkYXRlTG9z
ZUNvbnRleHRDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUxvc2VDb250
ZXh0Q0hST01JVU0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgY3VycmVudFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgb3RoZXJQYWNrZWQp
OwogCi0vLyBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotYm9vbCBWYWxpZGF0ZUdlblBhdGhz
Q0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSByYW5nZSk7Ci1ib29sIFZhbGlkYXRl
RGVsZXRlUGF0aHNDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQYXRoSUQgZmlyc3RQYWNrZWQs
IEdMc2l6ZWkgcmFuZ2UpOwotYm9vbCBWYWxpZGF0ZUlzUGF0aENIUk9NSVVNKENvbnRleHQgKmNv
bnRleHQsIFBhdGhJRCBwYXRoUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVQYXRoQ29tbWFuZHNDSFJP
TUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZVBhdGhQYXJhbWV0ZXJmQ0hST01JVU0oQ29udGV4
dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBw
YXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2YWx1ZSk7
Ci1ib29sIFZhbGlkYXRlUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQ
YXRoSUQgcGF0aFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Ci1ib29sIFZhbGlk
YXRlR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZUdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZSk7Ci1ib29s
IFZhbGlkYXRlUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxGaWxs
UGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrKTsKLWJvb2wgVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aENI
Uk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrKTsKLWJvb2wgVmFsaWRhdGVDb3ZlckZpbGxQYXRoQ0hST01J
VU0oQ29udGV4dCAqY29udGV4dCwgUGF0aElEIHBhdGhQYWNrZWQsIEdMZW51bSBjb3Zlck1vZGUp
OwotYm9vbCBWYWxpZGF0ZUNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQs
IFBhdGhJRCBwYXRoUGFja2VkLCBHTGVudW0gY292ZXJNb2RlKTsKLWJvb2wgVmFsaWRhdGVTdGVu
Y2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxs
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlKTsKLWJvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0
aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVy
TW9kZSk7Ci1ib29sIFZhbGlkYXRlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKENvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQg
cGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
OwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oQ29udGV4
dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwot
Ym9vbCBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKENvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRy
YW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLWJvb2wgVmFsaWRhdGVTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQg
cGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsK
LWJvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVm
ZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUJp
bmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbXNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMp
OwotCiAvLyBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZAotYm9vbCBWYWxpZGF0ZUJpbmRGcmFn
RGF0YUxvY2F0aW9uRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZEZyYWdE
YXRhTG9jYXRpb25FWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY29sb3IsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFs
aWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBjb2xvck51bWJlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxp
ZGF0ZUdldEZyYWdEYXRhSW5kZXhFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRGcmFnRGF0YUluZGV4RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVChDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm5hbWUpOwogCiAvLyBHTF9FWFRfZGVidWdfbWFya2VyCi1ib29sIFZhbGlkYXRlSW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0
IEdMY2hhciAqbWFya2VyKTsKLWJvb2wgVmFsaWRhdGVQb3BHcm91cE1hcmtlckVYVChDb250ZXh0
ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQoQ29udGV4dCAqY29u
dGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFya2VyKTsKK2Jvb2wgVmFsaWRh
dGVJbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxl
bmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIpOworYm9vbCBWYWxpZGF0ZVBvcEdyb3VwTWFya2Vy
RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVB1c2hHcm91cE1hcmtl
ckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFy
ICptYXJrZXIpOwogCiAvLyBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlcgotYm9vbCBWYWxpZGF0
ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURp
c2NhcmRGcmFtZWJ1ZmZlckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKIAogLy8gR0xf
RVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Ci1ib29sIFZhbGlkYXRlQmVnaW5RdWVyeUVYVChDb250
ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkLCBRdWVyeUlEIGlkUGFja2VkKTsK
LWJvb2wgVmFsaWRhdGVEZWxldGVRdWVyaWVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkg
biwgY29uc3QgUXVlcnlJRCAqaWRzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVFbmRRdWVyeUVYVChD
b250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVH
ZW5RdWVyaWVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgUXVlcnlJRCAqaWRzUGFj
a2VkKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1
ZXJ5VHlwZSB0YXJnZXRQYWNrZWQsIFF1ZXJ5SUQgaWRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURl
bGV0ZVF1ZXJpZXNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBR
dWVyeUlEICppZHNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdlblF1
ZXJpZXNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBRdWVyeUlE
ICppZHNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHZFWFQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludDY0ICpkYXRhKTsKK2Jvb2wgVmFs
aWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1
ZXJ5T2JqZWN0aXZFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZFBhY2tlZCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2
RVhUKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50NjQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdkVY
VChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChDb250ZXh0ICpjb250ZXh0
LCBRdWVyeUlEIGlkUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRRdWVyeWl2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXRQ
YWNrZWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlSXNRdWVy
eUVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVR
dWVyeUNvdW50ZXJFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZFBhY2tlZCwgUXVlcnlU
eXBlIHRhcmdldFBhY2tlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdkVY
VChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlSXNR
dWVyeUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkKTsKK2Jvb2wg
VmFsaWRhdGVRdWVyeUNvdW50ZXJFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBp
ZFBhY2tlZCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCk7CiAKIC8vIEdMX0VYVF9kcmF3X2J1ZmZl
cnMKLWJvb2wgVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7Citib29sIFZhbGlkYXRlRHJhd0J1ZmZlcnNFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOworCisv
LyBHTF9FWFRfZHJhd19idWZmZXJzX2luZGV4ZWQKK2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9u
U2VwYXJhdGVpRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0
aW9uaUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7
Citib29sIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGVpRVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNp
RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51
bSBkc3QpOworYm9vbCBWYWxpZGF0ZUNvbG9yTWFza2lFWFQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBhKTsKK2Jvb2wgVmFsaWRhdGVEaXNh
YmxlaUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpOworYm9vbCBWYWxpZGF0ZUVuYWJsZWlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRhdGVJc0VuYWJsZWRpRVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiAKIC8v
IEdMX0VYVF9kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1l
bnRzQmFzZVZlcnRleEVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpp
bmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFz
ZXZlcnRleCk7Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVY
VChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXhFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZl
cnRleCk7Ci1ib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhU
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLApAQCAtODcwLDcgKzgwNyw3
IEBAIGJvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KTsKLWJvb2wgVmFsaWRhdGVN
dWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLApAQCAtODc5LDYxICs4
MTYsNjQgQEAgYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqYmFzZXZlcnRleCk7CiAKIC8vIEdMX0VYVF9nZW9tZXRyeV9zaGFkZXIK
LWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCk7CiAKIC8vIEdMX0VY
VF9pbnN0YW5jZWRfYXJyYXlzCi1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEVYVChD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1
aW50IGRpdmlzb3IpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3JFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7CiAKIC8vIEdM
X0VYVF9tYXBfYnVmZmVyX3JhbmdlCi1ib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5n
ZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFu
Z2VFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgpOwotYm9vbCBWYWxpZGF0
ZU1hcEJ1ZmZlclJhbmdlRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwQnVm
ZmVyUmFuZ2VFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBhY2Nlc3MpOwogCiAvLyBHTF9FWFRfbWVtb3J5X29iamVjdAotYm9vbCBWYWxp
ZGF0ZUJ1ZmZlclN0b3JhZ2VNZW1FWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVC
dWZmZXJTdG9yYWdlTWVtRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpOwotYm9vbCBWYWxpZGF0ZUNy
ZWF0ZU1lbW9yeU9iamVjdHNFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDcmVh
dGVNZW1vcnlPYmplY3RzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNZW1vcnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0c1BhY2tlZCk7Ci1ib29s
IFZhbGlkYXRlRGVsZXRlTWVtb3J5T2JqZWN0c0VYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9y
eU9iamVjdHNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0ZU1lbW9yeU9iamVjdHNFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1l
bW9yeU9iamVjdElEICptZW1vcnlPYmplY3RzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVHZXRNZW1v
cnlPYmplY3RQYXJhbWV0ZXJpdkVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVt
b3J5T2JqZWN0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGV2RVhUKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1Ynl0ZSAqZGF0YSk7Ci1ib29sIFZhbGlk
YXRlR2V0VW5zaWduZWRCeXRlaV92RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0x1Ynl0ZSAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlSXNNZW1vcnlPYmpl
Y3RFWFQoQ29udGV4dCAqY29udGV4dCwgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2Vk
KTsKLWJvb2wgVmFsaWRhdGVNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZXZFWFQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVieXRlICpkYXRhKTsKK2Jvb2wg
VmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVJ
c01lbW9yeU9iamVjdEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBNZW1vcnlPYmplY3RJRCBt
ZW1vcnlPYmplY3RQYWNrZWQpOworYm9vbCBWYWxpZGF0ZU1lbW9yeU9iamVjdFBhcmFtZXRlcml2
RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVUZXhTdG9yYWdlTWVtMkRFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LApAQCAtOTQxLDcgKzg4MSw3IEBA
IGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVU
ZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC05NTAsNyArODkwLDcgQEAgYm9vbCBWYWxp
ZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2Ft
cGxlTG9jYXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpOwotYm9vbCBWYWxpZGF0ZVRleFN0b3Jh
Z2VNZW0zREVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0z
REVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC05NTksNyArODk5LDcgQEAgYm9vbCBWYWxpZGF0ZVRl
eFN0b3JhZ2VNZW0zREVYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludDY0IG9mZnNldCk7Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNETXVs
dGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTWVt
M0RNdWx0aXNhbXBsZUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsRm9ybWF0LApAQCAtOTcxLDIxICs5MTEsMjEgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VN
ZW0zRE11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0KTsKIAogLy8gR0xfRVhUX21l
bW9yeV9vYmplY3RfZmQKLWJvb2wgVmFsaWRhdGVJbXBvcnRNZW1vcnlGZEVYVChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVt
b3J5UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZkKTsKIAogLy8gR0xf
RVhUX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotYm9vbCBWYWxpZGF0ZUZyYW1lYnVm
ZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcyk7Ci1i
b29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtOTk3
LDE4ICs5MzcsMTggQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUVYVChDb250ZXh0ICpjb250ZXh0LAogLy8gR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKIAogLy8g
R0xfRVhUX3JvYnVzdG5lc3MKLWJvb2wgVmFsaWRhdGVHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhU
KENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZFWFQoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0blVuaWZvcm1pdkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhU
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLApAQCAtMTAxNiwzMCArOTU2LDM0IEBAIGJvb2wgVmFsaWRhdGVSZWFk
blBpeGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmRhdGEpOwogCiAvLyBHTF9FWFRfc1JHQgogCiAvLyBHTF9FWFRfc2Vt
YXBob3JlCi1ib29sIFZhbGlkYXRlRGVsZXRlU2VtYXBob3Jlc0VYVChDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIGNvbnN0IFNlbWFwaG9yZUlEICpzZW1hcGhvcmVzUGFja2VkKTsKLWJvb2wg
VmFsaWRhdGVHZW5TZW1hcGhvcmVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgU2Vt
YXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdldFNlbWFwaG9yZVBh
cmFtZXRlcnVpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRlU2Vt
YXBob3Jlc0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdlblNl
bWFwaG9yZXNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFNlbWFwaG9yZUlEICpzZW1hcGhvcmVzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVHZXRTZW1hcGhv
cmVQYXJhbWV0ZXJ1aTY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQoQ29udGV4dCAqY29udGV4dCwg
U2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVTZW1hcGhvcmVQYXJh
bWV0ZXJ1aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUlzU2VtYXBob3JlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNlbWFwaG9yZUlEIHNlbWFw
aG9yZVBhY2tlZCk7Citib29sIFZhbGlkYXRlU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVNp
Z25hbFNlbWFwaG9yZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNpZ25hbFNl
bWFwaG9yZUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqZHN0TGF5
b3V0cyk7Ci1ib29sIFZhbGlkYXRlV2FpdFNlbWFwaG9yZUVYVChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVdhaXRTZW1hcGhvcmVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFj
a2VkLApAQCAtMTA0OCw3ICs5OTIsNyBAQCBib29sIFZhbGlkYXRlV2FpdFNlbWFwaG9yZUVYVChD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xl
bnVtICpzcmNMYXlvdXRzKTsKIAogLy8gR0xfRVhUX3NlbWFwaG9yZV9mZAotYm9vbCBWYWxpZGF0
ZUltcG9ydFNlbWFwaG9yZUZkRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlSW1w
b3J0U2VtYXBob3JlRmRFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZkKTsKQEAgLTEwNTcsNiAr
MTAwMSw4IEBAIGJvb2wgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVYVChDb250ZXh0ICpjb250
ZXh0LAogCiAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCiAKKy8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKwogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0YwogCiAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKQEAgLTEwNjYs
MTggKzEwMTIsMTggQEAgYm9vbCBWYWxpZGF0ZUltcG9ydFNlbWFwaG9yZUZkRVhUKENvbnRleHQg
KmNvbnRleHQsCiAvLyBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKIAogLy8gR0xfRVhU
X3RleHR1cmVfc3RvcmFnZQotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxREVYVChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxREVYVChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoKTsKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRFWFQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRFWFQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNE
RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNERVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKQEAgLTEwODYsNzcgKzEwMzIsODAgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzREVYVChD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoKTsKIAogLy8gR0xfS0hSX2RlYnVnCi1ib29sIFZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJh
Y2tLSFIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFj
a0tIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSk7Ci1ib29sIFZhbGlkYXRlRGVi
dWdNZXNzYWdlQ29udHJvbEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlYnVn
TWVzc2FnZUNvbnRyb2xLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKmlkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBlbmFibGVkKTsKLWJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpOwotYm9vbCBWYWxpZGF0
ZUdldERlYnVnTWVzc2FnZUxvZ0tIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dERlYnVnTWVzc2FnZUxvZ0tIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtICpzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gKnR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
ICpzZXZlcml0aWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1l
c3NhZ2VMb2cpOwotYm9vbCBWYWxpZGF0ZUdldE9iamVjdExhYmVsS0hSKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqc291
cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICp0
eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpp
ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqc2V2
ZXJpdGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xj
aGFyICptZXNzYWdlTG9nKTsKK2Jvb2wgVmFsaWRhdGVHZXRPYmplY3RMYWJlbEtIUihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
ZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCk7Ci1ib29sIFZhbGlkYXRlR2V0T2JqZWN0UHRy
TGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpsYWJlbCk7Citib29sIFZhbGlkYXRlR2V0T2JqZWN0UHRyTGFiZWxLSFIo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVs
KTsKLWJvb2wgVmFsaWRhdGVHZXRQb2ludGVydktIUihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIHZvaWQgKipwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZU9iamVjdExhYmVsS0hSKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Y2hhciAqbGFiZWwpOworYm9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2S0hSKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgdm9pZCAqY29uc3QgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlT2JqZWN0TGFiZWxLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKTsK
LWJvb2wgVmFsaWRhdGVPYmplY3RQdHJMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZU9iamVjdFB0ckxhYmVsS0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpOwotYm9vbCBWYWxpZGF0ZVBvcERlYnVnR3JvdXBL
SFIoQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlUHVzaERlYnVnR3JvdXBLSFIoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwS0hSKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwS0hSKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlKTsKIAogLy8gR0xfS0hSX3BhcmFsbGVs
X3NoYWRlcl9jb21waWxlCi1ib29sIFZhbGlkYXRlTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hS
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBjb3VudCk7Citib29sIFZhbGlkYXRlTWF4U2hhZGVy
Q29tcGlsZXJUaHJlYWRzS0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBjb3VudCk7
CiAKIC8vIEdMX05WX2ZlbmNlCi1ib29sIFZhbGlkYXRlRGVsZXRlRmVuY2VzTlYoQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBGZW5jZU5WSUQgKmZlbmNlc1BhY2tlZCk7Ci1ib29s
IFZhbGlkYXRlRmluaXNoRmVuY2VOVihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2VQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlbkZlbmNlc05WKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbiwgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdldEZlbmNlaXZO
VihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2VQYWNrZWQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlSXNGZW5jZU5WKENvbnRleHQgKmNvbnRleHQs
IEZlbmNlTlZJRCBmZW5jZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlU2V0RmVuY2VOVihDb250ZXh0
ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2VQYWNrZWQsIEdMZW51bSBjb25kaXRpb24pOwotYm9v
bCBWYWxpZGF0ZVRlc3RGZW5jZU5WKENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZVBh
Y2tlZCk7Citib29sIFZhbGlkYXRlRGVsZXRlRmVuY2VzTlYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuLCBjb25zdCBGZW5jZU5WSUQgKmZlbmNlc1BhY2tlZCk7Citib29sIFZhbGlk
YXRlRmluaXNoRmVuY2VOVihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2VQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZUdlbkZlbmNlc05WKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMc2l6ZWkgbiwgY29uc3QgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQpOworYm9vbCBWYWxpZGF0
ZUdldEZlbmNlaXZOVihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtcyk7Citib29sIFZhbGlkYXRlSXNGZW5jZU5WKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZl
bmNlTlZJRCBmZW5jZVBhY2tlZCk7Citib29sIFZhbGlkYXRlU2V0RmVuY2VOVihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2VQYWNrZWQsIEdMZW51bSBjb25kaXRpb24pOwor
Ym9vbCBWYWxpZGF0ZVRlc3RGZW5jZU5WKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJ
RCBmZW5jZVBhY2tlZCk7CiAKIC8vIEdMX09FU19FR0xfaW1hZ2UKLWJvb2wgVmFsaWRhdGVFR0xJ
bWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci1ib29sIFZhbGlkYXRlRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVnbEltYWdlT0VTIGlt
YWdlKTsKIApAQCAtMTE2NCwyMSArMTExMyw0NCBAQCBib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwKIAogLy8gR0xfT0VTX2RlcHRoMzIKIAor
Ly8gR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkCitib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlv
blNlcGFyYXRlaU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSk7Citib29sIFZhbGlkYXRlQmxlbmRFcXVh
dGlvbmlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUp
OworYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlaU9FUyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjUkdCLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSk7Citib29sIFZhbGlkYXRlQmxlbmRGdW5j
aU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVu
dW0gZHN0KTsKK2Jvb2wgVmFsaWRhdGVDb2xvck1hc2tpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSk7Citib29sIFZhbGlkYXRlRGlz
YWJsZWlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4KTsKK2Jvb2wgVmFsaWRhdGVFbmFibGVpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Citib29sIFZhbGlkYXRlSXNFbmFibGVkaU9FUyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworCiAv
LyBHTF9PRVNfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleAotYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxl
bWVudHNCYXNlVmVydGV4T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
aW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJh
c2V2ZXJ0ZXgpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhP
RVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRC
YXNlVmVydGV4T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2
ZXJ0ZXgpOwotYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9F
Uyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKQEAgLTExODgsMTE5ICsx
MTYwLDEzMiBAQCBib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGJhc2V2ZXJ0ZXgpOwogCiAvLyBHTF9PRVNfZHJhd190ZXh0dXJlCi1ib29sIFZh
bGlkYXRlRHJhd1RleGZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4
Zk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB6LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBoZWlnaHQpOwotYm9v
bCBWYWxpZGF0ZURyYXdUZXhmdk9FUyhDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICpj
b29yZHMpOwotYm9vbCBWYWxpZGF0ZURyYXdUZXhpT0VTKENvbnRleHQgKmNvbnRleHQsIEdMaW50
IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQpOwotYm9vbCBW
YWxpZGF0ZURyYXdUZXhpdk9FUyhDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqY29vcmRz
KTsKLWJvb2wgVmFsaWRhdGVEcmF3VGV4c09FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZURyYXdUZXhmdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICpj
b29yZHMpOworYm9vbCBWYWxpZGF0ZURyYXdUZXhpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHosCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgaGVpZ2h0KTsKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4aXZPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xpbnQgKmNvb3Jkcyk7Citib29sIFZhbGlkYXRlRHJhd1RleHNPRVMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0
IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2hvcnQgeiwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHdp
ZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgaGVpZ2h0KTsKLWJvb2wgVmFs
aWRhdGVEcmF3VGV4c3ZPRVMoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqY29vcmRz
KTsKLWJvb2wgVmFsaWRhdGVEcmF3VGV4eE9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZURyYXdUZXhzdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICpj
b29yZHMpOworYm9vbCBWYWxpZGF0ZURyYXdUZXh4T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZml4ZWQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB3aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZpeGVkIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlRHJhd1RleHh2T0VTKENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKmNvb3Jkcyk7Citib29sIFZhbGlkYXRlRHJhd1Rl
eHh2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKmNvb3Jkcyk7CiAK
IC8vIEdMX09FU19mcmFtZWJ1ZmZlcl9vYmplY3QKLWJvb2wgVmFsaWRhdGVCaW5kRnJhbWVidWZm
ZXJPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgRnJhbWVidWZmZXJJRCBmcmFt
ZWJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlck9FUyhDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlck9FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVm
ZmVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyT0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVu
ZGVyYnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzT0VT
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwotYm9vbCBWYWxpZGF0ZURlbGV0ZUZy
YW1lYnVmZmVyc09FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNoZWNrRnJhbWVi
dWZmZXJTdGF0dXNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7Citi
b29sIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZm
ZXJzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZmZXJzT0VTKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVyc09FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyYnVm
ZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXJPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVy
YnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJET0VTKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCk7Ci1ib29sIFZhbGlkYXRlR2VuRnJhbWVidWZmZXJz
T0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZm
ZXJzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzT0VTKENvbnRleHQgKmNv
bnRleHQsIEdMc2l6ZWkgbiwgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwot
Ym9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwT0VTKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1
ZmZlcnNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdlblJl
bmRlcmJ1ZmZlcnNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkKTsKK2Jvb2wgVmFs
aWRhdGVHZW5lcmF0ZU1pcG1hcE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlw
ZSB0YXJnZXRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNo
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXZPRVMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FUyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUlzRnJhbWVidWZmZXJPRVMoQ29udGV4dCAqY29udGV4
dCwgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlSXNSZW5k
ZXJidWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVy
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlSXNGcmFtZWJ1ZmZlck9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkKTsKK2Jvb2wgVmFs
aWRhdGVJc1JlbmRlcmJ1ZmZlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBSZW5kZXJidWZm
ZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3Jh
Z2VPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQpOwogCiAvLyBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5Ci1ib29s
IFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeU9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldFByb2dyYW1CaW5hcnlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1C
aW5hcnlPRVMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZW51bSAqYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5KTsKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpiaW5hcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZW5ndGgpOwogCiAvLyBHTF9PRVNfbWFwYnVmZmVyCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVy
UG9pbnRlcnZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2lu
dGVydk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICoqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVNYXBCdWZmZXJPRVMoQ29udGV4
dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsIEdMZW51bSBhY2Nlc3MpOwot
Ym9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRp
bmcgdGFyZ2V0UGFja2VkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpjb25zdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVNYXBCdWZmZXJPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsIEdMZW51bSBhY2Nlc3MpOwor
Ym9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZl
ckJpbmRpbmcgdGFyZ2V0UGFja2VkKTsKIAogLy8gR0xfT0VTX21hdHJpeF9wYWxldHRlCi1ib29s
IFZhbGlkYXRlQ3VycmVudFBhbGV0dGVNYXRyaXhPRVMoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IG1hdHJpeHBhbGV0dGVpbmRleCk7Ci1ib29sIFZhbGlkYXRlTG9hZFBhbGV0dGVGcm9tTW9kZWxW
aWV3TWF0cml4T0VTKENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZU1hdHJpeEluZGV4
UG9pbnRlck9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUN1cnJlbnRQYWxldHRl
TWF0cml4T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXRyaXhwYWxldHRlaW5k
ZXgpOworYm9vbCBWYWxpZGF0ZUxvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeE9FUyhjb25z
dCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVNYXRyaXhJbmRleFBvaW50ZXJPRVMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVy
KTsKLWJvb2wgVmFsaWRhdGVXZWlnaHRQb2ludGVyT0VTKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlV2VpZ2h0UG9pbnRlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
b2ludGVyKTsKIAogLy8gR0xfT0VTX3BvaW50X3NpemVfYXJyYXkKLWJvb2wgVmFsaWRhdGVQb2lu
dFNpemVQb2ludGVyT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUG9pbnRTaXpl
UG9pbnRlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsKIAogLy8gR0xfT0VTX3F1ZXJ5X21hdHJp
eAotYm9vbCBWYWxpZGF0ZVF1ZXJ5TWF0cml4eE9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVk
ICptYW50aXNzYSwgR0xpbnQgKmV4cG9uZW50KTsKK2Jvb2wgVmFsaWRhdGVRdWVyeU1hdHJpeHhP
RVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmaXhlZCAqbWFudGlzc2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50ICpleHBvbmVudCk7CiAKIC8vIEdMX09FU190ZXh0dXJlXzNECi1ib29sIFZhbGlk
YXRlQ29tcHJlc3NlZFRleEltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwK
QEAgLTEzMTAsNyArMTI5NSw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRE9F
UyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTEzMjIsNyArMTMwNyw3IEBAIGJv
b2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUyhDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0
YSk7Ci1ib29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0xMzMy
LDE0ICsxMzE3LDE0IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRE9FUyhDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRl
RnJhbWVidWZmZXJUZXh0dXJlM0RPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVG
cmFtZWJ1ZmZlclRleHR1cmUzRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCk7Ci1ib29s
IFZhbGlkYXRlVGV4SW1hZ2UzRE9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRl
eEltYWdlM0RPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCkBAIC0xMzUwLDcgKzEzMzUsNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2Uz
RE9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVU
ZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3ViSW1h
Z2UzRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsCkBAIC0xMzY0LDU0ICsxMzQ5LDYzIEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFn
ZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpwaXhlbHMpOwogCiAvLyBHTF9PRVNfdGV4dHVyZV9ib3JkZXJfY2xhbXAKLWJv
b2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFt
ZXRlcklpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQ
YXJhbWV0ZXJJaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFt
ZXRlckl1aXZPRVMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1l
dGVySXVpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJJaXZPRVMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFy
YW1ldGVySWl2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlU2FtcGxl
clBhcmFtZXRlckl1aXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVySXVpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRh
dGVUZXhQYXJhbWV0ZXJJaXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQ
YXJhbWV0ZXJJaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlckl1
aXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2T0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnBhcmFtcyk7CiAKIC8vIEdMX09FU190ZXh0dXJlX2N1YmVfbWFwCi1ib29sIFZh
bGlkYXRlR2V0VGV4R2VuZnZPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4R2VuaXZPRVMo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleEdlbnh2T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRl
eEdlbmZPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleEdlbmZ2T0VTKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwotYm9v
bCBWYWxpZGF0ZVRleEdlbmlPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVUZXhHZW5pdk9FUyhDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
cyk7Ci1ib29sIFZhbGlkYXRlVGV4R2VueE9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4R2VueHZP
RVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
Zml4ZWQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4R2VuZnZPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4
R2VuaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwor
Ym9vbCBWYWxpZGF0ZUdldFRleEdlbnh2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZpeGVkICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVRleEdlbmZPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwor
Ym9vbCBWYWxpZGF0ZVRleEdlbmZ2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBj
b29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZVRleEdlbmlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhHZW5pdk9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh
cmFtcyk7Citib29sIFZhbGlkYXRlVGV4R2VueE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSk7Citib29sIFZhbGlkYXRl
VGV4R2VueHZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7CiAKIC8vIEdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQKIAogLy8gR0xfT0VTX3RleHR1cmVfc3RvcmFnZV9tdWx0aXNhbXBsZV8yZF9hcnJheQot
Ym9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTE0MjEsMTMgKzE0MTUsMTcgQEAgYm9vbCBW
YWxpZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkc2FtcGxl
bG9jYXRpb25zKTsKIAogLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKLWJvb2wgVmFsaWRh
dGVCaW5kVmVydGV4QXJyYXlPRVMoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJh
eVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzT0VTKENvbnRleHQgKmNv
bnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkKTsKLWJv
b2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBu
LCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJy
YXlPRVMoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCk7Citib29s
IFZhbGlkYXRlQmluZFZlcnRleEFycmF5T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRl
eEFycmF5SUQgYXJyYXlQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5c09F
Uyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuVmVydGV4QXJy
YXlzT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVJc1ZlcnRleEFycmF5
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQpOwog
CiAvLyBHTF9PVlJfbXVsdGl2aWV3Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTXVs
dGl2aWV3T1ZSKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0
dXJlTXVsdGl2aWV3T1ZSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0wxLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0wxLmNwcAppbmRleCA2ZTJhOTE3OTFjNzVmOTYwNzU0YTFjYzY3MmU5MDZkN2Zk
NzJkNDJjLi5jNmRlZDVmYjM1MDk3ZjU2Y2Y2NDEwNjgyMzQ1MGVjZWZkOTU2MTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25H
TDEuY3BwCkBAIC0xMSwxNyArMTEsMTcgQEAKIG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlk
YXRlQWNjdW0oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVlKQorYm9v
bCBWYWxpZGF0ZUFjY3VtKGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVl
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmVnaW4oQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlQmVnaW4oY29uc3QgQ29udGV4dCAq
LCBHTGVudW0gbW9kZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJp
dG1hcChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpdG1hcChjb25zdCBDb250ZXh0
ICosCiAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHhvcmlnLApA
QCAtMzMsMTkyICszMywxOTIgQEAgYm9vbCBWYWxpZGF0ZUJpdG1hcChDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2FsbExpc3QoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGxpc3QpCitib29sIFZhbGlkYXRlQ2FsbExpc3QoY29uc3QgQ29udGV4
dCAqLCBHTHVpbnQgbGlzdCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNhbGxMaXN0cyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIEdMZW51bSB0eXBlLCBjb25z
dCB2b2lkICpsaXN0cykKK2Jvb2wgVmFsaWRhdGVDYWxsTGlzdHMoY29uc3QgQ29udGV4dCAqLCBH
THNpemVpIG4sIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpsaXN0cykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyQWNjdW0oQ29udGV4dCAqY29udGV4dCwgR0xm
bG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSkKK2Jv
b2wgVmFsaWRhdGVDbGVhckFjY3VtKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCByZWQsIEdMZmxv
YXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSkKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyRGVwdGgoQ29udGV4dCAqY29udGV4dCwgR0xkb3Vi
bGUgZGVwdGgpCitib29sIFZhbGlkYXRlQ2xlYXJEZXB0aChjb25zdCBDb250ZXh0ICosIEdMZG91
YmxlIGRlcHRoKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXJJ
bmRleChDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGMpCitib29sIFZhbGlkYXRlQ2xlYXJJbmRl
eChjb25zdCBDb250ZXh0ICosIEdMZmxvYXQgYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUNsaXBQbGFuZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNv
bnN0IEdMZG91YmxlICplcXVhdGlvbikKK2Jvb2wgVmFsaWRhdGVDbGlwUGxhbmUoY29uc3QgQ29u
dGV4dCAqLCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVhdGlvbikKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM2IoQ29udGV4dCAqY29udGV4dCwg
R0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVDb2xv
cjNiKGNvbnN0IENvbnRleHQgKiwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1
ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM2J2KENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMYnl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjNidihjb25z
dCBDb250ZXh0ICosIGNvbnN0IEdMYnl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUNvbG9yM2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgcmVkLCBHTGRv
dWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjNkKGNvbnN0IENv
bnRleHQgKiwgR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM2R2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZUNvbG9yM2R2KGNvbnN0IENv
bnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVDb2xvcjNmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZsb2F0
IGdyZWVuLCBHTGZsb2F0IGJsdWUpCitib29sIFZhbGlkYXRlQ29sb3IzZihjb25zdCBDb250ZXh0
ICosIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjNmdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZUNvbG9yM2Z2KGNvbnN0IENvbnRleHQgKiwg
Y29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNvbG9yM2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQg
Ymx1ZSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjNpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgcmVkLCBH
TGludCBncmVlbiwgR0xpbnQgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUNvbG9yM2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBW
YWxpZGF0ZUNvbG9yM2l2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjNzKENvbnRleHQgKmNvbnRleHQs
IEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUpCitib29sIFZhbGlkYXRl
Q29sb3Izcyhjb25zdCBDb250ZXh0ICosIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBHTHNo
b3J0IGJsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjNz
dihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZUNvbG9y
M3N2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM3ViKENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUg
cmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpCitib29sIFZhbGlkYXRlQ29sb3IzdWIo
Y29uc3QgQ29udGV4dCAqLCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVl
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3IzdWJ2KENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKnYpCitib29sIFZhbGlkYXRlQ29sb3IzdWJ2KGNv
bnN0IENvbnRleHQgKiwgY29uc3QgR0x1Ynl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUNvbG9yM3VpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCByZWQsIEdM
dWludCBncmVlbiwgR0x1aW50IGJsdWUpCitib29sIFZhbGlkYXRlQ29sb3IzdWkoY29uc3QgQ29u
dGV4dCAqLCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3IzdWl2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMdWludCAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1aXYoY29uc3QgQ29udGV4dCAq
LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVDb2xvcjN1cyhDb250ZXh0ICpjb250ZXh0LCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVu
LCBHTHVzaG9ydCBibHVlKQorYm9vbCBWYWxpZGF0ZUNvbG9yM3VzKGNvbnN0IENvbnRleHQgKiwg
R0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM3VzdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTHVzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1c3YoY29uc3QgQ29udGV4dCAq
LCBjb25zdCBHTHVzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUNvbG9yNGIoQ29udGV4dCAqY29udGV4dCwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBH
TGJ5dGUgYmx1ZSwgR0xieXRlIGFscGhhKQorYm9vbCBWYWxpZGF0ZUNvbG9yNGIoY29uc3QgQ29u
dGV4dCAqLCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxw
aGEpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjRidihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYpCitib29sIFZhbGlkYXRlQ29sb3I0YnYoY29u
c3QgQ29udGV4dCAqLCBjb25zdCBHTGJ5dGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDb2xvcjRkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHJlZCwgR0xk
b3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUsIEdMZG91YmxlIGFscGhhKQorYm9vbCBWYWxpZGF0
ZUNvbG9yNGQoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBH
TGRvdWJsZSBibHVlLCBHTGRvdWJsZSBhbHBoYSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUNvbG9yNGR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2
KQorYm9vbCBWYWxpZGF0ZUNvbG9yNGR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUg
KnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjRmdihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZUNvbG9yNGZ2KGNv
bnN0IENvbnRleHQgKiwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUNvbG9yNGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVkLCBHTGlu
dCBncmVlbiwgR0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEpCitib29sIFZhbGlkYXRlQ29sb3I0aShj
b25zdCBDb250ZXh0ICosIEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUsIEdMaW50
IGFscGhhKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0aXYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlQ29sb3I0aXYo
Y29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUNvbG9yNHMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCByZWQsIEdM
c2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSwgR0xzaG9ydCBhbHBoYSkKK2Jvb2wgVmFsaWRhdGVD
b2xvcjRzKGNvbnN0IENvbnRleHQgKiwgR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hv
cnQgYmx1ZSwgR0xzaG9ydCBhbHBoYSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUNvbG9yNHN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29s
IFZhbGlkYXRlQ29sb3I0c3YoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHNob3J0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0dWJ2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMdWJ5dGUgKnYpCitib29sIFZhbGlkYXRlQ29sb3I0dWJ2KGNvbnN0IENv
bnRleHQgKiwgY29uc3QgR0x1Ynl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUNvbG9yNHVpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCByZWQsIEdMdWludCBn
cmVlbiwgR0x1aW50IGJsdWUsIEdMdWludCBhbHBoYSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1aShj
b25zdCBDb250ZXh0ICosIEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUsIEdM
dWludCBhbHBoYSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9y
NHVpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVpbnQgKnYpCitib29sIFZhbGlkYXRlQ29s
b3I0dWl2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0x1aW50ICp2KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0dXMoQ29udGV4dCAqY29udGV4dCwgR0x1c2hv
cnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSwgR0x1c2hvcnQgYWxwaGEpCiti
b29sIFZhbGlkYXRlQ29sb3I0dXMoY29uc3QgQ29udGV4dCAqLCBHTHVzaG9ydCByZWQsIEdMdXNo
b3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSkKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yNHVzdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTHVzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1c3YoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTHVzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNvbG9yTWF0ZXJpYWwoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBtb2Rl
KQorYm9vbCBWYWxpZGF0ZUNvbG9yTWF0ZXJpYWwoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gZmFj
ZSwgR0xlbnVtIG1vZGUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVD
b3B5UGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVBpeGVscyhjb25z
dCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCkBAIC0yMjgsMjIgKzIyOCwyMiBAQCBib29sIFZhbGlkYXRlQ29weVBpeGVscyhDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRl
TGlzdHMoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UpCitib29s
IFZhbGlkYXRlRGVsZXRlTGlzdHMoY29uc3QgQ29udGV4dCAqLCBHTHVpbnQgbGlzdCwgR0xzaXpl
aSByYW5nZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlcHRoUmFu
Z2UoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgbiwgR0xkb3VibGUgZikKK2Jvb2wgVmFsaWRh
dGVEZXB0aFJhbmdlKGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgbiwgR0xkb3VibGUgZikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXIoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIGJ1ZikKK2Jvb2wgVmFsaWRhdGVEcmF3QnVmZmVyKGNvbnN0IENvbnRl
eHQgKiwgR0xlbnVtIGJ1ZikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZURyYXdQaXhlbHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3UGl4ZWxzKGNv
bnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0yNTMsMTAyICsyNTMsMTAyIEBAIGJvb2wgVmFsaWRh
dGVEcmF3UGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVFZGdlRmxhZyhDb250ZXh0ICpjb250ZXh0LCBHTGJvb2xlYW4gZmxhZykKK2Jv
b2wgVmFsaWRhdGVFZGdlRmxhZyhjb25zdCBDb250ZXh0ICosIEdMYm9vbGVhbiBmbGFnKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRWRnZUZsYWd2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMYm9vbGVhbiAqZmxhZykKK2Jvb2wgVmFsaWRhdGVFZGdlRmxhZ3YoY29u
c3QgQ29udGV4dCAqLCBjb25zdCBHTGJvb2xlYW4gKmZsYWcpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmQoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVF
bmQoY29uc3QgQ29udGV4dCAqKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRW5kTGlzdChDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUVuZExpc3QoY29uc3Qg
Q29udGV4dCAqKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRXZhbENv
b3JkMWQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgdSkKK2Jvb2wgVmFsaWRhdGVFdmFsQ29v
cmQxZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xk
b3VibGUgKnUpCitib29sIFZhbGlkYXRlRXZhbENvb3JkMWR2KGNvbnN0IENvbnRleHQgKiwgY29u
c3QgR0xkb3VibGUgKnUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVF
dmFsQ29vcmQxZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHUpCitib29sIFZhbGlkYXRlRXZh
bENvb3JkMWYoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHUpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xmbG9hdCAqdSkKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZnYoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTGZsb2F0ICp1KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
RXZhbENvb3JkMmQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgdSwgR0xkb3VibGUgdikKK2Jv
b2wgVmFsaWRhdGVFdmFsQ29vcmQyZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHUsIEdMZG91
YmxlIHYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQy
ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnUpCitib29sIFZhbGlkYXRlRXZh
bENvb3JkMmR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnUpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQyZihDb250ZXh0ICpjb250ZXh0
LCBHTGZsb2F0IHUsIEdMZmxvYXQgdikKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQyZihjb25zdCBD
b250ZXh0ICosIEdMZmxvYXQgdSwgR0xmbG9hdCB2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlRXZhbENvb3JkMmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxv
YXQgKnUpCitib29sIFZhbGlkYXRlRXZhbENvb3JkMmZ2KGNvbnN0IENvbnRleHQgKiwgY29uc3Qg
R0xmbG9hdCAqdSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2YWxN
ZXNoMShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyKQor
Ym9vbCBWYWxpZGF0ZUV2YWxNZXNoMShjb25zdCBDb250ZXh0ICosIEdMZW51bSBtb2RlLCBHTGlu
dCBpMSwgR0xpbnQgaTIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVF
dmFsTWVzaDIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBp
MiwgR0xpbnQgajEsIEdMaW50IGoyKQorYm9vbCBWYWxpZGF0ZUV2YWxNZXNoMihjb25zdCBDb250
ZXh0ICosIEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xpbnQgaTIsIEdMaW50IGoxLCBHTGludCBq
MikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2YWxQb2ludDEoQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgaSkKK2Jvb2wgVmFsaWRhdGVFdmFsUG9pbnQxKGNvbnN0IENv
bnRleHQgKiwgR0xpbnQgaSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUV2YWxQb2ludDIoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgaSwgR0xpbnQgaikKK2Jvb2wgVmFs
aWRhdGVFdmFsUG9pbnQyKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgaSwgR0xpbnQgaikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZlZWRiYWNrQnVmZmVyKENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1ZmZlcikKK2Jv
b2wgVmFsaWRhdGVGZWVkYmFja0J1ZmZlcihjb25zdCBDb250ZXh0ICosIEdMc2l6ZWkgc2l6ZSwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMZmxvYXQgKmJ1ZmZlcikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUZvZ2koQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVGb2dpKGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUZvZ2l2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
cykKK2Jvb2wgVmFsaWRhdGVGb2dpdihjb25zdCBDb250ZXh0ICosIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUZydXN0dW0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcnVzdHVtKGNvbnN0IENv
bnRleHQgKiwKICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGxlZnQsCiAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSByaWdodCwKICAgICAgICAgICAgICAgICAgICAgIEdMZG91Ymxl
IGJvdHRvbSwKQEAgLTM1OSwxODcgKzM1OSwxODcgQEAgYm9vbCBWYWxpZGF0ZUZydXN0dW0oQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbkxp
c3RzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgcmFuZ2UpCitib29sIFZhbGlkYXRlR2VuTGlz
dHMoY29uc3QgQ29udGV4dCAqLCBHTHNpemVpIHJhbmdlKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5lKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bGFuZSwgR0xkb3VibGUgKmVxdWF0aW9uKQorYm9vbCBWYWxpZGF0ZUdldENsaXBQbGFuZShjb25z
dCBDb250ZXh0ICosIEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3VibGUgKmVxdWF0aW9uKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RG91YmxldihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpkYXRhKQorYm9vbCBWYWxpZGF0ZUdldERv
dWJsZXYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpkYXRh
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TGlnaHRpdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
K2Jvb2wgVmFsaWRhdGVHZXRMaWdodGl2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIGxpZ2h0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRNYXBkdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcXVlcnksIEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZUdldE1hcGR2KGNvbnN0
IENvbnRleHQgKiwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBjb25zdCBHTGRvdWJsZSAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE1hcGZ2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xmbG9hdCAqdikKK2Jv
b2wgVmFsaWRhdGVHZXRNYXBmdihjb25zdCBDb250ZXh0ICosIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBxdWVyeSwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldE1hcGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBxdWVyeSwgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlR2V0TWFwaXYoY29uc3QgQ29udGV4dCAq
LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TWF0ZXJpYWxpdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxp
ZGF0ZUdldE1hdGVyaWFsaXYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gZmFjZSwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0UGl4ZWxNYXBmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBHTGZs
b2F0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXBmdihjb25zdCBDb250ZXh0ICos
IEdMZW51bSBtYXAsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldFBpeGVsTWFwdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBtYXAsIEdMdWludCAqdmFsdWVzKQorYm9vbCBWYWxpZGF0ZUdldFBpeGVsTWFwdWl2KGNvbnN0
IENvbnRleHQgKiwgR0xlbnVtIG1hcCwgY29uc3QgR0x1aW50ICp2YWx1ZXMpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQaXhlbE1hcHVzdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gbWFwLCBHTHVzaG9ydCAqdmFsdWVzKQorYm9vbCBWYWxpZGF0ZUdldFBpeGVs
TWFwdXN2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG1hcCwgY29uc3QgR0x1c2hvcnQgKnZhbHVl
cykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFBvbHlnb25TdGlw
cGxlKENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUgKm1hc2spCitib29sIFZhbGlkYXRlR2V0UG9s
eWdvblN0aXBwbGUoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHVieXRlICptYXNrKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4R2VuZHYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMpCitib29s
IFZhbGlkYXRlR2V0VGV4R2VuZHYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gY29vcmQsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xkb3VibGUgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldFRleEdlbmZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VGV4R2Vu
ZnYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xm
bG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
VGV4R2VuaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VGV4R2VuaXYoY29uc3QgQ29udGV4dCAqLCBH
TGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleEltYWdlKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0VGV4SW1hZ2UoY29uc3QgQ29udGV4dCAqLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlu
ZGV4TWFzayhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFzaykKK2Jvb2wgVmFsaWRhdGVJbmRl
eE1hc2soY29uc3QgQ29udGV4dCAqLCBHTHVpbnQgbWFzaykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUluZGV4ZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBjKQor
Ym9vbCBWYWxpZGF0ZUluZGV4ZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIGMpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleGR2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZG91YmxlICpjKQorYm9vbCBWYWxpZGF0ZUluZGV4ZHYoY29uc3QgQ29udGV4dCAq
LCBjb25zdCBHTGRvdWJsZSAqYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUluZGV4ZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGMpCitib29sIFZhbGlkYXRlSW5k
ZXhmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCBjKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlSW5kZXhmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICpj
KQorYm9vbCBWYWxpZGF0ZUluZGV4ZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICpj
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW5kZXhpKENvbnRleHQg
KmNvbnRleHQsIEdMaW50IGMpCitib29sIFZhbGlkYXRlSW5kZXhpKGNvbnN0IENvbnRleHQgKiwg
R0xpbnQgYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUluZGV4aXYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKmMpCitib29sIFZhbGlkYXRlSW5kZXhpdihj
b25zdCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICpjKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlSW5kZXhzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgYykKK2Jvb2wg
VmFsaWRhdGVJbmRleHMoY29uc3QgQ29udGV4dCAqLCBHTHNob3J0IGMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleHN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMc2hvcnQgKmMpCitib29sIFZhbGlkYXRlSW5kZXhzdihjb25zdCBDb250ZXh0ICosIGNvbnN0
IEdMc2hvcnQgKmMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbml0
TmFtZXMoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVJbml0TmFtZXMoY29uc3QgQ29u
dGV4dCAqKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNMaXN0KENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBsaXN0KQorYm9vbCBWYWxpZGF0ZUlzTGlzdChjb25zdCBD
b250ZXh0ICosIEdMdWludCBsaXN0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlTGlnaHRNb2RlbGkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBw
YXJhbSkKK2Jvb2wgVmFsaWRhdGVMaWdodE1vZGVsaShjb25zdCBDb250ZXh0ICosIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVMaWdodE1vZGVsaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu
dCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxpdihjb25zdCBDb250ZXh0ICosIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUxpZ2h0aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCitib29sIFZhbGlkYXRlTGlnaHRpKGNvbnN0IENvbnRl
eHQgKiwgR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTGlnaHRpdihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFs
aWRhdGVMaWdodGl2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVMaW5lU3RpcHBsZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBmYWN0b3IsIEdMdXNob3J0
IHBhdHRlcm4pCitib29sIFZhbGlkYXRlTGluZVN0aXBwbGUoY29uc3QgQ29udGV4dCAqLCBHTGlu
dCBmYWN0b3IsIEdMdXNob3J0IHBhdHRlcm4pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVMaXN0QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYmFzZSkKK2Jvb2wg
VmFsaWRhdGVMaXN0QmFzZShjb25zdCBDb250ZXh0ICosIEdMdWludCBiYXNlKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTG9hZE1hdHJpeGQoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xkb3VibGUgKm0pCitib29sIFZhbGlkYXRlTG9hZE1hdHJpeGQoY29uc3QgQ29u
dGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUxvYWROYW1lKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBuYW1lKQorYm9vbCBW
YWxpZGF0ZUxvYWROYW1lKGNvbnN0IENvbnRleHQgKiwgR0x1aW50IG5hbWUpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXAxZChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU1hcDFkKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHUxLAogICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlIHUyLApAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgVmFsaWRhdGVNYXAx
ZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
TWFwMWYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXAxZihjb25zdCBDb250ZXh0
ICosCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHUxLAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTIsCkBAIC01NjEsNyAr
NTYxLDcgQEAgYm9vbCBWYWxpZGF0ZU1hcDFmKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXAyZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZU1hcDJkKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHUxLAogICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHUyLApAQCAtNTc2LDcgKzU3Niw3IEBAIGJvb2wgVmFsaWRhdGVNYXAyZChD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWFw
MmYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXAyZihjb25zdCBDb250ZXh0ICos
CiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHUxLAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTIsCkBAIC01OTEsMTcgKzU5
MSwxNyBAQCBib29sIFZhbGlkYXRlTWFwMmYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hcEdyaWQxZChDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyKQorYm9vbCBWYWxpZGF0ZU1hcEdyaWQxZChj
b25zdCBDb250ZXh0ICosIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXBHcmlkMWYoQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIpCitib29sIFZhbGlkYXRlTWFw
R3JpZDFmKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXBHcmlkMmQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXBHcmlkMmQoY29uc3QgQ29udGV4dCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB1biwKICAgICAgICAgICAgICAgICAgICAgICAgR0xk
b3VibGUgdTEsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHUyLApAQCAtNjEyLDcg
KzYxMiw3IEBAIGJvb2wgVmFsaWRhdGVNYXBHcmlkMmQoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hcEdyaWQyZihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZU1hcEdyaWQyZihjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHVuLAogICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHUxLAog
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHUyLApAQCAtNjIzLDcyICs2MjMsNzIgQEAg
Ym9vbCBWYWxpZGF0ZU1hcEdyaWQyZihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlTWF0ZXJpYWxpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBm
YWNlLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZU1hdGVyaWFsaShj
b25zdCBDb250ZXh0ICosIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWF0ZXJpYWxpdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1z
KQorYm9vbCBWYWxpZGF0ZU1hdGVyaWFsaXYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gZmFjZSwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlTXVsdE1hdHJpeGQoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xk
b3VibGUgKm0pCitib29sIFZhbGlkYXRlTXVsdE1hdHJpeGQoY29uc3QgQ29udGV4dCAqLCBjb25z
dCBHTGRvdWJsZSAqbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5l
d0xpc3QoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGxpc3QsIEdMZW51bSBtb2RlKQorYm9vbCBW
YWxpZGF0ZU5ld0xpc3QoY29uc3QgQ29udGV4dCAqLCBHTHVpbnQgbGlzdCwgR0xlbnVtIG1vZGUp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOb3JtYWwzYihDb250ZXh0
ICpjb250ZXh0LCBHTGJ5dGUgbngsIEdMYnl0ZSBueSwgR0xieXRlIG56KQorYm9vbCBWYWxpZGF0
ZU5vcm1hbDNiKGNvbnN0IENvbnRleHQgKiwgR0xieXRlIG54LCBHTGJ5dGUgbnksIEdMYnl0ZSBu
eikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5vcm1hbDNidihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYpCitib29sIFZhbGlkYXRlTm9ybWFsM2J2KGNv
bnN0IENvbnRleHQgKiwgY29uc3QgR0xieXRlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlTm9ybWFsM2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgbngsIEdM
ZG91YmxlIG55LCBHTGRvdWJsZSBueikKK2Jvb2wgVmFsaWRhdGVOb3JtYWwzZChjb25zdCBDb250
ZXh0ICosIEdMZG91YmxlIG54LCBHTGRvdWJsZSBueSwgR0xkb3VibGUgbnopCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOb3JtYWwzZHYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlTm9ybWFsM2R2KGNvbnN0IENvbnRleHQg
KiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVOb3JtYWwzZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wg
VmFsaWRhdGVOb3JtYWwzZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsM2koQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbngsIEdMaW50IG55LCBHTGludCBueikKK2Jvb2wgVmFsaWRhdGVOb3JtYWwz
aShjb25zdCBDb250ZXh0ICosIEdMaW50IG54LCBHTGludCBueSwgR0xpbnQgbnopCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOb3JtYWwzaXYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlTm9ybWFsM2l2KGNvbnN0IENvbnRleHQg
KiwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVOb3JtYWwzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IG54LCBHTHNob3J0IG55LCBHTHNo
b3J0IG56KQorYm9vbCBWYWxpZGF0ZU5vcm1hbDNzKGNvbnN0IENvbnRleHQgKiwgR0xzaG9ydCBu
eCwgR0xzaG9ydCBueSwgR0xzaG9ydCBueikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZU5vcm1hbDNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQor
Ym9vbCBWYWxpZGF0ZU5vcm1hbDNzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMc2hvcnQgKnYp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVPcnRobyhDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZU9ydGhvKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAg
ICAgICAgICBHTGRvdWJsZSBsZWZ0LAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHJpZ2h0
LAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwKQEAgLTY5OSw0NDYgKzY5OSw0
NDYgQEAgYm9vbCBWYWxpZGF0ZU9ydGhvKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQYXNzVGhyb3VnaChDb250ZXh0ICpjb250ZXh0LCBHTGZs
b2F0IHRva2VuKQorYm9vbCBWYWxpZGF0ZVBhc3NUaHJvdWdoKGNvbnN0IENvbnRleHQgKiwgR0xm
bG9hdCB0b2tlbikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBpeGVs
TWFwZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlUGl4ZWxNYXBmdihjb25zdCBDb250ZXh0
ICosIEdMZW51bSBtYXAsIEdMc2l6ZWkgbWFwc2l6ZSwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUGl4ZWxNYXB1aXYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBjb25zdCBHTHVpbnQgKnZh
bHVlcykKK2Jvb2wgVmFsaWRhdGVQaXhlbE1hcHVpdihjb25zdCBDb250ZXh0ICosIEdMZW51bSBt
YXAsIEdMc2l6ZWkgbWFwc2l6ZSwgY29uc3QgR0x1aW50ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQaXhlbE1hcHVzdihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gbWFwLCBHTHNpemVpIG1hcHNpemUsIGNvbnN0IEdMdXNob3J0ICp2YWx1ZXMpCitib29s
IFZhbGlkYXRlUGl4ZWxNYXB1c3YoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gbWFwLCBHTHNpemVp
IG1hcHNpemUsIGNvbnN0IEdMdXNob3J0ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVQaXhlbFN0b3JlZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pCitib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWYoY29uc3QgQ29udGV4
dCAqLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVQaXhlbFRyYW5zZmVyZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pCitib29sIFZhbGlkYXRlUGl4ZWxUcmFuc2ZlcmYoY29uc3Qg
Q29udGV4dCAqLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQaXhlbFRyYW5zZmVyaShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVBpeGVsVHJhbnNmZXJpKGNv
bnN0IENvbnRleHQgKiwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBpeGVsWm9vbShDb250ZXh0ICpjb250ZXh0LCBHTGZs
b2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3RvcikKK2Jvb2wgVmFsaWRhdGVQaXhlbFpvb20oY29u
c3QgQ29udGV4dCAqLCBHTGZsb2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3RvcikKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvbHlnb25Nb2RlKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSkKK2Jvb2wgVmFsaWRhdGVQb2x5Z29uTW9kZShj
b25zdCBDb250ZXh0ICosIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSkKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvbHlnb25TdGlwcGxlKENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMdWJ5dGUgKm1hc2spCitib29sIFZhbGlkYXRlUG9seWdvblN0aXBwbGUoY29uc3Qg
Q29udGV4dCAqLCBjb25zdCBHTHVieXRlICptYXNrKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlUG9wQXR0cmliKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRl
UG9wQXR0cmliKGNvbnN0IENvbnRleHQgKikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVBvcE5hbWUoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVQb3BOYW1l
KGNvbnN0IENvbnRleHQgKikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVB1c2hBdHRyaWIoQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQorYm9vbCBWYWxp
ZGF0ZVB1c2hBdHRyaWIoY29uc3QgQ29udGV4dCAqLCBHTGJpdGZpZWxkIG1hc2spCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQdXNoTmFtZShDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgbmFtZSkKK2Jvb2wgVmFsaWRhdGVQdXNoTmFtZShjb25zdCBDb250ZXh0ICosIEdM
dWludCBuYW1lKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVy
UG9zMmQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKK2Jvb2wgVmFs
aWRhdGVSYXN0ZXJQb3MyZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHgsIEdMZG91YmxlIHkp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZHYoQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlUmFzdGVyUG9z
MmR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZihDb250ZXh0ICpjb250ZXh0LCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSkKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZihjb25zdCBDb250ZXh0
ICosIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUmFzdGVyUG9zMmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYp
Citib29sIFZhbGlkYXRlUmFzdGVyUG9zMmZ2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xmbG9h
dCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJp
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkpCitib29sIFZhbGlkYXRlUmFzdGVy
UG9zMmkoY29uc3QgQ29udGV4dCAqLCBHTGludCB4LCBHTGludCB5KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zMml2KENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJpdihjb25zdCBDb250ZXh0ICos
IGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
UmFzdGVyUG9zMnMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpCitib29s
IFZhbGlkYXRlUmFzdGVyUG9zMnMoY29uc3QgQ29udGV4dCAqLCBHTHNob3J0IHgsIEdMc2hvcnQg
eSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJzdihD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBv
czJzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZChDb250ZXh0ICpjb250ZXh0LCBHTGRv
dWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNk
KGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNkdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZHYo
Y29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZhbGlkYXRlUmFzdGVyUG9zM2YoY29uc3Qg
Q29udGV4dCAqLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zM2Z2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlkYXRlUmFzdGVyUG9zM2Z2KGNvbnN0IENvbnRl
eHQgKiwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVJhc3RlclBvczNpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdM
aW50IHopCitib29sIFZhbGlkYXRlUmFzdGVyUG9zM2koY29uc3QgQ29udGV4dCAqLCBHTGludCB4
LCBHTGludCB5LCBHTGludCB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlUmFzdGVyUG9zM2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBW
YWxpZGF0ZVJhc3RlclBvczNpdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zM3MoQ29udGV4dCAq
Y29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeikKK2Jvb2wgVmFsaWRhdGVS
YXN0ZXJQb3Mzcyhjb25zdCBDb250ZXh0ICosIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0
IHopCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3Mzc3Yo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQ
b3Mzc3YoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zNGQoQ29udGV4dCAqY29udGV4dCwgR0xk
b3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdykKK2Jvb2wgVmFsaWRh
dGVSYXN0ZXJQb3M0ZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM
ZG91YmxlIHosIEdMZG91YmxlIHcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVSYXN0ZXJQb3M0ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCiti
b29sIFZhbGlkYXRlUmFzdGVyUG9zNGR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUg
KnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZihD
b250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpCitib29sIFZhbGlkYXRlUmFzdGVyUG9zNGYoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xm
bG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZnYoY29uc3QgQ29udGV4dCAqLCBjb25z
dCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFz
dGVyUG9zNGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xp
bnQgdykKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0aShjb25zdCBDb250ZXh0ICosIEdMaW50IHgs
IEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVSYXN0ZXJQb3M0aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYp
Citib29sIFZhbGlkYXRlUmFzdGVyUG9zNGl2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xpbnQg
KnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0cyhD
b250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0
IHcpCitib29sIFZhbGlkYXRlUmFzdGVyUG9zNHMoY29uc3QgQ29udGV4dCAqLCBHTHNob3J0IHgs
IEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xz
aG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0c3YoY29uc3QgQ29udGV4dCAqLCBjb25z
dCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVj
dGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeDEsIEdMZG91YmxlIHkxLCBHTGRvdWJsZSB4
MiwgR0xkb3VibGUgeTIpCitib29sIFZhbGlkYXRlUmVjdGQoY29uc3QgQ29udGV4dCAqLCBHTGRv
dWJsZSB4MSwgR0xkb3VibGUgeTEsIEdMZG91YmxlIHgyLCBHTGRvdWJsZSB5MikKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlY3RkdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdMZG91YmxlICp2MikKK2Jvb2wgVmFsaWRhdGVSZWN0
ZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdMZG91YmxlICp2
MikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlY3RmKENvbnRleHQg
KmNvbnRleHQsIEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxvYXQgeTIp
Citib29sIFZhbGlkYXRlUmVjdGYoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHgxLCBHTGZsb2F0
IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlUmVjdGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYxLCBj
b25zdCBHTGZsb2F0ICp2MikKK2Jvb2wgVmFsaWRhdGVSZWN0ZnYoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTGZsb2F0ICp2MSwgY29uc3QgR0xmbG9hdCAqdjIpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVSZWN0aShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4MSwgR0xp
bnQgeTEsIEdMaW50IHgyLCBHTGludCB5MikKK2Jvb2wgVmFsaWRhdGVSZWN0aShjb25zdCBDb250
ZXh0ICosIEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHkyKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVjdGl2KENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMaW50ICp2MSwgY29uc3QgR0xpbnQgKnYyKQorYm9vbCBWYWxpZGF0ZVJlY3Rpdihjb25z
dCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICp2MSwgY29uc3QgR0xpbnQgKnYyKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVjdHMoQ29udGV4dCAqY29udGV4dCwgR0xz
aG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5MikKK2Jvb2wgVmFsaWRh
dGVSZWN0cyhjb25zdCBDb250ZXh0ICosIEdMc2hvcnQgeDEsIEdMc2hvcnQgeTEsIEdMc2hvcnQg
eDIsIEdMc2hvcnQgeTIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVS
ZWN0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdjEsIGNvbnN0IEdMc2hvcnQg
KnYyKQorYm9vbCBWYWxpZGF0ZVJlY3Rzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMc2hvcnQg
KnYxLCBjb25zdCBHTHNob3J0ICp2MikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVJlbmRlck1vZGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCitib29sIFZh
bGlkYXRlUmVuZGVyTW9kZShjb25zdCBDb250ZXh0ICosIEdMZW51bSBtb2RlKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUm90YXRlZChDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSBhbmdsZSwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKK2Jvb2wg
VmFsaWRhdGVSb3RhdGVkKGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgYW5nbGUsIEdMZG91Ymxl
IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVTY2FsZWQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUg
eSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRhdGVTY2FsZWQoY29uc3QgQ29udGV4dCAqLCBHTGRv
dWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlU2VsZWN0QnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgc2l6
ZSwgR0x1aW50ICpidWZmZXIpCitib29sIFZhbGlkYXRlU2VsZWN0QnVmZmVyKGNvbnN0IENvbnRl
eHQgKiwgR0xzaXplaSBzaXplLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcikKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMWQoQ29udGV4dCAqY29udGV4dCwgR0xk
b3VibGUgcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFkKGNvbnN0IENvbnRleHQgKiwgR0xkb3Vi
bGUgcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMWR2
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVRleENv
b3JkMWR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFmKENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9h
dCBzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQxZnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29y
ZDFmdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFpKENvbnRleHQgKmNvbnRleHQsIEdMaW50
IHMpCitib29sIFZhbGlkYXRlVGV4Q29vcmQxaShjb25zdCBDb250ZXh0ICosIEdMaW50IHMpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFpdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFpdihjb25z
dCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4Q29vcmQxcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMpCitib29s
IFZhbGlkYXRlVGV4Q29vcmQxcyhjb25zdCBDb250ZXh0ICosIEdMc2hvcnQgcykKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMXN2KENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQxc3YoY29uc3QgQ29u
dGV4dCAqLCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlVGV4Q29vcmQyZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBzLCBHTGRvdWJs
ZSB0KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkMmQoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSBz
LCBHTGRvdWJsZSB0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4
Q29vcmQyZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlk
YXRlVGV4Q29vcmQyZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMmYoQ29udGV4dCAqY29u
dGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQpCitib29sIFZhbGlkYXRlVGV4Q29vcmQyZihjb25z
dCBDb250ZXh0ICosIEdMZmxvYXQgcywgR0xmbG9hdCB0KQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQyZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xm
bG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJmdihjb25zdCBDb250ZXh0ICosIGNvbnN0
IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhD
b29yZDJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHMsIEdMaW50IHQpCitib29sIFZhbGlkYXRl
VGV4Q29vcmQyaShjb25zdCBDb250ZXh0ICosIEdMaW50IHMsIEdMaW50IHQpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJpdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJpdihjb25zdCBDb250ZXh0
ICosIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlVGV4Q29vcmQycyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCkKK2Jv
b2wgVmFsaWRhdGVUZXhDb29yZDJzKGNvbnN0IENvbnRleHQgKiwgR0xzaG9ydCBzLCBHTHNob3J0
IHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJzdihD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3Jk
MnN2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkM2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3Vi
bGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgcikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDNkKGNv
bnN0IENvbnRleHQgKiwgR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgcikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkM2R2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkM2R2KGNvbnN0
IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVUZXhDb29yZDNmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcywgR0xm
bG9hdCB0LCBHTGZsb2F0IHIpCitib29sIFZhbGlkYXRlVGV4Q29vcmQzZihjb25zdCBDb250ZXh0
ICosIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDNmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkM2Z2KGNvbnN0IENvbnRleHQgKiwgY29u
c3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRl
eENvb3JkM2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcikKK2Jv
b2wgVmFsaWRhdGVUZXhDb29yZDNpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgcywgR0xpbnQgdCwg
R0xpbnQgcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3Jk
M2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVRleENv
b3JkM2l2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDNzKENvbnRleHQgKmNvbnRleHQsIEdMc2hv
cnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpCitib29sIFZhbGlkYXRlVGV4Q29vcmQzcyhjb25z
dCBDb250ZXh0ICosIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDNzdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkM3N2KGNvbnN0IENvbnRl
eHQgKiwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVRleENvb3JkNGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgcywgR0xkb3VibGUg
dCwgR0xkb3VibGUgciwgR0xkb3VibGUgcSkKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRkKGNvbnN0
IENvbnRleHQgKiwgR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciwgR0xkb3VibGUg
cSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkNGR2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3Jk
NGR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDRmKENvbnRleHQgKmNvbnRleHQsIEdMZmxv
YXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSkKK2Jvb2wgVmFsaWRhdGVUZXhD
b29yZDRmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwg
R0xmbG9hdCBxKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29v
cmQ0ZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVU
ZXhDb29yZDRmdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDRpKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpCitib29sIFZhbGlkYXRlVGV4Q29v
cmQ0aShjb25zdCBDb250ZXh0ICosIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDRpdihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRpdihj
b25zdCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0cyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMsIEdM
c2hvcnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEpCitib29sIFZhbGlkYXRlVGV4Q29vcmQ0cyhj
b25zdCBDb250ZXh0ICosIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQg
cSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkNHN2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQ0
c3YoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVGV4R2VuZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgcGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VuZChj
b25zdCBDb250ZXh0ICosIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSBwYXJh
bSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEdlbmR2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAq
cGFyYW1zKQorYm9vbCBWYWxpZGF0ZVRleEdlbmR2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIGNv
b3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhHZW5mKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVRleEdl
bmYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KLWJvb2wgVmFsaWRhdGVUZXhHZW5mdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKQorYm9vbCBWYWxpZGF0ZVRleEdlbmZ2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIGNv
b3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEdlbmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVRleEdlbmko
Y29uc3QgQ29udGV4dCAqLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhHZW5pdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
cykKK2Jvb2wgVmFsaWRhdGVUZXhHZW5pdihjb25zdCBDb250ZXh0ICosIEdMZW51bSBjb29yZCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVRleEltYWdlMUQoY29uc3QgQ29udGV4dCAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCkBAIC0xMTUxLDEyNyAr
MTE1MSwxMjcgQEAgYm9vbCBWYWxpZGF0ZVRleEltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZWQoQ29udGV4dCAqY29u
dGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRhdGVU
cmFuc2xhdGVkKGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3Vi
bGUgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDJkKENv
bnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCitib29sIFZhbGlkYXRlVmVy
dGV4MmQoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4MmR2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleDJkdihjb25zdCBDb250ZXh0
ICosIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVmVydGV4MmYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiti
b29sIFZhbGlkYXRlVmVydGV4MmYoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDJmdihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleDJmdihj
b25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgyaShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGlu
dCB5KQorYm9vbCBWYWxpZGF0ZVZlcnRleDJpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgeCwgR0xp
bnQgeSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDJpdihD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgyaXYo
Y29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleDJzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xz
aG9ydCB5KQorYm9vbCBWYWxpZGF0ZVZlcnRleDJzKGNvbnN0IENvbnRleHQgKiwgR0xzaG9ydCB4
LCBHTHNob3J0IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXgyc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXgyc3YoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4M2QoQ29udGV4dCAqY29udGV4dCwgR0xk
b3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgzZChj
b25zdCBDb250ZXh0ICosIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzZHYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4M2R2KGNvbnN0IENv
bnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXgzZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KQorYm9vbCBWYWxpZGF0ZVZlcnRleDNmKGNvbnN0IENvbnRleHQgKiwgR0xm
bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleDNmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2
KQorYm9vbCBWYWxpZGF0ZVZlcnRleDNmdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQg
KnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzaShDb250
ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQorYm9vbCBWYWxpZGF0ZVZl
cnRleDNpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDNpdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgzaXYoY29uc3QgQ29udGV4
dCAqLCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVZlcnRleDNzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNo
b3J0IHopCitib29sIFZhbGlkYXRlVmVydGV4M3MoY29uc3QgQ29udGV4dCAqLCBHTHNob3J0IHgs
IEdMc2hvcnQgeSwgR0xzaG9ydCB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVmVydGV4M3N2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29s
IFZhbGlkYXRlVmVydGV4M3N2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDRkKENvbnRleHQgKmNv
bnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpCiti
b29sIFZhbGlkYXRlVmVydGV4NGQoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVmVydGV4NGR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2
KQorYm9vbCBWYWxpZGF0ZVZlcnRleDRkdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZG91Ymxl
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4NGYoQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3
KQorYm9vbCBWYWxpZGF0ZVZlcnRleDRmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCB4LCBHTGZs
b2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVmVydGV4NGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYp
Citib29sIFZhbGlkYXRlVmVydGV4NGZ2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xmbG9hdCAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDRpKENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCitib29sIFZh
bGlkYXRlVmVydGV4NGkoY29uc3QgQ29udGV4dCAqLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6
LCBHTGludCB3KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
NGl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRl
eDRpdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4NHMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4
LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KQorYm9vbCBWYWxpZGF0ZVZlcnRleDRz
KGNvbnN0IENvbnRleHQgKiwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9y
dCB3KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4NHN2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4NHN2
KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkdMMTEuY3BwCmluZGV4IGY0MjI2ZjFhNWI0YzFjNjA5NTlkYjM1OTYwNjhhMjVkNjk4
ZTMwYWQuLjY3ZTIzOWY1OGE4N2M3OWEwYTczMjRiYmNkNWUyNDFjYjU1YjMyZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25H
TDExLmNwcApAQCAtMTEsMjAgKzExLDIwIEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxp
ZGF0ZUFyZVRleHR1cmVzUmVzaWRlbnQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVB
cmVUZXh0dXJlc1Jlc2lkZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuICpyZXNpZGVuY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xib29sZWFuICpyZXNpZGVuY2VzKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlQXJyYXlFbGVtZW50KENvbnRleHQgKmNvbnRleHQsIEdMaW50
IGkpCitib29sIFZhbGlkYXRlQXJyYXlFbGVtZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
aW50IGkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4SW1h
Z2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTFEKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0zNiw3ICszNiw3
IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMUQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UxRChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTQ3LDM3ICs0Nyw0MCBAQCBib29s
IFZhbGlkYXRlQ29weVRleFN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVkZ2VGbGFnUG9pbnRlcihDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcikKK2Jvb2wgVmFsaWRhdGVFZGdl
RmxhZ1BvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0
IHZvaWQgKnBvaW50ZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJ
bmRleFBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRl
LCBjb25zdCB2b2lkICpwb2ludGVyKQorYm9vbCBWYWxpZGF0ZUluZGV4UG9pbnRlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQg
KnBvaW50ZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleHVi
KENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUgYykKK2Jvb2wgVmFsaWRhdGVJbmRleHViKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUgYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUluZGV4dWJ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKmMp
Citib29sIFZhbGlkYXRlSW5kZXh1YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1
Ynl0ZSAqYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUludGVybGVh
dmVkQXJyYXlzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc3RyaWRl
LCBjb25zdCB2b2lkICpwb2ludGVyKQorYm9vbCBWYWxpZGF0ZUludGVybGVhdmVkQXJyYXlzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlk
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9wQ2xpZW50QXR0cmliKENv
bnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRlUG9wQ2xpZW50QXR0cmliKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcmlv
cml0aXplVGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcmlvcml0aXpl
VGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnRleHR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICpwcmlvcml0aWVzKQpAQCAtODUsMTIgKzg4LDEyIEBAIGJvb2wgVmFsaWRhdGVQ
cmlvcml0aXplVGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVB1c2hDbGllbnRBdHRyaWIoQ29udGV4dCAqY29udGV4dCwgR0xiaXRm
aWVsZCBtYXNrKQorYm9vbCBWYWxpZGF0ZVB1c2hDbGllbnRBdHRyaWIoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlVGV4U3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRl
eFN1YkltYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTFf
YXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDExX2F1dG9nZW4uaAppbmRleCA2YmJhZGM1ZDQ1OTdiYjFkMTJjYTE0MGNlNDBiYzYxMGNi
ZTE4NzAxLi5hYmQyNTk4NmY4ZmM0NDBjNmQzNThiNjI0OGEzYjk3NTRiZjc1OTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTFf
YXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wxMV9hdXRvZ2VuLmgKQEAgLTE3LDEyICsxNywxMiBAQCBuYW1lc3BhY2UgZ2wKIHsK
IGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRhdGVBcmVUZXh0dXJlc1Jlc2lkZW50KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQXJlVGV4dHVyZXNSZXNpZGVudChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqcmVzaWRlbmNl
cyk7Ci1ib29sIFZhbGlkYXRlQXJyYXlFbGVtZW50KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGkp
OwotYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xlYW4gKnJlc2lkZW5jZXMpOwor
Ym9vbCBWYWxpZGF0ZUFycmF5RWxlbWVudChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBp
KTsKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMzAsMjggKzMwLDI4IEBAIGJvb2wgVmFsaWRhdGVD
b3B5VGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpOwotYm9vbCBWYWxpZGF0
ZUNvcHlUZXhTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVRl
eFN1YkltYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgpOwotYm9vbCBWYWxpZGF0ZUVkZ2VGbGFnUG9pbnRlcihDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcik7Ci1ib29sIFZh
bGlkYXRlSW5kZXhQb2ludGVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHNpemVp
IHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcik7Ci1ib29sIFZhbGlkYXRlSW5kZXh1YihDb250
ZXh0ICpjb250ZXh0LCBHTHVieXRlIGMpOwotYm9vbCBWYWxpZGF0ZUluZGV4dWJ2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKmMpOwotYm9vbCBWYWxpZGF0ZUludGVybGVhdmVkQXJy
YXlzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRWRnZUZsYWdQb2ludGVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsK
K2Jvb2wgVmFsaWRhdGVJbmRleFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKK2Jvb2wgVmFsaWRh
dGVJbmRleHViKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUgYyk7Citib29sIFZhbGlk
YXRlSW5kZXh1YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAqYyk7Citi
b29sIFZhbGlkYXRlSW50ZXJsZWF2ZWRBcnJheXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwotYm9vbCBWYWxpZGF0ZVBvcENsaWVudEF0
dHJpYihDb250ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVQcmlvcml0aXplVGV4dHVyZXMo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQb3BDbGllbnRBdHRyaWIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlUHJpb3JpdGl6ZVRleHR1cmVzKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcHJpb3Jp
dGllcyk7Ci1ib29sIFZhbGlkYXRlUHVzaENsaWVudEF0dHJpYihDb250ZXh0ICpjb250ZXh0LCBH
TGJpdGZpZWxkIG1hc2spOwotYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlMUQoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQdXNoQ2xpZW50QXR0cmliKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMYml0ZmllbGQgbWFzayk7Citib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UxRChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMy5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTMuY3BwCmluZGV4IDZkYjYwMjM0
ZTAwMGRlOWU2ZDEzNGU0Y2I1MzM3MjYxNzJhZmY4N2IuLmJiNjEwMDNhMzI2NTliMGYzZjA4NDU4
NWM2ZGZkMWNlYzUwYmZmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEzLmNwcApAQCAtMTEsNyArMTEsNyBAQAogbmFt
ZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UxRChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTFEKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBA
IC0yMyw3ICsyMyw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UxRChDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTM1LDE1MiArMzUsMTU5IEBAIGJvb2wgVmFsaWRh
dGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleEltYWdlKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCB2b2lkICppbWcpCitib29sIFZhbGlk
YXRlR2V0Q29tcHJlc3NlZFRleEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbWcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVMb2FkVHJhbnNwb3NlTWF0cml4ZChDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGRvdWJsZSAqbSkKK2Jvb2wgVmFsaWRhdGVMb2FkVHJhbnNwb3NlTWF0cml4ZChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhmKENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZmxvYXQgKm0pCitib29sIFZhbGlkYXRlTG9hZFRyYW5zcG9zZU1hdHJpeGYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSkKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRUcmFuc3Bvc2VNYXRyaXhkKENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMZG91YmxlICptKQorYm9vbCBWYWxpZGF0ZU11bHRUcmFuc3Bvc2VNYXRyaXhk
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdFRyYW5zcG9zZU1hdHJpeGYoQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSkKK2Jvb2wgVmFsaWRhdGVNdWx0VHJhbnNwb3NlTWF0
cml4Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFkKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMpCitib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDFkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWR2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9v
bCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0xmbG9hdCBzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWZ2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDFmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDFpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IHMpCitib29sIFZhbGlk
YXRlTXVsdGlUZXhDb29yZDFpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMaW50IHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRl
eENvb3JkMWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2
KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMXMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xzaG9ydCBzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxcyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMXN2KENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDFzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNo
b3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDJkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91
YmxlIHQpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJkKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmR2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZU11bHRp
VGV4Q29vcmQyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3Qg
R0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkMmYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBH
TGZsb2F0IHQpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0KQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZU11bHRp
VGV4Q29vcmQyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3Qg
R0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRp
VGV4Q29vcmQyaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGlu
dCB0KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyaShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0KQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJpdihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMml2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJzKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KQorYm9v
bCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyc3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMnN2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2QoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xk
b3VibGUgcikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2QoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3Vi
bGUgcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29v
cmQzZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYp
Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByKQorYm9vbCBWYWxpZGF0ZU11
bHRpVGV4Q29vcmQzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGZs
b2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzaShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKQor
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNpdihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3Jk
M2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNz
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH
THNob3J0IHIpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM3N2KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDNzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDRkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZDRkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHQsCkBAIC0x
OTAsMjcgKzE5NywzMiBAQCBib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRkKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3Jk
NGR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KQor
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRmdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIs
IEdMaW50IHEpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHEpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGl2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0
aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNHMo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNHMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCBzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNob3J0IHQsCkBAIC0yMjAsNyArMjMyLDcgQEAgYm9vbCBWYWxp
ZGF0ZU11bHRpVGV4Q29vcmQ0cyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRzdihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0
c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxM19hdXRvZ2VuLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTNfYXV0b2dlbi5oCmluZGV4
IDk0YWY5ZmRiZDA5NWVjZTc0NWRmZjc5N2Q3YjUxMjY4ZDkxZWJlMGMuLjhkYjFjOGFjNzI3ZjFk
NzA5MmZlMTc5M2RlZDQ5MWM3NDk3ZDg3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxM19hdXRvZ2VuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEzX2F1dG9nZW4uaApA
QCAtMTcsNyArMTcsNyBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0yNSw3ICsyNSw3IEBAIGJvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMzMsNTIgKzMzLDcyIEBAIGJvb2wgVmFsaWRhdGVD
b21wcmVzc2VkVGV4U3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0Q29t
cHJlc3NlZFRleEltYWdlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCB2b2lkICppbWcpOwotYm9vbCBWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhkKENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKTsKLWJvb2wgVmFsaWRhdGVMb2FkVHJhbnNw
b3NlTWF0cml4ZihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKTsKLWJvb2wgVmFs
aWRhdGVNdWx0VHJhbnNwb3NlTWF0cml4ZChDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJs
ZSAqbSk7Ci1ib29sIFZhbGlkYXRlTXVsdFRyYW5zcG9zZU1hdHJpeGYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xmbG9hdCAqbSk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFkKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMpOwotYm9vbCBWYWxpZGF0ZU11
bHRpVGV4Q29vcmQxZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xk
b3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQx
ZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7Ci1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMaW50IHMpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxaXYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZU11bHRp
VGV4Q29vcmQxcyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMpOwot
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxc3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJkKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwot
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7Ci1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmkoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCk7Ci1ib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDJpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJzKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKLWJvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkMnN2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0
IEdMc2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKTsK
LWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2R2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2Yo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdM
ZmxvYXQgcik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRl
eENvb3JkM2koQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQg
dCwgR0xpbnQgcik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNpdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlTXVsdGlU
ZXhDb29yZDNzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xz
aG9ydCB0LCBHTHNob3J0IHIpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzc3YoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlk
YXRlTXVsdGlUZXhDb29yZDRkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0Q29t
cHJlc3NlZFRleEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICppbWcpOworYm9vbCBWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhk
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKTsKK2Jvb2wgVmFsaWRh
dGVMb2FkVHJhbnNwb3NlTWF0cml4Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZs
b2F0ICptKTsKK2Jvb2wgVmFsaWRhdGVNdWx0VHJhbnNwb3NlTWF0cml4ZChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqbSk7Citib29sIFZhbGlkYXRlTXVsdFRyYW5zcG9z
ZU1hdHJpeGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSk7Citib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMZG91YmxlIHMpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9v
bCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTGZsb2F0IHMpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7Citib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMaW50IHMpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxaXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxp
ZGF0ZU11bHRpVGV4Q29vcmQxcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTHNob3J0IHMpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxc3YoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZhbGlk
YXRlTXVsdGlUZXhDb29yZDJkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZHYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYp
OworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCk7Citib29sIFZhbGlkYXRlTXVsdGlU
ZXhDb29yZDJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBH
TGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCk7Citib29sIFZhbGlkYXRl
TXVsdGlUZXhDb29yZDJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KTsKK2Jvb2wg
VmFsaWRhdGVNdWx0aVRleENvb3JkMnN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSByKTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2R2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KTsK
K2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcik7Citib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM2ko
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCwg
R0xpbnQgcik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZDNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2hvcnQgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHIpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQzc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xz
aG9ydCAqdik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRkKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91
YmxlIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHEpOwotYm9vbCBW
YWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
Y29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZnYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlk
YXRlTXVsdGlUZXhDb29yZDRpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50
IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29v
cmQ0aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwot
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0cyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZU11bHRpVGV4Q29vcmQ0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdik7Citi
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHEpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0aXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpOwor
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNob3J0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2hvcnQgdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCByLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHEpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQ0c3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAq
dik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRzdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKIH0gIC8vIG5hbWVzcGFjZSBnbAog
CiAjZW5kaWYgIC8vIExJQkFOR0xFX1ZBTElEQVRJT05fR0wxM19BVVRPR0VOX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTQu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0
LmNwcAppbmRleCBiZjEyNTc2YTcxYTkxZGNiMzM5NTc2ZjQ1OGEwMGJjOGQ1MzFmOTZjLi42OGZh
OTMzYWRiYmJiNWIyYjk3YjUyMDAzMDZlM2ZjNmZhYzMyZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTQuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNC5jcHAKQEAg
LTExLDMyICsxMSwzNSBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVGb2dDb29y
ZFBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBj
b25zdCB2b2lkICpwb2ludGVyKQorYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkUG9pbnRlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGb2dDb29yZGQoQ29udGV4dCAqY29udGV4dCwgR0xk
b3VibGUgY29vcmQpCitib29sIFZhbGlkYXRlRm9nQ29vcmRkKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZG91YmxlIGNvb3JkKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRm9nQ29vcmRkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqY29vcmQpCiti
b29sIFZhbGlkYXRlRm9nQ29vcmRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRv
dWJsZSAqY29vcmQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGb2dD
b29yZGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBjb29yZCkKK2Jvb2wgVmFsaWRhdGVGb2dD
b29yZGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBjb29yZCkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkZnYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xmbG9hdCAqY29vcmQpCitib29sIFZhbGlkYXRlRm9nQ29vcmRmdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICpjb29yZCkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5cyhDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpmaXJzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCkBAIC00NSw3ICs0OCw3IEBAIGJv
b2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFj
a2VkLApAQCAtNTUsOTcgKzU4LDk3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50cyhD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9p
bnRQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
Citib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVQb2ludFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcml2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2IoQ29u
dGV4dCAqY29udGV4dCwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSkKK2Jv
b2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNiKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYnl0
ZSByZWQsIEdMYnl0ZSBncmVlbiwgR0xieXRlIGJsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNidihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGJ5dGUgKnYpCitib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzYnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xieXRlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBy
ZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKQorYm9vbCBWYWxpZGF0ZVNlY29uZGFy
eUNvbG9yM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBn
cmVlbiwgR0xkb3VibGUgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yM2R2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2
KQorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlU2Vjb25kYXJ5Q29sb3IzZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9h
dCBncmVlbiwgR0xmbG9hdCBibHVlKQorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2YoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg
Ymx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNv
bG9yM2Z2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlkYXRl
U2Vjb25kYXJ5Q29sb3IzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9y
M2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSkK
K2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
aW50IHJlZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNpdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3MoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCByZWQs
IEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xv
cjNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBH
THNob3J0IGJsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNv
bmRhcnlDb2xvcjNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBW
YWxpZGF0ZVNlY29uZGFyeUNvbG9yM3N2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
c2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRh
cnlDb2xvcjN1YihDb250ZXh0ICpjb250ZXh0LCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwg
R0x1Ynl0ZSBibHVlKQorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3ViKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1YnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVTZWNvbmRh
cnlDb2xvcjN1YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VpKENv
bnRleHQgKmNvbnRleHQsIEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUpCiti
b29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VpdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTHVpbnQgKnYpCitib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWl2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VzKENvbnRleHQgKmNvbnRleHQsIEdMdXNo
b3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpCitib29sIFZhbGlkYXRlU2Vj
b25kYXJ5Q29sb3IzdXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1c2hvcnQgcmVkLCBHTHVz
aG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVz
aG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1c3YoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0x1c2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVTZWNvbmRhcnlDb2xvclBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLApAQCAtMTU0LDgyICsxNTcsODIgQEAgYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93UG9zMmQoQ29udGV4dCAqY29udGV4
dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MyZChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93UG9zMmR2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJkdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5KQorYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJmKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlV2luZG93UG9zMmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYp
Citib29sIFZhbGlkYXRlV2luZG93UG9zMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXaW5k
b3dQb3MyaShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5KQorYm9vbCBWYWxpZGF0
ZVdpbmRvd1BvczJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MyaXYoQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlV2luZG93UG9zMml2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93UG9zMnMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9y
dCB4LCBHTHNob3J0IHkpCitib29sIFZhbGlkYXRlV2luZG93UG9zMnMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVXaW5kb3dQb3Myc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9y
dCAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3Myc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVdpbmRvd1BvczNkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM
ZG91YmxlIHopCitib29sIFZhbGlkYXRlV2luZG93UG9zM2QoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNkdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MzZHYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVXaW5kb3dQb3MzZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6KQorYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNmKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MzZnYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MzZnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVdpbmRvd1BvczNpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50
IHksIEdMaW50IHopCitib29sIFZhbGlkYXRlV2luZG93UG9zM2koY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGlu
dCAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MzaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVX
aW5kb3dQb3MzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9y
dCB6KQorYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
c2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVXaW5kb3dQb3Mzc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9y
dCAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3Mzc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNF9hdXRvZ2Vu
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTRf
YXV0b2dlbi5oCmluZGV4IGZjNjNhMjZkZWZhMDBhNTQ2OWNiNTk1ZGY4MDcyYjc5OThmYzc3YWQu
LjY4MzdjZTlmZDhhZWI4ZjM0NmFkYTRhMzk4MmY4OTJmY2Y3OTZhNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNF9hdXRvZ2Vu
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25H
TDE0X2F1dG9nZW4uaApAQCAtMTcsNjEgKzE3LDY0IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3Mg
Q29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkUG9pbnRlcihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwotYm9v
bCBWYWxpZGF0ZUZvZ0Nvb3JkZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBjb29yZCk7Ci1i
b29sIFZhbGlkYXRlRm9nQ29vcmRkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAq
Y29vcmQpOwotYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0
IGNvb3JkKTsKLWJvb2wgVmFsaWRhdGVGb2dDb29yZGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKmNvb3JkKTsKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXMoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGb2dDb29yZFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsKK2Jvb2wgVmFsaWRhdGVGb2dDb29yZGQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgY29vcmQpOworYm9vbCBWYWxpZGF0ZUZv
Z0Nvb3JkZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKmNvb3JkKTsK
K2Jvb2wgVmFsaWRhdGVGb2dDb29yZGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBj
b29yZCk7Citib29sIFZhbGlkYXRlRm9nQ29vcmRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGZsb2F0ICpjb29yZCk7Citib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKmZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkcmF3Y291bnQpOwot
Ym9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlTXVsdGlEcmF3RWxlbWVudHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvbnN0ICppbmRpY2VzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsKLWJvb2wgVmFs
aWRhdGVQb2ludFBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVNlY29u
ZGFyeUNvbG9yM2IoQ29udGV4dCAqY29udGV4dCwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBH
TGJ5dGUgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzYnYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xieXRlICp2KTsKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNkKENv
bnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJs
dWUpOwotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2R2KENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmKENvbnRleHQg
KmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUpOwotYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2Z2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxv
YXQgKnYpOwotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2koQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vjb25k
YXJ5Q29sb3IzaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yM3MoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCByZWQsIEdMc2hv
cnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3Izc3Yo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlU2Vjb25k
YXJ5Q29sb3IzdWIoQ29udGV4dCAqY29udGV4dCwgR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4s
IEdMdWJ5dGUgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWJ2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKnYpOwotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9y
M3VpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJs
dWUpOwotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VpdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTHVpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VzKENvbnRleHQg
KmNvbnRleHQsIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpOwot
Ym9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
THVzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQb2ludGVyKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVBvaW50UGFy
YW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNiKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMYnl0ZSByZWQsIEdMYnl0ZSBncmVlbiwgR0xieXRlIGJsdWUpOworYm9vbCBW
YWxpZGF0ZVNlY29uZGFyeUNvbG9yM2J2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
Ynl0ZSAqdik7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKTsKK2Jv
b2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKTsK
K2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNpKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUpOworYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUpOworYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3N2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3ViKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOwor
Ym9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3Vidihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTHVieXRlICp2KTsKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1aShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlKTsK
K2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0x1aW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1cyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBi
bHVlKTsKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1c3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0x1c2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUG9p
bnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
dHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBv
aW50ZXIpOwotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJkKENvbnRleHQgKmNvbnRleHQsIEdMZG91
YmxlIHgsIEdMZG91YmxlIHkpOwotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJkdihDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlV2luZG93UG9zMmYoQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwotYm9vbCBWYWxpZGF0ZVdpbmRv
d1BvczJmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRh
dGVXaW5kb3dQb3MyaShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5KTsKLWJvb2wg
VmFsaWRhdGVXaW5kb3dQb3MyaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwot
Ym9vbCBWYWxpZGF0ZVdpbmRvd1BvczJzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xz
aG9ydCB5KTsKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3Myc3YoQ29udGV4dCAqY29udGV4dCwgY29u
c3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlV2luZG93UG9zM2QoQ29udGV4dCAqY29udGV4
dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7Ci1ib29sIFZhbGlkYXRlV2lu
ZG93UG9zM2R2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFs
aWRhdGVXaW5kb3dQb3MzZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6KTsKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MzZnYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlV2luZG93UG9zM2koQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7Ci1ib29sIFZhbGlkYXRlV2luZG93UG9z
M2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVXaW5k
b3dQb3MzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6
KTsKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3Mzc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xz
aG9ydCAqdik7Citib29sIFZhbGlkYXRlV2luZG93UG9zMmQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Citib29sIFZhbGlkYXRlV2luZG93UG9zMmR2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVX
aW5kb3dQb3MyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7
Citib29sIFZhbGlkYXRlV2luZG93UG9zMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IHgsIEdMaW50IHkpOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlV2luZG93
UG9zMnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpOworYm9v
bCBWYWxpZGF0ZVdpbmRvd1BvczJzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNo
b3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MzZChjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKK2Jvb2wgVmFsaWRhdGVXaW5k
b3dQb3MzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9v
bCBWYWxpZGF0ZVdpbmRvd1BvczNmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHopOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNmdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQ
b3MzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsK
K2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MzaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOworYm9vbCBWYWxpZGF0ZVdpbmRv
d1BvczNzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKIH0gIC8v
IG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1ZBTElEQVRJT05fR0wxNF9BVVRP
R0VOX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkdMMTUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25HTDE1LmNwcAppbmRleCA5N2IwZTNkYjBiNmJkZWQxYjJjYmQ2OTAwMjdlODdi
Mzk4MGZlNDYyLi42NzAzYjY0YjhiYzVlNmQxYjFlODU2OWVmNjY1YjdlNTVmZmRkZTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
MTUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0wxNS5jcHAKQEAgLTExLDIxICsxMSwyMSBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wg
VmFsaWRhdGVHZXRCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0QnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWlwdHIgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdihDb250ZXh0ICpj
b250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZh
bGlkYXRlR2V0UXVlcnlPYmplY3Rpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlk
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXBCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQsIEdMZW51bSBhY2Nlc3MpCitib29sIFZhbGlkYXRlTWFwQnVmZmVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLCBHTGVu
dW0gYWNjZXNzKQogewogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1X2F1dG9nZW4uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNV9hdXRvZ2Vu
LmgKaW5kZXggMDBjM2VkZjJkODdhMjM1NTNiMzUwM2UwZGJiZWFmMjljMzE1ZTYwNy4uNjM0ZjRl
YzRkOTFjOTM0NjY2NGJkMWQ0ODMyNTM3NWZiM2I4NGU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1X2F1dG9nZW4uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTVfYXV0
b2dlbi5oCkBAIC0xNywxMyArMTcsMTYgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0
OwogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldEJ1ZmZlclN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpcHRyIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2KENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5SUQgaWRQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlTWFwQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFj
a2VkLCBHTGVudW0gYWNjZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVNYXBCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQ
YWNrZWQsIEdMZW51bSBhY2Nlc3MpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8g
TElCQU5HTEVfVkFMSURBVElPTl9HTDE1X0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxX2F1dG9nZW4uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxX2F1dG9nZW4u
aAppbmRleCBkMThhODlhMjY5NTBiYTk5NjRhYmU0NjQxOWUzMzU1Y2Q2MzQ1Zjk4Li4zN2FmNDRl
MzM2Y2Q2ZTFkN2Q1MDFiNzgxYzZlZTEwOGFiODNkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMV9hdXRvZ2VuLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDFfYXV0b2dl
bi5oCkBAIC0xNyw5ICsxNyw5IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAot
Ym9vbCBWYWxpZGF0ZUFjY3VtKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBvcCwgR0xmbG9hdCB2
YWx1ZSk7Ci1ib29sIFZhbGlkYXRlQmVnaW4oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUp
OwotYm9vbCBWYWxpZGF0ZUJpdG1hcChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUFj
Y3VtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBvcCwgR0xmbG9hdCB2YWx1ZSk7Citi
b29sIFZhbGlkYXRlQmVnaW4oY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpOwor
Ym9vbCBWYWxpZGF0ZUJpdG1hcChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4b3JpZywKQEAgLTI3LDE0MyArMjcsMTYx
IEBAIGJvb2wgVmFsaWRhdGVCaXRtYXAoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCB4bW92ZSwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5bW92ZSwK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqYml0bWFwKTsKLWJvb2wgVmFsaWRh
dGVDYWxsTGlzdChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbGlzdCk7Ci1ib29sIFZhbGlkYXRl
Q2FsbExpc3RzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQgKmxpc3RzKTsKLWJvb2wgVmFsaWRhdGVDbGVhckFjY3VtKENvbnRleHQgKmNvbnRleHQs
IEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEp
OwotYm9vbCBWYWxpZGF0ZUNsZWFyRGVwdGgoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgZGVw
dGgpOwotYm9vbCBWYWxpZGF0ZUNsZWFySW5kZXgoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBj
KTsKLWJvb2wgVmFsaWRhdGVDbGlwUGxhbmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5l
LCBjb25zdCBHTGRvdWJsZSAqZXF1YXRpb24pOwotYm9vbCBWYWxpZGF0ZUNvbG9yM2IoQ29udGV4
dCAqY29udGV4dCwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSk7Ci1ib29s
IFZhbGlkYXRlQ29sb3IzYnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xieXRlICp2KTsKLWJv
b2wgVmFsaWRhdGVDb2xvcjNkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHJlZCwgR0xkb3Vi
bGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOwotYm9vbCBWYWxpZGF0ZUNvbG9yM2R2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVDb2xvcjNmKENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUpOwot
Ym9vbCBWYWxpZGF0ZUNvbG9yM2Z2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYp
OwotYm9vbCBWYWxpZGF0ZUNvbG9yM2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVkLCBHTGlu
dCBncmVlbiwgR0xpbnQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3IzaXYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yM3MoQ29udGV4dCAqY29u
dGV4dCwgR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSk7Ci1ib29sIFZh
bGlkYXRlQ29sb3Izc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29s
IFZhbGlkYXRlQ29sb3IzdWIoQ29udGV4dCAqY29udGV4dCwgR0x1Ynl0ZSByZWQsIEdMdWJ5dGUg
Z3JlZW4sIEdMdWJ5dGUgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3IzdWJ2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMdWJ5dGUgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yM3VpKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUpOwotYm9vbCBW
YWxpZGF0ZUNvbG9yM3VpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVpbnQgKnYpOwotYm9v
bCBWYWxpZGF0ZUNvbG9yM3VzKENvbnRleHQgKmNvbnRleHQsIEdMdXNob3J0IHJlZCwgR0x1c2hv
cnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpOwotYm9vbCBWYWxpZGF0ZUNvbG9yM3VzdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTHVzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlQ29sb3I0YihDb250
ZXh0ICpjb250ZXh0LCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlLCBHTGJ5
dGUgYWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNGJ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMYnl0ZSAqdik7Ci1ib29sIFZhbGlkYXRlQ29sb3I0ZChDb250ZXh0ICpjb250ZXh0LCBHTGRv
dWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlLCBHTGRvdWJsZSBhbHBoYSk7
Ci1ib29sIFZhbGlkYXRlQ29sb3I0ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxv
YXQgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVk
LCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNv
bG9yNGl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVD
b2xvcjRzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBHTHNo
b3J0IGJsdWUsIEdMc2hvcnQgYWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHN2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHVidihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICp2KTsKLWJvb2wgVmFsaWRhdGVDb2xvcjR1aShD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlLCBH
THVpbnQgYWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHVpdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTHVpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHVzKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ2FsbExpc3QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGxp
c3QpOworYm9vbCBWYWxpZGF0ZUNhbGxMaXN0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIG4sIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpsaXN0cyk7Citib29sIFZhbGlkYXRlQ2xl
YXJBY2N1bShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCByZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBhbHBoYSk7Citib29sIFZhbGlkYXRlQ2xlYXJEZXB0aChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGRvdWJsZSBkZXB0aCk7Citib29sIFZhbGlkYXRlQ2xlYXJJbmRleChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGMpOworYm9vbCBWYWxpZGF0ZUNsaXBQbGFuZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVh
dGlvbik7Citib29sIFZhbGlkYXRlQ29sb3IzYihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJ5
dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjNi
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYpOworYm9vbCBWYWxpZGF0
ZUNvbG9yM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBn
cmVlbiwgR0xkb3VibGUgYmx1ZSk7Citib29sIFZhbGlkYXRlQ29sb3IzZHYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yM2YoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQg
Ymx1ZSk7Citib29sIFZhbGlkYXRlQ29sb3IzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29u
c3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlQ29sb3IzaShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKTsKK2Jvb2wgVmFsaWRhdGVD
b2xvcjNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citib29sIFZh
bGlkYXRlQ29sb3Izcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHJlZCwgR0xzaG9y
dCBncmVlbiwgR0xzaG9ydCBibHVlKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjNzdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1Yihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0
ZSBibHVlKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0x1Ynl0ZSAqdik7Citib29sIFZhbGlkYXRlQ29sb3IzdWkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7Citib29sIFZh
bGlkYXRlQ29sb3IzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWludCAqdik7
Citib29sIFZhbGlkYXRlQ29sb3IzdXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1c2hvcnQg
cmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSk7Citib29sIFZhbGlkYXRlQ29sb3Iz
dXN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNob3J0ICp2KTsKK2Jvb2wgVmFs
aWRhdGVDb2xvcjRiKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYnl0ZSByZWQsIEdMYnl0ZSBn
cmVlbiwgR0xieXRlIGJsdWUsIEdMYnl0ZSBhbHBoYSk7Citib29sIFZhbGlkYXRlQ29sb3I0YnYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xieXRlICp2KTsKK2Jvb2wgVmFsaWRhdGVD
b2xvcjRkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGRv
dWJsZSByZWQsCisgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBncmVlbiwKKyAgICAgICAg
ICAgICAgICAgICAgIEdMZG91YmxlIGJsdWUsCisgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSBhbHBoYSk7Citib29sIFZhbGlkYXRlQ29sb3I0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yNGZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yNGkoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSwgR0xp
bnQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUNvbG9yNGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjRzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHJlZCwKKyAgICAgICAgICAgICAg
ICAgICAgIEdMc2hvcnQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IGJsdWUs
CisgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IGFscGhhKTsKK2Jvb2wgVmFsaWRhdGVDb2xv
cjRzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFs
aWRhdGVDb2xvcjR1YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAqdik7
Citib29sIFZhbGlkYXRlQ29sb3I0dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJl
ZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSwgR0x1aW50IGFscGhhKTsKK2Jvb2wgVmFsaWRh
dGVDb2xvcjR1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1aW50ICp2KTsKK2Jv
b2wgVmFsaWRhdGVDb2xvcjR1cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgIEdMdXNob3J0IHJlZCwKICAgICAgICAgICAgICAgICAgICAgICBHTHVzaG9ydCBn
cmVlbiwKICAgICAgICAgICAgICAgICAgICAgICBHTHVzaG9ydCBibHVlLAogICAgICAgICAgICAg
ICAgICAgICAgIEdMdXNob3J0IGFscGhhKTsKLWJvb2wgVmFsaWRhdGVDb2xvcjR1c3YoQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0x1c2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yTWF0ZXJp
YWwoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKLWJvb2wgVmFs
aWRhdGVDb3B5UGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29sb3I0dXN2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNob3J0ICp2KTsKK2Jvb2wgVmFsaWRh
dGVDb2xvck1hdGVyaWFsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBHTGVu
dW0gbW9kZSk7Citib29sIFZhbGlkYXRlQ29weVBpeGVscyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlTGlzdHMoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UpOwotYm9vbCBWYWxpZGF0ZURlcHRoUmFu
Z2UoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgbiwgR0xkb3VibGUgZik7Ci1ib29sIFZhbGlk
YXRlRHJhd0J1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYnVmKTsKLWJvb2wgVmFsaWRh
dGVEcmF3UGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRlTGlzdHMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFuZ2UpOworYm9v
bCBWYWxpZGF0ZURlcHRoUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgbiwg
R0xkb3VibGUgZik7Citib29sIFZhbGlkYXRlRHJhd0J1ZmZlcihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gYnVmKTsKK2Jvb2wgVmFsaWRhdGVEcmF3UGl4ZWxzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0
ZUVkZ2VGbGFnKENvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKTsKLWJvb2wgVmFsaWRh
dGVFZGdlRmxhZ3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xib29sZWFuICpmbGFnKTsKLWJv
b2wgVmFsaWRhdGVFbmQoQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlRW5kTGlzdChD
b250ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZChDb250ZXh0ICpjb250
ZXh0LCBHTGRvdWJsZSB1KTsKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZHYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xkb3VibGUgKnUpOwotYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDFmKENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgdSk7Ci1ib29sIFZhbGlkYXRlRXZhbENvb3JkMWZ2KENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnUpOwotYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJk
KENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHUsIEdMZG91YmxlIHYpOwotYm9vbCBWYWxpZGF0
ZUV2YWxDb29yZDJkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdSk7Ci1ib29s
IFZhbGlkYXRlRXZhbENvb3JkMmYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB1LCBHTGZsb2F0
IHYpOwotYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGZsb2F0ICp1KTsKLWJvb2wgVmFsaWRhdGVFdmFsTWVzaDEoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMik7Ci1ib29sIFZhbGlkYXRlRXZhbE1lc2gyKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xpbnQgaTIsIEdMaW50IGox
LCBHTGludCBqMik7Ci1ib29sIFZhbGlkYXRlRXZhbFBvaW50MShDb250ZXh0ICpjb250ZXh0LCBH
TGludCBpKTsKLWJvb2wgVmFsaWRhdGVFdmFsUG9pbnQyKENvbnRleHQgKmNvbnRleHQsIEdMaW50
IGksIEdMaW50IGopOwotYm9vbCBWYWxpZGF0ZUZlZWRiYWNrQnVmZmVyKENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1ZmZlcik7Ci1ib29sIFZh
bGlkYXRlRm9naShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsK
LWJvb2wgVmFsaWRhdGVGb2dpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUZydXN0dW0oQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVFZGdlRmxhZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJvb2xlYW4g
ZmxhZyk7Citib29sIFZhbGlkYXRlRWRnZUZsYWd2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMYm9vbGVhbiAqZmxhZyk7Citib29sIFZhbGlkYXRlRW5kKGNvbnN0IENvbnRleHQgKmNv
bnRleHQpOworYm9vbCBWYWxpZGF0ZUVuZExpc3QoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citi
b29sIFZhbGlkYXRlRXZhbENvb3JkMWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUg
dSk7Citib29sIFZhbGlkYXRlRXZhbENvb3JkMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZG91YmxlICp1KTsKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGZsb2F0IHUpOworYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDFmdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp1KTsKK2Jvb2wgVmFsaWRhdGVFdmFsQ29v
cmQyZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB1LCBHTGRvdWJsZSB2KTsKK2Jv
b2wgVmFsaWRhdGVFdmFsQ29vcmQyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xk
b3VibGUgKnUpOworYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJmKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZmxvYXQgdSwgR0xmbG9hdCB2KTsKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQyZnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdSk7Citib29sIFZhbGlkYXRlRXZh
bE1lc2gxKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xp
bnQgaTIpOworYm9vbCBWYWxpZGF0ZUV2YWxNZXNoMihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyLCBHTGludCBqMSwgR0xpbnQgajIpOworYm9v
bCBWYWxpZGF0ZUV2YWxQb2ludDEoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgaSk7Citi
b29sIFZhbGlkYXRlRXZhbFBvaW50Mihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBpLCBH
TGludCBqKTsKK2Jvb2wgVmFsaWRhdGVGZWVkYmFja0J1ZmZlcihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpidWZmZXIpOworYm9vbCBWYWxpZGF0ZUZvZ2koY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRl
Rm9naXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVGcnVzdHVtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBsZWZ0LAogICAgICAgICAgICAgICAgICAgICAg
R0xkb3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBib3R0b20sCiAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICBH
TGRvdWJsZSB6TmVhciwKICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHpGYXIpOwotYm9v
bCBWYWxpZGF0ZUdlbkxpc3RzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgcmFuZ2UpOwotYm9v
bCBWYWxpZGF0ZUdldENsaXBQbGFuZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIEdM
ZG91YmxlICplcXVhdGlvbik7Ci1ib29sIFZhbGlkYXRlR2V0RG91YmxldihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRMaWdo
dGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRNYXBkdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVHZXRNYXBm
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMZmxvYXQg
KnYpOwotYm9vbCBWYWxpZGF0ZUdldE1hcGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZUdldE1hdGVyaWFsaXYo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7Ci1ib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXBmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
bWFwLCBHTGZsb2F0ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUdldFBpeGVsTWFwdWl2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMdWludCAqdmFsdWVzKTsKLWJvb2wgVmFsaWRhdGVH
ZXRQaXhlbE1hcHVzdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBHTHVzaG9ydCAqdmFs
dWVzKTsKLWJvb2wgVmFsaWRhdGVHZXRQb2x5Z29uU3RpcHBsZShDb250ZXh0ICpjb250ZXh0LCBH
THVieXRlICptYXNrKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5kdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlR2V0VGV4R2VuZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4R2VuaXYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldFRleEltYWdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2VuTGlzdHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSByYW5nZSk7Citib29sIFZh
bGlkYXRlR2V0Q2xpcFBsYW5lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwg
Y29uc3QgR0xkb3VibGUgKmVxdWF0aW9uKTsKK2Jvb2wgVmFsaWRhdGVHZXREb3VibGV2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xkb3VibGUgKmRhdGEpOwor
Ym9vbCBWYWxpZGF0ZUdldExpZ2h0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxp
Z2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dE1hcGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVy
eSwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZUdldE1hcGZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgY29uc3QgR0xmbG9hdCAq
dik7Citib29sIFZhbGlkYXRlR2V0TWFwaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlR2V0
TWF0ZXJpYWxpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRQaXhlbE1hcGZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7
Citib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXB1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIG1hcCwgY29uc3QgR0x1aW50ICp2YWx1ZXMpOworYm9vbCBWYWxpZGF0ZUdldFBpeGVsTWFw
dXN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIGNvbnN0IEdMdXNob3J0ICp2
YWx1ZXMpOworYm9vbCBWYWxpZGF0ZUdldFBvbHlnb25TdGlwcGxlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMdWJ5dGUgKm1hc2spOworYm9vbCBWYWxpZGF0ZUdldFRleEdlbmR2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRU
ZXhHZW5mdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhHZW5pdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xp
bnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4SW1hZ2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscyk7Ci1ib29sIFZh
bGlkYXRlSW5kZXhNYXNrKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrKTsKLWJvb2wgVmFs
aWRhdGVJbmRleGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgYyk7Ci1ib29sIFZhbGlkYXRl
SW5kZXhkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqYyk7Ci1ib29sIFZhbGlk
YXRlSW5kZXhmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgYyk7Ci1ib29sIFZhbGlkYXRlSW5k
ZXhmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICpjKTsKLWJvb2wgVmFsaWRhdGVJ
bmRleGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgYyk7Ci1ib29sIFZhbGlkYXRlSW5kZXhpdihD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqYyk7Ci1ib29sIFZhbGlkYXRlSW5kZXhzKENv
bnRleHQgKmNvbnRleHQsIEdMc2hvcnQgYyk7Ci1ib29sIFZhbGlkYXRlSW5kZXhzdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICpjKTsKLWJvb2wgVmFsaWRhdGVJbml0TmFtZXMoQ29u
dGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlSXNMaXN0KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBsaXN0KTsKLWJvb2wgVmFsaWRhdGVMaWdodE1vZGVsaShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVMaWdodE1vZGVsaXYoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVMaWdodGkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVMaWdodGl2KENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVMaW5lU3RpcHBsZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBmYWN0b3IsIEdMdXNo
b3J0IHBhdHRlcm4pOwotYm9vbCBWYWxpZGF0ZUxpc3RCYXNlKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBiYXNlKTsKLWJvb2wgVmFsaWRhdGVMb2FkTWF0cml4ZChDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGRvdWJsZSAqbSk7Ci1ib29sIFZhbGlkYXRlTG9hZE5hbWUoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IG5hbWUpOwotYm9vbCBWYWxpZGF0ZU1hcDFkKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRh
dGVJbmRleE1hc2soY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IG1hc2spOworYm9vbCBW
YWxpZGF0ZUluZGV4ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBjKTsKK2Jvb2wg
VmFsaWRhdGVJbmRleGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICpj
KTsKK2Jvb2wgVmFsaWRhdGVJbmRleGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBj
KTsKK2Jvb2wgVmFsaWRhdGVJbmRleGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKmMpOworYm9vbCBWYWxpZGF0ZUluZGV4aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGludCBjKTsKK2Jvb2wgVmFsaWRhdGVJbmRleGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMaW50ICpjKTsKK2Jvb2wgVmFsaWRhdGVJbmRleHMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xzaG9ydCBjKTsKK2Jvb2wgVmFsaWRhdGVJbmRleHN2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMc2hvcnQgKmMpOworYm9vbCBWYWxpZGF0ZUluaXROYW1lcyhjb25zdCBDb250
ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVJc0xpc3QoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGxpc3QpOworYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZUxpZ2h0
TW9kZWxpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUxpZ2h0aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZUxp
Z2h0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUxpbmVTdGlwcGxlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVybik7Citib29sIFZh
bGlkYXRlTGlzdEJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJhc2UpOworYm9v
bCBWYWxpZGF0ZUxvYWRNYXRyaXhkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91
YmxlICptKTsKK2Jvb2wgVmFsaWRhdGVMb2FkTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgbmFtZSk7Citib29sIFZhbGlkYXRlTWFwMWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIHUxLAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHUyLAogICAgICAgICAgICAg
ICAgICAgIEdMaW50IHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICBHTGludCBvcmRlciwKICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcG9pbnRzKTsKLWJvb2wgVmFsaWRhdGVN
YXAxZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hcDFmKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHUxLAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTIsCiAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgIEdMaW50IG9y
ZGVyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7Ci1ib29sIFZh
bGlkYXRlTWFwMmQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXAyZChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsCiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUg
dTIsCkBAIC0xNzQsNyArMTkyLDcgQEAgYm9vbCBWYWxpZGF0ZU1hcDJkKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgR0xpbnQgdnN0cmlkZSwKICAgICAgICAgICAgICAgICAg
ICBHTGludCB2b3JkZXIsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnBvaW50
cyk7Ci1ib29sIFZhbGlkYXRlTWFwMmYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVN
YXAyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB1MSwKICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHUyLApAQCAtMTg1LDEzMSArMjAzLDEzNCBAQCBib29sIFZhbGlkYXRlTWFwMmYo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICBHTGludCB2c3RyaWRlLAogICAg
ICAgICAgICAgICAgICAgIEdMaW50IHZvcmRlciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwb2ludHMpOwotYm9vbCBWYWxpZGF0ZU1hcEdyaWQxZChDb250ZXh0ICpjb250ZXh0
LCBHTGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyKTsKLWJvb2wgVmFsaWRhdGVNYXBH
cmlkMWYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIp
OwotYm9vbCBWYWxpZGF0ZU1hcEdyaWQyZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZU1hcEdyaWQxZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB1biwgR0xkb3VibGUgdTEs
IEdMZG91YmxlIHUyKTsKK2Jvb2wgVmFsaWRhdGVNYXBHcmlkMWYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIpOworYm9vbCBWYWxpZGF0ZU1h
cEdyaWQyZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB1biwKICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZG91YmxlIHUyLAogICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2
biwKICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjEsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlIHYyKTsKLWJvb2wgVmFsaWRhdGVNYXBHcmlkMmYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXBHcmlkMmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdW4sCiAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgdTEsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTIsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHZuLAogICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYx
LAogICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyKTsKLWJvb2wgVmFsaWRhdGVNYXRl
cmlhbGkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pOwotYm9vbCBWYWxpZGF0ZU1hdGVyaWFsaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRl
TXVsdE1hdHJpeGQoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKm0pOwotYm9vbCBW
YWxpZGF0ZU5ld0xpc3QoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGxpc3QsIEdMZW51bSBtb2Rl
KTsKLWJvb2wgVmFsaWRhdGVOb3JtYWwzYihDb250ZXh0ICpjb250ZXh0LCBHTGJ5dGUgbngsIEdM
Ynl0ZSBueSwgR0xieXRlIG56KTsKLWJvb2wgVmFsaWRhdGVOb3JtYWwzYnYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xieXRlICp2KTsKLWJvb2wgVmFsaWRhdGVOb3JtYWwzZChDb250ZXh0ICpj
b250ZXh0LCBHTGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56KTsKLWJvb2wgVmFs
aWRhdGVOb3JtYWwzZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9v
bCBWYWxpZGF0ZU5vcm1hbDNmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsK
LWJvb2wgVmFsaWRhdGVOb3JtYWwzaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBueCwgR0xpbnQg
bnksIEdMaW50IG56KTsKLWJvb2wgVmFsaWRhdGVOb3JtYWwzaXYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZU5vcm1hbDNzKENvbnRleHQgKmNvbnRleHQs
IEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnopOwotYm9vbCBWYWxpZGF0ZU5vcm1h
bDNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVP
cnRobyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hdGVyaWFsaShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Citi
b29sIFZhbGlkYXRlTWF0ZXJpYWxpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFj
ZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVNdWx0
TWF0cml4ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqbSk7Citib29s
IFZhbGlkYXRlTmV3TGlzdChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbGlzdCwgR0xl
bnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZU5vcm1hbDNiKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnopOworYm9vbCBWYWxpZGF0ZU5vcm1hbDNi
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYpOworYm9vbCBWYWxpZGF0
ZU5vcm1hbDNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIG54LCBHTGRvdWJsZSBu
eSwgR0xkb3VibGUgbnopOworYm9vbCBWYWxpZGF0ZU5vcm1hbDNkdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlTm9ybWFsM2Z2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZU5vcm1h
bDNpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG54LCBHTGludCBueSwgR0xpbnQgbnop
OworYm9vbCBWYWxpZGF0ZU5vcm1hbDNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGludCAqdik7Citib29sIFZhbGlkYXRlTm9ybWFsM3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xzaG9ydCBueCwgR0xzaG9ydCBueSwgR0xzaG9ydCBueik7Citib29sIFZhbGlkYXRlTm9ybWFs
M3N2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxp
ZGF0ZU9ydGhvKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgR0xk
b3VibGUgbGVmdCwKICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSByaWdodCwKICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSBib3R0b20sCiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUg
dG9wLAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHpOZWFyLAogICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHpGYXIpOwotYm9vbCBWYWxpZGF0ZVBhc3NUaHJvdWdoKENvbnRleHQgKmNv
bnRleHQsIEdMZmxvYXQgdG9rZW4pOwotYm9vbCBWYWxpZGF0ZVBpeGVsTWFwZnYoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZXMpOwotYm9vbCBWYWxpZGF0ZVBpeGVsTWFwdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBt
YXAsIEdMc2l6ZWkgbWFwc2l6ZSwgY29uc3QgR0x1aW50ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0
ZVBpeGVsTWFwdXN2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkgbWFwc2l6
ZSwgY29uc3QgR0x1c2hvcnQgKnZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWYoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKLWJvb2wgVmFsaWRh
dGVQaXhlbFRyYW5zZmVyZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwotYm9vbCBWYWxpZGF0ZVBpeGVsVHJhbnNmZXJpKENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVBpeGVsWm9vbShDb250ZXh0
ICpjb250ZXh0LCBHTGZsb2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3Rvcik7Ci1ib29sIFZhbGlk
YXRlUG9seWdvbk1vZGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBtb2Rl
KTsKLWJvb2wgVmFsaWRhdGVQb2x5Z29uU3RpcHBsZShDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
THVieXRlICptYXNrKTsKLWJvb2wgVmFsaWRhdGVQb3BBdHRyaWIoQ29udGV4dCAqY29udGV4dCk7
Ci1ib29sIFZhbGlkYXRlUG9wTmFtZShDb250ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVQ
dXNoQXR0cmliKENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzayk7Ci1ib29sIFZhbGlk
YXRlUHVzaE5hbWUoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IG5hbWUpOwotYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczJkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOwot
Ym9vbCBWYWxpZGF0ZVJhc3RlclBvczJkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJs
ZSAqdik7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zMmYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9h
dCB4LCBHTGZsb2F0IHkpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJmdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyaShDb250ZXh0
ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyaXYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBv
czJzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKLWJvb2wgVmFsaWRh
dGVSYXN0ZXJQb3Myc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29s
IFZhbGlkYXRlUmFzdGVyUG9zM2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3Vi
bGUgeSwgR0xkb3VibGUgeik7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zM2R2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZihDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKLWJvb2wgVmFs
aWRhdGVSYXN0ZXJQb3MzZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Ci1i
b29sIFZhbGlkYXRlUmFzdGVyUG9zM2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xpbnQgeik7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zM2l2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzcyhDb250ZXh0ICpjb250
ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKLWJvb2wgVmFsaWRhdGVSYXN0
ZXJQb3Mzc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlk
YXRlUmFzdGVyUG9zNGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwg
R0xkb3VibGUgeiwgR0xkb3VibGUgdyk7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zNGR2KENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0
ZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZs
b2F0IHcpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRmdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0aShDb250ZXh0ICpjb250ZXh0
LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKLWJvb2wgVmFsaWRhdGVSYXN0
ZXJQb3M0aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczRzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNo
b3J0IHosIEdMc2hvcnQgdyk7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zNHN2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZVJlY3RkKENvbnRleHQgKmNv
bnRleHQsIEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwgR0xkb3VibGUgeDIsIEdMZG91YmxlIHky
KTsKLWJvb2wgVmFsaWRhdGVSZWN0ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYxLCBjb25zdCBHTGRvdWJsZSAqdjIpOwotYm9vbCBWYWxpZGF0ZVJlY3RmKENvbnRleHQgKmNv
bnRleHQsIEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxvYXQgeTIpOwot
Ym9vbCBWYWxpZGF0ZVJlY3RmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2MSwg
Y29uc3QgR0xmbG9hdCAqdjIpOwotYm9vbCBWYWxpZGF0ZVJlY3RpKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHkyKTsKLWJvb2wgVmFsaWRhdGVS
ZWN0aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYxLCBjb25zdCBHTGludCAqdjIp
OwotYm9vbCBWYWxpZGF0ZVJlY3RzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeDEsIEdMc2hv
cnQgeTEsIEdMc2hvcnQgeDIsIEdMc2hvcnQgeTIpOwotYm9vbCBWYWxpZGF0ZVJlY3RzdihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIpOwotYm9v
bCBWYWxpZGF0ZVJlbmRlck1vZGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpOwotYm9v
bCBWYWxpZGF0ZVJvdGF0ZWQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgYW5nbGUsIEdMZG91
YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwotYm9vbCBWYWxpZGF0ZVNjYWxlZChDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKLWJvb2wg
VmFsaWRhdGVTZWxlY3RCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBzaXplLCBHTHVp
bnQgKmJ1ZmZlcik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQxZChDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSBzKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFkdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQxZihDb250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IHMpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMWZ2KENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMWkoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgcyk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQxaXYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMXMoQ29udGV4dCAq
Y29udGV4dCwgR0xzaG9ydCBzKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFzdihDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJkKENvbnRl
eHQgKmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOwotYm9vbCBWYWxpZGF0ZVRleENv
b3JkMmR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRh
dGVUZXhDb29yZDJmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcywgR0xmbG9hdCB0KTsKLWJv
b2wgVmFsaWRhdGVUZXhDb29yZDJmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2
KTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHMsIEdM
aW50IHQpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMml2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJzKENvbnRleHQgKmNvbnRleHQsIEdM
c2hvcnQgcywgR0xzaG9ydCB0KTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJzdihDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDNkKENvbnRl
eHQgKmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpOwotYm9vbCBW
YWxpZGF0ZVRleENvb3JkM2R2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsK
LWJvb2wgVmFsaWRhdGVUZXhDb29yZDNmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcywgR0xm
bG9hdCB0LCBHTGZsb2F0IHIpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkM2Z2KENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkM2koQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcik7Ci1ib29sIFZhbGlkYXRlVGV4
Q29vcmQzaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0
ZVRleENvb3JkM3MoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hv
cnQgcik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQzc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0ZChDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsKLWJvb2wgVmFs
aWRhdGVUZXhDb29yZDRkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1i
b29sIFZhbGlkYXRlVGV4Q29vcmQ0ZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHMsIEdMZmxv
YXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkNGZ2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3Jk
NGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSk7
Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQg
KnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkNHMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBz
LCBHTHNob3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBxKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29y
ZDRzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVU
ZXhHZW5kKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRv
dWJsZSBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4R2VuZHYoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpOwotYm9vbCBW
YWxpZGF0ZVRleEdlbmYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleEdlbmZ2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZVRleEdlbmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVUZXhHZW5pdihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7
Ci1ib29sIFZhbGlkYXRlVGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVBhc3NUaHJvdWdoKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdG9rZW4pOworYm9v
bCBWYWxpZGF0ZVBpeGVsTWFwZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hcCwg
R0xzaXplaSBtYXBzaXplLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworYm9vbCBWYWxpZGF0ZVBp
eGVsTWFwdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkgbWFw
c2l6ZSwgY29uc3QgR0x1aW50ICp2YWx1ZXMpOworYm9vbCBWYWxpZGF0ZVBpeGVsTWFwdXN2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1h
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG1hcHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1c2hvcnQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRlUGl4
ZWxTdG9yZWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh
cmFtKTsKK2Jvb2wgVmFsaWRhdGVQaXhlbFRyYW5zZmVyZihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVBpeGVsVHJhbnNm
ZXJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwor
Ym9vbCBWYWxpZGF0ZVBpeGVsWm9vbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHhm
YWN0b3IsIEdMZmxvYXQgeWZhY3Rvcik7Citib29sIFZhbGlkYXRlUG9seWdvbk1vZGUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKK2Jvb2wgVmFsaWRh
dGVQb2x5Z29uU3RpcHBsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICpt
YXNrKTsKK2Jvb2wgVmFsaWRhdGVQb3BBdHRyaWIoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citi
b29sIFZhbGlkYXRlUG9wTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRh
dGVQdXNoQXR0cmliKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzayk7Citi
b29sIFZhbGlkYXRlUHVzaE5hbWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IG5hbWUp
OworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91
YmxlIHgsIEdMZG91YmxlIHkpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJkdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlUmFzdGVyUG9z
MmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOworYm9vbCBW
YWxpZGF0ZVJhc3RlclBvczJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0
ICp2KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGludCB4LCBHTGludCB5KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyaXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKK2Jvb2wgVmFsaWRh
dGVSYXN0ZXJQb3Myc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7
Citib29sIFZhbGlkYXRlUmFzdGVyUG9zM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7Citib29sIFZhbGlkYXRlUmFzdGVyUG9zM2R2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRh
dGVSYXN0ZXJQb3MzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZnYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlUmFzdGVyUG9zM2koY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7Citib29sIFZh
bGlkYXRlUmFzdGVyUG9zM2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2
KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3Mzcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNo
b3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3Mzc3Yo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZhbGlkYXRl
UmFzdGVyUG9zNGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUg
eSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyk7Citib29sIFZhbGlkYXRlUmFzdGVyUG9zNGR2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVS
YXN0ZXJQb3M0Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6LCBHTGZsb2F0IHcpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRmdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQ
b3M0aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBH
TGludCB3KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0aXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdyk7
Citib29sIFZhbGlkYXRlUmFzdGVyUG9zNHN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVJlY3RkKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwgR0xkb3VibGUgeDIsIEdMZG91YmxlIHkyKTsKK2Jv
b2wgVmFsaWRhdGVSZWN0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYxLCBjb25zdCBHTGRvdWJsZSAqdjIpOworYm9vbCBWYWxpZGF0ZVJlY3RmKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxvYXQg
eTIpOworYm9vbCBWYWxpZGF0ZVJlY3Rmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGZsb2F0ICp2MSwgY29uc3QgR0xmbG9hdCAqdjIpOworYm9vbCBWYWxpZGF0ZVJlY3RpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHky
KTsKK2Jvb2wgVmFsaWRhdGVSZWN0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xp
bnQgKnYxLCBjb25zdCBHTGludCAqdjIpOworYm9vbCBWYWxpZGF0ZVJlY3RzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMc2hvcnQgeDEsIEdMc2hvcnQgeTEsIEdMc2hvcnQgeDIsIEdMc2hvcnQg
eTIpOworYm9vbCBWYWxpZGF0ZVJlY3Rzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
THNob3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIpOworYm9vbCBWYWxpZGF0ZVJlbmRlck1vZGUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZVJvdGF0
ZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgYW5nbGUsIEdMZG91YmxlIHgsIEdM
ZG91YmxlIHksIEdMZG91YmxlIHopOworYm9vbCBWYWxpZGF0ZVNjYWxlZChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKK2Jvb2wgVmFs
aWRhdGVTZWxlY3RCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBzaXplLCBj
b25zdCBHTHVpbnQgKmJ1ZmZlcik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQxZChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFkdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlVGV4
Q29vcmQxZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHMpOworYm9vbCBWYWxpZGF0
ZVRleENvb3JkMWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwor
Ym9vbCBWYWxpZGF0ZVRleENvb3JkMWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcyk7
Citib29sIFZhbGlkYXRlVGV4Q29vcmQxaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkMXMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xzaG9ydCBzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFzdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJkKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpOworYm9vbCBWYWxpZGF0
ZVRleENvb3JkMmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsK
K2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
cywgR0xmbG9hdCB0KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJmdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHMsIEdMaW50IHQpOworYm9vbCBWYWxpZGF0ZVRleENv
b3JkMml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFs
aWRhdGVUZXhDb29yZDJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgcywgR0xzaG9y
dCB0KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDNkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpOworYm9vbCBWYWxp
ZGF0ZVRleENvb3JkM2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2
KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDNmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxv
YXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkM2Z2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVRl
eENvb3JkM2koY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQg
cik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQzaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29u
c3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkM3MoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcik7Citib29sIFZhbGlkYXRlVGV4
Q29vcmQzc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Citib29s
IFZhbGlkYXRlVGV4Q29vcmQ0ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBzLCBH
TGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29y
ZDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZh
bGlkYXRlVGV4Q29vcmQ0Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHMsIEdMZmxv
YXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkNGZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVRl
eENvb3JkNGkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQg
ciwgR0xpbnQgcSk7Citib29sIFZhbGlkYXRlVGV4Q29vcmQ0aXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkNHMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBx
KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhHZW5kKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSBwYXJhbSk7Citib29sIFZh
bGlkYXRlVGV4R2VuZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVRleEdlbmYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVRleEdlbmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZVRleEdlbmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhHZW5pdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4SW1hZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsCkBAIC0zMTgsMzEgKzMzOSwzMSBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2Ux
RChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUcmFuc2xhdGVkKENv
bnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwotYm9v
bCBWYWxpZGF0ZVZlcnRleDJkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91Ymxl
IHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDJkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRv
dWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4MmYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9h
dCB4LCBHTGZsb2F0IHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDJmdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgyaShDb250ZXh0ICpjb250
ZXh0LCBHTGludCB4LCBHTGludCB5KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgyaXYoQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDJzKENvbnRleHQg
KmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgyc3Yo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4
M2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7
Ci1ib29sIFZhbGlkYXRlVmVydGV4M2R2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91Ymxl
ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzZnYoQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4M2koQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4M2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXgzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9y
dCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4NGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUg
eCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdyk7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4NGR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXg0ZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9h
dCB6LCBHTGZsb2F0IHcpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDRmdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0aShDb250ZXh0ICpjb250
ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXg0aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0
ZVZlcnRleDRzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0
IHosIEdMc2hvcnQgdyk7Ci1ib29sIFZhbGlkYXRlVmVydGV4NHN2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZWQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7Citib29sIFZh
bGlkYXRlVmVydGV4MmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3Vi
bGUgeSk7Citib29sIFZhbGlkYXRlVmVydGV4MmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgyZihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Citib29sIFZhbGlkYXRlVmVydGV4MmZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVZl
cnRleDJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkpOworYm9vbCBW
YWxpZGF0ZVZlcnRleDJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7
Citib29sIFZhbGlkYXRlVmVydGV4MnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4
LCBHTHNob3J0IHkpOworYm9vbCBWYWxpZGF0ZVZlcnRleDJzdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgzZChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXgzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleDNmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOworYm9vbCBWYWxpZGF0ZVZlcnRleDNmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXgzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXgzaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xp
bnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleDNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
c2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOworYm9vbCBWYWxpZGF0ZVZlcnRleDNzdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXg0ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBH
TGRvdWJsZSB6LCBHTGRvdWJsZSB3KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0ZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleDRm
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHos
IEdMZmxvYXQgdyk7Citib29sIFZhbGlkYXRlVmVydGV4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleDRpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOworYm9vbCBW
YWxpZGF0ZVZlcnRleDRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7
Citib29sIFZhbGlkYXRlVmVydGV4NHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4
LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0
c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7CiB9ICAvLyBuYW1l
c3BhY2UgZ2wKIAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0dMMV9BVVRPR0VOX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMMi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMMi5jcHAKaW5kZXggMGIzOTNmMTY5Y2FlMzIyNzFmNTA0NjAwMTNhNzQwMjUxNGRkYWUz
NS4uNjQ3NzUwODkyYWFmNzlhNGFjYTJmMjVhMzdmZDllMzU1YjMwMTljMiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wyLmNw
cApAQCAtMTEsODcgKzExLDk0IEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxpZGF0ZUdl
dFZlcnRleEF0dHJpYmR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBu
YW1lLCBHTGRvdWJsZSAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmR2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcGFyYW1zKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWQoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4KQorYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYjFkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3Vi
bGUgeCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjFkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQor
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliMXMoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
LCBHTHNob3J0IHgpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMXMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBHTHNob3J0IHgpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxc3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFzdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZChDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliMmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliMmR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMmR2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIycyhDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5KQorYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwg
R0xzaG9ydCB4LCBHTHNob3J0IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWIyc3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJzdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZChDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHopCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZHYoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWIzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRv
dWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0
dHJpYjNzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0
IHksIEdMc2hvcnQgeikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzcyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHop
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzc3Yo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjNzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0TmJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xieXRlICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROYnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Tml2KENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliNE5pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
NE5zdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiti
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE5zdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnViKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliNE51Yihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1Ynl0ZSB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSB5
LApAQCAtMTAxLDI3ICsxMDgsMjcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROdWIoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjROdWJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1Ynl0
ZSAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnVidihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnVpdihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0
TnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRO
dXN2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpCiti
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRidihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMYnl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0YnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRkKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgeSwKQEAgLTEzMSwxNyArMTM4LDE3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWI0ZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliNGR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGR2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0aXYoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWI0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGlu
dCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjRzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2hvcnQgeSwKQEAgLTE1MSwyMiArMTU4LDIyIEBAIGJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0cyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHN2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0c3Yo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHVidihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpCitib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliNHVidihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMdWJ5dGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0dWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0x1aW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjR1aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dXN2KENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliNHVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
dXNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDJfYXV0b2dlbi5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDJfYXV0b2dlbi5o
CmluZGV4IDdiZDM1NTkxNzAwYTYzNzlkNGRiNGY4YjFlY2MxNDg4Yjg1NDQ4MjguLmZjNzkzZjlk
OTgyMDk5ZmJmMzNkNTZlZGEzMWI1YmYwZWFiNTVjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wyX2F1dG9nZW4uaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMl9hdXRvZ2Vu
LmgKQEAgLTE3LDUwICsxNyw1NyBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAK
LWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliMWQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4KTsK
LWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMXMoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHNob3J0IHgpOwotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYjFzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hv
cnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJkKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliMmR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUg
KnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJzKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjJzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNkKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliM2R2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3Vi
bGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNzKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7Ci1ib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliM3N2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE5idihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliNE5pdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnN2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51
YihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmR2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcGFyYW1zKTsKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMZG91YmxlIHgpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFkdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWIxcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIEdMc2hvcnQgeCk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMXN2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliMmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBH
TGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZHYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliMnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBHTHNob3J0IHgsIEdMc2hvcnQgeSk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
MnN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAq
dik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGRvdWJsZSB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHopOworYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzcyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5
LCBHTHNob3J0IHopOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNzdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjROYnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBj
b25zdCBHTGJ5dGUgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROaXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliNE5zdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROdWIoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWJ5dGUgeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUg
dyk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51YnYoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0
TnVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdik7Ci1i
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51c3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTHVzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGJ2KENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xieXRlICp2KTsKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0ZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjROdWJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0x1Ynl0ZSAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOworYm9vbCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjROdXN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwg
Y29uc3QgR0x1c2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRidihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdik7Citib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliNGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xkb3VibGUgdyk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGR2KENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjRpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0cyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWI0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGlu
dCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaG9ydCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2hvcnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB3KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWI0c3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHVp
dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdik7Ci1ib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliNHVzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMdXNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0c3YoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgY29uc3QgR0x1Ynl0ZSAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHVpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMdXNob3J0ICp2KTsKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5k
aWYgIC8vIExJQkFOR0xFX1ZBTElEQVRJT05fR0wyX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzLmNwcAppbmRl
eCAwNWIyOGIxNTBlMDc0NzFlOWIzZTI5MDNhNzdjZjAyMGQ4MTAwMTA4Li4yOTVkNDMzYTA0NzIx
MmQ0MWY5ODNlZmJlNGEzMTQ3ZmYzNDZhNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMy5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMuY3BwCkBAIC0xMCwxMiArMTAs
MTIgQEAKIG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlkYXRlQmVnaW5Db25kaXRpb25hbFJl
bmRlcihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBtb2RlKQorYm9vbCBWYWxp
ZGF0ZUJlZ2luQ29uZGl0aW9uYWxSZW5kZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGlkLCBHTGVudW0gbW9kZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUJpbmRGcmFnRGF0YUxvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmlu
ZEZyYWdEYXRhTG9jYXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY29sb3IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQpAQCAtMjMsMTcgKzIzLDE3IEBAIGJv
b2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xhbXBDb2xvcihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gY2xhbXApCitib29sIFZhbGlkYXRlQ2xhbXBDb2xvcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gY2xhbXApCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmRDb25kaXRpb25hbFJlbmRlcihD
b250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUVuZENvbmRpdGlvbmFsUmVuZGVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVGcmFtZWJ1ZmZlclRleHR1cmUxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZy
YW1lYnVmZmVyVGV4dHVyZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCwKQEAgLTQzLDcgKzQzLDcg
QEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTFEKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRChD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTNEKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRleHRhcmdldFBhY2tlZCwKQEAgLTU0LDgyICs1NCw4MiBAQCBib29sIFZhbGlkYXRlRnJhbWVi
dWZmZXJUZXh0dXJlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxaShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIEdMaW50IHgpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTFpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xpbnQgeCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMXVpKENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IHgpCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTF1
aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliSTF1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMmkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBH
TGludCB4LCBHTGludCB5KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkyaShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHkpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMml2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
aW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliSTJ1aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQg
eSkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5KQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTJ1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTJ1
aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM2ko
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6
KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM2l2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
STNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTN1
aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1
aW50IHopCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTN1aShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHopCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM3VpdihDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMdWludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkk0YnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGJ5
dGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRidihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0c3YoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0
c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1
YnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KQorYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dXN2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0x1c2hvcnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1c3YoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzEuY3BwCmluZGV4IDQzMWQ5Yzg4ODIwODgyMjFl
MTI3MzU3ZDc0M2JkNjViNDU2OTk2OTUuLmZjOTVhOTlkNmI5ODAzZTc2OWZhM2ZiOGJjNTM1MjUw
YTk5YmQ3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0wzMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDMxLmNwcApAQCAtMTEsMTcgKzExLDE3IEBACiBuYW1lc3BhY2Ug
Z2wKIHsKIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1OYW1lKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybU5hbWUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9y
bUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICp1bmlmb3JtTmFtZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICp1bmlmb3JtTmFt
ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByaW1pdGl2ZVJlc3Rh
cnRJbmRleChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlUHJp
bWl0aXZlUmVzdGFydEluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCkK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMV9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzFfYXV0b2dlbi5oCmluZGV4IDJh
NGE0YWY1ZWM2YTE2ODVmYzVkOGZjMDRmMjY2MzIyOTU5ZmE5YzYuLmEzMjUwYjFjODMwOTk2MTdi
MTM4OTk3MDljNjFhOWU0ODBmOTFiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMV9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMxX2F1dG9nZW4uaApAQCAt
MTcsMTMgKzE3LDEzIEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBW
YWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1OYW1lKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0QWN0aXZlVW5pZm9ybU5hbWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUluZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICp1bmlmb3JtTmFtZSk7Ci1ib29sIFZhbGlk
YXRlUHJpbWl0aXZlUmVzdGFydEluZGV4KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqdW5pZm9y
bU5hbWUpOworYm9vbCBWYWxpZGF0ZVByaW1pdGl2ZVJlc3RhcnRJbmRleChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAg
Ly8gTElCQU5HTEVfVkFMSURBVElPTl9HTDMxX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMi5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzIuY3BwCmluZGV4
IDEwZTAzN2QxMTZlY2Q3ODFhYWRmM2ZkYmEzNGZjZjVjMzhmZWUwZmIuLjQ1OGUyMGE4YjRmZjBl
YzAwMzUwN2M5MTFjZmQ3MzkwZWY4NGM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMi5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyLmNwcApAQCAtMTEsNyArMTEs
NyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0Jh
c2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50
c0Jhc2VWZXJ0ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlLApA
QCAtMjIsMTIgKzIyLDEyIEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0
ZXgoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVByb3Zva2luZ1ZlcnRleChDb250ZXh0ICpjb250ZXh0LCBQcm92b2tpbmdWZXJ0ZXhDb252ZW50
aW9uIG1vZGVQYWNrZWQpCitib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9kZVBhY2tlZCkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRNdWx0aXNhbXBsZShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRNdWx0aXNhbXBsZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKQEAgLTM4LDcgKzM4LDcgQEAgYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRNdWx0
aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4SW1hZ2UzRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlVGV4SW1hZ2UzRE11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyX2F1dG9nZW4u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMl9h
dXRvZ2VuLmgKaW5kZXggOWNkNjQwNmYyNTE1MzE1ODIyODRiNjZlNjZmMzNhNDA5MzMzMWFmMy4u
NzYxYjFlZTM5MmFhM2Y4MGUwNDFkMDI3YjU1OWY1MWRhMmJjMmNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyX2F1dG9nZW4u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
MzJfYXV0b2dlbi5oCkBAIC0xNywyMiArMTcsMjIgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBD
b250ZXh0OwogCi1ib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29uc3Qg
KmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgZHJhd2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqYmFzZXZlcnRleCk7Ci1ib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4KENv
bnRleHQgKmNvbnRleHQsIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9kZVBhY2tlZCk7Ci1i
b29sIFZhbGlkYXRlVGV4SW1hZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlUHJvdm9raW5nVmVydGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByb3Zva2lu
Z1ZlcnRleENvbnZlbnRpb24gbW9kZVBhY2tlZCk7Citib29sIFZhbGlkYXRlVGV4SW1hZ2UyRE11
bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTNETXVsdGlz
YW1wbGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTNETXVsdGlzYW1w
bGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzLmNwcAppbmRleCAyYzljZGM1MDBjODZhNzI1OTk3
ZWM0ZTA3NGNmMmQxZjY1YzE3MzA1Li40OGY1NmUwNjJjODM5MzcxNTQ3NzRkMzUzNWI5MzVjMDM1
Njc0NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkdMMzMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0wzMy5jcHAKQEAgLTExLDcgKzExLDcgQEAKIG5hbWVzcGFjZSBnbAog
ewogCi1ib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgY29sb3JOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKQEAgLTIwLDE0NyArMjAsMTY1IEBAIGJvb2wg
VmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yUDN1aShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9yKQorYm9vbCBWYWxpZGF0ZUNvbG9yUDN1aShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9yKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3JQM3VpdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcikKK2Jvb2wgVmFsaWRhdGVDb2xv
clAzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQg
KmNvbG9yKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3JQNHVp
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpCitib29sIFZhbGlk
YXRlQ29sb3JQNHVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQg
Y29sb3IpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvclA0dWl2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvbG9yKQorYm9v
bCBWYWxpZGF0ZUNvbG9yUDR1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdWludCAqY29sb3IpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRGcmFnRGF0YUluZGV4KENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCitib29sIFZhbGlkYXRlR2V0RnJhZ0RhdGFJbmRl
eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgY29uc3Qg
R0xjaGFyICpuYW1lKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
UXVlcnlPYmplY3RpNjR2KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQ2NCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVy
eUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKnBhcmFtcykKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHYo
Q29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFy
YW1zKQorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQ2NCAqcGFyYW1zKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAxdWkoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQorYm9vbCBW
YWxpZGF0ZU11bHRpVGV4Q29vcmRQMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMXVpdihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQorYm9vbCBW
YWxpZGF0ZU11bHRpVGV4Q29vcmRQMXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqY29vcmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAydWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRl
eHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmRQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0g
dHlwZSwgR0x1aW50IGNvb3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZU11bHRpVGV4Q29vcmRQMnVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmRQMnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqY29vcmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFAzdWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0
eXBlLCBHTHVpbnQgY29vcmRzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQM3VpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNv
b3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29v
cmRQM3VpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdWludCAqY29vcmRzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQM3Vpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqY29vcmRzKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWko
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29v
cmRzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQNHVpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQNHVpdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29v
cmRzKQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQNHVpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqY29vcmRzKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsUDN1aShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdHlwZSwgR0x1aW50IGNvb3JkcykKK2Jvb2wgVmFsaWRhdGVOb3JtYWxQM3VpKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsUDN1aXYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQorYm9vbCBWYWxpZGF0ZU5vcm1hbFAz
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNv
b3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRl
cihDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkKQor
Ym9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlE
IGlkLCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQM3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
eXBlLCBHTHVpbnQgY29sb3IpCitib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQM3VpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclAzdWl2KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvbG9yKQorYm9vbCBWYWxpZGF0
ZVNlY29uZGFyeUNvbG9yUDN1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdWludCAqY29sb3IpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVUZXhDb29yZFAxdWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBj
b29yZHMpCitib29sIFZhbGlkYXRlVGV4Q29vcmRQMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4Q29vcmRQMXVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwg
Y29uc3QgR0x1aW50ICpjb29yZHMpCitib29sIFZhbGlkYXRlVGV4Q29vcmRQMXVpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFAydWkoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCitib29sIFZhbGlkYXRlVGV4Q29v
cmRQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRz
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmRQMnVpdihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCitib29s
IFZhbGlkYXRlVGV4Q29vcmRQMnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXhDb29yZFAzdWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWlu
dCBjb29yZHMpCitib29sIFZhbGlkYXRlVGV4Q29vcmRQM3VpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQM3VpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCitib29sIFZhbGlkYXRlVGV4Q29vcmRQM3Vpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFA0dWkoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCitib29sIFZhbGlkYXRlVGV4
Q29vcmRQNHVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29v
cmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmRQNHVp
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiti
b29sIFZhbGlkYXRlVGV4Q29vcmRQNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliUDF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gbm9ybWFsaXplZCwKQEAgLTE2OSw3ICsxODcsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliUDF1aShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliUDF1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJQMXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gbm9ybWFsaXplZCwKQEAgLTE3OCw3ICsxOTYsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliUDF1aXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYlAydWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBu
b3JtYWxpemVkLApAQCAtMTg3LDcgKzIwNSw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQ
MnVpKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJQMnVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYlAydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBu
b3JtYWxpemVkLApAQCAtMTk2LDcgKzIxNCw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQ
MnVpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliUDN1aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYlAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1h
bGl6ZWQsCkBAIC0yMDUsNyArMjIzLDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAzdWko
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYlAzdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliUDN1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1h
bGl6ZWQsCkBAIC0yMTQsNyArMjMyLDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAzdWl2
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJQNHVpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliUDR1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXpl
ZCwKQEAgLTIyMyw3ICsyNDEsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDR1aShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliUDR1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQ
NHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXpl
ZCwKQEAgLTIzMiwzMiArMjUwLDMyIEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpdihD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVy
dGV4UDJ1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IHZhbHVlKQorYm9v
bCBWYWxpZGF0ZVZlcnRleFAydWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IEdMdWludCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZl
cnRleFAydWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZh
bHVlKQorYm9vbCBWYWxpZGF0ZVZlcnRleFAydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVmVydGV4UDN1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwg
R0x1aW50IHZhbHVlKQorYm9vbCBWYWxpZGF0ZVZlcnRleFAzdWkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleFAzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHVpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZVZlcnRleFAzdWl2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4UDR1aShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IHZhbHVlKQorYm9vbCBWYWxpZGF0ZVZlcnRleFA0dWko
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCB2YWx1ZSkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleFA0dWl2KENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZVZl
cnRleFA0dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVp
bnQgKnZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzX2F1dG9nZW4uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzM19hdXRvZ2Vu
LmgKaW5kZXggYzFjMTAwOTg5ZGI5NzRiMDc1ZjhlMmJlYTNmODBkMjI2ZmQ5YzE2YS4uNDU3ZTRm
M2JiNzRlZDE5MjE1NGEzZDk0OTBlMzc2MDFlYTkyNjA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzX2F1dG9nZW4uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzNfYXV0
b2dlbi5oCkBAIC0xNywxMDAgKzE3LDEwNSBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRl
eHQ7CiAKLWJvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBjb2xvck51bWJlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0
ZUNvbG9yUDN1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9yKTsK
LWJvb2wgVmFsaWRhdGVDb2xvclAzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHVpbnQgKmNvbG9yKTsKLWJvb2wgVmFsaWRhdGVDb2xvclA0dWkoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcik7Ci1ib29sIFZhbGlkYXRlQ29sb3JQNHVp
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcik7Ci1i
b29sIFZhbGlkYXRlR2V0RnJhZ0RhdGFJbmRleChDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdGk2NHYoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZFBhY2tlZCwgR0xl
bnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
dWk2NHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb2xvclAzdWkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcik7Citib29sIFZhbGlkYXRl
Q29sb3JQM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1
aW50ICpjb2xvcik7Citib29sIFZhbGlkYXRlQ29sb3JQNHVpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpOworYm9vbCBWYWxpZGF0ZUNvbG9yUDR1aXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29sb3Ip
OworYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsK
K2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0dWk2NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQ2NCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDF1aShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29y
ZHMpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMXVpdihDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50NjQgKnBhcmFtcyk7
Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAxdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkUDF1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAydWko
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29v
cmRzKTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDJ1aXYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDJ1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpOworYm9vbCBWYWxpZGF0
ZU11bHRpVGV4Q29vcmRQMnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqY29vcmRzKTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDN1aShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29y
ZHMpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQM3VpdihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQM3VpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7Citib29sIFZhbGlkYXRl
TXVsdGlUZXhDb29yZFAzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQNHVpKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jk
cyk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWl2KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVN
dWx0aVRleENvb3JkUDR1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKmNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlTm9ybWFsUDN1aShDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlTm9ybWFs
UDN1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRz
KTsKLWJvb2wgVmFsaWRhdGVRdWVyeUNvdW50ZXIoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBp
ZFBhY2tlZCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5
Q29sb3JQM3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpOwot
Ym9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUDN1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdWludCAqY29sb3IpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkUDF1aShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7Ci1ib29sIFZhbGlk
YXRlVGV4Q29vcmRQMXVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1
aW50ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkUDJ1aShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQMnVp
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpOwot
Ym9vbCBWYWxpZGF0ZVRleENvb3JkUDN1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwg
R0x1aW50IGNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQM3VpdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZVRl
eENvb3JkUDR1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7
Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQNHVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x1aW50ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAxdWko
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOb3JtYWxQM3VpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVOb3Jt
YWxQM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50
ICpjb29yZHMpOworYm9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRlcihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBRdWVyeUlEIGlkUGFja2VkLCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkKTsKK2Jvb2wgVmFs
aWRhdGVTZWNvbmRhcnlDb2xvclAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5
cGUsIEdMdWludCBjb2xvcik7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQM3Vpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcik7Citi
b29sIFZhbGlkYXRlVGV4Q29vcmRQMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
eXBlLCBHTHVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAxdWl2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Citib29s
IFZhbGlkYXRlVGV4Q29vcmRQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBl
LCBHTHVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAydWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Citib29sIFZh
bGlkYXRlVGV4Q29vcmRQM3VpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBH
THVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAzdWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Citib29sIFZhbGlk
YXRlVGV4Q29vcmRQNHVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVp
bnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFA0dWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Citib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliUDF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
bm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2YWx1ZSk7
Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDF1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMnVpKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDJ1aShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDJ1
aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMnVpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJQM3VpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliUDN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9y
bWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2YWx1ZSk7Ci1i
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDN1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJQM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDR1aShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDR1aXYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXhQMnVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUp
OwotYm9vbCBWYWxpZGF0ZVZlcnRleFAydWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhQM3VpKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eFAzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZhbHVl
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhQNHVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBl
LCBHTHVpbnQgdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVZlcnRleFA0dWl2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUp
OworYm9vbCBWYWxpZGF0ZVZlcnRleFAydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0eXBlLCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhQM3VpKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUpOworYm9vbCBW
YWxpZGF0ZVZlcnRleFAzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBj
b25zdCBHTHVpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhQNHVpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUpOworYm9vbCBWYWxpZGF0ZVZl
cnRleFA0dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVp
bnQgKnZhbHVlKTsKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1ZB
TElEQVRJT05fR0wzM19BVVRPR0VOX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMM19hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMM19hdXRvZ2VuLmgKaW5kZXggOWYw
MjJlMjUwZTM5ZmY3YTIxZTBhODM1YzcyZmM3ODYzYjYzYTRlMS4uOGU3Y2VlMzE1N2FmZDE2MmM0
NDM5YmQ3YTg1OTFjMmMyZjQ2YmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDNfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzX2F1dG9nZW4uaApAQCAtMTcs
NDIgKzE3LDQyIEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxp
ZGF0ZUJlZ2luQ29uZGl0aW9uYWxSZW5kZXIoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBH
TGVudW0gbW9kZSk7Ci1ib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb24oQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCZWdpbkNvbmRpdGlvbmFsUmVuZGVyKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZUJpbmRG
cmFnRGF0YUxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNvbG9yLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlQ2xh
bXBDb2xvcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gY2xhbXApOwot
Ym9vbCBWYWxpZGF0ZUVuZENvbmRpdGlvbmFsUmVuZGVyKENvbnRleHQgKmNvbnRleHQpOwotYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlQ2xhbXBDb2xvcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gY2xhbXApOworYm9vbCBWYWxpZGF0ZUVuZENvbmRpdGlvbmFsUmVuZGVyKGNvbnN0IENv
bnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTFEKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRleHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0QoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJn
ZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCk7Ci1i
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTFpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xpbnQgeCk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTFpdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJMXVpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IHgpOwotYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0x1aW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMmkoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5KTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJMml2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkydWkoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50IHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkkydWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50
ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM2koQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJM2l2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQg
KnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzdWkoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB6KTsKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJM3VpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
dWludCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRidihDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliSTRzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYp
OwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1
c3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTFpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgR0xpbnQgeCk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTFpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0x1aW50IHgpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxdWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKK2Jvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJMmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBH
TGludCB4LCBHTGludCB5KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMml2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYkkydWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
LCBHTHVpbnQgeCwgR0x1aW50IHkpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkydWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM2koY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJM2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xp
bnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzdWkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB6KTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMdWludCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRidihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0
dWJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAq
dik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1c3YoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdik7CiB9ICAvLyBuYW1lc3BhY2UgZ2wK
IAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0dMM19BVVRPR0VOX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNC5j
cHAKaW5kZXggYTZiNWZhMTA2ZWIzNThmZGVhZDViMzZjZTFkMGYzZjA0NTE2MzMwNi4uYmNmYjYw
NmE3OTQ3M2JmMjQ5MWU4YzYwMDQ0MmEwYjM4NmI3ZmY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0LmNwcApAQCAtMTEs
MTcgKzExLDE3IEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlJ
bmRleGVkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgUXVl
cnlJRCBpZCkKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5SW5kZXhlZChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIFF1ZXJ5SUQgaWQpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2soQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQpCitib29s
IFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBtb2RlLCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrU3RyZWFtKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrU3RyZWFtKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
cmFuc2Zvcm1GZWVkYmFja0lEIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgc3RyZWFtKQpAQCAtMjksNjIgKzI5LDYyIEBAIGJvb2wgVmFsaWRhdGVE
cmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0oQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5SW5kZXhlZChDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlRW5kUXVlcnlJbmRl
eGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVN1YnJvdXRp
bmVOYW1lKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGlu
ZU5hbWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGNoYXIgKm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldEFjdGl2ZVN1YnJvdXRpbmVVbmlmb3JtTmFtZShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVN1YnJvdXRpbmVVbmlmb3JtTmFtZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZzaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNo
YXIgKm5hbWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRBY3Rp
dmVTdWJyb3V0aW5lVW5pZm9ybWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
QWN0aXZlU3Vicm91dGluZVVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hh
ZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICp2YWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWVzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0UHJvZ3JhbVN0YWdlaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9n
cmFtU3RhZ2Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
dmFsdWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1
ZXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUluZGV4
ZWRpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5SW5kZXhlZGl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKQEAgLTkyLDcgKzky
LDcgQEAgYm9vbCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleChDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U3Vicm91dGluZVVuaWZvcm1M
b2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVVbmlm
b3JtTG9jYXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUp
CkBAIC0xMDAsNTkgKzEwMCw3MiBAQCBib29sIFZhbGlkYXRlR2V0U3Vicm91dGluZVVuaWZvcm1M
b2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0VW5pZm9ybVN1YnJvdXRpbmV1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRVbmlmb3JtU3Vicm91dGluZXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybWR2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGRvdWJsZSAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
UGF0Y2hQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlcykKK2Jvb2wgVmFsaWRhdGVQYXRjaFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTFkKENvbnRleHQgKmNvbnRl
eHQsIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZChj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZG91Ymxl
IHgpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMWR2KENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpCitib29sIFZhbGlkYXRlVW5pZm9ybTFkdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0yZChDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwg
R0xkb3VibGUgeCwgR0xkb3VibGUgeSkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGRvdWJsZSB4LCBHTGRv
dWJsZSB5KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTJk
dihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xkb3VibGUgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZHYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtM2QoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRp
b24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCitib29sIFZhbGlkYXRlVW5p
Zm9ybTNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUg
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVVuaWZvcm0zZHYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2R2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTRkKENvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZv
cm00ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgs
CiAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCiAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHosCkBAIC0xNjEsMTMgKzE3NCwxNiBAQCBib29sIFZhbGlkYXRlVW5pZm9y
bTRkKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVVbmlmb3JtNGR2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCitib29sIFZhbGlkYXRlVW5pZm9ybTRkdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZHYoQ29udGV4dCAqY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9v
bCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTc1LDggKzE5MSw4IEBAIGJvb2wg
VmFsaWRhdGVVbmlmb3JtTWF0cml4MmR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZHYoQ29udGV4dCAqY29udGV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29s
IFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTg0LDggKzIwMCw4
IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZHYoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRkdihDb250
ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0x
OTMsOCArMjA5LDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRkdihDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDNkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDNkdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMDIs
OCArMjE4LDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZHYoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJk
dihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZHYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
CkBAIC0yMTEsOCArMjI3LDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJkdihDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDN4NGR2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDRkdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91
YmxlICp2YWx1ZSkKQEAgLTIyMCw4ICsyMzYsOCBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDN4NGR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4NGR2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
NGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91Ymxl
ICp2YWx1ZSkKQEAgLTIyOSw4ICsyNDUsOCBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRk
dihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDR4MmR2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0
eDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZG91YmxlICp2YWx1ZSkKQEAgLTIzOCw4ICsyNTQsOCBAQCBib29sIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDR4MmR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZHYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5p
Zm9ybU1hdHJpeDR4M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjQ3LDcgKzI2Myw3IEBAIGJvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4NHgzZHYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1TdWJyb3V0aW5lc3VpdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1TdWJyb3V0aW5lc3Vpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVy
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppbmRpY2Vz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDQxLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0w0MS5jcHAKaW5kZXggNDk3MmM2OTljYjU3YjgyY2IxZDE4ZjliM2EyYjBiYThhODAy
NmRmNS4uOWM1NWQyMWMyOWRjOTE1OGE2MWMzYWY4ZmUwZjZmMTJiYWRlNDdmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQxLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
NDEuY3BwCkBAIC0xMSw2OSArMTEsNzUgQEAKIG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlk
YXRlRGVwdGhSYW5nZUFycmF5dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VBcnJh
eXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VJbmRleGVkKENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgbiwgR0xkb3VibGUgZikKK2Jv
b2wgVmFsaWRhdGVEZXB0aFJhbmdlSW5kZXhlZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZG91YmxlIG4sIEdMZG91YmxlIGYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXREb3VibGVpX3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSAqZGF0YSkKK2Jvb2wgVmFsaWRhdGVHZXREb3Vi
bGVpX3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4
LCBjb25zdCBHTGRvdWJsZSAqZGF0YSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldEZsb2F0aV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCwgR0xmbG9hdCAqZGF0YSkKK2Jvb2wgVmFsaWRhdGVHZXRGbG9hdGlfdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxv
YXQgKmRhdGEpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0
ZXhBdHRyaWJMZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMZG91YmxlICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliTGR2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcGFyYW1zKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZChD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MCkKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWR2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZHYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJkKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xkb3VibGUgdjEpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0zZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjIpCkBAIC04MSwxOCAr
ODcsMTggQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2QoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2R2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRkKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSB2MiwKQEAgLTEwMSwxOCArMTA3LDE4IEBAIGJvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTRkKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtNGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3Vi
bGUgKnZhbHVlKQpAQCAtMTIwLDkgKzEyNiw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDJkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZHYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTEzMCw5ICsxMzYsOSBAQCBib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZHYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTE0MCw5ICsx
NDYsOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdihDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTUwLDkg
KzE1Niw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDJkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4M3gyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSkKQEAgLTE2MCw5ICsxNjYsOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDJkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTE3MCw5ICsxNzYsOSBAQCBib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTgwLDkgKzE4Niw5IEBAIGJvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdihDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTE5MCw5ICsxOTYs
OSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdihDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDNkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4NHgzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1
ZSkKQEAgLTIwMCwxMiArMjA2LDEyIEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eDR4M2R2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVTY2lzc29yQXJyYXl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlU2Npc3NvckFycmF5dihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Npc3Nvcklu
ZGV4ZWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTY2lzc29ySW5kZXhlZChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZWZ0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvdHRvbSwKQEAgLTIxNSw0MiArMjIxLDQ2IEBAIGJv
b2wgVmFsaWRhdGVTY2lzc29ySW5kZXhlZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Npc3NvckluZGV4ZWR2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlU2Npc3NvckluZGV4
ZWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMWQo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4KQorYm9vbCBWYWxpZGF0
ZVZlcnRleEF0dHJpYkwxZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdM
ZG91YmxlIHgpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJMMWR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUg
KnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDFkdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDJkKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJMMmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliTDJkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91Ymxl
ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwyZHYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZChDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCitib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliTDNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeikKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZHYoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJMM2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xk
b3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJMNGQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMNGQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5LApAQCAtMjYwLDEyICsyNzAsMTIg
QEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkw0ZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDRkdihDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkw0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkxQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliTFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKQEAgLTI3NSwxMiArMjg1LDEyIEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJMUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlVmlld3BvcnRBcnJheXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVZpZXdwb3J0QXJy
YXl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVZpZXdwb3J0SW5kZXhlZGYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWaWV3cG9y
dEluZGV4ZWRmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHksCkBAIC0yOTAs
NyArMzAwLDcgQEAgYm9vbCBWYWxpZGF0ZVZpZXdwb3J0SW5kZXhlZGYoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZpZXdwb3J0SW5kZXhlZGZ2
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wg
VmFsaWRhdGVWaWV3cG9ydEluZGV4ZWRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDFf
YXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDQxX2F1dG9nZW4uaAppbmRleCBhYWM0MjBlYWIyZDZmNGFkOTAyYzRlMzU0MTBiYzFhZjZj
NzdkNmViLi5jNWNjZjlkMDFiMzZlMDk1NWI2NThmNjZkZWQyZWNmYjAzMWNlY2I0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDFf
YXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0w0MV9hdXRvZ2VuLmgKQEAgLTE3LDE0MiArMTcsMTU1IEBAIG5hbWVzcGFjZSBnbAog
ewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VBcnJheXYoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAq
dik7Ci1ib29sIFZhbGlkYXRlRGVwdGhSYW5nZUluZGV4ZWQoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBHTGRvdWJsZSBuLCBHTGRvdWJsZSBmKTsKLWJvb2wgVmFsaWRhdGVHZXREb3Vi
bGVpX3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGRv
dWJsZSAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0RmxvYXRpX3YoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICpkYXRhKTsKLWJvb2wgVmFsaWRh
dGVHZXRWZXJ0ZXhBdHRyaWJMZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZXB0aFJhbmdlQXJyYXl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
Zmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxp
ZGF0ZURlcHRoUmFuZ2VJbmRleGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xkb3VibGUgbiwgR0xkb3VibGUgZik7Citib29sIFZhbGlkYXRlR2V0RG91YmxlaV92KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdl
dEZsb2F0aV92KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCwgY29uc3QgR0xmbG9hdCAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmli
TGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFkKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjApOwotYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0xZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtMmQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTJkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2
MSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZHYoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0zZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjIpOwot
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2R2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0zZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtNGQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTRkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjMpOwotYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtNGR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm00ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
MmR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgy
ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZHYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4Mng0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1h
dHJpeDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsK
LWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJkdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybU1hdHJpeDRkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4NGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFs
dWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVNjaXNz
b3JBcnJheXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlU2Npc3NvckluZGV4ZWQoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVTY2lzc29yQXJyYXl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxp
ZGF0ZVNjaXNzb3JJbmRleGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm90dG9tLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZVNjaXNzb3JJbmRl
eGVkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMWQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
LCBHTGRvdWJsZSB4KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMWR2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkwyZChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgs
IEdMZG91YmxlIHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwyZHYoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliTDNkKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwg
R0xkb3VibGUgeSwgR0xkb3VibGUgeik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDNkdihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJMNGQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVT
Y2lzc29ySW5kZXhlZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTGludCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDFkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgeCk7Citib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliTDFkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
ZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMmQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJMMmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlIHopOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliTDRkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3Vi
bGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdyk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliTDRkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkw0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
TFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsK
LWJvb2wgVmFsaWRhdGVWaWV3cG9ydEFycmF5dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVZpZXdw
b3J0SW5kZXhlZGYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWaWV3cG9ydEFycmF5
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVZpZXdwb3J0SW5kZXhlZGYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgaCk7
Ci1ib29sIFZhbGlkYXRlVmlld3BvcnRJbmRleGVkZnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWaWV3cG9ydEluZGV4ZWRm
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYp
OwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9H
TDQxX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uR0w0Mi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMNDIuY3BwCmluZGV4IGY5OTgxYzk0NTAyMTAzYWU3ZTg5NDI5
MDM3YzkyNTU5Y2QzNzcyMzEuLmVlMDlkNWQ2YWU5YmI2MTljOWIzODBjYjg4NTc5MmM0MjE2ZTE2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0w0Mi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25HTDQyLmNwcApAQCAtMTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiAK
LWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtMjEsNyArMjEsNyBAQCBib29s
IFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZUluc3RhbmNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQmFzZUluc3RhbmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKQEAgLTMyLDcgKzMyLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNl
ZEJhc2VJbnN0YW5jZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhCYXNlSW5zdGFuY2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCkBAIC00NCw3ICs0
NCw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUlu
c3RhbmNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tJbnN0YW5jZWQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy
YW5zZm9ybUZlZWRiYWNrSUQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCkKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBW
YWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVkYmFja0luc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNr
U3RyZWFtSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1RyYW5z
Zm9ybUZlZWRiYWNrU3RyZWFtSW5zdGFuY2VkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2Zvcm1GZWVkYmFja0lEIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc3RyZWFtLApAQCAtNjEsMTYgKzYxLDE2IEBAIGJvb2wgVmFs
aWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW1JbnN0YW5jZWQoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZUF0b21pY0Nv
dW50ZXJCdWZmZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZUF0
b21pY0NvdW50ZXJCdWZmZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZl
ckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVUZXhTdG9yYWdlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9y
YWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0
Ml9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDJfYXV0b2dlbi5oCmluZGV4IDg0MGJhNjNiNzU3OTU5ZDY2ZGNlODI1YmQ4ZmE4ZDc1
M2MwY2QxZWMuLmM0YTBiNjBmMmUzOTViYjI1NDk5M2E2M2QwYjg3ZWQxMjVjYmZmOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0
Ml9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25HTDQyX2F1dG9nZW4uaApAQCAtMTcsMjAgKzE3LDIwIEBAIG5hbWVzcGFjZSBnbAog
ewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNl
SW5zdGFuY2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFu
Y2VkQmFzZUluc3RhbmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGluc3RhbmNlY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYmFzZWluc3RhbmNlKTsKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlSW5zdGFuY2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiYXNlaW5zdGFuY2UpOwotYm9vbCBWYWxp
ZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFz
ZUluc3RhbmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLApAQCAtMzgs
MjEgKzM4LDIxIEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4
QmFzZUluc3RhbmNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBiYXNldmVydGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGJhc2VpbnN0YW5jZSk7Ci1ib29sIFZhbGlkYXRlRHJh
d1RyYW5zZm9ybUZlZWRiYWNrSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrSW5zdGFuY2VkKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1G
ZWVkYmFja0lEIGlkUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQpOwotYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zv
cm1GZWVkYmFja1N0cmVhbUluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZURyYXdUcmFuc2Zvcm1GZWVkYmFja1N0cmVhbUluc3RhbmNlZChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0cmVhbSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNv
dW50KTsKLWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVBdG9taWNDb3VudGVyQnVmZmVyaXYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVBdG9taWNDb3VudGVyQnVmZmVyaXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZmZXJJbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsK
LWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMUQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlVGV4U3RvcmFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMNDMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDQzLmNwcAppbmRleCA4Mjk4MGMyNTE2ZTdmZDc3NTZmNTI5ZGZl
Mjg4MzdhZGM2MzUwYzZkLi40OTY3YzI1N2YxYzkyNjEzZjdkYzA5N2RiN2JkODNkOWViMWRiOGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0w0My5jcHAKQEAgLTExLDcgKzExLDcgQEAKIG5hbWVzcGFjZSBnbAogewogCi1i
b29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlQ2xlYXJCdWZmZXJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKQEAgLTIxLDcgKzIxLDcgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVy
RGF0YShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQ2xlYXJCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xl
YXJCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnRwdHIgb2Zmc2V0LApAQCAtMzMsMTcgKzMzLDE3IEBAIGJvb2wgVmFsaWRhdGVD
bGVhckJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aTY0dihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKnBhcmFtcykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlv
bkluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xj
aGFyICpuYW1lKQpAQCAtNTEsMTIgKzUxLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVz
b3VyY2VMb2NhdGlvbkluZGV4KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LCBC
dWZmZXJJRCBidWZmZXIpCitib29sIFZhbGlkYXRlSW52YWxpZGF0ZUJ1ZmZlckRhdGEoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVmZmVyKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZUJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5n
dGgpCkBAIC02NCwxMiArNjQsMTIgQEAgYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVCdWZmZXJTdWJE
YXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVJbnZhbGlkYXRlVGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmUs
IEdMaW50IGxldmVsKQorYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXhJbWFnZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlVGV4U3ViSW1hZ2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlVGV4U3ViSW1hZ2UoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApA
QCAtODIsNyArODIsNyBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZVRleFN1YkltYWdlKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aURy
YXdBcnJheXNJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJh
d0FycmF5c0luZGlyZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBkcmF3Y291bnQsCkBAIC05MSw3ICs5MSw3IEBAIGJv
b2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbmRpcmVj
dChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJl
Y3QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICppbmRpcmVjdCwKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIFZhbGlkYXRl
TXVsdGlEcmF3RWxlbWVudHNJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZyhDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNoYWRlclN0b3JhZ2VCbG9ja0JpbmRpbmcoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHN0b3JhZ2VCbG9ja0luZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHN0b3JhZ2VCbG9ja0JpbmRpbmcpCkBAIC0xMDksNyAr
MTA5LDcgQEAgYm9vbCBWYWxpZGF0ZVNoYWRlclN0b3JhZ2VCbG9ja0JpbmRpbmcoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVWaWV3
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVZpZXcoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBvcmlndGV4dHVyZSwKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFZh
bGlkYXRlVGV4dHVyZVZpZXcoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkxGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDNfYXV0b2dlbi5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQzX2F1dG9nZW4uaApp
bmRleCA0NjlhYTFjYmE0OWM1NTc1N2ZjYjdlNzlhNTQ0Y2M0NjY4MTkzYjk4Li45OTE1ZmJiNzgx
ZTM0NTIwYjNhNDAwNzEzZjdlMTExNTUxMTg4MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDNfYXV0b2dlbi5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0M19hdXRvZ2Vu
LmgKQEAgLTE3LDEzICsxNywxMyBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAK
LWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlckRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVDbGVhckJ1ZmZlckRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1ib29s
IFZhbGlkYXRlQ2xlYXJCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlQ2xlYXJCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LApAQCAtMzEsMjMgKzMxLDIzIEBAIGJvb2wgVmFs
aWRhdGVDbGVhckJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aTY0dihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aTY0dihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyRGF0YShDb250ZXh0ICpjb250
ZXh0LCBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVCdWZm
ZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlSW52YWxpZGF0ZUJ1ZmZl
ckRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVmZmVyUGFja2VkKTsKK2Jv
b2wgVmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5n
dGgpOwotYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXhJbWFnZShDb250ZXh0ICpjb250ZXh0LCBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwgR0xpbnQgbGV2ZWwpOwotYm9vbCBWYWxpZGF0ZUludmFs
aWRhdGVUZXhTdWJJbWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUludmFsaWRh
dGVUZXhJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCwgR0xpbnQgbGV2ZWwpOworYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXhTdWJJbWFnZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsCkBAIC01NiwyMiArNTYsMjIgQEAgYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXhT
dWJJbWFnZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBkZXB0aCk7Ci1ib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3QoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmluZGlyZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
ZHJhd2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c3RyaWRlKTsKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luZGlyZWN0KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmluZGlyZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBkcmF3Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHN0cmlkZSk7Ci1ib29sIFZhbGlkYXRlU2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNoYWRlclN0b3JhZ2VCbG9ja0JpbmRpbmco
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0b3JhZ2VCbG9ja0luZGV4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0b3JhZ2VCbG9ja0JpbmRpbmcp
OwotYm9vbCBWYWxpZGF0ZVRleHR1cmVWaWV3KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlVGV4dHVyZVZpZXcoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBvcmlndGV4
dHVyZSwKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVWaWV3KENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bWxldmVscywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWlubGF5ZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG51bWxheWVycyk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTEZv
cm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkxGb3JtYXQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0w0NC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDQuY3BwCmluZGV4IDFiMzAwYzI4OWM2MTZhNWQ5ZWU4NTIwODg2ODFhMTM0MjE2NmM0
YmQuLjU4MGQ4MzhjZjZkNjc3ZmJmYjhkOGMyMGQwNGNiYzVjNjJiOTdkNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ0
LmNwcApAQCAtMTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVC
aW5kQnVmZmVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kQnVmZmVy
c0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZp
cnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtMjAs
NyArMjAsNyBAQCBib29sIFZhbGlkYXRlQmluZEJ1ZmZlcnNCYXNlKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kQnVmZmVyc1JhbmdlKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZEJ1ZmZlcnNSYW5nZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC0zMSw3ICszMSw3IEBAIGJv
b2wgVmFsaWRhdGVCaW5kQnVmZmVyc1JhbmdlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kSW1hZ2VUZXh0dXJlcyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmVzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKQEAgLTM5LDE3ICszOSwyMyBA
QCBib29sIFZhbGlkYXRlQmluZEltYWdlVGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRTYW1wbGVycyhDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqc2FtcGxlcnMp
Citib29sIFZhbGlkYXRlQmluZFNhbXBsZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICpzYW1wbGVycykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJp
bmRUZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMdWludCAqdGV4dHVyZXMpCitib29sIFZhbGlkYXRlQmluZFRleHR1cmVzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaXJz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXJzKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVycywKQEAgLTU5LDcgKzY1LDcgQEAgYm9v
bCBWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCdWZmZXJTdG9yYWdlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQnVmZmVyU3RvcmFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmRhdGEsCkBAIC02OCw3ICs3NCw3IEBAIGJvb2wgVmFsaWRhdGVCdWZmZXJTdG9y
YWdlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVDbGVhclRleEltYWdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJUZXhJ
bWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC03OCw3ICs4
NCw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhclRleEltYWdlKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhclRleFN1YkltYWdlKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJUZXhTdWJJbWFnZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDRfYXV0b2dlbi5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ0X2F1dG9nZW4u
aAppbmRleCAwYzcwNWVmOTQ3OGE4NTI4NGRiOTY3NGI5NDFlMDQyYTRhZTE2NDI5Li40M2Q3NDg4
NzhmZDRmODljOWEyNmEwOWU0YzZjMzY2ZjhlODljYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDRfYXV0b2dlbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NF9hdXRv
Z2VuLmgKQEAgLTE3LDQyICsxNyw0OCBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7
CiAKLWJvb2wgVmFsaWRhdGVCaW5kQnVmZmVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVCaW5kQnVmZmVyc0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWZmZXJJRCAq
YnVmZmVyc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmluZEJ1ZmZlcnNSYW5nZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJzUmFuZ2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludHB0ciAqb2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWlwdHIgKnNpemVzKTsKLWJvb2wgVmFsaWRhdGVCaW5kSW1hZ2VU
ZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmVz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJl
cyk7Ci1ib29sIFZhbGlkYXRlQmluZFNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBm
aXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVycyk7Ci1ib29sIFZhbGlk
YXRlQmluZFRleHR1cmVzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7Ci1ib29sIFZhbGlkYXRlQmluZFZlcnRleEJ1
ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kU2FtcGxlcnMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpcnN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnNhbXBsZXJzKTsKK2Jvb2wgVmFsaWRhdGVCaW5k
VGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzKTsKK2Jv
b2wgVmFsaWRhdGVCaW5kVmVydGV4QnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaXJzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50cHRyICpvZmZzZXRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKnN0cmlkZXMpOwotYm9vbCBWYWxpZGF0ZUJ1ZmZl
clN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCdWZmZXJTdG9yYWdlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYml0ZmllbGQgZmxhZ3MpOwotYm9vbCBWYWxpZGF0ZUNsZWFyVGV4SW1h
Z2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhclRleEltYWdlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4
dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJUZXhTdWJJbWFnZShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFyVGV4U3ViSW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ1LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NS5jcHAKaW5kZXggZjYz
OWM4MTI0ZjgwNDlmOGQ0ODM1M2IwNDA3MGMwZjc5Y2RjMDBiZS4uZDViNDNkMDBjOTUwOWI5MjI3
MDBjZmFkOTVhNDVjZjMxMTBlYmYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ1LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDUuY3BwCkBAIC0xMSwxMiArMTEsMTIg
QEAKIG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlkYXRlQmluZFRleHR1cmVVbml0KENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCB1bml0LCBUZXh0dXJlSUQgdGV4dHVyZSkKK2Jvb2wgVmFsaWRh
dGVCaW5kVGV4dHVyZVVuaXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHVuaXQsIFRl
eHR1cmVJRCB0ZXh0dXJlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
QmxpdE5hbWVkRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGl0
TmFtZWRGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCByZWFkRnJhbWVidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRyYXdGcmFtZWJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKQEAgLTMzLDEyICszMywxNCBAQCBi
b29sIFZhbGlkYXRlQmxpdE5hbWVkRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1
cyhDb250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLCBHTGVudW0gdGFy
Z2V0KQorYm9vbCBWYWxpZGF0ZUNoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1cyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlckRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVDbGVhck5hbWVkQnVmZmVyRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTQ4LDcgKzUwLDcgQEAg
Ym9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhck5hbWVkQnVmZmVyU3ViRGF0YShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJTdWJEYXRhKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludHB0ciBvZmZzZXQsCkBAIC02MCw3ICs2Miw3IEBAIGJvb2wgVmFsaWRhdGVDbGVh
ck5hbWVkQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZmkoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJmaShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVy
SUQgZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLApAQCAtNzAsNyArNzIsNyBAQCBib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1l
YnVmZmVyZmkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUNsZWFyTmFtZWRGcmFtZWJ1ZmZlcmZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwK
QEAgLTc5LDcgKzgxLDcgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRGcmFtZWJ1ZmZlcmZ2KENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVh
ck5hbWVkRnJhbWVidWZmZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFy
TmFtZWRGcmFtZWJ1ZmZlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCkBAIC04OCw3ICs5
MCw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJpdihDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1l
YnVmZmVydWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1l
YnVmZmVydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCkBAIC05NywxMiArOTksMTIg
QEAgYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRGcmFtZWJ1ZmZlcnVpdihDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xpcENvbnRyb2woQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG9yaWdpbiwgR0xlbnVtIGRlcHRoKQorYm9vbCBWYWxpZGF0ZUNs
aXBDb250cm9sKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBvcmlnaW4sIEdMZW51bSBk
ZXB0aCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXh0dXJlU3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNz
ZWRUZXh0dXJlU3ViSW1hZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0xMTQsNyAr
MTE2LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UxRChDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29tcHJlc3Nl
ZFRleHR1cmVTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJl
c3NlZFRleHR1cmVTdWJJbWFnZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTEyOCw3
ICsxMzAsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTJEKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVz
c2VkVGV4dHVyZVN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21w
cmVzc2VkVGV4dHVyZVN1YkltYWdlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMTQ0
LDcgKzE0Niw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlM0QoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvcHlO
YW1lZEJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5TmFt
ZWRCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVhZEJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCB3cml0ZUJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHJlYWRPZmZzZXQsCkBAIC0xNTQsNyArMTU2LDcg
QEAgYm9vbCBWYWxpZGF0ZUNvcHlOYW1lZEJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2Ux
RChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UxRChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv
ZmZzZXQsCkBAIC0xNjUsNyArMTY3LDcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1h
Z2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQ29weVRleHR1cmVTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
Q29weVRleHR1cmVTdWJJbWFnZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTE3OCw3ICsxODAsNyBAQCBib29sIFZh
bGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlM0QoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlM0QoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAt
MTkyLDYyICsxOTQsNjcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UzRChDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRl
QnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIEJ1ZmZlcklEICpidWZmZXJzKQor
Ym9vbCBWYWxpZGF0ZUNyZWF0ZUJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXpl
aSBuLCBjb25zdCBCdWZmZXJJRCAqYnVmZmVycykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUNyZWF0ZUZyYW1lYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4sIEdMdWludCAqZnJhbWVidWZmZXJzKQorYm9vbCBWYWxpZGF0ZUNyZWF0ZUZyYW1lYnVmZmVy
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZnJhbWVi
dWZmZXJzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlUHJv
Z3JhbVBpcGVsaW5lcyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIEdMdWludCAqcGlwZWxp
bmVzKQorYm9vbCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW1QaXBlbGluZXMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNyZWF0ZVF1ZXJpZXMoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKK2Jvb2wgVmFsaWRhdGVD
cmVhdGVRdWVyaWVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDcmVhdGVSZW5kZXJidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwg
UmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnMpCitib29sIFZhbGlkYXRlQ3JlYXRlUmVuZGVy
YnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVDcmVhdGVTYW1wbGVycyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4sIEdMdWludCAqc2FtcGxlcnMpCitib29sIFZhbGlkYXRlQ3JlYXRlU2FtcGxlcnMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnNhbXBsZXJzKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlVGV4dHVyZXMoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKQor
Ym9vbCBWYWxpZGF0ZUNyZWF0ZVRleHR1cmVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp0ZXh0dXJlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrcyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIEdM
dWludCAqaWRzKQorYm9vbCBWYWxpZGF0ZUNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrcyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlVmVydGV4QXJyYXlzKENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbiwgVmVydGV4QXJyYXlJRCAqYXJyYXlzKQorYm9vbCBWYWxpZGF0
ZUNyZWF0ZVZlcnRleEFycmF5cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNv
bnN0IFZlcnRleEFycmF5SUQgKmFycmF5cykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBcnJheUF0dHJpYihDb250ZXh0ICpjb250ZXh0LCBWZXJ0
ZXhBcnJheUlEIHZhb2JqLCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlRGlzYWJsZVZlcnRl
eEFycmF5QXR0cmliKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgdmFvYmos
IEdMdWludCBpbmRleCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVu
YWJsZVZlcnRleEFycmF5QXR0cmliKENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgdmFv
YmosIEdMdWludCBpbmRleCkKK2Jvb2wgVmFsaWRhdGVFbmFibGVWZXJ0ZXhBcnJheUF0dHJpYihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIHZhb2JqLCBHTHVpbnQgaW5kZXgp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZE5hbWVk
QnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZE5h
bWVkQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKQpAQCAtMjU1LDIx
ICsyNjIsMjEgQEAgYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkTmFtZWRCdWZmZXJSYW5nZShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2VuZXJh
dGVUZXh0dXJlTWlwbWFwKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlKQorYm9v
bCBWYWxpZGF0ZUdlbmVyYXRlVGV4dHVyZU1pcG1hcChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBU
ZXh0dXJlSUQgdGV4dHVyZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldENvbXByZXNzZWRUZXh0dXJlSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZXRDb21wcmVzc2VkVGV4dHVyZUltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVTdWJJ
bWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldENvbXByZXNzZWRUZXh0dXJl
U3ViSW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMjc5LDY3ICsyODYsNzAg
QEAgYm9vbCBWYWxpZGF0ZUdldENvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UoQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBkZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKnBpeGVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBpeGVscykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaTY0dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1z
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0
ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXROYW1l
ZEJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0TmFt
ZWRCdWZmZXJQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBvaW50ZXJ2KENvbnRleHQg
KmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlciwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQor
Ym9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUG9pbnRlcnYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnN0ICpwYXJhbXMpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclN1YkRhdGEo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclN1YkRhdGEoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlw
dHIgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRO
YW1lZEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TmFtZWRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE5hbWVkUmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
UXVlcnlCdWZmZXJPYmplY3RpNjR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
UXVlcnlCdWZmZXJPYmplY3RpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCkBAIC0zNDgsNyArMzU4LDcgQEAgYm9v
bCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0aTY0dihDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3RpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0aXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklE
IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKQEAgLTM1Nyw3ICszNjcsNyBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3Rp
dihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0UXVlcnlCdWZmZXJPYmplY3R1aTY0dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWk2NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKQEAgLTM2Niw3ICszNzYs
NyBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3R1aTY0dihDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJP
YmplY3R1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9i
amVjdHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLApAQCAtMzc1LDY1ICszODUsNjggQEAgYm9vbCBWYWxpZGF0ZUdldFF1
ZXJ5QnVmZmVyT2JqZWN0dWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVHZXRUZXh0dXJlSW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldFRleHR1cmVMZXZlbFBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRl
eHR1cmVMZXZlbFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
VGV4dHVyZUxldmVsUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcklpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVQYXJhbWV0ZXJJaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXh0
dXJlUGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleHR1
cmVQYXJhbWV0ZXJJdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcml2KENv
bnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpCitib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0
ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlU3ViSW1h
Z2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlU3ViSW1hZ2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAt
NDQ1LDE3NyArNDU4LDIwNCBAQCBib29sIFZhbGlkYXRlR2V0VGV4dHVyZVN1YkltYWdlKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpNjRfdihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNraTY0X3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB4ZmIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKnBhcmFtKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJh
Y2tpX3YoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFj
a2lfdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB4ZmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VHJhbnNm
b3JtRmVlZGJhY2tpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgeGZiLCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbSkKK2Jvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja2l2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgeGZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXJy
YXlJbmRleGVkNjRpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEFy
cmF5SW5kZXhlZDY0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKnBhcmFtKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlJbmRleGVkaXYoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBcnJheUluZGV4ZWRpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRl
eEFycmF5SUQgdmFvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFt
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlp
dihDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIHZhb2JqLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbSkKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBcnJheWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZh
b2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0bkNvbG9yVGFibGUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRuQ29sb3JUYWJsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdGFibGUpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdGFibGUpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuQ29tcHJlc3NlZFRleEltYWdlKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0bkNvbXByZXNzZWRUZXhJbWFnZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5Db252b2x1dGlvbkZpbHRlcihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldG5Db252b2x1dGlvbkZpbHRlcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppbWFnZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW1hZ2UpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRuSGlzdG9ncmFtKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0bkhpc3RvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiByZXNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKnZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5NYXBk
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlR2V0bk1hcGR2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBxdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5NYXBmdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVHZXRuTWFwZnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuTWFwaXYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50
ICp2KQorYm9vbCBWYWxpZGF0ZUdldG5NYXBpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcXVlcnksCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuTWlubWF4KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0bk1pbm1heChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiByZXNldCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZhbHVlcykK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnZhbHVlcykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5QaXhlbE1hcGZ2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqdmFsdWVzKQorYm9vbCBW
YWxpZGF0ZUdldG5QaXhlbE1hcGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWVzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
blBpeGVsTWFwdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0x1aW50ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlR2V0blBpeGVsTWFwdWl2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuUGl4ZWxNYXB1c3YoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTHVzaG9ydCAqdmFsdWVzKQorYm9vbCBW
YWxpZGF0ZUdldG5QaXhlbE1hcHVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdXNob3J0ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRuUG9seWdvblN0aXBwbGUoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplLCBH
THVieXRlICpwYXR0ZXJuKQorYm9vbCBWYWxpZGF0ZUdldG5Qb2x5Z29uU3RpcHBsZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMdWJ5dGUgKnBhdHRlcm4p
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuU2VwYXJhYmxlRmls
dGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0blNlcGFyYWJsZUZpbHRlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcm93QnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnJvdywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY29sdW1uQnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmNvbHVtbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKnNwYW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpjb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpz
cGFuKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0blRleEltYWdl
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0blRleEltYWdlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldG5Vbmlmb3JtZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRu
VW5pZm9ybWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgKnBhcmFtcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRhdGEo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZl
ckRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVt
ICphdHRhY2htZW50cykKQEAgLTYyMyw3ICs2NjMsNyBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0
ZU5hbWVkRnJhbWVidWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclN1YkRhdGEoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclN1
YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2ht
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xlbnVtICphdHRhY2htZW50cywKQEAgLTYzNSwxMiArNjc1LDEyIEBAIGJvb2wgVmFsaWRh
dGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVmZmVyKENvbnRleHQg
KmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlciwgR0xlbnVtIGFjY2VzcykKK2Jvb2wgVmFsaWRhdGVN
YXBOYW1lZEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZmZXIsIEdM
ZW51bSBhY2Nlc3MpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXBO
YW1lZEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwTmFtZWRC
dWZmZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaXB0ciBsZW5ndGgsCkBAIC02NDksNyArNjg5LDcgQEAgYm9vbCBWYWxpZGF0ZU1hcE5h
bWVkQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZU5hbWVkQnVmZmVyRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqZGF0YSwKQEAgLTY1OCw3ICs2OTgsNyBAQCBib29sIFZhbGlkYXRlTmFtZWRCdWZm
ZXJEYXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVOYW1lZEJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVO
YW1lZEJ1ZmZlclN0b3JhZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmRhdGEsCkBAIC02NjcsNyArNzA3LDcgQEAgYm9vbCBWYWxpZGF0ZU5h
bWVkQnVmZmVyU3RvcmFnZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlTmFtZWRCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCkBAIC02NzYsMTIgKzcxNiwxNCBAQCBib29s
IFZhbGlkYXRlTmFtZWRCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcihDb250
ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLCBHTGVudW0gYnVmKQorYm9v
bCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJ
RCBmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYnVmKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTmFtZWRG
cmFtZWJ1ZmZlckRyYXdCdWZmZXJzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFt
ZWRGcmFtZWJ1ZmZlckRyYXdCdWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpi
dWZzKQpAQCAtNjg5LDcgKzczMSw3IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRHJh
d0J1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklE
IGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBwYXJhbSkKQEAgLTY5NywxMiArNzM5LDE0IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclJlYWRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwg
RnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwgR0xlbnVtIHNyYykKK2Jvb2wgVmFsaWRhdGVOYW1l
ZEZyYW1lYnVmZmVyUmVhZEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyYykKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0LApAQCAtNzExLDcgKzc1NSw3IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBm
cmFtZWJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZSwKQEAgLTcyMCw3ICs3NjQsNyBAQCBib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1
ZmZlclRleHR1cmUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFt
ZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKQEAgLTczMCw3ICs3NzQsNyBAQCBib29s
IFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTmFtZWRSZW5kZXJidWZmZXJTdG9y
YWdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRSZW5kZXJidWZmZXJTdG9y
YWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtNzM5LDcgKzc4Myw3
IEBAIGJvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJidWZm
ZXJJRCByZW5kZXJidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTc0OSwxMiAr
NzkzLDEyIEBAIGJvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
VGV4dHVyZUJhcnJpZXIoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlQmFy
cmllcihjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4dHVyZUJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVRleHR1cmVCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
SUQgYnVmZmVyKQpAQCAtNzYyLDcgKzgwNiw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlQnVmZmVy
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVU
ZXh0dXJlQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJl
QnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVySUQgYnVmZmVyLApAQCAtNzcyLDcgKzgxNiw3IEBAIGJvb2wgVmFsaWRhdGVU
ZXh0dXJlQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCkBAIC03ODAsNyArODI0LDcg
QEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJJdWl2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlckl1aXYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpw
YXJhbXMpCkBAIC03ODgsMTIgKzgzMiwxNSBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRl
ckl1aXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVRleHR1cmVQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJl
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCitib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFt
ZXRlcmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJh
bSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0
ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJmdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpw
YXJhbSkKQEAgLTgwMSwxMiArODQ4LDEyIEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVy
ZnYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVRleHR1cmVQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlLCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJp
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlLCBHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4
dHVyZVBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVBh
cmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbSkKQEAgLTgxNCw3ICs4NjEsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVBh
cmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXh0dXJlU3RvcmFnZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4dHVyZVN0b3JhZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTgyMyw3ICs4NzAsNyBAQCBib29sIFZhbGlkYXRlVGV4
dHVyZVN0b3JhZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVRleHR1cmVTdG9yYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC04MzMsNyArODgwLDcgQEAgYm9vbCBWYWxpZGF0
ZVRleHR1cmVTdG9yYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC04NDQsNyArODkxLDcgQEAgYm9vbCBWYWxp
ZGF0ZVRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0QoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC04NTUsNyArOTAy
LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0RNdWx0aXNh
bXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0RNdWx0
aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC04NjcsNyAr
OTE0LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0RNdWx0aXNhbXBsZShDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVN1
YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2Ux
RChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBA
IC04NzksNyArOTI2LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXh0dXJlU3Vi
SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTJE
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAg
LTg5Myw3ICs5NDAsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMkQoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJ
bWFnZTNEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlM0Qo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAt
OTA5LDcgKzk1Niw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB4ZmIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyKQpAQCAtOTE3LDcgKzk2NCw3
IEBAIGJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJhc2UoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlclJhbmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgeGZiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLApAQCAtOTI3LDEyICs5
NzQsMTIgQEAgYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyUmFuZ2UoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVubWFwTmFt
ZWRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVmZmVyKQorYm9vbCBWYWxpZGF0
ZVVubWFwTmFtZWRCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVmZmVy
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRy
aWJCaW5kaW5nKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRy
aWJCaW5kaW5nKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmosCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRpbmdpbmRleCkKQEAgLTk0MCw3ICs5ODcs
NyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRyaWJCaW5kaW5nKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJp
YkZvcm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmli
Rm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKQEAgLTk1MSw3ICs5OTgsNyBAQCBib29sIFZhbGlk
YXRlVmVydGV4QXJyYXlBdHRyaWJGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliSUZvcm1hdChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliSUZvcm1hdChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhBcnJheUlEIHZhb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNpemUsCkBAIC05NjEsNyArMTAwOCw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhB
cnJheUF0dHJpYklGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliTEZvcm1hdChDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliTEZvcm1hdChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJh
eUlEIHZhb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNpemUsCkBAIC05NzEsNyArMTAxOCw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJp
YkxGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVZlcnRleEFycmF5QmluZGluZ0Rpdmlzb3IoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBcnJheUJpbmRpbmdEaXZpc29yKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZh
b2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRp
bmdpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBk
aXZpc29yKQpAQCAtOTc5LDEyICsxMDI2LDEyIEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUJp
bmRpbmdEaXZpc29yKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUVsZW1lbnRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgVmVy
dGV4QXJyYXlJRCB2YW9iaiwgQnVmZmVySUQgYnVmZmVyKQorYm9vbCBWYWxpZGF0ZVZlcnRleEFy
cmF5RWxlbWVudEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIHZh
b2JqLCBCdWZmZXJJRCBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVZlcnRleEFycmF5VmVydGV4QnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9iaiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmluZGluZ2luZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwKQEAg
LTk5NCw3ICsxMDQxLDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVmZmVyKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBcnJheVZlcnRleEJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhBcnJheVZlcnRleEJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9iaiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ1X2F1dG9nZW4u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NV9h
dXRvZ2VuLmgKaW5kZXggMmE4MTVkOTA4MTI5Y2UyZTIzMzEyNzg2ZGRkMTU0M2FmNjIxMDZlZS4u
Y2I4ODA2NDY2OWQxYWQxNTA4M2IyMmE3YTBhMGJhMWM3NDlmMzI3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ1X2F1dG9nZW4u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdM
NDVfYXV0b2dlbi5oCkBAIC0xNyw4ICsxNyw4IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29u
dGV4dDsKIAotYm9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlVW5pdChDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgdW5pdCwgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJsaXRO
YW1lZEZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZFRleHR1
cmVVbml0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCB1bml0LCBUZXh0dXJlSUQgdGV4
dHVyZVBhY2tlZCk7Citib29sIFZhbGlkYXRlQmxpdE5hbWVkRnJhbWVidWZmZXIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cmVhZEZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBkcmF3RnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3JjWDAsCkBAIC0zMSwxNiArMzEsMTYgQEAgYm9vbCBWYWxpZGF0ZUJsaXROYW1lZEZyYW1l
YnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZHN0WTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRm
aWVsZCBtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0
ZXIpOwotYm9vbCBWYWxpZGF0ZUNoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1cyhDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUNoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1cyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0KTsKLWJvb2wgVmFsaWRhdGVDbGVhck5h
bWVkQnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRC
dWZmZXJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJTdWJEYXRhKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlclN1YkRhdGEoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKQEAgLTQ4LDI5ICs0OCwyOSBAQCBib29sIFZhbGlk
YXRlQ2xlYXJOYW1lZEJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUNsZWFyTmFt
ZWRGcmFtZWJ1ZmZlcmZpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJOYW1l
ZEZyYW1lYnVmZmVyZmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0ZW5jaWwpOwotYm9vbCBWYWxpZGF0ZUNs
ZWFyTmFtZWRGcmFtZWJ1ZmZlcmZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xl
YXJOYW1lZEZyYW1lYnVmZmVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Ci1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyaXYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQg
ZnJhbWVidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVydWl2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVydWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZUNsaXBD
b250cm9sKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBvcmlnaW4sIEdMZW51bSBkZXB0aCk7Ci1i
b29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ2xpcENvbnRyb2woY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IG9yaWdpbiwgR0xlbnVtIGRlcHRoKTsKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1
YkltYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtNzgsNyArNzgsNyBA
QCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1h
Z2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMkQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMkQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtODgsNyArODgsNyBAQCBib29sIFZh
bGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRh
KTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlM0QoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlM0QoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMTAwLDIwICsxMDAsMjAgQEAgYm9vbCBWYWxpZGF0
ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1i
b29sIFZhbGlkYXRlQ29weU5hbWVkQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUNvcHlOYW1lZEJ1ZmZlclN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWFkQnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHdyaXRlQnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgcmVhZE9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHdyaXRlT2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsK
LWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoKTsKLWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlMkQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlMkQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LApAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1Yklt
YWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQp
OwotYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0xMzIs
MjggKzEzMiwzOSBAQCBib29sIFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTNEKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRh
dGVDcmVhdGVCdWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgQnVmZmVySUQgKmJ1
ZmZlcnNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUNyZWF0ZUZyYW1lYnVmZmVycyhDb250ZXh0ICpj
b250ZXh0LCBHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKTsKLWJvb2wgVmFsaWRhdGVD
cmVhdGVQcm9ncmFtUGlwZWxpbmVzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1aW50
ICpwaXBlbGluZXMpOwotYm9vbCBWYWxpZGF0ZUNyZWF0ZVF1ZXJpZXMoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7Ci1ib29sIFZhbGlkYXRl
Q3JlYXRlUmVuZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFJlbmRlcmJ1
ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVDcmVhdGVTYW1wbGVy
cyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIEdMdWludCAqc2FtcGxlcnMpOwotYm9vbCBW
YWxpZGF0ZUNyZWF0ZVRleHR1cmVzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7Ci1ib29sIFZhbGlkYXRlQ3JlYXRlVHJhbnNmb3Jt
RmVlZGJhY2tzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOwotYm9v
bCBWYWxpZGF0ZUNyZWF0ZVZlcnRleEFycmF5cyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4s
IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGlzYWJsZVZlcnRl
eEFycmF5QXR0cmliKENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQs
IEdMdWludCBpbmRleCk7Ci1ib29sIFZhbGlkYXRlRW5hYmxlVmVydGV4QXJyYXlBdHRyaWIoQ29u
dGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCwgR0x1aW50IGluZGV4KTsK
LWJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZE5hbWVkQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVDcmVhdGVCdWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
c2l6ZWkgbiwgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUNy
ZWF0ZUZyYW1lYnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0
IEdMdWludCAqZnJhbWVidWZmZXJzKTsKK2Jvb2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFtUGlwZWxp
bmVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpwaXBl
bGluZXMpOworYm9vbCBWYWxpZGF0ZUNyZWF0ZVF1ZXJpZXMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7Citib29sIFZh
bGlkYXRlQ3JlYXRlUmVuZGVyYnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQp
OworYm9vbCBWYWxpZGF0ZUNyZWF0ZVNhbXBsZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50ICpzYW1wbGVycyk7Citib29sIFZhbGlkYXRlQ3JlYXRlVGV4
dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzKTsKK2Jv
b2wgVmFsaWRhdGVDcmVhdGVUcmFuc2Zvcm1GZWVkYmFja3MoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7Citib29sIFZhbGlkYXRlQ3JlYXRlVmVy
dGV4QXJyYXlzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVEaXNhYmxlVmVy
dGV4QXJyYXlBdHRyaWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRh
dGVFbmFibGVWZXJ0ZXhBcnJheUF0dHJpYihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4KTsKK2Jv
b2wgVmFsaWRhdGVGbHVzaE1hcHBlZE5hbWVkQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQg
YnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgbGVuZ3RoKTsKLWJvb2wgVmFsaWRhdGVHZW5lcmF0ZVRleHR1cmVNaXBtYXAo
Q29udGV4dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQpOwotYm9vbCBWYWxpZGF0
ZUdldENvbXByZXNzZWRUZXh0dXJlSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZW5lcmF0ZVRleHR1cmVNaXBtYXAoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldENvbXByZXNzZWRUZXh0dXJlSW1hZ2Uo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZUdldENvbXByZXNzZWRUZXh0
dXJlU3ViSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlR2V0Q29tcHJl
c3NlZFRleHR1cmVTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBA
IC0xNjMsOTEgKzE3NCw5MSBAQCBib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVTdWJJ
bWFnZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZl
clBhcmFtZXRlcmk2NHYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlR2V0
TmFtZWRCdWZmZXJQYXJhbWV0ZXJpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2
NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBvaW50ZXJ2
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBvaW50
ZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICoqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclN1YkRhdGEo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmNvbnN0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyU3ViRGF0YShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaXB0ciBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXROYW1lZEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQg
ZnJhbWVidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpdihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0TmFtZWRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVHZXROYW1lZFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7Citib29sIFZhbGlkYXRlR2V0TmFtZWRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVy
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3RpNjR2KENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9i
amVjdGk2NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9i
amVjdGl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmpl
Y3Rpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgb2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVpNjR2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3R1aTY0dihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnRwdHIgb2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVp
dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlcklEIGJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgb2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlSW1hZ2UoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlSW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpOwotYm9v
bCBWYWxpZGF0ZUdldFRleHR1cmVMZXZlbFBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZh
bGlkYXRlR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlTGV2ZWxQYXJhbWV0ZXJpdihDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyaXYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFt
ZXRlcklpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVQ
YXJhbWV0ZXJJaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBh
cmFtZXRlckl1aXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVQ
YXJhbWV0ZXJJdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXh0
dXJlUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4
dHVyZVBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4dHVy
ZVBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4dHVy
ZVBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVTdWJJ
bWFnZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlU3ViSW1hZ2Uo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zm
c2V0LApAQCAtMjU5LDk2ICsyNzAsMTIwIEBAIGJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlU3ViSW1h
Z2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVH
ZXRUcmFuc2Zvcm1GZWVkYmFja2k2NF92KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlR2V0
VHJhbnNmb3JtRmVlZGJhY2tpNjRfdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHhmYiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVHZXRUcmFu
c2Zvcm1GZWVkYmFja2lfdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAqcGFyYW0pOworYm9vbCBWYWxpZGF0ZUdl
dFRyYW5zZm9ybUZlZWRiYWNraV92KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHhmYiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJh
Y2tpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgeGZiLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbSk7Ci1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlJbmRleGVkNjRpdihDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbSk7Citib29sIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHhmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7
Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlJbmRleGVkNjRpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJy
YXlJRCB2YW9ialBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
NjQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBcnJheUluZGV4ZWRpdihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQ2NCAqcGFyYW0pOworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEFycmF5SW5kZXhlZGl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlpdihDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbSk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9i
alBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRl
R2V0bkNvbG9yVGFibGUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7Citib29sIFZhbGlkYXRlR2V0bkNvbG9yVGFibGUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKnRhYmxlKTsKLWJvb2wgVmFsaWRhdGVHZXRuQ29tcHJlc3NlZFRleEltYWdlKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdGFi
bGUpOworYm9vbCBWYWxpZGF0ZUdldG5Db21wcmVzc2VkVGV4SW1hZ2UoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0
ZUdldG5Db252b2x1dGlvbkZpbHRlcihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRuQ29udm9sdXRpb25GaWx0ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqaW1hZ2UpOwotYm9vbCBWYWxpZGF0ZUdldG5IaXN0b2dyYW0oQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW1hZ2Up
OworYm9vbCBWYWxpZGF0ZUdldG5IaXN0b2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gcmVzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUdldG5NYXBkdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZUdldG5NYXBmdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAq
dik7Ci1ib29sIFZhbGlkYXRlR2V0bk1hcGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGludCAqdik7Ci1ib29sIFZhbGlk
YXRlR2V0bk1pbm1heChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVHZXRuTWFwZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91Ymxl
ICp2KTsKK2Jvb2wgVmFsaWRhdGVHZXRuTWFwZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0
ZUdldG5NYXBpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcXVlcnksCisg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZUdldG5NaW5tYXgoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcmVzZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUdldG5QaXhlbE1hcGZ2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAq
dmFsdWVzKTsKLWJvb2wgVmFsaWRhdGVHZXRuUGl4ZWxNYXB1aXYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTHVpbnQgKnZhbHVlcyk7Ci1ib29sIFZhbGlk
YXRlR2V0blBpeGVsTWFwdXN2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0x1c2hvcnQgKnZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlR2V0blBvbHlnb25TdGlw
cGxlKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgYnVmU2l6ZSwgR0x1Ynl0ZSAqcGF0dGVybik7
Ci1ib29sIFZhbGlkYXRlR2V0blNlcGFyYWJsZUZpbHRlcihDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRuUGl4ZWxNYXBmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlcyk7Citib29sIFZhbGlkYXRlR2V0blBpeGVsTWFwdWl2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpOworYm9vbCBWYWxpZGF0ZUdldG5QaXhlbE1h
cHVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdXNob3J0ICp2YWx1ZXMp
OworYm9vbCBWYWxpZGF0ZUdldG5Qb2x5Z29uU3RpcHBsZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMdWJ5dGUgKnBhdHRlcm4pOworYm9vbCBWYWxpZGF0
ZUdldG5TZXBhcmFibGVGaWx0ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHJvd0J1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpy
b3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpyb3csCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvbHVtbkJ1ZlNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb2x1bW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzcGFuKTsKLWJvb2wgVmFsaWRhdGVHZXRuVGV4
SW1hZ2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmNvbHVtbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnNwYW4pOworYm9vbCBWYWxpZGF0ZUdldG5UZXhJbWFnZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9y
bWR2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlR2V0blVuaWZvcm1kdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZG91YmxlICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUludmFsaWRh
dGVOYW1lZEZyYW1lYnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlSW52YWxp
ZGF0ZU5hbWVkRnJhbWVidWZmZXJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVi
dWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwotYm9vbCBWYWxpZGF0ZUlu
dmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzLApAQCAtMzU2LDEyOSArMzkxLDEyOSBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZU5h
bWVkRnJhbWVidWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJv
b2wgVmFsaWRhdGVNYXBOYW1lZEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZm
ZXJQYWNrZWQsIEdMZW51bSBhY2Nlc3MpOwotYm9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVmZmVyUmFu
Z2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXBOYW1lZEJ1ZmZlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZmZXJQYWNrZWQsIEdMZW51bSBhY2Nlc3MpOwor
Ym9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpOwotYm9vbCBWYWxpZGF0
ZU5hbWVkQnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkQnVm
ZmVyRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKTsKLWJv
b2wgVmFsaWRhdGVOYW1lZEJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVOYW1lZEJ1ZmZlclN0b3JhZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYml0ZmllbGQgZmxhZ3MpOwotYm9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVyU3Vi
RGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVyU3ViRGF0YShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0
ciBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRh
KTsKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVyKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYnVmKTsKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVy
RHJhd0J1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVm
ZmVyRHJhd0J1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmJ1ZnMp
OwotYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFt
ZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclJl
YWRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVy
UmVhZEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyYyk7Ci1ib29sIFZh
bGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVm
ZmVySUQgZnJhbWVidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJUZXh0dXJlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclRleHR1cmUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1
ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsKTsKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxheWVyKTsKLWJvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVO
YW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZUJhcnJpZXIo
Q29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZUJ1ZmZlcihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVCYXJyaWVyKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpOworYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVU
ZXh0dXJlQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJl
QnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWlwdHIgc2l6ZSk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcklpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJJaXYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlckl1aXYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVySXVpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFt
cyk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVUZXh0dXJlUGFy
YW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVy
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJpKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0
ZVRleHR1cmVQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1
cmVQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlMUQo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTFEKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2
ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCk7Ci1ib29sIFZh
bGlkYXRlVGV4dHVyZVN0b3JhZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRl
eHR1cmVTdG9yYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQpOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwot
Ym9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVUZXh0dXJlU3RvcmFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCk7
Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTQ4Niw3ICs1MjEsNyBAQCBib29s
IFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRz
YW1wbGVsb2NhdGlvbnMpOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMUQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtNDk0LDcgKzUy
OSw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1h
Z2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTJEKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwK
QEAgLTUwNCw3ICs1MzksNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMkQoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRl
VGV4dHVyZVN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJl
U3ViSW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsCkBAIC01MTYsNTQgKzU1MSw1NCBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVN1
YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7
Ci1ib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCYXNlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCB4ZmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
SUQgYnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclJh
bmdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHhmYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7Ci1ib29sIFZhbGlk
YXRlVW5tYXBOYW1lZEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZmZXJQYWNr
ZWQpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliQmluZGluZyhDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVVubWFwTmFtZWRCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgQnVmZmVySUQgYnVmZmVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJp
YkJpbmRpbmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmluZGluZ2luZGV4KTsKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBcnJheUF0dHJpYkZvcm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVZlcnRleEFycmF5QXR0cmliRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVsYXRpdmVvZmZzZXQpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliSUZvcm1hdChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliSUZvcm1hdChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlE
IHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVsYXRp
dmVvZmZzZXQpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliTEZvcm1hdChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliTEZvcm1hdChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcmVsYXRpdmVvZmZzZXQpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QmluZGluZ0Rp
dmlzb3IoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUJpbmRpbmdE
aXZpc29yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRpbmdpbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkaXZpc29yKTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXhBcnJheUVsZW1lbnRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVWZXJ0ZXhBcnJheUVsZW1lbnRCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVy
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlcihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVmZmVyKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4
QXJyYXlJRCB2YW9ialBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYmluZGluZ2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBzdHJpZGUpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVm
ZmVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVm
ZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDYuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ2LmNwcAppbmRleCAyYzEzNGY4
ODBiZWNiNzM1MmQ0YThmYzhiN2Y2YTA3MGFjNjRhNjdkLi40NGRmZTc2Y2YzNDJjZTc4ZThjN2Vm
MWE4NTdhODIwYTkzM2IxYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDYuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0Ni5jcHAKQEAgLTExLDcgKzExLDcgQEAKIG5h
bWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3RDb3Vu
dChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luZGlyZWN0
Q291bnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkcmF3Y291bnQsCkBAIC0yMSw3ICsyMSw3
IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdENvdW50KENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVt
ZW50c0luZGlyZWN0Q291bnQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURy
YXdFbGVtZW50c0luZGlyZWN0Q291bnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVj
dCwKQEAgLTMyLDEyICszMiwxNSBAQCBib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbmRp
cmVjdENvdW50KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVQb2x5Z29uT2Zmc2V0Q2xhbXAoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBmYWN0
b3IsIEdMZmxvYXQgdW5pdHMsIEdMZmxvYXQgY2xhbXApCitib29sIFZhbGlkYXRlUG9seWdvbk9m
ZnNldENsYW1wKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgZmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IGNsYW1wKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU3BlY2lhbGl6
ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNwZWNpYWxpemVTaGFkZXIo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBzaGFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIg
KnBFbnRyeVBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bVNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRzLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ2X2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0Nl9hdXRvZ2VuLmgKaW5kZXggM2Ji
ODYxMzhlZGQzYzYxZWRjOTE1ZThkMmU0ZDExMzcxNTRmMGY3NC4uZDQ3OWIxNDEyNjIwZTU5NTk4
Y2Q5YWJmZjA1MjY0Zjc2N2RkN2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ2X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDZfYXV0b2dlbi5oCkBAIC0x
NywyMSArMTcsMjQgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZh
bGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3RDb3VudChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luZGlyZWN0Q291bnQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBt
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqaW5kaXJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludHB0ciBkcmF3Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG1heGRyYXdjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKTsKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVt
ZW50c0luZGlyZWN0Q291bnQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURy
YXdFbGVtZW50c0luZGlyZWN0Q291bnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIg
ZHJhd2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG1heGRyYXdjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBzdHJpZGUpOwotYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXRDbGFt
cChDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cywgR0xmbG9h
dCBjbGFtcCk7Ci1ib29sIFZhbGlkYXRlU3BlY2lhbGl6ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXRDbGFtcChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGZhY3RvciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB1bml0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCBjbGFtcCk7Citib29sIFZhbGlkYXRlU3BlY2lhbGl6
ZVNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHNoYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqcEVudHJ5UG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbnVtU3BlY2lhbGl6YXRpb25Db25zdGFudHMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNF9hdXRvZ2VuLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNF9hdXRvZ2VuLmgKaW5k
ZXggOWJmZjlhZmY4NDJiYzU3NTRhNzVkNTdhNDdmYTYwMWY2ZjRmMDViZi4uODA0M2Y3ZGFmZGU3
YjlhMDAwZjlkOWQ1ZjRhYzU0YjU2ZTZkNjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDRfYXV0b2dlbi5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0X2F1dG9nZW4uaApA
QCAtMTcsMTE5ICsxNywxNDMgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1i
b29sIFZhbGlkYXRlQmVnaW5RdWVyeUluZGV4ZWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4LCBRdWVyeUlEIGlkUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEcmF3
VHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIFRyYW5zZm9y
bUZlZWRiYWNrSUQgaWRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVkYmFj
a1N0cmVhbShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlJbmRleGVk
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCk7Citi
b29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2Vk
KTsKK2Jvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0oY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5z
Zm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzdHJlYW0pOwotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5SW5kZXhlZChD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwotYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZVN1YnJvdXRpbmVOYW1lKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlRW5kUXVlcnlJbmRleGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCk7Citib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZU5hbWUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVN1YnJvdXRpbmVVbmlm
b3JtTmFtZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVN1
YnJvdXRpbmVVbmlmb3JtTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHNoYWRlcnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91
dGluZVVuaWZvcm1pdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Citib29s
IFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZVVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1TdGFn
ZWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtU3Rh
Z2Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
dmFsdWVzKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUluZGV4ZWRpdihDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpOwor
Ym9vbCBWYWxpZGF0ZUdldFF1ZXJ5SW5kZXhlZGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleChDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpOworYm9vbCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRl
cnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFt
ZSk7Ci1ib29sIFZhbGlkYXRlR2V0U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlvbihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFN1YnJvdXRpbmVVbmlmb3JtTG9jYXRpb24oY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxp
ZGF0ZUdldFVuaWZvcm1TdWJyb3V0aW5ldWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0VW5pZm9ybVN1YnJvdXRpbmV1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlR2V0VW5pZm9ybWR2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVu
aWZvcm1kdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlICpw
YXJhbXMpOwotYm9vbCBWYWxpZGF0ZVBhdGNoUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZVVuaWZv
cm0xZChDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCk7Ci1ib29s
IFZhbGlkYXRlVW5pZm9ybTFkdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3Jt
MmQoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91Ymxl
IHkpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZHYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlk
YXRlVW5pZm9ybTNkKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4
LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtM2R2KENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJs
ZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZChDb250ZXh0ICpjb250ZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGRvdWJsZSAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVQYXRjaFBhcmFt
ZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGRvdWJsZSB4KTsKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xk
b3VibGUgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGRvdWJsZSB5KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmR2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKK2Jvb2wgVmFsaWRh
dGVVbmlmb3JtM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSB4LAorICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5LAorICAgICAg
ICAgICAgICAgICAgICAgICBHTGRvdWJsZSB6KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2R2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtNGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSB4LAogICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5
LAogICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB6LAogICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSB3KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNGR2KENvbnRleHQgKmNvbnRl
eHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
OwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZHYoQ29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVu
aWZvcm00ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
dmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wg
VmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZHYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDJ4M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0
cml4Mng0ZHYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGR2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xk
b3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2R2KENvbnRleHQgKmNv
bnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5p
Zm9ybU1hdHJpeDN4MmR2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJk
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGR2KENv
bnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDRkdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1
ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRkdihDb250ZXh0ICpjb250ZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0
eDJkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs
ZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDNkdihDb250ZXh0ICpjb250
ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZVVuaWZvcm1TdWJyb3V0aW5lc3VpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1TdWJyb3V0aW5lc3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppbmRpY2VzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8wX2F1
dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50
c19nbF8xXzBfYXV0b2dlbi5jcHAKaW5kZXggYjRiYjMwMzIwZWM5ZmYyZmNhOWMyMDU0Mzc4ZTUz
MjUwZjc1NTQzMi4uMmU0ZTBiNDA4ZjdmMWJlMjdiMjgyNDAzMTQxY2M1NzczZjU4YzkwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19n
bF8xXzBfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
L2VudHJ5X3BvaW50c19nbF8xXzBfYXV0b2dlbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBBY2N1bShHTGVudW0gb3AsIEdMZmxvYXQgdmFsdWUpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVBY2N1bShjb250ZXh0LCBvcCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01Myw4ICs1Myw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQWxwaGFGdW5jKEdMZW51bSBmdW5jLCBHTGZsb2F0IHJlZikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQWxwaGFUZXN0RnVuYyBmdW5jUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEFscGhhVGVzdEZ1bmM+KGZ1bmMpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQWxwaGFUZXN0RnVuYyBmdW5jUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QWxwaGFUZXN0RnVuYz4oZnVuYyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVBbHBoYUZ1bmMoY29udGV4dCwgZnVuY1BhY2tlZCwgcmVmKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCZWdpbihHTGVudW0g
bW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJlZ2luKGNv
bnRleHQsIG1vZGUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
MDAsNyArMTAwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCaXRtYXAoR0xzaXplaSB3aWR0aCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZUJpdG1hcChjb250ZXh0LCB3aWR0aCwgaGVpZ2h0LCB4b3JpZywgeW9yaWcsIHht
b3ZlLCB5bW92ZSwgYml0bWFwKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBCbGVuZEZ1bmMoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRnVuYyhjb250
ZXh0LCBzZmFjdG9yLCBkZmFjdG9yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0
MCw3ICsxNDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENhbGxMaXN0KEdMdWludCBsaXN0KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2FsbExpc3QoY29udGV4dCwg
bGlzdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1OSw3ICsx
NTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENhbGxMaXN0cyhHTHNpemVpIG4sIEdMZW51bSB0eXBl
LCBjb25zdCB2b2lkICpsaXN0cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDYWxsTGlzdHMoY29udGV4dCwgbiwgdHlwZSwgbGlzdHMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ2xlYXIoR0xiaXRmaWVsZCBtYXNrKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ2xlYXIoY29udGV4dCwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENs
ZWFyQWNjdW0oR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9h
dCBhbAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUNsZWFyQWNjdW0oY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q2xlYXJDb2xvcihHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZs
b2F0IGFsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQ2xlYXJDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBDbGVhckRlcHRoKEdMZG91YmxlIGRlcHRoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ2xlYXJEZXB0aChjb250ZXh0LCBkZXB0aCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIENsZWFySW5kZXgoR0xmbG9hdCBjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlQ2xlYXJJbmRleChjb250ZXh0LCBjKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xl
YXJTdGVuY2lsKEdMaW50IHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVDbGVhclN0ZW5jaWwoY29udGV4dCwgcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsaXBQbGFu
ZShHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVhdGlvbikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGlwUGxhbmUoY29udGV4
dCwgcGxhbmUsIGVxdWF0aW9uKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMwOSw3
ICszMDksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yM2IoR0xieXRlIHJlZCwgR0xieXRlIGdy
ZWVuLCBHTGJ5dGUgYmx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjNiKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29sb3IzYnYoY29uc3QgR0xieXRlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ29sb3IzYnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENv
bG9yM2QoR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjNk
KGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzZHYoY29uc3QgR0xkb3Vi
bGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjNk
dihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzgzLDcgKzM4Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzZihHTGZsb2F0IHJlZCwgR0xm
bG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM2YoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBDb2xvcjNmdihjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3IzZnYoY29udGV4dCwgdikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIENvbG9yM2koR0xpbnQgcmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjNp
KGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzaXYoY29uc3QgR0xpbnQg
KnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjNpdihj
b250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDU3
LDcgKzQ1Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzcyhHTHNob3J0IHJlZCwgR0xzaG9y
dCBncmVlbiwgR0xzaG9ydCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM3MoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBDb2xvcjNzdihjb25zdCBHTHNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3Izc3YoY29udGV4dCwgdikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIENvbG9yM3ViKEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29s
b3IzdWIoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjN1YnYoY29uc3Qg
R0x1Ynl0ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNv
bG9yM3Vidihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzdWkoR0x1aW50IHJl
ZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjN1aShjb250ZXh0LCByZWQsIGdyZWVu
LCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU1MCw3ICs1NTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENvbG9yM3Vpdihjb25zdCBHTHVpbnQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjN1aXYoY29udGV4dCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIENvbG9yM3VzKEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNo
b3J0IGJsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlQ29sb3IzdXMoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xv
cjN1c3YoY29uc3QgR0x1c2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVDb2xvcjN1c3YoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9y
NGIoR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSwgR0xieXRlIGFscGhhKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNv
bG9yNGIoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0YnYo
Y29uc3QgR0xieXRlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQ29sb3I0YnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTY0NSw3ICs2NDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yNGQoR0xkb3Vi
bGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSwgR0xkb3VibGUgYQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNGQo
Y29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0ZHYoY29uc3Qg
R0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
b2xvcjRkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtNjg0LDcgKzY4NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0ZihHTGZsb2F0IHJl
ZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0Zihjb250
ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC03MDMsNyArNzAzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjRmdihjb25zdCBHTGZs
b2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0
ZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTcyMiw3ICs3MjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yNGkoR0xpbnQgcmVkLCBHTGlu
dCBncmVlbiwgR0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0aShjb250ZXh0LCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03NDEsNyAr
NzQxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjRpdihjb25zdCBHTGludCAqdikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNGl2KGNvbnRleHQsIHYp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03NjEsNyArNzYxLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjRzKEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBH
THNob3J0IGJsdWUsIEdMc2hvcnQgYWxwaGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRzKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc4MCw3ICs3ODAsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yNHN2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRzdihjb250ZXh0LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODAwLDcgKzgwMCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ29sb3I0dWIoR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5
dGUgYmx1ZSwgR0x1Ynl0ZSBhbHBoCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0dWIoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODE5LDcgKzgxOSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ29sb3I0dWJ2KGNvbnN0IEdMdWJ5dGUgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjR1YnYoY29udGV4dCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIENvbG9yNHVpKEdMdWludCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJs
dWUsIEdMdWludCBhbHBoYSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjR1aShjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBDb2xvcjR1aXYoY29uc3QgR0x1aW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0dWl2KGNvbnRleHQsIHYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NzcsNyArODc3LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBDb2xvcjR1cyhHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBi
bHVlLCBHTHVzaG9ydAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUNvbG9yNHVzKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5Niw3ICs4OTYsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIENvbG9yNHVzdihjb25zdCBHTHVzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNHVzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTE3LDcgKzkxNyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ29sb3JNYXNrKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFu
IGJsdWUsIEdMYm9vCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlQ29sb3JNYXNrKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTkzNyw3ICs5MzcsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIENvbG9yTWF0ZXJpYWwoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yTWF0ZXJp
YWwoY29udGV4dCwgZmFjZSwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05
NTgsNyArOTU4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5UGl4ZWxzKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGUKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb3B5UGl4ZWxzKGNvbnRleHQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIHR5cGUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtOTc3LDggKzk3Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ3VsbEZhY2UoR0xlbnVtIG1vZGUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEN1bGxGYWNlTW9kZSBtb2RlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxDdWxsRmFjZU1vZGU+KG1vZGUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQ3VsbEZhY2VNb2RlIG1vZGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Q3VsbEZhY2VNb2RlPiht
b2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ3VsbEZh
Y2UoY29udGV4dCwgbW9kZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTk5Niw3ICs5OTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUxpc3RzKEdM
dWludCBsaXN0LCBHTHNpemVpIHJhbmdlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGVsZXRlTGlzdHMoY29udGV4dCwgbGlzdCwgcmFuZ2UpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIERlcHRoRnVuYyhHTGVudW0gZnVuYykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZURlcHRoRnVuYyhjb250ZXh0LCBmdW5jKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBEZXB0aE1hc2soR0xib29sZWFuIGZsYWcpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0aE1hc2soY29udGV4dCwgZmxhZykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwNDksNyArMTA0OSw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRGVwdGhSYW5nZShHTGRvdWJsZSBuLCBHTGRvdWJsZSBmKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVwdGhSYW5nZShjb250ZXh0LCBuLCBmKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA2Nyw3ICsxMDY3LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlKEdMZW51bSBjYXApCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlKGNvbnRleHQsIGNhcCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwODUsNyArMTA4NSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRHJhd0J1ZmZlcihHTGVudW0gYnVmKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0J1ZmZlcihjb250ZXh0LCBidWYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTA3LDggKzExMDcsOCBAQCBEcmF3UGl4
ZWxzKEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd1BpeGVscyhjb250
ZXh0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRWRnZUZsYWcoR0xib29sZWFuIGZsYWcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVFZGdlRmxhZyhjb250ZXh0LCBmbGFnKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBFZGdlRmxhZ3YoY29uc3QgR0xib29sZWFuICpmbGFnKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRWRnZUZsYWd2KGNvbnRleHQsIGZsYWcpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTYxLDcgKzExNjEsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEVuYWJsZShHTGVudW0gY2FwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlKGNvbnRleHQsIGNhcCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExNzgsNyArMTE3OCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRW5kKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZChj
b250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTE5NSw3
ICsxMTk1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmRMaXN0KCkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZExpc3QoY29udGV4dCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRXZhbENvb3JkMWQoR0xkb3VibGUgdSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUV2YWxDb29yZDFkKGNvbnRleHQsIHUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEV2YWxDb29yZDFkdihjb25zdCBHTGRvdWJsZSAqdSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUV2YWxDb29yZDFkdihjb250ZXh0LCB1KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBFdmFsQ29vcmQxZihHTGZsb2F0IHUpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVFdmFsQ29vcmQxZihjb250ZXh0LCB1KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTI2NSw3ICsxMjY1LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBFdmFsQ29vcmQxZnYoY29uc3QgR0xmbG9hdCAqdSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUV2YWxDb29yZDFmdihjb250ZXh0LCB1KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTI4Miw3ICsxMjgyLDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBFdmFsQ29vcmQyZChHTGRvdWJsZSB1LCBHTGRvdWJsZSB2KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRXZhbENvb3JkMmQoY29udGV4dCwg
dSwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMDAsNyAr
MTMwMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRXZhbENvb3JkMmR2KGNvbnN0IEdMZG91YmxlICp1
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRXZhbENvb3JkMmR2
KGNvbnRleHQsIHUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
MzE3LDcgKzEzMTcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEV2YWxDb29yZDJmKEdMZmxvYXQgdSwg
R0xmbG9hdCB2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRXZh
bENvb3JkMmYoY29udGV4dCwgdSwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTEzMzUsNyArMTMzNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRXZhbENvb3JkMmZ2
KGNvbnN0IEdMZmxvYXQgKnUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVFdmFsQ29vcmQyZnYoY29udGV4dCwgdSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTEzNTMsNyArMTM1Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRXZhbE1l
c2gxKEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xpbnQgaTIpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFdmFsTWVzaDEoY29udGV4dCwgbW9kZSwgaTEsIGkyKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM3Myw3ICsxMzczLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBFdmFsTWVzaDIoR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGlu
dCBpMiwgR0xpbnQgajEsIEdMaW50IGoyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUV2YWxNZXNoMihjb250ZXh0LCBtb2RlLCBpMSwgaTIs
IGoxLCBqMikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzkxLDcgKzEzOTEsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEV2YWxQb2ludDEoR0xpbnQgaSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUV2YWxQb2ludDEoY29udGV4dCwgaSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0MDgsNyArMTQwOCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRXZhbFBvaW50MihHTGludCBpLCBHTGludCBqKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRXZhbFBvaW50Mihjb250ZXh0LCBpLCBqKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQyNyw3ICsxNDI3LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBGZWVkYmFja0J1ZmZlcihHTHNpemVpIHNpemUsIEdMZW51bSB0eXBl
LCBHTGZsb2F0ICpidWZmZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRmVlZGJhY2tCdWZmZXIoY29udGV4dCwgc2l6ZSwgdHlwZSwgYnVm
ZmVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0NDUsNyArMTQ0NSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgRmluaXNoKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUZpbmlzaChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGbHVzaCgpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGbHVzaChjb250ZXh0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQ4MCw3ICsxNDgwLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBGb2dmKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZvZ2YoY29udGV4dCwgcG5h
bWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQ5
OCw3ICsxNDk4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGb2dmdihHTGVudW0gcG5hbWUsIGNvbnN0
IEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUZvZ2Z2KGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xNTE2LDcgKzE1MTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZv
Z2koR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUZvZ2koY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTUzNCw3ICsxNTM0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBGb2dpdihHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dpdihjb250ZXh0LCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU1Miw3
ICsxNTUyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGcm9udEZhY2UoR0xlbnVtIG1vZGUpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGcm9udEZhY2UoY29udGV4dCwg
bW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1NzMsOCAr
MTU3Myw4IEBAIEZydXN0dW0oR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsIEdMZG91Ymxl
IGJvdHRvbSwgR0xkb3VibGUgdG9wLCBHTGRvdWJsZSB6CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVGcnVzdHVtKGNvbnRleHQsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHRvcCwgek5lYXIsIHpGYXIp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNTkyLDcgKzE1OTIs
NyBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgR2VuTGlzdHMoR0xzaXplaSByYW5nZSkKICAgICBHTHVp
bnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2VuTGlzdHMoY29udGV4dCwgcmFuZ2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0xNjE5LDcgKzE2MTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW52
KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpkYXRhKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlR2V0Qm9vbGVhbnYoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjM4LDcgKzE2MzgsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldENsaXBQbGFuZShHTGVudW0gcGxhbmUsIEdMZG91YmxlICplcXVh
dGlvbikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRDbGlwUGxhbmUoY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTE2NTcsNyArMTY1Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
RG91YmxldihHTGVudW0gcG5hbWUsIEdMZG91YmxlICpkYXRhKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RG91Ymxldihjb250ZXh0LCBwbmFtZSwgZGF0YSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE2NzUsNyArMTY3NSw3
IEBAIEdMZW51bSBHTF9BUElFTlRSWSBHZXRFcnJvcigpCiAgICAgR0xlbnVtIHJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEVycm9yKGNvbnRl
eHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNzAyLDcgKzE3
MDIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQg
KmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGbG9h
dHYoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0xNzIwLDcgKzE3MjAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJ2
KEdMZW51bSBwbmFtZSwgR0xpbnQgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRJbnRlZ2Vydihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3NDAsOCArMTc0MCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0TGlnaHRmdihHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBMaWdodFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0
ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIExpZ2h0UGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPExp
Z2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRMaWdodGZ2KGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBh
Y2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3NjIsNyArMTc2
Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TGlnaHRpdihHTGVudW0gbGlnaHQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRMaWdodGl2KGNvbnRleHQsIGxpZ2h0LCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3ODMsNyArMTc4Myw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0TWFwZHYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGRv
dWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRNYXBkdihjb250ZXh0LCB0YXJnZXQsIHF1ZXJ5LCB2KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTE4MDQsNyArMTgwNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
TWFwZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGZsb2F0ICp2KQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldE1hcGZ2KGNv
bnRleHQsIHRhcmdldCwgcXVlcnksIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MTgyNSw3ICsxODI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNYXBpdihHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcXVlcnksIEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldE1hcGl2KGNvbnRleHQsIHRhcmdldCwgcXVlcnks
IHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTg0Niw5ICsxODQ2LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRNYXRlcmlhbGZ2KEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTWF0ZXJp
YWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFs
UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5h
bWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRNYXRlcmlhbGZ2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xODY4LDcgKzE4NjgsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldE1hdGVyaWFsaXYoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRNYXRlcmlhbGl2KGNvbnRleHQsIGZhY2UsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTg4Nyw3ICsxODg3LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBHZXRQaXhlbE1hcGZ2KEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQ
aXhlbE1hcGZ2KGNvbnRleHQsIG1hcCwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTE5MDYsNyArMTkwNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UGl4ZWxNYXB1aXYo
R0xlbnVtIG1hcCwgR0x1aW50ICp2YWx1ZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UGl4ZWxNYXB1aXYoY29udGV4dCwgbWFwLCB2
YWx1ZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkyNSw3ICsxOTI1LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRQaXhlbE1hcHVzdihHTGVudW0gbWFwLCBHTHVzaG9ydCAqdmFs
dWVzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldFBpeGVsTWFwdXN2KGNvbnRleHQsIG1hcCwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE5NDQsNyArMTk0NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UG9s
eWdvblN0aXBwbGUoR0x1Ynl0ZSAqbWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldFBvbHlnb25TdGlwcGxlKGNvbnRleHQsIG1hc2spKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xOTYzLDcgKzE5NjMsNyBAQCBjb25zdCBH
THVieXRlICpHTF9BUElFTlRSWSBHZXRTdHJpbmcoR0xlbnVtIG5hbWUpCiAgICAgY29uc3QgR0x1
Ynl0ZSAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2V0U3RyaW5nKGNvbnRleHQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0xOTkzLDEwICsxOTkzLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4
RW52ZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwot
ICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4o
cG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRUZXhFbnZmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMDE2LDEwICsy
MDE2LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4RW52aXYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRl
ciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+
KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAg
ICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4RW52aXYoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMjA0MCw3ICsyMDQwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRUZXhHZW5kdihHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZXRUZXhHZW5kdihjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0yMDYxLDcgKzIwNjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRl
eEdlbmZ2KEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VGV4
R2VuZnYoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMjA4Miw3ICsyMDgyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhHZW5p
dihHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRUZXhHZW5pdihj
b250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0yMTA1LDggKzIxMDUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleEltYWdlKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFRleEltYWdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWws
IGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CkBAIC0yMTI5LDggKzIxMjksOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBwbmFtZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1
cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1l
dGVyZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpOwpAQCAt
MjE1NCw4ICsyMTU0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcml2
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTIxNzksOSArMjE3OSw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VGV4UGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJh
bWV0ZXJmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMjAxLDkgKzIyMDEsOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlcml2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIyMjIsNyArMjIyMiw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgSGludChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUhpbnQoY29udGV4dCwgdGFyZ2V0LCBtb2Rl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjIzOSw3ICsyMjM5
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleE1hc2soR0x1aW50IG1hc2spCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRleE1hc2soY29udGV4dCwgbWFzaykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIyNTYsNyArMjI1Niw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgSW5kZXhkKEdMZG91YmxlIGMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRleGQoY29udGV4dCwgYykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIyNzQsNyArMjI3NCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgSW5kZXhkdihjb25zdCBHTGRvdWJsZSAqYykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUluZGV4ZHYoY29udGV4dCwgYykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIyOTEsNyArMjI5MSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgSW5kZXhmKEdMZmxvYXQgYykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUluZGV4Zihjb250ZXh0LCBjKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMjMwOSw3ICsyMzA5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleGZ2
KGNvbnN0IEdMZmxvYXQgKmMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVJbmRleGZ2KGNvbnRleHQsIGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0yMzI2LDcgKzIzMjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEluZGV4aShHTGlu
dCBjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5kZXhpKGNv
bnRleHQsIGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMzQ0
LDcgKzIzNDQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEluZGV4aXYoY29uc3QgR0xpbnQgKmMpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRleGl2KGNvbnRleHQs
IGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMzYxLDcgKzIz
NjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEluZGV4cyhHTHNob3J0IGMpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRleHMoY29udGV4dCwgYykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzNzksNyArMjM3OSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgSW5kZXhzdihjb25zdCBHTHNob3J0ICpjKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5kZXhzdihjb250ZXh0LCBjKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjM5Niw3ICsyMzk2LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBJbml0TmFtZXMoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSW5pdE5hbWVzKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFi
bGVkKEdMZW51bSBjYXApCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRW5hYmxlZChjb250ZXh0LCBjYXApKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNDQyLDcgKzI0NDIsNyBAQCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNMaXN0KEdMdWludCBsaXN0KQogICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0xp
c3QoY29udGV4dCwgbGlzdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTI0NjksNyArMjQ2OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbGYoR0xlbnVt
IHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWxmKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDg5LDcgKzI0ODksNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIExpZ2h0TW9kZWxmdihHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFt
cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVMaWdodE1vZGVsZnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0yNTA4LDcgKzI1MDgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExpZ2h0TW9k
ZWxpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRNb2RlbGkoY29udGV4dCwgcG5hbWUs
IHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1MjgsNyArMjUyOCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbGl2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQg
KnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVMaWdodE1vZGVsaXYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0yNTQ4LDggKzI1NDgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIExp
Z2h0ZihHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlTGlnaHRmKGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU3Miw4ICsyNTcyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBM
aWdodGZ2KEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1l
UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5h
bWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0
ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUxpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU5Myw3ICsyNTkzLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBMaWdodGkoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUxpZ2h0aShjb250ZXh0LCBsaWdodCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTI2MTUsNyArMjYxNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRpdihH
TGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodGl2KGNv
bnRleHQsIGxpZ2h0LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTI2MzQsNyArMjYzNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGluZVN0aXBwbGUoR0xpbnQg
ZmFjdG9yLCBHTHVzaG9ydCBwYXR0ZXJuKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpbmVTdGlwcGxlKGNvbnRleHQsIGZhY3RvciwgcGF0
dGVybikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjUyLDcgKzI2NTIsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIExpbmVXaWR0aChHTGZsb2F0IHdpZHRoKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGluZVdpZHRoKGNvbnRleHQsIHdpZHRoKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjY2OSw3ICsyNjY5LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBMaXN0QmFzZShHTHVpbnQgYmFzZSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpc3RCYXNlKGNvbnRleHQsIGJhc2UpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNjg2LDcgKzI2ODYsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIExvYWRJZGVudGl0eSgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVMb2FkSWRlbnRpdHkoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTI3MDQsNyArMjcwNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
TG9hZE1hdHJpeGQoY29uc3QgR0xkb3VibGUgKm0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVMb2FkTWF0cml4ZChjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjcyMiw3ICsyNzIyLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBMb2FkTWF0cml4Zihjb25zdCBHTGZsb2F0ICptKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTG9hZE1hdHJpeGYoY29udGV4dCwgbSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI3MzksNyArMjczOSw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTG9hZE5hbWUoR0x1aW50IG5hbWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVMb2FkTmFtZShjb250ZXh0LCBuYW1lKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjc1Nyw4ICsyNzU3LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBMb2dpY09wKEdMZW51bSBvcGNvZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIExvZ2ljYWxPcGVyYXRpb24gb3Bjb2RlUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxMb2dpY2FsT3BlcmF0aW9uPihvcGNvZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgTG9naWNhbE9wZXJhdGlvbiBvcGNvZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8TG9naWNhbE9wZXJhdGlvbj4ob3Bjb2RlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTG9naWNPcChjb250ZXh0LCBvcGNvZGVQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNzgwLDgg
KzI3ODAsOCBAQCBNYXAxZChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIs
IEdMaW50IHN0cmlkZSwgR0xpbnQgb3JkZXIsIGNvbnN0CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVNYXAxZChjb250ZXh0LCB0YXJnZXQsIHUxLCB1Miwgc3RyaWRlLCBvcmRlciwgcG9pbnRzKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjgwMyw4ICsyODAzLDgg
QEAgTWFwMWYoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MiwgR0xpbnQgc3Ry
aWRlLCBHTGludCBvcmRlciwgY29uc3QgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU1hcDFm
KGNvbnRleHQsIHRhcmdldCwgdTEsIHUyLCBzdHJpZGUsIG9yZGVyLCBwb2ludHMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yODM1LDcgKzI4MzUsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIE1hcDJkKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwMmQoY29udGV4dCwgdGFyZ2V0LCB1
MSwgdTIsIHVzdHJpZGUsIHVvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjEsIHYyLCB2c3RyaWRlLCB2b3JkZXIsIHBvaW50cykp
OwpAQCAtMjg2OSw3ICsyODY5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNYXAyZihHTGVudW0gdGFy
Z2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZU1hcDJmKGNvbnRleHQsIHRhcmdldCwgdTEsIHUyLCB1c3RyaWRlLCB1b3JkZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLCB2
MiwgdnN0cmlkZSwgdm9yZGVyLCBwb2ludHMpKTsKQEAgLTI4OTAsNyArMjg5MCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgTWFwR3JpZDFkKEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXBHcmlkMWQoY29u
dGV4dCwgdW4sIHUxLCB1MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTI5MDgsNyArMjkwOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWFwR3JpZDFmKEdMaW50IHVu
LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTWFwR3JpZDFmKGNvbnRleHQsIHVuLCB1MSwgdTIpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yOTI4LDcgKzI5MjgsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIE1hcEdyaWQyZChHTGludCB1biwgR0xkb3VibGUgdTEsIEdMZG91YmxlIHUyLCBHTGlu
dCB2biwgR0xkb3VibAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZU1hcEdyaWQyZChjb250ZXh0LCB1biwgdTEsIHUyLCB2biwgdjEsIHYyKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI5NDksNyArMjk0OSw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTWFwR3JpZDJmKEdMaW50IHVuLCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGlu
dCB2biwgR0xmbG9hdCB2CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTWFwR3JpZDJmKGNvbnRleHQsIHVuLCB1MSwgdTIsIHZuLCB2MSwgdjIp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjk2OSw4ICsyOTY5LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBNYXRlcmlhbGYoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTWF0ZXJpYWxQYXJhbWV0
ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVy
PihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBNYXRlcmlhbFBh
cmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRl
cmlhbFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWxmKGNvbnRleHQsIGZhY2UsIHBuYW1lUGFj
a2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yOTkzLDggKzI5OTMs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsZnYoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbGZ2KGNv
bnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMzAxNCw3ICszMDE0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNYXRlcmlhbGkoR0xl
bnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWxpKGNvbnRleHQsIGZh
Y2UsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMDM2LDcg
KzMwMzYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsaXYoR0xlbnVtIGZhY2UsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbGl2KGNvbnRleHQsIGZhY2UsIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzA1NSw4ICszMDU1
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBNYXRyaXhNb2RlKEdMZW51bSBtb2RlKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBNYXRyaXhUeXBlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0cml4VHlwZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBNYXRyaXhUeXBlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRyaXhUeXBlPihtb2RlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0cml4TW9kZShjb250ZXh0LCBt
b2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzA3
NCw3ICszMDc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0TWF0cml4ZChjb25zdCBHTGRvdWJs
ZSAqbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRNYXRy
aXhkKGNvbnRleHQsIG0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0zMDkyLDcgKzMwOTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRNYXRyaXhmKGNvbnN0IEdM
ZmxvYXQgKm0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0
TWF0cml4Zihjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMzExMCw3ICszMTEwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOZXdMaXN0KEdMdWludCBs
aXN0LCBHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZU5ld0xpc3QoY29udGV4dCwgbGlzdCwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTMxMjgsNyArMzEyOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTm9y
bWFsM2IoR0xieXRlIG54LCBHTGJ5dGUgbnksIEdMYnl0ZSBueikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDNiKGNvbnRleHQsIG54LCBueSwgbnopKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMTQ2LDcgKzMxNDYsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbDNidihjb25zdCBHTGJ5dGUgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWwzYnYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMxNjQsNyArMzE2NCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTm9ybWFsM2QoR0xkb3VibGUgbngsIEdMZG91YmxlIG55LCBHTGRv
dWJsZSBueikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1h
bDNkKGNvbnRleHQsIG54LCBueSwgbnopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0zMTgyLDcgKzMxODIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbDNkdihj
b25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZU5vcm1hbDNkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMzIwMCw3ICszMjAwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwzZihH
TGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTm9ybWFsM2YoY29udGV4dCwgbngsIG55LCBueikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMyMTgsNyArMzIxOCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTm9ybWFsM2Z2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWwzZnYoY29udGV4dCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMyMzYsNyArMzIzNiw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTm9ybWFsM2koR0xpbnQgbngsIEdMaW50IG55LCBHTGludCBueikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDNpKGNvbnRleHQs
IG54LCBueSwgbnopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0z
MjU0LDcgKzMyNTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbDNpdihjb25zdCBHTGludCAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDNpdihj
b250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzI3
Miw3ICszMjcyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwzcyhHTHNob3J0IG54LCBHTHNo
b3J0IG55LCBHTHNob3J0IG56KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlTm9ybWFsM3MoY29udGV4dCwgbngsIG55LCBueikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTMyOTAsNyArMzI5MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Tm9ybWFsM3N2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVOb3JtYWwzc3YoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTMzMTEsOCArMzMxMSw4IEBAIE9ydGhvKEdMZG91YmxlIGxl
ZnQsIEdMZG91YmxlIHJpZ2h0LCBHTGRvdWJsZSBib3R0b20sIEdMZG91YmxlIHRvcCwgR0xkb3Vi
bGUgek5lCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVPcnRobyhjb250ZXh0LCBsZWZ0LCByaWdo
dCwgYm90dG9tLCB0b3AsIHpOZWFyLCB6RmFyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMzMyOSw3ICszMzI5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQYXNzVGhy
b3VnaChHTGZsb2F0IHRva2VuKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlUGFzc1Rocm91Z2goY29udGV4dCwgdG9rZW4pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0zMzQ5LDcgKzMzNDksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBp
eGVsTWFwZnYoR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlUGl4ZWxNYXBmdihjb250ZXh0LCBtYXAsIG1hcHNpemUsIHZhbHVlcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0zMzcxLDcgKzMzNzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBp
eGVsTWFwdWl2KEdMZW51bSBtYXAsIEdMc2l6ZWkgbWFwc2l6ZSwgY29uc3QgR0x1aW50ICp2YWx1
ZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlUGl4ZWxNYXB1aXYoY29udGV4dCwgbWFwLCBtYXBzaXplLCB2YWx1ZXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzM5Miw3ICszMzkyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQ
aXhlbE1hcHVzdihHTGVudW0gbWFwLCBHTHNpemVpIG1hcHNpemUsIGNvbnN0IEdMdXNob3J0ICp2
YWx1ZXMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVQaXhlbE1hcHVzdihjb250ZXh0LCBtYXAsIG1hcHNpemUsIHZhbHVlcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNDExLDcgKzM0MTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFBpeGVsU3RvcmVmKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbFN0b3JlZihjb250
ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzQzMCw3
ICszNDMwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQaXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVBpeGVsU3RvcmVpKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0zNDQ5LDcgKzM0NDksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBp
eGVsVHJhbnNmZXJmKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbFRyYW5zZmVyZihj
b250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzQ2
OCw3ICszNDY4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQaXhlbFRyYW5zZmVyaShHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVBpeGVsVHJhbnNmZXJpKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNDg3LDcgKzM0ODcsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFBpeGVsWm9vbShHTGZsb2F0IHhmYWN0b3IsIEdMZmxvYXQgeWZhY3RvcikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbFpv
b20oY29udGV4dCwgeGZhY3RvciwgeWZhY3RvcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0zNTA1LDcgKzM1MDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvaW50U2l6ZShHTGZsb2F0
IHNpemUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFNp
emUoY29udGV4dCwgc2l6ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTM1MjQsNyArMzUyNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9seWdvbk1vZGUoR0xlbnVt
IGZhY2UsIEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlUG9seWdvbk1vZGUoY29udGV4dCwgZmFjZSwgbW9kZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM1NDIsNyArMzU0Miw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgUG9seWdvblN0aXBwbGUoY29uc3QgR0x1Ynl0ZSAqbWFzaykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvbHlnb25TdGlwcGxlKGNvbnRleHQsIG1hc2spKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNTU5LDcgKzM1NTksNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFBvcEF0dHJpYigpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVQb3BBdHRyaWIoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTM1NzYsNyArMzU3Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
UG9wTWF0cml4KCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBv
cE1hdHJpeChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMzU5Myw3ICszNTkzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb3BOYW1lKCkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcE5hbWUoY29udGV4dCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM2MTEsNyArMzYxMSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUHVzaEF0dHJpYihHTGJpdGZpZWxkIG1hc2spCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQdXNoQXR0cmliKGNvbnRleHQsIG1hc2spKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNjI4LDcgKzM2MjgsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFB1c2hNYXRyaXgoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUHVzaE1hdHJpeChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMzY0NSw3ICszNjQ1LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBQdXNoTmFtZShHTHVpbnQgbmFtZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVB1c2hOYW1lKGNvbnRleHQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0zNjYyLDcgKzM2NjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJh
c3RlclBvczJkKEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3MyZChjb250ZXh0LCB4LCB5KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzY4MCw3ICszNjgwLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBSYXN0ZXJQb3MyZHYoY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3MyZHYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM2OTcsNyArMzY5Nyw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zMmYoR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3MyZihjb250ZXh0
LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzcxNSw3
ICszNzE1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MyZnYoY29uc3QgR0xmbG9hdCAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3RlclBvczJm
dihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzczMiw3ICszNzMyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MyaShHTGludCB4LCBH
TGludCB5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVy
UG9zMmkoY29udGV4dCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTM3NTAsNyArMzc1MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zMml2KGNv
bnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
UmFzdGVyUG9zMml2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0zNzY3LDcgKzM3NjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczJz
KEdMc2hvcnQgeCwgR0xzaG9ydCB5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlUmFzdGVyUG9zMnMoY29udGV4dCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTM3ODUsNyArMzc4NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
UmFzdGVyUG9zMnN2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3Myc3YoY29udGV4dCwgdikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4MDMsNyArMzgwMyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUmFzdGVyUG9zM2QoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3RlclBvczNkKGNvbnRl
eHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0z
ODIxLDcgKzM4MjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczNkdihjb25zdCBHTGRv
dWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3Rl
clBvczNkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMzgzOSw3ICszODM5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MzZihHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zM2YoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4NTcsNyArMzg1Nyw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUmFzdGVyUG9zM2Z2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3MzZnYoY29udGV4dCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4NzUsNyArMzg3NSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zM2koR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3RlclBvczNpKGNvbnRl
eHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0z
ODkzLDcgKzM4OTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczNpdihjb25zdCBHTGlu
dCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3RlclBv
czNpdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMzkxMSw3ICszOTExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MzcyhHTHNob3J0
IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlUmFzdGVyUG9zM3MoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM5MjksNyArMzkyOSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUmFzdGVyUG9zM3N2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3Mzc3YoY29udGV4dCwgdikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM5NDgsNyArMzk0OCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUmFzdGVyUG9zNGQoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg
eiwgR0xkb3VibGUgdykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVJhc3RlclBvczRkKGNvbnRleHQsIHgsIHksIHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0zOTY2LDcgKzM5NjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJh
c3RlclBvczRkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVJhc3RlclBvczRkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzk4NSw3ICszOTg1LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBSYXN0ZXJQb3M0ZihHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3M0
Zihjb250ZXh0LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNDAwMyw3ICs0MDAzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3M0ZnYo
Y29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVJhc3RlclBvczRmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNDAyMSw3ICs0MDIxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQ
b3M0aShHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zNGkoY29udGV4dCwgeCwgeSwgeiwg
dykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQwMzksNyArNDAz
OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zNGl2KGNvbnN0IEdMaW50ICp2KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zNGl2KGNvbnRl
eHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MDU4LDcg
KzQwNTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczRzKEdMc2hvcnQgeCwgR0xzaG9y
dCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVJhc3RlclBvczRzKGNvbnRleHQsIHgsIHksIHosIHcpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MDc2LDcgKzQwNzYsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFJhc3RlclBvczRzdihjb25zdCBHTHNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zNHN2KGNvbnRleHQsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MDk0LDcgKzQwOTQsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFJlYWRCdWZmZXIoR0xlbnVtIHNyYykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlYWRCdWZmZXIoY29udGV4dCwgc3JjKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDEyMSw4ICs0MTIxLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBSZWFkUGl4ZWxzKEdMaW50IHgsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVSZWFkUGl4ZWxzKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDE0MSw3
ICs0MTQxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWN0ZChHTGRvdWJsZSB4MSwgR0xkb3VibGUg
eTEsIEdMZG91YmxlIHgyLCBHTGRvdWJsZSB5MikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVJlY3RkKGNvbnRleHQsIHgxLCB5MSwgeDIsIHkyKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDE2MSw3ICs0MTYxLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBSZWN0ZHYoY29uc3QgR0xkb3VibGUgKnYxLCBjb25zdCBHTGRvdWJsZSAqdjIp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWN0ZHYoY29udGV4
dCwgdjEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDE4
MCw3ICs0MTgwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWN0ZihHTGZsb2F0IHgxLCBHTGZsb2F0
IHkxLCBHTGZsb2F0IHgyLCBHTGZsb2F0IHkyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlUmVjdGYoY29udGV4dCwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MjAwLDcgKzQyMDAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFJlY3Rmdihjb25zdCBHTGZsb2F0ICp2MSwgY29uc3QgR0xmbG9hdCAqdjIpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWN0ZnYoY29udGV4dCwg
djEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDIxOCw3
ICs0MjE4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWN0aShHTGludCB4MSwgR0xpbnQgeTEsIEdM
aW50IHgyLCBHTGludCB5MikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVJlY3RpKGNvbnRleHQsIHgxLCB5MSwgeDIsIHkyKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNDIzNyw3ICs0MjM3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBS
ZWN0aXYoY29uc3QgR0xpbnQgKnYxLCBjb25zdCBHTGludCAqdjIpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWN0aXYoY29udGV4dCwgdjEsIHYyKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDI1Niw3ICs0MjU2LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBSZWN0cyhHTHNob3J0IHgxLCBHTHNob3J0IHkxLCBHTHNob3J0IHgyLCBH
THNob3J0IHkyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVj
dHMoY29udGV4dCwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC00Mjc2LDcgKzQyNzYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlY3Rzdihj
b25zdCBHTHNob3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWN0c3YoY29udGV4dCwgdjEsIHYyKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDI5NSw3ICs0Mjk1LDcgQEAgR0xpbnQg
R0xfQVBJRU5UUlkgUmVuZGVyTW9kZShHTGVudW0gbW9kZSkKICAgICBHTGludCByZXR1cm5WYWx1
ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZW5kZXJNb2RlKGNv
bnRleHQsIG1vZGUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00
MzIzLDcgKzQzMjMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJvdGF0ZWQoR0xkb3VibGUgYW5nbGUs
IEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSb3RhdGVkKGNvbnRleHQsIGFuZ2xlLCB4LCB5LCB6KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDM0Miw3ICs0MzQyLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBSb3RhdGVmKEdMZmxvYXQgYW5nbGUsIEdMZmxvYXQgeCwgR0xm
bG9hdCB5LCBHTGZsb2F0IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVSb3RhdGVmKGNvbnRleHQsIGFuZ2xlLCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNDM2MCw3ICs0MzYwLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBTY2FsZWQoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNjYWxlZChjb250ZXh0LCB4LCB5LCB6KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDM3OCw3ICs0Mzc4LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBTY2FsZWYoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNjYWxlZihjb250
ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NDM5Nyw3ICs0Mzk3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTY2lzc29yKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNjaXNzb3IoY29udGV4dCwgeCwgeSwg
d2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NDE2LDcgKzQ0
MTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlbGVjdEJ1ZmZlcihHTHNpemVpIHNpemUsIEdMdWlu
dCAqYnVmZmVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVNlbGVjdEJ1ZmZlcihjb250ZXh0LCBzaXplLCBidWZmZXIpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDQzNSw4ICs0NDM1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBT
aGFkZU1vZGVsKEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkaW5nTW9kZWwgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGluZ01vZGVsPihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRpbmdNb2RlbCBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRpbmdNb2RlbD4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVNoYWRlTW9kZWwoY29udGV4dCwgbW9kZVBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ0NTQsNyArNDQ1NCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1h
c2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlU3RlbmNpbEZ1bmMoY29udGV4dCwgZnVuYywgcmVmLCBtYXNrKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTQ0NzIsNyArNDQ3Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNp
bE1hc2soR0x1aW50IG1hc2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVTdGVuY2lsTWFzayhjb250ZXh0LCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNDQ5Miw3ICs0NDkyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVu
Y2lsT3AoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxPcChj
b250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNDUxMCw3ICs0NTEwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDFkKEdMZG91Ymxl
IHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFk
KGNvbnRleHQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00
NTI4LDcgKzQ1MjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMWR2KGNvbnN0IEdMZG91
YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29v
cmQxZHYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTQ1NDUsNyArNDU0NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQxZihHTGZsb2F0
IHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFm
KGNvbnRleHQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00
NTYzLDcgKzQ1NjMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMWZ2KGNvbnN0IEdMZmxv
YXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29y
ZDFmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtNDU4MCw3ICs0NTgwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDFpKEdMaW50IHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFpKGNv
bnRleHQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NTk4
LDcgKzQ1OTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMWl2KGNvbnN0IEdMaW50ICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQxaXYo
Y29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ2
MTUsNyArNDYxNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQxcyhHTHNob3J0IHMpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFzKGNvbnRl
eHQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NjMzLDcg
KzQ2MzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMXN2KGNvbnN0IEdMc2hvcnQgKnYp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFzdihj
b250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDY1
MCw3ICs0NjUwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDJkKEdMZG91YmxlIHMsIEdM
ZG91YmxlIHQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhD
b29yZDJkKGNvbnRleHQsIHMsIHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC00NjY4LDcgKzQ2NjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMmR2KGNv
bnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVGV4Q29vcmQyZHYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTQ2ODUsNyArNDY4NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQy
ZihHTGZsb2F0IHMsIEdMZmxvYXQgdCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVRleENvb3JkMmYoY29udGV4dCwgcywgdCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTQ3MDMsNyArNDcwMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VGV4Q29vcmQyZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMmZ2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NzIwLDcgKzQ3MjAsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleENvb3JkMmkoR0xpbnQgcywgR0xpbnQgdCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMmkoY29udGV4dCwgcywgdCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ3MzgsNyArNDczOCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4Q29vcmQyaXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDJpdihjb250ZXh0LCB2KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDc1NSw3ICs0NzU1LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBUZXhDb29yZDJzKEdMc2hvcnQgcywgR0xzaG9ydCB0KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQycyhjb250ZXh0LCBzLCB0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDc3Myw3ICs0NzczLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDJzdihjb25zdCBHTHNob3J0ICp2KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQyc3YoY29udGV4dCwg
dikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ3OTEsNyArNDc5
MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQzZChHTGRvdWJsZSBzLCBHTGRvdWJsZSB0
LCBHTGRvdWJsZSByKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VGV4Q29vcmQzZChjb250ZXh0LCBzLCB0LCByKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNDgwOSw3ICs0ODA5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29y
ZDNkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVRleENvb3JkM2R2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00ODI3LDcgKzQ4MjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eENvb3JkM2YoR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkM2YoY29udGV4dCwgcywgdCwgcikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ4NDUsNyArNDg0NSw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQzZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkM2Z2KGNvbnRleHQs
IHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00ODYzLDcgKzQ4
NjMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkM2koR0xpbnQgcywgR0xpbnQgdCwgR0xp
bnQgcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3Jk
M2koY29udGV4dCwgcywgdCwgcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTQ4ODEsNyArNDg4MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQzaXYoY29u
c3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVU
ZXhDb29yZDNpdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNDg5OSw3ICs0ODk5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDNzKEdM
c2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDNzKGNvbnRleHQsIHMsIHQsIHIpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00OTE3LDcgKzQ5MTcsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFRleENvb3JkM3N2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDNzdihjb250ZXh0LCB2KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDkzNiw3ICs0OTM2LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhDb29yZDRkKEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91Ymxl
IHIsIEdMZG91YmxlIHEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVUZXhDb29yZDRkKGNvbnRleHQsIHMsIHQsIHIsIHEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00OTU0LDcgKzQ5NTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eENvb3JkNGR2KGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVGV4Q29vcmQ0ZHYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ5NzMsNyArNDk3Myw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVGV4Q29vcmQ0ZihHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDRmKGNv
bnRleHQsIHMsIHQsIHIsIHEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC00OTkxLDcgKzQ5OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkNGZ2KGNvbnN0
IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVU
ZXhDb29yZDRmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNTAwOSw3ICs1MDA5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDRpKEdM
aW50IHMsIEdMaW50IHQsIEdMaW50IHIsIEdMaW50IHEpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDRpKGNvbnRleHQsIHMsIHQsIHIsIHEpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01MDI3LDcgKzUwMjcsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkNGl2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQ0aXYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTUwNDYsNyArNTA0Niw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQ0cyhHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9y
dCByLCBHTHNob3J0IHEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVUZXhDb29yZDRzKGNvbnRleHQsIHMsIHQsIHIsIHEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC01MDY0LDcgKzUwNjQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eENvb3JkNHN2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVUZXhDb29yZDRzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNTA4MywxMCArNTA4MywxMCBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleEVudmYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0
KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVF
bnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5h
bWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0
ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVGV4RW52Zihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJh
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTUxMDcsMTAgKzUx
MDcsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJh
bWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1l
dGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwor
ICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudmZ2KGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTUxMjksMTAgKzUxMjksMTAgQEAgdm9pZCBHTF9BUElFTlRS
WSBUZXhFbnZpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwot
ICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4o
cG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVUZXhFbnZpKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTE1NCwxMCArNTE1NCwx
MCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEVudml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihw
bmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAg
ICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudml2KGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTUxNzYsNyArNTE3Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4R2Vu
ZChHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgcGFyYW0pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuZChjb250
ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTUxOTgsNyArNTE5OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4R2VuZHYoR0xlbnVtIGNvb3Jk
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuZHYoY29udGV4dCwg
Y29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTIx
OCw3ICs1MjE4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhHZW5mKEdMZW51bSBjb29yZCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleEdlbmYoY29udGV4dCwgY29vcmQsIHBuYW1lLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01MjQxLDcgKzUyNDEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleEdlbmZ2KEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25z
dCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuZnYoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTI2MSw3ICs1MjYxLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBUZXhHZW5pKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh
bSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVUZXhHZW5pKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNTI4Myw3ICs1MjgzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhHZW5p
dihHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5p
dihjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC01MzE0LDcgKzUzMTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlMUQoR0xl
bnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVUZXhJbWFnZTFEKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CkBAIC01MzQ4
LDkgKzUzNDgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTJEKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUzNzMsOSAr
NTM3Myw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyZihHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVUZXhQYXJhbWV0ZXJmKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTM5Niw5ICs1Mzk2LDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU0MTgsOSArNTQxOCw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyaShHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4
UGFyYW1ldGVyaShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU0NDIsOSArNTQ0Miw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGludCAqcGFyYW1zCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQ
YXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NDYyLDcgKzU0NjIsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRyYW5zbGF0ZWQoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg
eikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5zbGF0ZWQo
Y29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTU0ODAsNyArNTQ4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVHJhbnNsYXRlZihHTGZsb2F0
IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVHJhbnNsYXRlZihjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTQ5Nyw3ICs1NDk3LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXgyZChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4MmQoY29udGV4dCwgeCwgeSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU1MTUsNyArNTUxNSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4MmR2KGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4MmR2KGNvbnRleHQsIHYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NTMyLDcgKzU1MzIsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFZlcnRleDJmKEdMZmxvYXQgeCwgR0xmbG9hdCB5KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4MmYoY29udGV4dCwgeCwgeSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU1NTAsNyArNTU1MCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4MmZ2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXgyZnYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU1NjcsNyArNTU2Nyw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4MmkoR0xpbnQgeCwgR0xpbnQgeSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDJpKGNvbnRleHQsIHgsIHkpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NTg1LDcgKzU1ODUsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDJpdihjb25zdCBHTGludCAqdikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDJpdihjb250ZXh0LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTYwMiw3ICs1NjAyLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXgycyhHTHNob3J0IHgsIEdMc2hvcnQgeSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDJzKGNvbnRleHQsIHgsIHkp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NjIwLDcgKzU2MjAs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDJzdihjb25zdCBHTHNob3J0ICp2KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4MnN2KGNvbnRleHQsIHYp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NjM4LDcgKzU2Mzgs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDNkKEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM
ZG91YmxlIHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0
ZXgzZChjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNTY1Niw3ICs1NjU2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXgzZHYoY29u
c3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVWZXJ0ZXgzZHYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTU2NzQsNyArNTY3NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4M2YoR0xm
bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZlcnRleDNmKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NjkyLDcgKzU2OTIsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFZlcnRleDNmdihjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4M2Z2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NzEwLDcgKzU3MTAsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFZlcnRleDNpKEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXgzaShjb250ZXh0LCB4LCB5LCB6KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTcyOCw3ICs1NzI4LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXgzaXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXgzaXYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU3NDYsNyArNTc0Niw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4M3MoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQg
eikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDNzKGNv
bnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC01NzY0LDcgKzU3NjQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDNzdihjb25zdCBHTHNo
b3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4
M3N2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC01NzgzLDcgKzU3ODMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDRkKEdMZG91YmxlIHgs
IEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXg0ZChjb250ZXh0LCB4LCB5LCB6LCB3KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTgwMSw3ICs1ODAxLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXg0ZHYoY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXg0ZHYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU4MjAsNyArNTgyMCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4NGYoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eiwgR0xmbG9hdCB3KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VmVydGV4NGYoY29udGV4dCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTU4MzgsNyArNTgzOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
NGZ2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXg0ZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTU4NTYsNyArNTg1Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
NGkoR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDRpKGNvbnRleHQsIHgsIHksIHosIHcpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01ODc0LDcgKzU4NzQsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDRpdihjb25zdCBHTGludCAqdikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDRpdihjb250ZXh0LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTg5Myw3ICs1ODkzLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXg0cyhHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6
LCBHTHNob3J0IHcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXg0cyhjb250ZXh0LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNTkxMSw3ICs1OTExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXg0
c3YoY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVZlcnRleDRzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNTkzMCw3ICs1OTMwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWaWV3cG9y
dChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWaWV3cG9y
dChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9w
b2ludHNfZ2xfMV8xX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF8xXzFfYXV0b2dlbi5jcHAKaW5kZXggOGIzNTAwMzZlYzI4MDky
NGZkYjkzZmQxYTA4Mzk5MmVjZDI1ZTQwNy4uYTk2ZDU4MzNkYjQ3MjQyMWY2MzRjYzVmNGQ3Y2Ji
MGZjY2QwOGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
L2VudHJ5X3BvaW50c19nbF8xXzFfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzFfYXV0b2dlbi5jcHAKQEAgLTM4LDgg
KzM4LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIEFyZVRleHR1cmVzUmVzaWRlbnQoR0xzaXpl
aSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzLCBHTGIKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQXJlVGV4dHVyZXNSZXNpZGVudChjb250ZXh0LCBu
LCB0ZXh0dXJlcywgcmVzaWRlbmNlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBBcnJheUVsZW1lbnQoR0xp
bnQgaSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFycmF5RWxl
bWVudChjb250ZXh0LCBpKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFRleHR1cmUoR0xlbnVtIHRh
cmdldCwgR0x1aW50IHRleHR1cmUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0
ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQmluZFRleHR1cmUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA4LDkgKzEwOCw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JQb2ludGVyKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwgY29uc3Qgdm9pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5
cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVDb2xvclBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBw
b2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM3LDcg
KzEzNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleEltYWdlMUQoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZUNvcHlUZXhJbWFnZTFEKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgYm9yZGVyKSk7CkBAIC0xNjgsOSArMTY4LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBDb3B5VGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRl
eHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXhJbWFnZTJEKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5NSw3ICsxOTUsNyBAQCBDb3B5VGV4U3ViSW1h
Z2UxRChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeCwg
R0xpbnQgeSwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMUQoY29udGV4dCwgdGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeCwgeSwgd2lkdGgpKTsKQEAgLTIyNSw5ICsyMjUsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMkQoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQ4LDggKzI0OCw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRGVsZXRlVGV4dHVyZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb25zdCBUZXh0dXJlSUQgKnRleHR1
cmVzUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlEICo+KHRleHR1
cmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFRleHR1cmVJ
RCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFRl
eHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVUZXh0dXJlcyhjb250ZXh0LCBuLCB0ZXh0dXJl
c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjgsOCArMjY4LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlQ2xpZW50U3RhdGUoR0xlbnVtIGFycmF5KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlQ
YWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8Q2xpZW50VmVydGV4QXJyYXlUeXBlPihhcnJheSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBDbGllbnRWZXJ0ZXhBcnJheVR5
cGUgYXJyYXlQYWNrZWQgPSBGcm9tR0w8Q2xpZW50VmVydGV4QXJyYXlUeXBlPihhcnJheSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVE
aXNhYmxlQ2xpZW50U3RhdGUoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMjg4LDggKzI4OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5
cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0Fy
cmF5cyhjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMzExLDEwICszMTEsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxl
bWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2kK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwot
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVN
b2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVt
ZW50cyhjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMzMyw3ICszMzMsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIEVkZ2VGbGFnUG9pbnRlcihHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9p
ZCAqcG9pbnRlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVFZGdlRmxhZ1BvaW50ZXIoY29udGV4dCwgc3RyaWRlLCBwb2ludGVyKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM1Miw4ICszNTIsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEVuYWJsZUNsaWVudFN0YXRlKEdMZW51bSBhcnJheSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2VkICAgICAgICAg
ICAgID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5VHlwZT4oYXJyYXkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2Vk
ID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5VHlwZT4oYXJyYXkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlQ2xpZW50U3Rh
dGUoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MzcyLDggKzM3Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuVGV4dHVyZXMoR0xzaXplaSBuLCBH
THVpbnQgKnRleHR1cmVzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlSUQgKnRleHR1cmVzUGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEICo+KHRleHR1cmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5UZXh0dXJlcyhjb250ZXh0LCBuLCB0ZXh0
dXJlc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zOTIsNyArMzkyLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQb2ludGVydihHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJh
bXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2V0UG9pbnRlcnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleFBvaW50
ZXIoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUluZGV4
UG9pbnRlcihjb250ZXh0LCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgSW5kZXh1YihH
THVieXRlIGMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRl
eHViKGNvbnRleHQsIGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC00NTEsNyArNDUxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleHVidihjb25zdCBHTHVieXRl
ICpjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5kZXh1YnYo
Y29udGV4dCwgYykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ3
Miw4ICs0NzIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEludGVybGVhdmVkQXJyYXlzKEdMZW51bSBm
b3JtYXQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwbwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlSW50ZXJsZWF2ZWRBcnJheXMoY29udGV4dCwgZm9ybWF0LCBzdHJpZGUsIHBvaW50ZXIp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00OTEsOCArNDkxLDgg
QEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKICAgICBH
TGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUlzVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTIzLDkgKzUyMyw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTm9ybWFsUG9pbnRlcihHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0
IHZvaWQgKnBvaW50ZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRl
eEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
dHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVO
b3JtYWxQb2ludGVyKGNvbnRleHQsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFBvbHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
UG9seWdvbk9mZnNldChjb250ZXh0LCBmYWN0b3IsIHVuaXRzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvcENsaWVudEF0
dHJpYigpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BDbGll
bnRBdHRyaWIoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTU4MSw4ICs1ODEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByaW9yaXRpemVUZXh0dXJlcyhH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsIGNvbnN0IEdMZgogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJpb3JpdGl6ZVRleHR1cmVzKGNvbnRleHQsIG4sIHRleHR1cmVzLCBwcmlv
cml0aWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjAwLDcg
KzYwMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHVzaENsaWVudEF0dHJpYihHTGJpdGZpZWxkIG1h
c2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQdXNoQ2xpZW50
QXR0cmliKGNvbnRleHQsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC02MjEsOSArNjIxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZFBvaW50ZXIo
R0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4Q29vcmRQb2ludGVyKGNvbnRleHQsIHNp
emUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1
YkltYWdlMUQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlMUQoY29udGV4
dCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgd2lkdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7
CkBAIC02ODUsOSArNjg1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTJEKEdMZW51
bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3ViSW1h
Z2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC03MTEsOSArNzExLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQb2ludGVyKEdMaW50IHNp
emUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm8KIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVmVy
dGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleFBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlw
ZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8xXzJfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMl9hdXRvZ2VuLmNwcAppbmRleCA0MDFkNDFhYTIx
MWQ4ZjgxNjI3MmFiZjk2OThjNDY5MDFiN2MzYWI2Li44OWMyOTE0MTkyODA1YjljZjMxOTU2Njcw
MjA0MWYxNDBhOWY0OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMl9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMl9hdXRvZ2VuLmNwcApAQCAt
NDcsOSArNDcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTNEKEdMZW51bSB0
YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleFN1Yklt
YWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZz
ZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NzgsOSArNzgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBt
b2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKGNvbnRleHQsIG1v
ZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRp
Y2VzKSk7CkBAIC0xMTUsOSArMTE1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTNEKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4SW1h
Z2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTUzLDggKzE1Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2Uz
RChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlM0Qo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50
cnlfcG9pbnRzX2dsXzFfM19hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8zX2F1dG9nZW4uY3BwCmluZGV4IGY0NDQzZWM1YWUw
YzljNmIwMzk5OWY0MzQ0YzhjZDY1NmMzMDM5YTguLmJhMzljYWJkMmZkNDYyNTEzMjhiYjkwYzJi
Nzk1NzA0MTM2NzVlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8zX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8zX2F1dG9nZW4uY3BwCkBAIC0z
NSw3ICszNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVy
ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFjdGl2ZVRleHR1
cmUoY29udGV4dCwgdGV4dHVyZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGllbnRBY3RpdmVUZXh0dXJl
KEdMZW51bSB0ZXh0dXJlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUNsaWVudEFjdGl2ZVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29tcHJlc3NlZFRleEltYWdlMUQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTFEKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTExNyw4ICsxMTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
Q29tcHJlc3NlZFRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLApAQCAtMTU0LDggKzE1NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29t
cHJlc3NlZFRleEltYWdlM0QoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRh
dGVDb21wcmVzc2VkVGV4SW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsCkBAIC0xODcsOCArMTg3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBD
b21wcmVzc2VkVGV4U3ViSW1hZ2UxRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMUQoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0yMjIsOCArMjIyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLApAQCAtMjYxLDkgKzI2MSw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSkpOwpAQCAtMjg2LDgg
KzI4Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Q29tcHJlc3NlZFRleEltYWdlKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCB2b2lkICppbWcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRDb21wcmVzc2VkVGV4SW1hZ2UoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW1nKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgTG9hZFRyYW5zcG9zZU1hdHJpeGQoY29uc3QgR0xkb3VibGUgKm0pCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMb2FkVHJhbnNwb3NlTWF0cml4
ZChjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzIzLDcgKzMyMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTG9hZFRyYW5zcG9zZU1hdHJpeGYoY29u
c3QgR0xmbG9hdCAqbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUxvYWRUcmFuc3Bvc2VNYXRyaXhmKGNvbnRleHQsIG0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0
VHJhbnNwb3NlTWF0cml4ZChjb25zdCBHTGRvdWJsZSAqbSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRUcmFuc3Bvc2VNYXRyaXhkKGNvbnRleHQsIG0pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNTksNyArMzU5LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBNdWx0VHJhbnNwb3NlTWF0cml4Zihjb25zdCBHTGZsb2F0ICptKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdFRyYW5zcG9zZU1h
dHJpeGYoY29udGV4dCwgbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQxZChHTGVu
dW0gdGFyZ2V0LCBHTGRvdWJsZSBzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZChjb250ZXh0LCB0YXJnZXQsIHMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTXVsdGlUZXhDb29yZDFkdihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVNdWx0aVRleENvb3JkMWR2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENv
b3JkMWYoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZihjb250ZXh0LCB0
YXJnZXQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDM2LDcgKzQzNiw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDFmdihHTGVudW0gdGFyZ2V0LCBjb25zdCBH
TGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZnYoY29udGV4dCwgdGFyZ2V0LCB2KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11
bHRpVGV4Q29vcmQxaShHTGVudW0gdGFyZ2V0LCBHTGludCBzKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxaShjb250
ZXh0LCB0YXJnZXQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDc1LDcgKzQ3
NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDFpdihHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkMWl2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBNdWx0aVRleENvb3JkMXMoR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQx
cyhjb250ZXh0LCB0YXJnZXQsIHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTE0
LDcgKzUxNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDFzdihHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTHNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxc3YoY29udGV4dCwgdGFyZ2V0LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIE11bHRpVGV4Q29vcmQyZChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRv
dWJsZSB0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU11bHRpVGV4Q29vcmQyZChjb250ZXh0LCB0YXJnZXQsIHMsIHQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVs
dGlUZXhDb29yZDJkdihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENv
b3JkMmR2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC01NzIsNyArNTcyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkMmYoR0xlbnVt
IHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmKGNvbnRleHQsIHRh
cmdldCwgcywgdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01OTIsNyArNTkyLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkMmZ2KEdMZW51bSB0YXJnZXQsIGNvbnN0
IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
TXVsdGlUZXhDb29yZDJpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhD
b29yZDJpKGNvbnRleHQsIHRhcmdldCwgcywgdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkMml2KEdM
ZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyaXYoY29udGV4dCwgdGFy
Z2V0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY1MCw3ICs2NTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQycyhHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMs
IEdMc2hvcnQgdCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVNdWx0aVRleENvb3JkMnMoY29udGV4dCwgdGFyZ2V0LCBzLCB0KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IE11bHRpVGV4Q29vcmQyc3YoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRl
eENvb3JkMnN2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkM2QoR0xl
bnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3Jk
M2QoY29udGV4dCwgdGFyZ2V0LCBzLCB0LCByKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQzZHYoR0xl
bnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDNkdihjb250ZXh0LCB0
YXJnZXQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzMwLDcgKzczMCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDNmKEdMZW51bSB0YXJnZXQsIEdMZmxvYXQg
cywgR0xmbG9hdCB0LCBHTGZsb2F0IHIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmKGNvbnRleHQsIHRhcmdldCwg
cywgdCwgcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03NTAsNyArNzUwLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkM2Z2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdM
ZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVs
dGlUZXhDb29yZDNpKEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVs
dGlUZXhDb29yZDNpKGNvbnRleHQsIHRhcmdldCwgcywgdCwgcikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENv
b3JkM2l2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzaXYoY29u
dGV4dCwgdGFyZ2V0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgxMCw3ICs4
MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQzcyhHTGVudW0gdGFyZ2V0LCBH
THNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzcyhjb250ZXh0LCB0
YXJnZXQsIHMsIHQsIHIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODMwLDcgKzgz
MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDNzdihHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTHNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzc3YoY29udGV4dCwgdGFyZ2V0LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg1MSw3ICs4NTEsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIE11bHRpVGV4Q29vcmQ0ZChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0
LCBHTGRvdWJsZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZChjb250ZXh0LCB0YXJnZXQsIHMsIHQsIHIsIHEpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTXVsdGlUZXhDb29yZDRkdihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVN
dWx0aVRleENvb3JkNGR2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3Jk
NGYoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRl
eENvb3JkNGYoY29udGV4dCwgdGFyZ2V0LCBzLCB0LCByLCBxKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29v
cmQ0ZnYoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkNGZ2KGNv
bnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05MzMsNyAr
OTMzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkNGkoR0xlbnVtIHRhcmdldCwg
R0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkNGkoY29udGV4dCwg
dGFyZ2V0LCBzLCB0LCByLCBxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTk1Myw3
ICs5NTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQ0aXYoR0xlbnVtIHRhcmdl
dCwgY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpdihjb250ZXh0LCB0YXJnZXQsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTc0LDcgKzk3NCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTXVsdGlUZXhDb29yZDRzKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0
LCBHTHNob3J0IHIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDRzKGNvbnRleHQsIHRhcmdldCwgcywgdCwgciwgcSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05OTQsNyArOTk0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBNdWx0aVRleENvb3JkNHN2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TXVsdGlUZXhDb29yZDRzdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVDb3Zl
cmFnZShHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBsZUNvdmVyYWdlKGNvbnRl
eHQsIHZhbHVlLCBpbnZlcnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzRf
YXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzFfNF9hdXRvZ2VuLmNwcAppbmRleCA5YzQ2ZGZmY2E5N2MyYjliM2YwNGIwZmM5NDYy
Y2M5ODhhZmU1NWEwLi45ZDA3ZGRmYTAyOTkzZGRjYjM1ZjgzNWFhNjZkYTk2MzQ3YzE4N2E4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRz
X2dsXzFfNF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzFfNF9hdXRvZ2VuLmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEJsZW5kQ29sb3IoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxv
YXQgYmx1ZSwgR0xmbG9hdCBhbAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb24oR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnRleHQsIG1vZGUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04Miw3ICs4Miw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jU2VwYXJhdGUoR0xlbnVtIHNmYWN0b3JSR0IsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRG
dW5jU2VwYXJhdGUoY29udGV4dCwgc2ZhY3RvclJHQiwgZGZhY3RvclJHQiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2ZhY3RvckFscGhhLCBkZmFjdG9yQWxwaGEpKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEZvZ0Nvb3JkUG9pbnRlcihHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNv
bnN0IHZvaWQgKnBvaW50ZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUZvZ0Nvb3JkUG9pbnRlcihjb250ZXh0LCB0eXBlLCBzdHJpZGUsIHBv
aW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgRm9nQ29vcmRkKEdMZG91YmxlIGNvb3JkKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9nQ29vcmRkKGNvbnRleHQsIGNvb3JkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgRm9nQ29vcmRkdihjb25zdCBHTGRvdWJsZSAqY29vcmQpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dDb29yZGR2KGNvbnRleHQsIGNv
b3JkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTYwLDcgKzE2
MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRm9nQ29vcmRmKEdMZmxvYXQgY29vcmQpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dDb29yZGYoY29udGV4dCwgY29v
cmQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNzgsNyArMTc4
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGb2dDb29yZGZ2KGNvbnN0IEdMZmxvYXQgKmNvb3JkKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9nQ29vcmRmdihjb250
ZXh0LCBjb29yZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIw
Miw5ICsyMDIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0FycmF5cyhHTGVudW0gbW9k
ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0FycmF5cyhjb250
ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQsIGRyYXdjb3VudCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzMCw5ICsyMzAsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIE11bHRpRHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5
cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBl
Pih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1p
dGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHMoY29udGV4dCwgbW9kZVBhY2tlZCwgY291
bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGRyYXdjb3VudCkpOwpAQCAtMjUzLDggKzI1Myw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRQYXJhbWV0ZXJmKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUG9pbnRQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihw
bmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQb2ludFBhcmFtZXRl
ciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBh
cmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmKGNvbnRleHQsIHBuYW1lUGFja2VkLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNzQsOCArMjc0LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRlcmZ2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQb2ludFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0
ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBv
aW50UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmZ2KGNvbnRleHQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjk0LDcgKzI5NCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRQYXJhbWV0ZXJpKEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlUG9pbnRQYXJhbWV0ZXJpKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb2lu
dFBhcmFtZXRlcml2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFBhcmFt
ZXRlcml2KGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3IzYihH
TGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2IoY29u
dGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0z
NTMsNyArMzUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjNidihjb25zdCBH
TGJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNv
bmRhcnlDb2xvcjNidihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29s
b3IzZChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNlY29uZGFy
eUNvbG9yM2QoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xv
cjNkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2R2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBTZWNvbmRhcnlDb2xvcjNmKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJs
dWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlU2Vjb25kYXJ5Q29sb3IzZihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNl
Y29uZGFyeUNvbG9yM2Z2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmdihjb250ZXh0LCB2KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3IzaShHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGlu
dCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVNlY29uZGFyeUNvbG9yM2koY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBTZWNvbmRhcnlDb2xvcjNpdihjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2l2KGNvbnRleHQsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00ODUsNyArNDg1LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjNzKEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVu
LCBHTHNob3J0IGJsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3Izcyhjb250ZXh0LCByZWQsIGdyZWVuLCBibHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM3N2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNzdihjb250ZXh0
LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTIzLDcgKzUy
Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3IzdWIoR0x1Ynl0ZSByZWQsIEdM
dWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1Yihjb250ZXh0LCByZWQs
IGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU0Miw3ICs1NDIs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM3Vidihjb25zdCBHTHVieXRlICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzdWJ2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjN1aShH
THVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWludCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VpKGNv
bnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NTgwLDcgKzU4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3IzdWl2KGNvbnN0
IEdMdWludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNl
Y29uZGFyeUNvbG9yM3Vpdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5
Q29sb3IzdXMoR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNv
bmRhcnlDb2xvcjN1cyhjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFy
eUNvbG9yM3Vzdihjb25zdCBHTHVzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3Vzdihjb250ZXh0LCB2KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjM5LDggKzYzOSw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3JQb2ludGVyKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUG9p
bnRlcihjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBXaW5kb3dQb3MyZChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2luZG93UG9zMmQoY29udGV4dCwgeCwgeSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY3NSw3ICs2NzUsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczJkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczJkdihjb250ZXh0LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjkyLDcgKzY5Miw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2luZG93UG9zMmYoR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3MyZihjb250
ZXh0LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzEw
LDcgKzcxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2luZG93UG9zMmZ2KGNvbnN0IEdMZmxvYXQg
KnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3My
ZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTcyNyw3ICs3MjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczJpKEdMaW50IHgsIEdM
aW50IHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQ
b3MyaShjb250ZXh0LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2luZG93UG9zMml2KGNvbnN0
IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2lu
ZG93UG9zMml2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQb3MycyhHTHNo
b3J0IHgsIEdMc2hvcnQgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVdpbmRvd1BvczJzKGNvbnRleHQsIHgsIHkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQ
b3Myc3YoY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVdpbmRvd1BvczJzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2lu
ZG93UG9zM2QoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczNkKGNvbnRleHQsIHgsIHks
IHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MTYsNyArODE2
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQb3MzZHYoY29uc3QgR0xkb3VibGUgKnYpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3MzZHYoY29u
dGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTgzNCw3
ICs4MzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczNmKEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVXaW5kb3dQb3MzZihjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtODUyLDcgKzg1Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2luZG93
UG9zM2Z2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVXaW5kb3dQb3MzZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdp
bmRvd1BvczNpKEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3MzaShjb250ZXh0LCB4LCB5LCB6KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODg4LDcgKzg4OCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgV2luZG93UG9zM2l2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2luZG93UG9zM2l2KGNvbnRleHQsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05MDYsNyArOTA2LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQb3MzcyhHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9y
dCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2luZG93UG9z
M3MoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczNzdihjb25z
dCBHTHNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
V2luZG93UG9zM3N2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50
cnlfcG9pbnRzX2dsXzFfNV9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV81X2F1dG9nZW4uY3BwCmluZGV4IGIyYmFlZjcyMDVm
MzU3NjIxMDJkNTVlZmUzNjVjYWYzMjU4ZTE3YzQuLjhhMWVkNGIzMzJmZGIyYzQwYmViMzBkNzk2
MTY3MmZkYzJkOTc1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTC9lbnRyeV9wb2ludHNfZ2xfMV81X2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV81X2F1dG9nZW4uY3BwCkBAIC0z
NSw5ICszNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmVnaW5RdWVyeShHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaWQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRh
cmdldCk7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+
KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUJlZ2luUXVlcnkoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpZFBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
QmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgQnVmZmVy
SUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklE
PihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVC
aW5kQnVmZmVyKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTgxLDEwICs4MSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJ1
ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkICpkYXRh
LCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFy
Z2V0KTsKLSAgICAgICAgQnVmZmVyVXNhZ2UgdXNhZ2VQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlclVzYWdlPih1c2FnZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5n
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJC
aW5kaW5nPih0YXJnZXQpOworICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJVc2FnZT4odXNhZ2UpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCdWZmZXJE
YXRhKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2l6ZSwgZGF0YSwgdXNhZ2VQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDYsOSArMTA2LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBCdWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNl
dCwgR0xzaXplaXB0ciBzaXplLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUJ1ZmZlclN1YkRhdGEoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIHNpemUsIGRhdGEp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMjcsOCArMTI3LDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICpidWZmZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb25zdCBCdWZm
ZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVy
SUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25z
dCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZUJ1ZmZlcnMoY29udGV4dCwgbiwg
YnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNDcsOCArMTQ3
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVRdWVyaWVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICppZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFF1ZXJ5
SUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlE
ICo+KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBRdWVy
eUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25z
dCBRdWVyeUlEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVRdWVyaWVzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjcsOCArMTY3LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBFbmRRdWVyeShHTGVudW0gdGFyZ2V0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRRdWVyeShjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xODYsOCArMTg2LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBHZW5CdWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCAqYnVmZmVyc1BhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQgKj4oYnVmZmVycyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCAqYnVmZmVyc1BhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRCAqPihidWZm
ZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdlbkJ1ZmZlcnMoY29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0yMDYsOCArMjA2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5R
dWVyaWVzKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxRdWVyeUlEICo+KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBRdWVyeUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxRdWVyeUlEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdlblF1ZXJpZXMoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0QnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjQ5LDkgKzI0OSw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QnVmZmVyUG9pbnRlcnYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+
KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI3Myw4ICsy
NzMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwg
R0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpegogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0QnVmZmVyU3ViRGF0YShjb250ZXh0LCB0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI5NCw5ICsyOTQsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aXYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlE
PihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXYoY29udGV4
dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0zMTYsOSArMzE2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9i
amVjdHVpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBRdWVyeUlE
IGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2KGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzM4LDggKzMz
OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBR
dWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRRdWVyeWl2KGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNTgsOCAr
MzU4LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzQnVmZmVyKEdMdWludCBidWZmZXIpCiAg
ICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUlzQnVmZmVyKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4Niw4ICszODYsOCBAQCBHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgSXNRdWVyeShHTHVpbnQgaWQpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNRdWVyeShjb250ZXh0LCBpZFBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQxNiw4ICs0
MTYsOCBAQCB2b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGFjY2VzcykKICAgICB2b2lkICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hcEJ1ZmZlcihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGFjY2VzcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC00NDYsOCArNDQ2LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIFVubWFwQnVmZmVyKEdMZW51
bSB0YXJnZXQpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5tYXBCdWZm
ZXIoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfMl8wX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8yXzBfYXV0b2dlbi5jcHAKaW5kZXggOTQxZWI1MTEwNjQ5OThjNDJmYTBh
M2U1YmZiMzdkZGQ2MTAyMjMyZS4uMTQ1YmExODZjYzQwODZhOTkzYzVmMTQ5ZmI4YTk1YTM1OTU3
N2JlNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5
X3BvaW50c19nbF8yXzBfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8yXzBfYXV0b2dlbi5jcHAKQEAgLTM1LDEwICszNSwx
MCBAQCB2b2lkIEdMX0FQSUVOVFJZIEF0dGFjaFNoYWRlcihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50
IHNoYWRlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
c2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUF0dGFjaFNoYWRlcihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01OSw5ICs1
OSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFt
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlQmluZEF0dHJpYkxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGluZGV4LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtODAsOCArODAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZShH
TGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZShjb250ZXh0LCBtb2RlUkdCLCBtb2RlQWxwaGEpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05OCw4ICs5OCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29tcGlsZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q29tcGlsZVNoYWRlcihjb250ZXh0LCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTE4LDcgKzExOCw3IEBAIEdMdWludCBHTF9BUElFTlRSWSBDcmVhdGVQcm9n
cmFtKCkKICAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ3JlYXRlUHJvZ3JhbShjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQ2LDggKzE0Niw4IEBAIEdMdWludCBHTF9BUElFTlRS
WSBDcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpCiAgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyVHlwZT4odHlwZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNyZWF0ZVNoYWRlcihjb250
ZXh0LCB0eXBlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMTczLDggKzE3Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbShHTHVpbnQg
cHJvZ3JhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFt
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5Miw4ICsxOTIsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRGVsZXRlU2hhZGVyKGNvbnRleHQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0yMTIsMTAgKzIxMiwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIERldGFjaFNo
YWRlcihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURldGFjaFNoYWRlcihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShjb250ZXh0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNTEsNyAr
MjUxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdM
ZW51bSAqYnVmcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURy
YXdCdWZmZXJzKGNvbnRleHQsIG4sIGJ1ZnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29udGV4
dCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjk3LDkgKzI5Nyw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlQXR0cmliKEdMdWludCBwcm9ncmFtLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZUF0dHJpYihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsIHR5cGUsIG5hbWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzI5LDkgKzMyOSw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsIHR5cGUsIG5hbWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzU3LDkgKzM1Nyw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0QXR0YWNoZWRTaGFkZXJzKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEICpzaGFkZXJzUGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRCAqPihzaGFkZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCAqc2hhZGVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRCAqPihzaGFkZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIG1heENvdW50LCBjb3VudCwgc2hhZGVyc1BhY2tlZCkpOwpA
QCAtMzgyLDggKzM4Miw4IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldEF0dHJpYkxvY2F0aW9uKEdM
dWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCiAgICAgR0xpbnQgcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRBdHRyaWJMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQxNyw4ICs0MTcsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbmZvTG9nKEdMdWludCBwcm9ncmFtLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1JbmZvTG9nKGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykpOwpAQCAtNDQxLDkgKzQ0MSw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbWl2KEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0UHJvZ3JhbWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NjMsOCArNDYzLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3QKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
R2V0U2hhZGVySW5mb0xvZyhjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwg
aW5mb0xvZykpOwpAQCAtNDg3LDggKzQ4Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVy
U291cmNlKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hh
ZGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShjb250ZXh0LCBzaGFk
ZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgc291cmNlKSk7CkBAIC01MTAsOSArNTEwLDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJpdihHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRl
cik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFNoYWRlcml2KGNvbnRleHQsIHNoYWRlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTUzMiw4ICs1MzIsOCBAQCBHTGlu
dCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdM
Y2hhciAqbmFtZSkKICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFVu
aWZvcm1Mb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTU2MywxNSArNTYzLDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1z
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtZnYo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcykpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VW5pZm9ybWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRVbmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1z
KTsKICAgICB9CiB9CiAKQEAgLTU4NSwxNSArNTg2LDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWl2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFVuaWZvcm1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBw
YXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0VW5pZm9ybWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybWl2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcyk7
CiAgICAgfQogfQogCkBAIC02MDcsOCArNjA5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0
ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBvaW4K
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGNvbnRleHQs
IGluZGV4LCBwbmFtZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTYyOCw3ICs2MzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJp
YmR2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYmR2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTY0OCw3ICs2NTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRl
eEF0dHJpYmZ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0
VmVydGV4QXR0cmliZnYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjY4LDcgKzY3MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VmVydGV4QXR0cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2V0VmVydGV4QXR0cmliaXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjg3LDggKzY4OSw4IEBAIEdMYm9vbGVhbiBHTF9BUElF
TlRSWSBJc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVJc1Byb2dyYW0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTcxNSw4ICs3MTcsOCBAQCBHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgSXNTaGFkZXIoR0x1aW50IHNoYWRlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVy
UGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNo
YWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVJc1NoYWRlcihjb250ZXh0LCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC03NDIsOCArNzQ0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBMaW5r
UHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlua1Byb2dyYW0oY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03Njcs
OSArNzY5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2hhZGVyU291cmNlKGNv
bnRleHQsIHNoYWRlclBhY2tlZCwgY291bnQsIHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzg5LDggKzc5MSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50
IHJlZiwgR0x1aW50CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVuY2lsRnVuY1NlcGFyYXRl
KGNvbnRleHQsIGZhY2UsIGZ1bmMsIHJlZiwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTgwOCw3ICs4MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5j
aWxNYXNrU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJh
dGUoY29udGV4dCwgZmFjZSwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04
MzIsOCArODM0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0ZShHTGVudW0g
ZmFjZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWlsLCBHTGUKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVN0ZW5jaWxPcFNlcGFyYXRlKGNvbnRleHQsIGZhY2UsIHNmYWlsLCBkcGZhaWwsIGRw
cGFzcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg1MSwxMyAr
ODUzLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFmKEdMaW50IGxvY2F0aW9uLCBHTGZs
b2F0IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTFmKGNvbnRleHQsIGxvY2F0aW9uLCB2MCkpOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xZihjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHYwKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvblBhY2tlZCwgdjApOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0KIH0KIApAQCAtODcxLDE0ICs4
NzUsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlm
b3JtMWZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0xZnYoY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTg5MCwxMyArODk1LDE1IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVW5pZm9ybTFpKEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm0xaShjb250ZXh0LCBsb2NhdGlvbiwgdjApKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWkoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYw
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtMWkobG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm0xaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAgLTkxMSwxNCArOTE4LDE1IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybTFpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xaXYoY29udGV4dCwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0xaXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgIH0KIH0KIApAQCAtOTMwLDE0ICs5MzgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
MmYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yZihjb250ZXh0LCBsb2NhdGlvbiwg
djAsIHYxKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm0yZihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTJmKGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxv
Y2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSk7CiAgICAgfQogfQogCkBAIC05NTEsMTQgKzk2MCwxNSBAQCB2b2lk
IEdMX0FQSUVOVFJZIFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yZnYoY29udGV4
dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVW5pZm9ybTJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5p
Zm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgIH0KIH0KIApAQCAtOTcwLDE0ICs5ODAsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBV
bmlmb3JtMmkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJpKGNvbnRleHQsIGxvY2F0aW9u
LCB2MCwgdjEpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVW5pZm9ybTJpKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmko
bG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICB9CiB9CiAKQEAgLTk5MiwxNCArMTAwMywxNSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMml2KGNvbnRl
eHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVVuaWZvcm0yaXYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJpdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKTsKICAgICB9CiB9CiAKQEAgLTEwMTIsMTQgKzEwMjQsMTUgQEAgdm9pZCBHTF9BUElFTlRS
WSBVbmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxv
YXQgdjIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0z
Zihjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2YoY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwor
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYy
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtM2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYx
LCB2Mik7CiAgICAgfQogfQogCkBAIC0xMDMzLDE0ICsxMDQ2LDE1IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNmdihjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVVbmlmb3JtM2Z2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtM2Z2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTNmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2Z2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC0xMDUzLDE0ICsxMDY3LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNp
KEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2koY29udGV4dCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVW5pZm9ybTNpKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYy
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0zaShsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2ksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNpLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgIH0KIH0K
IApAQCAtMTA3NSwxNCArMTA5MCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zaXYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVVbmlmb3JtM2l2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0zaXYoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24s
IGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEwOTYsMTQg
KzExMTIsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNGYoR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEcKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVV
bmlmb3JtNGYoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtNGYoY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYy
LCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb25QYWNrZWQsIHYw
LCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00
ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICB9CiB9CiAKQEAgLTExMTcsMTQgKzExMzQs
MTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3Jt
NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00ZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm00ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTExMzgsMTQgKzExNTYsMTUgQEAgdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtNGkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwg
R0xpbnQgdjIsIEdMaW50IHYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNGkoY29udGV4dCwg
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtNGkoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIs
IHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00aSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwg
djIsIHYzKTsKICAgICB9CiB9CiAKQEAgLTExNjAsMTQgKzExNzksMTUgQEAgdm9pZCBHTF9BUElF
TlRSWSBVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRpdihjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVVbmlmb3JtNGl2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtNGl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTRpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC0xMTg0LDE0ICsxMjA0LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1h
dHJpeDJmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KGNvbnRleHQs
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJmdihj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAg
ICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
TWF0cml4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MmZ2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTIwOCwxNCArMTIzMSwx
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDNmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDNmdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybU1hdHJpeDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsK
ICAgICB9CiB9CiAKQEAgLTEyMzIsMTQgKzEyNTgsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoY29u
dGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4
NGZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm1NYXRyaXg0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0ZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xMjUwLDggKzEy
NzksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVVzZVByb2dyYW0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjY5LDggKzEyOTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFZhbGlkYXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmFsaWRh
dGVQcm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTI4OSw3ICsxMzE4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIx
ZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZChjb250ZXh0LCBpbmRleCwgeCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMDgsNyArMTMzNyw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUg
KnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4QXR0cmliMWR2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTEzMjcsNyArMTM1Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0
cmliMWYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZihjb250ZXh0LCBpbmRleCwgeCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzNDYsNyArMTM3NSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9h
dCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWIxZnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMTM2NSw3ICsxMzk0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWIxcyhHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFzKGNvbnRleHQsIGluZGV4LCB4KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM4NCw3ICsxNDEzLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIxc3YoR0x1aW50IGluZGV4LCBjb25zdCBHTHNo
b3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjFzdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xNDAzLDcgKzE0MzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjJkKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIyZChjb250ZXh0LCBpbmRleCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xNDIzLDcgKzE0NTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJkdihHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJkdihjb250ZXh0LCBpbmRl
eCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNDQyLDcgKzE0NzEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4QXR0cmliMmYoY29udGV4dCwgaW5kZXgsIHgsIHkpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTQ2Miw3ICsxNDkxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBW
ZXJ0ZXhBdHRyaWIyZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjJmdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0x
NDgxLDcgKzE1MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJzKEdMdWludCBp
bmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliMnMoY29udGV4dCwgaW5kZXgs
IHgsIHkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTUwMSw3ICsxNTMwLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIyc3YoR0x1aW50IGluZGV4LCBjb25zdCBHTHNo
b3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjJzdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xNTIxLDcgKzE1NTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjNkKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg
egogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjNkKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE1NDEsNyArMTU3MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliM2R2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliM2R2
KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1NjEs
NyArMTU5MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliM2YoR0x1aW50IGluZGV4
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmKGNvbnRleHQs
IGluZGV4LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1ODEsNyAr
MTYxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliM2Z2KEdMdWludCBpbmRleCwg
Y29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTYwMSw3ICsxNjMwLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWIzcyhHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBH
THNob3J0IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4QXR0cmliM3MoY29udGV4dCwgaW5kZXgsIHgsIHksIHopKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTYyMSw3ICsxNjUwLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBWZXJ0ZXhBdHRyaWIzc3YoR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0
dHJpYjNzdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xNjQxLDcgKzE2NzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjROYnYoR0x1
aW50IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNE5idihjb250ZXh0LCBpbmRl
eCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjYxLDcgKzE2OTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjROaXYoR0x1aW50IGluZGV4LCBjb25zdCBHTGlu
dCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0Tml2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE2ODEsNyArMTcxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliNE5zdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNE5z
dihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzAy
LDcgKzE3MzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjROdWIoR0x1aW50IGlu
ZGV4LCBHTHVieXRlIHgsIEdMdWJ5dGUgeSwgR0x1Ynl0ZSB6LAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROdWIoY29u
dGV4dCwgaW5kZXgsIHgsIHksIHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MTcyMiw3ICsxNzUxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0TnVidihHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNE51YnYoY29udGV4dCwgaW5k
ZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTc0Miw3ICsxNzcxLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0TnVpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
dWludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnVpdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzYyLDcgKzE3OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZl
cnRleEF0dHJpYjROdXN2KEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0
cmliNE51c3YoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMTc4Miw3ICsxODExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0YnYoR0x1
aW50IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNGJ2KGNvbnRleHQsIGluZGV4
LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4MDMsNyArMTgzMiw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNGQoY29udGV4dCwgaW5kZXgsIHgsIHks
IHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTgyMyw3ICsxODUyLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRv
dWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZHYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMTg0NCw3ICsxODczLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXhBdHRyaWI0ZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHos
IEcKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWI0Zihjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0xODY0LDcgKzE4OTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZl
cnRleEF0dHJpYjRmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmli
NGZ2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4
ODQsNyArMTkxMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGl2KEdMdWludCBp
bmRleCwgY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNGl2KGNvbnRleHQsIGluZGV4LCB2KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5MDUsNyArMTkzNCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliNHMoR0x1aW50IGluZGV4LCBHTHNob3J0IHgsIEdMc2hvcnQg
eSwgR0xzaG9ydCB6LCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNHMoY29udGV4dCwgaW5kZXgsIHgsIHksIHosIHcp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkyNSw3ICsxOTU0LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0c3YoR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjRzdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0xOTQ1LDcgKzE5NzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJp
YjR1YnYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjR1YnYoY29u
dGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk2NSw3ICsx
OTk0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0dWl2KEdMdWludCBpbmRleCwg
Y29uc3QgR0x1aW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjR1aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk4NSw3ICsyMDE0LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWI0dXN2KEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVy
dGV4QXR0cmliNHVzdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0yMDEyLDkgKzIwNDEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlBv
aW50ZXIoR0x1aW50IGluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBW
ZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVmVydGV4QXR0cmliUG9pbnRlcihjb250ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2lu
dHNfZ2xfMl8xX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
L2VudHJ5X3BvaW50c19nbF8yXzFfYXV0b2dlbi5jcHAKaW5kZXggYzk0MTBjYzVlNGYyMGNkMThj
YzI1N2YwMTM4ODZhM2E5ZTI3ZjJjOC4uNmM1NmMwMDdkZDJiODI3NDc2MWE2NGFiMDY4YTVmZWI3
MTc5MzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8yXzFfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8yXzFfYXV0b2dlbi5jcHAKQEAgLTQwLDE0ICs0
MCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlv
biwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZnYoY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyeDNmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNjQsMTQgKzY3LDE3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgyeDRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXgyeDRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRm
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtTWF0cml4Mng0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7
CiAgICAgfQogfQogCkBAIC04OCwxNCArOTQsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
TWF0cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4MmZ2KGNv
bnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDN4MmZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShVbmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1N
YXRyaXgzeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAg
LTExMiwxNCArMTIxLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4NGZ2KEdM
aW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDRmdihjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDRmdihjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0
cml4M3g0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1h
dHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M3g0ZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xMzYsMTQgKzE0OCwx
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZnYoY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtTWF0cml4NHgyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDJmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTYwLDE0ICsxNzUsMTcgQEAgdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDR4M2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDR4M2Z2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NHgzZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsK
ICAgICB9CiB9CiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18wX2F1dG9nZW4uY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzBfYXV0b2dl
bi5jcHAKaW5kZXggODBjOTE5MmJkZTNhZWUxNzMwOTliYzc3NzhkYTI4ZmIwMjQ4YTI1Ny4uNDdl
M2NiZGFlYjk4ZmM0ODYwYTNmMDNmZDM0OWM0ZDBlZWU2MWRhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzBfYXV0b2dlbi5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19n
bF8zXzBfYXV0b2dlbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCZWdp
bkNvbmRpdGlvbmFsUmVuZGVyKEdMdWludCBpZCwgR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmVnaW5Db25kaXRpb25h
bFJlbmRlcihjb250ZXh0LCBpZCwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC01NCw5ICs1NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhH
TGVudW0gcHJpbWl0aXZlTW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UHJpbWl0aXZlTW9kZSBwcmltaXRpdmVNb2RlUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPFBy
aW1pdGl2ZU1vZGU+KHByaW1pdGl2ZU1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBwcmlt
aXRpdmVNb2RlUGFja2VkID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KHByaW1pdGl2ZU1vZGUpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCZWdp
blRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIHByaW1pdGl2ZU1vZGVQYWNrZWQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03NSwxMCArNzUsMTAgQEAgdm9pZCBH
TF9BUElFTlRSWSBCaW5kQnVmZmVyQmFzZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdM
dWludCBidWZmZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxC
dWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmlu
ZEJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpbmRleCwgYnVmZmVyUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTAwLDkgKzEwMCw5IEBA
IEJpbmRCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZm
ZXIsIEdMaW50cHRyIG9mZnNldCwgR0xzCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJn
ZXQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmlu
ZEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaW5kZXgsIGJ1ZmZlclBhY2tlZCwg
b2Zmc2V0LCBzaXplKSk7CkBAIC0xMjYsOSArMTI2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5k
RnJhZ0RhdGFMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGNvbG9yLCBjb25zdCBHTGNo
YXIKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kRnJhZ0Rh
dGFMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBjb2xvciwgbmFtZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0Niw5ICsxNDYsOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZm
ZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJh
bWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFt
ZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRG
cmFtZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTY2LDkgKzE2Niw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgQmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVm
ZmVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCBy
ZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJl
bmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQg
PSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRSZW5kZXJidWZmZXIoY29u
dGV4dCwgdGFyZ2V0LCByZW5kZXJidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xODUsOCArMTg1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5k
VmVydGV4QXJyYXkoR0x1aW50IGFycmF5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFZlcnRleEFycmF5KGNvbnRl
eHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxOSw4ICsy
MTksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYMCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlcihjb250ZXh0LCBzcmNYMCwgc3Jj
WTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0Miw3ICsyNDIsNyBAQCBHTGVudW0gR0xf
QVBJRU5UUlkgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0KQogICAgIEdMZW51
bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0LCB0YXJnZXQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ2xhbXBDb2xvcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gY2xhbXApCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xhbXBDb2xvcihjb250
ZXh0LCB0YXJnZXQsIGNsYW1wKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI5Miw4
ICsyOTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVyZmkoR0xlbnVtIGJ1ZmZlciwg
R0xpbnQgZHJhd2J1ZmZlciwgR0xmbG9hdCBkZXB0aCwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQ2xlYXJCdWZmZXJmaShjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVu
Y2lsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzEzLDggKzMx
Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJCdWZmZXJmdihHTGVudW0gYnVmZmVyLCBHTGlu
dCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVD
bGVhckJ1ZmZlcmZ2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMzQsOCArMzM0LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBDbGVhckJ1ZmZlcml2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIs
IGNvbnN0IEdMaW50ICp2YWwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVyaXYo
Y29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTM1NSw4ICszNTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENs
ZWFyQnVmZmVydWl2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMdWlu
dCAqdgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJCdWZmZXJ1aXYoY29udGV4dCwgYnVm
ZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFza2koR0x1
aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yTWFz
a2koY29udGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMzk3LDkgKzM5Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlRnJhbWVidWZmZXJz
KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tl
ZCAgICAgICA9IEZyb21HTDxjb25zdCBGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8
Y29uc3QgRnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxldGVGcmFtZWJ1ZmZlcnMoY29u
dGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNDE5LDggKzQxOSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUmVu
ZGVyYnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycykKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJi
dWZmZXJzUGFja2VkID0gRnJvbUdMPGNvbnN0IFJlbmRlcmJ1ZmZlcklEICo+KHJlbmRlcmJ1ZmZl
cnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlRGVsZXRlUmVuZGVyYnVmZmVycyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDM5LDggKzQzOSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlVmVydGV4QXJyYXlzKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICphcnJheXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFZl
cnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBWZXJ0
ZXhBcnJheUlEICo+KGFycmF5cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgVmVydGV4
QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzKGNvbnRleHQsIG4sIGFycmF5
c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NTksNyArNDU5LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlaShjb250ZXh0
LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlaShHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVFbmFibGVpKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmRD
b25kaXRpb25hbFJlbmRlcigpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVFbmRDb25kaXRpb25hbFJlbmRlcihjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5k
VHJhbnNmb3JtRmVlZGJhY2soKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRW5kVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTUzMSw5ICs1MzEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEZs
dXNoTWFwcGVkQnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNp
emVpcAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFy
Z2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVm
ZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU1OCw4ICs1NTgsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBh
Y2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRl
cmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBhdHRh
Y2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsCkBAIC01OTAsMTAgKzU5MCwxMCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZTFEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOwotICAgICAg
ICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRh
cmdldCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVy
ZTFEKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVy
ZVBhY2tlZCwgbGV2ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjIyLDEwICs2
MjIsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmUyRChHTGVudW0gdGFy
Z2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRl
eHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4
dGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVG
cmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0YXJn
ZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTY1NSw5ICs2NTUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVy
ZTNEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRl
eHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRh
cmdldCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZUZyYW1lYnVmZmVyVGV4dHVyZTNEKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFy
Z2V0UGFja2VkLApAQCAtNjg0LDkgKzY4NCw5IEBAIEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihjb250
ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgbGF5ZXIp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzA3LDggKzcwNyw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2VuRnJhbWVidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgKmZyYW1l
YnVmZmVyc1BhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEICo+KGZyYW1l
YnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGcmFtZWJ1ZmZl
cklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8RnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1
ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlR2VuRnJhbWVidWZmZXJzKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MjgsOSArNzI4LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZW5SZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJz
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVu
ZGVyYnVmZmVyc1BhY2tlZCAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVu
ZGVyYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tl
ZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVy
cyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNzQ4LDggKzc0OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2Vu
VmVydGV4QXJyYXlzKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZW5WZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTc2OCw4ICs3NjgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlbmVyYXRl
TWlwbWFwKEdMZW51bSB0YXJnZXQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuZXJhdGVNaXBtYXAoY29udGV4dCwgdGFy
Z2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc5MCw3ICs3OTAsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4LCBHTGJvb2xlYW4gKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Qm9vbGVhbmlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4
LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgxMSw5ICs4MTEsOSBAQCBH
TGludCBHTF9BUElFTlRSWSBHZXRGcmFnRGF0YUxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBjb25z
dCBHTGNoYXIgKm5hbWUpCiAgICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZyYWdEYXRhTG9jYXRpb24oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTg0OCw3ICs4NDgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKSk7CkBAIC04NzAsNyAr
ODcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0xpbnQgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcmlfdihjb250ZXh0LCB0YXJnZXQsIGlu
ZGV4LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5MSw4ICs4OTEsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTExLDcgKzkxMSw3IEBAIGNv
bnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIEdldFN0cmluZ2koR0xlbnVtIG5hbWUsIEdMdWludCBp
bmRleCkKICAgICBjb25zdCBHTHVieXRlICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRTdHJpbmdpKGNvbnRleHQsIG5hbWUsIGluZGV4KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTQwLDkgKzk0MCw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySWl2KEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFRleFBhcmFtZXRlcklpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05NjIsOSArOTYyLDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2KEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleFBhcmFtZXRlckl1aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTkyLDkgKzk5
Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKEdMdWlu
dCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWZTaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMTAxNywxNSArMTAxNywxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFVuaWZvcm11aXYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFt
cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVp
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFVuaWZvcm11aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3Jt
dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xMDM5LDggKzEwNDAsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldFZlcnRleEF0dHJpYklpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdihjb250
ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTEwNjAsOCArMTA2MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4
QXR0cmliSXVpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KGNvbnRleHQsIGluZGV4
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMTA4MCw3ICsxMDgxLDcgQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRW5hYmxlZGkoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNFbmFi
bGVkaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTExMDgsOCArMTEwOSw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZyYW1lYnVmZmVy
KEdMdWludCBmcmFtZWJ1ZmZlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2Vk
ICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJh
bWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTM3LDggKzExMzgsOCBAQCBHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgSXNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKICAgICBHTGJv
b2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5k
ZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVy
YnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVm
ZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1JlbmRlcmJ1ZmZlcihjb250ZXh0LCByZW5kZXJidWZm
ZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTE2Niw4ICsxMTY3LDgg
QEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzVmVydGV4QXJyYXkoR0x1aW50IGFycmF5KQogICAg
IEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxW
ZXJ0ZXhBcnJheUlEPihhcnJheSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxWZXJ0ZXhBcnJheUlEPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1ZlcnRleEFycmF5KGNvbnRleHQsIGFy
cmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEyMDMsOSArMTIwNCw5
IEBAIHZvaWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlclJhbmdlKEdMZW51bSB0YXJnZXQsCiAgICAg
dm9pZCAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZm
ZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVy
QmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU1h
cEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEyMzksNyArMTI0
MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZShHTGVudW0gdGFyZ2V0
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShjb250ZXh0LCB0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CkBAIC0xMjY3LDggKzEyNjgsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGNv
bnRleHQsIHRhcmdldCwgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjkyLDkgKzEyOTMsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcklpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVGV4UGFyYW1ldGVySWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMTYsOSArMTMxNyw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySXVpdihHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVUZXhQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzNDIsOCArMTM0
Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhHTHVpbnQg
cHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBjb3VudCwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpKTsKQEAgLTEzNjQsMTMgKzEz
NjUsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMXVpKEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVVbmlmb3JtMXVpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCkpOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xdWkoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvblBhY2tlZCwgdjApOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTF1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGxvY2F0aW9uLCB2MCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTF1aSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgfQogfQogCkBAIC0xMzg0
LDE0ICsxMzg3LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVW5pZm9ybTF1aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTF1aXYoY29udGV4dCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNDAzLDE0ICsx
NDA3LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJ1aShHTGludCBsb2NhdGlvbiwgR0x1
aW50IHYwLCBHTHVpbnQgdjEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm0ydWkoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMnVpKGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEp
OworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvblBhY2tlZCwgdjAsIHYx
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0ydWksIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtMnVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7
CiAgICAgfQogfQogCkBAIC0xNDI0LDE0ICsxNDI5LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJ1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFs
dWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJ1aXYoY29udGV4dCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5p
Zm9ybTJ1aXYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZv
cm0ydWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTJ1aXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMnVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0ydWl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC0xNDQ0LDE0ICsxNDUwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTN1
aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTN1aShjb250ZXh0LCBs
b2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM3VpKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwg
djEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zdWksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTN1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsK
ICAgICB9CiB9CiAKQEAgLTE0NjUsMTQgKzE0NzIsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtM3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1
ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM3Vpdihjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtM3Vpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTN1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtM3Vpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTN1aXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9
CiB9CiAKQEAgLTE0ODYsMTQgKzE0OTQsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNHVp
KEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyLCBHTHUKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNHVpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYy
LCB2MykpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTR1
aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVp
KGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
NHVpKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShVbmlmb3JtNHVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNHVpLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICB9
CiB9CiAKQEAgLTE1MDcsMTQgKzE1MTYsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNHVp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNHVpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtNHVp
dihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTR1aXYo
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVp
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm00dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTR1aXYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAK
QEAgLTE1MjYsNyArMTUzNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTFpKEdM
dWludCBpbmRleCwgR0xpbnQgeCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMWkoY29udGV4dCwgaW5kZXgsIHgpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTU0Niw3ICsxNTU2LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBWZXJ0ZXhBdHRyaWJJMWl2KEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVy
dGV4QXR0cmliSTFpdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0xNTY1LDcgKzE1NzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkkx
dWkoR0x1aW50IGluZGV4LCBHTHVpbnQgeCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMXVpKGNvbnRleHQsIGluZGV4
LCB4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1ODUsNyArMTU5NSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTF1aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVp
bnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVmVydGV4QXR0cmliSTF1aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMTYwNCw3ICsxNjE0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXhBdHRyaWJJMmkoR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkky
aShjb250ZXh0LCBpbmRleCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0x
NjI0LDcgKzE2MzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkkyaXYoR0x1aW50
IGluZGV4LCBjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMml2KGNvbnRleHQsIGluZGV4LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE2NDMsNyArMTY1Myw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTJ1aShHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVp
bnQgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJMnVpKGNvbnRleHQsIGluZGV4LCB4LCB5KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTE2NjMsNyArMTY3Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4QXR0cmliSTJ1aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmli
STJ1aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MTY4Myw3ICsxNjkzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJM2koR0x1aW50
IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzaShjb250ZXh0
LCBpbmRleCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzAzLDcg
KzE3MTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkkzaXYoR0x1aW50IGluZGV4
LCBjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM2l2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3MjMsNyArMTczMyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4QXR0cmliSTN1aShHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwg
R0x1aW50IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4QXR0cmliSTN1aShjb250ZXh0LCBpbmRleCwgeCwgeSwgeikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzQzLDcgKzE3NTMsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFZlcnRleEF0dHJpYkkzdWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkkzdWl2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTE3NjMsNyArMTc3Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTRi
dihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGJ2KGNvbnRleHQs
IGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3ODMsNyArMTc5Myw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTRpKEdMdWludCBpbmRleCwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGkoY29udGV4dCwgaW5kZXgs
IHgsIHksIHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTgwMyw3ICsxODEz
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNGl2KEdMdWludCBpbmRleCwgY29u
c3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTRpdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODIzLDcgKzE4MzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFZlcnRleEF0dHJpYkk0c3YoR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0
dHJpYkk0c3YoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMTg0Myw3ICsxODUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNHVidihH
THVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1YnYoY29udGV4dCwg
aW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTg2NCw3ICsxODc0LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNHVpKEdMdWludCBpbmRleCwgR0x1aW50
IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpKGNvbnRleHQsIGluZGV4
LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4ODQsNyArMTg5
NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTR1aXYoR0x1aW50IGluZGV4LCBj
b25zdCBHTHVpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkwNCw3ICsxOTE0LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWJJNHVzdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdXNob3J0ICp2KQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkk0dXN2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTE5MjcsOCArMTkzNyw4IEBAIFZlcnRleEF0dHJpYklQb2ludGVyKEdMdWludCBp
bmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+
KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihjb250ZXh0LCBpbmRl
eCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMV9hdXRvZ2Vu
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xf
M18xX2F1dG9nZW4uY3BwCmluZGV4IDVhMDc4ZWU0MmQyYmNhMTVmYjZjN2JmNDE4ZjYyZDI1ZTI3
ODQwYzUuLjgxNzAxZmJiMmRlMTA0M2YxZTgxNDAyZmE4ZWEzMTA5OGJlNzY2MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18x
X2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRy
eV9wb2ludHNfZ2xfM18xX2F1dG9nZW4uY3BwCkBAIC00NCwxMCArNDQsMTAgQEAgdm9pZCBHTF9B
UElFTlRSWSBDb3B5QnVmZmVyU3ViRGF0YShHTGVudW0gcmVhZFRhcmdldCwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyByZWFkVGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHJlYWRUYXJnZXQpOwotICAgICAg
ICBCdWZmZXJCaW5kaW5nIHdyaXRlVGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8
QnVmZmVyQmluZGluZz4od3JpdGVUYXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyByZWFk
VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGlu
Zz4ocmVhZFRhcmdldCk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgd3JpdGVUYXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHdyaXRlVGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
Q29weUJ1ZmZlclN1YkRhdGEoY29udGV4dCwgcmVhZFRhcmdldFBhY2tlZCwgd3JpdGVUYXJnZXRQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwgc2l6ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3Rh
bmNlZChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnRleHQsIG1vZGVQYWNrZWQsIGZp
cnN0LCBjb3VudCwgaW5zdGFuY2Vjb3VudCkpOwpAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBH
TF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdF
bGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5j
ZWQoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5z
dGFuY2Vjb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzAsOCArMTMwLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKEdMdWludCBwcm9n
cmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9j
a05hbWUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUs
CkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxv
Y2tpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTg4LDkgKzE4OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5p
Zm9ybU5hbWUoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybU5hbWUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
dW5pZm9ybUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCB1bmlmb3JtTmFtZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0yMTksOSArMjE5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRB
Y3RpdmVVbmlmb3Jtc2l2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1zaXYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgdW5pZm9ybUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDQsOSArMjQ0LDkgQEAgR0x1aW50IEdMX0FQSUVO
VFJZIEdldFVuaWZvcm1CbG9ja0luZGV4KEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKnVu
aWZvcm1CbG8KICAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1CbG9ja0luZGV4KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHVuaWZvcm1CbG9ja05hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0yNzksOSArMjc5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtSW5k
aWNlcyhHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRVbmlmb3JtSW5kaWNlcyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3Jt
Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bmlmb3JtTmFtZXMsIHVuaWZvcm1JbmRpY2VzKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByaW1pdGl2ZVJlc3Rh
cnRJbmRleChHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlUHJpbWl0aXZlUmVzdGFydEluZGV4KGNvbnRleHQsIGluZGV4
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMyMSw5ICszMjEsOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIFRleEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMdWludCBidWZmZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhCdWZmZXIoY29u
dGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzQ1LDkgKzM0NSw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtQmxvY2tCaW5kaW5nKGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tCaW5kaW5nKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18yX2F1dG9nZW4uY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzJfYXV0b2dlbi5j
cHAKaW5kZXggMWRlMzY0ZjRhZDBlMzM0NjY3ZWE4NTMyNzg2ZGZhNzM4MjA3NTljMy4uYmM4MjFm
YmU0MTgxZWMyZjMyZjM1ZDcxZjZlNmNiMDMwYzlhOTEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzJfYXV0b2dlbi5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8z
XzJfYXV0b2dlbi5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIENsaWVu
dFdhaXRTeW5jKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3UK
ICAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsaWVudFdhaXRTeW5jKGNvbnRleHQsIHN5bmMsIGZsYWdz
LCB0aW1lb3V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVTeW5jKEdMc3luYyBzeW5jKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlU3luYyhjb250ZXh0LCBzeW5jKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTMsMTAgKzkzLDEwIEBAIHZv
aWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzQmFzZVZlcnRleChHTGVudW0gbW9kZSwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAg
ICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPiht
b2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0Jh
c2VWZXJ0ZXgoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGlj
ZXMsIGJhc2V2ZXJ0ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTI1LDkgKzEy
NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleChH
TGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAg
ICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywg
aW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCkpOwpAQCAtMTU4LDkgKzE1OCw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAg
IERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxE
cmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQs
IHN0YXJ0LCBlbmQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgp
KTsKQEAgLTE4NCw3ICsxODQsNyBAQCBHTHN5bmMgR0xfQVBJRU5UUlkgRmVuY2VTeW5jKEdMZW51
bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpCiAgICAgR0xzeW5jIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGZW5j
ZVN5bmMoY29udGV4dCwgY29uZGl0aW9uLCBmbGFncykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0yMTUsOCArMjE1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1
cmUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXgKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50
LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOwpAQCAtMjQwLDkgKzI0MCw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaTY0dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50NjQgKnBhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNjEsNyArMjYxLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjRpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4LCBHTGludDY0ICpkYXRhKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4
LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI4MCw3ICsyODAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHYoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRh
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldEludGVnZXI2NHYoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TXVsdGlzYW1w
bGVmdihHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldE11bHRpc2Ft
cGxlZnYoY29udGV4dCwgcG5hbWUsIGluZGV4LCB2YWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMzI0LDggKzMyNCw4IEBAIEdldFN5bmNpdihHTHN5bmMgc3luYywgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnZhCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRTeW5jaXYoY29udGV4dCwgc3luYywgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMzQ0LDcgKzM0NCw3IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1N5bmMoR0xzeW5jIHN5
bmMpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUlzU3luYyhjb250ZXh0LCBzeW5jKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMzgxLDkgKzM4MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
TXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlE
cmF3RWxlbWVudHNCYXNlVmVydGV4KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0
eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGljZXMsIGRyYXdjb3VudCwgYmFzZXZlcnRleCkpOwpAQCAtNDA1
LDggKzQwNSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvdm9raW5nVmVydGV4KEdMZW51bSBtb2Rl
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm92b2tpbmdWZXJ0ZXhDb252
ZW50aW9uIG1vZGVQYWNrZWQgICAgICAgICAgPSBGcm9tR0w8UHJvdm9raW5nVmVydGV4Q29udmVu
dGlvbj4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm92b2tp
bmdWZXJ0ZXhDb252ZW50aW9uIG1vZGVQYWNrZWQgPSBGcm9tR0w8UHJvdm9raW5nVmVydGV4Q29u
dmVudGlvbj4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXgoY29udGV4dCwgbW9kZVBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBTYW1wbGVNYXNraShHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBs
ZU1hc2tpKGNvbnRleHQsIG1hc2tOdW1iZXIsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtNDUzLDggKzQ1Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UyRE11bHRp
c2FtcGxlKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTJE
TXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0LCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTNETXVs
dGlzYW1wbGUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlM0RNdWx0aXNhbXBs
ZShjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2FpdFN5bmMoR0xzeW5jIHN5
bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2FpdFN5bmMoY29udGV4dCwg
c3luYywgZmxhZ3MsIHRpbWVvdXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8z
XzNfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlf
cG9pbnRzX2dsXzNfM19hdXRvZ2VuLmNwcAppbmRleCBjNmI0YjFlMjRlNDIwOWQ3NDZkN2Q1ODRm
NWNkYThiMWQ0MTNmZGViLi43NzgzYzdlNjBkOTQ5NDYxOWQ2NzE5MjcxMWNmOGM4NTJiMDgwYzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzNfM19hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0wvZW50cnlfcG9pbnRzX2dsXzNfM19hdXRvZ2VuLmNwcApAQCAtNDAsOCArNDAsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChHTHVpbnQgcHJvZ3Jh
bSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbklu
ZGV4ZWQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY29sb3JOdW1iZXIsIGluZGV4LCBuYW1lKSk7
CkBAIC02Miw4ICs2Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFNhbXBsZXIoR0x1aW50IHVu
aXQsIEdMdWludCBzYW1wbGVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
YW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2Ft
cGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNh
bXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kU2FtcGxlcihjb250ZXh0LCB1bml0LCBzYW1w
bGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgyLDcgKzgyLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBDb2xvclAzdWkoR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yUDN1aShjb250ZXh0
LCB0eXBlLCBjb2xvcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yUDN1aXYoR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdWludCAqY29sb3IpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVDb2xvclAzdWl2KGNvbnRleHQsIHR5cGUsIGNvbG9yKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29sb3JQNHVpKEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvclA0dWkoY29udGV4dCwgdHlwZSwgY29sb3Ip
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzYsNyArMTM2LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvclA0dWl2KEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQg
KmNvbG9yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3JQ
NHVpdihjb250ZXh0LCB0eXBlLCBjb2xvcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTE1NSw4ICsxNTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNhbXBs
ZXJzKEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqc2FtcGxlcnMpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQgICAg
ICAgICAgICAgICA9IEZyb21HTDxjb25zdCBTYW1wbGVySUQgKj4oc2FtcGxlcnMpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgU2FtcGxlcklEICpzYW1wbGVyc1Bh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgU2FtcGxlcklEICo+KHNh
bXBsZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURlbGV0ZVNhbXBsZXJzKGNvbnRleHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzUsOCArMTc1LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBHZW5TYW1wbGVycyhHTHNpemVpIGNvdW50LCBHTHVpbnQgKnNhbXBsZXJzKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgKnNhbXBsZXJzUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEICo+KHNhbXBsZXJzKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRCAqPihzYW1w
bGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZW5TYW1wbGVycyhjb250ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk3LDggKzE5Nyw4IEBAIEdMaW50IEdMX0FQSUVO
VFJZIEdldEZyYWdEYXRhSW5kZXgoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkK
ICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXgo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0yMjgsOSArMjI4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdGk2NHYo
R0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcykKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+
KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3RpNjR2KGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjUwLDkgKzI1MCw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dihHTHVpbnQgaWQsIEdMZW51bSBw
bmFtZSwgR0x1aW50NjQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1
aTY0dihjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI3Miw5ICsyNzIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2Ft
cGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1w
bGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0
ZXJJaXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI5NSw5ICsyOTUsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5h
bWUsIEdMdWludCAqcAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQ
YXJhbWV0ZXJJdWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMTgsOSArMzE4LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyZnYoR0x1aW50IHNhbXBsZXIsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCAqcGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNh
bXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRT
YW1wbGVyUGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM0MCw5ICszNDAsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJpdihHTHVpbnQgc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxl
cik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzYwLDggKzM2
MCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1NhbXBsZXIoR0x1aW50IHNhbXBsZXIpCiAg
ICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVJc1NhbXBsZXIoY29udGV4dCwgc2FtcGxlclBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM5MCw4ICszOTAsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmRQMXVpKEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlw
ZSwgR0x1aW50IGNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQ
MXVpKGNvbnRleHQsIHRleHR1cmUsIHR5cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTQxMyw4ICs0MTMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11
bHRpVGV4Q29vcmRQMXVpdihHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWlu
dCAqYwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAxdWl2KGNvbnRleHQs
IHRleHR1cmUsIHR5cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTQzNCw4ICs0MzQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmRQ
MnVpKEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMnVpKGNvbnRleHQsIHRleHR1cmUsIHR5cGUs
IGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ1Nyw4
ICs0NTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmRQMnVpdihHTGVudW0gdGV4
dHVyZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqYwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlTXVsdGlUZXhDb29yZFAydWl2KGNvbnRleHQsIHRleHR1cmUsIHR5cGUsIGNvb3JkcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ3OCw4ICs0NzgsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmRQM3VpKEdMZW51bSB0ZXh0dXJlLCBHTGVudW0g
dHlwZSwgR0x1aW50IGNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpVGV4Q29v
cmRQM3VpKGNvbnRleHQsIHRleHR1cmUsIHR5cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTUwMSw4ICs1MDEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IE11bHRpVGV4Q29vcmRQM3VpdihHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dWludCAqYwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAzdWl2KGNvbnRl
eHQsIHRleHR1cmUsIHR5cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTUyMiw4ICs1MjIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29v
cmRQNHVpKEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQNHVpKGNvbnRleHQsIHRleHR1cmUsIHR5
cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU0
NSw4ICs1NDUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmRQNHVpdihHTGVudW0g
dGV4dHVyZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqYwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlTXVsdGlUZXhDb29yZFA0dWl2KGNvbnRleHQsIHRleHR1cmUsIHR5cGUsIGNvb3Jkcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU2NCw3ICs1NjQsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbFAzdWkoR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWxQM3VpKGNv
bnRleHQsIHR5cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbFAzdWl2KEdMZW51
bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWxQM3Vpdihjb250ZXh0LCB0eXBlLCBj
b29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjAyLDkgKzYwMiw5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUXVlcnlDb3VudGVyKEdMdWludCBpZCwgR0xlbnVtIHRhcmdldCkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgUXVl
cnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5
VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUXVlcnlD
b3VudGVyKGNvbnRleHQsIGlkUGFja2VkLCB0YXJnZXRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNjI3LDkgKzYyNyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBh
cmFtZXRlcklpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdihjb250ZXh0
LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC02NTEsOSArNjUxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVy
UGFyYW1ldGVySXVpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdihjb250
ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC02NzIsOSArNjcyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1w
bGVyUGFyYW1ldGVyZihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFt
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTY5NSw5ICs2OTUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBs
ZXJQYXJhbWV0ZXJmdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmZ2KGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTcxNiw5ICs3MTYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBs
ZXJQYXJhbWV0ZXJpKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpKGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTc0MCw5ICs3NDAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQ
YXJhbWV0ZXJpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdihjb250ZXh0
LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRh
cnlDb2xvclAzdWkoR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclAzdWko
Y29udGV4dCwgdHlwZSwgY29sb3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzgw
LDcgKzc4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3JQM3VpdihHTGVudW0g
dHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclAzdWl2KGNvbnRleHQsIHR5
cGUsIGNvbG9yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc5OSw3ICs3OTksNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkUDF1aShHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jk
cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVUZXhDb29yZFAxdWkoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkUDF1
aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkUDF1aXYoY29udGV4
dCwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgzOCw3ICs4
MzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkUDJ1aShHTGVudW0gdHlwZSwgR0x1aW50
IGNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVUZXhDb29yZFAydWkoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENv
b3JkUDJ1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkUDJ1aXYo
Y29udGV4dCwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg3
Nyw3ICs4NzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkUDN1aShHTGVudW0gdHlwZSwg
R0x1aW50IGNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVUZXhDb29yZFAzdWkoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFRleENvb3JkUDN1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3Jk
UDN1aXYoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTkxNiw3ICs5MTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkUDR1aShHTGVudW0g
dHlwZSwgR0x1aW50IGNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZFA0dWkoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTkzNiw3ICs5MzYsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFRleENvb3JkUDR1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRl
eENvb3JkUDR1aXYoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRp
dmlzb3IoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yKGNv
bnRleHQsIGluZGV4LCBkaXZpc29yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTk3
Nyw4ICs5NzcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlAxdWkoR0x1aW50IGlu
ZGV4LCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVmVydGV4QXR0cmliUDF1aShjb250ZXh0LCBpbmRleCwgdHlwZSwgbm9ybWFsaXplZCwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDAyLDgg
KzEwMDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlAxdWl2KEdMdWludCBpbmRl
eCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYlAxdWl2KGNvbnRleHQsIGlu
ZGV4LCB0eXBlLCBub3JtYWxpemVkLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTEwMjQsOCArMTAyNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliUDJ1aShHTHVpbnQgaW5kZXgsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXpl
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMnVpKGNvbnRleHQsIGluZGV4
LCB0eXBlLCBub3JtYWxpemVkLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTEwNDksOCArMTA0OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0
cmliUDJ1aXYoR0x1aW50IGluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0
cmliUDJ1aXYoY29udGV4dCwgaW5kZXgsIHR5cGUsIG5vcm1hbGl6ZWQsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA3MSw4ICsxMDcxLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJQM3VpKEdMdWludCBpbmRleCwgR0xlbnVtIHR5cGUs
IEdMYm9vbGVhbiBub3JtYWxpemUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJp
YlAzdWkoY29udGV4dCwgaW5kZXgsIHR5cGUsIG5vcm1hbGl6ZWQsIHZhbHVlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA5Niw4ICsxMDk2LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJQM3VpdihHTHVpbnQgaW5kZXgsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQM3Vpdihjb250ZXh0LCBpbmRleCwgdHlwZSwgbm9ybWFs
aXplZCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
MTE4LDggKzExMTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlA0dWkoR0x1aW50
IGluZGV4LCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVmVydGV4QXR0cmliUDR1aShjb250ZXh0LCBpbmRleCwgdHlwZSwgbm9ybWFsaXpl
ZCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTQz
LDggKzExNDMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlA0dWl2KEdMdWludCBp
bmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYlA0dWl2KGNvbnRleHQs
IGluZGV4LCB0eXBlLCBub3JtYWxpemVkLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTExNjIsNyArMTE2Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4UDJ1aShHTGVudW0gdHlwZSwgR0x1aW50IHZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4UDJ1aShjb250ZXh0LCB0eXBlLCB2YWx1ZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExODEsNyArMTE4MSw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4UDJ1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAq
dmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhQ
MnVpdihjb250ZXh0LCB0eXBlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4UDN1
aShHTGVudW0gdHlwZSwgR0x1aW50IHZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmVydGV4UDN1aShjb250ZXh0LCB0eXBlLCB2YWx1ZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEyMTgsNyArMTIxOCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4UDN1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhQM3Vpdihj
b250ZXh0LCB0eXBlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTEyMzYsNyArMTIzNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4UDR1aShHTGVu
dW0gdHlwZSwgR0x1aW50IHZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4UDR1aShjb250ZXh0LCB0eXBlLCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEyNTUsNyArMTI1NSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4UDR1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhQNHVpdihjb250ZXh0
LCB0eXBlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfNF8wX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF80XzBfYXV0b2dlbi5jcHAKaW5kZXggZjkyNzdiNGZmNzc5ZGM4M2YyMjIz
YWI2YTUyZDI0ZmQyNDhkOGE1OS4uYWI3NjEwYmFlMTg4NGE0Nzk2ZmUzY2ExYzY2ODc0ZjYzODc2
MGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5
X3BvaW50c19nbF80XzBfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzBfYXV0b2dlbi5jcHAKQEAgLTM2LDkgKzM2LDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBCZWdpblF1ZXJ5SW5kZXhlZChHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgsIEdMdWludCBpZCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1
ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmVnaW5RdWVyeUluZGV4ZWQo
Y29udGV4dCwgdGFyZ2V0LCBpbmRleCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFRy
YW5zZm9ybUZlZWRiYWNrKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LCB0YXJnZXQsIGlkUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBC
bGVuZEVxdWF0aW9uU2VwYXJhdGVpKEdMdWludCBidWYsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0g
bW9kZUEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoY29u
dGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVh
dGlvbmkoR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoY29udGV4dCwgYnVm
LCBtb2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEyMiw3ICsxMjIsNyBAQCBC
bGVuZEZ1bmNTZXBhcmF0ZWkoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJH
QiwgR0xlbnVtIHNyY0FscGhhLCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGVpKGNv
bnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkpOwpAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jaShHTHVpbnQgYnVmLCBHTGVu
dW0gc3JjLCBHTGVudW0gZHN0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRnVuY2koY29udGV4dCwgYnVmLCBzcmMsIGRzdCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjQsOCArMTY0LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlk
cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgVHJhbnNmb3JtRmVl
ZGJhY2tJRCAqaWRzUGFja2VkICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFRyYW5zZm9ybUZlZWRi
YWNrSUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0
IFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkc1BhY2tlZCA9IEZyb21HTDxjb25zdCBUcmFuc2Zvcm1G
ZWVkYmFja0lEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoY29udGV4dCwgbiwg
aWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4NSw5ICsxODUsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbmRpcmVjdChHTGVudW0gbW9kZSwgY29uc3Qg
dm9pZCAqaW5kaXJlY3QpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRp
dmVNb2RlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJy
YXlzSW5kaXJlY3QoY29udGV4dCwgbW9kZVBhY2tlZCwgaW5kaXJlY3QpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMDgsOSArMjA4LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBEcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQgKmluZGkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAg
ICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luZGlyZWN0KGNvbnRleHQsIG1vZGVQYWNrZWQsIHR5cGVQYWNrZWQsIGluZGlyZWN0KSk7
CkBAIC0yMzAsOCArMjMwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3VHJhbnNmb3JtRmVlZGJh
Y2soR0xlbnVtIG1vZGUsIEdMdWludCBpZCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1G
ZWVkYmFjayhjb250ZXh0LCBtb2RlLCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0yNTEsOSArMjUxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3VHJhbnNmb3JtRmVl
ZGJhY2tTdHJlYW0oR0xlbnVtIG1vZGUsIEdMdWludCBpZCwgR0x1aW50IHN0cmUKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrU3Ry
ZWFtKGNvbnRleHQsIG1vZGUsIGlkUGFja2VkLCBzdHJlYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBF
bmRRdWVyeUluZGV4ZWQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZFF1ZXJ5SW5kZXhl
ZChjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTI5MSw4ICsyOTEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblRyYW5zZm9ybUZlZWRiYWNrcyhH
THNpemVpIG4sIEdMdWludCAqaWRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VHJhbnNmb3JtRmVlZGJhY2tJRCAqPihpZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRCAqPihpZHMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuVHJhbnNmb3Jt
RmVlZGJhY2tzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0zMTksOSArMzE5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVTdWJyb3V0
aW5lTmFtZShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lTmFtZShjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgbmFtZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNTAsOSArMzUwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRBY3RpdmVTdWJyb3V0aW5lVW5pZm9ybU5hbWUoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZVVuaWZv
cm1OYW1lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBzaGFkZXJ0eXBlLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBuYW1lKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM4MCw5ICszODAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldEFjdGl2ZVN1YnJvdXRpbmVVbmlmb3JtaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZVVuaWZv
cm1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwg
cG5hbWUsIHZhbHVlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MDUsOCArNDA1
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtU3RhZ2VpdihHTHVpbnQgcHJvZ3JhbSwg
R0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwbmEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRQcm9ncmFtU3RhZ2Vpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJ0eXBl
LCBwbmFtZSwgdmFsdWVzKSk7CkBAIC00MzAsOCArNDMwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRRdWVyeUluZGV4ZWRpdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5SW5kZXhlZGl2KGNvbnRleHQs
IHRhcmdldCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC00NTMsOSArNDUzLDkgQEAgR0x1aW50IEdMX0FQSUVOVFJZIEdldFN1
YnJvdXRpbmVJbmRleChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIGNvbnN0IEcK
ICAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFN1YnJvdXRpbmVJbmRleChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFk
ZXJ0eXBlLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NDg5LDggKzQ4OSw4IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldFN1YnJvdXRpbmVVbmlmb3JtTG9j
YXRpb24oR0x1aW50IHByb2dyYW0sCiAgICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFN1YnJvdXRpbmVVbmlmb3JtTG9jYXRpb24oY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgc2hhZGVydHlwZSwgbmFtZSkpOwpAQCAtNTI0LDggKzUyNCw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybVN1YnJvdXRpbmV1aXYoR0xlbnVtIHNoYWRlcnR5cGUs
IEdMaW50IGxvY2F0aW9uLCBHTHVpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3Jt
U3Vicm91dGluZXVpdihjb250ZXh0LCBzaGFkZXJ0eXBlLCBsb2NhdGlvbiwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTQ2LDE1ICs1NDYsMTYgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtZHYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTGRvdWJsZSAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRVbmlmb3JtZHYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBh
cmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWR2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZHYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRV
bmlmb3JtZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcyk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZHYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRVbmlmb3JtZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTU2Niw4ICs1NjcsOCBAQCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgaWQpCiAgICAg
R0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRy
YW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzVHJhbnNmb3JtRmVlZGJhY2so
Y29udGV4dCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTk0LDcg
KzU5NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWluU2FtcGxlU2hhZGluZyhHTGZsb2F0IHZhbHVl
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWluU2FtcGxlU2hh
ZGluZyhjb250ZXh0LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTYxMyw3ICs2MTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBhdGNoUGFyYW1ldGVyZnYo
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGF0Y2hQYXJhbWV0ZXJmdihjb250
ZXh0LCBwbmFtZSwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTYzMiw3
ICs2MzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBhdGNoUGFyYW1ldGVyaShHTGVudW0gcG5hbWUs
IEdMaW50IHZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVBhdGNoUGFyYW1ldGVyaShjb250ZXh0LCBwbmFtZSwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjUwLDcgKzY1MSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NjcsNyArNjY4LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjg1LDEzICs2ODYsMTUgQEAg
dm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWQoR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVVbmlmb3JtMWQoY29udGV4dCwgbG9jYXRpb24sIHgpKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWQoY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIHgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtMWQobG9jYXRpb24sIHgpOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTFkKGxvY2F0aW9uUGFja2VkLCB4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm0xZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB4KTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgeCk7CiAgICAgfQogfQogCkBAIC03MDUsMTQgKzcwOCwxNSBAQCB2b2lkIEdM
X0FQSUVOVFJZIFVuaWZvcm0xZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZG91YmxlICp2YWx1ZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xZHYoY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+
KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVW5pZm9ybTFkdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTFkdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0xZHYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWR2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTFkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtNzI0LDE0ICs3MjgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtMmQoR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yZChjb250ZXh0LCBsb2NhdGlv
biwgeCwgeSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVVbmlmb3JtMmQoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHgsIHkpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MmQobG9jYXRpb24sIHgsIHkpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJkKGxvY2F0
aW9uUGFja2VkLCB4LCB5KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm0yZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5KTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtMmQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgeCwgeSk7CiAgICAgfQogfQogCkBAIC03NDUsMTQgKzc1MCwxNSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm0yZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91
YmxlICp2YWx1ZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yZHYoY29udGV4dCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybTJkdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTJkdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0yZHYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJkdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAg
IH0KIH0KIApAQCAtNzY1LDE0ICs3NzEsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2Qo
R0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zZChjb250ZXh0LCBs
b2NhdGlvbiwgeCwgeSwgeikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVVbmlmb3JtM2QoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHgsIHksIHop
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtM2QobG9jYXRpb24sIHgsIHksIHopOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTNkKGxvY2F0aW9uUGFja2VkLCB4LCB5LCB6KTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm0zZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB4
LCB5LCB6KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2QsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgeCwgeSwgeik7CiAgICAgfQogfQogCkBAIC03ODYsMTQg
Kzc5MywxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zZHYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm0zZHYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTNkdihjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNkdihsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZHYobG9jYXRpb25QYWNrZWQsIGNvdW50
LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2R2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTNkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODA3LDE0ICs4MTUsMTUgQEAgdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtNGQoR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91
YmxlIHksIEdMZG91YmxlIHosIEcKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVW5pZm9ybTRkKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5LCB6LCB3KSk7CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00ZChjb250
ZXh0LCBsb2NhdGlvblBhY2tlZCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZChsb2NhdGlvbiwg
eCwgeSwgeiwgdyk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGQobG9jYXRpb25QYWNr
ZWQsIHgsIHksIHosIHcpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTRkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHgsIHksIHosIHcpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00ZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCB4LCB5LCB6LCB3KTsKICAgICB9CiB9CiAKQEAgLTgyOCwxNCArODM3LDE1IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xkb3VibGUgKnZhbHVlCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRkdihjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVVbmlmb3JtNGR2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtNGR2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTRkdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00ZHYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtNGR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSk7CiAgICAgfQogfQogCkBAIC04NTIsMTQgKzg2MiwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm1NYXRyaXgyZHYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJk
dihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1N
YXRyaXgyZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDJkdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJkdihsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoVW5pZm9ybU1hdHJpeDJkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJp
eDJkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNw
b3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTg3Niwx
NCArODg5LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJ4M2R2KEdMaW50IGxv
Y2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNkdihjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNkdihjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4Mngz
ZHYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyeDNkdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4
M2R2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MngzZHYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC05MDAsMTQgKzkxNiwxNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyeDRkdihHTGludCBsb2NhdGlvbiwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVVbmlmb3JtTWF0cml4Mng0ZHYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGR2KGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0
cml4Mng0ZHYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyeDRkdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4NGR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtOTI0LDE0ICs5NDMsMTcgQEAgdm9pZCBHTF9BUElFTlRS
WSBVbmlmb3JtTWF0cml4M2R2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgz
ZHYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3Jt
TWF0cml4M2R2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm1NYXRyaXgzZHYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZHYobG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm1NYXRyaXgzZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRy
aXgzZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC05NDgs
MTQgKzk3MCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzeDJkdihHTGludCBs
b2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZHYoY29udGV4dCwgbG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4o
bG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZHYoY29udGV4dCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4
MmR2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtTWF0cml4M3gyZHYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgz
eDJkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmR2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtOTcyLDE0ICs5OTcsMTcgQEAg
dm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M3g0ZHYoR0xpbnQgbG9jYXRpb24sCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDN4NGR2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGR2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRkdihsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1h
dHJpeDN4NGR2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M3g0ZHYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTk5NiwxNCArMTAyNCwxNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm1NYXRyaXg0ZHYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDRkdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXg0ZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDRkdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRkdihsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybU1hdHJpeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1h
dHJpeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEw
MjAsMTQgKzEwNTEsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4NHgyZHYoR0xp
bnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmR2KGNvbnRleHQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmR2KGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRy
aXg0eDJkdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmR2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0
cml4NHgyZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDJkdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEwNDQsMTQgKzEwNzgs
MTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4NHgzZHYoR0xpbnQgbG9jYXRpb24s
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4M2R2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4M2R2KGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDNkdihsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDR4M2R2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NHgzZHYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDNkdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEwNjYsOCArMTEwMyw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybVN1YnJvdXRpbmVzdWl2KEdMZW51bSBzaGFkZXJ0eXBlLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtU3Vicm91dGlu
ZXN1aXYoY29udGV4dCwgc2hhZGVydHlwZSwgY291bnQsIGluZGljZXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfMV9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8xX2F1dG9nZW4uY3Bw
CmluZGV4IGI0MmQzMWEzYWI5MjI5OGNkMDRjMjFmOTdhNmEwYjlmYmRiMDI2OGMuLmRjY2NkZDgz
NmI5NzUzM2EzZTE0MzYyMTQyZmY1MDlhMDYxNWQ3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8xX2F1dG9nZW4uY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8x
X2F1dG9nZW4uY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBBY3RpdmVT
aGFkZXJQcm9ncmFtKEdMdWludCBwaXBlbGluZSwgR0x1aW50IHByb2dyYW0pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2Vk
ICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlE
IHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBl
bGluZUlEPihwaXBlbGluZSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUFjdGl2ZVNoYWRlclByb2dyYW0oY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHByb2dyYW1QYWNr
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NSw4ICs1NSw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFByb2dyYW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBp
cGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlw
ZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVs
aW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3Jh
bVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRQcm9ncmFtUGlwZWxpbmUoY29udGV4dCwgcGlw
ZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyRGVwdGhmKEdMZmxvYXQgZCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyRGVwdGhmKGNvbnRleHQsIGQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05NSw5ICs5NSw5IEBAIEdMdWlu
dCBHTF9BUElFTlRSWSBDcmVhdGVTaGFkZXJQcm9ncmFtdihHTGVudW0gdHlwZSwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xjaGFyCiAgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyVHlw
ZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUNyZWF0ZVNoYWRlclByb2dyYW12KGNvbnRleHQsIHR5cGVQYWNrZWQsIGNv
dW50LCBzdHJpbmdzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MTI3LDggKzEyNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKQogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgY29uc3QgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5lc1BhY2tlZCA9IEZy
b21HTDxjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbVBp
cGVsaW5lcyhjb250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBE
ZXB0aFJhbmdlQXJyYXl2KEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3Vi
bGUgKnYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEZXB0aFJhbmdlQXJyYXl2KGNvbnRleHQsIGZpcnN0LCBjb3VudCwgdikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBE
ZXB0aFJhbmdlSW5kZXhlZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIG4sIEdMZG91YmxlIGYpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVw
dGhSYW5nZUluZGV4ZWQoY29udGV4dCwgaW5kZXgsIG4sIGYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVwdGhSYW5nZWYo
R0xmbG9hdCBuLCBHTGZsb2F0IGYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVEZXB0aFJhbmdlZihjb250ZXh0LCBuLCBmKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMjA1LDggKzIwNSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2Vu
UHJvZ3JhbVBpcGVsaW5lcyhHTHNpemVpIG4sIEdMdWludCAqcGlwZWxpbmVzKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFj
a2VkICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQgKj4ocGlwZWxpbmVzKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEICpw
aXBlbGluZXNQYWNrZWQgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQgKj4ocGlwZWxpbmVzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdlblByb2dyYW1QaXBlbGluZXMoY29udGV4dCwgbiwgcGlwZWxpbmVzUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldERvdWJsZWlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlICpkYXRh
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldERvdWJsZWlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEZs
b2F0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqZGF0YSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGbG9h
dGlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTI3Myw4ICsyNzMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1CaW5h
cnkoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnkoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIGJpbmFyeUZv
cm1hdCwgYmluYXJ5KSk7CkBAIC0zMDEsOCArMzAxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQ
cm9ncmFtUGlwZWxpbmVJbmZvTG9nKEdMdWludCBwaXBlbGluZSwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAg
ICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxp
bmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKGNvbnRleHQsIHBp
cGVsaW5lUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpKTsKQEAgLTMyNiw5ICszMjYs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGluZWl2KEdMdWludCBwaXBlbGlu
ZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByb2dyYW1QaXBl
bGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dy
YW1QaXBlbGluZUlEPihwaXBlbGluZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1QaXBlbGluZWl2KGNvbnRleHQsIHBpcGVs
aW5lUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMzUzLDggKzM1Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGNvbnRleHQsIHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmFuZ2UsIHByZWNpc2lvbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0zNzcsOCArMzc3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJMZHYoR0x1
aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkxkdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM5Niw4ICszOTYs
OCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNQcm9ncmFtUGlwZWxpbmUoR0x1aW50IHBpcGVs
aW5lKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9
IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlz
UHJvZ3JhbVBpcGVsaW5lKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTQzMSw4ICs0MzEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1C
aW5hcnkoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbUJpbmFyeShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwg
bGVuZ3RoKSk7CkBAIC00NTQsOSArNDU0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtUGFy
YW1ldGVyaShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtUGFyYW1ldGVyaShj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC00NzUsMTUgKzQ3NSwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtMWQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJs
ZSB2MCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0xZChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApKTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xZChwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgdjApOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xZChwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0xZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCk7CiAgICAgfQogfQogCkBAIC01MDAsMTYgKzUwMSwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtMWR2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTFkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFkdihjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVu
aWZvcm0xZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtMWR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWR2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CkBAIC01MjMsMTUgKzUy
NSwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCB2MCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZihj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybTFmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTFmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFmLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAgLTU0OCwxNiArNTUx
LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnYoR0x1aW50IHByb2dyYW0s
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWZ2KGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtMWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWZ2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwog
ICAgIH0KIH0KQEAgLTU3MSwxNSArNTc1LDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0xaShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0xaShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCk7
CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpKHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTFpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9
CiB9CiAKQEAgLTU5NiwxNiArNjAxLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm0xaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWl2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtMWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0x
aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQs
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTYxOSwxNSArNjI1LDE2IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xdWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTHVpbnQgdjApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMXVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWkocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtMXVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0xdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0KIH0KIApAQCAtNjQ0LDE3ICs2NTEsMTggQEAg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTF1aXYoR0x1aW50IHByb2dyYW0sCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMXVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTF1aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xdWl2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTY2OCwxNSArNjc2
LDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHYwLCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0yZChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZChwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgdjAsIHYxKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmQocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3Jh
bVVuaWZvcm0yZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAgfQogfQogCkBAIC02
OTMsMTYgKzcwNCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmR2KEdMdWlu
dCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJkdihjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTJkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZHYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybTJkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmR2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlKTsKICAgICB9CiB9CkBAIC03MTcsMTUgKzcyOSwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtMmYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwLCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTJmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmYo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtMmYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0yZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwg
djEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsCisgICAgICAgICAg
ICAgICAgICAgICAgdjEpOwogICAgIH0KIH0KIApAQCAtNzQyLDE2ICs3NTcsMTcgQEAgdm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0yZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZnYo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtMmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZnYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAt
NzY1LDE1ICs3ODEsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJpKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW4KIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaShjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpKHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm0yaShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybTJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYxKTsKICAgICB9
CiB9CiAKQEAgLTc5MCwxNiArODA5LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm0yaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMml2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMml2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtMml2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0y
aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQs
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTgxMywxNSArODMzLDE4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTHVpbnQgdjAsIEdMCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtMnVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2
MCwgdjEpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtMnVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwg
djEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYx
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMnVpKHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0ydWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTJ1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAgfQogfQogCkBAIC04MzgsMTcg
Kzg2MSwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMnVpdihHTHVpbnQgcHJv
Z3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWl2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMnVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0ydWl2KHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm0ydWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0ydWl2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAt
ODYzLDE1ICs4ODcsMTggQEAgUHJvZ3JhbVVuaWZvcm0zZChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMZG91YmxlIHYwLCBHTGRvdWJsZSB2MSwgR0xkb3UKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZChjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZChjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2QocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm0zZChwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2
Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNkLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2QsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLAorICAgICAgICAg
ICAgICAgICAgICAgIHYyKTsKICAgICB9CiB9CiAKQEAgLTg4OCwxNiArOTE1LDE3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zZHYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2R2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2R2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTNkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2R2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0zZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAg
LTkxMywxNSArOTQxLDE4IEBAIFByb2dyYW1Vbmlmb3JtM2YoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNmKHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtM2YocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwg
djIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zZiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwKKyAgICAgICAg
ICAgICAgICAgICAgICB2Mik7CiAgICAgfQogfQogCkBAIC05MzgsMTYgKzk2OSwxNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2Z2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNm
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm0zZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNmdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1V
bmlmb3JtM2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CkBA
IC05NjIsMTUgKzk5NCwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2koR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbgogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zaShw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTNpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEs
IHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2ks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2
Mik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zaSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAgICAg
ICAgICAgICAgICAgICAgdjIpOwogICAgIH0KIH0KIApAQCAtOTg3LDE2ICsxMDIyLDE3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2l2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
M2l2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybTNpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2l2KHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3Jh
bVVuaWZvcm0zaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0K
QEAgLTEwMTEsMTYgKzEwNDcsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1
aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0wKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3Vp
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm0zdWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWkocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0zdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0zdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsCisgICAgICAgICAgICAgICAgICAgICAgdjEsIHYyKTsKICAgICB9CiB9CiAKQEAg
LTEwMzcsMTcgKzEwNzUsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1aXYo
R0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3Vpdihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAg
ICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM3Vpdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtM3Vpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM3Vp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJv
Z3JhbVVuaWZvcm0zdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHZhbHVlKTsKICAgICB9
CiB9CiAKQEAgLTEwNjIsMTcgKzExMDEsMTggQEAgUHJvZ3JhbVVuaWZvcm00ZChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHYwLCBHTGRvdWJsZSB2MSwgR0xkb3UKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtNGQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwg
djIsIHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZChwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00ZCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLAotICAgICAgICAgICAgICAg
ICAgICAgIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRkLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwK
KyAgICAgICAgICAgICAgICAgICAgICB2MiwgdjMpOwogICAgIH0KIH0KIApAQCAtMTA4OSwxNiAr
MTEyOSwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGR2KEdMdWludCBwcm9n
cmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRkdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTRkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRk
dihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGR2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBBTkdMRV9D
QVBUVVJFKFByb2dyYW1Vbmlmb3JtNGR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
KTsKICAgICB9CiB9CkBAIC0xMTE0LDE3ICsxMTU1LDE4IEBAIFByb2dyYW1Vbmlmb3JtNGYoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZs
b2F0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTRmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
NGYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwKLSAgICAgICAg
ICAgICAgICAgICAgICB2Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00
ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsCisgICAgICAgICAgICAgICAgICAgICAgdjIsIHYzKTsKICAgICB9CiB9CiAKQEAgLTEx
NDEsMTYgKzExODMsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTRmdihHTHVp
bnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZnYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGZ2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVu
aWZvcm00ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtMTE2NiwxNyArMTIwOSwxOCBAQCBQcm9ncmFtVW5pZm9y
bTRpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBH
TGludCB2MiwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpKHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTRpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRpLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsCi0g
ICAgICAgICAgICAgICAgICAgICAgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1V
bmlmb3JtNGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxLAorICAgICAgICAgICAgICAgICAgICAgIHYyLCB2Myk7CiAgICAgfQogfQog
CkBAIC0xMTkzLDE2ICsxMjM3LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00
aXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtNGl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTEyMTgsMTcgKzEyNjMsMTggQEAgUHJvZ3Jh
bVVuaWZvcm00dWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdM
dWludCB2MSwgR0x1aW50IHYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWkoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTR1aShwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm00dWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2
MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtNHVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYw
LCB2MSwgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgdjMpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtNHVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYxLCB2MiwgdjMp
OwogICAgIH0KIH0KIApAQCAtMTI0NSwxNyArMTI5MSwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtNHVpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm00dWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpdihjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVu
aWZvcm00dWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00dWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
UHJvZ3JhbVVuaWZvcm00dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTI3MywxNyArMTMyMCwxOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJkdihj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZh
bHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJkdihj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtTWF0cml4MmR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xMzAxLDE3ICsx
MzUwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoR0x1aW50
IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4MmZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4MmZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJm
dihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFu
c3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJp
eDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9
CiB9CiAKQEAgLTEzMjksMTcgKzEzODAsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4M2R2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2R2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDNkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4M2R2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgIH0KIH0KIApAQCAtMTM1NywxNyArMTQxMCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xMzg1LDE3ICsxNDQwLDE5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdihHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDRkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4Mng0ZHYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
TWF0cml4Mng0ZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4
Mng0ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE0MTMsMTcgKzE0NzAs
MTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KEdMdWludCBw
cm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRmdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm1NYXRyaXgyeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTQ0
MSwxNyArMTUwMCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M2R2
KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZHYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CiAgICAgfQogfQogCkBAIC0xNDY5LDE3ICsxNTMwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDNm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE0OTcsMTcgKzE1NjAsMTkgQEAg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2KEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDN4MmR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDJkdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDJkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDJkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTUyNSwxNyAr
MTU5MCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoR0x1
aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybU1hdHJpeDN4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC0xNTUzLDE3ICsxNjIwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDRkdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAg
ICB9CiB9CiAKQEAgLTE1ODEsMTcgKzE2NTAsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4NGZ2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTYwOSwxNyArMTY4MCwxOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVl
KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtTWF0cml4NGR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNjM3LDE3ICsxNzEw
LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoR0x1aW50IHBy
b2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bv
c2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDRm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9
CiAKQEAgLTE2NjUsMTcgKzE3NDAsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4MmR2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJk
dihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4MmR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtMTY5MywxNyArMTc3MCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bU1hdHJpeDR4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNzIxLDE3ICsxODAwLDE5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdihHTHVpbnQgcHJvZ3JhbSwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0
eDNkdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0
cml4NHgzZHYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgzZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0
cml4NHgzZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4NHgz
ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE3NDksMTcgKzE4MzAsMTkg
QEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KEdMdWludCBwcm9n
cmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybU1hdHJpeDR4M2Z2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDNmdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTc3MCw3
ICsxODUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVsZWFzZVNoYWRlckNvbXBp
bGVyKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
Nzg5LDcgKzE4NzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNjaXNzb3JBcnJheXYoR0x1aW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTY2lzc29yQXJyYXl2KGNvbnRleHQs
IGZpcnN0LCBjb3VudCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODExLDgg
KzE4OTQsOCBAQCBTY2lzc29ySW5kZXhlZChHTHVpbnQgaW5kZXgsIEdMaW50IGxlZnQsIEdMaW50
IGJvdHRvbSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlU2Npc3NvckluZGV4ZWQoY29udGV4dCwgaW5kZXgsIGxlZnQsIGJvdHRvbSwgd2lkdGgsIGhl
aWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE4MzEsNyAr
MTkxNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Npc3NvckluZGV4ZWR2KEdMdWludCBpbmRleCwg
Y29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU2Npc3NvckluZGV4ZWR2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4NTcsOCArMTk0MCw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU2hhZGVyQmluYXJ5KEdMc2l6ZWkgY291bnQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGNvbnN0IFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCAgICAgICAgICA9
IEZyb21HTDxjb25zdCBTaGFkZXJQcm9ncmFtSUQgKj4oc2hhZGVycyk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQYWNr
ZWQgPSBGcm9tR0w8Y29uc3QgU2hhZGVyUHJvZ3JhbUlEICo+KHNoYWRlcnMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVTaGFkZXJCaW5hcnkoY29udGV4dCwgY291bnQsIHNoYWRlcnNQYWNrZWQsIGJpbmFyeWZv
cm1hdCwgYmluYXJ5LCBsZW5ndGgpKTsKQEAgLTE4ODEsOSArMTk2NCw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVXNlUHJvZ3JhbVN0YWdlcyhHTHVpbnQgcGlwZWxpbmUsIEdMYml0ZmllbGQgc3RhZ2Vz
LCBHTHVpbnQgcHJvCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW1Q
aXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlw
ZWxpbmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVs
aW5lUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlE
PihwaXBlbGluZSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZVVzZVByb2dyYW1TdGFnZXMoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHN0
YWdlcywgcHJvZ3JhbVBhY2tlZCkpOwpAQCAtMTkwNCw4ICsxOTg3LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBWYWxpZGF0ZVByb2dyYW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2Vk
ICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxp
bmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+
KHBpcGVsaW5lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnRleHQsIHBpcGVsaW5lUGFj
a2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5MjQsNyArMjAwNyw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliTDFkKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJMMWQoY29udGV4dCwgaW5kZXgsIHgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTk0NCw3ICsyMDI3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJM
MWR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliTDFkdihjb250
ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTYzLDcgKzIw
NDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkwyZChHTHVpbnQgaW5kZXgsIEdM
ZG91YmxlIHgsIEdMZG91YmxlIHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliTDJkKGNvbnRleHQsIGluZGV4LCB4LCB5
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5ODMsNyArMjA2Niw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliTDJkdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91Ymxl
ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYkwyZHYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMjAwMyw3ICsyMDg2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWJMM2QoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkwzZChjb250ZXh0LCBpbmRleCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0yMDIzLDcgKzIxMDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0
dHJpYkwzZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMM2R2
KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwNDQs
NyArMjEyNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliTDRkKEdMdWludCBpbmRl
eCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMNGQoY29udGV4
dCwgaW5kZXgsIHgsIHksIHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjA2
NCw3ICsyMTQ3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJMNGR2KEdMdWludCBp
bmRleCwgY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliTDRkdihjb250ZXh0LCBpbmRleCwg
dikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMDg3LDcgKzIxNzAsNyBAQCBWZXJ0
ZXhBdHRyaWJMUG9pbnRlcihHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBH
THNpemVpIHN0cmlkZSwgY29ucwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliTFBvaW50ZXIoY29u
dGV4dCwgaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcikpOwpAQCAtMjExMCw3ICsy
MTkzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWaWV3cG9ydEFycmF5dihHTHVpbnQgZmlyc3QsIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmlld3BvcnRBcnJheXYoY29udGV4dCwgZmly
c3QsIGNvdW50LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxMzEsNyArMjIx
NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmlld3BvcnRJbmRleGVkZihHTHVpbnQgaW5kZXgsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHcsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmlld3BvcnRJbmRleGVkZihjb250ZXh0LCBp
bmRleCwgeCwgeSwgdywgaCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMTUxLDcg
KzIyMzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZpZXdwb3J0SW5kZXhlZGZ2KEdMdWludCBpbmRl
eCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVWaWV3cG9ydEluZGV4ZWRmdihjb250ZXh0LCBpbmRleCwgdikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfMl9hdXRvZ2VuLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8yX2F1dG9nZW4u
Y3BwCmluZGV4IDgzOTFiYmE3MzA3YmUyNWZiMDgwYTQ5NDg2NTMwNTJhZmEzN2I0YmYuLjZlZTcx
ZjFlNDAyMzQ4MmEyOWUwNzAxMjYwZjk0YjJlYjBiMWY3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8yX2F1dG9nZW4uY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xf
NF8yX2F1dG9nZW4uY3BwCkBAIC00NSw5ICs0NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZElt
YWdlVGV4dHVyZShHTHVpbnQgdW5pdCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVC
aW5kSW1hZ2VUZXh0dXJlKGNvbnRleHQsIHVuaXQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCBsYXll
cmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYXllciwgYWNjZXNzLCBmb3JtYXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NzQsOSArNzQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5z
dGFuY2UoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmlt
aXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3
QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQsIGluc3RhbmNlY291bnQsIGJh
c2VpbnN0YW5jZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDYsOCArMTA2LDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoR0xl
bnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRC
YXNlSW5zdGFuY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1v
ZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNlaW5zdGFuY2UpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZShHTGVudW0g
bW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVy
dGV4QmFzZUluc3RhbmNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLApA
QCAtMTY1LDggKzE2NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd1RyYW5zZm9ybUZlZWRiYWNr
SW5zdGFuY2VkKEdMZW51bSBtb2RlLCBHTHVpbnQgaWQsIEdMc2l6ZWkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrSW5zdGFuY2VkKGNvbnRleHQsIG1v
ZGUsIGlkUGFja2VkLCBpbnN0YW5jZWNvdW50KSk7CkBAIC0xOTMsOCArMTkzLDggQEAgdm9pZCBH
TF9BUElFTlRSWSBEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW1JbnN0YW5jZWQoR0xlbnVtIG1v
ZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNr
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVkYmFja0lE
PihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUcmFuc2Zvcm1GZWVk
YmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zv
cm1GZWVkYmFja0lEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW1JbnN0YW5jZWQo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
bW9kZSwgaWRQYWNrZWQsIHN0cmVhbSwgaW5zdGFuY2Vjb3VudCkpOwpAQCAtMjIxLDggKzIyMSw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlQXRvbWljQ291bnRlckJ1ZmZlcml2KEdMdWlu
dCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRBY3RpdmVBdG9taWNDb3VudGVyQnVmZmVy
aXYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgYnVmZmVySW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTI1MSw3
ICsyNTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVybmFsZm9ybWF0aXYoR0xlbnVtIHRh
cmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXYoY29udGV4dCwgdGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpOwpAQCAtMjcyLDcgKzI3Miw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWVtb3J5QmFycmllcihHTGJpdGZpZWxkIGJhcnJpZXJzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWVtb3J5QmFycmllcihj
b250ZXh0LCBiYXJyaWVycykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UxRChHTGVudW0g
dGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4U3RvcmFnZTFEKGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0zMTYsOCArMzE2LDggQEAgVGV4U3RvcmFnZTJEKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2
ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBW
YWxpZGF0ZVRleFN0b3JhZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKQEAgLTM0Niw5ICszNDYsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFRleFN0b3JhZ2UzRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBp
bnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzRfM19hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TC9lbnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uY3BwCmluZGV4IGFmOTYxOWM2NWI2MDMwZTRl
OGU5ZDZkZjdjODgzMWI0ZDA5OWU0YjIuLjkyNWQ4YjE4MjBkMDIxYWEyMWM5NGExNjE1ZWNmZDhj
MTA4MGIyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9l
bnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uY3BwCkBAIC00MCw4ICs0
MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRleEJ1ZmZlcihHTHVpbnQgYmluZGluZ2lu
ZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVm
ZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcihjb250ZXh0LCBiaW5kaW5naW5k
ZXgsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzdHJpZGUpKTsKQEAgLTY4LDcgKzY4LDcgQEAgQ2xl
YXJCdWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVyRGF0YShjb250ZXh0
LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUsIGRhdGEpKTsKQEAgLTEwMiw4
ICsxMDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVyU3ViRGF0YShHTGVudW0gdGFy
Z2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJCdWZmZXJTdWJEYXRhKGNvbnRleHQs
IHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCBmb3JtYXQsIHR5cGUsIGRhdGEp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTQ0LDggKzE0NCw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgQ29weUltYWdlU3ViRGF0YShHTHVpbnQgc3JjTmFtZSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUNvcHlJbWFnZVN1YkRhdGEoY29udGV4dCwgc3JjTmFtZSwgc3JjVGFyZ2V0LCBz
cmNMZXZlbCwgc3JjWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjWSwgc3JjWiwgZHN0TmFtZSwgZHN0VGFyZ2V0LCBkc3RMZXZlbCwgZHN0
WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHN0WSwgZHN0Wiwgc3JjV2lkdGgsIHNyY0hlaWdodCwgc3JjRGVwdGgpKTsKQEAgLTE3MSw4ICsx
NzEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUNhbGxiYWNrKEdMREVCVUdQUk9D
IGNhbGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
RGVidWdNZXNzYWdlQ2FsbGJhY2soY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUNvbnRyb2woR0xlbnVtIHNvdXJjZSwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2woY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwg
Y291bnQsIGlkcywgZW5hYmxlZCkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRGVidWdNZXNzYWdlSW5zZXJ0KEdMZW51bSBzb3VyY2UsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01l
c3NhZ2VJbnNlcnQoY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwg
YnVmKSk7CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNwYXRjaENvbXB1
dGUoR0x1aW50IG51bV9ncm91cHNfeCwgR0x1aW50IG51bV9ncm91cHNfeSwgR0x1aW4KIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBW
YWxpZGF0ZURpc3BhdGNoQ29tcHV0ZShjb250ZXh0LCBudW1fZ3JvdXBzX3gsIG51bV9ncm91cHNf
eSwgbnVtX2dyb3Vwc196KSk7CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBE
aXNwYXRjaENvbXB1dGVJbmRpcmVjdChHTGludHB0ciBpbmRpcmVjdCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGVJ
bmRpcmVjdChjb250ZXh0LCBpbmRpcmVjdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yOTUsOCArMjk1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclBhcmFtZXRlcmko
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMyNyw4ICsz
MjcsOCBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgR2V0RGVidWdNZXNzYWdlTG9nKEdMdWludCBjb3Vu
dCwKICAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RGVi
dWdNZXNzYWdlTG9nKGNvbnRleHQsIGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywgaWRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMzYxLDggKzM2MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdl
dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTM4OCw4ICszODgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVybmFsZm9ybWF0aTY0
dihHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZXJuYWxmb3Jt
YXRpNjR2KGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MTMsNyArNDEzLDcgQEAg
R2V0T2JqZWN0TGFiZWwoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdExhYmVsKGNvbnRl
eHQsIGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKQEAgLTQzNyw4
ICs0MzcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE9iamVjdFB0ckxhYmVsKGNvbnN0IHZvaWQg
KnB0ciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0T2JqZWN0UHRyTGFiZWwoY29udGV4dCwgcHRyLCBidWZTaXplLCBsZW5ndGgsIGxhYmVs
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDYyLDkgKzQ2Miw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUludGVyZmFjZWl2KEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1J
bnRlcmZhY2Vpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDkwLDggKzQ5MCw4
IEBAIEdMdWludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChHTHVpbnQgcHJv
Z3JhbSwKICAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFByb2dyYW1SZXNvdXJjZUluZGV4KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dy
YW1JbnRlcmZhY2UsIG5hbWUpKTsKQEAgLTUyNyw4ICs1MjcsOCBAQCBHTGludCBHTF9BUElFTlRS
WSBHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwKICAgICBHTGludCBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291
cmNlTG9jYXRpb24oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFt
ZSkpOwpAQCAtNTY1LDggKzU2NSw4IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNv
dXJjZUxvY2F0aW9uSW5kZXgoR0x1aW50IHByb2dyYW0sCiAgICAgR0xpbnQgcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4KAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpKTsKQEAgLTYwNyw5ICs2MDcsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZU5hbWUoR0x1aW50IHByb2dyYW0sCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNl
TmFtZShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwg
YnVmU2l6ZSwgbGVuZ3RoLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY0
Miw4ICs2NDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZWl2KEdMdWlu
dCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1SZXNv
dXJjZWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4LApA
QCAtNjY1LDggKzY2NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgSW52YWxpZGF0ZUJ1ZmZlckRhdGEo
R0x1aW50IGJ1ZmZlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVy
SUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklE
PihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVySUQg
YnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyRGF0YShjb250ZXh0LCBidWZmZXJQYWNr
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjg3LDkgKzY4Nyw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgSW52YWxpZGF0ZUJ1ZmZlclN1YkRhdGEoR0x1aW50IGJ1ZmZlciwgR0xpbnRw
dHIgb2Zmc2V0LCBHTHNpemVpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1
ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJbnZhbGlkYXRl
QnVmZmVyU3ViRGF0YShjb250ZXh0LCBidWZmZXJQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzEyLDcgKzcxMiw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
VmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2ht
ZW50cywgYXR0YWNobWVudHMpKTsKQEAgLTc0Myw4ICs3NDMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0
YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzY1LDkgKzc2NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
SW52YWxpZGF0ZVRleEltYWdlKEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVJbnZhbGlkYXRlVGV4SW1hZ2UoY29udGV4dCwgdGV4dHVy
ZVBhY2tlZCwgbGV2ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC03OTQsOSArNzk0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlVGV4U3ViSW1hZ2Uo
R0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
SUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlSW52YWxpZGF0
ZVRleFN1YkltYWdlKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTgyMyw3ICs4MjMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0Fy
cmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5k
aXJlY3QoY29udGV4dCwgbW9kZSwgaW5kaXJlY3QsIGRyYXdjb3VudCwgc3RyaWRlKSk7CkBAIC04
NTIsNyArODUyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdFbGVtZW50c0luZGlyZWN0
KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbmRpcmVjdChjb250
ZXh0LCBtb2RlLCB0eXBlLCBpbmRpcmVjdCwgZHJhd2NvdW50LCBzdHJpZGUpKTsKQEAgLTg3Niw4
ICs4NzYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVsKEdMZW51bSBpZGVudGlmaWVy
LCBHTHVpbnQgbmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbgogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlT2JqZWN0TGFiZWwoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg5Nyw3ICs4OTcsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIE9iamVjdFB0ckxhYmVsKGNvbnN0IHZvaWQgKnB0ciwgR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU9iamVjdFB0ckxhYmVsKGNvbnRleHQsIHB0ciwgbGVu
Z3RoLCBsYWJlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05MTUsNyArOTE1LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBQb3BEZWJ1Z0dyb3VwKCkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcERlYnVnR3JvdXAoY29udGV4dCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTkzNiw4ICs5MzYsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgR0xzaXplaSBs
ZW5ndGgsIGNvbnN0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQdXNoRGVidWdHcm91cChjb250
ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC05NTksOSArOTU5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTaGFk
ZXJTdG9yYWdlQmxvY2tCaW5kaW5nKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNoYWRlclN0b3JhZ2VCbG9ja0JpbmRpbmcoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHN0b3Jh
Z2VCbG9ja0luZGV4LCBzdG9yYWdlQmxvY2tCaW5kaW5nKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTk5MCw4ICs5OTAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEJ1ZmZlclJhbmdl
KEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklE
IGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhCdWZmZXJSYW5nZShjb250ZXh0LCB0
YXJnZXQsIGludGVybmFsZm9ybWF0LCBidWZmZXJQYWNrZWQsIG9mZnNldCwgc2l6ZSkpOwpAQCAt
MTAyMSw4ICsxMDIxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMkRNdWx0aXNhbXBs
ZShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlz
YW1wbGUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsCkBAIC0xMDU2LDggKzEwNTYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UzRE11
bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdl
M0RNdWx0aXNhbXBsZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwKQEAgLTEwOTIsOCArMTA5Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4dHVy
ZVZpZXcoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZVZpZXcoY29u
dGV4dCwgdGV4dHVyZVBhY2tlZCwgdGFyZ2V0LCBvcmlndGV4dHVyZSwgaW50ZXJuYWxmb3JtYXQs
CkBAIC0xMTE3LDggKzExMTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkJpbmRp
bmcoR0x1aW50IGF0dHJpYmluZGV4LCBHTHVpbnQgYmluZGluZ2luZGV4KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhjb250ZXh0LCBhdHRyaWJpbmRleCwgYmlu
ZGluZ2luZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTE0
Myw5ICsxMTQzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJGb3JtYXQoR0x1aW50
IGF0dHJpYmluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhB
dHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0
cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVy
dGV4QXR0cmliRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
cm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTExNzEsOCArMTE3MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSUZvcm1hdChH
THVpbnQgYXR0cmliaW5kZXgsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZl
cnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0
ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLCByZWxhdGl2
ZW9mZnNldCkpOwpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWJMRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJp
YkxGb3JtYXQoY29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGUsIHJlbGF0aXZlb2Zmc2V0
KSk7CkBAIC0xMjIwLDggKzEyMjAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEJpbmRpbmdE
aXZpc29yKEdMdWludCBiaW5kaW5naW5kZXgsIEdMdWludCBkaXZpc29yKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVmVydGV4QmluZGluZ0Rpdmlzb3IoY29udGV4dCwgYmluZGluZ2luZGV4LCBk
aXZpc29yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzRf
YXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzRfNF9hdXRvZ2VuLmNwcAppbmRleCA5ODVmNGMyZTZjNWQ4MDRjMDFkYzA5N2UxZTYz
NTA4YTYxZGNlNWI5Li5hNjk3YjQyMjZhZWY4Y2JmNjVlYzMzN2FhZjk5MGQ0Njg5ODk3NWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRz
X2dsXzRfNF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2VuLmNwcApAQCAtMzgsOSArMzgsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJzQmFzZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQsIGNvbgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBj
b25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29u
c3QgQnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVy
c1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAq
PihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlQmluZEJ1ZmZlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgZmlyc3QsIGNvdW50LCBi
dWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NjcsOCArNjcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJzUmFuZ2UoR0xlbnVtIHRh
cmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgQnVmZmVySUQg
KmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+
KGJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgQnVm
ZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29u
c3QgQnVmZmVySUQgKj4oYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kQnVmZmVyc1JhbmdlKGNvbnRleHQsIHRhcmdl
dCwgZmlyc3QsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG9mZnNldHMsIHNpemVz
KSk7CkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEltYWdlVGV4dHVyZXMo
R0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnRlCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVCaW5kSW1hZ2VUZXh0dXJlcyhjb250ZXh0LCBmaXJzdCwgY291bnQsIHRl
eHR1cmVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFNhbXBsZXJzKEdMdWludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVyCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFNhbXBsZXJzKGNvbnRleHQsIGZp
cnN0LCBjb3VudCwgc2FtcGxlcnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFRleHR1cmVzKEdMdWludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp0ZXh0dXJlCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFRleHR1cmVzKGNvbnRleHQs
IGZpcnN0LCBjb3VudCwgdGV4dHVyZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MTU5LDggKzE1OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRleEJ1ZmZlcnMoR0x1aW50
IGZpcnN0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb25zdCBCdWZmZXJJ
RCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQg
Kj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBC
dWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxj
b25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZl
cnMoY29udGV4dCwgZmlyc3QsIGNvdW50LCBidWZmZXJzUGFja2VkLCBvZmZzZXRzLCBzdHJpZGVz
KSk7CkBAIC0xODUsOCArMTg1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdG9yYWdlKEdM
ZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2UoY29udGV4dCwgdGFyZ2V0LCBzaXplLCBkYXRh
LCBmbGFncykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIwOCw4
ICsyMDgsOCBAQCBDbGVhclRleEltYWdlKEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNs
ZWFyVGV4SW1hZ2UoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGZvcm1hdCwgdHlwZSwg
ZGF0YSkpOwpAQCAtMjQ1LDggKzI0NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJUZXhTdWJJ
bWFnZShHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhclRleFN1YkltYWdl
KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF80XzVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzRfNV9hdXRvZ2VuLmNwcAppbmRleCA4YmNiYmVjOWIxYjlmOWRi
ZTI0YWIzMmQ1YzE1ODAxNGRlYTI3MDc4Li5mNGQ0NmZjMDNkOTc5YmRhNmEzNzg2ODYyZjczMjBl
NzMxNGQ0NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wv
ZW50cnlfcG9pbnRzX2dsXzRfNV9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNV9hdXRvZ2VuLmNwcApAQCAtMzUsOCAr
MzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRUZXh0dXJlVW5pdChHTHVpbnQgdW5pdCwgR0x1
aW50IHRleHR1cmUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRUZXh0dXJlVW5pdChjb250ZXh0LCB1bml0LCB0ZXh0dXJl
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcxLDcgKzcxLDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBCbGl0TmFtZWRGcmFtZWJ1ZmZlcihHTHVpbnQgcmVhZEZyYW1lYnVmZmVy
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlQmxpdE5hbWVkRnJhbWVidWZmZXIoY29udGV4dCwgcmVhZEZyYW1lYnVm
ZmVyLCBkcmF3RnJhbWVidWZmZXIsIHNyY1gwLCBzcmNZMCwKQEAgLTk2LDggKzk2LDggQEAgR0xl
bnVtIEdMX0FQSUVOVFJZIENoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1cyhHTHVpbnQgZnJhbWVi
dWZmZXIsIEdMZW51bSB0YXJnZXQKICAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVi
dWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDaGVj
a05hbWVkRnJhbWVidWZmZXJTdGF0dXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQs
IHRhcmdldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzQsOSArMTM0LDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBDbGVhck5hbWVkQnVmZmVyRGF0YShHTHVpbnQgYnVmZmVyLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlckRhdGEoY29udGV4dCwgYnVm
ZmVyUGFja2VkLCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgZGF0YSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjgsOSArMTY4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBD
bGVhck5hbWVkQnVmZmVyU3ViRGF0YShHTHVpbnQgYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJJRCBidWZm
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlclN1YkRhdGEoY29udGV4dCwgYnVmZmVyUGFja2VkLCBp
bnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldCwgc2l6ZSwgZm9ybWF0LCB0eXBlLCBkYXRhKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5OCw5ICsxOTgsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIENsZWFyTmFtZWRGcmFtZWJ1ZmZlcmZpKEdMdWludCBmcmFtZWJ1ZmZlciwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tl
ZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVm
ZmVyZmkoY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQsIGJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdidWZmZXIs
IGRlcHRoLCBzdGVuY2lsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIyNiw5ICsy
MjYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyTmFtZWRGcmFtZWJ1ZmZlcmZ2KEdMdWludCBm
cmFtZWJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZm
ZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVy
SUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVm
ZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZnYoY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQsIGJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRyYXdidWZmZXIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTI1NCw5ICsyNTQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyTmFtZWRGcmFtZWJ1ZmZl
cml2KEdMdWludCBmcmFtZWJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdM
PEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJh
bWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVy
SUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyaXYoY29udGV4dCwgZnJhbWVidWZm
ZXJQYWNrZWQsIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyYXdidWZmZXIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTI4Miw5ICsyODIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyTmFt
ZWRGcmFtZWJ1ZmZlcnVpdihHTHVpbnQgZnJhbWVidWZmZXIsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAg
ICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBGcmFt
ZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyTmFtZWRGcmFtZWJ1ZmZlcnVpdihjb250
ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdidWZmZXIsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIENsaXBDb250cm9sKEdMZW51bSBvcmlnaW4sIEdMZW51bSBkZXB0aCkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGlwQ29udHJv
bChjb250ZXh0LCBvcmlnaW4sIGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTMzMyw4ICszMzMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXh0dXJlU3ViSW1h
Z2UxRChHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMUQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
dGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGZvcm1hdCwgaW1hZ2VT
aXplLCBkYXRhKSk7CkBAIC0zNjgsOCArMzY4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVz
c2VkVGV4dHVyZVN1YkltYWdlMkQoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTJEKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LApAQCAtNDA2LDkgKzQwNiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTNEKEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UzRCgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSkpOwpAQCAtNDM3
LDggKzQzNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weU5hbWVkQnVmZmVyU3ViRGF0YShHTHVp
bnQgcmVhZEJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlOYW1lZEJ1ZmZlclN1
YkRhdGEoY29udGV4dCwgcmVhZEJ1ZmZlciwgd3JpdGVCdWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPZmZzZXQsIHdy
aXRlT2Zmc2V0LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ2MSw4ICs0
NjEsOCBAQCBDb3B5VGV4dHVyZVN1YkltYWdlMUQoR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVs
LCBHTGludCB4b2Zmc2V0LCBHTGludCB4LCBHTGludAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlU
ZXh0dXJlU3ViSW1hZ2UxRChjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgeG9mZnNldCwg
eCwgeSwgd2lkdGgpKTsKQEAgLTQ5Miw5ICs0OTIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlU
ZXh0dXJlU3ViSW1hZ2UyRChHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlMkQoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2
ZWwsIHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC01MjYsOSArNTI2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5
VGV4dHVyZVN1YkltYWdlM0QoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1
cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
Pih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTNEKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxl
dmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTQ5LDggKzU0OSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ3JlYXRlQnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqYnVmZmVycykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQgKj4oYnVmZmVycyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
cmVhdGVCdWZmZXJzKGNvbnRleHQsIG4sIGJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ3JlYXRlRnJh
bWVidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ3JlYXRlRnJhbWVidWZm
ZXJzKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVycykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC01OTAsNyArNTkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDcmVhdGVQcm9ncmFtUGlwZWxp
bmVzKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ3JlYXRlUHJvZ3JhbVBpcGVsaW5lcyhj
b250ZXh0LCBuLCBwaXBlbGluZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjEw
LDcgKzYxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ3JlYXRlUXVlcmllcyhHTGVudW0gdGFyZ2V0
LCBHTHNpemVpIG4sIEdMdWludCAqaWRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNyZWF0ZVF1ZXJpZXMoY29udGV4dCwgdGFyZ2V0LCBu
LCBpZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjMwLDkgKzYzMCw5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ3JlYXRlUmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqcmVu
ZGVyYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUmVuZGVyYnVm
ZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZl
cklEICo+KHJlbmRlcmJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1
ZmZlcnNQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNyZWF0
ZVJlbmRlcmJ1ZmZlcnMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIENyZWF0ZVNhbXBsZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpzYW1wbGVycykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVh
dGVTYW1wbGVycyhjb250ZXh0LCBuLCBzYW1wbGVycykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDcmVhdGVUZXh0dXJlcyhH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ3JlYXRlVGV4dHVyZXMo
Y29udGV4dCwgdGFyZ2V0LCBuLCB0ZXh0dXJlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDcmVhdGVUcmFuc2Zvcm1GZWVk
YmFja3MoR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVUcmFuc2Zvcm1GZWVkYmFja3MoY29u
dGV4dCwgbiwgaWRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcxMCw4ICs3MTAs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIENyZWF0ZVZlcnRleEFycmF5cyhHTHNpemVpIG4sIEdMdWlu
dCAqYXJyYXlzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJh
eUlEICphcnJheXNQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJ
RCAqPihhcnJheXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVmVydGV4
QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VmVydGV4QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ3JlYXRlVmVydGV4QXJyYXlzKGNvbnRleHQsIG4s
IGFycmF5c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MzAsOSArNzMw
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlVmVydGV4QXJyYXlBdHRyaWIoR0x1aW50IHZh
b2JqLCBHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZl
cnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0
ZXhBcnJheUlEPih2YW9iaik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURp
c2FibGVWZXJ0ZXhBcnJheUF0dHJpYihjb250ZXh0LCB2YW9ialBhY2tlZCwgaW5kZXgpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03NTAsOSArNzUwLDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBFbmFibGVWZXJ0ZXhBcnJheUF0dHJpYihHTHVpbnQgdmFvYmosIEdMdWlu
dCBpbmRleCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJ
RCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+
KHZhb2JqKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRW5hYmxlVmVydGV4
QXJyYXlBdHRyaWIoY29udGV4dCwgdmFvYmpQYWNrZWQsIGluZGV4KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzcyLDggKzc3Miw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRmx1c2hNYXBwZWROYW1lZEJ1ZmZlclJhbmdlKEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9m
ZnNldCwgR0xzCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1
ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVm
ZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklE
PihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVGbHVzaE1hcHBlZE5hbWVkQnVmZmVyUmFuZ2UoY29u
dGV4dCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIGxlbmd0aCkpOwpAQCAtNzkzLDggKzc5Myw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2VuZXJhdGVUZXh0dXJlTWlwbWFwKEdMdWludCB0ZXh0dXJlKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZW5lcmF0ZVRleHR1cmVNaXBtYXAoY29udGV4dCwgdGV4dHVyZVBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04MTgsOCArODE4LDggQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRDb21wcmVzc2VkVGV4dHVyZUltYWdlKEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBW
YWxpZGF0ZUdldENvbXByZXNzZWRUZXh0dXJlSW1hZ2UoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwg
bGV2ZWwsIGJ1ZlNpemUsIHBpeGVscykpOwpAQCAtODUzLDggKzg1Myw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZShHTHVpbnQgdGV4dHVyZSwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlKGNvbnRleHQsIHRleHR1
cmVQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LApAQCAtODc3LDcgKzg3Nyw3IEBAIEdM
ZW51bSBHTF9BUElFTlRSWSBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCkKICAgICBHTGVudW0gcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0R3Jh
cGhpY3NSZXNldFN0YXR1cyhjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtOTA3LDggKzkwNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TmFtZWRCdWZm
ZXJQYXJhbWV0ZXJpNjR2KEdMdWludCBidWZmZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQ2CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBh
cmFtZXRlcmk2NHYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dCwgYnVmZmVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTkzMCw4ICs5MzAsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaXYoR0x1aW50IGJ1ZmZlciwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJ
RCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+
KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBi
dWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2V0TmFtZWRCdWZmZXJQYXJhbWV0ZXJpdigKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBidWZmZXJQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTUyLDkgKzk1
Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TmFtZWRCdWZmZXJQb2ludGVydihHTHVpbnQgYnVm
ZmVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZm
ZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXROYW1lZEJ1ZmZlclBvaW50ZXJ2KGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgcG5hbWUsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTk3NSw4ICs5
NzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE5hbWVkQnVmZmVyU3ViRGF0YShHTHVpbnQgYnVm
ZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0TmFtZWRC
dWZmZXJTdWJEYXRhKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplLCBkYXRhKSk7
CkBAIC0xMDA0LDkgKzEwMDQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE5hbWVkRnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0x1aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXROYW1lZEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDMwLDggKzEwMzAsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldE5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpdihHTHVpbnQgZnJhbWVidWZmZXIsIEdM
ZW51bSBwbmFtZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZl
cklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJ
RD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJh
bWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXROYW1lZEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSkpOwpAQCAtMTA1Niw4ICsxMDU2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXROYW1lZFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMdWludCByZW5kZXJidWZmZXIsIEdMZW51bSBwbmEKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVm
ZmVyUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZm
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUmVuZGVyYnVmZmVySUQg
cmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXROYW1lZFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KGNvbnRleHQs
IHJlbmRlcmJ1ZmZlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwpAQCAtMTA4MSw4ICsxMDgxLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeUJ1ZmZlck9iamVjdGk2NHYoR0x1aW50IGlkLCBH
THVpbnQgYnVmZmVyLCBHTGVudW0gcG5hbWUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVy
T2JqZWN0aTY0dihjb250ZXh0LCBpZCwgYnVmZmVyUGFja2VkLCBwbmFtZSwgb2Zmc2V0KSk7CkBA
IC0xMTA2LDggKzExMDYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5QnVmZmVyT2JqZWN0
aXYoR0x1aW50IGlkLCBHTHVpbnQgYnVmZmVyLCBHTGVudW0gcG5hbWUsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRRdWVyeUJ1ZmZlck9iamVjdGl2KGNvbnRleHQsIGlkLCBidWZmZXJQYWNrZWQsIHBuYW1l
LCBvZmZzZXQpKTsKQEAgLTExMzEsOCArMTEzMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVl
cnlCdWZmZXJPYmplY3R1aTY0dihHTHVpbnQgaWQsIEdMdWludCBidWZmZXIsIEdMZW51bSBwbmFt
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVpNjR2KGNvbnRleHQsIGlkLCBi
dWZmZXJQYWNrZWQsIHBuYW1lLCBvZmZzZXQpKTsKQEAgLTExNTYsOCArMTE1Niw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0UXVlcnlCdWZmZXJPYmplY3R1aXYoR0x1aW50IGlkLCBHTHVpbnQgYnVm
ZmVyLCBHTGVudW0gcG5hbWUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1
ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVp
dihjb250ZXh0LCBpZCwgYnVmZmVyUGFja2VkLCBwbmFtZSwgb2Zmc2V0KSk7CkBAIC0xMTg2LDgg
KzExODYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleHR1cmVJbWFnZShHTHVpbnQgdGV4dHVy
ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRl
eHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXh0dXJlSW1hZ2UoY29udGV4dCwgdGV4dHVyZVBh
Y2tlZCwgbGV2ZWwsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKSk7CkBAIC0xMjE0LDgg
KzEyMTQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleHR1cmVMZXZlbFBhcmFtZXRlcmZ2KEdM
dWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
Pih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleHR1cmVMZXZlbFBhcmFtZXRl
cmZ2KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7CkBAIC0x
MjQyLDggKzEyNDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleHR1cmVMZXZlbFBhcmFtZXRl
cml2KEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleHR1cmVMZXZlbFBh
cmFtZXRlcml2KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7
CkBAIC0xMjY2LDkgKzEyNjYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleHR1cmVQYXJhbWV0
ZXJJaXYoR0x1aW50IHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcgogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleHR1cmVQYXJhbWV0ZXJJaXYoY29udGV4dCwgdGV4
dHVyZVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTEyODksOSArMTI4OSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4dHVy
ZVBhcmFtZXRlckl1aXYoR0x1aW50IHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlckl1aXYoY29u
dGV4dCwgdGV4dHVyZVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMTIsOSArMTMxMiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0VGV4dHVyZVBhcmFtZXRlcmZ2KEdMdWludCB0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgKnBhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1
cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRl
cmZ2KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzM0LDkgKzEzMzQsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFRleHR1cmVQYXJhbWV0ZXJpdihHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
Pih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleHR1cmVQ
YXJhbWV0ZXJpdihjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM3Miw4ICsxMzcyLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRUZXh0dXJlU3ViSW1hZ2UoR0x1aW50IHRleHR1cmUsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VGV4dHVyZVN1YkltYWdlKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LApAQCAtMTM5OSw4ICsxMzk5LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRUcmFuc2Zvcm1GZWVkYmFja2k2NF92KEdMdWludCB4ZmIsIEdMZW51
bSBwbmFtZSwgR0x1aW50IGluZGUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRyYW5zZm9y
bUZlZWRiYWNraTY0X3YoY29udGV4dCwgeGZiLCBwbmFtZSwgaW5kZXgsIHBhcmFtKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQyMSw4ICsxNDIxLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRUcmFuc2Zvcm1GZWVkYmFja2lfdihHTHVpbnQgeGZiLCBHTGVudW0g
cG5hbWUsIEdMdWludCBpbmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRyYW5zZm9y
bUZlZWRiYWNraV92KGNvbnRleHQsIHhmYiwgcG5hbWUsIGluZGV4LCBwYXJhbSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0NDIsOCArMTQ0Miw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VHJhbnNmb3JtRmVlZGJhY2tpdihHTHVpbnQgeGZiLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRyYW5zZm9ybUZl
ZWRiYWNraXYoY29udGV4dCwgeGZiLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xNDY0LDggKzE0NjQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFZlcnRleEFycmF5SW5kZXhlZDY0aXYoR0x1aW50IHZhb2JqLCBHTHVpbnQgaW5kZXgsIEdM
ZW51bSBwbgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlE
IHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4o
dmFvYmopOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVmVydGV4QXJyYXlJ
RCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4
QXJyYXlJRD4odmFvYmopOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhBcnJheUluZGV4ZWQ2NGl2
KGNvbnRleHQsIHZhb2JqUGFja2VkLCBpbmRleCwgcG5hbWUsIHBhcmFtKSk7CkBAIC0xNDg5LDgg
KzE0ODksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEFycmF5SW5kZXhlZGl2KEdMdWlu
dCB2YW9iaiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRWZXJ0ZXhBcnJheUluZGV4ZWRpdihjb250ZXh0LCB2YW9ialBhY2tlZCwgaW5kZXgsIHBu
YW1lLCBwYXJhbSkpOwpAQCAtMTUxMyw5ICsxNTEzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRW
ZXJ0ZXhBcnJheWl2KEdMdWludCB2YW9iaiwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW0pCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEFycmF5aXYoY29udGV4
dCwgdmFvYmpQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTE1MzgsOCArMTUzOCw4IEBAIEdldG5Db2xvclRhYmxlKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIHZvaWQK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Db2xvclRhYmxlKGNvbnRleHQsIHRhcmdldCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCB0YWJsZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0bkNv
bXByZXNzZWRUZXhJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsb2QsIEdMc2l6ZWkgYnVmU2l6
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuQ29tcHJlc3NlZFRleEltYWdlKGNvbnRleHQs
IHRhcmdldCwgbG9kLCBidWZTaXplLCBwaXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBHZXRuQ29udm9sdXRpb25GaWx0ZXIo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6
ZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0bkNvbnZvbHV0aW9uRmlsdGVyKGNvbnRleHQsIHRhcmdldCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBpbWFnZSkpOwpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBHZXRuSGlzdG9ncmFtKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRu
SGlzdG9ncmFtKGNvbnRleHQsIHRhcmdldCwgcmVzZXQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwg
dmFsdWVzKSk7CkBAIC0xNjM4LDcgKzE2MzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5NYXBk
dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xkb3VibAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
dG5NYXBkdihjb250ZXh0LCB0YXJnZXQsIHF1ZXJ5LCBidWZTaXplLCB2KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTE2NjAsNyArMTY2MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
bk1hcGZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGZs
b2F0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2V0bk1hcGZ2KGNvbnRleHQsIHRhcmdldCwgcXVlcnksIGJ1ZlNpemUsIHYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRuTWFwaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTHNpemVpIGJ1ZlNpemUs
IEdMaW50ICoKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRuTWFwaXYoY29udGV4dCwgdGFyZ2V0LCBxdWVyeSwgYnVmU2l6ZSwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzEwLDcgKzE3MTAsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldG5NaW5tYXgoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5NaW5tYXgo
Y29udGV4dCwgdGFyZ2V0LCByZXNldCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCB2YWx1ZXMpKTsK
QEAgLTE3MzMsNyArMTczMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blBpeGVsTWFwZnYoR0xl
bnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICp2YWx1ZXMpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0blBpeGVsTWFwZnYo
Y29udGV4dCwgbWFwLCBidWZTaXplLCB2YWx1ZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuUGl4ZWxNYXB1aXYo
R0xlbnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTHVpbnQgKnZhbHVlcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRuUGl4ZWxNYXB1
aXYoY29udGV4dCwgbWFwLCBidWZTaXplLCB2YWx1ZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuUGl4ZWxNYXB1
c3YoR0xlbnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTHVzaG9ydCAqdmFsdWVzKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldG5QaXhl
bE1hcHVzdihjb250ZXh0LCBtYXAsIGJ1ZlNpemUsIHZhbHVlcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0xNzk0LDcgKzE3OTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5Qb2x5
Z29uU3RpcHBsZShHTHNpemVpIGJ1ZlNpemUsIEdMdWJ5dGUgKnBhdHRlcm4pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0blBvbHlnb25T
dGlwcGxlKGNvbnRleHQsIGJ1ZlNpemUsIHBhdHRlcm4pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTgyNyw4ICsxODI3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuU2VwYXJhYmxl
RmlsdGVyKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuU2VwYXJh
YmxlRmlsdGVyKGNvbnRleHQsIHRhcmdldCwgZm9ybWF0LCB0eXBlLCByb3dCdWZTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cs
IGNvbHVtbkJ1ZlNpemUsIGNvbHVtbiwgc3BhbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0xODU0LDcgKzE4NTQsNyBAQCBHZXRuVGV4SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZgogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlk
YXRlR2V0blRleEltYWdlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGZvcm1hdCwgdHlwZSwgYnVm
U2l6ZSwgcGl4ZWxzKSk7CkBAIC0xODc3LDE2ICsxODc3LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0blVuaWZvcm1kdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVm
U2l6ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1kdihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRuVW5pZm9ybWR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZT
aXplLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBi
dWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1kdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRuVW5pZm9ybWR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAg
ICB9CiB9CkBAIC0xOTAxLDE2ICsxOTAyLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZv
cm1mdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9y
bWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRuVW5pZm9ybWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBw
YXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5p
Zm9ybWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CkBA
IC0xOTI1LDE2ICsxOTI3LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1pdihHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZh
bGlkYXRlR2V0blVuaWZvcm1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRuVW5pZm9ybWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdihwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldG5Vbmlmb3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgYnVmU2l6ZSwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CkBAIC0xOTQ5LDE2
ICsxOTUyLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm11aXYoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdl
dG5Vbmlmb3JtdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBw
YXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtdWl2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5p
Zm9ybXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBidWZTaXplLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0blVuaWZvcm11aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVpdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXpl
LAogICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQpAQCAtMTk3NSw5ICsx
OTc5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRhdGEo
R0x1aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBG
cmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJh
bWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1
ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4o
ZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRhdGEoY29udGV4dCwgZnJhbWVi
dWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwMDYsOCArMjAxMCw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgSW52YWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJTdWJEYXRhKEdMdWludCBmcmFtZWJ1ZmZl
ciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFt
ZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1l
YnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEZyYW1lYnVmZmVy
SUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1l
YnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlSW52YWxpZGF0ZU5hbWVkRnJh
bWVidWZmZXJTdWJEYXRhKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkLCBudW1BdHRhY2htZW50
cywKQEAgLTIwMzEsOCArMjAzNSw4IEBAIHZvaWQgKkdMX0FQSUVOVFJZIE1hcE5hbWVkQnVmZmVy
KEdMdWludCBidWZmZXIsIEdMZW51bSBhY2Nlc3MpCiAgICAgdm9pZCAqcmV0dXJuVmFsdWU7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1h
cE5hbWVkQnVmZmVyKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgYWNjZXNzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTIwNjgsOCArMjA3Miw4IEBAIHZvaWQgKkdMX0FQSUVOVFJZIE1h
cE5hbWVkQnVmZmVyUmFuZ2UoR0x1aW50IGJ1ZmZlciwKICAgICB2b2lkICpyZXR1cm5WYWx1ZTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVNYXBOYW1lZEJ1ZmZlclJhbmdlKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwg
b2Zmc2V0LCBsZW5ndGgsIGFjY2VzcykpOwpAQCAtMjA5OSw3ICsyMTAzLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBNZW1vcnlCYXJyaWVyQnlSZWdpb24oR0xiaXRmaWVsZCBiYXJyaWVycykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNZW1vcnlC
YXJyaWVyQnlSZWdpb24oY29udGV4dCwgYmFycmllcnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMjEyMSw5ICsyMTI1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZEJ1ZmZlckRh
dGEoR0x1aW50IGJ1ZmZlciwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkICpkYXQKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkQnVmZmVyRGF0YShjb250ZXh0LCBidWZmZXJQYWNr
ZWQsIHNpemUsIGRhdGEsIHVzYWdlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMjE0Nyw5ICsyMTUxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZEJ1ZmZlclN0
b3JhZ2UoR0x1aW50IGJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkQnVm
ZmVyU3RvcmFnZShjb250ZXh0LCBidWZmZXJQYWNrZWQsIHNpemUsIGRhdGEsIGZsYWdzKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjE3Myw5ICsyMTc3LDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBOYW1lZEJ1ZmZlclN1YkRhdGEoR0x1aW50IGJ1ZmZlciwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkQnVmZmVyU3ViRGF0YShjb250ZXh0LCBidWZmZXJQ
YWNrZWQsIG9mZnNldCwgc2l6ZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTIxOTMsOSArMjE5Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgTmFtZWRGcmFt
ZWJ1ZmZlckRyYXdCdWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyLCBHTGVudW0gYnVmKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFj
a2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVy
RHJhd0J1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgYnVmKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjIxNiw4ICsyMjIwLDggQEAgdm9pZCBHTF9B
UElFTlRSWSBOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcnMoR0x1aW50IGZyYW1lYnVmZmVyLCBH
THNpemVpIG4sIGNvbnMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVi
dWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVm
ZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRyYXdCdWZmZXJzKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkLCBuLCBidWZzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTIyMzksOCArMjI0Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTmFtZWRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcmkoR0x1aW50IGZyYW1lYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZm
ZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZl
cik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGcmFtZWJ1ZmZlcklEIGZy
YW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZl
cklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJQYXJhbWV0
ZXJpKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKQEAgLTIyNjEs
OSArMjI2NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgTmFtZWRGcmFtZWJ1ZmZlclJlYWRCdWZmZXIo
R0x1aW50IGZyYW1lYnVmZmVyLCBHTGVudW0gc3JjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAg
PSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZm
ZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJh
bWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyUmVhZEJ1ZmZlcihjb250ZXh0
LCBmcmFtZWJ1ZmZlclBhY2tlZCwgc3JjKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMjI4Nyw5ICsyMjkxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAg
ICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgUmVu
ZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPFJlbmRl
cmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgID0gRnJvbUdMPEZyYW1lYnVm
ZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVy
UGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVOYW1lZEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFj
a2VkLCBhdHRhY2htZW50LApAQCAtMjMxOCwxMCArMjMyMiwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IE5hbWVkRnJhbWVidWZmZXJUZXh0dXJlKEdMdWludCBmcmFtZWJ1ZmZlciwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFt
ZWJ1ZmZlcik7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkRnJhbWVidWZm
ZXJUZXh0dXJlKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkLCBhdHRhY2htZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZVBhY2tlZCwgbGV2ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjM0OCw5
ICsyMzUyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZEZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KEdMdWludCBmcmFtZWJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
RnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZy
YW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVm
ZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihm
cmFtZWJ1ZmZlcik7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQsIGF0dGFjaG1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyKSk7CkBAIC0yMzc4LDkgKzIzODIsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIE5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZShHTHVpbnQgcmVuZGVyYnVm
ZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCBy
ZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJl
bmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQg
PSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVyU3Rv
cmFnZShjb250ZXh0LCByZW5kZXJidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQwNyw4ICsyNDEx
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShHTHVpbnQgcmVuZGVyYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8
UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVu
ZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlKGNvbnRleHQsIHJlbmRlcmJ1ZmZlclBhY2tlZCwgc2FtcGxl
cywKQEAgLTI0NDIsNyArMjQ0Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHMoR0xp
bnQgeCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICBWYWxpZGF0ZVJlYWRuUGl4ZWxzKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSkpOwpAQCAtMjQ2Miw3ICsyNDY2LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlQmFycmllcigpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXh0dXJlQmFycmllcihjb250ZXh0KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjQ4Miw5ICsyNDg2LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBUZXh0dXJlQnVmZmVyKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMdWludCBidWYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIEJ1
ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlQnVmZmVyKGNvbnRl
eHQsIHRleHR1cmVQYWNrZWQsIGludGVybmFsZm9ybWF0LCBidWZmZXJQYWNrZWQpKTsKQEAgLTI1
MTIsMTAgKzI1MTYsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlQnVmZmVyUmFuZ2UoR0x1
aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZUJ1
ZmZlclJhbmdlKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIGludGVybmFsZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBh
Y2tlZCwgb2Zmc2V0LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1Mzks
OSArMjU0Myw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4dHVyZVBhcmFtZXRlcklpdihHTHVpbnQg
dGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcklpdihjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MjU2Miw5ICsyNTY2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlUGFyYW1ldGVySXVpdihH
THVpbnQgdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVySXVpdihjb250ZXh0LCB0ZXh0dXJlUGFj
a2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMjU4Myw5ICsyNTg3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlUGFyYW1ldGVy
ZihHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJmKGNvbnRleHQsIHRleHR1cmVQ
YWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTI2MDYsOSArMjYxMCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4dHVyZVBhcmFtZXRl
cmZ2KEdMdWludCB0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyZnYoY29udGV4dCwgdGV4dHVy
ZVBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMjYyNyw5ICsyNjMxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlUGFyYW1l
dGVyaShHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyaShjb250ZXh0LCB0ZXh0dXJl
UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0yNjUxLDkgKzI2NTUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVQYXJhbWV0
ZXJpdihHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJpdihjb250ZXh0LCB0ZXh0
dXJlUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0yNjc3LDggKzI2ODEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdG9y
YWdlMUQoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2Ux
RChjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCkp
OwpAQCAtMjcwNiw4ICsyNzEwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlU3RvcmFnZTJE
KEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTJEKGNvbnRleHQsIHRleHR1cmVQ
YWNrZWQsIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkp
OwpAQCAtMjczNyw4ICsyNzQxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlU3RvcmFnZTJE
TXVsdGlzYW1wbGUoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZVN0
b3JhZ2UyRE11bHRpc2FtcGxlKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHNhbXBsZXMsIGludGVy
bmFsZm9ybWF0LApAQCAtMjc2OSw5ICsyNzczLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJl
U3RvcmFnZTNEKEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVRleHR1cmVTdG9yYWdlM0QoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMjgwMiw4ICsyODA2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlU3RvcmFnZTNETXVs
dGlzYW1wbGUoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZVN0b3Jh
Z2UzRE11bHRpc2FtcGxlKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LApAQCAtMjgzNiw5ICsyODQwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlU3Vi
SW1hZ2UxRChHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVU
ZXh0dXJlU3ViSW1hZ2UxRChjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgeG9mZnNldCwg
d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yODcxLDggKzI4NzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdWJJbWFnZTJEKEdM
dWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
Pih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTJEKGNvbnRl
eHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAgLTI5
MTAsOCArMjkxNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4dHVyZVN1YkltYWdlM0QoR0x1aW50
IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0
ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRl
eHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlM0QoY29udGV4dCwg
dGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCkBAIC0yOTM1
LDkgKzI5MzksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQmFz
ZShHTHVpbnQgeGZiLCBHTHVpbnQgaW5kZXgsIEdMdWludCBidQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJJRCBidWZm
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCYXNlKGNvbnRleHQsIHhmYiwgaW5kZXgs
IGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTI5NjIsOCArMjk2Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJSYW5nZShHTHVpbnQgeGZiLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZm
ZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJSYW5nZShjb250ZXh0LCB4ZmIsIGluZGV4LCBidWZmZXJQYWNrZWQsIG9mZnNldCwgc2l6ZSkp
OwpAQCAtMjk4NCw4ICsyOTg4LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIFVubWFwTmFtZWRC
dWZmZXIoR0x1aW50IGJ1ZmZlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVubWFwTmFt
ZWRCdWZmZXIoY29udGV4dCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTMwMTQsOCArMzAxOCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXJyYXlBdHRy
aWJCaW5kaW5nKEdMdWludCB2YW9iaiwgR0x1aW50IGF0dHJpYmluZGV4LCBHTHVpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliQmluZGluZyhjb250ZXh0LCB2YW9ialBh
Y2tlZCwgYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCkpOwpAQCAtMzA0NSw5ICszMDQ5LDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBcnJheUF0dHJpYkZvcm1hdChHTHVpbnQgdmFvYmosCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliRm9ybWF0
KGNvbnRleHQsIHZhb2JqUGFja2VkLCBhdHRyaWJpbmRleCwgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIG5vcm1h
bGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMw
NzUsOSArMzA3OSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXJyYXlBdHRyaWJJRm9ybWF0
KEdMdWludCB2YW9iaiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4
QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFy
cmF5SUQ+KHZhb2JqKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4
QXJyYXlBdHRyaWJJRm9ybWF0KGNvbnRleHQsIHZhb2JqUGFja2VkLCBhdHRyaWJpbmRleCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplLCB0eXBlLCByZWxhdGl2ZW9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0zMTA0LDkgKzMxMDgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEFycmF5QXR0cmli
TEZvcm1hdChHTHVpbnQgdmFvYmosCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxW
ZXJ0ZXhBcnJheUlEPih2YW9iaik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9i
aik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVZlcnRleEFycmF5QXR0cmliTEZvcm1hdChjb250ZXh0LCB2YW9ialBhY2tlZCwgYXR0cmliaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZSwgdHlwZSwgcmVsYXRpdmVvZmZzZXQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMzEyNyw4ICszMTMxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBcnJh
eUJpbmRpbmdEaXZpc29yKEdMdWludCB2YW9iaiwgR0x1aW50IGJpbmRpbmdpbmRleCwgR0wKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZh
b2JqKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXJyYXlCaW5kaW5nRGl2aXNvcihjb250ZXh0LCB2
YW9ialBhY2tlZCwgYmluZGluZ2luZGV4LCBkaXZpc29yKSk7CkBAIC0zMTQ5LDEwICszMTUzLDEw
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXJyYXlFbGVtZW50QnVmZmVyKEdMdWludCB2YW9i
aiwgR0x1aW50IGJ1ZmZlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVy
dGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRl
eEFycmF5SUQ+KHZhb2JqKTsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVmVy
dGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VmVydGV4QXJyYXlJRD4odmFvYmopOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VmVydGV4QXJyYXlFbGVtZW50QnVmZmVyKGNvbnRleHQsIHZhb2JqUGFja2VkLCBidWZmZXJQYWNr
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMTc3LDEwICsz
MTgxLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXIoR0x1aW50
IHZhb2JqLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlE
IHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4o
dmFvYmopOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBcnJheUlE
IHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
cnJheUlEPih2YW9iaik7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBcnJh
eVZlcnRleEJ1ZmZlcihjb250ZXh0LCB2YW9ialBhY2tlZCwgYmluZGluZ2luZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyUGFja2VkLCBvZmZzZXQsIHN0cmlkZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0zMjEwLDEwICszMjE0LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXJyYXlWZXJ0ZXhC
dWZmZXJzKEdMdWludCB2YW9iaiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZl
cnRleEFycmF5SUQ+KHZhb2JqKTsKLSAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOworICAgICAgICBjb25zdCBCdWZm
ZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25z
dCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXJzKGNvbnRleHQsIHZh
b2JqUGFja2VkLCBmaXJzdCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc1BhY2tlZCwgb2Zmc2V0cywgc3Ry
aWRlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNl9hdXRvZ2VuLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1
dG9nZW4uY3BwCmluZGV4IGNmZGExYjlmOWQ2YjZjYmJkMGQ4NmU2OTIxNThlYjhmODE2Y2U1ODMu
LjkzMzVhNGJhYjNmNDBjYTViMmY0ZTViNDdhM2ZlMGYxNTZmY2QwMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1dG9n
ZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2lu
dHNfZ2xfNF82X2F1dG9nZW4uY3BwCkBAIC00Miw4ICs0Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
TXVsdGlEcmF3QXJyYXlzSW5kaXJlY3RDb3VudChHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luZGlyZWN0Q291bnQoY29udGV4dCwgbW9kZSwgaW5k
aXJlY3QsIGRyYXdjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZHJhd2NvdW50LCBzdHJpZGUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzIsOCArNzIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11
bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3VudChHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3VudCgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZSwgdHlwZSwgaW5kaXJlY3QsIGRyYXdjb3Vu
dCwgbWF4ZHJhd2NvdW50LCBzdHJpZGUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
OTUsOCArOTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvbHlnb25PZmZzZXRDbGFtcChHTGZsb2F0
IGZhY3RvciwgR0xmbG9hdCB1bml0cywgR0xmbG9hdCBjbGFtcAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUG9seWdvbk9mZnNldENsYW1wKGNvbnRleHQsIGZhY3RvciwgdW5pdHMsIGNsYW1wKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTIyLDcgKzEyMiw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgU3BlY2lhbGl6ZVNoYWRlcihHTHVpbnQgc2hhZGVyLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZh
bGlkYXRlU3BlY2lhbGl6ZVNoYWRlcihjb250ZXh0LCBzaGFkZXIsIHBFbnRyeVBvaW50LCBudW1T
cGVjaWFsaXphdGlvbkNvbnN0YW50cywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi5nbmkKaW5kZXggZGM0YTAxMTdhMGViN2VjMGY3YWY0ODU2YzY1OGIxM2IxZjJkY2NkYi4u
YjBhN2U4ZmJjYWRjNzMwNzQ3YjA4YTIwMjE1YjgxNWVhMGRkNDM1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi5nbmkKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi5nbmkKQEAgLTE3Niw2ICsxNzYsNyBAQCBsaWJhbmds
ZV9pbmNsdWRlcyA9IFsKICAgImluY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNWay5oIiwKICAgImlu
Y2x1ZGUvcGxhdGZvcm0vRnJvbnRlbmRGZWF0dXJlcy5oIiwKICAgImluY2x1ZGUvcGxhdGZvcm0v
UGxhdGZvcm0uaCIsCisgICJpbmNsdWRlL3Z1bGthbi92dWxrYW5fZnVjaHNpYV9leHQuaCIsCiBd
CiAKIGxpYmFuZ2xlX2hlYWRlcnMgPSBbCkBAIC0yMjgsMTAgKzIyOSwxMCBAQCBsaWJhbmdsZV9o
ZWFkZXJzID0gWwogICAic3JjL2xpYkFOR0xFL0dMRVMxU2hhZGVycy5pbmMiLAogICAic3JjL2xp
YkFOR0xFL0dMRVMxU3RhdGUuaCIsCiAgICJzcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgi
LAotICAic3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgiLAogICAic3JjL2xpYkFO
R0xFL0ltYWdlLmgiLAogICAic3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguaCIsCiAgICJzcmMvbGli
QU5HTEUvSW5kZXhSYW5nZUNhY2hlLmgiLAorICAic3JjL2xpYkFOR0xFL0luZm9Mb2cuaCIsCiAg
ICJzcmMvbGliQU5HTEUvTG9nZ2luZ0Fubm90YXRvci5oIiwKICAgInNyYy9saWJBTkdMRS9NZW1v
cnlPYmplY3QuaCIsCiAgICJzcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hlLmgiLApAQCAt
MjQzLDggKzI0NCw4IEBAIGxpYmFuZ2xlX2hlYWRlcnMgPSBbCiAgICJzcmMvbGliQU5HTEUvT3Zl
cmxheV9hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvT3ZlcmxheV9mb250X2F1dG9nZW4u
Y3BwIiwKICAgInNyYy9saWJBTkdMRS9PdmVybGF5X2ZvbnRfYXV0b2dlbi5oIiwKLSAgInNyYy9s
aWJBTkdMRS9QYXRoLmgiLAogICAic3JjL2xpYkFOR0xFL1Byb2dyYW0uaCIsCisgICJzcmMvbGli
QU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUuaCIsCiAgICJzcmMvbGliQU5HTEUvUHJvZ3JhbUxpbmtl
ZFJlc291cmNlcy5oIiwKICAgInNyYy9saWJBTkdMRS9Qcm9ncmFtUGlwZWxpbmUuaCIsCiAgICJz
cmMvbGliQU5HTEUvUXVlcnkuaCIsCkBAIC0yOTcsNyArMjk4LDYgQEAgbGliYW5nbGVfaGVhZGVy
cyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvTWVtb3J5T2JqZWN0SW1wbC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9PdmVybGF5SW1wbC5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5o
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIiwKICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9Qcm9ncmFtUGlwZWxpbmVJbXBsLmgiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL1F1ZXJ5SW1wbC5oIiwKQEAgLTM3NCw3ICszNzQsNiBAQCBsaWJhbmdsZV9zb3VyY2Vz
ID0gWwogICAic3JjL2xpYkFOR0xFL0dMRVMxUmVuZGVyZXIuY3BwIiwKICAgInNyYy9saWJBTkdM
RS9HTEVTMVN0YXRlLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCIs
Ci0gICJzcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwIiwKICAgInNyYy9saWJB
TkdMRS9JbWFnZS5jcHAiLAogICAic3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwIiwKICAgInNy
Yy9saWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUuY3BwIiwKQEAgLTM4Miw5ICszODEsOSBAQCBsaWJh
bmdsZV9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL01lbW9yeU9iamVjdC5jcHAiLAogICAi
c3JjL2xpYkFOR0xFL01lbW9yeVByb2dyYW1DYWNoZS5jcHAiLAogICAic3JjL2xpYkFOR0xFL09i
c2VydmVyLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvUGF0aC5jcHAiLAogICAic3JjL2xpYkFOR0xF
L1BsYXRmb3JtLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAiLAorICAic3JjL2xp
YkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvUHJvZ3JhbUxp
bmtlZFJlc291cmNlcy5jcHAiLAogICAic3JjL2xpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5jcHAi
LAogICAic3JjL2xpYkFOR0xFL1F1ZXJ5LmNwcCIsCkBAIC00MTMsNyArNDEyLDYgQEAgbGliYW5n
bGVfc291cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmNwcCIsCiAg
ICJzcmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L0NvbnRleHRJbXBsLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxz
LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5jcHAiLAogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwIiwKQEAgLTQyMSw2ICs0MTksNyBAQCBsaWJh
bmdsZV9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1NoYWRlckltcGwuY3Bw
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZHJpdmVyX3V0aWxzLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5j
dGlvbnNfdGFibGVfYXV0b2dlbi5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRl
cmVyX3V0aWxzLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAiLApAQCAt
NDMyLDE4ICs0MzEsMTggQEAgbGliYW5nbGVfc291cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS92
YWxpZGF0aW9uRVMzMi5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FU0VYVC5jcHAi
LAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEuY3BwIiwKLSAgInNyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0wyLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMy5jcHAiLAot
ICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQuY3BwIiwKICAgInNyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wxMS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEyLmNwcCIsCisg
ICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTMuY3BwIiwKICAgInNyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wxNC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1LmNwcCIsCi0g
ICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTMuY3BwIiwKKyAgInNyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wyLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMjEuY3BwIiwKKyAg
InNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMMzEuY3BwIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMi5jcHAiLAogICAi
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzLmNwcCIsCisgICJzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQxLmNwcCIsCiAgICJz
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDIuY3BwIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0w0My5jcHAiLApAQCAtNDY4LDcgKzQ2Nyw2IEBAIGxpYmFuZ2xlX2QzZF9zaGFyZWRfc291
cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0ltYWdlMkRITFNM
LmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5jcHAiLAogICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5oIiwKLSAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0ZyYW1lYnVmZmVyRDNELmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29t
cGlsZXIuY3BwIiwKQEAgLTQ4MywxMiArNDgxLDEyIEBAIGxpYmFuZ2xlX2QzZF9zaGFyZWRfc291
cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmgi
LAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcCIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIsCisgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9SZW5kZXJUYXJnZXREM0QuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Jl
bmRlcmJ1ZmZlckQzRC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJi
dWZmZXJEM0QuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNw
cCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgiLAotICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJUYXJnZXREM0QuaCIsCi0gICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9TYW1wbGVyRDNELmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9T
aGFkZXJEM0QuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgi
LApAQCAtNTA1LDYgKzUwMyw3IEBAIGxpYmFuZ2xlX2QzZF9zaGFyZWRfc291cmNlcyA9IFsKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmgiLAogICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAiLAogICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIsCiBdCiAKIGxpYmFuZ2xlX2QzZDlfc291cmNlcyA9
IFsKQEAgLTUxOCw4ICs1MTcsNiBAQCBsaWJhbmdsZV9kM2Q5X3NvdXJjZXMgPSBbCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRGVidWdBbm5vdGF0b3I5LmgiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZlbmNlOS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0ZlbmNlOS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9mb3JtYXR1dGlsczkuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9mb3JtYXR1dGlsczkuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJh
bWVidWZmZXI5LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVi
dWZmZXI5LmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdlOS5jcHAi
LApAQCAtNTMwLDIzICs1MjcsMTMgQEAgbGliYW5nbGVfZDNkOV9zb3VyY2VzID0gWwogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRvdzkuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1JlbmRlcmVyOS5jcHAiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Jl
bmRlcmVyOS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlf
dXRpbHMuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlf
dXRpbHMuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0
OS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlclRhcmdldDku
aCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcCIsCisg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckNhY2hlLmgiLAogICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckV4ZWN1dGFibGU5LmNwcCIsCiAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyRXhlY3V0YWJsZTkuaCIsCi0gICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaCIs
Ci0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21w
b25lbnRtYXNrcHJlbXVsdHBzLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3VubXVsdHBzLmgiLAotICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCIsCi0g
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFu
Y2VwcmVtdWx0cHMuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVy
cy9jb21waWxlZC9sdW1pbmFuY2V1bm11bHRwcy5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCIsCi0gICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiLAog
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuY3BwIiwKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgiLAogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwIiwKQEAgLTU1Niw5ICs1
NDMsMjEgQEAgbGliYW5nbGVfZDNkOV9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L1ZlcnRleEFycmF5OS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9WZXJ0ZXhCdWZmZXI5LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvVmVydGV4QnVmZmVyOS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS92ZXJ0ZXhjb252ZXJzaW9uLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9yZW5kZXJlcjlfdXRpbHMuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHJlbXVsdHBzLmgiLAorICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3Bz
LmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQv
Y29tcG9uZW50bWFza3VubXVsdHBzLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHJlbXVsdHBzLmgiLAorICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCIsCisg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFu
Y2V1bm11bHRwcy5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgiLAorICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L3ZlcnRleGNvbnZlcnNpb24uaCIsCiBdCiAKIGxpYmFuZ2xlX2QzZDEx
X3NvdXJjZXMgPSBbCkBAIC01NzMsMTUgKzU3MiwxMCBAQCBsaWJhbmdsZV9kM2QxMV9zb3VyY2Vz
ID0gWwogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCIsCiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3RhdG9yMTEuY3BwIiwK
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5oIiwK
LSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9n
ZW4uY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0
X3RhYmxlX2F1dG9nZW4uY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
ZHhnaV9zdXBwb3J0X3RhYmxlLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9FeHRlcm5hbEltYWdlU2libGluZ0ltcGwxMS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9FeHRlcm5hbEltYWdlU2libGluZ0ltcGwxMS5oIiwKICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2UxMS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9mb3JtYXR1dGlsczExLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0ZyYW1lYnVmZmVyMTEuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvRnJhbWVidWZmZXIxMS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
SW1hZ2UxMS5jcHAiLApAQCAtNTkwLDkgKzU4NCw5IEBAIGxpYmFuZ2xlX2QzZDExX3NvdXJjZXMg
PSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0luZGV4QnVmZmVyMTEuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3Bw
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5o
IiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL01hcHBlZFN1YnJlc291cmNlVmVy
aWZpZXIxMS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9NYXBwZWRT
dWJyZXNvdXJjZVZlcmlmaWVyMTEuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL05hdGl2ZVdpbmRvdzExLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9QaXhlbFRyYW5zZmVyMTEuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUGl4ZWxUcmFuc2ZlcjExLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9Qcm9ncmFtMTEuY3BwIiwKQEAgLTYwMSwxOCArNTk1LDM5IEBAIGxpYmFuZ2xlX2QzZDExX3Nv
dXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Byb2dyYW1QaXBl
bGluZTExLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmNw
cCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuaCIsCi0gICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwIiwKLSAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIiwKLSAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAiLAotICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiLAogICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmNwcCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmNwcCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiLAorICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1Jlc291cmNlTWFuYWdlcjExLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1Jlc291cmNlTWFuYWdlcjExLmgiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwIiwKICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvU2hhZGVyRXhlY3V0YWJsZTExLmgiLAorICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAiLAorICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oIiwKKyAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmNwcCIsCisgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZS5o
IiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3BwIiwK
KyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCIsCisgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3BwIiwKKyAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oIiwKKyAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5jcHAi
LAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazEx
LmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuY3BwIiwKKyAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmgiLAorICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcCIsCisgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuaCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgiLAorICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAiLAorICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuaCIsCisgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZV9hdXRvZ2VuLmNw
cCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuY3Bw
IiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIiwK
KyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAi
LAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgi
LAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2J1
ZmZlcnRvdGV4dHVyZTExX2dzLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzRmLmgiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZlcnRvdGV4dHVy
ZTExX3BzXzRpLmgiLApAQCAtNjY3LDMzICs2ODIsMTcgQEAgbGliYW5nbGVfZDNkMTFfc291cmNl
cyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9zd2l6emxldWkyZGFycmF5cHMuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRwcy5oIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxldWkzZHBzLmgiLAotICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAiLAotICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oIiwKLSAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmNw
cCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNE
VGV4dHVyZS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWlu
MTEuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEu
aCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3Rh
YmxlLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9y
bWF0X3RhYmxlLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJl
X2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX3V0aWxzLmgiLAotICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcCIsCi0gICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuaCIsCi0gICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuY3BwIiwKLSAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5oIiwKLSAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcCIsCi0gICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9WZXJ0ZXhCdWZmZXIxMS5jcHAiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9WZXJ0ZXhCdWZmZXIxMS5oIiwKIF0KIAogbGliYW5nbGVfZDNkMTFfd2luMzJfc291cmNl
cyA9IFsKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2luMzIvTmF0aXZlV2lu
ZG93MTFXaW4zMi5jcHAiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4z
Mi9OYXRpdmVXaW5kb3cxMVdpbjMyLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9jb252ZXJnZWQvQ29tcG9zaXRvck5hdGl2ZVdpbmRvdzExLmNwcCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvbnZlcmdlZC9Db21wb3NpdG9yTmF0aXZlV2luZG93
MTEuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdp
bmRvdzExV2luMzIuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
MzIvTmF0aXZlV2luZG93MTFXaW4zMi5oIiwKICAgInNyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZv
L1N5c3RlbUluZm8uY3BwIiwKICAgInNyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUlu
Zm8uaCIsCiBdCkBAIC03MzQsOCArNzMzLDYgQEAgbGliYW5nbGVfZ2xfc291cmNlcyA9IFsKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9JbWFnZUdMLmgiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvTWVtb3J5T2JqZWN0R0wuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdM
LmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5jcHAiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL1Byb2dyYW1HTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFt
UGlwZWxpbmVHTC5jcHAiLApAQCAtNzgyLDEwICs3NzksMTAgQEAgbGliYW5nbGVfZ2xfd2dsX3Nv
dXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0NvbnRleHRXR0wuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0QzRFRleHR1cmVTdXJmYWNlV0dMLmNw
cCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0QzRFRleHR1cmVTdXJmYWNlV0dM
LmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNwcCIsCi0g
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmNwcCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJm
YWNlV0dMLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNw
cCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCIsCiAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0aW9uc1dHTC5jcHAiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuaCIsCiAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmNwcCIsCkBAIC04MDYsMTAgKzgwMywx
MCBAQCBsaWJhbmdsZV9nbF9nbHhfc291cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9nbHgvRGlzcGxheUdMWC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
RnVuY3Rpb25zR0xYLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0
aW9uc0dMWC5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUmVuZGVyZXJHTFgu
aCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1JlbmRlcmVyR0xYLmNwcCIsCiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmNwcCIsCiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmgiLAorICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9SZW5kZXJlckdMWC5jcHAiLAorICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2dseC9SZW5kZXJlckdMWC5oIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9nbHgvU3VyZmFjZUdMWC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9nbHgvV2luZG93U3VyZmFjZUdMWC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9XaW5kb3dTdXJmYWNlR0xYLmgiLApAQCAtODIzLDEzICs4MjAsMTAgQEAgbGliYW5nbGVf
Z2xfZWdsX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3Bs
YXlFR0wuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5o
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRXh0ZXJuYWxJbWFnZVNpYmxpbmdF
R0wuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2VnbF91dGlscy5jcHAiLAot
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9lZ2xfdXRpbHMuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5jcHAiLAogICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0wuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL0ltYWdlRUdMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L0ltYWdlRUdMLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9mdW5jdGlvbnNl
Z2xfdHlwZWRlZnMuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJT
dXJmYWNlRUdMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJT
dXJmYWNlRUdMLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9SZW5kZXJlckVH
TC5jcHAiLApAQCAtODQwLDYgKzgzNCw5IEBAIGxpYmFuZ2xlX2dsX2VnbF9zb3VyY2VzID0gWwog
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TeW5jRUdMLmgiLAogICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNlRUdMLmNwcCIsCiAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuaCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL2VnbF91dGlscy5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9lZ2xfdXRpbHMuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Z1
bmN0aW9uc2VnbF90eXBlZGVmcy5oIiwKIF0KIGxpYmFuZ2xlX2dsX2VnbF9kbF9zb3VyY2VzID0g
WwogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5jcHAiLApA
QCAtODY1LDE2ICs4NjIsMTYgQEAgbGliYW5nbGVfZ2xfY2dsX3NvdXJjZXMgPSBbCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0NvbnRleHRDR0wuaCIsCiAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EZXZpY2VDR0wuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rp
c3BsYXlDR0wubW0iLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dM
LmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tIiwKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvSU9TdXJmYWNlU3VyZmFjZUNHTC5jcHAiLAog
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmgiLAot
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAiLAotICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5oIiwKICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwIiwKICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuaCIsCi0gICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0iLAorICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9SZW5kZXJlckNHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
V2luZG93U3VyZmFjZUNHTC5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2lu
ZG93U3VyZmFjZUNHTC5tbSIsCiBdCiAKIGxpYmFuZ2xlX21hY19zb3VyY2VzID0gWyAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlsc19tYWMubW0iIF0KQEAgLTkzMCw4ICs5MjcsNiBA
QCBsaWJhbmdsZV9udWxsX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9GcmFtZWJ1ZmZlck5VTEwuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFn
ZU5VTEwuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5oIiwK
LSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmNwcCIsCi0gICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1Byb2dyYW1OVUxMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Q
cm9ncmFtTlVMTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1QaXBl
bGluZU5VTEwuY3BwIiwKQEAgLTk5MiwxNiArOTg3LDE2IEBAIGxpYmdsX3NvdXJjZXMgPSBbCiAg
ICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfM19hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzRfM19hdXRvZ2VuLmgiLAogICAic3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF80XzRfYXV0b2dlbi5jcHAiLAotICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80
XzZfYXV0b2dlbi5jcHAiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzRfYXV0b2dl
bi5oIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81X2F1dG9nZW4uY3BwIiwKICAg
InNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81X2F1dG9nZW4uaCIsCisgICJzcmMvbGliR0wv
ZW50cnlfcG9pbnRzX2dsXzRfNl9hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzRfNl9hdXRvZ2VuLmgiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c193Z2wuY3Bw
IiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfd2dsLmgiLAorICAic3JjL2xpYkdML2xpYkdM
LnJjIiwKICAgInNyYy9saWJHTC9saWJHTF9hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGliR0wvbGli
R0xfYXV0b2dlbi5kZWYiLAotICAic3JjL2xpYkdML2xpYkdMLnJjIiwKICAgInNyYy9saWJHTC9w
cm9jX3RhYmxlX3dnbC5oIiwKICAgInNyYy9saWJHTC9wcm9jX3RhYmxlX3dnbF9hdXRvZ2VuLmNw
cCIsCiAgICJzcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAiLApAQCAtMTAzMiw4ICsxMDI3
LDggQEAgbGliZ2xlc3YyX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50
c19nbGVzX2V4dF9hdXRvZ2VuLmgiLAogICAic3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3Bw
IiwKICAgInNyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmgiLAotICAic3JjL2xpYkdMRVN2Mi9s
aWJHTEVTdjJfYXV0b2dlbi5jcHAiLAogICAic3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIucmMiLAor
ICAic3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5jcHAiLAogICAic3JjL2xpYkdMRVN2
Mi9wcm9jX3RhYmxlX2VnbC5oIiwKICAgInNyYy9saWJHTEVTdjIvcHJvY190YWJsZV9lZ2xfYXV0
b2dlbi5jcHAiLAogICAic3JjL2xpYkdMRVN2Mi9yZXNvdXJjZS5oIiwKQEAgLTEwNDcsMTAgKzEw
NDIsMTAgQEAgbGliZ2xlc3YxX2NtX3NvdXJjZXMgPSBbCiBdCiAKIGxpYmVnbF9zb3VyY2VzID0g
WworICAic3JjL2xpYkVHTC9lZ2xfbG9hZGVyX2F1dG9nZW4uaCIsCiAgICJzcmMvbGliRUdML2xp
YkVHTC5jcHAiLAogICAic3JjL2xpYkVHTC9saWJFR0wucmMiLAogICAic3JjL2xpYkVHTC9yZXNv
dXJjZS5oIiwKICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbC5oIiwKICAgInNyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQuaCIsCi0gICJzcmMvbGliRUdML2VnbF9sb2Fk
ZXJfYXV0b2dlbi5oIiwKIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMV8wX2F1dG9nZW4uY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18xXzBfYXV0b2dl
bi5jcHAKaW5kZXggOTgzMjY5ZjVjZTcyYTQ5YzY0NDQ1YmI4MmJjZmZhYWY2YjNlOTlkZi4uM2Nj
MzVjNTkxNGRjODA4YjAwYzU0MzE1NWFhMWVlNTRkZTQ3NGIyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18xXzBfYXV0
b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18xXzBfYXV0b2dlbi5jcHAKQEAgLTI4LDggKzI4LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBBbHBoYUZ1bmMoR0xlbnVtIGZ1bmMsIEdMZmxvYXQgcmVmKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QWxwaGFUZXN0RnVuYz4oZnVuYyk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxBbHBoYVRlc3RGdW5jPihmdW5jKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFscGhh
RnVuYyhjb250ZXh0LCBmdW5jUGFja2VkLCByZWYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtNDgsOCArNDgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEFscGhhRnVuY3goR0xlbnVtIGZ1
bmMsIEdMZml4ZWQgcmVmKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBBbHBo
YVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QWxwaGFU
ZXN0RnVuYz4oZnVuYyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBBbHBo
YVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxBbHBoYVRlc3RGdW5jPihmdW5jKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFscGhhRnVuY3goY29udGV4dCwgZnVuY1BhY2tlZCwg
cmVmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBDbGVhckNvbG9yeChHTGZpeGVkIHJlZCwgR0xmaXhlZCBncmVlbiwgR0xmaXhl
ZCBibHVlLCBHTGZpeGVkIGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDbGVhckNvbG9yeChjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ2xlYXJEZXB0aHgoR0xmaXhlZCBkZXB0aCkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyRGVwdGh4KGNvbnRleHQsIGRlcHRoKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA2LDcgKzEwNiw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ2xpZW50QWN0aXZlVGV4dHVyZShHTGVudW0gdGV4dHVyZSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGllbnRB
Y3RpdmVUZXh0dXJlKGNvbnRleHQsIHRleHR1cmUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xpcFBsYW5lZihHTGVudW0g
cCwgY29uc3QgR0xmbG9hdCAqZXFuKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlQ2xpcFBsYW5lZihjb250ZXh0LCBwLCBlcW4pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBD
bGlwUGxhbmV4KEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xpcFBsYW5l
eChjb250ZXh0LCBwbGFuZSwgZXF1YXRpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0ZihHTGZsb2F0IHJlZCwg
R0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0Zihjb250ZXh0
LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xODYsNyArMTg2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjR1YihHTHVieXRlIHJlZCwg
R0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGgKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjR1Yihjb250ZXh0
LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yMDcsNyArMjA3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjR4KEdMZml4ZWQgcmVkLCBH
TGZpeGVkIGdyZWVuLCBHTGZpeGVkIGJsdWUsIEdMZml4ZWQgYWxwaGEKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjR4KGNvbnRleHQs
IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTIyOSw5ICsyMjksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yUG9pbnRlcihHTGludCBzaXpl
LCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0
ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29sb3JQb2ludGVyKGNvbnRleHQsIHNpemUsIHR5cGVQ
YWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2V4KEdM
Zml4ZWQgbiwgR0xmaXhlZCBmKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRGVwdGhSYW5nZXgoY29udGV4dCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTI2Niw4ICsyNjYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc2Fi
bGVDbGllbnRTdGF0ZShHTGVudW0gYXJyYXkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCAgICAgICAgICAgICA9IEZy
b21HTDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFycmF5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCA9IEZyb21H
TDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFycmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVDbGllbnRTdGF0ZShjb250
ZXh0LCBhcnJheVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yODYsOCAr
Mjg2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVDbGllbnRTdGF0ZShHTGVudW0gYXJyYXkp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIENsaWVudFZlcnRleEFycmF5VHlw
ZSBhcnJheVBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+
KGFycmF5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIENsaWVudFZlcnRl
eEFycmF5VHlwZSBhcnJheVBhY2tlZCA9IEZyb21HTDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFy
cmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUVuYWJsZUNsaWVudFN0YXRlKGNvbnRleHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZv
Z2YoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRm9nZihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBGb2dmdihHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZvZ2Z2KGNvbnRleHQsIHBuYW1l
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNDIs
NyArMzQyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGb2d4KEdMZW51bSBwbmFtZSwgR0xmaXhlZCBw
YXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZvZ3goY29u
dGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRm9neHYoR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZpeGVkICpwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUZvZ3h2KGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEZydXN0dW1mKEdMZmxvYXQgbCwgR0xmbG9hdCByLCBHTGZsb2F0IGIsIEdMZmxvYXQgdCwgR0xm
bG9hdCBuLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUZydXN0dW1mKGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRnJ1c3R1
bXgoR0xmaXhlZCBsLCBHTGZpeGVkIHIsIEdMZml4ZWQgYiwgR0xmaXhlZCB0LCBHTGZpeGVkIG4s
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RnJ1c3R1bXgoY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRDbGlwUGxhbmVm
KEdMZW51bSBwbGFuZSwgR0xmbG9hdCAqZXF1YXRpb24pCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Q2xpcFBsYW5lZihjb250ZXh0LCBw
bGFuZSwgZXF1YXRpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDQxLDcgKzQ0
MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Q2xpcFBsYW5leChHTGVudW0gcGxhbmUsIEdMZml4
ZWQgKmVxdWF0aW9uKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldENsaXBQbGFuZXgoY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEZpeGVkdihHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZpeGVkdihjb250ZXh0LCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDgwLDgg
KzQ4MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TGlnaHRmdihHTGVudW0gbGlnaHQsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRMaWdodGZ2KGNvbnRleHQs
IGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTUwMiw4ICs1MDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldExpZ2h0eHYoR0xlbnVtIGxp
Z2h0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TGlnaHR4
dihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC01MjQsOSArNTI0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNYXRlcmlh
bGZ2KEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRNYXRlcmlhbGZ2KGNvbnRleHQs
IGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC01NDYsOSArNTQ2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNYXRlcmlh
bHh2KEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRNYXRlcmlhbHh2KGNvbnRleHQs
IGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC01NjksMTAgKzU2OSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleEVu
dmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAg
ICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVF
bnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBu
YW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0VGV4RW52ZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTkyLDEwICs1OTIs
MTAgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhFbnZpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBu
YW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5h
bWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAg
VGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhFbnZpdihjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC02MTYsMTAgKzYxNiwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRl
eEVudnh2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsK
LSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVFbnZU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+
KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0VGV4RW52eHYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjQwLDkgKzY0
MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyeHYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJ4dihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NjAsNyAr
NjYwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVsZihHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTGlnaHRNb2RlbGYoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExpZ2h0
TW9kZWxmdihHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodE1vZGVsZnYo
Y29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02
OTksNyArNjk5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVseChHTGVudW0gcG5hbWUs
IEdMZml4ZWQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTGlnaHRNb2RlbHgoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IExpZ2h0TW9kZWx4dihHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9k
ZWx4dihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNzM5LDggKzczOSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRmKEdMZW51bSBsaWdodCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodGYoY29udGV4dCwg
bGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC03NjMsOCArNzYzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdodGZ2KEdMZW51bSBsaWdodCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0ZnYo
Y29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNzg0LDggKzc4NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHR4KEdMZW51
bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodHgo
Y29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC04MDgsOCArODA4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdodHh2KEdMZW51
bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUxpZ2h0eHYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlu
ZVdpZHRoeChHTGZpeGVkIHdpZHRoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTGluZVdpZHRoeChjb250ZXh0LCB3aWR0aCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTg0NCw3ICs4NDQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExv
YWRJZGVudGl0eSgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVM
b2FkSWRlbnRpdHkoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExvYWRNYXRyaXhmKGNvbnN0
IEdMZmxvYXQgKm0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVM
b2FkTWF0cml4Zihjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTG9hZE1hdHJpeHgoY29u
c3QgR0xmaXhlZCAqbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUxvYWRNYXRyaXh4KGNvbnRleHQsIG0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC04OTgsOCArODk4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBMb2dpY09wKEdMZW51
bSBvcGNvZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIExvZ2ljYWxPcGVy
YXRpb24gb3Bjb2RlUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxMb2dpY2FsT3BlcmF0
aW9uPihvcGNvZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTG9naWNh
bE9wZXJhdGlvbiBvcGNvZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
TG9naWNhbE9wZXJhdGlvbj4ob3Bjb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTG9naWNPcChjb250ZXh0LCBvcGNvZGVQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05MTgsOCArOTE4LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBNYXRlcmlhbGYoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihw
bmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBNYXRlcmlhbFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlh
bFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWxmKGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2Vk
LCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05NDIsOCArOTQyLDggQEAg
dm9pZCBHTF9BUElFTlRSWSBNYXRlcmlhbGZ2KEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
TWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1h
dGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWxmdihjb250ZXh0
LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTk2Myw4ICs5NjMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFseChHTGVudW0gZmFj
ZSwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlh
bHgoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTk4Niw4ICs5ODYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFseHYo
R0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW0pCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+
KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU1hdGVyaWFseHYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEwMDYsOCArMTAwNiw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTWF0cml4TW9kZShHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgTWF0cml4VHlwZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPE1hdHJpeFR5cGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgTWF0cml4VHlwZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8TWF0cml4VHlwZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdHJpeE1vZGUoY29udGV4dCwgbW9kZVBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTXVsdE1hdHJpeGYoY29uc3QgR0xmbG9hdCAqbSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRNYXRyaXhmKGNvbnRleHQsIG0p
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDQzLDcgKzEwNDMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRNYXRyaXh4KGNvbnN0IEdMZml4ZWQgKm0pCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0TWF0cml4eChjb250ZXh0
LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA2Myw3ICsx
MDYzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkNGYoR0xlbnVtIHRhcmdldCwg
R0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgciwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkNGYoY29udGV4dCwg
dGFyZ2V0LCBzLCB0LCByLCBxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEwODQs
NyArMTA4NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDR4KEdMZW51bSB0ZXh0
dXJlLCBHTGZpeGVkIHMsIEdMZml4ZWQgdCwgR0xmaXhlZCByCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDR4KGNvbnRl
eHQsIHRleHR1cmUsIHMsIHQsIHIsIHEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MTEwMyw3ICsxMTAzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwzZihHTGZsb2F0IG54LCBH
TGZsb2F0IG55LCBHTGZsb2F0IG56KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTm9ybWFsM2YoY29udGV4dCwgbngsIG55LCBueikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExMjEsNyArMTEyMSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgTm9ybWFsM3goR0xmaXhlZCBueCwgR0xmaXhlZCBueSwgR0xmaXhlZCBueikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDN4KGNvbnRleHQsIG54LCBu
eSwgbnopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTQzLDkg
KzExNDMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbFBvaW50ZXIoR0xlbnVtIHR5cGUsIEdM
c2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRy
aWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0
ZXhBdHRyaWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlTm9ybWFsUG9pbnRlcihjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJp
ZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
MTY1LDcgKzExNjUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE9ydGhvZihHTGZsb2F0IGwsIEdMZmxv
YXQgciwgR0xmbG9hdCBiLCBHTGZsb2F0IHQsIEdMZmxvYXQgbiwgRwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlT3J0aG9mKGNvbnRleHQsIGwsIHIsIGIsIHQsIG4s
IGYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTg1LDcgKzEx
ODUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE9ydGhveChHTGZpeGVkIGwsIEdMZml4ZWQgciwgR0xm
aXhlZCBiLCBHTGZpeGVkIHQsIEdMZml4ZWQgbiwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlT3J0aG94KGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMjAzLDggKzEyMDMsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFyYW1ldGVyZihHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBvaW50UGFyYW1ldGVyIHBu
YW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5h
bWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUG9pbnRQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJh
bWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZihjb250ZXh0LCBwbmFtZVBhY2tlZCwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTIyNCw4ICsxMjI0LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRlcmZ2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQb2ludFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0
ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBv
aW50UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmZ2KGNvbnRleHQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTI0NCw4ICsxMjQ0
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRlcngoR0xlbnVtIHBuYW1lLCBHTGZp
eGVkIHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQb2ludFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0
ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBv
aW50UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFBhcmFtZXRlcngoY29udGV4dCwgcG5hbWVQYWNr
ZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEyNjUsOCArMTI2NSw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRQYXJhbWV0ZXJ4dihHTGVudW0gcG5hbWUsIGNvbnN0
IEdMZml4ZWQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUG9p
bnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50
UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQ
b2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJ4dihjb250ZXh0LCBw
bmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEyODQs
NyArMTI4NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRTaXplKEdMZmxvYXQgc2l6ZSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50U2l6ZShjb250ZXh0
LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTMwMSw3
ICsxMzAxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb2ludFNpemV4KEdMZml4ZWQgc2l6ZSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50U2l6ZXgoY29udGV4
dCwgc2l6ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMTks
NyArMTMxOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9seWdvbk9mZnNldHgoR0xmaXhlZCBmYWN0
b3IsIEdMZml4ZWQgdW5pdHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUG9seWdvbk9mZnNldHgoY29udGV4dCwgZmFjdG9yLCB1bml0cykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzM3LDcgKzEzMzcsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFBvcE1hdHJpeCgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVQb3BNYXRyaXgoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTEzNTQsNyArMTM1NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHVzaE1hdHJp
eCgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQdXNoTWF0cml4
KGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzcz
LDcgKzEzNzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJvdGF0ZWYoR0xmbG9hdCBhbmdsZSwgR0xm
bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVJvdGF0ZWYoY29udGV4dCwgYW5nbGUsIHgsIHksIHopKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzkzLDcgKzEzOTMsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFJvdGF0ZXgoR0xmaXhlZCBhbmdsZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHks
IEdMZml4ZWQgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJv
dGF0ZXgoY29udGV4dCwgYW5nbGUsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xNDExLDcgKzE0MTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBs
ZUNvdmVyYWdleChHTGNsYW1weCB2YWx1ZSwgR0xib29sZWFuIGludmVydCkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1wbGVDb3ZlcmFn
ZXgoY29udGV4dCwgdmFsdWUsIGludmVydCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xNDMwLDcgKzE0MzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNjYWxlZihHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlU2NhbGVmKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNjYWxl
eChHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlU2NhbGV4KGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNDY2LDggKzE0NjYsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIFNoYWRlTW9kZWwoR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRpbmdNb2RlbCBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkaW5nTW9kZWw+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgU2hhZGluZ01vZGVsIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGluZ01vZGVsPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2hhZGVNb2RlbChjb250ZXh0LCBtb2RlUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQ4OCw5ICsxNDg4
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZFBvaW50ZXIoR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRy
aWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4Q29vcmRQb2ludGVyKGNvbnRleHQsIHNpemUsIHR5cGVQYWNrZWQsIHN0
cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTE1MDksMTAgKzE1MDksMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZmKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFy
YW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQp
OworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudmYoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xNTMzLDEwICsxNTMzLDEwIEBAIHZvaWQgR0xfQVBJRU5U
UlkgVGV4RW52ZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpw
YXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0
Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVu
dlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVUZXhFbnZmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
NTU1LDEwICsxNTU1LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4RW52aShHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0
ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Cisg
ICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4RW52aShjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTE1ODAsMTAgKzE1ODAsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBU
ZXhFbnZpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJn
ZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVy
ZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBw
bmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFt
ZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhFbnZpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjAyLDEw
ICsxNjAyLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4RW52eChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4o
cG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAg
ICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZ4KGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMTYyNiwxMCArMTYyNiwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEVu
dnh2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0
KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVF
bnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5h
bWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0
ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVGV4RW52eHYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTY0OSw5ICsx
NjQ5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJ4KEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFBhcmFtZXRlcngoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjcyLDkgKzE2NzIsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcnh2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVGV4UGFyYW1ldGVyeHYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTY5Miw3ICsxNjkyLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBUcmFuc2xhdGVmKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZs
b2F0IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUcmFuc2xh
dGVmKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0xNzEwLDcgKzE3MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRyYW5zbGF0ZXgoR0xm
aXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVRyYW5zbGF0ZXgoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3MzEsOSArMTczMSw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4UG9pbnRlcihHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBz
dHJpZGUsIGNvbnN0IHZvCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRl
eEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
dHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVW
ZXJ0ZXhQb2ludGVyKGNvbnRleHQsIHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2F1
dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZ2xlc18yXzBfYXV0b2dlbi5jcHAKaW5kZXggMDkwNzgwNjU2OGQ5ODFiZjI2YmZkYmJk
ODgyNGM4MTY2ZjZhODYwMi4uY2E3NjhkMWU5N2Q2MTk3ODI1ZjAzMzA1YjEwZTQ3Y2JiNTI1MmFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18yXzBfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfYXV0b2dlbi5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBBY3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJl
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQWN0aXZlVGV4dHVy
ZShjb250ZXh0LCB0ZXh0dXJlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtNDYsMTAgKzQ2LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQXR0YWNoU2hhZGVyKEdMdWlu
dCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNo
YWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hh
ZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQXR0YWNoU2hhZGVyKGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTcwLDkgKzcwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQXR0cmliTG9jYXRp
b24oR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyICoKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC05MCw5ICs5MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1
ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgQnVmZmVySUQgYnVm
ZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZm
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmlu
ZGluZz4odGFyZ2V0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kQnVm
ZmVyKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTExMSw5ICsxMTEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFt
ZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAg
ICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlcihjb250ZXh0
LCB0YXJnZXQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMTMxLDkgKzEzMSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFJlbmRl
cmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVm
ZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUJpbmRSZW5kZXJidWZmZXIoY29udGV4dCwgdGFyZ2V0LCByZW5k
ZXJidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0xNTEsMTAgKzE1MSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRUZXh0dXJlKEdMZW51bSB0
YXJnZXQsIEdMdWludCB0ZXh0dXJlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
dGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUJpbmRUZXh0dXJlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3NCw3ICsxNzQsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kQ29sb3IoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4s
IEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkzLDcgKzE5Myw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRXF1YXRpb24oY29udGV4dCwg
bW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIxMiw4ICsy
MTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9k
ZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRXF1
YXRpb25TZXBhcmF0ZShjb250ZXh0LCBtb2RlUkdCLCBtb2RlQWxwaGEpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBCbGVuZEZ1bmMoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRnVuYyhj
b250ZXh0LCBzZmFjdG9yLCBkZmFjdG9yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTI1OSw3ICsyNTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlKEdMZW51
bSBzZmFjdG9yUkdCLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlKGNvbnRleHQsIHNmYWN0b3JSR0IsIGRmYWN0
b3JSR0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNmYWN0b3JBbHBoYSwgZGZhY3RvckFscGhhKSk7CkBAIC0yODQs
MTAgKzI4NCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwg
R0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkICpkYXRhLCBHTAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgQnVmZmVyVXNh
Z2UgdXNhZ2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlclVzYWdl
Pih1c2FnZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAg
ICBCdWZmZXJVc2FnZSB1c2FnZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJVc2FnZT4odXNhZ2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCdWZmZXJEYXRhKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgc2l6ZSwgZGF0YSwgdXNhZ2VQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0zMDksOSArMzA5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdWJE
YXRhKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBvZmZzZXQsIHNpemUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0zMzAsNyArMzMwLDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIENo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xlbnVtIHRhcmdldCkKICAgICBHTGVudW0gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXMoY29udGV4dCwgdGFyZ2V0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyKEdM
Yml0ZmllbGQgbWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUNsZWFyKGNvbnRleHQsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckNvbG9yKEdMZmxv
YXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGVhckNvbG9y
KGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyRGVwdGhmKEdM
ZmxvYXQgZCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFy
RGVwdGhmKGNvbnRleHQsIGQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhclN0ZW5jaWwoR0xpbnQg
cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyU3RlbmNp
bChjb250ZXh0LCBzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NDM0LDcgKzQzNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNrKEdMYm9vbGVhbiByZWQs
IEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3JNYXNrKGNvbnRleHQs
IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTQ1Miw4ICs0NTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXBpbGVTaGFkZXIoR0x1aW50IHNo
YWRlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
c2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoY29udGV4dCwgc2hhZGVyUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ4NCw4ICs0ODQsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAtNTIxLDggKzUyMSw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJn
ZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAgLTU1NSw5ICs1NTUs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleEltYWdlMkQoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTg4LDkgKzU4OCw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MTAsNyArNjEwLDcgQEAgR0x1aW50IEdMX0FQ
SUVOVFJZIENyZWF0ZVByb2dyYW0oKQogICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVQcm9ncmFtKGNvbnRleHQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02MzgsOCArNjM4LDggQEAg
R0x1aW50IEdMX0FQSUVOVFJZIENyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKICAgICBHTHVpbnQg
cmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyVHlwZT4o
dHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJU
eXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q3JlYXRlU2hhZGVyKGNvbnRleHQsIHR5cGVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC02NjYsOCArNjY2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDdWxs
RmFjZShHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQ3Vs
bEZhY2VNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEN1bGxG
YWNlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBDdWxs
RmFjZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxDdWxsRmFjZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVDdWxsRmFjZShjb250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjg2LDggKzY4Niw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRGVsZXRlQnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYnVmZmVycykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZl
cnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQg
Kj4oYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEZWxldGVCdWZmZXJzKGNvbnRleHQsIG4sIGJ1ZmZlcnNQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzA3LDkgKzcwNyw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRGVsZXRlRnJhbWVidWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1
ZmZlcnMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCAgICAgICA9IEZyb21HTDxjb25zdCBGcmFtZWJ1ZmZl
cklEICo+KGZyYW1lYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFt
ZWJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgRnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZl
cnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVEZWxldGVGcmFtZWJ1ZmZlcnMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzI2LDggKzcyNiw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRGVsZXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTc0OCw4ICs3NDgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVu
ZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJi
dWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tl
ZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc2Niw4ICs3NjYs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihz
aGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlRGVsZXRlU2hhZGVyKGNvbnRleHQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC03ODcsOCArNzg3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxl
dGVUZXh0dXJlcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQg
ICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBUZXh0dXJlSUQgKj4odGV4dHVyZXMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJl
c1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlEICo+
KHRleHR1cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZURlbGV0ZVRleHR1cmVzKGNvbnRleHQsIG4sIHRleHR1cmVzUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgwNyw3ICs4MDcsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIERlcHRoRnVuYyhHTGVudW0gZnVuYykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZURlcHRoRnVuYyhjb250ZXh0LCBmdW5jKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRGVwdGhNYXNrKEdMYm9vbGVhbiBmbGFnKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRGVwdGhNYXNrKGNvbnRleHQsIGZsYWcpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NDIsNyArODQyLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBEZXB0aFJhbmdlZihHTGZsb2F0IG4sIEdMZmxvYXQgZikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlcHRoUmFuZ2VmKGNvbnRleHQsIG4sIGYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NjAsMTAgKzg2MCwxMCBAQCB2b2lk
IEdMX0FQSUVOVFJZIERldGFjaFNoYWRlcihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNo
YWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZURldGFjaFNoYWRlcihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04ODEsNyArODgxLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlKEdMZW51bSBjYXApCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlKGNvbnRleHQsIGNhcCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGNvbnRleHQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTkxNyw4ICs5MTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXMoR0xlbnVtIG1v
ZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdBcnJheXMoY29udGV4
dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTk0MCwxMCArOTQwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzKEdMZW51
bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdF
bGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHMoY29udGV4
dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05NjEsNyArOTYxLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBFbmFibGUoR0xlbnVtIGNhcCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUVuYWJsZShjb250ZXh0LCBjYXApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29u
dGV4dCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTk2LDcgKzk5Niw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgRmluaXNoKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUZpbmlzaChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGbHVz
aCgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGbHVzaChjb250
ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTAzOCw4ICsx
MDM4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTGVudW0g
dGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJ
RCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+
KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBSZW5k
ZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJl
bmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRl
eHQsIHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LApAQCAtMTA3MCwxMCAr
MTA3MCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0
YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQg
dGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
ZXh0YXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVU
YXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRh
cmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTA5NCw3ICsxMDk0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGcm9udEZhY2UoR0xl
bnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGcm9u
dEZhY2UoY29udGV4dCwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTExMTIsOCArMTExMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuQnVmZmVycyhHTHNp
emVpIG4sIEdMdWludCAqYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQgKj4oYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5CdWZmZXJzKGNvbnRleHQsIG4sIGJ1
ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTEzMyw4ICsxMTMz
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5GcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQg
KmZyYW1lYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVi
dWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVm
ZmVySUQgKj4oZnJhbWVidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxGcmFtZWJ1ZmZl
cklEICo+KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMoY29udGV4dCwgbiwgZnJhbWVi
dWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTExNTQsOSArMTE1
NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuUmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIEdMdWlu
dCAqcmVuZGVyYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUmVu
ZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgID0gRnJvbUdMPFJlbmRl
cmJ1ZmZlcklEICo+KHJlbmRlcmJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgKnJl
bmRlcmJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVy
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdlblJlbmRlcmJ1ZmZlcnMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExNzQsOCArMTE3NCw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2VuVGV4dHVyZXMoR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgKnRleHR1cmVzUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEICo+KHRleHR1cmVzKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCAqdGV4dHVyZXNQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRCAqPih0
ZXh0dXJlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZW5UZXh0dXJlcyhjb250ZXh0LCBuLCB0ZXh0dXJlc1BhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTk0LDggKzExOTQsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdlbmVyYXRlTWlwbWFwKEdMZW51bSB0YXJnZXQpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuZXJhdGVNaXBtYXAo
Y29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEy
MjQsOSArMTIyNCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlQXR0cmliKEdMdWludCBw
cm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFj
dGl2ZUF0dHJpYihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emUsIHR5cGUsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTI1Niw5ICsx
MjU2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtKEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwg
dHlwZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjg0LDkgKzEyODQs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEF0dGFjaGVkU2hhZGVycyhHTHVpbnQgcHJvZ3JhbSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQgKj4oc2hhZGVycyk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQgKj4oc2hhZGVycyk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dEF0dGFjaGVkU2hhZGVycyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBtYXhDb3VudCwgY291bnQs
IHNoYWRlcnNQYWNrZWQpKTsKQEAgLTEzMDksOCArMTMwOSw4IEBAIEdMaW50IEdMX0FQSUVOVFJZ
IEdldEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCiAg
ICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRBdHRyaWJMb2NhdGlvbihj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTEzMzgsNyArMTMzOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbnYoR0xlbnVt
IHBuYW1lLCBHTGJvb2xlYW4gKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRCb29sZWFudihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzNTgsOSArMTM1OCw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
ckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJC
aW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
QnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM3OCw3ICsxMzc4LDcg
QEAgR0xlbnVtIEdMX0FQSUVOVFJZIEdldEVycm9yKCkKICAgICBHTGVudW0gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RXJyb3IoY29udGV4
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0MDUsNyArMTQw
NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
ZGF0YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZsb2F0
dihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTE0MzEsNyArMTQzMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKQEAg
LTE0NTIsNyArMTQ1Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnYoR0xlbnVtIHBu
YW1lLCBHTGludCAqZGF0YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldEludGVnZXJ2KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQ3Niw4ICsxNDc2LDggQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRQcm9ncmFtSW5mb0xvZyhHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRQcm9ncmFtSW5mb0xvZyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBidWZT
aXplLCBsZW5ndGgsIGluZm9Mb2cpKTsKQEAgLTE1MDAsOSArMTUwMCw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UHJvZ3JhbWl2KEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJv
Z3JhbWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNTIyLDggKzE1MjIsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU0Myw4ICsxNTQzLDggQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3QKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVySW5m
b0xvZyhjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykpOwpA
QCAtMTU3Miw4ICsxNTcyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoR0xlbnVtIHNoYWRlcnR5cGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoY29udGV4dCwgc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByYW5nZSwgcHJlY2lzaW9uKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1OTUs
OCArMTU5NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyU291cmNlKEdMdWludCBzaGFk
ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZlNpemUs
IGxlbmd0aCwgc291cmNlKSk7CkBAIC0xNjE4LDkgKzE2MTgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFNoYWRlcml2KEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyaXYoY29u
dGV4dCwgc2hhZGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMTYzOSw3ICsxNjM5LDcgQEAgY29uc3QgR0x1Ynl0ZSAqR0xf
QVBJRU5UUlkgR2V0U3RyaW5nKEdMZW51bSBuYW1lKQogICAgIGNvbnN0IEdMdWJ5dGUgKnJldHVy
blZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFN0cmlu
Zyhjb250ZXh0LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMTY2OSw5ICsxNjY5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJmdihH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTE2OTEsOSArMTY5MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVy
aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMTcxMyw4ICsxNzEzLDggQEAgR0xpbnQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybUxv
Y2F0aW9uKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCiAgICAgR0xpbnQgcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRVbmlmb3JtTG9jYXRpb24oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzQ0LDE1
ICsxNzQ0LDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHBhcmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWZ2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRV
bmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE3NjYs
MTUgKzE3NjcsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtaXYoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHBhcmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWl2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRV
bmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtaXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE3ODgs
OCArMTc5MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoR0x1
aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwb2luCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBvaW50
ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xODA4LDcgKzE4
MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYmZ2KEdMdWludCBpbmRleCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnYoY29udGV4dCwg
aW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTgy
OCw3ICsxODMwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihjb250
ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xODQ4LDcgKzE4NTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEhpbnQoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVI
aW50KGNvbnRleHQsIHRhcmdldCwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTE4NjYsOCArMTg2OCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0J1
ZmZlcihHTHVpbnQgYnVmZmVyKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0J1ZmZlcihjb250ZXh0LCBidWZm
ZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xODk1
LDcgKzE4OTcsNyBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkKEdMZW51bSBjYXAp
CiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUlzRW5hYmxlZChjb250ZXh0LCBjYXApKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xOTIyLDggKzE5MjQsOCBAQCBHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgSXNGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpCiAgICAgR0xib29sZWFuIHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJ
RCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+
KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEZyYW1l
YnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRnJhbWVidWZmZXIoY29udGV4dCwgZnJh
bWVidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk1MSw4ICsx
OTUzLDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkK
ICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFt
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTk3OSw4
ICsxOTgxLDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUmVuZGVyYnVmZmVyKEdMdWludCBy
ZW5kZXJidWZmZXIpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAg
ICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFj
a2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNSZW5kZXJidWZm
ZXIoY29udGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTIwMDgsOCArMjAxMCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1NoYWRlcihH
THVpbnQgc2hhZGVyKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzU2hhZGVyKGNvbnRl
eHQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTIwMzYsOCArMjAzOCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1RleHR1cmUoR0x1
aW50IHRleHR1cmUpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1RleHR1cmUoY29udGV4dCwgdGV4dHVy
ZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIwNjMs
NyArMjA2NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGluZVdpZHRoKEdMZmxvYXQgd2lkdGgpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaW5lV2lkdGgoY29udGV4
dCwgd2lkdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMDgw
LDggKzIwODIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIExpbmtQcm9ncmFtKEdMdWludCBwcm9ncmFt
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVMaW5rUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxMDAsNyArMjEwMiw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbFN0b3Jl
aShjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MjExOSw3ICsyMTIxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb2x5Z29uT2Zmc2V0KEdMZmxvYXQg
ZmFjdG9yLCBHTGZsb2F0IHVuaXRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvbHlnb25PZmZzZXQoY29udGV4dCwgZmFjdG9yLCB1bml0
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMTQ3LDggKzIxNDksOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFJlYWRQaXhlbHMoR0xpbnQgeCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVJlYWRQaXhlbHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMTY1LDcg
KzIxNjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlbGVhc2VTaGFkZXJDb21waWxlcigpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWxlYXNlU2hhZGVyQ29tcGls
ZXIoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIx
ODksNyArMjE5MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZShHTGVu
dW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShjb250ZXh0LCB0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CkBAIC0yMjEwLDcgKzIyMTIsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZUNvdmVyYWdlKEdMZmxvYXQgdmFsdWUsIEdMYm9vbGVh
biBpbnZlcnQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2UoY29udGV4dCwgdmFsdWUsIGludmVydCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMjMwLDcgKzIyMzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFNjaXNzb3IoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
U2Npc3Nvcihjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTIyNTYsOCArMjI1OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2hhZGVyQmlu
YXJ5KEdMc2l6ZWkgY291bnQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNv
bnN0IFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCAgICAgICAgICA9IEZyb21HTDxjb25z
dCBTaGFkZXJQcm9ncmFtSUQgKj4oc2hhZGVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBjb25zdCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQYWNrZWQgPSBGcm9tR0w8
Y29uc3QgU2hhZGVyUHJvZ3JhbUlEICo+KHNoYWRlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVTaGFkZXJC
aW5hcnkoY29udGV4dCwgY291bnQsIHNoYWRlcnNQYWNrZWQsIGJpbmFyeWZvcm1hdCwgYmluYXJ5
LCBsZW5ndGgpKTsKQEAgLTIyODMsOSArMjI4NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2hhZGVy
U291cmNlKEdMdWludCBzaGFkZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVNoYWRlclNvdXJjZShjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGNvdW50LCBzdHJpbmcs
IGxlbmd0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzMDMs
NyArMjMwNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdM
aW50IHJlZiwgR0x1aW50IG1hc2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlU3RlbmNpbEZ1bmMoY29udGV4dCwgZnVuYywgcmVmLCBtYXNr
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIzMjQsOCArMjMyNiw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMs
IEdMaW50IHJlZiwgR0x1aW50CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVuY2lsRnVuY1Nl
cGFyYXRlKGNvbnRleHQsIGZhY2UsIGZ1bmMsIHJlZiwgbWFzaykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzNDIsNyArMjM0NCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU3RlbmNpbE1hc2soR0x1aW50IG1hc2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVTdGVuY2lsTWFzayhjb250ZXh0LCBtYXNrKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjM2MCw3ICsyMzYyLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBTdGVuY2lsTWFza1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzaykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2ls
TWFza1NlcGFyYXRlKGNvbnRleHQsIGZhY2UsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMjM4MSw3ICsyMzgzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsT3AoR0xl
bnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxPcChjb250ZXh0LCBm
YWlsLCB6ZmFpbCwgenBhc3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQwNSw4
ICsyNDA3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0ZShHTGVudW0gZmFj
ZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWlsLCBHTGUKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVN0ZW5jaWxPcFNlcGFyYXRlKGNvbnRleHQsIGZhY2UsIHNmYWlsLCBkcGZhaWwsIGRwcGFz
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI0MzcsOSArMjQz
OSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQ2Miw5ICsyNDY0LDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRl
eFBhcmFtZXRlcmYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNDg1LDkgKzI0ODcsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4
UGFyYW1ldGVyZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjUwNyw5ICsyNTA5LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0
ZXJpKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjUzMSw5ICsyNTMzLDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBUZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbXMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRl
cml2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI1NjQsOSArMjU2Niw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU4NywxMyArMjU4OSwxNSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFVuaWZvcm0xZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm0xZihjb250ZXh0LCBsb2NhdGlvbiwgdjApKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MWYobG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFVuaWZvcm0xZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAgLTI2MDcsMTQgKzI2MTEsMTUgQEAgdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWZ2KGNvbnRleHQsIGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVVuaWZvcm0xZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0x
ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsK
ICAgICB9CiB9CiAKQEAgLTI2MjYsMTMgKzI2MzEsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtMWkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFpKGNvbnRleHQs
IGxvY2F0aW9uLCB2MCkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm0xaShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWko
bG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvblBh
Y2tlZCwgdjApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFpLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApOwog
ICAgIH0KIH0KIApAQCAtMjY0NywxNCArMjY1NCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0xaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwg
dmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0x
aXYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaXYo
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWl2
KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAg
LTI2NjYsMTQgKzI2NzQsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMmYoR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yZihjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0y
Zihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9u
LCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uUGFja2Vk
LCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJmLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYw
LCB2MSk7CiAgICAgfQogfQogCkBAIC0yNjg3LDE0ICsyNjk2LDE1IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJmdihjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVVbmlmb3JtMmZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTJmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmZ2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC0yNzA2LDE0ICsyNzE2LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJp
KEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yaShjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYx
KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm0yaShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJpKGxv
Y2F0aW9uLCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9u
UGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIHYwLCB2MSk7CiAgICAgfQogfQogCkBAIC0yNzI4LDE0ICsyNzM5LDE1IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yaXYoY29udGV4dCwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybTJpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0yaXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgIH0KIH0KIApAQCAtMjc0OCwxNCArMjc2MCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNmKGNvbnRl
eHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zZihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
djAsIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAg
ICAgICBjb250ZXh0LT51bmlmb3JtM2YobG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm0zZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsK
ICAgICB9CiB9CiAKQEAgLTI3NjksMTQgKzI3ODIsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm0zZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0z
ZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
M2Z2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZnYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAK
QEAgLTI3ODksMTQgKzI4MDMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2koR0xpbnQg
bG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zaShjb250ZXh0LCBsb2NhdGlvbiwgdjAs
IHYxLCB2MikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVVbmlmb3JtM2koY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTNpKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2ksIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgfQogfQogCkBAIC0y
ODExLDE0ICsyODI2LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm0zaXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTNpdihjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
M2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjgzMiwxNCArMjg0OCwx
NSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00ZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2
MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00
Zihjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00Zihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
djAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2
MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgIH0KIH0KIApAQCAtMjg1MywxNCArMjg3MCwxNSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00ZnYoY29u
dGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9j
YXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlVW5pZm9ybTRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjg3NCwxNCArMjg5MiwxNSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm00aShHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2
MiwgR0xpbnQgdgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00aShjb250ZXh0LCBsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVVuaWZvcm00aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm00aShsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
NGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMp
OwogICAgIH0KIH0KIApAQCAtMjg5NiwxNCArMjkxNSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVu
aWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1
ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNGl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm00aXYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00
aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
NGl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00aXYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAK
QEAgLTI5MjAsMTQgKzI5NDAsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4MmZ2
KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYoY29udGV4dCwgbG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRy
aXgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgy
ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yOTQ0LDE0ICsyOTY3LDE3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVV
bmlmb3JtTWF0cml4M2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDNmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtTWF0cml4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtMjk2OCwxNCArMjk5NCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRy
aXg0ZnYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRmdihjb250ZXh0LCBs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1h
dHJpeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDRmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTI5ODYsOCArMzAxNSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVXNlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVXNlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTMwMDUsOCArMzAzNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmFsaWRh
dGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWYWxpZGF0ZVByb2dy
YW0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0zMDI1LDcgKzMwNTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjFmKEdMdWlu
dCBpbmRleCwgR0xmbG9hdCB4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVmVydGV4QXR0cmliMWYoY29udGV4dCwgaW5kZXgsIHgpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMDQ0LDcgKzMwNzMsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFZlcnRleEF0dHJpYjFmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4
QXR0cmliMWZ2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTMwNjMsNyArMzA5Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMmYoR0x1
aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihjb250ZXh0LCBp
bmRleCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMDgzLDcgKzMxMTIs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJmdihHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVmVydGV4QXR0cmliMmZ2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTMxMDMsNyArMzEzMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VmVydGV4QXR0cmliM2YoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9h
dCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNmKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTMxMjMsNyArMzE1Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4QXR0cmliM2Z2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIz
ZnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzE0
NCw3ICszMTczLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZihHTHVpbnQgaW5k
ZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEcKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Zihjb250
ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0z
MTY0LDcgKzMxOTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjRmdihHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNGZ2KGNvbnRleHQsIGluZGV4LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMxOTEsOSArMzIyMCw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbnRleHQs
IGluZGV4LCBzaXplLCB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkLCBzdHJpZGUsIHBvaW50ZXIpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzIxNCw3ICszMjQzLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBWaWV3cG9ydChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWaWV3cG9ydChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wX2F1dG9nZW4uY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfYXV0b2dl
bi5jcHAKaW5kZXggZjRkMGNiOWViMjI3NzdlOThkNjhhYzE4ZWNlN2I1M2Q5NzUwYjc1NC4uMTJi
MjIzZDBlYTU3NmJmMmEyZTY1ODlhZTg4NmRmMjRiZmVhMzM4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfYXV0
b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18zXzBfYXV0b2dlbi5jcHAKQEAgLTI4LDkgKzI4LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBCZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgUXVlcnlJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+
KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlw
ZT4odGFyZ2V0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmVnaW5RdWVyeShjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTQ5LDkgKzQ5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCZWdpblRyYW5zZm9ybUZlZWRiYWNr
KEdMZW51bSBwcmltaXRpdmVNb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBQcmltaXRpdmVNb2RlIHByaW1pdGl2ZU1vZGVQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8
UHJpbWl0aXZlTW9kZT4ocHJpbWl0aXZlTW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIHBy
aW1pdGl2ZU1vZGVQYWNrZWQgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4ocHJpbWl0aXZlTW9kZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJl
Z2luVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCwgcHJpbWl0aXZlTW9kZVBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTcwLDEwICs3MCwxMCBAQCB2b2lk
IEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJCYXNlKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0x1aW50IGJ1ZmZlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJp
bmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZl
ckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVC
aW5kQnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGluZGV4LCBidWZmZXJQYWNrZWQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05NSw5ICs5NSw5IEBA
IEJpbmRCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZm
ZXIsIEdMaW50cHRyIG9mZnNldCwgR0xzCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJn
ZXQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmlu
ZEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaW5kZXgsIGJ1ZmZlclBhY2tlZCwg
b2Zmc2V0LCBzaXplKSk7CkBAIC0xMTgsOCArMTE4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5k
U2FtcGxlcihHTHVpbnQgdW5pdCwgR0x1aW50IHNhbXBsZXIpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRTYW1wbGVyKGNv
bnRleHQsIHVuaXQsIHNhbXBsZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMTM4LDggKzEzOCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFRyYW5zZm9ybUZlZWRiYWNr
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRUcmFuc2Zvcm1G
ZWVkYmFjayhjb250ZXh0LCB0YXJnZXQsIGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTE1Nyw4ICsxNTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRWZXJ0ZXhBcnJh
eShHTHVpbnQgYXJyYXkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRl
eEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
cnJheUlEPihhcnJheSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0
ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxWZXJ0ZXhBcnJheUlEPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoY29udGV4dCwgYXJyYXlQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkxLDggKzE5MSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQmxpdEZyYW1lYnVmZmVyKEdMaW50IHNyY1gwLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyKGNvbnRleHQsIHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjE1LDggKzIxNSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xl
YXJCdWZmZXJmaShHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBHTGZsb2F0IGRlcHRo
LCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhckJ1ZmZlcmZpKGNvbnRleHQsIGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0yMzYsOCArMjM2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckJ1
ZmZlcmZ2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMZmxvYXQgKnYK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVyZnYoY29udGV4dCwgYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTI1Nyw4ICsyNTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVyaXYoR0xlbnVt
IGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjc4LDggKzI3
OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJCdWZmZXJ1aXYoR0xlbnVtIGJ1ZmZlciwgR0xp
bnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVD
bGVhckJ1ZmZlcnVpdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzAyLDcgKzMwMiw3IEBAIEdMZW51
bSBHTF9BUElFTlRSWSBDbGllbnRXYWl0U3luYyhHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFn
cywgR0x1aW50NjQgdGltZW91CiAgICAgR0xlbnVtIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGllbnRXYWl0U3luYyhj
b250ZXh0LCBzeW5jLCBmbGFncywgdGltZW91dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0zNDMsOCArMzQzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4SW1hZ2Uz
RChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJ
bWFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwKQEAgLTM4Miw5ICszODIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
eG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpKTsKQEAgLTQxNSwxMCArNDE1LDEwIEBAIHZvaWQgR0xf
QVBJRU5UUlkgQ29weUJ1ZmZlclN1YkRhdGEoR0xlbnVtIHJlYWRUYXJnZXQsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgcmVhZFRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPihyZWFkVGFyZ2V0KTsKLSAgICAg
ICAgQnVmZmVyQmluZGluZyB3cml0ZVRhcmdldFBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlckJpbmRpbmc+KHdyaXRlVGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgcmVh
ZFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRp
bmc+KHJlYWRUYXJnZXQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHdyaXRlVGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih3cml0ZVRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUNvcHlCdWZmZXJTdWJEYXRhKGNvbnRleHQsIHJlYWRUYXJnZXRQYWNrZWQsIHdyaXRlVGFyZ2V0
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVhZE9mZnNldCwgd3JpdGVPZmZzZXQsIHNpemUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNDUxLDkgKzQ1MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleFN1Yklt
YWdlM0QoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJn
ZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVDb3B5VGV4U3ViSW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC00NzQsOCArNDc0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVRdWVy
aWVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBjb25zdCBRdWVyeUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVRdWVyaWVz
KGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00
OTUsOCArNDk1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVTYW1wbGVycyhHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnNhbXBsZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBjb25zdCBTYW1wbGVySUQgKnNhbXBsZXJzUGFja2VkICAgICAgICAgICAgICAgPSBG
cm9tR0w8Y29uc3QgU2FtcGxlcklEICo+KHNhbXBsZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGNvbnN0IFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFNhbXBsZXJJRCAqPihzYW1wbGVycyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxl
dGVTYW1wbGVycyhjb250ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRl
U3luYyhHTHN5bmMgc3luYykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZURlbGV0ZVN5bmMoY29udGV4dCwgc3luYykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTUzNCw4ICs1MzQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVRy
YW5zZm9ybUZlZWRiYWNrcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQ
YWNrZWQgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAqPihpZHMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtRmVl
ZGJhY2tJRCAqaWRzUGFja2VkID0gRnJvbUdMPGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrSUQgKj4o
aWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZURlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTU1LDggKzU1NSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRGVsZXRlVmVydGV4QXJyYXlzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFZlcnRleEFycmF5SUQg
KmFycmF5c1BhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBWZXJ0ZXhBcnJheUlEICo+
KGFycmF5cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBWZXJ0
ZXhBcnJheUlEICphcnJheXNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgVmVydGV4QXJyYXlJRCAqPihh
cnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzKGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01NzgsOCArNTc4LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCwgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJp
bWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoY29u
dGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZWNvdW50KSk7CkBAIC02MDAs
NyArNjAwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVycyhHTHNpemVpIG4sIGNvbnN0
IEdMZW51bSAqYnVmcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURyYXdCdWZmZXJzKGNvbnRleHQsIG4sIGJ1ZnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC02MjUsMTAgKzYyNSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdF
bGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlw
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0Vs
ZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZChjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY1Niw5ICs2NTYsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIERyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5
cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBl
Pih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1p
dGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURyYXdSYW5nZUVsZW1lbnRzKGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKSk7CkBAIC02NzksOCArNjc5LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBFbmRRdWVyeShHTGVudW0gdGFyZ2V0KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRRdWVyeShjb250ZXh0LCB0YXJnZXRQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02OTcsNyAr
Njk3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVkYmFjayhj
b250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzE3LDcg
KzcxNyw3IEBAIEdMc3luYyBHTF9BUElFTlRSWSBGZW5jZVN5bmMoR0xlbnVtIGNvbmRpdGlvbiwg
R0xiaXRmaWVsZCBmbGFncykKICAgICBHTHN5bmMgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZlbmNlU3luYyhjb250ZXh0
LCBjb25kaXRpb24sIGZsYWdzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc0Nyw5
ICs3NDcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UoR0xlbnVt
IHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRp
bmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZl
ckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBvZmZzZXQsIGxlbmd0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTc3MSw5ICs3NzEsOSBAQCBGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoY29udGV4dCwgdGFy
Z2V0LCBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc5Myw4ICs3OTMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdlblF1ZXJpZXMoR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuUXVlcmllcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MTIsOCArODEyLDggQEAg
dm9pZCBHTF9BUElFTlRSWSBHZW5TYW1wbGVycyhHTHNpemVpIGNvdW50LCBHTHVpbnQgKnNhbXBs
ZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgKnNhbXBs
ZXJzUGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEICo+KHNhbXBs
ZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJRCAqc2Ft
cGxlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJ
RCAqPihzYW1wbGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZW5TYW1wbGVycyhjb250ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNr
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODMzLDggKzgzMyw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2VuVHJhbnNmb3JtRmVlZGJhY2tzKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQg
Kmlkc1BhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVkYmFja0lEICo+
KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUcmFuc2Zvcm1GZWVk
YmFja0lEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zv
cm1GZWVkYmFja0lEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoY29udGV4dCwgbiwg
aWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg1Myw4ICs4NTMsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdlblZlcnRleEFycmF5cyhHTHNpemVpIG4sIEdMdWludCAqYXJy
YXlzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlEICph
cnJheXNQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRCAqPihh
cnJheXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVmVydGV4QXJyYXlJ
RCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4
QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuVmVydGV4QXJyYXlzKGNvbnRleHQsIG4sIGFycmF5c1Bh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04ODAsOCArODgwLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKEdMdWludCBwcm9ncmFtLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsCkBAIC05
MTAsOSArOTEwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihH
THVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5p
Zm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtOTQwLDkgKzk0MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9ybXNp
dihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRBY3RpdmVVbmlmb3Jtc2l2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1D
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pZm9ybUluZGljZXMsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtOTY2LDkgKzk2Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QnVmZmVyUGFy
YW1ldGVyaTY0dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaTY0dihj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC05ODgsOSArOTg4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRCdWZmZXJQb2ludGVydihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJh
bXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRl
cnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTAxMCw5ICsxMDEwLDkgQEAgR0xpbnQgR0xfQVBJ
RU5UUlkgR2V0RnJhZ0RhdGFMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpu
YW1lKQogICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRGcmFnRGF0YUxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDQwLDcg
KzEwNDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NGlfdihHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KGNvbnRleHQsIHRh
cmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTA1OSw3
ICsxMDU5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjR2KEdMZW51bSBwbmFtZSwg
R0xpbnQ2NCAqZGF0YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEwNzksNyArMTA3OSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRh
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldEludGVnZXJpX3YoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTA2LDcgKzExMDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dEludGVybmFsZm9ybWF0aXYoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVybmFs
Zm9ybWF0aXYoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUs
IHBhcmFtcykpOwpAQCAtMTEzNSw4ICsxMTM1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9n
cmFtQmluYXJ5KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQcm9ncmFtQmlu
YXJ5KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBi
aW5hcnlGb3JtYXQsIGJpbmFyeSkpOwpAQCAtMTE1OSw5ICsxMTU5LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeU9iamVjdHVpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpw
YXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2KGNvbnRleHQsIGlkUGFj
a2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMTE4MSw4ICsxMTgxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeWl2KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5aXYoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTEyMDQsOSArMTIwNCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBh
cmFtZXRlcmZ2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2KGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xMjI2LDkgKzEyMjYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNh
bXBsZXJQYXJhbWV0ZXJpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdihj
b250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgY29uc3QgR0x1Ynl0ZSAq
R0xfQVBJRU5UUlkgR2V0U3RyaW5naShHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KQogICAgIGNv
bnN0IEdMdWJ5dGUgKnJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdldFN0cmluZ2koY29udGV4dCwgbmFtZSwgaW5kZXgpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMjc5LDggKzEyNzksOCBAQCBHZXRTeW5jaXYo
R0xzeW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMaW50ICp2YQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U3luY2l2KGNvbnRleHQs
IHN5bmMsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVlcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMDgsOSArMTMwOCw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5n
dGgsIHNpemUsIHR5cGUsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTMz
Myw5ICsxMzMzLDkgQEAgR0x1aW50IEdMX0FQSUVOVFJZIEdldFVuaWZvcm1CbG9ja0luZGV4KEdM
dWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG8KICAgICBHTHVpbnQgcmV0dXJu
VmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZv
cm1CbG9ja0luZGV4KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja05hbWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzY4LDkgKzEzNjgsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1JbmRpY2VzKEdMdWludCBwcm9ncmFtLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1JbmRpY2Vz
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1Db3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1OYW1lcywgdW5pZm9y
bUluZGljZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTM5MiwxNSArMTM5Miwx
NiBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm11aXYoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgcGFyYW1zKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3Jt
dWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4
dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm11aXYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNDE0LDgg
KzE0MTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYklpdihHTHVpbnQgaW5k
ZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYklpdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0MzUsOCArMTQzNiw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSXVpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBw
bmFtZSwgR0x1aW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJJdWl2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQ1OSw3ICsxNDYwLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBJbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRh
Y2htZW50cykpOwpAQCAtMTQ5MCw4ICsxNDkxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE1MTIsOCArMTUxMyw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJ
c1F1ZXJ5KEdMdWludCBpZCkKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1F1ZXJ5KGNvbnRleHQsIGlkUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU0MCw4ICsxNTQxLDggQEAgR0xi
b29sZWFuIEdMX0FQSUVOVFJZIElzU2FtcGxlcihHTHVpbnQgc2FtcGxlcikKICAgICBHTGJvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNh
bXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUlzU2FtcGxlcihjb250ZXh0LCBzYW1wbGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU2OSw3ICsxNTcwLDcgQEAgR0xib29sZWFuIEdM
X0FQSUVOVFJZIElzU3luYyhHTHN5bmMgc3luYykKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTeW5jKGNvbnRleHQs
IHN5bmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNTk2LDgg
KzE1OTcsOCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNUcmFuc2Zvcm1GZWVkYmFjayhHTHVp
bnQgaWQpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzVHJhbnNm
b3JtRmVlZGJhY2soY29udGV4dCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTYyNSw4ICsxNjI2LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzVmVydGV4QXJy
YXkoR0x1aW50IGFycmF5KQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPihhcnJheSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPihhcnJheSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1Zl
cnRleEFycmF5KGNvbnRleHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTE2NjIsOSArMTY2Myw5IEBAIHZvaWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlclJhbmdl
KEdMZW51bSB0YXJnZXQsCiAgICAgdm9pZCAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
b2Zmc2V0LCBsZW5ndGgsIGFjY2VzcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTE2OTEsNyArMTY5Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQ
YXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xNzE1LDggKzE3MTYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1CaW5hcnkoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbUJpbmFyeShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBiaW5hcnlGb3JtYXQsIGJpbmFy
eSwgbGVuZ3RoKSk7CkBAIC0xNzM4LDkgKzE3MzksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1QYXJhbWV0ZXJpKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0
ZXJpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHBuYW1lLCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3NTgsNyArMTc1OSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUmVhZEJ1ZmZlcihHTGVudW0gc3JjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlUmVhZEJ1ZmZlcihjb250ZXh0LCBzcmMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNzgzLDggKzE3ODQsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGNvbnRleHQs
IHRhcmdldCwgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODAzLDcgKzE4MDQsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xODIyLDkgKzE4MjMs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJmKEdMdWludCBzYW1wbGVyLCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1w
bGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlU2FtcGxlclBhcmFtZXRlcmYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFt
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTg0NSw5ICsxODQ2
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyZnYoR0x1aW50IHNhbXBsZXIs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2Ft
cGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xODY2LDkgKzE4
NjcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJpKEdMdWludCBzYW1wbGVy
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2Ft
cGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJh
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE4OTAsOSArMTg5
MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1wbGVy
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihz
YW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE5MjQsOSAr
MTkyNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRChHTGVudW0gdGFyZ2V0LAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlM0QoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5NTEs
OCArMTk1Miw4IEBAIFRleFN0b3JhZ2UyRChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRh
dGVUZXhTdG9yYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSk7CkBAIC0xOTgxLDkgKzE5ODIsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleFN0b3JhZ2UzRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVGV4U3RvcmFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yMDE4LDggKzIwMTksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlM0QoR0xlbnVt
IHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdWJJbWFnZTNEKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLApA
QCAtMjA0OCw4ICsyMDQ5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvdW50LCB2YXJ5aW5ncywgYnVmZmVyTW9kZSkpOwpA
QCAtMjA3MCwxMyArMjA3MSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xdWkoR0xpbnQg
bG9jYXRpb24sIEdMdWludCB2MCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xdWkoY29udGV4dCwgbG9jYXRpb24s
IHYwKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9y
bTF1aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0aW9u
LCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMXVpKGxvY2F0aW9uUGFja2VkLCB2
MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMXVpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtMXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9
CiB9CiAKQEAgLTIwOTAsMTQgKzIwOTMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMXVp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMXVpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMXVp
dihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aXYo
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMXVp
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTF1aXYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAK
QEAgLTIxMDksMTQgKzIxMTMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMnVpKEdMaW50
IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJ1aShjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKSk7
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm0ydWkoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWkobG9j
YXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMnVpKGxvY2F0aW9u
UGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTJ1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm0ydWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxKTsKICAgICB9CiB9CiAKQEAgLTIxMzAsMTQgKzIxMzUsMTUgQEAgdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0x1aW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMnVpdihjb250ZXh0
LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtMnVpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0ydWl2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTIxNTAsMTQgKzIxNTYsMTUgQEAgdm9pZCBHTF9BUElF
TlRSWSBVbmlmb3JtM3VpKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1
aW50IHYyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3Jt
M3VpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zdWkoY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRpb25QYWNrZWQsIHYwLCB2
MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTN1aSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IHYwLCB2MSwgdjIpOwogICAgIH0KIH0KIApAQCAtMjE3MSwxNCArMjE3OCwxNSBAQCB2b2lkIEdM
X0FQSUVOVFJZIFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTHVpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zdWl2KGNvbnRleHQs
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm0zdWl2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTN1aXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtM3VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjE5MiwxNCArMjIwMCwxNSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm00dWkoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVp
bnQgdjIsIEdMdQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00dWkoY29udGV4dCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVVbmlmb3JtNHVpKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Mykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm00dWkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00dWksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm00dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2
MiwgdjMpOwogICAgIH0KIH0KIApAQCAtMjIxMywxNCArMjIyMiwxNSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm00dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00dWl2KGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVVuaWZvcm00dWl2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
NHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtMjIzNiw5ICsyMjQ2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtQmxvY2tCaW5kaW5nKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRpbmcoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0JpbmRpbmcpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjI2MywxNCArMjI3MywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4
MngzZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtTWF0cml4MngzZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyeDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtMjI4NywxNCArMjMwMCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRy
aXgyeDRmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZnYoY29udGV4
dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0
ZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb25QYWNrZWQsIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFVuaWZvcm1NYXRyaXgyeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJp
eDJ4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFu
c3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjMx
MSwxNCArMjMyNywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzeDJmdihHTGlu
dCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoY29udGV4dCwgbG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJp
eDN4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBj
b250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRy
aXgzeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmZ2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjMzNSwxNCArMjM1NCwx
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZnYoY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtTWF0cml4M3g0ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzeDRmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjM1OSwxNCArMjM4MSwxNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtTWF0cml4NHgyZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFs
aWRhdGVVbmlmb3JtTWF0cml4NHgyZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4NHgy
ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDJmdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtMjM4MywxNCArMjQwOCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVu
aWZvcm1NYXRyaXg0eDNmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgz
ZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3Jt
TWF0cml4NHgzZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5p
Zm9ybU1hdHJpeDR4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0K
IApAQCAtMjQwMyw4ICsyNDMxLDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIFVubWFwQnVmZmVy
KEdMZW51bSB0YXJnZXQpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5t
YXBCdWZmZXIoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTI0MzIsNyArMjQ2MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2
aXNvcihHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3IoY29u
dGV4dCwgaW5kZXgsIGRpdmlzb3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQ1
Miw3ICsyNDgwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNGkoR0x1aW50IGlu
ZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aShjb250
ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0y
NDcyLDcgKzI1MDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0aXYoR0x1aW50
IGluZGV4LCBjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGl2KGNvbnRleHQsIGluZGV4LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0OTMsNyArMjUyMSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTR1aShHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVp
bnQgeSwgR0x1aW50IHosIEdMCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aShjb250ZXh0LCBpbmRleCwgeCwgeSwg
eiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNTEzLDcgKzI1NDEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0dWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1
aW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVZlcnRleEF0dHJpYkk0dWl2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTI1MzYsOCArMjU2NCw4IEBAIFZlcnRleEF0dHJpYklQb2ludGVy
KEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBj
b25zCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUg
dHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0
eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEF0dHJpYlR5
cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0
dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihjb250
ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CkBAIC0yNTYy
LDcgKzI1OTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdhaXRTeW5jKEdMc3luYyBzeW5jLCBHTGJp
dGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdhaXRTeW5jKGNvbnRleHQsIHN5bmMsIGZs
YWdzLCB0aW1lb3V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18x
X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18zXzFfYXV0b2dlbi5jcHAKaW5kZXggYzU0MDYzZTE3NDYzMjhmNjMxMDY0
M2I2YjUwOGNkYWRkODA5OTAwMy4uMDViNzNmZmEwZGY5YmZjZTA5NzRlMjZhMjYwMjZhMTQ4YjM1
MjUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZ2xlc18zXzFfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzFfYXV0b2dlbi5jcHAKQEAg
LTI4LDEwICsyOCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEFjdGl2ZVNoYWRlclByb2dyYW0oR0x1
aW50IHBpcGVsaW5lLCBHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0g
RnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5l
KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQWN0aXZlU2hhZGVyUHJv
Z3JhbShjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU5LDkgKzU5LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBCaW5kSW1hZ2VUZXh0dXJlKEdMdWludCB1bml0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmUoY29udGV4dCwgdW5pdCwgdGV4dHVyZVBhY2tlZCwg
bGV2ZWwsIGxheWVyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxheWVyLCBhY2Nlc3MsIGZvcm1hdCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC04MCw4ICs4MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFByb2dyYW1QaXBl
bGluZShHTHVpbnQgcGlwZWxpbmUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21HTDxQ
cm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRQcm9ncmFt
UGlwZWxpbmUoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRleEJ1ZmZl
cihHTHVpbnQgYmluZGluZ2luZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBC
dWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcihj
b250ZXh0LCBiaW5kaW5naW5kZXgsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzdHJpZGUpKTsKQEAg
LTEzMCw5ICsxMzAsOSBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRlU2hhZGVyUHJvZ3JhbXYo
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcgogICAgIEdMdWludCByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclR5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJUeXBlPih0eXBl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDcmVhdGVTaGFkZXJQcm9ncmFtdihj
b250ZXh0LCB0eXBlUGFja2VkLCBjb3VudCwgc3RyaW5ncykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTE2Miw4ICsxNjIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERl
bGV0ZVByb2dyYW1QaXBlbGluZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcykK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIGNvbnN0IFByb2dyYW1QaXBlbGluZUlE
ICpwaXBlbGluZXNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgUHJvZ3JhbVBpcGVsaW5lSUQgKj4ocGlw
ZWxpbmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZURlbGV0ZVByb2dyYW1QaXBlbGluZXMoY29udGV4dCwgbiwgcGlwZWxpbmVzUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTgzLDcgKzE4Myw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1fZ3JvdXBzX3gs
IEdMdWludCBudW1fZ3JvdXBzX3ksIEdMdWluCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGUo
Y29udGV4dCwgbnVtX2dyb3Vwc194LCBudW1fZ3JvdXBzX3ksIG51bV9ncm91cHNfeikpOwpAQCAt
MjA0LDcgKzIwNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3Qo
R0xpbnRwdHIgaW5kaXJlY3QpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QoY29udGV4dCwgaW5kaXJl
Y3QpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjI0LDkgKzIyNCw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCB2b2lkICpp
bmRpcmVjdCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9k
ZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+
KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbmRp
cmVjdChjb250ZXh0LCBtb2RlUGFja2VkLCBpbmRpcmVjdCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTI0Nyw5ICsyNDcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIERy
YXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAq
aW5kaQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5k
aXJlY3QoY29udGV4dCwgbW9kZVBhY2tlZCwgdHlwZVBhY2tlZCwgaW5kaXJlY3QpKTsKQEAgLTI3
MSw4ICsyNzEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyUGFyYW1ldGVyaShHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlRnJhbWVidWZmZXJQYXJhbWV0ZXJpKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFt
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjkxLDggKzI5MSw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuUHJvZ3JhbVBpcGVsaW5lcyhHTHNpemVpIG4sIEdMdWlu
dCAqcGlwZWxpbmVzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9ncmFt
UGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFja2VkICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBp
cGVsaW5lSUQgKj4ocGlwZWxpbmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXNQYWNrZWQgPSBGcm9tR0w8UHJvZ3JhbVBp
cGVsaW5lSUQgKj4ocGlwZWxpbmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblByb2dyYW1QaXBlbGluZXMoY29udGV4dCwgbiwg
cGlwZWxpbmVzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMxMyw3ICsz
MTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Qm9vbGVhbmlfdihjb250ZXh0LCB0YXJnZXQs
IGluZGV4LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMzNSw4ICszMzUs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNTUsNyArMzU1LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRNdWx0aXNhbXBsZWZ2KEdMZW51bSBwbmFtZSwgR0x1aW50IGlu
ZGV4LCBHTGZsb2F0ICp2YWwpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdihjb250ZXh0LCBwbmFtZSwgaW5kZXgs
IHZhbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zODAsOSArMzgwLDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtSW50ZXJmYWNlaXYoR0x1aW50IHByb2dyYW0sCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbUludGVyZmFj
ZWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5hbWUsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MDgsOCArNDA4LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKEdMdWludCBwaXBlbGluZSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlw
ZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBl
bGluZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxp
bmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFt
UGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVJ
bmZvTG9nKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cp
KTsKQEAgLTQzMyw5ICs0MzMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGlu
ZWl2KEdMdWludCBwaXBlbGluZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tl
ZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1QaXBlbGlu
ZWl2KGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDU5LDggKzQ1OSw4IEBAIEdMdWludCBHTF9B
UElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChHTHVpbnQgcHJvZ3JhbSwKICAgICBHTHVp
bnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1S
ZXNvdXJjZUluZGV4KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5h
bWUpKTsKQEAgLTQ5Niw4ICs0OTYsOCBAQCBHTGludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVz
b3VyY2VMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwKICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24oY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpOwpAQCAtNTM3LDkg
KzUzNyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTmFtZShHTHVpbnQg
cHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQ
cm9ncmFtUmVzb3VyY2VOYW1lKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZh
Y2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNTcyLDggKzU3Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJl
c291cmNlaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
R2V0UHJvZ3JhbVJlc291cmNlaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVy
ZmFjZSwgaW5kZXgsCkBAIC01OTksOCArNTk5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTYyNCw4ICs2MjQsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRl
eExldmVsUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBh
cmFtcykpOwpAQCAtNjQ2LDggKzY0Niw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1Byb2dy
YW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxp
bmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGlu
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJ
RCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlw
ZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlSXNQcm9ncmFtUGlwZWxpbmUoY29udGV4dCwgcGlwZWxpbmVQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTWVtb3J5QmFycmllcihHTGJpdGZpZWxkIGJhcnJpZXJzKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWVtb3J5QmFycmllcihjb250ZXh0
LCBiYXJyaWVycykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY5
Myw3ICs2OTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJpZXJCeVJlZ2lvbihHTGJp
dGZpZWxkIGJhcnJpZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZU1lbW9yeUJhcnJpZXJCeVJlZ2lvbihjb250ZXh0LCBiYXJyaWVycykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MTMsMTUgKzcxMywxNiBAQCB2b2lkIEdM
X0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTGZsb2F0IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTFmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFmKHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTFmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAgLTczOCwxNiArNzM5LDE3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtMWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWZ2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTFmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWZ2KHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTc2
MSwxNSArNzYzLDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xaShHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCB2MCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xaShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTFpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFpLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAgLTc4Niwx
NiArNzg5LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xaXYoR0x1aW50IHBy
b2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWl2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpdihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
MWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xF
X0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWUpOwogICAgIH0KIH0KQEAgLTgwOSwxNSArODEzLDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm0xdWkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MXVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWkocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpKHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0xdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgdjApOwogICAgIH0KIH0KIApAQCAtODM0LDE3ICs4MzksMTggQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybTF1aXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtMXVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtMXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpdihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
Y291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTg1OCwxNSArODY0LDE4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgdjAsIEdMCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMmYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2
MSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0yZihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm0yZihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yZiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwKKyAg
ICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAgfQogfQogCkBAIC04ODMsMTYgKzg5MiwxNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmZ2KEdMdWludCBwcm9ncmFtLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTJmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJmdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtMmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9
CiB9CkBAIC05MDYsMTUgKzkxNiwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3Jt
MmkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbgogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmkoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmkocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTJpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yaSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsCisgICAgICAgICAgICAgICAgICAgICAgdjEp
OwogICAgIH0KIH0KIApAQCAtOTMxLDE2ICs5NDQsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybTJpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0yaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkp
OworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaXYoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
Mml2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybTJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJpdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtOTU0LDE1ICs5NjgsMTgg
QEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHYwLCB2MSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0ydWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMnVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0ydWkocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtMnVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYxKTsKICAgICB9CiB9CiAKQEAg
LTk3OSwxNyArOTk2LDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWl2KEdM
dWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aXYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aXYocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTJ1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtMnVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB2YWx1ZSk7CiAgICAgfQog
fQogCkBAIC0xMDA0LDE1ICsxMDIyLDE4IEBAIFByb2dyYW1Vbmlmb3JtM2YoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybTNmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2YocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0zZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNmLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwK
KyAgICAgICAgICAgICAgICAgICAgICB2Mik7CiAgICAgfQogfQogCkBAIC0xMDI5LDE2ICsxMDUw
LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zZnYoR0x1aW50IHByb2dyYW0s
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtM2Z2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2Z2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwog
ICAgIH0KIH0KQEAgLTEwNTMsMTUgKzEwNzUsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybTNpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW4K
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0z
aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaShjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtM2kocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zaShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTNpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2ks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAs
IHYxLAorICAgICAgICAgICAgICAgICAgICAgIHYyKTsKICAgICB9CiB9CiAKQEAgLTEwNzgsMTYg
KzExMDMsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTNpdihHTHVpbnQgcHJv
Z3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm0zaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2l2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0z
aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNpdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSk7CiAgICAgfQogfQpAQCAtMTEwMiwxNiArMTEyOCwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtM3VpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYw
LCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aShjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0zdWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYw
LCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aShwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybTN1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSwgdjIpOwog
ICAgIH0KIH0KIApAQCAtMTEyOCwxNyArMTE1NiwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0zdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUp
KTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3Vpdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm0zdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJv
Z3JhbVVuaWZvcm0zdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTE1MywxNyArMTE4MiwxOCBAQCBQcm9ncmFtVW5pZm9y
bTRmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2
MSwgR0xmbG9hdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00Zihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRmKHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTRmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRmLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsCi0g
ICAgICAgICAgICAgICAgICAgICAgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1V
bmlmb3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxLAorICAgICAgICAgICAgICAgICAgICAgIHYyLCB2Myk7CiAgICAgfQogfQog
CkBAIC0xMTgwLDE2ICsxMjEwLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00
ZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRmdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtNGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00ZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00ZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTEyMDUsMTcgKzEyMzYsMTggQEAgUHJvZ3Jh
bVVuaWZvcm00aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGlu
dCB2MSwgR0xpbnQgdjIsIEcKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00aShjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aShwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm00aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2
MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00
aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEs
IHYyLAotICAgICAgICAgICAgICAgICAgICAgIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwLCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICB2MiwgdjMpOwogICAg
IH0KIH0KIApAQCAtMTIzMiwxNiArMTI2NCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtNGl2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTRpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7Cisg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpdihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aXYo
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybTRpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtNGl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNv
dW50LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGl2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CkBAIC0xMjU3LDE3ICsxMjkwLDE4IEBA
IFByb2dyYW1Vbmlmb3JtNHVpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
NHVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOwor
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWkoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00
dWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTR1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCB2MCwgdjEsIHYyLAotICAgICAgICAgICAgICAgICAgICAgIHYzKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTR1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSwg
djIsIHYzKTsKICAgICB9CiB9CiAKQEAgLTEyODQsMTcgKzEzMTgsMTggQEAgdm9pZCBHTF9BUElF
TlRSWSBQcm9ncmFtVW5pZm9ybTR1aXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtNHVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aXYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtNHVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVpdihwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFByb2dyYW1Vbmlmb3JtNHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00dWl2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEzMTIsMTcgKzEzNDcsMTkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNw
b3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtTWF0cml4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTM0
MCwxNyArMTM3NywxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4Mngz
ZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4o
bG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4Mngz
ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQog
fQogCkBAIC0xMzY4LDE3ICsxNDA3LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDRmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0
ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKICAgICB9CiB9CiAKQEAgLTEzOTYsMTcgKzE0MzcsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybU1hdHJpeDNmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSkpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybU1hdHJpeDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4
M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTQyNCwxNyArMTQ2NywxOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoR0x1aW50IHByb2dy
YW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4M3gyZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4MmZ2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybU1hdHJpeDN4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bU1hdHJpeDN4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNDUyLDE3
ICsxNDk3LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihH
THVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAK
QEAgLTE0ODAsMTcgKzE1MjcsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1h
dHJpeDRmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+
KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtTWF0cml4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtTWF0cml4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTUwOCwxNyArMTU1NywxOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
MmZ2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybU1hdHJpeDR4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4
MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNTM2LDE3ICsxNTg3LDE5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihHTHVpbnQgcHJvZ3JhbSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4NHgzZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlm
b3JtTWF0cml4NHgzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFu
c3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0
cml4NHgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE1NTgsNyArMTYx
MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlTWFza2koR0x1aW50IG1hc2tOdW1iZXIsIEdM
Yml0ZmllbGQgbWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVTYW1wbGVNYXNraShjb250ZXh0LCBtYXNrTnVtYmVyLCBtYXNrKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1ODYsOCArMTYzOSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
c2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAtMTYxMiw5ICsxNjY1LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBVc2VQcm9ncmFtU3RhZ2VzKEdMdWludCBwaXBlbGluZSwgR0xiaXRmaWVs
ZCBzdGFnZXMsIEdMdWludCBwcm8KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFBy
b2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5l
SUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBp
cGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlVXNlUHJvZ3JhbVN0YWdlcyhjb250ZXh0LCBwaXBlbGluZVBh
Y2tlZCwgc3RhZ2VzLCBwcm9ncmFtUGFja2VkKSk7CkBAIC0xNjM1LDggKzE2ODgsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxp
bmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGlu
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJ
RCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlw
ZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUoY29udGV4dCwgcGlw
ZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY1Niw4ICsxNzA5
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRyaWJp
bmRleCwgR0x1aW50IGJpbmRpbmdpbmRleCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkJpbmRpbmcoY29udGV4dCwgYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE2ODIsOSArMTczNSw5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFj
a2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1hdChj
b250ZXh0LCBhdHRyaWJpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkLCByZWxhdGl2
ZW9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzEwLDggKzE3NjMsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYklGb3JtYXQoR0x1aW50IGF0dHJpYmluZGV4
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlw
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRy
aWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliSUZvcm1hdChjb250ZXh0
LCBhdHRyaWJpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwgcmVsYXRpdmVvZmZzZXQpKTsKQEAgLTE3
MzIsOCArMTc4NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QmluZGluZ0Rpdmlzb3IoR0x1
aW50IGJpbmRpbmdpbmRleCwgR0x1aW50IGRpdmlzb3IpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVWZXJ0ZXhCaW5kaW5nRGl2aXNvcihjb250ZXh0LCBiaW5kaW5naW5kZXgsIGRpdmlzb3IpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMl9hdXRv
Z2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfM18yX2F1dG9nZW4uY3BwCmluZGV4IGU5NTZjMDA5NzMxNWM5MTM1YWIyYWYxOTA0
NjQ1YzYyNTk0M2U4ZmIuLjcxNmEzYTM2NDgzYjhlZDNhY2Q4ZTRhYTA0YTJhYzA4NzJkZGI0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlf
cG9pbnRzX2dsZXNfM18yX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18yX2F1dG9nZW4uY3BwCkBAIC0yNyw3
ICsyNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRCYXJyaWVyKCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kQmFycmllcihjb250ZXh0KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDcsOCArNDcsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVS
R0IsIEdMZW51bSBtb2RlQQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNl
cGFyYXRlaShjb250ZXh0LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBCbGVuZEVxdWF0aW9uaShHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEVxdWF0aW9uaShj
b250ZXh0LCBidWYsIG1vZGUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTEsNyAr
OTEsNyBAQCBCbGVuZEZ1bmNTZXBhcmF0ZWkoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xl
bnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRGdW5jU2Vw
YXJhdGVpKGNvbnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkp
OwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jaShHTHVpbnQg
YnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRnVuY2koY29udGV4dCwgYnVmLCBzcmMs
IGRzdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBDb2xvck1hc2tpKEdMdWludCBpbmRleCwgR0xib29sZWFuIHIsIEdMYm9v
bGVhbiBnLCBHTGJvb2xlYW4gYiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvck1hc2tpKGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBh
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvcHlJbWFnZVN1YkRhdGEoR0x1aW50IHNyY05hbWUsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVDb3B5SW1hZ2VTdWJEYXRhKGNvbnRleHQsIHNyY05hbWUsIHNyY1RhcmdldCwg
c3JjTGV2ZWwsIHNyY1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNyY1ksIHNyY1osIGRzdE5hbWUsIGRzdFRhcmdldCwgZHN0TGV2ZWwsIGRz
dFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRzdFksIGRzdFosIHNyY1dpZHRoLCBzcmNIZWlnaHQsIHNyY0RlcHRoKSk7CkBAIC0yMDIsOCAr
MjAyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDYWxsYmFjayhHTERFQlVHUFJP
QyBjYWxsYmFjaywgY29uc3Qgdm9pZCAqdXNlclBhcmEKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZURlYnVnTWVzc2FnZUNhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDb250cm9sKEdMZW51bSBzb3VyY2UsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sKGNvbnRleHQsIHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHks
IGNvdW50LCBpZHMsIGVuYWJsZWQpKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUluc2VydChHTGVudW0gc291cmNlLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdN
ZXNzYWdlSW5zZXJ0KGNvbnRleHQsIHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCBsZW5ndGgs
IGJ1ZikpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZWkoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGlzYWJsZWkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMwNywxMCArMzA3LDEwIEBAIHZvaWQgR0xf
QVBJRU5UUlkgRHJhd0VsZW1lbnRzQmFzZVZlcnRleChHTGVudW0gbW9kZSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0Vs
ZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsK
KyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0
ZXgoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGJh
c2V2ZXJ0ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzM5LDkgKzMzOSw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleChHTGVudW0g
bW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFu
Y2Vjb3VudCwgYmFzZXZlcnRleCkpOwpAQCAtMzcyLDkgKzM3Miw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdF
bGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxl
bWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBl
Pih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJh
d1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0
LCBlbmQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKQEAg
LTM5Niw3ICszOTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZWkoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RW5hYmxlaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNDE3LDggKzQxNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRnJhbWVi
dWZmZXJUZXh0dXJlKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0
dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlKGNvbnRleHQsIHRhcmdldCwg
YXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsKQEAgLTQ1Miw4ICs0NTIsOCBAQCBH
THVpbnQgR0xfQVBJRU5UUlkgR2V0RGVidWdNZXNzYWdlTG9nKEdMdWludCBjb3VudCwKICAgICBH
THVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdl
TG9nKGNvbnRleHQsIGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywgaWRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXRp
ZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NDgzLDcgKzQ4Myw3IEBAIEdMZW51bSBHTF9BUElFTlRSWSBHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
KCkKICAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1cyhjb250ZXh0KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTE0LDcgKzUxNCw3IEBAIEdldE9iamVjdExh
YmVsKEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmplY3RMYWJlbChjb250ZXh0LCBpZGVudGlm
aWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKSk7CkBAIC01MzgsOCArNTM4LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRPYmplY3RQdHJMYWJlbChjb25zdCB2b2lkICpwdHIsIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVj
dFB0ckxhYmVsKGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFBvaW50ZXJ2KEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQb2lu
dGVydihjb250ZXh0LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTU3OCw5ICs1NzgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcgogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTYwMSw5ICs2MDEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJh
bWV0ZXJJdWl2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC02MjMsOSArNjIzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQ
YXJhbWV0ZXJJaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2KGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTY0NSw5ICs2NDUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRl
eFBhcmFtZXRlckl1aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFt
cwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdihj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC02NjcsMTYgKzY2NywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldG5Vbmlmb3JtZnYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1
ZlNpemUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcykpOworICAgICAgICAgICAgIFZhbGlkYXRl
R2V0blVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVm
U2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcyk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsCisgICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0blVuaWZvcm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAg
ICAgfQogfQpAQCAtNjkxLDE2ICs2OTIsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9y
bWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBidWZTaXplLCBwYXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3Jt
aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldG5Vbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBh
cmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWl2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlm
b3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOwogICAgIH0KIH0KQEAg
LTcxNSwxNiArNzE3LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm11aXYoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZUdldG5Vbmlmb3JtdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZT
aXplLCBwYXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtdWl2KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRuVW5pZm9ybXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0blVuaWZvcm11aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgYnVmU2l6ZSwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBi
dWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQpAQCAtNzM4
LDcgKzc0MSw3IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRpKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCkKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRW5hYmxlZGkoY29u
dGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03NjUs
NyArNzY4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNaW5TYW1wbGVTaGFkaW5nKEdMZmxvYXQgdmFs
dWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNaW5TYW1wbGVT
aGFkaW5nKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNzg2LDggKzc4OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0TGFiZWwoR0xl
bnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGxlbmd0aCwgY29uCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVPYmplY3RMYWJlbChjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBs
ZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
ODA3LDcgKzgxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWwoY29uc3Qgdm9p
ZCAqcHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlT2JqZWN0UHRyTGFiZWwoY29u
dGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTgyNiw3ICs4MjksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBhdGNoUGFyYW1ldGVyaShHTGVudW0g
cG5hbWUsIEdMaW50IHZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVBhdGNoUGFyYW1ldGVyaShjb250ZXh0LCBwbmFtZSwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODQ0LDcgKzg0Nyw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUG9wRGVidWdHcm91cCgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC04NzEsNyArODc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcmlt
aXRpdmVCb3VuZGluZ0JveChHTGZsb2F0IG1pblgsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVQcmltaXRpdmVCb3Vu
ZGluZ0JveChjb250ZXh0LCBtaW5YLCBtaW5ZLCBtaW5aLCBtaW5XLCBtYXhYLCBtYXhZLCBtYXha
LCBtYXhXKSk7CkBAIC04OTUsOCArODk4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBQdXNoRGVidWdH
cm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUHVzaERlYnVnR3JvdXAoY29udGV4dCwgc291cmNlLCBpZCwg
bGVuZ3RoLCBtZXNzYWdlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtOTI1LDcgKzkyOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHMoR0xpbnQgeCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZVJlYWRuUGl4ZWxzKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSkpOwpAQCAtOTUwLDkgKzk1Myw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcklpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGludCAqCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBh
cmFtZXRlcklpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05NzQsOSArOTc3LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySXVpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTHVpbnQKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2Ft
cGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBs
ZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVySXVpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05OTYsOSArOTk5LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhCdWZmZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHVpbnQgYnVmZmVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4QnVmZmVy
KGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwMjQsOCArMTAyNyw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVGV4QnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZVRleEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBh
Y2tlZCwgb2Zmc2V0LCBzaXplKSk7CkBAIC0xMDUwLDkgKzEwNTMsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleFBhcmFtZXRlcklpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVy
SWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwNzQsOSArMTA3Nyw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4UGFyYW1ldGVySXVpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMdWludCAqcGFyCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0
ZXJJdWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExMDUsOCArMTEwOCw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4U3RvcmFnZTNETXVsdGlzYW1wbGUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dl
bi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50
c19nbGVzX2V4dF9hdXRvZ2VuLmNwcAppbmRleCBiZGI5ZWViMDY3NjFlODYzYTYwZTAxOGYxZDQ5
NzlmYmFhOTFlNzRhLi41MWUzMDhiYmU3NzRhZjk2YjU5ZDUzODBhMGU0ZjhiMDk5NjY5MjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3Bv
aW50c19nbGVzX2V4dF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzX2V4dF9hdXRvZ2VuLmNwcApAQCAtNDgsOSAr
NDgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VB
TkdMRShHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1p
dGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdB
cnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50
LCBiYXNlSW5zdGFuY2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODIsOSArODIs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNl
SW5zdGFuY2VBTkdMRShHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2Rl
Pihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291
bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCkBAIC0xMTgsOCArMTE4LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRShHTGVudW0gbW9k
ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9k
ZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0
YW5jZUFOR0xFKApAQCAtMTU3LDEwICsxNTcsMTAgQEAgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEUoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0Vs
ZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVt
ZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Cisg
ICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnRzLCB0eXBlUGFja2VkLCBpbmRpY2Vz
LCBpbnN0YW5jZUNvdW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVZl
cnRpY2VzLCBiYXNlSW5zdGFuY2VzLCBkcmF3Y291bnQpKTsKQEAgLTIwMSwxMSArMjAxLDExIEBA
IHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmUzREFOR0xFKEdMdWludCBzb3VyY2VJZCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOwotICAg
ICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVJRCBkZXN0SWRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KGRlc3RJZCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKKyAgICAgICAgVGV4dHVyZVRh
cmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7CisgICAgICAgIFRleHR1cmVJRCBkZXN0SWRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElk
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
Q29weVRleHR1cmUzREFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCBzb3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXRQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RJZFBhY2tlZCwgZGVzdExldmVsLCBpbnRl
cm5hbEZvcm1hdCwgZGVzdFR5cGUsIHVucGFja0ZsaXBZLApAQCAtMjU0LDEwICsyNTQsMTAgQEAg
dm9pZCBHTF9BUElFTlRSWSBDb3B5U3ViVGV4dHVyZTNEQU5HTEUoR0x1aW50IHNvdXJjZUlkLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7Ci0g
ICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJ
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElk
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJ
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
c291cmNlSWQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKKyAg
ICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5U3ViVGV4
dHVyZTNEQU5HTEUoY29udGV4dCwgc291cmNlSWRQYWNrZWQsIHNvdXJjZUxldmVsLCBkZXN0VGFy
Z2V0UGFja2VkLApAQCAtMzAxLDggKzMwMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxpdEZyYW1l
YnVmZmVyQU5HTEUoR0xpbnQgc3JjWDAsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCbGl0RnJh
bWVidWZmZXJBTkdMRShjb250ZXh0LCBzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMzMxLDggKzMzMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM1OCw4
ICszNTgsOCBAQCBHZXRUZXhJbWFnZUFOR0xFKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleEltYWdlQU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMpKTsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFJlbmRlcmJ1ZmZlckltYWdlQU5HTEUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFKGNvbnRleHQsIHRhcmdl
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKQEAgLTQxMSw4ICs0MTEsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShjb250ZXh0LCBtb2RlUGFja2VkLCBm
aXJzdCwgY291bnQsIHByaW1jb3VudCkpOwpAQCAtNDQwLDEwICs0NDAsMTAgQEAgdm9pZCBHTF9B
UElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBE
cmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJh
d0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwg
aW5kaWNlcywgcHJpbWNvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ2Myw4
ICs0NjMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHTHVp
bnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKGNvbnRleHQsIGluZGV4LCBkaXZpc29yKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDc0LDYgKzQ3NCwzNiBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZp
c29yKQogICAgIH0KIH0KIAorLy8gR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhCit2b2lk
IEdMX0FQSUVOVFJZIEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKEdMdWludCBtZW1vcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKKyAgICBFVkVOVCgiZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVB
TkdMRSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVp
bnQ2NCBzaXplID0gJWxsdSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywgR0x1aW50ICIKKyAgICAg
ICAgICAiaGFuZGxlID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbWVtb3J5LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5cGUpLCBoYW5kbGUp
OworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1v
cnlQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJ
RD4obWVtb3J5KTsKKyAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8SGFuZGxlVHlwZT4oaGFuZGxlVHlwZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUltcG9ydE1l
bW9yeVppcmNvbkhhbmRsZUFOR0xFKGNvbnRleHQsIG1lbW9yeVBhY2tlZCwgc2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZVR5cGVQYWNrZWQsIGhhbmRsZSkpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmltcG9ydE1lbW9yeVppcmNvbkhhbmRs
ZShtZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsIGhhbmRsZSk7CisgICAgICAg
IH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeVBhY2tlZCwgc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVUeXBlUGFja2VkLCBoYW5kbGUpOworICAgIH0KK30KKwogLy8gR0xfQU5H
TEVfbXVsdGlfZHJhdwogdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdBcnJheXNBTkdMRShHTGVu
dW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKmZpcnN0cywKQEAgLTQ4OSw4ICs1MTksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJh
d0FycmF5c0FOR0xFKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3
QXJyYXlzQU5HTEUoY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3RzLCBjb3VudHMsIGRyYXdjb3Vu
dCkpOwpAQCAtNTE5LDkgKzU0OSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+
KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3RzLCBjb3VudHMsIGluc3RhbmNl
Q291bnRzLCBkcmF3Y291bnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTUwLDEw
ICs1ODAsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdFbGVtZW50c0FOR0xFKEdMZW51
bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2Rl
IG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4o
bW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBy
aW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
TXVsdGlEcmF3RWxlbWVudHNBTkdMRShjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudHMsIHR5cGVQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGljZXMsIGRyYXdjb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC01ODMsOSArNjEzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+
KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZh
bGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb250ZXh0LCBtb2RlUGFja2Vk
LCBjb3VudHMsIHR5cGVQYWNrZWQsCkBAIC02MTEsOCArNjQxLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm92b2tpbmdWZXJ0ZXhBTkdMRShHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkICAgICAg
ICAgID0gRnJvbUdMPFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24+KG1vZGUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2Rl
UGFja2VkID0gRnJvbUdMPFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24+KG1vZGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUHJvdm9r
aW5nVmVydGV4QU5HTEUoY29udGV4dCwgbW9kZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC02MzIsNyArNjYyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZXF1ZXN0RXh0ZW5z
aW9uQU5HTEUoY29uc3QgR0xjaGFyICpuYW1lKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlcXVlc3RFeHRlbnNpb25BTkdMRShjb250ZXh0
LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY1MSw3ICs2ODEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIERpc2FibGVFeHRlbnNpb25BTkdMRShjb25zdCBHTGNoYXIgKm5hbWUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RGlzYWJsZUV4dGVuc2lvbkFOR0xFKGNvbnRleHQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNjc3LDcgKzcwNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbnZS
b2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCb29sZWFudlJvYnVzdEFO
R0xFKGNvbnRleHQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtNzA1LDkg
KzczNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZm
ZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVy
QmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNzMzLDggKzc2Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXR2
Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0Rmxv
YXR2Um9idXN0QU5HTEUoY29udGV4dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzYyLDggKzc5Miw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzg3LDgg
KzgxNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKGNvbnRleHQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MTMsOSAr
ODQzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShHTHVpbnQg
cHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQ
cm9ncmFtaXZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgYnVmU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg0
Myw3ICs4NzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC04Njgs
OCArODk4LDggQEAgR2V0U2hhZGVyaXZSb2J1c3RBTkdMRShHTHVpbnQgc2hhZGVyLCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGUKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
IFZhbGlkYXRlR2V0U2hhZGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCBzaGFkZXJQYWNrZWQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtODk4LDkgKzkyOCw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05MjgsOSArOTU4LDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0
YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFy
Z2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTk1Niwx
NiArOTg2LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoR0x1
aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFVuaWZvcm1mdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldFVuaWZvcm1mdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWZ2Um9i
dXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZnZSb2J1c3RB
TkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTk4NCwxNiArMTAx
NSwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKEdMdWludCBw
cm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRVbmlmb3JtaXZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdlJvYnVzdChw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICB9CiB9CkBAIC0xMDEzLDcgKzEwNDUsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0x1aW50IGlu
ZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShjb250ZXh0LCBp
bmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0xMDQxLDcgKzEwNzMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoR0x1aW50
IGluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShjb250ZXh0
LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0xMDY5LDcgKzEx
MDEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5H
TEUoR0x1aW50IGluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgaW5kZXgs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBvaW50ZXIpKTsKQEAgLTExMDcsNyArMTEzOSw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgUmVhZFBpeGVsc1JvYnVzdEFOR0xFKEdMaW50IHgsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLApAQCAtMTE0NCw4ICsxMTc2LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhJbWFnZTJEUm9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAtMTE3NCw4ICsxMjA2LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpOwpAQCAtMTIwMiw4ICsxMjM0LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQs
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpOwpAQCAtMTIzOCw4ICsxMjcw
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUoR0xlbnVtIHRh
cmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRh
cmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsCkBA
IC0xMjc3LDggKzEzMDksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlM0RSb2J1c3RBTkdM
RShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlM0RSb2J1
c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsCkBAIC0xMzE4LDkgKzEzNTAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlM0RS
b2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxl
dmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxzKSk7CkBAIC0xMzU1LDggKzEzODcs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoR0xl
bnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJn
ZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSgK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC0xMzkzLDggKzE0
MjUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4
dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAg
LTE0MzEsOCArMTQ2Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleEltYWdlM0RS
b2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2Uz
RFJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwK
QEAgLTE0NzIsOSArMTUwNCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleFN1Yklt
YWdlM0RSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
YXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YVNpemUsIGRhdGEp
KTsKQEAgLTE1MDMsOCArMTUzNSw4IEBAIEdldFF1ZXJ5aXZSb2J1c3RBTkdMRShHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMTUzMiw4ICsxNTY0LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKEdMdWludCBpZCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5T2Jq
ZWN0dWl2Um9idXN0QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cykpOwpAQCAtMTU2Miw5ICsxNTk0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQb2lu
dGVydlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmlu
ZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNTg4LDcgKzE2MjAsNyBAQCBHZXRJbnRlZ2VyaV92Um9i
dXN0QU5HTEUoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRh
cmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSkpOwpAQCAtMTYyMCw4ICsxNjUyLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUoR0xlbnVt
IHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXZSb2J1
c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xNjQ5LDcgKzE2ODEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKEdMdWludCBpbmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdlJv
YnVzdEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
KTsKQEAgLTE2NzcsNyArMTcwOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmli
SXVpdlJvYnVzdEFOR0xFKEdMdWludCBpbmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5H
TEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMTcwNCwxNiAr
MTczNiwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShHTHVp
bnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+Z2V0VW5pZm9ybXVpdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybXVp
dlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdlJv
YnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTE3MzYs
OCArMTc2OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1
c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IHVuaWZvcm1CbG9ja0luZGV4LApAQCAtMTc2Niw3ICsxNzk5LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0
SW50ZWdlcjY0dlJvYnVzdEFOR0xFKGNvbnRleHQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGRh
dGEpKTsKQEAgLTE3OTMsNyArMTgyNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcjY0
aV92Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVnZXI2NGlf
dlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0
YSkpOwpAQCAtMTgyMiw5ICsxODU1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJh
bWV0ZXJpNjR2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODQ5LDggKzE4ODIsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMdWludCBzYW1w
bGVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4o
c2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNv
bnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbSkpOwpAQCAtMTg3Nyw4
ICsxOTEwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShHTHVpbnQgc2FtcGxlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2Ft
cGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBs
ZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0p
KTsKQEAgLTE5MDYsOSArMTkzOSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTM1LDkgKzE5NjgsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk2NSw3
ICsxOTk4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9i
dXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgdGFyZ2V0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTE5OTYsOCAr
MjAyOSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5H
TEUoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJv
Z3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3Jh
bUludGVyZmFjZSwKQEAgLTIwMjcsNyArMjA2MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9v
bGVhbmlfdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCb29sZWFu
aV92Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBk
YXRhKSk7CkBAIC0yMDU1LDcgKzIwODgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE11bHRpc2Ft
cGxlZnZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRNdWx0aXNhbXBs
ZWZ2Um9idXN0QU5HTEUoY29udGV4dCwgcG5hbWUsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHZh
bCkpOwpAQCAtMjA4NSw5ICsyMTE4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWws
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0yMTE3LDkgKzIxNTAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTIxNDYsNyArMjE3OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnZSb2J1
c3RBTkdMRVJvYnVzdEFOR0xFKEdMZW51bSBwbmFtZSwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpKTsKQEAgLTIxODQsNyArMjIxNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhl
bHNSb2J1c3RBTkdMRShHTGludCB4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdM
RShjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsCkBA
IC0yMjEzLDE2ICsyMjQ2LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdlJvYnVz
dEFOR0xFKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sCisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWZ2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRuVW5pZm9ybWZ2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRu
VW5pZm9ybWZ2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgfQog
fQpAQCAtMjI0MSwxNiArMjI3NSwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtaXZS
b2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdlJvYnVzdChwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4
dC0+Z2V0blVuaWZvcm1pdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sCisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdlJvYnVz
dEFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAg
IH0KIH0KQEAgLTIyNjksMTcgKzIzMDQsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSgKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm11aXZSb2J1c3Qo
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7CiAgICAgfQogfQogCkBAIC0yMjk3LDggKzIzMzMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBu
YW1lLCBidWZTaXplLCBwYXJhbXMpKTsKQEAgLTIzMjUsOCArMjM2MSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0yMzU1LDkgKzIzOTEsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJn
ZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjM4NSw5
ICsyNDIxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTI0MTMsOCArMjQ0OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFt
ZXRlcklpdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVNh
bXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFt
ZSwgYnVmU2l6ZSwgcGFyYW0pKTsKQEAgLTI0NDEsOCArMjQ3Nyw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgYnVm
U2l6ZSwgcGFyYW0pKTsKQEAgLTI0NzAsOSArMjUwNiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNh
bXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShj
b250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDk5LDkgKzI1MzUs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUo
R0x1aW50IHNhbXBsZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1MjgsOCArMjU2NCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKEdMdWludCBpZCwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7
CkBAIC0yNTU3LDggKzI1OTMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKEdMdWludCBpZCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGlkUGFja2VkLCBw
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI1ODYsOCArMjYyMiw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdMdWludCBpZCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKSk7CkBAIC0yNjAwLDYgKzI2MzYsMzQgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVy
eU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0x1aW50IGlkLAogICAgIH0KIH0KIAorLy8gR0xfQU5H
TEVfc2VtYXBob3JlX2Z1Y2hzaWEKK3ZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0U2VtYXBob3JlWmly
Y29uSGFuZGxlQU5HTEUoR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpCit7
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIEVW
RU5UKCJnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMZW51bSBoYW5kbGVUeXBlID0gJXMs
IEdMdWludCBoYW5kbGUgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUs
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5
cGUpLAorICAgICAgICAgIGhhbmRsZSk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAgICBIYW5kbGVUeXBlIGhh
bmRsZVR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxIYW5kbGVU
eXBlPihoYW5kbGVUeXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNlbWFw
aG9yZVBhY2tlZCwgaGFuZGxlVHlwZVBhY2tlZCwgaGFuZGxlKSk7CisgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aW1wb3J0U2VtYXBob3Jl
WmlyY29uSGFuZGxlKHNlbWFwaG9yZVBhY2tlZCwgaGFuZGxlVHlwZVBhY2tlZCwgaGFuZGxlKTsK
KyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEltcG9ydFNlbWFwaG9yZVppcmNvbkhh
bmRsZUFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZVR5cGVQYWNrZWQsIGhhbmRsZSk7CisgICAgfQorfQorCiAv
LyBHTF9BTkdMRV90ZXh0dXJlX2V4dGVybmFsX3VwZGF0ZQogdm9pZCBHTF9BUElFTlRSWSBUZXhJ
bWFnZTJERXh0ZXJuYWxBTkdMRShHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKQEAgLTI2MjEsOCArMjY4NSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUoR0xlbnVtIHRhcmdldCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRShjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC0yNjQ1LDggKzI3
MDksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEludmFsaWRhdGVUZXh0dXJlQU5HTEUoR0xlbnVtIHRh
cmdldCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5
cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVJbnZhbGlkYXRlVGV4dHVyZUFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjc1LDggKzI3MzksOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQU5HTEUoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQU5HTEUoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKQEAgLTI3MDUsOCArMjc2
OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdkFOR0xFKEdMZW51
bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dkFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsKQEAg
LTI3MzMsOCArMjc5Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJm
dkFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdkFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBw
YXJhbXMpKTsKQEAgLTI3NTYsOCArMjgyMCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TXVsdGlz
YW1wbGVmdkFOR0xFKEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QU5HTEUoY29udGV4dCwgcG5h
bWUsIGluZGV4LCB2YWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0yNzc1LDcgKzI4MzksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZU1hc2tpQU5HTEUoR0x1
aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1wbGVNYXNraUFOR0xFKGNvbnRleHQs
IG1hc2tOdW1iZXIsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjgwMCw4
ICsyODY0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoR0x1aW50IHNoYWRlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKSk7CkBAIC0yODI1
LDE3ICsyODg5LDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9N
SVVNKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgbmFtZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlQmluZFVuaWZvcm1Mb2NhdGlvbkNI
Uk9NSVVNKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBuYW1lKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
YmluZFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgbmFtZSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kVW5pZm9ybUxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBuYW1lKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRV
bmlmb3JtTG9jYXRpb25DSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQs
IG5hbWUpOwogICAgIH0KIH0KIApAQCAtMjg0OCw5ICsyOTEzLDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsIEdMdWludCBk
ZXN0SWQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCBzb3Vy
Y2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJj
ZUlkKTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOworICAgICAgICBUZXh0dXJl
SUQgZGVzdElkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KGRlc3RJZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNI
Uk9NSVVNKGNvbnRleHQsIHNvdXJjZUlkUGFja2VkLCBkZXN0SWRQYWNrZWQpKTsKQEAgLTI4ODgs
MTEgKzI5NTMsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4dHVyZUNIUk9NSVVNKEdMdWlu
dCBzb3VyY2VJZCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlE
IHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
c291cmNlSWQpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7Ci0gICAgICAgIFRl
eHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlSUQ+KGRlc3RJZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKKyAg
ICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7CisgICAgICAgIFRleHR1cmVJ
RCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4oZGVzdElkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgc291cmNlSWRQYWNrZWQsIHNvdXJjZUxldmVsLCBkZXN0VGFy
Z2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0SWRQYWNrZWQs
IGRlc3RMZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlLCB1bnBhY2tGbGlwWSwKQEAgLTI5
MzcsMTEgKzMwMDIsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5U3ViVGV4dHVyZUNIUk9NSVVN
KEdMdWludCBzb3VyY2VJZCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4
dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVJRD4oc291cmNlSWQpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7Ci0gICAg
ICAgIFRleHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlSUQ+KGRlc3RJZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlk
KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7CisgICAgICAgIFRl
eHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4oZGVzdElkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgc291cmNlSWRQYWNrZWQsIHNvdXJjZUxldmVs
LCBkZXN0VGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
SWRQYWNrZWQsIGRlc3RMZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwKQEAgLTI5NjcsNyArMzAzMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJhZ2VNb2R1bGF0
aW9uQ0hST01JVU0oR0xlbnVtIGNvbXBvbmVudHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0o
Y29udGV4dCwgY29tcG9uZW50cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yOTc4
LDI4NDkgKzMwNDMsMjU1MiBAQCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyYWdlTW9kdWxhdGlvbkNI
Uk9NSVVNKEdMZW51bSBjb21wb25lbnRzKQogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBN
YXRyaXhMb2FkZkNIUk9NSVVNKEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptYXRy
aXgpCisvLyBHTF9DSFJPTUlVTV9sb3NlX2NvbnRleHQKK3ZvaWQgR0xfQVBJRU5UUlkgTG9zZUNv
bnRleHRDSFJPTUlVTShHTGVudW0gY3VycmVudCwgR0xlbnVtIG90aGVyKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xNYXRy
aXhMb2FkZkNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbWF0cml4
TW9kZSA9ICVzLCBjb25zdCBHTGZsb2F0ICogbWF0cml4ID0gMHglMDE2IiBQUkl4UFRSICIiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgbWF0cml4TW9kZSksICh1aW50cHRyX3QpbWF0cml4KTsKKyAgICBFVkVOVCgiZ2xM
b3NlQ29udGV4dENIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGN1cnJlbnQgPSAlcywg
R0xlbnVtIG90aGVyID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkdyYXBoaWNzUmVzZXRTdGF0dXMsIGN1cnJlbnQpLAorICAgICAgICAg
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHcmFwaGljc1Jlc2V0U3RhdHVzLCBvdGhlcikp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdHJpeExvYWRmQ0hST01JVU0oY29udGV4dCwgbWF0cml4
TW9kZSwgbWF0cml4KSk7CisgICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgY3VycmVudFBhY2tl
ZCA9IEZyb21HTDxHcmFwaGljc1Jlc2V0U3RhdHVzPihjdXJyZW50KTsKKyAgICAgICAgR3JhcGhp
Y3NSZXNldFN0YXR1cyBvdGhlclBhY2tlZCAgID0gRnJvbUdMPEdyYXBoaWNzUmVzZXRTdGF0dXM+
KG90aGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlTG9zZUNvbnRleHRDSFJPTUlVTShjb250ZXh0LCBjdXJyZW50UGFja2VkLCBvdGhlclBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPm1hdHJpeExvYWRmKG1hdHJpeE1vZGUsIG1hdHJpeCk7CisgICAgICAgICAgICBj
b250ZXh0LT5sb3NlQ29udGV4dChjdXJyZW50UGFja2VkLCBvdGhlclBhY2tlZCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRyaXhMb2FkZkNIUk9NSVVNLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbWF0cml4TW9kZSwgbWF0cml4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShM
b3NlQ29udGV4dENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY3VycmVudFBhY2tlZCwg
b3RoZXJQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNYXRyaXhMb2FkSWRl
bnRpdHlDSFJPTUlVTShHTGVudW0gbWF0cml4TW9kZSkKKy8vIEdMX0VYVF9ibGVuZF9mdW5jX2V4
dGVuZGVkCit2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUKEdMdWludCBw
cm9ncmFtLCBHTHVpbnQgY29sb3IsIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsTWF0cml4
TG9hZElkZW50aXR5Q0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbWF0cml4TW9kZSA9
ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWZhdWx0R3JvdXAsIG1hdHJpeE1vZGUpKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsQmlu
ZEZyYWdEYXRhTG9jYXRpb25FWFQiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTHVpbnQgY29sb3IgPSAldSwgY29uc3QgR0xjaGFyICpuYW1lID0gMHglMDE2
IiBQUkl4UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGNv
bG9yLCAodWludHB0cl90KW5hbWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdHJpeExvYWRJZGVu
dGl0eUNIUk9NSVVNKGNvbnRleHQsIG1hdHJpeE1vZGUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25FWFQoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgY29sb3IsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5tYXRyaXhMb2FkSWRlbnRpdHkobWF0cml4TW9kZSk7
CisgICAgICAgICAgICBjb250ZXh0LT5iaW5kRnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtUGFja2Vk
LCBjb2xvciwgbmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRyaXhM
b2FkSWRlbnRpdHlDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1hdHJpeE1vZGUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY29sb3IsIG5hbWUpOwogICAgIH0KIH0KIAotLy8g
R0xfQ0hST01JVU1fbG9zZV9jb250ZXh0Ci12b2lkIEdMX0FQSUVOVFJZIExvc2VDb250ZXh0Q0hS
T01JVU0oR0xlbnVtIGN1cnJlbnQsIEdMZW51bSBvdGhlcikKK3ZvaWQgR0xfQVBJRU5UUlkgQmlu
ZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNvbG9yTnVtYmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xMb3NlQ29udGV4dENIUk9NSVVNIiwgImNvbnRleHQg
PSAlZCwgR0xlbnVtIGN1cnJlbnQgPSAlcywgR0xlbnVtIG90aGVyID0gJXMiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdyYXBoaWNzUmVzZXRT
dGF0dXMsIGN1cnJlbnQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpH
cmFwaGljc1Jlc2V0U3RhdHVzLCBvdGhlcikpOworICAgIEVWRU5UKCJnbEJpbmRGcmFnRGF0YUxv
Y2F0aW9uSW5kZXhlZEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dy
YW0gPSAldSwgR0x1aW50IGNvbG9yTnVtYmVyID0gJXUsIEdMdWludCBpbmRleCA9ICV1LCBjb25z
dCAiCisgICAgICAgICAgIkdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGNvbG9yTnVtYmVyLCBpbmRleCwgKHVpbnRwdHJf
dCluYW1lKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgR3JhcGhpY3NSZXNl
dFN0YXR1cyBjdXJyZW50UGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPEdyYXBoaWNzUmVzZXRT
dGF0dXM+KGN1cnJlbnQpOwotICAgICAgICBHcmFwaGljc1Jlc2V0U3RhdHVzIG90aGVyUGFja2Vk
ICAgICAgICAgICAgICAgPSBGcm9tR0w8R3JhcGhpY3NSZXNldFN0YXR1cz4ob3RoZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUxvc2VDb250ZXh0Q0hST01JVU0oY29u
dGV4dCwgY3VycmVudFBhY2tlZCwgb3RoZXJQYWNrZWQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBjb2xvck51bWJlciwgaW5kZXgsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5sb3NlQ29udGV4dChjdXJy
ZW50UGFja2VkLCBvdGhlclBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5kRnJhZ0Rh
dGFMb2NhdGlvbkluZGV4ZWQocHJvZ3JhbVBhY2tlZCwgY29sb3JOdW1iZXIsIGluZGV4LCBuYW1l
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKExvc2VDb250ZXh0Q0hST01JVU0s
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjdXJyZW50UGFja2VkLCBvdGhlclBhY2tlZCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb2xv
ck51bWJlciwgaW5kZXgsIG5hbWUpOwogICAgIH0KIH0KIAotLy8gR0xfQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmcKLUdMdWludCBHTF9BUElFTlRSWSBHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFu
Z2UpCitHTGludCBHTF9BUElFTlRSWSBHZXRGcmFnRGF0YUluZGV4RVhUKEdMdWludCBwcm9ncmFt
LCBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdlblBhdGhzQ0hST01JVU0iLCAiY29udGV4
dCA9ICVkLCBHTHNpemVpIHJhbmdlID0gJWQiLCBDSUQoY29udGV4dCksIHJhbmdlKTsKKyAgICBF
VkVOVCgiZ2xHZXRGcmFnRGF0YUluZGV4RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIg
IiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBwcm9ncmFtLCAodWludHB0cl90KW5hbWUpOwog
Ci0gICAgR0x1aW50IHJldHVyblZhbHVlOworICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
blBhdGhzQ0hST01JVU0oY29udGV4dCwgcmFuZ2UpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0RnJhZ0RhdGFJbmRleEVYVChjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZW5QYXRocyhyYW5nZSk7CisgICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldEZyYWdEYXRhSW5kZXgocHJvZ3JhbVBhY2tlZCwgbmFt
ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZW5QYXRoc0NIUk9N
SVVNLCBHTHVpbnQ+KCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRGcmFnRGF0YUluZGV4RVhULCBHTGludD4oKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblBhdGhzQ0hST01JVU0sIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCByYW5nZSwgcmV0dXJuVmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dEZyYWdEYXRhSW5kZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBu
YW1lLCByZXR1cm5WYWx1ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01J
VU0sIEdMdWludD4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6R2V0RnJhZ0RhdGFJbmRleEVYVCwgR0xpbnQ+KCk7CiAgICAgfQogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVQYXRoc0NI
Uk9NSVVNKEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5nZSkKLXsKLSAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlUGF0aHND
SFJPTUlVTSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmaXJzdCA9ICV1LCBHTHNpemVpIHJhbmdl
ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgZmlyc3QsIHJhbmdlKTsKLQotICAgIGlm
IChjb250ZXh0KQotICAgIHsKLSAgICAgICAgUGF0aElEIGZpcnN0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4oZmlyc3QpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVBhdGhzQ0hST01JVU0oY29u
dGV4dCwgZmlyc3RQYWNrZWQsIHJhbmdlKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUGF0aHMoZmlyc3RQYWNrZWQsIHJh
bmdlKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVBhdGhzQ0hST01J
VU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmaXJzdFBhY2tlZCwgcmFuZ2UpOwotICAgIH0KLX0K
LQotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUGF0aENIUk9NSVVNKEdMdWludCBwYXRoKQorR0xp
bnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVChHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImds
SXNQYXRoQ0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1IiwgQ0lEKGNv
bnRleHQpLCBwYXRoKTsKKyAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbklu
ZGV4RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSA9ICVzLCBjb25zdCBHTGNoYXIgKm5hbWUgPSAiCisgICAg
ICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dy
YW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBwcm9ncmFt
SW50ZXJmYWNlKSwKKyAgICAgICAgICAodWludHB0cl90KW5hbWUpOwogCi0gICAgR0xib29sZWFu
IHJldHVyblZhbHVlOworICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNQYXRoQ0hST01JVU0o
Y29udGV4dCwgcGF0aFBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzUGF0
aChwYXRoUGFja2VkKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0KKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5nZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4KHByb2dyYW1QYWNrZWQs
IHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNQYXRoQ0hST01JVU0sIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIHJldHVy
blZhbHVlID0KKyAgICAgICAgICAgICAgICBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVCwgR0xpbnQ+KCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1BhdGhDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHBhdGhQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlLCBu
YW1lLCByZXR1cm5WYWx1ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUGF0aENIUk9NSVVN
LCBHTGJvb2xlYW4+KCk7CisgICAgICAgIHJldHVyblZhbHVlID0KKyAgICAgICAgICAgIEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbklu
ZGV4RVhULCBHTGludD4oKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFBhdGhDb21tYW5kc0NIUk9NSVVNKEdMdWludCBwYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5k
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29y
ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNv
b3JkcykKKy8vIEdMX0VYVF9kZWJ1Z19tYXJrZXIKK3ZvaWQgR0xfQVBJRU5UUlkgSW5zZXJ0RXZl
bnRNYXJrZXJFWFQoR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFya2VyKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xQYXRoQ29tbWFuZHNDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHBhdGggPSAldSwgR0xzaXplaSBudW1Db21tYW5kcyA9ICVkLCBjb25zdCBHTHVieXRlICogY29t
bWFuZHMgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6
ZWkgbnVtQ29vcmRzID0gJWQsIEdMZW51bSBjb29yZFR5cGUgPSAlcywgY29uc3Qgdm9pZCogY29v
cmRzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcGF0aCwg
bnVtQ29tbWFuZHMsICh1aW50cHRyX3QpY29tbWFuZHMsIG51bUNvb3JkcywKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb29yZFR5cGUpLCAodWlu
dHB0cl90KWNvb3Jkcyk7CisgICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRo
ZSBFWFRfZGVidWdfbWFya2VyIGVudHJ5IHBvaW50cy4KKyAgICAvLyBJdCBjYW4gaW50ZXJmZXJl
IHdpdGggdGhlIGRlYnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KKyAgICAvLyBF
VkVOVCgiZ2xJbnNlcnRFdmVudE1hcmtlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbGVu
Z3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbWFya2VyID0KKyAgICAvLyAweCUwMTYiIFBSSXhQVFIg
IiIsIENJRChjb250ZXh0KSwgbGVuZ3RoLCAodWludHB0cl90KW1hcmtlcik7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVBhdGhDb21tYW5kc0NIUk9NSVVNKGNvbnRleHQsIHBhdGhQYWNr
ZWQsIG51bUNvbW1hbmRzLCBjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cGF0
aENvbW1hbmRzKHBhdGhQYWNrZWQsIG51bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRzLCBj
b29yZFR5cGUsIGNvb3Jkcyk7CisgICAgICAgICAgICBjb250ZXh0LT5pbnNlcnRFdmVudE1hcmtl
cihsZW5ndGgsIG1hcmtlcik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQYXRo
Q29tbWFuZHNDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIG51bUNv
bW1hbmRzLCBjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICBudW1Db29yZHMsIGNvb3Jk
VHlwZSwgY29vcmRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJbnNlcnRFdmVudE1hcmtlckVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVt
IHBuYW1lLCBHTGZsb2F0IHZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQb3BHcm91cE1hcmtlckVY
VCgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwot
ICAgIEVWRU5UKCJnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHZhbHVl
ID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCB2YWx1ZSk7CisgICAgLy8gRG9uJ3QgcnVu
IHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVidWdfbWFya2VyIGVudHJ5IHBvaW50cy4K
KyAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGRlYnVnIGV2ZW50cyBiZWluZyBzZXQg
YnkgdGhlIGNhbGxlci4KKyAgICAvLyBFVkVOVCgiZ2xQb3BHcm91cE1hcmtlckVYVCIsICJjb250
ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQ
YXRoUGFyYW1ldGVyZkNIUk9NSVVNKGNvbnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSkp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BHcm91cE1h
cmtlckVYVChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cGF0aFBhcmFtZXRlcmYocGF0aFBhY2tlZCwgcG5hbWUsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBvcEdyb3VwTWFya2VyKCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQYXRoUGFyYW1ldGVyZkNIUk9NSVVNLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQb3BHcm91cE1hcmtlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRoLCBH
TGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQdXNoR3JvdXBNYXJr
ZXJFWFQoR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFya2VyKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xQYXRo
UGFyYW1ldGVyaUNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0
aCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgdmFsdWUgPSAlZCIsIENJRChjb250ZXh0
KSwgcGF0aCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBwbmFtZSksIHZhbHVlKTsKKyAgICAvLyBEb24ndCBydW4gdGhlIEVWRU5UKCkgbWFjcm8g
b24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzLgorICAgIC8vIEl0IGNhbiBpbnRl
cmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNldCBieSB0aGUgY2FsbGVyLgorICAg
IC8vIEVWRU5UKCJnbFB1c2hHcm91cE1hcmtlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkg
bGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbWFya2VyID0KKyAgICAvLyAweCUwMTYiIFBSSXhQ
VFIgIiIsIENJRChjb250ZXh0KSwgbGVuZ3RoLCAodWludHB0cl90KW1hcmtlcik7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGhQYXJhbWV0ZXJpQ0hST01JVU0oY29udGV4dCwgcGF0
aFBhY2tlZCwgcG5hbWUsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQoY29udGV4dCwgbGVu
Z3RoLCBtYXJrZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wYXRoUGFyYW1ldGVyaShwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgbWFya2VyKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0s
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFB1c2hHcm91cE1hcmtlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGxlbmd0aCwgbWFya2VyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UGF0aFBh
cmFtZXRlcmZ2Q0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFs
dWUpCisvLyBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlcgordm9pZCBHTF9BUElFTlRSWSBEaXNj
YXJkRnJhbWVidWZmZXJFWFQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHBhdGggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKiB2YWx1ZSA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdCl2YWx1
ZSk7CisgICAgRVZFTlQoImdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMgPSAl
ZCwgY29uc3QgR0xlbnVtICIKKyAgICAgICAgICAiKmF0dGFjaG1lbnRzID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAgKHVp
bnRwdHJfdClhdHRhY2htZW50cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFBhdGhJRCBwYXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
YXRoSUQ+KHBhdGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFBh
dGhQYXJhbWV0ZXJmdkNIUk9NSVVNKGNvbnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSkp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJFWFQoY29udGV4dCwgdGFyZ2V0LCBu
dW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRQYXRoUGFyYW1ldGVyZnYocGF0aFBh
Y2tlZCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRpc2NhcmRGcmFtZWJ1
ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoRGlzY2FyZEZyYW1lYnVmZmVyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBudW1BdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50cyk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKEdM
dWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSkKKy8vIEdMX0VYVF9kaXNqb2lu
dF90aW1lcl9xdWVyeQordm9pZCBHTF9BUElFTlRSWSBCZWdpblF1ZXJ5RVhUKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpZCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0iLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBwbmFtZSA9ICVz
LCBHTGludCAqIHZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5h
bWUpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xCZWdpblF1ZXJ5RVhUIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaWQgPSAldSIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlUYXJnZXQs
IHRhcmdldCksIGlkKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElE
IHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4o
cGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UGF0aFBhcmFt
ZXRlcml2Q0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKSk7CisgICAg
ICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQmVnaW5RdWVyeUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGlkUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0
UGF0aFBhcmFtZXRlcml2KHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBj
b250ZXh0LT5iZWdpblF1ZXJ5KHRhcmdldFBhY2tlZCwgaWRQYWNrZWQpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0sIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEJlZ2luUXVlcnlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IGlkUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUGF0aFN0ZW5jaWxGdW5j
Q0hST01JVU0oR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCit2b2lkIEdMX0FQ
SUVOVFJZIERlbGV0ZVF1ZXJpZXNFWFQoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZF
TlQoImdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSBmdW5jID0gJXMsIEdMaW50IHJlZiA9ICVkLCBHTHVpbnQgbWFzayA9ICV1IiwgQ0lE
KGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0
R3JvdXAsIGZ1bmMpLCByZWYsIG1hc2spOworICAgIEVWRU5UKCJnbERlbGV0ZVF1ZXJpZXNFWFQi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQg
KmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1
aW50cHRyX3QpaWRzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShjb250ZXh0LCBm
dW5jLCByZWYsIG1hc2spKTsKKyAgICAgICAgY29uc3QgUXVlcnlJRCAqaWRzUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgUXVlcnlJRCAqPihpZHMpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RGVsZXRlUXVlcmllc0VYVChjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wYXRoU3RlbmNpbEZ1
bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJpZXMo
biwgaWRzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGhTdGVu
Y2lsRnVuY0NIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnVuYywgcmVmLCBtYXNrKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVRdWVyaWVzRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbiwgaWRzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNp
bEZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1h
c2spCit2b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5RVhUKEdMZW51bSB0YXJnZXQpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJn
bFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgcGF0aCA9ICV1LCBHTGVudW0gZmlsbE1vZGUgPSAlcywgR0x1aW50IG1hc2sgPSAldSIsIENJ
RChjb250ZXh0KSwKLSAgICAgICAgICBwYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCBmaWxsTW9kZSksIG1hc2spOworICAgIEVWRU5UKCJnbEVuZFF1ZXJ5RVhU
IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKGNv
bnRleHQsIHBhdGhQYWNrZWQsIGZpbGxNb2RlLCBtYXNrKSk7CisgICAgICAgIFF1ZXJ5VHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5
VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0
ZW5jaWxGaWxsUGF0aChwYXRoUGFja2VkLCBmaWxsTW9kZSwgbWFzayk7CisgICAgICAgICAgICBj
b250ZXh0LT5lbmRRdWVyeSh0YXJnZXRQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
YXRoUGFja2VkLCBmaWxsTW9kZSwgbWFzayk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRW5kUXVl
cnlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBH
TGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKQordm9pZCBHTF9BUElFTlRSWSBHZW5RdWVyaWVz
RVhUKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxTdHJva2VQYXRoQ0hS
T01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMaW50
IHJlZmVyZW5jZSA9ICVkLCBHTHVpbnQgbWFzayA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAg
ICAgIHBhdGgsIHJlZmVyZW5jZSwgbWFzayk7CisgICAgRVZFTlQoImdsR2VuUXVlcmllc0VYVCIs
ICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpaWRzKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHBhdGhQYWNrZWQsIHJlZmVyZW5jZSwgbWFzaykpOworICAgICAgICBRdWVyeUlE
ICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeUlEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZW5RdWVyaWVzRVhUKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnN0ZW5jaWxTdHJva2VQYXRoKHBhdGhQYWNrZWQsIHJlZmVyZW5jZSwgbWFzayk7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZW5RdWVyaWVzKG4sIGlkc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcGF0aFBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZW5RdWVyaWVzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWlu
dCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQordm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjR2
RVhUKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsQ292ZXJGaWxsUGF0aENI
Uk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIGNvdmVyTW9k
ZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSkpOworICAgIEVWRU5UKCJnbEdldElu
dGVnZXI2NHZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVz
LCBHTGludDY0ICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBOYW1lLCBwbmFtZSksICh1aW50
cHRyX3QpZGF0YSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBw
YXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBh
dGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvdmVyRmlsbFBhdGhD
SFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBjb3Zlck1vZGUpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVnZXI2NHZF
WFQoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3ZlckZpbGxQYXRoKHBhdGhQYWNrZWQsIGNv
dmVyTW9kZSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjR2KHBuYW1lLCBkYXRh
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKENvdmVyRmlsbFBhdGhDSFJPTUlV
TSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGNvdmVyTW9kZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0SW50ZWdlcjY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBu
YW1lLCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQ292ZXJTdHJva2VQYXRo
Q0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCit2b2lkIEdMX0FQSUVOVFJZ
IEdldFF1ZXJ5T2JqZWN0aTY0dkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAq
cGFyYW1zKQogewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKLSAgICBFVkVOVCgiZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTSIsICJjb250ZXh0ID0gJWQs
IEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAlcyIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBwYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCBjb3Zlck1vZGUpKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0R2xvYmFsQ29udGV4dCgp
OworICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludDY0ICpwYXJh
bXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUp
LAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgY292ZXJN
b2RlKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKGNv
bnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Y292ZXJTdHJva2VQYXRoKHBhdGhQ
YWNrZWQsIGNvdmVyTW9kZSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdGk2
NHYoaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoQ292ZXJTdHJva2VQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRo
UGFja2VkLCBjb3Zlck1vZGUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0
aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit2b2lkIEdM
X0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpCiB7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gZmlsbE1v
ZGUgPSAlcywgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtICIKLSAgICAgICAgICAiY292ZXJNb2Rl
ID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZmlsbE1vZGUpLCBtYXNrLAotICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSkpOworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsR2V0UXVl
cnlPYmplY3RpdkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUs
IEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpR
dWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBh
cmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQsIHBhdGhQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLCBjb3Zl
ck1vZGUpKTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2RVhUKGNv
bnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQ
YXRoKHBhdGhQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUpOworICAgICAgICAgICAg
Y29udGV4dC0+Z2V0UXVlcnlPYmplY3RpdihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJP
TUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGZpbGxNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgIG1hc2ssIGNvdmVyTW9kZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0UXVlcnlPYmplY3RpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5Db3Zl
clN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvdmVyTW9kZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dkVYVChHTHVp
bnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1
aW50IHBhdGggPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWludCBtYXNrID0gJXUsIEdM
ZW51bSAiCi0gICAgICAgICAgImNvdmVyTW9kZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHBhdGgsIHJlZmVyZW5jZSwgbWFzaywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpKTsKKyAgICBFVkVOVCgiZ2xHZXRRdWVy
eU9iamVjdHVpNjR2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAl
dSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRy
X3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBh
dGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0
aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwYXRoUGFja2VkLCByZWZlcmVuY2UsIG1h
c2ssIGNvdmVyTW9kZSkpOworICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
dWk2NHZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aChwYXRoUGFja2VkLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSk7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpNjR2KGlkUGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxUaGVu
Q292ZXJTdHJva2VQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdHVpNjR2RVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKQordm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVp
dkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbENv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xzaXplaSBudW1QYXRoID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qgdm9p
ZCAqIHBhdGhzID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBH
THVpbnQgcGF0aEJhc2UgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICVzLCBHTGVudW0gdHJhbnNm
b3JtVHlwZSA9ICVzLCBjb25zdCBHTGZsb2F0ICIKLSAgICAgICAgICAiKiB0cmFuc2Zvcm1WYWx1
ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBudW1QYXRo
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwYXRoTmFtZVR5cGUp
LAotICAgICAgICAgICh1aW50cHRyX3QpcGF0aHMsIHBhdGhCYXNlLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpLAotICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9ybVR5cGUpLCAodWludHB0
cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlPYmplY3R1aXZFWFQi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgR0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFy
YW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvdmVyRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Zlck1v
ZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcykpOworICAgICAgICBRdWVyeUlEIGlk
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVy
eUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+Y292ZXJGaWxsUGF0aEluc3RhbmNlZChudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBh
dGhzLCBwYXRoQmFzZVBhY2tlZCwgY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAg
ICAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgY292ZXJNb2Rl
LCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFF1ZXJ5T2JqZWN0dWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5aXZFWFQoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBu
dW1QYXRoID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qgdm9pZCAqIHBhdGhz
ID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQgcGF0
aEJhc2UgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICVzLCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9
ICVzLCBjb25zdCBHTGZsb2F0ICIKLSAgICAgICAgICAiKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBudW1QYXRoLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwYXRoTmFtZVR5cGUpLAotICAgICAg
ICAgICh1aW50cHRyX3QpcGF0aHMsIHBhdGhCYXNlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9ybVR5cGUpLCAodWludHB0cl90KXRyYW5z
Zm9ybVZhbHVlcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlpdkVYVCIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQg
KnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
ICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBh
dGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51bVBhdGgsIHBhdGhO
YW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3Jt
VmFsdWVzKSk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlpdkVYVChj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWQobnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY292ZXJNb2RlLCB0
cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
UXVlcnlpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5z
Zm9ybVZhbHVlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlpdkVYVCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xz
aXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNRdWVyeUVYVChHTHVpbnQgaWQp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAg
IEVWRU5UKCJnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0iLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbnVtUGF0aCA9ICVkLCBHTGVudW0gcGF0aE5hbWVUeXBl
ID0gJXMsIGNvbnN0IHZvaWQgKiBwYXRocyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRS
Ci0gICAgICAgICAgIiwgR0x1aW50IHBhdGhCYXNlID0gJXUsIEdMaW50IHJlZmVyZW5jZSA9ICVk
LCBHTHVpbnQgbWFzayA9ICV1LCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9ICIKLSAgICAgICAgICAi
JXMsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBudW1QYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCBwYXRoTmFtZVR5cGUpLAotICAgICAgICAgICh1aW50cHRyX3Qp
cGF0aHMsIHBhdGhCYXNlLCByZWZlcmVuY2UsIG1hc2ssCi0gICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHJhbnNmb3JtVHlwZSksICh1aW50cHRyX3Qp
dHJhbnNmb3JtVmFsdWVzKTsKKyAgICBFVkVOVCgiZ2xJc1F1ZXJ5RVhUIiwgImNvbnRleHQgPSAl
ZCwgR0x1aW50IGlkID0gJXUiLCBDSUQoY29udGV4dCksIGlkKTsKIAorICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRo
QmFzZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGhC
YXNlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwg
cGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFs
dWVzKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNRdWVyeUVYVChjb250ZXh0LCBpZFBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMs
IHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMp
OworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1F1ZXJ5KGlkUGFja2VkKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUXVlcnlFWFQsIEdMYm9v
bGVhbj4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1QYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBy
ZWZlcmVuY2UsIG1hc2ssIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgdHJh
bnNmb3JtVmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1F1ZXJ5RVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNRdWVyeUVYVCwgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRo
QmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcykKK3ZvaWQgR0xfQVBJRU5UUlkgUXVlcnlDb3VudGVyRVhUKEdMdWludCBpZCwgR0xl
bnVtIHRhcmdldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0iLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbnVtUGF0aHMgPSAlZCwgR0xlbnVtIHBh
dGhOYW1lVHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAgICAgICAgIjB4JTAx
NiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gZmls
bE1vZGUgPSAlcywgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUgPSAiCi0g
ICAgICAgICAgIiVzLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbnVtUGF0aHMsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAg
KHVpbnRwdHJfdClwYXRocywgcGF0aEJhc2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpE
ZWZhdWx0R3JvdXAsIGZpbGxNb2RlKSwgbWFzaywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0cmFuc2Zvcm1UeXBlKSwgKHVpbnRwdHJfdCl0cmFu
c2Zvcm1WYWx1ZXMpOworICAgIEVWRU5UKCJnbFF1ZXJ5Q291bnRlckVYVCIsICJjb250ZXh0ID0g
JWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksIGlk
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFy
Z2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoQmFz
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGhCYXNl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVuY2lsRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBmaWxsTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaywgdHJhbnNmb3JtVHlwZSwg
dHJhbnNmb3JtVmFsdWVzKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAg
UXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKGNvbnRleHQsIGlkUGFj
a2VkLCB0YXJnZXRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQobnVtUGF0aHMs
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBl
LCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICAgICAgY29udGV4dC0+cXVlcnlDb3VudGVyKGlk
UGFja2VkLCB0YXJnZXRQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBu
dW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRo
QmFzZVBhY2tlZCwgZmlsbE1vZGUsIG1hc2ssIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShRdWVyeUNv
dW50ZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgdGFyZ2V0UGFja2VkKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxN
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKKy8vIEdMX0VYVF9k
cmF3X2J1ZmZlcnMKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0J1ZmZlcnNFWFQoR0xzaXplaSBuLCBj
b25zdCBHTGVudW0gKmJ1ZnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG51bVBhdGhz
ID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qgdm9pZCAqIHBhdGhzID0gIgot
ICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQgcGF0aEJhc2Ug
PSAldSwgR0xlbnVtIGZpbGxNb2RlID0gJXMsIEdMdWludCBtYXNrID0gJXUsIEdMZW51bSBjb3Zl
ck1vZGUgPSAlcywgIgotICAgICAgICAgICJHTGVudW0gdHJhbnNmb3JtVHlwZSA9ICVzLCBjb25z
dCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgbnVtUGF0aHMsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpE
ZWZhdWx0R3JvdXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXRocywg
cGF0aEJhc2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGZpbGxN
b2RlKSwgbWFzaywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCBjb3Zlck1vZGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9ybVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVl
cyk7CisgICAgRVZFTlQoImdsRHJhd0J1ZmZlcnNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTGVudW0gKmJ1ZnMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAgICAgICAodWludHB0cl90KWJ1ZnMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoQmFzZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51
bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgZmlsbE1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIGNvdmVyTW9kZSwgdHJhbnNmb3Jt
VHlwZSwgdHJhbnNmb3JtVmFsdWVzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZURyYXdCdWZmZXJzRVhUKGNvbnRleHQsIG4sIGJ1ZnMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQobnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGF0aEJhc2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwg
dHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdCdWZmZXJzKG4sIGJ1
ZnMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1QYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tl
ZCwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdC
dWZmZXJzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgYnVmcyk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0oR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCisvLyBHTF9F
WFRfZHJhd19idWZmZXJzX2luZGV4ZWQKK3ZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNl
cGFyYXRlaUVYVChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAg
RVZFTlQoImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBudW1QYXRocyA9ICVkLCBHTGVudW0gcGF0
aE5hbWVUeXBlID0gJXMsIGNvbnN0IHZvaWQgKiBwYXRocyA9ICIKLSAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0x1aW50IHBhdGhCYXNlID0gJXUsIEdMaW50IHJlZmVy
ZW5jZSA9ICVkLCBHTHVpbnQgbWFzayA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXMsICIKLSAg
ICAgICAgICAiR0xlbnVtIHRyYW5zZm9ybVR5cGUgPSAlcywgY29uc3QgR0xmbG9hdCAqIHRyYW5z
Zm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IG51bVBhdGhzLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwYXRo
TmFtZVR5cGUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGF0aHMsIHBhdGhCYXNlLCByZWZlcmVu
Y2UsIG1hc2ssCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRH
cm91cCwgY292ZXJNb2RlKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCB0cmFuc2Zvcm1UeXBlKSwgKHVpbnRwdHJfdCl0cmFuc2Zvcm1WYWx1ZXMp
OworICAgIEVWRU5UKCJnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xlbnVtIG1vZGVSR0IgPSAlcywgR0xlbnVt
IG1vZGVBbHBoYSA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGJ1ZiwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlUkdCKSwKKyAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIG1v
ZGVBbHBoYSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQgcGF0
aEJhc2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRo
QmFzZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNpbFRoZW5D
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNl
UGFja2VkLCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ss
IGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWlFWFQoY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhdGhCYXNlUGFja2VkLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9y
bVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEVxdWF0
aW9uU2VwYXJhdGVpKGJ1ZiwgbW9kZVJHQiwgbW9kZUFscGhhKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAg
ICBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLCBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3Jt
VmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0o
R0x1aW50IHByb2dyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit2b2lkIEdMX0FQSUVO
VFJZIEJsZW5kRXF1YXRpb25pRVhUKEdMdWludCBidWYsIEdMZW51bSBtb2RlKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xC
aW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtcyA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBjb25zdCBHTGNo
YXIgKiBuYW1lID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtcywgbG9jYXRpb24sICh1aW50cHRyX3QpbmFtZSk7CisgICAg
RVZFTlQoImdsQmxlbmRFcXVhdGlvbmlFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVmID0g
JXUsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgYnVmLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIG1vZGUpKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1z
UGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbXMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlQmluZEZyYWdtZW50
SW5wdXRMb2NhdGlvbkNIUk9NSVVNKGNvbnRleHQsIHByb2dyYW1zUGFja2VkLCBsb2NhdGlvbiwg
bmFtZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVCbGVuZEVxdWF0aW9uaUVYVChjb250ZXh0LCBidWYsIG1vZGUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uKHByb2dyYW1zUGFja2VkLCBsb2NhdGlvbiwgbmFtZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5ibGVuZEVxdWF0aW9uaShidWYsIG1vZGUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbXNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb24sIG5hbWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRXF1YXRpb25pRVhULCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBtb2RlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0oR0x1aW50IHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29l
ZmZzKQordm9pZCBHTF9BUElFTlRSWQorQmxlbmRGdW5jU2VwYXJhdGVpRVhUKEdMdWludCBidWYs
IEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRz
dEFscGhhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRp
b24gPSAlZCwgR0xlbnVtIGdlbk1vZGUgPSAlcywgR0xpbnQgIgotICAgICAgICAgICJjb21wb25l
bnRzID0gJWQsIGNvbnN0IEdMZmxvYXQgKiBjb2VmZnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZ2VuTW9kZSksCi0gICAgICAgICAgY29tcG9uZW50
cywgKHVpbnRwdHJfdCljb2VmZnMpOworICAgIEVWRU5UKCJnbEJsZW5kRnVuY1NlcGFyYXRlaUVY
VCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gc3Jj
UkdCID0gJXMsIEdMZW51bSBkc3RSR0IgPSAlcywgR0xlbnVtIHNyY0FscGhhICIKKyAgICAgICAg
ICAiPSAlcywgR0xlbnVtIGRzdEFscGhhID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
YnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIHNyY1JHQiks
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBk
c3RSR0IpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0Zh
Y3Rvciwgc3JjQWxwaGEpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpC
bGVuZGluZ0ZhY3RvciwgZHN0QWxwaGEpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0oCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRGdW5j
U2VwYXJhdGVpRVhUKGNvbnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RB
bHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgZ2VuTW9kZSwgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2VmZnMpOworICAgICAgICAgICAgY29udGV4dC0+YmxlbmRG
dW5jU2VwYXJhdGVpKGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5DSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgbG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMsIGNvZWZmcyk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoQmxlbmRGdW5jU2VwYXJhdGVpRVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgYnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgZHN0QWxwaGEpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5k
ZWQKLXZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYWdEYXRhTG9jYXRpb25FWFQoR0x1aW50IHByb2dy
YW0sIEdMdWludCBjb2xvciwgY29uc3QgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRSWSBC
bGVuZEZ1bmNpRVhUKEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKAot
ICAgICAgICAiZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVCIsCi0gICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCBjb2xvciA9ICV1LCBjb25zdCBHTGNoYXIg
Km5hbWUgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgY29sb3IsICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsQmxlbmRG
dW5jaUVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xlbnVtIHNyYyA9ICVz
LCBHTGVudW0gZHN0ID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgYnVmLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIHNyYyksCisgICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBkc3QpKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25FWFQo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY29sb3IsIG5hbWUpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRnVuY2lFWFQoY29u
dGV4dCwgYnVmLCBzcmMsIGRzdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW1QYWNr
ZWQsIGNvbG9yLCBuYW1lKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJsZW5kRnVuY2koYnVmLCBz
cmMsIGRzdCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShCaW5kRnJhZ0RhdGFM
b2NhdGlvbkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvbG9yLCBu
YW1lKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEZ1bmNpRVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgYnVmLCBzcmMsIGRzdCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEJp
bmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVChHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb2xvck51bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNraUVYVChHTHVpbnQg
aW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9vbGVhbiBh
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICBFVkVOVCgiZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCBjb2xvck51bWJlciA9ICV1
LCBHTHVpbnQgaW5kZXggPSAldSwgY29uc3QgIgotICAgICAgICAgICJHTGNoYXIgKm5hbWUgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBjb2xv
ck51bWJlciwgaW5kZXgsICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsQ29sb3JNYXNr
aUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMYm9v
bGVhbiByID0gJXMsIEdMYm9vbGVhbiBnID0gJXMsIEdMYm9vbGVhbiBiID0gJXMsICIKKyAgICAg
ICAgICAiR0xib29sZWFuIGEgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwg
R0xib29sZWFuVG9TdHJpbmcociksIEdMYm9vbGVhblRvU3RyaW5nKGcpLCBHTGJvb2xlYW5Ub1N0
cmluZyhiKSwKKyAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhhKSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBjb2xvck51bWJlciwgaW5kZXgsIG5hbWUpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3JNYXNraUVYVChjb250ZXh0LCBpbmRl
eCwgciwgZywgYiwgYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChwcm9ncmFtUGFj
a2VkLCBjb2xvck51bWJlciwgaW5kZXgsIG5hbWUpOworICAgICAgICAgICAgY29udGV4dC0+Y29s
b3JNYXNraShpbmRleCwgciwgZywgYiwgYSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTnVtYmVyLCBpbmRl
eCwgbmFtZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQ29sb3JNYXNraUVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBhKTsKICAgICB9CiB9CiAKLUdMaW50IEdMX0FQ
SUVOVFJZIEdldEZyYWdEYXRhSW5kZXhFWFQoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAq
bmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZWlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKLSAgICBFVkVOVCgiZ2xHZXRGcmFnRGF0YUluZGV4RVhUIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBwcm9ncmFtLCAodWludHB0cl90
KW5hbWUpOworICAgIEVWRU5UKCJnbERpc2FibGVpRVhUIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7
CiAKLSAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXhFWFQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFt
ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRGlzYWJsZWlFWFQoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4
dC0+Z2V0RnJhZ0RhdGFJbmRleChwcm9ncmFtUGFja2VkLCBuYW1lKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEZyYWdEYXRhSW5kZXhFWFQsIEdMaW50PigpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZGlzYWJsZWkodGFyZ2V0LCBpbmRleCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFnRGF0YUluZGV4RVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSwgcmV0dXJuVmFsdWUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKERpc2FibGVpRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRl
eCk7CiAgICAgfQotICAgIGVsc2UKK30KKwordm9pZCBHTF9BUElFTlRSWSBFbmFibGVpRVhUKEdM
ZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsRW5hYmxlaUVYVCIsICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4
dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFy
Z2V0KSwgaW5kZXgpOworCisgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRGcmFnRGF0YUluZGV4
RVhULCBHTGludD4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUVuYWJsZWlFWFQoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOworICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVu
YWJsZWkodGFyZ2V0LCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShF
bmFibGVpRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7CiAgICAgfQot
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xpbnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3Jh
bVJlc291cmNlTG9jYXRpb25JbmRleEVYVChHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRl
cmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRp
RVhUKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2V0UHJvZ3JhbVJlc291
cmNlTG9jYXRpb25JbmRleEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UgPSAlcywgY29uc3QgR0xjaGFyICpu
YW1lID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbUludGVy
ZmFjZSwgcHJvZ3JhbUludGVyZmFjZSksCi0gICAgICAgICAgKHVpbnRwdHJfdCluYW1lKTsKKyAg
ICBFVkVOVCgiZ2xJc0VuYWJsZWRpRVhUIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9
ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CiAKLSAgICBH
TGludCByZXR1cm5WYWx1ZTsKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNFbmFibGVkaUVYVChjb250ZXh0LCB0
YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dy
YW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgocHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwg
bmFtZSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRW5hYmxlZGkodGFy
Z2V0LCBpbmRleCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9Ci0gICAgICAgICAgICAgICAgR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQsIEdMaW50Pigp
OworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNFbmFibGVkaUVYVCwgR0xib29sZWFuPigpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bUludGVyZmFjZSwgbmFtZSwgcmV0dXJuVmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKElz
RW5hYmxlZGlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4LCByZXR1cm5W
YWx1ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0KLSAg
ICAgICAgICAgIEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRQcm9ncmFtUmVz
b3VyY2VMb2NhdGlvbkluZGV4RVhULCBHTGludD4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNFbmFibGVkaUVYVCwgR0xib29sZWFu
PigpOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLS8vIEdMX0VYVF9kZWJ1
Z19tYXJrZXIKLXZvaWQgR0xfQVBJRU5UUlkgSW5zZXJ0RXZlbnRNYXJrZXJFWFQoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFya2VyKQorLy8gR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFz
ZV92ZXJ0ZXgKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChHTGVu
dW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgYmFzZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9u
IHRoZSBFWFRfZGVidWdfbWFya2VyIGVudHJ5IHBvaW50cy4KLSAgICAvLyBJdCBjYW4gaW50ZXJm
ZXJlIHdpdGggdGhlIGRlYnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KLSAgICAv
LyBFVkVOVCgiZ2xJbnNlcnRFdmVudE1hcmtlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkg
bGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbWFya2VyID0KLSAgICAvLyAweCUwMTYiIFBSSXhQ
VFIgIiIsIENJRChjb250ZXh0KSwgbGVuZ3RoLCAodWludHB0cl90KW1hcmtlcik7CisgICAgRVZF
TlQoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVz
LCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwg
R0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAo
dWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUluc2Vy
dEV2ZW50TWFya2VyRVhUKGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKSk7CisgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmluc2VydEV2ZW50TWFy
a2VyKGxlbmd0aCwgbWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0Jh
c2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0
ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW5zZXJ0RXZlbnRNYXJrZXJF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsZW5ndGgsIG1hcmtlcik7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGlu
ZGljZXMsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQb3BHcm91
cE1hcmtlckVYVCgpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaW5zdGFuY2Vjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICAvLyBEb24ndCBydW4gdGhlIEVWRU5U
KCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzLgotICAgIC8vIEl0
IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNldCBieSB0aGUgY2Fs
bGVyLgotICAgIC8vIEVWRU5UKCJnbFBvcEdyb3VwTWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCIs
IENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xz
aXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAg
ICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBpbnN0YW5jZWNvdW50ID0g
JWQsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBl
KSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5jZWNvdW50LAorICAgICAgICAgIGJhc2V2ZXJ0
ZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlUG9wR3JvdXBNYXJrZXJFWFQoY29udGV4dCkpOworICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlw
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291
bnQsIHR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnBvcEdyb3VwTWFya2VyKCk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJ
bnN0YW5jZWRCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFBvcEdyb3VwTWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHR5
cGVQYWNrZWQsIGluZGljZXMsIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBQdXNoR3JvdXBNYXJrZXJFWFQoR0xzaXplaSBsZW5ndGgsIGNv
bnN0IEdMY2hhciAqbWFya2VyKQordm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVtZW50c0Jh
c2VWZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIC8vIERvbid0IHJ1biB0aGUgRVZFTlQoKSBtYWNybyBvbiB0aGUgRVhUX2Rl
YnVnX21hcmtlciBlbnRyeSBwb2ludHMuCi0gICAgLy8gSXQgY2FuIGludGVyZmVyZSB3aXRoIHRo
ZSBkZWJ1ZyBldmVudHMgYmVpbmcgc2V0IGJ5IHRoZSBjYWxsZXIuCi0gICAgLy8gRVZFTlQoImds
UHVzaEdyb3VwTWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBsZW5ndGggPSAlZCwg
Y29uc3QgR0xjaGFyICptYXJrZXIgPQotICAgIC8vIDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNv
bnRleHQpLCBsZW5ndGgsICh1aW50cHRyX3QpbWFya2VyKTsKKyAgICBFVkVOVCgiZ2xEcmF3UmFu
Z2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBtb2RlID0gJXMsIEdMdWludCBzdGFydCA9ICV1LCBHTHVpbnQgZW5kID0gJXUsIEdMc2l6ZWkg
Y291bnQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpp
bmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZl
VHlwZSwgbW9kZSksIHN0YXJ0LCBlbmQsIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2Vz
LCBiYXNldmVydGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQoY29u
dGV4dCwgbGVuZ3RoLCBtYXJrZXIpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0
ZXhFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnB1c2hHcm91cE1hcmtlcihsZW5n
dGgsIG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50c0Jhc2VW
ZXJ0ZXgobW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZl
cnRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQdXNoR3JvdXBNYXJrZXJF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsZW5ndGgsIG1hcmtlcik7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi0vLyBHTF9F
WFRfZGlzY2FyZF9mcmFtZWJ1ZmZlcgotdm9pZCBHTF9BUElFTlRSWSBEaXNjYXJkRnJhbWVidWZm
ZXJFWFQoR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQordm9pZCBHTF9BUElFTlRSWSBN
dWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqY29uc3QgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpiYXNldmVydGV4KQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVO
VCgiZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBudW1BdHRhY2htZW50cyA9ICVkLCBjb25zdCBHTGVu
dW0gIgotICAgICAgICAgICIqYXR0YWNobWVudHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCB0YXJnZXQpLCBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAodWludHB0cl90KWF0dGFj
aG1lbnRzKTsKKyAgICBFVkVOVCgiZ2xNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIGNvbnN0IEdMc2l6ZWkg
KmNvdW50ID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVtIHR5cGUgPSAlcywg
Y29uc3Qgdm9pZCAqY29uc3QqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIs
IEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICpiYXNldmVydGV4ID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCAodWludHB0cl90KWNvdW50LAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwg
KHVpbnRwdHJfdClpbmRpY2VzLCBwcmltY291bnQsCisgICAgICAgICAgKHVpbnRwdHJfdCliYXNl
dmVydGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1
ZmZlckVYVChjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cykpOwor
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRz
VHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0Vs
ZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQsIGJhc2V2
ZXJ0ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5kaXNjYXJkRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0
YWNobWVudHMpOworICAgICAgICAgICAgY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNCYXNlVmVy
dGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBwcmltY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRl
eCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNjYXJkRnJhbWVidWZmZXJF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLAotICAgICAg
ICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShNdWx0
aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFj
a2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBw
cmltY291bnQsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX2Rpc2pvaW50X3Rp
bWVyX3F1ZXJ5Ci12b2lkIEdMX0FQSUVOVFJZIEJlZ2luUXVlcnlFWFQoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGlkKQorLy8gR0xfRVhUX2dlb21ldHJ5X3NoYWRlcgordm9pZCBHTF9BUElFTlRSWSBG
cmFtZWJ1ZmZlclRleHR1cmVFWFQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsQmVnaW5RdWVyeUVYVCIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGlkID0gJXUiLCBDSUQo
Y29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFy
Z2V0LCB0YXJnZXQpLCBpZCk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlRVhUIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRh
Y2htZW50ID0gJXMsIEdMdWludCB0ZXh0dXJlID0gJXUsIEdMaW50ICIKKyAgICAgICAgICAibGV2
ZWwgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksIHRleHR1
cmUsIGxldmVsKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4o
dGFyZ2V0KTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgaWRQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVF
WFQoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmJlZ2luUXVlcnkodGFyZ2V0UGFja2VkLCBpZFBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0
LT5mcmFtZWJ1ZmZlclRleHR1cmUodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBs
ZXZlbCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShCZWdpblF1ZXJ5RVhULCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpZFBhY2tlZCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0dXJlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVQYWNrZWQs
IGxldmVsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUXVlcmllc0VYVChH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQorLy8gR0xfRVhUX2luc3RhbmNlZF9hcnJheXMK
K3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEVYVChHTGVudW0gbW9kZSwgR0xp
bnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEZWxl
dGVRdWVyaWVzRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwg
Y29uc3QgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwK
LSAgICAgICAgICAodWludHB0cl90KWlkcyk7CisgICAgRVZFTlQoImdsRHJhd0FycmF5c0luc3Rh
bmNlZEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xp
bnQgc3RhcnQgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTHNpemVpIHByaW1jb3VudCAiCisg
ICAgICAgICAgIj0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgY291bnQsIHByaW1jb3Vu
dCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFF1ZXJ5SUQgKmlk
c1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+KGlk
cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVN
b2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXNFWFQoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEVYVChjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwg
Y291bnQsIHByaW1jb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJpZXMobiwgaWRzUGFja2VkKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZVBhY2tlZCwgc3RhcnQsIGNv
dW50LCBwcmltY291bnQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRl
UXVlcmllc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoRHJhd0FycmF5c0luc3RhbmNlZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICBwcmlt
Y291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBFbmRRdWVyeUVYVChHTGVudW0g
dGFyZ2V0KQordm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQoR0xlbnVt
IG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEVuZFF1ZXJ5RVhUIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSk7CisgICAgRVZFTlQoImdsRHJh
d0VsZW1lbnRzSW5zdGFuY2VkRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
bW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZv
aWQgIgorICAgICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIHBy
aW1jb3VudCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90
KWluZGljZXMsIHByaW1jb3VudCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRW5kUXVlcnlFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CisgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNU
eXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNv
dW50LCB0eXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIHByaW1jb3VudCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRh
cmdldFBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQo
bW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShFbmRRdWVyeUVYVCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldFBhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRz
SW5zdGFuY2VkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5
cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgcHJpbWNvdW50KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdMdWlu
dCAqaWRzKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKEdMdWludCBp
bmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdlblF1ZXJpZXNFWFQiLCAiY29udGV4dCA9
ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWlkcyk7CisgICAgRVZFTlQoImds
VmVydGV4QXR0cmliRGl2aXNvckVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1
LCBHTHVpbnQgZGl2aXNvciA9ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBk
aXZpc29yKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCAqaWRz
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRz
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5RdWVyaWVzRVhUKGNvbnRleHQsIG4s
IGlkc1BhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKGNvbnRleHQsIGluZGV4LCBkaXZpc29yKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+Z2VuUXVlcmllcyhuLCBpZHNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4
QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZW5RdWVyaWVzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgaWRzUGFja2Vk
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJEaXZpc29yRVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaW5kZXgsIGRpdmlzb3IpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeU9iamVjdGk2NHZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50
NjQgKnBhcmFtcykKKy8vIEdMX0VYVF9tYXBfYnVmZmVyX3JhbmdlCit2b2lkIEdMX0FQSUVOVFJZ
IEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0
LCBHTHNpemVpcHRyIGxlbmd0aCkKIHsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0R2xvYmFs
Q29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGlu
dDY0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFt
ZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsRmx1c2hNYXBw
ZWRCdWZmZXJSYW5nZUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdl
dCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIGxlbmd0aCA9ICVsbHUi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1
ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKKyAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVuZ3Ro
KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKGNv
bnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJp
bmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0
aTY0dihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5mbHVz
aE1hcHBlZEJ1ZmZlclJhbmdlKHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3RpNjR2RVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdGl2RVhUKEdMdWludCBpZCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVmZmVy
UmFuZ2VFWFQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBhY2Nlc3MpCiB7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldEdsb2JhbENv
bnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdGl2RVhUIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5h
bWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsTWFwQnVmZmVyUmFuZ2VF
WFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnRw
dHIgb2Zmc2V0ID0gJWxsdSwgR0xzaXplaXB0ciBsZW5ndGggPSAlbGx1LCAiCisgICAgICAgICAg
IkdMYml0ZmllbGQgYWNjZXNzID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKKyAgICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4obGVuZ3RoKSwKKyAgICAgICAgICBHTGJpdGZpZWxkVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkJ1ZmZlckFjY2Vzc01hc2ssIGFjY2VzcykuY19zdHIoKSk7CiAKKyAgICB2
b2lkICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlE
PihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmpl
Y3RpdkVYVChjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBCdWZm
ZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVY
VChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRR
dWVyeU9iamVjdGl2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVy
blZhbHVlID0gY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxl
bmd0aCwgYWNjZXNzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5
T2JqZWN0aXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2VFWFQsIHZvaWQg
Kj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKE1hcEJ1ZmZlclJhbmdlRVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNj
ZXNzLAorICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2VFWFQsIHZvaWQgKj4oKTsKICAgICB9CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWk2NHZF
WFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpCisvLyBHTF9FWFRf
bWVtb3J5X29iamVjdAordm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdG9yYWdlTWVtRVhUKEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQgb2Zmc2V0
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpwYXJhbXMg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAot
ICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xCdWZmZXJTdG9yYWdl
TWVtRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
c2l6ZWlwdHIgc2l6ZSA9ICVsbHUsIEdMdWludCBtZW1vcnkgPSAldSwgR0x1aW50NjQgIgorICAg
ICAgICAgICJvZmZzZXQgPSAlbGx1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksCisgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzaXplKSwgbWVtb3J5LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIE1lbW9y
eU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVCdWZmZXJTdG9yYWdlTWVt
RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2l6ZSwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRRdWVyeU9iamVjdHVpNjR2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJ1ZmZlclN0b3JhZ2VNZW0odGFyZ2V0UGFja2VkLCBzaXplLCBtZW1vcnlQ
YWNrZWQsIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVy
eU9iamVjdHVpNjR2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEJ1ZmZlclN0b3JhZ2VNZW1FWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNpemUsIG1lbW9yeVBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBH
ZXRRdWVyeU9iamVjdHVpdkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJh
bXMpCit2b2lkIEdMX0FQSUVOVFJZIENyZWF0ZU1lbW9yeU9iamVjdHNFWFQoR0xzaXplaSBuLCBH
THVpbnQgKm1lbW9yeU9iamVjdHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFtZXRl
ck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQo
ImdsQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xz
aXplaSBuID0gJWQsIEdMdWludCAqbWVtb3J5T2JqZWN0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwg
Q0lEKGNvbnRleHQpLAorICAgICAgICAgIG4sICh1aW50cHRyX3QpbWVtb3J5T2JqZWN0cyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoY29udGV4dCwg
aWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgKm1lbW9y
eU9iamVjdHNQYWNrZWQgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQgKj4obWVtb3J5T2JqZWN0cyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNy
ZWF0ZU1lbW9yeU9iamVjdHNFWFQoY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0dWl2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmNyZWF0ZU1lbW9yeU9iamVjdHMobiwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdHVpdkVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShDcmVhdGVNZW1vcnlPYmplY3RzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
biwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dFF1ZXJ5aXZFWFQoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQor
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVNZW1vcnlPYmplY3RzRVhUKEdMc2l6ZWkgbiwgY29uc3Qg
R0x1aW50ICptZW1vcnlPYmplY3RzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVyeWl2RVhUIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBH
TGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVBhcmFtZXRlck5hbWUsIHBu
YW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbERlbGV0ZU1lbW9yeU9iamVj
dHNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBH
THVpbnQgKm1lbW9yeU9iamVjdHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBuLCAodWludHB0cl90KW1lbW9yeU9iamVjdHMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5aXZFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CisgICAgICAgIGNvbnN0IE1lbW9yeU9iamVjdElEICptZW1vcnlPYmpl
Y3RzUGFja2VkID0gRnJvbUdMPGNvbnN0IE1lbW9yeU9iamVjdElEICo+KG1lbW9yeU9iamVjdHMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVE
ZWxldGVNZW1vcnlPYmplY3RzRVhUKGNvbnRleHQsIG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRRdWVyeWl2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5kZWxldGVNZW1vcnlPYmplY3RzKG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlpdkVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIG1l
bW9yeU9iamVjdHNQYWNrZWQpOwogICAgIH0KIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElz
UXVlcnlFWFQoR0x1aW50IGlkKQordm9pZCBHTF9BUElFTlRSWSBHZXRNZW1vcnlPYmplY3RQYXJh
bWV0ZXJpdkVYVChHTHVpbnQgbWVtb3J5T2JqZWN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwot
ICAgIEVWRU5UKCJnbElzUXVlcnlFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSIs
IENJRChjb250ZXh0KSwgaWQpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xHZXRNZW1vcnlPYmpl
Y3RQYXJhbWV0ZXJpdkVYVCIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlP
YmplY3QgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgbWVtb3J5T2JqZWN0LCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVtb3J5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5h
bWUpLAorICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJu
VmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNRdWVyeUVYVChjb250ZXh0LCBpZFBh
Y2tlZCkpOworICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgPSBGcm9t
R0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldE1lbW9y
eU9iamVjdFBhcmFtZXRlcml2RVhUKGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNRdWVyeShpZFBhY2tlZCk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1F1ZXJ5RVhULCBHTGJvb2xlYW4+KCk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5nZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihtZW1vcnlPYmpl
Y3RQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoSXNRdWVyeUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCByZXR1cm5WYWx1
ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUXVlcnlFWFQsIEdMYm9vbGVhbj4oKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICBwbmFtZSwgcGFyYW1zKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFF1ZXJ5Q291bnRlckVYVChHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQp
Cit2b2lkIEdMX0FQSUVOVFJZIEdldFVuc2lnbmVkQnl0ZXZFWFQoR0xlbnVtIHBuYW1lLCBHTHVi
eXRlICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xRdWVyeUNvdW50ZXJFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgaWQgPSAldSwgR0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lEKGNvbnRleHQpLCBpZCwKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlUYXJnZXQsIHRhcmdldCkpOwor
ICAgIEVWRU5UKCJnbEdldFVuc2lnbmVkQnl0ZXZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVieXRlICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIi
LCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Okdl
dFBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKGNvbnRleHQsIGlkUGFja2Vk
LCB0YXJnZXRQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2V0VW5zaWduZWRCeXRldkVYVChjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnF1ZXJ5Q291bnRlcihpZFBhY2tlZCwgdGFyZ2V0UGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmdldFVuc2lnbmVkQnl0ZXYocG5hbWUsIGRhdGEpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUXVlcnlDb3VudGVyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNr
ZWQsIHRhcmdldFBhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5zaWduZWRCeXRl
dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBkYXRhKTsKICAgICB9CiB9CiAKLS8v
IEdMX0VYVF9kcmF3X2J1ZmZlcnMKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0J1ZmZlcnNFWFQoR0xz
aXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFVuc2lnbmVk
Qnl0ZWlfdkVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWJ5dGUgKmRhdGEpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVW
RU5UKCJnbERyYXdCdWZmZXJzRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgY29uc3QgR0xlbnVtICpidWZzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29u
dGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClidWZzKTsKKyAgICBFVkVOVCgiZ2xHZXRV
bnNpZ25lZEJ5dGVpX3ZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdMdWJ5dGUgKmRhdGEgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBpbmRleCwgKHVpbnRwdHJfdClkYXRhKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURyYXdCdWZmZXJzRVhUKGNvbnRleHQsIG4sIGJ1ZnMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5zaWduZWRCeXRlaV92RVhUKGNv
bnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3QnVmZmVycyhuLCBidWZzKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFVuc2lnbmVkQnl0ZWlfdih0YXJnZXQsIGluZGV4LCBkYXRh
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdCdWZmZXJzRVhULCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbiwgYnVmcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5z
aWduZWRCeXRlaV92RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0
YSk7CiAgICAgfQogfQogCi0vLyBHTF9FWFRfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleAotdm9p
ZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKEdMZW51bSBtb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5k
aWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBi
YXNldmVydGV4KQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzTWVtb3J5T2JqZWN0RVhUKEdMdWlu
dCBtZW1vcnlPYmplY3QpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOwotICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAl
ZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0g
MHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9k
ZSksIGNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxl
bWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVydGV4KTsKKyAgICBF
VkVOVCgiZ2xJc01lbW9yeU9iamVjdEVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlP
YmplY3QgPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBtZW1vcnlPYmplY3QpOwogCisg
ICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRl
eEVYVChjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNl
cywgYmFzZXZlcnRleCkpOworICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNr
ZWQgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc01lbW9yeU9iamVj
dEVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNCYXNlVmVy
dGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KTsK
KyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNNZW1vcnlPYmplY3QobWVtb3J5
T2JqZWN0UGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4
KTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc01lbW9yeU9iamVjdEVYVCwgR0xib29s
ZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNNZW1vcnlPYmplY3RF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHJldHVyblZhbHVl
KTsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNNZW1vcnlPYmplY3RFWFQsIEdMYm9vbGVhbj4o
KTsKKyAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVy
dGV4KQordm9pZCBHTF9BUElFTlRSWSBNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChHTHVpbnQg
bWVtb3J5T2JqZWN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJn
bERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUg
PSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRS
ICIsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCA9ICVkLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1p
dGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgaW5zdGFu
Y2Vjb3VudCwKLSAgICAgICAgICBiYXNldmVydGV4KTsKKyAgICBFVkVOVCgiZ2xNZW1vcnlPYmpl
Y3RQYXJhbWV0ZXJpdkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9y
eU9iamVjdCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQgKnBhcmFtcyA9ICIK
KyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
bWVtb3J5T2JqZWN0LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVtb3J5T2JqZWN0UGFy
YW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAg
ICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1v
ZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGluc3RhbmNlY291bnQs
IGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2Vk
ID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnlPYmplY3QpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVN
ZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KG1vZGVQYWNr
ZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsK
KyAgICAgICAgICAgIGNvbnRleHQtPm1lbW9yeU9iamVjdFBhcmFtZXRlcml2KG1lbW9yeU9iamVj
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwg
aW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtZW1v
cnlPYmplY3RQYWNrZWQsIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVY
VChHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRl
eCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTJERVhUKEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtZW1vcnksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbERyYXdSYW5nZUVs
ZW1lbnRzQmFzZVZlcnRleEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1v
ZGUgPSAlcywgR0x1aW50IHN0YXJ0ID0gJXUsIEdMdWludCBlbmQgPSAldSwgR0xzaXplaSBjb3Vu
dCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgKmluZGlj
ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBl
LCBtb2RlKSwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGJh
c2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0yREVYVCIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBH
TGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0g
JWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMdWludCBtZW1vcnkgPSAldSwgR0x1aW50NjQgb2Zm
c2V0ID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGludGVybmFsRm9ybWF0KSwgd2lk
dGgsIGhlaWdodCwgbWVtb3J5LAorICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4ob2Zmc2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRp
dmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhU
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQ
YWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
VmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMs
IGludGVybmFsRm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVu
dHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlUGFja2VkLCBp
bmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZU1lbTJEKHRhcmdl
dFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgZW5kLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtMkRFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRl
cm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoR0xl
bnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29uc3QgKmluZGljZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpiYXNldmVydGV4KQordm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlTWVtMkRNdWx0
aXNhbXBsZUVYVChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0KQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xNdWx0aURy
YXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBtb2RlID0gJXMsIGNvbnN0IEdMc2l6ZWkgKmNvdW50ID0gMHglMDE2IiBQUkl4UFRSCi0gICAg
ICAgICAgIiwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqY29uc3QqaW5kaWNlcyA9IDB4
JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQsIGNvbnN0
IEdMaW50ICpiYXNldmVydGV4ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUp
LCAodWludHB0cl90KWNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBwcmltY291bnQs
Ci0gICAgICAgICAgKHVpbnRwdHJfdCliYXNldmVydGV4KTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9y
YWdlTWVtMkRNdWx0aXNhbXBsZUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0
ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9
ICVkLCBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMgPSAlcywgR0x1aW50ICIKKyAgICAg
ICAgICAibWVtb3J5ID0gJXUsIEdMdWludDY0IG9mZnNldCA9ICVsbHUiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRh
cmdldCksIHNhbXBsZXMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgIEdM
Ym9vbGVhblRvU3RyaW5nKGZpeGVkU2FtcGxlTG9jYXRpb25zKSwgbWVtb3J5LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1l
bnRzQmFzZVZlcnRleEVYVCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPiht
ZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGVFWFQoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1w
bGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFj
a2VkLCBvZmZzZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldmVydGV4KTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxl
cywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFj
a2VkLCBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTXVsdGlEcmF3
RWxlbWVudHNCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNv
dW50LCBiYXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtMkRN
dWx0aXNhbXBsZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxl
cywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
Zml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKICAgICB9CiB9CiAK
LS8vIEdMX0VYVF9nZW9tZXRyeV9zaGFkZXIKLXZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJU
ZXh0dXJlRVhUKEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0zREVY
VChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IG9mZnNldCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQo
ImdsRnJhbWVidWZmZXJUZXh0dXJlRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMdWludCB0ZXh0dXJlID0g
JXUsIEdMaW50ICIKLSAgICAgICAgICAibGV2ZWwgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdl
dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCwgYXR0YWNobWVudCksIHRleHR1cmUsIGxldmVsKTsKKyAgICBFVkVOVCgiZ2xUZXhT
dG9yYWdlTWVtM0RFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMsICIK
KyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNp
emVpIGRlcHRoID0gJWQsIEdMdWludCBtZW1vcnkgPSAldSwgIgorICAgICAgICAgICJHTHVpbnQ2
NCBvZmZzZXQgPSAlbGx1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQp
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5LAorICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElE
IG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9i
amVjdElEPihtZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVFWFQoY29u
dGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOworICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5m
cmFtZWJ1ZmZlclRleHR1cmUodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZl
bCk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtM0QodGFyZ2V0UGFja2VkLCBs
ZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmVFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZVBhY2tlZCwgbGV2ZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VN
ZW0zREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLAorICAg
ICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
bWVtb3J5UGFja2VkLCBvZmZzZXQpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEVYVChHTGVudW0gbW9k
ZSwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBH
TF9BUElFTlRSWSBUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVChHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50NjQgb2Zmc2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGludCBzdGFydCA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNvdW50ICIKLSAgICAgICAgICAiPSAl
ZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
UHJpbWl0aXZlVHlwZSwgbW9kZSksIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBFVkVO
VCgiZ2xUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGlu
dGVybmFsRm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNp
emVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMYm9vbGVhbiAiCisgICAgICAg
ICAgImZpeGVkU2FtcGxlTG9jYXRpb25zID0gJXMsIEdMdWludCBtZW1vcnkgPSAldSwgR0x1aW50
NjQgb2Zmc2V0ID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1h
dCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZp
eGVkU2FtcGxlTG9jYXRpb25zKSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KG9mZnNldCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZl
TW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKGNvbnRleHQsIG1vZGVQ
YWNrZWQsIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50KSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOworICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3Rv
cmFnZU1lbTNETXVsdGlzYW1wbGVFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBmaXhlZFNhbXBs
ZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3QXJyYXlzSW5zdGFu
Y2VkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgIHByaW1jb3VudCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEVYVChHTGVudW0gbW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkK
Ky8vIEdMX0VYVF9tZW1vcnlfb2JqZWN0X2ZkCit2b2lkIEdMX0FQSUVOVFJZIEltcG9ydE1lbW9y
eUZkRVhUKEdMdWludCBtZW1vcnksIEdMdWludDY0IHNpemUsIEdMZW51bSBoYW5kbGVUeXBlLCBH
TGludCBmZCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51
bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIg
UFJJeFBUUiAiLCBHTHNpemVpIHByaW1jb3VudCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291
bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5
cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIHByaW1jb3VudCk7CisgICAgRVZFTlQoImds
SW1wb3J0TWVtb3J5RmRFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1v
cnkgPSAldSwgR0x1aW50NjQgc2l6ZSA9ICVsbHUsIEdMZW51bSBoYW5kbGVUeXBlID0gJXMsIEdM
aW50ICIKKyAgICAgICAgICAiZmQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBtZW1v
cnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2l6ZSksCisgICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkV4dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSks
IGZkKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKGNvbnRleHQsIG1vZGVQ
YWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIHByaW1jb3VudCkpOworICAg
ICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5KTsKKyAgICAgICAgSGFuZGxlVHlwZSBo
YW5kbGVUeXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8SGFuZGxl
VHlwZT4oaGFuZGxlVHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKGNvbnRl
eHQsIG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwgZmQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxl
bWVudHNJbnN0YW5jZWQobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIHBy
aW1jb3VudCk7CisgICAgICAgICAgICBjb250ZXh0LT5pbXBvcnRNZW1vcnlGZChtZW1vcnlQYWNr
ZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNlZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGlu
ZGljZXMsIHByaW1jb3VudCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0TWVtb3J5RmRF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQ
YWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgZmQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlz
b3IpCisvLyBHTF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCit2b2lkIEdMX0FQ
SUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2Ft
cGxlcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliRGl2aXNvckVYVCIsICJjb250ZXh0ID0gJWQsIEdM
dWludCBpbmRleCA9ICV1LCBHTHVpbnQgZGl2aXNvciA9ICV1IiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIGluZGV4LCBkaXZpc29yKTsKKyAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmUy
RE11bHRpc2FtcGxlRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMZW51bSB0ZXh0YXJnZXQgPSAlcywgR0x1
aW50ICIKKyAgICAgICAgICAidGV4dHVyZSA9ICV1LCBHTGludCBsZXZlbCA9ICVkLCBHTHNpemVp
IHNhbXBsZXMgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCks
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRl
eHRhcmdldCksIHRleHR1cmUsIGxldmVsLCBzYW1wbGVzKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKGNvbnRleHQsIGluZGV4LCBkaXZpc29yKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwg
c2FtcGxlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgICAg
ICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZSh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliRGl2aXNvckVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGluZGV4LCBkaXZpc29yKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1
ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldCwgdGV4dHVyZSwg
bGV2ZWwsIHNhbXBsZXMpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UK
LXZvaWQgR0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChHTGVudW0gdGFyZ2V0
LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoKQordm9pZCBHTF9BUElFTlRSWSBS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRmx1c2hN
YXBwZWRCdWZmZXJSYW5nZUVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIGxlbmd0aCA9ICVs
bHUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVu
Z3RoKSk7CisgICAgRVZFTlQoImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2Ft
cGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNp
emVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFy
Z2V0KSwgc2FtcGxlcywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50
ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRmx1
c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVu
Z3RoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UodGFyZ2V0UGFja2VkLCBv
ZmZzZXQsIGxlbmd0aCk7CisgICAgICAgICAgICBjb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGbHVzaE1hcHBlZEJ1ZmZlclJh
bmdlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQs
IHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOwogICAgIH0KIH0KIAotdm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVmZmVyUmFuZ2VFWFQo
R0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
cHRyIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlw
dHIgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVs
ZCBhY2Nlc3MpCisvLyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4KKy8vIEJlZ2luUXVl
cnlFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgorCisvLyBEZWxldGVRdWVyaWVzRVhUIGlzIGFscmVh
ZHkgZGVmaW5lZC4KKworLy8gRW5kUXVlcnlFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgorCisvLyBH
ZW5RdWVyaWVzRVhUIGlzIGFscmVhZHkgZGVmaW5lZC4KKworLy8gR2V0UXVlcnlPYmplY3R1aXZF
WFQgaXMgYWxyZWFkeSBkZWZpbmVkLgorCisvLyBHZXRRdWVyeWl2RVhUIGlzIGFscmVhZHkgZGVm
aW5lZC4KKworLy8gSXNRdWVyeUVYVCBpcyBhbHJlYWR5IGRlZmluZWQuCisKKy8vIEdMX0VYVF9y
ZWFkX2Zvcm1hdF9iZ3JhCisKKy8vIEdMX0VYVF9yb2J1c3RuZXNzCitHTGVudW0gR0xfQVBJRU5U
UlkgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpCiB7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbE1hcEJ1ZmZlclJhbmdlRVhU
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50cHRy
IG9mZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0gJWxsdSwgIgotICAgICAgICAgICJH
TGJpdGZpZWxkIGFjY2VzcyA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksCi0gICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGxlbmd0aCksCi0gICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpCdWZmZXJBY2Nlc3NNYXNrLCBhY2Nlc3MpLmNfc3RyKCkpOworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsR2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0VYVCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCi0gICAg
dm9pZCAqcmV0dXJuVmFsdWU7CisgICAgR0xlbnVtIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VY
VChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQs
IG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250
ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1
ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJSYW5nZUVYVCwgdm9pZCAqPigpOworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0VYVCwgR0xlbnVtPigpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoTWFwQnVmZmVyUmFuZ2VFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
VmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5WYWx1ZSk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6Ok1hcEJ1ZmZlclJhbmdlRVhULCB2b2lkICo+KCk7CisgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNF
WFQsIEdMZW51bT4oKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi0vLyBH
TF9FWFRfbWVtb3J5X29iamVjdAotdm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdG9yYWdlTWVtRVhU
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQg
b2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWZ2RVhUKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5U
KCJnbEJ1ZmZlclN0b3JhZ2VNZW1FWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xzaXplaXB0ciBzaXplID0gJWxsdSwgR0x1aW50IG1lbW9yeSA9ICV1
LCBHTHVpbnQ2NCAiCi0gICAgICAgICAgIm9mZnNldCA9ICVsbHUiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFy
Z2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUpLCBt
ZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSk7CisgICAgRVZF
TlQoImdsR2V0blVuaWZvcm1mdkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQs
IEdMZmxvYXQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRy
X3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOwotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRl
QnVmZmVyU3RvcmFnZU1lbUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNpemUsIG1lbW9yeVBh
Y2tlZCwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5idWZmZXJTdG9yYWdlTWVtKHRhcmdldFBhY2tlZCwgc2l6ZSwgbWVtb3J5UGFja2VkLCBvZmZz
ZXQpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEJ1ZmZlclN0b3JhZ2VNZW1FWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHNpemUsIG1lbW9yeVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBvZmZz
ZXQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnZFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBidWZTaXplLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBD
cmVhdGVNZW1vcnlPYmplY3RzRVhUKEdMc2l6ZWkgbiwgR0x1aW50ICptZW1vcnlPYmplY3RzKQor
dm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWl2RVhUKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xDcmVhdGVN
ZW1vcnlPYmplY3RzRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAl
ZCwgR0x1aW50ICptZW1vcnlPYmplY3RzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksCi0gICAgICAgICAgbiwgKHVpbnRwdHJfdCltZW1vcnlPYmplY3RzKTsKKyAgICBFVkVOVCgi
Z2xHZXRuVW5pZm9ybWl2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xp
bnQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFy
YW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQg
Km1lbW9yeU9iamVjdHNQYWNrZWQgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEICo+
KG1lbW9yeU9iamVjdHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNy
ZWF0ZU1lbW9yeU9iamVjdHNFWFQoY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdkVY
VChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+Y3JlYXRlTWVtb3J5T2JqZWN0cyhuLCBtZW1vcnlPYmplY3RzUGFja2VkKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIGJ1ZlNpemUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShD
cmVhdGVNZW1vcnlPYmplY3RzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgbWVtb3J5T2Jq
ZWN0c1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdkVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZlNpemUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIERlbGV0ZU1lbW9yeU9iamVjdHNFWFQoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKm1l
bW9yeU9iamVjdHMpCit2b2lkIEdMX0FQSUVOVFJZIFJlYWRuUGl4ZWxzRVhUKEdMaW50IHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEZWxldGVN
ZW1vcnlPYmplY3RzRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAl
ZCwgY29uc3QgR0x1aW50ICptZW1vcnlPYmplY3RzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdCltZW1vcnlPYmplY3RzKTsKKyAgICBF
VkVOVCgiZ2xSZWFkblBpeGVsc0VYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQg
eCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQg
PSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMs
IEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCB2b2lkICpkYXRhID0gMHglMDE2IiBQUkl4UFRSCisgICAg
ICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksIGJ1ZlNpemUs
ICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNv
bnN0IE1lbW9yeU9iamVjdElEICptZW1vcnlPYmplY3RzUGFja2VkID0gRnJvbUdMPGNvbnN0IE1l
bW9yeU9iamVjdElEICo+KG1lbW9yeU9iamVjdHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZURlbGV0ZU1lbW9yeU9iamVjdHNFWFQoY29udGV4dCwgbiwgbWVtb3J5T2Jq
ZWN0c1BhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChjb250ZXh0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGRhdGEpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVN
ZW1vcnlPYmplY3RzKG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4
dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXpl
LCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZU1lbW9yeU9i
amVjdHNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZWFkblBpeGVsc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBidWZTaXplLCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0TWVt
b3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQoR0x1aW50IG1lbW9yeU9iamVjdCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKQorLy8gR0xfRVhUX3NSR0IKKworLy8gR0xfRVhUX3NlbWFwaG9yZQor
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVTZW1hcGhvcmVzRVhUKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICpzZW1hcGhvcmVzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsR2V0TWVtb3J5T2JqZWN0UGFyYW1l
dGVyaXZFWFQiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5T2JqZWN0ID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIG1lbW9yeU9iamVjdCwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6Ok1lbW9yeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAg
ICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbERlbGV0ZVNlbWFwaG9yZXNF
WFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVp
bnQgKnNlbWFwaG9yZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBuLCAodWludHB0cl90KXNlbWFwaG9yZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgICAgICAgICAgICAg
PSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRNZW1vcnlP
YmplY3RQYXJhbWV0ZXJpdkVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKKyAgICAgICAgY29uc3QgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQgPSBG
cm9tR0w8Y29uc3QgU2VtYXBob3JlSUQgKj4oc2VtYXBob3Jlcyk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQo
Y29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldE1lbW9yeU9iamVjdFBhcmFtZXRl
cml2KG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5kZWxldGVTZW1hcGhvcmVzKG4sIHNlbWFwaG9yZXNQYWNrZWQpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlU2VtYXBob3Jl
c0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQYWNrZWQpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRVbnNpZ25lZEJ5dGV2RVhUKEdMZW51bSBwbmFtZSwg
R0x1Ynl0ZSAqZGF0YSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2VuU2VtYXBob3Jlc0VYVChHTHNpemVp
IG4sIEdMdWludCAqc2VtYXBob3JlcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2V0VW5zaWduZWRCeXRldkVYVCIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWJ5dGUgKmRhdGEg
PSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKKyAg
ICBFVkVOVCgiZ2xHZW5TZW1hcGhvcmVzRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THNpemVpIG4gPSAlZCwgR0x1aW50ICpzZW1hcGhvcmVzID0gMHglMDE2IiBQUkl4UFRSICIiLCBD
SUQoY29udGV4dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClzZW1hcGhvcmVzKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNlbWFwaG9yZUlEICpzZW1hcGhvcmVzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNlbWFwaG9yZUlEICo+KHNlbWFwaG9yZXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VW5zaWduZWRCeXRldkVYVChj
b250ZXh0LCBwbmFtZSwgZGF0YSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZW5TZW1hcGhvcmVzRVhUKGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRVbnNpZ25lZEJ5dGV2KHBuYW1lLCBkYXRhKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdlblNlbWFwaG9yZXMobiwgc2VtYXBob3Jlc1BhY2tlZCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbnNpZ25lZEJ5dGV2RVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcG5hbWUsIGRhdGEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblNlbWFwaG9yZXNF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBzZW1hcGhvcmVzUGFja2VkKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VW5zaWduZWRCeXRlaV92RVhUKEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0x1Ynl0ZSAqZGF0YSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0U2VtYXBo
b3JlUGFyYW1ldGVydWk2NHZFWFQoR0x1aW50IHNlbWFwaG9yZSwgR0xlbnVtIHBuYW1lLCBHTHVp
bnQ2NCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdM
dWJ5dGUgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBpbmRl
eCwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsR2V0U2VtYXBob3Jl
UGFyYW1ldGVydWk2NHZFWFQiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBo
b3JlID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQ
Ukl4UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNlbWFwaG9yZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwK
KyAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVY
VChjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7CisgICAgICAgIFNlbWFwaG9yZUlEIHNl
bWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9y
ZUlEPihzZW1hcGhvcmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0
dkVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbnNp
Z25lZEJ5dGVpX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dihzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5zaWduZWRCeXRlaV92RVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcyk7CiAgICAgfQogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNNZW1vcnlPYmplY3RF
WFQoR0x1aW50IG1lbW9yeU9iamVjdCkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1NlbWFwaG9y
ZUVYVChHTHVpbnQgc2VtYXBob3JlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xJc01lbW9yeU9iamVjdEVYVCIsICJjb250
ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlPYmplY3QgPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAg
ICAgICBtZW1vcnlPYmplY3QpOworICAgIEVWRU5UKCJnbElzU2VtYXBob3JlRVhUIiwgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUp
OwogCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkICAgICAgICAgICAgID0g
RnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnlPYmplY3QpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc01lbW9y
eU9iamVjdEVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQpKTsKKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQoY29udGV4
dCwgc2VtYXBob3JlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc01lbW9yeU9iamVjdChtZW1v
cnlPYmplY3RQYWNrZWQpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1Nl
bWFwaG9yZShzZW1hcGhvcmVQYWNrZWQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNNZW1vcnlPYmplY3RFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2VtYXBob3Jl
RVhULCBHTGJvb2xlYW4+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc01l
bW9yeU9iamVjdEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwg
cmV0dXJuVmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKElzU2VtYXBob3JlRVhULCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCByZXR1cm5WYWx1ZSk7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OklzTWVtb3J5T2JqZWN0RVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2VtYXBo
b3JlRVhULCBHTGJvb2xlYW4+KCk7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChHTHVpbnQgbWVt
b3J5T2JqZWN0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQ
SUVOVFJZIFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKEdMdWludCBzZW1hcGhvcmUsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0x1aW50NjQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsTWVtb3J5T2JqZWN0UGFy
YW1ldGVyaXZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlPYmpl
Y3QgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbXMgPSAiCisgICAg
RVZFTlQoImdsU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdM
dWludDY0ICpwYXJhbXMgPSAiCiAgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIG1lbW9yeU9iamVjdCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6Ok1lbW9yeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNlbWFwaG9yZVBh
cmFtZXRlck5hbWUsIHBuYW1lKSwKICAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVj
dFBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5T2JqZWN0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFw
aG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlE
PihzZW1hcGhvcmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChj
b250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAg
ICBWYWxpZGF0ZVNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKGNvbnRleHQsIHNlbWFwaG9yZVBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1lbW9yeU9iamVjdFBhcmFtZXRlcml2KG1lbW9yeU9i
amVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5zZW1hcGhv
cmVQYXJhbWV0ZXJ1aTY0dihzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLAorICAgICAgICBB
TkdMRV9DQVBUVVJFKFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlTWVtMkRFWFQoR0xl
bnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
bGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IG9mZnNldCkKK3ZvaWQg
R0xfQVBJRU5UUlkgU2lnbmFsU2VtYXBob3JlRVhUKEdMdWludCBzZW1hcGhvcmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtVGV4dHVyZUJh
cnJpZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp0ZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZW51bSAqZHN0TGF5b3V0cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZU1lbTJERVhUIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQs
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGgg
PSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBv
ZmZzZXQgPSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3
aWR0aCwgaGVpZ2h0LCBtZW1vcnksCi0gICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihvZmZzZXQpKTsKKyAgICBFVkVOVCgiZ2xTaWduYWxTZW1hcGhvcmVFWFQiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0x1aW50IG51bUJ1
ZmZlckJhcnJpZXJzID0gJXUsIGNvbnN0IEdMdWludCAiCisgICAgICAgICAgIipidWZmZXJzID0g
MHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycyA9
ICV1LCBjb25zdCBHTHVpbnQgKnRleHR1cmVzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAg
IiwgY29uc3QgR0xlbnVtICpkc3RMYXlvdXRzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBudW1CdWZmZXJCYXJyaWVycywgKHVpbnRwdHJf
dClidWZmZXJzLCBudW1UZXh0dXJlQmFycmllcnMsCisgICAgICAgICAgKHVpbnRwdHJfdCl0ZXh0
dXJlcywgKHVpbnRwdHJfdClkc3RMYXlvdXRzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1v
cnlQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9y
eSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1h
cGhvcmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJ
RD4oc2VtYXBob3JlKTsKKyAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7
CisgICAgICAgIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFN0b3JhZ2VNZW0yREVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlaWdodCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKKyAgICAgICAgICAgICBWYWxpZGF0
ZVNpZ25hbFNlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJh
cnJpZXJzLCBidWZmZXJzUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT50ZXhTdG9yYWdlTWVtMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9y
eVBhY2tlZCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNpZ25hbFNlbWFwaG9yZShz
ZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVy
ZXNQYWNrZWQsIGRzdExheW91dHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
VGV4U3RvcmFnZU1lbTJERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBs
ZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWln
aHQsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTaWduYWxT
ZW1hcGhvcmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1
ZmZlckJhcnJpZXJzLAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG51bVRl
eHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVChHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50NjQgb2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBXYWl0U2VtYXBob3JlRVhUKEdM
dWludCBzZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG51bUJ1ZmZlckJhcnJpZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqYnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbnVtVGV4dHVyZUJhcnJpZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xlbnVtICpzcmNMYXlvdXRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlTWVtMkRN
dWx0aXNhbXBsZUVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9
ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMsICIK
LSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGJv
b2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMgPSAlcywgR0x1aW50ICIKLSAgICAgICAgICAibWVt
b3J5ID0gJXUsIEdMdWludDY0IG9mZnNldCA9ICVsbHUiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIHNh
bXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgIEdMYm9vbGVhblRv
U3RyaW5nKGZpeGVkU2FtcGxlTG9jYXRpb25zKSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KG9mZnNldCkpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tl
ZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhTdG9yYWdl
TWVtMkRNdWx0aXNhbXBsZUVYVCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWlnaHQsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwotICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRl
eFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxG
b3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVpZ2h0LCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQp
OwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZU1lbTJETXVsdGlz
YW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZpeGVk
U2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7Ci0gICAgfQotfQotCi12b2lk
IEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0zREVYVChHTGVudW0gdGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludDY0IG9mZnNldCkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZU1lbTNERVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxz
ID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkg
d2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTHVp
bnQgbWVtb3J5ID0gJXUsICIKLSAgICAgICAgICAiR0x1aW50NjQgb2Zmc2V0ID0gJWxsdSIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVy
ZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGludGVybmFsRm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIG1lbW9yeSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9m
ZnNldCkpOworICAgIEVWRU5UKCJnbFdhaXRTZW1hcGhvcmVFWFQiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJz
ID0gJXUsIGNvbnN0IEdMdWludCAiCisgICAgICAgICAgIipidWZmZXJzID0gMHglMDE2IiBQUkl4
UFRSCisgICAgICAgICAgIiwgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycyA9ICV1LCBjb25zdCBH
THVpbnQgKnRleHR1cmVzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgY29uc3QgR0xl
bnVtICpzcmNMYXlvdXRzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgc2VtYXBob3JlLCBudW1CdWZmZXJCYXJyaWVycywgKHVpbnRwdHJfdClidWZmZXJzLCBu
dW1UZXh0dXJlQmFycmllcnMsCisgICAgICAgICAgKHVpbnRwdHJfdCl0ZXh0dXJlcywgKHVpbnRw
dHJfdClzcmNMYXlvdXRzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBob3Jl
KTsKKyAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7CisgICAgICAgIGNv
bnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3Jh
Z2VNZW0zREVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQs
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwg
ZGVwdGgsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KSk7CisgICAgICAgICAgICAgVmFsaWRhdGVXYWl0
U2VtYXBob3JlRVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMs
IGJ1ZmZlcnNQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9y
YWdlTWVtM0QodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlQ
YWNrZWQsIG9mZnNldCk7CisgICAgICAgICAgICBjb250ZXh0LT53YWl0U2VtYXBob3JlKHNlbWFw
aG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNr
ZWQsIHNyY0xheW91dHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3Rv
cmFnZU1lbTNERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoV2FpdFNl
bWFwaG9yZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVm
ZmVyQmFycmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc1BhY2tlZCwgbnVtVGV4
dHVyZUJhcnJpZXJzLCB0ZXh0dXJlc1BhY2tlZCwgc3JjTGF5b3V0cyk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlRVhUKEdMZW51bSB0YXJn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxl
TG9jYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCisvLyBHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQgaXMgYWxy
ZWFkeSBkZWZpbmVkLgorCisvLyBHZXRVbnNpZ25lZEJ5dGV2RVhUIGlzIGFscmVhZHkgZGVmaW5l
ZC4KKworLy8gR0xfRVhUX3NlbWFwaG9yZV9mZAordm9pZCBHTF9BUElFTlRSWSBJbXBvcnRTZW1h
cGhvcmVGZEVYVChHTHVpbnQgc2VtYXBob3JlLCBHTGVudW0gaGFuZGxlVHlwZSwgR0xpbnQgZmQp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAg
IEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlRVhUIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xib29sZWFuICIKLSAg
ICAgICAgICAiZml4ZWRTYW1wbGVMb2NhdGlvbnMgPSAlcywgR0x1aW50IG1lbW9yeSA9ICV1LCBH
THVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGludGVybmFs
Rm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCi0gICAgICAgICAgR0xib29sZWFuVG9TdHJp
bmcoZml4ZWRTYW1wbGVMb2NhdGlvbnMpLCBtZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4ob2Zmc2V0KSk7CisgICAgRVZFTlQoImdsSW1wb3J0U2VtYXBob3JlRmRFWFQiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIGhh
bmRsZVR5cGUgPSAlcywgR0xpbnQgZmQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBz
ZW1hcGhvcmUsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUs
IGhhbmRsZVR5cGUpLCBmZCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxl
RVhUKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBh
Y2tlZCwgb2Zmc2V0KSk7CisgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOwor
ICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxIYW5kbGVUeXBlPihoYW5kbGVUeXBlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlSW1w
b3J0U2VtYXBob3JlRmRFWFQoY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFj
a2VkLCBmZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2Ft
cGxlcywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMs
IG1lbW9yeVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9mZnNldCk7CisgICAgICAgICAgICBjb250ZXh0LT5pbXBvcnRTZW1hcGhvcmVGZChz
ZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlRVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAg
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZml4ZWRTYW1wbGVMb2NhdGlv
bnMsIG1lbW9yeVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEltcG9ydFNlbWFwaG9yZUZkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgc2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAg
ICAgIGZkKTsKICAgICB9CiB9CiAKLS8vIEdMX0VYVF9tZW1vcnlfb2JqZWN0X2ZkCi12b2lkIEdM
X0FQSUVOVFJZIEltcG9ydE1lbW9yeUZkRVhUKEdMdWludCBtZW1vcnksIEdMdWludDY0IHNpemUs
IEdMZW51bSBoYW5kbGVUeXBlLCBHTGludCBmZCkKKy8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX2JwdGMKKworLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQorCisvLyBHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisKKy8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3MzdGMKKworLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCisKKy8v
IEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYworCisvLyBHTF9FWFRfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgKKworLy8gR0xfRVhUX3RleHR1cmVfc3RvcmFnZQordm9pZCBHTF9BUElF
TlRSWSBUZXhTdG9yYWdlMURFWFQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsSW1wb3J0TWVtb3J5RmRFWFQiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnkgPSAldSwgR0x1aW50NjQgc2l6ZSA9ICVs
bHUsIEdMZW51bSBoYW5kbGVUeXBlID0gJXMsIEdMaW50ICIKLSAgICAgICAgICAiZmQgPSAlZCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBtZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oc2l6ZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkV4
dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksIGZkKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9y
YWdlMURFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAg
ICAgICAiR0xzaXplaSB3aWR0aCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRl
cm5hbGZvcm1hdCksIHdpZHRoKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
TWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1l
bW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8SGFuZGxlVHlwZT4oaGFuZGxlVHlwZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVJbXBvcnRNZW1vcnlGZEVY
VChjb250ZXh0LCBtZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKSk7Cisg
ICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlMURFWFQoY29udGV4dCwgdGFyZ2V0LCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmltcG9ydE1lbW9yeUZkKG1lbW9yeVBhY2tl
ZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwgZmQpOworICAgICAgICAgICAgY29udGV4dC0+dGV4
U3RvcmFnZTFEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0TWVtb3J5RmRFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBtZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgZmQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UxREVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4
dHVyZQotdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhU
KEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHNhbXBsZXMpCit2b2lkIEdMX0FQSUVOVFJZCitUZXhTdG9yYWdlMkRFWFQo
R0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTJE
TXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBHTHVp
bnQgIgotICAgICAgICAgICJ0ZXh0dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQsIEdMc2l6ZWkg
c2FtcGxlcyA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGV4
dGFyZ2V0KSwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOworICAgIEVWRU5UKCJnbFRleFN0b3Jh
Z2UyREVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
THNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAg
ICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
RnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1
cmUsIGxldmVsLCBzYW1wbGVzKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlMkRFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0
dXJlMkRNdWx0aXNhbXBsZSh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwg
bGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhbXBsZXMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldFBh
Y2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAgICAgICAg
ICAgICAgICAgIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UyREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3Jh
Z2UzREVYVChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xz
aXplaSBoZWlnaHQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJu
YWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RFWFQi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBs
ZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVGV4U3RvcmFnZTNERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVs
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VGV4U3RvcmFnZTNERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IGRlcHRoKTsKICAgICB9CiB9CiAKLS8vIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbgot
Ly8gQmVnaW5RdWVyeUVYVCBpcyBhbHJlYWR5IGRlZmluZWQuCi0KLS8vIERlbGV0ZVF1ZXJpZXNF
WFQgaXMgYWxyZWFkeSBkZWZpbmVkLgotCi0vLyBFbmRRdWVyeUVYVCBpcyBhbHJlYWR5IGRlZmlu
ZWQuCi0KLS8vIEdlblF1ZXJpZXNFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgotCi0vLyBHZXRRdWVy
eU9iamVjdHVpdkVYVCBpcyBhbHJlYWR5IGRlZmluZWQuCi0KLS8vIEdldFF1ZXJ5aXZFWFQgaXMg
YWxyZWFkeSBkZWZpbmVkLgotCi0vLyBJc1F1ZXJ5RVhUIGlzIGFscmVhZHkgZGVmaW5lZC4KLQot
Ly8gR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKLQotLy8gR0xfRVhUX3JvYnVzdG5lc3MKLUdMZW51
bSBHTF9BUElFTlRSWSBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKCkKKy8vIEdMX0tIUl9kZWJ1
Zwordm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihHTERFQlVHUFJPQ0tI
UiBjYWxsYmFjaywgY29uc3Qgdm9pZCAqdXNlclBhcmFtKQogewotICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2V0R3JhcGhpY3NSZXNldFN0
YXR1c0VYVCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01lc3Nh
Z2VDYWxsYmFja0tIUiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xERUJVR1BST0NLSFIg
Y2FsbGJhY2sgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBjb25zdCB2b2lkICp1c2Vy
UGFyYW0gPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWlu
dHB0cl90KWNhbGxiYWNrLCAodWludHB0cl90KXVzZXJQYXJhbSk7CiAKLSAgICBHTGVudW0gcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoY29u
dGV4dCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihjb250ZXh0LCBjYWxsYmFjaywgdXNlclBhcmFt
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhULCBH
TGVudW0+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VDYWxsYmFjayhjYWxs
YmFjaywgdXNlclBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEdy
YXBoaWNzUmVzZXRTdGF0dXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5WYWx1ZSk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIEdMZW51
bT4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pOwogICAgIH0KLSAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdkVYVChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAq
cGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMZW51bSBz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVy
aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGVuYWJsZWQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwotICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtZnZFWFQiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkg
YnVmU2l6ZSA9ICVkLCBHTGZsb2F0ICIKLSAgICAgICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBidWZT
aXplLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsRGVidWdNZXNzYWdlQ29udHJv
bEtIUiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVu
dW0gdHlwZSA9ICVzLCBHTGVudW0gc2V2ZXJpdHkgPSAlcywgR0xzaXplaSBjb3VudCAiCisgICAg
ICAgICAgIj0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMYm9v
bGVhbiBlbmFibGVkID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5cGUpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5LCBzZXZlcml0eSksIGNvdW50LCAodWlu
dHB0cl90KWlkcywKKyAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhlbmFibGVkKSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1mdkVY
VChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKSk7Cisg
ICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKGNvbnRleHQsIHNvdXJj
ZSwgdHlwZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJsZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWZ2
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAg
Y29udGV4dC0+ZGVidWdNZXNzYWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3Vu
dCwgaWRzLCBlbmFibGVkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5V
bmlmb3JtZnZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKERlYnVnTWVzc2FnZUNvbnRyb2xLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBz
b3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICBpZHMs
IGVuYWJsZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWl2RVhU
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCAq
cGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xlbnVtIHNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmJ1ZikKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZF
TlQoImdsR2V0blVuaWZvcm1pdkVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQs
IEdMaW50ICIKLSAgICAgICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCAodWludHB0cl90
KXBhcmFtcyk7CisgICAgRVZFTlQoImdsRGVidWdNZXNzYWdlSW5zZXJ0S0hSIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdM
dWludCBpZCA9ICV1LCBHTGVudW0gc2V2ZXJpdHkgPSAiCisgICAgICAgICAgIiVzLCBHTHNpemVp
IGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKmJ1ZiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1Nv
dXJjZSwgc291cmNlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVi
dWdUeXBlLCB0eXBlKSwgaWQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlYnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgbGVuZ3RoLCAodWludHB0cl90KWJ1Zik7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdkVY
VChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKSk7Cisg
ICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoY29udGV4dCwgc291cmNl
LCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmRlYnVnTWVzc2FnZUluc2VydChzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3Ro
LCBidWYpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdkVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RGVidWdNZXNzYWdlSW5zZXJ0S0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0eXBl
LCBpZCwgc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBidWYpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZWFkblBpeGVsc0VYVChHTGludCB4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKK0dMdWludCBHTF9BUElFTlRSWSBH
ZXREZWJ1Z01lc3NhZ2VMb2dLSFIoR0x1aW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc291cmNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc2V2ZXJpdGllcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RocywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICptZXNzYWdlTG9nKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xSZWFkblBpeGVsc0VYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgeCA9ICVk
LCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwg
IgotICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6
ZWkgYnVmU2l6ZSA9ICVkLCB2b2lkICpkYXRhID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksIGJ1ZlNpemUsICh1aW50
cHRyX3QpZGF0YSk7CisgICAgRVZFTlQoImdsR2V0RGVidWdNZXNzYWdlTG9nS0hSIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgY291bnQgPSAldSwgR0xzaXplaSBidWZTaXplID0g
JWQsIEdMZW51bSAqc291cmNlcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMZW51
bSAqdHlwZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQ
VFIKKyAgICAgICAgICAiLCBHTGVudW0gKnNldmVyaXRpZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwg
R0xzaXplaSAqbGVuZ3RocyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMY2hhciAq
bWVzc2FnZUxvZyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IGNvdW50LCBidWZTaXplLCAodWludHB0cl90KXNvdXJjZXMsICh1aW50cHRyX3QpdHlwZXMsICh1
aW50cHRyX3QpaWRzLAorICAgICAgICAgICh1aW50cHRyX3Qpc2V2ZXJpdGllcywgKHVpbnRwdHJf
dClsZW5ndGhzLCAodWludHB0cl90KW1lc3NhZ2VMb2cpOwogCisgICAgR0x1aW50IHJldHVyblZh
bHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKGNvbnRl
eHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRE
ZWJ1Z01lc3NhZ2VMb2dLSFIoY29udGV4dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlkcywgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlYWRuUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldERlYnVnTWVzc2FnZUxvZyhjb3VudCwg
YnVmU2l6ZSwgc291cmNlcywgdHlwZXMsIGlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VM
b2cpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUmVhZG5QaXhlbHNFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6R2V0RGVidWdNZXNzYWdlTG9nS0hSLCBHTHVpbnQ+KCk7CisgICAgICAgIH0KKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXREZWJ1Z01lc3NhZ2VMb2dLSFIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgaWRzLCBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nLCByZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldERlYnVnTWVzc2FnZUxvZ0tIUiwgR0x1aW50Pigp
OwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLS8vIEdMX0VYVF9zUkdCCi0K
LS8vIEdMX0VYVF9zZW1hcGhvcmUKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU2VtYXBob3Jlc0VY
VChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqc2VtYXBob3JlcykKK3ZvaWQgR0xfQVBJRU5UUlkK
K0dldE9iamVjdExhYmVsS0hSKEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbERlbGV0
ZVNlbWFwaG9yZXNFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVk
LCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KXNlbWFwaG9yZXMpOworICAgIEVWRU5UKCJn
bEdldE9iamVjdExhYmVsS0hSIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gaWRl
bnRpZmllciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xz
aXplaSAiCisgICAgICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICps
YWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGlkZW50aWZpZXIpLCBuYW1lLCBi
dWZTaXplLAorICAgICAgICAgICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgU2VtYXBob3JlSUQgKnNl
bWFwaG9yZXNQYWNrZWQgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFNlbWFwaG9yZUlEICo+KHNl
bWFwaG9yZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVNl
bWFwaG9yZXNFWFQoY29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCkpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRh
dGVHZXRPYmplY3RMYWJlbEtIUihjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+ZGVsZXRlU2VtYXBob3JlcyhuLCBzZW1hcGhvcmVzUGFja2VkKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmdldE9iamVjdExhYmVsKGlkZW50aWZpZXIsIG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
RGVsZXRlU2VtYXBob3Jlc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQ
YWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE9iamVjdExhYmVsS0hSLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgIGxhYmVsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2Vu
U2VtYXBob3Jlc0VYVChHTHNpemVpIG4sIEdMdWludCAqc2VtYXBob3JlcykKK3ZvaWQgR0xfQVBJ
RU5UUlkgR2V0T2JqZWN0UHRyTGFiZWxLSFIoY29uc3Qgdm9pZCAqcHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2VuU2VtYXBo
b3Jlc0VYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWlu
dCAqc2VtYXBob3JlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAotICAg
ICAgICAgICh1aW50cHRyX3Qpc2VtYXBob3Jlcyk7CisgICAgRVZFTlQoImdsR2V0T2JqZWN0UHRy
TGFiZWxLSFIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIGNvbnN0IHZvaWQgKnB0ciA9IDB4
JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVp
ICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGNoYXIgKmxhYmVsID0g
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClw
dHIsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEICo+KHNlbWFwaG9yZXMpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblNlbWFw
aG9yZXNFWFQoY29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbEtI
Uihjb250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5TZW1hcGhvcmVz
KG4sIHNlbWFwaG9yZXNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0T2JqZWN0UHRy
TGFiZWwocHRyLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEdlblNlbWFwaG9yZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBz
ZW1hcGhvcmVzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRPYmplY3RQdHJMYWJl
bEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2
RVhUKEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcykKK3Zv
aWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnZLSFIoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1z
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICBFVkVOVCgKLSAgICAgICAgImdsR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQiLAotICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTHVpbnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAg
ICAgICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlNlbWFwaG9yZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgKHVpbnRwdHJfdClwYXJh
bXMpOworICAgIEVWRU5UKCJnbEdldFBvaW50ZXJ2S0hSIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHBuYW1lID0gJXMsIHZvaWQgKipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoY29udGV4dCwg
c2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFBvaW50ZXJ2S0hSKGNvbnRleHQsIHBuYW1l
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dihzZW1hcGhvcmVQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0UG9pbnRlcnYocG5hbWUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTZW1hcGhvcmVQ
YXJhbWV0ZXJ1aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwg
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRQb2ludGVydktIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2VtYXBob3JlRVhUKEdMdWlu
dCBzZW1hcGhvcmUpCit2b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVsS0hSKEdMZW51bSBpZGVu
dGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAg
IEVWRU5UKCJnbElzU2VtYXBob3JlRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9y
ZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUpOworICAgIEVWRU5UKCJnbE9iamVjdExh
YmVsS0hSIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gaWRlbnRpZmllciA9ICVz
LCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCAiCisgICAgICAg
ICAgIkdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6T2JqZWN0SWRlbnRpZmllciwgaWRl
bnRpZmllciksIG5hbWUsIGxlbmd0aCwKKyAgICAgICAgICAodWludHB0cl90KWxhYmVsKTsKIAot
ICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTZW1hcGhvcmVJRD4oc2VtYXBob3JlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1NlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNr
ZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlT2JqZWN0TGFiZWxLSFIoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJl
bCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gY29udGV4dC0+aXNTZW1hcGhvcmUoc2VtYXBob3JlUGFja2VkKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2VtYXBob3JlRVhULCBHTGJvb2xl
YW4+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5vYmplY3RMYWJlbChpZGVudGlmaWVyLCBuYW1l
LCBsZW5ndGgsIGxhYmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzU2Vt
YXBob3JlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCByZXR1cm5W
YWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2VtYXBob3JlRVhULCBHTGJvb2xlYW4+
KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0TGFiZWxLSFIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKTsKICAgICB9Ci0gICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNlbWFwaG9yZVBhcmFtZXRl
cnVpNjR2RVhUKEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50NjQg
KnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWxLSFIoY29uc3Qgdm9pZCAq
cHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsU2VtYXBo
b3JlUGFyYW1ldGVydWk2NHZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBz
ZW1hcGhvcmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMdWludDY0ICpwYXJhbXMg
PSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNlbWFwaG9yZVBhcmFt
ZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZF
TlQoImdsT2JqZWN0UHRyTGFiZWxLSFIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIGNvbnN0
IHZvaWQgKnB0ciA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMc2l6ZWkgbGVuZ3Ro
ID0gJWQsIGNvbnN0IEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgbGVuZ3RoLCAodWludHB0cl90KWxhYmVs
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBo
b3JlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhv
cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlU2VtYXBob3Jl
UGFyYW1ldGVydWk2NHZFWFQoY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1z
KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU9i
amVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgbGVuZ3RoLCBsYWJlbCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNlbWFwaG9y
ZVBhcmFtZXRlcnVpNjR2KHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
ICAgICBjb250ZXh0LT5vYmplY3RQdHJMYWJlbChwdHIsIGxlbmd0aCwgbGFiZWwpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0UHRyTGFiZWxL
SFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwdHIsIGxlbmd0aCwgbGFiZWwpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBTaWduYWxTZW1hcGhvcmVFWFQoR0x1aW50IHNlbWFwaG9yZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJy
aWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
YnVmZmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1U
ZXh0dXJlQmFycmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnRleHR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xlbnVtICpkc3RMYXlvdXRzKQordm9pZCBHTF9BUElFTlRSWSBQb3BEZWJ1Z0dyb3Vw
S0hSKCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
Ci0gICAgRVZFTlQoImdsU2lnbmFsU2VtYXBob3JlRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMdWludCBudW1CdWZmZXJCYXJyaWVycyA9ICV1
LCBjb25zdCBHTHVpbnQgIgotICAgICAgICAgICIqYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUgot
ICAgICAgICAgICIsIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMgPSAldSwgY29uc3QgR0x1aW50
ICp0ZXh0dXJlcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIGNvbnN0IEdMZW51bSAq
ZHN0TGF5b3V0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHNlbWFwaG9yZSwgbnVtQnVmZmVyQmFycmllcnMsICh1aW50cHRyX3QpYnVmZmVycywgbnVtVGV4
dHVyZUJhcnJpZXJzLAotICAgICAgICAgICh1aW50cHRyX3QpdGV4dHVyZXMsICh1aW50cHRyX3Qp
ZHN0TGF5b3V0cyk7CisgICAgRVZFTlQoImdsUG9wRGVidWdHcm91cEtIUiIsICJjb250ZXh0ID0g
JWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
ZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2Vt
YXBob3JlSUQ+KHNlbWFwaG9yZSk7Ci0gICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsK
LSAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAgICAgICAgID0g
RnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVTaWduYWxTZW1hcGhv
cmVFWFQoY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywgYnVmZmVy
c1BhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UZXh0
dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBkc3RMYXlvdXRzKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoY29udGV4dCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnNpZ25hbFNlbWFwaG9yZShzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLCBi
dWZmZXJzUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRl
eHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMpOworICAgICAgICAgICAg
Y29udGV4dC0+cG9wRGVidWdHcm91cCgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoU2lnbmFsU2VtYXBob3JlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFj
a2VkLCBudW1CdWZmZXJCYXJyaWVycywKLSAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzUGFj
a2VkLCBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBkc3RMYXlvdXRzKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQb3BEZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4
dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFdhaXRTZW1hcGhvcmVFWFQoR0x1aW50
IHNlbWFwaG9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVt
QnVmZmVyQmFycmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICpidWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBudW1UZXh0dXJlQmFycmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICp0ZXh0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gKnNyY0xheW91dHMpCit2b2lkIEdMX0FQSUVOVFJZIFB1c2hEZWJ1Z0dy
b3VwS0hSKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdM
Y2hhciAqbWVzc2FnZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7Ci0gICAgRVZFTlQoImdsV2FpdFNlbWFwaG9yZUVYVCIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTHVpbnQgbnVtQnVmZmVyQmFycmll
cnMgPSAldSwgY29uc3QgR0x1aW50ICIKLSAgICAgICAgICAiKmJ1ZmZlcnMgPSAweCUwMTYiIFBS
SXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQgbnVtVGV4dHVyZUJhcnJpZXJzID0gJXUsIGNvbnN0
IEdMdWludCAqdGV4dHVyZXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBjb25zdCBH
TGVudW0gKnNyY0xheW91dHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBzZW1hcGhvcmUsIG51bUJ1ZmZlckJhcnJpZXJzLCAodWludHB0cl90KWJ1ZmZlcnMs
IG51bVRleHR1cmVCYXJyaWVycywKLSAgICAgICAgICAodWludHB0cl90KXRleHR1cmVzLCAodWlu
dHB0cl90KXNyY0xheW91dHMpOworICAgIEVWRU5UKCJnbFB1c2hEZWJ1Z0dyb3VwS0hSIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdMdWludCBpZCA9ICV1
LCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgIgorICAgICAgICAgICIqbWVzc2Fn
ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NvdXJjZSwgc291cmNlKSwgaWQsIGxlbmd0aCwKKyAg
ICAgICAgICAodWludHB0cl90KW1lc3NhZ2UpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7Ci0gICAgICAgIGNvbnN0IEJ1ZmZlcklEICpi
dWZmZXJzUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihi
dWZmZXJzKTsKLSAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAg
ICAgICAgID0gRnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVXYWl0
U2VtYXBob3JlRVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMs
IGJ1ZmZlcnNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHVzaERlYnVnR3Jv
dXBLSFIoY29udGV4dCwgc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+d2FpdFNlbWFw
aG9yZShzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRl
eHR1cmVzUGFja2VkLCBzcmNMYXlvdXRzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnB1c2hEZWJ1
Z0dyb3VwKHNvdXJjZSwgaWQsIGxlbmd0aCwgbWVzc2FnZSk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShXYWl0U2VtYXBob3JlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2Vt
YXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywKLSAgICAgICAgICAgICAgICAgICAgICBi
dWZmZXJzUGFja2VkLCBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBzcmNMYXlv
dXRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQdXNoRGVidWdHcm91cEtIUiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHNvdXJjZSwgaWQsIGxlbmd0aCwgbWVzc2FnZSk7CiAgICAgfQogfQogCi0v
LyBHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgotCi0vLyBHZXRVbnNp
Z25lZEJ5dGV2RVhUIGlzIGFscmVhZHkgZGVmaW5lZC4KLQotLy8gR0xfRVhUX3NlbWFwaG9yZV9m
ZAotdm9pZCBHTF9BUElFTlRSWSBJbXBvcnRTZW1hcGhvcmVGZEVYVChHTHVpbnQgc2VtYXBob3Jl
LCBHTGVudW0gaGFuZGxlVHlwZSwgR0xpbnQgZmQpCisvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVy
X2NvbXBpbGUKK3ZvaWQgR0xfQVBJRU5UUlkgTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSKEdM
dWludCBjb3VudCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7Ci0gICAgRVZFTlQoImdsSW1wb3J0U2VtYXBob3JlRmRFWFQiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAl
cywgR0xpbnQgZmQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5cGUp
LCBmZCk7CisgICAgRVZFTlQoImdsTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSIiwgImNvbnRl
eHQgPSAlZCwgR0x1aW50IGNvdW50ID0gJXUiLCBDSUQoY29udGV4dCksIGNvdW50KTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOwotICAg
ICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8SGFuZGxlVHlwZT4oaGFuZGxlVHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNr
ZWQsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0tIUihjb250ZXh0
LCBjb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmltcG9ydFNlbWFwaG9yZUZkKHNlbWFwaG9yZVBhY2tlZCwgaGFuZGxlVHlw
ZVBhY2tlZCwgZmQpOworICAgICAgICAgICAgY29udGV4dC0+bWF4U2hhZGVyQ29tcGlsZXJUaHJl
YWRzKGNvdW50KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEltcG9ydFNlbWFw
aG9yZUZkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBoYW5kbGVU
eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGZkKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBj
b3VudCk7CiAgICAgfQogfQogCi0vLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjCi0K
LS8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLQotLy8gR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fczN0YwotCi0vLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3Ny
Z2IKLQotLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0KLS8vIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAotCi0vLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCi12b2lk
IEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UxREVYVChHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoKQorLy8gR0xfTlZfZmVuY2UKK3ZvaWQgR0xfQVBJ
RU5UUlkgRGVsZXRlRmVuY2VzTlYoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZF
TlQoImdsVGV4U3RvcmFnZTFERVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9
ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0
KSwgbGV2ZWxzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5h
bEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCk7CisgICAgRVZFTlQoImdsRGVsZXRlRmVu
Y2VzTlYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBH
THVpbnQgKmZlbmNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAg
ICAgICAgICh1aW50cHRyX3QpZmVuY2VzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IEZlbmNlTlZJRCAqZmVuY2Vz
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEZlbmNlTlZJRCAq
PihmZW5jZXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlMURFWFQoY29udGV4dCwgdGFyZ2V0
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCkpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVGZW5jZXNOVihjb250ZXh0LCBuLCBm
ZW5jZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMUQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGZW5jZXNOVihuLCBmZW5j
ZXNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTFE
RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlRmVuY2VzTlYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWQotVGV4U3RvcmFnZTJERVhUKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBH
TF9BUElFTlRSWSBGaW5pc2hGZW5jZU5WKEdMdWludCBmZW5jZSkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFn
ZTJERVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
c2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAiCi0gICAgICAg
ICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGFyZ2V0KSwgbGV2ZWxzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJ
bnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVO
VCgiZ2xGaW5pc2hGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUiLCBD
SUQoY29udGV4dCksIGZlbmNlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
RmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8RmVuY2VOVklEPihmZW5jZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyREVYVChj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RmluaXNoRmVuY2VOVihjb250ZXh0LCBmZW5jZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJn
ZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICAgICAgY29udGV4dC0+ZmluaXNoRmVuY2VOVihmZW5jZVBhY2tlZCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlMkRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmluaXNoRmVuY2VO
ViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNERVhUKEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgZGVwdGgpCit2b2lkIEdMX0FQSUVOVFJZIEdlbkZlbmNlc05WKEdMc2l6ZWkgbiwgR0x1
aW50ICpmZW5jZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UzREVYVCIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdM
c2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0
KSwgbGV2ZWxzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5h
bEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgRVZF
TlQoImdsR2VuRmVuY2VzTlYiLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50
ICpmZW5jZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBu
LCAodWludHB0cl90KWZlbmNlcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVUZXhTdG9yYWdlM0RFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7CisgICAgICAgIEZlbmNlTlZJRCAqZmVuY2VzUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRCAqPihm
ZW5jZXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlR2VuRmVuY2VzTlYoY29udGV4dCwgbiwgZmVuY2VzUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3Rv
cmFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgpOworICAgICAgICAgICAgY29udGV4dC0+Z2VuRmVuY2VzTlYobiwgZmVuY2VzUGFj
a2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UzREVYVCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoR2VuRmVuY2VzTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBmZW5j
ZXNQYWNrZWQpOwogICAgIH0KIH0KIAotLy8gR0xfS0hSX2RlYnVnCi12b2lkIEdMX0FQSUVOVFJZ
IERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrLCBjb25zdCB2
b2lkICp1c2VyUGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIEdldEZlbmNlaXZOVihHTHVpbnQgZmVu
Y2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRGVidWdNZXNzYWdlQ2Fs
bGJhY2tLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMREVCVUdQUk9DS0hSIGNhbGxi
YWNrID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgY29uc3Qgdm9pZCAqdXNlclBhcmFt
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJf
dCljYWxsYmFjaywgKHVpbnRwdHJfdCl1c2VyUGFyYW0pOworICAgIEVWRU5UKCJnbEdldEZlbmNl
aXZOViIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUsIEdMZW51
bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgZmVuY2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2Fn
ZUNhbGxiYWNrS0hSKGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pKTsKKyAgICAgICAgRmVu
Y2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RmVuY2VOVklEPihmZW5jZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldEZlbmNlaXZOVihjb250ZXh0LCBmZW5jZVBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUNhbGxiYWNrKGNhbGxiYWNrLCB1c2VyUGFyYW0p
OworICAgICAgICAgICAgY29udGV4dC0+Z2V0RmVuY2Vpdk5WKGZlbmNlUGFja2VkLCBwbmFtZSwg
cGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNh
bGxiYWNrS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RmVuY2Vpdk5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
ZmVuY2VQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMZW51bSBzb3VyY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpCitHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNGZW5jZU5WKEdMdWludCBmZW5jZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRGVidWdNZXNzYWdlQ29u
dHJvbEtIUiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBH
TGVudW0gdHlwZSA9ICVzLCBHTGVudW0gc2V2ZXJpdHkgPSAlcywgR0xzaXplaSBjb3VudCAiCi0g
ICAgICAgICAgIj0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIsIEdM
Ym9vbGVhbiBlbmFibGVkID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLAotICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5cGUpLAotICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5LCBzZXZlcml0eSksIGNvdW50LCAo
dWludHB0cl90KWlkcywKLSAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhlbmFibGVkKSk7Cisg
ICAgRVZFTlQoImdsSXNGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUi
LCBDSUQoY29udGV4dCksIGZlbmNlKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKGNvbnRl
eHQsIHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJsZWQpKTsKKyAgICAg
ICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RmVuY2VOVklEPihmZW5jZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUlzRmVuY2VOVihjb250ZXh0LCBmZW5jZVBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlYnVn
TWVzc2FnZUNvbnRyb2woc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291bnQsIGlkcywgZW5hYmxl
ZCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRmVuY2VOVihmZW5jZVBh
Y2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VDb250
cm9sS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgaWRzLCBlbmFibGVkKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1
ZTxFbnRyeVBvaW50OjpJc0ZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAg
ICBBTkdMRV9DQVBUVVJFKElzRmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFj
a2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRmVuY2VOViwgR0xi
b29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgRGVidWdNZXNzYWdlSW5zZXJ0S0hSKEdMZW51bSBzb3VyY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpCit2b2lkIEdMX0FQSUVOVFJZIFNl
dEZlbmNlTlYoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEZWJ1Z01l
c3NhZ2VJbnNlcnRLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2Ug
PSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0x1aW50IGlkID0gJXUsIEdMZW51bSBzZXZlcml0eSA9
ICIKLSAgICAgICAgICAiJXMsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqYnVm
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLAotICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5cGUpLCBpZCwKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdTZXZlcml0eSwgc2V2ZXJpdHkpLCBsZW5n
dGgsICh1aW50cHRyX3QpYnVmKTsKKyAgICBFVkVOVCgiZ2xTZXRGZW5jZU5WIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IGZlbmNlID0gJXUsIEdMZW51bSBjb25kaXRpb24gPSAlcyIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBmZW5jZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgY29uZGl0aW9uKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlSW5zZXJ0S0hSKGNvbnRleHQsIHNvdXJjZSwgdHlwZSwg
aWQsIHNldmVyaXR5LCBsZW5ndGgsIGJ1ZikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZXRGZW5jZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkLCBj
b25kaXRpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VJbnNlcnQoc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJp
dHksIGxlbmd0aCwgYnVmKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEZlbmNlTlYoZmVuY2VQ
YWNrZWQsIGNvbmRpdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1
Z01lc3NhZ2VJbnNlcnRLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIHR5cGUsIGlk
LCBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIGJ1Zik7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoU2V0RmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFj
a2VkLCBjb25kaXRpb24pOwogICAgIH0KIH0KIAotR0x1aW50IEdMX0FQSUVOVFJZIEdldERlYnVn
TWVzc2FnZUxvZ0tIUihHTHVpbnQgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtICpzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0aWVzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCitHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgVGVzdEZlbmNlTlYoR0x1aW50IGZlbmNlKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZXREZWJ1Z01lc3Nh
Z2VMb2dLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBjb3VudCA9ICV1LCBH
THNpemVpIGJ1ZlNpemUgPSAlZCwgR0xlbnVtICpzb3VyY2VzID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICAgIiwgR0xlbnVtICp0eXBlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHVpbnQgKmlk
cyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSAqc2V2ZXJpdGllcyA9IDB4
JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpICpsZW5ndGhzID0gMHglMDE2IiBQUkl4UFRSCi0gICAg
ICAgICAgIiwgR0xjaGFyICptZXNzYWdlTG9nID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgY291bnQsIGJ1ZlNpemUsICh1aW50cHRyX3Qpc291cmNlcywgKHVp
bnRwdHJfdCl0eXBlcywgKHVpbnRwdHJfdClpZHMsCi0gICAgICAgICAgKHVpbnRwdHJfdClzZXZl
cml0aWVzLCAodWludHB0cl90KWxlbmd0aHMsICh1aW50cHRyX3QpbWVzc2FnZUxvZyk7CisgICAg
RVZFTlQoImdsVGVzdEZlbmNlTlYiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIs
IENJRChjb250ZXh0KSwgZmVuY2UpOwogCi0gICAgR0x1aW50IHJldHVyblZhbHVlOworICAgIEdM
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nS0hSKGNvbnRleHQs
IGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHMsIHNldmVyaXRpZXMsIGxlbmd0
aHMsIG1lc3NhZ2VMb2cpKTsKKyAgICAgICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEPihmZW5jZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRlc3RGZW5jZU5WKGNvbnRl
eHQsIGZlbmNlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXREZWJ1Z01lc3NhZ2VMb2coY291
bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNz
YWdlTG9nKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+dGVzdEZlbmNlTlYo
ZmVuY2VQYWNrZWQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0
RGVidWdNZXNzYWdlTG9nS0hSLCBHTHVpbnQ+KCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpUZXN0RmVuY2VOViwgR0xib29sZWFu
PigpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RGVidWdNZXNzYWdlTG9n
S0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVz
LAotICAgICAgICAgICAgICAgICAgICAgIGlkcywgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2Fn
ZUxvZywgcmV0dXJuVmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRlc3RGZW5jZU5WLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVlKTsKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6R2V0RGVidWdNZXNzYWdlTG9nS0hSLCBHTHVpbnQ+KCk7CisgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OlRlc3RGZW5j
ZU5WLCBHTGJvb2xlYW4+KCk7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAot
dm9pZCBHTF9BUElFTlRSWQotR2V0T2JqZWN0TGFiZWxLSFIoR0xlbnVtIGlkZW50aWZpZXIsIEdM
dWludCBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpsYWJl
bCkKKy8vIEdMX09FU19FR0xfaW1hZ2UKK3ZvaWQgR0xfQVBJRU5UUlkgRUdMSW1hZ2VUYXJnZXRS
ZW5kZXJidWZmZXJTdG9yYWdlT0VTKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2Up
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAg
IEVWRU5UKCJnbEdldE9iamVjdExhYmVsS0hSIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gaWRlbnRpZmllciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUg
PSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwg
R0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGlkZW50aWZpZXIp
LCBuYW1lLCBidWZTaXplLAotICAgICAgICAgICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90
KWxhYmVsKTsKKyAgICBFVkVOVCgiZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VP
RVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlZ2xJ
bWFnZU9FUyBpbWFnZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksICh1
aW50cHRyX3QpaW1hZ2UpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0T2Jq
ZWN0TGFiZWxLSFIoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBs
YWJlbCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoY29udGV4dCwgdGFyZ2V0
LCBpbWFnZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmdldE9iamVjdExhYmVsKGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgbGFiZWwpOworICAgICAgICAgICAgY29udGV4dC0+ZUdMSW1hZ2VUYXJnZXRSZW5kZXJi
dWZmZXJTdG9yYWdlKHRhcmdldCwgaW1hZ2UpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0T2JqZWN0TGFiZWxLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVy
LCBuYW1lLCBidWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgbGFiZWwpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW1hZ2UpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBHZXRPYmplY3RQdHJMYWJlbEtIUihjb25zdCB2b2lkICpwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKQordm9pZCBHTF9B
UElFTlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTGVudW0gdGFyZ2V0LCBHTGVnbElt
YWdlT0VTIGltYWdlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZXRPYmplY3RQdHJMYWJlbEtIUiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAg
ICAgIiwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJ
eFBUUgotICAgICAgICAgICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgYnVmU2l6ZSwgKHVpbnRwdHJf
dClsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5UKCJnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0
YXJnZXQpLCAodWludHB0cl90KWltYWdlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbEtIUihj
b250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKKyAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgaW1hZ2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRPYmplY3RQdHJMYWJlbChwdHIsIGJ1ZlNpemUsIGxlbmd0
aCwgbGFiZWwpOworICAgICAgICAgICAgY29udGV4dC0+ZUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQo
dGFyZ2V0UGFja2VkLCBpbWFnZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRPYmplY3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwg
bGVuZ3RoLCBsYWJlbCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRUdMSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGltYWdlKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnZLSFIoR0xlbnVtIHBuYW1lLCB2
b2lkICoqcGFyYW1zKQorLy8gR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKKwor
Ly8gR0xfT0VTX2RlcHRoMzIKKworLy8gR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkCit2b2lk
IEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMoR0x1aW50IGJ1ZiwgR0xlbnVt
IG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldFBvaW50ZXJ2S0hSIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIHZvaWQgKipwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVO
VCgiZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBtb2RlUkdCID0gJXMsIEdMZW51bSBtb2RlQWxwaGEg
PSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpCbGVuZEVxdWF0aW9uTW9kZUVYVCwgbW9kZVJHQiksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlQWxwaGEpKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQb2ludGVydktIUihjb250ZXh0LCBwbmFtZSwgcGFyYW1z
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMoY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxw
aGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRQb2ludGVydihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UG9pbnRlcnZLSFIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEVxdWF0
aW9uU2VwYXJhdGVpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2Rl
QWxwaGEpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBPYmplY3RMYWJlbEtIUihHTGVu
dW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIg
KmxhYmVsKQordm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uaU9FUyhHTHVpbnQgYnVmLCBH
TGVudW0gbW9kZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7Ci0gICAgRVZFTlQoImdsT2JqZWN0TGFiZWxLSFIiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBpZGVudGlmaWVyID0gJXMsIEdMdWludCBuYW1lID0gJXUsIEdMc2l6ZWkg
bGVuZ3RoID0gJWQsIGNvbnN0ICIKLSAgICAgICAgICAiR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpPYmplY3RJZGVudGlmaWVyLCBpZGVudGlmaWVyKSwgbmFtZSwgbGVuZ3RoLAotICAg
ICAgICAgICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5UKCJnbEJsZW5kRXF1YXRpb25pT0VT
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gbW9kZSA9ICVzIiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgIGJ1ZiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJs
ZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlT2JqZWN0TGFiZWxLSFIoY29udGV4
dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRFcXVhdGlvbmlPRVMo
Y29udGV4dCwgYnVmLCBtb2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+b2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgbGVu
Z3RoLCBsYWJlbCk7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEVxdWF0aW9uaShidWYsIG1v
ZGUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0TGFiZWxLSFIsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEVxdWF0aW9uaU9FUywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGJ1ZiwgbW9kZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE9iamVjdFB0ckxh
YmVsS0hSKGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFi
ZWwpCit2b2lkIEdMX0FQSUVOVFJZCitCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMoR0x1aW50IGJ1Ziwg
R0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0
QWxwaGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwotICAgIEVWRU5UKCJnbE9iamVjdFB0ckxhYmVsS0hSIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBjb25zdCB2b2lkICpwdHIgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNp
emVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKmxhYmVsID0gMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClwdHIsIGxlbmd0aCwgKHVpbnRw
dHJfdClsYWJlbCk7CisgICAgRVZFTlQoImdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmNSR0IgPSAlcywg
R0xlbnVtIGRzdFJHQiA9ICVzLCBHTGVudW0gc3JjQWxwaGEgIgorICAgICAgICAgICI9ICVzLCBH
TGVudW0gZHN0QWxwaGEgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwgc3JjUkdCKSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdFJHQiksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBzcmNB
bHBoYSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFj
dG9yLCBkc3RBbHBoYSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZU9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgbGVuZ3RoLCBs
YWJlbCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPm9iamVjdFB0ckxhYmVsKHB0ciwgbGVuZ3RoLCBsYWJlbCk7Ci0gICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShPYmplY3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHB0ciwgbGVuZ3RoLCBsYWJlbCk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVOVFJZ
IFBvcERlYnVnR3JvdXBLSFIoKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xQb3BEZWJ1Z0dyb3VwS0hSIiwgImNvbnRleHQg
PSAlZCIsIENJRChjb250ZXh0KSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwS0hSKGNvbnRleHQpKTsK
LSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wb3BEZWJ1Z0dyb3VwKCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQb3BE
ZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7Ci0gICAgfQotfQotCi12b2lkIEdM
X0FQSUVOVFJZIFB1c2hEZWJ1Z0dyb3VwS0hSKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgR0xz
aXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWVzc2FnZSkKLXsKLSAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsUHVzaERlYnVnR3Jv
dXBLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2UgPSAlcywgR0x1
aW50IGlkID0gJXUsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAiCi0gICAgICAg
ICAgIiptZXNzYWdlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLCBpZCwg
bGVuZ3RoLAotICAgICAgICAgICh1aW50cHRyX3QpbWVzc2FnZSk7Ci0KLSAgICBpZiAoY29udGV4
dCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHVzaERlYnVn
R3JvdXBLSFIoY29udGV4dCwgc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKSk7CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRl
QmxlbmRGdW5jU2VwYXJhdGVpT0VTKGNvbnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0Fs
cGhhLCBkc3RBbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwgaWQsIGxlbmd0aCwgbWVz
c2FnZSk7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZWkoYnVmLCBzcmNS
R0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFB1c2hEZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNl
LCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEZ1bmNT
ZXBhcmF0ZWlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICBkc3RBbHBoYSk7CiAgICAgfQogfQogCi0v
LyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKLXZvaWQgR0xfQVBJRU5UUlkgTWF4U2hh
ZGVyQ29tcGlsZXJUaHJlYWRzS0hSKEdMdWludCBjb3VudCkKK3ZvaWQgR0xfQVBJRU5UUlkgQmxl
bmRGdW5jaU9FUyhHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xN
YXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgY291bnQg
PSAldSIsIENJRChjb250ZXh0KSwgY291bnQpOworICAgIEVWRU5UKCJnbEJsZW5kRnVuY2lPRVMi
LCAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmMgPSAlcywgR0xlbnVt
IGRzdCA9ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGJ1ZiwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBzcmMpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgZHN0KSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF4U2hhZGVyQ29tcGlsZXJU
aHJlYWRzS0hSKGNvbnRleHQsIGNvdW50KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRnVuY2lPRVMoY29udGV4dCwgYnVmLCBzcmMsIGRz
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPm1heFNoYWRlckNvbXBpbGVyVGhyZWFkcyhjb3VudCk7CisgICAgICAgICAgICBjb250
ZXh0LT5ibGVuZEZ1bmNpKGJ1Ziwgc3JjLCBkc3QpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgY291bnQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRnVuY2lPRVMsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBidWYsIHNyYywgZHN0KTsKICAgICB9CiB9CiAKLS8vIEdMX05WX2ZlbmNl
Ci12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUZlbmNlc05WKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICpmZW5jZXMpCit2b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFza2lPRVMoR0x1aW50IGluZGV4LCBH
TGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQo
ImdsRGVsZXRlRmVuY2VzTlYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9
ICVkLCBjb25zdCBHTHVpbnQgKmZlbmNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRl
eHQpLCBuLAotICAgICAgICAgICh1aW50cHRyX3QpZmVuY2VzKTsKKyAgICBFVkVOVCgiZ2xDb2xv
ck1hc2tpT0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwg
R0xib29sZWFuIHIgPSAlcywgR0xib29sZWFuIGcgPSAlcywgR0xib29sZWFuIGIgPSAlcywgIgor
ICAgICAgICAgICJHTGJvb2xlYW4gYSA9ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGlu
ZGV4LCBHTGJvb2xlYW5Ub1N0cmluZyhyKSwgR0xib29sZWFuVG9TdHJpbmcoZyksIEdMYm9vbGVh
blRvU3RyaW5nKGIpLAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGEpKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEZlbmNlTlZJRCAqPihmZW5jZXMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZUZlbmNlc05WKGNvbnRleHQsIG4sIGZlbmNl
c1BhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVDb2xvck1hc2tpT0VTKGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBhKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRl
RmVuY2VzTlYobiwgZmVuY2VzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNvbG9yTWFz
a2koaW5kZXgsIHIsIGcsIGIsIGEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
RGVsZXRlRmVuY2VzTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKENvbG9yTWFza2lPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBpbmRleCwgciwgZywgYiwgYSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZpbmlz
aEZlbmNlTlYoR0x1aW50IGZlbmNlKQordm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaU9FUyhHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEZpbmlzaEZlbmNlTlYiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0KSwgZmVuY2UpOworICAgIEVW
RU5UKCJnbERpc2FibGVpT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
THVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVGaW5pc2hGZW5jZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkKSk7CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVpT0VTKGNv
bnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5maW5pc2hGZW5jZU5WKGZlbmNlUGFja2VkKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmRpc2FibGVpKHRhcmdldCwgaW5kZXgpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRmluaXNoRmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGZlbmNlUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNhYmxlaU9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZW5GZW5jZXNOVihHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKQordm9pZCBHTF9BUElF
TlRSWSBFbmFibGVpT0VTKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2Vu
RmVuY2VzTlYiLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpmZW5jZXMg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0
cl90KWZlbmNlcyk7CisgICAgRVZFTlQoImdsRW5hYmxlaU9FUyIsICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5k
ZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGZW5jZU5WSUQgKmZlbmNl
c1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEICo+KGZlbmNl
cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuRmVuY2VzTlYoY29udGV4dCwgbiwg
ZmVuY2VzUGFja2VkKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2VuRmVuY2VzTlYobiwgZmVuY2VzUGFja2VkKTsKLSAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbkZlbmNlc05WLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbiwgZmVuY2VzUGFja2VkKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgR2V0RmVu
Y2Vpdk5WKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQotewotICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xHZXRGZW5jZWl2TlYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9
ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGZlbmNlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKLQotICAgIGlm
IChjb250ZXh0KQotICAgIHsKLSAgICAgICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2UpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZlbmNlaXZOVihjb250ZXh0LCBmZW5jZVBhY2tl
ZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVFbmFibGVpT0VTKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRG
ZW5jZWl2TlYoZmVuY2VQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4
dC0+ZW5hYmxlaSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldEZlbmNlaXZOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShFbmFibGVpT0VTLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7CiAgICAgfQogfQogCi1HTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgSXNGZW5jZU5WKEdMdWludCBmZW5jZSkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0Vu
YWJsZWRpT0VTKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsSXNGZW5jZU5W
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUiLCBDSUQoY29udGV4dCksIGZlbmNl
KTsKKyAgICBFVkVOVCgiZ2xJc0VuYWJsZWRpT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CiAK
ICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RmVuY2VOVklEPihmZW5jZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVJc0ZlbmNlTlYoY29udGV4dCwgZmVuY2VQYWNrZWQpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRmVu
Y2VOVihmZW5jZVBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpJc0ZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKElzRmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFja2VkLCByZXR1cm5W
YWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRmVuY2VOViwgR0xib29sZWFuPigpOwot
ICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgU2V0
RmVuY2VOVihHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pCi17Ci0gICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFNldEZlbmNl
TlYiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSwgR0xlbnVtIGNvbmRpdGlvbiA9
ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIGZlbmNlLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb25kaXRpb24pKTsKLQotICAgIGlmIChjb250ZXh0KQot
ICAgIHsKLSAgICAgICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVNldEZlbmNlTlYoY29udGV4dCwgZmVuY2VQYWNrZWQsIGNvbmRpdGlvbikpOwotICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZl
bmNlTlYoZmVuY2VQYWNrZWQsIGNvbmRpdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShTZXRGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIGNv
bmRpdGlvbik7Ci0gICAgfQotfQotCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgVGVzdEZlbmNlTlYo
R0x1aW50IGZlbmNlKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKLSAgICBFVkVOVCgiZ2xUZXN0RmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBmZW5jZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBmZW5jZSk7Ci0KLSAgICBHTGJvb2xlYW4gcmV0
dXJuVmFsdWU7Ci0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBGZW5jZU5WSUQgZmVu
Y2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEPihmZW5j
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXN0RmVuY2VOVihjb250
ZXh0LCBmZW5jZVBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVJc0VuYWJsZWRpT0VTKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IGNvbnRleHQtPnRlc3RGZW5jZU5WKGZlbmNlUGFja2VkKTsKKyAgICAgICAgICAgIHJldHVy
blZhbHVlID0gY29udGV4dC0+aXNFbmFibGVkaSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQog
ICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OlRlc3RGZW5jZU5WLCBHTGJvb2xlYW4+KCk7Cisg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpJc0VuYWJsZWRpT0VTLCBHTGJvb2xlYW4+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShUZXN0RmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFja2VkLCBy
ZXR1cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNFbmFibGVkaU9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAg
ZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6VGVzdEZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNFbmFibGVkaU9FUywgR0xi
b29sZWFuPigpOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLS8vIEdMX09F
U19FR0xfaW1hZ2UKLXZvaWQgR0xfQVBJRU5UUlkgRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlT0VTKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCi17Ci0gICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEVH
TEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVnbEltYWdlT0VTIGltYWdlID0gMHglMDE2IiBQ
Ukl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgKHVpbnRwdHJfdClpbWFnZSk7Ci0KLSAgICBp
ZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
RUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNvbnRleHQsIHRhcmdldCwgaW1h
Z2UpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbWFnZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShFR0xJbWFnZVRhcmdldFJlbmRlcmJ1
ZmZlclN0b3JhZ2VPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGltYWdlKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xl
bnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cywgR0xlZ2xJbWFnZU9FUyBpbWFnZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRh
cmdldCksICh1aW50cHRyX3QpaW1hZ2UpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBp
bWFnZSkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKHRhcmdldFBhY2tlZCwgaW1hZ2UpOwot
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRP
RVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGltYWdlKTsKLSAgICB9Ci19
Ci0KLS8vIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCi0KLS8vIEdMX09FU19k
ZXB0aDMyCi0KIC8vIEdMX09FU19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4CiB2b2lkIEdMX0FQ
SUVOVFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoR0xlbnVtIG1vZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTU4Mzcs
MTAgKzU2MDUsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VT
KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZl
TW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBl
Pih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyhjb250ZXh0LCBtb2RlUGFja2VkLCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC01ODY5LDkgKzU2MzcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0Vs
ZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVt
ZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+
KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3
RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQs
IGNvdW50LCB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0
ZXgpKTsKQEAgLTU5MDIsOSArNTY3MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4T0VTKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2
ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVu
dHNCYXNlVmVydGV4T0VTKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKQEAgLTU5MzEsNyAr
NTY5OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleGZPRVMoR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3aWR0aCwgR0xmCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1RleGZPRVMoY29udGV4dCwgeCwg
eSwgeiwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01OTUw
LDcgKzU3MTgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhmdk9FUyhjb25zdCBHTGZsb2F0
ICpjb29yZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3
VGV4ZnZPRVMoY29udGV4dCwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNTk3MCw3ICs1NzM4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4aU9F
UyhHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3aWR0aCwgR0xpbnQgaGVpZ2gKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3
VGV4aU9FUyhjb250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTU5ODksNyArNTc1Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd1Rl
eGl2T0VTKGNvbnN0IEdMaW50ICpjb29yZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3VGV4aXZPRVMoY29udGV4dCwgY29vcmRzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjAwOSw3ICs1Nzc3LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBEcmF3VGV4c09FUyhHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNo
b3J0IHdpZHRoLCBHTHMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3VGV4c09FUyhjb250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTYwMjgsNyArNTc5Niw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRHJhd1RleHN2T0VTKGNvbnN0IEdMc2hvcnQgKmNvb3JkcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhzdk9FUyhjb250ZXh0LCBj
b29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02MDQ4LDcg
KzU4MTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXh4T0VTKEdMZml4ZWQgeCwgR0xmaXhl
ZCB5LCBHTGZpeGVkIHosIEdMZml4ZWQgd2lkdGgsIEdMZgogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXh4T0VTKGNvbnRleHQsIHgs
IHksIHosIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjA2
Nyw3ICs1ODM1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4eHZPRVMoY29uc3QgR0xmaXhl
ZCAqY29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJh
d1RleHh2T0VTKGNvbnRleHQsIGNvb3JkcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTYwODYsOSArNTg1NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYW1l
YnVmZmVyT0VTKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZEZyYW1lYnVmZmVyT0VTKGNv
bnRleHQsIHRhcmdldCwgZnJhbWVidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC02MTA2LDkgKzU4NzQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJp
bmRSZW5kZXJidWZmZXJPRVMoR0xlbnVtIHRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVm
ZmVyUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZm
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdM
PFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyT0VTKGNvbnRleHQs
IHRhcmdldCwgcmVuZGVyYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNjEyNyw3ICs1ODk1LDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIENoZWNr
RnJhbWVidWZmZXJTdGF0dXNPRVMoR0xlbnVtIHRhcmdldCkKICAgICBHTGVudW0gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVMoY29udGV4dCwgdGFyZ2V0KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTYxNTYsOSArNTkyNCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVs
ZXRlRnJhbWVidWZmZXJzT0VTKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQg
KmZyYW1lYnVmZmVyc1BhY2tlZCAgICAgICA9IEZyb21HTDxjb25zdCBGcmFtZWJ1ZmZlcklEICo+
KGZyYW1lYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZl
cnNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgRnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxl
dGVGcmFtZWJ1ZmZlcnNPRVMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjE3OCw4ICs1OTQ2LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBEZWxldGVSZW5kZXJidWZmZXJzT0VTKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICpyZW5kZXJidWZmZXJzKQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgY29u
c3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgUmVu
ZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZmZXJzT0VTKGNvbnRl
eHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC02MjA0LDggKzU5NzIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyT0VTKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAgICAgICAg
ICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9
IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsCkBAIC02MjM2LDEwICs2MDA0LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkg
RnJhbWVidWZmZXJUZXh0dXJlMkRPRVMoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7Ci0gICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
SUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsK
KyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMo
Y29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJl
UGFja2VkLCBsZXZlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MjYxLDkgKzYw
MjksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlbkZyYW1lYnVmZmVyc09FUyhHTHNpemVpIG4sIEdM
dWludCAqZnJhbWVidWZmZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBG
cmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8RnJh
bWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZmZXJJRCAqZnJh
bWVidWZmZXJzUGFja2VkID0gRnJvbUdMPEZyYW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2Vu
RnJhbWVidWZmZXJzT0VTKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYyODIsOSArNjA1MCw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2VuUmVuZGVyYnVmZmVyc09FUyhHTHNpemVpIG4sIEdMdWludCAqcmVuZGVy
YnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUmVuZGVyYnVmZmVy
SUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklE
ICo+KHJlbmRlcmJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZl
cnNQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdlblJlbmRl
cmJ1ZmZlcnNPRVMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYzMDIsOCArNjA3MCw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2VuZXJhdGVNaXBtYXBPRVMoR0xlbnVtIHRhcmdldCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5lcmF0
ZU1pcG1hcE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtNjMzMCw3ICs2MDk4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2T0VTKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcykp
OwpAQCAtNjM1Myw4ICs2MTIxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdk9FUyhHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW4KIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTKGNvbnRleHQsIHRh
cmdldCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTYzNzIsOCArNjE0MCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZyYW1lYnVm
ZmVyT0VTKEdMdWludCBmcmFtZWJ1ZmZlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVy
UGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFt
ZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJ
RD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlSXNGcmFtZWJ1ZmZlck9FUyhjb250ZXh0LCBmcmFtZWJ1ZmZlclBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NDAyLDggKzYxNzAsOCBAQCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNSZW5kZXJidWZmZXJPRVMoR0x1aW50IHJlbmRlcmJ1ZmZl
cikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBG
cm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9t
R0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1JlbmRlcmJ1ZmZlck9FUyhjb250
ZXh0LCByZW5kZXJidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NjQzNyw3ICs2MjA1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlT0VT
KEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNvbnRl
eHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKQEAgLTY0NjcsOSAr
NjIzNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUJpbmFyeU9FUyhHTHVpbnQgcHJv
Z3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9n
cmFtQmluYXJ5T0VTKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
YXJ5Rm9ybWF0LCBiaW5hcnkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjQ5NSw4
ICs2MjYzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtQmluYXJ5T0VTKEdMdWludCBwcm9n
cmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1CaW5hcnlPRVMoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOwpAQCAt
NjUyMCw5ICs2Mjg4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQb2ludGVydk9FUyhH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZm
ZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydk9FUyhjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC02NTQyLDggKzYzMTAsOCBAQCB2b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJP
RVMoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2VzcykKICAgICB2b2lkICpyZXR1cm5WYWx1ZTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4o
dGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU1hcEJ1ZmZlck9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGFjY2VzcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NTcyLDggKzYzNDAsOCBAQCBHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgVW5tYXBCdWZmZXJPRVMoR0xlbnVtIHRhcmdldCkKICAgICBHTGJvb2xlYW4g
cmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGlu
Zz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbm1hcEJ1ZmZlck9FUyhjb250ZXh0LCB0YXJnZXRQYWNr
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjYwMiw4ICs2MzcwLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyhHTHVpbnQgbWF0cml4cGFsZXR0
ZWluZGV4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3VycmVudFBhbGV0dGVNYXRyaXhPRVMo
Y29udGV4dCwgbWF0cml4cGFsZXR0ZWluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNjYyMCw3ICs2Mzg4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMb2FkUGFs
ZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJp
eE9FUyhjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY2NDIsOCArNjQx
MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWF0cml4SW5kZXhQb2ludGVyT0VTKEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU1h
dHJpeEluZGV4UG9pbnRlck9FUyhjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NjY0LDggKzY0MzIs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIFdlaWdodFBvaW50ZXJPRVMoR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlV2Vp
Z2h0UG9pbnRlck9FUyhjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02Njg3LDkgKzY0NTUsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFBvaW50U2l6ZVBvaW50ZXJPRVMoR0xlbnVtIHR5cGUsIEdMc2l6ZWkg
c3RyaWRlLCBjb25zdCB2b2lkICpwbwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBl
Pih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUG9pbnRTaXplUG9pbnRlck9FUyhjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBv
aW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NzExLDcg
KzY0NzksNyBAQCBHTGJpdGZpZWxkIEdMX0FQSUVOVFJZIFF1ZXJ5TWF0cml4eE9FUyhHTGZpeGVk
ICptYW50aXNzYSwgR0xpbnQgKmV4cG9uZW50KQogICAgIEdMYml0ZmllbGQgcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVF1
ZXJ5TWF0cml4eE9FUyhjb250ZXh0LCBtYW50aXNzYSwgZXhwb25lbnQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNjc1Myw4ICs2NTIxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21w
cmVzc2VkVGV4SW1hZ2UzRE9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNET0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTY3OTIsOSArNjU2MCw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMoR0xlbnVtIHRhcmdldCwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUygK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKSk7
CkBAIC02ODI4LDkgKzY1OTYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTNE
T0VTKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRl
eHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
Q29weVRleFN1YkltYWdlM0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNjg2MCw5ICs2NjI4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFt
ZWJ1ZmZlclRleHR1cmUzRE9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
dGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyhjb250ZXh0LCB0YXJnZXQs
IGF0dGFjaG1lbnQsIHRleHRhcmdldFBhY2tlZCwKQEAgLTY5MDAsOCArNjY2OCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVGV4SW1hZ2UzRE9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleEltYWdlM0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCkBAIC02OTM5LDggKzY3MDcsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIFRleFN1YkltYWdlM0RPRVMoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhTdWJJbWFnZTNET0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCkBAIC02OTY2LDggKzY3MzQsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoR0x1aW50IHNhbXBsZXIsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxl
cklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwpAQCAtNjk5MSw4
ICs2NzU5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhH
THVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHVpbnQKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwg
cGFyYW1zKSk7CkBAIC03MDE1LDkgKzY3ODMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBh
cmFtZXRlcklpdk9FUyhHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2T0VTKGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTcwMzcsOSArNjgwNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0VGV4UGFyYW1ldGVySXVpdk9FUyhHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdWlu
dCAqcGFyCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFy
Z2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJ
dWl2T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTcwNjEsOSArNjgyOSw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcklpdk9FUyhHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGluCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBh
cmFtZXRlcklpdk9FUyhjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03MDg1LDkgKzY4NTMsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKEdMdWludCBzYW1wbGVyLCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMdQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNh
bXBsZXJQYXJhbWV0ZXJJdWl2T0VTKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJh
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTcxMDksOSArNjg3
Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySWl2T0VTKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzEzMyw5
ICs2OTAxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJdWl2T0VTKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50ICoKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NzE1Niw3ICs2OTI0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhHZW5mdk9FUyhHTGVudW0g
Y29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbmZ2T0VTKGNvbnRl
eHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTcxNzcsNyArNjk0NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4R2VuaXZPRVMoR0xlbnVt
IGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VGV4R2VuaXZPRVMoY29udGV4
dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NzE5OCw3ICs2OTY2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhHZW54dk9FUyhHTGVudW0g
Y29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbnh2T0VTKGNvbnRl
eHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTcyMTgsNyArNjk4Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4R2VuZk9FUyhHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5mT0VTKGNvbnRleHQsIGNvb3Jk
LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzI0MSw3ICs3
MDA5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhHZW5mdk9FUyhHTGVudW0gY29vcmQsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleEdlbmZ2T0VTKGNvbnRleHQsIGNvb3Jk
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcyNjEsNyAr
NzAyOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4R2VuaU9FUyhHTGVudW0gY29vcmQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuaU9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBh
cmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcyODMsNyArNzA1MSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4R2VuaXZPRVMoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuaXZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzMwNCw3ICs3MDcyLDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhHZW54T0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZp
eGVkIHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVRleEdlbnhPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MzI3LDcgKzcwOTUsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleEdlbnh2T0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVk
ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVGV4R2VueHZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzM2MCw4ICs3MTI4LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKQEAgLTczODQsOCArNzE1Miw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQmluZFZlcnRleEFycmF5T0VTKEdMdWludCBhcnJheSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJp
bmRWZXJ0ZXhBcnJheU9FUyhjb250ZXh0LCBhcnJheVBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC03NDA1LDggKzcxNzMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVZl
cnRleEFycmF5c09FUyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNr
ZWQgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVmVydGV4QXJyYXlJRCAqPihhcnJheXMpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVmVydGV4QXJyYXlJRCAq
YXJyYXlzUGFja2VkID0gRnJvbUdMPGNvbnN0IFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURl
bGV0ZVZlcnRleEFycmF5c09FUyhjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzQyNiw4ICs3MTk0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZW5WZXJ0ZXhBcnJheXNPRVMoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQgKj4oYXJyYXlz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdlblZlcnRleEFycmF5c09FUyhjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzQ0Niw4ICs3MjE0LDggQEAgR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzVmVydGV4QXJyYXlPRVMoR0x1aW50IGFycmF5KQogICAgIEdMYm9vbGVhbiByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQg
YXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPihh
cnJheSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlE
IGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
cnJheUlEPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVJc1ZlcnRleEFycmF5T0VTKGNvbnRleHQsIGFycmF5UGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc0ODUsOCArNzI1Myw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKEdMZW51bSB0YXJnZXQsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGNvbnRleHQs
IHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwKQEAgLTc1MTMsMTAgKzcyODEsMTAg
QEAgdm9pZCBHTF9BUElFTlRSWSBBY3RpdmVTaGFkZXJQcm9ncmFtQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBwaXBlbGkKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
UHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFBy
b2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQWN0aXZlU2hhZGVyUHJvZ3JhbShjb250
ZXh0LCBwaXBlbGluZVBhY2tlZCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTc1MzUsNyArNzMwMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
QWN0aXZlVGV4dHVyZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGV4dHVy
ZSkKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUoY29u
dGV4dCwgdGV4dHVyZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTc1NTQsOCArNzMyMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQWxwaGFGdW5jQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmdW5jLCBHTGZsb2F0IHJlCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIEFscGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxBbHBoYVRlc3RGdW5jPihmdW5jKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIEFscGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPEFscGhhVGVzdEZ1bmM+KGZ1bmMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQWxwaGFGdW5jKGNv
bnRleHQsIGZ1bmNQYWNrZWQsIHJlZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03
NTc1LDggKzczNDMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEFscGhhRnVuY3hDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGZ1bmMsIEdMZml4ZWQgcgogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QWxwaGFUZXN0RnVuYz4oZnVuYyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxBbHBoYVRlc3RGdW5jPihmdW5jKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFscGhhRnVuY3goY29u
dGV4dCwgZnVuY1BhY2tlZCwgcmVmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc1
OTYsMTAgKzczNjQsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBBdHRhY2hTaGFkZXJDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdMdWkKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUF0dGFjaFNoYWRlcihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC03NjE4LDkgKzczODYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJl
Z2luUXVlcnlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1
aW50CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAg
ICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVy
eVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJlZ2lu
UXVlcnkoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC03NjQwLDkgKzc0MDgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJlZ2luUXVl
cnlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aQog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBR
dWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVl
cnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVl
cnlUeXBlPih0YXJnZXQpOworICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCZWdpblF1ZXJ5
RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNzY2Miw5ICs3NDMwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCZWdpblRyYW5z
Zm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwcmkKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBwcmltaXRpdmVNb2RlUGFj
a2VkICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KHByaW1pdGl2ZU1vZGUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgUHJpbWl0aXZlTW9kZSBwcmltaXRpdmVNb2RlUGFja2VkID0gRnJvbUdMPFByaW1p
dGl2ZU1vZGU+KHByaW1pdGl2ZU1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVCZWdpblRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIHBy
aW1pdGl2ZU1vZGVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC03Njg5LDkgKzc0NTcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRBdHRyaWJMb2NhdGlv
bkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUJpbmRBdHRyaWJMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBp
bmRleCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc3
MTAsOSArNzQ3OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZlckNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRp
bmc+KHRhcmdldCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZEJ1ZmZl
cihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC03NzM2LDEwICs3NTA0LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1
ZmZlckJhc2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVCaW5kQnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGlu
ZGV4LCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC03NzY2LDkgKzc1MzQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJSYW5nZUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0
KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRC
dWZmZXJSYW5nZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGluZGV4LCBidWZmZXJQYWNrZWQsIG9m
ZnNldCwgc2l6ZSkpOwpAQCAtNzc5Niw5ICs3NTY0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5k
RnJhZ0RhdGFMb2NhdGlvbkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGNvbG9yLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNzgyMyw4ICs3NTkxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBC
aW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGNvbG9yTnVtYmVyLCBpbmRleCwgbmFtZSkpOwpAQCAtNzg0Niw5ICs3NjE0LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBCaW5kRnJhbWVidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHRhcmdldCwgR0wKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgRnJhbWVi
dWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVm
ZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1l
YnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQmluZEZyYW1lYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgZnJhbWVidWZmZXJQYWNrZWQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03ODY3LDkgKzc2MzUs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8
RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFt
ZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJ
RD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0LCBmcmFtZWJ1
ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc4
OTksOSArNzY2Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEltYWdlVGV4dHVyZUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRJbWFn
ZVRleHR1cmUoY29udGV4dCwgdW5pdCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVy
LCBhY2Nlc3MsIGZvcm1hdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03OTIxLDgg
Kzc2ODksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRQcm9ncmFtUGlwZWxpbmVDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBpcGVsaQogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5k
UHJvZ3JhbVBpcGVsaW5lKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTc5NDIsOSArNzcxMCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFJl
bmRlcmJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBH
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxS
ZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LCB0YXJn
ZXQsIHJlbmRlcmJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTc5NjUsOSArNzczMyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFJlbmRlcmJ1
ZmZlck9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAg
PSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBSZW5kZXJi
dWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRl
cmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUJpbmRSZW5kZXJidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0LCByZW5kZXJidWZmZXJQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03OTg2LDgg
Kzc3NTQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRTYW1wbGVyQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCB1bml0LCBHTHVpbnQgcwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kU2FtcGxlcihjb250ZXh0LCB1
bml0LCBzYW1wbGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgwMDcs
MTAgKzc3NzUsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVGV4dHVyZUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVCaW5kVGV4dHVyZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHRleHR1
cmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MDI5
LDggKzc3OTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFRyYW5z
Zm9ybUZlZWRiYWNrKGNvbnRleHQsIHRhcmdldCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtODA0OSw4ICs3ODE3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVmVy
dGV4QXJyYXlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGFycmF5KQogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
QmluZFZlcnRleEFycmF5KGNvbnRleHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTgwNjksOCArNzgzNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRl
eEFycmF5T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBhcnJheSkKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUJpbmRWZXJ0ZXhBcnJheU9FUyhjb250ZXh0LCBhcnJheVBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC04MDk2LDggKzc4NjQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRW
ZXJ0ZXhCdWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRW
ZXJ0ZXhCdWZmZXIoY29udGV4dCwgYmluZGluZ2luZGV4LCBidWZmZXJQYWNrZWQsIG9mZnNldCwg
c3RyaWRlKSk7CkBAIC04MTE4LDcgKzc4ODYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kQmFy
cmllckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQmxlbmRCYXJyaWVyKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC04MTQwLDcgKzc5MDgsNyBAQCBCbGVuZENvbG9yQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZs
b2F0IGJsdQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUJsZW5kQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtODE2MCw3ICs3OTI4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBC
bGVuZEVxdWF0aW9uQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlKQog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb250ZXh0
LCBtb2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODE4Miw4
ICs3OTUwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShjb250ZXh0LCBtb2RlUkdCLCBtb2RlQWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC04MjA3LDggKzc5NzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoY29udGV4dCwgYnVmLCBtb2Rl
UkdCLCBtb2RlQWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC04MjE4LDYgKzc5ODYsNTYgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJh
dGVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgfQogfQogCit2b2lkIEdMX0FQ
SUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7CisgICAg
RVZFTlQoImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gbW9kZVJHQiA9ICVzLCBHTGVudW0gbW9kZUFs
cGhhID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgYnVmLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIG1vZGVSR0IpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZEVxdWF0aW9uTW9kZUVYVCwgbW9kZUFscGhh
KSk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVChjb250ZXh0
LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSkpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoYnVm
LCBtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
QmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1ZiwgbW9k
ZVJHQiwgbW9kZUFscGhhKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVh
dGlvblNlcGFyYXRlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGVpT0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVm
ID0gJXUsIEdMZW51bSBtb2RlUkdCID0gJXMsIEdMZW51bSBtb2RlQWxwaGEgPSAlcyIsIENJRChj
b250ZXh0KSwKKyAgICAgICAgICBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVu
ZEVxdWF0aW9uTW9kZUVYVCwgbW9kZVJHQiksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlQWxwaGEpKTsKKworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKGNvbnRleHQsIGJ1ZiwgbW9kZVJHQiwg
bW9kZUFscGhhKSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlaShidWYsIG1vZGVSR0IsIG1vZGVB
bHBoYSk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEVxdWF0aW9uU2Vw
YXJhdGVpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEp
OworICAgIH0KK30KKwogdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uaUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKQEAgLTgyMjcs
NyArODA0NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvbmlDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoY29udGV4dCwgYnVm
LCBtb2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgyMzgsNiArODA1Niw0NiBA
QCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMdWludCBidWYsIEdMZW51bQogICAgIH0KIH0KIAordm9pZCBHTF9BUElFTlRSWSBC
bGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVm
LCBHTGVudW0gbW9kZSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xCbGVuZEVxdWF0aW9uaUVYVCIsICJjb250
ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xlbnVtIG1vZGUgPSAlcyIsIENJRChjb250ZXh0
KSwKKyAgICAgICAgICBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZEVxdWF0
aW9uTW9kZUVYVCwgbW9kZSkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEVxdWF0aW9u
aUVYVChjb250ZXh0LCBidWYsIG1vZGUpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEVxdWF0aW9uaShidWYsIG1vZGUpOwor
ICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQmxlbmRFcXVhdGlvbmlFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBidWYsIG1vZGUpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRS
WSBCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
YnVmLCBHTGVudW0gbW9kZSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xCbGVuZEVxdWF0aW9uaU9FUyIsICJj
b250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xlbnVtIG1vZGUgPSAlcyIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZEVx
dWF0aW9uTW9kZUVYVCwgbW9kZSkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEVxdWF0
aW9uaU9FUyhjb250ZXh0LCBidWYsIG1vZGUpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEVxdWF0aW9uaShidWYsIG1vZGUp
OworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQmxlbmRFcXVhdGlvbmlPRVMsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBidWYsIG1vZGUpOworICAgIH0KK30KKwogdm9pZCBHTF9BUElF
TlRSWSBCbGVuZEZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHNmYWN0
b3IsIEdMZW51bSBkZmFjdG9yKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwpAQCAtODI0OCw3ICs4MTA2LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBCbGVuZEZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHNmYWN0
b3IsIEdMZW51bQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUJsZW5kRnVuYyhjb250ZXh0LCBzZmFjdG9yLCBkZmFjdG9yKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTgyNzcsNyArODEzNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRG
dW5jU2VwYXJhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZShjb250
ZXh0LCBzZmFjdG9yUkdCLCBkZmFjdG9yUkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZmFjdG9yQWxwaGEsIGRm
YWN0b3JBbHBoYSkpOwpAQCAtODMwOSw3ICs4MTY3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVu
ZEZ1bmNTZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5k
RnVuY1NlcGFyYXRlaShjb250ZXh0LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0
QWxwaGEpKTsKQEAgLTgzMjIsMTcgKzgxODAsODEgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1
bmNTZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQordm9pZCBHTF9BUElFTlRSWSBCbGVu
ZEZ1bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c3JjUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRzdFJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xCbGVuZEZ1bmNpIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gc3Jj
ID0gJXMsIEdMZW51bSBkc3QgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwgc3JjKSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdCkpOwotCi0g
ICAgaWYgKGNvbnRleHQpCi0gICAgeworICAgIEVWRU5UKCJnbEJsZW5kRnVuY1NlcGFyYXRlaUVY
VCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gc3Jj
UkdCID0gJXMsIEdMZW51bSBkc3RSR0IgPSAlcywgR0xlbnVtIHNyY0FscGhhICIKKyAgICAgICAg
ICAiPSAlcywgR0xlbnVtIGRzdEFscGhhID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
YnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIHNyY1JHQiks
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBk
c3RSR0IpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0Zh
Y3Rvciwgc3JjQWxwaGEpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpC
bGVuZGluZ0ZhY3RvciwgZHN0QWxwaGEpKTsKKworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
VmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQoY29udGV4dCwgYnVmLCBzcmNSR0IsIGRzdFJH
Qiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGVpKGJ1Ziwgc3JjUkdC
LCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBidWYs
IHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICBkc3RBbHBo
YSk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlaU9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHNyY0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGRzdEFscGhhKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbEJsZW5kRnVuY1NlcGFyYXRl
aU9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0g
c3JjUkdCID0gJXMsIEdMZW51bSBkc3RSR0IgPSAlcywgR0xlbnVtIHNyY0FscGhhICIKKyAgICAg
ICAgICAiPSAlcywgR0xlbnVtIGRzdEFscGhhID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgYnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIHNyY1JH
QiksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9y
LCBkc3RSR0IpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGlu
Z0ZhY3Rvciwgc3JjQWxwaGEpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpCbGVuZGluZ0ZhY3RvciwgZHN0QWxwaGEpKTsKKworICAgIGlmIChjb250ZXh0KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMoY29udGV4dCwgYnVmLCBzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+YmxlbmRGdW5jU2VwYXJhdGVpKGJ1Ziwgc3Jj
UkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgICAgIH0KKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBi
dWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICBkc3RB
bHBoYSk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY2lDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCkK
K3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKKyAgICBFVkVOVCgiZ2xCbGVuZEZ1bmNpIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9
ICV1LCBHTGVudW0gc3JjID0gJXMsIEdMZW51bSBkc3QgPSAlcyIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwg
c3JjKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0
b3IsIGRzdCkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQmxlbmRGdW5jaShjb250ZXh0LCBidWYsIHNyYywgZHN0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTgzNDMsNiArODI2NSw0OCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5k
RnVuY2lDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNy
YwogICAgIH0KIH0KIAordm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCit7
CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
CisgICAgRVZFTlQoImdsQmxlbmRGdW5jaUVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBidWYg
PSAldSwgR0xlbnVtIHNyYyA9ICVzLCBHTGVudW0gZHN0ID0gJXMiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgYnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3Is
IHNyYyksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFj
dG9yLCBkc3QpKTsKKworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5jaUVYVChjb250ZXh0
LCBidWYsIHNyYywgZHN0KSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udGV4dC0+YmxlbmRGdW5jaShidWYsIHNyYywgZHN0KTsKKyAgICAgICAg
fQorICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRnVuY2lFWFQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBidWYsIHNyYywgZHN0KTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgQmxlbmRG
dW5jaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0g
c3JjLCBHTGVudW0gZHN0KQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbEJsZW5kRnVuY2lPRVMiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmMgPSAlcywgR0xlbnVtIGRzdCA9ICVz
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGJ1ZiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkJsZW5kaW5nRmFjdG9yLCBzcmMpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgZHN0KSk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJs
ZW5kRnVuY2lPRVMoY29udGV4dCwgYnVmLCBzcmMsIGRzdCkpOworICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmJsZW5kRnVuY2koYnVmLCBz
cmMsIGRzdCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEZ1bmNpT0VT
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBzcmMsIGRzdCk7CisgICAgfQorfQorCiB2b2lk
IEdMX0FQSUVOVFJZIEJsaXRGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Jj
WDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
cmNZMCwKQEAgLTgzNjcsOCArODMzMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxpdEZyYW1lYnVm
ZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCbGl0
RnJhbWVidWZmZXIoY29udGV4dCwgc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFkw
LCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC04NDA1LDggKzgzNjksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsaXRGcmFtZWJ1ZmZlckFO
R0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCbGl0
RnJhbWVidWZmZXJBTkdMRShjb250ZXh0LCBzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0
WDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtODQzNiwxMCArODQwMCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJ1ZmZl
ckRhdGFDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJVc2FnZT4odXNhZ2Up
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgQnVmZmVy
VXNhZ2UgdXNhZ2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
QnVmZmVyVXNhZ2U+KHVzYWdlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlQnVmZmVyRGF0YShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNpemUs
IGRhdGEsIHVzYWdlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtODQ2NSw5ICs4NDI5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdG9yYWdlTWVt
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5
UGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
VmFsaWRhdGVCdWZmZXJTdG9yYWdlTWVtRVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2l6ZSwg
bWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKQEAgLTg0OTcsOSArODQ2MSw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQnVmZmVyU3ViRGF0YUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBvZmZzZXQsIHNpemUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC04NTE5LDcgKzg0ODMsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoY29udGV4dCwgdGFyZ2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTg1NDksNyArODUxMyw3IEBAIEdMZW51bSBHTF9BUElFTlRSWSBDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1c09FUyhjb250ZXh0LCB0YXJnZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
ODU3OCw3ICs4NTQyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGJpdGZpZWxkIG1hc2spCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVDbGVhcihjb250ZXh0LCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtODYwMyw4ICs4NTY3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVh
ckJ1ZmZlcmZpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVDbGVhckJ1ZmZlcmZpKGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5j
aWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NjI4LDggKzg1
OTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVyZnZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVyZnYoY29udGV4dCwgYnVm
ZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTg2NTMsOCArODYxNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJCdWZmZXJp
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJC
dWZmZXJpdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODY3OCw4ICs4NjQyLDggQEAgdm9pZCBHTF9B
UElFTlRSWSBDbGVhckJ1ZmZlcnVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlQ2xlYXJCdWZmZXJ1aXYoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVy
LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg3MDEs
NyArODY2NSw3IEBAIENsZWFyQ29sb3JDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xm
bG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xlYXJDb2xvcihjb250ZXh0LCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04NzI0LDcg
Kzg2ODgsNyBAQCBDbGVhckNvbG9yeENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZp
eGVkIHJlZCwgR0xmaXhlZCBncmVlbiwgR0xmaXhlZCBibAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyQ29sb3J4KGNvbnRleHQsIHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg3NDMsNyAr
ODcwNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJEZXB0aGZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xmbG9hdCBkKQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQ2xlYXJEZXB0aGYoY29udGV4dCwgZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTg3NjEsNyArODcyNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJEZXB0
aHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCBkZXB0aCkKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyRGVwdGh4KGNvbnRleHQsIGRlcHRoKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODc3OSw3ICs4NzQzLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhclN0ZW5jaWxDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xpbnQgcykKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFy
U3RlbmNpbChjb250ZXh0LCBzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtODc5OCw3ICs4NzYyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGllbnRBY3RpdmVUZXh0
dXJlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0ZXh0dXIKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGllbnRBY3RpdmVUZXh0
dXJlKGNvbnRleHQsIHRleHR1cmUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODgy
Niw3ICs4NzkwLDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIENsaWVudFdhaXRTeW5jQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ2xpZW50V2FpdFN5bmMoY29udGV4dCwgc3luYywgZmxhZ3MsIHRpbWVv
dXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODg1NSw3ICs4ODE5LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBDbGlwUGxhbmVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZW51bSBwLCBjb25zdCBHTGZsb2EKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUNsaXBQbGFuZWYoY29udGV4dCwgcCwgZXFuKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtODg3NSw3ICs4ODM5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGlwUGxh
bmV4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbGFuZSwgY29uc3QgR0wK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGlwUGxh
bmV4KGNvbnRleHQsIHBsYW5lLCBlcXVhdGlvbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC04ODk4LDcgKzg4NjIsNyBAQCBDb2xvcjRmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0Zihjb250ZXh0LCBy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04
OTIxLDcgKzg4ODUsNyBAQCBDb2xvcjR1YkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNHViKGNvbnRleHQsIHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5NDQs
NyArODkwOCw3IEBAIENvbG9yNHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhl
ZCByZWQsIEdMZml4ZWQgZ3JlZW4sIEdMZml4ZWQgYmx1ZSwKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjR4KGNvbnRleHQsIHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5NzEsNyArODkz
NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q29sb3JNYXNrKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTg5OTksNyArODk2Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29s
b3JNYXNraUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yTWFza2koY29udGV4dCwgaW5kZXgs
IHIsIGcsIGIsIGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTAxMCw2ICs4OTc0
LDYyIEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNraUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAogICAgIH0KIH0KIAordm9pZCBHTF9BUElFTlRSWSBDb2xvck1hc2tpRVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBhKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbENvbG9yTWFza2lFWFQi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGJvb2xlYW4g
ciA9ICVzLCBHTGJvb2xlYW4gZyA9ICVzLCBHTGJvb2xlYW4gYiA9ICVzLCAiCisgICAgICAgICAg
IkdMYm9vbGVhbiBhID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMYm9v
bGVhblRvU3RyaW5nKHIpLCBHTGJvb2xlYW5Ub1N0cmluZyhnKSwgR0xib29sZWFuVG9TdHJpbmco
YiksCisgICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoYSkpOworCisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVDb2xvck1hc2tpRVhUKGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBhKSk7CisgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+Y29sb3JN
YXNraShpbmRleCwgciwgZywgYiwgYSk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShDb2xvck1hc2tpRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEp
OworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBDb2xvck1hc2tpT0VTQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBhKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbENvbG9yTWFza2lPRVMiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGJvb2xlYW4gciA9ICVz
LCBHTGJvb2xlYW4gZyA9ICVzLCBHTGJvb2xlYW4gYiA9ICVzLCAiCisgICAgICAgICAgIkdMYm9v
bGVhbiBhID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMYm9vbGVhblRv
U3RyaW5nKHIpLCBHTGJvb2xlYW5Ub1N0cmluZyhnKSwgR0xib29sZWFuVG9TdHJpbmcoYiksCisg
ICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoYSkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
b2xvck1hc2tpT0VTKGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBhKSk7CisgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+Y29sb3JNYXNraShp
bmRleCwgciwgZywgYiwgYSk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShDb2xv
ck1hc2tpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEpOworICAg
IH0KK30KKwogdm9pZCBHTF9BUElFTlRSWSBDb2xvclBvaW50ZXJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKQEAgLTkwMjYsOSArOTA0Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JQb2lu
dGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUg
dHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJp
YlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVDb2xvclBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRl
LCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTA0
Niw4ICs5MDY2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21waWxlU2hhZGVyQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBzaGFkZXIpCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb21waWxlU2hhZGVy
KGNvbnRleHQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05
MDgwLDggKzkxMDAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTJEQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3Nl
ZFRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLApAQCAtOTExOSw4ICs5MTM5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2Vk
VGV4SW1hZ2UzRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTkxNTgsOCArOTE3OCw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29tcHJlc3NlZFRleEltYWdlM0RPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJn
ZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyhjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC05MTk3LDggKzkyMTcs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsCkBAIC05MjM4LDkgKzkyNTgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhT
dWJJbWFnZTNEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBsZXZlbCwgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpKTsKQEAgLTkyNzksOSArOTI5OSw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
YXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRE9FUygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgaW1hZ2VTaXplLCBkYXRhKSk7CkBAIC05MzE0LDEwICs5MzM0LDEwIEBAIHZvaWQgR0xf
QVBJRU5UUlkgQ29weUJ1ZmZlclN1YkRhdGFDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmluZGluZyByZWFkVGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHJlYWRUYXJnZXQpOwot
ICAgICAgICBCdWZmZXJCaW5kaW5nIHdyaXRlVGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVyQmluZGluZz4od3JpdGVUYXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGlu
ZyByZWFkVGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVy
QmluZGluZz4ocmVhZFRhcmdldCk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgd3JpdGVUYXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHdyaXRl
VGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQ29weUJ1ZmZlclN1YkRhdGEoY29udGV4dCwgcmVhZFRhcmdldFBhY2tlZCwgd3JpdGVU
YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwgc2l6ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC05MzQ5LDE0NjA2ICs5MzY5LDE0MTQ2IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29weUltYWdlU3ViRGF0YUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwogICAg
IEVWRU5UKCJnbENvcHlJbWFnZVN1YkRhdGEiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBzcmNOYW1lID0gJXUsIEdMZW51bSBzcmNUYXJnZXQgPSAlcywgR0xpbnQgc3JjTGV2ZWwg
PSAlZCwgR0xpbnQgIgotICAgICAgICAgICJzcmNYID0gJWQsIEdMaW50IHNyY1kgPSAlZCwgR0xp
bnQgc3JjWiA9ICVkLCBHTHVpbnQgZHN0TmFtZSA9ICV1LCBHTGVudW0gZHN0VGFyZ2V0ID0gIgot
ICAgICAgICAgICIlcywgR0xpbnQgZHN0TGV2ZWwgPSAlZCwgR0xpbnQgZHN0WCA9ICVkLCBHTGlu
dCBkc3RZID0gJWQsIEdMaW50IGRzdFogPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgInNyY1dp
ZHRoID0gJWQsIEdMc2l6ZWkgc3JjSGVpZ2h0ID0gJWQsIEdMc2l6ZWkgc3JjRGVwdGggPSAlZCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzcmNOYW1lLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6Q29weUJ1ZmZlclN1YkRhdGFUYXJnZXQsIHNyY1RhcmdldCksCi0gICAgICAgICAgc3Jj
TGV2ZWwsIHNyY1gsIHNyY1ksIHNyY1osIGRzdE5hbWUsCi0gICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkNvcHlCdWZmZXJTdWJEYXRhVGFyZ2V0LCBkc3RUYXJnZXQpLCBkc3RM
ZXZlbCwgZHN0WCwgZHN0WSwKLSAgICAgICAgICBkc3RaLCBzcmNXaWR0aCwgc3JjSGVpZ2h0LCBz
cmNEZXB0aCk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVDb3B5SW1hZ2VTdWJEYXRhKGNvbnRleHQsIHNyY05hbWUsIHNyY1Rhcmdl
dCwgc3JjTGV2ZWwsIHNyY1gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNyY1ksIHNyY1osIGRzdE5hbWUsIGRzdFRhcmdldCwgZHN0TGV2ZWws
IGRzdFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRzdFksIGRzdFosIHNyY1dpZHRoLCBzcmNIZWlnaHQsIHNyY0RlcHRoKSk7Ci0gICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Y29weUlt
YWdlU3ViRGF0YShzcmNOYW1lLCBzcmNUYXJnZXQsIHNyY0xldmVsLCBzcmNYLCBzcmNZLCBzcmNa
LCBkc3ROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RUYXJn
ZXQsIGRzdExldmVsLCBkc3RYLCBkc3RZLCBkc3RaLCBzcmNXaWR0aCwgc3JjSGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNEZXB0aCk7Ci0gICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3B5SW1hZ2VTdWJEYXRhLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgc3JjTmFtZSwgc3JjVGFyZ2V0LCBzcmNMZXZlbCwgc3JjWCwKLSAgICAgICAgICAgICAg
ICAgICAgICBzcmNZLCBzcmNaLCBkc3ROYW1lLCBkc3RUYXJnZXQsIGRzdExldmVsLCBkc3RYLCBk
c3RZLCBkc3RaLCBzcmNXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICBzcmNIZWlnaHQsIHNy
Y0RlcHRoKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgQ29weVRleEltYWdlMkRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcikKLXsKLSAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xDb3B5VGV4SW1hZ2UyRCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywg
R0xpbnQgeCAiCi0gICAgICAgICAgIj0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9
ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGludCBib3JkZXIgPSAlZCIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGFyZ2V0KSwgbGV2ZWwsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Oklu
dGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRl
cik7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleEltYWdlMkQoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvcmRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3B5
VGV4SW1hZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB4LAotICAgICAgICAgICAgICAgICAgICAgIHksIHdpZHRoLCBoZWlnaHQs
IGJvcmRlcik7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTJE
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xDb3B5VGV4U3ViSW1hZ2UyRCIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGlu
dCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCi0gICAgICAgICAgIiVkLCBHTGludCB4
ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9
ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAg
ICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKHRh
cmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQp
OwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQ29weVRleFN1YkltYWdlMkQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAotICAgICAg
ICAgICAgICAgICAgICAgIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLX0K
LQotdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4U3ViSW1hZ2UzRENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCi17Ci0g
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsQ29weVRleFN1YkltYWdlM0QiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVk
LCBHTGludCB5b2Zmc2V0ID0gIgotICAgICAgICAgICIlZCwgR0xpbnQgem9mZnNldCA9ICVkLCBH
TGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhl
aWdodCAiCi0gICAgICAgICAgIj0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LAotICAgICAgICAgIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwot
Ci0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3
aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0UGFja2VkLCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwotICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoQ29weVRleFN1YkltYWdlM0QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVsLCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpv
ZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRS
WSBDb3B5VGV4U3ViSW1hZ2UzRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ29weVRleFN1YkltYWdlM0RPRVMiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xp
bnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gIgotICAgICAgICAgICIlZCwgR0xpbnQg
em9mZnNldCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9
ICVkLCBHTHNpemVpIGhlaWdodCAiCi0gICAgICAgICAgIj0gJWQiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0
KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCi0gICAgICAgICAgem9mZnNldCwgeCwgeSwgd2lk
dGgsIGhlaWdodCk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleFN1
YkltYWdlM0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZz
ZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0
YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3B5VGV4U3ViSW1hZ2UzRE9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAg
fQotfQotCi12b2lkIEdMX0FQSUVOVFJZIENyZWF0ZU1lbW9yeU9iamVjdHNFWFRDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICptZW1vcnlPYmplY3RzKQotewotICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbENyZWF0ZU1lbW9yeU9iamVjdHNFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKm1lbW9yeU9iamVjdHMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBuLCAodWludHB0cl90KW1lbW9yeU9iamVjdHMp
OwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElEICptZW1vcnlP
YmplY3RzUGFja2VkICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRCAqPihtZW1vcnlP
YmplY3RzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDcmVhdGVNZW1v
cnlPYmplY3RzRVhUKGNvbnRleHQsIG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpKTsKLSAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jcmVhdGVN
ZW1vcnlPYmplY3RzKG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOwotICAgIH0KLX0KLQotR0x1aW50IEdMX0FQSUVO
VFJZIENyZWF0ZVByb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKLXsKLSAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xDcmVhdGVQcm9ncmFtIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7Ci0K
LSAgICBHTHVpbnQgcmV0dXJuVmFsdWU7Ci0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVQcm9ncmFtKGNvbnRleHQpKTsKLSAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IGNvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVu
dHJ5UG9pbnQ6OkNyZWF0ZVByb2dyYW0sIEdMdWludD4oKTsKLSAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKENyZWF0ZVByb2dyYW0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5W
YWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVByb2dyYW0sIEdMdWludD4oKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwotfQotCi1HTHVpbnQgR0xfQVBJRU5UUlkg
Q3JlYXRlU2hhZGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0eXBlKQot
ewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbENyZWF0ZVNoYWRlciIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0eXBl
ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlNoYWRlclR5cGUsIHR5cGUpKTsKLQotICAgIEdMdWludCByZXR1cm5WYWx1ZTsKLSAgICBp
ZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQ3JlYXRlU2hhZGVyKGNvbnRleHQsIHR5cGVQYWNrZWQpKTsK
LSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IGNvbnRleHQtPmNyZWF0ZVNoYWRlcih0eXBlUGFja2VkKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVNoYWRlciwgR0x1aW50PigpOwotICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQ3JlYXRlU2hhZGVyLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdHlwZVBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpD
cmVhdGVTaGFkZXIsIEdMdWludD4oKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwot
fQotCi1HTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRlU2hhZGVyUHJvZ3JhbXZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnN0
cmluZ3MpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXYiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29u
c3QgR0xjaGFyICpjb25zdCpzdHJpbmdzID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
U2hhZGVyVHlwZSwgdHlwZSksIGNvdW50LCAodWludHB0cl90KXN0cmluZ3MpOwotCi0gICAgR0x1
aW50IHJldHVyblZhbHVlOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyVHlwZT4o
dHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlU2hhZGVy
UHJvZ3JhbXYoY29udGV4dCwgdHlwZVBhY2tlZCwgY291bnQsIHN0cmluZ3MpKTsKLSAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNv
bnRleHQtPmNyZWF0ZVNoYWRlclByb2dyYW12KHR5cGVQYWNrZWQsIGNvdW50LCBzdHJpbmdzKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVNoYWRlclByb2dy
YW12LCBHTHVpbnQ+KCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDcmVhdGVT
aGFkZXJQcm9ncmFtdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHR5cGVQYWNrZWQsIGNvdW50LCBz
dHJpbmdzLAotICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAg
ZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6Q3JlYXRlU2hhZGVyUHJvZ3JhbXYsIEdMdWludD4oKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHJldHVyblZhbHVlOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIEN1bGxGYWNlQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlKQotewotICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEN1
bGxGYWNlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcyIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q3VsbEZhY2VNb2RlLCBtb2Rl
KSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQ3VsbEZhY2VNb2RlIG1vZGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEN1bGxGYWNlTW9kZT4obW9kZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDdWxsRmFjZShjb250ZXh0LCBtb2Rl
UGFja2VkKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Y3VsbEZhY2UobW9kZVBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShDdWxsRmFjZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQpOwot
ICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRSWSBDdXJyZW50UGFsZXR0ZU1hdHJpeE9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWF0cml4cGFsZXR0ZWluZGV4KQotewot
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbEN1cnJlbnRQYWxldHRlTWF0cml4T0VTIiwgImNvbnRleHQgPSAlZCwgR0x1
aW50IG1hdHJpeHBhbGV0dGVpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIG1h
dHJpeHBhbGV0dGVpbmRleCk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyhjb250ZXh0LCBt
YXRyaXhwYWxldHRlaW5kZXgpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5jdXJyZW50UGFsZXR0ZU1hdHJpeChtYXRyaXhwYWxldHRl
aW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQ3VycmVudFBhbGV0dGVN
YXRyaXhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtYXRyaXhwYWxldHRlaW5kZXgpOwotICAg
IH0KLX0KLQotdm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDYWxsYmFja0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTERFQlVHUFJPQyBjYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdXNlclBhcmFtKQotewot
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERlYnVnTWVzc2FnZUNhbGxiYWNrIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTERFQlVHUFJPQyBjYWxsYmFjayA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIs
IGNvbnN0IHZvaWQgKnVzZXJQYXJhbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksICh1aW50cHRyX3QpY2FsbGJhY2ssICh1aW50cHRyX3QpdXNlclBhcmFtKTsK
LQotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZURlYnVnTWVzc2FnZUNhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pKTsK
LSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5kZWJ1Z01lc3NhZ2VDYWxsYmFjayhjYWxsYmFjaywgdXNlclBhcmFtKTsKLSAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNhbGxiYWNrLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
REVCVUdQUk9DS0hSIGNhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pCi17Ci0gICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
REVCVUdQUk9DS0hSIGNhbGxiYWNrID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgY29u
c3Qgdm9pZCAqdXNlclBhcmFtID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgKHVpbnRwdHJfdCljYWxsYmFjaywgKHVpbnRwdHJfdCl1c2VyUGFyYW0pOwotCi0g
ICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
RGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpOwot
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmRlYnVnTWVzc2FnZUNhbGxiYWNrKGNhbGxiYWNrLCB1c2VyUGFyYW0pOwotICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBjYWxsYmFjaywgdXNlclBhcmFtKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJ
RU5UUlkgRGVidWdNZXNzYWdlQ29udHJvbENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
b3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpCi17
Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsRGVidWdNZXNzYWdlQ29udHJvbCIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBHTGVudW0gc2V2ZXJp
dHkgPSAlcywgR0xzaXplaSBjb3VudCAiCi0gICAgICAgICAgIj0gJWQsIGNvbnN0IEdMdWludCAq
aWRzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMYm9vbGVhbiBlbmFibGVkID0gJXMiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNl
LCBzb3VyY2UpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5
cGUsIHR5cGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1Nl
dmVyaXR5LCBzZXZlcml0eSksIGNvdW50LCAodWludHB0cl90KWlkcywKLSAgICAgICAgICBHTGJv
b2xlYW5Ub1N0cmluZyhlbmFibGVkKSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZURl
YnVnTWVzc2FnZUNvbnRyb2woY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291bnQs
IGlkcywgZW5hYmxlZCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUNvbnRyb2woc291cmNlLCB0eXBlLCBzZXZl
cml0eSwgY291bnQsIGlkcywgZW5hYmxlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEZWJ1Z01lc3NhZ2VDb250cm9sLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0
eXBlLCBzZXZlcml0eSwgY291bnQsIGlkcywKLSAgICAgICAgICAgICAgICAgICAgICBlbmFibGVk
KTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ29udHJvbEtIUkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVy
aXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpCi17Ci0gICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsRGVidWdNZXNzYWdlQ29udHJvbEtIUiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBHTGVudW0gc2V2ZXJpdHkgPSAl
cywgR0xzaXplaSBjb3VudCAiCi0gICAgICAgICAgIj0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0g
MHglMDE2IiBQUkl4UFRSICIsIEdMYm9vbGVhbiBlbmFibGVkID0gJXMiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3Vy
Y2UpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5
cGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5
LCBzZXZlcml0eSksIGNvdW50LCAodWludHB0cl90KWlkcywKLSAgICAgICAgICBHTGJvb2xlYW5U
b1N0cmluZyhlbmFibGVkKSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVz
c2FnZUNvbnRyb2xLSFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291bnQsIGlk
cywgZW5hYmxlZCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUNvbnRyb2woc291cmNlLCB0eXBlLCBzZXZlcml0
eSwgY291bnQsIGlkcywgZW5hYmxlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShEZWJ1Z01lc3NhZ2VDb250cm9sS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0
eXBlLCBzZXZlcml0eSwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgaWRzLCBlbmFibGVk
KTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlSW5zZXJ0Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Y2hhciAqYnVmKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlYnVnTWVzc2FnZUluc2VydCIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBH
THVpbnQgaWQgPSAldSwgR0xlbnVtIHNldmVyaXR5ID0gIgotICAgICAgICAgICIlcywgR0xzaXpl
aSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICpidWYgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdT
b3VyY2UsIHNvdXJjZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnVHlwZSwgdHlwZSksIGlkLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWJ1Z1NldmVyaXR5LCBzZXZlcml0eSksIGxlbmd0aCwgKHVpbnRwdHJfdClidWYpOwotCi0g
ICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQoY29udGV4dCwgc291
cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKSk7Ci0gICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVidWdNZXNzYWdlSW5z
ZXJ0KHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCBsZW5ndGgsIGJ1Zik7Ci0gICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VJbnNlcnQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgIGJ1Zik7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2Fn
ZUluc2VydEtIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmJ1ZikKLXsKLSAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBzb3VyY2UgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0x1aW50IGlkID0gJXUsIEdMZW51
bSBzZXZlcml0eSA9ICIKLSAgICAgICAgICAiJXMsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0
IEdMY2hhciAqYnVmID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5cGUpLCBpZCwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdTZXZlcml0eSwgc2V2
ZXJpdHkpLCBsZW5ndGgsICh1aW50cHRyX3QpYnVmKTsKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgc3JjTmFtZSA9ICV1LCBHTGVudW0gc3JjVGFyZ2V0ID0gJXMsIEdMaW50IHNyY0xl
dmVsID0gJWQsIEdMaW50ICIKKyAgICAgICAgICAic3JjWCA9ICVkLCBHTGludCBzcmNZID0gJWQs
IEdMaW50IHNyY1ogPSAlZCwgR0x1aW50IGRzdE5hbWUgPSAldSwgR0xlbnVtIGRzdFRhcmdldCA9
ICIKKyAgICAgICAgICAiJXMsIEdMaW50IGRzdExldmVsID0gJWQsIEdMaW50IGRzdFggPSAlZCwg
R0xpbnQgZHN0WSA9ICVkLCBHTGludCBkc3RaID0gJWQsIEdMc2l6ZWkgIgorICAgICAgICAgICJz
cmNXaWR0aCA9ICVkLCBHTHNpemVpIHNyY0hlaWdodCA9ICVkLCBHTHNpemVpIHNyY0RlcHRoID0g
JWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc3JjTmFtZSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkNvcHlCdWZmZXJTdWJEYXRhVGFyZ2V0LCBzcmNUYXJnZXQpLAorICAgICAgICAg
IHNyY0xldmVsLCBzcmNYLCBzcmNZLCBzcmNaLCBkc3ROYW1lLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpDb3B5QnVmZmVyU3ViRGF0YVRhcmdldCwgZHN0VGFyZ2V0KSwg
ZHN0TGV2ZWwsIGRzdFgsIGRzdFksCisgICAgICAgICAgZHN0Wiwgc3JjV2lkdGgsIHNyY0hlaWdo
dCwgc3JjRGVwdGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJ
bnNlcnRLSFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVm
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUNvcHlJbWFnZVN1YkRhdGEoY29udGV4dCwgc3JjTmFtZSwgc3JjVGFyZ2V0LCBzcmNMZXZlbCwg
c3JjWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3JjWSwgc3JjWiwgZHN0TmFtZSwgZHN0VGFyZ2V0LCBkc3RMZXZlbCwgZHN0WCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WSwgZHN0
Wiwgc3JjV2lkdGgsIHNyY0hlaWdodCwgc3JjRGVwdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VJbnNlcnQo
c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmNvcHlJbWFnZVN1YkRhdGEoc3JjTmFtZSwgc3JjVGFyZ2V0LCBzcmNMZXZlbCwgc3Jj
WCwgc3JjWSwgc3JjWiwgZHN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZHN0VGFyZ2V0LCBkc3RMZXZlbCwgZHN0WCwgZHN0WSwgZHN0Wiwgc3JjV2lkdGgsIHNy
Y0hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjRGVwdGgp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVidWdNZXNzYWdlSW5zZXJ0S0hS
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksCi0gICAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBidWYpOworICAgICAgICBBTkdMRV9DQVBUVVJFKENv
cHlJbWFnZVN1YkRhdGEsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzcmNOYW1lLCBzcmNUYXJnZXQs
IHNyY0xldmVsLCBzcmNYLAorICAgICAgICAgICAgICAgICAgICAgIHNyY1ksIHNyY1osIGRzdE5h
bWUsIGRzdFRhcmdldCwgZHN0TGV2ZWwsIGRzdFgsIGRzdFksIGRzdFosIHNyY1dpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgIHNyY0hlaWdodCwgc3JjRGVwdGgpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBEZWxldGVCdWZmZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBDb3B5
VGV4SW1hZ2UyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVy
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbERlbGV0ZUJ1ZmZlcnMiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBuLCAodWludHB0cl90KWJ1ZmZlcnMpOwor
ICAgIEVWRU5UKCJnbENvcHlUZXhJbWFnZTJEIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9ICVzLCBHTGludCB4ICIKKyAgICAgICAgICAiPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
VGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25zdCBCdWZmZXJJ
RCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQg
Kj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRGVsZXRlQnVmZmVycyhjb250ZXh0LCBuLCBidWZmZXJzUGFja2VkKSk7CisgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXhJbWFnZTJEKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZGVsZXRlQnVmZmVycyhuLCBidWZmZXJzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmNvcHlUZXhJbWFnZTJEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9y
ZGVyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZUJ1ZmZlcnMsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBuLCBidWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShDb3B5VGV4SW1hZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LAorICAgICAgICAgICAgICAgICAgICAgIHksIHdpZHRo
LCBoZWlnaHQsIGJvcmRlcik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUZl
bmNlc05WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICpmZW5jZXMpCit2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTJEQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVGZW5jZXNOViIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqZmVuY2VzID0gMHglMDE2IiBQUkl4UFRS
ICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClmZW5jZXMpOworICAg
IEVWRU5UKCJnbENvcHlUZXhTdWJJbWFnZTJEIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwg
R0xpbnQgeW9mZnNldCA9ICIKKyAgICAgICAgICAiJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9
ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgIHgsIHksIHdpZHRo
LCBoZWlnaHQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IEZlbmNlTlZJ
RCAqZmVuY2VzUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBGZW5jZU5WSUQg
Kj4oZmVuY2VzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEZWxldGVGZW5jZXNOVihjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpKTsKKyAgICAgICAg
VGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMkQoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5kZWxldGVGZW5jZXNOVihuLCBmZW5jZXNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+
Y29weVRleFN1YkltYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShE
ZWxldGVGZW5jZXNOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZlbmNlc1BhY2tlZCk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoQ29weVRleFN1YkltYWdlMkQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
IHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqZnJhbWVidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4U3ViSW1hZ2UzRENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlRnJhbWVidWZmZXJzIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICpmcmFtZWJ1
ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAo
dWludHB0cl90KWZyYW1lYnVmZmVycyk7CisgICAgRVZFTlQoImdsQ29weVRleFN1YkltYWdlM0Qi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2
ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gIgorICAgICAgICAg
ICIlZCwgR0xpbnQgem9mZnNldCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCAiCisgICAgICAgICAgIj0gJWQiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVU
YXJnZXQsIHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgIHpvZmZz
ZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCAgICAgICA9IEZyb21HTDxj
b25zdCBGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzKGNvbnRleHQsIG4sIGZyYW1lYnVm
ZmVyc1BhY2tlZCkpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4
U3ViSW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwg
em9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVycyhuLCBm
cmFtZWJ1ZmZlcnNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Y29weVRleFN1YkltYWdl
M0QodGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlRnJhbWVidWZmZXJzLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShDb3B5VGV4U3ViSW1hZ2UzRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IERlbGV0ZUZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCit2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFn
ZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xEZWxldGVGcmFtZWJ1ZmZlcnNPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpZnJhbWVidWZm
ZXJzKTsKKyAgICBFVkVOVCgiZ2xDb3B5VGV4U3ViSW1hZ2UzRE9FUyIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4
b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCisgICAgICAgICAgIiVkLCBHTGludCB6b2Zm
c2V0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ICIKKyAgICAgICAgICAiPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgICB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZl
cklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgICAgICAgPSBGcm9tR0w8Y29uc3QgRnJhbWVidWZmZXJJ
RCAqPihmcmFtZWJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZURlbGV0ZUZyYW1lYnVmZmVyc09FUyhjb250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpKTsK
KyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0RPRVMo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcnMobiwgZnJhbWVidWZm
ZXJzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdl
dFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZUZyYW1lYnVmZmVyc09FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoQ29weVRleFN1YkltYWdlM0RPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIGxldmVsLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZz
ZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBE
ZWxldGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCit2b2lk
IEdMX0FQSUVOVFJZIENyZWF0ZU1lbW9yeU9iamVjdHNFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICptZW1vcnlPYmplY3RzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqbWVtb3J5T2JqZWN0
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVNZW1vcnlPYmplY3RzRVhUIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICptZW1vcnlPYmplY3Rz
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRw
dHJfdCltZW1vcnlPYmplY3RzKTsKKyAgICBFVkVOVCgiZ2xDcmVhdGVNZW1vcnlPYmplY3RzRVhU
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICptZW1v
cnlPYmplY3RzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAg
biwgKHVpbnRwdHJfdCltZW1vcnlPYmplY3RzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBjb25zdCBNZW1vcnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0c1BhY2tlZCA9IEZyb21HTDxj
b25zdCBNZW1vcnlPYmplY3RJRCAqPihtZW1vcnlPYmplY3RzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVEZWxldGVNZW1vcnlPYmplY3RzRVhUKGNvbnRleHQsIG4sIG1l
bW9yeU9iamVjdHNQYWNrZWQpKTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVj
dHNQYWNrZWQgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQgKj4obWVtb3J5T2JqZWN0cyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNyZWF0ZU1l
bW9yeU9iamVjdHNFWFQoY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0
ZU1lbW9yeU9iamVjdHMobiwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CisgICAgICAgICAgICBjb250
ZXh0LT5jcmVhdGVNZW1vcnlPYmplY3RzKG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKENyZWF0ZU1lbW9yeU9iamVjdHNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBt
ZW1vcnlPYmplY3RzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRl
UHJvZ3JhbUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSkKK0dM
dWludCBHTF9BUElFTlRSWSBDcmVhdGVQcm9ncmFtQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlUHJvZ3JhbSIsICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBwcm9ncmFtID0gJXUiLCBDSUQoY29udGV4dCksIHByb2dyYW0pOworICAgIEVWRU5UKCJnbENy
ZWF0ZVByb2dyYW0iLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAorICAgIEdMdWlu
dCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRGVsZXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW0oY29udGV4dCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbVBhY2tlZCk7CisgICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IGNvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKERlbGV0ZVByb2dyYW0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
KTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbVBpcGVsaW5lc0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcykK
LXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICpwaXBlbGluZXMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBuLCAodWludHB0cl90KXBp
cGVsaW5lcyk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgY29uc3QgUHJvZ3JhbVBp
cGVsaW5lSUQgKnBpcGVsaW5lc1BhY2tlZCA9IEZyb21HTDxjb25zdCBQcm9ncmFtUGlwZWxpbmVJ
RCAqPihwaXBlbGluZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURl
bGV0ZVByb2dyYW1QaXBlbGluZXMoY29udGV4dCwgbiwgcGlwZWxpbmVzUGFja2VkKSk7Ci0gICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5kZWxldGVQcm9ncmFtUGlwZWxpbmVzKG4sIHBpcGVsaW5lc1BhY2tlZCk7Cisg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpDcmVhdGVQcm9ncmFtLCBHTHVpbnQ+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEZWxldGVQcm9ncmFtUGlwZWxpbmVzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgcGlw
ZWxpbmVzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShDcmVhdGVQcm9ncmFtLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpD
cmVhdGVQcm9ncmFtLCBHTHVpbnQ+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVRdWVyaWVzQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCitHTHVpbnQgR0xfQVBJRU5U
UlkgQ3JlYXRlU2hhZGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0eXBl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbERlbGV0ZVF1ZXJpZXMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgY29uc3QgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWlkcyk7CisgICAgRVZFTlQoImdsQ3JlYXRl
U2hhZGVyIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcyIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2hhZGVyVHlwZSwgdHlwZSkp
OwogCisgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBjb25zdCBRdWVyeUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
Y29uc3QgUXVlcnlJRCAqPihpZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7Cisg
ICAgICAgIFNoYWRlclR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVTaGFkZXIoY29udGV4dCwgdHlwZVBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmRlbGV0ZVF1ZXJpZXMobiwgaWRzUGFja2VkKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0g
Y29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGVQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoRGVsZXRlUXVlcmllcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1Bh
Y2tlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6Q3JlYXRlU2hhZGVyLCBHTHVpbnQ+
KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShDcmVhdGVTaGFkZXIsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0eXBlUGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVu
dHJ5UG9pbnQ6OkNyZWF0ZVNoYWRlciwgR0x1aW50PigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUXVlcmllc0VYVENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQorR0x1
aW50IEdMX0FQSUVOVFJZIENyZWF0ZVNoYWRlclByb2dyYW12Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmdzKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbERlbGV0ZVF1ZXJpZXNFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwgQ0lEKGNvbnRleHQpLCBuLAotICAgICAgICAgICh1aW50cHRyX3QpaWRzKTsKKyAgICBFVkVO
VCgiZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xl
bnVtIHR5cGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGNoYXIgKmNvbnN0KnN0
cmluZ3MgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTaGFkZXJUeXBlLCB0eXBlKSwg
Y291bnQsICh1aW50cHRyX3Qpc3RyaW5ncyk7CiAKKyAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+KGlkcyk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlUXVlcmllc0VY
VChjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKKyAgICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyVHlwZT4odHlw
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUNyZWF0ZVNoYWRlclByb2dyYW12KGNvbnRleHQsIHR5cGVQYWNrZWQsIGNvdW50LCBzdHJpbmdz
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+ZGVsZXRlUXVlcmllcyhuLCBpZHNQYWNrZWQpOworICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBjb250ZXh0LT5jcmVhdGVTaGFkZXJQcm9ncmFtdih0eXBlUGFja2VkLCBjb3VudCwgc3Ry
aW5ncyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVRdWVyaWVzRVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpDcmVhdGVTaGFkZXJQcm9ncmFtdiwgR0x1aW50PigpOworICAgICAgICB9Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoQ3JlYXRlU2hhZGVyUHJvZ3JhbXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0eXBlUGFja2VkLCBjb3VudCwgc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVNoYWRlclByb2dy
YW12LCBHTHVpbnQ+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBEZWxldGVSZW5kZXJidWZmZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycykKK3ZvaWQgR0xfQVBJRU5UUlkgQ3VsbEZh
Y2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsRGVsZXRlUmVuZGVyYnVmZmVycyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xz
aXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpcmVuZGVyYnVmZmVy
cyk7CisgICAgRVZFTlQoImdsQ3VsbEZhY2UiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9
ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpDdWxsRmFjZU1vZGUsIG1vZGUpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBj
b25zdCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBS
ZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZmZXJzKGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZl
cnNQYWNrZWQpKTsKKyAgICAgICAgQ3VsbEZhY2VNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Q3VsbEZhY2VNb2RlPihtb2RlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ3VsbEZhY2UoY29udGV4dCwgbW9k
ZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7
CisgICAgICAgICAgICBjb250ZXh0LT5jdWxsRmFjZShtb2RlUGFja2VkKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVJlbmRlcmJ1ZmZlcnMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShD
dWxsRmFjZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVSZW5kZXJidWZmZXJzT0VTQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycykKK3ZvaWQgR0xfQVBJ
RU5UUlkgQ3VycmVudFBhbGV0dGVNYXRyaXhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0x1aW50IG1hdHJpeHBhbGV0dGVpbmRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVSZW5k
ZXJidWZmZXJzT0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwg
Y29uc3QgR0x1aW50ICpyZW5kZXJidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClyZW5kZXJidWZmZXJzKTsKKyAgICBFVkVO
VCgiZ2xDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyIsICJjb250ZXh0ID0gJWQsIEdMdWludCBtYXRy
aXhwYWxldHRlaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBtYXRyaXhwYWxl
dHRlaW5kZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IFJlbmRlcmJ1
ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkID0gRnJvbUdMPGNvbnN0IFJlbmRlcmJ1ZmZlcklE
ICo+KHJlbmRlcmJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZURlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCkp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVD
dXJyZW50UGFsZXR0ZU1hdHJpeE9FUyhjb250ZXh0LCBtYXRyaXhwYWxldHRlaW5kZXgpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5k
ZWxldGVSZW5kZXJidWZmZXJzKG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpOworICAgICAgICAgICAg
Y29udGV4dC0+Y3VycmVudFBhbGV0dGVNYXRyaXgobWF0cml4cGFsZXR0ZWluZGV4KTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1h
dHJpeHBhbGV0dGVpbmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNh
bXBsZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdWludCAqc2FtcGxlcnMpCit2b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUNhbGxiYWNr
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQUk9DIGNhbGxiYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp1c2Vy
UGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlU2FtcGxlcnMiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50ICpzYW1wbGVycyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGNvdW50LCAodWludHB0
cl90KXNhbXBsZXJzKTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xERUJVR1BST0MgY2FsbGJhY2sgPSAweCUwMTYiIFBSSXhQ
VFIKKyAgICAgICAgICAiLCBjb25zdCB2b2lkICp1c2VyUGFyYW0gPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KWNhbGxiYWNrLCAodWludHB0
cl90KXVzZXJQYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgY29uc3QgU2Ft
cGxlcklEICpzYW1wbGVyc1BhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFNhbXBs
ZXJJRCAqPihzYW1wbGVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGVsZXRlU2FtcGxlcnMoY29udGV4dCwgY291bnQsIHNhbXBsZXJzUGFja2Vk
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZURlYnVnTWVzc2FnZUNhbGxiYWNrKGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5k
ZWxldGVTYW1wbGVycyhjb3VudCwgc2FtcGxlcnNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4
dC0+ZGVidWdNZXNzYWdlQ2FsbGJhY2soY2FsbGJhY2ssIHVzZXJQYXJhbSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVTYW1wbGVycywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVidWdN
ZXNzYWdlQ2FsbGJhY2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjYWxsYmFjaywgdXNlclBhcmFt
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU2VtYXBob3Jlc0VYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZXMpCit2b2lkIEdM
X0FQSUVOVFJZIERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsRGVsZXRlU2VtYXBob3Jlc0VYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqc2VtYXBob3JlcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3Qpc2VtYXBob3Jlcyk7
CisgICAgRVZFTlQoImdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrID0gMHglMDE2IiBQUkl4UFRSCisgICAg
ICAgICAgIiwgY29uc3Qgdm9pZCAqdXNlclBhcmFtID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdCljYWxsYmFjaywgKHVpbnRwdHJfdCl1c2Vy
UGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IFNlbWFwaG9yZUlE
ICpzZW1hcGhvcmVzUGFja2VkICAgICAgICAgICA9IEZyb21HTDxjb25zdCBTZW1hcGhvcmVJRCAq
PihzZW1hcGhvcmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxl
dGVTZW1hcGhvcmVzRVhUKGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQYWNrZWQpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdl
Q2FsbGJhY2tLSFIoY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNlbWFw
aG9yZXMobiwgc2VtYXBob3Jlc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01l
c3NhZ2VDYWxsYmFjayhjYWxsYmFjaywgdXNlclBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKERlbGV0ZVNlbWFwaG9yZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBu
LCBzZW1hcGhvcmVzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VD
YWxsYmFja0tIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVTaGFkZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IHNoYWRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNz
YWdlQ29udHJvbENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNl
dmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
RGVsZXRlU2hhZGVyIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHNoYWRlciA9ICV1IiwgQ0lEKGNv
bnRleHQpLCBzaGFkZXIpOworICAgIEVWRU5UKCJnbERlYnVnTWVzc2FnZUNvbnRyb2wiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2UgPSAlcywgR0xlbnVtIHR5cGUgPSAl
cywgR0xlbnVtIHNldmVyaXR5ID0gJXMsIEdMc2l6ZWkgY291bnQgIgorICAgICAgICAgICI9ICVk
LCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGJvb2xlYW4gZW5hYmxl
ZCA9ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWJ1Z1NvdXJjZSwgc291cmNlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVidWdUeXBlLCB0eXBlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVidWdTZXZlcml0eSwgc2V2ZXJpdHkpLCBjb3VudCwgKHVpbnRwdHJfdClpZHMs
CisgICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZW5hYmxlZCkpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGVsZXRlU2hhZGVyKGNvbnRleHQsIHNoYWRlclBhY2tlZCkpOworICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0
ZURlYnVnTWVzc2FnZUNvbnRyb2woY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291
bnQsIGlkcywgZW5hYmxlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihzaGFkZXJQYWNrZWQpOworICAgICAg
ICAgICAgY29udGV4dC0+ZGVidWdNZXNzYWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5
LCBjb3VudCwgaWRzLCBlbmFibGVkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERlbGV0ZVNoYWRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNoYWRlclBhY2tlZCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoRGVidWdNZXNzYWdlQ29udHJvbCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsCisgICAgICAgICAgICAgICAg
ICAgICAgZW5hYmxlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVN5bmND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzeW5jIHN5bmMpCit2b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUNvbnRyb2xLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiBlbmFibGVkKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlbGV0ZVN5bmMiLCAiY29udGV4dCA9
ICVkLCBHTHN5bmMgc3luYyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAg
ICAgICAgICh1aW50cHRyX3Qpc3luYyk7CisgICAgRVZFTlQoImdsRGVidWdNZXNzYWdlQ29udHJv
bEtIUiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVu
dW0gdHlwZSA9ICVzLCBHTGVudW0gc2V2ZXJpdHkgPSAlcywgR0xzaXplaSBjb3VudCAiCisgICAg
ICAgICAgIj0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMYm9v
bGVhbiBlbmFibGVkID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5cGUpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5LCBzZXZlcml0eSksIGNvdW50LCAodWlu
dHB0cl90KWlkcywKKyAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhlbmFibGVkKSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURl
bGV0ZVN5bmMoY29udGV4dCwgc3luYykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250
cm9sS0hSKGNvbnRleHQsIHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJs
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5kZWxldGVTeW5jKHN5bmMpOworICAgICAgICAgICAgY29udGV4dC0+ZGVidWdNZXNz
YWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVN5bmMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzeW5jKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VDb250
cm9sS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgaWRzLCBlbmFibGVkKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgRGVsZXRlVGV4dHVyZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzKQordm9pZCBHTF9BUElFTlRSWSBE
ZWJ1Z01lc3NhZ2VJbnNlcnRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRl
VGV4dHVyZXMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25z
dCBHTHVpbnQgKnRleHR1cmVzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0g
ICAgICAgICAgbiwgKHVpbnRwdHJfdCl0ZXh0dXJlcyk7CisgICAgRVZFTlQoImdsRGVidWdNZXNz
YWdlSW5zZXJ0IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMs
IEdMZW51bSB0eXBlID0gJXMsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gc2V2ZXJpdHkgPSAiCisg
ICAgICAgICAgIiVzLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKmJ1ZiA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpEZWJ1Z1NvdXJjZSwgc291cmNlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RGVidWdUeXBlLCB0eXBlKSwgaWQsCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgbGVuZ3RoLCAo
dWludHB0cl90KWJ1Zik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgY29uc3QgVGV4
dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFRleHR1
cmVJRCAqPih0ZXh0dXJlcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVGV4
dHVyZXMoY29udGV4dCwgbiwgdGV4dHVyZXNQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJ
bnNlcnQoY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZGVsZXRlVGV4dHVyZXMobiwgdGV4dHVyZXNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4
dC0+ZGVidWdNZXNzYWdlSW5zZXJ0KHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCBsZW5ndGgs
IGJ1Zik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVUZXh0dXJlcywg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHRleHR1cmVzUGFja2VkKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShEZWJ1Z01lc3NhZ2VJbnNlcnQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2Us
IHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGJ1Zik7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrc0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMpCit2
b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUluc2VydEtIUkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKmJ1ZikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3Mi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQg
KmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAotICAgICAgICAgICh1
aW50cHRyX3QpaWRzKTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2UgPSAlcywgR0xlbnVtIHR5cGUgPSAl
cywgR0x1aW50IGlkID0gJXUsIEdMZW51bSBzZXZlcml0eSA9ICIKKyAgICAgICAgICAiJXMsIEdM
c2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqYnVmID0gMHglMDE2IiBQUkl4UFRSICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnU291cmNlLCBzb3VyY2UpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWJ1Z1R5cGUsIHR5cGUpLCBpZCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVidWdTZXZlcml0eSwgc2V2ZXJpdHkpLCBsZW5ndGgsICh1aW50cHRyX3QpYnVmKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lE
ICppZHNQYWNrZWQgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAq
PihpZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVRyYW5zZm9ybUZlZWRi
YWNrcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRL
SFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKG4sIGlkc1BhY2tlZCk7CisgICAgICAgICAgICBjb250
ZXh0LT5kZWJ1Z01lc3NhZ2VJbnNlcnQoc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0
aCwgYnVmKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoRGVidWdNZXNzYWdlSW5zZXJ0S0hSLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoLCBidWYpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVWZXJ0ZXhBcnJh
eXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg
KmFycmF5cykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlQnVmZmVyc0NvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYnVmZmVycykKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xEZWxldGVWZXJ0ZXhBcnJheXMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
c2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmFycmF5cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwg
Q0lEKGNvbnRleHQpLCBuLAotICAgICAgICAgICh1aW50cHRyX3QpYXJyYXlzKTsKKyAgICBFVkVO
VCgiZ2xEZWxldGVCdWZmZXJzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4g
PSAlZCwgY29uc3QgR0x1aW50ICpidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29u
dGV4dCksCisgICAgICAgICAgbiwgKHVpbnRwdHJfdClidWZmZXJzKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgICAgICAg
ICAgICAgPSBGcm9tR0w8Y29uc3QgVmVydGV4QXJyYXlJRCAqPihhcnJheXMpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVy
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEZWxldGVWZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZUJ1ZmZl
cnMoY29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVZlcnRleEFycmF5cyhuLCBh
cnJheXNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlQnVmZmVycyhuLCBidWZm
ZXJzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVZlcnRl
eEFycmF5cywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoRGVsZXRlQnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGJ1
ZmZlcnNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVWZXJ0ZXhB
cnJheXNPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqYXJy
YXlzKQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVGZW5jZXNOVkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZmVuY2VzKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbERlbGV0ZVZlcnRleEFycmF5c09FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xz
aXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqYXJyYXlzID0gMHglMDE2IiBQUkl4UFRSICIiLCBD
SUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClhcnJheXMpOworICAgIEVWRU5U
KCJnbERlbGV0ZUZlbmNlc05WIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4g
PSAlZCwgY29uc3QgR0x1aW50ICpmZW5jZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250
ZXh0KSwgbiwKKyAgICAgICAgICAodWludHB0cl90KWZlbmNlcyk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAg
ICAgID0gRnJvbUdMPGNvbnN0IFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IEZlbmNlTlZJRCAqZmVuY2VzUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEZlbmNlTlZJRCAqPihmZW5jZXMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRGVsZXRlVmVydGV4QXJyYXlzT0VTKGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCkpOworICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVGZW5j
ZXNOVihjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVWZXJ0ZXhBcnJheXMobiwg
YXJyYXlzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUZlbmNlc05WKG4sIGZl
bmNlc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVWZXJ0
ZXhBcnJheXNPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZUZlbmNlc05WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
biwgZmVuY2VzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVwdGhGdW5j
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmdW5jKQordm9pZCBHTF9BUElF
TlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqZnJhbWVidWZmZXJzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlcHRoRnVuYyIsICJjb250ZXh0
ID0gJWQsIEdMZW51bSBmdW5jID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlcHRoRnVuY3Rpb24sIGZ1bmMpKTsKKyAgICBFVkVOVCgi
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkg
biA9ICVkLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpZnJhbWVidWZmZXJzKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RGVwdGhGdW5jKGNvbnRleHQsIGZ1bmMpKTsKKyAgICAgICAgY29uc3QgRnJhbWVidWZmZXJJRCAq
ZnJhbWVidWZmZXJzUGFja2VkID0gRnJvbUdMPGNvbnN0IEZyYW1lYnVmZmVySUQgKj4oZnJhbWVi
dWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmRlcHRoRnVuYyhmdW5jKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUZyYW1lYnVm
ZmVycyhuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoRGVwdGhGdW5jLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnVuYyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRGVsZXRlRnJhbWVidWZmZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwg
ZnJhbWVidWZmZXJzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVwdGhN
YXNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMYm9vbGVhbiBmbGFnKQordm9pZCBH
TF9BUElFTlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqZnJhbWVidWZmZXJzKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlcHRo
TWFzayIsICJjb250ZXh0ID0gJWQsIEdMYm9vbGVhbiBmbGFnID0gJXMiLCBDSUQoY29udGV4dCks
Ci0gICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZmxhZykpOworICAgIEVWRU5UKCJnbERlbGV0
ZUZyYW1lYnVmZmVyc09FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0g
JWQsIGNvbnN0IEdMdWludCAqZnJhbWVidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClmcmFtZWJ1ZmZlcnMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0
aE1hc2soY29udGV4dCwgZmxhZykpOworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFt
ZWJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgRnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZl
cnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVEZWxldGVGcmFtZWJ1ZmZlcnNPRVMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZGVwdGhNYXNrKGZsYWcpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZm
ZXJzKG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEZXB0aE1hc2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmbGFnKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShEZWxldGVGcmFtZWJ1ZmZlcnNPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBu
LCBmcmFtZWJ1ZmZlcnNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZXB0
aFJhbmdlZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IG4sIEdMZmxvYXQg
ZikKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlTWVtb3J5T2JqZWN0c0VYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKm1lbW9yeU9iamVjdHMpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsRGVwdGhSYW5nZWYiLCAiY29udGV4dCA9ICVkLCBHTGZsb2F0IG4gPSAlZiwgR0xm
bG9hdCBmID0gJWYiLCBDSUQoY29udGV4dCksIG4sIGYpOworICAgIEVWRU5UKCJnbERlbGV0ZU1l
bW9yeU9iamVjdHNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVk
LCBjb25zdCBHTHVpbnQgKm1lbW9yeU9iamVjdHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KW1lbW9yeU9iamVjdHMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0
aFJhbmdlZihjb250ZXh0LCBuLCBmKSk7CisgICAgICAgIGNvbnN0IE1lbW9yeU9iamVjdElEICpt
ZW1vcnlPYmplY3RzUGFja2VkID0gRnJvbUdMPGNvbnN0IE1lbW9yeU9iamVjdElEICo+KG1lbW9y
eU9iamVjdHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVEZWxldGVNZW1vcnlPYmplY3RzRVhUKGNvbnRleHQsIG4sIG1lbW9yeU9iamVjdHNQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5kZXB0aFJhbmdlZihuLCBmKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0
ZU1lbW9yeU9iamVjdHMobiwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShEZXB0aFJhbmdlZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGYp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZU1lbW9yeU9iamVjdHNFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgRGVwdGhSYW5nZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xm
aXhlZCBuLCBHTGZpeGVkIGYpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVByb2dyYW1Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0pCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
RGVwdGhSYW5nZXgiLCAiY29udGV4dCA9ICVkLCBHTGZpeGVkIG4gPSAweCVYLCBHTGZpeGVkIGYg
PSAweCVYIiwgQ0lEKGNvbnRleHQpLCBuLCBmKTsKKyAgICBFVkVOVCgiZ2xEZWxldGVQcm9ncmFt
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJRChjb250ZXh0KSwgcHJv
Z3JhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURlcHRoUmFuZ2V4KGNvbnRleHQsIG4sIGYpKTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVByb2dyYW0oY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmRlcHRoUmFuZ2V4KG4sIGYpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRl
UHJvZ3JhbShwcm9ncmFtUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERlcHRoUmFuZ2V4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgZik7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoRGVsZXRlUHJvZ3JhbSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZXRhY2hTaGFkZXJDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCit2b2lk
IEdMX0FQSUVOVFJZIERlbGV0ZVByb2dyYW1QaXBlbGluZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwaXBlbGluZXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGV0
YWNoU2hhZGVyIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0x1aW50IHNo
YWRlciA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHByb2dyYW0sIHNoYWRlcik7Cisg
ICAgRVZFTlQoImdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgbiwgKHVpbnRwdHJfdClwaXBlbGlu
ZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZURldGFjaFNoYWRlcihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBz
aGFkZXJQYWNrZWQpKTsKKyAgICAgICAgY29uc3QgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5l
c1BhY2tlZCA9IEZyb21HTDxjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxl
dGVQcm9ncmFtUGlwZWxpbmVzKGNvbnRleHQsIG4sIHBpcGVsaW5lc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRldGFj
aFNoYWRlcihwcm9ncmFtUGFja2VkLCBzaGFkZXJQYWNrZWQpOworICAgICAgICAgICAgY29udGV4
dC0+ZGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhuLCBwaXBlbGluZXNQYWNrZWQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGV0YWNoU2hhZGVyLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgc2hhZGVyUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShE
ZWxldGVQcm9ncmFtUGlwZWxpbmVzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgcGlwZWxpbmVz
UGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gY2FwKQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVR
dWVyaWVzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICppZHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGlzYWJsZSIsICJjb250ZXh0ID0gJWQsIEdMZW51
bSBjYXAgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RW5hYmxlQ2FwLCBjYXApKTsKKyAgICBFVkVOVCgiZ2xEZWxldGVRdWVyaWVzIiwg
ImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClpZHMp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEaXNhYmxlKGNvbnRleHQsIGNhcCkpOworICAgICAgICBjb25zdCBRdWVyeUlEICppZHNQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlE
ICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVEZWxldGVRdWVyaWVzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRpc2Fi
bGUoY2FwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJpZXMobiwgaWRzUGFja2Vk
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERpc2FibGUsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBjYXApOworICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVF1ZXJpZXMsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBEaXNhYmxlQ2xpZW50U3RhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIGFycmF5KQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVRdWVyaWVzRVhUQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsRGlzYWJsZUNsaWVudFN0YXRlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGFy
cmF5ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkVuYWJsZUNhcCwgYXJyYXkpKTsKKyAgICBFVkVOVCgiZ2xEZWxldGVRdWVyaWVzRVhU
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50
ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAgICAgICAo
dWludHB0cl90KWlkcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQ2xpZW50VmVy
dGV4QXJyYXlUeXBlIGFycmF5UGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPENsaWVudFZlcnRl
eEFycmF5VHlwZT4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Y29uc3QgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8Y29uc3QgUXVlcnlJRCAqPihpZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGlzYWJsZUNsaWVudFN0YXRlKGNvbnRleHQs
IGFycmF5UGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXNFWFQoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGlz
YWJsZUNsaWVudFN0YXRlKGFycmF5UGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0
ZVF1ZXJpZXMobiwgaWRzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERpc2FibGVDbGllbnRTdGF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGFycmF5UGFja2VkKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVRdWVyaWVzRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbiwgaWRzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBp
bmRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUmVuZGVyYnVmZmVyc0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4
ID0gJXUiLCBDSUQoY29udGV4dCksIGluZGV4KTsKKyAgICBFVkVOVCgiZ2xEZWxldGVSZW5kZXJi
dWZmZXJzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3Qg
R0x1aW50ICpyZW5kZXJidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClyZW5kZXJidWZmZXJzKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250ZXh0LCBpbmRleCkpOworICAgICAgICBjb25z
dCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBSZW5k
ZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVycyhjb250ZXh0LCBu
LCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVm
ZmVyc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRGVsZXRlUmVuZGVyYnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4s
IHJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEaXNh
YmxlaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpyZW5kZXJidWZmZXJzKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERpc2FibGVpIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVz
LCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CisgICAgRVZFTlQo
ImdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xz
aXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpcmVuZGVyYnVmZmVy
cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZURpc2FibGVpKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKKyAgICAgICAgY29uc3Qg
UmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgUmVuZGVy
YnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMoY29udGV4dCwg
biwgcmVuZGVyYnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRpc2FibGVpKHRhcmdldCwgaW5kZXgpOworICAg
ICAgICAgICAgY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVycyhuLCByZW5kZXJidWZmZXJzUGFj
a2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERpc2FibGVpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVs
ZXRlUmVuZGVyYnVmZmVyc09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZl
cnNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEaXNjYXJkRnJhbWVidWZm
ZXJFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFj
aG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU2Ft
cGxlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0x1aW50ICpzYW1wbGVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBu
dW1BdHRhY2htZW50cyA9ICVkLCBjb25zdCBHTGVudW0gIgotICAgICAgICAgICIqYXR0YWNobWVu
dHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBudW1BdHRhY2htZW50
cywKLSAgICAgICAgICAodWludHB0cl90KWF0dGFjaG1lbnRzKTsKKyAgICBFVkVOVCgiZ2xEZWxl
dGVTYW1wbGVycyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVk
LCBjb25zdCBHTHVpbnQgKnNhbXBsZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgY291bnQsICh1aW50cHRyX3Qpc2FtcGxlcnMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBTYW1w
bGVySUQgKnNhbXBsZXJzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25z
dCBTYW1wbGVySUQgKj4oc2FtcGxlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZm
ZXJFWFQoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpKTsKKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlU2Ft
cGxlcnMoY29udGV4dCwgY291bnQsIHNhbXBsZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGlzY2FyZEZyYW1lYnVm
ZmVyKHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVNhbXBsZXJzKGNvdW50LCBzYW1wbGVyc1BhY2tlZCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNjYXJkRnJhbWVidWZmZXJFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVTYW1wbGVycywgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIERpc3BhdGNoQ29tcHV0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG51bV9ncm91cHNfeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBudW1fZ3JvdXBzX3ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbnVtX2dyb3Vwc196KQordm9pZCBHTF9BUElFTlRSWSBEZWxl
dGVTZW1hcGhvcmVzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
c2VtYXBob3JlcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEaXNwYXRjaENvbXB1dGUiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBudW1fZ3JvdXBzX3ggPSAldSwgR0x1aW50IG51bV9ncm91
cHNfeSA9ICV1LCBHTHVpbnQgbnVtX2dyb3Vwc196ID0gIgotICAgICAgICAgICIldSIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBudW1fZ3JvdXBzX3gsIG51bV9ncm91cHNfeSwgbnVtX2dyb3Vw
c196KTsKKyAgICBFVkVOVCgiZ2xEZWxldGVTZW1hcGhvcmVzRVhUIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICpzZW1hcGhvcmVzID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClz
ZW1hcGhvcmVzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRl
KGNvbnRleHQsIG51bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LCBudW1fZ3JvdXBzX3opKTsKKyAg
ICAgICAgY29uc3QgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQgPSBGcm9tR0w8Y29uc3Qg
U2VtYXBob3JlSUQgKj4oc2VtYXBob3Jlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQoY29udGV4dCwgbiwg
c2VtYXBob3Jlc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29tcHV0ZShudW1fZ3JvdXBzX3gsIG51bV9n
cm91cHNfeSwgbnVtX2dyb3Vwc196KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNlbWFw
aG9yZXMobiwgc2VtYXBob3Jlc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEaXNwYXRjaENvbXB1dGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1fZ3JvdXBzX3gs
IG51bV9ncm91cHNfeSwKLSAgICAgICAgICAgICAgICAgICAgICBudW1fZ3JvdXBzX3opOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVNlbWFwaG9yZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBuLCBzZW1hcGhvcmVzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
RGlzcGF0Y2hDb21wdXRlSW5kaXJlY3RDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xp
bnRwdHIgaW5kaXJlY3QpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNoYWRlckNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgc2hhZGVyKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERpc3Bh
dGNoQ29tcHV0ZUluZGlyZWN0IiwgImNvbnRleHQgPSAlZCwgR0xpbnRwdHIgaW5kaXJlY3QgPSAl
bGx1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oaW5kaXJlY3QpKTsKKyAgICBFVkVOVCgiZ2xEZWxldGVTaGFkZXIiLCAiY29udGV4dCA9
ICVkLCBHTHVpbnQgc2hhZGVyID0gJXUiLCBDSUQoY29udGV4dCksIHNoYWRlcik7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KGNvbnRl
eHQsIGluZGlyZWN0KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURlbGV0ZVNoYWRlcihjb250ZXh0LCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kaXNwYXRj
aENvbXB1dGVJbmRpcmVjdChpbmRpcmVjdCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVT
aGFkZXIoc2hhZGVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERp
c3BhdGNoQ29tcHV0ZUluZGlyZWN0LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kaXJlY3QpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVNoYWRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHNoYWRlclBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBH
THNpemVpIGNvdW50KQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVTeW5jQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMc3luYyBzeW5jKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdBcnJheXMi
LCAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGludCBmaXJzdCA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBmaXJzdCwgY291bnQpOworICAgIEVW
RU5UKCJnbERlbGV0ZVN5bmMiLCAiY29udGV4dCA9ICVkLCBHTHN5bmMgc3luYyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgICh1aW50cHRyX3Qpc3luYyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdBcnJheXMoY29u
dGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVN5bmMoY29udGV4dCwgc3luYykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdB
cnJheXMobW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRl
bGV0ZVN5bmMoc3luYyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3QXJy
YXlzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50KTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVTeW5jLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc3lu
Yyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbmRpcmVjdENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbW9kZSwgY29uc3Qgdm9pZCAqaW5kaXJl
Y3QpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVRleHR1cmVzQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xEcmF3QXJyYXlzSW5kaXJlY3QiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBtb2RlID0gJXMsIGNvbnN0IHZvaWQgKmluZGlyZWN0ID0gMHglMDE2IiBQUkl4UFRSICIiLCBD
SUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1p
dGl2ZVR5cGUsIG1vZGUpLCAodWludHB0cl90KWluZGlyZWN0KTsKKyAgICBFVkVOVCgiZ2xEZWxl
dGVUZXh0dXJlcyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNv
bnN0IEdMdWludCAqdGV4dHVyZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBuLCAodWludHB0cl90KXRleHR1cmVzKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlRHJhd0FycmF5c0luZGlyZWN0KGNvbnRleHQsIG1vZGVQYWNrZWQsIGluZGly
ZWN0KSk7CisgICAgICAgIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxl
dGVUZXh0dXJlcyhjb250ZXh0LCBuLCB0ZXh0dXJlc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbmRp
cmVjdChtb2RlUGFja2VkLCBpbmRpcmVjdCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVU
ZXh0dXJlcyhuLCB0ZXh0dXJlc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEcmF3QXJyYXlzSW5kaXJlY3QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2Vk
LCBpbmRpcmVjdCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlVGV4dHVyZXMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBuLCB0ZXh0dXJlc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5jZWRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCkKK3ZvaWQgR0xfQVBJRU5UUlkg
RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHVpbnQgKmlkcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGludCBm
aXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgIgotICAgICAgICAgICJpbnN0
YW5jZWNvdW50ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBmaXJzdCwgY291bnQsCi0gICAgICAg
ICAgaW5zdGFuY2Vjb3VudCk7CisgICAgRVZFTlQoImdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tz
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50
ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAgICAgICAo
dWludHB0cl90KWlkcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVHJh
bnNmb3JtRmVlZGJhY2tJRCAqaWRzUGFja2VkID0gRnJvbUdMPGNvbnN0IFRyYW5zZm9ybUZlZWRi
YWNrSUQgKj4oaWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZChjb250ZXh0
LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQsIGluc3RhbmNlY291bnQpKTsKKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2tzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9k
ZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZWNvdW50KTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyhuLCBpZHNQYWNrZWQpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0FycmF5c0luc3RhbmNlZCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICBp
bnN0YW5jZWNvdW50KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVUcmFuc2Zvcm1GZWVk
YmFja3MsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEVDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBw
cmltY291bnQpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVZlcnRleEFycmF5c0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xpbnQgZmlyc3QgPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBHTHNpemVpIHByaW1jb3VudCAiCi0gICAgICAgICAgIj0gJWQiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUs
IG1vZGUpLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CisgICAgRVZFTlQoImdsRGVsZXRlVmVy
dGV4QXJyYXlzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29u
c3QgR0x1aW50ICphcnJheXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwK
KyAgICAgICAgICAodWludHB0cl90KWFycmF5cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkID0gRnJvbUdMPGNvbnN0IFZl
cnRleEFycmF5SUQgKj4oYXJyYXlzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVZl
cnRleEFycmF5cyhjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFu
Y2VkKG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVZlcnRleEFycmF5cyhuLCBhcnJheXNQYWNrZWQpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgIHByaW1jb3VudCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlVmVydGV4QXJyYXlz
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEVYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCit2
b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVZlcnRleEFycmF5c09FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICphcnJheXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0Fy
cmF5c0luc3RhbmNlZEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUg
PSAlcywgR0xpbnQgc3RhcnQgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTHNpemVpIHByaW1j
b3VudCAiCi0gICAgICAgICAgIj0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgY291bnQs
IHByaW1jb3VudCk7CisgICAgRVZFTlQoImdsRGVsZXRlVmVydGV4QXJyYXlzT0VTIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICphcnJheXMg
PSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAgICAgICAodWludHB0
cl90KWFycmF5cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9k
ZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+
KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVmVydGV4
QXJyYXlJRCAqYXJyYXlzUGFja2VkID0gRnJvbUdMPGNvbnN0IFZlcnRleEFycmF5SUQgKj4oYXJy
YXlzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEVYVChjb250ZXh0LCBtb2Rl
UGFja2VkLCBzdGFydCwgY291bnQsIHByaW1jb3VudCkpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVWZXJ0ZXhBcnJheXNPRVMoY29udGV4
dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlUGFja2VkLCBz
dGFydCwgY291bnQsIHByaW1jb3VudCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVWZXJ0
ZXhBcnJheXMobiwgYXJyYXlzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKERyYXdBcnJheXNJbnN0YW5jZWRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFj
a2VkLCBzdGFydCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgcHJpbWNvdW50KTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVWZXJ0ZXhBcnJheXNPRVMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBuLCBhcnJheXNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBE
cmF3QnVmZmVyc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0
IEdMZW51bSAqYnVmcykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVwdGhGdW5jQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmdW5jKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdCdWZmZXJz
IiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMZW51bSAqYnVmcyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3Qp
YnVmcyk7CisgICAgRVZFTlQoImdsRGVwdGhGdW5jIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZ1
bmMgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVwdGhGdW5jdGlvbiwgZnVuYykpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3QnVmZmVycyhjb250ZXh0LCBuLCBi
dWZzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlcHRo
RnVuYyhjb250ZXh0LCBmdW5jKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEcmF3QnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGJ1ZnMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKERlcHRoRnVuYywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZ1bmMpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVyc0VYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKK3ZvaWQgR0xf
QVBJRU5UUlkgRGVwdGhNYXNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMYm9vbGVh
biBmbGFnKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdCdWZmZXJzRVhUIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0xlbnVtICpidWZzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClidWZzKTsK
KyAgICBFVkVOVCgiZ2xEZXB0aE1hc2siLCAiY29udGV4dCA9ICVkLCBHTGJvb2xlYW4gZmxhZyA9
ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZsYWcpKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRHJhd0J1ZmZlcnNFWFQoY29udGV4dCwgbiwgYnVmcykpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0aE1hc2soY29udGV4dCwgZmxhZykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdCdWZmZXJzKG4sIGJ1ZnMpOworICAgICAgICAgICAgY29udGV4dC0+ZGVwdGhNYXNrKGZsYWcp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0J1ZmZlcnNFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBuLCBidWZzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZXB0aE1h
c2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmbGFnKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgRHJhd0VsZW1lbnRzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMpCit2
b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2VmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZmxvYXQgbiwgR0xmbG9hdCBmKQogewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdFbGVtZW50cyIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9
ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKLSAgICAgICAgICAiKmluZGljZXMg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAotICAgICAgICAg
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVp
bnRwdHJfdClpbmRpY2VzKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xEZXB0aFJhbmdlZiIsICJjb250ZXh0ID0g
JWQsIEdMZmxvYXQgbiA9ICVmLCBHTGZsb2F0IGYgPSAlZiIsIENJRChjb250ZXh0KSwgbiwgZik7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAg
ICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFj
a2VkLCBpbmRpY2VzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZURlcHRoUmFuZ2VmKGNvbnRleHQsIG4sIGYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHMobW9kZVBhY2tl
ZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpOworICAgICAgICAgICAgY29udGV4dC0+ZGVw
dGhSYW5nZWYobiwgZik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxl
bWVudHMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tl
ZCwgaW5kaWNlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVwdGhSYW5nZWYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBuLCBmKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0Vs
ZW1lbnRzQmFzZVZlcnRleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQordm9pZCBH
TF9BUElFTlRSWSBEZXB0aFJhbmdleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZp
eGVkIG4sIEdMZml4ZWQgZikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNv
dW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqaW5k
aWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5
cGUsIG1vZGUpLCBjb3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgYmFzZXZlcnRleCk7
CisgICAgRVZFTlQoImdsRGVwdGhSYW5nZXgiLCAiY29udGV4dCA9ICVkLCBHTGZpeGVkIG4gPSAw
eCVYLCBHTGZpeGVkIGYgPSAweCVYIiwgQ0lEKGNvbnRleHQpLCBuLCBmKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3
RWxlbWVudHNCYXNlVmVydGV4KGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRpY2VzLCBiYXNldmVydGV4KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZURlcHRoUmFuZ2V4KGNvbnRleHQsIG4sIGYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVu
dHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNl
dmVydGV4KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlcHRoUmFuZ2V4KG4sIGYpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzQmFzZVZlcnRleCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KERlcHRoUmFuZ2V4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgZik7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGV0YWNo
U2hhZGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgc2hhZGVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQg
PSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2Vz
ID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwg
bW9kZSksIGNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3
RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVydGV4KTsKKyAg
ICBFVkVOVCgiZ2xEZXRhY2hTaGFkZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTHVpbnQgc2hhZGVyID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgcHJvZ3Jh
bSwgc2hhZGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2Rl
IG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4o
bW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKGNvbnRleHQsIG1v
ZGVQYWNrZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KSk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlRGV0YWNoU2hhZGVyKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29u
dGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW1QYWNrZWQsIHNoYWRlclBhY2tlZCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhULCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoRGV0YWNoU2hhZGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgc2hh
ZGVyUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzQmFz
ZVZlcnRleE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4
KQordm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSBjYXApCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3Vu
dCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKLSAgICAgICAgICAiKmluZGlj
ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBl
LCBtb2RlKSwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRy
YXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOwor
ICAgIEVWRU5UKCJnbERpc2FibGUiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY2FwID0gJXMiLCBD
SUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJs
ZUNhcCwgY2FwKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9k
ZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+
KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyhjb250ZXh0LCBt
b2RlUGFja2VkLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlKGNv
bnRleHQsIGNhcCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQs
IHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+
ZGlzYWJsZShjYXApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1l
bnRzQmFzZVZlcnRleE9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKERpc2FibGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBj
YXApOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbmRpcmVjdENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlyZWN0
KQordm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlQ2xpZW50U3RhdGVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIGFycmF5KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0lu
ZGlyZWN0IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGVu
dW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICppbmRpcmVjdCA9IDB4JTAxNiIgUFJJeFBUUgotICAg
ICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpcmVjdCk7
CisgICAgRVZFTlQoImdsRGlzYWJsZUNsaWVudFN0YXRlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IGFycmF5ID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkVuYWJsZUNhcCwgYXJyYXkpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIENsaWVudFZlcnRleEFycmF5VHlw
ZSBhcnJheVBhY2tlZCA9IEZyb21HTDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFycmF5KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5kaXJlY3QoY29udGV4dCwgbW9kZVBhY2tlZCwgdHlw
ZVBhY2tlZCwgaW5kaXJlY3QpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRGlzYWJsZUNsaWVudFN0YXRlKGNvbnRleHQsIGFycmF5UGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+ZHJhd0VsZW1lbnRzSW5kaXJlY3QobW9kZVBhY2tlZCwgdHlwZVBhY2tlZCwgaW5kaXJlY3Qp
OworICAgICAgICAgICAgY29udGV4dC0+ZGlzYWJsZUNsaWVudFN0YXRlKGFycmF5UGFja2VkKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luZGlyZWN0LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgdHlwZVBhY2tlZCwgaW5kaXJlY3QpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKERpc2FibGVDbGllbnRTdGF0ZSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGFycmF5UGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQpCit2b2lkIEdM
X0FQSUVOVFJZIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVp
IGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIq
aW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGluc3RhbmNlY291bnQgPSAlZCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJp
bWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0
YW5jZWNvdW50KTsKKyAgICBFVkVOVCgiZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkiLCAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwgaW5kZXgpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAg
RHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERy
YXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZChjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlw
ZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoY29udGV4dCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZVBhY2tl
ZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGluc3RhbmNlY291bnQpOworICAgICAgICAg
ICAgY29udGV4dC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNlZCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgIGluZGljZXMsIGluc3RhbmNlY291bnQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEVDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQg
R0xfQVBJRU5UUlkgRGlzYWJsZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgotICAgICAg
ICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIHByaW1jb3VudCA9ICVk
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQ
cmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIHByaW1j
b3VudCk7CisgICAgRVZFTlQoImdsRGlzYWJsZWkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAg
IERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxE
cmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb250ZXh0LCBtb2RlUGFja2VkLCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCkpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlaShjb250ZXh0LCB0YXJnZXQs
IGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGVQYWNrZWQsIGNvdW50LCB0eXBl
UGFja2VkLCBpbmRpY2VzLCBwcmltY291bnQpOworICAgICAgICAgICAgY29udGV4dC0+ZGlzYWJs
ZWkodGFyZ2V0LCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQs
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1j
b3VudCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGlzYWJsZWksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXQsIGluZGV4KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYmFzZXZlcnRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZWlFWFRDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVt
IHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQ
Ukl4UFRSICIsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCA9ICVkLCBHTGludCBiYXNldmVydGV4ID0g
JWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywg
aW5zdGFuY2Vjb3VudCwKLSAgICAgICAgICBiYXNldmVydGV4KTsKKyAgICBFVkVOVCgiZ2xEaXNh
YmxlaUVYVCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4
ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5kZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZVZlcnRleCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlaUVY
VChjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Vjb3VudCwg
YmFzZXZlcnRleCk7CisgICAgICAgICAgICBjb250ZXh0LT5kaXNhYmxlaSh0YXJnZXQsIGluZGV4
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNl
ZEJhc2VWZXJ0ZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBi
YXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNhYmxlaUVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaW5zdGFuY2Vjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQordm9pZCBHTF9B
UElFTlRSWSBEaXNhYmxlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZVZlcnRleEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUg
PSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIK
LSAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBpbnN0YW5j
ZWNvdW50ID0gJWQsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNv
dW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNU
eXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5jZWNvdW50LAotICAgICAgICAg
IGJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbERpc2FibGVpT0VTIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBp
bmRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUp
OwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGluc3Rh
bmNlY291bnQsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVpT0VTKGNvbnRleHQsIHRhcmdldCwgaW5k
ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50
LCB0eXBlUGFja2VkLCBpbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRpc2FibGVpKHRhcmdldCwgaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
IHR5cGVQYWNrZWQsIGluZGljZXMsIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKERpc2FibGVpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBpbmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3Rh
bmNlZEJhc2VWZXJ0ZXhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVOVFJZIERpc2NhcmRGcmFt
ZWJ1ZmZlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVt
QXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywg
Y29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdM
c2l6ZWkgaW5zdGFuY2Vjb3VudCA9ICVkLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5
cGUsIG1vZGUpLCBjb3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgaW5zdGFuY2Vjb3Vu
dCwKLSAgICAgICAgICBiYXNldmVydGV4KTsKKyAgICBFVkVOVCgiZ2xEaXNjYXJkRnJhbWVidWZm
ZXJFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xz
aXplaSBudW1BdHRhY2htZW50cyA9ICVkLCBjb25zdCBHTGVudW0gIgorICAgICAgICAgICIqYXR0
YWNobWVudHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBudW1BdHRh
Y2htZW50cywKKyAgICAgICAgICAodWludHB0cl90KWF0dGFjaG1lbnRzKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMoCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRl
eCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJFWFQoY29udGV4dCwgdGFyZ2V0
LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWRC
YXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWNv
dW50LCBiYXNldmVydGV4KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRpc2NhcmRGcmFtZWJ1ZmZl
cih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoRGlzY2FyZEZyYW1lYnVmZmVyRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICBhdHRh
Y2htZW50cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3Rh
bmNlZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCit2b2lk
IEdMX0FQSUVOVFJZIERpc3BhdGNoQ29tcHV0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51
bV9ncm91cHNfeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBudW1fZ3JvdXBzX3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbnVtX2dyb3Vwc196KQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdFbGVt
ZW50c0luc3RhbmNlZEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUg
PSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIK
LSAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBwcmltY291
bnQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRp
Y2VzLCBwcmltY291bnQpOworICAgIEVWRU5UKCJnbERpc3BhdGNoQ29tcHV0ZSIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG51bV9ncm91cHNfeCA9ICV1LCBHTHVpbnQgbnVtX2dy
b3Vwc195ID0gJXUsIEdMdWludCBudW1fZ3JvdXBzX3ogPSAiCisgICAgICAgICAgIiV1IiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIG51bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LCBudW1fZ3Jv
dXBzX3opOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEVYVChjb250ZXh0LCBtb2RlUGFj
a2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
IFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlKGNvbnRleHQsIG51bV9ncm91cHNfeCwgbnVtX2dyb3Vw
c195LCBudW1fZ3JvdXBzX3opKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICBpbmRpY2VzLCBwcmltY291bnQpOwotICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRSWSBE
cmF3UmFuZ2VFbGVtZW50c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqaW5kaWNlcykKKyAgICAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29t
cHV0ZShudW1fZ3JvdXBzX3gsIG51bV9ncm91cHNfeSwgbnVtX2dyb3Vwc196KTsKKyAgICAgICAg
fQorICAgICAgICBBTkdMRV9DQVBUVVJFKERpc3BhdGNoQ29tcHV0ZSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG51bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LAorICAgICAgICAgICAgICAgICAgICAg
IG51bV9ncm91cHNfeik7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIERpc3BhdGNoQ29t
cHV0ZUluZGlyZWN0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50cHRyIGluZGly
ZWN0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdSYW5nZUVsZW1lbnRzIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAldSwgR0x1aW50IGVu
ZCA9ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsICIKLSAgICAgICAgICAiR0xlbnVtIHR5cGUgPSAl
cywgY29uc3Qgdm9pZCAqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBt
b2RlKSwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMpOworICAg
IEVWRU5UKCJnbERpc3BhdGNoQ29tcHV0ZUluZGlyZWN0IiwgImNvbnRleHQgPSAlZCwgR0xpbnRw
dHIgaW5kaXJlY3QgPSAlbGx1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oaW5kaXJlY3QpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50cyhjb250ZXh0
LCBtb2RlUGFja2VkLCBzdGFydCwgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHlwZVBhY2tlZCwg
aW5kaWNlcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEaXNwYXRjaENvbXB1dGVJbmRpcmVjdChjb250ZXh0LCBpbmRpcmVjdCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdS
YW5nZUVsZW1lbnRzKG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlUGFja2VkLCBp
bmRpY2VzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KGlu
ZGlyZWN0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1l
bnRzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBpbmRpcmVjdCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1l
bnRzQmFzZVZlcnRleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVO
VFJZIERyYXdBcnJheXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUs
IEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdSYW5nZUVs
ZW1lbnRzQmFzZVZlcnRleCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUg
PSAlcywgR0x1aW50IHN0YXJ0ID0gJXUsIEdMdWludCBlbmQgPSAldSwgR0xzaXplaSBjb3VudCA9
ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgKmluZGljZXMg
PSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBt
b2RlKSwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGJhc2V2
ZXJ0ZXgpOworICAgIEVWRU5UKCJnbERyYXdBcnJheXMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0g
bW9kZSA9ICVzLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5
cGUsIG1vZGUpLCBmaXJzdCwgY291bnQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVy
dGV4KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZl
TW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3QXJyYXlzKGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBjb3Vu
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBzdGFydCwgZW5k
LCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNldmVydGV4KTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdBcnJheXMobW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50KTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKERyYXdBcnJheXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJz
dCwgY291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVtZW50
c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBt
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNl
dmVydGV4KQordm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5kaXJlY3RDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVCIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0x1aW50IHN0YXJ0ID0gJXUsIEdMdWlu
dCBlbmQgPSAldSwgR0xzaXplaSBjb3VudCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSB0eXBl
ID0gJXMsIGNvbnN0IHZvaWQgKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgYmFz
ZXZlcnRleCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUp
LCAodWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbERyYXdBcnJh
eXNJbmRpcmVjdCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywg
Y29uc3Qgdm9pZCAqaW5kaXJlY3QgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9k
ZSksICh1aW50cHRyX3QpaW5kaXJlY3QpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVy
dGV4RVhUKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9k
ZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0
aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbmRpcmVjdChjb250ZXh0LCBtb2RlUGFja2VkLCBpbmRp
cmVjdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBzdGFydCwg
ZW5kLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldmVydGV4KTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdBcnJheXNJbmRpcmVjdChtb2RlUGFja2VkLCBpbmRpcmVjdCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgZW5kLAotICAgICAgICAgICAg
ICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShEcmF3QXJyYXlzSW5kaXJlY3QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBtb2RlUGFja2VkLCBpbmRpcmVjdCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERy
YXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5j
ZWRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2Vjb3VudCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhP
RVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMdWludCBz
dGFydCA9ICV1LCBHTHVpbnQgZW5kID0gJXUsIEdMc2l6ZWkgY291bnQgPSAlZCwgIgotICAgICAg
ICAgICJHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICppbmRpY2VzID0gMHglMDE2IiBQUkl4
UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIHN0YXJ0LCBl
bmQsIGNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxl
bWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVydGV4KTsKKyAgICBF
VkVOVCgiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gbW9kZSA9ICVzLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdM
c2l6ZWkgIgorICAgICAgICAgICJpbnN0YW5jZWNvdW50ID0gJWQiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUp
LCBmaXJzdCwgY291bnQsCisgICAgICAgICAgaW5zdGFuY2Vjb3VudCk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRz
VHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFu
Z2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQs
IGVuZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOworICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5
c0luc3RhbmNlZChjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQsIGluc3RhbmNlY291
bnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgc3RhcnQsIGVu
ZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRleCk7CisgICAgICAgICAgICBjb250ZXh0
LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2Vj
b3VudCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3UmFuZ2VFbGVtZW50
c0Jhc2VWZXJ0ZXhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwg
ZW5kLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBi
YXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3QXJyYXlzSW5zdGFuY2VkLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgIGluc3RhbmNlY291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBEcmF3VGV4Zk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB6LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbERyYXdUZXhmT0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGZsb2F0IHggPSAl
ZiwgR0xmbG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9ICVmLCBHTGZsb2F0IHdpZHRoID0gJWYsICIK
LSAgICAgICAgICAiR0xmbG9hdCBoZWlnaHQgPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdM
aW50IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xzaXplaSBwcmltY291bnQgIgor
ICAgICAgICAgICI9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhmT0VTKGNvbnRleHQs
IHgsIHksIHosIHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUoY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3
VGV4Zih4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdB
cnJheXNJbnN0YW5jZWQobW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleGZPRVMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2Vk
LCBmaXJzdCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgcHJpbWNvdW50KTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleGZ2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIGNvbnN0IEdMZmxvYXQgKmNvb3JkcykKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0Fy
cmF5c0luc3RhbmNlZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1Rl
eGZ2T0VTIiwgImNvbnRleHQgPSAlZCwgY29uc3QgR0xmbG9hdCAqY29vcmRzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRwdHJfdCljb29yZHMpOwor
ICAgIEVWRU5UKCJnbERyYXdBcnJheXNJbnN0YW5jZWRFWFQiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMaW50IHN0YXJ0ID0gJWQsIEdMc2l6ZWkgY291bnQg
PSAlZCwgR0xzaXplaSBwcmltY291bnQgIgorICAgICAgICAgICI9ICVkIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBt
b2RlKSwgc3RhcnQsIGNvdW50LCBwcmltY291bnQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4ZnZPRVMoY29udGV4dCwg
Y29vcmRzKSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFs
aWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBj
b3VudCwgcHJpbWNvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleGZ2KGNvb3Jkcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwgcHJpbWNv
dW50KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdUZXhmdk9FUywgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGNvb3Jkcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0Fy
cmF5c0luc3RhbmNlZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0
LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICBwcmltY291bnQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWQotRHJhd1RleGlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCkK
K3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0J1ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1Rl
eGlPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9
ICVkLCBHTGludCB6ID0gJWQsIEdMaW50IHdpZHRoID0gJWQsIEdMaW50IGhlaWdodCAiCi0gICAg
ICAgICAgIj0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwgeiwgd2lkdGgsIGhl
aWdodCk7CisgICAgRVZFTlQoImdsRHJhd0J1ZmZlcnMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgY29uc3QgR0xlbnVtICpidWZzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClidWZzKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURy
YXdUZXhpT0VTKGNvbnRleHQsIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0J1ZmZlcnMoY29udGV4dCwgbiwg
YnVmcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdUZXhpKHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd0J1ZmZlcnMobiwgYnVmcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShEcmF3VGV4aU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHosIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdCdWZmZXJzLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbiwgYnVmcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdU
ZXhpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGludCAqY29vcmRz
KQordm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVyc0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xE
cmF3VGV4aXZPRVMiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGludCAqY29vcmRzID0gMHglMDE2
IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRwdHJfdCljb29yZHMp
OworICAgIEVWRU5UKCJnbERyYXdCdWZmZXJzRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0xlbnVtICpidWZzID0gMHglMDE2IiBQUkl4UFRSICIi
LCBDSUQoY29udGV4dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClidWZzKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1Rl
eGl2T0VTKGNvbnRleHQsIGNvb3JkcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChjb250ZXh0LCBuLCBidWZzKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1Rl
eGl2KGNvb3Jkcyk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3QnVmZmVycyhuLCBidWZzKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdUZXhpdk9FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGNvb3Jkcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0J1ZmZlcnNF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBidWZzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgRHJhd1RleHNPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgeiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB3aWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZ
IERyYXdFbGVtZW50c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbERyYXdUZXhzT0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNob3J0
IHggPSAlZCwgR0xzaG9ydCB5ID0gJWQsIEdMc2hvcnQgeiA9ICVkLCBHTHNob3J0IHdpZHRoID0g
JWQsICIKLSAgICAgICAgICAiR0xzaG9ydCBoZWlnaHQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVu
dHMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkg
Y291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisgICAgICAgICAgIipp
bmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlw
ZSksICh1aW50cHRyX3QpaW5kaWNlcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4c09FUyhjb250
ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1l
bnRzKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZHJhd1RleHMoeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5k
cmF3RWxlbWVudHMobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleHNPRVMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShE
cmF3RWxlbWVudHMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlw
ZVBhY2tlZCwgaW5kaWNlcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhz
dk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTHNob3J0ICpjb29yZHMp
Cit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlj
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYmFzZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3VGV4c3ZPRVMiLCAiY29udGV4
dCA9ICVkLCBjb25zdCBHTHNob3J0ICpjb29yZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChj
b250ZXh0KSwKLSAgICAgICAgICAodWludHB0cl90KWNvb3Jkcyk7CisgICAgRVZFTlQoImdsRHJh
d0VsZW1lbnRzQmFzZVZlcnRleCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1v
ZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lk
ICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgYmFzZXZl
cnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCisgICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWlu
ZGljZXMsIGJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4c3ZPRVMoY29udGV4dCwgY29vcmRzKSk7Cisg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNU
eXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxl
bWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleChjb250ZXh0LCBtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXhz
dihjb29yZHMpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzQmFzZVZlcnRleCht
b2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3VGV4c3ZPRVMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBjb29yZHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0Jhc2VW
ZXJ0ZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBiYXNldmVydGV4KTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleHhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgeiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB3aWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBoZWlnaHQpCit2b2lk
IEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3VGV4eE9F
UyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhlZCB4ID0gMHglWCwgR0xmaXhlZCB5
ID0gMHglWCwgR0xmaXhlZCB6ID0gMHglWCwgR0xmaXhlZCB3aWR0aCA9ICIKLSAgICAgICAgICAi
MHglWCwgR0xmaXhlZCBoZWlnaHQgPSAweCVYIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHgs
IHksIHosIHdpZHRoLCBoZWlnaHQpOworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0
ZXhFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6
ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisgICAgICAgICAg
IippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0
aXZlVHlwZSwgbW9kZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVy
dGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXh4T0VTKGNvbnRleHQsIHgsIHksIHosIHdpZHRo
LCBoZWlnaHQpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAg
IERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKGNv
bnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNl
dmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd1RleHgoeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5kcmF3RWxlbWVudHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBl
UGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKERyYXdUZXh4T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgeiwgd2lkdGgs
IGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4eHZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgY29uc3QgR0xmaXhlZCAqY29vcmRzKQordm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNC
YXNlVmVydGV4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0
ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1RleHh2T0VTIiwgImNvbnRleHQgPSAlZCwgY29uc3Qg
R0xmaXhlZCAqY29vcmRzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgKHVpbnRwdHJfdCljb29yZHMpOworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0Jhc2VW
ZXJ0ZXhPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdM
c2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisgICAgICAg
ICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJp
bWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNl
dmVydGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRHJhd1RleHh2T0VTKGNvbnRleHQsIGNvb3JkcykpOworICAgICAgICBQcmlt
aXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4o
dHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4eHYoY29v
cmRzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBh
Y2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleHh2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgY29vcmRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNCYXNlVmVydGV4
T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50
c0luZGlyZWN0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqaW5kaXJlY3QpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlT0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJn
ZXQpLCAodWludHB0cl90KWltYWdlKTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbmRpcmVj
dCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xlbnVtIHR5
cGUgPSAlcywgY29uc3Qgdm9pZCAqaW5kaXJlY3QgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAg
ICAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpQcmltaXRpdmVUeXBlLCBtb2RlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaXJlY3QpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
RUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNvbnRleHQsIHRhcmdldCwgaW1h
Z2UpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdF
bGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRp
cmVjdChjb250ZXh0LCBtb2RlUGFja2VkLCB0eXBlUGFja2VkLCBpbmRpcmVjdCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVHTElt
YWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGltYWdlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdFbGVtZW50c0luZGlyZWN0KG1vZGVQYWNrZWQsIHR5cGVQYWNrZWQsIGlu
ZGlyZWN0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEVHTEltYWdlVGFyZ2V0
UmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW1h
Z2UpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luZGlyZWN0LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgdHlwZVBhY2tlZCwgaW5kaXJlY3QpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FU0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVnbEltYWdlT0VTIGltYWdl
KQordm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2Vjb3VudCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUy
RE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVn
bEltYWdlT0VTIGltYWdlID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwg
KHVpbnRwdHJfdClpbWFnZSk7CisgICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50
ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAgICAgICAgICIqaW5kaWNl
cyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGluc3RhbmNlY291bnQgPSAlZCIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZl
VHlwZSwgbW9kZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5jZWNv
dW50KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpbWFnZSkpOworICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlw
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZURyYXdFbGVtZW50c0luc3RhbmNlZChjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZUdMSW1hZ2VUYXJnZXRUZXh0dXJl
MkQodGFyZ2V0UGFja2VkLCBpbWFnZSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGluc3Rh
bmNlY291bnQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGltYWdl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJbnN0YW5jZWQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgRW5hYmxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjYXAp
Cit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsRW5hYmxlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNhcCA9ICVzIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIGNhcCkp
OworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51
bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAgICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIg
UFJJeFBUUiAiLCBHTHNpemVpIHByaW1jb3VudCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291
bnQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUs
IHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIHByaW1jb3VudCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZShjb250ZXh0
LCBjYXApKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb250
ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1j
b3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVuYWJsZShjYXApOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBwcmltY291
bnQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRW5hYmxlLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgY2FwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEVuYWJsZUNsaWVudFN0YXRlQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSBhcnJheSkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQmFzZVZlcnRleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYmFzZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xFbmFibGVDbGllbnRTdGF0ZSIsICJjb250
ZXh0ID0gJWQsIEdMZW51bSBhcnJheSA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIGFycmF5KSk7CisgICAgRVZFTlQo
ImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9
ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIg
IiwgR0xzaXplaSBpbnN0YW5jZWNvdW50ID0gJWQsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0
aXZlVHlwZSwgbW9kZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5j
ZWNvdW50LAorICAgICAgICAgIGJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCAgICAgICAgICAgICA9IEZy
b21HTDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFycmF5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmFibGVDbGllbnRTdGF0ZShjb250ZXh0LCBh
cnJheVBhY2tlZCkpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAg
ICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywg
aW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVuYWJsZUNsaWVudFN0YXRlKGFycmF5UGFj
a2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0
ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlY291bnQsIGJh
c2V2ZXJ0ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRW5hYmxlQ2xpZW50
U3RhdGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhcnJheVBhY2tlZCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNr
ZWQsIGluZGljZXMsIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHVpbnQgaW5kZXgpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0lu
c3RhbmNlZEJhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChj
b250ZXh0KSwgaW5kZXgpOworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdM
c2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisgICAgICAg
ICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCA9
ICVkLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlw
ZSksICh1aW50cHRyX3QpaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwKKyAgICAgICAgICBiYXNldmVy
dGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbnRleHQsIGlu
ZGV4KSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBpbnN0
YW5jZWNvdW50LCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
OworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCht
b2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Vjb3VudCwgYmFzZXZl
cnRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tl
ZCwgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEVuYWJsZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4KQordm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlVmVydGV4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEVuYWJsZWkiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lE
KGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVD
YXAsIHRhcmdldCksIGluZGV4KTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRC
YXNlVmVydGV4T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVz
LCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAg
ICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGluc3RhbmNlY291
bnQgPSAlZCwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQs
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUs
IHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGluc3RhbmNlY291bnQsCisgICAgICAgICAgYmFz
ZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUVuYWJsZWkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOworICAgICAgICBQ
cmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlw
ZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURy
YXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tl
ZCwgY291bnQsIHR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZl
cnRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmVuYWJsZWkodGFyZ2V0LCBpbmRleCk7CisgICAgICAgICAgICBjb250ZXh0LT5k
cmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFj
a2VkLCBpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEVuYWJsZWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGlu
ZGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVy
dGV4T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZl
cnRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdF
bGVtZW50c0luc3RhbmNlZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmlt
Y291bnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRW5kUXVlcnkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpKTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVu
dHNJbnN0YW5jZWRFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0g
JXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisg
ICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgcHJpbWNvdW50
ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNl
cywgcHJpbWNvdW50KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5kUXVlcnkoY29u
dGV4dCwgdGFyZ2V0UGFja2VkKSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUp
OworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkRVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGlj
ZXMsIHByaW1jb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldFBhY2tlZCk7CisgICAgICAgICAgICBj
b250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNr
ZWQsIGluZGljZXMsIHByaW1jb3VudCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShFbmRRdWVyeSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgaW5kaWNlcywgcHJpbWNvdW50KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRW5k
UXVlcnlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCkKK3Zv
aWQgR0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
RW5kUXVlcnlFWFQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29u
dGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0
LCB0YXJnZXQpKTsKKyAgICBFVkVOVCgiZ2xEcmF3UmFuZ2VFbGVtZW50cyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0x1aW50IHN0YXJ0ID0gJXUsIEdMdWlu
dCBlbmQgPSAldSwgR0xzaXplaSBjb3VudCA9ICVkLCAiCisgICAgICAgICAgIkdMZW51bSB0eXBl
ID0gJXMsIGNvbnN0IHZvaWQgKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlw
ZSwgbW9kZSksIHN0YXJ0LCBlbmQsIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5kUXVlcnlFWFQoY29u
dGV4dCwgdGFyZ2V0UGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0
YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZW5k
UXVlcnkodGFyZ2V0UGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSYW5nZUVsZW1l
bnRzKG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEVuZFF1ZXJ5RVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3UmFu
Z2VFbGVtZW50cywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQs
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBFbmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4KQordm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVtZW50c0Jh
c2VWZXJ0ZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEVu
ZFRyYW5zZm9ybUZlZWRiYWNrIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAg
RVZFTlQoImdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAldSwgR0x1aW50IGVuZCA9
ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIHR5cGUgPSAlcywg
Y29uc3Qgdm9pZCAqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4
ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgZW5kLCBjb3VudCwKKyAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50
cHRyX3QpaW5kaWNlcywgYmFzZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnRl
eHQpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdF
bGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
bW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywg
YmFzZXZlcnRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgICAgICBjb250
ZXh0LT5kcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShFbmRUcmFuc2Zvcm1GZWVkYmFjaywgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0K
IAotR0xzeW5jIEdMX0FQSUVOVFJZIEZlbmNlU3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKQordm9pZCBHTF9BUElFTlRS
WSBEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlj
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBiYXNldmVydGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZlbmNlU3luYyIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSBjb25kaXRpb24gPSAlcywgR0xiaXRmaWVsZCBmbGFncyA9ICVz
IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpT
eW5jQ29uZGl0aW9uLCBjb25kaXRpb24pLAotICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhH
TGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBmbGFncykuY19zdHIoKSk7CisgICAgRVZFTlQoImds
RHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gbW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAldSwgR0x1aW50IGVuZCA9ICV1LCBH
THNpemVpIGNvdW50ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qg
dm9pZCAqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4ID0gJWQi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBy
aW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgZW5kLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3Qp
aW5kaWNlcywgYmFzZXZlcnRleCk7CiAKLSAgICBHTHN5bmMgcmV0dXJuVmFsdWU7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRmVuY2VTeW5jKGNvbnRleHQsIGNvbmRpdGlvbiwgZmxhZ3MpKTsKKyAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+
KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3
UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgc3Rh
cnQsIGVuZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZh
bHVlID0gY29udGV4dC0+ZmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6RmVuY2VTeW5jLCBHTHN5bmM+KCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgc3Rh
cnQsIGVuZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRleCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShGZW5jZVN5bmMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb25k
aXRpb24sIGZsYWdzLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAg
ICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkZlbmNl
U3luYywgR0xzeW5jPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1lbnRz
QmFzZVZlcnRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBl
bmQsCisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJh
c2V2ZXJ0ZXgpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgRmluaXNoQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2b2lkIEdMX0FQ
SUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
ZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
aW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRmluaXNoIiwg
ImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsRHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9k
ZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAldSwgR0x1aW50IGVuZCA9ICV1LCBHTHNpemVpIGNvdW50
ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqaW5kaWNl
cyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUs
IG1vZGUpLCBzdGFydCwgZW5kLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgYmFz
ZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUZpbmlzaChjb250ZXh0KSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNC
YXNlVmVydGV4T0VTKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5maW5pc2goKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2Vk
LCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldmVydGV4KTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZpbmlzaCwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUywgaXND
YWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAg
ICAgICAgICAgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBGaW5pc2hGZW5jZU5WQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBmZW5jZSkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleGZPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRmluaXNoRmVuY2VOViIsICJjb250ZXh0
ID0gJWQsIEdMdWludCBmZW5jZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBmZW5jZSk7CisgICAgRVZF
TlQoImdsRHJhd1RleGZPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgeCA9
ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYsIEdMZmxvYXQgd2lkdGggPSAlZiwg
IgorICAgICAgICAgICJHTGZsb2F0IGhlaWdodCA9ICVmIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxGZW5jZU5WSUQ+KGZlbmNlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGaW5pc2hG
ZW5jZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhmT0VTKGNvbnRleHQsIHgsIHksIHosIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5maW5pc2hGZW5jZU5WKGZlbmNlUGFja2VkKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdUZXhmKHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRmluaXNoRmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGZlbmNlUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3VGV4Zk9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBGbHVzaENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQordm9pZCBH
TF9BUElFTlRSWSBEcmF3VGV4ZnZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29u
c3QgR0xmbG9hdCAqY29vcmRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZsdXNoIiwgImNvbnRleHQgPSAl
ZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsRHJhd1RleGZ2T0VTIiwgImNvbnRleHQg
PSAlZCwgY29uc3QgR0xmbG9hdCAqY29vcmRzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29u
dGV4dCksCisgICAgICAgICAgKHVpbnRwdHJfdCljb29yZHMpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGbHVzaChjb250ZXh0KSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhmdk9F
Uyhjb250ZXh0LCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5mbHVzaCgpOworICAgICAgICAgICAgY29udGV4dC0+ZHJh
d1RleGZ2KGNvb3Jkcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGbHVzaCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdUZXhmdk9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3Jkcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCkKK3ZvaWQgR0xfQVBJRU5U
UlkKK0RyYXdUZXhpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHosIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xl
bnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIGxlbmd0
aCA9ICVsbHUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9u
Zz4obGVuZ3RoKSk7CisgICAgRVZFTlQoImdsRHJhd1RleGlPRVMiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTGludCB6ID0gJWQsIEdMaW50
IHdpZHRoID0gJWQsIEdMaW50IGhlaWdodCAiCisgICAgICAgICAgIj0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIG9mZnNldCwgbGVuZ3RoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4aU9FUyhjb250ZXh0LCB4LCB5LCB6LCB3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Zmx1c2hNYXBwZWRCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9m
ZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXhpKHgsIHksIHosIHdp
ZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRmx1c2hNYXBw
ZWRCdWZmZXJSYW5nZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0
LCBsZW5ndGgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdUZXhpT0VTLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCkK
K3ZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleGl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIGNvbnN0IEdMaW50ICpjb29yZHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRmx1c2hNYXBwZWRCdWZm
ZXJSYW5nZUVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVz
LCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIGxlbmd0aCA9ICVsbHUiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRh
cmdldEFSQiwgdGFyZ2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVuZ3RoKSk7Cisg
ICAgRVZFTlQoImdsRHJhd1RleGl2T0VTIiwgImNvbnRleHQgPSAlZCwgY29uc3QgR0xpbnQgKmNv
b3JkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgICh1aW50
cHRyX3QpY29vcmRzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGlu
Zz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4aXZPRVMoY29udGV4dCwgY29vcmRzKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Zmx1c2hN
YXBwZWRCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdUZXhpdihjb29yZHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleGl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
Y29vcmRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRm9nZkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCit2b2lkIEdMX0FQ
SUVOVFJZIERyYXdUZXhzT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgeCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNob3J0IHosCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZv
Z2YiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVm
IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpG
b2dQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbERyYXdUZXhzT0VTIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNob3J0IHggPSAlZCwgR0xzaG9ydCB5ID0gJWQs
IEdMc2hvcnQgeiA9ICVkLCBHTHNob3J0IHdpZHRoID0gJWQsICIKKyAgICAgICAgICAiR0xzaG9y
dCBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6LCB3aWR0aCwg
aGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRm9nZihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhzT0VTKGNv
bnRleHQsIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mb2dmKHBuYW1lLCBwYXJhbSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4cyh4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZvZ2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwbmFtZSwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdUZXhzT0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEZvZ2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4
c3ZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xzaG9ydCAqY29vcmRz
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEZvZ2Z2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0g
JXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGb2dQYXJhbWV0ZXIs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbERyYXdUZXhzdk9FUyIs
ICJjb250ZXh0ID0gJWQsIGNvbnN0IEdMc2hvcnQgKmNvb3JkcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgICh1aW50cHRyX3QpY29vcmRzKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9nZnYo
Y29udGV4dCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVEcmF3VGV4c3ZPRVMoY29udGV4dCwgY29vcmRzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Zm9nZnYocG5h
bWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4c3YoY29vcmRzKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZvZ2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleHN2T0VTLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgRm9neENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZml4
ZWQgcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXh4T0VTQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhl
ZCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHos
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgaGVpZ2h0
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEZvZ3giLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAl
cywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZvZ1BOYW1lLCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVO
VCgiZ2xEcmF3VGV4eE9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhlZCB4ID0g
MHglWCwgR0xmaXhlZCB5ID0gMHglWCwgR0xmaXhlZCB6ID0gMHglWCwgR0xmaXhlZCB3aWR0aCA9
ICIKKyAgICAgICAgICAiMHglWCwgR0xmaXhlZCBoZWlnaHQgPSAweCVYIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2d4KGNvbnRleHQsIHBu
YW1lLCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRHJhd1RleHhPRVMoY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdo
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmZvZ3gocG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh4
KHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoRm9neCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRHJhd1RleHhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB6LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRm9neHZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJh
bSkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleHh2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIGNvbnN0IEdMZml4ZWQgKmNvb3JkcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGb2d4diIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbSA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpGb2dQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtKTsKKyAgICBF
VkVOVCgiZ2xEcmF3VGV4eHZPRVMiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZpeGVkICpjb29y
ZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICAodWludHB0
cl90KWNvb3Jkcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUZvZ3h2KGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4eHZPRVMoY29udGV4dCwg
Y29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Zm9neHYocG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdUZXh4dihjb29yZHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRm9neHYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBU
VVJFKERyYXdUZXh4dk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3Jkcyk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyUGFyYW1ldGVyaUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhcmFtKQordm9pZCBHTF9BUElF
TlRSWSBFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVnbElt
YWdlT0VTIGltYWdlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyUGFyYW1ldGVyaSIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUg
PSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlT0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJn
ZXQpLCAodWludHB0cl90KWltYWdlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShjb250ZXh0
LCB0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VP
RVMoY29udGV4dCwgdGFyZ2V0LCBpbWFnZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyUGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT5lR0xJbWFnZVRhcmdldFJl
bmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbWFnZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclBhcmFtZXRlcmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0
YXJnZXQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRUdMSW1hZ2VUYXJn
ZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBp
bWFnZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2ht
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyKQordm9pZCBHTF9B
UElFTlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVnbEltYWdlT0VTIGltYWdlKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMZW51bSByZW5kZXJi
dWZmZXJ0YXJnZXQgPSAiCi0gICAgICAgICAgIiVzLCBHTHVpbnQgcmVuZGVyYnVmZmVyID0gJXUi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZy
YW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJidWZmZXJUYXJnZXQsIHJlbmRlcmJ1ZmZl
cnRhcmdldCksIHJlbmRlcmJ1ZmZlcik7CisgICAgRVZFTlQoImdsRUdMSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlZ2xJbWFnZU9FUyBpbWFnZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdl
dCksICh1aW50cHRyX3QpaW1hZ2UpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJl
bmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5k
ZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyUGFja2Vk
KSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1
cmUyRE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGltYWdlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXJQYWNrZWQp
OworICAgICAgICAgICAgY29udGV4dC0+ZUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQodGFyZ2V0UGFj
a2VkLCBpbWFnZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlclBh
Y2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGltYWdlKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSByZW5kZXJidWZmZXJ0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZW5kZXJidWZmZXIpCi17Ci0gICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHJlbmRl
cmJ1ZmZlcnRhcmdldCA9ICIKLSAgICAgICAgICAiJXMsIEdMdWludCByZW5kZXJidWZmZXIgPSAl
dSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgcmVuZGVyYnVm
ZmVydGFyZ2V0KSwgcmVuZGVyYnVmZmVyKTsKK3ZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjYXApCit7CisgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7CisgICAgRVZFTlQoImdsRW5h
YmxlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNhcCA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIGNhcCkpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBh
Y2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyT0VTKGNvbnRleHQsIHRhcmdldCwgYXR0YWNo
bWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZShjb250ZXh0LCBjYXApKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1
ZmZlclBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5lbmFibGUoY2FwKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyT0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyUGFja2VkKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShFbmFibGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjYXApOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCit2b2lkIEdMX0FQSUVO
VFJZIEVuYWJsZUNsaWVudFN0YXRlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBhcnJheSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmUiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAl
cywgR0x1aW50IHRleHR1cmUgPSAldSwgR0xpbnQgIgotICAgICAgICAgICJsZXZlbCA9ICVkIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFt
ZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwgdGV4dHVyZSwgbGV2ZWwp
OworICAgIEVWRU5UKCJnbEVuYWJsZUNsaWVudFN0YXRlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IGFycmF5ID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkVuYWJsZUNhcCwgYXJyYXkpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCA9IEZyb21HTDxDbGllbnRWZXJ0
ZXhBcnJheVR5cGU+KGFycmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlKGNv
bnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsKKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlQ2xpZW50
U3RhdGUoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCk7CisgICAgICAgICAgICBjb250ZXh0
LT5lbmFibGVDbGllbnRTdGF0ZShhcnJheVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgbGV2
ZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEVuYWJsZUNsaWVudFN0YXRlLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgYXJyYXlQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBG
cmFtZWJ1ZmZlclRleHR1cmUyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKQordm9pZCBHTF9BUElF
TlRSWSBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlMkQiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFj
aG1lbnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBHTHVpbnQgIgotICAgICAgICAgICJ0
ZXh0dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAot
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQsIGF0dGFjaG1lbnQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlVGFyZ2V0LCB0ZXh0YXJnZXQpLCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgRVZFTlQoImds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAl
dSIsIENJRChjb250ZXh0KSwgaW5kZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChj
b250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNr
ZWQsIGxldmVsKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250ZXh0LCBpbmRleCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0UGFja2Vk
LCB0ZXh0dXJlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGV2ZWwpOworICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
aW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0
dXJlMkQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkLCBsZXZlbCk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBpbmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVm
ZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0ZXh0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzKQordm9pZCBHTF9BUElFTlRSWSBFbmFibGVp
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRh
Y2htZW50ID0gJXMsIEdMZW51bSB0ZXh0YXJnZXQgPSAlcywgR0x1aW50ICIKLSAgICAgICAgICAi
dGV4dHVyZSA9ICV1LCBHTGludCBsZXZlbCA9ICVkLCBHTHNpemVpIHNhbXBsZXMgPSAlZCIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVi
dWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRleHRhcmdldCksIHRleHR1cmUs
IGxldmVsLCBzYW1wbGVzKTsKKyAgICBFVkVOVCgiZ2xFbmFibGVpIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBp
bmRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZSh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgdGV4dHVyZSwgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXMpOworICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxl
aSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1l
YnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0LCB0ZXh0dXJl
LCBsZXZlbCwgc2FtcGxlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRW5hYmxlaSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBGcmFtZWJ1ZmZlclRleHR1cmUyRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsKQordm9pZCBHTF9BUElFTlRSWSBFbmFibGVpRVhUQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xl
bnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gdGV4dGFyZ2V0
ID0gJXMsIEdMdWludCAiCi0gICAgICAgICAgInRleHR1cmUgPSAldSwgR0xpbnQgbGV2ZWwgPSAl
ZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRleHRhcmdldCksIHRl
eHR1cmUsIGxldmVsKTsKKyAgICBFVkVOVCgiZ2xFbmFibGVpRVhUIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBp
bmRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRh
cmdldCk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJET0VTKGNvbnRleHQsIHRhcmdldCwg
YXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUVuYWJsZWlFWFQoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOworICAgICAg
ICAgICAgY29udGV4dC0+ZW5hYmxlaSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyVGV4dHVyZTJET0VTLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdl
dFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEVu
YWJsZWlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlM0RPRVNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCkKK3ZvaWQgR0xfQVBJRU5UUlkg
RW5hYmxlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFj
aG1lbnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBHTHVpbnQgIgotICAgICAgICAgICJ0
ZXh0dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHpvZmZzZXQgPSAlZCIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZm
ZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRleHRhcmdldCksIHRleHR1cmUsIGxl
dmVsLCB6b2Zmc2V0KTsKKyAgICBFVkVOVCgiZ2xFbmFibGVpT0VTIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBp
bmRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRh
cmdldCk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMoY29udGV4dCwgdGFy
Z2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXRQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgem9mZnNldCkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmFibGVp
T0VTKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUzRCh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b2Zmc2V0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVuYWJsZWkodGFyZ2V0LCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0YXJn
ZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCB6b2Zmc2V0KTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShFbmFibGVpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZUVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1
cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCkKK3ZvaWQgR0xfQVBJRU5UUlkgRW5kUXVlcnlDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRl
eHR1cmVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0x1aW50IHRleHR1cmUgPSAldSwgR0xpbnQgIgotICAg
ICAgICAgICJsZXZlbCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2ht
ZW50KSwgdGV4dHVyZSwgbGV2ZWwpOworICAgIEVWRU5UKCJnbEVuZFF1ZXJ5IiwgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZl
clRleHR1cmVFWFQoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBs
ZXZlbCkpOworICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZFF1ZXJ5KGNvbnRleHQsIHRhcmdldFBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZSh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQ
YWNrZWQsIGxldmVsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldFBhY2tl
ZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmVF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEVuZFF1ZXJ5LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXJDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGF5ZXIpCit2b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5RVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0x1aW50IHRleHR1cmUgPSAl
dSwgR0xpbnQgIgotICAgICAgICAgICJsZXZlbCA9ICVkLCBHTGludCBsYXllciA9ICVkIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1
ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwgdGV4dHVyZSwgbGV2ZWwsIGxh
eWVyKTsKKyAgICBFVkVOVCgiZ2xFbmRRdWVyeUVYVCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6UXVlcnlUYXJnZXQsIHRhcmdldCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmVQYWNrZWQsIGxldmVsLCBsYXllcikpOworICAgICAgICBRdWVyeVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVy
eVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVFbmRRdWVyeUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5m
cmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQs
IGxldmVsLCBsYXllcik7CisgICAgICAgICAgICBjb250ZXh0LT5lbmRRdWVyeSh0YXJnZXRQYWNr
ZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShFbmRRdWVyeUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZU11bHRp
dmlld09WUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGJhc2VWaWV3SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVZpZXdzKQordm9pZCBH
TF9BUElFTlRSWSBFbmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUiIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNo
bWVudCA9ICVzLCBHTHVpbnQgdGV4dHVyZSA9ICV1LCBHTGludCAiCi0gICAgICAgICAgImxldmVs
ID0gJWQsIEdMaW50IGJhc2VWaWV3SW5kZXggPSAlZCwgR0xzaXplaSBudW1WaWV3cyA9ICVkIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFt
ZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwgdGV4dHVyZSwgbGV2ZWws
Ci0gICAgICAgICAgYmFzZVZpZXdJbmRleCwgbnVtVmlld3MpOworICAgIEVWRU5UKCJnbEVuZFRy
YW5zZm9ybUZlZWRiYWNrIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1
ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0
dXJlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldmVsLCBiYXNlVmlld0luZGV4LCBudW1WaWV3cykpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3KHRhcmdldCwgYXR0YWNobWVudCwgdGV4
dHVyZVBhY2tlZCwgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZVZpZXdJbmRleCwgbnVtVmlld3MpOworICAgICAgICAgICAgY29udGV4
dC0+ZW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2Vk
LCBsZXZlbCwgYmFzZVZpZXdJbmRleCwgbnVtVmlld3MpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEVuZFRyYW5zZm9ybUZlZWRiYWNrLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEZyb250RmFjZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gbW9kZSkKK0dMc3luYyBHTF9BUElFTlRSWSBGZW5jZVN5bmNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xGcm9udEZhY2UiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVz
IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpG
cm9udEZhY2VEaXJlY3Rpb24sIG1vZGUpKTsKKyAgICBFVkVOVCgiZ2xGZW5jZVN5bmMiLCAiY29u
dGV4dCA9ICVkLCBHTGVudW0gY29uZGl0aW9uID0gJXMsIEdMYml0ZmllbGQgZmxhZ3MgPSAlcyIs
IENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3lu
Y0NvbmRpdGlvbiwgY29uZGl0aW9uKSwKKyAgICAgICAgICBHTGJpdGZpZWxkVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZmxhZ3MpLmNfc3RyKCkpOwogCisgICAgR0xzeW5jIHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRnJvbnRGYWNlKGNvbnRleHQsIG1vZGUpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZlbmNlU3luYyhjb250ZXh0
LCBjb25kaXRpb24sIGZsYWdzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOworICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBjb250ZXh0LT5mZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcm9udEZhY2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBtb2RlKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpGZW5jZVN5bmMsIEdMc3luYz4o
KTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEZlbmNlU3luYywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGNvbmRpdGlvbiwgZmxhZ3MsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6RmVuY2VTeW5jLCBHTHN5bmM+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBGcnVzdHVtZkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCBmKQordm9pZCBHTF9BUElFTlRSWSBGaW5pc2hDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGcnVzdHVtZiIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBsID0gJWYsIEdMZmxvYXQgciA9ICVmLCBH
TGZsb2F0IGIgPSAlZiwgR0xmbG9hdCB0ID0gJWYsIEdMZmxvYXQgbiAiCi0gICAgICAgICAgIj0g
JWYsIEdMZmxvYXQgZiA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGwsIHIsIGIsIHQs
IG4sIGYpOworICAgIEVWRU5UKCJnbEZpbmlzaCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4
dCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRnJ1c3R1bWYoY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGaW5pc2goY29u
dGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmZydXN0dW1mKGwsIHIsIGIsIHQsIG4sIGYpOworICAgICAgICAgICAgY29udGV4
dC0+ZmluaXNoKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcnVzdHVtZiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEZpbmlzaCwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBGcnVzdHVteENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmaXhlZCBiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZpeGVkIHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZml4ZWQgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
aXhlZCBmKQordm9pZCBHTF9BUElFTlRSWSBGaW5pc2hGZW5jZU5WQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBmZW5jZSkKIHsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGcnVzdHVteCIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBsID0gMHglWCwgR0xmaXhlZCByID0gMHgl
WCwgR0xmaXhlZCBiID0gMHglWCwgR0xmaXhlZCB0ID0gMHglWCwgIgotICAgICAgICAgICJHTGZp
eGVkIG4gPSAweCVYLCBHTGZpeGVkIGYgPSAweCVYIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IGwsIHIsIGIsIHQsIG4sIGYpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbEZpbmlzaEZlbmNlTlYiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0KSwgZmVuY2UpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGZW5j
ZU5WSUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxGZW5jZU5WSUQ+KGZlbmNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZydXN0dW14KGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYp
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRmlu
aXNoRmVuY2VOVihjb250ZXh0LCBmZW5jZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZydXN0dW14KGwsIHIsIGIsIHQs
IG4sIGYpOworICAgICAgICAgICAgY29udGV4dC0+ZmluaXNoRmVuY2VOVihmZW5jZVBhY2tlZCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGcnVzdHVteCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZpbmlz
aEZlbmNlTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmZW5jZVBhY2tlZCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEdlbkJ1ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZlcnMpCit2b2lkIEdMX0FQSUVOVFJZIEZsdXNoQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuQnVmZmVycyIs
ICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmJ1ZmZlcnMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWJ1ZmZl
cnMpOworICAgIEVWRU5UKCJnbEZsdXNoIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlbkJ1ZmZlcnMo
Y29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVGbHVzaChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2VuQnVmZmVycyhuLCBidWZmZXJz
UGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZW5CdWZmZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgYnVm
ZmVyc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmx1c2gsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuRmVuY2VzTlZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNlcykKK3ZvaWQg
R0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdlbkZlbmNlc05WIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWlu
dCAqZmVuY2VzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
biwgKHVpbnRwdHJfdClmZW5jZXMpOworICAgIEVWRU5UKCJnbEZsdXNoTWFwcGVkQnVmZmVyUmFu
Z2UiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnRw
dHIgb2Zmc2V0ID0gJWxsdSwgR0xzaXplaXB0ciBsZW5ndGggPSAlbGx1IiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIs
IHRhcmdldCksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZz
ZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxlbmd0aCkpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIEZlbmNlTlZJRCAqZmVuY2VzUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQgKj4oZmVuY2VzKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5GZW5jZXNOVihjb250ZXh0LCBu
LCBmZW5jZXNQYWNrZWQpKTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRmx1
c2hNYXBwZWRCdWZmZXJSYW5nZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3Ro
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+Z2VuRmVuY2VzTlYobiwgZmVuY2VzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UodGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5GZW5jZXNOViwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIG4sIGZlbmNlc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmx1c2hN
YXBwZWRCdWZmZXJSYW5nZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zm
c2V0LCBsZW5ndGgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5GcmFtZWJ1ZmZl
cnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmZyYW1l
YnVmZmVycykKK3ZvaWQgR0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWlwdHIgbGVuZ3RoKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdlbkZyYW1lYnVmZmVycyIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqZnJhbWVidWZmZXJz
ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRw
dHJfdClmcmFtZWJ1ZmZlcnMpOworICAgIEVWRU5UKCJnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VF
WFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnRw
dHIgb2Zmc2V0ID0gJWxsdSwgR0xzaXplaXB0ciBsZW5ndGggPSAlbGx1IiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIs
IHRhcmdldCksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZz
ZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxlbmd0aCkpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCAg
ICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJn
ZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlR2VuRnJhbWVidWZmZXJzKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBW
YWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBv
ZmZzZXQsIGxlbmd0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdlbkZyYW1lYnVmZmVycyhuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQp
OworICAgICAgICAgICAgY29udGV4dC0+Zmx1c2hNYXBwZWRCdWZmZXJSYW5nZSh0YXJnZXRQYWNr
ZWQsIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
bkZyYW1lYnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tl
ZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgIGxlbmd0aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlbkZyYW1lYnVm
ZmVyc09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAq
ZnJhbWVidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBGb2dmQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZW5GcmFtZWJ1ZmZlcnNPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9
ICVkLCBHTHVpbnQgKmZyYW1lYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRl
eHQpLCBuLAotICAgICAgICAgICh1aW50cHRyX3QpZnJhbWVidWZmZXJzKTsKKyAgICBFVkVOVCgi
Z2xGb2dmIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0g
PSAlZiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6Rm9nUGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgPSBG
cm9tR0w8RnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdlbkZyYW1lYnVmZmVyc09FUyhjb250ZXh0LCBuLCBmcmFtZWJ1
ZmZlcnNQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRm9nZihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5GcmFtZWJ1ZmZlcnMobiwgZnJh
bWVidWZmZXJzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZvZ2YocG5hbWUsIHBhcmFt
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbkZyYW1lYnVmZmVyc09FUywg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRm9nZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbSk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlblByb2dyYW1QaXBlbGluZXNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcykKK3ZvaWQg
R0xfQVBJRU5UUlkgRm9nZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuUHJvZ3JhbVBp
cGVsaW5lcyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWlu
dCAqcGlwZWxpbmVzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAg
ICAgICAgKHVpbnRwdHJfdClwaXBlbGluZXMpOworICAgIEVWRU5UKCJnbEZvZ2Z2IiwgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpGb2dQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXNQ
YWNrZWQgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblBy
b2dyYW1QaXBlbGluZXMoY29udGV4dCwgbiwgcGlwZWxpbmVzUGFja2VkKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZvZ2Z2KGNvbnRleHQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZW5Qcm9ncmFtUGlwZWxpbmVzKG4sIHBpcGVsaW5lc1BhY2tlZCk7CisgICAg
ICAgICAgICBjb250ZXh0LT5mb2dmdihwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdlblByb2dyYW1QaXBlbGluZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBuLCBwaXBlbGluZXNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZvZ2Z2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIEdlblF1ZXJpZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBu
LCBHTHVpbnQgKmlkcykKK3ZvaWQgR0xfQVBJRU5UUlkgRm9neENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
R2VuUXVlcmllcyIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmlkcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRy
X3QpaWRzKTsKKyAgICBFVkVOVCgiZ2xGb2d4IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGb2dQTmFtZSwgcG5hbWUpLCBwYXJhbSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblF1ZXJpZXMoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZvZ3goY29udGV4
dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+Z2VuUXVlcmllcyhuLCBpZHNQYWNrZWQpOworICAgICAgICAg
ICAgY29udGV4dC0+Zm9neChwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoR2VuUXVlcmllcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRm9neCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1l
LCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlblF1ZXJpZXNFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKK3ZvaWQg
R0xfQVBJRU5UUlkgRm9neHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5RdWVyaWVzRVhU
IiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqaWRzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClpZHMpOwor
ICAgIEVWRU5UKCJnbEZvZ3h2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIGNv
bnN0IEdMZml4ZWQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZvZ1BOYW1lLCBwbmFtZSksICh1
aW50cHRyX3QpcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5SUQg
Kmlkc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEICo+
KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2VuUXVlcmllc0VYVChjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9neHYoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+Z2VuUXVlcmllcyhuLCBpZHNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Zm9neHYo
cG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblF1ZXJp
ZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEZvZ3h2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuUmVuZGVyYnVmZmVyc0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycykKK3ZvaWQg
R0xfQVBJRU5UUlkgRnJhbWVidWZmZXJQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuUmVu
ZGVyYnVmZmVycyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdM
dWludCAqcmVuZGVyYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAot
ICAgICAgICAgIG4sICh1aW50cHRyX3QpcmVuZGVyYnVmZmVycyk7CisgICAgRVZFTlQoImdsRnJh
bWVidWZmZXJQYXJhbWV0ZXJpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVkIiwgQ0lEKGNvbnRl
eHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRh
cmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJh
bWVidWZmZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCAgICAgICAg
ICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVycyhjb250ZXh0LCBuLCBy
ZW5kZXJidWZmZXJzUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShjb250ZXh0LCB0YXJnZXQs
IHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdlblJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVyc1BhY2tl
ZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBw
bmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUmVuZGVy
YnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyUGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgR2VuUmVuZGVyYnVmZmVyc09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycykKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZW5kZXJidWZm
ZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuUmVuZGVyYnVmZmVyc09FUyIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqcmVuZGVyYnVmZmVycyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIG4sICh1aW50cHRyX3QpcmVu
ZGVyYnVmZmVycyk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1l
bnQgPSAlcywgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCA9ICIKKyAgICAgICAgICAiJXMsIEdM
dWludCByZW5kZXJidWZmZXIgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0
YWNobWVudCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1
ZmZlclRhcmdldCwgcmVuZGVyYnVmZmVydGFyZ2V0KSwgcmVuZGVyYnVmZmVyKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tl
ZCAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVyc09FUyhj
b250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklE
IHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dCwgdGFyZ2V0
LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5SZW5kZXJi
dWZmZXJzKG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJi
dWZmZXJQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUmVuZGVy
YnVmZmVyc09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAg
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyUGFja2VkKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgR2VuU2FtcGxlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xzaXplaSBjb3VudCwgR0x1aW50ICpzYW1wbGVycykKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCByZW5kZXJidWZmZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuU2FtcGxlcnMiLCAiY29udGV4
dCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMdWludCAqc2FtcGxlcnMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBjb3VudCwgKHVpbnRwdHJfdClzYW1w
bGVycyk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQg
PSAlcywgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCA9ICIKKyAgICAgICAgICAiJXMsIEdMdWlu
dCByZW5kZXJidWZmZXIgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNo
bWVudCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZl
clRhcmdldCwgcmVuZGVyYnVmZmVydGFyZ2V0KSwgcmVuZGVyYnVmZmVyKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgKnNhbXBsZXJzUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEICo+KHNhbXBsZXJzKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9
IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblNhbXBsZXJzKGNvbnRl
eHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyT0VTKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVm
ZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+Z2VuU2FtcGxlcnMoY291bnQsIHNhbXBsZXJzUGFja2VkKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVu
dCwgcmVuZGVyYnVmZmVydGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVuZGVyYnVmZmVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdlblNhbXBsZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291bnQsIHNhbXBs
ZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ck9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlclBhY2tlZCk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlblNlbWFwaG9yZXNFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKnNlbWFwaG9yZXMpCit2b2lkIEdM
X0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5TZW1h
cGhvcmVzRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1
aW50ICpzZW1hcGhvcmVzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0g
ICAgICAgICAgKHVpbnRwdHJfdClzZW1hcGhvcmVzKTsKKyAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZl
clRleHR1cmUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0x1aW50IHRleHR1cmUgPSAldSwgR0xpbnQgIgorICAg
ICAgICAgICJsZXZlbCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2ht
ZW50KSwgdGV4dHVyZSwgbGV2ZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNl
bWFwaG9yZUlEICpzZW1hcGhvcmVzUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1h
cGhvcmVJRCAqPihzZW1hcGhvcmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5TZW1hcGhvcmVzRVhUKGNvbnRleHQs
IG4sIHNlbWFwaG9yZXNQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUoY29udGV4
dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdlblNlbWFw
aG9yZXMobiwgc2VtYXBob3Jlc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5TZW1hcGhvcmVzRVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoRnJhbWVidWZmZXJUZXh0dXJlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0dXJlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxldmVsKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuVGV4dHVyZXNDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKQordm9pZCBHTF9BUElFTlRS
WSBGcmFtZWJ1ZmZlclRleHR1cmUyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdlblRleHR1cmVzIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWlu
dCAqdGV4dHVyZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBuLCAodWludHB0cl90KXRleHR1cmVzKTsKKyAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVu
dW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gdGV4dGFyZ2V0ID0gJXMsIEdMdWludCAiCisgICAg
ICAgICAgInRleHR1cmUgPSAldSwgR0xpbnQgbGV2ZWwgPSAlZCIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRh
cmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVy
QXR0YWNobWVudCwgYXR0YWNobWVudCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVUYXJnZXQsIHRleHRhcmdldCksIHRleHR1cmUsIGxldmVsKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlSUQgKnRleHR1cmVzUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEICo+KHRleHR1cmVzKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5UZXh0dXJlcyhjb250
ZXh0LCBuLCB0ZXh0dXJlc1BhY2tlZCkpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
ZXh0YXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRl
eHR1cmUyRChjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0YXJnZXRQYWNrZWQsIHRl
eHR1cmVQYWNrZWQsIGxldmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Z2VuVGV4dHVyZXMobiwgdGV4dHVyZXNQYWNrZWQpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2ht
ZW50LCB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZW5UZXh0dXJlcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHRleHR1cmVzUGFj
a2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUyRCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgR2VuVHJhbnNmb3JtRmVlZGJhY2tzQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1l
YnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0ZXh0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdlblRy
YW5zZm9ybUZlZWRiYWNrcyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0g
JWQsIEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0g
ICAgICAgICAgKHVpbnRwdHJfdClpZHMpOworICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJETXVsdGlzYW1wbGVFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBH
THVpbnQgIgorICAgICAgICAgICJ0ZXh0dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQsIEdMc2l6
ZWkgc2FtcGxlcyA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGV4dGFyZ2V0KSwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVkYmFja0lEICo+KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuVHJhbnNmb3JtRmVlZGJhY2tzKGNv
bnRleHQsIG4sIGlkc1BhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1l
bnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5UcmFuc2Zvcm1G
ZWVkYmFja3MobiwgaWRzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVy
VGV4dHVyZTJETXVsdGlzYW1wbGUodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1
cmUsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblRy
YW5zZm9ybUZlZWRiYWNrcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsLCBzYW1wbGVzKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgR2VuVmVydGV4QXJyYXlzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1l
YnVmZmVyVGV4dHVyZTJET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsR2VuVmVydGV4QXJyYXlzIiwgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBuID0gJWQsIEdMdWludCAqYXJyYXlzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClhcnJheXMpOworICAgIEVWRU5UKCJnbEZyYW1l
YnVmZmVyVGV4dHVyZTJET0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMZW51bSB0ZXh0YXJnZXQgPSAlcywg
R0x1aW50ICIKKyAgICAgICAgICAidGV4dHVyZSA9ICV1LCBHTGludCBsZXZlbCA9ICVkIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1
ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGV4dGFyZ2V0KSwgdGV4dHVyZSwg
bGV2ZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgKmFy
cmF5c1BhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFy
cmF5cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2VuVmVydGV4QXJyYXlzKGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCkpOworICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRl
eHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyhjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2VuVmVydGV4
QXJyYXlzKG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZl
clRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblZlcnRleEFycmF5cywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RnJhbWVidWZmZXJUZXh0dXJlMkRPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0
dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJl
UGFja2VkLCBsZXZlbCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlblZlcnRleEFy
cmF5c09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAq
YXJyYXlzKQordm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmUzRE9FU0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRl
eHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEdlblZlcnRleEFycmF5c09FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBuID0gJWQsIEdMdWludCAqYXJyYXlzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClhcnJheXMpOworICAgIEVWRU5UKCJnbEZyYW1l
YnVmZmVyVGV4dHVyZTNET0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMZW51bSB0ZXh0YXJnZXQgPSAlcywg
R0x1aW50ICIKKyAgICAgICAgICAidGV4dHVyZSA9ICV1LCBHTGludCBsZXZlbCA9ICVkLCBHTGlu
dCB6b2Zmc2V0ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQp
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0
ZXh0YXJnZXQpLCB0ZXh0dXJlLCBsZXZlbCwgem9mZnNldCk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7CisgICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMoY29udGV4dCwg
biwgYXJyYXlzUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMoY29udGV4
dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXRQYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgem9mZnNl
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdlblZlcnRleEFycmF5cyhuLCBhcnJheXNQYWNrZWQpOworICAgICAgICAgICAgY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlM0QodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXRQ
YWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgem9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZW5WZXJ0ZXhBcnJheXNPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBhcnJheXNQYWNr
ZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyVGV4dHVyZTNET0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAg
ICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHpvZmZzZXQpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5lcmF0ZU1pcG1hcENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KQordm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZl
clRleHR1cmVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuZXJhdGVNaXBt
YXAiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCkpOworICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZUVYVCIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBH
THVpbnQgdGV4dHVyZSA9ICV1LCBHTGludCAiCisgICAgICAgICAgImxldmVsID0gJWQiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVm
ZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdlbmVyYXRlTWlwbWFwKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOworICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVm
ZmVyVGV4dHVyZUVYVChjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQs
IGxldmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0UGFja2VkKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZSh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNr
ZWQsIGxldmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbmVyYXRlTWlw
bWFwLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXQsIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwgbGV2
ZWwpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5lcmF0ZU1pcG1hcE9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KQordm9pZCBHTF9BUElFTlRS
WSBGcmFtZWJ1ZmZlclRleHR1cmVMYXllckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsYXll
cikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5lcmF0ZU1pcG1hcE9FUyIsICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSk7CisgICAgRVZFTlQoImdsRnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0x1aW50IHRleHR1cmUgPSAldSwg
R0xpbnQgIgorICAgICAgICAgICJsZXZlbCA9ICVkLCBHTGludCBsYXllciA9ICVkIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZl
clRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwgdGV4dHVyZSwgbGV2ZWwsIGxheWVy
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuZXJhdGVN
aXBtYXBPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnRleHQsIHRhcmdldCwgYXR0YWNo
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmVQYWNrZWQsIGxldmVsLCBsYXllcikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdlbmVyYXRlTWlwbWFw
KHRhcmdldFBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmVM
YXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCBsYXllcik7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5lcmF0ZU1pcG1hcE9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFj
aG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVy
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlQXR0cmliQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQordm9pZCBH
TF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNlVmlld0lu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1WaWV3cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRBY3RpdmVBdHRy
aWIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWlu
dCBpbmRleCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAg
IipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgKnNpemUgPSAweCUwMTYiIFBSSXhQ
VFIKLSAgICAgICAgICAiLCBHTGVudW0gKnR5cGUgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFy
ICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgaW5kZXgsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNpemUs
Ci0gICAgICAgICAgKHVpbnRwdHJfdCl0eXBlLCAodWludHB0cl90KW5hbWUpOworICAgIEVWRU5U
KCJnbEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUiIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTHVpbnQg
dGV4dHVyZSA9ICV1LCBHTGludCAiCisgICAgICAgICAgImxldmVsID0gJWQsIEdMaW50IGJhc2VW
aWV3SW5kZXggPSAlZCwgR0xzaXplaSBudW1WaWV3cyA9ICVkIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFy
Z2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJB
dHRhY2htZW50LCBhdHRhY2htZW50KSwgdGV4dHVyZSwgbGV2ZWwsCisgICAgICAgICAgYmFzZVZp
ZXdJbmRleCwgbnVtVmlld3MpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldEFjdGl2ZUF0dHJpYihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemUsIHR5cGUsIG5hbWUpKTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSKGNvbnRleHQs
IHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCwgYmFzZVZpZXdJbmRleCwgbnVt
Vmlld3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbVBhY2tlZCwgaW5kZXgsIGJ1ZlNpemUs
IGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmVNdWx0aXZpZXcodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlVmlld0luZGV4LCBudW1WaWV3cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRBY3RpdmVBdHRyaWIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBp
bmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgIHNpemUsIHR5cGUs
IG5hbWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmll
d09WUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgYmFzZVZpZXdJbmRleCwgbnVtVmll
d3MpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFt
ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgRnJvbnRGYWNlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSBtb2RlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVuaWZvcm0iLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCBpbmRleCA9
ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgIipsZW5ndGgg
PSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgKnNpemUgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAg
ICAgICAiLCBHTGVudW0gKnR5cGUgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICpuYW1lID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgaW5k
ZXgsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNpemUsCi0gICAgICAg
ICAgKHVpbnRwdHJfdCl0eXBlLCAodWludHB0cl90KW5hbWUpOworICAgIEVWRU5UKCJnbEZyb250
RmFjZSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyb250RmFjZURpcmVjdGlvbiwg
bW9kZSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwg
dHlwZSwgbmFtZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVGcm9udEZhY2UoY29udGV4dCwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbVBh
Y2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5mcm9udEZhY2UobW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZXRBY3RpdmVVbmlmb3JtLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICBzaXpl
LCB0eXBlLCBuYW1lKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcm9udEZhY2UsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBtb2RlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgRnJ1c3R1
bWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZikKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXggPSAldSwg
R0xzaXplaSBidWZTaXplID0gJWQsICIKLSAgICAgICAgICAiR0xzaXplaSAqbGVuZ3RoID0gMHgl
MDE2IiBQUkl4UFRSICIsIEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwKLSAgICAgICAgICAodWludHB0cl90KXVuaWZv
cm1CbG9ja05hbWUpOworICAgIEVWRU5UKCJnbEZydXN0dW1mIiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGZsb2F0IGwgPSAlZiwgR0xmbG9hdCByID0gJWYsIEdMZmxvYXQgYiA9ICVmLCBH
TGZsb2F0IHQgPSAlZiwgR0xmbG9hdCBuICIKKyAgICAgICAgICAiPSAlZiwgR0xmbG9hdCBmID0g
JWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbCwgciwgYiwgdCwgbiwgZik7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja0luZGV4LCBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHVu
aWZvcm1CbG9ja05hbWUpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRnJ1c3R1bWYoY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1
ZlNpemUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pZm9ybUJsb2NrTmFtZSk7CisgICAgICAgICAgICBjb250ZXh0LT5mcnVzdHVtZihs
LCByLCBiLCB0LCBuLCBmKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4LCBidWZTaXplLCBsZW5n
dGgsIHVuaWZvcm1CbG9ja05hbWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZydXN0dW1mLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZik7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgRnJ1c3R1bXhDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhl
ZCBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIG4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZml4ZWQgZikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCAiCi0g
ICAgICAgICAgIkdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VW5pZm9ybUJsb2NrUE5hbWUsIHBuYW1lKSwgKHVpbnRw
dHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEZydXN0dW14IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGZpeGVkIGwgPSAweCVYLCBHTGZpeGVkIHIgPSAweCVYLCBHTGZpeGVkIGIgPSAw
eCVYLCBHTGZpeGVkIHQgPSAweCVYLCAiCisgICAgICAgICAgIkdMZml4ZWQgbiA9IDB4JVgsIEdM
Zml4ZWQgZiA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbCwgciwgYiwgdCwgbiwg
Zik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVGcnVzdHVteChjb250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+ZnJ1c3R1bXgobCwgciwgYiwg
dCwgbiwgZik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRBY3RpdmVVbmlm
b3JtQmxvY2tpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEZydXN0dW14LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbCwgciwgYiwg
dCwgbiwgZik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1z
aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHVuaWZvcm1Db3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnVuaWZvcm1JbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBH
ZW5CdWZmZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50
ICpidWZmZXJzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVuaWZvcm1zaXYiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMc2l6ZWkgdW5pZm9ybUNv
dW50ID0gJWQsIGNvbnN0IEdMdWludCAiCi0gICAgICAgICAgIip1bmlmb3JtSW5kaWNlcyA9IDB4
JTAxNiIgUFJJeFBUUiAiLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3Jh
bSwgdW5pZm9ybUNvdW50LCAodWludHB0cl90KXVuaWZvcm1JbmRpY2VzLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpVbmlmb3JtUE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJf
dClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdlbkJ1ZmZlcnMiLCAiY29udGV4dCA9ICVkLCBHTHNp
emVpIG4gPSAlZCwgR0x1aW50ICpidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClidWZmZXJzKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3Jtc2l2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIHVuaWZvcm1Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUluZGljZXMsIHBuYW1lLCBwYXJhbXMpKTsK
KyAgICAgICAgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVySUQgKj4oYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5CdWZmZXJzKGNvbnRleHQs
IG4sIGJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRBY3RpdmVVbmlmb3Jtc2l2KHByb2dyYW1QYWNrZWQs
IHVuaWZvcm1Db3VudCwgdW5pZm9ybUluZGljZXMsIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2Vu
QnVmZmVycyhuLCBidWZmZXJzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldEFjdGl2ZVVuaWZvcm1zaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCB1bmlmb3JtQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUluZGljZXMs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbkJ1ZmZlcnMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBuLCBidWZmZXJzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgR2V0QXR0YWNoZWRTaGFkZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbWF4Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCAqc2hhZGVycykKLXsKLSAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAg
ICAgImdsR2V0QXR0YWNoZWRTaGFkZXJzIiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xzaXplaSBtYXhDb3VudCA9ICVkLCBHTHNpemVpICpjb3VudCA9IDB4
JTAxNiIgUFJJeFBUUgotICAgICAgICAiLCBHTHVpbnQgKnNoYWRlcnMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbWF4Q291bnQsICh1aW50cHRy
X3QpY291bnQsICh1aW50cHRyX3Qpc2hhZGVycyk7Cit2b2lkIEdMX0FQSUVOVFJZIEdlbkZlbmNl
c05WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICpmZW5j
ZXMpCit7CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7CisgICAgRVZFTlQoImdsR2VuRmVuY2VzTlYiLCAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgR0x1aW50ICpmZW5jZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWZlbmNlcyk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCAqc2hhZGVyc1BhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQgKj4oc2hhZGVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGZW5j
ZU5WSUQgKmZlbmNlc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxGZW5jZU5WSUQgKj4oZmVuY2VzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJz
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG1heENvdW50LCBjb3VudCwgc2hhZGVyc1BhY2tlZCkp
OworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5G
ZW5jZXNOVihjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRBdHRhY2hlZFNoYWRlcnMo
cHJvZ3JhbVBhY2tlZCwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzUGFja2VkKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmdlbkZlbmNlc05WKG4sIGZlbmNlc1BhY2tlZCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRBdHRhY2hlZFNoYWRlcnMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBtYXhDb3VudCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgc2hhZGVyc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuRmVuY2VzTlYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpOwogICAgIH0KIH0KIAotR0xpbnQg
R0xfQVBJRU5UUlkgR2V0QXR0cmliTG9jYXRpb25Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRSWSBHZW5GcmFtZWJ1ZmZlcnND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVm
ZmVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRBdHRyaWJMb2NhdGlvbiIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFyICpuYW1lID0gMHgl
MDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcHJvZ3JhbSwgKHVpbnRw
dHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xHZW5GcmFtZWJ1ZmZlcnMiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmZyYW1lYnVmZmVycyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3QpZnJh
bWVidWZmZXJzKTsKIAotICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21H
TDxGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRBdHRyaWJMb2NhdGlvbihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlbkZyYW1lYnVmZmVycyhjb250ZXh0LCBuLCBmcmFtZWJ1
ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1Q
YWNrZWQsIG5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0
QXR0cmliTG9jYXRpb24sIEdMaW50PigpOworICAgICAgICAgICAgY29udGV4dC0+Z2VuRnJhbWVi
dWZmZXJzKG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZXRBdHRyaWJMb2NhdGlvbiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIG5hbWUsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0QXR0
cmliTG9jYXRpb24sIEdMaW50PigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbkZyYW1lYnVm
ZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CiAgICAg
fQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRCb29s
ZWFuaV92Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuICpkYXRhKQordm9pZCBHTF9BUElF
TlRSWSBHZW5GcmFtZWJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xz
aXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImds
R2V0Qm9vbGVhbmlfdiIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cywgR0x1aW50IGluZGV4ID0gJXUsIEdMYm9vbGVhbiAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVm
ZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLCBpbmRleCwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVO
VCgiZ2xHZW5GcmFtZWJ1ZmZlcnNPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6
ZWkgbiA9ICVkLCBHTHVpbnQgKmZyYW1lYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lE
KGNvbnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3QpZnJhbWVidWZmZXJzKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdldEJvb2xlYW5pX3YoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSkpOwor
ICAgICAgICBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8RnJhbWVi
dWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnNPRVMoY29udGV4dCwgbiwgZnJh
bWVidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+Z2V0Qm9vbGVhbmlfdih0YXJnZXQsIGluZGV4LCBkYXRhKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmdlbkZyYW1lYnVmZmVycyhuLCBmcmFtZWJ1ZmZlcnNQYWNr
ZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0Qm9vbGVhbmlfdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEdlbkZyYW1lYnVmZmVyc09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZyYW1l
YnVmZmVyc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW52
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpk
YXRhKQordm9pZCBHTF9BUElFTlRSWSBHZW5Qcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsR2V0Qm9vbGVhbnYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xi
b29sZWFuICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBOYW1lLCBwbmFtZSksICh1aW50cHRy
X3QpZGF0YSk7CisgICAgRVZFTlQoImdsR2VuUHJvZ3JhbVBpcGVsaW5lcyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqcGlwZWxpbmVzID0gMHglMDE2
IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClwaXBl
bGluZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRCb29sZWFudihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOworICAgICAgICBQ
cm9ncmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFja2VkID0gRnJvbUdMPFByb2dyYW1QaXBlbGlu
ZUlEICo+KHBpcGVsaW5lcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5Qcm9ncmFtUGlwZWxpbmVzKGNvbnRleHQsIG4sIHBpcGVs
aW5lc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCBkYXRhKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdlblByb2dyYW1QaXBlbGluZXMobiwgcGlwZWxpbmVzUGFja2VkKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEJvb2xlYW52LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcG5hbWUsIGRhdGEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblByb2dyYW1QaXBlbGlu
ZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1zKQordm9pZCBH
TF9BUElFTlRSWSBHZW5RdWVyaWVzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6
ZWkgbiwgR0x1aW50ICppZHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0QnVmZmVyUGFyYW1ldGVyaTY0
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgR0xpbnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVW
RU5UKCJnbEdlblF1ZXJpZXMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50
ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAo
dWludHB0cl90KWlkcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRp
bmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsK
KyAgICAgICAgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UXVlcnlJRCAqPihpZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5RdWVyaWVzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldEJ1ZmZlclBhcmFtZXRlcmk2NHYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdlblF1ZXJpZXMobiwgaWRzUGFja2VkKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEdlblF1ZXJpZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdM
X0FQSUVOVFJZIEdlblF1ZXJpZXNFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xz
aXplaSBuLCBHTHVpbnQgKmlkcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJp
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRB
UkIsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2VuUXVl
cmllc0VYVCIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmlkcyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3Qp
aWRzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0
ZXJpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgUXVl
cnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UXVlcnlJRCAqPihpZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuUXVlcmllc0VYVChjb250ZXh0LCBuLCBpZHNQYWNrZWQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+Z2VuUXVlcmllcyhuLCBpZHNQYWNrZWQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0QnVmZmVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEdlblF1ZXJpZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQb2ludGVydkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZ
IEdlblJlbmRlcmJ1ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBu
LCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0QnVmZmVyUG9pbnRl
cnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVt
IHBuYW1lID0gJXMsIHZvaWQgKipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0
QVJCLCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdlblJl
bmRlcmJ1ZmZlcnMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBH
THVpbnQgKnJlbmRlcmJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBuLCAodWludHB0cl90KXJlbmRlcmJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVy
c1BhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVy
YnVmZmVycyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0QnVmZmVyUG9p
bnRlcnYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmdlblJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRCdWZmZXJQb2ludGVydiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
R2VuUmVuZGVyYnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQ
YWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQb2ludGVydk9F
U0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMp
Cit2b2lkIEdMX0FQSUVOVFJZIEdlblJlbmRlcmJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsR2V0QnVmZmVyUG9pbnRlcnZPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIHZvaWQgKipwYXJhbXMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bXMpOworICAgIEVWRU5UKCJnbEdlblJlbmRlcmJ1ZmZlcnNPRVMiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBuLCAodWludHB0cl90KXJlbmRl
cmJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBv
aW50ZXJ2T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAg
ICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZm
ZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVyc09FUyhjb250ZXh0LCBuLCByZW5k
ZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+Z2V0QnVmZmVyUG9pbnRlcnYodGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblJlbmRlcmJ1ZmZlcnMobiwgcmVu
ZGVyYnVmZmVyc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRC
dWZmZXJQb2ludGVydk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUmVuZGVyYnVmZmVyc09FUywg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBHZXRDbGlwUGxhbmVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZW51bSBwbGFuZSwgR0xmbG9hdCAqZXF1YXRpb24pCit2b2lkIEdMX0FQSUVOVFJZ
IEdlblNhbXBsZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgY291bnQs
IEdMdWludCAqc2FtcGxlcnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0Q2xpcFBsYW5lZiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBsYW5lID0gJXMsIEdMZmxvYXQgKmVxdWF0aW9u
ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkNsaXBQbGFuZU5hbWUsIHBsYW5lKSwgKHVpbnRwdHJfdCllcXVh
dGlvbik7CisgICAgRVZFTlQoImdsR2VuU2FtcGxlcnMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIEdMdWludCAqc2FtcGxlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBjb3VudCwgKHVpbnRwdHJfdClzYW1wbGVycyk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBs
ZXJJRCAqc2FtcGxlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNhbXBsZXJJRCAqPihzYW1wbGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRDbGlwUGxhbmVmKGNvbnRleHQsIHBsYW5lLCBl
cXVhdGlvbikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZW5TYW1wbGVycyhjb250ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNrZWQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRD
bGlwUGxhbmVmKHBsYW5lLCBlcXVhdGlvbik7CisgICAgICAgICAgICBjb250ZXh0LT5nZW5TYW1w
bGVycyhjb3VudCwgc2FtcGxlcnNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0Q2xpcFBsYW5lZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBsYW5lLCBlcXVhdGlv
bik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuU2FtcGxlcnMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBHZXRDbGlwUGxhbmV4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbGFu
ZSwgR0xmaXhlZCAqZXF1YXRpb24pCit2b2lkIEdMX0FQSUVOVFJZIEdlblNlbWFwaG9yZXNFWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKnNlbWFwaG9y
ZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0Q2xpcFBsYW5leCIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHBsYW5lID0gJXMsIEdMZml4ZWQgKmVxdWF0aW9uID0gMHglMDE2IiBQUkl4
UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkNsaXBQbGFuZU5hbWUsIHBsYW5lKSwgKHVpbnRwdHJfdCllcXVhdGlvbik7CisgICAgRVZF
TlQoImdsR2VuU2VtYXBob3Jlc0VYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBuID0gJWQsIEdMdWludCAqc2VtYXBob3JlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNv
bnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3Qpc2VtYXBob3Jlcyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNlbWFwaG9y
ZUlEICpzZW1hcGhvcmVzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNl
bWFwaG9yZUlEICo+KHNlbWFwaG9yZXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Q2xpcFBsYW5leChjb250ZXh0LCBwbGFuZSwg
ZXF1YXRpb24pKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlR2VuU2VtYXBob3Jlc0VYVChjb250ZXh0LCBuLCBzZW1hcGhvcmVzUGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
Z2V0Q2xpcFBsYW5leChwbGFuZSwgZXF1YXRpb24pOworICAgICAgICAgICAgY29udGV4dC0+Z2Vu
U2VtYXBob3JlcyhuLCBzZW1hcGhvcmVzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldENsaXBQbGFuZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbGFuZSwgZXF1
YXRpb24pOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblNlbWFwaG9yZXNFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBuLCBzZW1hcGhvcmVzUGFja2VkKTsKICAgICB9CiB9CiAKLUdMdWludCBH
TF9BUElFTlRSWSBHZXREZWJ1Z01lc3NhZ2VMb2dDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSAqc291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc2V2ZXJp
dGllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xjaGFyICptZXNzYWdlTG9nKQordm9pZCBHTF9BUElFTlRSWSBHZW5UZXh0
dXJlc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqdGV4
dHVyZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0RGVidWdNZXNzYWdlTG9nIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgY291bnQgPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdM
ZW51bSAqc291cmNlcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSAqdHlw
ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIKLSAg
ICAgICAgICAiLCBHTGVudW0gKnNldmVyaXRpZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXpl
aSAqbGVuZ3RocyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMY2hhciAqbWVzc2Fn
ZUxvZyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGNvdW50
LCBidWZTaXplLCAodWludHB0cl90KXNvdXJjZXMsICh1aW50cHRyX3QpdHlwZXMsICh1aW50cHRy
X3QpaWRzLAotICAgICAgICAgICh1aW50cHRyX3Qpc2V2ZXJpdGllcywgKHVpbnRwdHJfdClsZW5n
dGhzLCAodWludHB0cl90KW1lc3NhZ2VMb2cpOworICAgIEVWRU5UKCJnbEdlblRleHR1cmVzIiwg
ImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqdGV4dHVyZXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KXRleHR1
cmVzKTsKIAotICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2coY29u
dGV4dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVu
Z3RocywgbWVzc2FnZUxvZykpOworICAgICAgICBUZXh0dXJlSUQgKnRleHR1cmVzUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQgKj4odGV4dHVyZXMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2VuVGV4dHVyZXMoY29udGV4dCwgbiwgdGV4dHVyZXNQYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmdldERlYnVnTWVzc2FnZUxvZyhjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsIGlk
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJu
VmFsdWU8RW50cnlQb2ludDo6R2V0RGVidWdNZXNzYWdlTG9nLCBHTHVpbnQ+KCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZW5UZXh0dXJlcyhuLCB0ZXh0dXJlc1BhY2tlZCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXREZWJ1Z01lc3NhZ2VMb2csIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsIGlkcywKLSAgICAgICAgICAg
ICAgICAgICAgICBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nLCByZXR1cm5WYWx1ZSk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldERlYnVnTWVzc2FnZUxvZywgR0x1aW50PigpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblRleHR1cmVzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
biwgdGV4dHVyZXNQYWNrZWQpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
LUdMdWludCBHTF9BUElFTlRSWSBHZXREZWJ1Z01lc3NhZ2VMb2dLSFJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc291cmNlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
ICp0eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50ICppZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSAqc2V2ZXJpdGllcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpt
ZXNzYWdlTG9nKQordm9pZCBHTF9BUElFTlRSWSBHZW5UcmFuc2Zvcm1GZWVkYmFja3NDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBjb3VudCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xlbnVtICpzb3VyY2Vz
ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xlbnVtICp0eXBlcyA9IDB4JTAxNiIg
UFJJeFBUUiAiLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdM
ZW51bSAqc2V2ZXJpdGllcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpICpsZW5ndGhzID0g
MHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xjaGFyICptZXNzYWdlTG9nID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgY291bnQsIGJ1ZlNpemUsICh1
aW50cHRyX3Qpc291cmNlcywgKHVpbnRwdHJfdCl0eXBlcywgKHVpbnRwdHJfdClpZHMsCi0gICAg
ICAgICAgKHVpbnRwdHJfdClzZXZlcml0aWVzLCAodWludHB0cl90KWxlbmd0aHMsICh1aW50cHRy
X3QpbWVzc2FnZUxvZyk7CisgICAgRVZFTlQoImdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICppZHMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAgICAgICAodWludHB0cl90KWlk
cyk7CiAKLSAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nS0hSKGNv
bnRleHQsIGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHMsIHNldmVyaXRpZXMs
IGxlbmd0aHMsIG1lc3NhZ2VMb2cpKTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRz
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJ
RCAqPihpZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2VuVHJhbnNmb3JtRmVlZGJhY2tzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
blZhbHVlID0gY29udGV4dC0+Z2V0RGVidWdNZXNzYWdlTG9nKGNvdW50LCBidWZTaXplLCBzb3Vy
Y2VzLCB0eXBlcywgaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZyk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1Z01lc3NhZ2VMb2dLSFIsIEdM
dWludD4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblRyYW5zZm9ybUZlZWRiYWNrcyhuLCBp
ZHNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RGVidWdNZXNz
YWdlTG9nS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMs
IHR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgIGlkcywgc2V2ZXJpdGllcywgbGVuZ3Rocywg
bWVzc2FnZUxvZywgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1
Z01lc3NhZ2VMb2dLSFIsIEdMdWludD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5UcmFu
c2Zvcm1GZWVkYmFja3MsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMZW51bSBHTF9BUElFTlRSWSBHZXRF
cnJvckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQordm9pZCBHTF9BUElFTlRSWSBHZW5W
ZXJ0ZXhBcnJheXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVp
bnQgKmFycmF5cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRFcnJvciIsICJjb250ZXh0ID0gJWQiLCBD
SUQoY29udGV4dCkpOworICAgIEVWRU5UKCJnbEdlblZlcnRleEFycmF5cyIsICJjb250ZXh0ID0g
JWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmFycmF5cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpYXJyYXlzKTsKIAotICAgIEdM
ZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldEVycm9yKGNvbnRleHQpKTsKKyAgICAgICAgVmVydGV4QXJy
YXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuVmVydGV4QXJyYXlzKGNvbnRleHQsIG4sIGFycmF5
c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0RXJyb3IoKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEVycm9yLCBHTGVudW0+KCk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZW5WZXJ0ZXhBcnJheXMobiwgYXJyYXlzUGFja2VkKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldEVycm9yLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcmV0dXJu
VmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRFcnJvciwgR0xlbnVtPigpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdlblZlcnRleEFycmF5cywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IG4sIGFycmF5c1BhY2tlZCk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBHZXRGZW5jZWl2TlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmZW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCit2b2lkIEdMX0FQSUVOVFJZIEdlblZlcnRleEFycmF5c09FU0NvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bEdldEZlbmNlaXZOViIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgZmVuY2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5U
KCJnbEdlblZlcnRleEFycmF5c09FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBuID0gJWQsIEdMdWludCAqYXJyYXlzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClhcnJheXMpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRGZW5jZWl2TlYoY29udGV4dCwgZmVuY2VQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpKTsKKyAgICAgICAgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuVmVydGV4
QXJyYXlzT0VTKGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEZlbmNlaXZOVihmZW5j
ZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZW5WZXJ0ZXhB
cnJheXMobiwgYXJyYXlzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldEZlbmNlaXZOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNlUGFja2VkLCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5WZXJ0ZXhBcnJheXNPRVMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBHZXRGaXhlZHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBu
YW1lLCBHTGZpeGVkICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdlbmVyYXRlTWlwbWFwQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsR2V0Rml4ZWR2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQg
KnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBh
cmFtcyk7CisgICAgRVZFTlQoImdsR2VuZXJhdGVNaXBtYXAiLCAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCkpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGaXhlZHYoY29udGV4
dCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdlbmVyYXRlTWlwbWFwKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEZpeGVkdihwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldFBh
Y2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGaXhlZHYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZW5lcmF0ZU1pcG1hcCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEZsb2F0dkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKmRhdGEpCit2b2lkIEdMX0FQSUVOVFJZIEdl
bmVyYXRlTWlwbWFwT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0RmxvYXR2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBu
YW1lID0gJXMsIEdMZmxvYXQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1l
KSwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVOVCgiZ2xHZW5lcmF0ZU1pcG1hcE9FUyIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldEZsb2F0dihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOworICAgICAgICBUZXh0dXJlVHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwT0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmdldEZsb2F0dihwbmFtZSwgZGF0YSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZW5lcmF0
ZU1pcG1hcCh0YXJnZXRQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0RmxvYXR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIGRhdGEpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEdlbmVyYXRlTWlwbWFwT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0UGFja2VkKTsKICAgICB9CiB9CiAKLUdMaW50IEdMX0FQSUVOVFJZIEdldEZyYWdEYXRhSW5k
ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFt
ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlQXR0cmliQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdl
dEZyYWdEYXRhSW5kZXhFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIGNvbnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNv
bnRleHQpLAotICAgICAgICAgIHByb2dyYW0sICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQo
ImdsR2V0QWN0aXZlQXR0cmliIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTHVpbnQgaW5kZXggPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6
ZWkgIgorICAgICAgICAgICIqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50ICpzaXpl
ID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVtICp0eXBlID0gMHglMDE2IiBQ
Ukl4UFRSICIsIEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGluZGV4LCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwg
KHVpbnRwdHJfdClzaXplLAorICAgICAgICAgICh1aW50cHRyX3QpdHlwZSwgKHVpbnRwdHJfdClu
YW1lKTsKIAotICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRGcmFnRGF0YUluZGV4RVhUKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5h
bWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlQXR0
cmliKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlw
ZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0RnJhZ0RhdGFJbmRleChwcm9ncmFtUGFja2Vk
LCBuYW1lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEZyYWdE
YXRhSW5kZXhFWFQsIEdMaW50PigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0QWN0aXZlQXR0
cmliKHByb2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5h
bWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RnJhZ0RhdGFJbmRleEVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUsIHJldHVyblZhbHVl
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RnJhZ0RhdGFJbmRleEVYVCwgR0xpbnQ+KCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0QWN0aXZlQXR0cmliLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICBzaXplLCB0eXBlLCBuYW1lKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCi1HTGludCBHTF9BUElFTlRSWSBHZXRGcmFnRGF0YUxvY2F0aW9uQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit2b2lkIEdMX0FQ
SUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldEZyYWdE
YXRhTG9jYXRpb24iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0g
JXUsIGNvbnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIHByb2dyYW0sICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsR2V0
QWN0aXZlVW5pZm9ybSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0g
PSAldSwgR0x1aW50IGluZGV4ID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICIK
KyAgICAgICAgICAiKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCAqc2l6ZSA9IDB4
JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMZW51bSAqdHlwZSA9IDB4JTAxNiIgUFJJeFBU
UiAiLCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50
cHRyX3Qpc2l6ZSwKKyAgICAgICAgICAodWludHB0cl90KXR5cGUsICh1aW50cHRyX3QpbmFtZSk7
CiAKLSAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0RnJhZ0RhdGFMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0o
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlwZSwg
bmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtUGFja2Vk
LCBuYW1lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEZyYWdE
YXRhTG9jYXRpb24sIEdMaW50PigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBu
YW1lKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZyYWdEYXRhTG9jYXRp
b24sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lLCByZXR1cm5WYWx1
ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEZyYWdEYXRhTG9jYXRpb24sIEdMaW50Pigp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFjdGl2ZVVuaWZvcm0sIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgIHNpemUsIHR5cGUsIG5hbWUpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2hhciAqdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xp
bnQgIgotICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFy
Z2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
Ci0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAl
ZCwgIgorICAgICAgICAgICJHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xj
aGFyICp1bmlmb3JtQmxvY2tOYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsICh1aW50cHRy
X3QpbGVuZ3RoLAorICAgICAgICAgICh1aW50cHRyX3QpdW5pZm9ybUJsb2NrTmFtZSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1C
bG9ja0luZGV4LCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsZW5ndGgsIHVuaWZvcm1CbG9ja05hbWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtUGFj
a2VkLCB1bmlmb3JtQmxvY2tJbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tOYW1lKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAg
ICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4LCBidWZTaXplLCBs
ZW5ndGgsIHVuaWZvcm1CbG9ja05hbWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMs
IEdMaW50ICIKLSAgICAgICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZl
clRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwKLSAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyTmFtZSwgcG5h
bWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dy
YW0gPSAldSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVz
LCAiCisgICAgICAgICAgIkdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VW5pZm9ybUJsb2NrUE5hbWUsIHBuYW1lKSwg
KHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXZPRVMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUJsb2Nr
SW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
QWN0aXZlVW5pZm9ybXNpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
dW5pZm9ybUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdW5pZm9ybUluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBF
VkVOVCgiZ2xHZXRBY3RpdmVVbmlmb3Jtc2l2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTHNpemVpIHVuaWZvcm1Db3VudCA9ICVkLCBjb25zdCBHTHVp
bnQgIgorICAgICAgICAgICIqdW5pZm9ybUluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xl
bnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAg
ICAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIHVuaWZvcm1Db3VudCwgKHVp
bnRwdHJfdCl1bmlmb3JtSW5kaWNlcywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VW5pZm9ybVBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1zaXYo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtSW5kaWNlcywgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3Jh
bVBhY2tlZCwgdW5pZm9ybUNvdW50LCB1bmlmb3JtSW5kaWNlcywgcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRBY3RpdmVVbmlmb3Jtc2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
dW5pZm9ybUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1JbmRpY2VzLCBwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLUdMZW51bSBHTF9BUElFTlRSWSBHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2b2lkIEdMX0FQSUVOVFJZ
IEdldEF0dGFjaGVkU2hhZGVyc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IG1heENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKnNoYWRlcnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0R3JhcGhpY3NS
ZXNldFN0YXR1cyIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAgIEVWRU5UKAor
ICAgICAgICAiZ2xHZXRBdHRhY2hlZFNoYWRlcnMiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTHNpemVpIG1heENvdW50ID0gJWQsIEdMc2l6ZWkgKmNvdW50
ID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIsIEdMdWludCAqc2hhZGVycyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBtYXhDb3VudCwgKHVp
bnRwdHJfdCljb3VudCwgKHVpbnRwdHJfdClzaGFkZXJzKTsKIAotICAgIEdMZW51bSByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXMoY29udGV4dCkpOworICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgKnNoYWRl
cnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQg
Kj4oc2hhZGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnNQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNv
bnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXMsIEdMZW51bT4oKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtUGFja2VkLCBtYXhDb3Vu
dCwgY291bnQsIHNoYWRlcnNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0R3JhcGhpY3NSZXNldFN0YXR1cywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJldHVyblZh
bHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXRE
ZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1cywgR0xl
bnVtPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEF0dGFjaGVkU2hhZGVycywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG1heENvdW50LCBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICBzaGFkZXJzUGFja2VkKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCi1HTGVudW0gR0xfQVBJRU5UUlkgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQorR0xpbnQgR0xfQVBJRU5UUlkgR2V0QXR0cmli
TG9jYXRpb25Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQiLCAiY29udGV4dCA9
ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBFVkVOVCgiZ2xHZXRBdHRyaWJMb2NhdGlvbiIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFy
ICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgcHJv
Z3JhbSwgKHVpbnRwdHJfdCluYW1lKTsKIAotICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKKyAgICBH
TGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzRVhUKGNvbnRleHQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0QXR0cmliTG9jYXRpb24oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1
cygpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlv
bihwcm9ncmFtUGFja2VkLCBuYW1lKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIEdMZW51bT4oKTsKKyAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEF0dHJp
YkxvY2F0aW9uLCBHTGludD4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5WYWx1
ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0QXR0cmliTG9jYXRpb24sIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lLCByZXR1cm5WYWx1ZSk7CiAgICAgfQogICAg
IGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIEdMZW51bT4oKTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0QXR0
cmliTG9jYXRpb24sIEdMaW50PigpOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcjY0aV92Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQ2NCAqZGF0YSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbmlfdkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqZGF0YSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRJbnRl
Z2VyNjRpX3YiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0x1aW50IGluZGV4ID0gJXUsIEdMaW50NjQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VHlwZUVu
dW0sIHRhcmdldCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOworICAgIEVWRU5UKAorICAgICAg
ICAiZ2xHZXRCb29sZWFuaV92IiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdl
dCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSwgR0xib29sZWFuICpkYXRhID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdl
cjY0aV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Qm9vbGVhbmlfdihjb250ZXh0LCB0
YXJnZXQsIGluZGV4LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcjY0aV92KHRhcmdldCwgaW5kZXgsIGRh
dGEpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0Qm9vbGVhbmlfdih0YXJnZXQsIGluZGV4LCBk
YXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEludGVnZXI2NGlfdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldEJvb2xlYW5pX3YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGlu
ZGV4LCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcjY0dkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEp
Cit2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW52Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldElu
dGVnZXI2NHYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQ2NCAqZGF0
YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICBFVkVOVCgiZ2xHZXRCb29sZWFudiIsICJjb250
ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGJvb2xlYW4gKmRhdGEgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCiAgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldEludGVnZXI2NHYoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Qm9vbGVhbnYoY29udGV4dCwgcG5hbWUsIGRh
dGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRJbnRlZ2VyNjR2KHBuYW1lLCBkYXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmdldEJvb2xlYW52KHBuYW1lLCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldEludGVnZXI2NHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0Qm9vbGVhbnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
bmFtZSwgZGF0YSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJpX3ZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqZGF0YSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50NjQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRJbnRlZ2VyaV92IiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRl
eCA9ICV1LCBHTGludCAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUeXBlRW51bSwgdGFyZ2V0KSwg
aW5kZXgsICh1aW50cHRyX3QpZGF0YSk7CisgICAgRVZFTlQoImdsR2V0QnVmZmVyUGFyYW1ldGVy
aTY0diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xpbnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAg
ICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2V0SW50ZWdlcmlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7
CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcmk2
NHYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcmlf
dih0YXJnZXQsIGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEJ1ZmZlclBh
cmFtZXRlcmk2NHYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldEludGVnZXJpX3YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0
YXJnZXQsIGluZGV4LCBkYXRhKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRCdWZmZXJQYXJh
bWV0ZXJpNjR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCAqZGF0YSkKK3ZvaWQgR0xf
QVBJRU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldEludGVnZXJ2
IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpkYXRhID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkdldFBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpZGF0YSk7CisgICAgRVZFTlQo
ImdsR2V0QnVmZmVyUGFyYW1ldGVyaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRJbnRlZ2Vydihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOworICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxC
dWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgZGF0YSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXRQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0SW50ZWdlcnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0QnVmZmVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRl
cm5hbGZvcm1hdGl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRC
dWZmZXJQb2ludGVydkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJh
bXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0SW50ZXJuYWxmb3JtYXRpdiIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAl
cywgR0xlbnVtIHBuYW1lID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSBidWZTaXplID0gJWQs
IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGlu
dGVybmFsZm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50
ZXJuYWxGb3JtYXRQTmFtZSwgcG5hbWUpLCBidWZTaXplLCAodWludHB0cl90KXBhcmFtcyk7Cisg
ICAgRVZFTlQoImdsR2V0QnVmZmVyUG9pbnRlcnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIHZvaWQgKipwYXJhbXMgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClw
YXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRJbnRlcm5hbGZvcm1hdGl2
KGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMp
KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZXJuYWxmb3Jt
YXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldEJ1ZmZlclBvaW50ZXJ2KHRhcmdldFBhY2tlZCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRJbnRlcm5hbGZv
cm1hdGl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShHZXRCdWZmZXJQb2ludGVydiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dExpZ2h0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbGlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
QnVmZmVyUG9pbnRlcnZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICoqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldExpZ2h0ZnYiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xm
bG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAotICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAo
dWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0QnVmZmVyUG9pbnRlcnZPRVMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIHZvaWQgKipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0
YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldExpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpKTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVm
ZmVyUG9pbnRlcnZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
Z2V0TGlnaHRmdihsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRCdWZmZXJQb2ludGVydih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0TGlnaHRmdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRCdWZmZXJQb2ludGVydk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldExpZ2h0
eHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbGlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0Q2xpcFBs
YW5lZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcGxhbmUsIEdMZmxvYXQg
KmVxdWF0aW9uKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldExpZ2h0eHYiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0
cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0Q2xpcFBsYW5lZiIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHBsYW5lID0gJXMsIEdMZmxvYXQgKmVxdWF0aW9uID0gMHglMDE2
IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkNsaXBQbGFuZU5hbWUsIHBsYW5lKSwgKHVpbnRwdHJfdCllcXVhdGlvbik7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TGlnaHR4dihjb250ZXh0LCBsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRDbGlwUGxhbmVmKGNvbnRleHQsIHBsYW5lLCBlcXVhdGlvbikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dExpZ2h0eHYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4
dC0+Z2V0Q2xpcFBsYW5lZihwbGFuZSwgZXF1YXRpb24pOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0TGlnaHR4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxpZ2h0LCBwbmFt
ZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRDbGlwUGxhbmVmLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgR2V0TWF0ZXJpYWxmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJh
bXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldENsaXBQbGFuZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHBsYW5lLCBHTGZpeGVkICplcXVhdGlvbikKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xHZXRNYXRlcmlhbGZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9
ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
Ok1hdGVyaWFsRmFjZSwgZmFjZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6Ok1hdGVyaWFsUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBF
VkVOVCgiZ2xHZXRDbGlwUGxhbmV4IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
cGxhbmUgPSAlcywgR0xmaXhlZCAqZXF1YXRpb24gPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChj
b250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q2xpcFBsYW5l
TmFtZSwgcGxhbmUpLCAodWludHB0cl90KWVxdWF0aW9uKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRNYXRlcmlhbGZ2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2Vk
LCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldENsaXBQbGFuZXgoY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
Z2V0TWF0ZXJpYWxmdihmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdldENsaXBQbGFuZXgocGxhbmUsIGVxdWF0aW9uKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldE1hdGVyaWFsZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWNl
LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRDbGlwUGxh
bmV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgR2V0TWF0ZXJpYWx4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
YWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVk
ICpwYXJhbXMpCitHTHVpbnQgR0xfQVBJRU5UUlkgR2V0RGVidWdNZXNzYWdlTG9nQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNvdXJjZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlw
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqaWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZykKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xHZXRNYXRlcmlhbHh2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gZmFjZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6Ok1hdGVyaWFsRmFjZSwgZmFjZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6Ok1hdGVyaWFsUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1z
KTsKKyAgICBFVkVOVCgiZ2xHZXREZWJ1Z01lc3NhZ2VMb2ciLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBjb3VudCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xlbnVtICpz
b3VyY2VzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVtICp0eXBlcyA9IDB4
JTAxNiIgUFJJeFBUUiAiLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAg
ICIsIEdMZW51bSAqc2V2ZXJpdGllcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpICpsZW5n
dGhzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xjaGFyICptZXNzYWdlTG9nID0g
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgY291bnQsIGJ1ZlNp
emUsICh1aW50cHRyX3Qpc291cmNlcywgKHVpbnRwdHJfdCl0eXBlcywgKHVpbnRwdHJfdClpZHMs
CisgICAgICAgICAgKHVpbnRwdHJfdClzZXZlcml0aWVzLCAodWludHB0cl90KWxlbmd0aHMsICh1
aW50cHRyX3QpbWVzc2FnZUxvZyk7CiAKKyAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE1hdGVyaWFseHYoY29udGV4dCwgZmFjZSwg
cG5hbWVQYWNrZWQsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2coY29udGV4dCwgY291bnQsIGJ1
ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxv
ZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldE1hdGVyaWFseHYoZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldERlYnVnTWVzc2FnZUxvZyhjb3VudCwgYnVm
U2l6ZSwgc291cmNlcywgdHlwZXMsIGlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0TWF0ZXJpYWx4diwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OkdldERlYnVnTWVzc2FnZUxvZywgR0x1aW50PigpOworICAgICAgICB9
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RGVidWdNZXNzYWdlTG9nLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCisgICAgICAgICAg
ICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZywgcmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1Z01lc3NhZ2VMb2csIEdMdWludD4oKTsK
ICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtZW1vcnlPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKK0dMdWludCBHTF9BUElFTlRSWSBHZXREZWJ1Z01lc3NhZ2VMb2dLSFJDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc291cmNlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc2V2ZXJpdGllcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFy
ICptZXNzYWdlTG9nKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xHZXRNZW1vcnlPYmplY3RQ
YXJhbWV0ZXJpdkVYVCIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlPYmpl
Y3QgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQ
VFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgbWVtb3J5T2JqZWN0LCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVtb3J5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUp
LAotICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0RGVidWdNZXNz
YWdlTG9nS0hSIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgY291bnQgPSAldSwg
R0xzaXplaSBidWZTaXplID0gJWQsIEdMZW51bSAqc291cmNlcyA9IDB4JTAxNiIgUFJJeFBUUgor
ICAgICAgICAgICIsIEdMZW51bSAqdHlwZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0x1aW50ICpp
ZHMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGVudW0gKnNldmVyaXRpZXMgPSAw
eCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSAqbGVuZ3RocyA9IDB4JTAxNiIgUFJJeFBUUgorICAg
ICAgICAgICIsIEdMY2hhciAqbWVzc2FnZUxvZyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIGNvdW50LCBidWZTaXplLCAodWludHB0cl90KXNvdXJjZXMsICh1
aW50cHRyX3QpdHlwZXMsICh1aW50cHRyX3QpaWRzLAorICAgICAgICAgICh1aW50cHRyX3Qpc2V2
ZXJpdGllcywgKHVpbnRwdHJfdClsZW5ndGhzLCAodWludHB0cl90KW1lc3NhZ2VMb2cpOwogCisg
ICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBNZW1v
cnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5
T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJp
dkVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RGVidWdN
ZXNzYWdlTG9nS0hSKGNvbnRleHQsIGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZHMsIHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRNZW1vcnlPYmplY3RQ
YXJhbWV0ZXJpdihtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXREZWJ1Z01lc3NhZ2VMb2coY291bnQsIGJ1ZlNp
emUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE1lbW9yeU9iamVjdFBhcmFtZXRl
cml2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWVtb3J5T2JqZWN0UGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OkdldERlYnVnTWVzc2FnZUxvZ0tIUiwgR0x1aW50PigpOworICAgICAgICB9CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0RGVidWdNZXNzYWdlTG9nS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLAorICAgICAgICAgICAgICAgICAgICAg
IGlkcywgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZywgcmV0dXJuVmFsdWUpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1Z01lc3NhZ2VMb2dLSFIsIEdMdWludD4oKTsKICAg
ICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldE11
bHRpc2FtcGxlZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbCkKK0dM
ZW51bSBHTF9BUElFTlRSWSBHZXRFcnJvckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbEdldE11bHRpc2FtcGxlZnYiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSwgR0xmbG9hdCAqdmFsID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCBpbmRleCwgKHVpbnRwdHJfdCl2
YWwpOworICAgIEVWRU5UKCJnbEdldEVycm9yIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0
KSk7CiAKKyAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TXVsdGlzYW1w
bGVmdihjb250ZXh0LCBwbmFtZSwgaW5kZXgsIHZhbCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRFcnJvcihjb250ZXh0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0TXVsdGlzYW1w
bGVmdihwbmFtZSwgaW5kZXgsIHZhbCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmdldEVycm9yKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRNdWx0
aXNhbXBsZWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIGluZGV4LCB2YWwpOworICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEVycm9yLCBHTGVudW0+KCk7CisgICAgICAgIH0K
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRFcnJvciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RXJyb3IsIEdMZW51bT4oKTsK
ICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dE9iamVjdExhYmVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAq
bGFiZWwpCit2b2lkIEdMX0FQSUVOVFJZIEdldEZlbmNlaXZOVkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGZlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRPYmplY3RMYWJlbCIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIGlkZW50aWZpZXIgPSAlcywgR0x1aW50IG5hbWUgPSAldSwg
R0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgIgotICAgICAgICAgICIqbGVuZ3RoID0gMHgl
MDE2IiBQUkl4UFRSICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBpZGVudGlmaWVyKSwgbmFtZSwgYnVmU2l6ZSwKLSAgICAgICAgICAodWludHB0cl90KWxl
bmd0aCwgKHVpbnRwdHJfdClsYWJlbCk7CisgICAgRVZFTlQoImdsR2V0RmVuY2Vpdk5WIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSwgR0xlbnVtIHBuYW1lID0g
JXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBmZW5jZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZUdldE9iamVjdExhYmVsKGNvbnRleHQsIGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgbGFiZWwpKTsKKyAgICAgICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEPihmZW5jZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZlbmNlaXZOVihj
b250ZXh0LCBmZW5jZVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldE9iamVjdExhYmVsKGlk
ZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICAgICAgY29u
dGV4dC0+Z2V0RmVuY2Vpdk5WKGZlbmNlUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE9iamVjdExhYmVsLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGZW5jZWl2TlYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBmZW5jZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEdldE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpCit2b2lkIEdMX0FQ
SUVOVFJZIEdldEZpeGVkdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5h
bWUsIEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRPYmplY3RMYWJlbEtIUiIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGlkZW50aWZpZXIgPSAlcywgR0x1aW50
IG5hbWUgPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgIgotICAgICAgICAgICIq
bGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBpZGVudGlmaWVyKSwgbmFtZSwgYnVmU2l6ZSwKLSAgICAgICAgICAo
dWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClsYWJlbCk7CisgICAgRVZFTlQoImdsR2V0Rml4
ZWR2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgKnBhcmFtcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpHZXRQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdExhYmVsS0hSKGNvbnRleHQsIGlk
ZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Rml4ZWR2KGNvbnRleHQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRPYmplY3RMYWJlbChpZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIGxhYmVsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEZpeGVkdihwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE9iamVjdExhYmVsS0hSLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRG
aXhlZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgR2V0T2JqZWN0UHRyTGFiZWxDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKK3ZvaWQgR0xfQVBJRU5UUlkg
R2V0RmxvYXR2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCAqZGF0YSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRPYmplY3RQdHJMYWJlbCIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQUkl4UFRSCi0gICAg
ICAgICAgIiwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAgICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgYnVmU2l6ZSwgKHVpbnRw
dHJfdClsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5UKCJnbEdldEZsb2F0diIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0ICpkYXRhID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkdldFBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmpl
Y3RQdHJMYWJlbChjb250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RmxvYXR2KGNvbnRleHQs
IHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0T2JqZWN0UHRyTGFiZWwocHRyLCBidWZTaXplLCBsZW5ndGgs
IGxhYmVsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgZGF0YSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRPYmplY3RQdHJMYWJlbCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0RmxvYXR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIGRhdGEp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRPYmplY3RQdHJMYWJlbEtIUkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNo
YXIgKmxhYmVsKQorR0xpbnQgR0xfQVBJRU5UUlkgR2V0RnJhZ0RhdGFJbmRleEVYVENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldE9iamVjdFB0ckxhYmVsS0hSIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBj
b25zdCB2b2lkICpwdHIgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNpemVpIGJ1
ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAg
IiwgR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksICh1aW50cHRyX3QpcHRyLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRw
dHJfdClsYWJlbCk7CisgICAgRVZFTlQoImdsR2V0RnJhZ0RhdGFJbmRleEVYVCIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFyICpuYW1l
ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgcHJvZ3JhbSwg
KHVpbnRwdHJfdCluYW1lKTsKIAorICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdFB0
ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFnRGF0YUluZGV4RVhUKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRPYmplY3RQdHJMYWJlbChwdHIsIGJ1ZlNp
emUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5n
ZXRGcmFnRGF0YUluZGV4KHByb2dyYW1QYWNrZWQsIG5hbWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0T2JqZWN0UHRyTGFiZWxLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OkdldEZyYWdEYXRhSW5kZXhFWFQsIEdMaW50PigpOworICAgICAgICB9CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0RnJhZ0RhdGFJbmRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIG5hbWUsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
R2V0RnJhZ0RhdGFJbmRleEVYVCwgR0xpbnQ+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRQb2ludGVydkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCitHTGludCBHTF9BUElF
TlRSWSBHZXRGcmFnRGF0YUxvY2F0aW9uQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UG9pbnRlcnYiLCAiY29u
dGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBhcmFtcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpHZXRQb2ludGVydlBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBF
VkVOVCgiZ2xHZXRGcmFnRGF0YUxvY2F0aW9uIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIg
IiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBwcm9ncmFtLCAodWludHB0cl90KW5hbWUpOwog
CisgICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UG9pbnRlcnYoY29udGV4
dCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRGcmFnRGF0YUxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRQb2ludGVydihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29u
dGV4dC0+Z2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtUGFja2VkLCBuYW1lKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFBvaW50ZXJ2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RnJhZ0Rh
dGFMb2NhdGlvbiwgR0xpbnQ+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRGcmFnRGF0YUxvY2F0aW9uLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bmFtZSwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRGcmFnRGF0YUxv
Y2F0aW9uLCBHTGludD4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEdldFBvaW50ZXJ2S0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xHZXRQb2ludGVydktIUiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCB2
b2lkICoqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWlu
dHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICIKKyAgICAg
ICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50LCBhdHRhY2htZW50KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAg
ICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldFBvaW50ZXJ2S0hSKGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsK
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2V0UG9pbnRlcnYocG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1l
bnQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
UG9pbnRlcnZLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAg
ICAgICBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UHJv
Z3JhbUJpbmFyeUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
ICpiaW5hcnlGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqYmluYXJ5KQordm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKAotICAgICAgICAiZ2xHZXRQcm9ncmFtQmluYXJ5IiwKLSAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxl
bmd0aCA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiLCBHTGVudW0gKmJpbmFyeUZvcm1hdCA9
IDB4JTAxNiIgUFJJeFBUUiAiLCB2b2lkICpiaW5hcnkgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgs
ICh1aW50cHRyX3QpYmluYXJ5Rm9ybWF0LAotICAgICAgICAodWludHB0cl90KWJpbmFyeSk7Cisg
ICAgRVZFTlQoImdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1l
bnQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICIKKyAgICAgICAgICAiKnBhcmFtcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2ht
ZW50KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFy
YW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBiaW5hcnlGb3Jt
YXQsIGJpbmFyeSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUygKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtQmluYXJ5KHByb2dyYW1QYWNr
ZWQsIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpOworICAgICAgICAgICAg
Y29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRh
Y2htZW50LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFByb2dyYW1CaW5hcnksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBi
dWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgYmluYXJ5Rm9ybWF0LCBiaW5h
cnkpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBHZXRQcm9ncmFtQmluYXJ5T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpCit2b2lk
IEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKAotICAgICAgICAiZ2xHZXRQcm9ncmFtQmluYXJ5T0VTIiwKLSAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdM
c2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiLCBHTGVudW0gKmJpbmFy
eUZvcm1hdCA9IDB4JTAxNiIgUFJJeFBUUiAiLCB2b2lkICpiaW5hcnkgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgYnVmU2l6ZSwgKHVpbnRwdHJf
dClsZW5ndGgsICh1aW50cHRyX3QpYmluYXJ5Rm9ybWF0LAotICAgICAgICAodWludHB0cl90KWJp
bmFyeSk7CisgICAgRVZFTlQoImdsR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdiIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywg
R0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1z
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5
T0VTKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5Rm9ybWF0
LCBiaW5hcnkpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXQsIHBuYW1l
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZXRQcm9ncmFtQmluYXJ5KHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxl
bmd0aCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbUJpbmFyeU9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICBiaW5hcnlGb3JtYXQsIGJpbmFyeSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbmZvTG9n
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZv
TG9nKQorR0xlbnVtIEdMX0FQSUVOVFJZIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsR2V0UHJvZ3Jh
bUluZm9Mb2ciLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBH
THNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICIsIEdMY2hhciAqaW5mb0xvZyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRw
dHJfdClpbmZvTG9nKTsKKyAgICBFVkVOVCgiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzIiwgImNv
bnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKKyAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlk
YXRlR2V0UHJvZ3JhbUluZm9Mb2coY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVu
Z3RoLCBpbmZvTG9nKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXMoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1JbmZvTG9n
KHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZyk7CisgICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1JbmZvTG9nLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgIGluZm9Mb2cpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNz
UmVzZXRTdGF0dXMsIEdMZW51bT4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldEdyYXBoaWNzUmVzZXRTdGF0dXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXMsIEdMZW51
bT4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEdldFByb2dyYW1JbnRlcmZhY2VpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCitHTGVudW0g
R0xfQVBJRU5UUlkgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFByb2dyYW1JbnRlcmZhY2VpdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsICIKLSAgICAgICAgICAiR0xpbnQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dy
YW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBwcm9ncmFt
SW50ZXJmYWNlKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3Jh
bUludGVyZmFjZVBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0
KSk7CiAKKyAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFByb2dyYW1JbnRlcmZhY2Vpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBw
cm9ncmFtSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0
dXNFWFQoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1JbnRlcmZhY2Vpdihwcm9ncmFtUGFja2VkLCBw
cm9ncmFtSW50ZXJmYWNlLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1cygpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbUludGVyZmFjZWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzRVhULCBHTGVudW0+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
RVhULCBHTGVudW0+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHBpcGVsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xjaGFyICppbmZvTG9nKQordm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjRpX3ZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpkYXRhKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAg
ICAgICAiZ2xHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nIiwKLSAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHBpcGVsaW5lID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICps
ZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiwgR0xjaGFyICppbmZvTG9nID0gMHgl
MDE2IiBQUkl4UFRSICIiLAotICAgICAgICBDSUQoY29udGV4dCksIHBpcGVsaW5lLCBidWZTaXpl
LCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClpbmZvTG9nKTsKKyAgICBFVkVOVCgiZ2xH
ZXRJbnRlZ2VyNjRpX3YiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdMaW50NjQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VHlwZUVudW0sIHRhcmdldCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAg
ICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xv
Zyhjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVn
ZXI2NGlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVBpcGVs
aW5lSW5mb0xvZyhwaXBlbGluZVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldEludGVnZXI2NGlfdih0YXJnZXQsIGluZGV4LCBkYXRhKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1QaXBlbGluZUluZm9M
b2csIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBsZW5ndGgsIGluZm9Mb2cpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldEludGVnZXI2NGlfdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRh
dGEpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVpdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGlwZWxpbmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykK
K3ZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcjY0dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UHJv
Z3JhbVBpcGVsaW5laXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwaXBlbGlu
ZSA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBU
UgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcGlwZWxpbmUsIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXBlbGluZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAg
ICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0SW50ZWdlcjY0diIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludDY0ICpkYXRhID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkdldFBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAg
ICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5laXYoY29udGV4
dCwgcGlwZWxpbmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVnZXI2NHYoY29udGV4
dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtUGlwZWxpbmVpdihwaXBlbGluZVBhY2tlZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjR2KHBuYW1l
LCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1QaXBl
bGluZWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEludGVnZXI2NHYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwbmFtZSwgZGF0YSk7CiAgICAgfQogfQogCi1HTHVpbnQgR0xfQVBJRU5UUlkgR2V0
UHJvZ3JhbVJlc291cmNlSW5kZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCit2b2lk
IEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFByb2dy
YW1SZXNvdXJjZUluZGV4IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9ICVzLCBjb25zdCBHTGNoYXIgKm5hbWUg
PSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNl
LCBwcm9ncmFtSW50ZXJmYWNlKSwKLSAgICAgICAgICAodWludHB0cl90KW5hbWUpOworICAgIEVW
RU5UKCJnbEdldEludGVnZXI2NHZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBwbmFtZSA9ICVzLCBHTGludDY0ICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29u
dGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBOYW1lLCBw
bmFtZSksICh1aW50cHRyX3QpZGF0YSk7CiAKLSAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlSW5k
ZXgoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpOworICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRJbnRlZ2Vy
NjR2RVhUKGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRQcm9ncmFt
UmVzb3VyY2VJbmRleChwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUlu
ZGV4LCBHTHVpbnQ+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyNjR2KHBuYW1l
LCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1SZXNv
dXJjZUluZGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lLCByZXR1cm5WYWx1ZSk7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUluZGV4LCBHTHVpbnQ+KCk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0SW50ZWdlcjY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHBuYW1lLCBkYXRhKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1H
TGludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFj
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcmlfdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFByb2dy
YW1SZXNvdXJjZUxvY2F0aW9uIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9ICVzLCBjb25zdCBHTGNoYXIgKm5h
bWUgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJm
YWNlLCBwcm9ncmFtSW50ZXJmYWNlKSwKLSAgICAgICAgICAodWludHB0cl90KW5hbWUpOworICAg
IEVWRU5UKCJnbEdldEludGVnZXJpX3YiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdMaW50ICpkYXRhID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlR5cGVFbnVtLCB0YXJnZXQpLCBpbmRleCwgKHVpbnRwdHJfdClkYXRhKTsKIAotICAg
IEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHBy
b2dyYW1JbnRlcmZhY2UsIG5hbWUpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcmlfdihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBk
YXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1SZXNvdXJj
ZUxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRp
b24sIEdMaW50PigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcmlfdih0YXJnZXQs
IGluZGV4LCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dy
YW1SZXNvdXJjZUxvY2F0aW9uLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lLCByZXR1cm5WYWx1
ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uLCBH
TGludD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRJbnRlZ2VyaV92LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSk7CiAgICAgfQotICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAotR0xpbnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRp
b25JbmRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCAqZGF0YSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9
ICVzLCBjb25zdCBHTGNoYXIgKm5hbWUgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBwcm9ncmFtSW50ZXJmYWNlKSwKLSAgICAgICAgICAo
dWludHB0cl90KW5hbWUpOworICAgIEVWRU5UKCJnbEdldEludGVnZXJ2IiwgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBO
YW1lLCBwbmFtZSksICh1aW50cHRyX3QpZGF0YSk7CiAKLSAgICBHTGludCByZXR1cm5WYWx1ZTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UHJvZ3Jh
bVJlc291cmNlTG9jYXRpb25JbmRleEVYVCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNl
LCBuYW1lKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
dEludGVnZXJ2KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPQotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgocHJvZ3JhbVBhY2tlZCwg
cHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9Ci0gICAgICAgICAgICAgICAgR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhF
WFQsIEdMaW50PigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIGRh
dGEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNl
TG9jYXRpb25JbmRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSwgcmV0dXJuVmFsdWUp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9Ci0gICAgICAg
ICAgICBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0UHJvZ3JhbVJlc291cmNl
TG9jYXRpb25JbmRleEVYVCwgR0xpbnQ+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0SW50
ZWdlcnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7CiAgICAgfQotICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3Vy
Y2VOYW1lQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dy
YW1JbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1l
KQordm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlcm5hbGZvcm1hdGl2Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJm
YWNlID0gJXMsIEdMdWludCBpbmRleCA9ICV1LCAiCi0gICAgICAgICAgIkdMc2l6ZWkgYnVmU2l6
ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICpuYW1l
ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbUludGVyZmFjZSwg
cHJvZ3JhbUludGVyZmFjZSksCi0gICAgICAgICAgaW5kZXgsIGJ1ZlNpemUsICh1aW50cHRyX3Qp
bGVuZ3RoLCAodWludHB0cl90KW5hbWUpOworICAgIEVWRU5UKCJnbEdldEludGVybmFsZm9ybWF0
aXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVt
IGludGVybmFsZm9ybWF0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCAiCisgICAgICAgICAgIkdM
c2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0UE5hbWUsIHBuYW1lKSwgYnVmU2l6ZSwgKHVp
bnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFByb2dyYW1SZXNvdXJjZU5hbWUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVy
ZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgbmFtZSkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRJbnRlcm5hbGZvcm1hdGl2KGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1l
LCBidWZTaXplLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtUmVzb3VyY2VOYW1lKHByb2dyYW1QYWNr
ZWQsIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgY29u
dGV4dC0+Z2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwg
YnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFBy
b2dyYW1SZXNvdXJjZU5hbWUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBw
cm9ncmFtSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBidWZTaXplLCBs
ZW5ndGgsIG5hbWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEludGVybmFsZm9ybWF0aXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcm9wQ291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZW51bSAqcHJvcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElF
TlRSWSBHZXRMaWdodGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsR2V0UHJvZ3JhbVJlc291cmNlaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gJXMsIEdMdWludCBpbmRl
eCA9ICV1LCAiCi0gICAgICAgICAgIkdMc2l6ZWkgcHJvcENvdW50ID0gJWQsIGNvbnN0IEdMZW51
bSAqcHJvcHMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNpemVpIGJ1ZlNpemUg
PSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xp
bnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBw
cm9ncmFtSW50ZXJmYWNlKSwKLSAgICAgICAgICBpbmRleCwgcHJvcENvdW50LCAodWludHB0cl90
KXByb3BzLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClwYXJhbXMpOwor
ICAgIEVWRU5UKCJnbEdldExpZ2h0ZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4o
cG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2Vpdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3BDb3VudCwgcHJvcHMsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldExpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRQcm9ncmFtUmVzb3VyY2Vpdihwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRl
eCwgcHJvcENvdW50LCBwcm9wcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdl
dExpZ2h0ZnYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAg
IGluZGV4LCBwcm9wQ291bnQsIHByb3BzLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0TGlnaHRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxpZ2h0
LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0
UHJvZ3JhbWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVO
VFJZIEdldExpZ2h0eHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbGlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xHZXRQcm9ncmFtaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByb2dyYW1Qcm9wZXJ0eUFSQiwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRy
X3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRMaWdodHh2IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gbGlnaHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE5hbWUsIGxpZ2h0KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHRQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJf
dClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dy
YW1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIExp
Z2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRMaWdodHh2KGNvbnRleHQsIGxpZ2h0LCBw
bmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW1QYWNrZWQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0TGlnaHR4dihsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9n
cmFtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRMaWdodHh2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeU9iamVjdGk2NHZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50NjQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0TWF0ZXJpYWxm
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0
UXVlcnlPYmplY3RpNjR2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQg
PSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50NjQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRw
dHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldE1hdGVyaWFsZnYiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0
ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxGYWNlLCBmYWNlKSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJhbWV0ZXIsIHBuYW1lKSwg
KHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlE
PihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmpl
Y3RpNjR2RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIE1h
dGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE1hdGVyaWFsZnYoY29udGV4dCwgZmFjZSwg
cG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aTY0dihpZFBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRNYXRlcmlhbGZ2KGZhY2UsIHBu
YW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
UXVlcnlPYmplY3RpNjR2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE1hdGVyaWFsZnYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0TWF0ZXJpYWx4
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0
UXVlcnlPYmplY3RpdkVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpRdWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90
KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0TWF0ZXJpYWx4diIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIGZhY2UgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZhY2UsIGZhY2UpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbFBhcmFtZXRlciwgcG5hbWUpLCAodWlu
dHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBp
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlk
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2
RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIE1hdGVyaWFs
UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1h
dGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldE1hdGVyaWFseHYoY29udGV4dCwgZmFjZSwgcG5hbWVQ
YWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aXYoaWRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0TWF0ZXJpYWx4dihmYWNlLCBwbmFtZVBhY2tl
ZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2Jq
ZWN0aXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0TWF0ZXJpYWx4diwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeU9iamVjdHVpNjR2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRNZW1v
cnlPYmplY3RQYXJhbWV0ZXJpdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWVtb3J5T2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVCIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQ2NCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaWQsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1l
KSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoCisgICAgICAgICJn
bEdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IG1lbW9yeU9iamVjdCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFt
cyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBt
ZW1vcnlPYmplY3QsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNZW1vcnlPYmplY3RQYXJh
bWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoY29udGV4dCwgaWRQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFj
a2VkID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnlPYmplY3QpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRh
dGVHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVpNjR2KGlkUGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldE1lbW9yeU9iamVjdFBhcmFtZXRl
cml2KG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdHVpNjR2RVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWVtb3J5
T2JqZWN0UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldE11bHRp
c2FtcGxlZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdHVpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAg
ICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldE11bHRpc2FtcGxlZnYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgaW5kZXgg
PSAldSwgR0xmbG9hdCAqdmFsID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUp
LCBpbmRleCwgKHVpbnRwdHJfdCl2YWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3R1aXYoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldE11bHRp
c2FtcGxlZnYoY29udGV4dCwgcG5hbWUsIGluZGV4LCB2YWwpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRNdWx0
aXNhbXBsZWZ2KHBuYW1lLCBpbmRleCwgdmFsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFF1ZXJ5T2JqZWN0dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE11bHRpc2FtcGxlZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgaW5kZXgsIHZhbCk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0T2Jq
ZWN0TGFiZWxDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJl
bCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFt
ZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldE9iamVj
dExhYmVsIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gaWRlbnRpZmllciA9ICVz
LCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAiCisgICAg
ICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICpsYWJlbCA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGlkZW50aWZpZXIpLCBuYW1lLCBidWZTaXplLAorICAg
ICAgICAgICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFt
ZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdExhYmVsKGNvbnRleHQsIGlkZW50
aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdHVp
dihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRPYmpl
Y3RMYWJlbChpZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0dWl2RVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldE9iamVjdExhYmVsLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRlbnRpZmllciwg
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGxhYmVsKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2V0UXVlcnlpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6UXVlcnlQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1z
KTsKKyAgICBFVkVOVCgiZ2xHZXRPYmplY3RMYWJlbEtIUiIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIGlkZW50aWZpZXIgPSAlcywgR0x1aW50IG5hbWUgPSAldSwgR0xzaXplaSBi
dWZTaXplID0gJWQsIEdMc2l6ZWkgIgorICAgICAgICAgICIqbGVuZ3RoID0gMHglMDE2IiBQUkl4
UFRSICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBpZGVu
dGlmaWVyKSwgbmFtZSwgYnVmU2l6ZSwKKyAgICAgICAgICAodWludHB0cl90KWxlbmd0aCwgKHVp
bnRwdHJfdClsYWJlbCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4o
dGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRRdWVyeWl2KGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdExhYmVsS0hS
KGNvbnRleHQsIGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRRdWVyeWl2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRPYmplY3RMYWJlbChpZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGxh
YmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5aXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldE9iamVjdExhYmVsS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRl
bnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGxh
YmVsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdkVYVENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldE9iamVjdFB0
ckxhYmVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hh
ciAqbGFiZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UXVlcnlpdkVYVCIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQg
KnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
ICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRPYmplY3RQdHJMYWJlbCIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQUkl4UFRS
CisgICAgICAgICAgIiwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4
JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgYnVmU2l6ZSwg
KHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0UXVlcnlpdkVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0T2JqZWN0UHRyTGFiZWwoY29udGV4dCwgcHRyLCBidWZTaXplLCBsZW5ndGgsIGxh
YmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+Z2V0UXVlcnlpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0T2JqZWN0UHRyTGFiZWwocHRyLCBidWZTaXplLCBsZW5ndGgsIGxh
YmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5aXZFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldE9iamVjdFB0ckxhYmVsLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHRyLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9B
UElFTlRSWSBHZXRPYmplY3RQdHJMYWJlbEtIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyUGFyYW1ldGVyTmFtZSwgcG5h
bWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0T2JqZWN0UHRyTGFiZWxL
SFIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIGNvbnN0IHZvaWQgKnB0ciA9IDB4JTAxNiIg
UFJJeFBUUgorICAgICAgICAgICIsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5n
dGggPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGNoYXIgKmxhYmVsID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClwdHIsIGJ1
ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmpl
Y3RQdHJMYWJlbEtIUihjb250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0T2JqZWN0UHRyTGFiZWwocHRyLCBidWZTaXplLCBsZW5ndGgsIGxh
YmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRPYmplY3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1z
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UG9pbnRlcnYiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpHZXRQb2ludGVydlBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBh
cmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlR2V0UG9pbnRlcnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRQb2ludGVydihwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRQb2ludGVydiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySWl2Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lk
IEdMX0FQSUVOVFJZIEdldFBvaW50ZXJ2S0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRTYW1wbGVy
UGFyYW1ldGVySWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9
ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRy
X3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRQb2ludGVydktIUiIsICJjb250ZXh0ID0gJWQs
IEdMZW51bSBwbmFtZSA9ICVzLCB2b2lkICoqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdihjb250ZXh0LCBzYW1wbGVyUGFja2Vk
LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQb2ludGVydktIUihjb250ZXh0LCBwbmFtZSwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcklpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFBvaW50ZXJ2KHBuYW1lLCBwYXJhbXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2FtcGxlclBhcmFtZXRlcklpdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFBvaW50ZXJ2S0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUJp
bmFyeUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5h
cnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAqYmluYXJ5KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBs
ZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwor
ICAgIEVWRU5UKAorICAgICAgICAiZ2xHZXRQcm9ncmFtQmluYXJ5IiwKKyAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6
ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiLCBHTGVudW0gKmJpbmFyeUZv
cm1hdCA9IDB4JTAxNiIgUFJJeFBUUiAiLCB2b2lkICpiaW5hcnkgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgYnVmU2l6ZSwgKHVpbnRwdHJfdCls
ZW5ndGgsICh1aW50cHRyX3QpYmluYXJ5Rm9ybWF0LAorICAgICAgICAodWludHB0cl90KWJpbmFy
eSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTKGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeShjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBi
aW5hcnkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVySWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbUJpbmFyeShwcm9ncmFtUGFj
a2VkLCBidWZTaXplLCBsZW5ndGgsIGJpbmFyeUZvcm1hdCwgYmluYXJ5KTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1CaW5hcnksIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBidWZTaXplLCBsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJ
RU5UUlkgR2V0UHJvZ3JhbUJpbmFyeU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmluYXJ5KQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1aW50ICpwYXJh
bXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVy
TmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgK
KyAgICAgICAgImdsR2V0UHJvZ3JhbUJpbmFyeU9FUyIsCisgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBwcm9ncmFtID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5n
dGggPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiwgR0xlbnVtICpiaW5hcnlGb3JtYXQgPSAw
eCUwMTYiIFBSSXhQVFIgIiwgdm9pZCAqYmluYXJ5ID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAo
dWludHB0cl90KWJpbmFyeUZvcm1hdCwKKyAgICAgICAgKHVpbnRwdHJfdCliaW5hcnkpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeU9FUyhjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBidWZTaXplLCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUZvcm1hdCwgYmluYXJ5KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0U2FtcGxl
clBhcmFtZXRlckl1aXYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRQcm9ncmFtQmluYXJ5KHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0
aCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0U2FtcGxlclBhcmFtZXRlckl1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVy
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFt
QmluYXJ5T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwg
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUZvcm1hdCwgYmluYXJ5KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbmZvTG9nQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvTG9nKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1
aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVy
UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAg
ICBFVkVOVCgKKyAgICAgICAgImdsR2V0UHJvZ3JhbUluZm9Mb2ciLAorICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXpl
aSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIsIEdMY2hhciAqaW5mb0xvZyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBidWZT
aXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClpbmZvTG9nKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKGNvbnRleHQsIHNhbXBsZXJQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1JbmZv
TG9nKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbVBhY2tlZCwgYnVm
U2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFtSW5mb0xvZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICBpbmZv
TG9nKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcmZ2
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKK3ZvaWQgR0xfQVBJRU5U
UlkgR2V0UHJvZ3JhbUludGVyZmFjZWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZs
b2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVy
UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAg
ICBFVkVOVCgiZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gJXMsIEdM
ZW51bSBwbmFtZSA9ICVzLCAiCisgICAgICAgICAgIkdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UHJvZ3JhbUludGVyZmFjZSwgcHJvZ3JhbUludGVyZmFjZSksCisgICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2VQTmFtZSwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3Jh
bUludGVyZmFjZWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyUGFja2VkLCBw
bmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1JbnRlcmZhY2Vp
dihwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBwbmFtZSwgcGFyYW1zKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldFByb2dyYW1JbnRlcmZhY2VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAg
cG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQ
YXJhbWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9n
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBpcGVsaW5lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvTG9nKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdl
dFNhbXBsZXJQYXJhbWV0ZXJpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNh
bXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVyLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAo
dWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoCisgICAgICAgICJnbEdldFByb2dyYW1QaXBl
bGluZUluZm9Mb2ciLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGlwZWxpbmUgPSAl
dSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBU
UgorICAgICAgICAiLCBHTGNoYXIgKmluZm9Mb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgIENJRChjb250ZXh0KSwgcGlwZWxpbmUsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAo
dWludHB0cl90KWluZm9Mb2cpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNh
bXBsZXJQYXJhbWV0ZXJpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFByb2dyYW1QaXBlbGluZUluZm9Mb2coY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIGJ1
ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVy
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1Q
aXBlbGluZUluZm9Mb2cocGlwZWxpbmVQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZyk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTYW1wbGVyUGFyYW1ldGVyaXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoLCBpbmZvTG9nKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0U2Vt
YXBob3JlUGFyYW1ldGVydWk2NHZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHNlbWFwaG9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKQor
dm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUGlwZWxpbmVpdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcGlwZWxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAg
ICAgICAgImdsR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQiLAotICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQ2
NCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29u
dGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNlbWFwaG9yZVBh
cmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVW
RU5UKCJnbEdldFByb2dyYW1QaXBlbGluZWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcGlwZWxpbmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAw
eCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHBp
cGVsaW5lLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGlwZWxpbmVQYXJhbWV0ZXJOYW1l
LCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBob3JlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldFNlbWFwaG9y
ZVBhcmFtZXRlcnVpNjR2RVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFt
cykpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFt
UGlwZWxpbmVpdihjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2KHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtUGlwZWxpbmVpdihwaXBlbGluZVBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRT
ZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9y
ZVBhY2tlZCwgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFtUGlwZWxpbmVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHBpcGVsaW5lUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgR2V0U2hhZGVySW5mb0xvZ0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFkZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGNoYXIgKmluZm9Mb2cpCitHTHVpbnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291
cmNlSW5kZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
R2V0U2hhZGVySW5mb0xvZyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNoYWRl
ciA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQ
Ukl4UFRSCi0gICAgICAgICAgIiwgR0xjaGFyICppbmZvTG9nID0gMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2hhZGVyLCBidWZTaXplLCAodWludHB0cl90KWxl
bmd0aCwgKHVpbnRwdHJfdClpbmZvTG9nKTsKKyAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUmVzb3Vy
Y2VJbmRleCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xlbnVtIHByb2dyYW1JbnRlcmZhY2UgPSAlcywgY29uc3QgR0xjaGFyICpuYW1lID0gIgorICAg
ICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9n
cmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbUludGVyZmFjZSwgcHJvZ3Jh
bUludGVyZmFjZSksCisgICAgICAgICAgKHVpbnRwdHJfdCluYW1lKTsKIAorICAgIEdMdWludCBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
c2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlckluZm9Mb2coY29u
dGV4dCwgc2hhZGVyUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpKTsKKyAgICAgICAg
ICAgICBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUluZGV4KGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlclBh
Y2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291cmNlSW5kZXgocHJvZ3JhbVBhY2tlZCwgcHJvZ3Jh
bUludGVyZmFjZSwgbmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRT
aGFkZXJJbmZvTG9nLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkLCBidWZTaXpl
LCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6R2V0UHJvZ3JhbVJlc291cmNlSW5kZXgsIEdMdWludD4oKTsKKyAgICAg
ICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1SZXNvdXJjZUluZGV4LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBw
cm9ncmFtSW50ZXJmYWNlLCBuYW1lLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OkdldFByb2dyYW1SZXNvdXJjZUluZGV4LCBHTHVpbnQ+KCk7CiAgICAgfQorICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHByZWNpc2lvbnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcHJlY2lzaW9uKQorR0xpbnQgR0xfQVBJ
RU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gc2hhZGVydHlwZSA9ICVzLCBHTGVudW0g
cHJlY2lzaW9udHlwZSA9ICVzLCBHTGludCAqcmFuZ2UgPSAiCi0gICAgICAgICAgIjB4JTAxNiIg
UFJJeFBUUiAiLCBHTGludCAqcHJlY2lzaW9uID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNoYWRlclR5cGUs
IHNoYWRlcnR5cGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmVj
aXNpb25UeXBlLCBwcmVjaXNpb250eXBlKSwgKHVpbnRwdHJfdClyYW5nZSwKLSAgICAgICAgICAo
dWludHB0cl90KXByZWNpc2lvbik7CisgICAgRVZFTlQoImdsR2V0UHJvZ3JhbVJlc291cmNlTG9j
YXRpb24iLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gJXMsIGNvbnN0IEdMY2hhciAqbmFtZSA9ICIKKyAgICAg
ICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3Jh
bSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1J
bnRlcmZhY2UpLAorICAgICAgICAgICh1aW50cHRyX3QpbmFtZSk7CiAKKyAgICBHTGludCByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoY29udGV4dCwgc2hhZGVydHlwZSwg
cHJlY2lzaW9udHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByYW5nZSwgcHJlY2lzaW9uKSk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJj
ZUxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwg
cmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24ocHJvZ3JhbVBhY2tlZCwg
cHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRy
eVBvaW50OjpHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbiwgR0xpbnQ+KCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBzaGFkZXJ0eXBlLCBwcmVjaXNpb250eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLCBwcmVjaXNpb24pOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dy
YW1SZXNvdXJjZUxvY2F0aW9uLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lLCByZXR1cm5WYWx1
ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uLCBH
TGludD4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIEdldFNoYWRlclNvdXJjZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMY2hhciAqc291cmNlKQorR0xpbnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTG9j
YXRpb25JbmRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRTaGFkZXJTb3VyY2UiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSwgR0xzaXplaSBidWZTaXpl
ID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdM
Y2hhciAqc291cmNlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgc2hhZGVyLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClzb3VyY2Up
OworICAgIEVWRU5UKCJnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlID0gJXMsIGNvbnN0IEdMY2hhciAqbmFtZSA9ICIKKyAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2UpLAor
ICAgICAgICAgICh1aW50cHRyX3QpbmFtZSk7CiAKKyAgICBHTGludCByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShjb250ZXh0LCBzaGFkZXJQYWNr
ZWQsIGJ1ZlNpemUsIGxlbmd0aCwgc291cmNlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhF
WFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFNoYWRlclNv
dXJjZShzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgc291cmNlKTsKKyAgICAgICAgICAg
IHJldHVyblZhbHVlID0KKyAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtUmVzb3Vy
Y2VMb2NhdGlvbkluZGV4KHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2hhZGVyU291cmNlLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHNvdXJjZSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPQorICAgICAg
ICAgICAgICAgIEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRQcm9ncmFtUmVz
b3VyY2VMb2NhdGlvbkluZGV4RVhULCBHTGludD4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1J
bnRlcmZhY2UsIG5hbWUsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPQorICAgICAgICAgICAgR2V0RGVmYXVsdFJldHVyblZhbHVlPEVu
dHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQsIEdMaW50PigpOwog
ICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0
U2hhZGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBH
ZXRQcm9ncmFtUmVzb3VyY2VOYW1lQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFNoYWRlcml2IiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBH
TGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgc2hhZGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2hhZGVyUGFyYW1ldGVyTmFt
ZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xH
ZXRQcm9ncmFtUmVzb3VyY2VOYW1lIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9ICVzLCBHTHVpbnQgaW5kZXgg
PSAldSwgIgorICAgICAgICAgICJHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3Ro
ID0gMHglMDE2IiBQUkl4UFRSICIsIEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUgorICAg
ICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2UpLAorICAg
ICAgICAgIGluZGV4LCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdCluYW1l
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVy
UGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlcml2KGNvbnRl
eHQsIHNoYWRlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAg
ICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291cmNlTmFtZShwcm9ncmFtUGFja2VkLCBwcm9ncmFt
SW50ZXJmYWNlLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFNoYWRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkLCBw
bmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFtUmVzb3VyY2VO
YW1lLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBuYW1lKTsK
ICAgICB9CiB9CiAKLWNvbnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIEdldFN0cmluZ0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
UHJvZ3JhbVJlc291cmNlaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJvcENvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnByb3BzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRTdHJpbmci
LCAiY29udGV4dCA9ICVkLCBHTGVudW0gbmFtZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdHJpbmdOYW1lLCBuYW1lKSk7CisgICAg
RVZFTlQoImdsR2V0UHJvZ3JhbVJlc291cmNlaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gJXMsIEdMdWlu
dCBpbmRleCA9ICV1LCAiCisgICAgICAgICAgIkdMc2l6ZWkgcHJvcENvdW50ID0gJWQsIGNvbnN0
IEdMZW51bSAqcHJvcHMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTHNpemVpIGJ1
ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAg
IiwgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJm
YWNlLCBwcm9ncmFtSW50ZXJmYWNlKSwKKyAgICAgICAgICBpbmRleCwgcHJvcENvdW50LCAodWlu
dHB0cl90KXByb3BzLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClwYXJh
bXMpOwogCi0gICAgY29uc3QgR0x1Ynl0ZSAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRTdHJpbmcoY29udGV4
dCwgbmFtZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2Vpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBw
cm9ncmFtSW50ZXJmYWNlLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3BDb3VudCwgcHJvcHMsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBjb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1
ZTxFbnRyeVBvaW50OjpHZXRTdHJpbmcsIGNvbnN0IEdMdWJ5dGUgKj4oKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmdldFByb2dyYW1SZXNvdXJjZWl2KHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRl
cmZhY2UsIGluZGV4LCBwcm9wQ291bnQsIHByb3BzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U3RyaW5nLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbmFt
ZSwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRTdHJpbmcsIGNvbnN0
IEdMdWJ5dGUgKj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFtUmVzb3VyY2Vp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2Us
CisgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIHByb3BDb3VudCwgcHJvcHMsIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1j
b25zdCBHTHVieXRlICpHTF9BUElFTlRSWSBHZXRTdHJpbmdpQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpCit2b2lkIEdMX0FQSUVOVFJZIEdl
dFByb2dyYW1pdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEdldFN0cmluZ2kiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbmFtZSA9ICVzLCBHTHVpbnQg
aW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6U3RyaW5nTmFtZSwgbmFtZSksIGluZGV4KTsKKyAgICBFVkVOVCgiZ2xHZXRQcm9n
cmFtaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlByb2dyYW1Qcm9wZXJ0eUFSQiwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1z
KTsKIAotICAgIGNvbnN0IEdMdWJ5dGUgKnJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0U3RyaW5naShjb250ZXh0
LCBuYW1lLCBpbmRleCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRQcm9ncmFtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gY29udGV4dC0+Z2V0U3RyaW5naShuYW1lLCBpbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRTdHJpbmdpLCBjb25zdCBHTHVieXRlICo+KCk7CisgICAg
ICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTdHJpbmdpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbmFtZSwgaW5kZXgsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6R2V0U3RyaW5naSwgY29uc3QgR0x1Ynl0ZSAqPigpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFByb2dyYW1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IHBuYW1lLCBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgR2V0U3luY2l2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHN5bmMgc3luYywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZXMpCit2b2lkIEdMX0FQ
SUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0dkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFN5bmNpdiIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzeW5jIHN5bmMgPSAweCUwMTYiIFBSSXhQVFIK
LSAgICAgICAgICAiLCBHTGVudW0gcG5hbWUgPSAlcywgR0xzaXplaSBidWZTaXplID0gJWQsIEdM
c2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMaW50ICp2YWx1
ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0
cl90KXN5bmMsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTeW5jUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLAotICAgICAgICAgIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90
KXZhbHVlcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlPYmplY3RpNjR2RVhUIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50
NjQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1l
LCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U3luY2l2KGNv
bnRleHQsIHN5bmMsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVlcykpOworICAgICAgICBR
dWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVChjb250ZXh0LCBpZFBhY2tlZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFN5bmNpdihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCB2YWx1ZXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3RpNjR2KGlkUGFj
a2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFN5bmNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHN5bmMsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHZhbHVlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3RpNjR2RVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhFbnZmdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpdkVYVENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZXRUZXhFbnZmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVz
LCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90
KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlPYmplY3RpdkVYVCIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaWQs
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBu
YW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFy
YW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VGV4RW52ZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7Cisg
ICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdkVYVChjb250ZXh0LCBpZFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleEVudmZ2KHRhcmdldFBhY2tlZCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdGl2KGlk
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFRleEVudmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBh
Y2tlZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdGl2RVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhFbnZpdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFRDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2V0VGV4RW52aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90
KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVCIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVp
bnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFtZXRlck5h
bWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1
cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
RW52UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0VGV4RW52aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1z
KSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dkVYVChjb250
ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleEVudml2KHRhcmdldFBhY2tl
ZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9i
amVjdHVpNjR2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldFRleEVudml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVy
eU9iamVjdHVpNjR2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhFbnZ4dkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZml4ZWQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1
aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldFRleEVudnh2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52VGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1
aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdHVpdiIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBH
THVpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJO
YW1lLCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0
dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleEVudnh2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFt
cykpOworICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2KGNvbnRleHQs
IGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4RW52eHYodGFyZ2V0UGFja2VkLCBw
bmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0
dWl2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFRleEVudnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVj
dHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4R2VuZnZPRVNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvb3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1
aXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1z
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEdldFRleEdlbmZ2T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKnBhcmFt
cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1lKSwg
KHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0g
JXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFt
ZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRUZXhHZW5mdk9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwor
ICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKGNvbnRleHQsIGlk
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4R2VuZnYoY29vcmQsIHBuYW1lLCBwYXJh
bXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4R2Vu
ZnZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3R1aXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEdldFRleEdlbml2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQor
dm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xHZXRUZXhHZW5pdk9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIGNvb3JkID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0
cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlpdiIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1
aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VGV4R2Vu
aXZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVlcnlpdihjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhHZW5pdihjb29yZCwgcG5hbWUsIHBh
cmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeWl2KHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhHZW5p
dk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4R2VueHZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcykKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0UXVlcnlpdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4R2VueHZPRVMiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUp
LCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UXVlcnlpdkVYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAl
cywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlQYXJhbWV0ZXJOYW1l
LCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbnh2
T0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIFF1ZXJ5VHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5
VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0UXVlcnlpdkVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRUZXhHZW54dihjb29yZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRRdWVyeWl2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhHZW54dk9FUywgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRRdWVyeWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwg
cGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFRleExldmVsUGFy
YW1ldGVyZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKnBhcmFtcyAiCi0g
ICAgICAgICAgIj0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVs
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1l
dGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdl
dCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpSZW5kZXJidWZmZXJUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJf
dClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleExldmVsUGFyYW1ldGVyZnYodGFy
Z2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcml2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZP
RVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFRleExldmVs
UGFyYW1ldGVyaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAi
Ci0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZl
bCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFt
ZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpSZW5kZXJidWZmZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50
cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdl
dD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9F
Uyhjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhMZXZlbFBhcmFtZXRl
cml2KHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29u
dGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleExldmVsUGFyYW1ldGVyaXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVy
SWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3Zv
aWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcklpdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEdldFRleFBhcmFtZXRlcklpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFy
YW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2IiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xp
bnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFt
ZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2KGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRT
YW1wbGVyUGFyYW1ldGVySWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJJaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoc2FtcGxlclBhY2tlZCwg
cG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhQ
YXJhbWV0ZXJJaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySWl2T0VTQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xf
QVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbEdldFRleFBhcmFtZXRlcklpdk9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1aW50
cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5h
bWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVy
UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2T0VTKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTYW1wbGVySUQgc2Ft
cGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySWl2T0VTKGNv
bnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJJ
aXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdl
dFNhbXBsZXJQYXJhbWV0ZXJJaXYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJhbWV0ZXJJaXZPRVMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit2b2lkIEdM
X0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEdldFRleFBhcmFtZXRlckl1aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClw
YXJhbXMpOworICAgIEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2IiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywg
R0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1w
bGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxl
cklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoY29udGV4dCwgc2FtcGxlclBhY2tl
ZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlckl1aXYodGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJJ
dWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0VGV4UGFyYW1ldGVySXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2Ft
cGxlclBhcmFtZXRlckl1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBw
bmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1l
dGVySXVpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySXVp
dk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRUZXhQYXJhbWV0ZXJJ
dWl2T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
VGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpH
ZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVO
VCgiZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1z
ID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5h
bWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxl
cik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKGNvbnRleHQsIHNh
bXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJJdWl2KHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRTYW1wbGVy
UGFyYW1ldGVySXVpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleFBhcmFtZXRlckl1aXZPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
c2FtcGxlclBhY2tlZCwgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyZnZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdl
dFNhbXBsZXJQYXJhbWV0ZXJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBs
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVy
ZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVt
IHBuYW1lID0gJXMsIEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgIEVWRU5U
KCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1
aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKnBhcmFtcyA9IDB4
JTAxNiIgUFJJeFBUUgogICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
CisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJmdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29u
dGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4UGFyYW1ldGVyZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJmdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJpdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1z
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlcml2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwg
KHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJpdiIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBu
YW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxl
clBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2KGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+
KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBh
cmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxl
clBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRUZXhQYXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2FtcGxlclBhcmFtZXRl
cml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcnh2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRS
WSBHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgc2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpw
YXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVyeHYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4
ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRh
cmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQ
YXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKAorICAgICAg
ICAiZ2xHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCIsCisgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0
KSwgc2VtYXBob3JlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2VtYXBob3JlUGFyYW1l
dGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcnh2KGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBo
b3JlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoY29udGV4
dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyeHYo
dGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFNl
bWFwaG9yZVBhcmFtZXRlcnVpNjR2KHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJhbWV0ZXJ4diwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtICp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRSWSBH
ZXRTaGFkZXJJbmZvTG9nQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2hhciAqaW5mb0xvZykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmciLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWlu
dCBpbmRleCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAg
IipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSAqc2l6ZSA9IDB4JTAxNiIgUFJJ
eFBUUgotICAgICAgICAgICIsIEdMZW51bSAqdHlwZSA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNo
YXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3Qpc2l6
ZSwKLSAgICAgICAgICAodWludHB0cl90KXR5cGUsICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZF
TlQoImdsR2V0U2hhZGVySW5mb0xvZyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHNoYWRlciA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHgl
MDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xjaGFyICppbmZvTG9nID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2hhZGVyLCBidWZTaXplLCAodWludHB0
cl90KWxlbmd0aCwgKHVpbnRwdHJfdClpbmZvTG9nKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1l
KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlk
YXRlR2V0U2hhZGVySW5mb0xvZyhjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0
aCwgaW5mb0xvZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtUGFja2Vk
LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgY29udGV4
dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xv
Zyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwKLSAg
ICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNoYWRlckluZm9Mb2csIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICBpbmZvTG9nKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xj
aGFyICpzb3VyY2UpCit2b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlclByZWNpc2lvbkZvcm1hdENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJlY2lz
aW9udHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpyYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwcmVjaXNpb24pCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgc2hhZGVyID0gJXUsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGgg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTGNoYXIgKnNvdXJjZSA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHNoYWRlciwgYnVmc2l6ZSwgKHVp
bnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3Qpc291cmNlKTsKKyAgICBFVkVOVCgiZ2xHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzaGFk
ZXJ0eXBlID0gJXMsIEdMZW51bSBwcmVjaXNpb250eXBlID0gJXMsIEdMaW50ICpyYW5nZSA9ICIK
KyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIsIEdMaW50ICpwcmVjaXNpb24gPSAweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6U2hhZGVyVHlwZSwgc2hhZGVydHlwZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlByZWNpc2lvblR5cGUsIHByZWNpc2lvbnR5cGUpLCAodWludHB0cl90
KXJhbmdlLAorICAgICAgICAgICh1aW50cHRyX3QpcHJlY2lzaW9uKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChjb250ZXh0LCBzaGFkZXJ0eXBlLCBwcmVjaXNpb250eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJh
bmdlLCBwcmVjaXNpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKHNoYWRlclBhY2tl
ZCwgYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0U2hh
ZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUsIHJhbmdlLCBwcmVj
aXNpb24pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkLCBidWZz
aXplLAotICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgc291cmNlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBzaGFkZXJ0eXBlLCBwcmVjaXNpb250eXBlLAorICAgICAgICAgICAgICAgICAgICAgIHJhbmdl
LCBwcmVjaXNpb24pOwogICAgIH0KIH0KIAotR0x1aW50IEdMX0FQSUVOVFJZIEdldFVuaWZvcm1C
bG9ja0luZGV4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xj
aGFyICp1bmlmb3JtQmxvY2tOYW1lKQordm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJTb3VyY2VD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKnNvdXJjZSkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xHZXRVbmlmb3JtQmxvY2tJbmRleCIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgKHVp
bnRwdHJfdCl1bmlmb3JtQmxvY2tOYW1lKTsKKyAgICBFVkVOVCgiZ2xHZXRTaGFkZXJTb3VyY2Ui
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSwgR0xzaXplaSBi
dWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAg
ICIsIEdMY2hhciAqc291cmNlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgc2hhZGVyLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClz
b3VyY2UpOwogCi0gICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtQmxvY2tJbmRleChjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCB1bmlmb3JtQmxvY2tOYW1lKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hh
ZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyU291cmNlKGNvbnRleHQsIHNoYWRlclBhY2tl
ZCwgYnVmU2l6ZSwgbGVuZ3RoLCBzb3VyY2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldFVuaWZvcm1C
bG9ja0luZGV4KHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja05hbWUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludD4o
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFNoYWRlclNvdXJjZShzaGFkZXJQYWNrZWQsIGJ1
ZlNpemUsIGxlbmd0aCwgc291cmNlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFVuaWZvcm1CbG9ja0luZGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgdW5pZm9ybUJsb2NrTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFVuaWZvcm1CbG9ja0luZGV4LCBHTHVpbnQ+KCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2hhZGVyU291cmNlLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgc2hhZGVyUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHNvdXJjZSk7CiAgICAgfQotICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtSW5k
aWNlc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB1bmlmb3JtQ291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqY29uc3QgKnVuaWZvcm1OYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICp1bmlmb3JtSW5kaWNlcykKK3ZvaWQgR0xfQVBJRU5UUlkg
R2V0U2hhZGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bEdldFVuaWZvcm1JbmRpY2VzIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTHNpemVpIHVuaWZvcm1Db3VudCA9ICVkLCBjb25zdCBHTGNoYXIgIgotICAg
ICAgICAgICIqY29uc3QqdW5pZm9ybU5hbWVzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMdWludCAq
dW5pZm9ybUluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBwcm9ncmFtLCB1bmlmb3JtQ291bnQsICh1aW50cHRyX3QpdW5pZm9ybU5hbWVzLCAodWlu
dHB0cl90KXVuaWZvcm1JbmRpY2VzKTsKKyAgICBFVkVOVCgiZ2xHZXRTaGFkZXJpdiIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNoYWRlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAl
cywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIHNoYWRlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNoYWRlclBhcmFtZXRl
ck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybUluZGljZXMoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybU5hbWVzLCB1bmlmb3JtSW5kaWNlcykpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlcml2KGNvbnRleHQs
IHNoYWRlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dy
YW1QYWNrZWQsIHVuaWZvcm1Db3VudCwgdW5pZm9ybU5hbWVzLCB1bmlmb3JtSW5kaWNlcyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXJQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybUluZGljZXMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQ291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgdW5pZm9ybU5hbWVzLCB1bmlmb3JtSW5kaWNlcyk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0U2hhZGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotR0xpbnQgR0xfQVBJRU5UUlkgR2V0
VW5pZm9ybUxvY2F0aW9uQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xj
aGFyICpuYW1lKQorY29uc3QgR0x1Ynl0ZSAqR0xfQVBJRU5UUlkgR2V0U3RyaW5nQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFVu
aWZvcm1Mb2NhdGlvbiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0g
PSAldSwgY29uc3QgR0xjaGFyICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksCi0gICAgICAgICAgcHJvZ3JhbSwgKHVpbnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xH
ZXRTdHJpbmciLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbmFtZSA9ICVzIiwgQ0lEKGNvbnRleHQp
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdHJpbmdOYW1lLCBuYW1l
KSk7CiAKLSAgICBHTGludCByZXR1cm5WYWx1ZTsKKyAgICBjb25zdCBHTHVieXRlICpyZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0
VW5pZm9ybUxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0U3RyaW5nKGNvbnRleHQsIG5h
bWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUGFja2VkLCBu
YW1lKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUp
OwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0VW5pZm9ybUxvY2F0
aW9uLCBHTGludD4oKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OkdldFN0cmluZywgY29uc3QgR0x1Ynl0ZSAqPigpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybUxvY2F0aW9uLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSwgcmV0dXJuVmFsdWUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldFN0cmluZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG5hbWUsIHJldHVy
blZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0VW5pZm9ybUxvY2F0aW9uLCBHTGlu
dD4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6R2V0U3RyaW5nLCBjb25zdCBHTHVieXRlICo+KCk7CiAgICAgfQogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtZnZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCitjb25zdCBHTHVieXRlICpHTF9BUElFTlRSWSBH
ZXRTdHJpbmdpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBuYW1lLCBHTHVp
bnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VW5pZm9ybWZ2IiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZs
b2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCAodWludHB0cl90KXBhcmFtcyk7CisgICAg
RVZFTlQoImdsR2V0U3RyaW5naSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBuYW1lID0gJXMsIEdM
dWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpTdHJpbmdOYW1lLCBuYW1lKSwgaW5kZXgpOwogCisgICAgY29uc3QgR0x1
Ynl0ZSAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFN0cmluZ2koY29u
dGV4dCwgbmFtZSwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHBhcmFtcyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldFN0cmlu
Z2kobmFtZSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
R2V0U3RyaW5naSwgY29uc3QgR0x1Ynl0ZSAqPigpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0VW5pZm9ybWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U3RyaW5naSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG5hbWUsIGluZGV4LCByZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OkdldFN0cmluZ2ksIGNvbnN0IEdMdWJ5dGUgKj4oKTsKICAgICB9Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1p
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdl
dFN5bmNpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzeW5jIHN5bmMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqdmFsdWVzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFVuaWZvcm1p
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAg
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sICh1aW50cHRy
X3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRTeW5jaXYiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMc3luYyBzeW5jID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVt
IHBuYW1lID0gJXMsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUw
MTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGludCAqdmFsdWVzID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClzeW5jLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6U3luY1BhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICBi
dWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdCl2YWx1ZXMpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1pdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFN5bmNpdihjb250ZXh0LCBzeW5jLCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCB2YWx1ZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRTeW5jaXYoc3luYywg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsdWVzKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFVuaWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFN5bmNpdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHN5bmMsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVl
cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm11aXZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4RW52
ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VW5p
Zm9ybXVpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAg
ICBFVkVOVCgiZ2xHZXRUZXhFbnZmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSCiAgICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFt
LCBsb2NhdGlvbiwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdldCksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHBhcmFtcykpOworICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleEVudmZ2KGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm11aXYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRU
ZXhFbnZmdih0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFRleEVudmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBh
Y2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VW5zaWduZWRC
eXRldkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMdWJ5
dGUgKmRhdGEpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleEVudml2Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRVbnNpZ25lZEJ5dGV2RVhUIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0x1Ynl0ZSAqZGF0YSA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpHZXRQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KWRhdGEpOworICAgIEVW
RU5UKCJnbEdldFRleEVudml2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VW5zaWduZWRCeXRldkVYVChjb250ZXh0LCBwbmFtZSwg
ZGF0YSkpOworICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAg
ICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleEVudml2KGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuc2lnbmVkQnl0ZXYocG5h
bWUsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4RW52aXYodGFyZ2V0UGFja2Vk
LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFVuc2lnbmVkQnl0ZXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4RW52aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBHZXRVbnNpZ25lZEJ5dGVpX3ZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVieXRlICpkYXRhKQordm9pZCBHTF9BUElFTlRSWSBHZXRU
ZXhFbnZ4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZXRVbnNpZ25lZEJ5dGVpX3ZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdMdWJ5dGUgKmRhdGEgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBpbmRleCwgKHVpbnRwdHJfdClkYXRhKTsKKyAg
ICBFVkVOVCgiZ2xHZXRUZXhFbnZ4diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSCisgICAgICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUp
LCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQoY29udGV4dCwg
dGFyZ2V0LCBpbmRleCwgZGF0YSkpOworICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0
YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleEVu
dnh2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVu
c2lnbmVkQnl0ZWlfdih0YXJnZXQsIGluZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmdldFRleEVudnh2KHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRUZXhFbnZ4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0
dHJpYklpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykK
K3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4R2VuZnZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRWZXJ0ZXhBdHRyaWJJaXYiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGVudW0gcG5hbWUgPSAl
cywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIGluZGV4LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4QXR0cmliRW51
bSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xH
ZXRUZXhHZW5mdk9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0g
JXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFZlcnRleEF0dHJpYklpdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2V0VGV4R2VuZnZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRWZXJ0
ZXhBdHRyaWJJaXYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+
Z2V0VGV4R2VuZnYoY29vcmQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0VmVydGV4QXR0cmliSWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5k
ZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleEdlbmZ2T0VT
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4R2VuaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsR2V0VmVydGV4QXR0cmliSXVpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4QXR0cmliRW51bSwgcG5hbWUpLAotICAgICAgICAg
ICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRUZXhHZW5pdk9FUyIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0gJXMsIEdMZW51bSBwbmFtZSA9ICVz
LCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3Jk
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFt
ZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2
KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRUZXhHZW5pdk9FUyhjb250ZXh0
LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYkl1aXYoaW5kZXgsIHBu
YW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4R2VuaXYoY29vcmQsIHBu
YW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VmVydGV4
QXR0cmliSXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhHZW5pdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
R2V0VmVydGV4QXR0cmliUG9pbnRlcnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKipwb2ludGVyKQordm9pZCBHTF9BUElFTlRSWSBHZXRUZXhH
ZW54dk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgaW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIHZvaWQgKipwb2ludGVyID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwKLSAgICAgICAgICAo
dWludHB0cl90KXBvaW50ZXIpOworICAgIEVWRU5UKCJnbEdldFRleEdlbnh2T0VTIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMs
IEdMZml4ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29y
ZCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJh
bWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliUG9p
bnRlcnYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwb2ludGVyKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRUZXhHZW54dk9FUyhj
b250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
KGluZGV4LCBwbmFtZSwgcG9pbnRlcik7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhHZW54
dihjb29yZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBw
bmFtZSwgcG9pbnRlcik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4R2VueHZPRVMsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFy
YW1ldGVyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VmVydGV4QXR0cmli
ZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGVudW0g
cG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFRl
eExldmVsUGFyYW1ldGVyZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKnBh
cmFtcyAiCisgICAgICAgICAgIj0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksIGxldmVsLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0
dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2KGNvbnRleHQsIGluZGV4LCBwbmFt
ZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5k
ZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4TGV2ZWxQYXJh
bWV0ZXJmdih0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFZlcnRleEF0dHJpYmZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRl
eExldmVsUGFyYW1ldGVyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxl
dmVsLCBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJh
bWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VmVydGV4QXR0cmliaXYi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGVudW0gcG5h
bWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIGluZGV4LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRUZXhMZXZl
bFBhcmFtZXRlcml2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMsIEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0g
IgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2
ZWwsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJh
bWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJh
bXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhMZXZlbFBhcmFtZXRlcml2
KHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0VmVydGV4QXR0cmliaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBp
bmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEdldG5Vbmlmb3JtZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJaXZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bEdldG5Vbmlmb3JtZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGZsb2F0
ICIKLSAgICAgICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCAodWludHB0cl90KXBhcmFt
cyk7CisgICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVySWl2IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwg
KHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKSk7CisgICAgICAgIFRleHR1cmVUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcklp
dih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0blVuaWZvcm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4UGFyYW1ldGVySWl2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgR2V0blVuaWZvcm1mdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRl
cklpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0blVuaWZvcm1mdkVYVCIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwg
R0xzaXplaSBidWZTaXplID0gJWQsIEdMZmxvYXQgIgotICAgICAgICAgICIqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRp
b24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRUZXhQYXJh
bWV0ZXJJaXZPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4
dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRh
dGVHZXRuVW5pZm9ybWZ2RVhUKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZT
aXplLCBwYXJhbXMpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlcklpdk9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRuVW5pZm9ybWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVySWl2KHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9y
bWZ2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRUZXhQYXJhbWV0ZXJJaXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRu
VW5pZm9ybWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lk
IEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlckl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRuVW5pZm9y
bWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQgIgotICAgICAgICAg
ICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVO
VCgiZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3Qp
cGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGJ1ZlNpemUsIHBhcmFtcykpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0VGV4UGFyYW1ldGVySXVpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRuVW5pZm9ybWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBw
YXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVySXVpdih0YXJnZXRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0blVuaWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0VGV4UGFyYW1ldGVySXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEdldG5Vbmlmb3JtaXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySXVpdk9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFy
YW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtaXZFWFQiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgYnVmU2l6ZSA9ICVkLCBHTGludCAiCi0gICAgICAgICAgIipwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlckl1
aXZPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xl
bnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVU
YXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Okdl
dFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0
blVuaWZvcm1pdkVYVChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwg
cGFyYW1zKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0
ZXJJdWl2T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5V
bmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJJdWl2KHRhcmdldFBhY2tlZCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2
RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0blVu
aWZvcm11aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQor
dm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRuVW5pZm9ybXVp
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMdWludCAiCi0gICAgICAgICAg
IipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5U
KCJnbEdldFRleFBhcmFtZXRlcmZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1
aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtdWl2KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBi
dWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyZnYo
dGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldG5Vbmlmb3JtdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJhbWV0ZXJmdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIEhpbnRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwg
R0xlbnVtIG1vZGUpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcml2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xI
aW50IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gbW9kZSA9ICVz
IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpI
aW50VGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpIaW50TW9kZSwgbW9kZSkpOworICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlcml2IiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJh
bWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVIaW50KGNvbnRleHQsIHRhcmdl
dCwgbW9kZSkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1l
dGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGludCh0YXJn
ZXQsIG1vZGUpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEhpbnQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG1vZGUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFRleFBhcmFtZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgSW1w
b3J0TWVtb3J5RmRFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhh
bmRsZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGZkKQordm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJ4dkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJ
bXBvcnRNZW1vcnlGZEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9y
eSA9ICV1LCBHTHVpbnQ2NCBzaXplID0gJWxsdSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywgR0xp
bnQgIgotICAgICAgICAgICJmZCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG1lbW9y
eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzaXplKSwKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RXh0ZXJuYWxIYW5kbGVUeXBlLCBoYW5kbGVUeXBlKSwg
ZmQpOworICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlcnh2IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQp
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1l
dGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7Ci0gICAgICAgIEhhbmRsZVR5cGUgaGFuZGxl
VHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxIYW5kbGVUeXBlPihoYW5kbGVU
eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICBWYWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKGNvbnRleHQsIG1lbW9yeVBhY2tlZCwgc2l6
ZSwgaGFuZGxlVHlwZVBhY2tlZCwgZmQpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleFBhcmFtZXRlcnh2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmltcG9ydE1lbW9yeUZkKG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tl
ZCwgZmQpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyeHYodGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElt
cG9ydE1lbW9yeUZkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWVtb3J5UGFja2VkLCBzaXpl
LCBoYW5kbGVUeXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGZkKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJhbWV0ZXJ4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEltcG9ydFNlbWFwaG9yZUZkRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzZW1h
cGhvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBoYW5kbGVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBmZCkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsSW1wb3J0U2VtYXBob3JlRmRFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywgR0xpbnQgZmQgPSAlZCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5cGUpLCBmZCk7CisgICAgRVZFTlQo
ImdsR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgaW5kZXggPSAldSwgR0xzaXplaSBidWZTaXpl
ID0gJWQsIEdMc2l6ZWkgIgorICAgICAgICAgICIqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSICIs
IEdMc2l6ZWkgKnNpemUgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGVudW0gKnR5
cGUgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgaW5kZXgsIGJ1ZlNpemUsICh1aW50
cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNpemUsCisgICAgICAgICAgKHVpbnRwdHJfdCl0eXBl
LCAodWludHB0cl90KW5hbWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNlbWFw
aG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhv
cmVJRD4oc2VtYXBob3JlKTsKLSAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRsZVR5cGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRl
SW1wb3J0U2VtYXBob3JlRmRFWFQoY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBl
UGFja2VkLCBmZCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aW1wb3J0U2VtYXBo
b3JlRmQoc2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLCBmZCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbVBhY2tlZCwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEltcG9ydFNlbWFwaG9yZUZkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2Vt
YXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGZk
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICBidWZTaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBJbnNlcnRFdmVudE1hcmtlckVYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICptYXJrZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMY2hhciAqc291cmNlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIC8vIERvbid0IHJ1biB0aGUgRVZFTlQo
KSBtYWNybyBvbiB0aGUgRVhUX2RlYnVnX21hcmtlciBlbnRyeSBwb2ludHMuCi0gICAgLy8gSXQg
Y2FuIGludGVyZmVyZSB3aXRoIHRoZSBkZWJ1ZyBldmVudHMgYmVpbmcgc2V0IGJ5IHRoZSBjYWxs
ZXIuCi0gICAgLy8gRVZFTlQoImdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQiLCAiY29udGV4dCA9ICVk
LCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKm1hcmtlciA9Ci0gICAgLy8gMHgl
MDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIGxlbmd0aCwgKHVpbnRwdHJfdCltYXJrZXIp
OworICAgIEVWRU5UKCJnbEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNoYWRlciA9ICV1LCBHTHNpemVpIGJ1ZnNpemUgPSAl
ZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xjaGFy
ICpzb3VyY2UgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBz
aGFkZXIsIGJ1ZnNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNvdXJjZSk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKGNv
bnRleHQsIGxlbmd0aCwgbWFya2VyKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzaGFkZXJQ
YWNrZWQsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aW5zZXJ0RXZlbnRNYXJrZXIobGVu
Z3RoLCBtYXJrZXIpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VHJhbnNsYXRlZFNoYWRlclNv
dXJjZShzaGFkZXJQYWNrZWQsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEluc2VydEV2ZW50TWFya2VyRVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbGVuZ3RoLCBtYXJrZXIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNoYWRlclBhY2tl
ZCwgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIHNvdXJjZSk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEludmFsaWRhdGVGcmFtZWJ1ZmZlckNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzKQorR0x1aW50IEdMX0FQSUVOVFJZIEdldFVuaWZvcm1CbG9ja0luZGV4Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICp1bmlmb3Jt
QmxvY2tOYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEludmFsaWRhdGVGcmFtZWJ1ZmZlciIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIG51bUF0dGFj
aG1lbnRzID0gJWQsIGNvbnN0IEdMZW51bSAiCi0gICAgICAgICAgIiphdHRhY2htZW50cyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwgbnVtQXR0YWNobWVudHMs
Ci0gICAgICAgICAgKHVpbnRwdHJfdClhdHRhY2htZW50cyk7CisgICAgRVZFTlQoImdsR2V0VW5p
Zm9ybUJsb2NrSW5kZXgiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIGNvbnN0IEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sICh1aW50cHRyX3QpdW5pZm9ybUJs
b2NrTmFtZSk7CiAKKyAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2ht
ZW50cywgYXR0YWNobWVudHMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJs
b2NrTmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldFVu
aWZvcm1CbG9ja0luZGV4KHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja05hbWUpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW52YWxpZGF0ZUZyYW1lYnVmZmVyLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICBhdHRhY2htZW50cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0VW5pZm9y
bUJsb2NrSW5kZXgsIEdMdWludD4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFVuaWZvcm1CbG9ja0luZGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgdW5pZm9ybUJsb2NrTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFVuaWZvcm1CbG9ja0luZGV4LCBHTHVpbnQ+KCk7
CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBJ
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRS
WSBHZXRVbmlmb3JtSW5kaWNlc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB1
bmlmb3JtQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnVuaWZvcm1OYW1lcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICp1bmlmb3JtSW5kaWNlcykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBudW1BdHRhY2htZW50cyA9ICVk
LCBjb25zdCBHTGVudW0gIgotICAgICAgICAgICIqYXR0YWNobWVudHMgPSAweCUwMTYiIFBSSXhQ
VFIKLSAgICAgICAgICAiLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0
aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksIG51bUF0dGFj
aG1lbnRzLAotICAgICAgICAgICh1aW50cHRyX3QpYXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBo
ZWlnaHQpOworICAgIEVWRU5UKCJnbEdldFVuaWZvcm1JbmRpY2VzIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHNpemVpIHVuaWZvcm1Db3VudCA9ICVk
LCBjb25zdCBHTGNoYXIgIgorICAgICAgICAgICIqY29uc3QqdW5pZm9ybU5hbWVzID0gMHglMDE2
IiBQUkl4UFRSICIsIEdMdWludCAqdW5pZm9ybUluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCB1bmlmb3JtQ291bnQsICh1aW50cHRy
X3QpdW5pZm9ybU5hbWVzLCAodWludHB0cl90KXVuaWZvcm1JbmRpY2VzKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0
dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1JbmRpY2VzKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IHVuaWZvcm1Db3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaWZvcm1OYW1lcywgdW5pZm9ybUluZGljZXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5pbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMsIHgsIHks
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
aWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtUGFj
a2VkLCB1bmlmb3JtQ291bnQsIHVuaWZvcm1OYW1lcywgdW5pZm9ybUluZGljZXMpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0VW5pZm9ybUluZGljZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCB1bmlmb3JtQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybU5hbWVz
LCB1bmlmb3JtSW5kaWNlcyk7CiAgICAgfQogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNC
dWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZmZlcikKK0dMaW50
IEdMX0FQSUVOVFJZIEdldFVuaWZvcm1Mb2NhdGlvbkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc0J1ZmZlciIsICJj
b250ZXh0ID0gJWQsIEdMdWludCBidWZmZXIgPSAldSIsIENJRChjb250ZXh0KSwgYnVmZmVyKTsK
KyAgICBFVkVOVCgiZ2xHZXRVbmlmb3JtTG9jYXRpb24iLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIGNvbnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIHByb2dyYW0sICh1aW50cHRyX3QpbmFt
ZSk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgR0xpbnQgcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzQnVmZmVyKGNvbnRleHQsIGJ1ZmZlclBhY2tl
ZCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VW5pZm9y
bUxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQt
PmlzQnVmZmVyKGJ1ZmZlclBhY2tlZCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUGFja2VkLCBuYW1lKTsKICAgICAgICAgfQog
ICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzQnVmZmVyLCBHTGJvb2xlYW4+KCk7CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpH
ZXRVbmlmb3JtTG9jYXRpb24sIEdMaW50PigpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoSXNCdWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBidWZmZXJQYWNrZWQsIHJldHVy
blZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtTG9jYXRpb24sIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lLCByZXR1cm5WYWx1ZSk7CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OklzQnVmZmVyLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFVuaWZvcm1Mb2Nh
dGlvbiwgR0xpbnQ+KCk7CiAgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xi
b29sZWFuIEdMX0FQSUVOVFJZIElzRW5hYmxlZENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gY2FwKQordm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtZnZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNFbmFibGVkIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIGNhcCA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIGNhcCkpOworICAgIEVWRU5UKCJn
bEdldFVuaWZvcm1mdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0g
PSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4
UFRSCisgICAgICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2Nh
dGlvbiwgKHVpbnRwdHJfdClwYXJhbXMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
SXNFbmFibGVkKGNvbnRleHQsIGNhcCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5p
Zm9ybWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IGNvbnRleHQtPmlzRW5hYmxlZChjYXApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6SXNFbmFibGVkLCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcyk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc0VuYWJsZWQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBjYXAsIHJldHVyblZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRV
bmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgcGFyYW1zKTsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNFbmFibGVkLCBHTGJvb2xl
YW4+KCk7Ci0gICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdM
X0FQSUVOVFJZIElzRW5hYmxlZGlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4KQordm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtaXZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzRW5hYmxl
ZGkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1
IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpF
bmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKKyAgICBFVkVOVCgiZ2xHZXRVbmlmb3JtaXYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCAodWludHB0cl90KXBh
cmFtcyk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNFbmFi
bGVkaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRVbmlmb3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gY29udGV4dC0+aXNFbmFibGVkaSh0YXJnZXQsIGluZGV4KTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGksIEdMYm9vbGVhbj4oKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzRW5h
YmxlZGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4LCByZXR1cm5WYWx1ZSk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGksIEdMYm9vbGVhbj4oKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICB9Ci0gICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNGZW5jZU5WQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmZW5jZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
VW5pZm9ybXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbElzRmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9ICV1Iiwg
Q0lEKGNvbnRleHQpLCBmZW5jZSk7CisgICAgRVZFTlQoImdsR2V0VW5pZm9ybXVpdiIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCAodWludHB0cl90KXBhcmFt
cyk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUlzRmVuY2VOVihjb250ZXh0LCBmZW5jZVBhY2tlZCkpOwotICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNG
ZW5jZU5WKGZlbmNlUGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIHBhcmFtcykpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
OklzRmVuY2VOViwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9y
bXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKElzRmVuY2VOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZl
bmNlUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRmVuY2VO
ViwgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm11aXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1z
KTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgSXNGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
ZnJhbWVidWZmZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdldFVuc2lnbmVkQnl0ZXZFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTHVieXRlICpkYXRhKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbElzRnJhbWVidWZmZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZnJhbWVi
dWZmZXIgPSAldSIsIENJRChjb250ZXh0KSwgZnJhbWVidWZmZXIpOworICAgIEVWRU5UKCJnbEdl
dFVuc2lnbmVkQnl0ZXZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFt
ZSA9ICVzLCBHTHVieXRlICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCks
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBOYW1lLCBwbmFtZSks
ICh1aW50cHRyX3QpZGF0YSk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAg
ICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlclBh
Y2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVHZXRVbnNpZ25lZEJ5dGV2RVhUKGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250
ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyUGFja2VkKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRnJhbWVidWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldFVuc2lnbmVkQnl0ZXYocG5hbWUsIGRhdGEpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNGcmFtZWJ1ZmZlciwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGZyYW1lYnVmZmVyUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzRnJhbWVidWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRVbnNpZ25lZEJ5dGV2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIGRhdGEpOwog
ICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRS
WSBJc0ZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBm
cmFtZWJ1ZmZlcikKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VW5zaWduZWRCeXRlaV92RVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSAqZGF0YSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xJc0ZyYW1lYnVmZmVyT0VTIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZy
YW1lYnVmZmVyID0gJXUiLCBDSUQoY29udGV4dCksIGZyYW1lYnVmZmVyKTsKKyAgICBFVkVOVCgi
Z2xHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdMdWJ5dGUgKmRhdGEgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBpbmRleCwgKHVpbnRwdHJfdClkYXRhKTsK
IAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdM
PEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0ZyYW1lYnVmZmVyT0VTKGNvbnRleHQsIGZyYW1lYnVm
ZmVyUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVYVChjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBk
YXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyUGFja2VkKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRnJhbWVidWZmZXJPRVMs
IEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuc2lnbmVkQnl0ZWlfdih0
YXJnZXQsIGluZGV4LCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElz
RnJhbWVidWZmZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwg
cmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1
ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0ZyYW1lYnVmZmVyT0VTLCBH
TGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5zaWduZWRCeXRlaV92RVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSk7CiAgICAgfQotICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzTWVtb3J5
T2JqZWN0RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBtZW1vcnlPYmpl
Y3QpCit2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYklpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc01lbW9y
eU9iamVjdEVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlPYmplY3QgPSAldSIsIENJ
RChjb250ZXh0KSwKLSAgICAgICAgICBtZW1vcnlPYmplY3QpOworICAgIEVWRU5UKCJnbEdldFZl
cnRleEF0dHJpYklpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpWZXJ0ZXhBdHRyaWJFbnVtLCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJh
bXMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgICAgICAgICAgICAgPSBG
cm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNNZW1vcnlPYmplY3RFWFQoY29udGV4dCwg
bWVtb3J5T2JqZWN0UGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdihjb250ZXh0LCBpbmRleCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNNZW1vcnlPYmplY3QobWVtb3J5T2JqZWN0
UGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzTWVtb3J5
T2JqZWN0RVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhB
dHRyaWJJaXYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoSXNNZW1vcnlPYmplY3RFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtZW1vcnlP
YmplY3RQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNNZW1v
cnlPYmplY3RFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRWZXJ0
ZXhBdHRyaWJJaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVO
VFJZIElzUHJvZ3JhbUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3Jh
bSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSXVpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNQ
cm9ncmFtIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJRChjb250ZXh0
KSwgcHJvZ3JhbSk7CisgICAgRVZFTlQoImdsR2V0VmVydGV4QXR0cmliSXVpdiIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBH
THVpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIGluZGV4LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4QXR0cmliRW51bSwg
cG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1Byb2dyYW0o
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2KGNvbnRleHQsIGluZGV4
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbVBhY2tl
ZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1Byb2dyYW0sIEdM
Ym9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYkl1aXYoaW5k
ZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNQ
cm9ncmFtLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcmV0dXJuVmFsdWUp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1Byb2dyYW0sIEdMYm9vbGVhbj4oKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRWZXJ0ZXhBdHRyaWJJdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1Byb2dyYW1QaXBlbGluZUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGlwZWxpbmUpCit2b2lkIEdMX0FQSUVOVFJZIEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICoqcG9pbnRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1Byb2dyYW1Q
aXBlbGluZSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBwaXBlbGluZSA9ICV1IiwgQ0lEKGNvbnRl
eHQpLCBwaXBlbGluZSk7CisgICAgRVZFTlQoImdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgdm9pZCAqKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBpbmRleCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7CiAKLSAgICBHTGJvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByb2dyYW1QaXBl
bGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxp
bmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUlzUHJvZ3JhbVBpcGVsaW5lKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcG9pbnRlcikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gY29udGV4dC0+aXNQcm9ncmFtUGlwZWxpbmUocGlwZWxpbmVQYWNrZWQpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXRE
ZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNQcm9ncmFtUGlwZWxpbmUsIEdMYm9vbGVh
bj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4
LCBwbmFtZSwgcG9pbnRlcik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1By
b2dyYW1QaXBlbGluZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCByZXR1
cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUHJvZ3JhbVBpcGVsaW5lLCBHTGJv
b2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VmVydGV4QXR0cmliUG9pbnRlcnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBvaW50ZXIpOwogICAgIH0KLSAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1F1ZXJ5
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpZCkKK3ZvaWQgR0xfQVBJRU5U
UlkgR2V0VmVydGV4QXR0cmliZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1F1ZXJ5IiwgImNvbnRleHQgPSAlZCwgR0x1
aW50IGlkID0gJXUiLCBDSUQoY29udGV4dCksIGlkKTsKKyAgICBFVkVOVCgiZ2xHZXRWZXJ0ZXhB
dHRyaWJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKLSAgICBHTGJvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1F1ZXJ5KGNvbnRleHQsIGlk
UGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gY29udGV4dC0+aXNRdWVyeShpZFBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRS
ZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1F1ZXJ5LCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1F1ZXJ5LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgaWRQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNRdWVy
eSwgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFZlcnRleEF0dHJpYmZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KLSAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1F1ZXJ5
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpZCkKK3ZvaWQgR0xfQVBJ
RU5UUlkgR2V0VmVydGV4QXR0cmliaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNRdWVyeUVYVCIsICJjb250ZXh0ID0gJWQs
IEdMdWludCBpZCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpZCk7CisgICAgRVZFTlQoImdsR2V0VmVy
dGV4QXR0cmliaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1
LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9v
bGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBp
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlk
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzUXVlcnlFWFQoY29udGV4
dCwgaWRQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYml2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1F1ZXJ5KGlkUGFja2VkKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUXVlcnlFWFQsIEdMYm9vbGVhbj4oKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzUXVlcnlFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc1F1ZXJ5RVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
VmVydGV4QXR0cmliaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzUmVuZGVyYnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCByZW5kZXJidWZmZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtZnZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzUmVu
ZGVyYnVmZmVyIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICV1IiwgQ0lE
KGNvbnRleHQpLCByZW5kZXJidWZmZXIpOworICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtZnYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGZsb2F0ICIKKyAgICAgICAgICAiKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dy
YW0sIGxvY2F0aW9uLCBidWZTaXplLCAodWludHB0cl90KXBhcmFtcyk7CiAKLSAgICBHTGJvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJlbmRlcmJ1ZmZl
cklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJ
RD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlSXNSZW5kZXJidWZmZXIoY29udGV4dCwgcmVuZGVyYnVmZmVyUGFj
a2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1JlbmRlcmJ1
ZmZlcihyZW5kZXJidWZmZXJQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNSZW5kZXJidWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmdldG5Vbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1JlbmRlcmJ1ZmZl
ciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJlbmRlcmJ1ZmZlclBhY2tlZCwgcmV0dXJuVmFsdWUp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1JlbmRlcmJ1ZmZlciwgR0xib29sZWFuPigpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdM
Ym9vbGVhbiBHTF9BUElFTlRSWSBJc1JlbmRlcmJ1ZmZlck9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQordm9pZCBHTF9BUElFTlRSWSBHZXRuVW5p
Zm9ybWZ2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
KnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1JlbmRlcmJ1ZmZlck9FUyIsICJjb250ZXh0ID0g
JWQsIEdMdWludCByZW5kZXJidWZmZXIgPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBy
ZW5kZXJidWZmZXIpOworICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtZnZFWFQiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGZsb2F0ICIKKyAgICAgICAgICAiKnBhcmFtcyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0
aW9uLCBidWZTaXplLCAodWludHB0cl90KXBhcmFtcyk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJu
VmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRl
cmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVy
YnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlSXNSZW5kZXJidWZmZXJPRVMoY29udGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkKSk7
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
IFZhbGlkYXRlR2V0blVuaWZvcm1mdkVYVChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1JlbmRlcmJ1ZmZl
cihyZW5kZXJidWZmZXJQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNSZW5kZXJidWZmZXJPRVMsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmdldG5Vbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1JlbmRlcmJ1ZmZl
ck9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJlbmRlcmJ1ZmZlclBhY2tlZCwgcmV0dXJuVmFs
dWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1JlbmRlcmJ1ZmZlck9FUywgR0xib29sZWFu
PigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnZFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBidWZTaXplLCBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1NlbWFwaG9yZUVYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgc2VtYXBob3JlKQordm9pZCBHTF9BUElFTlRSWSBHZXRu
VW5pZm9ybWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsSXNTZW1hcGhvcmVFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBo
b3JlID0gJXUiLCBDSUQoY29udGV4dCksIHNlbWFwaG9yZSk7CisgICAgRVZFTlQoImdsR2V0blVu
aWZvcm1pdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMaW50ICIKKyAgICAg
ICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCAodWludHB0cl90KXBhcmFtcyk7CiAKLSAg
ICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNl
bWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1h
cGhvcmVJRD4oc2VtYXBob3JlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQoY29udGV4dCwgc2VtYXBob3JlUGFj
a2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1NlbWFwaG9y
ZShzZW1hcGhvcmVQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6SXNTZW1hcGhvcmVFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdl
dG5Vbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1NlbWFwaG9yZUVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0K
LSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5W
YWx1ZTxFbnRyeVBvaW50OjpJc1NlbWFwaG9yZUVYVCwgR0xib29sZWFuPigpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBH
TF9BUElFTlRSWSBJc1NhbXBsZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IHNhbXBsZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtaXZFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xJc1NhbXBsZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1IiwgQ0lEKGNv
bnRleHQpLCBzYW1wbGVyKTsKKyAgICBFVkVOVCgiZ2xHZXRuVW5pZm9ybWl2RVhUIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQgIgorICAgICAgICAgICIqcGFyYW1zID0g
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9j
YXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1NhbXBsZXIoY29udGV4dCwg
c2FtcGxlclBhY2tlZCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlk
YXRlR2V0blVuaWZvcm1pdkVYVChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgYnVmU2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlclBh
Y2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1NhbXBsZXIs
IEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtaXYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShJc1NhbXBsZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1w
bGVyUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2FtcGxl
ciwgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtaXZFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1NoYWRlckNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgc2hhZGVyKQordm9pZCBHTF9BUElFTlRSWSBH
ZXRuVW5pZm9ybXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNTaGFkZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2hh
ZGVyID0gJXUiLCBDSUQoY29udGV4dCksIHNoYWRlcik7CisgICAgRVZFTlQoImdsR2V0blVuaWZv
cm11aXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHVpbnQgIgorICAgICAg
ICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAg
IEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUlzU2hhZGVyKGNvbnRleHQsIHNoYWRlclBhY2tlZCkpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNT
aGFkZXIoc2hhZGVyUGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzU2hhZGVyLCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5p
Zm9ybXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzU2hhZGVyLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgc2hhZGVyUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzU2hhZGVyLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVu
aWZvcm11aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOwogICAgIH0KLSAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1N5bmND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzeW5jIHN5bmMpCit2b2lkIEdMX0FQSUVO
VFJZIEhpbnRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xl
bnVtIG1vZGUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNTeW5jIiwgImNvbnRleHQgPSAlZCwgR0xzeW5j
IHN5bmMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICAodWlu
dHB0cl90KXN5bmMpOworICAgIEVWRU5UKCJnbEhpbnQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkhpbnRUYXJnZXQsIHRhcmdldCksCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkhpbnRNb2RlLCBtb2RlKSk7CiAKLSAgICBH
TGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1N5bmMoY29udGV4dCwgc3luYykpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVIaW50KGNvbnRleHQsIHRhcmdldCwg
bW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gY29udGV4dC0+aXNTeW5jKHN5bmMpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTeW5jLCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAgICBj
b250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShJc1N5bmMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzeW5jLCByZXR1cm5WYWx1ZSk7Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU3luYywgR0xib29sZWFuPigpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEhpbnQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG1vZGUpOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJ
c1RleHR1cmVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHRleHR1cmUpCit2
b2lkIEdMX0FQSUVOVFJZIEltcG9ydE1lbW9yeUZkRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBmZCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1RleHR1cmUi
LCAiY29udGV4dCA9ICVkLCBHTHVpbnQgdGV4dHVyZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCB0ZXh0
dXJlKTsKKyAgICBFVkVOVCgiZ2xJbXBvcnRNZW1vcnlGZEVYVCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBzaXplID0gJWxsdSwgR0xlbnVt
IGhhbmRsZVR5cGUgPSAlcywgR0xpbnQgIgorICAgICAgICAgICJmZCA9ICVkIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihz
aXplKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RXh0ZXJuYWxIYW5k
bGVUeXBlLCBoYW5kbGVUeXBlKSwgZmQpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlUGFj
a2VkKSk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAgICBI
YW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxIYW5kbGVUeXBlPihoYW5kbGVUeXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlSW1wb3J0TWVtb3J5
RmRFWFQoY29udGV4dCwgbWVtb3J5UGFja2VkLCBzaXplLCBoYW5kbGVUeXBlUGFja2VkLCBmZCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
blZhbHVlID0gY29udGV4dC0+aXNUZXh0dXJlKHRleHR1cmVQYWNrZWQpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNUZXh0dXJlLCBHTGJvb2xlYW4+KCk7CisgICAg
ICAgICAgICBjb250ZXh0LT5pbXBvcnRNZW1vcnlGZChtZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRs
ZVR5cGVQYWNrZWQsIGZkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzVGV4
dHVyZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHJldHVyblZhbHVlKTsK
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNUZXh0dXJlLCBHTGJvb2xlYW4+KCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoSW1wb3J0TWVtb3J5RmRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBt
ZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgZmQpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBH
TF9BUElFTlRSWSBJc1RyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBpZCkKK3ZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0U2VtYXBob3JlRmRFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZkKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbElzVHJhbnNmb3JtRmVlZGJhY2siLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgaWQgPSAldSIsIENJRChjb250ZXh0KSwgaWQpOworICAgIEVWRU5UKCJnbEltcG9ydFNlbWFw
aG9yZUZkRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0g
JXUsIEdMZW51bSBoYW5kbGVUeXBlID0gJXMsIEdMaW50IGZkID0gJWQiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RXh0ZXJu
YWxIYW5kbGVUeXBlLCBoYW5kbGVUeXBlKSwgZmQpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZh
bHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0lEIGlk
UGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBo
b3JlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+
KHNlbWFwaG9yZSk7CisgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRsZVR5cGUpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNU
cmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LCBpZFBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUltcG9ydFNlbWFw
aG9yZUZkRVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgaGFuZGxlVHlwZVBhY2tlZCwgZmQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IGNvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWRQYWNrZWQpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNUcmFuc2Zvcm1GZWVkYmFjaywgR0xi
b29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+aW1wb3J0U2VtYXBob3JlRmQoc2VtYXBo
b3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLCBmZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShJc1RyYW5zZm9ybUZlZWRiYWNrLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQ
YWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0
dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNUcmFuc2Zvcm1G
ZWVkYmFjaywgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEltcG9ydFNlbWFw
aG9yZUZkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBoYW5kbGVU
eXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGZkKTsKICAgICB9Ci0gICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNWZXJ0ZXhBcnJheUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYXJyYXkpCit2b2lkIEdMX0FQSUVO
VFJZIEluc2VydEV2ZW50TWFya2VyRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKm1hcmtlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1ZlcnRleEFycmF5Iiwg
ImNvbnRleHQgPSAlZCwgR0x1aW50IGFycmF5ID0gJXUiLCBDSUQoY29udGV4dCksIGFycmF5KTsK
KyAgICAvLyBEb24ndCBydW4gdGhlIEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJr
ZXIgZW50cnkgcG9pbnRzLgorICAgIC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcg
ZXZlbnRzIGJlaW5nIHNldCBieSB0aGUgY2FsbGVyLgorICAgIC8vIEVWRU5UKCJnbEluc2VydEV2
ZW50TWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3Qg
R0xjaGFyICptYXJrZXIgPQorICAgIC8vIDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQp
LCBsZW5ndGgsICh1aW50cHRyX3QpbWFya2VyKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1
ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1ZlcnRleEFycmF5KGNvbnRleHQsIGFycmF5UGFj
a2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUluc2VydEV2ZW50TWFya2VyRVhUKGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBj
b250ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5UGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OklzVmVydGV4QXJyYXksIEdMYm9vbGVhbj4oKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmluc2VydEV2ZW50TWFya2VyKGxlbmd0aCwgbWFya2VyKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzVmVydGV4QXJyYXksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBhcnJheVBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJ
c1ZlcnRleEFycmF5LCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSW5zZXJ0
RXZlbnRNYXJrZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsZW5ndGgsIG1hcmtlcik7CiAg
ICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZ
IElzVmVydGV4QXJyYXlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGFy
cmF5KQordm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlRnJhbWVidWZmZXJDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICph
dHRhY2htZW50cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1ZlcnRleEFycmF5T0VTIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IGFycmF5ID0gJXUiLCBDSUQoY29udGV4dCksIGFycmF5KTsKKyAgICBFVkVO
VCgiZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBudW1BdHRhY2htZW50cyA9ICVkLCBjb25zdCBHTGVu
dW0gIgorICAgICAgICAgICIqYXR0YWNobWVudHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZm
ZXJUYXJnZXQsIHRhcmdldCksIG51bUF0dGFjaG1lbnRzLAorICAgICAgICAgICh1aW50cHRyX3Qp
YXR0YWNobWVudHMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRh
dGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywg
YXR0YWNobWVudHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJyYXlQYWNrZWQp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNWZXJ0ZXhBcnJheU9F
UywgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+aW52YWxpZGF0ZUZyYW1lYnVm
ZmVyKHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKElzVmVydGV4QXJyYXlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBhcnJheVBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1Zl
cnRleEFycmF5T0VTLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSW52YWxp
ZGF0ZUZyYW1lYnVmZmVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2ht
ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50cyk7CiAgICAgfQotICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVsZkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCit2
b2lkIEdMX0FQSUVOVFJZIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVu
dW0gKmF0dGFjaG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsTGlnaHRNb2RlbGYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5h
bWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE1vZGVsUGFyYW1ldGVyLCBwbmFtZSksIHBh
cmFtKTsKKyAgICBFVkVOVCgiZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBudW1BdHRhY2htZW50
cyA9ICVkLCBjb25zdCBHTGVudW0gIgorICAgICAgICAgICIqYXR0YWNobWVudHMgPSAweCUwMTYi
IFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXpl
aSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksIG51
bUF0dGFjaG1lbnRzLAorICAgICAgICAgICh1aW50cHRyX3QpYXR0YWNobWVudHMsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRNb2RlbGYoY29udGV4dCwgcG5hbWUs
IHBhcmFtKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFj
aG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bGlnaHRN
b2RlbGYocG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cywgeCwgeSwgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKExpZ2h0TW9kZWxmLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJbnZh
bGlkYXRlU3ViRnJhbWVidWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG51bUF0
dGFjaG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbGZ2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzQnVmZmVyQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBidWZmZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTGlnaHRNb2RlbGZ2
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xm
bG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TW9kZWxQYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbElzQnVmZmVyIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IGJ1ZmZlciA9ICV1IiwgQ0lEKGNvbnRleHQpLCBidWZmZXIpOwogCisgICAg
R0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWxmdihjb250ZXh0
LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0J1ZmZlcihjb250ZXh0
LCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5saWdodE1vZGVsZnYocG5hbWUsIHBhcmFtcyk7CisgICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzQnVmZmVyKGJ1ZmZlclBhY2tlZCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodE1vZGVsZnYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0J1
ZmZlciwgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNC
dWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBidWZmZXJQYWNrZWQsIHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNCdWZmZXIsIEdMYm9vbGVhbj4oKTsKICAgICB9Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIExpZ2h0TW9kZWx4
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIGNhcCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMaWdodE1vZGVseCIsICJjb250
ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkIHBhcmFtID0gMHglWCIsIENJRChj
b250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHRNb2Rl
bFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsSXNFbmFibGVkIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIGNhcCA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIGNhcCkpOwogCisgICAgR0xib29s
ZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWx4KGNvbnRleHQsIHBuYW1l
LCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJ
c0VuYWJsZWQoY29udGV4dCwgY2FwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+bGlnaHRNb2RlbHgocG5hbWUsIHBhcmFtKTsKKyAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodE1vZGVseCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNFbmFibGVk
LCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc0VuYWJs
ZWQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjYXAsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6SXNFbmFibGVkLCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVseHZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbSkK
K0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMaWdo
dE1vZGVseHYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBj
b25zdCBHTGZpeGVkICpwYXJhbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAot
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE1vZGVsUGFyYW1ldGVy
LCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJnbElzRW5hYmxlZGkiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVD
YXAsIHRhcmdldCksIGluZGV4KTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodE1vZGVseHYo
Y29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUlzRW5hYmxlZGkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmxpZ2h0TW9kZWx4dihwbmFtZSwgcGFyYW0pOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBj
b250ZXh0LT5pc0VuYWJsZWRpKHRhcmdldCwgaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoTGlnaHRNb2RlbHh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBh
cmFtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWRpLCBHTGJvb2xlYW4+
KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc0VuYWJsZWRpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpJc0VuYWJsZWRpLCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMaWdodGZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
CitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkaUVYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
TGlnaHRmIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGxpZ2h0ID0gJXMsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAotICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7Cisg
ICAgRVZFTlQoImdsSXNFbmFibGVkaUVYVCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5kZXgpOwogCisgICAg
R0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBMaWdo
dFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQ
YXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodGYoY29u
dGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0VuYWJsZWRpRVhUKGNvbnRleHQsIHRhcmdl
dCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5saWdodGYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRW5hYmxlZGkodGFyZ2V0LCBpbmRleCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodGYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc0VuYWJsZWRpRVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShJc0VuYWJsZWRpRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBp
bmRleCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWRpRVhU
LCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBMaWdodGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgSXNFbmFibGVkaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbExp
Z2h0ZnYiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbGlnaHQgPSAlcywgR0xlbnVt
IHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAg
ICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6TGlnaHROYW1lLCBsaWdodCksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQo
ImdsSXNFbmFibGVkaU9FUyIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1
aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5kZXgpOwogCisgICAgR0xib29sZWFu
IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBMaWdodFBhcmFtZXRl
ciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+
KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodGZ2KGNvbnRleHQsIGxp
Z2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRW5hYmxlZGlPRVMoY29udGV4dCwgdGFyZ2V0LCBpbmRl
eCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmxpZ2h0ZnYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc0VuYWJsZWRpKHRhcmdldCwgaW5kZXgpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTGlnaHRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpJc0VuYWJsZWRpT0VTLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShJc0VuYWJsZWRpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRl
eCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWRpT0VTLCBH
TGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBMaWdodHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGxp
Z2h0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkg
SXNGZW5jZU5WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmZW5jZSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xMaWdodHgiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbGlnaHQgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwKLSAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE5hbWUsIGxpZ2h0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHRQYXJhbWV0ZXIsIHBu
YW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbElzRmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdM
dWludCBmZW5jZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBmZW5jZSk7CiAKKyAgICBHTGJvb2xlYW4g
cmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4o
cG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUxpZ2h0eChjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAgICAgIEZl
bmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPEZlbmNlTlZJRD4oZmVuY2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVJc0ZlbmNlTlYoY29udGV4dCwgZmVuY2VQYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5saWdodHgobGln
aHQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmlzRmVuY2VOVihmZW5jZVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShMaWdodHgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBh
cmFtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0ZlbmNlTlYsIEdMYm9vbGVhbj4o
KTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzRmVuY2VOViwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGZlbmNlUGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OklzRmVuY2VOViwgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTGlnaHR4dkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBs
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFy
YW1zKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGZyYW1lYnVmZmVyKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAg
ICAiZ2xMaWdodHh2IiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGxpZ2h0ID0gJXMs
IEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQ
VFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAotICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6TGlnaHRQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAg
IEVWRU5UKCJnbElzRnJhbWVidWZmZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZnJhbWVidWZm
ZXIgPSAldSIsIENJRChjb250ZXh0KSwgZnJhbWVidWZmZXIpOwogCisgICAgR0xib29sZWFuIHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBMaWdodFBhcmFtZXRlciBw
bmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBu
YW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEZyYW1lYnVmZmVySUQg
ZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVm
ZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0eHYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2Vk
LCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSXNGcmFtZWJ1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmxpZ2h0
eHYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBjb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyUGFja2VkKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKExpZ2h0eHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsaWdo
dCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNG
cmFtZWJ1ZmZlciwgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoSXNGcmFtZWJ1ZmZlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2Vk
LCByZXR1cm5WYWx1ZSk7CiAgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRnJhbWVidWZmZXIsIEdM
Ym9vbGVhbj4oKTsKKyAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdM
X0FQSUVOVFJZIExpbmVXaWR0aENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0
IHdpZHRoKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXJPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZyYW1lYnVmZmVyKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bExpbmVXaWR0aCIsICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgd2lkdGggPSAlZiIsIENJRChjb250
ZXh0KSwgd2lkdGgpOworICAgIEVWRU5UKCJnbElzRnJhbWVidWZmZXJPRVMiLCAiY29udGV4dCA9
ICVkLCBHTHVpbnQgZnJhbWVidWZmZXIgPSAldSIsIENJRChjb250ZXh0KSwgZnJhbWVidWZmZXIp
OwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGluZVdpZHRoKGNvbnRleHQsIHdpZHRo
KSk7CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRnJhbWVi
dWZmZXJPRVMoY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5saW5lV2lkdGgod2lkdGgp
OworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc0ZyYW1lYnVmZmVyKGZyYW1l
YnVmZmVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKExpbmVXaWR0
aCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHdpZHRoKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc0ZyYW1lYnVmZmVyT0VTLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShJc0ZyYW1lYnVmZmVyT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnJh
bWVidWZmZXJQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNG
cmFtZWJ1ZmZlck9FUywgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTGluZVdpZHRoeENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGZpeGVkIHdpZHRoKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzTWVtb3J5
T2JqZWN0RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBtZW1vcnlPYmpl
Y3QpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsTGluZVdpZHRoeCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQg
d2lkdGggPSAweCVYIiwgQ0lEKGNvbnRleHQpLCB3aWR0aCk7CisgICAgRVZFTlQoImdsSXNNZW1v
cnlPYmplY3RFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5T2JqZWN0ID0gJXUiLCBD
SUQoY29udGV4dCksCisgICAgICAgICAgbWVtb3J5T2JqZWN0KTsKIAorICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUxpbmVXaWR0aHgoY29udGV4dCwgd2lkdGgpKTsKKyAgICAgICAgTWVtb3J5
T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1v
cnlPYmplY3QpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlSXNNZW1vcnlPYmplY3RFWFQoY29udGV4dCwgbWVtb3J5T2JqZWN0UGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+bGluZVdpZHRoeCh3aWR0aCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmlzTWVtb3J5T2JqZWN0KG1lbW9yeU9iamVjdFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShMaW5lV2lkdGh4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgd2lkdGgp
OworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzTWVtb3J5T2JqZWN0RVhULCBHTGJvb2xl
YW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc01lbW9yeU9iamVjdEVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcmV0dXJuVmFsdWUp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc01lbW9yeU9iamVjdEVYVCwgR0xib29sZWFuPigp
OwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
TGlua1Byb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0p
CitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNQcm9ncmFtQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMdWludCBwcm9ncmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbExpbmtQcm9ncmFtIiwgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJRChjb250ZXh0KSwgcHJvZ3JhbSk7
CisgICAgRVZFTlQoImdsSXNQcm9ncmFtIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0g
PSAldSIsIENJRChjb250ZXh0KSwgcHJvZ3JhbSk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpbmtQ
cm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSXNQcm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5saW5rUHJvZ3JhbShw
cm9ncmFtUGFja2VkKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNQcm9n
cmFtKHByb2dyYW1QYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTGlu
a1Byb2dyYW0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1Byb2dyYW0sIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQor
ICAgICAgICBBTkdMRV9DQVBUVVJFKElzUHJvZ3JhbSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIHJldHVyblZhbHVlKTsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNQcm9n
cmFtLCBHTGJvb2xlYW4+KCk7CisgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBMb2FkSWRlbnRpdHlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1Byb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGlwZWxpbmUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTG9hZElk
ZW50aXR5IiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsSXNQ
cm9ncmFtUGlwZWxpbmUiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGlwZWxpbmUgPSAldSIsIENJ
RChjb250ZXh0KSwgcGlwZWxpbmUpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTG9h
ZElkZW50aXR5KGNvbnRleHQpKTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBp
cGVsaW5lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUlzUHJvZ3JhbVBpcGVsaW5lKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
bG9hZElkZW50aXR5KCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzUHJv
Z3JhbVBpcGVsaW5lKHBpcGVsaW5lUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKExvYWRJZGVudGl0eSwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOworICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OklzUHJvZ3JhbVBpcGVsaW5lLCBHTGJvb2xlYW4+KCk7CisgICAgICAg
IH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1Byb2dyYW1QaXBlbGluZSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OklzUHJvZ3JhbVBpcGVsaW5lLCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMb2FkTWF0cml4ZkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGZsb2F0ICptKQorR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzUXVlcnlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGlkKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbExvYWRNYXRyaXhmIiwgImNvbnRleHQgPSAlZCwgY29uc3QgR0xmbG9h
dCAqbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgICh1aW50
cHRyX3QpbSk7CisgICAgRVZFTlQoImdsSXNRdWVyeSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBp
ZCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpZCk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVMb2FkTWF0cml4Zihjb250ZXh0LCBtKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNRdWVyeShjb250
ZXh0LCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmxvYWRNYXRyaXhmKG0pOworICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBjb250ZXh0LT5pc1F1ZXJ5KGlkUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKExvYWRNYXRyaXhmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6SXNRdWVyeSwgR0xib29sZWFuPigpOworICAgICAgICB9Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoSXNRdWVyeSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFj
a2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUXVlcnksIEdMYm9v
bGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIExvYWRNYXRyaXh4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIGNvbnN0IEdM
Zml4ZWQgKm0pCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNRdWVyeUVYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaWQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTG9hZE1hdHJpeHgi
LCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZpeGVkICptID0gMHglMDE2IiBQUkl4UFRSICIiLCBD
SUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRwdHJfdCltKTsKKyAgICBFVkVOVCgiZ2xJc1F1
ZXJ5RVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUiLCBDSUQoY29udGV4dCksIGlk
KTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRNYXRyaXh4KGNvbnRleHQsIG0p
KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1F1ZXJ5RVhUKGNvbnRleHQsIGlkUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bG9h
ZE1hdHJpeHgobSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzUXVlcnko
aWRQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTG9hZE1hdHJpeHgs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJ
c1F1ZXJ5RVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShJc1F1ZXJ5RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNRdWVyeUVYVCwgR0xib29sZWFuPigpOwogICAg
IH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTG9hZFBh
bGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgp
CitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNSZW5kZXJidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMb2FkUGFs
ZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQp
KTsKKyAgICBFVkVOVCgiZ2xJc1JlbmRlcmJ1ZmZlciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBy
ZW5kZXJidWZmZXIgPSAldSIsIENJRChjb250ZXh0KSwgcmVuZGVyYnVmZmVyKTsKIAorICAgIEdM
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9
IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRQYWxldHRlRnJvbU1v
ZGVsVmlld01hdHJpeE9FUyhjb250ZXh0KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyKGNvbnRleHQsIHJlbmRlcmJ1ZmZl
clBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmxvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeCgpOworICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJQYWNr
ZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTG9hZFBhbGV0dGVGcm9tTW9k
ZWxWaWV3TWF0cml4T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6SXNSZW5kZXJidWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAg
ICAgICBBTkdMRV9DQVBUVVJFKElzUmVuZGVyYnVmZmVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cmVuZGVyYnVmZmVyUGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
OklzUmVuZGVyYnVmZmVyLCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMb2dpY09wQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBvcGNvZGUpCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNSZW5kZXJi
dWZmZXJPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHJlbmRlcmJ1ZmZl
cikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xMb2dpY09wIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIG9wY29k
ZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpMb2dpY09wLCBvcGNvZGUpKTsKKyAgICBFVkVOVCgiZ2xJc1JlbmRlcmJ1ZmZlck9FUyIs
ICJjb250ZXh0ID0gJWQsIEdMdWludCByZW5kZXJidWZmZXIgPSAldSIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICByZW5kZXJidWZmZXIpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBMb2dpY2FsT3BlcmF0aW9uIG9wY29kZVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TG9naWNhbE9wZXJhdGlvbj4ob3Bjb2RlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvZ2ljT3AoY29udGV4dCwgb3Bjb2Rl
UGFja2VkKSk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZy
b21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyT0VTKGNv
bnRleHQsIHJlbmRlcmJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmxvZ2ljT3Aob3Bjb2RlUGFja2VkKTsKKyAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNSZW5kZXJidWZmZXIocmVuZGVyYnVm
ZmVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKExvZ2ljT3AsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBvcGNvZGVQYWNrZWQpOworICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OklzUmVuZGVyYnVmZmVyT0VTLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShJc1JlbmRlcmJ1ZmZlck9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHJlbmRlcmJ1ZmZlclBhY2tlZCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpJc1JlbmRlcmJ1ZmZlck9FUywgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKLXZvaWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlck9FU0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQorR0xib29s
ZWFuIEdMX0FQSUVOVFJZIElzU2VtYXBob3JlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBzZW1hcGhvcmUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWFwQnVmZmVyT0VTIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYWNjZXNzID0gJXMiLCBDSUQo
Y29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRh
cmdldEFSQiwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
QnVmZmVyQWNjZXNzQVJCLCBhY2Nlc3MpKTsKKyAgICBFVkVOVCgiZ2xJc1NlbWFwaG9yZUVYVCIs
ICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSIsIENJRChjb250ZXh0KSwgc2Vt
YXBob3JlKTsKIAotICAgIHZvaWQgKnJldHVyblZhbHVlOworICAgIEdMYm9vbGVhbiByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhv
cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4o
c2VtYXBob3JlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZU1hcEJ1ZmZlck9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGFjY2Vzcykp
OworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1Nl
bWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPm1h
cEJ1ZmZlcih0YXJnZXRQYWNrZWQsIGFjY2Vzcyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IGNvbnRleHQtPmlzU2VtYXBob3JlKHNlbWFwaG9yZVBhY2tlZCk7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRS
ZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJPRVMsIHZvaWQgKj4oKTsKKyAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2Vt
YXBob3JlRVhULCBHTGJvb2xlYW4+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShNYXBCdWZmZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGFjY2Vz
cywgcmV0dXJuVmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKElzU2VtYXBob3JlRVhULCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCByZXR1cm5WYWx1ZSk7CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6Ok1hcEJ1ZmZlck9FUywgdm9pZCAqPigpOworICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1NlbWFwaG9yZUVY
VCwgR0xib29sZWFuPigpOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZv
aWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaXB0ciBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcykKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1Nh
bXBsZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNhbXBsZXIpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsTWFwQnVmZmVyUmFuZ2UiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xpbnRwdHIgb2Zmc2V0ID0gJWxsdSwgR0xzaXplaXB0ciBsZW5n
dGggPSAlbGx1LCAiCi0gICAgICAgICAgIkdMYml0ZmllbGQgYWNjZXNzID0gJXMiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdl
dEFSQiwgdGFyZ2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVuZ3RoKSwKLSAgICAg
ICAgICBHTGJpdGZpZWxkVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlckFjY2Vzc01hc2ssIGFj
Y2VzcykuY19zdHIoKSk7CisgICAgRVZFTlQoImdsSXNTYW1wbGVyIiwgImNvbnRleHQgPSAlZCwg
R0x1aW50IHNhbXBsZXIgPSAldSIsIENJRChjb250ZXh0KSwgc2FtcGxlcik7CiAKLSAgICB2b2lk
ICpyZXR1cm5WYWx1ZTsKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
b2Zmc2V0LCBsZW5ndGgsIGFjY2VzcykpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBs
ZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1NhbXBs
ZXIoY29udGV4dCwgc2FtcGxlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+bWFwQnVmZmVyUmFu
Z2UodGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gY29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXJQYWNrZWQpOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXRE
ZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2UsIHZvaWQgKj4oKTsK
KyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzU2FtcGxlciwgR0xib29sZWFuPigpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoTWFwQnVmZmVyUmFuZ2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKElzU2FtcGxlciwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
LSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
TWFwQnVmZmVyUmFuZ2UsIHZvaWQgKj4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTYW1wbGVyLCBHTGJvb2xlYW4+KCk7CiAgICAg
fQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVm
ZmVyUmFuZ2VFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
cHRyIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYml0ZmllbGQgYWNjZXNzKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2hhZGVyQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBzaGFkZXIpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsTWFwQnVmZmVyUmFuZ2VFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0xpbnRwdHIgb2Zmc2V0ID0gJWxsdSwgR0xzaXplaXB0ciBsZW5ndGggPSAl
bGx1LCAiCi0gICAgICAgICAgIkdMYml0ZmllbGQgYWNjZXNzID0gJXMiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwg
dGFyZ2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNl
dCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVuZ3RoKSwKLSAgICAgICAgICBH
TGJpdGZpZWxkVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlckFjY2Vzc01hc2ssIGFjY2Vzcyku
Y19zdHIoKSk7CisgICAgRVZFTlQoImdsSXNTaGFkZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQg
c2hhZGVyID0gJXUiLCBDSUQoY29udGV4dCksIHNoYWRlcik7CiAKLSAgICB2b2lkICpyZXR1cm5W
YWx1ZTsKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VFWFQoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKSk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlSXNTaGFkZXIoY29udGV4dCwgc2hhZGVyUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBjb250ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBh
Y2Nlc3MpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1NoYWRlcihzaGFk
ZXJQYWNrZWQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVm
ZmVyUmFuZ2VFWFQsIHZvaWQgKj4oKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2hhZGVyLCBHTGJvb2xlYW4+KCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXBCdWZmZXJSYW5nZUVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2VzcywKLSAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNT
aGFkZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQsIHJldHVyblZhbHVlKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2VFWFQsIHZvaWQgKj4oKTsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNT
aGFkZXIsIEdMYm9vbGVhbj4oKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorR0xib29sZWFuIEdM
X0FQSUVOVFJZIElzU3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHN5bmMgc3lu
YykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xNYXRlcmlhbGYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFj
ZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZhY2Us
IGZhY2UpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbFBh
cmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsSXNTeW5jIiwgImNvbnRleHQg
PSAlZCwgR0xzeW5jIHN5bmMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAg
ICAgICAgICAodWludHB0cl90KXN5bmMpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbGYo
Y29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzU3luYyhjb250ZXh0LCBzeW5jKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF0ZXJp
YWxmKGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IGNvbnRleHQtPmlzU3luYyhzeW5jKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KE1hdGVyaWFsZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJh
bSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTeW5jLCBHTGJvb2xlYW4+KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1N5bmMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBzeW5jLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU3luYywg
R0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgTWF0ZXJpYWxmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNUZXh0dXJlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCB0ZXh0dXJlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xNYXRlcmlhbGZ2
IiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZhY2UgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAi
IiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0
ZXJpYWxGYWNlLCBmYWNlKSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1h
dGVyaWFsUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xJc1RleHR1cmUiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgdGV4dHVyZSA9ICV1IiwgQ0lEKGNv
bnRleHQpLCB0ZXh0dXJlKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWxmdihjb250ZXh0
LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
dGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlz
VGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF0ZXJpYWxmdihmYWNlLCBwbmFt
ZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNU
ZXh0dXJlKHRleHR1cmVQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
TWF0ZXJpYWxmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJh
bXMpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVGV4dHVyZSwgR0xib29sZWFuPigp
OworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNUZXh0dXJlLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRy
eVBvaW50OjpJc1RleHR1cmUsIEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFseENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQor
R0xib29sZWFuIEdMX0FQSUVOVFJZIElzVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGlkKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbE1hdGVyaWFseCIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVk
IHBhcmFtID0gMHglWCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6TWF0ZXJpYWxGYWNlLCBmYWNlKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOworICAgIEVW
RU5UKCJnbElzVHJhbnNmb3JtRmVlZGJhY2siLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAl
dSIsIENJRChjb250ZXh0KSwgaWQpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+
KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU1hdGVyaWFseChjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNUcmFuc2Zv
cm1GZWVkYmFjayhjb250ZXh0LCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1hdGVyaWFseChmYWNlLCBwbmFtZVBh
Y2tlZCwgcGFyYW0pOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1RyYW5z
Zm9ybUZlZWRiYWNrKGlkUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KE1hdGVyaWFseCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJh
bSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNUcmFuc2Zvcm1GZWVkYmFjaywgR0xi
b29sZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNUcmFuc2Zvcm1G
ZWVkYmFjaywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCByZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVHJhbnNmb3JtRmVlZGJhY2ssIEdMYm9vbGVhbj4oKTsK
ICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1h
dGVyaWFseHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW0pCitHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgSXNWZXJ0ZXhBcnJheUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
YXJyYXkpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF0ZXJpYWx4diIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIGZhY2UgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZml4ZWQg
KnBhcmFtID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxGYWNlLCBmYWNlKSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJhbWV0ZXIs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbSk7CisgICAgRVZFTlQoImdsSXNWZXJ0ZXhBcnJheSIs
ICJjb250ZXh0ID0gJWQsIEdMdWludCBhcnJheSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBhcnJheSk7
CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWx4dihjb250ZXh0
LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNWZXJ0ZXhBcnJheShjb250ZXh0LCBhcnJheVBhY2tl
ZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPm1hdGVyaWFseHYoZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgICAg
IHJldHVyblZhbHVlID0gY29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcnJheVBhY2tlZCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRlcmlhbHh2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc1ZlcnRleEFycmF5LCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShJc1ZlcnRleEFycmF5LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYXJyYXlQYWNr
ZWQsIHJldHVyblZhbHVlKTsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNWZXJ0ZXhBcnJheSwg
R0xib29sZWFuPigpOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgTWF0cml4SW5kZXhQb2ludGVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCitHTGJvb2xl
YW4gR0xfQVBJRU5UUlkgSXNWZXJ0ZXhBcnJheU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTHVpbnQgYXJyYXkpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF0cml4SW5kZXhQb2ludGVyT0VT
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBl
ID0gJXMsIEdMc2l6ZWkgc3RyaWRlID0gJWQsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqcG9p
bnRlciA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHNpemUs
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHR5cGUpLCBzdHJpZGUs
Ci0gICAgICAgICAgKHVpbnRwdHJfdClwb2ludGVyKTsKKyAgICBFVkVOVCgiZ2xJc1ZlcnRleEFy
cmF5T0VTIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGFycmF5ID0gJXUiLCBDSUQoY29udGV4dCks
IGFycmF5KTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNYXRyaXhJbmRleFBvaW50
ZXJPRVMoY29udGV4dCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKSk7CisgICAgICAgIFZl
cnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoY29udGV4dCwgYXJy
YXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5tYXRyaXhJbmRleFBvaW50ZXIoc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2lu
dGVyKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNWZXJ0ZXhBcnJheShh
cnJheVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRyaXhJbmRl
eFBvaW50ZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJpZGUsIHBv
aW50ZXIpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVmVydGV4QXJyYXlPRVMsIEdM
Ym9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzVmVydGV4QXJy
YXlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhcnJheVBhY2tlZCwgcmV0dXJuVmFsdWUpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRS
ZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1ZlcnRleEFycmF5T0VTLCBHTGJvb2xlYW4+KCk7CiAg
ICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNYXRy
aXhNb2RlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlKQordm9pZCBH
TF9BUElFTlRSWSBMaWdodE1vZGVsZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF0cml4TW9kZSIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdHJpeE1vZGUsIG1vZGUpKTsKKyAgICBFVkVO
VCgiZ2xMaWdodE1vZGVsZiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZs
b2F0IHBhcmFtID0gJWYiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkxpZ2h0TW9kZWxQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIE1hdHJpeFR5cGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxNYXRyaXhUeXBlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdHJpeE1vZGUoY29udGV4dCwgbW9kZVBhY2tlZCkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TGlnaHRNb2RlbGYoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF0cml4TW9kZShtb2RlUGFj
a2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmxpZ2h0TW9kZWxmKHBuYW1lLCBwYXJhbSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRyaXhNb2RlLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbW9kZVBhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTGlnaHRNb2RlbGYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IGNvdW50KQordm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVsZnZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSIiwg
ImNvbnRleHQgPSAlZCwgR0x1aW50IGNvdW50ID0gJXUiLCBDSUQoY29udGV4dCksIGNvdW50KTsK
KyAgICBFVkVOVCgiZ2xMaWdodE1vZGVsZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
TGlnaHRNb2RlbFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXhTaGFkZXJDb21w
aWxlclRocmVhZHNLSFIoY29udGV4dCwgY291bnQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRNb2RlbGZ2KGNvbnRleHQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5tYXhTaGFkZXJDb21waWxlclRocmVhZHMoY291bnQpOworICAgICAgICAgICAg
Y29udGV4dC0+bGlnaHRNb2RlbGZ2KHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgY291bnQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKExpZ2h0TW9kZWxmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBNZW1vcnlCYXJyaWVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMYml0
ZmllbGQgYmFycmllcnMpCit2b2lkIEdMX0FQSUVOVFJZIExpZ2h0TW9kZWx4Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xNZW1vcnlCYXJyaWVyIiwgImNvbnRleHQgPSAlZCwgR0xiaXRmaWVsZCBiYXJyaWVy
cyA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVu
dW1Hcm91cDo6TWVtb3J5QmFycmllck1hc2ssIGJhcnJpZXJzKS5jX3N0cigpKTsKKyAgICBFVkVO
VCgiZ2xMaWdodE1vZGVseCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZp
eGVkIHBhcmFtID0gMHglWCIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6TGlnaHRNb2RlbFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1l
bW9yeUJhcnJpZXIoY29udGV4dCwgYmFycmllcnMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWx4KGNvbnRleHQsIHBu
YW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPm1lbW9yeUJhcnJpZXIoYmFycmllcnMpOworICAgICAgICAgICAgY29u
dGV4dC0+bGlnaHRNb2RlbHgocG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKE1lbW9yeUJhcnJpZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBiYXJyaWVycyk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTGlnaHRNb2RlbHgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNZW1vcnlCYXJy
aWVyQnlSZWdpb25Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xiaXRmaWVsZCBiYXJy
aWVycykKK3ZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbHh2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW0pCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsTWVtb3J5QmFycmllckJ5UmVnaW9uIiwgImNvbnRleHQgPSAlZCwgR0xiaXRmaWVsZCBi
YXJyaWVycyA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmlu
ZyhHTGVudW1Hcm91cDo6TWVtb3J5QmFycmllck1hc2ssIGJhcnJpZXJzKS5jX3N0cigpKTsKKyAg
ICBFVkVOVCgiZ2xMaWdodE1vZGVseHYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwg
Q0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdo
dE1vZGVsUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW0pOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWVtb3J5QmFycmllckJ5UmVn
aW9uKGNvbnRleHQsIGJhcnJpZXJzKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWx4dihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5tZW1vcnlCYXJyaWVyQnlSZWdpb24oYmFycmllcnMpOworICAgICAgICAgICAgY29udGV4dC0+
bGlnaHRNb2RlbHh2KHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShNZW1vcnlCYXJyaWVyQnlSZWdpb24sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBiYXJyaWVy
cyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTGlnaHRNb2RlbHh2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTWVtb3J5
T2JqZWN0UGFyYW1ldGVyaXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1lbW9yeU9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQordm9pZCBH
TF9BUElFTlRSWSBMaWdodGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGxp
Z2h0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWVtb3J5
T2JqZWN0UGFyYW1ldGVyaXZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBt
ZW1vcnlPYmplY3QgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbXMg
PSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIG1lbW9yeU9iamVjdCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1lbW9yeU9iamVj
dFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7Cisg
ICAgRVZFTlQoImdsTGlnaHRmIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGxpZ2h0ID0gJXMsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUp
LCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQg
bWVtb3J5T2JqZWN0UGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPiht
ZW1vcnlPYmplY3QpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGlnaHRQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlTWVtb3J5T2JqZWN0UGFyYW1l
dGVyaXZFWFQoY29udGV4dCwgbWVtb3J5T2JqZWN0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0Zihj
b250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWVtb3J5T2JqZWN0UGFyYW1l
dGVyaXYobWVtb3J5T2JqZWN0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmxpZ2h0ZihsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbWVtb3J5T2JqZWN0UGFja2VkLCBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKExpZ2h0ZiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBNaW5TYW1wbGVTaGFkaW5nQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZmxvYXQgdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIExpZ2h0ZnZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbGlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNaW5TYW1wbGVTaGFkaW5nIiwgImNvbnRleHQgPSAl
ZCwgR0xmbG9hdCB2YWx1ZSA9ICVmIiwgQ0lEKGNvbnRleHQpLCB2YWx1ZSk7CisgICAgRVZFTlQo
CisgICAgICAgICJnbExpZ2h0ZnYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbGln
aHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6TGlnaHROYW1lLCBsaWdodCksCisgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFt
cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU1pblNhbXBsZVNoYWRpbmcoY29udGV4dCwgdmFsdWUpKTsKKyAgICAgICAgTGlnaHRQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5taW5TYW1wbGVTaGFkaW5nKHZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmxpZ2h0ZnYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoTWluU2FtcGxlU2hhZGluZywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodGZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBNdWx0TWF0cml4ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25z
dCBHTGZsb2F0ICptKQordm9pZCBHTF9BUElFTlRSWSBMaWdodHhDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsTXVsdE1hdHJpeGYiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZsb2F0
ICptID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRw
dHJfdCltKTsKKyAgICBFVkVOVCgiZ2xMaWdodHgiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbGln
aHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE5hbWUs
IGxpZ2h0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHRQYXJh
bWV0ZXIsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0TWF0cml4Zihjb250ZXh0LCBtKSk7CisgICAg
ICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodHgoY29udGV4dCwgbGlnaHQs
IHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPm11bHRNYXRyaXhmKG0pOworICAgICAgICAgICAgY29u
dGV4dC0+bGlnaHR4KGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW0pOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoTXVsdE1hdHJpeGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodHgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsaWdo
dCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTXVs
dE1hdHJpeHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xmaXhlZCAqbSkK
K3ZvaWQgR0xfQVBJRU5UUlkgTGlnaHR4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbE11bHRNYXRyaXh4IiwgImNvbnRleHQgPSAlZCwgY29uc3QgR0xmaXhlZCAqbSA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgICh1aW50cHRyX3Qp
bSk7CisgICAgRVZFTlQoCisgICAgICAgICJnbExpZ2h0eHYiLAorICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gbGlnaHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZml4ZWQg
KnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHROYW1lLCBsaWdodCksCisgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAo
dWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRNYXRyaXh4KGNvbnRleHQsIG0pKTsKKyAgICAgICAg
TGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0eHYoY29udGV4dCwgbGlnaHQsIHBu
YW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5tdWx0TWF0cml4eChtKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmxpZ2h0eHYobGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoTXVsdE1hdHJpeHgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodHh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGln
aHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBN
dWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmNvbnN0ICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqYmFzZXZlcnRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgTGluZVdp
ZHRoQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgd2lkdGgpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBjb25zdCBHTHNpemVpICpjb3VudCA9IDB4JTAx
NiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgKmNv
bnN0KmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNpemVpIHByaW1j
b3VudCA9ICVkLCBjb25zdCBHTGludCAqYmFzZXZlcnRleCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmlt
aXRpdmVUeXBlLCBtb2RlKSwgKHVpbnRwdHJfdCljb3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5k
aWNlcywgcHJpbWNvdW50LAotICAgICAgICAgICh1aW50cHRyX3QpYmFzZXZlcnRleCk7CisgICAg
RVZFTlQoImdsTGluZVdpZHRoIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCB3aWR0aCA9ICVmIiwg
Q0lEKGNvbnRleHQpLCB3aWR0aCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1p
dGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhF
WFQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k
aWNlcywgcHJpbWNvdW50LCBiYXNldmVydGV4KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUxpbmVXaWR0aChjb250ZXh0LCB3aWR0aCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm11bHRpRHJh
d0VsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNl
cywgcHJpbWNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+bGluZVdpZHRoKHdpZHRo
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRpRHJhd0VsZW1lbnRzQmFz
ZVZlcnRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCwgYmFzZXZl
cnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTGluZVdpZHRoLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgd2lkdGgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3Jk
NGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHEpCit2b2lkIEdMX0FQSUVOVFJZIExp
bmVXaWR0aHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCB3aWR0aCkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xNdWx0aVRleENvb3JkNGYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xmbG9hdCBzID0gJWYsIEdMZmxvYXQgdCA9ICVmLCBHTGZs
b2F0IHIgPSAlZiwgIgotICAgICAgICAgICJHTGZsb2F0IHEgPSAlZiIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVVuaXQsIHRhcmdl
dCksIHMsIHQsIHIsIHEpOworICAgIEVWRU5UKCJnbExpbmVXaWR0aHgiLCAiY29udGV4dCA9ICVk
LCBHTGZpeGVkIHdpZHRoID0gMHglWCIsIENJRChjb250ZXh0KSwgd2lkdGgpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlTXVsdGlUZXhDb29yZDRmKGNvbnRleHQsIHRhcmdldCwgcywgdCwgciwgcSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaW5lV2lkdGh4KGNvbnRl
eHQsIHdpZHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+bXVsdGlUZXhDb29yZDRmKHRhcmdldCwgcywgdCwgciwgcSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5saW5lV2lkdGh4KHdpZHRoKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKE11bHRpVGV4Q29vcmQ0ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dCwgcywgdCwgciwgcSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTGluZVdpZHRoeCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHdpZHRoKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTXVs
dGlUZXhDb29yZDR4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcSkKK3ZvaWQgR0xf
QVBJRU5UUlkgTGlua1Byb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IHByb2dyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTXVsdGlUZXhDb29yZDR4IiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGV4dHVyZSA9ICVzLCBHTGZpeGVkIHMgPSAweCVYLCBHTGZp
eGVkIHQgPSAweCVYLCBHTGZpeGVkIHIgPSAiCi0gICAgICAgICAgIjB4JVgsIEdMZml4ZWQgcSA9
IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVVbml0LCB0ZXh0dXJlKSwgcywgdCwgciwgcSk7CisgICAgRVZFTlQoImdsTGlu
a1Byb2dyYW0iLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRl
eHQpLCBwcm9ncmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRp
VGV4Q29vcmQ0eChjb250ZXh0LCB0ZXh0dXJlLCBzLCB0LCByLCBxKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpbmtQcm9ncmFtKGNvbnRleHQs
IHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5tdWx0aVRleENvb3JkNHgodGV4dHVyZSwgcywgdCwgciwgcSk7
CisgICAgICAgICAgICBjb250ZXh0LT5saW5rUHJvZ3JhbShwcm9ncmFtUGFja2VkKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRpVGV4Q29vcmQ0eCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRleHR1cmUsIHMsIHQsIHIsIHEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKExp
bmtQcm9ncmFtLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIE5vcm1hbDNmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnopCit2b2lkIEdMX0FQSUVOVFJZ
IExvYWRJZGVudGl0eUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbE5vcm1hbDNmIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBueCA9ICVmLCBHTGZsb2F0IG55
ID0gJWYsIEdMZmxvYXQgbnogPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBueCwgbnks
IG56KTsKKyAgICBFVkVOVCgiZ2xMb2FkSWRlbnRpdHkiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNv
bnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTm9ybWFsM2YoY29udGV4dCwgbngsIG55LCBueikpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMb2FkSWRlbnRpdHkoY29udGV4dCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
Pm5vcm1hbDNmKG54LCBueSwgbnopOworICAgICAgICAgICAgY29udGV4dC0+bG9hZElkZW50aXR5
KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShOb3JtYWwzZiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG54LCBueSwgbnopOworICAgICAgICBBTkdMRV9DQVBUVVJFKExvYWRJZGVu
dGl0eSwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBOb3JtYWwzeENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIG54LCBHTGZp
eGVkIG55LCBHTGZpeGVkIG56KQordm9pZCBHTF9BUElFTlRSWSBMb2FkTWF0cml4ZkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGZsb2F0ICptKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bE5vcm1hbDN4IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBueCA9IDB4JVgsIEdMZml4ZWQgbnkg
PSAweCVYLCBHTGZpeGVkIG56ID0gMHglWCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBueCwg
bnksIG56KTsKKyAgICBFVkVOVCgiZ2xMb2FkTWF0cml4ZiIsICJjb250ZXh0ID0gJWQsIGNvbnN0
IEdMZmxvYXQgKm0gPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICAodWludHB0cl90KW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWwzeChjb250ZXh0LCBueCwgbnksIG56KSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRNYXRyaXhmKGNvbnRl
eHQsIG0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5ub3JtYWwzeChueCwgbnksIG56KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmxv
YWRNYXRyaXhmKG0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTm9ybWFsM3gs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBueCwgbnksIG56KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShMb2FkTWF0cml4ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG0pOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBOb3JtYWxQb2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJp
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqcG9pbnRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgTG9hZE1hdHJpeHhDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgY29uc3QgR0xmaXhlZCAqbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAg
ImdsTm9ybWFsUG9pbnRlciIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0eXBlID0g
JXMsIEdMc2l6ZWkgc3RyaWRlID0gJWQsIGNvbnN0IHZvaWQgKnBvaW50ZXIgPSAweCUwMTYiIFBS
SXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6Ok5vcm1hbFBvaW50ZXJUeXBlLCB0eXBlKSwgc3RyaWRlLAotICAgICAgICAo
dWludHB0cl90KXBvaW50ZXIpOworICAgIEVWRU5UKCJnbExvYWRNYXRyaXh4IiwgImNvbnRleHQg
PSAlZCwgY29uc3QgR0xmaXhlZCAqbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQp
LAorICAgICAgICAgICh1aW50cHRyX3QpbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZU5vcm1hbFBvaW50ZXIoY29udGV4dCwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVy
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRNYXRy
aXh4KGNvbnRleHQsIG0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5ub3JtYWxQb2ludGVyKHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9p
bnRlcik7CisgICAgICAgICAgICBjb250ZXh0LT5sb2FkTWF0cml4eChtKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKE5vcm1hbFBvaW50ZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKExv
YWRNYXRyaXh4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbSk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIE9iamVjdExhYmVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFi
ZWwpCit2b2lkIEdMX0FQSUVOVFJZIExvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeE9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbE9iamVjdExhYmVs
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gaWRlbnRpZmllciA9ICVzLCBHTHVp
bnQgbmFtZSA9ICV1LCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCAiCi0gICAgICAgICAgIkdM
Y2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6T2JqZWN0SWRlbnRpZmllciwgaWRlbnRpZmll
ciksIG5hbWUsIGxlbmd0aCwKLSAgICAgICAgICAodWludHB0cl90KWxhYmVsKTsKKyAgICBFVkVO
VCgiZ2xMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMiLCAiY29udGV4dCA9ICVkIiwg
Q0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZU9iamVjdExhYmVsKGNvbnRleHQsIGlkZW50aWZpZXIsIG5hbWUs
IGxlbmd0aCwgbGFiZWwpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeE9FUyhjb250
ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+b2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5sb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXgoKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE9iamVjdExhYmVsLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoTG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVsS0hSQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpCi17Ci0gICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsT2JqZWN0TGFiZWxLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBpZGVudGlmaWVyID0gJXMsIEdMdWludCBuYW1lID0gJXUsIEdMc2l6ZWkgbGVuZ3RoID0gJWQs
IGNvbnN0ICIKLSAgICAgICAgICAiR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpPYmpl
Y3RJZGVudGlmaWVyLCBpZGVudGlmaWVyKSwgbmFtZSwgbGVuZ3RoLAotICAgICAgICAgICh1aW50
cHRyX3QpbGFiZWwpOwordm9pZCBHTF9BUElFTlRSWSBMb2dpY09wQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZW51bSBvcGNvZGUpCit7CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7CisgICAgRVZFTlQoImdsTG9naWNPcCIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSBvcGNvZGUgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TG9naWNPcCwgb3Bjb2RlKSk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVPYmpl
Y3RMYWJlbEtIUihjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKSk7Cisg
ICAgICAgIExvZ2ljYWxPcGVyYXRpb24gb3Bjb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPExvZ2ljYWxPcGVyYXRpb24+KG9wY29kZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvZ2ljT3AoY29udGV4dCwgb3Bjb2RlUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+b2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCk7CisgICAg
ICAgICAgICBjb250ZXh0LT5sb2dpY09wKG9wY29kZVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShPYmplY3RMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlk
ZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJFKExv
Z2ljT3AsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBvcGNvZGVQYWNrZWQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBPYmplY3RQdHJMYWJlbENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKmxhYmVsKQordm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVmZmVyT0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhY2Nlc3Mp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsT2JqZWN0UHRyTGFiZWwiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIGNvbnN0IHZvaWQgKnB0ciA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6
ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgbGVuZ3RoLCAodWludHB0
cl90KWxhYmVsKTsKKyAgICBFVkVOVCgiZ2xNYXBCdWZmZXJPRVMiLCAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhY2Nlc3MgPSAlcyIsIENJRChjb250ZXh0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJn
ZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJBY2Nlc3NB
UkIsIGFjY2VzcykpOwogCisgICAgdm9pZCAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlT2JqZWN0UHRyTGFiZWwoY29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVs
KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1h
cEJ1ZmZlck9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGFjY2VzcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm9iamVjdFB0ckxh
YmVsKHB0ciwgbGVuZ3RoLCBsYWJlbCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPm1hcEJ1ZmZlcih0YXJnZXRQYWNrZWQsIGFjY2Vzcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShPYmplY3RQdHJMYWJlbCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHB0ciwg
bGVuZ3RoLCBsYWJlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyT0VT
LCB2b2lkICo+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXBCdWZmZXJP
RVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGFjY2VzcywgcmV0dXJuVmFs
dWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJPRVMsIHZvaWQgKj4oKTsKICAg
ICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE9iamVj
dFB0ckxhYmVsS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Y2hhciAqbGFiZWwpCit2b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJSYW5nZUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsT2JqZWN0UHRyTGFiZWxLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIGNvbnN0
IHZvaWQgKnB0ciA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6ZWkgbGVuZ3Ro
ID0gJWQsIGNvbnN0IEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgbGVuZ3RoLCAodWludHB0cl90KWxhYmVs
KTsKKyAgICBFVkVOVCgiZ2xNYXBCdWZmZXJSYW5nZSIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRy
IGxlbmd0aCA9ICVsbHUsICIKKyAgICAgICAgICAiR0xiaXRmaWVsZCBhY2Nlc3MgPSAlcyIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVy
VGFyZ2V0QVJCLCB0YXJnZXQpLAorICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpLAor
ICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyQWNjZXNzTWFz
aywgYWNjZXNzKS5jX3N0cigpKTsKIAorICAgIHZvaWQgKnJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZU9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgbGVuZ3RoLCBsYWJlbCkpOworICAg
ICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZShjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5vYmplY3RQdHJMYWJlbChw
dHIsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5t
YXBCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0UHRyTGFiZWxLSFIsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwdHIsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6Ok1hcEJ1ZmZlclJhbmdlLCB2b2lkICo+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShNYXBCdWZmZXJSYW5nZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICByZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6Ok1hcEJ1ZmZlclJhbmdlLCB2b2lkICo+
KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBPcnRob2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZikKK3ZvaWQgKkdMX0FQSUVO
VFJZIE1hcEJ1ZmZlclJhbmdlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaXB0ciBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xPcnRob2Yi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgbCA9ICVmLCBHTGZsb2F0IHIgPSAl
ZiwgR0xmbG9hdCBiID0gJWYsIEdMZmxvYXQgdCA9ICVmLCBHTGZsb2F0IG4gIgotICAgICAgICAg
ICI9ICVmLCBHTGZsb2F0IGYgPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsLCByLCBi
LCB0LCBuLCBmKTsKKyAgICBFVkVOVCgiZ2xNYXBCdWZmZXJSYW5nZUVYVCIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1
LCBHTHNpemVpcHRyIGxlbmd0aCA9ICVsbHUsICIKKyAgICAgICAgICAiR0xiaXRmaWVsZCBhY2Nl
c3MgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAorICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihsZW5ndGgpLAorICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6QnVm
ZmVyQWNjZXNzTWFzaywgYWNjZXNzKS5jX3N0cigpKTsKIAorICAgIHZvaWQgKnJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlT3J0aG9mKGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpKTsKKyAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VFWFQoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+b3J0aG9mKGws
IHIsIGIsIHQsIG4sIGYpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5tYXBC
dWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoT3J0aG9mLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bCwgciwgYiwgdCwgbiwgZik7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVy
UmFuZ2VFWFQsIHZvaWQgKj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKE1h
cEJ1ZmZlclJhbmdlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZz
ZXQsIGxlbmd0aCwgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2VFWFQsIHZvaWQgKj4oKTsKICAg
ICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE9ydGhv
eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmaXhlZCBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhl
ZCBiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBmKQordm9pZCBHTF9BUElFTlRSWSBNYXRl
cmlhbGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGZhY2UsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xPcnRob3giLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgbCA9IDB4JVgsIEdMZml4ZWQgciA9IDB4JVgsIEdMZml4
ZWQgYiA9IDB4JVgsIEdMZml4ZWQgdCA9IDB4JVgsICIKLSAgICAgICAgICAiR0xmaXhlZCBuID0g
MHglWCwgR0xmaXhlZCBmID0gMHglWCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsLCByLCBi
LCB0LCBuLCBmKTsKKyAgICBFVkVOVCgiZ2xNYXRlcmlhbGYiLCAiY29udGV4dCA9ICVkLCBHTGVu
dW0gZmFjZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlh
bEZhY2UsIGZhY2UpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRl
cmlhbFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU9ydGhveChjb250ZXh0LCBsLCByLCBi
LCB0LCBuLCBmKSk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVN
YXRlcmlhbGYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+b3J0aG94KGws
IHIsIGIsIHQsIG4sIGYpOworICAgICAgICAgICAgY29udGV4dC0+bWF0ZXJpYWxmKGZhY2UsIHBu
YW1lUGFja2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShPcnRo
b3gsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShNYXRlcmlhbGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWNlLCBwbmFtZVBh
Y2tlZCwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQYXRjaFBhcmFtZXRl
cmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1
ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgTWF0ZXJpYWxmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpw
YXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUGF0Y2hQYXJhbWV0ZXJpIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHZhbHVlID0gJWQiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBhdGNoUGFyYW1ldGVyTmFtZSwgcG5h
bWUpLCB2YWx1ZSk7CisgICAgRVZFTlQoCisgICAgICAgICJnbE1hdGVyaWFsZnYiLAorICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIiLAorICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZhY2Us
IGZhY2UpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJh
bWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBw
bmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFt
ZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlUGF0Y2hQYXJhbWV0ZXJpKGNvbnRleHQsIHBuYW1lLCB2YWx1ZSkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlh
bGZ2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wYXRjaFBhcmFtZXRl
cmkocG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm1hdGVyaWFsZnYoZmFjZSwg
cG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
YXRjaFBhcmFtZXRlcmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgdmFsdWUpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKE1hdGVyaWFsZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWNl
LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUGF1
c2VUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQordm9pZCBH
TF9BUElFTlRSWSBNYXRlcmlhbHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQYXVz
ZVRyYW5zZm9ybUZlZWRiYWNrIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAg
RVZFTlQoImdsTWF0ZXJpYWx4IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZhY2UgPSAlcywgR0xl
bnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZhY2UsIGZhY2UpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbFBhcmFtZXRlciwg
cG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVBhdXNlVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCkpOworICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWx4KGNvbnRleHQs
IGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPm1hdGVyaWFseChmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW0p
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUGF1c2VUcmFuc2Zvcm1GZWVkYmFj
aywgaXNDYWxsVmFsaWQsIGNvbnRleHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdGVyaWFs
eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBpeGVsU3RvcmVpQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIE1h
dGVyaWFseHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW0pCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
UGl4ZWxTdG9yZWkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFy
YW0gPSAlZCIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UGl4ZWxTdG9yZVBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImds
TWF0ZXJpYWx4diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZhY2UgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZml4ZWQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRS
CisgICAgICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6TWF0ZXJpYWxGYWNlLCBmYWNlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbFN0b3JlaShjb250
ZXh0LCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTWF0ZXJpYWx4dihjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+
bWF0ZXJpYWx4dihmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUGl4ZWxTdG9yZWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwg
cGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdGVyaWFseHYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBQb2ludFBhcmFtZXRlcmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBNYXRyaXhJbmRleFBv
aW50ZXJPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQb2ludFBhcmFtZXRlcmYi
LCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwg
Q0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbE1hdHJpeEluZGV4UG9pbnRl
ck9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0g
dHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAi
KnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBz
aXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0eXBlKSwgc3Ry
aWRlLAorICAgICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmKGNvbnRleHQsIHBuYW1l
UGFja2VkLCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVNYXRyaXhJbmRleFBvaW50ZXJPRVMoY29udGV4dCwgc2l6ZSwgdHlwZSwg
c3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cG9pbnRQYXJhbWV0ZXJmKHBuYW1lUGFja2VkLCBwYXJhbSk7
CisgICAgICAgICAgICBjb250ZXh0LT5tYXRyaXhJbmRleFBvaW50ZXIoc2l6ZSwgdHlwZSwgc3Ry
aWRlLCBwb2ludGVyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50UGFy
YW1ldGVyZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoTWF0cml4SW5kZXhQb2ludGVyT0VTLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgUG9pbnRQYXJhbWV0ZXJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgTWF0
cml4TW9kZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbW9kZSkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xQb2ludFBhcmFtZXRlcmZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImds
TWF0cml4TW9kZSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4
dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdHJpeE1vZGUsIG1v
ZGUpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQb2ludFBhcmFtZXRlciBwbmFt
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1l
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2lu
dFBhcmFtZXRlcmZ2KGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKKyAgICAgICAgTWF0
cml4VHlwZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWF0cml4VHlwZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU1hdHJpeE1vZGUoY29udGV4dCwgbW9kZVBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvaW50UGFyYW1l
dGVyZnYocG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5tYXRyaXhN
b2RlKG1vZGVQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRQ
YXJhbWV0ZXJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdHJpeE1vZGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBt
b2RlUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9pbnRQYXJhbWV0ZXJ4
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKK3ZvaWQgR0xfQVBJRU5UUlkgTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBjb3VudCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQb2lu
dFBhcmFtZXRlcngiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCBw
YXJhbSA9IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsTWF4
U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGNvdW50ID0g
JXUiLCBDSUQoY29udGV4dCksIGNvdW50KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2lu
dFBhcmFtZXRlcngoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1heFNoYWRlckNvbXBpbGVyVGhy
ZWFkc0tIUihjb250ZXh0LCBjb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvaW50UGFyYW1ldGVyeChwbmFtZVBhY2tlZCwg
cGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+bWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzKGNv
dW50KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50UGFyYW1ldGVyeCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgY291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRlcnh2
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhl
ZCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBNZW1vcnlCYXJyaWVyQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMYml0ZmllbGQgYmFycmllcnMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUG9p
bnRQYXJhbWV0ZXJ4diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0g
JXMsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbE1lbW9yeUJhcnJpZXIi
LCAiY29udGV4dCA9ICVkLCBHTGJpdGZpZWxkIGJhcnJpZXJzID0gJXMiLCBDSUQoY29udGV4dCks
CisgICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpNZW1vcnlCYXJyaWVy
TWFzaywgYmFycmllcnMpLmNfc3RyKCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
b2ludFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeHYoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBh
cmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNZW1v
cnlCYXJyaWVyKGNvbnRleHQsIGJhcnJpZXJzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cG9pbnRQYXJhbWV0ZXJ4dihwbmFtZVBh
Y2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm1lbW9yeUJhcnJpZXIoYmFycmll
cnMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRQYXJhbWV0ZXJ4diwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKE1lbW9yeUJhcnJpZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBiYXJyaWVycyk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBvaW50U2l6ZUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGZsb2F0IHNpemUpCit2b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJp
ZXJCeVJlZ2lvbkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGJpdGZpZWxkIGJhcnJp
ZXJzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbFBvaW50U2l6ZSIsICJjb250ZXh0ID0gJWQsIEdMZmxvYXQg
c2l6ZSA9ICVmIiwgQ0lEKGNvbnRleHQpLCBzaXplKTsKKyAgICBFVkVOVCgiZ2xNZW1vcnlCYXJy
aWVyQnlSZWdpb24iLCAiY29udGV4dCA9ICVkLCBHTGJpdGZpZWxkIGJhcnJpZXJzID0gJXMiLCBD
SUQoY29udGV4dCksCisgICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpN
ZW1vcnlCYXJyaWVyTWFzaywgYmFycmllcnMpLmNfc3RyKCkpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFNpemUoY29udGV4
dCwgc2l6ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTWVtb3J5QmFycmllckJ5UmVnaW9uKGNvbnRleHQsIGJhcnJpZXJzKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cG9pbnRTaXplKHNpemUpOworICAgICAgICAgICAgY29udGV4dC0+bWVtb3J5QmFycmllckJ5UmVn
aW9uKGJhcnJpZXJzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50U2l6
ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNpemUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE1l
bW9yeUJhcnJpZXJCeVJlZ2lvbiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJhcnJpZXJzKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9pbnRTaXplUG9pbnRlck9FU0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCit2b2lkIEdM
X0FQSUVOVFJZIE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtZW1vcnlPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsUG9pbnRTaXplUG9pbnRlck9FUyIs
Ci0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgc3RyaWRl
ID0gJWQsIGNvbnN0IHZvaWQgKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIs
Ci0gICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgdHlwZSksIHN0cmlkZSwgKHVpbnRwdHJfdClwb2ludGVyKTsKKyAgICBFVkVOVCgi
Z2xNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IG1lbW9yeU9iamVjdCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQg
KnBhcmFtcyA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgbWVtb3J5T2JqZWN0LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVt
b3J5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFy
YW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlw
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUG9pbnRTaXplUG9pbnRl
ck9FUyhjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpKTsKKyAgICAgICAgTWVt
b3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPiht
ZW1vcnlPYmplY3QpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChj
b250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wb2ludFNpemVQ
b2ludGVyKHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAgICAgICBjb250ZXh0
LT5tZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRTaXplUG9pbnRlck9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBvaW50U2l6ZXhD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCBzaXplKQordm9pZCBHTF9BUElF
TlRSWSBNaW5TYW1wbGVTaGFkaW5nQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxv
YXQgdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUG9pbnRTaXpleCIsICJjb250ZXh0ID0gJWQsIEdM
Zml4ZWQgc2l6ZSA9IDB4JVgiLCBDSUQoY29udGV4dCksIHNpemUpOworICAgIEVWRU5UKCJnbE1p
blNhbXBsZVNoYWRpbmciLCAiY29udGV4dCA9ICVkLCBHTGZsb2F0IHZhbHVlID0gJWYiLCBDSUQo
Y29udGV4dCksIHZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRTaXpleChjb250ZXh0LCBzaXplKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1pblNhbXBsZVNoYWRpbmcoY29u
dGV4dCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wb2ludFNpemV4KHNpemUpOworICAgICAgICAgICAgY29udGV4dC0+
bWluU2FtcGxlU2hhZGluZyh2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShQb2ludFNpemV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2l6ZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoTWluU2FtcGxlU2hhZGluZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHZhbHVlKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9seWdvbk9mZnNldENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKK3ZvaWQgR0xf
QVBJRU5UUlkgTXVsdE1hdHJpeGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3Qg
R0xmbG9hdCAqbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQb2x5Z29uT2Zmc2V0IiwgImNvbnRleHQgPSAl
ZCwgR0xmbG9hdCBmYWN0b3IgPSAlZiwgR0xmbG9hdCB1bml0cyA9ICVmIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIGZhY3RvciwgdW5pdHMpOworICAgIEVWRU5UKCJnbE11bHRNYXRyaXhmIiwg
ImNvbnRleHQgPSAlZCwgY29uc3QgR0xmbG9hdCAqbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgICh1aW50cHRyX3QpbSk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2x5
Z29uT2Zmc2V0KGNvbnRleHQsIGZhY3RvciwgdW5pdHMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdE1hdHJpeGYoY29udGV4dCwgbSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvbHln
b25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CisgICAgICAgICAgICBjb250ZXh0LT5tdWx0TWF0cml4
ZihtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBvbHlnb25PZmZzZXQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBmYWN0b3IsIHVuaXRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShNdWx0TWF0cml4ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG0pOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBQb2x5Z29uT2Zmc2V0eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0cykKK3ZvaWQgR0xfQVBJRU5UUlkgTXVsdE1h
dHJpeHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xmaXhlZCAqbSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xQb2x5Z29uT2Zmc2V0eCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgZmFj
dG9yID0gMHglWCwgR0xmaXhlZCB1bml0cyA9IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgZmFjdG9yLCB1bml0cyk7CisgICAgRVZFTlQoImdsTXVsdE1hdHJpeHgiLCAiY29udGV4dCA9
ICVkLCBjb25zdCBHTGZpeGVkICptID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCks
CisgICAgICAgICAgKHVpbnRwdHJfdCltKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvbHlnb25PZmZzZXR4
KGNvbnRleHQsIGZhY3RvciwgdW5pdHMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTXVsdE1hdHJpeHgoY29udGV4dCwgbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvbHlnb25PZmZzZXR4
KGZhY3RvciwgdW5pdHMpOworICAgICAgICAgICAgY29udGV4dC0+bXVsdE1hdHJpeHgobSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQb2x5Z29uT2Zmc2V0eCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGZhY3RvciwgdW5pdHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRN
YXRyaXh4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIFBvcERlYnVnR3JvdXBDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKK3ZvaWQg
R0xfQVBJRU5UUlkgTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25zdCAqaW5kaWNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsUG9wRGVidWdHcm91cCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAg
IEVWRU5UKCJnbE11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgY29uc3QgR0xzaXplaSAqY291bnQgPSAweCUw
MTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpj
b25zdCppbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xzaXplaSBwcmlt
Y291bnQgPSAlZCwgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXggPSAweCUwMTYiIFBSSXhQVFIgIiIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJp
bWl0aXZlVHlwZSwgbW9kZSksICh1aW50cHRyX3QpY291bnQsCisgICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWlu
ZGljZXMsIHByaW1jb3VudCwKKyAgICAgICAgICAodWludHB0cl90KWJhc2V2ZXJ0ZXgpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQ
b3BEZWJ1Z0dyb3VwKGNvbnRleHQpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0
ZXhFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kaWNlcywgcHJpbWNvdW50LCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cG9wRGVidWdHcm91cCgpOworICAg
ICAgICAgICAgY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4KG1vZGVQYWNrZWQs
IGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBwcmltY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRleCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQb3BEZWJ1Z0dyb3VwLCBpc0NhbGxWYWxpZCwgY29udGV4
dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50LCBiYXNldmVydGV4KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9wRGVidWdHcm91cEtIUkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4KQordm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkNGZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUG9wRGVidWdHcm91
cEtIUiIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAgIEVWRU5UKCJnbE11bHRp
VGV4Q29vcmQ0ZiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVz
LCBHTGZsb2F0IHMgPSAlZiwgR0xmbG9hdCB0ID0gJWYsIEdMZmxvYXQgciA9ICVmLCAiCisgICAg
ICAgICAgIkdMZmxvYXQgcSA9ICVmIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVW5pdCwgdGFyZ2V0KSwgcywgdCwgciwgcSk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVBvcERlYnVnR3JvdXBLSFIoY29udGV4dCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDRmKGNvbnRleHQsIHRh
cmdldCwgcywgdCwgciwgcSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnBvcERlYnVnR3JvdXAoKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPm11bHRpVGV4Q29vcmQ0Zih0YXJnZXQsIHMsIHQsIHIsIHEpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUG9wRGVidWdHcm91cEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRpVGV4Q29vcmQ0ZiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgcywgdCwgciwgcSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFBvcEdyb3VwTWFya2VyRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2b2lkIEdM
X0FQSUVOVFJZIE11bHRpVGV4Q29vcmQ0eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVk
IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVk
IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVk
IHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVk
IHEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVi
dWdfbWFya2VyIGVudHJ5IHBvaW50cy4KLSAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhl
IGRlYnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KLSAgICAvLyBFVkVOVCgiZ2xQ
b3BHcm91cE1hcmtlckVYVCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAgIEVW
RU5UKCJnbE11bHRpVGV4Q29vcmQ0eCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRleHR1cmUgPSAlcywgR0xmaXhlZCBzID0gMHglWCwgR0xmaXhlZCB0ID0gMHglWCwgR0xmaXhl
ZCByID0gIgorICAgICAgICAgICIweCVYLCBHTGZpeGVkIHEgPSAweCVYIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVW5pdCwgdGV4
dHVyZSksIHMsIHQsIHIsIHEpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BHcm91cE1hcmtlckVYVChjb250ZXh0KSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0
aVRleENvb3JkNHgoY29udGV4dCwgdGV4dHVyZSwgcywgdCwgciwgcSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvcEdyb3VwTWFy
a2VyKCk7CisgICAgICAgICAgICBjb250ZXh0LT5tdWx0aVRleENvb3JkNHgodGV4dHVyZSwgcywg
dCwgciwgcSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQb3BHcm91cE1hcmtl
ckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRp
VGV4Q29vcmQ0eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRleHR1cmUsIHMsIHQsIHIsIHEpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQb3BNYXRyaXhDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCkKK3ZvaWQgR0xfQVBJRU5UUlkgTm9ybWFsM2ZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xmbG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueikKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xQb3BNYXRyaXgiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBF
VkVOVCgiZ2xOb3JtYWwzZiIsICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgbnggPSAlZiwgR0xmbG9h
dCBueSA9ICVmLCBHTGZsb2F0IG56ID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbngs
IG55LCBueik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVBvcE1hdHJpeChjb250ZXh0KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDNmKGNvbnRleHQsIG54LCBueSwgbnopKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
b3BNYXRyaXgoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm5vcm1hbDNmKG54LCBueSwgbnopOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9wTWF0cml4LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTm9ybWFsM2YsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBueCwgbnksIG56KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJpbWl0
aXZlQm91bmRpbmdCb3hDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5YLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1p
blksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgbWluWiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBtaW5XLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IG1heFgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWF4WSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtYXhaLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1heFcpCit2b2lk
IEdMX0FQSUVOVFJZIE5vcm1hbDN4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4
ZWQgbngsIEdMZml4ZWQgbnksIEdMZml4ZWQgbnopCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJpbWl0aXZl
Qm91bmRpbmdCb3giLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgbWluWCA9ICVm
LCBHTGZsb2F0IG1pblkgPSAlZiwgR0xmbG9hdCBtaW5aID0gJWYsIEdMZmxvYXQgbWluVyA9ICIK
LSAgICAgICAgICAiJWYsIEdMZmxvYXQgbWF4WCA9ICVmLCBHTGZsb2F0IG1heFkgPSAlZiwgR0xm
bG9hdCBtYXhaID0gJWYsIEdMZmxvYXQgbWF4VyA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIG1pblgsIG1pblksIG1pblosIG1pblcsIG1heFgsIG1heFksIG1heFosIG1heFcpOworICAg
IEVWRU5UKCJnbE5vcm1hbDN4IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBueCA9IDB4JVgsIEdM
Zml4ZWQgbnkgPSAweCVYLCBHTGZpeGVkIG56ID0gMHglWCIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBueCwgbnksIG56KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJpbWl0aXZl
Qm91bmRpbmdCb3goY29udGV4dCwgbWluWCwgbWluWSwgbWluWiwgbWluVywgbWF4WCwgbWF4WSwg
bWF4WiwgbWF4VykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVOb3JtYWwzeChjb250ZXh0LCBueCwgbnksIG56KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJpbWl0aXZlQm91bmRpbmdCb3go
bWluWCwgbWluWSwgbWluWiwgbWluVywgbWF4WCwgbWF4WSwgbWF4WiwgbWF4Vyk7CisgICAgICAg
ICAgICBjb250ZXh0LT5ub3JtYWwzeChueCwgbnksIG56KTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByaW1pdGl2ZUJvdW5kaW5nQm94LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bWluWCwgbWluWSwgbWluWiwgbWluVywgbWF4WCwKLSAgICAgICAgICAgICAgICAgICAgICBtYXhZ
LCBtYXhaLCBtYXhXKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShOb3JtYWwzeCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG54LCBueSwgbnopOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtQmluYXJ5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5h
cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZW5ndGgpCit2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbFBvaW50ZXJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwb2ludGVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1CaW5hcnkiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBiaW5h
cnlGb3JtYXQgPSAlcywgY29uc3Qgdm9pZCAqYmluYXJ5ID0gIgotICAgICAgICAgICIweCUwMTYi
IFBSSXhQVFIgIiwgR0xzaXplaSBsZW5ndGggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBiaW5h
cnlGb3JtYXQpLAotICAgICAgICAgICh1aW50cHRyX3QpYmluYXJ5LCBsZW5ndGgpOworICAgIEVW
RU5UKAorICAgICAgICAiZ2xOb3JtYWxQb2ludGVyIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3Qgdm9pZCAqcG9pbnRl
ciA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Tm9ybWFsUG9pbnRlclR5cGUsIHR5cGUpLCBzdHJp
ZGUsCisgICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtQmluYXJ5KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpKTsKKyAg
ICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU5vcm1hbFBvaW50ZXIoY29udGV4dCwg
dHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbUJpbmFyeShwcm9ncmFtUGFj
a2VkLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnRleHQt
Pm5vcm1hbFBvaW50ZXIodHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1CaW5hcnksIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwKLSAgICAgICAgICAgICAgICAg
ICAgICBsZW5ndGgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE5vcm1hbFBvaW50ZXIsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtQmluYXJ5T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGVuZ3RoKQordm9pZCBHTF9BUElFTlRS
WSBPYmplY3RMYWJlbENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaWRlbnRpZmllciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbFByb2dyYW1CaW5hcnlPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBiaW5hcnlGb3JtYXQgPSAlcywgY29uc3Qgdm9p
ZCAqYmluYXJ5ID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgbGVuZ3Ro
ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgYmluYXJ5Rm9ybWF0KSwKLSAgICAgICAgICAodWlu
dHB0cl90KWJpbmFyeSwgbGVuZ3RoKTsKKyAgICBFVkVOVCgiZ2xPYmplY3RMYWJlbCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGlkZW50aWZpZXIgPSAlcywgR0x1aW50IG5hbWUg
PSAldSwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgIgorICAgICAgICAgICJHTGNoYXIgKmxh
YmVsID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok9iamVjdElkZW50aWZpZXIsIGlkZW50aWZpZXIpLCBuYW1l
LCBsZW5ndGgsCisgICAgICAgICAgKHVpbnRwdHJfdClsYWJlbCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtQmlu
YXJ5T0VTKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5n
dGgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlT2JqZWN0TGFiZWwoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1CaW5hcnkocHJvZ3JhbVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxl
bmd0aCk7CisgICAgICAgICAgICBjb250ZXh0LT5vYmplY3RMYWJlbChpZGVudGlmaWVyLCBuYW1l
LCBsZW5ndGgsIGxhYmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1CaW5hcnlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBiaW5hcnlG
b3JtYXQsIGJpbmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKE9iamVjdExhYmVsLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRlbnRpZmll
ciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1QYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZh
bHVlKQordm9pZCBHTF9BUElFTlRSWSBPYmplY3RMYWJlbEtIUkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Q
YXJhbWV0ZXJpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1
LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgdmFsdWUgPSAlZCIsIENJRChjb250ZXh0KSwKLSAg
ICAgICAgICBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbVBhcmFt
ZXRlclBOYW1lLCBwbmFtZSksIHZhbHVlKTsKKyAgICBFVkVOVCgiZ2xPYmplY3RMYWJlbEtIUiIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGlkZW50aWZpZXIgPSAlcywgR0x1aW50
IG5hbWUgPSAldSwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgIgorICAgICAgICAgICJHTGNo
YXIgKmxhYmVsID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok9iamVjdElkZW50aWZpZXIsIGlkZW50aWZpZXIp
LCBuYW1lLCBsZW5ndGgsCisgICAgICAgICAgKHVpbnRwdHJfdClsYWJlbCk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVBhcmFtZXRlcmkoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgcG5hbWUsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZU9iamVjdExhYmVsS0hSKGNvbnRleHQsIGlkZW50aWZp
ZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtUGFyYW1ldGVyaShwcm9ncmFtUGFj
a2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+b2JqZWN0TGFiZWwoaWRl
bnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtUGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0TGFiZWxL
SFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVs
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjApCit2b2lkIEdMX0FQSUVOVFJZIE9i
amVjdFB0ckxhYmVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFi
ZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0xZiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9h
dCB2MCA9ICVmIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2
MCk7CisgICAgRVZFTlQoImdsT2JqZWN0UHRyTGFiZWwiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIGNvbnN0IHZvaWQgKnB0ciA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMc2l6
ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgbGVuZ3RoLCAodWludHB0
cl90KWxhYmVsKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTFmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlT2JqZWN0
UHRyTGFiZWwoY29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0x
Zihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICAgICAgY29udGV4dC0+b2Jq
ZWN0UHRyTGFiZWwocHRyLCBsZW5ndGgsIGxhYmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKE9iamVjdFB0ckxh
YmVsLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJ
RU5UUlkgT2JqZWN0UHRyTGFiZWxLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTFm
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAiCi0gICAgICAgICAgIkdM
ZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVO
VCgiZ2xPYmplY3RQdHJMYWJlbEtIUiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgY29uc3Qg
dm9pZCAqcHRyID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xzaXplaSBsZW5ndGgg
PSAlZCwgY29uc3QgR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksICh1aW50cHRyX3QpcHRyLCBsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVPYmplY3RQ
dHJMYWJlbEtIUihjb250ZXh0LCBwdHIsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTFmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPm9iamVjdFB0ckxhYmVsKHB0ciwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFmdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0UHRyTGFiZWxLSFIsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwdHIsIGxlbmd0aCwgbGFiZWwpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdjApCit2b2lkIEdMX0FQSUVOVFJZIE9ydGhvZkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCBmKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMWkiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMaW50IHYwID0gJWQiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcHJvZ3JhbSwg
bG9jYXRpb24sIHYwKTsKKyAgICBFVkVOVCgiZ2xPcnRob2YiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZmxvYXQgbCA9ICVmLCBHTGZsb2F0IHIgPSAlZiwgR0xmbG9hdCBiID0gJWYsIEdM
ZmxvYXQgdCA9ICVmLCBHTGZsb2F0IG4gIgorICAgICAgICAgICI9ICVmLCBHTGZsb2F0IGYgPSAl
ZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsLCByLCBiLCB0LCBuLCBmKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVPcnRob2YoY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtMWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPm9ydGhvZihsLCByLCBiLCB0LCBuLCBmKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKE9ydGhvZiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgT3J0
aG94Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZpeGVkIGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZpeGVkIHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZp
eGVkIGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIG4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGYpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJv
Z3JhbVVuaWZvcm0xaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xp
bnQgIgotICAgICAgICAgICIqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUp
OworICAgIEVWRU5UKCJnbE9ydGhveCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhl
ZCBsID0gMHglWCwgR0xmaXhlZCByID0gMHglWCwgR0xmaXhlZCBiID0gMHglWCwgR0xmaXhlZCB0
ID0gMHglWCwgIgorICAgICAgICAgICJHTGZpeGVkIG4gPSAweCVYLCBHTGZpeGVkIGYgPSAweCVY
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGwsIHIsIGIsIHQsIG4sIGYpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0xaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVPcnRo
b3goY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWl2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
b3J0aG94KGwsIHIsIGIsIHQsIG4sIGYpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKE9ydGhveCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGwsIHIsIGIsIHQs
IG4sIGYpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTF1aUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCkKK3ZvaWQgR0xfQVBJ
RU5UUlkgUGF0Y2hQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBwbmFtZSwgR0xpbnQgdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0xdWki
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHBy
b2dyYW0sIGxvY2F0aW9uLCB2MCk7CisgICAgRVZFTlQoImdsUGF0Y2hQYXJhbWV0ZXJpIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHZhbHVlID0gJWQiLCBDSUQoY29u
dGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBhdGNoUGFyYW1l
dGVyTmFtZSwgcG5hbWUpLCB2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHYwKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVQYXRjaFBhcmFtZXRlcmkoY29udGV4dCwgcG5hbWUsIHZhbHVlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3Jh
bVVuaWZvcm0xdWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnBhdGNoUGFyYW1ldGVyaShwbmFtZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGNo
UGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCB2YWx1ZSk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQordm9pZCBH
TF9BUElFTlRSWSBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0xdWl2IiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIGNvbnN0ICIKLSAgICAgICAgICAiR0x1aW50ICp2YWx1ZSA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0
aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsUGF1c2VUcmFuc2Zv
cm1GZWVkYmFjayIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0xdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGF1c2VU
cmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWl2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cGF1
c2VUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
UHJvZ3JhbVVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShQYXVzZVRyYW5zZm9ybUZlZWRiYWNrLCBpc0NhbGxWYWxpZCwgY29udGV4
dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEpCit2b2lkIEdMX0FQSUVOVFJZ
IFBpeGVsU3RvcmVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbFByb2dyYW1Vbmlmb3JtMmYi
LAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYsIEdMZmxvYXQgdjEgPSAlZiIsCi0gICAgICAgIENJ
RChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgRVZFTlQoImdsUGl4
ZWxTdG9yZWkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0g
PSAlZCIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UGl4ZWxTdG9yZVBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbFN0b3JlaShjb250ZXh0LCBwbmFtZSwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTJmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEp
OworICAgICAgICAgICAgY29udGV4dC0+cGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQaXhlbFN0b3JlaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJh
bSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmZ2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
Cit2b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFyYW1ldGVyZkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJv
Z3JhbVVuaWZvcm0yZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgot
ICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1
ZSk7CisgICAgRVZFTlQoImdsUG9pbnRQYXJhbWV0ZXJmIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAlZiIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksIHBhcmFt
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFyYW1ldGVyIHBu
YW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1l
dGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmZ2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmKGNvbnRleHQs
IHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmZ2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cG9pbnRQYXJh
bWV0ZXJmKHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRQYXJhbWV0ZXJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cG5hbWVQYWNrZWQsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkKLVByb2dy
YW1Vbmlmb3JtMmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpCit2b2lkIEdMX0FQSUVOVFJZIFBv
aW50UGFyYW1ldGVyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0y
aSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwgR0xpbnQgdjEgPSAlZCIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBFVkVOVCgiZ2xQ
b2ludFBhcmFtZXRlcmZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgdjAsIHYxKSk7CisgICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihwbmFtZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQ
b2ludFBhcmFtZXRlcmZ2KGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTJpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICAgICAg
Y29udGV4dC0+cG9pbnRQYXJhbWV0ZXJmdihwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQb2ludFBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWVQYWNr
ZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3Jt
Mml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRlcnhDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFByb2dyYW1Vbmlmb3JtMml2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNv
bnN0IEdMaW50ICIKLSAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90
KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQb2ludFBhcmFtZXRlcngiLCAiY29udGV4dCA9ICVkLCBH
TGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUp
LCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQb2ludFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQb2lu
dFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpdihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeChj
b250ZXh0LCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBv
aW50UGFyYW1ldGVyeChwbmFtZVBhY2tlZCwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdmFsdWUp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50UGFyYW1ldGVyeCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtMnVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHYwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjEpCit2b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFyYW1ldGVyeHZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0ydWkiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9
ICV1LCBHTHVpbnQgdjEgPSAldSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBs
b2NhdGlvbiwgdjAsIHYxKTsKKyAgICBFVkVOVCgiZ2xQb2ludFBhcmFtZXRlcnh2IiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBh
cmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0ydWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAg
ICBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJ4dihjb250ZXh0
LCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0ydWkocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb2ludFBhcmFtZXRl
cnh2KHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0ydWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQb2ludFBhcmFtZXRl
cnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMnVpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQordm9pZCBH
TF9BUElFTlRSWSBQb2ludFNpemVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9h
dCBzaXplKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMnVpdiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwg
R0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAiCi0gICAgICAgICAgIkdMdWludCAqdmFsdWUgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2Nh
dGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFBvaW50U2l6ZSIs
ICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgc2l6ZSA9ICVmIiwgQ0lEKGNvbnRleHQpLCBzaXplKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVBvaW50U2l6ZShjb250ZXh0LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0ydWl2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+cG9pbnRTaXplKHNpemUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJv
Z3JhbVVuaWZvcm0ydWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQb2ludFNpemUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaXplKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zZkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyKQordm9pZCBHTF9BUElFTlRSWSBQb2ludFNp
emVQb2ludGVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcG9pbnRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNmIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTGZsb2F0IHYwID0gJWYsIEdMZmxvYXQgdjEgPSAiCi0gICAgICAgICAgIiVmLCBHTGZs
b2F0IHYyID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xQb2ludFNpemVQb2ludGVyT0VT
IiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJp
ZGUgPSAlZCwgY29uc3Qgdm9pZCAqcG9pbnRlciA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAi
IiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVm
YXVsdEdyb3VwLCB0eXBlKSwgc3RyaWRlLCAodWludHB0cl90KXBvaW50ZXIpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKKyAgICAgICAgVmVydGV4QXR0cmli
VHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4
QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVBvaW50U2l6ZVBvaW50ZXJPRVMoY29udGV4dCwgdHlwZVBhY2tlZCwg
c3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5wb2ludFNpemVQb2ludGVy
KHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50
U2l6ZVBvaW50ZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUs
IHBvaW50ZXIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTNm
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQb2ludFNpemV4Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZml4ZWQgc2l6ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNm
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAiCi0gICAgICAgICAgIkdM
ZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVO
VCgiZ2xQb2ludFNpemV4IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBzaXplID0gMHglWCIsIENJ
RChjb250ZXh0KSwgc2l6ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50U2l6ZXgoY29udGV4dCwgc2l6ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtM2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICAgICAgY29udGV4dC0+cG9pbnRTaXpleChzaXplKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyKQorICAgICAgICBBTkdMRV9DQVBU
VVJFKFBvaW50U2l6ZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaXplKTsKKyAgICB9Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgUG9seWdvbk9mZnNldENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9n
cmFtVW5pZm9ybTNpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCAi
Ci0gICAgICAgICAgIkdMaW50IHYyID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIEVWRU5UKCJnbFBvbHlnb25PZmZzZXQi
LCAiY29udGV4dCA9ICVkLCBHTGZsb2F0IGZhY3RvciA9ICVmLCBHTGZsb2F0IHVuaXRzID0gJWYi
LCBDSUQoY29udGV4dCksCisgICAgICAgICAgZmFjdG9yLCB1bml0cyk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaShjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9seWdvbk9mZnNldChjb250ZXh0LCBm
YWN0b3IsIHVuaXRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zaShwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5wb2x5Z29uT2Zmc2V0KGZhY3Rv
ciwgdW5pdHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwg
djEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQb2x5Z29uT2Zmc2V0LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgZmFjdG9yLCB1bml0cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtM2l2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQb2x5Z29uT2Zmc2V0eENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNpdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBjb25zdCBHTGludCAiCi0gICAgICAgICAgIip2YWx1ZSA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBj
b3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsUG9seWdvbk9mZnNldHgiLCAi
Y29udGV4dCA9ICVkLCBHTGZpeGVkIGZhY3RvciA9IDB4JVgsIEdMZml4ZWQgdW5pdHMgPSAweCVY
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGZhY3RvciwgdW5pdHMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0eChjb250ZXh0
LCBmYWN0b3IsIHVuaXRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zaXYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb2x5Z29uT2Zmc2V0
eChmYWN0b3IsIHVuaXRzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtM2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQb2x5Z29uT2Zmc2V0eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY3RvciwgdW5p
dHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1aUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIpCit2b2lkIEdMX0FQ
SUVOVFJZIFBvcERlYnVnR3JvdXBDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTN1aSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYwID0gJXUs
IEdMdWludCB2MSA9ICV1LCAiCi0gICAgICAgICAgIkdMdWludCB2MiA9ICV1IiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBFVkVO
VCgiZ2xQb3BEZWJ1Z0dyb3VwIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTN1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAs
IHYxLCB2MikpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQ
b3BEZWJ1Z0dyb3VwKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aShwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5wb3BEZWJ1Z0dy
b3VwKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1
aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQb3BEZWJ1Z0dyb3VwLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3Vp
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQb3BEZWJ1Z0dyb3VwS0hSQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0zdWl2IiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0ICIKLSAgICAgICAgICAiR0x1aW50
ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBy
b2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImds
UG9wRGVidWdHcm91cEtIUiIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm0zdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
UG9wRGVidWdHcm91cEtIUihjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWl2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cG9w
RGVidWdHcm91cCgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0zdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQb3BEZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHYwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHYzKQordm9pZCBHTF9BUElFTlRSWSBQb3BHcm91cE1h
cmtlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBy
b2dyYW1Vbmlmb3JtNGYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZiwgR0xmbG9hdCB2MSA9
ICIKLSAgICAgICAgICAiJWYsIEdMZmxvYXQgdjIgPSAlZiwgR0xmbG9hdCB2MyA9ICVmIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7
CisgICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVidWdfbWFy
a2VyIGVudHJ5IHBvaW50cy4KKyAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGRlYnVn
IGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KKyAgICAvLyBFVkVOVCgiZ2xQb3BHcm91
cE1hcmtlckVYVCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm00Zihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9wR3Jv
dXBNYXJrZXJFWFQoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBvcEdyb3Vw
TWFya2VyKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTRmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2
MSwgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFBvcEdyb3VwTWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZ
IFBvcE1hdHJpeENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bFByb2dyYW1Vbmlmb3JtNGZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0
ICIKLSAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3Qp
dmFsdWUpOworICAgIEVWRU5UKCJnbFBvcE1hdHJpeCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29u
dGV4dCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVQb3BNYXRyaXgoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGZ2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+cG9wTWF0cml4KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybTRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoUG9wTWF0cml4LCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MykKK3ZvaWQgR0xfQVBJRU5UUlkgUHJpbWl0aXZlQm91bmRpbmdCb3hDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5YLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1pblksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWluWiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5X
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IG1heFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgbWF4WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCBtYXhaLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1heFcpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3Jh
bVVuaWZvcm00aSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwgR0xpbnQgdjEgPSAlZCwgIgot
ICAgICAgICAgICJHTGludCB2MiA9ICVkLCBHTGludCB2MyA9ICVkIiwKLSAgICAgICAgICBDSUQo
Y29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgRVZFTlQo
ImdsUHJpbWl0aXZlQm91bmRpbmdCb3giLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxv
YXQgbWluWCA9ICVmLCBHTGZsb2F0IG1pblkgPSAlZiwgR0xmbG9hdCBtaW5aID0gJWYsIEdMZmxv
YXQgbWluVyA9ICIKKyAgICAgICAgICAiJWYsIEdMZmxvYXQgbWF4WCA9ICVmLCBHTGZsb2F0IG1h
eFkgPSAlZiwgR0xmbG9hdCBtYXhaID0gJWYsIEdMZmxvYXQgbWF4VyA9ICVmIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIG1pblgsIG1pblksIG1pblosIG1pblcsIG1heFgsIG1heFksIG1heFos
IG1heFcpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm00aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByaW1pdGl2ZUJvdW5kaW5nQm94KGNvbnRleHQs
IG1pblgsIG1pblksIG1pblosIG1pblcsIG1heFgsIG1heFksIG1heFosIG1heFcpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTRpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5wcmltaXRpdmVCb3VuZGluZ0JveChtaW5YLCBtaW5ZLCBtaW5a
LCBtaW5XLCBtYXhYLCBtYXhZLCBtYXhaLCBtYXhXKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwKLSAgICAgICAgICAgICAgICAgICAgICB2Myk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJpbWl0aXZlQm91bmRpbmdCb3gsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBtaW5YLCBtaW5ZLCBtaW5aLCBtaW5XLCBtYXhYLAorICAgICAgICAgICAgICAg
ICAgICAgIG1heFksIG1heFosIG1heFcpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybTRpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFByb2dyYW1Vbmlmb3JtNGl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQs
IGNvbnN0IEdMaW50ICIKLSAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0
cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtQmluYXJ5IiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gYmluYXJ5Rm9ybWF0ID0gJXMs
IGNvbnN0IHZvaWQgKmJpbmFyeSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIsIEdM
c2l6ZWkgbGVuZ3RoID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgYmluYXJ5Rm9ybWF0KSwKKyAg
ICAgICAgICAodWludHB0cl90KWJpbmFyeSwgbGVuZ3RoKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtNGl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbUJpbmFyeShwcm9ncmFtUGFja2VkLCBiaW5hcnlG
b3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtNGl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShQcm9ncmFtQmluYXJ5LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00dWlDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjMpCit2b2lkIEdM
X0FQSUVOVFJZIFByb2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJv
Z3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZW5ndGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVu
aWZvcm00dWkiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSwgIgot
ICAgICAgICAgICJHTHVpbnQgdjIgPSAldSwgR0x1aW50IHYzID0gJXUiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBFVkVO
VCgiZ2xQcm9ncmFtQmluYXJ5T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGVudW0gYmluYXJ5Rm9ybWF0ID0gJXMsIGNvbnN0IHZvaWQgKmJpbmFy
eSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGxlbmd0aCA9ICVkIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWZhdWx0R3JvdXAsIGJpbmFyeUZvcm1hdCksCisgICAgICAgICAgKHVpbnRwdHJfdCli
aW5hcnksIGxlbmd0aCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTR1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsK
KyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1CaW5hcnlPRVMoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVp
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtQmluYXJ5KHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5
LCBsZW5ndGgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm00dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAs
IHYxLCB2MiwKLSAgICAgICAgICAgICAgICAgICAgICB2Myk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbUJpbmFyeU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGJpbmFyeUZvcm1hdCwgYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNHVpdkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQor
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtUGFyYW1ldGVyaUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTR1
aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgotICAgICAgICAgICJH
THVpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVO
VCgiZ2xQcm9ncmFtUGFyYW1ldGVyaSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHZhbHVlID0gJWQiLCBDSUQo
Y29udGV4dCksCisgICAgICAgICAgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlByb2dyYW1QYXJhbWV0ZXJQTmFtZSwgcG5hbWUpLCB2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTR1aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtUGFyYW1ldGVy
aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTR1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtUGFyYW1ldGVyaShwcm9ncmFtUGFja2VkLCBwbmFtZSwgdmFsdWUp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00dWl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
UGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHBuYW1lLCB2
YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4
MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHYwKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCi0gICAgICAgICAg
InRyYW5zcG9zZSA9ICVzLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xi
b29sZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQo
ImdsUHJvZ3JhbVVuaWZvcm0xZiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmIiwgQ0lEKGNv
bnRleHQpLAorICAgICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSkpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xZihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtMWZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDNmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgotICAg
ICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291
bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOworICAg
IEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMWZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIGNvbnN0ICIKKyAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1
aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFmdihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xZnYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm0xaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwKQog
ewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAidHJhbnNwb3NlID0gJXMs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0
cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9y
bTFpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAg
IHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm0xaShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTFpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xaXZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFu
c3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTFp
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCAiCisgICAgICAg
ICAgIip2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybTFpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtMWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xdWlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgdjApCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDJmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgot
ICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwor
ICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMXVpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAl
dSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgdjApOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gy
ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aShj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybU1hdHJpeDN4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTF1aShwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
Cit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291
bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2Up
LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTF1aXYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgorICAgICAgICAgICJHTHVpbnQg
KnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTF1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDN4
NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB2
YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4
NGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdjEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0
ZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAg
ICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBH
TGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVO
VCgKKyAgICAgICAgImdsUHJvZ3JhbVVuaWZvcm0yZiIsCisgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAl
ZiwgR0xmbG9hdCB2MSA9ICVmIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2Nh
dGlvbiwgdjAsIHYxKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybU1hdHJpeDRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
djAsIHYxKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
TWF0cml4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsCisgICAgICAgICAgICAgICAgICAgICAg
djEpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJmdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291
bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2Up
LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTJmdiIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRp
b24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQg
KnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0yZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtMmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgz
ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
dWUpCit2b2lkIEdMX0FQSUVOVFJZCitQcm9ncmFtVW5pZm9ybTJpQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdM
aW50IHYxKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAidHJhbnNw
b3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5U
b1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQcm9n
cmFtVW5pZm9ybTJpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9
ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgz
ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTJpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTJpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybTJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYxKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHVzaERlYnVnR3JvdXBDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlKQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQdXNoRGVidWdHcm91cCIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTHVpbnQgaWQgPSAldSwgR0xzaXpl
aSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICIKLSAgICAgICAgICAiKm1lc3NhZ2UgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksIGlkLCBsZW5ndGgsCi0gICAgICAgICAg
KHVpbnRwdHJfdCltZXNzYWdlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTJpdiIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRp
b24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCAiCisgICAgICAgICAgIip2
YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dy
YW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQdXNoRGVidWdHcm91
cChjb250ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMml2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wdXNoRGVidWdH
cm91cChzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm0yaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQdXNoRGVidWdHcm91cCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHNvdXJjZSwgaWQsIGxlbmd0aCwgbWVzc2FnZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQdXNoRGVidWdHcm91
cEtIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1l
c3NhZ2UpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMnVpQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHVzaERl
YnVnR3JvdXBLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2UgPSAl
cywgR0x1aW50IGlkID0gJXUsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAiCi0g
ICAgICAgICAgIiptZXNzYWdlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2Up
LCBpZCwgbGVuZ3RoLAotICAgICAgICAgICh1aW50cHRyX3QpbWVzc2FnZSk7CisgICAgRVZFTlQo
ImdsUHJvZ3JhbVVuaWZvcm0ydWkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBw
cm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQg
djEgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjAs
IHYxKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwS0hSKGNvbnRleHQsIHNvdXJjZSwgaWQsIGxlbmd0aCwg
bWVzc2FnZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0ydWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYw
LCB2MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwgaWQsIGxlbmd0aCwgbWVzc2FnZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aShwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFB1
c2hEZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCBpZCwgbGVuZ3Ro
LCBtZXNzYWdlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwKKyAg
ICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFB1
c2hHcm91cE1hcmtlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNo
YXIgKm1hcmtlcikKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWl2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVidWdf
bWFya2VyIGVudHJ5IHBvaW50cy4KLSAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGRl
YnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KLSAgICAvLyBFVkVOVCgiZ2xQdXNo
R3JvdXBNYXJrZXJFWFQiLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25z
dCBHTGNoYXIgKm1hcmtlciA9Ci0gICAgLy8gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksIGxlbmd0aCwgKHVpbnRwdHJfdCltYXJrZXIpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlm
b3JtMnVpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAiCisgICAgICAg
ICAgIkdMdWludCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9j
YXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVB1c2hHcm91cE1hcmtlckVYVChjb250ZXh0LCBsZW5ndGgsIG1h
cmtlcikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVpdihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHVzaEdyb3VwTWFya2VyKGxlbmd0
aCwgbWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMnVpdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFB1c2hHcm91cE1hcmtlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxlbmd0aCwgbWFya2VyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBQdXNoTWF0cml4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB2MikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQdXNoTWF0cml4IiwgImNv
bnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0z
ZiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmLCBHTGZsb2F0IHYxID0gIgorICAgICAgICAg
ICIlZiwgR0xmbG9hdCB2MiA9ICVmIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUHVzaE1hdHJpeChjb250ZXh0KSk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHVzaE1h
dHJpeCgpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShQdXNoTWF0cml4LCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAgICAgICAgICAgICAgICAgICAg
djIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBRdWVyeUNvdW50ZXJFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQordm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFF1ZXJ5
Q291bnRlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gdGFyZ2V0
ID0gJXMiLCBDSUQoY29udGV4dCksIGlkLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZv
cm0zZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgorICAgICAgICAg
ICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgUXVlcnlUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4o
dGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKGNvbnRleHQsIGlkUGFja2VkLCB0YXJnZXRQYWNrZWQp
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cXVlcnlDb3VudGVyKGlkUGFja2VkLCB0YXJn
ZXRQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZnYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShRdWVyeUNvdW50ZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBp
ZFBhY2tlZCwgdGFyZ2V0UGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCi1H
TGJpdGZpZWxkIEdMX0FQSUVOVFJZIFF1ZXJ5TWF0cml4eE9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmaXhlZCAqbWFudGlzc2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqZXhwb25lbnQpCit2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtM2lDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MikK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xRdWVyeU1hdHJpeHhPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZml4ZWQgKm1hbnRpc3NhID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50ICpleHBvbmVu
dCA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgKHVpbnRwdHJfdCltYW50aXNzYSwgKHVpbnRwdHJfdClleHBvbmVudCk7CisgICAgRVZFTlQo
ImdsUHJvZ3JhbVVuaWZvcm0zaSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwgR0xpbnQgdjEg
PSAlZCwgIgorICAgICAgICAgICJHTGludCB2MiA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIAotICAgIEdMYml0ZmllbGQgcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUXVlcnlNYXRyaXh4T0VTKGNvbnRleHQsIG1hbnRpc3Nh
LCBleHBvbmVudCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+cXVlcnlNYXRyaXh4KG1hbnRpc3NhLCBleHBv
bmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaShjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OlF1ZXJ5TWF0cml4eE9FUywgR0xiaXRmaWVsZD4oKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2kocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUXVlcnlN
YXRyaXh4T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWFudGlzc2EsIGV4cG9uZW50LCByZXR1
cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OlF1ZXJ5TWF0cml4eE9FUywgR0xiaXRm
aWVsZD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwKKyAg
ICAgICAgICAgICAgICAgICAgICB2Mik7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZWFkQnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZW51bSBzcmMpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2l2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFJlYWRCdWZmZXIiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gc3Jj
ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlJlYWRCdWZmZXJNb2RlLCBzcmMpKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNp
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCAiCisgICAgICAg
ICAgIip2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlYWRCdWZm
ZXIoY29udGV4dCwgc3JjKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTNpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVhZEJ1ZmZlcihzcmMpOworICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm0zaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShSZWFkQnVmZmVy
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc3JjKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFJlYWRQaXhlbHNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKK3ZvaWQgR0xfQVBJRU5U
UlkgUHJvZ3JhbVVuaWZvcm0zdWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFJlYWRQaXhlbHMiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0g
JWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKLSAgICAgICAgICAiR0xlbnVtIGZvcm1hdCA9ICVz
LCBHTGVudW0gdHlwZSA9ICVzLCB2b2lkICpwaXhlbHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksICh1aW50cHRyX3QpcGl4ZWxzKTsK
KyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTN1aSIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYwID0g
JXUsIEdMdWludCB2MSA9ICV1LCAiCisgICAgICAgICAgIkdMdWludCB2MiA9ICV1IiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVJl
YWRQaXhlbHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtM3VpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEs
IHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aShwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShSZWFkUGl4ZWxzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYxLCB2Mik7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFJlYWRuUGl4ZWxzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQordm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xS
ZWFkblBpeGVscyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGlu
dCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgIgotICAg
ICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgYnVm
U2l6ZSA9ICVkLCB2b2lkICpkYXRhID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksIGJ1ZlNpemUsICh1aW50cHRyX3Qp
ZGF0YSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0zdWl2IiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQsIGNvbnN0ICIKKyAgICAgICAgICAiR0x1aW50ICp2YWx1ZSA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9u
LCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVSZWFkblBpeGVscyhjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIGJ1ZlNpemUsIGRhdGEpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtM3Vpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBi
dWZTaXplLCBkYXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM3Vpdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFJlYWRuUGl4ZWxzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM3Vp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFJlYWRuUGl4ZWxzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpkYXRhKQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTRmQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MykKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xSZWFk
blBpeGVsc0VYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGlu
dCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgIgotICAg
ICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgYnVm
U2l6ZSA9ICVkLCB2b2lkICpkYXRhID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksIGJ1ZlNpemUsICh1aW50cHRyX3Qp
ZGF0YSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm00ZiIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9h
dCB2MCA9ICVmLCBHTGZsb2F0IHYxID0gIgorICAgICAgICAgICIlZiwgR0xmbG9hdCB2MiA9ICVm
LCBHTGZsb2F0IHYzID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVJlYWRuUGl4ZWxzRVhUKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgYnVmU2l6ZSwgZGF0YSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm00Zihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Miwg
djMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1
ZlNpemUsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00Zihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoUmVhZG5QaXhlbHNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgYnVmU2l6ZSwgZGF0YSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00
ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsCisgICAgICAgICAgICAgICAgICAgICAgdjIsIHYzKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgUmVsZWFzZVNoYWRlckNvbXBpbGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGZ2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsUmVsZWFzZVNoYWRlckNvbXBpbGVyIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250
ZXh0KSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm00ZnYiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgY291bnQgPSAlZCwgY29uc3QgIgorICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9u
LCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlbGVhc2VTaGFkZXJDb21waWxlcihjb250
ZXh0KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFJlbGVhc2VTaGFkZXJD
b21waWxlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtNGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQp
Cit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB2MykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xSZW5kZXJidWZmZXJTdG9yYWdl
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCA9ICVzLCBHTHNpemVpIHdpZHRoID0gJWQsICIKLSAgICAgICAgICAiR0xz
aXplaSBoZWlnaHQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQp
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTRpIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCAiCisgICAgICAgICAgIkdMaW50IHYy
ID0gJWQsIEdMaW50IHYzID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwg
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2UoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00
aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aShwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUmVuZGVyYnVmZmVyU3RvcmFnZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgIGhl
aWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAg
ICAgICAgICAgICAgICAgICAgdjIsIHYzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQordm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTRpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQp
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTRpdiIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCAiCisgICAgICAgICAgIip2YWx1
ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aXYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXQsIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGl2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybTR1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCB2MykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVB
TkdMRSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNp
emVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAg
ICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJidWZmZXJUYXJn
ZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOworICAg
IEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtNHVpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwg
R0x1aW50IHYxID0gJXUsICIKKyAgICAgICAgICAiR0x1aW50IHYyID0gJXUsIEdMdWludCB2MyA9
ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00dWkocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybTR1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSwgdjIsIHYzKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybTR1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVz
LCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVu
ZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTR1aXYiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgorICAgICAgICAgICJHTHVpbnQgKnZhbHVlID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUVYVCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFy
Z2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9j
YXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTR1
aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFByb2dyYW1Vbmlmb3JtNHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB2YWx1
ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGludGVybmFsZm9ybWF0ID0g
JXMsIEdMc2l6ZWkgd2lkdGggPSAlZCwgIgotICAgICAgICAgICJHTHNpemVpIGhlaWdodCA9ICVk
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpS
ZW5kZXJidWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQp
OworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2IiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCisgICAgICAgICAgInRyYW5zcG9zZSA9ICVzLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJh
bnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgyZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybU1hdHJpeDJmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZXN1bWVUcmFuc2Zv
cm1GZWVkYmFja0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQordm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQo
ImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBHTGJvb2xlYW4gIgorICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9h
dCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1
aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0KSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2ssIGlzQ2FsbFZh
bGlkLCBjb250ZXh0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotUm90YXRlZkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGZsb2F0IGFuZ2xlLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQor
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFJvdGF0ZWYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgYW5nbGUgPSAl
ZiwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBhbmdsZSwgeCwgeSwgeik7CisgICAgRVZFTlQoImdsUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyeDRmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJv
b2xlYW4gIgorICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBs
b2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3Qp
dmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVSb3RhdGVmKGNvbnRleHQsIGFuZ2xlLCB4LCB5LCB6KSk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yb3RhdGVmKGFuZ2xlLCB4LCB5LCB6KTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFJvdGF0ZWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhbmdsZSwgeCwgeSwg
eik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkKLVJvdGF0ZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xm
aXhlZCBhbmdsZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKK3ZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsUm90YXRleCIs
Ci0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgYW5nbGUgPSAweCVYLCBHTGZpeGVkIHgg
PSAweCVYLCBHTGZpeGVkIHkgPSAweCVYLCBHTGZpeGVkIHogPSAweCVYIiwKLSAgICAgICAgQ0lE
KGNvbnRleHQpLCBhbmdsZSwgeCwgeSwgeik7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKKyAg
ICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Um90YXRleChjb250ZXh0LCBhbmdsZSwgeCwgeSwgeikpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJvdGF0ZXgoYW5nbGUs
IHgsIHksIHopOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYo
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShSb3RhdGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYW5n
bGUsIHgsIHksIHopOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4
M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVDb3ZlcmFnZUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQordm9pZCBHTF9BUElF
TlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNhbXBsZUNv
dmVyYWdlIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCB2YWx1ZSA9ICVmLCBHTGJvb2xlYW4gaW52
ZXJ0ID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgdmFsdWUsIEdMYm9vbGVhblRvU3Ry
aW5nKGludmVydCkpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKKyAgICAgICAgICAidHJh
bnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xl
YW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVNhbXBsZUNvdmVyYWdlKGNvbnRleHQsIHZhbHVlLCBpbnZlcnQpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoU2FtcGxlQ292ZXJhZ2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB2YWx1
ZSwgaW52ZXJ0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDN4
MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVDb3ZlcmFnZXhDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xjbGFtcHggdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpCit2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2FtcGxl
Q292ZXJhZ2V4IiwgImNvbnRleHQgPSAlZCwgR0xjbGFtcHggdmFsdWUgPSAweCVYLCBHTGJvb2xl
YW4gaW52ZXJ0ID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgdmFsdWUsIEdMYm9vbGVh
blRvU3RyaW5nKGludmVydCkpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0
ZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKKyAgICAgICAg
ICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBH
TGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVNhbXBsZUNvdmVyYWdleChjb250ZXh0LCB2YWx1ZSwgaW52ZXJ0KSk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVDb3ZlcmFnZXgodmFsdWUsIGlu
dmVydCk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVDb3ZlcmFnZXgsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB2YWx1ZSwgaW52ZXJ0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bU1hdHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVNYXNraUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKQordm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNhbXBsZU1hc2tp
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IG1hc2tOdW1iZXIgPSAldSwgR0xiaXRmaWVsZCBtYXNr
ID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbWFza051bWJlciwgR0xiaXRmaWVsZFRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIG1hc2spLmNfc3RyKCkpOworICAgIEVW
RU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50
ID0gJWQsIEdMYm9vbGVhbiAiCisgICAgICAgICAgInRyYW5zcG9zZSA9ICVzLCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwg
KHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1wbGVNYXNraShjb250ZXh0LCBt
YXNrTnVtYmVyLCBtYXNrKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+c2FtcGxlTWFza2kobWFza051bWJlciwgbWFzayk7
CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFNhbXBsZU1hc2tpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWFza051bWJl
ciwgbWFzayk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJJaXZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKQordm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xT
YW1wbGVyUGFyYW1ldGVySWl2IiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBs
ZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbSA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVyLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAg
ICAgICAgKHVpbnRwdHJfdClwYXJhbSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgorICAg
ICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291
bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXYoY29udGV4dCwg
c2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVySWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVySWl2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVy
UGFyYW1ldGVySWl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm1NYXRyaXg0eDNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsU2FtcGxlclBhcmFtZXRl
cklpdk9FUyIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdM
ZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKLSAg
ICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICh1aW50
cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKKyAgICAgICAgICAidHJh
bnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xl
YW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2T0VTKGNvbnRleHQsIHNhbXBsZXJQ
YWNrZWQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm1NYXRyaXg0eDNmdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+c2FtcGxlclBhcmFtZXRlcklpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoU2FtcGxlclBhcmFtZXRlcklpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFt
ZXRlckl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICpwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHVzaERlYnVnR3JvdXBDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAg
ICAgICAiZ2xTYW1wbGVyUGFyYW1ldGVySXVpdiIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTHVpbnQgKnBhcmFt
ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIHNh
bXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLAotICAgICAgICAodWludHB0cl90KXBhcmFtKTsKKyAgICBFVkVOVCgiZ2xQdXNoRGVi
dWdHcm91cCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBH
THVpbnQgaWQgPSAldSwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICIKKyAgICAg
ICAgICAiKm1lc3NhZ2UgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksIGlk
LCBsZW5ndGgsCisgICAgICAgICAgKHVpbnRwdHJfdCltZXNzYWdlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdihjb250ZXh0LCBzYW1wbGVyUGFj
a2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlUHVzaERlYnVnR3JvdXAoY29udGV4dCwgc291cmNlLCBpZCwgbGVu
Z3RoLCBtZXNzYWdlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlckl1aXYoc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwg
aWQsIGxlbmd0aCwgbWVzc2FnZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShT
YW1wbGVyUGFyYW1ldGVySXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQs
IHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHVzaERlYnVnR3JvdXAsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySXVpdk9FU0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBh
cmFtKQordm9pZCBHTF9BUElFTlRSWSBQdXNoRGVidWdHcm91cEtIUkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
Ci0gICAgICAgICJnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTIiwKLSAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMdWlu
dCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250
ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0
ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICh1aW50cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJn
bFB1c2hEZWJ1Z0dyb3VwS0hSIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gc291
cmNlID0gJXMsIEdMdWludCBpZCA9ICV1LCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNo
YXIgIgorICAgICAgICAgICIqbWVzc2FnZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NvdXJjZSwg
c291cmNlKSwgaWQsIGxlbmd0aCwKKyAgICAgICAgICAodWludHB0cl90KW1lc3NhZ2UpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihjb250ZXh0
LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVySXVpdihz
YW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+cHVzaERl
YnVnR3JvdXAoc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShQdXNoRGVidWdHcm91cEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNvdXJjZSwgaWQsIGxl
bmd0aCwgbWVzc2FnZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJh
bWV0ZXJmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0pCit2
b2lkIEdMX0FQSUVOVFJZIFB1c2hHcm91cE1hcmtlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGNoYXIgKm1hcmtlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTYW1wbGVyUGFy
YW1ldGVyZiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwg
R0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAlZiIsIENJRChjb250ZXh0KSwKLSAg
ICAgICAgICBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFt
ZXRlck5hbWUsIHBuYW1lKSwgcGFyYW0pOworICAgIC8vIERvbid0IHJ1biB0aGUgRVZFTlQoKSBt
YWNybyBvbiB0aGUgRVhUX2RlYnVnX21hcmtlciBlbnRyeSBwb2ludHMuCisgICAgLy8gSXQgY2Fu
IGludGVyZmVyZSB3aXRoIHRoZSBkZWJ1ZyBldmVudHMgYmVpbmcgc2V0IGJ5IHRoZSBjYWxsZXIu
CisgICAgLy8gRVZFTlQoImdsUHVzaEdyb3VwTWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCwgR0xz
aXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICptYXJrZXIgPQorICAgIC8vIDB4JTAxNiIg
UFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBsZW5ndGgsICh1aW50cHRyX3QpbWFya2VyKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZihjb250ZXh0LCBz
YW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVB1c2hHcm91cE1hcmtlckVYVChjb250ZXh0
LCBsZW5ndGgsIG1hcmtlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXJQYWNrZWQsIHBu
YW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT5wdXNoR3JvdXBNYXJrZXIobGVuZ3Ro
LCBtYXJrZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlclBhcmFt
ZXRlcmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0p
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFB1c2hHcm91cE1hcmtlckVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
U2FtcGxlclBhcmFtZXRlcmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBQdXNoTWF0cml4Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2FtcGxlclBhcmFtZXRlcmZ2
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0g
cG5hbWUgPSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW0gPSAiCi0gICAgICAgICAgIjB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAg
ICh1aW50cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJnbFB1c2hNYXRyaXgiLCAiY29udGV4dCA9
ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxl
cklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1w
bGVyUGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVB1c2hNYXRyaXgoY29u
dGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0p
OworICAgICAgICAgICAgY29udGV4dC0+cHVzaE1hdHJpeCgpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoU2FtcGxlclBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
c2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQdXNo
TWF0cml4LCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFNhbXBsZXJQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBRdWVyeUNvdW50ZXJFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFNhbXBsZXJQYXJhbWV0ZXJpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
c2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsIENJRChj
b250ZXh0KSwKLSAgICAgICAgICBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbFF1ZXJ5
Q291bnRlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gdGFyZ2V0
ID0gJXMiLCBDSUQoY29udGV4dCksIGlkLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBh
cmFtKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgUXVlcnlUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlU
eXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKGNvbnRleHQsIGlkUGFja2VkLCB0YXJnZXRQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0p
OworICAgICAgICAgICAgY29udGV4dC0+cXVlcnlDb3VudGVyKGlkUGFja2VkLCB0YXJnZXRQYWNr
ZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlclBhcmFtZXRlcmks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFF1ZXJ5Q291bnRlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGlkUGFja2VkLCB0YXJnZXRQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBT
YW1wbGVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnBhcmFtKQorR0xiaXRmaWVsZCBHTF9BUElFTlRSWSBRdWVyeU1hdHJpeHhPRVND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKm1hbnRpc3NhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmV4cG9uZW50KQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKAotICAgICAgICAiZ2xTYW1wbGVyUGFyYW1ldGVyaXYiLAotICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xpbnQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBD
SUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVy
UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAodWludHB0cl90KXBhcmFtKTsKKyAgICBF
VkVOVCgiZ2xRdWVyeU1hdHJpeHhPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZml4
ZWQgKm1hbnRpc3NhID0gMHglMDE2IiBQUkl4UFRSICIsIEdMaW50ICpleHBvbmVudCA9IDB4JTAx
NiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRw
dHJfdCltYW50aXNzYSwgKHVpbnRwdHJfdClleHBvbmVudCk7CiAKKyAgICBHTGJpdGZpZWxkIHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
aXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVRdWVyeU1hdHJpeHhP
RVMoY29udGV4dCwgbWFudGlzc2EsIGV4cG9uZW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcml2KHNh
bXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNv
bnRleHQtPnF1ZXJ5TWF0cml4eChtYW50aXNzYSwgZXhwb25lbnQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlclBhcmFtZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpRdWVyeU1hdHJpeHhPRVMsIEdMYml0ZmllbGQ+KCk7CisgICAgICAgIH0KKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShRdWVyeU1hdHJpeHhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtYW50
aXNzYSwgZXhwb25lbnQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6UXVl
cnlNYXRyaXh4T0VTLCBHTGJpdGZpZWxkPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2NhbGVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCit2b2lkIEdMX0FQSUVOVFJZ
IFJlYWRCdWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHNyYykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xTY2FsZWYiLCAiY29udGV4dCA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xm
bG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9ICVmIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHgs
IHksIHopOworICAgIEVWRU5UKCJnbFJlYWRCdWZmZXIiLCAiY29udGV4dCA9ICVkLCBHTGVudW0g
c3JjID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlJlYWRCdWZmZXJNb2RlLCBzcmMpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2NhbGVmKGNvbnRleHQsIHgsIHksIHop
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVhZEJ1ZmZl
cihjb250ZXh0LCBzcmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zY2FsZWYoeCwgeSwgeik7CisgICAgICAgICAgICBjb250ZXh0
LT5yZWFkQnVmZmVyKHNyYyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTY2Fs
ZWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB6KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShSZWFkQnVmZmVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc3JjKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgU2NhbGV4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4
ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopCit2b2lkIEdMX0FQSUVOVFJZIFJlYWRQaXhlbHND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KnBpeGVscykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTY2FsZXgiLCAiY29udGV4dCA9ICVkLCBHTGZpeGVk
IHggPSAweCVYLCBHTGZpeGVkIHkgPSAweCVYLCBHTGZpeGVkIHogPSAweCVYIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHgsIHksIHopOworICAgIEVWRU5UKCJnbFJlYWRQaXhlbHMiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIGZv
cm1hdCA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCB2b2lkICpwaXhlbHMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksICh1aW50cHRyX3Qp
cGl4ZWxzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlU2NhbGV4KGNvbnRleHQsIHgsIHksIHopKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVhZFBpeGVscyhjb250ZXh0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxleCh4LCB5
LCB6KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoU2NhbGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgeik7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoUmVhZFBpeGVscywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkKLVNjaXNzb3JDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIFJlYWRu
UGl4ZWxzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNjaXNzb3IiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgRVZFTlQoImdsUmVhZG5QaXhlbHMiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIGZvcm1h
dCA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgdm9pZCAqZGF0
YSA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVs
Rm9ybWF0LCBmb3JtYXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQ
aXhlbFR5cGUsIHR5cGUpLCBidWZTaXplLCAodWludHB0cl90KWRhdGEpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Npc3Nvcihjb250ZXh0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUmVhZG5QaXhlbHMoY29udGV4dCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2Npc3Nvcih4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlYWRuUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTY2lzc29yLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUmVhZG5QaXhlbHMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgZGF0YSk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBzZW1hcGhvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
NjQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHNFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2VtYXBob3JlUGFy
YW1ldGVydWk2NHZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhv
cmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMdWludDY0ICpwYXJhbXMgPSAiCi0g
ICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHNl
bWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNlbWFwaG9yZVBhcmFtZXRlck5h
bWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImds
UmVhZG5QaXhlbHNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwg
R0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIK
KyAgICAgICAgICAiR0xlbnVtIGZvcm1hdCA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVp
IGJ1ZlNpemUgPSAlZCwgdm9pZCAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsRm9ybWF0LCBmb3JtYXQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFR5cGUsIHR5cGUpLCBidWZTaXplLCAodWludHB0
cl90KWRhdGEpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNlbWFwaG9yZUlEIHNl
bWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2Vt
YXBob3JlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVNlbWFw
aG9yZVBhcmFtZXRlcnVpNjR2RVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBh
cmFtcykpOworICAgICAgICAgICAgIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoY29udGV4dCwgeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2VtYXBo
b3JlUGFyYW1ldGVydWk2NHYoc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnJlYWRuUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgYnVmU2l6ZSwgZGF0YSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShT
ZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9y
ZVBhY2tlZCwgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShSZWFkblBpeGVsc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBidWZT
aXplLCBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2V0RmVuY2VOVkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24p
Cit2b2lkIEdMX0FQSUVOVFJZIFJlbGVhc2VTaGFkZXJDb21waWxlckNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNldEZlbmNlTlYiLCAiY29udGV4dCA9ICVk
LCBHTHVpbnQgZmVuY2UgPSAldSwgR0xlbnVtIGNvbmRpdGlvbiA9ICVzIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIGZlbmNlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBjb25kaXRpb24pKTsKKyAgICBFVkVOVCgiZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIiLCAi
Y29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RmVuY2VOVklEPihmZW5jZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU2V0RmVuY2VOVihjb250ZXh0LCBmZW5jZVBhY2tlZCwgY29uZGl0aW9u
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlbGVhc2VT
aGFkZXJDb21waWxlcihjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0RmVuY2VOVihmZW5jZVBhY2tlZCwgY29uZGl0
aW9uKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlbGVhc2VTaGFkZXJDb21waWxlcigpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2V0RmVuY2VOViwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGZlbmNlUGFja2VkLCBjb25kaXRpb24pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFJl
bGVhc2VTaGFkZXJDb21waWxlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBTaGFkZU1vZGVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSBtb2RlKQordm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTaGFkZU1vZGVsIiwgImNvbnRleHQgPSAlZCwgR0xl
bnVtIG1vZGUgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6U2hhZGluZ01vZGVsLCBtb2RlKSk7CisgICAgRVZFTlQoImdsUmVuZGVyYnVm
ZmVyU3RvcmFnZSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVz
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgR0xzaXplaSB3aWR0aCA9ICVkLCAiCisgICAg
ICAgICAgIkdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVy
bmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgU2hhZGluZ01vZGVsIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRpbmdNb2RlbD4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVTaGFkZU1vZGVsKGNvbnRleHQsIG1vZGVQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVy
YnVmZmVyU3RvcmFnZShjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+c2hhZGVNb2RlbChtb2RlUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJl
bmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTaGFkZU1vZGVsLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbW9kZVBhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUmVuZGVyYnVm
ZmVyU3RvcmFnZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFNoYWRlckJpbmFyeUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
c2hhZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBiaW5hcnlmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpiaW5hcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGxlbmd0aCkKK3ZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNo
YWRlckJpbmFyeSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVk
LCBjb25zdCBHTHVpbnQgKnNoYWRlcnMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBH
TGVudW0gYmluYXJ5Zm9ybWF0ID0gJXMsIGNvbnN0IHZvaWQgKmJpbmFyeSA9IDB4JTAxNiIgUFJJ
eFBUUiAiLCBHTHNpemVpIGxlbmd0aCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGNv
dW50LCAodWludHB0cl90KXNoYWRlcnMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRlZmF1bHRHcm91cCwgYmluYXJ5Zm9ybWF0KSwgKHVpbnRwdHJfdCliaW5hcnksIGxl
bmd0aCk7CisgICAgRVZFTlQoImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxl
cyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFyZ2V0
KSwgc2FtcGxlcywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJu
YWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgY29uc3QgU2hhZGVyUHJvZ3JhbUlEICpzaGFkZXJzUGFja2VkICAg
ICAgICAgID0gRnJvbUdMPGNvbnN0IFNoYWRlclByb2dyYW1JRCAqPihzaGFkZXJzKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZVNoYWRlckJpbmFyeShjb250ZXh0LCBjb3VudCwgc2hhZGVyc1BhY2tlZCwgYmluYXJ5Zm9ybWF0
LCBiaW5hcnksIGxlbmd0aCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoY29udGV4dCwg
dGFyZ2V0LCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+c2hhZGVyQmluYXJ5KGNvdW50LCBzaGFkZXJzUGFja2VkLCBiaW5hcnlmb3JtYXQsIGJp
bmFyeSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNoYWRlckJpbmFyeSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGNvdW50LCBzaGFkZXJzUGFja2VkLCBiaW5hcnlmb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgYmluYXJ5LCBsZW5ndGgpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldCwgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNoYWRlclNvdXJjZUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqbGVuZ3RoKQordm9p
ZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
U2hhZGVyU291cmNlIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2hhZGVyID0g
JXUsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xjaGFyICpjb25zdCpzdHJpbmcgPSAiCi0g
ICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiLCBjb25zdCBHTGludCAqbGVuZ3RoID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2hhZGVyLCBjb3VudCwgKHVp
bnRwdHJfdClzdHJpbmcsICh1aW50cHRyX3QpbGVuZ3RoKTsKKyAgICBFVkVOVCgiZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhl
aWdodCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpSZW5kZXJidWZmZXJUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1h
dCksIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
U2hhZGVyU291cmNlKGNvbnRleHQsIHNoYWRlclBhY2tlZCwgY291bnQsIHN0cmluZywgbGVuZ3Ro
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+c2hhZGVyU291cmNlKHNoYWRlclBhY2tlZCwgY291bnQsIHN0cmlu
ZywgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNoYWRlclNvdXJjZSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHNoYWRlclBhY2tlZCwgY291bnQsIHN0cmluZywgbGVuZ3RoKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIFNpZ25hbFNlbWFwaG9yZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNl
bWFwaG9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBudW1CdWZmZXJCYXJyaWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqYnVmZmVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1UZXh0dXJlQmFycmll
cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnRleHR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xlbnVtICpkc3RMYXlvdXRzKQordm9pZCBHTF9BUElFTlRSWSBS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2lnbmFsU2VtYXBob3JlRVhUIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMdWludCBudW1CdWZm
ZXJCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQgIgotICAgICAgICAgICIqYnVmZmVycyA9IDB4
JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMgPSAl
dSwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIs
IGNvbnN0IEdMZW51bSAqZHN0TGF5b3V0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgbnVtQnVmZmVyQmFycmllcnMsICh1aW50cHRyX3Qp
YnVmZmVycywgbnVtVGV4dHVyZUJhcnJpZXJzLAotICAgICAgICAgICh1aW50cHRyX3QpdGV4dHVy
ZXMsICh1aW50cHRyX3QpZHN0TGF5b3V0cyk7CisgICAgRVZFTlQoImdsUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAl
cywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJl
bmRlcmJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgs
IGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBob3JlSUQgc2Vt
YXBob3JlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1h
cGhvcmUpOwotICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIGNvbnN0
IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBU
ZXh0dXJlSUQgKj4odGV4dHVyZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlU2lnbmFsU2VtYXBob3JlRVhUKGNvbnRleHQs
IHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0
ZXh0dXJlc1BhY2tlZCwgZHN0TGF5b3V0cykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVF
WFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zaWduYWxTZW1hcGhvcmUo
c2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywgYnVmZmVyc1BhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1
cmVzUGFja2VkLCBkc3RMYXlvdXRzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNpZ25hbFNlbWFw
aG9yZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVy
QmFycmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc1BhY2tlZCwgbnVtVGV4dHVy
ZUJhcnJpZXJzLCB0ZXh0dXJlc1BhY2tlZCwgZHN0TGF5b3V0cyk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGFyZ2V0LCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNp
bEZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJl
ZiwgR0x1aW50IG1hc2spCit2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxGdW5jIiwg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIGZ1bmMgPSAlcywgR0xpbnQgcmVmID0gJWQsIEdMdWludCBt
YXNrID0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlN0ZW5jaWxGdW5jdGlvbiwgZnVuYyksIHJlZiwgbWFzayk7CisgICAgRVZFTlQoImds
UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgR0xzaXplaSB3aWR0aCA9
ICVkLCAiCisgICAgICAgICAgIkdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwg
dGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxG
b3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsRnVuYyhjb250ZXh0LCBm
dW5jLCByZWYsIG1hc2spKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNvbnRleHQs
IHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsRnVuYyhm
dW5jLCByZWYsIG1hc2spOworICAgICAgICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFn
ZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxGdW5jLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnVu
YywgcmVmLCBtYXNrKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJidWZmZXJTdG9yYWdl
T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkKLVN0ZW5jaWxGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQordm9pZCBH
TF9BUElFTlRSWSBSZXN1bWVUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxGdW5jU2VwYXJhdGUiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBmdW5jID0gJXMsIEdMaW50
IHJlZiA9ICVkLCBHTHVpbnQgbWFzayA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsRmFjZURpcmVjdGlvbiwgZmFjZSksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxGdW5jdGlvbiwgZnVu
YyksIHJlZiwgbWFzayk7CisgICAgRVZFTlQoImdsUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2siLCAi
Y29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoY29u
dGV4dCwgZmFjZSwgZnVuYywgcmVmLCBtYXNrKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5z
dGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgICAgICAgICBj
b250ZXh0LT5yZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZh
Y2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUmVzdW1lVHJhbnNm
b3JtRmVlZGJhY2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgU3RlbmNpbE1hc2tDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IG1hc2spCit2b2lkIEdMX0FQSUVOVFJZCitSb3RhdGVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZmxvYXQgYW5nbGUsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsU3RlbmNpbE1hc2siLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWFzayA9
ICV1IiwgQ0lEKGNvbnRleHQpLCBtYXNrKTsKKyAgICBFVkVOVCgiZ2xSb3RhdGVmIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGZsb2F0IGFuZ2xlID0gJWYsIEdMZmxvYXQgeCA9ICVmLCBH
TGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
YW5nbGUsIHgsIHksIHopOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsTWFzayhjb250ZXh0LCBtYXNrKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJvdGF0ZWYoY29udGV4dCwgYW5n
bGUsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5zdGVuY2lsTWFzayhtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnJvdGF0ZWYoYW5nbGUsIHgsIHksIHopOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoU3RlbmNpbE1hc2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtYXNrKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShSb3RhdGVmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYW5nbGUsIHgsIHksIHop
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsTWFza1NlcGFyYXRlQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzaykKK3ZvaWQg
R0xfQVBJRU5UUlkKK1JvdGF0ZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhl
ZCBhbmdsZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xTdGVuY2lsTWFza1NlcGFyYXRlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZhY2UgPSAlcywg
R0x1aW50IG1hc2sgPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6U3RlbmNpbEZhY2VEaXJlY3Rpb24sIGZhY2UpLCBtYXNrKTsKKyAgICBF
VkVOVCgKKyAgICAgICAgImdsUm90YXRleCIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZml4
ZWQgYW5nbGUgPSAweCVYLCBHTGZpeGVkIHggPSAweCVYLCBHTGZpeGVkIHkgPSAweCVYLCBHTGZp
eGVkIHogPSAweCVYIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBhbmdsZSwgeCwgeSwgeik7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVTdGVuY2lsTWFza1NlcGFyYXRlKGNvbnRleHQsIGZhY2UsIG1hc2spKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUm90YXRleChjb250
ZXh0LCBhbmdsZSwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
CisgICAgICAgICAgICBjb250ZXh0LT5yb3RhdGV4KGFuZ2xlLCB4LCB5LCB6KTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxNYXNrU2VwYXJhdGUsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBmYWNlLCBtYXNrKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShSb3RhdGV4LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgYW5nbGUsIHgsIHksIHopOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBTdGVuY2lsT3BDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQordm9pZCBHTF9BUElFTlRSWSBTYW1w
bGVDb3ZlcmFnZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IHZhbHVlLCBH
TGJvb2xlYW4gaW52ZXJ0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxPcCIsICJjb250ZXh0ID0g
JWQsIEdMZW51bSBmYWlsID0gJXMsIEdMZW51bSB6ZmFpbCA9ICVzLCBHTGVudW0genBhc3MgPSAl
cyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
U3RlbmNpbE9wLCBmYWlsKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
U3RlbmNpbE9wLCB6ZmFpbCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlN0ZW5jaWxPcCwgenBhc3MpKTsKKyAgICBFVkVOVCgiZ2xTYW1wbGVDb3ZlcmFnZSIsICJjb250
ZXh0ID0gJWQsIEdMZmxvYXQgdmFsdWUgPSAlZiwgR0xib29sZWFuIGludmVydCA9ICVzIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIHZhbHVlLCBHTGJvb2xlYW5Ub1N0cmluZyhpbnZlcnQpKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5j
aWxPcChjb250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2UoY29udGV4dCwgdmFs
dWUsIGludmVydCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgICAgICAg
ICAgY29udGV4dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsT3AsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWls
LCB6ZmFpbCwgenBhc3MpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZUNvdmVyYWdlLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdmFsdWUsIGludmVydCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFN0ZW5jaWxPcFNlcGFyYXRlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
YWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gc2ZhaWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkcGZhaWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkcHBhc3MpCit2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZUNvdmVyYWdleENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGNsYW1weCB2YWx1ZSwgR0xib29sZWFuIGlu
dmVydCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsU3RlbmNpbE9wU2VwYXJhdGUiLAotICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9ICVzLCBHTGVudW0gc2ZhaWwgPSAlcywg
R0xlbnVtIGRwZmFpbCA9ICVzLCBHTGVudW0gZHBwYXNzID0gJXMiLAotICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsRmFjZURpcmVjdGlvbiwg
ZmFjZSksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsT3AsIHNm
YWlsKSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxPcCwgZHBm
YWlsKSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxPcCwgZHBw
YXNzKSk7CisgICAgRVZFTlQoImdsU2FtcGxlQ292ZXJhZ2V4IiwgImNvbnRleHQgPSAlZCwgR0xj
bGFtcHggdmFsdWUgPSAweCVYLCBHTGJvb2xlYW4gaW52ZXJ0ID0gJXMiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgdmFsdWUsIEdMYm9vbGVhblRvU3RyaW5nKGludmVydCkpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNp
bE9wU2VwYXJhdGUoY29udGV4dCwgZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNzKSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1w
bGVDb3ZlcmFnZXgoY29udGV4dCwgdmFsdWUsIGludmVydCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIHNmYWlsLCBkcGZhaWwsIGRwcGFzcyk7CisgICAgICAgICAgICBjb250ZXh0LT5zYW1w
bGVDb3ZlcmFnZXgodmFsdWUsIGludmVydCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShTdGVuY2lsT3BTZXBhcmF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHNmYWls
LCBkcGZhaWwsIGRwcGFzcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlQ292ZXJhZ2V4
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdmFsdWUsIGludmVydCk7CiAgICAgfQogfQogCi1HTGJv
b2xlYW4gR0xfQVBJRU5UUlkgVGVzdEZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0x1aW50IGZlbmNlKQordm9pZCBHTF9BUElFTlRSWSBTYW1wbGVNYXNraUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbFRlc3RGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNl
ID0gJXUiLCBDSUQoY29udGV4dCksIGZlbmNlKTsKKyAgICBFVkVOVCgiZ2xTYW1wbGVNYXNraSIs
ICJjb250ZXh0ID0gJWQsIEdMdWludCBtYXNrTnVtYmVyID0gJXUsIEdMYml0ZmllbGQgbWFzayA9
ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG1hc2tOdW1iZXIsIEdMYml0ZmllbGRUb1N0
cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBtYXNrKS5jX3N0cigpKTsKIAotICAgIEdM
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgRmVuY2VO
VklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJ
RD4oZmVuY2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGVzdEZlbmNl
TlYoY29udGV4dCwgZmVuY2VQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBsZU1hc2tpKGNvbnRleHQsIG1hc2tOdW1i
ZXIsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPnRlc3RGZW5jZU5WKGZlbmNlUGFja2VkKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OlRlc3RGZW5jZU5WLCBHTGJvb2xl
YW4+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVNYXNraShtYXNrTnVtYmVyLCBtYXNr
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRlc3RGZW5jZU5WLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6VGVzdEZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShTYW1wbGVNYXNraSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1hc2tOdW1iZXIsIG1hc2spOwog
ICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4
QnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZlcikKK3ZvaWQgR0xfQVBJRU5UUlkg
U2FtcGxlclBhcmFtZXRlcklpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4QnVmZmVyIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCA9ICVzLCBHTHVpbnQgYnVmZmVyID0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5h
bGZvcm1hdCksIGJ1ZmZlcik7CisgICAgRVZFTlQoCisgICAgICAgICJnbFNhbXBsZXJQYXJhbWV0
ZXJJaXYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVu
dW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSCisgICAg
ICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAodWludHB0
cl90KXBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJJRCBidWZm
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZl
cik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4QnVmZmVyKGNvbnRl
eHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCkpOworICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2KGNvbnRleHQsIHNhbXBsZXJQ
YWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEJ1ZmZlcih0YXJnZXQsIGludGVybmFsZm9ybWF0
LCBidWZmZXJQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcklp
dihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4QnVmZmVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgYnVmZmVyUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFy
YW1ldGVySWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBh
cmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4QnVmZmVyUmFuZ2VDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKK3ZvaWQg
R0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcklpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsVGV4QnVmZmVyUmFuZ2UiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdMdWludCBidWZmZXIgPSAl
dSwgIgotICAgICAgICAgICJHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIHNpemUg
PSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCBidWZmZXIsCi0gICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUpKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsU2Ft
cGxlclBhcmFtZXRlcklpdk9FUyIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1w
bGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW0gPSAweCUwMTYi
IFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisg
ICAgICAgICh1aW50cHRyX3QpcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxC
dWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldCwg
aW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplKSk7CisgICAgICAgIFNh
bXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgc2Ft
cGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4QnVmZmVyUmFuZ2UodGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUpOworICAgICAgICAgICAgY29u
dGV4dC0+c2FtcGxlclBhcmFtZXRlcklpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4QnVmZmVyUmFuZ2UsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBidWZmZXJQYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBzaXplKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShT
YW1wbGVyUGFyYW1ldGVySWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tl
ZCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQ
b2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCit2
b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJJdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW0pCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsVGV4Q29vcmRQb2ludGVyIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBzaXpl
ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgc3RyaWRlID0gJWQsIGNvbnN0IHZvaWQg
IgotICAgICAgICAgICIqcG9pbnRlciA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHNpemUsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXhDb29yZFBv
aW50ZXJUeXBlLCB0eXBlKSwgc3RyaWRlLAotICAgICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7
CisgICAgRVZFTlQoCisgICAgICAgICJnbFNhbXBsZXJQYXJhbWV0ZXJJdWl2IiwKKyAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNv
bnN0IEdMdWludCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAg
IENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBs
ZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICh1aW50cHRyX3QpcGFyYW0pOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhDb29yZFBvaW50ZXIoY29udGV4dCwg
c2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CisgICAgICAgIFNhbXBsZXJJRCBz
YW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBs
ZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQs
IHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnRleENvb3JkUG9pbnRlcihzaXplLCB0eXBlUGFja2VkLCBzdHJp
ZGUsIHBvaW50ZXIpOworICAgICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlckl1aXYo
c2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFRleENvb3JkUG9pbnRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNpemUsIHR5cGVQ
YWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlclBh
cmFtZXRlckl1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwg
cGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZmQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlckl1aXZPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpw
YXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhFbnZmIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52
VGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgKKyAgICAgICAg
ImdsU2FtcGxlclBhcmFtZXRlckl1aXZPRVMiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0x1aW50ICpwYXJhbSA9
IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1w
bGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBu
YW1lKSwKKyAgICAgICAgKHVpbnRwdHJfdClwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJh
bWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1l
dGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4RW52
Zihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOworICAgICAgICBT
YW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhjb250ZXh0LCBz
YW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhFbnZmKHRhcmdldFBhY2tlZCwgcG5h
bWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJJ
dWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShUZXhFbnZmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0
ZXJJdWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBh
cmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4RW52ZnZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbXMpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4RW52ZnYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0
IEdMZmxvYXQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVF
bnZUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwordm9pZCBH
TF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHBhcmFtKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbFNhbXBsZXJQYXJhbWV0ZXJmIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5h
bWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIHNh
bXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZUVu
dlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZU
YXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4RW52ZnYoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4o
c2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnRleEVudmZ2KHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyUGFja2VkLCBwbmFt
ZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4RW52ZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0ZXJmLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgVGV4RW52aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBTYW1wbGVy
UGFyYW1ldGVyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4RW52aSIsICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHBhcmFtID0gJWQiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVFbnZUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbFNh
bXBsZXJQYXJhbWV0ZXJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBs
ZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtID0gIgorICAg
ICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1w
bGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBu
YW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBh
cmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJh
bWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhF
bnZpKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAgICAg
IFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdihjb250ZXh0LCBzYW1w
bGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhFbnZpKHRhcmdldFBhY2tlZCwgcG5hbWVQ
YWNrZWQsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJmdihz
YW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVGV4RW52aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQ
YWNrZWQsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVyZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZpdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpCit2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xU
ZXhFbnZpdiIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xl
bnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAg
ICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdldCksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1z
KTsKKyAgICBFVkVOVCgiZ2xTYW1wbGVyUGFyYW1ldGVyaSIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHBhcmFt
ID0gJWQiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBhcmFtKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAg
ICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhFbnZpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBw
YXJhbXMpKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
cmkoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4RW52aXYodGFy
Z2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNh
bXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
U2FtcGxlclBhcmFtZXRlcmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBw
bmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZ4Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xm
aXhlZCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcml2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xUZXhFbnZ4IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdl
dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQYXJh
bWV0ZXIsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKAorICAgICAgICAiZ2xTYW1wbGVyUGFy
YW1ldGVyaXYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBH
TGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSCisg
ICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAodWlu
dHB0cl90KXBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlRW52
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRh
cmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZ4KGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2Ft
cGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT50ZXhFbnZ4KHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwg
cGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4RW52eCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBUZXhFbnZ4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5U
UlkgU2NhbGVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHopCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4RW52eHYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0
IEdMZml4ZWQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVF
bnZUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVW
RU5UKCJnbFNjYWxlZiIsICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkg
PSAlZiwgR0xmbG9hdCB6ID0gJWYiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgeCwgeSwgeik7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4RW52eHYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBh
Y2tlZCwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVNjYWxlZihjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4RW52eHYodGFyZ2V0UGFja2VkLCBw
bmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlZih4LCB5LCB6
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEVudnh2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShTY2FsZWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB6KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4R2VuZk9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3Zv
aWQgR0xfQVBJRU5UUlkgU2NhbGV4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4
ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4R2VuZk9FUyIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xm
bG9hdCBwYXJhbSA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0p
OworICAgIEVWRU5UKCJnbFNjYWxleCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgeCA9IDB4JVgs
IEdMZml4ZWQgeSA9IDB4JVgsIEdMZml4ZWQgeiA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgeCwgeSwgeik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5mT0VTKGNvbnRleHQsIGNvb3Jk
LCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlU2NhbGV4KGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhHZW5mKGNvb3JkLCBwbmFtZSwg
cGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+c2NhbGV4KHgsIHksIHopOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4R2VuZk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGNvb3JkLCBwbmFtZSwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNjYWxleCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHopOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBUZXhHZW5mdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQordm9pZCBH
TF9BUElFTlRSWQorU2Npc3NvckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgK
LSAgICAgICAgImdsVGV4R2VuZnZPRVMiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
Y29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4
JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAotICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCAo
dWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsU2Npc3NvciIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAl
ZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3
aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVRleEdlbmZ2T0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNjaXNzb3Io
Y29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEdlbmZ2KGNvb3JkLCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhHZW5mdk9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShTY2lzc29yLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEdlbmlPRVNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQor
dm9pZCBHTF9BUElFTlRSWSBTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgc2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludDY0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4R2VuaU9FUyIsICJjb250ZXh0ID0g
JWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAl
ZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgi
Z2xTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0x1aW50NjQg
KnBhcmFtcyA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2VtYXBo
b3JlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5pT0VTKGNvbnRleHQsIGNv
b3JkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChj
b250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhHZW5pKGNvb3Jk
LCBwbmFtZSwgcGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+c2VtYXBob3JlUGFyYW1ldGVy
dWk2NHYoc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleEdlbmlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwg
cG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTZW1hcGhvcmVQYXJhbWV0ZXJ1
aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgVGV4R2VuaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCit2b2lkIEdM
X0FQSUVOVFJZIFNldEZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleEdlbml2T0VTIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwor
ICAgIEVWRU5UKCJnbFNldEZlbmNlTlYiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAl
dSwgR0xlbnVtIGNvbmRpdGlvbiA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGZlbmNl
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb25kaXRpb24pKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8RmVuY2VOVklEPihmZW5jZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5pdk9FUyhjb250ZXh0LCBjb29yZCwg
cG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVTZXRGZW5jZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkLCBjb25kaXRpb24pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT50ZXhHZW5pdihjb29yZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRGZW5jZU5WKGZlbmNlUGFja2VkLCBjb25kaXRpb24pOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVGV4R2VuaXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoU2V0RmVuY2VOViwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGZlbmNlUGFja2VkLCBjb25kaXRpb24pOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBUZXhHZW54T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBT
aGFkZU1vZGVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbFRleEdlbnhPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLCBD
SUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVDb29yZE5hbWUsIGNvb3JkKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsU2hh
ZGVNb2RlbCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCks
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNoYWRpbmdNb2RlbCwgbW9k
ZSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VueE9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBh
cmFtKSk7CisgICAgICAgIFNoYWRpbmdNb2RlbCBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRpbmdNb2RlbD4obW9kZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNoYWRlTW9kZWwoY29udGV4dCwgbW9kZVBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnRleEdlbngoY29vcmQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250
ZXh0LT5zaGFkZU1vZGVsKG1vZGVQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVGV4R2VueE9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFy
YW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNoYWRlTW9kZWwsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBtb2RlUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4R2VueHZP
RVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkg
U2hhZGVyQmluYXJ5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpzaGFkZXJzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeWZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbGVuZ3RoKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xUZXhHZW54dk9FUyIsCi0gICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywg
Y29uc3QgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29v
cmROYW1lLCBjb29yZCksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0
dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xTaGFkZXJCaW5hcnkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgY291bnQg
PSAlZCwgY29uc3QgR0x1aW50ICpzaGFkZXJzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAg
IiwgR0xlbnVtIGJpbmFyeWZvcm1hdCA9ICVzLCBjb25zdCB2b2lkICpiaW5hcnkgPSAweCUwMTYi
IFBSSXhQVFIgIiwgR0xzaXplaSBsZW5ndGggPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBjb3VudCwgKHVpbnRwdHJfdClzaGFkZXJzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGJpbmFyeWZvcm1hdCksICh1aW50cHRyX3QpYmluYXJ5
LCBsZW5ndGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBjb25zdCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQYWNrZWQgPSBGcm9t
R0w8Y29uc3QgU2hhZGVyUHJvZ3JhbUlEICo+KHNoYWRlcnMpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VueHZPRVMoY29udGV4
dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVTaGFkZXJCaW5hcnkoY29udGV4dCwg
Y291bnQsIHNoYWRlcnNQYWNrZWQsIGJpbmFyeWZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50
ZXhHZW54dihjb29yZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5zaGFk
ZXJCaW5hcnkoY291bnQsIHNoYWRlcnNQYWNrZWQsIGJpbmFyeWZvcm1hdCwgYmluYXJ5LCBsZW5n
dGgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4R2VueHZPRVMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoU2hhZGVyQmluYXJ5LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291bnQsIHNoYWRlcnNQ
YWNrZWQsIGJpbmFyeWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICBiaW5hcnksIGxlbmd0
aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlMkRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgYm9yZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBHTF9BUElFTlRSWSBTaGFkZXJTb3VyY2VDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmxlbmd0aCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xUZXhJbWFnZTJEIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVybmFsZm9ybWF0ID0gJWQsIEdMc2l6
ZWkgIgotICAgICAgICAgICJ3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGludCBi
b3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9ICVzLCBHTGVudW0gdHlwZSA9ICIKLSAgICAgICAg
ICAiJXMsIGNvbnN0IHZvaWQgKnBpeGVscyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0
LCB0YXJnZXQpLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1h
dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlw
ZSksICh1aW50cHRyX3QpcGl4ZWxzKTsKKyAgICBFVkVOVCgiZ2xTaGFkZXJTb3VyY2UiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSwgR0xzaXplaSBjb3VudCA9
ICVkLCBjb25zdCBHTGNoYXIgKmNvbnN0KnN0cmluZyA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQ
Ukl4UFRSICIsIGNvbnN0IEdMaW50ICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBzaGFkZXIsIGNvdW50LCAodWludHB0cl90KXN0cmluZywgKHVp
bnRwdHJfdClsZW5ndGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleElt
YWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVTaGFkZXJTb3VyY2UoY29udGV4dCwgc2hhZGVyUGFja2VkLCBjb3VudCwg
c3RyaW5nLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNo
YWRlclNvdXJjZShzaGFkZXJQYWNrZWQsIGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhJbWFnZTJELCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoU2hhZGVyU291cmNlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hh
ZGVyUGFja2VkLCBjb3VudCwgc3RyaW5nLCBsZW5ndGgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBUZXhJbWFnZTNEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBHTF9B
UElFTlRSWSBTaWduYWxTZW1hcGhvcmVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
ZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtVGV4dHVyZUJhcnJp
ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICp0ZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqZHN0TGF5b3V0cykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xU
ZXhJbWFnZTNEIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVybmFsZm9ybWF0ID0gJWQsIEdMc2l6ZWkgIgot
ICAgICAgICAgICJ3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRo
ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0gIgotICAgICAgICAgICIl
cywgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksICh1aW50cHRyX3QpcGl4ZWxzKTsKKyAgICBFVkVOVCgi
Z2xTaWduYWxTZW1hcGhvcmVFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBz
ZW1hcGhvcmUgPSAldSwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzID0gJXUsIGNvbnN0IEdMdWlu
dCAiCisgICAgICAgICAgIipidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwg
R0x1aW50IG51bVRleHR1cmVCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQgKnRleHR1cmVzID0g
MHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgY29uc3QgR0xlbnVtICpkc3RMYXlvdXRzID0g
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBu
dW1CdWZmZXJCYXJyaWVycywgKHVpbnRwdHJfdClidWZmZXJzLCBudW1UZXh0dXJlQmFycmllcnMs
CisgICAgICAgICAgKHVpbnRwdHJfdCl0ZXh0dXJlcywgKHVpbnRwdHJfdClkc3RMYXlvdXRzKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTNEKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIHBpeGVscykpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBo
b3JlKTsKKyAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7CisgICAgICAg
IGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVNpZ25h
bFNlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJz
LCBidWZmZXJzUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhJ
bWFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgYm9yZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQs
IHR5cGUsIHBpeGVscyk7CisgICAgICAgICAgICBjb250ZXh0LT5zaWduYWxTZW1hcGhvcmUoc2Vt
YXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywgYnVmZmVyc1BhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVz
UGFja2VkLCBkc3RMYXlvdXRzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRl
eEltYWdlM0QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoU2ln
bmFsU2VtYXBob3JlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBu
dW1CdWZmZXJCYXJyaWVycywKKyAgICAgICAgICAgICAgICAgICAgICBidWZmZXJzUGFja2VkLCBu
dW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBkc3RMYXlvdXRzKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEdMX0FQSUVOVFJZIFN0
ZW5jaWxGdW5jQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmdW5jLCBHTGlu
dCByZWYsIEdMdWludCBtYXNrKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleEltYWdlM0RPRVMiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAl
ZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdMc2l6ZWkgIgotICAgICAgICAgICJ3aWR0
aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMaW50IGJv
cmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0gIgotICAgICAgICAgICIlcywgR0xlbnVtIHR5cGUg
PSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksIGxldmVsLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJ
bnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwg
Zm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBl
LCB0eXBlKSwgKHVpbnRwdHJfdClwaXhlbHMpOworICAgIEVWRU5UKCJnbFN0ZW5jaWxGdW5jIiwg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIGZ1bmMgPSAlcywgR0xpbnQgcmVmID0gJWQsIEdMdWludCBt
YXNrID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlN0ZW5jaWxGdW5jdGlvbiwgZnVuYyksIHJlZiwgbWFzayk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTNET0VTKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVT
dGVuY2lsRnVuYyhjb250ZXh0LCBmdW5jLCByZWYsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdl
dFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CisgICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4SW1hZ2UzRE9FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsRnVuYywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGZ1bmMsIHJlZiwgbWFzayk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFRleFBhcmFtZXRlcklpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZCitTdGVuY2lsRnVuY1NlcGFyYXRlQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVm
LCBHTHVpbnQgbWFzaykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsVGV4UGFyYW1ldGVySWl2
IiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5h
bWUgPSAlcywgY29uc3QgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAi
IiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4
dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBF
VkVOVCgiZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gZmFjZSA9ICVzLCBHTGVudW0gZnVuYyA9ICVzLCBHTGludCByZWYgPSAlZCwgR0x1aW50
IG1hc2sgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6U3RlbmNpbEZhY2VEaXJlY3Rpb24sIGZhY2UpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsRnVuY3Rpb24sIGZ1bmMpLCByZWYsIG1hc2spOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXYoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoY29udGV4dCwg
ZmFjZSwgZnVuYywgcmVmLCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVySWl2KHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRl
KGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShUZXhQYXJhbWV0ZXJJaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxGdW5jU2VwYXJhdGUs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBT
dGVuY2lsTWFza0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWFzaykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgKLSAgICAgICAgImdsVGV4UGFyYW1ldGVySWl2T0VTIiwKLSAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3Qg
R0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFy
Z2V0KSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0
ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xTdGVuY2ls
TWFzayIsICJjb250ZXh0ID0gJWQsIEdMdWludCBtYXNrID0gJXUiLCBDSUQoY29udGV4dCksIG1h
c2spOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXZPRVMo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxNYXNrKGNvbnRleHQsIG1hc2spKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT50ZXhQYXJhbWV0ZXJJaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnN0ZW5jaWxNYXNrKG1hc2spOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4UGFyYW1ldGVySWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsTWFz
aywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1hc2spOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBUZXhQYXJhbWV0ZXJJdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxNYXNrU2VwYXJhdGVDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKAotICAgICAgICAiZ2xUZXhQYXJhbWV0ZXJJdWl2IiwKLSAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0x1
aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlUGFyYW1ldGVy
TmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsU3RlbmNpbE1h
c2tTZXBhcmF0ZSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMdWludCBtYXNr
ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlN0ZW5jaWxGYWNlRGlyZWN0aW9uLCBmYWNlKSwgbWFzayk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsTWFza1NlcGFyYXRlKGNvbnRleHQsIGZhY2UsIG1hc2sp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJJdWl2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVySXVpdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoU3RlbmNpbE1hc2tTZXBhcmF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIG1h
c2spOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJdWl2T0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMp
Cit2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxPcENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
Ci0gICAgICAgICJnbFRleFBhcmFtZXRlckl1aXZPRVMiLAotICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTHVpbnQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBw
bmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xTdGVuY2lsT3AiLCAiY29u
dGV4dCA9ICVkLCBHTGVudW0gZmFpbCA9ICVzLCBHTGVudW0gemZhaWwgPSAlcywgR0xlbnVtIHpw
YXNzID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlN0ZW5jaWxPcCwgZmFpbCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlN0ZW5jaWxPcCwgemZhaWwpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpTdGVuY2lsT3AsIHpwYXNzKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVTdGVuY2lsT3AoY29udGV4dCwgZmFpbCwgemZhaWwsIHpwYXNzKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4UGFy
YW1ldGVySXVpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29u
dGV4dC0+c3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJJdWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVu
Y2lsT3AsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbE9wU2VwYXJhdGVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZmFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRwZmFpbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRwcGFzcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xUZXhQYXJhbWV0ZXJmIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLCBDSUQoY29u
dGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImds
U3RlbmNpbE9wU2VwYXJhdGUiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9
ICVzLCBHTGVudW0gc2ZhaWwgPSAlcywgR0xlbnVtIGRwZmFpbCA9ICVzLCBHTGVudW0gZHBwYXNz
ID0gJXMiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpTdGVuY2lsRmFjZURpcmVjdGlvbiwgZmFjZSksCisgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpTdGVuY2lsT3AsIHNmYWlsKSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlN0ZW5jaWxPcCwgZHBmYWlsKSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlN0ZW5jaWxPcCwgZHBwYXNzKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVRleFBhcmFtZXRlcmYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0p
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
U3RlbmNpbE9wU2VwYXJhdGUoY29udGV4dCwgZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNzKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dGV4UGFyYW1ldGVyZih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5zdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBzZmFpbCwgZHBmYWlsLCBkcHBhc3Mp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVyZiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShTdGVuY2lsT3BTZXBhcmF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2Us
IHNmYWlsLCBkcGZhaWwsIGRwcGFzcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRl
eFBhcmFtZXRlcmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1z
KQorR0xib29sZWFuIEdMX0FQSUVOVFJZIFRlc3RGZW5jZU5WQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBmZW5jZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhQYXJhbWV0ZXJmdiIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5h
bWUgPSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gIgotICAgICAgICAgICIweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bXMpOworICAgIEVWRU5UKCJnbFRlc3RGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZl
bmNlID0gJXUiLCBDSUQoY29udGV4dCksIGZlbmNlKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2KGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBGZW5jZU5WSUQgZmVu
Y2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5W
SUQ+KGZlbmNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VGVzdEZlbmNlTlYoY29udGV4dCwgZmVuY2VQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJmdih0YXJn
ZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250
ZXh0LT50ZXN0RmVuY2VOVihmZW5jZVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShUZXhQYXJhbWV0ZXJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VGVzdEZlbmNl
TlYsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKFRlc3RG
ZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVlKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VGVzdEZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKICAgICB9
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFt
ZXRlcmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkg
VGV4QnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZlcikKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xUZXhQYXJhbWV0ZXJpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVkIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0
YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlUGFy
YW1ldGVyTmFtZSwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsVGV4QnVmZmVyIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCA9ICVzLCBHTHVpbnQgYnVmZmVyID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRl
cm5hbGZvcm1hdCksIGJ1ZmZlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRl
eFBhcmFtZXRlcmkoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleEJ1ZmZlcih0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCBidWZmZXJQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVGV4UGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhCdWZmZXIsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBidWZmZXJQYWNrZWQpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAordm9pZCBHTF9BUElFTlRSWSBUZXhCdWZmZXJSYW5nZUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbFRleFBhcmFtZXRlcml2IiwKLSAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3Qg
R0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFy
Z2V0KSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0
ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xUZXhCdWZm
ZXJSYW5nZSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgR0x1aW50IGJ1ZmZlciA9ICV1LCAiCisgICAgICAg
ICAgIkdMaW50cHRyIG9mZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVsbHUiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVU
YXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Oklu
dGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIGJ1ZmZlciwKKyAgICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oc2l6ZSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJh
bWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleEJ1ZmZlclJhbmdlKGNv
bnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXpl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dGV4UGFyYW1ldGVyaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnRleEJ1ZmZlclJhbmdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1
ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFRleFBhcmFtZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhCdWZmZXJSYW5nZSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIHNpemUpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJ4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBwYXJh
bSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQb2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4UGFyYW1ldGVy
eCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLCBDSUQoY29udGV4dCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIs
IHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbFRleENvb3JkUG9pbnRlciIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNp
emVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKnBvaW50ZXIgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzaXplLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4Q29vcmRQb2ludGVyVHlwZSwgdHlwZSksIHN0cmlkZSwKKyAg
ICAgICAgICAodWludHB0cl90KXBvaW50ZXIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVUZXhQYXJhbWV0ZXJ4KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7
CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhDb29yZFBvaW50ZXIoY29u
dGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVy
eCh0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhD
b29yZFBvaW50ZXIoc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcngsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VGV4Q29vcmRQb2ludGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwg
c3RyaWRlLCBwb2ludGVyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1l
dGVyeHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCit2b2lk
IEdMX0FQSUVOVFJZIFRleEVudmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRl
eFBhcmFtZXRlcnh2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbXMgPSAiCi0gICAgICAg
ICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1
aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xUZXhFbnZmIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVm
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlRW52VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyeHYoY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdl
dCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4RW52Zihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcnh2
KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhF
bnZmKHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZm
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0p
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMURFWFRDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgpCit2b2lkIEdMX0FQ
SUVOVFJZIFRleEVudmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFRleFN0b3JhZ2UxREVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAl
cywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCks
IGxldmVscywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxG
b3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgpOworICAgIEVWRU5UKCJnbFRleEVudmZ2IiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFt
ZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpUZXh0dXJlRW52VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpUZXh0dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFy
YW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTFERVhUKGNvbnRl
eHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpKTsKKyAgICAgICAgVGV4
dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRl
ciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBh
cmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVUZXhFbnZmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2Vk
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMUQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhFbnZmdih0YXJnZXRQYWNrZWQsIHBu
YW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4
U3RvcmFnZTFERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4RW52ZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMkRDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4RW52aUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UyRCIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFs
Zm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CisgICAgRVZFTlQoImdsVGV4RW52aSIsICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHBhcmFt
ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0
b3JhZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsK
KyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZpKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdl
dFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAg
ICAgICBjb250ZXh0LT50ZXhFbnZpKHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UyRCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShU
ZXhFbnZpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwg
cGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMkRFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkK
K3ZvaWQgR0xfQVBJRU5UUlkgVGV4RW52aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UyREVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVp
Z2h0ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lk
dGgsIGhlaWdodCk7CisgICAgRVZFTlQoCisgICAgICAgICJnbFRleEVudml2IiwKKyAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdl
dCwgdGFyZ2V0KSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVF
bnZQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyREVY
VChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAg
ICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZpdihjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0UGFj
a2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnRleEVudml2KHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlMkRFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VGV4RW52aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2Vk
LCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMkRNdWx0
aXNhbXBsZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biBmaXhlZHNhbXBsZWxvY2F0aW9ucykKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4RW52eENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZml4
ZWQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVz
ID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkg
d2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9j
YXRpb25zID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCks
IHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZml4ZWRzYW1wbGVs
b2NhdGlvbnMpKTsKKyAgICBFVkVOVCgiZ2xUZXhFbnZ4IiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVFbnZUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11
bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVp
Z2h0LCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpOworICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFy
Z2V0Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRl
eEVudngoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhT
dG9yYWdlMkRNdWx0aXNhbXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4RW52
eCh0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFRleEVudngsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN0
b3JhZ2UzRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCkKK3Zv
aWQgR0xfQVBJRU5UUlkgVGV4RW52eHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsVGV4U3RvcmFnZTNEIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQg
PSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRl
cm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICBFVkVOVCgiZ2xUZXhFbnZ4
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFyYW1zID0gIgorICAgICAgICAgICIweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90
KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UzRChj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgpKTsKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAg
VGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZ4dihjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0UGFja2Vk
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgICAg
ICAgICBjb250ZXh0LT50ZXhFbnZ4dih0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTNELCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShUZXhFbnZ4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN0b3Jh
Z2UzREVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBkZXB0aCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4R2VuZk9FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RFWFQiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNp
emVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCks
IGxldmVscywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxG
b3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgIEVWRU5U
KCJnbFRleEdlbmZPRVMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVt
IHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVy
LCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5
cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3Rv
cmFnZTNERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuZk9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBh
cmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOworICAgICAgICAgICAgY29udGV4dC0+dGV4R2VuZihj
b29yZCwgcG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRl
eFN0b3JhZ2UzREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4R2VuZk9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykKK3Zv
aWQgR0xfQVBJRU5UUlkgVGV4R2VuZnZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAl
ZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0
aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMYm9vbGVh
biAiCi0gICAgICAgICAgImZpeGVkc2FtcGxlbG9jYXRpb25zID0gJXMiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRh
cmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Oklu
dGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAotICAg
ICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkc2FtcGxlbG9jYXRpb25zKSk7CisgICAgRVZF
TlQoCisgICAgICAgICJnbFRleEdlbmZ2T0VTIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xl
bnVtIGNvb3JkID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMg
PSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKKyAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpKTsKKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuZnZP
RVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0RNdWx0aXNh
bXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZp
eGVkc2FtcGxlbG9jYXRpb25zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleEdlbmZ2KGNvb3Jk
LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0
b3JhZ2UzRE11bHRpc2FtcGxlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBz
YW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFRleEdlbmZ2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9F
U0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykKK3ZvaWQg
R0xfQVBJRU5UUlkgVGV4R2VuaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4
U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQg
PSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTGJvb2xlYW4gIgotICAgICAgICAgICJmaXhlZHNh
bXBsZWxvY2F0aW9ucyA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAotICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxm
b3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKLSAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmlu
ZyhmaXhlZHNhbXBsZWxvY2F0aW9ucykpOworICAgIEVWRU5UKCJnbFRleEdlbmlPRVMiLCAiY29u
dGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHBh
cmFtID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVP
RVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5pT0VTKGNvbnRleHQsIGNvb3JkLCBwbmFt
ZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnRleEdlbmkoY29vcmQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9FUywgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywKLSAgICAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZpeGVkc2FtcGxl
bG9jYXRpb25zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhHZW5pT0VTLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIFRleFN0b3JhZ2VNZW0yREVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IG9mZnNl
dCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4R2VuaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZU1lbTJERVhUIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQs
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGgg
PSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBv
ZmZzZXQgPSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3
aWR0aCwgaGVpZ2h0LCBtZW1vcnksCi0gICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihvZmZzZXQpKTsKKyAgICBFVkVOVCgiZ2xUZXhHZW5pdk9FUyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25z
dCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNvb3Jk
TmFtZSwgY29vcmQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0
dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIE1lbW9yeU9i
amVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmpl
Y3RJRD4obWVtb3J5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZVRleFN0b3JhZ2VNZW0yREVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJu
YWxGb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuaXZPRVMoY29udGV4dCwgY29vcmQsIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGlu
dGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRl
eEdlbml2KGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFRleFN0b3JhZ2VNZW0yREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VGV4R2VuaXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxl
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCit2b2lkIEdMX0FQSUVOVFJZIFRl
eEdlbnhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZU1lbTJE
TXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9ICVzLCAi
Ci0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xi
b29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zID0gJXMsIEdMdWludCAiCi0gICAgICAgICAgIm1l
bW9yeSA9ICV1LCBHTHVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBz
YW1wbGVzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIGludGVybmFsRm9ybWF0KSwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICBHTGJvb2xlYW5U
b1N0cmluZyhmaXhlZFNhbXBsZUxvY2F0aW9ucyksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihvZmZzZXQpKTsKKyAgICBFVkVOVCgiZ2xUZXhHZW54T0VTIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMs
IEdMZml4ZWQgcGFyYW0gPSAweCVYIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1lKSwg
cGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxl
cywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlaWdodCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBhY2tl
ZCwgb2Zmc2V0KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVRleEdlbnhPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0
b3JhZ2VNZW0yRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxGb3Jt
YXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGVpZ2h0LCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQpOwor
ICAgICAgICAgICAgY29udGV4dC0+dGV4R2VueChjb29yZCwgcG5hbWUsIHBhcmFtKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLAotICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmaXhlZFNhbXBsZUxv
Y2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRl
eEdlbnhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTNERVhUQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludDY0IG9mZnNldCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4R2VueHZP
RVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xU
ZXhTdG9yYWdlTWVtM0RFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMs
ICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBH
THNpemVpIGRlcHRoID0gJWQsIEdMdWludCBtZW1vcnkgPSAldSwgIgotICAgICAgICAgICJHTHVp
bnQ2NCBvZmZzZXQgPSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3Jt
YXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5LAotICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSk7CisgICAgRVZFTlQoCisgICAgICAgICJnbFRl
eEdlbnh2T0VTIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0gJXMsIEdM
ZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIK
KyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
LSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsK
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2Vu
eHZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtM0Qo
dGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlQYWNrZWQsIG9m
ZnNldCk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhHZW54dihjb29yZCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtM0RFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywKLSAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIG1lbW9yeVBh
Y2tlZCwgb2Zmc2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhHZW54dk9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtZW1vcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludDY0IG9mZnNldCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4
SW1hZ2UyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4
U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTGJvb2xlYW4gIgotICAgICAgICAgICJmaXhl
ZFNhbXBsZUxvY2F0aW9ucyA9ICVzLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IG9mZnNl
dCA9ICVsbHUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwKLSAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhmaXhlZFNhbXBs
ZUxvY2F0aW9ucyksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZz
ZXQpKTsKKyAgICBFVkVOVCgiZ2xUZXhJbWFnZTJEIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVybmFsZm9y
bWF0ID0gJWQsIEdMc2l6ZWkgIgorICAgICAgICAgICJ3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdo
dCA9ICVkLCBHTGludCBib3JkZXIgPSAlZCwgR0xlbnVtIGZvcm1hdCA9ICVzLCBHTGVudW0gdHlw
ZSA9ICIKKyAgICAgICAgICAiJXMsIGNvbnN0IHZvaWQgKnBpeGVscyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCisgICAgICAg
ICAgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4
ZWxGb3JtYXQsIGZvcm1hdCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlBpeGVsVHlwZSwgdHlwZSksICh1aW50cHRyX3QpcGl4ZWxzKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElE
IG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4o
bWVtb3J5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdl
TWVtM0RNdWx0aXNhbXBsZUVYVCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZpeGVkU2FtcGxlTG9j
YXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhJbWFnZTJEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3Rv
cmFnZU1lbTNETXVsdGlzYW1wbGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1h
dCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlLCBwaXhlbHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJu
YWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVt
b3J5UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4SW1hZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBUZXhTdWJJbWFnZTJEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscykKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdWJJbWFnZTJEIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdM
aW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICIKLSAgICAgICAgICAiJWQsIEdMc2l6
ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xlbnVtIGZvcm1hdCA9ICVzLCBH
TGVudW0gdHlwZSA9ICVzLCAiCi0gICAgICAgICAgImNvbnN0IHZvaWQgKnBpeGVscyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwKLSAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
UGl4ZWxGb3JtYXQsIGZvcm1hdCksCisgICAgRVZFTlQoImdsVGV4SW1hZ2UzRCIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBH
TGludCBpbnRlcm5hbGZvcm1hdCA9ICVkLCBHTHNpemVpICIKKyAgICAgICAgICAid2lkdGggPSAl
ZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTGludCBib3JkZXIg
PSAlZCwgR0xlbnVtIGZvcm1hdCA9ICIKKyAgICAgICAgICAiJXMsIEdMZW51bSB0eXBlID0gJXMs
IGNvbnN0IHZvaWQgKnBpeGVscyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJn
ZXQpLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsRm9ybWF0LCBmb3Jt
YXQpLAogICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFR5cGUsIHR5
cGUpLCAodWludHB0cl90KXBpeGVscyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
VGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOworICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBp
eGVscykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlLCBwaXhlbHMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4SW1hZ2UzRCh0
YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3ViSW1hZ2UyRCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEltYWdlM0QsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlM0RDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRE9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3ViSW1hZ2UzRCIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zm
c2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCi0gICAgICAgICAgIiVkLCBHTGludCB6b2Zmc2V0
ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBk
ZXB0aCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAlcywgR0xlbnVtIHR5cGUg
PSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICAgIHpvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3Jt
YXQsIGZvcm1hdCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVs
VHlwZSwgdHlwZSksICh1aW50cHRyX3QpcGl4ZWxzKTsKLQotICAgIGlmIChjb250ZXh0KQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlM0QoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3ViSW1hZ2UzRCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRE9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhl
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleFN1YkltYWdl
M0RPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xp
bnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gIgotICAg
ICAgICAgICIlZCwgR0xpbnQgem9mZnNldCA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6
ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgIgotICAgICAgICAgICJHTGVudW0g
Zm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgKnBpeGVscyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwKLSAgICAgICAgICB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlBpeGVsRm9ybWF0LCBmb3JtYXQpLAorICAgIEVWRU5UKCJnbFRleElt
YWdlM0RPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdMc2l6ZWkgIgor
ICAgICAgICAgICJ3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRo
ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0gIgorICAgICAgICAgICIl
cywgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKICAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClwaXhlbHMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
IFZhbGlkYXRlVGV4U3ViSW1hZ2UzRE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKKyAg
ICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlM0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dGV4U3ViSW1hZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4SW1h
Z2UzRCh0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0
eXBlLCBwaXhlbHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3ViSW1h
Z2UzRE9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShU
ZXhJbWFnZTNET0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICp2
YXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYnVmZmVyTW9kZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVy
SWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdM
Y2hhciAqY29uc3QqdmFyeWluZ3MgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiLCBH
TGVudW0gYnVmZmVyTW9kZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IGNvdW50LCAodWludHB0cl90KXZhcnlpbmdzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGJ1ZmZlck1vZGUpKTsKKyAgICBFVkVOVCgKKyAgICAg
ICAgImdsVGV4UGFyYW1ldGVySWl2IiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50
cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvdW50LCB2
YXJ5aW5ncywgYnVmZmVyTW9kZSkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VGV4UGFyYW1ldGVySWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbVBhY2tlZCwgY291bnQsIHZhcnlpbmdz
LCBidWZmZXJNb2RlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcklpdih0YXJn
ZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmdzLCBidWZmZXJN
b2RlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJJaXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBUcmFuc2xhdGVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCit2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFt
ZXRlcklpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVHJhbnNsYXRlZiIsICJjb250ZXh0ID0gJWQsIEdM
ZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgeCwgeSwgeik7CisgICAgRVZFTlQoCisgICAgICAgICJnbFRleFBhcmFt
ZXRlcklpdk9FUyIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIK
KyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFt
cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVRyYW5zbGF0ZWYoY29udGV4dCwgeCwgeSwgeikpOworICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVySWl2T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZWYoeCwgeSwgeik7CisgICAgICAgICAgICBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJJaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRyYW5zbGF0ZWYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB4LCB5LCB6KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJJaXZPRVMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUcmFuc2xhdGV4Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZml4ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopCit2b2lkIEdMX0FQSUVO
VFJZIFRleFBhcmFtZXRlckl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUcmFuc2xhdGV4IiwgImNvbnRleHQgPSAl
ZCwgR0xmaXhlZCB4ID0gMHglWCwgR0xmaXhlZCB5ID0gMHglWCwgR0xmaXhlZCB6ID0gMHglWCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6KTsKKyAgICBFVkVOVCgKKyAgICAgICAg
ImdsVGV4UGFyYW1ldGVySXVpdiIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMdWludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRw
dHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVUcmFuc2xhdGV4KGNvbnRleHQsIHgsIHksIHopKTsKKyAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXYoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRleCh4LCB5LCB6KTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnRleFBhcmFtZXRlckl1aXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRyYW5zbGF0ZXgsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB4LCB5LCB6KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0
ZXJJdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFmQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQordm9pZCBHTF9BUElF
TlRSWSBUZXhQYXJhbWV0ZXJJdWl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTFmIiwg
ImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmIiwgQ0lE
KGNvbnRleHQpLAotICAgICAgICAgIGxvY2F0aW9uLCB2MCk7CisgICAgRVZFTlQoCisgICAgICAg
ICJnbFRleFBhcmFtZXRlckl1aXZPRVMiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTHVpbnQgKnBhcmFtcyA9IDB4
JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1
aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFmKGNvbnRleHQsIGxvY2F0aW9uLCB2MCkpOwor
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdk9FUyhjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24s
IHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlckl1aXYodGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm0xZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4UGFyYW1ldGVySXVpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVu
aWZvcm0xZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElF
TlRSWSBUZXhQYXJhbWV0ZXJmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJhbSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xVbmlmb3JtMWZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQgKnZhbHVl
ID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRl
eFBhcmFtZXRlcmYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAlZiIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFy
Z2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFt
ZXRlck5hbWUsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFmdihjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJmKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnRleFBhcmFtZXRlcmYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBh
cmFtZXRlcmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJh
bSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xaUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApCit2b2lkIEdMX0FQSUVO
VFJZIFRleFBhcmFtZXRlcmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm0xaSIsICJjb250ZXh0ID0gJWQsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMaW50IHYwID0gJWQiLCBDSUQoY29udGV4dCksIGxvY2F0aW9uLAot
ICAgICAgICAgIHYwKTsKKyAgICBFVkVOVCgiZ2xUZXhQYXJhbWV0ZXJmdiIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xmbG9hdCAqcGFyYW1zID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVy
ZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlm
b3JtMWkoY29udGV4dCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmZ2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcmZ2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZh
bHVlKQordm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbFVuaWZvcm0xaXYiLAotICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIGNvbnN0IEdMaW50ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAg
ICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwor
ICAgIEVWRU5UKCJnbFRleFBhcmFtZXRlcmkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50IHBhcmFtID0gJWQiLCBD
SUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm0xaXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyaShjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKHRhcmdldFBhY2tlZCwgcG5hbWUsIHBh
cmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xaXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShUZXhQYXJhbWV0ZXJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMXVp
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAp
Cit2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtMXVpIiwgImNvbnRl
eHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYwID0gJXUiLCBDSUQoY29udGV4
dCksCi0gICAgICAgICAgbG9jYXRpb24sIHYwKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVGV4
UGFyYW1ldGVyaXYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
CisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtMXVpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCkpOworICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvbiwgdjApOworICAgICAgICAg
ICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWksIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFt
ZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTF1aXZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcnhD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZv
cm0xdWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMdWludCAqdmFsdWUgPSAiCi0gICAgICAgICAgIjB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3Vu
dCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVGV4UGFyYW1ldGVyeCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAl
cywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwg
cGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTF1aXYoY29udGV4dCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1l
dGVyeChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWl2
KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1l
dGVyeCh0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcngsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSkKK3ZvaWQgR0xfQVBJRU5U
UlkgVGV4UGFyYW1ldGVyeHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpw
YXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTJmIiwgImNvbnRleHQgPSAlZCwgR0xpbnQg
bG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmLCBHTGZsb2F0IHYxID0gJWYiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgRVZFTlQoImdsVGV4UGFy
YW1ldGVyeHYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyA9ICIKKyAgICAgICAgICAi
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRw
dHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJmKGNvbnRleHQsIGxvY2F0aW9u
LCB2MCwgdjEpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRl
cnh2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yZihs
b2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcnh2KHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShVbmlmb3JtMmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJ4diwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIFVuaWZvcm0yZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9p
ZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMURFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTJmdiIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBj
b3VudCA9ICVkLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWlu
dHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlMURFWFQiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwg
R0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9
ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm0yZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3Jh
Z2UxREVYVChjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnRleFN0b3JhZ2UxRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShUZXhTdG9yYWdlMURFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGxldmVscywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGlu
dCB2MCwgR0xpbnQgdjEpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZv
cm0yaSIsICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMaW50IHYwID0gJWQs
IEdMaW50IHYxID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2
MSk7CisgICAgRVZFTlQoImdsVGV4U3RvcmFnZTJEIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBo
ZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3
aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMmko
Y29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyRChjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhT
dG9yYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yaSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFRleFN0b3JhZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsK
ICAgICB9CiB9Ci0KLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnZhbHVlKQorCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyREVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKAotICAgICAgICAiZ2xVbmlmb3JtMml2IiwKLSAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGlu
dCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250
ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xU
ZXhTdG9yYWdlMkRFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIK
KyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
VGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yaXYoY29udGV4dCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyREVYVChjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtMml2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dGV4
U3RvcmFnZTJEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMml2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4U3RvcmFnZTJERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMnVpQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWlu
dCB2MSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTJETXVsdGlzYW1wbGVDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2Nh
dGlvbnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTJ1aSIsICJjb250ZXh0ID0gJWQsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9y
YWdlMkRNdWx0aXNhbXBsZSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdl
dCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMs
ICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBH
TGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwg
c2FtcGxlcywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxG
b3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICBHTGJvb2xl
YW5Ub1N0cmluZyhmaXhlZHNhbXBsZWxvY2F0aW9ucykpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4o
dGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVVuaWZvcm0ydWkoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0
ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVpZ2h0LCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWko
bG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMkRNdWx0
aXNhbXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRz
YW1wbGVsb2NhdGlvbnMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTJ1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0ydWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlM0RDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTJ1
aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50ICp2YWx1ZSA9ICIKLSAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAo
dWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0QiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwg
R0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9
ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTJ1aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNEKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29u
dGV4dC0+dGV4U3RvcmFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlM0QsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWQotVW5pZm9ybTNmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0
aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKQordm9pZCBHTF9BUElFTlRS
WSBUZXhTdG9yYWdlM0RFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTNmIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0g
JWYsIEdMZmxvYXQgdjEgPSAlZiwgR0xmbG9hdCB2MiA9ICVmIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RF
WFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXpl
aSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAi
R0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0g
JWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhl
aWdodCwgZGVwdGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNmKGNvbnRleHQsIGxvY2F0aW9u
LCB2MCwgdjEsIHYyKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9y
YWdlM0RFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQsIGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVscywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm0zZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlM0RFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4
ZWRzYW1wbGVsb2NhdGlvbnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTNmdiIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVk
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZh
bHVlKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwg
R0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9
ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMYm9vbGVhbiAi
CisgICAgICAgICAgImZpeGVkc2FtcGxlbG9jYXRpb25zID0gJXMiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksIHNhbXBsZXMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVy
bmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAorICAgICAg
ICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkc2FtcGxlbG9jYXRpb25zKSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoLCBmaXhlZHNhbXBsZWxv
Y2F0aW9ucykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAg
ICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShU
ZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkKLVVuaWZvcm0zaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MikKK3ZvaWQgR0xfQVBJRU5U
UlkgVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
Zml4ZWRzYW1wbGVsb2NhdGlvbnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTNpIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBH
TGludCB2MSA9ICVkLCBHTGludCB2MiA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxv
Y2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBs
ZU9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNp
emVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAgICAg
ICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRo
ID0gJWQsIEdMYm9vbGVhbiAiCisgICAgICAgICAgImZpeGVkc2FtcGxlbG9jYXRpb25zID0gJXMi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWln
aHQsIGRlcHRoLAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkc2FtcGxlbG9jYXRp
b25zKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNpKGNvbnRleHQs
IGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVP
RVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaShsb2NhdGlvbiwgdjAs
IHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0RNdWx0aXNhbXBsZSh0
YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZpeGVkc2Ft
cGxlbG9jYXRpb25zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0z
aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlTWVtMkRFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJn
bFVuaWZvcm0zaXYiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBU
UgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1
aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0yREVYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9
ICVkLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMdWludCBtZW1vcnkgPSAldSwgR0x1aW50
NjQgb2Zmc2V0ID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAorICAgICAgICAg
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGludGVybmFsRm9ybWF0
KSwgd2lkdGgsIGhlaWdodCwgbWVtb3J5LAorICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmcgbG9uZz4ob2Zmc2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAg
ICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zaXYoY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yREVYVChjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgbWVtb3J5UGFja2VkLCBv
ZmZzZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+dGV4U3RvcmFnZU1lbTJEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShVbmlmb3JtM2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZU1lbTJERVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAg
ICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkKLVVuaWZvcm0zdWlDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVp
bnQgdjIpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTN1
aSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50
IHYwID0gJXUsIEdMdWludCB2MSA9ICV1LCBHTHVpbnQgdjIgPSAldSIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgRVZFTlQoImdsVGV4U3RvcmFn
ZU1lbTJETXVsdGlzYW1wbGVFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9
ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAl
ZCwgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zID0gJXMsIEdMdWludCAiCisgICAgICAg
ICAgIm1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJn
ZXQpLCBzYW1wbGVzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIGludGVybmFsRm9ybWF0KSwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICBHTGJv
b2xlYW5Ub1N0cmluZyhmaXhlZFNhbXBsZUxvY2F0aW9ucyksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTN1aShj
b250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVCgK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGZpeGVkU2FtcGxlTG9j
YXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRpb24sIHYw
LCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZU1lbTJETXVsdGlzYW1w
bGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGZpeGVkU2Ft
cGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShVbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VNZW0yRE11bHRp
c2FtcGxlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLAor
ICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmaXhl
ZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtM3VpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2
YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTNERVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludDY0IG9mZnNldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtM3VpdiIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBj
b3VudCA9ICVkLCBjb25zdCBHTHVpbnQgKnZhbHVlID0gIgotICAgICAgICAgICIweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50
cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0zREVYVCIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVk
LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRo
ID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0x1aW50IG1l
bW9yeSA9ICV1LCAiCisgICAgICAgICAgIkdMdWludDY0IG9mZnNldCA9ICVsbHUiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBt
ZW1vcnksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQp
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElE
IG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9i
amVjdElEPihtZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTN1aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zREVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTN1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT50ZXhTdG9yYWdlTWVtM0QodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtM3VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VNZW0zREVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
IGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5UGFja2VkLCBvZmZz
ZXQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNGZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MykKK3Zv
aWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IG9mZnNldCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xV
bmlmb3JtNGYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMZmxvYXQgdjAgPSAlZiwgR0xmbG9hdCB2MSA9ICVmLCBHTGZsb2F0IHYyID0gJWYsICIKLSAg
ICAgICAgICAiR0xmbG9hdCB2MyA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgRVZFTlQoImdsVGV4U3RvcmFnZU1lbTNETXVsdGlz
YW1wbGVFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9ICVzLCAiCisgICAg
ICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBk
ZXB0aCA9ICVkLCBHTGJvb2xlYW4gIgorICAgICAgICAgICJmaXhlZFNhbXBsZUxvY2F0aW9ucyA9
ICVzLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IG9mZnNldCA9ICVsbHUiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksIHNhbXBsZXMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwK
KyAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhmaXhlZFNhbXBsZUxvY2F0aW9ucyksIG1lbW9y
eSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm00Zihjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1l
bW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVj
dElEPihtZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVwdGgsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+
dGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5h
bEZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00ZiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5
UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFVuaWZvcm00ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQordm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTJEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtNGZ2IiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNv
dW50ID0gJWQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gIgotICAgICAgICAgICIweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50
cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRleFN1YkltYWdlMkQiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQg
eG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gIgorICAgICAgICAgICIlZCwgR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51
bSB0eXBlID0gJXMsICIKKyAgICAgICAgICAiY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAor
ICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhl
bEZvcm1hdCwgZm9ybWF0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
UGl4ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClwaXhlbHMpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5p
Zm9ybTRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFRleHR1
cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUsIHBpeGVscyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtNGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3ViSW1hZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWQotVW5pZm9ybTRpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2MykK
K3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm00aSIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAg
PSAlZCwgR0xpbnQgdjEgPSAlZCwgR0xpbnQgdjIgPSAlZCwgR0xpbnQgIgotICAgICAgICAgICJ2
MyA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2
Myk7CisgICAgRVZFTlQoImdsVGV4U3ViSW1hZ2UzRCIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0g
JWQsIEdMaW50IHlvZmZzZXQgPSAiCisgICAgICAgICAgIiVkLCBHTGludCB6b2Zmc2V0ID0gJWQs
IEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXplaSBkZXB0aCA9
ICVkLCAiCisgICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywg
Y29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZv
cm1hdCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwg
dHlwZSksICh1aW50cHRyX3QpcGl4ZWxzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm00aShjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRh
dGVUZXhTdWJJbWFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aShsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2Uz
RCh0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdWJJbWFnZTNELCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNGl2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlM0RPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsVW5p
Zm9ybTRpdiIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRw
dHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVGV4U3ViSW1hZ2UzRE9FUyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGlu
dCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCisgICAgICAgICAgIiVkLCBHTGludCB6
b2Zmc2V0ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xz
aXplaSBkZXB0aCA9ICVkLCAiCisgICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAlcywgR0xlbnVt
IHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVU
YXJnZXQsIHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4
ZWxGb3JtYXQsIGZvcm1hdCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlBpeGVsVHlwZSwgdHlwZSksICh1aW50cHRyX3QpcGl4ZWxzKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVRleFN1YkltYWdlM0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnRleFN1YkltYWdlM0QodGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdWJJbWFnZTNET0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotVW5pZm9y
bTR1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYzKQordm9pZCBHTF9BUElFTlRSWSBU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICp2YXJ5aW5ncywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYnVmZmVyTW9kZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtNHVpIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1
aW50IHYxID0gJXUsIEdMdWludCB2MiA9ICV1LCAiCi0gICAgICAgICAgIkdMdWludCB2MyA9ICV1
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgRVZFTlQoImdsVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBH
TGNoYXIgKmNvbnN0KnZhcnlpbmdzID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiwg
R0xlbnVtIGJ1ZmZlck1vZGUgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFt
LCBjb3VudCwgKHVpbnRwdHJfdCl2YXJ5aW5ncywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBidWZmZXJNb2RlKSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNHVpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2MykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvdW50LCB2YXJ5
aW5ncywgYnVmZmVyTW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3Jh
bVBhY2tlZCwgY291bnQsIHZhcnlpbmdzLCBidWZmZXJNb2RlKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICB2YXJ5aW5ncywgYnVmZmVyTW9kZSk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00dWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBUcmFuc2xhdGVmQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsVW5pZm9ybTR1aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50ICp2YWx1ZSA9ICIKLSAg
ICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9j
YXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xUcmFuc2xhdGVm
IiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0
IHogPSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6KTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm00dWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVHJhbnNsYXRlZihjb250ZXh0
LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAg
ICAgICAgICBjb250ZXh0LT50cmFuc2xhdGVmKHgsIHksIHopOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUcmFuc2xhdGVmLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgeCwgeSwgeik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm1CbG9ja0JpbmRpbmdDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCit2b2lkIEdMX0FQSUVO
VFJZIFRyYW5zbGF0ZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCB4LCBH
TGZpeGVkIHksIEdMZml4ZWQgeikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtQmxvY2tCaW5kaW5n
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXggPSAldSwgR0x1aW50ICIKLSAgICAgICAgICAidW5pZm9ybUJsb2Nr
QmluZGluZyA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIHVuaWZvcm1C
bG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICBFVkVOVCgiZ2xUcmFuc2xhdGV4
IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCB4ID0gMHglWCwgR0xmaXhlZCB5ID0gMHglWCwgR0xm
aXhlZCB6ID0gMHglWCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6KTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtQmxvY2tCaW5kaW5nKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja0luZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tCaW5kaW5n
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5zbGF0
ZXgoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbVBhY2tl
ZCwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgICAgICAgICAg
Y29udGV4dC0+dHJhbnNsYXRleCh4LCB5LCB6KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm1CbG9ja0JpbmRpbmcsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICB1bmlmb3Jt
QmxvY2tCaW5kaW5nKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUcmFuc2xhdGV4LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgeCwgeSwgeik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVu
aWZvcm1NYXRyaXgyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xZkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4MmZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bv
c2UgPSAlcywgY29uc3QgIgotICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29s
ZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImds
VW5pZm9ybTFmIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2
MCA9ICVmIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGxvY2F0aW9uLCB2MCk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtTWF0cml4MmZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xZihj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MWYobG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFVuaWZvcm1NYXRyaXgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xZiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyeDNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtMWZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4MngzZnYiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRy
YW5zcG9zZSA9ICVzLCBjb25zdCAiCi0gICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBH
TGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVO
VCgiZ2xVbmlmb3JtMWZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlv
biA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gIgorICAg
ICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2Nh
dGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4M2Z2KGNv
bnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTFmdihjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWZ2KGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
MWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyeDRmdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZv
cm1NYXRyaXgyeDRmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0
ICIKLSAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRy
YW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFVuaWZvcm0xaSIsICJj
b250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMaW50IHYwID0gJWQiLCBDSUQoY29u
dGV4dCksIGxvY2F0aW9uLAorICAgICAgICAgIHYwKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRmdihj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWkoY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb25Q
YWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRy
aXgyeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFpLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybU1hdHJpeDNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFpdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm1N
YXRyaXgzZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCi0g
ICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bv
c2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVW5pZm9ybTFp
diIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkg
Y291bnQgPSAlZCwgY29uc3QgR0xpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAg
ICIiLAorICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2
YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybU1hdHJpeDN4MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0xdWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCB2MCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4M3gyZnYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xi
b29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCi0gICAgICAgICAgIkdMZmxvYXQgKnZhbHVl
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24s
IGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsK
KyAgICBFVkVOVCgiZ2xVbmlmb3JtMXVpIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0x1aW50IHYwID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgbG9jYXRpb24s
IHYwKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVVbmlmb3JtMXVpKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1N
YXRyaXgzeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTF1aShsb2NhdGlvblBhY2tlZCwgdjApOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtMXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IHYwKTsKICAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4NGZ2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpCit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTF1aXZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybU1hdHJp
eDN4NGZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlcywgY29uc3QgIgotICAg
ICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJhbnNwb3Nl
KSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVW5pZm9ybTF1aXYiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAl
ZCwgY29uc3QgR0x1aW50ICp2YWx1ZSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZh
bHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVVuaWZvcm0xdWl2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4NGZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtTWF0cml4NGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
MmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
djAsIEdMZmxvYXQgdjEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybU1hdHJpeDRmdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIKLSAgICAgICAgICAiR0xmbG9h
dCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBs
b2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3Qp
dmFsdWUpOworICAgIEVWRU5UKCJnbFVuaWZvcm0yZiIsICJjb250ZXh0ID0gJWQsIEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZiwgR0xmbG9hdCB2MSA9ICVmIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRmdihj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMmYoY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlv
blBhY2tlZCwgdjAsIHYxKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm1NYXRyaXg0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yZiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtTWF0cml4NHgyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJ
RU5UUlkgVW5pZm9ybTJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsVW5pZm9ybU1hdHJpeDR4MmZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UgPSAlcywgY29uc3QgIgotICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xi
b29sZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQo
ImdsVW5pZm9ybTJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9ICIKKyAgICAg
ICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRp
b24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdihjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0yZnYoY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmdihsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm1NYXRyaXg0eDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4NHgzZnZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsVW5pZm9ybU1hdHJpeDR4M2Z2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAl
cywgY29uc3QgIgotICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9T
dHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVW5pZm9y
bTJpIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwg
R0xpbnQgdjEgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgdjAsIHYx
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDNmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVVbmlmb3JtMmkoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1N
YXRyaXg0eDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTJpKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4M2Z2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgdjAsIHYxKTsKICAgICB9CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBVbm1hcEJ1ZmZl
ckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KQordm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtMml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsVW5tYXBCdWZmZXIiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSk7CisgICAgRVZFTlQoCisgICAgICAgICJnbFVuaWZv
cm0yaXYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNp
emVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUgorICAg
ICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRy
X3QpdmFsdWUpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbm1hcEJ1ZmZlcihjb250ZXh0LCB0YXJnZXRQ
YWNrZWQpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0y
aXYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4
dC0+dW5tYXBCdWZmZXIodGFyZ2V0UGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OlVubWFwQnVmZmVyLCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5tYXBCdWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VW5t
YXBCdWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMml2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZ
IFVubWFwQnVmZmVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0ydWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFVubWFwQnVmZmVyT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzIiwg
Q0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIHRhcmdldCkpOworICAgIEVWRU5UKCJnbFVuaWZvcm0ydWkiLCAiY29udGV4dCA9
ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0gJXUi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSk7CiAKLSAgICBHTGJv
b2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbm1hcEJ1ZmZlck9FUyhjb250ZXh0LCB0YXJn
ZXRQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVW5pZm9ybTJ1aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBjb250ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXRQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6VW5tYXBCdWZmZXJPRVMsIEdMYm9vbGVhbj4oKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbm1hcEJ1ZmZlck9FUywgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpVbm1hcEJ1ZmZlck9FUywgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFVuaWZvcm0ydWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYx
KTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFVzZVByb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0p
Cit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0ydWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVzZVByb2dyYW0iLCAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwcm9ncmFtKTsKKyAgICBFVkVOVCgi
Z2xVbmlmb3JtMnVpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTHVpbnQgKnZhbHVlID0gIgorICAgICAg
ICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlv
biwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVzZVByb2dyYW0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCkp
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTJ1aXYoY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3Jh
bVBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVzZVBy
b2dyYW0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtMnVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVc2VQcm9n
cmFtU3RhZ2VzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBpcGVsaW5lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgc3RhZ2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtKQordm9pZCBHTF9BUElFTlRSWQorVW5pZm9ybTNmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYy
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFVzZVByb2dyYW1TdGFnZXMiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBwaXBlbGluZSA9ICV1LCBHTGJpdGZpZWxkIHN0YWdlcyA9ICVzLCBHTHVp
bnQgcHJvZ3JhbSA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBpcGVsaW5lLAotICAg
ICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6VXNlUHJvZ3JhbVN0YWdlTWFz
aywgc3RhZ2VzKS5jX3N0cigpLCBwcm9ncmFtKTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtM2YiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAg
PSAlZiwgR0xmbG9hdCB2MSA9ICVmLCBHTGZsb2F0IHYyID0gJWYiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZy
b21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVVc2VQcm9ncmFtU3RhZ2Vz
KGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBzdGFnZXMsIHByb2dyYW1QYWNrZWQpKTsKKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNmKGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dXNlUHJvZ3JhbVN0YWdlcyhw
aXBlbGluZVBhY2tlZCwgc3RhZ2VzLCBwcm9ncmFtUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0zZihsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVc2VQcm9ncmFtU3RhZ2VzLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcGlwZWxpbmVQYWNrZWQsIHN0YWdlcywKLSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFt
UGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2YsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFZhbGlkYXRlUHJvZ3JhbUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNmdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmFsaWRhdGVQcm9ncmFtIiwg
ImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJRChjb250ZXh0KSwgcHJvZ3Jh
bSk7CisgICAgRVZFTlQoImdsVW5pZm9ybTNmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybTNmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW1QYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTNmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFZhbGlkYXRlUHJvZ3JhbSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBpcGVsaW5lKQordm9pZCBHTF9BUElFTlRSWQorVW5p
Zm9ybTNpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGlu
dCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZhbGlkYXRlUHJvZ3Jh
bVBpcGVsaW5lIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHBpcGVsaW5lID0gJXUiLCBDSUQoY29u
dGV4dCksCi0gICAgICAgICAgcGlwZWxpbmUpOworICAgIEVWRU5UKCJnbFVuaWZvcm0zaSIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAl
ZCwgR0xpbnQgdjEgPSAlZCwgR0xpbnQgdjIgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
UHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFBy
b2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3Jh
bVBpcGVsaW5lKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zaShjb250ZXh0LCBsb2NhdGlv
blBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKHBpcGVsaW5l
UGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaShsb2NhdGlvblBhY2tlZCwg
djAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWYWxpZGF0ZVBy
b2dyYW1QaXBlbGluZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2ksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZl
cnRleEF0dHJpYjFmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwg
R0xmbG9hdCB4KQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2l2Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliMWYiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xmbG9hdCB4ID0gJWYiLCBDSUQoY29udGV4dCks
Ci0gICAgICAgICAgaW5kZXgsIHgpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xVbmlmb3JtM2l2
IiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBj
b3VudCA9ICVkLCBjb25zdCBHTGludCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAg
IiIsCisgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZh
bHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4QXR0cmliMWYoY29udGV4dCwgaW5kZXgsIHgpKTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0zaXYoY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB4KTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWIxZiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGluZGV4LCB4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
M2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjFmdkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpCit2b2lk
IEdMX0FQSUVOVFJZCitVbmlmb3JtM3VpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
aW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFZlcnRleEF0dHJpYjFmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IGluZGV4ID0gJXUsIGNvbnN0IEdMZmxvYXQgKnYgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChj
b250ZXh0KSwKLSAgICAgICAgICBpbmRleCwgKHVpbnRwdHJfdCl2KTsKKyAgICBFVkVOVCgiZ2xV
bmlmb3JtM3VpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0gJXUsIEdMdWludCB2MiA9ICV1IiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYoY29udGV4dCwgaW5kZXgsIHYp
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5p
Zm9ybTN1aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0
dHJpYjFmdihpbmRleCwgdik7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM3VpKGxvY2F0
aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFZlcnRleEF0dHJpYjFmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXhBdHRyaWIyZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5KQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM3VpdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRy
aWIyZiIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGZsb2F0IHggPSAlZiwg
R0xmbG9hdCB5ID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHgsIHkpOwor
ICAgIEVWRU5UKCJnbFVuaWZvcm0zdWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMdWludCAqdmFsdWUg
PSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWIyZihjb250ZXh0LCBpbmRleCwgeCwgeSkpOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTN1aXYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliMmYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBpbmRleCwgeCwgeSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTN1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVl
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMmZ2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKK3Zv
aWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4
QXR0cmliMmZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwg
Y29uc3QgR0xmbG9hdCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAg
ICAgICAgIGluZGV4LCAodWludHB0cl90KXYpOworICAgIEVWRU5UKCJnbFVuaWZvcm00ZiIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9
ICVmLCBHTGZsb2F0IHYxID0gJWYsIEdMZmxvYXQgdjIgPSAlZiwgIgorICAgICAgICAgICJHTGZs
b2F0IHYzID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmdihjb250ZXh0LCBpbmRleCwg
dikpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTRmKGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjJm
dihpbmRleCwgdik7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb25QYWNr
ZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZl
cnRleEF0dHJpYjJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShVbmlmb3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotVmVy
dGV4QXR0cmliM2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBH
TGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
NGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xW
ZXJ0ZXhBdHRyaWIzZiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0g
JXUsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHgsIHksIHopOworICAgIEVWRU5UKCJnbFVuaWZv
cm00ZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAiCisgICAgICAgICAgIjB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3Vu
dCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZihjb250
ZXh0LCBpbmRleCwgeCwgeSwgeikpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybTRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTRmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYjNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
aW5kZXgsIHgsIHksIHopOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00ZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliM2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKK3ZvaWQgR0xfQVBJRU5U
UlkKK1VuaWZvcm00aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlv
biwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsVmVydGV4QXR0cmliM2Z2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5k
ZXggPSAldSwgY29uc3QgR0xmbG9hdCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRl
eHQpLAotICAgICAgICAgIGluZGV4LCAodWludHB0cl90KXYpOworICAgIEVWRU5UKCJnbFVuaWZv
cm00aSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xp
bnQgdjAgPSAlZCwgR0xpbnQgdjEgPSAlZCwgR0xpbnQgdjIgPSAlZCwgR0xpbnQgIgorICAgICAg
ICAgICJ2MyA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZnYoY29udGV4dCwgaW5kZXgs
IHYpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00aShj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIHYpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShW
ZXJ0ZXhBdHRyaWIzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgdik7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4QXR0cmliNGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB6LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHcpCit2b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm00aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xWZXJ0ZXhBdHRyaWI0ZiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlu
ZGV4ID0gJXUsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYs
ICIKLSAgICAgICAgICAiR0xmbG9hdCB3ID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
aW5kZXgsIHgsIHksIHosIHcpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xVbmlmb3JtNGl2IiwK
KyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBjb25zdCBHTGludCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIs
CisgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVl
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6
LCB3KSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtNGl2
KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWI0
ZihpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGl2KGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVmVydGV4QXR0cmliNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgeCwgeSwg
eiwgdyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRpdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQordm9pZCBHTF9BUElFTlRSWQorVW5pZm9y
bTR1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYzKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZl
cnRleEF0dHJpYjRmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0g
JXUsIGNvbnN0IEdMZmxvYXQgKnYgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBpbmRleCwgKHVpbnRwdHJfdCl2KTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtNHVp
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQg
djAgPSAldSwgR0x1aW50IHYxID0gJXUsIEdMdWludCB2MiA9ICV1LCAiCisgICAgICAgICAgIkdM
dWludCB2MyA9ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZnYoY29udGV4dCwgaW5kZXgs
IHYpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00dWko
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmli
NGZ2KGluZGV4LCB2KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb25Q
YWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFZlcnRleEF0dHJpYjRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNHVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
VmVydGV4QXR0cmliQmluZGluZ0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJp
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYmluZGluZ2luZGV4KQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNHVpdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRy
aWJCaW5kaW5nIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgYXR0cmliaW5kZXgg
PSAldSwgR0x1aW50IGJpbmRpbmdpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAg
IGF0dHJpYmluZGV4LCBiaW5kaW5naW5kZXgpOworICAgIEVWRU5UKCJnbFVuaWZvcm00dWl2IiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNv
dW50ID0gJWQsIGNvbnN0IEdMdWludCAqdmFsdWUgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRw
dHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJCaW5kaW5nKGNvbnRleHQsIGF0dHJpYmluZGV4
LCBiaW5kaW5naW5kZXgpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVVuaWZvcm00dWl2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52
ZXJ0ZXhBdHRyaWJCaW5kaW5nKGF0dHJpYmluZGV4LCBiaW5kaW5naW5kZXgpOworICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJCaW5kaW5nLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliRGl2aXNvckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgs
IEdMdWludCBkaXZpc29yKQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtQmxvY2tCaW5kaW5nQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1
bmlmb3JtQmxvY2tCaW5kaW5nKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYkRpdmlzb3Ii
LCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0x1aW50IGRpdmlzb3IgPSAldSIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgZGl2aXNvcik7CisgICAgRVZFTlQoImds
VW5pZm9ybUJsb2NrQmluZGluZyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4ID0gJXUsIEdMdWludCAiCisgICAg
ICAgICAgInVuaWZvcm1CbG9ja0JpbmRpbmcgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbnRleHQsIGluZGV4LCBkaXZpc29yKSk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRp
bmcoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9j
a0JpbmRpbmcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbVBhY2tlZCwgdW5pZm9y
bUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVmVydGV4QXR0cmliRGl2aXNvciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlu
ZGV4LCBkaXZpc29yKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtQmxvY2tCaW5kaW5n
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUJsb2NrQmluZGluZyk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRpdmlzb3IpCit2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm1NYXRyaXgyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMdWludCBk
aXZpc29yID0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIGRpdmlzb3IpOwor
ICAgIEVWRU5UKCJnbFVuaWZvcm1NYXRyaXgyZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5z
cG9zZSA9ICVzLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJv
b2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRShjb250ZXh0LCBpbmRleCwgZGl2aXNvcikpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBkaXZpc29yKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFs
dWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJEaXZpc29yRVhU
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlz
b3IpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyeDNmdkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYkRpdmlzb3JFWFQiLCAiY29udGV4dCA9ICVkLCBH
THVpbnQgaW5kZXggPSAldSwgR0x1aW50IGRpdmlzb3IgPSAldSIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBpbmRleCwgZGl2aXNvcik7CisgICAgRVZFTlQoImdsVW5pZm9ybU1hdHJpeDJ4M2Z2
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlcywgY29uc3QgIgorICAgICAgICAg
ICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVp
bnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVy
dGV4QXR0cmliRGl2aXNvckVYVChjb250ZXh0LCBpbmRleCwgZGl2aXNvcikpOworICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgyeDNmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVy
dGV4QXR0cmliRGl2aXNvckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBkaXZpc29y
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MngzZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0
dHJpYkZvcm1hdENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIG5vcm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcmVsYXRpdmVvZmZzZXQpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm1NYXRyaXgyeDRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJp
YkZvcm1hdCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGF0dHJpYmluZGV4ID0g
JXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xib29sZWFuICIKLSAgICAg
ICAgICAibm9ybWFsaXplZCA9ICVzLCBHTHVpbnQgcmVsYXRpdmVvZmZzZXQgPSAldSIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBhdHRyaWJpbmRleCwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHlwZSksCi0gICAgICAgICAgR0xib29sZWFuVG9TdHJp
bmcobm9ybWFsaXplZCksIHJlbGF0aXZlb2Zmc2V0KTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0
cml4Mng0ZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCisg
ICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bv
c2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBW
ZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVmVydGV4QXR0cmliRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZnYoY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4
QXR0cmliRm9ybWF0KGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBub3JtYWxpemVkLCBy
ZWxhdGl2ZW9mZnNldCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYo
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkZvcm1hdCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtTWF0cml4Mng0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZCi1WZXJ0ZXhBdHRyaWJJNGlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3
KQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFZlcnRleEF0dHJpYkk0aSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlu
ZGV4ID0gJXUsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTGludCB6ID0gJWQsIEdMaW50
IHcgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSwgeiwgdyk7Cisg
ICAgRVZFTlQoImdsVW5pZm9ybU1hdHJpeDNmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNw
b3NlID0gJXMsIGNvbnN0ICIKKyAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9v
bGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aShjb250ZXh0LCBpbmRleCwg
eCwgeSwgeiwgdykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSTRpKGluZGV4
LCB4LCB5LCB6LCB3KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkk0aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlu
ZGV4LCB4LCB5LCB6LCB3KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M2Z2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWJJNGl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgz
eDJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYkk0aXYiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBjb25zdCBHTGludCAq
diA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIGluZGV4LCAo
dWludHB0cl90KXYpOworICAgIEVWRU5UKCJnbFVuaWZvcm1NYXRyaXgzeDJmdiIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVk
LCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIKKyAgICAgICAgICAiR0xmbG9hdCAq
dmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2Nh
dGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFs
dWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0
aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0
cmliSTRpdihpbmRleCwgdik7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3gy
ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkk0aXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBpbmRleCwgdik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWQotVmVydGV4QXR0cmliSTR1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVp
bnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHosIEdMdWludCB3KQordm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M3g0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xWZXJ0ZXhBdHRyaWJJNHVpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
aW5kZXggPSAldSwgR0x1aW50IHggPSAldSwgR0x1aW50IHkgPSAldSwgR0x1aW50IHogPSAldSwg
R0x1aW50IHcgIgotICAgICAgICAgICI9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGlu
ZGV4LCB4LCB5LCB6LCB3KTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4M3g0ZnYiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQg
PSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxv
YXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
bG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90
KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJNHVpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KSk7CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDN4NGZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpOworICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJJ
NHVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHgsIHksIHosIHcpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTR1aXZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYp
Cit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsVmVydGV4QXR0cmliSTR1aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBp
bmRleCA9ICV1LCBjb25zdCBHTHVpbnQgKnYgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250
ZXh0KSwKLSAgICAgICAgICBpbmRleCwgKHVpbnRwdHJfdCl2KTsKKyAgICBFVkVOVCgiZ2xVbmlm
b3JtTWF0cml4NGZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlcywgY29uc3Qg
IgorICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJh
bnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVV
bmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCB2KTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkk0
dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHYpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm1NYXRyaXg0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYklGb3JtYXRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVsYXRpdmVvZmZzZXQp
Cit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0eDJmdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYklGb3JtYXQiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBhdHRyaWJpbmRleCA9ICV1LCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBl
ID0gJXMsIEdMdWludCAiCi0gICAgICAgICAgInJlbGF0aXZlb2Zmc2V0ID0gJXUiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgYXR0cmliaW5kZXgsIHNpemUsIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHR5cGUpLAotICAgICAgICAgIHJlbGF0aXZlb2Zmc2V0KTsK
KyAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4NHgyZnYiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRy
YW5zcG9zZSA9ICVzLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBH
TGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliSUZvcm1hdChjb250ZXh0LCBhdHRyaWJpbmRl
eCwgc2l6ZSwgdHlwZVBhY2tlZCwgcmVsYXRpdmVvZmZzZXQpKTsKKyAgICAgICAgICAgICBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJRm9ybWF0KGF0dHJpYmluZGV4LCBzaXpl
LCB0eXBlUGFja2VkLCByZWxhdGl2ZW9mZnNldCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtTWF0cml4NHgyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYklGb3JtYXQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBhdHRyaWJpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICByZWxhdGl2ZW9mZnNldCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJUG9pbnRlckNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9p
bnRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDR4M2Z2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliSVBvaW50ZXIiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBl
ID0gJXMsIEdMc2l6ZWkgc3RyaWRlID0gIgotICAgICAgICAgICIlZCwgY29uc3Qgdm9pZCAqcG9p
bnRlciA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4
LCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4QXR0cmliUG9pbnRlclR5
cGUsIHR5cGUpLAotICAgICAgICAgIHN0cmlkZSwgKHVpbnRwdHJfdClwb2ludGVyKTsKKyAgICBF
VkVOVCgiZ2xVbmlmb3JtTWF0cml4NHgzZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9z
ZSA9ICVzLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xl
YW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgIFZhbGlkYXRlVmVydGV4QXR0cmliSVBvaW50ZXIoY29udGV4dCwgaW5kZXgsIHNpemUsIHR5
cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOworICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDR4M2Z2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBz
dHJpZGUsIHBvaW50ZXIpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJJUG9pbnRlciwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgcG9pbnRlcik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4M2Z2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWJQb2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKK0dM
Ym9vbGVhbiBHTF9BUElFTlRSWSBVbm1hcEJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gdGFyZ2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYlBvaW50ZXIi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGludCBzaXpl
ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMYm9vbGVhbiAiCi0gICAgICAgICAgIm5vcm1hbGl6
ZWQgPSAlcywgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3Qgdm9pZCAqcG9pbnRlciA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBzaXplLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4QXR0cmliUG9pbnRlclR5cGUsIHR5cGUpLAot
ICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKG5vcm1hbGl6ZWQpLCBzdHJpZGUsICh1aW50cHRy
X3QpcG9pbnRlcik7CisgICAgRVZFTlQoImdsVW5tYXBCdWZmZXIiLCAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSk7CiAKKyAgICBHTGJvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFZlcnRleEF0dHJp
YlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJU
eXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJQb2ludGVyKGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBlUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVk
LCBzdHJpZGUsIHBvaW50ZXIpKTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVubWFwQnVmZmVyKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYlBv
aW50ZXIoaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcG9pbnRl
cik7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPnVubWFwQnVmZmVyKHRhcmdl
dFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJQ
b2ludGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRS
ZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpVbm1hcEJ1ZmZlciwgR0xib29sZWFuPigpOworICAgICAg
ICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5tYXBCdWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
VW5tYXBCdWZmZXIsIEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEJpbmRpbmdEaXZpc29yQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBiaW5kaW5naW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkaXZpc29yKQorR0xib29sZWFuIEdM
X0FQSUVOVFJZIFVubWFwQnVmZmVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZW51bSB0YXJnZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QmluZGluZ0Rpdmlzb3IiLCAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgYmluZGluZ2luZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgYmluZGluZ2luZGV4LCBkaXZpc29yKTsKKyAgICBF
VkVOVCgiZ2xVbm1hcEJ1ZmZlck9FUyIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCB0YXJnZXQpKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVW
ZXJ0ZXhCaW5kaW5nRGl2aXNvcihjb250ZXh0LCBiaW5kaW5naW5kZXgsIGRpdmlzb3IpKTsKKyAg
ICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVubWFwQnVmZmVyT0VTKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEJpbmRpbmdEaXZpc29yKGJpbmRpbmdpbmRleCwg
ZGl2aXNvcik7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPnVubWFwQnVmZmVy
KHRhcmdldFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhC
aW5kaW5nRGl2aXNvciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJpbmRpbmdpbmRleCwgZGl2aXNv
cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBH
ZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VW5tYXBCdWZmZXJPRVMsIEdMYm9vbGVh
bj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKFVubWFwQnVmZmVyT0VTLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OlVubWFwQnVmZmVyT0VTLCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQb2ludGVy
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQordm9pZCBHTF9BUElFTlRS
WSBVc2VQcm9ncmFtQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFt
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFZlcnRleFBvaW50ZXIiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJpZGUgPSAl
ZCwgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIipwb2ludGVyID0gMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlZlcnRleFBvaW50ZXJUeXBlLCB0eXBlKSwgc3RyaWRlLAotICAgICAgICAgICh1aW50cHRy
X3QpcG9pbnRlcik7CisgICAgRVZFTlQoImdsVXNlUHJvZ3JhbSIsICJjb250ZXh0ID0gJWQsIEdM
dWludCBwcm9ncmFtID0gJXUiLCBDSUQoY29udGV4dCksIHByb2dyYW0pOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhQb2ludGVyKGNvbnRleHQsIHNpemUsIHR5cGVQ
YWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVXNlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4
UG9pbnRlcihzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICAgICAg
Y29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFZlcnRleFBvaW50ZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaXplLCB0
eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVzZVBy
b2dyYW0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkKLVZpZXdwb3J0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBH
TF9BUElFTlRSWSBVc2VQcm9ncmFtU3RhZ2VzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBp
cGVsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Yml0ZmllbGQgc3RhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZpZXdwb3J0IiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIEVWRU5UKCJnbFVzZVByb2dyYW1TdGFnZXMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwaXBlbGluZSA9ICV1LCBHTGJpdGZpZWxk
IHN0YWdlcyA9ICVzLCBHTHVpbnQgcHJvZ3JhbSA9ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIHBpcGVsaW5lLAorICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6
VXNlUHJvZ3JhbVN0YWdlTWFzaywgc3RhZ2VzKS5jX3N0cigpLCBwcm9ncmFtKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvZ3Jh
bVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZpZXdwb3J0KGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
VmFsaWRhdGVVc2VQcm9ncmFtU3RhZ2VzKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBzdGFnZXMs
IHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT52aWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVzZVByb2dyYW1TdGFnZXMocGlwZWxpbmVQYWNrZWQsIHN0YWdlcywg
cHJvZ3JhbVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWaWV3cG9y
dCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVzZVByb2dyYW1TdGFnZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwaXBl
bGluZVBhY2tlZCwgc3RhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1QYWNrZWQp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBXYWl0U2VtYXBob3JlRVhUQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpidWZmZXJz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBu
dW1UZXh0dXJlQmFycmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnNyY0xheW91dHMpCit2b2lkIEdM
X0FQSUVOVFJZIFZhbGlkYXRlUHJvZ3JhbUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xXYWl0U2VtYXBob3JlRVhUIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMdWludCBudW1CdWZm
ZXJCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQgIgotICAgICAgICAgICIqYnVmZmVycyA9IDB4
JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMgPSAl
dSwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIs
IGNvbnN0IEdMZW51bSAqc3JjTGF5b3V0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgbnVtQnVmZmVyQmFycmllcnMsICh1aW50cHRyX3Qp
YnVmZmVycywgbnVtVGV4dHVyZUJhcnJpZXJzLAotICAgICAgICAgICh1aW50cHRyX3QpdGV4dHVy
ZXMsICh1aW50cHRyX3Qpc3JjTGF5b3V0cyk7CisgICAgRVZFTlQoImdsVmFsaWRhdGVQcm9ncmFt
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJRChjb250ZXh0KSwgcHJv
Z3JhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBo
b3JlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhv
cmUpOwotICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIGNvbnN0IFRl
eHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBUZXh0
dXJlSUQgKj4odGV4dHVyZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlV2FpdFNlbWFw
aG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLCBidWZm
ZXJzUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UZXh0
dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBzcmNMYXlvdXRzKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbShjb250
ZXh0LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+d2FpdFNlbWFwaG9yZShzZW1hcGhvcmVQYWNrZWQsIG51
bUJ1ZmZlckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBzcmNMYXlvdXRz
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtUGFja2VkKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFdhaXRTZW1hcGhvcmVFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLAotICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG51bVRleHR1cmVCYXJyaWVycywgdGV4
dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZhbGlkYXRl
UHJvZ3JhbSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBXYWl0U3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHN5bmMgc3luYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBmbGFncywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgdGltZW91dCkKK3Zv
aWQgR0xfQVBJRU5UUlkgVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IHBpcGVsaW5lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFdhaXRTeW5jIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHN5bmMgc3luYyA9IDB4JTAxNiIgUFJJeFBUUgot
ICAgICAgICAgICIsIEdMYml0ZmllbGQgZmxhZ3MgPSAlcywgR0x1aW50NjQgdGltZW91dCA9ICVs
bHUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClzeW5jLAotICAgICAgICAg
IEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBmbGFncykuY19z
dHIoKSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHRpbWVvdXQp
KTsKKyAgICBFVkVOVCgiZ2xWYWxpZGF0ZVByb2dyYW1QaXBlbGluZSIsICJjb250ZXh0ID0gJWQs
IEdMdWludCBwaXBlbGluZSA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIHBpcGVsaW5l
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdhaXRTeW5jKGNvbnRl
eHQsIHN5bmMsIGZsYWdzLCB0aW1lb3V0KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnRleHQsIHBp
cGVsaW5lUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+d2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOworICAgICAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUocGlwZWxpbmVQYWNrZWQpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoV2FpdFN5bmMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzeW5jLCBmbGFncywgdGltZW91dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmFs
aWRhdGVQcm9ncmFtUGlwZWxpbmUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwaXBlbGluZVBhY2tl
ZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFdlaWdodFBvaW50ZXJPRVNDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCit2b2lkIEdMX0FQ
SUVOVFJZIFZlcnRleEF0dHJpYjFmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBpbmRleCwgR0xmbG9hdCB4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFdlaWdodFBvaW50ZXJPRVMiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAl
cywgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIipwb2ludGVy
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2l6ZSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHlwZSksIHN0cmlkZSwKLSAg
ICAgICAgICAodWludHB0cl90KXBvaW50ZXIpOworICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYjFm
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZmxvYXQgeCA9ICVmIiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgIGluZGV4LCB4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVdlaWdodFBvaW50ZXJPRVMoY29u
dGV4dCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFmKGNvbnRleHQsIGluZGV4LCB4
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+d2VpZ2h0UG9pbnRlcihzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpOworICAgICAg
ICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoV2VpZ2h0UG9pbnRlck9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHNpemUsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVy
dGV4QXR0cmliMWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgeCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWZ2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0iLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQs
IGNvbnN0IEdMY2hhciogbmFtZSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sICh1aW50cHRyX3QpbmFt
ZSk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliMWZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgY29uc3QgR0xmbG9hdCAqdiA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGluZGV4LCAodWludHB0cl90KXYpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlQmluZFVuaWZvcm1Mb2NhdGlv
bkNIUk9NSVVNKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBuYW1lKSk7CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjFmdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIG5hbWUpOworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmli
MWZ2KGluZGV4LCB2KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRVbmlm
b3JtTG9jYXRpb25DSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFZlcnRleEF0dHJpYjFmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1D
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvbXBvbmVudHMpCit2b2lkIEdM
X0FQSUVOVFJZIFZlcnRleEF0dHJpYjJmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ292ZXJh
Z2VNb2R1bGF0aW9uQ0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY29tcG9uZW50cyA9
ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWZhdWx0R3JvdXAsIGNvbXBvbmVudHMpKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIy
ZiIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGZsb2F0IHggPSAlZiwgR0xm
bG9hdCB5ID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHgsIHkpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ292ZXJhZ2VN
b2R1bGF0aW9uQ0hST01JVU0oY29udGV4dCwgY29tcG9uZW50cykpOworICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihjb250ZXh0
LCBpbmRleCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvdmVyYWdlTW9kdWxhdGlvbihjb21wb25lbnRzKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgY29tcG9uZW50cyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4
QXR0cmliMmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgeCwgeSk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRmQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gbWF0cml4TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICptYXRyaXgpCit2b2lkIEdMX0FQSUVOVFJZ
IFZlcnRleEF0dHJpYjJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF0cml4TG9hZGZDSFJPTUlV
TSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1hdHJpeE1vZGUgPSAlcywgY29u
c3QgR0xmbG9hdCAqIG1hdHJpeCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIG1hdHJp
eE1vZGUpLCAodWludHB0cl90KW1hdHJpeCk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliMmZ2
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgY29uc3QgR0xm
bG9hdCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGlu
ZGV4LCAodWludHB0cl90KXYpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTWF0cml4TG9hZGZDSFJPTUlVTShjb250ZXh0LCBtYXRyaXhNb2RlLCBt
YXRyaXgpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4QXR0cmliMmZ2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF0cml4TG9hZGYobWF0
cml4TW9kZSwgbWF0cml4KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjJmdihp
bmRleCwgdik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRyaXhMb2FkZkNI
Uk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWF0cml4TW9kZSwgbWF0cml4KTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWIyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBp
bmRleCwgdik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRJZGVudGl0
eUNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtYXRyaXhNb2Rl
KQordm9pZCBHTF9BUElFTlRSWQorVmVydGV4QXR0cmliM2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNIiwgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIG1hdHJpeE1vZGUgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBtYXRyaXhNb2RlKSk7CisgICAg
RVZFTlQoImdsVmVydGV4QXR0cmliM2YiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBpbmRleCA9ICV1LCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9
ICVmIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCB4LCB5LCB6KTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdHJpeExvYWRJZGVu
dGl0eUNIUk9NSVVNKGNvbnRleHQsIG1hdHJpeE1vZGUpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliM2YoY29udGV4dCwgaW5k
ZXgsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5tYXRyaXhMb2FkSWRlbnRpdHkobWF0cml4TW9kZSk7CisgICAgICAg
ICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeik7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1hdHJpeE1vZGUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRl
eEF0dHJpYjNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHgsIHksIHopOwogICAgIH0K
IH0KIAotR0x1aW50IEdMX0FQSUVOVFJZIEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xzaXplaSByYW5nZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0
cmliM2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xmbG9hdCAqdikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5QYXRoc0NIUk9NSVVNIiwgImNvbnRleHQg
PSAlZCwgR0xzaXplaSByYW5nZSA9ICVkIiwgQ0lEKGNvbnRleHQpLCByYW5nZSk7CisgICAgRVZF
TlQoImdsVmVydGV4QXR0cmliM2Z2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
aW5kZXggPSAldSwgY29uc3QgR0xmbG9hdCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNv
bnRleHQpLAorICAgICAgICAgIGluZGV4LCAodWludHB0cl90KXYpOwogCi0gICAgR0x1aW50IHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2VuUGF0aHNDSFJPTUlVTShjb250ZXh0LCByYW5nZSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0
cmliM2Z2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZW5QYXRocyhyYW5n
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZW5QYXRoc0NIUk9N
SVVNLCBHTHVpbnQ+KCk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5k
ZXgsIHYpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUGF0aHNDSFJPTUlV
TSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJhbmdlLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAg
IGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01JVU0sIEdMdWludD4oKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShWZXJ0ZXhBdHRyaWIzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgdik7
CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBE
ZWxldGVQYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBm
aXJzdCwgR0xzaXplaSByYW5nZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB6LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHcpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlUGF0aHNDSFJP
TUlVTSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmaXJzdCA9ICV1LCBHTHNpemVpIHJhbmdlID0g
JWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgZmlyc3QsIHJhbmdlKTsKKyAgICBFVkVOVCgi
Z2xWZXJ0ZXhBdHRyaWI0ZiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4
ID0gJXUsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYsICIK
KyAgICAgICAgICAiR0xmbG9hdCB3ID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5k
ZXgsIHgsIHksIHosIHcpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBhdGhJRCBm
aXJzdFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KGZp
cnN0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVQYXRoc0NIUk9NSVVNKGNv
bnRleHQsIGZpcnN0UGFja2VkLCByYW5nZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Zihjb250ZXh0LCBpbmRleCwgeCwg
eSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmRlbGV0ZVBhdGhzKGZpcnN0UGFja2VkLCByYW5nZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVQYXRoc0NIUk9NSVVNLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgZmlyc3RQYWNrZWQsIHJhbmdlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0
ZXhBdHRyaWI0ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KTsKICAg
ICB9CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliNGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29u
c3QgR0xmbG9hdCAqdikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1BhdGhDSFJPTUlVTSIsICJjb250ZXh0
ID0gJWQsIEdMdWludCBwYXRoID0gJXUiLCBDSUQoY29udGV4dCksIHBhdGgpOworICAgIEVWRU5U
KCJnbFZlcnRleEF0dHJpYjRmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGlu
ZGV4ID0gJXUsIGNvbnN0IEdMZmxvYXQgKnYgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBpbmRleCwgKHVpbnRwdHJfdCl2KTsKIAotICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aFBh
Y2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWI0ZnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlz
UGF0aChwYXRoUGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
OklzUGF0aENIUk9NSVVNLCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0
ZXhBdHRyaWI0ZnYoaW5kZXgsIHYpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
SXNQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCByZXR1cm5W
YWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUGF0aENIUk9NSVVNLCBHTGJvb2xlYW4+
KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliNGZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaW5kZXgsIHYpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgUGF0aENvbW1hbmRzQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXhBdHRyaWJCaW5kaW5nQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBiaW5kaW5naW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUGF0aENvbW1hbmRzQ0hST01JVU0iLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMc2l6ZWkgbnVtQ29t
bWFuZHMgPSAlZCwgY29uc3QgR0x1Ynl0ZSAqIGNvbW1hbmRzID0gIgotICAgICAgICAgICIweCUw
MTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNpemVpIG51bUNvb3JkcyA9ICVkLCBHTGVudW0g
Y29vcmRUeXBlID0gJXMsIGNvbnN0IHZvaWQqIGNvb3JkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIG51bUNvbW1hbmRzLCAodWludHB0cl90KWNv
bW1hbmRzLCBudW1Db29yZHMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgY29vcmRUeXBlKSwgKHVpbnRwdHJfdCljb29yZHMpOworICAgIEVWRU5U
KCJnbFZlcnRleEF0dHJpYkJpbmRpbmciLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBhdHRyaWJpbmRleCA9ICV1LCBHTHVpbnQgYmluZGluZ2luZGV4ID0gJXUiLCBDSUQoY29udGV4
dCksCisgICAgICAgICAgYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUGF0aENvbW1hbmRzQ0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgbnVt
Q29tbWFuZHMsIGNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3JkcykpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJCaW5kaW5nKGNvbnRleHQsIGF0dHJpYmluZGV4LCBiaW5kaW5naW5kZXgpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wYXRo
Q29tbWFuZHMocGF0aFBhY2tlZCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1Db29yZHMsIGNv
b3JkVHlwZSwgY29vcmRzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkJpbmRp
bmcoYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQYXRoQ29tbWFuZHNDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQ
YWNrZWQsIG51bUNvbW1hbmRzLCBjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICBudW1D
b29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhB
dHRyaWJCaW5kaW5nLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYXR0cmliaW5kZXgsIGJpbmRpbmdp
bmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBhdGhQYXJhbWV0ZXJmQ0hST01J
VU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2
YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2aXNvckNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHZhbHVlID0gJWYi
LCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCB2YWx1ZSk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0
cmliRGl2aXNvciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTHVpbnQgZGl2
aXNvciA9ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBkaXZpc29yKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKGNvbnRleHQsIHBh
dGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvcihjb250ZXh0LCBp
bmRleCwgZGl2aXNvcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnBhdGhQYXJhbWV0ZXJmKHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGhQYXJhbWV0ZXJmQ0hS
T01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkRpdmlzb3IsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBpbmRleCwgZGl2aXNvcik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBh
dGhQYXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRp
dmlzb3IpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTSIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdM
aW50IHZhbHVlID0gJWQiLCBDSUQoY29udGV4dCksIHBhdGgsCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCB2YWx1ZSk7CisgICAgRVZF
TlQoImdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGlu
ZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
aW5kZXgsIGRpdmlzb3IpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBhdGhJRCBw
YXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBh
dGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGhQYXJhbWV0ZXJp
Q0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRShjb250ZXh0LCBpbmRleCwgZGl2aXNvcikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBhdGhQYXJhbWV0ZXJpKHBh
dGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRy
aWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFj
a2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBkaXZpc29yKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTSIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQg
KiB2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBh
dGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVp
bnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliRGl2aXNvckVYVCIsICJj
b250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTHVpbnQgZGl2aXNvciA9ICV1IiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBkaXZpc29yKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBw
bmFtZSwgdmFsdWUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3JFWFQoY29udGV4dCwgaW5kZXgsIGRp
dmlzb3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRQYXRoUGFyYW1ldGVyZnYocGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3Ip
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UGF0aFBhcmFtZXRlcmZ2Q0hS
T01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkRpdmlzb3JFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBpbmRleCwgZGl2aXNvcik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5U
UlkgVmVydGV4QXR0cmliRm9ybWF0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmli
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICogdmFsdWUgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwYXRoLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpdmFs
dWUpOworICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYkZvcm1hdCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IGF0dHJpYmluZGV4ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVt
IHR5cGUgPSAlcywgR0xib29sZWFuICIKKyAgICAgICAgICAibm9ybWFsaXplZCA9ICVzLCBHTHVp
bnQgcmVsYXRpdmVvZmZzZXQgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBhdHRyaWJp
bmRleCwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHlw
ZSksCisgICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcobm9ybWFsaXplZCksIHJlbGF0aXZlb2Zm
c2V0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlV
TShjb250ZXh0LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpKTsKKyAgICAgICAgVmVydGV4QXR0
cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1hdChjb250ZXh0LCBhdHRyaWJpbmRl
eCwgc2l6ZSwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkLCByZWxhdGl2ZW9mZnNldCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFBh
dGhQYXJhbWV0ZXJpdihwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgY29u
dGV4dC0+dmVydGV4QXR0cmliRm9ybWF0KGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBu
b3JtYWxpemVkLCByZWxhdGl2ZW9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBh
dGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0
cmliRm9ybWF0LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGVQ
YWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCwgcmVsYXRpdmVvZmZzZXQp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZnVuYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaykK
K3ZvaWQgR0xfQVBJRU5UUlkKK1ZlcnRleEF0dHJpYkk0aUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0iLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSBmdW5jID0gJXMsIEdMaW50IHJlZiA9ICVkLCBHTHVpbnQgbWFz
ayA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWZhdWx0R3JvdXAsIGZ1bmMpLCByZWYsIG1hc2spOworICAgIEVWRU5UKCJnbFZlcnRl
eEF0dHJpYkk0aSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUs
IEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTGludCB6ID0gJWQsIEdMaW50IHcgPSAlZCIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSwgeiwgdyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRoU3Rl
bmNpbEZ1bmNDSFJPTUlVTShjb250ZXh0LCBmdW5jLCByZWYsIG1hc2spKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJp
Ykk0aShjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBhdGhTdGVuY2lsRnVuYyhmdW5j
LCByZWYsIG1hc2spOworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSTRpKGluZGV4
LCB4LCB5LCB6LCB3KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGhTdGVu
Y2lsRnVuY0NIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnVuYywgcmVmLCBtYXNrKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJJNGksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBpbmRleCwgeCwgeSwgeiwgdyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFN0
ZW5jaWxGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJJNGl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xpbnQgKnYpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0iLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBmaWxsTW9kZSA9
ICVzLCBHTHVpbnQgbWFzayA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHBhdGgsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGZpbGxNb2RlKSwgbWFzayk7
CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliSTRpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IGluZGV4ID0gJXUsIGNvbnN0IEdMaW50ICp2ID0gMHglMDE2IiBQUkl4UFRSICIi
LCBDSUQoY29udGV4dCksCisgICAgICAgICAgaW5kZXgsICh1aW50cHRyX3Qpdik7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aFBh
Y2tlZCwgZmlsbE1vZGUsIG1hc2spKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aXYoY29udGV4dCwgaW5kZXgs
IHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5zdGVuY2lsRmlsbFBhdGgocGF0aFBhY2tlZCwgZmlsbE1vZGUsIG1hc2spOworICAg
ICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSTRpdihpbmRleCwgdik7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGZpbGxNb2RlLCBtYXNrKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShWZXJ0ZXhBdHRyaWJJNGl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHYp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrKQordm9pZCBHTF9BUElFTlRSWQorVmVydGV4QXR0cmliSTR1aUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwg
R0x1aW50IHosIEdMdWludCB3KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxTdHJva2VQYXRoQ0hS
T01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMaW50
IHJlZmVyZW5jZSA9ICVkLCBHTHVpbnQgbWFzayA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAg
ICAgIHBhdGgsIHJlZmVyZW5jZSwgbWFzayk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliSTR1
aSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMdWludCB4
ID0gJXUsIEdMdWludCB5ID0gJXUsIEdMdWludCB6ID0gJXUsIEdMdWludCB3ICIKKyAgICAgICAg
ICAiPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSwgeiwgdyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIHBhdGhQYWNrZWQsIHJlZmVyZW5jZSwgbWFzaykpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aShj
b250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxTdHJva2VQYXRoKHBhdGhQYWNr
ZWQsIHJlZmVyZW5jZSwgbWFzayk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJ
NHVpKGluZGV4LCB4LCB5LCB6LCB3KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFj
a2VkLCByZWZlcmVuY2UsIG1hc2spOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJp
Ykk0dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdyk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIENvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3ZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliSTR1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ292ZXJGaWxs
UGF0aENIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIGNv
dmVyTW9kZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSkpOworICAgIEVWRU5UKCJn
bFZlcnRleEF0dHJpYkk0dWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5k
ZXggPSAldSwgY29uc3QgR0x1aW50ICp2ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksCisgICAgICAgICAgaW5kZXgsICh1aW50cHRyX3Qpdik7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQ292ZXJGaWxsUGF0aENIUk9NSVVNKGNvbnRleHQsIHBhdGhQYWNrZWQsIGNvdmVyTW9k
ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVmVydGV4QXR0cmliSTR1aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3ZlckZpbGxQ
YXRoKHBhdGhQYWNrZWQsIGNvdmVyTW9kZSk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhB
dHRyaWJJNHVpdihpbmRleCwgdik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShD
b3ZlckZpbGxQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBj
b3Zlck1vZGUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkk0dWl2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHYpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSUZv
cm1hdENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCByZWxhdGl2ZW9mZnNldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlV
TSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAl
cyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRy
aWJJRm9ybWF0IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgYXR0cmliaW5kZXgg
PSAldSwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHVpbnQgIgorICAgICAg
ICAgICJyZWxhdGl2ZW9mZnNldCA9ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGF0dHJp
YmluZGV4LCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0
eXBlKSwKKyAgICAgICAgICByZWxhdGl2ZW9mZnNldCk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgY292ZXJNb2Rl
KSk7CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFj
a2VkLCByZWxhdGl2ZW9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ryb2tlUGF0aChwYXRoUGFja2VkLCBjb3Zl
ck1vZGUpOworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSUZvcm1hdChhdHRyaWJp
bmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwgcmVsYXRpdmVvZmZzZXQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoQ292ZXJTdHJva2VQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwYXRoUGFja2VkLCBjb3Zlck1vZGUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZl
cnRleEF0dHJpYklGb3JtYXQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhdHRyaWJpbmRleCwgc2l6
ZSwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZW9mZnNldCk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJUG9pbnRlckNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9p
bnRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xlbnVtIGZpbGxN
b2RlID0gJXMsIEdMdWludCBtYXNrID0gJXUsIEdMZW51bSAiCi0gICAgICAgICAgImNvdmVyTW9k
ZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGZpbGxNb2RlKSwgbWFzaywKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpKTsKKyAgICBF
VkVOVCgiZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlciIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IGluZGV4ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xz
aXplaSBzdHJpZGUgPSAiCisgICAgICAgICAgIiVkLCBjb25zdCB2b2lkICpwb2ludGVyID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHNpemUsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSwgdHlwZSks
CisgICAgICAgICAgc3RyaWRlLCAodWludHB0cl90KXBvaW50ZXIpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVy
RmlsbFBhdGhDSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCBwYXRoUGFja2VkLCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKSk7
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
IFZhbGlkYXRlVmVydGV4QXR0cmliSVBvaW50ZXIoY29udGV4dCwgaW5kZXgsIHNpemUsIHR5cGVQ
YWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChwYXRo
UGFja2VkLCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBv
aW50ZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFRoZW5Db3Zl
ckZpbGxQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBmaWxs
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICBtYXNrLCBjb3Zlck1vZGUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYklQb2ludGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
aW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICBw
b2ludGVyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJQ
b2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcGF0aCA9ICV1LCBHTGludCByZWZlcmVuY2UgPSAlZCwgR0x1aW50IG1hc2sgPSAl
dSwgR0xlbnVtICIKLSAgICAgICAgICAiY292ZXJNb2RlID0gJXMiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgcGF0aCwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSkpOworICAgIEVWRU5UKCJnbFZl
cnRleEF0dHJpYlBvaW50ZXIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRl
eCA9ICV1LCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMYm9vbGVhbiAiCisg
ICAgICAgICAgIm5vcm1hbGl6ZWQgPSAlcywgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3Qgdm9p
ZCAqcG9pbnRlciA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IGluZGV4LCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4QXR0cmliUG9p
bnRlclR5cGUsIHR5cGUpLAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKG5vcm1hbGl6ZWQp
LCBzdHJpZGUsICh1aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwYXRoUGFja2Vk
LCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSkpOworICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRy
aWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVmVydGV4QXR0cmliUG9pbnRlcihjb250ZXh0LCBpbmRleCwgc2l6ZSwgdHlw
ZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbFRoZW5Db3Zl
clN0cm9rZVBhdGgocGF0aFBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUpOworICAg
ICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZVBh
Y2tlZCwgbm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0sIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZSwgbWFzaywgY292ZXJNb2RlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJQ
b2ludGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJh
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEJp
bmRpbmdEaXZpc29yQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiaW5kaW5naW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBkaXZpc29yKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBudW1QYXRoID0gJWQsIEdMZW51
bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qgdm9pZCAqIHBhdGhzID0gIgotICAgICAgICAgICIw
eCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xlbnVt
IGNvdmVyTW9kZSA9ICVzLCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9ICVzLCBjb25zdCBHTGZsb2F0
ICIKLSAgICAgICAgICAiKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBudW1QYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBwYXRoTmFtZVR5cGUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGF0
aHMsIHBhdGhCYXNlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBj
b3Zlck1vZGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0
R3JvdXAsIHRyYW5zZm9ybVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAg
RVZFTlQoImdsVmVydGV4QmluZGluZ0Rpdmlzb3IiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgYmlu
ZGluZ2luZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgYmluZGluZ2luZGV4LCBkaXZpc29yKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UGF0aElEPihwYXRoQmFzZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51bVBhdGgsIHBh
dGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNm
b3JtVmFsdWVzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKGNvbnRleHQsIGJpbmRpbmdpbmRleCwgZGl2
aXNvcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmNvdmVyRmlsbFBhdGhJbnN0YW5jZWQobnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBw
YXRocywgcGF0aEJhc2VQYWNrZWQsIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnZlcnRleEJpbmRpbmdEaXZpc29yKGJpbmRpbmdpbmRleCwgZGl2
aXNvcik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3ZlckZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1QYXRoLCBwYXRoTmFtZVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBjb3Zlck1v
ZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoVmVydGV4QmluZGluZ0Rpdmlzb3IsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBiaW5kaW5naW5k
ZXgsIGRpdmlzb3IpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zv
cm1WYWx1ZXMpCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleFBvaW50ZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbnVt
UGF0aCA9ICVkLCBHTGVudW0gcGF0aE5hbWVUeXBlID0gJXMsIGNvbnN0IHZvaWQgKiBwYXRocyA9
ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0x1aW50IHBhdGhC
YXNlID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAlcywgR0xlbnVtIHRyYW5zZm9ybVR5cGUgPSAl
cywgY29uc3QgR0xmbG9hdCAiCi0gICAgICAgICAgIiogdHJhbnNmb3JtVmFsdWVzID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbnVtUGF0aCwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcGF0aE5hbWVUeXBlKSwKLSAgICAgICAg
ICAodWludHB0cl90KXBhdGhzLCBwYXRoQmFzZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgY292ZXJNb2RlKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0cmFuc2Zvcm1UeXBlKSwgKHVpbnRwdHJfdCl0cmFuc2Zv
cm1WYWx1ZXMpOworICAgIEVWRU5UKCJnbFZlcnRleFBvaW50ZXIiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJp
ZGUgPSAlZCwgY29uc3Qgdm9pZCAiCisgICAgICAgICAgIipwb2ludGVyID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlZlcnRleFBvaW50ZXJUeXBlLCB0eXBlKSwgc3RyaWRlLAorICAgICAgICAgICh1
aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElE
IHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4o
cGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51bVBhdGgsIHBhdGhOYW1lVHlw
ZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVz
KSk7CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhQb2ludGVyKGNv
bnRleHQsIHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZChudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Zlck1v
ZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgICAgICAgICBjb250ZXh0
LT52ZXJ0ZXhQb2ludGVyKHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJP
TUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGNvdmVyTW9kZSwgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhQ
b2ludGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBw
b2ludGVyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQordm9pZCBHTF9BUElFTlRS
WQorVmlld3BvcnRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xzaXplaSBudW1QYXRoID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qgdm9p
ZCAqIHBhdGhzID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBH
THVpbnQgcGF0aEJhc2UgPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWludCBtYXNrID0g
JXUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlID0gIgotICAgICAgICAgICIlcywgY29uc3QgR0xmbG9h
dCAqIHRyYW5zZm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQo
Y29udGV4dCksIG51bVBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXRocywgcGF0aEJhc2Us
IHJlZmVyZW5jZSwgbWFzaywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCB0cmFuc2Zvcm1UeXBlKSwgKHVpbnRwdHJfdCl0cmFuc2Zvcm1WYWx1ZXMp
OworICAgIEVWRU5UKCJnbFZpZXdwb3J0IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGlu
dCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdo
dCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHgsIHksIHdpZHRoLCBoZWlnaHQpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGhCYXNlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51
bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZpZXdwb3J0KGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWln
aHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5zdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChudW1QYXRoLCBwYXRoTmFtZVR5cGUs
IHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3Jt
VmFsdWVzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIHJlZmVy
ZW5jZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1WYWx1ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZpZXdwb3J0LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit2b2lkIEdMX0FQ
SUVOVFJZIFdhaXRTZW1hcGhvcmVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2VtYXBo
b3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBudW1CdWZmZXJCYXJyaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRl
eHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZW51bSAqc3JjTGF5b3V0cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTdGVuY2lsRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBudW1Q
YXRocyA9ICVkLCBHTGVudW0gcGF0aE5hbWVUeXBlID0gJXMsIGNvbnN0IHZvaWQgKiBwYXRocyA9
ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0x1aW50IHBhdGhC
YXNlID0gJXUsIEdMZW51bSBmaWxsTW9kZSA9ICVzLCBHTHVpbnQgbWFzayA9ICV1LCBHTGVudW0g
dHJhbnNmb3JtVHlwZSA9ICIKLSAgICAgICAgICAiJXMsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zv
cm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBu
dW1QYXRocywgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcGF0aE5h
bWVUeXBlKSwKLSAgICAgICAgICAodWludHB0cl90KXBhdGhzLCBwYXRoQmFzZSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZmlsbE1vZGUpLCBtYXNrLAotICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9ybVR5
cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZFTlQoImdsV2FpdFNlbWFw
aG9yZUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1
LCBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMgPSAldSwgY29uc3QgR0x1aW50ICIKKyAgICAgICAg
ICAiKmJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTHVpbnQgbnVtVGV4
dHVyZUJhcnJpZXJzID0gJXUsIGNvbnN0IEdMdWludCAqdGV4dHVyZXMgPSAweCUwMTYiIFBSSXhQ
VFIKKyAgICAgICAgICAiLCBjb25zdCBHTGVudW0gKnNyY0xheW91dHMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIG51bUJ1ZmZlckJhcnJp
ZXJzLCAodWludHB0cl90KWJ1ZmZlcnMsIG51bVRleHR1cmVCYXJyaWVycywKKyAgICAgICAgICAo
dWludHB0cl90KXRleHR1cmVzLCAodWludHB0cl90KXNyY0xheW91dHMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGhCYXNlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlw
ZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWFzaywgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSk7CisgICAg
ICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAgICBjb25zdCBCdWZmZXJJ
RCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBC
dWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1Bh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlEICo+KHRl
eHR1cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgIFZhbGlkYXRlV2FpdFNlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhv
cmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFj
a2VkLCBzcmNMYXlvdXRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKG51bVBhdGhzLCBw
YXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwg
dHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPndhaXRTZW1hcGhvcmUoc2Vt
YXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywgYnVmZmVyc1BhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJlc1Bh
Y2tlZCwgc3JjTGF5b3V0cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNl
UGFja2VkLCBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFdhaXRTZW1hcGhv
cmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJh
cnJpZXJzLAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG51bVRleHR1cmVC
YXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWQotU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3ZvaWQgR0xfQVBJRU5UUlkgV2FpdFN5bmNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
eW5jIHN5bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0Zmll
bGQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
IHRpbWVvdXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbnVtUGF0aHMg
PSAlZCwgR0xlbnVtIHBhdGhOYW1lVHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0g
ICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9
ICV1LCBHTGVudW0gZmlsbE1vZGUgPSAlcywgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIGNvdmVy
TW9kZSA9ICVzLCAiCi0gICAgICAgICAgIkdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXMsIGNvbnN0
IEdMZmxvYXQgKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBudW1QYXRocywgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgcGF0aE5hbWVUeXBlKSwKLSAgICAgICAgICAodWludHB0cl90KXBhdGhzLCBw
YXRoQmFzZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZmlsbE1v
ZGUpLCBtYXNrLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0
R3JvdXAsIGNvdmVyTW9kZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgdHJhbnNmb3JtVHlwZSksICh1aW50cHRyX3QpdHJhbnNmb3JtVmFsdWVz
KTsKKyAgICBFVkVOVCgiZ2xXYWl0U3luYyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xz
eW5jIHN5bmMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGJpdGZpZWxkIGZsYWdz
ID0gJXMsIEdMdWludDY0IHRpbWVvdXQgPSAlbGx1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
ICh1aW50cHRyX3Qpc3luYywKKyAgICAgICAgICBHTGJpdGZpZWxkVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgZmxhZ3MpLmNfc3RyKCksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPih0aW1lb3V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFBhdGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBw
YXRocywgcGF0aEJhc2VQYWNrZWQsIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcykp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlV2FpdFN5bmMoY29udGV4dCwgc3luYywgZmxhZ3MsIHRpbWVvdXQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQobnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0
aEJhc2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPndhaXRTeW5jKHN5bmMsIGZsYWdz
LCB0aW1lb3V0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbnVt
UGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJh
c2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShXYWl0U3luYywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHN5bmMsIGZsYWdzLCB0aW1lb3V0KTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkKLVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
YXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3Zv
aWQgR0xfQVBJRU5UUlkgV2VpZ2h0UG9pbnRlck9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHNpemVpIG51bVBhdGhzID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qg
dm9pZCAqIHBhdGhzID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAi
LCBHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWludCBtYXNr
ID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAlcywgIgotICAgICAgICAgICJHTGVudW0gdHJhbnNm
b3JtVHlwZSA9ICVzLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbnVtUGF0aHMsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAg
KHVpbnRwdHJfdClwYXRocywgcGF0aEJhc2UsIHJlZmVyZW5jZSwgbWFzaywKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9y
bVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZFTlQoImdsV2VpZ2h0
UG9pbnRlck9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgc2l6ZSA9ICVkLCBH
TGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICIKKyAgICAg
ICAgICAiKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0eXBl
KSwgc3RyaWRlLAorICAgICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51bVBhdGhzLCBw
YXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRy
YW5zZm9ybVZhbHVlcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVXZWlnaHRQb2ludGVyT0VTKGNvbnRleHQsIHNpemUsIHR5cGUsIHN0cmlk
ZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKG51bVBh
dGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJhc2VQYWNrZWQsIHJlZmVyZW5jZSwgbWFz
aywgY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPndlaWdodFBvaW50ZXIoc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1QYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwg
cmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShXZWlnaHRQ
b2ludGVyT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2lu
dGVyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFt
ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEJpbmRGcmFnbWVudElucHV0TG9j
YXRpb25DSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW1z
ID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIGNvbnN0IEdMY2hhciAqIG5hbWUgPSAiCisgICAg
RVZFTlQoImdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNIiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBjb25zdCBH
TGNoYXIqIG5hbWUgPSAiCiAgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHByb2dyYW1zLCBsb2NhdGlvbiwgKHVpbnRwdHJfdCluYW1lKTsKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCAodWludHB0cl90KW5hbWUp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
c1BhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW1z
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgVmFsaWRhdGVCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oY29udGV4
dCwgcHJvZ3JhbXNQYWNrZWQsIGxvY2F0aW9uLCBuYW1lKSk7CisgICAgICAgICAgICAgVmFsaWRh
dGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKHByb2dyYW1z
UGFja2VkLCBsb2NhdGlvbiwgbmFtZSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5kVW5pZm9y
bUxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBuYW1lKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1zUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uLCBuYW1lKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCaW5kVW5pZm9y
bUxvY2F0aW9uQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBuYW1lKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQordm9pZCBHTF9B
UElFTlRSWSBDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gY29tcG9uZW50cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtUGF0aEZy
YWdtZW50SW5wdXRHZW5DSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xlbnVtIGdlbk1vZGUgPSAlcywg
R0xpbnQgIgotICAgICAgICAgICJjb21wb25lbnRzID0gJWQsIGNvbnN0IEdMZmxvYXQgKiBjb2Vm
ZnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFt
LCBsb2NhdGlvbiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZ2Vu
TW9kZSksCi0gICAgICAgICAgY29tcG9uZW50cywgKHVpbnRwdHJfdCljb2VmZnMpOworICAgIEVW
RU5UKCJnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IGNvbXBvbmVudHMgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb21wb25lbnRzKSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01J
VU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMpKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvdmVyYWdlTW9k
dWxhdGlvbkNIUk9NSVVNKGNvbnRleHQsIGNvbXBvbmVudHMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW4ocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZz
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNvdmVyYWdlTW9kdWxhdGlvbihjb21wb25lbnRzKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgZ2VuTW9kZSwgY29tcG9uZW50cywgY29lZmZzKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGNvbXBvbmVudHMpOwogICAgIH0KIH0KIApAQCAtMjM5NzgsMTEgKzIz
NTM4LDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJl
SUQgc291cmNlSWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
Pihzb3VyY2VJZCk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKLSAgICAgICAg
VGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4oZGVzdElkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOwor
ICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKKyAgICAgICAgVGV4dHVy
ZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUlEPihkZXN0SWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVDb3B5VGV4dHVyZUNIUk9NSVVNKAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCBzb3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWwsIGRlc3RU
YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RJZFBhY2tl
ZCwgZGVzdExldmVsLCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUsIHVucGFja0ZsaXBZLApAQCAt
MjQwMjksMTEgKzIzNTg5LDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1YlRleHR1cmVDSFJP
TUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFy
Z2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCBzb3Vy
Y2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4oc291cmNlSWQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsK
KyAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzb3VyY2VJZFBhY2tlZCwg
c291cmNlTGV2ZWwsIGRlc3RUYXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RJZFBhY2tlZCwgZGVzdExldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3
aWR0aCwgaGVpZ2h0LApAQCAtMjQwNjEsOSArMjM2MjEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENv
bXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKLSAgICAg
ICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4oZGVzdElkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOworICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KGRl
c3RJZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKGNvbnRl
eHQsIHNvdXJjZUlkUGFja2VkLCBkZXN0SWRQYWNrZWQpKTsKQEAgLTI0MDg1LDcgKzIzNjQ1LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBSZXF1ZXN0RXh0ZW5zaW9uQU5HTEVDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgY29uc3QgR0xjaGEKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoY29udGV4dCwgbmFtZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDEwNSw3ICsyMzY2NSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRGlzYWJsZUV4dGVuc2lvbkFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIGNvbnN0IEdMY2hhCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGlzYWJsZUV4dGVuc2lvbkFOR0xFKGNvbnRleHQsIG5hbWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQxMzIsNyArMjM2OTIsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEJvb2xlYW52Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBW
YWxpZGF0ZUdldEJvb2xlYW52Um9idXN0QU5HTEUoY29udGV4dCwgcG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKSk7CkBAIC0yNDE2Miw5ICsyMzcyMiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQx
OTIsOCArMjM3NTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEZsb2F0dlJvYnVzdEFOR0xFQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGbG9hdHZS
b2J1c3RBTkdMRShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNDIyMyw4ICsyMzc4Myw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1
c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDI1Myw4ICsy
MzgxMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnZSb2J1c3RBTkdMRUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZWdlcnZSb2J1
c3RBTkdMRShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjQyODEsOSArMjM4NDEsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFByb2dyYW1pdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDMxMyw3
ICsyMzg3Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0y
NDM0Myw4ICsyMzkwMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyaXZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRTaGFkZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNoYWRlclBhY2tlZCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNDM3NSw5ICsyMzkzNSw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDQwNyw5ICsy
Mzk2Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0yNDQzNywxNiArMjM5OTcsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlm
b3JtZnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVu
aWZvcm1mdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZnZSb2J1c3QocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmdldFVuaWZvcm1mdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKICAgICB9CiB9CkBAIC0yNDQ2NywxNiArMjQwMjgsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRVbmlmb3JtaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtaXZSb2J1
c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRV
bmlmb3JtaXZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKTsKICAgICB9CiB9CkBAIC0yNDQ5OCw3ICsyNDA2MCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShjb250ZXh0LCBpbmRleCwg
cG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNDUyOCw3ICsyNDA5MCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShj
b250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNDU1
OCw3ICsyNDEyMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliUG9pbnRlcnZS
b2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliUG9pbnRlcnZS
b2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcG9pbnRlcikpOwpAQCAt
MjQ1OTgsNyArMjQxNjAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlYWRQaXhlbHNSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFO
R0xFKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwK
QEAgLTI0NjM3LDggKzI0MTk5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTJEUm9idXN0
QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVU
ZXhJbWFnZTJEUm9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLApAQCAtMjQ2NjksOCArMjQyMzEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0yNDY5OSw4ICsyNDI2MSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdM
RShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpKTsKQEAgLTI0
NzM3LDggKzI0Mjk5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTJEUm9idXN0QU5H
TEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhT
dWJJbWFnZTJEUm9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsCkBAIC0yNDc3OCw4ICsyNDM0MCw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVGV4SW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTI0ODIxLDkgKzI0MzgzLDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJn
ZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdWJJ
bWFnZTNEUm9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQs
IHR5cGUsIGJ1ZlNpemUsIHBpeGVscykpOwpAQCAtMjQ4NjAsOCArMjQ0MjIsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRSgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC0yNDkwMCw4ICsyNDQ2
Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFn
ZTJEUm9idXN0QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsCkBAIC0yNDk0MCw4ICsyNDUwMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRl
eEltYWdlM0RSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
b21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwKQEAgLTI0OTgzLDkgKzI0NTQ1LDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCBpbWFnZVNpemUsIGRhdGFTaXplLCBkYXRhKSk7CkBAIC0yNTAxOSw4ICsyNDU4MSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjUwNTAsOCAr
MjQ2MTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEVD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgaWRQYWNrZWQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjUwODIsOSArMjQ2NDQsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRp
bmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZm
ZXJQb2ludGVydlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTI1MTEzLDcgKzI0Njc1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyaV92Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRh
dGEpKTsKQEAgLTI1MTQ3LDggKzI0NzA5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlcm5h
bGZvcm1hdGl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJn
ZXQsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNTE3OCw3ICsyNDc0MCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEVDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdlJvYnVzdEFOR0xF
KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI1
MjA4LDcgKzI0NzcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0
QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCwgaW5kZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjUyMzcs
MTYgKzI0Nzk5LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm11aXZSb2J1c3QocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmdldFVuaWZvcm11aXZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm11aXZSb2J1c3RB
TkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICB9
CiB9CkBAIC0yNTI3MSw4ICsyNDgzNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZSb2J1c3RBTkdMRShj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwKQEAgLTI1MzAzLDcgKzI0
ODY2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVnZXI2NHZSb2J1c3RBTkdMRShj
b250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKSk7CkBAIC0yNTMzMiw3ICsyNDg5
NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSkpOwpAQCAtMjUz
NjMsOSArMjQ5MjYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZS
b2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRp
bmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZl
ckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1MzkyLDggKzI0OTU1LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNh
bXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbSkpOwpA
QCAtMjU0MjIsOCArMjQ5ODUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIGJ1ZlNpemUsIHBhcmFtKSk7CkBAIC0yNTQ1Myw5ICsyNTAxNiw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxl
cik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTI1NDg0LDkgKzI1MDQ3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVy
ZnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBz
YW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBs
ZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNh
bXBsZXJQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU1MTYsNyArMjUwNzksNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgYwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjU1NDksOCArMjUxMTIsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xFQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJv
Z3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3Jh
bUludGVyZmFjZSwKQEAgLTI1NTgyLDcgKzI1MTQ1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRC
b29sZWFuaV92Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZUdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBidWZTaXpl
LCBsZW5ndGgsIGRhdGEpKTsKQEAgLTI1NjEyLDcgKzI1MTc1LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShjb250ZXh0LCBwbmFtZSwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKSk7CkBAIC0yNTY0NCw5ICsyNTIwNyw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4
TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU2NzgsOSArMjUyNDEs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1NzA5
LDcgKzI1MjcyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9i
dXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFBvaW50ZXJ2
Um9idXN0QU5HTEVSb2J1c3RBTkdMRShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpKTsKQEAgLTI1NzQ5LDcgKzI1MzEyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBp
eGVsc1JvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVSZWFk
blBpeGVsc1JvYnVzdEFOR0xFKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgYnVmU2l6ZSwKQEAgLTI1NzgwLDE2ICsyNTM0MywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5H
TEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9y
bWZ2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFt
cyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWZ2Um9idXN0KHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgfQogfQpAQCAtMjU4MTAsMTYgKzI1Mzc0LDE3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlm
b3JtaXZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9y
bUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmdldG5Vbmlmb3JtaXZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtaXZSb2J1
c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICB9CiB9CkBAIC0yNTg0MCwxNyAr
MjU0MDUsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybXVpdlJvYnVzdChwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29u
dGV4dC0+Z2V0blVuaWZvcm11aXZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm11aXZSb2J1c3RB
TkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICB9
CiB9CiAKQEAgLTI1ODcwLDggKzI1NDM2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0
ZXJJaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZh
bGlkYXRlVGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgYnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0yNTkwMCw4ICsyNTQ2Niw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0yNTkzMiw5
ICsyNTQ5OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0yNTk2NCw5ICsyNTUzMCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5H
TEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNTk5NCw4ICsyNTU2
MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
YW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBw
YXJhbSkpOwpAQCAtMjYwMjQsOCArMjU1OTAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Ft
cGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW0pKTsKQEAgLTI2MDU1LDkgKzI1NjIxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRT
YW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjYwODYs
OSArMjU2NTIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4o
c2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjExNyw4
ICsyNTY4Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xF
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVy
eUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgaWRQYWNrZWQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjYxNDgsOCArMjU3MTQsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5SUQg
aWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihp
ZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeUlEIGlkUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihp
ZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNjE3OSw4ICsyNTc0NSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRR
dWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBsZW5n
dGgsIHBhcmFtcykpOwpAQCAtMjYyMTksMTEgKzI1Nzg1LDExIEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q29weVRleHR1cmUzREFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKLSAgICAgICAgVGV4dHVy
ZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
YXJnZXQ+KGRlc3RUYXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KGRlc3RUYXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KGRlc3RJZCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXh0dXJl
M0RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgc291cmNl
SWRQYWNrZWQsIHNvdXJjZUxldmVsLCBkZXN0VGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXN0SWRQYWNrZWQsIGRlc3RMZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IGRlc3RUeXBlLCB1bnBhY2tGbGlwWSwKQEAgLTI2Mjc0LDEwICsyNTg0MCwxMCBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvcHlTdWJUZXh0dXJlM0RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7Ci0g
ICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJ
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElk
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJ
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
c291cmNlSWQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKKyAg
ICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5U3ViVGV4
dHVyZTNEQU5HTEUoY29udGV4dCwgc291cmNlSWRQYWNrZWQsIHNvdXJjZUxldmVsLCBkZXN0VGFy
Z2V0UGFja2VkLApAQCAtMjYzMTcsOCArMjU4ODMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0
b3JhZ2UyRE11bHRpc2FtcGxlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQU5HTEUoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKQEAgLTI2MzQ5LDggKzI1OTE1LDggQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcml2QU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJn
ZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRl
cml2QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpOwpA
QCAtMjYzNzksOCArMjU5NDUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1l
dGVyZnZBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxl
dmVsLCBwbmFtZSwgcGFyYW1zKSk7CkBAIC0yNjQwOSw4ICsyNTk3NSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTXVsdGlEcmF3QXJyYXlzQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0FOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQs
IGZpcnN0cywgY291bnRzLCBkcmF3Y291bnQpKTsKQEAgLTI2NDQxLDkgKzI2MDA3LDkgQEAgdm9p
ZCBHTF9BUElFTlRSWSBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVN
b2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9k
ZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQsIG1vZGVQYWNrZWQsIGZpcnN0cywgY291bnRzLCBpbnN0YW5jZUNvdW50cywgZHJhd2NvdW50
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI2NDc0LDEwICsyNjA0MCwxMCBAQCB2
b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0VsZW1lbnRzQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVN
b2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmlt
aXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU11
bHRpRHJhd0VsZW1lbnRzQU5HTEUoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnRzLCB0eXBlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRpY2VzLCBkcmF3Y291bnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMjY1MDksOSArMjYwNzUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRz
VHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlw
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoY29udGV4
dCwgbW9kZVBhY2tlZCwgY291bnRzLCB0eXBlUGFja2VkLApAQCAtMjY1NDMsOSArMjYxMDksOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgYwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQ
cmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJp
bWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJh
d0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZUFOR0xFKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291
bnQsIGJhc2VJbnN0YW5jZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjU4MCw5
ICsyNjE0Niw5IEBAIERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VB
TkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBj
b3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKQEAgLTI2NjE5LDggKzI2MTg1LDggQEAgTXVsdGlE
cmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9k
ZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0
YW5jZUFOR0xFKApAQCAtMjY2NjAsMTAgKzI2MjI2LDEwIEBAIE11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAg
ICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9k
ZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnRzLCB0eXBlUGFj
a2VkLCBpbmRpY2VzLCBpbnN0YW5jZUNvdW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZVZlcnRpY2VzLCBiYXNlSW5zdGFuY2VzLCBkcmF3Y291bnQpKTsKQEAgLTI2Njky
LDggKzI2MjU4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNdWx0aXNhbXBsZWZ2QU5HTEVDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE11bHRpc2Ft
cGxlZnZBTkdMRShjb250ZXh0LCBwbmFtZSwgaW5kZXgsIHZhbCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI2NzEyLDcgKzI2Mjc4LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBTYW1wbGVNYXNraUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBtYXNrTnVtYmUKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVTYW1wbGVNYXNraUFOR0xFKGNvbnRleHQsIG1hc2tOdW1iZXIsIG1hc2spKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjY3MzIsOCArMjYyOTgsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIFByb3Zva2luZ1ZlcnRleEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZW51bSBtb2RlKQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcm92b2tpbmdWZXJ0ZXhD
b252ZW50aW9uIG1vZGVQYWNrZWQgICAgICAgICAgPSBGcm9tR0w8UHJvdm9raW5nVmVydGV4Q29u
dmVudGlvbj4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm92
b2tpbmdWZXJ0ZXhDb252ZW50aW9uIG1vZGVQYWNrZWQgPSBGcm9tR0w8UHJvdm9raW5nVmVydGV4
Q29udmVudGlvbj4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXhBTkdMRShjb250ZXh0LCBtb2RlUGFj
a2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI2NzU0LDEwICsyNjMyMCwxMCBA
QCB2b2lkIEdMX0FQSUVOVFJZIExvc2VDb250ZXh0Q0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIGN1cnJlbgogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBH
cmFwaGljc1Jlc2V0U3RhdHVzIGN1cnJlbnRQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8R3Jh
cGhpY3NSZXNldFN0YXR1cz4oY3VycmVudCk7Ci0gICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMg
b3RoZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxHcmFwaGljc1Jlc2V0U3RhdHVzPihv
dGhlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBHcmFwaGljc1Jlc2V0U3RhdHVzIGN1cnJlbnRQYWNrZWQgPSBGcm9t
R0w8R3JhcGhpY3NSZXNldFN0YXR1cz4oY3VycmVudCk7CisgICAgICAgIEdyYXBoaWNzUmVzZXRT
dGF0dXMgb3RoZXJQYWNrZWQgICA9IEZyb21HTDxHcmFwaGljc1Jlc2V0U3RhdHVzPihvdGhlcik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUxv
c2VDb250ZXh0Q0hST01JVU0oY29udGV4dCwgY3VycmVudFBhY2tlZCwgb3RoZXJQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNjc4OSw4ICsyNjM1NSw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UyREV4dGVybmFsQU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJn
ZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTJERXh0ZXJuYWxB
TkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
CkBAIC0yNjgxNCw4ICsyNjM4MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgSW52YWxpZGF0ZVRleHR1
cmVBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW52YWxp
ZGF0ZVRleHR1cmVBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMjY4NDQsOCArMjY0MTAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRl
eEltYWdlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRUZXhJbWFnZUFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSk7CkBAIC0yNjg3NSw3ICsyNjQ0MSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
IFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdMRShjb250ZXh0LCB0YXJnZXQsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSk7CkBAIC0yNjg4Nyw0ICsyNjQ1Myw2NCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldFJlbmRlcmJ1ZmZlckltYWdlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogICAgIH0KIH0KKwordm9pZCBHTF9B
UElFTlRSWSBJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xJbXBvcnRNZW1v
cnlaaXJjb25IYW5kbGVBTkdMRSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1l
bW9yeSA9ICV1LCBHTHVpbnQ2NCBzaXplID0gJWxsdSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywg
R0x1aW50ICIKKyAgICAgICAgICAiaGFuZGxlID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUpLAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRs
ZVR5cGUpLCBoYW5kbGUpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7CisgICAgICAgIE1lbW9yeU9i
amVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1l
bW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxIYW5kbGVUeXBlPihoYW5kbGVU
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUoY29udGV4dCwgbWVtb3J5UGFja2VkLCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlVHlwZVBhY2tlZCwgaGFuZGxlKSk7CisgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aW1wb3J0TWVtb3J5
WmlyY29uSGFuZGxlKG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwgaGFuZGxl
KTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEltcG9ydE1lbW9yeVppcmNvbkhh
bmRsZUFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWVtb3J5UGFja2VkLCBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZVR5cGVQYWNrZWQsIGhhbmRsZSk7CisgICAgfQorfQor
Cit2b2lkIEdMX0FQSUVOVFJZIEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzZW1hcGhvcmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbElt
cG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMZW51bSBoYW5kbGVUeXBlID0gJXMsIEdMdWludCBo
YW5kbGUgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5cGUpLAorICAg
ICAgICAgIGhhbmRsZSk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgU2VtYXBob3Jl
SUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2Vt
YXBob3JlSUQ+KHNlbWFwaG9yZSk7CisgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRsZVR5
cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBo
YW5kbGVUeXBlUGFja2VkLCBoYW5kbGUpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5pbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGUo
c2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLCBoYW5kbGUpOworICAgICAgICB9Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlVHlwZVBhY2tlZCwgaGFuZGxlKTsKKyAgICB9Cit9CiB9ICAvLyBuYW1lc3BhY2Ug
Z2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50
cnlfcG9pbnRzX2dsZXNfZXh0X2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfZXh0X2F1dG9nZW4uaAppbmRleCBkZjdiMWEx
NTRjYzcyY2QwOGE5YjI1MGU1OWZlYWU2MzdlNjEwMDZhLi43YjUyNzQ0ZjMzNDRiZTU5NmNhNGE2
ZjNmMWM4MTU5NmEzYzEzYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzX2V4dF9hdXRvZ2VuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0
b2dlbi5oCkBAIC0xMjAsNiArMTIwLDEyIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291
bnQpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2aXNvckFO
R0xFKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOwogCisvLyBHTF9BTkdMRV9tZW1vcnlf
b2JqZWN0X2Z1Y2hzaWEKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEltcG9ydE1lbW9y
eVppcmNvbkhhbmRsZUFOR0xFKEdMdWludCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKTsKKwogLy8gR0xfQU5HTEVfbXVs
dGlfZHJhdwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3QXJyYXlzQU5H
TEUoR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqZmlyc3RzLApAQCAtNTE5LDYgKzUyNSwxMSBAQCBBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUo
R0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKTsK
IAorLy8gR0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKEdMdWludCBzZW1hcGhvcmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOworCiAvLyBH
TF9BTkdMRV90ZXh0dXJlX2V4dGVybmFsX3VwZGF0ZQogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLApA
QCAtNTkwLDk4ICs2MDEsMTAgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1
YlRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCiAKIC8vIEdMX0NIUk9NSVVNX2ZyYW1l
YnVmZmVyX21peGVkX3NhbXBsZXMKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVy
YWdlTW9kdWxhdGlvbkNIUk9NSVVNKEdMZW51bSBjb21wb25lbnRzKTsKLUFOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRmQ0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUsIGNv
bnN0IEdMZmxvYXQgKm1hdHJpeCk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBNYXRy
aXhMb2FkSWRlbnRpdHlDSFJPTUlVTShHTGVudW0gbWF0cml4TW9kZSk7CiAKIC8vIEdMX0NIUk9N
SVVNX2xvc2VfY29udGV4dAogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgTG9zZUNvbnRl
eHRDSFJPTUlVTShHTGVudW0gY3VycmVudCwgR0xlbnVtIG90aGVyKTsKIAotLy8gR0xfQ0hST01J
VU1fcGF0aF9yZW5kZXJpbmcKLUFOR0xFX0VYUE9SVCBHTHVpbnQgR0xfQVBJRU5UUlkgR2VuUGF0
aHNDSFJPTUlVTShHTHNpemVpIHJhbmdlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IERlbGV0ZVBhdGhzQ0hST01JVU0oR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKTsKLUFOR0xF
X0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgp
OwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aENvbW1hbmRzQ0hST01JVU0oR0x1
aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3Jk
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0IHZhbHVlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFBhdGhQYXJhbWV0
ZXJpQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwotQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0oR0x1
aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUpOwotQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0oR0x1aW50IHBhdGgsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBt
YXNrKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxGaWxsUGF0aENIUk9N
SVVNKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKTsKLUFOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBh
dGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJN
b2RlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292
ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVN
KEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKLVN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5h
bWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1BTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWQotU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShHTHVpbnQgcHJvZ3Jh
bXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsK
LUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpOwotCiAvLyBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRl
ZAogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYWdEYXRhTG9jYXRpb25FWFQo
R0x1aW50IHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgY29sb3IsCkBAIC03MTAsNiArNjMzLDcgQEAgQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgQmVnaW5RdWVyeUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aWQpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUXVlcmllc0VYVChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqaWRzKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEVuZFF1ZXJ5RVhUKEdMZW51bSB0YXJnZXQpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdMdWludCAqaWRzKTsKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZFWFQoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpk
YXRhKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0dkVY
VChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKIEFOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aXZFWFQoR0x1aW50IGlkLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
UXVlcnlPYmplY3R1aTY0dkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBh
cmFtcyk7CkBAIC03MjEsNiArNjQ1LDIwIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IFF1ZXJ5Q291bnRlckVYVChHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQpOwogLy8gR0xfRVhUX2Ry
YXdfYnVmZmVycwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0J1ZmZlcnNFWFQo
R0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOwogCisvLyBHTF9FWFRfZHJhd19idWZmZXJz
X2luZGV4ZWQKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBh
cmF0ZWlFWFQoR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpOwor
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvbmlFWFQoR0x1aW50IGJ1
ZiwgR0xlbnVtIG1vZGUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK0JsZW5kRnVu
Y1NlcGFyYXRlaUVYVChHTHVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBH
TGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBCbGVuZEZ1bmNpRVhUKEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3Qp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK0NvbG9yTWFza2lFWFQoR0x1aW50IGlu
ZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSk7
CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaUVYVChHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlaUVY
VChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBH
TF9BUElFTlRSWSBJc0VuYWJsZWRpRVhUKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CisK
IC8vIEdMX0VYVF9kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4CiBBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKEdMZW51bSBtb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LApAQCAtODk3LDYgKzgzNSw4IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEltcG9ydFNlbWFwaG9yZUZkRVhUKEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBoYW5kCiAKIC8v
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKIAorLy8gR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fcmd0YworCiAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKIC8v
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtOTg2LDYgKzkyNiwyMCBA
QCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
UyhHTGVudW0gdGFyZ2V0LCBHTGVnbEltYQogCiAvLyBHTF9PRVNfZGVwdGgzMgogCisvLyBHTF9P
RVNfZHJhd19idWZmZXJzX2luZGV4ZWQKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJs
ZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMoR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBtb2RlQWxwaGEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlv
bmlPRVMoR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkKK0JsZW5kRnVuY1NlcGFyYXRlaU9FUyhHTHVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBH
TGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7CitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNpT0VTKEdMdWludCBidWYsIEdMZW51bSBz
cmMsIEdMZW51bSBkc3QpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKK0NvbG9yTWFz
a2lPRVMoR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBi
LCBHTGJvb2xlYW4gYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaU9F
UyhHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgRW5hYmxlaU9FUyhHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworQU5HTEVfRVhQ
T1JUIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRpT0VTKEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCk7CisKIC8vIEdMX09FU19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4CiBBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTKEdMZW51
bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtMTI4OSw3ICsxMjQzLDIxIEBAIEFOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdC
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBCbGVuZEVxdWF0aW9uaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVm
LCBHTGVudW0gbW9kZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0
aW9uaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRp
b25pT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNmYWN0b3IsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRmYWN0b3IpOwpAQCAt
MTMwNCwxMCArMTI3MiwzMCBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1
bmNTZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0
UkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpOworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3Jj
UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0FscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBkc3RBbHBoYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVu
ZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFJHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKTsKIEFOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY2lDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdCk7CitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3QpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgQmxlbmRGdW5jaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0KTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIEJsaXRGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNyY1gwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNyY1kwLApAQCAtMTQwMSw2ICsxMzg5LDE4IEBAIEFOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFza2lDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIGcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBDb2xvck1hc2tpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNraU9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBhKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIENvbG9yUG9pbnRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCkBAIC0xNjM4LDYgKzE2MzgsMTIgQEAgQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgRGlzYWJsZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gY2FwKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERpc2FibGVDbGllbnRTdGF0
ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gYXJyYXkpOwogQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBEaXNhYmxlaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJs
ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZWlPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgpOwogQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgRGlzY2FyZEZyYW1lYnVmZmVyRVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bUF0dGFjaG1lbnRzLApAQCAtMTgwNyw2ICsxODEzLDggQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgRW5hYmxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjYXAp
OwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlQ2xpZW50U3RhdGVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGFycmF5KTsKIEFOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMdWludCBpbmRleCk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBF
bmFibGVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVpRVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVpT0VTQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiBBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBFbmRRdWVyeUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gdGFyZ2V0KTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5RVhU
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpOwogQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgRW5kVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCk7CkBAIC0yMDc1LDYgKzIwODMsOSBAQCBBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBHZXRJbnRlZ2VyNjRpX3ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
IEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpkYXRhKTsKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpkYXRhKTsKIEFOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJpX3ZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LApAQCAtMjQ3NSw2ICsyNDg2LDEy
IEBAIEFOR0xFX0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51CiBBTkdMRV9FWFBPUlQgR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzRW5hYmxlZGlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCk7CitBTkdMRV9FWFBPUlQgR0xib29sZWFuIEdMX0FQSUVO
VFJZIElzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCk7CitBTkdMRV9FWFBPUlQgR0xib29sZWFuIEdM
X0FQSUVOVFJZIElzRW5hYmxlZGlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCk7CiBBTkdMRV9FWFBPUlQgR0xib29s
ZWFuIEdMX0FQSUVOVFJZIElzRmVuY2VOVkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgZmVuY2UpOwogQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZyYW1l
YnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmcmFtZWJ1ZmZlcik7
CiBBTkdMRV9FWFBPUlQgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXJPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKQEAgLTM1NzIsMTM4ICszNTg5LDYgQEAgQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwogQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb21wb25lbnRz
KTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRmQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hdHJpeE1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKm1hdHJpeCk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBN
YXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1hdHJpeE1vZGUpOwotQU5HTEVfRVhQT1JUIEdMdWludCBHTF9B
UElFTlRSWSBHZW5QYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
c2l6ZWkgcmFuZ2UpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUGF0aHND
SFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgcmFuZ2UpOwotQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBHTF9BUElFTlRS
WSBJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0
aCk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoQ29tbWFuZHNDSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpjb29yZHMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aFBhcmFt
ZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHZhbHVlKTsK
LUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFBhdGhQYXJhbWV0ZXJpQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdmFsdWUpOwotQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsdWUpOwotQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxG
aWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBt
YXNrKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxTdHJva2VQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBh
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2sp
OwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3ZlclN0
cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLUFOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci1BTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
KTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZCi1Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJh
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkKLUNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkKLVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVu
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLUFOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZCi1TdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxs
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkKLVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKLVN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsK
LUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZCi1Qcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBn
ZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBDb3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCkBAIC00MzEx
LDYgKzQxOTYsMTUgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVm
ZmVySW1hZ2VBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVs
cyk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBJbXBvcnRNZW1vcnlaaXJjb25IYW5k
bGVBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOworQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5H
TEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBzZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRp
ZiAgLy8gTElCR0xFU1YyX0VOVFJZX1BPSU5UU19HTEVTX0VYVF9BVVRPR0VOX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5j
cHAKaW5kZXggNzcyNTEwNmE0MjE0NjVhZjU3MDkzMmYzMzFhMmY5MjIwMmJkOWVjMS4uZjQwZmI3
N2U3ZThhZDAxZDM3ODgyZTdjMzk2ZmQ5MGYxODQ1ODQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UKIHN0YXRpYyBUTFNJbmRleCB0aHJlYWRUTFMgPSBUTFNfSU5W
QUxJRF9JTkRFWDsKIERlYnVnICpnX0RlYnVnICAgICAgICAgICAgPSBudWxscHRyOwogCi1BTkdM
RV9SRVFVSVJFX0NPTlNUQU5UX0lOSVQgc3RkOjphdG9taWM8c3RkOjptdXRleCAqPiBnX011dGV4
KG51bGxwdHIpOworQU5HTEVfUkVRVUlSRV9DT05TVEFOVF9JTklUIHN0ZDo6YXRvbWljPGFuZ2xl
OjpHbG9iYWxNdXRleCAqPiBnX011dGV4KG51bGxwdHIpOwogc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8ZGVjbHR5cGUoZ19NdXRleCk+Ojp2YWx1ZSwKICAgICAg
ICAgICAgICAgImdsb2JhbCBtdXRleCBpcyBub3QgdHJpdmlhbGx5IGRlc3RydWN0aWJsZSIpOwog
CkBAIC03NSw4ICs3NSw4IEBAIHZvaWQgQWxsb2NhdGVNdXRleCgpCiB7CiAgICAgaWYgKGdfTXV0
ZXggPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6Om11dGV4
PiBuZXdNdXRleChuZXcgc3RkOjptdXRleCgpKTsKLSAgICAgICAgc3RkOjptdXRleCAqZXhwZWN0
ZWQgPSBudWxscHRyOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8YW5nbGU6Okdsb2JhbE11dGV4
PiBuZXdNdXRleChuZXcgYW5nbGU6Okdsb2JhbE11dGV4KCkpOworICAgICAgICBhbmdsZTo6R2xv
YmFsTXV0ZXggKmV4cGVjdGVkID0gbnVsbHB0cjsKICAgICAgICAgaWYgKGdfTXV0ZXguY29tcGFy
ZV9leGNoYW5nZV9zdHJvbmcoZXhwZWN0ZWQsIG5ld011dGV4LmdldCgpKSkKICAgICAgICAgewog
ICAgICAgICAgICAgbmV3TXV0ZXgucmVsZWFzZSgpOwpAQCAtODYsNyArODYsNyBAQCB2b2lkIEFs
bG9jYXRlTXV0ZXgoKQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0ZDo6bXV0ZXgg
JkdldEdsb2JhbE11dGV4KCkKK2FuZ2xlOjpHbG9iYWxNdXRleCAmR2V0R2xvYmFsTXV0ZXgoKQog
ewogICAgIEFsbG9jYXRlTXV0ZXgoKTsKICAgICByZXR1cm4gKmdfTXV0ZXg7CkBAIC0xNTcsMTAg
KzE1NywxMCBAQCB2b2lkIERlYWxsb2NhdGVEZWJ1ZygpCiAKIHZvaWQgRGVhbGxvY2F0ZU11dGV4
KCkKIHsKLSAgICBzdGQ6Om11dGV4ICptdXRleCA9IGdfTXV0ZXguZXhjaGFuZ2UobnVsbHB0cik7
CisgICAgYW5nbGU6Okdsb2JhbE11dGV4ICptdXRleCA9IGdfTXV0ZXguZXhjaGFuZ2UobnVsbHB0
cik7CiAgICAgewogICAgICAgICAvLyBXYWl0IGZvciB0aGUgbXV0ZXggdG8gYmVjb21lIHJlbGVh
c2VkIGJ5IG90aGVyIHRocmVhZHMgYmVmb3JlIGRlbGV0aW5nLgotICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8c3RkOjptdXRleD4gbG9jaygqbXV0ZXgpOworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
YW5nbGU6Okdsb2JhbE11dGV4PiBsb2NrKCptdXRleCk7CiAgICAgfQogICAgIFNhZmVEZWxldGUo
bXV0ZXgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9nbG9iYWxfc3RhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvZ2xvYmFsX3N0YXRlLmgKaW5kZXggMzY2N2ZhNThkMTExNzU2ODgzZmUwMzU0NmI3NjgwZDhk
ZTBlNWQ5My4uNTg3N2I3YmUxYjQ2ZWQwZjc0ZjEwZTRmNGNlOWM0NGRmNzE3M2E2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0
ZS5oCkBAIC0xNiwxOSArMTYsMjQgQEAKIAogI2luY2x1ZGUgPG11dGV4PgogCituYW1lc3BhY2Ug
YW5nbGUKK3sKK3VzaW5nIEdsb2JhbE11dGV4ID0gc3RkOjpyZWN1cnNpdmVfbXV0ZXg7Cit9ICAv
LyBuYW1lc3BhY2UgYW5nbGUKKwogbmFtZXNwYWNlIGVnbAogewogY2xhc3MgRGVidWc7CiBjbGFz
cyBUaHJlYWQ7CiAKLXN0ZDo6bXV0ZXggJkdldEdsb2JhbE11dGV4KCk7CithbmdsZTo6R2xvYmFs
TXV0ZXggJkdldEdsb2JhbE11dGV4KCk7CiBUaHJlYWQgKkdldEN1cnJlbnRUaHJlYWQoKTsKIERl
YnVnICpHZXREZWJ1ZygpOwogdm9pZCBTZXRDb250ZXh0Q3VycmVudChUaHJlYWQgKnRocmVhZCwg
Z2w6OkNvbnRleHQgKmNvbnRleHQpOwogfSAgLy8gbmFtZXNwYWNlIGVnbAogCiAjZGVmaW5lIEFO
R0xFX1NDT1BFRF9HTE9CQUxfTE9DSygpIFwKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRl
eD4gZ2xvYmFsTXV0ZXhMb2NrKGVnbDo6R2V0R2xvYmFsTXV0ZXgoKSkKKyAgICBzdGQ6OmxvY2tf
Z3VhcmQ8YW5nbGU6Okdsb2JhbE11dGV4PiBnbG9iYWxNdXRleExvY2soZWdsOjpHZXRHbG9iYWxN
dXRleCgpKQogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTU2LDEwICs2MSwxMCBAQCBBTkdMRV9JTkxJ
TkUgQ29udGV4dCAqR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkKICAgICByZXR1cm4gdGhyZWFkLT5n
ZXRWYWxpZENvbnRleHQoKTsKIH0KIAotQU5HTEVfSU5MSU5FIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gR2V0U2hhcmVHcm91cExvY2soY29uc3QgQ29udGV4dCAqY29udGV4dCkKK0FOR0xF
X0lOTElORSBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gR2V0U2hhcmVHcm91
cExvY2soY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKLSAgICByZXR1cm4gY29udGV4dC0+aXNT
aGFyZWQoKSA/IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4oZWdsOjpHZXRHbG9iYWxNdXRl
eCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PigpOworICAgIHJldHVybiBjb250ZXh0LT5pc1NoYXJlZCgpID8gc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+KGVnbDo6R2V0R2xvYmFsTXV0ZXgoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PigpOwogfQogfSAgLy8gbmFtZXNwYWNlIGdsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyX2F1dG9nZW4uY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5jcHAK
aW5kZXggMjVhMzI4OGNhNzg1MDQ1ODNlYzhjMzk0YzViOThjZjdkMzY2NTc4OS4uZjU5OTEzNTk5
NGJmYWY5NjExNjI5OGUzMWQ0NjU3NjBhN2QxZDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5jcHAK
QEAgLTI4NjYsNiArMjg2NiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiAgICAgcmV0dXJuIGdsOjpW
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpOwogfQogCisvLyBHTF9BTkdM
RV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xJbXBvcnRNZW1vcnla
aXJjb25IYW5kbGVBTkdMRShHTHVpbnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRs
ZSkKK3sKKyAgICByZXR1cm4gZ2w6OkltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKG1lbW9y
eSwgc2l6ZSwgaGFuZGxlVHlwZSwgaGFuZGxlKTsKK30KKwogLy8gR0xfQU5HTEVfbXVsdGlfZHJh
dwogdm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJhd0FycmF5c0FOR0xFKEdMZW51bSBtb2RlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpmaXJz
dHMsCkBAIC0zNTYzLDYgKzM1NzIsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2Jq
ZWN0dWk2NHZSb2J1c3RBTkdMRShHTHVpbnQgaWQsCiAgICAgcmV0dXJuIGdsOjpHZXRRdWVyeU9i
amVjdHVpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiB9CiAKKy8vIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhCit2b2lkIEdMX0FQSUVOVFJZIGds
SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUoR0x1aW50IHNlbWFwaG9yZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaGFu
ZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBnbDo6SW1wb3J0U2VtYXBob3JlWmly
Y29uSGFuZGxlQU5HTEUoc2VtYXBob3JlLCBoYW5kbGVUeXBlLCBoYW5kbGUpOworfQorCiAvLyBH
TF9BTkdMRV90ZXh0dXJlX2V4dGVybmFsX3VwZGF0ZQogdm9pZCBHTF9BUElFTlRSWSBnbFRleElt
YWdlMkRFeHRlcm5hbEFOR0xFKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCkBAIC0zNjg0LDIwNSArMzcwMSwxMiBA
QCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xlbnVtIGNv
bXBvbmVudHMpCiAgICAgcmV0dXJuIGdsOjpDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShjb21w
b25lbnRzKTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xl
bnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCkKLXsKLSAgICByZXR1cm4gZ2w6
Ok1hdHJpeExvYWRmQ0hST01JVU0obWF0cml4TW9kZSwgbWF0cml4KTsKLX0KLQotdm9pZCBHTF9B
UElFTlRSWSBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMZW51bSBtYXRyaXhNb2RlKQot
ewotICAgIHJldHVybiBnbDo6TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0obWF0cml4TW9kZSk7
Ci19Ci0KIC8vIEdMX0NIUk9NSVVNX2xvc2VfY29udGV4dAogdm9pZCBHTF9BUElFTlRSWSBnbExv
c2VDb250ZXh0Q0hST01JVU0oR0xlbnVtIGN1cnJlbnQsIEdMZW51bSBvdGhlcikKIHsKICAgICBy
ZXR1cm4gZ2w6Okxvc2VDb250ZXh0Q0hST01JVU0oY3VycmVudCwgb3RoZXIpOwogfQogCi0vLyBH
TF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotR0x1aW50IEdMX0FQSUVOVFJZIGdsR2VuUGF0aHND
SFJPTUlVTShHTHNpemVpIHJhbmdlKQotewotICAgIHJldHVybiBnbDo6R2VuUGF0aHNDSFJPTUlV
TShyYW5nZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKEdM
dWludCBmaXJzdCwgR0xzaXplaSByYW5nZSkKLXsKLSAgICByZXR1cm4gZ2w6OkRlbGV0ZVBhdGhz
Q0hST01JVU0oZmlyc3QsIHJhbmdlKTsKLX0KLQotR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNQ
YXRoQ0hST01JVU0oR0x1aW50IHBhdGgpCi17Ci0gICAgcmV0dXJuIGdsOjpJc1BhdGhDSFJPTUlV
TShwYXRoKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKEdM
dWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCi17Ci0gICAgcmV0dXJuIGdsOjpQYXRo
Q29tbWFuZHNDSFJPTUlVTShwYXRoLCBudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3Jkcywg
Y29vcmRUeXBlLCBjb29yZHMpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsUGF0aFBhcmFtZXRl
cmZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQotewot
ICAgIHJldHVybiBnbDo6UGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBwbmFtZSwgdmFsdWUp
OwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShHTHVpbnQg
cGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkKLXsKLSAgICByZXR1cm4gZ2w6OlBhdGhQ
YXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgcG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHTF9BUElF
TlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnZhbHVlKQotewotICAgIHJldHVybiBnbDo6R2V0UGF0aFBhcmFtZXRlcmZ2
Q0hST01JVU0ocGF0aCwgcG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbEdl
dFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50
ICp2YWx1ZSkKLXsKLSAgICByZXR1cm4gZ2w6OkdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKHBh
dGgsIHBuYW1lLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoU3RlbmNpbEZ1
bmNDSFJPTUlVTShHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKLXsKLSAgICBy
ZXR1cm4gZ2w6OlBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKGZ1bmMsIHJlZiwgbWFzayk7Ci19Ci0K
LXZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwg
R0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKLXsKLSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxG
aWxsUGF0aENIUk9NSVVNKHBhdGgsIGZpbGxNb2RlLCBtYXNrKTsKLX0KLQotdm9pZCBHTF9BUElF
TlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMaW50IHJlZmVy
ZW5jZSwgR0x1aW50IG1hc2spCi17Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2lsU3Ryb2tlUGF0aENI
Uk9NSVVNKHBhdGgsIHJlZmVyZW5jZSwgbWFzayk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xD
b3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0g
ICAgcmV0dXJuIGdsOjpDb3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgY292ZXJNb2RlKTsKLX0K
LQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBwYXRo
LCBHTGVudW0gY292ZXJNb2RlKQotewotICAgIHJldHVybiBnbDo6Q292ZXJTdHJva2VQYXRoQ0hS
T01JVU0ocGF0aCwgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gY292ZXJNb2RlKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQ
YXRoQ0hST01JVU0ocGF0aCwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQg
R0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQotewotICAgIHJl
dHVybiBnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCByZWZlcmVu
Y2UsIG1hc2ssIGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKQotewotICAgIHJldHVybiBnbDo6Q292ZXJGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBjb3Zlck1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICByZXR1cm4gZ2w6OkNv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0
aHMsIHBhdGhCYXNlLCBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12
b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNp
emVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0
aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbFN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRo
QmFzZSwgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12
b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXpl
aSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIHRy
YW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUs
IHBhdGhzLCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgcmV0dXJuIGds
OjpTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKG51bVBhdGhzLCBw
YXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgR0xfQVBJ
RU5UUlkgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0oR0x1aW50IHByb2dyYW1z
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQotewotICAgIHJldHVybiBnbDo6QmluZEZy
YWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKHByb2dyYW1zLCBsb2NhdGlvbiwgbmFtZSk7Ci19
Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlV
TShHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21w
b25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXsKLSAgICByZXR1cm4gZ2w6OlByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKHByb2dyYW0sIGxvY2F0aW9uLCBnZW5Nb2RlLCBj
b21wb25lbnRzLCBjb2VmZnMpOwotfQotCiAvLyBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZAog
dm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUKEdMdWludCBwcm9ncmFt
LCBHTHVpbnQgY29sb3IsIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKQEAgLTM5NTQsNiArMzc3OCwx
MSBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuUXVlcmllc0VYVChHTHNpemVpIG4sIEdMdWludCAq
aWRzKQogICAgIHJldHVybiBnbDo6R2VuUXVlcmllc0VYVChuLCBpZHMpOwogfQogCit2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0SW50ZWdlcjY0dkVYVChHTGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEp
Cit7CisgICAgcmV0dXJuIGdsOjpHZXRJbnRlZ2VyNjR2RVhUKHBuYW1lLCBkYXRhKTsKK30KKwog
dm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVChHTHVpbnQgaWQsIEdMZW51
bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIHJldHVybiBnbDo6R2V0UXVlcnlPYmpl
Y3RpNjR2RVhUKGlkLCBwbmFtZSwgcGFyYW1zKTsKQEAgLTM5OTUsNiArMzgyNCw0OCBAQCB2b2lk
IEdMX0FQSUVOVFJZIGdsRHJhd0J1ZmZlcnNFWFQoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1
ZnMpCiAgICAgcmV0dXJuIGdsOjpEcmF3QnVmZmVyc0VYVChuLCBidWZzKTsKIH0KIAorLy8gR0xf
RVhUX2RyYXdfYnVmZmVyc19pbmRleGVkCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlv
blNlcGFyYXRlaUVYVChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBo
YSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQoYnVmLCBtb2Rl
UkdCLCBtb2RlQWxwaGEpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbmlF
WFQoR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCit7CisgICAgcmV0dXJuIGdsOjpCbGVuZEVxdWF0
aW9uaUVYVChidWYsIG1vZGUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZCitnbEJsZW5kRnVuY1Nl
cGFyYXRlaUVYVChHTHVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVu
dW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRnVu
Y1NlcGFyYXRlaUVYVChidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwor
fQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jaUVYVChHTHVpbnQgYnVmLCBHTGVudW0g
c3JjLCBHTGVudW0gZHN0KQoreworICAgIHJldHVybiBnbDo6QmxlbmRGdW5jaUVYVChidWYsIHNy
YywgZHN0KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbENvbG9yTWFza2lFWFQoR0x1aW50IGlu
ZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSkK
K3sKKyAgICByZXR1cm4gZ2w6OkNvbG9yTWFza2lFWFQoaW5kZXgsIHIsIGcsIGIsIGEpOworfQor
Cit2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZWlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4KQoreworICAgIHJldHVybiBnbDo6RGlzYWJsZWlFWFQodGFyZ2V0LCBpbmRleCk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVpRVhUKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCkKK3sKKyAgICByZXR1cm4gZ2w6OkVuYWJsZWlFWFQodGFyZ2V0LCBpbmRleCk7Cit9CisKK0dM
Ym9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4KQoreworICAgIHJldHVybiBnbDo6SXNFbmFibGVkaUVYVCh0YXJnZXQsIGluZGV4KTsK
K30KKwogLy8gR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKEdMZW51bSBtb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTQzMDQs
NiArNDE3NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbXBvcnRTZW1hcGhvcmVGZEVYVChHTHVp
bnQgc2VtYXBob3JlLCBHTGVudW0gaGFuZGxlVHlwZSwgR0xpCiAKIC8vIEdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEKIAorLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0Ywor
CiAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKIC8vIEdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtNDQ4MSw2ICs0MzU0LDQ4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTGVudW0gdGFyZ2V0LCBHTGVnbElt
YWdlT0VTIGltYWdlCiAKIC8vIEdMX09FU19kZXB0aDMyCiAKKy8vIEdMX09FU19kcmF3X2J1ZmZl
cnNfaW5kZXhlZAordm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMo
R0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgcmV0
dXJuIGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKGJ1ZiwgbW9kZVJHQiwgbW9kZUFscGhh
KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25pT0VTKEdMdWludCBidWYs
IEdMZW51bSBtb2RlKQoreworICAgIHJldHVybiBnbDo6QmxlbmRFcXVhdGlvbmlPRVMoYnVmLCBt
b2RlKTsKK30KKwordm9pZCBHTF9BUElFTlRSWQorZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMoR0x1
aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBH
TGVudW0gZHN0QWxwaGEpCit7CisgICAgcmV0dXJuIGdsOjpCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMo
YnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKK30KKwordm9pZCBHTF9B
UElFTlRSWSBnbEJsZW5kRnVuY2lPRVMoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRz
dCkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRnVuY2lPRVMoYnVmLCBzcmMsIGRzdCk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xDb2xvck1hc2tpT0VTKEdMdWludCBpbmRleCwgR0xib29sZWFu
IHIsIEdMYm9vbGVhbiBnLCBHTGJvb2xlYW4gYiwgR0xib29sZWFuIGEpCit7CisgICAgcmV0dXJu
IGdsOjpDb2xvck1hc2tpT0VTKGluZGV4LCByLCBnLCBiLCBhKTsKK30KKwordm9pZCBHTF9BUElF
TlRSWSBnbERpc2FibGVpT0VTKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICBy
ZXR1cm4gZ2w6OkRpc2FibGVpT0VTKHRhcmdldCwgaW5kZXgpOworfQorCit2b2lkIEdMX0FQSUVO
VFJZIGdsRW5hYmxlaU9FUyhHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgcmV0
dXJuIGdsOjpFbmFibGVpT0VTKHRhcmdldCwgaW5kZXgpOworfQorCitHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgZ2xJc0VuYWJsZWRpT0VTKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAg
ICByZXR1cm4gZ2w6OklzRW5hYmxlZGlPRVModGFyZ2V0LCBpbmRleCk7Cit9CisKIC8vIEdMX09F
U19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4CiB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0VsZW1l
bnRzQmFzZVZlcnRleE9FUyhHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC01MTM1LDExICs1MDUwLDM3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCiAgICAgcmV0dXJuIGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVpQ29u
dGV4dEFOR0xFKGN0eCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpOwogfQogCit2b2lkIEdMX0FQ
SUVOVFJZIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSkK
K3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUo
Y3R4LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xC
bGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKQoreworICAgIHJl
dHVybiBnbDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FU0NvbnRleHRBTkdMRShjdHgsIGJ1Ziwg
bW9kZVJHQiwgbW9kZUFscGhhKTsKK30KKwogdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRp
b25pQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBtb2Rl
KQogewogICAgIHJldHVybiBnbDo6QmxlbmRFcXVhdGlvbmlDb250ZXh0QU5HTEUoY3R4LCBidWYs
IG1vZGUpOwogfQogCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbmlFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCit7CisgICAg
cmV0dXJuIGdsOjpCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRShjdHgsIGJ1ZiwgbW9kZSk7
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSkKK3sKKyAgICByZXR1cm4g
Z2w6OkJsZW5kRXF1YXRpb25pT0VTQ29udGV4dEFOR0xFKGN0eCwgYnVmLCBtb2RlKTsKK30KKwog
dm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCiB7CiAgICAgcmV0dXJuIGdsOjpCbGVu
ZEZ1bmNDb250ZXh0QU5HTEUoY3R4LCBzZmFjdG9yLCBkZmFjdG9yKTsKQEAgLTUxNjUsMTEgKzUx
MDYsNDEgQEAgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlaUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIHJldHVybiBnbDo6QmxlbmRGdW5jU2VwYXJhdGVpQ29u
dGV4dEFOR0xFKGN0eCwgYnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsK
IH0KIAordm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjUkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRnVuY1NlcGFy
YXRlaUVYVENvbnRleHRBTkdMRShjdHgsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBk
c3RBbHBoYSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRz
dFJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHNyY0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpCit7CisgICAgcmV0dXJuIGdsOjpCbGVu
ZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUoY3R4LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwgZHN0QWxwaGEpOworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jaUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVu
dW0gZHN0KQogewogICAgIHJldHVybiBnbDo6QmxlbmRGdW5jaUNvbnRleHRBTkdMRShjdHgsIGJ1
Ziwgc3JjLCBkc3QpOwogfQogCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jaUVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0g
ZHN0KQoreworICAgIHJldHVybiBnbDo6QmxlbmRGdW5jaUVYVENvbnRleHRBTkdMRShjdHgsIGJ1
Ziwgc3JjLCBkc3QpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jaU9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0g
ZHN0KQoreworICAgIHJldHVybiBnbDo6QmxlbmRGdW5jaU9FU0NvbnRleHRBTkdMRShjdHgsIGJ1
Ziwgc3JjLCBkc3QpOworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsQmxpdEZyYW1lYnVmZmVyQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwKQEAgLTUzNjQsNiArNTMzNSwyNiBA
QCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JNYXNraUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgIHJldHVybiBnbDo6Q29sb3JNYXNraUNvbnRleHRBTkdMRShjdHgsIGluZGV4LCBy
LCBnLCBiLCBhKTsKIH0KIAordm9pZCBHTF9BUElFTlRSWSBnbENvbG9yTWFza2lFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBhKQoreworICAgIHJldHVybiBnbDo6Q29s
b3JNYXNraUVYVENvbnRleHRBTkdMRShjdHgsIGluZGV4LCByLCBnLCBiLCBhKTsKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBnbENvbG9yTWFza2lPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBhKQoreworICAgIHJldHVybiBnbDo6Q29sb3JNYXNraU9FU0NvbnRleHRBTkdM
RShjdHgsIGluZGV4LCByLCBnLCBiLCBhKTsKK30KKwogdm9pZCBHTF9BUElFTlRSWSBnbENvbG9y
UG9pbnRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKQEAgLTU4MTYsNiArNTgwNywx
NiBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50CiAgICAgcmV0dXJuIGdsOjpEaXNhYmxlaUNvbnRl
eHRBTkdMRShjdHgsIHRhcmdldCwgaW5kZXgpOwogfQogCit2b2lkIEdMX0FQSUVOVFJZIGdsRGlz
YWJsZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4KQoreworICAgIHJldHVybiBnbDo6RGlzYWJsZWlFWFRDb250ZXh0QU5HTEUoY3R4
LCB0YXJnZXQsIGluZGV4KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGVpT0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkK
K3sKKyAgICByZXR1cm4gZ2w6OkRpc2FibGVpT0VTQ29udGV4dEFOR0xFKGN0eCwgdGFyZ2V0LCBp
bmRleCk7Cit9CisKIHZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50
cywKQEAgLTYxMzksNiArNjE0MCwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5hYmxlaUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaQogICAgIHJl
dHVybiBnbDo6RW5hYmxlaUNvbnRleHRBTkdMRShjdHgsIHRhcmdldCwgaW5kZXgpOwogfQogCit2
b2lkIEdMX0FQSUVOVFJZIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIGdsOjpFbmFibGVp
RVhUQ29udGV4dEFOR0xFKGN0eCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgZ2xFbmFibGVpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICByZXR1cm4gZ2w6OkVuYWJsZWlPRVNDb250ZXh0QU5H
TEUoY3R4LCB0YXJnZXQsIGluZGV4KTsKK30KKwogdm9pZCBHTF9BUElFTlRSWSBnbEVuZFF1ZXJ5
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgcmV0
dXJuIGdsOjpFbmRRdWVyeUNvbnRleHRBTkdMRShjdHgsIHRhcmdldCk7CkBAIC02Njc5LDYgKzY2
OTAsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXI2NHZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGkKICAgICByZXR1cm4gZ2w6OkdldEludGVn
ZXI2NHZDb250ZXh0QU5HTEUoY3R4LCBwbmFtZSwgZGF0YSk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSkKK3sKKyAgICByZXR1cm4gZ2w6OkdldEludGVnZXI2NHZF
WFRDb250ZXh0QU5HTEUoY3R4LCBwbmFtZSwgZGF0YSk7Cit9CisKIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRJbnRlZ2VyaV92Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LApAQCAt
NzQ1MCw2ICs3NDY2LDE2IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6
OklzRW5hYmxlZGlDb250ZXh0QU5HTEUoY3R4LCB0YXJnZXQsIGluZGV4KTsKIH0KIAorR0xib29s
ZWFuIEdMX0FQSUVOVFJZIGdsSXNFbmFibGVkaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIGdsOjpJc0Vu
YWJsZWRpRVhUQ29udGV4dEFOR0xFKGN0eCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKK0dMYm9vbGVh
biBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIHJldHVybiBnbDo6SXNFbmFi
bGVkaU9FU0NvbnRleHRBTkdMRShjdHgsIHRhcmdldCwgaW5kZXgpOworfQorCiBHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgZ2xJc0ZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1
aW50IGZlbmNlKQogewogICAgIHJldHVybiBnbDo6SXNGZW5jZU5WQ29udGV4dEFOR0xFKGN0eCwg
ZmVuY2UpOwpAQCAtOTU2OSwyNDMgKzk1OTUsNiBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJh
Z2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbgog
ICAgIHJldHVybiBnbDo6Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoY3R4
LCBjb21wb25lbnRzKTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmQ0hST01J
VU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXRyaXhNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
bWF0cml4KQotewotICAgIHJldHVybiBnbDo6TWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdM
RShjdHgsIG1hdHJpeE1vZGUsIG1hdHJpeCk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xNYXRy
aXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gbWF0cml4TW9kZSkKLXsKLSAgICByZXR1cm4gZ2w6Ok1hdHJpeExvYWRJZGVudGl0eUNIUk9N
SVVNQ29udGV4dEFOR0xFKGN0eCwgbWF0cml4TW9kZSk7Ci19Ci0KLUdMdWludCBHTF9BUElFTlRS
WSBnbEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXpl
aSByYW5nZSkKLXsKLSAgICByZXR1cm4gZ2w6OkdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUo
Y3R4LCByYW5nZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQYXRoc0NIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5n
ZSkKLXsKLSAgICByZXR1cm4gZ2w6OkRlbGV0ZVBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUoY3R4
LCBmaXJzdCwgcmFuZ2UpOwotfQotCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1BhdGhDSFJP
TUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCkKLXsKLSAgICBy
ZXR1cm4gZ2w6OklzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgcGF0aCk7Ci19Ci0KLXZv
aWQgR0xfQVBJRU5UUlkgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCi17Ci0gICAgcmV0
dXJuIGdsOjpQYXRoQ29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHBhdGgsIG51bUNv
bW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29vcmRUeXBlLCBjb29yZHMpOwotfQotCi12b2lkIEdMX0FQ
SUVOVFJZIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHZhbHVlKQotewotICAgIHJldHVybiBn
bDo6UGF0aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHBhdGgsIHBuYW1lLCB2
YWx1ZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZh
bHVlKQotewotICAgIHJldHVybiBnbDo6UGF0aFBhcmFtZXRlcmlDSFJPTUlVTUNvbnRleHRBTkdM
RShjdHgsIHBhdGgsIHBuYW1lLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQ
YXRoUGFyYW1ldGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSkKLXsKLSAgICByZXR1
cm4gZ2w6OkdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgcGF0aCwg
cG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJp
dkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZSkKLXsKLSAgICByZXR1cm4gZ2w6OkdldFBhdGhQ
YXJhbWV0ZXJpdkNIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgcGF0aCwgcG5hbWUsIHZhbHVlKTsK
LX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQot
ewotICAgIHJldHVybiBnbDo6UGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUoY3R4
LCBmdW5jLCByZWYsIG1hc2spOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQ
YXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2spCi17Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2lsRmlsbFBh
dGhDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHBhdGgsIGZpbGxNb2RlLCBtYXNrKTsKLX0KLQot
dm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2spCi17Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFKGN0eCwgcGF0aCwgcmVmZXJlbmNlLCBtYXNrKTsKLX0KLQotdm9pZCBHTF9BUElFTlRS
WSBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICByZXR1cm4gZ2w6OkNvdmVyRmlsbFBhdGhD
SFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHBhdGgsIGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgR0xf
QVBJRU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgcmV0dXJuIGdsOjpD
b3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHBhdGgsIGNvdmVyTW9kZSk7
Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlV
TUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y292ZXJNb2RlKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUoY3R4LCBwYXRoLCBmaWxsTW9kZSwgbWFzaywgY292ZXJNb2RlKTsK
LX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01J
VU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHBhdGgsIHJlZmVyZW5jZSwgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1W
YWx1ZXMpCi17Ci0gICAgcmV0dXJuIGdsOjpDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1D
b250ZXh0QU5HTEUoCi0gICAgICAgIGN0eCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywg
cGF0aEJhc2UsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLX0K
LQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KQotewotICAgIHJldHVybiBnbDo6Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250
ZXh0QU5HTEUoCi0gICAgICAgIGN0eCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2UsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQot
dm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgcmV0dXJuIGdsOjpT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgbnVtUGF0
aCwgcGF0aE5hbWVUeXBlLCBwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJhc2UsIHJlZmVyZW5jZSwgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElF
TlRSWSBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRo
QmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU1Db250ZXh0QU5HTEUoY3R4LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
dGhCYXNlLCBmaWxsTW9kZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVl
cyk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkKLWdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Q
YXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRo
QmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAg
ICByZXR1cm4gZ2w6OlN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29u
dGV4dEFOR0xFKAotICAgICAgICBjdHgsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBw
YXRoQmFzZSwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAg
ICAgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWQotZ2xTdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKAotICAgICAg
ICBjdHgsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgcmVmZXJlbmNl
LCBtYXNrLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgIHRyYW5zZm9ybVZhbHVl
cyk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hS
T01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dy
YW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KQotewotICAgIHJldHVybiBnbDo6QmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNQ29u
dGV4dEFOR0xFKGN0eCwgcHJvZ3JhbXMsIGxvY2F0aW9uLCBuYW1lKTsKLX0KLQotdm9pZCBHTF9B
UElFTlRSWSBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCi17Ci0gICAg
cmV0dXJuIGdsOjpQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdM
RShjdHgsIHByb2dyYW0sIGxvY2F0aW9uLCBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cywgY29l
ZmZzKTsKLX0KLQogdm9pZCBHTF9BUElFTlRSWSBnbENvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLApAQCAtMTA4
MTgsNCArMTA2MDcsMjEgQEAgdm9pZCBHTF9BUElFTlRSWSBnbEdldFJlbmRlcmJ1ZmZlckltYWdl
QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICByZXR1cm4gZ2w6OkdldFJl
bmRlcmJ1ZmZlckltYWdlQU5HTEVDb250ZXh0QU5HTEUoY3R4LCB0YXJnZXQsIGZvcm1hdCwgdHlw
ZSwgcGl4ZWxzKTsKIH0KIAordm9pZCBHTF9BUElFTlRSWSBnbEltcG9ydE1lbW9yeVppcmNvbkhh
bmRsZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBoYW5kbGUpCit7CisgICAgcmV0dXJuIGdsOjpJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdM
RUNvbnRleHRBTkdMRShjdHgsIG1lbW9yeSwgc2l6ZSwgaGFuZGxlVHlwZSwgaGFuZGxlKTsKK30K
Kwordm9pZCBHTF9BUElFTlRSWSBnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIHJl
dHVybiBnbDo6SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUoY3R4
LCBzZW1hcGhvcmUsIGhhbmRsZVR5cGUsIGhhbmRsZSk7Cit9CisKIH0gIC8vIGV4dGVybiAiQyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xF
U3YyX2F1dG9nZW4uZGVmIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9s
aWJHTEVTdjJfYXV0b2dlbi5kZWYKaW5kZXggODE5ZTgzN2ZhMDhmNTMyMjk2MTg1MzFkYzhhZGRi
NmZhNDZiMjEwYy4uMjM0ZDNhYTZiNmYyMDE0NWVjYzQwYzY1Njg1ZDRhNTRkOTIxZDI5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJf
YXV0b2dlbi5kZWYKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9s
aWJHTEVTdjJfYXV0b2dlbi5kZWYKQEAgLTQ4NSw2ICs0ODUsOSBAQCBFWFBPUlRTCiAgICAgZ2xE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQogICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xF
CiAKKyAgICA7IEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYQorICAgIGdsSW1wb3J0TWVt
b3J5WmlyY29uSGFuZGxlQU5HTEUKKwogICAgIDsgR0xfQU5HTEVfbXVsdGlfZHJhdwogICAgIGds
TXVsdGlEcmF3QXJyYXlzQU5HTEUKICAgICBnbE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
CkBAIC01NjYsNiArNTY5LDkgQEAgRVhQT1JUUwogICAgIGdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFO
R0xFCiAgICAgZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUKIAorICAgIDsgR0xfQU5HTEVfc2Vt
YXBob3JlX2Z1Y2hzaWEKKyAgICBnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFCisK
ICAgICA7IEdMX0FOR0xFX3RleHR1cmVfZXh0ZXJuYWxfdXBkYXRlCiAgICAgZ2xJbnZhbGlkYXRl
VGV4dHVyZUFOR0xFCiAgICAgZ2xUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRQpAQCAtNTkyLDM3ICs1
OTgsMTAgQEAgRVhQT1JUUwogCiAgICAgOyBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9z
YW1wbGVzCiAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTQotICAgIGdsTWF0cml4TG9h
ZElkZW50aXR5Q0hST01JVU0KLSAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0KIAogICAgIDsgR0xf
Q0hST01JVU1fbG9zZV9jb250ZXh0CiAgICAgZ2xMb3NlQ29udGV4dENIUk9NSVVNCiAKLSAgICA7
IEdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0
aW9uQ0hST01JVU0KLSAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTQotICAgIGdsQ292ZXJGaWxs
UGF0aEluc3RhbmNlZENIUk9NSVVNCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTQotICAg
IGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBnbERlbGV0ZVBhdGhzQ0hS
T01JVU0KLSAgICBnbEdlblBhdGhzQ0hST01JVU0KLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNI
Uk9NSVVNCi0gICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTQotICAgIGdsSXNQYXRoQ0hS
T01JVU0KLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNCi0gICAgZ2xQYXRoUGFyYW1ldGVyZkNI
Uk9NSVVNCi0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNCi0gICAgZ2xQYXRoU3RlbmNpbEZ1
bmNDSFJPTUlVTQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0KLSAg
ICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTQotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTQotICAgIGdsU3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQ
YXRoQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNCi0KICAgICA7IEdMX0VYVF9i
bGVuZF9mdW5jX2V4dGVuZGVkCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVAogICAgIGds
QmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUCkBAIC02NDIsNiArNjIxLDcgQEAgRVhQT1JU
UwogICAgIGdsRGVsZXRlUXVlcmllc0VYVAogICAgIGdsRW5kUXVlcnlFWFQKICAgICBnbEdlblF1
ZXJpZXNFWFQKKyAgICBnbEdldEludGVnZXI2NHZFWFQKICAgICBnbEdldFF1ZXJ5T2JqZWN0aTY0
dkVYVAogICAgIGdsR2V0UXVlcnlPYmplY3RpdkVYVAogICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0
dkVYVApAQCAtNjUzLDYgKzYzMywxNiBAQCBFWFBPUlRTCiAgICAgOyBHTF9FWFRfZHJhd19idWZm
ZXJzCiAgICAgZ2xEcmF3QnVmZmVyc0VYVAogCisgICAgOyBHTF9FWFRfZHJhd19idWZmZXJzX2lu
ZGV4ZWQKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQKKyAgICBnbEJsZW5kRXF1YXRp
b25pRVhUCisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQKKyAgICBnbEJsZW5kRnVuY2lFWFQK
KyAgICBnbENvbG9yTWFza2lFWFQKKyAgICBnbERpc2FibGVpRVhUCisgICAgZ2xFbmFibGVpRVhU
CisgICAgZ2xJc0VuYWJsZWRpRVhUCisKICAgICA7IEdMX0VYVF9kcmF3X2VsZW1lbnRzX2Jhc2Vf
dmVydGV4CiAgICAgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUCiAgICAgZ2xEcmF3RWxlbWVu
dHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUCkBAIC03MjAsNiArNzEwLDggQEAgRVhQT1JUUwogCiAg
ICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCiAKKyAgICA7IEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMKKwogICAgIDsgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0YwogCiAgICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKQEAgLTc2
Niw2ICs3NTgsMTYgQEAgRVhQT1JUUwogCiAgICAgOyBHTF9PRVNfZGVwdGgzMgogCisgICAgOyBH
TF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlP
RVMKKyAgICBnbEJsZW5kRXF1YXRpb25pT0VTCisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMK
KyAgICBnbEJsZW5kRnVuY2lPRVMKKyAgICBnbENvbG9yTWFza2lPRVMKKyAgICBnbERpc2FibGVp
T0VTCisgICAgZ2xFbmFibGVpT0VTCisgICAgZ2xJc0VuYWJsZWRpT0VTCisKICAgICA7IEdMX09F
U19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4CiAgICAgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4
T0VTCiAgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTCkBAIC04NzksNyAr
ODgxLDYgQEAgRVhQT1JUUwogICAgIGdsQmluZEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFCiAgICAg
Z2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVENvbnRleHRBTkdMRQogICAgIGdsQmluZEZyYWdEYXRh
TG9jYXRpb25JbmRleGVkRVhUQ29udGV4dEFOR0xFCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExv
Y2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbEJpbmRGcmFtZWJ1ZmZlckNvbnRleHRB
TkdMRQogICAgIGdsQmluZEZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xCaW5kSW1h
Z2VUZXh0dXJlQ29udGV4dEFOR0xFCkBAIC04OTgsMTEgKzg5OSwxOSBAQCBFWFBPUlRTCiAgICAg
Z2xCbGVuZEVxdWF0aW9uQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVD
b250ZXh0QU5HTEUKICAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUKKyAg
ICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRXF1
YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRXF1YXRpb25pQ29udGV4
dEFOR0xFCisgICAgZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRF
cXVhdGlvbmlPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRnVuY0NvbnRleHRBTkdMRQogICAg
IGdsQmxlbmRGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRnVuY1NlcGFyYXRl
aUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFCisg
ICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRnVuY2lD
b250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5k
RnVuY2lPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsaXRGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRQog
ICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEVDb250ZXh0QU5HTEUKICAgICBnbEJ1ZmZlckRhdGFD
b250ZXh0QU5HTEUKQEAgLTkyOSw2ICs5MzgsOCBAQCBFWFBPUlRTCiAgICAgZ2xDb2xvcjR4Q29u
dGV4dEFOR0xFCiAgICAgZ2xDb2xvck1hc2tDb250ZXh0QU5HTEUKICAgICBnbENvbG9yTWFza2lD
b250ZXh0QU5HTEUKKyAgICBnbENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEUKKyAgICBnbENvbG9y
TWFza2lPRVNDb250ZXh0QU5HTEUKICAgICBnbENvbG9yUG9pbnRlckNvbnRleHRBTkdMRQogICAg
IGdsQ29tcGlsZVNoYWRlckNvbnRleHRBTkdMRQogICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJl
Q0hST01JVU1Db250ZXh0QU5HTEUKQEAgLTk1MiwxMCArOTYzLDYgQEAgRVhQT1JUUwogICAgIGds
Q29weVRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5HTEUKICAgICBnbENvcHlUZXh0dXJlM0RBTkdM
RUNvbnRleHRBTkdMRQogICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdMRQotICAg
IGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNv
bnRleHRBTkdMRQogICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUK
ICAgICBnbENyZWF0ZU1lbW9yeU9iamVjdHNFWFRDb250ZXh0QU5HTEUKICAgICBnbENyZWF0ZVBy
b2dyYW1Db250ZXh0QU5HTEUKQEAgLTk3NCw3ICs5ODEsNiBAQCBFWFBPUlRTCiAgICAgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnNDb250ZXh0QU5HTEUKICAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc09FU0Nv
bnRleHRBTkdMRQogICAgIGdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVENvbnRleHRBTkdMRQotICAg
IGdsRGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsRGVsZXRlUHJvZ3JhbUNv
bnRleHRBTkdMRQogICAgIGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lc0NvbnRleHRBTkdMRQogICAg
IGdsRGVsZXRlUXVlcmllc0NvbnRleHRBTkdMRQpAQCAtOTk5LDYgKzEwMDUsOCBAQCBFWFBPUlRT
CiAgICAgZ2xEaXNhYmxlRXh0ZW5zaW9uQU5HTEVDb250ZXh0QU5HTEUKICAgICBnbERpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRQogICAgIGdsRGlzYWJsZWlDb250ZXh0QU5HTEUK
KyAgICBnbERpc2FibGVpRVhUQ29udGV4dEFOR0xFCisgICAgZ2xEaXNhYmxlaU9FU0NvbnRleHRB
TkdMRQogICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUQ29udGV4dEFOR0xFCiAgICAgZ2xEaXNw
YXRjaENvbXB1dGVDb250ZXh0QU5HTEUKICAgICBnbERpc3BhdGNoQ29tcHV0ZUluZGlyZWN0Q29u
dGV4dEFOR0xFCkBAIC0xMDQwLDYgKzEwNDgsOCBAQCBFWFBPUlRTCiAgICAgZ2xFbmFibGVDbGll
bnRTdGF0ZUNvbnRleHRBTkdMRQogICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlDb250ZXh0
QU5HTEUKICAgICBnbEVuYWJsZWlDb250ZXh0QU5HTEUKKyAgICBnbEVuYWJsZWlFWFRDb250ZXh0
QU5HTEUKKyAgICBnbEVuYWJsZWlPRVNDb250ZXh0QU5HTEUKICAgICBnbEVuZFF1ZXJ5Q29udGV4
dEFOR0xFCiAgICAgZ2xFbmRRdWVyeUVYVENvbnRleHRBTkdMRQogICAgIGdsRW5kVHJhbnNmb3Jt
RmVlZGJhY2tDb250ZXh0QU5HTEUKQEAgLTEwNzEsNyArMTA4MSw2IEBAIEVYUE9SVFMKICAgICBn
bEdlbkZlbmNlc05WQ29udGV4dEFOR0xFCiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnNDb250ZXh0QU5H
TEUKICAgICBnbEdlbkZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdMRQotICAgIGdsR2VuUGF0aHND
SFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsR2VuUHJvZ3JhbVBpcGVsaW5lc0NvbnRleHRBTkdM
RQogICAgIGdsR2VuUXVlcmllc0NvbnRleHRBTkdMRQogICAgIGdsR2VuUXVlcmllc0VYVENvbnRl
eHRBTkdMRQpAQCAtMTEyNSw2ICsxMTM0LDcgQEAgRVhQT1JUUwogICAgIGdsR2V0SW50ZWdlcjY0
aV92Q29udGV4dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRUNvbnRleHRB
TkdMRQogICAgIGdsR2V0SW50ZWdlcjY0dkNvbnRleHRBTkdMRQorICAgIGdsR2V0SW50ZWdlcjY0
dkVYVENvbnRleHRBTkdMRQogICAgIGdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFQ29udGV4dEFO
R0xFCiAgICAgZ2xHZXRJbnRlZ2VyaV92Q29udGV4dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2VyaV92
Um9idXN0QU5HTEVDb250ZXh0QU5HTEUKQEAgLTExNDQsOCArMTE1NCw2IEBAIEVYUE9SVFMKICAg
ICBnbEdldE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRPYmplY3RQdHJMYWJl
bENvbnRleHRBTkdMRQogICAgIGdsR2V0T2JqZWN0UHRyTGFiZWxLSFJDb250ZXh0QU5HTEUKLSAg
ICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xHZXRQYXRo
UGFyYW1ldGVyaXZDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsR2V0UG9pbnRlcnZDb250ZXh0
QU5HTEUKICAgICBnbEdldFBvaW50ZXJ2S0hSQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRQb2ludGVy
dlJvYnVzdEFOR0xFUm9idXN0QU5HTEVDb250ZXh0QU5HTEUKQEAgLTEyNTUsNyArMTI2Myw5IEBA
IEVYUE9SVFMKICAgICBnbEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUKICAg
ICBnbEhpbnRDb250ZXh0QU5HTEUKICAgICBnbEltcG9ydE1lbW9yeUZkRVhUQ29udGV4dEFOR0xF
CisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRQogICAgIGds
SW1wb3J0U2VtYXBob3JlRmRFWFRDb250ZXh0QU5HTEUKKyAgICBnbEltcG9ydFNlbWFwaG9yZVpp
cmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xJbnNlcnRFdmVudE1hcmtlckVYVENv
bnRleHRBTkdMRQogICAgIGdsSW52YWxpZGF0ZUZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAg
Z2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKQEAgLTEyNjMsMTEgKzEyNzMs
MTIgQEAgRVhQT1JUUwogICAgIGdsSXNCdWZmZXJDb250ZXh0QU5HTEUKICAgICBnbElzRW5hYmxl
ZENvbnRleHRBTkdMRQogICAgIGdsSXNFbmFibGVkaUNvbnRleHRBTkdMRQorICAgIGdsSXNFbmFi
bGVkaUVYVENvbnRleHRBTkdMRQorICAgIGdsSXNFbmFibGVkaU9FU0NvbnRleHRBTkdMRQogICAg
IGdsSXNGZW5jZU5WQ29udGV4dEFOR0xFCiAgICAgZ2xJc0ZyYW1lYnVmZmVyQ29udGV4dEFOR0xF
CiAgICAgZ2xJc0ZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xJc01lbW9yeU9iamVj
dEVYVENvbnRleHRBTkdMRQotICAgIGdsSXNQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBn
bElzUHJvZ3JhbUNvbnRleHRBTkdMRQogICAgIGdsSXNQcm9ncmFtUGlwZWxpbmVDb250ZXh0QU5H
TEUKICAgICBnbElzUXVlcnlDb250ZXh0QU5HTEUKQEAgLTEzMDcsOCArMTMxOCw2IEBAIEVYUE9S
VFMKICAgICBnbE1hdGVyaWFseENvbnRleHRBTkdMRQogICAgIGdsTWF0ZXJpYWx4dkNvbnRleHRB
TkdMRQogICAgIGdsTWF0cml4SW5kZXhQb2ludGVyT0VTQ29udGV4dEFOR0xFCi0gICAgZ2xNYXRy
aXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsTWF0cml4TG9hZGZDSFJP
TUlVTUNvbnRleHRBTkdMRQogICAgIGdsTWF0cml4TW9kZUNvbnRleHRBTkdMRQogICAgIGdsTWF4
U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSQ29udGV4dEFOR0xFCiAgICAgZ2xNZW1vcnlCYXJyaWVy
Q29udGV4dEFOR0xFCkBAIC0xMzM2LDEwICsxMzQ1LDYgQEAgRVhQT1JUUwogICAgIGdsT3J0aG9m
Q29udGV4dEFOR0xFCiAgICAgZ2xPcnRob3hDb250ZXh0QU5HTEUKICAgICBnbFBhdGNoUGFyYW1l
dGVyaUNvbnRleHRBTkdMRQotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU1Db250ZXh0QU5HTEUK
LSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFBhdGhQYXJh
bWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVN
Q29udGV4dEFOR0xFCiAgICAgZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFCiAg
ICAgZ2xQaXhlbFN0b3JlaUNvbnRleHRBTkdMRQogICAgIGdsUG9pbnRQYXJhbWV0ZXJmQ29udGV4
dEFOR0xFCkBAIC0xMzU5LDcgKzEzNjQsNiBAQCBFWFBPUlRTCiAgICAgZ2xQcm9ncmFtQmluYXJ5
Q29udGV4dEFOR0xFCiAgICAgZ2xQcm9ncmFtQmluYXJ5T0VTQ29udGV4dEFOR0xFCiAgICAgZ2xQ
cm9ncmFtUGFyYW1ldGVyaUNvbnRleHRBTkdMRQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1Vbmlmb3JtMWZDb250ZXh0
QU5HTEUKICAgICBnbFByb2dyYW1Vbmlmb3JtMWZ2Q29udGV4dEFOR0xFCiAgICAgZ2xQcm9ncmFt
VW5pZm9ybTFpQ29udGV4dEFOR0xFCkBAIC0xNDQxLDIwICsxNDQ1LDEyIEBAIEVYUE9SVFMKICAg
ICBnbFNoYWRlckJpbmFyeUNvbnRleHRBTkdMRQogICAgIGdsU2hhZGVyU291cmNlQ29udGV4dEFO
R0xFCiAgICAgZ2xTaWduYWxTZW1hcGhvcmVFWFRDb250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxG
aWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbEZ1bmNDb250ZXh0QU5HTEUKICAg
ICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxNYXNrQ29u
dGV4dEFOR0xFCiAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlQ29udGV4dEFOR0xFCiAgICAgZ2xT
dGVuY2lsT3BDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlQ29udGV4dEFOR0xF
Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxUaGVu
Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbFRlc3RG
ZW5jZU5WQ29udGV4dEFOR0xFCiAgICAgZ2xUZXhCdWZmZXJDb250ZXh0QU5HTEUKICAgICBnbFRl
eEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9ub19jYXB0dXJlX2F1dG9nZW4uZGVmIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfbm9fY2FwdHVyZV9h
dXRvZ2VuLmRlZgppbmRleCA2YzQxNjJjNTAzYmI5YWIzYzU5MzYxMDM3MTRhZjkxZWM1OGVkMWI0
Li5lZmQzODc1ZjZjZTE3ZDJlNTBjN2Q2MjEyOWQxMTczMWI2M2U5ZWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9ub19jYXB0dXJl
X2F1dG9nZW4uZGVmCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
bGliR0xFU3YyX25vX2NhcHR1cmVfYXV0b2dlbi5kZWYKQEAgLTQ4NSw2ICs0ODUsOSBAQCBFWFBP
UlRTCiAgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRQogICAgIGdsVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFCiAKKyAgICA7IEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYQorICAg
IGdsSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUKKwogICAgIDsgR0xfQU5HTEVfbXVsdGlf
ZHJhdwogICAgIGdsTXVsdGlEcmF3QXJyYXlzQU5HTEUKICAgICBnbE11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFCkBAIC01NjYsNiArNTY5LDkgQEAgRVhQT1JUUwogICAgIGdsVGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFCiAgICAgZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUKIAorICAgIDsg
R0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEKKyAgICBnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhh
bmRsZUFOR0xFCisKICAgICA7IEdMX0FOR0xFX3RleHR1cmVfZXh0ZXJuYWxfdXBkYXRlCiAgICAg
Z2xJbnZhbGlkYXRlVGV4dHVyZUFOR0xFCiAgICAgZ2xUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRQpA
QCAtNTkyLDM3ICs1OTgsMTAgQEAgRVhQT1JUUwogCiAgICAgOyBHTF9DSFJPTUlVTV9mcmFtZWJ1
ZmZlcl9taXhlZF9zYW1wbGVzCiAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTQotICAg
IGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0KLSAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0K
IAogICAgIDsgR0xfQ0hST01JVU1fbG9zZV9jb250ZXh0CiAgICAgZ2xMb3NlQ29udGV4dENIUk9N
SVVNCiAKLSAgICA7IEdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0gICAgZ2xCaW5kRnJhZ21l
bnRJbnB1dExvY2F0aW9uQ0hST01JVU0KLSAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTQotICAg
IGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhD
SFJPTUlVTQotICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBnbERl
bGV0ZVBhdGhzQ0hST01JVU0KLSAgICBnbEdlblBhdGhzQ0hST01JVU0KLSAgICBnbEdldFBhdGhQ
YXJhbWV0ZXJmdkNIUk9NSVVNCi0gICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTQotICAg
IGdsSXNQYXRoQ0hST01JVU0KLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNCi0gICAgZ2xQYXRo
UGFyYW1ldGVyZkNIUk9NSVVNCi0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNCi0gICAgZ2xQ
YXRoU3RlbmNpbEZ1bmNDSFJPTUlVTQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2Vu
Q0hST01JVU0KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTQotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTQot
ICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTQotICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aElu
c3RhbmNlZENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVN
Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNCi0KICAg
ICA7IEdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlv
bkVYVAogICAgIGdsQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUCkBAIC02NDIsNiArNjIx
LDcgQEAgRVhQT1JUUwogICAgIGdsRGVsZXRlUXVlcmllc0VYVAogICAgIGdsRW5kUXVlcnlFWFQK
ICAgICBnbEdlblF1ZXJpZXNFWFQKKyAgICBnbEdldEludGVnZXI2NHZFWFQKICAgICBnbEdldFF1
ZXJ5T2JqZWN0aTY0dkVYVAogICAgIGdsR2V0UXVlcnlPYmplY3RpdkVYVAogICAgIGdsR2V0UXVl
cnlPYmplY3R1aTY0dkVYVApAQCAtNjUzLDYgKzYzMywxNiBAQCBFWFBPUlRTCiAgICAgOyBHTF9F
WFRfZHJhd19idWZmZXJzCiAgICAgZ2xEcmF3QnVmZmVyc0VYVAogCisgICAgOyBHTF9FWFRfZHJh
d19idWZmZXJzX2luZGV4ZWQKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQKKyAgICBn
bEJsZW5kRXF1YXRpb25pRVhUCisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQKKyAgICBnbEJs
ZW5kRnVuY2lFWFQKKyAgICBnbENvbG9yTWFza2lFWFQKKyAgICBnbERpc2FibGVpRVhUCisgICAg
Z2xFbmFibGVpRVhUCisgICAgZ2xJc0VuYWJsZWRpRVhUCisKICAgICA7IEdMX0VYVF9kcmF3X2Vs
ZW1lbnRzX2Jhc2VfdmVydGV4CiAgICAgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUCiAgICAg
Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUCkBAIC03MjAsNiArNzEwLDggQEAg
RVhQT1JUUwogCiAgICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCiAKKyAgICA7
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKKwogICAgIDsgR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fczN0YwogCiAgICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3Rj
X3NyZ2IKQEAgLTc2Niw2ICs3NTgsMTYgQEAgRVhQT1JUUwogCiAgICAgOyBHTF9PRVNfZGVwdGgz
MgogCisgICAgOyBHTF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQKKyAgICBnbEJsZW5kRXF1YXRp
b25TZXBhcmF0ZWlPRVMKKyAgICBnbEJsZW5kRXF1YXRpb25pT0VTCisgICAgZ2xCbGVuZEZ1bmNT
ZXBhcmF0ZWlPRVMKKyAgICBnbEJsZW5kRnVuY2lPRVMKKyAgICBnbENvbG9yTWFza2lPRVMKKyAg
ICBnbERpc2FibGVpT0VTCisgICAgZ2xFbmFibGVpT0VTCisgICAgZ2xJc0VuYWJsZWRpT0VTCisK
ICAgICA7IEdMX09FU19kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4CiAgICAgZ2xEcmF3RWxlbWVu
dHNCYXNlVmVydGV4T0VTCiAgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VT
CkBAIC04NzksNyArODgxLDYgQEAgRVhQT1JUUwogICAgIGdsQmluZEJ1ZmZlclJhbmdlQ29udGV4
dEFOR0xFCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVENvbnRleHRBTkdMRQogICAgIGds
QmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUQ29udGV4dEFOR0xFCi0gICAgZ2xCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckNvbnRleHRBTkdMRQogICAgIGdsQmluZEZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFCiAg
ICAgZ2xCaW5kSW1hZ2VUZXh0dXJlQ29udGV4dEFOR0xFCkBAIC04OTgsMTEgKzg5OSwxOSBAQCBF
WFBPUlRTCiAgICAgZ2xCbGVuZEVxdWF0aW9uQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEVxdWF0
aW9uU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250
ZXh0QU5HTEUKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUKKyAg
ICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRXF1
YXRpb25pQ29udGV4dEFOR0xFCisgICAgZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRQor
ICAgIGdsQmxlbmRFcXVhdGlvbmlPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsZW5kRnVuY0NvbnRl
eHRBTkdMRQogICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbEJsZW5k
RnVuY1NlcGFyYXRlaUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29u
dGV4dEFOR0xFCisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUKICAgICBn
bEJsZW5kRnVuY2lDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUK
KyAgICBnbEJsZW5kRnVuY2lPRVNDb250ZXh0QU5HTEUKICAgICBnbEJsaXRGcmFtZWJ1ZmZlckNv
bnRleHRBTkdMRQogICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEVDb250ZXh0QU5HTEUKICAgICBn
bEJ1ZmZlckRhdGFDb250ZXh0QU5HTEUKQEAgLTkyOSw2ICs5MzgsOCBAQCBFWFBPUlRTCiAgICAg
Z2xDb2xvcjR4Q29udGV4dEFOR0xFCiAgICAgZ2xDb2xvck1hc2tDb250ZXh0QU5HTEUKICAgICBn
bENvbG9yTWFza2lDb250ZXh0QU5HTEUKKyAgICBnbENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEUK
KyAgICBnbENvbG9yTWFza2lPRVNDb250ZXh0QU5HTEUKICAgICBnbENvbG9yUG9pbnRlckNvbnRl
eHRBTkdMRQogICAgIGdsQ29tcGlsZVNoYWRlckNvbnRleHRBTkdMRQogICAgIGdsQ29tcHJlc3Nl
ZENvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUKQEAgLTk1MiwxMCArOTYzLDYgQEAgRVhQ
T1JUUwogICAgIGdsQ29weVRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5HTEUKICAgICBnbENvcHlU
ZXh0dXJlM0RBTkdMRUNvbnRleHRBTkdMRQogICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTUNvbnRl
eHRBTkdMRQotICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xD
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbENvdmVyU3Ry
b2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1D
b250ZXh0QU5HTEUKICAgICBnbENyZWF0ZU1lbW9yeU9iamVjdHNFWFRDb250ZXh0QU5HTEUKICAg
ICBnbENyZWF0ZVByb2dyYW1Db250ZXh0QU5HTEUKQEAgLTk3NCw3ICs5ODEsNiBAQCBFWFBPUlRT
CiAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNDb250ZXh0QU5HTEUKICAgICBnbERlbGV0ZUZyYW1l
YnVmZmVyc09FU0NvbnRleHRBTkdMRQogICAgIGdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVENvbnRl
eHRBTkdMRQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsRGVs
ZXRlUHJvZ3JhbUNvbnRleHRBTkdMRQogICAgIGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lc0NvbnRl
eHRBTkdMRQogICAgIGdsRGVsZXRlUXVlcmllc0NvbnRleHRBTkdMRQpAQCAtOTk5LDYgKzEwMDUs
OCBAQCBFWFBPUlRTCiAgICAgZ2xEaXNhYmxlRXh0ZW5zaW9uQU5HTEVDb250ZXh0QU5HTEUKICAg
ICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRQogICAgIGdsRGlzYWJsZWlD
b250ZXh0QU5HTEUKKyAgICBnbERpc2FibGVpRVhUQ29udGV4dEFOR0xFCisgICAgZ2xEaXNhYmxl
aU9FU0NvbnRleHRBTkdMRQogICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUQ29udGV4dEFOR0xF
CiAgICAgZ2xEaXNwYXRjaENvbXB1dGVDb250ZXh0QU5HTEUKICAgICBnbERpc3BhdGNoQ29tcHV0
ZUluZGlyZWN0Q29udGV4dEFOR0xFCkBAIC0xMDQwLDYgKzEwNDgsOCBAQCBFWFBPUlRTCiAgICAg
Z2xFbmFibGVDbGllbnRTdGF0ZUNvbnRleHRBTkdMRQogICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXlDb250ZXh0QU5HTEUKICAgICBnbEVuYWJsZWlDb250ZXh0QU5HTEUKKyAgICBnbEVuYWJs
ZWlFWFRDb250ZXh0QU5HTEUKKyAgICBnbEVuYWJsZWlPRVNDb250ZXh0QU5HTEUKICAgICBnbEVu
ZFF1ZXJ5Q29udGV4dEFOR0xFCiAgICAgZ2xFbmRRdWVyeUVYVENvbnRleHRBTkdMRQogICAgIGds
RW5kVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUKQEAgLTEwNzEsNyArMTA4MSw2IEBAIEVY
UE9SVFMKICAgICBnbEdlbkZlbmNlc05WQ29udGV4dEFOR0xFCiAgICAgZ2xHZW5GcmFtZWJ1ZmZl
cnNDb250ZXh0QU5HTEUKICAgICBnbEdlbkZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdMRQotICAg
IGdsR2VuUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsR2VuUHJvZ3JhbVBpcGVsaW5l
c0NvbnRleHRBTkdMRQogICAgIGdsR2VuUXVlcmllc0NvbnRleHRBTkdMRQogICAgIGdsR2VuUXVl
cmllc0VYVENvbnRleHRBTkdMRQpAQCAtMTEyNSw2ICsxMTM0LDcgQEAgRVhQT1JUUwogICAgIGds
R2V0SW50ZWdlcjY0aV92Q29udGV4dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RB
TkdMRUNvbnRleHRBTkdMRQogICAgIGdsR2V0SW50ZWdlcjY0dkNvbnRleHRBTkdMRQorICAgIGds
R2V0SW50ZWdlcjY0dkVYVENvbnRleHRBTkdMRQogICAgIGdsR2V0SW50ZWdlcjY0dlJvYnVzdEFO
R0xFQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2VyaV92Q29udGV4dEFOR0xFCiAgICAgZ2xH
ZXRJbnRlZ2VyaV92Um9idXN0QU5HTEVDb250ZXh0QU5HTEUKQEAgLTExNDQsOCArMTE1NCw2IEBA
IEVYUE9SVFMKICAgICBnbEdldE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRP
YmplY3RQdHJMYWJlbENvbnRleHRBTkdMRQogICAgIGdsR2V0T2JqZWN0UHRyTGFiZWxLSFJDb250
ZXh0QU5HTEUKLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFCi0g
ICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsR2V0UG9p
bnRlcnZDb250ZXh0QU5HTEUKICAgICBnbEdldFBvaW50ZXJ2S0hSQ29udGV4dEFOR0xFCiAgICAg
Z2xHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEVDb250ZXh0QU5HTEUKQEAgLTEyNTUs
NyArMTI2Myw5IEBAIEVYUE9SVFMKICAgICBnbEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVDb250
ZXh0QU5HTEUKICAgICBnbEhpbnRDb250ZXh0QU5HTEUKICAgICBnbEltcG9ydE1lbW9yeUZkRVhU
Q29udGV4dEFOR0xFCisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRB
TkdMRQogICAgIGdsSW1wb3J0U2VtYXBob3JlRmRFWFRDb250ZXh0QU5HTEUKKyAgICBnbEltcG9y
dFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xJbnNlcnRFdmVu
dE1hcmtlckVYVENvbnRleHRBTkdMRQogICAgIGdsSW52YWxpZGF0ZUZyYW1lYnVmZmVyQ29udGV4
dEFOR0xFCiAgICAgZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKQEAgLTEy
NjMsMTEgKzEyNzMsMTIgQEAgRVhQT1JUUwogICAgIGdsSXNCdWZmZXJDb250ZXh0QU5HTEUKICAg
ICBnbElzRW5hYmxlZENvbnRleHRBTkdMRQogICAgIGdsSXNFbmFibGVkaUNvbnRleHRBTkdMRQor
ICAgIGdsSXNFbmFibGVkaUVYVENvbnRleHRBTkdMRQorICAgIGdsSXNFbmFibGVkaU9FU0NvbnRl
eHRBTkdMRQogICAgIGdsSXNGZW5jZU5WQ29udGV4dEFOR0xFCiAgICAgZ2xJc0ZyYW1lYnVmZmVy
Q29udGV4dEFOR0xFCiAgICAgZ2xJc0ZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xJ
c01lbW9yeU9iamVjdEVYVENvbnRleHRBTkdMRQotICAgIGdsSXNQYXRoQ0hST01JVU1Db250ZXh0
QU5HTEUKICAgICBnbElzUHJvZ3JhbUNvbnRleHRBTkdMRQogICAgIGdsSXNQcm9ncmFtUGlwZWxp
bmVDb250ZXh0QU5HTEUKICAgICBnbElzUXVlcnlDb250ZXh0QU5HTEUKQEAgLTEzMDcsOCArMTMx
OCw2IEBAIEVYUE9SVFMKICAgICBnbE1hdGVyaWFseENvbnRleHRBTkdMRQogICAgIGdsTWF0ZXJp
YWx4dkNvbnRleHRBTkdMRQogICAgIGdsTWF0cml4SW5kZXhQb2ludGVyT0VTQ29udGV4dEFOR0xF
Ci0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsTWF0
cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsTWF0cml4TW9kZUNvbnRleHRBTkdM
RQogICAgIGdsTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSQ29udGV4dEFOR0xFCiAgICAgZ2xN
ZW1vcnlCYXJyaWVyQ29udGV4dEFOR0xFCkBAIC0xMzM2LDEwICsxMzQ1LDYgQEAgRVhQT1JUUwog
ICAgIGdsT3J0aG9mQ29udGV4dEFOR0xFCiAgICAgZ2xPcnRob3hDb250ZXh0QU5HTEUKICAgICBn
bFBhdGNoUGFyYW1ldGVyaUNvbnRleHRBTkdMRQotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU1D
b250ZXh0QU5HTEUKLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU1Db250ZXh0QU5HTEUKLSAg
ICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFBhdGhTdGVuY2ls
RnVuY0NIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrQ29u
dGV4dEFOR0xFCiAgICAgZ2xQaXhlbFN0b3JlaUNvbnRleHRBTkdMRQogICAgIGdsUG9pbnRQYXJh
bWV0ZXJmQ29udGV4dEFOR0xFCkBAIC0xMzU5LDcgKzEzNjQsNiBAQCBFWFBPUlRTCiAgICAgZ2xQ
cm9ncmFtQmluYXJ5Q29udGV4dEFOR0xFCiAgICAgZ2xQcm9ncmFtQmluYXJ5T0VTQ29udGV4dEFO
R0xFCiAgICAgZ2xQcm9ncmFtUGFyYW1ldGVyaUNvbnRleHRBTkdMRQotICAgIGdsUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1Vbmlm
b3JtMWZDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1Vbmlmb3JtMWZ2Q29udGV4dEFOR0xFCiAg
ICAgZ2xQcm9ncmFtVW5pZm9ybTFpQ29udGV4dEFOR0xFCkBAIC0xNDQxLDIwICsxNDQ1LDEyIEBA
IEVYUE9SVFMKICAgICBnbFNoYWRlckJpbmFyeUNvbnRleHRBTkdMRQogICAgIGdsU2hhZGVyU291
cmNlQ29udGV4dEFOR0xFCiAgICAgZ2xTaWduYWxTZW1hcGhvcmVFWFRDb250ZXh0QU5HTEUKLSAg
ICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2lsRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbEZ1bmNDb250
ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbFN0
ZW5jaWxNYXNrQ29udGV4dEFOR0xFCiAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlQ29udGV4dEFO
R0xFCiAgICAgZ2xTdGVuY2lsT3BDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxPcFNlcGFyYXRl
Q29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xF
Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCi0g
ICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGds
U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKLSAg
ICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBn
bFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUK
ICAgICBnbFRlc3RGZW5jZU5WQ29udGV4dEFOR0xFCiAgICAgZ2xUZXhCdWZmZXJDb250ZXh0QU5H
TEUKICAgICBnbFRleEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml93aXRoX2NhcHR1cmVfYXV0
b2dlbi5kZWYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2
Ml93aXRoX2NhcHR1cmVfYXV0b2dlbi5kZWYKaW5kZXggM2RjZWNkOTRjNzJjMjYxMzQ2OTMxZDdm
NjVmMDkzOTg1YmE0MTY3Ny4uN2RiMjQzZmY3NThmYTE3NGFlYWIyN2UyMTFlNWIzNTU2OGJmNmI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjJfd2l0aF9jYXB0dXJlX2F1dG9nZW4uZGVmCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyX3dpdGhfY2FwdHVyZV9hdXRvZ2VuLmRlZgpAQCAt
NDg1LDYgKzQ4NSw5IEBAIEVYUE9SVFMKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
CiAgICAgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUKIAorICAgIDsgR0xfQU5HTEVfbWVtb3J5
X29iamVjdF9mdWNoc2lhCisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRQorCiAg
ICAgOyBHTF9BTkdMRV9tdWx0aV9kcmF3CiAgICAgZ2xNdWx0aURyYXdBcnJheXNBTkdMRQogICAg
IGdsTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUKQEAgLTU2Niw2ICs1NjksOSBAQCBFWFBP
UlRTCiAgICAgZ2xUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUKICAgICBnbFRleFN1YkltYWdlM0RS
b2J1c3RBTkdMRQogCisgICAgOyBHTF9BTkdMRV9zZW1hcGhvcmVfZnVjaHNpYQorICAgIGdsSW1w
b3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUKKwogICAgIDsgR0xfQU5HTEVfdGV4dHVyZV9l
eHRlcm5hbF91cGRhdGUKICAgICBnbEludmFsaWRhdGVUZXh0dXJlQU5HTEUKICAgICBnbFRleElt
YWdlMkRFeHRlcm5hbEFOR0xFCkBAIC01OTIsMzcgKzU5OCwxMCBAQCBFWFBPUlRTCiAKICAgICA7
IEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMKICAgICBnbENvdmVyYWdlTW9k
dWxhdGlvbkNIUk9NSVVNCi0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTQotICAgIGds
TWF0cml4TG9hZGZDSFJPTUlVTQogCiAgICAgOyBHTF9DSFJPTUlVTV9sb3NlX2NvbnRleHQKICAg
ICBnbExvc2VDb250ZXh0Q0hST01JVU0KIAotICAgIDsgR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJp
bmcKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTQotICAgIGdsQ292ZXJG
aWxsUGF0aENIUk9NSVVNCi0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAg
ICBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTQotICAgIGdsR2VuUGF0aHNDSFJP
TUlVTQotICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0KLSAgICBnbEdldFBhdGhQYXJh
bWV0ZXJpdkNIUk9NSVVNCi0gICAgZ2xJc1BhdGhDSFJPTUlVTQotICAgIGdsUGF0aENvbW1hbmRz
Q0hST01JVU0KLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0KLSAgICBnbFBhdGhQYXJhbWV0
ZXJpQ0hST01JVU0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNCi0gICAgZ2xQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTQotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01J
VU0KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNCi0gICAgZ2xTdGVuY2ls
U3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9N
SVVNCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTQotICAgIGdsU3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVuQ292
ZXJTdHJva2VQYXRoQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU0KLQogICAgIDsgR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQKICAgICBn
bEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4
ZWRFWFQKQEAgLTY0Miw2ICs2MjEsNyBAQCBFWFBPUlRTCiAgICAgZ2xEZWxldGVRdWVyaWVzRVhU
CiAgICAgZ2xFbmRRdWVyeUVYVAogICAgIGdsR2VuUXVlcmllc0VYVAorICAgIGdsR2V0SW50ZWdl
cjY0dkVYVAogICAgIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUCiAgICAgZ2xHZXRRdWVyeU9iamVj
dGl2RVhUCiAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUCkBAIC02NTMsNiArNjMzLDE2IEBA
IEVYUE9SVFMKICAgICA7IEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICBnbERyYXdCdWZmZXJzRVhU
CiAKKyAgICA7IEdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhlZAorICAgIGdsQmxlbmRFcXVhdGlv
blNlcGFyYXRlaUVYVAorICAgIGdsQmxlbmRFcXVhdGlvbmlFWFQKKyAgICBnbEJsZW5kRnVuY1Nl
cGFyYXRlaUVYVAorICAgIGdsQmxlbmRGdW5jaUVYVAorICAgIGdsQ29sb3JNYXNraUVYVAorICAg
IGdsRGlzYWJsZWlFWFQKKyAgICBnbEVuYWJsZWlFWFQKKyAgICBnbElzRW5hYmxlZGlFWFQKKwog
ICAgIDsgR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKICAgICBnbERyYXdFbGVtZW50
c0Jhc2VWZXJ0ZXhFWFQKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQK
QEAgLTcyMCw2ICs3MTAsOCBAQCBFWFBPUlRTCiAKICAgICA7IEdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEKIAorICAgIDsgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworCiAg
ICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKICAgICA7IEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtNzY2LDYgKzc1OCwxNiBAQCBFWFBPUlRTCiAK
ICAgICA7IEdMX09FU19kZXB0aDMyCiAKKyAgICA7IEdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhl
ZAorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUworICAgIGdsQmxlbmRFcXVhdGlvbmlP
RVMKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUworICAgIGdsQmxlbmRGdW5jaU9FUworICAg
IGdsQ29sb3JNYXNraU9FUworICAgIGdsRGlzYWJsZWlPRVMKKyAgICBnbEVuYWJsZWlPRVMKKyAg
ICBnbElzRW5hYmxlZGlPRVMKKwogICAgIDsgR0xfT0VTX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0
ZXgKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMKICAgICBnbERyYXdFbGVtZW50c0lu
c3RhbmNlZEJhc2VWZXJ0ZXhPRVMKQEAgLTg3OSw3ICs4ODEsNiBAQCBFWFBPUlRTCiAgICAgZ2xC
aW5kQnVmZmVyUmFuZ2VDb250ZXh0QU5HTEUKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhU
Q29udGV4dEFOR0xFCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFRDb250ZXh0
QU5HTEUKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRleHRBTkdM
RQogICAgIGdsQmluZEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJPRVNDb250ZXh0QU5HTEUKICAgICBnbEJpbmRJbWFnZVRleHR1cmVDb250ZXh0QU5HTEUKQEAg
LTg5OCwxMSArODk5LDE5IEBAIEVYUE9SVFMKICAgICBnbEJsZW5kRXF1YXRpb25Db250ZXh0QU5H
TEUKICAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZUNvbnRleHRBTkdMRQogICAgIGdsQmxlbmRF
cXVhdGlvblNlcGFyYXRlaUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
aUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FU0NvbnRleHRB
TkdMRQogICAgIGdsQmxlbmRFcXVhdGlvbmlDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRXF1YXRp
b25pRVhUQ29udGV4dEFOR0xFCisgICAgZ2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRQog
ICAgIGdsQmxlbmRGdW5jQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZUNvbnRl
eHRBTkdMRQogICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpQ29udGV4dEFOR0xFCisgICAgZ2xCbGVu
ZEZ1bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9F
U0NvbnRleHRBTkdMRQogICAgIGdsQmxlbmRGdW5jaUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRG
dW5jaUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRGdW5jaU9FU0NvbnRleHRBTkdMRQogICAg
IGdsQmxpdEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdM
RUNvbnRleHRBTkdMRQogICAgIGdsQnVmZmVyRGF0YUNvbnRleHRBTkdMRQpAQCAtOTI5LDYgKzkz
OCw4IEBAIEVYUE9SVFMKICAgICBnbENvbG9yNHhDb250ZXh0QU5HTEUKICAgICBnbENvbG9yTWFz
a0NvbnRleHRBTkdMRQogICAgIGdsQ29sb3JNYXNraUNvbnRleHRBTkdMRQorICAgIGdsQ29sb3JN
YXNraUVYVENvbnRleHRBTkdMRQorICAgIGdsQ29sb3JNYXNraU9FU0NvbnRleHRBTkdMRQogICAg
IGdsQ29sb3JQb2ludGVyQ29udGV4dEFOR0xFCiAgICAgZ2xDb21waWxlU2hhZGVyQ29udGV4dEFO
R0xFCiAgICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdMRQpAQCAt
OTUyLDEwICs5NjMsNiBAQCBFWFBPUlRTCiAgICAgZ2xDb3B5VGV4U3ViSW1hZ2UzRE9FU0NvbnRl
eHRBTkdMRQogICAgIGdsQ29weVRleHR1cmUzREFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xDb3B5
VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU1D
b250ZXh0QU5HTEUKLSAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRB
TkdMRQotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbENv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xDb3ZlcmFn
ZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsQ3JlYXRlTWVtb3J5T2JqZWN0
c0VYVENvbnRleHRBTkdMRQogICAgIGdsQ3JlYXRlUHJvZ3JhbUNvbnRleHRBTkdMRQpAQCAtOTc0
LDcgKzk4MSw2IEBAIEVYUE9SVFMKICAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc0NvbnRleHRBTkdM
RQogICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVN
ZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNQ29u
dGV4dEFOR0xFCiAgICAgZ2xEZWxldGVQcm9ncmFtQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVQ
cm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVRdWVyaWVzQ29udGV4dEFO
R0xFCkBAIC05OTksNiArMTAwNSw4IEBAIEVYUE9SVFMKICAgICBnbERpc2FibGVFeHRlbnNpb25B
TkdMRUNvbnRleHRBTkdMRQogICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5Q29udGV4dEFO
R0xFCiAgICAgZ2xEaXNhYmxlaUNvbnRleHRBTkdMRQorICAgIGdsRGlzYWJsZWlFWFRDb250ZXh0
QU5HTEUKKyAgICBnbERpc2FibGVpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xEaXNjYXJkRnJhbWVi
dWZmZXJFWFRDb250ZXh0QU5HTEUKICAgICBnbERpc3BhdGNoQ29tcHV0ZUNvbnRleHRBTkdMRQog
ICAgIGdsRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3RDb250ZXh0QU5HTEUKQEAgLTEwNDAsNiArMTA0
OCw4IEBAIEVYUE9SVFMKICAgICBnbEVuYWJsZUNsaWVudFN0YXRlQ29udGV4dEFOR0xFCiAgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRQogICAgIGdsRW5hYmxlaUNvbnRl
eHRBTkdMRQorICAgIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRQorICAgIGdsRW5hYmxlaU9FU0Nv
bnRleHRBTkdMRQogICAgIGdsRW5kUXVlcnlDb250ZXh0QU5HTEUKICAgICBnbEVuZFF1ZXJ5RVhU
Q29udGV4dEFOR0xFCiAgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRQpAQCAt
MTA3MSw3ICsxMDgxLDYgQEAgRVhQT1JUUwogICAgIGdsR2VuRmVuY2VzTlZDb250ZXh0QU5HTEUK
ICAgICBnbEdlbkZyYW1lYnVmZmVyc0NvbnRleHRBTkdMRQogICAgIGdsR2VuRnJhbWVidWZmZXJz
T0VTQ29udGV4dEFOR0xFCi0gICAgZ2xHZW5QYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAg
Z2xHZW5Qcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFCiAgICAgZ2xHZW5RdWVyaWVzQ29udGV4
dEFOR0xFCiAgICAgZ2xHZW5RdWVyaWVzRVhUQ29udGV4dEFOR0xFCkBAIC0xMTI1LDYgKzExMzQs
NyBAQCBFWFBPUlRTCiAgICAgZ2xHZXRJbnRlZ2VyNjRpX3ZDb250ZXh0QU5HTEUKICAgICBnbEdl
dEludGVnZXI2NGlfdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2VyNjR2
Q29udGV4dEFOR0xFCisgICAgZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xFCiAgICAgZ2xH
ZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXJpX3ZD
b250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRQpA
QCAtMTE0NCw4ICsxMTU0LDYgQEAgRVhQT1JUUwogICAgIGdsR2V0T2JqZWN0TGFiZWxLSFJDb250
ZXh0QU5HTEUKICAgICBnbEdldE9iamVjdFB0ckxhYmVsQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRP
YmplY3RQdHJMYWJlbEtIUkNvbnRleHRBTkdMRQotICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hS
T01JVU1Db250ZXh0QU5HTEUKLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNQ29udGV4
dEFOR0xFCiAgICAgZ2xHZXRQb2ludGVydkNvbnRleHRBTkdMRQogICAgIGdsR2V0UG9pbnRlcnZL
SFJDb250ZXh0QU5HTEUKICAgICBnbEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRUNv
bnRleHRBTkdMRQpAQCAtMTI1NSw3ICsxMjYzLDkgQEAgRVhQT1JUUwogICAgIGdsR2V0blVuaWZv
cm11aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRQogICAgIGdsSGludENvbnRleHRBTkdMRQogICAg
IGdsSW1wb3J0TWVtb3J5RmRFWFRDb250ZXh0QU5HTEUKKyAgICBnbEltcG9ydE1lbW9yeVppcmNv
bkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xJbXBvcnRTZW1hcGhvcmVGZEVYVENvbnRl
eHRBTkdMRQorICAgIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5H
TEUKICAgICBnbEluc2VydEV2ZW50TWFya2VyRVhUQ29udGV4dEFOR0xFCiAgICAgZ2xJbnZhbGlk
YXRlRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKICAgICBnbEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
ckNvbnRleHRBTkdMRQpAQCAtMTI2MywxMSArMTI3MywxMiBAQCBFWFBPUlRTCiAgICAgZ2xJc0J1
ZmZlckNvbnRleHRBTkdMRQogICAgIGdsSXNFbmFibGVkQ29udGV4dEFOR0xFCiAgICAgZ2xJc0Vu
YWJsZWRpQ29udGV4dEFOR0xFCisgICAgZ2xJc0VuYWJsZWRpRVhUQ29udGV4dEFOR0xFCisgICAg
Z2xJc0VuYWJsZWRpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xJc0ZlbmNlTlZDb250ZXh0QU5HTEUK
ICAgICBnbElzRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKICAgICBnbElzRnJhbWVidWZmZXJPRVND
b250ZXh0QU5HTEUKICAgICBnbElzTWVtb3J5T2JqZWN0RVhUQ29udGV4dEFOR0xFCi0gICAgZ2xJ
c1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsSXNQcm9ncmFtQ29udGV4dEFOR0xFCiAg
ICAgZ2xJc1Byb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRQogICAgIGdsSXNRdWVyeUNvbnRleHRB
TkdMRQpAQCAtMTMwNyw4ICsxMzE4LDYgQEAgRVhQT1JUUwogICAgIGdsTWF0ZXJpYWx4Q29udGV4
dEFOR0xFCiAgICAgZ2xNYXRlcmlhbHh2Q29udGV4dEFOR0xFCiAgICAgZ2xNYXRyaXhJbmRleFBv
aW50ZXJPRVNDb250ZXh0QU5HTEUKLSAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNQ29u
dGV4dEFOR0xFCi0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xN
YXRyaXhNb2RlQ29udGV4dEFOR0xFCiAgICAgZ2xNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFJD
b250ZXh0QU5HTEUKICAgICBnbE1lbW9yeUJhcnJpZXJDb250ZXh0QU5HTEUKQEAgLTEzMzYsMTAg
KzEzNDUsNiBAQCBFWFBPUlRTCiAgICAgZ2xPcnRob2ZDb250ZXh0QU5HTEUKICAgICBnbE9ydGhv
eENvbnRleHRBTkdMRQogICAgIGdsUGF0Y2hQYXJhbWV0ZXJpQ29udGV4dEFOR0xFCi0gICAgZ2xQ
YXRoQ29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJP
TUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTUNvbnRleHRBTkdM
RQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbFBhdXNl
VHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUKICAgICBnbFBpeGVsU3RvcmVpQ29udGV4dEFO
R0xFCiAgICAgZ2xQb2ludFBhcmFtZXRlcmZDb250ZXh0QU5HTEUKQEAgLTEzNTksNyArMTM2NCw2
IEBAIEVYUE9SVFMKICAgICBnbFByb2dyYW1CaW5hcnlDb250ZXh0QU5HTEUKICAgICBnbFByb2dy
YW1CaW5hcnlPRVNDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1QYXJhbWV0ZXJpQ29udGV4dEFO
R0xFCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdM
RQogICAgIGdsUHJvZ3JhbVVuaWZvcm0xZkNvbnRleHRBTkdMRQogICAgIGdsUHJvZ3JhbVVuaWZv
cm0xZnZDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1Vbmlmb3JtMWlDb250ZXh0QU5HTEUKQEAg
LTE0NDEsMjAgKzE0NDUsMTIgQEAgRVhQT1JUUwogICAgIGdsU2hhZGVyQmluYXJ5Q29udGV4dEFO
R0xFCiAgICAgZ2xTaGFkZXJTb3VyY2VDb250ZXh0QU5HTEUKICAgICBnbFNpZ25hbFNlbWFwaG9y
ZUVYVENvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5H
TEUKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCiAg
ICAgZ2xTdGVuY2lsRnVuY0NvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZUNv
bnRleHRBTkdMRQogICAgIGdsU3RlbmNpbE1hc2tDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxN
YXNrU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxPcENvbnRleHRBTkdMRQogICAg
IGdsU3RlbmNpbE9wU2VwYXJhdGVDb250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRo
Q0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVN
Q29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlV
TUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsVGVzdEZlbmNlTlZDb250ZXh0QU5HTEUKICAgICBn
bFRleEJ1ZmZlckNvbnRleHRBTkdMRQogICAgIGdsVGV4QnVmZmVyUmFuZ2VDb250ZXh0QU5HTEUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJvY190
YWJsZV9lZ2xfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL3Byb2NfdGFibGVfZWdsX2F1dG9nZW4uY3BwCmluZGV4IDE3N2IzN2UzMjRjNTkyMDBkMDM5
NDRlY2MwMGRjNGMzMTBkZjgyZGYuLmU2MDcxYjQ0ZDI5OWU2MzAyYzJjM2Q1M2YwNTg0NDk5MGVh
NGE0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
cHJvY190YWJsZV9lZ2xfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9wcm9jX3RhYmxlX2VnbF9hdXRvZ2VuLmNwcApAQCAtMTUzLDkgKzE1Myw2
IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xCaW5kRnJhZ0RhdGFMb2Nh
dGlvbkluZGV4ZWRFWFQiLCBQKGdsOjpCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQpfSwK
ICAgICB7ImdsQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUQ29udGV4dEFOR0xFIiwKICAg
ICAgUChnbDo6QmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUQ29udGV4dEFOR0xFKX0sCi0g
ICAgeyJnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTSIsIFAoZ2w6OkJpbmRGcmFn
bWVudElucHV0TG9jYXRpb25DSFJPTUlVTSl9LAotICAgIHsiZ2xCaW5kRnJhZ21lbnRJbnB1dExv
Y2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUiLAotICAgICBQKGdsOjpCaW5kRnJhZ21lbnRJbnB1
dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsQmluZEZyYW1lYnVmZmVy
IiwgUChnbDo6QmluZEZyYW1lYnVmZmVyKX0sCiAgICAgeyJnbEJpbmRGcmFtZWJ1ZmZlckNvbnRl
eHRBTkdMRSIsIFAoZ2w6OkJpbmRGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xC
aW5kRnJhbWVidWZmZXJPRVMiLCBQKGdsOjpCaW5kRnJhbWVidWZmZXJPRVMpfSwKQEAgLTE4OCwx
MCArMTg1LDI2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xCbGVuZEVx
dWF0aW9uQ29udGV4dEFOR0xFIiwgUChnbDo6QmxlbmRFcXVhdGlvbkNvbnRleHRBTkdMRSl9LAog
ICAgIHsiZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUiLCBQKGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJh
dGUpfSwKICAgICB7ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlQ29udGV4dEFOR0xFIiwgUChnbDo6
QmxlbmRFcXVhdGlvblNlcGFyYXRlQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbEJsZW5kRXF1YXRp
b25TZXBhcmF0ZWlFWFQiLCBQKGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUKX0sCisgICAg
eyJnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEVx
dWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWlPRVMiLCBQKGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKX0sCisgICAgeyJn
bEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEVxdWF0
aW9uU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbEJsZW5kRXF1YXRpb25pRVhU
IiwgUChnbDo6QmxlbmRFcXVhdGlvbmlFWFQpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvbmlFWFRD
b250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRSl9LAorICAg
IHsiZ2xCbGVuZEVxdWF0aW9uaU9FUyIsIFAoZ2w6OkJsZW5kRXF1YXRpb25pT0VTKX0sCisgICAg
eyJnbEJsZW5kRXF1YXRpb25pT0VTQ29udGV4dEFOR0xFIiwgUChnbDo6QmxlbmRFcXVhdGlvbmlP
RVNDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsQmxlbmRGdW5jIiwgUChnbDo6QmxlbmRGdW5jKX0s
CiAgICAgeyJnbEJsZW5kRnVuY0NvbnRleHRBTkdMRSIsIFAoZ2w6OkJsZW5kRnVuY0NvbnRleHRB
TkdMRSl9LAogICAgIHsiZ2xCbGVuZEZ1bmNTZXBhcmF0ZSIsIFAoZ2w6OkJsZW5kRnVuY1NlcGFy
YXRlKX0sCiAgICAgeyJnbEJsZW5kRnVuY1NlcGFyYXRlQ29udGV4dEFOR0xFIiwgUChnbDo6Qmxl
bmRGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsQmxlbmRGdW5jU2VwYXJhdGVp
RVhUIiwgUChnbDo6QmxlbmRGdW5jU2VwYXJhdGVpRVhUKX0sCisgICAgeyJnbEJsZW5kRnVuY1Nl
cGFyYXRlaUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OkJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRl
eHRBTkdMRSl9LAorICAgIHsiZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMiLCBQKGdsOjpCbGVuZEZ1
bmNTZXBhcmF0ZWlPRVMpfSwKKyAgICB7ImdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTQ29udGV4dEFO
R0xFIiwgUChnbDo6QmxlbmRGdW5jU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFKX0sCisgICAgeyJn
bEJsZW5kRnVuY2lFWFQiLCBQKGdsOjpCbGVuZEZ1bmNpRVhUKX0sCisgICAgeyJnbEJsZW5kRnVu
Y2lFWFRDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFKX0sCisg
ICAgeyJnbEJsZW5kRnVuY2lPRVMiLCBQKGdsOjpCbGVuZEZ1bmNpT0VTKX0sCisgICAgeyJnbEJs
ZW5kRnVuY2lPRVNDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xF
KX0sCiAgICAgeyJnbEJsaXRGcmFtZWJ1ZmZlciIsIFAoZ2w6OkJsaXRGcmFtZWJ1ZmZlcil9LAog
ICAgIHsiZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSIsIFAoZ2w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xF
KX0sCiAgICAgeyJnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFQ29udGV4dEFOR0xFIiwgUChnbDo6Qmxp
dEZyYW1lYnVmZmVyQU5HTEVDb250ZXh0QU5HTEUpfSwKQEAgLTI0Miw2ICsyNTUsMTAgQEAgUHJv
Y0VudHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbENvbG9yNHhDb250ZXh0QU5HTEUiLCBQ
KGdsOjpDb2xvcjR4Q29udGV4dEFOR0xFKX0sCiAgICAgeyJnbENvbG9yTWFzayIsIFAoZ2w6OkNv
bG9yTWFzayl9LAogICAgIHsiZ2xDb2xvck1hc2tDb250ZXh0QU5HTEUiLCBQKGdsOjpDb2xvck1h
c2tDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsQ29sb3JNYXNraUVYVCIsIFAoZ2w6OkNvbG9yTWFz
a2lFWFQpfSwKKyAgICB7ImdsQ29sb3JNYXNraUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OkNvbG9y
TWFza2lFWFRDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsQ29sb3JNYXNraU9FUyIsIFAoZ2w6OkNv
bG9yTWFza2lPRVMpfSwKKyAgICB7ImdsQ29sb3JNYXNraU9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6
OkNvbG9yTWFza2lPRVNDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsQ29sb3JQb2ludGVyIiwgUChn
bDo6Q29sb3JQb2ludGVyKX0sCiAgICAgeyJnbENvbG9yUG9pbnRlckNvbnRleHRBTkdMRSIsIFAo
Z2w6OkNvbG9yUG9pbnRlckNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xDb21waWxlU2hhZGVyIiwg
UChnbDo6Q29tcGlsZVNoYWRlcil9LApAQCAtMjkxLDE2ICszMDgsNiBAQCBQcm9jRW50cnkgZ19w
cm9jVGFibGVbXSA9IHsKICAgICB7ImdsQ29weVRleHR1cmUzREFOR0xFQ29udGV4dEFOR0xFIiwg
UChnbDo6Q29weVRleHR1cmUzREFOR0xFQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbENvcHlUZXh0
dXJlQ0hST01JVU0iLCBQKGdsOjpDb3B5VGV4dHVyZUNIUk9NSVVNKX0sCiAgICAgeyJnbENvcHlU
ZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpDb3B5VGV4dHVyZUNIUk9NSVVNQ29u
dGV4dEFOR0xFKX0sCi0gICAgeyJnbENvdmVyRmlsbFBhdGhDSFJPTUlVTSIsIFAoZ2w6OkNvdmVy
RmlsbFBhdGhDSFJPTUlVTSl9LAotICAgIHsiZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0
QU5HTEUiLCBQKGdsOjpDb3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7
ImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNIiwgUChnbDo6Q292ZXJGaWxsUGF0aElu
c3RhbmNlZENIUk9NSVVNKX0sCi0gICAgeyJnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TUNvbnRleHRBTkdMRSIsCi0gICAgIFAoZ2w6OkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTSIsIFAoZ2w6
OkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKX0sCi0gICAgeyJnbENvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFIiwgUChnbDo6Q292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5H
TEUpfSwKLSAgICB7ImdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0iLCBQKGdsOjpD
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSl9LAotICAgIHsiZ2xDb3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSIsCi0gICAgIFAoZ2w6OkNvdmVyU3Ryb2tl
UGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbENvdmVyYWdlTW9k
dWxhdGlvbkNIUk9NSVVNIiwgUChnbDo6Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0pfSwKICAg
ICB7ImdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpDb3Zl
cmFnZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xDcmVhdGVNZW1v
cnlPYmplY3RzRVhUIiwgUChnbDo6Q3JlYXRlTWVtb3J5T2JqZWN0c0VYVCl9LApAQCAtMzMxLDgg
KzMzOCw2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xEZWxldGVGcmFt
ZWJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUiLCBQKGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnNPRVNDb250
ZXh0QU5HTEUpfSwKICAgICB7ImdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCIsIFAoZ2w6OkRlbGV0
ZU1lbW9yeU9iamVjdHNFWFQpfSwKICAgICB7ImdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVENvbnRl
eHRBTkdMRSIsIFAoZ2w6OkRlbGV0ZU1lbW9yeU9iamVjdHNFWFRDb250ZXh0QU5HTEUpfSwKLSAg
ICB7ImdsRGVsZXRlUGF0aHNDSFJPTUlVTSIsIFAoZ2w6OkRlbGV0ZVBhdGhzQ0hST01JVU0pfSwK
LSAgICB7ImdsRGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAoZ2w6OkRlbGV0ZVBh
dGhzQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsRGVsZXRlUHJvZ3JhbSIsIFAoZ2w6
OkRlbGV0ZVByb2dyYW0pfSwKICAgICB7ImdsRGVsZXRlUHJvZ3JhbUNvbnRleHRBTkdMRSIsIFAo
Z2w6OkRlbGV0ZVByb2dyYW1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsRGVsZXRlUHJvZ3JhbVBp
cGVsaW5lcyIsIFAoZ2w6OkRlbGV0ZVByb2dyYW1QaXBlbGluZXMpfSwKQEAgLTM3OSw2ICszODQs
MTAgQEAgUHJvY0VudHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbERpc2FibGVFeHRlbnNp
b25BTkdMRUNvbnRleHRBTkdMRSIsIFAoZ2w6OkRpc2FibGVFeHRlbnNpb25BTkdMRUNvbnRleHRB
TkdMRSl9LAogICAgIHsiZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkiLCBQKGdsOjpEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkpfSwKICAgICB7ImdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5Q29u
dGV4dEFOR0xFIiwgUChnbDo6RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5Q29udGV4dEFOR0xFKX0s
CisgICAgeyJnbERpc2FibGVpRVhUIiwgUChnbDo6RGlzYWJsZWlFWFQpfSwKKyAgICB7ImdsRGlz
YWJsZWlFWFRDb250ZXh0QU5HTEUiLCBQKGdsOjpEaXNhYmxlaUVYVENvbnRleHRBTkdMRSl9LAor
ICAgIHsiZ2xEaXNhYmxlaU9FUyIsIFAoZ2w6OkRpc2FibGVpT0VTKX0sCisgICAgeyJnbERpc2Fi
bGVpT0VTQ29udGV4dEFOR0xFIiwgUChnbDo6RGlzYWJsZWlPRVNDb250ZXh0QU5HTEUpfSwKICAg
ICB7ImdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUIiwgUChnbDo6RGlzY2FyZEZyYW1lYnVmZmVyRVhU
KX0sCiAgICAgeyJnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OkRp
c2NhcmRGcmFtZWJ1ZmZlckVYVENvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xEaXNwYXRjaENvbXB1
dGUiLCBQKGdsOjpEaXNwYXRjaENvbXB1dGUpfSwKQEAgLTQ2MSw2ICs0NzAsMTAgQEAgUHJvY0Vu
dHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbEVuYWJsZUNvbnRleHRBTkdMRSIsIFAoZ2w6
OkVuYWJsZUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIs
IFAoZ2w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KX0sCiAgICAgeyJnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5Q29udGV4dEFOR0xFIiwgUChnbDo6RW5hYmxlVmVydGV4QXR0cmliQXJyYXlDb250
ZXh0QU5HTEUpfSwKKyAgICB7ImdsRW5hYmxlaUVYVCIsIFAoZ2w6OkVuYWJsZWlFWFQpfSwKKyAg
ICB7ImdsRW5hYmxlaUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OkVuYWJsZWlFWFRDb250ZXh0QU5H
TEUpfSwKKyAgICB7ImdsRW5hYmxlaU9FUyIsIFAoZ2w6OkVuYWJsZWlPRVMpfSwKKyAgICB7Imds
RW5hYmxlaU9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6OkVuYWJsZWlPRVNDb250ZXh0QU5HTEUpfSwK
ICAgICB7ImdsRW5kUXVlcnkiLCBQKGdsOjpFbmRRdWVyeSl9LAogICAgIHsiZ2xFbmRRdWVyeUNv
bnRleHRBTkdMRSIsIFAoZ2w6OkVuZFF1ZXJ5Q29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEVuZFF1
ZXJ5RVhUIiwgUChnbDo6RW5kUXVlcnlFWFQpfSwKQEAgLTUyMyw4ICs1MzYsNiBAQCBQcm9jRW50
cnkgZ19wcm9jVGFibGVbXSA9IHsKICAgICB7ImdsR2VuRnJhbWVidWZmZXJzQ29udGV4dEFOR0xF
IiwgUChnbDo6R2VuRnJhbWVidWZmZXJzQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEdlbkZyYW1l
YnVmZmVyc09FUyIsIFAoZ2w6OkdlbkZyYW1lYnVmZmVyc09FUyl9LAogICAgIHsiZ2xHZW5GcmFt
ZWJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUiLCBQKGdsOjpHZW5GcmFtZWJ1ZmZlcnNPRVNDb250ZXh0
QU5HTEUpfSwKLSAgICB7ImdsR2VuUGF0aHNDSFJPTUlVTSIsIFAoZ2w6OkdlblBhdGhzQ0hST01J
VU0pfSwKLSAgICB7ImdsR2VuUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAoZ2w6OkdlblBh
dGhzQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsR2VuUHJvZ3JhbVBpcGVsaW5lcyIs
IFAoZ2w6OkdlblByb2dyYW1QaXBlbGluZXMpfSwKICAgICB7ImdsR2VuUHJvZ3JhbVBpcGVsaW5l
c0NvbnRleHRBTkdMRSIsIFAoZ2w6OkdlblByb2dyYW1QaXBlbGluZXNDb250ZXh0QU5HTEUpfSwK
ICAgICB7ImdsR2VuUXVlcmllcyIsIFAoZ2w6OkdlblF1ZXJpZXMpfSwKQEAgLTYzNSw2ICs2NDYs
OCBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9IHsKICAgICB7ImdsR2V0SW50ZWdlcjY0aV92
Um9idXN0QU5HTEVDb250ZXh0QU5HTEUiLCBQKGdsOjpHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xHZXRJbnRlZ2VyNjR2IiwgUChnbDo6R2V0SW50ZWdl
cjY0dil9LAogICAgIHsiZ2xHZXRJbnRlZ2VyNjR2Q29udGV4dEFOR0xFIiwgUChnbDo6R2V0SW50
ZWdlcjY0dkNvbnRleHRBTkdMRSl9LAorICAgIHsiZ2xHZXRJbnRlZ2VyNjR2RVhUIiwgUChnbDo6
R2V0SW50ZWdlcjY0dkVYVCl9LAorICAgIHsiZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xF
IiwgUChnbDo6R2V0SW50ZWdlcjY0dkVYVENvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xHZXRJbnRl
Z2VyNjR2Um9idXN0QU5HTEUiLCBQKGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUpfSwKICAg
ICB7ImdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFIiwgUChnbDo6R2V0SW50
ZWdlcjY0dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEdldEludGVnZXJpX3Yi
LCBQKGdsOjpHZXRJbnRlZ2VyaV92KX0sCkBAIC02NzEsMTAgKzY4NCw2IEBAIFByb2NFbnRyeSBn
X3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xHZXRPYmplY3RMYWJlbEtIUkNvbnRleHRBTkdMRSIs
IFAoZ2w6OkdldE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEdldE9iamVj
dFB0ckxhYmVsS0hSIiwgUChnbDo6R2V0T2JqZWN0UHRyTGFiZWxLSFIpfSwKICAgICB7ImdsR2V0
T2JqZWN0UHRyTGFiZWxLSFJDb250ZXh0QU5HTEUiLCBQKGdsOjpHZXRPYmplY3RQdHJMYWJlbEtI
UkNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTSIsIFAo
Z2w6OkdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKX0sCi0gICAgeyJnbEdldFBhdGhQYXJhbWV0
ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6R2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01J
VU1Db250ZXh0QU5HTEUpfSwKLSAgICB7ImdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0iLCBQ
KGdsOjpHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSl9LAotICAgIHsiZ2xHZXRQYXRoUGFyYW1l
dGVyaXZDSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAoZ2w6OkdldFBhdGhQYXJhbWV0ZXJpdkNIUk9N
SVVNQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEdldFBvaW50ZXJ2IiwgUChnbDo6R2V0UG9pbnRl
cnYpfSwKICAgICB7ImdsR2V0UG9pbnRlcnZDb250ZXh0QU5HTEUiLCBQKGdsOjpHZXRQb2ludGVy
dkNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xHZXRQb2ludGVydktIUiIsIFAoZ2w6OkdldFBvaW50
ZXJ2S0hSKX0sCkBAIC04OTksOCArOTA4LDE0IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0g
ewogICAgIHsiZ2xIaW50Q29udGV4dEFOR0xFIiwgUChnbDo6SGludENvbnRleHRBTkdMRSl9LAog
ICAgIHsiZ2xJbXBvcnRNZW1vcnlGZEVYVCIsIFAoZ2w6OkltcG9ydE1lbW9yeUZkRVhUKX0sCiAg
ICAgeyJnbEltcG9ydE1lbW9yeUZkRVhUQ29udGV4dEFOR0xFIiwgUChnbDo6SW1wb3J0TWVtb3J5
RmRFWFRDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5H
TEUiLCBQKGdsOjpJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSl9LAorICAgIHsiZ2xJbXBv
cnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRSIsCisgICAgIFAoZ2w6OkltcG9y
dE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEltcG9ydFNl
bWFwaG9yZUZkRVhUIiwgUChnbDo6SW1wb3J0U2VtYXBob3JlRmRFWFQpfSwKICAgICB7ImdsSW1w
b3J0U2VtYXBob3JlRmRFWFRDb250ZXh0QU5HTEUiLCBQKGdsOjpJbXBvcnRTZW1hcGhvcmVGZEVY
VENvbnRleHRBTkdMRSl9LAorICAgIHsiZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdM
RSIsIFAoZ2w6OkltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFKX0sCisgICAgeyJnbElt
cG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFIiwKKyAgICAgUChnbDo6
SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUpfSwKICAgICB7Imds
SW5zZXJ0RXZlbnRNYXJrZXJFWFQiLCBQKGdsOjpJbnNlcnRFdmVudE1hcmtlckVYVCl9LAogICAg
IHsiZ2xJbnNlcnRFdmVudE1hcmtlckVYVENvbnRleHRBTkdMRSIsIFAoZ2w6Okluc2VydEV2ZW50
TWFya2VyRVhUQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEludmFsaWRhdGVGcmFtZWJ1ZmZlciIs
IFAoZ2w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcil9LApAQCAtOTEzLDYgKzkyOCwxMCBAQCBQcm9j
RW50cnkgZ19wcm9jVGFibGVbXSA9IHsKICAgICB7ImdsSXNCdWZmZXJDb250ZXh0QU5HTEUiLCBQ
KGdsOjpJc0J1ZmZlckNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xJc0VuYWJsZWQiLCBQKGdsOjpJ
c0VuYWJsZWQpfSwKICAgICB7ImdsSXNFbmFibGVkQ29udGV4dEFOR0xFIiwgUChnbDo6SXNFbmFi
bGVkQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbElzRW5hYmxlZGlFWFQiLCBQKGdsOjpJc0VuYWJs
ZWRpRVhUKX0sCisgICAgeyJnbElzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEUiLCBQKGdsOjpJc0Vu
YWJsZWRpRVhUQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbElzRW5hYmxlZGlPRVMiLCBQKGdsOjpJ
c0VuYWJsZWRpT0VTKX0sCisgICAgeyJnbElzRW5hYmxlZGlPRVNDb250ZXh0QU5HTEUiLCBQKGds
OjpJc0VuYWJsZWRpT0VTQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbElzRmVuY2VOViIsIFAoZ2w6
OklzRmVuY2VOVil9LAogICAgIHsiZ2xJc0ZlbmNlTlZDb250ZXh0QU5HTEUiLCBQKGdsOjpJc0Zl
bmNlTlZDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsSXNGcmFtZWJ1ZmZlciIsIFAoZ2w6OklzRnJh
bWVidWZmZXIpfSwKQEAgLTkyMSw4ICs5NDAsNiBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9
IHsKICAgICB7ImdsSXNGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6OklzRnJhbWVi
dWZmZXJPRVNDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsSXNNZW1vcnlPYmplY3RFWFQiLCBQKGds
OjpJc01lbW9yeU9iamVjdEVYVCl9LAogICAgIHsiZ2xJc01lbW9yeU9iamVjdEVYVENvbnRleHRB
TkdMRSIsIFAoZ2w6OklzTWVtb3J5T2JqZWN0RVhUQ29udGV4dEFOR0xFKX0sCi0gICAgeyJnbElz
UGF0aENIUk9NSVVNIiwgUChnbDo6SXNQYXRoQ0hST01JVU0pfSwKLSAgICB7ImdsSXNQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAog
ICAgIHsiZ2xJc1Byb2dyYW0iLCBQKGdsOjpJc1Byb2dyYW0pfSwKICAgICB7ImdsSXNQcm9ncmFt
Q29udGV4dEFOR0xFIiwgUChnbDo6SXNQcm9ncmFtQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbElz
UHJvZ3JhbVBpcGVsaW5lIiwgUChnbDo6SXNQcm9ncmFtUGlwZWxpbmUpfSwKQEAgLTEwMDIsMTAg
KzEwMTksNiBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9IHsKICAgICB7ImdsTWF0ZXJpYWx4
dkNvbnRleHRBTkdMRSIsIFAoZ2w6Ok1hdGVyaWFseHZDb250ZXh0QU5HTEUpfSwKICAgICB7Imds
TWF0cml4SW5kZXhQb2ludGVyT0VTIiwgUChnbDo6TWF0cml4SW5kZXhQb2ludGVyT0VTKX0sCiAg
ICAgeyJnbE1hdHJpeEluZGV4UG9pbnRlck9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6Ok1hdHJpeElu
ZGV4UG9pbnRlck9FU0NvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xNYXRyaXhMb2FkSWRlbnRpdHlD
SFJPTUlVTSIsIFAoZ2w6Ok1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKX0sCi0gICAgeyJnbE1h
dHJpeExvYWRJZGVudGl0eUNIUk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6TWF0cml4TG9hZElk
ZW50aXR5Q0hST01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7ImdsTWF0cml4TG9hZGZDSFJPTUlV
TSIsIFAoZ2w6Ok1hdHJpeExvYWRmQ0hST01JVU0pfSwKLSAgICB7ImdsTWF0cml4TG9hZGZDSFJP
TUlVTUNvbnRleHRBTkdMRSIsIFAoZ2w6Ok1hdHJpeExvYWRmQ0hST01JVU1Db250ZXh0QU5HTEUp
fSwKICAgICB7ImdsTWF0cml4TW9kZSIsIFAoZ2w6Ok1hdHJpeE1vZGUpfSwKICAgICB7ImdsTWF0
cml4TW9kZUNvbnRleHRBTkdMRSIsIFAoZ2w6Ok1hdHJpeE1vZGVDb250ZXh0QU5HTEUpfSwKICAg
ICB7ImdsTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSIiwgUChnbDo6TWF4U2hhZGVyQ29tcGls
ZXJUaHJlYWRzS0hSKX0sCkBAIC0xMDU5LDE0ICsxMDcyLDYgQEAgUHJvY0VudHJ5IGdfcHJvY1Rh
YmxlW10gPSB7CiAgICAgeyJnbE9ydGhvZkNvbnRleHRBTkdMRSIsIFAoZ2w6Ok9ydGhvZkNvbnRl
eHRBTkdMRSl9LAogICAgIHsiZ2xPcnRob3giLCBQKGdsOjpPcnRob3gpfSwKICAgICB7ImdsT3J0
aG94Q29udGV4dEFOR0xFIiwgUChnbDo6T3J0aG94Q29udGV4dEFOR0xFKX0sCi0gICAgeyJnbFBh
dGhDb21tYW5kc0NIUk9NSVVNIiwgUChnbDo6UGF0aENvbW1hbmRzQ0hST01JVU0pfSwKLSAgICB7
ImdsUGF0aENvbW1hbmRzQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpQYXRoQ29tbWFuZHND
SFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNIiwg
UChnbDo6UGF0aFBhcmFtZXRlcmZDSFJPTUlVTSl9LAotICAgIHsiZ2xQYXRoUGFyYW1ldGVyZkNI
Uk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6UGF0aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRB
TkdMRSl9LAotICAgIHsiZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNIiwgUChnbDo6UGF0aFBhcmFt
ZXRlcmlDSFJPTUlVTSl9LAotICAgIHsiZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29udGV4dEFO
R0xFIiwgUChnbDo6UGF0aFBhcmFtZXRlcmlDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAgIHsi
Z2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTSIsIFAoZ2w6OlBhdGhTdGVuY2lsRnVuY0NIUk9NSVVN
KX0sCi0gICAgeyJnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6
UGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsUGF1c2VUcmFu
c2Zvcm1GZWVkYmFjayIsIFAoZ2w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2spfSwKICAgICB7Imds
UGF1c2VUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRSIsIFAoZ2w6OlBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2tDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsUGl4ZWxTdG9yZWkiLCBQKGdsOjpQaXhl
bFN0b3JlaSl9LApAQCAtMTEwMSw5ICsxMTA2LDYgQEAgUHJvY0VudHJ5IGdfcHJvY1RhYmxlW10g
PSB7CiAgICAgeyJnbFByb2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUiLCBQKGdsOjpQcm9ncmFt
QmluYXJ5T0VTQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbFByb2dyYW1QYXJhbWV0ZXJpIiwgUChn
bDo6UHJvZ3JhbVBhcmFtZXRlcmkpfSwKICAgICB7ImdsUHJvZ3JhbVBhcmFtZXRlcmlDb250ZXh0
QU5HTEUiLCBQKGdsOjpQcm9ncmFtUGFyYW1ldGVyaUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSIsIFAoZ2w6OlByb2dyYW1QYXRoRnJh
Z21lbnRJbnB1dEdlbkNIUk9NSVVNKX0sCi0gICAgeyJnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNQ29udGV4dEFOR0xFIiwKLSAgICAgUChnbDo6UHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsUHJvZ3JhbVVuaWZvcm0x
ZiIsIFAoZ2w6OlByb2dyYW1Vbmlmb3JtMWYpfSwKICAgICB7ImdsUHJvZ3JhbVVuaWZvcm0xZkNv
bnRleHRBTkdMRSIsIFAoZ2w6OlByb2dyYW1Vbmlmb3JtMWZDb250ZXh0QU5HTEUpfSwKICAgICB7
ImdsUHJvZ3JhbVVuaWZvcm0xZnYiLCBQKGdsOjpQcm9ncmFtVW5pZm9ybTFmdil9LApAQCAtMTI2
NSwxMSArMTI2Nyw2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xTaGFk
ZXJTb3VyY2VDb250ZXh0QU5HTEUiLCBQKGdsOjpTaGFkZXJTb3VyY2VDb250ZXh0QU5HTEUpfSwK
ICAgICB7ImdsU2lnbmFsU2VtYXBob3JlRVhUIiwgUChnbDo6U2lnbmFsU2VtYXBob3JlRVhUKX0s
CiAgICAgeyJnbFNpZ25hbFNlbWFwaG9yZUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OlNpZ25hbFNl
bWFwaG9yZUVYVENvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlV
TSIsIFAoZ2w6OlN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKX0sCi0gICAgeyJnbFN0ZW5jaWxGaWxs
UGF0aENIUk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6U3RlbmNpbEZpbGxQYXRoQ0hST01JVU1D
b250ZXh0QU5HTEUpfSwKLSAgICB7ImdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0i
LCBQKGdsOjpTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSl9LAotICAgIHsiZ2xTdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSIsCi0gICAgIFAoZ2w6OlN0
ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbFN0
ZW5jaWxGdW5jIiwgUChnbDo6U3RlbmNpbEZ1bmMpfSwKICAgICB7ImdsU3RlbmNpbEZ1bmNDb250
ZXh0QU5HTEUiLCBQKGdsOjpTdGVuY2lsRnVuY0NvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xTdGVu
Y2lsRnVuY1NlcGFyYXRlIiwgUChnbDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZSl9LApAQCAtMTI4Miwy
NSArMTI3OSw2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xTdGVuY2ls
T3BDb250ZXh0QU5HTEUiLCBQKGdsOjpTdGVuY2lsT3BDb250ZXh0QU5HTEUpfSwKICAgICB7Imds
U3RlbmNpbE9wU2VwYXJhdGUiLCBQKGdsOjpTdGVuY2lsT3BTZXBhcmF0ZSl9LAogICAgIHsiZ2xT
dGVuY2lsT3BTZXBhcmF0ZUNvbnRleHRBTkdMRSIsIFAoZ2w6OlN0ZW5jaWxPcFNlcGFyYXRlQ29u
dGV4dEFOR0xFKX0sCi0gICAgeyJnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0iLCBQKGdsOjpT
dGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKX0sCi0gICAgeyJnbFN0ZW5jaWxTdHJva2VQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFKX0sCi0gICAgeyJnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0iLCBQ
KGdsOjpTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKX0sCi0gICAgeyJnbFN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUiLAotICAgICBQKGdsOjpT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKX0sCi0gICAgeyJn
bFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNIiwgUChnbDo6U3RlbmNpbFRoZW5Db3Zl
ckZpbGxQYXRoQ0hST01JVU0pfSwKLSAgICB7ImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUiLAotICAgICBQKGdsOjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhD
SFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgIFAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aElu
c3RhbmNlZENIUk9NSVVNKX0sCi0gICAgeyJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIiwKLSAgICAgUChnbDo6U3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7ImdsU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSIsIFAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoQ0hST01JVU0pfSwKLSAgICB7ImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlV
TUNvbnRleHRBTkdMRSIsCi0gICAgIFAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7ImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgIFAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0pfSwKLSAgICB7ImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSIsCi0gICAgIFAoZ2w6OlN0ZW5jaWxUaGVuQ292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsVGVz
dEZlbmNlTlYiLCBQKGdsOjpUZXN0RmVuY2VOVil9LAogICAgIHsiZ2xUZXN0RmVuY2VOVkNvbnRl
eHRBTkdMRSIsIFAoZ2w6OlRlc3RGZW5jZU5WQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbFRleENv
b3JkUG9pbnRlciIsIFAoZ2w6OlRleENvb3JkUG9pbnRlcil9LApAQCAtMTU0MCw1ICsxNTE4LDUg
QEAgUHJvY0VudHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbFdlaWdodFBvaW50ZXJPRVMi
LCBQKGdsOjpXZWlnaHRQb2ludGVyT0VTKX0sCiAgICAgeyJnbFdlaWdodFBvaW50ZXJPRVNDb250
ZXh0QU5HTEUiLCBQKGdsOjpXZWlnaHRQb2ludGVyT0VTQ29udGV4dEFOR0xFKX19OwogCi1zaXpl
X3QgZ19udW1Qcm9jcyA9IDE0MzY7CitzaXplX3QgZ19udW1Qcm9jcyA9IDE0MjQ7CiB9ICAvLyBu
YW1lc3BhY2UgZWdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvQlVJTEQuZ24K
aW5kZXggYTdmNWM0MDExNTc3ZmQ4YmJkNzUwNWI5MTkyNjNlM2ZhYWIwODM0MS4uNTk3NzJiNzNk
ZTViMDY2ZjBmOWNlY2M1MDcxYzM2YTFiNjM4MDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9CVUlMRC5nbgpAQCAtMjQsOSArMjQsNyBAQCBhbmdsZV90ZXN0KCJ0ZXN0
X3V0aWxzX3VuaXR0ZXN0X2hlbHBlciIpIHsKICAgICAidGVzdF91dGlscy9ydW5uZXIvVGVzdFN1
aXRlX3VuaXR0ZXN0LmNwcCIsCiAgIF0KIAotICBkZXBzID0gWwotICAgICIkYW5nbGVfcm9vdDph
bmdsZV9jb21tb24iLAotICBdCisgIGRlcHMgPSBbICIkYW5nbGVfcm9vdDphbmdsZV9jb21tb24i
IF0KIH0KIAogdGVzdF9leHBlY3RhdGlvbnNfc291cmNlcyA9IFsKQEAgLTU5LDYgKzU3LDUzIEBA
IGFuZ2xlX3N0YXRpY19saWJyYXJ5KCJhbmdsZV90ZXN0X2V4cGVjdGF0aW9ucyIpIHsKICAgfQog
fQogCitjb25maWcoImFuZ2xlX2NvbW1vbl90ZXN0X3V0aWxzX2NvbmZpZyIpIHsKKyAgaW5jbHVk
ZV9kaXJzID0gWyAiLiIgXQorfQorCit0ZW1wbGF0ZSgiYW5nbGVfY29tbW9uX3Rlc3RfdXRpbHMi
KSB7CisgIGFzc2VydChkZWZpbmVkKGludm9rZXIuYW5nbGVfdXRpbCkpCisgIGFuZ2xlX3NvdXJj
ZV9zZXQodGFyZ2V0X25hbWUpIHsKKyAgICB0ZXN0b25seSA9IHRydWUKKyAgICBwdWJsaWNfY29u
ZmlncyA9IFsKKyAgICAgICI6YW5nbGVfY29tbW9uX3Rlc3RfdXRpbHNfY29uZmlnIiwKKyAgICAg
ICIkYW5nbGVfcm9vdDpsaWJyYXJ5X25hbWVfY29uZmlnIiwKKyAgICBdCisgICAgcHVibGljX2Rl
cHMgPSBbCisgICAgICAiJGFuZ2xlX3Jvb3Q6YW5nbGVfY29tbW9uIiwKKyAgICAgICIkYW5nbGVf
cm9vdDphbmdsZV9ncHVfaW5mb191dGlsIiwKKyAgICAgICIkYW5nbGVfcm9vdC91dGlsOiR7aW52
b2tlci5hbmdsZV91dGlsfSIsCisgICAgICAiLy90ZXN0aW5nL2dtb2NrIiwKKyAgICAgICIvL3Rl
c3RpbmcvZ3Rlc3QiLAorICAgICAgIi8vdGhpcmRfcGFydHkvZ29vZ2xldGVzdDpnbW9jayIsCisg
ICAgICAiLy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omd0ZXN0IiwKKyAgICBdCisgICAgc291cmNl
cyA9IFsKKyAgICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAiLAorICAgICAg
InRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiLAorICAgICAgInRlc3RfdXRpbHMvYW5n
bGVfdGVzdF9pbnN0YW50aWF0ZS5jcHAiLAorICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9p
bnN0YW50aWF0ZS5oIiwKKyAgICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uY3Bw
IiwKKyAgICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uaCIsCisgICAgICAidGVz
dF91dGlscy9nbF9yYWlpLmgiLAorICAgIF0KKyAgICBpZiAoaXNfbWFjKSB7CisgICAgICBzb3Vy
Y2VzICs9IFsKKyAgICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBs
ZS5oIiwKKyAgICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5t
bSIsCisgICAgICBdCisgICAgfQorICB9Cit9CisKK2FuZ2xlX2NvbW1vbl90ZXN0X3V0aWxzKCJh
bmdsZV9jb21tb25fdGVzdF91dGlsc19zaGFyZWQiKSB7CisgIGFuZ2xlX3V0aWwgPSAiYW5nbGVf
dXRpbCIKK30KKworYW5nbGVfY29tbW9uX3Rlc3RfdXRpbHMoImFuZ2xlX2NvbW1vbl90ZXN0X3V0
aWxzX3N0YXRpYyIpIHsKKyAgYW5nbGVfdXRpbCA9ICJhbmdsZV91dGlsX3N0YXRpYyIKK30KKwog
YW5nbGVfdGVzdCgiYW5nbGVfdW5pdHRlc3RzIikgewogICBzb3VyY2VzID0gYW5nbGVfdW5pdHRl
c3RzX3NvdXJjZXMKICAgbWFpbiA9ICJhbmdsZV91bml0dGVzdF9tYWluIgpAQCAtODEsOSArMTI2
LDcgQEAgYW5nbGVfdGVzdCgiYW5nbGVfdW5pdHRlc3RzIikgewogICBpZiAoIWlzX2FuZHJvaWQg
JiYgIWlzX2Z1Y2hzaWEpIHsKICAgICAjIFN5c3RlbVV0aWxzLlJ1bkFwcCwgdGhlIG9ubHkgdW5p
dHRlc3QgdXNpbmcgYSBoZWxwZXIgYmluYXJ5LCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZXNlCiAg
ICAgIyBwbGF0Zm9ybXMgeWV0LgotICAgIGRhdGFfZGVwcyA9IFsKLSAgICAgICI6dGVzdF91dGls
c191bml0dGVzdF9oZWxwZXIiLAotICAgIF0KKyAgICBkYXRhX2RlcHMgPSBbICI6dGVzdF91dGls
c191bml0dGVzdF9oZWxwZXIiIF0KICAgfQogfQogCkBAIC0xMTEsMTcgKzE1NCwxMiBAQCBpZiAo
aXNfd2luIHx8IGlzX2xpbnV4IHx8IGlzX21hYyB8fCBpc19hbmRyb2lkIHx8IGlzX2Z1Y2hzaWEp
IHsKICAgICAgIHNvdXJjZXMgKz0gYW5nbGVfZW5kMmVuZF90ZXN0c194MTFfc291cmNlcwogICAg
IH0KIAotICAgIGNvbmZpZ3MgKz0gWwotICAgICAgIiR7YW5nbGVfcm9vdH06bGliQU5HTEVfY29u
ZmlnIiwKLSAgICAgICIke2FuZ2xlX3Jvb3R9OmxpYnJhcnlfbmFtZV9jb25maWciLAotICAgIF0K
KyAgICBjb25maWdzICs9IFsgIiR7YW5nbGVfcm9vdH06bGliQU5HTEVfY29uZmlnIiBdCiAKICAg
ICBkZXBzID0gWworICAgICAgIjphbmdsZV9jb21tb25fdGVzdF91dGlsc19zaGFyZWQiLAogICAg
ICAgIjphbmdsZV90ZXN0X2V4cGVjdGF0aW9ucyIsCi0gICAgICAiJGFuZ2xlX3Jvb3Q6YW5nbGVf
Z3B1X2luZm9fdXRpbCIsCiAgICAgICAiJGFuZ2xlX3Jvb3Q6YW5nbGVfaW1hZ2VfdXRpbCIsCi0g
ICAgICAiJGFuZ2xlX3Jvb3QvdXRpbDphbmdsZV91dGlsIiwKLSAgICAgICIkYW5nbGVfcm9vdC91
dGlsOmFuZ2xlX3V0aWxfbG9hZGVyX2hlYWRlcnMiLAogICAgIF0KIAogICAgIGRhdGFfZGVwcyA9
IFsKQEAgLTE1OSwyMiArMTk3LDE1IEBAIGlmIChpc193aW4gfHwgaXNfbGludXggfHwgaXNfbWFj
IHx8IGlzX2FuZHJvaWQpIHsKICAgICAgIHNvdXJjZXMgKz0gYW5nbGVfd2hpdGVfYm94X3Rlc3Rz
X3dpbl9zb3VyY2VzCiAgICAgfQogCi0gICAgaWYgKGlzX21hYykgewotICAgICAgc291cmNlcyAr
PSBhbmdsZV93aGl0ZV9ib3hfdGVzdHNfbWFjX3NvdXJjZXMKLSAgICB9Ci0KLSAgICBjb25maWdz
ICs9IFsKLSAgICAgICIke2FuZ2xlX3Jvb3R9OmxpYkFOR0xFX2NvbmZpZyIsCi0gICAgICAiJHth
bmdsZV9yb290fTpsaWJyYXJ5X25hbWVfY29uZmlnIiwKLSAgICBdCisgICAgY29uZmlncyArPSBb
ICIke2FuZ2xlX3Jvb3R9OmxpYkFOR0xFX2NvbmZpZyIgXQogCiAgICAgZGVwcyA9IFsKKyAgICAg
ICI6YW5nbGVfY29tbW9uX3Rlc3RfdXRpbHNfc3RhdGljIiwKICAgICAgICIkYW5nbGVfcm9vdDps
aWJBTkdMRSIsCiAgICAgICAiJGFuZ2xlX3Jvb3Q6bGliRUdMX3N0YXRpYyIsCiAgICAgICAiJGFu
Z2xlX3Jvb3Q6bGliR0xFU3YyX3N0YXRpYyIsCiAgICAgICAiJGFuZ2xlX3Jvb3Q6cHJlcHJvY2Vz
c29yIiwKICAgICAgICIkYW5nbGVfcm9vdDp0cmFuc2xhdG9yIiwKLSAgICAgICIkYW5nbGVfcm9v
dC91dGlsOmFuZ2xlX3V0aWxfc3RhdGljIiwKICAgICBdCiAKICAgICBkZXBzICs9IFsgIiR7YW5n
bGVfcm9vdH06YW5nbGVfZ2xfZW51bV91dGlscyIgXQpAQCAtMTg4LDYgKzIxOSwzOCBAQCBpZiAo
aXNfd2luIHx8IGlzX2xpbnV4IHx8IGlzX21hYyB8fCBpc19hbmRyb2lkKSB7CiAgIH0KIH0KIAor
dGVtcGxhdGUoImFuZ2xlX3BlcmZ0ZXN0c19jb21tb24iKSB7CisgIGFzc2VydChkZWZpbmVkKGlu
dm9rZXIudGVzdF91dGlscykpCisKKyAgYW5nbGVfc291cmNlX3NldCh0YXJnZXRfbmFtZSkgewor
ICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHNvdXJjZXMgPSBbCisgICAgICAiLi4vdGhpcmRfcGFy
dHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIsCisgICAgICAicGVyZl90ZXN0cy9BTkdMRVBl
cmZUZXN0LmNwcCIsCisgICAgICAicGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmgiLAorICAgICAg
InBlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3MuY3BwIiwKKyAgICAgICJwZXJmX3Rlc3RzL0FO
R0xFUGVyZlRlc3RBcmdzLmgiLAorICAgICAgInBlcmZfdGVzdHMvRHJhd0NhbGxQZXJmUGFyYW1z
LmNwcCIsCisgICAgICAicGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuaCIsCisgICAgICAi
cGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfcmVzdWx0X3JlcG9ydGVyLmNjIiwKKyAg
ICAgICJwZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl9yZXN1bHRfcmVwb3J0ZXIuaCIs
CisgICAgICAicGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYyIsCisgICAg
ICAicGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5oIiwKKyAgICBdCisgICAg
ZGVwcyA9IFsgIiRhbmdsZV9qc29uY3BwX2Rpcjpqc29uY3BwIiBdCisgICAgcHVibGljX2RlcHMg
PSBbICIke2ludm9rZXIudGVzdF91dGlsc30iIF0KKyAgICBwdWJsaWNfY29uZmlncyArPSBbICIk
e2FuZ2xlX3Jvb3R9OmxpYkFOR0xFX2NvbmZpZyIgXQorICB9Cit9CisKK2FuZ2xlX3BlcmZ0ZXN0
c19jb21tb24oImFuZ2xlX3BlcmZ0ZXN0c19zaGFyZWQiKSB7CisgIHRlc3RfdXRpbHMgPSAiOmFu
Z2xlX2NvbW1vbl90ZXN0X3V0aWxzX3NoYXJlZCIKK30KKworYW5nbGVfcGVyZnRlc3RzX2NvbW1v
bigiYW5nbGVfcGVyZnRlc3RzX3N0YXRpYyIpIHsKKyAgdGVzdF91dGlscyA9ICI6YW5nbGVfY29t
bW9uX3Rlc3RfdXRpbHNfc3RhdGljIgorfQorCiBpZiAoaXNfd2luIHx8IGlzX2xpbnV4IHx8IGlz
X2FuZHJvaWQgfHwgaXNfbWFjKSB7CiAgIGltcG9ydCgiYW5nbGVfcGVyZnRlc3RzLmduaSIpCiAK
QEAgLTE5OCwxNyArMjYxLDEyIEBAIGlmIChpc193aW4gfHwgaXNfbGludXggfHwgaXNfYW5kcm9p
ZCB8fCBpc19tYWMpIHsKICAgICBtYWluID0gImFuZ2xlX3BlcmZ0ZXN0c19tYWluIgogCiAgICAg
ZGVwcyA9IFsKLSAgICAgICIkYW5nbGVfanNvbmNwcF9kaXI6anNvbmNwcCIsCisgICAgICAiOmFu
Z2xlX3BlcmZ0ZXN0c19zdGF0aWMiLAogICAgICAgIiRhbmdsZV9yb290OmxpYkFOR0xFIiwKICAg
ICAgICIkYW5nbGVfcm9vdDpsaWJFR0xfc3RhdGljIiwKICAgICAgICIkYW5nbGVfcm9vdDpsaWJH
TEVTdjJfc3RhdGljIiwKLSAgICAgICIkYW5nbGVfcm9vdC91dGlsOmFuZ2xlX3V0aWxfc3RhdGlj
IiwKICAgICBdCiAKLSAgICBpZiAoaXNfd2luKSB7Ci0gICAgICBzb3VyY2VzICs9IGFuZ2xlX3do
aXRlX2JveF9wZXJmX3Rlc3RzX3dpbl9zb3VyY2VzCi0gICAgfQotCiAgICAgIyBUaGVzZSB0ZXN0
cyBkZXBlbmQgb24gdnVsa2FuX2NvbW1hbmRfYnVmZmVyX3V0aWxzLCB3aGljaCBpcwogICAgICMg
bm90IHlldCBjb21wYXRpYmxlIHdpdGggbWFjCiAgICAgaWYgKGFuZ2xlX2VuYWJsZV92dWxrYW4g
JiYgIWlzX21hYykgewpAQCAtMjE4LDE4ICsyNzYsNDMgQEAgaWYgKGlzX3dpbiB8fCBpc19saW51
eCB8fCBpc19hbmRyb2lkIHx8IGlzX21hYykgewogICAgICAgICAiJGFuZ2xlX3Jvb3Qvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbjphbmdsZV92dWxrYW5fZW50cnlfcG9pbnRzIiwKICAgICAg
IF0KICAgICB9Ci0KLSAgICBjb25maWdzICs9IFsKLSAgICAgICIke2FuZ2xlX2pzb25jcHBfZGly
fTpqc29uY3BwX2NvbmZpZyIsCi0gICAgICAiJHthbmdsZV9yb290fTpsaWJBTkdMRV9jb25maWci
LAotICAgICAgIiR7YW5nbGVfcm9vdH06bGlicmFyeV9uYW1lX2NvbmZpZyIsCi0gICAgXQogICB9
CiB9CiAKIGlmIChpc193aW4gfHwgaXNfbGludXggfHwgaXNfYW5kcm9pZCB8fCBpc19tYWMgfHwg
aXNfZnVjaHNpYSkgewogICBpbXBvcnQoImFuZ2xlX3BlcmZ0ZXN0cy5nbmkiKQogCisgIGFuZ2xl
X3NvdXJjZV9zZXQoImFuZ2xlX3RyYWNlX3BlcmZ0ZXN0cyIpIHsKKyAgICB0ZXN0b25seSA9IHRy
dWUKKyAgICBpZiAoYnVpbGRfYW5nbGVfdHJhY2VfcGVyZl90ZXN0cykgeworICAgICAgaW1wb3J0
KCJwZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL2FuZ2xlX3RyYWNlX3BlcmZfdGVzdHMuZ25p
IikKKyAgICAgIHNvdXJjZXMgPSBhbmdsZV90cmFjZV9wZXJmX3NvdXJjZXMKKyAgICAgIGRlZmlu
ZXMgPSBhbmdsZV90cmFjZV9wZXJmX2RlZmluZXMKKyAgICAgIGRhdGEgPSBhbmdsZV90cmFjZV9w
ZXJmX2RhdGEKKyAgICAgIGRlcHMgPSBbCisgICAgICAgICI6YW5nbGVfcGVyZnRlc3RzX3NoYXJl
ZCIsCisgICAgICAgICIkYW5nbGVfcm9vdDphbmdsZV9jb21wcmVzc2lvbiIsCisgICAgICBdCisg
ICAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0KKyAgICAgICAgICBbICIkYW5nbGVfcm9vdDpjb25z
dHJ1Y3Rvcl9hbmRfZGVzdHJ1Y3Rvcl93YXJuaW5ncyIgXQorCisgICAgICAjIERpc2FibGUgb3B0
aW1pemF0aW9uIGluIHRoZSB0cmFjZSBwZXJmIHRlc3RzIHRvIGF2b2lkIG9wdGltaXppbmcgaHVn
ZSBmaWxlcy4KKyAgICAgIGlmICghaXNfZGVidWcpIHsKKyAgICAgICAgc3VwcHJlc3NlZF9jb25m
aWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmRlZmF1bHRfb3B0aW1pemF0aW9uIiBd
CisgICAgICAgIGNvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fb3B0aW1p
emUiIF0KKyAgICAgIH0KKworICAgICAgIyBUT0RPKGptYWRpbGwvY25vcnRocm9wKTogTGlmdCBh
ZnRlciB0cmFjZXMgdXBkYXRlZC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjMwCisgICAgICBpZiAo
aXNfd2luICYmIGN1cnJlbnRfY3B1ID09ICJ4ODYiKSB7CisgICAgICAgIGlmIChpc19jbGFuZykg
eworICAgICAgICAgIGNmbGFnc19jYyA9IFsgIi1Xbm8tc2hvcnRlbi02NC10by0zMiIgXQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgIGNmbGFnc19jYyA9IFsgIi93ZDQyNDQiIF0KKyAgICAg
ICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCiAgICMgVGhpcyB0ZXN0IHN1aXRlIGlzIGRlc2ln
bmVkIHRvIHJ1biBhZ2FpbnN0IGEgZ2VuZXJpYyBHTCBpbXBsZW1lbnRhdGlvbi4KICAgYW5nbGVf
dGVzdCgiYW5nbGVfcGVyZnRlc3RzIikgewogICAgIGluY2x1ZGVfZGlycyA9IFsgIi4iIF0KQEAg
LTIzNywxMiArMzIwLDggQEAgaWYgKGlzX3dpbiB8fCBpc19saW51eCB8fCBpc19hbmRyb2lkIHx8
IGlzX21hYyB8fCBpc19mdWNoc2lhKSB7CiAgICAgbWFpbiA9ICJhbmdsZV9wZXJmdGVzdHNfbWFp
biIKIAogICAgIGRlcHMgPSBbCi0gICAgICAiJGFuZ2xlX2pzb25jcHBfZGlyOmpzb25jcHAiLAot
ICAgICAgIiRhbmdsZV9yb290OmFuZ2xlX2NvbW1vbiIsCi0gICAgICAiJGFuZ2xlX3Jvb3Q6YW5n
bGVfZ3B1X2luZm9fdXRpbCIsCi0gICAgICAiJGFuZ2xlX3Jvb3Q6YW5nbGVfc3lzdGVtX3V0aWxz
IiwKLSAgICAgICIkYW5nbGVfcm9vdC91dGlsOmFuZ2xlX3V0aWwiLAotICAgICAgIiRhbmdsZV9y
b290L3V0aWw6YW5nbGVfdXRpbF9sb2FkZXJfaGVhZGVycyIsCisgICAgICAiOmFuZ2xlX3BlcmZ0
ZXN0c19zaGFyZWQiLAorICAgICAgIjphbmdsZV90cmFjZV9wZXJmdGVzdHMiLAogICAgICAgIiRh
bmdsZV9zcGlydl90b29sc19kaXI6c3B2dG9vbHNfdmFsIiwKICAgICBdCiAKQEAgLTI1MSwxMiAr
MzMwLDYgQEAgaWYgKGlzX3dpbiB8fCBpc19saW51eCB8fCBpc19hbmRyb2lkIHx8IGlzX21hYyB8
fCBpc19mdWNoc2lhKSB7CiAgICAgICAiJHthbmdsZV9yb290fTpsaWJHTEVTdjIiLAogICAgIF0K
IAotICAgIGNvbmZpZ3MgKz0gWwotICAgICAgIiR7YW5nbGVfanNvbmNwcF9kaXJ9Ompzb25jcHBf
Y29uZmlnIiwKLSAgICAgICIke2FuZ2xlX3Jvb3R9OmxpYkFOR0xFX2NvbmZpZyIsCi0gICAgICAi
JHthbmdsZV9yb290fTpsaWJyYXJ5X25hbWVfY29uZmlnIiwKLSAgICBdCi0KICAgICBpZiAoaXNf
d2luIHx8IGlzX2xpbnV4KSB7CiAgICAgICBkYXRhX2RlcHMgKz0gWyAiJHthbmdsZV9yb290fS90
aGlyZF9wYXJ0eS9nbG1hcmsyOmdsbWFyazJfYW5nbGUiIF0KICAgICB9CkBAIC0yNjcsMTEgKzM0
MCw5IEBAIGlmIChpc193aW4gfHwgaXNfbGludXggfHwgaXNfYW5kcm9pZCB8fCBpc19tYWMgfHwg
aXNfZnVjaHNpYSkgewogICAgICAgZGF0YV9kZXBzICs9IFsgIiR7YW5nbGVfcm9vdH0vdGhpcmRf
cGFydHkvZ2xtYXJrMjpnbG1hcmsyX2dseCIgXQogICAgIH0KIAotICAgIGlmIChidWlsZF9hbmds
ZV90cmFjZV9wZXJmX3Rlc3RzKSB7Ci0gICAgICBpbXBvcnQoInBlcmZfdGVzdHMvcmVzdHJpY3Rl
ZF90cmFjZXMvYW5nbGVfdHJhY2VfcGVyZl90ZXN0cy5nbmkiKQotICAgICAgc291cmNlcyArPSBh
bmdsZV90cmFjZV9wZXJmX3NvdXJjZXMKLSAgICAgIGRlZmluZXMgKz0gYW5nbGVfdHJhY2VfcGVy
Zl9kZWZpbmVzCi0gICAgICBkYXRhICs9IGFuZ2xlX3RyYWNlX3BlcmZfZGF0YQorICAgIGlmIChp
c19jbGFuZykgeworICAgICAgIyBBbGxvd3MgdXMgdG8gZWRpdCB0cmFjZXMgYW5kIHJlbW92ZSBj
aHVua3Mgb2YgY29kZSB3aXRob3V0IGNvbXBpbGUgd2FybmluZ3MuCisgICAgICBjZmxhZ3NfY2Mg
PSBbICItV25vLXVudXNlZC1jb25zdC12YXJpYWJsZSIgXQogICAgIH0KICAgfQogfQpAQCAtNDc4
LDYgKzU0OSw3IEBAIGlmIChidWlsZF9hbmdsZV9nbGVzMV9jb25mb3JtX3Rlc3RzKSB7CiAKICAg
YW5nbGVfdGVzdCgiYW5nbGVfZ2xlczFfY29uZm9ybWFuY2VfdGVzdHMiKSB7CiAgICAgZGVwcyA9
IFsKKyAgICAgICI6YW5nbGVfY29tbW9uX3Rlc3RfdXRpbHNfc3RhdGljIiwKICAgICAgICI6YW5n
bGVfZ2xlczFfY29uZm9ybWFuY2Vfbm9fZ3Rlc3QiLAogICAgIF0KIApAQCAtNDg3LDI1ICs1NTks
MTEgQEAgaWYgKGJ1aWxkX2FuZ2xlX2dsZXMxX2NvbmZvcm1fdGVzdHMpIHsKICAgICAgICJnbGVz
MV9jb25mb3JtYW5jZV90ZXN0cy9Db25mb3JtYW5jZVRlc3RzLmNwcCIsCiAgICAgICAidGVzdF91
dGlscy9BTkdMRVRlc3QuY3BwIiwKICAgICAgICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIiwKLSAg
ICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAiLAotICAgICAgInRlc3RfdXRp
bHMvYW5nbGVfdGVzdF9jb25maWdzLmgiLAotICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9p
bnN0YW50aWF0ZS5jcHAiLAotICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0
ZS5oIiwKLSAgICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uY3BwIiwKLSAgICAg
ICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uaCIsCi0gICAgICAidGVzdF91dGlscy9n
bF9yYWlpLmgiLAogICAgIF0KLSAgICBpZiAoaXNfbWFjKSB7Ci0gICAgICBzb3VyY2VzICs9IFsK
LSAgICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5oIiwKLSAg
ICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5tbSIsCi0gICAg
ICBdCi0gICAgfQogICAgIG1haW4gPSAiYW5nbGVfZW5kMmVuZF90ZXN0c19tYWluIgogCiAgICAg
Y29uZmlncyArPSBbCiAgICAgICAiJHthbmdsZV9yb290fTpsaWJBTkdMRV9jb25maWciLAotICAg
ICAgIiR7YW5nbGVfcm9vdH06bGlicmFyeV9uYW1lX2NvbmZpZyIsCiAgICAgICAiJHthbmdsZV9y
b290fTphbmdsZV9iYWNrZW5kX2NvbmZpZyIsCiAgICAgXQogICB9CkBAIC01NDMsNyArNjAxLDgg
QEAgaWYgKGJ1aWxkX2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgICAgICAg
Ii93ZDQ3MDEiLCAgIyBwb3RlbnRpYWxseSB1bmluaXQgdXNlZAogICAgICAgICAiL3dkNDcwMiIs
ICAjIHVucmVhY2hhYmxlIGNvZGUKICAgICAgICAgIi93ZDQ3MDYiLCAgIyBhc3NpZ25tZW50IHdp
dGhpbiBjb25kaXRpb25hbCBleHByZXNzaW9uCi0gICAgICAgICIvd2Q0ODM0IiwgICMgZGlzY2Fy
ZGluZyByZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb24gd2l0aCAnbm9kaXNjYXJkJyBhdHRyaWJ1dGUK
KyAgICAgICAgIi93ZDQ4MzQiLCAgIyBkaXNjYXJkaW5nIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlv
biB3aXRoICdub2Rpc2NhcmQnCisgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlCiAgICAg
ICAgICIvd2Q0ODM4IiwgICMgY29udmVyc2lvbiByZXF1aXJlcyBhIG5hcnJvd2luZyBjb252ZXJz
aW9uCiAgICAgICAgICIvd2Q0OTk2IiwgICMgZGVwcmVjYXRlZAogICAgICAgXQpAQCAtNTcxLDEw
ICs2MzAsMTIgQEAgaWYgKGJ1aWxkX2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsK
ICAgICAgIGNmbGFnc19jID0gWyAiLVduby11bnVzZWQtbG9jYWwtdHlwZWRlZiIgXQogICAgICAg
Y2ZsYWdzX2NjID0gWwogICAgICAgICAiLVduby1zaXplb2YtYXJyYXktZGl2IiwgICMgaHR0cHM6
Ly9naXRsYWIua2hyb25vcy5vcmcvVHJhY2tlci92ay1nbC1jdHMvaXNzdWVzLzIxMjcKLSAgICAg
ICAgIi1Xbm8tc3RyaW5nLWNvbnZlcnNpb24iLCAgIyBpbXBsaWNpdCBjb252ZXJzaW9uIHR1cm5z
IHN0cmluZyBsaXRlcmFsIGludG8gYm9vbAorICAgICAgICAiLVduby1zdHJpbmctY29udmVyc2lv
biIsICAjIGltcGxpY2l0IGNvbnZlcnNpb24gdHVybnMgc3RyaW5nIGxpdGVyYWwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRvIGJvb2wKICAgICAgICAgIi1Xbm8tdW51
c2VkLWZ1bmN0aW9uIiwKICAgICAgICAgIi1Xbm8tdW51c2VkLWxvY2FsLXR5cGVkZWYiLAotICAg
ICAgICAiLVduby11bnVzZWQtcmVzdWx0IiwgICMgaWdub3JpbmcgcmV0dXJuIHZhbHVlIG9mIGZ1
bmN0aW9uIGRlY2xhcmVkIHdpdGggJ25vZGlzY2FyZCcgYXR0cmlidXRlCisgICAgICAgICItV25v
LXVudXNlZC1yZXN1bHQiLCAgIyBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb24gZGVj
bGFyZWQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ25vZGlzY2FyZCcg
YXR0cmlidXRlCiAgICAgICBdCiAgICAgfQogCkBAIC03MDQsOSArNzY1LDcgQEAgaWYgKGJ1aWxk
X2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgICAgICI6YW5nbGVfZGVxcF9z
dXBwb3J0IiwKICAgICBdCiAKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAgICI6YW5nbGVfZGVx
cF9mcmFtZXdvcmtfZGViYXNlIiwKLSAgICBdCisgICAgcHVibGljX2RlcHMgPSBbICI6YW5nbGVf
ZGVxcF9mcmFtZXdvcmtfZGViYXNlIiBdCiAgIH0KIAogICBjb25maWcoImFuZ2xlX2RlcXBfZnJh
bWV3b3JrX2NvbW1vbl9jb25maWciKSB7CkBAIC03MzcsOSArNzk2LDcgQEAgaWYgKGJ1aWxkX2Fu
Z2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgYW5nbGVfZGVxcF9zb3VyY2Vfc2V0
KCJhbmdsZV9kZXFwX2ZyYW1ld29ya19vcGVuZ2wiKSB7CiAgICAgc291cmNlcyA9IGRlcXBfZnJh
bWV3b3JrX29wZW5nbF9zb3VyY2VzCiAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6YW5nbGVfZGVx
cF9mcmFtZXdvcmtfb3BlbmdsX2NvbmZpZyIgXQotICAgIHB1YmxpY19kZXBzID0gWwotICAgICAg
IjphbmdsZV9kZXFwX2ZyYW1ld29ya19jb21tb24iLAotICAgIF0KKyAgICBwdWJsaWNfZGVwcyA9
IFsgIjphbmdsZV9kZXFwX2ZyYW1ld29ya19jb21tb24iIF0KICAgfQogCiAgIGNvbmZpZygiYW5n
bGVfZGVxcF9mcmFtZXdvcmtfZWdsX2NvbmZpZyIpIHsKQEAgLTc1Miw5ICs4MDksNyBAQCBpZiAo
YnVpbGRfYW5nbGVfZGVxcF90ZXN0cyAmJiAhaXNfZnVjaHNpYSkgewogICBhbmdsZV9kZXFwX3Nv
dXJjZV9zZXQoImFuZ2xlX2RlcXBfZnJhbWV3b3JrX2VnbCIpIHsKICAgICBzb3VyY2VzID0gZGVx
cF9mcmFtZXdvcmtfZWdsX3NvdXJjZXMKICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmdsZV9k
ZXFwX2ZyYW1ld29ya19lZ2xfY29uZmlnIiBdCi0gICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAi
OmFuZ2xlX2RlcXBfZnJhbWV3b3JrX29wZW5nbCIsCi0gICAgXQorICAgIHB1YmxpY19kZXBzID0g
WyAiOmFuZ2xlX2RlcXBfZnJhbWV3b3JrX29wZW5nbCIgXQogICB9CiAKICAgY29uZmlnKCJhbmds
ZV9kZXFwX2ZyYW1ld29ya19xcGhlbHBlcl9jb25maWciKSB7CkBAIC03NzYsOSArODMxLDcgQEAg
aWYgKGJ1aWxkX2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKIAogICBhbmdsZV9k
ZXFwX3NvdXJjZV9zZXQoImFuZ2xlX2RlcXBfZ2xzaGFyZWQiKSB7CiAgICAgc291cmNlcyA9IGRl
cXBfZ2xzaGFyZWRfc291cmNlcwotICAgIHB1YmxpY19kZXBzID0gWwotICAgICAgIjphbmdsZV9k
ZXFwX2ZyYW1ld29ya19vcGVuZ2wiLAotICAgIF0KKyAgICBwdWJsaWNfZGVwcyA9IFsgIjphbmds
ZV9kZXFwX2ZyYW1ld29ya19vcGVuZ2wiIF0KICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmds
ZV9kZXFwX2dsc2hhcmVkX2NvbmZpZyIgXQogICB9CiAKQEAgLTg1NSwxMiArOTA4LDggQEAgaWYg
KGJ1aWxkX2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgICBpZiAoIWJ1aWxk
X3dpdGhfY2hyb21pdW0pIHsKICAgICAgIGFuZ2xlX2V4ZWN1dGFibGUoImFuZ2xlX2RlcXBfJHtf
YXBpfV9ub19ndGVzdCIpIHsKICAgICAgICAgdGVzdG9ubHkgPSB0cnVlCi0gICAgICAgIHNvdXJj
ZXMgPSBbCi0gICAgICAgICAgImRlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3Bw
IiwKLSAgICAgICAgXQotICAgICAgICBkZXBzID0gWwotICAgICAgICAgICI6JHNoYXJlZF9saWJy
YXJ5X25hbWUiLAotICAgICAgICBdCisgICAgICAgIHNvdXJjZXMgPSBbICJkZXFwX3N1cHBvcnQv
YW5nbGVfZGVxcF90ZXN0c19tYWluLmNwcCIgXQorICAgICAgICBkZXBzID0gWyAiOiRzaGFyZWRf
bGlicmFyeV9uYW1lIiBdCiAgICAgICB9CiAgICAgfQogCkBAIC04NzMsOSArOTIyLDcgQEAgaWYg
KGJ1aWxkX2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgICAgIF0KIAogICAg
ICAgIyBNdXN0IGJlIGluY2x1ZGVkIG91dHNpZGUgb2YgdGhlIHNvdXJjZSBzZXQgZm9yIHRoZSBk
ZWZpbmUKLSAgICAgIHNvdXJjZXMgPSBbCi0gICAgICAgICJkZXFwX3N1cHBvcnQvYW5nbGVfZGVx
cF9ndGVzdC5jcHAiLAotICAgICAgXQorICAgICAgc291cmNlcyA9IFsgImRlcXBfc3VwcG9ydC9h
bmdsZV9kZXFwX2d0ZXN0LmNwcCIgXQogICAgICAgbWFpbiA9ICJhbmdsZV9kZXFwX3Rlc3RzX21h
aW4iCiAKICAgICAgIGRhdGEgPSBbCkBAIC05MDksOSArOTU2LDcgQEAgaWYgKGJ1aWxkX2FuZ2xl
X2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgICAgICAgZGF0YSA9IGFuZ2xlX2RlcXBf
ZGF0YV9nbGVzMzEKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGluY2x1
ZGUgc29tZXRoaW5nIHNvIHRoYXQgYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHAgY2FuIGZp
bmQgc29tZXRoaW5nLgotICAgICAgICBkYXRhID0gWwotICAgICAgICAgICIkcm9vdF9nZW5fZGly
L3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xlczIvc2hhZGVycy9taXNjLnRlc3QiLAotICAgICAgICBd
CisgICAgICAgIGRhdGEgPSBbICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xl
czIvc2hhZGVycy9taXNjLnRlc3QiIF0KICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTk1Myw3ICs5
OTgsOCBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90ZXN0cyAmJiAhaXNfZnVjaHNpYSkgewogICAg
ICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dCIsCiAgICAg
XQogICAgIGlmIChpc19jbGFuZykgewotICAgICAgY2ZsYWdzID0gWyAiLVduby1oZWFkZXItaHln
aWVuZSIgXSAgIyB1c2luZyBuYW1lc3BhY2UgZGlyZWN0aXZlIGluIGdsb2JhbCBjb250ZXh0IGlu
IGhlYWRlcgorICAgICAgY2ZsYWdzID0gWyAiLVduby1oZWFkZXItaHlnaWVuZSIgXSAgIyB1c2lu
ZyBuYW1lc3BhY2UgZGlyZWN0aXZlIGluIGdsb2JhbAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyBjb250ZXh0IGluIGhlYWRlcgogICAgIH0KICAgfQogCkBAIC05
NzgsOSArMTAyNCw3IEBAIGlmIChidWlsZF9hbmdsZV9kZXFwX3Rlc3RzICYmICFpc19mdWNoc2lh
KSB7CiAgIHRlbXBsYXRlKCJhbmdsZV9kZXFwX2tocl9ndGVzdCIpIHsKICAgICBhbmdsZV9kZXFw
X2d0ZXN0KHRhcmdldF9uYW1lKSB7CiAgICAgICBmb3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9r
ZXIsICIqIikKLSAgICAgIGRlcHMgPSBbCi0gICAgICAgICI6YW5nbGVfZGVxcF9raHJfY29tbW9u
IiwKLSAgICAgIF0KKyAgICAgIGRlcHMgPSBbICI6YW5nbGVfZGVxcF9raHJfY29tbW9uIiBdCiAg
ICAgICBkZXBzICs9IGFuZ2xlX2RlcXBfZGF0YV9jb3B5X3RhcmdldHMKICAgICAgIGRhdGEgPSBh
bmdsZV9kZXFwX2V4dGVybmFsX29wZW5nbGN0c19kYXRhX2dsZXMzCiAgICAgICBtdXN0cGFzc19k
aXIgPSBfa2hyb25vc19tdXN0cGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9P
V05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjk5NzI1YTA3MDIyMzgwOTRkODE0MTg3MzZhMWY4ZGI1OTQ5ZmE1
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9P
V05FUlMKQEAgLTAsMCArMSwyIEBACisjIEFsbCBjb21taXR0ZXJzIGFyZSBkZS1mYWN0byBvd25l
cnMgb2YgdGhlIHRlc3RzLgorcGVyLWZpbGUgKj0qCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0cy5nbmkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0cy5nbmkKaW5kZXggNTM1
ZTBmNjEwZmIyNDBiMTBlYjFmMDkwZjFiZGI1MjI4ZTRkNGIwMi4uM2JmOTg3NTdiNWM2ZTkzMzU1
NGQ3NWFjZjVmYmNjYmU0YzNmZTI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2FuZ2xlX2VuZDJlbmRfdGVzdHMuZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzLmduaQpAQCAtMywxNCArMywz
MiBAQAogIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCiBhbmdsZV9lbmQyZW5kX3Rlc3Rz
X3NvdXJjZXMgPSBbCisgICJlZ2xfdGVzdHMvRUdMQW5kcm9pZEZyYW1lQnVmZmVyVGFyZ2V0VGVz
dC5jcHAiLAorICAiZWdsX3Rlc3RzL0VHTEJhY2t3YXJkc0NvbXBhdGlibGVDb250ZXh0VGVzdC5j
cHAiLAorICAiZWdsX3Rlc3RzL0VHTEJsb2JDYWNoZVRlc3QuY3BwIiwKKyAgImVnbF90ZXN0cy9F
R0xDaG9vc2VDb25maWdUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcCIs
CisgICJlZ2xfdGVzdHMvRUdMQ3JlYXRlQ29udGV4dEF0dHJpYnNUZXN0LmNwcCIsCisgICJlZ2xf
dGVzdHMvRUdMRGVidWdUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdMTm9Db25maWdDb250ZXh0
VGVzdC5jcHAiLAorICAiZWdsX3Rlc3RzL0VHTFByaW50RUdMaW5mb1Rlc3QuY3BwIiwKKyAgImVn
bF90ZXN0cy9FR0xQcm9ncmFtQ2FjaGVDb250cm9sVGVzdC5jcHAiLAorICAiZWdsX3Rlc3RzL0VH
TFF1ZXJ5Q29udGV4dFRlc3QuY3BwIiwKKyAgImVnbF90ZXN0cy9FR0xSZWNvcmRhYmxlVGVzdC5j
cHAiLAorICAiZWdsX3Rlc3RzL0VHTFJvYnVzdG5lc3NUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMv
RUdMU2FuaXR5Q2hlY2tUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3Bw
IiwKKyAgImVnbF90ZXN0cy9FR0xTdXJmYWNlbGVzc0NvbnRleHRUZXN0LmNwcCIsCisgICJlZ2xf
dGVzdHMvRUdMU3luY1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0F0b21pY0NvdW50ZXJCdWZmZXJU
ZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9BdHRyaWJ1dGVMYXlvdXRUZXN0LmNwcCIsCisgICJnbF90
ZXN0cy9CUFRDQ29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9CaW5kR2Vu
ZXJhdGVzUmVzb3VyY2VUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9CaW5kVW5pZm9ybUxvY2F0aW9u
VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvQmxlbmRGdW5jRXh0ZW5kZWRUZXN0LmNwcCIsCiAgICJn
bF90ZXN0cy9CbGVuZE1pbk1heFRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0JsaXRGcmFtZWJ1ZmZl
ckFOR0xFVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvQlBUQ0NvbXByZXNzZWRUZXh0dXJlVGVzdC5j
cHAiLAogICAiZ2xfdGVzdHMvQnVmZmVyRGF0YVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0J1aWx0
aW5WYXJpYWJsZVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0NsZWFyVGVzdC5jcHAiLApAQCAtMTgs
MTEgKzM2LDE0IEBAIGFuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyA9IFsKICAgImdsX3Rlc3Rz
L0NvbG9yTWFza1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0NvbXB1dGVTaGFkZXJUZXN0LmNwcCIs
CiAgICJnbF90ZXN0cy9Db250ZXh0TG9zdFRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL0NvbnRleHRO
b0Vycm9yVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5j
cHAiLAogICAiZ2xfdGVzdHMvQ29weVRleEltYWdlVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvQ29w
eVRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Db3B5VGV4dHVyZTNEVGVzdC5jcHAiLAor
ICAiZ2xfdGVzdHMvQ29weVRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9DdWJlTWFwVGV4
dHVyZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL0RYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3Bw
IiwKKyAgImdsX3Rlc3RzL0RYVFNSR0JDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwIiwKICAgImds
X3Rlc3RzL0RlYnVnTWFya2VyVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvRGVidWdUZXN0LmNwcCIs
CiAgICJnbF90ZXN0cy9EZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdC5jcHAiLApAQCAtMzIsNDMgKzUz
LDE4IEBAIGFuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyA9IFsKICAgImdsX3Rlc3RzL0RyYXdC
YXNlVmVydGV4QmFzZUluc3RhbmNlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvRHJhd0J1ZmZlcnNU
ZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9EcmF3RWxlbWVudHNUZXN0LmNwcCIsCi0gICJnbF90ZXN0
cy9EWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9EWFRTUkdCQ29t
cHJlc3NlZFRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9FVENUZXh0dXJlVGVzdC5jcHAi
LAogICAiZ2xfdGVzdHMvRXhwbGljaXRDb250ZXh0VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvRXh0
ZXJuYWxXcmFwVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvRmVuY2VTeW5jVGVzdHMuY3BwIiwKICAg
ImdsX3Rlc3RzL0Zsb2F0aW5nUG9pbnRTdXJmYWNlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvRnJh
bWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9GcmFtZWJ1ZmZlck11
bHRpdmlld1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0ZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVz
dC5jcHAiLAogICAiZ2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9H
TFNMVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvR2VvbWV0cnlTaGFkZXJUZXN0LmNwcCIsCiAgICJn
bF90ZXN0cy9HZXRJbWFnZVRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL0FscGhhRnVuY1Rl
c3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL0Jhc2ljRHJhd1Rlc3QuY3BwIiwKLSAgImdsX3Rl
c3RzL2dsZXMxL0NsaWVudEFjdGl2ZVRleHR1cmVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVz
MS9DbGllbnRTdGF0ZUVuYWJsZS5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvQ2xpcFBsYW5lVGVz
dC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvQ3VycmVudENvbG9yVGVzdC5jcHAiLAotICAiZ2xf
dGVzdHMvZ2xlczEvQ3VycmVudE5vcm1hbFRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL0N1
cnJlbnRUZXh0dXJlQ29vcmRzVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvRHJhd1RleHR1
cmVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9Gb2dUZXN0LmNwcCIsCi0gICJnbF90ZXN0
cy9nbGVzMS9NYXRlcmlhbHNUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9NYXRyaXhCdWls
dGluc1Rlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL01hdHJpeExvYWRUZXN0LmNwcCIsCi0g
ICJnbF90ZXN0cy9nbGVzMS9NYXRyaXhNb2RlVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEv
TWF0cml4TXVsdFRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL01hdHJpeFN0YWNrVGVzdC5j
cHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvTGlnaHRzVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xl
czEvUG9pbnRQYXJhbWV0ZXJUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9Qb2ludFNwcml0
ZVRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL1NoYWRlTW9kZWxUZXN0LmNwcCIsCi0gICJn
bF90ZXN0cy9nbGVzMS9UZXh0dXJlRW52VGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvVGV4
dHVyZVBhcmFtZXRlclRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL1RleHR1cmVUYXJnZXRF
bmFibGVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9WZXJ0ZXhQb2ludGVyVGVzdC5jcHAi
LAotICAiZ2xfdGVzdHMvR0xTTFRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0ltYWdlVGVzdC5jcHAi
LAogICAiZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9J
bmRleEJ1ZmZlck9mZnNldFRlc3QuY3BwIiwKQEAgLTc4LDI5ICs3NCwyNyBAQCBhbmdsZV9lbmQy
ZW5kX3Rlc3RzX3NvdXJjZXMgPSBbCiAgICJnbF90ZXN0cy9MaW5rQW5kUmVsaW5rVGVzdC5jcHAi
LAogICAiZ2xfdGVzdHMvTWF0cml4VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvTWF4VGV4dHVyZVNp
emVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9NZW1vcnlTaXplVGVzdC5jcHAiLAogICAiZ2xfdGVz
dHMvTWVtb3J5T2JqZWN0VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvTWVtb3J5U2l6ZVRlc3QuY3Bw
IiwKICAgImdsX3Rlc3RzL01pcG1hcFRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL011bHRpRHJhd1Rl
c3QuY3BwIiwKICAgImdsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3BwIiwK
LSAgImdsX3Rlc3RzL011bHRpc2FtcGxlZFJlbmRlclRvVGV4dHVyZVRlc3QuY3BwIiwKICAgImds
X3Rlc3RzL011bHRpc2FtcGxlVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvTXVsdGlzYW1wbGVkUmVu
ZGVyVG9UZXh0dXJlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvTXVsdGl0aHJlYWRpbmdUZXN0LmNw
cCIsCiAgICJnbF90ZXN0cy9NdWx0aXZpZXdEcmF3VGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvbWVk
aWEvcGl4ZWwuaW5jIiwKLSAgImdsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0LmNwcCIsCi0gICJnbF90
ZXN0cy9QYXRoUmVuZGVyaW5nVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvUGJ1ZmZlclRlc3QuY3Bw
IiwKLSAgImdsX3Rlc3RzL1BCT0V4dGVuc2lvblRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL1BvaW50
U3ByaXRlc1Rlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL1Byb3Zva2luZ1ZlcnRleFRlc3QuY3BwIiwK
ICAgImdsX3Rlc3RzL09iamVjdEFsbG9jYXRpb25UZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9PY2Ns
dXNpb25RdWVyaWVzVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvUEJPRXh0ZW5zaW9uVGVzdC5jcHAi
LAorICAiZ2xfdGVzdHMvUGFja1VucGFja1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1BhcmFsbGVs
U2hhZGVyQ29tcGlsZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL1BidWZmZXJUZXN0LmNwcCIsCisg
ICJnbF90ZXN0cy9Qb2ludFNwcml0ZXNUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Qcm9ncmFtQmlu
YXJ5VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvUHJvZ3JhbUludGVyZmFjZVRlc3QuY3BwIiwKICAg
ImdsX3Rlc3RzL1Byb2dyYW1QYXJhbWV0ZXJUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Qcm9ncmFt
UGlwZWxpbmVUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9Qcm92b2tpbmdWZXJ0ZXhUZXN0LmNwcCIs
CiAgICJnbF90ZXN0cy9SZWFkUGl4ZWxzVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvUmVuZGVyYnVm
ZmVyTXVsdGlzYW1wbGVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9SZW5kZXJlclRlc3QuY3BwIiwK
QEAgLTEwOCwxMyArMTAyLDE0IEBAIGFuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyA9IFsKICAg
ImdsX3Rlc3RzL1JvYnVzdEJ1ZmZlckFjY2Vzc0JlaGF2aW9yVGVzdC5jcHAiLAogICAiZ2xfdGVz
dHMvUm9idXN0Q2xpZW50TWVtb3J5VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvUm9idXN0UmVzb3Vy
Y2VJbml0VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvU1JHQkZyYW1lYnVmZmVyVGVzdC5jcHAiLAor
ICAiZ2xfdGVzdHMvU1JHQlRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9TYW1wbGVyc1Rl
c3QuY3BwIiwKICAgImdsX3Rlc3RzL1NlbWFwaG9yZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL1No
YWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9TaGFk
ZXJTdG9yYWdlQnVmZmVyVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9uVGVz
dC5jcHAiLAogICAiZ2xfdGVzdHMvU2l4dGVlbkJwcFRleHR1cmVUZXN0LmNwcCIsCi0gICJnbF90
ZXN0cy9TUkdCRnJhbWVidWZmZXJUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9TUkdCVGV4dHVyZVRl
c3QuY3BwIiwKICAgImdsX3Rlc3RzL1N0YXRlQ2hhbmdlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMv
U3dpenpsZVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1N5bmNRdWVyaWVzVGVzdC5jcHAiLApAQCAt
MTMxLDUzICsxMjYsNTIgQEAgYW5nbGVfZW5kMmVuZF90ZXN0c19zb3VyY2VzID0gWwogICAiZ2xf
dGVzdHMvVW5wYWNrUm93TGVuZ3RoLmNwcCIsCiAgICJnbF90ZXN0cy9WZXJ0ZXhBdHRyaWJ1dGVU
ZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9WaWV3cG9ydFRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL1dF
QkdMVmlkZW9UZXh0dXJlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvV2ViR0xDb21wYXRpYmlsaXR5
VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvV2ViR0xGcmFtZWJ1ZmZlclRlc3QuY3BwIiwKICAgImds
X3Rlc3RzL1dlYkdMUmVhZE91dHNpZGVGcmFtZWJ1ZmZlclRlc3QuY3BwIiwKLSAgImdsX3Rlc3Rz
L1dFQkdMVmlkZW9UZXh0dXJlVGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTEFuZHJvaWRGcmFt
ZUJ1ZmZlclRhcmdldFRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xCYWNrd2FyZHNDb21wYXRp
YmxlQ29udGV4dFRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xCbG9iQ2FjaGVUZXN0LmNwcCIs
Ci0gICJlZ2xfdGVzdHMvRUdMQ2hvb3NlQ29uZmlnVGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VH
TENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTENvbnRleHRT
aGFyaW5nVGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTENyZWF0ZUNvbnRleHRBdHRyaWJzVGVz
dC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTERlYnVnVGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VH
TE5vQ29uZmlnQ29udGV4dFRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xQcmludEVHTGluZm9U
ZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMUHJvZ3JhbUNhY2hlQ29udHJvbFRlc3QuY3BwIiwK
LSAgImVnbF90ZXN0cy9FR0xRdWVyeUNvbnRleHRUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdM
UmVjb3JkYWJsZVRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xSb2J1c3RuZXNzVGVzdC5jcHAi
LAotICAiZWdsX3Rlc3RzL0VHTFNhbml0eUNoZWNrVGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VH
TFN1cmZhY2VsZXNzQ29udGV4dFRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xTdXJmYWNlVGVz
dC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTFN5bmNUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVz
MS9BbHBoYUZ1bmNUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9CYXNpY0RyYXdUZXN0LmNw
cCIsCisgICJnbF90ZXN0cy9nbGVzMS9Cb290QW5pbWF0aW9uVGVzdC5jcHAiLAorICAiZ2xfdGVz
dHMvZ2xlczEvQ2xpZW50QWN0aXZlVGV4dHVyZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMx
L0NsaWVudFN0YXRlRW5hYmxlLmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9DbGlwUGxhbmVUZXN0
LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9DdXJyZW50Q29sb3JUZXN0LmNwcCIsCisgICJnbF90
ZXN0cy9nbGVzMS9DdXJyZW50Tm9ybWFsVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvQ3Vy
cmVudFRleHR1cmVDb29yZHNUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9EcmF3VGV4dHVy
ZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL0ZvZ1Rlc3QuY3BwIiwKKyAgImdsX3Rlc3Rz
L2dsZXMxL0xpZ2h0c1Rlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL01hdGVyaWFsc1Rlc3Qu
Y3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL01hdHJpeEJ1aWx0aW5zVGVzdC5jcHAiLAorICAiZ2xf
dGVzdHMvZ2xlczEvTWF0cml4TG9hZFRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL01hdHJp
eE1vZGVUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9NYXRyaXhNdWx0VGVzdC5jcHAiLAor
ICAiZ2xfdGVzdHMvZ2xlczEvTWF0cml4U3RhY2tUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVz
MS9Qb2ludFBhcmFtZXRlclRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL1BvaW50U3ByaXRl
VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvU2hhZGVNb2RlbFRlc3QuY3BwIiwKKyAgImds
X3Rlc3RzL2dsZXMxL1RleHR1cmVFbnZUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9UZXh0
dXJlUGFyYW1ldGVyVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvVGV4dHVyZVRhcmdldEVu
YWJsZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL1ZlcnRleFBvaW50ZXJUZXN0LmNwcCIs
CisgICJnbF90ZXN0cy9tZWRpYS9waXhlbC5pbmMiLAogICAidGVzdF9leHBlY3RhdGlvbnMvR1BV
VGVzdEV4cGVjdGF0aW9uc1Rlc3QuY3BwIiwKICAgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcCIs
CiAgICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9w
bGF0Zm9ybS5jcHAiLAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmgiLAogICAi
dGVzdF91dGlscy9NdWx0aXZpZXdUZXN0LmNwcCIsCiAgICJ0ZXN0X3V0aWxzL011bHRpdmlld1Rl
c3QuaCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAiLAotICAidGVzdF91
dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5z
dGFudGlhdGUuY3BwIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIiwK
LSAgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIiwKIF0KIGFuZ2xlX2VuZDJlbmRfdGVzdHNfbWFjX3Nv
dXJjZXMgPSBbCiAgICJlZ2xfdGVzdHMvRUdMRGV2aWNlQ0dMVGVzdC5jcHAiLAogICAiZWdsX3Rl
c3RzL0VHTElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QuY3BwIiwKLSAgInRlc3RfdXRpbHMvYW5n
bGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5tbSIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3Rf
aW5zdGFudGlhdGVfYXBwbGUuaCIsCiBdCiBhbmdsZV9lbmQyZW5kX3Rlc3RzX3dpbl9zb3VyY2Vz
ID0gWwotICAiZ2xfdGVzdHMvRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdC5jcHAiLAogICAi
ZWdsX3Rlc3RzL0VHTERldmljZVRlc3QuY3BwIiwKICAgImVnbF90ZXN0cy9FR0xQcmVzZW50UGF0
aEQzRDExVGVzdC5jcHAiLAogICAiZWdsX3Rlc3RzL0VHTFN0cmVhbVRlc3QuY3BwIiwKICAgImVn
bF90ZXN0cy9FR0xTeW5jQ29udHJvbFRlc3QuY3BwIiwKICAgImVnbF90ZXN0cy9tZWRpYS95dXZ0
ZXN0LmlubCIsCisgICJnbF90ZXN0cy9EM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LmNwcCIs
CiBdCiBhbmdsZV9lbmQyZW5kX3Rlc3RzX3gxMV9zb3VyY2VzID0gWyAiZWdsX3Rlc3RzL0VHTFgx
MVZpc3VhbFRlc3QuY3BwIiBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0c19tYWluLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwCmluZGV4IDUzMTVl
NTJmODE1ZmMwNzZjMjQ5YmM4OGI0NGIxY2MyNGJjZTQzNGUuLjYxNzViOTcwODUyMzFlNmEwNTMw
M2UyNzQ4MGJmNjhlMzkwMDMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwCkBAIC05
LDkgKzksMTkgQEAKIAogdm9pZCBBTkdMRVByb2Nlc3NUZXN0QXJncyhpbnQgKmFyZ2MsIGNoYXIg
KmFyZ3ZbXSk7CiAKKy8vIFJlZ2lzdGVyKiBmdW5jdGlvbnMgaGFuZGxlIHNldHRpbmcgdXAgc3Bl
Y2lhbCB0ZXN0cyB0aGF0IG5lZWQgY29tcGxleCBwYXJhbWV0ZXJpemF0aW9uLgorLy8gR29vZ2xl
VGVzdCByZWxpZXMgaGVhdmlseSBvbiBzdGF0aWMgaW5pdGlhbGl6YXRpb24gdG8gcmVnaXN0ZXIg
dGVzdCBmdW5jdGlvbnMuIFRoaXMgY2FuCisvLyBjYXVzZSBhbGwgc29ydHMgb2YgaXNzdWVzIGlm
IHRoZSByaWdodCB2YXJpYWJsZXMgYXJlbid0IGluaXRpYWxpemVkIGluIHRoZSByaWdodCBvcmRl
ci4KKy8vIFRoaXMgcmVnaXN0ZXIgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGV4cGxpY2l0
bHkgYWZ0ZXIgc3RhdGljIGluaXRpYWxpemF0aW9uIGFuZAorLy8gYmVmb3JlIHRoZSB0ZXN0IGxh
dW5jaGVyIHN0YXJ0cy4gVGhpcyBpcyBhIHNhZmVyIGFuZCBnZW5lcmFsbHkgYmV0dGVyIHdheSB0
byBpbml0aWFsaXplCisvLyB0ZXN0cy4gSXQncyBhbHNvIG1vcmUgc2ltaWxhciB0byBob3cgdGhl
IGRFUVAgVGVzdCBoYXJuZXNzIHdvcmtzLiBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZAorLy8gbGlr
ZWx5IHNwZWNpYWxpemUgbW9yZSByZWdpc3RlciBmdW5jdGlvbnMgbW9yZSBsaWtlIGRFUVAgaW5z
dGVhZCBvZiByZWx5aW5nIG9uIHN0YXRpYyBpbml0Lgordm9pZCBSZWdpc3RlckNvbnRleHRDb21w
YXRpYmlsaXR5VGVzdHMoKTsKKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewog
ICAgIGFuZ2xlOjpUZXN0U3VpdGUgdGVzdFN1aXRlKCZhcmdjLCBhcmd2KTsKICAgICBBTkdMRVBy
b2Nlc3NUZXN0QXJncygmYXJnYywgYXJndik7CisgICAgUmVnaXN0ZXJDb250ZXh0Q29tcGF0aWJp
bGl0eVRlc3RzKCk7CiAgICAgcmV0dXJuIHRlc3RTdWl0ZS5ydW4oKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHMuZ25pIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3BlcmZ0ZXN0cy5nbmkKaW5k
ZXggZTkxMzc4ZWY3MjgyMTRlY2Q2OGEzNzI1ZjNmYzI0ZDAwOWYyNjIxYS4uNjY1ZjZkN2M0NjVl
MGE3YTNjMWRiYWJkMWI0NTI5OTdhYTIwMDQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3BlcmZ0ZXN0cy5nbmkKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3BlcmZ0ZXN0cy5nbmkKQEAgLTIsNzQgKzIsNDkg
QEAKICMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQogIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCi1fYW5n
bGVfcGVyZl90ZXN0X2NvbW1vbl9zb3VyY2VzID0gWwotICAiLi4vdGhpcmRfcGFydHkvdHJhY2Vf
ZXZlbnQvdHJhY2VfZXZlbnQuaCIsCi0gICJwZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuY3BwIiwK
LSAgInBlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oIiwKLSAgInBlcmZfdGVzdHMvQU5HTEVQZXJm
VGVzdEFyZ3MuY3BwIiwKLSAgInBlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3MuaCIsCi0gICJw
ZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl9yZXN1bHRfcmVwb3J0ZXIuY2MiLAotICAi
cGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfcmVzdWx0X3JlcG9ydGVyLmgiLAotICAi
cGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYyIsCi0gICJwZXJmX3Rlc3Rz
L3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmgiLAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0
X3BsYXRmb3JtLmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uaCIsCi0g
ICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAiLAotICAidGVzdF91dGlscy9hbmds
ZV90ZXN0X2NvbmZpZ3MuaCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUu
Y3BwIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIiwKLSAgInRlc3Rf
dXRpbHMvZ2xfcmFpaS5oIiwKK2FuZ2xlX3BlcmZfdGVzdHNfc291cmNlcyA9IFsKKyAgInBlcmZf
dGVzdHMvQmluZGluZ1BlcmYuY3BwIiwKKyAgInBlcmZfdGVzdHMvQmxpdEZyYW1lYnVmZmVyUGVy
Zi5jcHAiLAorICAicGVyZl90ZXN0cy9CdWZmZXJTdWJEYXRhLmNwcCIsCisgICJwZXJmX3Rlc3Rz
L0NsZWFyUGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9EaXNwYXRjaENvbXB1dGVQZXJmLmNwcCIs
CisgICJwZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9EcmF3RWxl
bWVudHNQZXJmLmNwcCIsCisgICJwZXJmX3Rlc3RzL0R5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdC5j
cHAiLAorICAicGVyZl90ZXN0cy9FR0xNYWtlQ3VycmVudFBlcmYuY3BwIiwKKyAgInBlcmZfdGVz
dHMvSW5kZXhDb252ZXJzaW9uUGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9JbnN0YW5jaW5nUGVy
Zi5jcHAiLAorICAicGVyZl90ZXN0cy9JbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGEuY3BwIiwKKyAg
InBlcmZfdGVzdHMvTGlua1Byb2dyYW1QZXJmVGVzdC5jcHAiLAorICAicGVyZl90ZXN0cy9NdWx0
aXZpZXdQZXJmLmNwcCIsCisgICJwZXJmX3Rlc3RzL1BvaW50U3ByaXRlcy5jcHAiLAorICAicGVy
Zl90ZXN0cy9UZXh0dXJlU2FtcGxpbmcuY3BwIiwKKyAgInBlcmZfdGVzdHMvVGV4dHVyZVVwbG9h
ZFBlcmYuY3BwIiwKKyAgInBlcmZfdGVzdHMvVGV4dHVyZXNQZXJmLmNwcCIsCisgICJwZXJmX3Rl
c3RzL1VuaWZvcm1zUGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9WdWxrYW5CYXJyaWVyc1BlcmYu
Y3BwIiwKKyAgInBlcmZfdGVzdHMvZ2xtYXJrMkJlbmNobWFyay5jcHAiLAorICAidGVzdF91dGls
cy9BTkdMRVRlc3QuY3BwIiwKKyAgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiLAorICAidGVzdF91
dGlscy9NdWx0aXZpZXdUZXN0LmNwcCIsCisgICJ0ZXN0X3V0aWxzL011bHRpdmlld1Rlc3QuaCIs
CisgICJ0ZXN0X3V0aWxzL2RyYXdfY2FsbF9wZXJmX3V0aWxzLmNwcCIsCisgICJ0ZXN0X3V0aWxz
L2RyYXdfY2FsbF9wZXJmX3V0aWxzLmgiLAogXQogCi1pZiAoaXNfbWFjKSB7Ci0gIF9hbmdsZV9w
ZXJmX3Rlc3RfY29tbW9uX3NvdXJjZXMgKz0gWwotICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3Rf
aW5zdGFudGlhdGVfYXBwbGUubW0iLAotICAgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFu
dGlhdGVfYXBwbGUuaCIsCi0gIF0KLX0KLQotYW5nbGVfcGVyZl90ZXN0c19zb3VyY2VzID0gX2Fu
Z2xlX3BlcmZfdGVzdF9jb21tb25fc291cmNlcyArIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBlcmZfdGVzdHMvQmxpdEZyYW1lYnVmZmVyUGVyZi5jcHAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9CaW5kaW5nUGVyZi5jcHAiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9CdWZmZXJTdWJEYXRhLmNwcCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0NsZWFyUGVyZi5jcHAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9EaXNwYXRjaENvbXB1dGVQZXJm
LmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0RyYXdDYWxs
UGVyZi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9EcmF3
Q2FsbFBlcmZQYXJhbXMuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZf
dGVzdHMvRHJhd0NhbGxQZXJmUGFyYW1zLmgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGVyZl90ZXN0cy9EcmF3RWxlbWVudHNQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwZXJmX3Rlc3RzL0R5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdC5jcHAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9FR0xNYWtlQ3VycmVudFBlcmYu
Y3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZfdGVzdHMvSW5kZXhDb252
ZXJzaW9uUGVyZi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0
cy9JbnN0YW5jaW5nUGVyZi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVy
Zl90ZXN0cy9JbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGEuY3BwIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBlcmZfdGVzdHMvTGlua1Byb2dyYW1QZXJmVGVzdC5jcHAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9NdWx0aXZpZXdQZXJmLmNwcCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL1BvaW50U3ByaXRlcy5jcHAi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9UZXh0dXJlU2FtcGxp
bmcuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZfdGVzdHMvVGV4dHVy
ZVVwbG9hZFBlcmYuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZfdGVz
dHMvVGV4dHVyZXNQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJm
X3Rlc3RzL1VuaWZvcm1zUGVyZi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cGVyZl90ZXN0cy9WdWxrYW5CYXJyaWVyc1BlcmYuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInBlcmZfdGVzdHMvZ2xtYXJrMkJlbmNobWFyay5jcHAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdF91dGlscy9BTkdMRVRlc3QuY3BwIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdF91dGlscy9NdWx0aXZpZXdUZXN0LmNwcCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3V0aWxzL011bHRpdmlld1Rlc3QuaCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3V0aWxzL2RyYXdfY2FsbF9wZXJmX3V0aWxz
LmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3V0aWxzL2RyYXdfY2Fs
bF9wZXJmX3V0aWxzLmgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotCi1hbmdsZV93
aGl0ZV9ib3hfcGVyZl90ZXN0c19zb3VyY2VzID0gX2FuZ2xlX3BlcmZfdGVzdF9jb21tb25fc291
cmNlcyArIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmdsZV91
bml0dGVzdHNfdXRpbHMuaCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGVyZl90ZXN0cy9CaXRTZXRJdGVyYXRvclBlcmYuY3BwIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0NvbXBpbGVyUGVyZi5jcHAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZfdGVzdHMvRUdMSW5pdGlh
bGl6ZVBlcmYuY3BwIiwgICMgVXNlcyBBTkdMRUdldERpc3BsYXlQbGF0Zm9ybSwgYSBub24tc3Rh
bmRhcmQgRVAuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90
ZXN0cy9SZXN1bHRQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQorYW5nbGVfd2hpdGVfYm94X3BlcmZfdGVzdHNfc291cmNlcyA9IFsKKyAgImFuZ2xlX3Vu
aXR0ZXN0c191dGlscy5oIiwKKyAgInBlcmZfdGVzdHMvQml0U2V0SXRlcmF0b3JQZXJmLmNwcCIs
CisgICJwZXJmX3Rlc3RzL0NvbXBpbGVyUGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9FR0xJbml0
aWFsaXplUGVyZi5jcHAiLCAgIyBVc2VzIEFOR0xFR2V0RGlzcGxheVBsYXRmb3JtLCBhCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1zdGFuZGFyZCBFUC4KKyAg
InBlcmZfdGVzdHMvUmVzdWx0UGVyZi5jcHAiLAorXQogCi1hbmdsZV93aGl0ZV9ib3hfcGVyZl90
ZXN0c193aW5fc291cmNlcyA9Ci0gICAgWyAicGVyZl90ZXN0cy9JbmRleERhdGFNYW5hZ2VyVGVz
dC5jcHAiIF0KK2lmIChpc193aW4pIHsKKyAgYW5nbGVfd2hpdGVfYm94X3BlcmZfdGVzdHNfc291
cmNlcyArPQorICAgICAgWyAicGVyZl90ZXN0cy9JbmRleERhdGFNYW5hZ2VyVGVzdC5jcHAiIF0K
K30KIAogYW5nbGVfd2hpdGVfYm94X3BlcmZfdGVzdHNfdnVsa2FuX3NvdXJjZXMgPSBbCiAgICJw
ZXJmX3Rlc3RzL1Z1bGthbkNvbW1hbmRCdWZmZXJQZXJmLmNwcCIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzLmduaSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ25pCmluZGV4IDA4
MTQ0ZWM0ZWQ1ODI1MWQwYTg2Yjc1ZjY5MmI5OTk1ZmJhZGRjODYuLmYwNGU5NDIwMzBmOThmYTFk
YjgwZDZhMWU2ZDM3NjFhYWQwMjkwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ25pCkBAIC0zLDEwICszLDEyIEBACiAj
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAKIGFuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzID0g
WworICAiLi4vLi4vdXRpbC90ZXN0X3V0aWxzX3VuaXR0ZXN0LmNwcCIsCisgICIuLi8uLi91dGls
L3Rlc3RfdXRpbHNfdW5pdHRlc3RfaGVscGVyLmgiLAogICAiLi4vY29tbW9uL0Zhc3RWZWN0b3Jf
dW5pdHRlc3QuY3BwIiwKICAgIi4uL2NvbW1vbi9GaXhlZFZlY3Rvcl91bml0dGVzdC5jcHAiLAot
ICAiLi4vY29tbW9uL1Bvb2xBbGxvY191bml0dGVzdC5jcHAiLAogICAiLi4vY29tbW9uL09wdGlv
bmFsX3VuaXR0ZXN0LmNwcCIsCisgICIuLi9jb21tb24vUG9vbEFsbG9jX3VuaXR0ZXN0LmNwcCIs
CiAgICIuLi9jb21tb24vYWxpZ25lZF9tZW1vcnlfdW5pdHRlc3QuY3BwIiwKICAgIi4uL2NvbW1v
bi9hbmdsZXV0aWxzX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9jb21tb24vYml0c2V0X3V0aWxzX3Vu
aXR0ZXN0LmNwcCIsCkBAIC0xNyw2ICsxOSw3IEBAIGFuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzID0g
WwogICAiLi4vY29tbW9uL3N5c3RlbV91dGlsc191bml0dGVzdC5jcHAiLAogICAiLi4vY29tbW9u
L3V0aWxpdGllc191bml0dGVzdC5jcHAiLAogICAiLi4vY29tbW9uL3ZlY3Rvcl91dGlsc191bml0
dGVzdC5jcHAiLAorICAiLi4vY29tcGlsZXIvdHJhbnNsYXRvci9zcGFuX3VuaXR0ZXN0LmNwcCIs
CiAgICIuLi9mZWF0dXJlX3N1cHBvcnRfdXRpbC9mZWF0dXJlX3N1cHBvcnRfdXRpbF91bml0dGVz
dC5jcHAiLAogICAiLi4vZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX3VuaXR0ZXN0LmNwcCIsCiAg
ICIuLi9saWJBTkdMRS9CaW5hcnlTdHJlYW1fdW5pdHRlc3QuY3BwIiwKQEAgLTI0LDkgKzI3LDgg
QEAgYW5nbGVfdW5pdHRlc3RzX3NvdXJjZXMgPSBbCiAgICIuLi9saWJBTkdMRS9Db25maWdfdW5p
dHRlc3QuY3BwIiwKICAgIi4uL2xpYkFOR0xFL0ZlbmNlX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9s
aWJBTkdMRS9IYW5kbGVBbGxvY2F0b3JfdW5pdHRlc3QuY3BwIiwKLSAgIi4uL2xpYkFOR0xFL0hh
bmRsZVJhbmdlQWxsb2NhdG9yX3VuaXR0ZXN0LmNwcCIsCi0gICIuLi9saWJBTkdMRS9JbWFnZV91
bml0dGVzdC5jcHAiLAogICAiLi4vbGliQU5HTEUvSW1hZ2VJbmRleEl0ZXJhdG9yX3VuaXR0ZXN0
LmNwcCIsCisgICIuLi9saWJBTkdMRS9JbWFnZV91bml0dGVzdC5jcHAiLAogICAiLi4vbGliQU5H
TEUvT2JzZXJ2ZXJfdW5pdHRlc3QuY3BwIiwKICAgIi4uL2xpYkFOR0xFL1Byb2dyYW1fdW5pdHRl
c3QuY3BwIiwKICAgIi4uL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlcl91bml0dGVzdC5jcHAiLApA
QCAtMzksNDQgKzQxLDQ1IEBAIGFuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzID0gWwogICAiLi4vbGli
QU5HTEUvV29ya2VyVGhyZWFkX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9saWJBTkdMRS9yZW5kZXJl
ci9CdWZmZXJJbXBsX21vY2suaCIsCiAgICIuLi9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZl
ckltcGxfbW9jay5oIiwKKyAgIi4uL2xpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbF9tb2NrLmgi
LAogICAiLi4vbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGxfbW9jay5oIiwKICAgIi4uL2xp
YkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGxfbW9jay5oIiwKLSAgIi4uL2xpYkFOR0xF
L3JlbmRlcmVyL0ltYWdlSW1wbF9tb2NrLmgiLAogICAiLi4vbGliQU5HTEUvcmVuZGVyZXIvVGV4
dHVyZUltcGxfbW9jay5oIiwKICAgIi4uL2xpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRi
YWNrSW1wbF9tb2NrLmgiLAogICAiLi4vbGliQU5HTEUvcmVuZGVyZXIvc2VyaWFsX3V0aWxzX3Vu
aXR0ZXN0LmNwcCIsCi0gICIuLi9jb21waWxlci90cmFuc2xhdG9yL3NwYW5fdW5pdHRlc3QuY3Bw
IiwKICAgImFuZ2xlX3VuaXR0ZXN0c191dGlscy5oIiwKICAgImNvbXBpbGVyX3Rlc3RzL0FQSV90
ZXN0LmNwcCIsCi0gICJjb21waWxlcl90ZXN0cy9BcHBlbmRpeEFMaW1pdGF0aW9uc190ZXN0LmNw
cCIsCiAgICJjb21waWxlcl90ZXN0cy9BUkJfdGV4dHVyZV9yZWN0YW5nbGVfdGVzdC5jcHAiLAor
ICAiY29tcGlsZXJfdGVzdHMvQXBwZW5kaXhBTGltaXRhdGlvbnNfdGVzdC5jcHAiLAogICAiY29t
cGlsZXJfdGVzdHMvQXRvbWljQ291bnRlcl90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9C
dWZmZXJWYXJpYWJsZXNfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvQ29sbGVjdFZhcmlh
Ymxlc190ZXN0LmNwcCIsCi0gICJjb21waWxlcl90ZXN0cy9Db25zdGFudEZvbGRpbmdfdGVzdC5j
cHAiLAogICAiY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRGb2xkaW5nTmFOX3Rlc3QuY3BwIiwKICAg
ImNvbXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ092ZXJmbG93X3Rlc3QuY3BwIiwKKyAgImNv
bXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ190ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0
cy9Db25zdHJ1Y3RDb21waWxlcl90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9EZWJ1Z1No
YWRlclByZWNpc2lvbl90ZXN0LmNwcCIsCi0gICJjb21waWxlcl90ZXN0cy9FbXVsYXRlR0xCYXNl
VmVydGV4QmFzZUluc3RhbmNlX3Rlc3QuY3BwIiwKLSAgImNvbXBpbGVyX3Rlc3RzL0VtdWxhdGVH
TERyYXdJRF90ZXN0LmNwcCIsCi0gICJjb21waWxlcl90ZXN0cy9FbXVsYXRlR0xGcmFnQ29sb3JC
cm9hZGNhc3RfdGVzdC5jcHAiLAotICAiY29tcGlsZXJfdGVzdHMvRXhwcmVzc2lvbkxpbWl0X3Rl
c3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL0VYVF9ZVVZfdGFyZ2V0X3Rlc3QuY3BwIiwKICAg
ImNvbXBpbGVyX3Rlc3RzL0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rlc3QuY3BwIiwKICAgImNv
bXBpbGVyX3Rlc3RzL0VYVF9mcmFnX2RlcHRoX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3Rz
L0VYVF9zaGFkZXJfdGV4dHVyZV9sb2RfdGVzdC5jcHAiLAorICAiY29tcGlsZXJfdGVzdHMvRW11
bGF0ZUdMQmFzZVZlcnRleEJhc2VJbnN0YW5jZV90ZXN0LmNwcCIsCisgICJjb21waWxlcl90ZXN0
cy9FbXVsYXRlR0xEcmF3SURfdGVzdC5jcHAiLAorICAiY29tcGlsZXJfdGVzdHMvRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0X3Rlc3QuY3BwIiwKKyAgImNvbXBpbGVyX3Rlc3RzL0V4cHJlc3Np
b25MaW1pdF90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9FeHRlbnNpb25EaXJlY3RpdmVf
dGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvRmxvYXRMZXhfdGVzdC5jcHAiLAogICAiY29t
cGlsZXJfdGVzdHMvRnJhZ0RlcHRoX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL0dMU0xD
b21wYXRpYmlsaXR5T3V0cHV0X3Rlc3QuY3BwIiwKLSAgImNvbXBpbGVyX3Rlc3RzL0dsRnJhZ0Rh
dGFOb3RNb2RpZmllZF90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9HZW9tZXRyeVNoYWRl
cl90ZXN0LmNwcCIsCisgICJjb21waWxlcl90ZXN0cy9HbEZyYWdEYXRhTm90TW9kaWZpZWRfdGVz
dC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvSW1tdXRhYmxlU3RyaW5nX3Rlc3QuY3BwIiwKICAg
ImNvbXBpbGVyX3Rlc3RzL0luaXRPdXRwdXRWYXJpYWJsZXNfdGVzdC5jcHAiLAogICAiY29tcGls
ZXJfdGVzdHMvSW50ZXJtTm9kZV90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9OVl9kcmF3
X2J1ZmZlcnNfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzX3Rlc3QuY3BwIiwKKyAgImNvbXBpbGVyX3Rlc3RzL09WUl9tdWx0aXZpZXcyX3Rlc3Qu
Y3BwIiwKKyAgImNvbXBpbGVyX3Rlc3RzL09WUl9tdWx0aXZpZXdfdGVzdC5jcHAiLAogICAiY29t
cGlsZXJfdGVzdHMvUGFja19VbnBhY2tfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvUHJ1
bmVFbXB0eUNhc2VzX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL1BydW5lRW1wdHlEZWNs
YXJhdGlvbnNfdGVzdC5jcHAiLApAQCAtOTIsMjAgKzk1LDIxIEBAIGFuZ2xlX3VuaXR0ZXN0c19z
b3VyY2VzID0gWwogICAiY29tcGlsZXJfdGVzdHMvU2FtcGxlck11bHRpc2FtcGxlX3Rlc3QuY3Bw
IiwKICAgImNvbXBpbGVyX3Rlc3RzL1NhbXBsZXJWaWRlb1dFQkdMX3Rlc3QuY3BwIiwKICAgImNv
bXBpbGVyX3Rlc3RzL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnc190ZXN0LmNwcCIs
CisgICJjb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVz
dHMvU2hhZGVySW1hZ2VfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvU2hhZGVyVmFsaWRh
dGlvbl90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9TaGFkZXJWYXJpYWJsZV90ZXN0LmNw
cCIsCi0gICJjb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5jcHAiLAogICAiY29tcGlsZXJf
dGVzdHMvVGV4dHVyZUZ1bmN0aW9uX3Rlc3QuY3BwIiwKLSAgImNvbXBpbGVyX3Rlc3RzL1R5cGVf
dGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvVHlwZVRyYWNraW5nX3Rlc3QuY3BwIiwKKyAg
ImNvbXBpbGVyX3Rlc3RzL1R5cGVfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvVW5mb2xk
U2hvcnRDaXJjdWl0QVNUX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL1ZhcmlhYmxlUGFj
a2VyX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL1ZlY3Rvcml6ZVZlY3RvclNjYWxhckFy
aXRobWV0aWNfdGVzdC5jcHAiLAotICAiY29tcGlsZXJfdGVzdHMvT1ZSX211bHRpdmlld190ZXN0
LmNwcCIsCi0gICJjb21waWxlcl90ZXN0cy9PVlJfbXVsdGl2aWV3Ml90ZXN0LmNwcCIsCiAgICJj
b21waWxlcl90ZXN0cy9Xb3JrR3JvdXBTaXplX3Rlc3QuY3BwIiwKLSAgInRlc3RfZXhwZWN0YXRp
b25zL0dQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXJfdW5pdHRlc3QuY3BwIiwKKyAgInByZXByb2Nl
c3Nvcl90ZXN0cy9Nb2NrRGlhZ25vc3RpY3MuaCIsCisgICJwcmVwcm9jZXNzb3JfdGVzdHMvTW9j
a0RpcmVjdGl2ZUhhbmRsZXIuaCIsCisgICJwcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29y
VGVzdC5jcHAiLAorICAicHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuaCIsCiAg
ICJwcmVwcm9jZXNzb3JfdGVzdHMvY2hhcl90ZXN0LmNwcCIsCiAgICJwcmVwcm9jZXNzb3JfdGVz
dHMvY29tbWVudF90ZXN0LmNwcCIsCiAgICJwcmVwcm9jZXNzb3JfdGVzdHMvZGVmaW5lX3Rlc3Qu
Y3BwIiwKQEAgLTExNSwyNiArMTE5LDIxIEBAIGFuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzID0gWwog
ICAicHJlcHJvY2Vzc29yX3Rlc3RzL2lmX3Rlc3QuY3BwIiwKICAgInByZXByb2Nlc3Nvcl90ZXN0
cy9pbnB1dF90ZXN0LmNwcCIsCiAgICJwcmVwcm9jZXNzb3JfdGVzdHMvbG9jYXRpb25fdGVzdC5j
cHAiLAotICAicHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaWFnbm9zdGljcy5oIiwKLSAgInByZXBy
b2Nlc3Nvcl90ZXN0cy9Nb2NrRGlyZWN0aXZlSGFuZGxlci5oIiwKICAgInByZXByb2Nlc3Nvcl90
ZXN0cy9udW1iZXJfdGVzdC5jcHAiLAogICAicHJlcHJvY2Vzc29yX3Rlc3RzL29wZXJhdG9yX3Rl
c3QuY3BwIiwKICAgInByZXByb2Nlc3Nvcl90ZXN0cy9wcmFnbWFfdGVzdC5jcHAiLAotICAicHJl
cHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuY3BwIiwKLSAgInByZXByb2Nlc3Nvcl90
ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmgiLAogICAicHJlcHJvY2Vzc29yX3Rlc3RzL3NwYWNlX3Rl
c3QuY3BwIiwKICAgInByZXByb2Nlc3Nvcl90ZXN0cy90b2tlbl90ZXN0LmNwcCIsCiAgICJwcmVw
cm9jZXNzb3JfdGVzdHMvdmVyc2lvbl90ZXN0LmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rl
c3RfaW5zdGFudGlhdGUuaCIsCi0gICJ0ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuY3BwIiwKLSAg
InRlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIiwKLSAgInRlc3RfdXRpbHMvQ29uc3RhbnRGb2xk
aW5nVGVzdC5oIiwKKyAgInRlc3RfZXhwZWN0YXRpb25zL0dQVVRlc3RFeHBlY3RhdGlvbnNQYXJz
ZXJfdW5pdHRlc3QuY3BwIiwKICAgInRlc3RfdXRpbHMvQ29uc3RhbnRGb2xkaW5nVGVzdC5jcHAi
LAotICAidGVzdF91dGlscy9TaGFkZXJDb21waWxlVHJlZVRlc3QuaCIsCisgICJ0ZXN0X3V0aWxz
L0NvbnN0YW50Rm9sZGluZ1Rlc3QuaCIsCiAgICJ0ZXN0X3V0aWxzL1NoYWRlckNvbXBpbGVUcmVl
VGVzdC5jcHAiLAorICAidGVzdF91dGlscy9TaGFkZXJDb21waWxlVHJlZVRlc3QuaCIsCiAgICJ0
ZXN0X3V0aWxzL1NoYWRlckV4dGVuc2lvblRlc3QuaCIsCi0gICIuLi8uLi91dGlsL3Rlc3RfdXRp
bHNfdW5pdHRlc3QuY3BwIiwKLSAgIi4uLy4uL3V0aWwvdGVzdF91dGlsc191bml0dGVzdF9oZWxw
ZXIuaCIsCisgICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIsCisgICJ0ZXN0
X3V0aWxzL2NvbXBpbGVyX3Rlc3QuY3BwIiwKKyAgInRlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5o
IiwKIF0KIAogIyBUT0RPKGptYWRpbGwpOiBzaG91bGQgcHJvYmFibHkgY2FsbCB0aGlzIHdpbmRv
d3Mgc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2FuZ2xlX3VuaXR0ZXN0c191dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2FuZ2xlX3VuaXR0ZXN0c191dGlscy5oCmluZGV4IDQ4ZmVjYzM1OWE2NWUzMGU5MzM5ZWE5
YzI5NmMwM2Y1OTk3YmFkNWIuLmMyYjRlMjU4Y2IxMmNiZDJlNjBlZjFiMDFlNzE3NzkyOGMyZjMx
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91
bml0dGVzdHNfdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
YW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgKQEAgLTcyLDExICs3Miw2IEBAIGNsYXNzIE51bGxGYWN0
b3J5IDogcHVibGljIEdMSW1wbEZhY3RvcnkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSByYW5n
ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAq
PigpOwotICAgIH0KLQogICAgIFNlbWFwaG9yZUltcGwgKmNyZWF0ZVNlbWFwaG9yZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIE92ZXJsYXlJbXBsICpjcmVhdGVPdmVybGF5
KGNvbnN0IGdsOjpPdmVybGF5U3RhdGUgJnN0YXRlKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9CkBAIC0xMDMsNyArOTgsNiBAQCBjbGFzcyBNb2NrR0xGYWN0b3J5IDogcHVibGljIEdMSW1w
bEZhY3RvcnkKICAgICBNT0NLX01FVEhPRDEoY3JlYXRlVHJhbnNmb3JtRmVlZGJhY2ssCiAgICAg
ICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqKGNvbnN0IGdsOjpUcmFuc2Zvcm1G
ZWVkYmFja1N0YXRlICYpKTsKICAgICBNT0NLX01FVEhPRDEoY3JlYXRlU2FtcGxlciwgU2FtcGxl
ckltcGwgKihjb25zdCBnbDo6U2FtcGxlclN0YXRlICYpKTsKLSAgICBNT0NLX01FVEhPRDEoY3Jl
YXRlUGF0aHMsIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+KEdMc2l6ZWkpKTsKICAgICBNT0NLX01F
VEhPRDAoY3JlYXRlU2VtYXBob3JlLCBTZW1hcGhvcmVJbXBsICooKSk7CiAgICAgTU9DS19NRVRI
T0QxKGNyZWF0ZU92ZXJsYXksIE92ZXJsYXlJbXBsICooY29uc3QgZ2w6Ok92ZXJsYXlTdGF0ZSAm
KSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Fu
Z2xlX3doaXRlX2JveF90ZXN0cy5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvYW5nbGVfd2hpdGVfYm94X3Rlc3RzLmduaQppbmRleCAzYjI3M2UxMjdlMDU3YjgzMmZmOWZh
ZDk3OWNhZWY0ZjIyZDUxNjY0Li42ZDEyMDhlYzZmNzFhN2E2MzhjZDIxNjZhZTQ1NDJiNTFjOGEx
MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVf
d2hpdGVfYm94X3Rlc3RzLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvYW5nbGVfd2hpdGVfYm94X3Rlc3RzLmduaQpAQCAtNCwxNyArNCwxMCBAQAogCiBhbmdsZV93
aGl0ZV9ib3hfdGVzdHNfc291cmNlcyA9IFsKICAgImVnbF90ZXN0cy9FR0xGZWF0dXJlQ29udHJv
bFRlc3QuY3BwIiwKLSAgInV0aWxfdGVzdHMvUHJpbnRTeXN0ZW1JbmZvVGVzdC5jcHAiLAotICAi
dGVzdF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfcGxhdGZvcm0uaCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAi
LAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIsCi0gICJ0ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0
YW50aWF0ZS5oIiwKKyAgImdsX3Rlc3RzL0Zvcm1hdFByaW50VGVzdC5jcHAiLAogICAidGVzdF91
dGlscy9BTkdMRVRlc3QuY3BwIiwKICAgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiLAotICAidGVz
dF91dGlscy9nbF9yYWlpLmgiLAotICAiZ2xfdGVzdHMvRm9ybWF0UHJpbnRUZXN0LmNwcCIsCisg
ICJ1dGlsX3Rlc3RzL1ByaW50U3lzdGVtSW5mb1Rlc3QuY3BwIiwKIF0KIGFuZ2xlX3doaXRlX2Jv
eF90ZXN0c193aW5fc291cmNlcyA9IFsKICAgImVnbF90ZXN0cy9FR0xEaXJlY3RDb21wb3NpdGlv
blRlc3QuY3BwIiwKQEAgLTI4LDcgKzIxLDMgQEAgYW5nbGVfd2hpdGVfYm94X3Rlc3RzX3Z1bGth
bl9zb3VyY2VzID0gWwogICAiZ2xfdGVzdHMvVnVsa2FuRm9ybWF0VGFibGVzVGVzdC5jcHAiLAog
ICAiZ2xfdGVzdHMvVnVsa2FuVW5pZm9ybVVwZGF0ZXNUZXN0LmNwcCIsCiBdCi1hbmdsZV93aGl0
ZV9ib3hfdGVzdHNfbWFjX3NvdXJjZXMgPSBbCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5z
dGFudGlhdGVfYXBwbGUubW0iLAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRl
X2FwcGxlLmgiLAotXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9kZXFwX3N1cHBvcnQvQlVJTEQuZ24KaW5kZXggYzk1YzZmYjE4ZDQ4NDExNTgyMGFjOGU5
Y2ExNjU5ZTNjOTlhODM2OC4uNjAzNTY5Zjg3NzA2OTQ4ODJhNDE1OTNiZTExMDg2OTU0ZDVhZWE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVx
cF9zdXBwb3J0L0JVSUxELmduCkBAIC04LDEyICs4LDkgQEAKIGRlcXBfcGF0aCA9ICIuLi8uLi8u
Li90aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjIgogCiBjb3B5KCJ2a19nbF9jdHNfZGF0YV9kYXRh
X2dsZXMyX2RhdGEiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVz
Mi9kYXRhL2JyaWNrLnBuZyIsCi0gIF0KLSAgb3V0cHV0cyA9IFsKLSAgICAiJHJvb3RfZ2VuX2Rp
ci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMyL2RhdGEve3tzb3VyY2VfZmlsZV9wYXJ0fX0iLAot
ICBdCisgIHNvdXJjZXMgPSBbICIkZGVxcF9wYXRoL2RhdGEvZ2xlczIvZGF0YS9icmljay5wbmci
IF0KKyAgb3V0cHV0cyA9CisgICAgICBbICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2Rh
dGEvZ2xlczIvZGF0YS97e3NvdXJjZV9maWxlX3BhcnR9fSIgXQogfQogCiBjb3B5KCJ2a19nbF9j
dHNfZGF0YV9kYXRhX2dsZXMyX2RhdGFfZXRjMSIpIHsKQEAgLTEwMyw5ICsxMDAsOCBAQCBjb3B5
KCJ2a19nbF9jdHNfZGF0YV9kYXRhX2dsZXMyX3NoYWRlcnMiKSB7CiAgICAgIiRkZXFwX3BhdGgv
ZGF0YS9nbGVzMi9zaGFkZXJzL3Njb3BpbmcudGVzdCIsCiAgICAgIiRkZXFwX3BhdGgvZGF0YS9n
bGVzMi9zaGFkZXJzL3N3aXp6bGVzLnRlc3QiLAogICBdCi0gIG91dHB1dHMgPSBbCi0gICAgIiRy
b290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMi9zaGFkZXJzL3t7c291cmNlX2Zp
bGVfcGFydH19IiwKLSAgXQorICBvdXRwdXRzID0KKyAgICAgIFsgIiRyb290X2dlbl9kaXIvdmtf
Z2xfY3RzX2RhdGEvZGF0YS9nbGVzMi9zaGFkZXJzL3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiB9
CiAKIGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczMxX2RhdGFfdGVzc2VsbGF0aW9uIikg
ewpAQCAtMTY2LDkgKzE2Miw3IEBAIGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczMxX2Rh
dGFfdGVzc2VsbGF0aW9uIikgewogICAgICIkZGVxcF9wYXRoL2RhdGEvZ2xlczMxL2RhdGEvdGVz
c2VsbGF0aW9uL3VzZXJfZGVmaW5lZF9pb19xdWFkc19yZWYucG5nIiwKICAgICAiJGRlcXBfcGF0
aC9kYXRhL2dsZXMzMS9kYXRhL3Rlc3NlbGxhdGlvbi91c2VyX2RlZmluZWRfaW9fdHJpYW5nbGVz
X3JlZi5wbmciLAogICBdCi0gIG91dHB1dHMgPSBbCi0gICAgIiRyb290X2dlbl9kaXIvdmtfZ2xf
Y3RzX2RhdGEvZGF0YS9nbGVzMzEvZGF0YS90ZXNzZWxsYXRpb24ve3tzb3VyY2VfZmlsZV9wYXJ0
fX0iLAotICBdCisgIG91dHB1dHMgPSBbICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2Rh
dGEvZ2xlczMxL2RhdGEvdGVzc2VsbGF0aW9uL3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiB9CiAK
IGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczMxX3NoYWRlcnNfZXMzMSIpIHsKQEAgLTE5
NSw5ICsxODksNyBAQCBjb3B5KCJ2a19nbF9jdHNfZGF0YV9kYXRhX2dsZXMzMV9zaGFkZXJzX2Vz
MzEiKSB7CiAgICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMzEvc2hhZGVycy9lczMxL3VuaWZvcm1f
YmxvY2sudGVzdCIsCiAgICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMzEvc2hhZGVycy9lczMxL3Vu
aWZvcm1fbG9jYXRpb24udGVzdCIsCiAgIF0KLSAgb3V0cHV0cyA9IFsKLSAgICAiJHJvb3RfZ2Vu
X2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMzMS9zaGFkZXJzL2VzMzEve3tzb3VyY2VfZmls
ZV9wYXJ0fX0iLAotICBdCisgIG91dHB1dHMgPSBbICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19k
YXRhL2RhdGEvZ2xlczMxL3NoYWRlcnMvZXMzMS97e3NvdXJjZV9maWxlX3BhcnR9fSIgXQogfQog
CiBjb3B5KCJ2a19nbF9jdHNfZGF0YV9kYXRhX2dsZXMzMV9zaGFkZXJzX2VzMzIiKSB7CkBAIC0y
MjMsMTggKzIxNSwxMyBAQCBjb3B5KCJ2a19nbF9jdHNfZGF0YV9kYXRhX2dsZXMzMV9zaGFkZXJz
X2VzMzIiKSB7CiAgICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMzEvc2hhZGVycy9lczMyL3VuaWZv
cm1fYmxvY2sudGVzdCIsCiAgICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMzEvc2hhZGVycy9lczMy
L3VuaWZvcm1fbG9jYXRpb24udGVzdCIsCiAgIF0KLSAgb3V0cHV0cyA9IFsKLSAgICAiJHJvb3Rf
Z2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMzMS9zaGFkZXJzL2VzMzIve3tzb3VyY2Vf
ZmlsZV9wYXJ0fX0iLAotICBdCisgIG91dHB1dHMgPSBbICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0
c19kYXRhL2RhdGEvZ2xlczMxL3NoYWRlcnMvZXMzMi97e3NvdXJjZV9maWxlX3BhcnR9fSIgXQog
fQogCiBjb3B5KCJ2a19nbF9jdHNfZGF0YV9kYXRhX2dsZXMzX2RhdGEiKSB7Ci0gIHNvdXJjZXMg
PSBbCi0gICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMy9kYXRhL2JyaWNrLnBuZyIsCi0gIF0KLSAg
b3V0cHV0cyA9IFsKLSAgICAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMz
L2RhdGEve3tzb3VyY2VfZmlsZV9wYXJ0fX0iLAotICBdCisgIHNvdXJjZXMgPSBbICIkZGVxcF9w
YXRoL2RhdGEvZ2xlczMvZGF0YS9icmljay5wbmciIF0KKyAgb3V0cHV0cyA9CisgICAgICBbICIk
cm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xlczMvZGF0YS97e3NvdXJjZV9maWxl
X3BhcnR9fSIgXQogfQogCiBjb3B5KCJ2a19nbF9jdHNfZGF0YV9kYXRhX2dsZXMzX2RhdGFfZXRj
MSIpIHsKQEAgLTMyOCwxNSArMzE1LDEyIEBAIGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFfZ2xl
czNfc2hhZGVycyIpIHsKICAgICAiJGRlcXBfcGF0aC9kYXRhL2dsZXMzL3NoYWRlcnMvc3dpenps
ZXMudGVzdCIsCiAgICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMy9zaGFkZXJzL3VuaWZvcm1fYmxv
Y2sudGVzdCIsCiAgIF0KLSAgb3V0cHV0cyA9IFsKLSAgICAiJHJvb3RfZ2VuX2Rpci92a19nbF9j
dHNfZGF0YS9kYXRhL2dsZXMzL3NoYWRlcnMve3tzb3VyY2VfZmlsZV9wYXJ0fX0iLAotICBdCisg
IG91dHB1dHMgPQorICAgICAgWyAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2ds
ZXMzL3NoYWRlcnMve3tzb3VyY2VfZmlsZV9wYXJ0fX0iIF0KIH0KIAogY29weSgidmtfZ2xfY3Rz
X2RhdGFfZXh0ZXJuYWxfZ3JhcGhpY3NmdXp6X2RhdGFfZ2xlczNfZ3JhcGhpY3NmdXp6Iikgewot
ICBzb3VyY2VzID0gWwotICAgICIkZGVxcF9wYXRoL2V4dGVybmFsL2dyYXBoaWNzZnV6ei9kYXRh
L2dsZXMzL2dyYXBoaWNzZnV6ei92ZXJ0ZXhTaGFkZXIuZ2xzbCIsCi0gIF0KKyAgc291cmNlcyA9
IFsgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvZ3JhcGhpY3NmdXp6L2RhdGEvZ2xlczMvZ3JhcGhpY3Nm
dXp6L3ZlcnRleFNoYWRlci5nbHNsIiBdCiAgIG91dHB1dHMgPSBbCiAgICAgIiRyb290X2dlbl9k
aXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMy9ncmFwaGljc2Z1enove3tzb3VyY2VfZmlsZV9w
YXJ0fX0iLAogICBdCkBAIC0zNDksOSArMzMzLDcgQEAgY29weSgKICAgICAiJGRlcXBfcGF0aC9l
eHRlcm5hbC9ncmFwaGljc2Z1enovZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovYnViYmxlc29ydF9m
bGFnL3ZhcmlhbnRfMS5mcmFnIiwKICAgICAiJGRlcXBfcGF0aC9leHRlcm5hbC9ncmFwaGljc2Z1
enovZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovYnViYmxlc29ydF9mbGFnL3ZhcmlhbnRfMi5mcmFn
IiwKICAgXQotICBvdXRwdXRzID0gWwotICAgICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRh
L2RhdGEvZ2xlczMvZ3JhcGhpY3NmdXp6L2J1YmJsZXNvcnRfZmxhZy97e3NvdXJjZV9maWxlX3Bh
cnR9fSIsCi0gIF0KKyAgb3V0cHV0cyA9IFsgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEv
ZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovYnViYmxlc29ydF9mbGFnL3t7c291cmNlX2ZpbGVfcGFy
dH19IiBdCiB9CiAKIGNvcHkoInZrX2dsX2N0c19kYXRhX2V4dGVybmFsX2dyYXBoaWNzZnV6el9k
YXRhX2dsZXMzX2dyYXBoaWNzZnV6el9zeW50aGV0aWMiKSB7CkBAIC0zNjIsOSArMzQ0LDcgQEAg
Y29weSgidmtfZ2xfY3RzX2RhdGFfZXh0ZXJuYWxfZ3JhcGhpY3NmdXp6X2RhdGFfZ2xlczNfZ3Jh
cGhpY3NmdXp6X3N5bnRoZXRpYyIpIHsKICAgICAiJGRlcXBfcGF0aC9leHRlcm5hbC9ncmFwaGlj
c2Z1enovZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovc3ludGhldGljL3ZhcmlhbnRfMy5mcmFnIiwK
ICAgICAiJGRlcXBfcGF0aC9leHRlcm5hbC9ncmFwaGljc2Z1enovZGF0YS9nbGVzMy9ncmFwaGlj
c2Z1enovc3ludGhldGljL3ZhcmlhbnRfNC5mcmFnIiwKICAgXQotICBvdXRwdXRzID0gWwotICAg
ICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xlczMvZ3JhcGhpY3NmdXp6L3N5
bnRoZXRpYy97e3NvdXJjZV9maWxlX3BhcnR9fSIsCi0gIF0KKyAgb3V0cHV0cyA9IFsgIiRyb290
X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovc3ludGhldGlj
L3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiB9CiAKIGNvcHkoInZrX2dsX2N0c19kYXRhX2V4dGVy
bmFsX29wZW5nbGN0c19kYXRhX2dsZXMzIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwLmduaSBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcC5nbmkKaW5kZXggMmE3ZjljYTAw
MWIyNjYwM2MzY2YyZTI5ZTY2ZWNmMDNkNDc5YzYyNS4uMjMwNTg4NmE2YTBkMzQyYjJmZmI3MmIw
OTk4NzMwMmQzMGExN2RiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXAuZ25pCkBAIC0yNTQsMTAgKzI1NCwxMCBAQCBk
ZXFwX2dsZXMzX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvYWNjdXJh
Y3kvZXMzYVRleHR1cmVNaXBtYXBUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2ds
ZXMzL2FjY3VyYWN5L2VzM2FWYXJ5aW5nSW50ZXJwb2xhdGlvblRlc3RzLmNwcCIsCiAgICIkZGVx
cF9wYXRoL21vZHVsZXMvZ2xlczMvYWNjdXJhY3kvZXMzYVZhcnlpbmdJbnRlcnBvbGF0aW9uVGVz
dHMuaHBwIiwKLSAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBcGlD
YXNlLmNwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQXBp
Q2FzZS5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkFT
VENEZWNvbXByZXNzaW9uQ2FzZXMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZBU1RDRGVjb21wcmVzc2lvbkNhc2VzLmhwcCIsCisgICIkZGVxcF9wYXRo
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQXBpQ2FzZS5jcHAiLAorICAiJGRlcXBfcGF0
aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkFwaUNhc2UuaHBwIiwKICAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBdHRyaWJMb2NhdGlvblRlc3RzLmNwcCIs
CiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQXR0cmliTG9jYXRp
b25UZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkJsZW5kVGVzdHMuY3BwIiwKQEAgLTMyMiwxMCArMzIyLDEwIEBAIGRlcXBfZ2xlczNfc291cmNl
cyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGbHVzaEZp
bmlzaFRlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmRnJhZ0RlcHRoVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZGcmFnRGVwdGhUZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuY3BwIiwKLSAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnbWVudE91dHB1dFRlc3RzLmhwcCIs
CiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ09wSW50ZXJh
Y3Rpb25UZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkZyYWdPcEludGVyYWN0aW9uVGVzdHMuaHBwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnbWVudE91dHB1dFRlc3RzLmNwcCIsCisgICIkZGVxcF9w
YXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5ocHAi
LAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYW1lYnVmZmVy
QmxpdFRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmRnJhbWVidWZmZXJCbGl0VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZGdW5jdGlvbmFsVGVzdHMuY3BwIiwKQEAgLTQwOCwxMCArNDA4LDEw
IEBAIGRlcXBfZ2xlczNfc291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZTaGFkZXJJbnZhcmlhbmNlVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJMb29wVGVzdHMuY3BwIiwKICAgIiRk
ZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJMb29wVGVzdHMuaHBw
IiwKLSAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNZXRh
bW9ycGhpY1Rlc3RzLmNwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmU2hhZGVyTWV0YW1vcnBoaWNUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlck1hdHJpeFRlc3RzLmNwcCIsCiAgICIkZGVxcF9w
YXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyTWF0cml4VGVzdHMuaHBwIiwK
KyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNZXRhbW9y
cGhpY1Rlc3RzLmNwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmU2hhZGVyTWV0YW1vcnBoaWNUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuY3BwIiwKICAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmhwcCIs
CiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUGFja2lu
Z0Z1bmN0aW9uVGVzdHMuY3BwIiwKQEAgLTYwMCw2ICs2MDAsOCBAQCBkZXFwX2dsZXMzMV9zb3Vy
Y2VzID0gWwogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVn
YXRpdmVGcmFnbWVudEFwaVRlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVByZWNpc2VUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0
aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVQcmVjaXNlVGVzdHMuaHBw
IiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZl
U1NCT0Jsb2NrVGVzdHMuY3BwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZk5lZ2F0aXZlU1NCT0Jsb2NrVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU2FtcGxlVmFyaWFibGVzVGVzdHMu
Y3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0
aXZlU2FtcGxlVmFyaWFibGVzVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuY3BwIiwKQEAgLTYxNCwx
NCArNjE2LDEyIEBAIGRlcXBfZ2xlczMxX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckltYWdlTG9hZFN0b3JlVGVz
dHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5l
Z2F0aXZlU2hhZGVyU3RvcmFnZVRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlclN0b3JhZ2VUZXN0cy5ocHAiLAotICAi
JGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTU0JPQmxv
Y2tUZXN0cy5jcHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmTmVnYXRpdmVTU0JPQmxvY2tUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmNwcCIsCiAgICIkZGVx
cF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVN0YXRlQXBpVGVz
dHMuaHBwIiwKLSAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5l
Z2F0aXZlVGVzdFNoYXJlZC5jcHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmTmVnYXRpdmVUZXN0U2hhcmVkLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVRlc3NlbGxhdGlvblRlc3RzLmNwcCIs
CiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVRl
c3NlbGxhdGlvblRlc3RzLmhwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVRlc3RTaGFyZWQuY3BwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGVzdFNoYXJlZC5ocHAiLAogICAiJGRl
cXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXh0dXJlQXBp
VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
Zk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuY3BwIiwKQEAg
LTc0Miw3ICs3NDIsOCBAQCBkZXFwX2dsZXMzMV9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9t
b2R1bGVzL2dsZXMzMS90ZXMzMVRlc3RQYWNrYWdlRW50cnkuY3BwIiwKIAogICAjIE92ZXJyaWRl
cwotICAiZGVxcF9zdXBwb3J0L3RlczMxQ29udGV4dF9vdmVycmlkZS5jcHAiLCAgIyAzNjg4LzM2
ODc6IE92ZXJyaWRlIHRvIHByZXZlbnQgMy4yIGNvbnRleHQgY3JlYXRpb24KKyAgImRlcXBfc3Vw
cG9ydC90ZXMzMUNvbnRleHRfb3ZlcnJpZGUuY3BwIiwgICMgMzY4OC8zNjg3OiBPdmVycmlkZSB0
byBwcmV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IDMuMiBjb250ZXh0IGNyZWF0aW9uCiBdCiAKIGRlcXBfZWdsX3NvdXJjZXMgPSBbCkBAIC03NzAs
MTAgKzc3MSw2IEBAIGRlcXBfZWdsX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL21vZHVsZXMv
ZWdsL3RlZ2xDcmVhdGVDb250ZXh0VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9l
Z2wvdGVnbENyZWF0ZVN1cmZhY2VUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2Vn
bC90ZWdsQ3JlYXRlU3VyZmFjZVRlc3RzLmhwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZWds
L3RlZ2xHZXRGcmFtZVRpbWVzdGFtcHNUZXN0cy5jcHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVz
L2VnbC90ZWdsR2V0RnJhbWVUaW1lc3RhbXBzVGVzdHMuaHBwIiwKLSAgIiRkZXFwX3BhdGgvbW9k
dWxlcy9lZ2wvdGVnbEdldFByb2NBZGRyZXNzVGVzdHMuY3BwIiwKLSAgIiRkZXFwX3BhdGgvbW9k
dWxlcy9lZ2wvdGVnbEdldFByb2NBZGRyZXNzVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9k
dWxlcy9lZ2wvdGVnbEdMRVMxUmVuZGVyVXRpbC5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVz
L2VnbC90ZWdsR0xFUzFSZW5kZXJVdGlsLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWds
L3RlZ2xHTEVTMlJlbmRlclV0aWwuY3BwIiwKQEAgLTc4NCw2ICs3ODEsMTAgQEAgZGVxcF9lZ2xf
c291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hhcmluZ1Rl
c3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xHTEVTMlNoYXJpbmdUaHJl
YWRlZFRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xHTEVTMlNoYXJp
bmdUaHJlYWRlZFRlc3RzLmhwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xHZXRG
cmFtZVRpbWVzdGFtcHNUZXN0cy5jcHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWds
R2V0RnJhbWVUaW1lc3RhbXBzVGVzdHMuaHBwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wv
dGVnbEdldFByb2NBZGRyZXNzVGVzdHMuY3BwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wv
dGVnbEdldFByb2NBZGRyZXNzVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wv
dGVnbEltYWdlRm9ybWF0VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVn
bEltYWdlRm9ybWF0VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbElt
YWdlVGVzdHMuY3BwIiwKQEAgLTgxMCwxMCArODExLDEwIEBAIGRlcXBfZWdsX3NvdXJjZXMgPSBb
CiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xOZWdhdGl2ZUFwaVRlc3RzLmhwcCIsCiAg
ICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xOZWdhdGl2ZVBhcnRpYWxVcGRhdGVUZXN0cy5j
cHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsTmVnYXRpdmVQYXJ0aWFsVXBkYXRl
VGVzdHMuaHBwIiwKLSAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbFByZXNlcnZpbmdTd2Fw
VGVzdHMuY3BwIiwKLSAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbFByZXNlcnZpbmdTd2Fw
VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbFBhcnRpYWxVcGRhdGVU
ZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsUGFydGlhbFVwZGF0ZVRl
c3RzLmhwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xQcmVzZXJ2aW5nU3dhcFRl
c3RzLmNwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xQcmVzZXJ2aW5nU3dhcFRl
c3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbmZpZ1Rlc3Rz
LmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbmZpZ1Rlc3RzLmhw
cCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbnRleHRUZXN0cy5jcHAi
LApAQCAtOTEzLDggKzkxNCw2IEBAIGRlcXBfa2hyX2NvbW1vbl9zb3VyY2VzID0gWwogCiAgICMg
T3ZlcnJpZGUgdG8gd29yayBhcm91bmQgYSBkRVFQIGJ1ZzogaHR0cHM6Ly9naXRsYWIua2hyb25v
cy5vcmcvVHJhY2tlci92ay1nbC1jdHMvaXNzdWVzLzE4NTkKICAgIyAiJGRlcXBfcGF0aC9leHRl
cm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9jb21tb24vZ2xjU2hhZGVyQ29uc3RFeHByVGVzdHMuY3Bw
IiwKLSAgImRlcXBfc3VwcG9ydC9nbGNTaGFkZXJDb25zdEV4cHJUZXN0c19vdmVycmlkZS5jcHAi
LAotCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2NvbW1vbi9nbGNT
aGFkZXJDb25zdEV4cHJUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xj
dHMvbW9kdWxlcy9jb21tb24vZ2xjU2hhZGVyR3JvdXBWb3RlVGVzdHMuY3BwIiwKICAgIiRkZXFw
X3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2dsY1NoYWRlckdyb3VwVm90
ZVRlc3RzLmhwcCIsCkBAIC05MjgsMTEgKzkyNywxMCBAQCBkZXFwX2tocl9jb21tb25fc291cmNl
cyA9IFsKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2ds
Y1NoYWRlckxpYnJhcnlDYXNlLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0
cy9tb2R1bGVzL2NvbW1vbi9nbGNTaGFkZXJMb29wVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgv
ZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2dsY1NoYWRlckxvb3BUZXN0cy5ocHAi
LAorICAiZGVxcF9zdXBwb3J0L2dsY1NoYWRlckNvbnN0RXhwclRlc3RzX292ZXJyaWRlLmNwcCIs
CiAKICAgIyBPdmVycmlkZSB0byB3b3JrIGFyb3VuZCBhIGRFUVAgYnVnOiBodHRwczovL2dpdGxh
Yi5raHJvbm9zLm9yZy9UcmFja2VyL3ZrLWdsLWN0cy9pc3N1ZXMvMTg1OQogICAjICIkZGVxcF9w
YXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2NvbW1vbi9nbGNTaGFkZXJNYWNyb1Rlc3Rz
LmNwcCIsCi0gICJkZXFwX3N1cHBvcnQvZ2xjU2hhZGVyTWFjcm9UZXN0c19vdmVycmlkZS5jcHAi
LAotCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2NvbW1vbi9nbGNT
aGFkZXJNYWNyb1Rlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2NvbW1vbi9nbGNTaGFkZXJNdWx0aXNhbXBsZUludGVycG9sYXRpb25UZXN0cy5jcHAi
LAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9jb21tb24vZ2xjU2hh
ZGVyTXVsdGlzYW1wbGVJbnRlcnBvbGF0aW9uVGVzdHMuaHBwIiwKQEAgLTk2OSw2ICs5NjcsNyBA
QCBkZXFwX2tocl9jb21tb25fc291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Bl
bmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9lc2V4dGNUZXN0Q2FzZUJhc2UuaHBwIiwKICAgIiRkZXFw
X3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9lc2V4dGNUZXN0UGFja2Fn
ZS5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0
L2VzZXh0Y1Rlc3RQYWNrYWdlLmhwcCIsCisgICJkZXFwX3N1cHBvcnQvZ2xjU2hhZGVyTWFjcm9U
ZXN0c19vdmVycmlkZS5jcHAiLAogXQogCiBkZXFwX2tocl90ZXN0X21vZHVsZV9oZWFkZXJzID0g
WwpAQCAtMTA0MywxOSArMTA0MiwxOSBAQCBkZXFwX2tocl9nbF9zb3VyY2VzID0gWwogICAiJGRl
cXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjRGlyZWN0U3RhdGVBY2Nl
c3NUZXh0dXJlc1Rlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2dsL2dsNGNEaXJlY3RTdGF0ZUFjY2Vzc1ZlcnRleEFycmF5c1Rlc3RzLmNwcCIsCiAg
ICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNEaXJlY3RTdGF0
ZUFjY2Vzc1hGQlRlc3RzLmNwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2dsL2dsNGNFbmhhbmNlZExheW91dHNUZXN0cy5jcHAiLAotICAiJGRlcXBfcGF0aC9l
eHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjRW5oYW5jZWRMYXlvdXRzVGVzdHMuaHBw
IiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0VTMzFD
b21wYXRpYmlsaXR5U2FtcGxlVmFyaWFibGVzVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0
ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0VTMzFDb21wYXRpYmlsaXR5U2hhZGVySW1h
Z2VMb2FkU3RvcmVUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMv
bW9kdWxlcy9nbC9nbDRjRVMzMUNvbXBhdGliaWxpdHlTaGFkZXJTdG9yYWdlQnVmZmVyT2JqZWN0
VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wv
Z2w0Y0VTMzFDb21wYXRpYmlsaXR5VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwv
b3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0VTMzFDb21wYXRpYmlsaXR5VGVzdHMuaHBwIiwKKyAg
IiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0VuaGFuY2VkTGF5
b3V0c1Rlc3RzLmNwcCIsCisgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVz
L2dsL2dsNGNFbmhhbmNlZExheW91dHNUZXN0cy5ocHAiLAorICAiJGRlcXBfcGF0aC9leHRlcm5h
bC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjR1BVU2hhZGVyRlA2NFRlc3RzLmNwcCIsCisgICIk
ZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNHUFVTaGFkZXJGUDY0
VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wv
Z2w0Y0dldFRleHR1cmVTdWJJbWFnZVRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFs
L29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNHZXRUZXh0dXJlU3ViSW1hZ2VUZXN0cy5ocHAiLAog
ICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjR2xTcGlydlRl
c3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsL2ds
NGNHbFNwaXJ2VGVzdHMuaHBwIiwKLSAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21v
ZHVsZXMvZ2wvZ2w0Y0dQVVNoYWRlckZQNjRUZXN0cy5jcHAiLAotICAiJGRlcXBfcGF0aC9leHRl
cm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjR1BVU2hhZGVyRlA2NFRlc3RzLmhwcCIsCiAg
ICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNJbmNvbXBsZXRl
VGV4dHVyZUFjY2Vzc1Rlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0
cy9tb2R1bGVzL2dsL2dsNGNJbmNvbXBsZXRlVGV4dHVyZUFjY2Vzc1Rlc3RzLmhwcCIsCiAgICIk
ZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNJbmRpcmVjdFBhcmFt
ZXRlcnNUZXN0cy5jcHAiLApAQCAtMTE2OSwxNCArMTE2OCwxNCBAQCBkZXFwX2tocl9nbGVzMzFf
c291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xl
czMxL2VzMzFjVGV4dHVyZVN0b3JhZ2VNdWx0aXNhbXBsZURlcGVuZGVuY2llc1Rlc3RzLmhwcCIs
CiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXMzMS9lczMxY1Rl
eHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVGdW5jdGlvbmFsVGVzdHMuY3BwIiwKICAgIiRkZXFwX3Bh
dGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVyZVN0b3JhZ2VN
dWx0aXNhbXBsZUZ1bmN0aW9uYWxUZXN0cy5ocHAiLAorICAiJGRlcXBfcGF0aC9leHRlcm5hbC9v
cGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxlR0xD
b3ZlcmFnZVRlc3RzLmNwcCIsCisgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1
bGVzL2dsZXMzMS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVHTENvdmVyYWdlVGVzdHMu
aHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2Vz
MzFjVGV4dHVyZVN0b3JhZ2VNdWx0aXNhbXBsZUdldEFjdGl2ZVVuaWZvcm1UZXN0cy5jcHAiLAog
ICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0
dXJlU3RvcmFnZU11bHRpc2FtcGxlR2V0QWN0aXZlVW5pZm9ybVRlc3RzLmhwcCIsCiAgICIkZGVx
cF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXMzMS9lczMxY1RleHR1cmVTdG9y
YWdlTXVsdGlzYW1wbGVHZXRNdWx0aXNhbXBsZWZ2VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgv
ZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVyZVN0b3JhZ2VNdWx0
aXNhbXBsZUdldE11bHRpc2FtcGxlZnZUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5h
bC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxl
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpZnZUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5h
bC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxl
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpZnZUZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0aC9leHRlcm5h
bC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxl
R0xDb3ZlcmFnZVRlc3RzLmNwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2dsZXMzMS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVHTENvdmVyYWdlVGVz
dHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMx
L2VzMzFjVGV4dHVyZVN0b3JhZ2VNdWx0aXNhbXBsZVNhbXBsZU1hc2tpVGVzdHMuY3BwIiwKICAg
IiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVy
ZVN0b3JhZ2VNdWx0aXNhbXBsZVNhbXBsZU1hc2tpVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgv
ZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVyZVN0b3JhZ2VNdWx0
aXNhbXBsZVRlc3RzLmNwcCIsCkBAIC0xMjEzLDEyICsxMjEyLDEyIEBAIGRlcXBfa2hyX2dsZXNl
eHRfc291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMv
Z2xlc2V4dC9kcmF3X2J1ZmZlcnNfaW5kZXhlZC9lc2V4dGNEcmF3QnVmZmVyc0luZGV4ZWRTZXRH
ZXQuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4
dC9kcmF3X2J1ZmZlcnNfaW5kZXhlZC9lc2V4dGNEcmF3QnVmZmVyc0luZGV4ZWRUZXN0cy5jcHAi
LAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2RyYXdf
ZWxlbWVudHNfYmFzZV92ZXJ0ZXgvZXNleHRjRHJhd0VsZW1lbnRzQmFzZVZlcnRleFRlc3RzLmNw
cCIsCisgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ2Vv
bWV0cnlfc2hhZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQVBJLmNwcCIsCisgICIkZGVxcF9wYXRo
L2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ2VvbWV0cnlfc2hhZGVyL2VzZXh0
Y0dlb21ldHJ5U2hhZGVyQVBJLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0
cy9tb2R1bGVzL2dsZXNleHQvZ2VvbWV0cnlfc2hhZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQWRq
YWNlbmN5LmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2ds
ZXNleHQvZ2VvbWV0cnlfc2hhZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQWRqYWNlbmN5LmhwcCIs
CiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ2VvbWV0
cnlfc2hhZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQWRqYWNlbmN5VGVzdHMuY3BwIiwKICAgIiRk
ZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFk
ZXIvZXNleHRjR2VvbWV0cnlTaGFkZXJBZGphY2VuY3lUZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0
aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2dlb21ldHJ5X3NoYWRlci9lc2V4
dGNHZW9tZXRyeVNoYWRlckFQSS5jcHAiLAotICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xj
dHMvbW9kdWxlcy9nbGVzZXh0L2dlb21ldHJ5X3NoYWRlci9lc2V4dGNHZW9tZXRyeVNoYWRlckFQ
SS5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0
L2dlb21ldHJ5X3NoYWRlci9lc2V4dGNHZW9tZXRyeVNoYWRlckJsaXR0aW5nLmNwcCIsCiAgICIk
ZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ2VvbWV0cnlfc2hh
ZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQmxpdHRpbmcuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0
ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFkZXIvZXNleHRjR2Vv
bWV0cnlTaGFkZXJDbGlwcGluZy5jcHAiLApAQCAtMTI2NiwxMCArMTI2NSwxMCBAQCBkZXFwX2to
cl9nbGVzZXh0X3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hhZGVyNUltYWdlc0FycmF5SW5k
ZXhpbmcuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xl
c2V4dC9ncHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1UHJlY2lzZVF1YWxpZmllci5jcHAiLAog
ICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2dwdV9zaGFk
ZXI1L2VzZXh0Y0dQVVNoYWRlcjVQcmVjaXNlUXVhbGlmaWVyLmhwcCIsCi0gICIkZGVxcF9wYXRo
L2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BV
U2hhZGVyNVNhbXBsZXJBcnJheUluZGV4aW5nLmNwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFs
L29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hhZGVyNVNh
bXBsZXJBcnJheUluZGV4aW5nLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0
cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hhZGVyNVNTQk9BcnJheUlu
ZGV4aW5nLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2ds
ZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hhZGVyNVNTQk9BcnJheUluZGV4aW5nLmhwcCIs
CisgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3No
YWRlcjUvZXNleHRjR1BVU2hhZGVyNVNhbXBsZXJBcnJheUluZGV4aW5nLmNwcCIsCisgICIkZGVx
cF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNl
eHRjR1BVU2hhZGVyNVNhbXBsZXJBcnJheUluZGV4aW5nLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4
dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hh
ZGVyNVRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVz
L2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hhZGVyNVRleHR1cmVHYXRoZXJPZmZzZXQu
Y3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9n
cHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1VGV4dHVyZUdhdGhlck9mZnNldC5ocHAiLApAQCAt
MTM0NCwxMCArMTM0MywxMCBAQCBkZXFwX2tocl9nbGVzZXh0X3NvdXJjZXMgPSBbCiAgICIkZGVx
cF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZmZXIv
ZXNleHRjVGV4dHVyZUJ1ZmZlck1BWFNpemVWYWxpZGF0aW9uLmhwcCIsCiAgICIkZGVxcF9wYXRo
L2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZmZXIvZXNleHRj
VGV4dHVyZUJ1ZmZlck9wZXJhdGlvbnMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Bl
bmdsY3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0dXJlQnVmZmVy
T3BlcmF0aW9ucy5ocHAiLAotICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxl
cy9nbGVzZXh0L3RleHR1cmVfYnVmZmVyL2VzZXh0Y1RleHR1cmVCdWZmZXJQYXJhbWV0ZXJzLmNw
cCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4
dHVyZV9idWZmZXIvZXNleHRjVGV4dHVyZUJ1ZmZlclBhcmFtZXRlcnMuaHBwIiwKICAgIiRkZXFw
X3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9l
c2V4dGNUZXh0dXJlQnVmZmVyUGFyYW1WYWx1ZUludFRvRmxvYXRDb252ZXJzaW9uLmNwcCIsCiAg
ICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9i
dWZmZXIvZXNleHRjVGV4dHVyZUJ1ZmZlclBhcmFtVmFsdWVJbnRUb0Zsb2F0Q29udmVyc2lvbi5o
cHAiLAorICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L3Rl
eHR1cmVfYnVmZmVyL2VzZXh0Y1RleHR1cmVCdWZmZXJQYXJhbWV0ZXJzLmNwcCIsCisgICIkZGVx
cF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZmZXIv
ZXNleHRjVGV4dHVyZUJ1ZmZlclBhcmFtZXRlcnMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJu
YWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0dXJl
QnVmZmVyUHJlY2lzaW9uLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZmZXIvZXNleHRjVGV4dHVyZUJ1ZmZlclByZWNpc2lv
bi5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0
L3RleHR1cmVfYnVmZmVyL2VzZXh0Y1RleHR1cmVCdWZmZXJUZXN0cy5jcHAiLApAQCAtMTQ4Myw2
ICsxNDgyLDggQEAgZGVxcF9mcmFtZXdvcmtfZGVjcHBfc291cmNlcyA9IFsKICAgIiRkZXFwX3Bh
dGgvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVJhbmRvbS5ocHAiLAogICAiJGRlcXBfcGF0aC9m
cmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlUmluZ0J1ZmZlci5jcHAiLAogICAiJGRlcXBfcGF0aC9m
cmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlUmluZ0J1ZmZlci5ocHAiLAorICAiJGRlcXBfcGF0aC9m
cmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlU1RMVXRpbC5jcHAiLAorICAiJGRlcXBfcGF0aC9mcmFt
ZXdvcmsvZGVsaWJzL2RlY3BwL2RlU1RMVXRpbC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvZGVsaWJzL2RlY3BwL2RlU2VtYXBob3JlLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29y
ay9kZWxpYnMvZGVjcHAvZGVTZW1hcGhvcmUuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3Jr
L2RlbGlicy9kZWNwcC9kZVNoYTEuY3BwIiwKQEAgLTE0OTMsOCArMTQ5NCw2IEBAIGRlcXBfZnJh
bWV3b3JrX2RlY3BwX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMv
ZGVjcHAvZGVTb2NrZXQuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2RlbGlicy9kZWNw
cC9kZVNwaW5CYXJyaWVyLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVj
cHAvZGVTcGluQmFycmllci5ocHAiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2Rl
Y3BwL2RlU1RMVXRpbC5jcHAiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2RlY3Bw
L2RlU1RMVXRpbC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2Rl
U3RyaW5nVXRpbC5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2Rl
U3RyaW5nVXRpbC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2Rl
VGhyZWFkLmNwcCIsCkBAIC0xNTgyLDEwICsxNTgxLDEwIEBAIGRlcXBfZnJhbWV3b3JrX29wZW5n
bF9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3
RW51bXMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyL2dsd0Vu
dW1zLmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdGdW5j
dGlvbkxvYWRlci5ocHAiLAorICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIv
Z2x3RnVuY3Rpb25UeXBlcy5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvb3BlbmdsL3dy
YXBwZXIvZ2x3RnVuY3Rpb25zLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wv
d3JhcHBlci9nbHdGdW5jdGlvbnMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL29wZW5n
bC93cmFwcGVyL2dsd0Z1bmN0aW9ucy5pbmwiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvb3Bl
bmdsL3dyYXBwZXIvZ2x3RnVuY3Rpb25UeXBlcy5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvb3BlbmdsL3dyYXBwZXIvZ2x3SW1wbC5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
b3BlbmdsL3dyYXBwZXIvZ2x3SW5pdEVTMjAuaW5sIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3Jr
L29wZW5nbC93cmFwcGVyL2dsd0luaXRFUzIwRGlyZWN0LmNwcCIsCkBAIC0xNjcyLDEwICsxNjcx
LDEwIEBAIGRlcXBfZnJhbWV3b3JrX2VnbF9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9mcmFt
ZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0VudW1zQy5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmNQdHJMaWJyYXJ5RGVjbC5pbmwiLAogICAiJGRlcXBfcGF0
aC9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmNQdHJMaWJyYXJ5SW1wbC5pbmwiLAorICAi
JGRlcXBfcGF0aC9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9uVHlwZXMuaW5sIiwK
ICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdGdW5jdGlvbnMuY3BwIiwK
ICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdGdW5jdGlvbnMuaHBwIiwK
ICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdGdW5jdGlvbnMuaW5sIiwK
LSAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdGdW5jdGlvblR5cGVzLmlu
bCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9lZ2wvd3JhcHBlci9lZ2x3SW1wbC5pbmwiLAog
ICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0ltcGxFeHQuaW5sIiwKICAg
IiRkZXFwX3BhdGgvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdJbml0Q29yZS5pbmwiLApAQCAt
MTY5OSwxMiArMTY5OCwxMiBAQCBkZXFwX2ZyYW1ld29ya19jb21tb25fc291cmNlcyA9IFsKICAg
IiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VBc3RjVXRpbC5ocHAiLAogICAiJGRlcXBf
cGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdUJpbGluZWFySW1hZ2VDb21wYXJlLmNwcCIsCiAgICIk
ZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuaHBwIiwK
KyAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VDUFVXYXJtdXAuY3BwIiwKKyAgIiRk
ZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VDUFVXYXJtdXAuaHBwIiwKICAgIiRkZXFwX3Bh
dGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VDb21tYW5kTGluZS5jcHAiLAogICAiJGRlcXBfcGF0aC9m
cmFtZXdvcmsvY29tbW9uL3RjdUNvbW1hbmRMaW5lLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1l
d29yay9jb21tb24vdGN1Q29tcHJlc3NlZFRleHR1cmUuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJh
bWV3b3JrL2NvbW1vbi90Y3VDb21wcmVzc2VkVGV4dHVyZS5ocHAiLAotICAiJGRlcXBfcGF0aC9m
cmFtZXdvcmsvY29tbW9uL3RjdUNQVVdhcm11cC5jcHAiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvY29tbW9uL3RjdUNQVVdhcm11cC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29t
bW9uL3RjdURlZnMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VEZWZz
LmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1RWl0aGVyLmNwcCIsCkBA
IC0xNzM0LDYgKzE3MzMsOCBAQCBkZXFwX2ZyYW1ld29ya19jb21tb25fc291cmNlcyA9IFsKICAg
IiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VQaXhlbEZvcm1hdC5ocHAiLAogICAiJGRl
cXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVBsYXRmb3JtLmNwcCIsCiAgICIkZGVxcF9wYXRo
L2ZyYW1ld29yay9jb21tb24vdGN1UGxhdGZvcm0uaHBwIiwKKyAgIiRkZXFwX3BhdGgvZnJhbWV3
b3JrL2NvbW1vbi90Y3VSR0JBLmNwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24v
dGN1UkdCQS5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVJhbmRvbVZh
bHVlSXRlcmF0b3IuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VSYW5k
b21WYWx1ZUl0ZXJhdG9yLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1
UmFzdGVyaXphdGlvblZlcmlmaWVyLmNwcCIsCkBAIC0xNzQ0LDExICsxNzQ1LDkgQEAgZGVxcF9m
cmFtZXdvcmtfY29tbW9uX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21t
b24vdGN1UmVzb3VyY2UuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VS
ZXN1bHRDb2xsZWN0b3IuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VS
ZXN1bHRDb2xsZWN0b3IuaHBwIiwKLSAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VS
R0JBLmNwcCIsCi0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1UkdCQS5ocHAiLAor
ICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVNSR0I4THV0LmlubCIsCiAgICIkZGVx
cF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1U2VlZEJ1aWxkZXIuY3BwIiwKICAgIiRkZXFwX3Bh
dGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VTZWVkQnVpbGRlci5ocHAiLAotICAiJGRlcXBfcGF0aC9m
cmFtZXdvcmsvY29tbW9uL3RjdVNSR0I4THV0LmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29y
ay9jb21tb24vdGN1U3RyaW5nVGVtcGxhdGUuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VTdHJpbmdUZW1wbGF0ZS5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
Y29tbW9uL3RjdVN1cmZhY2UuY3BwIiwKQEAgLTE3NzMsMTIgKzE3NzIsMTIgQEAgZGVxcF9mcmFt
ZXdvcmtfY29tbW9uX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24v
dGN1VGV4Q29tcGFyZVZlcmlmaWVyLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21t
b24vdGN1VGV4TG9va3VwVmVyaWZpZXIuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VUZXhMb29rdXBWZXJpZmllci5ocHAiLAorICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
Y29tbW9uL3RjdVRleFZlcmlmaWVyVXRpbC5jcHAiLAorICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
Y29tbW9uL3RjdVRleFZlcmlmaWVyVXRpbC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
Y29tbW9uL3RjdVRleHR1cmUuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90
Y3VUZXh0dXJlLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1VGV4dHVy
ZVV0aWwuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXh0dXJlVXRp
bC5ocHAiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleFZlcmlmaWVyVXRp
bC5jcHAiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleFZlcmlmaWVyVXRp
bC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVRocmVhZFV0aWwuY3Bw
IiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VUaHJlYWRVdGlsLmhwcCIsCiAg
ICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1VmVjdG9yLmhwcCIsCkBAIC0xODQ1LDkg
KzE4NDQsOSBAQCBkZXFwX2ZyYW1ld29ya19jb21tb25fc291cmNlcyA9IFsKICAgIiRkZXFwX3Bh
dGgvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUHJpbWl0aXZlVHlwZXMuaHBwIiwKICAg
IiRkZXFwX3BhdGgvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmFzdGVyaXplci5jcHAi
LAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJSYXN0ZXJpemVy
LmhwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclJlbmRl
clN0YXRlLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9y
clJlbmRlcmVyLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJl
ci9yclJlbmRlcmVyLmhwcCIsCi0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5k
ZXJlci9yclJlbmRlclN0YXRlLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9yZWZlcmVu
Y2VyZW5kZXJlci9yclNoYWRlcnMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL3JlZmVy
ZW5jZXJlbmRlcmVyL3JyU2hhZGVycy5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvcmVm
ZXJlbmNlcmVuZGVyZXIvcnJTaGFkaW5nQ29udGV4dC5jcHAiLApAQCAtMTg4OCwxMCArMTg4Nywx
MCBAQCBkZXFwX2dsc2hhcmVkX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xz
aGFyZWQvZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbHNoYXJlZC9nbHNGYm9VdGlsLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xzaGFy
ZWQvZ2xzRmJvVXRpbC5ocHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hhcmVkL2dsc0Zy
YWdtZW50T3BVdGlsLmNwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRnJh
Z21lbnRPcFV0aWwuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNoYXJlZC9nbHNGcmFn
T3BJbnRlcmFjdGlvbkNhc2UuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNoYXJlZC9n
bHNGcmFnT3BJbnRlcmFjdGlvbkNhc2UuaHBwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNo
YXJlZC9nbHNGcmFnbWVudE9wVXRpbC5jcHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hh
cmVkL2dsc0ZyYWdtZW50T3BVdGlsLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xzaGFy
ZWQvZ2xzSW50ZXJhY3Rpb25UZXN0VXRpbC5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2ds
c2hhcmVkL2dsc0ludGVyYWN0aW9uVGVzdFV0aWwuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbHNoYXJlZC9nbHNMaWZldGltZVRlc3RzLmNwcCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZWdsX3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZjUzNGQ3NGZh
M2FjMzY2YjYzODllMGNmODliYmE3Yjg2MWI1NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZWdsX3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dApAQCAtMCwwICsxLDI1MiBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRoaXMgZmlsZSBjb250YWlu
cyBhIGxpc3Qgb2YgZGVmZWN0aXZlIGRFUVAgY29uZm9ybWFuY2UgdGVzdHMuIFRoZSBleHBlY3Rl
ZAorLy8gZm9ybWF0IGlzOgorLy8gIHtCVUcjfSB7TU9ESUZJRVJTfSA6IHtURVNUX05BTUV9ID0g
e1BBU1MsRkFJTCxGTEFLWSxUSU1FT1VULFNLSVB9CisvLworLy8gTU9ESUZJRVJTIGNhbiBiZSBh
IGNvbWJpbmF0aW9uIG9mIHRoZSBiZWxvdyBsaXN0LCBjb21iaW5lZCB3aXRoIGEgbG9naWNhbCBB
TkQ6CisvLyAgV0lOIFhQIFZJU1RBIFdJTjcgV0lOOCBXSU4xMAorLy8gIE1BQyBMRU9QQVJEIFNO
T1dMRU9QQVJEIExJT04gTU9VTlRBSU5MSU9OIE1BVkVSSUNLUyBZT1NFTUlURSBFTENBUElUQU4g
U0lFUlJBIEhJR0hTSUVSUkEgTU9KQVZFCisvLyAgTElOVVggQ0hST01FT1MgQU5EUk9JRAorLy8g
IE5WSURJQSBBTUQgSU5URUwKKy8vICBERUJVRyBSRUxFQVNFCisvLyAgRDNEOSBEM0QxMSBPUEVO
R0wgR0xFUyBWVUxLQU4KKy8vICBORVhVUzVYIFBJWEVMMk9SWEwKKy8vICBRVUFEUk9QNDAwCisv
LworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUg
YSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4K
Ky8vCisvLyBFeGFtcGxlczoKKy8vIGZhaWxzIG9uIGJvdGggd2luZG93cyBhbmQgbWFjIChjcmFz
aCkKKy8vICA5MTUzMCBXSU4gOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBTS0lQCisvLyAgOTE1
MzAgTUFDIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gU0tJUAorLy8gZmFpbHMgb24gd2luZG93
cyB1c2luZyBOVklESUEgR1BVcworLy8gIDkxNTMzIFdJTiBOVklESUEgOiBnbF9taW5fdW5pZm9y
bXMgPSBGQUlMCisvLyBmYWlscyBvbiBOZXh1czVYIHdpdGggR0xFUyBiYWNrZW5kIChoYW5ncykK
Ky8vICA5MTUzMSBORVhVUzVYIEdMRVMgOiBjb25mb3JtYW5jZV9tb3JlXyogPSBTS0lQCisKKy8v
IEdsb2JhbGx5IGRpc2FibGUgTWV0YWwgdGVzdGluZyBmb3Igbm93Cis0MjM1IE1FVEFMIDogZEVR
UC1FR0wuKiA9IFNLSVAKKworLy8gT25seSBWdWxrYW4gc3VwcG9ydHMgbXVsdGl0aHJlYWRpbmcK
KzM5MTYgT1BFTkdMIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zaGFyaW5nLmdsZXMyLm11bHRpdGhy
ZWFkLiogPSBTS0lQCiszOTE2IE9QRU5HTCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVsdGl0aHJl
YWQuKiA9IFNLSVAKKzM5MTYgT1BFTkdMIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVs
dGlfdGhyZWFkLiogPSBTS0lQCiszOTE2IE9QRU5HTCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29s
b3JfY2xlYXJzLm11bHRpX3RocmVhZC4qID0gU0tJUAorMzkxNiBHTEVTIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5zaGFyaW5nLmdsZXMyLm11bHRpdGhyZWFkLiogPSBTS0lQCiszOTE2IEdMRVMgOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLm11bHRpdGhyZWFkLiogPSBTS0lQCiszOTE2IEdMRVMgOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV90aHJlYWQuKiA9IFNLSVAKKzM5MTYgR0xFUyA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX3RocmVhZC4qID0gU0tJUAor
MzkxNiBEM0QxMSA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc2hhcmluZy5nbGVzMi5tdWx0aXRocmVh
ZC4qID0gU0tJUAorMzkxNiBEM0QxMSA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVsdGl0aHJlYWQu
KiA9IFNLSVAKKzM5MTYgRDNEMTEgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV90
aHJlYWQuKiA9IFNLSVAKKzM5MTYgRDNEMTEgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9yX2Ns
ZWFycy5tdWx0aV90aHJlYWQuKiA9IFNLSVAKKzM5MTYgRDNEOSA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuc2hhcmluZy5nbGVzMi5tdWx0aXRocmVhZC4qID0gU0tJUAorMzkxNiBEM0Q5IDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5tdWx0aXRocmVhZC4qID0gU0tJUAorMzkxNiBEM0Q5IDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfdGhyZWFkLiogPSBTS0lQCiszOTE2IEQzRDkgOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNvbG9yX2NsZWFycy5tdWx0aV90aHJlYWQuKiA9IFNLSVAKKworLy8g
U2VlbXMgdG8gdGltZSBvdXQgb24gTGludXguCis0MDMxOTE2IFZVTEtBTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubXVsdGl0aHJlYWQuKiA9IFNLSVAKKworLy8gVGhlc2UgdGVzdHMgcmVxdWlyZSBw
aXhtYXAgc3VyZmFjZXMuIE9uIG1hbnkgcGxhdGZvcm1zIHRoZXkgYXJlIHVuc3VwcG9ydGVkLgor
MzkxNyBBTkRST0lEIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX3Ro
cmVhZC4qID0gRkFJTAorMzkxNyBBTkRST0lEIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y29sb3JfY2xlYXJzLm11bHRpX3RocmVhZC4qID0gRkFJTAorCisvLyBkRVFQIGRvZXNuJ3QgaGFu
ZGxlIGNvbmZpZ3MgY3JlYXRlZCBmb3IgZXh0ZW5zaW9ucworMTY2MiBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNvbG9yX2NsZWFycy5zaW5nbGVfY29udGV4dC5nbGVzMi5vdGhlciA9IEZBSUwK
KzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMuc2luZ2xlX2NvbnRl
eHQuZ2xlczMub3RoZXIgPSBGQUlMCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29s
b3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xlczIub3RoZXIgPSBGQUlMCisxNjYyIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xlczMub3RoZXIg
PSBGQUlMCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250
ZXh0LmdsZXMyLm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJl
bmRlci5zaW5nbGVfY29udGV4dC5nbGVzMy5vdGhlciA9IEZBSUwKKzE2NjIgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMi5vdGhlciA9IEZBSUwKKzE2
NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMy5v
dGhlciA9IEZBSUwKKzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlf
Y29udGV4dC5nbGVzMl9nbGVzMy5vdGhlciA9IEZBSUwKKzE2NjIgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93Lm90aGVyX2NsZWFyID0g
RkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5n
Lm5hdGl2ZV93aW5kb3cub3RoZXJfcmVuZGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQuZ2V0X2N1cnJlbnRfY29udGV4dC5vdGhlciA9IEZBSUwK
KzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LmdldF9jdXJyZW50
X3N1cmZhY2Uub3RoZXIgPSBGQUlMCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfY29udGV4dC5nZXRfY3VycmVudF9kaXNwbGF5Lm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQucXVlcnlfY29udGV4dC5vdGhlciA9IEZB
SUwKKzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5u
YXRpdmVfd2luZG93Lm90aGVyX2NsZWFyID0gU0tJUAorMTY2MiBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cub3RoZXJfcmVuZGVyID0g
U0tJUAorCisvLyBJbnRlbnRpb25hbGx5IGNhdXNlcyBURFJzIHRoYXQgZXZlbnR1YWxseSBibGFj
a2xpc3QgdGhlIGFwcGxpY2F0aW9uCisyMzE5IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yb2J1c3Ru
ZXNzLnJlc2V0X2NvbnRleHQuc2hhZGVycy5pbmZpbml0ZV9sb29wLiogPSBTS0lQCisKKy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gIFRlbXByb3J5IGVudHJpZXM6IHRoZXkgc2hvdWxk
IGJlIHJlbW92ZWQgb25jZSB0aGUgYnVncyBhcmUgZml4ZWQuCisvLworLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKworLy8gRmxha3kgc2luY2Ugd2UgZW5hYmxlZCBkZXB0aC9zdGVuY2lsIGJhY2ti
dWZmZXIgaW4gYWxsIHRlc3RzLgorMjQyOSBXSU4gTlZJRElBIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5xdWVyeV9jb250ZXh0LnF1ZXJ5X2NvbnRleHQucmdiYTg4ODhfd2luZG93ID0gRkFJTAorCisv
LyBUT0RPKGptYWRpbGwpOiBUcmlhZ2UgdGhlc2UgaW50byBwZXJtYW5hbmVudCBhbmQgdGVtcG9y
YXJ5IGZhaWx1cmVzLgorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbmZp
Zy5nZXRfY29uZmlncy5nZXRfY29uZmlnc19ib3VuZHMgPSBGQUlMCiszMjcwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuY29uZmln
X2lkID0gRkFJTAorMzI3MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcu
c2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5jb25maWdfaWQgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3dp
bmRvdyA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xl
X2NvbnRleHQuZ2xlczIucmdiYTU1NTFfcGJ1ZmZlciA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xlX2NvbnRleHQuZ2xlczMucmdiYTU1NTFfd2luZG93
ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29u
dGV4dC5nbGVzMy5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3dpbmRvdyA9IEZB
SUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5n
bGVzMi5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMzLnJnYmE1NTUxX3dpbmRvdyA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMy5y
Z2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJl
bmRlci5tdWx0aV9jb250ZXh0LmdsZXMyX2dsZXMzLnJnYmE1NTUxX3dpbmRvdyA9IEZBSUwKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMl9n
bGVzMy5yZ2JhNTU1MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5lZ2F0aXZlX2FwaS5jaG9vc2VfY29uZmlnID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5zdXJmYWNlX2F0dHJpYiA9IFNLSVAKKzEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkuc3dhcF9pbnRlcnZhbCA9IEZBSUwK
KzIzODIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRp
dmVfd2luZG93LiogPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZl
X2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy4qID0gRkFJTAorMjcxNiBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3YXAucHJlc2VydmUubm9fcmVhZF9iZWZvcmVfc3dhcC4q
ID0gU0tJUAorMjcxNiBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3YXAucHJl
c2VydmUucmVhZF9iZWZvcmVfc3dhcC4qID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnJlc2l6ZS5iYWNrX2J1ZmZlci4qID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnJlc2l6ZS5waXhlbF9kZW5zaXR5LiogPSBTS0lQCisKKy8vIFdpbmRvd3MgT3Bl
bkdMIGZhaWx1cmVzCisyNTQ2IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVzaXplLnN1cmZh
Y2Vfc2l6ZS5zaHJpbmsgPSBTS0lQCisyNTQ2IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gRkFJTAor
MjU0NiBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnRocmVhZF9jbGVhbnVwLiogPSBTS0lQCisK
Ky8vIFdpbmRvd3MgVnVsa2FuIGZhaWx1cmVzCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLm11bHRpY29udGV4dC5ub25fc2hhcmVkX2NsZWFyID0gRkFJTAorMjYzNSBXSU4g
VlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5tdWx0aWNvbnRleHQubm9uX3NoYXJlZF9tYWtl
X2N1cnJlbnQgPSBGQUlMCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm11
bHRpY29udGV4dC5zaGFyZWRfY2xlYXIgPSBGQUlMCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm11bHRpY29udGV4dC5zaGFyZWRfbWFrZV9jdXJyZW50ID0gRkFJTAorMjYz
NSBXSU4gVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRy
aWJ1dGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gRkFJTAorMjYzNSBXSU4gVlVM
S0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1
ZmZlci5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMjcxNSBXSU4gVlVMS0FO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjg4
OF9kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMjcxNSBXSU4gVlVMS0FOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjg4OF9kZXB0aF9zdGVuY2ls
ID0gRkFJTAorMjcxNSBXSU4gVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJm
YWNlLnNpbXBsZS5wYnVmZmVyLnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMjcx
NSBXSU4gVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5w
YnVmZmVyLnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisyNzE1IFdJTiBWVUxLQU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTg4
ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKKzI2MzUgV0lOIFZVTEtBTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwucmVzaXplLnN1cmZhY2Vfc2l6ZS5ncm93ID0gRkFJTAorMjYzNSBXSU4gVlVM
S0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXNpemUuc3VyZmFjZV9zaXplLnN0cmV0Y2hfaGVp
Z2h0ID0gRkFJTAorMjYzNSBXSU4gVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXNpemUu
c3VyZmFjZV9zaXplLnN0cmV0Y2hfd2lkdGggPSBGQUlMCisyNzE2IFdJTiBWVUxLQU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3YXAubm9fcHJlc2VydmUuKiA9IEZBSUwKKworLy8g
TGludXggZmFpbHVyZXMKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9yX2Ns
ZWFycy5tdWx0aV9jb250ZXh0LmdsZXMxLnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElO
VVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9yX2NsZWFycy5tdWx0aV9jb250ZXh0LmdsZXMx
X2dsZXMyLnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNvbG9yX2NsZWFycy5tdWx0aV9jb250ZXh0LmdsZXMxX2dsZXMyX2dsZXMzLnJnYmE4
ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9y
X2NsZWFycy5tdWx0aV9jb250ZXh0LmdsZXMyLnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYg
TElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9yX2NsZWFycy5tdWx0aV9jb250ZXh0Lmds
ZXMzLnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmNvbG9yX2NsZWFycy5zaW5nbGVfY29udGV4dC5nbGVzMS5yZ2JhODg4OF9waXhtYXAgPSBT
S0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMuc2luZ2xl
X2NvbnRleHQuZ2xlczIucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLnNpbmdsZV9jb250ZXh0LmdsZXMzLnJnYmE4ODg4
X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNyZWF0ZV9z
dXJmYWNlLnBpeG1hcC5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAorMjU0NiBMSU5VWCA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY3JlYXRlX3N1cmZhY2UucGl4bWFwLnJnYmE4ODg4X25vX2Rl
cHRoX25vX3N0ZW5jaWwgPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5u
ZWdhdGl2ZV9hcGkuY29weV9idWZmZXJzID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfY29udGV4dC5nZXRfY3VycmVudF9jb250ZXh0LnJnYmE4ODg4X3BpeG1h
cCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQu
Z2V0X2N1cnJlbnRfZGlzcGxheS5yZ2JhODg4OF9waXhtYXAgPSBTS0lQCisyNTQ2IExJTlVYIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LmdldF9jdXJyZW50X3N1cmZhY2Uucmdi
YTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfY29udGV4dC5xdWVyeV9jb250ZXh0LnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElO
VVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5waXht
YXAucmdiYTg4ODhfZGVwdGhfc3RlbmNpbCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5waXhtYXAucmdiYTg4ODhfbm9f
ZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBpeG1hcC5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJ
UAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUu
cGl4bWFwLnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCisyNTQ2IExJTlVYIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC4qID0gU0tJUAorMjU0NiBM
SU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0LmdsZXMyLnJn
YmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJl
bmRlci5zaW5nbGVfY29udGV4dC5nbGVzMy5yZ2JhODg4OF9waXhtYXAgPSBTS0lQCisyNTQ2IExJ
TlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC50aHJlYWRfY2xlYW51cC4qID0gU0tJUAorMjU0NiBM
SU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dp
bmRvdy4qID0gRkFJTAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
b3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy4qID0gRkFJTAorMjU0NiBMSU5VWCA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLmNob29zZV9jb25maWcgPSBGQUlMCisyNTQ2IExJTlVY
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkuc3dhcF9pbnRlcnZhbCA9IEZBSUwK
KzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBi
dWZmZXIucmdiYTg4ODhfZGVwdGhfc3RlbmNpbCA9IEZBSUwKKzI1NDYgTElOVVggOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTg4ODhfbm9fZGVw
dGhfbm9fc3RlbmNpbCA9IEZBSUwKKworLy8gTGludXggVnVsa2FuIGZhaWx1cmVzCisyNjM1IExJ
TlVYIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmli
dXRlLnBidWZmZXIucmdiYTg4ODhfZGVwdGhfc3RlbmNpbCA9IEZBSUwKKzI2MzUgTElOVVggVlVM
S0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1
ZmZlci5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMjcxNSBMSU5VWCBWVUxL
QU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdi
ODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisyNzE1IExJTlVYIFZVTEtBTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2I4ODhfbm9fZGVwdGhfbm9f
c3RlbmNpbCA9IEZBSUwKKzI3MTYgTElOVVggVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5w
cmVzZXJ2ZV9zd2FwLm5vX3ByZXNlcnZlLiogPSBGQUlMCisKKy8vIE1hYyBmYWlsdXJlcworMjU0
NiBNQUMgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93
aW5kb3cuKiA9IEZBSUwKKzI1NDYgTUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29v
cmRfbWFwcGluZy5uYXRpdmVfd2luZG93LiogPSBGQUlMCisyNTQ2IE1BQyA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmVnYXRpdmVfYXBpLmNob29zZV9jb25maWcgPSBGQUlMCisyNTQ2IE1BQyA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLmNvcHlfYnVmZmVycyA9IEZBSUwKKzI1NDYg
TUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkuc3dhcF9pbnRlcnZhbCA9IEZB
SUwKKzI1NDYgTUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5w
YnVmZmVyLnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisyNTQ2IE1BQyA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwudGhyZWFkX2NsZWFudXAuKiA9IFNLSVAKKworLy8gQW5kcm9pZCBHTEVTLW9u
bHkgZmFpbHVlcworMjU2NyBBTkRST0lEIEdMRVMgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdl
LmFwaS5jcmVhdGVfaW1hZ2VfZ2xlczJfdGV4MmRfcmVkID0gRkFJTAorMjU2NyBBTkRST0lEIEdM
RVMgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLmFwaS5jcmVhdGVfaW1hZ2VfZ2xlczJfdGV4
MmRfcmcgPSBGQUlMCisyNzE2IEFORFJPSUQgR0xFUyA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucHJl
c2VydmVfc3dhcC5wcmVzZXJ2ZS4qID0gRkFJTAorCisvLyBBbmRyb2lkIGZhaWx1cmVzCisyNTQ2
IEFORFJPSUQgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmJ1ZmZlcl9hZ2UuKiA9IEZBSUwKKzMyNzAg
QU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0
aW9uX29ubHkudHJhbnNwYXJlbnRfcmVkX3ZhbHVlID0gRkFJTAorMzI3MCBBTkRST0lEIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS50cmFu
c3BhcmVudF9ncmVlbl92YWx1ZSA9IEZBSUwKKzMyNzAgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkudHJhbnNwYXJlbnRfYmx1
ZV92YWx1ZSA9IEZBSUwKKzMyNzAgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnRyYW5zcGFyZW50X3JlZF92YWx1ZSA9
IEZBSUwKKzMyNzAgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5z
aW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnRyYW5zcGFyZW50X2dyZWVuX3ZhbHVlID0gRkFJTAor
MzI3MCBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5z
ZWxlY3Rpb25fYW5kX3NvcnQudHJhbnNwYXJlbnRfYmx1ZV92YWx1ZSA9IEZBSUwKKzI1NDYgQU5E
Uk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuKiA9
IFNLSVAKKzI1NDYgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLnNp
bmdsZV9jb250ZXh0LiogPSBTS0lQCisyNTQ2IEFORFJPSUQgOiBkRVFQLUVHTC5mdW5jdGlvbmFs
Lm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cuKiA9IFNLSVAKKzI1NDYgQU5EUk9J
RCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRv
dy4qID0gU0tJUAorMjU0NiBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9h
cGkuY29weV9idWZmZXJzID0gRkFJTAorMjU0NiBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5wYXJ0aWFsX3VwZGF0ZS5vZGRfY2xlYXJfKiA9IEZBSUwKKzI1NDYgQU5EUk9JRCA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwucGFydGlhbF91cGRhdGUub2RkX3JlbmRlcl8qID0gRkFJTAorMjU0NiBB
TkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5wYXJ0aWFsX3VwZGF0ZS5yZW5kZXJfKiA9IEZB
SUwKKzI1NDYgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRl
eHQuKiA9IFNLSVAKKzI1NDYgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNp
bmdsZV9jb250ZXh0LiogPSBTS0lQCisyNTQ2IEFORFJPSUQgOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnRocmVhZF9jbGVhbnVwLm11bHRpX2NvbnRleHRfKiA9IFNLSVAKKzI1NDYgQU5EUk9JRCA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwudGhyZWFkX2NsZWFudXAuc2luZ2xlX2NvbnRleHRfKiA9IEZBSUwK
KworLy8gVnVsa2FuCiszMDgxIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UuY3Jl
YXRlLmdsZXMyX3JlbmRlcmJ1ZmZlcl9kZXB0aDE2X2RlcHRoX2J1ZmZlciA9IFNLSVAKKzMwODEg
VlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5jcmVhdGUuZ2xlczJfcmVuZGVyYnVm
ZmVyX3N0ZW5jaWxfc3RlbmNpbF9idWZmZXIgPSBTS0lQCiszMDgxIFZVTEtBTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZlcl9kZXB0aDE2X3JlbmRlcmJ1ZmZl
cl9jbGVhcl9kZXB0aCA9IFNLSVAKKzMwODEgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5p
bWFnZS5tb2RpZnkucmVuZGVyYnVmZmVyX3N0ZW5jaWxfcmVuZGVyYnVmZmVyX2NsZWFyX3N0ZW5j
aWwgPSBTS0lQCiszMDgxIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UucmVuZGVy
X211bHRpcGxlX2NvbnRleHRzLmdsZXMyX3JlbmRlcmJ1ZmZlcl9kZXB0aDE2X2RlcHRoX2J1ZmZl
ciA9IFNLSVAKKzMwODEgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5yZW5kZXJf
bXVsdGlwbGVfY29udGV4dHMuZ2xlczJfcmVuZGVyYnVmZmVyX3N0ZW5jaWxfc3RlbmNpbF9idWZm
ZXIgPSBTS0lQCisKKy8vIEFuZHJvaWQgVnVsa2FuCisyNTQ2IEFORFJPSUQgVlVMS0FOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5jcmVhdGVfc3VyZmFjZS53aW5kb3cub3RoZXIgPSBTS0lQCisyNTQ2
IEFORFJPSUQgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LmdldF9j
dXJyZW50X3N1cmZhY2Uub3RoZXIgPSBTS0lQCisyNTQ2IEFORFJPSUQgVlVMS0FOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93Lm90aGVyID0g
U0tJUAorMjU0NiBBTkRST0lEIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zaW1wbGUud2luZG93Lm90aGVyID0gU0tJUAorMjU0NiBBTkRST0lEIFZVTEtBTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucmVzaXplLnBpeGVsX2RlbnNpdHkuKiA9IFNLSVAKKworLy8gUm9i
dXN0bmVzcyBmYWlsdXJlcyBvbiBtdWx0aXBsZSBwbGF0Zm9ybXMKKzM3MTEgOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnJvYnVzdG5lc3MucmVzZXRfY29udGV4dC5zaGFkZXJzLm91dF9vZl9ib3VuZHMu
cmVzZXRfc3RhdHVzLnJlYWRzLiogPSBGQUlMCiszNzExIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5y
b2J1c3RuZXNzLnJlc2V0X2NvbnRleHQuc2hhZGVycy5vdXRfb2ZfYm91bmRzLnJlc2V0X3N0YXR1
cy53cml0ZXMuKiA9IEZBSUwKKworLy8gRVMgMSB0ZXN0cworMjMwNiBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNvbG9yX2NsZWFycy5zaW5nbGVfY29udGV4dC5nbGVzMSogPSBGQUlMCisyMzA2
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xl
czEqID0gRkFJTAorMjMwNiBNQUMgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9yX2NsZWFycy5z
aW5nbGVfY29udGV4dC5nbGVzMSogPSBGQUlMCisyMzA2IE1BQyA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xlczEqID0gRkFJTAorMjMwNiBMSU5VWCA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLnNpbmdsZV9jb250ZXh0LmdsZXMxKiA9
IEZBSUwKKzIzMDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNvbG9yX2NsZWFycy5tdWx0
aV9jb250ZXh0LmdsZXMxKiA9IEZBSUwKKworLy8gVGVzdHMgZmFpbGluZyBzaW5jZSB0aGUgSmFu
IDIwMTggcm9sbCBvZiBkRVFQCisyMzQxIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZl
cnMuKiA9IFNLSVAKKzIzMzAgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJvYnVzdG5lc3MuY3JlYXRl
X2NvbnRleHQubm9fcmVzZXRfbm90aWZpY2F0aW9uID0gU0tJUAorMjMzMCA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucm9idXN0bmVzcy5jcmVhdGVfY29udGV4dC5sb3NlX2NvbnRleHRfb25fcmVzZXQg
PSBTS0lQCisyMzMwIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yb2J1c3RuZXNzLnJlc2V0X2NvbnRl
eHQuZml4ZWRfZnVuY3Rpb25fcGlwZWxpbmUucmVzZXRfc3RhdHVzLmluZGV4X2J1ZmZlcl9vdXRf
b2ZfYm91bmRzID0gU0tJUAorMjMzMCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucm9idXN0bmVzcy5y
ZXNldF9jb250ZXh0LmZpeGVkX2Z1bmN0aW9uX3BpcGVsaW5lLnJlc2V0X3N0YXR1cy52ZXJ0ZXhf
YnVmZmVyX291dF9vZl9ib3VuZHMgPSBTS0lQCisKKy8vIFRlc3RzIHdlcmUgYmVpbmcgaGlkZGVu
IGJ5IGZsYWtpbmVzcyAoYW5nbGVidWcuY29tLzMyNzEpCiszMzI1IDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5mZW5jZV9zeW5jLiogPSBTS0lQCiszMzI1IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXVz
YWJsZV9zeW5jLiogPSBTS0lQCisKKy8vIE5leHVzIDV4CisyNTQ2IE5FWFVTNVggOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQuZ2V0X2N1cnJlbnRfY29udGV4dC4qID0gU0tJUAor
MjU0NiBORVhVUzVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LmdldF9jdXJy
ZW50X2Rpc3BsYXkuKiA9IFNLSVAKKzI1NDYgTkVYVVM1WCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cXVlcnlfY29udGV4dC5nZXRfY3VycmVudF9zdXJmYWNlLnIqID0gRkFJTAorMjU0NiBORVhVUzVY
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LnF1ZXJ5X2NvbnRleHQuKiA9IFNL
SVAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvZGVxcF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlv
bnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmMwNDVlZDgzNjUyNmI0YjRiNTlhNmJmMzNmMGUzY2E5NGRkMGQx
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0wLDAgKzEs
MzkzIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVR
UCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCisvLyBmb3JtYXQgaXM6CisvLyAge0JV
RyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQs
U0tJUH0KKy8vCisvLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93
IGxpc3QsIGNvbWJpbmVkIHdpdGggYSBsb2dpY2FsIEFORDoKKy8vICBXSU4gWFAgVklTVEEgV0lO
NyBXSU44IFdJTjEwCisvLyAgTUFDIExFT1BBUkQgU05PV0xFT1BBUkQgTElPTiBNT1VOVEFJTkxJ
T04gTUFWRVJJQ0tTIFlPU0VNSVRFIEVMQ0FQSVRBTiBTSUVSUkEgSElHSFNJRVJSQSBNT0pBVkUK
Ky8vICBMSU5VWCBDSFJPTUVPUyBBTkRST0lECisvLyAgTlZJRElBIEFNRCBJTlRFTAorLy8gIERF
QlVHIFJFTEVBU0UKKy8vICBEM0Q5IEQzRDExIE9QRU5HTCBHTEVTIFZVTEtBTgorLy8gIE5FWFVT
NVggUElYRUwyT1JYTAorLy8gIFFVQURST1A0MDAKKy8vCisvLworLy8gVEVTVF9OQU1FIGNhbiBi
ZSBhIHNwZWNpZmljIHRlc3QgbmFtZSwgb3IgaGF2ZSBhICcqJyBpbiB0aGUgZW5kLCB3aGljaAor
Ly8gaW5kaWNhdGVzIGEgcHJlZml4IG1hdGNoaW5nLgorLy8KKy8vIEV4YW1wbGVzOgorLy8gZmFp
bHMgb24gYm90aCB3aW5kb3dzIGFuZCBtYWMgKGNyYXNoKQorLy8gIDkxNTMwIFdJTiA6IGNvbnRl
eHRfbG9zdF9yZXN0b3JlZCA9IFNLSVAKKy8vICA5MTUzMCBNQUMgOiBjb250ZXh0X2xvc3RfcmVz
dG9yZWQgPSBTS0lQCisvLyBmYWlscyBvbiB3aW5kb3dzIHVzaW5nIE5WSURJQSBHUFVzCisvLyAg
OTE1MzMgV0lOIE5WSURJQSA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKKy8vIGZhaWxzIG9uIE5l
eHVzNVggd2l0aCBHTEVTIGJhY2tlbmQgKGhhbmdzKQorLy8gIDkxNTMxIE5FWFVTNVggR0xFUyA6
IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAKKworLy8gR2xvYmFsbHkgZGlzYWJsZSBNZXRhbCB0
ZXN0aW5nIGZvciBub3cKKzQyMzUgTUVUQUwgOiBkRVFQLUdMRVMyLiogPSBTS0lQCisKKy8vIFNr
aXAgdGhlc2UgdGVzdHMgZHVlIHRvIHRpbWVvdXRzCisxMDM0IDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZsdXNoX2ZpbmlzaC4qID0gU0tJUAorCisvLyBGYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBz
dXBwb3J0aW5nIHNlcGFyYXRlIGRlcHRoL3N0ZW5jaWwgbWFza3Mgb24gRDNEMTEuCisxNjU1IEQz
RDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLnN0
ZW5jaWxfZGVwdGhfZnVuY3Muc3RlbmNpbF8qID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsX29wcy4qID0g
RkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVw
dGhfc3RlbmNpbC53cml0ZV9tYXNrLiogPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5h
ZGRfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1IEQzRDExIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJ
TAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9j
b25zdGFudF9hbHBoYSA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWlu
dXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTY1NSBE
M0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25f
c3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJ
TAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX29uZV9taW51c19j
b25zdGFudF9jb2xvciA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWlu
dXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxNjU1IEQzRDExIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9j
b2xvciA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2Nv
bG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJh
Y3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTY1NSBE
M0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25f
c3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0
YW50X2FscGhhID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21p
bnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzE2NTUg
RDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9u
X3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9y
ID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfYWxwaGFf
b25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
c3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhh
X29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5j
LnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisx
NjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX29u
ZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJl
dmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0g
RkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTY1NSBEM0Qx
MSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9j
b2xvciA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29u
c3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTY1NSBEM0QxMSA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1
bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29u
c3RhbnRfY29sb3IgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRy
YWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBG
QUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5yYW5k
b20uKiA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmludGVyYWN0aW9uLmJhc2ljX3NoYWRlci4qID0gRkFJTAorCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLworLy8KKy8vICBUZW1wb3JhcnkgZW50cmllczogdGhleSBzaG91bGQgYmUgcmVtb3Zl
ZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
CisvLyBWZXJ0ZXggYXR0cmlidXRlIGFsaWFzaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gRDNECisz
NDY3IEQzRDkgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRf
YWxpYXNpbmcuY29uZCogPSBGQUlMCiszNDY3IEQzRDkgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
YXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmQqID0gRkFJTAorMzQ2NyBE
M0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlh
c2luZy5jb25kKiA9IEZBSUwKKzM0NjcgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0
cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmQqID0gRkFJTAorCisvLyBTaGFk
ZXIgZmFpbHVyZXMuCiszNDM0IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5z
aGFkZXJzLnByZXByb2Nlc3Nvci5wcmFnbWFzLnByYWdtYV8qID0gRkFJTAorCisvLyBUaGUgZnJh
Z21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwucmFuZG9tIHRlc3RzIGFsbCBzZWVtIHRvIGZhaWwgb24g
RDNEMTEuCiszMjgyIEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5k
ZXB0aF9zdGVuY2lsLnJhbmRvbS4qID0gRkFJTAorCisvLyBGYWlsdXJlcyByZWxhdGVkIHRvIHRo
ZSBkZXB0aF9yYW5nZSBvbiBXaW5kb3dzIC8gTlZJRElBIGFuZCBBVEkuCisyNDI2IEQzRDExIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmRlcHRoX3JhbmdlLndyaXRlLnJldmVyc2UgPSBGQUlMCisy
NDI2IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmRlcHRoX3JhbmdlLndyaXRlLmhhbGZf
dG9femVybyA9IEZBSUwKKzI0MjYgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZGVwdGhf
cmFuZ2Uud3JpdGUub25lX3RvX2hhbGYgPSBGQUlMCisyNDI2IEQzRDExIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmRlcHRoX3JhbmdlLndyaXRlLjBfOF90b190aGlyZCA9IEZBSUwKKzI0MjYgRDNE
MTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZGVwdGhfcmFuZ2UuY29tcGFyZS5yZXZlcnNlID0g
RkFJTAorMjQyNiBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5kZXB0aF9yYW5nZS5jb21w
YXJlLmhhbGZfdG9femVybyA9IEZBSUwKKzI0MjYgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZGVwdGhfcmFuZ2UuY29tcGFyZS5vbmVfdG9faGFsZiA9IEZBSUwKKzI0MjYgRDNEMTEgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZGVwdGhfcmFuZ2UuY29tcGFyZS4wXzhfdG9fdGhpcmQgPSBG
QUlMCisKKy8vIFdpbmRvd3MgRDNEMTEgSW50ZWwgYW5kIE5WSURJQS4gU3VwcHJlc3NlZCBvbiBh
bGwgY2FyZHMgZm9yIHNpbXBsaWNpdHkuCiszMjkyIEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnBvbHlnb25fb2Zmc2V0LmRlZmF1bHRfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCiszMjky
IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZpeGVkMTZfcmVu
ZGVyX3dpdGhfdW5pdHMgPSBGQUlMCisKKy8vIENvbW1vbiBzdWJleHByZXNzaW9uIGludmFyaWFu
Y2UKKzMyOTMgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNl
LmhpZ2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCiszMjkzIEQzRDExIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHByZXNz
aW9uXzEgPSBGQUlMCiszMjkzIEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMu
aW52YXJpYW5jZS5tZWRpdW1wLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisKKy8vIEZh
aWxzIHdpdGggc2lnbmlmaWNhbnQgaW1hZ2UgZGlmZmVyZW5jZXMKKzMyOTUgRDNEMTEgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy52ZXJ0ZXgudGV4dHVy
ZWN1YmVsb2QgPSBGQUlMCisKKy8vIE9ubHkgZmFpbHMgaW4gRDNEMTEgMzItYml0LgorMTQxOCBE
M0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlwcGluZy50cmlhbmdsZV92ZXJ0ZXguY2xp
cF90aHJlZS5jbGlwX3Bvc194X3Bvc195X3Bvc196X2FuZF9uZWdfeF9wb3NfeV9wb3Nfel9hbmRf
bmVnX3hfbmVnX3lfbmVnX3ogPSBGQUlMCisKKy8vIEQzRDExIEFNRAorMjM0MiBEM0QxMSBBTUQg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zaXplLmN1YmUuNjR4NjRfbDggPSBGQUlM
CisyMzQyIEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNpemUuY3Vi
ZS42NHg2NF9yZ2I4ODggPSBGQUlMCisyMzQyIEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC50ZXh0dXJlLnNpemUuY3ViZS42NHg2NF9yZ2JhODg4OCA9IEZBSUwKKworLy8gQWRkaXRp
b25hbCB0ZXh0dXJlLnZlcnRleC5jdWJlIGZhaWx1cmVzIG9uIEFNRAorMzI5OSBEM0QxMSBBTUQg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGlu
ZWFyX21pcG1hcF9saW5lYXJfbmVhcmVzdF9yZXBlYXQgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5saW5l
YXJfbWlwbWFwX2xpbmVhcl9saW5lYXJfcmVwZWF0ID0gRkFJTAorMzI5OSBEM0QxMSBBTUQgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubmVhcmVz
dF9taXBtYXBfbGluZWFyX25lYXJlc3RfY2xhbXAgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5uZWFyZXN0
X21pcG1hcF9saW5lYXJfbmVhcmVzdF9yZXBlYXQgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5uZWFyZXN0
X21pcG1hcF9saW5lYXJfbmVhcmVzdF9taXJyb3IgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5uZWFyZXN0
X21pcG1hcF9saW5lYXJfbGluZWFyX2NsYW1wID0gRkFJTAorMzI5OSBEM0QxMSBBTUQgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubmVhcmVzdF9t
aXBtYXBfbGluZWFyX2xpbmVhcl9yZXBlYXQgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5uZWFyZXN0X21p
cG1hcF9saW5lYXJfbGluZWFyX21pcnJvciA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5yZXBlYXRfY2xhbXAgPSBG
QUlMCiszMjk5IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRl
eC5jdWJlLndyYXAucmVwZWF0X3JlcGVhdCA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5yZXBlYXRfbWlycm9yID0g
RkFJTAorCisvLyBRdWFkcm8gUDQwMAorLy8gVE9ETyhqbWFkaWxsKTogTmFycm93IHRvIFA0MDAg
ZGV2aWNlIG9ubHk6IDB4MUNCMy4KKzIyMjIgRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnNoYWRlcnMuZnVuY3Rpb25zLmNvbnRyb2xfZmxvdy5yZXR1cm5faW5fbmVzdGVkX2xv
b3BfZnJhZ21lbnQgPSBGQUlMCisyMjIyIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLmZ1bmN0aW9ucy5jb250cm9sX2Zsb3cucmV0dXJuX2luX25lc3RlZF9sb29w
X3ZlcnRleCA9IEZBSUwKKworLy8gQU1EIEdQVSB2ZXJ0ZXggc2hhZGVyIHRleHR1cmUgc2FtcGxp
bmcgaXMgbm90IHByZWNpc2UgZW5vdWdoIHdoZW4gcmVuZGVyaW5nIHRvIDMyLWJpdCBiYWNrYnVm
ZmVycworMjMzNyBEM0QxMSBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0
ZXguMmQud3JhcC4qID0gRkFJTAorMjMzNyBEM0QxMSBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS52ZXJ0ZXguMmQuZmlsdGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFyXyogPSBG
QUlMCisyMzM3IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRl
eC4yZC5maWx0ZXJpbmcubmVhcmVzdF9taXBtYXBfbGluZWFyXyogPSBGQUlMCisKKy8vIFNldmVy
YWwgbWlwbWFwIHN1YiB0ZXN0cyBmYWlsIG9uIEFNRC4gTWFyayB0aGVtIGFsbCBhcyBmYWlsaW5n
IGNvbnNlcnZhdGl2ZWx5LgorMzI5NiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS5taXBtYXAuKiA9IEZBSUwKKworLy8gRmFpbHVyZXMgb24gdGhlIEQzRDExIGJvdHMg
dGhhdCBkbyBub3QgcmVwcm9kdWNlIGxvY2FsbHkKKy8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBv
dXQgd2h5IHRoZXNlIGZhaWwgb24gdGhlIGJvdHMsIGJ1dCBub3QgbG9jYWxseS4KKzExMDggRDNE
MTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zdHJ1Y3QubG9jYWwuZHluYW1pY19s
b29wX3N0cnVjdF9hcnJheV9mcmFnbWVudCA9IEZBSUwKKzExMDggRDNEMTEgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxvb3BfMiA9IEZBSUwKKzExMDgg
RDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAu
bG9vcF8yID0gRkFJTAorCisvLyBPcGVuR0wgZGVza3RvcCBiYWNrLWVuZCBmYWlsdXJlcworMTY1
NiBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJh
YmxlLnRleHR1cmUuY29sb3IwLnNyZ2I4X2FscGhhOCA9IEZBSUwKKzE2NTYgT1BFTkdMIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0
ZW5jaWwuc3JnYjhfYWxwaGE4ID0gRkFJTAorMTY1NiBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguc3JnYjhfYWxw
aGE4ID0gRkFJTAorMzI5MSBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5t
aXBtYXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX2xpbmVhciA9IEZBSUwKKworLy8gTGludXggT3Bl
bkdMIEludGVsCiszMzAyIE9QRU5HTCBJTlRFTCBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5yYXN0ZXJpemF0aW9uLmludGVycG9sYXRpb24uYmFzaWMubGluZXNfd2lkZSA9IEZBSUwKKzMz
MDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnJhc3Rlcml6YXRp
b24uaW50ZXJwb2xhdGlvbi5iYXNpYy5saW5lX3N0cmlwX3dpZGUgPSBGQUlMCiszMzAyIE9QRU5H
TCBJTlRFTCBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLmludGVy
cG9sYXRpb24uYmFzaWMubGluZV9sb29wX3dpZGUgPSBGQUlMCiszMzAyIE9QRU5HTCBJTlRFTCBM
SU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLmludGVycG9sYXRpb24u
cHJvamVjdGVkLmxpbmVzX3dpZGUgPSBGQUlMCiszMzAyIE9QRU5HTCBJTlRFTCBMSU5VWCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLmludGVycG9sYXRpb24ucHJvamVjdGVk
LmxpbmVfc3RyaXBfd2lkZSA9IEZBSUwKKzMzMDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uaW50ZXJwb2xhdGlvbi5wcm9qZWN0ZWQubGlu
ZV9sb29wX3dpZGUgPSBGQUlMCiszMzAyIE9QRU5HTCBJTlRFTCBMSU5VWCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnZlcnRleC50ZXh0dXJlY3ViZWxv
ZCA9IEZBSUwKKzMzMDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFyX2xpbmVh
cl9yZXBlYXQgPSBGQUlMCiszMzAyIE9QRU5HTCBJTlRFTCBMSU5VWCA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5saW5lYXJfbWlwbWFwX2xpbmVh
cl9uZWFyZXN0X3JlcGVhdCA9IEZBSUwKKzMzMDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5yZXBlYXRfcmVwZWF0ID0g
RkFJTAorCisvLyBMaW51eCBPcGVuR0wgTlZJRElBCiszMzAzIE9QRU5HTCBOVklESUEgTElOVVgg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubmVh
cmVzdF9saW5lYXIgPSBGQUlMCisKKy8vIE1hYyBPcGVuR0wgc3BlY2lmaWMgZmFpbHVyZXMKKzM0
NjYgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24u
YmluZF9hbGlhc2luZy5jb25kKiA9IFNLSVAKKzM0NjYgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZCogPSBT
S0lQCiszNDMzIE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVw
cm9jZXNzb3IucHJhZ21hcy5wcmFnbWFfdmVydGV4ID0gRkFJTAorMTE0MyBNQUMgT1BFTkdMIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGluZy52YWxpZC5sb2NhbF9pbnRfdmFy
aWFibGVfaGlkZXNfc3RydWN0X3R5cGVfKiA9IEZBSUwKKzExNDMgTUFDIE9QRU5HTCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3BpbmcudmFsaWQubG9jYWxfc3RydWN0X3Zhcmlh
YmxlX2hpZGVzX3N0cnVjdF90eXBlXyogPSBGQUlMCisxMTQzIE1BQyBPUEVOR0wgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLnZhbGlkLmZ1bmN0aW9uX3BhcmFtZXRlcl9o
aWRlc19zdHJ1Y3RfdHlwZV8qID0gRkFJTAorMTE0MyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnNoYWRlcnMucmFuZG9tLnRyaWdvbm9tZXRyaWMudmVydGV4LjY1ID0gRkFJTAor
MjYzMSBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMub3BlcmF0b3Iu
c2VxdWVuY2Uuc2lkZV9lZmZlY3RzLmFmZmVjdF8qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMubGlua2FnZS52YXJ5aW5nXzQgPSBGQUlMCisK
Ky8vIE1BQyBPUEVOR0wgSU5URUwgc3BlY2lmaWMKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5jb21wbGV4X3JnYiA9IEZBSUwKKzIxMzcg
TUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5jb21w
bGV4X3JnYmEgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuY29sb3JfY2xlYXIubG9uZ19tYXNrZWRfcmdiID0gRkFJTAorMjEzNyBNQUMgT1BFTkdM
IElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNvbG9yX2NsZWFyLmxvbmdfbWFza2VkX3Jn
YmEgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
Y29sb3JfY2xlYXIubWFza2VkX3JnYiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5tYXNrZWRfcmdiYSA9IEZBSUwKKzIxMzcg
TUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5tYXNr
ZWRfc2Npc3NvcmVkX3JnYiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5tYXNrZWRfc2Npc3NvcmVkX3JnYmEgPSBGQUlMCisy
MTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXIu
c2Npc3NvcmVkX3JnYiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5zY2lzc29yZWRfcmdiYSA9IEZBSUwKKzIxMzcgTUFDIE9Q
RU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5zaG9ydF9zY2lz
c29yZWRfcmdiID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi5iYXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX2Fs
cGhhID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUuc3BlY2lmaWNhdGlvbi5iYXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX2x1bWluYW5j
ZSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50
ZXh0dXJlLnNwZWNpZmljYXRpb24uYmFzaWNfY29weXRleGltYWdlMmQuY3ViZV9sdW1pbmFuY2Vf
YWxwaGEgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLmJhc2ljX2NvcHl0ZXhpbWFnZTJkLmN1YmVfcmdiID0g
RkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUuc3BlY2lmaWNhdGlvbi5iYXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX3JnYmEgPSBGQUlMCisy
MTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5kaXNj
YXJkLmR5bmFtaWNfbG9vcF9uZXZlciA9IFNLSVAKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmRpc2NhcmQuZnVuY3Rpb25fc3RhdGljX2xvb3Bf
bmV2ZXIgPSBTS0lQCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuc2hhZGVycy5kaXNjYXJkLnN0YXRpY19sb29wX25ldmVyID0gU0tJUAorCiszMzE3IE1BQyBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZGVmYXVs
dF9yZW5kZXJfd2l0aF91bml0cyA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC5maXhlZDE2X3JlbmRlcl93aXRoX3VuaXRz
ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMuaW52YXJpYW5jZS5oaWdocC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAorMzMx
NyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJp
YW5jZS5oaWdocC5jb21tb25fc3ViZXhwcmVzc2lvbl8zID0gRkFJTAorMzMxNyBNQUMgT1BFTkdM
IElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1w
LmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1
YmV4cHJlc3Npb25fMyA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubG93cC5jb21tb25fc3ViZXhwcmVzc2lvbl8x
ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMuaW52YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHByZXNzaW9uXzMgPSBGQUlMCiszMzE3
IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJp
bmcuMmQubGluZWFyX25lYXJlc3RfY2xhbXBfcmdiYTg4ODhfcG90ID0gRkFJTAorMzMxNyBNQUMg
T1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJk
LmxpbmVhcl9uZWFyZXN0X2NsYW1wX3JnYjg4OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wg
SU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmQubGluZWFy
X25lYXJlc3RfY2xhbXBfcmdiYTQ0NDRfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVM
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJkLmxpbmVhcl9uZWFy
ZXN0X2NsYW1wX2w4X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy4yZC5saW5lYXJfbmVhcmVzdF9yZXBlYXRf
cmdiYTg4ODhfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJkLmxpbmVhcl9uZWFyZXN0X3JlcGVhdF9yZ2I4
ODhfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnRleHR1cmUuZmlsdGVyaW5nLjJkLmxpbmVhcl9uZWFyZXN0X3JlcGVhdF9yZ2JhNDQ0NF9w
b3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS5maWx0ZXJpbmcuMmQubGluZWFyX25lYXJlc3RfcmVwZWF0X2w4X3BvdCA9IEZBSUwK
KzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZp
bHRlcmluZy4yZC5saW5lYXJfbmVhcmVzdF9taXJyb3JfcmdiYTg4ODhfcG90ID0gRkFJTAorMzMx
NyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVy
aW5nLjJkLmxpbmVhcl9uZWFyZXN0X21pcnJvcl9yZ2I4ODhfcG90ID0gRkFJTAorMzMxNyBNQUMg
T1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJk
LmxpbmVhcl9uZWFyZXN0X21pcnJvcl9yZ2JhNDQ0NF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVO
R0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmQubGlu
ZWFyX25lYXJlc3RfbWlycm9yX2w4X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5jdWJlLmxpbmVhcl9uZWFy
ZXN0X2NsYW1wX3JnYmE4ODg4X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5jdWJlLmxpbmVhcl9uZWFyZXN0
X2NsYW1wX3JnYjg4OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3ViZS5saW5lYXJfbmVhcmVzdF9jbGFt
cF9yZ2JhNDQ0NF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3ViZS5saW5lYXJfbmVhcmVzdF9jbGFtcF9s
OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS5maWx0ZXJpbmcuY3ViZS5saW5lYXJfbmVhcmVzdF9yZXBlYXRfcmdiYTg4ODhf
cG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUuZmlsdGVyaW5nLmN1YmUubGluZWFyX25lYXJlc3RfcmVwZWF0X3JnYjg4OF9wb3Qg
PSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4
dHVyZS5maWx0ZXJpbmcuY3ViZS5saW5lYXJfbmVhcmVzdF9yZXBlYXRfcmdiYTQ0NDRfcG90ID0g
RkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUuZmlsdGVyaW5nLmN1YmUubGluZWFyX25lYXJlc3RfcmVwZWF0X2w4X3BvdCA9IEZBSUwKKzMz
MTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRl
cmluZy5jdWJlLmxpbmVhcl9uZWFyZXN0X21pcnJvcl9yZ2JhODg4OF9wb3QgPSBGQUlMCiszMzE3
IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJp
bmcuY3ViZS5saW5lYXJfbmVhcmVzdF9taXJyb3JfcmdiODg4X3BvdCA9IEZBSUwKKzMzMTcgTUFD
IE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5j
dWJlLmxpbmVhcl9uZWFyZXN0X21pcnJvcl9yZ2JhNDQ0NF9wb3QgPSBGQUlMCiszMzE3IE1BQyBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3Vi
ZS5saW5lYXJfbmVhcmVzdF9taXJyb3JfbDhfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElO
VEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LjJkLmZpbHRlcmluZy5s
aW5lYXJfbmVhcmVzdF8qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9uZWFyZXN0
XyogPSBGQUlMCisKKzM1MzEgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mYm8ucmVuZGVyLmNvbG9yX2NsZWFyLnRleDJkX3JnYiA9IEZBSUwKKzM1MzEgTUFDIE9QRU5H
TCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLmNvbG9yX2NsZWFyLnRl
eDJkX3JnYl9kZXB0aF9jb21wb25lbnQxNiA9IEZBSUwKKzM1MzEgTUFDIE9QRU5HTCBJTlRFTCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLmNvbG9yX2NsZWFyLnRleDJkX3JnYl9z
dGVuY2lsX2luZGV4OCA9IEZBSUwKKzM1MzEgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnN0ZW5jaWxfY2xlYXIudGV4MmRfcmdiX3N0ZW5jaWxfaW5k
ZXg4ID0gRkFJTAorCisvLyBNYWMgQU1EIE9wZW5HTCBzcGVjaWZpYworMjEzNyBNQUMgT1BFTkdM
IEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlwcGluZy5wb2ludC53aWRlX3BvaW50X2Ns
aXAgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNs
aXBwaW5nLnBvaW50LndpZGVfcG9pbnRfY2xpcF92aWV3cG9ydF9jZW50ZXIgPSBGQUlMCiszMzE3
IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNsaXBwaW5nLnBvaW50Lndp
ZGVfcG9pbnRfY2xpcF92aWV3cG9ydF9jb3JuZXIgPSBGQUlMCisKKy8vIEFuZHJvaWQgR0xFUyBi
YWNrZW5kIG9ubHkgZmFpbHVyZXMKKzE0ODggR0xFUyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnNoYWRlcnMucmV0dXJuLmNvbmRpdGlvbmFsX3JldHVybl9hbHdheXNfdmVydGV4ID0g
RkFJTAorMTQ4OCBHTEVTIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5y
ZXR1cm4uY29uZGl0aW9uYWxfcmV0dXJuX2Fsd2F5c19mcmFnbWVudCA9IEZBSUwKKzE0ODggR0xF
UyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmV0dXJuLm91dHB1dF93
cml0ZV9hbHdheXNfdmVydGV4ID0gRkFJTAorMTQ4OCBHTEVTIEFORFJPSUQgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4ub3V0cHV0X3dyaXRlX2Fsd2F5c19mcmFnbWVudCA9
IEZBSUwKKzI2MzEgR0xFUyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMu
b3BlcmF0b3Iuc2VxdWVuY2Uuc2lkZV9lZmZlY3RzLmFmZmVjdF8qID0gRkFJTAorMjYzMCBHTEVT
IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zdHJ1Y3QudW5pZm9ybS5z
YW1wbGVyX2luX2FycmF5X2Z1bmN0aW9uX2FyZ18qID0gRkFJTAorMjYzMCBHTEVTIEFORFJPSUQg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zdHJ1Y3QudW5pZm9ybS5zYW1wbGVyX2lu
X2Z1bmN0aW9uX2FyZ18qID0gRkFJTAorCisvLyBOZXh1cyA1eCBmYWlsdXJlcworMzMwOSBORVhV
UzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRf
YWxpYXNpbmcuY29uZCogPSBGQUlMCiszMzA5IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZCogPSBGQUlM
CiszNzE2IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVu
ZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9jb21wb25lbnRfdW5zaWduZWRfaW50
ID0gRkFJTAorMzcxNiBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNv
bXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhfY29tcG9uZW50X3Vuc2ln
bmVkX3Nob3J0ID0gRkFJTAorMzcxNiBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhfc3RlbmNp
bF91bnNpZ25lZF9pbnRfMjRfOCA9IEZBSUwKKzM3MTYgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0ZW5jaWwu
ZGVwdGhfc3RlbmNpbF91bnNpZ25lZF9pbnRfMjRfOCA9IEZBSUwKKzMzMDkgTkVYVVM1WCBHTEVT
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIudGV4c3ViaW1hZ2UuYWZ0ZXJfcmVu
ZGVyX3RleDJkX3JnYiA9IEZBSUwKKzMzMDkgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnBvbHlnb25fb2Zmc2V0LmRlZmF1bHRfcmVzdWx0X2RlcHRoX2NsYW1wID0gRkFJTAor
MzcxNSBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGlu
X3ZhcmlhYmxlLm1heF9kcmF3X2J1ZmZlcnNfdmVydGV4ID0gRkFJTAorMzcxNSBORVhVUzVYIEdM
RVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX3ZhcmlhYmxlLm1heF9k
cmF3X2J1ZmZlcnNfZnJhZ21lbnQgPSBGQUlMCiszMzA5IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5vdXRwdXRfd3JpdGVfaW5fZnVuY19hbHdheXNf
dmVydGV4ID0gRkFJTAorMzMwOSBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5yZXR1cm4ub3V0cHV0X3dyaXRlX2luX2Z1bmNfYWx3YXlzX2ZyYWdtZW50ID0gRkFJ
TAorMzMwOSBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy52ZXJ0ZXgudGV4dHVyZWN1YmVsb2QgPSBGQUlMCiszMzA5IE5FWFVTNVgg
R0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLiogPSBGQUlM
CiszMzA5IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRl
eC5jdWJlLmZpbHRlcmluZy5saW5lYXJfbWlwbWFwX2xpbmVhcl8qID0gRkFJTAorMzMwOSBORVhV
UzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFw
LmNsYW1wXyogPSBGQUlMCiszMzA5IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAubWlycm9yXyogPSBGQUlMCiszMzA5IE5FWFVTNVgg
R0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC51bmlmb3JtX2FwaS5yYW5kb20uMyA9IEZBSUwK
KzMzMDkgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnVuaWZvcm1fYXBpLnJh
bmRvbS41NCA9IEZBSUwKKworLy8gRDNEMTEgQU1EIGFscmVhZHkgY292ZXJlZCBieSBMaW5lIDE0
OAorMzI0MyBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1h
cC5jdWJlLmJhc2ljLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMzI0MyBEM0QxMSBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJhc2ljLmxpbmVhcl9saW5l
YXIgPSBGQUlMCiszMjQzIEQzRDExIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUubWlwbWFwLmN1YmUucHJvamVjdGVkLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMzI0MyBEM0Qx
MSBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2pl
Y3RlZC5saW5lYXJfbGluZWFyID0gRkFJTAorMzI0MyBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJpYXMubGluZWFyX25lYXJlc3QgPSBGQUlM
CiszMjQzIEQzRDExIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFw
LmN1YmUuYmlhcy5saW5lYXJfbGluZWFyID0gRkFJTAorMzI0MyBEM0QxMSBOVklESUEgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iYXNpYy5saW5lYXJfbmVhcmVz
dCA9IEZBSUwKKzMyNDMgRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFyX2xpbmVhciA9IEZBSUwKKzMyNDMgRDNEMTEgTlZJ
RElBIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVk
LmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMzI0MyBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX2xpbmVhciA9IEZB
SUwKKzMyNDMgRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlw
bWFwLmN1YmUuYmlhcy5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzMyNDMgRDNEMTEgTlZJRElBIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmlhcy5saW5lYXJfbGlu
ZWFyID0gRkFJTAorCisvLyBGYWlsIHdpdGggdmVyeSB0aW55IHBpeGVsIGRpZmZlcmVuY2VzCisz
MjQwIEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmls
dGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFyX25lYXJlc3RfY2xhbXAgPSBGQUlMCiszMjQwIEQz
RDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5n
LmxpbmVhcl9taXBtYXBfbGluZWFyX25lYXJlc3RfbWlycm9yID0gRkFJTAorMzI0MCBEM0QxMSA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5saW5l
YXJfbWlwbWFwX2xpbmVhcl9saW5lYXJfY2xhbXAgPSBGQUlMCiszMjQwIEQzRDExIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9taXBt
YXBfbGluZWFyX2xpbmVhcl9taXJyb3IgPSBGQUlMCiszMjQwIEQzRDExIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5jbGFtcF9jbGFtcCA9IEZBSUwKKzMy
NDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFw
LmNsYW1wX3JlcGVhdCA9IEZBSUwKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFwLmNsYW1wX21pcnJvciA9IEZBSUwKKzMyNDAgRDNEMTEg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFwLm1pcnJvcl9j
bGFtcCA9IEZBSUwKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52
ZXJ0ZXguY3ViZS53cmFwLm1pcnJvcl9yZXBlYXQgPSBGQUlMCiszMjQwIEQzRDExIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5taXJyb3JfbWlycm9yID0g
RkFJTAorCisvLyBBbmRyb2lkIFZ1bGthbiBiYWNrZW5kIG9ubHkgZmFpbHVyZXMKKzI1NDkgVlVM
S0FOIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0
ZW5jaWwuc3RlbmNpbCogPSBTS0lQCis0MTA5IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVkLm5lYXJlc3RfbGluZWFyID0g
RkFJTAorCisvLyBBZHJlbm8gbGluZSByYXN0ZXJpemF0aW9uIGlzIG5vdCBjb25mb3JtYW50Lgor
MjgzMCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9u
LnByaW1pdGl2ZXMubGluZV9sb29wID0gRkFJTAorMjgzMCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLnByaW1pdGl2ZXMubGluZV9zdHJpcCA9IEZB
SUwKKzI4MzAgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucmFzdGVyaXph
dGlvbi5wcmltaXRpdmVzLmxpbmVzID0gRkFJTAorCisvLyBGYWlsaW5nIG9uIHRoZSBQaXhlbCAy
LgorMjgwOCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1
aWx0aW5fdmFyaWFibGUuZnJhZ2Nvb3JkX3cgPSBGQUlMCiszMzA2IFZVTEtBTiBBTkRST0lEIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmRlZmF1bHRfZmFjdG9yXzFfc2xv
cGUgPSBGQUlMCiszMzA2IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnBv
bHlnb25fb2Zmc2V0LmZpeGVkMTZfZmFjdG9yXzFfc2xvcGUgPSBGQUlMCisKKy8vIEZhaWxpbmcg
b24gdGhlIFBpeGVsIDIgZHVlIHRvIFF1YWxjb21tIFZ1bGthbiBkcml2ZXIKKzQzNDQgVlVMS0FO
IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmludGVyYWN0aW9u
LmJhc2ljX3NoYWRlci4xID0gRkFJTAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLjMwID0gRkFJ
TAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLjM1ID0gRkFJTAorNDM0NCBWVUxLQU4gQU5EUk9J
RCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNf
c2hhZGVyLjM4ID0gRkFJTAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLjYwID0gRkFJTAorNDM0
NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50
ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLjYyID0gRkFJTAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMucmFuZG9tLjYyID0gRkFJTAorNDM0NCBW
VUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMucmFuZG9t
Ljc4ID0gRkFJTAorCisvLyBUaGVzZSB0ZXN0cyBhbHNvIGZhaWwgb24gQU1EIHdpbmRvd3MgZHJp
dmVyIGFzIGl0IGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBlbXVsYXRpb24gZHVlIHRvIGVycm9ycy4K
KzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy52ZXJ0ZXgudGV4dHVyZWN1YmVsb2QgPSBGQUlMCiszMjQzIFZVTEtBTiBX
SU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmFzaWMu
bGluZWFyX25lYXJlc3QgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFyX2xpbmVhciA9IEZBSUwK
KzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3QgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4g
QU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVk
LmxpbmVhcl9saW5lYXIgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmlhcy5saW5lYXJfbmVhcmVzdCA9IEZBSUwK
KzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5iaWFzLmxpbmVhcl9saW5lYXIgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4gQU1EIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVh
cl9taXBtYXBfbGluZWFyX25lYXJlc3RfY2xhbXAgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4gQU1E
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxp
bmVhcl9taXBtYXBfbGluZWFyX25lYXJlc3RfbWlycm9yID0gRkFJTAorMzI0MyBWVUxLQU4gV0lO
IEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmlu
Zy5saW5lYXJfbWlwbWFwX2xpbmVhcl9saW5lYXJfY2xhbXAgPSBGQUlMCiszMjQzIFZVTEtBTiBX
SU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVy
aW5nLmxpbmVhcl9taXBtYXBfbGluZWFyX2xpbmVhcl9taXJyb3IgPSBGQUlMCiszMjQzIFZVTEtB
TiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3Jh
cC5jbGFtcF9jbGFtcCA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFwLmNsYW1wX3JlcGVhdCA9IEZBSUwKKzMy
NDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXgu
Y3ViZS53cmFwLmNsYW1wX21pcnJvciA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFwLm1pcnJvcl9jbGFtcCA9
IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS52ZXJ0ZXguY3ViZS53cmFwLm1pcnJvcl9yZXBlYXQgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4g
QU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5taXJy
b3JfbWlycm9yID0gRkFJTAorCisvLyBWdWxrYW4gQU1EIGRyaXZlcnMgZG9uJ3Qgc2VlbSB0byBz
dXBwb3J0IHdpZGUgcG9pbnQgY2xpcHBpbmcuCisyNDYzIFZVTEtBTiBXSU4gQU1EIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmNsaXBwaW5nLnBvaW50LndpZGVfcG9pbnRfY2xpcCA9IEZBSUwKKzI0
NjMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcucG9pbnQu
d2lkZV9wb2ludF9jbGlwX3ZpZXdwb3J0X2NlbnRlciA9IEZBSUwKKzI0NjMgVlVMS0FOIFdJTiBB
TUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcucG9pbnQud2lkZV9wb2ludF9jbGlw
X3ZpZXdwb3J0X2Nvcm5lciA9IEZBSUwKKworLy8gVGhlc2UgZmFpbHVyZXMgYXJlIHBvc3NpYmx5
IGR1ZSB0byBhbiBBTUQgZHJpdmVyIGJ1Zy4KKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZHJhdy5yYW5kb20uMTQgPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1E
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmRyYXcucmFuZG9tLjMwID0gU0tJUAorMjg0NyBWVUxL
QU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5kcmF3LnJhbmRvbS40MSA9IFNLSVAK
KzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5
cy5zaW5nbGVfYXR0cmlidXRlLmZpcnN0LmJ5dGVfZmlyc3QqID0gU0tJUAorMjg0NyBWVUxLQU4g
V0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRy
aWJ1dGUuZmlyc3QuZmxvYXRfZmlyc3QqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0
LmJ1ZmZlcl8xXzE3X2J5dGUqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0LmJ1ZmZl
cl8xXzJfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQuYnVmZmVyXzFfMzJf
Ynl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQuYnVmZmVyXzE3XzE3X2J5dGUq
ID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0
ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0LmJ1ZmZlcl8xN18yX2J5dGUqID0gU0tJ
UAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJy
YXlzLnNpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0LmJ1ZmZlcl8xN18zMl9ieXRlKiA9IFNLSVAKKzI4
NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy5z
aW5nbGVfYXR0cmlidXRlLm9mZnNldC5idWZmZXJfMzJfMTdfYnl0ZSogPSBTS0lQCisyODQ3IFZV
TEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xl
X2F0dHJpYnV0ZS5vZmZzZXQuYnVmZmVyXzMyXzMyX2J5dGUqID0gU0tJUAorMjg0NyBWVUxLQU4g
V0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRy
aWJ1dGUub2Zmc2V0LmJ1ZmZlcl8zMl8zMl9mbG9hdCogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4g
QU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0
ZS5vZmZzZXQuYnVmZmVyXzRfMTdfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZz
ZXQuYnVmZmVyXzRfMzJfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQuYnVm
ZmVyXzRfMzJfZmxvYXQqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUuc3RyaWRlcy5idWZmZXJf
MF8xN19ieXRlKiA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudmVydGV4X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLnN0cmlkZXMuYnVmZmVyXzBfMzJf
Ynl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5zdHJpZGVzLmJ1ZmZlcl8wXzMyX2Zsb2F0
KiA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVy
dGV4X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLnN0cmlkZXMuYnVmZmVyXzBfMzJfc2hvcnQqID0g
U0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhf
YXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUuc3RyaWRlcy5idWZmZXJfMF8zX2J5dGUqID0gU0tJUAor
Mjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlz
LnNpbmdsZV9hdHRyaWJ1dGUuc3RyaWRlcy5idWZmZXJfMF82X3Nob3J0KiA9IFNLSVAKKzI4NDcg
VlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy5zaW5n
bGVfYXR0cmlidXRlLnVzYWdlcy5idWZmZXJfMF8wX2J5dGUqID0gU0tJUAorMjg0NyBWVUxLQU4g
V0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRy
aWJ1dGUudXNhZ2VzLmJ1ZmZlcl8wXzBfc2hvcnQqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFN
RCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUu
dXNhZ2VzLmJ1ZmZlcl8wXzE3X2J5dGUqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUudXNhZ2Vz
LmJ1ZmZlcl8wXzMyX2J5dGUqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUudXNhZ2VzLmJ1ZmZl
cl8wXzMyX2Zsb2F0KiA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudmVydGV4X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLnVzYWdlcy5idWZmZXJfMF8z
Ml9zaG9ydCogPSBTS0lQCisKKy8vIEZhaWxzIGFmdGVyIE9wZW5HTCBsaW5lIHJhc3Rlcml6YXRp
b24gcnVsZXMgaW1wbGVtZW50YXRpb24uIFBvc3NpYmx5IGEgYnVnIGluIEZyYWdDb29yZC4KKzI4
MDkgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcubGluZS5s
b25nX2xpbmVfY2xpcCA9IEZBSUwKKworLy8gUG9seWdvbiBvZmZzZXQgZmFpbHVyZXMKKzMzMDEg
VlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZGVm
YXVsdF9yZXN1bHRfZGVwdGhfY2xhbXAgPSBGQUlMCiszMzAxIFZVTEtBTiBXSU4gQU1EIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmRlZmF1bHRfZmFjdG9yXzFfc2xvcGUg
PSBGQUlMCiszMzAxIFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnBvbHln
b25fb2Zmc2V0LmZpeGVkMTZfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCisKKy8vIEZhaWx1cmVz
IG9uIG5ld2VyIE5WSURJQSBkcml2ZXJzICg0MTEuOTUpIGFuZCBwYXNzZXMgb24gb2xkZXIgZHJp
dmVycyAoMzg4LjE2KS4KKzI5NzYgVlVMS0FOIE5WSURJQSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5zaGFkZXJzLmludmFyaWFuY2UuKiA9IEZBSUwKKy8vIEZhaWxzIG9uIDQzMS4wMiBOVklESUEg
ZHJpdmVyCiszNzQ4IFZVTEtBTiBXSU4gTlZJRElBIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZi
by5yZW5kZXIucmVwZWF0ZWRfY2xlYXIuKiA9IEZBSUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9leHBl
Y3RhdGlvbnMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC9kZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3ZGM4
MTU1YTM4MTBiOGJmNWFmZjZiZWRjNmM0NDVmZDI5ZjhiNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFf
dGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0wLDAgKzEsMjcwIEBACisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gVGhpcyBmaWxl
IGNvbnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhl
IGV4cGVjdGVkCisvLyBmb3JtYXQgaXM6CisvLyAge0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1Rf
TkFNRX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQsU0tJUH0KKy8vCisvLyBNT0RJRklFUlMg
Y2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93IGxpc3QsIGNvbWJpbmVkIHdpdGggYSBs
b2dpY2FsIEFORDoKKy8vICBXSU4gWFAgVklTVEEgV0lONyBXSU44IFdJTjEwCisvLyAgTUFDIExF
T1BBUkQgU05PV0xFT1BBUkQgTElPTiBNT1VOVEFJTkxJT04gTUFWRVJJQ0tTIFlPU0VNSVRFIEVM
Q0FQSVRBTiBTSUVSUkEgSElHSFNJRVJSQSBNT0pBVkUKKy8vICBMSU5VWCBDSFJPTUVPUyBBTkRS
T0lECisvLyAgTlZJRElBIEFNRCBJTlRFTAorLy8gIERFQlVHIFJFTEVBU0UKKy8vICBEM0Q5IEQz
RDExIE9QRU5HTCBHTEVTIFZVTEtBTgorLy8gIE5FWFVTNVggUElYRUwyT1JYTAorLy8gIFFVQURS
T1A0MDAKKy8vICBTV0lGVFNIQURFUgorLy8KKy8vCisvLyBURVNUX05BTUUgY2FuIGJlIGEgc3Bl
Y2lmaWMgdGVzdCBuYW1lLCBvciBoYXZlIGEgJyonIGluIHRoZSBlbmQsIHdoaWNoCisvLyBpbmRp
Y2F0ZXMgYSBwcmVmaXggbWF0Y2hpbmcuCisvLworLy8gRXhhbXBsZXM6CisvLyBmYWlscyBvbiBi
b3RoIHdpbmRvd3MgYW5kIG1hYyAoY3Jhc2gpCisvLyAgOTE1MzAgV0lOIDogY29udGV4dF9sb3N0
X3Jlc3RvcmVkID0gU0tJUAorLy8gIDkxNTMwIE1BQyA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9
IFNLSVAKKy8vIGZhaWxzIG9uIHdpbmRvd3MgdXNpbmcgTlZJRElBIEdQVXMKKy8vICA5MTUzMyBX
SU4gTlZJRElBIDogZ2xfbWluX3VuaWZvcm1zID0gRkFJTAorLy8gZmFpbHMgb24gTmV4dXM1WCB3
aXRoIEdMRVMgYmFja2VuZCAoaGFuZ3MpCisvLyAgOTE1MzEgTkVYVVM1WCBHTEVTIDogY29uZm9y
bWFuY2VfbW9yZV8qID0gU0tJUAorCisKKy8vLy8KKy8vLy8gRGVza3RvcCBleHBlY3RhdGlvbnMK
Ky8vLy8KKworLy8gQ3Jhc2hpbmcgVGVzdHMKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LnRyYW5zZm9ybV9mZWVkYmFja192YXJ5aW5n
LnJlc291cmNlX2xpc3QudmVydGV4X2ZyYWdtZW50LmJ1aWx0aW5fZ2xfcG9zaXRpb24gPSBTS0lQ
CisxNDQyIE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2Vf
cXVlcnkudHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmcucmVzb3VyY2VfbGlzdC52ZXJ0ZXhfZnJh
Z21lbnQuYnVpbHRpbl9nbF9wb3NpdGlvbiA9IFNLSVAKKworLy8gQ3Jhc2hpbmcgVGVzdHMgb24g
TGludXggb24gSW50ZWwgSEQgNjMwLgorMjM0OSBMSU5VWCBJTlRFTCA6IGRFUVAtR0xFUzMxLmZ1
bmN0aW9uYWwuc3luY2hyb25pemF0aW9uLmluX2ludm9jYXRpb24uaW1hZ2VfKiA9IFNLSVAKKzIz
NDkgTElOVVggSU5URUwgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnN5bmNocm9uaXphdGlvbi5p
bnRlcl9pbnZvY2F0aW9uLmltYWdlXyogPSBTS0lQCisyMzQ5IExJTlVYIElOVEVMIDogZEVRUC1H
TEVTMzEuZnVuY3Rpb25hbC5jb21wdXRlLmJhc2ljLmNvcHlfaW1hZ2VfdG9fc3Nib19zbWFsbCA9
IFNLSVAKKzIzNDkgTElOVVggSU5URUwgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmNvbXB1dGUu
YmFzaWMuY29weV9zc2JvX3RvX2ltYWdlX3NtYWxsID0gU0tJUAorMjM0OSBMSU5VWCBJTlRFTCA6
IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuY29tcHV0ZS5iYXNpYy5pbWFnZV9iYXJyaWVyX211bHRp
cGxlID0gU0tJUAorCisvLyBGYWlsaW5nIFRlc3RzIG9uIExpbnV4IG9uIEludGVsIEhEIDYzMC4K
KzIzNDkgTElOVVggSU5URUwgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZl
X2NvdmVyYWdlLmdldF9lcnJvci5zaGFkZXIucHJvZ3JhbV9iaW5hcnkgPSBGQUlMCisKKzE0NDIg
RDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmltYWdlX2xvYWRfc3RvcmUuKiA9IFNLSVAK
KworLy8gVGltZXMgb3V0IHNoYWRlciBjb21waWxhdGlvbiBiZWNhdXNlIGl0IHVzZXMgc28gbWFu
eSByZXNvdXJjZXMuCiszNDQ1IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zc2JvLmxheW91dC5y
YW5kb20uYWxsX3NoYXJlZF9idWZmZXIuNDggPSBTS0lQCisKKy8vIEQzRDExIEZhaWxpbmcgVGVz
dHMKKy8vIEJlbG93IGNhc2VzIGFyZSBmYWlsZWQgZHVlIHRvIGJpbmRpbmcgbXVsdGktVUFWcyB0
byBhIHNpbmdsZSBidWZmZXIgaXMgbm90IHN1cHBvcnRlZCBpbiBEM0QgYmFja2VuZC4KKy8vIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMzAzMgorMzAzMiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuc3Niby5sYXlvdXQuKi5zaW5nbGVfYnVmZmVyKiA9IEZBSUwKKzMwMzIgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLnNzYm8ubGF5b3V0LnJhbmRvbS5uZXN0ZWRfc3RydWN0c19hcnJh
eXNfaW5zdGFuY2VfYXJyYXlzLjEzID0gRkFJTAorMzAzMiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1
bmN0aW9uYWwuc3Niby5sYXlvdXQucmFuZG9tLmFsbF9zaGFyZWRfYnVmZmVyKiA9IEZBSUwKKwor
MTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkuaW50ZWdlci5t
YXhfY29tcHV0ZV9hdG9taWNfY291bnRlcnNfKiA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdM
RVMzMS5mdW5jdGlvbmFsLnN0YXRlX3F1ZXJ5LmludGVnZXIubWF4X2F0b21pY19jb3VudGVyX2J1
ZmZlcl9zaXplXyogPSBGQUlMCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5z
dGF0ZV9xdWVyeS5pbnRlZ2VyLm1heF9jb21iaW5lZF9hdG9taWNfY291bnRlcnMqID0gRkFJTAor
MTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkuaW50ZWdlci5t
YXhfdW5pZm9ybV9idWZmZXJfYmluZGluZ3NfKiA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdM
RVMzMS5mdW5jdGlvbmFsLnN0YXRlX3F1ZXJ5LmludGVnZXIubWF4X2NvbWJpbmVkX3RleHR1cmVf
aW1hZ2VfdW5pdHNfKiA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFs
LnN0YXRlX3F1ZXJ5LnByb2dyYW0uY29tcHV0ZV93b3JrX2dyb3VwX3NpemVfZ2V0X3Byb2dyYW1p
diA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmFzeW5j
LmNhc2VfNF9sb2cgPSBTS0lQCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5k
ZWJ1Zy5hc3luYy5jYXNlXzVfY2FsbGJhY2sgPSBTS0lQCisxNDQyIEQzRDExIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9maWx0ZXJzLmNhc2VfMiA9IEZBSUwKKzE0NDIgRDNE
MTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmVycm9yX2ZpbHRlcnMuY2FzZV8zID0g
RkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcuZXJyb3JfZmls
dGVycy5jYXNlXzkgPSBGQUlMCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5k
ZWJ1Zy5lcnJvcl9maWx0ZXJzLmNhc2VfMTAgPSBGQUlMCisxNDQyIEQzRDExIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9maWx0ZXJzLmNhc2VfMjcgPSBGQUlMCisxNDQyIEQz
RDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9maWx0ZXJzLmNhc2VfMjgg
PSBGQUlMCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9n
cm91cHMuY2FzZV8yID0gRkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwu
ZGVidWcuZXJyb3JfZ3JvdXBzLmNhc2VfMyA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMz
MS5mdW5jdGlvbmFsLmRlYnVnLmVycm9yX2dyb3Vwcy5jYXNlXzkgPSBGQUlMCisxNDQyIEQzRDEx
IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9ncm91cHMuY2FzZV8xMCA9IEZB
SUwKKworMTk0MSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGlu
X2Z1bmN0aW9ucy5jb21tb24uKmdlb21ldHJ5ID0gRkFJTAorMTk0MSBEM0QxMSA6IGRFUVAtR0xF
UzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wYWNrX3VucGFjay4qZ2Vv
bWV0cnkgPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJz
LmJ1aWx0aW5fZnVuY3Rpb25zLmludGVnZXIuKmdlb21ldHJ5ID0gRkFJTAorMTk0MSBEM0QxMSA6
IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2NvbnN0YW50cy5nZW9tZXRy
eV9zaGFkZXIuKiA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnN0
YXRlX3F1ZXJ5LnByb2dyYW0uZ2VvbWV0cnlfc2hhZGVyX3N0YXRlX2dldF9wcm9ncmFtaXYgPSBG
QUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5nZW9tZXRyeV9zaGFkaW5n
LnF1ZXJ5LiogPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5nZW9t
ZXRyeV9zaGFkaW5nLmJhc2ljLiogPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVu
Y3Rpb25hbC5nZW9tZXRyeV9zaGFkaW5nLmNvbnZlcnNpb24uKiA9IEZBSUwKKzE5NDEgRDNEMTEg
OiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcuZW1pdC4qID0gRkFJTAor
MTk0MSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZ2VvbWV0cnlfc2hhZGluZy52YXJ5
aW5nLiogPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5nZW9tZXRy
eV9zaGFkaW5nLmxheWVyZWQuKiA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcuaW5zdGFuY2VkLiogPSBGQUlMCisxOTQxIEQzRDExIDog
ZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5nZW9tZXRyeV9zaGFkaW5nLmlucHV0LiogPSBGQUlMCisx
OTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5nZW9tZXRyeV9zaGFkaW5nLm5lZ2F0
aXZlLiogPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5nZW9tZXRy
eV9zaGFkaW5nLnZlcnRleF90cmFuc2Zvcm1fZmVlZGJhY2suKiA9IEZBSUwKKzE5NDEgRDNEMTEg
OiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMubGlua2FnZS5lczMxLmdlb21ldHJ5Liog
PSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2
ZV9jb3ZlcmFnZS5jYWxsYmFja3Muc2hhZGVyX2RpcmVjdGl2ZS5nZW9tZXRyeV9zaGFkZXIgPSBG
QUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9j
b3ZlcmFnZS5sb2cuc2hhZGVyX2RpcmVjdGl2ZS5nZW9tZXRyeV9zaGFkZXIgPSBGQUlMCisxOTQx
IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9jb3ZlcmFnZS5n
ZXRfZXJyb3Iuc2hhZGVyX2RpcmVjdGl2ZS5nZW9tZXRyeV9zaGFkZXIgPSBGQUlMCisyODI2IEQz
RDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC50ZXh0dXJlLmdhdGhlci5iYXNpYy5jdWJlLnJn
YmE4LnRleHR1cmVfc3dpenpsZS4qID0gRkFJTAorMjgyNiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1
bmN0aW9uYWwudGV4dHVyZS5nYXRoZXIuYmFzaWMuY3ViZS5yZ2JhOGkuKiA9IEZBSUwKKzI4MjYg
RDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnRleHR1cmUuZ2F0aGVyLmJhc2ljLmN1YmUu
cmdiYTh1aS4qID0gRkFJTAorMzg2NSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuY29t
cHV0ZS5iYXNpYy5jb3B5X2ltYWdlX3RvX3NzYm9fbGFyZ2UgPSBGQUlMCiszODY1IEQzRDExIDog
ZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5jb21wdXRlLmJhc2ljLmNvcHlfc3Nib190b19pbWFnZV9s
YXJnZSA9IEZBSUwKKworLy8gU2ltdWx0YW5lb3VzIHVzZSBvZiBHTF9DT05TVEFOVF9BTFBIQS9H
TF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgYW5kIEdMX0NPTlNUQU5UX0NPTE9SL0dMX09ORV9N
SU5VU19DT05TVEFOVF9DT0xPUiBhcyBjb2xvciBmYWN0b3JzCis0Mzk0IEQzRDExIDogZEVRUC1H
TEVTMzEuZnVuY3Rpb25hbC5kcmF3X2J1ZmZlcnNfaW5kZXhlZC5yYW5kb20ubWF4X3JlcXVpcmVk
X2RyYXdfYnVmZmVycy40ID0gRkFJTAorNDM5NCBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuZHJhd19idWZmZXJzX2luZGV4ZWQucmFuZG9tLm1heF9yZXF1aXJlZF9kcmF3X2J1ZmZlcnMu
NyA9IEZBSUwKKzQzOTQgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRyYXdfYnVmZmVy
c19pbmRleGVkLnJhbmRvbS5tYXhfaW1wbGVtZW50YXRpb25fZHJhd19idWZmZXJzLjkgPSBGQUlM
Cis0Mzk0IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kcmF3X2J1ZmZlcnNfaW5kZXhl
ZC5yYW5kb20ubWF4X2ltcGxlbWVudGF0aW9uX2RyYXdfYnVmZmVycy4xNSA9IEZBSUwKKworLy8g
RmFpbGluZyB3aXRoIGRFUVAgcm9sbAorMzQ0NyBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuc3Niby5sYXlvdXQucmFuZG9tLmFsbF9wZXJfYmxvY2tfYnVmZmVycy4yMiA9IEZBSUwKKzM0
NDcgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNzYm8ubGF5b3V0LnJhbmRvbS5hbGxf
cGVyX2Jsb2NrX2J1ZmZlcnMuNDEgPSBGQUlMCis0MjM0IEQzRDExIDogZEVRUC1HTEVTMzEuZnVu
Y3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9jb3ZlcmFnZS5nZXRfZXJyb3IuY29tcHV0ZS5wcm9ncmFt
X25vdF9hY3RpdmUgPSBGQUlMCis0MjM0IE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwu
ZGVidWcubmVnYXRpdmVfY292ZXJhZ2UuZ2V0X2Vycm9yLmNvbXB1dGUucHJvZ3JhbV9ub3RfYWN0
aXZlID0gRkFJTAorNDIzNCBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcubmVn
YXRpdmVfY292ZXJhZ2UubG9nLmNvbXB1dGUucHJvZ3JhbV9ub3RfYWN0aXZlID0gRkFJTAorNDIz
NCBPUEVOR0wgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZlX2NvdmVyYWdl
LmxvZy5jb21wdXRlLnByb2dyYW1fbm90X2FjdGl2ZSA9IEZBSUwKKzQyMzQgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZlX2NvdmVyYWdlLmdldF9lcnJvci5idWZm
ZXIucmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wbGUgPSBGQUlMCis0MjM0IEQzRDExIDog
ZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9jb3ZlcmFnZS5jYWxsYmFja3Mu
Y29tcHV0ZS5wcm9ncmFtX25vdF9hY3RpdmUgPSBGQUlMCis0MjM0IE9QRU5HTCA6IGRFUVAtR0xF
UzMxLmZ1bmN0aW9uYWwuZGVidWcubmVnYXRpdmVfY292ZXJhZ2UuY2FsbGJhY2tzLmNvbXB1dGUu
cHJvZ3JhbV9ub3RfYWN0aXZlID0gRkFJTAorCisvLyBPUEVOR0wgRmFpbGluZyBUZXN0cworMTY2
NSBXSU4gTlZJRElBIE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZHJhd19pbmRpcmVj
dC5uZWdhdGl2ZS5jb21tYW5kX29mZnNldF9ub3RfaW5fYnVmZmVyX3Vuc2lnbmVkMzJfd3JhcCA9
IEZBSUwKKzE0NDIgTlZJRElBIE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZmJvLm5v
X2F0dGFjaG1lbnRzLm1heGltdW1zLmFsbCA9IEZBSUwKKzE0NDIgT1BFTkdMIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS5hdG9taWNfY291bnRlcl9idWZm
ZXIucmVmZXJlbmNlZF9ieSogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0
aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkuYnVmZmVyX2xpbWl0ZWRfcXVlcnkucmVzb3Vy
Y2VfcXVlcnkgPSBGQUlMCisyMjc3IE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJv
Z3JhbV9pbnRlcmZhY2VfcXVlcnkuYnVmZmVyX3ZhcmlhYmxlLnJlZmVyZW5jZWRfYnkuKiA9IEZB
SUwKKzIyNzcgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFj
ZV9xdWVyeS5idWZmZXJfdmFyaWFibGUucmFuZG9tLiogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRF
UVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkucHJvZ3JhbV9pbnB1
dC4qID0gRkFJTAorMTQ0MiBPUEVOR0wgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnByb2dyYW1f
aW50ZXJmYWNlX3F1ZXJ5LnByb2dyYW1fb3V0cHV0LiogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRF
UVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkuc2hhZGVyX3N0b3Jh
Z2VfYmxvY2sucmVmZXJlbmNlZF9ieS4qID0gRkFJTAorMTQ0MiBPUEVOR0wgOiBkRVFQLUdMRVMz
MS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LnRyYW5zZm9ybV9mZWVkYmFja192
YXJ5aW5nLiogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJv
Z3JhbV9pbnRlcmZhY2VfcXVlcnkudW5pZm9ybS5yZWZlcmVuY2VkX2J5X3NoYWRlci4qID0gRkFJ
TAorMTQ0MiBPUEVOR0wgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNl
X3F1ZXJ5LnVuaWZvcm0ucmFuZG9tLiogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRFUVAtR0xFUzMx
LmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkudW5pZm9ybV9ibG9jay5yZWZlcmVu
Y2VkX2J5LiogPSBGQUlMCisKKy8vIE9wZW5HTC9EM0QxMSBGYWlsaW5nIFRlc3RzCisxNDQyIE9Q
RU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5vcGFxdWVfdHlwZV9pbmRleGlu
Zy4qID0gRkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5v
cGFxdWVfdHlwZV9pbmRleGluZy4qID0gRkFJTAorCisvLyBUaGVzZSB0ZXN0cyBhcmUgZmFpbGlu
ZyBiZWNhdXNlIG9mIGNvbXBpbGUgZXJyb3JzIHdpdGggU1NCT3MgaW4gY29tcHV0ZSBzaGFkZXJz
LgorCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zdGVuY2lsX3RleHR1cmlu
Zy4qID0gU0tJUAorLy8gVE9ETyh4aW5naHVhLmNhb0BpbnRlbC5jb20pOiBGQUlMIGV4cGVjdGF0
aW9uIGluc3RlYWQgb2YgU0tJUCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgT3BlbkdMLCBidXQg
dGhlCisvLyB0ZXN0IGV4cGVjdGF0aW9ucyBwYXJzZXIgZG9lc24ndCBzdXBwb3J0IGhhdmluZyBG
QUlMIGZvciBHTCBhbmQgU0tJUCBmb3IgRDNEIHdpdGggdGhlIHNhbWUgdGVzdCBmaWx0ZXIuCisK
KzE3MjkgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmF0b21pY19jb3VudGVyLiogPSBT
S0lQCisxOTUxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5sYXlvdXRfYmluZGluZy5z
c2JvLiogPSBTS0lQCisxOTUxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJz
Lm9wYXF1ZV90eXBlX2luZGV4aW5nLnNzYm8uKiA9IFNLSVAKKzQzMzAgRDNEMTEgOiBkRVFQLUdM
RVMzMS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LmJ1ZmZlcl92YXJpYWJsZS5y
ZWZlcmVuY2VkX2J5LnNlcGFyYWJsZV92ZXJ0ZXguKiA9IFNLSVAKKzQzMjkgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LmJ1ZmZlcl92YXJpYWJs
ZS5yZWZlcmVuY2VkX2J5LnNlcGFyYWJsZV9mcmFnbWVudC4qID0gU0tJUAorNDMyOSBEM0QxMSA6
IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkuYnVmZmVyX3Zh
cmlhYmxlLnJhbmRvbS4qID0gU0tJUAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkucHJvZ3JhbV9pbnB1dC4qID0gU0tJUAorMTQ0MiBE
M0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkucHJv
Z3JhbV9vdXRwdXQuKiA9IFNLSVAKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFs
LnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LnNoYWRlcl9zdG9yYWdlX2Jsb2NrLiogPSBTS0lQCisx
NDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVy
eS50cmFuc2Zvcm1fZmVlZGJhY2tfdmFyeWluZy4qID0gU0tJUAorMTQ0MiBEM0QxMSA6IGRFUVAt
R0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkudW5pZm9ybSogPSBTS0lQ
CisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zeW5jaHJvbml6YXRpb24uKiA9
IFNLSVAKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmxheW91dF9iaW5kaW5n
LmltYWdlLiogPSBTS0lQCisvLyBUaGlzIGNhc2UgaXMgc2tpcHBlZCBzaW5jZSBpdCB1c2VzIGF0
b21pYyBjb3VudGVyIGJ1aWx0aW4gZnVuY3Rpb25zIHdoaWNoIGhhdmVuJ3QgYmVlbiBpbXBsZW1l
bnRlZC4KKzE3MjkgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnN0YXRlX3F1ZXJ5LnBy
b2dyYW0uYWN0aXZlX2F0b21pY19jb3VudGVyX2J1ZmZlcnNfZ2V0X3Byb2dyYW1pdiA9IFNLSVAK
KworLy8gVGhlIEQzRCBiYWNrZW5kIGRvZXMgbm90IGV4cGVjdCBtaXNzaW5nIHNoYWRlciBzdGFn
ZXMKKzE1ODggRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNlcGFyYXRlX3NoYWRlci52
YWxpZGF0aW9uLmVzMzEudmFyeWluZy4qID0gU0tJUAorCisKKy8vLy8KKy8vLy8gRmFpbHVyZXMg
YmxvY2tpbmcgYW4gb2ZmaWNpYWwgR0xFUyAzLjEgY29uZm9ybWFuY2UgcnVuIG9uIFN3aWZ0U2hh
ZGVyCisvLy8vCisKKy8vIFdhaXRpbmcgZm9yIFByb2dyYW0gcGlwZWxpbmUgZnVuY3Rpb25hbGl0
eQorMzU3MCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkuaW50ZWdlci5wcm9n
cmFtX3BpcGVsaW5lX2JpbmRpbmdfKiA9IEZBSUwKKzM1NzAgOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLnN0YXRlX3F1ZXJ5LnByb2dyYW0ucHJvZ3JhbV9zZXBhcmFibGVfZ2V0X3Byb2dyYW1pdiA9
IEZBSUwKKzM1NzAgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnN0YXRlX3F1ZXJ5LnByb2dyYW1f
cGlwZWxpbmUuKiA9IFNLSVAKKzM1NzAgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm9i
amVjdF9sYWJlbHMucHJvZ3JhbV9waXBlbGluZSA9IEZBSUwKKzM1NzAgOiBkRVFQLUdMRVMzMS5m
dW5jdGlvbmFsLnNlcGFyYXRlX3NoYWRlci4qID0gRkFJTAorCisvLyBEZWJ1ZyAodGVzdCBidWcp
OgorMzU5MCBTV0lGVFNIQURFUiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcubmVnYXRp
dmVfY292ZXJhZ2UuZ2V0X2Vycm9yLmJ1ZmZlci5mcmFtZWJ1ZmZlcl90ZXh0dXJlMmQgPSBGQUlM
CisKKy8vIEZyb250LWVuZCBxdWVyeSBidWdzOgorMzU5NiBWVUxLQU4gOiBkRVFQLUdMRVMzMS5m
dW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LnNoYWRlcl9zdG9yYWdlX2Jsb2NrLmJ1
ZmZlcl9kYXRhX3NpemUuKiA9IEZBSUwKKworLy8gTm90IGZhaWxpbmcgaW4gbGFzdCBvZmZpY2lh
bCBydW4sIGJ1dCBmYWlsZWQgcmVjZW50bHk6Cis0MTEwIFNXSUZUU0hBREVSIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLiogPSBGQUlMCisKKy8vIFZ1
bGthbiBkb2Vzbid0IHN1cHBvcnQgYXJyYXkgb2YgYXJyYXkgb2Ygb3BhcXVlIHVuaWZvcm1zLiBF
bXVsYXRpb24gaXMgbm90IHlldCBkb25lIGZvciBpbWFnZXMKKzM4ODEgVlVMS0FOIDogZEVRUC1H
TEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS51bmlmb3JtLmxvY2F0aW9u
LmRlZmF1bHRfYmxvY2suYXJyYXkuYXJyYXkuaW1hZ2VfMmQgPSBTS0lQCiszODgxIFZVTEtBTiA6
IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkudW5pZm9ybS5s
b2NhdGlvbi5kZWZhdWx0X2Jsb2NrLmFycmF5LmFycmF5LmlpbWFnZV8yZF9hcnJheSA9IFNLSVAK
KworLy8vLworLy8vLyBHZW5lcmFsIFZ1bGthbiBleHBlY3RhdGlvbnMKKy8vLy8KKworLy8gQmxv
Y2sgbmFtZSBtYXRjaGluZyBmYWlsdXJlOgorMzQ1OSBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLnNoYWRlcnMubGlua2FnZS5lczMxLnNoYWRlcl9zdG9yYWdlX2Jsb2NrLm1pc21hdGNo
X3dpdGhfYW5kX3dpdGhvdXRfaW5zdGFuY2VfbmFtZSA9IEZBSUwKKworLy8gVGVzc2VsbGF0aW9u
IGdlb21ldHJ5IGludGVyYWN0aW9uOgorMzU3MiBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLnRlc3NlbGxhdGlvbl9nZW9tZXRyeV9pbnRlcmFjdGlvbi4qID0gRkFJTAorCisvLyBWdWxr
YW4gY3JlYXRlcyB0aGUgaW1hZ2UgdmlldyB3aXRoIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgdGV4
dHVyZS4KKzM4ODUgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5pbWFnZV9sb2FkX3N0
b3JlLiouZm9ybWF0X3JlaW50ZXJwcmV0LiogPSBGQUlMCisKKy8vIENhbm5vdCBjcmVhdGUgMkQg
KGFycmF5KSB2aWV3IG9mIDNEIHRleHR1cmUuCiszODg2IFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1
bmN0aW9uYWwuaW1hZ2VfbG9hZF9zdG9yZS4zZC4qbGF5ZXIgPSBGQUlMCisKKy8vLy8KKy8vLy8g
QW5kcm9pZCAoaS5lLiBQaXhlbCopIFZ1bGthbiBleHBlY3RhdGlvbnMKKy8vLy8KKworLy8gVnVs
a2FuIEFuZHJvaWQgZmFpbHVyZXMKKzQxMTAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5m
dW5jdGlvbmFsLnNoYWRlcnMuaGVscGVyX2ludm9jYXRpb24uZGVyaXZhdGUubGluZXNfOF9zYW1w
bGVzX2RmZHggPSBGQUlMCis0MTEwIEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rp
b25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLmRlcml2YXRlLmxpbmVzXzhfc2FtcGxlc19m
d2lkdGggPSBGQUlMCis0MTEwIEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25h
bC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLmRlcml2YXRlLnBvaW50c184X3NhbXBsZXNfZGZk
eCA9IEZBSUwKKzQxMTAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNo
YWRlcnMuaGVscGVyX2ludm9jYXRpb24uZGVyaXZhdGUucG9pbnRzXzhfc2FtcGxlc19kZmR5ID0g
RkFJTAorNDExMCBBTkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVy
cy5oZWxwZXJfaW52b2NhdGlvbi5kZXJpdmF0ZS5wb2ludHNfOF9zYW1wbGVzX2Z3aWR0aCA9IEZB
SUwKKzQxMTAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMu
aGVscGVyX2ludm9jYXRpb24uZGVyaXZhdGUudHJpYW5nbGVzXzhfc2FtcGxlc19kZmR5ID0gRkFJ
TAorNDExMCBBTkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5o
ZWxwZXJfaW52b2NhdGlvbi5kZXJpdmF0ZS50cmlhbmdsZXNfbWF4X3NhbXBsZXNfZGZkeCA9IEZB
SUwKKzQxMTAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMu
aGVscGVyX2ludm9jYXRpb24uZGVyaXZhdGUud2lkZV9saW5lc184X3NhbXBsZXNfZGZkeSA9IEZB
SUwKKzQxMTAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMu
aGVscGVyX2ludm9jYXRpb24uZGVyaXZhdGUud2lkZV9saW5lc19tYXhfc2FtcGxlc19kZmR5ID0g
RkFJTAorNDExMCBBTkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVy
cy5oZWxwZXJfaW52b2NhdGlvbi5kZXJpdmF0ZS53aWRlX3BvaW50c184X3NhbXBsZXNfZGZkeSA9
IEZBSUwKKzQxMTAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRl
cnMuaGVscGVyX2ludm9jYXRpb24udmFsdWUubGluZXNfOF9zYW1wbGVzID0gRkFJTAorNDExMCBB
TkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52
b2NhdGlvbi52YWx1ZS5wb2ludHNfOF9zYW1wbGVzID0gRkFJTAorNDExMCBBTkRST0lEIFZVTEtB
TiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52b2NhdGlvbi52YWx1
ZS50cmlhbmdsZXNfbWF4X3NhbXBsZXMgPSBGQUlMCisKKy8vIFBhc3Npbmcgb24gcmVjZW50IGRy
aXZlcnM6CiszNzI2IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zc2Jv
LmxheW91dC4qID0gRkFJTAorMzcyNiBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0
aW9uYWwuYXRvbWljX2NvdW50ZXIuKiA9IEZBSUwKKzM3MjYgVlVMS0FOIEFORFJPSUQgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLnN5bmNocm9uaXphdGlvbi5pbnRlcl9jYWxsLndpdGhvdXRfbWVt
b3J5X2JhcnJpZXIuKmF0b21pY19jb3VudGVyKiA9IEZBSUwKKzM3MjYgVlVMS0FOIEFORFJPSUQg
OiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmNvbXB1dGUuYmFzaWMuYXRvbWljX2NvdW50ZXIqID0g
RkFJTAorCisvLyBBcnJheXMgb2Ygb3BhcXVlIHR5cGVzIGFzIGZ1bmN0aW9uIHBhcmFtZXRlcnMg
KHBvc3NpYmx5IHJlbGF0ZWQgdG8gaXNzdWUgMzg4MikKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBk
RVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcuYXRvbWlj
X2NvdW50ZXIuY29uc3RfbGl0ZXJhbF92ZXJ0ZXggPSBGQUlMCisyNzAzIFZVTEtBTiBBTkRST0lE
IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLm9wYXF1ZV90eXBlX2luZGV4aW5nLmF0
b21pY19jb3VudGVyLmNvbnN0X2xpdGVyYWxfZnJhZ21lbnQgPSBGQUlMCisyNzAzIFZVTEtBTiBB
TkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLm9wYXF1ZV90eXBlX2luZGV4
aW5nLmF0b21pY19jb3VudGVyLmNvbnN0X2xpdGVyYWxfY29tcHV0ZSA9IEZBSUwKKzI3MDMgVlVM
S0FOIEFORFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMub3BhcXVlX3R5cGVf
aW5kZXhpbmcuYXRvbWljX2NvdW50ZXIuY29uc3RfZXhwcmVzc2lvbl92ZXJ0ZXggPSBGQUlMCisy
NzAzIFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLm9wYXF1
ZV90eXBlX2luZGV4aW5nLmF0b21pY19jb3VudGVyLmNvbnN0X2V4cHJlc3Npb25fZnJhZ21lbnQg
PSBGQUlMCisyNzAzIFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFk
ZXJzLm9wYXF1ZV90eXBlX2luZGV4aW5nLmF0b21pY19jb3VudGVyLmNvbnN0X2V4cHJlc3Npb25f
Y29tcHV0ZSA9IEZBSUwKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcuYXRvbWljX2NvdW50ZXIuKnVuaWZvcm1f
dmVydGV4ID0gRkFJTAorMjcwMyBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuc2hhZGVycy5vcGFxdWVfdHlwZV9pbmRleGluZy5hdG9taWNfY291bnRlci4qdW5pZm9ybV9m
cmFnbWVudCA9IEZBSUwKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcuYXRvbWljX2NvdW50ZXIuKnVuaWZvcm1f
Y29tcHV0ZSA9IEZBSUwKKworLy8gU1NCTyBzeW5jaHJvbml6YXRpb246Cis0MDk3IFZVTEtBTiBQ
SVhFTDJPUlhMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zeW5jaHJvbml6YXRpb24uaW5faW52
b2NhdGlvbi5zc2JvX2FsaWFzX292ZXJ3cml0ZSA9IEZBSUwKKworLy8gRnJhbWVidWZmZXIgd2l0
aG91dCBhdHRhY2htZW50czoKKzM1NzkgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLmZiby5ub19hdHRhY2htZW50cy4qID0gU0tJUAorCisvLyBTdGVuY2lsIHRleHR1cmVz
IChzb21lIG1pc3Npbmcgc3VwcG9ydCBmb3IgYmFzZSBsZXZlbCk6CiszNjgzIFZVTEtBTiBQSVhF
TDJPUlhMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zdGVuY2lsX3RleHR1cmluZy5mb3JtYXQu
KiA9IEZBSUwKKzM2ODMgVlVMS0FOIFBJWEVMMk9SWEwgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFs
LnN0ZW5jaWxfdGV4dHVyaW5nLm1pc2MuY29tcGFyZV9tb2RlX2VmZmVjdCA9IEZBSUwKKworLy8g
SW5zdGFuY2VkIGxpbmVzIHdpdGggYmFzZSB2ZXJ0ZXg6Cis0MTY2IFZVTEtBTiBQSVhFTDJPUlhM
IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kcmF3X2Jhc2VfdmVydGV4LmRyYXdfZWxlbWVudHNf
aW5zdGFuY2VkX2Jhc2VfdmVydGV4LmxpbmVzLmluc3RhbmNlZF9hdHRyaWJ1dGVzID0gRkFJTAor
CisvLyBOZWVkIHRvIHN1cHBvcnQgbm9uLWNvbG9yIHdoZW4gc3RhZ2luZyBpbWFnZSB1cGRhdGVz
Cis0MDgwIEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zdGVuY2lsX3Rl
eHR1cmluZy5taXNjLmJhc2VfbGV2ZWwgPSBTS0lQCisKKy8vIEFuZHJvaWQgdXNlcyAib2xkIiBz
YW1wbGVyIHJld3JpdGUgdGhhdCBkb2Vzbid0IHN1cHBvcnQgYXJyYXkgb2YgYXJyYXlzCisyNzAz
IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFj
ZV9xdWVyeS51bmlmb3JtLmxvY2F0aW9uLmRlZmF1bHRfYmxvY2suYXJyYXkuYXJyYXkuKnNhbXBs
ZXIqID0gU0tJUAorMjcwMyBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwu
dW5pZm9ybV9sb2NhdGlvbi5uZXN0ZWRfYXJyYXkuKnNhbXBsZXIyRCogPSBTS0lQCisKKy8vIEZh
aWwgb24gdGVzdHMgdGhhdCB1c2UgYW4gdW5zdXBwb3J0ZWQgZXh0ZW5zaW9uIQorNDM3MSBWVUxL
QU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5pbXBsaWNpdF9jb252
ZXJzaW9ucy5lczMxLmFyaXRobWV0aWMuaW5wdXRfYmVmb3JlX2xpdGVyYWwuYWRkLmludF90b192
ZWMzX3ZlcnRleCA9IEZBSUwKKzQzNzEgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLnNoYWRlcnMuaW1wbGljaXRfY29udmVyc2lvbnMuZXMzMS5hcml0aG1ldGljLmlucHV0
X2JlZm9yZV9saXRlcmFsLmFkZC5pbnRfdG9fdXZlYzNfdmVydGV4ID0gRkFJTAorNDM3MSBTV0lG
VFNIQURFUiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5pbXBsaWNpdF9jb252ZXJz
aW9ucy4qID0gRkFJTAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzX3Rl
c3RfZXhwZWN0YXRpb25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWQ5ZjQ2MmUwNTcyYzRjYWM3YTM5ZWJk
ZjE3MDhkMzRiYTZlMTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4
dApAQCAtMCwwICsxLDU5OSBAQAorLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2Yg
ZGVmZWN0aXZlIGRFUVAgY29uZm9ybWFuY2UgdGVzdHMuIFRoZSBleHBlY3RlZAorLy8gZm9ybWF0
IGlzOgorLy8gIHtCVUcjfSB7TU9ESUZJRVJTfSA6IHtURVNUX05BTUV9ID0ge1BBU1MsRkFJTCxG
TEFLWSxUSU1FT1VULFNLSVB9CisvLworLy8gTU9ESUZJRVJTIGNhbiBiZSBhIGNvbWJpbmF0aW9u
IG9mIHRoZSBiZWxvdyBsaXN0LCBjb21iaW5lZCB3aXRoIGEgbG9naWNhbCBBTkQ6CisvLyAgV0lO
IFhQIFZJU1RBIFdJTjcgV0lOOCBXSU4xMAorLy8gIE1BQyBMRU9QQVJEIFNOT1dMRU9QQVJEIExJ
T04gTU9VTlRBSU5MSU9OIE1BVkVSSUNLUyBZT1NFTUlURSBFTENBUElUQU4gU0lFUlJBIEhJR0hT
SUVSUkEgTU9KQVZFCisvLyAgTElOVVggQ0hST01FT1MgQU5EUk9JRAorLy8gIE5WSURJQSBBTUQg
SU5URUwKKy8vICBERUJVRyBSRUxFQVNFCisvLyAgRDNEOSBEM0QxMSBPUEVOR0wgR0xFUyBWVUxL
QU4KKy8vICBORVhVUzVYIFBJWEVMMk9SWEwKKy8vICBRVUFEUk9QNDAwCisvLworLy8KKy8vIFRF
U1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhl
IGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4KKy8vCisvLyBFeGFt
cGxlczoKKy8vIGZhaWxzIG9uIGJvdGggd2luZG93cyBhbmQgbWFjIChjcmFzaCkKKy8vICA5MTUz
MCBXSU4gOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBTS0lQCisvLyAgOTE1MzAgTUFDIDogY29u
dGV4dF9sb3N0X3Jlc3RvcmVkID0gU0tJUAorLy8gZmFpbHMgb24gd2luZG93cyB1c2luZyBOVklE
SUEgR1BVcworLy8gIDkxNTMzIFdJTiBOVklESUEgOiBnbF9taW5fdW5pZm9ybXMgPSBGQUlMCisv
LyBmYWlscyBvbiBOZXh1czVYIHdpdGggR0xFUyBiYWNrZW5kIChoYW5ncykKKy8vICA5MTUzMSBO
RVhVUzVYIEdMRVMgOiBjb25mb3JtYW5jZV9tb3JlXyogPSBTS0lQCisKKy8vIERvbid0IHJ1biB0
aGVzZSB0ZXN0cyBmb3IgZmFzdGVyIHR1cm5vdmVyCisxMTAxIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZsdXNoX2ZpbmlzaC4qID0gU0tJUAorCisvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0
IHdoeSB0aGVzZSBmYWlsIG9uIHRoZSBib3RzLCBidXQgbm90IGxvY2FsbHkuCisxMTA4IFdJTiBE
M0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnN0cnVjdC5sb2NhbC5keW5hbWlj
X2xvb3Bfc3RydWN0X2FycmF5X2ZyYWdtZW50ID0gRkFJTAorMTA5NCBXSU4gRDNEMTEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxvb3BfMiA9IEZBSUwK
KzEwOTQgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5j
ZS5tZWRpdW1wLmxvb3BfMiA9IEZBSUwKKworLy8gV2UgY2FuJ3Qgc3VwcG9ydCBkaXN0aW5jdCB0
ZXh0dXJlIHNpemVzIGluIEQzRDExLgorMTA5NyBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5zaXplLmRpc3RpbmN0ID0gRkFJTAorCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworLy8KKy8vICBUZW1wb3JhcnkgZW50cmllczogdGhleSBzaG91bGQgYmUg
cmVtb3ZlZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworCisvLyBGYWlsdXJlcyByZWxhdGVkIHRvIHVzaW5nIGEgZGVwdGgvc3RlbmNpbCBlbmFi
bGVkIGJhY2tidWZmZXIgb24gV2luZG93cyAvIE5WSURJQS4KKzI0MjggRDNEMTEgTlZJRElBIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5jb21tb25fc3Vi
ZXhwcmVzc2lvbl8xID0gRkFJTAorMjQyOCBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9
IEZBSUwKKzI0MjggRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
aW52YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisyNDI4IEQzRDEx
IE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uaW52YWxpZGF0ZS5kZWZhdWx0LnJl
bmRlcl9hbGwgPSBTS0lQCisyNDI4IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mYm8uaW52YWxpZGF0ZS5kZWZhdWx0LnJlbmRlcl9kZXB0aF9zdGVuY2lsID0gU0tJUAorMjQy
OCBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmludmFsaWRhdGUuZGVm
YXVsdC5iaW5kX2RlcHRoX3N0ZW5jaWwgPSBTS0lQCisyNDI4IEQzRDExIE5WSURJQSA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uaW52YWxpZGF0ZS5kZWZhdWx0LmRyYXdfZnJhbWVidWZmZXJf
YWxsID0gU0tJUAorMjQyOCBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJv
LmludmFsaWRhdGUuZGVmYXVsdC5yZWFkX2ZyYW1lYnVmZmVyX2FsbCA9IFNLSVAKKzI0MjggRDNE
MTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5pbnZhbGlkYXRlLmRlZmF1bHQu
YmluZF9hbGwgPSBTS0lQCisyNDI4IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5wb2x5Z29uX29mZnNldC5kZWZhdWx0X3JlbmRlcl93aXRoX3VuaXRzID0gU0tJUAorCisvLyBU
ZXN0cyB3ZXJlIGJlaW5nIGhpZGRlbiBieSBmbGFraW5lc3MgKGFuZ2xlYnVnLmNvbS8zMjcxKQor
MzMyOSBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRi
YWNrLmludGVycG9sYXRpb24uZmxhdC4qID0gRkFJTAorMzMyOSBEM0QxMSBOVklESUEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLmJhc2ljX3R5cGVzLmludGVybGVh
dmVkLnRyaWFuZ2xlcy4qID0gRkFJTAorMzMyOSBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLmJhc2ljX3R5cGVzLnNlcGFyYXRlLnRyaWFuZ2xl
cy4qID0gRkFJTAorCisvLyBNaXNzaW5nIHRoZSBTYW1wbGVDbXAgaW5zdHJ1Y3Rpb24gaW4gdmVy
dGV4IHNoYWRlcnMuCisxNDM1IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Quc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9
IEZBSUwKKzE0MzUgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0g
RkFJTAorMTQzNSBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJ
TAorMTQzNSBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJl
X2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0g
RkFJTAorCisvLyBTYW1wbGVDbXAgaXMgbWlzc2luZyBncmFkaWVudC9vZmZzZXQgcGFyYW1ldGVy
cyBpbiBITFNMLgorMTQzNiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlbG9kLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9
IEZBSUwKKzE0MzYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQg
PSBGQUlMCisxNDM2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRl
eHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9kLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9
IEZBSUwKKzE0MzYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2RvZmZzZXQuc2FtcGxlcjJkc2hhZG93X2ZyYWdt
ZW50ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0g
RkFJTAorMTQzNiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0
dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQgPSBGQUlM
CisxNDM2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXIyZGFycmF5c2hhZG93X3ZlcnRleCA9IEZBSUwK
KzE0MzYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9m
dW5jdGlvbnMudGV4dHVyZWdyYWQuc2FtcGxlcjJkYXJyYXlzaGFkb3dfZnJhZ21lbnQgPSBGQUlM
CisxNDM2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlM
CisxNDM2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZB
SUwKKzE0MzYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVy
ZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVydGV4
ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50
ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNldC5zYW1wbGVyMmRhcnJheXNoYWRvd19m
cmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFkLnNhbXBsZXIyZHNoYWRvd192
ZXJ0ZXggPSBGQUlMCisxNDM2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qZ3JhZC5zYW1wbGVyMmRzaGFkb3dfZnJh
Z21lbnQgPSBGQUlMCisxNDM2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFk
b3dfdmVydGV4ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWRvZmZzZXQuc2FtcGxlcjJk
c2hhZG93X2ZyYWdtZW50ID0gRkFJTAorCisvLyBEcmF3QnVmZmVycyB0ZXN0IGZhaWxpbmcgb24g
RDNEMTEuCiszMjk4IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmZy
YWdkYXRhLmRyYXdfYnVmZmVycyA9IEZBSUwKKworLy8gVE9ETyhqbWFkaWxsLCBjd2FsbGV6KTog
dHJpYWdlIHRoZSBmYWlsdXJlcyBiZWxvdyBpbnRvIHBlcm1hbmVudCBhbmQgdGVtcG9yYXJ5IGZh
aWx1cmVzCisKKy8vIFF1YWRybyBQNDAwCisvLyBUT0RPKGptYWRpbGwpOiBOYXJyb3cgdG8gUDQw
MCBkZXZpY2Ugb25seTogMHgxQ0IzLgorMjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5mdW5jdGlvbnMuY29udHJvbF9mbG93LnJldHVybl9pbl9uZXN0ZWRf
bG9vcF9mcmFnbWVudCA9IEZBSUwKKzIyMjIgRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMuZnVuY3Rpb25zLmNvbnRyb2xfZmxvdy5yZXR1cm5faW5fbmVzdGVkX2xv
b3BfdmVydGV4ID0gRkFJTAorMjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwudGV4dHVyZS5taXBtYXAuMmQubWluX2xvZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzIyMjIg
RDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLm1p
bl9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorMjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuM2QubWluX2xvZC5saW5lYXJfbmVhcmVzdCA9
IEZBSUwKKzIyMjIgRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLjNkLm1pbl9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorMjIyMiBEM0QxMSBOVklE
SUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5taW5fbG9kLmxp
bmVhcl9uZWFyZXN0ID0gRkFJTAorMjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5taW5fbG9kLm5lYXJlc3RfbmVhcmVzdCA9IEZBSUwK
KworLy8gRmxha3kgb24gV2luNyBEM0QxMSBOVklESUEKKzQwNzAgV0lONyBEM0QxMSBOVklESUEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucmFzdGVyaXphdGlvbi5mbGF0c2hhZGluZy50cmlhbmds
ZXMgPSBGQUlMCisKKy8vIFZlcnRleCBhdHRyaWJ1dGUgYWxpYXNpbmcgaXMgbm90IHN1cHBvcnRl
ZCBvbiBEM0QKKzM0NjcgRDNEOSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9j
YXRpb24uYmluZF9hbGlhc2luZy5jb25kKiA9IEZBSUwKKzM0NjcgRDNEOSA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZCogPSBG
QUlMCiszNDY3IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlv
bi5iaW5kX2FsaWFzaW5nLmNvbmQqID0gRkFJTAorMzQ2NyBEM0QxMSA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZCogPSBGQUlM
CisKKy8vIFdpbmRvd3MgYW5kIExpbnV4IGZhaWx1cmVzCisxMDk1IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC4qID0gRkFJTAorCisvLyBX
aW5kb3dzIG9ubHkgZmFpbHVyZQorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwuc3RlbmNpbF9kZXB0aF9mdW5jcy5zdGVuY2ls
XyogPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsX29wcy4qID0gRkFJTAorMTA5NiBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwud3JpdGVf
bWFzay4qID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwucmFuZG9tLiogPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1
ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3JfY29uc3Rh
bnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJ
TAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJs
ZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29u
ZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQz
RDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2Zy
YW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3Rh
bnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVi
dWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX2NvbnN0
YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNf
ZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZB
SUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5i
bGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBE
M0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9m
cmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0
YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDEx
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1l
YnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9y
X2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50
X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0g
RkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3Vi
dHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9
IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29w
cy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1
YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNE
MTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJh
bWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfYWxw
aGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2Fs
cGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25f
c3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9t
aW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9u
X3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3Rh
bnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFu
dF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50
X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVz
X2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9j
b2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2Nv
bG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1
bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29s
b3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVu
Yy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29u
c3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
YWRkX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3Rh
bnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRk
X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lO
IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3Jn
Yi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
X29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisx
MDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX29u
ZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0g
RkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNf
Y29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4g
RDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdi
LmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2NvbnN0
YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1
YnRyYWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEw
OTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5m
Ym9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29u
c3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51
c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYg
V0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9f
c3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9v
bmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1
bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2Nv
bG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0
X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlM
CisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9j
b25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51
c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9h
bHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNl
X3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxw
aGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9z
dWJ0cmFjdF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQz
RDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhh
X29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9j
b25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVu
Yy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29u
c3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMucmFuZG9tLiogPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLiogPSBG
QUlMCisxMTAxIFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNl
dC5maXhlZDE2X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAorMTEwMSBXSU4gRDNEMTEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQyNF9yZW5kZXJfd2l0aF91bml0
cyA9IEZBSUwKKzExMDEgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmxpZmV0aW1l
LmF0dGFjaC5kZWxldGVkX2lucHV0LmJ1ZmZlcl92ZXJ0ZXhfYXJyYXkgPSBGQUlMCisKKy8vIEZh
aWxlZCBhZnRlciBkRVFQIHJvbGwKKzQyMzQgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLm5lZ2F0aXZlX2FwaS5idWZmZXIucmVuZGVyYnVmZmVyX3N0b3JhZ2VfbXVsdGlzYW1wbGUg
PSBGQUlMCisKKy8vIEJhc2ljIGxpbmUgdHJhbnNmb3JtIGZlZWRiYWNrIHRlc3RzIGZsYWt5IG9u
IFdpbmRvd3MuCisyNjc2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zv
cm1fZmVlZGJhY2suYmFzaWNfdHlwZXMuaW50ZXJsZWF2ZWQubGluZXMuKiA9IEZBSUwKKzI2NzYg
V0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5zZm9ybV9mZWVkYmFjay5iYXNp
Y190eXBlcy5zZXBhcmF0ZS5saW5lcy4qID0gRkFJTAorCisvLyBWZXJ5IHNtYWxsIHRocmVzaG9s
ZCBpc3N1ZS4gQ291bGQgdXBzdHJlYW0gYSBoaWdoZXIgdG9sZXJhbmNlIHRvIGRFUVAuCisyMzIz
IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMu
b25seV9jdWJlLjcgPSBGQUlMCisKKy8vIEJsaXQgcmVsYXRlZCBmYWlsdXJlcyBvbiBEM0QxMQor
MzI5NyBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFy
ZXN0X2NvbnNpc3RlbmN5X291dF9vZl9ib3VuZHNfbWFnX3JldmVyc2VfZHN0X3ggPSBGQUlMCisz
Mjk3IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJl
c3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5kc19tYWdfcmV2ZXJzZV9kc3RfeSA9IEZBSUwKKzMy
OTcgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVz
dF9jb25zaXN0ZW5jeV9vdXRfb2ZfYm91bmRzX21hZ19yZXZlcnNlX3NyY194ID0gRkFJTAorMzI5
NyBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0
X2NvbnNpc3RlbmN5X291dF9vZl9ib3VuZHNfbWFnX3JldmVyc2Vfc3JjX3kgPSBGQUlMCiszMjk3
IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm91dF9vZl9i
b3VuZHNfbGluZWFyID0gRkFJTAorMzI5NyBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZmJvLmJsaXQucmVjdC5vdXRfb2ZfYm91bmRzX3JldmVyc2VfZHN0X3hfbGluZWFyID0gRkFJ
TAorMzI5NyBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5v
dXRfb2ZfYm91bmRzX3JldmVyc2VfZHN0X3lfbGluZWFyID0gRkFJTAorMzI5NyBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5vdXRfb2ZfYm91bmRzX3JldmVy
c2Vfc3JjX2RzdF94X2xpbmVhciA9IEZBSUwKKzMyOTcgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZiby5ibGl0LnJlY3Qub3V0X29mX2JvdW5kc19yZXZlcnNlX3NyY19kc3RfeV9s
aW5lYXIgPSBGQUlMCiszMjk3IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8u
YmxpdC5yZWN0Lm91dF9vZl9ib3VuZHNfcmV2ZXJzZV9zcmNfeF9saW5lYXIgPSBGQUlMCiszMjk3
IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm91dF9vZl9i
b3VuZHNfcmV2ZXJzZV9zcmNfeV9saW5lYXIgPSBGQUlMCisKKy8vIFdpbmRvd3MgQU1EIHNwZWNp
ZmljIGZhaWx1cmVzCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmJsaXQuZGVwdGhfc3RlbmNpbC5kZXB0aDI0X3N0ZW5jaWw4X3NjYWxlID0gRkFJTAorMTYz
MyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LmRlcHRoX3N0
ZW5jaWwuZGVwdGgyNF9zdGVuY2lsOF9zdGVuY2lsX29ubHkgPSBGQUlMCisxNjMzIFdJTiBEM0Qx
MSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLmJs
aXQudGV4MmQucjExZl9nMTFmX2IxMGYgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLmJsaXQudGV4MmQucmcz
MmYgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJv
LmNvbG9yLnJlcGVhdGVkX2NsZWFyLmJsaXQudGV4MmQucmcxNmYgPSBGQUlMCisxNjMzIFdJTiBE
M0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFy
LmJsaXQudGV4MmQucjMyZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50ZXgyZC5yMTZmID0gRkFJ
TAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5y
ZXBlYXRlZF9jbGVhci5ibGl0LnRleDJkLnJnYjE2ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFN
RCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50
ZXgyZC5yZzggPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLmJsaXQudGV4MmQucmdiMTBfYTIgPSBGQUlMCisx
NjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVh
dGVkX2NsZWFyLmJsaXQudGV4MmQucmdiYTE2ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50ZXgy
ZC5yOCA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uY29sb3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnJnYmEzMmYgPSBGQUlMCisxNjMz
IFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVk
X2NsZWFyLnNhbXBsZS50ZXgyZC5yZ2JhMTZmID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5zYW1wbGUudGV4
MmQucjExZl9nMTFmX2IxMGYgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC5yZzMyZiA9
IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29s
b3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnJnMTZmID0gRkFJTAorMTYzMyBXSU4gRDNE
MTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5z
YW1wbGUudGV4MmQucjMyZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnIxNmYgPSBG
QUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9y
LnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC5yZ2IxNmYgPSBGQUlMCisxNjMzIFdJTiBEM0Qx
MSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNh
bXBsZS50ZXgyZC5yZzggPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC5yOCA9IEZBSUwK
KzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVw
ZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnJnYjEwX2EyID0gRkFJTAorMTYzMyBXSU4gRDNEMTEg
QU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5yZW5kZXIuc2hhcmVkX2NvbG9yYnVmZmVy
X2NsZWFyLnRleDJkX3JnYjE2ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLmZiby5yYm9fbXVsdGlzYW1wbGVfbWF4LmludGVy
cG9sYXRpb24ubGluZXMgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlX21heC5wcmltaXRpdmVz
LmxpbmVzID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUuZmlsdGVyaW5nLmN1YmUuZm9ybWF0cy5yZ2IxMF9hMl9uZWFyZXN0X21pcG1hcF9u
ZWFyZXN0ID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUuZmlsdGVyaW5nLmN1YmUuZm9ybWF0cy5yZ2I1NjVfbmVhcmVzdF9taXBtYXBfbmVh
cmVzdCA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLmZpbHRlcmluZy5jdWJlLmZvcm1hdHMucmdiYTE2Zl9uZWFyZXN0X21pcG1hcF9uZWFy
ZXN0ID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRl
eHR1cmUubWlwbWFwLjJkLm1pbl9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorMTYzMyBXSU4g
RDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLm1pbl9s
b2QubGluZWFyX25lYXJlc3QgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQubWF4X2xvZC5uZWFyZXN0X25lYXJlc3QgPSBG
QUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5t
aXBtYXAuMmQubWF4X2xvZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFN
RCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4zZC5taW5fbG9kLm5lYXJl
c3RfbmVhcmVzdCA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLm1pcG1hcC4zZC5taW5fbG9kLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMTYz
MyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjNk
Lm1heF9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjNkLm1heF9sb2QubGluZWFyX25lYXJl
c3QgPSBGQUlMCisKKy8vIEQzRDExIEludGVsIHNwZWNpZmljCisKKzEzNDkgRDNEMTEgSU5URUwg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS42
ID0gRkFJTAorMTM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJl
LnVuaXRzLjJfdW5pdHMub25seV8yZF9hcnJheS44ID0gRkFJTAorMTM0OSBEM0QxMSBJTlRFTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMub25seV8zZC44ID0g
RkFJTAorMTM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVu
aXRzLjJfdW5pdHMubWl4ZWQuMCA9IEZBSUwKKzEzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm1peGVkLjggPSBGQUlMCisxMzQ5IEQz
RDExIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5t
aXhlZC45ID0gRkFJTAorMTM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV8zZC4zID0gRkFJTAorMjM0OSBEM0QxMSBJTlRFTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5taW5fbG9kLm5lYXJlc3Rf
bmVhcmVzdCA9IEZBSUwKKzIzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
dGV4dHVyZS5taXBtYXAuMmQubWluX2xvZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzIzNDkgRDNE
MTEgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuM2QubWluX2xv
ZC5uZWFyZXN0X25lYXJlc3QgPSBGQUlMCisyMzQ5IEQzRDExIElOVEVMIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjNkLm1pbl9sb2QubGluZWFyX25lYXJlc3QgPSBGQUlM
CisyMzQ5IEQzRDExIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24u
ZmJvLnJib19tdWx0aXNhbXBsZV80LnByaW1pdGl2ZXMubGluZXMgPSBGQUlMCisyMzQ5IEQzRDEx
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uZmJvLnJib19tdWx0
aXNhbXBsZV80LmludGVycG9sYXRpb24ubGluZXMgPSBGQUlMCisyMzQ5IEQzRDExIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uZmJvLnJib19tdWx0aXNhbXBsZV9t
YXgucHJpbWl0aXZlcy5saW5lcyA9IEZBSUwKKzIzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlX21heC5pbnRlcnBv
bGF0aW9uLmxpbmVzID0gRkFJTAorCisvLyBGYWlsaW5nIFRlc3RzIG9uIFdpbmRvd3MgYW5kIE1h
YyBvbiBJbnRlbCBIRCA2MzAKKzIxMzcgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5zYW1wbGUudGV4MmQuKiA9IEZBSUwKKzIxMzcgTUFD
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5z
YW1wbGUudGV4MmQuKiA9IEZBSUwKKworLy8gTGludXggb25seSBmYWlsdXJlcworCisvLyBVQk8g
dGVzdHMgdHJpZ2dlciBjcmFzaGVzIHdoZW4gZ2V0dGluZyB0aGUgcHJvZ3JhbSBpbmZvIGxvZywg
c2tpcCB0aGVtIHVudGlsIHRoaXMgaXMgZml4ZWQuCisxMzIzIExJTlVYIE9QRU5HTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC51Ym8uKiA9IFNLSVAKKworMTMyMyBMSU5VWCBPUEVOR0wgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRlcHRoX3Rlc3RfY2xhbXAuZGVwdGhfY29tcG9u
ZW50MzJmID0gRkFJTAorMTMyMyBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmRlcHRoLmRlcHRoX3Rlc3RfY2xhbXAuZGVwdGgzMmZfc3RlbmNpbDggPSBGQUlMCisxMzIz
IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfd3Jp
dGVfY2xhbXAuZGVwdGhfY29tcG9uZW50MzJmID0gRkFJTAorMTMyMyBMSU5VWCBPUEVOR0wgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRlcHRoX3dyaXRlX2NsYW1wLmRlcHRoMzJm
X3N0ZW5jaWw4ID0gRkFJTAorMTMyMyBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlX21heC5wcmltaXRpdmVzLnBvaW50
cyA9IEZBSUwKKworLy8gV2hpbGUgbG9vcHMgd2l0aCAnY29udGludWUnIHNlZW0gZmxha3kgb24g
TGludXguIChQb3NzaWJseSBhbGwgR0wgcmVuZGVyZXJzKQorMTMyNCBMSU5VWCBPUEVOR0wgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRp
b25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRl
cmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVgg
T1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3Rh
bnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQg
TElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVf
Y29uc3RhbnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJ
TAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJTAor
MTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53
aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisx
MzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEz
MjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hp
bGVfY29uc3RhbnRfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisx
MzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJ
TAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50
ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfdmVy
dGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVf
ZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2Nv
bnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLnVuY29uZGl0aW9u
YWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5vbmx5
X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9ubHlfY29u
dGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29u
dGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRp
bnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtf
Y29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4ZWRfYnJl
YWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5jb25k
aXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5j
b25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRp
b25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVO
R0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0
ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElO
VVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHlu
YW1pY19pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBP
UEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWlj
X2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BF
TkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19p
dGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5H
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRl
cmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5H
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRl
cmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9Q
RU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNf
aXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElO
VVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVf
Y29uc3RhbnRfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisx
MzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRv
X3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQg
PSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51
ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMudW5jb25kaXRpb25h
bF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5v
bmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5v
bmx5X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25z
LmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlv
bnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVy
YXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BF
TkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3Rh
bnRfaXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQg
TElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hp
bGVfdW5pZm9ybV9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwK
KzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
ZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50
ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51
ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy51bmNvbmRpdGlvbmFs
X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMub25s
eV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5vbmx5
X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91
YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmRv
dWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25z
Lm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVy
YXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBP
UEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5h
bWljX2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBM
SU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGls
ZV9keW5hbWljX2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlM
CisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3Bz
LmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMubG9vcHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGlu
dWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRp
bnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9ubHlfY29udGlu
dWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5kb3VibGVfY29u
dGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuZG91YmxlX2Nv
bnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMubWl4ZWRf
YnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMu
bWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisKKy8vIFBvbHlnb24gb2Zmc2V0
IGZhaWx1cmVzCiszMzA0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5
Z29uX29mZnNldC5mbG9hdDMyX2ZhY3Rvcl8xX3Nsb3BlID0gRkFJTAorMzMwNCBMSU5VWCBPUEVO
R0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZmxvYXQzMl9yZXN1bHRf
ZGVwdGhfY2xhbXAgPSBGQUlMCisKKy8vIEZsYWt5IHRlc3QKKzMzMDUgTElOVVggT1BFTkdMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMuY29tbW9uLnVp
bnRiaXRzdG9mbG9hdC51aW50X2hpZ2hwX3ZlcnRleCA9IEZBSUwKKworLy8gTGludXggSW50ZWwg
c3BlY2lmaWMKKzIzNDkgTElOVVggT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZiby5ibGl0LmRlZmF1bHRfZnJhbWVidWZmZXIqID0gRkFJTAorCisvLyBNYWMgZmFpbHVyZXMg
KG92ZXJicm9hZCBzdXBwcmVzaW9ucykKKzM0NjYgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kKiA9IFNLSVAKKzM0
NjYgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24u
YmluZF9hbGlhc2luZy5tYXhfY29uZCogPSBTS0lQCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVmYXVsdF9mcmFtZWJ1ZmZlci4qID0gRkFJTAorMjEz
NyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3Qub3V0X29m
X2JvdW5kc19yZXZlcnNlXyogPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuaW1wbGVtZW50YXRpb25fbGltaXRzLmNvbXByZXNzZWRfdGV4dHVyZV9mb3JtYXRz
ID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmltcGxlbWVu
dGF0aW9uX2xpbWl0cy5udW1fY29tcHJlc3NlZF90ZXh0dXJlX2Zvcm1hdHMgPSBGQUlMCisyMTM3
IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucHJpbWl0aXZlX3Jlc3RhcnQuKiA9
IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxp
bmthZ2UudmFyeWluZy5ydWxlcy52ZXJ0ZXhfZGVjbGFyZV9mcmFnbWVudF91c2UgPSBGQUlMCisy
MTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLnZh
bGlkLmZ1bmN0aW9uX3BhcmFtZXRlcl9oaWRlc19zdHJ1Y3RfdHlwZV9mcmFnbWVudCA9IEZBSUwK
KzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3Bpbmcu
dmFsaWQuZnVuY3Rpb25fcGFyYW1ldGVyX2hpZGVzX3N0cnVjdF90eXBlX3ZlcnRleCA9IEZBSUwK
KzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3Bpbmcu
dmFsaWQubG9jYWxfaW50X3ZhcmlhYmxlX2hpZGVzX3N0cnVjdF90eXBlX2ZyYWdtZW50ID0gRkFJ
TAorMjEzNyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGlu
Zy52YWxpZC5sb2NhbF9pbnRfdmFyaWFibGVfaGlkZXNfc3RydWN0X3R5cGVfdmVydGV4ID0gRkFJ
TAorMjEzNyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGlu
Zy52YWxpZC5sb2NhbF9zdHJ1Y3RfdmFyaWFibGVfaGlkZXNfc3RydWN0X3R5cGVfZnJhZ21lbnQg
PSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5z
Y29waW5nLnZhbGlkLmxvY2FsX3N0cnVjdF92YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlwZV92ZXJ0
ZXggPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc3RhdGVf
cXVlcnkuaW50ZWdlcnMuY29tcHJlc3NlZF90ZXh0dXJlX2Zvcm1hdHNfZ2V0ZmxvYXQgPSBGQUlM
CisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkuaW50
ZWdlcnMuY29tcHJlc3NlZF90ZXh0dXJlX2Zvcm1hdHNfZ2V0aW50ZWdlciA9IEZBSUwKKzIxMzcg
TUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5pbnRlZ2Vycy5j
b21wcmVzc2VkX3RleHR1cmVfZm9ybWF0c19nZXRpbnRlZ2VyNjQgPSBGQUlMCisyMTM3IE1BQyBP
UEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZGl0aGVyLmRpc2FibGVkLiogPSBGQUlMCisy
MTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRo
X3N0ZW5jaWwuc3RlbmNpbF9kZXB0aF9mdW5jcy5zdGVuY2lsXyogPSBGQUlMCisyMTM3IE1BQyBP
UEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5hcnJheXMuY29tcGxleF9leHBy
ZXNzaW9uLmFuZF9zaG9ydF9jaXJjdWl0c18qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuYXJyYXlzLmNvbXBsZXhfZXhwcmVzc2lvbi5vcl9z
aG9ydF9jaXJjdWl0c18qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMuZnJhZ2RhdGEudmFsaWRfc3RhdGljX2luZGV4ID0gRkFJTAorMjEzNyBN
QUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuc2hvcnRfY2ly
Y3VpdC4qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZi
by5ibGl0LnJlY3Qub3V0X29mX2JvdW5kc19saW5lYXIgPSBGQUlMCisKKy8vIEVUQyBjb21wcmVz
c2VkIGZvcm1hdHMgbm90IHN1cHBvcnRlZAorMzg1MyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLmNvbXByZXNzZWR0ZXhzdWJpbWFnZSogPSBG
QUlMCiszODUzIE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBp
LnRleHR1cmUuZ2VuZXJhdGVtaXBtYXAgPSBGQUlMCisKKy8vIE1hYyBBTUQgZmFpbHVyZXMKKzIx
MzcgTUFDIE9QRU5HTCBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuY2xpcHBpbmcucG9pbnQu
d2lkZV9wb2ludF9jbGlwID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIEFNRCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5jbGlwcGluZy5wb2ludC53aWRlX3BvaW50X2NsaXBfdmlld3BvcnRfY2VudGVy
ID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5jbGlw
cGluZy5wb2ludC53aWRlX3BvaW50X2NsaXBfdmlld3BvcnRfY29ybmVyID0gRkFJTAorMjEzNyBN
QUMgT1BFTkdMIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm91dF9v
Zl9ib3VuZHNfbmVhcmVzdCA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBBTUQgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdo
cF8qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQuKiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBBTUQg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLiogPSBGQUlMCisKKzMz
MTcgTUFDIE9QRU5HTCBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGlu
X2Z1bmN0aW9ucy5wcmVjaXNpb24uY2VpbC4qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIEFNRCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVw
cm9qbG9kLmlzYW1wbGVyM2RfdmVydGV4ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIEFNRCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9q
bG9kLnVzYW1wbGVyM2RfdmVydGV4ID0gRkFJTAorCisvLyBNYWMgSW50ZWwgY3Jhc2hlcworMjEz
NyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuZGlzY2Fy
ZC5mdW5jdGlvbl9zdGF0aWNfbG9vcF9uZXZlciA9IFNLSVAKKzIxMzcgTUFDIE9QRU5HTCBJTlRF
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmRpc2NhcmQuZHluYW1pY19sb29wX25l
dmVyID0gU0tJUAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMuZGlzY2FyZC5zdGF0aWNfbG9vcF9uZXZlciA9IFNLSVAKKworLy8gTWFjIEludGVs
IGZhaWx1cmVzCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
Y29sb3JfY2xlYXIuKiA9IEZBSUwKKy8vIEFsbCB0aGUgb3V0IG9mIGJvdW5kcyB2YXJpYW50cyBm
YWlsLgorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5i
bGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9tYWdfcmV2ZXJzZV9zcmNfZHN0X3kgPSBGQUlM
CisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQu
cmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X21pbl9yZXZlcnNlX3NyY19kc3RfeSA9IEZBSUwKKy8v
IEZhaWxzIGZvciBhbGwgaW50ZWdlciBmb3JtYXRzCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0
aW9ucy5ub25lX3Jib19ub25lX25vbmUgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0
aW9ucy5ub25lX3RleF9ub25lX25vbmUgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZGVmYXVsdF9yZW5kZXJfd2l0aF91
bml0cyA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5wb2x5Z29uX29mZnNldC5maXhlZDE2X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAorMjEzNyBN
QUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZp
eGVkMjRfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24u
Y29zLmhpZ2hwXyogPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24uc2luLmhpZ2hwXyog
PSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5pbnZhcmlhbmNlLmxvd3AuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKKzIxMzcg
TUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFu
Y2UubG93cC5jb21tb25fc3ViZXhwcmVzc2lvbl8zID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1wLmNv
bW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1YmV4
cHJlc3Npb25fMyA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9
IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLmludmFyaWFuY2UuaGlnaHAuY29tbW9uX3N1YmV4cHJlc3Npb25fMyA9IEZBSUwKKzIxMzcg
TUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleGVsZmV0Y2hvZmZzZXQudXNhbXBsZXIyZF9mcmFnbWVudCA9IEZBSUwKKzIx
MzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1
cmVfZnVuY3Rpb25zLnRleGVsZmV0Y2hvZmZzZXQudXNhbXBsZXIyZF92ZXJ0ZXggID0gRkFJTAor
MjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQudXNhbXBsZXIzZF9mcmFnbWVudCAgPSBG
QUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC51c2FtcGxlcjNkX2ZyYWdtZW50ICA9IEZB
SUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
LnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkLnVzYW1wbGVyY3ViZV9mcmFnbWVudCAgPSBG
QUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC51c2FtcGxlcmN1YmVfdmVydGV4ICA9IEZB
SUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
LnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2QudXNhbXBsZXJjdWJlX2ZyYWdtZW50ICA9IEZB
SUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
LnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2QudXNhbXBsZXJjdWJlX3ZlcnRleCAgPSBGQUlM
CisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50
ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWRvZmZzZXQudXNhbXBsZXIzZF9mcmFnbWVu
dCAgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWQudXNhbXBsZXIzZF9mcmFn
bWVudCAgPSBGQUlMCisvLyBGYWlscyB0aGUgaW50ZWdlciBucG90IGNhc2VzID0gRkFJTAorMjEz
NyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuZm9ybWF0
LnNpemVkLmN1YmUuKiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmljYXRpb24uYmFzaWNfY29weXRleGltYWdlMmQuY3Vi
ZV9hbHBoYSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLnNwZWNpZmljYXRpb24uYmFzaWNfY29weXRleGltYWdlMmQuY3ViZV9sdW1p
bmFuY2UgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLmJhc2ljX2NvcHl0ZXhpbWFnZTJkLmN1YmVfbHVtaW5h
bmNlX2FscGhhID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi5iYXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX3Jn
YiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLnNwZWNpZmljYXRpb24uYmFzaWNfY29weXRleGltYWdlMmQuY3ViZV9yZ2JhID0gRkFJ
TAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
c3BlY2lmaWNhdGlvbi5yYW5kb21fdGV4aW1hZ2UyZC4yZF81ID0gRkFJTAorMjEzNyBNQUMgT1BF
TkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi50
ZXhpbWFnZTNkXyogPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLnRleHN1YmltYWdlM2RfKiA9IEZBSUwKKzIx
MzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51Ym8uKiA9IEZBSUwK
KzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRl
eHR1cmVfZnVuY3Rpb25zLnRleGVsZmV0Y2hvZmZzZXQuKiA9IEZBSUwKKworMzMxNyBNQUMgT1BF
TkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9j
b25zaXN0ZW5jeV9tYWcgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X21hZ19yZXZlcnNl
X3NyY194ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9tYWdfcmV2ZXJzZV9kc3RfeCA9
IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8u
YmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfbWFnX3JldmVyc2Vfc3JjX2RzdF94ID0gRkFJ
TAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0
LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9taW4gPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5U
RUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3Rl
bmN5X21pbl9yZXZlcnNlX3NyY194ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9taW5f
cmV2ZXJzZV9kc3RfeCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfbWluX3JldmVyc2Vf
c3JjX2RzdF94ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9vdXRfb2ZfYm91bmRzX21h
ZyA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5kc19tYWdfcmV2ZXJz
ZV9zcmNfeCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5kc19tYWdf
cmV2ZXJzZV9kc3RfeCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5k
c19tYWdfcmV2ZXJzZV9zcmNfZHN0X3ggPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X291
dF9vZl9ib3VuZHNfbWFnX3JldmVyc2Vfc3JjX2RzdF95ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdM
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJkX2FycmF5
LmNvbWJpbmF0aW9ucy5saW5lYXJfbmVhcmVzdF8qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJkLmNvbWJpbmF0
aW9ucy5saW5lYXJfbmVhcmVzdF8qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjNkLmNvbWJpbmF0aW9ucy5saW5l
YXJfbmVhcmVzdF8qID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLmN1YmUuY29tYmluYXRpb25zLmxpbmVhcl9uZWFy
ZXN0XyogPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwudGV4dHVyZS5taXBtYXAuY3ViZS5tYXhfbGV2ZWwubGluZWFyX25lYXJlc3QgPSBGQUlMCisz
MzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0
ZXguMmRfYXJyYXkuZmlsdGVyaW5nLmxpbmVhcl9uZWFyZXN0XyogPSBGQUlMCiszMzE3IE1BQyBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguMmQuZmls
dGVyaW5nLmxpbmVhcl9uZWFyZXN0XyogPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguM2QuZmlsdGVyaW5nLmxpbmVhcl9u
ZWFyZXN0XyogPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX25lYXJlc3RfKiA9IEZB
SUwKKworMzUzMSBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5p
bnZhbGlkYXRlLmZvcm1hdC5yZ2I4ID0gRkFJTAorMzUzMSBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVzaXplLnRleDJkX3JnYjE2ZiA9IEZBSUwK
KzM1MzEgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8ucmVuZGVy
LnJlc2l6ZS50ZXgyZF9yZ2I4ID0gRkFJTAorCisvLyBBbmRyb2lkIG9ubHkgZmFpbHVyZXMKKzE0
ODcgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3Mu
cmVuZGVyYWJsZS50ZXh0dXJlLmNvbG9yMC5yZWRfaGFsZl9mbG9hdF9vZXMgPSBGQUlMCisxNDg3
IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJl
bmRlcmFibGUudGV4dHVyZS5jb2xvcjAucmdfaGFsZl9mbG9hdF9vZXMgPSBGQUlMCisxNDg3IEFO
RFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRl
cmFibGUudGV4dHVyZS5zdGVuY2lsLmRlcHRoX3N0ZW5jaWxfdW5zaWduZWRfaW50XzI0XzggPSBG
QUlMCisxNDg3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxl
dGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9zdGVuY2lsX3Vuc2lnbmVkX2lu
dF8yNF84ID0gRkFJTAorMTQ4NyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhfY29tcG9uZW50
X3Vuc2lnbmVkX3Nob3J0ID0gRkFJTAorMTQ4NyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhf
Y29tcG9uZW50X3Vuc2lnbmVkX2ludCA9IEZBSUwKKzE5NjQgQU5EUk9JRCBHTEVTIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLm9jY2x1c2lvbl9xdWVyeS4qID0gRkFJTAorMTk2MiBBTkRST0lEIEdM
RVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNzb3IuY29uZGl0aW9u
YWxfaW5jbHVzaW9uLmJhc2ljXzJfZnJhZ21lbnQgPSBGQUlMCisxOTYyIEFORFJPSUQgR0xFUyA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5jb25kaXRpb25hbF9p
bmNsdXNpb24uYmFzaWNfMl92ZXJ0ZXggPSBGQUlMCisxOTYyIEFORFJPSUQgR0xFUyA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5jb25kaXRpb25hbF9pbmNsdXNp
b24uZGVmaW5lZF9tYWNyb191bmRlZl9mcmFnbWVudCA9IEZBSUwKKzE5NjIgQU5EUk9JRCBHTEVT
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vzc29yLmNvbmRpdGlvbmFs
X2luY2x1c2lvbi5kZWZpbmVkX21hY3JvX3VuZGVmX3ZlcnRleCA9IEZBSUwKKzE5NjMgQU5EUk9J
RCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucmV0dXJuLmNvbmRpdGlvbmFs
X3JldHVybl9hbHdheXNfZnJhZ21lbnQgPSBGQUlMCisxOTYzIEFORFJPSUQgR0xFUyA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5jb25kaXRpb25hbF9yZXR1cm5fYWx3YXlz
X3ZlcnRleCA9IEZBSUwKKzE5NjMgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMucmV0dXJuLm91dHB1dF93cml0ZV9hbHdheXNfZnJhZ21lbnQgPSBGQUlMCisxOTYz
IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5vdXRw
dXRfd3JpdGVfYWx3YXlzX3ZlcnRleCA9IEZBSUwKKzE5NjMgQU5EUk9JRCBHTEVTIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucmV0dXJuLm91dHB1dF93cml0ZV9pbl9mdW5jX2Fsd2F5
c19mcmFnbWVudCA9IEZBSUwKKzE5NjMgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMucmV0dXJuLm91dHB1dF93cml0ZV9pbl9mdW5jX2Fsd2F5c192ZXJ0ZXggPSBG
QUlMCisxNTI5IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1p
cG1hcC4yZC5nZW5lcmF0ZS5hOF8qID0gRkFJTAorMTUyOSBBTkRST0lEIEdMRVMgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUubDhfKiA9IEZBSUwKKzE1
MjkgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJk
LmdlbmVyYXRlLmxhODhfKiA9IEZBSUwKKzE1MjkgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUuYThfKiA9IEZBSUwKKzE1Mjkg
QU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUu
Z2VuZXJhdGUubDhfKiA9IEZBSUwKKzE1MjkgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUubGE4OF8qID0gRkFJTAorMTUzMSBB
TkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLmJh
c2ljX3R5cGVzLmludGVybGVhdmVkLiogPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2suYmFzaWNfdHlwZXMuc2VwYXJhdGUu
KiA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5z
Zm9ybV9mZWVkYmFjay5pbnRlcnBvbGF0aW9uLiogPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucG9pbnRfc2l6ZS4qID0g
RkFJTAorMTUzMSBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3Jt
X2ZlZWRiYWNrLnBvc2l0aW9uLiogPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucmFuZG9tLmludGVybGVhdmVkLmxpbmVz
LjUgPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFu
c2Zvcm1fZmVlZGJhY2sucmFuZG9tLmludGVybGVhdmVkLmxpbmVzLjggPSBGQUlMCisxNTMxIEFO
RFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucmFu
ZG9tLmludGVybGVhdmVkLmxpbmVzLjEwID0gRkFJTAorMTUzMSBBTkRST0lEIEdMRVMgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJhbmRvbS5pbnRlcmxlYXZlZC5w
b2ludHMuNiA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRyYW5zZm9ybV9mZWVkYmFjay5yYW5kb20uaW50ZXJsZWF2ZWQucG9pbnRzLjcgPSBGQUlMCisx
NTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJh
Y2sucmFuZG9tLmludGVybGVhdmVkLnRyaWFuZ2xlcy4yID0gRkFJTAorMTUzMSBBTkRST0lEIEdM
RVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJhbmRvbS5zZXBh
cmF0ZS5saW5lcy40ID0gRkFJTAorMTUzMSBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJhbmRvbS5zZXBhcmF0ZS5saW5lcy42ID0gRkFJTAor
MTUzMSBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRi
YWNrLnJhbmRvbS5zZXBhcmF0ZS5saW5lcy44ID0gRkFJTAorMTUzMSBBTkRST0lEIEdMRVMgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJhbmRvbS5zZXBhcmF0ZS5w
b2ludHMuNCA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRyYW5zZm9ybV9mZWVkYmFjay5yYW5kb20uc2VwYXJhdGUudHJpYW5nbGVzLjQgPSBGQUlMCisy
NjI5IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnN0cnVjdC5s
b2NhbC5hcnJheV9tZW1iZXJfZXF1YWxpdHlfZnJhZ21lbnQgPSBTS0lQCisyNjI5IEFORFJPSUQg
R0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnN0cnVjdC5sb2NhbC5hcnJheV9t
ZW1iZXJfZXF1YWxpdHlfdmVydGV4ID0gU0tJUAorMjYyNyBBTkRST0lEIEdMRVMgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5hcnJheXMuY29tcGxleF9leHByZXNzaW9uLmFuZF9zaG9y
dF9jaXJjdWl0c18qID0gRkFJTAorMjYyNyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5hcnJheXMuY29tcGxleF9leHByZXNzaW9uLm9yX3Nob3J0X2NpcmN1aXRz
XyogPSBGQUlMCisyNjI4IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLmluZGV4aW5nLm1vcmVkeW5hbWljLnVzZXJfZGVmaW5lZF9mbmNhbGxfaW5vdXRfcGFyYW1l
dGVyX2ZyYWdtZW50ID0gRkFJTAorMjYyOCBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5pbmRleGluZy5tb3JlZHluYW1pYy51c2VyX2RlZmluZWRfZm5jYWxsX2lu
b3V0X3BhcmFtZXRlcl93aXRoX2luZGV4X3dpdGhfc2lkZV9lZmZlY3RzX2ZyYWdtZW50ID0gRkFJ
TAorMjYyOCBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbmRl
eGluZy5tb3JlZHluYW1pYy51c2VyX2RlZmluZWRfZm5jYWxsX291dF9wYXJhbWV0ZXJfZnJhZ21l
bnQgPSBGQUlMCisyNjI3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLmxvb3BzLnNob3J0X2NpcmN1aXQuKiA9IEZBSUwKKworMjU2NyBBTkRST0lEIEdMRVMgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUu
ZGVwdGgucmVkX3Vuc2lnbmVkX2J5dGUgPSBGQUlMCisyNTY3IEFORFJPSUQgR0xFUyA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0
aC5yZ191bnNpZ25lZF9ieXRlID0gRkFJTAorMjU2NyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNpbC5y
ZWRfdW5zaWduZWRfYnl0ZSA9IEZBSUwKKzI1NjcgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0ZW5jaWwucmdf
dW5zaWduZWRfYnl0ZSA9IEZBSUwKKworLy8gTmV4dXMgNXggZmFpbHVyZXMKKzMzMDggTkVYVVM1
WCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2Fs
aWFzaW5nLmNvbmQqID0gRkFJTAorMzMwOCBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmQqID0gRkFJTAor
MzMwOCBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQu
ZGVmYXVsdF9yZXN1bHRfZGVwdGhfY2xhbXAgPSBGQUlMCiszMzA4IE5FWFVTNVggR0xFUyA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC5maXhlZDI0X3Jlc3VsdF9kZXB0aF9j
bGFtcCA9IEZBSUwKKzMzMDggTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRy
YW5zZm9ybV9mZWVkYmFjay5yYW5kb20uaW50ZXJsZWF2ZWQubGluZXMuMyA9IEZBSUwKKzMzMDgg
TkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5zZm9ybV9mZWVkYmFjay5y
YW5kb20uaW50ZXJsZWF2ZWQudHJpYW5nbGVzLjggPSBGQUlMCiszMzA4IE5FWFVTNVggR0xFUyA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucmFuZG9tLmludGVybGVh
dmVkLnRyaWFuZ2xlcy4xMCA9IEZBSUwKKzIzMjIgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubWV0YW1vcnBoaWMuKiA9IFNLSVAKKworLy8gU2VlbXMgdG8gZmFp
bCBvbiBhbGwgZGVza3RvcCBHTAorMjk2MCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmJsaXQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYTggPSBGQUlMCisyOTYwIE9Q
RU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZWZhdWx0X2ZyYW1lYnVmZmVy
LnNyZ2I4X2FscGhhOF9saW5lYXJfb3V0X29mX2JvdW5kc19ibGl0X3RvX2RlZmF1bHQgPSBGQUlM
CisyOTYwIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZWZhdWx0X2Zy
YW1lYnVmZmVyLnNyZ2I4X2FscGhhOF9saW5lYXJfc2NhbGVfYmxpdF90b19kZWZhdWx0ID0gRkFJ
TAorMjk2MCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVmYXVsdF9m
cmFtZWJ1ZmZlci5zcmdiOF9hbHBoYThfbmVhcmVzdF9zY2FsZV9ibGl0X3RvX2RlZmF1bHQgPSBG
QUlMCisKKy8vIEZhaWxzIG9uIFdpbmRvd3MgKyBMaW51eC4KKzIyMjIgT1BFTkdMIE5WSURJQSA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnNhbXBsZXMucmJvMl9yYm8y
X3JibzAgPSBGQUlMCisyMjIyIE9QRU5HTCBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmNvbXBsZXRlbmVzcy5zYW1wbGVzLnJibzFfcmJvMl9yYm8wID0gRkFJTAorCisvLyBHZW5l
cmFsIFZ1bGthbiBmYWlsdXJlcworCisvLyBUZXN0cyBmYWlsaW5nIGR1ZSB0byB0aGUgImZsYXQi
IHF1YWxpZmllciBpbiB0aGUgc2hhZGVyOgorMzY3NyBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3V0LmJhc2ljLmludC4qID0gRkFJTAorMzY3NyBWVUxLQU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3V0LmJhc2ljLnVpbnQuKiA9IEZBSUwKKzM2Nzcg
VlVMS0FOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X291dC5hcnJheS5pbnQqID0g
RkFJTAorMzY3NyBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3V0LmFy
cmF5LnVpbnQqID0gRkFJTAorMzY3NyBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3V0LnJhbmRvbS4qID0gRkFJTAorCisvLyBOVklESUEgRGVwdGgvU3RlbmNpbCB0ZXh0
dXJlczoKKzM5NzAgVlVMS0FOIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVw
dGguZGVwdGhfd3JpdGVfY2xhbXAuZGVwdGhfY29tcG9uZW50MzJmID0gRkFJTAorMzk3MCBWVUxL
QU4gTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5kZXB0aF93cml0ZV9j
bGFtcC5kZXB0aDMyZl9zdGVuY2lsOCA9IEZBSUwKKzM5NzAgVlVMS0FOIE5WSURJQSA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfdGVzdF9jbGFtcC5kZXB0aF9jb21wb25l
bnQzMmYgPSBGQUlMCiszOTcwIFZVTEtBTiBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmRlcHRoLmRlcHRoX3Rlc3RfY2xhbXAuZGVwdGgzMmZfc3RlbmNpbDggPSBGQUlMCisKKy8v
IFBvbHlnb24gb2Zmc2V0OgorMzk3MCBWVUxLQU4gTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnBvbHlnb25fb2Zmc2V0LmZsb2F0MzJfcmVzdWx0X2RlcHRoX2NsYW1wID0gRkFJTAorMzk3
MCBWVUxLQU4gTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZs
b2F0MzJfZmFjdG9yXzFfc2xvcGUgPSBGQUlMCisKKy8vIEZsYXQgc2hhZGluZzoKKzM0MzAgVlVM
S0FOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uZmxhdHNoYWRpbmcuKiA9
IEZBSUwKKworLy8gTWlzYyB1bmltcGxlbWVudGVkOgorCisvLyBGYWlsdXJlcyBvbiBuZXdlciBO
VklESUEgZHJpdmVycyAoNDExLjk1KSBhbmQgcGFzc2VzIG9uIG9sZGVyIGRyaXZlcnMgKDM4OC4x
NikuICBQYXNzZXMgb24gNDE4LjEyIG9uIExpbnV4LgorMjk3NiBWVUxLQU4gTlZJRElBIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS4qID0gRkFJTAorLy8gRmFpbHMg
b24gNDMxLjAyIE5WSURJQSBkcml2ZXIKKzM3NDggVlVMS0FOIFdJTiBOVklESUEgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC4qID0g
RkFJTAorCisvLyBBbmRyb2lkIFZ1bGthbiBmYWlsdXJlcworMzMwNiBBTkRST0lEIFZVTEtBTiA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC4qID0gRkFJTAorMjgzMCBBTkRS
T0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLmZiby5yYm9f
c2luZ2xlc2FtcGxlLnByaW1pdGl2ZXMubGluZXMgPSBGQUlMCisyODMwIEFORFJPSUQgVlVMS0FO
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uZmJvLnRleHR1cmVfMmQucHJp
bWl0aXZlcy5saW5lcyA9IEZBSUwKKzI4MzAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwucmFzdGVyaXphdGlvbi5wcmltaXRpdmVzLmxpbmUqID0gRkFJTAorMjgwOCBBTkRS
T0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fdmFyaWFi
bGUuZnJhZ2Nvb3JkX3cgPSBGQUlMCisKKy8vIFBpeGVsIGRyaXZlciBpc3N1ZXMKKzQwMjQgUElY
RUwyT1JYTCBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZHJhdy5yYW5kb20uNSA9IFNL
SVAKKzQwMjQgUElYRUwyT1JYTCBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZHJhdy5y
YW5kb20uNDkgPSBTS0lQCis0MDI0IFBJWEVMMk9SWEwgVlVMS0FOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmRyYXcucmFuZG9tLjk2ID0gRkFJTAorCisvLyBGaXhlZCBpbiBsYXRlciBkcml2ZXIg
dmVyc2lvbnMuCisyNzI3IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMuYnVpbHRpbl92YXJpYWJsZS5wb2ludGNvb3JkID0gRkFJTAorCisvLyAgTmV3IG9yIGJy
b2tlbiBmb3JtYXRzIGluIEVTIDMuMCwgbWF5IGJlIGl0IHJlbGF0ZXMgdG8gVktfSU1BR0VfVVNB
R0VfU1RPUkFHRV9CSVQKKzM4MTYgVlVMS0FOIFBJWEVMMk9SWEwgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLnRleHN0b3JhZ2UzZC5mb3JtYXQucmdiYTE2KiA9
IEZBSUwKKzM4MTYgVlVMS0FOIFBJWEVMMk9SWEwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4
dHVyZS5zcGVjaWZpY2F0aW9uLnRleHN0b3JhZ2UzZC5mb3JtYXQucmdiMTYqID0gRkFJTAorMzgx
NiBWVUxLQU4gUElYRUwyT1JYTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNp
ZmljYXRpb24udGV4c3RvcmFnZTNkLmZvcm1hdC5yZzMyKiA9IEZBSUwKKworLy8gRmFpbGluZyBv
biB0aGUgUGl4ZWwgMiBkdWUgdG8gUXVhbGNvbW0gVnVsa2FuIGRyaXZlcgorNDM0NCBWVUxLQU4g
QU5EUk9JRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24u
YmFzaWNfc2hhZGVyLjU0ID0gRkFJTAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMucmFuZG9tLjM1ID0gRkFJTAorNDM0NCBWVUxLQU4gQU5E
Uk9JRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMucmFuZG9tLjU2ID0gRkFJ
TAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMucmFuZG9tLjYyID0gRkFJTAorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMucmFuZG9tLjY4ID0gRkFJTAorCisKKy8vIEZhaWxzIG9ubHkg
d2l0aCBTd2lmdFNoYWRlcjoKKworLy8gVGhlc2Ugb25seSBmYWlsIGZvciBhIDU2NSBjb25maWcK
KzQwMTYgU1dJRlRTSEFERVIgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmlu
dGVyYWN0aW9uLmJhc2ljX3NoYWRlci4yNyA9IEZBSUwKKzQwMTYgU1dJRlRTSEFERVIgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmludGVyYWN0aW9uLmJhc2ljX3NoYWRlci44
MCA9IEZBSUwKKworLy8gRmFpbHMgb24gU3dBTkdMRSBib3RzCis0NDE4IFNXSUZUU0hBREVSIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5idWZmZXIuZnJhbWVidWZmZXJfdGV4
dHVyZV9sYXllciA9IEZBSUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMudHh0
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2to
cl9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0NmFkZDNhMTU3YjQz
YWE0MTYxNzQ0OTFhZjg1MjJiMTgzOGQxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJfZ2xlczJfdGVzdF9l
eHBlY3RhdGlvbnMudHh0CkBAIC0wLDAgKzEsMzMgQEAKKy8vIENvcHlyaWdodCAyMDE5IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUaGlzIGZpbGUgY29udGFp
bnMgYSBsaXN0IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBUaGUgZXhwZWN0
ZWQKKy8vIGZvcm1hdCBpczoKKy8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVTVF9OQU1FfSA9
IHtQQVNTLEZBSUwsRkxBS1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1PRElGSUVSUyBjYW4gYmUg
YSBjb21iaW5hdGlvbiBvZiB0aGUgYmVsb3cgbGlzdCwgY29tYmluZWQgd2l0aCBhIGxvZ2ljYWwg
QU5EOgorLy8gIFdJTiBYUCBWSVNUQSBXSU43IFdJTjggV0lOMTAKKy8vICBNQUMgTEVPUEFSRCBT
Tk9XTEVPUEFSRCBMSU9OIE1PVU5UQUlOTElPTiBNQVZFUklDS1MgWU9TRU1JVEUgRUxDQVBJVEFO
IFNJRVJSQSBISUdIU0lFUlJBIE1PSkFWRQorLy8gIExJTlVYIENIUk9NRU9TIEFORFJPSUQKKy8v
ICBOVklESUEgQU1EIElOVEVMCisvLyAgREVCVUcgUkVMRUFTRQorLy8gIEQzRDkgRDNEMTEgT1BF
TkdMIEdMRVMgVlVMS0FOCisvLyAgTkVYVVM1WCBQSVhFTDJPUlhMCisvLyAgUVVBRFJPUDQwMAor
Ly8KKy8vCisvLyBURVNUX05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVzdCBuYW1lLCBvciBoYXZl
IGEgJyonIGluIHRoZSBlbmQsIHdoaWNoCisvLyBpbmRpY2F0ZXMgYSBwcmVmaXggbWF0Y2hpbmcu
CisvLworLy8gRXhhbXBsZXM6CisvLyBmYWlscyBvbiBib3RoIHdpbmRvd3MgYW5kIG1hYyAoY3Jh
c2gpCisvLyAgOTE1MzAgV0lOIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gU0tJUAorLy8gIDkx
NTMwIE1BQyA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFNLSVAKKy8vIGZhaWxzIG9uIHdpbmRv
d3MgdXNpbmcgTlZJRElBIEdQVXMKKy8vICA5MTUzMyBXSU4gTlZJRElBIDogZ2xfbWluX3VuaWZv
cm1zID0gRkFJTAorLy8gZmFpbHMgb24gTmV4dXM1WCB3aXRoIEdMRVMgYmFja2VuZCAoaGFuZ3Mp
CisvLyAgOTE1MzEgTkVYVVM1WCBHTEVTIDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJUAorCisv
LyBEZXB0aC9zdGVuY2lsIHJlbGF0ZWQgZmFpbHVyZXMuCiszNDU3IFZVTEtBTiA6IEtIUi1HTEVT
Mi5jb3JlLmludGVybmFsZm9ybWF0LnRleHR1cmUyZC5kZXB0aF9zdGVuY2lsX3Vuc2lnbmVkX2lu
dF8yNF84X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfa2hyX2dsZXMzMV90ZXN0X2V4cGVj
dGF0aW9ucy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBw
b3J0L2RlcXBfa2hyX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdm
NzRjYTBhMmY0ODEzODQyMjdiZDE0NzM5YTkwOWE4OWMwYjllNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJf
Z2xlczMxX3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMCwwICsxLDE1MiBAQAorLy8gQ29weXJp
Z2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKy8vIFRo
aXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgZGVmZWN0aXZlIGRFUVAgY29uZm9ybWFuY2UgdGVz
dHMuIFRoZSBleHBlY3RlZAorLy8gZm9ybWF0IGlzOgorLy8gIHtCVUcjfSB7TU9ESUZJRVJTfSA6
IHtURVNUX05BTUV9ID0ge1BBU1MsRkFJTCxGTEFLWSxUSU1FT1VULFNLSVB9CisvLworLy8gTU9E
SUZJRVJTIGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBiZWxvdyBsaXN0LCBjb21iaW5lZCB3
aXRoIGEgbG9naWNhbCBBTkQ6CisvLyAgV0lOIFhQIFZJU1RBIFdJTjcgV0lOOCBXSU4xMAorLy8g
IE1BQyBMRU9QQVJEIFNOT1dMRU9QQVJEIExJT04gTU9VTlRBSU5MSU9OIE1BVkVSSUNLUyBZT1NF
TUlURSBFTENBUElUQU4gU0lFUlJBIEhJR0hTSUVSUkEgTU9KQVZFCisvLyAgTElOVVggQ0hST01F
T1MgQU5EUk9JRAorLy8gIE5WSURJQSBBTUQgSU5URUwKKy8vICBERUJVRyBSRUxFQVNFCisvLyAg
RDNEOSBEM0QxMSBPUEVOR0wgR0xFUyBWVUxLQU4KKy8vICBORVhVUzVYIFBJWEVMMk9SWEwKKy8v
ICBRVUFEUk9QNDAwCisvLworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0
IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHBy
ZWZpeCBtYXRjaGluZy4KKy8vCisvLyBFeGFtcGxlczoKKy8vIGZhaWxzIG9uIGJvdGggd2luZG93
cyBhbmQgbWFjIChjcmFzaCkKKy8vICA5MTUzMCBXSU4gOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQg
PSBTS0lQCisvLyAgOTE1MzAgTUFDIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gU0tJUAorLy8g
ZmFpbHMgb24gd2luZG93cyB1c2luZyBOVklESUEgR1BVcworLy8gIDkxNTMzIFdJTiBOVklESUEg
OiBnbF9taW5fdW5pZm9ybXMgPSBGQUlMCisvLyBmYWlscyBvbiBOZXh1czVYIHdpdGggR0xFUyBi
YWNrZW5kIChoYW5ncykKKy8vICA5MTUzMSBORVhVUzVYIEdMRVMgOiBjb25mb3JtYW5jZV9tb3Jl
XyogPSBTS0lQCisKKy8vIEZvciBub3cgd2Ugb25seSBsb2cgVnVsa2FuIHRlc3QgZXhwZWN0YXRp
b25zLiBNb3JlIGJhY2stZW5kcyBjYW4gZm9sbG93IGFzIHdlIG5lZWQgdGhlbS4KKworCisvLy8v
CisvLy8vIEZhaWx1cmVzIGJsb2NraW5nIGFuIG9mZmljaWFsIEdMRVMgMy4xIGNvbmZvcm1hbmNl
IHJ1biBvbiBTd2lmdFNoYWRlcgorLy8vLworCisvLyBEaXNwYXRjaCBpbmRpcmVjdDoKKzM1NzAg
VlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLmNvbXB1dGVfc2hhZGVyLmJ1aWxkLXNlcGFyYWJsZSA9
IFNLSVAKKzM1NzAgVlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLmNvbXB1dGVfc2hhZGVyLnNzby1j
b21wdXRlLXBpcGVsaW5lID0gU0tJUAorMzU3MCBWVUxLQU4gOiBLSFItR0xFUzMxLmNvcmUuY29t
cHV0ZV9zaGFkZXIuc3NvLWNhc2UyID0gU0tJUAorMzU3MCBWVUxLQU4gOiBLSFItR0xFUzMxLmNv
cmUuY29tcHV0ZV9zaGFkZXIuc3NvLWNhc2UzID0gU0tJUAorLy8gUHJvZ3JhbSBQaXBlbGluZSBP
YmplY3RzOgorMzU3MCBWVUxLQU4gOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2F0b21pY19jb3Vu
dGVycy5hZHZhbmNlZC11c2FnZS1tYW55LWRyYXctY2FsbHMyID0gRkFJTAorMzU3MCBWVUxLQU4g
OiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2F0b21pY19jb3VudGVycy5hZHZhbmNlZC11c2FnZS1t
YW55LWRpc3BhdGNoZXMgPSBGQUlMCiszNTcwIFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS52ZXJ0
ZXhfYXR0cmliX2JpbmRpbmcuYmFzaWMtdXNhZ2UgPSBGQUlMCiszNTcwIFZVTEtBTiA6IEtIUi1H
TEVTMzEuY29yZS5zaGFkZXJfaW1hZ2VfbG9hZF9zdG9yZS5hZHZhbmNlZC1zc28tc2ltcGxlID0g
RkFJTAorLy8gU2VwYXJhdGUgc2hhZGVyIG9iamVjdHM6CiszNTcwIFZVTEtBTiA6IEtIUi1HTEVT
MzEuY29yZS5zZXBzaGFkZXJvYmpzKiA9IEZBSUwKKworLy8gU2hhZGVyIHN1cHBvcnQ6Cis0NDAy
IDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9iaXRmaWVsZF9vcGVyYXRpb24uZnJleHAuKiA9IFNL
SVAKKzQ0MDIgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2JpdGZpZWxkX29wZXJhdGlvbi51YWRk
Q2FycnkuKiA9IFNLSVAKKzQ0MDIgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2JpdGZpZWxkX29w
ZXJhdGlvbi51c3ViQm9ycm93LiogPSBTS0lQCis0NDAyIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRl
cl9iaXRmaWVsZF9vcGVyYXRpb24udW11bEV4dGVuZGVkLiogPSBTS0lQCis0NDAyIDogS0hSLUdM
RVMzMS5jb3JlLnNoYWRlcl9iaXRmaWVsZF9vcGVyYXRpb24uaW11bEV4dGVuZGVkLiogPSBTS0lQ
CisKKy8vIFByb2dyYW0gaW50ZXJmYWNlIHF1ZXJ5LgorMzU5NiBWVUxLQU4gOiBLSFItR0xFUzMx
LmNvcmUucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkuKiA9IEZBSUwKKworLy8gSW1hZ2UgcmVsYXRl
ZCBmYWlsdXJlcworCis0MzE1IFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfaW1hZ2Vf
bG9hZF9zdG9yZS5hZHZhbmNlZC1tZW1vcnktb3JkZXItdnNmcyA9IEZBSUwKKworLy8gVW5pbXBs
ZW1lbnRlZCBnbFZhbGlkYXRlQ3JlYXRlU2hhZGVyUHJvZ3JhbXY6Cis0MTQ2IDogS0hSLUdMRVMz
MS5jb3JlLnNoYWRlcl9zdG9yYWdlX2J1ZmZlcl9vYmplY3QuYmFzaWMtc3ludGF4U1NPID0gRkFJ
TAorNDE0NiA6IEtIUi1HTEVTMzEuY29yZS52ZXJ0ZXhfYXR0cmliX2JpbmRpbmcuYWR2YW5jZWQt
YmluZGluZ1VwZGF0ZSA9IEZBSUwKKzQxNDYgOiBLSFItR0xFUzMxLmNvcmUudmVydGV4X2F0dHJp
Yl9iaW5kaW5nLmFkdmFuY2VkLWxhcmdlU3RyaWRlQW5kT2Zmc2V0c05ld0FuZExlZ2FjeUFQSSA9
IEZBSUwKKworLy8gRmFpbGluZyBvbiBTd2lmdFNoYWRlcgorNDQxNCBTV0lGVFNIQURFUiA6IEtI
Ui1HTEVTMzEuY29yZS5zaGFkZXJfaW1hZ2VfbG9hZF9zdG9yZS5hZHZhbmNlZC1hbGxNaXBzLWNz
ID0gU0tJUAorNDQxNCBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfaW1hZ2Vf
bG9hZF9zdG9yZS5hZHZhbmNlZC1hbGxNaXBzLWZzID0gU0tJUAorCisvLy8vCisvLy8vIEdlbmVy
YWwgVnVsa2FuIGV4cGVjdGF0aW9ucworLy8vLworCisvLyBGcmFtZWJ1ZmZlciB3aXRob3V0IGF0
dGFjaG1lbnRzOgorMzU3OSBWVUxLQU4gOiBLSFItR0xFUzMxLmNvcmUuZnJhbWVidWZmZXJfbm9f
YXR0YWNobWVudHMuYXBpID0gRkFJTAorCisvLyBCbGVuZCBlcXVhdGlvbnM6CiszNTg2IFZVTEtB
TiA6IEtIUi1HTEVTMzEuY29yZS5ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZC4qID0gU0tJUAorCisv
LyBMaW1pdHM6CisvLyBHTF9NSU4vTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUIG5v
dCBzZXQuCiszNjA1IFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS50ZXh0dXJlX2dhdGhlci4qID0g
RkFJTAorCisvLyBEaXNwYXRjaCBpbmRpcmVjdDoKKzQxODggVlVMS0FOIDogS0hSLUdMRVMzMS5j
b3JlLmNvbXB1dGVfc2hhZGVyLnJlc291cmNlLWltYWdlID0gRkFJTAorNDE5MSBWVUxLQU4gOiBL
SFItR0xFUzMxLmNvcmUuY29tcHV0ZV9zaGFkZXIucmVzb3VyY2VzLW1heCA9IEZBSUwKKzQxOTIg
VlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLmNvbXB1dGVfc2hhZGVyLnBpcGVsaW5lLXBvc3QteGZi
ID0gRkFJTAorMzcyNiBWVUxLQU4gUElYRUwyT1JYTCA6IEtIUi1HTEVTMzEuY29yZS5jb21wdXRl
X3NoYWRlci5waXBlbGluZS1jb21wdXRlLWNoYWluID0gRkFJTAorNDE5NCBWVUxLQU4gUElYRUwy
T1JYTCA6IEtIUi1HTEVTMzEuY29yZS5jb21wdXRlX3NoYWRlci5yZXNvdXJjZS11Ym8gPSBGQUlM
Cis0MTk0IFZVTEtBTiBQSVhFTDJPUlhMIDogS0hSLUdMRVMzMS5jb3JlLmNvbXB1dGVfc2hhZGVy
LmJ1aWx0LWluLXZhcmlhYmxlcyA9IEZBSUwKKworCisvLy8vCisvLy8vIERlc2t0b3AgVnVsa2Fu
IGV4cGVjdGF0aW9ucworLy8vLworCisvLyBDcmFzaGVzIGluIGxpYm52aWRpYS1nbHZrc3BpcnYu
c28sIGZpeGVkIGluIG5ld2VyIGRyaXZlcnMKKzQxMjggVlVMS0FOIE5WSURJQSA6IEtIUi1HTEVT
MzEuY29yZS5zaGFkZXJfc3RvcmFnZV9idWZmZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJh
eUxlbmd0aC1jcy0qLW1hdEMqID0gU0tJUAorNDEyOCBWVUxLQU4gTlZJRElBIDogS0hSLUdMRVMz
MS5jb3JlLnNoYWRlcl9zdG9yYWdlX2J1ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5zaXplZEFycmF5
TGVuZ3RoLXZzLSotbWF0QyogPSBTS0lQCis0MTI4IFZVTEtBTiBOVklESUEgOiBLSFItR0xFUzMx
LmNvcmUuc2hhZGVyX3N0b3JhZ2VfYnVmZmVyX29iamVjdC5hZHZhbmNlZC11bnNpemVkQXJyYXlM
ZW5ndGgtZnMtKi1tYXRDKiA9IFNLSVAKKzQxMjggVlVMS0FOIE5WSURJQSA6IEtIUi1HTEVTMzEu
Y29yZS5zaGFkZXJfc3RvcmFnZV9idWZmZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJheUxl
bmd0aC1jcy0qLXN0cnVjdCogPSBTS0lQCis0MTI4IFZVTEtBTiBOVklESUEgOiBLSFItR0xFUzMx
LmNvcmUuc2hhZGVyX3N0b3JhZ2VfYnVmZmVyX29iamVjdC5hZHZhbmNlZC11bnNpemVkQXJyYXlM
ZW5ndGgtdnMtKi1zdHJ1Y3QqID0gU0tJUAorNDEyOCBWVUxLQU4gTlZJRElBIDogS0hSLUdMRVMz
MS5jb3JlLnNoYWRlcl9zdG9yYWdlX2J1ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5zaXplZEFycmF5
TGVuZ3RoLWZzLSotc3RydWN0KiA9IFNLSVAKKzQxMjggVlVMS0FOIE5WSURJQSA6IEtIUi1HTEVT
MzEuY29yZS5zaGFkZXJfc3RvcmFnZV9idWZmZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJh
eUxlbmd0aC1jcy0qLW1hdFIqID0gU0tJUAorNDEyOCBWVUxLQU4gTlZJRElBIDogS0hSLUdMRVMz
MS5jb3JlLnNoYWRlcl9zdG9yYWdlX2J1ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5zaXplZEFycmF5
TGVuZ3RoLXZzLSotbWF0UiogPSBTS0lQCis0MTI4IFZVTEtBTiBOVklESUEgOiBLSFItR0xFUzMx
LmNvcmUuc2hhZGVyX3N0b3JhZ2VfYnVmZmVyX29iamVjdC5hZHZhbmNlZC11bnNpemVkQXJyYXlM
ZW5ndGgtZnMtKi1tYXRSKiA9IFNLSVAKKworCisvLy8vCisvLy8vIEFuZHJvaWQgKGkuZS4gUGl4
ZWwqKSBWdWxrYW4gZXhwZWN0YXRpb25zCisvLy8vCisKKy8vIENyYXNoZXMgb24gQW5kcm9pZAor
NDEwNyBWVUxLQU4gQU5EUk9JRCA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfc3RvcmFnZV9idWZm
ZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJheUxlbmd0aCogPSBTS0lQCisKKy8vIFBhc3Np
bmcgb24gcmVjZW50IGRyaXZlcnM6CiszNzI2IFZVTEtBTiBBTkRST0lEIDogS0hSLUdMRVMzMS5j
b3JlLnNoYWRlcl9hdG9taWNfY291bnRlcnMuKiA9IEZBSUwKKzM3MjYgVlVMS0FOIEFORFJPSUQg
OiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2F0b21pY19jb3VudGVycy5hZHZhbmNlZC11c2FnZS0q
ID0gU0tJUAorCisvLyBFeHBsaWNpdCB1bmlmb3JtIGxvY2F0aW9uczoKKzQyMTkgVlVMS0FOIFBJ
WEVMMk9SWEwgOiBLSFItR0xFUzMxLmNvcmUuZXhwbGljaXRfdW5pZm9ybV9sb2NhdGlvbi51bmlm
b3JtLWxvYy1taXgtd2l0aC1pbXBsaWNpdC1tYXggPSBGQUlMCis0MjE5IFZVTEtBTiBQSVhFTDJP
UlhMIDogS0hSLUdMRVMzMS5jb3JlLmV4cGxpY2l0X3VuaWZvcm1fbG9jYXRpb24udW5pZm9ybS1s
b2MtbWl4LXdpdGgtaW1wbGljaXQtbWF4LWFycmF5ID0gRkFJTAorCisvLyBGYWlscyBvbiBQaXhl
bDIgYW5kIFBpeGVsMiBYTAorNDE1OSBWVUxLQU4gUElYRUwyT1JYTCA6IEtIUi1HTEVTMzEuY29y
ZS5kcmF3X2luZGlyZWN0LmFkdmFuY2VkLXR3b1Bhc3MtdHJhbnNmb3JtRmVlZGJhY2stZWxlbWVu
dHMgPSBGQUlMCis0MTU5IFZVTEtBTiBQSVhFTDJPUlhMIDogS0hSLUdMRVMzMS5jb3JlLmRyYXdf
aW5kaXJlY3QuYWR2YW5jZWQtdHdvUGFzcy10cmFuc2Zvcm1GZWVkYmFjay1hcnJheXMgPSBGQUlM
CisKKy8vIEFuZHJvaWQgdXNlcyAib2xkIiBzYW1wbGVyIHJld3JpdGUgdGhhdCBkb2Vzbid0IHN1
cHBvcnQgYXJyYXkgb2YgYXJyYXlzCisyNzAzIFZVTEtBTiBBTkRST0lEIDogS0hSLUdMRVMzMS5j
b3JlLmFycmF5c19vZl9hcnJheXMuKiA9IFNLSVAKKworLy8gRmFpbGluZyBvbiBBbmRyb2lkIHdp
dGggU3dpZnRTaGFkZXIKKzQzMDAgU1dJRlRTSEFERVIgQU5EUk9JRCA6IEtIUi1HTEVTMzEuY29y
ZS5zaGFkZXJfaW50ZWdlcl9taXgubWl4LWJ2ZWM0ID0gRkFJTAorNDMwMCBTV0lGVFNIQURFUiBB
TkRST0lEIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9pbnRlZ2VyX21peC5taXgtaXZlYzQgPSBG
QUlMCis0MzAwIFNXSUZUU0hBREVSIEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2lu
dGVnZXJfbWl4Lm1peC11dmVjNCA9IEZBSUwKKworLy8gQ3Jhc2hpbmcgb24gQW5kcm9pZCB3aXRo
IFN3aWZ0U2hhZGVyCis0MTA4IFNXSUZUU0hBREVSIEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUu
c2hhZGVyX2ltYWdlX3NpemUuYmFzaWMtbm9uTVMqID0gU0tJUAorNDEwOCBTV0lGVFNIQURFUiBB
TkRST0lEIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9pbWFnZV9zaXplLmFkdmFuY2VkLW5vbk1T
KiA9IFNLSVAKKworLy8gQ3Jhc2hpbmcgb24gQW5kcm9pZCB3aXRoIFN3aWZ0U2hhZGVyCis0MTg4
IFNXSUZUU0hBREVSIEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUuY29tcHV0ZV9zaGFkZXIucmVz
b3VyY2UtaW1hZ2UgPSBTS0lQCisKKy8vIENyYXNoaW5nIG9uIEFuZHJvaWQgd2l0aCBTd2lmdFNo
YWRlcgorNDE5MCBTV0lGVFNIQURFUiBBTkRST0lEIDogS0hSLUdMRVMzMS5jb3JlLmNvbXB1dGVf
c2hhZGVyLnBpcGVsaW5lLWNvbXB1dGUtY2hhaW4gPSBTS0lQCisKKy8vIENyYXNoaW5nIG9uIEFu
ZHJvaWQgd2l0aCBTd2lmdFNoYWRlcgorNDI0MCBTV0lGVFNIQURFUiBBTkRST0lEIDogS0hSLUdM
RVMzMS5jb3JlLnRleHR1cmVfc3RvcmFnZV9tdWx0aXNhbXBsZS5GdW5jdGlvbmFsVGVzdHMuYmxp
dHRpbmdfbXVsdGlzYW1wbGVkX2RlcHRoX2F0dGFjaG1lbnQgPSBTS0lQCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfa2hyX2ds
ZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyOTNmODE5ZjU0MWE1NGVlMzhhYmY1M2Y5ODRiZTE2MWYyMmEzZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBw
b3J0L2RlcXBfa2hyX2dsZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMCwwICsxLDE4MSBA
QAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgZGVmZWN0aXZlIGRFUVAgY29u
Zm9ybWFuY2UgdGVzdHMuIFRoZSBleHBlY3RlZAorLy8gZm9ybWF0IGlzOgorLy8gIHtCVUcjfSB7
TU9ESUZJRVJTfSA6IHtURVNUX05BTUV9ID0ge1BBU1MsRkFJTCxGTEFLWSxUSU1FT1VULFNLSVB9
CisvLworLy8gTU9ESUZJRVJTIGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBiZWxvdyBsaXN0
LCBjb21iaW5lZCB3aXRoIGEgbG9naWNhbCBBTkQ6CisvLyAgV0lOIFhQIFZJU1RBIFdJTjcgV0lO
OCBXSU4xMAorLy8gIE1BQyBMRU9QQVJEIFNOT1dMRU9QQVJEIExJT04gTU9VTlRBSU5MSU9OIE1B
VkVSSUNLUyBZT1NFTUlURSBFTENBUElUQU4gU0lFUlJBIEhJR0hTSUVSUkEgTU9KQVZFCisvLyAg
TElOVVggQ0hST01FT1MgQU5EUk9JRAorLy8gIE5WSURJQSBBTUQgSU5URUwKKy8vICBERUJVRyBS
RUxFQVNFCisvLyAgRDNEOSBEM0QxMSBPUEVOR0wgR0xFUyBWVUxLQU4KKy8vICBORVhVUzVYIFBJ
WEVMMk9SWEwKKy8vICBRVUFEUk9QNDAwCisvLworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBz
cGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGlu
ZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4KKy8vCisvLyBFeGFtcGxlczoKKy8vIGZhaWxzIG9u
IGJvdGggd2luZG93cyBhbmQgbWFjIChjcmFzaCkKKy8vICA5MTUzMCBXSU4gOiBjb250ZXh0X2xv
c3RfcmVzdG9yZWQgPSBTS0lQCisvLyAgOTE1MzAgTUFDIDogY29udGV4dF9sb3N0X3Jlc3RvcmVk
ID0gU0tJUAorLy8gZmFpbHMgb24gd2luZG93cyB1c2luZyBOVklESUEgR1BVcworLy8gIDkxNTMz
IFdJTiBOVklESUEgOiBnbF9taW5fdW5pZm9ybXMgPSBGQUlMCisvLyBmYWlscyBvbiBOZXh1czVY
IHdpdGggR0xFUyBiYWNrZW5kIChoYW5ncykKKy8vICA5MTUzMSBORVhVUzVYIEdMRVMgOiBjb25m
b3JtYW5jZV9tb3JlXyogPSBTS0lQCisKKy8vIEZvciBub3cgd2Ugb25seSBsb2cgVnVsa2FuIHRl
c3QgZXhwZWN0YXRpb25zLiBNb3JlIGJhY2stZW5kcyBjYW4gZm9sbG93IGFzIHdlIG5lZWQgdGhl
bS4KKworLy8gRGVwdGgvc3RlbmNpbCByZWxhdGVkIGZhaWx1cmVzIGR1ZSB0byBWdWxrYW4gZHJp
dmVyIGJ1Z3MuCiszNjgzIFZVTEtBTiBBTkRST0lEIDogS0hSLUdMRVMzLnBhY2tlZF9kZXB0aF9z
dGVuY2lsLiouZGVwdGgyNF9zdGVuY2lsOCA9IEZBSUwKKzM2ODMgVlVMS0FOIEFORFJPSUQgOiBL
SFItR0xFUzMucGFja2VkX2RlcHRoX3N0ZW5jaWwuKi5kZXB0aDMyZl9zdGVuY2lsOCA9IEZBSUwK
KworLy8gQ29weVRleEltYWdlIGNvbnZlcnNpb24gZmFpbGluZyBkdWUgdG8gVnVsa2FuIHZhbGlk
YXRpb24gZXJyb3IgcmU6IFVJTlQvU0lOVC1kZXNjcmlwdG9yLXNldCBpc3N1ZS4KKzM4MTcgVlVM
S0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1
cmVfYXJyYXlfdGV4dHVyZTJkID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90
ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZV9hcnJheV9jdWJlbWFwX25lZ3gg
PSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9u
cy5yZXF1aXJlZC50ZXh0dXJlX2FycmF5X2N1YmVtYXBfbmVneSA9IEZBSUwKKzM4MTcgVlVMS0FO
IDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmVf
YXJyYXlfY3ViZW1hcF9uZWd6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90
ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZV9hcnJheV9jdWJlbWFwX3Bvc3gg
PSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9u
cy5yZXF1aXJlZC50ZXh0dXJlX2FycmF5X2N1YmVtYXBfcG9zeSA9IEZBSUwKKzM4MTcgVlVMS0FO
IDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmVf
YXJyYXlfY3ViZW1hcF9wb3N6ID0gRkFJTAorCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5
X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlMmRfdGV4dHVyZTJkID0gRkFJ
TAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVx
dWlyZWQudGV4dHVyZTJkX2N1YmVtYXBfbmVneCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdM
RVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUyZF9jdWJlbWFw
X25lZ3kgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252
ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlMmRfY3ViZW1hcF9uZWd6ID0gRkFJTAorMzgxNyBWVUxL
QU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVy
ZTJkX2N1YmVtYXBfcG9zeCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4
X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUyZF9jdWJlbWFwX3Bvc3kgPSBGQUlM
CiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1
aXJlZC50ZXh0dXJlMmRfY3ViZW1hcF9wb3N6ID0gRkFJTAorCiszODE3IFZVTEtBTiA6IEtIUi1H
TEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3hfdGV4
dHVyZTJkID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29u
dmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd4X2N1YmVtYXBfbmVneCA9IEZBSUwKKzM4MTcg
VlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1
YmVtYXBfbmVneF9jdWJlbWFwX25lZ3kgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5j
b3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3hfY3ViZW1hcF9u
ZWd6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVy
c2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd4X2N1YmVtYXBfcG9zeCA9IEZBSUwKKzM4MTcgVlVM
S0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVt
YXBfbmVneF9jdWJlbWFwX3Bvc3kgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5
X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3hfY3ViZW1hcF9wb3N6
ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lv
bnMucmVxdWlyZWQuY3ViZW1hcF9uZWd5X3RleHR1cmUyZCA9IEZBSUwKKzM4MTcgVlVMS0FOIDog
S0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfbmVn
eV9jdWJlbWFwX25lZ3ggPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9p
bWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3lfY3ViZW1hcF9uZWd5ID0gRkFJ
TAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVx
dWlyZWQuY3ViZW1hcF9uZWd5X2N1YmVtYXBfbmVneiA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hS
LUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfbmVneV9j
dWJlbWFwX3Bvc3ggPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFn
ZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3lfY3ViZW1hcF9wb3N5ID0gRkFJTAor
MzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWly
ZWQuY3ViZW1hcF9uZWd5X2N1YmVtYXBfcG9zeiA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdM
RVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfbmVnel90ZXh0
dXJlMmQgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252
ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3pfY3ViZW1hcF9uZWd4ID0gRkFJTAorMzgxNyBW
VUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3Vi
ZW1hcF9uZWd6X2N1YmVtYXBfbmVneSA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNv
cHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfbmVnel9jdWJlbWFwX25l
Z3ogPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJz
aW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3pfY3ViZW1hcF9wb3N4ID0gRkFJTAorMzgxNyBWVUxL
QU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1h
cF9uZWd6X2N1YmVtYXBfcG9zeSA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlf
dGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfbmVnel9jdWJlbWFwX3Bvc3og
PSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9u
cy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3hfdGV4dHVyZTJkID0gRkFJTAorMzgxNyBWVUxLQU4gOiBL
SFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N4
X2N1YmVtYXBfbmVneCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2lt
YWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeF9jdWJlbWFwX25lZ3kgPSBGQUlM
CiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1
aXJlZC5jdWJlbWFwX3Bvc3hfY3ViZW1hcF9uZWd6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFIt
R0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N4X2N1
YmVtYXBfcG9zeCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdl
X2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeF9jdWJlbWFwX3Bvc3kgPSBGQUlMCisz
ODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJl
ZC5jdWJlbWFwX3Bvc3hfY3ViZW1hcF9wb3N6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xF
UzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N5X3RleHR1
cmUyZCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZl
cnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeV9jdWJlbWFwX25lZ3ggPSBGQUlMCiszODE3IFZV
TEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJl
bWFwX3Bvc3lfY3ViZW1hcF9uZWd5ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29w
eV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N5X2N1YmVtYXBfbmVn
eiA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNp
b25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeV9jdWJlbWFwX3Bvc3ggPSBGQUlMCiszODE3IFZVTEtB
TiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFw
X3Bvc3lfY3ViZW1hcF9wb3N5ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90
ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N5X2N1YmVtYXBfcG9zeiA9
IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25z
LnJlcXVpcmVkLmN1YmVtYXBfcG9zel90ZXh0dXJlMmQgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtI
Ui1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3pf
Y3ViZW1hcF9uZWd4ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1h
Z2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N6X2N1YmVtYXBfbmVneSA9IEZBSUwK
KzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVp
cmVkLmN1YmVtYXBfcG9zel9jdWJlbWFwX25lZ3ogPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1H
TEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3pfY3Vi
ZW1hcF9wb3N4ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2Vf
Y29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N6X2N1YmVtYXBfcG9zeSA9IEZBSUwKKzM4
MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVk
LmN1YmVtYXBfcG9zel9jdWJlbWFwX3Bvc3ogPSBGQUlMCisKKy8vIGdsQ29weVRleEltYWdlIGZy
b20gM0QgdGV4dHVyZXMgaXMgZmFpbGluZyBhbmQgZ2V0dGluZyB0aGUgZm9sbG93aW5nIFZ1bGth
biBWYWxpZGF0aW9uIGVycm9yczoKKy8vCisvLyAgSW1hZ2VWaWV3IG11c3Qgbm90IGJlIGEgMkQg
b3IgMkRBcnJheSB2aWV3IG9mIGEgM0QgaW1hZ2UuIFRoZSBWdWxrYW4gc3BlYyBzdGF0ZXM6Cisv
LyAgaW1hZ2VWaWV3IG11c3Qgbm90IGJlIDJEIG9yIDJEIGFycmF5IGltYWdlIHZpZXcgY3JlYXRl
ZCBmcm9tIGEgM0QgaW1hZ2UKKy8vCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9p
bWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlM2RfdGV4dHVyZTJkID0gRkFJTAorMzgz
NiBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQu
dGV4dHVyZTNkX2N1YmVtYXBfbmVneCA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLmNv
cHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUzZF9jdWJlbWFwX25lZ3kg
PSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9u
cy5yZXF1aXJlZC50ZXh0dXJlM2RfY3ViZW1hcF9uZWd6ID0gRkFJTAorMzgzNiBWVUxLQU4gOiBL
SFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZTNkX2N1
YmVtYXBfcG9zeCA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdl
X2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUzZF9jdWJlbWFwX3Bvc3kgPSBGQUlMCiszODM2
IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50
ZXh0dXJlM2RfY3ViZW1hcF9wb3N6ID0gRkFJTAorCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5w
YWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucjggPSBGQUlMCiszODM2IFZVTEtBTiA6IEtI
Ui1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmc4ID0gRkFJTAorMzgzNiBW
VUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRfcmVjdGFuZ2xlLnJnOGkgPSBG
QUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5n
bGUucmc4dWkgPSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZh
cmllZF9yZWN0YW5nbGUucmdiOCA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tl
ZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhOCA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hS
LUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhOGkgPSBGQUlMCiszODM2
IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmdiYTh1
aSA9IEZBSUwKKworMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRf
cmVjdGFuZ2xlLnJnMTZpID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3Bp
eGVscy52YXJpZWRfcmVjdGFuZ2xlLnJnMTZ1aSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdM
RVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZzE2ZiA9IEZBSUwKKzM4MzYgVlVM
S0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2IxNmYgPSBG
QUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5n
bGUucmdiYTE2aSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMu
dmFyaWVkX3JlY3RhbmdsZS5yZ2JhMTZ1aSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMz
LnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhMTZmID0gRkFJTAorCiszODM2IFZV
TEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmczMmkgPSBG
QUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5n
bGUucmczMnVpID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52
YXJpZWRfcmVjdGFuZ2xlLnJnMzJmID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFj
a2VkX3BpeGVscy52YXJpZWRfcmVjdGFuZ2xlLnJnYmEzMmkgPSBGQUlMCiszODM2IFZVTEtBTiA6
IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmdiYTMydWkgPSBGQUlM
CiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUu
cmdiYTMyZiA9IEZBSUwKKworMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52
YXJpZWRfcmVjdGFuZ2xlLnJnYiA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tl
ZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2I1NjUgPSBGQUlMCiszODM2IFZVTEtBTiA6IEtI
Ui1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmdiNV9hMSA9IEZBSUwKKzM4
MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5zcmdi
OF9hbHBoYTggPSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZh
cmllZF9yZWN0YW5nbGUucmdiYSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tl
ZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhNCA9IEZBSUwKKworCisvLyBGYWlscyBvbmx5
IHdpdGggU3dpZnRTaGFkZXI6CisKKy8vIFRoZXNlIG9ubHkgZmFpbCBvbiBBbmRyb2lkCis0MDE5
IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlw
dC5tYXQyeDRfZHluYW1pY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAor
NDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJz
Y3JpcHQubWF0Mng0X2R5bmFtaWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF92ZXJ0ZXggPSBGQUlM
Cis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1
YnNjcmlwdC5tYXQyeDRfZHluYW1pY193cml0ZV9zdGF0aWNfcmVhZF9mcmFnbWVudCA9IEZBSUwK
KzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vi
c2NyaXB0Lm1hdDJ4NF9keW5hbWljX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQw
MTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2Ny
aXB0Lm1hdDJ4NF9zdGF0aWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF9mcmFnbWVudCA9IEZBSUwK
KzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vi
c2NyaXB0Lm1hdDJ4NF9zdGF0aWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF92ZXJ0ZXggPSBGQUlM
Cis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1
YnNjcmlwdC5tYXQyeDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfbG9vcF9yZWFkX2ZyYWdtZW50ID0g
RkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJp
eF9zdWJzY3JpcHQubWF0Mng0X3N0YXRpY193cml0ZV9keW5hbWljX2xvb3BfcmVhZF92ZXJ0ZXgg
PSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0
cml4X3N1YnNjcmlwdC5tYXQyeDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfcmVhZF9mcmFnbWVudCA9
IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRy
aXhfc3Vic2NyaXB0Lm1hdDJ4NF9zdGF0aWNfd3JpdGVfZHluYW1pY19yZWFkX3ZlcnRleCA9IEZB
SUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhf
c3Vic2NyaXB0Lm1hdDJ4NF9zdGF0aWNfd3JpdGVfc3RhdGljX2xvb3BfcmVhZF9mcmFnbWVudCA9
IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRy
aXhfc3Vic2NyaXB0Lm1hdDJ4NF9zdGF0aWNfd3JpdGVfc3RhdGljX2xvb3BfcmVhZF92ZXJ0ZXgg
PSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0
cml4X3N1YnNjcmlwdC5tYXQzeDRfZHluYW1pY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdt
ZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5n
Lm1hdHJpeF9zdWJzY3JpcHQubWF0M3g0X2R5bmFtaWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF92
ZXJ0ZXggPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhp
bmcubWF0cml4X3N1YnNjcmlwdC5tYXQzeDRfZHluYW1pY193cml0ZV9zdGF0aWNfcmVhZF9mcmFn
bWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGlu
Zy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9keW5hbWljX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRl
eCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5t
YXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9zdGF0aWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF9mcmFn
bWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGlu
Zy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9zdGF0aWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF92
ZXJ0ZXggPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhp
bmcubWF0cml4X3N1YnNjcmlwdC5tYXQzeDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfbG9vcF9yZWFk
X2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmlu
ZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0M3g0X3N0YXRpY193cml0ZV9keW5hbWljX2xvb3Bf
cmVhZF92ZXJ0ZXggPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMu
aW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5tYXQzeDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfcmVh
ZF9mcmFnbWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5p
bmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9zdGF0aWNfd3JpdGVfZHluYW1pY19yZWFk
X3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRl
eGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9zdGF0aWNfd3JpdGVfc3RhdGljX2xvb3BfcmVh
ZF9mcmFnbWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5p
bmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9zdGF0aWNfd3JpdGVfc3RhdGljX2xvb3Bf
cmVhZF92ZXJ0ZXggPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMu
aW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5tYXQ0X2R5bmFtaWNfbG9vcF93cml0ZV9zdGF0aWNf
cmVhZF9mcmFnbWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVy
cy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfZHluYW1pY19sb29wX3dyaXRlX3N0YXRp
Y19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVy
cy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfZHluYW1pY193cml0ZV9zdGF0aWNfcmVh
ZF9mcmFnbWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5p
bmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfZHluYW1pY193cml0ZV9zdGF0aWNfcmVhZF92
ZXJ0ZXggPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhp
bmcubWF0cml4X3N1YnNjcmlwdC5tYXQ0X3N0YXRpY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX2Zy
YWdtZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4
aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0NF9zdGF0aWNfbG9vcF93cml0ZV9zdGF0aWNfcmVhZF92
ZXJ0ZXggPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhp
bmcubWF0cml4X3N1YnNjcmlwdC5tYXQ0X3N0YXRpY193cml0ZV9keW5hbWljX2xvb3BfcmVhZF9m
cmFnbWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRl
eGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfbG9vcF9yZWFk
X3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRl
eGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfcmVhZF9mcmFn
bWVudCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGlu
Zy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfcmVhZF92ZXJ0ZXgg
PSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0
cml4X3N1YnNjcmlwdC5tYXQ0X3N0YXRpY193cml0ZV9zdGF0aWNfbG9vcF9yZWFkX2ZyYWdtZW50
ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1h
dHJpeF9zdWJzY3JpcHQubWF0NF9zdGF0aWNfd3JpdGVfc3RhdGljX2xvb3BfcmVhZF92ZXJ0ZXgg
PSBGQUlMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTEJsb2JDYWNoZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2VnbF90ZXN0cy9FR0xCbG9iQ2FjaGVUZXN0LmNwcAppbmRleCAwZjM3NmNlY2U0YWJm
NDhhNWVmOTE4ODA3NjMxNGYyNjRmMThjMmRlLi44Y2Y4NDk5YzMzODI4MDBjYTllNDdjYzlhOTQ3
OTk3Y2Q5ZDVmN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZWdsX3Rlc3RzL0VHTEJsb2JDYWNoZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQmxvYkNhY2hlVGVzdC5jcHAKQEAgLTYsMTEg
KzYsMTQgQEAKIC8vIEVHTEJsb2JDYWNoZVRlc3Q6CiAvLyAgIFVuaXQgdGVzdHMgZm9yIHRoZSBF
R0xfQU5EUk9JRF9ibG9iX2NhY2hlIGV4dGVuc2lvbi4KIAorLy8gTXVzdCBiZSBpbmNsdWRlZCBm
aXJzdCB0byBwcmV2ZW50IGVycm9ycyB3aXRoICJOb25lIi4KKyNpbmNsdWRlICJ0ZXN0X3V0aWxz
L0FOR0xFVGVzdC5oIgorCiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2lu
Y2x1ZGUgImNvbW1vbi9QYWNrZWRFbnVtcy5oIgogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKICNpbmNsdWRlICJ0ZXN0X3V0
aWxzL2dsX3JhaWkuaCIKICNpbmNsdWRlICJ1dGlsL0VHTFdpbmRvdy5oIgogCkBAIC0yMCwxOCAr
MjMsMzEgQEAgY29uc3RleHByIGNoYXIga0VHTEV4dE5hbWVbXSA9ICJFR0xfQU5EUk9JRF9ibG9i
X2NhY2hlIjsKIAogZW51bSBjbGFzcyBDYWNoZU9wUmVzdWx0CiB7Ci0gICAgU0VUX1NVQ0NFU1Ms
Ci0gICAgR0VUX05PVF9GT1VORCwKLSAgICBHRVRfTUVNT1JZX1RPT19TTUFMTCwKLSAgICBHRVRf
U1VDQ0VTUywKKyAgICBTZXRTdWNjZXNzLAorICAgIEdldE5vdEZvdW5kLAorICAgIEdldE1lbW9y
eVRvb1NtYWxsLAorICAgIEdldFN1Y2Nlc3MsCisgICAgVmFsdWVOb3RTZXQsCisgICAgRW51bUNv
dW50Cit9OwogCi0gICAgVkFMVUVfTk9UX1NFVCwKK2FuZ2xlOjpQYWNrZWRFbnVtTWFwPENhY2hl
T3BSZXN1bHQsIHN0ZDo6c3RyaW5nPiBrQ2FjaGVPcFRvU3RyaW5nID0geworICAgIHtDYWNoZU9w
UmVzdWx0OjpTZXRTdWNjZXNzLCAiU2V0U3VjY2VzcyJ9LAorICAgIHtDYWNoZU9wUmVzdWx0OjpH
ZXROb3RGb3VuZCwgIkdldE5vdEZvdW5kIn0sCisgICAge0NhY2hlT3BSZXN1bHQ6OkdldE1lbW9y
eVRvb1NtYWxsLCAiR2V0TWVtb3J5VG9vU21hbGwifSwKKyAgICB7Q2FjaGVPcFJlc3VsdDo6R2V0
U3VjY2VzcywgIkdldFN1Y2Nlc3MifSwKKyAgICB7Q2FjaGVPcFJlc3VsdDo6VmFsdWVOb3RTZXQs
ICJWYWx1ZU5vdFNldCJ9LAogfTsKIAorc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0
cmVhbSAmb3MsIENhY2hlT3BSZXN1bHQgcmVzdWx0KQoreworICAgIHJldHVybiBvcyA8PCBrQ2Fj
aGVPcFRvU3RyaW5nW3Jlc3VsdF07Cit9CisKIG5hbWVzcGFjZQogewogc3RkOjptYXA8c3RkOjp2
ZWN0b3I8dWludDhfdD4sIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PiBnQXBwbGljYXRpb25DYWNoZTsK
LUNhY2hlT3BSZXN1bHQgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6VkFMVUVf
Tk9UX1NFVDsKK0NhY2hlT3BSZXN1bHQgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3Vs
dDo6VmFsdWVOb3RTZXQ7CiAKIHZvaWQgU2V0QmxvYihjb25zdCB2b2lkICprZXksIEVHTHNpemVp
QU5EUk9JRCBrZXlTaXplLCBjb25zdCB2b2lkICp2YWx1ZSwgRUdMc2l6ZWlBTkRST0lEIHZhbHVl
U2l6ZSkKIHsKQEAgLTQzLDcgKzU5LDcgQEAgdm9pZCBTZXRCbG9iKGNvbnN0IHZvaWQgKmtleSwg
RUdMc2l6ZWlBTkRST0lEIGtleVNpemUsIGNvbnN0IHZvaWQgKnZhbHVlLCBFR0xzaXoKIAogICAg
IGdBcHBsaWNhdGlvbkNhY2hlW2tleVZlY10gPSB2YWx1ZVZlYzsKIAotICAgIGdMYXN0Q2FjaGVP
cFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OlNFVF9TVUNDRVNTOworICAgIGdMYXN0Q2FjaGVPcFJl
c3VsdCA9IENhY2hlT3BSZXN1bHQ6OlNldFN1Y2Nlc3M7CiB9CiAKIEVHTHNpemVpQU5EUk9JRCBH
ZXRCbG9iKGNvbnN0IHZvaWQgKmtleSwKQEAgLTU3LDE4ICs3MywxOCBAQCBFR0xzaXplaUFORFJP
SUQgR2V0QmxvYihjb25zdCB2b2lkICprZXksCiAgICAgYXV0byBlbnRyeSA9IGdBcHBsaWNhdGlv
bkNhY2hlLmZpbmQoa2V5VmVjKTsKICAgICBpZiAoZW50cnkgPT0gZ0FwcGxpY2F0aW9uQ2FjaGUu
ZW5kKCkpCiAgICAgewotICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0
OjpHRVRfTk9UX0ZPVU5EOworICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVz
dWx0OjpHZXROb3RGb3VuZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYgKGVu
dHJ5LT5zZWNvbmQuc2l6ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4odmFsdWVTaXplKSkKICAg
ICB7CiAgICAgICAgIG1lbWNweSh2YWx1ZSwgZW50cnktPnNlY29uZC5kYXRhKCksIGVudHJ5LT5z
ZWNvbmQuc2l6ZSgpKTsKLSAgICAgICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3Vs
dDo6R0VUX1NVQ0NFU1M7CisgICAgICAgIGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1
bHQ6OkdldFN1Y2Nlc3M7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdMYXN0Q2Fj
aGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OkdFVF9NRU1PUllfVE9PX1NNQUxMOworICAgICAg
ICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0OjpHZXRNZW1vcnlUb29TbWFsbDsK
ICAgICB9CiAKICAgICByZXR1cm4gZW50cnktPnNlY29uZC5zaXplKCk7CkBAIC05MCw2ICsxMDYs
OCBAQCBjbGFzcyBFR0xCbG9iQ2FjaGVUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICBt
SGFzQmxvYkNhY2hlICAgICAgPSBJc0VHTERpc3BsYXlFeHRlbnNpb25FbmFibGVkKGRpc3BsYXks
IGtFR0xFeHROYW1lKTsKICAgICB9CiAKKyAgICB2b2lkIHRlc3RUZWFyRG93bigpIG92ZXJyaWRl
IHsgZ0FwcGxpY2F0aW9uQ2FjaGUuY2xlYXIoKTsgfQorCiAgICAgYm9vbCBwcm9ncmFtQmluYXJ5
QXZhaWxhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPj0gMyB8fCBJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFy
eSIpKTsKQEAgLTE0NiwyNiArMTY0LDI2IEBAIHZvaWQgbWFpbigpCiAgICAgewogICAgICAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTcmMsIGtGcmFnbWVu
dFNoYWRlclNyYyk7CiAgICAgICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0gICAgICAgIEVY
UEVDVF9FUShDYWNoZU9wUmVzdWx0OjpTRVRfU1VDQ0VTUywgZ0xhc3RDYWNoZU9wUmVzdWx0KTsK
LSAgICAgICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6VkFMVUVfTk9UX1NF
VDsKKyAgICAgICAgRVhQRUNUX0VRKENhY2hlT3BSZXN1bHQ6OlNldFN1Y2Nlc3MsIGdMYXN0Q2Fj
aGVPcFJlc3VsdCk7CisgICAgICAgIGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6
OlZhbHVlTm90U2V0OwogCiAgICAgICAgIC8vIENvbXBpbGUgdGhlIHNhbWUgc2hhZGVyIGFnYWlu
LCBzbyBpdCB3b3VsZCB0cnkgdG8gcmV0cmlldmUgaXQgZnJvbSB0aGUgY2FjaGUKICAgICAgICAg
cHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTcmMsIGtGcmFnbWVudFNoYWRl
clNyYyk7CiAgICAgICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0gICAgICAgIEVYUEVDVF9F
UShDYWNoZU9wUmVzdWx0OjpHRVRfU1VDQ0VTUywgZ0xhc3RDYWNoZU9wUmVzdWx0KTsKLSAgICAg
ICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6VkFMVUVfTk9UX1NFVDsKKyAg
ICAgICAgRVhQRUNUX0VRKENhY2hlT3BSZXN1bHQ6OkdldFN1Y2Nlc3MsIGdMYXN0Q2FjaGVPcFJl
c3VsdCk7CisgICAgICAgIGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OlZhbHVl
Tm90U2V0OwogCiAgICAgICAgIC8vIENvbXBpbGUgYW5vdGhlciBzaGFkZXIsIHdoaWNoIHNob3Vs
ZCBjcmVhdGUgYSBuZXcgZW50cnkKICAgICAgICAgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKGtW
ZXJ0ZXhTaGFkZXJTcmMyLCBrRnJhZ21lbnRTaGFkZXJTcmMyKTsKICAgICAgICAgQVNTRVJUX05F
KDB1LCBwcm9ncmFtKTsKLSAgICAgICAgRVhQRUNUX0VRKENhY2hlT3BSZXN1bHQ6OlNFVF9TVUND
RVNTLCBnTGFzdENhY2hlT3BSZXN1bHQpOwotICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQgPSBD
YWNoZU9wUmVzdWx0OjpWQUxVRV9OT1RfU0VUOworICAgICAgICBFWFBFQ1RfRVEoQ2FjaGVPcFJl
c3VsdDo6U2V0U3VjY2VzcywgZ0xhc3RDYWNoZU9wUmVzdWx0KTsKKyAgICAgICAgZ0xhc3RDYWNo
ZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6VmFsdWVOb3RTZXQ7CiAKICAgICAgICAgLy8gQ29t
cGlsZSB0aGUgZmlyc3Qgc2hhZGVyIGFnYWluLCB3aGljaCBzaG91bGQgc3RpbGwgcmVzaWRlIGlu
IHRoZSBjYWNoZQogICAgICAgICBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRl
clNyYywga0ZyYWdtZW50U2hhZGVyU3JjKTsKICAgICAgICAgQVNTRVJUX05FKDB1LCBwcm9ncmFt
KTsKLSAgICAgICAgRVhQRUNUX0VRKENhY2hlT3BSZXN1bHQ6OkdFVF9TVUNDRVNTLCBnTGFzdENh
Y2hlT3BSZXN1bHQpOwotICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0
OjpWQUxVRV9OT1RfU0VUOworICAgICAgICBFWFBFQ1RfRVEoQ2FjaGVPcFJlc3VsdDo6R2V0U3Vj
Y2VzcywgZ0xhc3RDYWNoZU9wUmVzdWx0KTsKKyAgICAgICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0g
Q2FjaGVPcFJlc3VsdDo6VmFsdWVOb3RTZXQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21wYXRp
YmlsaXR5VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rl
c3RzL0VHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHAKaW5kZXggMDBjODgzNzNiMTVhNzk1
Yjg2ZDhhYjZmMjZkZGI4NmFmOGE1NjUyMi4uMDRmZmRjMmJmNDgzN2E2ZDIwZGRkMDcwYWI1OWFh
MDVjYWUwMDM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGliaWxp
dHlUZXN0LmNwcApAQCAtOSwzNyArOSwxNzIgQEAKIC8vICAgc3VyZmFjZSBjb25maWdzLiBJZiB0
aGUgY29uZmlncyBhcmUgY29tcGF0aWJsZSwgaXQgY2hlY2tzIHRoYXQgc2ltcGxlCiAvLyAgIHJl
bmRlcmluZyB3b3Jrcywgb3RoZXJ3aXNlIGl0IGNoZWNrcyBhbiBlcnJvciBpcyBnZW5lcmF0ZWQg
b25lIE1ha2VDdXJyZW50LgogLy8KLS8vIE9ubHkgcnVuIHRoZSBFR0xDb250ZXh0Q29tcGF0aWJp
bGl0eVRlc3Qgb24gcmVsZWFzZSBidWlsZHMuICBUaGUgZXhlY3V0aW9uIHRpbWUgb2YgdGhpcyB0
ZXN0Ci0vLyBzY2FsZXMgd2l0aCB0aGUgc3F1YXJlIG9mIHRoZSBudW1iZXIgb2YgY29uZmlncyBl
eHBvc2VkIGFuZCBjYW4gdGltZSBvdXQgaW4gc29tZSBkZWJ1ZyBidWlsZHMuCi0vLyBodHRwOi8v
YW5nbGVidWcuY29tLzIxMjEKIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKICNpbmNsdWRl
IDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgogI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdz
LmgiCiAjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiCiAjaW5j
bHVkZSAidXRpbC9PU1dpbmRvdy5oIgorI2luY2x1ZGUgInV0aWwvcmFuZG9tX3V0aWxzLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKIAogbmFtZXNwYWNlCiB7CisvLyBUaGUgb25seSBjb25m
aWdzIHdpdGggMTYtYml0cyBmb3IgZWFjaCBvZiByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEg
aXMgR0xfUkdCQTE2RgorYm9vbCBJc1JHQkExNkZDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBF
R0xDb25maWcgY29uZmlnKQoreworICAgIEVHTGludCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsK
KyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfUkVEX1NJWkUsICZy
ZWQpOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9HUkVFTl9T
SVpFLCAmZ3JlZW4pOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVH
TF9CTFVFX1NJWkUsICZibHVlKTsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29u
ZmlnLCBFR0xfQUxQSEFfU0laRSwgJmFscGhhKTsKKyAgICByZXR1cm4gKChyZWQgPT0gMTYpICYm
IChncmVlbiA9PSAxNikgJiYgKGJsdWUgPT0gMTYpICYmIChhbHBoYSA9PSAxNikpOworfQorCiti
b29sIElzUkdCMTBfQTJDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcgY29uZmln
KQoreworICAgIEVHTGludCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsKKyAgICBlZ2xHZXRDb25m
aWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfUkVEX1NJWkUsICZyZWQpOworICAgIGVnbEdl
dENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9HUkVFTl9TSVpFLCAmZ3JlZW4pOwor
ICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9CTFVFX1NJWkUsICZi
bHVlKTsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfQUxQSEFf
U0laRSwgJmFscGhhKTsKKyAgICByZXR1cm4gKChyZWQgPT0gMTApICYmIChncmVlbiA9PSAxMCkg
JiYgKGJsdWUgPT0gMTApICYmIChhbHBoYSA9PSAyKSk7Cit9CisKKy8vIFF1ZXJpZXMgRUdMIGNv
bmZpZyB0byBkZXRlcm1pbmUgaWYgbXVsdGlzYW1wbGVkIG9yIG5vdAorYm9vbCBJc011bHRpc2Ft
cGxlZENvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyBjb25maWcpCit7CisgICAg
RUdMaW50IHNhbXBsZXMgPSAwOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25m
aWcsIEVHTF9TQU1QTEVTLCAmc2FtcGxlcyk7CisgICAgcmV0dXJuIChzYW1wbGVzID4gMSk7Cit9
CisKK2Jvb2wgU2hvdWxkU2tpcENvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyBj
b25maWcsIGJvb2wgd2luZG93U3VyZmFjZVRlc3QpCit7CisgICAgLy8gU2tpcCBtdWx0aXNhbXBs
ZWQgY29uZmlndXJhdGlvbnMgZHVlIHRvIHRlc3QgaW5zdGFiaWxpdHkuCisgICAgaWYgKElzTXVs
dGlzYW1wbGVkQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci1jb25zdCBFR0xpbnQgY29udGV4dEF0dHJpYnNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVS
U0lPTiwgMiwgRUdMX05PTkV9OworICAgIC8vIERpc2FibGUgUkdCQTE2Ri9SR0IxMF9BMiBvbiBB
bmRyb2lkIGR1ZSB0byBPU1dpbmRvdyBvbiBBbmRyb2lkIG5vdCBwcm92aWRpbmcgY29tcGF0aWJs
ZQorICAgIC8vIHdpbmRvd3MgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzE1NikKKyAgICBpZiAoSXNB
bmRyb2lkKCkpCisgICAgeworICAgICAgICBpZiAoSXNSR0IxMF9BMkNvbmZpZyhkaXNwbGF5LCBj
b25maWcpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKElzUkdCQTE2
RkNvbmZpZyhkaXNwbGF5LCBjb25maWcpKQorICAgICAgICAgICAgcmV0dXJuIHdpbmRvd1N1cmZh
Y2VUZXN0OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RkOjp2ZWN0b3I8RUdM
Q29uZmlnPiBHZXRDb25maWdzKEVHTERpc3BsYXkgZGlzcGxheSkKK3sKKyAgICBpbnQgbkNvbmZp
Z3MgPSAwOworICAgIGlmIChlZ2xHZXRDb25maWdzKGRpc3BsYXksIG51bGxwdHIsIDAsICZuQ29u
ZmlncykgIT0gRUdMX1RSVUUpCisgICAgeworICAgICAgICBzdGQ6OmNlcnIgPDwgIkVHTENvbnRl
eHRDb21wYXRpYmxpdHlUZXN0OiBlZ2xHZXRDb25maWdzIGVycm9yXG4iOworICAgICAgICByZXR1
cm4ge307CisgICAgfQorICAgIGlmIChuQ29uZmlncyA9PSAwKQorICAgIHsKKyAgICAgICAgc3Rk
OjpjZXJyIDw8ICJFR0xDb250ZXh0Q29tcGF0aWJsaXR5VGVzdDogbm8gY29uZmlnc1xuIjsKKyAg
ICAgICAgcmV0dXJuIHt9OworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPEVHTENvbmZpZz4gY29u
ZmlnczsKKworICAgIGludCBuUmV0dXJuZWRDb25maWdzID0gMDsKKyAgICBjb25maWdzLnJlc2l6
ZShuQ29uZmlncyk7CisgICAgaWYgKGVnbEdldENvbmZpZ3MoZGlzcGxheSwgY29uZmlncy5kYXRh
KCksIG5Db25maWdzLCAmblJldHVybmVkQ29uZmlncykgIT0gRUdMX1RSVUUpCisgICAgeworICAg
ICAgICBzdGQ6OmNlcnIgPDwgIkVHTENvbnRleHRDb21wYXRpYmxpdHlUZXN0OiBlZ2xHZXRDb25m
aWdzIGVycm9yXG4iOworICAgICAgICByZXR1cm4ge307CisgICAgfQorICAgIGlmIChuQ29uZmln
cyAhPSBuUmV0dXJuZWRDb25maWdzKQorICAgIHsKKyAgICAgICAgc3RkOjpjZXJyIDw8ICJFR0xD
b250ZXh0Q29tcGF0aWJsaXR5VGVzdDogZWdsR2V0Q29uZmlncyByZXR1cm5lZCB3cm9uZyBjb3Vu
dFxuIjsKKyAgICAgICAgcmV0dXJuIHt9OworICAgIH0KKworICAgIHJldHVybiBjb25maWdzOwor
fQorCitQbGF0Zm9ybVBhcmFtZXRlcnMgRnJvbVJlbmRlcmVyKEVHTGludCByZW5kZXJlcikKK3sK
KyAgICByZXR1cm4gV2l0aE5vRml4dHVyZShQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzKHJlbmRlcmVyKSkpOworfQorCitzdGQ6OnN0cmluZyBFR0xDb25maWdO
YW1lKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnIGNvbmZpZykKK3sKKyAgICBFR0xpbnQg
cmVkOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9SRURfU0la
RSwgJnJlZCk7CisgICAgRUdMaW50IGdyZWVuOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNw
bGF5LCBjb25maWcsIEVHTF9HUkVFTl9TSVpFLCAmZ3JlZW4pOworICAgIEVHTGludCBibHVlOwor
ICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9CTFVFX1NJWkUsICZi
bHVlKTsKKyAgICBFR0xpbnQgYWxwaGE7CisgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXks
IGNvbmZpZywgRUdMX0FMUEhBX1NJWkUsICZhbHBoYSk7CisgICAgRUdMaW50IGRlcHRoOworICAg
IGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9ERVBUSF9TSVpFLCAmZGVw
dGgpOworICAgIEVHTGludCBzdGVuY2lsOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5
LCBjb25maWcsIEVHTF9TVEVOQ0lMX1NJWkUsICZzdGVuY2lsKTsKKyAgICBFR0xpbnQgc2FtcGxl
czsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfU0FNUExFUywg
JnNhbXBsZXMpOworCisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworICAgIGlmIChyZWQg
PiAwKQorICAgIHsKKyAgICAgICAgc3Ryc3RyIDw8ICJSIiA8PCByZWQ7CisgICAgfQorICAgIGlm
IChncmVlbiA+IDApCisgICAgeworICAgICAgICBzdHJzdHIgPDwgIkciIDw8IGdyZWVuOworICAg
IH0KKyAgICBpZiAoYmx1ZSA+IDApCisgICAgeworICAgICAgICBzdHJzdHIgPDwgIkIiIDw8IGJs
dWU7CisgICAgfQorICAgIGlmIChhbHBoYSA+IDApCisgICAgeworICAgICAgICBzdHJzdHIgPDwg
IkEiIDw8IGFscGhhOworICAgIH0KKyAgICBpZiAoZGVwdGggPiAwKQorICAgIHsKKyAgICAgICAg
c3Ryc3RyIDw8ICJEIiA8PCBkZXB0aDsKKyAgICB9CisgICAgaWYgKHN0ZW5jaWwgPiAwKQorICAg
IHsKKyAgICAgICAgc3Ryc3RyIDw8ICJTIiA8PCBzdGVuY2lsOworICAgIH0KKyAgICBpZiAoc2Ft
cGxlcyA+IDApCisgICAgeworICAgICAgICBzdHJzdHIgPDwgIk1TIiA8PCBzYW1wbGVzOworICAg
IH0KKyAgICByZXR1cm4gc3Ryc3RyLnN0cigpOwogfQogCi1jbGFzcyBFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Citjb25zdCBzdGQ6OmFycmF5PEVHTGludCwg
Mz4ga0NvbnRleHRBdHRyaWJzID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xf
Tk9ORX07CisKK2NsYXNzIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCA6IHB1YmxpYyBBTkdM
RVRlc3RCYXNlLCBwdWJsaWMgdGVzdGluZzo6VGVzdAogewogICBwdWJsaWM6Ci0gICAgRUdMQ29u
dGV4dENvbXBhdGliaWxpdHlUZXN0KCkgOiBtRGlzcGxheSgwKSB7fQorICAgIEVHTENvbnRleHRD
b21wYXRpYmlsaXR5VGVzdChFR0xpbnQgcmVuZGVyZXIpCisgICAgICAgIDogQU5HTEVUZXN0QmFz
ZShGcm9tUmVuZGVyZXIocmVuZGVyZXIpKSwgbVJlbmRlcmVyKHJlbmRlcmVyKQorICAgIHt9CiAK
LSAgICB2b2lkIHRlc3RTZXRVcCgpIG92ZXJyaWRlCisgICAgdm9pZCBTZXRVcCgpIGZpbmFsCiAg
ICAgeworICAgICAgICBBTkdMRVRlc3RCYXNlOjpBTkdMRVRlc3RTZXRVcCgpOwogICAgICAgICBB
U1NFUlRfVFJVRShlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgIT0gbnVsbHB0cik7CiAKLSAgICAg
ICAgRUdMaW50IGRpc3BhdHRyc1tdID0ge0VHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBH
ZXRQYXJhbSgpLmdldFJlbmRlcmVyKCksIEVHTF9OT05FfTsKKyAgICAgICAgRUdMaW50IGRpc3Bh
dHRyc1tdID0ge0VHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBtUmVuZGVyZXIsIEVHTF9O
T05FfTsKICAgICAgICAgbURpc3BsYXkgICAgICAgICAgID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKAogICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCByZWludGVycHJldF9j
YXN0PHZvaWQgKj4oRUdMX0RFRkFVTFRfRElTUExBWSksIGRpc3BhdHRycyk7CiAgICAgICAgIEFT
U0VSVF9UUlVFKG1EaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKQEAgLTU3LDQyICsxOTIsMTQg
QEAgY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0IDogcHVibGljIEFOR0xFVGVzdAog
ICAgICAgICBBU1NFUlRfVFJVRShuQ29uZmlncyA9PSBuUmV0dXJuZWRDb25maWdzKTsKICAgICB9
CiAKLSAgICB2b2lkIHRlc3RUZWFyRG93bigpIG92ZXJyaWRlCisgICAgdm9pZCBUZWFyRG93bigp
IGZpbmFsCiAgICAgewogICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgRUdMX05PX1NV
UkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CiAgICAgICAgIGVnbFRlcm1p
bmF0ZShtRGlzcGxheSk7CisgICAgICAgIEFOR0xFVGVzdEJhc2U6OkFOR0xFVGVzdFRlYXJEb3du
KCk7CiAgICAgfQogCiAgIHByb3RlY3RlZDoKLSAgICAvLyBRdWVyaWVzIEVHTCBjb25maWcgdG8g
ZGV0ZXJtaW5lIGlmIG11bHRpc2FtcGxlZCBvciBub3QKLSAgICBib29sIGlzTXVsdGlzYW1wbGVk
Q29uZmlnKEVHTENvbmZpZyBjb25maWcpCi0gICAgewotICAgICAgICBFR0xpbnQgc2FtcGxlcyA9
IDA7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnLCBFR0xfU0FN
UExFUywgJnNhbXBsZXMpOwotICAgICAgICByZXR1cm4gKHNhbXBsZXMgPiAxKTsKLSAgICB9Ci0K
LSAgICAvLyBUaGUgb25seSBjb25maWdzIHdpdGggMTYtYml0cyBmb3IgZWFjaCBvZiByZWQsIGdy
ZWVuLCBibHVlLCBhbmQgYWxwaGEgaXMgR0xfUkdCQTE2RgotICAgIGJvb2wgaXNSR0JBMTZGQ29u
ZmlnKEVHTENvbmZpZyBjb25maWcpCi0gICAgewotICAgICAgICBFR0xpbnQgcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGE7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmln
LCBFR0xfUkVEX1NJWkUsICZyZWQpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3Bs
YXksIGNvbmZpZywgRUdMX0dSRUVOX1NJWkUsICZncmVlbik7Ci0gICAgICAgIGVnbEdldENvbmZp
Z0F0dHJpYihtRGlzcGxheSwgY29uZmlnLCBFR0xfQkxVRV9TSVpFLCAmYmx1ZSk7Ci0gICAgICAg
IGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnLCBFR0xfQUxQSEFfU0laRSwgJmFs
cGhhKTsKLSAgICAgICAgcmV0dXJuICgocmVkID09IDE2KSAmJiAoZ3JlZW4gPT0gMTYpICYmIChi
bHVlID09IDE2KSAmJiAoYWxwaGEgPT0gMTYpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzUkdCMTBf
QTJDb25maWcoRUdMQ29uZmlnIGNvbmZpZykKLSAgICB7Ci0gICAgICAgIEVHTGludCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBj
b25maWcsIEVHTF9SRURfU0laRSwgJnJlZCk7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYiht
RGlzcGxheSwgY29uZmlnLCBFR0xfR1JFRU5fU0laRSwgJmdyZWVuKTsKLSAgICAgICAgZWdsR2V0
Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9CTFVFX1NJWkUsICZibHVlKTsKLSAg
ICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9BTFBIQV9TSVpF
LCAmYWxwaGEpOwotICAgICAgICByZXR1cm4gKChyZWQgPT0gMTApICYmIChncmVlbiA9PSAxMCkg
JiYgKGJsdWUgPT0gMTApICYmIChhbHBoYSA9PSAyKSk7Ci0gICAgfQotCiAgICAgYm9vbCBhcmVD
b25maWdzQ29tcGF0aWJsZShFR0xDb25maWcgYzEsIEVHTENvbmZpZyBjMiwgRUdMaW50IHN1cmZh
Y2VCaXQpCiAgICAgewogICAgICAgICBFR0xpbnQgY29sb3JCdWZmZXJUeXBlMSwgY29sb3JCdWZm
ZXJUeXBlMjsKQEAgLTE0MywxMCArMjUwLDkgQEAgY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxp
dHlUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICBPU1dpbmRvdyAqb3NXaW5kb3cgPSBP
U1dpbmRvdzo6TmV3KCk7CiAgICAgICAgIEFTU0VSVF9UUlVFKG9zV2luZG93ICE9IG51bGxwdHIp
OwogICAgICAgICBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMQ29udGV4dENvbXBhdGliaWxpdHlU
ZXN0IiwgNTAwLCA1MDApOwotICAgICAgICBvc1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKIAog
ICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQgPQotICAgICAgICAgICAgZWdsQ3JlYXRlQ29udGV4
dChtRGlzcGxheSwgY29udGV4dENvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJz
KTsKKyAgICAgICAgICAgIGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIGNvbnRleHRDb25maWcs
IEVHTF9OT19DT05URVhULCBrQ29udGV4dEF0dHJpYnMuZGF0YSgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUoY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCk7CiAKICAgICAgICAgRUdMU3VyZmFjZSB3
aW5kb3cgPQpAQCAtMTc2LDcgKzI4Miw3IEBAIGNsYXNzIEVHTENvbnRleHRDb21wYXRpYmlsaXR5
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGNvbXBhdGlibGUpIGNvbnN0CiAgICAgewogICAgICAgICBFR0xDb250ZXh0IGNvbnRl
eHQgPQotICAgICAgICAgICAgZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgY29udGV4dENvbmZp
ZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJzKTsKKyAgICAgICAgICAgIGVnbENyZWF0
ZUNvbnRleHQobURpc3BsYXksIGNvbnRleHRDb25maWcsIEVHTF9OT19DT05URVhULCBrQ29udGV4
dEF0dHJpYnMuZGF0YSgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoY29udGV4dCAhPSBFR0xfTk9f
Q09OVEVYVCk7CiAKICAgICAgICAgY29uc3QgRUdMaW50IHBCdWZmZXJBdHRyaWJzW10gPSB7CkBA
IC0yMDIsNyArMzA4LDggQEAgY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAogICAgIH0KIAogICAgIHN0ZDo6dmVjdG9yPEVHTENvbmZpZz4gbUNvbmZp
Z3M7Ci0gICAgRUdMRGlzcGxheSBtRGlzcGxheTsKKyAgICBFR0xEaXNwbGF5IG1EaXNwbGF5ID0g
RUdMX05PX0RJU1BMQVk7CisgICAgRUdMaW50IG1SZW5kZXJlciAgICA9IDA7CiAKICAgcHJpdmF0
ZToKICAgICB2b2lkIHRlc3RDbGVhclN1cmZhY2UoRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xDb25m
aWcgc3VyZmFjZUNvbmZpZywgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdApAQCAtMjQ4LDE1NSAr
MzU1LDI3NiBAQCBjbGFzcyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0CiAKIC8vIEJhc2ljIHRlc3QgY2hlY2tpbmcgY29udGV4dHMgYW5kIHdpbmRvd3MgY3Jl
YXRlZCB3aXRoIHRoZQogLy8gc2FtZSBjb25maWcgY2FuIHJlbmRlci4KLVRFU1RfUChFR0xDb250
ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFdpbmRvd1NhbWVDb25maWcpCitjbGFzcyBFR0xDb250ZXh0
Q29tcGF0aWJpbGl0eVRlc3RfV2luZG93U2FtZUNvbmZpZyA6IHB1YmxpYyBFR0xDb250ZXh0Q29t
cGF0aWJpbGl0eVRlc3QKIHsKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNEZWJ1ZygpKTsgIC8v
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjEyMQorICBwdWJsaWM6CisgICAgRUdMQ29udGV4dENvbXBh
dGliaWxpdHlUZXN0X1dpbmRvd1NhbWVDb25maWcoRUdMaW50IHJlbmRlcmVyLCBzaXplX3QgY29u
ZmlnSW5kZXgpCisgICAgICAgIDogRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0KHJlbmRlcmVy
KSwgbUNvbmZpZ0luZGV4KGNvbmZpZ0luZGV4KQorICAgIHt9CiAKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1Db25maWdzLnNpemUoKTsgaSsrKQorICAgIHZvaWQgVGVzdEJvZHkoKSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgRUdMQ29uZmlnIGNvbmZpZyA9IG1Db25maWdzW2ldOworICAg
ICAgICBFR0xDb25maWcgY29uZmlnID0gbUNvbmZpZ3NbbUNvbmZpZ0luZGV4XTsKIAogICAgICAg
ICBFR0xpbnQgc3VyZmFjZVR5cGU7CiAgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxh
eSwgY29uZmlnLCBFR0xfU1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOwogICAgICAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKIAotICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1dJTkRP
V19CSVQpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIERpc2FibGluZyBtdWx0aXNh
bXBsZWQgY29uZmlndXJhdGlvbnMgZHVlIHRvIHRlc3QgaW5zdGFiaWxpdHkgd2l0aCB2YXJpb3Vz
IGdyYXBoaWNzCi0gICAgICAgICAgICAvLyBjYXJkcywgYW5kIFJHQkExNkYvUkdCMTBfQTIgb24g
QW5kcm9pZCBkdWUgdG8gT1NXaW5kb3cgb24gQW5kcm9pZCBub3QgcHJvdmlkaW5nCi0gICAgICAg
ICAgICAvLyBjb21wYXRpYmxlIHdpbmRvd3MgKGFuZ2xlYnVnLmNvbS8zMTU2KQotICAgICAgICAg
ICAgaWYgKGlzTXVsdGlzYW1wbGVkQ29uZmlnKGNvbmZpZykgfHwKLSAgICAgICAgICAgICAgICAo
SXNBbmRyb2lkKCkgJiYgKGlzUkdCMTBfQTJDb25maWcoY29uZmlnKSB8fCBpc1JHQkExNkZDb25m
aWcoY29uZmlnKSkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVzdFdpbmRvd0NvbXBhdGliaWxpdHkoY29uZmln
LCBjb25maWcsIHRydWUpOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1NLSVBfVEVTVF9JRigo
c3VyZmFjZVR5cGUgJiBFR0xfV0lORE9XX0JJVCkgPT0gMCk7CisKKyAgICAgICAgdGVzdFdpbmRv
d0NvbXBhdGliaWxpdHkoY29uZmlnLCBjb25maWcsIHRydWUpOwogICAgIH0KLX0KKworICAgIEVH
TGludCBtQ29uZmlnSW5kZXg7Cit9OwogCiAvLyBCYXNpYyB0ZXN0IGNoZWNraW5nIGNvbnRleHRz
IGFuZCBwYnVmZmVycyBjcmVhdGVkIHdpdGggdGhlCiAvLyBzYW1lIGNvbmZpZyBjYW4gcmVuZGVy
LgotVEVTVF9QKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwgUGJ1ZmZlclNhbWVDb25maWcp
CitjbGFzcyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RfUGJ1ZmZlclNhbWVDb25maWcgOiBw
dWJsaWMgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0CiB7Ci0gICAgQU5HTEVfU0tJUF9URVNU
X0lGKElzRGVidWcoKSk7ICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzIxMjEKKyAgcHVibGljOgor
ICAgIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9QYnVmZmVyU2FtZUNvbmZpZyhFR0xpbnQg
cmVuZGVyZXIsIHNpemVfdCBjb25maWdJbmRleCkKKyAgICAgICAgOiBFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3QocmVuZGVyZXIpLCBtQ29uZmlnSW5kZXgoY29uZmlnSW5kZXgpCisgICAge30K
IAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCisgICAg
dm9pZCBUZXN0Qm9keSgpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBFR0xDb25maWcgY29uZmln
ID0gbUNvbmZpZ3NbaV07CisgICAgICAgIEVHTENvbmZpZyBjb25maWcgPSBtQ29uZmlnc1ttQ29u
ZmlnSW5kZXhdOwogCiAgICAgICAgIEVHTGludCBzdXJmYWNlVHlwZTsKICAgICAgICAgZWdsR2V0
Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNl
VHlwZSk7CiAgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCi0gICAgICAgIGlmICgoc3Vy
ZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIERpc2FibGluZyBtdWx0aXNhbXBsZWQgY29uZmlndXJhdGlvbnMgZHVlIHRvIHRlc3QgaW5z
dGFiaWxpdHkgd2l0aCB2YXJpb3VzIGdyYXBoaWNzCi0gICAgICAgICAgICAvLyBjYXJkcywgYW5k
IFJHQjEwX0EyIG9uIEFuZHJvaWQgZHVlIHRvIE9TV2luZG93IG9uIEFuZHJvaWQgbm90IHByb3Zp
ZGluZyBjb21wYXRpYmxlCi0gICAgICAgICAgICAvLyB3aW5kb3dzIChhbmdsZWJ1Zy5jb20vMzE1
NikKLSAgICAgICAgICAgIGlmIChpc011bHRpc2FtcGxlZENvbmZpZyhjb25maWcpIHx8IChJc0Fu
ZHJvaWQoKSAmJiBpc1JHQjEwX0EyQ29uZmlnKGNvbmZpZykpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVzdFBi
dWZmZXJDb21wYXRpYmlsaXR5KGNvbmZpZywgY29uZmlnLCB0cnVlKTsKLSAgICAgICAgfQorICAg
ICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoKHN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJfQklUKSA9
PSAwKTsKKworICAgICAgICB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoY29uZmlnLCBjb25maWcs
IHRydWUpOwogICAgIH0KLX0KKworICAgIEVHTGludCBtQ29uZmlnSW5kZXg7Cit9OwogCiAvLyBD
aGVjayB0aGF0IGEgY29udGV4dCByZW5kZXJpbmcgdG8gYSB3aW5kb3cgd2l0aCBhIGRpZmZlcmVu
dAogLy8gY29uZmlnIHdvcmtzIG9yIGVycm9ycyBhY2NvcmRpbmcgdG8gdGhlIEVHTCBjb21wYXRp
YmlsaXR5IHJ1bGVzCi1URVNUX1AoRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0LCBXaW5kb3dE
aWZmZXJlbnRDb25maWcpCitjbGFzcyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RfV2luZG93
RGlmZmVyZW50Q29uZmlnIDogcHVibGljIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdAogewot
ICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0RlYnVnKCkpOyAgLy8gaHR0cDovL2FuZ2xlYnVnLmNv
bS8yMTIxCisgIHB1YmxpYzoKKyAgICBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RfV2luZG93
RGlmZmVyZW50Q29uZmlnKEVHTGludCByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb25maWdJbmRleEEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Y29uZmlnSW5kZXhCKQorICAgICAgICA6IEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdChyZW5k
ZXJlciksCisgICAgICAgICAgbUNvbmZpZ0luZGV4QShjb25maWdJbmRleEEpLAorICAgICAgICAg
IG1Db25maWdJbmRleEIoY29uZmlnSW5kZXhCKQorICAgIHt9CisKKyAgICB2b2lkIFRlc3RCb2R5
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEVHTENvbmZpZyBjb25maWcxID0gbUNvbmZpZ3Nb
bUNvbmZpZ0luZGV4QV07CisgICAgICAgIEVHTENvbmZpZyBjb25maWcyID0gbUNvbmZpZ3NbbUNv
bmZpZ0luZGV4Ql07CisKKyAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOworICAgICAgICBlZ2xH
ZXRDb25maWdBdHRyaWIobURpc3BsYXksIGNvbmZpZzEsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJm
YWNlVHlwZSk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCi0gICAgLy8gYW5nbGVi
dWcuY29tLzIxODMKLSAgICAvLyBBY3R1YWxseSBmYWlsZWQgb25seSBvbiAoSXNJbnRlbCgpICYm
IElzV2luZG93cygpICYmIElzRDNEMTEoKSksCi0gICAgLy8gYnV0IGl0J3MgaW1wb3NzaWJsZSB0
byBkbyBvdGhlciB0ZXN0cyBzaW5jZSBHTF9SRU5ERVJFUiBpcyBOVUxMCi0gICAgQU5HTEVfU0tJ
UF9URVNUX0lGKElzV2luZG93cygpKTsKKyAgICAgICAgQU5HTEVfU0tJUF9URVNUX0lGKChzdXJm
YWNlVHlwZSAmIEVHTF9XSU5ET1dfQklUKSA9PSAwKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCisgICAgICAgIHRlc3RXaW5kb3dDb21wYXRpYmls
aXR5KGNvbmZpZzEsIGNvbmZpZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
ZUNvbmZpZ3NDb21wYXRpYmxlKGNvbmZpZzEsIGNvbmZpZzIsIEVHTF9XSU5ET1dfQklUKSk7Cisg
ICAgfQorCisgICAgRUdMaW50IG1Db25maWdJbmRleEE7CisgICAgRUdMaW50IG1Db25maWdJbmRl
eEI7Cit9OworCisvLyBDaGVjayB0aGF0IGEgY29udGV4dCByZW5kZXJpbmcgdG8gYSBwYnVmZmVy
IHdpdGggYSBkaWZmZXJlbnQKKy8vIGNvbmZpZyB3b3JrcyBvciBlcnJvcnMgYWNjb3JkaW5nIHRv
IHRoZSBFR0wgY29tcGF0aWJpbGl0eSBydWxlcworY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxp
dHlUZXN0X1BidWZmZXJEaWZmZXJlbnRDb25maWcgOiBwdWJsaWMgRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0Cit7CisgIHB1YmxpYzoKKyAgICBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3Rf
UGJ1ZmZlckRpZmZlcmVudENvbmZpZyhFR0xpbnQgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbmZpZ0luZGV4
QSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgY29uZmlnSW5kZXhCKQorICAgICAgICA6IEVHTENvbnRleHRDb21wYXRpYmlsaXR5
VGVzdChyZW5kZXJlciksCisgICAgICAgICAgbUNvbmZpZ0luZGV4QShjb25maWdJbmRleEEpLAor
ICAgICAgICAgIG1Db25maWdJbmRleEIoY29uZmlnSW5kZXhCKQorICAgIHt9CisKKyAgICB2b2lk
IFRlc3RCb2R5KCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEVHTENvbmZpZyBjb25maWcxID0g
bUNvbmZpZ3NbaV07Ci0gICAgICAgIC8vIERpc2FibGluZyBtdWx0aXNhbXBsZWQgY29uZmlndXJh
dGlvbnMgZHVlIHRvIHRlc3QgaW5zdGFiaWxpdHkgd2l0aCB2YXJpb3VzIGdyYXBoaWNzCi0gICAg
ICAgIC8vIGNhcmRzLCBhbmQgUkdCQTE2Ri9SR0IxMF9BMiBvbiBBbmRyb2lkIGR1ZSB0byBPU1dp
bmRvdyBvbiBBbmRyb2lkIG5vdCBwcm92aWRpbmcKLSAgICAgICAgLy8gY29tcGF0aWJsZSB3aW5k
b3dzIChhbmdsZWJ1Zy5jb20vMzE1NikKLSAgICAgICAgaWYgKGlzTXVsdGlzYW1wbGVkQ29uZmln
KGNvbmZpZzEpIHx8Ci0gICAgICAgICAgICAoSXNBbmRyb2lkKCkgJiYgKGlzUkdCMTBfQTJDb25m
aWcoY29uZmlnMSkgfHwgaXNSR0JBMTZGQ29uZmlnKGNvbmZpZzEpKSkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIEVHTENvbmZpZyBjb25maWcx
ID0gbUNvbmZpZ3NbbUNvbmZpZ0luZGV4QV07CisgICAgICAgIEVHTENvbmZpZyBjb25maWcyID0g
bUNvbmZpZ3NbbUNvbmZpZ0luZGV4Ql07CiAKICAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOwog
ICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGNvbmZpZzEsIEVHTF9TVVJGQUNF
X1RZUEUsICZzdXJmYWNlVHlwZSk7CiAgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCi0g
ICAgICAgIGlmICgoc3VyZmFjZVR5cGUgJiBFR0xfV0lORE9XX0JJVCkgPT0gMCkKLSAgICAgICAg
eworICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoKHN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJf
QklUKSA9PSAwKTsKKworICAgICAgICB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoY29uZmlnMSwg
Y29uZmlnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZUNvbmZpZ3NDb21w
YXRpYmxlKGNvbmZpZzEsIGNvbmZpZzIsIEVHTF9QQlVGRkVSX0JJVCkpOworICAgIH0KKworICAg
IEVHTGludCBtQ29uZmlnSW5kZXhBOworICAgIEVHTGludCBtQ29uZmlnSW5kZXhCOworfTsKK30g
IC8vIG5hbWVzcGFjZQorCit2b2lkIFJlZ2lzdGVyQ29udGV4dENvbXBhdGliaWxpdHlUZXN0cygp
Cit7CisgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiByZW5kZXJlcnMgPSB7eworICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0QxMV9BTkdMRSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFLAorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdM
RSwKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfVlVMS0FOX0FOR0xFLAorICAgIH19
OworCisgICAgTG9hZEVudHJ5UG9pbnRzV2l0aFV0aWxMb2FkZXIoKTsKKworICAgIGlmIChlZ2xH
ZXRQbGF0Zm9ybURpc3BsYXlFWFQgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHN0ZDo6Y2Vy
ciA8PCAiRUdMQ29udGV4dENvbXBhdGlibGl0eVRlc3Q6IG1pc3NpbmcgZWdsR2V0UGxhdGZvcm1E
aXNwbGF5RVhUXG4iOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChFR0xpbnQg
cmVuZGVyZXIgOiByZW5kZXJlcnMpCisgICAgeworICAgICAgICBQbGF0Zm9ybVBhcmFtZXRlcnMg
cGFyYW1zID0gRnJvbVJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICAgICAgaWYgKElzUGxhdGZvcm1B
dmFpbGFibGUocGFyYW1zKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEVHTGlu
dCBkaXNwYXR0cnNbXSA9IHtFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSwgcmVuZGVyZXIs
IEVHTF9OT05FfTsKKyAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1E
aXNwbGF5RVhUKAorICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCByZWludGVy
cHJldF9jYXN0PHZvaWQgKj4oRUdMX0RFRkFVTFRfRElTUExBWSksIGRpc3BhdHRycyk7CisgICAg
ICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdGQ6OmNlcnIgPDwgIkVHTENvbnRleHRDb21wYXRpYmxpdHlUZXN0OiBlZ2xHZXRQbGF0Zm9y
bURpc3BsYXlFWFQgZXJyb3JcbiI7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1Db25maWdzLnNpemUoKTsgaisrKQorICAg
ICAgICBpZiAoZWdsSW5pdGlhbGl6ZShkaXNwbGF5LCBudWxscHRyLCBudWxscHRyKSAhPSBFR0xf
VFJVRSkKICAgICAgICAgewotICAgICAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzIgPSBtQ29uZmln
c1tqXTsKLSAgICAgICAgICAgIC8vIERpc2FibGluZyBtdWx0aXNhbXBsZWQgY29uZmlndXJhdGlv
bnMgZHVlIHRvIHRlc3QgaW5zdGFiaWxpdHkgd2l0aCB2YXJpb3VzIGdyYXBoaWNzCi0gICAgICAg
ICAgICAvLyBjYXJkcywgYW5kIFJHQkExNkYvUkdCMTBfQTIgb24gQW5kcm9pZCBkdWUgdG8gT1NX
aW5kb3cgb24gQW5kcm9pZCBub3QgcHJvdmlkaW5nCi0gICAgICAgICAgICAvLyBjb21wYXRpYmxl
IHdpbmRvd3MgKGFuZ2xlYnVnLmNvbS8zMTU2KQotICAgICAgICAgICAgaWYgKGlzTXVsdGlzYW1w
bGVkQ29uZmlnKGNvbmZpZzIpIHx8Ci0gICAgICAgICAgICAgICAgKElzQW5kcm9pZCgpICYmIChp
c1JHQjEwX0EyQ29uZmlnKGNvbmZpZzIpIHx8IGlzUkdCQTE2RkNvbmZpZyhjb25maWcyKSkpKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGVzdFdpbmRvd0NvbXBhdGliaWxpdHkoY29uZmlnMSwgY29uZmlnMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZUNvbmZpZ3NDb21wYXRpYmxlKGNv
bmZpZzEsIGNvbmZpZzIsIEVHTF9XSU5ET1dfQklUKSk7CisgICAgICAgICAgICBzdGQ6OmNlcnIg
PDwgIkVHTENvbnRleHRDb21wYXRpYmxpdHlUZXN0OiBlZ2xJbml0aWFsaXplIGVycm9yXG4iOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfQotfQogCi0vLyBDaGVjayB0aGF0
IGEgY29udGV4dCByZW5kZXJpbmcgdG8gYSBwYnVmZmVyIHdpdGggYSBkaWZmZXJlbnQKLS8vIGNv
bmZpZyB3b3JrcyBvciBlcnJvcnMgYWNjb3JkaW5nIHRvIHRoZSBFR0wgY29tcGF0aWJpbGl0eSBy
dWxlcwotVEVTVF9QKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwgUGJ1ZmZlckRpZmZlcmVu
dENvbmZpZykKLXsKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNEZWJ1ZygpKTsgIC8vIGh0dHA6
Ly9hbmdsZWJ1Zy5jb20vMjEyMQorICAgICAgICBzdGQ6OnZlY3RvcjxFR0xDb25maWc+IGNvbmZp
Z3MgPSBHZXRDb25maWdzKGRpc3BsYXkpOworICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gY29uZmlnTmFtZXM7CisgICAgICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyTmFtZSA9IEdldFJl
bmRlcmVyTmFtZShyZW5kZXJlcik7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db25m
aWdzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzEgPSBtQ29u
Zmlnc1tpXTsKLSAgICAgICAgLy8gRGlzYWJsaW5nIG11bHRpc2FtcGxlZCBjb25maWd1cmF0aW9u
cyBkdWUgdG8gdGVzdCBpbnN0YWJpbGl0eSB3aXRoIHZhcmlvdXMgZ3JhcGhpY3MKLSAgICAgICAg
Ly8gY2FyZHMsIGFuZCBSR0IxMF9BMiBvbiBBbmRyb2lkIGR1ZSB0byBPU1dpbmRvdyBvbiBBbmRy
b2lkIG5vdCBwcm92aWRpbmcgY29tcGF0aWJsZQotICAgICAgICAvLyB3aW5kb3dzIChhbmdsZWJ1
Zy5jb20vMzE1NikKLSAgICAgICAgaWYgKGlzTXVsdGlzYW1wbGVkQ29uZmlnKGNvbmZpZzEpIHx8
IChJc0FuZHJvaWQoKSAmJiBpc1JHQjEwX0EyQ29uZmlnKGNvbmZpZzEpKSkKKyAgICAgICAgZm9y
IChFR0xDb25maWcgY29uZmlnIDogY29uZmlncykKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBjb25maWdOYW1lcy5wdXNoX2JhY2soRUdMQ29uZmlnTmFtZShk
aXNwbGF5LCBjb25maWcpKTsKICAgICAgICAgfQogCi0gICAgICAgIEVHTGludCBzdXJmYWNlVHlw
ZTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcxLCBFR0xfU1VS
RkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
KyAgICAgICAgZm9yIChzaXplX3QgY29uZmlnSW5kZXggPSAwOyBjb25maWdJbmRleCA8IGNvbmZp
Z3Muc2l6ZSgpOyArK2NvbmZpZ0luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoU2hv
dWxkU2tpcENvbmZpZyhkaXNwbGF5LCBjb25maWdzW2NvbmZpZ0luZGV4XSwgdHJ1ZSkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKChzdXJmYWNlVHlwZSAmIEVHTF9Q
QlVGRkVSX0JJVCkgPT0gMCkKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG5hbWVTdHI7
CisgICAgICAgICAgICBuYW1lU3RyIDw8ICJXaW5kb3dTYW1lQ29uZmlnLyIgPDwgcmVuZGVyZXJO
YW1lIDw8ICJfIiA8PCBjb25maWdOYW1lc1tjb25maWdJbmRleF07CisgICAgICAgICAgICBzdGQ6
OnN0cmluZyBuYW1lID0gbmFtZVN0ci5zdHIoKTsKKworICAgICAgICAgICAgdGVzdGluZzo6UmVn
aXN0ZXJUZXN0KAorICAgICAgICAgICAgICAgICJFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3Qi
LCBuYW1lLmNfc3RyKCksIG51bGxwdHIsIG51bGxwdHIsIF9fRklMRV9fLCBfX0xJTkVfXywKKyAg
ICAgICAgICAgICAgICBbcmVuZGVyZXIsIGNvbmZpZ0luZGV4XSgpIC0+IEVHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdCAqIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFR0xDb250
ZXh0Q29tcGF0aWJpbGl0eVRlc3RfV2luZG93U2FtZUNvbmZpZyhyZW5kZXJlciwgY29uZmlnSW5k
ZXgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXpl
X3QgY29uZmlnSW5kZXggPSAwOyBjb25maWdJbmRleCA8IGNvbmZpZ3Muc2l6ZSgpOyArK2NvbmZp
Z0luZGV4KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlm
IChTaG91bGRTa2lwQ29uZmlnKGRpc3BsYXksIGNvbmZpZ3NbY29uZmlnSW5kZXhdLCBmYWxzZSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIG5hbWVTdHI7CisgICAgICAgICAgICBuYW1lU3RyIDw8ICJQYnVmZmVyU2FtZUNvbmZpZy8i
IDw8IHJlbmRlcmVyTmFtZSA8PCAiXyIgPDwgY29uZmlnTmFtZXNbY29uZmlnSW5kZXhdOworICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgbmFtZSA9IG5hbWVTdHIuc3RyKCk7CisKKyAgICAgICAgICAg
IHRlc3Rpbmc6OlJlZ2lzdGVyVGVzdCgKKyAgICAgICAgICAgICAgICAiRUdMQ29udGV4dENvbXBh
dGliaWxpdHlUZXN0IiwgbmFtZS5jX3N0cigpLCBudWxscHRyLCBudWxscHRyLCBfX0ZJTEVfXywg
X19MSU5FX18sCisgICAgICAgICAgICAgICAgW3JlbmRlcmVyLCBjb25maWdJbmRleF0oKSAtPiBF
R0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QgKiB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0X1BidWZmZXJTYW1lQ29uZmlnKHJlbmRl
cmVyLCBjb25maWdJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1Db25maWdzLnNpemUoKTsgaisrKQorICAgICAg
ICAvLyBCZWNhdXNlIHRoZXJlIGFyZSBzbyBtYW55IHBlcm11dGF0aW9ucywgd2Ugc2tpcCBzb21l
IGNvbmZpZ3MgcmFuZG9tbHkuCisgICAgICAgIC8vIEF0dGVtcHQgdG8gcnVuIGF0IG1vc3QgMTAw
IHRlc3RzIHBlciByZW5kZXJlci4KKyAgICAgICAgUk5HIHJuZygwKTsKKyAgICAgICAgY29uc3Rl
eHByIHVpbnQzMl90IGtNYXhpbXVtVGVzdHNQZXJSZW5kZXJlciA9IDEwMDsKKyAgICAgICAgY29u
c3QgdWludDMyX3Qga1Rlc3RDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb25maWdzLnNp
emUoKSAqIGNvbmZpZ3Muc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgZmxvYXQga1NraXBQID0KKyAg
ICAgICAgICAgIDEuMGYgLSAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bWluKGtNYXhpbXVtVGVz
dHNQZXJSZW5kZXJlciwga1Rlc3RDb3VudCkpIC8KKyAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGtUZXN0Q291bnQpKTsKKworICAgICAgICBmb3IgKHNpemVfdCBjb25maWdJ
bmRleEEgPSAwOyBjb25maWdJbmRleEEgPCBjb25maWdzLnNpemUoKTsgKytjb25maWdJbmRleEEp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcyID0gbUNvbmZpZ3Nbal07
Ci0gICAgICAgICAgICAvLyBEaXNhYmxpbmcgbXVsdGlzYW1wbGVkIGNvbmZpZ3VyYXRpb25zIGR1
ZSB0byB0ZXN0IGluc3RhYmlsaXR5IHdpdGggdmFyaW91cyBncmFwaGljcwotICAgICAgICAgICAg
Ly8gY2FyZHMsIGFuZCBSR0IxMF9BMiBvbiBBbmRyb2lkIGR1ZSB0byBPU1dpbmRvdyBvbiBBbmRy
b2lkIG5vdCBwcm92aWRpbmcgY29tcGF0aWJsZQotICAgICAgICAgICAgLy8gd2luZG93cyAoYW5n
bGVidWcuY29tLzMxNTYpCi0gICAgICAgICAgICBpZiAoaXNNdWx0aXNhbXBsZWRDb25maWcoY29u
ZmlnMikgfHwgKElzQW5kcm9pZCgpICYmIGlzUkdCMTBfQTJDb25maWcoY29uZmlnMikpKQorICAg
ICAgICAgICAgaWYgKFNob3VsZFNraXBDb25maWcoZGlzcGxheSwgY29uZmlnc1tjb25maWdJbmRl
eEFdLCB0cnVlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgY29uZmlnTmFtZUEgPSBjb25maWdOYW1lc1tjb25maWdJbmRleEFdOworCisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBjb25maWdJbmRleEIgPSAwOyBjb25maWdJbmRleEIgPCBjb25m
aWdzLnNpemUoKTsgKytjb25maWdJbmRleEIpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKFNob3VsZFNraXBDb25maWcoZGlzcGxheSwgY29uZmlnc1tjb25maWdJbmRleEJdLCB0
cnVlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBp
ZiAocm5nLnJhbmRvbUZsb2F0KCkgPCBrU2tpcFApCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uZmlnTmFtZUIgPSBjb25maWdO
YW1lc1tjb25maWdJbmRleEJdOworCisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
bmFtZVN0cjsKKyAgICAgICAgICAgICAgICBuYW1lU3RyIDw8ICJXaW5kb3dEaWZmZXJlbnRDb25m
aWcvIiA8PCByZW5kZXJlck5hbWUgPDwgIl8iIDw8IGNvbmZpZ05hbWVBIDw8ICJfIgorICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgY29uZmlnTmFtZUI7CisgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgbmFtZSA9IG5hbWVTdHIuc3RyKCk7CisKKyAgICAgICAgICAgICAgICB0ZXN0aW5nOjpS
ZWdpc3RlclRlc3QoCisgICAgICAgICAgICAgICAgICAgICJFR0xDb250ZXh0Q29tcGF0aWJpbGl0
eVRlc3QiLCBuYW1lLmNfc3RyKCksIG51bGxwdHIsIG51bGxwdHIsIF9fRklMRV9fLAorICAgICAg
ICAgICAgICAgICAgICBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICAgW3JlbmRlcmVyLCBj
b25maWdJbmRleEEsIGNvbmZpZ0luZGV4Ql0oKSAtPiBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRl
c3QgKiB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdF9XaW5kb3dEaWZmZXJlbnRDb25maWcoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIsIGNvbmZpZ0luZGV4QSwgY29uZmlnSW5kZXhCKTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KHNpemVfdCBjb25maWdJbmRleEEgPSAwOyBjb25maWdJbmRleEEgPCBjb25maWdzLnNpemUoKTsg
Kytjb25maWdJbmRleEEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChTaG91bGRTa2lwQ29u
ZmlnKGRpc3BsYXksIGNvbmZpZ3NbY29uZmlnSW5kZXhBXSwgZmFsc2UpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25maWdOYW1lQSA9IGNv
bmZpZ05hbWVzW2NvbmZpZ0luZGV4QV07CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbmZp
Z0luZGV4QiA9IDA7IGNvbmZpZ0luZGV4QiA8IGNvbmZpZ3Muc2l6ZSgpOyArK2NvbmZpZ0luZGV4
QikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoU2hvdWxkU2tpcENvbmZpZyhk
aXNwbGF5LCBjb25maWdzW2NvbmZpZ0luZGV4Ql0sIGZhbHNlKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAocm5nLnJhbmRvbUZsb2F0KCkgPCBr
U2tpcFApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgY29uZmlnTmFtZUIgPSBjb25maWdOYW1lc1tjb25maWdJbmRleEJdOworCisg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbmFtZVN0cjsKKyAgICAgICAgICAgICAg
ICBuYW1lU3RyIDw8ICJQYnVmZmVyRGlmZmVyZW50Q29uZmlnLyIgPDwgcmVuZGVyZXJOYW1lIDw8
ICJfIiA8PCBjb25maWdOYW1lQSA8PCAiXyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNv
bmZpZ05hbWVCOworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBuYW1lU3RyLnN0
cigpOworCisgICAgICAgICAgICAgICAgdGVzdGluZzo6UmVnaXN0ZXJUZXN0KAorICAgICAgICAg
ICAgICAgICAgICAiRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0IiwgbmFtZS5jX3N0cigpLCBu
dWxscHRyLCBudWxscHRyLCBfX0ZJTEVfXywKKyAgICAgICAgICAgICAgICAgICAgX19MSU5FX18s
CisgICAgICAgICAgICAgICAgICAgIFtyZW5kZXJlciwgY29uZmlnSW5kZXhBLCBjb25maWdJbmRl
eEJdKCkgLT4gRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0ICogeworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RfUGJ1ZmZlckRp
ZmZlcmVudENvbmZpZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciwgY29u
ZmlnSW5kZXhBLCBjb25maWdJbmRleEIpOworICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRlc3RQYnVmZmVyQ29tcGF0aWJpbGl0eShjb25maWcxLCBj
b25maWcyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZUNvbmZpZ3ND
b21wYXRpYmxlKGNvbmZpZzEsIGNvbmZpZzIsIEVHTF9QQlVGRkVSX0JJVCkpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGVnbFRlcm1pbmF0ZShkaXNwbGF5KSA9PSBFR0xfRkFMU0UpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiRUdMQ29udGV4dENvbXBhdGlibGl0eVRl
c3Q6IGVnbFRlcm1pbmF0ZSBlcnJvclxuIjsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIH0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xDb250ZXh0Q29tcGF0aWJp
bGl0eVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIFdpdGhOb0ZpeHR1cmUoRVMyX0QzRDko
KSksCi0gICAgICAgICAgICAgICAgICAgICAgIFdpdGhOb0ZpeHR1cmUoRVMyX0QzRDExKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICBXaXRoTm9GaXh0dXJlKEVTMl9PUEVOR0woKSksCi0gICAg
ICAgICAgICAgICAgICAgICAgIFdpdGhOb0ZpeHR1cmUoRVMyX09QRU5HTEVTKCkpLAotICAgICAg
ICAgICAgICAgICAgICAgICBXaXRoTm9GaXh0dXJlKEVTMl9WVUxLQU4oKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0
U2hhcmluZ1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90
ZXN0cy9FR0xDb250ZXh0U2hhcmluZ1Rlc3QuY3BwCmluZGV4IGJjZjgwMjBiYzZlNzE2ZTAzNmYx
MjMwYTdkZWM1NDM0MGQzNGU5MmUuLmEyMTAzZDc2ZmZlNDY4MDIwMGU4Njc1Y2Q5ZTAyOGJkNDM4
MjUzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xf
dGVzdHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFyaW5nVGVzdC5jcHAKQEAgLTM3
Niw5ICszNzYsNiBAQCBURVNUX1AoRUdMQ29udGV4dFNoYXJpbmdUZXN0LCBEZWxldGVSZWFkZXJP
ZlNoYXJlZFRleHR1cmUpCiB7CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFwbGF0Zm9ybVN1cHBv
cnRzTXVsdGl0aHJlYWRpbmcoKSk7CiAKLSAgICAvLyBCdWcgaW4gdGhlIFZ1bGthbiBiYWNrZW5k
LiBodHRwOi8vYW5nbGVidWcuY29tLzQxMzAKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNWdWxr
YW4oKSk7Ci0KICAgICAvLyBJbml0aWFsaXplIGNvbnRleHRzCiAgICAgRUdMV2luZG93ICp3aW5k
b3cgPSBnZXRFR0xXaW5kb3coKTsKICAgICBFR0xEaXNwbGF5IGRweSAgICA9IHdpbmRvdy0+Z2V0
RGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xEaXJlY3RDb21wb3NpdGlvblRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xEaXJlY3RDb21wb3NpdGlvblRlc3QuY3Bw
CmluZGV4IGZjMDYzMDI4ZDZiM2ZiNjZkNmI0MTc3OTE2ZmM0M2UzNzUzZTA4YjYuLjk4ZjA4OTZm
YjI3NGM2MzMyOGY3MWExMzZmMTkwZTBkZWVmNTBkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMRGlyZWN0Q29tcG9zaXRpb25UZXN0
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VH
TERpcmVjdENvbXBvc2l0aW9uVGVzdC5jcHAKQEAgLTI1Niw2ICsyNTYsOSBAQCBURVNUX1AoRUdM
RGlyZWN0Q29tcG9zaXRpb25UZXN0LCBSZW5kZXJTb2xpZENvbG9yKQogICAgIC8vIE9ubHkgYXR0
ZW1wdCB0aGlzIHRlc3Qgd2hlbiBvbiBXaW5kb3dzIDEwIDE4MDMrCiAgICAgQU5HTEVfU0tJUF9U
RVNUX0lGKCFtUm9IZWxwZXIuU3VwcG9ydGVkV2luZG93c1JlbGVhc2UoKSk7CiAKKyAgICAvLyBo
dHRwOi8vY3JidWcuY29tLzEwNjM5NjIKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoaXNEM0QxMVJl
bmRlcmVyKCkgJiYgSXNJbnRlbCgpKTsKKwogICAgIEVHTFN1cmZhY2Ugc3tudWxscHRyfTsKICAg
ICBDcmVhdGVTdXJmYWNlKG1BbmdsZUhvc3QsIHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTElPU3VyZmFjZUNsaWVudEJ1ZmZl
clRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LmNwcAppbmRleCAwMDg5OGM1OTdlYjJiYjU2ZjA3
ODY3N2EzNDQyYjU3MzIxOGJmM2FmLi5mYmUzZTFhMTFhMmY3YjBhNTYxNzlhNmE5MTUzNzIzNjk2
MTc3ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMSU9TdXJmYWNlQ2xpZW50QnVmZmVy
VGVzdC5jcHAKQEAgLTIwLDYgKzIwLDggQEAgdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwogbmFtZXNw
YWNlCiB7CiAKK2NvbnN0ZXhwciBjaGFyIGtJT1N1cmZhY2VFeHRbXSA9ICJFR0xfQU5HTEVfaW9z
dXJmYWNlX2NsaWVudF9idWZmZXIiOworCiB2b2lkIEFkZEludGVnZXJWYWx1ZShDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IENGU3RyaW5nUmVmIGtleSwgaW50MzJfdCB2
YWx1ZSkKIHsKICAgICBDRk51bWJlclJlZiBudW1iZXIgPSBDRk51bWJlckNyZWF0ZShudWxscHRy
LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmdmFsdWUpOwpAQCAtOTMsNiArOTUsMzEgQEAgU2NvcGVk
SU9TdXJmYWNlUmVmIENyZWF0ZVNpbmdsZVBsYW5lSU9TdXJmYWNlKGludCB3aWR0aCwKIGNsYXNz
IElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiB7CiAgIHByb3Rl
Y3RlZDoKKyAgICBFR0xpbnQgZ2V0VGV4dHVyZVRhcmdldCgpIGNvbnN0CisgICAgeworICAgICAg
ICBFR0xpbnQgdGFyZ2V0ID0gMDsKKyAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5
LCBtQ29uZmlnLCBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRSwgJnRhcmdldCk7Cisg
ICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorCisgICAgR0xpbnQgZ2V0R0xUZXh0dXJlVGFy
Z2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEVHTGludCB0YXJnZXRFR0wgPSBnZXRUZXh0dXJl
VGFyZ2V0KCk7CisgICAgICAgIEdMZW51bSB0YXJnZXRHTCAgPSAwOworICAgICAgICBzd2l0Y2gg
KHRhcmdldEVHTCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoK
KyAgICAgICAgICAgICAgICB0YXJnZXRHTCA9IEdMX1RFWFRVUkVfMkQ7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRToK
KyAgICAgICAgICAgICAgICB0YXJnZXRHTCA9IEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGFyZ2V0R0w7CisgICAgfQor
CiAgICAgSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCgpIDogbUNvbmZpZygwKSwgbURpc3BsYXko
bnVsbHB0cikge30KIAogICAgIHZvaWQgdGVzdFNldFVwKCkgb3ZlcnJpZGUKQEAgLTExNCw3ICsx
NDEsNyBAQCBjbGFzcyBJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0IDogcHVibGljIEFOR0xFVGVz
dAogICAgICAgICAgICAgRUdMX1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwK
ICAgICAgICAgICAgIEVHTF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LAog
ICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICBwbGFuZSwKLSAg
ICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVf
UkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAg
ICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9JTlRF
Uk5BTF9GT1JNQVRfQU5HTEUsIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgRUdMX1RFWFRV
UkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SR0JBLAogICAgICAgICAgICAg
RUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICB0eXBlLApAQCAtMTM5LDcgKzE2Niw3
IEBAIGNsYXNzIElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAg
ICAgICAgIGNyZWF0ZUlPU3VyZmFjZVBidWZmZXIoaW9TdXJmYWNlLCB3aWR0aCwgaGVpZ2h0LCBw
bGFuZSwgaW50ZXJuYWxGb3JtYXQsIHR5cGUsIHBidWZmZXIpOwogCiAgICAgICAgIC8vIEJpbmQg
dGhlIHBidWZmZXIKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9B
TkdMRSwgKnRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKGdldEdMVGV4dHVyZVRhcmdl
dCgpLCAqdGV4dHVyZSk7CiAgICAgICAgIEVHTEJvb2xlYW4gcmVzdWx0ID0gZWdsQmluZFRleElt
YWdlKG1EaXNwbGF5LCAqcGJ1ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKTsKICAgICAgICAgRVhQRUNU
X0VHTF9UUlVFKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOwpAQCAtMTU5
LDggKzE4Niw4IEBAIGNsYXNzIElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0CiAgICAgICAgIEdMRnJhbWVidWZmZXIgZmJvOwogICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlLCAwKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIGdldEdMVGV4dHVyZVRh
cmdldCgpLCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAg
ICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKICAgICAgICAgRVhQRUNUX0dMRU5VTV9FUShnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpLCBHTF9GUkFNRUJVRkZFUl9DT01Q
TEVURSk7CiAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwpAQCAtMjE0LDggKzI0MSw3IEBA
IGNsYXNzIElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAgICAg
ICAgICAgICAie1xuIgogICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24ueHksIDAuMCwgMS4wKTtcbiIKICAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIGNvbnN0
ZXhwciBjaGFyIGtGU1tdID0KKyAgICAgICAgY29uc3RleHByIGNoYXIga0ZTX3JlY3RbXSA9CiAg
ICAgICAgICAgICAiI2V4dGVuc2lvbiBHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUgOiByZXF1aXJl
XG4iCiAgICAgICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCiAgICAgICAgICAg
ICAidW5pZm9ybSBzYW1wbGVyMkRSZWN0IHRleDtcbiIKQEAgLTIyMyw4ICsyNDksMTYgQEAgY2xh
c3MgSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKICAgICAgICAg
ICAgICJ7XG4iCiAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRFJlY3Qo
dGV4LCB2ZWMyKDAsIDApKTtcbiIKICAgICAgICAgICAgICJ9XG4iOworICAgICAgICBjb25zdGV4
cHIgY2hhciBrRlNfMkRbXSA9CisgICAgICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCisgICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgorICAgICAgICAgICAg
InZvaWQgbWFpbigpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICBnbF9G
cmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKDAsIDApKTtcbiIKKyAgICAgICAgICAgICJ9
XG4iOwogCi0gICAgICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwga1ZTLCBrRlMpOworICAg
ICAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGtWUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAoZ2V0VGV4dHVyZVRhcmdldCgpID09IEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSA/
IGtGU19yZWN0IDoga0ZTXzJEKSk7CiAgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKIAog
ICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0
ZXgiKTsKQEAgLTI1Myw4ICsyODcsOCBAQCBjbGFzcyBJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0
IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICBHTEZyYW1lYnVmZmVyIGlvc3VyZmFjZUZibzsK
ICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGlvc3VyZmFjZUZibyk7
CiAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9S
RUNUQU5HTEVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSwg
MCk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBnZXRHTFRleHR1cmVUYXJnZXQoKSwgdGV4dHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwKTsKICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CiAgICAgICAgIEVYUEVDVF9HTEVOVU1fRVEoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZS
QU1FQlVGRkVSKSwgR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOwogICAgICAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKQEAgLTMwOSw2ICszNDMsOCBAQCBjbGFzcyBJT1N1cmZhY2VDbGllbnRCdWZm
ZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsK
ICAgICB9CiAKKyAgICBib29sIGhhc0lPU3VyZmFjZUV4dCgpIGNvbnN0IHsgcmV0dXJuIElzRUdM
RGlzcGxheUV4dGVuc2lvbkVuYWJsZWQobURpc3BsYXksIGtJT1N1cmZhY2VFeHQpOyB9CisKICAg
ICBFR0xDb25maWcgbUNvbmZpZzsKICAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OwogfTsKQEAgLTMx
Niw2ICszNTIsOCBAQCBjbGFzcyBJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0IDogcHVibGljIEFO
R0xFVGVzdAogLy8gVGVzdCB1c2luZyBCR1JBODg4OCBJT1N1cmZhY2VzIGZvciByZW5kZXJpbmcK
IFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZW5kZXJUb0JHUkE4ODg4SU9TdXJm
YWNlKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9TdXJmYWNlRXh0KCkpOworCiAg
ICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSA9IENyZWF0ZVNpbmdsZVBsYW5lSU9TdXJm
YWNlKDEsIDEsICdCR1JBJywgNCk7CiAKICAgICBHTENvbG9yIGNvbG9yKDMsIDIsIDEsIDQpOwpA
QCAtMzI1LDYgKzM2MywxMSBAQCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgUmVu
ZGVyVG9CR1JBODg4OElPU3VyZmFjZSkKIC8vIFRlc3QgcmVhZGluZyBmcm9tIEJHUkE4ODg4IElP
U3VyZmFjZXMKIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZWFkRnJvbUJHUkE4
ODg4SU9TdXJmYWNlKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9TdXJmYWNlRXh0
KCkpOworCisgICAgLy8gVE9ETyhodHRwOi8vYW5nbGVidWcuY29tLzQzNjkpCisgICAgQU5HTEVf
U0tJUF9URVNUX0lGKGlzU3dpZnRzaGFkZXIoKSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYg
aW9TdXJmYWNlID0gQ3JlYXRlU2luZ2xlUGxhbmVJT1N1cmZhY2UoMSwgMSwgJ0JHUkEnLCA0KTsK
IAogICAgIEdMQ29sb3IgY29sb3IoMywgMiwgMSwgNCk7CkBAIC0zMzQsNiArMzc3LDExIEBAIFRF
U1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZWFkRnJvbUJHUkE4ODg4SU9TdXJmYWNl
KQogLy8gVGVzdCB1c2luZyBCR1JYODg4OCBJT1N1cmZhY2VzIGZvciByZW5kZXJpbmcKIFRFU1Rf
UChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZW5kZXJUb0JHUlg4ODg4SU9TdXJmYWNlKQog
eworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9TdXJmYWNlRXh0KCkpOworCisgICAgLy8g
VE9ETyhodHRwOi8vYW5nbGVidWcuY29tLzQzNjkpCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGlz
U3dpZnRzaGFkZXIoKSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gQ3Jl
YXRlU2luZ2xlUGxhbmVJT1N1cmZhY2UoMSwgMSwgJ0JHUkEnLCA0KTsKIAogICAgIEdMQ29sb3Ig
Y29sb3IoMywgMiwgMSwgMjU1KTsKQEAgLTM0Myw2ICszOTEsOCBAQCBURVNUX1AoSU9TdXJmYWNl
Q2xpZW50QnVmZmVyVGVzdCwgUmVuZGVyVG9CR1JYODg4OElPU3VyZmFjZSkKIC8vIFRlc3QgcmVh
ZGluZyBmcm9tIEJHUlg4ODg4IElPU3VyZmFjZXMKIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZm
ZXJUZXN0LCBSZWFkRnJvbUJHUlg4ODg4SU9TdXJmYWNlKQogeworICAgIEFOR0xFX1NLSVBfVEVT
VF9JRighaGFzSU9TdXJmYWNlRXh0KCkpOworCiAgICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlvU3Vy
ZmFjZSA9IENyZWF0ZVNpbmdsZVBsYW5lSU9TdXJmYWNlKDEsIDEsICdCR1JBJywgNCk7CiAKICAg
ICBHTENvbG9yIGNvbG9yKDMsIDIsIDEsIDQpOwpAQCAtMzUyLDYgKzQwMiw4IEBAIFRFU1RfUChJ
T1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZWFkRnJvbUJHUlg4ODg4SU9TdXJmYWNlKQogLy8g
VGVzdCB1c2luZyBSRzg4IElPU3VyZmFjZXMgZm9yIHJlbmRlcmluZwogVEVTVF9QKElPU3VyZmFj
ZUNsaWVudEJ1ZmZlclRlc3QsIFJlbmRlclRvUkc4OElPU3VyZmFjZSkKIHsKKyAgICBBTkdMRV9T
S0lQX1RFU1RfSUYoIWhhc0lPU3VyZmFjZUV4dCgpKTsKKwogICAgIFNjb3BlZElPU3VyZmFjZVJl
ZiBpb1N1cmZhY2UgPSBDcmVhdGVTaW5nbGVQbGFuZUlPU3VyZmFjZSgxLCAxLCAnMkMwOCcsIDIp
OwogCiAgICAgdWludDhfdCBjb2xvclsyXSA9IHsxLCAyfTsKQEAgLTM2MSw2ICs0MTMsOCBAQCBU
RVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgUmVuZGVyVG9SRzg4SU9TdXJmYWNlKQog
Ly8gVGVzdCByZWFkaW5nIGZyb20gUkc4OCBJT1N1cmZhY2VzCiBURVNUX1AoSU9TdXJmYWNlQ2xp
ZW50QnVmZmVyVGVzdCwgUmVhZEZyb21SRzg4SU9TdXJmYWNlKQogeworICAgIEFOR0xFX1NLSVBf
VEVTVF9JRighaGFzSU9TdXJmYWNlRXh0KCkpOworCiAgICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlv
U3VyZmFjZSA9IENyZWF0ZVNpbmdsZVBsYW5lSU9TdXJmYWNlKDEsIDEsICcyQzA4JywgMik7CiAK
ICAgICB1aW50OF90IGNvbG9yWzJdID0gezEsIDJ9OwpAQCAtMzcwLDYgKzQyNCw4IEBAIFRFU1Rf
UChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZWFkRnJvbVJHODhJT1N1cmZhY2UpCiAvLyBU
ZXN0IHVzaW5nIFI4IElPU3VyZmFjZXMgZm9yIHJlbmRlcmluZwogVEVTVF9QKElPU3VyZmFjZUNs
aWVudEJ1ZmZlclRlc3QsIFJlbmRlclRvUjhJT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJUF9U
RVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYgaW9T
dXJmYWNlID0gQ3JlYXRlU2luZ2xlUGxhbmVJT1N1cmZhY2UoMSwgMSwgJ0wwMDgnLCAxKTsKIAog
ICAgIHVpbnQ4X3QgY29sb3IgPSAxOwpAQCAtMzc5LDYgKzQzNSw4IEBAIFRFU1RfUChJT1N1cmZh
Y2VDbGllbnRCdWZmZXJUZXN0LCBSZW5kZXJUb1I4SU9TdXJmYWNlKQogLy8gVGVzdCByZWFkaW5n
IGZyb20gUjggSU9TdXJmYWNlcwogVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIFJl
YWRGcm9tUjhJT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZh
Y2VFeHQoKSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gQ3JlYXRlU2lu
Z2xlUGxhbmVJT1N1cmZhY2UoMSwgMSwgJ0wwMDgnLCAxKTsKIAogICAgIHVpbnQ4X3QgY29sb3Ig
PSAxOwpAQCAtMzg4LDggKzQ0NiwxMiBAQCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVz
dCwgUmVhZEZyb21SOElPU3VyZmFjZSkKIC8vIFRlc3QgdXNpbmcgUjE2IElPU3VyZmFjZXMgZm9y
IHJlbmRlcmluZwogVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIFJlbmRlclRvUjE2
SU9TdXJmYWNlKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9TdXJmYWNlRXh0KCkp
OworCiAgICAgLy8gVGhpcyB0ZXN0IG9ubHkgd29ya3Mgb24gRVMzLgogICAgIEFOR0xFX1NLSVBf
VEVTVF9JRihnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpOworICAgIC8vIFRPRE8oaHR0cDov
L2FuZ2xlYnVnLmNvbS80MzY5KQorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihpc1N3aWZ0c2hhZGVy
KCkpOwogCiAgICAgLy8gSEFDSyhjd2FsbGV6QGNocm9taXVtLm9yZykgJ0wwMTYnIGRvZXNuJ3Qg
c2VlbSB0byBiZSBhbiBvZmZpY2lhbCBwaXhlbCBmb3JtYXQgYnV0IGl0IHdvcmtzCiAgICAgLy8g
c29vb29vb28gbGV0J3MgdGVzdCB1c2luZyBpdApAQCAtNDA2LDEyICs0NjgsMTYgQEAgVEVTVF9Q
KElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIFJlbmRlclRvUjE2SU9TdXJmYWNlKQogLy8gVGVz
dCBibGl0dGluZyBmcm9tIElPU3VyZmFjZQogVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRl
c3QsIEJsaXRGcm9tSU9TdXJmYWNlKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9T
dXJmYWNlRXh0KCkpOworCiAgICAgZG9CbGl0VGVzdCh0cnVlLCAyLCAyKTsKIH0KIAogLy8gVGVz
dCBibGl0dGluZyB0byBJT1N1cmZhY2UKIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0
LCBCbGl0VG9JT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZh
Y2VFeHQoKSk7CisKICAgICBkb0JsaXRUZXN0KGZhbHNlLCAyLCAyKTsKIH0KIApAQCAtNDE5LDYg
KzQ4NSw4IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBCbGl0VG9JT1N1cmZh
Y2UpCiAvLyBJT1N1cmZhY2UKIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdh
dGl2ZVZhbGlkYXRpb25NaXNzaW5nQXR0cmlidXRlcykKIHsKKyAgICBBTkdMRV9TS0lQX1RFU1Rf
SUYoIWhhc0lPU3VyZmFjZUV4dCgpKTsKKwogICAgIFNjb3BlZElPU3VyZmFjZVJlZiBpb1N1cmZh
Y2UgPSBDcmVhdGVTaW5nbGVQbGFuZUlPU3VyZmFjZSgxMCwgMTAsICdCR1JBJywgNCk7CiAKICAg
ICAvLyBTdWNjZXNzIGNhc2UKQEAgLTQyOCw3ICs0OTYsNyBAQCBURVNUX1AoSU9TdXJmYWNlQ2xp
ZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uTWlzc2luZ0F0dHJpYnV0ZXMpCiAgICAg
ICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAg
ICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVH
TF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsICAgICAgICAgMCwKLSAgICAgICAgICAgIEVHTF9URVhU
VVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAor
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJl
VGFyZ2V0KCksCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUs
IEdMX0JHUkFfRVhULAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAg
ICAgICBFR0xfVEVYVFVSRV9SR0JBLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdM
RSwgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLApAQCAtNDUwLDcgKzUxOCw3IEBAIFRFU1Rf
UChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25NaXNzaW5nQXR0
cmlidXRlcykKICAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYnNbXSA9IHsKICAgICAgICAgICAg
IEVHTF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xf
SU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVS
RV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAg
ICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRh
cmdldCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBH
TF9CR1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAg
ICAgRUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUs
ICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTQ3MCw3ICs1MzgsNyBAQCBURVNUX1Ao
SU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uTWlzc2luZ0F0dHJp
YnV0ZXMpCiAgICAgICAgIGNvbnN0IEVHTGludCBhdHRyaWJzW10gPSB7CiAgICAgICAgICAgICBF
R0xfV0lEVEgsICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0lP
U1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICAwLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVf
VEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAg
ICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJn
ZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xf
QkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAgICAg
IEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC00OTAsNyArNTU4LDcgQEAgVEVTVF9QKElP
U3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbk1pc3NpbmdBdHRyaWJ1
dGVzKQogICAgICAgICBjb25zdCBFR0xpbnQgYXR0cmlic1tdID0gewogICAgICAgICAgICAgRUdM
X1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9IRUlH
SFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9U
QVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAgICAg
ICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRhcmdl
dCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBHTF9C
R1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAgICAg
RUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsICAg
ICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTUzMiw3ICs2MDAsNyBAQCBURVNUX1AoSU9T
dXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uTWlzc2luZ0F0dHJpYnV0
ZXMpCiAgICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAog
ICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAg
ICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsICAgICAgICAgMCwKLSAgICAgICAgICAg
IEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBn
ZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAg
ICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9UWVBF
X0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCiAgICAgICAgICAgICBFR0xfTk9O
RSwgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT05FLApAQCAtNTUzLDcgKzYyMSw3IEBA
IFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25NaXNz
aW5nQXR0cmlidXRlcykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAgICAgICAg
IDEwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICAwLAot
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAg
ICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lO
VEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCiAgICAgICAgICAgICBF
R0xfTk9ORSwgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT05FLApAQCAtNTczLDcgKzY0
MSw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRp
b25NaXNzaW5nQXR0cmlidXRlcykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAg
ICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAg
ICAwLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQs
ICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhU
VVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAg
ICAgICBFR0xfTk9ORSwgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT05FLApAQCAtNTkw
LDYgKzY1OCw4IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZh
bGlkYXRpb25NaXNzaW5nQXR0cmlidXRlcykKIC8vIFRlc3QgdGhlIHZhbGlkYXRpb24gZXJyb3Jz
IGZvciBiYWQgcGFyYW1ldGVycyBmb3IgZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIg
d2l0aCBJT1N1cmZhY2UKIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2
ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFz
SU9TdXJmYWNlRXh0KCkpOworCiAgICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSA9IENy
ZWF0ZVNpbmdsZVBsYW5lSU9TdXJmYWNlKDEwLCAxMCwgJ0JHUkEnLCA0KTsKIAogICAgIC8vIFN1
Y2Nlc3MgY2FzZQpAQCAtNTk5LDcgKzY2OSw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZm
ZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgRUdM
X1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9IRUlH
SFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSU9TVVJGQUNF
X1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQs
ICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAgICAgICAgICAg
IEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRhcmdldCgpLAog
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBHTF9CR1JBX0VY
VCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAgICAgRUdMX1RF
WFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsICAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwKQEAgLTYyMiw3ICs2OTIsNyBAQCBURVNUX1AoSU9TdXJmYWNl
Q2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uQmFkQXR0cmlidXRlcykKICAgICAg
ICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAg
ICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdM
X0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICAwLAotICAgICAgICAgICAgRUdMX1RFWFRV
UkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisg
ICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIGdldFRleHR1cmVU
YXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwg
R0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAg
ICAgIEVHTF9URVhUVVJFX1JHQiwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUs
ICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTY0Myw3ICs3MTMsNyBAQCBURVNUX1Ao
SU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uQmFkQXR0cmlidXRl
cykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAg
ICAgICAgICAgIEVHTF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAg
ICAgICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBF
R0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9B
TkdMRSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0
VGV4dHVyZVRhcmdldCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFU
X0FOR0xFLCBHTF9CR1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAg
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZ
UEVfQU5HTEUsICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTY2NCw3ICs3MzQsNyBA
QCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uQmFk
QXR0cmlidXRlcykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAgICAgICAgIDEw
LAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICAwLAotICAg
ICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9S
RUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAg
ICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVS
TkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9G
T1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC02ODUs
NyArNzU1LDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFs
aWRhdGlvbkJhZEF0dHJpYnV0ZXMpCiAgICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAgICAg
ICAgICAgICAwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAg
ICAwLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQs
ICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhU
VVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAg
ICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
CkBAIC03MDYsNyArNzc2LDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5l
Z2F0aXZlVmFsaWRhdGlvbkJhZEF0dHJpYnV0ZXMpCiAgICAgICAgICAgICBFR0xfV0lEVEgsICAg
ICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAg
ICAgICAgICAgICAgICAgICAxMSwKICAgICAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5H
TEUsICAgICAgICAgMCwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAg
ICAgICAgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRV
UkVfVEFSR0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAg
ICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAogICAgICAg
ICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SR0JB
LAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLApAQCAtNzIwLDE0ICs3OTAsMjcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1
ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbkJhZEF0dHJpYnV0ZXMpCiAgICAgICAgIEVYUEVD
VF9FR0xfRVJST1IoRUdMX0JBRF9BVFRSSUJVVEUpOwogICAgIH0KIAotICAgIC8vIEVHTF9URVhU
VVJFX0ZPUk1BVCBtdXN0IGJlIGF0IEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRQorICAgIC8v
IEVHTF9URVhUVVJFX0ZPUk1BVCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBjb25maWcncyB0ZXh0dXJl
IHRhcmdldAogICAgIHsKKyAgICAgICAgRUdMaW50IHRhcmdldCAgICAgID0gZ2V0VGV4dHVyZVRh
cmdldCgpOworICAgICAgICBFR0xpbnQgd3JvbmdUYXJnZXQgPSAwOworICAgICAgICBzd2l0Y2gg
KHRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV9SRUNUQU5H
TEVfQU5HTEU6CisgICAgICAgICAgICAgICAgd3JvbmdUYXJnZXQgPSBFR0xfVEVYVFVSRV8yRDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRUdMX1RFWFRVUkVfMkQ6
CisgICAgICAgICAgICAgICAgd3JvbmdUYXJnZXQgPSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5H
TEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYK
ICAgICAgICAgY29uc3QgRUdMaW50IGF0dHJpYnNbXSA9IHsKICAgICAgICAgICAgIEVHTF9XSURU
SCwgICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAg
ICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFO
RV9BTkdMRSwgICAgICAgICAwLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAg
ICAgICAgICAgICBFR0xfVEVYVFVSRV8yRCwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdF
VCwgICAgICAgICAgICAgICAgd3JvbmdUYXJnZXQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9J
TlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAogICAgICAgICAgICAgRUdMX1RFWFRV
UkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SR0JBLAogICAgICAgICAgICAg
RUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLApAQCAt
NzQ4LDcgKzgzMSw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2
ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgRUdMX1dJRFRILCAgICAgICAg
ICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9IRUlHSFQsICAgICAgICAgICAg
ICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAg
ICAgICAgIC0xLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAg
ICBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9U
QVJHRVQsICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVH
TF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAg
ICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAg
ICAgICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0JZVEUsCkBAIC03NjksNyArODUyLDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRl
c3QsIE5lZ2F0aXZlVmFsaWRhdGlvbkJhZEF0dHJpYnV0ZXMpCiAgICAgICAgICAgICBFR0xfV0lE
VEgsICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwg
ICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExB
TkVfQU5HTEUsICAgICAgICAgMSwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAg
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdM
X1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAg
ICAgICAgICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAog
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9SR0JBLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBH
TF9VTlNJR05FRF9CWVRFLApAQCAtNzkwLDcgKzg3Myw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGll
bnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogICAgICAgICAg
ICAgRUdMX1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVH
TF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSU9T
VVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9U
QVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAgICAg
ICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRhcmdl
dCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBHTF9S
R0JBLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9SR0JBLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLApAQCAtODA4LDYgKzg5MSw4IEBAIFRFU1RfUChJT1N1cmZh
Y2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogLy8g
VGVzdCBJT1N1cmZhY2UgcGJ1ZmZlcnMgY2FuIGJlIG1hZGUgY3VycmVudAogVEVTVF9QKElPU3Vy
ZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE1ha2VDdXJyZW50KQogeworICAgIEFOR0xFX1NLSVBfVEVT
VF9JRighaGFzSU9TdXJmYWNlRXh0KCkpOworCiAgICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlvU3Vy
ZmFjZSA9IENyZWF0ZVNpbmdsZVBsYW5lSU9TdXJmYWNlKDEwLCAxMCwgJ0JHUkEnLCA0KTsKIAog
ICAgIEVHTFN1cmZhY2UgcGJ1ZmZlcjsKQEAgLTgyNyw0ICs5MTIsOCBAQCBURVNUX1AoSU9TdXJm
YWNlQ2xpZW50QnVmZmVyVGVzdCwgTWFrZUN1cnJlbnQpCiAvLyBUT0RPKGN3YWxsZXpAY2hyb21p
dW0ub3JnKTogVGVzdCBzZXR0aW5nIHdpZHRoIGFuZCBoZWlnaHQgdG8gbGVzcyB0aGFuIHRoZSBJ
T1N1cmZhY2UncyB3b3JrIGFzCiAvLyBleHBlY3RlZC4KIAotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBFUzJfT1BFTkdMKCksIEVTM19PUEVOR0woKSk7
CitBTkdMRV9JTlNUQU5USUFURV9URVNUKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzJfVlVMS0FOX1NXSUZUU0hB
REVSKCksCisgICAgICAgICAgICAgICAgICAgICAgIEVTM19WVUxLQU5fU1dJRlRTSEFERVIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3Rz
L0VHTFN1cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9l
Z2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3BwCmluZGV4IDE4ZDk3ODZiNDBiNmI0MTdhYWVmZjEy
ODYyMjRjZGEwNGZhYThkMjMuLmEzYjE3NThmZDExNzY0NTE4ZTU0NjRmZDkxM2Y1YWNmYjk4Y2Y2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVz
dHMvRUdMU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgY2xh
c3MgRUdMU3VyZmFjZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAgICAgICAgIEFTU0VSVF9UUlVF
KGVnbEluaXRpYWxpemUobURpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24pID09
IEVHTF9UUlVFKTsKIAogICAgICAgICBlZ2xCaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7CisgICAgICAg
IEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogICAgIH0KIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbnRl
eHQoKQpAQCAtMTIyLDI2ICsxMjIsMzQgQEAgY2xhc3MgRUdMU3VyZmFjZVRlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0CiAgICAgICAgIEVHTGludCBjb250ZXh0QXR0aWJ1dGVzW10gPSB7RUdMX0NPTlRF
WFRfQ0xJRU5UX1ZFUlNJT04sIEdldFBhcmFtKCkubWFqb3JWZXJzaW9uLCBFR0xfTk9ORX07CiAK
ICAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBu
dWxscHRyLCBjb250ZXh0QXR0aWJ1dGVzKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJy
b3IoKSA9PSBFR0xfU1VDQ0VTUyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCiAg
ICAgICAgIG1TZWNvbmRDb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZp
ZywgbnVsbHB0ciwgY29udGV4dEF0dGlidXRlcyk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdl
dEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
ICAgICB9CiAKICAgICB2b2lkIGluaXRpYWxpemVTdXJmYWNlKEVHTENvbmZpZyBjb25maWcpCiAg
ICAgewogICAgICAgICBtQ29uZmlnID0gY29uZmlnOwogCi0gICAgICAgIHN0ZDo6dmVjdG9yPEVH
TGludD4gc3VyZmFjZUF0dHJpYnV0ZXM7Ci0gICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzLnB1c2hf
YmFjayhFR0xfTk9ORSk7Ci0gICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xf
Tk9ORSk7CisgICAgICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gd2luZG93QXR0cmlidXRlczsKKyAg
ICAgICAgd2luZG93QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwogCiAgICAgICAgIC8v
IENyZWF0ZSBmaXJzdCB3aW5kb3cgc3VyZmFjZQogICAgICAgICBtV2luZG93U3VyZmFjZSA9IGVn
bENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0
aXZlV2luZG93KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmc3VyZmFjZUF0dHJpYnV0ZXNbMF0pOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRF
cnJvcigpID09IEVHTF9TVUNDRVNTKTsKLQotICAgICAgICBtUGJ1ZmZlclN1cmZhY2UgPSBlZ2xD
cmVhdGVQYnVmZmVyU3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgJnN1cmZhY2VBdHRyaWJ1dGVz
WzBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd0F0dHJpYnV0ZXMuZGF0YSgpKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisK
KyAgICAgICAgLy8gR2l2ZSBwYnVmZmVyIG5vbi16ZXJvIGRpbWVuc2lvbnMuCisgICAgICAgIHN0
ZDo6dmVjdG9yPEVHTGludD4gcGJ1ZmZlckF0dHJpYnV0ZXM7CisgICAgICAgIHBidWZmZXJBdHRy
aWJ1dGVzLnB1c2hfYmFjayhFR0xfV0lEVEgpOworICAgICAgICBwYnVmZmVyQXR0cmlidXRlcy5w
dXNoX2JhY2soNjQpOworICAgICAgICBwYnVmZmVyQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0hF
SUdIVCk7CisgICAgICAgIHBidWZmZXJBdHRyaWJ1dGVzLnB1c2hfYmFjayg2NCk7CisgICAgICAg
IHBidWZmZXJBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfTk9ORSk7CisKKyAgICAgICAgbVBidWZm
ZXJTdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UobURpc3BsYXksIG1Db25maWcsIHBi
dWZmZXJBdHRyaWJ1dGVzLmRhdGEoKSk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwog
ICAgICAgICBpbml0aWFsaXplQ29udGV4dCgpOwogICAgIH0KIApAQCAtMjA2LDcgKzIxNCw3IEBA
IGNsYXNzIEVHTFN1cmZhY2VUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgIHZvaWQgcnVuTWVz
c2FnZUxvb3BUZXN0KEVHTFN1cmZhY2Ugc2Vjb25kU3VyZmFjZSwgRUdMQ29udGV4dCBzZWNvbmRD
b250ZXh0KQogICAgIHsKICAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dT
dXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgICAgICBBU1NFUlRfVFJVRShl
Z2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7CiAKICAgICAgICAgLy8gTWFrZSBhIHNlY29uZCBjb250ZXh0IGN1cnJlbnQKICAgICAgICAg
ZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIHNlY29uZFN1cmZhY2UsIHNlY29uZFN1cmZhY2UsIHNl
Y29uZENvbnRleHQpOwpAQCAtMjE5LDEwICsyMjcsMTAgQEAgY2xhc3MgRUdMU3VyZmFjZVRlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0CiAKICAgICAgICAgbVdpbmRvd1N1cmZhY2UgPSBlZ2xDcmVhdGVX
aW5kb3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5hdGl2ZVdpbmRv
dygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1
cmZhY2VBdHRyaWJ1dGVzWzBdKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9
PSBFR0xfU1VDQ0VTUyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCiAgICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1cmZhY2Us
IG1Db250ZXh0KTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VD
Q0VTUyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCiAgICAgICAgIG1PU1dpbmRv
dy0+c2lnbmFsVGVzdEV2ZW50KCk7CiAgICAgICAgIG1PU1dpbmRvdy0+bWVzc2FnZUxvb3AoKTsK
QEAgLTM3NSwxNyArMzgzLDE0IEBAIFRFU1RfUChFR0xTdXJmYWNlVGVzdCwgTWVzc2FnZUxvb3BC
dWdDb250ZXh0KQogLy8gVGVzdCBhIGJ1ZyB3aGVyZSBjYWxsaW5nIG1ha2VDdXJyZW50IHR3aWNl
IHdvdWxkIHJlbGVhc2UgdGhlIHN1cmZhY2UKIFRFU1RfUChFR0xTdXJmYWNlVGVzdCwgTWFrZUN1
cnJlbnRUd2ljZSkKIHsKLSAgICAvLyBUT0RPKHN5b3Vzc2VmaSk6IGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMzEyMwotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0FuZHJvaWQoKSk7Ci0KICAgICBpbml0
aWFsaXplRGlzcGxheSgpOwogICAgIGluaXRpYWxpemVTdXJmYWNlV2l0aERlZmF1bHRDb25maWco
KTsKIAogICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRv
d1N1cmZhY2UsIG1Db250ZXh0KTsKLSAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVH
TF9TVUNDRVNTKTsKKyAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKIAogICAgIGVnbE1ha2VDdXJy
ZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1cmZhY2UsIG1Db250ZXh0KTsK
LSAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKKyAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKIAogICAgIC8vIFNpbXBsZSBvcGVyYXRpb24gdG8gdGVzdCB0aGUg
RkJPIGlzIHNldCBhcHByb3ByaWF0ZWx5CiAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKQEAgLTM5NCw4ICszOTksOCBAQCBURVNUX1AoRUdMU3VyZmFjZVRlc3QsIE1ha2VDdXJyZW50
VHdpY2UpCiAvLyBUZXN0IHRoYXQgdGhlIHdpbmRvdyBzdXJmYWNlIGlzIGNvcnJlY3RseSByZXNp
emVkIGFmdGVyIGNhbGxpbmcgc3dhcEJ1ZmZlcnMKIFRFU1RfUChFR0xTdXJmYWNlVGVzdCwgUmVz
aXplV2luZG93KQogewotICAgIC8vIFRPRE8oc3lvdXNzZWZpKTogaHR0cDovL2FuZ2xlYnVnLmNv
bS8zMTIzCi0gICAgQU5HTEVfU0tJUF9URVNUX0lGKElzQW5kcm9pZCgpKTsKKyAgICAvLyBodHRw
Oi8vYW5nbGVidWcuY29tLzQ0NTMKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoaXNWdWxrYW5SZW5k
ZXJlcigpICYmIElzTGludXgoKSAmJiBJc0ludGVsKCkpOwogCiAgICAgLy8gTmVjZXNzYXJ5IGZv
ciBhIHdpbmRvdyByZXNpemluZyB0ZXN0IGlmIHRoZXJlIGlzIG5vIHBlci1mcmFtZSB3aW5kb3cg
c2l6ZSBxdWVyeQogICAgIG1PU1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKQEAgLTQ0Niw4ICs0
NTEsMTMgQEAgVEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBSZXNpemVXaW5kb3cpCiAvLyBUZXN0IHRo
YXQgdGhlIGJhY2tidWZmZXIgaXMgY29ycmVjdGx5IHJlc2l6ZWQgYWZ0ZXIgY2FsbGluZyBzd2Fw
QnVmZmVycwogVEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBSZXNpemVXaW5kb3dXaXRoRHJhdykKIHsK
LSAgICAvLyBOZWNlc3NhcnkgZm9yIGEgd2luZG93IHJlc2l6aW5nIHRlc3QgaWYgdGhlcmUgaXMg
bm8gcGVyLWZyYW1lIHdpbmRvdyBzaXplIHF1ZXJ5CisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNv
bS80NDUzCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGlzVnVsa2FuUmVuZGVyZXIoKSAmJiBJc0xp
bnV4KCkgJiYgSXNJbnRlbCgpKTsKKworICAgIC8vIEZsYWt5IG9uIExpbnV4IFN3QU5HTEUgaHR0
cDovL2FuZ2xlYnVnLmNvbS80NDUzCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzTGludXgoKSAm
JiBpc1N3aWZ0c2hhZGVyKCkpOwogCisgICAgLy8gTmVjZXNzYXJ5IGZvciBhIHdpbmRvdyByZXNp
emluZyB0ZXN0IGlmIHRoZXJlIGlzIG5vIHBlci1mcmFtZSB3aW5kb3cgc2l6ZSBxdWVyeQogICAg
IG1PU1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKIAogICAgIGluaXRpYWxpemVEaXNwbGF5KCk7
CkBAIC01NDksODQgKzU1OSw2IEBAIFRFU1RfUChFR0xTdXJmYWNlVGVzdCwgUmVzZXROYXRpdmVX
aW5kb3cpCiAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CiB9CiAKLS8vIFRlc3QgdGhhdCBzd2Fw
IGludGVydmFsIHdvcmtzLgotVEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBTd2FwSW50ZXJ2YWwpCi17
Ci0gICAgLy8gT24gT1NYLCBtYXhJbnRlcnZhbCA+PSAxIGlzIGFkdmVydGlzZWQsIGJ1dCBpcyBu
b3QgaW1wbGVtZW50ZWQuICBodHRwOi8vYW5nbGVidWcuY29tLzMxNDAKLSAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNPU1goKSk7Ci0gICAgLy8gRmxha3kgaGFuZyBvbiBOZXh1cyA1WCBhbmQgNlAu
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzM2NAotICAgIEFOR0xFX1NLSVBfVEVTVF9JRigoSXNOZXh1
czVYKCkgfHwgSXNOZXh1czZQKCkpICYmIGlzR0xFU1JlbmRlcmVyKCkpOwotICAgIC8vIEZsYWt5
IGhhbmcgb24gVWJ1bnR1IDE5LjA0IE5WSURJQSBWdWxrYW4uIGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MzYxOAotICAgIC8vIE1heWJlIGhhbmcgZHVlIHRvIGJ1ZyBpbiBOVklESUEgTGludXggVnVsa2Fu
IGRyaXZlci4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNDUwCi0gICAgQU5HTEVfU0tJUF9URVNUX0lG
KElzTGludXgoKSAmJiBJc05WSURJQSgpICYmIGlzVnVsa2FuUmVuZGVyZXIoKSk7Ci0gICAgLy8g
Rmxha3kgb24gTGludXggTlZJRElBIE9wZW5HTCBkcml2ZXIuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MzgwNwotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0xpbnV4KCkgJiYgSXNOVklESUEoKSAmJiBp
c0dMUmVuZGVyZXIoKSk7Ci0gICAgLy8gVGVzdCBmYWlscyBvbiBTd2FuZ2xlIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vNDE2OQotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihpc1Z1bGthblN3aWZ0c2hhZGVy
UmVuZGVyZXIoKSk7Ci0KLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNBUk02NCgpICYmIElzV2lu
ZG93cygpICYmIElzRDNEKCkpOwotCi0gICAgaW5pdGlhbGl6ZURpc3BsYXkoKTsKLSAgICBpbml0
aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7Ci0gICAgaW5pdGlhbGl6ZUNvbnRleHQo
KTsKLQotICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRv
d1N1cmZhY2UsIG1Db250ZXh0KTsKLSAgICBlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVdpbmRv
d1N1cmZhY2UpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgRUdMaW50IG1pbklu
dGVydmFsLCBtYXhJbnRlcnZhbDsKLQotICAgIEFTU0VSVF9UUlVFKGVnbEdldENvbmZpZ0F0dHJp
YihtRGlzcGxheSwgbUNvbmZpZywgRUdMX01JTl9TV0FQX0lOVEVSVkFMLCAmbWluSW50ZXJ2YWwp
KTsKLSAgICBBU1NFUlRfVFJVRShlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1Db25maWcs
IEVHTF9NQVhfU1dBUF9JTlRFUlZBTCwgJm1heEludGVydmFsKSk7Ci0KLSAgICBmb3IgKGludCBp
dGVyID0gMDsgaXRlciA8IDI7ICsraXRlcikKLSAgICB7Ci0gICAgICAgIGlmIChtYXhJbnRlcnZh
bCA+PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBUaW1lciB0aW1lcjsKLQotICAgICAgICAg
ICAgZWdsU3dhcEludGVydmFsKG1EaXNwbGF5LCAxKTsKLSAgICAgICAgICAgIHRpbWVyLnN0YXJ0
KCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDE4MDsgKytpKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2luZG93U3Vy
ZmFjZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aW1lci5zdG9wKCk7Ci0gICAgICAg
ICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAgICAgLy8gMTIwIGZyYW1lcyBh
dCA2MGZwcyBzaG91bGQgdGFrZSAzcy4gIEF0IGxvd2VyIGZwcywgaXQgc2hvdWxkIHRha2UgZXZl
biBsb25nZXIuICBBdAotICAgICAgICAgICAgLy8gMTQ0ZnBzLCBpdCB3b3VsZCB0YWtlIDEuMjVz
LiAgTGV0J3MgdXNlIDFzIGFzIGEgbG93ZXIgYm91bmQuCi0gICAgICAgICAgICBBU1NFUlRfR1Qo
dGltZXIuZ2V0RWxhcHNlZFRpbWUoKSwgMSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobWlu
SW50ZXJ2YWwgPD0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgVGltZXIgdGltZXI7Ci0KLSAg
ICAgICAgICAgIGVnbFN3YXBJbnRlcnZhbChtRGlzcGxheSwgMCk7Ci0gICAgICAgICAgICB0aW1l
ci5zdGFydCgpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVdp
bmRvd1N1cmZhY2UpOwotCi0gICAgICAgICAgICAgICAgLy8gU2Vjb25kIGVnbFN3YXBCdWZmZXJz
IGNhdXNlcyBhbiBFR0xfQkFEX1NVUkZBQ0Ugb24gTnZpZGlhIHNoaWVsZCB0di4KLSAgICAgICAg
ICAgICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzMxNDQuCi0gICAgICAgICAgICAgICAgQU5H
TEVfU0tJUF9URVNUX0lGKElzTlZJRElBU2hpZWxkKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdGltZXIuc3RvcCgpOwotICAgICAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0K
LSAgICAgICAgICAgIC8vIDEwMCBuby1vcCBzd2FwcyBzaG91bGQgYmUgZmFpcmx5IGZhc3QsIHRo
b3VnaCB0aGVyZSBpcyBubyBndWFyYW50ZWUgaG93IGZhc3QgaXQgY2FuCi0gICAgICAgICAgICAv
LyBiZS4gMTBtcyBwZXIgc3dhcCBpcyBwcm9iYWJseSBhIHNhZmUgdXBwZXIgYm91bmQuCi0gICAg
ICAgICAgICAvLwotICAgICAgICAgICAgLy8gVE9ETyhzeW91c3NlZmkpOiBpZiBhIHN1cmZhY2Ug
ZG9lc24ndCB0cnVseSBhbGxvdyBuby12c3luYywgdGhpcyBjYW4gZmFpbC4gIFVudGlsCi0gICAg
ICAgICAgICAvLyB0aGVyZSdzIGEgd2F5IHRvIHF1ZXJ5IHRoZSBleGFjdCBtaW5JbnRlcnZhbCBm
cm9tIHRoZSBzdXJmYWNlLCB0aGlzIHRlc3QgY2Fubm90IGJlCi0gICAgICAgICAgICAvLyBlbmFi
bGVkLgotICAgICAgICAgICAgLy8gQVNTRVJUX0xUKHRpbWVyLmdldEVsYXBzZWRUaW1lKCksIDEp
OwotICAgICAgICB9Ci0gICAgfQotfQotCiAvLyBUZXN0IGNyZWF0aW5nIGEgc3VyZmFjZSB0aGF0
IHN1cHBvcnRzIGEgRUdMQ29uZmlnIHdpdGggMTZiaXQKIC8vIHN1cHBvcnQgR0xfUkdCNTY1CiBU
RVNUX1AoRUdMU3VyZmFjZVRlc3QsIENyZWF0ZVdpdGhFR0xDb25maWc1NjUwU3VwcG9ydCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdM
U3luY1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0
cy9FR0xTeW5jVGVzdC5jcHAKaW5kZXggN2FjMjQyMDgzZTczZTZhNWEzMTE0ZDBiODAyOGQ2YWRk
YmUxZThkOS4uMmVlN2EwMGNmMWRhZTIyODQ5ZTkxY2IyNTVhY2JmZWM1ZjMzMDc1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTeW5j
VGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0
cy9FR0xTeW5jVGVzdC5jcHAKQEAgLTIzMyw2ICsyMzMsMTcgQEAgVEVTVF9QKEVHTFN5bmNUZXN0
LCBCYXNpY09wZXJhdGlvbnMpCiAgICAgRVhQRUNUX0VHTF9UUlVFKGVnbERlc3Ryb3lTeW5jS0hS
KGRpc3BsYXksIHN5bmMpKTsKIH0KIAorLy8gVGVzdCBlZ2xXYWl0TmF0aXZlIGFwaQorVEVTVF9Q
KEVHTFN5bmNUZXN0LCBXYWl0TmF0aXZlKQoreworICAgIC8vIENsZWFyIHRvIHJlZCBjb2xvcgor
ICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQRUNUX0VHTF9UUlVFKGVnbFdhaXROYXRpdmUo
RUdMX0NPUkVfTkFUSVZFX0VOR0lORSkpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRX
aW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpyZWQpOwor
fQorCiBBTkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFN5bmNUZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEOSgpLAogICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9B
dG9taWNDb3VudGVyQnVmZmVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvQXRvbWljQ291bnRlckJ1ZmZlclRlc3QuY3BwCmluZGV4IGEzZGQ5MmNl
NzA2MjM2NmY4MWExODVhODUxZTIyMDNlNjM0NzY2OWEuLjZhYTc2ZGUyZDQyMzFhM2E4MDc5Nzk4
ODViNDdhY2ZhYzQwMGJlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9BdG9taWNDb3VudGVyQnVmZmVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0F0b21pY0NvdW50ZXJCdWZmZXJU
ZXN0LmNwcApAQCAtNDMzLDYgKzQzMyw1NyBAQCB2b2lkIG1haW4oKQogICAgIH0KIH0KIAorLy8g
VGVzdCBpbmFjdGl2ZSBhdG9taWMgY291bnRlcgorVEVTVF9QKEF0b21pY0NvdW50ZXJCdWZmZXJU
ZXN0MzEsIEF0b21pY0NvdW50ZXJJbmFjdGl2ZSkKK3sKKyAgICBjb25zdGV4cHIgY2hhciBrRlNb
XSA9CisgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKKyAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKKworICAgICAgICAvLyBUaGlzIGluYWN0aXZlIGF0b21pYyBjb3VudGVyIHNo
b3VsZCBiZSByZW1vdmVkIGJ5IFJlbW92ZUluYWN0aXZlSW50ZXJmYWNlVmFyaWFibGVzCisgICAg
ICAgICJsYXlvdXQoYmluZGluZyA9IDApIHVuaWZvcm0gYXRvbWljX3VpbnQgaW5hY3RpdmU7XG4i
CisKKyAgICAgICAgIm91dCBoaWdocCB2ZWM0IG15X2NvbG9yO1xuIgorICAgICAgICAidm9pZCBt
YWluKClcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBteV9jb2xvciA9IHZlYzQoMC4w
LCAxLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBBTkdMRV9HTF9QUk9H
UkFNKHByb2dyYW0sIGVzc2wzMV9zaGFkZXJzOjp2czo6U2ltcGxlKCksIGtGUyk7CisgICAgZ2xV
c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgZHJhd1F1YWQocHJvZ3JhbSwgZXNzbDMxX3NoYWRl
cnM6OlBvc2l0aW9uQXR0cmliKCksIDAuMGYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKwor
Ly8gVGVzdCBpbmFjdGl2ZSBtZW1vcnlCYXJyaWVyQXRvbWljQ291bnRlcgorVEVTVF9QKEF0b21p
Y0NvdW50ZXJCdWZmZXJUZXN0MzEsIEF0b21pY0NvdW50ZXJNZW1vcnlCYXJyaWVyKQoreworICAg
IGNvbnN0ZXhwciBjaGFyIGtGU1tdID0KKyAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgorICAg
ICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorICAgICAgICAvLyBUaGlzIGluYWN0aXZl
IGF0b21pYyBjb3VudGVyIHNob3VsZCBiZSByZW1vdmVkIGJ5IFJlbW92ZUluYWN0aXZlSW50ZXJm
YWNlVmFyaWFibGVzCisgICAgICAgICJsYXlvdXQoYmluZGluZyA9IDApIHVuaWZvcm0gYXRvbWlj
X3VpbnQgaW5hY3RpdmU7XG4iCisgICAgICAgICJvdXQgaGlnaHAgdmVjNCBteV9jb2xvcjtcbiIK
KyAgICAgICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgbXlf
Y29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgIC8vIFRoaXMgYmFy
cmllciBzaG91bGQgYmUgcmVtb3ZlZCBieSBSZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMgYmVj
YXVzZQorICAgICAgICAvLyB0aGVyZSBhcmUgbm8gYWN0aXZlIGF0b21pYyBjb3VudGVycworICAg
ICAgICAiICAgIG1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVyKCk7XG4iCisgICAgICAgICJ9XG4i
OworCisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBlc3NsMzFfc2hhZGVyczo6dnM6OlNp
bXBsZSgpLCBrRlMpOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIGRyYXdRdWFk
KHByb2dyYW0sIGVzc2wzMV9zaGFkZXJzOjpQb3NpdGlvbkF0dHJpYigpLCAwLjBmKTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpncmVlbik7Cit9CisKIC8vIFRPRE8oc3lvdXNzZWZpKTogcmUtZW5hYmxlIHRlc3Rz
IG9uIFZ1bGthbiBvbmNlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzczOCBpcyByZXNvbHZlZC4gIFRo
ZSBpc3N1ZQogLy8gaXMgd2l0aCBXR0wgd2hlcmUgaWYgYSBWdWxrYW4gdGVzdCBpcyBydW4gZmly
c3QgaW4gdGhlIHNoYXJkLCBpdCBjYXVzZXMgY3Jhc2hlcyB3aGVuIGFuIE9wZW5HTAogLy8gdGVz
dCBpcyBydW4gYWZ0ZXJ3YXJkcy4gIEF0b21pY0NvdW50ZXIqIHRlc3RzIGFyZSBhbHBoYWJldGlj
YWxseSBmaXJzdCwgYW5kIGhhdmluZyB0aGVtIG5vdCBydW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9BdHRyaWJ1dGVMYXlvdXRUZXN0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9BdHRyaWJ1dGVM
YXlvdXRUZXN0LmNwcAppbmRleCA0NDFhNWY2ZjkyYzQxMGFkZTVhMjYyY2EwYzM4MzUxMGE1Yjk1
NGNmLi5jMGFiMjhkNzdhMmJlZmEyOWZlYWViZGI5YWFlMGU0ZDQxNDExZGI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQXR0cmlidXRlTGF5
b3V0VGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0F0dHJpYnV0ZUxheW91dFRlc3QuY3BwCkBAIC00NTQsNiArNDU0LDkgQEAgY2xhc3MgQXR0
cmlidXRlTGF5b3V0QnVmZmVySW5kZXhlZCA6IHB1YmxpYyBBdHRyaWJ1dGVMYXlvdXRUZXN0CiAK
IFRFU1RfUChBdHRyaWJ1dGVMYXlvdXROb25JbmRleGVkLCBUZXN0KQogeworICAgIC8vIEZsYWt5
IG9uIExpbnV4IFN3QU5HTEUgaHR0cDovL2FuZ2xlYnVnLmNvbS80NTAyCisgICAgQU5HTEVfU0tJ
UF9URVNUX0lGKElzTGludXgoKSAmJiBpc1N3aWZ0c2hhZGVyKCkpOworCiAgICAgUnVuKHRydWUp
OwogICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc1dpbmRvd3MoKSAmJiBJc0FNRCgpICYmIElzT3Bl
bkdMKCkpOwogICAgIFJ1bihmYWxzZSk7CkBAIC00NjgsNiArNDcxLDkgQEAgVEVTVF9QKEF0dHJp
YnV0ZUxheW91dE1lbW9yeUluZGV4ZWQsIFRlc3QpCiAKIFRFU1RfUChBdHRyaWJ1dGVMYXlvdXRC
dWZmZXJJbmRleGVkLCBUZXN0KQogeworICAgIC8vIEZsYWt5IG9uIExpbnV4IFN3QU5HTEUgaHR0
cDovL2FuZ2xlYnVnLmNvbS80NTAyCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzTGludXgoKSAm
JiBpc1N3aWZ0c2hhZGVyKCkpOworCiAgICAgUnVuKHRydWUpOwogICAgIEFOR0xFX1NLSVBfVEVT
VF9JRihJc1dpbmRvd3MoKSAmJiBJc0FNRCgpICYmIChJc09wZW5HTCgpIHx8IElzRDNEMTFfRkw5
MygpKSk7CiAgICAgUnVuKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kVW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1Mb2NhdGlv
blRlc3QuY3BwCmluZGV4IGVhYmIyYWMyZDg1ODZlMmMyNmMwNzUyMTlkMmEyM2U2ODM3YmE5NjAu
LjQyZjc3NTA5NDA1MmI2ZGJjOTBjYjNmNDU2YjA1ZDMzMmZmMjFlMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kVW5pZm9ybUxvY2F0
aW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0JpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcApAQCAtMzQyLDYgKzM0Miw0OCBAQCB2b2lk
IG1haW4oKQogICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAK
Ky8vIEdMIGJhY2tlbmQgb3B0aW1pemVzIGF3YXkgYSB1bmlmb3JtIGluIHRoZSB2ZXJ0ZXggc2hh
ZGVyIGlmIGl0J3Mgb25seSB1c2VkIHRvCisvLyBjb21wdXRlIGEgdmFyeWluZyB0aGF0IGlzIG5l
dmVyIHJlZmVyZW5jZWQgaW4gdGhlIGZyYWdtZW50IHNoYWRlci4KK1RFU1RfUChCaW5kVW5pZm9y
bUxvY2F0aW9uVGVzdCwgVW51c2VkVW5pZm9ybVVwZGF0ZUNvbXBsZXgpCit7CisgICAgQU5HTEVf
U0tJUF9URVNUX0lGKCFJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fYmluZF91bmlm
b3JtX2xvY2F0aW9uIikpOworCisgICAgQVNTRVJUX05FKG51bGxwdHIsIGdsQmluZFVuaWZvcm1M
b2NhdGlvbkNIUk9NSVVNKTsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0gUiIocHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKK3ZhcnlpbmcgdmVj
NCB2X3VudXNlZDsKK3VuaWZvcm0gdmVjNCB1X3VudXNlZDsKK3ZvaWQgbWFpbigpCit7CisgICAg
Z2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgIHZfdW51c2VkID0gdV91bnVzZWQ7Cit9Cisp
IjsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtGU1tdID0gUiIocHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit2YXJ5aW5nIHZlYzQgdl91bnVzZWQ7Cit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKK30pIjsKKworICAgIGNvbnN0IEdMaW50
IHVudXNlZExvY2F0aW9uID0gMTsKKworICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oa1ZT
LCBrRlMsIFsmXShHTHVpbnQgcHJvZ3JhbSkgeworICAgICAgICBnbEJpbmRVbmlmb3JtTG9jYXRp
b25DSFJPTUlVTShwcm9ncmFtLCB1bnVzZWRMb2NhdGlvbiwgInVfdW51c2VkIik7CisgICAgfSk7
CisgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7CisKKyAgICBnbFVzZVByb2dyYW0obVByb2dy
YW0pOworCisgICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxvY2F0aW9ucyBvZiBuYW1lcyB0aGF0
IGRvIG5vdCBleGlzdAorICAgIC8vIGluIHRoZSBzaGFkZXIuIE90aGVyd2lzZSBpdCB3b3VsZCBi
ZSBpbmNvbnNpc3RlbnQgd3J0IHRoZQorICAgIC8vIG9wdGltaXphdGlvbiBjYXNlLgorICAgIGds
VW5pZm9ybTRmKHVudXNlZExvY2F0aW9uLCAwLjI1ZiwgMC4yNWYsIDAuMjVmLCAwLjI1Zik7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKIC8vIFRlc3QgZm9yIGEgYnVnIHdoZXJlIHVz
aW5nIGEgc2FtcGxlciBjYXVzZWQgR0wgZXJyb3IgaWYgdGhlIG1Qcm9ncmFtIGhhZAogLy8gdW5p
Zm9ybXMgdGhhdCB3ZXJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBkcml2ZXIuIFRoaXMgd2FzIG9u
bHkgYSBwcm9ibGVtIHdpdGgKIC8vIGdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNIGltcGxl
bWVudGF0aW9uLiBUaGlzIGNvdWxkIGJlIHJlcHJvZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9DbGVhclRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAKaW5kZXgg
YWFhOWM4OGMxOWJjY2U4MzliMGU3ZmJiODAwOGRmZjYzMzAyOTk4MS4uYTM0YzA0MzRjNmFiOTFj
NzRhODcwOTQwZTdkZWIzODM5ZmU5MDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAKQEAgLTE1LDI2ICsx
NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKIAogbmFtZXNwYWNlCiB7Ci0KLVZlY3RvcjQg
UmFuZG9tVmVjNChpbnQgc2VlZCwgZmxvYXQgbWluVmFsdWUsIGZsb2F0IG1heFZhbHVlKQotewot
ICAgIFJORyBybmcoc2VlZCk7Ci0gICAgc3JhbmQoc2VlZCk7Ci0gICAgcmV0dXJuIFZlY3RvcjQo
Ci0gICAgICAgIHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUsIG1heFZhbHVlKSwgcm5n
LnJhbmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLAotICAgICAgICBybmcucmFu
ZG9tRmxvYXRCZXR3ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSksIHJuZy5yYW5kb21GbG9hdEJldHdl
ZW4obWluVmFsdWUsIG1heFZhbHVlKSk7Ci19Ci0KLUdMQ29sb3IgVmVjNFRvQ29sb3IoY29uc3Qg
VmVjdG9yNCAmdmVjKQotewotICAgIEdMQ29sb3IgY29sb3I7Ci0gICAgY29sb3IuUiA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHZlYy54KCkgKiAyNTUuMGYpOwotICAgIGNvbG9yLkcgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Pih2ZWMueSgpICogMjU1LjBmKTsKLSAgICBjb2xvci5CID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4odmVjLnooKSAqIDI1NS4wZik7Ci0gICAgY29sb3IuQSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHZlYy53KCkgKiAyNTUuMGYpOwotICAgIHJldHVybiBjb2xvcjsKLX0KLQogY2xh
c3MgQ2xlYXJUZXN0QmFzZSA6IHB1YmxpYyBBTkdMRVRlc3QKIHsKICAgcHJvdGVjdGVkOgpAQCAt
ODY2LDYgKzg0Niw2NCBAQCBURVNUX1AoQ2xlYXJUZXN0RVMzLCBNYXNrZWRTY2lzc29yZWRDbGVh
ck11bHRpcGxlQXR0YWNobWVudHMpCiAgICAgfQogfQogCisvLyBUZXN0IGNsZWFyaW5nIG11bHRp
cGxlIGF0dGFjaG1lbnRzIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBpbmRleGVkIGNvbG9yIG1hc2su
CitURVNUX1AoQ2xlYXJUZXN0RVMzLCBNYXNrZWRJbmRleGVkQ2xlYXJNdWx0aXBsZUF0dGFjaG1l
bnRzKQoreworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdM
X09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCIpKTsKKworICAgIGNvbnN0ZXhwciB1aW50MzJfdCBr
U2l6ZSAgICAgICAgICAgID0gMTY7CisgICAgY29uc3RleHByIHVpbnQzMl90IGtBdHRhY2htZW50
Q291bnQgPSAyOworICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBpeGVsRGF0YShrU2l6
ZSAqIGtTaXplICogNCwgMjU1KTsKKworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtRkJPc1swXSk7CisKKyAgICBHTFRleHR1cmUgdGV4dHVyZXNba0F0dGFjaG1lbnRDb3Vu
dF07CisgICAgR0xlbnVtIGRyYXdCdWZmZXJzW2tBdHRhY2htZW50Q291bnRdOworCisgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IGtBdHRhY2htZW50Q291bnQ7ICsraSkKKyAgICB7CisgICAg
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbaV0pOworICAgICAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwga1NpemUsIGtTaXplLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgcGl4ZWxEYXRh
LmRhdGEoKSk7CisgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaSwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbaV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGRyYXdCdWZmZXJzW2ld
ID0gR0xfQ09MT1JfQVRUQUNITUVOVDAgKyBpOworICAgIH0KKworICAgIGdsRHJhd0J1ZmZlcnMo
a0F0dGFjaG1lbnRDb3VudCwgZHJhd0J1ZmZlcnMpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OndoaXRlKTsKKwor
ICAgIC8vIE1hc2tlZCBjbGVhcgorICAgIEdMQ29sb3IgY2xlYXJDb2xvck1hc2tlZCgzMSwgNjMs
IDI1NSwgMTkxKTsKKyAgICBhbmdsZTo6VmVjdG9yNCBjbGVhckNvbG9yID0gR0xDb2xvcigzMSwg
NjMsIDEyNywgMTkxKS50b05vcm1hbGl6ZWRWZWN0b3IoKTsKKworICAgIC8vIEJsb2NrIGJsdWUg
Y2hhbm5lbCBmb3IgYWxsIGF0dGFjaGVtZW50cworICAgIGdsQ29sb3JNYXNrKEdMX1RSVUUsIEdM
X1RSVUUsIEdMX0ZBTFNFLCBHTF9UUlVFKTsKKworICAgIC8vIFVuYmxvY2sgYmx1ZSBjaGFubmVs
IGZvciBhdHRhY2hlbWVudCAxCisgICAgZ2xDb2xvck1hc2tpT0VTKDEsIEdMX1RSVUUsIEdMX1RS
VUUsIEdMX1RSVUUsIEdMX1RSVUUpOworCisgICAgZ2xDbGVhckNvbG9yKGNsZWFyQ29sb3JbMF0s
IGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOworICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAg
ICAvLyBBbGwgYXR0YWNobWVudHMgc2hvdWxkIGJlIGNsZWFyZWQsIHdpdGggdGhlIGJsdWUgY2hh
bm5lbCB1bnRvdWNoZWQgZm9yIGFsbCBhdHRhY2htZW50cyBidXQgMS4KKyAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwga0F0dGFjaG1lbnRDb3VudDsgKytpKQorICAgIHsKKyAgICAgICAgZ2xS
ZWFkQnVmZmVyKEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaSk7CisgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgICAgIGNvbnN0IEdMQ29sb3IgYXR0YWNoZW1lbnRDb2xvciA9IChp
ID09IDEpID8gY2xlYXJDb2xvciA6IGNsZWFyQ29sb3JNYXNrZWQ7CisgICAgICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCAwLCBhdHRhY2hlbWVudENvbG9yKTsKKyAgICAgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIGtTaXplIC0gMSwgYXR0YWNoZW1lbnRDb2xvcik7CisgICAgICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUShrU2l6ZSAtIDEsIDAsIGF0dGFjaGVtZW50Q29sb3IpOworICAg
ICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoa1NpemUgLSAxLCBrU2l6ZSAtIDEsIGF0dGFjaGVt
ZW50Q29sb3IpOworICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoa1NpemUgLyAyLCBrU2l6
ZSAvIDIsIGF0dGFjaGVtZW50Q29sb3IpOworICAgIH0KK30KKwogLy8gVGVzdCB0aGF0IGNsZWFy
aW5nIG11bHRpcGxlIGF0dGFjaG1lbnRzIG9mIGRpZmZlcmVudCBuYXR1cmUgKGZsb2F0LCBpbnQg
YW5kIHVpbnQpIGluIHRoZQogLy8gcHJlc2VuY2Ugb2YgYSBjb2xvciBtYXNrIHdvcmtzIGNvcnJl
Y3RseS4gIEluIHRoZSBWdWxrYW4gYmFja2VuZCwgdGhpcyBleGVyY2lzZXMgY2xlYXJXaXRoRHJh
dwogLy8gYW5kIHRoZSByZWxldmFudCBpbnRlcm5hbCBzaGFkZXJzLgpAQCAtMTIxNCw5ICsxMjUy
LDkgQEAgVEVTVF9QKENsZWFyVGVzdEVTMywgUmVwZWF0ZWRDbGVhcikKICAgICB7CiAgICAgICAg
IGZvciAoaW50IGNlbGxYID0gMDsgY2VsbFggPCBudW1Sb3dzQ29sczsgY2VsbFgrKykKICAgICAg
ICAgewotICAgICAgICAgICAgaW50IHNlZWQgICAgICAgICAgICAgID0gY2VsbFggKyBjZWxsWSAq
IG51bVJvd3NDb2xzOwotICAgICAgICAgICAgY29uc3QgVmVjdG9yNCBjb2xvciAgID0gUmFuZG9t
VmVjNChzZWVkLCBmbXRWYWx1ZU1pbiwgZm10VmFsdWVNYXgpOwotICAgICAgICAgICAgR0xDb2xv
ciBleHBlY3RlZENvbG9yID0gVmVjNFRvQ29sb3IoY29sb3IpOworICAgICAgICAgICAgaW50IHNl
ZWQgICAgICAgICAgICA9IGNlbGxYICsgY2VsbFkgKiBudW1Sb3dzQ29sczsKKyAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjQgY29sb3IgPSBSYW5kb21WZWM0KHNlZWQsIGZtdFZhbHVlTWluLCBmbXRW
YWx1ZU1heCk7CisgICAgICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3IoY29sb3IpOwogCiAg
ICAgICAgICAgICBpbnQgdGVzdE4gPSBjZWxsWCAqIGNlbGxTaXplICsgY2VsbFkgKiBiYWNrRkJP
U2l6ZSAqIGNlbGxTaXplICsgYmFja0ZCT1NpemUgKyAxOwogICAgICAgICAgICAgR0xDb2xvciBh
Y3R1YWxDb2xvciA9IHBpeGVsRGF0YVt0ZXN0Tl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbXB1dGVTaGFkZXJUZXN0
LmNwcAppbmRleCBhYmU0MzI5MmMxZDgxNTEwNGU5ZTc4OTI5MjE1NGI5MjBlZTI1NTM1Li40Y2M1
NjhiZjY2ZDFjYTQ2MmVjZDkxNWIzMDEwOGQ4NDUyZjBkNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db21wdXRl
U2hhZGVyVGVzdC5jcHAKQEAgLTYzNywxMCArNjM3LDYgQEAgVEVTVF9QKENvbXB1dGVTaGFkZXJU
ZXN0LCBEaXNwYXRjaENvbXB1dGVJbmRpcmVjdCkKICAgICAvLyBGbGFreSBjcmFzaCBvbiB0ZWFy
ZG93biwgc2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzM0OQogICAgIEFOR0xFX1NLSVBfVEVTVF9J
RihJc0QzRDExKCkgJiYgSXNJbnRlbCgpICYmIElzV2luZG93cygpKTsKIAotICAgIC8vIEFTQU4g
ZXJyb3Igb24gdnVsa2FuIGJhY2tlbmQ7IEFTQU4gdGVzdHMgb25seSBlbmFibGVkIG9uIE1hYyBT
d2FuZ2xlCi0gICAgLy8gKGh0dHA6Ly9jcmJ1Zy5jb20vMTAyOTM3OCkKLSAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNPU1goKSAmJiBpc1N3aWZ0c2hhZGVyKCkpOwotCiAgICAgR0xUZXh0dXJlIHRl
eHR1cmU7CiAgICAgR0xGcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcjsKICAgICBjb25zdCBjaGFyIGtD
U1NvdXJjZVtdID0gUiIoI3ZlcnNpb24gMzEwIGVzCkBAIC02NTQsNyArNjUwLDcgQEAgdm9pZCBt
YWluKCkKICAgICBBTkdMRV9HTF9DT01QVVRFX1BST0dSQU0ocHJvZ3JhbSwga0NTU291cmNlKTsK
ICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5nZXQoKSk7CiAgICAgY29uc3QgaW50IGtXaWR0aCA9
IDQsIGtIZWlnaHQgPSA2OwotICAgIEdMdWludCBpbnB1dFZhbHVlc1tdID0gezB9OworICAgIEdM
dWludCBpbnB1dFZhbHVlc1trV2lkdGhdW2tIZWlnaHRdID0ge307CiAKICAgICBHTEJ1ZmZlciBi
dWZmZXI7CiAgICAgZ2xCaW5kQnVmZmVyKEdMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUiwgYnVm
ZmVyKTsKQEAgLTI5MTEsNiArMjkwNyw5IEBAIFRFU1RfUChDb21wdXRlU2hhZGVyVGVzdCwgSW1h
Z2VTaXplTWlwbWFwU2xpY2UpCiAgICAgLy8gVE9ETyh4aW5naHVhLmNhb0BpbnRlbC5jb20pOiBo
dHRwOi8vYW5nbGVidWcuY29tLzMxMDEKICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNJbnRlbCgp
ICYmIElzTGludXgoKSk7CiAKKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQzOTIKKyAgICBB
TkdMRV9TS0lQX1RFU1RfSUYoSXNXaW5kb3dzKCkgJiYgSXNOVklESUEoKSAmJiBJc0QzRDExKCkp
OworCiAgICAgR0xUZXh0dXJlIHRleHR1cmVbMl07CiAgICAgR0xGcmFtZWJ1ZmZlciBmcmFtZWJ1
ZmZlcjsKICAgICBjb25zdCBjaGFyIGtDU1tdID0gUiIoI3ZlcnNpb24gMzEwIGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29udGV4dExv
c3RUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9D
b250ZXh0TG9zdFRlc3QuY3BwCmluZGV4IDAxODhkNDU4ZTlmYWIwYzliMDQ1ZGVkYmZjNmQ0OTdk
MWViNDAzODMuLjRkNGZlMDEwZjAzYzAyNGI5NjBhZjM0NTliZDQyYzkyZjM2YTg1ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db250ZXh0
TG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9Db250ZXh0TG9zdFRlc3QuY3BwCkBAIC0xMjksMTkgKzEyOSwxOSBAQCBURVNUX1AoQ29u
dGV4dExvc3RTa2lwVmFsaWRhdGlvblRlc3QsIExvc3ROb0Vycm9yR2V0UHJvZ3JhbSkKIC8vIFVz
ZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJl
ciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQogLy8gdGVzdHMgc2hvdWxkIGJlIHJ1
biBhZ2FpbnN0LgogQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDb250ZXh0TG9zdFRlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9OVUxMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX1ZV
TEtBTigpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfVlVMS0FOKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICBXaXRoUm9idXN0bmVzcyhFUzJfTlVMTCgpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgV2l0aFJvYnVzdG5lc3MoRVMyX0QzRDkoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgIFdpdGhSb2J1c3RuZXNzKEVTMl9EM0QxMSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
V2l0aFJvYnVzdG5lc3MoRVMzX0QzRDExKCkpLAorICAgICAgICAgICAgICAgICAgICAgICBXaXRo
Um9idXN0bmVzcyhFUzJfVlVMS0FOKCkpLAorICAgICAgICAgICAgICAgICAgICAgICBXaXRoUm9i
dXN0bmVzcyhFUzNfVlVMS0FOKCkpKTsKIAogQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDb250ZXh0
TG9zdFNraXBWYWxpZGF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX05VTEwo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfVlVMS0FOKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTM19WVUxLQU4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgIFdpdGhSb2J1c3RuZXNz
KEVTMl9OVUxMKCkpLAorICAgICAgICAgICAgICAgICAgICAgICBXaXRoUm9idXN0bmVzcyhFUzJf
RDNEOSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgV2l0aFJvYnVzdG5lc3MoRVMyX0QzRDEx
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICBXaXRoUm9idXN0bmVzcyhFUzNfRDNEMTEoKSks
CisgICAgICAgICAgICAgICAgICAgICAgIFdpdGhSb2J1c3RuZXNzKEVTMl9WVUxLQU4oKSksCisg
ICAgICAgICAgICAgICAgICAgICAgIFdpdGhSb2J1c3RuZXNzKEVTM19WVUxLQU4oKSkpOwogCiB9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9Db250ZXh0Tm9FcnJvclRlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbnRleHROb0Vycm9yVGVzdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTBmMmZkNGFjMDg5Nzk1Yzc5ZjM1MjM4YjZmNDQ0ZjlkOTM5OTA4NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9D
b250ZXh0Tm9FcnJvclRlc3QuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBDb250
ZXh0Tm9FcnJvclRlc3Q6CisvLyAgIFRlc3RzIHBlcnRhaW5pbmcgdG8gR0xfS0hSX25vX2Vycm9y
CisvLworCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImNvbW1vbi9wbGF0
Zm9ybS5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisjaW5jbHVkZSAidGVz
dF91dGlscy9nbF9yYWlpLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworY2xhc3MgQ29u
dGV4dE5vRXJyb3JUZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAg
Q29udGV4dE5vRXJyb3JUZXN0KCkgOiBtTmF1Z2h0eVRleHR1cmUoMCkgeyBzZXROb0Vycm9yRW5h
YmxlZCh0cnVlKTsgfQorCisgICAgdm9pZCB0ZXN0VGVhckRvd24oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKG1OYXVnaHR5VGV4dHVyZSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtTmF1Z2h0eVRleHR1cmUpOworICAgICAgICB9CisgICAg
fQorCisgICAgdm9pZCBiaW5kTmF1Z2h0eVRleHR1cmUoKQorICAgIHsKKyAgICAgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmbU5hdWdodHlUZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbU5hdWdodHlU
ZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgLy8gbU5h
dWdodHlUZXh0dXJlIHNob3VsZCBub3cgYmUgYSBHTF9URVhUVVJFX0NVQkVfTUFQIHRleHR1cmUs
IHNvIHJlYmluZGluZyBpdCB0bworICAgICAgICAvLyBHTF9URVhUVVJFXzJEIGlzIGFuIGVycm9y
CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbU5hdWdodHlUZXh0dXJlKTsK
KyAgICB9CisKKyAgICBHTHVpbnQgbU5hdWdodHlUZXh0dXJlOworfTsKKworLy8gVGVzdHMgdGhh
dCBlcnJvciByZXBvcnRpbmcgaXMgc3VwcHJlc3NlZCB3aGVuIEdMX0tIUl9ub19lcnJvciBpcyBl
bmFibGVkCitURVNUX1AoQ29udGV4dE5vRXJyb3JUZXN0LCBOb0Vycm9yKQoreworICAgIEFOR0xF
X1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl9ub19lcnJvciIpKTsK
KworICAgIGJpbmROYXVnaHR5VGV4dHVyZSgpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
fQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMl9BTkRfRVMzKENvbnRleHROb0Vycm9yVGVz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXgg
YTNjNGIyMWE4ODRhZGU5ZTY1ODE3Mzk4YjRkOWNiNTI0MGE0YWIzNy4uMmU2OWUyZDEyNmRhM2Fk
NTkwY2Q0M2Y4MGQ0YmYwOTJkMWQ3NTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5Q29tcHJl
c3NlZFRleHR1cmVUZXN0LmNwcApAQCAtMzE5LDggKzMxOSw4IEBAIFRFU1RfUChDb3B5Q29tcHJl
c3NlZFRleHR1cmVUZXN0LCBJbW11dGFibGUpCiAgICAgewogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDA5MgotICAgIEFOR0xFX1NLSVBfVEVTVF9J
RigoSXNBbmRyb2lkKCkgJiYgSXNWdWxrYW4oKSkgfHwgaXNTd2lmdHNoYWRlcigpKTsKKworICAg
IEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDEiKSk7CiAKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1swXSk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9FeHRlcm5hbFdyYXBUZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9FeHRlcm5hbFdyYXBUZXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MjliNmQwMDRjZDJmM2RiMjVhYmMwYWMzN2EzZmQxZmUwNGQ3NmU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0V4dGVybmFsV3JhcFRlc3QuY3BwCkBAIC0wLDAgKzEsMjY4IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gRXh0ZXJuYWxXcmFwVGVzdDoKKy8vICAgVGVzdHMgRVhUX0VHTF9pbWFnZV9leHRlcm5hbF93
cmFwX21vZGVzCisvLworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNs
dWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKyNpbmNsdWRlICJ1dGlsL0VHTFdpbmRvdy5oIgor
Citjb25zdGV4cHIgaW50IGtQaXhlbFRocmVzaG9sZCA9IDE7CisKK25hbWVzcGFjZSBhbmdsZQor
eworY2xhc3MgRXh0ZXJuYWxXcmFwVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVj
dGVkOgorICAgIEV4dGVybmFsV3JhcFRlc3QoKSA6IG1Qcm9ncmFtKDApLCBtU291cmNlVGV4dHVy
ZSgwKSwgbUV4dGVybmFsSW1hZ2UoMCksIG1FeHRlcm5hbFRleHR1cmUoMCkKKyAgICB7CisgICAg
ICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwor
ICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOworICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMo
OCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOworICAgICAgICBzZXRDb25maWdBbHBo
YUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7CisgICAgfQorCisgICAg
dm9pZCB0ZXN0U2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFJc0dMRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBjaGFyICp2ZXJ0U3Jj
ID0gUiIocHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsK
K3ZhcnlpbmcgdmVjMiB2X3RleGNvb3JkOworCit1bmlmb3JtIHZlYzIgdV9vZmZzZXQ7CisKK3Zv
aWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOworICAgIHZfdGV4Y29v
cmQgPSAoYV9wb3NpdGlvbi54eSAqIDAuNSkgKyAwLjUgKyB1X29mZnNldDsKK30KKykiOworICAg
ICAgICBjb25zdCBjaGFyICpmcmFnU3JjID0gUiIoI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIDogcmVxdWlyZQorcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwordW5pZm9ybSBzYW1w
bGVyRXh0ZXJuYWxPRVMgc190ZXg7Cit2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDsKKwordm9pZCBt
YWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoc190ZXgsIHZfdGV4Y29vcmQp
OworfQorKSI7CisKKyAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0U3JjLCBm
cmFnU3JjKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgICAgIEFTU0VSVF9O
RShtUHJvZ3JhbSwgMHUpOworCisgICAgICAgIGNvbnN0ZXhwciBHTHNpemVpIHRleFNpemUgPSAz
MjsKKyAgICAgICAgR0x1Ynl0ZSBkYXRhW3RleFNpemUgKiB0ZXhTaXplICogNF07CisKKyAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCB0ZXhTaXplOyB5KyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZsb2F0IGdyZWVuID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHkpIC8gdGV4U2l6ZTsKKyAgICAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdGV4U2l6ZTsgeCsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGZsb2F0IHJlZCA9IHN0YXRpY19jYXN0PGZsb2F0Pih4KSAvIHRleFNp
emU7CisKKyAgICAgICAgICAgICAgICBkYXRhWyh5ICogdGV4U2l6ZSArIHgpICogNCArIDBdID0g
c3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocmVkICogMjU1KTsKKyAgICAgICAgICAgICAgICBkYXRhWyh5
ICogdGV4U2l6ZSArIHgpICogNCArIDFdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oZ3JlZW4gKiAy
NTUpOworCisgICAgICAgICAgICAgICAgZGF0YVsoeSAqIHRleFNpemUgKyB4KSAqIDQgKyAyXSA9
IDA7CisgICAgICAgICAgICAgICAgZGF0YVsoeSAqIHRleFNpemUgKyB4KSAqIDQgKyAzXSA9IDI1
NTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm1Tb3VyY2VUZXh0dXJlKTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
U291cmNlVGV4dHVyZSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0JBLCB0ZXhTaXplLCB0ZXhTaXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAor
ICAgICAgICAgICAgICAgICAgICAgZGF0YSk7CisKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X05FQVJFU1QpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtRXh0ZXJuYWxUZXh0dXJlKTsKKworICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RUZWFyRG93bigpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAobVByb2dyYW0gIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobUV4dGVybmFs
VGV4dHVyZSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtRXh0ZXJuYWxUZXh0dXJlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobVNvdXJjZVRleHR1
cmUgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVNv
dXJjZVRleHR1cmUpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjcmVhdGVFeHRlcm5h
bFRleHR1cmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1RSVUUoSXNFR0xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRf
aW1hZ2UiKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKElzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsIikpOworCisgICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0g
Z2V0RUdMV2luZG93KCk7CisgICAgICAgIEVHTGludCBhdHRyaWJzW10gID0geworICAgICAgICAg
ICAgRUdMX0lNQUdFX1BSRVNFUlZFRCwKKyAgICAgICAgICAgIEVHTF9UUlVFLAorICAgICAgICAg
ICAgRUdMX05PTkUsCisgICAgICAgIH07CisgICAgICAgIEVHTEltYWdlS0hSIGltYWdlID0KKyAg
ICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ct
PmdldENvbnRleHQoKSwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxFR0xDbGllbnRCdWZmZXI+KG1Tb3VyY2VUZXh0
dXJlKSwgYXR0cmlicyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworCisgICAgICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIG1FeHRlcm5hbFRleHR1cmUp
OworICAgICAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTLCBpbWFnZSk7CisKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhU
RVJOQUxfT0VTLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7CisKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAg
fQorCisgICAgR0x1aW50IG1Qcm9ncmFtOworICAgIEdMdWludCBtVGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbjsKKyAgICBHTHVpbnQgbU9mZnNldFVuaWZvcm1Mb2NhdGlvbjsKKworICAgIEdMdWludCBt
U291cmNlVGV4dHVyZTsKKyAgICBFR0xJbWFnZUtIUiBtRXh0ZXJuYWxJbWFnZTsKKyAgICBHTHVp
bnQgbUV4dGVybmFsVGV4dHVyZTsKK307CisKKy8vIFRlc3QgdGhlIGRlZmF1bHQgc2FtcGxpbmcg
YmVoYXZpb3Igb2YgYW4gZXh0ZXJuYWwgdGV4dHVyZQorVEVTVF9QKEV4dGVybmFsV3JhcFRlc3Qs
IE5vV3JhcCkKK3sKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRigK
KyAgICAgICAgIUlzRUdMRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoZ2V0RUdMV2luZG93KCktPmdl
dERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKTsKKworICAgIC8vIE96
b25lIG9ubHkgc3VwcG9ydHMgZXh0ZXJuYWwgdGFyZ2V0IGZvciBpbWFnZXMgY3JlYXRlZCB3aXRo
IEVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnQKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNP
em9uZSgpKTsKKworICAgIGNyZWF0ZUV4dGVybmFsVGV4dHVyZSgpOworCisgICAgQVNTRVJUX05F
KG1Qcm9ncmFtLCAwdSk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBtRXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBn
bFVuaWZvcm0yZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVfb2Zmc2V0IiksIDAu
MCwgMC4wKTsKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwKTsKKyAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDAs
IEdMQ29sb3IoMCwgMCwgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfTkVBUigxMjcsIDAsIEdMQ29sb3IoMjQ3LCAwLCAwLCAyNTUpLCBrUGl4ZWxUaHJl
c2hvbGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDEyNywgR0xDb2xvcigwLCAy
NDcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05F
QVIoMTI3LCAxMjcsIEdMQ29sb3IoMjQ3LCAyNDcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7
Cit9CisKKy8vIFRlc3QgdGhhdCBleHRlcm5hbCB0ZXh0dXJlcyBhcmUgc2FtcGxlZCBjb3JyZWN0
bHkgd2hlbiB1c2VkIHdpdGggR0xfQ0xBTVBfVE9fRURHRQorVEVTVF9QKEV4dGVybmFsV3JhcFRl
c3QsIENsYW1wVG9FZGdlKQoreworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSk7CisgICAgQU5HTEVfU0tJUF9U
RVNUX0lGKAorICAgICAgICAhSXNFR0xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChnZXRFR0xXaW5k
b3coKS0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpOworCisg
ICAgLy8gT3pvbmUgb25seSBzdXBwb3J0cyBleHRlcm5hbCB0YXJnZXQgZm9yIGltYWdlcyBjcmVh
dGVkIHdpdGggRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydAorICAgIEFOR0xFX1NLSVBfVEVT
VF9JRihJc096b25lKCkpOworCisgICAgY3JlYXRlRXh0ZXJuYWxUZXh0dXJlKCk7CisKKyAgICBB
U1NFUlRfTkUobVByb2dyYW0sIDB1KTsKKyAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIG1FeHRlcm5hbFRleHR1cmUp
OworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgIGdsVW5pZm9ybTJmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidV9vZmZzZXQi
KSwgMC41LCAwLjUpOworICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAiYV9wb3NpdGlvbiIsIDApOwor
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIo
MCwgMCwgR0xDb2xvcigxMjcsIDEyNywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfTkVBUigxMjcsIDAsIEdMQ29sb3IoMjQ3LCAxMjcsIDAsIDI1NSks
IGtQaXhlbFRocmVzaG9sZCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMTI3LCBH
TENvbG9yKDEyNywgMjQ3LCAwLCAyNTUpLCBrUGl4ZWxUaHJlc2hvbGQpOworICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9ORUFSKDEyNywgMTI3LCBHTENvbG9yKDI0NywgMjQ3LCAwLCAyNTUpLCBrUGl4
ZWxUaHJlc2hvbGQpOworfQorCisvLyBUZXN0IHRoYXQgZXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHNh
bXBsZWQgY29ycmVjdGx5IHdoZW4gdXNlZCB3aXRoIEdMX1JFUEVBVAorVEVTVF9QKEV4dGVybmFs
V3JhcFRlc3QsIFJlcGVhdCkKK3sKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNp
b25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpOworICAgIEFOR0xFX1NLSVBf
VEVTVF9JRigKKyAgICAgICAgIUlzRUdMRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoZ2V0RUdMV2lu
ZG93KCktPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKTsKKyAg
ICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfRUdMX2lt
YWdlX2V4dGVybmFsX3dyYXBfbW9kZXMiKSk7CisKKyAgICAvLyBPem9uZSBvbmx5IHN1cHBvcnRz
IGV4dGVybmFsIHRhcmdldCBmb3IgaW1hZ2VzIGNyZWF0ZWQgd2l0aCBFR0xfRVhUX2ltYWdlX2Rt
YV9idWZfaW1wb3J0CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzT3pvbmUoKSk7CisKKyAgICBj
cmVhdGVFeHRlcm5hbFRleHR1cmUoKTsKKworICAgIEFTU0VSVF9ORShtUHJvZ3JhbSwgMHUpOwor
ICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
X0VYVEVSTkFMX09FUywgbUV4dGVybmFsVGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfUywgR0xfUkVQRUFUKTsKKyAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9SRVBFQVQpOworICAgIGdsVW5pZm9ybTJmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAidV9vZmZzZXQiKSwgMC41LCAwLjUpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0s
ICJhX3Bvc2l0aW9uIiwgMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDEyNywgMTI3LCAwLCAyNTUpLCBrUGl4
ZWxUaHJlc2hvbGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEyNywgMCwgR0xDb2xv
cigxMTksIDEyNywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfTkVBUigwLCAxMjcsIEdMQ29sb3IoMTI3LCAxMTksIDAsIDI1NSksIGtQaXhlbFRocmVz
aG9sZCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMTI3LCAxMjcsIEdMQ29sb3IoMTE5
LCAxMTksIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfTkVBUig2MywgNjMsIEdMQ29sb3IoMjQ3LCAyNDcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9s
ZCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoNjQsIDYzLCBHTENvbG9yKDAsIDI0Nywg
MCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKK30KKworLy8gVGVzdCB0aGF0IGV4dGVybmFsIHRl
eHR1cmVzIGFyZSBzYW1wbGVkIGNvcnJlY3RseSB3aGVuIHVzZWQgd2l0aCBHTF9NSVJST1JFRF9S
RVBFQVQKK1RFU1RfUChFeHRlcm5hbFdyYXBUZXN0LCBNaXJyb3JlZFJlcGVhdCkKK3sKKyAgICBB
TkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsIikpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRigKKyAgICAgICAgIUlzRUdMRGlz
cGxheUV4dGVuc2lvbkVuYWJsZWQoZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKSwgIkVHTF9L
SFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfRUdMX2ltYWdlX2V4dGVybmFsX3dyYXBfbW9kZXMiKSk7
CisKKyAgICAvLyBPem9uZSBvbmx5IHN1cHBvcnRzIGV4dGVybmFsIHRhcmdldCBmb3IgaW1hZ2Vz
IGNyZWF0ZWQgd2l0aCBFR0xfRVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0CisgICAgQU5HTEVfU0tJ
UF9URVNUX0lGKElzT3pvbmUoKSk7CisKKyAgICBjcmVhdGVFeHRlcm5hbFRleHR1cmUoKTsKKwor
ICAgIEFTU0VSVF9ORShtUHJvZ3JhbSwgMHUpOworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgbUV4dGVybmFsVGV4
dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfTUlSUk9SRURfUkVQRUFUKTsKKyAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9NSVJST1JFRF9S
RVBFQVQpOworICAgIGdsVW5pZm9ybTJmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAi
dV9vZmZzZXQiKSwgMC41LCAwLjUpOworCisgICAgZHJhd1F1YWQobVByb2dyYW0sICJhX3Bvc2l0
aW9uIiwgMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDEyNywgMTI3LCAwLCAyNTUpLCBrUGl4ZWxUaHJlc2hv
bGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEyNywgMCwgR0xDb2xvcigxMjcsIDEy
NywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVB
UigwLCAxMjcsIEdMQ29sb3IoMTI3LCAxMjcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7Cisg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMTI3LCAxMjcsIEdMQ29sb3IoMTI3LCAxMjcsIDAs
IDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUig2
MywgNjMsIEdMQ29sb3IoMjQ3LCAyNDcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisgICAg
RVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoNjQsIDYzLCBHTENvbG9yKDI0NywgMjQ3LCAwLCAyNTUp
LCBrUGl4ZWxUaHJlc2hvbGQpOworfQorCisvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29u
ZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lv
bikgdGhlc2UKKy8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KK0FOR0xFX0lOU1RBTlRJ
QVRFX1RFU1RfRVMyX0FORF9FUzMoRXh0ZXJuYWxXcmFwVGVzdCk7Cit9ICAvLyBuYW1lc3BhY2Ug
YW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9Gb3JtYXRQcmludFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0Zvcm1hdFByaW50VGVzdC5jcHAKaW5kZXggMmIxM2M2ZDczZmZhYTc3Y2Ri
MWM3N2RmNTMzNGU0MTM2MDhkYTlmMS4uMjRlMTZmMjZhMzNjZjA5NDUzMGM1MWViYTg3N2UzYzFm
YzFhNDFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0Zvcm1hdFByaW50VGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0Zvcm1hdFByaW50VGVzdC5jcHAKQEAgLTEwOCwzICsxMDgsNiBA
QCBURVNUX1AoRm9ybWF0UHJpbnRUZXN0LCBQcmludEFsbFN1cHBvcnRlZEZvcm1hdHMpCiBBTkdM
RV9JTlNUQU5USUFURV9URVNUKEZvcm1hdFByaW50VGVzdCwgRVMyX1ZVTEtBTigpLCBFUzNfVlVM
S0FOKCkpOwogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIEluY2x1ZGVkIGhlcmUg
dG8gZml4IGEgY29tcGlsZSBlcnJvciBkdWUgdG8gd2hpdGUgYm94IHRlc3RzIHVzaW5nIGFuZ2xl
X2VuZDJlbmRfdGVzdHNfbWFpbi4KK3ZvaWQgUmVnaXN0ZXJDb250ZXh0Q29tcGF0aWJpbGl0eVRl
c3RzKCkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9GcmFtZWJ1ZmZlclRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAKaW5kZXggNmYyMTE2OTkwOWJhZjI2
ZTA2ODc1NTk4MmYyYmMyOTU4ODE4MGU4ZS4uMTJlYzc2NTZiMzQ1ZmYyNTNhN2RjN2ZjNDMwMjQ0
ZjdjZGY0NjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAKQEAgLTEyMDgsNiArMTIw
OCwxMTggQEAgVEVTVF9QKEFkZER1bW15VGV4dHVyZU5vUmVuZGVyVGFyZ2V0VGVzdCwgTm9Qcm9n
cmFtT3V0cHV0V29ya2Fyb3VuZCkKICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKIH0KIAorLy8g
Q292ZXJzIGEgYnVnIGluIEFOR0xFJ3MgVnVsa2FuIGJhY2stZW5kIGZyYW1lYnVmZmVyIGNhY2hl
IHdoaWNoIGlnbm9yZWQgZGVwdGgvc3RlbmNpbCBhZnRlcgorLy8gY2FsbHMgdG8gRHJhd0J1ZmZl
cnMuCitURVNUX1AoRnJhbWVidWZmZXJUZXN0X0VTMywgQXR0YWNobWVudFN0YXRlQ2hhbmdlKQor
eworICAgIGNvbnN0ZXhwciBHTHVpbnQga1NpemUgPSAyOworCisgICAgQU5HTEVfR0xfUFJPR1JB
TShwcm9ncmFtLCBlc3NsMV9zaGFkZXJzOjp2czo6U2ltcGxlKCksIGVzc2wxX3NoYWRlcnM6OmZz
OjpHcmVlbigpKTsKKworICAgIEdMVGV4dHVyZSBjb2xvclRleHR1cmU7CisgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBjb2xvclRleHR1cmUpOworICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBOCwga1NpemUsIGtTaXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIEdMRnJhbWVidWZmZXIgZmJvOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJE
LCBjb2xvclRleHR1cmUsIDApOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgQVNT
RVJUX0dMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKEdMX0ZSQU1FQlVGRkVSKTsKKworICAgIC8vIEZp
cnN0IGRyYXcgd2l0aG91dCBhIGRlcHRoIGJ1ZmZlci4KKyAgICBkcmF3UXVhZChwcm9ncmFtLCBl
c3NsMV9zaGFkZXJzOjpQb3NpdGlvbkF0dHJpYigpLCAwLjVmKTsKKworICAgIEdMUmVuZGVyYnVm
ZmVyIGRlcHRoQnVmZmVyOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIs
IGRlcHRoQnVmZmVyKTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVS
LCBHTF9ERVBUSF9DT01QT05FTlQyNCwga1NpemUsIGtTaXplKTsKKworICAgIC8vIEJpbmQganVz
dCBhIHJlbmRlcmJ1ZmZlciBhbmQgZHJhdy4KKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIGRl
cHRoQnVmZmVyKTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEFTU0VSVF9HTF9G
UkFNRUJVRkZFUl9DT01QTEVURShHTF9GUkFNRUJVRkZFUik7CisKKyAgICBnbERyYXdCdWZmZXJz
KDAsIG51bGxwdHIpOworICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0
aW9uQXR0cmliKCksIDAuNWYpOworCisgICAgLy8gUmUtZW5hYmxlIGNvbG9yIGJ1ZmZlciBhbmQg
ZHJhdyBvbmUgZmluYWwgdGltZS4gVGhpcyBwcmV2aW91c2x5IHRyaWdnZXJlZCBhIGNyYXNoLgor
ICAgIEdMZW51bSBkcmF3QnVmZnMgPSB7R0xfQ09MT1JfQVRUQUNITUVOVDB9OworICAgIGdsRHJh
d0J1ZmZlcnMoMSwgJmRyYXdCdWZmcyk7CisKKyAgICBkcmF3UXVhZChwcm9ncmFtLCBlc3NsMV9z
aGFkZXJzOjpQb3NpdGlvbkF0dHJpYigpLCAwLjVmKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQor
CisvLyBUZXN0cyB0aGF0IHdlIGNhbiBzdXBwb3J0IGEgZmVlZGJhY2sgbG9vcCBiZXR3ZWVuIGEg
ZGVwdGggdGV4dHVyZXMgYW5kIHRoZSBkZXB0aCBidWZmZXIuCisvLyBEb2VzIG5vdCB0b3RhbGx5
IG1pcnJvciB0aGUgY2FzZSB1c2VkIGluIE1hbmhhdHRhbi4gVGhlIE1hbmhhdHRhbiBjYXNlIHNl
ZW1zIHRvIGhhbmRsZQorLy8gImNsZWFyIiBzcGVjaWFsbHkgaW5zdGVhZCBvZiByZW5kZXJpbmcg
dG8gZGVwdGggaW4gdGhlIHNhbWUgUlAuCitURVNUX1AoRnJhbWVidWZmZXJUZXN0X0VTMywgRGVw
dGhGZWVkYmFja0xvb3BTdXBwb3J0ZWQpCit7CisgICAgLy8gRmVlZGJhY2sgbG9vcHMgbm90IHN1
cHBvcnRlZCBvbiBEM0QxMSBhbmQgbWF5IG5vdCBldmVyIGJlLgorICAgIEFOR0xFX1NLSVBfVEVT
VF9JRihJc0QzRDExKCkpOworCisgICAgLy8gQWxzbyB0aGlzIHBhcnRpY3VsYXIgdGVzdCBkb2Vz
bid0IHdvcmsgb24gQW5kcm9pZCBkZXNwaXRlIHNpbWlsYXIgc3VwcG9ydCBpbiBNYW5oYXR0YW4u
CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzQW5kcm9pZCgpICYmIElzT3BlbkdMRVMoKSk7CisK
KyAgICBjb25zdGV4cHIgR0x1aW50IGtTaXplID0gMjsKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGtT
aXplLCBrU2l6ZSk7CisKKyAgICBjb25zdGV4cHIgY2hhciBrRlNbXSA9IFIiKHByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwordmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Cit1bmlmb3JtIHNhbXBsZXIy
RCBkZXB0aDsKK3ZvaWQgbWFpbigpCit7CisgICAgaWYgKGFicyh0ZXh0dXJlMkQoZGVwdGgsIHZf
dGV4Q29vcmQpLnggLSAwLjUpIDwgMC4xKQorICAgIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLCAxLCAwLCAxKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKKyAgICB9Cit9KSI7CisKKyAgICBBTkdMRV9HTF9Q
Uk9HUkFNKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OnZzOjpUZXh0dXJlMkQoKSwga0ZTKTsKKwor
ICAgIEdMRnJhbWVidWZmZXIgZnJhbWVidWZmZXI7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKworICAgIEdMVGV4dHVyZSBjb2xvclRleHR1cmU7
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBjb2xvclRleHR1cmUpOworICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwga1NpemUsIGtTaXplLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X05FQVJFU1QpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBjb2xvclRleHR1cmUsIDApOworCisg
ICAgR0xUZXh0dXJlIGRlcHRoVGV4dHVyZTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIGRlcHRoVGV4dHVyZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X0RFUFRIX0NPTVBPTkVOVDI0LCBrU2l6ZSwga1NpemUsIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwK
KyAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9URVhUVVJFXzJELCBkZXB0aFRleHR1cmUsIDAp
OworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgQVNTRVJUX0dMX0ZSQU1FQlVGRkVS
X0NPTVBMRVRFKEdMX0ZSQU1FQlVGRkVSKTsKKworICAgIC8vIENsZWFyIGRlcHRoIHRvIDAuNS4K
KyAgICBnbENsZWFyRGVwdGhmKDAuNWYpOworICAgIGdsQ2xlYXIoR0xfREVQVEhfQlVGRkVSX0JJ
VCk7CisKKyAgICAvLyBEaXNhYmxlIHRoZSBkZXB0aCBtYXNrLiBBbHRob3VnaCB0aGlzIGRvZXMg
bm90IHJlbW92ZSB0aGUgZmVlZGJhY2sgbG9vcCBhcyBkZWZpbmVkIGJ5IHRoZQorICAgIC8vIHNw
ZWMgaXQgbWltaWNzIHdoYXQgZ2Z4YmVuY2ggZG9lcyBpbiBpdHMgcmVuZGVyaW5nIHRlc3RzLgor
ICAgIGdsRGVwdGhNYXNrKGZhbHNlKTsKKworICAgIC8vIFZlcmlmeSB3ZSBjYW4gc2FtcGxlIHRo
ZSBkZXB0aCB0ZXh0dXJlIGFuZCBnZXQgMC41LgorICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wx
X3NoYWRlcnM6OlBvc2l0aW9uQXR0cmliKCksIDAuNSk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwor
fQorCiBBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMihBZGREdW1teVRleHR1cmVOb1JlbmRlclRh
cmdldFRlc3QpOwogQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTMyhGcmFtZWJ1ZmZl
ckZvcm1hdHNUZXN0KTsKIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMzKEZyYW1lYnVmZmVyVGVz
dF9FUzMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0dMU0xUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9HTFNMVGVzdC5jcHAKaW5kZXggM2YxYjU1MjQ0OWRiZDc0NzRjOTRkMmE2Y2JhYmM2
ZjQzNTU4YTVkYy4uOWRkYmViMGY5MTkxYjRiODdlMTkzOTczYTA0ZTAyODRlNDkxNzE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0dMU0xU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
R0xTTFRlc3QuY3BwCkBAIC0xNjA1LDYgKzE2MDUsMTAzIEBAIFRFU1RfUChHTFNMVGVzdCwgTWF4
VmFyeWluZ1ZlYzJBcnJheXMpCiAgICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIG1heFZlYzJB
cnJheXMsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwogfQogCisvLyBW
ZXJpZnkgbWF4IHZhcnlpbmcgd2l0aCBmZWVkYmFjayBhbmQgZ2xfbGluZSBlbmFibGVkCitURVNU
X1AoR0xTTFRlc3RfRVMzLCBNYXhWYXJ5aW5nV2l0aEZlZWRiYWNrQW5kR0xsaW5lKQoreworICAg
IC8vIChodHRwOi8vYW5nbGVidWcuY29tLzQ0MzkpCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElz
QU1EKCkgJiYgSXNXaW5kb3dzKCkgJiYgSXNWdWxrYW4oKSk7CisKKyAgICAvLyBodHRwOi8vYW5n
bGVidWcuY29tLzQ0NDYKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNPU1goKSAmJiBJc09wZW5H
TCgpKTsKKworICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKKyAgICBnbEdldEludGVnZXJ2KEdM
X01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7CisKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSB2ZXJ0ZXhTaGFkZXJTb3VyY2U7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gZnJhZ21lbnRT
aGFkZXJTb3VyY2U7CisKKyAgICAvLyBzdWJzdHJhY3QgMSBoZXJlIGZvciBnbF9Qb2ludFNpemUK
KyAgICBjb25zdCBHTGludCB2ZWM0Q291bnQgICAgID0gbWF4VmFyeWluZ3MgLSAxOworICAgIHVu
c2lnbmVkIGludCB2YXJ5aW5nQ291bnQgPSAwOworICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdEZWNs
YXJhdGlvbjsKKyAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjNENvdW50OyBpKyspCisgICAg
eworICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVj
bGFyYXRpb24oNCwgMSwgdmFyeWluZ0NvdW50KTsKKyAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7
CisgICAgfQorICAgIC8vIEdlbmVyYXRlIHRoZSB2ZXJ0ZXggc2hhZGVyCisgICAgdmVydGV4U2hh
ZGVyU291cmNlLmNsZWFyKCk7CisgICAgdmVydGV4U2hhZGVyU291cmNlIDw8IHZhcnlpbmdEZWNs
YXJhdGlvbjsKKyAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPDwgIlxuYXR0cmlidXRlIHZlYzQgYV9w
b3NpdGlvbjtcbiI7CisgICAgdmVydGV4U2hhZGVyU291cmNlIDw8ICJcbnZvaWQgbWFpbigpXG57
XG4iOworICAgIHVuc2lnbmVkIGludCBjdXJyZW50VlNWYXJ5aW5nID0gMDsKKyAgICBmb3IgKEdM
aW50IGkgPSAwOyBpIDwgdmVjNENvdW50OyBpKyspCisgICAgeworICAgICAgICB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPDwgR2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoNCwgMSwgY3VycmVu
dFZTVmFyeWluZyk7CisgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKKyAgICB9CisgICAg
dmVydGV4U2hhZGVyU291cmNlIDw8ICJcdGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9uLnJn
YiwgMSk7XG4iOworICAgIHZlcnRleFNoYWRlclNvdXJjZSA8PCAiXHRnbF9Qb2ludFNpemUgPSAx
LjA7XG4iOworICAgIHZlcnRleFNoYWRlclNvdXJjZSA8PCAifVxuIjsKKworICAgIC8vIEdlbmVy
YXRlIHRoZSBmcmFnbWVudCBzaGFkZXIKKyAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5jbGVhcigp
OworICAgIGZyYWdtZW50U2hhZGVyU291cmNlIDw8ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
OworICAgIGZyYWdtZW50U2hhZGVyU291cmNlIDw8IHZhcnlpbmdEZWNsYXJhdGlvbjsKKyAgICBm
cmFnbWVudFNoYWRlclNvdXJjZSA8PCAiXG52b2lkIG1haW4oKSBcbnsgXG5cdHZlYzQgcmV0Q29s
b3IgPSB2ZWM0KDAsMCwwLDApO1xuIjsKKyAgICB1bnNpZ25lZCBpbnQgY3VycmVudEZTVmFyeWlu
ZyA9IDA7CisgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIHZlYzQgdmFyeWluZ3MKKyAgICBmcmFnbWVu
dFNoYWRlclNvdXJjZSA8PCAiXHRyZXRDb2xvciArPSAiOworICAgIGZvciAoR0xpbnQgaSA9IDA7
IGkgPCB2ZWM0Q291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGZyYWdtZW50U2hhZGVyU291cmNl
IDw8IEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoMSwgY3VycmVudEZTVmFyeWluZyk7Cisg
ICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKKyAgICB9CisgICAgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPDwgInZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTtcbiI7CisgICAgY29uc3RleHByIEdM
dWludCB0ZXN0VmFsdWUgPSAyMzQ7CisgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPDwgIlx0Z2xf
RnJhZ0NvbG9yID0gKHJldENvbG9yL3ZlYzQoIiA8PCBzdGQ6OnRvX3N0cmluZyhjdXJyZW50RlNW
YXJ5aW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpKSAvMjU1LjAqIiA8PCBzdGQ6
OnRvX3N0cmluZyh0ZXN0VmFsdWUpIDw8ICIuMDtcbiI7CisgICAgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPDwgIn1cbiI7CisKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5ncyA9
IHsiZ2xfUG9zaXRpb24iLCAiZ2xfUG9pbnRTaXplIn07CisgICAgQU5HTEVfR0xfUFJPR1JBTV9U
UkFOU0ZPUk1fRkVFREJBQ0socHJvZ3JhbTEsIHZlcnRleFNoYWRlclNvdXJjZS5zdHIoKS5jX3N0
cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50U2hh
ZGVyU291cmNlLnN0cigpLmNfc3RyKCksIHRmVmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7CisKKyAgICBHTEJ1
ZmZlciB4ZmJCdWZmZXI7CisgICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIHhmYkJ1ZmZlcik7CisgICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIDYgKiAoc2l6ZW9mKGZsb2F0WzRdKSArIHNpemVvZihmbG9hdCkpLCBudWxscHRy
LAorICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBHTFRyYW5zZm9ybUZl
ZWRiYWNrIHhmYjsKKyAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVF
REJBQ0ssIHhmYik7CisgICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCAwLCB4ZmJCdWZmZXIpOworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0xKTsKKwor
ICAgIGNvbnN0IEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHBy
b2dyYW0xLCBlc3NsMV9zaGFkZXJzOjpQb3NpdGlvbkF0dHJpYigpKTsKKyAgICBHTEJ1ZmZlciB2
ZXJ0ZXhCdWZmZXI7CisgICAgLy8gbmVlZCB0byBzaGlmdCBoYWxmIHBpeGVsIHRvIG1ha2Ugc3Vy
ZSB0aGUgbGluZSBjb3ZlcnMgdGhlIGNlbnRlciBvZiB0aGUgcGl4ZWwKKyAgICBjb25zdCBWZWN0
b3IzIHZlcnRpY2VzWzJdID0geworICAgICAgICB7LTEuMGYsIC0xLjBmICsgMC41ZiAvIHN0YXRp
Y19jYXN0PGZsb2F0PihnZXRXaW5kb3dIZWlnaHQoKSksIDAuMGZ9LAorICAgICAgICB7MS4wZiwg
LTEuMGYgKyAwLjVmIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdldFdpbmRvd0hlaWdodCgpKSwgMC4w
Zn19OworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7Cisg
ICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKCp2ZXJ0aWNlcykgKiAyLCB2
ZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3Np
dGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOworICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICBnbENsZWFy
Q29sb3IoMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKKworICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9MSU5FUyk7CisgICAg
Z2xEcmF3QXJyYXlzKEdMX0xJTkVTLCAwLCAyKTsKKyAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNr
KCk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUSgwLCAwLCBHTENvbG9yKHRlc3RWYWx1ZSwgdGVzdFZhbHVlLCB0ZXN0VmFsdWUsIHRlc3RW
YWx1ZSkpOworfQorCiAvLyBWZXJpZnkgc2hhZGVyIHNvdXJjZSB3aXRoIGEgZml4ZWQgbGVuZ3Ro
IHRoYXQgaXMgbGVzcyB0aGFuIHRoZSBudWxsLXRlcm1pbmF0ZWQgbGVuZ3RoIHdpbGwKIC8vIGNv
bXBpbGUuCiBURVNUX1AoR0xTTFRlc3QsIEZpeGVkU2hhZGVyTGVuZ3RoKQpAQCAtMjI0NiwyMCAr
MjM0MywyMSBAQCBURVNUX1AoR0xTTFRlc3RfRVMzLCBBbWJpZ3VvdXNGdW5jdGlvbkNhbGwyeDIp
CiBURVNUX1AoR0xTTFRlc3RfRVMzLCBMYXJnZU51bWJlck9mRmxvYXQ0UGFyYW1ldGVycykKIHsK
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2ZXJ0ZXhTaGFkZXJTdHJlYW07Ci0gICAgY29uc3QgdW5z
aWduZWQgaW50IHBhcmFtQ291bnQgPSAxMDI0dTsKKyAgICAvLyBOb3RlOiBTUElSLVYgZG9lc24n
dCBhbGxvdyBtb3JlIHRoYW4gMjU1IHBhcmFtZXRlcnMgdG8gYSBmdW5jdGlvbi4KKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgcGFyYW1Db3VudCA9IElzVnVsa2FuKCkgPyAyNTV1IDogMTAyNHU7CiAK
ICAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgIiN2ZXJzaW9uIDMwMCBlc1xuIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaW4gdmVjNCBhX3ZlYztcbiIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZlYzQgbG90c09mVmVjNFBhcmFtZXRlcnMoIjsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBhcmFtQ291bnQ7ICsraSkKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBhcmFtQ291bnQgLSAxOyArK2kpCiAgICAgewogICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHJl
YW0gPDwgInZlYzQgYSIgPDwgaSA8PCAiLCAiOwogICAgIH0KICAgICB2ZXJ0ZXhTaGFkZXJTdHJl
YW0gPDwgInZlYzQgYUxhc3QpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdmVjNCBzdW0gPSB2ZWM0KDAuMCwgMC4wLCAw
LjAsIDAuMCk7XG4iOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3Vu
dDsgKytpKQorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3VudCAtIDE7
ICsraSkKICAgICB7CiAgICAgICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAiICAgIHN1bSArPSBh
IiA8PCBpIDw8ICI7XG4iOwogICAgIH0KQEAgLTIyNjksNyArMjM2Nyw3IEBAIFRFU1RfUChHTFNM
VGVzdF9FUzMsIExhcmdlTnVtYmVyT2ZGbG9hdDRQYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAidm9pZCBtYWluKClcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIntc
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IGxvdHNPZlZl
YzRQYXJhbWV0ZXJzKCI7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNv
dW50OyArK2kpCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50IC0g
MTsgKytpKQogICAgIHsKICAgICAgICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICJhX3ZlYywgIjsK
ICAgICB9CkBAIC0zMjc5LDEwICszMzc3LDYgQEAgVEVTVF9QKEdMU0xUZXN0X0VTMzEsIEFycmF5
c09mQXJyYXlzU2FtcGxlcikKIC8vIFRlc3QgdGhhdCBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlz
IG9mIHNhbXBsZXJzIHdvcmsgYXMgZXhwZWN0ZWQuCiBURVNUX1AoR0xTTFRlc3RfRVMzMSwgU3Ry
dWN0QXJyYXlTYW1wbGVyKQogewotICAgIC8vIEFTQU4gZXJyb3Igb24gdnVsa2FuIGJhY2tlbmQ7
IEFTQU4gdGVzdHMgb25seSBlbmFibGVkIG9uIE1hYyBTd2FuZ2xlCi0gICAgLy8gKGh0dHA6Ly9j
cmJ1Zy5jb20vMTAyOTM3OCkKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNPU1goKSAmJiBpc1N3
aWZ0c2hhZGVyKCkpOwotCiAgICAgY29uc3RleHByIGNoYXIga0ZTW10gPQogICAgICAgICAiI3Zl
cnNpb24gMzEwIGVzXG4iCiAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKQEAg
LTMyOTgsMTMgKzMzOTIsMTQgQEAgVEVTVF9QKEdMU0xUZXN0X0VTMzEsIFN0cnVjdEFycmF5U2Ft
cGxlcikKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5nZXQoKSk7CiAgICAgR0xUZXh0dXJlIHRl
eHR1cmVzWzJdOwogICAgIEdMQ29sb3IgZXhwZWN0ZWQgPSBNYWtlR0xDb2xvcigzMiwgNjQsIDk2
LCAyNTUpOworICAgIEdMdWJ5dGUgZGF0YVs2XSAgPSB7fTsgIC8vIFR3byBieXRlcyBvZiBwYWRk
aW5nLCBzbyB0aGF0IHRleHR1cmUgY2FuIGJlIGluaXRpYWxpemVkIHdpdGggNCBieXRlcworICAg
IG1lbWNweShkYXRhLCBleHBlY3RlZC5kYXRhKCksIHNpemVvZihleHBlY3RlZCkpOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKQogICAgIHsKICAgICAgICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwICsgaSk7CiAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
dGV4dHVyZXNbaV0pOwogICAgICAgICAvLyBFYWNoIGVsZW1lbnQgcHJvdmlkZXMgdHdvIGNvbXBv
bmVudHMuCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwg
MSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkLmRhdGEoKSArIDIgKiBpKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkE4LCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBk
YXRhICsgMiAqIGkpOwogICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB1bmlmb3JtTmFtZTsKICAg
ICAgICAgdW5pZm9ybU5hbWUgPDwgInRlc3QuZGF0YVsiIDw8IGkgPDwgIl0iOwogICAgICAgICAv
LyBUaGVuIHNlbmQgaXQgYXMgYSB1bmlmb3JtCkBAIC02MTY2LDkgKzYyNjEsNiBAQCB2b2lkIG1h
aW4oKQogLy8gVGVzdCB0aGF0IGxpbmtpbmcgdmFyeWluZ3MgYnkgbG9jYXRpb24gd29ya3MuCiBU
RVNUX1AoR0xTTFRlc3RfRVMzMSwgTGlua1ZhcnlpbmdzQnlMb2NhdGlvbikKIHsKLSAgICAvLyBo
dHRwOi8vYW5nbGVidWcuY29tLzQzNTUKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNWdWxrYW4o
KSB8fCBJc01ldGFsKCkgfHwgSXNEM0QxMSgpKTsKLQogICAgIGNvbnN0ZXhwciBjaGFyIGtWU1td
ID0gUiIoI3ZlcnNpb24gMzEwIGVzCiBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CiBpbiB2ZWM0IHBv
c2l0aW9uOwpAQCAtNzAyNiw2ICs3MTE4LDkgQEAgVEVTVF9QKEdMU0xUZXN0X0VTMzEsIE1peGVk
Um93QW5kQ29sdW1uTWFqb3JNYXRyaWNlcykKICAgICAvLyBGYWlscyBpbnB1dCB2ZXJpZmljYXRp
b24gYXMgd2VsbCBhcyBzdGQxNDAgU1NCTyB2YWxpZGF0aW9uLiAgaHR0cDovL2FuZ2xlYnVnLmNv
bS8zODQ0CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzV2luZG93cygpICYmIElzQU1EKCkgJiYg
SXNWdWxrYW4oKSk7CiAKKyAgICAvLyBGYWlscyBvbiBBUk0gb24gVnVsa2FuLiAgaHR0cDovL2Fu
Z2xlYnVnLmNvbS80NDkyCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzQVJNKCkgJiYgSXNWdWxr
YW4oKSk7CisKICAgICBjb25zdGV4cHIgY2hhciBrQ1NbXSA9IFIiKCN2ZXJzaW9uIDMxMCBlcwog
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogbGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjsKQEAgLTc3
MTgsNyArNzgxMyw3IEBAIHZvaWQgbWFpbih2b2lkKQogICAgICAgICBnbE1hcEJ1ZmZlclJhbmdl
KEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUiwgMCwgc2l6ZW9mKG91dHB1dEluaXREYXRhKSwgR0xf
TUFQX1JFQURfQklUKSk7CiAgICAgRVhQRUNUX0VRKHB0clswXSwgaW5wdXREYXRhKTsKICAgICBF
WFBFQ1RfRVEocHRyWzFdLCB1bmlmb3JtRGF0YSk7Ci0gICAgRVhQRUNUX0VRKHB0clsyXSwgdGV4
dHVyZURhdGEuUik7CisgICAgRVhQRUNUX05FQVIocHRyWzJdLCB0ZXh0dXJlRGF0YS5SLCAxLjAp
OwogICAgIEVYUEVDVF9FUShwdHJbM10sIGFjRGF0YSk7CiAgICAgRVhQRUNUX0VRKHB0cls0XSwg
aW1hZ2VEYXRhKTsKIApAQCAtNzgyMiw2ICs3OTE3LDkgQEAgVEVTVF9QKEdMU0xUZXN0X0VTMzEs
IE1peGVkUm93QW5kQ29sdW1uTWFqb3JNYXRyaWNlc19Xcml0ZUFycmF5T2ZBcnJheSkKICAgICAv
LyBGYWlscyBjb21waWxpbmcgc2hhZGVyIG9uIEFuZHJvaWQvVnVsa2FuLiAgaHR0cDovL2FuZ2xl
YnVnLmNvbS80MjkwCiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzQW5kcm9pZCgpICYmIElzVnVs
a2FuKCkpOwogCisgICAgLy8gRmFpbHMgb24gQVJNIG9uIFZ1bGthbi4gIGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vNDQ5MgorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0FSTSgpICYmIElzVnVsa2FuKCkp
OworCiAgICAgY29uc3RleHByIGNoYXIga0NTW10gPSBSIigjdmVyc2lvbiAzMTAgZXMKIHByZWNp
c2lvbiBoaWdocCBmbG9hdDsKIGxheW91dChsb2NhbF9zaXplX3g9MSkgaW47CkBAIC03OTM4LDYg
KzgwMzYsNzIgQEAgdm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bv
c2l0aW9uID0gYV9wb3NpdGlvbjsgfSkiOwogICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7CiB9
CiAKKy8vIFRlc3QgdGhhdCByZXVzaW5nIHRoZSBzYW1lIHZhcmlhYmxlIG5hbWUgZm9yIGRpZmZl
cmVudCB1c2VzIGFjcm9zcyBzdGFnZXMgbGlua3MgZmluZS4gIEdsc2xhbmcKKy8vIHdyYXBwZXIn
cyBTUElSLVYgdHJhbnNmb3JtYXRpb24gc2hvdWxkIGlnbm9yZSBhbGwgbmFtZXMgZm9yIG5vbi1z
aGFkZXItaW50ZXJmYWNlIHZhcmlhYmxlcyBhbmQKKy8vIG5vdCBnZXQgY29uZnVzZWQgYnkgdGhl
bS4KK1RFU1RfUChHTFNMVGVzdF9FUzMxLCBWYXJpYWJsZU5hbWVSZXVzZUFjcm9zc1N0YWdlcykK
K3sKKyAgICAvLyBGYWlscyB0byBjb21waWxlIHRoZSBmcmFnbWVudCBzaGFkZXIgd2l0aCBlcnJv
ciAidW5kZWNsYXJlZCBpZGVudGlmaWVyICdfZyciCisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNv
bS80NDA0CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzRDNEMTEoKSk7CisKKyAgICBjb25zdGV4
cHIgY2hhciBrVlNbXSA9IFIiKCN2ZXJzaW9uIDMxMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit1bmlmb3JtIGhpZ2hwIHZlYzQgYTsKK2luIGhpZ2hwIHZlYzQgYjsKK2luIGhpZ2hwIHZl
YzQgYzsKK2luIGhpZ2hwIHZlYzQgZDsKK291dCBoaWdocCB2ZWM0IGU7CisKK3ZlYzQgZih2ZWM0
IGEpCit7CisgICAgcmV0dXJuIGE7Cit9CisKK3ZlYzQgZyh2ZWM0IGYpCit7CisgICAgcmV0dXJu
IGYgKyBmOworfQorCit2b2lkIG1haW4oKSB7CisgICAgZSA9IGYoYikgKyBhOworICAgIGdsX1Bv
c2l0aW9uID0gZyhjKSArIGYoZCk7Cit9CispIjsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtGU1td
ID0gUiIoI3ZlcnNpb24gMzEwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIGhpZ2hw
IHZlYzQgZTsKK3VuaWZvcm0gc2FtcGxlcjJEIGY7CitsYXlvdXQocmdiYTgpIHVuaWZvcm0gaGln
aHAgcmVhZG9ubHkgaW1hZ2UyRCBnOwordW5pZm9ybSBBCit7CisgICAgdmVjNCB4OworfSBjOwor
bGF5b3V0KHN0ZDE0MCwgYmluZGluZz0wKSBidWZmZXIgQgoreworICAgIHZlYzQgeDsKK30gZFsy
XTsKK291dCB2ZWM0IGNvbDsKKwordmVjNCBoKHZlYzQgYykKK3sKKyAgICByZXR1cm4gdGV4dHVy
ZShmLCBjLnh5KSArIGltYWdlTG9hZChnLCBpdmVjMihjLnp3KSk7Cit9CisKK3ZlYzQgaSh2ZWM0
IHgsIHZlYzQgeSkKK3sKKyAgICByZXR1cm4gdmVjNCh4Lnh5LCB5Lnp3KTsKK30KKwordm9pZCBt
YWluKCkgeworICAgIGNvbCA9IGgoZSkgKyBpKGMueCwgZFswXS54KSArIGRbMV0ueDsKK30KKyki
OworCisgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShrVlMsIGtGUyk7CisgICAg
RVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKK30KIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAog
Ly8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJl
bmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwCmlu
ZGV4IGEzMGM0ZGI3ZGJiN2U5NzI2ZmE3ZjljODQxNzcyZjJhM2RiMWI3MmMuLmZlZjlmN2IzZmZl
N2FlODA3ZDJmYzk4ZmM2MWY5NjAwNDcyYzRiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwCkBAIC0xMDE5
LDI0ICsxMDE5LDM4IEBAIFRFU1RfUChJbWFnZVRlc3QsIFZhbGlkYXRpb25HTEVHTEltYWdlRXh0
ZXJuYWwpCiAgICAgR0xlbnVtIHZhbGlkV3JhcE1vZGVzW117CiAgICAgICAgIEdMX0NMQU1QX1RP
X0VER0UsCiAgICAgfTsKLSAgICBmb3IgKGF1dG8gbWluRmlsdGVyIDogdmFsaWRXcmFwTW9kZXMp
CisgICAgZm9yIChhdXRvIHdyYXBNb2RlIDogdmFsaWRXcmFwTW9kZXMpCiAgICAgewotICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JB
UF9TLCBtaW5GaWx0ZXIpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9TLCB3cmFwTW9kZSk7CiAgICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5B
TF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCBtaW5GaWx0ZXIpOworICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCB3cmFwTW9k
ZSk7CiAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwogICAgIH0KIAotICAgIEdMZW51bSBp
bnZhbGlkV3JhcE1vZGVzW117Ci0gICAgICAgIEdMX1JFUEVBVCwKLSAgICAgICAgR0xfTUlSUk9S
RURfUkVQRUFULAotICAgIH07Ci0gICAgZm9yIChhdXRvIG1pbkZpbHRlciA6IGludmFsaWRXcmFw
TW9kZXMpCisgICAgaWYgKElzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfRUdMX2ltYWdlX2V4
dGVybmFsX3dyYXBfbW9kZXMiKSkKICAgICB7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1MsIG1pbkZpbHRlcik7Ci0gICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCBtaW5GaWx0
ZXIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKKyAgICAgICAg
R0xlbnVtIHZhbGlkV3JhcE1vZGVzRVhUW117R0xfUkVQRUFULCBHTF9NSVJST1JFRF9SRVBFQVR9
OworICAgICAgICBmb3IgKGF1dG8gd3JhcE1vZGUgOiB2YWxpZFdyYXBNb2Rlc0VYVCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
LCBHTF9URVhUVVJFX1dSQVBfUywgd3JhcE1vZGUpOworICAgICAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5B
TF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9ULCB3cmFwTW9kZSk7CisgICAgICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBHTGVudW0gaW52YWxpZFdyYXBNb2Rlc1tdeworICAgICAgICAgICAgR0xfUkVQRUFULAorICAg
ICAgICAgICAgR0xfTUlSUk9SRURfUkVQRUFULAorICAgICAgICB9OworICAgICAgICBmb3IgKGF1
dG8gd3JhcE1vZGUgOiBpbnZhbGlkV3JhcE1vZGVzKQorICAgICAgICB7CisgICAgICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9T
LCB3cmFwTW9kZSk7CisgICAgICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVN
KTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywg
R0xfVEVYVFVSRV9XUkFQX1QsIHdyYXBNb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gV2hlbiA8dGFy
Z2V0PiBpcyBzZXQgdG8gVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdlbmVyYXRlTWlwbWFwIGFsd2F5
cyBmYWlscyBhbmQgZ2VuZXJhdGVzIGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5zdGFuY2luZ1Rlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luc3RhbmNpbmdUZXN0LmNwcAppbmRleCAz
YjVlNzUxZjNkY2ZjMTA5YjA0ZTc2ZTRiZjc5Y2IwNWYzMDA3MDAxLi5jMDVjYTE2MjIzYTRkY2U1
MmRjN2I2MTJlMTEwYzk2YzJmNTU5ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5zdGFuY2luZ1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVzdC5jcHAKQEAg
LTQ4Niw5ICs0ODYsNiBAQCBURVNUX1AoSW5zdGFuY2luZ1Rlc3QsIExpbmVMb29wKQogewogICAg
IEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiKSk7CiAKLSAgICAvLyBUT0RPKGhxbGUpOiBEM0Q5IHNlZW1zIHRvIGRyYXcg
dmVyeSBzbG93IGhlcmUsIHByb2JhYmx5IGR1ZSB0byBpbnZhcmlhbnQKLSAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNEM0Q5KCkpOwotCiAgICAgY29uc3RleHByIGNoYXIga1ZTW10gPSBSIigKIGF0
dHJpYnV0ZSB2ZWMyIGFfcG9zaXRpb247CiAvLyB4LHkgPSBvZmZzZXQsIHogPSBzY2FsZQpAQCAt
NTc3LDMxICs1NzQsMTggQEAgdm9pZCBtYWluKCkKIAogICAgIGdsRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKEdMX0xJTkVfTE9PUCwgMCwgQXJyYXlTaXplKHZlcnRpY2VzKSAvIDIsIGluc3RhbmNl
cyk7CiAKLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGdldFdpbmRvd0hlaWdodCgpOyArK3kpCi0g
ICAgewotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGdldFdpbmRvd1dpZHRoKCk7ICsreCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW50IGlkeCAgICAgICAgICAgICAgID0geSAqIGdldFdp
bmRvd1dpZHRoKCkgKyB4OwotICAgICAgICAgICAgR0xDb2xvciBleHBlY3RlZENvbG9yID0gZXhw
ZWN0ZWRQaXhlbHNbaWR4XTsKLQotICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHgs
IHksIGV4cGVjdGVkQ29sb3IpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgIH0KKyAgICBz
dGQ6OnZlY3RvcjxHTENvbG9yPiBhY3R1YWxQaXhlbHMoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdp
bmRvd0hlaWdodCgpKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAg
ICAgICAgIGFjdHVhbFBpeGVscy5kYXRhKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFBpeGVs
cywgYWN0dWFsUGl4ZWxzKTsKIAogICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CiAg
ICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTF9MSU5FX0xPT1AsIEFycmF5U2l6ZShs
aW5lbG9vcEFzU3RyaXBJbmRpY2VzKSAtIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9TSE9SVCwgMCwgaW5zdGFuY2VzKTsKIAotICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgZ2V0V2luZG93SGVpZ2h0KCk7ICsreSkKLSAgICB7Ci0gICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgZ2V0V2luZG93V2lkdGgoKTsgKyt4KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnQgaWR4ICAgICAgICAgICAgICAgPSB5ICogZ2V0V2luZG93V2lkdGgoKSArIHg7Ci0gICAg
ICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3IgPSBleHBlY3RlZFBpeGVsc1tpZHhdOwotCi0g
ICAgICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoeCwgeSwgZXhwZWN0ZWRDb2xvcikgPDwg
c3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgfQorICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKKyAgICAgICAgICAgICAgICAgYWN0dWFsUGl4ZWxzLmRhdGEoKSk7CisgICAgRVhQRUNUX0VR
KGV4cGVjdGVkUGl4ZWxzLCBhY3R1YWxQaXhlbHMpOwogfQogCiBjbGFzcyBJbnN0YW5jaW5nVGVz
dEVTMyA6IHB1YmxpYyBJbnN0YW5jaW5nVGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01lbW9yeU9iamVjdFRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01lbW9yeU9iamVjdFRlc3QuY3Bw
CmluZGV4IDJlZWMyMThkYmNhZDEwZDg3OTkyNWVmMTFjYzMwYzU2OGY1N2FjZTMuLjZlOGQwMTk3
MWUwYTY4MDNjMmFhNGQ2ZGU1MWRkNTNiYjI5YTNiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NZW1vcnlPYmplY3RUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWVtb3J5T2JqZWN0
VGVzdC5jcHAKQEAgLTY0LDYgKzY0LDQyIEBAIFRFU1RfUChNZW1vcnlPYmplY3RUZXN0LCBTaG91
bGRGYWlsVmFsaWRhdGlvbk9uSW1wb3J0RmRVbnN1cHBvcnRlZEhhbmRsZVR5cGUpCiAgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CiB9CiAKKy8vIFRlc3QgbWVtb3J5IG9iamVjdCBxdWVyaWVzCitU
RVNUX1AoTWVtb3J5T2JqZWN0VGVzdCwgTWVtb3J5T2JqZWN0UXVlcmllcykKK3sKKyAgICBBTkdM
RV9TS0lQX1RFU1RfSUYoIUVuc3VyZUdMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX21lbW9yeV9v
YmplY3QiKSk7CisKKyAgICBHTE1lbW9yeU9iamVjdCBtZW1vcnlPYmplY3Q7CisKKyAgICAvLyBW
YWxpZGF0ZSB0aGF0IHRoZSBpbml0aWFsIHN0YXRlIG9mIEdMX0RFRElDQVRFRF9NRU1PUllfT0JK
RUNUX0VYVCBpcyBHTF9GQUxTRQorICAgIHsKKyAgICAgICAgR0xpbnQgZGVkaWNhdGVkTWVtb3J5
ID0gMDsKKyAgICAgICAgZ2xHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChtZW1vcnlPYmpl
Y3QsIEdMX0RFRElDQVRFRF9NRU1PUllfT0JKRUNUX0VYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmZGVkaWNhdGVkTWVtb3J5KTsKKyAgICAgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9HTF9GQUxTRShkZWRpY2F0ZWRNZW1vcnkpOwor
ICAgIH0KKworICAgIC8vIENoYW5nZSBHTF9ERURJQ0FURURfTUVNT1JZX09CSkVDVF9FWFQgdG8g
R0xfVFJVRQorICAgIHsKKyAgICAgICAgR0xpbnQgZGVkaWNhdGVkTWVtb3J5ID0gR0xfVFJVRTsK
KyAgICAgICAgZ2xNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChtZW1vcnlPYmplY3QsIEdMX0RF
RElDQVRFRF9NRU1PUllfT0JKRUNUX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmZGVkaWNhdGVkTWVtb3J5KTsKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgfQorCisgICAgLy8gQ29uZmlybSB0aGF0IEdMX0RFRElDQVRFRF9NRU1PUllfT0JKRUNU
X0VYVCBpcyBub3cgVFJVRQorICAgIHsKKyAgICAgICAgR0xpbnQgZGVkaWNhdGVkTWVtb3J5ID0g
MDsKKyAgICAgICAgZ2xHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChtZW1vcnlPYmplY3Qs
IEdMX0RFRElDQVRFRF9NRU1PUllfT0JKRUNUX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZGVkaWNhdGVkTWVtb3J5KTsKKyAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgICAgIEVYUEVDVF9HTF9UUlVFKGRlZGljYXRlZE1lbW9yeSk7CisgICAg
fQorCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKIC8vIFVzZSB0aGlzIHRvIHNlbGVj
dCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBt
YWpvciB2ZXJzaW9uKSB0aGVzZQogLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgogQU5H
TEVfSU5TVEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTMyhNZW1vcnlPYmplY3RUZXN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBtYXBU
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBt
YXBUZXN0LmNwcAppbmRleCAzM2I4M2E1ZjNiMTgwMzE1NTI3ZDk0MTMxYjFkOTMzOTkzYjViMGI5
Li4zMTY5ODAxMDJmZTk2YTFlN2JkMTM2YjViYTJlZjhlZDJkMjc2NGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWlwbWFwVGVzdC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRl
c3QuY3BwCkBAIC05NTQsOSArOTU0LDkgQEAgVEVTVF9QKE1pcG1hcFRlc3RFUzMsIE1pcG1hcEZv
ckRlZXBUZXh0dXJlQXJyYXkpCiAvLyBUaGVuIHRlc3RzIGlmIHRoZSBtaXBtYXBzIGFyZSByZW5k
ZXJlZCBjb3JyZWN0bHkgZm9yIGFsbCB0d28gbGF5ZXJzLgogVEVTVF9QKE1pcG1hcFRlc3RFUzMs
IE1pcG1hcHNGb3JUZXh0dXJlM0QpCiB7Ci0gICAgLy8gVE9ETyhjbm9ydGhyb3ApOiBFbmFibGVk
IHRoZSBncm91cCB0byBjb3ZlciB0ZXh0dXJlIGJhc2UgbGV2ZWwsIGJ1dCB0aGlzIHRlc3QKLSAg
ICAvLyBuZWVkcyBzb21lIHRyaWFnZTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zOTUwCi0gICAgQU5H
TEVfU0tJUF9URVNUX0lGKElzVnVsa2FuKCkpOworICAgIC8vIEN1cnJlbnRseSBibG9jayBvbiBz
d2lmdHNoYWRlciBCbGl0M0Qgc3VwcG9ydCwgdHJhY2tlZCBvbgorICAgIC8vIGh0dHBzOi8vaXNz
dWV0cmFja2VyLmdvb2dsZS5jb20vaXNzdWVzLzE1MDE1NTQ5OQorICAgIEFOR0xFX1NLSVBfVEVT
VF9JRihpc1Z1bGthblN3aWZ0c2hhZGVyUmVuZGVyZXIoKSk7CiAKICAgICBpbnQgcHggPSBnZXRX
aW5kb3dXaWR0aCgpIC8gMjsKICAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7CkBA
IC0xMDAyLDE3ICsxMDAyLDM3IEBAIFRFU1RfUChNaXBtYXBUZXN0RVMzLCBNaXBtYXBzRm9yVGV4
dHVyZTNEKQogICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwogICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShweCwgcHksIEdMQ29sb3I6OmdyZWVuKTsKIAotICAgIC8vIE1pcG1hcCBsZXZlbCAxCi0g
ICAgLy8gVGhlIHNlY29uZCBtaXBtYXAgc2hvdWxkIG9ubHkgaGF2ZSBvbmUgc2xpY2UuCisgICAg
Ly8gUmVnZW5lcmF0ZSBtaXBtYXAgb2Ygc2FtZSBjb2xvciB0ZXh0dXJlCisgICAgZ2xUZXhTdWJJ
bWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIDAsIDAsIDEsIDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgcGl4ZWxzUmVkLmRhdGEoKSk7CisK
KyAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfM0QpOworCisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICAvLyBNaXBtYXAgbGV2ZWwgMSA4KjgqMQogICAgIGdsVW5pZm9ybTFm
KG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRpb24sIDEuKTsKICAgICBkcmF3UXVhZChtM0RQcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBF
WFBFQ1RfUElYRUxfTkVBUihweCwgcHksIDEyNywgMTI3LCAwLCAyNTUsIDEuMCk7CisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKIAotICAgIGdsVW5pZm9y
bTFmKG1UZXh0dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMC43NWYpOworICAgIC8vIE1pcG1h
cCBsZXZlbCAyIDQqNCoxCisgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1Mb2Nh
dGlvbiwgMi4pOwogICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwog
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9ORUFSKHB4LCBweSwg
MTI3LCAxMjcsIDAsIDI1NSwgMS4wKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5
LCBHTENvbG9yOjpyZWQpOworCisgICAgLy8gTWlwbWFwIGxldmVsIDMgMioyKjEKKyAgICBnbFVu
aWZvcm0xZihtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uLCAzLik7CisgICAgZHJhd1F1YWQo
bTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKKworICAg
IC8vIE1pcG1hcCBsZXZlbCA0IDEqMSoxCisgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVu
aWZvcm1Mb2NhdGlvbiwgNC4pOworICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShweCwgcHksIEdMQ29sb3I6OnJlZCk7CiB9CiAKIC8vIENyZWF0ZSBhIDJEIHRleHR1cmUg
d2l0aCBsZXZlbHMgMC0yLCBjYWxsIEdlbmVyYXRlTWlwbWFwIHdpdGggYmFzZSBsZXZlbCAxIHNv
IHRoYXQgbGV2ZWwgMCBzdGF5cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0
aWJpbGl0eVRlc3QuY3BwCmluZGV4IGFjMDg4ZmYxMjQ3ZGMzNjM4MTk4ZGVjNzA1ODZjMDFmYjVk
ZmI2M2QuLmM4ZGYwMDBhMTRmYzZlOGEwZTQwNzY5YzNkMWZiZWQxZGM0ODY3ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNhbXBs
ZUNvbXBhdGliaWxpdHlUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAKQEAgLTM3MCw5
ICszNzAsNiBAQCBURVNUX1AoTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdCwgRHJhd0NvdmVy
YWdlQW5kUmVzb2x2ZSkKICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9u
IEFuZHJvaWQuCiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzQW5kcm9pZCgpICYmIElzT3BlbkdM
RVMoKSk7CiAKLSAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzM4NTUKLSAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNXaW5kb3dzKCkgJiYgSXNWdWxrYW4oKSAmJiBJc0ludGVsKCkpOwotCiAgICAg
QU5HTEVfR0xfUFJPR1JBTShkcmF3UmVkLCBlc3NsMV9zaGFkZXJzOjp2czo6U2ltcGxlKCksIGVz
c2wxX3NoYWRlcnM6OmZzOjpSZWQoKSk7CiAKICAgICBHTHNpemVpIG1heFNhbXBsZXMgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Bh
dGhSZW5kZXJpbmdUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9QYXRoUmVuZGVyaW5nVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI2YTM3OTNmYTcxMDM5ZGQ4Y2VhZWRmODk0ZGRlMGQxY2I3YTQ4ODguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhSZW5kZXJpbmdUZXN0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE5OTQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rl
c3QKLS8vICAgVGVzdCBDSFJPTUlVTSBzdWJzZXQgb2YgTlZfcGF0aF9yZW5kZXJpbmcKLS8vICAg
VGhpcyBleHRlbnNpb24gYWxsb3dzIHRvIHJlbmRlciBnZW9tZXRyaWMgcGF0aHMgYXMgZmlyc3Qg
Y2xhc3MgR0wgb2JqZWN0cy4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0K
LSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgInV0aWwvc2hhZGVyX3V0
aWxzLmgiCi0KLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUg
PGNzdHJpbmc+Ci0jaW5jbHVkZSA8ZnN0cmVhbT4KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwot
Ci1uYW1lc3BhY2UKLXsKLQotYm9vbCBDaGVja1BpeGVscyhHTGludCB4LAotICAgICAgICAgICAg
ICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAg
ICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgR0xpbnQgdG9sZXJhbmNl
LAotICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6R0xDb2xvciAmY29sb3IpCi17Ci0gICAg
Zm9yIChHTGludCB5eSA9IDA7IHl5IDwgaGVpZ2h0OyArK3l5KQotICAgIHsKLSAgICAgICAgZm9y
IChHTGludCB4eCA9IDA7IHh4IDwgd2lkdGg7ICsreHgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IGF1dG8gcHggPSB4ICsgeHg7Ci0gICAgICAgICAgICBjb25zdCBhdXRvIHB5ID0geSAr
IHl5OwotICAgICAgICAgICAgRVhQRUNUX1BJWEVMX05FQVIocHgsIHB5LCBjb2xvci5SLCBjb2xv
ci5HLCBjb2xvci5CLCBjb2xvci5BLCB0b2xlcmFuY2UpOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRXhwZWN0RXF1YWxNYXRyaXgoY29uc3QgR0xmbG9h
dCAqZXhwZWN0ZWQsIGNvbnN0IEdMZmxvYXQgKmFjdHVhbCkKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDE2OyArK2kpCi0gICAgewotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbaV0s
IGFjdHVhbFtpXSk7Ci0gICAgfQotfQotCi12b2lkIEV4cGVjdEVxdWFsTWF0cml4KGNvbnN0IEdM
ZmxvYXQgKmV4cGVjdGVkLCBjb25zdCBHTGludCAqYWN0dWFsKQotewotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgMTY7ICsraSkKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxHTGludD4oc3RkOjpyb3VuZGYoZXhwZWN0ZWRbaV0pKSwgYWN0dWFsW2ldKTsKLSAgICB9Ci19
Ci0KLWNvbnN0IGludCBrUmVzb2x1dGlvbiA9IDMwMDsKLQotY2xhc3MgQ0hST01JVU1QYXRoUmVu
ZGVyaW5nVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIENIUk9N
SVVNUGF0aFJlbmRlcmluZ1Rlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoa1Jl
c29sdXRpb24pOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoa1Jlc29sdXRpb24pOwotICAgICAg
ICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgICAgIHNldENvbmZpZ1N0
ZW5jaWxCaXRzKDgpOwotICAgIH0KLQotICAgIGJvb2wgaXNBcHBsaWNhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIik7
IH0KLQotICAgIHZvaWQgdHJ5QWxsRHJhd0Z1bmN0aW9ucyhHTHVpbnQgcGF0aCwgR0xlbnVtIGVy
cikKLSAgICB7Ci0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09V
TlRfVVBfQ0hST01JVU0sIDB4N0YpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLQot
ICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX0RPV05fQ0hS
T01JVU0sIDB4N0YpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLQotICAgICAgICBn
bFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgMHg4MCwgMHg4MCk7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihlcnIpOwotCi0gICAgICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBh
dGgsIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihl
cnIpOwotCi0gICAgICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgR0xfQk9VTkRJ
TkdfQk9YX0NIUk9NSVVNKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0KLSAgICAg
ICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIDB4ODAsIDB4ODAs
IEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihlcnIp
OwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xf
Q09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKGVycik7Ci0gICAgfQotfTsKLQotLy8gVGVzdCBzZXR0aW5nIGFuZCBnZXR0aW5nIG9m
IHBhdGggcmVuZGVyaW5nIG1hdHJpY2VzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rl
c3QsIFRlc3RNYXRyaXgpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0lkZW50aXR5TWF0cml4WzE2XSA9IHsx
LjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwg
MC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZn07Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xmbG9h
dCBrU2VxTWF0cml4WzE2XSA9IHswLjVmLCAgIC0wLjVmLCAgLTAuMWYsICAtMC44ZiwgNC40Ziwg
ICA1LjVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNmYs
ICAgNy43ZiwgICA4LjhmLCAgIDkuOWYsICAxMC4xMWYsIDExLjIyZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4zM2YsIDEzLjQ0ZiwgMTQuNTVmLCAxNS42
NmZ9OwotCi0gICAgc3RhdGljIGNvbnN0IEdMZW51bSBrTWF0cml4TW9kZXNbXSA9IHtHTF9QQVRI
X01PREVMVklFV19DSFJPTUlVTSwgR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNfTsKLQotICAg
IHN0YXRpYyBjb25zdCBHTGVudW0ga0dldE1hdHJpeE1vZGVzW10gPSB7R0xfUEFUSF9NT0RFTFZJ
RVdfTUFUUklYX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJWF9DSFJPTUlVTX07Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDI7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMZmxvYXQgbWZbMTZd
OwotICAgICAgICBHTGludCBtaVsxNl07Ci0gICAgICAgIHN0ZDo6bWVtc2V0KG1mLCAwLCBzaXpl
b2YobWYpKTsKLSAgICAgICAgc3RkOjptZW1zZXQobWksIDAsIHNpemVvZihtaSkpOwotICAgICAg
ICBnbEdldEZsb2F0dihrR2V0TWF0cml4TW9kZXNbaV0sIG1mKTsKLSAgICAgICAgZ2xHZXRJbnRl
Z2VydihrR2V0TWF0cml4TW9kZXNbaV0sIG1pKTsKLSAgICAgICAgRXhwZWN0RXF1YWxNYXRyaXgo
a0lkZW50aXR5TWF0cml4LCBtZik7Ci0gICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtJZGVudGl0
eU1hdHJpeCwgbWkpOwotCi0gICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShrTWF0cml4TW9k
ZXNbaV0sIGtTZXFNYXRyaXgpOwotICAgICAgICBzdGQ6Om1lbXNldChtZiwgMCwgc2l6ZW9mKG1m
KSk7Ci0gICAgICAgIHN0ZDo6bWVtc2V0KG1pLCAwLCBzaXplb2YobWkpKTsKLSAgICAgICAgZ2xH
ZXRGbG9hdHYoa0dldE1hdHJpeE1vZGVzW2ldLCBtZik7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYo
a0dldE1hdHJpeE1vZGVzW2ldLCBtaSk7Ci0gICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtTZXFN
YXRyaXgsIG1mKTsKLSAgICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa1NlcU1hdHJpeCwgbWkpOwot
Ci0gICAgICAgIGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oa01hdHJpeE1vZGVzW2ldKTsK
LSAgICAgICAgc3RkOjptZW1zZXQobWYsIDAsIHNpemVvZihtZikpOwotICAgICAgICBzdGQ6Om1l
bXNldChtaSwgMCwgc2l6ZW9mKG1pKSk7Ci0gICAgICAgIGdsR2V0RmxvYXR2KGtHZXRNYXRyaXhN
b2Rlc1tpXSwgbWYpOwotICAgICAgICBnbEdldEludGVnZXJ2KGtHZXRNYXRyaXhNb2Rlc1tpXSwg
bWkpOwotICAgICAgICBFeHBlY3RFcXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgsIG1mKTsKLSAg
ICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa0lkZW50aXR5TWF0cml4LCBtaSk7Ci0KLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgdHJ5aW5nIHRv
IHNldCBpbmNvcnJlY3QgbWF0cml4IHRhcmdldCByZXN1bHRzCi0vLyBpbiBhIEdMIGVycm9yLgot
VEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RNYXRyaXhFcnJvcnMpCi17Ci0g
ICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xmbG9hdCBt
ZlsxNl07Ci0gICAgc3RkOjptZW1zZXQobWYsIDAsIHNpemVvZihtZikpOwotCi0gICAgZ2xNYXRy
aXhMb2FkZkNIUk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBtZik7Ci0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdM
X1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICAvLyBUZXN0IHRoYXQgaW52YWxpZCBtYXRyaXggdGFyZ2V0cyBmYWlsLgotICAgIGdsTWF0
cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSAtIDEsIG1mKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIFRlc3QgdGhhdCBp
bnZhbGlkIG1hdHJpeCB0YXJnZXRzIGZhaWwuCi0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJP
TUlVTShHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0gKyAxKTsKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9FTlVNKTsKLX0KLQotLy8gVGVzdCBiYXNpYyBwYXRoIGNyZWF0ZSBhbmQg
ZGVsZXRlLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RHZW5EZWxldGUp
Ci17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
VGhpcyBpcyB1bnNwZWNpZmllZCBpbiBOVl9wYXRoX3JlbmRlcmluZy4KLSAgICBFWFBFQ1RfRVEo
MHUsIGdsR2VuUGF0aHNDSFJPTUlVTSgwKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0g
ICAgRVhQRUNUX05FKDB1LCBwYXRoKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwg
MSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgZmlyc3RfcGF0aCA9
IGdsR2VuUGF0aHNDSFJPTUlVTSg1KTsKLSAgICBFWFBFQ1RfTkUoMHUsIGZpcnN0X3BhdGgpOwot
ICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShmaXJzdF9wYXRoLCA1KTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIFRlc3QgZGVsZXRpbmcgcGF0aHMgdGhhdCBhcmUgbm90IGFj
dHVhbGx5IGFsbG9jYXRlZDoKLSAgICAvLyAidW51c2VkIG5hbWVzIGluIC9wYXRocy8gYXJlIHNp
bGVudGx5IGlnbm9yZWQiLgotICAgIGZpcnN0X3BhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oNSk7
Ci0gICAgRVhQRUNUX05FKDB1LCBmaXJzdF9wYXRoKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0oZmlyc3RfcGF0aCwgNik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHNp
emVpIGJpZ19yYW5nZSA9IDB4ZmZmZjsKLSAgICBmaXJzdF9wYXRoICAgICAgICA9IGdsR2VuUGF0
aHNDSFJPTUlVTShiaWdfcmFuZ2UpOwotICAgIEVYUEVDVF9ORSgwdSwgZmlyc3RfcGF0aCk7Ci0g
ICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKGZpcnN0X3BhdGgsIGJpZ19yYW5nZSk7Ci0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBUZXN0IGdsSXNQYXRoQ0hST01JVU0oKS4gQSBw
YXRoIG9iamVjdCBpcyBub3QgY29uc2lkZXJlZCBhIHBhdGggdW50aWxsCi0gICAgLy8gaXQgaGFz
IGFjdHVhbGx5IGJlZW4gc3BlY2lmaWVkIHdpdGggYSBwYXRoIGRhdGEuCi0KLSAgICBwYXRoID0g
Z2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgIEFTU0VSVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0o
cGF0aCkgPT0gR0xfRkFMU0UpOwotCi0gICAgLy8gc3BlY2lmeSB0aGUgZGF0YS4KLSAgICBHTHVi
eXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJP
TUlVTX07Ci0gICAgR0xmbG9hdCBjb29yZHNbXSAgID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQ
YXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jk
cyk7Ci0gICAgQVNTRVJUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9UUlVFKTsK
LSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0gICAgQVNTRVJUX1RSVUUoZ2xJ
c1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9GQUxTRSk7Ci19Ci0KLS8vIFRlc3QgaW5jb3JyZWN0
IHBhdGggY3JlYXRpb24gYW5kIGRlbGV0aW9uIGFuZCBleHBlY3QgR0wgZXJyb3JzLgotVEVTVF9Q
KENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RHZW5EZWxldGVFcnJvcnMpCi17Ci0gICAg
aWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gR2VuUGF0aHMg
LyBEZWxldGVQYXRocyB0ZXN0cy4KLSAgICAvLyBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46
Om1heCgpIGlzIHdyb25nIGZvciBHTHNpemVpLgotICAgIEdMdWludCBmaXJzdF9wYXRoID0gZ2xH
ZW5QYXRoc0NIUk9NSVVNKHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkpOwotICAg
IEVYUEVDVF9FUShmaXJzdF9wYXRoLCAwdSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotCi0gICAgZmlyc3RfcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgtMSk7Ci0g
ICAgRVhQRUNUX0VRKDB1LCBmaXJzdF9wYXRoKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0oMSwgLTUpOwotICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGZpcnN0X3BhdGggPSBnbEdl
blBhdGhzQ0hST01JVU0oLTEpOwotICAgIEVYUEVDVF9FUSgwdSwgZmlyc3RfcGF0aCk7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotfQotCi0vLyBUZXN0IHNldHRpbmcg
YW5kIGdldHRpbmcgcGF0aCBwYXJhbWV0ZXJzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmlu
Z1Rlc3QsIFRlc3RQYXRoUGFyYW1ldGVyKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEp
OwotCi0gICAgLy8gc3BlY2lmeSB0aGUgZGF0YS4KLSAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7
R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xmbG9h
dCBjb29yZHNbXSAgID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlV
TShwYXRoLCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0dMX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSk7
Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtFbmRDYXBzW10gPSB7R0xfRkxBVF9DSFJPTUlV
TSwgR0xfU1FVQVJFX0NIUk9NSVVNLCBHTF9ST1VORF9DSFJPTUlVTX07Ci0gICAgZm9yIChzdGQ6
OnNpemVfdCBpID0gMDsgaSA8IDM7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMaW50IHg7Ci0gICAg
ICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9N
SVVNLCBzdGF0aWNfY2FzdDxHTGVudW0+KGtFbmRDYXBzW2ldKSk7Ci0gICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotICAgICAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKHBhdGgs
IEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU0sICZ4KTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgICAgIEVYUEVDVF9FUShrRW5kQ2Fwc1tpXSwgc3RhdGljX2Nhc3Q8R0xlbnVt
Pih4KSk7Ci0KLSAgICAgICAgR0xmbG9hdCBmOwotICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hS
T01JVU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGtFbmRDYXBzWyhpICsgMSkgJSAz
XSkpOwotICAgICAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhf
RU5EX0NBUFNfQ0hST01JVU0sICZmKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgICAgIEVYUEVDVF9FUShrRW5kQ2Fwc1soaSArIDEpICUgM10sIHN0YXRpY19jYXN0PEdMZW51
bT4oZikpOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBHTGVudW0ga0pvaW5TdHlsZXNbXSA9
IHtHTF9NSVRFUl9SRVZFUlRfQ0hST01JVU0sIEdMX0JFVkVMX0NIUk9NSVVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ST1VORF9DSFJPTUlVTX07Ci0gICAg
Zm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IDM7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMaW50
IHg7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0pPSU5f
U1RZTEVfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxHTGVudW0+KGtKb2luU3R5bGVzW2ldKSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgICAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhf
Sk9JTl9TVFlMRV9DSFJPTUlVTSwgJngpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICAgICAgRVhQRUNUX0VRKGtKb2luU3R5bGVzW2ldLCBzdGF0aWNfY2FzdDxHTGVudW0+KHgp
KTsKLQotICAgICAgICBHTGZsb2F0IGY7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlV
TShwYXRoLCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0PihrSm9pblN0eWxlc1soaSArIDEpICUg
M10pKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIGdsR2V0UGF0aFBh
cmFtZXRlcmZ2Q0hST01JVU0ocGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCAmZik7
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoa0pvaW5T
dHlsZXNbKGkgKyAxKSAlIDNdLCBzdGF0aWNfY2FzdDxHTGVudW0+KGYpKTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9L
RV9XSURUSF9DSFJPTUlVTSwgNS4wZik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgICAgIEdMZmxvYXQgZjsKLSAgICAgICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlV
TShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSwgJmYpOwotICAgICAgICBFWFBF
Q1RfRVEoNS4wZiwgZik7Ci0gICAgfQotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgs
IDEpOwotfQotCi0vLyBUZXN0IHRoYXQgc2V0dGluZyBpbmNvcnJlY3QgcGF0aCBwYXJhbWV0ZXIg
Z2VuZXJhdGVzIEdMIGVycm9yLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRl
c3RQYXRoUGFyYW1ldGVyRXJyb3JzKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwot
Ci0gICAgLy8gUGF0aFBhcmFtZXRlcio6IFdyb25nIHZhbHVlIGZvciB0aGUgcG5hbWUgc2hvdWxk
IGZhaWwuCi0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9T
VFlMRV9DSFJPTUlVTSwgR0xfRkxBVF9DSFJPTUlVTSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7Ci0KLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xf
UEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgR0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNKTsKLSAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIFBhdGhQYXJhbWV0ZXIq
OiBXcm9uZyBmbG9hdGluZy1wb2ludCB2YWx1ZSBzaG91bGQgZmFpbC4KLSAgICBnbFBhdGhQYXJh
bWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0sIC0wLjFm
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBQYXRo
UGFyYW1ldGVyKjogV3JvbmcgcG5hbWUgc2hvdWxkIGZhaWwuCi0gICAgZ2xQYXRoUGFyYW1ldGVy
aUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNIC0gMSwgNSk7Ci0g
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICBnbERlbGV0ZVBhdGhz
Q0hST01JVU0ocGF0aCwgMSk7Ci19Ci0KLS8vIFRlc3QgZXhwZWN0ZWQgcGF0aCBvYmplY3Qgc3Rh
dGUuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhPYmplY3RTdGF0
ZSkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBn
bFZpZXdwb3J0KDAsIDAsIGtSZXNvbHV0aW9uLCBrUmVzb2x1dGlvbik7Ci0gICAgZ2xDbGVhckNv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgIGdsU3RlbmNpbE1hc2soMHhmZmZmZmZm
Zik7Ci0gICAgZ2xDbGVhclN0ZW5jaWwoMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9N
SVVNKEdMX0FMV0FZUywgMCwgMHhGRik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VF
UCwgR0xfWkVSTyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBUZXN0IHRo
YXQgdHJ5aW5nIHRvIGRyYXcgbm9uLWV4aXN0aW5nIHBhdGhzIGRvZXMgbm90IHByb2R1Y2UgZXJy
b3JzIG9yIHJlc3VsdHMuCi0gICAgR0x1aW50IG5vbl9leGlzdGluZ19wYXRoc1tdID0gezAsIDU1
LCA3NDc0NH07Ci0gICAgZm9yIChhdXRvICZwIDogbm9uX2V4aXN0aW5nX3BhdGhzKQotICAgIHsK
LSAgICAgICAgRVhQRUNUX0dMX0ZBTFNFKGdsSXNQYXRoQ0hST01JVU0ocCkpOwotICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgdHJ5QWxsRHJhd0Z1bmN0aW9ucyhwLCBHTF9O
T19FUlJPUik7Ci0gICAgfQotCi0gICAgLy8gUGF0aCBuYW1lIG1hcmtlZCBhcyB1c2VkIGJ1dCB3
aXRob3V0IHBhdGggb2JqZWN0IHN0YXRlIGNhdXNlcwotICAgIC8vIGEgR0wgZXJyb3IgdXBvbiBh
bnkgZHJhdyBjb21tYW5kLgotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEp
OwotICAgIEVYUEVDVF9HTF9GQUxTRShnbElzUGF0aENIUk9NSVVNKHBhdGgpKTsKLSAgICB0cnlB
bGxEcmF3RnVuY3Rpb25zKHBhdGgsIEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICBnbERlbGV0
ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICAvLyBEb2N1bWVudCBhIGJpdCBvZiBhbiBp
bmNvbnNpc3RlbmN5OiBwYXRoIG5hbWUgbWFya2VkIGFzIHVzZWQgYnV0IHdpdGhvdXQKLSAgICAv
LyBwYXRoIG9iamVjdCBzdGF0ZSBjYXVzZXMgYSBHTCBlcnJvciB1cG9uIGFueSBkcmF3IGNvbW1h
bmQgKHRlc3RlZCBhYm92ZSkuCi0gICAgLy8gUGF0aCBuYW1lIHRoYXQgaGFkIHBhdGggb2JqZWN0
IHN0YXRlLCBidXQgdGhlbiB3YXMgImNsZWFyZWQiLCBzdGlsbCBoYXMgYQotICAgIC8vIHBhdGgg
b2JqZWN0IHN0YXRlLCBldmVuIHRob3VnaCB0aGUgc3RhdGUgaXMgZW1wdHkuCi0gICAgcGF0aCA9
IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBFWFBFQ1RfR0xfRkFMU0UoZ2xJc1BhdGhDSFJP
TUlVTShwYXRoKSk7Ci0KLSAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJP
TUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xmbG9hdCBjb29yZHNbXSAgID0g
ezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21t
YW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAgRVhQRUNUX0dMX1RSVUUoZ2xJc1BhdGhD
SFJPTUlVTShwYXRoKSk7Ci0KLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDAsIG51
bGxwdHIsIDAsIEdMX0ZMT0FULCBudWxscHRyKTsKLSAgICBFWFBFQ1RfR0xfVFJVRShnbElzUGF0
aENIUk9NSVVNKHBhdGgpKTsgIC8vIFRoZSBzdXJwcmlzZS4KLQotICAgIHRyeUFsbERyYXdGdW5j
dGlvbnMocGF0aCwgR0xfTk9fRVJST1IpOwotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRo
LCAxKTsKLQotICAgIC8vIE1ha2Ugc3VyZSBub3RoaW5nIGdvdCBkcmF3biBieSB0aGUgZHJhd2lu
ZyBjb21tYW5kcyB0aGF0IHNob3VsZCBub3QgcHJvZHVjZQotICAgIC8vIGFueXRoaW5nLgotICAg
IGNvbnN0IGFuZ2xlOjpHTENvbG9yIGJsYWNrID0gezAsIDAsIDAsIDB9OwotICAgIEVYUEVDVF9U
UlVFKENoZWNrUGl4ZWxzKDAsIDAsIGtSZXNvbHV0aW9uLCBrUmVzb2x1dGlvbiwgMCwgYmxhY2sp
KTsKLX0KLQotLy8gVGVzdCB0aGF0IHRyeWluZyB0byB1c2UgcGF0aCBvYmplY3QgdGhhdCBkb2Vz
bid0IGV4aXN0IGdlbmVyYXRlcwotLy8gYSBHTCBlcnJvci4KLVRFU1RfUChDSFJPTUlVTVBhdGhS
ZW5kZXJpbmdUZXN0LCBUZXN0VW5uYW1lZFBhdGhzRXJyb3JzKQotewotICAgIGlmICghaXNBcHBs
aWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFVubmFtZWQgcGF0aHM6IFRyeWlu
ZyB0byBjcmVhdGUgYSBwYXRoIG9iamVjdCB3aXRoIG5vbi1leGlzdGluZyBwYXRoIG5hbWUKLSAg
ICAvLyBwcm9kdWNlcyBlcnJvci4gIChOb3QgYSBlcnJvciBpbiByZWFsIE5WX3BhdGhfcmVuZGVy
aW5nKS4KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBHTHVieXRlIGNvbW1hbmRzW10g
PSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xm
bG9hdCBjb29yZHNbXSAgID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJP
TUlVTSg1NTUsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29vcmRzKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgLy8gUGF0aFBhcmFtZXRlcio6
IFVzaW5nIG5vbi1leGlzdGluZyBwYXRoIG9iamVjdCBwcm9kdWNlcyBlcnJvci4KLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0oNTU1LCBHTF9Q
QVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSwgNS4wZik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIGds
UGF0aFBhcmFtZXRlcmlDSFJPTUlVTSg1NTUsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwg
R0xfUk9VTkRfQ0hST01JVU0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBzZXR0aW5nIGluY29ycmVjdCBwYXRoIGRhdGEgZ2Vu
ZXJhdGVzIGEgR0wgZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVz
dFBhdGhDb21tYW5kc0Vycm9ycykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtJbnZhbGlkQ29vcmRUeXBlID0g
R0xfTk9ORTsKLQotICAgIEdMdWludCBwYXRoICAgICAgICA9IGdsR2VuUGF0aHNDSFJPTUlVTSgx
KTsKLSAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfQ0xP
U0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xmbG9hdCBjb29yZHNbXSAgID0gezUwLjBmLCA1MC4w
Zn07Ci0KLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAtNCwg
R0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUp
OwotCi0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAtMSwgY29tbWFuZHMsIDIsIEdM
X0ZMT0FULCBjb29yZHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
LQotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIDIsIGtJbnZh
bGlkQ29vcmRUeXBlLCBjb29yZHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VO
VU0pOwotCi0gICAgLy8gaW5jb3JyZWN0IG51bWJlciBvZiBjb29yZGluYXRlcwotICAgIGdsUGF0
aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIHN0ZDo6bnVtZXJpY19saW1pdHM8
R0xzaXplaT46Om1heCgpLCBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
b3Jkcyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgLy8g
VGhpcyBzaG91bGQgZmFpbCBkdWUgdG8gY21kIGNvdW50ICsgY29vcmQgY291bnQgKiBzaG9ydCBz
aXplLgotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIHN0ZDo6
bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpLCBHTF9TSE9SVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvb3Jkcyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLX0KLQotLy8g
VGVzdCB0aGF0IHRyeWluZyB0byByZW5kZXIgYSBwYXRoIHdpdGggaW52YWxpZCBhcmd1bWVudHMK
LS8vIGdlbmVyYXRlcyBhIEdMIGVycm9yLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rl
c3QsIFRlc3RQYXRoUmVuZGVyaW5nSW52YWxpZEFyZ3MpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2Fi
bGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hS
T01JVU0oMSk7Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAwLCBudWxscHRyLCAw
LCBHTF9GTE9BVCwgbnVsbHB0cik7Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCBub3JtYWwgY2FsbHMg
d29yay4KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NI
Uk9NSVVNLCAweDdGKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdG
LCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgLy8gVXNpbmcgaW52YWxpZCBmaWxsIG1vZGUgY2F1c2VzIElOVkFMSURfRU5VTS4KLSAg
ICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNIC0g
MSwgMHg3Rik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgZ2xT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlV
TSAtIDEsIDB4N0YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9C
T1VORElOR19CT1hfQ0hST01JVU0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VO
VU0pOwotCi0gICAgLy8gVXNpbmcgaW52YWxpZCBjb3ZlciBtb2RlIGNhdXNlcyBJTlZBTElEX0VO
VU0uCi0gICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09OVkVYX0hVTExfQ0hS
T01JVU0gLSAxKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9JTlZBTElE
X0VOVU0pLCBnbEdldEVycm9yKCkpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0gKyAxKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIFVzaW5nIG1hc2sr
MSBub3QgYmVpbmcgcG93ZXIgb2YgdHdvIGNhdXNlcyBJTlZBTElEX1ZBTFVFIHdpdGggdXAvZG93
biBmaWxsIG1vZGUKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5U
X1VQX0NIUk9NSVVNLCAweDQwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7Ci0KLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NP
VU5UX0RPV05fQ0hST01JVU0sIDEyLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIGNoZWNrIGluY29ycmVj
dCBpbnN0YW5jZSBwYXJhbWV0ZXJzLgotCi0gICAgLy8gQ292ZXJGaWxsUGF0aEluc3RhbmNlZAot
ICAgIHsKLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VO
U0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsQ292ZXJG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgR0xfQ09OVkVY
X0hVTExfQ0hST01JVU0sIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9F
TlVNKTsKLQotICAgICAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9V
TlNJR05FRF9JTlQsIG51bGxwdHIsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAg
ICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsQ292
ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAs
IEdMX1VOU0lHTkVEX0lOVCwgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X0VOVU0pOwotCi0gICAgICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdM
X1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsIG51bGxw
dHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAg
ICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZw
YXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0sIG51bGxwdHIpOwotICAg
ICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgLy8g
Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkCi0gICAgewotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNKC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05W
RVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotCi0gICAgICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0o
MSwgR0xfRkxPQVQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAg
ICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xDb3Zl
clN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIs
IDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQs
IEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAg
ICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5U
LCAmcGF0aCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xDb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBH
TF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgbnVsbHB0cik7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9Ci0KLSAgICAvLyBTdGVuY2ls
RmlsbFBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPVU5UX1VQX0NI
Uk9NSVVNLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfTk9ORSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZB
TFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdM
X0ZMT0FULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4MCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2ls
RmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIsIDAs
IEdMX0NPVU5UX1VQX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4MCwgR0xfTk9ORSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VOU0lHTkVEX0lOVCwg
MHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUs
IG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQot
ICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVE
X0lOVCwgJnBhdGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgbnVsbHB0cik7Ci0gICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdM
X0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT1VOVF9VUF9D
SFJPTUlVTSwgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1RSQU5TTEFURV9YX0NIUk9NSVVNLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfVkFMVUUpOwotICAgIH0KLQotICAgIC8vIFN0ZW5jaWxTdHJva2VQYXRo
SW5zdGFuY2VkCi0gICAgewotICAgICAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MDAsIDB4MDAsIEdMX05PTkUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
LSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGds
U3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAs
IDB4MDAsIDB4MDAsIEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyLCAwLCAweDAwLCAweDAwLCBHTF9O
T05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAg
ICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5U
LCAmcGF0aCwgMCwgMHgwMCwgMHgwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAwLCAweDAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNM
QVRFX1hfQ0hST01JVU0sIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgLy8gU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkCi0gICAgewotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVN
LCAwLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3Zl
ckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQsICZwYXRoLCAwLCBHTF9DT05W
RVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgR0xfTk9ORSwgbnVsbHB0cik7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGds
U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURf
SU5ULCBudWxscHRyLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVN
LCBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIEdMX0NP
VU5UX1VQX0NIUk9NSVVNLCBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9I
VUxMX0NIUk9NSVVNLCAwLCBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgbnVsbHB0cik7Ci0gICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0
aCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgR0xfRkxPQVQs
IG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQot
ICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAg
ICAgICAgICAgMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hS
T01JVU0sIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLAotICAgICAgICAgICAgR0xfVFJBTlNMQVRF
X1hfQ0hST01JVU0sIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7Ci0gICAgfQotCi0gICAgLy8gU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWQKLSAgICB7Ci0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgMHgwLCAweDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05W
RVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQsICZwYXRoLCAwLCAweDAsIDB4MCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwg
MCwgMHgwLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwgbnVsbHB0cik7Ci0g
ICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURf
SU5ULCAmcGF0aCwgMCwgMHgwLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgR0xfTk9ORSwgbnVsbHB0cik7Ci0gICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQs
ICZwYXRoLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9GTE9BVCwgbnVs
bHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAg
ICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9V
TlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VFJBTlNMQVRFX1hfQ0hST01JVU0sIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBh
dGgsIDEpOwotfQotCi1jb25zdCBHTGZsb2F0IGtQcm9qZWN0aW9uTWF0cml4WzE2XSA9IHsyLjBm
IC8ga1Jlc29sdXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4wZiAvIGtSZXNvbHV0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLjBmLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0xLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEu
MGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wZn07Ci0KLWNsYXNzIENIUk9NSVVN
UGF0aFJlbmRlcmluZ0RyYXdUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QoKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoa1Jlc29sdXRpb24pOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoa1Jlc29s
dXRpb24pOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdH
cmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAg
ICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOwotICAgIH0KLQotICAgIGJvb2wgaXNBcHBsaWNh
YmxlKCkgY29uc3QgeyByZXR1cm4gSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX3Bh
dGhfcmVuZGVyaW5nIik7IH0KLQotICAgIHZvaWQgc2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCkK
LSAgICB7Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0aW9u
KTsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgICAg
ICBnbFN0ZW5jaWxNYXNrKDB4ZmZmZmZmZmYpOwotICAgICAgICBnbENsZWFyU3RlbmNpbCgwKTsK
LSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUKTsKLSAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKLQotICAgICAgICBjb25z
dGV4cHIgY2hhciBrVmVydGV4U2hhZGVyU291cmNlW10gPQotICAgICAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKLSAgICAgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjApOyBcbiIKLSAg
ICAgICAgICAgICJ9IjsKLQotICAgICAgICBjb25zdGV4cHIgY2hhciBrRnJhZ21lbnRTaGFkZXJT
b3VyY2VbXSA9Ci0gICAgICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICAgICAidW5pZm9ybSB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xuIgotICAgICAgICAg
ICAgIn0iOwotCi0gICAgICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oa1ZlcnRl
eFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgZ2xVc2VQcm9n
cmFtKHByb2dyYW0pOwotICAgICAgICBtQ29sb3JMb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiY29sb3IiKTsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotCi0g
ICAgICAgIC8vIFNldCB1cCBvcnRob2dvbmFsIHByb2plY3Rpb24gd2l0aCBuZWFyL2ZhciBwbGFu
ZSBkaXN0YW5jZSBvZiAyLgotICAgICAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFUSF9Q
Uk9KRUNUSU9OX0NIUk9NSVVNLCBrUHJvamVjdGlvbk1hdHJpeCk7Ci0gICAgICAgIGdsTWF0cml4
TG9hZElkZW50aXR5Q0hST01JVU0oR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0pOwotCi0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgc2V0dXBQYXRoU3Rh
dGVGb3JUZXN0UGF0dGVybihHTHVpbnQgcGF0aCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBHTHVieXRlIGtDb21tYW5kc1tdID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0xJTkVfVE9f
Q0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1FVQURSQVRJQ19DVVJWRV9UT19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ1VCSUNfQ1VSVkVfVE9fQ0hST01JVU0sIEdMX0NMT1NFX1BB
VEhfQ0hST01JVU19OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtDb29yZHNbXSA9
IHs1MC4wZiwgNTAuMGYsIDc1LjBmLCA3NS4wZiwgMTAwLjBmLCA2Mi41ZiwgNTAuMGYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS41ZiwgMC4wZiwgIDYyLjVm
LCA1MC4wZiwgNTAuMGYsICAyNS4wZiwgNzUuMGZ9OwotCi0gICAgICAgIGdsUGF0aENvbW1hbmRz
Q0hST01JVU0ocGF0aCwgNSwga0NvbW1hbmRzLCAxNCwgR0xfRkxPQVQsIGtDb29yZHMpOwotICAg
ICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJPS0VfV0lEVEhf
Q0hST01JVU0sIDUuMGYpOwotICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwg
R0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTSwgMS4wZik7Ci0gICAgICAgIGdsUGF0aFBhcmFt
ZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9CT1VORF9DSFJPTUlVTSwgLjAyZik7
Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0pPSU5fU1RZ
TEVfQ0hST01JVU0sIEdMX1JPVU5EX0NIUk9NSVVNKTsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVy
aUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU0sIEdMX1NRVUFSRV9DSFJP
TUlVTSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQg
dmVyaWZ5VGVzdFBhdHRlcm5GaWxsKEdMZmxvYXQgZmx4LCBHTGZsb2F0IGZseSkKLSAgICB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBHTGludCBrRmlsbENvb3Jkc1tdICA9IHs1NSwgNTQsIDUwLCAy
OCwgNjYsIDYzfTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGFuZ2xlOjpHTENvbG9yIGtCbHVlID0g
ezAsIDAsIDI1NSwgMjU1fTsKLQotICAgICAgICBHTGludCB4ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+
KGZseCk7Ci0gICAgICAgIEdMaW50IHkgPSBzdGF0aWNfY2FzdDxHTGludD4oZmx5KTsKLQotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDY7IGkgKz0gMikKLSAgICAgICAgewotICAgICAg
ICAgICAgR0xpbnQgZnggPSBrRmlsbENvb3Jkc1tpXTsKLSAgICAgICAgICAgIEdMaW50IGZ5ID0g
a0ZpbGxDb29yZHNbaSArIDFdOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMo
eCArIGZ4LCB5ICsgZnksIDEsIDEsIDAsIGtCbHVlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
dm9pZCB2ZXJpZnlUZXN0UGF0dGVybkJnKEdMZmxvYXQgZngsIEdMZmxvYXQgZnkpCi0gICAgewot
ICAgICAgICBzdGF0aWMgY29uc3QgR0xpbnQga0JhY2tncm91bmRDb29yZHNbXSAgICAgPSB7ODAs
IDgwLCAyMCwgMjAsIDkwLCAxfTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGFuZ2xlOjpHTENvbG9y
IGtFeHBlY3RlZENvbG9yID0gezAsIDAsIDAsIDB9OwotCi0gICAgICAgIEdMaW50IHggPSBzdGF0
aWNfY2FzdDxHTGludD4oZngpOwotICAgICAgICBHTGludCB5ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+
KGZ5KTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDY7IGkgKz0gMikKLSAgICAg
ICAgewotICAgICAgICAgICAgR0xpbnQgYnggPSBrQmFja2dyb3VuZENvb3Jkc1tpXTsKLSAgICAg
ICAgICAgIEdMaW50IGJ5ID0ga0JhY2tncm91bmRDb29yZHNbaSArIDFdOwotICAgICAgICAgICAg
RVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIGJ4LCB5ICsgYnksIDEsIDEsIDAsIGtFeHBlY3Rl
ZENvbG9yKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHZlcmlmeVRlc3RQYXR0ZXJu
U3Ryb2tlKEdMZmxvYXQgZngsIEdMZmxvYXQgZnkpCi0gICAgewotICAgICAgICBHTGludCB4ID0g
c3RhdGljX2Nhc3Q8R0xpbnQ+KGZ4KTsKLSAgICAgICAgR0xpbnQgeSA9IHN0YXRpY19jYXN0PEdM
aW50PihmeSk7Ci0KLSAgICAgICAgLy8gSW5zaWRlIHRoZSBzdHJva2Ugd2Ugc2hvdWxkIGhhdmUg
Z3JlZW4uCi0gICAgICAgIHN0YXRpYyBjb25zdCBhbmdsZTo6R0xDb2xvciBrR3JlZW4gPSB7MCwg
MjU1LCAwLCAyNTV9OwotICAgICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgNTAsIHkg
KyA1MywgMSwgMSwgMCwga0dyZWVuKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxz
KHggKyAyNiwgeSArIDc2LCAxLCAxLCAwLCBrR3JlZW4pKTsKLQotICAgICAgICAvLyBPdXRzaWRl
IHRoZSBwYXRoIHdlIHNob3VsZCBoYXZlIGJsYWNrLgotICAgICAgICBzdGF0aWMgY29uc3QgYW5n
bGU6OkdMQ29sb3IgYmxhY2sgPSB7MCwgMCwgMCwgMH07Ci0gICAgICAgIEVYUEVDVF9UUlVFKENo
ZWNrUGl4ZWxzKHggKyAxMCwgeSArIDEwLCAxLCAxLCAwLCBibGFjaykpOwotICAgICAgICBFWFBF
Q1RfVFJVRShDaGVja1BpeGVscyh4ICsgODAsIHkgKyA4MCwgMSwgMSwgMCwgYmxhY2spKTsKLSAg
ICB9Ci0KLSAgICBHTHVpbnQgbUNvbG9yTG9jOwotfTsKLQotLy8gVGVzdHMgdGhhdCBiYXNpYyBw
YXRoIHJlbmRlcmluZyBmdW5jdGlvbnMgd29yay4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJp
bmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJpbmcpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtCbHVlW10gID0g
ezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5b
XSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHNldHVwU3RhdGVGb3JUZXN0UGF0
dGVybigpOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAg
c2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihwYXRoKTsKLQotICAgIC8vIERvIHRoZSBzdGVu
Y2lsIGZpbGwsIGNvdmVyIGZpbGwsIHN0ZW5jaWwgc3Ryb2tlLCBjb3ZlciBzdHJva2UKLSAgICAv
LyBpbiB1bmNvbnZlbnRpb25hbCBvcmRlcjoKLSAgICAvLyAxKSBzdGVuY2lsIHRoZSBzdHJva2Ug
aW4gc3RlbmNpbCBoaWdoIGJpdAotICAgIC8vIDIpIHN0ZW5jaWwgdGhlIGZpbGwgaW4gbG93IGJp
dHMKLSAgICAvLyAzKSBjb3ZlciB0aGUgZmlsbAotICAgIC8vIDQpIGNvdmVyIHRoZSBzdHJva2UK
LSAgICAvLyBUaGlzIGlzIGRvbmUgdG8gY2hlY2sgdGhhdCBnbFBhdGhTdGVuY2lsRnVuYyB3b3Jr
cywgZWcgdGhlIG1hc2sKLSAgICAvLyBnb2VzIHRocm91Z2guIFN0ZW5jaWwgZnVuYyBpcyBub3Qg
dGVzdGVkIEFUTSwgZm9yIHNpbXBsaWNpdHkuCi0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9N
SVVNKEdMX0FMV0FZUywgMCwgMHhGRik7Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVN
KHBhdGgsIDB4ODAsIDB4ODApOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9B
TFdBWVMsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xf
Q09VTlRfVVBfQ0hST01JVU0sIDB4N0YpOwotCi0gICAgZ2xTdGVuY2lsRnVuYyhHTF9MRVNTLCAw
LCAweDdGKTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAg
ICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7Ci0gICAgZ2xDb3ZlckZpbGxQYXRo
Q0hST01JVU0ocGF0aCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKLQotICAgIGdsU3RlbmNp
bEZ1bmMoR0xfRVFVQUwsIDB4ODAsIDB4ODApOwotICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdM
X0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7
Ci0gICAgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT05WRVhfSFVMTF9DSFJP
TUlVTSk7Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFZlcmlmeSB0aGUgaW1hZ2UuCi0gICAgdmVyaWZ5
VGVzdFBhdHRlcm5GaWxsKDAsIDApOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoMCwgMCk7Ci0g
ICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoMCwgMCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBTdGVu
Y2lsVGhlbntTdHJva2UsRmlsbH0gcGF0aCByZW5kZXJpbmcgZnVuY3Rpb25zIHdvcmsKLVRFU1Rf
UChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJpbmdUaGVuRnVu
Y3Rpb25zKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHN0YXRpYyBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAxLjBmfTsKLSAg
ICBzdGF0aWMgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwgMS4wZn07Ci0KLSAg
ICBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsKLQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5Q
YXRoc0NIUk9NSVVNKDEpOwotICAgIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBhdHRlcm4ocGF0aCk7
Ci0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHhGRik7Ci0g
ICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgMHg4MCwgMHg4MCk7Ci0gICAgZ2xTdGVuY2lsT3Ao
R0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywg
MSwga0dyZWVuKTsKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0ocGF0
aCwgMHg4MCwgMHg4MCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKLQotICAgIGdsUGF0aFN0
ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKLSAgICBnbFN0ZW5jaWxGdW5j
KEdMX0xFU1MsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdM
X1pFUk8pOwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICBnbFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVN
LCAweDdGLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSk7Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hS
T01JVU0ocGF0aCwgMSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIGltYWdlLgotICAgIHZlcmlmeVRl
c3RQYXR0ZXJuRmlsbCgwLCAwKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAsIDApOwotICAg
IHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAsIDApOwotfQotCi0vLyBUZXN0cyB0aGF0IGRyYXdp
bmcgd2l0aCAqSW5zdGFuY2VkIGZ1bmN0aW9ucyB3b3JrLgotVEVTVF9QKENIUk9NSVVNUGF0aFJl
bmRlcmluZ0RyYXdUZXN0LCBUZXN0UGF0aFJlbmRlcmluZ0luc3RhbmNlZCkKLXsKLSAgICBpZiAo
IWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxv
YXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGljIGNvbnN0
IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OwotCi0gICAgc2V0dXBT
dGF0ZUZvclRlc3RQYXR0ZXJuKCk7Ci0KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJP
TUlVTSgxKTsKLSAgICBzZXR1cFBhdGhTdGF0ZUZvclRlc3RQYXR0ZXJuKHBhdGgpOwotCi0gICAg
Y29uc3QgR0x1aW50IGtQYXRoc1tdICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHsxLCAx
LCAxLCAxLCAxfTsKLSAgICBjb25zdCBHTHNpemVpIGtQYXRoQ291bnQgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gNTsKLSAgICBjb25zdCBHTGZsb2F0IGtTaGFwZVNpemUgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gODAuMGY7Ci0gICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga1RyYW5zZm9y
bXNba1BhdGhDb3VudCAqIDEyXSA9IHsKLSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwg
MS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgICAgICAgICAgIDAuMGYsICAgICAg
IDAuMGYsCi0gICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYs
IDAuMGYsIDEuMGYsIGtTaGFwZVNpemUsICAgICAwLjBmLCAgICAgICAwLjBmLAotICAgICAgICAx
LjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCBrU2hh
cGVTaXplICogMiwgMC4wZiwgICAgICAgMC4wZiwKLSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwg
MC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgICAgICAgICAgIGtTaGFw
ZVNpemUsIDAuMGYsCi0gICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYs
IDAuMGYsIDAuMGYsIDEuMGYsIGtTaGFwZVNpemUsICAgICBrU2hhcGVTaXplLCAwLjBmfTsKLQot
ICAgIC8vIFRoZSB0ZXN0IHBhdHRlcm4gaXMgdGhlIHNhbWUgYXMgaW4gdGhlIHNpbXBsZSBkcmF3
IGNhc2UgYWJvdmUsCi0gICAgLy8gZXhjZXB0IHRoYXQgdGhlIHBhdGggaXMgZHJhd24ga1BhdGhD
b3VudCB0aW1lcyB3aXRoIGRpZmZlcmVudCBvZmZzZXRzLgotICAgIGdsUGF0aFN0ZW5jaWxGdW5j
Q0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBrUGF0aHMsIHBhdGgg
LSAxLCAweDgwLCAweDgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9BRkZJTkVfM0RfQ0hST01JVU0sIGtUcmFuc2Zvcm1zKTsKLQotICAgIGdsUGF0aFN0ZW5j
aWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKLSAgICBnbFVuaWZvcm00ZnYobUNv
bG9yTG9jLCAxLCBrQmx1ZSk7Ci0gICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRocywgcGF0aCAtIDEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3
RiwgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga1RyYW5zZm9ybXMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNpbE9wKEdMX0tF
RVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNKGtQYXRoQ291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElOR19CT1hfT0ZfQk9VTkRJ
TkdfQk9YRVNfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQUZGSU5FXzNEX0NIUk9NSVVNLCBrVHJhbnNmb3Jtcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDB4ODAsIDB4ODApOwotICAg
IGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5pZm9ybTRm
dihtQ29sb3JMb2MsIDEsIGtHcmVlbik7Ci0gICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRocywgcGF0aCAtIDEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElOR19CT1hfT0Zf
Qk9VTkRJTkdfQk9YRVNfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9BRkZJTkVfM0RfQ0hST01JVU0sIGtUcmFuc2Zvcm1zKTsKLQotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOwot
Ci0gICAgLy8gVmVyaWZ5IHRoZSBpbWFnZS4KLSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoMC4w
ZiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygwLjBmLCAwLjBmKTsKLSAgICB2ZXJp
ZnlUZXN0UGF0dGVyblN0cm9rZSgwLjBmLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJu
RmlsbChrU2hhcGVTaXplLCAwLjBmKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNp
emUsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFwZVNpemUsIDAuMGYp
OwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUgKiAyLCAwLjBmKTsKLSAg
ICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUgKiAyLCAwLjBmKTsKLSAgICB2ZXJpZnlU
ZXN0UGF0dGVyblN0cm9rZShrU2hhcGVTaXplICogMiwgMC4wZik7Ci0KLSAgICB2ZXJpZnlUZXN0
UGF0dGVybkZpbGwoMC4wZiwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygw
LjBmLCBrU2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLjBmLCBrU2hh
cGVTaXplKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChrU2hhcGVTaXplLCBrU2hhcGVT
aXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUsIGtTaGFwZVNpemUpOwot
ICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFwZVNpemUsIGtTaGFwZVNpemUpOwotfQot
Ci0vLyBUZXN0IHRoYXQgaW5zdGFuY2VkIGZpbGwvc3Ryb2tlIHRoZW4gY292ZXIgZnVuY3Rpb25z
IHdvcmsuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QsIFRlc3RQYXRoUmVu
ZGVyaW5nVGhlbkZ1bmN0aW9uc0luc3RhbmNlZCkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSAgPSB7
MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltd
ID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OwotCi0gICAgc2V0dXBTdGF0ZUZvclRlc3RQYXR0
ZXJuKCk7Ci0KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBz
ZXR1cFBhdGhTdGF0ZUZvclRlc3RQYXR0ZXJuKHBhdGgpOwotCi0gICAgY29uc3QgR0x1aW50IGtQ
YXRoc1tdICAgICAgICAgICAgICA9IHsxLCAxLCAxLCAxLCAxfTsKLSAgICBjb25zdCBHTHNpemVp
IGtQYXRoQ291bnQgICAgICAgICAgID0gNTsKLSAgICBjb25zdCBHTGZsb2F0IGtTaGFwZVNpemUg
ICAgICAgICAgID0gODAuMGY7Ci0gICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga1RyYW5zZm9ybXNb
XSA9IHsKLSAgICAgICAgMC4wZiwgMC4wZiwga1NoYXBlU2l6ZSwgMC4wZiwgICAgICAga1NoYXBl
U2l6ZSAqIDIsCi0gICAgICAgIDAuMGYsIDAuMGYsIGtTaGFwZVNpemUsIGtTaGFwZVNpemUsIGtT
aGFwZVNpemUsCi0gICAgfTsKLQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxX
QVlTLCAwLCAweEZGKTsKLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDgwLCAweDgwKTsK
LSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBnbFVuaWZv
cm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICAgICAga1BhdGhDb3VudCwgR0xfVU5TSUdORURf
SU5ULCBrUGF0aHMsIHBhdGggLSAxLCAweDgwLCAweDgwLAotICAgICAgICBHTF9CT1VORElOR19C
T1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0sIEdMX1RSQU5TTEFURV8yRF9DSFJPTUlVTSwg
a1RyYW5zZm9ybXMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFBhdGhT
dGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsRnVu
YyhHTF9MRVNTLCAwLCAweDdGKTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBH
TF9aRVJPKTsKLSAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7Ci0gICAgZ2xT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICAgICAga1BhdGhD
b3VudCwgR0xfVU5TSUdORURfSU5ULCBrUGF0aHMsIHBhdGggLSAxLCBHTF9DT1VOVF9VUF9DSFJP
TUlVTSwgMHg3RiwKLSAgICAgICAgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NI
Uk9NSVVNLCBHTF9UUkFOU0xBVEVfMkRfQ0hST01JVU0sIGtUcmFuc2Zvcm1zKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEp
OwotCi0gICAgLy8gVmVyaWZ5IHRoZSBpbWFnZS4KLSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwo
MC4wZiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygwLjBmLCAwLjBmKTsKLSAgICB2
ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLjBmLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0
ZXJuRmlsbChrU2hhcGVTaXplLCAwLjBmKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFw
ZVNpemUsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFwZVNpemUsIDAu
MGYpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUgKiAyLCAwLjBmKTsK
LSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUgKiAyLCAwLjBmKTsKLSAgICB2ZXJp
ZnlUZXN0UGF0dGVyblN0cm9rZShrU2hhcGVTaXplICogMiwgMC4wZik7Ci0KLSAgICB2ZXJpZnlU
ZXN0UGF0dGVybkZpbGwoMC4wZiwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5C
ZygwLjBmLCBrU2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLjBmLCBr
U2hhcGVTaXplKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChrU2hhcGVTaXplLCBrU2hh
cGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKGtTaGFwZVNpemUsIGtTaGFwZVNpemUp
OwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFwZVNpemUsIGtTaGFwZVNpemUpOwot
fQotCi0vLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSB0ZXN0IHRoYXQgZHJhd3MgYSBncmlkIG9m
IHYtc2hhcGVzLiBUaGUgZ3JpZCBpcwotLy8gZHJhd24gc28gdGhhdCBldmVuIHJvd3MgKGZyb20g
dGhlIGJvdHRvbSkgYXJlIGRyYXduIHdpdGggRHJhd0FycmF5cyBhbmQgb2RkCi0vLyByb3dzIGFy
ZSBkcmF3biB3aXRoIHBhdGggcmVuZGVyaW5nLiAgSXQgY2FuIGJlIHVzZWQgdG8gdGVzdCB2YXJp
b3VzIHRleHR1cmluZwotLy8gbW9kZXMsIGNvbXBhcmluZyBob3cgdGhlIGZpbGwgd291bGQgd29y
ayBpbiBub3JtYWwgR0wgcmVuZGVyaW5nIGFuZCBob3cgdG8KLS8vIHNldHVwIHNhbWUgc29ydCBv
ZiBmaWxsIHdpdGggcGF0aCByZW5kZXJpbmcuCi0vLyBUaGUgdGV4dHVyaW5nIHRlc3QgaXMgcGFy
YW1ldHJpemVkIHRvIHJ1biB0aGUgdGVzdCB3aXRoIGFuZCB3aXRob3V0Ci0vLyBBTkdMRSBuYW1l
IGhhc2hpbmcuCi1jbGFzcyBDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIENIUk9NSVVNUGF0aFJlbmRl
cmluZ1dpdGhUZXh0dXJpbmdUZXN0KCkgOiBtUHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoa1Jlc29sdXRpb24pOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoa1Jlc29s
dXRpb24pOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdH
cmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAg
ICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOwotICAgIH0KLQotICAgIGJvb2wgaXNBcHBsaWNh
YmxlKCkgY29uc3QgeyByZXR1cm4gSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX3Bh
dGhfcmVuZGVyaW5nIik7IH0KLQotICAgIHZvaWQgdGVzdFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGlmIChtUHJvZ3JhbSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gU2V0cyB1cCB0aGUgR0wgcHJvZ3JhbSBzdGF0ZSBm
b3IgdGhlIHRlc3QuCi0gICAgLy8gVmVydGV4IHNoYWRlciBuZWVkcyBhdCBsZWFzdCBmb2xsb3dp
bmcgdmFyaWFibGVzOgotICAgIC8vICB1bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7Ci0gICAgLy8g
IHVuaWZvcm0gbWF0PyBjb2xvcl9tYXRyaXg7IChhY2Nlc3NpYmxlIHdpdGgga0NvbG9yTWF0cml4
TG9jYXRpb24pCi0gICAgLy8gIHVuaWZvcm0gdmVjMiBtb2RlbF90cmFuc2xhdGU7Ci0gICAgLy8g
IGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOwotICAgIC8vICB2YXJ5aW5nIHZlYzQgY29sb3I7Ci0g
ICAgLy8KLSAgICAvLyBGcmFnbWVudCBzaGFkZXIgbmVlZHMgYXQgbGVhc3QgZm9sbG93aW5nIHZh
cmlhYmxlczoKLSAgICAvLyAgdmFyeWluZyB2ZWM0IGNvbG9yOwotICAgIC8vCi0gICAgLy8gICg/
IGNhbiBiZSBhbnl0aGluZykKLSAgICB2b2lkIENvbXBpbGVQcm9ncmFtKGNvbnN0IGNoYXIgKnZl
cnRleFNoYWRlclNvdXJjZSwgY29uc3QgY2hhciAqZnJhZ21lbnRTaGFkZXJTb3VyY2UpCi0gICAg
ewotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGtSZXNvbHV0aW9uLCBrUmVzb2x1dGlvbik7Ci0g
ICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xT
dGVuY2lsTWFzaygweGZmZmZmZmZmKTsKLSAgICAgICAgZ2xDbGVhclN0ZW5jaWwoMCk7Ci0gICAg
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7
Ci0gICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKLSAgICAgICAgZ2xCbGVuZEZ1bmMoR0xfU1JD
X0FMUEhBLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgICAgICBHTHVpbnQgdlNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfVkVS
VEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291cmNlKTsKLSAgICAgICAgR0x1aW50IGZTaGFkZXIg
PSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OwotICAgICAgICBBU1NFUlRfTkUoMHUsIHZTaGFkZXIpOwotICAgICAgICBBU1NFUlRfTkUoMHUs
IGZTaGFkZXIpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0KLSAg
ICAgICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIHZTaGFkZXIpOwotICAgICAgICBnbEF0dGFj
aFNoYWRlcihtUHJvZ3JhbSwgZlNoYWRlcik7Ci0gICAgICAgIGdsRGVsZXRlU2hhZGVyKHZTaGFk
ZXIpOwotICAgICAgICBnbERlbGV0ZVNoYWRlcihmU2hhZGVyKTsKLQotICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJpbmRQcm9ncmFtKCkKLSAgICB7Ci0g
ICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCBrUG9zaXRpb25Mb2NhdGlvbiwg
InBvc2l0aW9uIik7Ci0gICAgICAgIGdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKG1Qcm9n
cmFtLCBrVmlld01hdHJpeExvY2F0aW9uLCAidmlld19tYXRyaXgiKTsKLSAgICAgICAgZ2xCaW5k
VW5pZm9ybUxvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvck1hdHJpeExvY2F0aW9uLCAi
Y29sb3JfbWF0cml4Iik7Ci0gICAgICAgIGdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKG1Q
cm9ncmFtLCBrTW9kZWxUcmFuc2xhdGVMb2NhdGlvbiwgIm1vZGVsX3RyYW5zbGF0ZSIpOwotICAg
ICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9y
RnJhZ21lbnRJbnB1dExvY2F0aW9uLCAiY29sb3IiKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLSAgICB9Ci0KLSAgICBib29sIGxpbmtQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAg
IGdsTGlua1Byb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEdMaW50IGxpbmtlZCA9IDA7Ci0g
ICAgICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7
Ci0gICAgICAgIGlmIChsaW5rZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKGxpbmtlZCA9PSAxKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGRyYXdUZXN0UGF0dGVybigpCi0gICAgewotICAgICAgICAvLyBU
aGlzIHYtc2hhcGUgaXMgdXNlZCBib3RoIGZvciBEcmF3QXJyYXlzIGFuZCBwYXRoIHJlbmRlcmlu
Zy4KLSAgICAgICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga1ZlcnRpY2VzW10gPSB7NzUuMGYsIDc1
LjBmLCA1MC4wZiwgMjUuNWYsIDUwLjBmLCA1MC4wZiwgMjUuMGYsIDc1LjBmfTsKLQotICAgICAg
ICBHTHVpbnQgdmJvID0gMDsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZ2Ym8pOwotICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCB2Ym8pOwotICAgICAgICBnbEJ1ZmZlckRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2Yoa1ZlcnRpY2VzKSwga1ZlcnRpY2VzLCBHTF9TVEFU
SUNfRFJBVyk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uTG9j
YXRpb24pOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoa1Bvc2l0aW9uTG9jYXRpb24s
IDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0KLSAgICAgICAgLy8gU2V0dXAgc3RhdGUg
Zm9yIGRyYXdpbmcgdGhlIHNoYXBlIHdpdGggcGF0aCByZW5kZXJpbmcuCi0gICAgICAgIGdsUGF0
aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKLSAgICAgICAgZ2xTdGVu
Y2lsRnVuYyhHTF9MRVNTLCAwLCAweDdGKTsKLSAgICAgICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwg
R0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRI
X1BST0pFQ1RJT05fQ0hST01JVU0sIGtQcm9qZWN0aW9uTWF0cml4KTsKLSAgICAgICAgZ2xNYXRy
aXhMb2FkSWRlbnRpdHlDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSk7Ci0KLSAg
ICAgICAgc3RhdGljIGNvbnN0IEdMdWJ5dGUga0NvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJP
TUlVTSwgR0xfTElORV9UT19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTElORV9UT19DSFJPTUlVTSwgR0xfTElORV9UT19DSFJPTUlVTSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ0xPU0VfUEFU
SF9DSFJPTUlVTX07Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0Nvb3Jkc1tdID0g
ewotICAgICAgICAgICAga1ZlcnRpY2VzWzBdLCBrVmVydGljZXNbMV0sIGtWZXJ0aWNlc1syXSwg
a1ZlcnRpY2VzWzNdLAotICAgICAgICAgICAga1ZlcnRpY2VzWzZdLCBrVmVydGljZXNbN10sIGtW
ZXJ0aWNlc1s0XSwga1ZlcnRpY2VzWzVdLAotICAgICAgICB9OwotCi0gICAgICAgIEdMdWludCBw
YXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgICAgICBnbFBhdGhDb21tYW5kc0NIUk9N
SVVNKHBhdGgsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShrQ29tbWFuZHMpKSwga0Nv
bW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6
ZWk+KEFycmF5U2l6ZShrQ29vcmRzKSksIEdMX0ZMT0FULCBrQ29vcmRzKTsKLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgR0xmbG9hdCBwYXRoX21vZGVsX3RyYW5zbGF0
ZVsxNl0gPSB7Ci0gICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBm
LCAwLjBmLCAwLjBmLAotICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwg
MC4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBEcmF3cyB0aGUgc2hh
cGVzLiBFdmVyeSBldmVuIHJvdyBmcm9tIHRoZSBib3R0b20gaXMgZHJhd24gd2l0aAotICAgICAg
ICAvLyBEcmF3QXJyYXlzLCBvZGQgcm93IHdpdGggcGF0aCByZW5kZXJpbmcuIFRoZSBzaGFkZXIg
cHJvZ3JhbSBpcwotICAgICAgICAvLyB0aGUgc2FtZSBmb3IgdGhlIGJvdGggZHJhd3MuCi0gICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rlc3RSb3dzOyArK2opCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgaWYgKGogJSAyID09IDApCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2xVbmlmb3JtMmYoa01vZGVsVHJhbnNsYXRlTG9jYXRpb24sIHN0YXRpY19j
YXN0PEdMZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX1NUUklQLCAwLCA0KTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKLSAgICAgICAgICAg
ICAgICAgICAgcGF0aF9tb2RlbF90cmFuc2xhdGVbMTJdID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4o
aSAqIGtTaGFwZVdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgcGF0aF9tb2RlbF90cmFuc2xh
dGVbMTNdID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaiAqIGtTaGFwZUhlaWdodCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJP
TUlVTSwgcGF0aF9tb2RlbF90cmFuc2xhdGUpOwotICAgICAgICAgICAgICAgICAgICBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAw
eDdGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
ICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGtQb3NpdGlvbkxvY2F0aW9uKTsKLSAgICAg
ICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2Ym8pOwotICAgICAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0ocGF0aCwgMSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAg
IGVudW0KLSAgICB7Ci0gICAgICAgIGtTaGFwZVdpZHRoICA9IDc1LAotICAgICAgICBrU2hhcGVI
ZWlnaHQgPSA3NSwKLSAgICAgICAga1Rlc3RSb3dzICAgID0ga1Jlc29sdXRpb24gLyBrU2hhcGVI
ZWlnaHQsCi0gICAgICAgIGtUZXN0Q29sdW1ucyA9IGtSZXNvbHV0aW9uIC8ga1NoYXBlV2lkdGgs
Ci0gICAgfTsKLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLQotICAgIC8vIFRoaXMgdW5pZm9ybSBi
ZSBjYW4gc2V0IGJ5IHRoZSB0ZXN0LiBJdCBzaG91bGQgYmUgdXNlZCB0byBzZXQgdGhlIGNvbG9y
IGZvcgotICAgIC8vIGRyYXdpbmcgd2l0aCBEcmF3QXJyYXlzLgotICAgIHN0YXRpYyBjb25zdCBH
TGludCBrQ29sb3JNYXRyaXhMb2NhdGlvbiA9IDQ7Ci0KLSAgICAvLyBUaGlzIGZyYWdtZW50IGlu
cHV0IGNhbiBiZSBzZXQgYnkgdGhlIHRlc3QuIEl0IHNob3VsZCBiZSB1c2VkIHRvIHNldCB0aGUK
LSAgICAvLyBjb2xvciBmb3IgZHJhd2luZyB3aXRoIHBhdGggcmVuZGVyaW5nLgotICAgIHN0YXRp
YyBjb25zdCBHTGludCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24gPSA3OwotCi0gICAgc3Rh
dGljIGNvbnN0IEdMaW50IGtNb2RlbFRyYW5zbGF0ZUxvY2F0aW9uID0gMzsKLSAgICBzdGF0aWMg
Y29uc3QgR0xpbnQga1Bvc2l0aW9uTG9jYXRpb24gICAgICAgPSAwOwotICAgIHN0YXRpYyBjb25z
dCBHTGludCBrVmlld01hdHJpeExvY2F0aW9uICAgICA9IDc7Ci19OwotCi0vLyBUZXN0IHN1Y2Nl
c3MgYW5kIGVycm9yIGNhc2VzIGZvciBiaW5kaW5nIGZyYWdtZW50IGlucHV0IGxvY2F0aW9uLgot
VEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBUZXN0QmluZEZy
YWdtZW50SW5wdXRMb2NhdGlvbikKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBvcmlnaW5hbCBOVl9wYXRoX3JlbmRlcmluZyBzcGVjaWZpY2F0
aW9uIGRvZXNuJ3QgZGVmaW5lIHdoZXRoZXIgdGhlCi0gICAgLy8gZnJhZ21lbnQgc2hhZGVyIGlu
cHV0IHZhcmlhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgdmVydGV4IHNoYWRlciBvcgot
ICAgIC8vIG5vdC4gSW4gZmFjdCBpdCBkb2Vzbid0IGV2ZW4gcmVxdWlyZSBhIHZlcnRleCBzaGFk
ZXIuCi0gICAgLy8gSG93ZXZlciB0aGUgR0xFUzMuMSBzcGVjIGJhc2ljYWxseSBzYXlzIHRoYXQg
ZnJhZ21lbnQgaW5wdXRzIGFyZQotICAgIC8vIGVpdGhlciBidWlsdC1pbnMgb3IgY29tZSBmcm9t
IHRoZSBwcmV2aW91cyBzaGFkZXIgc3RhZ2UuCi0gICAgLy8gKMKnIDE0LjEsIEZyYWdtZW50IFNo
YWRlciBWYXJpYWJsZXMpLgotICAgIC8vIEFkZGl0aW9uYWxseSB0aGVyZSBhcmUgbWFueSBwbGFj
ZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gb2YgaGF2aW5nCi0gICAgLy8gYSB2
ZXJ0ZXggc2hhZGVyIChjb21tYW5kIGJ1ZmZlciwgYW5nbGUpIHNvIHdlJ3JlIGdvaW5nIHRvIHN0
aWNrIHRvIHRoZSBzYW1lCi0gICAgLy8gc2VtYW50aWNzIGFuZCByZXF1aXJlIGEgdmVydGV4IHNo
YWRlciBhbmQgdG8gaGF2ZSB0aGUgdmVydGV4IHNoYWRlciBkZWZpbmUgdGhlCi0gICAgLy8gdmFy
eWluZyBmcmFnbWVudCBzaGFkZXIgaW5wdXQuCi0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0g
ICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgInZhcnlpbmcgdmVj
NCBjb2xvcjtcbiIKLSAgICAgICAidm9pZCBtYWluKCkge31cbiI7Ci0KLSAgICBjb25zdCBjaGFy
KiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLSAgICBDb21waWxlUHJvZ3JhbShr
VmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAgZW51bSBr
QmluZExvY2F0aW9ucwotICAgIHsKLSAgICAgICAga0NvbG9yTG9jYXRpb24gICAgID0gNSwKLSAg
ICAgICAga0ZyYWdDb2xvckxvY2F0aW9uID0gNgotICAgIH07Ci0KLSAgICAvLyBzdWNjZXNzZnVs
IGJpbmQuCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0s
IGtDb2xvckxvY2F0aW9uLCAiY29sb3IiKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIGFueSBuYW1lIGNhbiBiZSBib3VuZCBhbmQgbmFtZXMgdGhhdCBkbyBub3QgYWN0dWFs
bHkgZXhpc3QgaW4gdGhlIHByb2dyYW0gYWZ0ZXIKLSAgICAvLyBsaW5raW5nIGFyZSBpZ25vcmVk
LgotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29s
b3JMb2NhdGlvbiwgImRvZXNudF9leGlzdCIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgLy8gaWxsZWdhbCBwcm9ncmFtCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU0obVByb2dyYW0gKyAxLCBrQ29sb3JMb2NhdGlvbiwgImNvbG9yIik7Ci0gICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIC8vIGlsbGVnYWwgYmlu
ZCAoYnVpbHQtaW4pCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVBy
b2dyYW0sIGtGcmFnQ29sb3JMb2NhdGlvbiwgImdsX0ZyYWdDb2xvciIpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0
TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0ZyYWdDb2xvckxvY2F0aW9uLCBudWxscHRyKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbEJpbmRGcmFn
bWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwgMHhmZmZmZmYsICJjb2xvciIpOwot
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIEFTU0VSVF9UUlVF
KGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtDb2VmZmljaWVu
dHMxNltdID0gezEuMGYsIDIuMGYsICAzLjBmLCAgNC4wZiwgIDUuMGYsICA2LjBmLCAgNy4wZiwg
IDguMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjBmLCAxMC4w
ZiwgMTEuMGYsIDEyLjBmLCAxMy4wZiwgMTQuMGYsIDE1LjBmLCAxNi4wZn07Ci0KLSAgICBnbFBy
b2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JMb2NhdGlv
biwgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTSwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFt
LCAtMSwgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTSwgNCwga0NvZWZmaWNpZW50czE2KTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCBmcmFnbWVudCBpbnB1dCBpbnRlcnBv
bGF0aW9uIGluIENIUk9NSVVNX0VZRSBjb29yZGluYXRlcy4KLVRFU1RfUChDSFJPTUlVTVBhdGhS
ZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVGVzdFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNX0VZRSkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhciAqa1ZlcnRleFNo
YWRlclNvdXJjZSA9Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMy
IG1vZGVsX3RyYW5zbGF0ZTtcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xu
IgotICAgICAgICAidmFyeWluZyB2ZWMzIGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAiICB2ZWM0IHAgPSB2ZWM0KG1vZGVsX3RyYW5zbGF0ZSArIHBvc2l0aW9u
LCAxLjAsIDEuMCk7XG4iCi0gICAgICAgICIgIGNvbG9yID0gKGNvbG9yX21hdHJpeCAqIHApLnJn
YjtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2aWV3X21hdHJpeCAqIHA7XG4iCi0gICAg
ICAgICJ9XG4iOwotCi0gICAgY29uc3QgY2hhciAqa0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWMz
IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KGNvbG9yLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICAvLyBjbGFu
Zy1mb3JtYXQgb24KLQotICAgIENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtG
cmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgYmluZFByb2dyYW0oKTsKLSAgICBBU1NFUlRfVFJV
RShsaW5rUHJvZ3JhbSgpID09IHRydWUpOwotCi0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtWaWV3
TWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVjdGlvbk1hdHJpeCk7Ci0KLSAgICBz
dGF0aWMgY29uc3QgR0xmbG9hdCBrQ29sb3JNYXRyaXhbMTZdID0gezEuMGYgLyBrUmVzb2x1dGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjBmIC8ga1Jlc29sdXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmfTsK
LQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrQ29sb3JNYXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFM
U0UsIGtDb2xvck1hdHJpeCk7Ci0KLSAgICAvLyBUaGlzIGlzIHRoZSBmdW5jdGlvbmFsaXR5IHdl
IGFyZSB0ZXN0aW5nOiBQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4KLSAgICAvLyBkb2VzIHRo
ZSBzYW1lIHdvcmsgYXMgdGhlIGNvbG9yIHRyYW5zZm9ybSBpbiB2ZXJ0ZXggc2hhZGVyLgotICAg
IHN0YXRpYyBjb25zdCBHTGZsb2F0IGtDb2xvckNvZWZmaWNpZW50c1sxMl0gPSB7MS4wZiAvIGtS
ZXNvbHV0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuMGYgLyBrUmVzb2x1dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZn07Ci0gICAgZ2xQcm9ncmFtUGF0aEZy
YWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJbnB1dExvY2F0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRVlFX0xJ
TkVBUl9DSFJPTUlVTSwgMywga0NvbG9yQ29lZmZpY2llbnRzKTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIGRyYXdUZXN0UGF0dGVybigpOwotCi0gICAgY29uc3QgR0xmbG9hdCBr
RmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAuMGYsIDUwLjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBm
fTsKLQotICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rlc3RSb3dzOyArK2opCi0gICAgewotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29sdW1uczsgKytpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IEFycmF5U2l6ZShrRmlsbENvb3Jkcyk7
IGsgKz0gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeCA9
IGtGaWxsQ29vcmRzW2tdOwotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxD
b29yZHNbayArIDFdOwotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQg
cHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAqIGtTaGFwZUhlaWdodCk7Ci0KLSAgICAgICAgICAg
ICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsKLSAgICAgICAgICAgICAgICBjb2xvci5SID0gc3Rh
dGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3VuZGYoKHB4ICsgZngpIC8ga1Jlc29sdXRpb24gKiAy
NTUuMGYpKTsKLSAgICAgICAgICAgICAgICBjb2xvci5HID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4o
c3RkOjpyb3VuZGYoKHB5ICsgZnkpIC8ga1Jlc29sdXRpb24gKiAyNTUuMGYpKTsKLSAgICAgICAg
ICAgICAgICBjb2xvci5CID0gMDsKLSAgICAgICAgICAgICAgICBjb2xvci5BID0gMjU1OwotICAg
ICAgICAgICAgICAgIENoZWNrUGl4ZWxzKHN0YXRpY19jYXN0PEdMaW50PihweCArIGZ4KSwgc3Rh
dGljX2Nhc3Q8R0xpbnQ+KHB5ICsgZnkpLCAxLCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbG9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8g
VGVzdCBmcmFnbWVudCBpbnB1dCBpbnRlcnBvbGF0aW9uIGluIENIUk9NSVVNX09CSkVDVCBjb29y
ZGluYXRlcy4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwg
VGVzdFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNX09CSkVDVCkKLXsKLSAgICBp
ZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCi0gICAgY29uc3QgY2hhciAqa1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ1
bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgY29sb3Jf
bWF0cml4O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTtcbiIKLSAg
ICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2ZWMz
IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBjb2xvciA9
IChjb2xvcl9tYXRyaXggKiB2ZWM0KHBvc2l0aW9uLCAxLjAsIDEuMCkpLnJnYjtcbiIKLSAgICAg
ICAgIiAgdmVjNCBwID0gdmVjNChtb2RlbF90cmFuc2xhdGUgKyBwb3NpdGlvbiwgMS4wLCAxLjAp
O1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKLSAgICAg
ICAgIn0iOwotCi0gICAgY29uc3QgY2hhciAqa0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWMzIGNv
bG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KGNvbG9yLnJnYiwgMS4wKTtcbiIKLSAgICAgICAgIn0iOwotICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgotCi0gICAgQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0Zy
YWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBiaW5kUHJvZ3JhbSgpOwotICAgIEFTU0VSVF9UUlVF
KGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdN
YXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtQcm9qZWN0aW9uTWF0cml4KTsKLQotICAgIHN0
YXRpYyBjb25zdCBHTGZsb2F0IGtDb2xvck1hdHJpeFsxNl0gPSB7MS4wZiAvIGtTaGFwZVdpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMGYgLyBrU2hhcGVIZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmfTsK
LSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa0NvbG9yTWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNF
LCBrQ29sb3JNYXRyaXgpOwotCi0gICAgLy8gVGhpcyBpcyB0aGUgZnVuY3Rpb25hbGl0eSB3ZSBh
cmUgdGVzdGluZzogUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuCi0gICAgLy8gZG9lcyB0aGUg
c2FtZSB3b3JrIGFzIHRoZSBjb2xvciB0cmFuc2Zvcm0gaW4gdmVydGV4IHNoYWRlci4KLSAgICBz
dGF0aWMgY29uc3QgR0xmbG9hdCBrQ29sb3JDb2VmZmljaWVudHNbOV0gPSB7Ci0gICAgICAgIDEu
MGYgLyBrU2hhcGVXaWR0aCwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiAvIGtTaGFwZUhlaWdodCwg
MC4wZiwgMC4wZiwgMC4wZiwgMC4wZn07Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJbnB1dExvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfT0JKRUNUX0xJTkVBUl9DSFJP
TUlVTSwgMywga0NvbG9yQ29lZmZpY2llbnRzKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZHJhd1Rlc3RQYXR0ZXJuKCk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtGaWxsQ29v
cmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYsIDI4LjBmLCA2Ni4wZiwgNjMuMGZ9OwotCi0g
ICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICB7Ci0gICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29vcmRzKTsgayArPSAy
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZ4ID0ga0ZpbGxD
b29yZHNba107Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBrRmlsbENvb3Jkc1tr
ICsgMV07Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0aWNfY2FzdDxmbG9h
dD4oaSAqIGtTaGFwZVdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9IHN0
YXRpY19jYXN0PGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KTsKLQotICAgICAgICAgICAgICAgIGFu
Z2xlOjpHTENvbG9yIGNvbG9yOwotICAgICAgICAgICAgICAgIGNvbG9yLlIgPSBzdGF0aWNfY2Fz
dDxHTHVieXRlPihzdGQ6OnJvdW5kZihmeCAvIGtTaGFwZVdpZHRoICogMjU1LjBmKSk7Ci0gICAg
ICAgICAgICAgICAgY29sb3IuRyA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KHN0ZDo6cm91bmRmKGZ5
IC8ga1NoYXBlSGVpZ2h0ICogMjU1LjBmKSk7Ci0gICAgICAgICAgICAgICAgY29sb3IuQiA9IDA7
Ci0gICAgICAgICAgICAgICAgY29sb3IuQSA9IDI1NTsKLSAgICAgICAgICAgICAgICBDaGVja1Bp
eGVscyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50PihweSAr
IGZ5KSwgMSwgMSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFRlc3Qgc3VjY2VzcyBhbmQgZXJy
b3IgY2FzZXMgZm9yIHNldHRpbmcgaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzLgotVEVTVF9QKENI
Uk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuQXJncykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhciAqa1ZlcnRl
eFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdmVjMl92YXI7XG4iCi0gICAg
ICAgICJ2YXJ5aW5nIHZlYzMgdmVjM192YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgdmVj
NF92YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IGZsb2F0X3ZhcjtcbiIKLSAgICAgICAg
InZhcnlpbmcgbWF0MiBtYXQyX3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgbWF0MyBtYXQzX3Zh
cjtcbiIKLSAgICAgICAgInZhcnlpbmcgbWF0NCBtYXQ0X3ZhcjtcbiIKLSAgICAgICAgImF0dHJp
YnV0ZSBmbG9hdCBhdm9pZF9vcHQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIHZlYzJfdmFyID0gdmVjMigxLjAsIDIuMCArIGF2b2lkX29wdCk7XG4iCi0gICAgICAg
ICIgIHZlYzNfdmFyID0gdmVjMygxLjAsIDIuMCwgMy4wICsgYXZvaWRfb3B0KTtcbiIKLSAgICAg
ICAgIiAgdmVjNF92YXIgPSB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCArIGF2b2lkX29wdCk7XG4i
Ci0gICAgICAgICIgIGZsb2F0X3ZhciA9IDUuMCArIGF2b2lkX29wdDtcbiIKLSAgICAgICAgIiAg
bWF0Ml92YXIgPSBtYXQyKDIuMCArIGF2b2lkX29wdCk7XG4iCi0gICAgICAgICIgIG1hdDNfdmFy
ID0gbWF0MygzLjAgKyBhdm9pZF9vcHQpO1xuIgotICAgICAgICAiICBtYXQ0X3ZhciA9IG1hdDQo
NC4wICsgYXZvaWRfb3B0KTtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7
XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlp
bmcgdmVjMiB2ZWMyX3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMyB2ZWMzX3ZhcjtcbiIK
LSAgICAgICAgInZhcnlpbmcgdmVjNCB2ZWM0X3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxv
YXQgZmxvYXRfdmFyO1xuIgotICAgICAgICAidmFyeWluZyBtYXQyIG1hdDJfdmFyO1xuIgotICAg
ICAgICAidmFyeWluZyBtYXQzIG1hdDNfdmFyO1xuIgotICAgICAgICAidmFyeWluZyBtYXQ0IG1h
dDRfdmFyO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KHZlYzJfdmFyLCAwLCAwKSArIHZlYzQodmVjM192YXIsIDApICsgdmVjNF92
YXIgKyAiCi0gICAgICAgICIgICAgICAgICAgICAgICB2ZWM0KGZsb2F0X3ZhcikgKyAiCi0gICAg
ICAgICIgICAgICAgICAgICAgICB2ZWM0KG1hdDJfdmFyWzBdWzBdLCBtYXQzX3ZhclsxXVsxXSwg
bWF0NF92YXJbMl1bMl0sIDEpO1xuIgotICAgICAgICAifSI7Ci0gICAgLy8gY2xhbmctZm9ybWF0
IG9uCi0KLSAgICBlbnVtCi0gICAgewotICAgICAgICBrVmVjMkxvY2F0aW9uID0gMCwKLSAgICAg
ICAga1ZlYzNMb2NhdGlvbiwKLSAgICAgICAga1ZlYzRMb2NhdGlvbiwKLSAgICAgICAga0Zsb2F0
TG9jYXRpb24sCi0gICAgICAgIGtNYXQyTG9jYXRpb24sCi0gICAgICAgIGtNYXQzTG9jYXRpb24s
Ci0gICAgICAgIGtNYXQ0TG9jYXRpb24sCi0gICAgfTsKLSAgICBzdHJ1Y3QKLSAgICB7Ci0gICAg
ICAgIEdMaW50IGxvY2F0aW9uOwotICAgICAgICBjb25zdCBjaGFyICpuYW1lOwotICAgICAgICBH
TGludCBjb21wb25lbnRzOwotICAgIH0gdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtrVmVjMkxv
Y2F0aW9uLCAidmVjMl92YXIiLCAyfSwKLSAgICAgICAge2tWZWMzTG9jYXRpb24sICJ2ZWMzX3Zh
ciIsIDN9LAotICAgICAgICB7a1ZlYzRMb2NhdGlvbiwgInZlYzRfdmFyIiwgNH0sCi0gICAgICAg
IHtrRmxvYXRMb2NhdGlvbiwgImZsb2F0X3ZhciIsIDF9LAotICAgICAgICAvLyBJZiBhIHZhcnlp
bmcgaXMgbm90IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgc2NhbGFyIG9yCi0gICAg
ICAgIC8vIHZlY3RvciwgaXQgYWx3YXlzIGNhdXNlcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLSAg
ICAgICAge2tNYXQyTG9jYXRpb24sICJtYXQyX3ZhciIsIC0xfSwKLSAgICAgICAge2tNYXQzTG9j
YXRpb24sICJtYXQzX3ZhciIsIC0xfSwKLSAgICAgICAge2tNYXQ0TG9jYXRpb24sICJtYXQ0X3Zh
ciIsIC0xfSwKLSAgICB9OwotCi0gICAgQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJj
ZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
QXJyYXlTaXplKHZhcmlhYmxlcyk7ICsraSkKLSAgICB7Ci0gICAgICAgIGdsQmluZEZyYWdtZW50
SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCB2YXJpYWJsZXNbaV0ubG9jYXRpb24sIHZh
cmlhYmxlc1tpXS5uYW1lKTsKLSAgICB9Ci0KLSAgICAvLyB0ZXN0IHRoYXQgdXNpbmcgaW52YWxp
ZCAobm90IGxpbmtlZCkgcHJvZ3JhbSBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLSAgICAvLyBT
ZWUgc2ltaWxhciBjYWxscyBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0IGZvciBkaXNjdXNzaW9uIGFi
b3V0IHRoZSBhcmd1bWVudHMuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJP
TUlVTShtUHJvZ3JhbSwgLTEsIEdMX05PTkUsIDAsIG51bGxwdHIpOwotICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3Jh
bSgpID09IHRydWUpOwotCi0gICAgY29uc3QgR0xmbG9hdCBrQ29lZmZpY2llbnRzMTZbXSA9IHsx
LjBmLCAyLjBmLCAgMy4wZiwgIDQuMGYsICA1LjBmLCAgNi4wZiwgIDcuMGYsICA4LjBmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4wZiwgMTAuMGYsIDExLjBmLCAx
Mi4wZiwgMTMuMGYsIDE0LjBmLCAxNS4wZiwgMTYuMGZ9OwotICAgIGNvbnN0IEdMZW51bSBrR2Vu
TW9kZXNbXSAgICAgICAgPSB7R0xfTk9ORSwgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTSwgR0xfT0JK
RUNUX0xJTkVBUl9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09OU1RBTlRfQ0hST01JVU19OwotCi0gICAgZm9yIChzaXplX3QgdmFyaWFibGUgPSAwOyB2YXJp
YWJsZSA8IEFycmF5U2l6ZSh2YXJpYWJsZXMpOyArK3ZhcmlhYmxlKQotICAgIHsKLSAgICAgICAg
Zm9yIChHTGludCBjb21wb25lbnRzID0gMDsgY29tcG9uZW50cyA8PSA0OyArK2NvbXBvbmVudHMp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGdlbm1vZGUgPSAwOyBnZW5tb2Rl
IDwgQXJyYXlTaXplKGtHZW5Nb2Rlcyk7ICsrZ2VubW9kZSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFt
LCB2YXJpYWJsZXNbdmFyaWFibGVdLmxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0dlbk1vZGVzW2dlbm1vZGVdLCBjb21wb25l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga0NvZWZmaWNpZW50czE2KTsKLQotICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRzID09
IDAgJiYga0dlbk1vZGVzW2dlbm1vZGVdID09IEdMX05PTkUpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVzW3ZhcmlhYmxlXS5jb21wb25lbnRzID09
IC0xKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBD
bGVhcmluZyBhIGZyYWdtZW50IGlucHV0IHRoYXQgaXMgbm90IHNpbmdsZS1wcmVjaXNpb24gZmxv
YXRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvaW50IHNjYWxhciBvciB2ZWN0b3Ig
aXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgYSB2YWxpZCBmcmFnbWVudCBpbnB1dCBpcyBvay4K
LSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGNvbXBvbmVudHMgPT0gMCB8fCBrR2VuTW9kZXNbZ2VubW9kZV0gPT0gR0xfTk9ORSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZB
TElEX1ZBTFVFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMgPT0gdmFy
aWFibGVzW3ZhcmlhYmxlXS5jb21wb25lbnRzKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIGEgZ2VuZXJhdG9yIGZvciBhIHNpbmdsZS1w
cmVjaXNpb24gZmxvYXRpbmcgcG9pbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjYWxh
ciBvciB2ZWN0b3IgZnJhZ21lbnQgaW5wdXQgaXMgb2suCi0gICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFNldHRpbmcgYSBnZW5lcmF0b3Igd2hlbiBjb21wb25lbnRzIGRvIG5vdCBtYXRj
aCBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBlbnVtCi0gICAgewotICAgICAgICBrVmFsaWRHZW5Nb2RlICAgICAgPSBHTF9DT05TVEFOVF9D
SFJPTUlVTSwKLSAgICAgICAga1ZhbGlkQ29tcG9uZW50cyAgID0gMywKLSAgICAgICAga0ludmFs
aWRHZW5Nb2RlICAgID0gMHhBQiwKLSAgICAgICAga0ludmFsaWRDb21wb25lbnRzID0gNSwKLSAg
ICB9OwotCi0gICAgLy8gVGhlIGxvY2F0aW9uID09IC0xIHdvdWxkIG1lYW4gZnJhZ21lbnQgaW5w
dXQgd2FzIG9wdGltaXplZCBhd2F5LiBBdCB0aGUKLSAgICAvLyB0aW1lIG9mIHdyaXRpbmcsIC0x
IGNhbiBub3QgaGFwcGVuIGJlY2F1c2UgdGhlIG9ubHkgd2F5IHRvIG9idGFpbiB0aGUKLSAgICAv
LyBsb2NhdGlvbiBudW1iZXJzIGlzIHRocm91Z2ggYmluZC4gVGVzdCBqdXN0IHRvIGJlIGNvbnNp
c3RlbnQuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3Jh
bSwgLTEsIGtWYWxpZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgLy8gVGVzdCB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBzcGVjIHNh
eXMgbG9jYXRpb24gPT0gLTEgY2F1c2VzIHRoZSBvcGVyYXRpb24gdG8KLSAgICAvLyBiZSBza2lw
cGVkLCB0aGUgdmVyaWZpY2F0aW9uIG9mIG90aGVyIHBhcmFtZXRlcnMgaXMgc3RpbGwgZG9uZS4g
VGhpcyBpcyBhCi0gICAgLy8gR0wgcG9saWN5LgotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrSW52YWxpZEdlbk1vZGUsIGtWYWxpZENvbXBv
bmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZp
Y2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAg
Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtJbnZh
bGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfRVJST1Io
R0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU0obVByb2dyYW0sIC0xLCBrVmFsaWRHZW5Nb2RlLCBrSW52YWxpZENvbXBvbmVudHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYp
OwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsRGVsZXRl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAvLyBUZXN0IHRoYXQgdXNpbmcgaW52YWxpZCAoZGVs
ZXRlZCkgcHJvZ3JhbSBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLSAgICBFWFBFQ1RfR0xfVFJV
RShnbElzUHJvZ3JhbShtUHJvZ3JhbSkpOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtWYWxpZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVu
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2ll
bnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAg
ICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga0lu
dmFsaWRHZW5Nb2RlLCBrVmFsaWRDb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfRVJST1Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtJbnZhbGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNp
ZW50czE2KTsKLSAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0g
ICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtW
YWxpZEdlbk1vZGUsIGtJbnZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIG1Qcm9ncmFtID0gMHU7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBoYXZpbmcgaW5wdXQgc3RhdGljYWxseSBhbGlhc2VkIGZyYWdtZW50IGlucHV0cyB0
aGUgbGlua2luZyBmYWlscwotLy8gYW5kIHRoZW4gc3VjY2VlZHMgd2hlbiB0aGUgY29uZmxpY3Qg
aXMgcmVzb2x2ZWQuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rl
c3QsIFRlc3RDb25mbGljdGluZ0JpbmQpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IGNoYXIq
IGtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247
XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBO1xuIgotICAgICAgICAidmFyeWluZyB2
ZWM0IGNvbG9yQjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xf
UG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgIiAgY29sb3JBID0gcG9zaXRpb24gKyB2
ZWM0KDEpO1xuIgotICAgICAgICAiICBjb2xvckIgPSBwb3NpdGlvbiArIHZlYzQoMik7XG4iCi0g
ICAgICAgICJ9IjsKLQotICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVj
NCBjb2xvckE7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JCO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSBjb2xvckEgKyBjb2xv
ckI7XG4iCi0gICAgICAgICJ9IjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNvbnN0
IEdMaW50IGtDb2xvckFMb2NhdGlvbiA9IDM7Ci0gICAgY29uc3QgR0xpbnQga0NvbG9yQkxvY2F0
aW9uID0gNDsKLQotICAgIENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFn
bWVudFNoYWRlclNvdXJjZSk7Ci0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJP
TUlVTShtUHJvZ3JhbSwga0NvbG9yQUxvY2F0aW9uLCAiY29sb3JBIik7Ci0gICAgLy8gQmluZCBj
b2xvckIgdG8gbG9jYXRpb24gYSwgY2F1c2luZyBjb25mbGljdHMuIExpbmtpbmcgc2hvdWxkIGZh
aWwuCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtD
b2xvckFMb2NhdGlvbiwgImNvbG9yQiIpOwotCi0gICAgLy8gU2hvdWxkIGZhaWwgbm93LgotICAg
IEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gZmFsc2UpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgLy8gUmVzb2x2ZSB0aGUgYmluZCBjb25mbGljdC4KLSAgICBnbEJpbmRG
cmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQkxvY2F0aW9uLCAi
Y29sb3JCIik7Ci0KLSAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IGJpbmRpbmcgd2l0aCBhcnJheSB2
YXJpYWJsZXMsIHVzaW5nIHplcm8gaW5kaWNlcy4gVGVzdHMgdGhhdAotLy8gYmluZGluZyBjb2xv
ckFbMF0gd2l0aCBleHBsaWNpdCAiY29sb3JBWzBdIiBhcyB3ZWxsIGFzICJjb2xvckEiIHByb2R1
Y2VzCi0vLyBhIGNvcnJlY3QgbG9jYXRpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIFBhdGhQcm9n
cmFtRnJhZ21lbnRJbnB1dEdlbi4KLS8vIEZvciBwYXRoIHJlbmRlcmluZywgY29sb3JBWzBdIGlz
IGJvdW5kIHRvIGEgbG9jYXRpb24uIFRoZSBpbnB1dCBnZW5lcmF0b3IgZm9yCi0vLyB0aGUgbG9j
YXRpb24gaXMgc2V0IHRvIHByb2R1Y2UgdmVjNCgwLCAwLjEsIDAsIDAuMSkuCi0vLyBUaGUgZGVm
YXVsdCB2YXJ5aW5nLCBjb2xvciwgaXMgYm91bmQgdG8gYSBsb2NhdGlvbiBhbmQgaXRzIGdlbmVy
YXRvcgotLy8gd2lsbCBwcm9kdWNlIHZlYzQoMTAuMCkuICBUaGUgc2hhZGVyIHByb2dyYW0gcHJv
ZHVjZXMgZ3JlZW4gcGl4ZWxzLgotLy8gRm9yIHZlcnRleC1iYXNlZCByZW5kZXJpbmcsIHRoZSB2
ZXJ0ZXggc2hhZGVyIHByb2R1Y2VzIHRoZSBzYW1lIGVmZmVjdCBhcwotLy8gdGhlIGlucHV0IGdl
bmVyYXRvciBmb3IgcGF0aCByZW5kZXJpbmcuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
V2l0aFRleHR1cmluZ1Rlc3QsIEJpbmRGcmFnbWVudElucHV0QXJyYXkpCi17Ci0gICAgaWYgKCFp
c0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy9jbGFuZy1mb3JtYXQgb2Zm
Ci0gICAgY29uc3QgY2hhciAqa1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ1bmlmb3Jt
IG1hdDQgdmlld19tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4
O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTtcbiIKLSAgICAgICAg
ImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9y
O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQVs0XTtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgdmVjNCBwID0gdmVjNChtb2RlbF90cmFuc2xhdGUgKyBw
b3NpdGlvbiwgMSwgMSk7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXgg
KiBwO1xuIgotICAgICAgICAiICBjb2xvckFbMF0gPSB2ZWM0KDAuMCwgMC4xLCAwLCAwLjEpO1xu
IgotICAgICAgICAiICBjb2xvckFbMV0gPSB2ZWM0KDAuMik7XG4iCi0gICAgICAgICIgIGNvbG9y
QVsyXSA9IHZlYzQoMC4zKTtcbiIKLSAgICAgICAgIiAgY29sb3JBWzNdID0gdmVjNCgwLjQpO1xu
IgotICAgICAgICAiICBjb2xvciA9IHZlYzQoMTAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAg
IGNvbnN0IGNoYXIgKmtGcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAg
ICAgInZhcnlpbmcgdmVjNCBjb2xvckFbNF07XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
Ci0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IGNvbG9yQVswXSAqIGNvbG9yO1xuIgotICAgICAg
ICAifSI7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBjb25zdCBHTGludCBrQ29sb3JB
MExvY2F0aW9uID0gNDsKLSAgICBjb25zdCBHTGludCBrVW51c2VkTG9jYXRpb24gID0gNTsKLSAg
ICBjb25zdCBHTGZsb2F0IGtDb2xvckEwW10gICAgID0gezAuMGYsIDAuMWYsIDAuMGYsIDAuMWZ9
OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yW10gICAgICAgPSB7MTAuMGYsIDEwLjBmLCAxMC4w
ZiwgMTAuMGZ9OwotICAgIGNvbnN0IEdMZmxvYXQga0ZpbGxDb29yZHNbNl0gPSB7NTkuMGYsIDUw
LjBmLCA1MC4wZiwgMjguMGYsIDY2LjBmLCA2My4wZn07Ci0KLSAgICBmb3IgKGludCBwYXNzID0g
MDsgcGFzcyA8IDI7ICsrcGFzcykKLSAgICB7Ci0gICAgICAgIENvbXBpbGVQcm9ncmFtKGtWZXJ0
ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIGlmIChwYXNz
ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bkNIUk9NSVVNKG1Qcm9ncmFtLCBrVW51c2VkTG9jYXRpb24sICJjb2xvckFbMF0iKTsKLSAgICAg
ICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29s
b3JBMExvY2F0aW9uLCAiY29sb3JBIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJv
Z3JhbSwga1VudXNlZExvY2F0aW9uLCAiY29sb3JBIik7Ci0gICAgICAgICAgICBnbEJpbmRGcmFn
bWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgImNv
bG9yQVswXSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYmluZFByb2dyYW0oKTsKLQotICAgICAg
ICBBU1NFUlRfVFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOwotCi0gICAgICAgIGdsVW5pZm9y
bU1hdHJpeDRmdihrVmlld01hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25N
YXRyaXgpOwotICAgICAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Q
cm9ncmFtLCBrQ29sb3JBMExvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29sb3JBMCk7Ci0gICAg
ICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckZyYWdtZW50SW5wdXRMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yKTsKLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZHJhd1Rlc3RQYXR0ZXJuKCk7Ci0KLSAg
ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICAgICAgewotICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdENvbHVtbnM7ICsraSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IEFycmF5U2l6ZShr
RmlsbENvb3Jkcyk7IGsgKz0gMikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IGZ4ID0ga0ZpbGxDb29yZHNba107Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOwotICAgICAgICAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBweCA9IHN0YXRpY19jYXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9IHN0YXRpY19jYXN0PGZsb2F0Pihq
ICoga1NoYXBlSGVpZ2h0KTsKLQotICAgICAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBj
b2xvcjsKLSAgICAgICAgICAgICAgICAgICAgY29sb3IuUiA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbG9yLkcgPSAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOwotICAg
ICAgICAgICAgICAgICAgICBjb2xvci5BID0gMjU1OwotICAgICAgICAgICAgICAgICAgICBDaGVj
a1BpeGVscyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50Pihw
eSArIGZ5KSwgMSwgMSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Ip
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0K
LQotLy8gVGVzdCBiaW5kaW5nIGFycmF5IHZhcmlhYmxlcy4gVGhpcyBpcyBsaWtlIEJpbmRGcmFn
bWVudElucHV0QXJyYXkuCi0vLyBDdXJyZW50bHkgZGlzYWJsZWQgc2luY2UgaXQgc2VlbXMgdGhl
cmUncyBhIGRyaXZlciBidWcgd2l0aCB0aGUKLS8vIG9sZGVyIGRyaXZlcnMuIFRoaXMgc2hvdWxk
IHdvcmsgd2l0aCBkcml2ZXIgPj0gMzY0LjEyCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
V2l0aFRleHR1cmluZ1Rlc3QsIERJU0FCTEVEX0JpbmRGcmFnbWVudElucHV0QXJyYXlOb25aZXJv
SW5kZXgpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IGNoYXIqIGtWZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPQotICAgICAgICAidW5pZm9ybSBtYXQ0IHZpZXdfbWF0cml4O1xuIgotICAgICAgICAidW5p
Zm9ybSBtYXQ0IGNvbG9yX21hdHJpeDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjMiBtb2RlbF90
cmFuc2xhdGU7XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKLSAgICAg
ICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckFb
NF07XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIHZlYzQgcCA9IHZl
YzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEsIDEpO1xuIgotICAgICAgICAiICBnbF9Q
b3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKLSAgICAgICAgIiAgY29sb3JBWzBdID0gdmVj
NCgwLCAwLjEsIDAsIDAuMSk7XG4iCi0gICAgICAgICIgIGNvbG9yQVsxXSA9IHZlYzQoMCwgMSwg
MCwgMSk7XG4iCi0gICAgICAgICIgIGNvbG9yQVsyXSA9IHZlYzQoMCwgMC44LCAwLCAwLjgpO1xu
IgotICAgICAgICAiICBjb2xvckFbM10gPSB2ZWM0KDAsIDAuNSwgMCwgMC41KTtcbiIKLSAgICAg
ICAgIiAgY29sb3IgPSB2ZWM0KDAuMik7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qg
Y2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQVs0XTtcbiIKLSAgICAgICAg
InZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgZ2xfRnJhZ0NvbG9yID0gKGNvbG9yQVswXSAqIGNvbG9yQVsxXSkgK1xuIgotICAgICAg
ICAiICAgICAgY29sb3JBWzJdICsgKGNvbG9yQVszXSAqIGNvbG9yKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBjb25zdCBHTGludCBrQ29sb3JBMExv
Y2F0aW9uID0gNDsKLSAgICBjb25zdCBHTGludCBrQ29sb3JBMUxvY2F0aW9uID0gMTsKLSAgICBj
b25zdCBHTGludCBrQ29sb3JBMkxvY2F0aW9uID0gMjsKLSAgICBjb25zdCBHTGludCBrQ29sb3JB
M0xvY2F0aW9uID0gMzsKLSAgICBjb25zdCBHTGludCBrVW51c2VkTG9jYXRpb24gID0gNTsKLSAg
ICBjb25zdCBHTGZsb2F0IGtDb2xvckEwW10gICAgID0gezAuMGYsIDAuMWYsIDAuMGYsIDAuMWZ9
OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yQTFbXSAgICAgPSB7MC4wZiwgMS4wZiwgMC4wZiwg
MS4wZn07Ci0gICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBMltdICAgICA9IHswLjBmLCAwLjhmLCAw
LjBmLCAwLjhmfTsKLSAgICBjb25zdCBHTGZsb2F0IGtDb2xvckEzW10gICAgID0gezAuMGYsIDAu
NWYsIDAuMGYsIDAuNWZ9OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yW10gICAgICAgPSB7MC4y
ZiwgMC4yZiwgMC4yZiwgMC4yZn07Ci0gICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9
IHs1OS4wZiwgNTAuMGYsIDUwLjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBmfTsKLQotICAgIENvbXBp
bGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0K
LSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga1VudXNl
ZExvY2F0aW9uLCAiY29sb3JBWzBdIik7Ci0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU0obVByb2dyYW0sIGtDb2xvckExTG9jYXRpb24sICJjb2xvckFbMV0iKTsKLSAgICBn
bEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTJMb2Nh
dGlvbiwgImNvbG9yQVsyXSIpOwotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9N
SVVNKG1Qcm9ncmFtLCBrQ29sb3JBM0xvY2F0aW9uLCAiY29sb3JBWzNdIik7Ci0gICAgZ2xCaW5k
RnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24s
ICJjb2xvckEiKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGJpbmRQcm9ncmFt
KCk7Ci0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKLQotICAgIGdsVW5p
Zm9ybU1hdHJpeDRmdihrVmlld01hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rp
b25NYXRyaXgpOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSht
UHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29sb3JBMCk7Ci0gICAgZ2xQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTFMb2Nh
dGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrQ29sb3JBMSk7Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTJMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hS
T01JVU0sIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29s
b3JBMik7Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3Jh
bSwga0NvbG9yQTNMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29sb3JBMyk7Ci0gICAgZ2xQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJbnB1
dExvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBkcmF3VGVzdFBhdHRlcm4oKTsKLQotICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rl
c3RSb3dzOyArK2opCi0gICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29s
dW1uczsgKytpKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IEFycmF5U2l6ZShrRmlsbENvb3Jkcyk7IGsgKz0gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBmbG9hdCBmeCA9IGtGaWxsQ29vcmRzW2tdOwotICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOwotICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgcHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAqIGtTaGFw
ZUhlaWdodCk7Ci0KLSAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsKLSAgICAg
ICAgICAgICAgICBjb2xvci5SID0gMDsKLSAgICAgICAgICAgICAgICBjb2xvci5HID0gMjU1Owot
ICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOwotICAgICAgICAgICAgICAgIGNvbG9yLkEgPSAy
NTU7Ci0gICAgICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4ICsg
ZngpLCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29sb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
fQotCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFVudXNl
ZEZyYWdtZW50SW5wdXRVcGRhdGUpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IGNoYXIqIGtW
ZXJ0ZXhTaGFkZXJTdHJpbmcgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBjaGFyKiBrRnJhZ21lbnRT
aGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIHZlYzQgdV9jb2xvckE7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHVf
Y29sb3JVO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHVfY29sb3JDO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yQSArIHVf
Y29sb3JDO1xuIgotICAgICAgICAifSI7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBj
b25zdCBHTGludCBrQ29sb3JVTG9jYXRpb24gICAgICA9IDE7Ci0gICAgY29uc3QgR0xpbnQga05v
bmV4aXN0aW5nTG9jYXRpb24gPSA1OwotICAgIGNvbnN0IEdMaW50IGtVbmJvdW5kTG9jYXRpb24g
ICAgID0gNjsKLQotICAgIENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTdHJpbmcsIGtGcmFn
bWVudFNoYWRlclN0cmluZyk7Ci0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJP
TUlVTShtUHJvZ3JhbSwga0NvbG9yVUxvY2F0aW9uLCAidV9jb2xvclUiKTsKLQotICAgIC8vIFRo
ZSBub24tZXhpc3RpbmcgaW5wdXQgc2hvdWxkIGJlaGF2ZSBsaWtlIGV4aXN0aW5nIGJ1dCBvcHRp
bWl6ZWQgYXdheSBpbnB1dC4KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TShtUHJvZ3JhbSwga05vbmV4aXN0aW5nTG9jYXRpb24sICJub25leGlzdGluZyIpOwotCi0gICAg
Ly8gTGV0IEEgYW5kIEMgYmUgYXNzaWduZWQgYXV0b21hdGljIGxvY2F0aW9ucy4KLSAgICBBU1NF
UlRfVFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOwotCi0gICAgY29uc3QgR0xmbG9hdCBrQ29s
b3JbMTZdID0ge307Ci0KLSAgICAvLyBObyBlcnJvcnMgb24gYm91bmQgbG9jYXRpb25zLCBzaW5j
ZSBjYWxsZXIgZG9lcyBub3Qga25vdwotICAgIC8vIGlmIHRoZSBkcml2ZXIgb3B0aW1pemVzIHRo
ZW0gYXdheSBvciBub3QuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlV
TShtUHJvZ3JhbSwga0NvbG9yVUxvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2xvcik7Ci0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBObyBlcnJvcnMgb24gYm91bmQgbG9jYXRpb25z
IG9mIG5hbWVzIHRoYXQgZG8gbm90IGV4aXN0Ci0gICAgLy8gaW4gdGhlIHNoYWRlci4gT3RoZXJ3
aXNlIGl0IHdvdWxkIGJlIGluY29uc2lzdGVudCB3cnQgdGhlCi0gICAgLy8gb3B0aW1pemF0aW9u
IGNhc2UuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3Jh
bSwga05vbmV4aXN0aW5nTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvbG9yKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRoZSBhYm92ZSBhcmUgZXF1YWwgdG8gdXBkYXRpbmcg
LTEuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwg
LTEsIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLCBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgLy8gTm8gZXJyb3JzIHdoZW4gdXBkYXRpbmcgd2l0aCBvdGhlciB0eXBl
IGVpdGhlci4KLSAgICAvLyBUaGUgdHlwZSBjYW4gbm90IGJlIGtub3duIHdpdGggdGhlIG5vbi1l
eGlzdGluZyBjYXNlLgotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0o
bVByb2dyYW0sIGtDb2xvclVMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29sb3IpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJP
TUlVTShtUHJvZ3JhbSwga05vbmV4aXN0aW5nTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVN
LCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvbG9yKTsK
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0Nv
bG9yKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFVwZGF0aW5nIGFuIHVu
Ym91bmQsIG5vbi1leGlzdGluZyBsb2NhdGlvbiBzdGlsbCBjYXVzZXMgYW4gZXJyb3IuCi0gICAg
Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga1VuYm91bmRM
b2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1BTkdMRV9JTlNUQU5USUFU
RV9URVNUX0VTMl9BTkRfRVMzKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QpOwotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTMyhDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCk7
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMl9BTkRfRVMzKENIUk9NSVVNUGF0aFJlbmRlcmlu
Z1dpdGhUZXh0dXJpbmdUZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwCmluZGV4
IDFmODdjZWUzOGMzNTU5ODI5MzAzMjJhM2QzMjQ1ZjQyMzFjMmEwZjguLjZjYzFlZmRlNzJkZDI2
MDE3MDc3MDdhZDA5NDJiMjM0MzNjMTg4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb2dyYW1CaW5hcnlUZXN0
LmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgUHJvZ3JhbUJpbmFyeUVTM1Rlc3Q6OnRlc3RC
aW5hcnlBbmRVQk9CbG9ja0luZGV4ZXMoYm9vbCBkcmF3V2l0aFByb2dyYW1GaXJzCiAgICAgLy8g
V2UgY2FuJ3QgcnVuIHRoZSB0ZXN0IGlmIG5vIHByb2dyYW0gYmluYXJ5IGZvcm1hdHMgYXJlIHN1
cHBvcnRlZC4KICAgICBHTGludCBiaW5hcnlGb3JtYXRDb3VudCA9IDA7CiAgICAgZ2xHZXRJbnRl
Z2VydihHTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUywgJmJpbmFyeUZvcm1hdENvdW50KTsK
LSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIWJpbmFyeUZvcm1hdENvdW50KTsKKyAgICBBTkdMRV9T
S0lQX1RFU1RfSUYoYmluYXJ5Rm9ybWF0Q291bnQgPT0gMCk7CiAKICAgICBjb25zdGV4cHIgY2hh
ciBrVlNbXSA9CiAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKQEAgLTM4MSwxMyArMzgxLDE0
NyBAQCBURVNUX1AoUHJvZ3JhbUJpbmFyeUVTM1Rlc3QsIFVuaWZvcm1CbG9ja0JpbmRpbmdOb0Ry
YXcpCiAgICAgdGVzdEJpbmFyeUFuZFVCT0Jsb2NrSW5kZXhlcyhmYWxzZSk7CiB9CiAKKy8vIFRl
c3QgdGhlIHNoYWRlcnMgd2l0aCBhcnJheXMtb2Ytc3RydWN0IHVuaWZvcm1zIGFyZSBwcm9wZXJs
eSBzYXZlZCBhbmQgcmVzdG9yZWQKK1RFU1RfUChQcm9ncmFtQmluYXJ5RVMzVGVzdCwgVGVzdEFy
cmF5T2ZTdHJ1Y3RVbmlmb3JtKQoreworICAgIC8vIFdlIGNhbid0IHJ1biB0aGUgdGVzdCBpZiBu
byBwcm9ncmFtIGJpbmFyeSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCisgICAgR0xpbnQgYmluYXJ5
Rm9ybWF0Q291bnQgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTlVNX1BST0dSQU1fQklOQVJZ
X0ZPUk1BVFMsICZiaW5hcnlGb3JtYXRDb3VudCk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGJp
bmFyeUZvcm1hdENvdW50ID09IDApOworCisgICAgY29uc3RleHByIGNoYXIga1ZTW10gPQorICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiBoaWdocCB2ZWM0IHBvc2l0aW9u
O1xuIgorICAgICAgICAib3V0IG1lZGl1bXAgZmxvYXQgdl92dHhPdXQ7XG4iCisgICAgICAgICJc
biIKKyAgICAgICAgInN0cnVjdCBzdHJ1Y3RUeXBlXG4iCisgICAgICAgICJ7XG4iCisgICAgICAg
ICIgICAgbWVkaXVtcCB2ZWM0IG0wO1xuIgorICAgICAgICAiICAgIG1lZGl1bXAgdmVjNCBtMTtc
biIKKyAgICAgICAgIn07XG4iCisgICAgICAgICJ1bmlmb3JtIHN0cnVjdFR5cGUgdV92YXJbM107
XG4iCisgICAgICAgICJcbiIKKyAgICAgICAgIm1lZGl1bXAgZmxvYXQgY29tcGFyZV9mbG9hdCht
ZWRpdW1wIGZsb2F0IGEsIG1lZGl1bXAgZmxvYXQgYilcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICByZXR1cm4gYWJzKGEgLSBiKSA8IDAuMDUgPyAxLjAgOiAwLjA7XG4iCisgICAgICAg
ICJ9XG4iCisgICAgICAgICJtZWRpdW1wIGZsb2F0IGNvbXBhcmVfdmVjNChtZWRpdW1wIHZlYzQg
YSwgbWVkaXVtcCB2ZWM0IGIpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgcmV0dXJu
IGNvbXBhcmVfZmxvYXQoYS54LCBiLngpKmNvbXBhcmVfZmxvYXQoYS55LCBiLnkpKlxuIgorICAg
ICAgICAiICAgICAgICAgICBjb21wYXJlX2Zsb2F0KGEueiwgYi56KSpjb21wYXJlX2Zsb2F0KGEu
dywgYi53KTtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgIlxuIgorICAgICAgICAidm9pZCBt
YWluICh2b2lkKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0g
cG9zaXRpb247XG4iCisgICAgICAgICIgICAgdl92dHhPdXQgPSAxLjA7XG4iCisgICAgICAgICIg
ICAgdl92dHhPdXQgKj0gY29tcGFyZV92ZWM0KHVfdmFyWzBdLm0wLCB2ZWM0KDAuMTUsIDAuNTIs
IDAuMjYsIDAuMzUpKTtcbiIKKyAgICAgICAgIiAgICB2X3Z0eE91dCAqPSBjb21wYXJlX3ZlYzQo
dV92YXJbMF0ubTEsIHZlYzQoMC44OCwgMC4wOSwgMC4zMCwgMC42MSkpO1xuIgorICAgICAgICAi
ICAgIHZfdnR4T3V0ICo9IGNvbXBhcmVfdmVjNCh1X3ZhclsxXS5tMCwgdmVjNCgwLjg1LCAwLjU5
LCAwLjMzLCAwLjcxKSk7XG4iCisgICAgICAgICIgICAgdl92dHhPdXQgKj0gY29tcGFyZV92ZWM0
KHVfdmFyWzFdLm0xLCB2ZWM0KDAuNjIsIDAuODksIDAuMDksIDAuOTkpKTtcbiIKKyAgICAgICAg
IiAgICB2X3Z0eE91dCAqPSBjb21wYXJlX3ZlYzQodV92YXJbMl0ubTAsIHZlYzQoMC41MywgMC44
OSwgMC4wMSwgMC4wOCkpO1xuIgorICAgICAgICAiICAgIHZfdnR4T3V0ICo9IGNvbXBhcmVfdmVj
NCh1X3ZhclsyXS5tMSwgdmVjNCgwLjI2LCAwLjcyLCAwLjYwLCAwLjEyKSk7XG4iCisgICAgICAg
ICJ9IjsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtGU1tdID0KKyAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgorICAgICAgICAiaW4gbWVkaXVtcCBmbG9hdCB2X3Z0eE91dDtcbiIKKyAgICAgICAg
IlxuIgorICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQ
X0ZyYWdDb2xvcjtcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAidm9pZCBtYWluICh2b2lkKVxu
IgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIG1lZGl1bXAgZmxvYXQgcmVzdWx0ID0gdl92
dHhPdXQ7XG4iCisgICAgICAgICIgICAgZEVRUF9GcmFnQ29sb3IgPSB2ZWM0KHJlc3VsdCwgcmVz
dWx0LCByZXN1bHQsIDEuMCk7XG4iCisgICAgICAgICJ9IjsKKworICAgIC8vIEluaXQgYW5kIGRy
YXcgd2l0aCB0aGUgcHJvZ3JhbS4KKyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGtWUywg
a0ZTKTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLmdldCgpKTsKKworICAgIGludCBsb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0KCksICJ1X3ZhclswXS5tMCIp
OworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9u
LCAwLjE1LCAwLjUyLCAwLjI2LCAwLjM1KTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0uZ2V0KCksICJ1X3ZhclswXS5tMSIpOworICAgIEFTU0VSVF9ORShsb2Nh
dGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjg4LCAwLjA5LCAwLjMwLCAw
LjYxKTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0KCks
ICJ1X3ZhclsxXS5tMCIpOworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGdsVW5p
Zm9ybTRmKGxvY2F0aW9uLCAwLjg1LCAwLjU5LCAwLjMzLCAwLjcxKTsKKyAgICBsb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0KCksICJ1X3ZhclsxXS5tMSIpOworICAg
IEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjYy
LCAwLjg5LCAwLjA5LCAwLjk5KTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW0uZ2V0KCksICJ1X3ZhclsyXS5tMCIpOworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwg
LTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjUzLCAwLjg5LCAwLjAxLCAwLjA4KTsK
KyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2V0KCksICJ1X3Zh
clsyXS5tMSIpOworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRm
KGxvY2F0aW9uLCAwLjI2LCAwLjcyLCAwLjYwLCAwLjEyKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIC8vIENsZWFyIGFuZCBkcmF3IHdpdGggdGhlIG9yaWdpbmFsIHByb2dyYW06
CisgICAgZ2xDbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6cmVkKTsKKyAgICBkcmF3UXVhZChwcm9ncmFtLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgR0xDb2xvcjo6d2hpdGUpOworCisgICAgLy8gUmVhZCBiYWNrIHRoZSBiaW5hcnkuCisgICAg
R0xpbnQgcHJvZ3JhbUxlbmd0aCA9IDA7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbS5nZXQo
KSwgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUywgJnByb2dyYW1MZW5ndGgpOworICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xzaXplaSByZWFkTGVuZ3RoICA9IDA7CisgICAg
R0xlbnVtIGJpbmFyeUZvcm1hdCA9IEdMX05PTkU7CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4g
YmluYXJ5KHByb2dyYW1MZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbUJpbmFyeShwcm9ncmFtLmdl
dCgpLCBwcm9ncmFtTGVuZ3RoLCAmcmVhZExlbmd0aCwgJmJpbmFyeUZvcm1hdCwgYmluYXJ5LmRh
dGEoKSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8R0xzaXplaT4ocHJvZ3JhbUxlbmd0aCksIHJlYWRMZW5ndGgpOworCisgICAgLy8gTG9h
ZCBhIG5ldyBwcm9ncmFtIHdpdGggdGhlIGJpbmFyeSBhbmQgZHJhdy4KKyAgICBBTkdMRV9HTF9C
SU5BUllfRVMzX1BST0dSQU0oYmluYXJ5UHJvZ3JhbSwgYmluYXJ5LCBiaW5hcnlGb3JtYXQpOwor
CisgICAgZ2xVc2VQcm9ncmFtKGJpbmFyeVByb2dyYW0uZ2V0KCkpOworCisgICAgbG9jYXRpb24g
PSBnbEdldFVuaWZvcm1Mb2NhdGlvbihiaW5hcnlQcm9ncmFtLmdldCgpLCAidV92YXJbMF0ubTAi
KTsKKyAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlv
biwgMC4xNSwgMC41MiwgMC4yNiwgMC4zNSk7CisgICAgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihiaW5hcnlQcm9ncmFtLmdldCgpLCAidV92YXJbMF0ubTEiKTsKKyAgICBBU1NFUlRf
TkUobG9jYXRpb24sIC0xKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgMC44OCwgMC4wOSwg
MC4zMCwgMC42MSk7CisgICAgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihiaW5hcnlQ
cm9ncmFtLmdldCgpLCAidV92YXJbMV0ubTAiKTsKKyAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0x
KTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgMC44NSwgMC41OSwgMC4zMywgMC43MSk7Cisg
ICAgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihiaW5hcnlQcm9ncmFtLmdldCgpLCAi
dV92YXJbMV0ubTEiKTsKKyAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsKKyAgICBnbFVuaWZv
cm00Zihsb2NhdGlvbiwgMC42MiwgMC44OSwgMC4wOSwgMC45OSk7CisgICAgbG9jYXRpb24gPSBn
bEdldFVuaWZvcm1Mb2NhdGlvbihiaW5hcnlQcm9ncmFtLmdldCgpLCAidV92YXJbMl0ubTAiKTsK
KyAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwg
MC41MywgMC44OSwgMC4wMSwgMC4wOCk7CisgICAgbG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihiaW5hcnlQcm9ncmFtLmdldCgpLCAidV92YXJbMl0ubTEiKTsKKyAgICBBU1NFUlRfTkUo
bG9jYXRpb24sIC0xKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgMC4yNiwgMC43MiwgMC42
MCwgMC4xMik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBDbGVhciBhbmQg
ZHJhdyB3aXRoIHRoZSByZXN0b3JlZCBwcm9ncmFtOgorICAgIGdsQ2xlYXJDb2xvcigxLjAsIDAu
MCwgMC4wLCAxLjApOworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7CisgICAgZHJhd1F1YWQoYmlu
YXJ5UHJvZ3JhbS5nZXQoKSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OndoaXRlKTsK
K30KKwogLy8gVGVzdHMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB1bmlmb3JtIHN0YXRpYyBhbmQg
YWN0aXZlIHVzZQogVEVTVF9QKFByb2dyYW1CaW5hcnlFUzNUZXN0LCBBY3RpdmVVbmlmb3JtU2hh
ZGVyKQogewogICAgIC8vIFdlIGNhbid0IHJ1biB0aGUgdGVzdCBpZiBubyBwcm9ncmFtIGJpbmFy
eSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCiAgICAgR0xpbnQgYmluYXJ5Rm9ybWF0Q291bnQgPSAw
OwogICAgIGdsR2V0SW50ZWdlcnYoR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMsICZiaW5h
cnlGb3JtYXRDb3VudCk7Ci0gICAgQU5HTEVfU0tJUF9URVNUX0lGKCFiaW5hcnlGb3JtYXRDb3Vu
dCk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGJpbmFyeUZvcm1hdENvdW50ID09IDApOwogCiAg
ICAgY29uc3RleHByIGNoYXIga1ZTW10gPQogICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCkBA
IC00NzAsNyArNjA0LDcgQEAgVEVTVF9QKFByb2dyYW1CaW5hcnlFUzNUZXN0LCBCaW5hcnlXaXRo
TGFyZ2VVbmlmb3JtQ291bnQpCiAgICAgLy8gV2UgY2FuJ3QgcnVuIHRoZSB0ZXN0IGlmIG5vIHBy
b2dyYW0gYmluYXJ5IGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KICAgICBHTGludCBiaW5hcnlGb3Jt
YXRDb3VudCA9IDA7CiAgICAgZ2xHZXRJbnRlZ2VydihHTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9S
TUFUUywgJmJpbmFyeUZvcm1hdENvdW50KTsKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIWJpbmFy
eUZvcm1hdENvdW50KTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoYmluYXJ5Rm9ybWF0Q291bnQg
PT0gMCk7CiAKICAgICBjb25zdGV4cHIgY2hhciBrVlNbXSA9CiAgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKQEAgLTYzOCw3ICs3NzIsNyBAQCBURVNUX1AoUHJvZ3JhbUJpbmFyeUVTMzFUZXN0
LCBQcm9ncmFtQmluYXJ5V2l0aENvbXB1dGVTaGFkZXIpCiAgICAgLy8gV2UgY2FuJ3QgcnVuIHRo
ZSB0ZXN0IGlmIG5vIHByb2dyYW0gYmluYXJ5IGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KICAgICBH
TGludCBiaW5hcnlGb3JtYXRDb3VudCA9IDA7CiAgICAgZ2xHZXRJbnRlZ2VydihHTF9OVU1fUFJP
R1JBTV9CSU5BUllfRk9STUFUUywgJmJpbmFyeUZvcm1hdENvdW50KTsKLSAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoIWJpbmFyeUZvcm1hdENvdW50KTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoYmlu
YXJ5Rm9ybWF0Q291bnQgPT0gMCk7CiAgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS80MDkyCiAg
ICAgQU5HTEVfU0tJUF9URVNUX0lGKElzVnVsa2FuKCkpOwogCkBAIC03NTAsNyArODg0LDcgQEAg
VEVTVF9QKFByb2dyYW1CaW5hcnlFUzMxVGVzdCwgSW1hZ2VUZXh0dXJlQmluZGluZykKICAgICAv
LyBXZSBjYW4ndCBydW4gdGhlIHRlc3QgaWYgbm8gcHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBhcmUg
c3VwcG9ydGVkLgogICAgIEdMaW50IGJpbmFyeUZvcm1hdENvdW50ID0gMDsKICAgICBnbEdldElu
dGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTLCAmYmluYXJ5Rm9ybWF0Q291bnQp
OwotICAgIEFOR0xFX1NLSVBfVEVTVF9JRighYmluYXJ5Rm9ybWF0Q291bnQpOworICAgIEFOR0xF
X1NLSVBfVEVTVF9JRihiaW5hcnlGb3JtYXRDb3VudCA9PSAwKTsKIAogICAgIGNvbnN0IGNoYXIg
a0NvbXB1dGVTaGFkZXJbXSA9CiAgICAgICAgIFIiKCN2ZXJzaW9uIDMxMCBlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb2dyYW1JbnRl
cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9Qcm9ncmFtSW50ZXJmYWNlVGVzdC5jcHAKaW5kZXggOGUxOWM3NGMyOTlkYzkxMTMxZTc5NjVi
OTEyYWQ3NGUyZGE2ZjJkZC4uZGI0ZGFmY2NjMDg3NjQyMWI3ZjQ0ZGVmOTUwMjg3YzUzODMxYzU4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1Byb2dyYW1JbnRlcmZhY2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUludGVyZmFjZVRlc3QuY3BwCkBAIC01OTksNiArNTk5
LDEyIEBAIFRFU1RfUChQcm9ncmFtSW50ZXJmYWNlVGVzdEVTMzEsIEdldEJ1ZmZlclZhcmlhYmxl
UHJvcGVydGllcykKICAgICAvLyBvbiBkM2QgYmFja2VuZC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8x
OTUxCiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzRDNEMTEoKSk7CiAKKyAgICAvLyBDaGVjayBT
U0JPIHN1cHBvcnQKKyAgICBHTGludCBudW1TdXBwb3J0ZWQ7CisgICAgZ2xHZXRJbnRlZ2VydihH
TF9NQVhfVkVSVEVYX1NIQURFUl9TVE9SQUdFX0JMT0NLUywgJm51bVN1cHBvcnRlZCk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKG51bVN1cHBvcnRl
ZCA8IDIpOworCiAgICAgY29uc3RleHByIGNoYXIga1ZTW10gPQogICAgICAgICAiI3ZlcnNpb24g
MzEwIGVzXG4iCiAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCkBAIC05NDgsNiAr
OTU0LDEyIEBAIFRFU1RfUChQcm9ncmFtSW50ZXJmYWNlVGVzdEVTMzEsIEdldFNoYWRlclN0b3Jh
Z2VCbG9ja1Byb3BlcnRpZXMpCiAgICAgLy8gb24gZDNkIGJhY2tlbmQuIGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMTk1MQogICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0QzRDExKCkpOwogCisgICAgLy8g
Q2hlY2sgU1NCTyBzdXBwb3J0CisgICAgR0xpbnQgbnVtU3VwcG9ydGVkOworICAgIGdsR2V0SW50
ZWdlcnYoR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MsICZudW1TdXBwb3J0ZWQp
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRihudW1T
dXBwb3J0ZWQgPCAzKTsKKwogICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0KICAgICAgICAgIiN2
ZXJzaW9uIDMxMCBlc1xuIgogICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVz
dFJlc291cmNlSW5pdFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1JvYnVzdFJlc291cmNlSW5pdFRlc3QuY3BwCmluZGV4IDA5ZGZkOGYwYmUyY2U5
MzY2ZjQ0ZTE0NzI0YjQ5ZjMyZDU2YTAxYjEuLjk5YzJlZjBmOTgzZTAxODAyNmJhMjQ1MzZmMDBm
NjQ1ZTU3MzM5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9Sb2J1c3RSZXNvdXJjZUluaXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUm9idXN0UmVzb3VyY2VJbml0VGVzdC5jcHAK
QEAgLTI5MSw2ICsyOTEsOCBAQCBjbGFzcyBSb2J1c3RSZXNvdXJjZUluaXRUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsZWFyRnVuYz4KICAgICB2b2lk
IG1hc2tlZFN0ZW5jaWxDbGVhcihDbGVhckZ1bmMgY2xlYXJGdW5jKTsKKworICAgIHZvaWQgY29w
eVRleFN1YkltYWdlMkRDdXN0b21GQk9UZXN0KGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSk7CiB9
OwogCiBjbGFzcyBSb2J1c3RSZXNvdXJjZUluaXRUZXN0RVMzIDogcHVibGljIFJvYnVzdFJlc291
cmNlSW5pdFRlc3QKQEAgLTU2OSw3ICs1NzEsNiBAQCBURVNUX1AoUm9idXN0UmVzb3VyY2VJbml0
VGVzdCwgVGV4SW1hZ2VUaGVuU3ViSW1hZ2UpCiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKChJc05l
eHVzNVgoKSB8fCBJc05leHVzNlAoKSkgJiYgSXNPcGVuR0xFUygpKTsKIAogICAgIC8vIFB1dCBz
b21lIGRhdGEgaW50byB0aGUgdGV4dHVyZQotCiAgICAgR0xUZXh0dXJlIHRleDsKICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7CiAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIGtXaWR0aCwga0hlaWdodCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgbnVsbHB0cik7CkBAIC04NDAsMTEgKzg0MSw2IEBAIFRFU1RfUChSb2J1c3RSZXNv
dXJjZUluaXRUZXN0LCBSZWFkaW5nT3V0T2ZCb3VuZHNDb3BpZWRUZXh0dXJlKQogewogICAgIEFO
R0xFX1NLSVBfVEVTVF9JRighaGFzR0xFeHRlbnNpb24oKSk7CiAKLSAgICAvLyBGbGFreSBmYWls
dXJlIG9uIExpbnV4IC8gTlYgLyBWdWxrYW4gd2hlbiBydW4gaW4gYSBzZXF1ZW5jZS4gaHR0cDov
L2FuZ2xlYnVnLmNvbS8zNDE2Ci0gICAgQU5HTEVfU0tJUF9URVNUX0lGKElzVnVsa2FuKCkgJiYg
SXNOVklESUEoKSAmJiBJc0xpbnV4KCkpOwotICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDA5
MgotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc1dpbmRvd3MoKSAmJiBJc1Z1bGthbigpKTsKLQog
ICAgIEdMVGV4dHVyZSB0ZXg7CiAgICAgc2V0dXBUZXh0dXJlKCZ0ZXgpOwogICAgIEdMRnJhbWVi
dWZmZXIgZmJvOwpAQCAtMTUzNyw2ICsxNTMzLDYwIEBAIFRFU1RfUChSb2J1c3RSZXNvdXJjZUlu
aXRUZXN0LCBDb3B5VGV4U3ViSW1hZ2UyRCkKICAgICBWZXJpZnlSR0JBOFBpeGVsUmVjdDxrRGVz
dFNpemU+KGRlc3RJbml0VGVzdCk7CiB9CiAKK3ZvaWQgUm9idXN0UmVzb3VyY2VJbml0VGVzdDo6
Y29weVRleFN1YkltYWdlMkRDdXN0b21GQk9UZXN0KGludCBvZmZzZXRYLCBpbnQgb2Zmc2V0WSkK
K3sKKyAgICBjb25zdCBpbnQgdGV4U2l6ZSA9IDUxMjsKKyAgICBjb25zdCBpbnQgZmJvU2l6ZSA9
IDE2OworCisgICAgR0xUZXh0dXJlIHRleHR1cmU7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXh0dXJlLmdldCgpKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgdGV4U2l6ZSwgdGV4U2l6ZSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKKyAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisKKyAgICBHTFJlbmRlcmJ1ZmZlciByZW5kZXJidWZmZXI7CisgICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyLmdldCgpKTsKKyAgICBnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBNCwgZmJvU2l6ZSwgZmJvU2l6ZSk7
CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTEZyYW1lYnVmZmVyIGZyYW1lYnVm
ZmVyOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlci5n
ZXQoKSk7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmJ1ZmZlci5nZXQoKSk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgQVNTRVJUX0dMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKEdMX0ZSQU1FQlVGRkVSKTsKKwor
ICAgIGdsQ2xlYXJDb2xvcigxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbENvcHlU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIG9mZnNldFgsIG9mZnNldFksIHRl
eFNpemUsIHRleFNpemUpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xGcmFt
ZWJ1ZmZlciByZWFkYmFja0ZCTzsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgcmVhZGJhY2tGQk8uZ2V0KCkpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLmdl
dCgpLCAwKTsKKyAgICBBU1NFUlRfR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUoR0xfRlJBTUVCVUZG
RVIpOworICAgIGNoZWNrQ3VzdG9tRnJhbWVidWZmZXJOb25aZXJvUGl4ZWxzKHRleFNpemUsIHRl
eFNpemUsIC1vZmZzZXRYLCAtb2Zmc2V0WSwgZmJvU2l6ZSwgZmJvU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yOjpyZWQpOworfQorCisvLyBUZXN0
IENvcHlUZXhTdWJJbWFnZTJEIGNsaXBwZWQgdG8gc2l6ZSBvZiBjdXN0b20gRkJPLCB6ZXJvIHgv
eSBzb3VyY2Ugb2Zmc2V0LgorVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIENvcHlUZXhT
dWJJbWFnZTJEQ3VzdG9tRkJPWmVyb09mZnNldHMpCit7CisgICAgLy8gVE9ETyhhbmdsZWJ1Zy5j
b20vNDUwNyk6IHBhc3MgdGhpcyB0ZXN0IG9uIHRoZSBNZXRhbCBiYWNrZW5kLgorICAgIEFOR0xF
X1NLSVBfVEVTVF9JRihJc01ldGFsKCkpOworICAgIGNvcHlUZXhTdWJJbWFnZTJEQ3VzdG9tRkJP
VGVzdCgwLCAwKTsKK30KKworLy8gVGVzdCBDb3B5VGV4U3ViSW1hZ2UyRCBjbGlwcGVkIHRvIHNp
emUgb2YgY3VzdG9tIEZCTywgbmVnYXRpdmUgeC95IHNvdXJjZSBvZmZzZXQuCitURVNUX1AoUm9i
dXN0UmVzb3VyY2VJbml0VGVzdCwgQ29weVRleFN1YkltYWdlMkRDdXN0b21GQk9OZWdhdGl2ZU9m
ZnNldHMpCit7CisgICAgLy8gVE9ETyhhbmdsZWJ1Zy5jb20vNDUwNyk6IHBhc3MgdGhpcyB0ZXN0
IG9uIHRoZSBNZXRhbCBiYWNrZW5kLgorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc01ldGFsKCkp
OworICAgIGNvcHlUZXhTdWJJbWFnZTJEQ3VzdG9tRkJPVGVzdCgtOCwgLTgpOworfQorCiAvLyBU
ZXN0cyB0aGF0IGNhbGxpbmcgQ29weVRleFN1YkltYWdlM0Qgd2lsbCBpbml0aWFsaXplIHRoZSBz
b3VyY2UgJiBkZXN0aW5hdGlvbi4KIFRFU1RfUChSb2J1c3RSZXNvdXJjZUluaXRUZXN0RVMzLCBD
b3B5VGV4U3ViSW1hZ2UzRCkKIHsKQEAgLTE4NjcsOSArMTkxNyw2IEBAIFRFU1RfUChSb2J1c3RS
ZXNvdXJjZUluaXRUZXN0RVMzMSwgTXVsdGlzYW1wbGUyRFRleHR1cmVBcnJheSkKIC8vIFRlc3Rz
IHRoYXQgdXNpbmcgYW4gb3V0IG9mIGJvdW5kcyBkcmF3IG9mZnNldCB3aXRoIGEgZHluYW1pYyBh
cnJheSBzdWNjZWVkcy4KIFRFU1RfUChSb2J1c3RSZXNvdXJjZUluaXRUZXN0LCBEeW5hbWljVmVy
dGV4QXJyYXlPZmZzZXRPdXRPZkJvdW5kcykKIHsKLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQgb24g
VnVsa2FuLiAgaHR0cDovL2FuZ2xlYnVnLmNvbS8zMzUwCi0gICAgQU5HTEVfU0tJUF9URVNUX0lG
KElzVnVsa2FuKCkpOwotCiAgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBlc3NsMV9zaGFk
ZXJzOjp2czo6U2ltcGxlKCksIGVzc2wxX3NoYWRlcnM6OmZzOjpSZWQoKSk7CiAgICAgZ2xVc2VQ
cm9ncmFtKHByb2dyYW0pOwogCkBAIC0xOTUzLDEwICsyMDAwLDEyIEBAIFRFU1RfUChSb2J1c3RS
ZXNvdXJjZUluaXRUZXN0RVMzLCBJbml0aWFsaXplTXVsdGlzYW1wbGVkRGVwdGhSZW5kZXJidWZm
ZXJBZnRlckNvCiAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVu
KTsKIH0KIAotQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTMyhSb2J1c3RSZXNvdXJj
ZUluaXRUZXN0KTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMyX0FORF9FUzNfQU5EKFJvYnVz
dFJlc291cmNlSW5pdFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXaXRoQWxsb2NhdGVOb25aZXJvTWVtb3J5KEVTMl9WVUxLQU4oKSkpOwogCi1BTkdMRV9JTlNU
QU5USUFURV9URVNUX0VTMyhSb2J1c3RSZXNvdXJjZUluaXRUZXN0RVMzKTsKK0FOR0xFX0lOU1RB
TlRJQVRFX1RFU1RfRVMzX0FORChSb2J1c3RSZXNvdXJjZUluaXRUZXN0RVMzLCBXaXRoQWxsb2Nh
dGVOb25aZXJvTWVtb3J5KEVTM19WVUxLQU4oKSkpOwogCi1BTkdMRV9JTlNUQU5USUFURV9URVNU
X0VTMzEoUm9idXN0UmVzb3VyY2VJbml0VGVzdEVTMzEpOworQU5HTEVfSU5TVEFOVElBVEVfVEVT
VF9FUzMxX0FORChSb2J1c3RSZXNvdXJjZUluaXRUZXN0RVMzMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2l0aEFsbG9jYXRlTm9uWmVyb01lbW9yeShFUzMxX1ZVTEtBTigpKSk7
CiAKIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJU
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TaGFk
ZXJOb25Db25zdEdsb2JhbEluaXRpYWxpemVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIwYjBmZTJh
ZDNmZjczZGMxMGYzOWIxNzIwNGVkMDA3OTFjOGFjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TaGFkZXJOb25Db25zdEdsb2Jh
bEluaXRpYWxpemVyVGVzdC5jcHAKQEAgLTAsMCArMSwxNjkgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUZXN0
cyBmb3IgR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycworLy8K
KworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5H
TEVUZXN0LmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKKworY2xhc3MgU2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0aWFsaXplclRlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBTaGFkZXJOb25Db25zdEds
b2JhbEluaXRpYWxpemVyVGVzdCgpIDogQU5HTEVUZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdp
bmRvd1dpZHRoKDEyOCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOworICAgIH0KKwor
ICAgIHZvaWQgZHJhdyhHTHVpbnQgcHJvZ3JhbSkKKyAgICB7CisgICAgICAgIHN0ZDo6YXJyYXk8
VmVjdG9yNCwgMz4gdmVydGljZXM7CisgICAgICAgIHZlcnRpY2VzWzBdID0gey0xLjAsIC0xLjAs
IDAuMCwgMS4wfTsKKyAgICAgICAgdmVydGljZXNbMV0gPSB7MS4wLCAtMS4wLCAwLjAsIDEuMH07
CisgICAgICAgIHZlcnRpY2VzWzJdID0gezAuMCwgMS4wLCAwLjAsIDIuMH07CisKKyAgICAgICAg
R0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFf
cG9zaXRpb24iKTsKKworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2Nh
dGlvbiwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB2ZXJ0aWNlcy5kYXRhKCkpOworCisgICAg
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7CisKKyAgICAg
ICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisgICAgfQorfTsKKworLy8gVGVz
dHMgdGhhdCB0aGUgZXh0ZW5zaW9uIGlzIGRpc2FibGVkIGlmIG5vdCBleHBsaWNpdGx5IGVuYWJs
ZWQtIG5vbiBjb25zdGFudCBpbml0aWFsaXplcnMgc2hvdWxkCisvLyBiZSBmb3JiaWRkZW4gaW4g
YWxsIGNhc2VzIHVubGVzcyB0aGlzIGV4dGVuc2lvbiBpcyBleHBsaWNpdGx5IHJlcXVlc3RlZAor
VEVTVF9QKFNoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJUZXN0LCBEaXNhYmxlZCkKK3sK
KyAgICBjb25zdCBjaGFyICpmcmFnU3JjID0gUiIoI3ZlcnNpb24gMTAwCisKK3ByZWNpc2lvbiBs
b3dwIGZsb2F0OworCit1bmlmb3JtIGZsb2F0IG5vbmRldGVybWluaXN0aWNfdW5pZm9ybTsKKwor
ZmxvYXQgbm9uQ29uc3RJbml0aWFsaXplcigpOworCitmbG9hdCBub25Db25zdEdsb2JhbCA9IG5v
bkNvbnN0SW5pdGlhbGl6ZXIoKTsKK2Zsb2F0IHNpZGVFZmZlY3RHbG9iYWwgPSAwLjA7CisKK2Zs
b2F0IG5vbkNvbnN0SW5pdGlhbGl6ZXIoKSB7CisgICAgc2lkZUVmZmVjdEdsb2JhbCA9IDEuMDsK
KyAgICByZXR1cm4gbm9uZGV0ZXJtaW5pc3RpY191bmlmb3JtOworfQorCit2b2lkIG1haW4oKQor
eworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobm9uZGV0ZXJtaW5pc3RpY191bmlmb3JtLCBub25D
b25zdEdsb2JhbCwgc2lkZUVmZmVjdEdsb2JhbCwgMS4wKTsKK30KKykiOworCisgICAgR0xTaGFk
ZXIgYmFkRnJhZ21lbnQoR0xfRlJBR01FTlRfU0hBREVSKTsKKyAgICBnbFNoYWRlclNvdXJjZShi
YWRGcmFnbWVudCwgMSwgJmZyYWdTcmMsIG51bGxwdHIpOworICAgIGdsQ29tcGlsZVNoYWRlcihi
YWRGcmFnbWVudCk7CisKKyAgICBHTGludCBjb21waWxlUmVzdWx0OworICAgIGdsR2V0U2hhZGVy
aXYoYmFkRnJhZ21lbnQsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVJlc3VsdCk7CisgICAg
RVhQRUNUX0VRKGNvbXBpbGVSZXN1bHQsIDApOworCisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Cit9CisKKy8vIFRlc3QgdGhhdCBub24gY29uc3RhbnQgaW5pdGlhbGl6ZXJzIGFyZSBldmFsdWF0
ZWQgY29ycmVjdGx5IGluIEVTU0wgMTAwCitURVNUX1AoU2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0
aWFsaXplclRlc3QsIHYxMDApCit7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFJc0dMRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVy
cyIpKTsKKworICAgIGNvbnN0IGNoYXIgKmZyYWdTcmMgPSBSIigjdmVyc2lvbiAxMDAKKyNleHRl
bnNpb24gR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyA6IHJl
cXVpcmUKKworcHJlY2lzaW9uIGxvd3AgZmxvYXQ7CisKKyNpZm5kZWYgR0xfRVhUX3NoYWRlcl9u
b25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycworI2Vycm9yIEdMX0VYVF9zaGFkZXJfbm9u
X2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMgaXMgbm90IGRlZmluZWQKKyNlbmRpZgorCit1
bmlmb3JtIGZsb2F0IG5vbmRldGVybWluaXN0aWNfdW5pZm9ybTsKKworZmxvYXQgbm9uQ29uc3RJ
bml0aWFsaXplcigpOworCitmbG9hdCBub25Db25zdEdsb2JhbCA9IG5vbkNvbnN0SW5pdGlhbGl6
ZXIoKTsKK2Zsb2F0IHNpZGVFZmZlY3RHbG9iYWwgPSAwLjA7CisKK2Zsb2F0IG5vbkNvbnN0SW5p
dGlhbGl6ZXIoKSB7CisgICAgc2lkZUVmZmVjdEdsb2JhbCA9IDEuMDsKKyAgICByZXR1cm4gbm9u
ZGV0ZXJtaW5pc3RpY191bmlmb3JtOworfQorCit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQobm9uZGV0ZXJtaW5pc3RpY191bmlmb3JtLCBub25Db25zdEdsb2JhbCwgc2lk
ZUVmZmVjdEdsb2JhbCwgMS4wKTsKK30KKykiOworCisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9n
cmFtLCBlc3NsMV9zaGFkZXJzOjp2czo6U2ltcGxlKCksIGZyYWdTcmMpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOworICAgIGdsVW5pZm9y
bTFmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJub25kZXRlcm1pbmlzdGljX3VuaWZv
cm0iKSwgMS4wZik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBkcmF3KHByb2dy
YW0pOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDY0LCA2NCwgR0xDb2xvcjo6d2hpdGUpOworfQorCisvLyBUZXN0IHRoYXQgbm9uIGNvbnN0
YW50IGluaXRpYWxpemVycyBhcmUgZXZhbHVhdGVkIGNvcnJlY3RseSBpbiBFU1NMIDMwMAorVEVT
VF9QKFNoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJUZXN0LCB2MzAwZXMpCit7CisgICAg
QU5HTEVfU0tJUF9URVNUX0lGKCFJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl9u
b25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyIpKTsKKworICAgIGNvbnN0IGNoYXIgKmZy
YWdTcmMgPSBSIigjdmVyc2lvbiAzMDAgZXMKKyNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl9ub25f
Y29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyA6IHJlcXVpcmUKKworcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0Oworb3V0IHZlYzQgZnJhZ0NvbG9yOworCisjaWZuZGVmIEdMX0VYVF9zaGFkZXJfbm9u
X2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMKKyNlcnJvciBHTF9FWFRfc2hhZGVyX25vbl9j
b25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzIGlzIG5vdCBkZWZpbmVkCisjZW5kaWYKKwordW5p
Zm9ybSBmbG9hdCBub25kZXRlcm1pbmlzdGljX3VuaWZvcm07CisKK2Zsb2F0IG5vbkNvbnN0SW5p
dGlhbGl6ZXIoKTsKKworZmxvYXQgbm9uQ29uc3RHbG9iYWwgPSBub25Db25zdEluaXRpYWxpemVy
KCk7CitmbG9hdCBzaWRlRWZmZWN0R2xvYmFsID0gMC4wOworCitmbG9hdCBub25Db25zdEluaXRp
YWxpemVyKCkgeworICAgIHNpZGVFZmZlY3RHbG9iYWwgPSAxLjA7CisgICAgcmV0dXJuIG5vbmRl
dGVybWluaXN0aWNfdW5pZm9ybTsKK30KKwordm9pZCBtYWluKCkKK3sKKyAgICBmcmFnQ29sb3Ig
PSB2ZWM0KG5vbmRldGVybWluaXN0aWNfdW5pZm9ybSwgbm9uQ29uc3RHbG9iYWwsIHNpZGVFZmZl
Y3RHbG9iYWwsIDEuMCk7Cit9CispIjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwg
ZXNzbDNfc2hhZGVyczo6dnM6OlNpbXBsZSgpLCBmcmFnU3JjKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFVuaWZvcm0xZihn
bEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibm9uZGV0ZXJtaW5pc3RpY191bmlmb3JtIiks
IDEuMGYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgZHJhdyhwcm9ncmFtKTsK
KyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSg2
NCwgNjQsIEdMQ29sb3I6OndoaXRlKTsKK30KKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzMo
U2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0aWFsaXplclRlc3QpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9TaGFkZXJTdG9yYWdlQnVmZmVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2hhZGVyU3RvcmFnZUJ1ZmZlclRlc3QuY3BwCmluZGV4
IGY4YmU3ZmVhZDEyYmYyNTlkODk0YzdjYTU3YzAzYzk0ZDUwMGMzNGMuLmQ3M2ExYjE1MDNkYWIz
YzE1MDZlMTYxNjhjYTUyN2E0MTFmMGZmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TaGFkZXJTdG9yYWdlQnVmZmVyVGVzdC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NoYWRlclN0b3Jh
Z2VCdWZmZXJUZXN0LmNwcApAQCAtNDQ0LDcgKzQ0NCw5IEBAIHZvaWQgbWFpbigpCiAgICAgZ2xH
ZXRJbnRlZ2VydihHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCwgJmJ1
ZmZlckFsaWduT2Zmc2V0KTsKIAogICAgIGNvbnN0ZXhwciBpbnQga0J1ZmZlclNpemUgPSBrRWxl
bWVudENvdW50ICoga0FycmF5U3RyaWRlOwotICAgIGNvbnN0IGludCBrQnVmZmVyT2Zmc2V0ICAg
PSBrQnVmZmVyU2l6ZSArIChrQnVmZmVyU2l6ZSAlIGJ1ZmZlckFsaWduT2Zmc2V0KTsKKyAgICBj
b25zdCBpbnQgdW5hbGlnbmVkQnl0ZXMgID0ga0J1ZmZlclNpemUgJSBidWZmZXJBbGlnbk9mZnNl
dDsKKyAgICBjb25zdCBpbnQgYWxpZ25Db3JyZWN0aW9uID0gdW5hbGlnbmVkQnl0ZXMgPT0gMCA/
IDAgOiBidWZmZXJBbGlnbk9mZnNldCAtIHVuYWxpZ25lZEJ5dGVzOworICAgIGNvbnN0IGludCBr
QnVmZmVyT2Zmc2V0ICAgPSBrQnVmZmVyU2l6ZSArIGFsaWduQ29ycmVjdGlvbjsKIAogICAgIGds
QnVmZmVyRGF0YShHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIsIGtCdWZmZXJPZmZzZXQgKyBrQnVm
ZmVyU2l6ZSwgbnVsbHB0ciwgR0xfU1RBVElDX0RSQVcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9uVGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3Bl
cmF0aW9uVGVzdC5jcHAKaW5kZXggMThhMzJjYzM3ZTFlMDE2ZmRjNDEzZDc0OWMxZjhhZTNhYjQ4
Yzk3My4uMWQ4YzM2MDViOWIzYzFmNGY1MzRmNmUyMzFlNzk2YTEyMmU2MmI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpbXBsZU9wZXJh
dGlvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcApAQCAtMTA4MCw2ICsxMDgwLDYgQEAgVEVTVF9Q
KFNpbXBsZU9wZXJhdGlvblRlc3QsIFByaW1pdGl2ZU1vZGVOZWdhdGl2ZVRlc3QpCiAKIC8vIFVz
ZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJl
ciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQogLy8gdGVzdHMgc2hvdWxkIGJlIHJ1
biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTM19BTkQoU2ltcGxl
T3BlcmF0aW9uVGVzdCwgV2l0aE5vQ29tbWFuZEdyYXBoKEVTMl9WVUxLQU4oKSkpOworQU5HTEVf
SU5TVEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTMyhTaW1wbGVPcGVyYXRpb25UZXN0KTsKIAogfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCmluZGV4IDJhNWRkMDZiZGJi
NzM0NjIxNWQyMjNjNjhmNTU3M2RmNTM0OWRlMzkuLjI1NGY4ZTZkNDNiMWM3NDI5Y2I3YzVhNzBm
NWM0NDNkZTQ0YTRmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCkBAIC0xMCw2ICsx
MCw3IEBACiAKICNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgogI2luY2x1ZGUgInRl
c3RfdXRpbHMvZ2xfcmFpaS5oIgorI2luY2x1ZGUgInV0aWwvcmFuZG9tX3V0aWxzLmgiCiAKIHVz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKIApAQCAtMjUwLDExICsyNTEsOCBAQCBURVNUX1AoU3RhdGVD
aGFuZ2VUZXN0LCBGcmFtZWJ1ZmZlckluY29tcGxldGVTdGVuY2lsQXR0YWNobWVudCkKIH0KIAog
Ly8gVGVzdCB0aGF0IEZyYW1lYnVmZmVyIGNvbXBsZXRlbmVzcyBjYWNoaW5nIHdvcmtzIHdoZW4g
ZGVwdGgtc3RlbmNpbCBhdHRhY2htZW50cyBjaGFuZ2UuCi1URVNUX1AoU3RhdGVDaGFuZ2VUZXN0
LCBGcmFtZWJ1ZmZlckluY29tcGxldGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50KQorVEVTVF9QKFN0
YXRlQ2hhbmdlVGVzdEVTMywgRnJhbWVidWZmZXJJbmNvbXBsZXRlRGVwdGhTdGVuY2lsQXR0YWNo
bWVudCkKIHsKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzICYmCi0gICAgICAgICAgICAgICAgICAgICAgICFJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOwotCiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMF0pOwogICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBH
TF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwpA
QCAtMTgzNiw4ICsxODM0LDkgQEAgVEVTVF9QKFNpbXBsZVN0YXRlQ2hhbmdlVGVzdCwgRHJhd0Vs
ZW1lbnRzVUJZVEVYMlRoZW5EcmF3RWxlbWVudHNVU0hPUlQpCiAvLyB2ZXJpZnkgYWxsIHRoZSBy
ZW5kZXJpbmcgcmVzdWx0cyBhcmUgdGhlIHNhbWUuCiBURVNUX1AoU2ltcGxlU3RhdGVDaGFuZ2VU
ZXN0LCBEcmF3UmVwZWF0VW5hbGlnbmVkVmJvQ2hhbmdlKQogewotICAgIC8vIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vNDA5MgotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihpc1N3aWZ0c2hhZGVyKCkgJiYg
SXNXaW5kb3dzKCkpOworICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ3MAorICAgIEFOR0xF
X1NLSVBfVEVTVF9JRihpc1N3aWZ0c2hhZGVyKCkgJiYgKElzV2luZG93cygpIHx8IElzTGludXgo
KSkpOworCiAgICAgY29uc3QgaW50IGtSZXBlYXQgPSAyOwogCiAgICAgLy8gc2V0IHVwIFZCTywg
Y29sb3JWQk8gaXMgdW5hbGlnbmVkCkBAIC0yNTk2LDYgKzI1OTUsODIgQEAgVEVTVF9QKFNpbXBs
ZVN0YXRlQ2hhbmdlVGVzdCwgUmVkZWZpbmVGcmFtZWJ1ZmZlclRleHR1cmUpCiAgICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKSA8PCAic2Vjb25kIGRyYXcgc2hv
dWxkIGJlIGdyZWVuIjsKIH0KIAorLy8gVHJpcHMgYSBidWcgaW4gdGhlIFZ1bGthbiBiYWNrLWVu
ZCB3aGVyZSBhIFRleHR1cmUgd291bGRuJ3QgdHJhbnNpdGlvbiBjb3JyZWN0bHkuCitURVNUX1Ao
U2ltcGxlU3RhdGVDaGFuZ2VUZXN0LCBEcmF3QW5kQ2xlYXJUZXh0dXJlUmVwZWF0ZWRseSkKK3sK
KyAgICAvLyBGYWlscyBvbiA0MzEuMDIgZHJpdmVyLiBodHRwOi8vYW5nbGVidWcuY29tLzM3NDgK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNXaW5kb3dzKCkgJiYgSXNOVklESUEoKSAmJiBJc1Z1
bGthbigpKTsKKworICAgIC8vIEZhaWxzIG9uIEFNRCBPcGVuR0wgV2luZG93cy4gVGhpcyBjb25m
aWd1cmF0aW9uIGlzbid0IG1haW50YWluZWQuCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzV2lu
ZG93cygpICYmIElzQU1EKCkgJiYgSXNPcGVuR0woKSk7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFN
KHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OnZzOjpUZXh0dXJlMkQoKSwgZXNzbDFfc2hhZGVyczo6
ZnM6OlRleHR1cmUyRCgpKTsKKworICAgIEdMVGV4dHVyZSB0ZXg7CisgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXgpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6
cmVkKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIEdMRnJhbWVidWZmZXIgZmJvOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBmYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgsIDApOworICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEFTU0VSVF9HTF9GUkFNRUJVRkZFUl9DT01QTEVU
RShHTF9GUkFNRUJVRkZFUik7CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICBH
TGludCB1bmlMb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBlc3NsMV9zaGFkZXJz
OjpUZXh0dXJlMkRVbmlmb3JtKCkpOworICAgIEFTU0VSVF9ORSgtMSwgdW5pTG9jKTsKKyAgICBn
bFVuaWZvcm0xaSh1bmlMb2MsIDApOworCisgICAgY29uc3QgaW50IG51bVJvd3NDb2xzID0gMjsK
KyAgICBjb25zdCBpbnQgY2VsbFNpemUgICAgPSBnZXRXaW5kb3dXaWR0aCgpIC8gMjsKKworICAg
IGZvciAoaW50IGNlbGxZID0gMDsgY2VsbFkgPCBudW1Sb3dzQ29sczsgY2VsbFkrKykKKyAgICB7
CisgICAgICAgIGZvciAoaW50IGNlbGxYID0gMDsgY2VsbFggPCBudW1Sb3dzQ29sczsgY2VsbFgr
KykKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHNlZWQgICAgICAgICAgICA9IGNlbGxYICsg
Y2VsbFkgKiBudW1Sb3dzQ29sczsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjQgY29sb3IgPSBS
YW5kb21WZWM0KHNlZWQsIDAuMGYsIDEuMGYpOworCisgICAgICAgICAgICAvLyBTZXQgdGhlIHRl
eHR1cmUgdG8gYSBjb25zdGFudCBjb2xvciB1c2luZyBnbENsZWFyIGFuZCBhIHVzZXIgRkJPLgor
ICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAg
ICAgICAgICBnbENsZWFyQ29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3Jb
M10pOworICAgICAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAg
ICAgICAgLy8gRHJhdyBhIHNtYWxsIGNvbG9yZWQgcXVhZCB0byB0aGUgZGVmYXVsdCBGQk8gdXNp
bmcgdGhlIHZpZXdwb3J0LgorICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIDApOworICAgICAgICAgICAgZ2xWaWV3cG9ydChjZWxsWCAqIGNlbGxTaXplLCBjZWxs
WSAqIGNlbGxTaXplLCBjZWxsU2l6ZSwgY2VsbFNpemUpOworICAgICAgICAgICAgZHJhd1F1YWQo
cHJvZ3JhbSwgZXNzbDFfc2hhZGVyczo6UG9zaXRpb25BdHRyaWIoKSwgMC41Zik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhlIGNvbG9yZWQgcXVhZHMgd2VyZSBkcmF3biBj
b3JyZWN0bHkgZGVzcGl0ZSBubyBmbHVzaGluZy4KKyAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBw
aXhlbERhdGEoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpKTsKKyAgICBnbFJl
YWRQaXhlbHMoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgIHBpeGVsRGF0YS5kYXRhKCkp
OworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBmb3IgKGludCBjZWxsWSA9IDA7
IGNlbGxZIDwgbnVtUm93c0NvbHM7IGNlbGxZKyspCisgICAgeworICAgICAgICBmb3IgKGludCBj
ZWxsWCA9IDA7IGNlbGxYIDwgbnVtUm93c0NvbHM7IGNlbGxYKyspCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGludCBzZWVkICAgICAgICAgICAgPSBjZWxsWCArIGNlbGxZICogbnVtUm93c0NvbHM7
CisgICAgICAgICAgICBjb25zdCBWZWN0b3I0IGNvbG9yID0gUmFuZG9tVmVjNChzZWVkLCAwLjBm
LCAxLjBmKTsKKworICAgICAgICAgICAgR0xDb2xvciBleHBlY3RlZENvbG9yKGNvbG9yKTsKKwor
ICAgICAgICAgICAgaW50IHRlc3ROID0KKyAgICAgICAgICAgICAgICBjZWxsWCAqIGNlbGxTaXpl
ICsgY2VsbFkgKiBnZXRXaW5kb3dXaWR0aCgpICogY2VsbFNpemUgKyBnZXRXaW5kb3dXaWR0aCgp
ICsgMTsKKyAgICAgICAgICAgIEdMQ29sb3IgYWN0dWFsQ29sb3IgPSBwaXhlbERhdGFbdGVzdE5d
OworICAgICAgICAgICAgRVhQRUNUX0NPTE9SX05FQVIoZXhwZWN0ZWRDb2xvciwgYWN0dWFsQ29s
b3IsIDEpOworICAgICAgICB9CisgICAgfQorfQorCiAvLyBWYWxpZGF0ZXMgZGlzYWJsaW5nIGN1
bGwgZmFjZSByZWFsbHkgZGlzYWJsZXMgaXQuCiBURVNUX1AoU2ltcGxlU3RhdGVDaGFuZ2VUZXN0
LCBFbmFibGVBbmREaXNhYmxlQ3VsbEZhY2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RleHR1cmVUZXN0LmNwcAppbmRleCA1
ZTA4MmFkZGM4ZjhiMzEzNThkMDY3MjMxMDIxNDNiNTM5ZDJhMjQyLi5lNDUwMWFkMDUxZGE5MmM3
YjkyMDExMTBjNDJiMjM1NDFmNjExNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UZXh0dXJlVGVzdC5jcHAKQEAgLTI5MTUs
NiArMjkxNSw5IEBAIFRFU1RfUChUZXh0dXJlU2l6ZVRleHR1cmVBcnJheVRlc3QsIEJhc2VMZXZl
bFZhcmllc0luVGV4dHVyZUFycmF5KQogewogICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0FNRCgp
ICYmIElzRDNEMTEoKSk7CiAKKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQzOTEKKyAgICBB
TkdMRV9TS0lQX1RFU1RfSUYoSXNOVklESUEoKSAmJiBJc1dpbmRvd3MoKSAmJiBJc0QzRDExKCkp
OworCiAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkRBKTsKICAgICBHTHNpemVpIHNpemUgPSA2NDsKQEAg
LTM5OTUsNiArMzk5OCwxMiBAQCBURVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIE1heEZyYWdtZW50
VGV4dHVyZXMpCiAvLyBUZXN0IHJlbmRlcmluZyB3aXRoIG1heGltdW0gY29tYmluZWQgdGV4dHVy
ZSB1bml0cy4KIFRFU1RfUChUZXh0dXJlTGltaXRzVGVzdCwgTWF4Q29tYmluZWRUZXh0dXJlcykK
IHsKKyAgICAvLyBUT0RPKHRpbXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwCisgICAgLy8g
Q3VycmVudGx5IG9ubHkgZmFpbHMgb24gU3dpZnRTaGFkZXIgYnV0IHdlIGRvbid0IGhhdmUgYW4g
SXNTd2lmdFNoYWRlcigpLgorICAgIC8vIG1heCBwZXItc3RhZ2Ugc2FtcGxlZCBpbWFnZSBiaW5k
aW5ncyBjb3VudCAoMzIpIGV4Y2VlZHMgZGV2aWNlCisgICAgLy8gbWF4UGVyU3RhZ2VEZXNjcmlw
dG9yU2FtcGxlZEltYWdlcyBsaW1pdCAoMTYpCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzVnVs
a2FuKCkpOworCiAgICAgR0xpbnQgdmVydGV4VGV4dHVyZXMgPSBtTWF4VmVydGV4VGV4dHVyZXM7
CiAKICAgICBpZiAodmVydGV4VGV4dHVyZXMgKyBtTWF4RnJhZ21lbnRUZXh0dXJlcyA+IG1NYXhD
b21iaW5lZFRleHR1cmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcApp
bmRleCAzODUxMTI0MDY1MWIxNzNiOTcxNDdlZTg3ODYyMzI2YmIzNjE3MGVjLi4xYTFkNTRmOGRk
NzkwMmM3MDBmMjRkMWRkODE4MDJiYmIxZmFjODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0LmNwcApAQCAtNTQ3LDYgKzU0Nyw5IEBAIFRFU1RfUChUcmFuc2Zvcm1GZWVk
YmFja1Rlc3QsIE11bHRpQ29udGV4dCkKIAogICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0xpbnV4
KCkgJiYgSXNBTUQoKSAmJiBJc09wZW5HTCgpKTsKIAorICAgIC8vIEZsYWt5IG9uIFdpbiBJbnRl
bCBWdWxrYW4uIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ5NworICAgIEFOR0xFX1NLSVBfVEVTVF9J
RihJc1dpbmRvd3MoKSAmJiBJc0ludGVsKCkgJiYgSXNWdWxrYW4oKSk7CisKICAgICBFR0xpbnQg
Y29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgRUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lP
Tl9LSFIsCiAgICAgICAgIEdldFBhcmFtKCkubWFqb3JWZXJzaW9uLApAQCAtNTU1LDYgKzU1OCw4
IEBAIFRFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIE11bHRpQ29udGV4dCkKICAgICAgICAg
RUdMX05PTkUsCiAgICAgfTsKIAorICAgIC8vIEtlZXAgYSBmaXhlZCBzZWVkIFJORyBzbyB3ZSBh
cmUgZGV0ZXJtaW5pc3RpYy4KKyAgICBSTkcgcm5nKDApOwogICAgIEVHTFdpbmRvdyAqd2luZG93
ID0gZ2V0RUdMV2luZG93KCk7CiAKICAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSB3aW5kb3ctPmdl
dERpc3BsYXkoKTsKQEAgLTU3Miw3ICs1NzcsNyBAQCBURVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0LCBNdWx0aUNvbnRleHQpCiAgICAgfTsKICAgICBDb250ZXh0SW5mbyBjb250ZXh0c1szMl07
CiAKLSAgICBjb25zdCBzaXplX3QgbWF4RHJhd1NpemUgPSAxMDI0OworICAgIGNvbnN0IHNpemVf
dCBtYXhEcmF3U2l6ZSA9IDUxMjsKIAogICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB0cmFuc2Zvcm1G
ZWVkYmFja0RhdGEobWF4RHJhd1NpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
RHJhd1NpemU7IGkrKykKQEAgLTY0MCw5ICs2NDUsOSBAQCB2b2lkIG1haW4odm9pZCkKICAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CiAKICAgICAgICAgLy8gRm9yIGVhY2ggcGFzcywgZHJh
dyBiZXR3ZWVuIDAgYW5kIG1heERyYXdTaXplIHByaW1pdGl2ZXMKLSAgICAgICAgZm9yIChhdXRv
ICZwcmltQ291bnQgOiBjb250ZXh0LnByaW1pdGl2ZUNvdW50cykKKyAgICAgICAgZm9yIChzaXpl
X3QgJnByaW1Db3VudCA6IGNvbnRleHQucHJpbWl0aXZlQ291bnRzKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBwcmltQ291bnQgPSByYW5kKCkgJSBtYXhEcmF3U2l6ZTsKKyAgICAgICAgICAgIHBy
aW1Db3VudCA9IHJuZy5yYW5kb21JbnRCZXR3ZWVuKDEsIG1heERyYXdTaXplKTsKICAgICAgICAg
fQogCiAgICAgICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9QT0lOVFMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0
dHJpYnV0ZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1ZlcnRleEF0dHJpYnV0ZVRlc3QuY3BwCmluZGV4IDBkNjkzNjUyZWFlYzc3MjQ3YTkxMjcz
Mzg2ZDk2NjZkOWMxMzg0ZDUuLmMzMmRlNjQ1NjQzY2U3ODc2YmIyYzc3MWI1ODJlMDRhZTM1OTdm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9WZXJ0ZXhBdHRyaWJ1dGVUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVzdC5jcHAKQEAgLTgsNiArOCw3IEBA
CiAjaW5jbHVkZSAicGxhdGZvcm0vRmVhdHVyZXNWay5oIgogI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCiAjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisjaW5jbHVkZSAi
dXRpbC9yYW5kb21fdXRpbHMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwogCkBAIC0yNTAz
LDYgKzI1MDQsMTA0IEBAIHZvaWQgbWFpbigpCiAgICAgY2hlY2tQaXhlbHMoKTsKIH0KIAorLy8g
VGVzdHMgdGhhdCBsYXJnZSBzdHJpZGVzIHRoYXQgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1
ZmZlciB3b3JrIGNvcnJlY3RseS4KKy8vIFJlcXVpcmVzIEVTIDMuMSB0byBxdWVyeSBNQVhfVkVS
VEVYX0FUVFJJQl9TVFJJREUuCitURVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdEVTMzEsIExhcmdl
U3RyaWRlKQoreworICAgIHN0cnVjdCBWZXJ0ZXgKKyAgICB7CisgICAgICAgIFZlY3RvcjQgcG9z
aXRpb247CisgICAgICAgIFZlY3RvcjIgY29sb3I7CisgICAgfTsKKworICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBrQ29sb3JPZmZzZXQgPSBvZmZzZXRvZihWZXJ0ZXgsIGNvbG9yKTsKKworICAgIC8v
IEdldCBNQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUuCisgICAgR0xpbnQgbWF4U3RyaWRlOworICAg
IGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFLCAmbWF4U3RyaWRlKTsK
KworICAgIHVpbnQzMl90IGJ1ZmZlclNpemUgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFN0
cmlkZSk7CisgICAgdWludDMyX3Qgc3RyaWRlICAgICAgPSBzaXplb2YoVmVydGV4KTsKKyAgICB1
aW50MzJfdCBudW1WZXJ0aWNlcyA9IGJ1ZmZlclNpemUgLyBzdHJpZGU7CisKKyAgICAvLyBUaGUg
bGFzdCB2ZXJ0ZXggZml0cyBpbiB0aGUgYnVmZmVyIHNpemUuIFRoZSBsYXN0IHZlcnRleCBzdHJp
ZGUgZXh0ZW5kcyBwYXN0IGl0LgorICAgIEFTU0VSVF9MVChudW1WZXJ0aWNlcyAqIHN0cmlkZSwg
YnVmZmVyU2l6ZSk7CisgICAgQVNTRVJUX0dUKG51bVZlcnRpY2VzICogc3RyaWRlICsga0NvbG9y
T2Zmc2V0LCBidWZmZXJTaXplKTsKKworICAgIFJORyBybmcoMCk7CisKKyAgICBzdGQ6OnZlY3Rv
cjxWZXJ0ZXg+IHZlcnRleERhdGEoYnVmZmVyU2l6ZSwge1ZlY3RvcjQoKSwgVmVjdG9yMigpfSk7
CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gZXhwZWN0ZWRDb2xvcnM7CisgICAgZm9yICh1aW50
MzJfdCB2ZXJ0ZXhJbmRleCA9IDA7IHZlcnRleEluZGV4IDwgbnVtVmVydGljZXM7ICsrdmVydGV4
SW5kZXgpCisgICAgeworICAgICAgICBpbnQgeCA9IHZlcnRleEluZGV4ICUgZ2V0V2luZG93V2lk
dGgoKTsKKyAgICAgICAgaW50IHkgPSB2ZXJ0ZXhJbmRleCAvIGdldFdpbmRvd1dpZHRoKCk7CisK
KyAgICAgICAgLy8gR2VuZXJhdGUgYW5kIGNsYW1wIGEgMiBjb21wb25lbnQgdmVjdG9yLgorICAg
ICAgICBWZWN0b3I0IHJhbmRvbVZlYzQgPSBSYW5kb21WZWM0KHJuZy5yYW5kb21JbnQoKSwgMC4w
ZiwgMS4wZik7CisgICAgICAgIEdMQ29sb3IgcmFuZG9tQ29sb3IocmFuZG9tVmVjNCk7CisgICAg
ICAgIHJhbmRvbUNvbG9yWzJdICAgICA9IDA7CisgICAgICAgIHJhbmRvbUNvbG9yWzNdICAgICA9
IDI1NTsKKyAgICAgICAgVmVjdG9yNCBjbGFtcGVkVmVjID0gcmFuZG9tQ29sb3IudG9Ob3JtYWxp
emVkVmVjdG9yKCk7CisKKyAgICAgICAgdmVydGV4RGF0YVt2ZXJ0ZXhJbmRleF0gPSB7VmVjdG9y
NCh4LCB5LCAwLjBmLCAxLjBmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVjdG9yMihjbGFtcGVkVmVjWzBdLCBjbGFtcGVkVmVjWzFdKX07CisgICAgICAgIGV4cGVjdGVk
Q29sb3JzLnB1c2hfYmFjayhyYW5kb21Db2xvcik7CisgICAgfQorCisgICAgR0xCdWZmZXIgYnVm
ZmVyOworICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisgICAgZ2xC
dWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgYnVmZmVyU2l6ZSwgdmVydGV4RGF0YS5kYXRhKCks
IEdMX1NUQVRJQ19EUkFXKTsKKworICAgIHZlcnRleERhdGEucmVzaXplKG51bVZlcnRpY2VzKTsK
KworICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0gUiIoI3ZlcnNpb24gMzEwIGVzCitpbiB2ZWM0
IHBvczsKK2luIHZlYzIgY29sb3I7CitvdXQgdmVjMiB2Y29sb3I7Cit2b2lkIG1haW4oKQorewor
ICAgIHZjb2xvciA9IGNvbG9yOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgoKHBvcy54ICsgMC41
KSAvIDY0LjApIC0gMS4wLCAoKHBvcy55ICsgMC41KSAvIDY0LjApIC0gMS4wLCAwLCAxKTsKKyAg
ICBnbF9Qb2ludFNpemUgPSAxLjA7Cit9KSI7CisKKyAgICBjb25zdGV4cHIgY2hhciBrRlNbXSA9
IFIiKCN2ZXJzaW9uIDMxMCBlcworcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CitpbiB2ZWMyIHZj
b2xvcjsKK291dCB2ZWM0IGZjb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgZmNvbG9yID0gdmVj
NCh2Y29sb3IsIDAuMCwgMS4wKTsKK30pIjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3Jh
bSwga1ZTLCBrRlMpOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEdMaW50IHBv
c0xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgInBvcyIpOworICAgIEFTU0VSVF9O
RSgtMSwgcG9zTG9jKTsKKyAgICBHTGludCBjb2xvckxvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24o
cHJvZ3JhbSwgImNvbG9yIik7CisgICAgQVNTRVJUX05FKC0xLCBjb2xvckxvYyk7CisKKyAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIocG9zTG9jLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0UsIHN0cmlk
ZSwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NMb2MpOworICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvYywgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCBz
dHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
ICo+KGtDb2xvck9mZnNldCkpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JM
b2MpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgbnVtVmVydGljZXMpOworCisg
ICAgLy8gVmFsaWRhdGUgcGl4ZWxzLgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGFjdHVhbENv
bG9ycyhnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIGdsUmVhZFBp
eGVscygwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgYWN0dWFsQ29sb3JzLmRhdGEoKSk7
CisKKyAgICBhY3R1YWxDb2xvcnMucmVzaXplKG51bVZlcnRpY2VzKTsKKworICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUShleHBlY3RlZENvbG9ycywgYWN0dWFsQ29sb3Jz
KTsKK30KKwogLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcu
IHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCiAvLyB0ZXN0
cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCiAvLyBEM0QxMSBGZWF0dXJlIExldmVsIDlfMyB1c2Vz
IGRpZmZlcmVudCBEM0QgZm9ybWF0cyBmb3IgdmVydGV4IGF0dHJpYnMgY29tcGFyZWQgdG8gRmVh
dHVyZSBMZXZlbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9WdWxrYW5FeHRlcm5hbEltYWdlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVnVsa2FuRXh0ZXJuYWxJbWFnZVRlc3QuY3BwCmlu
ZGV4IDE4OTI2Y2FmYTBmYzVjODYwNjIzNDdiMjBiZGY5MTcxMGM1OTIzYTYuLmE2OTMzOGFkMzRi
OTIxMzQ4M2UzYzk0NjkwOGY0N2UzMDI4MDU3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9WdWxrYW5FeHRlcm5hbEltYWdlVGVzdC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Z1bGthbkV4
dGVybmFsSW1hZ2VUZXN0LmNwcApAQCAtMzgsNiArMzgsMzMgQEAgVmtGb3JtYXQgQ2hvb3NlQW55
SW1hZ2VGb3JtYXQoY29uc3QgVnVsa2FuRXh0ZXJuYWxIZWxwZXIgJmhlbHBlcikKICAgICByZXR1
cm4gVktfRk9STUFUX1VOREVGSU5FRDsKIH0KIAorLy8gTGlzdCBvZiBWa0Zvcm1hdC9pbnRlcm5h
bGZvcm1hdCBjb21iaW5hdGlvbnMgQ2hyb21lIHVzZXMuCisvLyBUaGlzIGlzIGNvbXBpbGVkIGZy
b20gdGhlIG1hcHMgaW4KKy8vIGNvbXBvbmVudHMvdml6L2NvbW1vbi9yZXNvdXJjZXMvcmVzb3Vy
Y2VfZm9ybWF0X3V0aWxzLmNjLgorY29uc3Qgc3RydWN0IEltYWdlRm9ybWF0UGFpcgoreworICAg
IFZrRm9ybWF0IHZrRm9ybWF0OworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdDsKKyAgICBjb25z
dCBjaGFyICpyZXF1aXJlZEV4dGVuc2lvbjsKK30ga0Nocm9tZUZvcm1hdHNbXSA9IHsKKyAgICB7
VktfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCBHTF9SR0JBOF9PRVN9LCAgICAgICAgICAgICAgICAg
ICAgLy8gUkdCQV84ODg4CisgICAge1ZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgR0xfQkdSQThf
RVhUfSwgICAgICAgICAgICAgICAgICAgIC8vIEJHUkFfODg4OAorICAgIHtWS19GT1JNQVRfUjRH
NEI0QTRfVU5PUk1fUEFDSzE2LCBHTF9SR0JBNH0sICAgICAgICAgICAgICAgICAvLyBSR0JBXzQ0
NDQKKyAgICB7VktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQsIEdMX1JHQkExNkZfRVhUfSwg
ICAgICAgICAgICAgLy8gUkdCQV9GMTYKKyAgICB7VktfRk9STUFUX1I4X1VOT1JNLCBHTF9SOF9F
WFR9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkVEXzgKKyAgICB7VktfRk9STUFU
X1I1RzZCNV9VTk9STV9QQUNLMTYsIEdMX1JHQjU2NX0sICAgICAgICAgICAgICAgICAgLy8gUkdC
XzU2NQorICAgIHtWS19GT1JNQVRfUjE2X1VOT1JNLCBHTF9SMTZfRVhULCAiR0xfRVhUX3RleHR1
cmVfbm9ybTE2In0sICAvLyBSMTZfRVhUCisgICAge1ZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9VTk9S
TV9QQUNLMzIsIEdMX1JHQjEwX0EyX0VYVH0sICAgICAgIC8vIFJHQkFfMTAxMDEwMgorICAgIHtW
S19GT1JNQVRfUjhfVU5PUk0sIEdMX0FMUEhBOF9FWFR9LCAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBTFBIQV84CisgICAge1ZLX0ZPUk1BVF9SOF9VTk9STSwgR0xfTFVNSU5BTkNFOF9FWFR9
LCAgICAgICAgICAgICAgICAgICAgIC8vIExVTUlOQU5DRV84CisgICAge1ZLX0ZPUk1BVF9SOEc4
X1VOT1JNLCBHTF9SRzhfRVhUfSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJHXzg4CisK
KyAgICAvLyBUT0RPKHNwYW5nKTogQ2hyb21lIGNvdWxkIHVzZSBHTF9SR0JBOF9PRVMgaGVyZSBp
ZiB3ZSBjYW4gc29sdmUgYSBjb3VwbGUKKyAgICAvLyBvZiB2YWxpZGF0aW9uIGNvbWZvcm1hbmNl
IGlzc3VlcyAoc2VlIGNyYnVnLmNvbS8xMDU4NTIxKS4gT3IsIHdlIGNhbiBhZGQKKyAgICAvLyBh
IG5ldyBpbnRlcm5hbGZvcm1hdCB0aGF0J3MgdW5hbWJpZ3VvdXNseSBSOEc4QjhYOCBpbiBBTkdM
RSBhbmQgdXNlIHRoYXQuCisgICAge1ZLX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgR0xfUkdCOF9P
RVN9LCAgLy8gUkdCWF84ODg4Cit9OworCiB9ICAvLyBuYW1lc3BhY2UKIAogY2xhc3MgVnVsa2Fu
RXh0ZXJuYWxJbWFnZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CkBAIC04NCw2ICsxMTEsMTMgQEAg
VEVTVF9QKFZ1bGthbkV4dGVybmFsSW1hZ2VUZXN0LCBTaG91bGRJbXBvcnRNZW1vcnlPcGFxdWVG
ZCkKICAgICB7CiAgICAgICAgIEdMTWVtb3J5T2JqZWN0IG1lbW9yeU9iamVjdDsKICAgICAgICAg
Z2xJbXBvcnRNZW1vcnlGZEVYVChtZW1vcnlPYmplY3QsIGRldmljZU1lbW9yeVNpemUsIEdMX0hB
TkRMRV9UWVBFX09QQVFVRV9GRF9FWFQsIGZkKTsKKworICAgICAgICAvLyBUZXN0IHRoYXQgYWZ0
ZXIgY2FsbGluZyBnbEltcG9ydE1lbW9yeUZkRVhULCB0aGUgcGFyYW1ldGVycyBvZiB0aGUgbWVt
b3J5IG9iamVjdCBjYW5ub3QKKyAgICAgICAgLy8gYmUgY2hhbmdlZAorICAgICAgICBHTGludCBk
ZWRpY2F0ZWRNZW1vcnkgPSBHTF9UUlVFOworICAgICAgICBnbE1lbW9yeU9iamVjdFBhcmFtZXRl
cml2RVhUKG1lbW9yeU9iamVjdCwgR0xfREVESUNBVEVEX01FTU9SWV9PQkpFQ1RfRVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZWRpY2F0ZWRNZW1vcnkpOworICAg
ICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgIH0KIAogICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwpAQCAtMTc1LDYgKzIwOSwxNjYgQEAgVEVTVF9QKFZ1bGth
bkV4dGVybmFsSW1hZ2VUZXN0LCBTaG91bGRDbGVhck9wYXF1ZUZkUkdCQTgpCiAgICAgdmtGcmVl
TWVtb3J5KGhlbHBlci5nZXREZXZpY2UoKSwgZGV2aWNlTWVtb3J5LCBudWxscHRyKTsKIH0KIAor
Ly8gVGVzdCBjcmVhdGluZyBhbmQgY2xlYXJpbmcgYSBzaW1wbGUgUkdCQTggdGV4dHVyZSBpbiBh
IHppcmNvbiB2bW8uCitURVNUX1AoVnVsa2FuRXh0ZXJuYWxJbWFnZVRlc3QsIFNob3VsZENsZWFy
WmlyY29uVm1vUkdCQTgpCit7CisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS80MjI5CisgICAg
QU5HTEVfU0tJUF9URVNUX0lGKElzVnVsa2FuKCkpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRigh
RW5zdXJlR0xFeHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEi
KSk7CisKKyAgICBWdWxrYW5FeHRlcm5hbEhlbHBlciBoZWxwZXI7CisgICAgaGVscGVyLmluaXRp
YWxpemUoKTsKKworICAgIFZrRm9ybWF0IGZvcm1hdCA9IFZLX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoCisgICAgICAgICFoZWxwZXIuY2FuQ3JlYXRlSW1h
Z2VaaXJjb25WbW8oZm9ybWF0LCBWS19JTUFHRV9UWVBFXzJELCBWS19JTUFHRV9USUxJTkdfT1BU
SU1BTCkpOworCisgICAgVmtJbWFnZSBpbWFnZSAgICAgICAgICAgICAgICAgPSBWS19OVUxMX0hB
TkRMRTsKKyAgICBWa0RldmljZU1lbW9yeSBkZXZpY2VNZW1vcnkgICA9IFZLX05VTExfSEFORExF
OworICAgIFZrRGV2aWNlU2l6ZSBkZXZpY2VNZW1vcnlTaXplID0gMDsKKworICAgIFZrRXh0ZW50
M0QgZXh0ZW50ID0gezEsIDEsIDF9OworICAgIFZrUmVzdWx0IHJlc3VsdCA9CisgICAgICAgIGhl
bHBlci5jcmVhdGVJbWFnZTJEWmlyY29uVm1vKGZvcm1hdCwgZXh0ZW50LCAmaW1hZ2UsICZkZXZp
Y2VNZW1vcnksICZkZXZpY2VNZW1vcnlTaXplKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBWS19T
VUNDRVNTKTsKKworICAgIHp4X2hhbmRsZV90IHZtbyA9IFpYX0hBTkRMRV9JTlZBTElEOworICAg
IHJlc3VsdCAgICAgICAgICA9IGhlbHBlci5leHBvcnRNZW1vcnlaaXJjb25WbW8oZGV2aWNlTWVt
b3J5LCAmdm1vKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBWS19TVUNDRVNTKTsKKyAgICBFWFBF
Q1RfTkUodm1vLCBaWF9IQU5ETEVfSU5WQUxJRCk7CisKKyAgICB7CisgICAgICAgIEdMTWVtb3J5
T2JqZWN0IG1lbW9yeU9iamVjdDsKKyAgICAgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVB
TkdMRShtZW1vcnlPYmplY3QsIGRldmljZU1lbW9yeVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfSEFORExFX1RZUEVfWklSQ09OX1ZNT19BTkdMRSwgdm1v
KTsKKworICAgICAgICBHTFRleHR1cmUgdGV4dHVyZTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICAgICAgZ2xUZXhTdG9yYWdlTWVtMkRFWFQoR0xf
VEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDEsIDEsIG1lbW9yeU9iamVjdCwgMCk7CisKKyAgICAg
ICAgR0xGcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcjsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IHRleHR1cmUsIDApOworCisgICAgICAgIGdsQ2xlYXJDb2xvcigwLjVmLCAwLjVmLCAwLjVmLCAw
LjVmKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICAgICBF
WFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEuMCk7CisgICAgfQor
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICB2a0Rlc3Ryb3lJbWFnZShoZWxwZXIu
Z2V0RGV2aWNlKCksIGltYWdlLCBudWxscHRyKTsKKyAgICB2a0ZyZWVNZW1vcnkoaGVscGVyLmdl
dERldmljZSgpLCBkZXZpY2VNZW1vcnksIG51bGxwdHIpOworfQorCisvLyBUZXN0IGFsbCBmb3Jt
YXQgY29tYmluYXRpb25zIHVzZWQgYnkgQ2hyb21lIGltcG9ydCBzdWNjZXNzZnVsbHkgKG9wYXF1
ZSBmZCkuCitURVNUX1AoVnVsa2FuRXh0ZXJuYWxJbWFnZVRlc3QsIFRleHR1cmVGb3JtYXRDb21w
YXRDaHJvbWl1bUZkKQoreworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJlR0xFeHRlbnNp
b25FbmFibGVkKCJHTF9FWFRfbWVtb3J5X29iamVjdF9mZCIpKTsKKyAgICAvLyBodHRwOi8vYW5n
bGVidWcuY29tLzQwOTIKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoaXNTd2lmdHNoYWRlcigpKTsK
KworICAgIFZ1bGthbkV4dGVybmFsSGVscGVyIGhlbHBlcjsKKyAgICBoZWxwZXIuaW5pdGlhbGl6
ZSgpOworICAgIGZvciAoY29uc3QgSW1hZ2VGb3JtYXRQYWlyICZmb3JtYXQgOiBrQ2hyb21lRm9y
bWF0cykKKyAgICB7CisgICAgICAgIGlmICghaGVscGVyLmNhbkNyZWF0ZUltYWdlT3BhcXVlRmQo
Zm9ybWF0LnZrRm9ybWF0LCBWS19JTUFHRV9UWVBFXzJELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZLX0lNQUdFX1RJTElOR19PUFRJTUFMKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9ybWF0
LnJlcXVpcmVkRXh0ZW5zaW9uICYmICFJc0dMRXh0ZW5zaW9uRW5hYmxlZChmb3JtYXQucmVxdWly
ZWRFeHRlbnNpb24pKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIFZrSW1hZ2UgaW1hZ2UgICAgICAgICAgICAgICAgID0gVktfTlVMTF9IQU5E
TEU7CisgICAgICAgIFZrRGV2aWNlTWVtb3J5IGRldmljZU1lbW9yeSAgID0gVktfTlVMTF9IQU5E
TEU7CisgICAgICAgIFZrRGV2aWNlU2l6ZSBkZXZpY2VNZW1vcnlTaXplID0gMDsKKworICAgICAg
ICBWa0V4dGVudDNEIGV4dGVudCA9IHsxMTMsIDIxMSwgMX07CisgICAgICAgIFZrUmVzdWx0IHJl
c3VsdCAgID0gaGVscGVyLmNyZWF0ZUltYWdlMkRPcGFxdWVGZChmb3JtYXQudmtGb3JtYXQsIGV4
dGVudCwgJmltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZkZXZpY2VNZW1vcnksICZkZXZpY2VNZW1vcnlTaXplKTsKKyAgICAgICAg
RVhQRUNUX0VRKHJlc3VsdCwgVktfU1VDQ0VTUyk7CisKKyAgICAgICAgaW50IGZkID0ga0ludmFs
aWRGZDsKKyAgICAgICAgcmVzdWx0ID0gaGVscGVyLmV4cG9ydE1lbW9yeU9wYXF1ZUZkKGRldmlj
ZU1lbW9yeSwgJmZkKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3VsdCwgVktfU1VDQ0VTUyk7Cisg
ICAgICAgIEVYUEVDVF9ORShmZCwga0ludmFsaWRGZCk7CisKKyAgICAgICAgeworICAgICAgICAg
ICAgR0xNZW1vcnlPYmplY3QgbWVtb3J5T2JqZWN0OworICAgICAgICAgICAgZ2xJbXBvcnRNZW1v
cnlGZEVYVChtZW1vcnlPYmplY3QsIGRldmljZU1lbW9yeVNpemUsIEdMX0hBTkRMRV9UWVBFX09Q
QVFVRV9GRF9FWFQsIGZkKTsKKworICAgICAgICAgICAgR0xUZXh0dXJlIHRleHR1cmU7CisgICAg
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAg
ICAgZ2xUZXhTdG9yYWdlTWVtMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LmludGVybmFs
Rm9ybWF0LCBleHRlbnQud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHRlbnQuaGVpZ2h0LCBtZW1vcnlPYmplY3QsIDApOworICAgICAgICB9CisKKyAgICAgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAgdmtEZXN0cm95SW1hZ2UoaGVscGVyLmdldERl
dmljZSgpLCBpbWFnZSwgbnVsbHB0cik7CisgICAgICAgIHZrRnJlZU1lbW9yeShoZWxwZXIuZ2V0
RGV2aWNlKCksIGRldmljZU1lbW9yeSwgbnVsbHB0cik7CisgICAgfQorfQorCisvLyBUZXN0IGFs
bCBmb3JtYXQgY29tYmluYXRpb25zIHVzZWQgYnkgQ2hyb21lIGltcG9ydCBzdWNjZXNzZnVsbHkg
KGZ1Y2hzaWEpLgorVEVTVF9QKFZ1bGthbkV4dGVybmFsSW1hZ2VUZXN0LCBUZXh0dXJlRm9ybWF0
Q29tcGF0Q2hyb21pdW1aaXJjb25IYW5kbGUpCit7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFF
bnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSIp
KTsKKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQwOTIKKyAgICBBTkdMRV9TS0lQX1RFU1Rf
SUYoaXNTd2lmdHNoYWRlcigpKTsKKworICAgIFZ1bGthbkV4dGVybmFsSGVscGVyIGhlbHBlcjsK
KyAgICBoZWxwZXIuaW5pdGlhbGl6ZSgpOworICAgIGZvciAoY29uc3QgSW1hZ2VGb3JtYXRQYWly
ICZmb3JtYXQgOiBrQ2hyb21lRm9ybWF0cykKKyAgICB7CisgICAgICAgIGlmICghaGVscGVyLmNh
bkNyZWF0ZUltYWdlWmlyY29uVm1vKGZvcm1hdC52a0Zvcm1hdCwgVktfSU1BR0VfVFlQRV8yRCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfSU1BR0VfVElM
SU5HX09QVElNQUwpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChmb3JtYXQucmVxdWlyZWRFeHRlbnNpb24gJiYgIUlzR0xFeHRlbnNp
b25FbmFibGVkKGZvcm1hdC5yZXF1aXJlZEV4dGVuc2lvbikpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgVmtJbWFnZSBpbWFnZSAgICAgICAg
ICAgICAgICAgPSBWS19OVUxMX0hBTkRMRTsKKyAgICAgICAgVmtEZXZpY2VNZW1vcnkgZGV2aWNl
TWVtb3J5ICAgPSBWS19OVUxMX0hBTkRMRTsKKyAgICAgICAgVmtEZXZpY2VTaXplIGRldmljZU1l
bW9yeVNpemUgPSAwOworCisgICAgICAgIFZrRXh0ZW50M0QgZXh0ZW50ID0gezExMywgMjExLCAx
fTsKKyAgICAgICAgVmtSZXN1bHQgcmVzdWx0ICAgPSBoZWxwZXIuY3JlYXRlSW1hZ2UyRFppcmNv
blZtbyhmb3JtYXQudmtGb3JtYXQsIGV4dGVudCwgJmltYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGV2aWNlTWVtb3J5LCAmZGV2
aWNlTWVtb3J5U2l6ZSk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQsIFZLX1NVQ0NFU1MpOwor
CisgICAgICAgIHp4X2hhbmRsZV90IHZtbyA9IFpYX0hBTkRMRV9JTlZBTElEOworICAgICAgICBy
ZXN1bHQgICAgICAgICAgPSBoZWxwZXIuZXhwb3J0TWVtb3J5WmlyY29uVm1vKGRldmljZU1lbW9y
eSwgJnZtbyk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQsIFZLX1NVQ0NFU1MpOworICAgICAg
ICBFWFBFQ1RfTkUodm1vLCBaWF9IQU5ETEVfSU5WQUxJRCk7CisKKyAgICAgICAgeworICAgICAg
ICAgICAgR0xNZW1vcnlPYmplY3QgbWVtb3J5T2JqZWN0OworICAgICAgICAgICAgZ2xJbXBvcnRN
ZW1vcnlaaXJjb25IYW5kbGVBTkdMRShtZW1vcnlPYmplY3QsIGRldmljZU1lbW9yeVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0hBTkRMRV9UWVBF
X1pJUkNPTl9WTU9fQU5HTEUsIHZtbyk7CisKKyAgICAgICAgICAgIEdMVGV4dHVyZSB0ZXh0dXJl
OworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAg
ICAgICAgICAgIGdsVGV4U3RvcmFnZU1lbTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGZvcm1hdC5p
bnRlcm5hbEZvcm1hdCwgZXh0ZW50LndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0ZW50LmhlaWdodCwgbWVtb3J5T2JqZWN0LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIHZrRGVzdHJveUltYWdlKGhlbHBl
ci5nZXREZXZpY2UoKSwgaW1hZ2UsIG51bGxwdHIpOworICAgICAgICB2a0ZyZWVNZW1vcnkoaGVs
cGVyLmdldERldmljZSgpLCBkZXZpY2VNZW1vcnksIG51bGxwdHIpOworICAgIH0KK30KKwogLy8g
VXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRl
cmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCiAvLyB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCiBBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMl9BTkRfRVMzKFZ1bGthbkV4
dGVybmFsSW1hZ2VUZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNw
cAppbmRleCAzOTk3M2E5NWZiYzEyZDQ1MzM5Y2U4ZjlmZjYxYTA2ZWU3NmU2YmQwLi5mZDI2NWU1
NTY5YTk4MzViYTc2YjgzMmUxMjIxNWQ0OGJiNmIxMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvV2ViR0xDb21wYXRpYmlsaXR5VGVzdC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dlYkdM
Q29tcGF0aWJpbGl0eVRlc3QuY3BwCkBAIC0yMTUsMTggKzIxNSwxOSBAQCB2b2lkIG1haW4oKQog
ICAgICAgICAgICAgMCwgMCwgR0xDb2xvcjMyRihmbG9hdERhdGFbMF0sIGZsb2F0RGF0YVsxXSwg
ZmxvYXREYXRhWzJdLCBmbG9hdERhdGFbM10pLCAxLjBmKTsKICAgICB9CiAKLSAgICB2b2lkIFRl
c3RFeHRGbG9hdEJsZW5kKGJvb2wgc2hvdWxkQmxlbmQpCisgICAgdm9pZCBUZXN0RXh0RmxvYXRC
bGVuZChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSB0eXBlLCBib29sIHNob3VsZEJsZW5k
KQogICAgIHsKICAgICAgICAgY29uc3RleHByIGNoYXIga1ZTW10gPQogICAgICAgICAgICAgUiIo
dm9pZCBtYWluKCkKIHsKKyAgICBnbF9Qb2ludFNpemUgPSAxLjA7CiAgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KDAsIDAsIDAsIDEpOwogfSkiOwogCiAgICAgICAgIGNvbnN0ZXhwciBjaGFyIGtGU1td
ID0KICAgICAgICAgICAgIFIiKHZvaWQgbWFpbigpCiB7Ci0gICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgwLCAxLCAwLCAxKTsKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuNSwgMCwgMCwgMCk7CiB9
KSI7CiAKICAgICAgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBrVlMsIGtGUyk7CkBAIC0y
MzQsNyArMjM1LDcgQEAgdm9pZCBtYWluKCkKIAogICAgICAgICBHTFRleHR1cmUgdGV4dHVyZTsK
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICAgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEzMkYsIDEsIDEsIDAsIEdMX1JH
QkEsIEdMX0ZMT0FULCBudWxscHRyKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIGludGVybmFsRm9ybWF0LCAxLCAxLCAwLCBHTF9SR0JBLCB0eXBlLCBudWxscHRyKTsK
ICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CiAKICAgICAgICAgR0xGcmFtZWJ1ZmZlciBm
Ym87CkBAIC0yNDIsMjAgKzI0MywzNyBAQCB2b2lkIG1haW4oKQogICAgICAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZSwgMCk7CiAgICAgICAgIEFTU0VSVF9FR0xFTlVNX0VRKEdMX0ZSQU1F
QlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIp
KTsKIAorICAgICAgICBnbENsZWFyQ29sb3IoMSwgMCwgMSwgMSk7CisgICAgICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUjMyRl9ORUFS
KDAsIDAsIEdMQ29sb3IzMkYoMSwgMCwgMSwgMSksIDAuMDAxZik7CisKICAgICAgICAgZ2xEaXNh
YmxlKEdMX0JMRU5EKTsKICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CiAg
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwogCiAgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5E
KTsKKyAgICAgICAgZ2xCbGVuZEZ1bmMoR0xfQ09OU1RBTlRfQ09MT1IsIEdMX1pFUk8pOworICAg
ICAgICBnbEJsZW5kQ29sb3IoMTAsIDEsIDEsIDEpOworICAgICAgICBnbFZpZXdwb3J0KDAsIDAs
IDEsIDEpOwogICAgICAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKLSAgICAgICAg
aWYgKHNob3VsZEJsZW5kKQorICAgICAgICBpZiAoIXNob3VsZEJsZW5kKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgZWxzZQorICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgICAg
ICBpZiAoIUlzT3BlbkdMRVMoKSkKICAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgICAgIC8vIEdMRVMgdGVzdCBtYWNo
aW5lcyB3aWxsIG5lZWQgYSB3b3JrYXJvdW5kLgorICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0NP
TE9SMzJGX05FQVIoMCwgMCwgR0xDb2xvcjMyRig1LCAwLCAwLCAwKSwgMC4wMDFmKTsKICAgICAg
ICAgfQorCisgICAgICAgIC8vIENoZWNrIHN1cmUgdGhhdCBub24tZmxvYXQgYXR0YWNobWVudHMg
Y2xhbXAgQkxFTkRfQ09MT1IuCisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
KyAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisKKyAgICAgICAgRVhQRUNU
X1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xvcigweDgwLCAwLCAwLCAwKSwgMSk7CiAgICAg
fQogCiAgICAgdm9pZCBUZXN0RGlmZmVyZW50U3RlbmNpbE1hc2tBbmRSZWYoR0xlbnVtIGVycklm
TWlzbWF0Y2gpOwpAQCAtMTkxOCw2ICsxOTM2LDk2IEBAIFRFU1RfUChXZWJHTENvbXBhdGliaWxp
dHlUZXN0LCBCbGVuZFdpdGhDb25zdGFudENvbG9yKQogICAgICAgICAgICAgQ2hlY2tCbGVuZEZ1
bmN0aW9ucyhzcmMsIGRzdCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhl
IHNhbWUgc2VtYW50aWNzIGZvciBpbmRleGVkIGJsZW5kRnVuYworICAgIGlmIChJc0dMRXh0ZW5z
aW9uUmVxdWVzdGFibGUoIkdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCIpKQorICAgIHsKKyAg
ICAgICAgZ2xSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhl
ZCIpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
SXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCIpKTsKKwor
ICAgICAgICBmb3IgKEdMZW51bSBzcmMgOiBzcmNGdW5jKQorICAgICAgICB7CisgICAgICAgICAg
ICBmb3IgKEdMZW51bSBkc3QgOiBkc3RGdW5jKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGdsQmxlbmRGdW5jaU9FUygwLCBzcmMsIGRzdCk7CisgICAgICAgICAgICAgICAgQ2hlY2tC
bGVuZEZ1bmN0aW9ucyhzcmMsIGRzdCk7CisgICAgICAgICAgICAgICAgZ2xCbGVuZEZ1bmNTZXBh
cmF0ZWlPRVMoMCwgc3JjLCBkc3QsIEdMX09ORSwgR0xfT05FKTsKKyAgICAgICAgICAgICAgICBD
aGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8gVGVzdCBkcmF3IHN0YXRlIHZhbGlkYXRpb24gYW5kIGludmFsaWRhdGlv
biB3cnQgaW5kZXhlZCBibGVuZEZ1bmMuCitURVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5VGVzdCwg
SW5kZXhlZEJsZW5kV2l0aENvbnN0YW50Q29sb3JJbnZhbGlkYXRpb24pCit7CisgICAgQU5HTEVf
U0tJUF9URVNUX0lGKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyk7CisgICAgQU5HTEVfU0tJ
UF9URVNUX0lGKCFJc0dMRXh0ZW5zaW9uUmVxdWVzdGFibGUoIkdMX09FU19kcmF3X2J1ZmZlcnNf
aW5kZXhlZCIpKTsKKworICAgIGdsUmVxdWVzdEV4dGVuc2lvbkFOR0xFKCJHTF9PRVNfZHJhd19i
dWZmZXJzX2luZGV4ZWQiKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1Rf
VFJVRShJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIikp
OworCisgICAgY29uc3RleHByIGNoYXIga1ZTW10gPQorICAgICAgICBSIigjdmVyc2lvbiAzMDAg
ZXMKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9pbnRTaXplID0gMS4wOworICAgIGdsX1Bvc2l0
aW9uID0gdmVjNCgwLCAwLCAwLCAxKTsKK30pIjsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtGU1td
ID0KKyAgICAgICAgUiIoI3ZlcnNpb24gMzAwIGVzCitwcmVjaXNpb24gbG93cCBmbG9hdDsKK2xh
eW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IG9fY29sb3IwOworbGF5b3V0KGxvY2F0aW9uID0g
MSkgb3V0IHZlYzQgb19jb2xvcjE7Cit2b2lkIG1haW4oKQoreworICAgIG9fY29sb3IwID0gdmVj
NCgxLCAwLCAwLCAxKTsKKyAgICBvX2NvbG9yMSA9IHZlYzQoMCwgMSwgMCwgMSk7Cit9KSI7CisK
KyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGtWUywga0ZTKTsKKyAgICBnbFVzZVByb2dy
YW0ocHJvZ3JhbSk7CisKKyAgICBnbERpc2FibGUoR0xfQkxFTkQpOworICAgIGdsRW5hYmxlaU9F
UyhHTF9CTEVORCwgMCk7CisgICAgZ2xFbmFibGVpT0VTKEdMX0JMRU5ELCAxKTsKKworICAgIEdM
VGV4dHVyZSB0ZXh0dXJlMTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1
cmUxKTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBHTFRleHR1cmUgdGV4dHVyZTI7CisgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCB0ZXh0dXJlMik7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgR0xGcmFtZWJ1ZmZlciBmYm87Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIHRleHR1cmUxLCAwKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTIs
IDApOworICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOworCisgICAgR0xlbnVtIGRyYXdi
dWZmZXJzW10gPSB7R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX0NPTE9SX0FUVEFDSE1FTlQxfTsK
KyAgICBnbERyYXdCdWZmZXJzKDIsIGRyYXdidWZmZXJzKTsKKworICAgIGdsRHJhd0FycmF5cyhH
TF9QT0lOVFMsIDAsIDEpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gRm9y
Y2UtaW52YWxpZGF0ZSBkcmF3IGNhbGwKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUygwLCBH
TF9DT05TVEFOVF9DT0xPUiwgR0xfQ09OU1RBTlRfQ09MT1IsIEdMX0NPTlNUQU5UX0FMUEhBLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlNUQU5UX0FMUEhBKTsKKyAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTKDEsIEdMX0NP
TlNUQU5UX0FMUEhBLCBHTF9DT05TVEFOVF9BTFBIQSwgR0xfQ09OU1RBTlRfQ09MT1IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OU1RBTlRfQ09MT1IpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAogLy8gVGVzdCB0aGF0
IGJpbmRpbmcvcXVlcnlpbmcgdW5pZm9ybXMgYW5kIGF0dHJpYnV0ZXMgd2l0aCBpbnZhbGlkIG5h
bWVzIGdlbmVyYXRlcyBlcnJvcnMKQEAgLTMxMzMsMjcgKzMyNDEsODEgQEAgdm9pZCBtYWluKCkK
ICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKIH0KIAorc3RhdGljIHZvaWQgVGVzdEJsZW5kQ29s
b3IoY29uc3QgYm9vbCBzaG91bGRDbGFtcCkKK3sKKyAgICBhdXRvIGV4cGVjdGVkID0gR0xDb2xv
cjMyRig1LCAwLCAwLCAwKTsKKyAgICBnbEJsZW5kQ29sb3IoZXhwZWN0ZWQuUiwgZXhwZWN0ZWQu
RywgZXhwZWN0ZWQuQiwgZXhwZWN0ZWQuQSk7CisgICAgaWYgKHNob3VsZENsYW1wKQorICAgIHsK
KyAgICAgICAgZXhwZWN0ZWQuUiA9IDE7CisgICAgfQorCisgICAgZmxvYXQgYXJyWzRdID0ge307
CisgICAgZ2xHZXRGbG9hdHYoR0xfQkxFTkRfQ09MT1IsIGFycik7CisgICAgY29uc3QgYXV0byBh
Y3R1YWwgPSBHTENvbG9yMzJGKGFyclswXSwgYXJyWzFdLCBhcnJbMl0sIGFyclszXSk7CisgICAg
RVhQRUNUX0NPTE9SX05FQVIoZXhwZWN0ZWQsIGFjdHVhbCwgMC4wMDEpOworfQorCiAvLyBUZXN0
IGlmIGJsZW5kaW5nIG9mIGZsb2F0MzIgY29sb3IgYXR0YWNobWVudCBnZW5lcmF0ZXMgR0xfSU5W
QUxJRF9PUEVSQVRJT04gd2hlbgogLy8gR0xfRVhUX2Zsb2F0X2JsZW5kIGlzIG5vdCBlbmFibGVk
CiBURVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5VGVzdCwgRmxvYXRCbGVuZCkKIHsKLSAgICBBTkdM
RV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNpb25SZXF1ZXN0YWJsZSgiR0xfRVhUX2Zsb2F0X2Js
ZW5kIikpOwogICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQogICAgIHsKKyAg
ICAgICAgVGVzdEJsZW5kQ29sb3IoZmFsc2UpOwogICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYo
IUVuc3VyZUdMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKKyAgICAgICAgVGVzdEJsZW5kQ29sb3IodHJ1ZSk7CiAg
ICAgICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJlR0xFeHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfdGV4dHVyZV9mbG9hdCIpKTsKICAgICAgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFFbnN1cmVH
TEV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2NvbG9yX2J1ZmZlcl9mbG9hdF9yZ2JhIikp
OwogICAgIH0KIAotICAgIFRlc3RFeHRGbG9hdEJsZW5kKGZhbHNlKTsKKyAgICBUZXN0QmxlbmRD
b2xvcihmYWxzZSk7CisKKyAgICAvLyAtCiAKLSAgICBnbFJlcXVlc3RFeHRlbnNpb25BTkdMRSgi
R0xfRVhUX2Zsb2F0X2JsZW5kIik7CisgICAgVGVzdEV4dEZsb2F0QmxlbmQoR0xfUkdCQTMyRiwg
R0xfRkxPQVQsIGZhbHNlKTsKKworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJlR0xFeHRl
bnNpb25FbmFibGVkKCJHTF9FWFRfZmxvYXRfYmxlbmQiKSk7CiAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7CiAKLSAgICBUZXN0RXh0RmxvYXRCbGVuZCh0cnVlKTsKKyAgICAvLyBEM0Q5IHN1cHBv
cnRzIGZsb2F0IHJlbmRlcmluZyBleHBsaWNpdGx5LCBzdXBwb3J0cyBibGVuZGluZyBvcGVyYXRp
b25zIGluIHByYWN0aWNlLAorICAgIC8vIGJ1dCBjYW5ub3Qgc3VwcG9ydCBmbG9hdCBibGVuZCBj
b2xvcnMuCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzRDNEOSgpKTsKKworICAgIFRlc3RFeHRG
bG9hdEJsZW5kKEdMX1JHQkEzMkYsIEdMX0ZMT0FULCB0cnVlKTsKK30KKworLy8gVGVzdCB0aGUg
YmxlbmRpbmcgb2YgZmxvYXQxNiBjb2xvciBhdHRhY2htZW50cworVEVTVF9QKFdlYkdMQ29tcGF0
aWJpbGl0eVRlc3QsIEhhbGZGbG9hdEJsZW5kKQoreworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCA9IEdMX1JHQkExNkY7CisgICAgR0xlbnVtIHR5cGUgICAgICAgICAgID0gR0xfRkxPQVQ7Cisg
ICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCisgICAgeworICAgICAgICBUZXN0
QmxlbmRDb2xvcihmYWxzZSk7CisgICAgICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJlR0xF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBUZXN0QmxlbmRDb2xvcih0cnVlKTsKKyAgICAgICAgQU5H
TEVfU0tJUF9URVNUX0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXQiKSk7CisgICAgICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJlR0xFeHRl
bnNpb25FbmFibGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSk7CisgICAgICAg
IGludGVybmFsRm9ybWF0ID0gR0xfUkdCQTsKKyAgICAgICAgdHlwZSAgICAgICAgICAgPSBHTF9I
QUxGX0ZMT0FUX09FUzsKKyAgICB9CisKKyAgICBUZXN0QmxlbmRDb2xvcihmYWxzZSk7CisKKyAg
ICAvLyAtCisKKyAgICAvLyBEM0Q5IHN1cHBvcnRzIGZsb2F0IHJlbmRlcmluZyBleHBsaWNpdGx5
LCBzdXBwb3J0cyBibGVuZGluZyBvcGVyYXRpb25zIGluIHByYWN0aWNlLAorICAgIC8vIGJ1dCBj
YW5ub3Qgc3VwcG9ydCBmbG9hdCBibGVuZCBjb2xvcnMuCisgICAgQU5HTEVfU0tJUF9URVNUX0lG
KElzRDNEOSgpKTsKKworICAgIFRlc3RFeHRGbG9hdEJsZW5kKGludGVybmFsRm9ybWF0LCB0eXBl
LCB0cnVlKTsKIH0KIAogVEVTVF9QKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsIFIxNkZUZXh0dXJl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9nbGVzMS9CYXNpY0RyYXdUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9nbGVzMS9CYXNpY0RyYXdUZXN0LmNwcAppbmRleCA1MDliMjNiYjllM2Mx
ZjVlNTE1NWQzZjZjNTVkYzNlYWFiYjQ1NjhkLi5lZGYyYzBmZDc1YmIyMGEyNWQ4OThhNWIyM2Q5
YTUxZDZhODk0ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvZ2xlczEvQmFzaWNEcmF3VGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL0Jhc2ljRHJhd1Rlc3QuY3BwCkBAIC04
MCw0ICs4MCw3OSBAQCBURVNUX1AoQmFzaWNEcmF3VGVzdCwgRW5hYmxlRGlzYWJsZVRleHR1cmUp
CiAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKIH0KIAor
Ly8gQ2hlY2sgdGhhdCBnbENsZWFyQ29sb3J4LCBnbENsZWFyRGVwdGh4LCBnbExpbmVXaWR0aHgs
IGdsUG9seWdvbk9mZnNldHggY2FuIHdvcmsuCitURVNUX1AoQmFzaWNEcmF3VGVzdCwgRGVwdGhU
ZXN0KQoreworICAgIGdsQ2xlYXJDb2xvcngoMHg0MDAwLCAweDgwMDAsIDB4ODAwMCwgMHg4MDAw
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbENsZWFyRGVwdGh4KDB4ODAwMCk7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAw
LCA2NCwgMTI4LCAxMjgsIDEyOCwgMS4wKTsKKworICAgIC8vIEZhaWwgRGVwdGggVGVzdCBhbmQg
Y2FuJ3QgZHJhdyB0aGUgcmVkIHRyaWFuZ2xlCisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IFBvc2l0
aW9ucyA9IHstMS4wZiwgLTEuMGYsIDEuMGYsIDEuMGYsIC0xLjBmLCAxLjBmLCAwLjBmLCAxLjBm
LCAxLjBmfTsKKyAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKKworICAgIGdsTGluZVdpZHRo
eCgweDEwMDAwKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbFBvbHlnb25PZmZz
ZXR4KDAsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xDb2xvcjRmKDEu
MGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVkVSVEVY
X0FSUkFZKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBnbFZlcnRleFBvaW50ZXIo
MywgR0xfRkxPQVQsIDAsIFBvc2l0aW9ucy5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDY0LCAxMjgsIDEyOCwg
MTI4LCAxLjApOworCisgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpyZWQpOworfQorCisvLyBDaGVjayB0aGF0IGRlcHRoIHJhbmdlIGNhbiBiZSBzZXQg
YnkgZ2xEZXB0aFJhbmdleC4KK1RFU1RfUChCYXNpY0RyYXdUZXN0LCBTZXREZXB0aFJhbmdleCkK
K3sKKyAgICBnbERlcHRoUmFuZ2V4KDB4ODAwMCwgMHgxMDAwMCk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBHTGZpeGVkIGRlcHRoX3JhbmdlWzJdOworICAgIGdsR2V0Rml4ZWR2
KEdMX0RFUFRIX1JBTkdFLCBkZXB0aF9yYW5nZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX0VRKDB4ODAwMCwgZGVwdGhfcmFuZ2VbMF0pOworICAgIEVYUEVDVF9FUSgw
eDEwMDAwLCBkZXB0aF9yYW5nZVsxXSk7Cit9CisKKy8vIENoZWNrIHRoYXQgc2FtcGxlIGNvdmVy
YWdlIHBhcmFtZXRlcnMgY2FuIGJlIHNldCBieSBnbFNhbXBsZUNvdmVyYWdleC4KK1RFU1RfUChC
YXNpY0RyYXdUZXN0LCBTZXRTYW1wbGVDb3ZlcmFnZXgpCit7CisgICAgR0xmaXhlZCBpc1NhbXBs
ZUNvdmVyYWdlOworICAgIEdMZml4ZWQgc2FtcGxlY292ZXJhZ2V2YWx1ZTsKKyAgICBHTGZpeGVk
IHNhbXBsZWNvdmVyYWdlaW52ZXJ0OworCisgICAgZ2xFbmFibGUoR0xfU0FNUExFX0NPVkVSQUdF
KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsR2V0Rml4ZWR2KEdMX1NBTVBM
RV9DT1ZFUkFHRSwgJmlzU2FtcGxlQ292ZXJhZ2UpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OworICAgIEVYUEVDVF9FUSgweDEwMDAwLCBpc1NhbXBsZUNvdmVyYWdlKTsKKworICAgIGdsU2Ft
cGxlQ292ZXJhZ2V4KDB4ODAwMCwgdHJ1ZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBnbEdldEZpeGVkdihHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUsICZzYW1wbGVjb3ZlcmFn
ZXZhbHVlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMHg4MDAw
LCBzYW1wbGVjb3ZlcmFnZXZhbHVlKTsKKworICAgIGdsR2V0Rml4ZWR2KEdMX1NBTVBMRV9DT1ZF
UkFHRV9JTlZFUlQsICZzYW1wbGVjb3ZlcmFnZWludmVydCk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisgICAgRVhQRUNUX0VRKDB4MTAwMDAsIHNhbXBsZWNvdmVyYWdlaW52ZXJ0KTsKK30K
KwogQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzEoQmFzaWNEcmF3VGVzdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvQm9vdEFu
aW1hdGlvblRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL2dsZXMxL0Jvb3RBbmltYXRpb25UZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzllZTIxMmVmMWU3
NWE4MTJiOWNlNjA1OWU3OGZmMDhhODcyZmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL0Jvb3RBbmltYXRpb25UZXN0
LmNwcApAQCAtMCwwICsxLDI1NyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gQm9vdEFuaW1hdGlvblRlc3Qu
Y3BwOiBUZXN0cyB0aGF0IG1ha2UgdGhlIHNhbWUgZ2wgY2FsbHMgYXMgQW5kcm9pZCdzIGJvb3Qg
YW5pbWF0aW9ucworCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2lu
Y2x1ZGUgInV0aWwvdGVzdF91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKKy8v
IE1ha2VzIHRoZSBzYW1lIEdMRVMgMSBjYWxscyBhcyBBbmRyb2lkJ3MgZGVmYXVsdCBib290IGFu
aW1hdGlvbgorLy8gVGhlIG9yaWdpbmFsIGFuaW1hdGlvbiB1c2VzIDIgZGlmZmVyZW50IGltYWdl
cyAtCisvLyBPbmUgaW1hZ2UgYWN0cyBhcyBhIG1hc2sgYW5kIG9uZSB0aGF0IG1vdmVzKGEgZ3Jh
ZGllbnQgdGhhdCBhY3RzIGFzIGEgc2hpbmluZyBsaWdodCkKKy8vIFdlIGRvIHRoZSBzYW1lIGhl
cmUgZXhjZXB0IHdpdGggZGlmZmVyZW50IGltYWdlcyBvZiBtdWNoIHNtYWxsZXIgcmVzb2x1dGlv
bgorLy8gVGhlIHJlc3VsdHMgb2YgZWFjaCBmcmFtZSBvZiB0aGUgYW5pbWF0aW9uIGFyZSBjb21w
YXJlZCBhZ2FpbnN0IGV4cGVjdGVkIHZhbHVlcworLy8gVGhlIG9yaWdpbmFsIHNvdXJjZSBvZiB0
aGUgYm9vdCBhbmltYXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6CisvLyBodHRwczovL2FuZHJvaWQu
Z29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9yZWZzL2hlYWRzL21h
c3Rlci9jbWRzL2Jvb3RhbmltYXRpb24vQm9vdEFuaW1hdGlvbi5jcHAjNDIyCitjbGFzcyBCb290
QW5pbWF0aW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIEJv
b3RBbmltYXRpb25UZXN0KCkKKyAgICB7CisgICAgICAgIHNldFdpbmRvd1dpZHRoKGtXaW5kb3dX
aWR0aCk7CisgICAgICAgIHNldFdpbmRvd0hlaWdodChrV2luZG93SGVpZ2h0KTsKKyAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOworICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OworICAgIH0KKworICAgIHZvaWQgaW5pdFRleHR1cmVXaXRoRGF0YShHTHVpbnQgKnRleHR1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBjaGFubmVscykKKyAgICB7CisgICAgICAgIEdMaW50IGNyb3BbNF0gPSB7MCwgaGVp
Z2h0LCB3aWR0aCwgLWhlaWdodH07CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCB0ZXh0dXJl
KTsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAqdGV4dHVyZSk7CisKKyAg
ICAgICAgc3dpdGNoIChjaGFubmVscykKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIHdp
ZHRoLCBoZWlnaHQsIDAsIEdMX1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfU0hPUlRfNV82XzUsIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCB3aWR0aCwgaGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsVGV4UGFyYW1ldGVyaXYoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTLCBjcm9wKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Cisg
ICAgICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX05FQVJFU1QpOworICAgICAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyeChH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICB9CisKKyAg
ICB2b2lkIHRlc3RTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBFR0xXaW5kb3cgKndp
bmRvdyA9IGdldEVHTFdpbmRvdygpOworICAgICAgICBtRGlzcGxheSAgICAgICAgICA9IHdpbmRv
dy0+Z2V0RGlzcGxheSgpOworICAgICAgICBtU3VyZmFjZSAgICAgICAgICA9IHdpbmRvdy0+Z2V0
U3VyZmFjZSgpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgbWFzayBpcyBhIDQgYnkg
MSB0ZXh0dXJlIGNvbG9yZWQ6CisgICAgICAgICAqIC0tLSAtLS0gLS0tIC0tLQorICAgICAgICAg
KiB8QnwgfEF8IHxCfCB8QXwKKyAgICAgICAgICogLS0tIC0tLSAtLS0gLS0tCisgICAgICAgICAq
IEIgaXMgYmxhY2ssIEEgaXMgYmxhY2sgd2l0aCBhbHBoYSBvZiAweEZGCisgICAgICAgICAqLwor
ICAgICAgICBjb25zdGV4cHIgR0x1Ynl0ZSBrTWFza1tdID0geworICAgICAgICAgICAgMHgwLCAw
eDAsIDB4MCwgMHhmZiwgIC8vIGJsYWNrCisgICAgICAgICAgICAweDAsIDB4MCwgMHgwLCAweDAs
ICAgLy8gdHJhbnNwYXJlbnQgYmxhY2sKKyAgICAgICAgICAgIDB4MCwgMHgwLCAweDAsIDB4ZmYs
ICAvLyBibGFjaworICAgICAgICAgICAgMHgwLCAweDAsIDB4MCwgMHgwICAgIC8vIHRyYW5zcGFy
ZW50IGJsYWNrCisgICAgICAgIH07CisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgc2hpbmUg
aXMgYSA4IGJ5IDEgdGV4dHVyZSBjb2xvcmVkOgorICAgICAgICAgKiAtLS0gLS0tIC0tLSAtLS0g
LS0tIC0tLSAtLS0gLS0tCisgICAgICAgICAqIHxSfCB8UnwgfEd8IHxHfCB8QnwgfEJ8IHxXfCB8
V3wKKyAgICAgICAgICogLS0tIC0tLSAtLS0gLS0tIC0tLSAtLS0gLS0tIC0tLQorICAgICAgICAg
KiBSIGlzIHJlZCwgRyBpcyBncmVlbiwgQiBpcyBibHVlLCBXIGlzIHdoaXRlCisgICAgICAgICAq
LworICAgICAgICBjb25zdGV4cHIgR0x1c2hvcnQga1NoaW5lW10gPSB7MHhGODAwLCAgLy8gMiBy
ZWQgcGl4ZWxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEY4MDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA3RTAsICAvLyAyIGdy
ZWVuIHBpeGVscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwN0Uw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFGLCAgLy8gMiBi
bHVlIHBpeGVscworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDFG
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGLCAgLy8gMiB3
aGl0ZSBwaXhlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZG
Rn07CisKKyAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIGludCBrTWFza0NvbG9yQ2hhbm5lbHMg
ID0gNDsKKyAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIGludCBrU2hpbmVDb2xvckNoYW5uZWxz
ID0gMzsKKworICAgICAgICBpbml0VGV4dHVyZVdpdGhEYXRhKCZtVGV4dHVyZU5hbWVzWzBdLCBr
TWFzaywga01hc2tXaWR0aCwga01hc2tIZWlnaHQsIGtNYXNrQ29sb3JDaGFubmVscyk7CisgICAg
ICAgIGluaXRUZXh0dXJlV2l0aERhdGEoJm1UZXh0dXJlTmFtZXNbMV0sIGtTaGluZSwga1NoaW5l
V2lkdGgsIGtTaGluZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrU2hpbmVD
b2xvckNoYW5uZWxzKTsKKworICAgICAgICAvLyBjbGVhciBzY3JlZW4KKyAgICAgICAgZ2xTaGFk
ZU1vZGVsKEdMX0ZMQVQpOworICAgICAgICBnbERpc2FibGUoR0xfRElUSEVSKTsKKyAgICAgICAg
Z2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7CisgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAxLCAx
LCAxKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgZWds
U3dhcEJ1ZmZlcnMobURpc3BsYXksIG1TdXJmYWNlKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfVEVY
VFVSRV8yRCk7CisgICAgICAgIGdsVGV4RW52eChHTF9URVhUVVJFX0VOViwgR0xfVEVYVFVSRV9F
TlZfTU9ERSwgR0xfUkVQTEFDRSk7CisKKyAgICAgICAgZ2xTY2lzc29yKGtNYXNrQm91bmRhcnlM
ZWZ0LCBrTWFza0JvdW5kYXJ5Qm90dG9tLCBrTWFza1dpZHRoLCBrTWFza0hlaWdodCk7CisKKyAg
ICAgICAgLy8gQmxlbmQgc3RhdGUKKyAgICAgICAgZ2xCbGVuZEZ1bmMoR0xfU1JDX0FMUEhBLCBH
TF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKKyAgICAgICAgZ2xUZXhFbnZ4KEdMX1RFWFRVUkVfRU5W
LCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9SRVBMQUNFKTsKKyAgICB9CisKKyAgICB2b2lkIHRl
c3RUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtVGV4dHVyZU5hbWVzWzBdKTsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1
cmVOYW1lc1sxXSk7CisgICAgfQorCisgICAgdm9pZCBjaGVja01hc2tDb2xvcih1bnNpZ25lZCBp
bnQgaXRlcmF0aW9uQ291bnQsIHVuc2lnbmVkIGludCBtYXNrU2xvdCkKKyAgICB7CisgICAgICAg
IC8vIGtPZmZzZXQgaXMgbmVjZXNzYXJ5IGFzIHRoZSB2aXNpYmxlIHBhcnQgaXMgdGhlIGxlZnQg
bW9zdCBzZWN0aW9uIG9mIHRoZSBzaGluZQorICAgICAgICAvLyBidXQgdGhlbiB3ZSBzaGlmdCB0
aGUgaW1hZ2VzIHJpZ2h0CisgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQga09mZnNldCA9
IDc7CisKKyAgICAgICAgLy8gdGhpcyBzb2x2ZXMgZm9yIHRoZSBjb2xvciBhdCBhbnkgZ2l2ZW4g
cG9zaXRpb24gaW4gb3VyIHNoaW5lIGVxdWl2YWxlbnQKKyAgICAgICAgY29uc3RleHByIHVuc2ln
bmVkIGludCBrUG9zc2libGVDb2xvcnMgPSA0OworICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQg
aW50IGtDb2xvcnNJbkFSb3cgICA9IDI7CisgICAgICAgIHVuc2lnbmVkIGludCBjb2xvciA9Cisg
ICAgICAgICAgICAoKGl0ZXJhdGlvbkNvdW50IC0gbWFza1Nsb3QgKyBrT2Zmc2V0KSAvIGtDb2xv
cnNJbkFSb3cpICUga1Bvc3NpYmxlQ29sb3JzOworICAgICAgICBzd2l0Y2ggKGNvbG9yKQorICAg
ICAgICB7CisgICAgICAgICAgICBjYXNlIDA6ICAvLyB3aGl0ZQorICAgICAgICAgICAgICAgIEVY
UEVDVF9QSVhFTF9FUShrTWFza0JvdW5kYXJ5TGVmdCArIG1hc2tTbG90LCBrTWFza0JvdW5kYXJ5
Qm90dG9tLCAweEZGLCAweEZGLCAweEZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweEZGKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTogIC8v
IGJsdWUKKyAgICAgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoa01hc2tCb3VuZGFyeUxlZnQg
KyBtYXNrU2xvdCwga01hc2tCb3VuZGFyeUJvdHRvbSwgMHgwMCwgMHgwMCwgMHhGRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDI6ICAvLyBncmVlbgorICAgICAgICAgICAgICAgIEVYUEVDVF9Q
SVhFTF9FUShrTWFza0JvdW5kYXJ5TGVmdCArIG1hc2tTbG90LCBrTWFza0JvdW5kYXJ5Qm90dG9t
LCAweDAwLCAweEZGLCAweDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZG
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzogIC8vIHJlZAor
ICAgICAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUShrTWFza0JvdW5kYXJ5TGVmdCArIG1hc2tT
bG90LCBrTWFza0JvdW5kYXJ5Qm90dG9tLCAweEZGLCAweDAwLCAweDAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweEZGKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgY2hlY2tDbGVhckNvbG9yKCkKKyAgICB7CisgICAgICAgIC8v
IEFyZWFzIG91dHNpZGUgb2YgdGhlIDR4MSBtYXNrIGFyZWEgc2hvdWxkIGJlIHRoZSBjbGVhciBj
b2xvciBkdWUgdG8gb3VyIGdsU2Npc3NvciBjYWxsCisgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBpbnQga0ltYWdlSGVpZ2h0ID0gMTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX1JFQ1RfRVEoMCwg
MCwga1dpbmRvd1dpZHRoLCBrTWFza0JvdW5kYXJ5Qm90dG9tLCBHTENvbG9yOjpjeWFuKTsKKyAg
ICAgICAgRVhQRUNUX1BJWEVMX1JFQ1RfRVEoMCwga01hc2tCb3VuZGFyeUJvdHRvbSArIGtJbWFn
ZUhlaWdodCwga1dpbmRvd1dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa1dp
bmRvd0hlaWdodCAtIChrTWFza0JvdW5kYXJ5Qm90dG9tICsga0ltYWdlSGVpZ2h0KSksIEdMQ29s
b3I6OmN5YW4pOworICAgICAgICBFWFBFQ1RfUElYRUxfUkVDVF9FUSgwLCBrTWFza0JvdW5kYXJ5
Qm90dG9tLCBrTWFza0JvdW5kYXJ5TGVmdCwga0ltYWdlSGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTENvbG9yOjpjeWFuKTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX1JFQ1Rf
RVEoa01hc2tCb3VuZGFyeUxlZnQgKyBrTWFza1dpZHRoLCBrTWFza0JvdW5kYXJ5Qm90dG9tLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa1dpbmRvd1dpZHRoIC0gKGtNYXNrQm91bmRh
cnlMZWZ0ICsga01hc2tXaWR0aCkpLCBrSW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMQ29sb3I6OmN5YW4pOworICAgIH0KKworICAgIHZvaWQgdmFsaWRhdGVDb2xv
cnModW5zaWduZWQgaW50IGl0ZXJhdGlvbkNvdW50KQorICAgIHsKKyAgICAgICAgLy8gdmFsaWRh
dGUgYWxsIHNsb3RzIGluIG91ciBtYXNrCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IG1hc2tT
bG90ID0gMDsgbWFza1Nsb3QgPCBrTWFza1dpZHRoOyArK21hc2tTbG90KQorICAgICAgICB7Cisg
ICAgICAgICAgICAvLyBwYXJ0cyB0aGF0IGFyZSBibG9ja2VkIGluIG91ciBtYXNrIGFyZSBibGFj
aworICAgICAgICAgICAgc3dpdGNoIChtYXNrU2xvdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIGtCbGFja01hc2tbMF06CisgICAgICAgICAgICAgICAgY2FzZSBrQmxhY2tN
YXNrWzFdOgorICAgICAgICAgICAgICAgICAgICAvLyBzbG90cyB3aXRoIG5vbiB6ZXJvIGFscGhh
IGFyZSBibGFjaworICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoa01hc2tCb3Vu
ZGFyeUxlZnQgKyBtYXNrU2xvdCwga01hc2tCb3VuZGFyeUJvdHRvbSwgMHgwMCwgMHgwMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAsIDB4RkYpOworICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBjaGVja01hc2tDb2xvcihpdGVyYXRpb25Db3VudCwgbWFza1Nsb3QpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIHZhbGlkYXRlIHN1cnJvdW5kaW5nIHBp
eGVscyBhcmUgZXF1YWwgdG8gY2xlYXIgY29sb3IKKyAgICAgICAgY2hlY2tDbGVhckNvbG9yKCk7
CisgICAgfQorCisgICAgRUdMRGlzcGxheSBtRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOworICAg
IEVHTFN1cmZhY2UgbVN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKKyAgICBHTHVpbnQgbVRleHR1
cmVOYW1lc1syXTsKKyAgICAvLyBUaGlzIGNyZWF0ZXMgYSBrV2luZG93V2lkdGggeCBrV2luZG93
SGVpZ2h0IHdpbmRvdy4KKyAgICAvLyBBIGtNYXNrV2lkdGggYnkga01hc2tIZWlnaHQgcmVjdGFu
Z2xlIGlzIGxpdCB1cCBieSB0aGUgc2hpbmUKKyAgICAvLyBUaGlzIGxpdCB1cCByZWN0YW5nbGUg
aXMgcG9zaXRpb25lZCBhdCAoa01hc2tCb3VuZGFyeUxlZnQsIGtNYXNrQm91bmRhcnlCb3R0b20p
CisgICAgLy8gVGhlIGJvcmRlciBhcm91bmQgdGhlIGFyZWEgaXMgY2xlYXJlZCB0byBHTENvbG9y
OjpjeWFuCisgICAgc3RhdGljIGNvbnN0ZXhwciBHTGludCBrTWFza0JvdW5kYXJ5TGVmdCAgICA9
IDE1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR0xpbnQga01hc2tCb3VuZGFyeUJvdHRvbSAgPSA3
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtNYXNrV2lkdGggICAgPSA0Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtNYXNrSGVpZ2h0ICAgPSAxOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtTaGluZVdpZHRoICAgPSA4OworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtTaGluZUhlaWdodCAgPSAxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtXaW5kb3dIZWlnaHQgPSAxNjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGludCBrV2luZG93V2lkdGggID0gMzI7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBpbnQga0JsYWNrTWFza1syXSA9IHswLCAyfTsKK307CisKK1RFU1Rf
UChCb290QW5pbWF0aW9uVGVzdCwgRGVmYXVsdEJvb3RBbmltYXRpb24pCit7CisgICAgY29uc3Rl
eHByIHVpbnQ2NF90IGtNYXhJdGVyYXRpb25Db3VudCA9IDg7ICAvLyBudW1iZXIgb2YgdGltZXMg
d2Ugc2hpZnQgdGhlIHNoaW5lIHRleHR1cmVzCisgICAgY29uc3RleHByIGludCBrU3RhcnRpbmdT
aGluZVBvc2l0aW9uICA9IGtNYXNrQm91bmRhcnlMZWZ0IC0ga1NoaW5lV2lkdGg7CisgICAgY29u
c3RleHByIGludCBrRW5kaW5nU2hpbmVQb3NpdGlvbiAgICA9IGtNYXNrQm91bmRhcnlMZWZ0Owor
ICAgIEdMaW50IHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBrU3RhcnRpbmdTaGlu
ZVBvc2l0aW9uOworICAgIHVpbnQ2NF90IGl0ZXJhdGlvbkNvdW50ICAgICAgICAgICAgICAgPSAw
OworICAgIGRvCisgICAgeworICAgICAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9URVNUKTsKKyAg
ICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgZ2xFbmFibGUoR0xf
U0NJU1NPUl9URVNUKTsKKyAgICAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKKyAgICAgICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZU5hbWVzWzFdKTsKKyAgICAgICAgZ2xE
cmF3VGV4aU9FUyh4LCBrTWFza0JvdW5kYXJ5Qm90dG9tLCAwLCBrU2hpbmVXaWR0aCwga1NoaW5l
SGVpZ2h0KTsKKyAgICAgICAgZ2xEcmF3VGV4aU9FUyh4ICsga1NoaW5lV2lkdGgsIGtNYXNrQm91
bmRhcnlCb3R0b20sIDAsIGtTaGluZVdpZHRoLCBrU2hpbmVIZWlnaHQpOworICAgICAgICBnbEVu
YWJsZShHTF9CTEVORCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVOYW1lc1swXSk7CisgICAgICAgIGdsRHJhd1RleGlPRVMoa01hc2tCb3VuZGFyeUxlZnQs
IGtNYXNrQm91bmRhcnlCb3R0b20sIDAsIGtNYXNrV2lkdGgsIGtNYXNrSGVpZ2h0KTsKKyAgICAg
ICAgdmFsaWRhdGVDb2xvcnMoaXRlcmF0aW9uQ291bnQpOworICAgICAgICBFR0xCb29sZWFuIHJl
cyA9IGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtU3VyZmFjZSk7CisgICAgICAgIGlmIChyZXMg
PT0gRUdMX0ZBTFNFKQorICAgICAgICB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh4ID09IGtFbmRpbmdTaGluZVBvc2l0aW9uKQorICAgICAgICB7CisgICAg
ICAgICAgICB4ID0ga1N0YXJ0aW5nU2hpbmVQb3NpdGlvbjsKKyAgICAgICAgfQorICAgICAgICAr
K3g7CisgICAgICAgICsraXRlcmF0aW9uQ291bnQ7CisgICAgfSB3aGlsZSAoaXRlcmF0aW9uQ291
bnQgPCBrTWF4SXRlcmF0aW9uQ291bnQpOworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUX0VT
MShCb290QW5pbWF0aW9uVGVzdCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL01h
dHJpeEJ1aWx0aW5zVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvZ2xlczEvTWF0cml4QnVpbHRpbnNUZXN0LmNwcAppbmRleCBhMDM1N2Q3ZGE0NDU2
ZTBkNDQ4OWU4ZTdmMjRiMTU4MmRhMzMxZmQzLi4wNzkzNTViMmRmNDNlNmJlZjk4MDYzMTA2Nzkx
MjM2NjQ4MjVkMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvZ2xlczEvTWF0cml4QnVpbHRpbnNUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvTWF0cml4QnVpbHRpbnNUZXN0
LmNwcApAQCAtMTY1LDEyICsxNjUsMTkgQEAgVEVTVF9QKE1hdHJpeEJ1aWx0aW5zVGVzdCwgT3J0
aG9OZWdhdGl2ZSkKICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAg
Z2xPcnRob2YoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZiwgMS4wZiwgMS4wZik7CiAgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotICAgIGdsT3J0aG9mKDAuMGYsIDEuMGYsIDAu
MGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZB
TFVFKTsKLSAgICBnbE9ydGhvZigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmLCAxLjBmLCAwLjBmKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgZ2xPcnRob2YoMC4w
ZiwgMS4wZiwgMC4wZiwgMS4wZiwgLTEuMGYsIDEuMGYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX1ZBTFVFKTsKK30KKworLy8gVGVzdCB0aGF0IGdsT3J0aG97Znh9IGRvbid0IGlz
c3VlIGVycm9yIHJlc3VsdCBpZiBuZWFyIG9yIGZhciBpcyBuZWdhdGl2ZS4KK1RFU1RfUChNYXRy
aXhCdWlsdGluc1Rlc3QsIE9ydGhvTmVnYXRpdmVOZWFyRmFyKQoreworICAgIGdsT3J0aG9mKC0x
LjBmLCAxLjBmLCAtMS4wZiwgMS4wZiwgLTEuMGYsIDAuMGYpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworICAgIGdsT3J0aG9mKC0xLjBmLCAxLjBmLCAtMS4wZiwgMS4wZiwgMC4wZiwgLTEu
MGYpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIGdsT3J0aG94KC0xLCAxLCAtMSwg
MSwgLTEsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIGdsT3J0aG94KC0xLCAx
LCAtMSwgMSwgMCwgLTEpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwogfQogCiBBTkdMRV9J
TlNUQU5USUFURV9URVNUX0VTMShNYXRyaXhCdWlsdGluc1Rlc3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL1RleHR1cmVQYXJh
bWV0ZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9nbGVzMS9UZXh0dXJlUGFyYW1ldGVyVGVzdC5jcHAKaW5kZXggY2M2NjZmOWM3ZDAzNDU3YWM3
YmJiMWJjYzZhNDAwMDM2ZGUwOTE2My4uOTRmMWJiOGU2NTI4ZjllMWVhNTI1MWY5NDRlNDE5YjA5
MWM0YzdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL2dsZXMxL1RleHR1cmVQYXJhbWV0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvVGV4dHVyZVBhcmFtZXRlclRlc3Qu
Y3BwCkBAIC0xMTEsNCArMTExLDU2IEBAIFRFU1RfUChUZXh0dXJlUGFyYW1ldGVyVGVzdCwgU2V0
KQogICAgIH0KIH0KIAorLy8gTWFrZSBzdXJlIHdlIGRvbid0IGltcHJvcGVybHkgY2FzdCBhbiBp
bnQgaW50byBhIGZsb2F0IGluIEFOR0xFJ3MgaW50ZXJuYWxzCitURVNUX1AoVGV4dHVyZVBhcmFt
ZXRlclRlc3QsIEludENvbnZlcnNpb25zQW5kSW50Qm91bmRzKQoreworICAgIC8vIFRlc3QgaW50
ZWdlcnMgdGhhdCBjYW4ndCBiZSByZXByZXNlbnRlZCBhcyBmbG9hdHMsIElOVF9NSU4sIGFuZCBJ
TlRfTUFYCisgICAgY29uc3RleHByIEdMaW50IGtGaXJzdEludFRoYXRDYW5ub3RCZUZsb2F0ICAg
ICAgICAgPSAxNjc3NzIxNzsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtQYXJhbWV0ZXJM
ZW5ndGggICAgICAgICAgICA9IDQ7CisgICAgY29uc3RleHByIHN0ZDo6YXJyYXk8R0xpbnQsIGtQ
YXJhbWV0ZXJMZW5ndGg+IGNyb3AgPSB7CisgICAgICAgIC1rRmlyc3RJbnRUaGF0Q2Fubm90QmVG
bG9hdCwga0ZpcnN0SW50VGhhdENhbm5vdEJlRmxvYXQsIHN0ZDo6bnVtZXJpY19saW1pdHM8R0xp
bnQ+OjptYXgoKSwKKyAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1pbigpfTsK
KyAgICBnbFRleFBhcmFtZXRlcml2KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQ1JPUF9SRUNU
X09FUywgY3JvcC5kYXRhKCkpOworICAgIHN0ZDo6YXJyYXk8R0xpbnQsIGtQYXJhbWV0ZXJMZW5n
dGg+IGNyb3BTdG9yZWQgPSB7MH07CisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdihHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX0NST1BfUkVDVF9PRVMsIGNyb3BTdG9yZWQuZGF0YSgpKTsKKyAgICBB
U1NFUlRfRVEoY3JvcCwgY3JvcFN0b3JlZCk7Cit9CisKKy8vIENoZWNrIHRoYXQgdGV4dHVyZSBw
YXJhbWV0ZXJzIGNhbiBiZSBzZXQgYnkgZ2xUZXhQYXJhbWV0ZXJ4LCBnbFRleFBhcmFtZXRlcnh2
CisvLyBhbmQgZ2V0IGJ5IGdsR2V0VGV4UGFyYW1ldGVyeHYuCitURVNUX1AoVGV4dHVyZVBhcmFt
ZXRlclRlc3QsIFNldEZpeGVkUG9pbnQpCit7CisgICAgc3RkOjphcnJheTxHTGZpeGVkLCA0PiBw
YXJhbXMgPSB7fTsKKworICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9HRU5F
UkFURV9NSVBNQVAsIEdMX1RSVUUpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAg
Z2xHZXRUZXhQYXJhbWV0ZXJ4dihHTF9URVhUVVJFXzJELCBHTF9HRU5FUkFURV9NSVBNQVAsIHBh
cmFtcy5kYXRhKCkpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9HTF9U
UlVFKHBhcmFtc1swXSk7CisKKyAgICBzdGQ6OmFycmF5PEdMZml4ZWQsIDQ+IGNyb3BSZWN0ID0g
ezB4MTAwMDAsIDB4MTAwMDAsIDB4MjAwMDAsIDB4MjAwMDB9OworCisgICAgZ2xUZXhQYXJhbWV0
ZXJ4dihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0NST1BfUkVDVF9PRVMsIGNyb3BSZWN0LmRh
dGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEdldFRleFBhcmFtZXRl
cnh2KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQ1JPUF9SRUNUX09FUywgcGFyYW1zLmRhdGEo
KSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKGNyb3BSZWN0LCBw
YXJhbXMpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9SRVBFQVQpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xH
ZXRUZXhQYXJhbWV0ZXJ4dihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgcGFyYW1z
LmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKEdMX1JF
UEVBVCwgcGFyYW1zWzBdKTsKKworICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBnbEdldFRleFBhcmFtZXRlcnh2KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgcGFyYW1zLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cisg
ICAgRVhQRUNUX0VRKEdMX0xJTkVBUiwgcGFyYW1zWzBdKTsKK30KKwogQU5HTEVfSU5TVEFOVElB
VEVfVEVTVF9FUzEoVGV4dHVyZVBhcmFtZXRlclRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXMxX2NvbmZvcm1hbmNlX3Rlc3RzL0NvbmZvcm1h
bmNlVGVzdHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXMxX2Nv
bmZvcm1hbmNlX3Rlc3RzL0NvbmZvcm1hbmNlVGVzdHMuY3BwCmluZGV4IDEyYjNlMjg1ODQwZWJm
MjU4MDdjYTliMjYwOGY0MTM2YzM2ZDJhNTYuLjM1MjRlNzViMWU2ZjBjOGE5YTllYTI0NjcxMzIz
YWE3NjJlMDkyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbGVzMV9jb25mb3JtYW5jZV90ZXN0cy9Db25mb3JtYW5jZVRlc3RzLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlczFfY29uZm9ybWFuY2VfdGVzdHMvQ29u
Zm9ybWFuY2VUZXN0cy5jcHAKQEAgLTU1OCwzICs1NTgsNiBAQCBURVNUX1AoR0xFUzFDb25mb3Jt
YW5jZVRlc3QsIE1hdHJpeFBhbGV0dGUpCiAKIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoR0xFUzFD
b25mb3JtYW5jZVRlc3QsIEVTMV9PUEVOR0woKSwgRVMxX1ZVTEtBTigpKTsKIH0gIC8vIG5hbWVz
cGFjZSBhbmdsZQorCisvLyBJbmNsdWRlZCBoZXJlIHRvIGZpeCBhIGNvbXBpbGUgZXJyb3IgZHVl
IHRvIHdoaXRlIGJveCB0ZXN0cyB1c2luZyBhbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uCit2b2lk
IFJlZ2lzdGVyQ29udGV4dENvbXBhdGliaWxpdHlUZXN0cygpIHt9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmNwcAppbmRleCAyMTgxMTc1NjViMWJi
MTQwMDU4ODc0Njc4ZTk0N2EzN2FiZmJjNWEyLi4yNDI1ZWYxMDY2NjJkOTI3YTFiZDVlMTliNDUy
ZGRhZWI2YTljYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmNwcApAQCAtMTMsNiArMTMs
NyBAQAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9y
bS5oIgogI2luY2x1ZGUgImNvbW1vbi9zeXN0ZW1fdXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24v
dXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuaCIKICNp
bmNsdWRlICJ0aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgogI2luY2x1ZGUg
InV0aWwvc2hhZGVyX3V0aWxzLmgiCkBAIC0xMTUsMTAgKzExNiw3IEBAIHZvaWQgVXBkYXRlVHJh
Y2VFdmVudER1cmF0aW9uKGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtLAogCiBkb3Vi
bGUgTW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKnBs
YXRmb3JtKQogewotICAgIC8vIE1vdmUgdGhlIHRpbWUgb3JpZ2luIHRvIHRoZSBmaXJzdCBjYWxs
IHRvIHRoaXMgZnVuY3Rpb24sIHRvIGF2b2lkIGdlbmVyYXRpbmcgdW5uZWNlc3NhcmlseQotICAg
IC8vIGxhcmdlIHRpbWVzdGFtcHMuCi0gICAgc3RhdGljIGRvdWJsZSBvcmlnaW4gPSBhbmdsZTo6
R2V0Q3VycmVudFRpbWUoKTsKLSAgICByZXR1cm4gYW5nbGU6OkdldEN1cnJlbnRUaW1lKCkgLSBv
cmlnaW47CisgICAgcmV0dXJuIEdldEhvc3RUaW1lU2Vjb25kcygpOwogfQogCiB2b2lkIER1bXBU
cmFjZUV2ZW50c1RvSlNPTkZpbGUoY29uc3Qgc3RkOjp2ZWN0b3I8VHJhY2VFdmVudD4gJnRyYWNl
RXZlbnRzLApAQCAtMTQwLDggKzEzOCw4IEBAIHZvaWQgRHVtcFRyYWNlRXZlbnRzVG9KU09ORmls
ZShjb25zdCBzdGQ6OnZlY3RvcjxUcmFjZUV2ZW50PiAmdHJhY2VFdmVudHMsCiAgICAgICAgIHZh
bHVlWyJjYXQiXSAgPSB0cmFjZUV2ZW50LmNhdGVnb3J5TmFtZTsKICAgICAgICAgdmFsdWVbInBo
Il0gICA9IHBoYXNlTmFtZS5zdHIoKTsKICAgICAgICAgdmFsdWVbInRzIl0gICA9IG1pY3Jvc2Vj
b25kczsKLSAgICAgICAgdmFsdWVbInBpZCJdICA9ICJBTkdMRSI7Ci0gICAgICAgIHZhbHVlWyJ0
aWQiXSAgPSBzdHJjbXAodHJhY2VFdmVudC5jYXRlZ29yeU5hbWUsICJncHUuYW5nbGUuZ3B1Iikg
PT0gMCA/ICJHUFUiIDogIkNQVSI7CisgICAgICAgIHZhbHVlWyJwaWQiXSAgPSBzdHJjbXAodHJh
Y2VFdmVudC5jYXRlZ29yeU5hbWUsICJncHUuYW5nbGUuZ3B1IikgPT0gMCA/ICJHUFUiIDogIkFO
R0xFIjsKKyAgICAgICAgdmFsdWVbInRpZCJdICA9IDE7CiAKICAgICAgICAgZXZlbnRzVmFsdWUu
YXBwZW5kKHZhbHVlKTsKICAgICB9CkBAIC0xNTcsOCArMTU1LDMyIEBAIHZvaWQgRHVtcFRyYWNl
RXZlbnRzVG9KU09ORmlsZShjb25zdCBzdGQ6OnZlY3RvcjxUcmFjZUV2ZW50PiAmdHJhY2VFdmVu
dHMsCiAKICAgICBvdXRGaWxlLmNsb3NlKCk7CiB9CisKK0FOR0xFX01BWUJFX1VOVVNFRCB2b2lk
IEtIUk9OT1NfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ2FsbGJhY2soR0xlbnVtIHNvdXJjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICp1c2VyUGFyYW0pCit7CisgICAgc3RkOjpzdHJpbmcgc291cmNlVGV4dCAgID0g
Z2w6OkdldERlYnVnTWVzc2FnZVNvdXJjZVN0cmluZyhzb3VyY2UpOworICAgIHN0ZDo6c3RyaW5n
IHR5cGVUZXh0ICAgICA9IGdsOjpHZXREZWJ1Z01lc3NhZ2VUeXBlU3RyaW5nKHR5cGUpOworICAg
IHN0ZDo6c3RyaW5nIHNldmVyaXR5VGV4dCA9IGdsOjpHZXREZWJ1Z01lc3NhZ2VTZXZlcml0eVN0
cmluZyhzZXZlcml0eSk7CisgICAgc3RkOjpjZXJyIDw8IHNvdXJjZVRleHQgPDwgIiwgIiA8PCB0
eXBlVGV4dCA8PCAiLCAiIDw8IHNldmVyaXR5VGV4dCA8PCAiOiAiIDw8IG1lc3NhZ2UgPDwgIlxu
IjsKK30KIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAorVHJhY2VFdmVudDo6VHJhY2VFdmVu
dChjaGFyIHBoYXNlSW4sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNhdGVn
b3J5TmFtZUluLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lSW4sCisg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB0aW1lc3RhbXBJbikKKyAgICA6IHBoYXNlKHBo
YXNlSW4pLCBjYXRlZ29yeU5hbWUoY2F0ZWdvcnlOYW1lSW4pLCBuYW1le30sIHRpbWVzdGFtcCh0
aW1lc3RhbXBJbiksIHRpZCgxKQoreworICAgIEFTU0VSVChzdHJsZW4obmFtZUluKSA8IGtNYXhO
YW1lTGVuKTsKKyAgICBzdHJjcHkobmFtZSwgbmFtZUluKTsKK30KKwogQU5HTEVQZXJmVGVzdDo6
QU5HTEVQZXJmVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmJhY2tlbmQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzdG9yeSwKQEAgLTE5NywxMyArMjE5LDEz
IEBAIHZvaWQgQU5HTEVQZXJmVGVzdDo6cnVuKCkKICAgICB9CiAKICAgICAvLyBDYWxpYnJhdGUg
dG8gYSBmaXhlZCBudW1iZXIgb2Ygc3RlcHMgZHVyaW5nIGFuIGluaXRpYWwgc2V0IHRpbWUuCi0g
ICAgaWYgKCFnU3RlcHNUb1J1bk92ZXJyaWRlLnZhbGlkKCkpCisgICAgaWYgKGdTdGVwc1RvUnVu
T3ZlcnJpZGUgPD0gMCkKICAgICB7CiAgICAgICAgIGRvUnVuTG9vcChrQ2FsaWJyYXRpb25SdW5U
aW1lU2Vjb25kcyk7CiAKICAgICAgICAgLy8gU2NhbGUgc3RlcHMgZG93biBhY2NvcmRpbmcgdG8g
dGhlIHRpbWUgdGhhdCBleGVlZGVkIG9uZSBzZWNvbmQuCiAgICAgICAgIGRvdWJsZSBzY2FsZSA9
IGtDYWxpYnJhdGlvblJ1blRpbWVTZWNvbmRzIC8gbVRpbWVyLmdldEVsYXBzZWRUaW1lKCk7Ci0g
ICAgICAgIG1TdGVwc1RvUnVuICA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGljX2Nhc3Q8ZG91
YmxlPihtTnVtU3RlcHNQZXJmb3JtZWQpICogc2NhbGUpOworICAgICAgICBtU3RlcHNUb1J1biAg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0YXRpY19jYXN0PGRvdWJsZT4obU51bVN0ZXBz
UGVyZm9ybWVkKSAqIHNjYWxlKTsKIAogICAgICAgICAvLyBDYWxpYnJhdGlvbiBhbGxvd3MgdGhl
IHBlcmYgdGVzdCBydW5uZXIgc2NyaXB0IHRvIHNhdmUgc29tZSB0aW1lLgogICAgICAgICBpZiAo
Z0NhbGlicmF0aW9uKQpAQCAtMjE0LDcgKzIzNiw3IEBAIHZvaWQgQU5HTEVQZXJmVGVzdDo6cnVu
KCkKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbVN0ZXBzVG9SdW4gPSBnU3RlcHNU
b1J1bk92ZXJyaWRlLnZhbHVlKCk7CisgICAgICAgIG1TdGVwc1RvUnVuID0gZ1N0ZXBzVG9SdW5P
dmVycmlkZTsKICAgICB9CiAKICAgICAvLyBEbyBhbm90aGVyIHdhcm11cCBydW4uIFNlZW1zIHRv
IGNvbnNpc3RlbnRseSBpbXByb3ZlIHJlc3VsdHMuCkBAIC0zMjEsOSArMzQzLDExIEBAIHN0ZDo6
c3RyaW5nIFJlbmRlclRlc3RQYXJhbXM6OmJhY2tlbmQoKSBjb25zdAogICAgICAgICBjYXNlIGFu
Z2xlOjpHTEVTRHJpdmVyVHlwZTo6QW5nbGVFR0w6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBhbmdsZTo6R0xFU0RyaXZlclR5cGU6OlN5c3RlbUVHTDoKLSAgICAgICAgICAgIHJl
dHVybiAiX25hdGl2ZSI7CisgICAgICAgICAgICBzdHJzdHIgPDwgIl9uYXRpdmUiOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgYW5nbGU6OkdMRVNEcml2ZXJUeXBlOjpTeXN0ZW1X
R0w6Ci0gICAgICAgICAgICByZXR1cm4gIl93Z2wiOworICAgICAgICAgICAgc3Ryc3RyIDw8ICJf
d2dsIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
YXNzZXJ0KDApOwogICAgICAgICAgICAgcmV0dXJuICJfdW5rIjsKQEAgLTMzMSw2ICszNTUsOCBA
QCBzdGQ6OnN0cmluZyBSZW5kZXJUZXN0UGFyYW1zOjpiYWNrZW5kKCkgY29uc3QKIAogICAgIHN3
aXRjaCAoZ2V0UmVuZGVyZXIoKSkKICAgICB7CisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfREVGQVVMVF9BTkdMRToKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgogICAgICAgICAgICAgc3Ryc3Ry
IDw8ICJfZDNkMTEiOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNDMsOSArMzY5LDYgQEAgc3Rk
OjpzdHJpbmcgUmVuZGVyVGVzdFBhcmFtczo6YmFja2VuZCgpIGNvbnN0CiAgICAgICAgIGNhc2Ug
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU6CiAgICAgICAgICAgICBzdHJz
dHIgPDwgIl9nbGVzIjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6Ci0gICAgICAgICAgICBzdHJzdHIgPDwgIl9k
ZWZhdWx0IjsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX1ZVTEtBTl9BTkdMRToKICAgICAgICAgICAgIHN0cnN0ciA8PCAiX3Z1bGthbiI7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3OCw5ICs0MDEsOSBAQCBBTkdMRVJlbmRlclRlc3Q6
OkFOR0xFUmVuZGVyVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3QgUmVuZGVyVGVz
dFBhcmFtcwogICAgICAgICAgICAgICAgICAgICB0ZXN0UGFyYW1zLnN0b3J5KCksCiAgICAgICAg
ICAgICAgICAgICAgIE9uZUZyYW1lKCkgPyAxIDogdGVzdFBhcmFtcy5pdGVyYXRpb25zUGVyU3Rl
cCksCiAgICAgICBtVGVzdFBhcmFtcyh0ZXN0UGFyYW1zKSwKKyAgICAgIG1Jc1RpbWVzdGFtcFF1
ZXJ5QXZhaWxhYmxlKGZhbHNlKSwKICAgICAgIG1HTFdpbmRvdyhudWxscHRyKSwKLSAgICAgIG1P
U1dpbmRvdyhudWxscHRyKSwKLSAgICAgIG1Jc1RpbWVzdGFtcFF1ZXJ5QXZhaWxhYmxlKGZhbHNl
KQorICAgICAgbU9TV2luZG93KG51bGxwdHIpCiB7CiAgICAgLy8gRm9yY2UgZmFzdCB0ZXN0cyB0
byBtYWtlIHN1cmUgb3VyIHNsb3dlc3QgYm90cyBkb24ndCB0aW1lIG91dC4KICAgICBpZiAoT25l
RnJhbWUoKSkKQEAgLTQ5OCw2ICs1MjEsMjggQEAgdm9pZCBBTkdMRVJlbmRlclRlc3Q6OlNldFVw
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0FT
U0VSVFMpCisgICAgaWYgKElzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9LSFJfZGVidWciKSkKKyAg
ICB7CisgICAgICAgIGdsRW5hYmxlKEdMX0RFQlVHX09VVFBVVCk7CisgICAgICAgIGdsRW5hYmxl
KEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyk7CisgICAgICAgIC8vIEVuYWJsZSBtZWRpdW0g
YW5kIGhpZ2ggcHJpb3JpdHkgbWVzc2FnZXMuCisgICAgICAgIGdsRGVidWdNZXNzYWdlQ29udHJv
bEtIUihHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfREVCVUdfU0VWRVJJVFlfSElHSCwg
MCwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RSVUUpOwor
ICAgICAgICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NB
UkUsIEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTSwgMCwgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1RSVUUpOworICAgICAgICAvLyBEaXNhYmxlIGxvdyBhbmQg
bm90aWZpY2F0aW9uIHByaW9yaXR5IG1lc3NhZ2VzLgorICAgICAgICBnbERlYnVnTWVzc2FnZUNv
bnRyb2xLSFIoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RFQlVHX1NFVkVSSVRZX0xP
VywgMCwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZBTFNF
KTsKKyAgICAgICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RPTlRfQ0FSRSwgR0xfRE9O
VF9DQVJFLCBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04sIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBHTF9GQUxTRSk7CisgICAgICAgIC8vIERpc2Fi
bGUgbWVkaXVtIHByaW9yaXR5IHBlcmZvcm1hbmNlIG1lc3NhZ2VzIHRvIHJlZHVjZSBzcGFtLgor
ICAgICAgICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfRE9OVF9DQVJFLCBHTF9ERUJVR19U
WVBFX1BFUkZPUk1BTkNFLCBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCBudWxscHRyLCBHTF9GQUxTRSk7CisgICAgICAgIGdsRGVi
dWdNZXNzYWdlQ2FsbGJhY2tLSFIoRGVidWdNZXNzYWdlQ2FsbGJhY2ssIHRoaXMpOworICAgIH0K
KyNlbmRpZgorCiAgICAgaW5pdGlhbGl6ZUJlbmNobWFyaygpOwogCiAgICAgaWYgKG1UZXN0UGFy
YW1zLml0ZXJhdGlvbnNQZXJTdGVwID09IDApCkBAIC01NTQsNiArNTk5LDI0IEBAIHZvaWQgQU5H
TEVSZW5kZXJUZXN0OjplbmRJbnRlcm5hbFRyYWNlRXZlbnQoY29uc3QgY2hhciAqbmFtZSkKICAg
ICB9CiB9CiAKK3ZvaWQgQU5HTEVSZW5kZXJUZXN0OjpiZWdpbkdMVHJhY2VFdmVudChjb25zdCBj
aGFyICpuYW1lLCBkb3VibGUgaG9zdFRpbWVTZWMpCit7CisgICAgaWYgKGdFbmFibGVUcmFjZSkK
KyAgICB7CisgICAgICAgIG1UcmFjZUV2ZW50QnVmZmVyLmVtcGxhY2VfYmFjayhUUkFDRV9FVkVO
VF9QSEFTRV9CRUdJTiwgZ1RyYWNlQ2F0ZWdvcmllc1sxXS5uYW1lLCBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFRpbWVTZWMpOworICAgIH0KK30KKwor
dm9pZCBBTkdMRVJlbmRlclRlc3Q6OmVuZEdMVHJhY2VFdmVudChjb25zdCBjaGFyICpuYW1lLCBk
b3VibGUgaG9zdFRpbWVTZWMpCit7CisgICAgaWYgKGdFbmFibGVUcmFjZSkKKyAgICB7CisgICAg
ICAgIG1UcmFjZUV2ZW50QnVmZmVyLmVtcGxhY2VfYmFjayhUUkFDRV9FVkVOVF9QSEFTRV9FTkQs
IGdUcmFjZUNhdGVnb3JpZXNbMV0ubmFtZSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhvc3RUaW1lU2VjKTsKKyAgICB9Cit9CisKIHZvaWQgQU5HTEVSZW5k
ZXJUZXN0OjpzdGVwKCkKIHsKICAgICBiZWdpbkludGVybmFsVHJhY2VFdmVudCgic3RlcCIpOwpA
QCAtNTgzLDYgKzY0NiwxMCBAQCB2b2lkIEFOR0xFUmVuZGVyVGVzdDo6c3RlcCgpCiAgICAgICAg
IC8vIGNvbW1hbmQgcXVldWVzLgogICAgICAgICBtR0xXaW5kb3ctPnN3YXAoKTsKICAgICAgICAg
bU9TV2luZG93LT5tZXNzYWdlTG9vcCgpOworCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNT
RVJUUykKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1Ip
LCBnbEdldEVycm9yKCkpOworI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRT
KQogICAgIH0KIAogICAgIGVuZEludGVybmFsVHJhY2VFdmVudCgic3RlcCIpOwpAQCAtNjcyLDMg
KzczOSwxNCBAQCBzdGQ6OnZlY3RvcjxUcmFjZUV2ZW50PiAmQU5HTEVSZW5kZXJUZXN0OjpnZXRU
cmFjZUV2ZW50QnVmZmVyKCkKIHsKICAgICByZXR1cm4gbVRyYWNlRXZlbnRCdWZmZXI7CiB9CisK
K25hbWVzcGFjZSBhbmdsZQoreworZG91YmxlIEdldEhvc3RUaW1lU2Vjb25kcygpCit7CisgICAg
Ly8gTW92ZSB0aGUgdGltZSBvcmlnaW4gdG8gdGhlIGZpcnN0IGNhbGwgdG8gdGhpcyBmdW5jdGlv
biwgdG8gYXZvaWQgZ2VuZXJhdGluZyB1bm5lY2Vzc2FyaWx5CisgICAgLy8gbGFyZ2UgdGltZXN0
YW1wcy4KKyAgICBzdGF0aWMgZG91YmxlIG9yaWdpbiA9IGFuZ2xlOjpHZXRDdXJyZW50VGltZSgp
OworICAgIHJldHVybiBhbmdsZTo6R2V0Q3VycmVudFRpbWUoKSAtIG9yaWdpbjsKK30KK30gIC8v
IG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oCmluZGV4IDUwZWExODdkZGQy
MjYxNjhlNDE5MzlmZmYwNzg0ODBkYjBlNGQzYTkuLjIzNmQ4NjNjNWNhZTliYjYzZDU5NjhjZjUy
ZjZjYTNkZjMxZmExYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmgKQEAgLTQzLDE1ICs0Mywx
NSBAQCBjbGFzcyBFdmVudDsKIHN0cnVjdCBUcmFjZUV2ZW50IGZpbmFsCiB7CiAgICAgVHJhY2VF
dmVudCgpIHt9CisgICAgVHJhY2VFdmVudChjaGFyIHBoYXNlSW4sIGNvbnN0IGNoYXIgKmNhdGVn
b3J5TmFtZUluLCBjb25zdCBjaGFyICpuYW1lSW4sIGRvdWJsZSB0aW1lc3RhbXBJbik7CiAKLSAg
ICBUcmFjZUV2ZW50KGNoYXIgcGhhc2VJbiwgY29uc3QgY2hhciAqY2F0ZWdvcnlOYW1lSW4sIGNv
bnN0IGNoYXIgKm5hbWVJbiwgZG91YmxlIHRpbWVzdGFtcEluKQotICAgICAgICA6IHBoYXNlKHBo
YXNlSW4pLCBjYXRlZ29yeU5hbWUoY2F0ZWdvcnlOYW1lSW4pLCBuYW1lKG5hbWVJbiksIHRpbWVz
dGFtcCh0aW1lc3RhbXBJbikKLSAgICB7fQorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
a01heE5hbWVMZW4gPSA2NDsKIAogICAgIGNoYXIgcGhhc2UgICAgICAgICAgICAgICA9IDA7CiAg
ICAgY29uc3QgY2hhciAqY2F0ZWdvcnlOYW1lID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFyICpu
YW1lICAgICAgICAgPSBudWxscHRyOworICAgIGNoYXIgbmFtZVtrTWF4TmFtZUxlbl0gICA9IHt9
OwogICAgIGRvdWJsZSB0aW1lc3RhbXAgICAgICAgICA9IDA7CisgICAgdWludDMyX3QgdGlkICAg
ICAgICAgICAgID0gMDsKIH07CiAKIGNsYXNzIEFOR0xFUGVyZlRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCwgYW5nbGU6Ok5vbkNvcHlhYmxlCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEFOR0xF
UGVyZlRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmYmFja2VuZCwKICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzdG9yeSwKICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBpdGVyYXRpb25zUGVyU3RlcCk7Ci0gICAgdmlydHVhbCB+QU5HTEVQZXJmVGVzdCgpOwor
ICAgIH5BTkdMRVBlcmZUZXN0KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RlcCgp
ID0gMDsKIApAQCAtMTE5LDcgKzExOSw3IEBAIGNsYXNzIEFOR0xFUmVuZGVyVGVzdCA6IHB1Ymxp
YyBBTkdMRVBlcmZUZXN0CiB7CiAgIHB1YmxpYzoKICAgICBBTkdMRVJlbmRlclRlc3QoY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IFJlbmRlclRlc3RQYXJhbXMgJnRlc3RQYXJhbXMpOwot
ICAgIH5BTkdMRVJlbmRlclRlc3QoKTsKKyAgICB+QU5HTEVSZW5kZXJUZXN0KCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGFkZEV4dGVuc2lvblByZXJlcXVpc2l0ZShjb25zdCBjaGFyICpleHRlbnNp
b25OYW1lKTsKIApAQCAtMTQ4LDYgKzE0OCwxMCBAQCBjbGFzcyBBTkdMRVJlbmRlclRlc3QgOiBw
dWJsaWMgQU5HTEVQZXJmVGVzdAogCiAgICAgdm9pZCBiZWdpbkludGVybmFsVHJhY2VFdmVudChj
b25zdCBjaGFyICpuYW1lKTsKICAgICB2b2lkIGVuZEludGVybmFsVHJhY2VFdmVudChjb25zdCBj
aGFyICpuYW1lKTsKKyAgICB2b2lkIGJlZ2luR0xUcmFjZUV2ZW50KGNvbnN0IGNoYXIgKm5hbWUs
IGRvdWJsZSBob3N0VGltZVNlYyk7CisgICAgdm9pZCBlbmRHTFRyYWNlRXZlbnQoY29uc3QgY2hh
ciAqbmFtZSwgZG91YmxlIGhvc3RUaW1lU2VjKTsKKworICAgIGJvb2wgbUlzVGltZXN0YW1wUXVl
cnlBdmFpbGFibGU7CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CkBA
IC0xNjUsNyArMTY5LDYgQEAgY2xhc3MgQU5HTEVSZW5kZXJUZXN0IDogcHVibGljIEFOR0xFUGVy
ZlRlc3QKICAgICBhbmdsZTo6UGxhdGZvcm1NZXRob2RzIG1QbGF0Zm9ybU1ldGhvZHM7CiAgICAg
Q29uZmlnUGFyYW1ldGVycyBtQ29uZmlnUGFyYW1zOwogCi0gICAgYm9vbCBtSXNUaW1lc3RhbXBR
dWVyeUF2YWlsYWJsZTsKICAgICBHTHVpbnQgbVRpbWVzdGFtcFF1ZXJ5OwogCiAgICAgLy8gVHJh
Y2UgZXZlbnQgcmVjb3JkIHRoYXQgY2FuIGJlIG91dHB1dC4KQEAgLTE5NCw2ICsxOTcsMTcgQEAg
UGFyYW1zVCBOdWxsRGV2aWNlKGNvbnN0IFBhcmFtc1QgJmlucHV0KQogICAgIG91dHB1dC50cmFj
a0dwdVRpbWUgICAgICAgICAgICAgPSBmYWxzZTsKICAgICByZXR1cm4gb3V0cHV0OwogfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1zVD4KK1BhcmFtc1QgUGFzc3Rocm91Z2goY29uc3QgUGFy
YW1zVCAmaW5wdXQpCit7CisgICAgcmV0dXJuIGlucHV0OworfQogfSAgLy8gbmFtZXNwYWNlIHBh
cmFtcwogCituYW1lc3BhY2UgYW5nbGUKK3sKKy8vIFJldHVybnMgdGhlIHRpbWUgb2YgdGhlIGhv
c3Qgc2luY2UgdGhlIGFwcGxpY2F0aW9uIHN0YXJ0ZWQgaW4gc2Vjb25kcy4KK2RvdWJsZSBHZXRI
b3N0VGltZVNlY29uZHMoKTsKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQogI2VuZGlmICAvLyBQRVJG
X1RFU1RTX0FOR0xFX1BFUkZfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3MuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3Mu
Y3BwCmluZGV4IDI3MGE4ZWE5Yjk4YzIzYTFmNzE2NTk5YjRlYTUzYmNiZTkzZGYxMjkuLmQyMzMx
NTUyODc5YzE2NDM2YjE3ZDYyM2FlMTZjNzQzMDY5Nzk2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3RBcmdzLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdM
RVBlcmZUZXN0QXJncy5jcHAKQEAgLTEzLDEwICsxMywxMCBAQAogCiBuYW1lc3BhY2UgYW5nbGUK
IHsKLWJvb2wgZ0NhbGlicmF0aW9uID0gZmFsc2U7Ci1PcHRpb25hbDx1bnNpZ25lZCBpbnQ+IGdT
dGVwc1RvUnVuT3ZlcnJpZGU7Ci1ib29sIGdFbmFibGVUcmFjZSAgICAgID0gZmFsc2U7Ci1jb25z
dCBjaGFyICpnVHJhY2VGaWxlID0gIkFOR0xFVHJhY2UuanNvbiI7Citib29sIGdDYWxpYnJhdGlv
biAgICAgICA9IGZhbHNlOworaW50IGdTdGVwc1RvUnVuT3ZlcnJpZGUgPSAtMTsKK2Jvb2wgZ0Vu
YWJsZVRyYWNlICAgICAgID0gZmFsc2U7Citjb25zdCBjaGFyICpnVHJhY2VGaWxlICA9ICJBTkdM
RVRyYWNlLmpzb24iOwogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAKIHVzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL0FOR0xFUGVyZlRlc3RBcmdzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0QXJncy5oCmluZGV4IGZiMTdlYzY0YmE1NDM5
YzMyMGYyZTA4OTNkOTYxZDEzMjBhZDRmYmIuLjQ2MWJkMTZjMDBkOTdlZWU2MjRiNWM1ZjA0MzFm
M2FlZGMyOTBkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3RBcmdzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3MuaApAQCAtMTUsMTMg
KzE1LDEzIEBACiBuYW1lc3BhY2UgYW5nbGUKIHsKIGV4dGVybiBib29sIGdDYWxpYnJhdGlvbjsK
LWV4dGVybiBPcHRpb25hbDx1bnNpZ25lZCBpbnQ+IGdTdGVwc1RvUnVuT3ZlcnJpZGU7CitleHRl
cm4gaW50IGdTdGVwc1RvUnVuT3ZlcnJpZGU7CiBleHRlcm4gYm9vbCBnRW5hYmxlVHJhY2U7CiBl
eHRlcm4gY29uc3QgY2hhciAqZ1RyYWNlRmlsZTsKIAogaW5saW5lIGJvb2wgT25lRnJhbWUoKQog
ewotICAgIHJldHVybiBnU3RlcHNUb1J1bk92ZXJyaWRlLnZhbGlkKCkgJiYgZ1N0ZXBzVG9SdW5P
dmVycmlkZS52YWx1ZSgpID09IDE7CisgICAgcmV0dXJuIGdTdGVwc1RvUnVuT3ZlcnJpZGUgPT0g
MTsKIH0KIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9CaXRTZXRJdGVyYXRvclBlcmYuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQml0U2V0SXRlcmF0
b3JQZXJmLmNwcAppbmRleCAwMWUyNDlkZDE0OWU5YTU1YzMyYjg1NWNmYjMyMzM4YmIxMTNmNTg4
Li4wYjYxY2M2NGQ2MTI4N2Y4NjM3MDJhYTdlMzAxNjJkY2Y0Yzc3ZDg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9CaXRTZXRJdGVyYXRv
clBlcmYuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL0JpdFNldEl0ZXJhdG9yUGVyZi5jcHAKQEAgLTQ4LDExICs0OCwxMSBAQCB2b2lkIEJpdFNl
dEl0ZXJhdG9yUGVyZlRlc3Q8VD46OnN0ZXAoKQogfQogCiAvLyBUaGVzZSB0eXBlIG5hbWVzIHVu
Zm9ydHVuYXRlbHkgZG9uJ3QgZ2V0IHByaW50ZWQgY29ycmVjdGx5IGluIEd0ZXN0LgotI2lmIGRl
ZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKLXVzaW5nIFRlc3RUeXBlcyA9IFR5cGVzPGFuZ2xl
OjpJdGVyYWJsZUJpdFNldDwzMj4sIGFuZ2xlOjpCaXRTZXQzMjwzMj4sIGFuZ2xlOjpCaXRTZXQ2
NDwzMj4+OwotI2Vsc2UKLXVzaW5nIFRlc3RUeXBlcyA9IFR5cGVzPGFuZ2xlOjpJdGVyYWJsZUJp
dFNldDwzMj4sIGFuZ2xlOjpCaXRTZXQzMjwzMj4+OwotI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xF
X0lTXzY0X0JJVF9DUFUpCit1c2luZyBUZXN0VHlwZXMgPSBUeXBlczxhbmdsZTo6SXRlcmFibGVC
aXRTZXQ8MzI+LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkJpdFNldDMyPDMyPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpCaXRTZXQ2NDwzMj4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6SXRlcmFibGVCaXRTZXQ8NjQ+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkJpdFNldDY0PDY0Pj47CiBUWVBFRF9URVNUX1NVSVRFKEJpdFNldEl0
ZXJhdG9yUGVyZlRlc3QsIFRlc3RUeXBlcyk7CiAKIFRZUEVEX1RFU1QoQml0U2V0SXRlcmF0b3JQ
ZXJmVGVzdCwgUnVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAKaW5kZXggNzljNmI1YmM3ZmEy
Y2I2YTcxMzgwODg3MWYwNmM4MzQwMmQ1NzgxNy4uZjY5YjRhNGJhYWEwN2FkN2MxYjVlODg5OGIw
MzJkMDE2NzI2NmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmYuY3BwCkBAIC05LDYgKzksNyBA
QAogCiAjaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgogI2luY2x1ZGUgIkRyYXdDYWxsUGVyZlBh
cmFtcy5oIgorI2luY2x1ZGUgImNvbW1vbi9QYWNrZWRFbnVtcy5oIgogI2luY2x1ZGUgInRlc3Rf
dXRpbHMvZHJhd19jYWxsX3BlcmZfdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlsL3NoYWRlcl91dGls
cy5oIgogCkBAIC0yMiwxMCArMjMsMTIgQEAgZW51bSBjbGFzcyBTdGF0ZUNoYW5nZQogICAgIE1h
bnlWZXJ0ZXhCdWZmZXJzLAogICAgIFRleHR1cmUsCiAgICAgUHJvZ3JhbSwKKyAgICBJbnZhbGlk
RW51bSwKIH07CiAKIHN0cnVjdCBEcmF3QXJyYXlzUGVyZlBhcmFtcyA6IHB1YmxpYyBEcmF3Q2Fs
bFBlcmZQYXJhbXMKIHsKKyAgICBEcmF3QXJyYXlzUGVyZlBhcmFtcygpID0gZGVmYXVsdDsKICAg
ICBEcmF3QXJyYXlzUGVyZlBhcmFtcyhjb25zdCBEcmF3Q2FsbFBlcmZQYXJhbXMgJmJhc2UpIDog
RHJhd0NhbGxQZXJmUGFyYW1zKGJhc2UpIHt9CiAKICAgICBzdGQ6OnN0cmluZyBzdG9yeSgpIGNv
bnN0IG92ZXJyaWRlOwpAQCAtMzc3LDYgKzM4MCw5IEBAIHZvaWQgRHJhd0NhbGxQZXJmQmVuY2ht
YXJrOjpkcmF3QmVuY2htYXJrKCkKICAgICAgICAgICAgICAgICBKdXN0RHJhdyhwYXJhbXMuaXRl
cmF0aW9uc1BlclN0ZXAsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFN0YXRlQ2hhbmdlOjpJbnZhbGlkRW51bToKKyAgICAgICAg
ICAgIEZBSUwoKSA8PCAiSW52YWxpZCBzdGF0ZSBjaGFuZ2UuIjsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwpAQCAtMzg3LDcwICszOTMsMjQg
QEAgVEVTVF9QKERyYXdDYWxsUGVyZkJlbmNobWFyaywgUnVuKQogICAgIHJ1bigpOwogfQogCi1E
cmF3QXJyYXlzUGVyZlBhcmFtcyBEcmF3QXJyYXlzKGNvbnN0IERyYXdDYWxsUGVyZlBhcmFtcyAm
YmFzZSwgU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpCit1c2luZyBuYW1lc3BhY2UgcGFyYW1zOwor
CitEcmF3QXJyYXlzUGVyZlBhcmFtcyBDb21iaW5lU3RhdGVDaGFuZ2UoY29uc3QgRHJhd0FycmF5
c1BlcmZQYXJhbXMgJmluLCBTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkKIHsKLSAgICBEcmF3QXJy
YXlzUGVyZlBhcmFtcyBwYXJhbXMoYmFzZSk7Ci0gICAgcGFyYW1zLnN0YXRlQ2hhbmdlID0gc3Rh
dGVDaGFuZ2U7Ci0gICAgcmV0dXJuIHBhcmFtczsKKyAgICBEcmF3QXJyYXlzUGVyZlBhcmFtcyBv
dXQgPSBpbjsKKyAgICBvdXQuc3RhdGVDaGFuZ2UgICAgICAgICAgPSBzdGF0ZUNoYW5nZTsKKyAg
ICByZXR1cm4gb3V0OwogfQogCi11c2luZyBuYW1lc3BhY2UgcGFyYW1zOwordXNpbmcgUCA9IERy
YXdBcnJheXNQZXJmUGFyYW1zOworCitzdGQ6OnZlY3RvcjxQPiBnVGVzdHNXaXRoU3RhdGVDaGFu
Z2UgPQorICAgIENvbWJpbmVXaXRoVmFsdWVzKHtQKCl9LCBhbmdsZTo6QWxsRW51bXM8U3RhdGVD
aGFuZ2U+KCksIENvbWJpbmVTdGF0ZUNoYW5nZSk7CitzdGQ6OnZlY3RvcjxQPiBnVGVzdHNXaXRo
UmVuZGVyZXIgPQorICAgIENvbWJpbmVXaXRoRnVuY3MoZ1Rlc3RzV2l0aFN0YXRlQ2hhbmdlLCB7
RDNEMTE8UD4sIEdMPFA+LCBWdWxrYW48UD4sIFdHTDxQPn0pOworc3RkOjp2ZWN0b3I8UD4gZ1Rl
c3RzV2l0aERldmljZSA9CisgICAgQ29tYmluZVdpdGhGdW5jcyhnVGVzdHNXaXRoUmVuZGVyZXIs
IHtQYXNzdGhyb3VnaDxQPiwgT2Zmc2NyZWVuPFA+LCBOdWxsRGV2aWNlPFA+fSk7CiAKLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoRHJhd0NhbGxQZXJmQmVuY2htYXJrLAotICAgICAgICAgICAgICAg
ICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsRDNEOSgpLCBTdGF0ZUNoYW5nZTo6Tm9DaGFuZ2Up
LAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxE
M0Q5KCkpLCBTdGF0ZUNoYW5nZTo6Tm9DaGFuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICBE
cmF3QXJyYXlzKERyYXdDYWxsRDNEMTEoKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsRDNEMTEoKSks
IFN0YXRlQ2hhbmdlOjpOb0NoYW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJh
eXMoTnVsbERldmljZShPZmZzY3JlZW4oRHJhd0NhbGxEM0QxMSgpKSksIFN0YXRlQ2hhbmdlOjpO
b0NoYW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxEM0Qx
MSgpLCBTdGF0ZUNoYW5nZTo6VmVydGV4QXR0cmliKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsRDNEMTEoKSksIFN0YXRlQ2hhbmdlOjpWZXJ0
ZXhBdHRyaWIpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsRDNE
MTEoKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAg
IERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbEQzRDExKCkpLCBTdGF0ZUNoYW5nZTo6VmVy
dGV4QnVmZmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbEQz
RDExKCksIFN0YXRlQ2hhbmdlOjpUZXh0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsRDNEMTEoKSksIFN0YXRlQ2hhbmdlOjpUZXh0dXJl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbEQzRDExKCksIFN0
YXRlQ2hhbmdlOjpQcm9ncmFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhO
dWxsRGV2aWNlKERyYXdDYWxsRDNEMTEoKSksIFN0YXRlQ2hhbmdlOjpQcm9ncmFtKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbE9wZW5HTCgpLCBTdGF0ZUNoYW5n
ZTo6Tm9DaGFuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZp
Y2UoRHJhd0NhbGxPcGVuR0woKSksIFN0YXRlQ2hhbmdlOjpOb0NoYW5nZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmljZShPZmZzY3JlZW4oRHJhd0NhbGxPcGVu
R0woKSkpLCBTdGF0ZUNoYW5nZTo6Tm9DaGFuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICBE
cmF3QXJyYXlzKERyYXdDYWxsT3BlbkdMKCksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhBdHRyaWIpLAot
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxPcGVu
R0woKSksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhBdHRyaWIpLAotICAgICAgICAgICAgICAgICAgICAg
ICBEcmF3QXJyYXlzKERyYXdDYWxsT3BlbkdMKCksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhCdWZmZXIp
LAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxP
cGVuR0woKSksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhCdWZmZXIpLAotICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3QXJyYXlzKERyYXdDYWxsT3BlbkdMKCksIFN0YXRlQ2hhbmdlOjpNYW55VmVydGV4
QnVmZmVycyksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmljZShE
cmF3Q2FsbE9wZW5HTCgpKSwgU3RhdGVDaGFuZ2U6Ok1hbnlWZXJ0ZXhCdWZmZXJzKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbE9wZW5HTCgpLCBTdGF0ZUNoYW5n
ZTo6VGV4dHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmlj
ZShEcmF3Q2FsbE9wZW5HTCgpKSwgU3RhdGVDaGFuZ2U6OlRleHR1cmUpLAotICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsT3BlbkdMKCksIFN0YXRlQ2hhbmdlOjpQcm9n
cmFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdD
YWxsT3BlbkdMKCkpLCBTdGF0ZUNoYW5nZTo6UHJvZ3JhbSksCi0gICAgICAgICAgICAgICAgICAg
ICAgIERyYXdBcnJheXMoRHJhd0NhbGxWYWxpZGF0aW9uKCksIFN0YXRlQ2hhbmdlOjpOb0NoYW5n
ZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxWdWxrYW4oKSwg
U3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5
cyhPZmZzY3JlZW4oRHJhd0NhbGxWdWxrYW4oKSksIFN0YXRlQ2hhbmdlOjpOb0NoYW5nZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbFZ1bGth
bigpKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0FycmF5cyhEcmF3Q2FsbFZ1bGthbigpLCBTdGF0ZUNoYW5nZTo6VmVydGV4QXR0cmliKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxWdWxrYW4o
KSksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhBdHRyaWIpLAotICAgICAgICAgICAgICAgICAgICAgICBE
cmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxWdWxrYW4oKSksIFN0YXRlQ2hhbmdlOjpWZXJ0
ZXhBdHRyaWIpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsVnVs
a2FuKCksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhCdWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAg
ICBEcmF3QXJyYXlzKE9mZnNjcmVlbihEcmF3Q2FsbFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6OlZl
cnRleEJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmlj
ZShEcmF3Q2FsbFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEJ1ZmZlciksCi0gICAgICAg
ICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxWdWxrYW4oKSwgU3RhdGVDaGFuZ2U6
Ok1hbnlWZXJ0ZXhCdWZmZXJzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhP
ZmZzY3JlZW4oRHJhd0NhbGxWdWxrYW4oKSksIFN0YXRlQ2hhbmdlOjpNYW55VmVydGV4QnVmZmVy
cyksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2Fs
bFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6Ok1hbnlWZXJ0ZXhCdWZmZXJzKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbFZ1bGthbigpLCBTdGF0ZUNoYW5nZTo6VGV4
dHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoT2Zmc2NyZWVuKERyYXdD
YWxsVnVsa2FuKCkpLCBTdGF0ZUNoYW5nZTo6VGV4dHVyZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgIERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6
OlRleHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsVnVs
a2FuKCksIFN0YXRlQ2hhbmdlOjpQcm9ncmFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxWdWxrYW4oKSksIFN0YXRlQ2hhbmdlOjpQcm9ncmFt
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxs
VnVsa2FuKCkpLCBTdGF0ZUNoYW5nZTo6UHJvZ3JhbSksCi0gICAgICAgICAgICAgICAgICAgICAg
IERyYXdBcnJheXMoRHJhd0NhbGxXR0woKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxXR0woKSksIFN0
YXRlQ2hhbmdlOjpOb0NoYW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMo
RHJhd0NhbGxXR0woKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEF0dHJpYiksCi0gICAgICAgICAgICAg
ICAgICAgICAgIERyYXdBcnJheXMoT2Zmc2NyZWVuKERyYXdDYWxsV0dMKCkpLCBTdGF0ZUNoYW5n
ZTo6VmVydGV4QXR0cmliKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3
Q2FsbFdHTCgpLCBTdGF0ZUNoYW5nZTo6VmVydGV4QnVmZmVyKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxXR0woKSksIFN0YXRlQ2hhbmdlOjpW
ZXJ0ZXhCdWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxs
V0dMKCksIFN0YXRlQ2hhbmdlOjpUZXh0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxXR0woKSksIFN0YXRlQ2hhbmdlOjpUZXh0dXJlKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbFdHTCgpLCBTdGF0ZUNo
YW5nZTo6UHJvZ3JhbSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoT2Zmc2Ny
ZWVuKERyYXdDYWxsV0dMKCkpLCBTdGF0ZUNoYW5nZTo6UHJvZ3JhbSkpOworQU5HTEVfSU5TVEFO
VElBVEVfVEVTVF9BUlJBWShEcmF3Q2FsbFBlcmZCZW5jaG1hcmssIGdUZXN0c1dpdGhEZXZpY2Up
OwogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJm
UGFyYW1zLmNwcAppbmRleCAzMGNmZDYwM2YwZWNlN2NiMDVlYzlhNzgxNzllYmE3NWRmZWY3ZTAx
Li45NGIyMDA4YjgwMTMyMzYxNWE0MTU2MmU3ZDM1Y2U5YzhmMzhmMDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQ
YXJhbXMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5jcHAKQEAgLTM3LDExICszNyw2IEBAIHN0ZDo6c3RyaW5n
IERyYXdDYWxsUGVyZlBhcmFtczo6c3RvcnkoKSBjb25zdAogCiAgICAgc3Ryc3RyIDw8IFJlbmRl
clRlc3RQYXJhbXM6OnN0b3J5KCk7CiAKLSAgICBpZiAobnVtVHJpcyA9PSAwKQotICAgIHsKLSAg
ICAgICAgc3Ryc3RyIDw8ICJfdmFsaWRhdGlvbl9vbmx5IjsKLSAgICB9Ci0KICAgICBpZiAob2Zm
c2NyZWVuKQogICAgIHsKICAgICAgICAgc3Ryc3RyIDw8ICJfb2Zmc2NyZWVuIjsKQEAgLTQ5LDUy
ICs0NCwzIEBAIHN0ZDo6c3RyaW5nIERyYXdDYWxsUGVyZlBhcmFtczo6c3RvcnkoKSBjb25zdAog
CiAgICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKIH0KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOjpl
Z2xfcGxhdGZvcm07Ci0KLW5hbWVzcGFjZSBwYXJhbXMKLXsKLURyYXdDYWxsUGVyZlBhcmFtcyBE
cmF3Q2FsbEQzRDExKCkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBh
cmFtcy5lZ2xQYXJhbWV0ZXJzID0gRDNEMTEoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1E
cmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxEM0Q5KCkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJh
bXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gRDNEOSgpOwotICAgIHJldHVy
biBwYXJhbXM7Ci19Ci0KLURyYXdDYWxsUGVyZlBhcmFtcyBEcmF3Q2FsbE9wZW5HTCgpCi17Ci0g
ICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9
IE9QRU5HTF9PUl9HTEVTKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotRHJhd0NhbGxQZXJm
UGFyYW1zIERyYXdDYWxsVmFsaWRhdGlvbigpCi17Ci0gICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBh
cmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyAgPSBERUZBVUxUKCk7Ci0gICAgcGFyYW1z
Lm51bVRyaXMgICAgICAgID0gMDsKLSAgICBwYXJhbXMucnVuVGltZVNlY29uZHMgPSA1LjA7Ci0g
ICAgcmV0dXJuIHBhcmFtczsKLX0KLQotRHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsVnVsa2Fu
KCkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJh
bWV0ZXJzID0gVlVMS0FOKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotRHJhd0NhbGxQZXJm
UGFyYW1zIERyYXdDYWxsV0dMKCkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwot
ICAgIHBhcmFtcy5kcml2ZXIgPSBhbmdsZTo6R0xFU0RyaXZlclR5cGU6OlN5c3RlbVdHTDsKLSAg
ICByZXR1cm4gcGFyYW1zOwotfQotfSAgLy8gbmFtZXNwYWNlIHBhcmFtcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJm
UGFyYW1zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9E
cmF3Q2FsbFBlcmZQYXJhbXMuaAppbmRleCA0ODM2MDUzY2U2MjkyODQ2Mjc3ZTJmZmM4ODg4ZTFk
ZTk3NTk5ZWQxLi42YzY2Nzg3NjU1M2Q4YzA0Y2YwNmUyZjZkN2FlYzVlN2ZjMDIwNjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3
Q2FsbFBlcmZQYXJhbXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuaApAQCAtMTMsMTIgKzEzLDEzIEBACiAjaW5j
bHVkZSA8b3N0cmVhbT4KIAogI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKKyNpbmNsdWRlICJ0
ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgogCiBzdHJ1Y3QgRHJhd0NhbGxQZXJmUGFy
YW1zIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKIHsKICAgICAvLyBDb21tb24gZGVmYXVsdCBv
cHRpb25zCiAgICAgRHJhd0NhbGxQZXJmUGFyYW1zKCk7Ci0gICAgdmlydHVhbCB+RHJhd0NhbGxQ
ZXJmUGFyYW1zKCk7CisgICAgfkRyYXdDYWxsUGVyZlBhcmFtcygpIG92ZXJyaWRlOwogCiAgICAg
c3RkOjpzdHJpbmcgc3RvcnkoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMjksMTIgKzMwLDU0IEBA
IHN0cnVjdCBEcmF3Q2FsbFBlcmZQYXJhbXMgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcwogCiBu
YW1lc3BhY2UgcGFyYW1zCiB7Ci1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxEM0QxMSgpOwot
RHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsRDNEOSgpOwotRHJhd0NhbGxQZXJmUGFyYW1zIERy
YXdDYWxsT3BlbkdMKCk7Ci1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxWYWxpZGF0aW9uKCk7
Ci1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxWdWxrYW4oKTsKLURyYXdDYWxsUGVyZlBhcmFt
cyBEcmF3Q2FsbFdHTCgpOwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtc1Q+CitQYXJhbXNUIEQz
RDkoY29uc3QgUGFyYW1zVCAmaW4pCit7CisgICAgUGFyYW1zVCBvdXQgICAgICAgPSBpbjsKKyAg
ICBvdXQuZWdsUGFyYW1ldGVycyA9IGFuZ2xlOjplZ2xfcGxhdGZvcm06OkQzRDkoKTsKKyAgICBy
ZXR1cm4gb3V0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1zVD4KK1BhcmFtc1QgRDNE
MTEoY29uc3QgUGFyYW1zVCAmaW4pCit7CisgICAgUGFyYW1zVCBvdXQgICAgICAgPSBpbjsKKyAg
ICBvdXQuZWdsUGFyYW1ldGVycyA9IGFuZ2xlOjplZ2xfcGxhdGZvcm06OkQzRDExKCk7CisgICAg
cmV0dXJuIG91dDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtc1Q+CitQYXJhbXNUIEdM
KGNvbnN0IFBhcmFtc1QgJmluKQoreworICAgIFBhcmFtc1Qgb3V0ICAgICAgID0gaW47CisgICAg
b3V0LmVnbFBhcmFtZXRlcnMgPSBhbmdsZTo6ZWdsX3BsYXRmb3JtOjpPUEVOR0xfT1JfR0xFUygp
OworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbXNUPgorUGFy
YW1zVCBHTDMoY29uc3QgUGFyYW1zVCAmaW4pCit7CisgICAgUGFyYW1zVCBvdXQgICAgICAgPSBp
bjsKKyAgICBvdXQuZWdsUGFyYW1ldGVycyA9IGFuZ2xlOjplZ2xfcGxhdGZvcm06Ok9QRU5HTF9P
Ul9HTEVTKDMsIDApOworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQ
YXJhbXNUPgorUGFyYW1zVCBWdWxrYW4oY29uc3QgUGFyYW1zVCAmaW4pCit7CisgICAgUGFyYW1z
VCBvdXQgICAgICAgPSBpbjsKKyAgICBvdXQuZWdsUGFyYW1ldGVycyA9IGFuZ2xlOjplZ2xfcGxh
dGZvcm06OlZVTEtBTigpOworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBQYXJhbXNUPgorUGFyYW1zVCBXR0woY29uc3QgUGFyYW1zVCAmaW4pCit7CisgICAgUGFyYW1z
VCBvdXQgPSBpbjsKKyAgICBvdXQuZHJpdmVyICA9IGFuZ2xlOjpHTEVTRHJpdmVyVHlwZTo6U3lz
dGVtV0dMOworICAgIHJldHVybiBvdXQ7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBwYXJhbXMKIAog
I2VuZGlmICAvLyBURVNUU19QRVJGX1RFU1RTX0RSQVdfQ0FMTF9QRVJGX1BBUkFNU19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJh
d0VsZW1lbnRzUGVyZi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVy
Zl90ZXN0cy9EcmF3RWxlbWVudHNQZXJmLmNwcAppbmRleCA5ODEyYjQ3YTUxOWIwZmJiNzA4YWQ4
ZmM5ZTcxNmI3ODI2OGFiYWE4Li5jNmU5MzE3YTZmODA1NjZjMjQyZThlYjU2MDI1N2RjN2NlOWU5
YWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9EcmF3RWxlbWVudHNQZXJmLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3RWxlbWVudHNQZXJmLmNwcApAQCAtMjAyLDEwOCArMjAy
LDQyIEBAIHZvaWQgRHJhd0VsZW1lbnRzUGVyZkJlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCiAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CiB9CiAKLURyYXdFbGVtZW50c1BlcmZQYXJhbXMgRHJh
d0VsZW1lbnRzUGVyZkQzRDExUGFyYW1zKGJvb2wgaW5kZXhCdWZmZXJDaGFuZ2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VOdWxs
RGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGluZGV4VHlwZSkKLXsKLSAgICBEcmF3RWxlbWVudHNQZXJmUGFyYW1zIHBhcmFt
czsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9Ci0gICAgICAgIHVzZU51bGxEZXZpY2UgPyBh
bmdsZTo6ZWdsX3BsYXRmb3JtOjpEM0QxMV9OVUxMKCkgOiBhbmdsZTo6ZWdsX3BsYXRmb3JtOjpE
M0QxMSgpOwotICAgIHBhcmFtcy5pbmRleEJ1ZmZlckNoYW5nZWQgPSBpbmRleEJ1ZmZlckNoYW5n
ZWQ7Ci0gICAgcGFyYW1zLnR5cGUgICAgICAgICAgICAgICA9IGluZGV4VHlwZTsKLQotICAgIC8v
IFNjYWxlIGRvd24gaXRlcmF0aW9ucyBmb3Igc2xvd2VyIHRlc3RzLgotICAgIGlmIChpbmRleEJ1
ZmZlckNoYW5nZWQpCi0gICAgICAgIHBhcmFtcy5pdGVyYXRpb25zUGVyU3RlcCAvPSAxMDA7Ci0K
LSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1EcmF3RWxlbWVudHNQZXJmUGFyYW1zIERyYXdFbGVt
ZW50c1BlcmZEM0Q5UGFyYW1zKGJvb2wgaW5kZXhCdWZmZXJDaGFuZ2VkKQorVEVTVF9QKERyYXdF
bGVtZW50c1BlcmZCZW5jaG1hcmssIFJ1bikKIHsKLSAgICBEcmF3RWxlbWVudHNQZXJmUGFyYW1z
IHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyAgICAgID0gYW5nbGU6OmVnbF9wbGF0
Zm9ybTo6RDNEOSgpOwotICAgIHBhcmFtcy5pbmRleEJ1ZmZlckNoYW5nZWQgPSBpbmRleEJ1ZmZl
ckNoYW5nZWQ7Ci0KLSAgICAvLyBTY2FsZSBkb3duIGl0ZXJhdGlvbnMgZm9yIHNsb3dlciB0ZXN0
cy4KLSAgICBpZiAoaW5kZXhCdWZmZXJDaGFuZ2VkKQotICAgICAgICBwYXJhbXMuaXRlcmF0aW9u
c1BlclN0ZXAgLz0gMTAwOwotCi0gICAgcmV0dXJuIHBhcmFtczsKKyAgICBydW4oKTsKIH0KIAot
RHJhd0VsZW1lbnRzUGVyZlBhcmFtcyBEcmF3RWxlbWVudHNQZXJmT3BlbkdMT3JHTEVTUGFyYW1z
KGJvb2wgaW5kZXhCdWZmZXJDaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlTnVsbERldmljZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW5kZXhUeXBlKQotewotICAgIERyYXdFbGVtZW50c1BlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBh
cmFtcy5lZ2xQYXJhbWV0ZXJzID0gdXNlTnVsbERldmljZSA/IGFuZ2xlOjplZ2xfcGxhdGZvcm06
Ok9QRU5HTF9PUl9HTEVTX05VTEwoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6IGFuZ2xlOjplZ2xfcGxhdGZvcm06Ok9QRU5HTF9PUl9HTEVTKCk7Ci0gICAgcGFy
YW1zLmluZGV4QnVmZmVyQ2hhbmdlZCA9IGluZGV4QnVmZmVyQ2hhbmdlZDsKLSAgICBwYXJhbXMu
dHlwZSAgICAgICAgICAgICAgID0gaW5kZXhUeXBlOwotCi0gICAgLy8gU2NhbGUgZG93biBpdGVy
YXRpb25zIGZvciBzbG93ZXIgdGVzdHMuCi0gICAgaWYgKGluZGV4QnVmZmVyQ2hhbmdlZCkKLSAg
ICAgICAgcGFyYW1zLml0ZXJhdGlvbnNQZXJTdGVwIC89IDEwMDsKK3VzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKK3VzaW5nIG5hbWVzcGFjZSBwYXJhbXM7Cit1c2luZyBQID0gRHJhd0VsZW1lbnRzUGVy
ZlBhcmFtczsKIAotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLURyYXdFbGVtZW50c1BlcmZQYXJh
bXMgRHJhd0VsZW1lbnRzUGVyZlZ1bGthblBhcmFtcyhib29sIGluZGV4QnVmZmVyQ2hhbmdlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHVzZU51bGxEZXZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGluZGV4VHlwZSkKK1AgQ29tYmluZUluZGV4VHlwZShjb25zdCBQ
ICZpbiwgR0xlbnVtIGluZGV4VHlwZSkKIHsKLSAgICBEcmF3RWxlbWVudHNQZXJmUGFyYW1zIHBh
cmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9Ci0gICAgICAgIHVzZU51bGxEZXZpY2Ug
PyBhbmdsZTo6ZWdsX3BsYXRmb3JtOjpWVUxLQU5fTlVMTCgpIDogYW5nbGU6OmVnbF9wbGF0Zm9y
bTo6VlVMS0FOKCk7Ci0gICAgcGFyYW1zLmluZGV4QnVmZmVyQ2hhbmdlZCA9IGluZGV4QnVmZmVy
Q2hhbmdlZDsKLSAgICBwYXJhbXMudHlwZSAgICAgICAgICAgICAgID0gaW5kZXhUeXBlOwotCi0g
ICAgLy8gU2NhbGUgZG93biBpdGVyYXRpb25zIGZvciBzbG93ZXIgdGVzdHMuCi0gICAgaWYgKGlu
ZGV4QnVmZmVyQ2hhbmdlZCkKLSAgICAgICAgcGFyYW1zLml0ZXJhdGlvbnNQZXJTdGVwIC89IDEw
MDsKLQotICAgIHJldHVybiBwYXJhbXM7CisgICAgUCBvdXQgICAgPSBpbjsKKyAgICBvdXQudHlw
ZSA9IGluZGV4VHlwZTsKKyAgICByZXR1cm4gb3V0OwogfQogCi1EcmF3RWxlbWVudHNQZXJmUGFy
YW1zIERyYXdFbGVtZW50c1BlcmZXR0xQYXJhbXMoYm9vbCBpbmRleEJ1ZmZlckNoYW5nZWQsIEdM
ZW51bSBpbmRleFR5cGUpCitQIENvbWJpbmVJbmRleEJ1ZmZlckNoYW5nZWQoY29uc3QgUCAmaW4s
IGJvb2wgaW5kZXhCdWZmZXJDaGFuZ2VkKQogewotICAgIERyYXdFbGVtZW50c1BlcmZQYXJhbXMg
cGFyYW1zOwotICAgIHBhcmFtcy5kcml2ZXIgPSBhbmdsZTo6R0xFU0RyaXZlclR5cGU6OlN5c3Rl
bVdHTDsKLQotICAgIHBhcmFtcy5pbmRleEJ1ZmZlckNoYW5nZWQgPSBpbmRleEJ1ZmZlckNoYW5n
ZWQ7Ci0gICAgcGFyYW1zLnR5cGUgICAgICAgICAgICAgICA9IGluZGV4VHlwZTsKKyAgICBQIG91
dCAgICAgICAgICAgICAgICAgID0gaW47CisgICAgb3V0LmluZGV4QnVmZmVyQ2hhbmdlZCA9IGlu
ZGV4QnVmZmVyQ2hhbmdlZDsKIAogICAgIC8vIFNjYWxlIGRvd24gaXRlcmF0aW9ucyBmb3Igc2xv
d2VyIHRlc3RzLgogICAgIGlmIChpbmRleEJ1ZmZlckNoYW5nZWQpCi0gICAgICAgIHBhcmFtcy5p
dGVyYXRpb25zUGVyU3RlcCAvPSAxMDA7CisgICAgICAgIG91dC5pdGVyYXRpb25zUGVyU3RlcCAv
PSAxMDA7CiAKLSAgICByZXR1cm4gcGFyYW1zOworICAgIHJldHVybiBvdXQ7CiB9CiAKLVRFU1Rf
UChEcmF3RWxlbWVudHNQZXJmQmVuY2htYXJrLCBSdW4pCi17Ci0gICAgcnVuKCk7Ci19CitzdGQ6
OnZlY3RvcjxHTGVudW0+IGdJbmRleFR5cGVzID0ge0dMX1VOU0lHTkVEX0lOVCwgR0xfVU5TSUdO
RURfU0hPUlR9Oworc3RkOjp2ZWN0b3I8UD4gZ1dpdGhJbmRleFR5cGUgICA9IENvbWJpbmVXaXRo
VmFsdWVzKHtQKCl9LCBnSW5kZXhUeXBlcywgQ29tYmluZUluZGV4VHlwZSk7CitzdGQ6OnZlY3Rv
cjxQPiBnV2l0aFJlbmRlcmVyID0KKyAgICBDb21iaW5lV2l0aEZ1bmNzKGdXaXRoSW5kZXhUeXBl
LCB7RDNEMTE8UD4sIEdMPFA+LCBWdWxrYW48UD4sIFdHTDxQPn0pOworc3RkOjp2ZWN0b3I8UD4g
Z1dpdGhDaGFuZ2UgPQorICAgIENvbWJpbmVXaXRoVmFsdWVzKGdXaXRoUmVuZGVyZXIsIHtmYWxz
ZSwgdHJ1ZX0sIENvbWJpbmVJbmRleEJ1ZmZlckNoYW5nZWQpOworc3RkOjp2ZWN0b3I8UD4gZ1dp
dGhEZXZpY2UgPSBDb21iaW5lV2l0aEZ1bmNzKGdXaXRoQ2hhbmdlLCB7UGFzc3Rocm91Z2g8UD4s
IE51bGxEZXZpY2U8UD59KTsKIAotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEcmF3RWxlbWVudHNQ
ZXJmQmVuY2htYXJrLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmRDNE
OVBhcmFtcyhmYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZE
M0Q5UGFyYW1zKHRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJm
RDNEMTFQYXJhbXMoZmFsc2UsIHRydWUsIEdMX1VOU0lHTkVEX0lOVCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZEM0QxMVBhcmFtcyh0cnVlLCB0cnVlLCBHTF9VTlNJ
R05FRF9JTlQpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmRDNEMTFQ
YXJhbXMoZmFsc2UsIGZhbHNlLCBHTF9VTlNJR05FRF9JTlQpLAotICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3RWxlbWVudHNQZXJmRDNEMTFQYXJhbXModHJ1ZSwgZmFsc2UsIEdMX1VOU0lHTkVE
X0lOVCksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZEM0QxMVBhcmFt
cyhmYWxzZSwgZmFsc2UsIEdMX1VOU0lHTkVEX1NIT1JUKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRHJhd0VsZW1lbnRzUGVyZkQzRDExUGFyYW1zKGZhbHNlLCB0cnVlLCBHTF9VTlNJR05FRF9T
SE9SVCksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZPcGVuR0xPckdM
RVNQYXJhbXMoZmFsc2UsIGZhbHNlLCBHTF9VTlNJR05FRF9TSE9SVCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZPcGVuR0xPckdMRVNQYXJhbXMoZmFsc2UsIHRydWUs
IEdMX1VOU0lHTkVEX1NIT1JUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRz
UGVyZk9wZW5HTE9yR0xFU1BhcmFtcyh0cnVlLCBmYWxzZSwgR0xfVU5TSUdORURfU0hPUlQpLAot
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmT3BlbkdMT3JHTEVTUGFyYW1z
KGZhbHNlLCBmYWxzZSwgR0xfVU5TSUdORURfSU5UKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0VsZW1lbnRzUGVyZk9wZW5HTE9yR0xFU1BhcmFtcyh0cnVlLCBmYWxzZSwgR0xfVU5TSUdO
RURfSU5UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzUGVyZlZ1bGthblBh
cmFtcyhmYWxzZSwgZmFsc2UsIEdMX1VOU0lHTkVEX1NIT1JUKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0VsZW1lbnRzUGVyZlZ1bGthblBhcmFtcyhmYWxzZSwgdHJ1ZSwgR0xfVU5TSUdO
RURfU0hPUlQpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmVnVsa2Fu
UGFyYW1zKGZhbHNlLCBmYWxzZSwgR0xfVU5TSUdORURfSU5UKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0VsZW1lbnRzUGVyZlZ1bGthblBhcmFtcyhmYWxzZSwgdHJ1ZSwgR0xfVU5TSUdO
RURfSU5UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzUGVyZldHTFBhcmFt
cyhmYWxzZSwgR0xfVU5TSUdORURfU0hPUlQpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1RfQVJS
QVkoRHJhd0VsZW1lbnRzUGVyZkJlbmNobWFyaywgZ1dpdGhEZXZpY2UpOwogCiB9ICAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlVXBsb2FkUGVyZi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlVXBsb2FkUGVyZi5jcHAKaW5kZXgg
MWU1ZjNhNThmODEyMTI5ZjI0ZTAzZjc5Yjg3OWFkOTZkMmEzNmRkMy4uMTcwOGRjM2M5NGMwYjZi
YzdjYjY3NzNjYTc5NmIyNTRlOWQ0NGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVVwbG9hZFBlcmYuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleHR1cmVVcGxvYWRQ
ZXJmLmNwcApAQCAtNDE4LDcgKzQxOCw2IEBAIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVy
ZVVwbG9hZEZ1bGxNaXBCZW5jaG1hcmssCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5HTE9y
R0xFU1BhcmFtcyhmYWxzZSksCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5HTE9yR0xFU1Bh
cmFtcyh0cnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgVnVsa2FuUGFyYW1zKGZhbHNlKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgTnVsbERldmljZShWdWxrYW5QYXJhbXMoZmFsc2UpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgVnVsa2FuUGFyYW1zKHRydWUpKTsKIAogQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChQQk9TdWJJbWFnZUJlbmNobWFyaywKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RyYWNlUGVyZlRlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVHJhY2VQZXJmVGVz
dC5jcHAKaW5kZXggMDRiOWY1ZDAzMWQ3OTY0N2YxZjY2MmI4YzM2NzYzYzI2MmUxZDg5OC4uMjA3
N2U4MDE2NWZmMzBjOWE2MjQ5M2FmNDQ5M2U1NTExNmNiYjZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVHJhY2VQZXJmVGVzdC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVHJhY2VQ
ZXJmVGVzdC5jcHAKQEAgLTgsMTQgKzgsMTUgQEAKIC8vCiAKICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgorI2luY2x1ZGUgImNvbW1vbi9QYWNrZWRFbnVtcy5oIgogI2luY2x1ZGUgImNvbW1vbi9z
eXN0ZW1fdXRpbHMuaCIKICNpbmNsdWRlICJ0ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3Qu
aCIKKyNpbmNsdWRlICJ0ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5oIgogI2lu
Y2x1ZGUgInV0aWwvZWdsX2xvYWRlcl9hdXRvZ2VuLmgiCisjaW5jbHVkZSAidXRpbC9mcmFtZV9j
YXB0dXJlX3V0aWxzLmgiCiAKLSNpbmNsdWRlICJyZXN0cmljdGVkX3RyYWNlcy90cmV4XzEzMDBf
MTMxMC90cmV4XzEzMDBfMTMxMF9jYXB0dXJlX2NvbnRleHQxLmgiCi0jaW5jbHVkZSAicmVzdHJp
Y3RlZF90cmFjZXMvdHJleF8yMDBfMjEwL3RyZXhfMjAwXzIxMF9jYXB0dXJlX2NvbnRleHQxLmgi
Ci0jaW5jbHVkZSAicmVzdHJpY3RlZF90cmFjZXMvdHJleF84MDBfODEwL3RyZXhfODAwXzgxMF9j
YXB0dXJlX2NvbnRleHQxLmgiCi0jaW5jbHVkZSAicmVzdHJpY3RlZF90cmFjZXMvdHJleF85MDBf
OTEwL3RyZXhfOTAwXzkxMF9jYXB0dXJlX2NvbnRleHQxLmgiCisjaW5jbHVkZSAicmVzdHJpY3Rl
ZF90cmFjZXMvbWFuaGF0dGFuXzEwL21hbmhhdHRhbl8xMF9jYXB0dXJlX2NvbnRleHQxLmgiCisj
aW5jbHVkZSAicmVzdHJpY3RlZF90cmFjZXMvdHJleF8yMDAvdHJleF8yMDBfY2FwdHVyZV9jb250
ZXh0MS5oIgogCiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAt
MjYsMTMgKzI3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBlZ2xfcGxhdGZvcm07CiAKIG5hbWVzcGFj
ZQogewordm9pZCBGcmFtZWJ1ZmZlckNoYW5nZUNhbGxiYWNrKHZvaWQgKnVzZXJEYXRhLCBHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpOwogCiBlbnVtIGNsYXNzIFRyYWNlUGVyZlRl
c3RJRAogeworICAgIE1hbmhhdHRhbjEwLAogICAgIFRSZXgyMDAsCi0gICAgVFJleDgwMCwKLSAg
ICBUUmV4OTAwLAotICAgIFRSZXgxMzAwLAorICAgIEludmFsaWRFbnVtLAogfTsKIAogc3RydWN0
IFRyYWNlUGVyZlBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCkBAIC00MCw3
ICs0MSw3IEBAIHN0cnVjdCBUcmFjZVBlcmZQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVz
dFBhcmFtcwogICAgIC8vIENvbW1vbiBkZWZhdWx0IG9wdGlvbnMKICAgICBUcmFjZVBlcmZQYXJh
bXMoKQogICAgIHsKLSAgICAgICAgbWFqb3JWZXJzaW9uID0gMjsKKyAgICAgICAgbWFqb3JWZXJz
aW9uID0gMzsKICAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKICAgICAgICAgd2luZG93V2lkdGgg
ID0gMTkyMDsKICAgICAgICAgd2luZG93SGVpZ2h0ID0gMTA4MDsKQEAgLTU4LDE4ICs1OSwxMiBA
QCBzdHJ1Y3QgVHJhY2VQZXJmUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMK
IAogICAgICAgICBzd2l0Y2ggKHRlc3RJRCkKICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBU
cmFjZVBlcmZUZXN0SUQ6Ok1hbmhhdHRhbjEwOgorICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAi
X21hbmhhdHRhbl8xMCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFRyYWNlUGVyZlRlc3RJRDo6VFJleDIwMDoKICAgICAgICAgICAgICAgICBzdHJzdHIgPDwgIl90
cmV4XzIwMCI7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFRyYWNl
UGVyZlRlc3RJRDo6VFJleDgwMDoKLSAgICAgICAgICAgICAgICBzdHJzdHIgPDwgIl90cmV4Xzgw
MCI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFRyYWNlUGVyZlRl
c3RJRDo6VFJleDkwMDoKLSAgICAgICAgICAgICAgICBzdHJzdHIgPDwgIl90cmV4XzkwMCI7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFRyYWNlUGVyZlRlc3RJRDo6
VFJleDEzMDA6Ci0gICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICJfdHJleF8xMzAwIjsKLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
YXNzZXJ0KDApOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTYsNTEgKzkxLDcxIEBAIGNs
YXNzIFRyYWNlUGVyZlRlc3QgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LCBwdWJsaWMgOjp0ZXN0
aW5nOjpXaXRoUGFyYW1JbnRlcmZhCiAgICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIG9uRnJh
bWVidWZmZXJDaGFuZ2UoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKTsKKwogICAg
IHVpbnQzMl90IG1TdGFydEZyYW1lOwogICAgIHVpbnQzMl90IG1FbmRGcmFtZTsKICAgICBzdGQ6
OmZ1bmN0aW9uPHZvaWQodWludDMyX3QpPiBtUmVwbGF5RnVuYzsKKworICAgIGRvdWJsZSBnZXRI
b3N0VGltZUZyb21HTFRpbWUoR0xpbnQ2NCBnbFRpbWUpOworCisgIHByaXZhdGU6CisgICAgc3Ry
dWN0IFF1ZXJ5SW5mbworICAgIHsKKyAgICAgICAgR0x1aW50IGJlZ2luVGltZXN0YW1wUXVlcnk7
CisgICAgICAgIEdMdWludCBlbmRUaW1lc3RhbXBRdWVyeTsKKyAgICAgICAgR0x1aW50IGZyYW1l
YnVmZmVyOworICAgIH07CisKKyAgICBzdHJ1Y3QgVGltZVNhbXBsZQorICAgIHsKKyAgICAgICAg
R0xpbnQ2NCBnbFRpbWU7CisgICAgICAgIGRvdWJsZSBob3N0VGltZTsKKyAgICB9OworCisgICAg
dm9pZCBzYW1wbGVUaW1lKCk7CisKKyAgICAvLyBGb3IgdHJhY2tpbmcgUmVuZGVyUGFzcy9GQk8g
Y2hhbmdlIHRpbWluZy4KKyAgICBRdWVyeUluZm8gbUN1cnJlbnRRdWVyeSA9IHt9OworICAgIHN0
ZDo6dmVjdG9yPFF1ZXJ5SW5mbz4gbVJ1bm5pbmdRdWVyaWVzOworICAgIHN0ZDo6dmVjdG9yPFRp
bWVTYW1wbGU+IG1UaW1lbGluZTsKKworICAgIHN0ZDo6c3RyaW5nIG1TdGFydGluZ0RpcmVjdG9y
eTsKIH07CiAKIFRyYWNlUGVyZlRlc3Q6OlRyYWNlUGVyZlRlc3QoKQogICAgIDogQU5HTEVSZW5k
ZXJUZXN0KCJUcmFjZVBlcmYiLCBHZXRQYXJhbSgpKSwgbVN0YXJ0RnJhbWUoMCksIG1FbmRGcmFt
ZSgwKQoge30KIAorLy8gVE9ETyhqbWFkaWxsL2Nub3J0aHJvcCk6IFVzZSBkZWNvbXByZXNzaW9u
IHBhdGguIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzYzMAorI2RlZmluZSBUUkFDRV9URVNUX0NBU0Uo
TkFNRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbVN0YXJ0RnJh
bWUgPSBOQU1FOjprUmVwbGF5RnJhbWVTdGFydDsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBtRW5kRnJhbWUgICA9IE5BTUU6OmtSZXBsYXlGcmFtZUVuZDsgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIG1SZXBsYXlGdW5jID0gTkFNRTo6UmVwbGF5Q29udGV4dDFGcmFtZTsgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgTkFNRTo6U2V0QmluYXJ5RGF0YURlY29tcHJlc3NDYWxs
YmFjayhEZWNvbXByZXNzQmluYXJ5RGF0YSk7IFwKKyAgICBOQU1FOjpTZXRCaW5hcnlEYXRhRGly
KEFOR0xFX1RSQUNFX0RBVEFfRElSXyMjTkFNRSk7ICAgICAgICAgXAorICAgIE5BTUU6OlNldHVw
Q29udGV4dDFSZXBsYXkoKQorCiB2b2lkIFRyYWNlUGVyZlRlc3Q6OmluaXRpYWxpemVCZW5jaG1h
cmsoKQogewogICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7CiAKLSAgICAvLyBU
T0RPOiBOb3RlIHRoZSBzdGFydCBhbmQgZW5kIGZyYW1lcyBpbiB0aGUgdHJhY2UKLSAgICAvLyAg
ICAgICBpLmUuIG1TdGFydEZyYW1lID0gdHJleF8yMDBfMjEwOjprUmVwbGF5RnJhbWVTdGFydAor
ICAgIG1TdGFydGluZ0RpcmVjdG9yeSA9IGFuZ2xlOjpHZXRDV0QoKS52YWx1ZSgpOworCisgICAg
Ly8gVG8gbG9hZCB0aGUgdHJhY2UgZGF0YSBwYXRoIGNvcnJlY3RseSB3ZSBzZXQgdGhlIENXRCB0
byB0aGUgZXhlY3V0YWJsZSBkaXIuCisgICAgaWYgKCFJc0FuZHJvaWQoKSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6c3RyaW5nIGV4ZURpciA9IGFuZ2xlOjpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7
CisgICAgICAgIGFuZ2xlOjpTZXRDV0QoZXhlRGlyLmNfc3RyKCkpOworICAgIH0KKwogICAgIHN3
aXRjaCAocGFyYW1zLnRlc3RJRCkKICAgICB7Ci0gICAgICAgIC8vIEZvciBlYWNoIGNhc2UsIGJv
b3RzdHJhcCB0aGUgdHJhY2UKLSAgICAgICAgY2FzZSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXgyMDA6
Ci0gICAgICAgICAgICBtU3RhcnRGcmFtZSA9IDIwMDsKLSAgICAgICAgICAgIG1FbmRGcmFtZSAg
ID0gMjEwOwotICAgICAgICAgICAgbVJlcGxheUZ1bmMgPSB0cmV4XzIwMF8yMTA6OlJlcGxheUNv
bnRleHQxRnJhbWU7Ci0gICAgICAgICAgICB0cmV4XzIwMF8yMTA6OlNldEJpbmFyeURhdGFEaXIo
QU5HTEVfVFJBQ0VfREFUQV9ESVJfdHJleF8yMDBfMjEwKTsKLSAgICAgICAgICAgIHRyZXhfMjAw
XzIxMDo6U2V0dXBDb250ZXh0MVJlcGxheSgpOworICAgICAgICBjYXNlIFRyYWNlUGVyZlRlc3RJ
RDo6TWFuaGF0dGFuMTA6CisgICAgICAgICAgICBUUkFDRV9URVNUX0NBU0UobWFuaGF0dGFuXzEw
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyYWNlUGVyZlRlc3RJRDo6VFJl
eDgwMDoKLSAgICAgICAgICAgIG1TdGFydEZyYW1lID0gODAwOwotICAgICAgICAgICAgbUVuZEZy
YW1lICAgPSA4MTA7Ci0gICAgICAgICAgICBtUmVwbGF5RnVuYyA9IHRyZXhfODAwXzgxMDo6UmVw
bGF5Q29udGV4dDFGcmFtZTsKLSAgICAgICAgICAgIHRyZXhfODAwXzgxMDo6U2V0QmluYXJ5RGF0
YURpcihBTkdMRV9UUkFDRV9EQVRBX0RJUl90cmV4XzgwMF84MTApOwotICAgICAgICAgICAgdHJl
eF84MDBfODEwOjpTZXR1cENvbnRleHQxUmVwbGF5KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXg5MDA6Ci0gICAgICAgICAgICBtU3RhcnRG
cmFtZSA9IDkwMDsKLSAgICAgICAgICAgIG1FbmRGcmFtZSAgID0gOTEwOwotICAgICAgICAgICAg
bVJlcGxheUZ1bmMgPSB0cmV4XzkwMF85MTA6OlJlcGxheUNvbnRleHQxRnJhbWU7Ci0gICAgICAg
ICAgICB0cmV4XzkwMF85MTA6OlNldEJpbmFyeURhdGFEaXIoQU5HTEVfVFJBQ0VfREFUQV9ESVJf
dHJleF85MDBfOTEwKTsKLSAgICAgICAgICAgIHRyZXhfOTAwXzkxMDo6U2V0dXBDb250ZXh0MVJl
cGxheSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElE
OjpUUmV4MTMwMDoKLSAgICAgICAgICAgIG1TdGFydEZyYW1lID0gMTMwMDsKLSAgICAgICAgICAg
IG1FbmRGcmFtZSAgID0gMTMxMDsKLSAgICAgICAgICAgIG1SZXBsYXlGdW5jID0gdHJleF8xMzAw
XzEzMTA6OlJlcGxheUNvbnRleHQxRnJhbWU7Ci0gICAgICAgICAgICB0cmV4XzEzMDBfMTMxMDo6
U2V0QmluYXJ5RGF0YURpcihBTkdMRV9UUkFDRV9EQVRBX0RJUl90cmV4XzEzMDBfMTMxMCk7Ci0g
ICAgICAgICAgICB0cmV4XzEzMDBfMTMxMDo6U2V0dXBDb250ZXh0MVJlcGxheSgpOworICAgICAg
ICBjYXNlIFRyYWNlUGVyZlRlc3RJRDo6VFJleDIwMDoKKyAgICAgICAgICAgIFRSQUNFX1RFU1Rf
Q0FTRSh0cmV4XzIwMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGFzc2VydCgwKTsKQEAgLTE1Miw4MyArMTY3LDE1OSBAQCB2b2lkIFRyYWNlUGVy
ZlRlc3Q6OmluaXRpYWxpemVCZW5jaG1hcmsoKQogICAgIGdldFdpbmRvdygpLT5zZXRWaXNpYmxl
KHRydWUpOwogfQogCi12b2lkIFRyYWNlUGVyZlRlc3Q6OmRlc3Ryb3lCZW5jaG1hcmsoKSB7fQor
I3VuZGVmIFRSQUNFX1RFU1RfQ0FTRQorCit2b2lkIFRyYWNlUGVyZlRlc3Q6OmRlc3Ryb3lCZW5j
aG1hcmsoKQoreworICAgIC8vIEluIG9yZGVyIGZvciB0aGUgbmV4dCB0ZXN0IHRvIGxvYWQsIHJl
c3RvcmUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5CisgICAgYW5nbGU6OlNldENXRChtU3RhcnRpbmdE
aXJlY3RvcnkuY19zdHIoKSk7Cit9CisKK3ZvaWQgVHJhY2VQZXJmVGVzdDo6c2FtcGxlVGltZSgp
Cit7CisgICAgaWYgKG1Jc1RpbWVzdGFtcFF1ZXJ5QXZhaWxhYmxlKQorICAgIHsKKyAgICAgICAg
R0xpbnQ2NCBnbFRpbWU7CisgICAgICAgIC8vIGdsR2V0SW50ZWdlcjY0dkVYVCBpcyBleHBvcnRl
ZCBieSBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgdGltZXIgcXVlcnkgZXh0ZW5zaW9ucy4KKyAgICAg
ICAgLy8gVW5mb3J0dW5hdGVseSBvbmx5IHRoZSBjb3JlIEVQIGlzIGV4cG9zZWQgYnkgc29tZSBk
ZXNrdG9wIGRyaXZlcnMgKGUuZy4gTlZJRElBKS4KKyAgICAgICAgaWYgKGdsR2V0SW50ZWdlcjY0
dkVYVCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xHZXRJbnRlZ2VyNjR2RVhUKEdMX1RJTUVT
VEFNUF9FWFQsICZnbFRpbWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2xHZXRJbnRlZ2VyNjR2KEdMX1RJTUVTVEFNUF9FWFQsICZnbFRpbWUpOwor
ICAgICAgICB9CisgICAgICAgIG1UaW1lbGluZS5wdXNoX2JhY2soe2dsVGltZSwgYW5nbGU6Okdl
dEhvc3RUaW1lU2Vjb25kcygpfSk7CisgICAgfQorfQogCiB2b2lkIFRyYWNlUGVyZlRlc3Q6OmRy
YXdCZW5jaG1hcmsoKQogeworICAgIC8vIEFkZCBhIHRpbWUgc2FtcGxlIGZyb20gR0wgYW5kIHRo
ZSBob3N0LgorICAgIHNhbXBsZVRpbWUoKTsKKwogICAgIHN0YXJ0R3B1VGltZXIoKTsKIAogICAg
IGZvciAodWludDMyX3QgZnJhbWUgPSBtU3RhcnRGcmFtZTsgZnJhbWUgPCBtRW5kRnJhbWU7ICsr
ZnJhbWUpCiAgICAgeworICAgICAgICBjaGFyIGZyYW1lTmFtZVszMl07CisgICAgICAgIHNwcmlu
dGYoZnJhbWVOYW1lLCAiRnJhbWUgJXUiLCBmcmFtZSk7CisgICAgICAgIGJlZ2luSW50ZXJuYWxU
cmFjZUV2ZW50KGZyYW1lTmFtZSk7CisKICAgICAgICAgbVJlcGxheUZ1bmMoZnJhbWUpOwogICAg
ICAgICBnZXRHTFdpbmRvdygpLT5zd2FwKCk7CisKKyAgICAgICAgZW5kSW50ZXJuYWxUcmFjZUV2
ZW50KGZyYW1lTmFtZSk7CisgICAgfQorCisgICAgLy8gUHJvY2VzcyBhbnkgcnVubmluZyBxdWVy
aWVzIG9uY2UgcGVyIGl0ZXJhdGlvbi4KKyAgICBmb3IgKHNpemVfdCBxdWVyeUluZGV4ID0gMDsg
cXVlcnlJbmRleCA8IG1SdW5uaW5nUXVlcmllcy5zaXplKCk7KQorICAgIHsKKyAgICAgICAgY29u
c3QgUXVlcnlJbmZvICZxdWVyeSA9IG1SdW5uaW5nUXVlcmllc1txdWVyeUluZGV4XTsKKworICAg
ICAgICBHTHVpbnQgZW5kUmVzdWx0QXZhaWxhYmxlID0gMDsKKyAgICAgICAgZ2xHZXRRdWVyeU9i
amVjdHVpdkVYVChxdWVyeS5lbmRUaW1lc3RhbXBRdWVyeSwgR0xfUVVFUllfUkVTVUxUX0FWQUlM
QUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5kUmVzdWx0QXZhaWxhYmxl
KTsKKworICAgICAgICBpZiAoZW5kUmVzdWx0QXZhaWxhYmxlID09IEdMX1RSVUUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNoYXIgZmJvTmFtZVszMl07CisgICAgICAgICAgICBzcHJpbnRmKGZi
b05hbWUsICJGQk8gJXUiLCBxdWVyeS5mcmFtZWJ1ZmZlcik7CisKKyAgICAgICAgICAgIEdMaW50
NjQgYmVnaW5UaW1lc3RhbXAgPSAwOworICAgICAgICAgICAgZ2xHZXRRdWVyeU9iamVjdGk2NHZF
WFQocXVlcnkuYmVnaW5UaW1lc3RhbXBRdWVyeSwgR0xfUVVFUllfUkVTVUxULCAmYmVnaW5UaW1l
c3RhbXApOworICAgICAgICAgICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZxdWVyeS5iZWdpblRp
bWVzdGFtcFF1ZXJ5KTsKKyAgICAgICAgICAgIGRvdWJsZSBiZWdpbkhvc3RUaW1lID0gZ2V0SG9z
dFRpbWVGcm9tR0xUaW1lKGJlZ2luVGltZXN0YW1wKTsKKyAgICAgICAgICAgIGJlZ2luR0xUcmFj
ZUV2ZW50KGZib05hbWUsIGJlZ2luSG9zdFRpbWUpOworCisgICAgICAgICAgICBHTGludDY0IGVu
ZFRpbWVzdGFtcCA9IDA7CisgICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVChxdWVy
eS5lbmRUaW1lc3RhbXBRdWVyeSwgR0xfUVVFUllfUkVTVUxULCAmZW5kVGltZXN0YW1wKTsKKyAg
ICAgICAgICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkuZW5kVGltZXN0YW1wUXVlcnkp
OworICAgICAgICAgICAgZG91YmxlIGVuZEhvc3RUaW1lID0gZ2V0SG9zdFRpbWVGcm9tR0xUaW1l
KGVuZFRpbWVzdGFtcCk7CisgICAgICAgICAgICBlbmRHTFRyYWNlRXZlbnQoZmJvTmFtZSwgZW5k
SG9zdFRpbWUpOworCisgICAgICAgICAgICBtUnVubmluZ1F1ZXJpZXMuZXJhc2UobVJ1bm5pbmdR
dWVyaWVzLmJlZ2luKCkgKyBxdWVyeUluZGV4KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHF1ZXJ5SW5kZXgrKzsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHN0b3BHcHVUaW1lcigpOwogfQogCi1UcmFjZVBlcmZQYXJhbXMgVFJleFJlcGxheVBlcmZP
cGVuR0xPckdMRVNQYXJhbXNfMjAwXzIxMCgpCisvLyBDb252ZXJ0cyBhIEdMIHRpbWVzdGFtcCBp
bnRvIGEgaG9zdC1zaWRlIENQVSB0aW1lIGFsaWduZWQgd2l0aCAiR2V0SG9zdFRpbWVTZWNvbmRz
Ii4KKy8vIFRoaXMgY2hlY2sgaXMgbmVjZXNzYXJ5IHRvIGxpbmUgdXAgc2FtcGxlZCB0cmFjZSBl
dmVudHMgaW4gYSBjb25zaXN0ZW50IHRpbWVsaW5lLgorLy8gVXNlcyBhIGxpbmVhciBpbnRlcnBv
bGF0aW9uIGZyb20gYSBzZXJpZXMgb2Ygc2FtcGxlcy4gV2UgZG8gYSBibG9ja2luZyBjYWxsIHRv
IHNhbXBsZQorLy8gYm90aCBob3N0IGFuZCBHTCB0aW1lIG9uY2UgcGVyIHN3YXAuIFdlIHRoZW4g
ZmluZCB0aGUgdHdvIGNsb3Nlc3QgR0wgdGltZXN0YW1wcyBhbmQKKy8vIGludGVycG9sYXRlIHRo
ZSBob3N0IHRpbWVzIGJldHdlZW4gdGhlbSB0byBjb21wdXRlIG91ciByZXN1bHQuIElmIHdlIGFy
ZSBwYXN0IHRoZSBsYXN0CisvLyBHTCB0aW1lc3RhbXAgd2Ugc2FtcGxlIGEgbmV3IGRhdGEgcG9p
bnQgcGFpci4KK2RvdWJsZSBUcmFjZVBlcmZUZXN0OjpnZXRIb3N0VGltZUZyb21HTFRpbWUoR0xp
bnQ2NCBnbFRpbWUpCiB7Ci0gICAgVHJhY2VQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMu
ZWdsUGFyYW1ldGVycyA9IE9QRU5HTF9PUl9HTEVTKCk7Ci0gICAgcGFyYW1zLnRlc3RJRCAgICAg
ICAgPSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXgyMDA7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KKyAg
ICAvLyBGaW5kIHR3byBzYW1wbGVzIHRvIGRvIGEgbGVycC4KKyAgICBzaXplX3QgZmlyc3RTYW1w
bGVJbmRleCA9IG1UaW1lbGluZS5zaXplKCkgLSAxOworICAgIHdoaWxlIChmaXJzdFNhbXBsZUlu
ZGV4ID4gMCkKKyAgICB7CisgICAgICAgIGlmIChtVGltZWxpbmVbZmlyc3RTYW1wbGVJbmRleF0u
Z2xUaW1lIDwgZ2xUaW1lKQorICAgICAgICB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBmaXJzdFNhbXBsZUluZGV4LS07CisgICAgfQogCi1UcmFjZVBlcmZQYXJhbXMg
VFJleFJlcGxheVBlcmZPcGVuR0xPckdMRVNQYXJhbXNfODAwXzgxMCgpCi17Ci0gICAgVHJhY2VQ
ZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IE9QRU5HTF9PUl9H
TEVTKCk7Ci0gICAgcGFyYW1zLnRlc3RJRCAgICAgICAgPSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXg4
MDA7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KKyAgICAvLyBBZGQgYW4gZXh0cmEgc2FtcGxlIGlm
IHdlJ3JlIG1pc3NpbmcgYW4gZW5kaW5nIHNhbXBsZS4KKyAgICBpZiAoZmlyc3RTYW1wbGVJbmRl
eCA9PSBtVGltZWxpbmUuc2l6ZSgpIC0gMSkKKyAgICB7CisgICAgICAgIHNhbXBsZVRpbWUoKTsK
KyAgICB9CiAKLVRyYWNlUGVyZlBhcmFtcyBUUmV4UmVwbGF5UGVyZk9wZW5HTE9yR0xFU1BhcmFt
c185MDBfOTEwKCkKLXsKLSAgICBUcmFjZVBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gT1BFTkdMX09SX0dMRVMoKTsKLSAgICBwYXJhbXMudGVzdElEICAgICAg
ICA9IFRyYWNlUGVyZlRlc3RJRDo6VFJleDkwMDsKLSAgICByZXR1cm4gcGFyYW1zOwotfQorICAg
IGNvbnN0IFRpbWVTYW1wbGUgJnN0YXJ0ID0gbVRpbWVsaW5lW2ZpcnN0U2FtcGxlSW5kZXhdOwor
ICAgIGNvbnN0IFRpbWVTYW1wbGUgJmVuZCAgID0gbVRpbWVsaW5lW2ZpcnN0U2FtcGxlSW5kZXgg
KyAxXTsKIAotVHJhY2VQZXJmUGFyYW1zIFRSZXhSZXBsYXlQZXJmT3BlbkdMT3JHTEVTUGFyYW1z
XzEzMDBfMTMxMCgpCi17Ci0gICAgVHJhY2VQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMu
ZWdsUGFyYW1ldGVycyA9IE9QRU5HTF9PUl9HTEVTKCk7Ci0gICAgcGFyYW1zLnRlc3RJRCAgICAg
ICAgPSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXgxMzAwOwotICAgIHJldHVybiBwYXJhbXM7Ci19Cisg
ICAgLy8gTm90ZTogd2UgaGF2ZSBvYnNlcnZlZCBpbiBzb21lIG9kZCBjYXNlcyBsYXRlciB0aW1l
c3RhbXBzIHByb2R1Y2luZyB2YWx1ZXMgdGhhdCBhcmUKKyAgICAvLyBzbWFsbGVyIHRoYW4gcHJl
Y2VkaW5nIHRpbWVzdGFtcHMuIFRoaXMgYmVhcnMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLgogCi1U
cmFjZVBlcmZQYXJhbXMgVFJleFJlcGxheVBlcmZWdWxrYW5QYXJhbXNfMjAwXzIxMCgpCi17Ci0g
ICAgVHJhY2VQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IFZV
TEtBTigpOwotICAgIHBhcmFtcy50ZXN0SUQgICAgICAgID0gVHJhY2VQZXJmVGVzdElEOjpUUmV4
MjAwOwotICAgIHJldHVybiBwYXJhbXM7Ci19CisgICAgLy8gQ29tcHV0ZSB0aGUgc2NhbGluZyBm
YWN0b3IgZm9yIHRoZSBsZXJwLgorICAgIGRvdWJsZSBnbERlbHRhID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPihnbFRpbWUgLSBzdGFydC5nbFRpbWUpOworICAgIGRvdWJsZSBnbFJhbmdlID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihlbmQuZ2xUaW1lIC0gc3RhcnQuZ2xUaW1lKTsKKyAgICBkb3VibGUgdCAg
ICAgICA9IGdsRGVsdGEgLyBnbFJhbmdlOwogCi1UcmFjZVBlcmZQYXJhbXMgVFJleFJlcGxheVBl
cmZWdWxrYW5QYXJhbXNfODAwXzgxMCgpCi17Ci0gICAgVHJhY2VQZXJmUGFyYW1zIHBhcmFtczsK
LSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IFZVTEtBTigpOwotICAgIHBhcmFtcy50ZXN0SUQg
ICAgICAgID0gVHJhY2VQZXJmVGVzdElEOjpUUmV4ODAwOwotICAgIHJldHVybiBwYXJhbXM7Cisg
ICAgLy8gTGVycCh0MSwgdDIsIHQpCisgICAgZG91YmxlIGhvc3RSYW5nZSA9IGVuZC5ob3N0VGlt
ZSAtIHN0YXJ0Lmhvc3RUaW1lOworICAgIHJldHVybiBtVGltZWxpbmVbZmlyc3RTYW1wbGVJbmRl
eF0uaG9zdFRpbWUgKyBob3N0UmFuZ2UgKiB0OwogfQogCi1UcmFjZVBlcmZQYXJhbXMgVFJleFJl
cGxheVBlcmZWdWxrYW5QYXJhbXNfOTAwXzkxMCgpCisvLyBDYWxsYmFjayBmcm9tIHRoZSBwZXJm
IHRlc3RzLgordm9pZCBUcmFjZVBlcmZUZXN0OjpvbkZyYW1lYnVmZmVyQ2hhbmdlKEdMZW51bSB0
YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIHsKLSAgICBUcmFjZVBlcmZQYXJhbXMgcGFyYW1z
OwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gVlVMS0FOKCk7Ci0gICAgcGFyYW1zLnRlc3RJ
RCAgICAgICAgPSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXg5MDA7Ci0gICAgcmV0dXJuIHBhcmFtczsK
KyAgICBpZiAoIW1Jc1RpbWVzdGFtcFF1ZXJ5QXZhaWxhYmxlKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAodGFyZ2V0ICE9IEdMX0ZSQU1FQlVGRkVSICYmIHRhcmdldCAhPSBHTF9EUkFXX0ZS
QU1FQlVGRkVSKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBoYXZlIGF0IG1vc3Qgb25l
IGFjdGl2ZSB0aW1lc3RhbXAgcXVlcnkgYXQgYSB0aW1lLiBUaGlzIGNvZGUgd2lsbCBlbmQgdGhl
IGN1cnJlbnQgcXVlcnkKKyAgICAvLyBhbmQgaW1tZWRpYXRlbHkgc3RhcnQgYSBuZXcgb25lLgor
ICAgIGlmIChtQ3VycmVudFF1ZXJ5LmJlZ2luVGltZXN0YW1wUXVlcnkgIT0gMCkKKyAgICB7Cisg
ICAgICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmbUN1cnJlbnRRdWVyeS5lbmRUaW1lc3RhbXBRdWVy
eSk7CisgICAgICAgIGdsUXVlcnlDb3VudGVyRVhUKG1DdXJyZW50UXVlcnkuZW5kVGltZXN0YW1w
UXVlcnksIEdMX1RJTUVTVEFNUF9FWFQpOworICAgICAgICBtUnVubmluZ1F1ZXJpZXMucHVzaF9i
YWNrKG1DdXJyZW50UXVlcnkpOworICAgICAgICBtQ3VycmVudFF1ZXJ5ID0ge307CisgICAgfQor
CisgICAgQVNTRVJUKG1DdXJyZW50UXVlcnkuYmVnaW5UaW1lc3RhbXBRdWVyeSA9PSAwKTsKKwor
ICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmbUN1cnJlbnRRdWVyeS5iZWdpblRpbWVzdGFtcFF1ZXJ5
KTsKKyAgICBnbFF1ZXJ5Q291bnRlckVYVChtQ3VycmVudFF1ZXJ5LmJlZ2luVGltZXN0YW1wUXVl
cnksIEdMX1RJTUVTVEFNUF9FWFQpOworICAgIG1DdXJyZW50UXVlcnkuZnJhbWVidWZmZXIgPSBm
cmFtZWJ1ZmZlcjsKIH0KIAotVHJhY2VQZXJmUGFyYW1zIFRSZXhSZXBsYXlQZXJmVnVsa2FuUGFy
YW1zXzEzMDBfMTMxMCgpCitBTkdMRV9NQVlCRV9VTlVTRUQgdm9pZCBGcmFtZWJ1ZmZlckNoYW5n
ZUNhbGxiYWNrKHZvaWQgKnVzZXJEYXRhLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZm
ZXIpCiB7Ci0gICAgVHJhY2VQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1l
dGVycyA9IFZVTEtBTigpOwotICAgIHBhcmFtcy50ZXN0SUQgICAgICAgID0gVHJhY2VQZXJmVGVz
dElEOjpUUmV4MTMwMDsKLSAgICByZXR1cm4gcGFyYW1zOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
VHJhY2VQZXJmVGVzdCAqPih1c2VyRGF0YSktPm9uRnJhbWVidWZmZXJDaGFuZ2UodGFyZ2V0LCBm
cmFtZWJ1ZmZlcik7CiB9CiAKIFRFU1RfUChUcmFjZVBlcmZUZXN0LCBSdW4pCkBAIC0yMzYsMTQg
KzMyNywxOCBAQCBURVNUX1AoVHJhY2VQZXJmVGVzdCwgUnVuKQogICAgIHJ1bigpOwogfQogCi1B
TkdMRV9JTlNUQU5USUFURV9URVNUKFRyYWNlUGVyZlRlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgIFRSZXhSZXBsYXlQZXJmT3BlbkdMT3JHTEVTUGFyYW1zXzIwMF8yMTAoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgVFJleFJlcGxheVBlcmZPcGVuR0xPckdMRVNQYXJhbXNfODAwXzgxMCgp
LAotICAgICAgICAgICAgICAgICAgICAgICBUUmV4UmVwbGF5UGVyZk9wZW5HTE9yR0xFU1BhcmFt
c185MDBfOTEwKCksCi0gICAgICAgICAgICAgICAgICAgICAgIFRSZXhSZXBsYXlQZXJmT3BlbkdM
T3JHTEVTUGFyYW1zXzEzMDBfMTMxMCgpLAotICAgICAgICAgICAgICAgICAgICAgICBUUmV4UmVw
bGF5UGVyZlZ1bGthblBhcmFtc18yMDBfMjEwKCksCi0gICAgICAgICAgICAgICAgICAgICAgIFRS
ZXhSZXBsYXlQZXJmVnVsa2FuUGFyYW1zXzgwMF84MTAoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgVFJleFJlcGxheVBlcmZWdWxrYW5QYXJhbXNfOTAwXzkxMCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBUUmV4UmVwbGF5UGVyZlZ1bGthblBhcmFtc18xMzAwXzEzMTAoKSk7CitUcmFjZVBl
cmZQYXJhbXMgQ29tYmluZVRlc3RJRChjb25zdCBUcmFjZVBlcmZQYXJhbXMgJmluLCBUcmFjZVBl
cmZUZXN0SUQgaWQpCit7CisgICAgVHJhY2VQZXJmUGFyYW1zIG91dCA9IGluOworICAgIG91dC50
ZXN0SUQgICAgICAgICAgPSBpZDsKKyAgICByZXR1cm4gb3V0OworfQorCit1c2luZyBuYW1lc3Bh
Y2UgcGFyYW1zOwordXNpbmcgUCA9IFRyYWNlUGVyZlBhcmFtczsKKworc3RkOjp2ZWN0b3I8UD4g
Z1Rlc3RzV2l0aElEID0gQ29tYmluZVdpdGhWYWx1ZXMoe1AoKX0sIEFsbEVudW1zPFRyYWNlUGVy
ZlRlc3RJRD4oKSwgQ29tYmluZVRlc3RJRCk7CitzdGQ6OnZlY3RvcjxQPiBnVGVzdHNXaXRoUmVu
ZGVyZXIgPSBDb21iaW5lV2l0aEZ1bmNzKGdUZXN0c1dpdGhJRCwge1Z1bGthbjxQPn0pOworQU5H
TEVfSU5TVEFOVElBVEVfVEVTVF9BUlJBWShUcmFjZVBlcmZUZXN0LCBnVGVzdHNXaXRoUmVuZGVy
ZXIpOwogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9nbG1hcmsyQmVuY2htYXJrLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL2dsbWFyazJCZW5j
aG1hcmsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxM2JiMjRiZDdlM2Q2Mjk3NjcwZDJmMDRiZDc0ZTMwODU0
NzA0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcGVyZl90ZXN0cy9nbG1hcmsyQmVuY2htYXJrLmNwcApAQCAtMCwwICsxLDMwMCBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIGdsbWFyazJCZW5jaG1hcms6CisvLyAgIFJ1bnMgdGhlIGdsbWFyazIgYmVuY2ht
YXJrLgorLy8KKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICIuLi9wZXJmX3Rlc3RzL3RoaXJkX3Bh
cnR5L3BlcmYvcGVyZl9yZXN1bHRfcmVwb3J0ZXIuaCIKKyNpbmNsdWRlICJBTkdMRVBlcmZUZXN0
QXJncy5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImNvbW1vbi9z
eXN0ZW1fdXRpbHMuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5o
IgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgorI2luY2x1
ZGUgInV0aWwvdGVzdF91dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVz
cGFjZQoreworCitzdHJ1Y3QgQmVuY2htYXJrSW5mbworeworICAgIGNvbnN0IGNoYXIgKmdsbWFy
azJDb25maWc7CisgICAgY29uc3QgY2hhciAqbmFtZTsKK307CisKKy8vIEVhY2ggZ2xtYXJrMiBz
Y2VuZSBpcyBpbmRpdmlkdWFsbHkgYmVuY2htYXJrZWQuICBJZiBnbG1hcmsyIGlzIHJ1biB3aXRo
b3V0IGEgc3BlY2lmaWMgYmVuY2htYXJrLAorLy8gaXQgY2FuIHByb2R1Y2UgYW4gYWdncmVnYXRl
IHNjb3JlLCB3aGljaCBpcyBub3QgaW50ZXJlc3RpbmcgYXQgdGhlIG1vbWVudC4gIEFkZGluZyBh
biBlbXB0eQorLy8gc3RyaW5nICgiIikgdG8gdGhpcyBsaXN0IHdpbGwgZW5hYmxlIGEgdGVzdCB3
aGVyZSBnbG1hcmsyIGlzIHJ1biB3aXRoIHRoZSBkZWZhdWx0IHNjZW5lcyBhbmQgdGhlCisvLyBz
Y29yZSBmb3IgZWFjaCB0ZXN0IGFzIHdlbGwgYXMgdGhlIG92ZXJhbGwgc2NvcmUgaXMgb3V0cHV0
LgorY29uc3RleHByIEJlbmNobWFya0luZm8ga0JlbmNobWFya3NbXSA9IHsKKyAgICB7ImJ1aWxk
OnVzZS12Ym89ZmFsc2UiLCAiYnVpbGQifSwKKyAgICB7ImJ1aWxkOnVzZS12Ym89dHJ1ZSIsICJi
dWlsZF92Ym8ifSwKKyAgICB7InRleHR1cmU6dGV4dHVyZS1maWx0ZXI9bmVhcmVzdCIsICJ0ZXh0
dXJlX25lYXJlc3QifSwKKyAgICB7InRleHR1cmU6dGV4dHVyZS1maWx0ZXI9bGluZWFyIiwgInRl
eHR1cmVfbGluZWFyIn0sCisgICAgeyJ0ZXh0dXJlOnRleHR1cmUtZmlsdGVyPW1pcG1hcCIsICJ0
ZXh0dXJlX21pcG1hcCJ9LAorICAgIHsic2hhZGluZzpzaGFkaW5nPWdvdXJhdWQiLCAic2hhZGlu
Z19nb3VyYXVkIn0sCisgICAgeyJzaGFkaW5nOnNoYWRpbmc9Ymxpbm4tcGhvbmctaW5mIiwgInNo
YWRpbmdfYmxpbm5fcGhvbmcifSwKKyAgICB7InNoYWRpbmc6c2hhZGluZz1waG9uZyIsICJzaGFk
aW5nX3Bob25nIn0sCisgICAgeyJzaGFkaW5nOnNoYWRpbmc9Y2VsIiwgInNoYWRpbmdfY2VsIn0s
CisgICAgeyJidW1wOmJ1bXAtcmVuZGVyPWhpZ2gtcG9seSIsICJidW1wX2hpZ2hfcG9seSJ9LAor
ICAgIHsiYnVtcDpidW1wLXJlbmRlcj1ub3JtYWxzIiwgImJ1bXBfbm9ybWFscyJ9LAorICAgIHsi
YnVtcDpidW1wLXJlbmRlcj1oZWlnaHQiLCAiYnVtcF9oZWlnaHQifSwKKyAgICB7ImVmZmVjdDJk
Omtlcm5lbD0wLDEsMDsxLC00LDE7MCwxLDA7IiwgImVmZmVjdDJkX2VkZ2UifSwKKyAgICB7ImVm
ZmVjdDJkOmtlcm5lbD0xLDEsMSwxLDE7MSwxLDEsMSwxOzEsMSwxLDEsMTsiLCAiZWZmZWN0MmRf
Ymx1ciJ9LAorICAgIHsicHVsc2FyOmxpZ2h0PWZhbHNlOnF1YWRzPTU6dGV4dHVyZT1mYWxzZSIs
ICJwdWxzYXIifSwKKyAgICB7ImRlc2t0b3A6Ymx1ci1yYWRpdXM9NTplZmZlY3Q9Ymx1cjpwYXNz
ZXM9MTpzZXBhcmFibGU9dHJ1ZTp3aW5kb3dzPTQiLCAiZGVza3RvcF9ibHVyIn0sCisgICAgeyJk
ZXNrdG9wOmVmZmVjdD1zaGFkb3c6d2luZG93cz00IiwgImRlc2t0b3Bfc2hhZG93In0sCisgICAg
eyJidWZmZXI6Y29sdW1ucz0yMDA6aW50ZXJsZWF2ZT1mYWxzZTp1cGRhdGUtZGlzcGVyc2lvbj0w
Ljk6dXBkYXRlLWZyYWN0aW9uPTAuNTp1cGRhdGUtbWV0aG9kPSIKKyAgICAgIm1hcCIsCisgICAg
ICJidWZmZXJfbWFwIn0sCisgICAgeyJidWZmZXI6Y29sdW1ucz0yMDA6aW50ZXJsZWF2ZT1mYWxz
ZTp1cGRhdGUtZGlzcGVyc2lvbj0wLjk6dXBkYXRlLWZyYWN0aW9uPTAuNTp1cGRhdGUtbWV0aG9k
PSIKKyAgICAgInN1YmRhdGEiLAorICAgICAiYnVmZmVyX3N1YmRhdGEifSwKKyAgICB7ImJ1ZmZl
cjpjb2x1bW5zPTIwMDppbnRlcmxlYXZlPXRydWU6dXBkYXRlLWRpc3BlcnNpb249MC45OnVwZGF0
ZS1mcmFjdGlvbj0wLjU6dXBkYXRlLW1ldGhvZD0iCisgICAgICJtYXAiLAorICAgICAiYnVmZmVy
X21hcF9pbnRlcmxlYXZlIn0sCisgICAgeyJpZGVhczpzcGVlZD1kdXJhdGlvbiIsICJpZGVhcyJ9
LAorICAgIHsiamVsbHlmaXNoIiwgImplbGx5ZmlzaCJ9LAorICAgIHsidGVycmFpbiIsICJ0ZXJy
YWluIn0sCisgICAgeyJzaGFkb3ciLCAic2hhZG93In0sCisgICAgeyJyZWZyYWN0IiwgInJlZnJh
Y3QifSwKKyAgICB7ImNvbmRpdGlvbmFsczpmcmFnbWVudC1zdGVwcz0wOnZlcnRleC1zdGVwcz0w
IiwgImNvbmRpdGlvbmFscyJ9LAorICAgIHsiY29uZGl0aW9uYWxzOmZyYWdtZW50LXN0ZXBzPTU6
dmVydGV4LXN0ZXBzPTAiLCAiY29uZGl0aW9uYWxzX2ZyYWdtZW50In0sCisgICAgeyJjb25kaXRp
b25hbHM6ZnJhZ21lbnQtc3RlcHM9MDp2ZXJ0ZXgtc3RlcHM9NSIsICJjb25kaXRpb25hbHNfdmVy
dGV4In0sCisgICAgeyJmdW5jdGlvbjpmcmFnbWVudC1jb21wbGV4aXR5PWxvdzpmcmFnbWVudC1z
dGVwcz01IiwgImZ1bmN0aW9uIn0sCisgICAgeyJmdW5jdGlvbjpmcmFnbWVudC1jb21wbGV4aXR5
PW1lZGl1bTpmcmFnbWVudC1zdGVwcz01IiwgImZ1bmN0aW9uX2NvbXBsZXgifSwKKyAgICB7Imxv
b3A6ZnJhZ21lbnQtbG9vcD1mYWxzZTpmcmFnbWVudC1zdGVwcz01OnZlcnRleC1zdGVwcz01Iiwg
Imxvb3Bfbm9fZnNsb29wIn0sCisgICAgeyJsb29wOmZyYWdtZW50LXN0ZXBzPTU6ZnJhZ21lbnQt
dW5pZm9ybT1mYWxzZTp2ZXJ0ZXgtc3RlcHM9NSIsICJsb29wX25vX3VuaWZvcm0ifSwKKyAgICB7
Imxvb3A6ZnJhZ21lbnQtc3RlcHM9NTpmcmFnbWVudC11bmlmb3JtPXRydWU6dmVydGV4LXN0ZXBz
PTUiLCAibG9vcCJ9LAorfTsKKworc3RydWN0IEdMTWFyazJUZXN0UGFyYW1zIDogcHVibGljIFBs
YXRmb3JtUGFyYW1ldGVycworeworICAgIEJlbmNobWFya0luZm8gaW5mbzsKK307CisKK3N0ZDo6
b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBHTE1hcmsyVGVzdFBh
cmFtcyAmcGFyYW1zKQoreworICAgIG9zIDw8IHN0YXRpY19jYXN0PGNvbnN0IFBsYXRmb3JtUGFy
YW1ldGVycyAmPihwYXJhbXMpIDw8ICJfIiA8PCBwYXJhbXMuaW5mby5uYW1lOworICAgIHJldHVy
biBvczsKK30KKworY2xhc3MgR0xNYXJrMkJlbmNobWFyayA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPEdMTWFyazJUZXN0UGFyYW1zPgoreworICBwdWJsaWM6CisgICAgR0xNYXJrMkJl
bmNobWFyaygpCisgICAgeworICAgICAgICBzd2l0Y2ggKEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRToKKyAgICAgICAgICAgICAgICBtQmFja2VuZCA9ICJkM2QxMSI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTEVTX0FOR0xFOgorICAgICAgICAgICAgICAgIG1CYWNrZW5kID0gImdsIjsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfVlVMS0FOX0FOR0xFOgorICAgICAgICAgICAgICAgIG1CYWNrZW5kID0gInZ1bGthbiI7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN0ZDo6c3RyaW5nIHN0b3J5ID0gR2V0UGFy
YW0oKS5pbmZvLm5hbWU7CisgICAgICAgIG1SZXBvcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8cGVy
Zl90ZXN0OjpQZXJmUmVzdWx0UmVwb3J0ZXI+KCJnbG1hcmsyXyIgKyBtQmFja2VuZCwgc3Rvcnkp
OworICAgICAgICBtUmVwb3J0ZXItPlJlZ2lzdGVySW1wb3J0YW50TWV0cmljKCIuZnBzIiwgImZw
cyIpOworICAgICAgICBtUmVwb3J0ZXItPlJlZ2lzdGVySW1wb3J0YW50TWV0cmljKCIuc2NvcmUi
LCAic2NvcmUiKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBP
bmx5IHN1cHBvcnRlZCBvbiBMaW51eCBhbmQgV2luZG93cyBhdCB0aGUgbW9tZW50LgorICAgICAg
ICBpZiAoIUlzTGludXgoKSAmJiAhSXNXaW5kb3dzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IEJlbmNobWFya0luZm8gYmVuY2ht
YXJrSW5mbyA9IEdldFBhcmFtKCkuaW5mbzsKKyAgICAgICAgY29uc3QgY2hhciAqYmVuY2htYXJr
ICAgICAgICAgICAgID0gYmVuY2htYXJrSW5mby5nbG1hcmsyQ29uZmlnOworICAgICAgICBjb25z
dCBjaGFyICpiZW5jaG1hcmtOYW1lICAgICAgICAgPSBiZW5jaG1hcmtJbmZvLm5hbWU7CisgICAg
ICAgIGJvb2wgY29tcGxldGVSdW4gICAgICAgICAgICAgICAgICA9IGJlbmNobWFyayA9PSBudWxs
cHRyIHx8IGJlbmNobWFya1swXSA9PSAnXDAnOworCisgICAgICAgIE9wdGlvbmFsPHN0ZDo6c3Ry
aW5nPiBjd2QgPSBHZXRDV0QoKTsKKworICAgICAgICAvLyBTZXQgdGhlIGN1cnJlbnQgd29ya2lu
ZyBkaXJlY3RvcnkgdG8gdGhlIGV4ZWN1dGFibGUncywgYXMgdGhlIGRhdGEgcGF0aCBvZiBnbG1h
cmsyIGlzCisgICAgICAgIC8vIHNldCByZWxhdGl2ZSB0byB0aGF0IHBhdGguCisgICAgICAgIHN0
ZDo6c3RyaW5nIGV4ZWN1dGFibGVEaXIgPSBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7CisgICAg
ICAgIFNldENXRChleGVjdXRhYmxlRGlyLmNfc3RyKCkpOworICAgICAgICBTZXRFbnZpcm9ubWVu
dFZhcigiQU5HTEVfREVGQVVMVF9QTEFURk9STSIsIG1CYWNrZW5kLmNfc3RyKCkpOworCisgICAg
ICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gYXJncyA9IHsKKyAgICAgICAgICAgICJnbG1h
cmsyX2FuZ2xlIiwKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKE9uZUZyYW1lKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGFyZ3MucHVzaF9iYWNrKCItLXZhbGlkYXRlIik7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFjb21wbGV0ZVJ1bikKKyAgICAgICAgeworICAgICAgICAgICAgYXJncy5w
dXNoX2JhY2soIi0tYmVuY2htYXJrIik7CisgICAgICAgICAgICBhcmdzLnB1c2hfYmFjayhiZW5j
aG1hcmspOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJSdW5uaW5nIGJlbmNobWFyazog
JXNcbiIsIGJlbmNobWFyayk7CisgICAgICAgIH0KKyAgICAgICAgYXJncy5wdXNoX2JhY2sobnVs
bHB0cik7CisKKyAgICAgICAgUHJvY2Vzc0hhbmRsZSBwcm9jZXNzKGFyZ3MsIHRydWUsIGZhbHNl
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocHJvY2VzcyAmJiBwcm9jZXNzLT5zdGFydGVkKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwcm9jZXNzLT5maW5pc2goKSk7CisKKyAgICAgICAgLy8gUmVz
dG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIG5leHQgdGVzdHMuCisg
ICAgICAgIGlmIChjd2QudmFsaWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgU2V0Q1dEKGN3
ZC52YWx1ZSgpLmNfc3RyKCkpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUX0VRKEVYSVRf
U1VDQ0VTUywgcHJvY2Vzcy0+Z2V0RXhpdENvZGUoKSk7CisKKyAgICAgICAgaWYgKCFPbmVGcmFt
ZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBvdXRwdXQgPSBwcm9jZXNz
LT5nZXRTdGRvdXQoKTsKKyAgICAgICAgICAgIHBhcnNlT3V0cHV0KG91dHB1dCwgYmVuY2htYXJr
TmFtZSwgY29tcGxldGVSdW4pOworICAgICAgICB9CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
dm9pZCBwYXJzZU91dHB1dChjb25zdCBzdGQ6OnN0cmluZyAmb3V0cHV0LCBjb25zdCBjaGFyICpi
ZW5jaG1hcmtOYW1lLCBib29sIGNvbXBsZXRlUnVuKQorICAgIHsKKyAgICAgICAgLy8gT3V0cHV0
IGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICAgICAgICAvLworICAgICAgICAvLyA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAg
ICAgIC8vICAgICBnbG1hcmsyIDIwMTcuMDcKKyAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAvLyAgICAgT3Bl
bkdMIEluZm9ybWF0aW9uCisgICAgICAgIC8vICAgICBHTF9WRU5ET1I6ICAgICAuLi4KKyAgICAg
ICAgLy8gICAgIEdMX1JFTkRFUkVSOiAgIC4uLgorICAgICAgICAvLyAgICAgR0xfVkVSU0lPTjog
ICAgLi4uCisgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICAgICAgLy8gW3Rlc3RdIGNvbmZpZzogRlBTOiB1aW50IEZy
YW1lVGltZTogZmxvYXQgbXMKKyAgICAgICAgLy8gW3Rlc3RdIGNvbmZpZzogTm90IFN1cHBvcnRl
ZAorICAgICAgICAvLyAuLi4KKyAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xtYXJrMiBTY29yZTogdWludAorICAgICAgICAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAg
IC8vCisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2tpcHMgdGhlIGhlYWRlciwgcHJpbnRzIG9u
ZSBsaW5lIGZvciBlYWNoIHRlc3QvY29uZmlnIGxpbmUgd2hlcmUgdGhlcmUncworICAgICAgICAv
LyBhbiBGUFMgdmFsdWUsIGFuZCBmaW5hbGx5IHByaW50cyB0aGUgb3ZlcmFsbCBzY29yZS4KKyAg
ICAgICAgc3RkOjppc3RyaW5nc3RyZWFtIGdsbWFyazJPdXRwdXQob3V0cHV0KTsKKyAgICAgICAg
c3RkOjpzdHJpbmcgbGluZTsKKworICAgICAgICAvLyBFeHBlY3QgPT09PSBhdCB0aGUgdG9wIG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOwor
ICAgICAgICBBU1NFUlRfRVEoJz0nLCBsaW5lWzBdKTsKKworICAgICAgICAvLyBTa2lwIG9uZSBs
aW5lCisgICAgICAgIHN0ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKKworICAgICAg
ICAvLyBFeHBlY3QgPT09PSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBoZWFkZXIKKyAgICAgICAgc3Rk
OjpnZXRsaW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOworICAgICAgICBBU1NFUlRfRVEoJz0nLCBs
aW5lWzBdKTsKKworICAgICAgICAvLyBTa2lwIGZvdXIgbGluZXMKKyAgICAgICAgc3RkOjpnZXRs
aW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOworICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91
dHB1dCwgbGluZSk7CisgICAgICAgIHN0ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsK
KyAgICAgICAgc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOworCisgICAgICAgIC8v
IFRoZSBmb3VydGggbGluZSBpcyB0aGUgR0xfVkVSU0lPTi4gIEV4cGVjdCBpdCB0byBpbmNsdWRl
IEFOR0xFLCBvdGhlcndpc2Ugd2UgYXJlIG5vdAorICAgICAgICAvLyBydW5uaW5nIGFnYWluc3Qg
QU5HTEUuCisgICAgICAgIEFTU0VSVF9ORShsaW5lLmZpbmQoIkFOR0xFIiksIHN0ZDo6c3RyaW5n
OjpucG9zKTsKKworICAgICAgICAvLyBFeHBlY3QgPT09PSBhdCB0aGUgYm90dG9tIG9mIHRoZSBo
ZWFkZXIKKyAgICAgICAgc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOworICAgICAg
ICBBU1NFUlRfRVEoJz0nLCBsaW5lWzBdKTsKKworICAgICAgICAvLyBSZWFkIGNvbmZpZ3MgdW50
aWwgdGhlIHRvcCBvZiB0aGUgZm9vdGVyIGlzIHJlYWNoZWQKKyAgICAgICAgd2hpbGUgKHN0ZDo6
Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKSAmJiBsaW5lWzBdICE9ICc9JykKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gUGFyc2UgdGhlIGxpbmUKKyAgICAgICAgICAgIHN0ZDo6aXN0cmlu
Z3N0cmVhbSBsaW4obGluZSk7CisKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRlc3ROYW1lLCB0
ZXN0Q29uZmlnOworICAgICAgICAgICAgbGluID4+IHRlc3ROYW1lID4+IHRlc3RDb25maWc7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShsaW4pOworCisgICAgICAgICAgICBzdGQ6OnN0cmluZyBm
cHNUYWcsIGZyYW1ldGltZVRhZzsKKyAgICAgICAgICAgIHNpemVfdCBmcHM7CisgICAgICAgICAg
ICBmbG9hdCBmcmFtZXRpbWU7CisKKyAgICAgICAgICAgIGxpbiA+PiBmcHNUYWcgPj4gZnBzID4+
IGZyYW1ldGltZVRhZyA+PiBmcmFtZXRpbWU7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBsaW5l
IGlzIG5vdCBpbiBgRlBTOiB1aW50IEZyYW1lVGltZTogRmxvYXQgbXNgIGZvcm1hdCwgdGhlIHRl
c3QgaXMgbm90CisgICAgICAgICAgICAvLyBzdXBwb3J0ZWQuICBJdCB3aWxsIGJlIHNraXBwZWQu
CisgICAgICAgICAgICBpZiAoIWxpbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRVhQRUNUX0VRKCJGUFM6Iiwg
ZnBzVGFnKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgiRnJhbWVUaW1lOiIsIGZyYW1ldGltZVRh
Zyk7CisKKyAgICAgICAgICAgIGlmICghY29tcGxldGVSdW4pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbVJlcG9ydGVyLT5BZGRSZXN1bHQoIi5mcHMiLCBmcHMpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gR2V0IHRoZSBzY29yZSBsaW5lOiBgZ2xtYXJr
MiBTY29yZTogdWludGAKKyAgICAgICAgc3RkOjpzdHJpbmcgZ2xtYXJrMlRhZywgc2NvcmVUYWc7
CisgICAgICAgIHNpemVfdCBzY29yZTsKKyAgICAgICAgZ2xtYXJrMk91dHB1dCA+PiBnbG1hcmsy
VGFnID4+IHNjb3JlVGFnID4+IHNjb3JlOworICAgICAgICBFWFBFQ1RfVFJVRShnbG1hcmsyT3V0
cHV0KTsKKyAgICAgICAgRVhQRUNUX0VRKCJnbG1hcmsyIiwgZ2xtYXJrMlRhZyk7CisgICAgICAg
IEVYUEVDVF9FUSgiU2NvcmU6Iiwgc2NvcmVUYWcpOworCisgICAgICAgIGlmIChjb21wbGV0ZVJ1
bikKKyAgICAgICAgeworICAgICAgICAgICAgbVJlcG9ydGVyLT5BZGRSZXN1bHQoIi5zY29yZSIs
IHNjb3JlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6c3RyaW5nIG1CYWNrZW5kID0g
ImludmFsaWQiOworICAgIHN0ZDo6dW5pcXVlX3B0cjxwZXJmX3Rlc3Q6OlBlcmZSZXN1bHRSZXBv
cnRlcj4gbVJlcG9ydGVyOworfTsKKworVEVTVF9QKEdMTWFyazJCZW5jaG1hcmssIFJ1bikKK3sK
KyAgICBydW4oKTsKK30KKworR0xNYXJrMlRlc3RQYXJhbXMgQ29tYmluZUVHTFBsYXRmb3JtKGNv
bnN0IEdMTWFyazJUZXN0UGFyYW1zICZpbiwgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIGVnbFBhcmFt
cykKK3sKKyAgICBHTE1hcmsyVGVzdFBhcmFtcyBvdXQgPSBpbjsKKyAgICBvdXQuZWdsUGFyYW1l
dGVycyAgICAgPSBlZ2xQYXJhbXM7CisgICAgcmV0dXJuIG91dDsKK30KKworR0xNYXJrMlRlc3RQ
YXJhbXMgQ29tYmluZUluZm8oY29uc3QgR0xNYXJrMlRlc3RQYXJhbXMgJmluLCBCZW5jaG1hcmtJ
bmZvIGluZm8pCit7CisgICAgR0xNYXJrMlRlc3RQYXJhbXMgb3V0ID0gaW47CisgICAgb3V0Lmlu
Zm8gICAgICAgICAgICAgID0gaW5mbzsKKyAgICByZXR1cm4gb3V0OworfQorCit1c2luZyBuYW1l
c3BhY2UgZWdsX3BsYXRmb3JtOworCitzdGQ6OnZlY3RvcjxHTE1hcmsyVGVzdFBhcmFtcz4gZ1Rl
c3RzV2l0aEluZm8gPQorICAgIENvbWJpbmVXaXRoVmFsdWVzKHtHTE1hcmsyVGVzdFBhcmFtcygp
fSwga0JlbmNobWFya3MsIENvbWJpbmVJbmZvKTsKK3N0ZDo6dmVjdG9yPEVHTFBsYXRmb3JtUGFy
YW1ldGVycz4gZ0VHTFBsYXRmb3JtcyA9IHtEM0QxMSgpLCBPUEVOR0xFUygpLCBWVUxLQU4oKX07
CitzdGQ6OnZlY3RvcjxHTE1hcmsyVGVzdFBhcmFtcz4gZ1Rlc3RzV2l0aFBsYXRmb3JtID0KKyAg
ICBDb21iaW5lV2l0aFZhbHVlcyhnVGVzdHNXaXRoSW5mbywgZ0VHTFBsYXRmb3JtcywgQ29tYmlu
ZUVHTFBsYXRmb3JtKTsKKworQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9BUlJBWShHTE1hcmsyQmVu
Y2htYXJrLCBnVGVzdHNXaXRoUGxhdGZvcm0pOworCit9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0
ZWRfdHJhY2VzLy5naXRpZ25vcmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNTY2
ODJhMTIxNTlhOGVlNzQ4MzBhYTgyNjcwZWRhNThjMzU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3Ry
YWNlcy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsNCBAQAorbWFuaGF0dGFuXzEwCittYW5oYXR0YW5f
MTAudGFyLmd6Cit0cmV4XzIwMAordHJleF8yMDAudGFyLmd6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9P
V05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0
cmljdGVkX3RyYWNlcy9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE3MzkxYTYzOGNlOGQ5OTMwZmQ0YWE0
NDk5ZmFiNjZiZTUyYWNiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL09XTkVSUwpAQCAtMCww
ICsxLDIgQEAKK2Nub3J0aHJvcEBnb29nbGUuY29tCitqbWFkaWxsQGNocm9taXVtLm9yZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVz
dHJpY3RlZF90cmFjZXMvUmVzdHJpY3RlZFRyYWNlVGVzdHMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9SZXN0cmljdGVk
VHJhY2VUZXN0cy5tZAppbmRleCAzM2JlYWZmOTI0ZDM4MTVjMjBhNjI0Mzc2NzdiNDJkMTFiZWI3
OTI0Li4yOWY4MzEyNjFmNGFiZTBiMjI1YTZkNjU1MGRhYzc2OGE5YmIxOTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVk
X3RyYWNlcy9SZXN0cmljdGVkVHJhY2VUZXN0cy5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9SZXN0cmljdGVkVHJh
Y2VUZXN0cy5tZApAQCAtMzMsMTggKzMzLDE0IEBAIEJ1aWxkIHRoZSBhbmdsZV9wZXJmdGVzdHM6
CiBgYGAKIGF1dG9uaW5qYSAtQyBvdXQvUmVsZWFzZSBhbmdsZV9wZXJmdGVzdHMKIGBgYAotT24g
ZGVza3RvcCwgcnVuIHRoZW0gbGlrZSBzbzoKK1J1biB0aGVtIGxpa2Ugc286CiBgYGAKIG91dC9S
ZWxlYXNlL2FuZ2xlX3BlcmZ0ZXN0cyAtLWd0ZXN0X2ZpbHRlcj1UcmFjZVBlcmZUZXN0KgogYGBg
Ci1PbiBBbmRyb2lkLCBydW4gdGhlbSBsaWtlIHNvOgotYGBgCi1vdXQvUmVsZWFzZS9iaW4vcnVu
X2FuZ2xlX3BlcmZ0ZXN0cyAtLWd0ZXN0X2ZpbHRlcj1UcmFjZVBlcmZUZXN0KgotYGBgCiAKICMj
IFVwZGF0aW5nIHRyYWNlcwogCi1UaGUgY3VycmVudCBUUmV4IHRyYWNlcyB3ZXJlIGNhcHR1cmVk
IG9uIFdpbmRvd3Mgd2l0aCBhbiBOdmlkaWEgZHJpdmVyLgorVGhlIE1hbmhhdHRhbiBhbmQgVFJl
eCB0cmFjZXMgd2VyZSBjYXB0dXJlZCBvbiBXaW5kb3dzIHdpdGggYW4gSW50ZWwgZHJpdmVyIChk
dWUgdG8gYmV0dGVyIGNvbXByZXNzZWQgdGV4dHVyZSBzdXBwb3J0KS4KIAogVXBkYXRlIFNUQVJU
IGFuZCBFTkQgZm9yIGVhY2ggcmFuZ2UuCiAKQEAgLTU2LDE1ICs1MiwyNyBAQCBweXRob24gLi5c
Li5cLi5cLi5cc2NyaXB0c1xyZWZyZXNoX2FuZ2xlX2xpYnMucHkgLS12ZXJib3NlCiBzZXQgVEZX
X1BBQ0tBR0VfRElSPS4uLy4uLy4uL2J1aWxkL3ZzMjAxNy14NjQvdGVzdGZ3L3Rmdy1kZXYKIHNl
dCBBTkdMRV9ERUZBVUxUX1BMQVRGT1JNPXZ1bGthbgogCisjIFRSZXgKIHNldCBTVEFSVD0yMDAK
IHNldCBFTkQ9MjEwCiBzZXQgTEFCRUw9dHJleAotbWtkaXIgLi5cLi5cLi5cLi5cLi5cYW5nbGVc
c3JjXHRlc3RzXHBlcmZfdGVzdHNccmVzdHJpY3RlZF90cmFjZXNcJUxBQkVMJV8lU1RBUlQlXyVF
TkQlCi1zZXQgQU5HTEVfQ0FQVFVSRV9MQUJFTD0lTEFCRUwlXyVTVEFSVCVfJUVORCUKK21rZGly
IC4uXC4uXC4uXC4uXC4uXGFuZ2xlXHNyY1x0ZXN0c1xwZXJmX3Rlc3RzXHJlc3RyaWN0ZWRfdHJh
Y2VzXCVMQUJFTCVfJVNUQVJUJQorc2V0IEFOR0xFX0NBUFRVUkVfTEFCRUw9JUxBQkVMJV8lU1RB
UlQlCiBzZXQgQU5HTEVfQ0FQVFVSRV9GUkFNRV9TVEFSVD0lU1RBUlQlCiBzZXQgQU5HTEVfQ0FQ
VFVSRV9GUkFNRV9FTkQ9JUVORCUKLXNldCBBTkdMRV9DQVBUVVJFX09VVF9ESVI9Li5cLi5cLi5c
Li5cLi5cYW5nbGVcc3JjXHRlc3RzXHBlcmZfdGVzdHNccmVzdHJpY3RlZF90cmFjZXNcJUxBQkVM
JV8lU1RBUlQlXyVFTkQlCitzZXQgQU5HTEVfQ0FQVFVSRV9PVVRfRElSPS4uXC4uXC4uXC4uXC4u
XGFuZ2xlXHNyY1x0ZXN0c1xwZXJmX3Rlc3RzXHJlc3RyaWN0ZWRfdHJhY2VzXCVMQUJFTCVfJVNU
QVJUJQogLi5cYmluXHRlc3Rmd19hcHAuZXhlIC1iIC4uLy4uLy4uL2J1aWxkL3ZzMjAxNy14NjQv
dGVzdGZ3L3Rmdy1kZXYgLS1nZnggZWdsIC13IDE5MjAgLWggMTA4MCAtdCBnbF90cmV4IC0tZWkg
LWZyYW1lX3N0ZXBfdGltZT00MAorCisjIE1hbmhhdHRhbgorc2V0IFNUQVJUPTEwCitzZXQgRU5E
PTIwCitzZXQgTEFCRUw9bWFuaGF0dGFuCitta2RpciAuLlwuLlwuLlwuLlwuLlxhbmdsZVxzcmNc
dGVzdHNccGVyZl90ZXN0c1xyZXN0cmljdGVkX3RyYWNlc1wlTEFCRUwlXyVTVEFSVCUKK3NldCBB
TkdMRV9DQVBUVVJFX0xBQkVMPSVMQUJFTCVfJVNUQVJUJQorc2V0IEFOR0xFX0NBUFRVUkVfRlJB
TUVfU1RBUlQ9JVNUQVJUJQorc2V0IEFOR0xFX0NBUFRVUkVfRlJBTUVfRU5EPSVFTkQlCitzZXQg
QU5HTEVfQ0FQVFVSRV9PVVRfRElSPS4uXC4uXC4uXC4uXC4uXGFuZ2xlXHNyY1x0ZXN0c1xwZXJm
X3Rlc3RzXHJlc3RyaWN0ZWRfdHJhY2VzXCVMQUJFTCVfJVNUQVJUJQorLi5cYmluXHRlc3Rmd19h
cHAuZXhlIC1iIC4uLy4uLy4uL2J1aWxkL3ZzMjAxNy14NjQvdGVzdGZ3L3Rmdy1kZXYgLS1nZngg
ZWdsIC13IDE5MjAgLWggMTA4MCAtdCBnbF9tYW5oYXR0YW4gLS1laSAtZnJhbWVfc3RlcF90aW1l
PTQwCiBgYGAKIAogIyMjIExpbnV4CkBAIC03NywyNSArODUsMzUgQEAgZXhwb3J0IFRGV19QQUNL
QUdFX0RJUj0uLi8uLi8uLi9idWlsZC9saW51eC90ZXN0ZndfUmVsZWFzZS90ZnctZGV2CiBleHBv
cnQgQU5HTEVfREVGQVVMVF9QTEFURk9STT12dWxrYW4KIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9
LgogCisjIFRSZXgKIGV4cG9ydCBTVEFSVD0yMDAKIGV4cG9ydCBFTkQ9MjEwCiBleHBvcnQgTEFC
RUw9dHJleAotbWtkaXIgLXAgLi4vLi4vLi4vLi4vLi4vYW5nbGUvc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvcmVzdHJpY3RlZF90cmFjZXMvJHtMQUJFTH1fJHtTVEFSVH1fJHtFTkR9Ci1leHBvcnQgQU5H
TEVfQ0FQVFVSRV9MQUJFTD0ke0xBQkVMfV8ke1NUQVJUfV8ke0VORH0KK21rZGlyIC1wIC4uLy4u
Ly4uLy4uLy4uL2FuZ2xlL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzLyR7
TEFCRUx9XyR7U1RBUlR9CitleHBvcnQgQU5HTEVfQ0FQVFVSRV9MQUJFTD0ke0xBQkVMfV8ke1NU
QVJUfQorZXhwb3J0IEFOR0xFX0NBUFRVUkVfRlJBTUVfU1RBUlQ9JFNUQVJUCitleHBvcnQgQU5H
TEVfQ0FQVFVSRV9GUkFNRV9FTkQ9JEVORAorZXhwb3J0IEFOR0xFX0NBUFRVUkVfT1VUX0RJUj0u
Li8uLi8uLi8uLi8uLi9hbmdsZS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNl
cy8ke0xBQkVMfV8ke1NUQVJUfQorLi4vYmluL3Rlc3Rmd19hcHAgLWIgJFRGV19QQUNLQUdFX0RJ
UiAtLWdmeCBlZ2wgLXcgMTkyMCAtaCAxMDgwIC10IGdsX3RyZXggLS1laSAtZnJhbWVfc3RlcF90
aW1lPTQwCisKKyMgTWFuaGF0dGFuCitleHBvcnQgU1RBUlQ9MTAKK2V4cG9ydCBFTkQ9MjAKK2V4
cG9ydCBMQUJFTD1tYW5oYXR0YW4KK21rZGlyIC1wIC4uLy4uLy4uLy4uLy4uL2FuZ2xlL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzLyR7TEFCRUx9XyR7U1RBUlR9CitleHBv
cnQgQU5HTEVfQ0FQVFVSRV9MQUJFTD0ke0xBQkVMfV8ke1NUQVJUfQogZXhwb3J0IEFOR0xFX0NB
UFRVUkVfRlJBTUVfU1RBUlQ9JFNUQVJUCiBleHBvcnQgQU5HTEVfQ0FQVFVSRV9GUkFNRV9FTkQ9
JEVORAotZXhwb3J0IEFOR0xFX0NBUFRVUkVfT1VUX0RJUj0uLi8uLi8uLi8uLi8uLi9hbmdsZS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy8ke0xBQkVMfV8ke1NUQVJUfV8k
e0VORH0KLS4uL2Jpbi90ZXN0ZndfYXBwIC1iICRURldfUEFDS0FHRV9ESVIgLS1nZnggZWdsIC13
IDUxMiAtaCA1MTIgLXQgZ2xfdHJleCAtLWVpIC1mcmFtZV9zdGVwX3RpbWU9NDAKK2V4cG9ydCBB
TkdMRV9DQVBUVVJFX09VVF9ESVI9Li4vLi4vLi4vLi4vLi4vYW5nbGUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvJHtMQUJFTH1fJHtTVEFSVH0KKy4uL2Jpbi90ZXN0Zndf
YXBwIC1iICRURldfUEFDS0FHRV9ESVIgLS1nZnggZWdsIC13IDE5MjAgLWggMTA4MCAtdCBnbF9t
YW5oYXR0YW4gLS1laSAtZnJhbWVfc3RlcF90aW1lPTQwCiBgYGAKIAogIyMgVXBsb2FkIHRvIHRo
ZSBjbG91ZAogCiBgYGAKIGNkIH4vY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzCi11cGxvYWRfdG9fZ29vZ2xlX3N0b3Jh
Z2UucHkgLS1idWNrZXQgY2hyb21lLWFuZ2xlLWNhcHR1cmUtYmluYXJpZXMgLS1hcmNoaXZlIHRy
ZXhfMjAwXzIxMAotdXBsb2FkX3RvX2dvb2dsZV9zdG9yYWdlLnB5IC0tYnVja2V0IGNocm9tZS1h
bmdsZS1jYXB0dXJlLWJpbmFyaWVzIC0tYXJjaGl2ZSB0cmV4XzgwMF84MTAKLXVwbG9hZF90b19n
b29nbGVfc3RvcmFnZS5weSAtLWJ1Y2tldCBjaHJvbWUtYW5nbGUtY2FwdHVyZS1iaW5hcmllcyAt
LWFyY2hpdmUgdHJleF85MDBfOTEwCi11cGxvYWRfdG9fZ29vZ2xlX3N0b3JhZ2UucHkgLS1idWNr
ZXQgY2hyb21lLWFuZ2xlLWNhcHR1cmUtYmluYXJpZXMgLS1hcmNoaXZlIHRyZXhfMTMwMF8xMzEw
Cit1cGxvYWRfdG9fZ29vZ2xlX3N0b3JhZ2UucHkgLS1idWNrZXQgY2hyb21lLWFuZ2xlLWNhcHR1
cmUtYmluYXJpZXMgLS1hcmNoaXZlIHRyZXhfMjAwCit1cGxvYWRfdG9fZ29vZ2xlX3N0b3JhZ2Uu
cHkgLS1idWNrZXQgY2hyb21lLWFuZ2xlLWNhcHR1cmUtYmluYXJpZXMgLS1hcmNoaXZlIG1hbmhh
dHRhbl8xMAogYGBgCiAKICMjIEFkZGluZyBuZXcgdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL2Fu
Z2xlX3RyYWNlX3BlcmZfdGVzdHMuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvYW5nbGVfdHJhY2VfcGVyZl90ZXN0cy5n
bmkKaW5kZXggODJhYTYzOGY0NTFlZTcxNGM2ZTUzZDRkNjgyYzYwMmVhNDI4NDQxZC4uMWVlY2I5
ZTU4NzhiZWYzN2RhMWI4ZTAzNTdkNDk0MGU5NjQzOTY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvYW5n
bGVfdHJhY2VfcGVyZl90ZXN0cy5nbmkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvYW5nbGVfdHJhY2VfcGVyZl90ZXN0
cy5nbmkKQEAgLTgsMTYgKzgsMTQgQEAKIGltcG9ydCgiLi4vLi4vLi4vLi4vZ25pL2FuZ2xlLmdu
aSIpCiAKIF90ZXN0cyA9IFsKLSAgInRyZXhfMjAwXzIxMCIsCi0gICJ0cmV4XzgwMF84MTAiLAot
ICAidHJleF85MDBfOTEwIiwKLSAgInRyZXhfMTMwMF8xMzEwIiwKKyAgIm1hbmhhdHRhbl8xMCIs
CisgICJ0cmV4XzIwMCIsCiBdCiAKIGFuZ2xlX3RyYWNlX3BlcmZfc291cmNlcyA9IFsgInBlcmZf
dGVzdHMvVHJhY2VQZXJmVGVzdC5jcHAiIF0KLWFuZ2xlX3RyYWNlX3BlcmZfZGF0YSA9Ci0gICAg
WyAiJHthbmdsZV9yb290fS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcyIg
XQorCiBhbmdsZV90cmFjZV9wZXJmX2RlZmluZXMgPSBbXQorYW5nbGVfdHJhY2VfcGVyZl9kYXRh
ID0gW10KIAogZm9yZWFjaChfdGVzdCwgX3Rlc3RzKSB7CiAgIF90ZXN0X2RpciA9ICIke190ZXN0
fSIKQEAgLTM2LDkgKzM0LDExIEBAIGZvcmVhY2goX3Rlc3QsIF90ZXN0cykgewogICBpZiAoaXNf
YW5kcm9pZCkgewogICAgIF90ZXN0X2RhdGFfcGF0aCA9ICIvc2RjYXJkL2Nocm9taXVtX3Rlc3Rz
X3Jvb3QvdGhpcmRfcGFydHkvYW5nbGUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90
cmFjZXMvJHtfdGVzdH0iCiAgIH0gZWxzZSB7Ci0gICAgX3Rlc3RfZGF0YV9wYXRoID0gcmViYXNl
X3BhdGgoIiR7X3Rlc3RfZGlyfSIpCisgICAgX3Rlc3RfZGF0YV9wYXRoID0gcmViYXNlX3BhdGgo
IiR7X3Rlc3RfZGlyfSIsIHJvb3Rfb3V0X2RpcikKICAgfQogCiAgIGFuZ2xlX3RyYWNlX3BlcmZf
ZGVmaW5lcyArPQogICAgICAgWyAiQU5HTEVfVFJBQ0VfREFUQV9ESVJfJHtfdGVzdH09XCIke190
ZXN0X2RhdGFfcGF0aH1cIiIgXQorCisgIGFuZ2xlX3RyYWNlX3BlcmZfZGF0YSArPSBbICJwZXJm
X3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzLyR7X3Rlc3RfZGlyfS8ke190ZXN0fV9jYXB0dXJlX2Nv
bnRleHQxLmFuZ2xlZGF0YS5neiIgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvbWFuaGF0dGFuXzEw
LnRhci5nei5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvcmVzdHJpY3RlZF90cmFjZXMvbWFuaGF0dGFuXzEwLnRhci5nei5zaGExCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdkMjhjZjg3MmQyNmQxNjNjYjg3OGQwNzZlN2Q5OWMxNWU5N2U5NmQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmlj
dGVkX3RyYWNlcy9tYW5oYXR0YW5fMTAudGFyLmd6LnNoYTEKQEAgLTAsMCArMSBAQAorZjgwMTE5
OWM3OTU4YjIwNTMxY2JkMDIyODlkYWE1MTI3MDkwZDNhNQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMTMwMF8xMzEwLnRhci5nei5zaGExIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFj
ZXMvdHJleF8xMzAwXzEzMTAudGFyLmd6LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDRmOTYwMDVkNmMyM2M2MjY4ODdkYjQxODdlYWZmYzI2MGMzOTRiM2MuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvdHJleF8xMzAwXzEzMTAu
dGFyLmd6LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1mMGFhYTM0NDM5MTg3OTFj
NzUwNzZjYmUxODNjMGRjMDEzMzU2NTZiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVz
dHJpY3RlZF90cmFjZXMvdHJleF8yMDAudGFyLmd6LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzIwMC50YXIu
Z3ouc2hhMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNWZlYjMwNTc2ODViMzA2YTdkOGRhNzNlMGRlNDk3MDIxYjBh
ZGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvdHJleF8yMDAudGFyLmd6LnNoYTEKQEAgLTAs
MCArMSBAQAorZGJhYWNkNjljMjE5MTQxYTUzOTViZWY3Njc2NTVmMDM0MDkwODlhYQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMjAwXzIxMC50YXIu
Z3ouc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jl
c3RyaWN0ZWRfdHJhY2VzL3RyZXhfMjAwXzIxMC50YXIuZ3ouc2hhMQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYTcyYWM5NGRmZjBkNTc5NDUyMzFhOWE5NGI4NDgyNGFkODRmZjJiYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4
XzIwMF8yMTAudGFyLmd6LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi00YmQzMjc0
ZTgwYjhiMjczNTg1OThkOTBjMzUxMGQyMjBlYTM4MTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvdHJleF84MDBfODEwLnRhci5nei5zaGExIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMv
dHJleF84MDBfODEwLnRhci5nei5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
Y2QxZGY0MDcwMDQwZDlhODU5M2QxYzIyMThjNDcwOGI4YjliYWRmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfODAwXzgxMC50YXIuZ3ou
c2hhMQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWNhY2ViMGY0YmUxOTU5OTEzMGExMWVi
ZDlkMWRlNDUzNzFiMGMyZDgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVk
X3RyYWNlcy90cmV4XzkwMF85MTAudGFyLmd6LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzkwMF85MTAudGFy
Lmd6LnNoYTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkY2U4YTc0ZjU0OTVmZDVi
YjE4YjI3MTcxMWJmZmJjMzMzMjJiNGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvcmVzdHJpY3RlZF90cmFjZXMvdHJleF85MDBfOTEwLnRhci5nei5zaGExCisrKyAvZGV2L251
bGwKQEAgLTEgKzAsMCBAQAotZjNjMjJkZjhiOTM2NDQ3OGU3ZmI1Zjg4MjM5MjhlN2M5YWJmMzk2
MApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0
LmNjIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRf
cGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MKaW5kZXggMTEzMWZhZjI3YTJiZWVjNGMxYmM1OGJmZmE5
NmMwNTMyYTNlMzM3YS4uYjA3ODBiNzc0OTk2ZjkzNDAyYWNmN2ZlYjk0YjE1YTM5NmZkNTY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMv
dGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MKQEAg
LTQsMzUgKzQsNDEgQEAKIAogI2luY2x1ZGUgInBlcmZfdGVzdC5oIgogCisjaW5jbHVkZSAiY29t
bW9uL3RoaXJkX3BhcnR5L2Jhc2UvYW5nbGViYXNlL25vX2Rlc3RydWN0b3IuaCIKKwogI2luY2x1
ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgogCi1u
YW1lc3BhY2UgeworbmFtZXNwYWNlCit7CiAKLXN0ZDo6c3RyaW5nIEZvcm1hdFN0cmluZyhjb25z
dCBjaGFyICpmbXQsIHZhX2xpc3QgdmFyYXJnKSB7Ci0gIHN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFy
PiBidWZmZXIoNTEyKTsKK3N0ZDo6c3RyaW5nIEZvcm1hdFN0cmluZyhjb25zdCBjaGFyICpmbXQs
IHZhX2xpc3QgdmFyYXJnKQoreworICAgIHN0YXRpYyBhbmdsZTo6YmFzZTo6Tm9EZXN0cnVjdG9y
PHN0ZDo6dmVjdG9yPGNoYXI+PiBidWZmZXIoNTEyKTsKIAotICAvLyBBdHRlbXB0IHRvIGp1c3Qg
cHJpbnQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyCi0gIGludCBsZW4gPSB2c25wcmludGYoJmJ1ZmZl
clswXSwgYnVmZmVyLnNpemUoKSwgZm10LCB2YXJhcmcpOwotICBpZiAobGVuIDwgMCB8fCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxlbikgPj0gYnVmZmVyLnNpemUoKSkgewotICAgIC8vIEJ1ZmZlciB3
YXMgbm90IGxhcmdlIGVub3VnaCwgY2FsY3VsYXRlIHRoZSByZXF1aXJlZCBzaXplIGFuZCByZXNp
emUgdGhlIGJ1ZmZlcgotICAgIGxlbiA9IHZzbnByaW50ZihOVUxMLCAwLCBmbXQsIHZhcmFyZyk7
Ci0gICAgYnVmZmVyLnJlc2l6ZShsZW4gKyAxKTsKKyAgICAvLyBBdHRlbXB0IHRvIGp1c3QgcHJp
bnQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyCisgICAgaW50IGxlbiA9IHZzbnByaW50ZihidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZtdCwgdmFyYXJnKTsKKyAgICBpZiAobGVuIDwgMCB8
fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbikgPj0gYnVmZmVyLT5zaXplKCkpCisgICAgeworICAg
ICAgICAvLyBCdWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2gsIGNhbGN1bGF0ZSB0aGUgcmVxdWly
ZWQgc2l6ZSBhbmQgcmVzaXplIHRoZSBidWZmZXIKKyAgICAgICAgbGVuID0gdnNucHJpbnRmKE5V
TEwsIDAsIGZtdCwgdmFyYXJnKTsKKyAgICAgICAgYnVmZmVyLT5yZXNpemUobGVuICsgMSk7CiAK
LSAgICAvLyBQcmludCBhZ2FpbgotICAgIHZzbnByaW50ZigmYnVmZmVyWzBdLCBidWZmZXIuc2l6
ZSgpLCBmbXQsIHZhcmFyZyk7Ci0gIH0KKyAgICAgICAgLy8gUHJpbnQgYWdhaW4KKyAgICAgICAg
dnNucHJpbnRmKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZm10LCB2YXJhcmcpOwor
ICAgIH0KIAotICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuKTsKKyAgICBy
ZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLT5kYXRhKCksIGxlbik7CiB9CiAKLXN0ZDo6c3RyaW5n
IFN0cmluZ1ByaW50Zihjb25zdCBjaGFyICpmbXQsIC4uLikgewotICB2YV9saXN0IHZhcmFyZzsK
LSAgdmFfc3RhcnQodmFyYXJnLCBmbXQpOwotICBzdGQ6OnN0cmluZyByZXN1bHQgPSBGb3JtYXRT
dHJpbmcoZm10LCB2YXJhcmcpOwotICB2YV9lbmQodmFyYXJnKTsKLSAgcmV0dXJuIHJlc3VsdDsK
K3N0ZDo6c3RyaW5nIFN0cmluZ1ByaW50Zihjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgICB2
YV9saXN0IHZhcmFyZzsKKyAgICB2YV9zdGFydCh2YXJhcmcsIGZtdCk7CisgICAgc3RkOjpzdHJp
bmcgcmVzdWx0ID0gRm9ybWF0U3RyaW5nKGZtdCwgdmFyYXJnKTsKKyAgICB2YV9lbmQodmFyYXJn
KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGQ6OnN0cmluZyBOdW1iZXJUb1N0cmluZyhz
aXplX3QgdmFsdWUpCkBAIC00NSwxNzMgKzUxLDE2NCBAQCBzdGQ6OnN0cmluZyBOdW1iZXJUb1N0
cmluZyhkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIFN0cmluZ1ByaW50ZigiJS4xMGxmIiwgdmFs
dWUpOwogfQogCi1zdGQ6OnN0cmluZyBSZXN1bHRzVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcm
IG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0g
IC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gPHZhbHVlPiA8dW5pdHM+
Ci0gIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gezxtZWFuPiwgPHN0
ZCBkZXZpYXRpb24+fSA8dW5pdHM+Ci0gIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFj
ZV9uYW1lPj0gWzx2YWx1ZT4sdmFsdWUsdmFsdWUsLi4uLF0gPHVuaXRzPgotICByZXR1cm4gU3Ry
aW5nUHJpbnRmKCIlc1JFU1VMVCAlcyVzOiAlcz0gJXMlcyVzICVzXG4iLCBpbXBvcnRhbnQgPyAi
KiIgOiAiIiwgbWVhc3VyZW1lbnQuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICBtb2Rp
Zmllci5jX3N0cigpLCB0cmFjZS5jX3N0cigpLCBwcmVmaXguY19zdHIoKSwgdmFsdWVzLmNfc3Ry
KCksCi0gICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmNfc3RyKCksIHVuaXRzLmNfc3RyKCkp
OwotfQotCi12b2lkIFByaW50UmVzdWx0c0ltcGwoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVt
ZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlcywKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBzdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50
KSB7Ci0gIGZmbHVzaChzdGRvdXQpOwotICBwcmludGYoIiVzIiwgUmVzdWx0c1RvU3RyaW5nKG1l
YXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmVmaXgsIHN1ZmZpeCwgdW5pdHMsIGltcG9ydGFudCkuY19zdHIoKSk7Ci0g
IGZmbHVzaChzdGRvdXQpOworc3RkOjpzdHJpbmcgUmVzdWx0c1RvU3RyaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nICZtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnRyYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZ1bml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFu
dCkKK3sKKyAgICAvLyA8Kj5SRVNVTFQgPGdyYXBoX25hbWU+OiA8dHJhY2VfbmFtZT49IDx2YWx1
ZT4gPHVuaXRzPgorICAgIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0g
ezxtZWFuPiwgPHN0ZCBkZXZpYXRpb24+fSA8dW5pdHM+CisgICAgLy8gPCo+UkVTVUxUIDxncmFw
aF9uYW1lPjogPHRyYWNlX25hbWU+PSBbPHZhbHVlPix2YWx1ZSx2YWx1ZSwuLi4sXSA8dW5pdHM+
CisgICAgcmV0dXJuIFN0cmluZ1ByaW50ZigiJXNSRVNVTFQgJXMlczogJXM9ICVzJXMlcyAlc1xu
IiwgaW1wb3J0YW50ID8gIioiIDogIiIsIG1lYXN1cmVtZW50LmNfc3RyKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllci5jX3N0cigpLCB0cmFjZS5jX3N0cigpLCBwcmVmaXguY19z
dHIoKSwgdmFsdWVzLmNfc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguY19z
dHIoKSwgdW5pdHMuY19zdHIoKSk7Cit9CisKK3ZvaWQgUHJpbnRSZXN1bHRzSW1wbChjb25zdCBz
dGQ6OnN0cmluZyAmbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJm1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFs
dWVzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwcmVmaXgsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnN1ZmZpeCwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgcHJpbnRm
KCIlcyIsCisgICAgICAgICAgIFJlc3VsdHNUb1N0cmluZyhtZWFzdXJlbWVudCwgbW9kaWZpZXIs
IHRyYWNlLCB2YWx1ZXMsIHByZWZpeCwgc3VmZml4LCB1bml0cywgaW1wb3J0YW50KQorICAgICAg
ICAgICAgICAgLmNfc3RyKCkpOworICAgIGZmbHVzaChzdGRvdXQpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2UKIAotbmFtZXNwYWNlIHBlcmZfdGVzdCB7CituYW1lc3BhY2UgcGVyZl90ZXN0Cit7CiAK
LXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKK3ZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpz
dHJpbmcgJm1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
bW9kaWZpZXIsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwKICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywKKyAgICAgICAgICAgICAgICAg
Ym9vbCBpbXBvcnRhbnQpCit7CiAgICAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwgbW9k
aWZpZXIsIHRyYWNlLCBOdW1iZXJUb1N0cmluZyh2YWx1ZSksIHN0ZDo6c3RyaW5nKCksCiAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLCB1bml0cywgaW1wb3J0YW50KTsKIH0KIAot
dm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAordm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0
cmluZyAmbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZt
b2RpZmllciwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLAogICAg
ICAgICAgICAgICAgICBkb3VibGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaXRzLAorICAgICAgICAgICAgICAgICBi
b29sIGltcG9ydGFudCkKK3sKICAgICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LCBtb2Rp
ZmllciwgdHJhY2UsIE51bWJlclRvU3RyaW5nKHZhbHVlKSwgc3RkOjpzdHJpbmcoKSwKICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksIHVuaXRzLCBpbXBvcnRhbnQpOwogfQogCi12
b2lkIEFwcGVuZFJlc3VsdChzdGQ6OnN0cmluZyYgb3V0cHV0LAotICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRyYWNlLAordm9pZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcgJm91dHB1dCwKKyAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZWFzdXJlbWVudCwKKyAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwKICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZSwK
LSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAg
ICAgICAgIGJvb2wgaW1wb3J0YW50KSB7CisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkKK3sKICAgICBv
dXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIE51
bWJlclRvU3RyaW5nKHZhbHVlKSwgc3RkOjpzdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKCksIHVuaXRzLCBpbXBvcnRhbnQpOwogfQogCi12b2lkIFBy
aW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAg
ICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVt
ZW50LAotICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgIHRy
YWNlLAotICAgICAgICAgICAgICAgICAgIHZhbHVlLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAgICAgICAg
ICAgICAgICB1bml0cywKLSAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpOwotfQotCi12b2lk
IEFwcGVuZFJlc3VsdChzdGQ6OnN0cmluZyYgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHRyYWNlLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAotICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAg
ICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgb3V0cHV0ICs9IFJlc3VsdHNUb1N0cmluZyhtZWFzdXJl
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50KTsKLX0K
LQotdm9pZCBQcmludFJlc3VsdE1lYW5BbmRFcnJvcihjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3Vy
ZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBt
b2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHRyYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bWVhbl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRh
bnQpIHsKLSAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCBt
ZWFuX2FuZF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAieyIsICJ9IiwgdW5pdHMsIGltcG9y
dGFudCk7Ci19Ci0KLXZvaWQgQXBwZW5kUmVzdWx0TWVhbkFuZEVycm9yKHN0ZDo6c3RyaW5nJiBv
dXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbWVhbl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGltcG9ydGFudCkgewotICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50
LCBtb2RpZmllciwgdHJhY2UsIG1lYW5fYW5kX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ7IiwgIn0iLCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBQcmludFJlc3Vs
dExpc3QoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1
bml0cywKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIFByaW50UmVz
dWx0c0ltcGwobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgdmFsdWVzLAotICAgICAgICAg
ICAgICAgICAgICJbIiwgIl0iLCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBBcHBlbmRS
ZXN1bHRMaXN0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgb3V0cHV0ICs9IFJl
c3VsdHNUb1N0cmluZyhtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCB2YWx1ZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlsiLCAiXSIsIHVuaXRzLCBpbXBvcnRhbnQpOwotfQot
Ci12b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hhcmdlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFyZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIFByaW50U3lzdGVtQ29t
bWl0Q2hhcmdlKHN0ZG91dCwgdGVzdF9uYW1lLCBjaGFyZ2UsIGltcG9ydGFudCk7Cit2b2lkIFBy
aW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nICZtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1vZGlmaWVyLAorICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmdHJhY2UsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2
YWx1ZSwKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaXRzLAorICAgICAg
ICAgICAgICAgICBib29sIGltcG9ydGFudCkKK3sKKyAgICBQcmludFJlc3VsdHNJbXBsKG1lYXN1
cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlLCBzdGQ6OnN0cmluZygpLCBzdGQ6OnN0cmlu
ZygpLCB1bml0cywKKyAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCk7Cit9CisKK3ZvaWQg
QXBwZW5kUmVzdWx0KHN0ZDo6c3RyaW5nICZvdXRwdXQsCisgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
dHJhY2UsCisgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFsdWUsCisgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCkKK3sKKyAgICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1
cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlLCBzdGQ6OnN0cmluZygpLCBzdGQ6OnN0cmlu
ZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMsIGltcG9ydGFudCk7Cit9
CisKK3ZvaWQgUHJpbnRSZXN1bHRNZWFuQW5kRXJyb3IoY29uc3Qgc3RkOjpzdHJpbmcgJm1lYXN1
cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
bW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
Jm1lYW5fYW5kX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0
YW50KQoreworICAgIFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFj
ZSwgbWVhbl9hbmRfZXJyb3IsICJ7IiwgIn0iLCB1bml0cywgaW1wb3J0YW50KTsKIH0KIAotdm9p
ZCBQcmludFN5c3RlbUNvbW1pdENoYXJnZShGSUxFKiB0YXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCit2b2lkIEFwcGVuZFJl
c3VsdE1lYW5BbmRFcnJvcihzdGQ6OnN0cmluZyAmb3V0cHV0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lYXN1cmVtZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1vZGlmaWVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lYW5fYW5kX2Vycm9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgb3V0
cHV0ICs9CisgICAgICAgIFJlc3VsdHNUb1N0cmluZyhtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRy
YWNlLCBtZWFuX2FuZF9lcnJvciwgInsiLCAifSIsIHVuaXRzLCBpbXBvcnRhbnQpOworfQorCit2
b2lkIFByaW50UmVzdWx0TGlzdChjb25zdCBzdGQ6OnN0cmluZyAmbWVhc3VyZW1lbnQsCisgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbW9kaWZpZXIsCisgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsCisgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQp
Cit7CisgICAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCB2
YWx1ZXMsICJbIiwgIl0iLCB1bml0cywgaW1wb3J0YW50KTsKK30KKwordm9pZCBBcHBlbmRSZXN1
bHRMaXN0KHN0ZDo6c3RyaW5nICZvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJm1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZh
bHVlcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgb3V0cHV0ICs9IFJl
c3VsdHNUb1N0cmluZyhtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCB2YWx1ZXMsICJbIiwg
Il0iLCB1bml0cywgaW1wb3J0YW50KTsKK30KKwordm9pZCBQcmludFN5c3RlbUNvbW1pdENoYXJn
ZShjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lLCBzaXplX3QgY2hhcmdlLCBib29sIGltcG9y
dGFudCkKK3sKKyAgICBQcmludFN5c3RlbUNvbW1pdENoYXJnZShzdGRvdXQsIHRlc3RfbmFtZSwg
Y2hhcmdlLCBpbXBvcnRhbnQpOworfQorCit2b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hhcmdlKEZJ
TEUgKnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnRlc3RfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNoYXJn
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgZnBy
aW50Zih0YXJnZXQsICIlcyIsIFN5c3RlbUNvbW1pdENoYXJnZVRvU3RyaW5nKHRlc3RfbmFtZSwg
Y2hhcmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1wb3J0YW50KS5jX3N0cigpKTsKLX0KLQotc3RkOjpzdHJpbmcgU3lzdGVtQ29tbWl0Q2hh
cmdlVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFyZ2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICBzdGQ6OnN0cmluZyB0
cmFjZV9uYW1lKHRlc3RfbmFtZSk7Ci0gIHN0ZDo6c3RyaW5nIG91dHB1dDsKLSAgQXBwZW5kUmVz
dWx0KG91dHB1dCwKLSAgICAgICAgICAgICAgICJjb21taXRfY2hhcmdlIiwKLSAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICAgICAgICAgICAiY2MiICsgdHJhY2VfbmFtZSwKLSAg
ICAgICAgICAgICAgIGNoYXJnZSwKLSAgICAgICAgICAgICAgICJrYiIsCi0gICAgICAgICAgICAg
ICBpbXBvcnRhbnQpOwotICByZXR1cm4gb3V0cHV0OworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGltcG9ydGFudCkKK3sKKyAgICBmcHJpbnRmKHRhcmdldCwgIiVzIiwgU3lzdGVt
Q29tbWl0Q2hhcmdlVG9TdHJpbmcodGVzdF9uYW1lLCBjaGFyZ2UsIGltcG9ydGFudCkuY19zdHIo
KSk7Cit9CisKK3N0ZDo6c3RyaW5nIFN5c3RlbUNvbW1pdENoYXJnZVRvU3RyaW5nKGNvbnN0IHN0
ZDo6c3RyaW5nICZ0ZXN0X25hbWUsIHNpemVfdCBjaGFyZ2UsIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIHN0ZDo6c3RyaW5nIHRyYWNlX25hbWUodGVzdF9uYW1lKTsKKyAgICBzdGQ6OnN0cmluZyBv
dXRwdXQ7CisgICAgQXBwZW5kUmVzdWx0KG91dHB1dCwgImNvbW1pdF9jaGFyZ2UiLCBzdGQ6OnN0
cmluZygpLCAiY2MiICsgdHJhY2VfbmFtZSwgY2hhcmdlLCAia2IiLAorICAgICAgICAgICAgICAg
ICBpbXBvcnRhbnQpOworICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBw
ZXJmX3Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGVzdF91dGlscy9BTkdMRVRlc3QuY3BwCmluZGV4IDAyODUzODE0OTFlODAzZDIwMjE1N2Uz
ZDY2ZDc0MGYzOGQxNjZiYjguLjQwNWQ1ZjQ1ODI0YjU5YTk1NTlkN2YwMDgxNTY1ODY3NWI0NDgx
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL0FOR0xFVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcApAQCAtMjcxLDYgKzI3MSwxOCBAQCBHTENvbG9yMzJG
IFJlYWRDb2xvcjMyRihHTGludCB4LCBHTGludCB5KQogICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwogICAgIHJldHVybiBhY3R1YWw7CiB9CisKK3ZvaWQgTG9hZEVudHJ5UG9pbnRzV2l0aFV0aWxM
b2FkZXIoKQoreworI2lmIGRlZmluZWQoQU5HTEVfVVNFX1VUSUxfTE9BREVSKQorICAgIFBGTkVH
TEdFVFBST0NBRERSRVNTUFJPQyBnZXRQcm9jQWRkcmVzczsKKyAgICBBTkdMRVRlc3RFbnZpcm9u
bWVudDo6R2V0RUdMTGlicmFyeSgpLT5nZXRBcygiZWdsR2V0UHJvY0FkZHJlc3MiLCAmZ2V0UHJv
Y0FkZHJlc3MpOworICAgIEFTU0VSVF9ORShudWxscHRyLCBnZXRQcm9jQWRkcmVzcyk7CisKKyAg
ICBMb2FkRUdMKGdldFByb2NBZGRyZXNzKTsKKyAgICBMb2FkR0xFUyhnZXRQcm9jQWRkcmVzcyk7
CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfVVNFX1VUSUxfTE9BREVSKQorfQogfSAgLy8gbmFt
ZXNwYWNlIGFuZ2xlCiAKIHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKQEAgLTM3Miw2ICszODQsMTIg
QEAgQU5HTEVUZXN0QmFzZTo6QU5HTEVUZXN0QmFzZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMg
JnBhcmFtcykKICAgICBQbGF0Zm9ybVBhcmFtZXRlcnMgd2l0aE1ldGhvZHMgICAgICAgICAgICA9
IHBhcmFtczsKICAgICB3aXRoTWV0aG9kcy5lZ2xQYXJhbWV0ZXJzLnBsYXRmb3JtTWV0aG9kcyA9
ICZnRGVmYXVsdFBsYXRmb3JtTWV0aG9kczsKIAorICAgIC8vIFdlIGRvbid0IGJ1aWxkIHZ1bGth
biBkZWJ1ZyBsYXllcnMgb24gTWFjIChodHRwOi8vYW5nbGVidWcuY29tLzQzNzYpCisgICAgaWYg
KElzT1NYKCkgJiYgd2l0aE1ldGhvZHMuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9WVUxLQU5fQU5HTEUpCisgICAgeworICAgICAgICB3aXRoTWV0aG9kcy5lZ2xQYXJh
bWV0ZXJzLmRlYnVnTGF5ZXJzRW5hYmxlZCA9IGZhbHNlOworICAgIH0KKwogICAgIGF1dG8gaXRl
ciA9IGdGaXh0dXJlcy5maW5kKHdpdGhNZXRob2RzKTsKICAgICBpZiAoaXRlciAhPSBnRml4dHVy
ZXMuZW5kKCkpCiAgICAgewpAQCAtNTA2LDE0ICs1MjQsNyBAQCB2b2lkIEFOR0xFVGVzdEJhc2U6
OkFOR0xFVGVzdFNldFVwKCkKIAogICAgIGlmIChtQ3VycmVudFBhcmFtcy0+bm9GaXh0dXJlKQog
ICAgIHsKLSNpZiBkZWZpbmVkKEFOR0xFX1VTRV9VVElMX0xPQURFUikKLSAgICAgICAgUEZORUdM
R0VUUFJPQ0FERFJFU1NQUk9DIGdldFByb2NBZGRyZXNzOwotICAgICAgICBBTkdMRVRlc3RFbnZp
cm9ubWVudDo6R2V0RUdMTGlicmFyeSgpLT5nZXRBcygiZWdsR2V0UHJvY0FkZHJlc3MiLCAmZ2V0
UHJvY0FkZHJlc3MpOwotICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgZ2V0UHJvY0FkZHJlc3Mp
OwotCi0gICAgICAgIExvYWRFR0woZ2V0UHJvY0FkZHJlc3MpOwotICAgICAgICBMb2FkR0xFUyhn
ZXRQcm9jQWRkcmVzcyk7Ci0jZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfVVNFX1VUSUxfTE9BREVS
KQorICAgICAgICBMb2FkRW50cnlQb2ludHNXaXRoVXRpbExvYWRlcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMjk4LDcgKzEzMDksNyBAQCB2b2lkIEFOR0xFUHJvY2Vzc1Rlc3RB
cmdzKGludCAqYXJnYywgY2hhciAqYXJndltdKQogICAgIHsKICAgICAgICAgaWYgKHN0cm5jbXAo
YXJndlthcmdJbmRleF0sIGtVc2VDb25maWcsIHN0cmxlbihrVXNlQ29uZmlnKSkgPT0gMCkKICAg
ICAgICAgewotICAgICAgICAgICAgZ1NlbGVjdGVkQ29uZmlnID0gc3RkOjpzdHJpbmcoYXJndlth
cmdJbmRleF0gKyBzdHJsZW4oa1VzZUNvbmZpZykpOworICAgICAgICAgICAgU2V0U2VsZWN0ZWRD
b25maWcoYXJndlthcmdJbmRleF0gKyBzdHJsZW4oa1VzZUNvbmZpZykpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChzdHJuY21wKGFyZ3ZbYXJnSW5kZXhdLCBrU2VwYXJhdGVQcm9jZXNzUGVyQ29u
ZmlnLCBzdHJsZW4oa1NlcGFyYXRlUHJvY2Vzc1BlckNvbmZpZykpID09CiAgICAgICAgICAgICAw
KQpAQCAtMTMwOSw3ICsxMzIwLDcgQEAgdm9pZCBBTkdMRVByb2Nlc3NUZXN0QXJncyhpbnQgKmFy
Z2MsIGNoYXIgKmFyZ3ZbXSkKIAogICAgIGlmIChnU2VwYXJhdGVQcm9jZXNzUGVyQ29uZmlnKQog
ICAgIHsKLSAgICAgICAgaWYgKCFnU2VsZWN0ZWRDb25maWcuZW1wdHkoKSkKKyAgICAgICAgaWYg
KElzQ29uZmlnU2VsZWN0ZWQoKSkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjpjb3V0IDw8
ICJDYW5ub3QgdXNlIGJvdGggYSBzaW5nbGUgdGVzdCBjb25maWcgYW5kIHNlcGFyYXRlIHByb2Nl
c3Nlcy5cbiI7CiAgICAgICAgICAgICBleGl0KDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaAppbmRleCA1NDQ5
YWM1NDliMTJkNmViNjFkMjZjNGMzNzEyOWNiZDRiOWJiODU3Li5jY2VmZGUyMjQ2MmZkN2FmOGU4
YTYzMjZkZGZhMzFhY2FhNjJjMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaApAQCAtMTgzLDYgKzE4Myw4
IEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEdMZW51bSwgNj4ga0N1YmVGYWNlcyA9IHsKICAgICAg
R0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1osCiAgICAgIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWn19OwogCit2b2lkIExv
YWRFbnRyeVBvaW50c1dpdGhVdGlsTG9hZGVyKCk7CisKIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQog
CiAjZGVmaW5lIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCByLCBnLCBiLCBhKSBcCkBAIC00NzQsNyAr
NDc2LDcgQEAgY2xhc3MgQU5HTEVUZXN0QmFzZQogICAgIGJvb2wgaXNWdWxrYW5Td2lmdHNoYWRl
clJlbmRlcmVyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtQ3VycmVudFBhcmFtcy0+
Z2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEUgJiYK
LSAgICAgICAgICAgICAgIG1DdXJyZW50UGFyYW1zLT5nZXREZXZpY2VUeXBlKCkgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1NXSUZUU0hBREVSX0FOR0xFOworICAgICAgICAgICAg
ICAgbUN1cnJlbnRQYXJhbXMtPmlzU3dpZnRzaGFkZXIoKTsKICAgICB9CiAKICAgICBib29sIHBs
YXRmb3JtU3VwcG9ydHNNdWx0aXRocmVhZGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvVnVsa2FuRXh0ZXJuYWxIZWxw
ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvVnVs
a2FuRXh0ZXJuYWxIZWxwZXIuY3BwCmluZGV4IDRjNjc4MTEyYWExMmZhNWI2YzNhMmM4Mzk3OWMy
OTdlYzFiYjNmODIuLjFlNzQzNmQ5Nzk4ZjcxZWE0NTM5NWVjM2EwNGY1Mzk3NmMzMGRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL1Z1
bGthbkV4dGVybmFsSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdF91dGlscy9WdWxrYW5FeHRlcm5hbEhlbHBlci5jcHAKQEAgLTIwMSwxMCArMjAx
LDkgQEAgdm9pZCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIEVu
dW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMobVBoeXNpY2FsRGV2aWNlLCBudWxscHRy
KTsKIAogICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gcmVxdWVzdGVkRGV2aWNlRXh0ZW5z
aW9ucyA9IHsKLSAgICAgICAgVktfS0hSX0VYVEVSTkFMX1NFTUFQSE9SRV9FWFRFTlNJT05fTkFN
RSwKLSAgICAgICAgVktfS0hSX0VYVEVSTkFMX1NFTUFQSE9SRV9GRF9FWFRFTlNJT05fTkFNRSwK
LSAgICAgICAgVktfS0hSX0VYVEVSTkFMX01FTU9SWV9FWFRFTlNJT05fTkFNRSwKLSAgICAgICAg
VktfS0hSX0VYVEVSTkFMX01FTU9SWV9GRF9FWFRFTlNJT05fTkFNRSwKKyAgICAgICAgVktfS0hS
X0VYVEVSTkFMX1NFTUFQSE9SRV9FWFRFTlNJT05fTkFNRSwgIFZLX0tIUl9FWFRFUk5BTF9TRU1B
UEhPUkVfRkRfRVhURU5TSU9OX05BTUUsCisgICAgICAgIFZLX0tIUl9FWFRFUk5BTF9NRU1PUllf
RVhURU5TSU9OX05BTUUsICAgICBWS19LSFJfRVhURVJOQUxfTUVNT1JZX0ZEX0VYVEVOU0lPTl9O
QU1FLAorICAgICAgICBWS19GVUNIU0lBX0VYVEVSTkFMX01FTU9SWV9FWFRFTlNJT05fTkFNRSwg
VktfRlVDSFNJQV9FWFRFUk5BTF9TRU1BUEhPUkVfRVhURU5TSU9OX05BTUUsCiAgICAgfTsKIAog
ICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gZW5hYmxlZERldmljZUV4dGVuc2lvbnM7CkBA
IC0yNzMsNiArMjcyLDEwIEBAIHZvaWQgVnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmluaXRpYWxpemUo
KQogICAgICAgICBIYXNFeHRlbnNpb24oZW5hYmxlZERldmljZUV4dGVuc2lvbnMsIFZLX0tIUl9F
WFRFUk5BTF9NRU1PUllfRkRfRVhURU5TSU9OX05BTUUpOwogICAgIG1IYXNFeHRlcm5hbFNlbWFw
aG9yZUZkID0KICAgICAgICAgSGFzRXh0ZW5zaW9uKGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLCBW
S19LSFJfRVhURVJOQUxfU0VNQVBIT1JFX0ZEX0VYVEVOU0lPTl9OQU1FKTsKKyAgICBtSGFzRXh0
ZXJuYWxNZW1vcnlGdWNoc2lhID0KKyAgICAgICAgSGFzRXh0ZW5zaW9uKGVuYWJsZWREZXZpY2VF
eHRlbnNpb25zLCBWS19GVUNIU0lBX0VYVEVSTkFMX01FTU9SWV9FWFRFTlNJT05fTkFNRSk7Cisg
ICAgbUhhc0V4dGVybmFsU2VtYXBob3JlRnVjaHNpYSA9CisgICAgICAgIEhhc0V4dGVuc2lvbihl
bmFibGVkRGV2aWNlRXh0ZW5zaW9ucywgVktfRlVDSFNJQV9FWFRFUk5BTF9TRU1BUEhPUkVfRVhU
RU5TSU9OX05BTUUpOwogCiAgICAgdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVy
dGllczIgPQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
SW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMj4oCkBAIC0yODQsMjEgKzI4NywyMCBAQCB2b2lkIFZ1bGth
bkV4dGVybmFsSGVscGVyOjppbml0aWFsaXplKCkKICAgICB2a0dldFBoeXNpY2FsRGV2aWNlRXh0
ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tIUj4oCiAg
ICAgICAgICAgICB2a0dldEluc3RhbmNlUHJvY0FkZHIobUluc3RhbmNlLCAidmtHZXRQaHlzaWNh
bERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tIUiIpKTsKKyAgICB2a0dldE1lbW9y
eVppcmNvbkhhbmRsZUZVQ0hTSUEgPSByZWludGVycHJldF9jYXN0PFBGTl92a0dldE1lbW9yeVpp
cmNvbkhhbmRsZUZVQ0hTSUE+KAorICAgICAgICB2a0dldEluc3RhbmNlUHJvY0FkZHIobUluc3Rh
bmNlLCAidmtHZXRNZW1vcnlaaXJjb25IYW5kbGVGVUNIU0lBIikpOwogfQogCi1ib29sIFZ1bGth
bkV4dGVybmFsSGVscGVyOjpjYW5DcmVhdGVJbWFnZU9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFn
ZVR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtJbWFnZVRpbGluZyB0aWxpbmcpIGNvbnN0Citib29sIFZ1bGthbkV4dGVybmFsSGVs
cGVyOjpjYW5DcmVhdGVJbWFnZUV4dGVybmFsKAorICAgIFZrRm9ybWF0IGZvcm1hdCwKKyAgICBW
a0ltYWdlVHlwZSB0eXBlLAorICAgIFZrSW1hZ2VUaWxpbmcgdGlsaW5nLAorICAgIFZrRXh0ZXJu
YWxNZW1vcnlIYW5kbGVUeXBlRmxhZ0JpdHMgaGFuZGxlVHlwZSkgY29uc3QKIHsKLSAgICBpZiAo
IW1IYXNFeHRlcm5hbE1lbW9yeUZkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQogICAgIFZrUGh5c2ljYWxEZXZpY2VFeHRlcm5hbEltYWdlRm9ybWF0SW5mbyBleHRlcm5h
bEltYWdlRm9ybWF0SW5mbyA9IHsKICAgICAgICAgLyogLnNUeXBlID0gKi8gVktfU1RSVUNUVVJF
X1RZUEVfUEhZU0lDQUxfREVWSUNFX0VYVEVSTkFMX0lNQUdFX0ZPUk1BVF9JTkZPLAogICAgICAg
ICAvKiAucE5leHQgPSAqLyBudWxscHRyLAotICAgICAgICAvKiAuaGFuZGxlVHlwZSA9ICovIFZL
X0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklULAorICAgICAgICAvKiAu
aGFuZGxlVHlwZSA9ICovIGhhbmRsZVR5cGUsCiAgICAgfTsKIAogICAgIFZrUGh5c2ljYWxEZXZp
Y2VJbWFnZUZvcm1hdEluZm8yIGltYWdlRm9ybWF0SW5mbyA9IHsKQEAgLTM0Nyw4ICszNDksOSBA
QCBib29sIFZ1bGthbkV4dGVybmFsSGVscGVyOjpjYW5DcmVhdGVJbWFnZU9wYXF1ZUZkKFZrRm9y
bWF0IGZvcm1hdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVmtSZXN1bHQgVnVsa2FuRXh0ZXJu
YWxIZWxwZXI6OmNyZWF0ZUltYWdlMkRPcGFxdWVGZChWa0Zvcm1hdCBmb3JtYXQsCitWa1Jlc3Vs
dCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6Y3JlYXRlSW1hZ2UyREV4dGVybmFsKFZrRm9ybWF0IGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmtFeHRlbnQzRCBleHRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrRXh0ZXJuYWxNZW1vcnlIYW5kbGVUeXBlRmxhZ3MgaGFuZGxl
VHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZrSW1hZ2UgKmltYWdlT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWa0RldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5T3V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rldmlj
ZVNpemUgKmRldmljZU1lbW9yeVNpemVPdXQpCkBAIC0zNTYsNyArMzU5LDcgQEAgVmtSZXN1bHQg
VnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmNyZWF0ZUltYWdlMkRPcGFxdWVGZChWa0Zvcm1hdCBmb3Jt
YXQsCiAgICAgVmtFeHRlcm5hbE1lbW9yeUltYWdlQ3JlYXRlSW5mb0tIUiBleHRlcm5hbE1lbW9y
eUltYWdlQ3JlYXRlSW5mbyA9IHsKICAgICAgICAgLyogLnNUeXBlID0gKi8gVktfU1RSVUNUVVJF
X1RZUEVfRVhURVJOQUxfTUVNT1JZX0lNQUdFX0NSRUFURV9JTkZPLAogICAgICAgICAvKiAucE5l
eHQgPSAqLyBudWxscHRyLAotICAgICAgICAvKiAuaGFuZGxlVHlwZXMgPSAqLyBWS19FWFRFUk5B
TF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVCwKKyAgICAgICAgLyogLmhhbmRsZVR5
cGVzID0gKi8gaGFuZGxlVHlwZXMsCiAgICAgfTsKIAogICAgIFZrSW1hZ2VDcmVhdGVJbmZvIGlt
YWdlQ3JlYXRlSW5mbyA9IHsKQEAgLTM5NSw5ICszOTgsOCBAQCBWa1Jlc3VsdCBWdWxrYW5FeHRl
cm5hbEhlbHBlcjo6Y3JlYXRlSW1hZ2UyRE9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKICAgICBW
a0V4cG9ydE1lbW9yeUFsbG9jYXRlSW5mbyBleHBvcnRNZW1vcnlBbGxvY2F0ZUluZm8gPSB7CiAg
ICAgICAgIC8qIC5zVHlwZSA9ICovIFZLX1NUUlVDVFVSRV9UWVBFX0VYUE9SVF9NRU1PUllfQUxM
T0NBVEVfSU5GTywKICAgICAgICAgLyogLnBOZXh0ID0gKi8gbnVsbHB0ciwKLSAgICAgICAgLyog
LmhhbmRsZVR5cGVzID0gKi8gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9G
RF9CSVQsCisgICAgICAgIC8qIC5oYW5kbGVUeXBlcyA9ICovIGhhbmRsZVR5cGVzLAogICAgIH07
Ci0KICAgICBWa01lbW9yeUFsbG9jYXRlSW5mbyBtZW1vcnlBbGxvY2F0ZUluZm8gPSB7CiAgICAg
ICAgIC8qIC5zVHlwZSA9ICovIFZLX1NUUlVDVFVSRV9UWVBFX01FTU9SWV9BTExPQ0FURV9JTkZP
LAogICAgICAgICAvKiAucE5leHQgPSAqLyAmZXhwb3J0TWVtb3J5QWxsb2NhdGVJbmZvLApAQCAt
NDI5LDYgKzQzMSwyOSBAQCBWa1Jlc3VsdCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6Y3JlYXRlSW1h
Z2UyRE9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKICAgICByZXR1cm4gVktfU1VDQ0VTUzsKIH0K
IAorYm9vbCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6Y2FuQ3JlYXRlSW1hZ2VPcGFxdWVGZChWa0Zv
cm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZrSW1hZ2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VUaWxpbmcgdGlsaW5nKSBjb25zdAoreworICAgIGlm
ICghbUhhc0V4dGVybmFsTWVtb3J5RmQpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIGNhbkNyZWF0ZUltYWdlRXh0ZXJuYWwoZm9ybWF0LCB0eXBlLCB0
aWxpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRVhURVJOQUxfTUVN
T1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVQpOworfQorCitWa1Jlc3VsdCBWdWxrYW5FeHRl
cm5hbEhlbHBlcjo6Y3JlYXRlSW1hZ2UyRE9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtFeHRlbnQz
RCBleHRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZrSW1hZ2UgKmltYWdlT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5T3V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rl
dmljZVNpemUgKmRldmljZU1lbW9yeVNpemVPdXQpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdl
MkRFeHRlcm5hbChmb3JtYXQsIGV4dGVudCwgVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBF
X09QQVFVRV9GRF9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZU91
dCwgZGV2aWNlTWVtb3J5T3V0LCBkZXZpY2VNZW1vcnlTaXplT3V0KTsKK30KKwogVmtSZXN1bHQg
VnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmV4cG9ydE1lbW9yeU9wYXF1ZUZkKFZrRGV2aWNlTWVtb3J5
IGRldmljZU1lbW9yeSwgaW50ICpmZCkKIHsKICAgICBWa01lbW9yeUdldEZkSW5mb0tIUiBtZW1v
cnlHZXRGZEluZm8gPSB7CkBAIC00NDEsNiArNDY2LDQyIEBAIFZrUmVzdWx0IFZ1bGthbkV4dGVy
bmFsSGVscGVyOjpleHBvcnRNZW1vcnlPcGFxdWVGZChWa0RldmljZU1lbW9yeSBkZXZpY2VNZW1v
cnksCiAgICAgcmV0dXJuIHZrR2V0TWVtb3J5RmRLSFIobURldmljZSwgJm1lbW9yeUdldEZkSW5m
bywgZmQpOwogfQogCitib29sIFZ1bGthbkV4dGVybmFsSGVscGVyOjpjYW5DcmVhdGVJbWFnZVpp
cmNvblZtbyhWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWa0ltYWdlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZVRpbGluZyB0aWxpbmcpIGNv
bnN0Cit7CisgICAgaWYgKCFtSGFzRXh0ZXJuYWxNZW1vcnlGdWNoc2lhKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBjYW5DcmVhdGVJbWFnZUV4dGVy
bmFsKGZvcm1hdCwgdHlwZSwgdGlsaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9URU1QX1pJUkNPTl9WTU9fQklUX0ZV
Q0hTSUEpOworfQorCitWa1Jlc3VsdCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6Y3JlYXRlSW1hZ2Uy
RFppcmNvblZtbyhWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa0V4dGVudDNEIGV4dGVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2UgKmltYWdl
T3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmtEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqZGV2aWNlTWVt
b3J5U2l6ZU91dCkKK3sKKyAgICByZXR1cm4gY3JlYXRlSW1hZ2UyREV4dGVybmFsKGZvcm1hdCwg
ZXh0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRVhURVJOQUxfTUVN
T1JZX0hBTkRMRV9UWVBFX1RFTVBfWklSQ09OX1ZNT19CSVRfRlVDSFNJQSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGltYWdlT3V0LCBkZXZpY2VNZW1vcnlPdXQsIGRldmljZU1l
bW9yeVNpemVPdXQpOworfQorCitWa1Jlc3VsdCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6ZXhwb3J0
TWVtb3J5WmlyY29uVm1vKFZrRGV2aWNlTWVtb3J5IGRldmljZU1lbW9yeSwgenhfaGFuZGxlX3Qg
KnZtbykKK3sKKyAgICBWa01lbW9yeUdldFppcmNvbkhhbmRsZUluZm9GVUNIU0lBIG1lbW9yeUdl
dFppcmNvbkhhbmRsZUluZm8gPSB7CisgICAgICAgIC8qIC5zVHlwZSA9ICovIFZLX1NUUlVDVFVS
RV9UWVBFX1RFTVBfTUVNT1JZX0dFVF9aSVJDT05fSEFORExFX0lORk9fRlVDSFNJQSwKKyAgICAg
ICAgLyogLnBOZXh0ID0gKi8gbnVsbHB0ciwKKyAgICAgICAgLyogLm1lbW9yeSA9ICovIGRldmlj
ZU1lbW9yeSwKKyAgICAgICAgLyogLmhhbmRsZVR5cGUgPSAqLyBWS19FWFRFUk5BTF9NRU1PUllf
SEFORExFX1RZUEVfVEVNUF9aSVJDT05fVk1PX0JJVF9GVUNIU0lBLAorICAgIH07CisKKyAgICBy
ZXR1cm4gdmtHZXRNZW1vcnlaaXJjb25IYW5kbGVGVUNIU0lBKG1EZXZpY2UsICZtZW1vcnlHZXRa
aXJjb25IYW5kbGVJbmZvLCB2bW8pOworfQorCiBib29sIFZ1bGthbkV4dGVybmFsSGVscGVyOjpj
YW5DcmVhdGVTZW1hcGhvcmVPcGFxdWVGZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtSGFzRXh0ZXJu
YWxTZW1hcGhvcmVGZCB8fCAhdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJv
cGVydGllc0tIUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90ZXN0X3V0aWxzL1Z1bGthbkV4dGVybmFsSGVscGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9WdWxrYW5FeHRlcm5hbEhlbHBlci5oCmluZGV4IGJh
NWFiMjJkNmMyMmQzZGU1NGQ1ZWJiNTRmOTA3NDJjMDkxNTY0MGIuLmQ3MjVjN2YzOWU4ZDkyZGQ5
OGY1ODUwN2Q4NjJkZjZkNzZlMzBmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL1Z1bGthbkV4dGVybmFsSGVscGVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvVnVsa2FuRXh0ZXJuYWxI
ZWxwZXIuaApAQCAtOSw2ICs5LDcgQEAKICNkZWZpbmUgQU5HTEVfVEVTVFNfVEVTVFVUSUxTX1ZV
TEtBTkVYVEVSTkFMSEVMUEVSX0hfCiAKICNpbmNsdWRlICJ2b2xrLmgiCisjaW5jbHVkZSAidnVs
a2FuL3Z1bGthbl9mdWNoc2lhX2V4dC5oIgogCiBuYW1lc3BhY2UgYW5nbGUKIHsKQEAgLTI2LDYg
KzI3LDE3IEBAIGNsYXNzIFZ1bGthbkV4dGVybmFsSGVscGVyCiAgICAgVmtEZXZpY2UgZ2V0RGV2
aWNlKCkgY29uc3QgeyByZXR1cm4gbURldmljZTsgfQogICAgIFZrUXVldWUgZ2V0R3JhcGhpY3NR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1HcmFwaGljc1F1ZXVlOyB9CiAKKyAgICBib29sIGNhbkNy
ZWF0ZUltYWdlRXh0ZXJuYWwoVmtGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWa0ltYWdlVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWa0ltYWdlVGlsaW5nIHRpbGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmtFeHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVGbGFnQml0cyBoYW5kbGVUeXBlKSBjb25zdDsK
KyAgICBWa1Jlc3VsdCBjcmVhdGVJbWFnZTJERXh0ZXJuYWwoVmtGb3JtYXQgZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0V4dGVudDNEIGV4dGVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtFeHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVG
bGFncyBoYW5kbGVUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJ
bWFnZSAqaW1hZ2VPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2
aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZrRGV2aWNlU2l6ZSAqZGV2aWNlTWVtb3J5U2l6ZU91dCk7CisKICAgICAvLyBWS19L
SFJfZXh0ZXJuYWxfbWVtb3J5X2ZkCiAgICAgYm9vbCBjYW5DcmVhdGVJbWFnZU9wYXF1ZUZkKFZr
Rm9ybWF0IGZvcm1hdCwgVmtJbWFnZVR5cGUgdHlwZSwgVmtJbWFnZVRpbGluZyB0aWxpbmcpIGNv
bnN0OwogICAgIFZrUmVzdWx0IGNyZWF0ZUltYWdlMkRPcGFxdWVGZChWa0Zvcm1hdCBmb3JtYXQs
CkBAIC0zNSwxMSArNDcsMjUgQEAgY2xhc3MgVnVsa2FuRXh0ZXJuYWxIZWxwZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VTaXplICpkZXZpY2VNZW1vcnlTaXpl
T3V0KTsKICAgICBWa1Jlc3VsdCBleHBvcnRNZW1vcnlPcGFxdWVGZChWa0RldmljZU1lbW9yeSBk
ZXZpY2VNZW1vcnksIGludCAqZmQpOwogCisgICAgLy8gVktfRlVDSFNJQV9leHRlcm5hbF9tZW1v
cnkKKyAgICBib29sIGNhbkNyZWF0ZUltYWdlWmlyY29uVm1vKFZrRm9ybWF0IGZvcm1hdCwgVmtJ
bWFnZVR5cGUgdHlwZSwgVmtJbWFnZVRpbGluZyB0aWxpbmcpIGNvbnN0OworICAgIFZrUmVzdWx0
IGNyZWF0ZUltYWdlMkRaaXJjb25WbW8oVmtGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmtFeHRlbnQzRCBleHRlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWa0ltYWdlICppbWFnZU91dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNpemUgKmRldmljZU1lbW9y
eVNpemVPdXQpOworICAgIFZrUmVzdWx0IGV4cG9ydE1lbW9yeVppcmNvblZtbyhWa0RldmljZU1l
bW9yeSBkZXZpY2VNZW1vcnksIHp4X2hhbmRsZV90ICp2bW8pOworCiAgICAgLy8gVktfS0hSX2V4
dGVybmFsX3NlbWFwaG9yZV9mZAogICAgIGJvb2wgY2FuQ3JlYXRlU2VtYXBob3JlT3BhcXVlRmQo
KSBjb25zdDsKICAgICBWa1Jlc3VsdCBjcmVhdGVTZW1hcGhvcmVPcGFxdWVGZChWa1NlbWFwaG9y
ZSAqc2VtYXBob3JlKTsKICAgICBWa1Jlc3VsdCBleHBvcnRTZW1hcGhvcmVPcGFxdWVGZChWa1Nl
bWFwaG9yZSBzZW1hcGhvcmUsIGludCAqZmQpOwogCisgICAgLy8gVktfRlVDSFNJQV9leHRlcm5h
bF9zZW1hcGhvcmUKKyAgICBib29sIGNhbkNyZWF0ZVNlbWFwaG9yZVppcmNvbkV2ZW50KCkgY29u
c3Q7CisgICAgVmtSZXN1bHQgY3JlYXRlU2VtYXBob3JlWmlyY29uRXZlbnQoVmtTZW1hcGhvcmUg
KnNlbWFwaG9yZSk7CisgICAgVmtSZXN1bHQgZXhwb3J0U2VtYXBob3JlWmlyY29uRXZlbnQoVmtT
ZW1hcGhvcmUgc2VtYXBob3JlLCB6eF9oYW5kbGVfdCAqZXZlbnQpOworCiAgIHByaXZhdGU6CiAg
ICAgVmtJbnN0YW5jZSBtSW5zdGFuY2UgICAgICAgICAgICAgPSBWS19OVUxMX0hBTkRMRTsKICAg
ICBWa1BoeXNpY2FsRGV2aWNlIG1QaHlzaWNhbERldmljZSA9IFZLX05VTExfSEFORExFOwpAQCAt
NTAsMTQgKzc2LDE3IEBAIGNsYXNzIFZ1bGthbkV4dGVybmFsSGVscGVyCiAKICAgICB1aW50MzJf
dCBtR3JhcGhpY3NRdWV1ZUZhbWlseUluZGV4ID0gVUlOVDMyX01BWDsKIAotICAgIGJvb2wgbUhh
c0V4dGVybmFsTWVtb3J5RmQgICAgPSBmYWxzZTsKLSAgICBib29sIG1IYXNFeHRlcm5hbFNlbWFw
aG9yZUZkID0gZmFsc2U7CisgICAgYm9vbCBtSGFzRXh0ZXJuYWxNZW1vcnlGZCAgICAgICAgID0g
ZmFsc2U7CisgICAgYm9vbCBtSGFzRXh0ZXJuYWxNZW1vcnlGdWNoc2lhICAgID0gZmFsc2U7Cisg
ICAgYm9vbCBtSGFzRXh0ZXJuYWxTZW1hcGhvcmVGZCAgICAgID0gZmFsc2U7CisgICAgYm9vbCBt
SGFzRXh0ZXJuYWxTZW1hcGhvcmVGdWNoc2lhID0gZmFsc2U7CiAgICAgUEZOX3ZrR2V0UGh5c2lj
YWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyIHZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZv
cm1hdFByb3BlcnRpZXMyID0KICAgICAgICAgbnVsbHB0cjsKICAgICBQRk5fdmtHZXRNZW1vcnlG
ZEtIUiB2a0dldE1lbW9yeUZkS0hSICAgICAgID0gbnVsbHB0cjsKICAgICBQRk5fdmtHZXRTZW1h
cGhvcmVGZEtIUiB2a0dldFNlbWFwaG9yZUZkS0hSID0gbnVsbHB0cjsKICAgICBQRk5fdmtHZXRQ
aHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tIUgotICAgICAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSID0gbnVsbHB0cjsK
KyAgICAgICAgdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllc0tI
UiAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgUEZOX3ZrR2V0TWVtb3J5WmlyY29uSGFuZGxl
RlVDSFNJQSB2a0dldE1lbW9yeVppcmNvbkhhbmRsZUZVQ0hTSUEgPSBudWxscHRyOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNw
cAppbmRleCBjMGVhYmFmZGM1MGQyY2EwNDhhYzNhNzZlOTQ0ODgzOTg2YzRiNjc1Li5iMDRlYTE3
M2ZjYTE0M2Y2OGY3ZjZhZGZlOGM4NzlmMzg3NGNmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfY29uZmlncy5jcHAKQEAgLTQ0LDYgKzQ0LDExIEBAIEVHTGludCBQbGF0Zm9ybVBhcmFt
ZXRlcnM6OmdldERldmljZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBlZ2xQYXJhbWV0ZXJzLmRl
dmljZVR5cGU7CiB9CiAKK2Jvb2wgUGxhdGZvcm1QYXJhbWV0ZXJzOjppc1N3aWZ0c2hhZGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZWdsUGFyYW1ldGVycy5kZXZpY2VUeXBlID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9TV0lGVFNIQURFUl9BTkdMRTsKK30KKwogdm9pZCBQbGF0
Zm9ybVBhcmFtZXRlcnM6OmluaXREZWZhdWx0UGFyYW1ldGVycygpCiB7CiAgICAgLy8gRGVmYXVs
dCBkZWJ1ZyBsYXllcnMgdG8gZW5hYmxlZCBpbiB0ZXN0cy4KQEAgLTY1LDYgKzcwLDMxIEBAIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmEsIGNvbnN0IFBsYXRmb3Jt
UGFyYW1ldGVycyAmYikKICAgICByZXR1cm4gYS50aWUoKSAhPSBiLnRpZSgpOwogfQogCitjb25z
dCBjaGFyICpHZXRSZW5kZXJlck5hbWUoRUdMaW50IHJlbmRlcmVyKQoreworICAgIHN3aXRjaCAo
cmVuZGVyZXIpCisgICAgeworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RF
RkFVTFRfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gIkRlZmF1bHQiOworICAgICAgICBjYXNl
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4g
IkQzRDkiOworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
OgorICAgICAgICAgICAgcmV0dXJuICJEM0QxMSI7CisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfTUVUQUxfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gIk1ldGFsIjsKKyAg
ICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxMX0FOR0xFOgorICAgICAgICAg
ICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gIk9wZW5HTCI7CisgICAgICAgIGNhc2Ug
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU6CisgICAgICAgICAgICByZXR1
cm4gIk9wZW5HTEVTIjsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxL
QU5fQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gIlZ1bGthbiI7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gIlVuZGVmaW5lZCI7CisgICAgfQorfQorCiBzdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0IFBsYXRmb3JtUGFyYW1l
dGVycyAmcHApCiB7CiAgICAgc3RyZWFtIDw8ICJFUyIgPDwgcHAubWFqb3JWZXJzaW9uIDw8ICJf
IjsKQEAgLTc2LDM5ICsxMDYsOCBAQCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3Ry
ZWFtICZzdHJlYW0sIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcHApCiAgICAgc3dpdGNoIChw
cC5kcml2ZXIpCiAgICAgewogICAgICAgICBjYXNlIEdMRVNEcml2ZXJUeXBlOjpBbmdsZUVHTDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0ZXJzLnJlbmRlcmVy
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfREVGQVVMVF9BTkdMRToKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJEZWZh
dWx0IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgotICAgICAgICAgICAgICAgICAgICBz
dHJlYW0gPDwgIkQzRDkiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgotICAgICAgICAg
ICAgICAgICAgICBzdHJlYW0gPDwgIkQzRDExIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9NRVRBTF9BTkdM
RToKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJNZXRhbCI7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfTlVMTF9BTkdMRToKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJOdWxsIjsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbSA8
PCAiT3BlbkdMIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKLSAgICAgICAgICAg
ICAgICAgICAgc3RyZWFtIDw8ICJPcGVuR0xFUyI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfVlVMS0FOX0FO
R0xFOgotICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIlZ1bGthbiI7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHN0cmVhbSA8PCAiVW5kZWZpbmVkIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJlYW0gPDwgR2V0UmVuZGVyZXJOYW1lKHBw
LmVnbFBhcmFtZXRlcnMucmVuZGVyZXIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTEVTRHJpdmVyVHlwZTo6U3lzdGVtV0dMOgogICAgICAgICAgICAgc3Ry
ZWFtIDw8ICJXR0wiOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODcsMjIgKzE4NiwyMiBAQCBz
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0IFBsYXRm
b3JtUGFyYW1ldGVycyAmcHApCiAgICAgICAgIHN0cmVhbSA8PCAiX05vVmlydHVhbCI7CiAgICAg
fQogCi0gICAgaWYgKHBwLmVnbFBhcmFtZXRlcnMuY29tbWFuZEdyYXBoRmVhdHVyZSA9PSBFR0xf
RkFMU0UpCisgICAgaWYgKHBwLmVnbFBhcmFtZXRlcnMudHJhbnNmb3JtRmVlZGJhY2tGZWF0dXJl
ID09IEVHTF9GQUxTRSkKICAgICB7Ci0gICAgICAgIHN0cmVhbSA8PCAiX05vQ29tbWFuZEdyYXBo
IjsKKyAgICAgICAgc3RyZWFtIDw8ICJfTm9UcmFuc2Zvcm1GZWVkYmFjayI7CiAgICAgfQotICAg
IGVsc2UgaWYgKHBwLmVnbFBhcmFtZXRlcnMuY29tbWFuZEdyYXBoRmVhdHVyZSA9PSBFR0xfVFJV
RSkKKyAgICBlbHNlIGlmIChwcC5lZ2xQYXJhbWV0ZXJzLnRyYW5zZm9ybUZlZWRiYWNrRmVhdHVy
ZSA9PSBFR0xfVFJVRSkKICAgICB7Ci0gICAgICAgIHN0cmVhbSA8PCAiX0NvbW1hbmRHcmFwaCI7
CisgICAgICAgIHN0cmVhbSA8PCAiX1RyYW5zZm9ybUZlZWRiYWNrIjsKICAgICB9CiAKLSAgICBp
ZiAocHAuZWdsUGFyYW1ldGVycy50cmFuc2Zvcm1GZWVkYmFja0ZlYXR1cmUgPT0gRUdMX0ZBTFNF
KQorICAgIGlmIChwcC5lZ2xQYXJhbWV0ZXJzLmFsbG9jYXRlTm9uWmVyb01lbW9yeUZlYXR1cmUg
PT0gRUdMX0ZBTFNFKQogICAgIHsKLSAgICAgICAgc3RyZWFtIDw8ICJfTm9UcmFuc2Zvcm1GZWVk
YmFjayI7CisgICAgICAgIHN0cmVhbSA8PCAiX05vQWxsb2NhdGVOb25aZXJvTWVtb3J5IjsKICAg
ICB9Ci0gICAgZWxzZSBpZiAocHAuZWdsUGFyYW1ldGVycy50cmFuc2Zvcm1GZWVkYmFja0ZlYXR1
cmUgPT0gRUdMX1RSVUUpCisgICAgZWxzZSBpZiAocHAuZWdsUGFyYW1ldGVycy5hbGxvY2F0ZU5v
blplcm9NZW1vcnlGZWF0dXJlID09IEVHTF9UUlVFKQogICAgIHsKLSAgICAgICAgc3RyZWFtIDw8
ICJfVHJhbnNmb3JtRmVlZGJhY2siOworICAgICAgICBzdHJlYW0gPDwgIl9BbGxvY2F0ZU5vblpl
cm9NZW1vcnkiOwogICAgIH0KIAogICAgIHJldHVybiBzdHJlYW07CkBAIC00MDQsNiArNDAzLDE1
IEBAIEVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xfT1JfR0xFUygpCiAjZW5kaWYKIH0KIAor
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTF9PUl9HTEVTKEVHTGludCBtYWpvciwgRUdMaW50
IG1pbm9yKQoreworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKKyAgICByZXR1
cm4gT1BFTkdMRVMobWFqb3IsIG1pbm9yKTsKKyNlbHNlCisgICAgcmV0dXJuIE9QRU5HTChtYWpv
ciwgbWlub3IpOworI2VuZGlmCit9CisKIEVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xfT1Jf
R0xFU19OVUxMKCkKIHsKICNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmds
ZV90ZXN0X2NvbmZpZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0
X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oCmluZGV4IDE4MWEzNWY3NGIxNmM2YjZiZDk5MWFi
YzZjNDBmY2VlYTVkMTJjNzUuLjVmNzcxMzg5NjdiMTE0MDFhODg2NjA4M2VmNDkyYjE1MTBhM2E3
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oCkBAIC00NCw2ICs0NCw3IEBA
IHN0cnVjdCBQbGF0Zm9ybVBhcmFtZXRlcnMKIAogICAgIEVHTGludCBnZXRSZW5kZXJlcigpIGNv
bnN0OwogICAgIEVHTGludCBnZXREZXZpY2VUeXBlKCkgY29uc3Q7CisgICAgYm9vbCBpc1N3aWZ0
c2hhZGVyKCkgY29uc3Q7CiAKICAgICB2b2lkIGluaXREZWZhdWx0UGFyYW1ldGVycygpOwogCkBA
IC01OSw2ICs2MCw4IEBAIHN0cnVjdCBQbGF0Zm9ybVBhcmFtZXRlcnMKICAgICBFR0xpbnQgbWlu
b3JWZXJzaW9uOwogfTsKIAorY29uc3QgY2hhciAqR2V0UmVuZGVyZXJOYW1lKEVHTGludCByZW5k
ZXJlcik7CisKIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29u
c3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9y
bVBhcmFtZXRlcnMgJmEsIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYik7CiBzdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0IFBsYXRmb3JtUGFyYW1l
dGVycyAmcHApOwpAQCAtMTA3LDYgKzExMCw3IEBAIEVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVO
R0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7CiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
T1BFTkdMRVNfTlVMTCgpOwogCiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMX09SX0dMRVMo
KTsKK0VHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xfT1JfR0xFUyhFR0xpbnQgbWFqb3IsIEVH
TGludCBtaW5vcik7CiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMX09SX0dMRVNfTlVMTCgp
OwogCiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgVlVMS0FOKCk7CkBAIC0yMDcsMTMgKzIxMSw2IEBA
IGlubGluZSBQbGF0Zm9ybVBhcmFtZXRlcnMgV2l0aE5vRml4dHVyZShjb25zdCBQbGF0Zm9ybVBh
cmFtZXRlcnMgJnBhcmFtcykKICAgICByZXR1cm4gd2l0aE5vRml4dHVyZTsKIH0KIAotaW5saW5l
IFBsYXRmb3JtUGFyYW1ldGVycyBXaXRoTm9Db21tYW5kR3JhcGgoY29uc3QgUGxhdGZvcm1QYXJh
bWV0ZXJzICZwYXJhbXMpCi17Ci0gICAgUGxhdGZvcm1QYXJhbWV0ZXJzIHdpdGhOb0NvbW1hbmRH
cmFwaCAgICAgICAgICAgICAgICA9IHBhcmFtczsKLSAgICB3aXRoTm9Db21tYW5kR3JhcGguZWds
UGFyYW1ldGVycy5jb21tYW5kR3JhcGhGZWF0dXJlID0gRUdMX0ZBTFNFOwotICAgIHJldHVybiB3
aXRoTm9Db21tYW5kR3JhcGg7Ci19Ci0KIGlubGluZSBQbGF0Zm9ybVBhcmFtZXRlcnMgV2l0aE5v
VHJhbnNmb3JtRmVlZGJhY2soY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwYXJhbXMpCiB7CiAg
ICAgUGxhdGZvcm1QYXJhbWV0ZXJzIHdpdGhOb1RyYW5zZm9ybUZlZWRiYWNrICAgICAgICAgICAg
ICAgICAgICAgPSBwYXJhbXM7CkBAIC0yMjEsNiArMjE4LDE5IEBAIGlubGluZSBQbGF0Zm9ybVBh
cmFtZXRlcnMgV2l0aE5vVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJz
ICZwYXJhCiAgICAgcmV0dXJuIHdpdGhOb1RyYW5zZm9ybUZlZWRiYWNrOwogfQogCitpbmxpbmUg
UGxhdGZvcm1QYXJhbWV0ZXJzIFdpdGhBbGxvY2F0ZU5vblplcm9NZW1vcnkoY29uc3QgUGxhdGZv
cm1QYXJhbWV0ZXJzICZwYXJhbXMpCit7CisgICAgUGxhdGZvcm1QYXJhbWV0ZXJzIGFsbG9jYXRl
Tm9uWmVybyAgICAgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtczsKKyAgICBhbGxvY2F0ZU5v
blplcm8uZWdsUGFyYW1ldGVycy5hbGxvY2F0ZU5vblplcm9NZW1vcnlGZWF0dXJlID0gRUdMX1RS
VUU7CisgICAgcmV0dXJuIGFsbG9jYXRlTm9uWmVybzsKK30KKworaW5saW5lIFBsYXRmb3JtUGFy
YW1ldGVycyBXaXRoUm9idXN0bmVzcyhjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtcykK
K3sKKyAgICBQbGF0Zm9ybVBhcmFtZXRlcnMgd2l0aFJvYnVzdG5lc3MgICAgICAgPSBwYXJhbXM7
CisgICAgd2l0aFJvYnVzdG5lc3MuZWdsUGFyYW1ldGVycy5yb2J1c3RuZXNzID0gRUdMX1RSVUU7
CisgICAgcmV0dXJuIHdpdGhSb2J1c3RuZXNzOworfQogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAK
ICNlbmRpZiAgLy8gQU5HTEVfVEVTVF9DT05GSUdTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRl
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfaW5zdGFudGlhdGUuY3BwCmluZGV4IDE2NzZhMmZkMTk5NzBkZmU3NGMyM2E5MjU4M2Nl
YmY1YzQ1ODY4ZTcuLmEzOTRkMDhjZTY5NDVkNWE1ZDk5NWFlZmQwZWVmN2FmMjc4ZjY1ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwCkBAIC05LDEyICs5
LDE0IEBACiAKICNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIK
IAorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1ZGUgPG1hcD4K
IAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAj
aW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi90aGlyZF9w
YXJ0eS9iYXNlL2FuZ2xlYmFzZS9ub19kZXN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiZ3B1X2luZm9f
dXRpbC9TeXN0ZW1JbmZvLmgiCiAjaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZp
Z3MuaCIKICNpbmNsdWRlICJ1dGlsL0VHTFdpbmRvdy5oIgpAQCAtNzYsOCArNzgsNiBAQCBib29s
IElzTmF0aXZlQ29uZmlnU3VwcG9ydGVkKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW0s
IE9TV2luZG93ICpvc1dpbmRvdwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjptYXA8UGxh
dGZvcm1QYXJhbWV0ZXJzLCBib29sPiBnUGFyYW1BdmFpbGFiaWxpdHlDYWNoZTsKLQogYm9vbCBJ
c0FuZHJvaWREZXZpY2UoY29uc3Qgc3RkOjpzdHJpbmcgJmRldmljZU5hbWUpCiB7CiAgICAgaWYg
KCFJc0FuZHJvaWQoKSkKQEAgLTEwMiwxMSArMTAyLDI3IEBAIGJvb2wgSGFzU3lzdGVtVmVuZG9y
SUQoVmVuZG9ySUQgdmVuZG9ySUQpCiAgICAgfQogICAgIHJldHVybiBzeXN0ZW1JbmZvLT5ncHVz
W3N5c3RlbUluZm8tPmFjdGl2ZUdQVUluZGV4XS52ZW5kb3JJZCA9PSB2ZW5kb3JJRDsKIH0KKwor
dXNpbmcgUGFyYW1BdmFpbGFiaWxpdHlDYWNoZSA9IHN0ZDo6bWFwPFBsYXRmb3JtUGFyYW1ldGVy
cywgYm9vbD47CisKK1BhcmFtQXZhaWxhYmlsaXR5Q2FjaGUgJkdldEF2YWlsYWJpbGl0eUNhY2hl
KCkKK3sKKyAgICBzdGF0aWMgYW5nbGU6OmJhc2U6Ok5vRGVzdHJ1Y3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGFyYW1BdmFpbGFiaWxpdHlDYWNoZT4+CisgICAgICAgIHNQYXJhbUF2YWlsYWJpbGl0eUNh
Y2hlKG5ldyBQYXJhbUF2YWlsYWJpbGl0eUNhY2hlKCkpOworICAgIHJldHVybiAqKnNQYXJhbUF2
YWlsYWJpbGl0eUNhY2hlOworfQorCitjb25zdGV4cHIgc2l6ZV90IGtNYXhDb25maWdOYW1lTGVu
ID0gMTAwOworc3RkOjphcnJheTxjaGFyLCBrTWF4Q29uZmlnTmFtZUxlbj4gZ1NlbGVjdGVkQ29u
ZmlnOwogfSAgLy8gbmFtZXNwYWNlCiAKLXN0ZDo6c3RyaW5nIGdTZWxlY3RlZENvbmZpZzsKIGJv
b2wgZ1NlcGFyYXRlUHJvY2Vzc1BlckNvbmZpZyA9IGZhbHNlOwogCitib29sIElzQ29uZmlnU2Vs
ZWN0ZWQoKQoreworICAgIHJldHVybiBnU2VsZWN0ZWRDb25maWdbMF0gIT0gMDsKK30KKwogU3lz
dGVtSW5mbyAqR2V0VGVzdFN5c3RlbUluZm8oKQogewogICAgIHN0YXRpYyBTeXN0ZW1JbmZvICpz
U3lzdGVtSW5mbyA9IG51bGxwdHI7CkBAIC0xMzAsNyArMTQ2LDcgQEAgU3lzdGVtSW5mbyAqR2V0
VGVzdFN5c3RlbUluZm8oKQogICAgICAgICAvLyBQcmludCBjb21wbGV0ZSBzeXN0ZW0gaW5mbyB3
aGVuIGF2YWlsYWJsZS4KICAgICAgICAgLy8gU2VlbXMgdG8gdHJpcCB1cCBBbmRyb2lkIHRlc3Qg
ZXhwZWN0YXRpb24gcGFyc2luZy4KICAgICAgICAgLy8gQWxzbyBkb24ndCBwcmludCBpbmZvIHdo
ZW4gYSBjb25maWcgaXMgc2VsZWN0ZWQgdG8gcHJldmVudCB0ZXN0IHNwYW0uCi0gICAgICAgIGlm
ICghSXNBbmRyb2lkKCkgJiYgZ1NlbGVjdGVkQ29uZmlnLmVtcHR5KCkpCisgICAgICAgIGlmICgh
SXNBbmRyb2lkKCkgJiYgIUlzQ29uZmlnU2VsZWN0ZWQoKSkKICAgICAgICAgewogICAgICAgICAg
ICAgUHJpbnRTeXN0ZW1JbmZvKCpzU3lzdGVtSW5mbyk7CiAgICAgICAgIH0KQEAgLTQzMyw2ICs0
NDksMjEgQEAgYm9vbCBJc0NvbmZpZ1doaXRlbGlzdGVkKGNvbnN0IFN5c3RlbUluZm8gJnN5c3Rl
bUluZm8sIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKKyAgICAgICAgLy8gVE9ETzogaHR0cDovL2NyYnVnLmNvbS9zd2lmdHNoYWRlci8xNDUKKyAg
ICAgICAgLy8gU3dpZnRzaGFkZXIgZG9lcyBub3QgY3VycmVudGx5IGhhdmUgYWxsIHRoZSByb2J1
c3RuZXNzIGZlYXR1cmVzCisgICAgICAgIC8vIHdlIG5lZWQgZm9yIEFOR0xFLiBJbiBwYXJ0aWN1
bGFyLCBpdCBpcyB1bmFibGUgdG8gZGV0ZWN0IGFuZCByZWNvdmVyCisgICAgICAgIC8vIGZyb20g
aW5maW5pdGVseSBsb29waW5nIHNoYWRlcnMuIFRoYXQgYnVnIGlzIHRoZSB0cmFja2VyIGZvciBm
aXhpbmcKKyAgICAgICAgLy8gdGhhdCBhbmQgd2hlbiByZXNvbHZlZCB3ZSBjYW4gcmVtb3ZlIHRo
ZSBmb2xsb3dpbmcgY29kZS4KKyAgICAgICAgLy8gVGhpcyB0ZXN0IHdpbGwgZGlzYWJsZSB0ZXN0
cyBtYXJrZWQgd2l0aCB0aGUgY29uZmlnIFdpdGhSb2J1c3RuZXNzCisgICAgICAgIC8vIHdoZW4g
cnVuIHdpdGggdGhlIHN3aWZ0c2hhZGVyIFZ1bGthbiBkcml2ZXIgYW5kIG9uIEFuZHJvaWQuCisg
ICAgICAgIERldmljZUlEIGRldmljZUlEID0KKyAgICAgICAgICAgIHN5c3RlbUluZm8uZ3B1cy5l
bXB0eSgpID8gMCA6IHN5c3RlbUluZm8uZ3B1c1tzeXN0ZW1JbmZvLmFjdGl2ZUdQVUluZGV4XS5k
ZXZpY2VJZDsKKyAgICAgICAgaWYgKChwYXJhbS5pc1N3aWZ0c2hhZGVyKCkgfHwgKElzR29vZ2xl
KHZlbmRvcklEKSAmJiBkZXZpY2VJRCA9PSBrRGV2aWNlSURfU3dpZnRzaGFkZXIpKSAmJgorICAg
ICAgICAgICAgcGFyYW0uZWdsUGFyYW1ldGVycy5yb2J1c3RuZXNzKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICAvLyBDdXJyZW50bHkg
d2Ugc3VwcG9ydCB0aGUgR0xFUyBhbmQgVnVsa2FuIGJhY2stZW5kcyBvbiBBbmRyb2lkLgogICAg
ICAgICBzd2l0Y2ggKHBhcmFtLmdldFJlbmRlcmVyKCkpCiAgICAgICAgIHsKQEAgLTQ4MSw2ICs1
MTIsMTUgQEAgYm9vbCBJc0NvbmZpZ1N1cHBvcnRlZChjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMg
JnBhcmFtKQogCiBib29sIElzUGxhdGZvcm1BdmFpbGFibGUoY29uc3QgUGxhdGZvcm1QYXJhbWV0
ZXJzICZwYXJhbSkKIHsKKyAgICAvLyBEaXNhYmxlICJudWxsIiBkZXZpY2Ugd2hlbiBub3Qgb24g
QU5HTEUgb3IgaW4gRDNEOS4KKyAgICBpZiAocGFyYW0uZ2V0RGV2aWNlVHlwZSgpID09IEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKQorICAgIHsKKyAgICAgICAgaWYg
KHBhcmFtLmRyaXZlciAhPSBHTEVTRHJpdmVyVHlwZTo6QW5nbGVFR0wpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChwYXJhbS5nZXRSZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCiAgICAgc3dpdGNoIChwYXJhbS5nZXRSZW5kZXJlcigpKQogICAgIHsKICAgICAgICAg
Y2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgpAQCAtNTExLDE1ICs1
NTEsNiBAQCBib29sIElzUGxhdGZvcm1BdmFpbGFibGUoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJz
ICZwYXJhbSkKICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5H
TEU6CiAjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX1ZVTEtBTikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSNlbGlmIGRlZmluZWQoQU5HTEVfSVNfMzJfQklUX0NQVSkKLSAgICAgICAgICAg
IC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDA5MgotICAgICAgICAgICAgLy8gIEN1cnJlbnRseSBo
aXR0aW5nIGNyYXNoZXMgaW4gU3dTIHcvIDMyLWJpdCBXaW5kb3dzIHNvIHNraXBwaW5nIGZvciBu
b3cKLSAgICAgICAgICAgIGlmIChJc1dpbmRvd3MoKSAmJiAocGFyYW0uZWdsUGFyYW1ldGVycy5k
ZXZpY2VUeXBlID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9ERVZJQ0VfVFlQRV9TV0lGVFNIQURFUl9BTkdMRSkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CiAjZWxzZQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTU0NCwxOCArNTc1
LDE4IEBAIGJvb2wgSXNQbGF0Zm9ybUF2YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMg
JnBhcmFtKQogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKIAotICAgIGF1dG8gaXRlciA9IGdQ
YXJhbUF2YWlsYWJpbGl0eUNhY2hlLmZpbmQocGFyYW0pOwotICAgIGlmIChpdGVyICE9IGdQYXJh
bUF2YWlsYWJpbGl0eUNhY2hlLmVuZCgpKQorICAgIGF1dG8gaXRlciA9IEdldEF2YWlsYWJpbGl0
eUNhY2hlKCkuZmluZChwYXJhbSk7CisgICAgaWYgKGl0ZXIgIT0gR2V0QXZhaWxhYmlsaXR5Q2Fj
aGUoKS5lbmQoKSkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9IGl0ZXItPnNlY29uZDsKICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKCFnU2VsZWN0ZWRDb25maWcuZW1wdHkoKSkK
KyAgICAgICAgaWYgKElzQ29uZmlnU2VsZWN0ZWQoKSkKICAgICAgICAgewogICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwogICAgICAgICAgICAgc3Ryc3RyIDw8IHBhcmFtOwot
ICAgICAgICAgICAgaWYgKHN0cnN0ci5zdHIoKSA9PSBnU2VsZWN0ZWRDb25maWcpCisgICAgICAg
ICAgICBpZiAoc3Ryc3RyLnN0cigpID09IHN0ZDo6c3RyaW5nKGdTZWxlY3RlZENvbmZpZy5kYXRh
KCkpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAg
ICAgICAgICB9CkBAIC01NzQsMTAgKzYwNSwxMCBAQCBib29sIElzUGxhdGZvcm1BdmFpbGFibGUo
Y29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwYXJhbSkKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGdQYXJhbUF2YWlsYWJpbGl0eUNhY2hlW3BhcmFtXSA9IHJlc3VsdDsKKyAg
ICAgICAgR2V0QXZhaWxhYmlsaXR5Q2FjaGUoKVtwYXJhbV0gPSByZXN1bHQ7CiAKICAgICAgICAg
Ly8gRW5hYmxlIHRoaXMgdW5jb25kaXRpb25hbGx5IHRvIHByaW50IGF2YWlsYWJsZSBwbGF0Zm9y
bXMuCi0gICAgICAgIGlmICghZ1NlbGVjdGVkQ29uZmlnLmVtcHR5KCkpCisgICAgICAgIGlmIChJ
c0NvbmZpZ1NlbGVjdGVkKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICAgICB7CkBAIC02MDMsNyArNjM0LDcgQEAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IEdldEF2YWlsYWJsZVRlc3RQbGF0Zm9ybU5hbWVzKCkKIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gcGxhdGZvcm1OYW1lczsKIAotICAgIGZvciAoY29uc3QgYXV0byAmaXRlciA6IGdQ
YXJhbUF2YWlsYWJpbGl0eUNhY2hlKQorICAgIGZvciAoY29uc3QgYXV0byAmaXRlciA6IEdldEF2
YWlsYWJpbGl0eUNhY2hlKCkpCiAgICAgewogICAgICAgICBpZiAoaXRlci5zZWNvbmQpCiAgICAg
ICAgIHsKQEAgLTYxOCw0ICs2NDksMTAgQEAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdldEF2
YWlsYWJsZVRlc3RQbGF0Zm9ybU5hbWVzKCkKIAogICAgIHJldHVybiBwbGF0Zm9ybU5hbWVzOwog
fQorCit2b2lkIFNldFNlbGVjdGVkQ29uZmlnKGNvbnN0IGNoYXIgKnNlbGVjdGVkQ29uZmlnKQor
eworICAgIGdTZWxlY3RlZENvbmZpZy5maWxsKDApOworICAgIHN0cm5jcHkoZ1NlbGVjdGVkQ29u
ZmlnLmRhdGEoKSwgc2VsZWN0ZWRDb25maWcsIGtNYXhDb25maWdOYW1lTGVuIC0gMSk7Cit9CiB9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlh
dGUuaAppbmRleCAzZDhlODY2Njg1ZWUzMjMyZjEyZmMxNDQ2NjdhN2NmZTIzZTFiMzEzLi5iZTcw
OWUxMjZmMDAxYTUzMWJlOWMxMzk1ZjUzZWU5NTVjNWEyYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRp
YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMv
YW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oCkBAIC0xMTMsNiArMTEzLDEwIEBAIHN0cnVjdCBDb21i
aW5lZFByaW50VG9TdHJpbmdQYXJhbU5hbWUKICAgICBJTlNUQU5USUFURV9URVNUX1NVSVRFX1Ao
LCB0ZXN0TmFtZSwgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9QTEFURk9STVModGVzdE5hbWUpLCBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJh
bU5hbWUoKSkKIAorI2RlZmluZSBBTkdMRV9JTlNUQU5USUFURV9URVNUX0FSUkFZKHRlc3ROYW1l
LCB2YWx1ZXNpbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBJTlNUQU5USUFURV9URVNUX1NVSVRFX1AoLCB0ZXN0TmFtZSwgdGVzdGluZzo6VmFsdWVzSW4o
OjphbmdsZTo6RmlsdGVyVGVzdFBhcmFtcyh2YWx1ZXNpbikpLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSkKKwogI2RlZmlu
ZSBBTkdMRV9BTExfVEVTVF9QTEFURk9STVNfRVMxIFwKICAgICBFUzFfRDNEMTEoKSwgRVMxX09Q
RU5HTCgpLCBFUzFfT1BFTkdMRVMoKSwgRVMxX1ZVTEtBTigpLCBFUzFfVlVMS0FOX1NXSUZUU0hB
REVSKCkKIApAQCAtMTQ2LDEyICsxNTAsMjIgQEAgc3RydWN0IENvbWJpbmVkUHJpbnRUb1N0cmlu
Z1BhcmFtTmFtZQogICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgsIHRlc3ROYW1lLCBBTkdM
RV9JTlNUQU5USUFURV9URVNUX1BMQVRGT1JNUyh0ZXN0TmFtZSksIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKQogCisjZGVm
aW5lIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMzX0FORCh0ZXN0TmFtZSwgZXh0cmEpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb25zdCBQbGF0Zm9ybVBhcmFtZXRl
cnMgdGVzdE5hbWUjI3BhcmFtc1tdID0ge0FOR0xFX0FMTF9URVNUX1BMQVRGT1JNU19FUzMsIGV4
dHJhfTsgXAorICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgsIHRlc3ROYW1lLCBBTkdMRV9J
TlNUQU5USUFURV9URVNUX1BMQVRGT1JNUyh0ZXN0TmFtZSksICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSkKKwogLy8g
SW5zdGFudGlhdGUgdGhlIHRlc3Qgb25jZSBmb3IgZWFjaCBHTEVTMzEgcGxhdGZvcm0KICNkZWZp
bmUgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzMxKHRlc3ROYW1lKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzIHRl
c3ROYW1lIyNwYXJhbXNbXSA9IHtBTkdMRV9BTExfVEVTVF9QTEFURk9STVNfRVMzMX07ICAgXAog
ICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgsIHRlc3ROYW1lLCBBTkdMRV9JTlNUQU5USUFU
RV9URVNUX1BMQVRGT1JNUyh0ZXN0TmFtZSksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKQogCisjZGVmaW5lIEFOR0xFX0lO
U1RBTlRJQVRFX1RFU1RfRVMzMV9BTkQodGVzdE5hbWUsIGV4dHJhKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzIHRlc3ROYW1l
IyNwYXJhbXNbXSA9IHtBTkdMRV9BTExfVEVTVF9QTEFURk9STVNfRVMzMSwgZXh0cmF9OyBcCisg
ICAgSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKCwgdGVzdE5hbWUsIEFOR0xFX0lOU1RBTlRJQVRF
X1RFU1RfUExBVEZPUk1TKHRlc3ROYW1lKSwgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OlByaW50VG9TdHJpbmdQYXJhbU5hbWUoKSkKKwogLy8gTXVsdGlwbGUg
RVMgVmVyc2lvbiBtYWNyb3MKICNkZWZpbmUgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzJfQU5E
X0VTMyh0ZXN0TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29u
c3QgUGxhdGZvcm1QYXJhbWV0ZXJzIHRlc3ROYW1lIyNwYXJhbXNbXSA9IHtBTkdMRV9BTExfVEVT
VF9QTEFURk9STVNfRVMyLCAgICAgXApAQCAtMTg1LDEzICsxOTksMTAgQEAgc3RydWN0IENvbWJp
bmVkUHJpbnRUb1N0cmluZ1BhcmFtTmFtZQogICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgs
IHRlc3ROYW1lLCBBTkdMRV9JTlNUQU5USUFURV9URVNUX1BMQVRGT1JNUyh0ZXN0TmFtZSksIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFt
TmFtZSgpKQogCi0vLyBJbnN0YW50aWF0ZSB0aGUgdGVzdCBmb3IgYSBjb21iaW5hdGlvbiBvZiBO
IHBhcmFtZXRlcnMgYW5kIHRoZSBlbnVtZXJhdGlvbiBvZiBwbGF0Zm9ybXMgaW4gdGhlCi0vLyBl
eHRyYSBhcmdzLCBzaW1pbGFyIHRvIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1QuICBUaGUgbWFjcm9z
IGFyZSBkZWZpbmVkIG9ubHkgZm9yIHRoZSBOcyBjdXJyZW50bHkKLS8vIGluIHVzZSwgYW5kIGNh
biBiZSBleHBhbmRlZCBhcyBuZWNlc3NhcnkuCi0jZGVmaW5lIEFOR0xFX0lOU1RBTlRJQVRFX1RF
U1RfQ09NQklORV8xKHRlc3ROYW1lLCBwcmludCwgY29tYmluZTEsIGZpcnN0LCAuLi4pIFwKLSAg
ICBjb25zdCBkZWNsdHlwZShmaXJzdCkgdGVzdE5hbWUjI3BhcmFtc1tdID0ge2ZpcnN0LCAjI19f
VkFfQVJHU19ffTsgICAgICAgICAgXAotICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
ICwgdGVzdE5hbWUsIHRlc3Rpbmc6OkNvbWJpbmUoQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9QTEFU
Rk9STVModGVzdE5hbWUpLCBjb21iaW5lMSksIHByaW50KQorLy8gSW5zdGFudGlhdGUgdGhlIHRl
c3QgZm9yIGEgY29tYmluYXRpb24gb2YgTiBwYXJhbWV0ZXJzIGFuZCB0aGUKKy8vIGVudW1lcmF0
aW9uIG9mIHBsYXRmb3JtcyBpbiB0aGUgZXh0cmEgYXJncywgc2ltaWxhciB0bworLy8gQU5HTEVf
SU5TVEFOVElBVEVfVEVTVC4gIFRoZSBtYWNyb3MgYXJlIGRlZmluZWQgb25seSBmb3IgdGhlIE5z
CisvLyBjdXJyZW50bHkgaW4gdXNlLCBhbmQgY2FuIGJlIGV4cGFuZGVkIGFzIG5lY2Vzc2FyeS4K
ICNkZWZpbmUgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9DT01CSU5FXzQodGVzdE5hbWUsIHByaW50
LCBjb21iaW5lMSwgY29tYmluZTIsIGNvbWJpbmUzLCBjb21iaW5lNCwgXAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCwgLi4uKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29uc3QgZGVjbHR5cGUoZmlyc3Qp
IHRlc3ROYW1lIyNwYXJhbXNbXSA9IHtmaXJzdCwgIyNfX1ZBX0FSR1NfX307ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKQEAgLTIxMCwyMSArMjIxLDc4IEBAIHN0cnVjdCBDb21iaW5lZFBy
aW50VG9TdHJpbmdQYXJhbU5hbWUKIC8vIENoZWNrcyBpZiBhIGNvbmZpZyBpcyBleHBlY3RlZCB0
byBiZSBzdXBwb3J0ZWQgYnkgY2hlY2tpbmcgYSBzeXN0ZW0tYmFzZWQgd2hpdGUgbGlzdC4KIGJv
b2wgSXNDb25maWdXaGl0ZWxpc3RlZChjb25zdCBTeXN0ZW1JbmZvICZzeXN0ZW1JbmZvLCBjb25z
dCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtKTsKIAotLy8gRGV0ZXJtaW5lcyBpZiBhIGNvbmZp
ZyBpcyBzdXBwb3J0ZWQgYnkgdHJ5aW5nIHRvIGluaXRpYWxpemUgaXQuIERvZXMgbm90IHJlcXVp
cmUgU3lzdGVtSW5mby4KKy8vIERldGVybWluZXMgaWYgYSBjb25maWcgaXMgc3VwcG9ydGVkIGJ5
IHRyeWluZyB0byBpbml0aWFsaXplIGl0LiBEb2VzCisvLyBub3QgcmVxdWlyZSBTeXN0ZW1JbmZv
LgogYm9vbCBJc0NvbmZpZ1N1cHBvcnRlZChjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFt
KTsKIAotLy8gUmV0dXJucyBzaGFyZWQgdGVzdCBzeXN0ZW0gaW5mb3JtYXRpb24uIENhbiBiZSB1
c2VkIGdsb2JhbGx5IGluIHRoZSB0ZXN0cy4KKy8vIFJldHVybnMgc2hhcmVkIHRlc3Qgc3lzdGVt
IGluZm9ybWF0aW9uLiBDYW4gYmUgdXNlZCBnbG9iYWxseSBpbiB0aGUKKy8vIHRlc3RzLgogU3lz
dGVtSW5mbyAqR2V0VGVzdFN5c3RlbUluZm8oKTsKIAotLy8gUmV0dXJucyBhIGxpc3Qgb2YgYWxs
IGVuYWJsZWQgdGVzdCBwbGF0Zm9ybSBuYW1lcy4gRm9yIHVzZSBpbiBjb25maWd1cmF0aW9uIGVu
dW1lcmF0aW9uLgorLy8gUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGVuYWJsZWQgdGVzdCBwbGF0Zm9y
bSBuYW1lcy4gRm9yIHVzZSBpbgorLy8gY29uZmlndXJhdGlvbiBlbnVtZXJhdGlvbi4KIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBHZXRBdmFpbGFibGVUZXN0UGxhdGZvcm1OYW1lcygpOwogCiAv
LyBBY3RpdmUgY29uZmlnIChlLmcuIEVTMl9WdWxrYW4pLgotZXh0ZXJuIHN0ZDo6c3RyaW5nIGdT
ZWxlY3RlZENvbmZpZzsKK3ZvaWQgU2V0U2VsZWN0ZWRDb25maWcoY29uc3QgY2hhciAqc2VsZWN0
ZWRDb25maWcpOworYm9vbCBJc0NvbmZpZ1NlbGVjdGVkKCk7CiAKLS8vIFVzZSBhIHNlcGFyYXRl
IGlzb2xhdGVkIHByb2Nlc3MgcGVyIHRlc3QgY29uZmlnLiBUaGlzIHdvcmtzIGFyb3VuZCBkcml2
ZXIgZmxha2luZXNzIHdoZW4gdXNpbmcKLS8vIG11bHRpcGxlIEFQSXMvd2luZG93cy9ldGMgaW4g
dGhlIHNhbWUgcHJvY2Vzcy4KKy8vIFVzZSBhIHNlcGFyYXRlIGlzb2xhdGVkIHByb2Nlc3MgcGVy
IHRlc3QgY29uZmlnLiBUaGlzIHdvcmtzIGFyb3VuZAorLy8gZHJpdmVyIGZsYWtpbmVzcyB3aGVu
IHVzaW5nIG11bHRpcGxlIEFQSXMvd2luZG93cy9ldGMgaW4gdGhlIHNhbWUKKy8vIHByb2Nlc3Mu
CiBleHRlcm4gYm9vbCBnU2VwYXJhdGVQcm9jZXNzUGVyQ29uZmlnOworCisvLyBGb3IgdXNlIHdp
dGggQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9BUlJBWQordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFt
c1Q+Cit1c2luZyBNb2RpZmllckZ1bmMgPSBzdGQ6OmZ1bmN0aW9uPFBhcmFtc1QoY29uc3QgUGFy
YW1zVCAmKT47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbXNUPgorc3RkOjp2ZWN0b3I8UGFy
YW1zVD4gQ29tYmluZVdpdGhGdW5jcyhjb25zdCBzdGQ6OnZlY3RvcjxQYXJhbXNUPiAmaW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPE1v
ZGlmaWVyRnVuYzxQYXJhbXNUPj4gJm1vZGlmaWVycykKK3sKKyAgICBzdGQ6OnZlY3RvcjxQYXJh
bXNUPiBvdXQ7CisgICAgZm9yIChjb25zdCBQYXJhbXNUICZwYXJhbXNJbiA6IGluKQorICAgIHsK
KyAgICAgICAgZm9yIChNb2RpZmllckZ1bmM8UGFyYW1zVD4gbW9kaWZpZXIgOiBtb2RpZmllcnMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dC5wdXNoX2JhY2sobW9kaWZpZXIocGFyYW1zSW4p
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb3V0OworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUGFyYW1ULCB0eXBlbmFtZSBSYW5nZVQsIHR5cGVuYW1lIE1vZGlmaWVyVD4KK3N0ZDo6
dmVjdG9yPFBhcmFtVD4gQ29tYmluZVdpdGhWYWx1ZXMoY29uc3Qgc3RkOjp2ZWN0b3I8UGFyYW1U
PiAmaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlVCBiZWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VUIGVuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UIGNvbWJpbmUoY29uc3Qg
UGFyYW1UICYsIE1vZGlmaWVyVCkpCit7CisgICAgc3RkOjp2ZWN0b3I8UGFyYW1UPiBvdXQ7Cisg
ICAgZm9yIChjb25zdCBQYXJhbVQgJnBhcmFtc0luIDogaW4pCisgICAgeworICAgICAgICBmb3Ig
KGF1dG8gaXRlciA9IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBvdXQucHVzaF9iYWNrKGNvbWJpbmUocGFyYW1zSW4sICppdGVyKSk7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIG91dDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFt
VCwgdHlwZW5hbWUgTW9kaWZpZXJUPgorc3RkOjp2ZWN0b3I8UGFyYW1UPiBDb21iaW5lV2l0aFZh
bHVlcyhjb25zdCBzdGQ6OnZlY3RvcjxQYXJhbVQ+ICZpbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjppbml0aWFsaXplcl9saXN0PE1vZGlmaWVyVD4g
Jm1vZGlmaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1U
IGNvbWJpbmUoY29uc3QgUGFyYW1UICYsIE1vZGlmaWVyVCkpCit7CisgICAgcmV0dXJuIENvbWJp
bmVXaXRoVmFsdWVzKGluLCBtb2RpZmllcnMuYmVnaW4oKSwgbW9kaWZpZXJzLmVuZCgpLCBjb21i
aW5lKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVCwgdHlwZW5hbWUgTW9kaWZpZXJz
VCwgdHlwZW5hbWUgTW9kaWZpZXJUPgorc3RkOjp2ZWN0b3I8UGFyYW1UPiBDb21iaW5lV2l0aFZh
bHVlcyhjb25zdCBzdGQ6OnZlY3RvcjxQYXJhbVQ+ICZpbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTW9kaWZpZXJzVCAmbW9kaWZpZXJzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVQgY29tYmluZShjb25zdCBQYXJhbVQg
JiwgTW9kaWZpZXJUKSkKK3sKKyAgICByZXR1cm4gQ29tYmluZVdpdGhWYWx1ZXMoaW4sIHN0ZDo6
YmVnaW4obW9kaWZpZXJzKSwgc3RkOjplbmQobW9kaWZpZXJzKSwgY29tYmluZSk7Cit9CiB9ICAv
LyBuYW1lc3BhY2UgYW5nbGUKIAogI2RlZmluZSBBTkdMRV9TS0lQX1RFU1RfSUYoQ09ORCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0
X3BsYXRmb3JtLmNwcAppbmRleCA4NTU3YWU4OGI2MDkwNzdmYTc5M2Y4NTBhNGE1NjQ2YjBjZjgx
ODA5Li4xYzQyMTFkMTI1YmRmOGMwZGNhMWY4ZDE1M2Y1MzkyZmRhYWU3Yzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0
X3BsYXRmb3JtLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVz
dF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmNwcApAQCAtNywxNCArNywxMyBAQAogCiAjaW5j
bHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAjaW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0ZW1J
bmZvLmgiCi0jaW5jbHVkZSAidXRpbC9FR0xXaW5kb3cuaCIKLSNpbmNsdWRlICJ1dGlsL09TV2lu
ZG93LmgiCi0jaW5jbHVkZSAidXRpbC90ZXN0X3V0aWxzLmgiCiAKICNpZiBkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX1dJTkRPV1MpCiAjICAgIGluY2x1ZGUgPFZlcnNpb25IZWxwZXJzLmg+CiAjZW5k
aWYgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKIAordXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOworCiBib29sIElzQWRyZW5vKCkKIHsKICAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVS
RVIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVz
dF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmgKaW5kZXggZDI5Yzc1ZmEy
MzI3MGY4ZGU2MjkxNjNiNmQ2NDM2OGRiMjQxYWQ1MS4uZjc0ZGFkMjM1YmE4YmVmYmQ1NTU1YzI4
ZjdlMmRlN2U5NTU0MjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uaApA
QCAtOSw3ICs5LDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4KIAotI2luY2x1ZGUgInV0aWwvRUdM
V2luZG93LmgiCisjaW5jbHVkZSAidXRpbC91dGlsX2dsLmgiCiAKIC8vIERyaXZlciB2ZW5kb3Jz
CiBib29sIElzQWRyZW5vKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9ydW5uZXIvVGVzdFN1aXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL3J1bm5lci9UZXN0U3VpdGUuY3BwCmluZGV4
IDE2NWRkNjIwZmY4MzQ5NjkzYzY5ZmFkYTI0ZWM3MjQ4NTI4NGM2MzcuLjBhZmE0ZGZhNTY1YjI1
YjljZjNlOTZhNjgwMDBjMzk3ZmM2MTA2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL3J1bm5lci9UZXN0U3VpdGUuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL3J1bm5lci9UZXN0U3Vp
dGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAKIC8vIFdlIGRpcmVjdGx5IGNhbGwgaW50byBhIGZ1
bmN0aW9uIHRvIHJlZ2lzdGVyIHRoZSBwYXJhbWV0ZXJpemVkIHRlc3RzLiBUaGlzIHNhdmVzIHNw
aW5uaW5nIHVwCiAvLyBhIHN1YnByb2Nlc3Mgd2l0aCBhIG5ldyBndGVzdCBmaWx0ZXIuCi0jaW5j
bHVkZSAidGhpcmRfcGFydHkvZ29vZ2xldGVzdC9zcmMvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QtaW50
ZXJuYWwtaW5sLmgiCisjaW5jbHVkZSA8Z3Rlc3QvLi4vLi4vc3JjL2d0ZXN0LWludGVybmFsLWlu
bC5oPgogCiBuYW1lc3BhY2UganMgPSByYXBpZGpzb247CiAKQEAgLTMyLDExICszMiwyMCBAQCBu
YW1lc3BhY2UgYW5nbGUKIHsKIG5hbWVzcGFjZQogewotY29uc3RleHByIGNoYXIga1Rlc3RUaW1l
b3V0QXJnW10gID0gIi0tdGVzdC10aW1lb3V0PSI7Ci1jb25zdGV4cHIgY2hhciBrRmlsdGVyRmls
ZUFyZ1tdICAgPSAiLS1maWx0ZXItZmlsZT0iOwotY29uc3RleHByIGNoYXIga1Jlc3VsdEZpbGVB
cmdbXSAgID0gIi0tcmVzdWx0cy1maWxlPSI7Ci1jb25zdGV4cHIgaW50IGtEZWZhdWx0VGVzdFRp
bWVvdXQgPSAxMDsKLWNvbnN0ZXhwciBpbnQga0RlZmF1bHRCYXRjaFNpemUgICA9IDEwMDA7Citj
b25zdGV4cHIgY2hhciBrVGVzdFRpbWVvdXRBcmdbXSA9ICItLXRlc3QtdGltZW91dD0iOworY29u
c3RleHByIGNoYXIga0ZpbHRlckZpbGVBcmdbXSAgPSAiLS1maWx0ZXItZmlsZT0iOworY29uc3Rl
eHByIGNoYXIga1Jlc3VsdEZpbGVBcmdbXSAgPSAiLS1yZXN1bHRzLWZpbGU9IjsKKyNpZiBkZWZp
bmVkKE5ERUJVRykKK2NvbnN0ZXhwciBpbnQga0RlZmF1bHRUZXN0VGltZW91dCA9IDIwOworI2Vs
c2UKK2NvbnN0ZXhwciBpbnQga0RlZmF1bHRUZXN0VGltZW91dCAgPSA2MDsKKyNlbmRpZgorI2lm
IGRlZmluZWQoTkRFQlVHKQorY29uc3RleHByIGludCBrRGVmYXVsdEJhdGNoVGltZW91dCA9IDI0
MDsKKyNlbHNlCitjb25zdGV4cHIgaW50IGtEZWZhdWx0QmF0Y2hUaW1lb3V0ID0gNjAwOworI2Vu
ZGlmCitjb25zdGV4cHIgaW50IGtEZWZhdWx0QmF0Y2hTaXplID0gMTAwMDsKIAogY29uc3QgY2hh
ciAqUGFyc2VGbGFnVmFsdWUoY29uc3QgY2hhciAqZmxhZywgY29uc3QgY2hhciAqYXJndW1lbnQp
CiB7CkBAIC02NDUsNyArNjU0LDcgQEAgVGVzdFN1aXRlOjpUZXN0U3VpdGUoaW50ICphcmdjLCBj
aGFyICoqYXJndikKICAgICAgIG1Ub3RhbFJlc3VsdENvdW50KDApLAogICAgICAgbU1heFByb2Nl
c3NlcyhOdW1iZXJPZlByb2Nlc3NvcnMoKSksCiAgICAgICBtVGVzdFRpbWVvdXQoa0RlZmF1bHRU
ZXN0VGltZW91dCksCi0gICAgICBtQmF0Y2hUaW1lb3V0KDYwKQorICAgICAgbUJhdGNoVGltZW91
dChrRGVmYXVsdEJhdGNoVGltZW91dCkKIHsKICAgICBib29sIGhhc0ZpbHRlciAgICAgICAgICAg
ID0gZmFsc2U7CiAgICAgYm9vbCBhbHNvUnVuRGlzYWJsZWRUZXN0cyA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5Ly5maW5kLWlnbm9y
ZSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS8uZmluZC1pZ25vcmUK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L3ZvbGsvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvdm9say9CVUlM
RC5nbgppbmRleCA2NWEwYWZhNmVjMjg4YThhYThjODUwYjllNjVlMzFmMWFmMGY4MWY0Li4zNThj
ZGVmNzQwYmEyMjFiNjY1NGViNGQyZWEyNjBiOGUxNjA1NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvdm9say9CVUlMRC5nbgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvdm9say9CVUlMRC5nbgpAQCAtNiwy
OCArNiwxMSBAQCBjb25maWcoInZvbGtfY29uZmlnIikgewogICBpbmNsdWRlX2RpcnMgPSBbICIu
IiBdCiB9CiAKLSMgVE9ETyhhbmdsZWJ1Zy5jb20vNDM1MSk6IFJlbW92ZSB0aGlzIGFmdGVyIGNs
YW5nIHJvbGxzLgotY29uZmlnKCJ2b2xrX2ludGVybmFsX2NvbmZpZyIpIHsKLSAgaWYgKGlzX2Ns
YW5nKSB7Ci0gICAgY2ZsYWdzID0gWwotICAgICAgIi1YY2xhbmciLAotICAgICAgIi1tbGx2bSIs
Ci0gICAgICAiLVhjbGFuZyIsCi0gICAgICAiLS1lbmFibGUtZ2xvYmFsLW1lcmdlPWZhbHNlIiwK
LSAgICBdCi0gIH0KLX0KLQogc291cmNlX3NldCgidm9sayIpIHsKICAgc291cmNlcyA9IFsKICAg
ICAidm9say5jIiwKICAgICAidm9say5oIiwKICAgXQotICBwdWJsaWNfY29uZmlncyA9IFsKLSAg
ICAiOnZvbGtfY29uZmlnIiwKLSAgICAiOnZvbGtfaW50ZXJuYWxfY29uZmlnIiwKLSAgXQotICBw
dWJsaWNfZGVwcyA9IFsKLSAgICAiLi4vLi4vLi4vdGhpcmRfcGFydHkvdnVsa2FuLWhlYWRlcnMv
c3JjOnZ1bGthbl9oZWFkZXJzIiwKLSAgXQorICBwdWJsaWNfY29uZmlncyA9IFsgIjp2b2xrX2Nv
bmZpZyIgXQorICBwdWJsaWNfZGVwcyA9IFsgIi4uLy4uLy4uL3RoaXJkX3BhcnR5L3Z1bGthbi1o
ZWFkZXJzL3NyYzp2dWxrYW5faGVhZGVycyIgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdGhpcmRfcGFydHkvLmZpbmQtaWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdGhpcmRfcGFydHkvLmZpbmQtaWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2
NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3RoaXJkX3BhcnR5L0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhp
cmRfcGFydHkvQlVJTEQuZ24KaW5kZXggZWFjYmZjMTRjN2Y5MDc2MjkyODc0MTI1YjBmOTMzMWFm
NDliYTYwOC4uNDYyZjRkNGY3ZjgzZTYzMjJlNTc3NWQxMjUyMTM5MGQzMTQzMWRhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvQlVJTEQuZ24KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvQlVJTEQuZ24KQEAgLTI1LDE0ICsy
NSwxMCBAQCBncm91cCgianBlZyIpIHsKICAgaWYgKHVzZV9zeXN0ZW1fbGlianBlZykgewogICAg
IHB1YmxpY19jb25maWdzID0gWyAiOnN5c3RlbV9saWJqcGVnX2NvbmZpZyIgXQogICB9IGVsc2Ug
aWYgKHVzZV9saWJqcGVnX3R1cmJvKSB7Ci0gICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAiLy90
aGlyZF9wYXJ0eS9saWJqcGVnX3R1cmJvOmxpYmpwZWciLAotICAgIF0KKyAgICBwdWJsaWNfZGVw
cyA9IFsgIi8vdGhpcmRfcGFydHkvbGlianBlZ190dXJibzpsaWJqcGVnIiBdCiAgICAgcHVibGlj
X2NvbmZpZ3MgPSBbICI6bGlianBlZ190dXJib19jb25maWciIF0KICAgfSBlbHNlIHsKLSAgICBw
dWJsaWNfZGVwcyA9IFsKLSAgICAgICIvL3RoaXJkX3BhcnR5L2xpYmpwZWc6bGlianBlZyIsCi0g
ICAgXQorICAgIHB1YmxpY19kZXBzID0gWyAiLy90aGlyZF9wYXJ0eS9saWJqcGVnOmxpYmpwZWci
IF0KICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9w
YXJ0eS9nbG1hcmsyL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFy
dHkvZ2xtYXJrMi9CVUlMRC5nbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNTYwNGRhNjAxYzBkMDkxYzhkOTdmNzcy
MTMzMGQ4ZGM4NmViYjIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdGhpcmRfcGFydHkvZ2xtYXJrMi9CVUlMRC5nbgpAQCAtMCwwICsxLDQwMSBAQAorIyBDb3B5
cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisjCisjIEJ1
aWxkIGludGVncmF0aW9uIGZvciBnbG1hcmsyLgorCitpbXBvcnQoIi4uLy4uL2duaS9hbmdsZS5n
bmkiKQorCitfZ2xtYXJrMl9nbGFkX2NvbW1vbl9zb3VyY2VzID0gWworICAic3JjL3NyYy9nbGFk
L2luY2x1ZGUvZ2xhZC9lZ2wuaCIsCisgICJzcmMvc3JjL2dsYWQvaW5jbHVkZS9nbGFkL3dnbC5o
IiwKKyAgInNyYy9zcmMvZ2xhZC9zcmMvZWdsLmMiLAorXQorCitpZiAoaXNfd2luKSB7CisgIF9n
bG1hcmsyX2dsYWRfY29tbW9uX3NvdXJjZXMgKz0gWyAic3JjL3NyYy9nbGFkL3NyYy93Z2wuYyIg
XQorfQorCitjb25maWcoImdsbWFyazJfZ2xhZF9jb25maWciKSB7CisgIGluY2x1ZGVfZGlycyA9
IFsgInNyYy9zcmMvZ2xhZC9pbmNsdWRlIiBdCit9CisKK3NvdXJjZV9zZXQoImdsbWFyazJfZ2xh
ZF9nbGVzIikgeworICBzb3VyY2VzID0gX2dsbWFyazJfZ2xhZF9jb21tb25fc291cmNlcyArIFsK
KyAgICAgICAgICAgICAgInNyYy9zcmMvZ2xhZC9pbmNsdWRlL2dsYWQvZ2xlczIuaCIsCisgICAg
ICAgICAgICAgICJzcmMvc3JjL2dsYWQvc3JjL2dsZXMyLmMiLAorICAgICAgICAgICAgXQorICBw
dWJsaWNfY29uZmlncyA9IFsgIjpnbG1hcmsyX2dsYWRfY29uZmlnIiBdCit9CisKK3NvdXJjZV9z
ZXQoImdsbWFyazJfZ2xhZF9nbCIpIHsKKyAgc291cmNlcyA9IF9nbG1hcmsyX2dsYWRfY29tbW9u
X3NvdXJjZXMgKyBbCisgICAgICAgICAgICAgICJzcmMvc3JjL2dsYWQvaW5jbHVkZS9nbGFkL2ds
LmgiLAorICAgICAgICAgICAgICAic3JjL3NyYy9nbGFkL3NyYy9nbC5jIiwKKyAgICAgICAgICAg
IF0KKyAgcHVibGljX2NvbmZpZ3MgPSBbICI6Z2xtYXJrMl9nbGFkX2NvbmZpZyIgXQorfQorCitn
bG1hcmtfZGF0YV9wYXRoID0gIiR7YW5nbGVfcm9vdH0vdGhpcmRfcGFydHkvZ2xtYXJrMi9zcmMv
ZGF0YSIKK3Jhd19nbG1hcmtfZGF0YV9wYXRoID0gcmViYXNlX3BhdGgoZ2xtYXJrX2RhdGFfcGF0
aCwgcm9vdF9idWlsZF9kaXIpCisKK2NvbmZpZygiZ2xtYXJrMl9jb21tb25fY29uZmlnIikgewor
ICBkZWZpbmVzID0gWyAiR0xNQVJLX0RBVEFfUEFUSD1cIiR7cmF3X2dsbWFya19kYXRhX3BhdGh9
XCIiIF0KKyAgaW5jbHVkZV9kaXJzID0gWyAic3JjL3NyYyIgXQorICBpZiAoaXNfd2luKSB7Cisg
ICAgaW5jbHVkZV9kaXJzICs9IFsgInNyYy9zcmMvaW5jbHVkZSIgXQorCisgICAgIyBNX1BJIGlz
IG5vbnN0YW5kYXJkLgorICAgIGRlZmluZXMgKz0gWyAiX1VTRV9NQVRIX0RFRklORVMiIF0KKwor
ICAgIGlmICghaXNfY2xhbmcpIHsKKyAgICAgIGNmbGFncyA9IFsKKyAgICAgICAgIyBNU1ZDIHdh
cm5zIGFib3V0IHRoZSBjb3B5cmlnaHQgY2hhcmFjdGVyIGJlaW5nIGlsbGVnYWwuCisgICAgICAg
ICIvd2Q0ODI4IiwKKworICAgICAgICAjIEEgd2FybmluZyBnZW5lcmF0ZWQgaW4gc2NlbmUtZWZm
ZWN0LTJkIGluIHZlYzI6OmNhbGNfb2Zmc2V0CisgICAgICAgICIvd2Q0MTQ2IiwKKyAgICAgIF0K
KyAgICB9CisgIH0KK30KKworY29uZmlnKCJnbG1hcmsyX2dsZXNfY29uZmlnIikgeworICBkZWZp
bmVzID0gWyAiR0xNQVJLMl9VU0VfR0xFU3YyIiBdCit9CisKK2NvbmZpZygiZ2xtYXJrMl9nbF9j
b25maWciKSB7CisgIGRlZmluZXMgPSBbICJHTE1BUksyX1VTRV9HTCIgXQorfQorCitncm91cCgi
Z2xtYXJrMl9nbGVzIikgeworICBwdWJsaWNfY29uZmlncyA9IFsKKyAgICAiOmdsbWFyazJfY29t
bW9uX2NvbmZpZyIsCisgICAgIjpnbG1hcmsyX2dsZXNfY29uZmlnIiwKKyAgXQorICBwdWJsaWNf
ZGVwcyA9IFsgIjpnbG1hcmsyX2dsYWRfZ2xlcyIgXQorfQorCitncm91cCgiZ2xtYXJrMl9nbCIp
IHsKKyAgcHVibGljX2NvbmZpZ3MgPSBbCisgICAgIjpnbG1hcmsyX2NvbW1vbl9jb25maWciLAor
ICAgICI6Z2xtYXJrMl9nbF9jb25maWciLAorICBdCisgIHB1YmxpY19kZXBzID0gWyAiOmdsbWFy
azJfZ2xhZF9nbCIgXQorfQorCisjIFN1cHBsaWVzIGNvbXBhdGlibGUgaGVhZGVycyBvbiBXaW4z
Mi4KK2NvbmZpZygiZ2xtYXJrMl9oZWFkZXJzX2NvbmZpZyIpIHsKKyAgaWYgKGlzX3dpbikgewor
ICAgIGlmIChpc19jbGFuZykgeworICAgICAgY2ZsYWdzID0gWworICAgICAgICAiLVduby11bnVz
ZWQtZnVuY3Rpb24iLAorICAgICAgICAiLVduby13cml0YWJsZS1zdHJpbmdzIiwKKyAgICAgICAg
Ii1Xbm8tZXh0cmEtdG9rZW5zIiwKKyAgICAgIF0KKyAgICB9CisgIH0KK30KKworc291cmNlX3Nl
dCgiZ2xtYXJrMl9oZWFkZXJzIikgeworICBzb3VyY2VzID0gWworICAgICJzcmMvc3JjL2NhbnZh
cy5oIiwKKyAgICAic3JjL3NyYy9nbC1oZWFkZXJzLmgiLAorICAgICJzcmMvc3JjL2dsLXN0YXRl
LWVnbC5oIiwKKyAgICAic3JjL3NyYy9nbC1zdGF0ZS5oIiwKKyAgICAic3JjL3NyYy9nbC12aXN1
YWwtY29uZmlnLmgiLAorICAgICJzcmMvc3JjL21lc2guaCIsCisgICAgInNyYy9zcmMvb3B0aW9u
cy5oIiwKKyAgICAic3JjL3NyYy9zY2VuZS5oIiwKKyAgICAic3JjL3NyYy9zaGFyZWQtbGlicmFy
eS5oIiwKKyAgICAic3JjL3NyYy90ZXh0dXJlLmgiLAorICBdCisKKyAgaWYgKGlzX2xpbnV4KSB7
CisgICAgc291cmNlcyArPSBbICJzcmMvc3JjL2dsLXN0YXRlLWdseC5oIiBdCisgIH0KKyAgaWYg
KGlzX3dpbikgeworICAgIHNvdXJjZXMgKz0gWworICAgICAgInNyYy9zcmMvZ2wtc3RhdGUtd2ds
LmgiLAorICAgICAgInNyYy9zcmMvaW5jbHVkZS9kaXJlbnQuaCIsCisgICAgICAic3JjL3NyYy9p
bmNsdWRlL2dldG9wdC5oIiwKKyAgICAgICJzcmMvc3JjL2luY2x1ZGUvc3lzL3RpbWUuaCIsCisg
ICAgXQorICB9CisgIHB1YmxpY19jb25maWdzID0gWyAiOmdsbWFyazJfaGVhZGVyc19jb25maWci
IF0KKyAgaW5jbHVkZV9kaXJzID0gWyAic3JjL3NyYyIgXQorfQorCitjb25maWcoImdsbWFyazJf
bGlibWF0cml4X2NvbmZpZyIpIHsKKyAgaW5jbHVkZV9kaXJzID0gWyAic3JjL3NyYy9saWJtYXRy
aXgiIF0KK30KKwordGVtcGxhdGUoImdsbWFyazJfbGlibWF0cml4IikgeworICBzb3VyY2Vfc2V0
KHRhcmdldF9uYW1lKSB7CisgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCAiKiIp
CisgICAgc291cmNlcyA9IFsKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9nbC1pZi5oIiwKKyAg
ICAgICJzcmMvc3JjL2xpYm1hdHJpeC9sb2cuY2MiLAorICAgICAgInNyYy9zcmMvbGlibWF0cml4
L2xvZy5oIiwKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9tYXQuY2MiLAorICAgICAgInNyYy9z
cmMvbGlibWF0cml4L21hdC5oIiwKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9wcm9ncmFtLmNj
IiwKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9wcm9ncmFtLmgiLAorICAgICAgInNyYy9zcmMv
bGlibWF0cml4L3NoYWRlci1zb3VyY2UuY2MiLAorICAgICAgInNyYy9zcmMvbGlibWF0cml4L3No
YWRlci1zb3VyY2UuaCIsCisgICAgICAic3JjL3NyYy9saWJtYXRyaXgvc3RhY2suaCIsCisgICAg
ICAic3JjL3NyYy9saWJtYXRyaXgvdXRpbC5jYyIsCisgICAgICAic3JjL3NyYy9saWJtYXRyaXgv
dXRpbC5oIiwKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC92ZWMuaCIsCisgICAgXQorCisgICAg
aWYgKGlzX2NsYW5nKSB7CisgICAgICBjZmxhZ3NfY2MgPSBbICItV25vLWltcGxpY2l0LWZhbGx0
aHJvdWdoIiBdCisgICAgfQorICAgIHB1YmxpY19kZXBzID0gWyAiOmdsbWFyazJfaGVhZGVycyIg
XQorICAgIHB1YmxpY19jb25maWdzID0gWyAiOmdsbWFyazJfbGlibWF0cml4X2NvbmZpZyIgXQor
ICB9Cit9CisKK2dsbWFyazJfbGlibWF0cml4KCJnbG1hcmsyX2xpYm1hdHJpeF9nbGVzIikgewor
ICBkZXBzID0gWyAiOmdsbWFyazJfZ2xlcyIgXQorfQorCitnbG1hcmsyX2xpYm1hdHJpeCgiZ2xt
YXJrMl9saWJtYXRyaXhfZ2wiKSB7CisgIGRlcHMgPSBbICI6Z2xtYXJrMl9nbCIgXQorfQorCitj
b25maWcoImdsbWFyazJfc2NlbmVfaWRlYXNfY29uZmlnIikgeworICBpbmNsdWRlX2RpcnMgPSBb
ICJzcmMvc3JjL3NjZW5lLWlkZWFzIiBdCit9CisKK3RlbXBsYXRlKCJnbG1hcmsyX3NjZW5lX2lk
ZWFzIikgeworICBzb3VyY2Vfc2V0KHRhcmdldF9uYW1lKSB7CisgICAgZm9yd2FyZF92YXJpYWJs
ZXNfZnJvbShpbnZva2VyLCAiKiIpCisgICAgc291cmNlcyA9IFsKKyAgICAgICJzcmMvc3JjL3Nj
ZW5lLWlkZWFzL2EuY2MiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvY2hhcmFjdGVycy5o
IiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2QuY2MiLAorICAgICAgInNyYy9zcmMvc2Nl
bmUtaWRlYXMvZS5jYyIsCisgICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9pLmNjIiwKKyAgICAg
ICJzcmMvc3JjL3NjZW5lLWlkZWFzL2xhbXAuY2MiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRl
YXMvbGFtcC5oIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2xvZ28uY2MiLAorICAgICAg
InNyYy9zcmMvc2NlbmUtaWRlYXMvbG9nby5oIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFz
L20uY2MiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvbi5jYyIsCisgICAgICAic3JjL3Ny
Yy9zY2VuZS1pZGVhcy9vLmNjIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL3MuY2MiLAor
ICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvc3BsaW5lcy5jYyIsCisgICAgICAic3JjL3NyYy9z
Y2VuZS1pZGVhcy9zcGxpbmVzLmgiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvdC5jYyIs
CisgICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy90YWJsZS5jYyIsCisgICAgICAic3JjL3NyYy9z
Y2VuZS1pZGVhcy90YWJsZS5oIiwKKyAgICBdCisgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6Z2xt
YXJrMl9zY2VuZV9pZGVhc19jb25maWciIF0KKyAgfQorfQorCitnbG1hcmsyX3NjZW5lX2lkZWFz
KCJnbG1hcmsyX3NjZW5lX2lkZWFzX2dsZXMiKSB7CisgIGRlcHMgPSBbCisgICAgIjpnbG1hcmsy
X2dsZXMiLAorICAgICI6Z2xtYXJrMl9saWJtYXRyaXhfZ2xlcyIsCisgIF0KK30KKworZ2xtYXJr
Ml9zY2VuZV9pZGVhcygiZ2xtYXJrMl9zY2VuZV9pZGVhc19nbCIpIHsKKyAgZGVwcyA9IFsKKyAg
ICAiOmdsbWFyazJfZ2wiLAorICAgICI6Z2xtYXJrMl9saWJtYXRyaXhfZ2wiLAorICBdCit9CisK
K2NvbmZpZygiZ2xtYXJrMl9zY2VuZV90ZXJyYWluX2NvbmZpZyIpIHsKKyAgaW5jbHVkZV9kaXJz
ID0gWyAic3JjL3NyYy9zY2VuZS10ZXJyYWluIiBdCit9CisKK3RlbXBsYXRlKCJnbG1hcmsyX3Nj
ZW5lX3RlcnJhaW4iKSB7CisgIHNvdXJjZV9zZXQodGFyZ2V0X25hbWUpIHsKKyAgICBmb3J3YXJk
X3ZhcmlhYmxlc19mcm9tKGludm9rZXIsICIqIikKKyAgICBzb3VyY2VzID0gWworICAgICAgInNy
Yy9zcmMvc2NlbmUtdGVycmFpbi9iYXNlLXJlbmRlcmVyLmNwcCIsCisgICAgICAic3JjL3NyYy9z
Y2VuZS10ZXJyYWluL2JsdXItcmVuZGVyZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRl
cnJhaW4vY29weS1yZW5kZXJlci5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9s
dW1pbmFuY2UtcmVuZGVyZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vbm9y
bWFsLWZyb20taGVpZ2h0LXJlbmRlcmVyLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS10ZXJy
YWluL292ZXJsYXktcmVuZGVyZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4v
cmVuZGVyZXItY2hhaW4uY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vcmVuZGVy
ZXIuaCIsCisgICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL3NpbXBsZXgtbm9pc2UtcmVuZGVy
ZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vdGVycmFpbi1yZW5kZXJlci5j
cHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi90ZXh0dXJlLXJlbmRlcmVyLmNwcCIs
CisgICAgXQorCisgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6Z2xtYXJrMl9zY2VuZV90ZXJyYWlu
X2NvbmZpZyIgXQorICB9Cit9CisKK2dsbWFyazJfc2NlbmVfdGVycmFpbigiZ2xtYXJrMl9zY2Vu
ZV90ZXJyYWluX2dsZXMiKSB7CisgIGRlcHMgPSBbCisgICAgIjpnbG1hcmsyX2dsZXMiLAorICAg
ICI6Z2xtYXJrMl9saWJtYXRyaXhfZ2xlcyIsCisgIF0KK30KKworZ2xtYXJrMl9zY2VuZV90ZXJy
YWluKCJnbG1hcmsyX3NjZW5lX3RlcnJhaW5fZ2wiKSB7CisgIGRlcHMgPSBbCisgICAgIjpnbG1h
cmsyX2dsIiwKKyAgICAiOmdsbWFyazJfbGlibWF0cml4X2dsIiwKKyAgXQorfQorCit0ZW1wbGF0
ZSgiZ2xtYXJrMl9jb21tb24iKSB7CisgIHNvdXJjZV9zZXQodGFyZ2V0X25hbWUpIHsKKyAgICBm
b3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIsICIqIikKKyAgICBzb3VyY2VzID0gWworICAg
ICAgInNyYy9zcmMvYmVuY2htYXJrLWNvbGxlY3Rpb24uY3BwIiwKKyAgICAgICJzcmMvc3JjL2Jl
bmNobWFyay1jb2xsZWN0aW9uLmgiLAorICAgICAgInNyYy9zcmMvYmVuY2htYXJrLmNwcCIsCisg
ICAgICAic3JjL3NyYy9iZW5jaG1hcmsuaCIsCisgICAgICAic3JjL3NyYy9kZWZhdWx0LWJlbmNo
bWFya3MuaCIsCisgICAgICAic3JjL3NyYy9nbC1oZWFkZXJzLmNwcCIsCisgICAgICAic3JjL3Ny
Yy9nbC12aXN1YWwtY29uZmlnLmNwcCIsCisgICAgICAic3JjL3NyYy9nbC12aXN1YWwtY29uZmln
LmgiLAorICAgICAgInNyYy9zcmMvaW1hZ2UtcmVhZGVyLmNwcCIsCisgICAgICAic3JjL3NyYy9p
bWFnZS1yZWFkZXIuaCIsCisgICAgICAic3JjL3NyYy9tYWluLWxvb3AuY3BwIiwKKyAgICAgICJz
cmMvc3JjL21haW4tbG9vcC5oIiwKKyAgICAgICJzcmMvc3JjL21lc2guY3BwIiwKKyAgICAgICJz
cmMvc3JjL21vZGVsLmNwcCIsCisgICAgICAic3JjL3NyYy9tb2RlbC5oIiwKKyAgICAgICJzcmMv
c3JjL25hdGl2ZS1zdGF0ZS5oIiwKKyAgICAgICJzcmMvc3JjL29wdGlvbnMuY3BwIiwKKyAgICAg
ICJzcmMvc3JjL3NjZW5lLWJ1ZmZlci5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtYnVpbGQu
Y3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWJ1bXAuY3BwIiwKKyAgICAgICJzcmMvc3JjL3Nj
ZW5lLWNsZWFyLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS1jb2xsZWN0aW9uLmgiLAorICAg
ICAgInNyYy9zcmMvc2NlbmUtY29uZGl0aW9uYWxzLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2Vu
ZS1kZWZhdWx0LW9wdGlvbnMuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWRlc2t0b3AuY3Bw
IiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWVmZmVjdC0yZC5jcHAiLAorICAgICAgInNyYy9zcmMv
c2NlbmUtZnVuY3Rpb24uY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWdyaWQuY3BwIiwKKyAg
ICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS1qZWxs
eWZpc2guY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWplbGx5ZmlzaC5oIiwKKyAgICAgICJz
cmMvc3JjL3NjZW5lLWxvb3AuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXB1bHNhci5jcHAi
LAorICAgICAgInNyYy9zcmMvc2NlbmUtcmVmcmFjdC5jcHAiLAorICAgICAgInNyYy9zcmMvc2Nl
bmUtcmVmcmFjdC5oIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXNoYWRpbmcuY3BwIiwKKyAgICAg
ICJzcmMvc3JjL3NjZW5lLXNoYWRvdy5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFp
bi5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtdGV4dHVyZS5jcHAiLAorICAgICAgInNyYy9z
cmMvc2NlbmUuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NoYXJlZC1saWJyYXJ5LmNwcCIsCisgICAg
ICAic3JjL3NyYy90ZXh0LXJlbmRlcmVyLmNwcCIsCisgICAgICAic3JjL3NyYy90ZXh0LXJlbmRl
cmVyLmgiLAorICAgICAgInNyYy9zcmMvdGV4dHVyZS5jcHAiLAorICAgIF0KKworICAgIHB1Ymxp
Y19kZXBzICs9IFsKKyAgICAgICI6Z2xtYXJrMl9oZWFkZXJzIiwKKyAgICAgICIke2FuZ2xlX2xp
YnBuZ19kaXJ9OmxpYnBuZyIsCisgICAgICAiJHthbmdsZV9yb290fS90aGlyZF9wYXJ0eTpqcGVn
IiwKKyAgICBdCisgIH0KK30KKworZ2xtYXJrMl9jb21tb24oImdsbWFyazJfY29tbW9uX2dsZXMi
KSB7CisgIHB1YmxpY19kZXBzID0gWworICAgICI6Z2xtYXJrMl9nbGVzIiwKKyAgICAiOmdsbWFy
azJfbGlibWF0cml4X2dsZXMiLAorICAgICI6Z2xtYXJrMl9zY2VuZV9pZGVhc19nbGVzIiwKKyAg
ICAiOmdsbWFyazJfc2NlbmVfdGVycmFpbl9nbGVzIiwKKyAgXQorfQorCitnbG1hcmsyX2NvbW1v
bigiZ2xtYXJrMl9jb21tb25fZ2wiKSB7CisgIHB1YmxpY19kZXBzID0gWworICAgICI6Z2xtYXJr
Ml9nbCIsCisgICAgIjpnbG1hcmsyX2xpYm1hdHJpeF9nbCIsCisgICAgIjpnbG1hcmsyX3NjZW5l
X2lkZWFzX2dsIiwKKyAgICAiOmdsbWFyazJfc2NlbmVfdGVycmFpbl9nbCIsCisgIF0KK30KKwor
Z2xtYXJrMl92ZXJzaW9uID0gIjIwMTcuMDciCisKK3RlbXBsYXRlKCJnbG1hcmsyX2V4ZSIpIHsK
KyAgZXhlY3V0YWJsZSh0YXJnZXRfbmFtZSkgeworICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20o
aW52b2tlciwgIioiKQorICAgIHNvdXJjZXMgKz0gWworICAgICAgInNyYy9zcmMvY2FudmFzLWdl
bmVyaWMuY3BwIiwKKyAgICAgICJzcmMvc3JjL2NhbnZhcy1nZW5lcmljLmgiLAorICAgICAgInNy
Yy9zcmMvbWFpbi5jcHAiLAorICAgIF0KKyAgICBkYXRhID0gWyAic3JjL2RhdGEvIiBdCisKKyAg
ICBkZWZpbmVzICs9IFsgIkdMTUFSS19WRVJTSU9OPVwiJHtnbG1hcmsyX3ZlcnNpb259XCIiIF0K
KworICAgIGlmIChpc193aW4pIHsKKyAgICAgIGRlZmluZXMgKz0gWyAiR0xNQVJLMl9VU0VfV0lO
MzIiIF0KKyAgICAgIHNvdXJjZXMgKz0gWworICAgICAgICAic3JjL3NyYy9uYXRpdmUtc3RhdGUt
d2luMzIuY3BwIiwKKyAgICAgICAgInNyYy9zcmMvbmF0aXZlLXN0YXRlLXdpbjMyLmgiLAorICAg
ICAgXQorICAgIH0KKyAgICBpZiAoaXNfbGludXgpIHsKKyAgICAgIGRlZmluZXMgKz0gWyAiR0xN
QVJLMl9VU0VfWDExIiBdCisgICAgICBzb3VyY2VzICs9IFsKKyAgICAgICAgInNyYy9zcmMvbmF0
aXZlLXN0YXRlLXgxMS5jcHAiLAorICAgICAgICAic3JjL3NyYy9uYXRpdmUtc3RhdGUteDExLmgi
LAorICAgICAgXQorICAgICAgbGlicyA9IFsgIlgxMSIgXQorICAgIH0KKyAgfQorfQorCitnbG1h
cmsyX2V4ZSgiZ2xtYXJrMl9hbmdsZSIpIHsKKyAgc291cmNlcyA9IFsgInNyYy9zcmMvZ2wtc3Rh
dGUtZWdsLmNwcCIgXQorICBkZXBzID0gWyAiOmdsbWFyazJfY29tbW9uX2dsZXMiIF0KKyAgZGF0
YV9kZXBzID0gWworICAgICIke2FuZ2xlX3Jvb3R9OmxpYkVHTCIsCisgICAgIiR7YW5nbGVfcm9v
dH06bGliR0xFU3YyIiwKKyAgXQorCisgIGRlZmluZXMgPSBbCisgICAgIkVHTF9FR0xfUFJPVE9U
WVBFUz0xIiwKKyAgICAiR0xNQVJLMl9VU0VfRUdMIiwKKyAgXQorCisgIGlmIChpc19saW51eCAm
JiAhaXNfY29tcG9uZW50X2J1aWxkKSB7CisgICAgIyBTZXQgcnBhdGggdG8gZmluZCBzaGFyZWQg
bGlicyBpbiBhIG5vbi1jb21wb25lbnQgYnVpbGQuCisgICAgcHVibGljX2NvbmZpZ3MgPSBbICIv
L2J1aWxkL2NvbmZpZy9nY2M6cnBhdGhfZm9yX2J1aWx0X3NoYXJlZF9saWJyYXJpZXMiIF0KKyAg
fQorfQorCitpZiAoaXNfbGludXgpIHsKKyAgZ2xtYXJrMl9leGUoImdsbWFyazJfZ2x4Iikgewor
ICAgIHNvdXJjZXMgPSBbCisgICAgICAic3JjL3NyYy9nbC1zdGF0ZS1nbHguY3BwIiwKKyAgICAg
ICJzcmMvc3JjL2dsYWQvaW5jbHVkZS9nbGFkL2dseC5oIiwKKyAgICAgICJzcmMvc3JjL2dsYWQv
c3JjL2dseC5jIiwKKyAgICBdCisgICAgZGVwcyA9IFsgIjpnbG1hcmsyX2NvbW1vbl9nbCIgXQor
CisgICAgZGVmaW5lcyA9IFsgIkdMTUFSSzJfVVNFX0dMWCIgXQorICB9Cit9CisKKyMgb3Blbmds
MzIubGliL29wZW5nbDMyLmRsbCBhcmUgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzIEFSTTY0Lgor
aWYgKGlzX3dpbiAmJiB0YXJnZXRfY3B1ICE9ICJhcm02NCIpIHsKKyAgZ2xtYXJrMl9leGUoImds
bWFyazJfd2dsIikgeworICAgIHNvdXJjZXMgPSBbICJzcmMvc3JjL2dsLXN0YXRlLXdnbC5jcHAi
IF0KKyAgICBkZXBzID0gWyAiOmdsbWFyazJfY29tbW9uX2dsIiBdCisKKyAgICBsaWJzID0gWyAi
b3BlbmdsMzIubGliIiBdCisgICAgZGVmaW5lcyA9IFsgIkdMTUFSSzJfVVNFX1dHTCIgXQorICB9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9nbG1h
cmsyL1JFQURNRS5hbmdsZSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2ds
bWFyazIvUkVBRE1FLmFuZ2xlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyYjYzNzFmZWQ4NDE1OTc1ZTJiZGU4ZTUx
YWE1OThmZmNmMDdmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90aGlyZF9wYXJ0eS9nbG1hcmsyL1JFQURNRS5hbmdsZQpAQCAtMCwwICsxLDEyIEBACitOYW1l
OiBnbG1hcmsyCitTaG9ydCBOYW1lOiBnbG1hcmsyCitVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
bG1hcmsyL2dsbWFyazIKK1NlY3VyaXR5IENyaXRpY2FsOiBubworTGljZW5zZTogR1BMIHYzCitM
aWNlbnNlIEZpbGU6IE5PVF9TSElQUEVECisKK0Rlc2NyaXB0aW9uOgorZ2xtYXJrMiBpcyBhbiBP
cGVuR0wgMi4wIGFuZCBFUyAyLjAgYmVuY2htYXJrLgorCitnbG1hcmsyIGlzIGRldmVsb3BlZCBi
eSBBbGV4YW5kcm9zIEZyYW50emlzIGFuZCBKZXNzZSBCYXJrZXIgYmFzZWQgb24gdGhlCitvcmln
aW5hbCBnbG1hcmsgYmVuY2htYXJrIGJ5IEJlbiBTbWl0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlMRC5nbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlMRC5nbgppbmRleCAyMGNlZDQ3NjM0
YzRiY2NlZDI4YWNiOWVlNTg4Y2FiNzNjMDk2ZGUzLi4xNjg1N2M2NGUxNjA2OTA5YzQxODQ0NWNl
ZjhmMDYyOTNiMGNiMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGly
ZF9wYXJ0eS9saWJwbmcvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhp
cmRfcGFydHkvbGlicG5nL0JVSUxELmduCkBAIC0zNiw3ICszNiw1IEBAIHN0YXRpY19saWJyYXJ5
KCJsaWJwbmciKSB7CiAgIH0KICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl
cjpjaHJvbWl1bV9jb2RlIiBdCiAgIHB1YmxpY19jb25maWdzID0gWyAiOmxpYnBuZ19jb25maWci
IF0KLSAgZGVwcyA9IFsKLSAgICAiLy90aGlyZF9wYXJ0eS96bGliOnpsaWIiLAotICBdCisgIGRl
cHMgPSBbICIvL3RoaXJkX3BhcnR5L3psaWI6emxpYiIgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9SRUFETUUubWQgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGZl
MTI2MjY2MDNhMzc4ODM3YzljMTIxMWIyYWIyNzdhM2M5ZTdkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9SRUFETUUubWQKQEAgLTAs
MCArMSwxMjkgQEAKKyMgZmxleCBhbmQgYmlzb24gYmluYXJpZXMKKworVGhpcyBmb2xkZXIgY29u
dGFpbnMgdGhlIGZsZXggYW5kIGJpc29uIGJpbmFyaWVzLiBXZSB1c2UgdGhlc2UgYmluYXJpZXMg
dG8KK2dlbmVyYXRlIHRoZSBBTkdMRSB0cmFuc2xhdG9yJ3MgbGV4ZXIgYW5kIHBhcnNlci4KKwor
VXNlIHRoZSBzY3JpcHQgW2B1cGRhdGVfZmxleF9iaXNvbl9iaW5hcmllcy5weWBdKHVwZGF0ZV9m
bGV4X2Jpc29uX2JpbmFyaWVzLnB5KQordG8gdXBkYXRlIHRoZSB2ZXJzaW9ucyBvZiB0aGVzZSBi
aW5hcmllcyBpbiBjbG91ZCBzdG9yYWdlLiBJdCBtdXN0IGJlIHJ1biBvbgorTGludXggb3IgV2lu
ZG93cy4gSXQgd2lsbCB1cGRhdGUgdGhlIFNIQXMgZm9yIHlvdXIgcGxhdGZvcm0uIEFmdGVyIHJ1
bm5pbmcgdGhlCitzY3JpcHQgcnVuIGBnaXQgY29tbWl0YCBhbmQgdGhlbiBgZ2l0IGNsIHVwbG9h
ZGAgdG8gY29kZSByZXZpZXcgdXNpbmcgdGhlIG5vcm1hbAorcmV2aWV3IHByb2Nlc3MuIFlvdSB3
aWxsIGFsc28gd2FudCB0byBydW4KK1tgc2NyaXB0cy9ydW5fY29kZV9nZW5lcmF0aW9uLnB5YF0o
Li4vLi4vc2NyaXB0cy9ydW5fY29kZV9nZW5lcmF0aW9uLnB5KSB0bwordXBkYXRlIHRoZSBnZW5l
cmF0ZWQgZmlsZXMuCisKK1BsZWFzZSB1cGRhdGUgYm90aCBXaW5kb3dzIGFuZCBMaW51eCBiaW5h
cmllcyBhdCB0aGUgc2FtZSB0aW1lLiBVc2UgdHdvIENMcy4gT25lCitmb3IgZWFjaCBwbGF0Zm9y
bS4gTm90ZSB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IE1hYyBmb3IgZ2VuZXJhdGlu
ZyB0aGUKK2xleGVyIGFuZCBwYXJzZXIgZmlsZXMuIElmIHdlIGRvIHdlIHNob3VsZCBhZGQgYSBm
bGV4L2Jpc29uIGRvd25sb2FkIGZvciBNYWMgYXMKK3dlbGwuCisKK0NvbnRhY3Qgam1hZGlsbCBv
ciBzeW91c3NlZmkgZm9yIGFueSBoZWxwIHdpdGggdXBkYXRpbmcgdGhlIGJpbmFyaWVzLgorCisj
IyBVcGRhdGluZyBmbGV4IGFuZCBiaXNvbiBiaW5hcmllcworCitUaGlzIGlzIGV4cGVjdGVkIHRv
IGJlIGEgcmFyZSBvcGVyYXRpb24sIGFuZCBpcyBjdXJyZW50bHkgZG9uZSBiYXNlZCBvbiB0aGUK
K2ZvbGxvd2luZyBpbnN0cnVjdGlvbnMuICBOb3RlOiBnZXQgdGhlIGJpbmFyaWVzIGZpcnN0IG9u
IHdpbmRvd3MsIGFzIG9ubHkgYQorc2luZ2xlIG9wdGlvbiBpcyBhdmFpbGFibGUsIHRoZW4gYnVp
bGQgdGhlIGJpbmFyaWVzIGZvciB0aGUgc2FtZSB2ZXJzaW9uIG9uCitMaW51eC4KKworIyMjIE9u
IFdpbmRvd3MKKworSW5zdGFsbCBNU3lzMiAoeDg2XzY0KSBmcm9tIGh0dHA6Ly93d3cubXN5czIu
b3JnLyBvbiBXaW5kb3dzLiAgYGZsZXhgIHNob3VsZAorYWxyZWFkeSBiZSBpbnN0YWxsZWQuICBJ
bnN0YWxsIGJpc29uOgorCitgYGAKKyQgcGFjbWFuIC1TIGJpc29uCitgYGAKKworTm90ZSB0aGUg
dmVyc2lvbnMgb2YgZmxleCBhbmQgYmlzb24gc28gdGhlIHNhbWUgdmVyc2lvbnMgY2FuIGJlIGJ1
aWxkIG9uIExpbnV4LgorRm9yIGV4YW1wbGU6CisKK2BgYAorJCBmbGV4IC0tdmVyc2lvbgorZmxl
eCAyLjYuNAorCiskIGJpc29uIC0tdmVyc2lvbgorYmlzb24gKEdOVSBCaXNvbikgMy4zLjIKK2Bg
YAorCitUaGUgb25seSBkZXBlbmRlbmNpZXMgZnJvbSBNU3lzMiBzaG91bGQgYmUgdGhlIGZvbGxv
d2luZzoKKworYGBgCittc3lzLWludGwtOC5kbGwKK21zeXMtaWNvbnYtMi5kbGwKK21zeXMtMi4w
LmRsbAorYGBgCisKK1RoaXMgY2FuIGJlIHZlcmlmaWVkIHdpdGg6CisKK2BgYAorJCBsZGQgL3Vz
ci9iaW4vZmxleAorJCBsZGQgL3Vzci9iaW4vYmlzb24KK2BgYAorCitBZGRpdGlvbmFsbHksIHdl
IG5lZWQgdGhlIGJpbmFyeSBmb3IgbTQgYXQgYC91c3IvYmluL200YC4KKworQ29weSBhbGwgdGhl
c2UgNSBmaWxlcyB0byB0aGlzIGRpcmVjdG9yeToKKworYGBgCiskIGNkIGFuZ2xlLworJCBjcCAv
dXNyL2Jpbi9mbGV4LmV4ZSBcCisgICAgIC91c3IvYmluL2Jpc29uLmV4ZSBcCisgICAgIC91c3Iv
YmluL200LmV4ZSBcCisgICAgIC91c3IvYmluL21zeXMtaW50bC04LmRsbCBcCisgICAgIC91c3Iv
YmluL21zeXMtaWNvbnYtMi5kbGwgXAorICAgICAvdXNyL2Jpbi9tc3lzLTIuMC5kbGwgXAorICAg
ICB0b29scy9mbGV4LWJpc29uL3dpbmRvd3MvCitgYGAKKworVXBsb2FkIHRoZSBiaW5hcmllczoK
KworYGBgCiskIGNkIGFuZ2xlLworJCBweXRob24gdG9vbHMvZmxleC1iaXNvbi91cGRhdGVfZmxl
eF9iaXNvbl9iaW5hcmllcy5weQorYGBgCisKKyMjIyBPbiBMaW51eAorCitgYGAKKyMgR2V0IHRo
ZSBzb3VyY2Ugb2YgZmxleAorJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3dlc3Rlcy9m
bGV4LmdpdAorJCBjZCBmbGV4LworIyBDaGVja291dCB0aGUgc2FtZSB2ZXJzaW9uIGFzIG1zeXMy
IG9uIHdpbmRvd3MKKyQgZ2l0IGNoZWNrb3V0IHYyLjYuNAorIyBCdWlsZAorJCBhdXRvcmVjb25m
IC1pCiskIG1rZGlyIGJ1aWxkICYmIGNkIGJ1aWxkCiskIC4uL2NvbmZpZ3VyZSBDRkxBR1M9Ii1P
MiAtRF9HTlVfU09VUkNFIgorJCBtYWtlIC1qCitgYGAKKworYGBgCisjIEdldCB0aGUgc291cmNl
IG9mIGJpc29uCiskIGN1cmwgaHR0cDovL2Z0cC5nbnUub3JnL2dudS9iaXNvbi9iaXNvbi0zLjMu
Mi50YXIueHogfCB0YXIgLXhKCiskIGNkIGJpc29uLTMuMy4yCisjIEJ1aWxkCiskIG1rZGlyIGJ1
aWxkICYmIGNkIGJ1aWxkCiskIC4uL2NvbmZpZ3VyZSBDRkxBR1M9Ii1PMiIKKyQgbWFrZSAtagor
YGBgCisKK05vdGU6IEJpc29uJ3MgW2hvbWUgcGFnZV1bQmlzb25dIGxpc3RzIGZ0cCBzZXJ2ZXIg
YW5kIG90aGVyIG1pcnJvcnMuICBJZiB0aGUKK2Fib3ZlIGxpbmsgaXMgYnJva2VuLCByZXBsYWNl
IHdpdGggYSBtaXJyb3IuCisKK0NvcHkgdGhlIDIgZXhlY3V0YWJsZXMgdG8gdGhpcyBkaXJlY3Rv
cnk6CisKK2BgYAorJCBjZCBhbmdsZS8KKyQgY3AgL3BhdGgvdG8vZmxleC9idWlsZC9zcmMvZmxl
eCBcCisgICAgIC9wYXRoL3RvL2Jpc29uL2J1aWxkL3NyYy9iaXNvbiBcCisgICAgIHRvb2xzL2Zs
ZXgtYmlzb24vbGludXgvCitgYGAKKworVXBsb2FkIHRoZSBiaW5hcmllczoKKworYGBgCiskIGNk
IGFuZ2xlLworJCBweXRob24gdG9vbHMvZmxleC1iaXNvbi91cGRhdGVfZmxleF9iaXNvbl9iaW5h
cmllcy5weQorYGBgCisKK1tCaXNvbl06IGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmlz
b24vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29u
L2xpbnV4L2Jpc29uLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJp
c29uL2xpbnV4L2Jpc29uLnNoYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkzZDkyZGU0MTkwOThhZWUwMTI0MzZl
NjBiZDYxY2QyM2VhNWQ1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3Rvb2xzL2ZsZXgtYmlzb24vbGludXgvYmlzb24uc2hhMQpAQCAtMCwwICsxIEBACitlNjI4
YjczY2QwYTc2N2Q5M2UxZjk0YjVhODZjZTUxY2E4M2M5OWQ1ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi9saW51eC9mbGV4LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL2xpbnV4L2ZsZXguc2hhMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzQwMDQ3Y2ExMmNhZDAxNTZlY2Q2
NmI1OWJmMzcyYzQ5NDcxZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdG9vbHMvZmxleC1iaXNvbi9saW51eC9mbGV4LnNoYTEKQEAgLTAsMCArMSBAQAorZTgz
MGU2YzA1MDhkOTY4NTg3NmU3NzMwNGJiZTdjNGExMjJjMDhlOApcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgt
Ymlzb24vdGhpcmRfcGFydHkvLmdpdGF0dHJpYnV0ZXMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5Ly5naXRhdHRyaWJ1dGVzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA2ODhjOGExNDkxNTI4YzI2MzQ2NjU1YTY0NDg3NjU4NjNjODQyZGYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5
Ly5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEgQEAKKyogICAgICAgICAgICAgICAgICAgIGVvbD1s
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90
aGlyZF9wYXJ0eS9tNHN1Z2FyL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTEx
OTA1YzE2NDdhMWUzMTFlOGIyMGQ1OTMwYTM3YTljMjUzMWNkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1
Z2FyL0xJQ0VOU0UKQEAgLTAsMCArMSwzMzkgQEAKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBM
SUNFTlNFCisJCSAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisgQ29weXJpZ2h0IChDKSAx
OTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgRXZlcnlvbmUg
aXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2Yg
dGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisK
KwkJCSAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUg
ZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBp
dC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGlzIGludGVu
ZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCitz
b2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVz
ZXJzLiAgVGhpcworR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhl
IEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHBy
b2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KK3VzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKK3RoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRv
Cit5b3VyIHByb2dyYW1zLCB0b28uCisKKyAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJl
LCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdAorcHJpY2UuICBPdXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQoraGF2ZSB0
aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hh
cmdlIGZvcgordGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3Vy
Y2UgY29kZSBvciBjYW4gZ2V0IGl0CitpZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5n
ZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAoraW4gbmV3IGZyZWUgcHJvZ3JhbXM7
IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCisgIFRvIHByb3Rl
Y3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQK
K2FueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5k
ZXIgdGhlIHJpZ2h0cy4KK1RoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiBy
ZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91CitkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUg
c29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBk
aXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgorZ3JhdGlzIG9yIGZv
ciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0
Cit5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBv
ciBjYW4gZ2V0IHRoZQorc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNl
IHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgorcmlnaHRzLgorCisgIFdlIHByb3RlY3QgeW91ciBy
aWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQKKygy
KSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9u
IHRvIGNvcHksCitkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgorCisgIEFs
c28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFr
ZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2Fy
cmFudHkgZm9yIHRoaXMgZnJlZQorc29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZp
ZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHdlCit3YW50IGl0cyByZWNpcGllbnRz
IHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwordGhh
dCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0
aGUgb3JpZ2luYWwKK2F1dGhvcnMnIHJlcHV0YXRpb25zLgorCisgIEZpbmFsbHksIGFueSBmcmVl
IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCitwYXRlbnRzLiAg
V2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVl
Citwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVm
ZmVjdCBtYWtpbmcgdGhlCitwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3
ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKK3BhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZv
ciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCisKKyAgVGhlIHBy
ZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQK
K21vZGlmaWNhdGlvbiBmb2xsb3cuCisKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNF
CisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBN
T0RJRklDQVRJT04KKworICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBv
ciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zCithIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHly
aWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAordW5kZXIgdGhlIHRlcm1z
IG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LAor
cmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24g
dGhlIFByb2dyYW0iCittZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUg
d29yayB1bmRlciBjb3B5cmlnaHQgbGF3OgordGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWlu
aW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKK2VpdGhlciB2ZXJiYXRpbSBvciB3
aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCitsYW5ndWFn
ZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0
aW9uIGluCit0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJl
c3NlZCBhcyAieW91Ii4KKworQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1
dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0
aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKK3J1bm5pbmcgdGhlIFByb2dy
YW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0KK2lz
IGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24g
dGhlCitQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcg
dGhlIFByb2dyYW0pLgorV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQ
cm9ncmFtIGRvZXMuCisKKyAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGlt
IGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCitzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwg
aW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKK2NvbnNwaWN1b3VzbHkgYW5kIGFwcHJv
cHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKK2NvcHlyaWdodCBu
b3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKK25v
dGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFu
eSB3YXJyYW50eTsKK2FuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFt
IGEgY29weSBvZiB0aGlzIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhlIFByb2dyYW0uCisKK1lvdSBt
YXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNv
cHksIGFuZAoreW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9u
IGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KKworICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkg
b3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCitvZiBpdCwgdGh1cyBmb3Jt
aW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCitkaXN0cmlidXRl
IHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEK
K2Fib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlv
bnM6CisKKyAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2Fycnkg
cHJvbWluZW50IG5vdGljZXMKKyAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVz
IGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgorCisgICAgYikgWW91IG11c3QgY2F1c2UgYW55
IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluCisgICAgd2hvbGUg
b3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55
CisgICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJn
ZSB0byBhbGwgdGhpcmQKKyAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vu
c2UuCisKKyAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21t
YW5kcyBpbnRlcmFjdGl2ZWx5CisgICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVu
IHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaAorICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9z
dCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KKyAgICBhbm5vdW5jZW1lbnQg
aW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKKyAgICBub3Rp
Y2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHBy
b3ZpZGUKKyAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRo
ZSBwcm9ncmFtIHVuZGVyCisgICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVz
ZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKKyAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjog
aWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dAorICAgIGRvZXMgbm90IG5v
cm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KKyAg
ICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikK
KworVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hv
bGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2
ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGlu
ZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExp
Y2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hl
biB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91Citk
aXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBh
IHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9s
ZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9u
cyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRo
dXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKwor
VGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0
cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91
OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9s
IHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNl
ZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5v
dGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQord2l0aCB0aGUgUHJvZ3JhbSAob3Ig
d2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCithIHN0b3Jh
Z2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1
bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IGNvcHkgYW5k
IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKK3VuZGVyIFNl
Y3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJt
cyBvZgorU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9u
ZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBs
ZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQorICAgIHNvdXJjZSBjb2RlLCB3aGlj
aCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucworICAgIDEg
YW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50
ZXJjaGFuZ2U7IG9yLAorCisgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVy
LCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKKyAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQg
cGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorICAgIGNvc3Qgb2YgcGh5c2lj
YWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKKyAgICBtYWNo
aW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJv
dmUgb24gYSBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNo
YW5nZTsgb3IsCisKKyAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91
IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGlu
ZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCisgICAgYWxsb3dlZCBvbmx5IGZv
ciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKKyAgICByZWNlaXZl
ZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNo
CisgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1Ro
ZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUg
d29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUg
d29yaywgY29tcGxldGUgc291cmNlCitjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9y
IGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQorYXNzb2NpYXRlZCBpbnRlcmZhY2Ug
ZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCitjb250cm9sIGNvbXBp
bGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBh
CitzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90
IGluY2x1ZGUKK2FueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhl
ciBzb3VyY2Ugb3IgYmluYXJ5Citmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21w
aWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGlj
aCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKK2l0c2VsZiBhY2Nv
bXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKworSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUg
b3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZworYWNjZXNzIHRvIGNvcHkgZnJvbSBh
IGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorYWNjZXNzIHRvIGNv
cHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCitkaXN0cmli
dXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBu
b3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNv
ZGUuCisKKyAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0
cmlidXRlIHRoZSBQcm9ncmFtCitleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRo
aXMgTGljZW5zZS4gIEFueSBhdHRlbXB0CitvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJs
aWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKK3ZvaWQsIGFuZCB3aWxsIGF1dG9t
YXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KK0hvd2V2
ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91
IHVuZGVyCit0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5h
dGVkIHNvIGxvbmcgYXMgc3VjaAorcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgor
CisgIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNl
IHlvdSBoYXZlIG5vdAorc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5
b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKK2Rpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRz
IGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQorcHJvaGliaXRlZCBieSBsYXcg
aWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQorbW9kaWZ5
aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhl
CitQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2Ug
dG8gZG8gc28sIGFuZAorYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywg
ZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwordGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24g
aXQuCisKKyAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFu
eSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxs
eSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHks
IGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KK3RoZXNlIHRlcm1z
IGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCityZXN0cmlj
dGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBo
ZXJlaW4uCitZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2Ug
YnkgdGhpcmQgcGFydGllcyB0bwordGhpcyBMaWNlbnNlLgorCisgIDcuIElmLCBhcyBhIGNvbnNl
cXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKK2luZnJp
bmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlz
c3VlcyksCitjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBv
cmRlciwgYWdyZWVtZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0
aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNv
bmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAorZGlzdHJpYnV0ZSBzbyBh
cyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwor
TGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNv
bnNlcXVlbmNlIHlvdQorbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZv
ciBleGFtcGxlLCBpZiBhIHBhdGVudAorbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHkt
ZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQorYWxsIHRob3NlIHdobyByZWNl
aXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCit0aGUg
b25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxk
IGJlIHRvCityZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFt
LgorCitJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVu
ZW5mb3JjZWFibGUgdW5kZXIKK2FueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFu
Y2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KK2FwcGx5IGFuZCB0aGUgc2VjdGlvbiBh
cyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCitjaXJjdW1zdGFuY2VzLgor
CitJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8g
aW5mcmluZ2UgYW55CitwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0
byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQorc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMg
dGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQoraW50ZWdyaXR5IG9mIHRoZSBmcmVl
IHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCitpbXBsZW1lbnRlZCBieSBw
dWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKK2dlbmVyb3Vz
IGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQK
K3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlv
biBvZiB0aGF0CitzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRl
IGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCit0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2gg
YW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKK2ltcG9zZSB0aGF0IGNob2lj
ZS4KKworVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3
aGF0IGlzIGJlbGlldmVkIHRvCitiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMg
TGljZW5zZS4KKworICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFBy
b2dyYW0gaXMgcmVzdHJpY3RlZCBpbgorY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVu
dHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCitvcmlnaW5hbCBjb3B5cmlnaHQg
aG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCittYXkgYWRk
IGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRp
bmcKK3Rob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9u
bHkgaW4gb3IgYW1vbmcKK2NvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2Fz
ZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwordGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRl
biBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgOS4gVGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKK29mIHRo
ZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVy
c2lvbnMgd2lsbAorYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwg
YnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCithZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25j
ZXJucy4KKworRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBu
dW1iZXIuICBJZiB0aGUgUHJvZ3JhbQorc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhp
cyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKK2xhdGVyIHZlcnNpb24iLCB5
b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMK
K2VpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVk
IGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBu
b3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCit0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hv
b3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCitGb3Vu
ZGF0aW9uLgorCisgIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUg
UHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKK3Byb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25k
aXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKK3RvIGFzayBmb3IgcGVy
bWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQor
U29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgd2Ugc29tZXRpbWVzCittYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24g
d2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2Fscworb2YgcHJlc2VydmluZyB0aGUgZnJlZSBz
dGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZAorb2YgcHJv
bW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCisKKwkJ
CSAgICBOTyBXQVJSQU5UWQorCisgIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VE
IEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQorRk9SIFRIRSBQUk9HUkFNLCBU
TyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCitP
VEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBP
VEhFUiBQQVJUSUVTCitQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5U
WSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAorT1IgSU1QTElFRCwgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJ
U0sgQVMKK1RPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBX
SVRIIFlPVS4gIFNIT1VMRCBUSEUKK1BST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1F
IFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLAorUkVQQUlSIE9SIENPUlJFQ1RJ
T04uCisKKyAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExB
VyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORworV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1Ig
QU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgorUkVESVNUUklCVVRFIFRIRSBQ
Uk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywK
K0lOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgQVJJU0lORworT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBU
SEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAorVE8gTE9TUyBPRiBEQVRBIE9S
IERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCitZ
T1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFU
RSBXSVRIIEFOWSBPVEhFUgorUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVS
IFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RVMuCisKKwkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworCSAgICBIb3cgdG8g
QXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKKworICBJZiB5b3UgZGV2ZWxv
cCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Citw
b3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBp
cyB0byBtYWtlIGl0CitmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1
dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KKworICBUbyBkbyBzbywgYXR0YWNoIHRo
ZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAordG8gYXR0
YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3Rp
dmVseQorY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hv
dWxkIGhhdmUgYXQgbGVhc3QKK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8g
d2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUg
dGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAg
ICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAg
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhbG9uZworICAgIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgICAgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKworQWxzbyBhZGQgaW5mb3Jt
YXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwu
CisKK0lmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0
IG5vdGljZSBsaWtlIHRoaXMKK3doZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6
CisKKyAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBv
ZiBhdXRob3IKKyAgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFO
VFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCisgICAgVGhpcyBpcyBmcmVlIHNvZnR3YXJl
LCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAorICAgIHVuZGVyIGNlcnRh
aW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KKworVGhlIGh5cG90aGV0
aWNhbCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycgc2hvdWxkIHNob3cgdGhlIGFwcHJv
cHJpYXRlCitwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwg
dGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CitiZSBjYWxsZWQgc29tZXRoaW5nIG90aGVyIHRoYW4g
YHNob3cgdycgYW5kIGBzaG93IGMnOyB0aGV5IGNvdWxkIGV2ZW4gYmUKK21vdXNlLWNsaWNrcyBv
ciBtZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3VyIHByb2dyYW0uCisKK1lvdSBzaG91bGQg
YWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5
b3VyCitzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9y
IHRoZSBwcm9ncmFtLCBpZgorbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhl
IG5hbWVzOgorCisgIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmln
aHQgaW50ZXJlc3QgaW4gdGhlIHByb2dyYW0KKyAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMg
cGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCisKKyAgPHNpZ25h
dHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTg5CisgIFR5IENvb24sIFByZXNpZGVudCBvZiBW
aWNlCisKK1RoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jw
b3JhdGluZyB5b3VyIHByb2dyYW0gaW50bworcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3Vy
IHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKK2NvbnNpZGVyIGl0IG1v
cmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRo
IHRoZQorbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90
aGlyZF9wYXJ0eS9tNHN1Z2FyL1JFQURNRS5jaHJvbWl1bSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9SRUFETUUuY2hyb21pdW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzYwYTVmZDRmZGM5MjdjZjg2NmEzNjIxZDUzZTAxYjdmNmVlMDNhNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24v
dGhpcmRfcGFydHkvbTRzdWdhci9SRUFETUUuY2hyb21pdW0KQEAgLTAsMCArMSwxMSBAQAorTmFt
ZTogQXV0b2NvbmYgTTQgbWFjcm9zIHVzZWQgYnkgQmlzb24KK1Nob3J0IE5hbWU6IG00c3VnYXIK
K1VSTDogaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi8KK1ZlcnNpb246IHVu
a25vd24KK0xpY2Vuc2U6IEdQTAorTGljZW5zZSBGaWxlOiBMSUNFTlNFCitTZWN1cml0eSBjcml0
aWNhbDogbm8KKworRGVzY3JpcHRpb246CitCaXNvbiB1c2VzIE00IHRvIGdlbmVyYXRlIGl0cyBv
dXRwdXQsIGFuZCB1c2VzIHRoZSB1dGlsaXR5IE00IG1hY3JvcyBpbiB0aGlzCitkaXJlY3Rvcnku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3Ro
aXJkX3BhcnR5L200c3VnYXIvZm9yZWFjaC5tNCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rv
b2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9mb3JlYWNoLm00Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcwOTNkMGZjYzRlODU4YTk5N2JlNTcwOTRkZGY1ZGY3ZDQxMDM3MTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5
L200c3VnYXIvZm9yZWFjaC5tNApAQCAtMCwwICsxLDM2MiBAQAorIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorIyBUaGlz
IGZpbGUgaXMgcGFydCBvZiBBdXRvY29uZi4KKyMgZm9yZWFjaC1iYXNlZCByZXBsYWNlbWVudHMg
Zm9yIHJlY3Vyc2l2ZSBmdW5jdGlvbnMuCisjIFNwZWVkcyB1cCBHTlUgTTQgMS40LnggYnkgYXZv
aWRpbmcgcXVhZHJhdGljICRAIHJlY3Vyc2lvbiwgYnV0IHBlbmFsaXplcworIyBHTlUgTTQgMS42
IGJ5IHJlcXVpcmluZyBtb3JlIG1lbW9yeSBhbmQgbWFjcm8gZXhwYW5zaW9ucy4KKyMKKyMgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgQXV0b2NvbmYuICBUaGlzIHByb2dyYW0gaXMgZnJlZQorIyBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0
aGUKKyMgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9m
IHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
IworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24g
MywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKyMgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGlu
IHRoZSBBdXRvY29uZiBDb25maWd1cmUgU2NyaXB0IEV4Y2VwdGlvbiwKKyMgdmVyc2lvbiAzLjAs
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorIyBhbmQgYSBjb3B5IG9mIHRoZSBBdXRvY29uZiBDb25maWd1cmUgU2NyaXB0IEV4Y2Vw
dGlvbiBhbG9uZyB3aXRoCisjIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlcyBDT1BZSU5HdjMg
YW5kIENPUFlJTkcuRVhDRVBUSU9OCisjIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlIDxodHRw
czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgV3JpdHRlbiBieSBFcmljIEJsYWtlLgor
CisjIEluIE00IDEuNC54LCBldmVyeSBieXRlIG9mICRAIGlzIHJlc2Nhbm5lZC4gIFRoaXMgbWVh
bnMgdGhhdCBhbgorIyBhbGdvcml0aG0gb24gbiBhcmd1bWVudHMgdGhhdCByZWN1cnNlcyB3aXRo
IG9uZSBsZXNzIGFyZ3VtZW50IGVhY2gKKyMgaXRlcmF0aW9uIHdpbGwgc2NhbiBuICogKG4gKyAx
KSAvIDIgYXJndW1lbnRzLCBmb3IgTyhuXjIpIHRpbWUuICBJbgorIyBNNCAxLjYsIHRoaXMgd2Fz
IGZpeGVkIHNvIHRoYXQgJEAgaXMgb25seSBzY2FubmVkIG9uY2UsIHRoZW4KKyMgYmFjay1yZWZl
cmVuY2VzIGFyZSBtYWRlIHRvIGluZm9ybWF0aW9uIHN0b3JlZCBhYm91dCB0aGUgc2Nhbi4KKyMg
VGh1cywgbiBpdGVyYXRpb25zIG5lZWQgb25seSBzY2FuIG4gYXJndW1lbnRzLCBmb3IgTyhuKSB0
aW1lLgorIyBBZGRpdGlvbmFsbHksIGluIE00IDEuNC54LCByZWN1cnNpdmUgYWxnb3JpdGhtcyBk
aWQgbm90IGNsZWFuIHVwCisjIG1lbW9yeSB2ZXJ5IHdlbGwsIHJlcXVpcmluZyBPKG5eMikgbWVt
b3J5IHJhdGhlciB0aGFuIE8obikgZm9yIG4KKyMgaXRlcmF0aW9ucy4KKyMKKyMgVGhpcyBmaWxl
IGlzIGRlc2lnbmVkIHRvIG92ZXJjb21lIHRoZSBxdWFkcmF0aWMgbmF0dXJlIG9mICRACisjIHJl
Y3Vyc2lvbiBieSB3cml0aW5nIGEgdmFyaWFudCBvZiBtNF9mb3JlYWNoIHRoYXQgdXNlcyBtNF9m
b3IgcmF0aGVyCisjIHRoYW4gJEAgcmVjdXJzaW9uIHRvIG9wZXJhdGUgb24gdGhlIGxpc3QuICBU
aGlzIGludm9sdmVzIG1vcmUgbWFjcm8KKyMgZXhwYW5zaW9ucywgYnV0IGF2b2lkcyB0aGUgbmVl
ZCB0byByZXNjYW4gYSBxdWFkcmF0aWMgbnVtYmVyIG9mCisjIGFyZ3VtZW50cywgbWFraW5nIHRo
ZXNlIHJlcGxhY2VtZW50cyB2ZXJ5IGF0dHJhY3RpdmUgZm9yIE00IDEuNC54LgorIyBPbiB0aGUg
b3RoZXIgaGFuZCwgaW4gYW55IHZlcnNpb24gb2YgTTQsIGV4cGFuZGluZyBhZGRpdGlvbmFsIG1h
Y3JvcworIyBjb3N0cyBhZGRpdGlvbmFsIHRpbWU7IHRoZXJlZm9yZSwgaW4gTTQgMS42LCB3aGVy
ZSAkQCByZWN1cnNpb24gdXNlcworIyBmZXdlciBtYWNyb3MsIHRoZXNlIHJlcGxhY2VtZW50cyBh
Y3R1YWxseSBwZXNzaW1pemUgcGVyZm9ybWFuY2UuCisjIEFkZGl0aW9uYWxseSwgdGhlIHVzZSBv
ZiAkMTAgdG8gbWVhbiB0aGUgdGVudGggYXJndW1lbnQgdmlvbGF0ZXMKKyMgUE9TSVg7IGFsdGhv
dWdoIGFsbCB2ZXJzaW9ucyBvZiBtNCAxLjQueCBzdXBwb3J0IHRoaXMgbWVhbmluZywgYQorIyBm
dXR1cmUgbTQgdmVyc2lvbiBtYXkgc3dpdGNoIHRvIHRha2UgaXQgYXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50CisjIGNvbmNhdGVuYXRlZCB3aXRoIGEgbGl0ZXJhbCAwLCBzbyB0aGUgaW1wbGVtZW50YXRp
b25zIGluIHRoaXMgZmlsZQorIyBhcmUgbm90IGZ1dHVyZS1wcm9vZi4gIFRodXMsIHRoaXMgZmls
ZSBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIGFzCisjIHBhcnQgb2YgbTRfaW5pdCgpLCBvbmx5
IHdoZW4gaXQgaXMgZGV0ZWN0ZWQgdGhhdCBNNCBwcm9iYWJseSBoYXMKKyMgcXVhZHJhdGljIGJl
aGF2aW9yIChpZS4gaXQgbGFja3MgdGhlIG1hY3JvIF9fbTRfdmVyc2lvbl9fKS4KKyMKKyMgUGxl
YXNlIGtlZXAgdGhpcyBmaWxlIGluIHN5bmMgd2l0aCBtNHN1Z2FyLm00LgorCisjIF9tNF9mb3Jl
YWNoKFBSRSwgUE9TVCwgSUdOT1JFRCwgQVJHLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9ybSB0aGUgY29tbW9uIGJhc2lzIG9mIHRoZSBtNF9mb3Jl
YWNoIGFuZCBtNF9tYXAgbWFjcm9zLiAgRm9yIGVhY2gKKyMgQVJHLCBleHBhbmQgUFJFW0FSR11Q
T1NUW10uICBUaGUgSUdOT1JFRCBhcmd1bWVudCBtYWtlcyByZWN1cnNpb24KKyMgZWFzaWVyLCBh
bmQgbXVzdCBiZSBzdXBwbGllZCByYXRoZXIgdGhhbiBpbXBsaWNpdC4KKyMKKyMgVGhpcyB2ZXJz
aW9uIG1pbmltaXplcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgJEAgaXMgZXZhbHVhdGVkIGJ5
CisjIHVzaW5nIG00X2ZvciB0byBnZW5lcmF0ZSBhIGJvaWxlcnBsYXRlIGludG8gX200X2YgdGhl
biBwYXNzaW5nICRAIHRvCisjIHRoYXQgdGVtcG9yYXJ5IG1hY3JvLiAgVGh1cywgdGhlIHJlY3Vy
c2lvbiBpcyBkb25lIGluIG00X2ZvciB3aXRob3V0CisjIHJlcGFyc2luZyBhbnkgdXNlciBpbnB1
dCwgYW5kIGlzIG5vdCBxdWFkcmF0aWMuICBGb3IgYW4gaWRlYSBvZiBob3cKKyMgdGhpcyB3b3Jr
cywgbm90ZSB0aGF0IG00X2ZvcmVhY2goaSxbMSwyXSxbaV0pIGNhbGxzCisjICAgX200X2ZvcmVh
Y2goW200X2RlZmluZShbaV0sXSxbKWldLFtdLFsxXSxbMl0pCisjIHdoaWNoIGRlZmluZXMgX200
X2Y6CisjICAgJDFbJDRdJDJbXSQxWyQ1XSQyW11fbTRfcG9wZGVmKFtfbTRfZl0pCisjIHRoZW4g
Y2FsbHMgX200X2YoW200X2RlZmluZShbaV0sXSxbKWldLFtdLFsxXSxbMl0pIGZvciBhIG5ldCBy
ZXN1bHQ6CisjICAgbTRfZGVmaW5lKFtpXSxbMV0paVtdbTRfZGVmaW5lKFtpXSxbMl0paVtdX200
X3BvcGRlZihbX200X2ZdKS4KK200X2RlZmluZShbX200X2ZvcmVhY2hdLAorW200X2lmKFskI10s
IFszXSwgW10sCisgICAgICAgW200X3B1c2hkZWYoW19tNF9mXSwgX200X2ZvcihbNF0sIFskI10s
IFsxXSwKKyAgIFskMF8oWzFdLCBbMl0sXSwgWyldKVtfbTRfcG9wZGVmKFtfbTRfZl0pXSlfbTRf
ZigkQCldKV0pCisKK200X2RlZmluZShbX200X2ZvcmVhY2hfXSwKK1tbJCQxWyQkM10kJDJbXV1d
KQorCisjIG00X2Nhc2UoU1dJVENILCBWQUwxLCBJRi1WQUwxLCBWQUwyLCBJRi1WQUwyLCAuLi4s
IERFRkFVTFQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIEZpbmQgdGhlIGZpcnN0IFZBTCB0aGF0IFNXSVRDSCBtYXRjaGVz
LCBhbmQgZXhwYW5kIHRoZSBjb3JyZXNwb25kaW5nCisjIElGLVZBTC4gIElmIHRoZXJlIGFyZSBu
byBtYXRjaGVzLCBleHBhbmQgREVGQVVMVC4KKyMKKyMgVXNlIG00X2ZvciB0byBjcmVhdGUgYSB0
ZW1wb3JhcnkgbWFjcm8gaW4gdGVybXMgb2YgYSBib2lsZXJwbGF0ZQorIyBtNF9pZiB3aXRoIGZp
bmFsIGNsZWFudXAuICBJZiAkIyBpcyBldmVuLCB3ZSBoYXZlIERFRkFVTFQ7IGlmIGl0IGlzCisj
IG9kZCwgdGhlbiByb3VuZGluZyB0aGUgbGFzdCAkIyB1cCBpbiB0aGUgdGVtcG9yYXJ5IG1hY3Jv
IGlzCisjIGhhcm1sZXNzLiAgRm9yIGV4YW1wbGUsIGJvdGggbTRfY2FzZSgxLDIsMyw0LDUpIGFu
ZAorIyBtNF9jYXNlKDEsMiwzLDQsNSw2KSByZXN1bHQgaW4gdGhlIGludGVybWVkaWF0ZSBfbTRf
Y2FzZSBiZWluZworIyAgIG00X2lmKFskMV0sWyQyXSxbJDNdLFskMV0sWyQ0XSxbJDVdLF9tNF9w
b3BkZWYoW19tNF9jYXNlXSlbJDZdKQorbTRfZGVmaW5lKFttNF9jYXNlXSwKK1ttNF9pZihtNF9l
dmFsKFskIyA8PSAyXSksIFsxXSwgWyQyXSwKK1ttNF9wdXNoZGVmKFtfJDBdLCBbbTRfaWYoXV9t
NF9mb3IoWzJdLCBtNF9ldmFsKFsoJCMgLSAxKSAvIDIgKiAyXSksIFsyXSwKKyAgICAgW18kMF8o
XSwgWyldKVtfbTRfcG9wZGVmKAorCSBbXyQwXSldbTRfZHF1b3RlKCRtNF9ldmFsKFsoJCMgKyAx
KSAmIH4xXSkpWyldKV8kMCgkQCldKV0pCisKK200X2RlZmluZShbX200X2Nhc2VfXSwKK1skMF8o
WzFdLCBbJDFdLCBtNF9pbmNyKFskMV0pKV0pCisKK200X2RlZmluZShbX200X2Nhc2VfX10sCitb
W1skJDFdLFskJDJdLFskJDNdLF1dKQorCisjIG00X2JtYXRjaChTV0lUQ0gsIFJFMSwgVkFMMSwg
UkUyLCBWQUwyLCAuLi4sIERFRkFVTFQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIG00IGVxdWl2YWxlbnQgb2YKKyMKKyMgaWYgKFNX
SVRDSCA9fiBSRTEpCisjICAgVkFMMTsKKyMgZWxpZiAoU1dJVENIID1+IFJFMikKKyMgICBWQUwy
OworIyBlbGlmIC4uLgorIyAgIC4uLgorIyBlbHNlCisjICAgREVGQVVMVAorIworIyBXZSBidWls
ZCB0aGUgdGVtcG9yYXJ5IG1hY3JvIF9tNF9iOgorIyAgIG00X2RlZmluZShbX200X2JdLCBfbTRf
ZGVmbihbX200X2JtYXRjaF0pKV9tNF9iKFskMV0sIFskMl0sIFskM10pLi4uCisjICAgX200X2Io
WyQxXSwgWyRtLTFdLCBbJG1dKV9tNF9iKFtdLCBbXSwgWyRtKzFdX200X3BvcGRlZihbX200X2Jd
KSkKKyMgdGhlbiBpbnZva2UgbTRfdW5xdW90ZShfbTRfYigkQCkpLCBmb3IgY29uY2F0ZW5hdGlv
biB3aXRoIGxhdGVyIHRleHQuCittNF9kZWZpbmUoW200X2JtYXRjaF0sCitbbTRfaWYoWyQjXSwg
MCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAorICAgICAgIFskI10s
IDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCisgICAgICAg
WyQjXSwgMiwgWyQyXSwKKyAgICAgICBbbTRfcHVzaGRlZihbX200X2JdLCBbbTRfZGVmaW5lKFtf
bTRfYl0sCisgIF9tNF9kZWZuKFtfJDBdKSldX200X2ZvcihbM10sIG00X2V2YWwoWygkIyArIDEp
IC8gMiAqIDIgLSAxXSksCisgIFsyXSwgW18kMF8oXSwgWyldKVtfbTRfYihbXSwgW10sXW00X2Rx
dW90ZShbJF1tNF9ldmFsKAorICBbKCQjICsgMSkgLyAyICogMl0pKVtfbTRfcG9wZGVmKFtfbTRf
Yl0pKV0pbTRfdW5xdW90ZShfbTRfYigkQCkpXSldKQorCittNF9kZWZpbmUoW19tNF9ibWF0Y2hd
LAorW200X2lmKG00X2JyZWdleHAoWyQxXSwgWyQyXSksIFstMV0sIFtdLCBbWyQzXW00X2RlZmlu
ZShbJDBdKV0pXSkKKworbTRfZGVmaW5lKFtfbTRfYm1hdGNoX10sCitbJDBfKFsxXSwgbTRfZGVj
cihbJDFdKSwgWyQxXSldKQorCittNF9kZWZpbmUoW19tNF9ibWF0Y2hfX10sCitbW19tNF9iKFsk
JDFdLCBbJCQyXSwgWyQkM10pXV0pCisKKworIyBtNF9jb25kKFRFU1QxLCBWQUwxLCBJRi1WQUwx
LCBURVNUMiwgVkFMMiwgSUYtVkFMMiwgLi4uLCBbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
U2ltaWxhciB0byBtNF9pZiwgZXhjZXB0IHRoYXQgZWFjaCBURVNUIGlzIGV4cGFuZGVkIHdoZW4g
ZW5jb3VudGVyZWQuCisjIElmIHRoZSBleHBhbnNpb24gb2YgVEVTVG4gbWF0Y2hlcyB0aGUgc3Ry
aW5nIFZBTG4sIHRoZSByZXN1bHQgaXMgSUYtVkFMbi4KKyMgVGhlIHJlc3VsdCBpcyBERUZBVUxU
IGlmIG5vIHRlc3RzIHBhc3NlZC4gIFRoaXMgbWFjcm8gYWxsb3dzCisjIHNob3J0LWNpcmN1aXRp
bmcgb2YgZXhwZW5zaXZlIHRlc3RzLCB3aGVyZSBpdCBwYXlzIHRvIGFycmFuZ2UgcXVpY2sKKyMg
ZmlsdGVyIHRlc3RzIHRvIHJ1biBmaXJzdC4KKyMKKyMgbTRfY29uZCBhbHJlYWR5IGd1YXJhbnRl
ZXMgZWl0aGVyIDMqbiBvciAzKm4gKyAxIGFyZ3VtZW50cywgMSA8PSBuLgorIyBXZSBvbmx5IGhh
dmUgdG8gc3BlZWQgdXAgX200X2NvbmQsIGJ5IGJ1aWxkaW5nIHRoZSB0ZW1wb3JhcnkgX200X2M6
CisjICAgbTRfZGVmaW5lKFtfbTRfY10sIF9tNF9kZWZuKFttNF91bnF1b3RlXSkpX200X2MoW200
X2lmKCgkMSksIFsoJDIpXSwKKyMgICBbWyQzXW00X2RlZmluZShbX200X2NdKV0pXSlfbTRfYyhb
bTRfaWYoKCQ0KSwgWygkNSldLAorIyAgIFtbJDZdbTRfZGVmaW5lKFtfbTRfY10pXSldKS4uLl9t
NF9jKFttNF9pZigoJG0tMiksIFsoJG0tMSldLAorIyAgIFtbJG1dbTRfZGVmaW5lKFtfbTRfY10p
XSldKV9tNF9jKFtbJG0rMV1dX200X3BvcGRlZihbX200X2NdKSkKKyMgV2UgaW52b2tlIG00X3Vu
cXVvdGUoX200X2MoJEApKSwgZm9yIGNvbmNhdGVuYXRpb24gd2l0aCBsYXRlciB0ZXh0LgorbTRf
ZGVmaW5lKFtfbTRfY29uZF0sCitbbTRfcHVzaGRlZihbX200X2NdLCBbbTRfZGVmaW5lKFtfbTRf
Y10sCisgIF9tNF9kZWZuKFttNF91bnF1b3RlXSkpXV9tNF9mb3IoWzJdLCBtNF9ldmFsKFskIyAv
IDMgKiAzIC0gMV0pLCBbM10sCisgIFskMF8oXSwgWyldKVtfbTRfYyhdbTRfZHF1b3RlKG00X2Rx
dW90ZSgKKyAgWyRdbTRfZXZhbChbJCMgLyAzICogMyArIDFdKSkpW19tNF9wb3BkZWYoW19tNF9j
XSkpXSltNF91bnF1b3RlKF9tNF9jKCRAKSldKQorCittNF9kZWZpbmUoW19tNF9jb25kX10sCitb
JDBfKG00X2RlY3IoWyQxXSksIFskMV0sIG00X2luY3IoWyQxXSkpXSkKKworbTRfZGVmaW5lKFtf
bTRfY29uZF9fXSwKK1tbX200X2MoW200X2lmKCgkJDEpLCBbKCQkMildLCBbWyQkM11tNF9kZWZp
bmUoW19tNF9jXSldKV0pXV0pCisKKyMgbTRfYnBhdHN1YnN0cyhTVFJJTkcsIFJFMSwgU1VCU1Qx
LCBSRTIsIFNVQlNUMiwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIG00IGVxdWl2YWxlbnQgb2YKKyMKKyMgICAkXyA9IFNUUklO
RzsKKyMgICBzL1JFMS9TVUJTVDEvZzsKKyMgICBzL1JFMi9TVUJTVDIvZzsKKyMgICAuLi4KKyMK
KyMgbTRfYnBhdHN1YnN0cyBhbHJlYWR5IHZhbGlkYXRlZCBhbiBvZGQgbnVtYmVyIG9mIGFyZ3Vt
ZW50czsgd2Ugb25seQorIyBuZWVkIHRvIHNwZWVkIHVwIF9tNF9icGF0c3Vic3RzLiAgVG8gYXZv
aWQgbmVzdGluZywgd2UgYnVpbGQgdGhlCisjIHRlbXBvcmFyeSBfbTRfcDoKKyMgICBtNF9kZWZp
bmUoW19tNF9wXSwgWyQxXSltNF9kZWZpbmUoW19tNF9wXSwKKyMgICBtNF9icGF0c3Vic3QobTRf
ZHF1b3RlKF9tNF9kZWZuKFtfbTRfcF0pKSwgWyQyXSwgWyQzXSkpbTRfZGVmaW5lKFtfbTRfcF0s
CisjICAgbTRfYnBhdHN1YnN0KG00X2RxdW90ZShfbTRfZGVmbihbX200X3BdKSksIFskNF0sIFsk
NV0pKW00X2RlZmluZShbX200X3BdLC4uLgorIyAgIG00X2JwYXRzdWJzdChtNF9kcXVvdGUoX200
X2RlZm4oW19tNF9wXSkpLCBbJG0tMV0sIFskbV0pKW00X3VucXVvdGUoCisjICAgX200X2RlZm4o
W19tNF9wXSlfbTRfcG9wZGVmKFtfbTRfcF0pKQorbTRfZGVmaW5lKFtfbTRfYnBhdHN1YnN0c10s
CitbbTRfcHVzaGRlZihbX200X3BdLCBbbTRfZGVmaW5lKFtfbTRfcF0sCisgIF1tNF9kcXVvdGUo
WyRdMSlbKV1fbTRfZm9yKFszXSwgWyQjXSwgWzJdLCBbJDBfKF0sCisgIFspXSlbbTRfdW5xdW90
ZShfbTRfZGVmbihbX200X3BdKV9tNF9wb3BkZWYoW19tNF9wXSkpXSlfbTRfcCgkQCldKQorCitt
NF9kZWZpbmUoW19tNF9icGF0c3Vic3RzX10sCitbJDBfKG00X2RlY3IoWyQxXSksIFskMV0pXSkK
KworbTRfZGVmaW5lKFtfbTRfYnBhdHN1YnN0c19fXSwKK1tbbTRfZGVmaW5lKFtfbTRfcF0sCitt
NF9icGF0c3Vic3QobTRfZHF1b3RlKF9tNF9kZWZuKFtfbTRfcF0pKSwgWyQkMV0sIFskJDJdKSld
XSkKKworIyBtNF9zaGlmdG4oTiwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm5z
IC4uLiBzaGlmdGVkIE4gdGltZXMuICBVc2VmdWwgZm9yIHJlY3Vyc2l2ZSAidmFyYXJncyIgY29u
c3RydWN0cy4KKyMKKyMgbTRfc2hpZnRuIGFscmVhZHkgdmFsaWRhdGVkIGFyZ3VtZW50czsgd2Ug
b25seSBuZWVkIHRvIHNwZWVkIHVwCisjIF9tNF9zaGlmdG4uICBJZiBOIGlzIDMsIHRoZW4gd2Ug
YnVpbGQgdGhlIHRlbXBvcmFyeSBfbTRfcywgZGVmaW5lZCBhcworIyAgICxbJDVdLFskNl0sLi4u
LFskbV1fbTRfcG9wZGVmKFtfbTRfc10pCisjIGJlZm9yZSBjYWxsaW5nIG00X3NoaWZ0KF9tNF9z
KCRAKSkuCittNF9kZWZpbmUoW19tNF9zaGlmdG5dLAorW200X2lmKG00X2luY3IoWyQxXSksIFsk
I10sIFtdLCBbbTRfcHVzaGRlZihbX200X3NdLAorICBfbTRfZm9yKG00X2V2YWwoWyQxICsgMl0p
LCBbJCNdLCBbMV0sCisgIFtbLF1tNF9kcXVvdGUoJF0sIFspXSlbX200X3BvcGRlZihbX200X3Nd
KV0pbTRfc2hpZnQoX200X3MoJEApKV0pXSkKKworIyBtNF9kbyhTVFJJTkcsIC4uLikKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgbWFjcm8gaW52b2tlcyBhbGwgaXRzIGFyZ3VtZW50cyAo
aW4gc2VxdWVuY2UsIG9mIGNvdXJzZSkuICBJdCBpcworIyB1c2VmdWwgZm9yIG1ha2luZyB5b3Vy
IG1hY3JvcyBtb3JlIHN0cnVjdHVyZWQgYW5kIHJlYWRhYmxlIGJ5IGRyb3BwaW5nCisjIHVubmVj
ZXNzYXJ5IGRubCdzIGFuZCBoYXZlIHRoZSBtYWNyb3MgaW5kZW50ZWQgcHJvcGVybHkuCisjCisj
IEhlcmUsIHdlIHVzZSB0aGUgdGVtcG9yYXJ5IG1hY3JvIF9tNF9kbywgZGVmaW5lZCBhcworIyAg
ICQxW10kMltdLi4uW10kbltdX200X3BvcGRlZihbX200X2RvXSkKK200X2RlZmluZShbbTRfZG9d
LAorW200X2lmKFskI10sIFswXSwgW10sCisgICAgICAgW200X3B1c2hkZWYoW18kMF0sIF9tNF9m
b3IoWzFdLCBbJCNdLCBbMV0sCisJCSAgIFskXSwgW1tbXV1dKVtfbTRfcG9wZGVmKFtfJDBdKV0p
XyQwKCRAKV0pXSkKKworIyBtNF9kcXVvdGVfZWx0KEFSR1MpCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgUmV0dXJuIEFSR1MgYXMgYW4gdW5xdW90ZWQgbGlzdCBvZiBkb3VibGUtcXVvdGVkIGFy
Z3VtZW50cy4KKyMKKyMgX200X2ZvcmVhY2ggdG8gdGhlIHJlc2N1ZS4KK200X2RlZmluZShbbTRf
ZHF1b3RlX2VsdF0sCitbbTRfaWYoWyQjXSwgWzBdLCBbXSwgW1tbJDFdXV9tNF9mb3JlYWNoKFss
bTRfZHF1b3RlKF0sIFspXSwgJEApXSldKQorCisjIG00X3JldmVyc2UoQVJHUykKKyMgLS0tLS0t
LS0tLS0tLS0tLQorIyBPdXRwdXQgQVJHUyBpbiByZXZlcnNlIG9yZGVyLgorIworIyBJbnZva2Ug
X200X3IoJEApIHdpdGggdGhlIHRlbXBvcmFyeSBfbTRfciBidWlsdCBhcworIyAgIFskbV0sIFsk
bS0xXSwgLi4uLCBbJDJdLCBbJDFdX200X3BvcGRlZihbX200X3JdKQorbTRfZGVmaW5lKFttNF9y
ZXZlcnNlXSwKK1ttNF9pZihbJCNdLCBbMF0sIFtdLCBbJCNdLCBbMV0sIFtbJDFdXSwKK1ttNF9w
dXNoZGVmKFtfbTRfcl0sIFtbJCQjXV1fbTRfZm9yKG00X2RlY3IoWyQjXSksIFsxXSwgWy0xXSwK
KyAgICBbWywgXW00X2RxdW90ZSgkXSwgWyldKVtfbTRfcG9wZGVmKFtfbTRfcl0pXSlfbTRfcigk
QCldKV0pCisKKworIyBtNF9tYXBfYXJnc19wYWlyKEVYUFJFU1NJT04sIFtFTkQtRVhQUiA9IEVY
UFJFU1NJT05dLCBBUkcuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhIHBhaXJ3aXNlIGdyb3VwaW5n
IG9mIGNvbnNlY3V0aXZlIEFSR3MsIGJ5IGV4cGFuZGluZworIyBFWFBSRVNTSU9OKFtBUkcxXSwg
W0FSRzJdKS4gIElmIHRoZXJlIGFyZSBhbiBvZGQgbnVtYmVyIG9mIEFSR3MsIHRoZQorIyBmaW5h
bCBhcmd1bWVudCBpcyBleHBhbmRlZCB3aXRoIEVORC1FWFBSKFtBUkduXSkuCisjCisjIEJ1aWxk
IHRoZSB0ZW1wb3JhcnkgbWFjcm8gX200X21hcF9hcmdzX3BhaXIsIHdpdGggdGhlICQyKFskbSsx
XSkKKyMgb25seSBvdXRwdXQgaWYgJCMgaXMgb2RkOgorIyAgICQxKFskM10sIFskNF0pW10kMShb
JDVdLCBbJDZdKVtdLi4uJDEoWyRtLTFdLAorIyAgIFskbV0pW11tNF9kZWZhdWx0KFskMl0sIFsk
MV0pKFskbSsxXSlbXV9tNF9wb3BkZWYoW19tNF9tYXBfYXJnc19wYWlyXSkKK200X2RlZmluZShb
bTRfbWFwX2FyZ3NfcGFpcl0sCitbbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28g
ZmV3IGFyZ3VtZW50czogJCNdKV0sCisgICAgICAgWyQjXSwgWzFdLCBbbTRfZmF0YWwoWyQwOiB0
b28gZmV3IGFyZ3VtZW50czogJCM6ICQxXSldLAorICAgICAgIFskI10sIFsyXSwgW10sCisgICAg
ICAgWyQjXSwgWzNdLCBbbTRfZGVmYXVsdChbJDJdLCBbJDFdKShbJDNdKVtdXSwKKyAgICAgICBb
bTRfcHVzaGRlZihbXyQwXSwgX200X2ZvcihbM10sCisgICBtNF9ldmFsKFskIyAvIDIgKiAyIC0g
MV0pLCBbMl0sIFtfJDBfKF0sIFspXSlfJDBfZW5kKAorICAgWzFdLCBbMl0sIFskI10pW19tNF9w
b3BkZWYoW18kMF0pXSlfJDAoJEApXSldKQorCittNF9kZWZpbmUoW19tNF9tYXBfYXJnc19wYWly
X10sCitbJDBfKFsxXSwgWyQxXSwgbTRfaW5jcihbJDFdKSldKQorCittNF9kZWZpbmUoW19tNF9t
YXBfYXJnc19wYWlyX19dLAorW1skJDEoWyQkMl0sIFskJDNdKVtdXV0pCisKK200X2RlZmluZShb
X200X21hcF9hcmdzX3BhaXJfZW5kXSwKK1ttNF9pZihtNF9ldmFsKFskMyAmIDFdKSwgWzFdLCBb
W200X2RlZmF1bHQoWyQkMl0sIFskJDFdKShbJCQzXSlbXV1dKV0pCisKKyMgbTRfam9pbihTRVAs
IEFSRzEsIEFSRzIuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9kdWNl
IEFSRzFTRVBBUkcyLi4uU0VQQVJHbi4gIEF2b2lkIGJhY2stdG8tYmFjayBTRVAgd2hlbiBhIGdp
dmVuIEFSRworIyBpcyB0aGUgZW1wdHkgc3RyaW5nLiAgTm8gZXhwYW5zaW9uIGlzIHBlcmZvcm1l
ZCBvbiBTRVAgb3IgQVJHcy4KKyMKKyMgVXNlIGEgc2VsZi1tb2RpZnlpbmcgc2VwYXJhdG9yLCBz
aW5jZSB3ZSBkb24ndCBrbm93IGhvdyBtYW55CisjIGFyZ3VtZW50cyBtaWdodCBiZSBza2lwcGVk
IGJlZm9yZSBhIHNlcGFyYXRvciBpcyBmaXJzdCBwcmludGVkLCBidXQKKyMgYmUgY2FyZWZ1bCBp
ZiB0aGUgc2VwYXJhdG9yIGNvbnRhaW5zICQuICBfbTRfZm9yZWFjaCB0byB0aGUgcmVzY3VlLgor
bTRfZGVmaW5lKFttNF9qb2luXSwKK1ttNF9wdXNoZGVmKFtfbTRfc2VwXSwgW200X2RlZmluZShb
X200X3NlcF0sIF9tNF9kZWZuKFttNF9lY2hvXSkpXSldZG5sCitbX200X2ZvcmVhY2goW18kMChb
JDFdLF0sIFspXSwgJEApX200X3BvcGRlZihbX200X3NlcF0pXSkKKworbTRfZGVmaW5lKFtfbTRf
am9pbl0sCitbbTRfaWYoWyQyXSwgW10sIFtdLCBbX200X3NlcChbJDFdKVskMl1dKV0pCisKKyMg
bTRfam9pbmFsbChTRVAsIEFSRzEsIEFSRzIuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBQcm9kdWNlIEFSRzFTRVBBUkcyLi4uU0VQQVJHbi4gIEFuIGVtcHR5IEFSRyBy
ZXN1bHRzIGluIGJhY2stdG8tYmFjayBTRVAuCisjIE5vIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQg
b24gU0VQIG9yIEFSR3MuCisjCisjIEEgYml0IGVhc2llciB0aGFuIG00X2pvaW4uICBfbTRfZm9y
ZWFjaCB0byB0aGUgcmVzY3VlLgorbTRfZGVmaW5lKFttNF9qb2luYWxsXSwKK1tbJDJdbTRfaWYo
bTRfZXZhbChbJCMgPD0gMl0pLCBbMV0sIFtdLAorCSAgIFtfbTRfZm9yZWFjaChbJDFdLCBbXSwg
bTRfc2hpZnQoJEApKV0pXSkKKworIyBtNF9saXN0X2NtcChBLCBCKQorIyAtLS0tLS0tLS0tLS0t
LS0tLQorIyBDb21wYXJlIHRoZSB0d28gbGlzdHMgb2YgaW50ZWdlciBleHByZXNzaW9ucyBBIGFu
ZCBCLgorIworIyBtNF9saXN0X2NtcCB0YWtlcyBjYXJlIG9mIGFueSBzaWRlIGVmZmVjdHM7IHdl
IG9ubHkgb3ZlcnJpZGUKKyMgX200X2xpc3RfY21wX3Jhdywgd2hlcmUgd2UgY2FuIHNhZmVseSBl
eHBhbmQgbGlzdHMgbXVsdGlwbGUgdGltZXMuCisjIEZpcnN0LCBpbnNlcnQgcGFkZGluZyBzbyB0
aGF0IGJvdGggbGlzdHMgYXJlIHRoZSBzYW1lIGxlbmd0aDsgdGhlCisjIHRyYWlsaW5nICswIGlz
IG5lY2Vzc2FyeSB0byBoYW5kbGUgYSBtaXNzaW5nIGxpc3QuICBOZXh0LCBjcmVhdGUgYQorIyB0
ZW1wb3JhcnkgbWFjcm8gdG8gcGVyZm9ybSBwYWlyd2lzZSBjb21wYXJpc29ucyB1bnRpbCBhbiBp
bmVxdWFsaXR5CisjIGlzIGZvdW5kLiAgRm9yIGV4YW1wbGUsIG00X2xpc3RfY21wKFsxXSwgWzEs
Ml0pIGNyZWF0ZXMgX200X2NtcCBhcworIyAgIG00X2lmKG00X2V2YWwoWygkMSkgIT0gKCQzKV0p
LCBbMV0sIFttNF9jbXAoWyQxXSwgWyQzXSldLAorIyAgICAgICAgIG00X2V2YWwoWygkMikgIT0g
KCQ0KV0pLCBbMV0sIFttNF9jbXAoWyQyXSwgWyQ0XSldLAorIyAgICAgICAgIFswXV9tNF9wb3Bk
ZWYoW19tNF9jbXBdKSkKKyMgdGhlbiBjYWxscyBfbTRfY21wKFsxKzBdLCBbMCoyXSwgWzFdLCBb
MiswXSkKK200X2RlZmluZShbX200X2xpc3RfY21wX3Jhd10sCitbbTRfaWYoWyQxXSwgWyQyXSwg
MCwKKyAgICAgICBbX200X2xpc3RfY21wKCQxKzBfbTRfbGlzdF9wYWQobTRfY291bnQoJDEpLCBt
NF9jb3VudCgkMikpLAorCQkgICAgICQyKzBfbTRfbGlzdF9wYWQobTRfY291bnQoJDIpLCBtNF9j
b3VudCgkMSkpKV0pXSkKKworbTRfZGVmaW5lKFtfbTRfbGlzdF9wYWRdLAorW200X2lmKG00X2V2
YWwoJDEgPCAkMiksIFsxXSwKKyAgICAgICBbX200X2ZvcihtNF9pbmNyKFskMV0pLCBbJDJdLCBb
MV0sIFssMCpdKV0pXSkKKworbTRfZGVmaW5lKFtfbTRfbGlzdF9jbXBdLAorW200X3B1c2hkZWYo
W19tNF9jbXBdLCBbbTRfaWYoXV9tNF9mb3IoCisgICBbMV0sIG00X2V2YWwoWyQjID4+IDFdKSwg
WzFdLCBbJDBfKF0sIFssXW00X2V2YWwoWyQjID4+IDFdKVspXSlbCisgICAgICBbMF1fbTRfcG9w
ZGVmKFtfbTRfY21wXSkpXSlfbTRfY21wKCRAKV0pCisKK200X2RlZmluZShbX200X2xpc3RfY21w
X10sCitbJDBfKFskMV0sIG00X2V2YWwoWyQxICsgJDJdKSldKQorCittNF9kZWZpbmUoW19tNF9s
aXN0X2NtcF9fXSwKK1tbbTRfZXZhbChbKCQkMSkgIT0gKCQkMildKSwgWzFdLCBbbTRfY21wKFsk
JDFdLCBbJCQyXSldLAorXV0pCisKKyMgbTRfbWF4KEVYUFIsIC4uLikKKyMgbTRfbWluKEVYUFIs
IC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmV0dXJuIHRoZSBkZWNpbWFsIHZhbHVlIG9m
IHRoZSBtYXhpbXVtIChvciBtaW5pbXVtKSBpbiBhIHNlcmllcyBvZgorIyBpbnRlZ2VyIGV4cHJl
c3Npb25zLgorIworIyBfbTRfZm9yZWFjaCB0byB0aGUgcmVzY3VlOyB3ZSBvbmx5IG5lZWQgdG8g
cmVwbGFjZSBfbTRfbWlubWF4LiAgSGVyZSwKKyMgd2UgbmVlZCBhIHRlbXBvcmFyeSBtYWNybyB0
byB0cmFjayB0aGUgYmVzdCBhbnN3ZXIgc28gZmFyLCBzbyB0aGF0CisjIHRoZSBmb3JlYWNoIGV4
cHJlc3Npb24gaXMgdHJhY3RhYmxlLgorbTRfZGVmaW5lKFtfbTRfbWlubWF4XSwKK1ttNF9wdXNo
ZGVmKFtfbTRfYmVzdF0sIG00X2V2YWwoWyQyXSkpX200X2ZvcmVhY2goCisgIFttNF9kZWZpbmUo
W19tNF9iZXN0XSwgJDEoX200X2Jlc3QsXSwgWykpXSwgbTRfc2hpZnQoJEApKV1kbmwKK1tfbTRf
YmVzdFtdX200X3BvcGRlZihbX200X2Jlc3RdKV0pCisKKyMgbTRfc2V0X2FkZF9hbGwoU0VULCBW
QUxVRS4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQWRkIGVhY2ggVkFM
VUUgaW50byBTRVQuICBUaGlzIGlzIE8obikgaW4gdGhlIG51bWJlciBvZiBWQUxVRXMsIGFuZAor
IyBjYW4gYmUgZmFzdGVyIHRoYW4gY2FsbGluZyBtNF9zZXRfYWRkIGZvciBlYWNoIFZBTFVFLgor
IworIyBfbTRfZm9yZWFjaCB0byB0aGUgcmVzY3VlLiAgSWYgbm8gZGVsZXRpb25zIGhhdmUgb2Nj
dXJyZWQsIHRoZW4KKyMgYXZvaWQgdGhlIHNwZWVkIHBlbmFsdHkgb2YgbTRfc2V0X2FkZC4KK200
X2RlZmluZShbbTRfc2V0X2FkZF9hbGxdLAorW200X2lmKFskI10sIFswXSwgW10sIFskI10sIFsx
XSwgW10sCisgICAgICAgW200X2RlZmluZShbX200X3NldF9zaXplKCQxKV0sIG00X2V2YWwobTRf
c2V0X3NpemUoWyQxXSkKKwkgICsgbTRfbGVuKF9tNF9mb3JlYWNoKG00X2lmZGVmKFtfbTRfc2V0
X2NsZWFudXAoJDEpXSwKKyAgW1ttNF9zZXRfYWRkXV0sIFtbXyQwXV0pWyhbJDFdLF0sIFspXSwg
JEApKSkpXSldKQorCittNF9kZWZpbmUoW19tNF9zZXRfYWRkX2FsbF0sCitbbTRfaWZkZWYoW19t
NF9zZXQoWyQxXSwkMildLCBbXSwKKwkgIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMildLAor
CQkgICAgIFsxXSltNF9wdXNoZGVmKFtfbTRfc2V0KFskMV0pXSwgWyQyXSktXSldKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0
eS9tNHN1Z2FyL200c3VnYXIubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvbTRzdWdhci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmQ2OTU4
MzZhMjdkOWFiMDU5OGMzNGM2NDczOTU1ZWU2OWY5MDg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2Fy
L200c3VnYXIubTQKQEAgLTAsMCArMSwzMzA4IEBACitkaXZlcnQoLTEpIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorIyBU
aGlzIGZpbGUgaXMgcGFydCBvZiBBdXRvY29uZi4KKyMgQmFzZSBNNCBsYXllci4KKyMgUmVxdWly
ZXMgR05VIE00LgorIworIyBDb3B5cmlnaHQgKEMpIDE5OTktMjAxNyBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4KKworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBBdXRvY29uZi4gIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlCisjIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorIyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFVuZGVyIFNlY3Rp
b24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorIyBwZXJt
aXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEF1dG9jb25mIENvbmZpZ3VyZSBTY3JpcHQgRXhjZXB0
aW9uLAorIyB2ZXJzaW9uIDMuMCwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24uCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFuZCBhIGNvcHkgb2YgdGhlIEF1dG9jb25mIENv
bmZpZ3VyZSBTY3JpcHQgRXhjZXB0aW9uIGFsb25nIHdpdGgKKyMgdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGVzIENPUFlJTkd2MyBhbmQgQ09QWUlORy5FWENFUFRJT04KKyMgcmVzcGVjdGl2ZWx5
LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBXcml0
dGVuIGJ5IEFraW0gRGVtYWlsbGUuCisKKyMgU2V0IHRoZSBxdW90ZXMsIHdoYXRldmVyIHRoZSBj
dXJyZW50IHF1b3Rpbmcgc3lzdGVtLgorY2hhbmdlcXVvdGUoKQorY2hhbmdlcXVvdGUoWywgXSkK
KworIyBTb21lIG9sZCBtNCdzIGRvbid0IHN1cHBvcnQgbTRleGl0LiAgQnV0IHRoZXkgcHJvdmlk
ZQorIyBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgYnkgY29yZSBkdW1waW5nIGJlY2F1c2Ugb2Yg
dGhlCisjIGxvbmcgbWFjcm9zIHdlIGRlZmluZS4KK2lmZGVmKFtfX2dudV9fXSwgLAorW2VycnBy
aW50KE00c3VnYXIgcmVxdWlyZXMgR05VIE00LiBJbnN0YWxsIGl0IGJlZm9yZSBpbnN0YWxsaW5n
IE00c3VnYXIgb3IKK3NldCB0aGUgTTQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaXRzIGFic29s
dXRlIGZpbGUgbmFtZS4pCittNGV4aXQoMildKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gIyMKKyMjIDEuIFNpbXVsYXRlIC0tcHJlZml4LWJ1aWx0aW5zLiAgIyMKKyMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBtNF9kZWZpbmUKKyMgbTRf
ZGVmbgorIyBtNF91bmRlZmluZQorZGVmaW5lKFttNF9kZWZpbmVdLCAgIGRlZm4oW2RlZmluZV0p
KQorZGVmaW5lKFttNF9kZWZuXSwgICAgIGRlZm4oW2RlZm5dKSkKK2RlZmluZShbbTRfdW5kZWZp
bmVdLCBkZWZuKFt1bmRlZmluZV0pKQorCittNF91bmRlZmluZShbZGVmaW5lXSkKK200X3VuZGVm
aW5lKFtkZWZuXSkKK200X3VuZGVmaW5lKFt1bmRlZmluZV0pCisKKworIyBtNF9jb3B5KFNSQywg
RFNUKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgRFNUIGFzIHRoZSBkZWZpbml0aW9u
IG9mIFNSQy4KKyMgV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW46CisjIDEuIG00X2NvcHko
W2Zyb21dLCBbdG9dKQorIyAyLiBtNF9kZWZpbmUoW3RvXSwgW2Zyb20oJEApXSkKKyMgV2VsbCwg
b2J2aW91c2x5IDEgaXMgbW9yZSBleHBlbnNpdmUgaW4gc3BhY2UuICBNYXliZSAyIGlzIG1vcmUg
ZXhwZW5zaXZlCisjIGluIHRpbWUsIGJ1dCBiZWNhdXNlIG9mIHRoZSBzcGFjZSBjb3N0IG9mIDEs
IGl0J3Mgbm90IHRoYXQgb2J2aW91cy4KKyMgTmV2ZXJ0aGVsZXNzLCBvbmUgaHVnZSBkaWZmZXJl
bmNlIGlzIHRoZSBoYW5kbGluZyBvZiBgJDAnLiAgSWYgYGZyb20nCisjIHVzZXMgYCQwJywgdGhl
biB3aXRoIDEsIGB0bycncyBgJDAnIGlzIGB0bycsIHdoaWxlIGl0IGlzIGBmcm9tJyBpbiAyLgor
IyBUaGUgdXNlciB3b3VsZCBjZXJ0YWlubHkgcHJlZmVyIHRvIHNlZSBgdG8nLgorIworIyBUaGlz
IGRlZmluaXRpb24gaXMgaW4gZWZmZWN0IGR1cmluZyBtNHN1Z2FyIGluaXRpYWxpemF0aW9uLCB3
aGVuCisjIHRoZXJlIGFyZSBubyBwdXNoZGVmIHN0YWNrczsgbGF0ZXIgb24sIHdlIHJlZGVmaW5l
IGl0IHRvIHNvbWV0aGluZworIyBtb3JlIHBvd2VyZnVsIGZvciBhbGwgb3RoZXIgY2xpZW50cyB0
byB1c2UuCittNF9kZWZpbmUoW200X2NvcHldLAorW200X2RlZmluZShbJDJdLCBtNF9kZWZuKFsk
MV0pKV0pCisKKworIyBtNF9yZW5hbWUoU1JDLCBEU1QpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgUmVuYW1lIHRoZSBtYWNybyBTUkMgdG8gRFNULgorbTRfZGVmaW5lKFttNF9yZW5hbWVdLAor
W200X2NvcHkoWyQxXSwgWyQyXSltNF91bmRlZmluZShbJDFdKV0pCisKKworIyBtNF9yZW5hbWVf
bTQoTUFDUk8tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlbmFtZSBNQUNS
Ty1OQU1FIHRvIG00X01BQ1JPLU5BTUUuCittNF9kZWZpbmUoW200X3JlbmFtZV9tNF0sCitbbTRf
cmVuYW1lKFskMV0sIFttNF8kMV0pXSkKKworCisjIG00X2NvcHlfdW5tNChtNF9NQUNSTy1OQU1F
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weSBtNF9NQUNSTy1OQU1FIHRv
IE1BQ1JPLU5BTUUuCittNF9kZWZpbmUoW200X2NvcHlfdW5tNF0sCitbbTRfY29weShbJDFdLCBt
NF9icGF0c3Vic3QoWyQxXSwgW15tNF9cKC4qXCldLCBbW1wxXV0pKV0pCisKKworIyBTb21lIG00
IGludGVybmFscyBoYXZlIG5hbWVzIGNvbGxpZGluZyB3aXRoIHRva2VucyB3ZSBtaWdodCB1c2Uu
CisjIFJlbmFtZSB0aGVtIGFgIGxhIGBtNCAtLXByZWZpeC1idWlsdGlucycuICBDb25kaXRpb25h
bHMgZmlyc3QsIHNpbmNlCisjIHNvbWUgc3Vic2VxdWVudCByZW5hbWVzIGFyZSBjb25kaXRpb25h
bC4KK200X3JlbmFtZV9tNChbaWZkZWZdKQorbTRfcmVuYW1lKFtpZmVsc2VdLCBbbTRfaWZdKQor
CittNF9yZW5hbWVfbTQoW2J1aWx0aW5dKQorbTRfcmVuYW1lX200KFtjaGFuZ2Vjb21dKQorbTRf
cmVuYW1lX200KFtjaGFuZ2VxdW90ZV0pCittNF9pZmRlZihbY2hhbmdld29yZF0sZG5sIGNvbmRp
dGlvbmFsbHkgYXZhaWxhYmxlIGluIDEuNC54CitbbTRfdW5kZWZpbmUoW2NoYW5nZXdvcmRdKV0p
CittNF9yZW5hbWVfbTQoW2RlYnVnZmlsZV0pCittNF9yZW5hbWVfbTQoW2RlYnVnbW9kZV0pCitt
NF9yZW5hbWVfbTQoW2RlY3JdKQorbTRfcmVuYW1lX200KFtkaXZudW1dKQorbTRfcmVuYW1lX200
KFtkdW1wZGVmXSkKK200X3JlbmFtZV9tNChbZXJycHJpbnRdKQorbTRfcmVuYW1lX200KFtlc3lz
Y21kXSkKK200X3JlbmFtZV9tNChbZXZhbF0pCittNF9yZW5hbWVfbTQoW2Zvcm1hdF0pCittNF91
bmRlZmluZShbaW5jbHVkZV0pCittNF9yZW5hbWVfbTQoW2luY3JdKQorbTRfcmVuYW1lX200KFtp
bmRleF0pCittNF9yZW5hbWVfbTQoW2luZGlyXSkKK200X3JlbmFtZV9tNChbbGVuXSkKK200X3Jl
bmFtZShbbTRleGl0XSwgW200X2V4aXRdKQorbTRfdW5kZWZpbmUoW200d3JhcF0pCittNF9pZmRl
ZihbbWtzdGVtcF0sZG5sIGFkZGVkIGluIE00IDEuNC44CitbbTRfcmVuYW1lX200KFtta3N0ZW1w
XSkKK200X2NvcHkoW200X21rc3RlbXBdLCBbbTRfbWFrZXRlbXBdKQorbTRfdW5kZWZpbmUoW21h
a2V0ZW1wXSldLAorW200X3JlbmFtZV9tNChbbWFrZXRlbXBdKQorbTRfY29weShbbTRfbWFrZXRl
bXBdLCBbbTRfbWtzdGVtcF0pXSkKK200X3JlbmFtZShbcGF0c3Vic3RdLCBbbTRfYnBhdHN1YnN0
XSkKK200X3JlbmFtZV9tNChbcG9wZGVmXSkKK200X3JlbmFtZV9tNChbcHVzaGRlZl0pCittNF9y
ZW5hbWUoW3JlZ2V4cF0sIFttNF9icmVnZXhwXSkKK200X3JlbmFtZV9tNChbc2hpZnRdKQorbTRf
dW5kZWZpbmUoW3NpbmNsdWRlXSkKK200X3JlbmFtZV9tNChbc3Vic3RyXSkKK200X2lmZGVmKFtz
eW1ib2xzXSxkbmwgcHJlc2VudCBvbmx5IGluIGFscGhhLXF1YWxpdHkgMS40bworW200X3JlbmFt
ZV9tNChbc3ltYm9sc10pXSkKK200X3JlbmFtZV9tNChbc3lzY21kXSkKK200X3JlbmFtZV9tNChb
c3lzdmFsXSkKK200X3JlbmFtZV9tNChbdHJhY2VvZmZdKQorbTRfcmVuYW1lX200KFt0cmFjZW9u
XSkKK200X3JlbmFtZV9tNChbdHJhbnNsaXRdKQorCisjIF9tNF9kZWZuKEFSRykKKyMgLS0tLS0t
LS0tLS0tLQorIyBfbTRfZGVmbiBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgLSBpdCBieXBhc3Nl
cyB0aGUgd3JhcHBlciwgc28gaXQKKyMgbXVzdCBvbmx5IGJlIHVzZWQgb24gb25lIGFyZ3VtZW50
IGF0IGEgdGltZSwgYW5kIG9ubHkgb24gbWFjcm9zCisjIGtub3duIHRvIGJlIGRlZmluZWQuICBN
YWtlIHN1cmUgdGhpcyBzdGlsbCB3b3JrcyBpZiB0aGUgdXNlciByZW5hbWVzCisjIG00X2RlZm4g
YnV0IG5vdCBfbTRfZGVmbi4KK200X2NvcHkoW200X2RlZm5dLCBbX200X2RlZm5dKQorCisjIF9t
NF9kaXZlcnRfcmF3KE5VTSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfbTRfZGl2ZXJ0X3Jh
dyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuICBVc2UgdGhpcyBpbnN0ZWFkIG9mCisjIG00X2J1
aWx0aW4oW2RpdmVydF0sIE5VTSksIHNvIHRoYXQgdHJhY2luZyBkaXZlcnNpb24gZmxvdyBpcyBl
YXNpZXIuCittNF9yZW5hbWUoW2RpdmVydF0sIFtfbTRfZGl2ZXJ0X3Jhd10pCisKKyMgX200X3Bv
cGRlZihBUkcuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBfbTRfcG9wZGVmIGlzIGZvciBp
bnRlcm5hbCB1c2Ugb25seSAtIGl0IGJ5cGFzc2VzIHRoZSB3cmFwcGVyLCBzbyBpdAorIyBtdXN0
IG9ubHkgYmUgdXNlZCBvbiBtYWNyb3Mga25vd24gdG8gYmUgZGVmaW5lZC4gIE1ha2Ugc3VyZSB0
aGlzCisjIHN0aWxsIHdvcmtzIGlmIHRoZSB1c2VyIHJlbmFtZXMgbTRfcG9wZGVmIGJ1dCBub3Qg
X200X3BvcGRlZi4KK200X2NvcHkoW200X3BvcGRlZl0sIFtfbTRfcG9wZGVmXSkKKworIyBfbTRf
dW5kZWZpbmUoQVJHLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfbTRfdW5kZWZpbmUg
aXMgZm9yIGludGVybmFsIHVzZSBvbmx5IC0gaXQgYnlwYXNzZXMgdGhlIHdyYXBwZXIsIHNvCisj
IGl0IG11c3Qgb25seSBiZSB1c2VkIG9uIG1hY3JvcyBrbm93biB0byBiZSBkZWZpbmVkLiAgTWFr
ZSBzdXJlIHRoaXMKKyMgc3RpbGwgd29ya3MgaWYgdGhlIHVzZXIgcmVuYW1lcyBtNF91bmRlZmlu
ZSBidXQgbm90IF9tNF91bmRlZmluZS4KK200X2NvcHkoW200X3VuZGVmaW5lXSwgW19tNF91bmRl
ZmluZV0pCisKKyMgX200X3VuZGl2ZXJ0KE5VTS4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgX200X3VuZGl2ZXJ0IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSwgYW5kIHNob3VsZCBhbHdh
eXMgYmUgZ2l2ZW4KKyMgYXJndW1lbnRzLiAgVXNlIHRoaXMgaW5zdGVhZCBvZiBtNF9idWlsdGlu
KFt1bmRpdmVydF0sIE5VTS4uLiksIHNvCisjIHRoYXQgdHJhY2luZyBkaXZlcnNpb24gZmxvdyBp
cyBlYXNpZXIuCittNF9yZW5hbWUoW3VuZGl2ZXJ0XSwgW19tNF91bmRpdmVydF0pCisKKworIyMg
LS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgMi4gRXJyb3IgbWVzc2FnZXMuICAjIworIyMgLS0t
LS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgbTRfbG9jYXRpb24KKyMgLS0tLS0tLS0tLS0KKyMg
T3V0cHV0IHRoZSBjdXJyZW50IGZpbGUsIGNvbG9uLCBhbmQgdGhlIGN1cnJlbnQgbGluZSBudW1i
ZXIuCittNF9kZWZpbmUoW200X2xvY2F0aW9uXSwKK1tfX2ZpbGVfXzpfX2xpbmVfX10pCisKKwor
IyBtNF9lcnJwcmludG4oTVNHKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBTYW1lIGFzIGBlcnJw
cmludCcsIGJ1dCB3aXRoIHRoZSBtaXNzaW5nIGVuZCBvZiBsaW5lLgorbTRfZGVmaW5lKFttNF9l
cnJwcmludG5dLAorW200X2VycnByaW50KFskMQorXSldKQorCisKKyMgbTRfd2FybmluZyhNU0cp
CisjIC0tLS0tLS0tLS0tLS0tLQorIyBXYXJuIHRoZSB1c2VyLgorbTRfZGVmaW5lKFttNF93YXJu
aW5nXSwKK1ttNF9lcnJwcmludG4obTRfbG9jYXRpb25bOiB3YXJuaW5nOiAkMV0pXSkKKworCisj
IG00X2ZhdGFsKE1TRywgW0VYSVQtU1RBVFVTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBGYXRhbCB0aGUgdXNlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6KQorbTRfZGVmaW5lKFttNF9mYXRhbF0sCitbbTRfZXJycHJp
bnRuKG00X2xvY2F0aW9uWzogZXJyb3I6ICQxXQorbTRfZXhwYW5zaW9uX3N0YWNrKW00X2V4aXQo
bTRfaWYoWyQyXSwsIDEsIFskMl0pKV0pCisKKworIyBtNF9hc3NlcnQoRVhQUkVTU0lPTiwgW0VY
SVQtU1RBVFVTID0gMV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgVGhpcyBtYWNybyBlbnN1cmVzIHRoYXQgRVhQUkVTU0lPTiBldmFsdWF0ZXMgdG8gdHJ1
ZSwgYW5kIGV4aXRzIGlmCisjIEVYUFJFU1NJT04gZXZhbHVhdGVzIHRvIGZhbHNlLgorbTRfZGVm
aW5lKFttNF9hc3NlcnRdLAorW200X2lmKG00X2V2YWwoWyQxXSksIDAsCisgICAgICAgW200X2Zh
dGFsKFthc3NlcnQgZmFpbGVkOiAkMV0sIFskMl0pXSldKQorCisKKworIyMgLS0tLS0tLS0tLS0t
LSAjIworIyMgMy4gV2FybmluZ3MuICAjIworIyMgLS0tLS0tLS0tLS0tLSAjIworCisKKyMgX200
X3dhcm4oQ0FURUdPUlksIE1FU1NBR0UsIFtTVEFDSy1UUkFDRV0pCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXBvcnQgYSBNRVNTQUdFIHRvIHRoZSB1
c2VyIGlmIHRoZSBDQVRFR09SWSBvZiB3YXJuaW5ncyBpcyBlbmFibGVkLgorIyBUaGlzIGlzIGZv
ciB0cmFjZXMgb25seS4KKyMgSWYgcHJlc2VudCwgU1RBQ0stVFJBQ0UgaXMgYSBcbi1zZXBhcmF0
ZWQgbGlzdCBvZiAiTE9DQVRJT046IE1FU1NBR0UiLAorIyB3aGVyZSB0aGUgbGFzdCBsaW5lIChh
bmQgbm8gb3RoZXIpIGVuZHMgd2l0aCAidGhlIHRvcCBsZXZlbCIuCisjCisjIFdpdGhpbiBtNCwg
dGhlIG1hY3JvIGlzIGEgbm8tb3AuICBUaGlzIG1hY3JvIHJlYWxseSBtYXR0ZXJzCisjIHdoZW4g
YXV0b200dGUgcG9zdC1wcm9jZXNzZXMgdGhlIHRyYWNlIG91dHB1dC4KK200X2RlZmluZShbX200
X3dhcm5dLCBbXSkKKworCisjIG00X3dhcm4oQ0FURUdPUlksIE1FU1NBR0UpCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlcG9ydCBhIE1FU1NBR0UgdG8gdGhlIHVzZXIgaWYgdGhl
IENBVEVHT1JZIG9mIHdhcm5pbmdzIGlzIGVuYWJsZWQuCittNF9kZWZpbmUoW200X3dhcm5dLAor
W19tNF93YXJuKFskMV0sIFskMl0sCittNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFtt
NF9leHBhbnNpb25fc3RhY2tdKSldKQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwor
IyMgNC4gRmlsZSBpbmNsdXNpb24uICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisK
KyMgV2UgYWxzbyB3YW50IHRvIG5ldXRyYWxpemUgaW5jbHVkZSAoYW5kIHNpbmNsdWRlIGZvciBz
eW1tZXRyeSksCisjIGJ1dCB3ZSB3YW50IHRvIGV4dGVuZCB0aGVtIHNsaWdodGx5OiB3YXJuIHdo
ZW4gYSBmaWxlIGlzIGluY2x1ZGVkCisjIHNldmVyYWwgdGltZXMuICBUaGlzIGlzLCBpbiBnZW5l
cmFsLCBhIGRhbmdlcm91cyBvcGVyYXRpb24sIGJlY2F1c2UKKyMgdG9vIG1hbnkgcGVvcGxlIGZv
cmdldCB0byBxdW90ZSB0aGUgZmlyc3QgYXJndW1lbnQgb2YgbTRfZGVmaW5lLgorIworIyBGb3Ig
aW5zdGFuY2UgaW4gdGhlIGZvbGxvd2luZyBjYXNlOgorIyAgIG00X2RlZmluZShmb28sIFtiYXJd
KQorIyB0aGVuIGEgc2Vjb25kIHJlYWRpbmcgd2lsbCB0dXJuIGludG8KKyMgICBtNF9kZWZpbmUo
YmFyLCBbYmFyXSkKKyMgd2hpY2ggaXMgY2VydGFpbmx5IG5vdCB3aGF0IHdhcyBtZWFudC4KKwor
IyBtNF9pbmNsdWRlX3VuaXF1ZShGSUxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBE
ZWNsYXJlIHRoYXQgdGhlIEZJTEUgd2FzIGxvYWRpbmc7IGFuZCB3YXJuIGlmIGl0IGhhcyBhbHJl
YWR5CisjIGJlZW4gaW5jbHVkZWQuCittNF9kZWZpbmUoW200X2luY2x1ZGVfdW5pcXVlXSwKK1tt
NF9pZmRlZihbbTRfaW5jbHVkZSgkMSldLAorCSAgW200X3dhcm4oW3N5bnRheF0sIFtmaWxlIGAk
MScgaW5jbHVkZWQgc2V2ZXJhbCB0aW1lc10pXSlkbmwKK200X2RlZmluZShbbTRfaW5jbHVkZSgk
MSldKV0pCisKKworIyBtNF9pbmNsdWRlKEZJTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgTGlr
ZSB0aGUgYnVpbHRpbiBpbmNsdWRlLCBidXQgd2FybnMgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdXNp
b25zLgorbTRfZGVmaW5lKFttNF9pbmNsdWRlXSwKK1ttNF9pbmNsdWRlX3VuaXF1ZShbJDFdKWRu
bAorbTRfYnVpbHRpbihbaW5jbHVkZV0sIFskMV0pXSkKKworCisjIG00X3NpbmNsdWRlKEZJTEUp
CisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIExpa2UgdGhlIGJ1aWx0aW4gc2luY2x1ZGUsIGJ1dCB3
YXJucyBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbnMuCittNF9kZWZpbmUoW200X3NpbmNsdWRl
XSwKK1ttNF9pbmNsdWRlX3VuaXF1ZShbJDFdKWRubAorbTRfYnVpbHRpbihbc2luY2x1ZGVdLCBb
JDFdKV0pCisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK
KyMjIDUuIEFkZGl0aW9uYWwgYnJhbmNoaW5nIGNvbnN0cnVjdHMuICAjIworIyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgQm90aCBgbTRfaWZ2YWwnIGFuZCBg
bTRfaWZzZXQnIHRlc3RzIGFnYWluc3QgdGhlIGVtcHR5IHN0cmluZy4gIFRoZQorIyBkaWZmZXJl
bmNlIGlzIHRoYXQgYG00X2lmc2V0JyBpcyBzcGVjaWFsaXplZCBvbiBtYWNyb3MuCisjCisjIElu
IGNhc2Ugb2YgYXJndW1lbnRzIG9mIG1hY3JvcywgZWcuICQxLCBpdCBtYWtlcyBsaXR0bGUgZGlm
ZmVyZW5jZS4KKyMgSW4gdGhlIGNhc2Ugb2YgYSBtYWNybyBgRk9PJywgeW91IGRvbid0IHdhbnQg
dG8gY2hlY2sgYG00X2lmdmFsKEZPTywKKyMgVFJVRSknLCBiZWNhdXNlIGlmIGBGT08nIGV4cGFu
ZHMgd2l0aCBjb21tYXMsIHRoZXJlIGlzIGEgc2hpZnRpbmcgb2YKKyMgdGhlIGFyZ3VtZW50cy4g
IFNvIHlvdSB3YW50IHRvIHJ1biBgbTRfaWZ2YWwoW0ZPT10pJywgYnV0IHRoZW4geW91IGp1c3QK
KyMgY29tcGFyZSB0aGUgKnN0cmluZyogYEZPTycgYWdhaW5zdCBgJywgd2hpY2gsIG9mIGNvdXJz
ZSBmYWlscy4KKyMKKyMgU28geW91IHdhbnQgdGhlIHZhcmlhdGlvbiBgbTRfaWZzZXQnIHRoYXQg
ZXhwZWN0cyBhIG1hY3JvIG5hbWUgYXMgJDEuCisjIElmIHRoaXMgbWFjcm8gaXMgYm90aCBkZWZp
bmVkIGFuZCBkZWZpbmVkIHRvIGEgbm9uIGVtcHR5IHZhbHVlLCB0aGVuCisjIGl0IHJ1bnMgVFJV
RSwgZXRjLgorCisKKyMgbTRfaWZibGFuayhDT05ELCBbSUYtQkxBTktdLCBbSUYtVEVYVF0pCisj
IG00X2lmbmJsYW5rKENPTkQsIFtJRi1URVhUXSwgW0lGLUJMQU5LXSkKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBDT05EIGlzIGVtcHR5LCBvciBjb25z
aXN0cyBvbmx5IG9mIGJsYW5rcyAoc3BhY2UsIHRhYiwgbmV3bGluZSksCisjIHRoZW4gZXhwYW5k
IElGLUJMQU5LLCBvdGhlcndpc2UgZXhwYW5kIElGLVRFWFQuICBUaGlzIGRpZmZlcnMgZnJvbQor
IyBtNF9pZnZhbCBvbmx5IGlmIENPTkQgaGFzIGp1c3Qgd2hpdGVzcGFjZSwgYnV0IGl0IGhlbHBz
IG9wdGltaXplIGluCisjIHNwaXRlIG9mIHVzZXJzIHdobyBtaXN0YWtlbmx5IGxlYXZlIHRyYWls
aW5nIHNwYWNlIGFmdGVyIHdoYXQgdGhleQorIyB0aG91Z2h0IHdhcyBhbiBlbXB0eSBhcmd1bWVu
dDoKKyMgICBtYWNybygKKyMgICAgICAgICBbXQorIyAgICAgICAgKQorIworIyBXcml0aW5nIG9u
ZSBtYWNybyBpbiB0ZXJtcyBvZiB0aGUgb3RoZXIgY2F1c2VzIGV4dHJhIG92ZXJoZWFkLCBzbwor
IyB3ZSBpbmxpbmUgYm90aCBkZWZpbml0aW9ucy4KK200X2RlZmluZShbbTRfaWZibGFua10sCitb
bTRfaWYobTRfdHJhbnNsaXQoW1skMV1dLCAgWyBdWwldWworXSksIFtdLCBbJDJdLCBbJDNdKV0p
CisKK200X2RlZmluZShbbTRfaWZuYmxhbmtdLAorW200X2lmKG00X3RyYW5zbGl0KFtbJDFdXSwg
IFsgXVsJXVsKK10pLCBbXSwgWyQzXSwgWyQyXSldKQorCisKKyMgbTRfaWZ2YWwoQ09ORCwgW0lG
LVRSVUVdLCBbSUYtRkFMU0VdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIElmIENPTkQgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIGV4cGFuZCBJRi1UUlVFLCBv
dGhlcndpc2UgSUYtRkFMU0UuCisjIENvbXBhcmFibGUgdG8gbTRfaWZkZWYuCittNF9kZWZpbmUo
W200X2lmdmFsXSwKK1ttNF9pZihbJDFdLCBbXSwgWyQzXSwgWyQyXSldKQorCisKKyMgbTRfbihU
RVhUKQorIyAtLS0tLS0tLS0tCisjIElmIFRFWFQgaXMgbm90IGVtcHR5LCByZXR1cm4gVEVYVCBh
bmQgYSBuZXcgbGluZSwgb3RoZXJ3aXNlIG5vdGhpbmcuCittNF9kZWZpbmUoW200X25dLAorW200
X2lmKFskMV0sCisgICAgICAgW10sIFtdLAorCSAgIFskMQorXSldKQorCisKKyMgbTRfaWZ2YWxu
KENPTkQsIFtJRi1UUlVFXSwgW0lGLUZBTFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgU2FtZSBhcyBgbTRfaWZ2YWwnLCBidXQgYWRkIGFuIGV4dHJhIG5l
d2xpbmUgdG8gSUYtVFJVRSBvciBJRi1GQUxTRQorIyB1bmxlc3MgdGhhdCBhcmd1bWVudCBpcyBl
bXB0eS4KK200X2RlZmluZShbbTRfaWZ2YWxuXSwKK1ttNF9pZihbJDFdLAorICAgICAgIFtdLCAg
IFttNF9uKFskM10pXSwKKwkgICAgIFttNF9uKFskMl0pXSldKQorCisKKyMgbTRfaWZzZXQoTUFD
Uk8sIFtJRi1UUlVFXSwgW0lGLUZBTFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyMgSWYgTUFDUk8gaGFzIG5vIGRlZmluaXRpb24sIG9yIG9mIGl0cyBkZWZp
bml0aW9uIGlzIHRoZSBlbXB0eSBzdHJpbmcsCisjIGV4cGFuZCBJRi1GQUxTRSwgb3RoZXJ3aXNl
IElGLVRSVUUuCittNF9kZWZpbmUoW200X2lmc2V0XSwKK1ttNF9pZmRlZihbJDFdLAorCSAgW200
X2lmdmFsKF9tNF9kZWZuKFskMV0pLCBbJDJdLCBbJDNdKV0sCisJICBbJDNdKV0pCisKKworIyBt
NF9pZm5kZWYoTkFNRSwgW0lGLU5PVC1ERUZJTkVEXSwgW0lGLURFRklORURdKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFttNF9p
Zm5kZWZdLAorW200X2lmZGVmKFskMV0sIFskM10sIFskMl0pXSkKKworCisjIG00X2Nhc2UoU1dJ
VENILCBWQUwxLCBJRi1WQUwxLCBWQUwyLCBJRi1WQUwyLCAuLi4sIERFRkFVTFQpCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IG00IGVxdWl2YWxlbnQgb2YKKyMgc3dpdGNoIChTV0lUQ0gpCisjIHsKKyMgICBjYXNlIFZBTDE6
CisjICAgICBJRi1WQUwxOworIyAgICAgYnJlYWs7CisjICAgY2FzZSBWQUwyOgorIyAgICAgSUYt
VkFMMjsKKyMgICAgIGJyZWFrOworIyAgIC4uLgorIyAgIGRlZmF1bHQ6CisjICAgICBERUZBVUxU
OworIyAgICAgYnJlYWs7CisjIH0uCisjIEFsbCB0aGUgdmFsdWVzIGFyZSBvcHRpb25hbCwgYW5k
IHRoZSBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZlCisjIHN5bWJvbHMgcHJvcGVybHkgcXVvdGVk
LgorIworIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVu
dHMgbWFkZSBoZXJlLgorbTRfZGVmaW5lKFttNF9jYXNlXSwKK1ttNF9pZihbJCNdLCAwLCBbXSwK
KyAgICAgICBbJCNdLCAxLCBbXSwKKyAgICAgICBbJCNdLCAyLCBbJDJdLAorICAgICAgIFskMV0s
IFskMl0sIFskM10sCisgICAgICAgWyQwKFskMV0sIG00X3NoaWZ0MygkQCkpXSldKQorCisKKyMg
bTRfYm1hdGNoKFNXSVRDSCwgUkUxLCBWQUwxLCBSRTIsIFZBTDIsIC4uLiwgREVGQVVMVCkKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
bTQgZXF1aXZhbGVudCBvZgorIworIyBpZiAoU1dJVENIID1+IFJFMSkKKyMgICBWQUwxOworIyBl
bGlmIChTV0lUQ0ggPX4gUkUyKQorIyAgIFZBTDI7CisjIGVsaWYgLi4uCisjICAgLi4uCisjIGVs
c2UKKyMgICBERUZBVUxUCisjCisjIEFsbCB0aGUgdmFsdWVzIGFyZSBvcHRpb25hbCwgYW5kIHRo
ZSBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZlIHN5bWJvbHMKKyMgcHJvcGVybHkgcXVvdGVkLgor
IworIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMg
bWFkZSBoZXJlLgorbTRfZGVmaW5lKFttNF9ibWF0Y2hdLAorW200X2lmKFskI10sIDAsIFttNF9m
YXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKKyAgICAgICBbJCNdLCAxLCBbbTRf
ZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCM6ICQxXSldLAorICAgICAgIFskI10sIDIs
IFskMl0sCisgICAgICAgW200X2lmKG00X2JyZWdleHAoWyQxXSwgWyQyXSksIC0xLCBbJDAoWyQx
XSwgbTRfc2hpZnQzKCRAKSldLAorCSAgICAgIFskM10pXSldKQorCisjIG00X2FyZ24oTiwgQVJH
Uy4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeHRyYWN0IGFyZ3VtZW50IE4gKGdyZWF0
ZXIgdGhhbiAwKSBmcm9tIEFSR1MuICBFeGFtcGxlOgorIyAgIG00X2RlZmluZShbYl0sIFtCXSkK
KyMgICBtNF9hcmduKFsyXSwgW2FdLCBbYl0sIFtjXSkgPT4gYgorIworIyBSYXRoZXIgdGhhbiB1
c2luZyBtNF9jYXIobTRfc2hpZnRuKFskMV0sICRAKSksIHdlIGV4cGxvaXQgdGhlIGZhY3QgdGhh
dAorIyBHTlUgbTQgY2FuIGRpcmVjdGx5IHJlZmVyZW5jZSBhbnkgYXJndW1lbnQsIHRocm91Z2gg
YW4gaW5kaXJlY3QgbWFjcm8uCittNF9kZWZpbmUoW200X2FyZ25dLAorW200X2Fzc2VydChbMCA8
ICQxXSldZG5sCitbbTRfcHVzaGRlZihbXyQwXSwgW19tNF9wb3BkZWYoW18kMF0pXW00X2RxdW90
ZShbJF1tNF9pbmNyKFskMV0pKSlfJDAoJEApXSkKKworCisjIG00X2NhcihBUkdTLi4uKQorIyBt
NF9jZHIoQVJHUy4uLikKKyMgLS0tLS0tLS0tLS0tLS0tCisjIE1hbmlwdWxhdGUgbTQgbGlzdHMu
ICBtNF9jYXIgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQuICBtNF9jZHIKKyMgYnVuZGxlcyBh
bGwgYnV0IHRoZSBmaXJzdCBhcmd1bWVudCBpbnRvIGEgcXVvdGVkIGxpc3QuICBUaGVzZSB0d28K
KyMgbWFjcm9zIGFyZSBnZW5lcmFsbHkgdXNlZCB3aXRoIGxpc3QgYXJndW1lbnRzLCB3aXRoIHF1
b3RpbmcgcmVtb3ZlZAorIyB0byBicmVhayB0aGUgbGlzdCBpbnRvIG11bHRpcGxlIG00IEFSR1Mu
CittNF9kZWZpbmUoW200X2Nhcl0sIFtbJDFdXSkKK200X2RlZmluZShbbTRfY2RyXSwKK1ttNF9p
ZihbJCNdLCAwLCBbbTRfZmF0YWwoWyQwOiBjYW5ub3QgYmUgY2FsbGVkIHdpdGhvdXQgYXJndW1l
bnRzXSldLAorICAgICAgIFskI10sIDEsIFtdLAorICAgICAgIFttNF9kcXVvdGUobTRfc2hpZnQo
JEApKV0pXSkKKworIyBfbTRfY2RyKEFSR1MuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgTGlr
ZSBtNF9jZHIsIGV4Y2VwdCBpbmNsdWRlIGEgbGVhZGluZyBjb21tYSB1bmxlc3Mgb25seSBvbmUg
YXJndW1lbnQKKyMgcmVtYWlucy4gIFdoeT8gIEJlY2F1c2UgY29tcGFyaW5nIGEgbGFyZ2UgbGlz
dCBhZ2FpbnN0IFtdIGlzIG1vcmUKKyMgZXhwZW5zaXZlIGluIGV4cGFuc2lvbiB0aW1lIHRoYW4g
Y29tcGFyaW5nIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzOyBzbworIyBfbTRfY2RyIGNhbiBiZSB1
c2VkIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGVuIGl0IGlzIHRpbWUKKyMg
dG8gZW5kIHJlY3Vyc2lvbi4KK200X2RlZmluZShbX200X2Nkcl0sCitbbTRfaWYoWyQjXSwgMSwg
W10sCisgICAgICAgWywgbTRfZHF1b3RlKG00X3NoaWZ0KCRAKSldKV0pCisKKworCisjIG00X2Nv
bmQoVEVTVDEsIFZBTDEsIElGLVZBTDEsIFRFU1QyLCBWQUwyLCBJRi1WQUwyLCAuLi4sIFtERUZB
VUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTaW1pbGFyIHRvIG00X2lmLCBleGNlcHQgdGhhdCBlYWNo
IFRFU1QgaXMgZXhwYW5kZWQgd2hlbiBlbmNvdW50ZXJlZC4KKyMgSWYgdGhlIGV4cGFuc2lvbiBv
ZiBURVNUbiBtYXRjaGVzIHRoZSBzdHJpbmcgVkFMbiwgdGhlIHJlc3VsdCBpcyBJRi1WQUxuLgor
IyBUaGUgcmVzdWx0IGlzIERFRkFVTFQgaWYgbm8gdGVzdHMgcGFzc2VkLiAgVGhpcyBtYWNybyBh
bGxvd3MKKyMgc2hvcnQtY2lyY3VpdGluZyBvZiBleHBlbnNpdmUgdGVzdHMsIHdoZXJlIGl0IHBh
eXMgdG8gYXJyYW5nZSBxdWljaworIyBmaWx0ZXIgdGVzdHMgdG8gcnVuIGZpcnN0LgorIworIyBG
b3IgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBfQVNf
UVVPVEVfSUZFTFNFOgorIworIyAgICBtNF9pZihtNF9pbmRleChbJDFdLCBbXF0pLCBbLTFdLCBb
JDJdLAorIyAgICAgICAgICBtNF9ldmFsKG00X2luZGV4KFskMV0sIFtcXF0pID49IDApLCBbMV0s
IFskMl0sCisjICAgICAgICAgIG00X2V2YWwobTRfaW5kZXgoWyQxXSwgW1wkXSkgPj0gMCksIFsx
XSwgWyQyXSwKKyMgICAgICAgICAgbTRfZXZhbChtNF9pbmRleChbJDFdLCBbXGBdKSA+PSAwKSwg
WzFdLCBbJDNdLAorIyAgICAgICAgICBtNF9ldmFsKG00X2luZGV4KFskMV0sIFtcIl0pID49IDAp
LCBbMV0sIFskM10sCisjICAgICAgICAgIFskMl0pCisjCisjIEhlcmUsIG00X2luZGV4IGlzIGNv
bXB1dGVkIDUgdGltZXMsIGFuZCBtNF9ldmFsIDQsIGV2ZW4gaWYgJDEgY29udGFpbnMKKyMgbm8g
YmFja3NsYXNoLiAgSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gZG86CisjCisjICAgIG00X2NvbmQo
W200X2luZGV4KFskMV0sIFtcXSldLCBbLTFdLCBbJDJdLAorIyAgICAgICAgICAgIFttNF9ldmFs
KG00X2luZGV4KFskMV0sIFtcXF0pID49IDApXSwgWzFdLCBbJDJdLAorIyAgICAgICAgICAgIFtt
NF9ldmFsKG00X2luZGV4KFskMV0sIFtcJF0pID49IDApXSwgWzFdLCBbJDJdLAorIyAgICAgICAg
ICAgIFttNF9ldmFsKG00X2luZGV4KFskMV0sIFtcYF0pID49IDApXSwgWzFdLCBbJDNdLAorIyAg
ICAgICAgICAgIFttNF9ldmFsKG00X2luZGV4KFskMV0sIFtcIl0pID49IDApXSwgWzFdLCBbJDNd
LAorIyAgICAgICAgICAgIFskMl0pCisjCisjIEluIHRoZSBjb21tb24gY2FzZSBvZiAkMSB3aXRo
IG5vIGJhY2tzbGFzaCwgb25seSBvbmUgbTRfaW5kZXggZXhwYW5zaW9uCisjIG9jY3VycywgYW5k
IG00X2V2YWwgaXMgYXZvaWRlZCBhbHRvZ2V0aGVyLgorIworIyBQbGVhc2Uga2VlcCBmb3JlYWNo
Lm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgorbTRfZGVmaW5lKFtt
NF9jb25kXSwKK1ttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IGNhbm5vdCBiZSBjYWxs
ZWQgd2l0aG91dCBhcmd1bWVudHNdKV0sCisgICAgICAgWyQjXSwgWzFdLCBbJDFdLAorICAgICAg
IG00X2V2YWwoWyQjICUgM10pLCBbMl0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYW4gYXJndW1l
bnRdKV0sCisgICAgICAgW18kMCgkQCldKV0pCisKK200X2RlZmluZShbX200X2NvbmRdLAorW200
X2lmKCgkMSksIFsoJDIpXSwgWyQzXSwKKyAgICAgICBbJCNdLCBbM10sIFtdLAorICAgICAgIFsk
I10sIFs0XSwgWyQ0XSwKKyAgICAgICBbJDAobTRfc2hpZnQzKCRAKSldKV0pCisKKworIyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgNi4gRW5oYW5jZWQg
dmVyc2lvbiBvZiBzb21lIHByaW1pdGl2ZXMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIG00X2JwYXRzdWJzdHMoU1RSSU5HLCBSRTEsIFNV
QlNUMSwgUkUyLCBTVUJTVDIsIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBtNCBlcXVpdmFsZW50IG9mCisjCisjICAgJF8gPSBT
VFJJTkc7CisjICAgcy9SRTEvU1VCU1QxL2c7CisjICAgcy9SRTIvU1VCU1QyL2c7CisjICAgLi4u
CisjCisjIEFsbCB0aGUgdmFsdWVzIGFyZSBvcHRpb25hbCwgYW5kIHRoZSBtYWNybyBpcyByb2J1
c3QgdG8gYWN0aXZlIHN5bWJvbHMKKyMgcHJvcGVybHkgcXVvdGVkLgorIworIyBJIHdvdWxkIGhh
dmUgbGlrZWQgdG8gbmFtZSB0aGlzIG1hY3JvIGBtNF9icGF0c3Vic3QnLCB1bmZvcnR1bmF0ZWx5
LAorIyBkdWUgdG8gcXVvdGF0aW9uIHByb2JsZW1zLCBJIG5lZWQgdG8gZG91YmxlIHF1b3RlICQx
IGJlbG93LCB0aGVyZWZvcmUKKyMgdGhlIGFuY2hvcnMgYXJlIGJyb2tlbiA6KCAgSSBjYW4ndCBs
ZXQgdXNlcnMgYmUgdHJhcHBlZCBieSB0aGF0LgorIworIyBSZWNhbGwgdGhhdCBtNF9zaGlmdDMg
YWx3YXlzIHJlc3VsdHMgaW4gYW4gYXJndW1lbnQuICBIZW5jZSwgd2UgbmVlZAorIyB0byBkaXN0
aW5ndWlzaCBiZXR3ZWVuIGEgZmluYWwgZGVsZXRpb24gdnMuIGVuZGluZyByZWN1cnNpb24uCisj
CisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBt
YWRlIGhlcmUuCittNF9kZWZpbmUoW200X2JwYXRzdWJzdHNdLAorW200X2lmKFskI10sIDAsIFtt
NF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKKyAgICAgICBbJCNdLCAxLCBb
bTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCM6ICQxXSldLAorICAgICAgIFskI10s
IDIsIFttNF91bnF1b3RlKG00X2J1aWx0aW4oW3BhdHN1YnN0XSwgW1skMV1dLCBbJDJdKSldLAor
ICAgICAgIFskI10sIDMsIFttNF91bnF1b3RlKG00X2J1aWx0aW4oW3BhdHN1YnN0XSwgW1skMV1d
LCBbJDJdLCBbJDNdKSldLAorICAgICAgIFtfJDAoJEBtNF9pZihtNF9ldmFsKCQjICYgMSksIDAs
IFssXSkpXSldKQorbTRfZGVmaW5lKFtfbTRfYnBhdHN1YnN0c10sCitbbTRfaWYoWyQjXSwgMiwg
WyQxXSwKKyAgICAgICBbJDAobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFsk
M10pLAorCSAgIG00X3NoaWZ0MygkQCkpXSldKQorCisKKyMgbTRfY29weShTUkMsIERTVCkKKyMg
LS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIHRoZSBwdXNoZGVmIHN0YWNrIERTVCBhcyBhIGNv
cHkgb2YgdGhlIHB1c2hkZWYgc3RhY2sgU1JDOworIyBnaXZlIGFuIGVycm9yIGlmIERTVCBpcyBh
bHJlYWR5IGRlZmluZWQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBuaWNlCisjIGZvciBjb3B5aW5n
IHNlbGYtbW9kaWZ5aW5nIHB1c2hkZWYgc3RhY2tzLCB3aGVyZSB0aGUgdG9wIGRlZmluaXRpb24K
KyMgaW5jbHVkZXMgb25lLXNob3QgaW5pdGlhbGl6YXRpb24gdGhhdCBpcyBsYXRlciBwb3BwZWQg
dG8gdGhlIG5vcm1hbAorIyBkZWZpbml0aW9uLiAgVGhpcyB2ZXJzaW9uIGludGVudGlvbmFsbHkg
ZG9lcyBub3RoaW5nIGlmIFNSQyBpcworIyB1bmRlZmluZWQuCisjCisjIFNvbWUgbWFjcm9zIHNp
bXBseSBjYW4ndCBiZSByZW5hbWVkIHdpdGggdGhpcyBtZXRob2Q6IG5hbWVseSwgYW55dGhpbmcK
KyMgaW52b2x2ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIG00X3N0YWNrX2ZvcmVhY2hfc2Vw
LgorbTRfZGVmaW5lKFttNF9jb3B5XSwKK1ttNF9pZmRlZihbJDJdLCBbbTRfZmF0YWwoWyQwOiB3
b24ndCBvdmVyd3JpdGUgZGVmaW5lZCBtYWNybzogJDJdKV0sCisJICBbbTRfc3RhY2tfZm9yZWFj
aF9zZXAoWyQxXSwgW200X3B1c2hkZWYoWyQyXSxdLCBbKV0pXSldZG5sCitbbTRfaWZkZWYoW200
X2xvY2F0aW9uKCQxKV0sIFttNF9kZWZpbmUoW200X2xvY2F0aW9uKCQyKV0sIG00X2xvY2F0aW9u
KV0pXSkKKworCisjIG00X2NvcHlfZm9yY2UoU1JDLCBEU1QpCisjIG00X3JlbmFtZV9mb3JjZShT
UkMsIERTVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIG00X2NvcHkvbTRf
cmVuYW1lLCBleGNlcHQgYmxpbmRseSBvdmVyd3JpdGUgYW55IGV4aXN0aW5nIERTVC4KKyMgTm90
ZSB0aGF0IG00X2NvcHlfZm9yY2UgdG9sZXJhdGVzIHVuZGVmaW5lZCBTUkMsIHdoaWxlIG00X3Jl
bmFtZV9mb3JjZQorIyBkb2VzIG5vdC4KK200X2RlZmluZShbbTRfY29weV9mb3JjZV0sCitbbTRf
aWZkZWYoWyQyXSwgW19tNF91bmRlZmluZShbJDJdKV0pbTRfY29weSgkQCldKQorCittNF9kZWZp
bmUoW200X3JlbmFtZV9mb3JjZV0sCitbbTRfaWZkZWYoWyQyXSwgW19tNF91bmRlZmluZShbJDJd
KV0pbTRfcmVuYW1lKCRAKV0pCisKKworIyBtNF9kZWZpbmVfZGVmYXVsdChNQUNSTywgVkFMVUUp
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgTUFDUk8gaXMgdW5kZWZp
bmVkLCBzZXQgaXQgdG8gVkFMVUUuCittNF9kZWZpbmUoW200X2RlZmluZV9kZWZhdWx0XSwKK1tt
NF9pZm5kZWYoWyQxXSwgW200X2RlZmluZSgkQCldKV0pCisKKworIyBtNF9kZWZhdWx0KEVYUDEs
IEVYUDIpCisjIG00X2RlZmF1bHRfbmJsYW5rKEVYUDEsIEVYUDIpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIFJldHVybnMgRVhQMSBpZiBub3QgZW1wdHkvYmxhbmssIG90aGVy
d2lzZSBFWFAyLiAgRXhwYW5kIHRoZSByZXN1bHQuCisjCisjIG00X2RlZmF1bHQgaXMgY2FsbGVk
IG9uIGhvdCBwYXRocywgc28gaW5saW5lIHRoZSBjb250ZW50cyBvZiBtNF9pZnZhbCwKKyMgZm9y
IG9uZSBsZXNzIHJvdW5kIG9mIGV4cGFuc2lvbi4KK200X2RlZmluZShbbTRfZGVmYXVsdF0sCitb
bTRfaWYoWyQxXSwgW10sIFskMl0sIFskMV0pXSkKKworbTRfZGVmaW5lKFttNF9kZWZhdWx0X25i
bGFua10sCitbbTRfaWZibGFuayhbJDFdLCBbJDJdLCBbJDFdKV0pCisKKworIyBtNF9kZWZhdWx0
X3F1b3RlZChFWFAxLCBFWFAyKQorIyBtNF9kZWZhdWx0X25ibGFua19xdW90ZWQoRVhQMSwgRVhQ
MikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybnMgRVhQ
MSBpZiBub24gZW1wdHkvYmxhbmssIG90aGVyd2lzZSBFWFAyLiAgTGVhdmUgdGhlIHJlc3VsdCBx
dW90ZWQuCisjCisjIEZvciBjb21wYXJpc29uOgorIyAgIG00X2RlZmluZShbYWN0aXZlXSwgW0FD
VElWRV0pCisjICAgbTRfZGVmYXVsdChbYWN0aXZlXSwgW2RlZmF1bHRdKSA9PiBBQ1RJVkUKKyMg
ICBtNF9kZWZhdWx0KFtdLCBbYWN0aXZlXSkgPT4gQUNUSVZFCisjICAgLW00X2RlZmF1bHQoWyBd
LCBbYWN0aXZlXSktID0+IC0gLQorIyAgIC1tNF9kZWZhdWx0X25ibGFuayhbIF0sIFthY3RpdmVd
KS0gPT4gLUFDVElWRS0KKyMgICBtNF9kZWZhdWx0X3F1b3RlZChbYWN0aXZlXSwgW2RlZmF1bHRd
KSA9PiBhY3RpdmUKKyMgICBtNF9kZWZhdWx0X3F1b3RlZChbXSwgW2FjdGl2ZV0pID0+IGFjdGl2
ZQorIyAgIC1tNF9kZWZhdWx0X3F1b3RlZChbIF0sIFthY3RpdmVdKS0gPT4gLSAtCisjICAgLW00
X2RlZmF1bHRfbmJsYW5rX3F1b3RlZChbIF0sIFthY3RpdmVdKS0gPT4gLWFjdGl2ZS0KKyMKKyMg
bTRfZGVmYXVsdCBtYWNybyBpcyBjYWxsZWQgb24gaG90IHBhdGhzLCBzbyBpbmxpbmUgdGhlIGNv
bnRlbnRzIG9mIG00X2lmdmFsLAorIyBmb3Igb25lIGxlc3Mgcm91bmQgb2YgZXhwYW5zaW9uLgor
bTRfZGVmaW5lKFttNF9kZWZhdWx0X3F1b3RlZF0sCitbbTRfaWYoWyQxXSwgW10sIFtbJDJdXSwg
W1skMV1dKV0pCisKK200X2RlZmluZShbbTRfZGVmYXVsdF9uYmxhbmtfcXVvdGVkXSwKK1ttNF9p
ZmJsYW5rKFskMV0sIFtbJDJdXSwgW1skMV1dKV0pCisKKworIyBtNF9kZWZuKE5BTUUpCisjIC0t
LS0tLS0tLS0tLS0KKyMgTGlrZSB0aGUgb3JpZ2luYWwsIGV4Y2VwdCBndWFyYW50ZWUgYSB3YXJu
aW5nIHdoZW4gdXNpbmcgc29tZXRoaW5nIHdoaWNoIGlzCisjIHVuZGVmaW5lZCAodW5saWtlIE00
IDEuNC54KS4gIFRoaXMgcmVwbGFjZW1lbnQgaXMgbm90IGEgZnVsbC1mZWF0dXJlZAorIyByZXBs
YWNlbWVudDogaWYgYW55IG9mIHRoZSBkZWZpbmVkIG1hY3JvcyBjb250YWluIHVuYmFsYW5jZWQg
cXVvdGluZywgYnV0CisjIHdoZW4gcGFzdGVkIHRvZ2V0aGVyIHJlc3VsdCBpbiBhIHdlbGwtcXVv
dGVkIHN0cmluZywgdGhlbiBvbmx5IG5hdGl2ZSBtNAorIyBzdXBwb3J0IGlzIGFibGUgdG8gZ2V0
IGl0IGNvcnJlY3QuICBCdXQgdGhhdCdzIHdoZXJlIHF1YWRyaWdyYXBocyBjb21lIGluCisjIGhh
bmR5LCBpZiB5b3UgcmVhbGx5IG5lZWQgdW5iYWxhbmNlZCBxdW90ZXMgaW5zaWRlIHlvdXIgbWFj
cm9zLgorIworIyBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0
aGUgYW1vdW50IG9mIGFkZGl0aW9uYWwKKyMgZXhwYW5zaW9ucyBieSBza2lwcGluZyBtNF9pZm5k
ZWYuICBCZXR0ZXIgeWV0LCBpZiBfX200X3ZlcnNpb25fXyBleGlzdHMsCisjIChhZGRlZCBpbiBN
NCAxLjYpLCB0aGVuIGxldCBtNCBkbyB0aGUgam9iIGZvciB1cyAoc2VlIG00X2luaXQpLgorbTRf
ZGVmaW5lKFttNF9kZWZuXSwKK1ttNF9pZihbJCNdLCBbMF0sIFtbJDBdXSwKKyAgICAgICBbJCNd
LCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X2RlZm4oWyQxXSldLAorCQkJICAgIFttNF9mYXRh
bChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0pXSwKKyAgICAgICBbbTRfbWFwX2FyZ3MoWyQw
XSwgJEApXSldKQorCisKKyMgbTRfZHVtcGRlZihOQU1FLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tCisjIEluIG00IDEuNC54LCBkdW1wZGVmIHdyaXRlcyB0byB0aGUgY3VycmVudCBkZWJ1Z2Zp
bGUsIHJhdGhlciB0aGFuCisjIHN0ZGVyci4gIFRoaXMgaW4gdHVybiByb3lhbGx5IGNvbmZ1c2Vz
IGF1dG9tNHRlOyBzbyB3ZSBmb2xsb3cgdGhlCisjIGxlYWQgb2YgbmV3ZXIgbTQgYW5kIGFsd2F5
cyBkdW1wIHRvIHN0ZGVyci4gIFVubGlrZSB0aGUgb3JpZ2luYWwsCisjIHRoaXMgdmVyc2lvbiBy
ZXF1aXJlcyBhbiBhcmd1bWVudCwgc2luY2UgdGhlcmUgaXMgbm8gY29udmVuaWVudCB3YXkKKyMg
aW4gbTQgMS40LnggdG8gZ3JhYiB0aGUgbmFtZXMgb2YgYWxsIGRlZmluZWQgbWFjcm9zLiAgTmV3
ZXIgbTQKKyMgYWx3YXlzIGR1bXBzIHRvIHN0ZGVyciwgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVu
dCBkZWJ1Z2ZpbGU7IGl0IGFsc28KKyMgcHJvdmlkZXMgbTRzeW1ib2xzIGFzIGEgd2F5IHRvIGdy
YWIgYWxsIGN1cnJlbnQgbWFjcm8gbmFtZXMuICBCdXQKKyMgZHVtcGRlZnMgaXMgbm90IGZyZXF1
ZW50bHkgY2FsbGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0CisjIGNvbmRpdGlv
bmFsbHkgdXNpbmcgdGhlc2UgbmV3ZXIgZmVhdHVyZXMuICBBbHNvLCB0aGlzIHZlcnNpb24KKyMg
ZG9lc24ndCBzb3J0IG11bHRpcGxlIGFyZ3VtZW50cy4KKyMKKyMgSWYgd2UgZGV0ZWN0IG00IDEu
NiBvciBuZXdlciwgdGhlbiBwcm92aWRlIGFuIGFsdGVybmF0ZSBkZWZpbml0aW9uLAorIyBpbnN0
YWxsZWQgZHVyaW5nIG00X2luaXQsIHRoYXQgYWxsb3dzIGJ1aWx0aW5zIHRocm91Z2guCisjIFVu
Zm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIG5pY2Ugd2F5IGluIG00IDEuNC54IHRvIGR1bXAgYnVp
bHRpbnMuCittNF9kZWZpbmUoW200X2R1bXBkZWZdLAorW200X2lmKFskI10sIFswXSwgW200X2Zh
dGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKKyAgICAgICBbJCNdLCBbMV0sIFttNF9pZmRl
ZihbJDFdLCBbbTRfZXJycHJpbnRuKAorICBbJDE6CV1tNF9kcXVvdGUoX200X2RlZm4oWyQxXSkp
KV0sIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0pXSwKKyAgICAgICBbbTRf
bWFwX2FyZ3MoWyQwXSwgJEApXSldKQorCittNF9kZWZpbmUoW19tNF9kdW1wZGVmXSwKK1ttNF9p
ZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRdKV0sCisgICAgICAg
WyQjXSwgWzFdLCBbbTRfYnVpbHRpbihbZHVtcGRlZl0sIFskMV0pXSwKKyAgICAgICBbbTRfbWFw
X2FyZ3Nfc2VwKFttNF9idWlsdGluKFtkdW1wZGVmXSxdLCBbKV0sIFtdLCAkQCldKV0pCisKKwor
IyBtNF9kdW1wZGVmcyhOQU1FLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTaW1pbGFy
IHRvIGBtNF9kdW1wZGVmKE5BTUUpJywgYnV0IGlmIE5BTUUgd2FzIG00X3B1c2hkZWYnZWQsIGRp
c3BsYXkgaXRzCisjIHZhbHVlIHN0YWNrIChtb3N0IHJlY2VudCBkaXNwbGF5ZWQgZmlyc3QpLiAg
QWxzbywgdGhpcyB2ZXJzaW9uIHNpbGVudGx5CisjIGlnbm9yZXMgdW5kZWZpbmVkIG1hY3Jvcywg
cmF0aGVyIHRoYW4gZXJyb3Jpbmcgb3V0LgorIworIyBUaGlzIG1hY3JvIGNoZWF0cywgYmVjYXVz
ZSBpdCByZWxpZXMgb24gdGhlIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiBOQU1FCisjIHdoaWxlIHRo
ZSBzZWNvbmQgYXJndW1lbnQgb2YgbTRfc3RhY2tfZm9yZWFjaF9saWZvIGlzIGV2YWx1YXRlZCAo
d2hpY2gKKyMgd291bGQgYmUgdW5kZWZpbmVkIGFjY29yZGluZyB0byB0aGUgQVBJKS4KK200X2Rl
ZmluZShbbTRfZHVtcGRlZnNdLAorW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlz
c2luZyBhcmd1bWVudF0pXSwKKyAgICAgICBbJCNdLCBbMV0sIFttNF9zdGFja19mb3JlYWNoX2xp
Zm8oWyQxXSwgW200X2R1bXBkZWYoWyQxXSltNF9pZ25vcmVdKV0sCisgICAgICAgW200X21hcF9h
cmdzKFskMF0sICRAKV0pXSkKKworIyBtNF9lc3lzY21kX3MoQ09NTUFORCkKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIExpa2UgbTRfZXN5c2NtZCwgZXhjZXB0IHN0cmlwIGFueSB0cmFpbGlu
ZyBuZXdsaW5lcywgdGh1cyBiZWhhdmluZworIyBtb3JlIGxpa2Ugc2hlbGwgY29tbWFuZCBzdWJz
dGl0dXRpb24uCittNF9kZWZpbmUoW200X2VzeXNjbWRfc10sCitbbTRfY2hvbXBfYWxsKG00X2Vz
eXNjbWQoWyQxXSkpXSkKKworCisjIG00X3BvcGRlZihOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0K
KyMgTGlrZSB0aGUgb3JpZ2luYWwsIGV4Y2VwdCBndWFyYW50ZWUgYSB3YXJuaW5nIHdoZW4gdXNp
bmcgc29tZXRoaW5nIHdoaWNoIGlzCisjIHVuZGVmaW5lZCAodW5saWtlIE00IDEuNC54KS4KKyMK
KyMgVGhpcyBtYWNybyBpcyBjYWxsZWQgZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIGFtb3Vu
dCBvZiBhZGRpdGlvbmFsCisjIGV4cGFuc2lvbnMgYnkgc2tpcHBpbmcgbTRfaWZuZGVmLiAgQmV0
dGVyIHlldCwgaWYgX19tNF92ZXJzaW9uX18gZXhpc3RzLAorIyAoYWRkZWQgaW4gTTQgMS42KSwg
dGhlbiBsZXQgbTQgZG8gdGhlIGpvYiBmb3IgdXMgKHNlZSBtNF9pbml0KS4KK200X2RlZmluZShb
bTRfcG9wZGVmXSwKK1ttNF9pZihbJCNdLCBbMF0sIFtbJDBdXSwKKyAgICAgICBbJCNdLCBbMV0s
IFttNF9pZmRlZihbJDFdLCBbX200X3BvcGRlZihbJDFdKV0sCisJCQkgICAgW200X2ZhdGFsKFsk
MDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAorICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAk
QCldKV0pCisKKworIyBtNF9zaGlmdG4oTiwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBS
ZXR1cm5zIC4uLiBzaGlmdGVkIE4gdGltZXMuICBVc2VmdWwgZm9yIHJlY3Vyc2l2ZSAidmFyYXJn
cyIgY29uc3RydWN0cy4KKyMKKyMgQXV0b2NvbmYgZG9lcyBub3QgdXNlIHRoaXMgbWFjcm8sIGJl
Y2F1c2UgaXQgaXMgaW5oZXJlbnRseSBzbG93ZXIgdGhhbgorIyBjYWxsaW5nIHRoZSBjb21tb24g
Y2FzZXMgb2YgbTRfc2hpZnQyIG9yIG00X3NoaWZ0MyBkaXJlY3RseS4gIEJ1dCBpdAorIyBtaWdo
dCBhcyB3ZWxsIGJlIGZhc3QgZm9yIG90aGVyIGNsaWVudHMsIHN1Y2ggYXMgTGlidG9vbC4gIE9u
ZSB3YXkgdG8KKyMgZG8gdGhpcyBpcyB0byBleHBhbmQgJEAgb25seSBvbmNlIGluIF9tNF9zaGlm
dG4gKG90aGVyd2lzZSwgZm9yIGxvbmcKKyMgbGlzdHMsIHRoZSBleHBhbnNpb24gb2YgbTRfaWYg
dGFrZXMgdHdpY2UgYXMgbXVjaCBtZW1vcnkgYXMgd2hhdCB0aGUKKyMgbGlzdCBpdHNlbGYgb2Nj
dXBpZXMsIG9ubHkgdG8gdGhyb3cgYXdheSB0aGUgdW51c2VkIGJyYW5jaCkuICBUaGUgZW5kCisj
IHJlc3VsdCBpcyBzdHJpY3RseSBlcXVpdmFsZW50IHRvCisjICAgbTRfaWYoWyQxXSwgMSwgW200
X3NoaWZ0KCxtNF9zaGlmdChtNF9zaGlmdCgkQCkpKV0sCisjICAgICAgICAgW19tNF9zaGlmdG4o
bTRfZGVjcihbJDFdKSwgbTRfc2hpZnQobTRfc2hpZnQoJEApKSldKQorIyBidXQgd2l0aCB0aGUg
ZmluYWwgYG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpJyBzaGFyZWQgYmV0d2VlbiB0aGUgdHdvCisj
IHBhdGhzLiAgVGhlIGZpcnN0IGxlZyB1c2VzIGEgbm8tb3AgbTRfc2hpZnQoLCRAKSB0byBiYWxh
bmNlIG91dCB0aGUgKCkuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRo
IGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW200X3NoaWZ0bl0sCitbbTRf
YXNzZXJ0KDAgPCAkMSAmJiAkMSA8ICQjKV8kMCgkQCldKQorCittNF9kZWZpbmUoW19tNF9zaGlm
dG5dLAorW200X2lmKFskMV0sIDEsIFttNF9zaGlmdChdLAorICAgICAgIFskMChtNF9kZWNyKFsk
MV0pXSksIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSkKKworIyBtNF9zaGlmdDIoLi4uKQorIyBt
NF9zaGlmdDMoLi4uKQorIyAtLS0tLS0tLS0tLS0tLQorIyBSZXR1cm5zIC4uLiBzaGlmdGVkIHR3
aWNlLCBhbmQgdGhyZWUgdGltZXMuICBGYXN0ZXIgdGhhbiBtNF9zaGlmdG4uCittNF9kZWZpbmUo
W200X3NoaWZ0Ml0sIFttNF9zaGlmdChtNF9zaGlmdCgkQCkpXSkKK200X2RlZmluZShbbTRfc2hp
ZnQzXSwgW200X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSkKKworIyBfbTRfc2hpZnQy
KC4uLikKKyMgX200X3NoaWZ0MyguLi4pCisjIC0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIG00X3No
aWZ0MiBvciBtNF9zaGlmdDMsIGV4Y2VwdCBpbmNsdWRlIGEgbGVhZGluZyBjb21tYSB1bmxlc3Mg
c2hpZnRpbmcKKyMgY29uc3VtZXMgYWxsIGFyZ3VtZW50cy4gIFdoeT8gIEJlY2F1c2UgaW4gcmVj
dXJzaW9uLCBpdCBpcyBuaWNlIHRvCisjIGRpc3Rpbmd1aXNoIGJldHdlZW4gMSBlbGVtZW50IGxl
ZnQgYW5kIDAgZWxlbWVudHMgbGVmdCwgYmFzZWQgb24gaG93IG1hbnkKKyMgYXJndW1lbnRzIHRo
aXMgc2hpZnQgZXhwYW5kcyB0by4KK200X2RlZmluZShbX200X3NoaWZ0Ml0sCitbbTRfaWYoWyQj
XSwgWzJdLCBbXSwKKyAgICAgICBbLCBtNF9zaGlmdChtNF9zaGlmdCgkQCkpXSldKQorbTRfZGVm
aW5lKFtfbTRfc2hpZnQzXSwKK1ttNF9pZihbJCNdLCBbM10sIFtdLAorICAgICAgIFssIG00X3No
aWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSldKQorCisKKyMgbTRfdW5kZWZpbmUoTkFNRSkK
KyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSB0aGUgb3JpZ2luYWwsIGV4Y2VwdCBndWFyYW50
ZWUgYSB3YXJuaW5nIHdoZW4gdXNpbmcgc29tZXRoaW5nIHdoaWNoIGlzCisjIHVuZGVmaW5lZCAo
dW5saWtlIE00IDEuNC54KS4KKyMKKyMgVGhpcyBtYWNybyBpcyBjYWxsZWQgZnJlcXVlbnRseSwg
c28gbWluaW1pemUgdGhlIGFtb3VudCBvZiBhZGRpdGlvbmFsCisjIGV4cGFuc2lvbnMgYnkgc2tp
cHBpbmcgbTRfaWZuZGVmLiAgQmV0dGVyIHlldCwgaWYgX19tNF92ZXJzaW9uX18gZXhpc3RzLAor
IyAoYWRkZWQgaW4gTTQgMS42KSwgdGhlbiBsZXQgbTQgZG8gdGhlIGpvYiBmb3IgdXMgKHNlZSBt
NF9pbml0KS4KK200X2RlZmluZShbbTRfdW5kZWZpbmVdLAorW200X2lmKFskI10sIFswXSwgW1sk
MF1dLAorICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFtfbTRfdW5kZWZpbmUoWyQx
XSldLAorCQkJICAgIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0pXSwKKyAg
ICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSldKQorCisjIF9tNF93cmFwKFBSRSwgUE9TVCkK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBIZWxwZXIgbWFjcm8gZm9yIG00X3dyYXAgYW5kIG00
X3dyYXBfbGlmby4gIEFsbG93cyBuZXN0ZWQgY2FsbHMgdG8KKyMgbTRfd3JhcCB3aXRoaW4gd3Jh
cHBlZCB0ZXh0LiAgVXNlIF9tNF9kZWZuIGFuZCBfbTRfcG9wZGVmIGZvciBzcGVlZC4KK200X2Rl
ZmluZShbX200X3dyYXBdLAorW200X2lmZGVmKFskMF90ZXh0XSwKKwkgIFttNF9kZWZpbmUoWyQw
X3RleHRdLCBbJDFdX200X2RlZm4oWyQwX3RleHRdKVskMl0pXSwKKwkgIFttNF9idWlsdGluKFtt
NHdyYXBdLCBbbTRfdW5xdW90ZSgKKyAgX200X2RlZm4oWyQwX3RleHRdKV9tNF9wb3BkZWYoWyQw
X3RleHRdKSldKW00X2RlZmluZShbJDBfdGV4dF0sIFskMSQyXSldKV0pCisKKyMgbTRfd3JhcChU
RVhUKQorIyAtLS0tLS0tLS0tLS0tCisjIEFwcGVuZCBURVhUIHRvIHRoZSBsaXN0IG9mIGhvb2tz
IHRvIGJlIGV4ZWN1dGVkIGF0IHRoZSBlbmQgb2YgaW5wdXQuCisjIFdoZXJlYXMgdGhlIG9yZGVy
IG9mIHRoZSBvcmlnaW5hbCBtYXkgYmUgTElGTyBpbiB0aGUgdW5kZXJseWluZyBtNCwKKyMgdGhp
cyB2ZXJzaW9uIGlzIGFsd2F5cyBGSUZPLgorbTRfZGVmaW5lKFttNF93cmFwXSwKK1tfbTRfd3Jh
cChbXSwgWyQxW11dKV0pCisKKyMgbTRfd3JhcF9saWZvKFRFWFQpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLQorIyBQcmVwZW5kIFRFWFQgdG8gdGhlIGxpc3Qgb2YgaG9va3MgdG8gYmUgZXhlY3V0ZWQg
YXQgdGhlIGVuZCBvZiBpbnB1dC4KKyMgV2hlcmVhcyB0aGUgb3JkZXIgb2YgbTRfd3JhcCBtYXkg
YmUgRklGTyBpbiB0aGUgdW5kZXJseWluZyBtNCwgdGhpcworIyB2ZXJzaW9uIGlzIGFsd2F5cyBM
SUZPLgorbTRfZGVmaW5lKFttNF93cmFwX2xpZm9dLAorW19tNF93cmFwKFskMVtdXSldKQorCisj
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyA3LiBRdW90aW5nIG1hbmlwdWxhdGlv
bi4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBtNF9hcHBseShN
QUNSTywgTElTVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEludm9rZSBNQUNSTywgd2l0
aCBhcmd1bWVudHMgcHJvdmlkZWQgZnJvbSB0aGUgcXVvdGVkIGxpc3Qgb2YKKyMgY29tbWEtc2Vw
YXJhdGVkIHF1b3RlZCBhcmd1bWVudHMuICBJZiBMSVNUIGlzIGVtcHR5LCBpbnZva2UgTUFDUk8K
KyMgd2l0aG91dCBhcmd1bWVudHMuICBUaGUgZXhwYW5zaW9uIHdpbGwgbm90IGJlIGNvbmNhdGVu
YXRlZCB3aXRoCisjIHN1YnNlcXVlbnQgdGV4dC4KK200X2RlZmluZShbbTRfYXBwbHldLAorW200
X2lmKFskMl0sIFtdLCBbJDFdLCBbJDEoJDIpXSlbXV0pCisKKyMgX200X2FwcGx5KE1BQ1JPLCBM
SVNUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpa2UgbTRfYXBwbHksIGV4Y2VwdCBk
byBub3RoaW5nIGlmIExJU1QgaXMgZW1wdHkuCittNF9kZWZpbmUoW19tNF9hcHBseV0sCitbbTRf
aWYoWyQyXSwgW10sIFtdLCBbJDEoJDIpW11dKV0pCisKKworIyBtNF9jb3VudChBUkdTKQorIyAt
LS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gYSBjb3VudCBvZiBob3cgbWFueSBBUkdTIGFyZSBwcmVz
ZW50LgorbTRfZGVmaW5lKFttNF9jb3VudF0sIFskI10pCisKKworIyBtNF9jdXJyeShNQUNSTywg
QVJHLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQZXJmb3JtIGFyZ3VtZW50IGN1
cnJ5aW5nLiAgVGhlIGV4cGFuc2lvbiBvZiB0aGlzIG1hY3JvIGlzIGFub3RoZXIKKyMgbWFjcm8g
dGhhdCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgYXBwZW5kcyBpdCB0byB0aGUgZW5kIG9m
IHRoZQorIyBvcmlnaW5hbCBBUkcgbGlzdCwgdGhlbiBpbnZva2VzIE1BQ1JPLiAgRm9yIGV4YW1w
bGU6CisjICAgbTRfY3VycnkoW200X2N1cnJ5XSwgW200X3JldmVyc2VdLCBbMV0pKFsyXSkoWzNd
KSA9PiAzLCAyLCAxCisjIE5vdCBxdWl0ZSBhcyBwcmFjdGljYWwgYXMgbTRfaW5jciwgYnV0IHlv
dSBjb3VsZCBhbHNvIGRvOgorIyAgIG00X2RlZmluZShbYWRkXSwgW200X2V2YWwoKFskMV0pICsg
KFskMl0pKV0pCisjICAgbTRfZGVmaW5lKFthZGRfb25lXSwgW200X2N1cnJ5KFthZGRdLCBbMV0p
XSkKKyMgICBhZGRfb25lKCkoWzJdKSA9PiAzCittNF9kZWZpbmUoW200X2N1cnJ5XSwgWyQxKG00
X3NoaWZ0KCRALClfJDBdKQorbTRfZGVmaW5lKFtfbTRfY3VycnldLCAgICAgICAgICAgICAgIFtb
JDFdKV0pCisKKworIyBtNF9kbyhTVFJJTkcsIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisj
IFRoaXMgbWFjcm8gaW52b2tlcyBhbGwgaXRzIGFyZ3VtZW50cyAoaW4gc2VxdWVuY2UsIG9mIGNv
dXJzZSkuICBJdCBpcworIyB1c2VmdWwgZm9yIG1ha2luZyB5b3VyIG1hY3JvcyBtb3JlIHN0cnVj
dHVyZWQgYW5kIHJlYWRhYmxlIGJ5IGRyb3BwaW5nCisjIHVubmVjZXNzYXJ5IGRubCdzIGFuZCBo
YXZlIHRoZSBtYWNyb3MgaW5kZW50ZWQgcHJvcGVybHkuICBObyBjb25jYXRlbmF0aW9uCisjIG9j
Y3VycyBhZnRlciBhIFNUUklORzsgdXNlIG00X3VucXVvdGUobTRfam9pbigsU1RSSU5HKSkgZm9y
IHRoYXQuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1
c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW200X2RvXSwKK1ttNF9pZihbJCNdLCAwLCBb
XSwKKyAgICAgICBbJCNdLCAxLCBbJDFbXV0sCisgICAgICAgWyQxW10kMChtNF9zaGlmdCgkQCkp
XSldKQorCisKKyMgbTRfZHF1b3RlKEFSR1MpCisjIC0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4g
QVJHUyBhcyBhIHF1b3RlZCBsaXN0IG9mIHF1b3RlZCBhcmd1bWVudHMuCittNF9kZWZpbmUoW200
X2RxdW90ZV0sICBbWyRAXV0pCisKKworIyBtNF9kcXVvdGVfZWx0KEFSR1MpCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0KKyMgUmV0dXJuIEFSR1MgYXMgYW4gdW5xdW90ZWQgbGlzdCBvZiBkb3VibGUt
cXVvdGVkIGFyZ3VtZW50cy4KKyMKKyMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdp
dGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200X2RlZmluZShbbTRfZHF1b3RlX2VsdF0s
CitbbTRfaWYoWyQjXSwgWzBdLCBbXSwKKyAgICAgICBbJCNdLCBbMV0sIFtbWyQxXV1dLAorICAg
ICAgIFtbWyQxXV0sJDAobTRfc2hpZnQoJEApKV0pXSkKKworCisjIG00X2VjaG8oQVJHUykKKyMg
LS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gdGhlIEFSR1MsIHdpdGggdGhlIHNhbWUgbGV2ZWwgb2Yg
cXVvdGluZy4gIFdoaXRlc3BhY2UgYWZ0ZXIKKyMgdW5xdW90ZWQgY29tbWFzIGFyZSBjb25zdW1l
ZC4KK200X2RlZmluZShbbTRfZWNob10sIFskQF0pCisKKworIyBtNF9leHBhbmQoQVJHKQorIyBf
bTRfZXhwYW5kKEFSRykKKyMgLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybiB0aGUgZXhwYW5zaW9u
IG9mIEFSRyBhcyBhIHNpbmdsZSBzdHJpbmcuICBVbmxpa2UKKyMgbTRfcXVvdGUoJDEpLCB0aGlz
IHByZXNlcnZlcyB3aGl0ZXNwYWNlIGZvbGxvd2luZyBzaW5nbGUtcXVvdGVkCisjIGNvbW1hcyB0
aGF0IGFwcGVhciB3aXRoaW4gQVJHLiAgSXQgYWxzbyBkZWFscyB3aXRoIHNoZWxsIGNhc2UKKyMg
c3RhdGVtZW50cy4KKyMKKyMgICBtNF9kZWZpbmUoW2FjdGl2ZV0sIFtBQ1QsIElWRV0pCisjICAg
bTRfZGVmaW5lKFthY3RpdmUyXSwgW1tBQ1QsIElWRV1dKQorIyAgIG00X3F1b3RlKGFjdGl2ZSwg
YWN0aXZlMikKKyMgICA9PiBBQ1QsSVZFLEFDVCwgSVZFCisjICAgbTRfZXhwYW5kKFthY3RpdmUs
IGFjdGl2ZTJdKQorIyAgID0+IEFDVCwgSVZFLCBBQ1QsIElWRQorIworIyBVbmZvcnR1bmF0ZWx5
LCBkdWUgdG8gbGltaXRhdGlvbnMgaW4gbTQsIEFSRyBtdXN0IGV4cGFuZCB0bworIyBzb21ldGhp
bmcgd2l0aCBiYWxhbmNlZCBxdW90ZXMgKHVzZSBxdWFkcmlncmFwaHMgdG8gZ2V0IGFyb3VuZAor
IyB0aGlzKSwgYW5kIHNob3VsZCBub3QgY29udGFpbiB0aGUgdW5saWtlbHkgZGVsaW1pdGVycyAt
PTx7KCBvcgorIyApfT49LS4gIEl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgdW5iYWxhbmNlZCBxdW90
ZWQgYCgnIG9yIGApJywgYXMgd2VsbAorIyBhcyB1bmJhbGFuY2VkIHVucXVvdGVkIGApJy4gIG00
X2V4cGFuZCBjYW4gaGFuZGxlIHVudGVybWluYXRlZAorIyBjb21tZW50cyBvciBkbmwgb24gdGhl
IGZpbmFsIGxpbmUsIGF0IHRoZSBleHBlbnNlIG9mIHNwZWVkOyBpdCBhbHNvCisjIGFpZHMgaW4g
ZGV0ZWN0aW5nIGF0dGVtcHRzIHRvIGluY29ycmVjdGx5IGNoYW5nZSB0aGUgY3VycmVudAorIyBk
aXZlcnNpb24gaW5zaWRlIEFSRy4gIE1lYW53aGlsZSwgX200X2V4cGFuZCBpcyBmYXN0ZXIgYnV0
IG11c3QgYmUKKyMgZ2l2ZW4gYSB0ZXJtaW5hdGVkIGV4cGFuc2lvbiwgYW5kIGhhcyBubyBzYWZl
dHkgY2hlY2tzIGZvcgorIyBtaXMtZGl2ZXJ0ZWQgdGV4dC4KKyMKKyMgRXhwbG9pdCB0aGF0IGV4
dHJhIHVucXVvdGVkICgpIHdpbGwgZ3JvdXAgdW5xdW90ZWQgY29tbWFzIGFuZCB0aGUKKyMgZm9s
bG93aW5nIHdoaXRlc3BhY2UuICBtNF9icGF0c3Vic3QgY2FuJ3QgaGFuZGxlIG5ld2xpbmVzIGlu
c2lkZSAkMSwKKyMgYW5kIG00X3N1YnN0ciBzdHJpcHMgcXVvdGluZy4gIFNvIHdlIChhYil1c2Ug
bTRfY2hhbmdlcXVvdGUsIHVzaW5nCisjIHRlbXBvcmFyeSBxdW90ZXMgdG8gcmVtb3ZlIHRoZSBk
ZWxpbWl0ZXJzIHRoYXQgY29udmVuaWVudGx5IGluY2x1ZGVkCisjIHRoZSB1bnF1b3RlZCAoKSB0
aGF0IHdlcmUgYWRkZWQgcHJpb3IgdG8gdGhlIGNoYW5nZXF1b3RlLgorIworIyBUaGFua3MgdG8g
c2hlbGwgY2FzZSBzdGF0ZW1lbnRzLCB0b28gbWFueSBwZW9wbGUgYXJlIHByb25lIHRvIHBhc3MK
KyMgdW5kZXJxdW90ZWQgYCknLCBzbyB3ZSB0cnkgdG8gZGV0ZWN0IHRoYXQgYnkgcGFzc2luZyBh
IG1hcmtlciBhcyBhCisjIGZvdXJ0aCBhcmd1bWVudDsgaWYgdGhlIG1hcmtlciBpcyBub3QgcHJl
c2VudCwgdGhlbiB3ZSBhc3N1bWUgdGhhdAorIyB3ZSBlbmNvdW50ZXJlZCBhbiBlYXJseSBgKScs
IGFuZCByZS1leHBhbmQgdGhlIGZpcnN0IGFyZ3VtZW50LCBidXQKKyMgdGhpcyB0aW1lIHdpdGgg
b25lIG1vcmUgYCgnIGluIHRoZSBzZWNvbmQgYXJndW1lbnQgYW5kIGluIHRoZQorIyBvcGVuLXF1
b3RlIGRlbGltaXRlci4gIFdlIG11c3QgYWxzbyBpZ25vcmUgdGhlIHNsb3AgZnJvbSB0aGUKKyMg
cHJldmlvdXMgdHJ5LiAgVGhlIGZpbmFsIG1hY3JvIGlzIHRodXMgaGFsZiBsaW5lLW5vaXNlLCBo
YWxmIGFydC4KK200X2RlZmluZShbbTRfZXhwYW5kXSwKK1ttNF9wdXNoZGVmKFttNF9kaXZlcnRd
LCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSldZG5sCitbbTRfcHVzaGRlZihbbTRfZGl2
ZXJ0X3B1c2hdLCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSldZG5sCitbbTRfY2hvbXAo
XyQwKFskMQorXSkpX200X3BvcGRlZihbbTRfZGl2ZXJ0XSwgW200X2RpdmVydF9wdXNoXSldKQor
CittNF9kZWZpbmUoW19tNF9leHBhbmRdLCBbJDBfKFskMV0sIFsoXSwgLT08eygkMSl9Pj0tLCBb
fT49LV0pXSkKKworbTRfZGVmaW5lKFtfbTRfZXhwYW5kX10sCitbbTRfaWYoWyQ0XSwgW30+PS1d
LAorICAgICAgIFttNF9jaGFuZ2VxdW90ZShbLT08eyQyXSwgWyl9Pj0tXSkkM200X2NoYW5nZXF1
b3RlKFssIF0pXSwKKyAgICAgICBbJDAoWyQxXSwgWygkMl0sIC09PHsoJDIkMSl9Pj0tLCBbfT49
LV0pbTRfaWdub3JlJDJdKV0pCisKKworIyBtNF9pZ25vcmUoQVJHUykKKyMgLS0tLS0tLS0tLS0t
LS0tCisjIEV4cGFuZHMgdG8gbm90aGluZy4gIFVzZWZ1bCBmb3IgY29uZGl0aW9uYWxseSBpZ25v
cmluZyBhbiBhcmJpdHJhcnkKKyMgbnVtYmVyIG9mIGFyZ3VtZW50cyAoc2VlIF9tNF9saXN0X2Nt
cCBmb3IgYW4gZXhhbXBsZSkuCittNF9kZWZpbmUoW200X2lnbm9yZV0pCisKKworIyBtNF9tYWtl
X2xpc3QoQVJHUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNpbWlsYXIgdG8gbTRfZHF1b3Rl
LCB0aGlzIGNyZWF0ZXMgYSBxdW90ZWQgbGlzdCBvZiBxdW90ZWQgQVJHUy4gIFRoaXMKKyMgdmVy
c2lvbiBpcyBsZXNzIGVmZmljaWVudCB0aGFuIG00X2RxdW90ZSwgYnV0IHNlcGFyYXRlcyBlYWNo
IGFyZ3VtZW50CisjIHdpdGggYSBjb21tYSBhbmQgbmV3bGluZSwgcmF0aGVyIHRoYW4ganVzdCBj
b21tYSwgZm9yIHJlYWRhYmlsaXR5LgorIyBXaGVuIGRldmVsb3BpbmcgYW4gbTRzdWdhciBhbGdv
cml0aG0sIHlvdSBjb3VsZCB0ZW1wb3JhcmlseSB1c2UKKyMgICBtNF9wdXNoZGVmKFttNF9kcXVv
dGVdLG00X2RlZm4oW200X21ha2VfbGlzdF0pKQorIyBhcm91bmQgeW91ciBjb2RlIHRvIG1ha2Ug
ZGVidWdnaW5nIGVhc2llci4KK200X2RlZmluZShbbTRfbWFrZV9saXN0XSwgW200X2pvaW4oWywK
K10sIG00X2RxdW90ZV9lbHQoJEApKV0pCisKKworIyBtNF9ub3F1b3RlKFNUUklORykKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tCisjIFJldHVybiB0aGUgcmVzdWx0IG9mIGlnbm9yaW5nIGFsbCBxdW90
ZXMgaW4gU1RSSU5HIGFuZCBpbnZva2luZyB0aGUKKyMgbWFjcm9zIGl0IGNvbnRhaW5zLiAgQW1v
bmcgb3RoZXIgdGhpbmdzLCB0aGlzIGlzIHVzZWZ1bCBmb3IgZW5hYmxpbmcKKyMgbWFjcm8gaW52
b2NhdGlvbnMgaW5zaWRlIHN0cmluZ3Mgd2l0aCBbXSBibG9ja3MgKGZvciBpbnN0YW5jZSByZWdl
eHBzCisjIGFuZCBoZWxwLXN0cmluZ3MpLiAgT24gdGhlIG90aGVyIGhhbmQsIHNpbmNlIGFsbCBx
dW90ZXMgYXJlIGRpc2FibGVkLAorIyBhbnkgbWFjcm8gZXhwYW5kZWQgZHVyaW5nIHRoaXMgdGlt
ZSB0aGF0IHJlbGllcyBvbiBuZXN0ZWQgW10gcXVvdGluZworIyB3aWxsIGxpa2VseSBjcmFzaCBh
bmQgYnVybi4gIFRoaXMgbWFjcm8gaXMgc2VsZG9tIHVzZWZ1bDsgY29uc2lkZXIKKyMgbTRfdW5x
dW90ZSBvciBtNF9leHBhbmQgaW5zdGVhZC4KK200X2RlZmluZShbbTRfbm9xdW90ZV0sCitbbTRf
Y2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKSQxLT08eygpfT49LW00X2NoYW5nZXF1b3RlKFss
XSldKQorCisKKyMgbTRfcXVvdGUoQVJHUykKKyMgLS0tLS0tLS0tLS0tLS0KKyMgUmV0dXJuIEFS
R1MgYXMgYSBzaW5nbGUgYXJndW1lbnQuICBBbnkgd2hpdGVzcGFjZSBhZnRlciB1bnF1b3RlZCBj
b21tYXMKKyMgaXMgc3RyaXBwZWQuICBUaGVyZSBpcyBhbHdheXMgb3V0cHV0LCBldmVuIHdoZW4g
dGhlcmUgd2VyZSBubyBhcmd1bWVudHMuCisjCisjIEl0IGlzIGltcG9ydGFudCB0byByZWFsaXpl
IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYG00X3F1b3RlKGV4cCknIGFuZAorIyBgW2V4cF0nOiBp
biB0aGUgZmlyc3QgY2FzZSB5b3Ugb2J0YWluIHRoZSBxdW90ZWQgKnJlc3VsdCogb2YgdGhlCisj
IGV4cGFuc2lvbiBvZiBFWFAsIHdoaWxlIGluIHRoZSBsYXR0ZXIgeW91IGp1c3Qgb2J0YWluIHRo
ZSBzdHJpbmcKKyMgYGV4cCcuCittNF9kZWZpbmUoW200X3F1b3RlXSwgIFtbJCpdXSkKKworCisj
IF9tNF9xdW90ZShBUkdTKQorIyAtLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBtNF9xdW90ZSwgZXhj
ZXB0IHRoYXQgd2hlbiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzLCB0aGVyZSBpcyBubworIyBvdXRw
dXQuICBGb3IgY29uZGl0aW9uYWwgc2NlbmFyaW9zIChzdWNoIGFzIHBhc3NpbmcgX200X3F1b3Rl
IGFzIHRoZQorIyBtYWNybyBuYW1lIGluIG00X21hcGFsbCksIHRoaXMgZmVhdHVyZSBjYW4gYmUg
dXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisjIG9uZSBhcmd1bWVudCBvZiB0aGUgZW1wdHkg
c3RyaW5nIHZzLiBubyBhcmd1bWVudHMuICBIb3dldmVyLCBpbiB0aGUKKyMgbm9ybWFsIGNhc2Ug
d2l0aCBhcmd1bWVudHMgcHJlc2VudCwgdGhpcyBpcyBsZXNzIGVmZmljaWVudCB0aGFuIG00X3F1
b3RlLgorbTRfZGVmaW5lKFtfbTRfcXVvdGVdLAorW200X2lmKFskI10sIFswXSwgW10sIFtbJCpd
XSldKQorCisKKyMgbTRfcmV2ZXJzZShBUkdTKQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1
dCBBUkdTIGluIHJldmVyc2Ugb3JkZXIuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4g
c3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW200X3JldmVy
c2VdLAorW200X2lmKFskI10sIFswXSwgW10sIFskI10sIFsxXSwgW1skMV1dLAorICAgICAgIFsk
MChtNF9zaGlmdCgkQCkpLCBbJDFdXSldKQorCisKKyMgbTRfdW5xdW90ZShBUkdTKQorIyAtLS0t
LS0tLS0tLS0tLS0tCisjIFJlbW92ZSBvbmUgbGF5ZXIgb2YgcXVvdGVzIGZyb20gZWFjaCBBUkcs
IHBlcmZvcm1pbmcgb25lIGxldmVsIG9mCisjIGV4cGFuc2lvbi4gIEZvciBvbmUgYXJndW1lbnQs
IG00X3VucXVvdGUoW2FyZ10pIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4KKyMgbTRfZG8oW2FyZ10p
LCBidXQgZm9yIG11bHRpcGxlIGFyZ3VtZW50cywgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdAorIyBt
NF91bnF1b3RlIHNlcGFyYXRlcyBhcmd1bWVudHMgd2l0aCBjb21tYXMgd2hpbGUgbTRfZG8gY29u
Y2F0ZW5hdGVzLgorIyBGb2xsb3cgdGhpcyBtYWNybyB3aXRoIFtdIGlmIGNvbmNhdGVuYXRpb24g
d2l0aCBzdWJzZXF1ZW50IHRleHQgaXMKKyMgdW5kZXNpcmVkLgorbTRfZGVmaW5lKFttNF91bnF1
b3RlXSwgWyQqXSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgOC4g
SW1wbGVtZW50aW5nIG00IGxvb3BzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICMjCisKKworIyBtNF9mb3IoVkFSSUFCTEUsIEZJUlNULCBMQVNULCBbU1RFUCA9ICsvLTFdLCBF
WFBSRVNTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorIyBFeHBhbmQgRVhQUkVTU0lPTiBkZWZpbmluZyBWQVJJQUJMRSB0byBG
Uk9NLCBGUk9NICsgMSwgLi4uLCBUTyB3aXRoCisjIGluY3JlbWVudHMgb2YgU1RFUC4gIEJvdGgg
bGltaXRzIGFyZSBpbmNsdWRlZCwgYW5kIGJvdW5kcyBhcmUKKyMgY2hlY2tlZCBmb3IgY29uc2lz
dGVuY3kuICBUaGUgYWxnb3JpdGhtIGlzIHJvYnVzdCB0byBpbmRpcmVjdAorIyBWQVJJQUJMRSBu
YW1lcy4gIENoYW5naW5nIFZBUklBQkxFIGluc2lkZSBFWFBSRVNTSU9OIHdpbGwgbm90IGltcGFj
dAorIyB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMuCisjCisjIFVzZXMgX200X2RlZm4gZm9yIHNw
ZWVkLCBhbmQgYXZvaWQgZG5sIGluIHRoZSBtYWNybyBib2R5LiAgRmFjdG9yCisjIHRoZSBfbTRf
Zm9yIGNhbGwgc28gdGhhdCBFWFBSRVNTSU9OIGlzIG9ubHkgcGFyc2VkIG9uY2UuCittNF9kZWZp
bmUoW200X2Zvcl0sCitbbTRfcHVzaGRlZihbJDFdLCBtNF9ldmFsKFskMl0pKV1kbmwKK1ttNF9j
b25kKFttNF9ldmFsKChbJDNdKSA+IChbJDJdKSldLCAxLAorCSAgIFttNF9wdXNoZGVmKFtfbTRf
c3RlcF0sIG00X2V2YWwobTRfZGVmYXVsdF9xdW90ZWQoWyQ0XSwKKwkgICAgICAxKSkpbTRfYXNz
ZXJ0KF9tNF9zdGVwID4gMClfJDAoX200X2RlZm4oWyQxXSksCisgIG00X2V2YWwoKChbJDNdKSAt
IChbJDJdKSkgLyBfbTRfc3RlcCAqIF9tNF9zdGVwICsgKFskMl0pKSwgX200X3N0ZXAsXSwKKwkg
W200X2V2YWwoKFskM10pIDwgKFskMl0pKV0sIDEsCisJICAgW200X3B1c2hkZWYoW19tNF9zdGVw
XSwgbTRfZXZhbChtNF9kZWZhdWx0X3F1b3RlZChbJDRdLAorCSAgICAgIC0xKSkpbTRfYXNzZXJ0
KF9tNF9zdGVwIDwgMClfJDAoX200X2RlZm4oWyQxXSksCisgIG00X2V2YWwoKChbJDJdKSAtIChb
JDNdKSkgLyAtKF9tNF9zdGVwKSAqIF9tNF9zdGVwICsgKFskMl0pKSwgX200X3N0ZXAsXSwKKwkg
W200X3B1c2hkZWYoW19tNF9zdGVwXSlfJDAoX200X2RlZm4oWyQxXSksIF9tNF9kZWZuKFskMV0p
LCAwLF0pXWRubAorW1ttNF9kZWZpbmUoWyQxXSxdLCBbKSQ1XSltNF9wb3BkZWYoW19tNF9zdGVw
XSwgWyQxXSldKQorCisjIF9tNF9mb3IoQ09VTlQsIExBU1QsIFNURVAsIFBSRSwgUE9TVCkKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3JlIG9mIHRoZSBsb29w
LCBubyBjb25zaXN0ZW5jeSBjaGVja3MsIGFsbCBhcmd1bWVudHMgYXJlIHBsYWluCisjIG51bWJl
cnMuICBFeHBhbmQgUFJFW0NPVU5UXVBPU1QsIHRoZW4gYWx0ZXIgQ09VTlQgYnkgU1RFUCBhbmQK
KyMgaXRlcmF0ZSBpZiBDT1VOVCBpcyBub3QgTEFTVC4KK200X2RlZmluZShbX200X2Zvcl0sCitb
JDRbJDFdJDVbXW00X2lmKFskMV0sIFskMl0sIFtdLAorCQkgWyQwKG00X2V2YWwoWyQxICsgJDNd
KSwgWyQyXSwgWyQzXSwgWyQ0XSwgWyQ1XSldKV0pCisKKworIyBJbXBsZW1lbnRpbmcgYGZvcmVh
Y2gnIGxvb3BzIGluIG00IGlzIG11Y2ggbW9yZSB0cmlja3kgdGhhbiBpdCBtYXkKKyMgc2VlbS4g
IEZvciBleGFtcGxlLCB0aGUgb2xkIE00IDEuNC40IG1hbnVhbCBoYWQgYW4gaW5jb3JyZWN0IGV4
YW1wbGUsCisjIHdoaWNoIGxvb2tlZCBsaWtlIHRoaXMgKHdoZW4gdHJhbnNsYXRlZCB0byBtNHN1
Z2FyKToKKyMKKyMgfCAjIGZvcmVhY2goVkFSLCAoTElTVCksIFNUTVQpCisjIHwgbTRfZGVmaW5l
KFtmb3JlYWNoXSwKKyMgfCAgIFttNF9wdXNoZGVmKFskMV0pX2ZvcmVhY2goWyQxXSwgWyQyXSwg
WyQzXSltNF9wb3BkZWYoWyQxXSldKQorIyB8IG00X2RlZmluZShbX2FyZzFdLCBbJDFdKQorIyB8
IG00X2RlZmluZShbX2ZvcmVhY2hdLAorIyB8ICAgW200X2lmKFskMl0sIFsoKV0sICwKKyMgfCAg
ICAgW200X2RlZmluZShbJDFdLCBfYXJnMSQyKSQzW11fZm9yZWFjaChbJDFdLCAobTRfc2hpZnQk
MiksIFskM10pXSldKQorIworIyBCdXQgdGhlbiBpZiB5b3UgcnVuCisjCisjIHwgbTRfZGVmaW5l
KGEsIDEpCisjIHwgbTRfZGVmaW5lKGIsIDIpCisjIHwgbTRfZGVmaW5lKGMsIDMpCisjIHwgZm9y
ZWFjaChbZl0sIFsoW2FdLCBbKGJdLCBbYyldKV0sIFtlY2hvIGYKKyMgfCBdKQorIworIyBpdCBn
aXZlcworIworIyAgPT4gZWNobyAxCisjICA9PiBlY2hvICgyLDMpCisjCisjIHdoaWNoIGlzIG5v
dCB3aGF0IGlzIGV4cGVjdGVkLgorIworIyBPZiBjb3Vyc2UgdGhlIHByb2JsZW0gaXMgdGhhdCBt
YW55IHF1b3RlcyBhcmUgbWlzc2luZy4gIFNvIHlvdSBhZGQKKyMgcGxlbnR5IG9mIHF1b3RlcyBh
dCByYW5kb20gcGxhY2VzLCB1bnRpbCB5b3UgcmVhY2ggdGhlIGV4cGVjdGVkCisjIHJlc3VsdC4g
IEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgYSBxdW90aW5nIHdpemFyZCwgeW91IGRpcmVjdGx5
CisjIHJlYWNoIHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gKGJ1dCBpZiB5b3UgcmVhbGx5
IGRpZCwgdGhlbgorIyBhcHBseSB0byB0aGUgbWFpbnRlbmFuY2Ugb2YgbTRzdWdhciEpLgorIwor
IyB8ICMgZm9yZWFjaChWQVIsIChMSVNUKSwgU1RNVCkKKyMgfCBtNF9kZWZpbmUoW2ZvcmVhY2hd
LCBbbTRfcHVzaGRlZihbJDFdKV9mb3JlYWNoKCRAKW00X3BvcGRlZihbJDFdKV0pCisjIHwgbTRf
ZGVmaW5lKFtfYXJnMV0sIFtbJDFdXSkKKyMgfCBtNF9kZWZpbmUoW19mb3JlYWNoXSwKKyMgfCAg
W200X2lmKCQyLCBbKCldLCAsCisjIHwgICAgW200X2RlZmluZShbJDFdLCBbX2FyZzEkMl0pJDNb
XV9mb3JlYWNoKFskMV0sIFsobTRfc2hpZnQkMildLCBbJDNdKV0pXSkKKyMKKyMgd2hpY2ggdGhp
cyB0aW1lIGFuc3dlcnMKKyMKKyMgID0+IGVjaG8gYQorIyAgPT4gZWNobyAoYgorIyAgPT4gZWNo
byBjKQorIworIyBCaW5nbyEKKyMKKyMgV2VsbCwgbm90IHF1aXRlLgorIworIyBXaXRoIGEgYmV0
dGVyIGxvb2ssIHlvdSByZWFsaXplIHRoYXQgdGhlIHBhcmVucyBhcmUgbW9yZSBhIHBhaW4gdGhh
bgorIyBhIGhlbHA6IHNpbmNlIGFueXdheSB5b3UgbmVlZCB0byBxdW90ZSBwcm9wZXJseSB0aGUg
bGlzdCwgeW91IGVuZCB1cAorIyB3aXRoIGFsd2F5cyB1c2luZyBhbiBvdXRlcm1vc3QgcGFpciBv
ZiBwYXJlbnMgYW5kIGFuIG91dGVybW9zdCBwYWlyCisjIG9mIHF1b3Rlcy4gIFJlamVjdGluZyB0
aGUgcGFyZW5zIGJvdGggZWFzZXMgdGhlIGltcGxlbWVudGF0aW9uLCBhbmQKKyMgc2ltcGxpZmll
cyB0aGUgdXNlOgorIworIyB8ICMgZm9yZWFjaChWQVIsIChMSVNUKSwgU1RNVCkKKyMgfCBtNF9k
ZWZpbmUoW2ZvcmVhY2hdLCBbbTRfcHVzaGRlZihbJDFdKV9mb3JlYWNoKCRAKW00X3BvcGRlZihb
JDFdKV0pCisjIHwgbTRfZGVmaW5lKFtfYXJnMV0sIFskMV0pCisjIHwgbTRfZGVmaW5lKFtfZm9y
ZWFjaF0sCisjIHwgIFttNF9pZigkMiwgW10sICwKKyMgfCAgICBbbTRfZGVmaW5lKFskMV0sIFtf
YXJnMSgkMildKSQzW11fZm9yZWFjaChbJDFdLCBbbTRfc2hpZnQoJDIpXSwgWyQzXSldKV0pCisj
CisjCisjIE5vdywganVzdCByZXBsYWNlIHRoZSBgJDInIHdpdGggYG00X3F1b3RlKCQyKScgaW4g
dGhlIG91dGVyIGBtNF9pZicKKyMgdG8gaW1wcm92ZSByb2J1c3RuZXNzLCBhbmQgeW91IGNvbWUg
dXAgd2l0aCBhIG5pY2UgaW1wbGVtZW50YXRpb24KKyMgdGhhdCBkb2Vzbid0IHJlcXVpcmUgZXh0
cmEgcGFyZW50aGVzZXMgaW4gdGhlIHVzZXIncyBMSVNULgorIworIyBCdXQgd2FpdCAtICBub3cg
dGhlIGFsZ29yaXRobSBpcyBxdWFkcmF0aWMsIGJlY2F1c2UgZXZlcnkgcmVjdXJzaW9uIG9mCisj
IHRoZSBhbGdvcml0aG0ga2VlcHMgdGhlIGVudGlyZSBMSVNUIGFuZCBtZXJlbHkgYWRkcyBhbm90
aGVyIG00X3NoaWZ0IHRvCisjIHRoZSBxdW90ZWQgdGV4dC4gIElmIHRoZSB1c2VyIGhhcyBhIGxv
dCBvZiBlbGVtZW50cyBpbiBMSVNULCB5b3UgY2FuCisjIGJyaW5nIHRoZSBzeXN0ZW0gdG8gaXRz
IGtuZWVzIHdpdGggdGhlIG1lbW9yeSBtNCB0aGVuIHJlcXVpcmVzLCBvciB0cmlwCisjIHRoZSBt
NCAtLW5lc3RpbmctbGltaXQgcmVjdXJzaW9uIGZhY3Rvci4gIFRoZSBvbmx5IHdheSB0byBhdm9p
ZAorIyBxdWFkcmF0aWMgZ3Jvd3RoIGlzIGVuc3VyZSBtNF9zaGlmdCBpcyBleHBhbmRlZCBwcmlv
ciB0byB0aGUgcmVjdXJzaW9uLgorIyBIZW5jZSB0aGUgZGVzaWduIGJlbG93LgorIworIyBUaGUg
TTQgbWFudWFsIG5vdyBpbmNsdWRlcyBhIGNoYXB0ZXIgZGV2b3RlZCB0byB0aGlzIGlzc3VlLCB3
aXRoCisjIHRoZSBsZXNzb25zIGxlYXJuZWQgZnJvbSBtNHN1Z2FyLiAgQW5kIHN0aWxsLCB0aGlz
IGRlc2lnbiBpcyBvbmx5CisjIG9wdGltYWwgZm9yIE00IDEuNjsgc2VlIGZvcmVhY2gubTQgZm9y
IHlldCBtb3JlIGNvbW1lbnRzIG9uIHdoeQorIyBNNCAxLjQueCB1c2VzIHlldCBhbm90aGVyIGlt
cGxlbWVudGF0aW9uLgorCisKKyMgbTRfZm9yZWFjaChWQVJJQUJMRSwgTElTVCwgRVhQUkVTU0lP
TikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgRXhwYW5k
IEVYUFJFU1NJT04gYXNzaWduaW5nIGVhY2ggdmFsdWUgb2YgdGhlIExJU1QgdG8gVkFSSUFCTEUu
CisjIExJU1Qgc2hvdWxkIGhhdmUgdGhlIGZvcm0gYGl0ZW1fMSwgaXRlbV8yLCAuLi4sIGl0ZW1f
bicsIGkuZS4gdGhlCisjIHdob2xlIGxpc3QgbXVzdCAqcXVvdGVkKi4gIFF1b3RlIG1lbWJlcnMg
dG9vIGlmIHlvdSBkb24ndCB3YW50IHRoZW0KKyMgdG8gYmUgZXhwYW5kZWQuCisjCisjIFRoaXMg
bWFjcm8gaXMgcm9idXN0IHRvIGFjdGl2ZSBzeW1ib2xzOgorIyAgICAgIHwgbTRfZGVmaW5lKGFj
dGl2ZSwgW0FDVCwgSVZFXSkKKyMgICAgICB8IG00X2ZvcmVhY2goVmFyLCBbYWN0aXZlLCBhY3Rp
dmVdLCBbLVZhci1dKQorIyAgICAgPT4gLUFDVC0tSVZFLS1BQ1QtLUlWRS0KKyMKKyMgICAgICB8
IG00X2ZvcmVhY2goVmFyLCBbW2FjdGl2ZV0sIFthY3RpdmVdXSwgWy1WYXItXSkKKyMgICAgID0+
IC1BQ1QsIElWRS0tQUNULCBJVkUtCisjCisjICAgICAgfCBtNF9mb3JlYWNoKFZhciwgW1tbYWN0
aXZlXV0sIFtbYWN0aXZlXV1dLCBbLVZhci1dKQorIyAgICAgPT4gLWFjdGl2ZS0tYWN0aXZlLQor
IworIyBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBhdm9pZCBleHRyYSBleHBh
bnNpb25zIHN1Y2ggYXMKKyMgbTRfaWZ2YWwgYW5kIGRubC4gIEFsc28sIHNpbmNlICQyIG1pZ2h0
IGJlIHF1aXRlIGxhcmdlLCB0cnkgdG8gdXNlIGl0CisjIGFzIGxpdHRsZSBhcyBwb3NzaWJsZSBp
biBfbTRfZm9yZWFjaDsgZWFjaCBleHRyYSB1c2UgcmVxdWlyZXMgdGhhdCBtdWNoCisjIG1vcmUg
bWVtb3J5IGZvciBleHBhbnNpb24uICBTbywgcmF0aGVyIHRoYW4gZGlyZWN0bHkgY29tcGFyZSAk
MiBhZ2FpbnN0CisjIFtdIGFuZCB1c2UgbTRfY2FyL200X2NkciBmb3IgcmVjdXJzaW9uLCB3ZSBp
bnN0ZWFkIHVuYm94IHRoZSBsaXN0ICh3aGljaAorIyByZXF1aXJlcyBzd2FwcGluZyB0aGUgYXJn
dW1lbnQgb3JkZXIgaW4gdGhlIGhlbHBlciksIGluc2VydCBhbiBpZ25vcmVkCisjIHRoaXJkIGFy
Z3VtZW50LCBhbmQgdXNlIG00X3NoaWZ0MyB0byBkZXRlY3Qgd2hlbiByZWN1cnNpb24gaXMgY29t
cGxldGUsCisjIGF0IHdoaWNoIHBvaW50IHRoaXMgbG9va3MgdmVyeSBtdWNoIGxpa2UgbTRfbWFw
X2FyZ3MuCittNF9kZWZpbmUoW200X2ZvcmVhY2hdLAorW200X2lmKFskMl0sIFtdLCBbXSwKKyAg
ICAgICBbbTRfcHVzaGRlZihbJDFdKV8kMChbbTRfZGVmaW5lKFskMV0sXSwgWykkM10sIFtdLAor
ICAkMiltNF9wb3BkZWYoWyQxXSldKV0pCisKKyMgX200X2ZvcmVhY2goUFJFLCBQT1NULCBJR05P
UkVELCBBUkcuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBGb3JtIHRoZSBjb21tb24gYmFzaXMgb2YgdGhlIG00X2ZvcmVhY2ggYW5kIG00X21hcCBtYWNy
b3MuICBGb3IgZWFjaAorIyBBUkcsIGV4cGFuZCBQUkVbQVJHXVBPU1RbXS4gIFRoZSBJR05PUkVE
IGFyZ3VtZW50IG1ha2VzIHJlY3Vyc2lvbgorIyBlYXNpZXIsIGFuZCBtdXN0IGJlIHN1cHBsaWVk
IHJhdGhlciB0aGFuIGltcGxpY2l0LgorIworIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5
bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgorbTRfZGVmaW5lKFtfbTRfZm9yZWFj
aF0sCitbbTRfaWYoWyQjXSwgWzNdLCBbXSwKKyAgICAgICBbJDFbJDRdJDJbXSQwKFskMV0sIFsk
Ml0sIG00X3NoaWZ0MygkQCkpXSldKQorCisKKyMgbTRfZm9yZWFjaF93KFZBUklBQkxFLCBMSVNU
LCBFWFBSRVNTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIExpa2UgbTRfZm9yZWFjaCwgYnV0IHRoZSBsaXN0IGlzIHdoaXRlc3BhY2Ugc2VwYXJhdGVk
LiAgRGVwZW5kaW5nIG9uCisjIEVYUFJFU1NJT04sIGl0IG1heSBiZSBtb3JlIGVmZmljaWVudCB0
byB1c2UgbTRfbWFwX2FyZ3Nfdy4KKyMKKyMgVGhpcyBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZl
IHN5bWJvbHM6CisjICAgIG00X2ZvcmVhY2hfdyhbVmFyXSwgWyBhY3RpdmUKKyMgICAgYglhY3Rc
CisjICAgIGl2ZSAgXSwgWy1WYXItXSllbmQKKyMgICAgPT4gLWFjdGl2ZS0tYi0tYWN0aXZlLWVu
ZAorIworIyBUaGlzIHVzZWQgdG8gdXNlIGEgc2xvd2VyIGltcGxlbWVudGF0aW9uIGJhc2VkIG9u
IG00X2ZvcmVhY2g6CisjICAgbTRfZm9yZWFjaChbJDFdLCBtNF9zcGxpdChtNF9ub3JtYWxpemUo
WyQyXSksIFsgXSksIFskM10pCittNF9kZWZpbmUoW200X2ZvcmVhY2hfd10sCitbbTRfcHVzaGRl
ZihbJDFdKW00X21hcF9hcmdzX3coWyQyXSwKKyAgW200X2RlZmluZShbJDFdLF0sIFspJDNdKW00
X3BvcGRlZihbJDFdKV0pCisKKworIyBtNF9tYXAoTUFDUk8sIExJU1QpCisjIG00X21hcGFsbChN
QUNSTywgTElTVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbnZva2UgTUFDUk8oJDEp
LCBNQUNSTygkMikgZXRjLiB3aGVyZSAkMSwgJDIuLi4gYXJlIHRoZSBlbGVtZW50cyBvZgorIyBM
SVNULiAgJDEsICQyLi4uIG11c3QgaW4gdHVybiBiZSBsaXN0cywgYXBwcm9wcmlhdGUgZm9yIG00
X2FwcGx5LgorIyBJZiBMSVNUIGNvbnRhaW5zIGFuIGVtcHR5IHN1Ymxpc3QsIG00X21hcCBza2lw
cyB0aGUgZXhwYW5zaW9uIG9mCisjIE1BQ1JPLCB3aGlsZSBtNF9tYXBhbGwgZXhwYW5kcyBNQUNS
TyB3aXRoIG5vIGFyZ3VtZW50cy4KKyMKKyMgU2luY2UgTElTVCBtYXkgYmUgcXVpdGUgbGFyZ2Us
IHdlIHdhbnQgdG8gbWluaW1pemUgaG93IG9mdGVuIGl0CisjIGFwcGVhcnMgaW4gdGhlIGV4cGFu
c2lvbi4gIFJhdGhlciB0aGFuIHVzZSBtNF9jYXIvbTRfY2RyIGl0ZXJhdGlvbiwKKyMgd2UgdW5i
b3ggdGhlIGxpc3QsIGFuZCB1c2UgX200X2ZvcmVhY2ggZm9yIGl0ZXJhdGlvbi4gIEZvciBtNF9t
YXAsCisjIGFuIGVtcHR5IGxpc3QgYmVoYXZlcyBsaWtlIGFuIGVtcHR5IHN1Ymxpc3QgYW5kIGdl
dHMgaWdub3JlZDsgZm9yCisjIG00X21hcGFsbCwgd2UgbXVzdCBzcGVjaWFsLWNhc2UgdGhlIGVt
cHR5IGxpc3QuCittNF9kZWZpbmUoW200X21hcF0sCitbX200X2ZvcmVhY2goW19tNF9hcHBseShb
JDFdLF0sIFspXSwgW10sICQyKV0pCisKK200X2RlZmluZShbbTRfbWFwYWxsXSwKK1ttNF9pZihb
JDJdLCBbXSwgW10sCisgICAgICAgW19tNF9mb3JlYWNoKFttNF9hcHBseShbJDFdLF0sIFspXSwg
W10sICQyKV0pXSkKKworCisjIG00X21hcF9zZXAoTUFDUk8sIFtTRVBBUkFUT1JdLCBMSVNUKQor
IyBtNF9tYXBhbGxfc2VwKE1BQ1JPLCBbU0VQQVJBVE9SXSwgTElTVCkKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEludm9rZSBNQUNSTygkMSksIFNFUEFSQVRP
UiwgTUFDUk8oJDIpLCAuLi4sIE1BQ1JPKCROKSB3aGVyZSAkMSwKKyMgJDIuLi4gJE4gYXJlIHRo
ZSBlbGVtZW50cyBvZiBMSVNULCBhbmQgYXJlIGluIHR1cm4gbGlzdHMgYXBwcm9wcmlhdGUKKyMg
Zm9yIG00X2FwcGx5LiAgU0VQQVJBVE9SIGlzIGV4cGFuZGVkLCBpbiBvcmRlciB0byBhbGxvdyB0
aGUgY3JlYXRpb24KKyMgb2YgYSBsaXN0IG9mIGFyZ3VtZW50cyBieSB1c2luZyBhIHNpbmdsZS1x
dW90ZWQgY29tbWEgYXMgdGhlCisjIHNlcGFyYXRvci4gIEZvciBlYWNoIGVtcHR5IHN1Ymxpc3Qs
IG00X21hcF9zZXAgc2tpcHMgdGhlIGV4cGFuc2lvbgorIyBvZiBNQUNSTyBhbmQgU0VQQVJBVE9S
LCB3aGlsZSBtNF9tYXBhbGxfc2VwIGV4cGFuZHMgTUFDUk8gd2l0aCBubworIyBhcmd1bWVudHMu
CisjCisjIEZvciBtNF9tYXBhbGxfc2VwLCBtZXJlbHkgZXhwYW5kIHRoZSBmaXJzdCBpdGVyYXRp
b24gd2l0aG91dCB0aGUKKyMgc2VwYXJhdG9yLCB0aGVuIGluY2x1ZGUgc2VwYXJhdG9yIGFzIHBh
cnQgb2Ygc3Vic2VxdWVudCByZWN1cnNpb247CisjIGJ1dCBhdm9pZCBleHRyYSBleHBhbnNpb24g
b2YgTElTVCdzIHNpZGUtZWZmZWN0cyB2aWEgYSBoZWxwZXIgbWFjcm8uCisjIEZvciBtNF9tYXBf
c2VwLCB0aGluZ3MgYXJlIHRyaWNraWVyIC0gd2UgZG9uJ3Qga25vdyBpZiB0aGUgZmlyc3QKKyMg
bGlzdCBlbGVtZW50IGlzIGFuIGVtcHR5IHN1Ymxpc3QsIHNvIHdlIG11c3QgZGVmaW5lIGEgc2Vs
Zi1tb2RpZnlpbmcKKyMgaGVscGVyIG1hY3JvIGFuZCB1c2UgdGhhdCBhcyB0aGUgc2VwYXJhdG9y
IGluc3RlYWQuCittNF9kZWZpbmUoW200X21hcF9zZXBdLAorW200X3B1c2hkZWYoW200X1NlcF0s
IFttNF9kZWZpbmUoW200X1NlcF0sIF9tNF9kZWZuKFttNF91bnF1b3RlXSkpXSldZG5sCitbX200
X2ZvcmVhY2goW19tNF9hcHBseShbbTRfU2VwKFskMl0pW10kMV0sXSwgWyldLCBbXSwgJDMpbTRf
cG9wZGVmKFttNF9TZXBdKV0pCisKK200X2RlZmluZShbbTRfbWFwYWxsX3NlcF0sCitbbTRfaWYo
WyQzXSwgW10sIFtdLCBbXyQwKFskMV0sIFskMl0sICQzKV0pXSkKKworbTRfZGVmaW5lKFtfbTRf
bWFwYWxsX3NlcF0sCitbbTRfYXBwbHkoWyQxXSwgWyQzXSlfbTRfZm9yZWFjaChbbTRfYXBwbHko
WyQyW10kMV0sXSwgWyldLCBtNF9zaGlmdDIoJEApKV0pCisKKyMgbTRfbWFwX2FyZ3MoRVhQUkVT
U0lPTiwgQVJHLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFu
ZCBFWFBSRVNTSU9OKFtBUkddKSBmb3IgZWFjaCBhcmd1bWVudC4gIE1vcmUgZWZmaWNpZW50IHRo
YW4KKyMgICBtNF9mb3JlYWNoKFt2YXJdLCBbQVJHLi4uXSwgW0VYUFJFU1NJT04obTRfZGVmbihb
dmFyXSkpXSkKKyMgU2hvcnRoYW5kIGZvciBtNF9tYXBfYXJnc19zZXAoW0VYUFJFU1NJT04oXSwg
WyldLCBbXSwgQVJHLi4uKS4KK200X2RlZmluZShbbTRfbWFwX2FyZ3NdLAorW200X2lmKFskI10s
IFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAorICAgICAgIFsk
I10sIFsxXSwgW10sCisgICAgICAgWyQjXSwgWzJdLCBbJDEoWyQyXSlbXV0sCisgICAgICAgW19t
NF9mb3JlYWNoKFskMShdLCBbKV0sICRAKV0pXSkKKworCisjIG00X21hcF9hcmdzX3BhaXIoRVhQ
UkVTU0lPTiwgW0VORC1FWFBSID0gRVhQUkVTU0lPTl0sIEFSRy4uLikKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQZXJm
b3JtIGEgcGFpcndpc2UgZ3JvdXBpbmcgb2YgY29uc2VjdXRpdmUgQVJHcywgYnkgZXhwYW5kaW5n
CisjIEVYUFJFU1NJT04oW0FSRzFdLCBbQVJHMl0pLiAgSWYgdGhlcmUgYXJlIGFuIG9kZCBudW1i
ZXIgb2YgQVJHcywgdGhlCisjIGZpbmFsIGFyZ3VtZW50IGlzIGV4cGFuZGVkIHdpdGggRU5ELUVY
UFIoW0FSR25dKS4KKyMKKyMgRm9yIGV4YW1wbGU6CisjICAgbTRfZGVmaW5lKFtzaG93XSwgWygk
KiltNF9uZXdsaW5lXSlkbmwKKyMgICBtNF9tYXBfYXJnc19wYWlyKFtzaG93XSwgW10sIFthXSwg
W2JdLCBbY10sIFtkXSwgW2VdKWRubAorIyAgID0+IChhLGIpCisjICAgPT4gKGMsZCkKKyMgICA9
PiAoZSkKKyMKKyMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVz
dG1lbnRzIG1hZGUgaGVyZS4KK200X2RlZmluZShbbTRfbWFwX2FyZ3NfcGFpcl0sCitbbTRfaWYo
WyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCisgICAg
ICAgWyQjXSwgWzFdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCM6ICQxXSld
LAorICAgICAgIFskI10sIFsyXSwgW10sCisgICAgICAgWyQjXSwgWzNdLCBbbTRfZGVmYXVsdChb
JDJdLCBbJDFdKShbJDNdKVtdXSwKKyAgICAgICBbJCNdLCBbNF0sIFskMShbJDNdLCBbJDRdKVtd
XSwKKyAgICAgICBbJDEoWyQzXSwgWyQ0XSlbXSQwKFskMV0sIFskMl0sIG00X3NoaWZ0KG00X3No
aWZ0MygkQCkpKV0pXSkKKworCisjIG00X21hcF9hcmdzX3NlcChbUFJFXSwgW1BPU1RdLCBbU0VQ
XSwgQVJHLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgRXhwYW5kIFBSRVtBUkddUE9TVCBmb3IgZWFjaCBhcmd1bWVudCwgd2l0aCBTRVAgYmV0
d2VlbiBhcmd1bWVudHMuCittNF9kZWZpbmUoW200X21hcF9hcmdzX3NlcF0sCitbbTRfaWYoWyQj
XSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCisgICAgICAg
WyQjXSwgWzFdLCBbXSwKKyAgICAgICBbJCNdLCBbMl0sIFtdLAorICAgICAgIFskI10sIFszXSwg
W10sCisgICAgICAgWyQjXSwgWzRdLCBbJDFbJDRdJDJbXV0sCisgICAgICAgWyQxWyQ0XSQyW11f
bTRfZm9yZWFjaChbJDNbXSQxXSwgWyQyXSwgbTRfc2hpZnQzKCRAKSldKV0pCisKKworIyBtNF9t
YXBfYXJnc193KFNUUklORywgW1BSRV0sIFtQT1NUXSwgW1NFUF0pCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSB0aGUgZXhwYW5zaW9uIG9m
IFBSRVt3b3JkXVBPU1RbXSBmb3IgZWFjaCB3b3JkIGluIFNUUklORworIyBzZXBhcmF0ZWQgYnkg
d2hpdGVzcGFjZS4gIE1vcmUgZWZmaWNpZW50IHRoYW46CisjICAgbTRfZm9yZWFjaF93KFt2YXJd
LCBbU1RSSU5HXSwgW1BSRVtdbTRfZGVmbihbdmFyXSlQT1NUXSkKKyMgQWRkaXRpb25hbGx5LCBl
eHBhbmQgU0VQIGJldHdlZW4gd29yZHMuCisjCisjIEFzIGxvbmcgYXMgd2UgaGF2ZSB0byB1c2Ug
bTRfYnBhdHN1YnN0IHRvIHNwbGl0IHRoZSBzdHJpbmcsIHdlIG1pZ2h0CisjIGFzIHdlbGwgbWFr
ZSBpdCBhbHNvIGFwcGx5IFBSRSBhbmQgUE9TVDsgdGhpcyBhdm9pZHMgaXRlcmF0aW9uCisjIGFs
dG9nZXRoZXIuICBCdXQgd2UgbXVzdCBiZSBjYXJlZnVsIG9mIGFueSBcIGluIFBSRSBvciBQT1NU
LgorIyBfbTRfc3RyaXAgcmV0dXJucyBhIHF1b3RlZCBzdHJpbmcsIGJ1dCB0aGF0J3Mgb2theSwg
c2luY2UgaXQgYWxzbworIyBzdXBwbGllcyBhbiBlbXB0eSBsZWFkaW5nIGFuZCB0cmFpbGluZyBh
cmd1bWVudCBkdWUgdG8gb3VyCisjIGludGVudGlvbmFsIHdoaXRlc3BhY2UgYXJvdW5kIFNUUklO
Ry4gIFdlIHVzZSBtNF9zdWJzdHIgdG8gc3RyaXAgdGhlCisjIGVtcHR5IGVsZW1lbnRzIGFuZCBy
ZW1vdmUgdGhlIGV4dHJhIGxheWVyIG9mIHF1b3RpbmcuCittNF9kZWZpbmUoW200X21hcF9hcmdz
X3ddLAorW18kMChfbTRfc3BsaXQoWyBdbTRfZmxhdHRlbihbJDFdKVsgXSwgW1sJIF0rXSwKKwkg
ICAgICAgbTRfaWYobTRfaW5kZXgoWyQyJDMkNF0sIFtcXSksIFstMV0sIFtbJDNbXSQ0W10kMl1d
LAorCQkgICAgIFttNF9icGF0c3Vic3QoW1skM1tdJDRbXSQyXV0sIFtcXF0sIFtcXFxcXSldKSks
CisgICAgIG00X2xlbihbW10kM1tdJDRdKSwgbTRfbGVuKFskNFtdJDJbXV0pKV0pCisKK200X2Rl
ZmluZShbX200X21hcF9hcmdzX3ddLAorW200X3N1YnN0cihbJDFdLCBbJDJdLCBtNF9ldmFsKG00
X2xlbihbJDFdKSAtIFskMl0gLSBbJDNdKSldKQorCisKKyMgbTRfc3RhY2tfZm9yZWFjaChNQUNS
TywgRlVOQykKKyMgbTRfc3RhY2tfZm9yZWFjaF9saWZvKE1BQ1JPLCBGVU5DKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBhc3MgZWFjaCBzdGFja2VkIGRlZmluaXRp
b24gb2YgTUFDUk8gdG8gdGhlIG9uZS1hcmd1bWVudCBtYWNybyBGVU5DLgorIyBtNF9zdGFja19m
b3JlYWNoIHByb2NlZWRzIGluIEZJRk8gb3JkZXIsIHdoaWxlIG00X3N0YWNrX2ZvcmVhY2hfbGlm
bworIyBwcm9jZXNzZXMgdGhlIHRvcG1vc3QgZGVmaW5pdGlvbnMgZmlyc3QuICBJbiBhZGRpdGlv
biwgRlVOQyBzaG91bGQKKyMgbm90IHB1c2ggb3IgcG9wIGRlZmluaXRpb25zIG9mIE1BQ1JPLCBh
bmQgc2hvdWxkIG5vdCBleHBlY3QgYW55dGhpbmcgYWJvdXQKKyMgdGhlIGFjdGl2ZSBkZWZpbml0
aW9uIG9mIE1BQ1JPIChpdCB3aWxsIG5vdCBiZSB0aGUgdG9wbW9zdCwgYW5kIG1heSBub3QKKyMg
YmUgdGhlIG9uZSBwYXNzZWQgdG8gRlVOQyBlaXRoZXIpLgorIworIyBTb21lIG1hY3JvcyBzaW1w
bHkgY2FuJ3QgYmUgZXhhbWluZWQgd2l0aCB0aGlzIG1ldGhvZDogbmFtZWx5LAorIyBhbnl0aGlu
ZyBpbnZvbHZlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgX200X3N0YWNrX3JldmVyc2UuCitt
NF9kZWZpbmUoW200X3N0YWNrX2ZvcmVhY2hdLAorW19tNF9zdGFja19yZXZlcnNlKFskMV0sIFtt
NF90bXAtJDFdKV1kbmwKK1tfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSwgWyQy
KF9tNF9kZWZuKFttNF90bXAtJDFdKSldKV0pCisKK200X2RlZmluZShbbTRfc3RhY2tfZm9yZWFj
aF9saWZvXSwKK1tfbTRfc3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSwgWyQyKF9tNF9k
ZWZuKFttNF90bXAtJDFdKSldKV1kbmwKK1tfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwg
WyQxXSldKQorCisjIG00X3N0YWNrX2ZvcmVhY2hfc2VwKE1BQ1JPLCBbUFJFXSwgW1BPU1RdLCBb
U0VQXSkKKyMgbTRfc3RhY2tfZm9yZWFjaF9zZXBfbGlmbyhNQUNSTywgW1BSRV0sIFtQT1NUXSwg
W1NFUF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBTaW1pbGFyIHRvIG00X3N0YWNrX2ZvcmVhY2ggYW5kIG00X3N0YWNrX2ZvcmVh
Y2hfbGlmbywgaW4gdGhhdCBldmVyeQorIyBkZWZpbml0aW9uIG9mIGEgcHVzaGRlZiBzdGFjayB3
aWxsIGJlIHZpc2l0ZWQuICBCdXQgcmF0aGVyIHRoYW4KKyMgcGFzc2luZyB0aGUgZGVmaW5pdGlv
biBhcyBhIHNpbmdsZSBhcmd1bWVudCB0byBhIG1hY3JvLCB0aGlzIHZhcmlhbnQKKyMgZXhwYW5k
cyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBQUkVbXWRlZmluaXRpb25bXVBPU1QsIGFuZCBleHBhbmRz
IFNFUAorIyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGV4cGFuc2lvbnMuICBOb3RlIHRoYXQgbTRfc3Rh
Y2tfZm9yZWFjaChbYV0sIFtiXSkKKyMgaXMgZXF1aXZhbGVudCB0byBtNF9zdGFja19mb3JlYWNo
X3NlcChbYV0sIFtiKF0sIFspXSkuCittNF9kZWZpbmUoW200X3N0YWNrX2ZvcmVhY2hfc2VwXSwK
K1tfbTRfc3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSldZG5sCitbX200X3N0YWNrX3Jl
dmVyc2UoW200X3RtcC0kMV0sIFskMV0sIFskMltdX200X2RlZm4oW200X3RtcC0kMV0pJDNdLCBb
JDRbXV0pXSkKKworbTRfZGVmaW5lKFttNF9zdGFja19mb3JlYWNoX3NlcF9saWZvXSwKK1tfbTRf
c3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSwgWyQyW11fbTRfZGVmbihbbTRfdG1wLSQx
XSkkM10sIFskNFtdXSldZG5sCitbX200X3N0YWNrX3JldmVyc2UoW200X3RtcC0kMV0sIFskMV0p
XSkKKworCisjIF9tNF9zdGFja19yZXZlcnNlKE9MRCwgTkVXLCBbQUNUSU9OXSwgW1NFUF0pCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEEgcmVjdXJz
aXZlIHdvcmtlciBmb3IgcHVzaGRlZiBzdGFjayBtYW5pcHVsYXRpb24uICBEZXN0cnVjdGl2ZWx5
CisjIGNvcHkgdGhlIE9MRCBzdGFjayBpbnRvIHRoZSBORVcsIGFuZCBleHBhbmRpbmcgQUNUSU9O
IGZvciBlYWNoCisjIGl0ZXJhdGlvbi4gIEFmdGVyIHRoZSBmaXJzdCBpdGVyYXRpb24sIFNFUCBp
cyBwcm9tb3RlZCB0byB0aGUgZnJvbnQKKyMgb2YgQUNUSU9OIChub3RlIHRoYXQgU0VQIHNob3Vs
ZCBpbmNsdWRlIGEgdHJhaWxpbmcgW10gaWYgaXQgaXMgdG8KKyMgYXZvaWQgaW50ZXJmZXJpbmcg
d2l0aCBBQ1RJT04pLiAgVGhlIGN1cnJlbnQgZGVmaW5pdGlvbiBpcyBleGFtaW5lZAorIyBhZnRl
ciB0aGUgTkVXIGhhcyBiZWVuIHB1c2hlZCBidXQgYmVmb3JlIE9MRCBoYXMgYmVlbiBwb3BwZWQ7
IHRoaXMKKyMgb3JkZXIgaXMgaW1wb3J0YW50LCBhcyBBQ1RJT04gaXMgcGVybWl0dGVkIHRvIG9w
ZXJhdGUgb24gZWl0aGVyCisjIF9tNF9kZWZuKFtPTERdKSBvciBfbTRfZGVmbihbTkVXXSkuICBT
aW5jZSB0aGUgb3BlcmF0aW9uIGlzCisjIGRlc3RydWN0aXZlLCB0aGlzIG1hY3JvIGlzIGdlbmVy
YWxseSB1c2VkIHR3aWNlLCB3aXRoIGEgdGVtcG9yYXJ5CisjIG1hY3JvIG5hbWUgaG9sZGluZyB0
aGUgc3dhcHBlZCBjb3B5LgorbTRfZGVmaW5lKFtfbTRfc3RhY2tfcmV2ZXJzZV0sCitbbTRfaWZk
ZWYoWyQxXSwgW200X3B1c2hkZWYoWyQyXSwKKyAgX200X2RlZm4oWyQxXSkpJDNbXV9tNF9wb3Bk
ZWYoWyQxXSkkMChbJDFdLCBbJDJdLCBbJDQkM10pXSldKQorCisKKworIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICMjCisjIyA5LiBNb3JlIGRpdmVyc2lvbiBzdXBwb3J0LiAgIyMKKyMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgbTRfY2xlYXJkaXZlcnQoRElW
RVJTSU9OLU5BTUUuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBE
aXNjYXJkIGFueSB0ZXh0IGluIERJVkVSU0lPTi1OQU1FLgorIworIyBUaGlzIHdvcmtzIGV2ZW4g
aW5zaWRlIG00X2V4cGFuZC4KK200X2RlZmluZShbbTRfY2xlYXJkaXZlcnRdLAorW200X2lmKFsk
I10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKKyAgICAgICBbX200
X2RpdmVydF9yYXcoWy0xXSltNF91bmRpdmVydCgkQClfbTRfZGl2ZXJ0X3JhdygKKwkgX200X2Rp
dmVydChfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNpb25dKSwgWy1dKSldKV0pCisKKworIyBf
bTRfZGl2ZXJ0KERJVkVSU0lPTi1OQU1FIG9yIE5VTUJFUiwgW05PV0FSTl0pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgRElWRVJTSU9OLU5B
TUUgaXMgdGhlIG5hbWUgb2YgYSBkaXZlcnNpb24sIHJldHVybiBpdHMgbnVtYmVyLAorIyBvdGhl
cndpc2UgaWYgaXQgaXMgYSBOVU1CRVIgcmV0dXJuIGl0LiAgSXNzdWUgYSB3YXJuaW5nIGFib3V0
CisjIHRoZSB1c2Ugb2YgYSBudW1iZXIgaW5zdGVhZCBvZiBhIG5hbWUsIHVubGVzcyBOT1dBUk4g
aXMgcHJvdmlkZWQuCittNF9kZWZpbmUoW19tNF9kaXZlcnRdLAorW200X2lmZGVmKFtfbTRfZGl2
ZXJ0KCQxKV0sCisJICBbbTRfaW5kaXIoW19tNF9kaXZlcnQoJDEpXSldLAorCSAgW200X2lmKFsk
Ml0sIFtdLCBbbTRfd2Fybihbc3ludGF4XSwKKwkgICAgIFtwcmVmZXIgbmFtZWQgZGl2ZXJzaW9u
c10pXSkkMV0pXSkKKworIyBLSUxMIGlzIG9ubHkgdXNlZCB0byBzdXBwcmVzcyBvdXRwdXQuCitt
NF9kZWZpbmUoW19tNF9kaXZlcnQoS0lMTCldLCAgICAgICAgICAgLTEpCisKKyMgVGhlIGVtcHR5
IGRpdmVyc2lvbiBuYW1lIGlzIGEgc3lub255bSBmb3IgMC4KK200X2RlZmluZShbX200X2RpdmVy
dCgpXSwgICAgICAgICAgICAgICAgMCkKKworCisjIG00X2RpdmVydF9zdGFjaworIyAtLS0tLS0t
LS0tLS0tLS0KKyMgUHJpbnQgdGhlIGRpdmVyc2lvbiBzdGFjaywgaWYgaXQncyBub25lbXB0eS4g
IFRoZSBjYWxsZXIgaXMKKyMgcmVzcG9uc2libGUgZm9yIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5n
IG5ld2xpbmUuCittNF9kZWZpbmUoW200X2RpdmVydF9zdGFja10sCitbbTRfc3RhY2tfZm9yZWFj
aF9zZXBfbGlmbyhbX200X2RpdmVydF9zdGFja10sIFtdLCBbXSwgWworXSldKQorCisKKyMgbTRf
ZGl2ZXJ0X3N0YWNrX3B1c2goTUFDUk8tTkFNRSwgRElWRVJTSU9OLU5BTUUpCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtIGFuIGVudHJ5
IG9mIHRoZSBkaXZlcnNpb24gc3RhY2sgZnJvbSBjYWxsZXIgTUFDUk8tTkFNRSBhbmQKKyMgZW50
ZXJpbmcgRElWRVJTSU9OLU5BTUUgYW5kIHB1c2ggaXQuCittNF9kZWZpbmUoW200X2RpdmVydF9z
dGFja19wdXNoXSwKK1ttNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X3N0YWNrXSwgbTRfbG9jYXRpb25b
OiAkMTogJDJdKV0pCisKKworIyBtNF9kaXZlcnQoRElWRVJTSU9OLU5BTUUpCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hhbmdlIHRoZSBkaXZlcnNpb24gc3RyZWFtIHRvIERJVkVS
U0lPTi1OQU1FLgorbTRfZGVmaW5lKFttNF9kaXZlcnRdLAorW200X3BvcGRlZihbX200X2RpdmVy
dF9zdGFja10pXWRubAorW200X2RlZmluZShbX200X2RpdmVydF9kaXZlcnNpb25dLCBbJDFdKV1k
bmwKK1ttNF9kaXZlcnRfc3RhY2tfcHVzaChbJDBdLCBbJDFdKV1kbmwKK1tfbTRfZGl2ZXJ0X3Jh
dyhfbTRfZGl2ZXJ0KFskMV0pKV0pCisKKworIyBtNF9kaXZlcnRfcHVzaChESVZFUlNJT04tTkFN
RSwgW05PV0FSTl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgQ2hhbmdlIHRoZSBkaXZlcnNpb24gc3RyZWFtIHRvIERJVkVSU0lPTi1OQU1FLCB3aGlsZSBz
dGFja2luZyBvbGQgdmFsdWVzLgorIyBGb3IgaW50ZXJuYWwgdXNlIG9ubHk6IGlmIE5PV0FSTiBp
cyBub3QgZW1wdHksIERJVkVSU0lPTi1OQU1FIGNhbiBiZSBhCisjIG51bWJlciBpbnN0ZWFkIG9m
IGEgbmFtZS4KK200X2RlZmluZShbbTRfZGl2ZXJ0X3B1c2hdLAorW200X2RpdmVydF9zdGFja19w
dXNoKFskMF0sIFskMV0pXWRubAorW200X3B1c2hkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwg
WyQxXSldZG5sCitbX200X2RpdmVydF9yYXcoX200X2RpdmVydChbJDFdLCBbJDJdKSldKQorCisK
KyMgbTRfZGl2ZXJ0X3BvcChbRElWRVJTSU9OLU5BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIENoYW5nZSB0aGUgZGl2ZXJzaW9uIHN0cmVhbSB0byBpdHMgcHJldmlv
dXMgdmFsdWUsIHVuc3RhY2tpbmcgaXQuCisjIElmIHNwZWNpZmllZCwgdmVyaWZ5IHdlIGxlZnQg
RElWRVJTSU9OLU5BTUUuCisjIFdoZW4gd2UgcG9wIHRoZSBsYXN0IHZhbHVlIGZyb20gdGhlIHN0
YWNrLCB3ZSBkaXZlcnQgdG8gLTEuCittNF9kZWZpbmUoW200X2RpdmVydF9wb3BdLAorW200X2lm
KFskMV0sIFtdLCBbXSwKKyAgICAgICBbJDFdLCBfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNp
b25dKSwgW10sCisgICAgICAgW200X2ZhdGFsKFskMCgkMSk6IGRpdmVyc2lvbiBtaXNtYXRjaDoK
K11tNF9kaXZlcnRfc3RhY2spXSldZG5sCitbX200X3BvcGRlZihbX200X2RpdmVydF9zdGFja10s
IFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pXWRubAorW200X2lmZGVmKFtfbTRfZGl2ZXJ0X2RpdmVy
c2lvbl0sIFtdLAorCSAgIFttNF9mYXRhbChbdG9vIG1hbnkgbTRfZGl2ZXJ0X3BvcF0pXSldZG5s
CitbX200X2RpdmVydF9yYXcoX200X2RpdmVydChfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNp
b25dKSwgWy1dKSldKQorCisKKyMgbTRfZGl2ZXJ0X3RleHQoRElWRVJTSU9OLU5BTUUsIENPTlRF
TlQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQg
Q09OVEVOVCBpbnRvIERJVkVSU0lPTi1OQU1FICh3aGljaCBtYXkgYmUgYSBudW1iZXIgYWN0dWFs
bHkpLgorIyBBbiBlbmQgb2YgbGluZSBpcyBhcHBlbmRlZCBmb3IgZnJlZSB0byBDT05URU5ULgor
bTRfZGVmaW5lKFttNF9kaXZlcnRfdGV4dF0sCitbbTRfZGl2ZXJ0X3B1c2goWyQxXSkkMgorbTRf
ZGl2ZXJ0X3BvcChbJDFdKV0pCisKKworIyBtNF9kaXZlcnRfb25jZShESVZFUlNJT04tTkFNRSwg
Q09OVEVOVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91
dHB1dCBDT05URU5UIGludG8gRElWRVJTSU9OLU5BTUUgb25jZSwgaWYgbm90IGFscmVhZHkgdGhl
cmUuCisjIEFuIGVuZCBvZiBsaW5lIGlzIGFwcGVuZGVkIGZvciBmcmVlIHRvIENPTlRFTlQuCitt
NF9kZWZpbmUoW200X2RpdmVydF9vbmNlXSwKK1ttNF9leHBhbmRfb25jZShbbTRfZGl2ZXJ0X3Rl
eHQoWyQxXSwgWyQyXSldKV0pCisKKworIyBfbTRfZGl2ZXJ0X3Vuc2FmZShESVZFUlNJT04tTkFN
RSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElzc3VlIGEgd2Fybmlu
ZyB0aGF0IHRoZSBhdHRlbXB0IHRvIGNoYW5nZSB0aGUgY3VycmVudCBkaXZlcnNpb24gdG8KKyMg
RElWRVJTSU9OLU5BTUUgaXMgdW5zYWZlLCBiZWNhdXNlIHRoaXMgbWFjcm8gaXMgYmVpbmcgZXhw
YW5kZWQKKyMgZHVyaW5nIGFyZ3VtZW50IGNvbGxlY3Rpb24gb2YgbTRfZXhwYW5kLgorbTRfZGVm
aW5lKFtfbTRfZGl2ZXJ0X3Vuc2FmZV0sCitbbTRfZmF0YWwoWyQwOiBjYW5ub3QgY2hhbmdlIGRp
dmVyc2lvbiB0byBgJDEnIGluc2lkZSBtNF9leHBhbmRdKV0pCisKKworIyBtNF91bmRpdmVydChE
SVZFUlNJT04tTkFNRS4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFVu
ZGl2ZXJ0IERJVkVSU0lPTi1OQU1FLiAgVW5saWtlIHRoZSBNNCB2ZXJzaW9uLCB0aGlzIHJlcXVp
cmVzIGF0CisjIGxlYXN0IG9uZSBESVZFUlNJT04tTkFNRTsgYWxzbywgZHVlIHRvIHN1cHBvcnQg
Zm9yIG5hbWVkIGRpdmVyc2lvbnMsCisjIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIHVuZGl2
ZXJ0IGZpbGVzLgorbTRfZGVmaW5lKFttNF91bmRpdmVydF0sCitbbTRfaWYoWyQjXSwgWzBdLCBb
bTRfZmF0YWwoWyQwOiBtaXNzaW5nIGFyZ3VtZW50XSldLAorICAgICAgIFskI10sIFsxXSwgW19t
NF91bmRpdmVydChfbTRfZGl2ZXJ0KFskMV0pKV0sCisgICAgICAgW200X21hcF9hcmdzKFskMF0s
ICRAKV0pXSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKyMjIDEwLiBEZWZpbmluZyBtYWNyb3Mgd2l0aCBiZWxscyBhbmQgd2hpc3RsZXMu
ICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj
CisKKyMgYG00X2RlZnVuJyBpcyBiYXNpY2FsbHkgYG00X2RlZmluZScgYnV0IGl0IGVxdWlwcyB0
aGUgbWFjcm8gd2l0aCB0aGUKKyMgbmVlZGVkIG1hY2hpbmVyeSBmb3IgYG00X3JlcXVpcmUnLiAg
QSBtYWNybyBtdXN0IGJlIG00X2RlZnVuJ2QgaWYKKyMgZWl0aGVyIGl0IGlzIG00X3JlcXVpcmUn
ZCwgb3IgaXQgbTRfcmVxdWlyZSdzLgorIworIyBUd28gdGhpbmdzIGRlc2VydmUgYXR0ZW50aW9u
IGFuZCBhcmUgZGV0YWlsZWQgYmVsb3c6CisjICAxLiBJbXBsZW1lbnRhdGlvbiBvZiBtNF9yZXF1
aXJlCisjICAyLiBLZWVwaW5nIHRyYWNrIG9mIHRoZSBleHBhbnNpb24gc3RhY2sKKyMKKyMgMS4g
SW1wbGVtZW50YXRpb24gb2YgbTRfcmVxdWlyZQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisjCisjIE9mIGNvdXJzZSBtNF9kZWZ1biBjYWxscyBtNF9wcm92aWRlLCBzbyB0aGF0
IGEgbWFjcm8gd2hpY2ggaGFzCisjIGJlZW4gZXhwYW5kZWQgaXMgbm90IGV4cGFuZGVkIGFnYWlu
IHdoZW4gbTRfcmVxdWlyZSdkLCBidXQgdGhlCisjIGRpZmZpY3VsdCBwYXJ0IGlzIHRoZSBwcm9w
ZXIgZXhwYW5zaW9uIG9mIG1hY3JvcyB3aGVuIHRoZXkgYXJlCisjIG00X3JlcXVpcmUnZC4KKyMK
KyMgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHRocmVlIGlkZWFzLCAoaSkgdXNpbmcg
ZGl2ZXJzaW9ucyB0bworIyBwcmVwYXJlIHRoZSBleHBhbnNpb24gb2YgdGhlIG1hY3JvIGFuZCBp
dHMgZGVwZW5kZW5jaWVzIChieSBGcmFuYyxvaXMKKyMgUGluYXJkKSwgKGlpKSBleHBhbmQgdGhl
IG1vc3QgcmVjZW50bHkgbTRfcmVxdWlyZSdkIG1hY3JvcyBfYWZ0ZXJfCisjIHRoZSBwcmV2aW91
cyBtYWNyb3MgKGJ5IEF4ZWwgVGhpbW0pLCBhbmQgKGlpaSkgdHJhY2sgaW5zdGFuY2VzIG9mCisj
IHByb3ZpZGUgYmVmb3JlIHJlcXVpcmUgKGJ5IEVyaWMgQmxha2UpLgorIworIworIyBUaGUgZmly
c3QgaWRlYTogd2h5IHVzZSBkaXZlcnNpb25zPworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIworIyBXaGVuIGEgbWFjcm8gcmVxdWlyZXMgYW5vdGhlciwgdGhlIG90aGVy
IG1hY3JvIGlzIGV4cGFuZGVkIGluIG5ldworIyBkaXZlcnNpb24sIEdST1cuICBXaGVuIHRoZSBv
dXRlciBtYWNybyBpcyBmdWxseSBleHBhbmRlZCwgd2UgZmlyc3QKKyMgdW5kaXZlcnQgdGhlIG1v
c3QgbmVzdGVkIGRpdmVyc2lvbnMgKEdST1cgLSAxLi4uKSwgYW5kIGZpbmFsbHkKKyMgdW5kaXZl
cnQgR1JPVy4gIFRvIHVuZGVyc3RhbmQgd2h5IHdlIG5lZWQgc2V2ZXJhbCBkaXZlcnNpb25zLAor
IyBjb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisjCisjIHwgbTRfZGVmdW4oW1RFU1Qx
XSwgW1Rlc3QuLi5tNF9yZXF1aXJlKFtURVNUMl0pMV0pCisjIHwgbTRfZGVmdW4oW1RFU1QyXSwg
W1Rlc3QuLi5tNF9yZXF1aXJlKFtURVNUM10pMl0pCisjIHwgbTRfZGVmdW4oW1RFU1QzXSwgW1Rl
c3QuLi4zXSkKKyMKKyMgQmVjYXVzZSBtNF9yZXF1aXJlIGlzIG5vdCByZXF1aXJlZCB0byBiZSBm
aXJzdCBpbiB0aGUgb3V0ZXIgbWFjcm9zLCB3ZQorIyBtdXN0IGtlZXAgdGhlIGV4cGFuc2lvbnMg
b2YgdGhlIHZhcmlvdXMgbGV2ZWxzIG9mIG00X3JlcXVpcmUgc2VwYXJhdGVkLgorIyBSaWdodCBi
ZWZvcmUgZXhlY3V0aW5nIHRoZSBlcGlsb2d1ZSBvZiBURVNUMSwgd2UgaGF2ZToKKyMKKyMJICAg
R1JPVyAtIDI6IFRlc3QuLi4zCisjCSAgIEdST1cgLSAxOiBUZXN0Li4uMgorIwkgICBHUk9XOiAg
ICAgVGVzdC4uLjEKKyMJICAgQk9EWToKKyMKKyMgRmluYWxseSB0aGUgZXBpbG9ndWUgb2YgVEVT
VDEgdW5kaXZlcnRzIEdST1cgLSAyLCBHUk9XIC0gMSwgYW5kCisjIEdST1cgaW50byB0aGUgcmVn
dWxhciBmbG93LCBCT0RZLgorIworIwkgICBHUk9XIC0gMjoKKyMJICAgR1JPVyAtIDE6CisjCSAg
IEdST1c6CisjCSAgIEJPRFk6ICAgICAgICBUZXN0Li4uMzsgVGVzdC4uLjI7IFRlc3QuLi4xCisj
CisjIChUaGUgc2VtaWNvbG9ucyBhcmUgaGVyZSBmb3IgY2xhcmlmaWNhdGlvbiwgYnV0IG9mIGNv
dXJzZSBhcmUgbm90CisjIGVtaXR0ZWQuKSAgVGhpcyBpcyB3aGF0IEF1dG9jb25mIDIuMCAoSSB0
aGluaykgdG8gMi4xMyAoSSdtIHN1cmUpCisjIGltcGxlbWVudC4KKyMKKyMKKyMgVGhlIHNlY29u
ZCBpZGVhOiBmaXJzdCByZXF1aXJlZCBmaXJzdCBvdXQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgVGhlIG5hdHVyYWwgaW1wbGVtZW50YXRpb24gb2Yg
dGhlIGlkZWEgYWJvdmUgaXMgYnVnZ3kgYW5kIHByb2R1Y2VzCisjIHZlcnkgc3VycHJpc2luZyBy
ZXN1bHRzIGluIHNvbWUgc2l0dWF0aW9ucy4gIExldCdzIGNvbnNpZGVyIHRoZQorIyBmb2xsb3dp
bmcgZXhhbXBsZSB0byBleHBsYWluIHRoZSBidWc6CisjCisjIHwgbTRfZGVmdW4oW1RFU1QxXSwg
IFttNF9yZXF1aXJlKFtURVNUMmFdKW00X3JlcXVpcmUoW1RFU1QyYl0pXSkKKyMgfCBtNF9kZWZ1
bihbVEVTVDJhXSwgW10pCisjIHwgbTRfZGVmdW4oW1RFU1QyYl0sIFttNF9yZXF1aXJlKFtURVNU
M10pXSkKKyMgfCBtNF9kZWZ1bihbVEVTVDNdLCAgW200X3JlcXVpcmUoW1RFU1QyYV0pXSkKKyMg
fAorIyB8IEFDX0lOSVQKKyMgfCBURVNUMQorIworIyBUaGUgZGVwZW5kZW5jaWVzIGJldHdlZW4g
dGhlIG1hY3JvcyBhcmU6CisjCisjCQkgMyAtLS0gMmIKKyMJCS8gICAgICAgIFwgICAgICAgICAg
ICAgIGlzIG00X3JlcXVpcmUnZCBieQorIwkgICAgICAgLyAgICAgICAgICBcICAgICAgIGxlZnQg
LS0tLS0tLS0tLS0tLS0tLS0tLS0gcmlnaHQKKyMJICAgIDJhIC0tLS0tLS0tLS0tLSAxCisjCisj
IElmIHlvdSBzdHJpY3RseSBhcHBseSB0aGUgcnVsZXMgZ2l2ZW4gaW4gdGhlIHByZXZpb3VzIHNl
Y3Rpb24geW91IGdldDoKKyMKKyMJICAgR1JPVyAtIDI6IFRFU1QzCisjCSAgIEdST1cgLSAxOiBU
RVNUMmE7IFRFU1QyYgorIwkgICBHUk9XOiAgICAgVEVTVDEKKyMJICAgQk9EWToKKyMKKyMgKFRF
U1QyYSwgYWx0aG91Z2ggcmVxdWlyZWQgYnkgVEVTVDMgaXMgbm90IGV4cGFuZGVkIGluIEdST1cg
LSAzCisjIGJlY2F1c2UgaXMgaGFzIGFscmVhZHkgYmVlbiBleHBhbmRlZCBiZWZvcmUgaW4gR1JP
VyAtIDEsIHNvIGl0IGhhcworIyBiZWVuIEFDX1BST1ZJREUnZCwgc28gaXQgaXMgbm90IGV4cGFu
ZGVkIGFnYWluKSBzbyB3aGVuIHlvdSB1bmRpdmVydAorIyB0aGUgc3RhY2sgb2YgZGl2ZXJzaW9u
cywgeW91IGdldDoKKyMKKyMJICAgR1JPVyAtIDI6CisjCSAgIEdST1cgLSAxOgorIwkgICBHUk9X
OgorIwkgICBCT0RZOiAgICAgICAgVEVTVDM7IFRFU1QyYTsgVEVTVDJiOyBURVNUMQorIworIyBp
LmUuLCBURVNUMmEgaXMgZXhwYW5kZWQgYWZ0ZXIgVEVTVDMgYWx0aG91Z2ggdGhlIGxhdHRlciBy
ZXF1aXJlZCB0aGUKKyMgZm9ybWVyLgorIworIyBTdGFydGluZyBmcm9tIDIuNTAsIHdlIHVzZSBh
biBpbXBsZW1lbnRhdGlvbiBwcm92aWRlZCBieSBBeGVsIFRoaW1tLgorIyBUaGUgaWRlYSBpcyBz
aW1wbGU6IHRoZSBvcmRlciBpbiB3aGljaCBtYWNyb3MgYXJlIGVtaXR0ZWQgbXVzdCBiZSB0aGUK
KyMgc2FtZSBhcyB0aGUgb25lIGluIHdoaWNoIG1hY3JvcyBhcmUgZXhwYW5kZWQuICAoVGhlIGJ1
ZyBhYm92ZSBjYW4KKyMgaW5kZWVkIGJlIGRlc2NyaWJlZCBhczogYSBtYWNybyBoYXMgYmVlbiBt
NF9wcm92aWRlJ2QgYmVmb3JlIGl0cworIyBkZXBlbmRlbnQsIGJ1dCBpdCBpcyBlbWl0dGVkIGFm
dGVyOiB0aGUgbGFjayBvZiBjb3JyZWxhdGlvbiBiZXR3ZWVuCisjIGVtaXNzaW9uIGFuZCBleHBh
bnNpb24gb3JkZXIgaXMgZ3VpbHR5KS4KKyMKKyMgSG93IHRvIGRvIHRoYXQ/ICBZb3Uga2VlcCB0
aGUgc3RhY2sgb2YgZGl2ZXJzaW9ucyB0byBlbGFib3JhdGUgdGhlCisjIG1hY3JvcywgYnV0IGVh
Y2ggdGltZSBhIG1hY3JvIGlzIGZ1bGx5IGV4cGFuZGVkLCBlbWl0IGl0IGltbWVkaWF0ZWx5Lgor
IworIyBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2hlbiBURVNUMmEgaXMgZXhwYW5kZWQsIGJ1dCBp
dCdzIGVwaWxvZ3VlIGlzCisjIG5vdCBydW4geWV0LCB5b3UgaGF2ZToKKyMKKyMJICAgR1JPVyAt
IDI6CisjCSAgIEdST1cgLSAxOiBURVNUMmEKKyMJICAgR1JPVzogICAgIEVsYWJvcmF0aW9uIG9m
IFRFU1QxCisjCSAgIEJPRFk6CisjCisjIFRoZSBlcGlsb2d1ZSBvZiBURVNUMmEgZW1pdHMgaXQg
aW1tZWRpYXRlbHk6CisjCisjCSAgIEdST1cgLSAyOgorIwkgICBHUk9XIC0gMToKKyMJICAgR1JP
VzogICAgIEVsYWJvcmF0aW9uIG9mIFRFU1QxCisjCSAgIEJPRFk6ICAgICBURVNUMmEKKyMKKyMg
VEVTVDJiIHRoZW4gcmVxdWlyZXMgVEVTVDMsIHNvIHJpZ2h0IGJlZm9yZSB0aGUgZXBpbG9ndWUg
b2YgVEVTVDMsIHlvdQorIyBoYXZlOgorIworIwkgICBHUk9XIC0gMjogVEVTVDMKKyMJICAgR1JP
VyAtIDE6IEVsYWJvcmF0aW9uIG9mIFRFU1QyYgorIwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24g
b2YgVEVTVDEKKyMJICAgQk9EWTogICAgICBURVNUMmEKKyMKKyMgVGhlIGVwaWxvZ3VlIG9mIFRF
U1QzIGVtaXRzIGl0OgorIworIwkgICBHUk9XIC0gMjoKKyMJICAgR1JPVyAtIDE6IEVsYWJvcmF0
aW9uIG9mIFRFU1QyYgorIwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24gb2YgVEVTVDEKKyMJICAg
Qk9EWTogICAgIFRFU1QyYTsgVEVTVDMKKyMKKyMgVEVTVDJiIGlzIG5vdyBjb21wbGV0ZWx5IGV4
cGFuZGVkLCBhbmQgZW1pdHRlZDoKKyMKKyMJICAgR1JPVyAtIDI6CisjCSAgIEdST1cgLSAxOgor
IwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24gb2YgVEVTVDEKKyMJICAgQk9EWTogICAgIFRFU1Qy
YTsgVEVTVDM7IFRFU1QyYgorIworIyBhbmQgZmluYWxseSwgVEVTVDEgaXMgZmluaXNoZWQgYW5k
IGVtaXR0ZWQ6CisjCisjCSAgIEdST1cgLSAyOgorIwkgICBHUk9XIC0gMToKKyMJICAgR1JPVzoK
KyMJICAgQk9EWTogICAgIFRFU1QyYTsgVEVTVDM7IFRFU1QyYjogVEVTVDEKKyMKKyMgVGhlIGlk
ZWEgaXMgc2ltcGxlLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGEgYml0IGludm9sdmVkLiAg
SWYKKyMgeW91IGFyZSBsaWtlIG1lLCB5b3Ugd2lsbCB3YW50IHRvIHNlZSB0aGUgYWN0dWFsIGZ1
bmN0aW9uaW5nIG9mIHRoaXMKKyMgaW1wbGVtZW50YXRpb24gdG8gYmUgY29udmluY2VkLiAgVGhl
IG5leHQgc2VjdGlvbiBnaXZlcyB0aGUgZnVsbAorIyBkZXRhaWxzLgorIworIworIyBUaGUgQXhl
bCBUaGltbSBpbXBsZW1lbnRhdGlvbiBhdCB3b3JrCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMKKyMgV2UgY29uc2lkZXIgdGhlIG1hY3JvcyBhYm92ZSwgYW5kIHRo
aXMgY29uZmlndXJlLmFjOgorIworIwkgICAgQUNfSU5JVAorIwkgICAgVEVTVDEKKyMKKyMgWW91
IHNob3VsZCBrZWVwIHRoZSBkZWZpbml0aW9ucyBvZiBfbTRfZGVmdW5fcHJvLCBfbTRfZGVmdW5f
ZXBpLCBhbmQKKyMgbTRfcmVxdWlyZSBhdCBoYW5kIHRvIGZvbGxvdyB0aGUgc3RlcHMuCisjCisj
IFRoaXMgaW1wbGVtZW50YXRpb24gdHJpZXMgbm90IHRvIGFzc3VtZSB0aGF0IHRoZSBjdXJyZW50
IGRpdmVyc2lvbiBpcworIyBCT0RZLCBzbyBhcyBzb29uIGFzIGEgbWFjcm8gKG00X2RlZnVuJ2Qp
IGlzIGV4cGFuZGVkLCB3ZSBmaXJzdAorIyByZWNvcmQgdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIHVu
ZGVyIHRoZSBuYW1lIF9tNF9kaXZlcnRfZHVtcCAoZGVub3RlZAorIyBEVU1QIGJlbG93IGZvciBz
aG9ydCkuICBUaGlzIGludHJvZHVjZXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2Ugd2l0aAorIyB0
aGUgcHJldmlvdXMgdmVyc2lvbnMgb2YgQXV0b2NvbmY6IHlvdSBjYW5ub3QgdXNlIG00X3JlcXVp
cmUgaWYgeW91CisjIGFyZSBub3QgaW5zaWRlIGFuIG00X2RlZnVuJ2QgbWFjcm8sIGFuZCBlc3Bl
Y2lhbGx5LCB5b3UgY2Fubm90CisjIG00X3JlcXVpcmUgZGlyZWN0bHkgZnJvbSB0aGUgdG9wIGxl
dmVsLgorIworIyBXZSBoYXZlIG5vdCB0cmllZCB0byBzaW11bGF0ZSB0aGUgb2xkIGJlaGF2aW9y
IChiZXR0ZXIgeWV0LCB3ZQorIyBkaWFnbm9zZSBpdCksIGJlY2F1c2UgaXQgaXMgdG9vIGRhbmdl
cm91czogYSBtYWNybyBtNF9yZXF1aXJlJ2QgZnJvbQorIyB0aGUgdG9wIGxldmVsIGlzIGV4cGFu
ZGVkIGJlZm9yZSB0aGUgYm9keSBvZiBgY29uZmlndXJlJywgaS5lLiwgYmVmb3JlCisjIGFueSBv
dGhlciB0ZXN0IHdhcyBydW4uICBJIGxldCB5b3UgaW1hZ2luZSB0aGUgcmVzdWx0IG9mIHJlcXVp
cmluZworIyBBQ19TVERDX0hFQURFUlMgZm9yIGluc3RhbmNlLCBiZWZvcmUgQUNfUFJPR19DQyB3
YXMgYWN0dWFsbHkgcnVuLi4uLgorIworIyBBZnRlciBBQ19JTklUIHdhcyBydW4sIHRoZSBjdXJy
ZW50IGRpdmVyc2lvbiBpcyBCT0RZLgorIyAqIEFDX0lOSVQgd2FzIHJ1bgorIyAgIERVTVA6ICAg
ICAgICAgICAgICAgIHVuZGVmaW5lZAorIyAgIGRpdmVyc2lvbiBzdGFjazogICAgIEJPRFkgfC0K
KyMKKyMgKiBURVNUMSBpcyBleHBhbmRlZAorIyBUaGUgcHJvbG9ndWUgb2YgVEVTVDEgc2V0cyBf
bTRfZGl2ZXJ0X2R1bXAsIHdoaWNoIGlzIHRoZSBkaXZlcnNpb24KKyMgd2hlcmUgdGhlIGN1cnJl
bnQgZWxhYm9yYXRpb24gd2lsbCBiZSBkdW1wZWQsIHRvIHRoZSBjdXJyZW50CisjIGRpdmVyc2lv
bi4gIEl0IGFsc28gbTRfZGl2ZXJ0X3B1c2ggdG8gR1JPVywgd2hlcmUgdGhlIGZ1bGwKKyMgZXhw
YW5zaW9uIG9mIFRFU1QxIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHdpbGwgYmUgZWxhYm9yYXRlZC4K
KyMgICBEVU1QOiAgICAgICAgQk9EWQorIyAgIEJPRFk6ICAgICAgICBlbXB0eQorIyAgIGRpdmVy
c2lvbnM6ICBHUk9XLCBCT0RZIHwtCisjCisjICogVEVTVDEgcmVxdWlyZXMgVEVTVDJhCisjIF9t
NF9yZXF1aXJlX2NhbGwgbTRfZGl2ZXJ0X3B1c2hlcyBhbm90aGVyIHRlbXBvcmFyeSBkaXZlcnNp
b24sCisjIEdST1cgLSAxLCBhbmQgZXhwYW5kcyBURVNUMmEgaW4gdGhlcmUuCisjICAgRFVNUDog
ICAgICAgIEJPRFkKKyMgICBCT0RZOiAgICAgICAgZW1wdHkKKyMgICBHUk9XIC0gMTogICAgVEVT
VDJhCisjICAgZGl2ZXJzaW9uczogIEdST1cgLSAxLCBHUk9XLCBCT0RZIHwtCisjIFRoZW4gdGhl
IGNvbnRlbnQgb2YgdGhlIHRlbXBvcmFyeSBkaXZlcnNpb24gaXMgbW92ZWQgdG8gRFVNUCBhbmQg
dGhlCisjIHRlbXBvcmFyeSBkaXZlcnNpb24gaXMgcG9wcGVkLgorIyAgIERVTVA6ICAgICAgICBC
T0RZCisjICAgQk9EWTogICAgICAgIFRFU1QyYQorIyAgIGRpdmVyc2lvbnM6ICBHUk9XLCBCT0RZ
IHwtCisjCisjICogVEVTVDEgcmVxdWlyZXMgVEVTVDJiCisjIEFnYWluLCBfbTRfcmVxdWlyZV9j
YWxsIHB1c2hlcyBHUk9XIC0gMSBhbmQgaGVhZHMgdG8gZXhwYW5kIFRFU1QyYi4KKyMgICBEVU1Q
OiAgICAgICAgQk9EWQorIyAgIEJPRFk6ICAgICAgICBURVNUMmEKKyMgICBkaXZlcnNpb25zOiAg
R1JPVyAtIDEsIEdST1csIEJPRFkgfC0KKyMKKyMgKiBURVNUMmIgcmVxdWlyZXMgVEVTVDMKKyMg
X200X3JlcXVpcmVfY2FsbCBwdXNoZXMgR1JPVyAtIDIgYW5kIGV4cGFuZHMgVEVTVDMgaGVyZS4K
KyMgKFRFU1QzIHJlcXVpcmVzIFRFU1QyYSwgYnV0IFRFU1QyYSBoYXMgYWxyZWFkeSBiZWVuIG00
X3Byb3ZpZGUnZCwgc28KKyMgbm90aGluZyBoYXBwZW5zLikKKyMgICBEVU1QOiAgICAgICAgQk9E
WQorIyAgIEJPRFk6ICAgICAgICBURVNUMmEKKyMgICBHUk9XIC0gMjogICAgVEVTVDMKKyMgICBk
aXZlcnNpb25zOiAgR1JPVyAtIDIsIEdST1cgLSAxLCBHUk9XLCBCT0RZIHwtCisjIFRoZW4gdGhl
IGRpdmVyc2lvbiBpcyBhcHBlbmRlZCB0byBEVU1QLCBhbmQgcG9wcGVkLgorIyAgIERVTVA6ICAg
ICAgICBCT0RZCisjICAgQk9EWTogICAgICAgIFRFU1QyYTsgVEVTVDMKKyMgICBkaXZlcnNpb25z
OiAgR1JPVyAtIDEsIEdST1csIEJPRFkgfC0KKyMKKyMgKiBURVNUMSByZXF1aXJlcyBURVNUMmIg
KGNvbnRkLikKKyMgVGhlIGNvbnRlbnQgb2YgVEVTVDJiIGlzIGV4cGFuZGVkLi4uCisjICAgRFVN
UDogICAgICAgIEJPRFkKKyMgICBCT0RZOiAgICAgICAgVEVTVDJhOyBURVNUMworIyAgIEdST1cg
LSAxOiAgICBURVNUMmIsCisjICAgZGl2ZXJzaW9uczogIEdST1cgLSAxLCBHUk9XLCBCT0RZIHwt
CisjIC4uLiBhbmQgbW92ZWQgdG8gRFVNUC4KKyMgICBEVU1QOiAgICAgICAgQk9EWQorIyAgIEJP
RFk6ICAgICAgICBURVNUMmE7IFRFU1QzOyBURVNUMmIKKyMgICBkaXZlcnNpb25zOiAgR1JPVywg
Qk9EWSB8LQorIworIyAqIFRFU1QxIGlzIGV4cGFuZGVkOiBlcGlsb2d1ZQorIyBURVNUMSdzIG93
biBjb250ZW50IGlzIGluIEdST1cuLi4KKyMgICBEVU1QOiAgICAgICAgQk9EWQorIyAgIEJPRFk6
ICAgICAgICBURVNUMmE7IFRFU1QzOyBURVNUMmIKKyMgICBHUk9XOiAgICAgICAgVEVTVDEKKyMg
ICBkaXZlcnNpb25zOiAgQk9EWSB8LQorIyAuLi4gYW5kIGl0J3MgZXBpbG9ndWUgbW92ZXMgaXQg
dG8gRFVNUCBhbmQgdGhlbiB1bmRlZmluZXMgRFVNUC4KKyMgICBEVU1QOiAgICAgICB1bmRlZmlu
ZWQKKyMgICBCT0RZOiAgICAgICBURVNUMmE7IFRFU1QzOyBURVNUMmI7IFRFU1QxCisjICAgZGl2
ZXJzaW9uczogQk9EWSB8LQorIworIworIyBUaGUgdGhpcmQgaWRlYTogdHJhY2sgbWFjcm9zIHBy
b3ZpZGVkIGJlZm9yZSB0aGV5IHdlcmUgcmVxdWlyZWQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFVzaW5nIGp1
c3QgdGhlIGZpcnN0IHR3byBpZGVhcywgQXV0b2NvbmYgMi41MCB0aHJvdWdoIDIuNjMgc3RpbGwg
aGFkCisjIGEgc3VidGxlIGJ1ZyBmb3IgbW9yZSB0aGFuIHNldmVuIHllYXJzLiAgTGV0J3MgY29u
c2lkZXIgdGhlCisjIGZvbGxvd2luZyBleGFtcGxlIHRvIGV4cGxhaW4gdGhlIGJ1ZzoKKyMKKyMg
fCBtNF9kZWZ1bihbVEVTVDFdLCBbMV0pCisjIHwgbTRfZGVmdW4oW1RFU1QyXSwgWzJbXW00X3Jl
cXVpcmUoW1RFU1QxXSldKQorIyB8IG00X2RlZnVuKFtURVNUM10sIFszIFRFU1QxIG00X3JlcXVp
cmUoW1RFU1QyXSldKQorIyB8IFRFU1QzCisjCisjIEFmdGVyIHRoZSBwcm9sb2d1ZSBvZiBURVNU
Mywgd2UgYXJlIGNvbGxlY3RpbmcgdGV4dCBpbiBHUk9XIHdpdGggdGhlCisjIGludGVudCBvZiBk
dW1waW5nIGl0IGluIEJPRFkgZHVyaW5nIHRoZSBlcGlsb2d1ZS4gIE5leHQsIHdlCisjIGVuY291
bnRlciB0aGUgZGlyZWN0IGludm9jYXRpb24gb2YgVEVTVDEsIHdoaWNoIHByb3ZpZGVzIHRoZSBt
YWNybworIyBpbiBwbGFjZSBpbiBHUk9XLiAgRnJvbSB0aGVyZSwgd2UgZW5jb3VudGVyIGEgcmVx
dWlyZW1lbnQgZm9yIFRFU1QyLAorIyB3aGljaCBtdXN0IGJlIGNvbGxlY3RlZCBpbiBhIG5ldyBk
aXZlcnNpb24uICBXaGlsZSBleHBhbmRpbmcgVEVTVDIsCisjIHdlIGVuY291bnRlciBhIHJlcXVp
cmVtZW50IGZvciBURVNUMSwgYnV0IHNpbmNlIGl0IGhhcyBhbHJlYWR5IGJlZW4KKyMgZXhwYW5k
ZWQsIHRoZSBBeGVsIFRoaW1tIGFsZ29yaXRobSBzdGF0ZXMgdGhhdCB3ZSBjYW4gdHJlYXQgaXQg
YXMgYQorIyBuby1vcC4gIEJ1dCB0aGF0IHdvdWxkIGxlYWQgdG8gYW4gZW5kIHJlc3VsdCBvZiBg
MiAzIDEnLCBtZWFuaW5nCisjIHRoYXQgd2UgaGF2ZSBvbmNlIGFnYWluIG91dHB1dCBhIG1hY3Jv
IChURVNUMikgcHJpb3IgdG8gaXRzCisjIHJlcXVpcmVtZW50cyAoVEVTVDEpLgorIworIyBUaGUg
cHJvYmxlbSBjYW4gb25seSBvY2N1ciBpZiBhIHNpbmdsZSBkZWZ1bidkIG1hY3JvIGZpcnN0IHBy
b3ZpZGVzLAorIyB0aGVuIGxhdGVyIGluZGlyZWN0bHkgcmVxdWlyZXMsIHRoZSBzYW1lIG1hY3Jv
LiAgTm90ZSB0aGF0IGRpcmVjdGx5CisjIGV4cGFuZGluZyB0aGVuIHJlcXVpcmluZyBhIG1hY3Jv
IGlzIG9rYXk6IGJlY2F1c2UgdGhlIGRlcGVuZGVuY3kgd2FzCisjIG1ldCwgdGhlIHJlcXVpcmUg
cGhhc2UgY2FuIGJlIGEgbm8tb3AuICBGb3IgdGhhdCBtYXR0ZXIsIHRoZSBvdXRlcgorIyBtYWNy
byBjYW4gZXZlbiByZXF1aXJlIHR3byBoZWxwZXJzLCB3aGVyZSB0aGUgZmlyc3QgaGVscGVyIGV4
cGFuZHMKKyMgdGhlIG1hY3JvLCBhbmQgdGhlIHNlY29uZCBoZWxwZXIgaW5kaXJlY3RseSByZXF1
aXJlcyB0aGUgbWFjcm8uCisjIE91dC1vZi1vcmRlciBleHBhbnNpb24gaXMgb25seSBwcmVzZW50
IGlmIHRoZSBpbm5lciBtYWNybyBpcworIyByZXF1aXJlZCBieSBzb21ldGhpbmcgdGhhdCB3aWxs
IGJlIGhvaXN0ZWQgaW4gZnJvbnQgb2Ygd2hlcmUgdGhlCisjIGRpcmVjdCBleHBhbnNpb24gb2Nj
dXJyZWQuICBJbiBvdGhlciB3b3Jkcywgd2UgbXVzdCBiZSBjYXJlZnVsIG5vdAorIyB0byB3YXJu
IG9uOgorIworIyB8IG00X2RlZnVuKFtURVNUNF0sIFs0XSkKKyMgfCBtNF9kZWZ1bihbVEVTVDVd
LCBbNSBURVNUNCBtNF9yZXF1aXJlKFtURVNUNF0pXSkKKyMgfCBURVNUNSA9PiA1IDQKKyMKKyMg
b3IgZXZlbiB0aGUgbW9yZSBjb21wbGV4OgorIworIyB8IG00X2RlZnVuKFtURVNUNl0sIFs2XSkK
KyMgfCBtNF9kZWZ1bihbVEVTVDddLCBbNyBURVNUNl0pCisjIHwgbTRfZGVmdW4oW1RFU1Q4XSwg
WzggbTRfcmVxdWlyZShbVEVTVDZdKV0pCisjIHwgbTRfZGVmdW4oW1RFU1Q5XSwgWzkgbTRfcmVx
dWlyZShbVEVTVDhdKV0pCisjIHwgbTRfZGVmdW4oW1RFU1QxMF0sIFsxMCBtNF9yZXF1aXJlKFtU
RVNUN10pIG00X3JlcXVpcmUoW1RFU1Q5XSldKQorIyB8IFRFU1QxMCA9PiA3IDYgOCA5IDEwCisj
CisjIFNvLCB0byBkZXRlY3Qgd2hldGhlciBhIHJlcXVpcmUgd2FzIGRpcmVjdCBvciBpbmRpcmVj
dCwgbTRfZGVmdW4gYW5kCisjIG00X3JlcXVpcmUgdHJhY2sgdGhlIG5hbWUgb2YgdGhlIG1hY3Jv
IHRoYXQgY2F1c2VkIGEgZGl2ZXJzaW9uIHRvIGJlCisjIGNyZWF0ZWQgKHVzaW5nIHRoZSBzdGFj
ayBfbTRfZGl2ZXJ0aW5nLCBjb3VwbGVkIHdpdGggYW4gTygxKSBsb29rdXAKKyMgX200X2RpdmVy
dGluZyhbTkFNRV0pKSwgYW5kIG00X3Byb3ZpZGUgc3RvcmVzIHRoZSBuYW1lIGFzc29jaWF0ZWQK
KyMgd2l0aCB0aGUgZGl2ZXJzaW9uIGF0IHdoaWNoIGEgbWFjcm8gd2FzIHByb3ZpZGVkLiAgQSBy
ZXF1aXJlIGNhbGwgaXMKKyMgZGlyZWN0IGlmIGl0IG9jY3VycyB3aXRoaW4gdGhlIHNhbWUgZGl2
ZXJzaW9uIHdoZXJlIHRoZSBtYWNybyB3YXMKKyMgcHJvdmlkZWQsIG9yIGlmIHRoZSBkaXZlcnNp
b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm92aWRpbmcgY29udGV4dAorIyBoYXMgYmVlbiBjb2xs
ZWN0ZWQuCisjCisjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgd2FybmluZyBpbnZvbHZlcyB0
cmFja2luZyB0aGUgc2V0IG9mCisjIG1hY3JvcyB3aGljaCBoYXZlIGJlZW4gcHJvdmlkZWQgc2lu
Y2UgdGhlIHN0YXJ0IG9mIHRoZSBvdXRlcm1vc3QKKyMgZGVmdW4nZCBtYWNybyAodGhlIHNldCBp
cyBuYW1lZCBfbTRfcHJvdmlkZSkuICBXaGVuIHN0YXJ0aW5nIGFuCisjIG91dGVybW9zdCBtYWNy
bywgdGhlIHNldCBpcyBlbXB0aWVkOyB3aGVuIGEgbWFjcm8gaXMgcHJvdmlkZWQsIGl0IGlzCisj
IGFkZGVkIHRvIHRoZSBzZXQ7IHdoZW4gcmVxdWlyZSBleHBhbmRzIHRoZSBib2R5IG9mIGEgbWFj
cm8sIGl0IGlzCisjIHJlbW92ZWQgZnJvbSB0aGUgc2V0OyBhbmQgd2hlbiBhIG1hY3JvIGlzIGlu
ZGlyZWN0bHkgcmVxdWlyZWQsIHRoZQorIyBzZXQgaXMgY2hlY2tlZC4gIElmIGEgbWFjcm8gaXMg
aW4gdGhlIHNldCwgdGhlbiBpdCBoYXMgYmVlbiBwcm92aWRlZAorIyBiZWZvcmUgaXQgd2FzIHJl
cXVpcmVkLCBhbmQgd2Ugc2F0aXNmeSBkZXBlbmRlbmNpZXMgYnkgZXhwYW5kaW5nIHRoZQorIyBt
YWNybyBhcyBpZiBpdCBoYWQgbmV2ZXIgYmVlbiBwcm92aWRlZDsgaW4gdGhlIGV4YW1wbGUgZ2l2
ZW4gYWJvdmUsCisjIHRoaXMgbWVhbnMgd2Ugbm93IG91dHB1dCBgMSAyIDMgMScuICBNZWFud2hp
bGUsIGEgd2FybmluZyBpcyBpc3N1ZWQKKyMgdG8gaW5mb3JtIHRoZSB1c2VyIHRoYXQgaGVyIG1h
Y3JvcyB0cmlnZ2VyIHRoZSBidWcgaW4gb2xkZXIgYXV0b2NvbmYKKyMgdmVyc2lvbnMsIGFuZCB0
aGF0IGhlciBvdXRwdXQgZmlsZSBub3cgY29udGFpbnMgcmVkdW5kYW50IGNvbnRlbnRzCisjIChh
bmQgcG9zc2libHkgbmV3IHByb2JsZW1zLCBpZiB0aGUgcmVwZWF0ZWQgbWFjcm8gd2FzIG5vdAor
IyBpZGVtcG90ZW50KS4gIE1lYW53aGlsZSwgbWFjcm9zIGRlZmluZWQgYnkgbTRfZGVmdW5fb25j
ZSBpbnN0ZWFkIG9mCisjIG00X2RlZnVuIGFyZSBpZGVtcG90ZW50LCBhdm9pZGluZyBhbnkgd2Fy
bmluZyBvciBkdXBsaWNhdGUgb3V0cHV0LgorIworIworIyAyLiBLZWVwaW5nIHRyYWNrIG9mIHRo
ZSBleHBhbnNpb24gc3RhY2sKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisjCisjIFdoZW4gTTQgZXhwYW5zaW9uIGdvZXMgd3JvbmcgaXQgaXMgb2Z0ZW4gZXh0cmVt
ZWx5IGhhcmQgdG8gZmluZCB0aGUKKyMgcGF0aCBhbW9uZ3N0IG1hY3JvcyB0aGF0IGRyb3ZlIHRv
IHRoZSBmYWlsdXJlLiAgV2hhdCBpcyBuZWVkZWQgaXMKKyMgdGhlIHN0YWNrIG9mIG1hY3JvIGBj
YWxscycuIE9uZSBjb3VsZCBpbWFnaW5lIHRoYXQgR05VIE00IHdvdWxkCisjIG1haW50YWluIGEg
c3RhY2sgb2YgbWFjcm8gZXhwYW5zaW9ucywgdW5mb3J0dW5hdGVseSBpdCBkb2Vzbid0LCBzbwor
IyB3ZSBkbyBpdCBieSBoYW5kLiAgVGhpcyBpcyBvZiBjb3Vyc2UgZXh0cmVtZWx5IGNvc3RseSwg
YnV0IHRoZSBoZWxwCisjIHRoaXMgc3RhY2sgcHJvdmlkZXMgaXMgd29ydGggaXQuICBOZXZlcnRo
ZWxlc3MgdG8gbGltaXQgdGhlCisjIHBlcmZvcm1hbmNlIHBlbmFsdHkgdGhpcyBpcyBpbXBsZW1l
bnRlZCBvbmx5IGZvciBtNF9kZWZ1bidkIG1hY3JvcywKKyMgbm90IGZvciBkZWZpbmUnZCBtYWNy
b3MuCisjCisjIEVhY2ggdGltZSB3ZSBlbnRlciBhbiBtNF9kZWZ1bidkIG1hY3Jvcywgd2UgYWRk
IGEgZGVmaW5pdGlvbiBpbgorIyBfbTRfZXhwYW5zaW9uX3N0YWNrLCBhbmQgd2hlbiB3ZSBleGl0
IHRoZSBtYWNybywgd2UgcmVtb3ZlIGl0ICh0aGFua3MKKyMgdG8gcHVzaGRlZi9wb3BkZWYpLiAg
bTRfc3RhY2tfZm9yZWFjaCBpcyB1c2VkIHRvIHByaW50IHRoZSBleHBhbnNpb24KKyMgc3RhY2sg
aW4gdGhlIHJhcmUgY2FzZXMgd2hlbiBpdCdzIG5lZWRlZC4KKyMKKyMgSW4gYWRkaXRpb24sIHdl
IHdhbnQgdG8gZGV0ZWN0IGNpcmN1bGFyIG00X3JlcXVpcmUgZGVwZW5kZW5jaWVzLgorIyBFYWNo
IHRpbWUgd2UgZXhwYW5kIGEgbWFjcm8gRk9PIHdlIGRlZmluZSBfbTRfZXhwYW5kaW5nKEZPTyk7
IGFuZAorIyBtNF9yZXF1aXJlKEJBUikgc2ltcGx5IGNoZWNrcyB3aGV0aGVyIF9tNF9leHBhbmRp
bmcoQkFSKSBpcyBkZWZpbmVkLgorCisKKyMgbTRfZXhwYW5zaW9uX3N0YWNrCisjIC0tLS0tLS0t
LS0tLS0tLS0tLQorIyBFeHBhbmRzIHRvIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGV4cGFu
c2lvbiBzdGFjay4gIFRoZSBjYWxsZXIKKyMgbXVzdCBzdXBwbHkgYSB0cmFpbGluZyBuZXdsaW5l
LiAgVGhpcyBtYWNybyBhbHdheXMgcHJpbnRzIGEKKyMgbG9jYXRpb247IGNoZWNrIHdoZXRoZXIg
X200X2V4cGFuc2lvbl9zdGFjayBpcyBkZWZpbmVkIHRvIGZpbHRlciBvdXQKKyMgdGhlIGNhc2Ug
d2hlbiBubyBkZWZ1bidkIG1hY3JvIGlzIGluIGZvcmNlLgorbTRfZGVmaW5lKFttNF9leHBhbnNp
b25fc3RhY2tdLAorW200X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm8oW18kMF0sIFtfJDBfZW50cnko
XSwgWykKK10pbTRfbG9jYXRpb25bOiB0aGUgdG9wIGxldmVsXV0pCisKKyMgX200X2V4cGFuc2lv
bl9zdGFja19lbnRyeShNQUNSTykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgRm9ybWF0IGFuIGVudHJ5IGZvciBNQUNSTyBmb3VuZCBvbiB0aGUgZXhwYW5zaW9uIHN0YWNr
LgorbTRfZGVmaW5lKFtfbTRfZXhwYW5zaW9uX3N0YWNrX2VudHJ5XSwKK1tfbTRfZGVmbihbbTRf
bG9jYXRpb24oJDEpXSlbOiAkMSBpcyBleHBhbmRlZCBmcm9tLi4uXV0pCisKKyMgbTRfZXhwYW5z
aW9uX3N0YWNrX3B1c2goTUFDUk8pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBGb3JtIGFuIGVudHJ5IG9mIHRoZSBleHBhbnNpb24gc3RhY2sgb24gZW50cnkgdG8gTUFDUk8g
YW5kIHB1c2ggaXQuCittNF9kZWZpbmUoW200X2V4cGFuc2lvbl9zdGFja19wdXNoXSwKK1ttNF9w
dXNoZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgWyQxXSldKQorCisKKyMgX200X2RpdmVydChH
Uk9XKQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIFRoaXMgZGl2ZXJzaW9uIGlzIHVzZWQgYnkgdGhl
IG00X2RlZnVuL200X3JlcXVpcmUgbWFjaGluZXJ5LiAgSXQgaXMKKyMgaW1wb3J0YW50IHRvIGtl
ZXAgcm9vbSBiZWZvcmUgR1JPVyBiZWNhdXNlIGZvciBlYWNoIG5lc3RlZAorIyBBQ19SRVFVSVJF
IHdlIHVzZSBhbiBhZGRpdGlvbmFsIGRpdmVyc2lvbiAoaS5lLiwgdHdvIG00X3JlcXVpcmUncwor
IyB3aWxsIHVzZSBHUk9XIC0gMi4gIE1vcmUgdGhhbiAzIGxldmVscyBoYXMgbmV2ZXIgc2VlbWVk
IHRvIGJlCisjIG5lZWRlZC4pCisjCisjIC4uLgorIyAtIEdST1cgLSAyCisjICAgbTRfcmVxdWly
ZSdkIGNvZGUsIDIgbGV2ZWwgZGVlcAorIyAtIEdST1cgLSAxCisjICAgbTRfcmVxdWlyZSdkIGNv
ZGUsIDEgbGV2ZWwgZGVlcAorIyAtIEdST1cKKyMgICBtNF9kZWZ1bidkIG1hY3JvcyBhcmUgZWxh
Ym9yYXRlZCBoZXJlLgorCittNF9kZWZpbmUoW19tNF9kaXZlcnQoR1JPVyldLCAgICAgICAxMDAw
MCkKKworCisjIF9tNF9kZWZ1bl9wcm8oTUFDUk8tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBUaGUgcHJvbG9ndWUgZm9yIEF1dG9jb25mIG1hY3Jvcy4KKyMKKyMgVGhpcyBp
cyBjYWxsZWQgZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBtYWNybyBpbnZv
Y2F0aW9ucworIyBieSBhdm9pZGluZyBkbmwgYW5kIG00X2RlZm4gb3ZlcmhlYWQuCittNF9kZWZp
bmUoW19tNF9kZWZ1bl9wcm9dLAorW200X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW10s
IFtfbTRfZGVmdW5fcHJvX291dGVyKFskMV0pXSldZG5sCitbbTRfZXhwYW5zaW9uX3N0YWNrX3B1
c2goWyQxXSltNF9wdXNoZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0pXSkKKworbTRfZGVmaW5lKFtf
bTRfZGVmdW5fcHJvX291dGVyXSwKK1ttNF9zZXRfZGVsZXRlKFtfbTRfcHJvdmlkZV0pXWRubAor
W200X3B1c2hkZWYoW19tNF9kaXZlcnRpbmcoWyQxXSldKW00X3B1c2hkZWYoW19tNF9kaXZlcnRp
bmddLCBbJDFdKV1kbmwKK1ttNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2R1bXBdLCBtNF9kaXZudW0p
bTRfZGl2ZXJ0X3B1c2goW0dST1ddKV0pCisKKyMgX200X2RlZnVuX2VwaShNQUNSTy1OQU1FKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoZSBFcGlsb2d1ZSBmb3IgQXV0b2NvbmYg
bWFjcm9zLiAgTUFDUk8tTkFNRSBvbmx5IGhlbHBzIHRyYWNpbmcKKyMgdGhlIFBSTy9FUEkgcGFp
cnMuCisjCisjIFRoaXMgaXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIG1pbmltaXplIHRoZSBudW1i
ZXIgb2YgbWFjcm8gaW52b2NhdGlvbnMKKyMgYnkgYXZvaWRpbmcgZG5sIGFuZCBtNF9wb3BkZWYg
b3ZlcmhlYWQuCittNF9kZWZpbmUoW19tNF9kZWZ1bl9lcGldLAorW19tNF9wb3BkZWYoW19tNF9l
eHBhbmRpbmcoJDEpXSwgW19tNF9leHBhbnNpb25fc3RhY2tdKV1kbmwKK1ttNF9pZmRlZihbX200
X2V4cGFuc2lvbl9zdGFja10sIFtdLCBbX200X2RlZnVuX2VwaV9vdXRlcihbJDFdKV0pXWRubAor
W200X3Byb3ZpZGUoWyQxXSldKQorCittNF9kZWZpbmUoW19tNF9kZWZ1bl9lcGlfb3V0ZXJdLAor
W19tNF9wb3BkZWYoW19tNF9kaXZlcnRfZHVtcF0sIFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgW19t
NF9kaXZlcnRpbmddKV1kbmwKK1ttNF9kaXZlcnRfcG9wKFtHUk9XXSltNF91bmRpdmVydChbR1JP
V10pXSkKKworCisjIF9tNF9kaXZlcnRfZHVtcAorIyAtLS0tLS0tLS0tLS0tLS0KKyMgSWYgYmxh
bmssIHdlIGFyZSBvdXRzaWRlIG9mIGFueSBkZWZ1bidkIG1hY3JvLiAgT3RoZXJ3aXNlLCBleHBh
bmRzCisjIHRvIHRoZSBkaXZlcnNpb24gbnVtYmVyIChub3QgbmFtZSkgd2hlcmUgcmVxdWlyZSdk
IG1hY3JvcyBzaG91bGQgYmUKKyMgbW92ZWQgb25jZSBjb21wbGV0ZWQuCittNF9kZWZpbmUoW19t
NF9kaXZlcnRfZHVtcF0pCisKKworIyBtNF9kaXZlcnRfcmVxdWlyZShESVZFUlNJT04sIE5BTUUt
VE8tQ0hFQ0ssIFtCT0RZLVRPLUVYUEFORF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2FtZSBhcyBtNF9yZXF1aXJl
LCBidXQgQk9EWS1UTy1FWFBBTkQgZ29lcyBpbnRvIHRoZSBuYW1lZCBESVZFUlNJT047CisjIHJl
cXVpcmVtZW50cyBzdGlsbCBnbyBpbiB0aGUgY3VycmVudCBkaXZlcnNpb24gdGhvdWdoLgorIwor
bTRfZGVmaW5lKFttNF9kaXZlcnRfcmVxdWlyZV0sCitbbTRfaWZkZWYoW19tNF9leHBhbmRpbmco
JDIpXSwKKyAgW200X2ZhdGFsKFskMDogY2lyY3VsYXIgZGVwZW5kZW5jeSBvZiAkMl0pXSldZG5s
CitbbTRfaWYoX200X2RpdmVydF9kdW1wLCBbXSwKKyAgW200X2ZhdGFsKFskMCgkMik6IGNhbm5v
dCBiZSB1c2VkIG91dHNpZGUgb2YgYW4gbTRfZGVmdW4nZCBtYWNyb10pXSldZG5sCitbbTRfcHJv
dmlkZV9pZihbJDJdLCBbXSwKKyAgW19tNF9yZXF1aXJlX2NhbGwoWyQyXSwgWyQzXSwgX200X2Rp
dmVydChbJDFdLCBbLV0pKV0pXSkKKworCisjIG00X2RlZnVuKE5BTUUsIEVYUEFOU0lPTiwgW01B
Q1JPID0gbTRfZGVmaW5lXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBEZWZpbmUgYSBtYWNybyBOQU1FIHdoaWNoIGF1dG9tYXRpY2FsbHkgcHJv
dmlkZXMgaXRzZWxmLiAgQWRkCisjIG1hY2hpbmVyeSBzbyB0aGUgbWFjcm8gYXV0b21hdGljYWxs
eSBzd2l0Y2hlcyBleHBhbnNpb24gdG8gdGhlCisjIGRpdmVyc2lvbiBzdGFjayBpZiBpdCBpcyBu
b3QgYWxyZWFkeSB1c2luZyBpdCwgcHJpb3IgdG8gRVhQQU5TSU9OLgorIyBJbiB0aGlzIGNhc2Us
IG9uY2UgZmluaXNoZWQsIGl0IHdpbGwgYnJpbmcgYmFjayBhbGwgdGhlIGNvZGUKKyMgYWNjdW11
bGF0ZWQgaW4gdGhlIGRpdmVyc2lvbiBzdGFjay4gIFRoaXMsIGNvbWJpbmVkIHdpdGggbTRfcmVx
dWlyZSwKKyMgYWNoaWV2ZXMgdGhlIHRvcG9sb2dpY2FsIG9yZGVyaW5nIG9mIG1hY3Jvcy4gIFdl
IGRvbid0IHVzZSB0aGlzCisjIG1hY3JvIHRvIGRlZmluZSBzb21lIGZyZXF1ZW50bHkgY2FsbGVk
IG1hY3JvcyB0aGF0IGFyZSBub3QgaW52b2x2ZWQKKyMgaW4gb3JkZXJpbmcgY29uc3RyYWludHMs
IHRvIHNhdmUgbTQgcHJvY2Vzc2luZy4KKyMKKyMgTUFDUk8gaXMgYW4gdW5kb2N1bWVudGVkIGFy
Z3VtZW50OyB3aGVuIHNldCB0byBtNF9wdXNoZGVmLCBhbmQgTkFNRQorIyBpcyBhbHJlYWR5IGRl
ZmluZWQsIHRoZSBuZXcgZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0aGUgcHVzaGRlZgorIyBzdGFj
aywgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4gIEl0IGNh
biB0aHVzCisjIGJlIHVzZWQgdG8gd3JpdGUgc2VsZi1tb2RpZnlpbmcgbWFjcm9zLCB3aGljaCBw
b3AgdGhlbXNlbHZlcyB0byBhCisjIHByZXZpb3VzbHkgbTRfZGVmaW5lJ2QgZGVmaW5pdGlvbiBz
byB0aGF0IHN1YnNlcXVlbnQgdXNlIG9mIHRoZQorIyBtYWNybyBpcyBmYXN0ZXIuCittNF9kZWZp
bmUoW200X2RlZnVuXSwKK1ttNF9kZWZpbmUoW200X2xvY2F0aW9uKCQxKV0sIG00X2xvY2F0aW9u
KV1kbmwKK1ttNF9kZWZhdWx0KFskM10sIFttNF9kZWZpbmVdKShbJDFdLAorICBbX200X2RlZnVu
X3BybyhdbTRfZHF1b3RlKCRbMF0pWykkMltdX200X2RlZnVuX2VwaShdbTRfZHF1b3RlKCRbMF0p
WyldKV0pCisKKworIyBtNF9kZWZ1bl9pbml0KE5BTUUsIElOSVQsIENPTU1PTikKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpa2UgbTRfZGVmdW4sIGJ1dCBzcGxpdCBF
WFBBTlNJT04gaW50byB0d28gcG9ydGlvbnM6IElOSVQgd2hpY2ggaXMKKyMgZG9uZSBvbmx5IHRo
ZSBmaXJzdCB0aW1lIE5BTUUgaXMgaW52b2tlZCwgYW5kIENPTU1PTiB3aGljaCBpcworIyBleHBh
bmRlZCBldmVyeSB0aW1lLgorIworIyBGb3Igbm93LCB0aGUgQ09NTU9OIGRlZmluaXRpb24gaXMg
YWx3YXlzIG00X2RlZmluZSdkLCBnaXZpbmcgYW4gZXZlbgorIyBsaWdodGVyLXdlaWdodCBkZWZp
bml0aW9uLiAgbTRfZGVmdW4gYWxsb3dzIHNlbGYtcHJvdmlkaW5nLCBidXQgb25jZQorIyBhIG1h
Y3JvIGlzIHByb3ZpZGVkLCBtNF9yZXF1aXJlIG5vIGxvbmdlciBjYXJlcyBpZiBpdCBpcyBtNF9k
ZWZpbmUnZAorIyBvciBtNF9kZWZ1bidkLiAgbTRfZGVmdW4gYWxzbyBwcm92aWRlcyBsb2NhdGlv
biB0cmFja2luZyB0byBpZGVudGlmeQorIyBkZXBlbmRlbmN5IGJ1Z3MsIGJ1dCBvbmNlIHRoZSBJ
TklUIGhhcyBiZWVuIGV4cGFuZGVkLCB3ZSBrbm93IHRoZXJlCisjIGFyZSBubyBkZXBlbmRlbmN5
IGJ1Z3MuICBIb3dldmVyLCBpZiBhIGZ1dHVyZSB1c2UgbmVlZHMgQ09NTU9OIHRvIGJlCisjIG00
X2RlZnVuJ2QsIHdlIGNhbiBhZGQgYSBwYXJhbWV0ZXIsIHNpbWlsYXIgdG8gdGhlIHRoaXJkIHBh
cmFtZXRlcgorIyB0byBtNF9kZWZ1bi4KK200X2RlZmluZShbbTRfZGVmdW5faW5pdF0sCitbbTRf
ZGVmaW5lKFskMV0sIFskM1tdXSltNF9kZWZ1bihbJDFdLAorICAgWyQyW11fbTRfcG9wZGVmKF1t
NF9kcXVvdGUoJFswXSlbKW00X2luZGlyKF1tNF9kcXVvdGUoJFswXSlkbmwKK1ttNF9pZihdbTRf
ZHF1b3RlKCRbI10pWywgWzBdLCBbXSwgXW00X2RxdW90ZShbLCRdQClbKSldLCBbbTRfcHVzaGRl
Zl0pXSkKKworCisjIG00X2RlZnVuX29uY2UoTkFNRSwgRVhQQU5TSU9OKQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBtNF9kZWZ1biwgYnV0IGd1YXJhbnRlZSB0aGF0
IEVYUEFOU0lPTiBvbmx5IGhhcHBlbnMgb25jZQorIyAodGhlcmVhZnRlciwgdXNpbmcgTkFNRSBp
cyBhIG5vLW9wKS4KKyMKKyMgSWYgX200X2RpdmVydF9kdW1wIGlzIGVtcHR5LCB3ZSBhcmUgY2Fs
bGVkIGF0IHRoZSB0b3AgbGV2ZWw7CisjIG90aGVyd2lzZSwgd2UgbXVzdCBlbnN1cmUgdGhhdCB3
ZSBhcmUgcmVxdWlyZWQgaW4gZnJvbnQgb2YgdGhlCisjIGN1cnJlbnQgZGVmdW4nZCBtYWNyby4g
IFVzZSBhIGhlbHBlciBtYWNybyBzbyB0aGF0IEVYUEFOU0lPTiBuZWVkCisjIG9ubHkgb2NjdXIg
b25jZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiBOQU1FLCBzaW5jZSBpdCBtaWdodCBiZSBsYXJnZS4K
K200X2RlZmluZShbbTRfZGVmdW5fb25jZV0sCitbbTRfZGVmaW5lKFttNF9sb2NhdGlvbigkMSld
LCBtNF9sb2NhdGlvbildZG5sCitbbTRfZGVmaW5lKFskMV0sIFtfbTRfZGVmdW5fb25jZShbJDFd
LCBbJDJdLCBtNF9pZihfbTRfZGl2ZXJ0X2R1bXAsIFtdLAorICBbW19tNF9kZWZ1bl9wcm8oWyQx
XSltNF91bnF1b3RlKF0sIFspX200X2RlZnVuX2VwaShbJDFdKV1dLAorbTRfaWZkZWYoW19tNF9k
aXZlcnRpbmcoWyQxXSldLCBbLV0pLCBbLV0sIFtbbTRfdW5xdW90ZShdLCBbKV1dLAorICBbW19t
NF9yZXF1aXJlX2NhbGwoWyQxXSxdLCBbLCBfbTRfZGl2ZXJ0X2R1bXApXV0pKV0pXSkKKworbTRf
ZGVmaW5lKFtfbTRfZGVmdW5fb25jZV0sCitbbTRfcHVzaGRlZihbJDFdKSQzWyQyW11tNF9wcm92
aWRlKFskMV0pXSQ0XSkKKworCisjIG00X3BhdHRlcm5fZm9yYmlkKEVSRSwgW1dIWV0pCisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlY2xhcmUgdGhhdCBubyB0b2tlbiBtYXRj
aGluZyB0aGUgZm9yYmlkZGVuIHBlcmwgZXh0ZW5kZWQgcmVndWxhcgorIyBleHByZXNzaW9uIEVS
RSBzaG91bGQgYmUgc2VlbiBpbiB0aGUgb3V0cHV0IHVubGVzcy4uLgorbTRfZGVmaW5lKFttNF9w
YXR0ZXJuX2ZvcmJpZF0sIFtdKQorCisKKyMgbTRfcGF0dGVybl9hbGxvdyhFUkUpCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyAuLi4gdGhhdCB0b2tlbiBhbHNvIG1hdGNoZXMgdGhlIGFsbG93
ZWQgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uIEVSRS4KKyMgQm90aCB1c2VkIHZpYSB0cmFj
ZXMsIGJ5IGF1dG9tNHRlIHBvc3QtcHJvY2Vzc2luZy4KK200X2RlZmluZShbbTRfcGF0dGVybl9h
bGxvd10sIFtdKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwor
IyMgMTEuIERlcGVuZGVuY2llcyBiZXR3ZWVuIG1hY3Jvcy4gICMjCisjIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIG00X2JlZm9yZShUSElTLU1BQ1JPLU5BTUUs
IENBTExFRC1NQUNSTy1OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyMgSXNzdWUgYSB3YXJuaW5nIGlmIENBTExFRC1NQUNSTy1OQU1FIHdhcyBj
YWxsZWQgYmVmb3JlIFRISVMtTUFDUk8tTkFNRS4KK200X2RlZmluZShbbTRfYmVmb3JlXSwKK1tt
NF9wcm92aWRlX2lmKFskMl0sCisJICAgICAgIFttNF93YXJuKFtzeW50YXhdLCBbJDIgd2FzIGNh
bGxlZCBiZWZvcmUgJDFdKV0pXSkKKworCisjIG00X3JlcXVpcmUoTkFNRS1UTy1DSEVDSywgW0JP
RFktVE8tRVhQQU5EID0gTkFNRS1UTy1DSEVDS10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIE5BTUUtVE8tQ0hFQ0sg
aGFzIG5ldmVyIGJlZW4gZXhwYW5kZWQgKGFjdHVhbGx5LCBpZiBpdCBpcyBub3QKKyMgbTRfcHJv
dmlkZSdkKSwgZXhwYW5kIEJPRFktVE8tRVhQQU5EICpiZWZvcmUqIHRoZSBjdXJyZW50IG1hY3Jv
CisjIGV4cGFuc2lvbjsgZm9sbG93IHRoZSBleHBhbnNpb24gd2l0aCBhIG5ld2xpbmUuICBPbmNl
IGV4cGFuZGVkLCBlbWl0CisjIGl0IGluIF9tNF9kaXZlcnRfZHVtcC4gIEtlZXAgdHJhY2sgb2Yg
dGhlIG00X3JlcXVpcmUgY2hhaW4gaW4KKyMgX200X2V4cGFuc2lvbl9zdGFjay4KKyMKKyMgVGhl
IG5vcm1hbCBjYXNlcyBhcmU6CisjCisjIC0gTkFNRS1UTy1DSEVDSyA9PSBCT0RZLVRPLUVYUEFO
RAorIyAgIFdoaWNoIHlvdSBjYW4gdXNlIGZvciByZWd1bGFyIG1hY3JvcyB3aXRoIG9yIHdpdGhv
dXQgYXJndW1lbnRzLCBlLmcuLAorIyAgICAgbTRfcmVxdWlyZShbQUNfUFJPR19DQ10sIFtBQ19Q
Uk9HX0NDXSkKKyMgICAgIG00X3JlcXVpcmUoW0FDX0NIRUNLX0hFQURFUlModGhyZWFkcy5oKV0s
IFtBQ19DSEVDS19IRUFERVJTKHRocmVhZHMuaCldKQorIyAgIHdoaWNoIGlzIGp1c3QgdGhlIHNh
bWUgYXMKKyMgICAgIG00X3JlcXVpcmUoW0FDX1BST0dfQ0NdKQorIyAgICAgbTRfcmVxdWlyZShb
QUNfQ0hFQ0tfSEVBREVSUyh0aHJlYWRzLmgpXSkKKyMKKyMgLSBCT0RZLVRPLUVYUEFORCA9PSBt
NF9pbmRpcihbTkFNRS1UTy1DSEVDS10pCisjICAgSW4gdGhlIGNhc2Ugb2YgbWFjcm9zIHdpdGgg
aXJyZWd1bGFyIG5hbWVzLiAgRm9yIGluc3RhbmNlOgorIyAgICAgbTRfcmVxdWlyZShbQUNfTEFO
R19DT01QSUxFUihDKV0sIFtpbmRpcihbQUNfTEFOR19DT01QSUxFUihDKV0pXSkKKyMgICB3aGlj
aCBtZWFucyBgaWYgdGhlIG1hY3JvIG5hbWVkIGBBQ19MQU5HX0NPTVBJTEVSKEMpJyAodGhlIHBh
cmVucyBhcmUKKyMgICBwYXJ0IG9mIHRoZSBuYW1lLCBpdCBpcyBub3QgYW4gYXJndW1lbnQpIGhh
cyBub3QgYmVlbiBydW4sIHRoZW4KKyMgICBjYWxsIGl0LicKKyMgICBIYWQgeW91IHVzZWQKKyMg
ICAgIG00X3JlcXVpcmUoW0FDX0xBTkdfQ09NUElMRVIoQyldLCBbQUNfTEFOR19DT01QSUxFUihD
KV0pCisjICAgdGhlbiBtNF9yZXF1aXJlIHdvdWxkIGhhdmUgdHJpZWQgdG8gZXhwYW5kIGBBQ19M
QU5HX0NPTVBJTEVSKEMpJywgaS5lLiwKKyMgICBjYWxsIHRoZSBtYWNybyBgQUNfTEFOR19DT01Q
SUxFUicgd2l0aCBgQycgYXMgYXJndW1lbnQuCisjCisjICAgWW91IGNvdWxkIGFyZ3VlIHRoYXQg
YEFDX0xBTkdfQ09NUElMRVInLCB3aGVuIGl0IHJlY2VpdmVzIGFuIGFyZ3VtZW50CisjICAgc3Vj
aCBhcyBgQycgc2hvdWxkIGRpc3BhdGNoIHRoZSBjYWxsIHRvIGBBQ19MQU5HX0NPTVBJTEVSKEMp
Jy4gIEJ1dCB0aGlzCisjICAgYGV4dGVuc2lvbicgcHJldmVudHMgYEFDX0xBTkdfQ09NUElMRVIn
IGZyb20gaGF2aW5nIGFjdHVhbCBhcmd1bWVudHMgdGhhdAorIyAgIGl0IHBhc3NlcyB0byBgQUNf
TEFOR19DT01QSUxFUihDKScuCisjCisjIFRoaXMgaXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIG1p
bmltaXplIHRoZSBudW1iZXIgb2YgbWFjcm8gaW52b2NhdGlvbnMKKyMgYnkgYXZvaWRpbmcgZG5s
IGFuZCBvdGhlciBvdmVyaGVhZCBvbiB0aGUgY29tbW9uIHBhdGguCittNF9kZWZpbmUoW200X3Jl
cXVpcmVdLAorW200X2lmZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0sCisgIFttNF9mYXRhbChbJDA6
IGNpcmN1bGFyIGRlcGVuZGVuY3kgb2YgJDFdKV0pXWRubAorW200X2lmKF9tNF9kaXZlcnRfZHVt
cCwgW10sCisgIFttNF9mYXRhbChbJDAoJDEpOiBjYW5ub3QgYmUgdXNlZCBvdXRzaWRlIG9mIGFu
IF1kbmwKK200X2lmKFskMF0sIFttNF9yZXF1aXJlXSwgW1ttNF9kZWZ1bl1dLCBbW0FDX0RFRlVO
XV0pWydkIG1hY3JvXSldKV1kbmwKK1ttNF9wcm92aWRlX2lmKFskMV0sIFttNF9zZXRfY29udGFp
bnMoW19tNF9wcm92aWRlXSwgWyQxXSwKKyAgICBbX200X3JlcXVpcmVfY2hlY2soWyQxXSwgX200
X2RlZm4oW200X3Byb3ZpZGUoJDEpXSksIFskMF0pXSwgW200X2lnbm9yZV0pXSwKKyAgW19tNF9y
ZXF1aXJlX2NhbGxdKShbJDFdLCBbJDJdLCBfbTRfZGl2ZXJ0X2R1bXApXSkKKworCisjIF9tNF9y
ZXF1aXJlX2NhbGwoTkFNRS1UTy1DSEVDSywgW0JPRFktVE8tRVhQQU5EID0gTkFNRS1UTy1DSEVD
S10sCisjICAgICAgICAgICAgICAgICAgRElWRVJTSU9OLU5VTUJFUikKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
SWYgbTRfcmVxdWlyZSBkZWNpZGVzIHRvIGV4cGFuZCB0aGUgYm9keSwgaXQgY2FsbHMgdGhpcyBt
YWNyby4gIFRoZQorIyBleHBhbnNpb24gaXMgcGxhY2VkIGluIERJVkVSU0lPTi1OVU1CRVIuCisj
CisjIFRoaXMgaXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIG1pbmltaXplIHRoZSBudW1iZXIgb2Yg
bWFjcm8gaW52b2NhdGlvbnMKKyMgYnkgYXZvaWRpbmcgZG5sIGFuZCBvdGhlciBvdmVyaGVhZCBv
biB0aGUgY29tbW9uIHBhdGguCisjIFRoZSB1c2Ugb2YgYSB3aXRuZXNzIG1hY3JvIHByb3RlY3Rp
bmcgdGhlIHdhcm5pbmcgYWxsb3dzIGFjbG9jYWwKKyMgdG8gc2lsZW5jZSBhbnkgd2FybmluZ3Mg
d2hlbiBwcm9iaW5nIGZvciB3aGF0IG1hY3JvcyBhcmUgcmVxdWlyZWQKKyMgYW5kIG11c3QgdGhl
cmVmb3JlIGJlIGxvY2F0ZWQsIHdoZW4gdXNpbmcgdGhlIEF1dG9jb25mLXdpdGhvdXQtYWNsb2Nh
bC1tNAorIyBhdXRvbTR0ZSBsYW5ndWFnZS4gIEZvciBtb3JlIGJhY2tncm91bmQsIHNlZToKKyMg
aHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9hdXRvbWFrZS1wYXRjaGVzLzIwMTIt
MTEvbXNnMDAwMzUuaHRtbAorbTRfZGVmaW5lKFtfbTRfcmVxdWlyZV9jYWxsXSwKK1ttNF9wdXNo
ZGVmKFtfbTRfZGl2ZXJ0X2dyb3ddLCBtNF9kZWNyKF9tNF9kaXZlcnRfZ3JvdykpXWRubAorW200
X3B1c2hkZWYoW19tNF9kaXZlcnRpbmcoWyQxXSldKW00X3B1c2hkZWYoW19tNF9kaXZlcnRpbmdd
LCBbJDFdKV1kbmwKK1ttNF9kaXZlcnRfcHVzaChfbTRfZGl2ZXJ0X2dyb3csIFstXSldZG5sCitb
bTRfaWYoWyQyXSwgW10sIFskMV0sIFskMl0pCittNF9wcm92aWRlX2lmKFskMV0sIFttNF9zZXRf
cmVtb3ZlKFtfbTRfcHJvdmlkZV0sIFskMV0pXSwKKyAgW200X2lmbmRlZihbbTRfcmVxdWlyZV9z
aWxlbnRfcHJvYmVdLAorICAgIFttNF93YXJuKFtzeW50YXhdLCBbJDEgaXMgbTRfcmVxdWlyZSdk
IGJ1dCBub3QgbTRfZGVmdW4nZF0pXSldKV1kbmwKK1tfbTRfZGl2ZXJ0X3JhdygkMylfbTRfdW5k
aXZlcnQoX200X2RpdmVydF9ncm93KV1kbmwKK1ttNF9kaXZlcnRfcG9wKF9tNF9kaXZlcnRfZ3Jv
dylfbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X2dyb3ddLAorW19tNF9kaXZlcnRpbmcoWyQxXSldLCBb
X200X2RpdmVydGluZ10pXSkKKworCisjIF9tNF9yZXF1aXJlX2NoZWNrKE5BTUUtVE8tQ0hFQ0ss
IE9XTkVSLCBDQUxMRVIpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIE5BTUUtVE8tQ0hFQ0sgaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBwcmV2aW91
c2x5IGV4cGFuZGVkIGluIHRoZQorIyBkaXZlcnNpb24gb3duZWQgYnkgT1dORVIuICBJZiB0aGlz
IGlzIGEgcHJvYmxlbSwgd2FybiBvbiBiZWhhbGYgb2YKKyMgQ0FMTEVSIGFuZCByZXR1cm4gX200
X3JlcXVpcmVfY2FsbDsgb3RoZXJ3aXNlIHJldHVybiBtNF9pZ25vcmUuCittNF9kZWZpbmUoW19t
NF9yZXF1aXJlX2NoZWNrXSwKK1ttNF9pZihfbTRfZGVmbihbX200X2RpdmVydGluZ10pLCBbJDJd
LCBbbTRfaWdub3JlXSwKKyAgICAgICBtNF9pZmRlZihbX200X2RpdmVydGluZyhbJDJdKV0sIFst
XSksIFstXSwgW200X3dhcm4oW3N5bnRheF0sCisgICBbJDM6IGAkMScgd2FzIGV4cGFuZGVkIGJl
Zm9yZSBpdCB3YXMgcmVxdWlyZWQKK2h0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2Nv
bmYvbWFudWFsL2F1dG9jb25mLmh0bWwjRXhwYW5kZWQtQmVmb3JlLVJlcXVpcmVkXSlfbTRfcmVx
dWlyZV9jYWxsXSwKKyAgICAgICBbbTRfaWdub3JlXSldKQorCisKKyMgX200X2RpdmVydF9ncm93
CisjIC0tLS0tLS0tLS0tLS0tLQorIyBUaGUgY291bnRlciBmb3IgX200X3JlcXVpcmVfY2FsbC4K
K200X2RlZmluZShbX200X2RpdmVydF9ncm93XSwgX200X2RpdmVydChbR1JPV10pKQorCisKKyMg
bTRfZXhwYW5kX29uY2UoVEVYVCwgW1dJVE5FU1MgPSBURVhUXSkKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgVEVYVCBoYXMgbmV2ZXIgYmVlbiBleHBhbmRl
ZCwgZXhwYW5kIGl0ICpoZXJlKi4gIFVzZSBXSVRORVNTIGFzCisjIGFzIGEgbWVtb3J5IHRoYXQg
VEVYVCBoYXMgYWxyZWFkeSBiZWVuIGV4cGFuZGVkLgorbTRfZGVmaW5lKFttNF9leHBhbmRfb25j
ZV0sCitbbTRfcHJvdmlkZV9pZihtNF9kZWZhdWx0X3F1b3RlZChbJDJdLCBbJDFdKSwKKwkgICAg
ICAgW10sCisJICAgICAgIFttNF9wcm92aWRlKG00X2RlZmF1bHRfcXVvdGVkKFskMl0sIFskMV0p
KVtdJDFdKV0pCisKKworIyBtNF9wcm92aWRlKE1BQ1JPLU5BTUUpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK200X2RlZmluZShbbTRfcHJvdmlkZV0sCitbbTRfaWZkZWYoW200X3Byb3ZpZGUo
JDEpXSwgW10sCitbbTRfc2V0X2FkZChbX200X3Byb3ZpZGVdLCBbJDFdLCBbbTRfZGVmaW5lKFtt
NF9wcm92aWRlKCQxKV0sCisgIG00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nXSwgW19tNF9kZWZuKFtf
bTRfZGl2ZXJ0aW5nXSldKSldKV0pXSkKKworCisjIG00X3Byb3ZpZGVfaWYoTUFDUk8tTkFNRSwg
SUYtUFJPVklERUQsIElGLU5PVC1QUk9WSURFRCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBNQUNSTy1OQU1FIGlzIHByb3Zp
ZGVkIGRvIElGLVBST1ZJREVELCBlbHNlIElGLU5PVC1QUk9WSURFRC4KKyMgVGhlIHB1cnBvc2Ug
b2YgdGhpcyBtYWNybyBpcyB0byBwcm92aWRlIHRoZSB1c2VyIHdpdGggYSBtZWFucyB0bworIyBj
aGVjayBtYWNyb3Mgd2hpY2ggYXJlIHByb3ZpZGVkIHdpdGhvdXQgbGV0dGluZyBoZXIga25vdyBo
b3cgdGhlCisjIGluZm9ybWF0aW9uIGlzIGNvZGVkLgorbTRfZGVmaW5lKFttNF9wcm92aWRlX2lm
XSwKK1ttNF9pZmRlZihbbTRfcHJvdmlkZSgkMSldLAorCSAgWyQyXSwgWyQzXSldKQorCisKKyMj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgMTIuIFRleHQgcHJvY2Vzc2luZy4gICMjCisj
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIG00X2NyX2xldHRlcnMKKyMgbTRfY3Jf
TEVUVEVSUworIyBtNF9jcl9MZXR0ZXJzCisjIC0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbTRf
Y3JfbGV0dGVyc10sIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5el0pCittNF9kZWZpbmUoW200
X2NyX0xFVFRFUlNdLCBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpdKQorbTRfZGVmaW5lKFtt
NF9jcl9MZXR0ZXJzXSwKK200X2RlZm4oW200X2NyX2xldHRlcnNdKWRubAorbTRfZGVmbihbbTRf
Y3JfTEVUVEVSU10pZG5sCispCisKKworIyBtNF9jcl9kaWdpdHMKKyMgLS0tLS0tLS0tLS0tCitt
NF9kZWZpbmUoW200X2NyX2RpZ2l0c10sIFswMTIzNDU2Nzg5XSkKKworCisjIG00X2NyX2FsbnVt
CisjIC0tLS0tLS0tLS0tCittNF9kZWZpbmUoW200X2NyX2FsbnVtXSwKK200X2RlZm4oW200X2Ny
X0xldHRlcnNdKWRubAorbTRfZGVmbihbbTRfY3JfZGlnaXRzXSlkbmwKKykKKworCisjIG00X2Ny
X3N5bWJvbHMxCisjIG00X2NyX3N5bWJvbHMyCisjIC0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUo
W200X2NyX3N5bWJvbHMxXSwKK200X2RlZm4oW200X2NyX0xldHRlcnNdKWRubAorXykKKworbTRf
ZGVmaW5lKFttNF9jcl9zeW1ib2xzMl0sCittNF9kZWZuKFttNF9jcl9zeW1ib2xzMV0pZG5sCitt
NF9kZWZuKFttNF9jcl9kaWdpdHNdKWRubAorKQorCisjIG00X2NyX2FsbAorIyAtLS0tLS0tLS0K
KyMgVGhlIGNoYXJhY3RlciByYW5nZSByZXByZXNlbnRpbmcgZXZlcnl0aGluZywgd2l0aCBgLScg
YXMgdGhlIGxhc3QKKyMgY2hhcmFjdGVyLCBzaW5jZSBpdCBpcyBzcGVjaWFsIHRvIG00X3RyYW5z
bGl0LiAgVXNlIHdpdGggY2FyZSwgYmVjYXVzZQorIyBpdCBjb250YWlucyBjaGFyYWN0ZXJzIHNw
ZWNpYWwgdG8gTTQgKGZvcnR1bmF0ZWx5LCBib3RoIEFTQ0lJIGFuZCBFQkNESUMKKyMgaGF2ZSBb
XSBpbiBvcmRlciwgc28gbTRfZGVmbihbbTRfY3JfYWxsXSkgcmVtYWlucyBhIHZhbGlkIHN0cmlu
ZykuICBJdAorIyBhbHNvIGNvbnRhaW5zIGNoYXJhY3RlcnMgc3BlY2lhbCB0byB0ZXJtaW5hbHMs
IHNvIGl0IHNob3VsZCBuZXZlciBiZQorIyBkaXNwbGF5ZWQgaW4gYW4gZXJyb3IgbWVzc2FnZS4g
IEFsc28sIGF0dGVtcHRzIHRvIG1hcCBbIGFuZCBdIHRvIG90aGVyCisjIGNoYXJhY3RlcnMgdmlh
IG00X3RyYW5zbGl0IG11c3QgZGVhbCB3aXRoIHRoZSBmYWN0IHRoYXQgbTRfdHJhbnNsaXQgZG9l
cworIyBub3QgYWRkIHF1b3RlcyB0byB0aGUgb3V0cHV0LgorIworIyBJbiBFQkNESUMsICQgaXMg
aW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgKiwgd2hpY2ggbGVhZHMgdG8gcHJvYmxlbXMKKyMgaWYg
bTRfY3JfYWxsIGlzIGlubGluZWQgaW50byBhIG1hY3JvIGRlZmluaXRpb247IHNvIHN3YXAgdGhl
bS4KKyMKKyMgSXQgaXMgbWFpbmx5IHVzZWZ1bCBpbiBnZW5lcmF0aW5nIGludmVydGVkIGNoYXJh
Y3RlciByYW5nZSBtYXBzLCBmb3IgdXNlCisjIGluIHBsYWNlcyB3aGVyZSBtNF90cmFuc2xpdCBp
cyBmYXN0ZXIgdGhhbiBhbiBlcXVpdmFsZW50IG00X2JwYXRzdWJzdDsKKyMgdGhlIHJlZ2V4IGBb
XmEtel0nIGlzIGVxdWl2YWxlbnQgdG86CisjICBtNF90cmFuc2xpdChtNF9kcXVvdGUobTRfZGVm
bihbbTRfY3JfYWxsXSkpLCBbYS16XSkKK200X2RlZmluZShbbTRfY3JfYWxsXSwKK200X3RyYW5z
bGl0KG00X2RxdW90ZShtNF9mb3JtYXQobTRfZHF1b3RlKG00X2ZvcigKKyAgLDEsMjU1LCxbWyVj
XV0pKW00X2ZvcihbaV0sMSwyNTUsLFssaV0pKSksIFskKi1dLCBbKiRdKS0pCisKKworIyBfbTRf
ZGVmaW5lX2NyX25vdChDQVRFR09SWSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IERlZmluZSBtNF9jcl9ub3RfQ0FURUdPUlkgYXMgdGhlIGludmVyc2Ugb2YgbTRfY3JfQ0FURUdP
UlkuCittNF9kZWZpbmUoW19tNF9kZWZpbmVfY3Jfbm90XSwKK1ttNF9kZWZpbmUoW200X2NyX25v
dF8kMV0sCisJICAgbTRfdHJhbnNsaXQobTRfZHF1b3RlKG00X2RlZm4oW200X2NyX2FsbF0pKSwK
KwkJICAgICAgIG00X2RlZm4oW200X2NyXyQxXSkpKV0pCisKKworIyBtNF9jcl9ub3RfbGV0dGVy
cworIyBtNF9jcl9ub3RfTEVUVEVSUworIyBtNF9jcl9ub3RfTGV0dGVycworIyBtNF9jcl9ub3Rf
ZGlnaXRzCisjIG00X2NyX25vdF9hbG51bQorIyBtNF9jcl9ub3Rfc3ltYm9sczEKKyMgbTRfY3Jf
bm90X3N5bWJvbHMyCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbnZlcnNlIGNoYXJhY3RlciBz
ZXRzCitfbTRfZGVmaW5lX2NyX25vdChbbGV0dGVyc10pCitfbTRfZGVmaW5lX2NyX25vdChbTEVU
VEVSU10pCitfbTRfZGVmaW5lX2NyX25vdChbTGV0dGVyc10pCitfbTRfZGVmaW5lX2NyX25vdChb
ZGlnaXRzXSkKK19tNF9kZWZpbmVfY3Jfbm90KFthbG51bV0pCitfbTRfZGVmaW5lX2NyX25vdChb
c3ltYm9sczFdKQorX200X2RlZmluZV9jcl9ub3QoW3N5bWJvbHMyXSkKKworCisjIG00X25ld2xp
bmUoW1NUUklOR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZHMgdG8gYSBuZXds
aW5lLCBwb3NzaWJseSBmb2xsb3dlZCBieSBTVFJJTkcuICBFeGlzdHMgbW9zdGx5IGZvcgorIyBm
b3JtYXR0aW5nIHJlYXNvbnMuCittNF9kZWZpbmUoW200X25ld2xpbmVdLCBbCiskMV0pCisKKwor
IyBtNF9yZV9lc2NhcGUoU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFc2NhcGUg
UkUgYWN0aXZlIGNoYXJhY3RlcnMgaW4gU1RSSU5HLgorbTRfZGVmaW5lKFttNF9yZV9lc2NhcGVd
LAorW200X2JwYXRzdWJzdChbJDFdLAorCSAgICAgIFtbXVsqKy4/XF4kXV0sIFtcXFwmXSldKQor
CisKKyMgbTRfcmVfc3RyaW5nCisjIC0tLS0tLS0tLS0tLQorIyBSZWdleHAgZm9yIGBbYS16QS1a
XzAtOV0qJworIyBtNF9kcXVvdGUgcHJvdmlkZXMgbGl0ZXJhbCBbXSBmb3IgdGhlIGNoYXJhY3Rl
ciBjbGFzcy4KK200X2RlZmluZShbbTRfcmVfc3RyaW5nXSwKK200X2RxdW90ZShtNF9kZWZuKFtt
NF9jcl9zeW1ib2xzMl0pKWRubAorWypdZG5sCispCisKKworIyBtNF9yZV93b3JkCisjIC0tLS0t
LS0tLS0KKyMgUmVnZXhwIGZvciBgW2EtekEtWl9dW2EtekEtWl8wLTldKicKK200X2RlZmluZShb
bTRfcmVfd29yZF0sCittNF9kcXVvdGUobTRfZGVmbihbbTRfY3Jfc3ltYm9sczFdKSlkbmwKK200
X2RlZm4oW200X3JlX3N0cmluZ10pZG5sCispCisKKworIyBtNF90b2xvd2VyKFNUUklORykKKyMg
bTRfdG91cHBlcihTVFJJTkcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGVzZSBtYWNyb3Mg
Y29udmVydCBTVFJJTkcgdG8gbG93ZXJjYXNlIG9yIHVwcGVyY2FzZS4KKyMKKyMgUmF0aGVyIHRo
YW4gZXhwYW5kIHRoZSBtNF9kZWZuIGVhY2ggdGltZSwgd2UgaW5saW5lIHRoZW0gdXAgZnJvbnQu
CittNF9kZWZpbmUoW200X3RvbG93ZXJdLAorW200X3RyYW5zbGl0KFtbJDFdXSwgXW00X2RxdW90
ZShtNF9kZWZuKFttNF9jcl9MRVRURVJTXSkpWywKKwkJICAgICBdbTRfZHF1b3RlKG00X2RlZm4o
W200X2NyX2xldHRlcnNdKSlbKV0pCittNF9kZWZpbmUoW200X3RvdXBwZXJdLAorW200X3RyYW5z
bGl0KFtbJDFdXSwgXW00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9sZXR0ZXJzXSkpWywKKwkJICAg
ICBdbTRfZHF1b3RlKG00X2RlZm4oW200X2NyX0xFVFRFUlNdKSlbKV0pCisKKworIyBtNF9zcGxp
dChTVFJJTkcsIFtSRUdFWFBdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTcGxp
dCBTVFJJTkcgaW50byBhbiBtNCBsaXN0IG9mIHF1b3RlZCBlbGVtZW50cy4gIFRoZSBlbGVtZW50
cyBhcmUKKyMgcXVvdGVkIHdpdGggWyBhbmQgXS4gIEJlZ2lubmluZyBzcGFjZXMgYW5kIGVuZCBz
cGFjZXMgKmFyZSBrZXB0Ki4KKyMgVXNlIG00X3N0cmlwIHRvIHJlbW92ZSB0aGVtLgorIworIyBS
RUdFWFAgc3BlY2lmaWVzIHdoZXJlIHRvIHNwbGl0LiAgRGVmYXVsdCBpcyBbXHQgXSsuCisjCisj
IElmIFNUUklORyBpcyBlbXB0eSwgdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBsaXN0LgorIworIyBQ
YXkgYXR0ZW50aW9uIHRvIHRoZSBtNF9jaGFuZ2VxdW90ZXMuICBXaGVuIG00IHJlYWRzIHRoZSBk
ZWZpbml0aW9uIG9mCisjIG00X3NwbGl0LCBpdCBzdGlsbCBoYXMgcXVvdGVzIHNldCB0byBbIGFu
ZCBdLiAgTHVja2lseSwgdGhlc2UgYXJlIG1hdGNoZWQKKyMgaW4gdGhlIG1hY3JvIGJvZHksIHNv
IHRoZSBkZWZpbml0aW9uIGlzIHN0b3JlZCBjb3JyZWN0bHkuICBVc2UgdGhlIHNhbWUKKyMgYWx0
ZXJuYXRlIHF1b3RlcyBhcyBtNF9ub3F1b3RlOyBpdCBtdXN0IGJlIHVubGlrZWx5IHRvIGFwcGVh
ciBpbiAkMS4KKyMKKyMgQWxzbywgbm90aWNlIHRoYXQgJDEgaXMgcXVvdGVkIHR3aWNlLCBzaW5j
ZSB3ZSB3YW50IHRoZSByZXN1bHQgdG8KKyMgYmUgcXVvdGVkLiAgVGhlbiB5b3Ugc2hvdWxkIHVu
ZGVyc3RhbmQgdGhhdCB0aGUgYXJndW1lbnQgb2YKKyMgcGF0c3Vic3QgaXMgLT08eyhTVFJJTkcp
fT49LSAoaS5lLiwgd2l0aCBhZGRpdGlvbmFsIC09PHsoIGFuZCApfT49LSkuCisjCisjIFRoaXMg
bWFjcm8gaXMgc2FmZSBvbiBhY3RpdmUgc3ltYm9scywgaS5lLjoKKyMgICBtNF9kZWZpbmUoYWN0
aXZlLCBBQ1RJVkUpCisjICAgbTRfc3BsaXQoW2FjdGl2ZSBhY3RpdmUgXSllbmQKKyMgICA9PiBb
YWN0aXZlXSwgW2FjdGl2ZV0sIFtdZW5kCisjCisjIE9wdGltaXplIG9uIHJlZ2V4IG9mIGAgJyAo
c3BhY2UpLCBzaW5jZSBtNF9mb3JlYWNoX3cgYWxyZWFkeSBndWFyYW50ZWVzCisjIHRoYXQgdGhl
IGxpc3QgY29udGFpbnMgc2luZ2xlIHNwYWNlIHNlcGFyYXRvcnMsIGFuZCBhIGNvbW1vbiBjYXNl
IGlzCisjIHNwbGl0dGluZyBhIHNpbmdsZS1lbGVtZW50IGxpc3QuICBUaGlzIG1hY3JvIGlzIGNh
bGxlZCBmcmVxdWVudGx5LAorIyBzbyBhdm9pZCB1bm5lY2Vzc2FyeSBkbmwgaW5zaWRlIHRoZSBk
ZWZpbml0aW9uLgorbTRfZGVmaW5lKFttNF9zcGxpdF0sCitbbTRfaWYoWyQxXSwgW10sIFtdLAor
ICAgICAgIFskMl0sIFsgXSwgW200X2lmKG00X2luZGV4KFskMV0sIFsgXSksIFstMV0sIFtbWyQx
XV1dLAorCQkJIFtfJDAoWyQxXSwgWyQyXSwgWywgXSldKV0sCisgICAgICAgWyQyXSwgW10sIFtf
JDAoWyQxXSwgW1sJIF0rXSwgWywgXSldLAorICAgICAgIFtfJDAoWyQxXSwgWyQyXSwgWywgXSld
KV0pCisKK200X2RlZmluZShbX200X3NwbGl0XSwKK1ttNF9jaGFuZ2VxdW90ZShbLT08eyhdLFsp
fT49LV0pXWRubAorW1ttNF9icGF0c3Vic3QoLT08eygtPTx7KCQxKX0+PS0pfT49LSwgLT08eygk
Mil9Pj0tLAorCSAgICAgICAtPTx7KF0kM1spfT49LSldbTRfY2hhbmdlcXVvdGUoWywgXSldKQor
CisKKyMgbTRfY2hvbXAoU1RSSU5HKQorIyBtNF9jaG9tcF9hbGwoU1RSSU5HKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gU1RSSU5HIHF1b3RlZCwgYnV0IHdpdGhvdXQgYSB0cmFp
bGluZyBuZXdsaW5lLiAgbTRfY2hvbXAKKyMgcmVtb3ZlcyBhdCBtb3N0IG9uZSBuZXdsaW5lLCB3
aGlsZSBtNF9jaG9tcF9hbGwgcmVtb3ZlcyBhbGwKKyMgY29uc2VjdXRpdmUgdHJhaWxpbmcgbmV3
bGluZXMuICBFbWJlZGRlZCBuZXdsaW5lcyBhcmUgbm90IHRvdWNoZWQsCisjIGFuZCBhIHRyYWls
aW5nIGJhY2tzbGFzaC1uZXdsaW5lIGxlYXZlcyBqdXN0IGEgdHJhaWxpbmcgYmFja3NsYXNoLgor
IworIyBtNF9icmVnZXhwIGlzIHNsb3dlciB0aGFuIG00X2luZGV4LCBhbmQgd2UgZG9uJ3QgYWx3
YXlzIHdhbnQgdG8KKyMgcmVtb3ZlIGFsbCBuZXdsaW5lczsgaGVuY2UgdGhlIHR3byB2YXJpYW50
cy4gIFdlIG1hc3NhZ2UgY2hhcmFjdGVycworIyB0byBnaXZlIGEgbmljZXIgcGF0dGVybiB0byBt
YXRjaCwgcGFydGljdWxhcmx5IHNpbmNlIG00X2JyZWdleHAgaXMKKyMgbGluZS1vcmllbnRlZC4g
IEJvdGggdmVyc2lvbnMgbXVzdCBndWFyYW50ZWUgYSBtYXRjaCwgdG8gYXZvaWQgYnVncworIyB3
aXRoIHByZWNpc2lvbiAtMSBpbiBtNF9mb3JtYXQgaW4gb2xkZXIgbTQuCittNF9kZWZpbmUoW200
X2Nob21wXSwKK1ttNF9mb3JtYXQoW1slLipzXV0sIG00X2luZGV4KG00X3RyYW5zbGl0KFtbJDFd
XSwgWworLy5dLCBbLyAgXSlbLi8uXSwgWy8uXSksIFskMV0pXSkKKworbTRfZGVmaW5lKFttNF9j
aG9tcF9hbGxdLAorW200X2Zvcm1hdChbWyUuKnNdXSwgbTRfYnJlZ2V4cChtNF90cmFuc2xpdChb
WyQxXV0sIFsKKy9dLCBbLyBdKSwgWy8qJF0pLCBbJDFdKV0pCisKKworIyBtNF9mbGF0dGVuKFNU
UklORykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIFNUUklORyBjb250YWlucyBlbmQgb2Yg
bGluZXMsIHJlcGxhY2UgdGhlbSB3aXRoIHNwYWNlcy4gIElmIHRoZXJlCisjIGFyZSBiYWNrc2xh
c2hlZCBlbmQgb2YgbGluZXMsIHJlbW92ZSB0aGVtLiAgVGhpcyBtYWNybyBpcyBzYWZlIHdpdGgK
KyMgYWN0aXZlIHN5bWJvbHMuCisjICAgIG00X2RlZmluZShhY3RpdmUsIEFDVElWRSkKKyMgICAg
bTRfZmxhdHRlbihbYWN0aXZlCisjICAgIGFjdFwKKyMgICAgaXZlXSllbmQKKyMgICAgPT4gYWN0
aXZlIGFjdGl2ZWVuZAorIworIyBJbiBtNCwgbTRfYnBhdHN1YnN0IGlzIGV4cGVuc2l2ZSwgc28g
Zmlyc3QgY2hlY2sgZm9yIGEgbmV3bGluZS4KK200X2RlZmluZShbbTRfZmxhdHRlbl0sCitbbTRf
aWYobTRfaW5kZXgoWyQxXSwgWworXSksIFstMV0sIFtbJDFdXSwKKyAgICAgICBbbTRfdHJhbnNs
aXQobTRfYnBhdHN1YnN0KFtbWyQxXV1dLCBbXFwKK10pLCBbCitdLCBbIF0pXSldKQorCisKKyMg
bTRfc3RyaXAoU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZHMgaW50byBTVFJJ
Tkcgd2l0aCB0YWJzIGFuZCBzcGFjZXMgc2luZ2xlZCBvdXQgaW50byBhIHNpbmdsZQorIyBzcGFj
ZSwgYW5kIHJlbW92aW5nIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcy4KKyMKKyMgVGhpcyBt
YWNybyBpcyByb2J1c3QgdG8gYWN0aXZlIHN5bWJvbHMuCisjICAgIG00X2RlZmluZShhY3RpdmUs
IEFDVElWRSkKKyMgICAgbTRfc3RyaXAoWyAgYWN0aXZlIDx0YWI+IDx0YWI+YWN0aXZlIF0pZW5k
CisjICAgID0+IGFjdGl2ZSBhY3RpdmVlbmQKKyMKKyMgRmlyc3QsIG5vdGljZSB0aGF0IHdlIGd1
YXJhbnRlZSB0cmFpbGluZyBzcGFjZS4gIFdoeT8gIEJlY2F1c2UgcmVndWxhcgorIyBleHByZXNz
aW9ucyBhcmUgZ3JlZWR5LCBhbmQgYC4qID8nIHdvdWxkIGFsd2F5cyBncm91cCB0aGUgc3BhY2Ug
aW50byB0aGUKKyMgLiogcG9ydGlvbi4gIFRoZSBhbGdvcml0aG0gaXMgc2ltcGxlciBieSBhdm9p
ZGluZyBgPycgYXQgdGhlIGVuZC4gIFRoZQorIyBhbGdvcml0aG0gY29ycmVjdGx5IHN0cmlwcyBl
dmVyeXRoaW5nIGlmIFNUUklORyBpcyBqdXN0IGAgJy4KKyMKKyMgVGhlbiBub3RpY2UgdGhlIHNl
Y29uZCBwYXR0ZXJuOiBpdCBpcyBpbiBjaGFyZ2Ugb2YgcmVtb3ZpbmcgdGhlCisjIGxlYWRpbmcv
dHJhaWxpbmcgc3BhY2VzLiAgV2h5IG5vdCBqdXN0IGBbXiBdJz8gIEJlY2F1c2UgdGhleSBhcmUK
KyMgYXBwbGllZCB0byBvdmVyLXF1b3RlZCBzdHJpbmdzLCBpLmUuIG1vcmUgb3IgbGVzcyBbU1RS
SU5HXSwgZHVlCisjIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBtNF9icGF0c3Vic3RzLiAgU28gdGhl
IGxlYWRpbmcgc3BhY2UgaW4gU1RSSU5HCisjIGlzIHRoZSAqc2Vjb25kKiBjaGFyYWN0ZXI7IGVx
dWFsbHkgZm9yIHRoZSB0cmFpbGluZyBzcGFjZS4KK200X2RlZmluZShbbTRfc3RyaXBdLAorW200
X2JwYXRzdWJzdHMoWyQxIF0sCisJICAgICAgIFtbCSBdK10sIFsgXSwKKwkgICAgICAgW14uID9c
KC4qXCkgLiRdLCBbW1tcMV1dXSldKQorCisKKyMgbTRfbm9ybWFsaXplKFNUUklORykKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwbHkgbTRfZmxhdHRlbiBhbmQgbTRfc3RyaXAgdG8gU1RS
SU5HLgorIworIyBUaGUgYXJndW1lbnQgaXMgcXVvdGVkLCBzbyB0aGF0IHRoZSBtYWNybyBpcyBy
b2J1c3QgdG8gYWN0aXZlIHN5bWJvbHM6CisjCisjICAgIG00X2RlZmluZShhY3RpdmUsIEFDVElW
RSkKKyMgICAgbTRfbm9ybWFsaXplKFsgIGFjdFwKKyMgICAgaXZlCisjICAgIGFjdGl2ZSBdKWVu
ZAorIyAgICA9PiBhY3RpdmUgYWN0aXZlZW5kCisKK200X2RlZmluZShbbTRfbm9ybWFsaXplXSwK
K1ttNF9zdHJpcChtNF9mbGF0dGVuKFskMV0pKV0pCisKKworCisjIG00X2pvaW4oU0VQLCBBUkcx
LCBBUkcyLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBBUkcx
U0VQQVJHMi4uLlNFUEFSR24uICBBdm9pZCBiYWNrLXRvLWJhY2sgU0VQIHdoZW4gYSBnaXZlbiBB
UkcKKyMgaXMgdGhlIGVtcHR5IHN0cmluZy4gIE5vIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgb24g
U0VQIG9yIEFSR3MuCisjCisjIFNpbmNlIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGpvaW4g
Y2FuIGJlIGFyYml0cmFyaWx5IGxvbmcsIHdlCisjIHdhbnQgdG8gYXZvaWQgaGF2aW5nIG1vcmUg
dGhhbiBvbmUgJEAgaW4gdGhlIG1hY3JvIGRlZmluaXRpb247CisjIG90aGVyd2lzZSwgdGhlIGV4
cGFuc2lvbiB3b3VsZCByZXF1aXJlIHR3aWNlIHRoZSBtZW1vcnkgb2YgdGhlIGFscmVhZHkKKyMg
bG9uZyBsaXN0LiAgSGVuY2UsIG00X2pvaW4gbWVyZWx5IGxvb2tzIGZvciB0aGUgZmlyc3Qgbm9u
LWVtcHR5IGVsZW1lbnQsCisjIGFuZCBvdXRwdXRzIGp1c3QgdGhhdCBlbGVtZW50OyB3aGlsZSBf
bTRfam9pbiBsb29rcyBmb3IgYWxsIG5vbi1lbXB0eQorIyBlbGVtZW50cywgYW5kIG91dHB1dHMg
dGhlbSBmb2xsb3dpbmcgYSBzZXBhcmF0b3IuICBUaGUgZmluYWwgdHJpY2sgdG8KKyMgbm90ZSBp
cyB0aGF0IHdlIGRlY2lkZSBiZXR3ZWVuIHJlY3Vyc2luZyB3aXRoICQwIG9yIF8kMCBiYXNlZCBv
biB0aGUKKyMgbmVzdGVkIG00X2lmIGVuZGluZyB3aXRoIGBfJy4KKyMKKyMgUGxlYXNlIGtlZXAg
Zm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200X2Rl
ZmluZShbbTRfam9pbl0sCitbbTRfaWYoWyQjXSwgWzFdLCBbXSwKKyAgICAgICBbJCNdLCBbMl0s
IFtbJDJdXSwKKyAgICAgICBbbTRfaWYoWyQyXSwgW10sIFtdLCBbWyQyXV9dKSQwKFskMV0sIG00
X3NoaWZ0MigkQCkpXSldKQorbTRfZGVmaW5lKFtfbTRfam9pbl0sCitbbTRfaWYoWyQjJDJdLCBb
Ml0sIFtdLAorICAgICAgIFttNF9pZihbJDJdLCBbXSwgW10sIFtbJDEkMl1dKSQwKFskMV0sIG00
X3NoaWZ0MigkQCkpXSldKQorCisjIG00X2pvaW5hbGwoU0VQLCBBUkcxLCBBUkcyLi4uKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBBUkcxU0VQQVJHMi4uLlNF
UEFSR24uICBBbiBlbXB0eSBBUkcgcmVzdWx0cyBpbiBiYWNrLXRvLWJhY2sgU0VQLgorIyBObyBl
eHBhbnNpb24gaXMgcGVyZm9ybWVkIG9uIFNFUCBvciBBUkdzLgorIworIyBQbGVhc2Uga2VlcCBm
b3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgorbTRfZGVm
aW5lKFttNF9qb2luYWxsXSwgW1skMl1fJDAoWyQxXSwgbTRfc2hpZnQoJEApKV0pCittNF9kZWZp
bmUoW19tNF9qb2luYWxsXSwKK1ttNF9pZihbJCNdLCBbMl0sIFtdLCBbWyQxJDNdJDAoWyQxXSwg
bTRfc2hpZnQyKCRAKSldKV0pCisKKyMgbTRfY29tYmluZShbU0VQQVJBVE9SXSwgUFJFRklYLUxJ
U1QsIFtJTkZJWF0sIFNVRkZJWC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSB0aGUgcGFpcndpc2UgY29tYmlu
YXRpb24gb2YgZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVvdGVkLAorIyBjb21tYS1zZXBhcmF0ZWQg
UFJFRklYLUxJU1Qgd2l0aCBldmVyeSBlbGVtZW50IGZyb20gdGhlIFNVRkZJWCBhcmd1bWVudHMu
CisjIEVhY2ggcGFpciBpcyBqb2luZWQgd2l0aCBJTkZJWCwgYW5kIHBhaXJzIGFyZSBzZXBhcmF0
ZWQgYnkgU0VQQVJBVE9SLgorIyBObyBleHBhbnNpb24gb2NjdXJzIG9uIFNFUEFSQVRPUiwgSU5G
SVgsIG9yIGVsZW1lbnRzIG9mIGVpdGhlciBsaXN0LgorIworIyBGb3IgZXhhbXBsZToKKyMgICBt
NF9jb21iaW5lKFssIF0sIFtbYV0sIFtiXSwgW2NdXSwgWy1dLCBbMV0sIFsyXSwgWzNdKQorIyAg
ID0+IGEtMSwgYS0yLCBhLTMsIGItMSwgYi0yLCBiLTMsIGMtMSwgYy0yLCBjLTMKKyMKKyMgVGhp
cyBkZWZpbml0aW9uIGlzIGEgYml0IGhhaXJ5OyB0aGUgdGhpbmcgdG8gcmVhbGl6ZSBpcyB0aGF0
IHdlIHdhbnQKKyMgdG8gY29uc3RydWN0IG00X21hcF9hcmdzX3NlcChbW3ByZWZpeCQzXV0sIFtd
LCBbWyQxXV0sIG00X3NoaWZ0MygkQCkpCisjIGFzIHRoZSBpbm5lciBsb29wLCB1c2luZyBlYWNo
IHByZWZpeCBnZW5lcmF0ZWQgYnkgdGhlIG91dGVyIGxvb3AsCisjIGFuZCB3aXRob3V0IHJlY2Fs
Y3VsYXRpbmcgbTRfc2hpZnQzIGV2ZXJ5IG91dGVyIGl0ZXJhdGlvbi4KK200X2RlZmluZShbbTRf
Y29tYmluZV0sCitbbTRfaWYoWyQyXSwgW10sIFtdLCBtNF9ldmFsKFskIyA+IDNdKSwgWzFdLAor
W200X21hcF9hcmdzX3NlcChbbTRfbWFwX2FyZ3Nfc2VwKG00X2RxdW90ZShdLCBbKVtbJDNdXSwg
W10sIFtbJDFdXSxdXV1kbmwKK1ttNF9kcXVvdGUobTRfZHF1b3RlKG00X3NoaWZ0MygkQCkpKVtb
KV0sIFtbJDFdXSwgJDIpXSldKQorCisKKyMgbTRfYXBwZW5kKE1BQ1JPLU5BTUUsIFNUUklORywg
W1NFUEFSQVRPUl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBSZWRlZmluZSBNQUNSTy1OQU1FIHRvIGhvbGQgaXRzIGZvcm1lciBjb250ZW50IHBsdXMg
YFNFUEFSQVRPUmAnU1RSSU5HJworIyBhdCB0aGUgZW5kLiAgSXQgaXMgdmFsaWQgdG8gdXNlIHRo
aXMgbWFjcm8gd2l0aCBNQUNSTy1OQU1FIHVuZGVmaW5lZCwKKyMgaW4gd2hpY2ggY2FzZSBubyBT
RVBBUkFUT1IgaXMgYWRkZWQuICBCZSBhd2FyZSB0aGF0IHRoZSBjcml0ZXJpb24gaXMKKyMgYG5v
dCBiZWluZyBkZWZpbmVkJywgYW5kIG5vdCBgbm90IGJlaW5nIGVtcHR5Jy4KKyMKKyMgTm90ZSB0
aGF0IG5laXRoZXIgU1RSSU5HIG5vciBTRVBBUkFUT1IgYXJlIGV4cGFuZGVkIGhlcmU7IHJhdGhl
ciwgd2hlbgorIyB5b3UgZXhwYW5kIE1BQ1JPLU5BTUUsIHRoZXkgd2lsbCBiZSBleHBhbmRlZCBh
dCB0aGF0IHBvaW50IGluIHRpbWUuCisjCisjIFRoaXMgbWFjcm8gaXMgcm9idXN0IHRvIGFjdGl2
ZSBzeW1ib2xzLiAgSXQgY2FuIGJlIHVzZWQgdG8gZ3JvdworIyBzdHJpbmdzLgorIworIyAgICB8
IG00X2RlZmluZShhY3RpdmUsIEFDVElWRSlkbmwKKyMgICAgfCBtNF9hcHBlbmQoW3NlbnRlbmNl
XSwgW1RoaXMgaXMgYW5dKWRubAorIyAgICB8IG00X2FwcGVuZChbc2VudGVuY2VdLCBbIGFjdGl2
ZSBdKWRubAorIyAgICB8IG00X2FwcGVuZChbc2VudGVuY2VdLCBbc3ltYm9sLl0pZG5sCisjICAg
IHwgc2VudGVuY2UKKyMgICAgfCBtNF91bmRlZmluZShbYWN0aXZlXSlkbmwKKyMgICAgfCBzZW50
ZW5jZQorIyAgICA9PiBUaGlzIGlzIGFuIEFDVElWRSBzeW1ib2wuCisjICAgID0+IFRoaXMgaXMg
YW4gYWN0aXZlIHN5bWJvbC4KKyMKKyMgSXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGhvb2tzLgor
IworIyAgICB8IG00X2RlZmluZShhY3RpdmUsIEFDVElWRSlkbmwKKyMgICAgfCBtNF9hcHBlbmQo
W2hvb2tzXSwgW200X2RlZmluZShbYWN0MV0sIFthY3QyXSldKWRubAorIyAgICB8IG00X2FwcGVu
ZChbaG9va3NdLCBbbTRfZGVmaW5lKFthY3QyXSwgW2FjdGl2ZV0pXSlkbmwKKyMgICAgfCBtNF91
bmRlZmluZShbYWN0aXZlXSlkbmwKKyMgICAgfCBhY3QxCisjICAgIHwgaG9va3MKKyMgICAgfCBh
Y3QxCisjICAgID0+IGFjdDEKKyMgICAgPT4KKyMgICAgPT4gYWN0aXZlCisjCisjIEl0IGNhbiBh
bHNvIGJlIHVzZWQgdG8gY3JlYXRlIGxpc3RzLCBhbHRob3VnaCB0aGlzIHBhcnRpY3VsYXIgdXNh
Z2Ugd2FzCisjIGJyb2tlbiBwcmlvciB0byBhdXRvY29uZiAyLjYyLgorIyAgICB8IG00X2FwcGVu
ZChbbGlzdF0sIFtvbmVdLCBbLCBdKWRubAorIyAgICB8IG00X2FwcGVuZChbbGlzdF0sIFt0d29d
LCBbLCBdKWRubAorIyAgICB8IG00X2FwcGVuZChbbGlzdF0sIFt0aHJlZV0sIFssIF0pZG5sCisj
ICAgIHwgbGlzdAorIyAgICB8IG00X2RxdW90ZShsaXN0KQorIyAgICA9PiBvbmUsIHR3bywgdGhy
ZWUKKyMgICAgPT4gW29uZV0sW3R3b10sW3RocmVlXQorIworIyBOb3RlIHRoYXQgbTRfYXBwZW5k
IGNhbiBiZW5lZml0IGZyb20gYW1vcnRpemVkIE8obikgbTQgYmVoYXZpb3IsIGlmCisjIHRoZSB1
bmRlcmx5aW5nIG00IGltcGxlbWVudGF0aW9uIGlzIHNtYXJ0IGVub3VnaCB0byBhdm9pZCBjb3B5
aW5nIGV4aXN0aW5nCisjIGNvbnRlbnRzIHdoZW4gZW5sYXJnaW5nIGEgbWFjcm8ncyBkZWZpbml0
aW9uIGludG8gYW55IHByZS1hbGxvY2F0ZWQgc3RvcmFnZQorIyAobTQgMS40LnggdW5mb3J0dW5h
dGVseSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhpcyBvcHRpbWl6YXRpb24pLiAgV2UgZG8KKyMgbm90
IGltcGxlbWVudCBtNF9wcmVwZW5kLCBzaW5jZSBpdCBpcyBpbmhlcmVudGx5IE8obl4yKSAocHJl
LWFsbG9jYXRlZAorIyBzdG9yYWdlIG9ubHkgb2NjdXJzIGF0IHRoZSBlbmQgb2YgYSBtYWNybywg
c28gdGhlIGV4aXN0aW5nIGNvbnRlbnRzIG11c3QKKyMgYWx3YXlzIGJlIG1vdmVkKS4KKyMKKyMg
VXNlIF9tNF9kZWZuIGZvciBzcGVlZC4KK200X2RlZmluZShbbTRfYXBwZW5kXSwKK1ttNF9kZWZp
bmUoWyQxXSwgbTRfaWZkZWYoWyQxXSwgW19tNF9kZWZuKFskMV0pWyQzXV0pWyQyXSldKQorCisK
KyMgbTRfYXBwZW5kX3VuaXEoTUFDUk8tTkFNRSwgU1RSSU5HLCBbU0VQQVJBVE9SXSwgW0lGLVVO
SVFdLCBbSUYtRFVQXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBgbTRfYXBwZW5kJywgYnV0IGFw
cGVuZCBvbmx5IGlmIG5vdCB5ZXQgcHJlc2VudC4gIEFkZGl0aW9uYWxseSwKKyMgZXhwYW5kIElG
LVVOSVEgaWYgU1RSSU5HIHdhcyBhcHBlbmRlZCwgb3IgSUYtRFVQIGlmIFNUUklORyB3YXMgYWxy
ZWFkeQorIyBwcmVzZW50LiAgQWxzbywgd2FybiBpZiBTRVBBUkFUT1IgaXMgbm90IGVtcHR5IGFu
ZCBvY2N1cnMgd2l0aGluIFNUUklORywKKyMgYXMgdGhlIGFsZ29yaXRobSBubyBsb25nZXIgZ3Vh
cmFudGVlcyB1bmlxdWVuZXNzLgorIworIyBOb3RlIHRoYXQgd2hpbGUgbTRfYXBwZW5kIGNhbiBi
ZSBPKG4pIChkZXBlbmRpbmcgb24gdGhlIHF1YWxpdHkgb2YgdGhlCisjIHVuZGVybHlpbmcgTTQg
aW1wbGVtZW50YXRpb24pLCBtNF9hcHBlbmRfdW5pcSBpcyBpbmhlcmVudGx5IE8obl4yKQorIyBi
ZWNhdXNlIGVhY2ggYXBwZW5kIG9wZXJhdGlvbiBzZWFyY2hlcyB0aGUgZW50aXJlIHN0cmluZy4K
K200X2RlZmluZShbbTRfYXBwZW5kX3VuaXFdLAorW200X2lmdmFsKFskM10sIFttNF9pZihtNF9p
bmRleChbJDJdLCBbJDNdKSwgWy0xXSwgW10sCisJCSAgICAgICBbbTRfd2Fybihbc3ludGF4XSwK
KwkJCQlbJDA6IGAkMicgY29udGFpbnMgYCQzJ10pXSldKV8kMCgkQCldKQorbTRfZGVmaW5lKFtf
bTRfYXBwZW5kX3VuaXFdLAorW200X2lmZGVmKFskMV0sCisJICBbbTRfaWYobTRfaW5kZXgoWyQz
XV9tNF9kZWZuKFskMV0pWyQzXSwgWyQzJDIkM10pLCBbLTFdLAorCQkgW200X2FwcGVuZChbJDFd
LCBbJDJdLCBbJDNdKSQ0XSwgWyQ1XSldLAorCSAgW200X2RlZmluZShbJDFdLCBbJDJdKSQ0XSld
KQorCisjIG00X2FwcGVuZF91bmlxX3coTUFDUk8tTkFNRSwgU1RSSU5HUykKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3IgZWFjaCBvZiB0aGUgd29yZHMgaW4g
dGhlIHdoaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3QgU1RSSU5HUywgYXBwZW5kCisjIG9ubHkgdGhl
IHVuaXF1ZSBzdHJpbmdzIHRvIHRoZSBkZWZpbml0aW9uIG9mIE1BQ1JPLU5BTUUuCisjCisjIFVz
ZSBfbTRfZGVmbiBmb3Igc3BlZWQuCittNF9kZWZpbmUoW200X2FwcGVuZF91bmlxX3ddLAorW200
X21hcF9hcmdzX3coWyQyXSwgW19tNF9hcHBlbmRfdW5pcShbJDFdLF0sIFssIFsgXSldKV0pCisK
KworIyBtNF9lc2NhcGUoU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQgcXVv
dGVkIFNUUklORywgYnV0IHdpdGggZW1iZWRkZWQgIywgJCwgWyBhbmQgXSB0dXJuZWQgaW50bwor
IyBxdWFkcmlncmFwaHMuCisjCisjIEl0IGlzIGZhc3RlciB0byBjaGVjayBpZiBTVFJJTkcgaXMg
YWxyZWFkeSBnb29kIHVzaW5nIG00X3RyYW5zbGl0CisjIHRoYW4gdG8gYmxpbmRseSBwZXJmb3Jt
IGZvdXIgbTRfYnBhdHN1YnN0LgorIworIyBCZWNhdXNlIHRoZSB0cmFuc2xpdCBpcyBzdHJpcHBp
bmcgcXVvdGVzLCBpdCBtdXN0IGFsc28gbmV1dHJhbGl6ZQorIyBhbnl0aGluZyB0aGF0IG1pZ2h0
IGJlIGluIGEgbWFjcm8gbmFtZSwgYXMgd2VsbCBhcyBjb21tZW50cywgY29tbWFzLAorIyBhbmQg
cGFyZW50aGVzZXMuICBBbGwgdGhlIHByb2JsZW0gY2hhcmFjdGVycyBhcmUgdW5pZmllZCBzbyB0
aGF0IGEKKyMgc2luZ2xlIG00X2luZGV4IGNhbiBzY2FuIHRoZSByZXN1bHQuCisjCisjIFJhdGhl
ciB0aGFuIGV4cGFuZCBtNF9kZWZuIGV2ZXJ5IHRpbWUgbTRfZXNjYXBlIGlzIGV4cGFuZGVkLCB3
ZQorIyBpbmxpbmUgaXRzIGV4cGFuc2lvbiB1cCBmcm9udC4KK200X2RlZmluZShbbTRfZXNjYXBl
XSwKK1ttNF9pZihtNF9pbmRleChtNF90cmFuc2xpdChbJDFdLAorICAgW1tdIywoKV1dbTRfZHF1
b3RlKG00X2RlZm4oW200X2NyX3N5bWJvbHMyXSkpWywgWyQkJF0pLCBbJF0pLAorICBbLTFdLCBb
bTRfZWNob10sIFtfJDBdKShbJDFdKV0pCisKK200X2RlZmluZShbX200X2VzY2FwZV0sCitbbTRf
Y2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKV1kbmwKK1ttNF9icGF0c3Vic3QobTRfYnBhdHN1
YnN0KG00X2JwYXRzdWJzdChtNF9icGF0c3Vic3QoCisJICAtPTx7KC09PHsoLT08eygtPTx7KC09
PHsoJDEpfT49LSl9Pj0tKX0+PS0pfT49LSl9Pj0tLAorCS09PHsoIyl9Pj0tLCAtPTx7KEAlOkAp
fT49LSksCisgICAgICAtPTx7KFxbKX0+PS0sIC09PHsoQDw6QCl9Pj0tKSwKKyAgICAtPTx7KFxd
KX0+PS0sIC09PHsoQDo+QCl9Pj0tKSwKKyAgLT08eyhcJCl9Pj0tLCAtPTx7KEBTfEApfT49LSlt
NF9jaGFuZ2VxdW90ZShbLF0pXSkKKworCisjIG00X3RleHRfd3JhcChTVFJJTkcsIFtQUkVGSVhd
LCBbRklSU1QtUFJFRklYXSwgW1dJRFRIXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeHBhbmRzIGludG8gU1RSSU5HIHdyYXBw
ZWQgdG8gaG9sZCBpbiBXSURUSCBjb2x1bW5zIChkZWZhdWx0ID0gNzkpLgorIyBJZiBQUkVGSVgg
aXMgZ2l2ZW4sIGVhY2ggbGluZSBpcyBwcmVmaXhlZCB3aXRoIGl0LiAgSWYgRklSU1QtUFJFRklY
IGlzCisjIHNwZWNpZmllZCwgdGhlbiB0aGUgZmlyc3QgbGluZSBpcyBwcmVmaXhlZCB3aXRoIGl0
LiAgQXMgYSBzcGVjaWFsIGNhc2UsCisjIGlmIHRoZSBsZW5ndGggb2YgRklSU1QtUFJFRklYIGlz
IGdyZWF0ZXIgdGhhbiB0aGF0IG9mIFBSRUZJWCwgdGhlbgorIyBGSVJTVC1QUkVGSVggd2lsbCBi
ZSBsZWZ0IGFsb25lIG9uIHRoZSBmaXJzdCBsaW5lLgorIworIyBObyBleHBhbnNpb24gb2NjdXJz
IG9uIHRoZSBjb250ZW50cyBTVFJJTkcsIFBSRUZJWCwgb3IgRklSU1QtUFJFRklYLAorIyBhbHRo
b3VnaCBxdWFkcmlncmFwaHMgYXJlIGNvcnJlY3RseSByZWNvZ25pemVkLiAgTW9yZSBwcmVjaXNl
bHksCisjIHlvdSBtYXkgcmVkZWZpbmUgbTRfcWxlbiB0byByZWNvZ25pemUgd2hhdGV2ZXIgZXNj
YXBlIHNlcXVlbmNlcyB0aGF0CisjIHlvdSB3aWxsIHBvc3QtcHJvY2Vzcy4KKyMKKyMgVHlwaWNh
bCBvdXRwdXRzIGFyZToKKyMKKyMgbTRfdGV4dF93cmFwKFtTaG9ydCBzdHJpbmcgKi9dLCBbICAg
XSwgWy8qIF0sIDIwKQorIyAgPT4gLyogU2hvcnQgc3RyaW5nICovCisjCisjIG00X3RleHRfd3Jh
cChbTXVjaCBsb25nZXIgc3RyaW5nICovXSwgWyAgIF0sIFsvKiBdLCAyMCkKKyMgID0+IC8qIE11
Y2ggbG9uZ2VyCisjICA9PiAgICBzdHJpbmcgKi8KKyMKKyMgbTRfdGV4dF93cmFwKFtTaG9ydCBk
b2MuXSwgWyAgICAgICAgICBdLCBbICAtLXNob3J0IF0sIDMwKQorIyAgPT4gICAtLXNob3J0IFNo
b3J0IGRvYy4KKyMKKyMgbTRfdGV4dF93cmFwKFtTaG9ydCBkb2MuXSwgWyAgICAgICAgICBdLCBb
ICAtLXRvby13aWRlIF0sIDMwKQorIyAgPT4gICAtLXRvby13aWRlCisjICA9PiAgICAgICAgICAg
U2hvcnQgZG9jLgorIworIyBtNF90ZXh0X3dyYXAoW1N1cGVyIGxvbmcgZG9jdW1lbnRhdGlvbi5d
LCBbICAgICAgICAgIF0sIFsgIC0tdG9vLXdpZGUgXSwgMzApCisjICA9PiAgIC0tdG9vLXdpZGUK
KyMgID0+ICAgICAgU3VwZXIgbG9uZworIyAgPT4gICAgICBkb2N1bWVudGF0aW9uLgorIworIyBG
SVhNRTogdGhlcmUgaXMgbm8gY2hlY2tpbmcgb2YgYSBsb25nZXIgUFJFRklYIHRoYW4gV0lEVEgs
IGJ1dCBkbworIyB3ZSByZWFsbHkgd2FudCB0byBib3RoZXIgd2l0aCBwZW9wbGUgdHJ5aW5nIGVh
Y2ggc2luZ2xlIGNvcm5lcgorIyBvZiBhIHNvZnR3YXJlPworIworIyBUaGlzIG1hY3JvIGRvZXMg
bm90IGxlYXZlIGEgdHJhaWxpbmcgc3BhY2UgYmVoaW5kIHRoZSBsYXN0IHdvcmQgb2YgYSBsaW5l
LAorIyB3aGljaCBjb21wbGljYXRlcyBpdCBhIGJpdC4gIFRoZSBhbGdvcml0aG0gaXMgb3RoZXJ3
aXNlIHN0dXBpZCBhbmQgc2ltcGxlOgorIyBhbGwgdGhlIHdvcmRzIGFyZSBwcmVjZWRlZCBieSBt
NF9TZXBhcmF0b3Igd2hpY2ggaXMgZGVmaW5lZCB0byBlbXB0eSBmb3IKKyMgdGhlIGZpcnN0IHdv
cmQsIGFuZCB0aGVuIGAgJyAoc2luZ2xlIHNwYWNlKSBmb3IgYWxsIHRoZSBvdGhlcnMuCisjCisj
IFRoZSBhbGdvcml0aG0gdXNlcyBhIGhlbHBlciB0aGF0IHVzZXMgJDIgdGhyb3VnaCAkNCBkaXJl
Y3RseSwgcmF0aGVyIHRoYW4KKyMgdXNpbmcgbG9jYWwgdmFyaWFibGVzLCB0byBhdm9pZCBtNF9k
ZWZuIG92ZXJoZWFkLCBvciBleHBhbnNpb24gc3dhbGxvd2luZworIyBhbnkgJC4gIEl0IGFsc28g
YnlwYXNzZXMgbTRfcG9wZGVmIG92ZXJoZWFkIHdpdGggX200X3BvcGRlZiBzaW5jZSBubyB1c2Vy
CisjIG1hY3JvIGV4cGFuc2lvbiBvY2N1cnMgaW4gdGhlIG1lYW50aW1lLiAgQWxzbywgdGhlIGRl
ZmluaXRpb24gaXMgd3JpdHRlbgorIyB3aXRoIG00X2RvLCB0byBhdm9pZCB0aW1lIHdhc3RlZCBv
biBkbmwgZHVyaW5nIGV4cGFuc2lvbiAoc2luY2UgdGhpcyBpcworIyBhbHJlYWR5IGEgdGltZS1j
b25zdW1pbmcgbWFjcm8pLgorbTRfZGVmaW5lKFttNF90ZXh0X3dyYXBdLAorW18kMChtNF9lc2Nh
cGUoWyQxXSksIFskMl0sIG00X2RlZmF1bHRfcXVvdGVkKFskM10sIFskMl0pLAorICAgICBtNF9k
ZWZhdWx0X3F1b3RlZChbJDRdLCBbNzldKSldKQorCittNF9kZWZpbmUoW19tNF90ZXh0X3dyYXBd
LAorbTRfZG8oZG5sIHNldCB1cCBsb2NhbCB2YXJpYWJsZXMsIHRvIGF2b2lkIHJlcGVhdGVkIGNh
bGN1bGF0aW9ucworW1ttNF9wdXNoZGVmKFttNF9JbmRlbnRdLCBtNF9xbGVuKFskMl0pKV1dLAor
W1ttNF9wdXNoZGVmKFttNF9DdXJzb3JdLCBtNF9xbGVuKFskM10pKV1dLAorW1ttNF9wdXNoZGVm
KFttNF9TZXBhcmF0b3JdLCBbbTRfZGVmaW5lKFttNF9TZXBhcmF0b3JdLCBbIF0pXSldXSwKK2Ru
bCBleHBhbmQgdGhlIGZpcnN0IHByZWZpeCwgdGhlbiBjaGVjayBpdHMgbGVuZ3RoIHZzLiByZWd1
bGFyIHByZWZpeAorZG5sIHNhbWUgbGVuZ3RoOiBub3RoaW5nIHNwZWNpYWwKK2RubCBwcmVmaXgx
IGxvbmdlcjogb3V0cHV0IG9uIGxpbmUgYnkgaXRzZWxmLCBhbmQgcmVzZXQgY3Vyc29yCitkbmwg
cHJlZml4MSBzaG9ydGVyOiBwYWQgdG8gbGVuZ3RoIG9mIHByZWZpeCwgYW5kIHJlc2V0IGN1cnNv
cgorW1tbJDNdbTRfY29uZChbbTRfQ3Vyc29yXSwgbTRfSW5kZW50LCBbXSwKKwkgICAgICBbbTRf
ZXZhbChtNF9DdXJzb3IgPiBtNF9JbmRlbnQpXSwgWzFdLCBbCitbJDJdbTRfZGVmaW5lKFttNF9D
dXJzb3JdLCBtNF9JbmRlbnQpXSwKKwkgICAgICBbbTRfZm9ybWF0KFslKnNdLCBtNF9tYXgoWzBd
LAorICBtNF9ldmFsKG00X0luZGVudCAtIG00X0N1cnNvcikpLCBbXSltNF9kZWZpbmUoW200X0N1
cnNvcl0sIG00X0luZGVudCldKV1dLAorZG5sIG5vdywgZm9yIGVhY2ggd29yZCwgY29tcHV0ZSB0
aGUgY3Vyc29yIGFmdGVyIHRoZSB3b3JkIGlzIG91dHB1dCwgdGhlbgorZG5sIGNoZWNrIGlmIHRo
ZSBjdXJzb3Igd291bGQgZXhjZWVkIHRoZSB3cmFwIGNvbHVtbgorZG5sIGlmIHNvLCByZXNldCBj
dXJzb3IsIGFuZCBpbnNlcnQgbmV3bGluZSBhbmQgcHJlZml4CitkbmwgaWYgbm90LCBpbnNlcnQg
dGhlIHNlcGFyYXRvciAodXN1YWxseSBhIHNwYWNlKQorZG5sIGVpdGhlciB3YXksIGluc2VydCB0
aGUgd29yZAorW1ttNF9tYXBfYXJnc193KFskMV0sIFskMF93b3JkKF0sIFssIFskMl0sIFskNF0p
XSldXSwKK2RubCBmaW5hbGx5LCBjbGVhbiB1cCB0aGUgbG9jYWwgdmFyaWFibGVzCitbW19tNF9w
b3BkZWYoW200X1NlcGFyYXRvcl0sIFttNF9DdXJzb3JdLCBbbTRfSW5kZW50XSldXSkpCisKK200
X2RlZmluZShbX200X3RleHRfd3JhcF93b3JkXSwKK1ttNF9kZWZpbmUoW200X0N1cnNvcl0sIG00
X2V2YWwobTRfQ3Vyc29yICsgbTRfcWxlbihbJDFdKSArIDEpKV1kbmwKK1ttNF9pZihtNF9ldmFs
KG00X0N1cnNvciA+IChbJDNdKSksCisgICAgICBbMV0sIFttNF9kZWZpbmUoW200X0N1cnNvcl0s
IG00X2V2YWwobTRfSW5kZW50ICsgbTRfcWxlbihbJDFdKSArIDEpKQorWyQyXV0sCisgICAgICBb
bTRfU2VwYXJhdG9yW11dKVskMV1dKQorCisjIG00X3RleHRfYm94KE1FU1NBR0UsIFtGUkFNRS1D
SEFSQUNURVIgPSBgLSddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgVHVybiBNRVNTQUdFIGludG86CisjICAjIyAtLS0tLS0tICMjCisjICAjIyBN
RVNTQUdFICMjCisjICAjIyAtLS0tLS0tICMjCisjIHVzaW5nIEZSQU1FLUNIQVJBQ1RFUiBpbiB0
aGUgYm9yZGVyLgorIworIyBRdWFkcmlncmFwaHMgYXJlIGNvcnJlY3RseSByZWNvZ25pemVkLiAg
TW9yZSBwcmVjaXNlbHksIHlvdSBtYXkKKyMgcmVkZWZpbmUgbTRfcWxlbiB0byByZWNvZ25pemUg
d2hhdGV2ZXIgZXNjYXBlIHNlcXVlbmNlcyB0aGF0IHlvdQorIyB3aWxsIHBvc3QtcHJvY2Vzcy4K
K200X2RlZmluZShbbTRfdGV4dF9ib3hdLAorW200X3B1c2hkZWYoW200X0JvcmRlcl0sCisJICAg
IG00X3RyYW5zbGl0KG00X2Zvcm1hdChbW1slKnNdXV0sIG00X2RlY3IobTRfcWxlbihfbTRfZXhw
YW5kKFskMQorXSkpKSwgW10pLCBbIF0sIG00X2RlZmF1bHRfcXVvdGVkKFskMl0sIFstXSkpKV1k
bmwKK1tbIyNdIF9tNF9kZWZuKFttNF9Cb3JkZXJdKSBbIyNdCitbIyNdICQxIFsjI10KK1sjI10g
X200X2RlZm4oW200X0JvcmRlcl0pIFsjI11fbTRfcG9wZGVmKFttNF9Cb3JkZXJdKV0pCisKKwor
IyBtNF9xbGVuKFNUUklORykKKyMgLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZHMgdG8gdGhlIGxl
bmd0aCBvZiBTVFJJTkcgYWZ0ZXIgYXV0b200dGUgY29udmVydHMgYWxsIHF1YWRyaWdyYXBocy4K
KyMKKyMgSWYgeW91IHVzZSBzb21lIG90aGVyIG1lYW5zIG9mIHBvc3QtcHJvY2Vzc2luZyBtNCBv
dXRwdXQgcmF0aGVyIHRoYW4KKyMgYXV0b200dGUsIHRoZW4geW91IG1heSByZWRlZmluZSB0aGlz
IG1hY3JvIHRvIHJlY29nbml6ZSB3aGF0ZXZlcgorIyBlc2NhcGUgc2VxdWVuY2VzIHlvdXIgcG9z
dC1wcm9jZXNzb3Igd2lsbCBoYW5kbGUuICBGb3IgdGhhdCBtYXR0ZXIsCisjIG00X2RlZmluZShb
bTRfcWxlbl0sIG00X2RlZm4oW200X2xlbl0pKSBpcyBzdWZmaWNpZW50IGlmIHlvdSBkb24ndAor
IyBkbyBhbnkgcG9zdC1wcm9jZXNzaW5nLgorIworIyBBdm9pZCBicGF0c3Vic3RzIGZvciB0aGUg
Y29tbW9uIGNhc2Ugb2Ygbm8gcXVhZHJpZ3JhcGhzLiAgQ2FjaGUKKyMgcmVzdWx0cywgYXMgY29u
ZmlndXJlIHNjcmlwdHMgdGVuZCB0byBhc2sgYWJvdXQgbGVuZ3RocyBvZiBjb21tb24KKyMgc3Ry
aW5ncyBsaWtlIGAvKicgYW5kIGAqLycgcmF0aGVyIGZyZXF1ZW50bHkuICBNaW5pbWl6ZSB0aGUg
bnVtYmVyCisjIG9mIHRpbWVzIHRoYXQgJDEgb2NjdXJzIGluIG00X3FsZW4sIHNvIHRoZXJlIGlz
IGxlc3MgdGV4dCB0byBwYXJzZQorIyBvbiBhIGNhY2hlIGhpdC4KK200X2RlZmluZShbbTRfcWxl
bl0sCitbbTRfaWZkZWYoWyQwLSQxXSwgW19tNF9kZWZuKFskMC1dXSwgW18kMChdKVskMV0pXSkK
K200X2RlZmluZShbX200X3FsZW5dLAorW200X2RlZmluZShbbTRfcWxlbi0kMV0sCittNF9pZiht
NF9pbmRleChbJDFdLCBbQF0pLCBbLTFdLCBbbTRfbGVuKFskMV0pXSwKKyAgICAgIFttNF9sZW4o
bTRfYnBhdHN1YnN0KFtbJDFdXSwKKwkJCSAgIFtAXChcKDw6XHw6Plx8U3xcfCU6XHxcezpcfDpc
fVwpXChAXClcfCZ0QFwpXSwKKwkJCSAgIFtcM10pKV0pKV9tNF9kZWZuKFttNF9xbGVuLSQxXSld
KQorCisjIG00X2NvcHlyaWdodF9jb25kZW5zZShURVhUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgQ29uZGVuc2UgdGhlIGNvcHlyaWdodCBub3RpY2UgaW4gVEVYVCB0byBvbmx5
IGRpc3BsYXkgdGhlIGZpbmFsCisjIHllYXIsIHdyYXBwaW5nIHRoZSByZXN1bHRzIHRvIGZpdCBp
biA4MCBjb2x1bW5zLgorbTRfZGVmaW5lKFttNF9jb3B5cmlnaHRfY29uZGVuc2VdLAorW200X3Rl
eHRfd3JhcChtNF9icGF0c3Vic3QobTRfZmxhdHRlbihbWyQxXV0pLAorWyhDKVstCSAsMC05XSpc
KFsxLTldWzAtOV1bMC05XVswLTldXCldLCBbKEMpIFwxXSkpXSkKKworIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gIyMKKyMjIDEzLiBOdW1iZXIgcHJvY2Vzc2luZy4gICMjCisjIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAjIworCisjIG00X2NtcChBLCBCKQorIyAtLS0tLS0tLS0tLS0KKyMg
Q29tcGFyZSB0d28gaW50ZWdlciBleHByZXNzaW9ucy4KKyMgQSA8IEIgLT4gLTEKKyMgQSA9IEIg
LT4gIDAKKyMgQSA+IEIgLT4gIDEKK200X2RlZmluZShbbTRfY21wXSwKK1ttNF9ldmFsKCgoWyQx
XSkgPiAoWyQyXSkpIC0gKChbJDFdKSA8IChbJDJdKSkpXSkKKworCisjIG00X2xpc3RfY21wKEEs
IEIpCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjCisjIENvbXBhcmUgdGhlIHR3byBsaXN0cyBvZiBp
bnRlZ2VyIGV4cHJlc3Npb25zIEEgYW5kIEIuICBGb3IgaW5zdGFuY2U6CisjICAgbTRfbGlzdF9j
bXAoWzEsIDBdLCAgICAgWzFdKSAgICAtPiAgMAorIyAgIG00X2xpc3RfY21wKFsxLCAwXSwgICAg
IFsxLCAwXSkgLT4gIDAKKyMgICBtNF9saXN0X2NtcChbMSwgMl0sICAgICBbMSwgMF0pIC0+ICAx
CisjICAgbTRfbGlzdF9jbXAoWzEsIDIsIDNdLCAgWzEsIDJdKSAtPiAgMQorIyAgIG00X2xpc3Rf
Y21wKFsxLCAyLCAtM10sIFsxLCAyXSkgLT4gLTEKKyMgICBtNF9saXN0X2NtcChbMSwgMF0sICAg
ICBbMSwgMl0pIC0+IC0xCisjICAgbTRfbGlzdF9jbXAoWzFdLCAgICAgICAgWzEsIDJdKSAtPiAt
MQorIyAgIG00X2RlZmluZShbeGFdLCBbb29wc10pZG5sCisjICAgbTRfbGlzdF9jbXAoW1sweGFd
XSwgICAgWzUrNV0pICAtPiAwCisjCisjIFJhdGhlciB0aGFuIGZhY2UgdGhlIG92ZXJoZWFkIG9m
IG00X2Nhc2UsIHdlIHVzZSBhIGhlbHBlciBmdW5jdGlvbiB3aG9zZQorIyBleHBhbnNpb24gaW5j
bHVkZXMgdGhlIG5hbWUgb2YgdGhlIG1hY3JvIHRvIGludm9rZSBvbiB0aGUgdGFpbCwgZWl0aGVy
CisjIG00X2lnbm9yZSBvciBtNF91bnF1b3RlLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs
IHdoZW4gY29tcGFyaW5nCisjIGxvbmcgbGlzdHMsIHNpbmNlIGxlc3MgdGV4dCBpcyBiZWluZyBl
eHBhbmRlZCBmb3IgZGVjaWRpbmcgd2hlbiB0byBlbmQKKyMgcmVjdXJzaW9uLiAgVGhlIHJlY3Vy
c2lvbiBpcyBiZXR3ZWVuIGEgcGFpciBvZiBtYWNyb3MgdGhhdCBhbHRlcm5hdGUKKyMgd2hpY2gg
bGlzdCBpcyB0cmltbWVkIGJ5IG9uZSBlbGVtZW50OyB0aGlzIGlzIG1vcmUgZWZmaWNpZW50IHRo
YW4KKyMgY2FsbGluZyBtNF9jZHIgb24gYm90aCBsaXN0cyBmcm9tIGEgc2luZ2xlIG1hY3JvLiAg
R3VhcmFudGVlIGV4YWN0bHkKKyMgb25lIGV4cGFuc2lvbiBvZiBib3RoIGxpc3RzJyBzaWRlIGVm
ZmVjdHMuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1
c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW200X2xpc3RfY21wXSwKK1tfJDBfcmF3KG00
X2RxdW90ZSgkMSksIG00X2RxdW90ZSgkMikpXSkKKworbTRfZGVmaW5lKFtfbTRfbGlzdF9jbXBf
cmF3XSwKK1ttNF9pZihbJDFdLCBbJDJdLCBbMF0sIFtfbTRfbGlzdF9jbXBfMShbJDFdLCAkMild
KV0pCisKK200X2RlZmluZShbX200X2xpc3RfY21wXSwKK1ttNF9pZihbJDFdLCBbXSwgWzBtNF9p
Z25vcmVdLCBbJDJdLCBbMF0sIFttNF91bnF1b3RlXSwgWyQybTRfaWdub3JlXSldKQorCittNF9k
ZWZpbmUoW19tNF9saXN0X2NtcF8xXSwKK1tfbTRfbGlzdF9jbXBfMihbJDJdLCBbbTRfc2hpZnQy
KCRAKV0sICQxKV0pCisKK200X2RlZmluZShbX200X2xpc3RfY21wXzJdLAorW19tNF9saXN0X2Nt
cChbJDEkM10sIG00X2NtcChbJDMrMF0sIFskMSswXSkpKAorICBbX200X2xpc3RfY21wXzEobTRf
ZHF1b3RlKG00X3NoaWZ0MygkQCkpLCAkMildKV0pCisKKyMgbTRfbWF4KEVYUFIsIC4uLikKKyMg
bTRfbWluKEVYUFIsIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmV0dXJuIHRoZSBkZWNp
bWFsIHZhbHVlIG9mIHRoZSBtYXhpbXVtIChvciBtaW5pbXVtKSBpbiBhIHNlcmllcyBvZgorIyBp
bnRlZ2VyIGV4cHJlc3Npb25zLgorIworIyBNNCAxLjQueCBkb2Vzbid0IHByb3ZpZGUgPzouICBI
ZW5jZSB0aGlzIGh1Z2UgbTRfZXZhbC4gIEF2b2lkIG00X2V2YWwKKyMgaWYgYm90aCBhcmd1bWVu
dHMgYXJlIGlkZW50aWNhbCwgYnV0IGJlIGF3YXJlIG9mIG00X21heCgweGEsIDEwKSAoaGVuY2UK
KyMgdGhlIHVzZSBvZiA8PSwgbm90IGp1c3QgPCwgaW4gdGhlIHNlY29uZCBtdWx0aXBseSkuCisj
CisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBt
YWRlIGhlcmUuCittNF9kZWZpbmUoW200X21heF0sCitbbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0
YWwoW3RvbyBmZXcgYXJndW1lbnRzIHRvICQwXSldLAorICAgICAgIFskI10sIFsxXSwgW200X2V2
YWwoWyQxXSldLAorICAgICAgIFskIyQxXSwgWzIkMl0sIFttNF9ldmFsKFskMV0pXSwKKyAgICAg
ICBbJCNdLCBbMl0sIFtfJDAoJEApXSwKKyAgICAgICBbX200X21pbm1heChbXyQwXSwgJEApXSld
KQorCittNF9kZWZpbmUoW19tNF9tYXhdLAorW200X2V2YWwoKChbJDFdKSA+IChbJDJdKSkgKiAo
WyQxXSkgKyAoKFskMV0pIDw9IChbJDJdKSkgKiAoWyQyXSkpXSkKKworbTRfZGVmaW5lKFttNF9t
aW5dLAorW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFt0b28gZmV3IGFyZ3VtZW50cyB0byAk
MF0pXSwKKyAgICAgICBbJCNdLCBbMV0sIFttNF9ldmFsKFskMV0pXSwKKyAgICAgICBbJCMkMV0s
IFsyJDJdLCBbbTRfZXZhbChbJDFdKV0sCisgICAgICAgWyQjXSwgWzJdLCBbXyQwKCRAKV0sCisg
ICAgICAgW19tNF9taW5tYXgoW18kMF0sICRAKV0pXSkKKworbTRfZGVmaW5lKFtfbTRfbWluXSwK
K1ttNF9ldmFsKCgoWyQxXSkgPCAoWyQyXSkpICogKFskMV0pICsgKChbJDFdKSA+PSAoWyQyXSkp
ICogKFskMl0pKV0pCisKKyMgX200X21pbm1heChNRVRIT0QsIEFSRzEsIEFSRzIuLi4pCisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21tb24gcmVjdXJzaW9uIGNvZGUg
Zm9yIG00X21heCBhbmQgbTRfbWluLiAgTUVUSE9EIG11c3QgYmUgX200X21heAorIyBvciBfbTRf
bWluLCBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCB0d28gYXJndW1lbnRzIHRvIGNvbWJpbmUu
CisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50
cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW19tNF9taW5tYXhdLAorW200X2lmKFskI10sIFszXSwg
WyQxKFskMl0sIFskM10pXSwKKyAgICAgICBbJDAoWyQxXSwgJDEoWyQyXSwgWyQzXSksIG00X3No
aWZ0MygkQCkpXSldKQorCisKKyMgbTRfc2lnbihBKQorIyAtLS0tLS0tLS0tCisjIFRoZSBzaWdu
IG9mIHRoZSBpbnRlZ2VyIGV4cHJlc3Npb24gQS4KK200X2RlZmluZShbbTRfc2lnbl0sCitbbTRf
ZXZhbCgoKFskMV0pID4gMCkgLSAoKFskMV0pIDwgMCkpXSkKKworCisKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAjIworIyMgMTQuIFZlcnNpb24gcHJvY2Vzc2luZy4gICMjCisjIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIG00X3ZlcnNpb25fdW5sZXR0ZXIoVkVSU0lP
TikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBOb3JtYWxpemUgYmV0YSB2ZXJz
aW9uIG51bWJlcnMgd2l0aCBsZXR0ZXJzIHRvIG51bWVyaWMgZXhwcmVzc2lvbnMsIHdoaWNoCisj
IGNhbiB0aGVuIGJlIGhhbmRlZCB0byBtNF9ldmFsIGZvciB0aGUgcHVycG9zZSBvZiBjb21wYXJp
c29uLgorIworIyAgIE5sIC0+IChOKzEpLi0xLihsIykKKyMKKyMgZm9yIGV4YW1wbGU6CisjICAg
WzIuMTRhXSAtPiBbMCwyLDE0KzEsLTEsWzByMzY6YV1dIC0+IDIuMTUuLTEuMTAKKyMgICBbMi4x
NGJdIC0+IFswLDIsMTUrMSwtMSxbMHIzNjpiXV0gLT4gMi4xNS4tMS4xMQorIyAgIFsyLjYxYWEu
Yl0gLT4gWzAsMi42MSwxLC0xLFswcjM2OmFhXSwrMSwtMSxbMHIzNjpiXV0gLT4gMi42Mi4tMS4z
NzAuMS4tMS4xMQorIyAgIFswOF0gLT4gWzAsWzByMTA6MF04XSAtPiA4CisjCisjIFRoaXMgbWFj
cm8gZXhwZWN0cyByZWFzb25hYmxlIHZlcnNpb24gbnVtYmVycywgYnV0IGNhbiBoYW5kbGUgZG91
YmxlCisjIGxldHRlcnMgYW5kIGRvZXMgbm90IGV4cGFuZCBhbnkgbWFjcm9zLiAgT3JpZ2luYWwg
dmVyc2lvbiBzdHJpbmdzIGNhbgorIyB1c2UgYm90aCBgLicgYW5kIGAtJyBzZXBhcmF0b3JzLgor
IworIyBJbmxpbmUgY29uc3RhbnQgZXhwYW5zaW9ucywgdG8gYXZvaWQgbTRfZGVmbiBvdmVyaGVh
ZC4KKyMgX200X3ZlcnNpb25fdW5sZXR0ZXIgaXMgdGhlIHJlYWwgd29ya2hvcnNlIHVzZWQgYnkg
bTRfdmVyc2lvbl9jb21wYXJlLAorIyBidXQgc2luY2UgWzByMzY6YV0gYW5kIGNvbW1hcyBhcmUg
bGVzcyByZWFkYWJsZSB0aGFuIDEwIGFuZCBkb3RzLCB3ZQorIyBwcm92aWRlIGEgd3JhcHBlciBm
b3IgaHVtYW4gdXNlLgorbTRfZGVmaW5lKFttNF92ZXJzaW9uX3VubGV0dGVyXSwKK1ttNF9zdWJz
dHIobTRfbWFwX2FyZ3MoWy5tNF9ldmFsXSwgbTRfdW5xdW90ZShfJDAoWyQxXSkpKSwgWzNdKV0p
CittNF9kZWZpbmUoW19tNF92ZXJzaW9uX3VubGV0dGVyXSwKK1ttNF9icGF0c3Vic3QobTRfYnBh
dHN1YnN0KG00X3RyYW5zbGl0KFtbW1swLCQxXV1dXSwgWy4tXSwgWywsXSksXWRubAorbTRfZHF1
b3RlKG00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9MZXR0ZXJzXSkpKVtbK10sCisJICAgICAgWysx
LC0xLFswcjM2OlwmXV0pLCBbLDBdLCBbLFswcjEwOjBdXSldKQorCisKKyMgbTRfdmVyc2lvbl9j
b21wYXJlKFZFUlNJT04tMSwgVkVSU0lPTi0yKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIENvbXBhcmUgdGhlIHR3byB2ZXJzaW9uIG51bWJlcnMgYW5kIGV4
cGFuZCBpbnRvCisjICAtMSBpZiBWRVJTSU9OLTEgPCBWRVJTSU9OLTIKKyMgICAwIGlmICAgICAg
ICAgICA9CisjICAgMSBpZiAgICAgICAgICAgPgorIworIyBTaW5jZSBfbTRfdmVyc2lvbl91bmxl
dHRlciBkb2VzIG5vdCBvdXRwdXQgc2lkZSBlZmZlY3RzLCB3ZSBjYW4KKyMgc2FmZWx5IGJ5cGFz
cyB0aGUgb3ZlcmhlYWQgb2YgbTRfdmVyc2lvbl9jbXAuCittNF9kZWZpbmUoW200X3ZlcnNpb25f
Y29tcGFyZV0sCitbX200X2xpc3RfY21wX3JhdyhfbTRfdmVyc2lvbl91bmxldHRlcihbJDFdKSwg
X200X3ZlcnNpb25fdW5sZXR0ZXIoWyQyXSkpXSkKKworCisjIG00X1BBQ0tBR0VfTkFNRQorIyBt
NF9QQUNLQUdFX1RBUk5BTUUKKyMgbTRfUEFDS0FHRV9WRVJTSU9OCisjIG00X1BBQ0tBR0VfU1RS
SU5HCisjIG00X1BBQ0tBR0VfQlVHUkVQT1JUCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElm
IG00c3VnYXIvdmVyc2lvbi5tNCBpcyBwcmVzZW50LCB0aGVuIGRlZmluZSB2ZXJzaW9uIHN0cmlu
Z3MuICBUaGlzCisjIGZpbGUgaXMgb3B0aW9uYWwsIHByb3ZpZGVkIGJ5IEF1dG9jb25mIGJ1dCBh
YnNlbnQgaW4gQmlzb24uCittNF9zaW5jbHVkZShbbTRzdWdhci92ZXJzaW9uLm00XSkKKworCisj
IG00X3ZlcnNpb25fcHJlcmVxKFZFUlNJT04sIFtJRi1PS10sIFtJRi1OT1QgPSBGQUlMXSkKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBD
aGVjayB0aGlzIEF1dG9jb25mIHZlcnNpb24gYWdhaW5zdCBWRVJTSU9OLgorbTRfZGVmaW5lKFtt
NF92ZXJzaW9uX3ByZXJlcV0sCittNF9pZmRlZihbbTRfUEFDS0FHRV9WRVJTSU9OXSwKK1tbbTRf
aWYobTRfdmVyc2lvbl9jb21wYXJlKF1tNF9kcXVvdGUobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJT
SU9OXSkpWywgWyQxXSksCisJWy0xXSwKKwlbbTRfZGVmYXVsdChbJDNdLAorCQkgICAgW200X2Zh
dGFsKFtBdXRvY29uZiB2ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1aXJlZF0sCisJCQkgICAg
ICBbNjNdKV0pXSwKKwlbJDJdKV1dLAorW1ttNF9mYXRhbChbbTRzdWdhci92ZXJzaW9uLm00IG5v
dCBmb3VuZF0pXV0pKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgMTUuIFNldCBo
YW5kbGluZy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBBdXRvY29uZiBsaWtl
cyB0byBjcmVhdGUgYXJiaXRyYXJpbHkgbGFyZ2Ugc2V0czsgZm9yIGV4YW1wbGUsIGFzIG9mCisj
IHRoaXMgd3JpdGluZywgdGhlIGNvbmZpZ3VyZS5hYyBmb3IgY29yZXV0aWxzIHRyYWNrcyBhIHNl
dCBvZiBtb3JlCisjIHRoYW4gNDAwIEFDX1NVQlNULiAgSG93IGRvIHdlIHRyYWNrIGFsbCBvZiB0
aGVzZSBzZXQgbWVtYmVycywKKyMgd2l0aG91dCBpbnRyb2R1Y2luZyBkdXBsaWNhdGVzPyAgV2Ug
Y291bGQgdXNlIG00X2FwcGVuZF91bmlxLCB3aXRoCisjIHRoZSBzZXQgTkFNRSByZXNpZGluZyBp
biB0aGUgY29udGVudHMgb2YgdGhlIG1hY3JvIE5BTUUuCisjIFVuZm9ydHVuYXRlbHksIG00X2Fw
cGVuZF91bmlxIGlzIHF1YWRyYXRpYyBmb3Igc2V0IGNyZWF0aW9uLCBiZWNhdXNlCisjIGl0IGNv
c3RzIE8obikgdG8gc2VhcmNoIHRoZSBzdHJpbmcgZm9yIGVhY2ggb2YgTyhuKSBpbnNlcnRpb25z
OyBub3QKKyMgdG8gbWVudGlvbiB0aGF0IHdpdGggbTQgMS40LngsIGV2ZW4gdXNpbmcgbTRfYXBw
ZW5kIGlzIHNsb3csIGNvc3RpbmcKKyMgTyhuKSByYXRoZXIgdGhhbiBPKDEpIHBlciBpbnNlcnRp
b24uICBPdGhlciBzZXQgb3BlcmF0aW9ucywgbm90IHVzZWQKKyMgYnkgQXV0b2NvbmYgYnV0IHN0
aWxsIHBvc3NpYmxlIGJ5IG1hbmlwdWxhdGlvbiBvZiB0aGUgZGVmaW5pdGlvbgorIyB0cmFja2Vk
IGluIG1hY3JvIE5BTUUsIGluY2x1ZGUgTyhuKSBkZWxldGlvbiBvZiBvbmUgZWxlbWVudCBhbmQg
TyhuKQorIyBjb21wdXRhdGlvbiBvZiBzZXQgc2l6ZS4gIEJlY2F1c2UgdGhlIHNldCBpcyBleHBv
c2VkIHRvIHRoZSB1c2VyIHZpYQorIyB0aGUgZGVmaW5pdGlvbiBvZiBhIHNpbmdsZSBtYWNybywg
d2UgY2Fubm90IGNhY2hlIGFueSBkYXRhIGFib3V0IHRoZQorIyBzZXQgd2l0aG91dCByaXNraW5n
IHRoZSBjYWNoZSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGUgdXNlcgorIyByZWRlZmluaW5nIE5B
TUUuCisjCisjIENhbiB3ZSBkbyBiZXR0ZXI/ICBZZXMsIGJlY2F1c2UgbTQgZ2l2ZXMgdXMgYW4g
TygxKSBzZWFyY2ggZnVuY3Rpb24KKyMgZm9yIGZyZWU6IGlmZGVmLiAgQWRkaXRpb25hbGx5LCBl
dmVuIG00IDEuNC54IGdpdmVzIHVzIGFuIE8oMSkKKyMgaW5zZXJ0IG9wZXJhdGlvbiBmb3IgZnJl
ZTogcHVzaGRlZi4gIEJ1dCB0byB1c2UgdGhlc2UsIHdlIG11c3QKKyMgcmVwcmVzZW50IHRoZSBz
ZXQgdmlhIGEgZ3JvdXAgb2YgbWFjcm9zOyB0byBrZWVwIHRoZSBzZXQgY29uc2lzdGVudCwKKyMg
d2UgbXVzdCBoaWRlIHRoZSBzZXQgc28gdGhhdCB0aGUgdXNlciBjYW4gb25seSBtYW5pcHVsYXRl
IGl0IHRocm91Z2gKKyMgYWNjZXNzb3IgbWFjcm9zLiAgVGhlIGNvbnRlbnRzIG9mIHRoZSBzZXQg
YXJlIG1haW50YWluZWQgdGhyb3VnaCB0d28KKyMgYWNjZXNzIHBvaW50czsgX200X3NldChbbmFt
ZV0pIGlzIGEgcHVzaGRlZiBzdGFjayBvZiB2YWx1ZXMgaW4gdGhlCisjIHNldCwgdXNlZnVsIGZv
ciBPKG4pIHRyYXZlcnNhbCBvZiB0aGUgc2V0IGNvbnRlbnRzOyB3aGlsZSB0aGUKKyMgZXhpc3Rl
bmNlIG9mIF9tNF9zZXQoW25hbWVdLHZhbHVlKSB3aXRoIG5vIHBhcnRpY3VsYXIgdmFsdWUgaXMK
KyMgdXNlZnVsIGZvciBPKDEpIHF1ZXJ5aW5nIG9mIHNldCBtZW1iZXJzaGlwLiAgQW5kIHNpbmNl
IHRoZSB1c2VyCisjIGNhbm5vdCBleHRlcm5hbGx5IG1hbmlwdWxhdGUgdGhlIHNldCwgd2UgYXJl
IGZyZWUgdG8gYWRkIGFkZGl0aW9uYWwKKyMgY2FjaGluZyBtYWNyb3MgZm9yIG90aGVyIHBlcmZv
cm1hbmNlIGltcHJvdmVtZW50cy4gIERlbGV0aW9uIGNhbiBiZQorIyBPKDEpIHBlciBlbGVtZW50
IHJhdGhlciB0aGFuIE8obiksIGJ5IHJld29ya2luZyB0aGUgZGVmaW5pdGlvbiBvZgorIyBfbTRf
c2V0KFtuYW1lXSx2YWx1ZSkgdG8gYmUgMCBvciAxIGJhc2VkIG9uIGN1cnJlbnQgbWVtYmVyc2hp
cCwgYW5kCisjIGFkZGluZyBfbTRfc2V0X2NsZWFudXAobmFtZSkgdG8gZGVmZXIgdGhlIE8obikg
Y2xlYW51cCBvZgorIyBfbTRfc2V0KFtuYW1lXSkgdW50aWwgd2UgaGF2ZSBhbm90aGVyIHJlYXNv
biB0byBkbyBhbiBPKG4pCisjIHRyYXZlcnNhbC4gIFRoZSBleGlzdGVuY2Ugb2YgX200X3NldF9j
bGVhbnVwKG5hbWUpIGNhbiB0aGVuIGJlIHVzZWQKKyMgZWxzZXdoZXJlIHRvIGRldGVybWluZSBp
ZiB3ZSBtdXN0IGRlcmVmZXJlbmNlIF9tNF9zZXQoW25hbWVdLHZhbHVlKSwKKyMgb3IgYXNzdW1l
IHRoYXQgZGVmaW5pdGlvbiBpbXBsaWVzIHNldCBtZW1iZXJzaGlwLiAgRmluYWxseSwgc2l6ZSBj
YW4KKyMgYmUgdHJhY2tlZCBpbiBhbiBPKDEpIGZhc2hpb24gd2l0aCBfbTRfc2V0X3NpemUobmFt
ZSkuCisjCisjIFRoZSBxdW90aW5nIGluIF9tNF9zZXQoW25hbWVdLHZhbHVlKSBpcyBjaG9zZW4g
c28gdGhhdCB0aGVyZSBpcyBubworIyBhbWJpZ3VpdHkgd2l0aCBhIHNldCB3aG9zZSBuYW1lIGNv
bnRhaW5zIGEgY29tbWEsIGFuZCBzbyB0aGF0IHdlIGNhbgorIyBzdXBwbHkgdGhlIHZhbHVlIHZp
YSBfbTRfZGVmbihbX200X3NldChbbmFtZV0pXSkgd2l0aG91dCBuZWVkaW5nIGFueQorIyBxdW90
ZSBtYW5pcHVsYXRpb24uCisKKyMgbTRfc2V0X2FkZChTRVQsIFZBTFVFLCBbSUYtVU5JUV0sIFtJ
Ri1EVVBdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IEFkZCBWQUxVRSBhcyBhbiBlbGVtZW50IG9mIFNFVC4gIEV4cGFuZCBJRi1VTklRIG9uIHRoZSBm
aXJzdAorIyBhZGRpdGlvbiwgYW5kIElGLURVUCBpZiBpdCBpcyBhbHJlYWR5IGluIHRoZSBzZXQu
ICBBZGRpdGlvbiBvZiBvbmUKKyMgZWxlbWVudCBpcyBPKDEpLCBzdWNoIHRoYXQgb3ZlcmFsbCBz
ZXQgY3JlYXRpb24gaXMgTyhuKS4KKyMKKyMgV2UgZG8gbm90IHdhbnQgdG8gYWRkIGEgZHVwbGlj
YXRlIGZvciBhIHByZXZpb3VzbHkgZGVsZXRlZCBidXQKKyMgdW5wcnVuZWQgZWxlbWVudCwgYnV0
IGl0IGlzIGp1c3QgYXMgZWFzeSB0byBjaGVjayBleGlzdGVuY2UgZGlyZWN0bHkKKyMgYXMgaXQg
aXMgdG8gcXVlcnkgX200X3NldF9jbGVhbnVwKCQxKS4KK200X2RlZmluZShbbTRfc2V0X2FkZF0s
CitbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLAorCSAgW200X2lmKG00X2luZGlyKFtfbTRf
c2V0KFskMV0sJDIpXSksIFswXSwKKwkJIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMildLAor
CQkJICAgIFsxXSlfbTRfc2V0X3NpemUoWyQxXSwgW200X2luY3JdKSQzXSwgWyQ0XSldLAorCSAg
W200X2RlZmluZShbX200X3NldChbJDFdLCQyKV0sCisJCSAgICAgWzFdKW00X3B1c2hkZWYoW19t
NF9zZXQoWyQxXSldLAorCQkJCSAgICBbJDJdKV9tNF9zZXRfc2l6ZShbJDFdLCBbbTRfaW5jcl0p
JDNdKV0pCisKKyMgbTRfc2V0X2FkZF9hbGwoU0VULCBWQUxVRS4uLikKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgQWRkIGVhY2ggVkFMVUUgaW50byBTRVQuICBUaGlzIGlzIE8o
bikgaW4gdGhlIG51bWJlciBvZiBWQUxVRXMsIGFuZAorIyBjYW4gYmUgZmFzdGVyIHRoYW4gY2Fs
bGluZyBtNF9zZXRfYWRkIGZvciBlYWNoIFZBTFVFLgorIworIyBJbXBsZW1lbnQgdHdvIHJlY3Vy
c2lvbiBoZWxwZXJzOyB0aGUgY2hlY2sgdmFyaWFudCBpcyBzbG93ZXIgYnV0CisjIGhhbmRsZXMg
dGhlIGNhc2Ugd2hlcmUgYW4gZWxlbWVudCBoYXMgcHJldmlvdXNseSBiZWVuIHJlbW92ZWQgYnV0
CisjIG5vdCBwcnVuZWQuICBUaGUgcmVjdXJzaW9uIGhlbHBlcnMgaWdub3JlIHRoZWlyIHNlY29u
ZCBhcmd1bWVudCwgc28KKyMgdGhhdCB3ZSBjYW4gdXNlIHRoZSBmYXN0ZXIgbTRfc2hpZnQyIGFu
ZCAyIGFyZ3VtZW50cywgcmF0aGVyIHRoYW4KKyMgX200X3NoaWZ0MiBhbmQgb25lIGFyZ3VtZW50
LCBhcyB0aGUgc2lnbmFsIHRvIGVuZCByZWN1cnNpb24uCisjCisjIFBsZWFzZSBrZWVwIGZvcmVh
Y2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUo
W200X3NldF9hZGRfYWxsXSwKK1ttNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLCBtNF9ldmFs
KG00X3NldF9zaXplKFskMV0pCisgICsgbTRfbGVuKG00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAo
JDEpXSwgW18kMF9jaGVja10sIFtfJDBdKShbJDFdLCAkQCkpKSldKQorCittNF9kZWZpbmUoW19t
NF9zZXRfYWRkX2FsbF0sCitbbTRfaWYoWyQjXSwgWzJdLCBbXSwKKyAgICAgICBbbTRfaWZkZWYo
W19tNF9zZXQoWyQxXSwkMyldLCBbXSwKKwkJIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwkMyld
LCBbMV0pbTRfcHVzaGRlZihbX200X3NldChbJDFdKV0sCisJICAgWyQzXSktXSkkMChbJDFdLCBt
NF9zaGlmdDIoJEApKV0pXSkKKworbTRfZGVmaW5lKFtfbTRfc2V0X2FkZF9hbGxfY2hlY2tdLAor
W200X2lmKFskI10sIFsyXSwgW10sCisgICAgICAgW200X3NldF9hZGQoWyQxXSwgWyQzXSkkMChb
JDFdLCBtNF9zaGlmdDIoJEApKV0pXSkKKworIyBtNF9zZXRfY29udGFpbnMoU0VULCBWQUxVRSwg
W0lGLVBSRVNFTlRdLCBbSUYtQUJTRU5UXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZCBJRi1QUkVTRU5UIGlmIFNFVCBj
b250YWlucyBWQUxVRSwgb3RoZXJ3aXNlIGV4cGFuZCBJRi1BQlNFTlQuCisjIFRoaXMgaXMgYWx3
YXlzIE8oMSkuCittNF9kZWZpbmUoW200X3NldF9jb250YWluc10sCitbbTRfaWZkZWYoW19tNF9z
ZXRfY2xlYW51cCgkMSldLAorCSAgW200X2lmKG00X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwK
KwkJICAgIFttNF9pbmRpcihbX200X3NldChbJDFdLCQyKV0pXSwgWzBdKSwgWzFdLCBbJDNdLCBb
JDRdKV0sCisJICBbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLCBbJDNdLCBbJDRdKV0pXSkK
KworIyBtNF9zZXRfY29udGVudHMoU0VULCBbU0VQXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIEV4cGFuZCB0byBhIHNpbmdsZSBzdHJpbmcgY29udGFpbmluZyBhbGwgdGhlIGVs
ZW1lbnRzIGluIFNFVCwKKyMgc2VwYXJhdGVkIGJ5IFNFUCwgd2l0aG91dCBtb2RpZnlpbmcgU0VU
LiAgTm8gcHJvdmlzaW9uIGlzIG1hZGUgZm9yCisjIGRpc2FtYmlndWF0aW5nIHNldCBlbGVtZW50
cyB0aGF0IGNvbnRhaW4gbm9uLWVtcHR5IFNFUCBhcyBhCisjIHN1Yi1zdHJpbmcsIG9yIGZvciBy
ZWNvZ25pemluZyBhIHNldCB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIGVtcHR5CisjIHN0cmluZy4g
IE9yZGVyIG9mIHRoZSBvdXRwdXQgaXMgbm90IGd1YXJhbnRlZWQuICBJZiBhbnkgZWxlbWVudHMK
KyMgaGF2ZSBiZWVuIHByZXZpb3VzbHkgcmVtb3ZlZCBmcm9tIHRoZSBzZXQsIHRoaXMgYWN0aW9u
IHdpbGwgcHJ1bmUKKyMgdGhlIHVudXNlZCBtZW1vcnkuICBUaGlzIGlzIE8obikgaW4gdGhlIHNp
emUgb2YgdGhlIHNldCBiZWZvcmUKKyMgcHJ1bmluZy4KKyMKKyMgVXNlIF9tNF9wb3BkZWYgZm9y
IHNwZWVkLiAgVGhlIGV4aXN0ZW5jZSBvZiBfbTRfc2V0X2NsZWFudXAoJDEpCisjIGRldGVybWlu
ZXMgd2hpY2ggdmVyc2lvbiBvZiBfMSBoZWxwZXIgd2UgdXNlLgorbTRfZGVmaW5lKFttNF9zZXRf
Y29udGVudHNdLAorW200X3NldF9tYXBfc2VwKFskMV0sIFtdLCBbXSwgW1skMl1dKV0pCisKKyMg
X200X3NldF9jb250ZW50c18xKFNFVCkKKyMgX200X3NldF9jb250ZW50c18xYyhTRVQpCisjIF9t
NF9zZXRfY29udGVudHNfMihTRVQsIFtQUkVdLCBbUE9TVF0sIFtTRVBdKQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIHRvIGEgbGlzdCBv
ZiBxdW90ZWQgZWxlbWVudHMgY3VycmVudGx5IGluIHRoZSBzZXQsIGVhY2gKKyMgc3Vycm91bmRl
ZCBieSBQUkUgYW5kIFBPU1QsIGFuZCBtb3ZpbmcgU0VQIGluIGZyb250IG9mIFBSRSBvbgorIyBy
ZWN1cnNpb24uICBUbyBhdm9pZCBuZXN0aW5nIGxpbWl0IHJlc3RyaWN0aW9ucywgdGhlIGFsZ29y
aXRobSBtdXN0CisjIGJlIGJyb2tlbiBpbnRvIHR3byBwYXJ0czsgXzEgZGVzdHJ1Y3RpdmVseSBj
b3BpZXMgdGhlIHN0YWNrIGluCisjIHJldmVyc2UgaW50byBfbTRfc2V0XygkMSksIHByb2R1Y2lu
ZyBubyBvdXRwdXQ7IHRoZW4gXzIKKyMgZGVzdHJ1Y3RpdmVseSBjb3BpZXMgX200X3NldF8oJDEp
IGJhY2sgaW50byB0aGUgc3RhY2sgaW4gcmV2ZXJzZS4KKyMgSWYgbm8gZWxlbWVudHMgd2VyZSBk
ZWxldGVkLCB0aGVuIHRoaXMgdmlzaXRzIHRoZSBzZXQgaW4gdGhlIG9yZGVyCisjIHRoYXQgZWxl
bWVudHMgd2VyZSBpbnNlcnRlZC4gIEJlaGF2aW9yIGlzIHVuZGVmaW5lZCBpZiBQUkUvUE9TVC9T
RVAKKyMgdHJpZXMgdG8gcmVjdXJzaXZlbHkgbGlzdCBvciBtb2RpZnkgU0VUIGluIGFueSB3YXkg
b3RoZXIgdGhhbgorIyBjYWxsaW5nIG00X3NldF9yZW1vdmUgb24gdGhlIGN1cnJlbnQgZWxlbWVu
dC4gIFVzZSBfMSBpZiBhbGwgZW50cmllcworIyBpbiB0aGUgc3RhY2sgYXJlIGd1YXJhbnRlZWQg
dG8gYmUgaW4gdGhlIHNldCwgYW5kIF8xYyB0byBwcnVuZQorIyByZW1vdmVkIGVudHJpZXMuICBV
c2VzIF9tNF9kZWZuIGFuZCBfbTRfcG9wZGVmIGZvciBzcGVlZC4KK200X2RlZmluZShbX200X3Nl
dF9jb250ZW50c18xXSwKK1tfbTRfc3RhY2tfcmV2ZXJzZShbX200X3NldChbJDFdKV0sIFtfbTRf
c2V0XygkMSldKV0pCisKK200X2RlZmluZShbX200X3NldF9jb250ZW50c18xY10sCitbbTRfaWZk
ZWYoW19tNF9zZXQoWyQxXSldLAorCSAgW200X3NldF9jb250YWlucyhbJDFdLCBfbTRfZGVmbihb
X200X3NldChbJDFdKV0pLAorCQkgICBbbTRfcHVzaGRlZihbX200X3NldF8oJDEpXSwgX200X2Rl
Zm4oW19tNF9zZXQoWyQxXSldKSldLAorCQkgICBbX200X3BvcGRlZihbX200X3NldChbJDFdLF1f
bTRfZGVmbigKKyAgICAgIFtfbTRfc2V0KFskMV0pXSlbKV0pXSlfbTRfcG9wZGVmKFtfbTRfc2V0
KFskMV0pXSkkMChbJDFdKV0sCisJICBbX200X3BvcGRlZihbX200X3NldF9jbGVhbnVwKCQxKV0p
XSldKQorCittNF9kZWZpbmUoW19tNF9zZXRfY29udGVudHNfMl0sCitbX200X3N0YWNrX3JldmVy
c2UoW19tNF9zZXRfKCQxKV0sIFtfbTRfc2V0KFskMV0pXSwKKyAgWyQyW11fbTRfZGVmbihbX200
X3NldF8oJDEpXSkkM10sIFskNFtdXSldKQorCisjIG00X3NldF9kZWxldGUoU0VUKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0KKyMgRGVsZXRlIGFsbCBlbGVtZW50cyBpbiBTRVQsIGFuZCByZWNsYWlt
IGFueSBtZW1vcnkgb2NjdXBpZWQgYnkgdGhlCisjIHNldC4gIFRoaXMgaXMgTyhuKSBpbiB0aGUg
c2V0IHNpemUuCisjCisjIFVzZSBfbTRfZGVmbiBhbmQgX200X3BvcGRlZiBmb3Igc3BlZWQuCitt
NF9kZWZpbmUoW200X3NldF9kZWxldGVdLAorW200X2lmZGVmKFtfbTRfc2V0KFskMV0pXSwKKwkg
IFtfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlbKV0s
CisJCSAgICAgIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdKV0sCisJICBbbTRfaWZkZWYoW19tNF9z
ZXRfY2xlYW51cCgkMSldLAorCQkgICAgW19tNF9wb3BkZWYoW19tNF9zZXRfY2xlYW51cCgkMSld
KV0pbTRfaWZkZWYoCisJCSAgICBbX200X3NldF9zaXplKCQxKV0sCisJCSAgICBbX200X3BvcGRl
ZihbX200X3NldF9zaXplKCQxKV0pXSldKV0pCisKKyMgbTRfc2V0X2RpZmZlcmVuY2UoU0VUMSwg
U0VUMikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBhIExJU1Qg
b2YgcXVvdGVkIGVsZW1lbnRzIHRoYXQgb2NjdXIgaW4gU0VUMSBidXQgbm90IFNFVDIuCisjIE91
dHB1dCBhIGNvbW1hIHByaW9yIHRvIGFueSBlbGVtZW50cywgdG8gZGlzdGluZ3Vpc2ggdGhlIGVt
cHR5CisjIHN0cmluZyBmcm9tIG5vIGVsZW1lbnRzLiAgVGhpcyBjYW4gYmUgZGlyZWN0bHkgdXNl
ZCBhcyBhIHNlcmllcyBvZgorIyBhcmd1bWVudHMsIHN1Y2ggYXMgZm9yIG00X2pvaW4sIG9yIHdy
YXBwZWQgaW5zaWRlIHF1b3RlcyBmb3IgdXNlIGluCisjIG00X2ZvcmVhY2guICBPcmRlciBvZiB0
aGUgb3V0cHV0IGlzIG5vdCBndWFyYW50ZWVkLgorIworIyBTaG9ydC1jaXJjdWl0IHRoZSBpZGVt
cG90ZW5jZSByZWxhdGlvbi4KK200X2RlZmluZShbbTRfc2V0X2RpZmZlcmVuY2VdLAorW200X2lm
KFskMV0sIFskMl0sIFtdLCBbbTRfc2V0X21hcF9zZXAoWyQxXSwgW18kMChbJDJdLF0sIFspXSld
KV0pCisKK200X2RlZmluZShbX200X3NldF9kaWZmZXJlbmNlXSwKK1ttNF9zZXRfY29udGFpbnMo
WyQxXSwgWyQyXSwgW10sIFssWyQyXV0pXSkKKworIyBtNF9zZXRfZHVtcChTRVQsIFtTRVBdKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeHBhbmQgdG8gYSBzaW5nbGUgc3RyaW5nIGNv
bnRhaW5pbmcgYWxsIHRoZSBlbGVtZW50cyBpbiBTRVQsCisjIHNlcGFyYXRlZCBieSBTRVAsIHRo
ZW4gZGVsZXRlIFNFVC4gIEluIGdlbmVyYWwsIGlmIHlvdSBvbmx5IG5lZWQgdG8KKyMgbGlzdCB0
aGUgY29udGVudHMgb25jZSwgdGhpcyBpcyBmYXN0ZXIgdGhhbiBtNF9zZXRfY29udGVudHMuICBO
bworIyBwcm92aXNpb24gaXMgbWFkZSBmb3IgZGlzYW1iaWd1YXRpbmcgc2V0IGVsZW1lbnRzIHRo
YXQgY29udGFpbgorIyBub24tZW1wdHkgU0VQIGFzIGEgc3ViLXN0cmluZy4gIE9yZGVyIG9mIHRo
ZSBvdXRwdXQgaXMgbm90CisjIGd1YXJhbnRlZWQuICBUaGlzIGlzIE8obikgaW4gdGhlIHNpemUg
b2YgdGhlIHNldCBiZWZvcmUgcHJ1bmluZy4KKyMKKyMgVXNlIF9tNF9wb3BkZWYgZm9yIHNwZWVk
LiAgVXNlIGV4aXN0ZW5jZSBvZiBfbTRfc2V0X2NsZWFudXAoJDEpIHRvCisjIGRlY2lkZSBpZiBt
b3JlIGV4cGVuc2l2ZSByZWN1cnNpb24gaXMgbmVlZGVkLgorbTRfZGVmaW5lKFttNF9zZXRfZHVt
cF0sCitbbTRfaWZkZWYoW19tNF9zZXRfc2l6ZSgkMSldLAorCSAgW19tNF9wb3BkZWYoW19tNF9z
ZXRfc2l6ZSgkMSldKV0pbTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLAorICAgIFtfJDBf
Y2hlY2tdLCBbXyQwXSkoWyQxXSwgW10sIFskMl0pXSkKKworIyBfbTRfc2V0X2R1bXAoU0VULCBb
U0VQXSwgW1BSRVBdKQorIyBfbTRfc2V0X2R1bXBfY2hlY2soU0VULCBbU0VQXSwgW1BSRVBdKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmludCBTRVAgYW5k
IHRoZSBjdXJyZW50IGVsZW1lbnQsIHRoZW4gZGVsZXRlIHRoZSBlbGVtZW50IGFuZAorIyByZWN1
cnNlIHdpdGggZW1wdHkgU0VQIGNoYW5nZWQgdG8gUFJFUC4gIFRoZSBjaGVjayB2YXJpYW50IGNo
ZWNrcworIyB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBiZWVuIHByZXZpb3VzbHkgcmVtb3ZlZC4g
IFVzZSBfbTRfZGVmbiBhbmQKKyMgX200X3BvcGRlZiBmb3Igc3BlZWQuCittNF9kZWZpbmUoW19t
NF9zZXRfZHVtcF0sCitbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAorCSAgW1skMl1fbTRfZGVm
bihbX200X3NldChbJDFdKV0pX200X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbigKKwkJ
W19tNF9zZXQoWyQxXSldKVspXSwgW19tNF9zZXQoWyQxXSldKSQwKFskMV0sIFskMiQzXSldKV0p
CisKK200X2RlZmluZShbX200X3NldF9kdW1wX2NoZWNrXSwKK1ttNF9pZmRlZihbX200X3NldChb
JDFdKV0sCisJICBbbTRfc2V0X2NvbnRhaW5zKFskMV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0p
XSksCisJCQkgICBbWyQyXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSldKV9tNF9wb3BkZWYoCisg
ICAgW19tNF9zZXQoWyQxXSxdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKVspXSwKKyAgICBbX200
X3NldChbJDFdKV0pJDAoWyQxXSwgWyQyJDNdKV0sCisJICBbX200X3BvcGRlZihbX200X3NldF9j
bGVhbnVwKCQxKV0pXSldKQorCisjIG00X3NldF9lbXB0eShTRVQsIFtJRi1FTVBUWV0sIFtJRi1F
TEVNRU5UU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIEV4cGFuZCBJRi1FTVBUWSBpZiBTRVQgaGFzIG5vIGVsZW1lbnRzLCBvdGhlcndpc2UgSUYt
RUxFTUVOVFMuCittNF9kZWZpbmUoW200X3NldF9lbXB0eV0sCitbbTRfaWZkZWYoW19tNF9zZXRf
c2l6ZSgkMSldLAorCSAgW200X2lmKG00X2luZGlyKFtfbTRfc2V0X3NpemUoJDEpXSksIFswXSwg
WyQyXSwgWyQzXSldLCBbJDJdKV0pCisKKyMgbTRfc2V0X2ZvcmVhY2goU0VULCBWQVIsIEFDVElP
TikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9yIGVhY2ggZWxlbWVu
dCBvZiBTRVQsIGRlZmluZSBWQVIgdG8gdGhlIGVsZW1lbnQgYW5kIGV4cGFuZAorIyBBQ1RJT04u
ICBBQ1RJT04gc2hvdWxkIG5vdCByZWN1cnNpdmVseSBsaXN0IFNFVCdzIGNvbnRlbnRzLCBhZGQK
KyMgZWxlbWVudHMgdG8gU0VULCBub3IgZGVsZXRlIGFueSBlbGVtZW50IGZyb20gU0VUIGV4Y2Vw
dCB0aGUgb25lCisjIGN1cnJlbnRseSBpbiBWQVIuICBUaGUgb3JkZXIgdGhhdCB0aGUgZWxlbWVu
dHMgYXJlIHZpc2l0ZWQgaW4gaXMgbm90CisjIGd1YXJhbnRlZWQuICBUaGlzIGlzIGZhc3RlciB0
aGFuIHRoZSBjb3JyZXNwb25kaW5nIG00X2ZvcmVhY2goW1ZBUl0sCisjICAgbTRfaW5kaXIoW200
X2RxdW90ZV1tNF9zZXRfbGlzdGMoW1NFVF0pKSwgW0FDVElPTl0pCittNF9kZWZpbmUoW200X3Nl
dF9mb3JlYWNoXSwKK1ttNF9wdXNoZGVmKFskMl0pbTRfc2V0X21hcF9zZXAoWyQxXSwKK1ttNF9k
ZWZpbmUoWyQyXSxdLCBbKSQzXSltNF9wb3BkZWYoWyQyXSldKQorCisjIG00X3NldF9pbnRlcnNl
Y3Rpb24oU0VUMSwgU0VUMikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQ
cm9kdWNlIGEgTElTVCBvZiBxdW90ZWQgZWxlbWVudHMgdGhhdCBvY2N1ciBpbiBib3RoIFNFVDEg
b3IgU0VUMi4KKyMgT3V0cHV0IGEgY29tbWEgcHJpb3IgdG8gYW55IGVsZW1lbnRzLCB0byBkaXN0
aW5ndWlzaCB0aGUgZW1wdHkKKyMgc3RyaW5nIGZyb20gbm8gZWxlbWVudHMuICBUaGlzIGNhbiBi
ZSBkaXJlY3RseSB1c2VkIGFzIGEgc2VyaWVzIG9mCisjIGFyZ3VtZW50cywgc3VjaCBhcyBmb3Ig
bTRfam9pbiwgb3Igd3JhcHBlZCBpbnNpZGUgcXVvdGVzIGZvciB1c2UgaW4KKyMgbTRfZm9yZWFj
aC4gIE9yZGVyIG9mIHRoZSBvdXRwdXQgaXMgbm90IGd1YXJhbnRlZWQuCisjCisjIEl0ZXJhdGUg
b3ZlciB0aGUgc21hbGxlciBzZXQsIGFuZCBzaG9ydC1jaXJjdWl0IHRoZSBpZGVtcG90ZW5jZQor
IyByZWxhdGlvbi4KK200X2RlZmluZShbbTRfc2V0X2ludGVyc2VjdGlvbl0sCitbbTRfaWYoWyQx
XSwgWyQyXSwgW200X3NldF9saXN0YyhbJDFdKV0sCisgICAgICAgbTRfZXZhbChtNF9zZXRfc2l6
ZShbJDJdKSA8IG00X3NldF9zaXplKFskMV0pKSwgWzFdLCBbJDAoWyQyXSwgWyQxXSldLAorICAg
ICAgIFttNF9zZXRfbWFwX3NlcChbJDFdLCBbXyQwKFskMl0sXSwgWyldKV0pXSkKKworbTRfZGVm
aW5lKFtfbTRfc2V0X2ludGVyc2VjdGlvbl0sCitbbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0s
IFssWyQyXV0pXSkKKworIyBtNF9zZXRfbGlzdChTRVQpCisjIG00X3NldF9saXN0YyhTRVQpCisj
IC0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2R1Y2UgYSBMSVNUIG9mIHF1b3RlZCBlbGVtZW50cyBv
ZiBTRVQuICBUaGlzIGNhbiBiZSBkaXJlY3RseSB1c2VkCisjIGFzIGEgc2VyaWVzIG9mIGFyZ3Vt
ZW50cywgc3VjaCBhcyBmb3IgbTRfam9pbiBvciBtNF9zZXRfYWRkX2FsbCwgb3IKKyMgd3JhcHBl
ZCBpbnNpZGUgcXVvdGVzIGZvciB1c2UgaW4gbTRfZm9yZWFjaCBvciBtNF9tYXAuICBXaXRoCisj
IG00X3NldF9saXN0LCB0aGVyZSBpcyBubyB3YXkgdG8gZGlzdGluZ3Vpc2ggYW4gZW1wdHkgc2V0
IGZyb20gYSBzZXQKKyMgY29udGFpbmluZyBvbmx5IHRoZSBlbXB0eSBzdHJpbmc7IHdpdGggbTRf
c2V0X2xpc3RjLCBhIGxlYWRpbmcgY29tbWEKKyMgaXMgb3V0cHV0IGlmIHRoZXJlIGFyZSBhbnkg
ZWxlbWVudHMuCittNF9kZWZpbmUoW200X3NldF9saXN0XSwKK1ttNF9zZXRfbWFwX3NlcChbJDFd
LCBbXSwgW10sIFssXSldKQorCittNF9kZWZpbmUoW200X3NldF9saXN0Y10sCitbbTRfc2V0X21h
cF9zZXAoWyQxXSwgWyxdKV0pCisKKyMgbTRfc2V0X21hcChTRVQsIEFDVElPTikKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9yIGVhY2ggZWxlbWVudCBvZiBTRVQsIGV4cGFuZCBBQ1RJ
T04gd2l0aCBhIHNpbmdsZSBhcmd1bWVudCBvZiB0aGUKKyMgY3VycmVudCBlbGVtZW50LiAgQUNU
SU9OIHNob3VsZCBub3QgcmVjdXJzaXZlbHkgbGlzdCBTRVQncyBjb250ZW50cywKKyMgYWRkIGVs
ZW1lbnRzIHRvIFNFVCwgbm9yIGRlbGV0ZSBhbnkgZWxlbWVudCBmcm9tIFNFVCBleGNlcHQgdGhl
IG9uZQorIyBwYXNzZWQgYXMgYW4gYXJndW1lbnQuICBUaGUgb3JkZXIgdGhhdCB0aGUgZWxlbWVu
dHMgYXJlIHZpc2l0ZWQgaW4KKyMgaXMgbm90IGd1YXJhbnRlZWQuICBUaGlzIGlzIGZhc3RlciB0
aGFuIGVpdGhlciBvZiB0aGUgY29ycmVzcG9uZGluZworIyAgIG00X21hcF9hcmdzKFtBQ1RJT05d
bTRfc2V0X2xpc3RjKFtTRVRdKSkKKyMgICBtNF9zZXRfZm9yZWFjaChbU0VUXSwgW1ZBUl0sIFtB
Q1RJT04obTRfZGVmbihbVkFSXSkpXSkKK200X2RlZmluZShbbTRfc2V0X21hcF0sCitbbTRfc2V0
X21hcF9zZXAoWyQxXSwgWyQyKF0sIFspXSldKQorCisjIG00X3NldF9tYXBfc2VwKFNFVCwgW1BS
RV0sIFtQT1NUXSwgW1NFUF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIEZvciBlYWNoIGVsZW1lbnQgb2YgU0VULCBleHBhbmQgUFJFW3ZhbHVlXVBPU1Rb
XSwgYW5kIGV4cGFuZCBTRVAKKyMgYmV0d2VlbiBlbGVtZW50cy4KK200X2RlZmluZShbbTRfc2V0
X21hcF9zZXBdLAorW200X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwgW19tNF9zZXRfY29u
dGVudHNfMWNdLAorCSAgW19tNF9zZXRfY29udGVudHNfMV0pKFskMV0pX200X3NldF9jb250ZW50
c18yKCRAKV0pCisKKyMgbTRfc2V0X3JlbW92ZShTRVQsIFZBTFVFLCBbSUYtUFJFU0VOVF0sIFtJ
Ri1BQlNFTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIElmIFZBTFVFIGlzIGFuIGVsZW1lbnQgb2YgU0VULCBkZWxldGUgaXQgYW5k
IGV4cGFuZCBJRi1QUkVTRU5ULgorIyBPdGhlcndpc2UgZXhwYW5kIElGLUFCU0VOVC4gIERlbGV0
aW5nIGEgc2luZ2xlIHZhbHVlIGlzIE8oMSksCisjIGFsdGhvdWdoIGl0IGxlYXZlcyBtZW1vcnkg
b2NjdXBpZWQgdW50aWwgdGhlIG5leHQgTyhuKSB0cmF2ZXJzYWwgb2YKKyMgdGhlIHNldCB3aGlj
aCB3aWxsIGNvbXBhY3QgdGhlIHNldC4KKyMKKyMgT3B0aW1pemUgaWYgdGhlIGVsZW1lbnQgYmVp
bmcgcmVtb3ZlZCBpcyB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCwKKyMgc2luY2UgZGVmaW5pbmcg
X200X3NldF9jbGVhbnVwKCQxKSBzbG93cyBkb3duIHNvIG1hbnkgb3RoZXIgbWFjcm9zLgorIyBJ
biBwYXJ0aWN1bGFyLCB0aGlzIHBsYXlzIHdlbGwgd2l0aCBtNF9zZXRfZm9yZWFjaCBhbmQgbTRf
c2V0X21hcC4KK200X2RlZmluZShbbTRfc2V0X3JlbW92ZV0sCitbbTRfc2V0X2NvbnRhaW5zKFsk
MV0sIFskMl0sIFtfbTRfc2V0X3NpemUoWyQxXSwKKyAgICBbbTRfZGVjcl0pbTRfaWYoX200X2Rl
Zm4oW19tNF9zZXQoWyQxXSldKSwgWyQyXSwKKwkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0KFsk
MV0sJDIpXSwgW19tNF9zZXQoWyQxXSldKV0sCisJCSAgICBbbTRfZGVmaW5lKFtfbTRfc2V0X2Ns
ZWFudXAoJDEpXSltNF9kZWZpbmUoCisJCSAgICAgIFtfbTRfc2V0KFskMV0sJDIpXSwgWzBdKV0p
JDNdLCBbJDRdKV0pCisKKyMgbTRfc2V0X3NpemUoU0VUKQorIyAtLS0tLS0tLS0tLS0tLS0tCisj
IEV4cGFuZCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGN1cnJlbnRseSBpbiBTRVQuICBUaGlz
IG9wZXJhdGlvbgorIyBpcyBPKDEpLCBhbmQgdGh1cyBtb3JlIGVmZmljaWVudCB0aGFuIG00X2Nv
dW50KG00X3NldF9saXN0KFtTRVRdKSkuCittNF9kZWZpbmUoW200X3NldF9zaXplXSwKK1ttNF9p
ZmRlZihbX200X3NldF9zaXplKCQxKV0sIFttNF9pbmRpcihbX200X3NldF9zaXplKCQxKV0pXSwg
WzBdKV0pCisKKyMgX200X3NldF9zaXplKFNFVCwgQUNUSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIEFDVElPTiBtdXN0IGJlIGVpdGhlciBtNF9pbmNyIG9yIG00X2RlY3IsIGFu
ZCB0aGUgc2l6ZSBvZiBTRVQgaXMKKyMgY2hhbmdlZCBhY2NvcmRpbmdseS4gIElmIHRoZSBzZXQg
aXMgZW1wdHksIEFDVElPTiBtdXN0IG5vdCBiZQorIyBtNF9kZWNyLgorbTRfZGVmaW5lKFtfbTRf
c2V0X3NpemVdLAorW200X2RlZmluZShbX200X3NldF9zaXplKCQxKV0sCisJICAgbTRfaWZkZWYo
W19tNF9zZXRfc2l6ZSgkMSldLCBbJDIobTRfaW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKSldLAor
CQkgICAgWzFdKSldKQorCisjIG00X3NldF91bmlvbihTRVQxLCBTRVQyKQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBhIExJU1Qgb2YgZG91YmxlIHF1b3RlZCBlbGVtZW50
cyB0aGF0IG9jY3VyIGluIGVpdGhlciBTRVQxCisjIG9yIFNFVDIsIHdpdGhvdXQgZHVwbGljYXRl
cy4gIE91dHB1dCBhIGNvbW1hIHByaW9yIHRvIGFueSBlbGVtZW50cywKKyMgdG8gZGlzdGluZ3Vp
c2ggdGhlIGVtcHR5IHN0cmluZyBmcm9tIG5vIGVsZW1lbnRzLiAgVGhpcyBjYW4gYmUKKyMgZGly
ZWN0bHkgdXNlZCBhcyBhIHNlcmllcyBvZiBhcmd1bWVudHMsIHN1Y2ggYXMgZm9yIG00X2pvaW4s
IG9yCisjIHdyYXBwZWQgaW5zaWRlIHF1b3RlcyBmb3IgdXNlIGluIG00X2ZvcmVhY2guICBPcmRl
ciBvZiB0aGUgb3V0cHV0IGlzCisjIG5vdCBndWFyYW50ZWVkLgorIworIyBXZSBjYW4gcmVseSBv
biB0aGUgZmFjdCB0aGF0IG00X3NldF9saXN0YyBwcnVuZXMgU0VUMSwgc28gd2UgZG9uJ3QKKyMg
bmVlZCB0byBjaGVjayBfbTRfc2V0KFskMV0sZWxlbWVudCkgZm9yIDAuICBTaG9ydC1jaXJjdWl0
IHRoZQorIyBpZGVtcG90ZW5jZSByZWxhdGlvbi4KK200X2RlZmluZShbbTRfc2V0X3VuaW9uXSwK
K1ttNF9zZXRfbGlzdGMoWyQxXSltNF9pZihbJDFdLCBbJDJdLCBbXSwKKyAgW200X3NldF9tYXBf
c2VwKFskMl0sIFtfJDAoWyQxXSxdLCBbKV0pXSldKQorCittNF9kZWZpbmUoW19tNF9zZXRfdW5p
b25dLAorW200X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgW10sIFssWyQyXV0pXSkKKworCisj
IyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyAxNi4gRmlsZSBoYW5kbGluZy4gICMjCisjIyAt
LS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBJdCBpcyBhIHJlYWwgcGl0eSB0aGF0IE00IGNv
bWVzIHdpdGggbm8gbWFjcm9zIHRvIGJpbmQgYSBkaXZlcnNpb24KKyMgdG8gYSBmaWxlLiAgU28g
d2UgaGF2ZSB0byBkZWFsIHdpdGhvdXQsIHdoaWNoIG1ha2VzIHVzIGEgbG90IG1vcmUKKyMgZnJh
Z2lsZSB0aGFuIHdlIHNob3VsZC4KKworCisjIG00X2ZpbGVfYXBwZW5kKEZJTEUtTkFNRSwgQ09O
VEVOVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtt
NF9maWxlX2FwcGVuZF0sCitbbTRfc3lzY21kKFtjYXQgPj4kMSA8PF9tNGVvZgorJDIKK19tNGVv
ZgorXSkKK200X2lmKG00X3N5c3ZhbCwgWzBdLCBbXSwKKyAgICAgIFttNF9mYXRhbChbJDA6IGNh
bm5vdCB3cml0ZTogJDFdKV0pXSkKKworCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj
IworIyMgMTcuIFNldHRpbmcgTTRzdWdhciB1cC4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKworIyBfbTRfZGl2ZXJ0X2RpdmVyc2lvbiBzaG91bGQgYmUgZGVmaW5lZC4KK200
X2RpdmVydF9wdXNoKFtLSUxMXSkKKworIyBtNF9pbml0CisjIC0tLS0tLS0KKyMgSW5pdGlhbGl6
ZSB0aGUgbTRzdWdhciBsYW5ndWFnZS4KK200X2RlZmluZShbbTRfaW5pdF0sCitbIyBBbGwgdGhl
IE00c3VnYXIgbWFjcm9zIHN0YXJ0IHdpdGggYG00XycsIGV4Y2VwdCBgZG5sJyBrZXB0IGFzIGlz
CisjIGZvciBzYWtlIG9mIHNpbXBsaWNpdHkuCittNF9wYXR0ZXJuX2ZvcmJpZChbXl8/bTRfXSkK
K200X3BhdHRlcm5fZm9yYmlkKFteZG5sJF0pCisKKyMgSWYgX19tNF92ZXJzaW9uX18gaXMgZGVm
aW5lZCwgd2UgYXNzdW1lIHRoYXQgd2UgYXJlIGJlaW5nIHJ1biBieSBNNAorIyAxLjYgb3IgbmV3
ZXIsIHRodXMgJEAgcmVjdXJzaW9uIGlzIGxpbmVhciwgYW5kIGRlYnVnbW9kZSgrZG8pCisjIGlz
IGF2YWlsYWJsZSBmb3IgZmFzdGVyIGNoZWNrcyBvZiBkZXJlZmVyZW5jaW5nIHVuZGVmaW5lZCBt
YWNyb3MKKyMgYW5kIGZvcmNpbmcgZHVtcGRlZiB0byBwcmludCB0byBzdGRlcnIgcmVnYXJkbGVz
cyBvZiBkZWJ1Z2ZpbGUuCisjIEJ1dCBpZiBpdCBpcyBtaXNzaW5nLCB3ZSBhc3N1bWUgd2UgYXJl
IGJlaW5nIHJ1biBieSBNNCAxLjQueCwgdGhhdAorIyAkQCByZWN1cnNpb24gaXMgcXVhZHJhdGlj
LCBhbmQgdGhhdCB3ZSBuZWVkIGZvcmVhY2gtYmFzZWQKKyMgcmVwbGFjZW1lbnQgbWFjcm9zLiAg
QWxzbywgbTQgcHJpb3IgdG8gMS40LjggbG9zZXMgdHJhY2sgb2YgbG9jYXRpb24KKyMgZHVyaW5n
IG00d3JhcCB0ZXh0OyBfX2xpbmVfXyBzaG91bGQgbmV2ZXIgYmUgMC4KKyMKKyMgVXNlIHRoZSBy
YXcgYnVpbHRpbiB0byBhdm9pZCB0cmlwcGluZyB1cCBpbmNsdWRlIHRyYWNpbmcuCisjIE1lYW53
aGlsZSwgYXZvaWQgbTRfY29weSwgc2luY2UgaXQgdGVtcG9yYXJpbHkgdW5kZWZpbmVzIG00X2Rl
Zm4uCittNF9pZmRlZihbX19tNF92ZXJzaW9uX19dLAorW200X2RlYnVnbW9kZShbK2RvXSkKK200
X2RlZmluZShbbTRfZGVmbl0sIF9tNF9kZWZuKFtfbTRfZGVmbl0pKQorbTRfZGVmaW5lKFttNF9k
dW1wZGVmXSwgX200X2RlZm4oW19tNF9kdW1wZGVmXSkpCittNF9kZWZpbmUoW200X3BvcGRlZl0s
IF9tNF9kZWZuKFtfbTRfcG9wZGVmXSkpCittNF9kZWZpbmUoW200X3VuZGVmaW5lXSwgX200X2Rl
Zm4oW19tNF91bmRlZmluZV0pKV0sCitbbTRfYnVpbHRpbihbaW5jbHVkZV0sIFttNHN1Z2FyL2Zv
cmVhY2gubTRdKQorbTRfd3JhcF9saWZvKFttNF9pZihfX2xpbmVfXywgWzBdLCBbbTRfcHVzaGRl
ZihbbTRfbG9jYXRpb25dLAorXV1tNF9kcXVvdGUobTRfZHF1b3RlKG00X2RxdW90ZShfX2ZpbGVf
XzpfX2xpbmVfXykpKVtbKV0pXSldKQorCisjIFJld3JpdGUgdGhlIGZpcnN0IGVudHJ5IG9mIHRo
ZSBkaXZlcnNpb24gc3RhY2suCittNF9kaXZlcnQoW0tJTExdKQorCisjIENoZWNrIHRoZSBkaXZl
cnQgcHVzaC9wb3AgcGVyZmVjdCBiYWxhbmNlLgorIyBTb21lIHVzZXJzIGFyZSBwcm9uZSB0byBh
bHNvIHVzZSBtNF93cmFwIHRvIHJlZ2lzdGVyIGxhc3QtbWludXRlCisjIG00X2RpdmVydF90ZXh0
OyBzbyBhZnRlciBvdXIgZGl2ZXJzaW9uIGNsZWFudXBzLCB3ZSByZXN0b3JlCisjIEtJTEwgYXMg
dGhlIGJvdHRvbSBvZiB0aGUgZGl2ZXJzaW9uIHN0YWNrLgorbTRfd3JhcChbbTRfcG9wZGVmKFtf
bTRfZGl2ZXJ0X2RpdmVyc2lvbl0pbTRfaWZkZWYoCisgIFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0s
IFttNF9mYXRhbChbJDA6IHVuYmFsYW5jZWQgbTRfZGl2ZXJ0X3B1c2g6CitdbTRfZGl2ZXJ0X3N0
YWNrKV0pX200X3BvcGRlZihbX200X2RpdmVydF9zdGFja10pbTRfZGl2ZXJ0X3B1c2goW0tJTExd
KV0pCitdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvTElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL0xJQ0VOU0UKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTRhOWVkMDI0ZDM4NTk3OTM2MTgxNTJlYTU1OWExNjhiYmNiYjVlMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRf
cGFydHkvc2tlbGV0b25zL0xJQ0VOU0UKQEAgLTAsMCArMSw2NzQgQEAKKyAgICAgICAgICAgICAg
ICAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcKKworIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6Ly9mc2Yub3JnLz4KKyBFdmVyeW9uZSBpcyBwZXJt
aXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxp
Y2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCisKKyAgVGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGlzIGEgZnJlZSwgY29weWxlZnQgbGljZW5zZSBmb3IKK3NvZnR3YXJlIGFuZCBv
dGhlciBraW5kcyBvZiB3b3Jrcy4KKworICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUg
YW5kIG90aGVyIHByYWN0aWNhbCB3b3JrcyBhcmUgZGVzaWduZWQKK3RvIHRha2UgYXdheSB5b3Vy
IGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSB0aGUgd29ya3MuICBCeSBjb250cmFzdCwKK3Ro
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91
ciBmcmVlZG9tIHRvCitzaGFyZSBhbmQgY2hhbmdlIGFsbCB2ZXJzaW9ucyBvZiBhIHByb2dyYW0t
LXRvIG1ha2Ugc3VyZSBpdCByZW1haW5zIGZyZWUKK3NvZnR3YXJlIGZvciBhbGwgaXRzIHVzZXJz
LiAgV2UsIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHVzZSB0aGUKK0dOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNv
IHRvCithbnkgb3RoZXIgd29yayByZWxlYXNlZCB0aGlzIHdheSBieSBpdHMgYXV0aG9ycy4gIFlv
dSBjYW4gYXBwbHkgaXQgdG8KK3lvdXIgcHJvZ3JhbXMsIHRvby4KKworICBXaGVuIHdlIHNwZWFr
IG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90Citwcmlj
ZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJl
IHRoYXQgeW91CitoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUg
c29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCit0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVj
ZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQord2FudCBpdCwgdGhhdCB5b3Ug
Y2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdCBpbiBuZXcKK2ZyZWUg
cHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCisg
IFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gcHJldmVudCBvdGhlcnMgZnJvbSBk
ZW55aW5nIHlvdQordGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSBy
aWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCitjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgaWYg
eW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYKK3lvdSBtb2RpZnkg
aXQ6IHJlc3BvbnNpYmlsaXRpZXMgdG8gcmVzcGVjdCB0aGUgZnJlZWRvbSBvZiBvdGhlcnMuCisK
KyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3Jh
bSwgd2hldGhlcgorZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgcGFzcyBvbiB0byB0aGUg
cmVjaXBpZW50cyB0aGUgc2FtZQorZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVz
dCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKK29yIGNhbiBnZXQgdGhlIHNvdXJj
ZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5Citrbm93
IHRoZWlyIHJpZ2h0cy4KKworICBEZXZlbG9wZXJzIHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3Rl
Y3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6CisoMSkgYXNzZXJ0IGNvcHlyaWdodCBvbiB0
aGUgc29mdHdhcmUsIGFuZCAoMikgb2ZmZXIgeW91IHRoaXMgTGljZW5zZQorZ2l2aW5nIHlvdSBs
ZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KKwor
ICBGb3IgdGhlIGRldmVsb3BlcnMnIGFuZCBhdXRob3JzJyBwcm90ZWN0aW9uLCB0aGUgR1BMIGNs
ZWFybHkgZXhwbGFpbnMKK3RoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBz
b2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKK2F1dGhvcnMnIHNha2UsIHRoZSBHUEwgcmVx
dWlyZXMgdGhhdCBtb2RpZmllZCB2ZXJzaW9ucyBiZSBtYXJrZWQgYXMKK2NoYW5nZWQsIHNvIHRo
YXQgdGhlaXIgcHJvYmxlbXMgd2lsbCBub3QgYmUgYXR0cmlidXRlZCBlcnJvbmVvdXNseSB0bwor
YXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KKworICBTb21lIGRldmljZXMgYXJlIGRlc2ln
bmVkIHRvIGRlbnkgdXNlcnMgYWNjZXNzIHRvIGluc3RhbGwgb3IgcnVuCittb2RpZmllZCB2ZXJz
aW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVy
ZXIKK2NhbiBkbyBzby4gIFRoaXMgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0
aGUgYWltIG9mCitwcm90ZWN0aW5nIHVzZXJzJyBmcmVlZG9tIHRvIGNoYW5nZSB0aGUgc29mdHdh
cmUuICBUaGUgc3lzdGVtYXRpYworcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUg
YXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KK3VzZSwgd2hpY2ggaXMgcHJlY2lz
ZWx5IHdoZXJlIGl0IGlzIG1vc3QgdW5hY2NlcHRhYmxlLiAgVGhlcmVmb3JlLCB3ZQoraGF2ZSBk
ZXNpZ25lZCB0aGlzIHZlcnNpb24gb2YgdGhlIEdQTCB0byBwcm9oaWJpdCB0aGUgcHJhY3RpY2Ug
Zm9yIHRob3NlCitwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxs
eSBpbiBvdGhlciBkb21haW5zLCB3ZQorc3RhbmQgcmVhZHkgdG8gZXh0ZW5kIHRoaXMgcHJvdmlz
aW9uIHRvIHRob3NlIGRvbWFpbnMgaW4gZnV0dXJlIHZlcnNpb25zCitvZiB0aGUgR1BMLCBhcyBu
ZWVkZWQgdG8gcHJvdGVjdCB0aGUgZnJlZWRvbSBvZiB1c2Vycy4KKworICBGaW5hbGx5LCBldmVy
eSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZSBwYXRlbnRzLgor
U3RhdGVzIHNob3VsZCBub3QgYWxsb3cgcGF0ZW50cyB0byByZXN0cmljdCBkZXZlbG9wbWVudCBh
bmQgdXNlIG9mCitzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4g
dGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bworYXZvaWQgdGhlIHNwZWNpYWwgZGFuZ2VyIHRoYXQg
cGF0ZW50cyBhcHBsaWVkIHRvIGEgZnJlZSBwcm9ncmFtIGNvdWxkCittYWtlIGl0IGVmZmVjdGl2
ZWx5IHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB0aGUgR1BMIGFzc3VyZXMgdGhhdAor
cGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCisK
KyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1
dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuCisKKyAgICAgICAgICAgICAgICAgICAgICAg
VEVSTVMgQU5EIENPTkRJVElPTlMKKworICAwLiBEZWZpbml0aW9ucy4KKworICAiVGhpcyBMaWNl
bnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZS4KKworICAiQ29weXJpZ2h0IiBhbHNvIG1lYW5zIGNvcHlyaWdodC1saWtlIGxhd3MgdGhhdCBh
cHBseSB0byBvdGhlciBraW5kcyBvZgord29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNr
cy4KKworICAiVGhlIFByb2dyYW0iIHJlZmVycyB0byBhbnkgY29weXJpZ2h0YWJsZSB3b3JrIGxp
Y2Vuc2VkIHVuZGVyIHRoaXMKK0xpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBh
cyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAorInJlY2lwaWVudHMiIG1heSBiZSBpbmRpdmlkdWFs
cyBvciBvcmdhbml6YXRpb25zLgorCisgIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5
IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKK2luIGEgZmFzaGlvbiByZXF1
aXJpbmcgY29weXJpZ2h0IHBlcm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBhbgor
ZXhhY3QgY29weS4gIFRoZSByZXN1bHRpbmcgd29yayBpcyBjYWxsZWQgYSAibW9kaWZpZWQgdmVy
c2lvbiIgb2YgdGhlCitlYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxp
ZXIgd29yay4KKworICBBICJjb3ZlcmVkIHdvcmsiIG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmll
ZCBQcm9ncmFtIG9yIGEgd29yayBiYXNlZAorb24gdGhlIFByb2dyYW0uCisKKyAgVG8gInByb3Bh
Z2F0ZSIgYSB3b3JrIG1lYW5zIHRvIGRvIGFueXRoaW5nIHdpdGggaXQgdGhhdCwgd2l0aG91dAor
cGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxl
IGZvcgoraW5mcmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0
IGV4ZWN1dGluZyBpdCBvbiBhCitjb21wdXRlciBvciBtb2RpZnlpbmcgYSBwcml2YXRlIGNvcHku
ICBQcm9wYWdhdGlvbiBpbmNsdWRlcyBjb3B5aW5nLAorZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdp
dGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKK3B1YmxpYywgYW5k
IGluIHNvbWUgY291bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC4KKworICBUbyAiY29u
dmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90
aGVyCitwYXJ0aWVzIHRvIG1ha2Ugb3IgcmVjZWl2ZSBjb3BpZXMuICBNZXJlIGludGVyYWN0aW9u
IHdpdGggYSB1c2VyIHRocm91Z2gKK2EgY29tcHV0ZXIgbmV0d29yaywgd2l0aCBubyB0cmFuc2Zl
ciBvZiBhIGNvcHksIGlzIG5vdCBjb252ZXlpbmcuCisKKyAgQW4gaW50ZXJhY3RpdmUgdXNlciBp
bnRlcmZhY2UgZGlzcGxheXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMiCit0byB0aGUgZXh0
ZW50IHRoYXQgaXQgaW5jbHVkZXMgYSBjb252ZW5pZW50IGFuZCBwcm9taW5lbnRseSB2aXNpYmxl
CitmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3Rp
Y2UsIGFuZCAoMikKK3RlbGxzIHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9y
IHRoZSB3b3JrIChleGNlcHQgdG8gdGhlCitleHRlbnQgdGhhdCB3YXJyYW50aWVzIGFyZSBwcm92
aWRlZCksIHRoYXQgbGljZW5zZWVzIG1heSBjb252ZXkgdGhlCit3b3JrIHVuZGVyIHRoaXMgTGlj
ZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgordGhlIGlu
dGVyZmFjZSBwcmVzZW50cyBhIGxpc3Qgb2YgdXNlciBjb21tYW5kcyBvciBvcHRpb25zLCBzdWNo
IGFzIGEKK21lbnUsIGEgcHJvbWluZW50IGl0ZW0gaW4gdGhlIGxpc3QgbWVldHMgdGhpcyBjcml0
ZXJpb24uCisKKyAgMS4gU291cmNlIENvZGUuCisKKyAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEg
d29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKK2ZvciBtYWtpbmcgbW9k
aWZpY2F0aW9ucyB0byBpdC4gICJPYmplY3QgY29kZSIgbWVhbnMgYW55IG5vbi1zb3VyY2UKK2Zv
cm0gb2YgYSB3b3JrLgorCisgIEEgIlN0YW5kYXJkIEludGVyZmFjZSIgbWVhbnMgYW4gaW50ZXJm
YWNlIHRoYXQgZWl0aGVyIGlzIGFuIG9mZmljaWFsCitzdGFuZGFyZCBkZWZpbmVkIGJ5IGEgcmVj
b2duaXplZCBzdGFuZGFyZHMgYm9keSwgb3IsIGluIHRoZSBjYXNlIG9mCitpbnRlcmZhY2VzIHNw
ZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAor
aXMgd2lkZWx5IHVzZWQgYW1vbmcgZGV2ZWxvcGVycyB3b3JraW5nIGluIHRoYXQgbGFuZ3VhZ2Uu
CisKKyAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVk
ZSBhbnl0aGluZywgb3RoZXIKK3RoYW4gdGhlIHdvcmsgYXMgYSB3aG9sZSwgdGhhdCAoYSkgaXMg
aW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBmb3JtIG9mCitwYWNrYWdpbmcgYSBNYWpvciBDb21wb25l
bnQsIGJ1dCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGF0IE1ham9yCitDb21wb25lbnQsIGFuZCAo
Yikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKK01ham9y
IENvbXBvbmVudCwgb3IgdG8gaW1wbGVtZW50IGEgU3RhbmRhcmQgSW50ZXJmYWNlIGZvciB3aGlj
aCBhbgoraW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4gc291cmNl
IGNvZGUgZm9ybS4gIEEKKyJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5z
IGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAorKGtlcm5lbCwgd2luZG93IHN5c3RlbSwgYW5k
IHNvIG9uKSBvZiB0aGUgc3BlY2lmaWMgb3BlcmF0aW5nIHN5c3RlbQorKGlmIGFueSkgb24gd2hp
Y2ggdGhlIGV4ZWN1dGFibGUgd29yayBydW5zLCBvciBhIGNvbXBpbGVyIHVzZWQgdG8KK3Byb2R1
Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0
LgorCisgIFRoZSAiQ29ycmVzcG9uZGluZyBTb3VyY2UiIGZvciBhIHdvcmsgaW4gb2JqZWN0IGNv
ZGUgZm9ybSBtZWFucyBhbGwKK3RoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGlu
c3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKK3dvcmspIHJ1biB0aGUgb2JqZWN0IGNvZGUg
YW5kIHRvIG1vZGlmeSB0aGUgd29yaywgaW5jbHVkaW5nIHNjcmlwdHMgdG8KK2NvbnRyb2wgdGhv
c2UgYWN0aXZpdGllcy4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHdvcmsncwor
U3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBh
dmFpbGFibGUgZnJlZQorcHJvZ3JhbXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBpbiBwZXJm
b3JtaW5nIHRob3NlIGFjdGl2aXRpZXMgYnV0Cit3aGljaCBhcmUgbm90IHBhcnQgb2YgdGhlIHdv
cmsuICBGb3IgZXhhbXBsZSwgQ29ycmVzcG9uZGluZyBTb3VyY2UKK2luY2x1ZGVzIGludGVyZmFj
ZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCit0aGUg
d29yaywgYW5kIHRoZSBzb3VyY2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1p
Y2FsbHkKK2xpbmtlZCBzdWJwcm9ncmFtcyB0aGF0IHRoZSB3b3JrIGlzIHNwZWNpZmljYWxseSBk
ZXNpZ25lZCB0byByZXF1aXJlLAorc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRp
b24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKK3N1YnByb2dyYW1zIGFuZCBvdGhlciBw
YXJ0cyBvZiB0aGUgd29yay4KKworICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3Qg
aW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCitjYW4gcmVnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5
IGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIENvcnJlc3BvbmRpbmcKK1NvdXJjZS4KKworICBUaGUg
Q29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGEgd29yayBpbiBzb3VyY2UgY29kZSBmb3JtIGlzIHRo
YXQKK3NhbWUgd29yay4KKworICAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KKworICBBbGwgcmlnaHRz
IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgor
Y29weXJpZ2h0IG9uIHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVkIHRo
ZSBzdGF0ZWQKK2NvbmRpdGlvbnMgYXJlIG1ldC4gIFRoaXMgTGljZW5zZSBleHBsaWNpdGx5IGFm
ZmlybXMgeW91ciB1bmxpbWl0ZWQKK3Blcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFBy
b2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCitjb3ZlcmVkIHdvcmsgaXMgY292ZXJl
ZCBieSB0aGlzIExpY2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKK2NvbnRlbnQs
IGNvbnN0aXR1dGVzIGEgY292ZXJlZCB3b3JrLiAgVGhpcyBMaWNlbnNlIGFja25vd2xlZGdlcyB5
b3VyCityaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQg
YnkgY29weXJpZ2h0IGxhdy4KKworICBZb3UgbWF5IG1ha2UsIHJ1biBhbmQgcHJvcGFnYXRlIGNv
dmVyZWQgd29ya3MgdGhhdCB5b3UgZG8gbm90Citjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBz
byBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucworaW4gZm9yY2UuICBZb3Ug
bWF5IGNvbnZleSBjb3ZlcmVkIHdvcmtzIHRvIG90aGVycyBmb3IgdGhlIHNvbGUgcHVycG9zZQor
b2YgaGF2aW5nIHRoZW0gbWFrZSBtb2RpZmljYXRpb25zIGV4Y2x1c2l2ZWx5IGZvciB5b3UsIG9y
IHByb3ZpZGUgeW91Cit3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHBy
b3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCit0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIGlu
IGNvbnZleWluZyBhbGwgbWF0ZXJpYWwgZm9yIHdoaWNoIHlvdSBkbworbm90IGNvbnRyb2wgY29w
eXJpZ2h0LiAgVGhvc2UgdGh1cyBtYWtpbmcgb3IgcnVubmluZyB0aGUgY292ZXJlZCB3b3Jrcwor
Zm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3Vy
IGRpcmVjdGlvbgorYW5kIGNvbnRyb2wsIG9uIHRlcm1zIHRoYXQgcHJvaGliaXQgdGhlbSBmcm9t
IG1ha2luZyBhbnkgY29waWVzIG9mCit5b3VyIGNvcHlyaWdodGVkIG1hdGVyaWFsIG91dHNpZGUg
dGhlaXIgcmVsYXRpb25zaGlwIHdpdGggeW91LgorCisgIENvbnZleWluZyB1bmRlciBhbnkgb3Ro
ZXIgY2lyY3Vtc3RhbmNlcyBpcyBwZXJtaXR0ZWQgc29sZWx5IHVuZGVyCit0aGUgY29uZGl0aW9u
cyBzdGF0ZWQgYmVsb3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFsbG93ZWQ7IHNlY3Rpb24gMTAK
K21ha2VzIGl0IHVubmVjZXNzYXJ5LgorCisgIDMuIFByb3RlY3RpbmcgVXNlcnMnIExlZ2FsIFJp
Z2h0cyBGcm9tIEFudGktQ2lyY3VtdmVudGlvbiBMYXcuCisKKyAgTm8gY292ZXJlZCB3b3JrIHNo
YWxsIGJlIGRlZW1lZCBwYXJ0IG9mIGFuIGVmZmVjdGl2ZSB0ZWNobm9sb2dpY2FsCittZWFzdXJl
IHVuZGVyIGFueSBhcHBsaWNhYmxlIGxhdyBmdWxmaWxsaW5nIG9ibGlnYXRpb25zIHVuZGVyIGFy
dGljbGUKKzExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNl
bWJlciAxOTk2LCBvcgorc2ltaWxhciBsYXdzIHByb2hpYml0aW5nIG9yIHJlc3RyaWN0aW5nIGNp
cmN1bXZlbnRpb24gb2Ygc3VjaAorbWVhc3VyZXMuCisKKyAgV2hlbiB5b3UgY29udmV5IGEgY292
ZXJlZCB3b3JrLCB5b3Ugd2FpdmUgYW55IGxlZ2FsIHBvd2VyIHRvIGZvcmJpZAorY2lyY3VtdmVu
dGlvbiBvZiB0ZWNobm9sb2dpY2FsIG1lYXN1cmVzIHRvIHRoZSBleHRlbnQgc3VjaCBjaXJjdW12
ZW50aW9uCitpcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vu
c2Ugd2l0aCByZXNwZWN0IHRvCit0aGUgY292ZXJlZCB3b3JrLCBhbmQgeW91IGRpc2NsYWltIGFu
eSBpbnRlbnRpb24gdG8gbGltaXQgb3BlcmF0aW9uIG9yCittb2RpZmljYXRpb24gb2YgdGhlIHdv
cmsgYXMgYSBtZWFucyBvZiBlbmZvcmNpbmcsIGFnYWluc3QgdGhlIHdvcmsncwordXNlcnMsIHlv
dXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9u
IG9mCit0ZWNobm9sb2dpY2FsIG1lYXN1cmVzLgorCisgIDQuIENvbnZleWluZyBWZXJiYXRpbSBD
b3BpZXMuCisKKyAgWW91IG1heSBjb252ZXkgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFt
J3Mgc291cmNlIGNvZGUgYXMgeW91CityZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRl
ZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAorYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVh
Y2ggY29weSBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlOwora2VlcCBpbnRhY3QgYWxs
IG5vdGljZXMgc3RhdGluZyB0aGF0IHRoaXMgTGljZW5zZSBhbmQgYW55Citub24tcGVybWlzc2l2
ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7
CitrZWVwIGludGFjdCBhbGwgbm90aWNlcyBvZiB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7
IGFuZCBnaXZlIGFsbAorcmVjaXBpZW50cyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdp
dGggdGhlIFByb2dyYW0uCisKKyAgWW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNl
IGZvciBlYWNoIGNvcHkgdGhhdCB5b3UgY29udmV5LAorYW5kIHlvdSBtYXkgb2ZmZXIgc3VwcG9y
dCBvciB3YXJyYW50eSBwcm90ZWN0aW9uIGZvciBhIGZlZS4KKworICA1LiBDb252ZXlpbmcgTW9k
aWZpZWQgU291cmNlIFZlcnNpb25zLgorCisgIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBv
biB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KK3Byb2R1Y2UgaXQgZnJvbSB0
aGUgUHJvZ3JhbSwgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCit0ZXJtcyBv
ZiBzZWN0aW9uIDQsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29u
ZGl0aW9uczoKKworICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMg
c3RhdGluZyB0aGF0IHlvdSBtb2RpZmllZAorICAgIGl0LCBhbmQgZ2l2aW5nIGEgcmVsZXZhbnQg
ZGF0ZS4KKworICAgIGIpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3Rh
dGluZyB0aGF0IGl0IGlzCisgICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkg
Y29uZGl0aW9ucyBhZGRlZCB1bmRlciBzZWN0aW9uCisgICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQg
bW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bworICAgICJrZWVwIGludGFj
dCBhbGwgbm90aWNlcyIuCisKKyAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29y
aywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcworICAgIExpY2Vuc2UgdG8gYW55b25lIHdobyBjb21l
cyBpbnRvIHBvc3Nlc3Npb24gb2YgYSBjb3B5LiAgVGhpcworICAgIExpY2Vuc2Ugd2lsbCB0aGVy
ZWZvcmUgYXBwbHksIGFsb25nIHdpdGggYW55IGFwcGxpY2FibGUgc2VjdGlvbiA3CisgICAgYWRk
aXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0
cywKKyAgICByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBwYWNrYWdlZC4gIFRoaXMgTGljZW5z
ZSBnaXZlcyBubworICAgIHBlcm1pc3Npb24gdG8gbGljZW5zZSB0aGUgd29yayBpbiBhbnkgb3Ro
ZXIgd2F5LCBidXQgaXQgZG9lcyBub3QKKyAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBp
ZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgorCisgICAgZCkgSWYgdGhlIHdvcmsg
aGFzIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlcywgZWFjaCBtdXN0IGRpc3BsYXkKKyAgICBB
cHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50
ZXJhY3RpdmUKKyAgICBpbnRlcmZhY2VzIHRoYXQgZG8gbm90IGRpc3BsYXkgQXBwcm9wcmlhdGUg
TGVnYWwgTm90aWNlcywgeW91cgorICAgIHdvcmsgbmVlZCBub3QgbWFrZSB0aGVtIGRvIHNvLgor
CisgIEEgY29tcGlsYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsgd2l0aCBvdGhlciBzZXBhcmF0ZSBh
bmQgaW5kZXBlbmRlbnQKK3dvcmtzLCB3aGljaCBhcmUgbm90IGJ5IHRoZWlyIG5hdHVyZSBleHRl
bnNpb25zIG9mIHRoZSBjb3ZlcmVkIHdvcmssCithbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3
aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAoraW4gb3Igb24gYSB2b2x1
bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxlZCBhbgorImFn
Z3JlZ2F0ZSIgaWYgdGhlIGNvbXBpbGF0aW9uIGFuZCBpdHMgcmVzdWx0aW5nIGNvcHlyaWdodCBh
cmUgbm90Cit1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBj
b21waWxhdGlvbidzIHVzZXJzCitiZXlvbmQgd2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJt
aXQuICBJbmNsdXNpb24gb2YgYSBjb3ZlcmVkIHdvcmsKK2luIGFuIGFnZ3JlZ2F0ZSBkb2VzIG5v
dCBjYXVzZSB0aGlzIExpY2Vuc2UgdG8gYXBwbHkgdG8gdGhlIG90aGVyCitwYXJ0cyBvZiB0aGUg
YWdncmVnYXRlLgorCisgIDYuIENvbnZleWluZyBOb24tU291cmNlIEZvcm1zLgorCisgIFlvdSBt
YXkgY29udmV5IGEgY292ZXJlZCB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgdGhlIHRl
cm1zCitvZiBzZWN0aW9ucyA0IGFuZCA1LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGNvbnZleSB0
aGUKK21hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoaXMgTGljZW5zZSwKK2luIG9uZSBvZiB0aGVzZSB3YXlzOgorCisgICAgYSkgQ29udmV5
IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAor
ICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5p
ZWQgYnkgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgZml4ZWQgb24gYSBkdXJhYmxlIHBo
eXNpY2FsIG1lZGl1bQorICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hh
bmdlLgorCisgICAgYikgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4s
IGEgcGh5c2ljYWwgcHJvZHVjdAorICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRp
b24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQorICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZv
ciBhdCBsZWFzdCB0aHJlZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCisgICAgbG9uZyBhcyB5b3Ug
b2ZmZXIgc3BhcmUgcGFydHMgb3IgY3VzdG9tZXIgc3VwcG9ydCBmb3IgdGhhdCBwcm9kdWN0Cisg
ICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVp
dGhlciAoMSkgYQorICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwg
dGhlIHNvZnR3YXJlIGluIHRoZQorICAgIHByb2R1Y3QgdGhhdCBpcyBjb3ZlcmVkIGJ5IHRoaXMg
TGljZW5zZSwgb24gYSBkdXJhYmxlIHBoeXNpY2FsCisgICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVz
ZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubworICAgIG1vcmUgdGhh
biB5b3VyIHJlYXNvbmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcworICAg
IGNvbnZleWluZyBvZiBzb3VyY2UsIG9yICgyKSBhY2Nlc3MgdG8gY29weSB0aGUKKyAgICBDb3Jy
ZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgorCisg
ICAgYykgQ29udmV5IGluZGl2aWR1YWwgY29waWVzIG9mIHRoZSBvYmplY3QgY29kZSB3aXRoIGEg
Y29weSBvZiB0aGUKKyAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRp
bmcgU291cmNlLiAgVGhpcworICAgIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25seSBvY2Nhc2lv
bmFsbHkgYW5kIG5vbmNvbW1lcmNpYWxseSwgYW5kCisgICAgb25seSBpZiB5b3UgcmVjZWl2ZWQg
dGhlIG9iamVjdCBjb2RlIHdpdGggc3VjaCBhbiBvZmZlciwgaW4gYWNjb3JkCisgICAgd2l0aCBz
dWJzZWN0aW9uIDZiLgorCisgICAgZCkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBieSBvZmZlcmlu
ZyBhY2Nlc3MgZnJvbSBhIGRlc2lnbmF0ZWQKKyAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNo
YXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKKyAgICBDb3JyZXNwb25k
aW5nIFNvdXJjZSBpbiB0aGUgc2FtZSB3YXkgdGhyb3VnaCB0aGUgc2FtZSBwbGFjZSBhdCBubwor
ICAgIGZ1cnRoZXIgY2hhcmdlLiAgWW91IG5lZWQgbm90IHJlcXVpcmUgcmVjaXBpZW50cyB0byBj
b3B5IHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBj
b2RlLiAgSWYgdGhlIHBsYWNlIHRvCisgICAgY29weSB0aGUgb2JqZWN0IGNvZGUgaXMgYSBuZXR3
b3JrIHNlcnZlciwgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlCisgICAgbWF5IGJlIG9uIGEgZGlm
ZmVyZW50IHNlcnZlciAob3BlcmF0ZWQgYnkgeW91IG9yIGEgdGhpcmQgcGFydHkpCisgICAgdGhh
dCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1h
aW50YWluCisgICAgY2xlYXIgZGlyZWN0aW9ucyBuZXh0IHRvIHRoZSBvYmplY3QgY29kZSBzYXlp
bmcgd2hlcmUgdG8gZmluZCB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFJlZ2FyZGxl
c3Mgb2Ygd2hhdCBzZXJ2ZXIgaG9zdHMgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlv
dSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCisgICAgYXZhaWxhYmxlIGZv
ciBhcyBsb25nIGFzIG5lZWRlZCB0byBzYXRpc2Z5IHRoZXNlIHJlcXVpcmVtZW50cy4KKworICAg
IGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lv
biwgcHJvdmlkZWQKKyAgICB5b3UgaW5mb3JtIG90aGVyIHBlZXJzIHdoZXJlIHRoZSBvYmplY3Qg
Y29kZSBhbmQgQ29ycmVzcG9uZGluZworICAgIFNvdXJjZSBvZiB0aGUgd29yayBhcmUgYmVpbmcg
b2ZmZXJlZCB0byB0aGUgZ2VuZXJhbCBwdWJsaWMgYXQgbm8KKyAgICBjaGFyZ2UgdW5kZXIgc3Vi
c2VjdGlvbiA2ZC4KKworICBBIHNlcGFyYWJsZSBwb3J0aW9uIG9mIHRoZSBvYmplY3QgY29kZSwg
d2hvc2Ugc291cmNlIGNvZGUgaXMgZXhjbHVkZWQKK2Zyb20gdGhlIENvcnJlc3BvbmRpbmcgU291
cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCitpbmNsdWRlZCBpbiBjb252ZXlp
bmcgdGhlIG9iamVjdCBjb2RlIHdvcmsuCisKKyAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIg
KDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKK3RhbmdpYmxlIHBlcnNv
bmFsIHByb3BlcnR5IHdoaWNoIGlzIG5vcm1hbGx5IHVzZWQgZm9yIHBlcnNvbmFsLCBmYW1pbHks
CitvciBob3VzZWhvbGQgcHVycG9zZXMsIG9yICgyKSBhbnl0aGluZyBkZXNpZ25lZCBvciBzb2xk
IGZvciBpbmNvcnBvcmF0aW9uCitpbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0
aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCitkb3VidGZ1bCBjYXNlcyBzaGFs
bCBiZSByZXNvbHZlZCBpbiBmYXZvciBvZiBjb3ZlcmFnZS4gIEZvciBhIHBhcnRpY3VsYXIKK3By
b2R1Y3QgcmVjZWl2ZWQgYnkgYSBwYXJ0aWN1bGFyIHVzZXIsICJub3JtYWxseSB1c2VkIiByZWZl
cnMgdG8gYQordHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwg
cmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCitvZiB0aGUgcGFydGljdWxhciB1c2VyIG9yIG9mIHRo
ZSB3YXkgaW4gd2hpY2ggdGhlIHBhcnRpY3VsYXIgdXNlcgorYWN0dWFsbHkgdXNlcywgb3IgZXhw
ZWN0cyBvciBpcyBleHBlY3RlZCB0byB1c2UsIHRoZSBwcm9kdWN0LiAgQSBwcm9kdWN0CitpcyBh
IGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBz
dWJzdGFudGlhbAorY29tbWVyY2lhbCwgaW5kdXN0cmlhbCBvciBub24tY29uc3VtZXIgdXNlcywg
dW5sZXNzIHN1Y2ggdXNlcyByZXByZXNlbnQKK3RoZSBvbmx5IHNpZ25pZmljYW50IG1vZGUgb2Yg
dXNlIG9mIHRoZSBwcm9kdWN0LgorCisgICJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIGZvciBh
IFVzZXIgUHJvZHVjdCBtZWFucyBhbnkgbWV0aG9kcywKK3Byb2NlZHVyZXMsIGF1dGhvcml6YXRp
b24ga2V5cywgb3Igb3RoZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gaW5zdGFsbAorYW5kIGV4
ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFBy
b2R1Y3QgZnJvbQorYSBtb2RpZmllZCB2ZXJzaW9uIG9mIGl0cyBDb3JyZXNwb25kaW5nIFNvdXJj
ZS4gIFRoZSBpbmZvcm1hdGlvbiBtdXN0CitzdWZmaWNlIHRvIGVuc3VyZSB0aGF0IHRoZSBjb250
aW51ZWQgZnVuY3Rpb25pbmcgb2YgdGhlIG1vZGlmaWVkIG9iamVjdAorY29kZSBpcyBpbiBubyBj
YXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKK21vZGlmaWNh
dGlvbiBoYXMgYmVlbiBtYWRlLgorCisgIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29y
ayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCitzcGVjaWZpY2FsbHkgZm9yIHVz
ZSBpbiwgYSBVc2VyIFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcworcGFydCBv
ZiBhIHRyYW5zYWN0aW9uIGluIHdoaWNoIHRoZSByaWdodCBvZiBwb3NzZXNzaW9uIGFuZCB1c2Ug
b2YgdGhlCitVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBw
ZXJwZXR1aXR5IG9yIGZvciBhCitmaXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUgdHJh
bnNhY3Rpb24gaXMgY2hhcmFjdGVyaXplZCksIHRoZQorQ29ycmVzcG9uZGluZyBTb3VyY2UgY29u
dmV5ZWQgdW5kZXIgdGhpcyBzZWN0aW9uIG11c3QgYmUgYWNjb21wYW5pZWQKK2J5IHRoZSBJbnN0
YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBs
eQoraWYgbmVpdGhlciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBhYmlsaXR5
IHRvIGluc3RhbGwKK21vZGlmaWVkIG9iamVjdCBjb2RlIG9uIHRoZSBVc2VyIFByb2R1Y3QgKGZv
ciBleGFtcGxlLCB0aGUgd29yayBoYXMKK2JlZW4gaW5zdGFsbGVkIGluIFJPTSkuCisKKyAgVGhl
IHJlcXVpcmVtZW50IHRvIHByb3ZpZGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIGRvZXMgbm90
IGluY2x1ZGUgYQorcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNl
cnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCitmb3IgYSB3b3JrIHRoYXQgaGFzIGJlZW4gbW9k
aWZpZWQgb3IgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGllbnQsIG9yIGZvcgordGhlIFVzZXIgUHJv
ZHVjdCBpbiB3aGljaCBpdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQuICBBY2Nlc3Mg
dG8gYQorbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYg
bWF0ZXJpYWxseSBhbmQKK2FkdmVyc2VseSBhZmZlY3RzIHRoZSBvcGVyYXRpb24gb2YgdGhlIG5l
dHdvcmsgb3IgdmlvbGF0ZXMgdGhlIHJ1bGVzIGFuZAorcHJvdG9jb2xzIGZvciBjb21tdW5pY2F0
aW9uIGFjcm9zcyB0aGUgbmV0d29yay4KKworICBDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXll
ZCwgYW5kIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBwcm92aWRlZCwKK2luIGFjY29yZCB3aXRo
IHRoaXMgc2VjdGlvbiBtdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgaXMgcHVibGljbHkKK2RvY3Vt
ZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGlj
IGluCitzb3VyY2UgY29kZSBmb3JtKSwgYW5kIG11c3QgcmVxdWlyZSBubyBzcGVjaWFsIHBhc3N3
b3JkIG9yIGtleSBmb3IKK3VucGFja2luZywgcmVhZGluZyBvciBjb3B5aW5nLgorCisgIDcuIEFk
ZGl0aW9uYWwgVGVybXMuCisKKyAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0
aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKK0xpY2Vuc2UgYnkgbWFraW5nIGV4Y2Vw
dGlvbnMgZnJvbSBvbmUgb3IgbW9yZSBvZiBpdHMgY29uZGl0aW9ucy4KK0FkZGl0aW9uYWwgcGVy
bWlzc2lvbnMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZW50aXJlIFByb2dyYW0gc2hhbGwK
K2JlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2Us
IHRvIHRoZSBleHRlbnQKK3RoYXQgdGhleSBhcmUgdmFsaWQgdW5kZXIgYXBwbGljYWJsZSBsYXcu
ICBJZiBhZGRpdGlvbmFsIHBlcm1pc3Npb25zCithcHBseSBvbmx5IHRvIHBhcnQgb2YgdGhlIFBy
b2dyYW0sIHRoYXQgcGFydCBtYXkgYmUgdXNlZCBzZXBhcmF0ZWx5Cit1bmRlciB0aG9zZSBwZXJt
aXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5Cit0aGlz
IExpY2Vuc2Ugd2l0aG91dCByZWdhcmQgdG8gdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMuCisK
KyAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5
b3VyIG9wdGlvbgorcmVtb3ZlIGFueSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGZyb20gdGhhdCBj
b3B5LCBvciBmcm9tIGFueSBwYXJ0IG9mCitpdC4gIChBZGRpdGlvbmFsIHBlcm1pc3Npb25zIG1h
eSBiZSB3cml0dGVuIHRvIHJlcXVpcmUgdGhlaXIgb3duCityZW1vdmFsIGluIGNlcnRhaW4gY2Fz
ZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKK2FkZGl0aW9uYWwg
cGVybWlzc2lvbnMgb24gbWF0ZXJpYWwsIGFkZGVkIGJ5IHlvdSB0byBhIGNvdmVyZWQgd29yaywK
K2ZvciB3aGljaCB5b3UgaGF2ZSBvciBjYW4gZ2l2ZSBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgcGVy
bWlzc2lvbi4KKworICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlz
IExpY2Vuc2UsIGZvciBtYXRlcmlhbCB5b3UKK2FkZCB0byBhIGNvdmVyZWQgd29yaywgeW91IG1h
eSAoaWYgYXV0aG9yaXplZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlcnMgb2YKK3RoYXQgbWF0ZXJp
YWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgorCisg
ICAgYSkgRGlzY2xhaW1pbmcgd2FycmFudHkgb3IgbGltaXRpbmcgbGlhYmlsaXR5IGRpZmZlcmVu
dGx5IGZyb20gdGhlCisgICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGlj
ZW5zZTsgb3IKKworICAgIGIpIFJlcXVpcmluZyBwcmVzZXJ2YXRpb24gb2Ygc3BlY2lmaWVkIHJl
YXNvbmFibGUgbGVnYWwgbm90aWNlcyBvcgorICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhh
dCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKKyAgICBOb3RpY2VzIGRpc3Bs
YXllZCBieSB3b3JrcyBjb250YWluaW5nIGl0OyBvcgorCisgICAgYykgUHJvaGliaXRpbmcgbWlz
cmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgorICAgIHJl
cXVpcmluZyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIG9mIHN1Y2ggbWF0ZXJpYWwgYmUgbWFya2Vk
IGluCisgICAgcmVhc29uYWJsZSB3YXlzIGFzIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCB2
ZXJzaW9uOyBvcgorCisgICAgZCkgTGltaXRpbmcgdGhlIHVzZSBmb3IgcHVibGljaXR5IHB1cnBv
c2VzIG9mIG5hbWVzIG9mIGxpY2Vuc29ycyBvcgorICAgIGF1dGhvcnMgb2YgdGhlIG1hdGVyaWFs
OyBvcgorCisgICAgZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsg
bGF3IGZvciB1c2Ugb2Ygc29tZQorICAgIHRyYWRlIG5hbWVzLCB0cmFkZW1hcmtzLCBvciBzZXJ2
aWNlIG1hcmtzOyBvcgorCisgICAgZikgUmVxdWlyaW5nIGluZGVtbmlmaWNhdGlvbiBvZiBsaWNl
bnNvcnMgYW5kIGF1dGhvcnMgb2YgdGhhdAorICAgIG1hdGVyaWFsIGJ5IGFueW9uZSB3aG8gY29u
dmV5cyB0aGUgbWF0ZXJpYWwgKG9yIG1vZGlmaWVkIHZlcnNpb25zIG9mCisgICAgaXQpIHdpdGgg
Y29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZv
cgorICAgIGFueSBsaWFiaWxpdHkgdGhhdCB0aGVzZSBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBk
aXJlY3RseSBpbXBvc2Ugb24KKyAgICB0aG9zZSBsaWNlbnNvcnMgYW5kIGF1dGhvcnMuCisKKyAg
QWxsIG90aGVyIG5vbi1wZXJtaXNzaXZlIGFkZGl0aW9uYWwgdGVybXMgYXJlIGNvbnNpZGVyZWQg
ImZ1cnRoZXIKK3Jlc3RyaWN0aW9ucyIgd2l0aGluIHRoZSBtZWFuaW5nIG9mIHNlY3Rpb24gMTAu
ICBJZiB0aGUgUHJvZ3JhbSBhcyB5b3UKK3JlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwg
Y29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCitnb3Zlcm5lZCBieSB0aGlzIExp
Y2Vuc2UgYWxvbmcgd2l0aCBhIHRlcm0gdGhhdCBpcyBhIGZ1cnRoZXIKK3Jlc3RyaWN0aW9uLCB5
b3UgbWF5IHJlbW92ZSB0aGF0IHRlcm0uICBJZiBhIGxpY2Vuc2UgZG9jdW1lbnQgY29udGFpbnMK
K2EgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlp
bmcgdW5kZXIgdGhpcworTGljZW5zZSwgeW91IG1heSBhZGQgdG8gYSBjb3ZlcmVkIHdvcmsgbWF0
ZXJpYWwgZ292ZXJuZWQgYnkgdGhlIHRlcm1zCitvZiB0aGF0IGxpY2Vuc2UgZG9jdW1lbnQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZ1cnRoZXIgcmVzdHJpY3Rpb24gZG9lcworbm90IHN1cnZpdmUgc3Vj
aCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCisKKyAgSWYgeW91IGFkZCB0ZXJtcyB0byBhIGNv
dmVyZWQgd29yayBpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24sIHlvdQorbXVzdCBwbGFjZSwg
aW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCithZGRpdGlv
bmFsIHRlcm1zIHRoYXQgYXBwbHkgdG8gdGhvc2UgZmlsZXMsIG9yIGEgbm90aWNlIGluZGljYXRp
bmcKK3doZXJlIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgdGVybXMuCisKKyAgQWRkaXRpb25hbCB0
ZXJtcywgcGVybWlzc2l2ZSBvciBub24tcGVybWlzc2l2ZSwgbWF5IGJlIHN0YXRlZCBpbiB0aGUK
K2Zvcm0gb2YgYSBzZXBhcmF0ZWx5IHdyaXR0ZW4gbGljZW5zZSwgb3Igc3RhdGVkIGFzIGV4Y2Vw
dGlvbnM7Cit0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCisKKyAgOC4g
VGVybWluYXRpb24uCisKKyAgWW91IG1heSBub3QgcHJvcGFnYXRlIG9yIG1vZGlmeSBhIGNvdmVy
ZWQgd29yayBleGNlcHQgYXMgZXhwcmVzc2x5Citwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2Uu
ICBBbnkgYXR0ZW1wdCBvdGhlcndpc2UgdG8gcHJvcGFnYXRlIG9yCittb2RpZnkgaXQgaXMgdm9p
ZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKK3Ro
aXMgTGljZW5zZSAoaW5jbHVkaW5nIGFueSBwYXRlbnQgbGljZW5zZXMgZ3JhbnRlZCB1bmRlciB0
aGUgdGhpcmQKK3BhcmFncmFwaCBvZiBzZWN0aW9uIDExKS4KKworICBIb3dldmVyLCBpZiB5b3Ug
Y2Vhc2UgYWxsIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UsIHRoZW4geW91cgorbGljZW5zZSBm
cm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0ZWQgKGEpCitwcm92
aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0
bHkgYW5kCitmaW5hbGx5IHRlcm1pbmF0ZXMgeW91ciBsaWNlbnNlLCBhbmQgKGIpIHBlcm1hbmVu
dGx5LCBpZiB0aGUgY29weXJpZ2h0Citob2xkZXIgZmFpbHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUg
dmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucworcHJpb3IgdG8gNjAgZGF5cyBhZnRl
ciB0aGUgY2Vzc2F0aW9uLgorCisgIE1vcmVvdmVyLCB5b3VyIGxpY2Vuc2UgZnJvbSBhIHBhcnRp
Y3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcworcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUg
Y29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCit2aW9sYXRpb24gYnkgc29tZSBy
ZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCityZWNlaXZl
ZCBub3RpY2Ugb2YgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSAoZm9yIGFueSB3b3JrKSBmcm9t
IHRoYXQKK2NvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9y
IHRvIDMwIGRheXMgYWZ0ZXIKK3lvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgorCisgIFRlcm1p
bmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5h
dGUgdGhlCitsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciBy
aWdodHMgZnJvbSB5b3UgdW5kZXIKK3RoaXMgTGljZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUg
YmVlbiB0ZXJtaW5hdGVkIGFuZCBub3QgcGVybWFuZW50bHkKK3JlaW5zdGF0ZWQsIHlvdSBkbyBu
b3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKK21hdGVyaWFs
IHVuZGVyIHNlY3Rpb24gMTAuCisKKyAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhh
dmluZyBDb3BpZXMuCisKKyAgWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGlj
ZW5zZSBpbiBvcmRlciB0byByZWNlaXZlIG9yCitydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAg
QW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCitvY2N1cnJpbmcgc29sZWx5
IGFzIGEgY29uc2VxdWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbgordG8g
cmVjZWl2ZSBhIGNvcHkgbGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93
ZXZlciwKK25vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNz
aW9uIHRvIHByb3BhZ2F0ZSBvcgorbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBUaGVzZSBhY3Rp
b25zIGluZnJpbmdlIGNvcHlyaWdodCBpZiB5b3UgZG8KK25vdCBhY2NlcHQgdGhpcyBMaWNlbnNl
LiAgVGhlcmVmb3JlLCBieSBtb2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQorY292ZXJlZCB3b3Jr
LCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4K
KworICAxMC4gQXV0b21hdGljIExpY2Vuc2luZyBvZiBEb3duc3RyZWFtIFJlY2lwaWVudHMuCisK
KyAgRWFjaCB0aW1lIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHRoZSByZWNpcGllbnQgYXV0
b21hdGljYWxseQorcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29y
cywgdG8gcnVuLCBtb2RpZnkgYW5kCitwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRo
aXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCitmb3IgZW5mb3JjaW5nIGNvbXBs
aWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoIHRoaXMgTGljZW5zZS4KKworICBBbiAiZW50aXR5
IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFu
Citvcmdhbml6YXRpb24sIG9yIHN1YnN0YW50aWFsbHkgYWxsIGFzc2V0cyBvZiBvbmUsIG9yIHN1
YmRpdmlkaW5nIGFuCitvcmdhbml6YXRpb24sIG9yIG1lcmdpbmcgb3JnYW5pemF0aW9ucy4gIElm
IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZAord29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRy
YW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKK3RyYW5zYWN0aW9uIHdobyByZWNlaXZlcyBh
IGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNlaXZlcyB3aGF0ZXZlcgorbGljZW5zZXMgdG8gdGhl
IHdvcmsgdGhlIHBhcnR5J3MgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QgaGFkIG9yIGNvdWxkCitn
aXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNz
aW9uIG9mIHRoZQorQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgZnJvbSB0aGUgcHJl
ZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCit0aGUgcHJlZGVjZXNzb3IgaGFzIGl0IG9yIGNhbiBn
ZXQgaXQgd2l0aCByZWFzb25hYmxlIGVmZm9ydHMuCisKKyAgWW91IG1heSBub3QgaW1wb3NlIGFu
eSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgZXhlcmNpc2Ugb2YgdGhlCityaWdodHMgZ3Jh
bnRlZCBvciBhZmZpcm1lZCB1bmRlciB0aGlzIExpY2Vuc2UuICBGb3IgZXhhbXBsZSwgeW91IG1h
eQorbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9y
IGV4ZXJjaXNlIG9mCityaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCB5b3Ug
bWF5IG5vdCBpbml0aWF0ZSBsaXRpZ2F0aW9uCisoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3Ig
Y291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAorYW55IHBhdGVudCBjbGFp
bSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCitz
YWxlLCBvciBpbXBvcnRpbmcgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24gb2YgaXQuCisKKyAg
MTEuIFBhdGVudHMuCisKKyAgQSAiY29udHJpYnV0b3IiIGlzIGEgY29weXJpZ2h0IGhvbGRlciB3
aG8gYXV0aG9yaXplcyB1c2UgdW5kZXIgdGhpcworTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBh
IHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKK3dvcmsgdGh1cyBsaWNl
bnNlZCBpcyBjYWxsZWQgdGhlIGNvbnRyaWJ1dG9yJ3MgImNvbnRyaWJ1dG9yIHZlcnNpb24iLgor
CisgIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0
ZW50IGNsYWltcworb3duZWQgb3IgY29udHJvbGxlZCBieSB0aGUgY29udHJpYnV0b3IsIHdoZXRo
ZXIgYWxyZWFkeSBhY3F1aXJlZCBvcgoraGVyZWFmdGVyIGFjcXVpcmVkLCB0aGF0IHdvdWxkIGJl
IGluZnJpbmdlZCBieSBzb21lIG1hbm5lciwgcGVybWl0dGVkCitieSB0aGlzIExpY2Vuc2UsIG9m
IG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCitidXQg
ZG8gbm90IGluY2x1ZGUgY2xhaW1zIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIG9ubHkgYXMgYQor
Y29uc2VxdWVuY2Ugb2YgZnVydGhlciBtb2RpZmljYXRpb24gb2YgdGhlIGNvbnRyaWJ1dG9yIHZl
cnNpb24uICBGb3IKK3B1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1
ZGVzIHRoZSByaWdodCB0byBncmFudAorcGF0ZW50IHN1YmxpY2Vuc2VzIGluIGEgbWFubmVyIGNv
bnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mCit0aGlzIExpY2Vuc2UuCisKKyAgRWFj
aCBjb250cmlidXRvciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lh
bHR5LWZyZWUKK3BhdGVudCBsaWNlbnNlIHVuZGVyIHRoZSBjb250cmlidXRvcidzIGVzc2VudGlh
bCBwYXRlbnQgY2xhaW1zLCB0bworbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1w
b3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCitwcm9wYWdhdGUgdGhlIGNvbnRlbnRz
IG9mIGl0cyBjb250cmlidXRvciB2ZXJzaW9uLgorCisgIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUg
cGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCithZ3JlZW1lbnQg
b3IgY29tbWl0bWVudCwgaG93ZXZlciBkZW5vbWluYXRlZCwgbm90IHRvIGVuZm9yY2UgYSBwYXRl
bnQKKyhzdWNoIGFzIGFuIGV4cHJlc3MgcGVybWlzc2lvbiB0byBwcmFjdGljZSBhIHBhdGVudCBv
ciBjb3ZlbmFudCBub3QgdG8KK3N1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3Jh
bnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCitwYXJ0eSBtZWFucyB0byBtYWtlIHN1Y2gg
YW4gYWdyZWVtZW50IG9yIGNvbW1pdG1lbnQgbm90IHRvIGVuZm9yY2UgYQorcGF0ZW50IGFnYWlu
c3QgdGhlIHBhcnR5LgorCisgIElmIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIGtub3dpbmds
eSByZWx5aW5nIG9uIGEgcGF0ZW50IGxpY2Vuc2UsCithbmQgdGhlIENvcnJlc3BvbmRpbmcgU291
cmNlIG9mIHRoZSB3b3JrIGlzIG5vdCBhdmFpbGFibGUgZm9yIGFueW9uZQordG8gY29weSwgZnJl
ZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2gg
YQorcHVibGljbHkgYXZhaWxhYmxlIG5ldHdvcmsgc2VydmVyIG9yIG90aGVyIHJlYWRpbHkgYWNj
ZXNzaWJsZSBtZWFucywKK3RoZW4geW91IG11c3QgZWl0aGVyICgxKSBjYXVzZSB0aGUgQ29ycmVz
cG9uZGluZyBTb3VyY2UgdG8gYmUgc28KK2F2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVw
cml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKK3BhdGVudCBsaWNlbnNlIGZvciB0
aGlzIHBhcnRpY3VsYXIgd29yaywgb3IgKDMpIGFycmFuZ2UsIGluIGEgbWFubmVyCitjb25zaXN0
ZW50IHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UsIHRvIGV4dGVuZCB0aGUg
cGF0ZW50CitsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVs
eWluZyIgbWVhbnMgeW91IGhhdmUKK2FjdHVhbCBrbm93bGVkZ2UgdGhhdCwgYnV0IGZvciB0aGUg
cGF0ZW50IGxpY2Vuc2UsIHlvdXIgY29udmV5aW5nIHRoZQorY292ZXJlZCB3b3JrIGluIGEgY291
bnRyeSwgb3IgeW91ciByZWNpcGllbnQncyB1c2Ugb2YgdGhlIGNvdmVyZWQgd29yaworaW4gYSBj
b3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBp
biB0aGF0Citjb3VudHJ5IHRoYXQgeW91IGhhdmUgcmVhc29uIHRvIGJlbGlldmUgYXJlIHZhbGlk
LgorCisgIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJh
bnNhY3Rpb24gb3IKK2FycmFuZ2VtZW50LCB5b3UgY29udmV5LCBvciBwcm9wYWdhdGUgYnkgcHJv
Y3VyaW5nIGNvbnZleWFuY2Ugb2YsIGEKK2NvdmVyZWQgd29yaywgYW5kIGdyYW50IGEgcGF0ZW50
IGxpY2Vuc2UgdG8gc29tZSBvZiB0aGUgcGFydGllcworcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdv
cmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5CitvciBjb252ZXkg
YSBzcGVjaWZpYyBjb3B5IG9mIHRoZSBjb3ZlcmVkIHdvcmssIHRoZW4gdGhlIHBhdGVudCBsaWNl
bnNlCit5b3UgZ3JhbnQgaXMgYXV0b21hdGljYWxseSBleHRlbmRlZCB0byBhbGwgcmVjaXBpZW50
cyBvZiB0aGUgY292ZXJlZAord29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCisKKyAgQSBwYXRl
bnQgbGljZW5zZSBpcyAiZGlzY3JpbWluYXRvcnkiIGlmIGl0IGRvZXMgbm90IGluY2x1ZGUgd2l0
aGluCit0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9m
LCBvciBpcworY29uZGl0aW9uZWQgb24gdGhlIG5vbi1leGVyY2lzZSBvZiBvbmUgb3IgbW9yZSBv
ZiB0aGUgcmlnaHRzIHRoYXQgYXJlCitzcGVjaWZpY2FsbHkgZ3JhbnRlZCB1bmRlciB0aGlzIExp
Y2Vuc2UuICBZb3UgbWF5IG5vdCBjb252ZXkgYSBjb3ZlcmVkCit3b3JrIGlmIHlvdSBhcmUgYSBw
YXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcworaW4gdGhl
IGJ1c2luZXNzIG9mIGRpc3RyaWJ1dGluZyBzb2Z0d2FyZSwgdW5kZXIgd2hpY2ggeW91IG1ha2Ug
cGF5bWVudAordG8gdGhlIHRoaXJkIHBhcnR5IGJhc2VkIG9uIHRoZSBleHRlbnQgb2YgeW91ciBh
Y3Rpdml0eSBvZiBjb252ZXlpbmcKK3RoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJk
IHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQorcGFydGllcyB3aG8gd291bGQgcmVjZWl2ZSB0
aGUgY292ZXJlZCB3b3JrIGZyb20geW91LCBhIGRpc2NyaW1pbmF0b3J5CitwYXRlbnQgbGljZW5z
ZSAoYSkgaW4gY29ubmVjdGlvbiB3aXRoIGNvcGllcyBvZiB0aGUgY292ZXJlZCB3b3JrCitjb252
ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHBy
aW1hcmlseQorZm9yIGFuZCBpbiBjb25uZWN0aW9uIHdpdGggc3BlY2lmaWMgcHJvZHVjdHMgb3Ig
Y29tcGlsYXRpb25zIHRoYXQKK2NvbnRhaW4gdGhlIGNvdmVyZWQgd29yaywgdW5sZXNzIHlvdSBl
bnRlcmVkIGludG8gdGhhdCBhcnJhbmdlbWVudCwKK29yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2Fz
IGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCisKKyAgTm90aGluZyBpbiB0aGlzIExp
Y2Vuc2Ugc2hhbGwgYmUgY29uc3RydWVkIGFzIGV4Y2x1ZGluZyBvciBsaW1pdGluZworYW55IGlt
cGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkK
K290aGVyd2lzZSBiZSBhdmFpbGFibGUgdG8geW91IHVuZGVyIGFwcGxpY2FibGUgcGF0ZW50IGxh
dy4KKworICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KKworICBJZiBjb25k
aXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVt
ZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlz
IExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2Yg
dGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdCBjb252ZXkgYQorY292ZXJlZCB3b3JrIHNvIGFz
IHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitM
aWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29u
c2VxdWVuY2UgeW91IG1heQorbm90IGNvbnZleSBpdCBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYg
eW91IGFncmVlIHRvIHRlcm1zIHRoYXQgb2JsaWdhdGUgeW91Cit0byBjb2xsZWN0IGEgcm95YWx0
eSBmb3IgZnVydGhlciBjb252ZXlpbmcgZnJvbSB0aG9zZSB0byB3aG9tIHlvdSBjb252ZXkKK3Ro
ZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJt
cyBhbmQgdGhpcworTGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gY29u
dmV5aW5nIHRoZSBQcm9ncmFtLgorCisgIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlLgorCisgIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlz
aW9uIG9mIHRoaXMgTGljZW5zZSwgeW91IGhhdmUKK3Blcm1pc3Npb24gdG8gbGluayBvciBjb21i
aW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKK3VuZGVyIHZlcnNpb24g
MyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGludG8gYSBzaW5nbGUK
K2NvbWJpbmVkIHdvcmssIGFuZCB0byBjb252ZXkgdGhlIHJlc3VsdGluZyB3b3JrLiAgVGhlIHRl
cm1zIG9mIHRoaXMKK0xpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3
aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLAorYnV0IHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50cyBv
ZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorc2VjdGlvbiAxMywgY29u
Y2VybmluZyBpbnRlcmFjdGlvbiB0aHJvdWdoIGEgbmV0d29yayB3aWxsIGFwcGx5IHRvIHRoZQor
Y29tYmluYXRpb24gYXMgc3VjaC4KKworICAxNC4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGlzIExp
Y2Vuc2UuCisKKyAgVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZp
c2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YKK3RoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKK2JlIHNpbWlsYXIg
aW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFp
bCB0bworYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKKyAgRWFjaCB2ZXJzaW9u
IGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKK1Byb2dy
YW0gc3BlY2lmaWVzIHRoYXQgYSBjZXJ0YWluIG51bWJlcmVkIHZlcnNpb24gb2YgdGhlIEdOVSBH
ZW5lcmFsCitQdWJsaWMgTGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iIGFwcGxpZXMgdG8g
aXQsIHlvdSBoYXZlIHRoZQorb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRp
dGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKK3ZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZl
cnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLiAgSWYgdGhl
IFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZQorR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVi
bGlzaGVkCitieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisgIElmIHRoZSBQcm9n
cmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKK3ZlcnNp
b25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBjYW4gYmUgdXNlZCwgdGhhdCBw
cm94eSdzCitwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJzaW9uIHBlcm1h
bmVudGx5IGF1dGhvcml6ZXMgeW91Cit0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJv
Z3JhbS4KKworICBMYXRlciBsaWNlbnNlIHZlcnNpb25zIG1heSBnaXZlIHlvdSBhZGRpdGlvbmFs
IG9yIGRpZmZlcmVudAorcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGln
YXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQorYXV0aG9yIG9yIGNvcHlyaWdodCBob2xkZXIgYXMg
YSByZXN1bHQgb2YgeW91ciBjaG9vc2luZyB0byBmb2xsb3cgYQorbGF0ZXIgdmVyc2lvbi4KKwor
ICAxNS4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4KKworICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBG
T1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCitBUFBMSUNBQkxFIExB
Vy4gIEVYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hU
CitIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElT
IiBXSVRIT1VUIFdBUlJBTlRZCitPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBM
SUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKK1RIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBP
U0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9G
IFRIRSBQUk9HUkFNCitJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZF
Q1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKK0FMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBS
RVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCisK
KyAgSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVF
RCBUTyBJTiBXUklUSU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIg
UEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTCitUSEUgUFJPR1JBTSBBUyBQRVJNSVRU
RUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKK0dF
TkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJ
TkcgT1VUIE9GIFRIRQorVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgorREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRF
UkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQKK1BBUlRJ
RVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIg
UFJPR1JBTVMpLAorRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorU1VDSCBEQU1BR0VTLgorCisgIDE3LiBJbnRl
cnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCisKKyAgSWYgdGhlIGRpc2NsYWltZXIg
b2Ygd2FycmFudHkgYW5kIGxpbWl0YXRpb24gb2YgbGlhYmlsaXR5IHByb3ZpZGVkCithYm92ZSBj
YW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJt
cywKK3Jldmlld2luZyBjb3VydHMgc2hhbGwgYXBwbHkgbG9jYWwgbGF3IHRoYXQgbW9zdCBjbG9z
ZWx5IGFwcHJveGltYXRlcworYW4gYWJzb2x1dGUgd2FpdmVyIG9mIGFsbCBjaXZpbCBsaWFiaWxp
dHkgaW4gY29ubmVjdGlvbiB3aXRoIHRoZQorUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3Ig
YXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQorY29weSBvZiB0aGUgUHJvZ3Jh
bSBpbiByZXR1cm4gZm9yIGEgZmVlLgorCisgICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVS
TVMgQU5EIENPTkRJVElPTlMKKworICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1z
IHRvIFlvdXIgTmV3IFByb2dyYW1zCisKKyAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwg
YW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAorcG9zc2libGUgdXNlIHRvIHRo
ZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAorZnJl
ZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5k
ZXIgdGhlc2UgdGVybXMuCisKKyAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGlj
ZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKK3RvIGF0dGFjaCB0aGVtIHRvIHRoZSBz
dGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKK3N0YXRlIHRoZSBl
eGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QK
K3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90
aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1l
IGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5
ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh
cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg
dGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl
cy8+LgorCitBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxl
Y3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KKworICBJZiB0aGUgcHJvZ3JhbSBkb2VzIHRlcm1pbmFs
IGludGVyYWN0aW9uLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0Citub3RpY2UgbGlrZSB0aGlzIHdo
ZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6CisKKyAgICA8cHJvZ3JhbT4gIENv
cHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+CisgICAgVGhpcyBwcm9ncmFtIGNv
bWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3
Jy4KKyAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVk
aXN0cmlidXRlIGl0CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMn
IGZvciBkZXRhaWxzLgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBg
c2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB5b3VyIHByb2dyYW0ncyBjb21tYW5kcworbWln
aHQgYmUgZGlmZmVyZW50OyBmb3IgYSBHVUkgaW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJh
Ym91dCBib3giLgorCisgIFlvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91
IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciBzY2hvb2wsCitpZiBhbnksIHRvIHNpZ24gYSAiY29w
eXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgorRm9yIG1v
cmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBH
TlUgR1BMLCBzZWUKKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworICBUaGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91
ciBwcm9ncmFtCitpbnRvIHByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlz
IGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UKK21heSBjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0
byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAordGhlIGxpYnJh
cnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBH
ZW5lcmFsCitQdWJsaWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4gIEJ1dCBmaXJz
dCwgcGxlYXNlIHJlYWQKKzxodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93aHktbm90LWxn
cGwuaHRtbD4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9SRUFETUUuY2hyb21pdW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9SRUFE
TUUuY2hyb21pdW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1ZDgyZTYzNjZlNTk5YjA0MjY5YWYxNDEwYTMwNDlk
MGZkYzRmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xz
L2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL1JFQURNRS5jaHJvbWl1bQpAQCAtMCww
ICsxLDEwIEBACitOYW1lOiBCaXNvbiBza2VsZXRvbnMKK1VSTDogaHR0cHM6Ly93d3cuZ251Lm9y
Zy9zb2Z0d2FyZS9iaXNvbi8KK1ZlcnNpb246IDMuMy4yCitMaWNlbnNlOiBHUEwKK0xpY2Vuc2Ug
RmlsZTogTElDRU5TRQorU2VjdXJpdHkgY3JpdGljYWw6IG5vCisKK0Rlc2NyaXB0aW9uOgorQmlz
b24gaXMgYSBwYXJzZXIgZ2VuZXJhdG9yLiBJdCB1c2VzIHNrZWxldG9uIGZpbGVzIGFzIHRlbXBs
YXRlcyBmb3IgYnVpbGRpbmcKK3NpbWlsYXIgbGFuZ3VhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMv
Ymlzb24ubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJk
X3BhcnR5L3NrZWxldG9ucy9iaXNvbi5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzU5MTg3NWMwZjYyM2Q1ZjEw
OGJiYzI5ZmQ3YWY1ODRmNmU3MzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYmlzb24ubTQK
QEAgLTAsMCArMSwxMTExIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgTGFuZ3VhZ2UtaW5k
ZXBlbmRlbnQgTTQgTWFjcm9zIGZvciBCaXNvbi4KKworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIw
MDQtMjAxNSwgMjAxOC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgorCisj
IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251
Lm9yZy9saWNlbnNlcy8+LgorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIElkZW50aWZp
Y2F0aW9uLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBiNF9nZW5lcmF0ZWRfYnkK
KyMgLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X2dlbmVyYXRlZF9ieV0sCitbYjRfY29t
bWVudChbQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIGI0X3ZlcnNpb24uXSkKK10p
CisKKyMgYjRfY29weXJpZ2h0KFRJVExFLCBbWUVBUlNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIElmIFlFQVJTIGFyZSBub3QgZGVmaW5lZCwgdXNlIGI0X2NvcHlyaWdodF95
ZWFycy4KK200X2RlZmluZShbYjRfY29weXJpZ2h0XSwKK1tiNF9nZW5lcmF0ZWRfYnkKK2I0X2Nv
bW1lbnQoWyQxCisKK11tNF9kcXVvdGUobTRfdGV4dF93cmFwKFtDb3B5cmlnaHQgKEMpCitdbTRf
aWZ2YWwoWyQyXSwgW1skMl1dLCBbbTRfZGVmbihbYjRfY29weXJpZ2h0X3llYXJzXSldKVsKK0Zy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLl0pKVsKKworVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo
ZSBMaWNlbnNlLCBvcgorKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg
PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Ll0pCisKK2I0X2NvbW1lbnQoW0FzIGEgc3Bl
Y2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlu
cworcGFydCBvciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0
ZSB0aGF0IHdvcmsKK3VuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBzbyBsb25nIGFzIHRoYXQg
d29yayBpc24ndCBpdHNlbGYgYQorcGFyc2VyIGdlbmVyYXRvciB1c2luZyB0aGUgc2tlbGV0b24g
b3IgYSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJlb2YKK2FzIGEgcGFyc2VyIHNrZWxldG9uLiAgQWx0
ZXJuYXRpdmVseSwgaWYgeW91IG1vZGlmeSBvciByZWRpc3RyaWJ1dGUKK3RoZSBwYXJzZXIgc2tl
bGV0b24gaXRzZWxmLCB5b3UgbWF5IChhdCB5b3VyIG9wdGlvbikgcmVtb3ZlIHRoaXMKK3NwZWNp
YWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhlIHJlc3Vs
dGluZworQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMKK0xpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhjZXB0aW9uLgorCitU
aGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uIGluCit2ZXJzaW9uIDIuMiBvZiBCaXNvbi5dKQorXSkKKworCisjIGI0X2Rpc2NsYWlt
ZXIKKyMgLS0tLS0tLS0tLS0tLQorIyBJc3N1ZSBhIHdhcm5pbmcgYWJvdXQgcHJpdmF0ZSBpbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzLgorbTRfZGVmaW5lKFtiNF9kaXNjbGFpbWVyXSwKK1tiNF9jb21t
ZW50KFtVbmRvY3VtZW50ZWQgbWFjcm9zLCBlc3BlY2lhbGx5IHRob3NlIHdob3NlIG5hbWUgc3Rh
cnQgd2l0aCBZWV8sCithcmUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiAgRG8gbm90
IHJlbHkgb24gdGhlbS5dKQorXSkKKworCisKKyMgYjRfcmVxdWlyZWRfdmVyc2lvbl9pZihWRVJT
SU9OLCBJRl9ORVdFUiwgSUZfT0xERVIpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiB0aGUgdmVyc2lvbiAlcmVxdWlyZSdkIGJ5IHRo
ZSB1c2VyIGlzIFZFUlNJT04gKG9yIG5ld2VyKSBleHBhbmQKKyMgSUZfTkVXRVIsIG90aGVyd2lz
ZSBJRl9PTERFUi4gIFZFUlNJT04gc2hvdWxkIGJlIGFuIGludGVnZXIsIGUuZy4sCisjIDMwMiBm
b3IgMy4yLgorbTRfZGVmaW5lKFtiNF9yZXF1aXJlZF92ZXJzaW9uX2lmXSwKK1ttNF9pZihtNF9l
dmFsKCQxIDw9IGI0X3JlcXVpcmVkX3ZlcnNpb24pLAorICAgICAgICAgICAgICBbMV0sIFskMl0s
IFskM10pXSkKKworCisjIyAtLS0tLS0tLSAjIworIyMgT3V0cHV0LiAgIyMKKyMjIC0tLS0tLS0t
ICMjCisKKyMgYjRfb3V0cHV0X2JlZ2luKEZJTEUxLCBGSUxFMikKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgRW5hYmxlIG91dHB1dCwgaS5lLiwgc2VuZCB0byBkaXZlcnNpb24g
MCwgZXhwYW5kIGFmdGVyICIjIiwgYW5kCisjIGdlbmVyYXRlIHRoZSB0YWcgdG8gb3V0cHV0IGlu
dG8gRklMRS4gIE11c3QgYmUgZm9sbG93ZWQgYnkgRU9MLgorIyBGSUxFIGlzIEZJTEUxIGNvbmNh
dGVuYXRlZCB0byBGSUxFMi4gIEZJTEUyIGNhbiBiZSBlbXB0eSwgb3IgYmUKKyMgYWJzb2x1dGU6
IGRvIHRoZSByaWdodCB0aGluZy4KK200X2RlZmluZShbYjRfb3V0cHV0X2JlZ2luXSwKK1ttNF9j
aGFuZ2Vjb20oKQorbTRfZGl2ZXJ0X3B1c2goMClkbmwKK0BvdXRwdXQobTRfdW5xdW90ZShbJDFd
KUAsbTRfdW5xdW90ZShbJDJdKUApQGRubAorXSkKKworCisjIGI0X291dHB1dF9lbmQKKyMgLS0t
LS0tLS0tLS0tLQorIyBPdXRwdXQgbm90aGluZywgcmVzdG9yZSAjIGFzIGNvbW1lbnQgY2hhcmFj
dGVyIChubyBleHBhbnNpb25zIGFmdGVyICMpLgorbTRfZGVmaW5lKFtiNF9vdXRwdXRfZW5kXSwK
K1ttNF9kaXZlcnRfcG9wKDApCittNF9jaGFuZ2Vjb20oWyNdKQorXSkKKworCisjIGI0X2RpdmVy
dF9raWxsKENPREUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZCBDT0RFIGZvciBp
dHMgc2lkZSBlZmZlY3RzLCBkaXNjYXJkIGl0cyBvdXRwdXQuCittNF9kZWZpbmUoW2I0X2RpdmVy
dF9raWxsXSwKK1ttNF9kaXZlcnRfdGV4dChbS0lMTF0sIFskMV0pXSkKKworCisjIGI0X2RlZmlu
ZV9zaWxlbnQoTUFDUk8sIENPREUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IFNhbWUgYXMgbTRfZGVmaW5lLCBidXQgdGhyb3cgYXdheSB0aGUgZXhwYW5zaW9uIG9mIENPREUu
CittNF9kZWZpbmUoW2I0X2RlZmluZV9zaWxlbnRdLAorW200X2RlZmluZShbJDFdLCBbYjRfZGl2
ZXJ0X2tpbGwoWyQyXSldKV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRXJyb3Ig
aGFuZGxpbmcuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIFRoZSBmb2xsb3dpbmcg
ZXJyb3IgaGFuZGxpbmcgbWFjcm9zIHByaW50IGVycm9yIGRpcmVjdGl2ZXMgdGhhdCBzaG91bGQg
bm90CisjIGJlY29tZSBhcmd1bWVudHMgb2Ygb3RoZXIgbWFjcm8gaW52b2NhdGlvbnMgc2luY2Ug
dGhleSB3b3VsZCBsaWtlbHkgdGhlbiBiZQorIyBtYW5nbGVkLiAgVGh1cywgdGhleSBwcmludCB0
byBzdGRvdXQgZGlyZWN0bHkuCisKKyMgYjRfY2F0KFRFWFQpCisjIC0tLS0tLS0tLS0tLQorIyBX
cml0ZSBURVhUIHRvIHN0ZG91dC4gIFByZWNlZGUgdGhlIGZpbmFsIG5ld2xpbmUgd2l0aCBhbiBA
IHNvIHRoYXQgaXQncworIyBlc2NhcGVkLiAgRm9yIGV4YW1wbGU6CisjCisjICAgYjRfY2F0KFtb
QGNvbXBsYWluKGludmFsaWQgaW5wdXRAKV1dKQorbTRfZGVmaW5lKFtiNF9jYXRdLAorW200X3N5
c2NtZChbY2F0IDw8J19tNGVvZicKK11tNF9icGF0c3Vic3QobTRfZHF1b3RlKCQxKSwgW19tNGVv
Zl0sIFtfbTRAYGVvZl0pW0AKK19tNGVvZgorXSlkbmwKK200X2lmKG00X3N5c3ZhbCwgWzBdLCBb
XSwgW200X2ZhdGFsKFskMDogY2Fubm90IHdyaXRlIHRvIHN0ZG91dF0pXSldKQorCisjIGI0X2Vy
cm9yKEtJTkQsIFNUQVJULCBFTkQsIEZPUk1BVCwgW0FSRzFdLCBbQVJHMl0sIC4uLikKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBX
cml0ZSBAS0lORChTVEFSVEAsRU5EQCxGT1JNQVRALEFSRzFALEFSRzJALC4uLkApIHRvIHN0ZG91
dC4KKyMKKyMgRm9yIGV4YW1wbGU6CisjCisjICAgYjRfZXJyb3IoW1tjb21wbGFpbl1dLCBbW2lu
cHV0Lnk6Mi4zXV0sIFtbaW5wdXQueTo1LjRdXSwKKyMgICAgICAgICAgICBbW2ludmFsaWQgJXNd
XSwgW1tmb29dXSkKK200X2RlZmluZShbYjRfZXJyb3JdLAorW2I0X2NhdChbW0Bjb21wbGFpbl1b
KF0kMVtALF0kMltALF0kM1tALF0kNFtdXWRubAorW200X2lmKFskI10sIFs0XSwgW10sCisgICAg
ICAgW200X2ZvcmVhY2goW2I0X2FyZ10sCisgICAgICAgICAgICAgICAgICAgbTRfZHF1b3RlKG00
X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpKSksCisgICAgICAgICAgICAg
ICAgICAgW1tALF1iNF9hcmddKV0pW0ApXV0pXSkKKworIyBiNF93YXJuKEZPUk1BVCwgW0FSRzFd
LCBbQVJHMl0sIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IFdyaXRlIEB3YXJuKEZPUk1BVEAsQVJHMUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0LgorIworIyBG
b3IgZXhhbXBsZToKKyMKKyMgICBiNF93YXJuKFtbaW52YWxpZCB2YWx1ZSBmb3IgJyVzJzogJXNd
XSwgW1tmb29dXSwgW1szXV0pCisjCisjIEFzIGEgc2ltcGxlIHRlc3Qgc3VpdGUsIHRoaXM6Cisj
CisjICAgbTRfZGl2ZXJ0KC0xKQorIyAgIG00X2RlZmluZShbYXNkZl0sIFtBU0RGXSkKKyMgICBt
NF9kZWZpbmUoW2ZzYV0sIFtGU0FdKQorIyAgIG00X2RlZmluZShbZmRzYV0sIFtGRFNBXSkKKyMg
ICBiNF93YXJuX2F0KFtbW2FzZGYpLCBhc2RmXV1dLCBbW1tmc2EpLCBmc2FdXV0sIFtbW2Zkc2Ep
LCBmZHNhXV1dKQorIyAgIGI0X3dhcm5fYXQoW1thc2RmKSwgYXNkZl1dLCBbW2ZzYSksIGZzYV1d
LCBbW2Zkc2EpLCBmZHNhXV0pCisjICAgYjRfd2Fybl9hdCgpCisjICAgYjRfd2Fybl9hdCgxKQor
IyAgIGI0X3dhcm5fYXQoMSwgMikKKyMKKyMgU2hvdWxkIHByb2R1Y2UgdGhpcyB3aXRob3V0IG5l
d2xpbmVzOgorIworIyAgIEB3YXJuX2F0KFthc2RmKSwgYXNkZl1ALEAsQCxbZnNhKSwgZnNhXUAs
W2Zkc2EpLCBmZHNhXUApCisjICAgQHdhcm4oYXNkZiksIGFzZGZALEAsQCxmc2EpLCBmc2FALGZk
c2EpLCBmZHNhQCkKKyMgICBAd2FybihAKQorIyAgIEB3YXJuKDFAKQorIyAgIEB3YXJuKDFALDJA
KQorbTRfZGVmaW5lKFtiNF93YXJuXSwKK1tiNF9lcnJvcihbW3dhcm5dXSwgW10sIFtdLCAkQCld
KQorCisjIGI0X3dhcm5fYXQoU1RBUlQsIEVORCwgRk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4u
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgV3JpdGUgQHdhcm4oU1RBUlRALEVOREAsRk9STUFUQCxBUkcxQCxBUkcyQCwuLi5AKSB0byBz
dGRvdXQuCisjCisjIEZvciBleGFtcGxlOgorIworIyAgIGI0X3dhcm5fYXQoW1tpbnB1dC55OjIu
M11dLCBbW2lucHV0Lnk6NS40XV0sIFtbaW52YWxpZCAlc11dLCBbW2Zvb11dKQorbTRfZGVmaW5l
KFtiNF93YXJuX2F0XSwKK1tiNF9lcnJvcihbW3dhcm5dXSwgJEApXSkKKworIyBiNF9jb21wbGFp
bihGT1JNQVQsIFtBUkcxXSwgW0FSRzJdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgQm91bmNlIHRvIGI0X2NvbXBsYWluX2F0LgorIworIyBTZWUg
YjRfd2FybiBleGFtcGxlLgorbTRfZGVmaW5lKFtiNF9jb21wbGFpbl0sCitbYjRfZXJyb3IoW1tj
b21wbGFpbl1dLCBbXSwgW10sICRAKV0pCisKKyMgYjRfY29tcGxhaW5fYXQoU1RBUlQsIEVORCwg
Rk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdyaXRlIEBjb21wbGFpbihTVEFSVEAs
RU5EQCxGT1JNQVRALEFSRzFALEFSRzJALC4uLkApIHRvIHN0ZG91dC4KKyMKKyMgU2VlIGI0X3dh
cm5fYXQgZXhhbXBsZS4KK200X2RlZmluZShbYjRfY29tcGxhaW5fYXRdLAorW2I0X2Vycm9yKFtb
Y29tcGxhaW5dXSwgJEApXSkKKworIyBiNF9mYXRhbChGT1JNQVQsIFtBUkcxXSwgW0FSRzJdLCAu
Li4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQm91bmNlIHRv
IGI0X2ZhdGFsX2F0LgorIworIyBTZWUgYjRfd2FybiBleGFtcGxlLgorbTRfZGVmaW5lKFtiNF9m
YXRhbF0sCitbYjRfZXJyb3IoW1tmYXRhbF1dLCBbXSwgW10sICRAKWRubAorbTRfZXhpdCgxKV0p
CisKKyMgYjRfZmF0YWxfYXQoU1RBUlQsIEVORCwgRk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4u
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIFdyaXRlIEBmYXRhbChTVEFSVEAsRU5EQCxGT1JNQVRALEFSRzFALEFSRzJALC4uLkApIHRv
IHN0ZG91dCBhbmQgZXhpdC4KKyMKKyMgU2VlIGI0X3dhcm5fYXQgZXhhbXBsZS4KK200X2RlZmlu
ZShbYjRfZmF0YWxfYXRdLAorW2I0X2Vycm9yKFtbZmF0YWxdXSwgJEApZG5sCittNF9leGl0KDEp
XSkKKworCisjIyAtLS0tLS0tLS0tLS0gIyMKKyMjIERhdGEgVHlwZXMuICAjIworIyMgLS0tLS0t
LS0tLS0tICMjCisKKyMgYjRfaW50c19pbihJTlQxLCBJTlQyLCBMT1csIEhJR0gpCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gMSBpZmYgYm90aCBJTlQxIGFu
ZCBJTlQyIGFyZSBpbiBbTE9XLCBISUdIXSwgMCBvdGhlcndpc2UuCittNF9kZWZpbmUoW2I0X2lu
dHNfaW5dLAorW200X2V2YWwoWyQzIDw9ICQxICYmICQxIDw9ICQ0ICYmICQzIDw9ICQyICYmICQy
IDw9ICQ0XSldKQorCisKKyMgYjRfc3VidHJhY3QoTEhTLCBSSFMpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBFdmFsdWF0ZSBMSFMgLSBSSFMgaWYgdGhleSBhcmUgaW50ZWdlciBsaXRlcmFs
cywgb3RoZXJ3aXNlIGV4cGFuZAorIyB0byAoTEhTKSAtIChSSFMpLgorbTRfZGVmaW5lKFtiNF9z
dWJ0cmFjdF0sCitbbTRfYm1hdGNoKFskMSQyXSwgW15bMDEyMzQ1Njc4OV0qJF0sCisgICAgICAg
ICAgIFttNF9ldmFsKFskMSAtICQyXSldLAorICAgICAgICAgICBbKCQxKSAtICgkMildKV0pCisK
KyMgYjRfam9pbihBUkcxLCAuLi4pCisjIF9iNF9qb2luKEFSRzEsIC4uLikKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBKb2luIHdpdGggY29tbWEsIHNraXBwaW5nIGVtcHR5IGFyZ3VtZW50cy4K
KyMgYjRfam9pbiBjYWxscyBpdHNlbGYgcmVjdXJzaXZlbHkgdW50aWwgaXQgc2VlcyB0aGUgZmly
c3Qgbm9uLWVtcHR5CisjIGFyZ3VtZW50LCB0aGVuIGNhbGxzIF9iNF9qb2luIChpLmUuLCBgXyQw
YCkgd2hpY2ggcHJlcGVuZHMgZWFjaAorIyBub24tZW1wdHkgYXJndW1lbnQgd2l0aCBhIGNvbW1h
LgorbTRfZGVmaW5lKFtiNF9qb2luXSwKK1ttNF9pZihbJCMkMV0sCisgICAgICAgWzFdLCBbXSwK
KyAgICAgICBbbTRfaWZ2YWwoWyQxXSwKKyAgICAgICAgICAgICAgICAgWyQxW11fJDAobTRfc2hp
ZnQoJEApKV0sCisgICAgICAgICAgICAgICAgIFskMChtNF9zaGlmdCgkQCkpXSldKV0pCisKKyMg
X2I0X2pvaW4oQVJHUzEsIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShb
X2I0X2pvaW5dLAorW200X2lmKFskIyQxXSwKKyAgICAgICBbMV0sIFtdLAorICAgICAgIFttNF9p
ZnZhbChbJDFdLCBbLCAkMV0pW10kMChtNF9zaGlmdCgkQCkpXSldKQorCisKKworCisjIGI0X2lu
dGVncmFsX3BhcnNlcl90YWJsZXNfbWFwKE1BQ1JPKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIE1hcCBNQUNSTyBvbiBhbGwgdGhlIGludGVncmFsIHRhYmxlcy4g
IE1BQ1JPIGlzIGV4cGVjdGVkIHRvIGhhdmUKKyMgdGhlIHNpZ25hdHVyZSBNQUNSTyhUQUJMRS1O
QU1FLCBDT05URU5ULCBDT01NRU5UKS4KK200X2RlZmluZShbYjRfaW50ZWdyYWxfcGFyc2VyX3Rh
Ymxlc19tYXBdLAorWyQxKFtwYWN0XSwgW2I0X3BhY3RdLAorICAgIFtbWVlQQUNUW1NUQVRFLU5V
TV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCitTVEFURS1O
VU0uXV0pCisKKyQxKFtkZWZhY3RdLCBbYjRfZGVmYWN0XSwKKyAgIFtbWVlERUZBQ1RbU1RBVEUt
TlVNXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgorUGVy
Zm9ybWVkIHdoZW4gWVlUQUJMRSBkb2VzIG5vdCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRv
LiAgWmVybworbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuXV0pCisKKyQxKFtwZ290b10s
IFtiNF9wZ290b10sIFtbWVlQR09UT1tOVEVSTS1OVU1dLl1dKQorCiskMShbZGVmZ290b10sIFti
NF9kZWZnb3RvXSwgW1tZWURFRkdPVE9bTlRFUk0tTlVNXS5dXSkKKworJDEoW3RhYmxlXSwgW2I0
X3RhYmxlXSwKKyAgIFtbWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0gLS0gV2hhdCB0byBkbyBp
biBzdGF0ZSBTVEFURS1OVU0uICBJZgorcG9zaXRpdmUsIHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBu
ZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdob3NlCitudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAg
SWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuXV0pCisKKyQxKFtjaGVja10sIFtiNF9jaGVj
a10pCisKKyQxKFtzdG9zXSwgW2I0X3N0b3NdLAorICAgW1tZWVNUT1NbU1RBVEUtTlVNXSAtLSBU
aGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZworc3ltYm9sIG9mIHN0YXRlIFNU
QVRFLU5VTS5dXSkKKworJDEoW3IxXSwgW2I0X3IxXSwKKyAgIFtbWVlSMVtZWU5dIC0tIFN5bWJv
bCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy5dXSkKKworJDEoW3IyXSwg
W2I0X3IyXSwKKyAgIFtbWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSByaWdo
dCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uXV0pCitdKQorCisKKyMgYjRfcGFyc2VyX3RhYmxlc19k
ZWNsYXJlCisjIGI0X3BhcnNlcl90YWJsZXNfZGVmaW5lCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBEZWZpbmUvZGVjbGFyZSB0aGUgKGRldGVybWluaXN0aWMpIHBhcnNlciB0YWJsZXMu
CittNF9kZWZpbmUoW2I0X3BhcnNlcl90YWJsZXNfZGVjbGFyZV0sCitbYjRfaW50ZWdyYWxfcGFy
c2VyX3RhYmxlc19tYXAoW2I0X2ludGVncmFsX3BhcnNlcl90YWJsZV9kZWNsYXJlXSldKQorCitt
NF9kZWZpbmUoW2I0X3BhcnNlcl90YWJsZXNfZGVmaW5lXSwKK1tiNF9pbnRlZ3JhbF9wYXJzZXJf
dGFibGVzX21hcChbYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlX2RlZmluZV0pXSkKKworCisKKyMj
IC0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRGVjb2Rpbmcgb3B0aW9ucy4gICMjCisjIyAtLS0t
LS0tLS0tLS0tLS0tLS0gIyMKKworIyBiNF9mbGFnX2lmKEZMQUcsIElGLVRSVUUsIElGLUZBTFNF
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSdW4gSUYtVFJVRSBp
ZiBiNF9GTEFHX2ZsYWcgaXMgMSwgSUYtRkFMU0UgaWYgRkxBRyBpcyAwLCBvdGhlcndpc2UgZmFp
bC4KK200X2RlZmluZShbYjRfZmxhZ19pZl0sCitbbTRfY2FzZShiNF8kMV9mbGFnLAorICAgICAg
ICAgWzBdLCBbJDNdLAorICAgICAgICAgWzFdLCBbJDJdLAorICAgICAgICAgW200X2ZhdGFsKFtp
bnZhbGlkICQxIHZhbHVlOiBdYjRfJDFfZmxhZyldKV0pCisKKworIyBiNF9kZWZpbmVfZmxhZ19p
ZihGTEFHKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgImI0X0ZMQUdfaWYo
SUYtVFJVRSwgSUYtRkFMU0UpIiB0aGF0IGRlcGVuZHMgb24gdGhlCisjIHZhbHVlIG9mIHRoZSBC
b29sZWFuIEZMQUcuCittNF9kZWZpbmUoW2I0X2RlZmluZV9mbGFnX2lmXSwKK1tfYjRfZGVmaW5l
X2ZsYWdfaWYoJFsxXSwgJFsyXSwgWyQxXSldKQorCisjIF9iNF9kZWZpbmVfZmxhZ19pZigkMSwg
JDIsIEZMQUcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdvcmsgYXJv
dW5kIHRoZSBpbXBvc3NpYmlsaXR5IHRvIGRlZmluZSBtYWNyb3MgaW5zaWRlIG1hY3JvcywKKyMg
YmVjYXVzZSBpc3N1aW5nICdbJDFdJyBpcyBub3QgcG9zc2libGUgaW4gTTQuICBHTlUgTTQgc2hv
dWxkIHByb3ZpZGUKKyMgJCQxIGEgbGEgTTUvVGVYLgorbTRfZGVmaW5lKFtfYjRfZGVmaW5lX2Zs
YWdfaWZdLAorW200X2lmKFskMSQyXSwgJFsxXSRbMl0sIFtdLAorICAgICAgIFttNF9mYXRhbChb
JDA6IEludmFsaWQgYXJndW1lbnRzOiAkQF0pXSlkbmwKK200X2RlZmluZShbYjRfJDNfaWZdLAor
ICAgICAgICAgIFtiNF9mbGFnX2lmKFskM10sIFskMV0sIFskMl0pXSldKQorCisKKyMgYjRfRkxB
R19pZihJRi1UUlVFLCBJRi1GQUxTRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KyMgRXhwYW5kIElGLVRSVUUsIGlmIEZMQUcgaXMgdHJ1ZSwgSUYtRkFMU0Ugb3RoZXJ3aXNlLgor
YjRfZGVmaW5lX2ZsYWdfaWYoW2RlZmluZXNdKSAgICAgICAgICAgICMgV2hldGhlciBoZWFkZXJz
IGFyZSByZXF1ZXN0ZWQuCitiNF9kZWZpbmVfZmxhZ19pZihbZ2xyXSkgICAgICAgICAgICAgICAg
IyBXaGV0aGVyIGEgR0xSIHBhcnNlciBpcyByZXF1ZXN0ZWQuCitiNF9kZWZpbmVfZmxhZ19pZihb
bm9uZGV0ZXJtaW5pc3RpY10pICAgIyBXaGV0aGVyIGNvbmZsaWN0cyBzaG91bGQgYmUgaGFuZGxl
ZC4KK2I0X2RlZmluZV9mbGFnX2lmKFt0b2tlbl90YWJsZV0pICAgICAgICAjIFdoZXRoZXIgeXl0
b2tlbl90YWJsZSBpcyBkZW1hbmRlZC4KK2I0X2RlZmluZV9mbGFnX2lmKFt5YWNjXSkgICAgICAg
ICAgICAgICAjIFdoZXRoZXIgUE9TSVggWWFjYyBpcyBlbXVsYXRlZC4KKworCisjIGI0X2dscl9j
Y19pZihbSUYtVFJVRV0sIFtJRi1GQUxTRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X2dscl9jY19pZl0sCisgICAgICAgICAgW200X2lmKGI0
X3NrZWxldG9uLCBbImdsci5jYyJdLCAkQCldKQorCisKKyMjIC0tLS0tLS0tLSAjIworIyMgU3lt
Ym9scy4gICMjCisjIyAtLS0tLS0tLS0gIyMKKworIyBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUg
U3ltYm9sIGhhbmRsaW5nLCBzZWUgUkVBRE1FLgorIworIyBUaGUgZm9sbG93aW5nIG1hY3JvcyBw
cm92aWRlIGFjY2VzcyB0byBzeW1ib2wgcmVsYXRlZCB2YWx1ZXMuCisKKyMgX19iNF9zeW1ib2wo
TlVNLCBGSUVMRCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVjb3ZlciBhIEZJRUxE
IGFib3V0IHN5bWJvbCAjTlVNLiAgVGhhbmtzIHRvIG00X2luZGlyLCBmYWlscyBpZgorIyB1bmRl
ZmluZWQuCittNF9kZWZpbmUoW19fYjRfc3ltYm9sXSwKK1ttNF9pbmRpcihbYjRfc3ltYm9sKCQx
LCAkMildKV0pCisKKworIyBfYjRfc3ltYm9sKE5VTSwgRklFTEQpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgUmVjb3ZlciBhIEZJRUxEIGFib3V0IHN5bWJvbCAjTlVNIChvciAib3JpZyBO
VU0iKS4gIEZhaWxzIGlmCisjIHVuZGVmaW5lZC4KK200X2RlZmluZShbX2I0X3N5bWJvbF0sCitb
bTRfaWZkZWYoW2I0X3N5bWJvbCgkMSwgbnVtYmVyKV0sCisgICAgICAgICAgW19fYjRfc3ltYm9s
KG00X2luZGlyKFtiNF9zeW1ib2woJDEsIG51bWJlcildKSwgJDIpXSwKKyAgICAgICAgICBbX19i
NF9zeW1ib2woWyQxXSwgWyQyXSldKV0pCisKKworCisjIGI0X3N5bWJvbChOVU0sIEZJRUxEKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVjb3ZlciBhIEZJRUxEIGFib3V0IHN5bWJvbCAj
TlVNIChvciAib3JpZyBOVU0iKS4gIEZhaWxzIGlmCisjIHVuZGVmaW5lZC4gIElmIEZJRUxEID0g
aWQsIHByZXBlbmQgdGhlIHRva2VuIHByZWZpeC4KK200X2RlZmluZShbYjRfc3ltYm9sXSwKK1tt
NF9jYXNlKFskMl0sCisgICAgICAgICBbaWRdLCAgICBbbTRfZG8oW2I0X3BlcmNlbnRfZGVmaW5l
X2dldChbYXBpLnRva2VuLnByZWZpeF0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbX2I0
X3N5bWJvbChbJDFdLCBbaWRdKV0pXSwKKyAgICAgICAgIFtfYjRfc3ltYm9sKCRAKV0pXSkKKwor
CisjIGI0X3N5bWJvbF9pZihOVU0sIEZJRUxELCBJRi1UUlVFLCBJRi1GQUxTRSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBGSUVMRCBhYm91dCBz
eW1ib2wgI05VTSBpcyAxIGV4cGFuZCBJRi1UUlVFLCBpZiBpcyAwLCBleHBhbmQgSUYtRkFMU0Uu
CisjIE90aGVyd2lzZSBhbiBlcnJvci4KK200X2RlZmluZShbYjRfc3ltYm9sX2lmXSwKK1ttNF9j
YXNlKGI0X3N5bWJvbChbJDFdLCBbJDJdKSwKKyAgICAgICAgIFsxXSwgWyQzXSwKKyAgICAgICAg
IFswXSwgWyQ0XSwKKyAgICAgICAgIFttNF9mYXRhbChbJDA6IGZpZWxkICQyIG9mICQxIGlzIG5v
dCBhIEJvb2xlYW46XSBiNF9zeW1ib2woWyQxXSwgWyQyXSkpXSldKQorCisKKyMgYjRfc3ltYm9s
X3RhZ19jb21tZW50KFNZTUJPTC1OVU0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBJc3N1ZSBhIGNvbW1lbnQgZ2l2aW5nIHRoZSB0YWcgb2Ygc3ltYm9sIE5VTS4KK200
X2RlZmluZShbYjRfc3ltYm9sX3RhZ19jb21tZW50XSwKK1tiNF9jb21tZW50KFtiNF9zeW1ib2wo
WyQxXSwgW3RhZ10pXSkKK10pCisKKworIyBiNF9zeW1ib2xfYWN0aW9uX2xvY2F0aW9uKFNZTUJP
TC1OVU0sIEtJTkQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgUmVwb3J0IHRoZSBsb2NhdGlvbiBvZiB0aGUgS0lORCBhY3Rpb24gYXMgRklMRTpMSU5F
LgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfYWN0aW9uX2xvY2F0aW9uXSwKK1tiNF9zeW1ib2woWyQx
XSwgWyQyX2ZpbGVdKTpiNF9zeW5jbGluZShbYjRfc3ltYm9sKFskMV0sIFskMl9saW5lXSldKV0p
CisKKworIyBiNF9zeW1ib2xfYWN0aW9uKFNZTUJPTC1OVU0sIEtJTkQpCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUnVuIHRoZSBhY3Rpb24gS0lORCAoZGVzdHJ1Y3Rv
ciBvciBwcmludGVyKSBmb3IgU1lNQk9MLU5VTS4KK200X2RlZmluZShbYjRfc3ltYm9sX2FjdGlv
bl0sCitbYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfJDJdLAorW2I0X2RvbGxhcl9wdXNoZGVmKFso
Knl5dmFsdWVwKV0sCisgICAgICAgICAgICAgICAgICAgWyQxXSwKKyAgICAgICAgICAgICAgICAg
ICBbXSwKKyAgICAgICAgICAgICAgICAgICBbKCp5eWxvY2F0aW9ucCldKWRubAorICAgIF9iNF9z
eW1ib2xfY2FzZShbJDFdKVtdZG5sCitiNF9zeW5jbGluZShbYjRfc3ltYm9sKFskMV0sIFskMl9s
aW5lXSldLCBbYjRfc3ltYm9sKFskMV0sIFskMl9maWxlXSldKQorICAgICAgYjRfc3ltYm9sKFsk
MV0sIFskMl0pCitiNF9zeW5jbGluZShbQG9saW5lQF0sIFtAb2ZpbGVAXSkKKyAgICAgICAgYnJl
YWs7CisKK2I0X2RvbGxhcl9wb3BkZWZbXWRubAorXSldKQorCisKKyMgYjRfc3ltYm9sX2Rlc3Ry
dWN0b3IoU1lNQk9MLU5VTSkKKyMgYjRfc3ltYm9sX3ByaW50ZXIoU1lNQk9MLU5VTSkKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfc3ltYm9sX2Rlc3Ry
dWN0b3JdLCBbYjRfc3ltYm9sX2FjdGlvbihbJDFdLCBbZGVzdHJ1Y3Rvcl0pXSkKK200X2RlZmlu
ZShbYjRfc3ltYm9sX3ByaW50ZXJdLCAgICBbYjRfc3ltYm9sX2FjdGlvbihbJDFdLCBbcHJpbnRl
cl0pXSkKKworCisjIGI0X3N5bWJvbF9hY3Rpb25zKEtJTkQsIFtUWVBFID0geXl0eXBlXSkKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbWl0IHRoZSBzeW1i
b2wgYWN0aW9ucyBmb3IgS0lORCAoInByaW50ZXIiIG9yICJkZXN0cnVjdG9yIikuCisjIERpc3Bh
dGNoIG9uIFRZUEUuCittNF9kZWZpbmUoW2I0X3N5bWJvbF9hY3Rpb25zXSwKK1ttNF9wdXNoZGVm
KFtiNF9hY3Rpb25zX10sIG00X2V4cGFuZChbYjRfc3ltYm9sX2ZvcmVhY2goW2I0X3N5bWJvbF8k
MV0pXSkpZG5sCittNF9pZnZhbChtNF9kZWZuKFtiNF9hY3Rpb25zX10pLAorW3N3aXRjaCAobTRf
ZGVmYXVsdChbJDJdLCBbeXl0eXBlXSkpCisgICAgeworbTRfZGVmbihbYjRfYWN0aW9uc19dKVtd
ZG5sCisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9ZG5sCitdLAorW1lZVVNF
IChtNF9kZWZhdWx0KFskMl0sIFt5eXR5cGVdKSk7XSlkbmwKK200X3BvcGRlZihbYjRfYWN0aW9u
c19dKWRubAorXSkKKworIyBfYjRfc3ltYm9sX2Nhc2UoU1lNQk9MLU5VTSkKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIElzc3VlIGEgImNhc2UgTlVNIiBmb3IgU1lNQk9MLU5VTS4g
IEVuZHMgd2l0aCBpdHMgRU9MIHRvIG1ha2UgaXQKKyMgZWFzaWVyIHRvIHVzZSB3aXRoIG00X21h
cCwgYnV0IHRoZW4sIHVzZSBbXWRubCB0byBzdXBwcmVzcyB0aGUgbGFzdAorIyBvbmUuCittNF9k
ZWZpbmUoW19iNF9zeW1ib2xfY2FzZV0sCitbY2FzZSBiNF9zeW1ib2woWyQxXSwgW251bWJlcl0p
OiBiNF9zeW1ib2xfdGFnX2NvbW1lbnQoWyQxXSldKQorXSkKKworCisjIGI0X3N5bWJvbF9mb3Jl
YWNoKE1BQ1JPKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW52b2tlIE1BQ1JPKFNZ
TUJPTC1OVU0pIGZvciBlYWNoIFNZTUJPTC1OVU0uCittNF9kZWZpbmUoW2I0X3N5bWJvbF9mb3Jl
YWNoXSwKKyAgICAgICAgICBbbTRfbWFwKFskMV0sIG00X2RlZm4oW2I0X3N5bWJvbF9udW1iZXJz
XSkpXSkKKworIyBiNF9zeW1ib2xfbWFwKE1BQ1JPKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBSZXR1cm4gYSBsaXN0IChwb3NzaWJseSBlbXB0eSBlbGVtZW50cykgb2YgTUFDUk8gaW52b2tl
ZCBmb3IgZWFjaAorIyBTWU1CT0wtTlVNLgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfbWFwXSwKK1tt
NF9tYXBfYXJnc19zZXAoWyQxKF0sIFspXSwgWyxdLCBiNF9zeW1ib2xfbnVtYmVycyldKQorCisK
KyMgYjRfdG9rZW5fdmlzaWJsZV9pZihOVU0sIElGLVRSVUUsIElGLUZBTFNFKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdoZXRoZXIgTlVNIGRlbm90
ZXMgYSB0b2tlbiB0aGF0IGhhcyBhbiBleHBvcnRlZCBkZWZpbml0aW9uIChpLmUuLAorIyBzaG93
cyBpbiBlbnVtIHl5dG9rZW50eXBlKS4KK200X2RlZmluZShbYjRfdG9rZW5fdmlzaWJsZV9pZl0s
CitbYjRfc3ltYm9sX2lmKFskMV0sIFtpc190b2tlbl0sCisgICAgICAgICAgICAgIFtiNF9zeW1i
b2xfaWYoWyQxXSwgW2hhc19pZF0sIFskMl0sIFskM10pXSwKKyAgICAgICAgICAgICAgWyQzXSld
KQorCisjIGI0X3Rva2VuX2hhc19kZWZpbml0aW9uKE5VTSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyAxIGlmIE5VTSBpcyB2aXNpYmxlLCBub3RoaW5nIG90aGVyd2lzZS4KK200
X2RlZmluZShbYjRfdG9rZW5faGFzX2RlZmluaXRpb25dLAorW2I0X3Rva2VuX3Zpc2libGVfaWYo
WyQxXSwgWzFdKV0pCisKKyMgYjRfYW55X3Rva2VuX3Zpc2libGVfaWYoW0lGLVRSVUVdLCBbSUYt
RkFMU0VdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIFdoZXRoZXIgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IG5lZWRzIHRvIGJlIGRlZmluZWQuCitt
NF9kZWZpbmUoW2I0X2FueV90b2tlbl92aXNpYmxlX2lmXSwKK1ttNF9pZnZhbChiNF9zeW1ib2xf
Zm9yZWFjaChbYjRfdG9rZW5faGFzX2RlZmluaXRpb25dKSwKKyAgICAgICAgICBbJDFdLCBbJDJd
KV0pCisKKworIyBiNF90b2tlbl9mb3JtYXQoRk9STUFULCBOVU0pCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfdG9rZW5fZm9ybWF0XSwKK1tiNF90b2tlbl92
aXNpYmxlX2lmKFskMl0sCitbbTRfcXVvdGUobTRfZm9ybWF0KFskMV0sCisgICAgICAgICAgICAg
ICAgICAgICBbYjRfc3ltYm9sKFskMl0sIFtpZF0pXSwKKyAgICAgICAgICAgICAgICAgICAgIFti
NF9zeW1ib2woWyQyXSwgW3VzZXJfbnVtYmVyXSldKSldKV0pCisKKworIyMgLS0tLS0tLSAjIwor
IyMgVHlwZXMuICAjIworIyMgLS0tLS0tLSAjIworCisjIF9iNF90eXBlX2FjdGlvbihOVU1TKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUnVuIGFjdGlvbnMgZm9yIHRoZSBzeW1ib2wgTlVN
UyB0aGF0IGFsbCBoYXZlIHRoZSBzYW1lIHR5cGUtbmFtZS4KKyMgU2tpcCBOVU1TIHRoYXQgaGF2
ZSBubyB0eXBlLW5hbWUuCisjCisjIFRvIHNwZWNpZnkgdGhlIGFjdGlvbiB0byBydW4sIGRlZmlu
ZSBiNF9kb2xsYXJfZG9sbGFyKFNZTUJPTC1OVU0sCisjIFRBRywgVFlQRSkuCittNF9kZWZpbmUo
W19iNF90eXBlX2FjdGlvbl0sCitbYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfdHlwZV0sCitbbTRf
bWFwKFsgICAgICBfYjRfc3ltYm9sX2Nhc2VdLCBbJEBdKVtdZG5sCisgICAgICAgIGI0X2RvbGxh
cl9kb2xsYXIoW2I0X3N5bWJvbChbJDFdLCBbbnVtYmVyXSldLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtiNF9zeW1ib2woWyQxXSwgW3RhZ10pXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBbYjRfc3ltYm9sKFskMV0sIFt0eXBlXSldKTsKKyAgICAgICAgYnJlYWs7CisKK10pXSkKKwor
IyBiNF90eXBlX2ZvcmVhY2goTUFDUk8pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW52
b2tlIE1BQ1JPKFNZTUJPTC1OVU1TKSBmb3IgZWFjaCBzZXQgb2YgU1lNQk9MLU5VTVMgZm9yIGVh
Y2ggdHlwZSBzZXQuCittNF9kZWZpbmUoW2I0X3R5cGVfZm9yZWFjaF0sCisgICAgICAgICAgW200
X21hcChbJDFdLCBtNF9kZWZuKFtiNF90eXBlX25hbWVzXSkpXSkKKworCisKKyMjIC0tLS0tLS0t
LS0tICMjCisjIyBTeW5jbGluZXMuICAjIworIyMgLS0tLS0tLS0tLS0gIyMKKworIyBiNF9iYXNl
bmFtZShOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBTaW1pbGFyIHRvIFBPU0lYIGJhc2Vu
YW1lOyB0aGUgZGlmZmVyZW5jZXMgZG9uJ3QgbWF0dGVyIGhlcmUuCisjIEJld2FyZSB0aGF0IE5B
TUUgaXMgbm90IGV2YWx1YXRlZC4KK200X2RlZmluZShbYjRfYmFzZW5hbWVdLAorW200X2JwYXRz
dWJzdChbJDFdLCBbXi4qL1woW14vXStcKS8qJF0sIFtcMV0pXSkKKworCisjIGI0X3N5bmNsaW5l
KExJTkUsIEZJTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X3N5
bmNsaW5lXSwKK1tiNF9mbGFnX2lmKFtzeW5jbGluZXNdLAorW2I0X3N5bmNfc3RhcnQoWyQxXSwg
WyQyXSkgYjRfc3luY19lbmQoW19fbGluZV9fXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtiNF9iYXNlbmFtZShtNF9xdW90ZShfX2ZpbGVfXykpXSlbXWRubAorXSld
KQorCisjIGI0X3N5bmNfc3RhcnQoTElORSwgRklMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgU3luY2xpbmUgZm9yIHRoZSBuZXcgcGxhY2UuICBUeXBpY2FsbHkgYSBkaXJlY3RpdmUg
Zm9yIHRoZSBjb21waWxlci4KK200X2RlZmluZShbYjRfc3luY19zdGFydF0sIFtiNF9jb21tZW50
KFskMjokMV0pXSkKKworIyBiNF9zeW5jX2VuZChMSU5FLCBGSUxFKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBTeW5jbGluZSBmb3IgdGhlIGN1cnJlbnQgcGxhY2UsIHdoaWNoIGVuZHMu
ICBUeXBpY2FsbHkgYSBjb21tZW50CisjIGxlZnQgZm9yIHRoZSByZWFkZXIuCittNF9kZWZpbmUo
W2I0X3N5bmNfZW5kXSwgICBbYjRfY29tbWVudChbJDI6JDFdKV0pCisKKworIyBiNF91c2VyX2Nv
ZGUoVVNFUi1DT0RFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbWl0IGNvZGUgZnJv
bSB0aGUgdXNlciwgZW5kaW5nIGl0IHdpdGggc3luY2xpbmVzLgorbTRfZGVmaW5lKFtiNF91c2Vy
X2NvZGVdLAorWyQxCitiNF9zeW5jbGluZShbQG9saW5lQF0sIFtAb2ZpbGVAXSldKQorCisKKyMg
YjRfZGVmaW5lX3VzZXJfY29kZShNQUNSTywgQ09NTUVOVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgRnJvbSBiNF9NQUNSTywgaWYgZGVmaW5lZCwgYnVpbGQgYjRf
dXNlcl9NQUNSTyB0aGF0IGluY2x1ZGVzIHRoZSBzeW5jbGluZXMuCittNF9kZWZpbmUoW2I0X2Rl
ZmluZV91c2VyX2NvZGVdLAorW200X2RlZmluZShbYjRfdXNlcl8kMV0sCisgICAgICAgICAgIFtt
NF9pZmRlZihbYjRfJDFdLAorICAgICAgICAgICAgICAgICAgICAgW200X2lmdmFsKFskMl0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2I0X2NvbW1lbnQoWyQyXSkKK10pYjRfdXNl
cl9jb2RlKFtiNF8kMV0pXSldKV0pCisKKyMgYjRfdXNlcl9hY3Rpb25zCisjIGI0X3VzZXJfaW5p
dGlhbF9hY3Rpb24KKyMgYjRfdXNlcl9wb3N0X3Byb2xvZ3VlCisjIGI0X3VzZXJfcHJlX3Byb2xv
Z3VlCisjIGI0X3VzZXJfdW5pb25fbWVtYmVycworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IE1hY3JvcyB0aGF0IGlzc3VlIHVzZXIgY29kZSwgZW5kaW5nIHdpdGggc3luY2xpbmVzLgorYjRf
ZGVmaW5lX3VzZXJfY29kZShbYWN0aW9uc10pCitiNF9kZWZpbmVfdXNlcl9jb2RlKFtpbml0aWFs
X2FjdGlvbl0sIFtVc2VyIGluaXRpYWxpemF0aW9uIGNvZGUuXSkKK2I0X2RlZmluZV91c2VyX2Nv
ZGUoW3Bvc3RfcHJvbG9ndWVdLCBbU2Vjb25kIHBhcnQgb2YgdXNlciBwcm9sb2d1ZS5dKQorYjRf
ZGVmaW5lX3VzZXJfY29kZShbcHJlX3Byb2xvZ3VlXSwgW0ZpcnN0IHBhcnQgb2YgdXNlciBwcm9s
b2d1ZS5dKQorYjRfZGVmaW5lX3VzZXJfY29kZShbdW5pb25fbWVtYmVyc10pCisKKworIyBiNF9j
aGVja191c2VyX25hbWVzKFdIQVQsIFVTRVItTElTVCwgQklTT04tTkFNRVNQQUNFKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21w
bGFpbiBpZiBhbnkgbmFtZSBvZiB0eXBlIFdIQVQgaXMgdXNlZCBieSB0aGUgdXNlciAoYXMgcmVj
b3JkZWQgaW4KKyMgVVNFUi1MSVNUKSBidXQgaXMgbm90IHVzZWQgYnkgQmlzb24gKGFzIHJlY29y
ZGVkIGJ5IG1hY3JvcyBpbiB0aGUKKyMgbmFtZXNwYWNlIEJJU09OLU5BTUVTUEFDRSkuCisjCisj
IFVTRVItTElTVCBtdXN0IGV4cGFuZCB0byBhIGxpc3Qgc3BlY2lmeWluZyBhbGwgdXNlciBvY2N1
cnJlbmNlcyBvZiBhbGwgbmFtZXMKKyMgb2YgdHlwZSBXSEFULiAgIEVhY2ggaXRlbSBpbiB0aGUg
bGlzdCBtdXN0IGJlIGEgdHJpcGxldCBzcGVjaWZ5aW5nIG9uZQorIyBvY2N1cnJlbmNlOiBuYW1l
LCBzdGFydCBib3VuZGFyeSwgYW5kIGVuZCBib3VuZGFyeS4gIEVtcHR5IHN0cmluZyBuYW1lcyBh
cmUKKyMgZmluZS4gIEFuIGVtcHR5IGxpc3QgaXMgZmluZS4KKyMKKyMgRm9yIGV4YW1wbGUsIHRv
IGRlZmluZSBiNF9mb29fdXNlcl9uYW1lcyB0byBiZSB1c2VkIGZvciBVU0VSLUxJU1Qgd2l0aCB0
aHJlZQorIyBuYW1lIG9jY3VycmVuY2VzIGFuZCB3aXRoIGNvcnJlY3QgcXVvdGluZzoKKyMKKyMg
ICBtNF9kZWZpbmUoW2I0X2Zvb191c2VyX25hbWVzXSwKKyMgICAgICAgICAgICAgW1tbW1tbYmFy
XV0sIFtbcGFyc2VyLnk6MS43XV0sIFtbcGFyc2VyLnk6MS4xNl1dXV0sCisjICAgICAgICAgICAg
ICAgW1tbW2Jhcl1dLCBbW3BhcnNlci55OjUuN11dLCBbW3BhcnNlci55OjUuMTZdXV1dLAorIyAg
ICAgICAgICAgICAgIFtbW1tiYXpdXSwgW1twYXJzZXIueTo4LjddXSwgW1twYXJzZXIueTo4LjE2
XV1dXV1dKQorIworIyBUaGUgbWFjcm8gQklTT04tTkFNRVNQQUNFKGJhcikgbXVzdCBiZSBkZWZp
bmVkIGlmZiB0aGUgbmFtZSBiYXIgb2YgdHlwZSBXSEFUCisjIGlzIHVzZWQgYnkgQmlzb24gKGlu
IHRoZSBmcm9udC1lbmQgb3IgaW4gdGhlIHNrZWxldG9uKS4gIEVtcHR5IHN0cmluZyBuYW1lcwor
IyBhcmUgZmluZSwgYnV0IGl0IHdvdWxkIGJlIHVnbHkgZm9yIEJpc29uIHRvIGFjdHVhbGx5IHVz
ZSBvbmUuCisjCisjIEZvciBleGFtcGxlLCB0byB1c2UgYjRfZm9vX2Jpc29uX25hbWVzIGZvciBC
SVNPTi1OQU1FU1BBQ0UgYW5kIGRlZmluZSB0aGF0CisjIHRoZSBuYW1lcyBiYXIgYW5kIGJheiBh
cmUgdXNlZCBieSBCaXNvbjoKKyMKKyMgICBtNF9kZWZpbmUoW2I0X2Zvb19iaXNvbl9uYW1lcyhi
YXIpXSkKKyMgICBtNF9kZWZpbmUoW2I0X2Zvb19iaXNvbl9uYW1lcyhiYXopXSkKKyMKKyMgVG8g
aW52b2tlIGI0X2NoZWNrX3VzZXJfbmFtZXMgd2l0aCBUWVBFIGZvbywgd2l0aCBVU0VSLUxJU1QK
KyMgYjRfZm9vX3VzZXJfbmFtZXMsIHdpdGggQklTT04tTkFNRVNQQUNFIGI0X2Zvb19iaXNvbl9u
YW1lcywgYW5kIHdpdGggY29ycmVjdAorIyBxdW90aW5nOgorIworIyAgIGI0X2NoZWNrX3VzZXJf
bmFtZXMoW1tmb29dXSwgW2I0X2Zvb191c2VyX25hbWVzXSwKKyMgICAgICAgICAgICAgICAgICAg
ICAgIFtbYjRfZm9vX2Jpc29uX25hbWVzXV0pCittNF9kZWZpbmUoW2I0X2NoZWNrX3VzZXJfbmFt
ZXNdLAorW200X2ZvcmVhY2goW2I0X29jY3VycmVuY2VdLCAkMiwKK1ttNF9wdXNoZGVmKFtiNF9v
Y2N1cnJlbmNlXSwgYjRfb2NjdXJyZW5jZSlkbmwKK200X3B1c2hkZWYoW2I0X3VzZXJfbmFtZV0s
IG00X2NhcihiNF9vY2N1cnJlbmNlKSlkbmwKK200X3B1c2hkZWYoW2I0X3N0YXJ0XSwgbTRfY2Fy
KG00X3NoaWZ0KGI0X29jY3VycmVuY2UpKSlkbmwKK200X3B1c2hkZWYoW2I0X2VuZF0sIG00X3No
aWZ0KG00X3NoaWZ0KGI0X29jY3VycmVuY2UpKSlkbmwKK200X2lmbmRlZigkM1soXW00X3F1b3Rl
KGI0X3VzZXJfbmFtZSlbKV0sCisgICAgICAgICAgW2I0X2NvbXBsYWluX2F0KFtiNF9zdGFydF0s
IFtiNF9lbmRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbWyVzICclcycgaXMgbm90IHVz
ZWRdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyQxXSwgW2I0X3VzZXJfbmFtZV0pXSlb
XWRubAorbTRfcG9wZGVmKFtiNF9vY2N1cnJlbmNlXSlkbmwKK200X3BvcGRlZihbYjRfdXNlcl9u
YW1lXSlkbmwKK200X3BvcGRlZihbYjRfc3RhcnRdKWRubAorbTRfcG9wZGVmKFtiNF9lbmRdKWRu
bAorXSldKQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBiNF9wZXJjZW50
X2RlZmluZV8qLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgYjRfcGVy
Y2VudF9kZWZpbmVfdXNlKFZBUklBQkxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIERlY2xhcmUgdGhhdCBWQVJJQUJMRSB3YXMgdXNlZC4KK200X2RlZmluZShbYjRfcGVy
Y2VudF9kZWZpbmVfdXNlXSwKK1ttNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2Jpc29uX3Zh
cmlhYmxlcyhdJDFbKV0pZG5sCitdKQorCisjIGI0X3BlcmNlbnRfZGVmaW5lX2dldChWQVJJQUJM
RSwgW0RFRkFVTFRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5lX2dldCBpbiAuLi9zcmMvbXVzY2xlLXRh
Yi5oLiAgVGhhdCBpcywgaWYKKyMgdGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgZGVm
aW5lZCwgZW1pdCBpdHMgdmFsdWUuICBDb250cmFyeQorIyB0byBpdHMgQyBjb3VudGVycGFydCwg
cmV0dXJuIERFRkFVTFQgb3RoZXJ3aXNlLiAgQWxzbywgcmVjb3JkCisjIEJpc29uJ3MgdXNhZ2Ug
b2YgVkFSSUFCTEUgYnkgZGVmaW5pbmcKKyMgYjRfcGVyY2VudF9kZWZpbmVfYmlzb25fdmFyaWFi
bGVzKFZBUklBQkxFKS4KKyMKKyMgRm9yIGV4YW1wbGU6CisjCisjICAgYjRfcGVyY2VudF9kZWZp
bmVfZ2V0KFtbZm9vXV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2dldF0sCitbYjRf
cGVyY2VudF9kZWZpbmVfdXNlKFskMV0pZG5sCitfYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoWyQx
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbbTRfaW5kaXIoW2I0X3BlcmNlbnRfZGVmaW5l
KF0kMVspXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFskMl0pXSkKKworIyBiNF9wZXJj
ZW50X2RlZmluZV9nZXRfbG9jKFZBUklBQkxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBNaW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyBpbiAuLi9z
cmMvbXVzY2xlLXRhYi5oIGV4YWN0bHkuICBUaGF0IGlzLAorIyBpZiB0aGUgJWRlZmluZSB2YXJp
YWJsZSBWQVJJQUJMRSBpcyB1bmRlZmluZWQsIGNvbXBsYWluIGZhdGFsbHkgc2luY2UgdGhhdCdz
CisjIGEgQmlzb24gb3Igc2tlbGV0b24gZXJyb3IuICBPdGhlcndpc2UsIHJldHVybiBpdHMgZGVm
aW5pdGlvbiBsb2NhdGlvbiBpbiBhCisjIGZvcm0gYXBwcm9wcmlhdGUgZm9yIHRoZSBmaXJzdCB0
d28gYXJndW1lbnRzIG9mIGI0X3dhcm5fYXQsIGI0X2NvbXBsYWluX2F0LCBvcgorIyBiNF9mYXRh
bF9hdC4gIERvbid0IHJlY29yZCB0aGlzIGFzIGEgQmlzb24gdXNhZ2Ugb2YgVkFSSUFCTEUgYXMg
dGhlcmUncyBubworIyByZWFzb24gdG8gc3VzcGVjdCB0aGF0IHRoZSB1c2VyLXN1cHBsaWVkIHZh
bHVlIGhhcyB5ZXQgaW5mbHVlbmNlZCB0aGUgb3V0cHV0LgorIworIyBGb3IgZXhhbXBsZToKKyMK
KyMgICBiNF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFtbZm9vXV0pLCBb
W2ludmFsaWQgZm9vXV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2NdLAor
W200X2lmZGVmKFtiNF9wZXJjZW50X2RlZmluZV9sb2MoXSQxWyldLAorICAgICAgICAgIFttNF9w
dXNoZGVmKFtiNF9sb2NdLCBtNF9pbmRpcihbYjRfcGVyY2VudF9kZWZpbmVfbG9jKF0kMVspXSkp
ZG5sCitiNF9sb2NbXWRubAorbTRfcG9wZGVmKFtiNF9sb2NdKV0sCisgICAgICAgICAgW2I0X2Zh
dGFsKFtbJDA6IHVuZGVmaW5lZCAlJWRlZmluZSB2YXJpYWJsZSAnJXMnXV0sIFskMV0pXSldKQor
CisjIGI0X3BlcmNlbnRfZGVmaW5lX2dldF9raW5kKFZBUklBQkxFKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR2V0IHRoZSBraW5kIChjb2RlLCBrZXl3b3JkLCBz
dHJpbmcpIG9mIFZBUklBQkxFLCBpLmUuLCBob3cgaXRzCisjIHZhbHVlIHdhcyBkZWZpbmVkIChi
cmFjZXMsIG5vdCBkZWxpbWl0ZXJzLCBxdW90ZXMpLgorIworIyBJZiB0aGUgJWRlZmluZSB2YXJp
YWJsZSBWQVJJQUJMRSBpcyB1bmRlZmluZWQsIGNvbXBsYWluIGZhdGFsbHkKKyMgc2luY2UgdGhh
dCdzIGEgQmlzb24gb3Igc2tlbGV0b24gZXJyb3IuICBEb24ndCByZWNvcmQgdGhpcyBhcyBhCisj
IEJpc29uIHVzYWdlIG9mIFZBUklBQkxFIGFzIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHN1c3BlY3Qg
dGhhdCB0aGUKKyMgdXNlci1zdXBwbGllZCB2YWx1ZSBoYXMgeWV0IGluZmx1ZW5jZWQgdGhlIG91
dHB1dC4KK200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2tpbmRdLAorW200X2lmZGVm
KFtiNF9wZXJjZW50X2RlZmluZV9raW5kKF0kMVspXSwKKyAgICAgICAgICBbbTRfaW5kaXIoW2I0
X3BlcmNlbnRfZGVmaW5lX2tpbmQoXSQxWyldKV0sCisgICAgICAgICAgW2I0X2ZhdGFsKFtbJDA6
IHVuZGVmaW5lZCAlJWRlZmluZSB2YXJpYWJsZSAnJXMnXV0sIFskMV0pXSldKQorCisjIGI0X3Bl
cmNlbnRfZGVmaW5lX2dldF9zeW5jbGluZShWQVJJQUJMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNaW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfZ2V0
X3N5bmNsaW5lIGluIC4uL3NyYy9tdXNjbGUtdGFiLmggZXhhY3RseS4KKyMgVGhhdCBpcywgaWYg
dGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgdW5kZWZpbmVkLCBjb21wbGFpbiBmYXRh
bGx5CisjIHNpbmNlIHRoYXQncyBhIEJpc29uIG9yIHNrZWxldG9uIGVycm9yLiAgT3RoZXJ3aXNl
LCByZXR1cm4gaXRzIGRlZmluaXRpb24KKyMgbG9jYXRpb24gYXMgYSBiNF9zeW5jbGluZSBpbnZv
Y2F0aW9uLiAgRG9uJ3QgcmVjb3JkIHRoaXMgYXMgYSBCaXNvbiB1c2FnZSBvZgorIyBWQVJJQUJM
RSBhcyB0aGVyZSdzIG5vIHJlYXNvbiB0byBzdXNwZWN0IHRoYXQgdGhlIHVzZXItc3VwcGxpZWQg
dmFsdWUgaGFzIHlldAorIyBpbmZsdWVuY2VkIHRoZSBvdXRwdXQuCisjCisjIEZvciBleGFtcGxl
OgorIworIyAgIGI0X3BlcmNlbnRfZGVmaW5lX2dldF9zeW5jbGluZShbW2Zvb11dKQorbTRfZGVm
aW5lKFtiNF9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmVdLAorW200X2lmZGVmKFtiNF9wZXJj
ZW50X2RlZmluZV9zeW5jbGluZShdJDFbKV0sCisgICAgICAgICAgW200X2luZGlyKFtiNF9wZXJj
ZW50X2RlZmluZV9zeW5jbGluZShdJDFbKV0pXSwKKyAgICAgICAgICBbYjRfZmF0YWwoW1skMDog
dW5kZWZpbmVkICUlZGVmaW5lIHZhcmlhYmxlICclcyddXSwgWyQxXSldKV0pCisKKyMgX2I0X3Bl
cmNlbnRfZGVmaW5lX2lmZGVmKFZBUklBQkxFLCBJRi1UUlVFLCBbSUYtRkFMU0VdKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYg
dGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgZGVmaW5lZCwgZXhwYW5kIElGLVRSVUUs
IGVsc2UgZXhwYW5kCisjIElGLUZBTFNFLiAgRG9uJ3QgcmVjb3JkIHVzYWdlIG9mIFZBUklBQkxF
LgorIworIyBGb3IgZXhhbXBsZToKKyMKKyMgICBfYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW1tm
b29dXSwgW1tpdCdzIGRlZmluZWRdXSwgW1tpdCdzIHVuZGVmaW5lZF1dKQorbTRfZGVmaW5lKFtf
YjRfcGVyY2VudF9kZWZpbmVfaWZkZWZdLAorW200X2lmZGVmKFtiNF9wZXJjZW50X2RlZmluZShd
JDFbKV0sCisgICAgICAgICAgWyQyXSwKKyAgICAgICAgICBbJDNdKV0pCisKKyMgYjRfcGVyY2Vu
dF9kZWZpbmVfaWZkZWYoVkFSSUFCTEUsIElGLVRSVUUsIFtJRi1GQUxTRV0pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNaW1pYyBt
dXNjbGVfcGVyY2VudF9kZWZpbmVfaWZkZWYgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5
LiAgVGhhdCBpcywKKyMgaWYgdGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgZGVmaW5l
ZCwgZXhwYW5kIElGLVRSVUUsIGVsc2UgZXhwYW5kCisjIElGLUZBTFNFLiAgQWxzbywgcmVjb3Jk
IEJpc29uJ3MgdXNhZ2Ugb2YgVkFSSUFCTEUgYnkgZGVmaW5pbmcKKyMgYjRfcGVyY2VudF9kZWZp
bmVfYmlzb25fdmFyaWFibGVzKFZBUklBQkxFKS4KKyMKKyMgRm9yIGV4YW1wbGU6CisjCisjICAg
YjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW1tmb29dXSwgW1tpdCdzIGRlZmluZWRdXSwgW1tpdCdz
IHVuZGVmaW5lZF1dKQorbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9pZmRlZl0sCitbX2I0
X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2I0
X3BlcmNlbnRfZGVmaW5lX3VzZShbJDFdKSQyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBb
JDNdKV0pCisKKworIyBiNF9wZXJjZW50X2RlZmluZV9jaGVja19maWxlX2NvbXBsYWluKFZBUklB
QkxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBXYXJuIGFib3V0ICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaGF2aW5nIGFuIGluY29ycmVj
dAorIyB2YWx1ZS4KK200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfZmlsZV9jb21w
bGFpbl0sCitbYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbJDFdKSwK
KyAgICAgICAgICAgICAgICBbWyUlZGVmaW5lIHZhcmlhYmxlICclcycgcmVxdWlyZXMgJ25vbmUn
IG9yICciLi4uIicgdmFsdWVzXV0sCisgICAgICAgICAgICAgICAgWyQxXSldKQorCisKKyMgYjRf
cGVyY2VudF9kZWZpbmVfY2hlY2tfZmlsZShNQUNSTywgVkFSSUFCTEUsIERFRkFVTFQpCisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJ
ZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRToKKyMgLSBpcyB1bmRlZmluZWQsIHRoZW4g
aWYgREVGQVVMVCBpcyBub24tZW1wdHksIGRlZmluZSBNQUNSTyB0byBERUZBVUxUCisjIC0gaXMg
YSBzdHJpbmcsIGRlZmluZSBNQUNSTyB0byBpdHMgdmFsdWUKKyMgLSBpcyB0aGUga2V5d29yZCAn
bm9uZScsIGRvIG5vdGhpbmcKKyMgLSBvdGhlcndpc2UsIHdhcm4gYWJvdXQgdGhlIGluY29ycmVj
dCB2YWx1ZS4KK200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfZmlsZV0sCitbYjRf
cGVyY2VudF9kZWZpbmVfaWZkZWYoWyQyXSwKKyAgW200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVf
Z2V0X2tpbmQoWyQyXSksCisgICAgW3N0cmluZ10sCisgICAgICAgICBbbTRfZGVmaW5lKFskMV0s
IGI0X3BlcmNlbnRfZGVmaW5lX2dldChbJDJdKSldLAorICAgIFtrZXl3b3JkXSwKKyAgICAgICAg
IFttNF9pZihiNF9wZXJjZW50X2RlZmluZV9nZXQoWyQyXSksIFtub25lXSwgW10sCisgICAgICAg
ICAgICAgICAgW2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2ZpbGVfY29tcGxhaW4oWyQyXSldKV0s
CisgICAgW2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2ZpbGVfY29tcGxhaW4oWyQyXSldKQorICAg
XSwKKyAgIFttNF9pZnZhbChbJDNdLAorICAgICAgICAgICAgIFttNF9kZWZpbmUoWyQxXSwgWyQz
XSldKV0pCitdKQorCisKKworIyMgLS0tLS0tLS0tICMjCisjIyBPcHRpb25zLiAgIyMKKyMjIC0t
LS0tLS0tLSAjIworCisKKyMgYjRfcGVyY2VudF9kZWZpbmVfZmxhZ19pZihWQVJJQUJMRSwgSUYt
VFJVRSwgW0lGLUZBTFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5lX2ZsYWdf
aWYgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5LiAgVGhhdCBpcywKKyMgaWYgdGhlICVk
ZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgZGVmaW5lZCB0byAiIiBvciAidHJ1ZSIsIGV4cGFu
ZCBJRi1UUlVFLgorIyBJZiBpdCBpcyBkZWZpbmVkIHRvICJmYWxzZSIsIGV4cGFuZCBJRi1GQUxT
RS4gIENvbXBsYWluIGlmIGl0IGlzIHVuZGVmaW5lZAorIyAoYSBCaXNvbiBvciBza2VsZXRvbiBl
cnJvciBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgaGF2ZSBiZWVuIHNldAorIyBhbHJl
YWR5KSBvciBkZWZpbmVkIHRvIGFueSBvdGhlciB2YWx1ZSAocG9zc2libHkgYSB1c2VyIGVycm9y
KS4gIEFsc28sIHJlY29yZAorIyBCaXNvbidzIHVzYWdlIG9mIFZBUklBQkxFIGJ5IGRlZmluaW5n
CisjIGI0X3BlcmNlbnRfZGVmaW5lX2Jpc29uX3ZhcmlhYmxlcyhWQVJJQUJMRSkuCisjCisjIEZv
ciBleGFtcGxlOgorIworIyAgIGI0X3BlcmNlbnRfZGVmaW5lX2ZsYWdfaWYoW1tmb29dXSwgW1tp
dCdzIHRydWVdXSwgW1tpdCdzIGZhbHNlXV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5l
X2ZsYWdfaWZdLAorW2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCisgIFttNF9jYXNlKGI0
X3BlcmNlbnRfZGVmaW5lX2dldChbJDFdKSwKKyAgICAgICAgICAgW10sIFskMl0sIFt0cnVlXSwg
WyQyXSwgW2ZhbHNlXSwgWyQzXSwKKyAgICAgICAgICAgW200X2V4cGFuZF9vbmNlKFtiNF9jb21w
bGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbaW52YWxpZCB2YWx1ZSBmb3IgJSVkZWZpbmUg
Qm9vbGVhbiB2YXJpYWJsZSAnJXMnXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWyQxXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tiNF9wZXJj
ZW50X2RlZmluZV9mbGFnX2lmKCQxKV1dKV0pXSwKKyAgW2I0X2ZhdGFsKFtbJDA6IHVuZGVmaW5l
ZCAlJWRlZmluZSB2YXJpYWJsZSAnJXMnXV0sIFskMV0pXSldKQorCisKKyMgYjRfcGVyY2VudF9k
ZWZpbmVfZGVmYXVsdChWQVJJQUJMRSwgREVGQVVMVCwgW0tJTkQgPSBrZXl3b3JkXSkKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQgaW4gLi4vc3JjL211c2Ns
ZS10YWIuaCBleGFjdGx5LiAgVGhhdCBpcywKKyMgaWYgdGhlICVkZWZpbmUgdmFyaWFibGUgVkFS
SUFCTEUgaXMgdW5kZWZpbmVkLCBzZXQgaXRzIHZhbHVlIHRvIERFRkFVTFQuCisjIERvbid0IHJl
Y29yZCB0aGlzIGFzIGEgQmlzb24gdXNhZ2Ugb2YgVkFSSUFCTEUgYXMgdGhlcmUncyBubyByZWFz
b24gdG8KKyMgc3VzcGVjdCB0aGF0IHRoZSB2YWx1ZSBoYXMgeWV0IGluZmx1ZW5jZWQgdGhlIG91
dHB1dC4KKyMKKyMgRm9yIGV4YW1wbGU6CisjCisjICAgYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVs
dChbW2Zvb11dLCBbW2RlZmF1bHQgdmFsdWVdXSkKK200X2RlZmluZShbYjRfcGVyY2VudF9kZWZp
bmVfZGVmYXVsdF0sCitbX2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sIFtdLAorICAgICAg
ICAgICBbbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZShdJDFbKV0sIFskMl0pZG5sCisgICAg
ICAgICAgICBtNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2tpbmQoXSQxWyldLAorICAgICAg
ICAgICAgICAgICAgICAgIFttNF9kZWZhdWx0KFskM10sIFtrZXl3b3JkXSldKWRubAorICAgICAg
ICAgICAgbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9sb2MoXSQxWyldLAorICAgICAgICAg
ICAgICAgICAgICAgIFtbW1s8c2tlbGV0b24gZGVmYXVsdCB2YWx1ZT46LTEuLTFdXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFtbPHNrZWxldG9uIGRlZmF1bHQgdmFsdWU+Oi0xLi0xXV1dXSlk
bmwKKyAgICAgICAgICAgIG00X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfc3luY2xpbmUoXSQx
WyldLCBbW11dKV0pXSkKKworCisjIGI0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZShOQU1FLCBb
VkFSSUFCTEUgPSBOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgYjRfTkFNRV9pZiB0aGF0IGV4ZWN1dGVzIGl0cyAk
MSBvciAkMiBkZXBlbmRpbmcgd2hldGhlcgorIyBWQVJJQUJMRSB3YXMgJWRlZmluZWQuICBUaGUg
Y2hhcmFjdGVycyAnLicgYW5kIGAtJyBpbiBWQVJJQUJMRSBhcmUgbWFwcGVkCisjIHRvICdfJy4K
K200X2RlZmluZShbX2I0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZV0sCitbbTRfZGVmaW5lKG00
X2JwYXRzdWJzdChbYjRfJDFfaWZdLCBbWy0uXV0sIFtfXSksCisgICAgICAgICAgIFtiNF9wZXJj
ZW50X2RlZmluZV9mbGFnX2lmKG00X2RlZmF1bHQoWyQyXSwgWyQxXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFskM10sIFskNF0pXSldKQorbTRfZGVmaW5lKFtiNF9w
ZXJjZW50X2RlZmluZV9pZl9kZWZpbmVdLAorW2I0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW200
X2RlZmF1bHQoWyQyXSwgWyQxXSldLCBbW2ZhbHNlXV0pCitfYjRfcGVyY2VudF9kZWZpbmVfaWZf
ZGVmaW5lKFskMV0sIFskMl0sICRbMV0sICRbMl0pXSkKKworCisjIGI0X3BlcmNlbnRfZGVmaW5l
X2NoZWNrX2tpbmQoVkFSSUFCTEUsIEtJTkQsIFtESUFHTk9TVElDID0gY29tcGxhaW5dKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZF0sCitb
X2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCisgIFttNF9pZihiNF9wZXJjZW50X2RlZmlu
ZV9nZXRfa2luZChbJDFdKSwgWyQyXSwgW10sCisgICAgW2I0X2Vycm9yKFttNF9kZWZhdWx0KFsk
M10sIFtjb21wbGFpbl0pXSwKKyAgICAgICAgICAgICAgYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xv
YyhbJDFdKSwKKyAgICAgICAgICAgICAgW200X2Nhc2UoWyQyXSwKKyAgICAgICAgICAgICAgICAg
W2NvZGVdLCAgICBbWyUlZGVmaW5lIHZhcmlhYmxlICclcycgcmVxdWlyZXMgJ3suLi59JyB2YWx1
ZXNdXSwKKyAgICAgICAgICAgICAgICAgW2tleXdvcmRdLCBbWyUlZGVmaW5lIHZhcmlhYmxlICcl
cycgcmVxdWlyZXMga2V5d29yZCB2YWx1ZXNdXSwKKyAgICAgICAgICAgICAgICAgW3N0cmluZ10s
ICBbWyUlZGVmaW5lIHZhcmlhYmxlICclcycgcmVxdWlyZXMgJyIuLi4iJyB2YWx1ZXNdXSldLAor
ICAgICAgICAgICAgICBbJDFdKV0pXSlkbmwKK10pCisKKworIyBiNF9wZXJjZW50X2RlZmluZV9j
aGVja192YWx1ZXMoVkFMVUVTKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBNaW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVzIGluIC4uL3Ny
Yy9tdXNjbGUtdGFiLmggZXhhY3RseQorIyBleGNlcHQgdGhhdCB0aGUgVkFMVUVTIHN0cnVjdHVy
ZSBpcyBtb3JlIGFwcHJvcHJpYXRlIGZvciBNNC4gIFRoYXQgaXMsIFZBTFVFUworIyBpcyBhIGxp
c3Qgb2Ygc3VibGlzdHMgb2Ygc3RyaW5ncy4gIEZvciBlYWNoIHN1Ymxpc3QsIHRoZSBmaXJzdCBz
dHJpbmcgaXMgdGhlCisjIG5hbWUgb2YgYSAlZGVmaW5lIHZhcmlhYmxlLCBhbmQgYWxsIHJlbWFp
bmluZyBzdHJpbmdzIGluIHRoYXQgc3VibGlzdCBhcmUgdGhlCisjIHZhbGlkIHZhbHVlcyBmb3Ig
dGhhdCB2YXJpYWJsZS4gIENvbXBsYWluIGlmIHN1Y2ggYSB2YXJpYWJsZSBpcyB1bmRlZmluZWQg
KGEKKyMgQmlzb24gZXJyb3Igc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGhhdmUgYmVl
biBzZXQgYWxyZWFkeSkgb3IgZGVmaW5lZAorIyB0byBhbnkgb3RoZXIgdmFsdWUgKHBvc3NpYmx5
IGEgdXNlciBlcnJvcikuICBEb24ndCByZWNvcmQgdGhpcyBhcyBhIEJpc29uCisjIHVzYWdlIG9m
IHRoZSB2YXJpYWJsZSBhcyB0aGVyZSdzIG5vIHJlYXNvbiB0byBzdXNwZWN0IHRoYXQgdGhlIHZh
bHVlIGhhcyB5ZXQKKyMgaW5mbHVlbmNlZCB0aGUgb3V0cHV0LgorIworIyBGb3IgZXhhbXBsZToK
KyMKKyMgICBiNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXMoW1tbW2Zvb11dLCBbW2Zvby12
YWx1ZTFdXSwgW1tmb28tdmFsdWUyXV1dXSwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW1tbW2Jhcl1dLCBbW2Jhci12YWx1ZTFdXV1dKQorbTRfZGVmaW5lKFtiNF9wZXJjZW50
X2RlZmluZV9jaGVja192YWx1ZXNdLAorW200X2ZvcmVhY2goW2I0X3N1Ymxpc3RdLCBtNF9xdW90
ZSgkQCksCisgICAgICAgICAgICBbX2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhiNF9z
dWJsaXN0KV0pXSkKKworbTRfZGVmaW5lKFtfYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVz
XSwKK1tfYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoWyQxXSwKKyAgW2I0X3BlcmNlbnRfZGVmaW5l
X2NoZWNrX2tpbmQoXSQxWywgW2tleXdvcmRdLCBbZGVwcmVjYXRlZF0pZG5sCisgICBtNF9wdXNo
ZGVmKFtiNF9nb29kX3ZhbHVlXSwgWzBdKWRubAorICAgbTRfaWYoJCMsIDEsIFtdLAorICAgICAg
ICAgW200X2ZvcmVhY2goW2I0X3ZhbHVlXSwgbTRfZHF1b3RlKG00X3NoaWZ0KCRAKSksCisgICAg
ICAgICAgICAgICAgICAgICBbbTRfaWYobTRfaW5kaXIoW2I0X3BlcmNlbnRfZGVmaW5lKF0kMVsp
XSksIGI0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttNF9kZWZpbmUoW2I0
X2dvb2RfdmFsdWVdLCBbMV0pXSldKV0pZG5sCisgICBtNF9pZihiNF9nb29kX3ZhbHVlLCBbMF0s
CisgICAgICAgICBbYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbJDFd
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbW2ludmFsaWQgdmFsdWUgZm9yICUlZGVmaW5l
IHZhcmlhYmxlICclcyc6ICclcyddXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJDFdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG00X2RxdW90ZShtNF9pbmRpcihbYjRfcGVyY2VudF9k
ZWZpbmUoXSQxWyldKSkpCisgICAgICAgICAgbTRfZm9yZWFjaChbYjRfdmFsdWVdLCBtNF9kcXVv
dGUobTRfc2hpZnQoJEApKSwKKyAgICAgICAgICAgICAgICAgICAgIFtiNF9lcnJvcihbW25vdGVd
XSwgYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbJDFdKSwgW10KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbW2FjY2VwdGVkIHZhbHVlOiAnJXMnXV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbTRfZHF1b3RlKGI0X3ZhbHVlKSldKV0pZG5sCisg
ICBtNF9wb3BkZWYoW2I0X2dvb2RfdmFsdWVdKV0sCisgIFtiNF9mYXRhbChbWyQwOiB1bmRlZmlu
ZWQgJSVkZWZpbmUgdmFyaWFibGUgJyVzJ11dLCBbJDFdKV0pXSkKKworIyBiNF9wZXJjZW50X2Nv
ZGVfZ2V0KFtRVUFMSUZJRVJdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBJZiBhbnkgJWNvZGUgYmxvY2tzIGZvciBRVUFMSUZJRVIgYXJlIGRlZmluZWQsIGVtaXQgdGhl
bSBiZWdpbm5pbmcgd2l0aCBhCisjIGNvbW1lbnQgYW5kIGVuZGluZyB3aXRoIHN5bmNsaW5lcyBh
bmQgYSBuZXdsaW5lLiAgSWYgUVVBTElGSUVSIGlzIG5vdAorIyBzcGVjaWZpZWQgb3IgZW1wdHks
IGRvIHRoaXMgZm9yIHRoZSB1bnF1YWxpZmllZCAlY29kZSBibG9ja3MuICBBbHNvLCByZWNvcmQK
KyMgQmlzb24ncyB1c2FnZSBvZiBRVUFMSUZJRVIgKGlmIHNwZWNpZmllZCkgYnkgZGVmaW5pbmcK
KyMgYjRfcGVyY2VudF9jb2RlX2Jpc29uX3F1YWxpZmllcnMoUVVBTElGSUVSKS4KKyMKKyMgRm9y
IGV4YW1wbGUsIHRvIGVtaXQgYW55IHVucXVhbGlmaWVkICVjb2RlIGJsb2NrcyBmb2xsb3dlZCBi
eSBhbnkgJWNvZGUKKyMgYmxvY2tzIGZvciB0aGUgcXVhbGlmaWVyIGZvbzoKKyMKKyMgICBiNF9w
ZXJjZW50X2NvZGVfZ2V0CisjICAgYjRfcGVyY2VudF9jb2RlX2dldChbW2Zvb11dKQorbTRfZGVm
aW5lKFtiNF9wZXJjZW50X2NvZGVfZ2V0XSwKK1ttNF9wdXNoZGVmKFtiNF9tYWNyb19uYW1lXSwg
W1tiNF9wZXJjZW50X2NvZGUoXSQxWyldXSlkbmwKK200X2lmdmFsKFskMV0sIFttNF9kZWZpbmUo
W2I0X3BlcmNlbnRfY29kZV9iaXNvbl9xdWFsaWZpZXJzKF0kMVspXSldKWRubAorbTRfaWZkZWYo
YjRfbWFjcm9fbmFtZSwKK1tiNF9jb21tZW50KFttNF9pZihbJCNdLCBbMF0sIFtbVW5xdWFsaWZp
ZWQgJWNvZGVdXSwKKyAgICAgICAgICAgICAgICAgICBbWyIlY29kZSBdJDFbIl1dKVsgYmxvY2tz
Ll1dKQorYjRfdXNlcl9jb2RlKFttNF9pbmRpcihiNF9tYWNyb19uYW1lKV0pCitdKWRubAorbTRf
cG9wZGVmKFtiNF9tYWNyb19uYW1lXSldKQorCisjIGI0X3BlcmNlbnRfY29kZV9pZmRlZihRVUFM
SUZJRVIsIElGLVRSVUUsIFtJRi1GQUxTRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIGFueSAlY29kZSBibG9ja3MgZm9yIFFV
QUxJRklFUiAob3IgdW5xdWFsaWZpZWQgJWNvZGUgYmxvY2tzIGlmCisjIFFVQUxJRklFUiBpcyBl
bXB0eSkgYXJlIGRlZmluZWQsIGV4cGFuZCBJRi1UUlVFLCBlbHNlIGV4cGFuZCBJRi1GQUxTRS4K
KyMgQWxzbywgcmVjb3JkIEJpc29uJ3MgdXNhZ2Ugb2YgUVVBTElGSUVSIChpZiBzcGVjaWZpZWQp
IGJ5IGRlZmluaW5nCisjIGI0X3BlcmNlbnRfY29kZV9iaXNvbl9xdWFsaWZpZXJzKFFVQUxJRklF
UikuCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfY29kZV9pZmRlZl0sCitbbTRfaWZkZWYoW2I0X3Bl
cmNlbnRfY29kZShdJDFbKV0sCisgICAgICAgICAgW200X2lmdmFsKFskMV0sIFttNF9kZWZpbmUo
W2I0X3BlcmNlbnRfY29kZV9iaXNvbl9xdWFsaWZpZXJzKF0kMVspXSldKSQyXSwKKyAgICAgICAg
ICBbJDNdKV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBDb21tb24gdmFyaWFi
bGVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgYjRfcGFyc2VfYXNzZXJ0
X2lmKFtJRi1BU1NFUlRJT05TLUFSRS1VU0VEXSwgW0lGLU5PVF0pCisjIGI0X3BhcnNlX3RyYWNl
X2lmKFtJRi1ERUJVRy1UUkFDRVMtQVJFLUVOQUJMRURdLCBbSUYtTk9UXSkKKyMgYjRfdG9rZW5f
Y3Rvcl9pZihbSUYtWVlMRVgtUkVUVVJOUy1BLVRPS0VOXSwgW0lGLU5PVF0pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2I0X3Bl
cmNlbnRfZGVmaW5lX2lmX2RlZmluZShbdG9rZW5fY3Rvcl0sIFthcGkudG9rZW4uY29uc3RydWN0
b3JdKQorYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5lKFtsb2NhdGlvbnNdKSAgICAgIyBXaGV0
aGVyIGxvY2F0aW9ucyBhcmUgdHJhY2tlZC4KK2I0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZShb
cGFyc2UuYXNzZXJ0XSkKK2I0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZShbcGFyc2UudHJhY2Vd
KQorCisKKyMgYjRfYmlzb25fbG9jYXRpb25zX2lmKFtJRi1UUlVFXSkKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIElGLVRSVUUgaWYgdXNpbmcgbG9jYXRpb25z
LCBhbmQgdXNpbmcgdGhlIGRlZmF1bHQgbG9jYXRpb24KKyMgdHlwZS4KK200X2RlZmluZShbYjRf
Ymlzb25fbG9jYXRpb25zX2lmXSwKK1tiNF9sb2NhdGlvbnNfaWYoW2I0X3BlcmNlbnRfZGVmaW5l
X2lmZGVmKFtbYXBpLmxvY2F0aW9uLnR5cGVdXSwgW10sIFskMV0pXSldKQorCisKKyMgYjRfZXJy
b3JfdmVyYm9zZV9pZihbSUYtRVJST1JTLUFSRS1WRVJCT1NFXSwgW0lGLU5PVF0pCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNYXAg
JWRlZmluZSBwYXJzZS5lcnJvciAiKHNpbXBsZXx2ZXJib3NlKSIgdG8gYjRfZXJyb3JfdmVyYm9z
ZV9pZiBhbmQKKyMgYjRfZXJyb3JfdmVyYm9zZV9mbGFnLgorYjRfcGVyY2VudF9kZWZpbmVfZGVm
YXVsdChbW3BhcnNlLmVycm9yXV0sIFtbc2ltcGxlXV0pCitiNF9wZXJjZW50X2RlZmluZV9jaGVj
a192YWx1ZXMoW1tbW3BhcnNlLmVycm9yXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbW3NpbXBsZV1dLCBbW3ZlcmJvc2VdXV1dKQorbTRfZGVmaW5lKFtiNF9lcnJvcl92ZXJi
b3NlX2ZsYWddLAorICAgICAgICAgIFttNF9jYXNlKGI0X3BlcmNlbnRfZGVmaW5lX2dldChbW3Bh
cnNlLmVycm9yXV0pLAorICAgICAgICAgICAgICAgICAgIFtzaW1wbGVdLCAgW1swXV0sCisgICAg
ICAgICAgICAgICAgICAgW3ZlcmJvc2VdLCBbWzFdXSldKQorYjRfZGVmaW5lX2ZsYWdfaWYoW2Vy
cm9yX3ZlcmJvc2VdKQorCisjIHl5dG9rZW5fdGFibGUgaXMgbmVlZGVkIHRvIHN1cHBvcnQgdmVy
Ym9zZSBlcnJvcnMuCitiNF9lcnJvcl92ZXJib3NlX2lmKFttNF9kZWZpbmUoW2I0X3Rva2VuX3Rh
YmxlX2ZsYWddLCBbMV0pXSkKKworCisjIGI0X3ZhcmlhbnRfaWYoW0lGLVZBUklBTlQtQVJFLVVT
RURdLCBbSUYtTk9UXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5lKFt2YXJpYW50XSkKK200X2RlZmlu
ZShbYjRfdmFyaWFudF9mbGFnXSwgW1swXV0pCitiNF9wZXJjZW50X2RlZmluZV9pZmRlZihbW2Fw
aS52YWx1ZS50eXBlXV0sCisgICBbbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXRfa2luZChb
W2FwaS52YWx1ZS50eXBlXV0pLCBba2V5d29yZF0sCisgICAgICAgICAgICBbbTRfY2FzZShiNF9w
ZXJjZW50X2RlZmluZV9nZXQoW1thcGkudmFsdWUudHlwZV1dKSwgW3ZhcmlhbnRdLAorICAgICAg
ICAgICAgICAgICAgICBbbTRfZGVmaW5lKFtiNF92YXJpYW50X2ZsYWddLCBbWzFdXSldKV0pXSkK
K2I0X2RlZmluZV9mbGFnX2lmKFt2YXJpYW50XSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgQWZ0ZXIgcHJv
Y2Vzc2luZyB0aGUgc2tlbGV0b25zLCBjaGVjayB0aGF0IGFsbCB0aGUgdXNlcidzICAgIyMKKyMj
ICVkZWZpbmUgdmFyaWFibGVzIGFuZCAlY29kZSBxdWFsaWZpZXJzIHdlcmUgdXNlZCBieSBCaXNv
bi4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSAjIworCittNF9kZWZpbmUoW2I0X2NoZWNrX3VzZXJfbmFtZXNfd3JhcF0s
CitbbTRfaWZkZWYoW2I0X3BlcmNlbnRfXSQxW191c2VyX10kMltzXSwKKyAgICAgICAgICBbYjRf
Y2hlY2tfdXNlcl9uYW1lcyhbWyVdJDEgJDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtiNF9wZXJjZW50X10kMVtfdXNlcl9dJDJbc10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1tiNF9wZXJjZW50X10kMVtfYmlzb25fXSQyW3NdXSldKV0pCisKK200X3dyYXBf
bGlmbyhbCitiNF9jaGVja191c2VyX25hbWVzX3dyYXAoW1tkZWZpbmVdXSwgW1t2YXJpYWJsZV1d
KQorYjRfY2hlY2tfdXNlcl9uYW1lc193cmFwKFtbY29kZV1dLCBbW3F1YWxpZmllcl1dKQorXSkK
KworCisjIyAtLS0tLS0tLS0tLS0tLS0tICMjCisjIyBEZWZhdWx0IHZhbHVlcy4gICMjCisjIyAt
LS0tLS0tLS0tLS0tLS0tICMjCisKKyMgbTRfZGVmaW5lX2RlZmF1bHQoW2I0X2xleF9wYXJhbV0s
IFtdKSAgIGRubCBicmVha3Mgb3RoZXIgc2tlbGV0b25zCittNF9kZWZpbmVfZGVmYXVsdChbYjRf
ZXBpbG9ndWVdLCBbXSkKK200X2RlZmluZV9kZWZhdWx0KFtiNF9wYXJzZV9wYXJhbV0sIFtdKQor
CisjIFRoZSBpbml0aWFsIGNvbHVtbiBhbmQgbGluZS4KK200X2RlZmluZV9kZWZhdWx0KFtiNF9s
b2NhdGlvbl9pbml0aWFsX2NvbHVtbl0sIFsxXSkKK200X2RlZmluZV9kZWZhdWx0KFtiNF9sb2Nh
dGlvbl9pbml0aWFsX2xpbmVdLCAgIFsxXSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0gIyMKKyMj
IFNhbml0eSBjaGVja3MuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgYXBpLmxvY2F0
aW9uLnByZWZpeD17Li4ufSAoSmF2YSBhbmQgQysrKS4KK2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNr
X2tpbmQoW2FwaS5sb2NhdGlvbi50eXBlXSwgW2NvZGVdLCBbZGVwcmVjYXRlZF0pCisKKyMgYXBp
LnBvc2l0aW9uLnByZWZpeD17Li4ufSAoSmF2YSkuCitiNF9wZXJjZW50X2RlZmluZV9jaGVja19r
aW5kKFthcGkucG9zaXRpb24udHlwZV0sIFtjb2RlXSwgW2RlcHJlY2F0ZWRdKQorCisjIGFwaS5w
cmVmaXggPjwgJW5hbWUtcHJlZml4LgorYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChbYXBp
LnByZWZpeF0sIFtjb2RlXSwgW2RlcHJlY2F0ZWRdKQorYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYo
W2FwaS5wcmVmaXhdLAorW200X2lmZGVmKFtiNF9wcmVmaXhdLAorW2I0X2NvbXBsYWluX2F0KGI0
X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoW2FwaS5wcmVmaXhdKSwKKyAgICAgICAgICAgICAgICBb
WyclcycgYW5kICclcycgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJdXSwKKyAgICAgICAgICAgICAg
ICBbJW5hbWUtcHJlZml4XSwKKyAgICAgICAgICAgICAgICBbJWRlZmluZSBhcGkucHJlZml4XSld
KV0pCisKKyMgYXBpLnRva2VuLnByZWZpeD17Li4ufQorIyBNYWtlIGl0IGEgd2FybmluZyBmb3Ig
dGhvc2Ugd2hvIHVzZWQgYmV0YXMgb2YgQmlzb24gMy4wLgorYjRfcGVyY2VudF9kZWZpbmVfY2hl
Y2tfa2luZChbYXBpLnRva2VuLnByZWZpeF0sIFtjb2RlXSwgW2RlcHJlY2F0ZWRdKQorCisjIGFw
aS52YWx1ZS50eXBlID48ICV1bmlvbi4KK2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFthcGkudmFs
dWUudHlwZV0sCitbbTRfaWZkZWYoW2I0X3VuaW9uX21lbWJlcnNdLAorW2I0X2NvbXBsYWluX2F0
KGI0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoW2FwaS52YWx1ZS50eXBlXSksCisgICAgICAgICAg
ICAgICAgW1snJXMnIGFuZCAnJXMnIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXV0sCisgICAgICAg
ICAgICAgICAgWyV1bmlvbl0sCisgICAgICAgICAgICAgICAgWyVkZWZpbmUgYXBpLnZhbHVlLnR5
cGVdKV0pXSkKKworIyBhcGkudmFsdWUudHlwZT11bmlvbiA+PCAleWFjYy4KK2I0X3BlcmNlbnRf
ZGVmaW5lX2lmZGVmKFthcGkudmFsdWUudHlwZV0sCitbbTRfaWYoYjRfcGVyY2VudF9kZWZpbmVf
Z2V0KFthcGkudmFsdWUudHlwZV0pLCBbdW5pb25dLAorW2I0X3lhY2NfaWYoZG5sCitbYjRfY29t
cGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbYXBpLnZhbHVlLnR5cGVdKSwKKyAg
ICAgICAgICAgICAgICBbWyclcycgYW5kICclcycgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJdXSwK
KyAgICAgICAgICAgICAgICBbJXlhY2NdLAorICAgICAgICAgICAgICAgIFslZGVmaW5lIGFwaS52
YWx1ZS50eXBlICJ1bmlvbiJdKV0pXSldKQorCisjIGFwaS52YWx1ZS51bmlvbi5uYW1lLgorYjRf
cGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChbYXBpLnZhbHVlLnVuaW9uLm5hbWVdLCBba2V5d29y
ZF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29u
L3RoaXJkX3BhcnR5L3NrZWxldG9ucy9jLWxpa2UubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9jLWxpa2UubTQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGQ4OTFiNjdlZjk3YjA5YTEyMWYwNDg3ZjAwYzdhMjVjMzU3ODMxNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRf
cGFydHkvc2tlbGV0b25zL2MtbGlrZS5tNApAQCAtMCwwICsxLDY2IEBACisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2Nv
bmYgLSotCisKKyMgQ29tbW9uIGNvZGUgZm9yIEMtbGlrZSBsYW5ndWFnZXMgKEMsIEMrKywgSmF2
YSwgZXRjLikKKworIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSwgMjAxOC0yMDE5IEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp
Y2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg
SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIF9iNF9jb21t
ZW50KFRFWFQsIE9QRU4sIENPTlRJTlVFLCBFTkQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIFB1dCBURVhUIGluIGNvbW1lbnQuICBBdm9pZCB0cmFpbGluZyBz
cGFjZXM6IGRvbid0IGluZGVudCBlbXB0eSBsaW5lcy4KKyMgQXZvaWQgYWRkaW5nIGluZGVudGF0
aW9uIHRvIHRoZSBmaXJzdCBsaW5lLCBhcyB0aGUgaW5kZW50YXRpb24gY29tZXMKKyMgZnJvbSBP
UEVOLiAgVGhhdCdzIHdoeSB3ZSBkb24ndCBwYXRzdWJzdChbJDFdLCBbXlwoLlwpXSwgWyAgIFwx
XSkuCisjCisjIFByZWZpeCBhbGwgdGhlIG91dHB1dCBsaW5lcyB3aXRoIFBSRUZJWC4KK200X2Rl
ZmluZShbX2I0X2NvbW1lbnRdLAorWyQyW11tNF9icGF0c3Vic3QobTRfZXhwYW5kKFtbJDFdXSks
IFsKK1woLlwpXSwgWworJDNcMV0pJDRdKQorCisKKyMgYjRfY29tbWVudChURVhULCBbUFJFRklY
XSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHV0IFRFWFQgaW4gY29tbWVudC4g
IFByZWZpeCBhbGwgdGhlIG91dHB1dCBsaW5lcyB3aXRoIFBSRUZJWC4KK200X2RlZmluZShbYjRf
Y29tbWVudF0sCitbX2I0X2NvbW1lbnQoWyQxXSwgWyQyLyogXSwgWyQyICAgXSwgWyAgKi9dKV0p
CisKKworCisKKyMgX2I0X2RvbGxhcl9kb2xsYXIoVkFMVUUsIFNZTUJPTC1OVU0sIEZJRUxELCBE
RUZBVUxULUZJRUxEKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIEZJRUxEIChvciBERUZBVUxULUZJRUxEKSBpcyBub24t
bnVsbCwgcmV0dXJuICJWQUxVRS5GSUVMRCIsCisjIG90aGVyd2lzZSBqdXN0IFZBTFVFLiAgQmUg
c3VyZSB0byBwYXNzICIoVkFMVUUpIiBpZiBWQUxVRSBpcyBhCisjIHBvaW50ZXIuCittNF9kZWZp
bmUoW19iNF9kb2xsYXJfZG9sbGFyXSwKK1tiNF9zeW1ib2xfdmFsdWUoWyQxXSwKKyAgICAgICAg
ICAgICAgICAgWyQyXSwKKyAgICAgICAgICAgICAgICAgbTRfaWYoWyQzXSwgW1tdXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgW1skNF1dLCBbWyQzXV0pKV0pCisKKyMgYjRfZG9sbGFyX3B1c2hk
ZWYoVkFMVUUtUE9JTlRFUiwgU1lNQk9MLU5VTSwgW1RZUEVfVEFHXSwgTE9DQVRJT04pCisjIGI0
X2RvbGxhcl9wb3BkZWYKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBiNF9kb2xsYXJfZG9sbGFyIGZv
ciBWQUxVRS1QT0lOVEVSIGFuZCBERUZBVUxULUZJRUxELAorIyBhbmQgYjRfYXRfZG9sbGFyIGZv
ciBMT0NBVElPTi4KK200X2RlZmluZShbYjRfZG9sbGFyX3B1c2hkZWZdLAorW200X3B1c2hkZWYo
W2I0X2RvbGxhcl9kb2xsYXJdLAorICAgICAgICAgICAgW19iNF9kb2xsYXJfZG9sbGFyKFskMV0s
IFskMl0sIG00X2RxdW90ZSgkXVsxKSwgWyQzXSldKWRubAorbTRfcHVzaGRlZihbYjRfYXRfZG9s
bGFyXSwgWyQ0XSlkbmwKK10pCittNF9kZWZpbmUoW2I0X2RvbGxhcl9wb3BkZWZdLAorW200X3Bv
cGRlZihbYjRfYXRfZG9sbGFyXSlkbmwKK200X3BvcGRlZihbYjRfZG9sbGFyX2RvbGxhcl0pZG5s
CitdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNv
bi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy5tNCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rv
b2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL2MubTQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Nk
ZTA0YTk1NzFiMTBhZjg5MDM3YzU5N2Q4Y2I5NDk1NGZmOGI2OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tl
bGV0b25zL2MubTQKQEAgLTAsMCArMSw4ODMgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBD
IE00IE1hY3JvcyBmb3IgQmlzb24uCisKKyMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA0LTIwMTUs
IDIwMTgtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KKworIyBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo
ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj
ZW5zZXMvPi4KKworbTRfaW5jbHVkZShiNF9za2VsZXRvbnNkaXIvW2MtbGlrZS5tNF0pCisKKyMg
YjRfdG9jcHAoU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIENvbnZlcnQgU1RSSU5HIGlu
dG8gYSB2YWxpZCBDIG1hY3JvIG5hbWUuCittNF9kZWZpbmUoW2I0X3RvY3BwXSwKK1ttNF90b3Vw
cGVyKG00X2JwYXRzdWJzdChtNF9xdW90ZSgkMSksIFtbXmEtekEtWjAtOV0rXSwgW19dKSldKQor
CisKKyMgYjRfY3BwX2d1YXJkKEZJTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBBIHZhbGlk
IEMgbWFjcm8gbmFtZSB0byB1c2UgYXMgYSBDUFAgaGVhZGVyIGd1YXJkIGZvciBGSUxFLgorbTRf
ZGVmaW5lKFtiNF9jcHBfZ3VhcmRdLAorW1tZWV9dYjRfdG9jcHAobTRfZGVmbihbYjRfcHJlZml4
XSkvWyQxXSlbX0lOQ0xVREVEXV0pCisKKworIyBiNF9jcHBfZ3VhcmRfb3BlbihGSUxFKQorIyBi
NF9jcHBfZ3VhcmRfY2xvc2UoRklMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElm
IEZJTEUgZG9lcyBub3QgZXhwYW5kIHRvIG5vdGhpbmcsIG9wZW4vY2xvc2UgQ1BQIGluY2x1c2lv
biBndWFyZHMgZm9yIEZJTEUuCittNF9kZWZpbmUoW2I0X2NwcF9ndWFyZF9vcGVuXSwKK1ttNF9p
ZnZhbChtNF9xdW90ZSgkMSksCitbI2lmbmRlZiBiNF9jcHBfZ3VhcmQoWyQxXSkKKyMgZGVmaW5l
IGI0X2NwcF9ndWFyZChbJDFdKV0pXSkKKworbTRfZGVmaW5lKFtiNF9jcHBfZ3VhcmRfY2xvc2Vd
LAorW200X2lmdmFsKG00X3F1b3RlKCQxKSwKK1sjZW5kaWYgYjRfY29tbWVudChbIWI0X2NwcF9n
dWFyZChbJDFdKV0pXSldKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIElkZW50aWZp
Y2F0aW9uLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBiNF9pZGVudGlmaWNhdGlv
bgorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBEZXBlbmRzIG9uIGluZGl2aWR1YWwgc2tlbGV0b25z
IHRvIGRlZmluZSBiNF9wdXJlX2ZsYWcsIGI0X3B1c2hfZmxhZywgb3IKKyMgYjRfcHVsbF9mbGFn
IGlmIHRoZXkgdXNlIHRoZSB2YWx1ZXMgb2YgdGhlICVkZWZpbmUgdmFyaWFibGVzIGFwaS5wdXJl
IG9yCisjIGFwaS5wdXNoLXB1bGwuCittNF9kZWZpbmUoW2I0X2lkZW50aWZpY2F0aW9uXSwKK1tb
LyogSWRlbnRpZnkgQmlzb24gb3V0cHV0LiAgKi8KKyNkZWZpbmUgWVlCSVNPTiAxCisKKy8qIEJp
c29uIHZlcnNpb24uICAqLworI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIl1iNF92ZXJzaW9uWyIK
KworLyogU2tlbGV0b24gbmFtZS4gICovCisjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSBdYjRfc2tl
bGV0b25bXW00X2lmZGVmKFtiNF9wdXJlX2ZsYWddLCBbWworCisvKiBQdXJlIHBhcnNlcnMuICAq
LworI2RlZmluZSBZWVBVUkUgXWI0X3B1cmVfZmxhZ10pW11tNF9pZmRlZihbYjRfcHVzaF9mbGFn
XSwgW1sKKworLyogUHVzaCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVVNIIF1iNF9wdXNoX2Zs
YWddKVtdbTRfaWZkZWYoW2I0X3B1bGxfZmxhZ10sIFtbCisKKy8qIFB1bGwgcGFyc2Vycy4gICov
CisjZGVmaW5lIFlZUFVMTCBdYjRfcHVsbF9mbGFnXSlbCitdXSkKKworCisjIyAtLS0tLS0tLS0t
LS0tLS0tICMjCisjIyBEZWZhdWx0IHZhbHVlcy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tICMj
CisKKyMgYjRfYXBpX3ByZWZpeCwgYjRfYXBpX1BSRUZJWAorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIENvcnJlc3BvbmRzIHRvICVkZWZpbmUgYXBpLnByZWZpeAorYjRfcGVyY2Vu
dF9kZWZpbmVfZGVmYXVsdChbW2FwaS5wcmVmaXhdXSwgW1t5eV1dKQorbTRfZGVmaW5lKFtiNF9h
cGlfcHJlZml4XSwKK1tiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkucHJlZml4XV0pXSkKK200
X2RlZmluZShbYjRfYXBpX1BSRUZJWF0sCitbbTRfdG91cHBlcihiNF9hcGlfcHJlZml4KV0pCisK
KworIyBiNF9wcmVmaXgKKyMgLS0tLS0tLS0tCisjIElmIHRoZSAlbmFtZS1wcmVmaXggaXMgbm90
IGdpdmVuLCBpdCBpcyBhcGkucHJlZml4LgorbTRfZGVmaW5lX2RlZmF1bHQoW2I0X3ByZWZpeF0s
IFtiNF9hcGlfcHJlZml4XSkKKworIyBJZiB0aGUgJXVuaW9uIGlzIG5vdCBuYW1lZCwgaXRzIG5h
bWUgaXMgWVlTVFlQRS4KK2I0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1thcGkudmFsdWUudW5p
b24ubmFtZV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYjRfYXBpX1BSRUZJWFtdW1NU
WVBFXV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBQdXJlL2ltcHVy
ZSBpbnRlcmZhY2VzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIGI0
X2xleF9mb3JtYWxzCisjIC0tLS0tLS0tLS0tLS0tCisjIEFsbCB0aGUgeXlsZXggZm9ybWFsIGFy
Z3VtZW50cy4KKyMgYjRfbGV4X3BhcmFtIGFycml2ZXMgcXVvdGVkIHR3aWNlLCBidXQgd2Ugd2Fu
dCB0byBrZWVwIG9ubHkgb25lIGxldmVsLgorbTRfZGVmaW5lKFtiNF9sZXhfZm9ybWFsc10sCitb
YjRfcHVyZV9pZihbW1tbWVlTVFlQRSAqeXlsdmFscF1dLCBbWyZ5eWx2YWxdXV1bXWRubAorYjRf
bG9jYXRpb25zX2lmKFssIFtbWVlMVFlQRSAqeXlsbG9jcF0sIFsmeXlsbG9jXV1dKV0pZG5sCitt
NF9pZmRlZihbYjRfbGV4X3BhcmFtXSwgWywgXWI0X2xleF9wYXJhbSldKQorCisKKyMgYjRfbGV4
CisjIC0tLS0tLQorIyBDYWxsIHl5bGV4LgorbTRfZGVmaW5lKFtiNF9sZXhdLAorW2I0X2Z1bmN0
aW9uX2NhbGwoW3l5bGV4XSwgW2ludF0sIGI0X2xleF9mb3JtYWxzKV0pCisKKworIyBiNF91c2Vy
X2FyZ3MKKyMgLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X3VzZXJfYXJnc10sCitbbTRfaWZz
ZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywgYjRfYXJncyhiNF9wYXJzZV9wYXJhbSldKV0pCisKKwor
IyBiNF9wYXJzZV9wYXJhbQorIyAtLS0tLS0tLS0tLS0tLQorIyBJZiBkZWZpbmVkLCBiNF9wYXJz
ZV9wYXJhbSBhcnJpdmVzIGRvdWJsZSBxdW90ZWQsIGJ1dCBiZWxvdyB3ZSBwcmVmZXIKKyMgaXQg
dG8gYmUgc2luZ2xlIHF1b3RlZC4KK200X2RlZmluZShbYjRfcGFyc2VfcGFyYW1dLAorYjRfcGFy
c2VfcGFyYW0pCisKKworIyBiNF9wYXJzZV9wYXJhbV9mb3IoREVDTCwgRk9STUFMLCBCT0RZKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSXRlcmF0ZSBvdmVy
IHRoZSB1c2VyIHBhcmFtZXRlcnMsIGJpbmRpbmcgdGhlIGRlY2xhcmF0aW9uIHRvIERFQ0wsCisj
IHRoZSBmb3JtYWwgbmFtZSB0byBGT1JNQUwsIGFuZCBldmFsdWF0aW5nIHRoZSBCT0RZLgorbTRf
ZGVmaW5lKFtiNF9wYXJzZV9wYXJhbV9mb3JdLAorW200X2ZvcmVhY2goWyQxXyQyXSwgbTRfZGVm
bihbYjRfcGFyc2VfcGFyYW1dKSwKK1ttNF9wdXNoZGVmKFskMV0sIG00X3VucXVvdGUobTRfY2Fy
KCQxXyQyKSkpZG5sCittNF9wdXNoZGVmKFskMl0sIG00X3NoaWZ0KCQxXyQyKSlkbmwKKyQzW11k
bmwKK200X3BvcGRlZihbJDJdKWRubAorbTRfcG9wZGVmKFskMV0pZG5sCitdKV0pCisKKyMgYjRf
cGFyc2VfcGFyYW1fdXNlKFtWQUxdLCBbTE9DXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgJ1lZVVNFJyBWQUwsIExPQyBpZiBsb2NhdGlvbnMgYXJlIGVuYWJsZWQsIGFu
ZCBhbGwgdGhlIHBhcnNlLXBhcmFtcy4KK200X2RlZmluZShbYjRfcGFyc2VfcGFyYW1fdXNlXSwK
K1ttNF9pZnZhbG4oWyQxXSwgWyAgWVlVU0UgKFskMV0pO10pZG5sCitiNF9sb2NhdGlvbnNfaWYo
W200X2lmdmFsbihbJDJdLCBbICBZWVVTRSAoWyQyXSk7XSldKWRubAorYjRfcGFyc2VfcGFyYW1f
Zm9yKFtEZWNsXSwgW0Zvcm1hbF0sIFsgIFlZVVNFIChGb3JtYWwpOworXSlkbmwKK10pCisKKwor
IyMgLS0tLS0tLS0tLS0tICMjCisjIyBEYXRhIFR5cGVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLSAj
IworCisjIGI0X2ludF90eXBlKE1JTiwgTUFYKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
UmV0dXJuIHRoZSBzbWFsbGVzdCBpbnQgdHlwZSBhYmxlIHRvIGhhbmRsZSBudW1iZXJzIHJhbmdp
bmcgZnJvbQorIyBNSU4gdG8gTUFYIChpbmNsdWRlZCkuCittNF9kZWZpbmUoW2I0X2ludF90eXBl
XSwKK1ttNF9pZihiNF9pbnRzX2luKCRALCAgICAgIFswXSwgICBbMjU1XSksIFsxXSwgW3Vuc2ln
bmVkIGNoYXJdLAorICAgICAgIGI0X2ludHNfaW4oJEAsICAgWy0xMjhdLCAgIFsxMjddKSwgWzFd
LCBbc2lnbmVkIGNoYXJdLAorCisgICAgICAgYjRfaW50c19pbigkQCwgICAgICBbMF0sIFs2NTUz
NV0pLCBbMV0sIFt1bnNpZ25lZCBzaG9ydF0sCisgICAgICAgYjRfaW50c19pbigkQCwgWy0zMjc2
OF0sIFszMjc2N10pLCBbMV0sIFtzaG9ydF0sCisKKyAgICAgICBtNF9ldmFsKFswIDw9ICQxXSks
ICAgICAgICAgICAgICAgIFsxXSwgW3Vuc2lnbmVkXSwKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50XSldKQorCisKKyMgYjRfaW50X3R5cGVfZm9y
KE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gdGhlIHNtYWxsZXN0IGlu
dCB0eXBlIGFibGUgdG8gaGFuZGxlIG51bWJlcnMgcmFuZ2luZyBmcm9tCisjICdOQU1FX21pbicg
dG8gJ05BTUVfbWF4JyAoaW5jbHVkZWQpLgorbTRfZGVmaW5lKFtiNF9pbnRfdHlwZV9mb3JdLAor
W2I0X2ludF90eXBlKCQxX21pbiwgJDFfbWF4KV0pCisKKworIyBiNF90YWJsZV92YWx1ZV9lcXVh
bHMoVEFCTEUsIFZBTFVFLCBMSVRFUkFMKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBXaXRob3V0IGluZHVjaW5nIGEgY29tcGFyaXNvbiB3YXJuaW5n
IGZyb20gdGhlIGNvbXBpbGVyLCBjaGVjayBpZiB0aGUKKyMgbGl0ZXJhbCB2YWx1ZSBMSVRFUkFM
IGVxdWFscyBWQUxVRSBmcm9tIHRhYmxlIFRBQkxFLCB3aGljaCBtdXN0IGhhdmUKKyMgVEFCTEVf
bWluIGFuZCBUQUJMRV9tYXggZGVmaW5lZC4KK200X2RlZmluZShbYjRfdGFibGVfdmFsdWVfZXF1
YWxzXSwKK1ttNF9pZihtNF9ldmFsKCQzIDwgbTRfaW5kaXIoW2I0X10kMVtfbWluXSkKKyAgICAg
ICAgICAgICAgIHx8IG00X2luZGlyKFtiNF9dJDFbX21heF0pIDwgJDMpLCBbMV0sCisgICAgICAg
W1swXV0sCisgICAgICAgWyghISgoJDIpID09ICgkMykpKV0pXSkKKworCisjIyAtLS0tLS0tLS0t
LS0tLS0tLSAjIworIyMgQ29tcGlsZXIgaXNzdWVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0t
ICMjCisKKyMgYjRfYXR0cmlidXRlX2RlZmluZShbbm9yZXR1cm5dKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb3ZpZGUgcG9ydGFibGUgY29tcGlsZXIgImF0dHJpYnV0
ZXMiLiAgSWYgIm5vcmV0dXJuIiBpcyBwYXNzZWQsIGRlZmluZQorIyBfTm9yZXR1cm4uCittNF9k
ZWZpbmUoW2I0X2F0dHJpYnV0ZV9kZWZpbmVdLAorW1sjaWZuZGVmIFlZX0FUVFJJQlVURQorIyBp
ZiAoZGVmaW5lZCBfX0dOVUNfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgJiYgKDIgPCBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gMiAmJiA5
NiA8PSBfX0dOVUNfTUlOT1JfXykpKSAgXAorICAgICB8fCBkZWZpbmVkIF9fU1VOUFJPX0MgJiYg
MHg1MTEwIDw9IF9fU1VOUFJPX0MKKyMgIGRlZmluZSBZWV9BVFRSSUJVVEUoU3BlYykgX19hdHRy
aWJ1dGVfXyhTcGVjKQorIyBlbHNlCisjICBkZWZpbmUgWVlfQVRUUklCVVRFKFNwZWMpIC8qIGVt
cHR5ICovCisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBZWV9BVFRSSUJVVEVfUFVSRQorIyBk
ZWZpbmUgWVlfQVRUUklCVVRFX1BVUkUgICBZWV9BVFRSSUJVVEUgKChfX3B1cmVfXykpCisjZW5k
aWYKKworI2lmbmRlZiBZWV9BVFRSSUJVVEVfVU5VU0VECisjIGRlZmluZSBZWV9BVFRSSUJVVEVf
VU5VU0VEIFlZX0FUVFJJQlVURSAoKF9fdW51c2VkX18pKQorI2VuZGlmCisKK11tNF9ibWF0Y2go
WyQxXSwgW1xibm9yZXR1cm5cYl0sIFtbLyogVGhlIF9Ob3JldHVybiBrZXl3b3JkIG9mIEMxMS4g
ICovCisjaWYgISBkZWZpbmVkIF9Ob3JldHVybgorIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYm
IDIwMTEwM0wgPD0gX19jcGx1c3BsdXMKKyMgIGRlZmluZSBfTm9yZXR1cm4gW1tub3JldHVybl1d
CisjIGVsaWYgIShkZWZpbmVkIF9fU1REQ19WRVJTSU9OX18gJiYgMjAxMTEyIDw9IF9fU1REQ19W
RVJTSU9OX18pCisjICBpZiAoMyA8PSBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gMiAmJiA4IDw9
IF9fR05VQ19NSU5PUl9fKSBcCisgICAgICAgfHwgMHg1MTEwIDw9IF9fU1VOUFJPX0MpCisjICAg
ZGVmaW5lIF9Ob3JldHVybiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKKyMgIGVsaWYg
ZGVmaW5lZCBfTVNDX1ZFUiAmJiAxMjAwIDw9IF9NU0NfVkVSCisjICAgZGVmaW5lIF9Ob3JldHVy
biBfX2RlY2xzcGVjIChub3JldHVybikKKyMgIGVsc2UKKyMgICBkZWZpbmUgX05vcmV0dXJuCisj
ICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKK11dKVsvKiBTdXBwcmVzcyB1bnVzZWQtdmFyaWFi
bGUgd2FybmluZ3MgYnkgInVzaW5nIiBFLiAgKi8KKyNpZiAhIGRlZmluZWQgbGludCB8fCBkZWZp
bmVkIF9fR05VQ19fCisjIGRlZmluZSBZWVVTRShFKSAoKHZvaWQpIChFKSkKKyNlbHNlCisjIGRl
ZmluZSBZWVVTRShFKSAvKiBlbXB0eSAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkIF9fR05VQ19f
ICYmICEgZGVmaW5lZCBfX0lDQyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlO
T1JfXworLyogU3VwcHJlc3MgYW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJl
aW5nIHVuaW5pdGlhbGl6ZWQuICAqLworIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElB
TElaRURfQkVHSU4gXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAg
IF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwK
KyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFs
aXplZFwiIikKKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCisg
ICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpCisjZWxzZQorIyBkZWZpbmUgWVlfSU5J
VElBTF9WQUxVRShWYWx1ZSkgVmFsdWUKKyNlbmRpZgorI2lmbmRlZiBZWV9JR05PUkVfTUFZQkVf
VU5JTklUSUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTEla
RURfQkVHSU4KKyMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAorI2Vu
ZGlmCisjaWZuZGVmIFlZX0lOSVRJQUxfVkFMVUUKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUo
VmFsdWUpIC8qIE5vdGhpbmcuICovCisjZW5kaWYKK11dKQorCisKKyMgYjRfbnVsbF9kZWZpbmUK
KyMgLS0tLS0tLS0tLS0tLS0KKyMgUG9ydGFiaWxpdHkgaXNzdWVzOiBkZWZpbmUgYSBZWV9OVUxM
UFRSIGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudAorIyBsYW5ndWFnZSAoQywgQysrOTgsIG9y
IEMrKzExKS4KKyMKKyMgSW4gQysrIHByZSBDKysxMSBpdCBpcyBzdGFuZGFyZCBwcmFjdGljZSB0
byB1c2UgMCAobm90IE5VTEwpIGZvciB0aGUKKyMgbnVsbCBwb2ludGVyLiAgSW4gQywgcHJlZmVy
ICgodm9pZCopMCkgdG8gYXZvaWQgaGF2aW5nIHRvIGluY2x1ZGUgc3RkbGliLmguCittNF9kZWZp
bmUoW2I0X251bGxfZGVmaW5lXSwKK1sjIGlmbmRlZiBZWV9OVUxMUFRSCisjICBpZiBkZWZpbmVk
IF9fY3BsdXNwbHVzCisjICAgaWYgMjAxMTAzTCA8PSBfX2NwbHVzcGx1cworIyAgICBkZWZpbmUg
WVlfTlVMTFBUUiBudWxscHRyCisjICAgZWxzZQorIyAgICBkZWZpbmUgWVlfTlVMTFBUUiAwCisj
ICAgZW5kaWYKKyMgIGVsc2UKKyMgICBkZWZpbmUgWVlfTlVMTFBUUiAoKHZvaWQqKTApCisjICBl
bmRpZgorIyBlbmRpZltdZG5sCitdKQorCisKKyMgYjRfbnVsbAorIyAtLS0tLS0tCisjIFJldHVy
biBhIG51bGwgcG9pbnRlciBjb25zdGFudC4KK200X2RlZmluZShbYjRfbnVsbF0sIFtZWV9OVUxM
UFRSXSkKKworCisKKyMjIC0tLS0tLS0tLSMjCisjIyBWYWx1ZXMuICAjIworIyMgLS0tLS0tLS0t
IyMKKworIyBiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVfZGVmaW5lKFRBQkxFLU5BTUUsIENPTlRF
TlQsIENPTU1FTlQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lICJ5eTxUQUJMRS1OQU1FPiIgd2hvc2UgY29u
dGVudHMgaXMgQ09OVEVOVC4KK200X2RlZmluZShbYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlX2Rl
ZmluZV0sCitbbTRfaWZ2YWxuKFskM10sIFtiNF9jb21tZW50KFskM10sIFsgIF0pXSlkbmwKK3N0
YXRpYyBjb25zdCBiNF9pbnRfdHlwZV9mb3IoWyQyXSkgeXkkMVtbXV0gPQoreworICAkMgorfTtk
bmwKK10pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgQXNzaWduaW5n
IHRva2VuIG51bWJlcnMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisj
IGI0X3Rva2VuX2RlZmluZShUT0tFTi1OVU0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHRva2VuIGFzICNkZWZpbmUuCittNF9k
ZWZpbmUoW2I0X3Rva2VuX2RlZmluZV0sCitbYjRfdG9rZW5fZm9ybWF0KFsjZGVmaW5lICVzICVz
XSwgWyQxXSldKQorCisjIGI0X3Rva2VuX2RlZmluZXMKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBP
dXRwdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHRva2Vucy4KK200X2RlZmluZShbYjRfdG9rZW5f
ZGVmaW5lc10sCitbYjRfYW55X3Rva2VuX3Zpc2libGVfaWYoWy8qIFRva2Vucy4gICovCittNF9q
b2luKFsKK10sIGI0X3N5bWJvbF9tYXAoW2I0X3Rva2VuX2RlZmluZV0pKQorXSldKQorCisKKyMg
YjRfdG9rZW5fZW51bShUT0tFTi1OVU0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBP
dXRwdXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyB0b2tlbiBhcyBhbiBlbnVtLgorbTRfZGVmaW5l
KFtiNF90b2tlbl9lbnVtXSwKK1tiNF90b2tlbl9mb3JtYXQoWyVzID0gJXNdLCBbJDFdKV0pCisK
KworIyBiNF90b2tlbl9lbnVtcworIyAtLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQgdGhlIGRlZmlu
aXRpb24gb2YgdGhlIHRva2VucyAoaWYgdGhlcmUgYXJlKSBhcyBlbnVtcy4KK200X2RlZmluZShb
YjRfdG9rZW5fZW51bXNdLAorW2I0X2FueV90b2tlbl92aXNpYmxlX2lmKFtbLyogVG9rZW4gdHlw
ZS4gICovCisjaWZuZGVmIF1iNF9hcGlfUFJFRklYW1RPS0VOVFlQRQorIyBkZWZpbmUgXWI0X2Fw
aV9QUkVGSVhbVE9LRU5UWVBFCisgIGVudW0gXWI0X2FwaV9wcmVmaXhbdG9rZW50eXBlCisgIHsK
KyAgICBdbTRfam9pbihbLAorICAgIF0sCisgICAgICAgICAgICAgYjRfc3ltYm9sX21hcChbYjRf
dG9rZW5fZW51bV0pKVsKKyAgfTsKKyNlbmRpZgorXV0pXSkKKworCisjIGI0X3Rva2VuX2VudW1z
X2RlZmluZXMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQgdGhlIGRlZmluaXRp
b24gb2YgdGhlIHRva2VucyAoaWYgdGhlcmUgYXJlIGFueSkgYXMgZW51bXMgYW5kLAorIyBpZiBQ
T1NJWCBZYWNjIGlzIGVuYWJsZWQsIGFzICNkZWZpbmVzLgorbTRfZGVmaW5lKFtiNF90b2tlbl9l
bnVtc19kZWZpbmVzXSwKK1tiNF90b2tlbl9lbnVtc1tdYjRfeWFjY19pZihbYjRfdG9rZW5fZGVm
aW5lc10pXSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgU2VtYW50aWMgVmFsdWVz
LiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBiNF9zeW1ib2xfdmFsdWUoVkFM
LCBbU1lNQk9MLU5VTV0sIFtUWVBFLVRBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIFJFQURNRS4KK200X2RlZmluZShbYjRfc3ltYm9s
X3ZhbHVlXSwKK1ttNF9pZnZhbChbJDNdLAorICAgICAgICAgIFsoJDEuJDMpXSwKKyAgICAgICAg
ICBbbTRfaWZ2YWwoWyQyXSwKKyAgICAgICAgICAgICAgICAgICAgW2I0X3N5bWJvbF9pZihbJDJd
LCBbaGFzX3R5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJDEuYjRf
c3ltYm9sKFskMl0sIFt0eXBlXSkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbJDFdKV0sCisgICAgICAgICAgICAgICAgICAgIFskMV0pXSldKQorCisKKyMjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKKyMjIERlZmluaW5nIEMgZnVuY3Rpb25zLiAgIyMKKyMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIGI0X2Z1bmN0aW9uX2RlZmluZShOQU1FLCBSRVRV
Uk4tVkFMVUUsIFtERUNMMSwgTkFNRTFdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlY2xhcmUgdGhlIGZ1bmN0
aW9uIE5BTUUgaW4gQy4KK200X2RlZmluZShbYjRfZnVuY3Rpb25fZGVmaW5lXSwKK1skMgorJDEg
KGI0X2Zvcm1hbHMobTRfc2hpZnQyKCRAKSkpW11kbmwKK10pCisKKworIyBiNF9mb3JtYWxzKFtE
RUNMMSwgTkFNRTFdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
VGhlIGZvcm1hbCBhcmd1bWVudHMgb2YgYSBDIGZ1bmN0aW9uIGRlZmluaXRpb24uCittNF9kZWZp
bmUoW2I0X2Zvcm1hbHNdLAorW200X2lmKFskI10sIFswXSwgW3ZvaWRdLAorICAgICAgIFskIyQx
XSwgWzFdLCBbdm9pZF0sCisgICAgICAgICAgICAgICBbbTRfbWFwX3NlcChbYjRfZm9ybWFsXSwg
WywgXSwgWyRAXSldKV0pCisKK200X2RlZmluZShbYjRfZm9ybWFsXSwKK1skMV0pCisKKworCisj
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRGVjbGFyaW5nIEMgZnVuY3Rpb25zLiAg
IyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBiNF9mdW5jdGlvbl9kZWNs
YXJlKE5BTUUsIFJFVFVSTi1WQUxVRSwgW0RFQ0wxLCBOQU1FMV0sIC4uLikKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERl
Y2xhcmUgdGhlIGZ1bmN0aW9uIE5BTUUuCittNF9kZWZpbmUoW2I0X2Z1bmN0aW9uX2RlY2xhcmVd
LAorWyQyICQxIChiNF9mb3JtYWxzKG00X3NoaWZ0MigkQCkpKTtbXWRubAorXSkKKworCisKKwor
IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBDYWxsaW5nIEMgZnVuY3Rpb25zLiAgIyMK
KyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgYjRfZnVuY3Rpb25fY2FsbChOQU1F
LCBSRVRVUk4tVkFMVUUsIFtERUNMMSwgTkFNRTFdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENhbGwgdGhlIGZ1
bmN0aW9uIE5BTUUgd2l0aCBhcmd1bWVudHMgTkFNRTEsIE5BTUUyIGV0Yy4KK200X2RlZmluZShb
YjRfZnVuY3Rpb25fY2FsbF0sCitbJDEgKGI0X2FyZ3MobTRfc2hpZnQyKCRAKSkpW11kbmwKK10p
CisKKworIyBiNF9hcmdzKFtERUNMMSwgTkFNRTFdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKyMgT3V0cHV0IHRoZSBhcmd1bWVudHMgTkFNRTEsIE5BTUUyLi4uCittNF9k
ZWZpbmUoW2I0X2FyZ3NdLAorW200X21hcF9zZXAoW2I0X2FyZ10sIFssIF0sIFskQF0pXSkKKwor
bTRfZGVmaW5lKFtiNF9hcmddLAorWyQyXSkKKworCisjIyAtLS0tLS0tLS0tLSAjIworIyMgU3lu
Y2xpbmVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tICMjCisKKyMgYjRfc3luY19zdGFydChMSU5FLCBG
SUxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X3N5bmNfc3Rh
cnRdLCBbWyNdbGluZSAkMSAkMl0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFVzZXIg
YWN0aW9ucy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLSAjIworCisjIGI0X2Nhc2UoTEFCRUwsIFNU
QVRFTUVOVFMpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X2Nh
c2VdLAorWyAgY2FzZSAkMToKKyQyCitiNF9zeW5jbGluZShbQG9saW5lQF0sIFtAb2ZpbGVAXSkK
KyAgICBicmVhaztdKQorCisKKyMgYjRfcHJlZGljYXRlX2Nhc2UoTEFCRUwsIENPTkRJVElPTlMp
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtiNF9w
cmVkaWNhdGVfY2FzZV0sCitbICBjYXNlICQxOgorICAgIGlmICghICgKKyQyKSkgWVlFUlJPUjsK
K2I0X3N5bmNsaW5lKFtAb2xpbmVAXSwgW0BvZmlsZUBdKQorICAgIGJyZWFrO10pCisKKworIyBi
NF95eWRlc3RydWN0X2RlZmluZQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgdGhl
ICJ5eWRlc3RydWN0IiBmdW5jdGlvbi4KK200X2RlZmluZV9kZWZhdWx0KFtiNF95eWRlc3RydWN0
X2RlZmluZV0sCitbWy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0uCit8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMgc3ltYm9sLiAg
fAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwor
XWI0X2Z1bmN0aW9uX2RlZmluZShbeXlkZXN0cnVjdF0sCisgICAgW3N0YXRpYyB2b2lkXSwKKyAg
ICBbW2NvbnN0IGNoYXIgKnl5bXNnXSwgICAgW3l5bXNnXV0sCisgICAgW1tpbnQgeXl0eXBlXSwg
ICAgICAgICAgIFt5eXR5cGVdXSwKKyAgICBbW1lZU1RZUEUgKnl5dmFsdWVwXSwgICAgW3l5dmFs
dWVwXV1bXWRubAorYjRfbG9jYXRpb25zX2lmKCAgICAgICAgICAgIFssIFtbWVlMVFlQRSAqeXls
b2NhdGlvbnBdLCBbeXlsb2NhdGlvbnBdXV0pW11kbmwKK200X2lmc2V0KFtiNF9wYXJzZV9wYXJh
bV0sIFssIGI0X3BhcnNlX3BhcmFtXSkpWworeworXWI0X3BhcnNlX3BhcmFtX3VzZShbeXl2YWx1
ZXBdLCBbeXlsb2NhdGlvbnBdKWRubAorWyAgaWYgKCF5eW1zZykKKyAgICB5eW1zZyA9ICJEZWxl
dGluZyI7CisgIFlZX1NZTUJPTF9QUklOVCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9j
YXRpb25wKTsKKworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgorICBdYjRf
c3ltYm9sX2FjdGlvbnMoW2Rlc3RydWN0b3JdKVsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElB
TElaRURfRU5ECit9XWRubAorXSkKKworCisjIGI0X3l5X3N5bWJvbF9wcmludF9kZWZpbmUKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgdGhlICJ5eV9zeW1ib2xfcHJpbnQi
IGZ1bmN0aW9uLgorbTRfZGVmaW5lX2RlZmF1bHQoW2I0X3l5X3N5bWJvbF9wcmludF9kZWZpbmVd
LAorW1sKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFByaW50IHRo
aXMgc3ltYm9sJ3MgdmFsdWUgb24gWVlPLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKworXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlfc3ltYm9sX3ZhbHVlX3ByaW50
XSwKKyAgICBbc3RhdGljIHZvaWRdLAorICAgICAgICAgICAgICAgW1tGSUxFICp5eW9dLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbeXlvXV0sCisgICAgICAgICAgICAgICBbW2ludCB5eXR5
cGVdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFt5eXR5cGVdXSwKKyAgICAgICAgICAgICAg
IFtbWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwXSwgICAgICAgW3l5dmFsdWVwXV1bXWRu
bAorYjRfbG9jYXRpb25zX2lmKFssIFtbWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25w
XSwgW3l5bG9jYXRpb25wXV1dKVtdZG5sCittNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbLCBi
NF9wYXJzZV9wYXJhbV0pKVsKK3sKKyAgRklMRSAqeXlvdXRwdXQgPSB5eW87CitdYjRfcGFyc2Vf
cGFyYW1fdXNlKFt5eW91dHB1dF0sIFt5eWxvY2F0aW9ucF0pZG5sCitbICBpZiAoIXl5dmFsdWVw
KQorICAgIHJldHVybjtdCitkbmwgZ2xyLmMgZG9lcyBub3QgZmVhdHVyZSB5eXRva251bS4KK200
X2lmKGI0X3NrZWxldG9uLCBbInlhY2MuYyJdLAorW1sjIGlmZGVmIFlZUFJJTlQKKyAgaWYgKHl5
dHlwZSA8IFlZTlRPS0VOUykKKyAgICBZWVBSSU5UICh5eW8sIHl5dG9rbnVtW3l5dHlwZV0sICp5
eXZhbHVlcCk7CisjIGVuZGlmCitdXSlkbmwKKyAgYjRfc3ltYm9sX2FjdGlvbnMoW3ByaW50ZXJd
KVsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBz
eW1ib2wgb24gWVlPLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK11iNF9m
dW5jdGlvbl9kZWZpbmUoW3l5X3N5bWJvbF9wcmludF0sCisgICAgW3N0YXRpYyB2b2lkXSwKKyAg
ICAgICAgICAgICAgIFtbRklMRSAqeXlvXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3l5
b11dLAorICAgICAgICAgICAgICAgW1tpbnQgeXl0eXBlXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbeXl0eXBlXV0sCisgICAgICAgICAgICAgICBbW1lZU1RZUEUgY29uc3QgKiBjb25zdCB5
eXZhbHVlcF0sICAgICAgIFt5eXZhbHVlcF1dW11kbmwKK2I0X2xvY2F0aW9uc19pZihbLCBbW1lZ
TFRZUEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucF0sIFt5eWxvY2F0aW9ucF1dXSlbXWRubAor
bTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywgYjRfcGFyc2VfcGFyYW1dKSlbCit7CisgIFlZ
RlBSSU5URiAoeXlvLCAiJXMgJXMgKCIsCisgICAgICAgICAgICAgeXl0eXBlIDwgWVlOVE9LRU5T
ID8gInRva2VuIiA6ICJudGVybSIsIHl5dG5hbWVbeXl0eXBlXSk7CisKK11iNF9sb2NhdGlvbnNf
aWYoWyAgWVlfTE9DQVRJT05fUFJJTlQgKHl5bywgKnl5bG9jYXRpb25wKTsKKyAgWVlGUFJJTlRG
ICh5eW8sICI6ICIpOworXSlkbmwKK1sgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlvLCB5eXR5
cGUsIHl5dmFsdWVwXWRubAorYjRfbG9jYXRpb25zX2lmKFssIHl5bG9jYXRpb25wXSlbXWI0X3Vz
ZXJfYXJnc1spOworICBZWUZQUklOVEYgKHl5bywgIikiKTsKK31dZG5sCitdKQorCisKKyMjIC0t
LS0tLS0tLS0tLS0tLS0gIyMKKyMjIGFwaS52YWx1ZS50eXBlLiAgIyMKKyMjIC0tLS0tLS0tLS0t
LS0tLS0gIyMKKworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIworIyBhcGkudmFsdWUudHlw
ZT11bmlvbi4gICMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCisKKyMgYjRfc3ltYm9sX3R5
cGVfcmVnaXN0ZXIoU1lNQk9MLU5VTSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgU3ltYm9sIFNZTUJPTC1OVU0gaGFzIGEgdHlwZSAoZm9yIHZhcmlhbnQpIGluc3Rl
YWQgb2YgYSB0eXBlLXRhZy4KKyMgRXh0ZW5kIHRoZSBkZWZpbml0aW9uIG9mICV1bmlvbidzIGJv
ZHkgKGI0X3VuaW9uX21lbWJlcnMpIHdpdGggYQorIyBmaWVsZCBvZiB0aGF0IHR5cGUsIGFuZCBl
eHRlbmQgdGhlIHN5bWJvbCdzICJ0eXBlIiBmaWVsZCB0byBwb2ludCB0bworIyB0aGUgZmllbGQg
bmFtZSwgaW5zdGVhZCBvZiB0aGUgdHlwZSBuYW1lLgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfdHlw
ZV9yZWdpc3Rlcl0sCitbbTRfZGVmaW5lKFtiNF9zeW1ib2woJDEsIHR5cGVfdGFnKV0sCisgICAg
ICAgICAgIFtiNF9zeW1ib2xfaWYoWyQxXSwgW2hhc19pZF0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgW2I0X3N5bWJvbChbJDFdLCBbaWRdKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
W3l5dHlwZV9bXWI0X3N5bWJvbChbJDFdLCBbbnVtYmVyXSldKV0pZG5sCittNF9hcHBlbmQoW2I0
X3VuaW9uX21lbWJlcnNdLAorbTRfZXhwYW5kKFsKKyAgYjRfc3ltYm9sX3RhZ19jb21tZW50KFsk
MV0pZG5sCisgIGI0X3N5bWJvbChbJDFdLCBbdHlwZV0pIGI0X3N5bWJvbChbJDFdLCBbdHlwZV90
YWddKTtdKSkKK10pCisKKworIyBiNF90eXBlX2RlZmluZV90YWcoU1lNQk9MMS1OVU0sIC4uLikK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZvciB0aGUgYmF0Y2gg
b2Ygc3ltYm9scyBTWU1CT0wxLU5VTS4uLiAod2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUKKyMgdHlw
ZSksIGVuaGFuY2UgdGhlICV1bmlvbiBkZWZpbml0aW9uIGZvciBlYWNoIG9mIHRoZW0sIGFuZCBz
ZXQKKyMgdGhlcmUgInR5cGUiIGZpZWxkIHRvIHRoZSBmaWVsZCB0YWcgbmFtZSwgaW5zdGVhZCBv
ZiB0aGUgdHlwZSBuYW1lLgorbTRfZGVmaW5lKFtiNF90eXBlX2RlZmluZV90YWddLAorW2I0X3N5
bWJvbF9pZihbJDFdLCBbaGFzX3R5cGVdLAorICAgICAgICAgICAgICBbbTRfbWFwKFtiNF9zeW1i
b2xfdHlwZV9yZWdpc3Rlcl0sIFskQF0pXSkKK10pCisKKworIyBiNF9zeW1ib2xfdmFsdWVfdW5p
b24oVkFMLCBTWU1CT0wtTlVNLCBbVFlQRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2FtZSBvZiBiNF9zeW1ib2xfdmFsdWUsIGJ1dCB3aGVu
IGFwaS52YWx1ZS50eXBlPXVuaW9uLgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfdmFsdWVfdW5pb25d
LAorW200X2lmdmFsKFskM10sCisgICAgICAgICAgWygqKCQzKikoJiQxKSldLAorICAgICAgICAg
IFttNF9pZnZhbChbJDJdLAorICAgICAgICAgICAgICAgICAgICBbYjRfc3ltYm9sX2lmKFskMl0s
IFtoYXNfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygkMS5iNF9z
eW1ib2woWyQyXSwgW3R5cGVfdGFnXSkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJDFdKV0sCisgICAgICAgICAgICAgICAgICAgIFskMV0pXSldKQorCisKKyMgYjRfdmFs
dWVfdHlwZV9zZXR1cF91bmlvbgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldHVw
IHN1cHBvcnQgZm9yIGFwaS52YWx1ZS50eXBlPXVuaW9uLiAgU3ltYm9scyBhcmUgZGVmaW5lZCB3
aXRoIGEKKyMgdHlwZSBpbnN0ZWFkIG9mIGEgdW5pb24gbWVtYmVyIG5hbWU6IGJ1aWxkIHRoZSBj
b3JyZXNwb25kaW5nIHVuaW9uLAorIyBhbmQgZ2l2ZSB0aGUgc3ltYm9scyB0aGVpciB0YWcuCitt
NF9kZWZpbmUoW2I0X3ZhbHVlX3R5cGVfc2V0dXBfdW5pb25dLAorW200X2RlZmluZShbYjRfdW5p
b25fbWVtYmVyc10pCitiNF90eXBlX2ZvcmVhY2goW2I0X3R5cGVfZGVmaW5lX3RhZ10pCittNF9j
b3B5X2ZvcmNlKFtiNF9zeW1ib2xfdmFsdWVfdW5pb25dLCBbYjRfc3ltYm9sX3ZhbHVlXSkKK10p
CisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCisjIGFwaS52YWx1ZS50eXBlID0g
dmFyaWFudC4gICMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIworCisjIGI0X3ZhbHVl
X3R5cGVfc2V0dXBfdmFyaWFudAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0
dXAgc3VwcG9ydCBmb3IgYXBpLnZhbHVlLnR5cGU9dmFyaWFudC4gIEJ5IGRlZmF1bHQsIGZhaWws
IHNwZWNpYWxpemVkCisjIGJ5IG90aGVyIHNrZWxldG9ucy4KK200X2RlZmluZShbYjRfdmFsdWVf
dHlwZV9zZXR1cF92YXJpYW50XSwKK1tiNF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9n
ZXRfbG9jKFtbYXBpLnZhbHVlLnR5cGVdXSksCisgICAgICAgICAgICAgICAgW1snJXMnIGRvZXMg
bm90IHN1cHBvcnQgJyVzJ11dLAorICAgICAgICAgICAgICAgIFtiNF9za2VsZXRvbl0sCisgICAg
ICAgICAgICAgICAgWyVkZWZpbmUgYXBpLnZhbHVlLnR5cGUgdmFyaWFudF0pXSkKKworCisjIF9i
NF92YWx1ZV90eXBlX3NldHVwX2tleXdvcmQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBhcGkudmFsdWUudHlwZSBpcyBkZWZpbmVkIHdpdGggYSBrZXl3b3JkL3N0cmluZyBzeW50
YXguICBDaGVjayBpZgorIyB0aGF0IGlzIHByb3Blcmx5IGRlZmluZWQsIGFuZCBwcmVwYXJlIGl0
cyB1c2UuCittNF9kZWZpbmUoW19iNF92YWx1ZV90eXBlX3NldHVwX2tleXdvcmRdLAorW2I0X3Bl
cmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbYXBpLnZhbHVlLnR5cGVdXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbW25vbmVdXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbW3VuaW9uXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW1t1bmlvbi1kaXJlY3RpdmVdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbW3ZhcmlhbnRdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW3l5c3R5
cGVdXV1dKWRubAorbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkudmFsdWUudHlw
ZV1dKSwKKyAgICAgICAgW3VuaW9uXSwgICBbYjRfdmFsdWVfdHlwZV9zZXR1cF91bmlvbl0sCisg
ICAgICAgIFt2YXJpYW50XSwgW2I0X3ZhbHVlX3R5cGVfc2V0dXBfdmFyaWFudF0pXSkKKworCisj
IGI0X3ZhbHVlX3R5cGVfc2V0dXAKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBpZiBh
cGkudmFsdWUudHlwZSBpcyBwcm9wZXJseSBkZWZpbmVkLCBhbmQgcG9zc2libHkgcHJlcGFyZQor
IyBpdHMgdXNlLgorYjRfZGVmaW5lX3NpbGVudChbYjRfdmFsdWVfdHlwZV9zZXR1cF0sCitbIyBE
ZWZpbmUgZGVmYXVsdCB2YWx1ZS4KK2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFtbYXBpLnZhbHVl
LnR5cGVdXSwgW10sCitbIyAldW5pb24gPT4gYXBpLnZhbHVlLnR5cGU9dW5pb24tZGlyZWN0aXZl
CittNF9pZmRlZihbYjRfdW5pb25fbWVtYmVyc10sCitbbTRfZGVmaW5lKFtiNF9wZXJjZW50X2Rl
ZmluZV9raW5kKGFwaS52YWx1ZS50eXBlKV0sIFtrZXl3b3JkXSkKK200X2RlZmluZShbYjRfcGVy
Y2VudF9kZWZpbmUoYXBpLnZhbHVlLnR5cGUpXSwgW3VuaW9uLWRpcmVjdGl2ZV0pXSwKK1sjIG5v
IHRhZyBzZWVuID0+IGFwaS52YWx1ZS50eXBlPXtpbnR9CittNF9pZihiNF90YWdfc2Vlbl9mbGFn
LCAwLAorW200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfa2luZChhcGkudmFsdWUudHlwZSld
LCBbY29kZV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lKGFwaS52YWx1ZS50eXBlKV0s
IFtpbnRdKV0sCitbIyBvdGhlcndpc2UgYXBpLnZhbHVlLnR5cGU9eXlzdHlwZQorbTRfZGVmaW5l
KFtiNF9wZXJjZW50X2RlZmluZV9raW5kKGFwaS52YWx1ZS50eXBlKV0sIFtrZXl3b3JkXSkKK200
X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmUoYXBpLnZhbHVlLnR5cGUpXSwgW3l5c3R5cGVdKV0p
XSldKQorCisjIFNldCB1cC4KK200X2JtYXRjaChiNF9wZXJjZW50X2RlZmluZV9nZXRfa2luZChb
W2FwaS52YWx1ZS50eXBlXV0pLAorICAgW2tleXdvcmRcfHN0cmluZ10sIFtfYjRfdmFsdWVfdHlw
ZV9zZXR1cF9rZXl3b3JkXSkKK10pCisKKworIyMgLS0tLS0tLS0tLS0tLS0gIyMKKyMjIERlY2xh
cmF0aW9ucy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLSAjIworCisKKyMgYjRfdmFsdWVfdHlwZV9k
ZWZpbmUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfdmFsdWVfdHlwZV9k
ZWZpbmVdLAorW2I0X3ZhbHVlX3R5cGVfc2V0dXBbXWRubAorLyogVmFsdWUgdHlwZS4gICovCitt
NF9ibWF0Y2goYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2tpbmQoW1thcGkudmFsdWUudHlwZV1dKSwK
K1tjb2RlXSwKK1tbI2lmICEgZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtTVFlQRSAmJiAhIGRlZmlu
ZWQgXWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgXWI0X3BlcmNlbnRf
ZGVmaW5lX2dldChbW2FwaS52YWx1ZS50eXBlXV0pWyBdYjRfYXBpX1BSRUZJWFtTVFlQRTsKKyMg
ZGVmaW5lIF1iNF9hcGlfUFJFRklYW1NUWVBFX0lTX1RSSVZJQUwgMQorIyBkZWZpbmUgXWI0X2Fw
aV9QUkVGSVhbU1RZUEVfSVNfREVDTEFSRUQgMQorI2VuZGlmCitdXSwKK1ttNF9ibWF0Y2goYjRf
cGVyY2VudF9kZWZpbmVfZ2V0KFtbYXBpLnZhbHVlLnR5cGVdXSksCitbdW5pb25cfHVuaW9uLWRp
cmVjdGl2ZV0sCitbWyNpZiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbU1RZUEUgJiYgISBkZWZp
bmVkIF1iNF9hcGlfUFJFRklYW1NUWVBFX0lTX0RFQ0xBUkVECitdYjRfcGVyY2VudF9kZWZpbmVf
Z2V0X3N5bmNsaW5lKFtbYXBpLnZhbHVlLnVuaW9uLm5hbWVdXSlbCit1bmlvbiBdYjRfcGVyY2Vu
dF9kZWZpbmVfZ2V0KFtbYXBpLnZhbHVlLnVuaW9uLm5hbWVdXSlbCit7CitdYjRfdXNlcl91bmlv
bl9tZW1iZXJzWworfTsKK11iNF9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmUoW1thcGkudmFs
dWUudW5pb24ubmFtZV1dKVsKK3R5cGVkZWYgdW5pb24gXWI0X3BlcmNlbnRfZGVmaW5lX2dldChb
W2FwaS52YWx1ZS51bmlvbi5uYW1lXV0pWyBdYjRfYXBpX1BSRUZJWFtTVFlQRTsKKyMgZGVmaW5l
IF1iNF9hcGlfUFJFRklYW1NUWVBFX0lTX1RSSVZJQUwgMQorIyBkZWZpbmUgXWI0X2FwaV9QUkVG
SVhbU1RZUEVfSVNfREVDTEFSRUQgMQorI2VuZGlmCitdXSldKV0pCisKKworIyBiNF9sb2NhdGlv
bl90eXBlX2RlZmluZQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtiNF9s
b2NhdGlvbl90eXBlX2RlZmluZV0sCitbWy8qIExvY2F0aW9uIHR5cGUuICAqLworI2lmICEgZGVm
aW5lZCBdYjRfYXBpX1BSRUZJWFtMVFlQRSAmJiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbTFRZ
UEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgc3RydWN0IF1iNF9hcGlfUFJFRklYW0xUWVBFIF1iNF9h
cGlfUFJFRklYW0xUWVBFOworc3RydWN0IF1iNF9hcGlfUFJFRklYW0xUWVBFCit7CisgIGludCBm
aXJzdF9saW5lOworICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBpbnQg
bGFzdF9jb2x1bW47Cit9OworIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfREVDTEFS
RUQgMQorIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYK
K11dKQorCisKKyMgYjRfZGVjbGFyZV95eWxzdHlwZQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisj
IERlY2xhcmF0aW9ucyB0aGF0IG1pZ2h0IGVpdGhlciBnbyBpbnRvIHRoZSBoZWFkZXIgKGlmIC0t
ZGVmaW5lcykgb3IKKyMgaW4gdGhlIHBhcnNlciBib2R5LiAgRGVjbGFyZSBZWVNUWVBFL1lZTFRZ
UEUsIGFuZCB5eWx2YWwveXlsbG9jLgorbTRfZGVmaW5lKFtiNF9kZWNsYXJlX3l5bHN0eXBlXSwK
K1tiNF92YWx1ZV90eXBlX2RlZmluZVtdYjRfbG9jYXRpb25zX2lmKFsKK2I0X2xvY2F0aW9uX3R5
cGVfZGVmaW5lXSkKKworYjRfcHVyZV9pZihbXSwgW1tleHRlcm4gXWI0X2FwaV9QUkVGSVhbU1RZ
UEUgXWI0X3ByZWZpeFtsdmFsOworXWI0X2xvY2F0aW9uc19pZihbW2V4dGVybiBdYjRfYXBpX1BS
RUZJWFtMVFlQRSBdYjRfcHJlZml4W2xsb2M7XV0pXSlbXWRubAorXSkKKworCisjIGI0X1lZREVC
VUdfZGVmaW5lCisjIC0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X1lZREVCVUdfZGVm
aW5lXSwKK1tbLyogRGVidWcgdHJhY2VzLiAgKi8KK11tNF9pZihiNF9hcGlfcHJlZml4LCBbeXld
LAorW1sjaWZuZGVmIFlZREVCVUcKKyMgZGVmaW5lIFlZREVCVUcgXWI0X3BhcnNlX3RyYWNlX2lm
KFsxXSwgWzBdKVsKKyNlbmRpZl1dLAorW1sjaWZuZGVmIF1iNF9hcGlfUFJFRklYW0RFQlVHCisj
IGlmIGRlZmluZWQgWVlERUJVRworI2lmIFlZREVCVUcKKyMgICBkZWZpbmUgXWI0X2FwaV9QUkVG
SVhbREVCVUcgMQorIyAgZWxzZQorIyAgIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtERUJVRyAwCisj
ICBlbmRpZgorIyBlbHNlIC8qICEgZGVmaW5lZCBZWURFQlVHICovCisjICBkZWZpbmUgXWI0X2Fw
aV9QUkVGSVhbREVCVUcgXWI0X3BhcnNlX3RyYWNlX2lmKFsxXSwgWzBdKVsKKyMgZW5kaWYgLyog
ISBkZWZpbmVkIFlZREVCVUcgKi8KKyNlbmRpZiAgLyogISBkZWZpbmVkIF1iNF9hcGlfUFJFRklY
W0RFQlVHICovXV0pW11kbmwKK10pCisKKyMgYjRfZGVjbGFyZV95eWRlYnVnCisjIC0tLS0tLS0t
LS0tLS0tLS0tLQorbTRfZGVmaW5lKFtiNF9kZWNsYXJlX3l5ZGVidWddLAorW2I0X1lZREVCVUdf
ZGVmaW5lWworI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHCitleHRlcm4gaW50IF1iNF9wcmVmaXhb
ZGVidWc7CisjZW5kaWZdW11kbmwKK10pCisKKyMgYjRfeXlsbG9jX2RlZmF1bHRfZGVmaW5lCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgWVlMTE9DX0RFRkFVTFQuCittNF9k
ZWZpbmUoW2I0X3l5bGxvY19kZWZhdWx0X2RlZmluZV0sCitbWy8qIFlZTExPQ19ERUZBVUxUIC0t
IFNldCBDVVJSRU5UIHRvIHNwYW4gZnJvbSBSSFNbMV0gdG8gUkhTW05dLgorICAgSWYgTiBpcyAw
LCB0aGVuIHNldCBDVVJSRU5UIHRvIHRoZSBlbXB0eSBsb2NhdGlvbiB3aGljaCBlbmRzCisgICB0
aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNbMF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCisKKyNpZm5k
ZWYgWVlMTE9DX0RFRkFVTFQKKyMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywg
TikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgIGlmIChOKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmly
c3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsgICAgICAgIFwKKyAgICAg
ICAgICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfY29s
dW1uOyAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gWVlSSFNMT0Mg
KFJocywgTikubGFzdF9saW5lOyAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkubGFzdF9j
b2x1bW4gID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9jb2x1bW47ICAgICAgIFwKKyAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAo
Q3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0gICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIFlZUkhTTE9DIChSaHMsIDApLmxhc3RfbGluZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAoQ3VycmVudCkuZmlyc3RfY29sdW1u
ID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0gICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFlZ
UkhTTE9DIChSaHMsIDApLmxhc3RfY29sdW1uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB3aGlsZSAoMCkKKyNlbmRpZgorXV0pCisKKyMgYjRf
eXlfbG9jYXRpb25fcHJpbnRfZGVmaW5lCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBEZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQuCittNF9kZWZpbmUoW2I0X3l5X2xvY2F0aW9uX3By
aW50X2RlZmluZV0sCitbYjRfbG9jYXRpb25zX2lmKFtbCisvKiBZWV9MT0NBVElPTl9QUklOVCAt
LSBQcmludCB0aGUgbG9jYXRpb24gb24gdGhlIHN0cmVhbS4KKyAgIFRoaXMgbWFjcm8gd2FzIG5v
dCBtYW5kYXRlZCBvcmlnaW5hbGx5OiBkZWZpbmUgb25seSBpZiB3ZSBrbm93CisgICB3ZSB3b24n
dCBicmVhayB1c2VyIGNvZGU6IHdoZW4gdGhlc2UgYXJlIHRoZSBsb2NhdGlvbnMgd2Uga25vdy4g
ICovCisKKyNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKKyMgaWYgZGVmaW5lZCBdYjRfYXBpX1BS
RUZJWFtMVFlQRV9JU19UUklWSUFMICYmIF1iNF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwK
KworLyogUHJpbnQgKllZTE9DUCBvbiBZWU8uICBQcml2YXRlLCBkbyBub3QgcmVseSBvbiBpdHMg
ZXhpc3RlbmNlLiAqLworCitZWV9BVFRSSUJVVEVfVU5VU0VECitdYjRfZnVuY3Rpb25fZGVmaW5l
KFt5eV9sb2NhdGlvbl9wcmludF9dLAorICAgIFtzdGF0aWMgaW50XSwKKyAgICAgICAgICAgICAg
IFtbRklMRSAqeXlvXSwgICAgICAgICAgICAgICAgICAgIFt5eW9dXSwKKyAgICAgICAgICAgICAg
IFtbWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5bG9jcF0sIFt5eWxvY3BdXSlbCit7CisgIGludCBy
ZXMgPSAwOworICBpbnQgZW5kX2NvbCA9IDAgIT0geXlsb2NwLT5sYXN0X2NvbHVtbiA/IHl5bG9j
cC0+bGFzdF9jb2x1bW4gLSAxIDogMDsKKyAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9saW5lKQor
ICAgIHsKKyAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIiVkIiwgeXlsb2NwLT5maXJzdF9s
aW5lKTsKKyAgICAgIGlmICgwIDw9IHl5bG9jcC0+Zmlyc3RfY29sdW1uKQorICAgICAgICByZXMg
Kz0gWVlGUFJJTlRGICh5eW8sICIuJWQiLCB5eWxvY3AtPmZpcnN0X2NvbHVtbik7CisgICAgfQor
ICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKKyAgICB7CisgICAgICBpZiAoeXlsb2NwLT5m
aXJzdF9saW5lIDwgeXlsb2NwLT5sYXN0X2xpbmUpCisgICAgICAgIHsKKyAgICAgICAgICByZXMg
Kz0gWVlGUFJJTlRGICh5eW8sICItJWQiLCB5eWxvY3AtPmxhc3RfbGluZSk7CisgICAgICAgICAg
aWYgKDAgPD0gZW5kX2NvbCkKKyAgICAgICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIi4l
ZCIsIGVuZF9jb2wpOworICAgICAgICB9CisgICAgICBlbHNlIGlmICgwIDw9IGVuZF9jb2wgJiYg
eXlsb2NwLT5maXJzdF9jb2x1bW4gPCBlbmRfY29sKQorICAgICAgICByZXMgKz0gWVlGUFJJTlRG
ICh5eW8sICItJWQiLCBlbmRfY29sKTsKKyAgICB9CisgIHJldHVybiByZXM7CisgfQorCisjICBk
ZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAgICAgICAgICBcCisgIHl5X2xvY2F0
aW9uX3ByaW50XyAoRmlsZSwgJihMb2MpKQorCisjIGVsc2UKKyMgIGRlZmluZSBZWV9MT0NBVElP
Tl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKKyMgZW5kaWYKKyNlbmRpZl1dLAorW1svKiBU
aGlzIG1hY3JvIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqLworI2lm
bmRlZiBZWV9MT0NBVElPTl9QUklOVAorIyBkZWZpbmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwg
TG9jKSAoKHZvaWQpIDApCisjZW5kaWZdXSkKK10pCisKKyMgYjRfeXlsb2NfZGVmYXVsdAorIyAt
LS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZCB0byBhIHBvc3NpYmxlIGRlZmF1bHQgdmFsdWUgZm9y
IHl5bGxvYy4KK200X2RlZmluZShbYjRfeXlsb2NfZGVmYXVsdF0sCitbWworIyBpZiBkZWZpbmVk
IF1iNF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwgJiYgXWI0X2FwaV9QUkVGSVhbTFRZUEVf
SVNfVFJJVklBTAorICA9IHsgXW00X2pvaW4oWywgXSwKKyAgICAgICAgICAgICAgIG00X2RlZm4o
W2I0X2xvY2F0aW9uX2luaXRpYWxfbGluZV0pLAorICAgICAgICAgICAgICAgbTRfZGVmbihbYjRf
bG9jYXRpb25faW5pdGlhbF9jb2x1bW5dKSwKKyAgICAgICAgICAgICAgIG00X2RlZm4oW2I0X2xv
Y2F0aW9uX2luaXRpYWxfbGluZV0pLAorICAgICAgICAgICAgICAgbTRfZGVmbihbYjRfbG9jYXRp
b25faW5pdGlhbF9jb2x1bW5dKSlbIH0KKyMgZW5kaWYKK11dKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMv
eWFjYy5jIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9w
YXJ0eS9za2VsZXRvbnMveWFjYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZTQwZTY3NDEyZTRjZTc3OGQ3YzU1
MjRjYzBjMDg4MDg4YWQ2YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy95YWNjLmMKQEAgLTAs
MCArMSwxOTI3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSotIEMgLSotCisjIFlhY2MgY29tcGF0aWJsZSBza2VsZXRvbiBm
b3IgQmlzb24KKworIyBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDE1LCAy
MDE4LTIwMTkgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCisKK200X3B1c2hkZWYo
W2I0X2NvcHlyaWdodF95ZWFyc10sCisgICAgICAgICAgIFsxOTg0LCAxOTg5LTE5OTAsIDIwMDAt
MjAxNSwgMjAxOC0yMDE5XSkKKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl
LCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v
dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBDaGVjayB0aGUgdmFs
dWUgb2YgJWRlZmluZSBhcGkucHVzaC1wdWxsLgorYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVsdChb
W2FwaS5wdXNoLXB1bGxdXSwgW1twdWxsXV0pCitiNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1
ZXMoW1tbW2FwaS5wdXNoLXB1bGxdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtbcHVsbF1dLCBbW3B1c2hdXSwgW1tib3RoXV1dXSkKK2I0X2RlZmluZV9mbGFnX2lmKFtwdWxs
XSkgbTRfZGVmaW5lKFtiNF9wdWxsX2ZsYWddLCBbWzFdXSkKK2I0X2RlZmluZV9mbGFnX2lmKFtw
dXNoXSkgbTRfZGVmaW5lKFtiNF9wdXNoX2ZsYWddLCBbWzFdXSkKK200X2Nhc2UoYjRfcGVyY2Vu
dF9kZWZpbmVfZ2V0KFtbYXBpLnB1c2gtcHVsbF1dKSwKKyAgICAgICAgW3B1bGxdLCBbbTRfZGVm
aW5lKFtiNF9wdXNoX2ZsYWddLCBbWzBdXSldLAorICAgICAgICBbcHVzaF0sIFttNF9kZWZpbmUo
W2I0X3B1bGxfZmxhZ10sIFtbMF1dKV0pCisKKyMgSGFuZGxlIEJJU09OX1VTRV9QVVNIX0ZPUl9Q
VUxMIGZvciB0aGUgdGVzdCBzdWl0ZS4gIFNvIHRoYXQgcHVzaCBwYXJzaW5nCisjIHRlc3RzIGZ1
bmN0aW9uIGFzIHdyaXR0ZW4sIGRvIG5vdCBsZXQgQklTT05fVVNFX1BVU0hfRk9SX1BVTEwgbW9k
aWZ5IHRoZQorIyBiZWhhdmlvciBvZiBCaXNvbiBhdCBhbGwgd2hlbiBwdXNoIHBhcnNpbmcgaXMg
YWxyZWFkeSByZXF1ZXN0ZWQuCitiNF9kZWZpbmVfZmxhZ19pZihbdXNlX3B1c2hfZm9yX3B1bGxd
KQorYjRfdXNlX3B1c2hfZm9yX3B1bGxfaWYoWworICBiNF9wdXNoX2lmKFttNF9kZWZpbmUoW2I0
X3VzZV9wdXNoX2Zvcl9wdWxsX2ZsYWddLCBbWzBdXSldLAorICAgICAgICAgICAgIFttNF9kZWZp
bmUoW2I0X3B1c2hfZmxhZ10sIFtbMV1dKV0pXSkKKworIyBDaGVjayB0aGUgdmFsdWUgb2YgJWRl
ZmluZSBwYXJzZS5sYWMgYW5kIGZyaWVuZHMsIHdoZXJlIExBQyBzdGFuZHMgZm9yCisjIGxvb2th
aGVhZCBjb3JyZWN0aW9uLgorYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVsdChbW3BhcnNlLmxhY11d
LCBbW25vbmVdXSkKK2I0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1twYXJzZS5sYWMuZXMtY2Fw
YWNpdHktaW5pdGlhbF1dLCBbWzIwXV0pCitiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbcGFy
c2UubGFjLm1lbW9yeS10cmFjZV1dLCBbW2ZhaWx1cmVzXV0pCitiNF9wZXJjZW50X2RlZmluZV9j
aGVja192YWx1ZXMoW1tbW3BhcnNlLmxhY11dLCBbW2Z1bGxdXSwgW1tub25lXV1dXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbW1tbcGFyc2UubGFjLm1lbW9yeS10cmFjZV1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tmYWlsdXJlc11dLCBbW2Z1bGxdXV1d
KQorYjRfZGVmaW5lX2ZsYWdfaWYoW2xhY10pCittNF9kZWZpbmUoW2I0X2xhY19mbGFnXSwKKyAg
ICAgICAgICBbbTRfaWYoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbcGFyc2UubGFjXV0pLAorICAg
ICAgICAgICAgICAgICBbbm9uZV0sIFtbMF1dLCBbWzFdXSldKQorCittNF9pbmNsdWRlKGI0X3Nr
ZWxldG9uc2Rpci9bYy5tNF0pCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIERlZmF1bHQg
dmFsdWVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBTdGFjayBwYXJhbWV0ZXJz
LgorbTRfZGVmaW5lX2RlZmF1bHQoW2I0X3N0YWNrX2RlcHRoX21heF0sIFsxMDAwMF0pCittNF9k
ZWZpbmVfZGVmYXVsdChbYjRfc3RhY2tfZGVwdGhfaW5pdF0sICBbMjAwXSkKKworCisjIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFB1cmUvaW1wdXJlIGludGVyZmFjZXMuICAjIwor
IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKK2I0X3BlcmNlbnRfZGVmaW5lX2RlZmF1
bHQoW1thcGkucHVyZV1dLCBbW2ZhbHNlXV0pCitiNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1
ZXMoW1tbW2FwaS5wdXJlXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW2Zh
bHNlXV0sIFtbdHJ1ZV1dLCBbW11dLCBbW2Z1bGxdXV1dKQorCittNF9kZWZpbmUoW2I0X3B1cmVf
ZmxhZ10sIFtbMF1dKQorbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkucHVyZV1d
KSwKKyAgICAgICAgW2ZhbHNlXSwgW200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1swXV0pXSwK
KyAgICAgICAgW3RydWVdLCAgW200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1sxXV0pXSwKKyAg
ICAgICAgW10sICAgICAgW200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1sxXV0pXSwKKyAgICAg
ICAgW2Z1bGxdLCAgW200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1syXV0pXSkKKworbTRfZGVm
aW5lKFtiNF9wdXJlX2lmXSwKK1ttNF9jYXNlKGI0X3B1cmVfZmxhZywKKyAgICAgICAgIFswXSwg
WyQyXSwKKyAgICAgICAgIFsxXSwgWyQxXSwKKyAgICAgICAgIFsyXSwgWyQxXSldKQorICAgICAg
ICAgW200X2ZhdGFsKFtpbnZhbGlkIGFwaS5wdXJlIHZhbHVlOiBdJDEpXSldKQorCisjIGI0X3l5
ZXJyb3JfYXJnX2xvY19pZihBUkcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4
cGFuZCBBUkcgaWZmIHl5ZXJyb3IgaXMgdG8gYmUgZ2l2ZW4gYSBsb2NhdGlvbiBhcyBhcmd1bWVu
dC4KK200X2RlZmluZShbYjRfeXllcnJvcl9hcmdfbG9jX2lmXSwKK1tiNF9sb2NhdGlvbnNfaWYo
W200X2Nhc2UoYjRfcHVyZV9mbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbMV0sIFtt
NF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbJDFdKV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsyXSwgWyQxXSldKV0pCisKKyMgYjRfeXllcnJvcl9hcmdzCisjIC0tLS0tLS0tLS0tLS0t
LQorIyBBcmd1bWVudHMgcGFzc2VkIHRvIHl5ZXJyb3I6IHVzZXIgYXJncyBwbHVzIHl5bGxvYy4K
K200X2RlZmluZShbYjRfeXllcnJvcl9hcmdzXSwKK1tiNF95eWVycm9yX2FyZ19sb2NfaWYoWyZ5
eWxsb2MsIF0pZG5sCittNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbYjRfYXJncyhiNF9wYXJz
ZV9wYXJhbSksIF0pXSkKKworCisKKyMjIC0tLS0tLS0tLS0tLSAjIworIyMgRGF0YSBUeXBlcy4g
ICMjCisjIyAtLS0tLS0tLS0tLS0gIyMKKworIyBiNF9pbnRfdHlwZShNSU4sIE1BWCkKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybiB0aGUgc21hbGxlc3QgaW50IHR5cGUgYWJsZSB0
byBoYW5kbGUgbnVtYmVycyByYW5naW5nIGZyb20KKyMgTUlOIHRvIE1BWCAoaW5jbHVkZWQpLiAg
T3ZlcndyaXRlIHRoZSB2ZXJzaW9uIGZyb20gYy5tNCwgd2hpY2gKKyMgdXNlcyBvbmx5IEM4OSB0
eXBlcywgc28gdGhhdCB0aGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIHNob3J0ZXIKKyMgdHlwZXMs
IGFuZCBzbyB0aGF0IHByZS1DODkgY29tcGlsZXJzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KK200
X2RlZmluZShbYjRfaW50X3R5cGVdLAorW200X2lmKGI0X2ludHNfaW4oJEAsICAgICAgWzBdLCAg
IFsyNTVdKSwgWzFdLCBbeXl0eXBlX3VpbnQ4XSwKKyAgICAgICBiNF9pbnRzX2luKCRALCAgIFst
MTI4XSwgICBbMTI3XSksIFsxXSwgW3l5dHlwZV9pbnQ4XSwKKworICAgICAgIGI0X2ludHNfaW4o
JEAsICAgICAgWzBdLCBbNjU1MzVdKSwgWzFdLCBbeXl0eXBlX3VpbnQxNl0sCisgICAgICAgYjRf
aW50c19pbigkQCwgWy0zMjc2OF0sIFszMjc2N10pLCBbMV0sIFt5eXR5cGVfaW50MTZdLAorCisg
ICAgICAgbTRfZXZhbChbMCA8PSAkMV0pLCAgICAgICAgICAgICAgICBbMV0sIFt1bnNpZ25lZF0s
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ludF0p
XSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgU2VtYW50aWMgVmFsdWVzLiAgIyMK
KyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBiNF9saHNfdmFsdWUoU1lNQk9MLU5VTSwg
W1RZUEVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZWUgUkVBRE1F
LgorbTRfZGVmaW5lKFtiNF9saHNfdmFsdWVdLAorW2I0X3N5bWJvbF92YWx1ZSh5eXZhbCwgWyQx
XSwgWyQyXSldKQorCisKKyMgYjRfcmhzX3ZhbHVlKFJVTEUtTEVOR1RILCBQT1MsIFtTWU1CT0wt
TlVNXSwgW1RZUEVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIFNlZSBSRUFETUUuCittNF9kZWZpbmUoW2I0X3Joc192YWx1ZV0sCitb
YjRfc3ltYm9sX3ZhbHVlKFt5eXZzcEB7YjRfc3VidHJhY3QoWyQyXSwgWyQxXSlAfV0sIFskM10s
IFskNF0pXSkKKworCisjIyAtLS0tLS0tLS0tLSAjIworIyMgTG9jYXRpb25zLiAgIyMKKyMjIC0t
LS0tLS0tLS0tICMjCisKKyMgYjRfbGhzX2xvY2F0aW9uKCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0K
KyMgRXhwYW5zaW9uIG9mIEAkLgorbTRfZGVmaW5lKFtiNF9saHNfbG9jYXRpb25dLAorWyh5eWxv
YyldKQorCisKKyMgYjRfcmhzX2xvY2F0aW9uKFJVTEUtTEVOR1RILCBQT1MpCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeHBhbnNpb24gb2YgQFBPUywgd2hlcmUgdGhl
IGN1cnJlbnQgcnVsZSBoYXMgUlVMRS1MRU5HVEggc3ltYm9scworIyBvbiBSSFMuCittNF9kZWZp
bmUoW2I0X3Joc19sb2NhdGlvbl0sCitbKHl5bHNwQHtiNF9zdWJ0cmFjdChbJDJdLCBbJDFdKUB9
KV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0gIyMKKyMjIERlY2xhcmF0aW9ucy4gICMjCisjIyAt
LS0tLS0tLS0tLS0tLSAjIworCisjIGI0X2RlY2xhcmVfc2Nhbm5lcl9jb21tdW5pY2F0aW9uX3Zh
cmlhYmxlcworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
RGVjbGFyZSB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIGdsb2JhbCwgb3IgbG9jYWwgdG8gWVlQQVJT
RSBpZgorIyBwdXJlLXBhcnNlci4KK200X2RlZmluZShbYjRfZGVjbGFyZV9zY2FubmVyX2NvbW11
bmljYXRpb25fdmFyaWFibGVzXSwgW1sKKy8qIFRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KK2lu
dCB5eWNoYXI7CisKK11iNF9wdXJlX2lmKFtbCisvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhl
IGxvb2thaGVhZCBzeW1ib2wuICAqLworLyogRGVmYXVsdCB2YWx1ZSB1c2VkIGZvciBpbml0aWFs
aXphdGlvbiwgZm9yIHBhY2lmeWluZyBvbGRlciBHQ0NzCisgICBvciBub24tR0NDIGNvbXBpbGVy
cy4gICovCitZWV9JTklUSUFMX1ZBTFVFIChzdGF0aWMgWVlTVFlQRSB5eXZhbF9kZWZhdWx0OykK
K1lZU1RZUEUgeXlsdmFsIFlZX0lOSVRJQUxfVkFMVUUgKD0geXl2YWxfZGVmYXVsdCk7XWI0X2xv
Y2F0aW9uc19pZihbWworCisvKiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9va2FoZWFkIHN5bWJv
bC4gICovCitzdGF0aWMgWVlMVFlQRSB5eWxvY19kZWZhdWx0XWI0X3l5bG9jX2RlZmF1bHRbOwor
WVlMVFlQRSB5eWxsb2MgPSB5eWxvY19kZWZhdWx0O11dKV0sCitbWy8qIFRoZSBzZW1hbnRpYyB2
YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCitZWVNUWVBFIHl5bHZhbDtdYjRfbG9j
YXRpb25zX2lmKFtbCisvKiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9va2FoZWFkIHN5bWJvbC4g
ICovCitZWUxUWVBFIHl5bGxvY11iNF95eWxvY19kZWZhdWx0WztdXSlbCisvKiBOdW1iZXIgb2Yg
c3ludGF4IGVycm9ycyBzbyBmYXIuICAqLworaW50IHl5bmVycnM7XV0pXSkKKworCisjIGI0X2Rl
Y2xhcmVfcGFyc2VyX3N0YXRlX3ZhcmlhYmxlcworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgRGVjbGFyZSBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBuZWVkZWQgdG8g
bWFpbnRhaW4gdGhlIHBhcnNlciBzdGF0ZQorIyBiZXR3ZWVuIGNhbGxzIHRvIHl5cHVzaF9wYXJz
ZS4KK200X2RlZmluZShbYjRfZGVjbGFyZV9wYXJzZXJfc3RhdGVfdmFyaWFibGVzXSwgW2I0X3B1
cmVfaWYoW1sKKyAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBmYXIuICAqLworICAg
IGludCB5eW5lcnJzOworXV0pWworICAgIGludCB5eXN0YXRlOworICAgIC8qIE51bWJlciBvZiB0
b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLworICAgIGlu
dCB5eWVycnN0YXR1czsKKworICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAg
ICAgICd5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMuCisgICAgICAgJ3l5dnMnOiByZWxhdGVkIHRv
IHNlbWFudGljIHZhbHVlcy5dYjRfbG9jYXRpb25zX2lmKFtbCisgICAgICAgJ3l5bHMnOiByZWxh
dGVkIHRvIGxvY2F0aW9ucy5dXSlbCisKKyAgICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocm91
Z2ggc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKKyAgICAgICB0byByZWFs
bG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAgIC8qIFRoZSBzdGF0ZSBzdGFjay4gICov
CisgICAgeXl0eXBlX2ludDE2IHl5c3NhW1lZSU5JVERFUFRIXTsKKyAgICB5eXR5cGVfaW50MTYg
Knl5c3M7CisgICAgeXl0eXBlX2ludDE2ICp5eXNzcDsKKworICAgIC8qIFRoZSBzZW1hbnRpYyB2
YWx1ZSBzdGFjay4gICovCisgICAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07CisgICAgWVlT
VFlQRSAqeXl2czsKKyAgICBZWVNUWVBFICp5eXZzcDtdYjRfbG9jYXRpb25zX2lmKFtbCisKKyAg
ICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQ
VEhdOworICAgIFlZTFRZUEUgKnl5bHM7CisgICAgWVlMVFlQRSAqeXlsc3A7CisKKyAgICAvKiBU
aGUgbG9jYXRpb25zIHdoZXJlIHRoZSBlcnJvciBzdGFydGVkIGFuZCBlbmRlZC4gICovCisgICAg
WVlMVFlQRSB5eWVycm9yX3JhbmdlWzNdO11dKVsKKworICAgIFlZU0laRV9UIHl5c3RhY2tzaXpl
O11iNF9sYWNfaWYoW1sKKworICAgIHl5dHlwZV9pbnQxNiB5eWVzYUB7XWI0X3BlcmNlbnRfZGVm
aW5lX2dldChbW3BhcnNlLmxhYy5lcy1jYXBhY2l0eS1pbml0aWFsXV0pW0B9OworICAgIHl5dHlw
ZV9pbnQxNiAqeXllczsKKyAgICBZWVNJWkVfVCB5eWVzX2NhcGFjaXR5O11dKV0pCisKKworIyBf
YjRfZGVjbGFyZV95eXBhcnNlX3B1c2gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERl
Y2xhcmF0aW9uIG9mIHl5cGFyc2UgKGFuZCBkZXBlbmRlbmNpZXMpIHdoZW4gdXNpbmcgdGhlIHB1
c2ggcGFyc2VyCisjIChpbmNsdWRpbmcgaW4gcHVsbCBtb2RlKS4KK200X2RlZmluZShbX2I0X2Rl
Y2xhcmVfeXlwYXJzZV9wdXNoXSwKK1tbI2lmbmRlZiBZWVBVU0hfTU9SRV9ERUZJTkVECisjIGRl
ZmluZSBZWVBVU0hfTU9SRV9ERUZJTkVECitlbnVtIHsgWVlQVVNIX01PUkUgPSA0IH07CisjZW5k
aWYKKwordHlwZWRlZiBzdHJ1Y3QgXWI0X3ByZWZpeFtwc3RhdGUgXWI0X3ByZWZpeFtwc3RhdGU7
CisKK11iNF9wdWxsX2lmKFtiNF9mdW5jdGlvbl9kZWNsYXJlKFtiNF9wcmVmaXhbcGFyc2VdXSwg
W1tpbnRdXSwgYjRfcGFyc2VfcGFyYW0pCitdKWI0X2Z1bmN0aW9uX2RlY2xhcmUoW2I0X3ByZWZp
eFtwdXNoX3BhcnNlXV0sIFtbaW50XV0sCisgIFtbYjRfcHJlZml4W3BzdGF0ZSAqcHNdXSwgW1tw
c11dXWI0X3B1cmVfaWYoWywKKyAgW1tbaW50IHB1c2hlZF9jaGFyXV0sIFtbcHVzaGVkX2NoYXJd
XV0sCisgIFtbYjRfYXBpX1BSRUZJWFtTVFlQRSBjb25zdCAqcHVzaGVkX3ZhbF1dLCBbW3B1c2hl
ZF92YWxdXV1iNF9sb2NhdGlvbnNfaWYoWywKKyAgW1tiNF9hcGlfUFJFRklYW0xUWVBFICpwdXNo
ZWRfbG9jXV0sIFtbcHVzaGVkX2xvY11dXV0pXSltNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBb
LAorICBiNF9wYXJzZV9wYXJhbV0pKQorYjRfcHVsbF9pZihbYjRfZnVuY3Rpb25fZGVjbGFyZShb
YjRfcHJlZml4W3B1bGxfcGFyc2VdXSwgW1tpbnRdXSwKKyAgW1tiNF9wcmVmaXhbcHN0YXRlICpw
c11dLCBbW3BzXV1dbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywKKyAgYjRfcGFyc2VfcGFy
YW1dKSldKQorYjRfZnVuY3Rpb25fZGVjbGFyZShbYjRfcHJlZml4W3BzdGF0ZV9uZXddXSwgW2I0
X3ByZWZpeFtwc3RhdGUgKl1dLAorICAgICAgICAgICAgICAgICAgICBbW1t2b2lkXV0sIFtdXSkK
K2I0X2Z1bmN0aW9uX2RlY2xhcmUoW2I0X3ByZWZpeFtwc3RhdGVfZGVsZXRlXV0sIFtbdm9pZF1d
LAorICAgICAgICAgICAgICAgICAgIFtbYjRfcHJlZml4W3BzdGF0ZSAqcHNdXSwgW1twc11dXSlk
bmwKK10pCisKKyMgX2I0X2RlY2xhcmVfeXlwYXJzZQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisj
IFdoZW4gbm90IHRoZSBwdXNoIHBhcnNlci4KK200X2RlZmluZShbX2I0X2RlY2xhcmVfeXlwYXJz
ZV0sCitbYjRfZnVuY3Rpb25fZGVjbGFyZShiNF9wcmVmaXhbcGFyc2VdLCBbaW50XSwgYjRfcGFy
c2VfcGFyYW0pXSkKKworCisjIGI0X2RlY2xhcmVfeXlwYXJzZQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0KK200X2RlZmluZShbYjRfZGVjbGFyZV95eXBhcnNlXSwKK1tiNF9wdXNoX2lmKFtfYjRfZGVj
bGFyZV95eXBhcnNlX3B1c2hdLAorICAgICAgICAgICAgW19iNF9kZWNsYXJlX3l5cGFyc2VdKVtd
ZG5sCitdKQorCisKKyMgYjRfc2hhcmVkX2RlY2xhcmF0aW9ucworIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIERlY2xhcmF0aW9uIHRoYXQgbWlnaHQgZWl0aGVyIGdvIGludG8gdGhlIGhlYWRl
ciAoaWYgLS1kZWZpbmVzKQorIyBvciBvcGVuIGNvZGVkIGluIHRoZSBwYXJzZXIgYm9keS4KK200
X2RlZmluZShbYjRfc2hhcmVkX2RlY2xhcmF0aW9uc10sCitbYjRfY3BwX2d1YXJkX29wZW4oW2I0
X3NwZWNfZGVmaW5lc19maWxlXSlbCitdYjRfZGVjbGFyZV95eWRlYnVnWworXWI0X3BlcmNlbnRf
Y29kZV9nZXQoW1tyZXF1aXJlc11dKVsKK11iNF90b2tlbl9lbnVtc19kZWZpbmVzWworXWI0X2Rl
Y2xhcmVfeXlsc3R5cGVbCitdYjRfZGVjbGFyZV95eXBhcnNlWworXWI0X3BlcmNlbnRfY29kZV9n
ZXQoW1twcm92aWRlc11dKVsKK11iNF9jcHBfZ3VhcmRfY2xvc2UoW2I0X3NwZWNfZGVmaW5lc19m
aWxlXSlbXWRubAorXSkKKworIyMgLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE91dHB1dCBmaWxlcy4g
ICMjCisjIyAtLS0tLS0tLS0tLS0tLSAjIworCitiNF9vdXRwdXRfYmVnaW4oW2I0X3BhcnNlcl9m
aWxlX25hbWVdKVsKK11iNF9jb3B5cmlnaHQoW0Jpc29uIGltcGxlbWVudGF0aW9uIGZvciBZYWNj
LWxpa2UgcGFyc2VycyBpbiBDXSlbCisvKiBDIExBTFIoMSkgcGFyc2VyIHNrZWxldG9uIHdyaXR0
ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiwgYnkKKyAgIHNpbXBsaWZ5aW5nIHRoZSBvcmlnaW5hbCBz
by1jYWxsZWQgInNlbWFudGljIiBwYXJzZXIuICAqLworCisvKiBBbGwgc3ltYm9scyBkZWZpbmVk
IGJlbG93IHNob3VsZCBiZWdpbiB3aXRoIHl5IG9yIFlZLCB0byBhdm9pZAorICAgaW5mcmluZ2lu
ZyBvbiB1c2VyIG5hbWUgc3BhY2UuICBUaGlzIHNob3VsZCBiZSBkb25lIGV2ZW4gZm9yIGxvY2Fs
CisgICB2YXJpYWJsZXMsIGFzIHRoZXkgbWlnaHQgb3RoZXJ3aXNlIGJlIGV4cGFuZGVkIGJ5IHVz
ZXIgbWFjcm9zLgorICAgVGhlcmUgYXJlIHNvbWUgdW5hdm9pZGFibGUgZXhjZXB0aW9ucyB3aXRo
aW4gaW5jbHVkZSBmaWxlcyB0bworICAgZGVmaW5lIG5lY2Vzc2FyeSBsaWJyYXJ5IHN5bWJvbHM7
IHRoZXkgYXJlIG5vdGVkICJJTkZSSU5HRVMgT04KKyAgIFVTRVIgTkFNRSBTUEFDRSIgYmVsb3cu
ICAqLworCitdYjRfZGlzY2xhaW1lclsKK11iNF9pZGVudGlmaWNhdGlvblsKK11iNF9wZXJjZW50
X2NvZGVfZ2V0KFtbdG9wXV0pW11kbmwKK200X2lmKGI0X2FwaV9wcmVmaXgsIFt5eV0sIFtdLAor
W1svKiBTdWJzdGl0dXRlIHRoZSB0eXBlIG5hbWVzLiAgKi8KKyNkZWZpbmUgWVlTVFlQRSAgICAg
ICAgIF1iNF9hcGlfUFJFRklYW1NUWVBFXWI0X2xvY2F0aW9uc19pZihbWworI2RlZmluZSBZWUxU
WVBFICAgICAgICAgXWI0X2FwaV9QUkVGSVhbTFRZUEVdXSldKVsKK11tNF9pZihiNF9wcmVmaXgs
IFt5eV0sIFtdLAorW1svKiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24gbmFt
ZXMuICAqL11iNF9wdWxsX2lmKFtbCisjZGVmaW5lIHl5cGFyc2UgICAgICAgICBdYjRfcHJlZml4
W3BhcnNlXV0pYjRfcHVzaF9pZihbWworI2RlZmluZSB5eXB1c2hfcGFyc2UgICAgXWI0X3ByZWZp
eFtwdXNoX3BhcnNlXWI0X3B1bGxfaWYoW1sKKyNkZWZpbmUgeXlwdWxsX3BhcnNlICAgIF1iNF9w
cmVmaXhbcHVsbF9wYXJzZV1dKVsKKyNkZWZpbmUgeXlwc3RhdGVfbmV3ICAgIF1iNF9wcmVmaXhb
cHN0YXRlX25ldworI2RlZmluZSB5eXBzdGF0ZV9kZWxldGUgXWI0X3ByZWZpeFtwc3RhdGVfZGVs
ZXRlCisjZGVmaW5lIHl5cHN0YXRlICAgICAgICBdYjRfcHJlZml4W3BzdGF0ZV1dKVsKKyNkZWZp
bmUgeXlsZXggICAgICAgICAgIF1iNF9wcmVmaXhbbGV4CisjZGVmaW5lIHl5ZXJyb3IgICAgICAg
ICBdYjRfcHJlZml4W2Vycm9yCisjZGVmaW5lIHl5ZGVidWcgICAgICAgICBdYjRfcHJlZml4W2Rl
YnVnCisjZGVmaW5lIHl5bmVycnMgICAgICAgICBdYjRfcHJlZml4W25lcnJzCitdXWI0X3B1cmVf
aWYoW10sIFtbCisjZGVmaW5lIHl5bHZhbCAgICAgICAgICBdYjRfcHJlZml4W2x2YWwKKyNkZWZp
bmUgeXljaGFyICAgICAgICAgIF1iNF9wcmVmaXhbY2hhcl1iNF9sb2NhdGlvbnNfaWYoW1sKKyNk
ZWZpbmUgeXlsbG9jICAgICAgICAgIF1iNF9wcmVmaXhbbGxvY11dKV0pKVsKKworXWI0X3VzZXJf
cHJlX3Byb2xvZ3VlWworXWI0X251bGxfZGVmaW5lWworCisvKiBFbmFibGluZyB2ZXJib3NlIGVy
cm9yIG1lc3NhZ2VzLiAgKi8KKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKKyMgdW5kZWYgWVlFUlJP
Ul9WRVJCT1NFCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMQorI2Vsc2UKKyMgZGVmaW5lIFlZ
RVJST1JfVkVSQk9TRSBdYjRfZXJyb3JfdmVyYm9zZV9pZihbMV0sIFswXSlbCisjZW5kaWYKKwor
XW00X2lmdmFsKG00X3F1b3RlKGI0X3NwZWNfZGVmaW5lc19maWxlKSwKK1tbLyogSW4gYSBmdXR1
cmUgcmVsZWFzZSBvZiBCaXNvbiwgdGhpcyBzZWN0aW9uIHdpbGwgYmUgcmVwbGFjZWQKKyAgIGJ5
ICNpbmNsdWRlICJAYmFzZW5hbWUoXWI0X3NwZWNfZGVmaW5lc19maWxlW0ApIi4gICovCitdXSlk
bmwKK2I0X3NoYXJlZF9kZWNsYXJhdGlvbnNbCisKK11iNF91c2VyX3Bvc3RfcHJvbG9ndWVbCitd
YjRfcGVyY2VudF9jb2RlX2dldFtdZG5sCisKK1sjaWZkZWYgc2hvcnQKKyMgdW5kZWYgc2hvcnQK
KyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX1VJTlQ4Cit0eXBlZGVmIFlZVFlQRV9VSU5UOCB5eXR5
cGVfdWludDg7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHl5dHlwZV91aW50ODsKKyNl
bmRpZgorCisjaWZkZWYgWVlUWVBFX0lOVDgKK3R5cGVkZWYgWVlUWVBFX0lOVDggeXl0eXBlX2lu
dDg7CisjZWxzZQordHlwZWRlZiBzaWduZWQgY2hhciB5eXR5cGVfaW50ODsKKyNlbmRpZgorCisj
aWZkZWYgWVlUWVBFX1VJTlQxNgordHlwZWRlZiBZWVRZUEVfVUlOVDE2IHl5dHlwZV91aW50MTY7
CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB5eXR5cGVfdWludDE2OworI2VuZGlmCisK
KyNpZmRlZiBZWVRZUEVfSU5UMTYKK3R5cGVkZWYgWVlUWVBFX0lOVDE2IHl5dHlwZV9pbnQxNjsK
KyNlbHNlCit0eXBlZGVmIHNob3J0IHl5dHlwZV9pbnQxNjsKKyNlbmRpZgorCisjaWZuZGVmIFlZ
U0laRV9UCisjIGlmZGVmIF9fU0laRV9UWVBFX18KKyMgIGRlZmluZSBZWVNJWkVfVCBfX1NJWkVf
VFlQRV9fCisjIGVsaWYgZGVmaW5lZCBzaXplX3QKKyMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QK
KyMgZWxpZiAhIGRlZmluZWQgWVlTSVpFX1QKKyMgIGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBJTkZS
SU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Cisj
IGVsc2UKKyMgIGRlZmluZSBZWVNJWkVfVCB1bnNpZ25lZAorIyBlbmRpZgorI2VuZGlmCisKKyNk
ZWZpbmUgWVlTSVpFX01BWElNVU0gKChZWVNJWkVfVCkgLTEpCisKKyNpZm5kZWYgWVlfCisjIGlm
IGRlZmluZWQgWVlFTkFCTEVfTkxTICYmIFlZRU5BQkxFX05MUworIyAgaWYgRU5BQkxFX05MUwor
IyAgIGluY2x1ZGUgPGxpYmludGwuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAq
LworIyAgIGRlZmluZSBZWV8oTXNnaWQpIGRnZXR0ZXh0ICgiYmlzb24tcnVudGltZSIsIE1zZ2lk
KQorIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZuZGVmIFlZXworIyAgZGVmaW5lIFlZXyhNc2dpZCkg
TXNnaWQKKyMgZW5kaWYKKyNlbmRpZgorCitdYjRfYXR0cmlidXRlX2RlZmluZVsKKworI2lmIF1i
NF9sYWNfaWYoW1sxXV0sIFtbISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NF
XV0pWworCisvKiBUaGUgcGFyc2VyIGludm9rZXMgYWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRo
ZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovXWRubAorYjRfcHVzaF9pZihbXSwgW2I0X2xhY19pZihb
XSwgW1sKKworIyBpZmRlZiBZWVNUQUNLX1VTRV9BTExPQ0EKKyMgIGlmIFlZU1RBQ0tfVVNFX0FM
TE9DQQorIyAgIGlmZGVmIF9fR05VQ19fCisjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYnVp
bHRpbl9hbGxvY2EKKyMgICBlbGlmIGRlZmluZWQgX19CVUlMVElOX1ZBX0FSR19JTkNSCisjICAg
IGluY2x1ZGUgPGFsbG9jYS5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisj
ICAgZWxpZiBkZWZpbmVkIF9BSVgKKyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19hbGxvY2EK
KyMgICBlbGlmIGRlZmluZWQgX01TQ19WRVIKKyMgICAgaW5jbHVkZSA8bWFsbG9jLmg+IC8qIElO
RlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICAgZGVmaW5lIGFsbG9jYSBfYWxsb2Nh
CisjICAgZWxzZQorIyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxvY2EKKyMgICAgaWYgISBk
ZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTCisjICAgICBpbmNsdWRl
IDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworICAgICAgLyog
VXNlIEVYSVRfU1VDQ0VTUyBhcyBhIHdpdG5lc3MgZm9yIHN0ZGxpYi5oLiAgKi8KKyMgICAgIGlm
bmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgICBkZWZpbmUgRVhJVF9TVUNDRVNTIDAKKyMgICAgIGVu
ZGlmCisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVuZGlmCisjIGVuZGlmXV0pXSlbCisKKyMg
aWZkZWYgWVlTVEFDS19BTExPQworICAgLyogUGFjaWZ5IEdDQydzICdlbXB0eSBpZi1ib2R5JyB3
YXJuaW5nLiAgKi8KKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7IC8qIGVtcHR5ICov
OyB9IHdoaWxlICgwKQorIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQorICAgIC8qIFRo
ZSBPUyBtaWdodCBndWFyYW50ZWUgb25seSBvbmUgZ3VhcmQgcGFnZSBhdCB0aGUgYm90dG9tIG9m
IHRoZSBzdGFjaywKKyAgICAgICBhbmQgYSBwYWdlIHNpemUgY2FuIGJlIGFzIHNtYWxsIGFzIDQw
OTYgYnl0ZXMuICBTbyB3ZSBjYW5ub3Qgc2FmZWx5CisgICAgICAgaW52b2tlIGFsbG9jYSAoTikg
aWYgTiBleGNlZWRzIDQwOTYuICBVc2UgYSBzbGlnaHRseSBzbWFsbGVyIG51bWJlcgorICAgICAg
IHRvIGFsbG93IGZvciBhIGZldyBjb21waWxlci1hbGxvY2F0ZWQgdGVtcG9yYXJ5IHN0YWNrIHNs
b3RzLiAgKi8KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVNIDQwMzIgLyogcmVhc29u
YWJsZSBjaXJjYSAyMDA2ICovCisjICBlbmRpZgorIyBlbHNlCisjICBkZWZpbmUgWVlTVEFDS19B
TExPQyBZWU1BTExPQworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRSBZWUZSRUUKKyMgIGlmbmRlZiBZ
WVNUQUNLX0FMTE9DX01BWElNVU0KKyMgICBkZWZpbmUgWVlTVEFDS19BTExPQ19NQVhJTVVNIFlZ
U0laRV9NQVhJTVVNCisjICBlbmRpZgorIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgISBk
ZWZpbmVkIEVYSVRfU1VDQ0VTUyBcCisgICAgICAgJiYgISAoKGRlZmluZWQgWVlNQUxMT0MgfHwg
ZGVmaW5lZCBtYWxsb2MpIFwKKyAgICAgICAgICAgICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwgZGVm
aW5lZCBmcmVlKSkpCisjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KKyMgICBpZm5kZWYgRVhJVF9TVUNDRVNTCisjICAgIGRlZmluZSBFWElU
X1NVQ0NFU1MgMAorIyAgIGVuZGlmCisjICBlbmRpZgorIyAgaWZuZGVmIFlZTUFMTE9DCisjICAg
ZGVmaW5lIFlZTUFMTE9DIG1hbGxvYworIyAgIGlmICEgZGVmaW5lZCBtYWxsb2MgJiYgISBkZWZp
bmVkIEVYSVRfU1VDQ0VTUwordm9pZCAqbWFsbG9jIChZWVNJWkVfVCk7IC8qIElORlJJTkdFUyBP
TiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgIGlmbmRlZiBZWUZS
RUUKKyMgICBkZWZpbmUgWVlGUkVFIGZyZWUKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRl
ZmluZWQgRVhJVF9TVUNDRVNTCit2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBV
U0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWZdYjRfbGFjX2lm
KFtbCisjIGRlZmluZSBZWUNPUFlfTkVFREVEIDFdXSlbCisjZW5kaWZdYjRfbGFjX2lmKFtdLCBb
WyAvKiAhIGRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVSUk9SX1ZFUkJPU0UgKi9dXSlbCisKKwor
I2lmICghIGRlZmluZWQgeXlvdmVyZmxvdyBcCisgICAgICYmICghIGRlZmluZWQgX19jcGx1c3Bs
dXMgXAorICAgICAgICAgfHwgKF1iNF9sb2NhdGlvbnNfaWYoW1tkZWZpbmVkIF1iNF9hcGlfUFJF
RklYW0xUWVBFX0lTX1RSSVZJQUwgJiYgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfVFJJVklBTCBc
CisgICAgICAgICAgICAgJiYgXV0pW2RlZmluZWQgXWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNfVFJJ
VklBTCAmJiBdYjRfYXBpX1BSRUZJWFtTVFlQRV9JU19UUklWSUFMKSkpCisKKy8qIEEgdHlwZSB0
aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIuICAqLwordW5pb24g
eXlhbGxvYworeworICB5eXR5cGVfaW50MTYgeXlzc19hbGxvYzsKKyAgWVlTVFlQRSB5eXZzX2Fs
bG9jO11iNF9sb2NhdGlvbnNfaWYoWworICBZWUxUWVBFIHl5bHNfYWxsb2M7XSlbCit9OworCisv
KiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBh
bmQgdGhlIG5leHQuICAqLworIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1
bmlvbiB5eWFsbG9jKSAtIDEpCisKKy8qIFRoZSBzaXplIG9mIGFuIGFycmF5IGxhcmdlIHRvIGVu
b3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAorICAgTiBlbGVtZW50cy4gICovCitd
YjRfbG9jYXRpb25zX2lmKAorWyMgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAorICAgICAoKE4p
ICogKHNpemVvZiAoeXl0eXBlX2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkgKyBzaXplb2YgKFlZ
TFRZUEUpKSBcCisgICAgICArIDIgKiBZWVNUQUNLX0dBUF9NQVhJTVVNKV0sCitbIyBkZWZpbmUg
WVlTVEFDS19CWVRFUyhOKSBcCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsg
c2l6ZW9mIChZWVNUWVBFKSkgXAorICAgICAgKyBZWVNUQUNLX0dBUF9NQVhJTVVNKV0pWworCisj
IGRlZmluZSBZWUNPUFlfTkVFREVEIDEKKworLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xk
IGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCisgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpF
IGFuZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKKyAgIGVsZW1l
bnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhl
CisgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9u
IGZvciB0aGUgbmV4dAorICAgc3RhY2suICAqLworIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShT
dGFja19hbGxvYywgU3RhY2spICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBZWVNJWkVfVCB5eW5ld2J5dGVzOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBZWUNP
UFkgKCZ5eXB0ci0+U3RhY2tfYWxsb2MsIFN0YWNrLCB5eXNpemUpOyAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eW5ld2J5dGVzID0geXlzdGFja3NpemUg
KiBzaXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCisgICAgICAgIHl5cHRy
ICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7ICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgd2hpbGUgKDApCisKKyNlbmRpZgorCisjaWYgZGVm
aW5lZCBZWUNPUFlfTkVFREVEICYmIFlZQ09QWV9ORUVERUQKKy8qIENvcHkgQ09VTlQgb2JqZWN0
cyBmcm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90
IG92ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYm
IDEgPCBfX0dOVUNfXworIyAgIGRlZmluZSBZWUNPUFkoRHN0LCBTcmMsIENvdW50KSBcCisgICAg
ICBfX2J1aWx0aW5fbWVtY3B5IChEc3QsIFNyYywgKENvdW50KSAqIHNpemVvZiAoKihTcmMpKSkK
KyMgIGVsc2UKKyMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBDb3VudCkgICAgICAgICAgICAg
IFwKKyAgICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICBZWVNJWkVfVCB5eWk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBmb3Ig
KHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKSAgIFwKKyAgICAgICAgICAgIChEc3QpW3l5
aV0gPSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlICgwKQorIyAgZW5kaWYKKyMgZW5k
aWYKKyNlbmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLworCisvKiBZWUZJTkFMIC0tIFN0YXRlIG51
bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLworI2RlZmluZSBZWUZJTkFMICBdYjRf
ZmluYWxfc3RhdGVfbnVtYmVyWworLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4g
ICovCisjZGVmaW5lIFlZTEFTVCAgIF1iNF9sYXN0WworCisvKiBZWU5UT0tFTlMgLS0gTnVtYmVy
IG9mIHRlcm1pbmFscy4gICovCisjZGVmaW5lIFlZTlRPS0VOUyAgXWI0X3Rva2Vuc19udW1iZXJb
CisvKiBZWU5OVFMgLS0gTnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCisjZGVmaW5lIFlZTk5U
UyAgXWI0X250ZXJtc19udW1iZXJbCisvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVsZXMuICAq
LworI2RlZmluZSBZWU5SVUxFUyAgXWI0X3J1bGVzX251bWJlclsKKy8qIFlZTlNUQVRFUyAtLSBO
dW1iZXIgb2Ygc3RhdGVzLiAgKi8KKyNkZWZpbmUgWVlOU1RBVEVTICBdYjRfc3RhdGVzX251bWJl
clsKKworI2RlZmluZSBZWVVOREVGVE9LICBdYjRfdW5kZWZfdG9rZW5fbnVtYmVyWworI2RlZmlu
ZSBZWU1BWFVUT0sgICBdYjRfdXNlcl90b2tlbl9udW1iZXJfbWF4WworCisvKiBZWVRSQU5TTEFU
RShUT0tFTi1OVU0pIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBUT0tFTi1OVU0K
KyAgIGFzIHJldHVybmVkIGJ5IHl5bGV4LCB3aXRoIG91dC1vZi1ib3VuZHMgY2hlY2tpbmcuICAq
LworI2RlZmluZSBZWVRSQU5TTEFURShZWVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAoKHVuc2lnbmVkKSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5
eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKKworLyogWVlUUkFOU0xBVEVbVE9LRU4tTlVN
XSAtLSBTeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gVE9LRU4tTlVNCisgICBhcyByZXR1
cm5lZCBieSB5eWxleC4gICovCitzdGF0aWMgY29uc3QgXWI0X2ludF90eXBlX2ZvcihbYjRfdHJh
bnNsYXRlXSlbIHl5dHJhbnNsYXRlW10gPQoreworICBdYjRfdHJhbnNsYXRlWworfTsKKworI2lm
IF1iNF9hcGlfUFJFRklYW0RFQlVHCitdYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlX2RlZmluZShb
cmxpbmVdLCBbYjRfcmxpbmVdLAorICAgICBbW1lZUkxJTkVbWVlOXSAtLSBTb3VyY2UgbGluZSB3
aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuXV0pWworI2VuZGlmCisKKyNpZiBdYjRf
YXBpX1BSRUZJWFtERUJVRyB8fCBZWUVSUk9SX1ZFUkJPU0UgfHwgXWI0X3Rva2VuX3RhYmxlX2Zs
YWdbCisvKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wg
U1lNQk9MLU5VTS4KKyAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZ
WU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0
bmFtZVtdID0KK3sKKyAgXWI0X3RuYW1lWworfTsKKyNlbmRpZgorCisjIGlmZGVmIFlZUFJJTlQK
Ky8qIFlZVE9LTlVNW05VTV0gLS0gKEV4dGVybmFsKSB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGlu
ZyB0byB0aGUKKyAgIChpbnRlcm5hbCkgc3ltYm9sIG51bWJlciBOVU0gKHdoaWNoIG11c3QgYmUg
dGhhdCBvZiBhIHRva2VuKS4gICovCitzdGF0aWMgY29uc3QgXWI0X2ludF90eXBlX2ZvcihbYjRf
dG9rbnVtXSlbIHl5dG9rbnVtW10gPQoreworICBdYjRfdG9rbnVtWworfTsKKyMgZW5kaWYKKwor
I2RlZmluZSBZWVBBQ1RfTklORiBdYjRfcGFjdF9uaW5mWworCisjZGVmaW5lIHl5cGFjdF92YWx1
ZV9pc19kZWZhdWx0KFl5c3RhdGUpIFwKKyAgXWI0X3RhYmxlX3ZhbHVlX2VxdWFscyhbW3BhY3Rd
XSwgW1tZeXN0YXRlXV0sIFtiNF9wYWN0X25pbmZdKVsKKworI2RlZmluZSBZWVRBQkxFX05JTkYg
XWI0X3RhYmxlX25pbmZbCisKKyNkZWZpbmUgeXl0YWJsZV92YWx1ZV9pc19lcnJvcihZeXRhYmxl
X3ZhbHVlKSBcCisgIF1iNF90YWJsZV92YWx1ZV9lcXVhbHMoW1t0YWJsZV1dLCBbW1l5dGFibGVf
dmFsdWVdXSwgW2I0X3RhYmxlX25pbmZdKVsKKworXWI0X3BhcnNlcl90YWJsZXNfZGVmaW5lWwor
CisjZGVmaW5lIHl5ZXJyb2sgICAgICAgICAoeXllcnJzdGF0dXMgPSAwKQorI2RlZmluZSB5eWNs
ZWFyaW4gICAgICAgKHl5Y2hhciA9IFlZRU1QVFkpCisjZGVmaW5lIFlZRU1QVFkgICAgICAgICAo
LTIpCisjZGVmaW5lIFlZRU9GICAgICAgICAgICAwCisKKyNkZWZpbmUgWVlBQ0NFUFQgICAgICAg
IGdvdG8geXlhY2NlcHRsYWIKKyNkZWZpbmUgWVlBQk9SVCAgICAgICAgIGdvdG8geXlhYm9ydGxh
YgorI2RlZmluZSBZWUVSUk9SICAgICAgICAgZ290byB5eWVycm9ybGFiCisKKworI2RlZmluZSBZ
WVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCisKKyNkZWZpbmUgWVlCQUNLVVAoVG9rZW4s
IFZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBpZiAoeXljaGFyID09IFlZRU1QVFkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXljaGFyID0gKFRva2VuKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXlsdmFsID0gKFZh
bHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
WVlQT1BTVEFDSyAoeXlsZW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFxdYjRfbGFjX2lmKFtbCisgICAgICAgIFlZX0xBQ19ESVNDQVJEICgiWVlC
QUNLVVAiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXV0pWworICAgICAgICBnb3Rv
IHl5YmFja3VwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eWVycm9yIChdYjRf
eXllcnJvcl9hcmdzW1lZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsgXAorICAg
ICAgICBZWUVSUk9SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICB3aGlsZSAoMCkKKworLyogRXJyb3IgdG9rZW4gbnVtYmVy
ICovCisjZGVmaW5lIFlZVEVSUk9SICAgICAgICAxCisjZGVmaW5lIFlZRVJSQ09ERSAgICAgICAy
NTYKKworXWI0X2xvY2F0aW9uc19pZihbWworXWI0X3l5bGxvY19kZWZhdWx0X2RlZmluZVsKKyNk
ZWZpbmUgWVlSSFNMT0MoUmhzLCBLKSAoKFJocylbS10pCitdXSlbCisKKy8qIEVuYWJsZSBkZWJ1
Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KKyNpZiBdYjRfYXBpX1BSRUZJWFtERUJVRworCisjIGlm
bmRlZiBZWUZQUklOVEYKKyMgIGluY2x1ZGUgPHN0ZGlvLmg+IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KKyMgIGRlZmluZSBZWUZQUklOVEYgZnByaW50ZgorIyBlbmRpZgorCisj
IGRlZmluZSBZWURQUklOVEYoQXJncykgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICh5eWRlYnVn
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgWVlGUFJJTlRGIEFyZ3M7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorCitdYjRfeXlfbG9j
YXRpb25fcHJpbnRfZGVmaW5lWworCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5
cGUsIFZhbHVlLCBMb2NhdGlvbikgICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICBpZiAoeXlkZWJ1ZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIFlZRlBS
SU5URiAoc3RkZXJyLCAiJXMgIiwgVGl0bGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICBUeXBlLCBWYWx1
ZV1iNF9sb2NhdGlvbnNfaWYoWywgTG9jYXRpb25dKVtdYjRfdXNlcl9hcmdzWyk7IFwKKyAgICAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorCitdYjRfeXlf
c3ltYm9sX3ByaW50X2RlZmluZVsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5X3N0YWNrX3ByaW50IC0t
IFByaW50IHRoZSBzdGF0ZSBzdGFjayBmcm9tIGl0cyBCT1RUT00gdXAgdG8gaXRzIHwKK3wgVE9Q
IChpbmNsdWRlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK11iNF9mdW5jdGlvbl9kZWZpbmUoW3l5X3N0YWNrX3By
aW50XSwgW3N0YXRpYyB2b2lkXSwKKyAgICAgICAgICAgICAgICAgICBbW3l5dHlwZV9pbnQxNiAq
eXlib3R0b21dLCBbeXlib3R0b21dXSwKKyAgICAgICAgICAgICAgICAgICBbW3l5dHlwZV9pbnQx
NiAqeXl0b3BdLCAgICBbeXl0b3BdXSlbCit7CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiU3RhY2sg
bm93Iik7CisgIGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsgeXlib3R0b20rKykKKyAgICB7Cisg
ICAgICBpbnQgeXlib3QgPSAqeXlib3R0b207CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAl
ZCIsIHl5Ym90KTsKKyAgICB9CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKK30KKworIyBk
ZWZpbmUgWVlfU1RBQ0tfUFJJTlQoQm90dG9tLCBUb3ApICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHl5X3N0YWNrX3ByaW50ICgoQm90dG9tKSwg
KFRvcCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKKworLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFJlcG9y
dCB0aGF0IHRoZSBZWVJVTEUgaXMgZ29pbmcgdG8gYmUgcmVkdWNlZC4gIHwKK2AtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitdYjRfZnVuY3Rpb25f
ZGVmaW5lKFt5eV9yZWR1Y2VfcHJpbnRdLCBbc3RhdGljIHZvaWRdLAorICAgICAgICAgICAgICAg
ICAgIFtbeXl0eXBlX2ludDE2ICp5eXNzcF0sIFt5eXNzcF1dLAorICAgICAgICAgICAgICAgICAg
IFtbWVlTVFlQRSAqeXl2c3BdLCBbeXl2c3BdXSwKKyAgICBiNF9sb2NhdGlvbnNfaWYoW1tbWVlM
VFlQRSAqeXlsc3BdLCBbeXlsc3BdXSwKKyAgICAgICAgICAgICAgICAgICBdKVtbaW50IHl5cnVs
ZV0sIFt5eXJ1bGVdXW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssCisgICAgICAgICAgICAg
ICAgICAgYjRfcGFyc2VfcGFyYW1dKSlbCit7CisgIHVuc2lnbmVkIGxvbmcgeXlsbm8gPSB5eXJs
aW5lW3l5cnVsZV07CisgIGludCB5eW5yaHMgPSB5eXIyW3l5cnVsZV07CisgIGludCB5eWk7Cisg
IFlZRlBSSU5URiAoc3RkZXJyLCAiUmVkdWNpbmcgc3RhY2sgYnkgcnVsZSAlZCAobGluZSAlbHUp
OlxuIiwKKyAgICAgICAgICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7CisgIC8qIFRoZSBzeW1ib2xz
IGJlaW5nIHJlZHVjZWQuICAqLworICBmb3IgKHl5aSA9IDA7IHl5aSA8IHl5bnJoczsgeXlpKysp
CisgICAgeworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsK
KyAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICB5
eXN0b3NbeXlzc3BbeXlpICsgMSAtIHl5bnJoc11dLAorICAgICAgICAgICAgICAgICAgICAgICAm
XWI0X3Joc192YWx1ZSh5eW5yaHMsIHl5aSArIDEpWworICAgICAgICAgICAgICAgICAgICAgICBd
YjRfbG9jYXRpb25zX2lmKFssICZdYjRfcmhzX2xvY2F0aW9uKHl5bnJocywgeXlpICsgMSkpW11k
bmwKKyAgICAgICAgICAgICAgICAgICAgICAgYjRfdXNlcl9hcmdzWyk7CisgICAgICBZWUZQUklO
VEYgKHN0ZGVyciwgIlxuIik7CisgICAgfQorfQorCisjIGRlZmluZSBZWV9SRURVQ0VfUFJJTlQo
UnVsZSkgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlfcmVk
dWNlX3ByaW50ICh5eXNzcCwgeXl2c3AsIF1iNF9sb2NhdGlvbnNfaWYoW3l5bHNwLCBdKVtSdWxl
XWI0X3VzZXJfYXJnc1spOyBcCit9IHdoaWxlICgwKQorCisvKiBOb256ZXJvIG1lYW5zIHByaW50
IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKKyAgIG11bHRp
cGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLworaW50IHl5ZGVidWc7CisjZWxzZSAvKiAhXWI0
X2FwaV9QUkVGSVhbREVCVUcgKi8KKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQorIyBkZWZpbmUg
WVlfU1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pCisjIGRlZmluZSBZ
WV9TVEFDS19QUklOVChCb3R0b20sIFRvcCkKKyMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxl
KQorI2VuZGlmIC8qICFdYjRfYXBpX1BSRUZJWFtERUJVRyAqLworCisKKy8qIFlZSU5JVERFUFRI
IC0tIGluaXRpYWwgc2l6ZSBvZiB0aGUgcGFyc2VyJ3Mgc3RhY2tzLiAgKi8KKyNpZm5kZWYgWVlJ
TklUREVQVEgKKyMgZGVmaW5lIFlZSU5JVERFUFRIIF1iNF9zdGFja19kZXB0aF9pbml0WworI2Vu
ZGlmCisKKy8qIFlZTUFYREVQVEggLS0gbWF4aW11bSBzaXplIHRoZSBzdGFja3MgY2FuIGdyb3cg
dG8gKGVmZmVjdGl2ZSBvbmx5CisgICBpZiB0aGUgYnVpbHQtaW4gc3RhY2sgZXh0ZW5zaW9uIG1l
dGhvZCBpcyB1c2VkKS4KKworICAgRG8gbm90IG1ha2UgdGhpcyB2YWx1ZSB0b28gbGFyZ2U7IHRo
ZSByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYKKyAgIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSA8IFlZ
U1RBQ0tfQllURVMgKFlZTUFYREVQVEgpCisgICBldmFsdWF0ZWQgd2l0aCBpbmZpbml0ZS1wcmVj
aXNpb24gaW50ZWdlciBhcml0aG1ldGljLiAgKi8KKworI2lmbmRlZiBZWU1BWERFUFRICisjIGRl
ZmluZSBZWU1BWERFUFRIIF1iNF9zdGFja19kZXB0aF9tYXhbCisjZW5kaWZdYjRfbGFjX2lmKFtb
CisKKy8qIEdpdmVuIGEgc3RhdGUgc3RhY2sgc3VjaCB0aGF0ICpZWUJPVFRPTSBpcyBpdHMgYm90
dG9tLCBzdWNoIHRoYXQKKyAgICpZWVRPUCBpcyBlaXRoZXIgaXRzIHRvcCBvciBpcyBZWVRPUF9F
TVBUWSB0byBpbmRpY2F0ZSBhbiBlbXB0eQorICAgc3RhY2ssIGFuZCBzdWNoIHRoYXQgKllZQ0FQ
QUNJVFkgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIGl0CisgICBjYW4gaG9sZCB3
aXRob3V0IGEgcmVhbGxvY2F0aW9uLCBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8K
KyAgIHN0b3JlIFlZQUREIG1vcmUgZWxlbWVudHMuICBJZiBub3QsIGFsbG9jYXRlIGEgbmV3IHN0
YWNrIHVzaW5nCisgICBZWVNUQUNLX0FMTE9DLCBjb3B5IHRoZSBleGlzdGluZyBlbGVtZW50cywg
YW5kIGFkanVzdCAqWVlCT1RUT00sCisgICAqWVlUT1AsIGFuZCAqWVlDQVBBQ0lUWSB0byByZWZs
ZWN0IHRoZSBuZXcgY2FwYWNpdHkgYW5kIG1lbW9yeQorICAgbG9jYXRpb24uICBJZiAqWVlCT1RU
T00gIT0gWVlCT1RUT01fTk9fRlJFRSwgdGhlbiBmcmVlIHRoZSBvbGQgc3RhY2sKKyAgIHVzaW5n
IFlZU1RBQ0tfRlJFRS4gIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwgb3IgaWYgbm8gcmVhbGxvY2F0
aW9uIGlzCisgICByZXF1aXJlZC4gIFJldHVybiAxIGlmIG1lbW9yeSBpcyBleGhhdXN0ZWQuICAq
Lworc3RhdGljIGludAoreXlfbGFjX3N0YWNrX3JlYWxsb2MgKFlZU0laRV9UICp5eWNhcGFjaXR5
LCBZWVNJWkVfVCB5eWFkZCwKKyNpZiBdYjRfYXBpX1BSRUZJWFtERUJVRworICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgY29uc3QgKnl5ZGVidWdfcHJlZml4LAorICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgY29uc3QgKnl5ZGVidWdfc3VmZml4LAorI2VuZGlmCisgICAgICAgICAgICAgICAg
ICAgICAgeXl0eXBlX2ludDE2ICoqeXlib3R0b20sCisgICAgICAgICAgICAgICAgICAgICAgeXl0
eXBlX2ludDE2ICp5eWJvdHRvbV9ub19mcmVlLAorICAgICAgICAgICAgICAgICAgICAgIHl5dHlw
ZV9pbnQxNiAqKnl5dG9wLCB5eXR5cGVfaW50MTYgKnl5dG9wX2VtcHR5KQoreworICBZWVNJWkVf
VCB5eXNpemVfb2xkID0KKyAgICAoWVlTSVpFX1QpICgqeXl0b3AgPT0geXl0b3BfZW1wdHkgPyAw
IDogKnl5dG9wIC0gKnl5Ym90dG9tICsgMSk7CisgIFlZU0laRV9UIHl5c2l6ZV9uZXcgPSB5eXNp
emVfb2xkICsgeXlhZGQ7CisgIGlmICgqeXljYXBhY2l0eSA8IHl5c2l6ZV9uZXcpCisgICAgewor
ICAgICAgWVlTSVpFX1QgeXlhbGxvYyA9IDIgKiB5eXNpemVfbmV3OworICAgICAgeXl0eXBlX2lu
dDE2ICp5eWJvdHRvbV9uZXc7CisgICAgICAvKiBVc2UgWVlNQVhERVBUSCBmb3IgbWF4aW11bSBz
dGFjayBzaXplIGdpdmVuIHRoYXQgdGhlIHN0YWNrCisgICAgICAgICBzaG91bGQgbmV2ZXIgbmVl
ZCB0byBncm93IGxhcmdlciB0aGFuIHRoZSBtYWluIHN0YXRlIHN0YWNrCisgICAgICAgICBuZWVk
cyB0byBncm93IHdpdGhvdXQgTEFDLiAgKi8KKyAgICAgIGlmIChZWU1BWERFUFRIIDwgeXlzaXpl
X25ldykKKyAgICAgICAgeworICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiVzbWF4IHNp
emUgZXhjZWVkZWQlcyIsIHl5ZGVidWdfcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgIHl5
ZGVidWdfc3VmZml4KSk7CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgIGlm
IChZWU1BWERFUFRIIDwgeXlhbGxvYykKKyAgICAgICAgeXlhbGxvYyA9IFlZTUFYREVQVEg7Cisg
ICAgICB5eWJvdHRvbV9uZXcgPQorICAgICAgICAoeXl0eXBlX2ludDE2KikgWVlTVEFDS19BTExP
QyAoeXlhbGxvYyAqIHNpemVvZiAqeXlib3R0b21fbmV3KTsKKyAgICAgIGlmICgheXlib3R0b21f
bmV3KQorICAgICAgICB7CisgICAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiJXNyZWFsbG9j
IGZhaWxlZCVzIiwgeXlkZWJ1Z19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgeXlkZWJ1
Z19zdWZmaXgpKTsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgaWYgKCp5
eXRvcCAhPSB5eXRvcF9lbXB0eSkKKyAgICAgICAgeworICAgICAgICAgIFlZQ09QWSAoeXlib3R0
b21fbmV3LCAqeXlib3R0b20sIHl5c2l6ZV9vbGQpOworICAgICAgICAgICp5eXRvcCA9IHl5Ym90
dG9tX25ldyArICh5eXNpemVfb2xkIC0gMSk7CisgICAgICAgIH0KKyAgICAgIGlmICgqeXlib3R0
b20gIT0geXlib3R0b21fbm9fZnJlZSkKKyAgICAgICAgWVlTVEFDS19GUkVFICgqeXlib3R0b20p
OworICAgICAgKnl5Ym90dG9tID0geXlib3R0b21fbmV3OworICAgICAgKnl5Y2FwYWNpdHkgPSB5
eWFsbG9jO11tNF9pZihiNF9wZXJjZW50X2RlZmluZV9nZXQoW1twYXJzZS5sYWMubWVtb3J5LXRy
YWNlXV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnVsbF0sIFtbCisg
ICAgICBZWURQUklOVEYgKChzdGRlcnIsICIlc3JlYWxsb2MgdG8gJWx1JXMiLCB5eWRlYnVnX3By
ZWZpeCwKKyAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSB5eWFsbG9jLCB5eWRlYnVn
X3N1ZmZpeCkpO11dKVsKKyAgICB9CisgIHJldHVybiAwOworfQorCisvKiBFc3RhYmxpc2ggdGhl
IGluaXRpYWwgY29udGV4dCBmb3IgdGhlIGN1cnJlbnQgbG9va2FoZWFkIGlmIG5vIGluaXRpYWwK
KyAgIGNvbnRleHQgaXMgY3VycmVudGx5IGVzdGFibGlzaGVkLgorCisgICBXZSBkZWZpbmUgYSBj
b250ZXh0IGFzIGEgc25hcHNob3Qgb2YgdGhlIHBhcnNlciBzdGFja3MuICBXZSBkZWZpbmUKKyAg
IHRoZSBpbml0aWFsIGNvbnRleHQgZm9yIGEgbG9va2FoZWFkIGFzIHRoZSBjb250ZXh0IGluIHdo
aWNoIHRoZQorICAgcGFyc2VyIGluaXRpYWxseSBleGFtaW5lcyB0aGF0IGxvb2thaGVhZCBpbiBv
cmRlciB0byBzZWxlY3QgYQorICAgc3ludGFjdGljIGFjdGlvbi4gIFRodXMsIGlmIHRoZSBsb29r
YWhlYWQgZXZlbnR1YWxseSBwcm92ZXMKKyAgIHN5bnRhY3RpY2FsbHkgdW5hY2NlcHRhYmxlIChw
b3NzaWJseSBpbiBhIGxhdGVyIGNvbnRleHQgcmVhY2hlZCB2aWEgYQorICAgc2VyaWVzIG9mIHJl
ZHVjdGlvbnMpLCB0aGUgaW5pdGlhbCBjb250ZXh0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZQor
ICAgdGhlIGV4YWN0IHNldCBvZiB0b2tlbnMgdGhhdCB3b3VsZCBiZSBzeW50YWN0aWNhbGx5IGFj
Y2VwdGFibGUgaW4gdGhlCisgICBsb29rYWhlYWQncyBwbGFjZS4gIE1vcmVvdmVyLCBpdCBpcyB0
aGUgY29udGV4dCBhZnRlciB3aGljaCBhbnkKKyAgIGZ1cnRoZXIgc2VtYW50aWMgYWN0aW9ucyB3
b3VsZCBiZSBlcnJvbmVvdXMgYmVjYXVzZSB0aGV5IHdvdWxkIGJlCisgICBkZXRlcm1pbmVkIGJ5
IGEgc3ludGFjdGljYWxseSB1bmFjY2VwdGFibGUgdG9rZW4uCisKKyAgIFlZX0xBQ19FU1RBQkxJ
U0ggc2hvdWxkIGJlIGludm9rZWQgd2hlbiBhIHJlZHVjdGlvbiBpcyBhYm91dCB0byBiZQorICAg
cGVyZm9ybWVkIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSAod2hpY2gsIGZvciB0aGUgcHVycG9z
ZXMgb2YgTEFDLAorICAgaW5jbHVkZXMgY29uc2lzdGVudCBzdGF0ZXMgdGhhdCBkb24ndCBrbm93
IHRoZXkncmUgY29uc2lzdGVudCBiZWNhdXNlCisgICB0aGVpciBkZWZhdWx0IHJlZHVjdGlvbnMg
aGF2ZSBiZWVuIGRpc2FibGVkKS4gIElmZiB0aGVyZSBpcyBhCisgICBsb29rYWhlYWQgdG9rZW4s
IGl0IHNob3VsZCBhbHNvIGJlIGludm9rZWQgYmVmb3JlIHJlcG9ydGluZyBhIHN5bnRheAorICAg
ZXJyb3IuICBUaGlzIGxhdHRlciBjYXNlIGlzIGZvciB0aGUgc2FrZSBvZiB0aGUgZGVidWdnaW5n
IG91dHB1dC4KKworICAgRm9yIHBhcnNlLmxhYz1mdWxsLCB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
WVlfTEFDX0VTVEFCTElTSCBpcyBhcworICAgZm9sbG93cy4gIElmIG5vIGluaXRpYWwgY29udGV4
dCBpcyBjdXJyZW50bHkgZXN0YWJsaXNoZWQgZm9yIHRoZQorICAgY3VycmVudCBsb29rYWhlYWQs
IHRoZW4gY2hlY2sgaWYgdGhhdCBsb29rYWhlYWQgY2FuIGV2ZW50dWFsbHkgYmUKKyAgIHNoaWZ0
ZWQgaWYgc3ludGFjdGljIGFjdGlvbnMgY29udGludWUgZnJvbSB0aGUgY3VycmVudCBjb250ZXh0
LgorICAgUmVwb3J0IGEgc3ludGF4IGVycm9yIGlmIGl0IGNhbm5vdC4gICovCisjZGVmaW5lIFlZ
X0xBQ19FU1RBQkxJU0ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICBpZiAoIXl5X2xhY19lc3RhYmxpc2hlZCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgIkxBQzogaW5pdGlhbCBjb250ZXh0IGVzdGFibGlzaGVkIGZvciAlc1xuIiwgICBcCisg
ICAgICAgICAgICAgICAgICB5eXRuYW1lW3l5dG9rZW5dKSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgIHl5X2xhY19lc3RhYmxpc2hlZCA9IDE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGludCB5eV9sYWNfc3RhdHVz
ID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICB5eV9s
YWMgKHl5ZXNhLCAmeXllcywgJnl5ZXNfY2FwYWNpdHksIHl5c3NwLCB5eXRva2VuKTsgXAorICAg
ICAgICBpZiAoeXlfbGFjX3N0YXR1cyA9PSAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHl5X2xhY19zdGF0dXMgPT0gMSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdvdG8geXllcnJsYWI7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorfSB3aGlsZSAoMCkKKworLyogRGlzY2FyZCBhbnkgcHJldmlvdXMgaW5pdGlhbCBsb29r
YWhlYWQgY29udGV4dCBiZWNhdXNlIG9mIEV2ZW50LAorICAgd2hpY2ggbWF5IGJlIGEgbG9va2Fo
ZWFkIGNoYW5nZSBvciBhbiBpbnZhbGlkYXRpb24gb2YgdGhlIGN1cnJlbnRseQorICAgZXN0YWJs
aXNoZWQgaW5pdGlhbCBjb250ZXh0IGZvciB0aGUgY3VycmVudCBsb29rYWhlYWQuCisKKyAgIFRo
ZSBtb3N0IGNvbW1vbiBleGFtcGxlIG9mIGEgbG9va2FoZWFkIGNoYW5nZSBpcyBhIHNoaWZ0LiAg
QW4gZXhhbXBsZQorICAgb2YgYm90aCBjYXNlcyBpcyBzeW50YXggZXJyb3IgcmVjb3ZlcnkuICBU
aGF0IGlzLCBhIHN5bnRheCBlcnJvcgorICAgb2NjdXJzIHdoZW4gdGhlIGxvb2thaGVhZCBpcyBz
eW50YWN0aWNhbGx5IGVycm9uZW91cyBmb3IgdGhlCisgICBjdXJyZW50bHkgZXN0YWJsaXNoZWQg
aW5pdGlhbCBjb250ZXh0LCBzbyBlcnJvciByZWNvdmVyeSBtYW5pcHVsYXRlcworICAgdGhlIHBh
cnNlciBzdGFja3MgdG8gdHJ5IHRvIGZpbmQgYSBuZXcgaW5pdGlhbCBjb250ZXh0IGluIHdoaWNo
IHRoZQorICAgY3VycmVudCBsb29rYWhlYWQgaXMgc3ludGFjdGljYWxseSBhY2NlcHRhYmxlLiAg
SWYgaXQgZmFpbHMgdG8gZmluZAorICAgc3VjaCBhIGNvbnRleHQsIGl0IGRpc2NhcmRzIHRoZSBs
b29rYWhlYWQuICAqLworI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHCisjIGRlZmluZSBZWV9MQUNf
RElTQ0FSRChFdmVudCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5X2xhY19lc3RhYmxpc2hlZCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJMQUM6IGlu
aXRpYWwgY29udGV4dCBkaXNjYXJkZWQgZHVlIHRvICIgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgRXZlbnQgIlxuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgeXlfbGFjX2VzdGFibGlzaGVkID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorI2Vs
c2UKKyMgZGVmaW5lIFlZX0xBQ19ESVNDQVJEKEV2ZW50KSB5eV9sYWNfZXN0YWJsaXNoZWQgPSAw
CisjZW5kaWYKKworLyogR2l2ZW4gdGhlIHN0YWNrIHdob3NlIHRvcCBpcyAqWVlTU1AsIHJldHVy
biAwIGlmZiBZWVRPS0VOIGNhbgorICAgZXZlbnR1YWxseSAoYWZ0ZXIgcGVyaGFwcyBzb21lIHJl
ZHVjdGlvbnMpIGJlIHNoaWZ0ZWQsIHJldHVybiAxIGlmCisgICBub3QsIG9yIHJldHVybiAyIGlm
IG1lbW9yeSBpcyBleGhhdXN0ZWQuICBBcyBwcmVjb25kaXRpb25zIGFuZAorICAgcG9zdGNvbmRp
dGlvbnM6ICpZWUVTX0NBUEFDSVRZIGlzIHRoZSBhbGxvY2F0ZWQgc2l6ZSBvZiB0aGUgYXJyYXkg
dG8KKyAgIHdoaWNoICpZWUVTIHBvaW50cywgYW5kIGVpdGhlciAqWVlFUyA9IFlZRVNBIG9yICpZ
WUVTIHBvaW50cyB0byBhbgorICAgYXJyYXkgYWxsb2NhdGVkIHdpdGggWVlTVEFDS19BTExPQy4g
IHl5X2xhYyBtYXkgb3ZlcndyaXRlIHRoZQorICAgY29udGVudHMgb2YgZWl0aGVyIGFycmF5LCBh
bHRlciAqWVlFUyBhbmQgKllZRVNfQ0FQQUNJVFksIGFuZCBmcmVlCisgICBhbnkgb2xkICpZWUVT
IG90aGVyIHRoYW4gWVlFU0EuICAqLworc3RhdGljIGludAoreXlfbGFjICh5eXR5cGVfaW50MTYg
Knl5ZXNhLCB5eXR5cGVfaW50MTYgKip5eWVzLAorICAgICAgICBZWVNJWkVfVCAqeXllc19jYXBh
Y2l0eSwgeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCit7CisgIHl5dHlwZV9pbnQx
NiAqeXllc19wcmV2ID0geXlzc3A7CisgIHl5dHlwZV9pbnQxNiAqeXllc3AgPSB5eWVzX3ByZXY7
CisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkxBQzogY2hlY2tpbmcgbG9va2FoZWFkICVzOiIsIHl5
dG5hbWVbeXl0b2tlbl0pKTsKKyAgaWYgKHl5dG9rZW4gPT0gWVlVTkRFRlRPSykKKyAgICB7Cisg
ICAgICBZWURQUklOVEYgKChzdGRlcnIsICIgQWx3YXlzIEVyclxuIikpOworICAgICAgcmV0dXJu
IDE7CisgICAgfQorICB3aGlsZSAoMSkKKyAgICB7CisgICAgICBpbnQgeXlydWxlID0geXlwYWN0
Wyp5eWVzcF07CisgICAgICBpZiAoeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5cnVsZSkKKyAg
ICAgICAgICB8fCAoeXlydWxlICs9IHl5dG9rZW4pIDwgMCB8fCBZWUxBU1QgPCB5eXJ1bGUKKyAg
ICAgICAgICB8fCB5eWNoZWNrW3l5cnVsZV0gIT0geXl0b2tlbikKKyAgICAgICAgeworICAgICAg
ICAgIHl5cnVsZSA9IHl5ZGVmYWN0Wyp5eWVzcF07CisgICAgICAgICAgaWYgKHl5cnVsZSA9PSAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICIgRXJy
XG4iKSk7CisgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICB5eXJ1bGUgPSB5eXRhYmxlW3l5cnVs
ZV07CisgICAgICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJyb3IgKHl5cnVsZSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBFcnJcbiIpKTsK
KyAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgaWYgKDAg
PCB5eXJ1bGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIiBTJWRcbiIsIHl5cnVsZSkpOworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB5eXJ1bGUgPSAteXlydWxlOworICAgICAgICB9CisgICAgICB7Cisg
ICAgICAgIFlZU0laRV9UIHl5bGVuID0geXlyMlt5eXJ1bGVdOworICAgICAgICBZWURQUklOVEYg
KChzdGRlcnIsICIgUiVkIiwgeXlydWxlIC0gMSkpOworICAgICAgICBpZiAoeXllc3AgIT0geXll
c19wcmV2KQorICAgICAgICAgIHsKKyAgICAgICAgICAgIFlZU0laRV9UIHl5c2l6ZSA9IChZWVNJ
WkVfVCkgKHl5ZXNwIC0gKnl5ZXMgKyAxKTsKKyAgICAgICAgICAgIGlmICh5eWxlbiA8IHl5c2l6
ZSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHl5ZXNwIC09IHl5bGVuOworICAg
ICAgICAgICAgICAgIHl5bGVuID0gMDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeXlsZW4gLT0geXlzaXplOworICAg
ICAgICAgICAgICAgIHl5ZXNwID0geXllc19wcmV2OworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICBpZiAoeXlsZW4pCisgICAgICAgICAgeXllc3AgPSB5eWVzX3ByZXYgLT0g
eXlsZW47CisgICAgICB9CisgICAgICB7CisgICAgICAgIHl5dHlwZV9pbnQxNiB5eXN0YXRlOwor
ICAgICAgICB7CisgICAgICAgICAgY29uc3QgaW50IHl5bGhzID0geXlyMVt5eXJ1bGVdIC0gWVlO
VE9LRU5TOworICAgICAgICAgIGNvbnN0IGludCB5eWkgPSB5eXBnb3RvW3l5bGhzXSArICp5eWVz
cDsKKyAgICAgICAgICB5eXN0YXRlID0gKCh5eXR5cGVfaW50MTYpCisgICAgICAgICAgICAgICAg
ICAgICAoMCA8PSB5eWkgJiYgeXlpIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5aV0gPT0gKnl5ZXNw
CisgICAgICAgICAgICAgICAgICAgICAgPyB5eXRhYmxlW3l5aV0KKyAgICAgICAgICAgICAgICAg
ICAgICA6IHl5ZGVmZ290b1t5eWxoc10pKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeXllc3Ag
PT0geXllc19wcmV2KQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHl5ZXNwID0gKnl5ZXM7Cisg
ICAgICAgICAgICAqeXllc3AgPSB5eXN0YXRlOworICAgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh5eV9sYWNfc3RhY2tfcmVhbGxvYyAoeXllc19j
YXBhY2l0eSwgMSwKKyNpZiBdYjRfYXBpX1BSRUZJWFtERUJVRworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICgiLCAiKSIsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeXllcywgeXllc2EsICZ5eWVzcCwgeXllc19wcmV2KSkKKyAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlxuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAqKyt5eWVzcCA9IHl5c3RhdGU7CisgICAgICAgICAgfQorICAgICAgICBZWURQUklOVEYgKChz
dGRlcnIsICIgRyVkIiwgKGludCkgeXlzdGF0ZSkpOworICAgICAgfQorICAgIH0KK31dXSlbCisK
KworI2lmIFlZRVJST1JfVkVSQk9TRQorCisjIGlmbmRlZiB5eXN0cmxlbgorIyAgaWYgZGVmaW5l
ZCBfX0dMSUJDX18gJiYgZGVmaW5lZCBfU1RSSU5HX0gKKyMgICBkZWZpbmUgeXlzdHJsZW4gc3Ry
bGVuCisjICBlbHNlCisvKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCitdYjRfZnVu
Y3Rpb25fZGVmaW5lKFt5eXN0cmxlbl0sIFtzdGF0aWMgWVlTSVpFX1RdLAorICAgW1tjb25zdCBj
aGFyICp5eXN0cl0sIFt5eXN0cl1dKVsKK3sKKyAgWVlTSVpFX1QgeXlsZW47CisgIGZvciAoeXls
ZW4gPSAwOyB5eXN0clt5eWxlbl07IHl5bGVuKyspCisgICAgY29udGludWU7CisgIHJldHVybiB5
eWxlbjsKK30KKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5c3RwY3B5CisjICBpZiBk
ZWZpbmVkIF9fR0xJQkNfXyAmJiBkZWZpbmVkIF9TVFJJTkdfSCAmJiBkZWZpbmVkIF9HTlVfU09V
UkNFCisjICAgZGVmaW5lIHl5c3RwY3B5IHN0cGNweQorIyAgZWxzZQorLyogQ29weSBZWVNSQyB0
byBZWURFU1QsIHJldHVybmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybWluYXRpbmcgJ1wwJyBp
bgorICAgWVlERVNULiAgKi8KK11iNF9mdW5jdGlvbl9kZWZpbmUoW3l5c3RwY3B5XSwgW3N0YXRp
YyBjaGFyICpdLAorICAgW1tjaGFyICp5eWRlc3RdLCBbeXlkZXN0XV0sIFtbY29uc3QgY2hhciAq
eXlzcmNdLCBbeXlzcmNdXSlbCit7CisgIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKKyAgY29uc3QgY2hh
ciAqeXlzID0geXlzcmM7CisKKyAgd2hpbGUgKCgqeXlkKysgPSAqeXlzKyspICE9ICdcMCcpCisg
ICAgY29udGludWU7CisKKyAgcmV0dXJuIHl5ZCAtIDE7Cit9CisjICBlbmRpZgorIyBlbmRpZgor
CisjIGlmbmRlZiB5eXRuYW1lcnIKKy8qIENvcHkgdG8gWVlSRVMgdGhlIGNvbnRlbnRzIG9mIFlZ
U1RSIGFmdGVyIHN0cmlwcGluZyBhd2F5IHVubmVjZXNzYXJ5CisgICBxdW90ZXMgYW5kIGJhY2tz
bGFzaGVzLCBzbyB0aGF0IGl0J3Mgc3VpdGFibGUgZm9yIHl5ZXJyb3IuICBUaGUKKyAgIGhldXJp
c3RpYyBpcyB0aGF0IGRvdWJsZS1xdW90aW5nIGlzIHVubmVjZXNzYXJ5IHVubGVzcyB0aGUgc3Ry
aW5nCisgICBjb250YWlucyBhbiBhcG9zdHJvcGhlLCBhIGNvbW1hLCBvciBiYWNrc2xhc2ggKG90
aGVyIHRoYW4KKyAgIGJhY2tzbGFzaC1iYWNrc2xhc2gpLiAgWVlTVFIgaXMgdGFrZW4gZnJvbSB5
eXRuYW1lLiAgSWYgWVlSRVMgaXMKKyAgIG51bGwsIGRvIG5vdCBjb3B5OyBpbnN0ZWFkLCByZXR1
cm4gdGhlIGxlbmd0aCBvZiB3aGF0IHRoZSByZXN1bHQKKyAgIHdvdWxkIGhhdmUgYmVlbi4gICov
CitzdGF0aWMgWVlTSVpFX1QKK3l5dG5hbWVyciAoY2hhciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5
c3RyKQoreworICBpZiAoKnl5c3RyID09ICciJykKKyAgICB7CisgICAgICBZWVNJWkVfVCB5eW4g
PSAwOworICAgICAgY2hhciBjb25zdCAqeXlwID0geXlzdHI7CisKKyAgICAgIGZvciAoOzspCisg
ICAgICAgIHN3aXRjaCAoKisreXlwKQorICAgICAgICAgIHsKKyAgICAgICAgICBjYXNlICdcJyc6
CisgICAgICAgICAgY2FzZSAnLCc6CisgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90
ZXM7CisKKyAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICBpZiAoKisreXlwICE9ICdc
XCcpCisgICAgICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgZ290byBhcHBlbmQ7CisKKyAgICAgICAgICBhcHBlbmQ6Cisg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh5eXJlcykKKyAgICAgICAgICAgICAg
eXlyZXNbeXluXSA9ICp5eXA7CisgICAgICAgICAgICB5eW4rKzsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgY2FzZSAnIic6CisgICAgICAgICAgICBpZiAoeXlyZXMpCisgICAgICAg
ICAgICAgIHl5cmVzW3l5bl0gPSAnXDAnOworICAgICAgICAgICAgcmV0dXJuIHl5bjsKKyAgICAg
ICAgICB9CisgICAgZG9fbm90X3N0cmlwX3F1b3RlczogOworICAgIH0KKworICBpZiAoISB5eXJl
cykKKyAgICByZXR1cm4geXlzdHJsZW4gKHl5c3RyKTsKKworICByZXR1cm4gKFlZU0laRV9UKSAo
eXlzdHBjcHkgKHl5cmVzLCB5eXN0cikgLSB5eXJlcyk7Cit9CisjIGVuZGlmCisKKy8qIENvcHkg
aW50byAqWVlNU0csIHdoaWNoIGlzIG9mIHNpemUgKllZTVNHX0FMTE9DLCBhbiBlcnJvciBtZXNz
YWdlCisgICBhYm91dCB0aGUgdW5leHBlY3RlZCB0b2tlbiBZWVRPS0VOIGZvciB0aGUgc3RhdGUg
c3RhY2sgd2hvc2UgdG9wIGlzCisgICBZWVNTUC5dYjRfbGFjX2lmKFtbICBJbiBvcmRlciB0byBz
ZWUgaWYgYSBwYXJ0aWN1bGFyIHRva2VuIFQgaXMgYQorICAgdmFsaWQgbG9vYWtoZWFkLCBpbnZv
a2UgeXlfbGFjIChZWUVTQSwgWVlFUywgWVlFU19DQVBBQ0lUWSwgWVlTU1AsIFQpLl1dKVsKKwor
ICAgUmV0dXJuIDAgaWYgKllZTVNHIHdhcyBzdWNjZXNzZnVsbHkgd3JpdHRlbi4gIFJldHVybiAx
IGlmICpZWU1TRyBpcworICAgbm90IGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBtZXNzYWdlLiAg
SW4gdGhhdCBjYXNlLCBhbHNvIHNldAorICAgKllZTVNHX0FMTE9DIHRvIHRoZSByZXF1aXJlZCBu
dW1iZXIgb2YgYnl0ZXMuICBSZXR1cm4gMiBpZiB0aGUKKyAgIHJlcXVpcmVkIG51bWJlciBvZiBi
eXRlcyBpcyB0b28gbGFyZ2UgdG8gc3RvcmVdYjRfbGFjX2lmKFtbIG9yIGlmCisgICB5eV9sYWMg
cmV0dXJuZWQgMl1dKVsuICAqLworc3RhdGljIGludAoreXlzeW50YXhfZXJyb3IgKFlZU0laRV9U
ICp5eW1zZ19hbGxvYywgY2hhciAqKnl5bXNnLAorICAgICAgICAgICAgICAgIF1iNF9sYWNfaWYo
W1t5eXR5cGVfaW50MTYgKnl5ZXNhLCB5eXR5cGVfaW50MTYgKip5eWVzLAorICAgICAgICAgICAg
ICAgIFlZU0laRV9UICp5eWVzX2NhcGFjaXR5LCBdXSlbeXl0eXBlX2ludDE2ICp5eXNzcCwgaW50
IHl5dG9rZW4pCit7CisgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTExQVFIs
IHl5dG5hbWVbeXl0b2tlbl0pOworICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICBlbnVt
IHsgWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKKyAgLyogSW50ZXJuYXRpb25h
bGl6ZWQgZm9ybWF0IHN0cmluZy4gKi8KKyAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxM
UFRSOworICAvKiBBcmd1bWVudHMgb2YgeXlmb3JtYXQuICovCisgIGNoYXIgY29uc3QgKnl5YXJn
W1lZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU1dOworICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQg
dG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3RlZCIsIG9uZSBwZXIKKyAgICAgImV4cGVjdGVk
IikuICovCisgIGludCB5eWNvdW50ID0gMDsKKworICAvKiBUaGVyZSBhcmUgbWFueSBwb3NzaWJp
bGl0aWVzIGhlcmUgdG8gY29uc2lkZXI6CisgICAgIC0gSWYgdGhpcyBzdGF0ZSBpcyBhIGNvbnNp
c3RlbnQgc3RhdGUgd2l0aCBhIGRlZmF1bHQgYWN0aW9uLCB0aGVuCisgICAgICAgdGhlIG9ubHkg
d2F5IHRoaXMgZnVuY3Rpb24gd2FzIGludm9rZWQgaXMgaWYgdGhlIGRlZmF1bHQgYWN0aW9uCisg
ICAgICAgaXMgYW4gZXJyb3IgYWN0aW9uLiAgSW4gdGhhdCBjYXNlLCBkb24ndCBjaGVjayBmb3Ig
ZXhwZWN0ZWQKKyAgICAgICB0b2tlbnMgYmVjYXVzZSB0aGVyZSBhcmUgbm9uZS4KKyAgICAgLSBU
aGUgb25seSB3YXkgdGhlcmUgY2FuIGJlIG5vIGxvb2thaGVhZCBwcmVzZW50IChpbiB5eWNoYXIp
IGlzIGlmCisgICAgICAgdGhpcyBzdGF0ZSBpcyBhIGNvbnNpc3RlbnQgc3RhdGUgd2l0aCBhIGRl
ZmF1bHQgYWN0aW9uLiAgVGh1cywKKyAgICAgICBkZXRlY3RpbmcgdGhlIGFic2VuY2Ugb2YgYSBs
b29rYWhlYWQgaXMgc3VmZmljaWVudCB0byBkZXRlcm1pbmUKKyAgICAgICB0aGF0IHRoZXJlIGlz
IG5vIHVuZXhwZWN0ZWQgb3IgZXhwZWN0ZWQgdG9rZW4gdG8gcmVwb3J0LiAgSW4gdGhhdAorICAg
ICAgIGNhc2UsIGp1c3QgcmVwb3J0IGEgc2ltcGxlICJzeW50YXggZXJyb3IiLgorICAgICAtIERv
bid0IGFzc3VtZSB0aGVyZSBpc24ndCBhIGxvb2thaGVhZCBqdXN0IGJlY2F1c2UgdGhpcyBzdGF0
ZSBpcyBhCisgICAgICAgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBU
aGVyZSBtaWdodCBoYXZlIGJlZW4gYQorICAgICAgIHByZXZpb3VzIGluY29uc2lzdGVudCBzdGF0
ZSwgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgbm9uLWRlZmF1bHQKKyAgICAgICBhY3Rpb24sIG9y
IHVzZXIgc2VtYW50aWMgYWN0aW9uIHRoYXQgbWFuaXB1bGF0ZWQgeXljaGFyLl1iNF9sYWNfaWYo
W1sKKyAgICAgICBJbiB0aGUgZmlyc3QgdHdvIGNhc2VzLCBpdCBtaWdodCBhcHBlYXIgdGhhdCB0
aGUgY3VycmVudCBzeW50YXgKKyAgICAgICBlcnJvciBzaG91bGQgaGF2ZSBiZWVuIGRldGVjdGVk
IGluIHRoZSBwcmV2aW91cyBzdGF0ZSB3aGVuIHl5X2xhYworICAgICAgIHdhcyBpbnZva2VkLiAg
SG93ZXZlciwgYXQgdGhhdCB0aW1lLCB0aGVyZSBtaWdodCBoYXZlIGJlZW4gYQorICAgICAgIGRp
ZmZlcmVudCBzeW50YXggZXJyb3IgdGhhdCBkaXNjYXJkZWQgYSBkaWZmZXJlbnQgaW5pdGlhbCBj
b250ZXh0CisgICAgICAgZHVyaW5nIGVycm9yIHJlY292ZXJ5LCBsZWF2aW5nIGJlaGluZCB0aGUg
Y3VycmVudCBsb29rYWhlYWQuXV0sIFtbCisgICAgIC0gT2YgY291cnNlLCB0aGUgZXhwZWN0ZWQg
dG9rZW4gbGlzdCBkZXBlbmRzIG9uIHN0YXRlcyB0byBoYXZlCisgICAgICAgY29ycmVjdCBsb29r
YWhlYWQgaW5mb3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBwYXJzZXIgbm90CisgICAg
ICAgdG8gcGVyZm9ybSBleHRyYSByZWR1Y3Rpb25zIGFmdGVyIGZldGNoaW5nIGEgbG9va2FoZWFk
IGZyb20gdGhlCisgICAgICAgc2Nhbm5lciBhbmQgYmVmb3JlIGRldGVjdGluZyBhIHN5bnRheCBl
cnJvci4gIFRodXMsIHN0YXRlIG1lcmdpbmcKKyAgICAgICAoZnJvbSBMQUxSIG9yIElFTFIpIGFu
ZCBkZWZhdWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQKKyAgICAgICB0b2tlbiBs
aXN0LiAgSG93ZXZlciwgdGhlIGxpc3QgaXMgY29ycmVjdCBmb3IgY2Fub25pY2FsIExSIHdpdGgK
KyAgICAgICBvbmUgZXhjZXB0aW9uOiBpdCB3aWxsIHN0aWxsIGNvbnRhaW4gYW55IHRva2VuIHRo
YXQgd2lsbCBub3QgYmUKKyAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4gZXJyb3IgYWN0aW9uIGlu
IGEgbGF0ZXIgc3RhdGUuXV0pWworICAqLworICBpZiAoeXl0b2tlbiAhPSBZWUVNUFRZKQorICAg
IHsKKyAgICAgIGludCB5eW4gPSB5eXBhY3RbKnl5c3NwXTtdYjRfbGFjX2lmKFtbCisgICAgICBZ
WURQUklOVEYgKChzdGRlcnIsICJDb25zdHJ1Y3Rpbmcgc3ludGF4IGVycm9yIG1lc3NhZ2VcbiIp
KTtdXSlbCisgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKKyAgICAg
IGlmICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHtdYjRfbGFjX2lm
KFtdLCBbWworICAgICAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2
b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KKyAgICAgICAgICAgICBZWUNIRUNLLiAgSW4gb3RoZXIg
d29yZHMsIHNraXAgdGhlIGZpcnN0IC1ZWU4gYWN0aW9ucyBmb3IKKyAgICAgICAgICAgICB0aGlz
IHN0YXRlIGJlY2F1c2UgdGhleSBhcmUgZGVmYXVsdCBhY3Rpb25zLiAgKi8KKyAgICAgICAgICBp
bnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7CisgICAgICAgICAgLyogU3RheSB3aXRo
aW4gYm91bmRzIG9mIGJvdGggeXljaGVjayBhbmQgeXl0bmFtZS4gICovCisgICAgICAgICAgaW50
IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW4gKyAxOworICAgICAgICAgIGludCB5eXhlbmQgPSB5
eWNoZWNrbGltIDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUztdXSlbCisgICAg
ICAgICAgaW50IHl5eDtdYjRfbGFjX2lmKFtbCisKKyAgICAgICAgICBmb3IgKHl5eCA9IDA7IHl5
eCA8IFlZTlRPS0VOUzsgKyt5eXgpCisgICAgICAgICAgICBpZiAoeXl4ICE9IFlZVEVSUk9SICYm
IHl5eCAhPSBZWVVOREVGVE9LKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgaW50IHl5X2xhY19zdGF0dXMgPSB5eV9sYWMgKHl5ZXNhLCB5eWVz
LCB5eWVzX2NhcGFjaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHl5c3NwLCB5eXgpOworICAgICAgICAgICAgICAgICAgaWYgKHl5X2xhY19zdGF0dXMg
PT0gMikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICBp
ZiAoeXlfbGFjX3N0YXR1cyA9PSAxKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9XV0sIFtbCisKKyAgICAgICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5
eXggPCB5eXhlbmQ7ICsreXl4KQorICAgICAgICAgICAgaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9
PSB5eXggJiYgeXl4ICE9IFlZVEVSUk9SCisgICAgICAgICAgICAgICAgJiYgIXl5dGFibGVfdmFs
dWVfaXNfZXJyb3IgKHl5dGFibGVbeXl4ICsgeXluXSkpCisgICAgICAgICAgICAgIHtdXSlbCisg
ICAgICAgICAgICAgICAgaWYgKHl5Y291bnQgPT0gWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1V
TSkKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgeXljb3VudCA9IDE7
CisgICAgICAgICAgICAgICAgICAgIHl5c2l6ZSA9IHl5c2l6ZTA7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHl5YXJnW3l5
Y291bnQrK10gPSB5eXRuYW1lW3l5eF07CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoWVlfTlVMTFBUUiwg
eXl0bmFtZVt5eXhdKTsKKyAgICAgICAgICAgICAgICAgIGlmICh5eXNpemUgPD0geXlzaXplMSAm
JiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkKKyAgICAgICAgICAgICAgICAgICAg
eXlzaXplID0geXlzaXplMTsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAg
ICAgIH1dYjRfbGFjX2lmKFtbCisjIGlmIF1iNF9hcGlfUFJFRklYW0RFQlVHCisgICAgICBlbHNl
IGlmICh5eWRlYnVnKQorICAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIk5vIGV4cGVjdGVkIHRv
a2Vucy5cbiIpOworIyBlbmRpZl1dKVsKKyAgICB9CisKKyAgc3dpdGNoICh5eWNvdW50KQorICAg
IHsKKyMgZGVmaW5lIFlZQ0FTRV8oTiwgUykgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
Y2FzZSBOOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHl5Zm9ybWF0
ID0gUzsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGJyZWFrCisgICAgZGVmYXVsdDog
LyogQXZvaWQgY29tcGlsZXIgd2FybmluZ3MuICovCisgICAgICBZWUNBU0VfKDAsIFlZXygic3lu
dGF4IGVycm9yIikpOworICAgICAgWVlDQVNFXygxLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBl
Y3RlZCAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMiwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0
ZWQgJXMsIGV4cGVjdGluZyAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oMywgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8o
NCwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBv
ciAlcyIpKTsKKyAgICAgIFlZQ0FTRV8oNSwgWVlfKCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQg
JXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBvciAlcyIpKTsKKyMgdW5kZWYgWVlDQVNFXwor
ICAgIH0KKworICB7CisgICAgWVlTSVpFX1QgeXlzaXplMSA9IHl5c2l6ZSArIHl5c3RybGVuICh5
eWZvcm1hdCk7CisgICAgaWYgKHl5c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEgPD0gWVlTVEFD
S19BTExPQ19NQVhJTVVNKQorICAgICAgeXlzaXplID0geXlzaXplMTsKKyAgICBlbHNlCisgICAg
ICByZXR1cm4gMjsKKyAgfQorCisgIGlmICgqeXltc2dfYWxsb2MgPCB5eXNpemUpCisgICAgewor
ICAgICAgKnl5bXNnX2FsbG9jID0gMiAqIHl5c2l6ZTsKKyAgICAgIGlmICghICh5eXNpemUgPD0g
Knl5bXNnX2FsbG9jCisgICAgICAgICAgICAgJiYgKnl5bXNnX2FsbG9jIDw9IFlZU1RBQ0tfQUxM
T0NfTUFYSU1VTSkpCisgICAgICAgICp5eW1zZ19hbGxvYyA9IFlZU1RBQ0tfQUxMT0NfTUFYSU1V
TTsKKyAgICAgIHJldHVybiAxOworICAgIH0KKworICAvKiBBdm9pZCBzcHJpbnRmLCBhcyB0aGF0
IGluZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCisgICAgIERvbid0IGhhdmUgdW5k
ZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhlIHRyYW5zbGF0aW9uCisgICAgIHByb2R1Y2VkIGEg
c3RyaW5nIHdpdGggdGhlIHdyb25nIG51bWJlciBvZiAiJXMicy4gICovCisgIHsKKyAgICBjaGFy
ICp5eXAgPSAqeXltc2c7CisgICAgaW50IHl5aSA9IDA7CisgICAgd2hpbGUgKCgqeXlwID0gKnl5
Zm9ybWF0KSAhPSAnXDAnKQorICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5Zm9ybWF0WzFdID09
ICdzJyAmJiB5eWkgPCB5eWNvdW50KQorICAgICAgICB7CisgICAgICAgICAgeXlwICs9IHl5dG5h
bWVyciAoeXlwLCB5eWFyZ1t5eWkrK10pOworICAgICAgICAgIHl5Zm9ybWF0ICs9IDI7CisgICAg
ICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHl5cCsrOworICAgICAgICAg
IHl5Zm9ybWF0Kys7CisgICAgICAgIH0KKyAgfQorICByZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBZ
WUVSUk9SX1ZFUkJPU0UgKi8KKworXWI0X3l5ZGVzdHJ1Y3RfZGVmaW5lWworCitdYjRfcHVyZV9p
ZihbXSwgWworCitiNF9kZWNsYXJlX3NjYW5uZXJfY29tbXVuaWNhdGlvbl92YXJpYWJsZXNdKVtd
YjRfcHVzaF9pZihbWworCitzdHJ1Y3QgeXlwc3RhdGUKKyAge11iNF9kZWNsYXJlX3BhcnNlcl9z
dGF0ZV92YXJpYWJsZXNbCisgICAgLyogVXNlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyB0aGUg
Zmlyc3QgdGltZSB0aGlzIGluc3RhbmNlIGhhcworICAgICAgIGJlZW4gdXNlZC4gICovCisgICAg
aW50IHl5bmV3OworICB9O11iNF9wdXJlX2lmKFtdLCBbWworCitzdGF0aWMgY2hhciB5eXBzdGF0
ZV9hbGxvY2F0ZWQgPSAwO11dKWI0X3B1bGxfaWYoWworCitiNF9mdW5jdGlvbl9kZWZpbmUoW1t5
eXBhcnNlXV0sIFtbaW50XV0sIGI0X3BhcnNlX3BhcmFtKVsKK3sKKyAgcmV0dXJuIHl5cHVsbF9w
YXJzZSAoWVlfTlVMTFBUUl1tNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtbLCBdYjRfYXJncyhiNF9wYXJzZV9wYXJhbSldKVspOwor
fQorCitdYjRfZnVuY3Rpb25fZGVmaW5lKFtbeXlwdWxsX3BhcnNlXV0sIFtbaW50XV0sCisgIFtb
W3l5cHN0YXRlICp5eXBzXV0sIFtbeXlwc11dXW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFss
CisgIGI0X3BhcnNlX3BhcmFtXSkpWwore11iNF9wdXJlX2lmKFtiNF9sb2NhdGlvbnNfaWYoW1sK
KyAgc3RhdGljIFlZTFRZUEUgeXlsb2NfZGVmYXVsdF1bXWI0X3l5bG9jX2RlZmF1bHRbOworICBZ
WUxUWVBFIHl5bGxvYyA9IHl5bG9jX2RlZmF1bHQ7XV0pXSlbCisgIHl5cHN0YXRlICp5eXBzX2xv
Y2FsOworICBpZiAoeXlwcykKKyAgICB5eXBzX2xvY2FsID0geXlwczsKKyAgZWxzZQorICAgIHsK
KyAgICAgIHl5cHNfbG9jYWwgPSB5eXBzdGF0ZV9uZXcgKCk7CisgICAgICBpZiAoIXl5cHNfbG9j
YWwpCisgICAgICAgIHtdYjRfcHVyZV9pZihbWworICAgICAgICAgIHl5ZXJyb3IgKF1iNF95eWVy
cm9yX2FyZ3NbWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpO11dLCBbWworICAgICAgICAgIGlmICgh
eXlwc3RhdGVfYWxsb2NhdGVkKQorICAgICAgICAgICAgeXllcnJvciAoXWI0X3l5ZXJyb3JfYXJn
c1tZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7XV0pWworICAgICAgICAgIHJldHVybiAyOworICAg
ICAgICB9CisgICAgfQorICBpbnQgeXlzdGF0dXM7CisgIGRvIHtdYjRfcHVyZV9pZihbWworICAg
IFlZU1RZUEUgeXlsdmFsOworICAgIGludCBdXSlbeXljaGFyID0gXWI0X2xleFs7CisgICAgeXlz
dGF0dXMgPQorICAgICAgeXlwdXNoX3BhcnNlICh5eXBzX2xvY2FsXWI0X3B1cmVfaWYoW1ssIHl5
Y2hhciwgJnl5bHZhbF1iNF9sb2NhdGlvbnNfaWYoW1ssICZ5eWxsb2NdXSldKW00X2lmc2V0KFti
NF9wYXJzZV9wYXJhbV0sIFssIGI0X2FyZ3MoYjRfcGFyc2VfcGFyYW0pXSlbKTsKKyAgfSB3aGls
ZSAoeXlzdGF0dXMgPT0gWVlQVVNIX01PUkUpOworICBpZiAoIXl5cHMpCisgICAgeXlwc3RhdGVf
ZGVsZXRlICh5eXBzX2xvY2FsKTsKKyAgcmV0dXJuIHl5c3RhdHVzOworfV1dKVsKKworLyogSW5p
dGlhbGl6ZSB0aGUgcGFyc2VyIGRhdGEgc3RydWN0dXJlLiAgKi8KK11iNF9mdW5jdGlvbl9kZWZp
bmUoW1t5eXBzdGF0ZV9uZXddXSwgW1t5eXBzdGF0ZSAqXV0pWworeworICB5eXBzdGF0ZSAqeXlw
cztdYjRfcHVyZV9pZihbXSwgW1sKKyAgaWYgKHl5cHN0YXRlX2FsbG9jYXRlZCkKKyAgICByZXR1
cm4gWVlfTlVMTFBUUjtdXSlbCisgIHl5cHMgPSAoeXlwc3RhdGUgKikgbWFsbG9jIChzaXplb2Yg
Knl5cHMpOworICBpZiAoIXl5cHMpCisgICAgcmV0dXJuIFlZX05VTExQVFI7CisgIHl5cHMtPnl5
bmV3ID0gMTtdYjRfcHVyZV9pZihbXSwgW1sKKyAgeXlwc3RhdGVfYWxsb2NhdGVkID0gMTtdXSlb
CisgIHJldHVybiB5eXBzOworfQorCitdYjRfZnVuY3Rpb25fZGVmaW5lKFtbeXlwc3RhdGVfZGVs
ZXRlXV0sIFtbdm9pZF1dLAorICAgICAgICAgICAgICAgICAgIFtbW3l5cHN0YXRlICp5eXBzXV0s
IFtbeXlwc11dXSlbCit7CisgIGlmICh5eXBzKQorICAgIHsKKyNpZm5kZWYgeXlvdmVyZmxvdwor
ICAgICAgLyogSWYgdGhlIHN0YWNrIHdhcyByZWFsbG9jYXRlZCBidXQgdGhlIHBhcnNlIGRpZCBu
b3QgY29tcGxldGUsIHRoZW4gdGhlCisgICAgICAgICBzdGFjayBzdGlsbCBuZWVkcyB0byBiZSBm
cmVlZC4gICovCisgICAgICBpZiAoIXl5cHMtPnl5bmV3ICYmIHl5cHMtPnl5c3MgIT0geXlwcy0+
eXlzc2EpCisgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXlwcy0+eXlzcyk7CisjZW5kaWZdYjRfbGFj
X2lmKFtbCisgICAgICBpZiAoIXl5cHMtPnl5bmV3ICYmIHl5cHMtPnl5ZXMgIT0geXlwcy0+eXll
c2EpCisgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXlwcy0+eXllcyk7XV0pWworICAgICAgZnJlZSAo
eXlwcyk7XWI0X3B1cmVfaWYoW10sIFtbCisgICAgICB5eXBzdGF0ZV9hbGxvY2F0ZWQgPSAwO11d
KVsKKyAgICB9Cit9CitdYjRfcHVyZV9pZihbWworI2RlZmluZSBdYjRfcHJlZml4W25lcnJzIHl5
cHMtPl1iNF9wcmVmaXhbbmVycnNdXSlbCisjZGVmaW5lIHl5c3RhdGUgeXlwcy0+eXlzdGF0ZQor
I2RlZmluZSB5eWVycnN0YXR1cyB5eXBzLT55eWVycnN0YXR1cworI2RlZmluZSB5eXNzYSB5eXBz
LT55eXNzYQorI2RlZmluZSB5eXNzIHl5cHMtPnl5c3MKKyNkZWZpbmUgeXlzc3AgeXlwcy0+eXlz
c3AKKyNkZWZpbmUgeXl2c2EgeXlwcy0+eXl2c2EKKyNkZWZpbmUgeXl2cyB5eXBzLT55eXZzCisj
ZGVmaW5lIHl5dnNwIHl5cHMtPnl5dnNwXWI0X2xvY2F0aW9uc19pZihbWworI2RlZmluZSB5eWxz
YSB5eXBzLT55eWxzYQorI2RlZmluZSB5eWxzIHl5cHMtPnl5bHMKKyNkZWZpbmUgeXlsc3AgeXlw
cy0+eXlsc3AKKyNkZWZpbmUgeXllcnJvcl9yYW5nZSB5eXBzLT55eWVycm9yX3JhbmdlXV0pWwor
I2RlZmluZSB5eXN0YWNrc2l6ZSB5eXBzLT55eXN0YWNrc2l6ZV1iNF9sYWNfaWYoW1sKKyNkZWZp
bmUgeXllc2EgeXlwcy0+eXllc2EKKyNkZWZpbmUgeXllcyB5eXBzLT55eWVzCisjZGVmaW5lIHl5
ZXNfY2FwYWNpdHkgeXlwcy0+eXllc19jYXBhY2l0eV1dKVsKKworCisvKi0tLS0tLS0tLS0tLS0t
LS4KK3wgeXlwdXNoX3BhcnNlLiAgfAorYC0tLS0tLS0tLS0tLS0tLSovCisKK11iNF9mdW5jdGlv
bl9kZWZpbmUoW1t5eXB1c2hfcGFyc2VdXSwgW1tpbnRdXSwKKyAgW1tbeXlwc3RhdGUgKnl5cHNd
XSwgW1t5eXBzXV1dYjRfcHVyZV9pZihbLAorICBbW1tpbnQgeXlwdXNoZWRfY2hhcl1dLCBbW3l5
cHVzaGVkX2NoYXJdXV0sCisgIFtbW1lZU1RZUEUgY29uc3QgKnl5cHVzaGVkX3ZhbF1dLCBbW3l5
cHVzaGVkX3ZhbF1dXWI0X2xvY2F0aW9uc19pZihbLAorICBbW1tZWUxUWVBFICp5eXB1c2hlZF9s
b2NdXSwgW1t5eXB1c2hlZF9sb2NdXV1dKV0pbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywK
KyAgYjRfcGFyc2VfcGFyYW1dKSldLCBbWworCisKKy8qLS0tLS0tLS0tLS4KK3wgeXlwYXJzZS4g
IHwKK2AtLS0tLS0tLS0tKi8KKworXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlwYXJzZV0sIFtpbnRd
LCBiNF9wYXJzZV9wYXJhbSldKVsKK3tdYjRfcHVyZV9pZihbYjRfZGVjbGFyZV9zY2FubmVyX2Nv
bW11bmljYXRpb25fdmFyaWFibGVzCitdKWI0X3B1c2hfaWYoW2I0X3B1cmVfaWYoW10sIFtbCisg
IGludCB5eXB1c2hlZF9jaGFyID0geXljaGFyOworICBZWVNUWVBFIHl5cHVzaGVkX3ZhbCA9IHl5
bHZhbDtdYjRfbG9jYXRpb25zX2lmKFtbCisgIFlZTFRZUEUgeXlwdXNoZWRfbG9jID0geXlsbG9j
O11dKQorXSldLAorICBbYjRfZGVjbGFyZV9wYXJzZXJfc3RhdGVfdmFyaWFibGVzCitdKWI0X2xh
Y19pZihbWworICBpbnQgeXlfbGFjX2VzdGFibGlzaGVkID0gMDtdXSlbCisgIGludCB5eW47Cisg
IGludCB5eXJlc3VsdDsKKyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFu
c2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLworICBpbnQgeXl0b2tlbiA9IDA7CisgIC8qIFRoZSB2
YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20g
dGhlCisgICAgIGFjdGlvbiByb3V0aW5lcy4gICovCisgIFlZU1RZUEUgeXl2YWw7XWI0X2xvY2F0
aW9uc19pZihbWworICBZWUxUWVBFIHl5bG9jO11dKVsKKworI2lmIFlZRVJST1JfVkVSQk9TRQor
ICAvKiBCdWZmZXIgZm9yIGVycm9yIG1lc3NhZ2VzLCBhbmQgaXRzIGFsbG9jYXRlZCBzaXplLiAg
Ki8KKyAgY2hhciB5eW1zZ2J1ZlsxMjhdOworICBjaGFyICp5eW1zZyA9IHl5bXNnYnVmOworICBZ
WVNJWkVfVCB5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKKyNlbmRpZgorCisjZGVmaW5l
IFlZUE9QU1RBQ0soTikgICAoeXl2c3AgLT0gKE4pLCB5eXNzcCAtPSAoTildYjRfbG9jYXRpb25z
X2lmKFssIHl5bHNwIC09IChOKV0pWykKKworICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24g
dGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgorICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBz
eW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCisgIGludCB5eWxlbiA9IDA7XWI0X3B1c2hfaWYo
W1sKKworICBpZiAoIXl5cHMtPnl5bmV3KQorICAgIHsKKyAgICAgIHl5biA9IHl5cGFjdFt5eXN0
YXRlXTsKKyAgICAgIGdvdG8geXlyZWFkX3B1c2hlZF90b2tlbjsKKyAgICB9XV0pWworCisgIHl5
c3NwID0geXlzcyA9IHl5c3NhOworICB5eXZzcCA9IHl5dnMgPSB5eXZzYTtdYjRfbG9jYXRpb25z
X2lmKFtbCisgIHl5bHNwID0geXlscyA9IHl5bHNhO11dKVsKKyAgeXlzdGFja3NpemUgPSBZWUlO
SVRERVBUSDtdYjRfbGFjX2lmKFtbCisKKyAgeXllcyA9IHl5ZXNhOworICB5eWVzX2NhcGFjaXR5
ID0gc2l6ZW9mIHl5ZXNhIC8gc2l6ZW9mICp5eWVzOworICBpZiAoWVlNQVhERVBUSCA8IHl5ZXNf
Y2FwYWNpdHkpCisgICAgeXllc19jYXBhY2l0eSA9IFlZTUFYREVQVEg7XV0pWworCisgIFlZRFBS
SU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7CisKKyAgeXlzdGF0ZSA9IDA7Cisg
IHl5ZXJyc3RhdHVzID0gMDsKKyAgeXluZXJycyA9IDA7CisgIHl5Y2hhciA9IFlZRU1QVFk7IC8q
IENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCitdbTRfaWZkZWYoW2I0X2luaXRpYWxfYWN0
aW9uXSwgWworYjRfZG9sbGFyX3B1c2hkZWYoW200X2RlZmluZShbYjRfZG9sbGFyX2RvbGxhcl91
c2VkXSl5eWx2YWxdLCBbXSwgW10sCisgICAgICAgICAgICAgICAgICBbYjRfcHVzaF9pZihbYjRf
cHVyZV9pZihbKl0peXlwdXNoZWRfbG9jXSwgW3l5bGxvY10pXSlkbmwKK2I0X3VzZXJfaW5pdGlh
bF9hY3Rpb24KK2I0X2RvbGxhcl9wb3BkZWZbXWRubAorbTRfaWZkZWYoW2I0X2RvbGxhcl9kb2xs
YXJfdXNlZF0sW1sgIHl5dnNwWzBdID0geXlsdmFsOworXV0pXSlkbmwKK2I0X2xvY2F0aW9uc19p
ZihbWyAgeXlsc3BbMF0gPSBdYjRfcHVzaF9pZihbYjRfcHVyZV9pZihbKl0peXlwdXNoZWRfbG9j
XSwgW3l5bGxvY10pWzsKK11dKWRubAorWyAgZ290byB5eXNldHN0YXRlOworCisKKy8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgor
fCB5eW5ld3N0YXRlIC0tIHB1c2ggYSBuZXcgc3RhdGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3Rh
dGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KK3l5bmV3c3RhdGU6CisgIC8qIEluIGFsbCBjYXNlcywgd2hlbiB5b3Ug
Z2V0IGhlcmUsIHRoZSB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2tzCisgICAgIGhhdmUganVzdCBi
ZWVuIHB1c2hlZC4gIFNvIHB1c2hpbmcgYSBzdGF0ZSBoZXJlIGV2ZW5zIHRoZSBzdGFja3MuICAq
LworICB5eXNzcCsrOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5bmV3c3RhdGUgLS0gc2V0IGN1
cnJlbnQgc3RhdGUgKHRoZSB0b3Agb2YgdGhlIHN0YWNrKSB0byB5eXN0YXRlLiAgfAorYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KK3l5c2V0c3RhdGU6CisgICp5eXNzcCA9ICh5eXR5cGVfaW50MTYpIHl5c3RhdGU7
CisKKyAgaWYgKHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEgPD0geXlzc3ApCisjaWYgIWRlZmluZWQg
eXlvdmVyZmxvdyAmJiAhZGVmaW5lZCBZWVNUQUNLX1JFTE9DQVRFCisgICAgZ290byB5eWV4aGF1
c3RlZGxhYjsKKyNlbHNlCisgICAgeworICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHVzZWQgc2l6
ZSBvZiB0aGUgdGhyZWUgc3RhY2tzLCBpbiBlbGVtZW50cy4gICovCisgICAgICBZWVNJWkVfVCB5
eXNpemUgPSAoWVlTSVpFX1QpICh5eXNzcCAtIHl5c3MgKyAxKTsKKworIyBpZiBkZWZpbmVkIHl5
b3ZlcmZsb3cKKyAgICAgIHsKKyAgICAgICAgLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIHJlYWxs
b2NhdGUgdGhlIHN0YWNrLiAgVXNlIGNvcGllcyBvZgorICAgICAgICAgICB0aGVzZSBzbyB0aGF0
IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCisgICAgICAgICAgIG1lbW9y
eS4gICovCisgICAgICAgIFlZU1RZUEUgKnl5dnMxID0geXl2czsKKyAgICAgICAgeXl0eXBlX2lu
dDE2ICp5eXNzMSA9IHl5c3M7XWI0X2xvY2F0aW9uc19pZihbCisgICAgICAgIFlZTFRZUEUgKnl5
bHMxID0geXlscztdKVsKKworICAgICAgICAvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBp
cyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgICAgZGF0YSBpbiB1c2UgaW4g
dGhhdCBzdGFjaywgaW4gYnl0ZXMuICBUaGlzIHVzZWQgdG8gYmUgYQorICAgICAgICAgICBjb25k
aXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0Cisg
ICAgICAgICAgIGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlzIGEgbWFjcm8uICAqLworICAg
ICAgICB5eW92ZXJmbG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKKyAgICAgICAgICAgICAg
ICAgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCisgICAgICAgICAgICAgICAg
ICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLF1iNF9sb2NhdGlvbnNfaWYoWwor
ICAgICAgICAgICAgICAgICAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSxdKVsK
KyAgICAgICAgICAgICAgICAgICAgJnl5c3RhY2tzaXplKTsKKyAgICAgICAgeXlzcyA9IHl5c3Mx
OworICAgICAgICB5eXZzID0geXl2czE7XWI0X2xvY2F0aW9uc19pZihbCisgICAgICAgIHl5bHMg
PSB5eWxzMTtdKVsKKyAgICAgIH0KKyMgZWxzZSAvKiBkZWZpbmVkIFlZU1RBQ0tfUkVMT0NBVEUg
Ki8KKyAgICAgIC8qIEV4dGVuZCB0aGUgc3RhY2sgb3VyIG93biB3YXkuICAqLworICAgICAgaWYg
KFlZTUFYREVQVEggPD0geXlzdGFja3NpemUpCisgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7
CisgICAgICB5eXN0YWNrc2l6ZSAqPSAyOworICAgICAgaWYgKFlZTUFYREVQVEggPCB5eXN0YWNr
c2l6ZSkKKyAgICAgICAgeXlzdGFja3NpemUgPSBZWU1BWERFUFRIOworCisgICAgICB7CisgICAg
ICAgIHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOworICAgICAgICB1bmlvbiB5eWFsbG9jICp5
eXB0ciA9CisgICAgICAgICAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFD
S19CWVRFUyAoeXlzdGFja3NpemUpKTsKKyAgICAgICAgaWYgKCEgeXlwdHIpCisgICAgICAgICAg
Z290byB5eWV4aGF1c3RlZGxhYjsKKyAgICAgICAgWVlTVEFDS19SRUxPQ0FURSAoeXlzc19hbGxv
YywgeXlzcyk7CisgICAgICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpO11i
NF9sb2NhdGlvbnNfaWYoWworICAgICAgICBZWVNUQUNLX1JFTE9DQVRFICh5eWxzX2FsbG9jLCB5
eWxzKTtdKVsKKyMgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQorICAgICAgICBpZiAoeXlzczEgIT0g
eXlzc2EpCisgICAgICAgICAgWVlTVEFDS19GUkVFICh5eXNzMSk7CisgICAgICB9CisjIGVuZGlm
CisKKyAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CisgICAgICB5eXZzcCA9IHl5dnMg
KyB5eXNpemUgLSAxO11iNF9sb2NhdGlvbnNfaWYoWworICAgICAgeXlsc3AgPSB5eWxzICsgeXlz
aXplIC0gMTtdKVsKKworICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNy
ZWFzZWQgdG8gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHl5c3Rh
Y2tzaXplKSk7CisKKyAgICAgIGlmICh5eXNzICsgeXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQor
ICAgICAgICBZWUFCT1JUOworICAgIH0KKyNlbmRpZiAvKiAhZGVmaW5lZCB5eW92ZXJmbG93ICYm
ICFkZWZpbmVkIFlZU1RBQ0tfUkVMT0NBVEUgKi8KKworICBZWURQUklOVEYgKChzdGRlcnIsICJF
bnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOworCisgIGlmICh5eXN0YXRlID09IFlZRklO
QUwpCisgICAgWVlBQ0NFUFQ7CisKKyAgZ290byB5eWJhY2t1cDsKKworCisvKi0tLS0tLS0tLS0t
LgorfCB5eWJhY2t1cC4gIHwKK2AtLS0tLS0tLS0tLSovCit5eWJhY2t1cDoKKyAgLyogRG8gYXBw
cm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gIFJlYWQgYQorICAg
ICBsb29rYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBv
bmUuICAqLworCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJl
ZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLworICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07
CisgIGlmICh5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXluKSkKKyAgICBnb3RvIHl5ZGVmYXVs
dDsKKworICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFs
cmVhZHkgaGF2ZSBvbmUuICAqLworCisgIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZ
WUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAqLworICBpZiAoeXljaGFyID09IFlZ
RU1QVFkpCisgICAge11iNF9wdXNoX2lmKFtbCisgICAgICBpZiAoIXl5cHMtPnl5bmV3KQorICAg
ICAgICB7XWI0X3VzZV9wdXNoX2Zvcl9wdWxsX2lmKFtdLCBbWworICAgICAgICAgIFlZRFBSSU5U
RiAoKHN0ZGVyciwgIlJldHVybiBmb3IgYSBuZXcgdG9rZW46XG4iKSk7XV0pWworICAgICAgICAg
IHl5cmVzdWx0ID0gWVlQVVNIX01PUkU7CisgICAgICAgICAgZ290byB5eXB1c2hyZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgIHl5cHMtPnl5bmV3ID0gMDtdYjRfcHVyZV9pZihbXSwgW1sKKyAgICAg
IC8qIFJlc3RvcmluZyB0aGUgcHVzaGVkIHRva2VuIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciB0aGUg
Zmlyc3QKKyAgICAgICAgIHl5cHVzaF9wYXJzZSBpbnZvY2F0aW9uIHNpbmNlIHN1YnNlcXVlbnQg
aW52b2NhdGlvbnMgZG9uJ3Qgb3ZlcndyaXRlCisgICAgICAgICBpdCBiZWZvcmUganVtcGluZyB0
byB5eXJlYWRfcHVzaGVkX3Rva2VuLiAgKi8KKyAgICAgIHl5Y2hhciA9IHl5cHVzaGVkX2NoYXI7
CisgICAgICB5eWx2YWwgPSB5eXB1c2hlZF92YWw7XWI0X2xvY2F0aW9uc19pZihbWworICAgICAg
eXlsbG9jID0geXlwdXNoZWRfbG9jO11dKV0pWworeXlyZWFkX3B1c2hlZF90b2tlbjpdXSlbCisg
ICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5nIGEgdG9rZW46ICIpKTtdYjRfcHVzaF9p
ZihbYjRfcHVyZV9pZihbWworICAgICAgeXljaGFyID0geXlwdXNoZWRfY2hhcjsKKyAgICAgIGlm
ICh5eXB1c2hlZF92YWwpCisgICAgICAgIHl5bHZhbCA9ICp5eXB1c2hlZF92YWw7XWI0X2xvY2F0
aW9uc19pZihbWworICAgICAgaWYgKHl5cHVzaGVkX2xvYykKKyAgICAgICAgeXlsbG9jID0gKnl5
cHVzaGVkX2xvYztdXSldKV0sIFtbCisgICAgICB5eWNoYXIgPSBdYjRfbGV4WztdXSlbCisgICAg
fQorCisgIGlmICh5eWNoYXIgPD0gWVlFT0YpCisgICAgeworICAgICAgeXljaGFyID0geXl0b2tl
biA9IFlZRU9GOworICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiTm93IGF0IGVuZCBvZiBpbnB1
dC5cbiIpKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICB5eXRva2VuID0gWVlUUkFOU0xB
VEUgKHl5Y2hhcik7CisgICAgICBZWV9TWU1CT0xfUFJJTlQgKCJOZXh0IHRva2VuIGlzIiwgeXl0
b2tlbiwgJnl5bHZhbCwgJnl5bGxvYyk7CisgICAgfQorCisgIC8qIElmIHRoZSBwcm9wZXIgYWN0
aW9uIG9uIHNlZWluZyB0b2tlbiBZWVRPS0VOIGlzIHRvIHJlZHVjZSBvciB0bworICAgICBkZXRl
Y3QgYW4gZXJyb3IsIHRha2UgdGhhdCBhY3Rpb24uICAqLworICB5eW4gKz0geXl0b2tlbjsKKyAg
aWYgKHl5biA8IDAgfHwgWVlMQVNUIDwgeXluIHx8IHl5Y2hlY2tbeXluXSAhPSB5eXRva2VuKV1i
NF9sYWNfaWYoW1sKKyAgICB7CisgICAgICBZWV9MQUNfRVNUQUJMSVNIOworICAgICAgZ290byB5
eWRlZmF1bHQ7CisgICAgfV1dLCBbWworICAgIGdvdG8geXlkZWZhdWx0O11dKVsKKyAgeXluID0g
eXl0YWJsZVt5eW5dOworICBpZiAoeXluIDw9IDApCisgICAgeworICAgICAgaWYgKHl5dGFibGVf
dmFsdWVfaXNfZXJyb3IgKHl5bikpCisgICAgICAgIGdvdG8geXllcnJsYWI7XWI0X2xhY19pZihb
WworICAgICAgWVlfTEFDX0VTVEFCTElTSDtdXSlbCisgICAgICB5eW4gPSAteXluOworICAgICAg
Z290byB5eXJlZHVjZTsKKyAgICB9CisKKyAgLyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2Ug
ZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgorICAgICBzdGF0dXMuICAqLworICBp
ZiAoeXllcnJzdGF0dXMpCisgICAgeXllcnJzdGF0dXMtLTsKKworICAvKiBTaGlmdCB0aGUgbG9v
a2FoZWFkIHRva2VuLiAgKi8KKyAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXRva2Vu
LCAmeXlsdmFsLCAmeXlsbG9jKTsKKworICAvKiBEaXNjYXJkIHRoZSBzaGlmdGVkIHRva2VuLiAg
Ki8KKyAgeXljaGFyID0gWVlFTVBUWTtdYjRfbGFjX2lmKFtbCisgIFlZX0xBQ19ESVNDQVJEICgi
c2hpZnQiKTtdXSlbCisKKyAgeXlzdGF0ZSA9IHl5bjsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5J
VElBTElaRURfQkVHSU4KKyAgKisreXl2c3AgPSB5eWx2YWw7CisgIFlZX0lHTk9SRV9NQVlCRV9V
TklOSVRJQUxJWkVEX0VORAorXWI0X2xvY2F0aW9uc19pZihbICAqKyt5eWxzcCA9IHl5bGxvYztd
KVsKKyAgZ290byB5eW5ld3N0YXRlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZGVmYXVsdCAtLSBkbyB0aGUg
ZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBjdXJyZW50IHN0YXRlLiAgfAorYC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZGVmYXVs
dDoKKyAgeXluID0geXlkZWZhY3RbeXlzdGF0ZV07CisgIGlmICh5eW4gPT0gMCkKKyAgICBnb3Rv
IHl5ZXJybGFiOworICBnb3RvIHl5cmVkdWNlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0uCit8IHl5cmVkdWNlIC0tIGRvIGEgcmVkdWN0aW9uLiAgfAorYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5cmVkdWNlOgorICAvKiB5eW4gaXMgdGhlIG51bWJlciBv
ZiBhIHJ1bGUgdG8gcmVkdWNlIHdpdGguICAqLworICB5eWxlbiA9IHl5cjJbeXluXTsKKworICAv
KiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhl
IGFjdGlvbjoKKyAgICAgJyQkID0gJDEnLgorCisgICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2lu
ZyBsaW5lIHNldHMgWVlWQUwgdG8gZ2FyYmFnZS4KKyAgICAgVGhpcyBiZWhhdmlvciBpcyB1bmRv
Y3VtZW50ZWQgYW5kIEJpc29uCisgICAgIHVzZXJzIHNob3VsZCBub3QgcmVseSB1cG9uIGl0LiAg
QXNzaWduaW5nIHRvIFlZVkFMCisgICAgIHVuY29uZGl0aW9uYWxseSBtYWtlcyB0aGUgcGFyc2Vy
IGEgYml0IHNtYWxsZXIsIGFuZCBpdCBhdm9pZHMgYQorICAgICBHQ0Mgd2FybmluZyB0aGF0IFlZ
VkFMIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuICAqLworICB5eXZhbCA9IHl5dnNwWzEteXls
ZW5dOworCitdYjRfbG9jYXRpb25zX2lmKAorW1sgIC8qIERlZmF1bHQgbG9jYXRpb24uICovCisg
IFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5bHNwIC0geXlsZW4pLCB5eWxlbik7CisgIHl5ZXJy
b3JfcmFuZ2VbMV0gPSB5eWxvYztdXSlbCisgIFlZX1JFRFVDRV9QUklOVCAoeXluKTtdYjRfbGFj
X2lmKFtbCisgIHsKKyAgICBpbnQgeXljaGFyX2JhY2t1cCA9IHl5Y2hhcjsKKyAgICBzd2l0Y2gg
KHl5bikKKyAgICAgIHsKK11iNF91c2VyX2FjdGlvbnNbCisgICAgICAgIGRlZmF1bHQ6IGJyZWFr
OworICAgICAgfQorICAgIGlmICh5eWNoYXJfYmFja3VwICE9IHl5Y2hhcikKKyAgICAgIFlZX0xB
Q19ESVNDQVJEICgieXljaGFyIGNoYW5nZSIpOworICB9XV0sIFtbCisgIHN3aXRjaCAoeXluKQor
ICAgIHsKKyAgICAgIF1iNF91c2VyX2FjdGlvbnNbCisgICAgICBkZWZhdWx0OiBicmVhazsKKyAg
ICB9XV0pWworICAvKiBVc2VyIHNlbWFudGljIGFjdGlvbnMgc29tZXRpbWVzIGFsdGVyIHl5Y2hh
ciwgYW5kIHRoYXQgcmVxdWlyZXMKKyAgICAgdGhhdCB5eXRva2VuIGJlIHVwZGF0ZWQgd2l0aCB0
aGUgbmV3IHRyYW5zbGF0aW9uLiAgV2UgdGFrZSB0aGUKKyAgICAgYXBwcm9hY2ggb2YgdHJhbnNs
YXRpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGV2ZXJ5IHVzZSBvZiB5eXRva2VuLgorICAgICBPbmUg
YWx0ZXJuYXRpdmUgaXMgdHJhbnNsYXRpbmcgaGVyZSBhZnRlciBldmVyeSBzZW1hbnRpYyBhY3Rp
b24sCisgICAgIGJ1dCB0aGF0IHRyYW5zbGF0aW9uIHdvdWxkIGJlIG1pc3NlZCBpZiB0aGUgc2Vt
YW50aWMgYWN0aW9uIGludm9rZXMKKyAgICAgWVlBQk9SVCwgWVlBQ0NFUFQsIG9yIFlZRVJST1Ig
aW1tZWRpYXRlbHkgYWZ0ZXIgYWx0ZXJpbmcgeXljaGFyIG9yCisgICAgIGlmIGl0IGludm9rZXMg
WVlCQUNLVVAuICBJbiB0aGUgY2FzZSBvZiBZWUFCT1JUIG9yIFlZQUNDRVBULCBhbgorICAgICBp
bmNvcnJlY3QgZGVzdHJ1Y3RvciBtaWdodCB0aGVuIGJlIGludm9rZWQgaW1tZWRpYXRlbHkuICBJ
biB0aGUKKyAgICAgY2FzZSBvZiBZWUVSUk9SIG9yIFlZQkFDS1VQLCBzdWJzZXF1ZW50IHBhcnNl
ciBhY3Rpb25zIG1pZ2h0IGxlYWQKKyAgICAgdG8gYW4gaW5jb3JyZWN0IGRlc3RydWN0b3IgY2Fs
bCBvciB2ZXJib3NlIHN5bnRheCBlcnJvciBtZXNzYWdlCisgICAgIGJlZm9yZSB0aGUgbG9va2Fo
ZWFkIGlzIHRyYW5zbGF0ZWQuICAqLworICBZWV9TWU1CT0xfUFJJTlQgKCItPiAkJCA9IiwgeXly
MVt5eW5dLCAmeXl2YWwsICZ5eWxvYyk7CisKKyAgWVlQT1BTVEFDSyAoeXlsZW4pOworICB5eWxl
biA9IDA7CisgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CisKKyAgKisreXl2c3AgPSB5
eXZhbDtdYjRfbG9jYXRpb25zX2lmKFsKKyAgKisreXlsc3AgPSB5eWxvYztdKVsKKworICAvKiBO
b3cgJ3NoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBz
dGF0ZQorICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFj
ayB0byBhbmQgdGhlIHJ1bGUKKyAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLworICB7CisgICAg
Y29uc3QgaW50IHl5bGhzID0geXlyMVt5eW5dIC0gWVlOVE9LRU5TOworICAgIGNvbnN0IGludCB5
eWkgPSB5eXBnb3RvW3l5bGhzXSArICp5eXNzcDsKKyAgICB5eXN0YXRlID0gKDAgPD0geXlpICYm
IHl5aSA8PSBZWUxBU1QgJiYgeXljaGVja1t5eWldID09ICp5eXNzcAorICAgICAgICAgICAgICAg
PyB5eXRhYmxlW3l5aV0KKyAgICAgICAgICAgICAgIDogeXlkZWZnb3RvW3l5bGhzXSk7CisgIH0K
KworICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IuICB8Citg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJsYWI6CisgIC8q
IE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29t
bWVudHMgYXQKKyAgICAgdXNlciBzZW1hbnRpYyBhY3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNl
c3NhcnkuICAqLworICB5eXRva2VuID0geXljaGFyID09IFlZRU1QVFkgPyBZWUVNUFRZIDogWVlU
UkFOU0xBVEUgKHl5Y2hhcik7CisKKyAgLyogSWYgbm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9t
IGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4gICovCisgIGlmICgheXllcnJzdGF0dXMpCisg
ICAgeworICAgICAgKyt5eW5lcnJzOworI2lmICEgWVlFUlJPUl9WRVJCT1NFCisgICAgICB5eWVy
cm9yIChdYjRfeXllcnJvcl9hcmdzW1lZXygic3ludGF4IGVycm9yIikpOworI2Vsc2UKKyMgZGVm
aW5lIFlZU1lOVEFYX0VSUk9SIHl5c3ludGF4X2Vycm9yICgmeXltc2dfYWxsb2MsICZ5eW1zZywg
XF1iNF9sYWNfaWYoW1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
eWVzYSwgJnl5ZXMsICZ5eWVzX2NhcGFjaXR5LCBcXV0pWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQorICAgICAgeworICAgICAgICBjaGFy
IGNvbnN0ICp5eW1zZ3AgPSBZWV8oInN5bnRheCBlcnJvciIpOworICAgICAgICBpbnQgeXlzeW50
YXhfZXJyb3Jfc3RhdHVzO11iNF9sYWNfaWYoW1sKKyAgICAgICAgaWYgKHl5Y2hhciAhPSBZWUVN
UFRZKQorICAgICAgICAgIFlZX0xBQ19FU1RBQkxJU0g7XV0pWworICAgICAgICB5eXN5bnRheF9l
cnJvcl9zdGF0dXMgPSBZWVNZTlRBWF9FUlJPUjsKKyAgICAgICAgaWYgKHl5c3ludGF4X2Vycm9y
X3N0YXR1cyA9PSAwKQorICAgICAgICAgIHl5bXNncCA9IHl5bXNnOworICAgICAgICBlbHNlIGlm
ICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoeXltc2cgIT0geXltc2didWYpCisgICAgICAgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cp
OworICAgICAgICAgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eW1zZ19hbGxv
Yyk7CisgICAgICAgICAgICBpZiAoIXl5bXNnKQorICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgeXltc2cgPSB5eW1zZ2J1ZjsKKyAgICAgICAgICAgICAgICB5eW1zZ19hbGxvYyA9IHNp
emVvZiB5eW1zZ2J1ZjsKKyAgICAgICAgICAgICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSAy
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB5eXN5bnRheF9lcnJvcl9zdGF0dXMgPSBZWVNZTlRBWF9FUlJPUjsKKyAg
ICAgICAgICAgICAgICB5eW1zZ3AgPSB5eW1zZzsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgeXllcnJvciAoXWI0X3l5ZXJyb3JfYXJnc1t5eW1zZ3ApOworICAgICAgICBp
ZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDIpCisgICAgICAgICAgZ290byB5eWV4aGF1c3Rl
ZGxhYjsKKyAgICAgIH0KKyMgdW5kZWYgWVlTWU5UQVhfRVJST1IKKyNlbmRpZgorICAgIH0KKwor
XWI0X2xvY2F0aW9uc19pZihbWyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bGxvYztdXSlbCisKKyAg
aWYgKHl5ZXJyc3RhdHVzID09IDMpCisgICAgeworICAgICAgLyogSWYganVzdCB0cmllZCBhbmQg
ZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgorICAgICAgICAgZXJyb3Is
IGRpc2NhcmQgaXQuICAqLworCisgICAgICBpZiAoeXljaGFyIDw9IFlZRU9GKQorICAgICAgICB7
CisgICAgICAgICAgLyogUmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0LiAgKi8KKyAg
ICAgICAgICBpZiAoeXljaGFyID09IFlZRU9GKQorICAgICAgICAgICAgWVlBQk9SVDsKKyAgICAg
ICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgeXlkZXN0cnVjdCAoIkVycm9y
OiBkaXNjYXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsXWI0
X2xvY2F0aW9uc19pZihbLCAmeXlsbG9jXSlbXWI0X3VzZXJfYXJnc1spOworICAgICAgICAgIHl5
Y2hhciA9IFlZRU1QVFk7CisgICAgICAgIH0KKyAgICB9CisKKyAgLyogRWxzZSB3aWxsIHRyeSB0
byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCisgICAgIHRv
a2VuLiAgKi8KKyAgZ290byB5eWVycmxhYjE7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXJyb3JsYWIgLS0gZXJyb3IgcmFp
c2VkIGV4cGxpY2l0bHkgYnkgWVlFUlJPUi4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJvcmxhYjoKKyAgLyogUGFjaWZ5IGNv
bXBpbGVycyB3aGVuIHRoZSB1c2VyIGNvZGUgbmV2ZXIgaW52b2tlcyBZWUVSUk9SIGFuZCB0aGUK
KyAgICAgbGFiZWwgeXllcnJvcmxhYiB0aGVyZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1c2VyIGNv
ZGUuICAqLworICBpZiAoMCkKKyAgICBZWUVSUk9SOworCisgIC8qIERvIG5vdCByZWNsYWltIHRo
ZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdob3NlIGFjdGlvbiB0cmlnZ2VyZWQKKyAgICAgdGhpcyBZ
WUVSUk9SLiAgKi8KKyAgWVlQT1BTVEFDSyAoeXlsZW4pOworICB5eWxlbiA9IDA7CisgIFlZX1NU
QUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CisgIHl5c3RhdGUgPSAqeXlzc3A7CisgIGdvdG8geXll
cnJsYWIxOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXllcnJsYWIxIC0tIGNvbW1vbiBjb2RlIGZvciBib3Ro
IHN5bnRheCBlcnJvciBhbmQgWVlFUlJPUi4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZXJybGFiMToKKyAgeXll
cnJzdGF0dXMgPSAzOyAgICAgIC8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMg
dGhpcy4gICovCisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0
ZV07CisgICAgICBpZiAoIXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQorICAgICAgICB7
CisgICAgICAgICAgeXluICs9IFlZVEVSUk9SOworICAgICAgICAgIGlmICgwIDw9IHl5biAmJiB5
eW4gPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXluXSA9PSBZWVRFUlJPUikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgeXluID0geXl0YWJsZVt5eW5dOworICAgICAgICAgICAgICBpZiAoMCA8
IHl5bikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAvKiBQb3AgdGhlIGN1cnJlbnQgc3RhdGUgYmVjYXVzZSBpdCBjYW5ub3QgaGFuZGxl
IHRoZSBlcnJvciB0b2tlbi4gICovCisgICAgICBpZiAoeXlzc3AgPT0geXlzcykKKyAgICAgICAg
WVlBQk9SVDsKKworXWI0X2xvY2F0aW9uc19pZihbWyAgICAgIHl5ZXJyb3JfcmFuZ2VbMV0gPSAq
eXlsc3A7XV0pWworICAgICAgeXlkZXN0cnVjdCAoIkVycm9yOiBwb3BwaW5nIiwKKyAgICAgICAg
ICAgICAgICAgIHl5c3Rvc1t5eXN0YXRlXSwgeXl2c3BdYjRfbG9jYXRpb25zX2lmKFssIHl5bHNw
XSlbXWI0X3VzZXJfYXJnc1spOworICAgICAgWVlQT1BTVEFDSyAoMSk7CisgICAgICB5eXN0YXRl
ID0gKnl5c3NwOworICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgICB9XWI0
X2xhY19pZihbWworCisgIC8qIElmIHRoZSBzdGFjayBwb3BwaW5nIGFib3ZlIGRpZG4ndCBsb3Nl
IHRoZSBpbml0aWFsIGNvbnRleHQgZm9yIHRoZQorICAgICBjdXJyZW50IGxvb2thaGVhZCB0b2tl
biwgdGhlIHNoaWZ0IGJlbG93IHdpbGwgZm9yIHN1cmUuICAqLworICBZWV9MQUNfRElTQ0FSRCAo
ImVycm9yIHJlY292ZXJ5Iik7XV0pWworCisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOCisgICorK3l5dnNwID0geXlsdmFsOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9FTkQKK11iNF9sb2NhdGlvbnNfaWYoW1sKKyAgeXllcnJvcl9yYW5nZVsyXSA9IHl5bGxv
YzsKKyAgLyogVXNpbmcgWVlMTE9DIGlzIHRlbXB0aW5nLCBidXQgd291bGQgY2hhbmdlIHRoZSBs
b2NhdGlvbiBvZgorICAgICB0aGUgbG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxlIHRob3Vn
aC4gICovCisgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgeXllcnJvcl9yYW5nZSwgMik7CisgICor
K3l5bHNwID0geXlsb2M7XV0pWworCisgIC8qIFNoaWZ0IHRoZSBlcnJvciB0b2tlbi4gICovCisg
IFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXlzdG9zW3l5bl0sIHl5dnNwLCB5eWxzcCk7
CisKKyAgeXlzdGF0ZSA9IHl5bjsKKyAgZ290byB5eW5ld3N0YXRlOworCisKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlhY2NlcHRsYWIgLS0gWVlBQ0NFUFQg
Y29tZXMgaGVyZS4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
K3l5YWNjZXB0bGFiOgorICB5eXJlc3VsdCA9IDA7CisgIGdvdG8geXlyZXR1cm47CisKKworLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlhYm9ydGxhYiAtLSBZWUFC
T1JUIGNvbWVzIGhlcmUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LworeXlhYm9ydGxhYjoKKyAgeXlyZXN1bHQgPSAxOworICBnb3RvIHl5cmV0dXJuOworCisKKyNp
ZiBdYjRfbGFjX2lmKFtbMV1dLCBbWyFkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJC
T1NFXV0pWworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLgorfCB5eWV4aGF1c3RlZGxhYiAtLSBtZW1vcnkgZXhoYXVzdGlvbiBjb21lcyBoZXJlLiAg
fAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor
eXlleGhhdXN0ZWRsYWI6CisgIHl5ZXJyb3IgKF1iNF95eWVycm9yX2FyZ3NbWVlfKCJtZW1vcnkg
ZXhoYXVzdGVkIikpOworICB5eXJlc3VsdCA9IDI7CisgIC8qIEZhbGwgdGhyb3VnaC4gICovCisj
ZW5kaWYKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLgorfCB5eXJldHVybiAtLSBwYXJzaW5nIGlzIGZpbmlzaGVkLCByZXR1cm4gdGhl
IHJlc3VsdC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovCit5eXJldHVybjoKKyAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQorICAgIHsK
KyAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBsb29rYWhlYWQgdHJhbnNsYXRpb24u
ICBTZWUgY29tbWVudHMgYXQKKyAgICAgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5
IHRoaXMgaXMgbmVjZXNzYXJ5LiAgKi8KKyAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXlj
aGFyKTsKKyAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBkaXNjYXJkaW5nIGxvb2thaGVhZCIs
CisgICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsXWI0X2xvY2F0aW9uc19pZihbLCAm
eXlsbG9jXSlbXWI0X3VzZXJfYXJnc1spOworICAgIH0KKyAgLyogRG8gbm90IHJlY2xhaW0gdGhl
IHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hvc2UgYWN0aW9uIHRyaWdnZXJlZAorICAgICB0aGlzIFlZ
QUJPUlQgb3IgWVlBQ0NFUFQuICAqLworICBZWVBPUFNUQUNLICh5eWxlbik7CisgIFlZX1NUQUNL
X1BSSU5UICh5eXNzLCB5eXNzcCk7CisgIHdoaWxlICh5eXNzcCAhPSB5eXNzKQorICAgIHsKKyAg
ICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKKyAgICAgICAgICAgICAgICAgIHl5
c3Rvc1sqeXlzc3BdLCB5eXZzcF1iNF9sb2NhdGlvbnNfaWYoWywgeXlsc3BdKVtdYjRfdXNlcl9h
cmdzWyk7CisgICAgICBZWVBPUFNUQUNLICgxKTsKKyAgICB9CisjaWZuZGVmIHl5b3ZlcmZsb3cK
KyAgaWYgKHl5c3MgIT0geXlzc2EpCisgICAgWVlTVEFDS19GUkVFICh5eXNzKTsKKyNlbmRpZl1i
NF9sYWNfaWYoW1sKKyAgaWYgKHl5ZXMgIT0geXllc2EpCisgICAgWVlTVEFDS19GUkVFICh5eWVz
KTtdXSliNF9wdXNoX2lmKFtbCisgIHl5cHMtPnl5bmV3ID0gMTsKKworCisvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eXB1c2hyZXR1cm4gLS0gYXNrIGZv
ciB0aGUgbmV4dCB0b2tlbi4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCit5eXB1c2hyZXR1cm46XV0pWworI2lmIFlZRVJST1JfVkVSQk9TRQorICBpZiAo
eXltc2cgIT0geXltc2didWYpCisgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7CisjZW5kaWYKKyAg
cmV0dXJuIHl5cmVzdWx0OworfQorXWI0X2VwaWxvZ3VlW11kbmwKK2I0X291dHB1dF9lbmQKKwor
YjRfZGVmaW5lc19pZihbWworXWI0X291dHB1dF9iZWdpbihbYjRfc3BlY19kZWZpbmVzX2ZpbGVd
KVsKK11iNF9jb3B5cmlnaHQoW0Jpc29uIGludGVyZmFjZSBmb3IgWWFjYy1saWtlIHBhcnNlcnMg
aW4gQ10pWworXWI0X2Rpc2NsYWltZXJbCitdYjRfc2hhcmVkX2RlY2xhcmF0aW9uc1sKK11iNF9v
dXRwdXRfZW5kWworXV0pIyBiNF9kZWZpbmVzX2lmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi91cGRhdGVfZmxleF9i
aXNvbl9iaW5hcmllcy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OWMwMDJiMDRlNzg5MzIzOGI0MDhlZWZlZjNk
M2M3ZDg3MTU2ZmJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dG9vbHMvZmxleC1iaXNvbi91cGRhdGVfZmxleF9iaXNvbl9iaW5hcmllcy5weQpAQCAtMCwwICsx
LDY5IEBACisjIS91c3IvYmluL3B5dGhvbjIKKyMKKyMgQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIworIyB1cGRhdGVfZmxleF9iaXNvbl9iaW5h
cmllcy5weToKKyMgICBIZWxwZXIgc2NyaXB0IHRvIHVwZGF0ZSB0aGUgdmVyc2lvbiBvZiBmbGV4
IGFuZCBiaXNvbiBpbiBjbG91ZCBzdG9yYWdlLgorIyAgIFRoZXNlIGJpbmFyaWVzIGFyZSB1c2Vk
IHRvIGdlbmVyYXRlIHRoZSBBTkdMRSB0cmFuc2xhdG9yJ3MgbGV4ZXIgYW5kIHBhcnNlci4KKyMg
ICBUaGlzIHNjcmlwdCByZWxpZXMgb24gZmxleCBhbmQgYmlzb24gYmluYXJpZXMgdG8gYmUgZXh0
ZXJuYWxseSBidWlsdCB3aGljaAorIyAgIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmFyZSBvcGVyYXRp
b24uIEl0IGN1cnJlbnRseSBvbmx5IHdvcmtzIG9uIFdpbmRvd3MgYW5kCisjICAgTGludXguIEl0
IGFsc28gd2lsbCB1cGRhdGUgdGhlIGhhc2hlcyBzdG9yZWQgaW4gdGhlIHRyZWUuIEZvciBtb3Jl
IGluZm8gc2VlCisjICAgUkVBRE1FLm1kIGluIHRoaXMgZm9sZGVyLgorCitpbXBvcnQgb3MKK2lt
cG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworCitzeXMucGF0aC5hcHBl
bmQoJ3Rvb2xzLycpCitpbXBvcnQgYW5nbGVfdG9vbHMKKworCitkZWYgbWFpbigpOgorICAgIGlm
IGFuZ2xlX3Rvb2xzLmlzX2xpbnV4OgorICAgICAgICBzdWJkaXIgPSAnbGludXgnCisgICAgICAg
IGZpbGVzID0gWydmbGV4JywgJ2Jpc29uJ10KKyAgICBlbGlmIGFuZ2xlX3Rvb2xzLmlzX3dpbmRv
d3M6CisgICAgICAgIHN1YmRpciA9ICd3aW5kb3dzJworICAgICAgICBmaWxlcyA9IFsKKyAgICAg
ICAgICAgICdmbGV4LmV4ZScsICdiaXNvbi5leGUnLCAnbTQuZXhlJywgJ21zeXMtMi4wLmRsbCcs
ICdtc3lzLWljb252LTIuZGxsJywKKyAgICAgICAgICAgICdtc3lzLWludGwtOC5kbGwnCisgICAg
ICAgIF0KKyAgICBlbHNlOgorICAgICAgICBwcmludCgnU2NyaXB0IG11c3QgYmUgcnVuIG9uIExp
bnV4IG9yIFdpbmRvd3MuJykKKyAgICAgICAgcmV0dXJuIDEKKworICAgIGZpbGVzID0gW29zLnBh
dGguam9pbihzeXMucGF0aFswXSwgc3ViZGlyLCBmKSBmb3IgZiBpbiBmaWxlc10KKworICAgICMg
U3RlcCAxOiBVcGxvYWQgdG8gY2xvdWQgc3RvcmFnZQorICAgIGlmIG5vdCBhbmdsZV90b29scy51
cGxvYWRfdG9fZ29vZ2xlX3N0b3JhZ2UoJ2FuZ2xlLWZsZXgtYmlzb24nLCBmaWxlcyk6CisgICAg
ICAgIHByaW50KCdFcnJvciB1cGxvYWQgdG8gY2xvdWQgc3RvcmFnZScpCisgICAgICAgIHJldHVy
biAxCisKKyAgICAjIFN0ZXAgMjogU3RhZ2UgbmV3IFNIQSB0byBnaXQKKyAgICBpZiBub3QgYW5n
bGVfdG9vbHMuc3RhZ2VfZ29vZ2xlX3N0b3JhZ2Vfc2hhMShmaWxlcyk6CisgICAgICAgIHByaW50
KCdFcnJvciBydW5uaW5nIGdpdCBhZGQnKQorICAgICAgICByZXR1cm4gMgorCisgICAgcHJpbnQo
JycpCisgICAgcHJpbnQoJ1RoZSB1cGRhdGVkIFNIQSBoYXMgYmVlbiBzdGFnZWQgZm9yIGNvbW1p
dC4gUGxlYXNlIGNvbW1pdCBhbmQgdXBsb2FkLicpCisgICAgcHJpbnQoJ1N1Z2dlc3RlZCBjb21t
aXQgbWVzc2FnZSAocGxlYXNlIGluZGljYXRlIGZsZXgvYmlzb24gdmVyc2lvbnMpOicpCisgICAg
cHJpbnQoJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQorICAgIHByaW50KCcnKQorICAg
IHByaW50KCdVcGRhdGUgZmxleCBhbmQgYmlzb24gYmluYXJpZXMgZm9yICVzLicgJSBwbGF0Zm9y
bS5zeXN0ZW0oKSkKKyAgICBwcmludCgnJykKKyAgICBwcmludCgnVGhlc2UgYmluYXJpZXMgd2Vy
ZSB1cGRhdGVkIHVzaW5nICVzLicgJSBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKSkKKyAgICBw
cmludCgnUGxlYXNlIHNlZSBpbnN0cnVjdGlvbnMgaW4gdG9vbHMvZmxleC1iaXNvbi9SRUFETUUu
bWQuJykKKyAgICBwcmludCgnJykKKyAgICBwcmludCgnZmxleCBpcyBhdCB2ZXJzaW9uIFRPRE8u
JykKKyAgICBwcmludCgnYmlzb24gaXMgYXQgdmVyc2lvbiBUT0RPLicpCisgICAgcHJpbnQoJycp
CisgICAgcHJpbnQoJ0J1ZzogTm9uZScpCisKKyAgICByZXR1cm4gMAorCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL2Jpc29uLmV4ZS5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL2Jpc29u
LmV4ZS5zaGExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjYjVmNGZiNWJiMGIxZDM1YjMyMjE1NGI0NDY1OGY1MzY5
NDRiNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9m
bGV4LWJpc29uL3dpbmRvd3MvYmlzb24uZXhlLnNoYTEKQEAgLTAsMCArMSBAQAorNGE2ZTFkY2Vk
NjFkYWIyZmNkODI4ZWRiZmJmYTdlYjAyMTVjZjJhNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24v
d2luZG93cy9mbGV4LmV4ZS5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxl
eC1iaXNvbi93aW5kb3dzL2ZsZXguZXhlLnNoYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmFhNzhlZGNhZmVkZWUw
MjFlM2MyNzc4ODM5OTg2YjE4MzlmNjBjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9mbGV4LmV4ZS5zaGExCkBAIC0w
LDAgKzEgQEAKK2JjNTBiM2I2ZTg0YTMwOTQwYWExMjIzZjY5MmM5ZjFmYzliZWRiZjkKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbTQuZXhlLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbTQuZXhlLnNoYTEKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTY0M2RmYjNiMDU2YzJmZjJhZTRiYTQ3NjNhYmU5N2Y1MDU3MWQ5ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tNC5l
eGUuc2hhMQpAQCAtMCwwICsxIEBACiswNjgzNmU0NWIwNWQ1OTdkNTZiNzRmZWJlM2JjZmQ3NmU4
MGVmOGY4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtMi4wLmRsbC5zaGEx
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMt
Mi4wLmRsbC5zaGExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MzUyYzc0NjM1YmZkMDg4ZjkyYzlmYTMyYzFlZDMw
NDhlMDMwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3dpbmRvd3MvbXN5cy0yLjAuZGxsLnNoYTEKQEAgLTAsMCArMSBAQAorZDBi
ZWFiN2VjNzdiMjVhYzcxYmQyZDNiZjU0ZjRlZmQzOWUzOTQ3ZgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgt
Ymlzb24vd2luZG93cy9tc3lzLWljb252LTIuZGxsLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbXN5cy1pY29udi0yLmRsbC5zaGExCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1MmJjNGI0MmI5NjRiMzlmMWVlOTUwZjdhYjlhMzFiNWY4OWVlM2MKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRv
d3MvbXN5cy1pY29udi0yLmRsbC5zaGExCkBAIC0wLDAgKzEgQEAKKzA1NzlmMTU2M2UyMjBkNjEy
MWI2NWE1ZjQ3Mjk5MTljZDBjYjZhZjkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3Mv
bXN5cy1pbnRsLTguZGxsLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL3dpbmRvd3MvbXN5cy1pbnRsLTguZGxsLnNoYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTczNTkyMTEz
ZjEyZTdlZTJmZmI1ODJhYWI0MWViNGJlYzM5YWUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLWludGwtOC5k
bGwuc2hhMQpAQCAtMCwwICsxIEBACisyMTJhOWVmOTBlMjFhOThmZjU3Y2EzMDFhNjBjODRjYmVj
YTdiZTI4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvQlVJTEQuZ24KaW5kZXggZWZiYjFmZjA1Y2JlZGUwN2QzZjMzZjUwNDc3Mjc2NjE5ZmYzYzUw
ZS4uYWNiMWI0NDFkMDI0MGJjNjI3MGFmYWFmODNjZWM3MDAxZjJhYTYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL0JVSUxELmduCkBAIC01LDEwICs1LDIwIEBACiBpbXBvcnQoIi4uL2du
aS9hbmdsZS5nbmkiKQogCiBfdXRpbF9zb3VyY2VzID0gWworICAiRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzLmgiLAorICAiRUdMV2luZG93LmNwcCIsCisgICJFR0xXaW5kb3cuaCIsCisgICJFdmVudC5o
IiwKKyAgIk1hdHJpeC5jcHAiLAorICAiTWF0cml4LmgiLAorICAiT1NQaXhtYXAuaCIsCisgICJP
U1dpbmRvdy5jcHAiLAorICAiT1NXaW5kb3cuaCIsCiAgICJjb21fdXRpbHMuaCIsCi0gICJrZXli
b2FyZC5oIiwKKyAgImZyYW1lX2NhcHR1cmVfdXRpbHMuaCIsCiAgICJnZW9tZXRyeV91dGlscy5j
cHAiLAogICAiZ2VvbWV0cnlfdXRpbHMuaCIsCisgICJrZXlib2FyZC5oIiwKICAgIm1vdXNlLmgi
LAogICAicmFuZG9tX3V0aWxzLmNwcCIsCiAgICJyYW5kb21fdXRpbHMuaCIsCkBAIC0xNiwxNSAr
MjYsNiBAQCBfdXRpbF9zb3VyY2VzID0gWwogICAic2hhZGVyX3V0aWxzLmgiLAogICAidXRpbF9l
eHBvcnQuaCIsCiAgICJ1dGlsX2dsLmgiLAotICAiRXZlbnQuaCIsCi0gICJFR0xQbGF0Zm9ybVBh
cmFtZXRlcnMuaCIsCi0gICJFR0xXaW5kb3cuY3BwIiwKLSAgIkVHTFdpbmRvdy5oIiwKLSAgIk1h
dHJpeC5jcHAiLAotICAiTWF0cml4LmgiLAotICAiT1NQaXhtYXAuaCIsCi0gICJPU1dpbmRvdy5j
cHAiLAotICAiT1NXaW5kb3cuaCIsCiBdCiAKIGlmIChpc193aW4pIHsKQEAgLTYzLDEwICs2NCwx
MCBAQCBpZiAoaXNfZnVjaHNpYSkgewogCiBpZiAoaXNfbWFjKSB7CiAgIF91dGlsX3NvdXJjZXMg
Kz0gWwotICAgICJvc3gvT1NYUGl4bWFwLm1tIiwKICAgICAib3N4L09TWFBpeG1hcC5oIiwKLSAg
ICAib3N4L09TWFdpbmRvdy5tbSIsCisgICAgIm9zeC9PU1hQaXhtYXAubW0iLAogICAgICJvc3gv
T1NYV2luZG93LmgiLAorICAgICJvc3gvT1NYV2luZG93Lm1tIiwKICAgXQogfQogCkBAIC04NSw2
ICs4Niw3IEBAIGNvbmZpZygiYW5nbGVfdXRpbF9sb2FkZXJfY29uZmlnIikgewogfQogCiBjb25m
aWcoImFuZ2xlX3V0aWxfbG9hZGVyX2hlYWRlcnNfY29uZmlnIikgeworICAjIEZvcmNlIHVzZXJz
IHRvIGluY2x1ZGUgInV0aWwvaGVhZGVyLmgiIGluc3RlYWQgb2YganVzdCAiaGVhZGVyLmgiLgog
ICBpbmNsdWRlX2RpcnMgPSBbICIuLiIgXQogfQogCkBAIC0xMDAsOSArMTAyLDcgQEAgYW5nbGVf
c291cmNlX3NldCgiYW5nbGVfdXRpbF9sb2FkZXJfaGVhZGVycyIpIHsKICAgICBzb3VyY2VzICs9
IFsgIndpbmRvd3Mvd2dsX2xvYWRlcl9hdXRvZ2VuLmgiIF0KICAgfQogCi0gIHB1YmxpY19kZXBz
ID0gWwotICAgICIkYW5nbGVfcm9vdDppbmNsdWRlcyIsCi0gIF0KKyAgcHVibGljX2RlcHMgPSBb
ICIkYW5nbGVfcm9vdDppbmNsdWRlcyIgXQogCiAgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xl
X3V0aWxfbG9hZGVyX2hlYWRlcnNfY29uZmlnIiBdCiB9CkBAIC0xMjAsOSArMTIwLDcgQEAgYW5n
bGVfc291cmNlX3NldCgiYW5nbGVfdXRpbF9sb2FkZXIiKSB7CiAgICAgc291cmNlcyArPSBbICJ3
aW5kb3dzL3dnbF9sb2FkZXJfYXV0b2dlbi5jcHAiIF0KICAgfQogCi0gIGRlcHMgPSBbCi0gICAg
IjphbmdsZV91dGlsX2xvYWRlcl9oZWFkZXJzIiwKLSAgXQorICBkZXBzID0gWyAiOmFuZ2xlX3V0
aWxfbG9hZGVyX2hlYWRlcnMiIF0KIAogICBwdWJsaWNfY29uZmlncyArPSBbCiAgICAgIiRhbmds
ZV9yb290Om5vX2dsX3Byb3RvdHlwZXMiLApAQCAtMTMzLDcgKzEzMSw4IEBAIGFuZ2xlX3NvdXJj
ZV9zZXQoImFuZ2xlX3V0aWxfbG9hZGVyIikgewogfQogCiBjb25maWcoImFuZ2xlX3V0aWxfY29u
ZmlnIikgewotICBpbmNsdWRlX2RpcnMgPSBbICIuIiBdCisgICMgRm9yY2UgdXNlcnMgdG8gaW5j
bHVkZSAidXRpbC9oZWFkZXIuaCIgaW5zdGVhZCBvZiBqdXN0ICJoZWFkZXIuaCIuCisgIGluY2x1
ZGVfZGlycyA9IFsgIi4uIiBdCiAgIGlmIChpc19saW51eCAmJiBhbmdsZV91c2VfeDExKSB7CiAg
ICAgbGlicyA9IFsgIlgxMSIgXQogICB9CkBAIC0xNTcsMTIgKzE1NiwxMSBAQCBmb3JlYWNoKGlz
X3NoYXJlZF9saWJyYXJ5LAogICB0YXJnZXQobGlicmFyeV90eXBlLCBsaWJyYXJ5X25hbWUpIHsK
ICAgICB0ZXN0b25seSA9IHRydWUKICAgICBzb3VyY2VzID0gX3V0aWxfc291cmNlcwotICAgIGRl
cHMgPSBbCisgICAgZGVwcyA9IFsgIiRhbmdsZV9yb290OmFuZ2xlX2NvbW1vbiIgXQorICAgIHB1
YmxpY19kZXBzID0gWwogICAgICAgIjphbmdsZV90ZXN0X3V0aWxzIiwKICAgICAgICI6YW5nbGVf
dXRpbF9sb2FkZXJfaGVhZGVycyIsCi0gICAgICAiJGFuZ2xlX3Jvb3Q6YW5nbGVfY29tbW9uIiwK
ICAgICBdCi0gICAgcHVibGljX2RlcHMgPSBbXQogICAgIGxpYnMgPSBbXQogCiAgICAgaWYgKGlz
X2xpbnV4KSB7CkBAIC0xOTUsMTQgKzE5MywxNCBAQCBmb3JlYWNoKGlzX3NoYXJlZF9saWJyYXJ5
LAogICAgIGlmIChpc19mdWNoc2lhKSB7CiAgICAgICBwdWJsaWNfZGVwcyArPSBbCiAgICAgICAg
ICIkYW5nbGVfcm9vdC9zcmMvY29tbW9uL2Z1Y2hzaWFfZWdsIiwKLSAgICAgICAgIi8vdGhpcmRf
cGFydHkvZnVjaHNpYS1zZGsvc2RrOmFzeW5jLWxvb3AtY3BwIiwKLSAgICAgICAgIi8vdGhpcmRf
cGFydHkvZnVjaHNpYS1zZGsvc2RrOmFzeW5jLWxvb3AtZGVmYXVsdCIsCi0gICAgICAgICIvL3Ro
aXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3NkazpmZGlvIiwKLSAgICAgICAgIi8vdGhpcmRfcGFydHkv
ZnVjaHNpYS1zZGsvc2RrOmZ1Y2hzaWEtaW1hZ2VzIiwKLSAgICAgICAgIi8vdGhpcmRfcGFydHkv
ZnVjaHNpYS1zZGsvc2RrOmZ1Y2hzaWEtdWktcG9saWN5IiwKLSAgICAgICAgIi8vdGhpcmRfcGFy
dHkvZnVjaHNpYS1zZGsvc2RrOmZ1Y2hzaWEtdWktc2NlbmljIiwKLSAgICAgICAgIi8vdGhpcmRf
cGFydHkvZnVjaHNpYS1zZGsvc2RrOmZ1Y2hzaWEtdWktdmlld3MiLAotICAgICAgICAiLy90aGly
ZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6c2NlbmljX2NwcCIsCisgICAgICAgICIvL3RoaXJkX3Bh
cnR5L2Z1Y2hzaWEtc2RrL3Nkay9maWRsL2Z1Y2hzaWEuaW1hZ2VzIiwKKyAgICAgICAgIi8vdGhp
cmRfcGFydHkvZnVjaHNpYS1zZGsvc2RrL2ZpZGwvZnVjaHNpYS51aS5wb2xpY3kiLAorICAgICAg
ICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGsvZmlkbC9mdWNoc2lhLnVpLnNjZW5pYyIs
CisgICAgICAgICIvL3RoaXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3Nkay9maWRsL2Z1Y2hzaWEudWku
dmlld3MiLAorICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGsvcGtnL2FzeW5j
LWxvb3AtY3BwIiwKKyAgICAgICAgIi8vdGhpcmRfcGFydHkvZnVjaHNpYS1zZGsvc2RrL3BrZy9h
c3luYy1sb29wLWRlZmF1bHQiLAorICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9z
ZGsvcGtnL2ZkaW8iLAorICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGsvcGtn
L3NjZW5pY19jcHAiLAogICAgICAgXQogICAgIH0KIApAQCAtMjU3LDkgKzI1NSw3IEBAIGNvbmZp
ZygiYW5nbGVfdGVzdF91dGlsX2NvbmZpZyIpIHsKIAogYW5nbGVfc291cmNlX3NldCgiYW5nbGVf
dGVzdF91dGlscyIpIHsKICAgcHVibGljX2NvbmZpZ3MgPSBbICI6YW5nbGVfdGVzdF91dGlsX2Nv
bmZpZyIgXQotICBkZXBzID0gWwotICAgICIkYW5nbGVfcm9vdDphbmdsZV9jb21tb24iLAotICBd
CisgIGRlcHMgPSBbICIkYW5nbGVfcm9vdDphbmdsZV9jb21tb24iIF0KICAgc291cmNlcyA9IFsK
ICAgICAiVGltZXIuY3BwIiwKICAgICAiVGltZXIuaCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL0VHTFBsYXRmb3JtUGFyYW1ldGVycy5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC9FR0xQbGF0Zm9ybVBhcmFtZXRlcnMuaAppbmRleCBhM2QzZWYyNTMz
NzJmYzUxYjBlNmIxMzVkMDM2ZTFlZGU0YzI1NTg1Li5mNTUzNjY3NDhiODFmMzFkMzUxNWUzYzI2
YjFiODk5ODZlZTYwY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L0VHTFBsYXRmb3JtUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvRUdMUGxhdGZvcm1QYXJhbWV0ZXJzLmgKQEAgLTQ4LDggKzQ4LDggQEAgc3RydWN0IEVHTFBs
YXRmb3JtUGFyYW1ldGVycwogICAgIGF1dG8gdGllKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBzdGQ6OnRpZShyZW5kZXJlciwgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGRldmlj
ZVR5cGUsIHByZXNlbnRQYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdMYXllcnNF
bmFibGVkLCBjb250ZXh0VmlydHVhbGl6YXRpb24sIGNvbW1hbmRHcmFwaEZlYXR1cmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja0ZlYXR1cmUsIHBsYXRmb3JtTWV0
aG9kcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0xheWVyc0VuYWJsZWQsIGNvbnRl
eHRWaXJ0dWFsaXphdGlvbiwgdHJhbnNmb3JtRmVlZGJhY2tGZWF0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYWxsb2NhdGVOb25aZXJvTWVtb3J5RmVhdHVyZSwgcGxhdGZvcm1NZXRob2Rz
LCByb2J1c3RuZXNzKTsKICAgICB9CiAKICAgICBFR0xpbnQgcmVuZGVyZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOwpAQCAt
NTksOCArNTksOSBAQCBzdHJ1Y3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzCiAgICAgRUdMaW50IHBy
ZXNlbnRQYXRoICAgICAgICAgICAgICAgICAgICAgID0gRUdMX0RPTlRfQ0FSRTsKICAgICBFR0xp
bnQgZGVidWdMYXllcnNFbmFibGVkICAgICAgICAgICAgICAgPSBFR0xfRE9OVF9DQVJFOwogICAg
IEVHTGludCBjb250ZXh0VmlydHVhbGl6YXRpb24gICAgICAgICAgICA9IEVHTF9ET05UX0NBUkU7
Ci0gICAgRUdMaW50IGNvbW1hbmRHcmFwaEZlYXR1cmUgICAgICAgICAgICAgID0gRUdMX0RPTlRf
Q0FSRTsKKyAgICBFR0xpbnQgcm9idXN0bmVzcyAgICAgICAgICAgICAgICAgICAgICAgPSBFR0xf
RE9OVF9DQVJFOwogICAgIEVHTGludCB0cmFuc2Zvcm1GZWVkYmFja0ZlYXR1cmUgICAgICAgICA9
IEVHTF9ET05UX0NBUkU7CisgICAgRUdMaW50IGFsbG9jYXRlTm9uWmVyb01lbW9yeUZlYXR1cmUg
ICAgID0gRUdMX0RPTlRfQ0FSRTsKICAgICBhbmdsZTo6UGxhdGZvcm1NZXRob2RzICpwbGF0Zm9y
bU1ldGhvZHMgPSBudWxscHRyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9FR0xXaW5kb3cuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9F
R0xXaW5kb3cuY3BwCmluZGV4IDgyZDA2YjU0NzkwYmU2NmM2NDdhZjgyOGJmNTZmNzIxMzhmODFk
MjUuLmRjYmIwNDhiM2Y2ZTA1ODdlZjI4YTg4NzkzZTExYjgxZjM4NWQyM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5jcHAKQEAgLTE3MywxOSArMTczLDE5IEBA
IGJvb2wgRUdMV2luZG93Ojppbml0aWFsaXplRGlzcGxheShPU1dpbmRvdyAqb3NXaW5kb3csCiAg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBkaXNhYmxlZEZlYXR1cmVPdmVycmlkZXM7CiAg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBlbmFibGVkRmVhdHVyZU92ZXJyaWRlczsKIAot
ICAgIGlmIChwYXJhbXMuY29tbWFuZEdyYXBoRmVhdHVyZSA9PSBFR0xfVFJVRSkKKyAgICBpZiAo
cGFyYW1zLnRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZSA9PSBFR0xfRkFMU0UpCiAgICAgewotICAg
ICAgICBlbmFibGVkRmVhdHVyZU92ZXJyaWRlcy5wdXNoX2JhY2soImNvbW1hbmRfZ3JhcGgiKTsK
KyAgICAgICAgZGlzYWJsZWRGZWF0dXJlT3ZlcnJpZGVzLnB1c2hfYmFjaygic3VwcG9ydHNfdHJh
bnNmb3JtX2ZlZWRiYWNrX2V4dGVuc2lvbiIpOworICAgICAgICBkaXNhYmxlZEZlYXR1cmVPdmVy
cmlkZXMucHVzaF9iYWNrKCJlbXVsYXRlX3RyYW5zZm9ybV9mZWVkYmFjayIpOwogICAgIH0KLSAg
ICBlbHNlIGlmIChwYXJhbXMuY29tbWFuZEdyYXBoRmVhdHVyZSA9PSBFR0xfRkFMU0UpCisKKyAg
ICBpZiAocGFyYW1zLmFsbG9jYXRlTm9uWmVyb01lbW9yeUZlYXR1cmUgPT0gRUdMX1RSVUUpCiAg
ICAgewotICAgICAgICBkaXNhYmxlZEZlYXR1cmVPdmVycmlkZXMucHVzaF9iYWNrKCJjb21tYW5k
X2dyYXBoIik7CisgICAgICAgIGVuYWJsZWRGZWF0dXJlT3ZlcnJpZGVzLnB1c2hfYmFjaygiYWxs
b2NhdGVfbm9uX3plcm9fbWVtb3J5Iik7CiAgICAgfQotCi0gICAgaWYgKHBhcmFtcy50cmFuc2Zv
cm1GZWVkYmFja0ZlYXR1cmUgPT0gRUdMX0ZBTFNFKQorICAgIGVsc2UgaWYgKHBhcmFtcy5hbGxv
Y2F0ZU5vblplcm9NZW1vcnlGZWF0dXJlID09IEVHTF9GQUxTRSkKICAgICB7Ci0gICAgICAgIGRp
c2FibGVkRmVhdHVyZU92ZXJyaWRlcy5wdXNoX2JhY2soInN1cHBvcnRzX3RyYW5zZm9ybV9mZWVk
YmFja19leHRlbnNpb24iKTsKLSAgICAgICAgZGlzYWJsZWRGZWF0dXJlT3ZlcnJpZGVzLnB1c2hf
YmFjaygiZW11bGF0ZV90cmFuc2Zvcm1fZmVlZGJhY2siKTsKKyAgICAgICAgZGlzYWJsZWRGZWF0
dXJlT3ZlcnJpZGVzLnB1c2hfYmFjaygiYWxsb2NhdGVfbm9uX3plcm9fbWVtb3J5Iik7CiAgICAg
fQogCiAgICAgaWYgKCFkaXNhYmxlZEZlYXR1cmVPdmVycmlkZXMuZW1wdHkoKSkKQEAgLTYyMiwx
MyArNjIyLDYgQEAgYm9vbCBFR0xXaW5kb3c6Omhhc0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4g
ZWdsR2V0RXJyb3IoKSAhPSBFR0xfU1VDQ0VTUzsKIH0KIAotYm9vbCBDaGVja0V4dGVuc2lvbkV4
aXN0cyhjb25zdCBjaGFyICphbGxFeHRlbnNpb25zLCBjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFt
ZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBwYWRkZWRFeHRlbnNpb25zID0gc3RkOjpzdHJp
bmcoIiAiKSArIGFsbEV4dGVuc2lvbnMgKyBzdGQ6OnN0cmluZygiICIpOwotICAgIHJldHVybiBw
YWRkZWRFeHRlbnNpb25zLmZpbmQoc3RkOjpzdHJpbmcoIiAiKSArIGV4dE5hbWUgKyBzdGQ6OnN0
cmluZygiICIpKSAhPQotICAgICAgICAgICBzdGQ6OnN0cmluZzo6bnBvczsKLX0KLQogLy8gc3Rh
dGljCiB2b2lkIEdMV2luZG93QmFzZTo6RGVsZXRlKEdMV2luZG93QmFzZSAqKndpbmRvdykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5oCmluZGV4IDBkMzk3MDk5NjAw
N2I5NTZjYjg0ZTBjMThhYWU0NjI1MmRjMmVhNDguLmNjMTQwMmY0MTY2NWY3NDM4MjJkY2FiYjZm
NmIxOWFiYWY3YTEzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
RUdMV2luZG93LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9FR0xXaW5kb3cu
aApAQCAtMTU3LDYgKzE1Nyw0IEBAIGNsYXNzIEFOR0xFX1VUSUxfRVhQT1JUIEVHTFdpbmRvdyA6
IHB1YmxpYyBHTFdpbmRvd0Jhc2UKICAgICBFR0xpbnQgbUVHTE1pbm9yVmVyc2lvbjsKIH07CiAK
LUFOR0xFX1VUSUxfRVhQT1JUIGJvb2wgQ2hlY2tFeHRlbnNpb25FeGlzdHMoY29uc3QgY2hhciAq
YWxsRXh0ZW5zaW9ucywgY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUpOwotCiAjZW5kaWYgIC8v
IFVUSUxfRUdMV0lORE9XX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL2ZyYW1lX2NhcHR1cmVfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
ZnJhbWVfY2FwdHVyZV91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExYWUyNTY0YmYyOTk2NTQ3NjJjYjVh
ODM4NjZlNmJlOWM2YjMwMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS91dGlsL2ZyYW1lX2NhcHR1cmVfdXRpbHMuaApAQCAtMCwwICsxLDQ3IEBACisvLworLy8g
Q29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gZnJhbWVfY2FwdHVyZV91dGlsczoKKy8vICAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgY2Fw
dHVyZSBhbmQgcmVwbGF5IG9mIHRyYWNlcy4KKy8vCisKKyNpZm5kZWYgVVRJTF9GUkFNRV9DQVBU
VVJFX1VUSUxTX0hfCisjZGVmaW5lIFVUSUxfRlJBTUVfQ0FQVFVSRV9VVElMU19IXworCisjaW5j
bHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKwor
I2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKKyNkZWZpbmUgVVNFX1NZU1RFTV9aTElC
CisjaW5jbHVkZSAiY29tcHJlc3Npb25fdXRpbHNfcG9ydGFibGUuaCIKKworbmFtZXNwYWNlIGFu
Z2xlCit7CisKK2lubGluZSB1aW50OF90ICpEZWNvbXByZXNzQmluYXJ5RGF0YShjb25zdCBzdGQ6
OnZlY3Rvcjx1aW50OF90PiAmY29tcHJlc3NlZERhdGEpCit7CisgICAgdWludDMyX3QgdW5jb21w
cmVzc2VkU2l6ZSA9CisgICAgICAgIHpsaWJfaW50ZXJuYWw6OkdldEd6aXBVbmNvbXByZXNzZWRT
aXplKGNvbXByZXNzZWREYXRhLmRhdGEoKSwgY29tcHJlc3NlZERhdGEuc2l6ZSgpKTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IHVuY29tcHJlc3NlZERhdGEobmV3IHVpbnQ4X3Rb
dW5jb21wcmVzc2VkU2l6ZV0pOworICAgIHVMb25nIGRlc3RMZW4gPSB1bmNvbXByZXNzZWRTaXpl
OworICAgIGludCB6UmVzdWx0ID0KKyAgICAgICAgemxpYl9pbnRlcm5hbDo6R3ppcFVuY29tcHJl
c3NIZWxwZXIodW5jb21wcmVzc2VkRGF0YS5nZXQoKSwgJmRlc3RMZW4sIGNvbXByZXNzZWREYXRh
LmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dUxvbmc+KGNvbXByZXNzZWREYXRhLnNpemUoKSkpOworCisgICAgaWYgKHpSZXN1
bHQgIT0gWl9PSykKKyAgICB7CisgICAgICAgIHN0ZDo6Y2VyciA8PCAiRmFpbHVyZSB0byBkZWNv
bXByZXNzZWQgYmluYXJ5IGRhdGE6ICIgPDwgelJlc3VsdCA8PCAiXG4iOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gdW5jb21wcmVzc2VkRGF0YS5yZWxlYXNl
KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCisjZW5kaWYgIC8vIFVUSUxfRlJBTUVf
Q0FQVFVSRV9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRp
bC9mdWNoc2lhL1NjZW5pY1dpbmRvdy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L2Z1Y2hzaWEvU2NlbmljV2luZG93LmNwcAppbmRleCBiZjJhOGEzNmZkZWZmMTNlMzI5MzgwYzQ2
YjBmOWNhNjA1MWFiZTgxLi5hMjNkMTBhOTI2MDg4MDIyMDNlZGYxNTJkY2VjOGNkNzYzZmM2OWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Z1Y2hzaWEvU2Nlbmlj
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Z1Y2hzaWEvU2Nl
bmljV2luZG93LmNwcApAQCAtNzIsNiArNzIsNyBAQCBTY2VuaWNXaW5kb3c6OlNjZW5pY1dpbmRv
dygpCiAgICAgICBtTWF0ZXJpYWwoJm1TY2VuaWNTZXNzaW9uKQogewogICAgIG1TY2VuaWNTZXNz
aW9uLnNldF9lcnJvcl9oYW5kbGVyKGZpdDo6YmluZF9tZW1iZXIodGhpcywgJlNjZW5pY1dpbmRv
dzo6b25TY2VuaWNFcnJvcikpOworICAgIG1TY2VuaWNTZXNzaW9uLnNldF9ldmVudF9oYW5kbGVy
KGZpdDo6YmluZF9tZW1iZXIodGhpcywgJlNjZW5pY1dpbmRvdzo6b25TY2VuaWNFdmVudHMpKTsK
ICAgICBtU2NlbmljU2Vzc2lvbi5zZXRfb25fZnJhbWVfcHJlc2VudGVkX2hhbmRsZXIoCiAgICAg
ICAgIGZpdDo6YmluZF9tZW1iZXIodGhpcywgJlNjZW5pY1dpbmRvdzo6b25GcmFtZVByZXNlbnRl
ZCkpOwogfQpAQCAtODQsNyArODUsNyBAQCBTY2VuaWNXaW5kb3c6On5TY2VuaWNXaW5kb3coKQog
Ym9vbCBTY2VuaWNXaW5kb3c6OmluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICAvLyBTZXQgdXAgc2NlbmljIHJlc291cmNlcy4K
LSAgICBtU2hhcGUuU2V0U2hhcGUoc2NlbmljOjpSZWN0YW5nbGUoJm1TY2VuaWNTZXNzaW9uLCB3
aWR0aCwgaGVpZ2h0KSk7CisgICAgbVNoYXBlLlNldEV2ZW50TWFzayhmdWNoc2lhOjp1aTo6Z2Z4
OjprTWV0cmljc0V2ZW50TWFzayk7CiAgICAgbVNoYXBlLlNldE1hdGVyaWFsKG1NYXRlcmlhbCk7
CiAKICAgICBmdWNoc2lhOjp1aTo6dmlld3M6OlZpZXdUb2tlbiB2aWV3VG9rZW47CkBAIC0xMDMs
NiArMTA0LDEzIEBAIGJvb2wgU2NlbmljV2luZG93Ojppbml0aWFsaXplKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICAgICByZXNldE5hdGl2ZVdpbmRv
dygpOwogCisgICAgLy8gQmxvY2sgdW50aWwgaW5pdGlhbCB2aWV3IGRpbWVuc2lvbnMgYXJlIGtu
b3duLgorICAgIHdoaWxlICghbUhhc1ZpZXdNZXRyaWNzICYmICFtSGFzVmlld1Byb3BlcnRpZXMg
JiYgIW1Mb3N0U2Vzc2lvbikKKyAgICB7CisgICAgICAgIG1Mb29wLT5SZXNldFF1aXQoKTsKKyAg
ICAgICAgbUxvb3AtPlJ1bih6eDo6dGltZTo6aW5maW5pdGUoKSwgdHJ1ZSAvKiBvbmNlICovKTsK
KyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY4LDYgKzE3NiwxMCBAQCBib29s
IFNjZW5pY1dpbmRvdzo6cmVzaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICAgIGZ1Y2hz
aWFfZWdsX3dpbmRvd19yZXNpemUobUZ1Y2hzaWFFR0xXaW5kb3cuZ2V0KCksIHdpZHRoLCBoZWln
aHQpOwogCisgICAgbVZpZXdTaXplRGlydHkgPSB0cnVlOworCisgICAgdXBkYXRlVmlld1NpemUo
KTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMDMsNyArMjE1LDI5IEBAIHZvaWQgU2Nl
bmljV2luZG93OjpvbkZyYW1lUHJlc2VudGVkKGZ1Y2hzaWE6OnNjZW5pYzo6c2NoZWR1bGluZzo6
RnJhbWVQcmVzZW50ZWRJCiAKIHZvaWQgU2NlbmljV2luZG93OjpvblNjZW5pY0V2ZW50cyhzdGQ6
OnZlY3RvcjxmdWNoc2lhOjp1aTo6c2NlbmljOjpFdmVudD4gZXZlbnRzKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV2ZW50IDogZXZlbnRzKQorICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50LmlzX2dmeCgpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
ZXZlbnQuZ2Z4KCkuaXNfbWV0cmljcygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlmIChldmVudC5nZngoKS5tZXRyaWNzKCkubm9kZV9pZCAhPSBtU2hhcGUuaWQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgb25WaWV3TWV0cmljcyhl
dmVudC5nZngoKS5tZXRyaWNzKCkubWV0cmljcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChldmVudC5nZngoKS5pc192aWV3X3Byb3BlcnRpZXNfY2hhbmdlZCgpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5nZngoKS52aWV3X3Byb3BlcnRp
ZXNfY2hhbmdlZCgpLnZpZXdfaWQgIT0gbVZpZXctPmlkKCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIG9uVmlld1Byb3BlcnRpZXMoZXZlbnQuZ2Z4KCku
dmlld19wcm9wZXJ0aWVzX2NoYW5nZWQoKS5wcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmIChtVmlld1NpemVEaXJ0eSkKKyAgICB7CisgICAgICAg
IHVwZGF0ZVZpZXdTaXplKCk7CisgICAgfQogfQogCiB2b2lkIFNjZW5pY1dpbmRvdzo6b25TY2Vu
aWNFcnJvcih6eF9zdGF0dXNfdCBzdGF0dXMpCkBAIC0yMTMsNiArMjQ3LDUyIEBAIHZvaWQgU2Nl
bmljV2luZG93OjpvblNjZW5pY0Vycm9yKHp4X3N0YXR1c190IHN0YXR1cykKICAgICBtTG9vcC0+
UXVpdCgpOwogfQogCit2b2lkIFNjZW5pY1dpbmRvdzo6b25WaWV3TWV0cmljcyhjb25zdCBmdWNo
c2lhOjp1aTo6Z2Z4OjpNZXRyaWNzICZtZXRyaWNzKQoreworICAgIG1EaXNwbGF5U2NhbGVYID0g
bWV0cmljcy5zY2FsZV94OworICAgIG1EaXNwbGF5U2NhbGVZID0gbWV0cmljcy5zY2FsZV95Owor
CisgICAgbUhhc1ZpZXdNZXRyaWNzID0gdHJ1ZTsKKyAgICBtVmlld1NpemVEaXJ0eSAgPSB0cnVl
OworfQorCit2b2lkIFNjZW5pY1dpbmRvdzo6b25WaWV3UHJvcGVydGllcyhjb25zdCBmdWNoc2lh
Ojp1aTo6Z2Z4OjpWaWV3UHJvcGVydGllcyAmcHJvcGVydGllcykKK3sKKyAgICBmbG9hdCB3aWR0
aCA9IHByb3BlcnRpZXMuYm91bmRpbmdfYm94Lm1heC54IC0gcHJvcGVydGllcy5ib3VuZGluZ19i
b3gubWluLnggLQorICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5pbnNldF9mcm9tX21pbi54
IC0gcHJvcGVydGllcy5pbnNldF9mcm9tX21heC54OworICAgIGZsb2F0IGhlaWdodCA9IHByb3Bl
cnRpZXMuYm91bmRpbmdfYm94Lm1heC55IC0gcHJvcGVydGllcy5ib3VuZGluZ19ib3gubWluLnkg
LQorICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuaW5zZXRfZnJvbV9taW4ueSAtIHByb3Bl
cnRpZXMuaW5zZXRfZnJvbV9tYXgueTsKKworICAgIG1EaXNwbGF5V2lkdGhEaXBzICA9IHdpZHRo
OworICAgIG1EaXNwbGF5SGVpZ2h0RGlwcyA9IGhlaWdodDsKKworICAgIG1IYXNWaWV3UHJvcGVy
dGllcyA9IHRydWU7CisgICAgbVZpZXdTaXplRGlydHkgICAgID0gdHJ1ZTsKK30KKwordm9pZCBT
Y2VuaWNXaW5kb3c6OnVwZGF0ZVZpZXdTaXplKCkKK3sKKyAgICBpZiAoIW1WaWV3U2l6ZURpcnR5
IHx8ICFtSGFzVmlld01ldHJpY3MgfHwgIW1IYXNWaWV3UHJvcGVydGllcykKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtVmlld1NpemVEaXJ0eSA9IGZhbHNlOworCisgICAg
Ly8gU3VyZmFjZSBzaXplIGluIHBpeGVscyBpcworICAgIC8vICAgKG1XaWR0aCwgbUhlaWdodCkK
KyAgICAvLworICAgIC8vIFZpZXcgc2l6ZSBpbiBwaXhlbHMgaXMKKyAgICAvLyAgIChtRGlzcGxh
eVdpZHRoRGlwcyAqIG1EaXNwbGF5U2NhbGVYKSB4IChtRGlzcGxheUhlaWdodERpcHMgKiBtRGlz
cGxheVNjYWxlWSkKKworICAgIGZsb2F0IHdpZHRoRGlwcyAgPSBtV2lkdGggLyBtRGlzcGxheVNj
YWxlWDsKKyAgICBmbG9hdCBoZWlnaHREaXBzID0gbUhlaWdodCAvIG1EaXNwbGF5U2NhbGVZOwor
CisgICAgbVNoYXBlLlNldFNoYXBlKHNjZW5pYzo6UmVjdGFuZ2xlKCZtU2NlbmljU2Vzc2lvbiwg
d2lkdGhEaXBzLCBoZWlnaHREaXBzKSk7CisgICAgbVNoYXBlLlNldFRyYW5zbGF0aW9uKDAuNWYg
KiB3aWR0aERpcHMsIDAuNWYgKiBoZWlnaHREaXBzLCAwLmYpOworICAgIHByZXNlbnQoKTsKK30K
KwogLy8gc3RhdGljCiBPU1dpbmRvdyAqT1NXaW5kb3c6Ok5ldygpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Z1Y2hzaWEvU2NlbmljV2luZG93LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Z1Y2hzaWEvU2NlbmljV2luZG93LmgKaW5kZXggOGQ3
NzRiMjM5MDE4MzMxMWE4Mjk2NzMyNDZhZjM2MDg0NjMwMGQ3MC4uNmFlNTQwYmEwYzRlMTdiNTQ5
MTMyMjVmODZlYjViYTA5MDczZTJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC9mdWNoc2lhL1NjZW5pY1dpbmRvdy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuaApAQCAtNjMsOCArNjMsMTIgQEAgY2xhc3Mg
QU5HTEVfVVRJTF9FWFBPUlQgU2NlbmljV2luZG93IDogcHVibGljIE9TV2luZG93CiAgICAgdm9p
ZCBvblNjZW5pY0V2ZW50cyhzdGQ6OnZlY3RvcjxmdWNoc2lhOjp1aTo6c2NlbmljOjpFdmVudD4g
ZXZlbnRzKTsKICAgICB2b2lkIG9uU2NlbmljRXJyb3Ioenhfc3RhdHVzX3Qgc3RhdHVzKTsKICAg
ICB2b2lkIG9uRnJhbWVQcmVzZW50ZWQoZnVjaHNpYTo6c2NlbmljOjpzY2hlZHVsaW5nOjpGcmFt
ZVByZXNlbnRlZEluZm8gaW5mbyk7CisgICAgdm9pZCBvblZpZXdNZXRyaWNzKGNvbnN0IGZ1Y2hz
aWE6OnVpOjpnZng6Ok1ldHJpY3MgJm1ldHJpY3MpOworICAgIHZvaWQgb25WaWV3UHJvcGVydGll
cyhjb25zdCBmdWNoc2lhOjp1aTo6Z2Z4OjpWaWV3UHJvcGVydGllcyAmcHJvcGVydGllcyk7CiAK
ICAgcHJpdmF0ZToKKyAgICB2b2lkIHVwZGF0ZVZpZXdTaXplKCk7CisKICAgICAvLyBTY2VuaWNX
aW5kb3cgYXN5bmMgbG9vcC4KICAgICBhc3luYzo6TG9vcCAqY29uc3QgbUxvb3A7CiAKQEAgLTg4
LDYgKzkyLDE1IEBAIGNsYXNzIEFOR0xFX1VUSUxfRVhQT1JUIFNjZW5pY1dpbmRvdyA6IHB1Ymxp
YyBPU1dpbmRvdwogICAgIC8vIFNjZW5pYyB2aWV3LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxzY2Vu
aWM6OlZpZXc+IG1WaWV3OwogCisgICAgLy8gVmlldyBnZW9tZXRyeS4KKyAgICBmbG9hdCBtRGlz
cGxheUhlaWdodERpcHMgPSAwLmY7CisgICAgZmxvYXQgbURpc3BsYXlXaWR0aERpcHMgID0gMC5m
OworICAgIGZsb2F0IG1EaXNwbGF5U2NhbGVYICAgICA9IDAuZjsKKyAgICBmbG9hdCBtRGlzcGxh
eVNjYWxlWSAgICAgPSAwLmY7CisgICAgYm9vbCBtSGFzVmlld1Byb3BlcnRpZXMgID0gZmFsc2U7
CisgICAgYm9vbCBtSGFzVmlld01ldHJpY3MgICAgID0gZmFsc2U7CisgICAgYm9vbCBtVmlld1Np
emVEaXJ0eSAgICAgID0gZmFsc2U7CisKICAgICAvLyBFR0wgbmF0aXZlIHdpbmRvdy4KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8ZnVjaHNpYV9lZ2xfd2luZG93LCBGdWNoc2lhRUdMV2luZG93RGVsZXRl
cj4gbUZ1Y2hzaWFFR0xXaW5kb3c7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9nbGVzX2xvYWRlcl9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvZ2xlc19sb2FkZXJfYXV0b2dlbi5jcHAKaW5kZXggMzgzNDg5ZDMxZTA3MGRkZmVl
YjhhNzZlM2IwOTdiYThmYmYzNWUwYy4uODgzNjgzNDBkYzU4ZDlkYzBmZDg1OTkwOTliNDAzODll
YjFlNWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nbGVzX2xv
YWRlcl9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2dsZXNf
bG9hZGVyX2F1dG9nZW4uY3BwCkBAIC00MjksNiArNDI5LDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xHRVRURVhJTUFHRUFOR0xFUFJPQyBnbEdldFRleEltYWdlQU5HTEU7CiBBTkdMRV9VVElM
X0VYUE9SVCBQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgZ2xEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNF
REFOR0xFUFJPQyBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFOwogQU5HTEVfVVRJTF9FWFBP
UlQgUEZOR0xWRVJURVhBVFRSSUJESVZJU09SQU5HTEVQUk9DIGdsVmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJTVBPUlRNRU1PUllaSVJDT05IQU5ETEVB
TkdMRVBST0MgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRTsKIEFOR0xFX1VUSUxfRVhQ
T1JUIFBGTkdMTVVMVElEUkFXQVJSQVlTQU5HTEVQUk9DIGdsTXVsdGlEcmF3QXJyYXlzQU5HTEU7
CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTE1VTFRJRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJP
QyBnbE11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xNVUxUSURSQVdFTEVNRU5UU0FOR0xFUFJPQyBnbE11bHRpRHJhd0VsZW1lbnRzQU5HTEU7CkBA
IC01MDMsNiArNTA0LDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xURVhQQVJBTUVURVJGVlJP
QlVTVEFOR0xFUFJPQyBnbFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUKIEFOR0xFX1VUSUxfRVhQ
T1JUIFBGTkdMVEVYUEFSQU1FVEVSSVZST0JVU1RBTkdMRVBST0MgZ2xUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xURVhTVUJJTUFHRTJEUk9CVVNUQU5H
TEVQUk9DIGdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xURVhTVUJJTUFHRTNEUk9CVVNUQU5HTEVQUk9DIGdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
OworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJTVBPUlRTRU1BUEhPUkVaSVJDT05IQU5ETEVBTkdM
RVBST0MgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRTsKIEFOR0xFX1VUSUxfRVhQ
T1JUIFBGTkdMSU5WQUxJREFURVRFWFRVUkVBTkdMRVBST0MgZ2xJbnZhbGlkYXRlVGV4dHVyZUFO
R0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xURVhJTUFHRTJERVhURVJOQUxBTkdMRVBST0Mg
Z2xUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VUTVVM
VElTQU1QTEVGVkFOR0xFUFJPQyBnbEdldE11bHRpc2FtcGxlZnZBTkdMRTsKQEAgLTUxNiwzNSAr
NTE4LDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xDT01QUkVTU0VEQ09QWVRFWFRVUkVDSFJP
TUlVTVBST0MgZ2xDb21wcmVzc2VkQ29weVRleHR1cmUKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
Q09QWVNVQlRFWFRVUkVDSFJPTUlVTVBST0MgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNOwogQU5H
TEVfVVRJTF9FWFBPUlQgUEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENvcHlUZXh0dXJl
Q0hST01JVU07CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSQUdFTU9EVUxBVElPTkNIUk9N
SVVNUFJPQyBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTVBST0MgZ2xNYXRyaXhMb2FkSWRlbnRpdHlD
SFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMTUFUUklYTE9BREZDSFJPTUlVTVBST0Mg
Z2xNYXRyaXhMb2FkZkNIUk9NSVVNOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xMT1NFQ09OVEVY
VENIUk9NSVVNUFJPQyBnbExvc2VDb250ZXh0Q0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTEJJTkRGUkFHTUVOVElOUFVUTE9DQVRJT05DSFJPTUlVTVBST0MgZ2xCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSRklMTFBB
VEhDSFJPTUlVTVBST0MgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9S
VCBQRk5HTENPVkVSRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MgZ2xDb3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSU1RST0tFUEFU
SENIUk9NSVVNUFJPQyBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBP
UlQgUEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MgZ2xDb3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMREVMRVRFUEFU
SFNDSFJPTUlVTVBST0MgZ2xEZWxldGVQYXRoc0NIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xHRU5QQVRIU0NIUk9NSVVNUFJPQyBnbEdlblBhdGhzQ0hST01JVU07Ci1BTkdMRV9VVElM
X0VYUE9SVCBQRk5HTEdFVFBBVEhQQVJBTUVURVJGVkNIUk9NSVVNUFJPQyBnbEdldFBhdGhQYXJh
bWV0ZXJmdkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRQQVRIUEFSQU1FVEVS
SVZDSFJPTUlVTVBST0MgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTTsKLUFOR0xFX1VUSUxf
RVhQT1JUIFBGTkdMSVNQQVRIQ0hST01JVU1QUk9DIGdsSXNQYXRoQ0hST01JVU07Ci1BTkdMRV9V
VElMX0VYUE9SVCBQRk5HTFBBVEhDT01NQU5EU0NIUk9NSVVNUFJPQyBnbFBhdGhDb21tYW5kc0NI
Uk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xQQVRIUEFSQU1FVEVSRkNIUk9NSVVNUFJP
QyBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFBBVEhQ
QVJBTUVURVJJQ0hST01JVU1QUk9DIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTTsKLUFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1QUk9DIGdsUGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJ
TlBVVEdFTkNIUk9NSVVNUFJPQwotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxGSUxMUEFUSENIUk9NSVVNUFJP
QyBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVO
Q0lMRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhDSFJP
TUlVTVBST0MgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xTVEVOQ0lMU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQyBnbFN0ZW5jaWxTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxU
SEVOQ09WRVJGSUxMUEFUSENIUk9NSVVNUFJPQyBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENI
Uk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhJ
TlNUQU5DRURDSFJPTUlVTVBST0MKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RS
T0tFUEFUSENIUk9NSVVNUFJPQyBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU07
Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRISU5TVEFO
Q0VEQ0hST01JVU1QUk9DCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTkVY
VFBST0MgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
QklOREZSQUdEQVRBTE9DQVRJT05JTkRFWEVERVhUUFJPQyBnbEJpbmRGcmFnRGF0YUxvY2F0aW9u
SW5kZXhlZEVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VURlJBR0RBVEFJTkRFWEVYVFBS
T0MgZ2xHZXRGcmFnRGF0YUluZGV4RVhUOwpAQCAtNTU3LDYgKzUzMSw3IEBAIEFOR0xFX1VUSUxf
RVhQT1JUIFBGTkdMQkVHSU5RVUVSWUVYVFBST0MgZ2xCZWdpblF1ZXJ5RVhUOwogQU5HTEVfVVRJ
TF9FWFBPUlQgUEZOR0xERUxFVEVRVUVSSUVTRVhUUFJPQyBnbERlbGV0ZVF1ZXJpZXNFWFQ7CiBB
TkdMRV9VVElMX0VYUE9SVCBQRk5HTEVORFFVRVJZRVhUUFJPQyBnbEVuZFF1ZXJ5RVhUOwogQU5H
TEVfVVRJTF9FWFBPUlQgUEZOR0xHRU5RVUVSSUVTRVhUUFJPQyBnbEdlblF1ZXJpZXNFWFQ7CitB
TkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVElOVEVHRVI2NFZFWFRQUk9DIGdsR2V0SW50ZWdlcjY0
dkVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRWRVhUUFJPQyBn
bEdldFF1ZXJ5T2JqZWN0aTY0dkVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VUUVVFUllP
QkpFQ1RJVkVYVFBST0MgZ2xHZXRRdWVyeU9iamVjdGl2RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xHRVRRVUVSWU9CSkVDVFVJNjRWRVhUUFJPQyBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQ7
CkBAIC01NjUsNiArNTQwLDE0IEBAIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VUUVVFUllJVkVY
VFBST0MgZ2xHZXRRdWVyeWl2RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJU1FVRVJZRVhU
UFJPQyBnbElzUXVlcnlFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFFVRVJZQ09VTlRFUkVY
VFBST0MgZ2xRdWVyeUNvdW50ZXJFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdCVUZG
RVJTRVhUUFJPQyBnbERyYXdCdWZmZXJzRVhUOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVO
REVRVUFUSU9OU0VQQVJBVEVJRVhUUFJPQyBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQ7CitB
TkdMRV9VVElMX0VYUE9SVCBQRk5HTEJMRU5ERVFVQVRJT05JRVhUUFJPQyBnbEJsZW5kRXF1YXRp
b25pRVhUOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVOREZVTkNTRVBBUkFURUlFWFRQUk9D
IGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVOREZV
TkNJRVhUUFJPQyBnbEJsZW5kRnVuY2lFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPTE9S
TUFTS0lFWFRQUk9DIGdsQ29sb3JNYXNraUVYVDsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRElT
QUJMRUlFWFRQUk9DIGdsRGlzYWJsZWlFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEVOQUJM
RUlFWFRQUk9DIGdsRW5hYmxlaUVYVDsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMSVNFTkFCTEVE
SUVYVFBST0MgZ2xJc0VuYWJsZWRpRVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xEUkFXRUxF
TUVOVFNCQVNFVkVSVEVYRVhUUFJPQyBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQ7CiBBTkdM
RV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREJBU0VWRVJURVhFWFRQUk9D
IGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVDsKIEFOR0xFX1VUSUxfRVhQT1JU
IFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNCQVNFVkVSVEVYRVhUUFJPQyBnbERyYXdSYW5nZUVsZW1l
bnRzQmFzZVZlcnRleEVYVDsKQEAgLTYyNyw2ICs2MTAsMTQgQEAgQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xURVNURkVOQ0VOVlBST0MgZ2xUZXN0RmVuY2VOVjsKIEFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMRUdMSU1BR0VUQVJHRVRSRU5ERVJCVUZGRVJTVE9SQUdFT0VTUFJPQwogICAgIGdsRUdMSW1h
Z2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xF
R0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
UzsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQkxFTkRFUVVBVElPTlNFUEFSQVRFSU9FU1BST0Mg
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVO
REVRVUFUSU9OSU9FU1BST0MgZ2xCbGVuZEVxdWF0aW9uaU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JU
IFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTUFJPQyBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUzsK
K0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQkxFTkRGVU5DSU9FU1BST0MgZ2xCbGVuZEZ1bmNpT0VT
OworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xDT0xPUk1BU0tJT0VTUFJPQyBnbENvbG9yTWFza2lP
RVM7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERJU0FCTEVJT0VTUFJPQyBnbERpc2FibGVpT0VT
OworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xFTkFCTEVJT0VTUFJPQyBnbEVuYWJsZWlPRVM7CitB
TkdMRV9VVElMX0VYUE9SVCBQRk5HTElTRU5BQkxFRElPRVNQUk9DIGdsSXNFbmFibGVkaU9FUzsK
IEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0VMRU1FTlRTQkFTRVZFUlRFWE9FU1BST0MgZ2xE
cmF3RWxlbWVudHNCYXNlVmVydGV4T0VTOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xEUkFXRUxF
TUVOVFNJTlNUQU5DRURCQVNFVkVSVEVYT0VTUFJPQyBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXhPRVM7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdSQU5HRUVMRU1FTlRTQkFT
RVZFUlRFWE9FU1BST0MgZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVM7CkBAIC0xMTUw
LDYgKzExNDEsOCBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNF
REFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEVD
b250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JB
TkdMRUNPTlRFWFRBTkdMRVBST0MKICAgICBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRUNvbnRl
eHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMSU1QT1JUTUVNT1JZWklSQ09OSEFORExF
QU5HTEVDT05URVhUQU5HTEVQUk9DCisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdM
RUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMTVVMVElEUkFXQVJSQVlTQU5H
TEVDT05URVhUQU5HTEVQUk9DIGdsTXVsdGlEcmF3QXJyYXlzQU5HTEVDb250ZXh0QU5HTEU7CiBB
TkdMRV9VVElMX0VYUE9SVCBQRk5HTE1VTFRJRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFQ09OVEVY
VEFOR0xFUFJPQwogICAgIGdsTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEVDb250ZXh0QU5H
TEU7CkBAIC0xMjc4LDYgKzEyNzEsOCBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFRFWFNVQklN
QUdFMkRST0JVU1RBTkdMRUNPTlRFWFRBTkdMRVBST0MKICAgICBnbFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMVEVYU1VCSU1BR0Uz
RFJPQlVTVEFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJTVBPUlRTRU1BUEhPUkVa
SVJDT05IQU5ETEVBTkdMRUNPTlRFWFRBTkdMRVBST0MKKyAgICBnbEltcG9ydFNlbWFwaG9yZVpp
cmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJTlZB
TElEQVRFVEVYVFVSRUFOR0xFQ09OVEVYVEFOR0xFUFJPQyBnbEludmFsaWRhdGVUZXh0dXJlQU5H
TEVDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFRFWElNQUdFMkRFWFRFUk5B
TEFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsVGV4SW1hZ2UyREV4dGVybmFsQU5HTEVDb250
ZXh0QU5HTEU7CkBAIC0xMjk5LDQ5ICsxMjk0LDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xD
T1BZU1VCVEVYVFVSRUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyBnbENvcHlTdWJUZXh0dXJlQ0gK
IEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQ09QWVRFWFRVUkVDSFJPTUlVTUNPTlRFWFRBTkdMRVBS
T0MgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xDT1ZFUkFHRU1PRFVMQVRJT05DSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKICAgICBnbENv
dmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbE1h
dHJpeExvYWRJZGVudGl0eUNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xNQVRSSVhMT0FERkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyBnbE1hdHJpeExvYWRmQ0hS
T01JVU1Db250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTExPU0VDT05URVhUQ0hS
T01JVU1DT05URVhUQU5HTEVQUk9DIGdsTG9zZUNvbnRleHRDSFJPTUlVTUNvbnRleHRBTkdMRTsK
LUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQklOREZSQUdNRU5USU5QVVRMT0NBVElPTkNIUk9NSVVN
Q09OVEVYVEFOR0xFUFJPQwotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVN
Q29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xDT1ZFUkZJTExQQVRIQ0hST01J
VU1DT05URVhUQU5HTEVQUk9DIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwot
QU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xDT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05U
RVhUQU5HTEVQUk9DCi0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0
QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSU1RST0tFUEFUSENIUk9NSVVNQ09O
VEVYVEFOR0xFUFJPQwotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEU7
Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVN
Q09OVEVYVEFOR0xFUFJPQwotICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1D
b250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTERFTEVURVBBVEhTQ0hST01JVU1D
T05URVhUQU5HTEVQUk9DIGdsRGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xF
X1VUSUxfRVhQT1JUIFBGTkdMR0VOUEFUSFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xHZW5Q
YXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRQQVRI
UEFSQU1FVEVSRlZDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbEdldFBhdGhQYXJhbWV0
ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRQQVRI
UEFSQU1FVEVSSVZDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbEdldFBhdGhQYXJhbWV0
ZXJpdkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJU1BBVEhD
SFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFO
R0xFX1VUSUxfRVhQT1JUIFBGTkdMUEFUSENPTU1BTkRTQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
IGdsUGF0aENvbW1hbmRzQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTFBBVEhQQVJBTUVURVJGQ0hST01JVU1DT05URVhUQU5HTEVQUk9DIGdsUGF0aFBhcmFtZXRl
cmZDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMUEFUSFBBUkFN
RVRFUklDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29u
dGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xQQVRIU1RFTkNJTEZVTkNDSFJPTUlV
TUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4dEFO
R0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xQUk9HUkFNUEFUSEZSQUdNRU5USU5QVVRHRU5D
SFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVOQ0lMRklM
TFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVOQ0lMRklMTFBBVEhJ
TlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aElu
c3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVO
Q0lMU1RST0tFUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbFN0cm9r
ZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMU1RFTkNJ
TFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VY
UE9SVCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJP
QwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1B
TkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5D
SUxUSEVOQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9F
WFBPUlQgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNQ09O
VEVYVEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQklOREZSQUdEQVRB
TE9DQVRJT05FWFRDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVY
VENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQklOREZSQUdEQVRBTE9DQVRJ
T05JTkRFWEVERVhUQ09OVEVYVEFOR0xFUFJPQwpAQCAtMTM1Nyw2ICsxMzEwLDcgQEAgQU5HTEVf
VVRJTF9FWFBPUlQgUEZOR0xCRUdJTlFVRVJZRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEJlZ2luUXVl
cnlFWFRDb250ZXh0QU5HTEUKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMREVMRVRFUVVFUklFU0VY
VENPTlRFWFRBTkdMRVBST0MgZ2xEZWxldGVRdWVyaWVzRVhUQ29udGV4dEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgUEZOR0xFTkRRVUVSWUVYVENPTlRFWFRBTkdMRVBST0MgZ2xFbmRRdWVyeUVY
VENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VOUVVFUklFU0VYVENPTlRF
WFRBTkdMRVBST0MgZ2xHZW5RdWVyaWVzRVhUQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBP
UlQgUEZOR0xHRVRJTlRFR0VSNjRWRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEdldEludGVnZXI2NHZF
WFRDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVFFVRVJZT0JKRUNUSTY0
VkVYVENPTlRFWFRBTkdMRVBST0MgZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFRDb250ZXh0QU5HTEU7
CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVFFVRVJZT0JKRUNUSVZFWFRDT05URVhUQU5HTEVQ
Uk9DIGdsR2V0UXVlcnlPYmplY3RpdkVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JU
IFBGTkdMR0VUUVVFUllPQkpFQ1RVSTY0VkVYVENPTlRFWFRBTkdMRVBST0MgZ2xHZXRRdWVyeU9i
amVjdHVpNjR2RVhUQ29udGV4dEFOR0xFOwpAQCAtMTM2NSw2ICsxMzE5LDE1IEBAIEFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMR0VUUVVFUllJVkVYVENPTlRFWFRBTkdMRVBST0MgZ2xHZXRRdWVyeWl2
RVhUQ29udGV4dEFOR0xFCiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTElTUVVFUllFWFRDT05URVhU
QU5HTEVQUk9DIGdsSXNRdWVyeUVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMUVVFUllDT1VOVEVSRVhUQ09OVEVYVEFOR0xFUFJPQyBnbFF1ZXJ5Q291bnRlckVYVENvbnRl
eHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0JVRkZFUlNFWFRDT05URVhUQU5H
TEVQUk9DIGdsRHJhd0J1ZmZlcnNFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlFWFRDT05URVhUQU5HTEVQUk9DCisgICAgZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xCTEVOREVRVUFUSU9OSUVYVENPTlRFWFRBTkdMRVBST0MgZ2xCbGVuZEVxdWF0aW9uaUVYVENv
bnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJRVhU
Q09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRleHRBTkdMRTsKK0FO
R0xFX1VUSUxfRVhQT1JUIFBGTkdMQkxFTkRGVU5DSUVYVENPTlRFWFRBTkdMRVBST0MgZ2xCbGVu
ZEZ1bmNpRVhUQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xDT0xPUk1BU0tJ
RVhUQ09OVEVYVEFOR0xFUFJPQyBnbENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9V
VElMX0VYUE9SVCBQRk5HTERJU0FCTEVJRVhUQ09OVEVYVEFOR0xFUFJPQyBnbERpc2FibGVpRVhU
Q29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xFTkFCTEVJRVhUQ09OVEVYVEFO
R0xFUFJPQyBnbEVuYWJsZWlFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5H
TElTRU5BQkxFRElFWFRDT05URVhUQU5HTEVQUk9DIGdsSXNFbmFibGVkaUVYVENvbnRleHRBTkdM
RTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0VMRU1FTlRTQkFTRVZFUlRFWEVYVENPTlRF
WFRBTkdMRVBST0MKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEU7
CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREJBU0VWRVJURVhF
WFRDT05URVhUQU5HTEVQUk9DCkBAIC0xNDQ1LDYgKzE0MDgsMTUgQEAgQU5HTEVfVVRJTF9FWFBP
UlQgUEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNDT05URVhUQU5HTEVQ
Uk9DCiAgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVNDb250ZXh0QU5H
TEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTQ09O
VEVYVEFOR0xFUFJPQwogICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVNDb250ZXh0QU5H
TEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlPRVNDT05U
RVhUQU5HTEVQUk9DCisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xF
OworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVOREVRVUFUSU9OSU9FU0NPTlRFWFRBTkdMRVBS
T0MgZ2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRnVuY1NlcGFy
YXRlaU9FU0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQkxFTkRGVU5DSU9F
U0NPTlRFWFRBTkdMRVBST0MgZ2xCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFOworQU5HTEVfVVRJ
TF9FWFBPUlQgUEZOR0xDT0xPUk1BU0tJT0VTQ09OVEVYVEFOR0xFUFJPQyBnbENvbG9yTWFza2lP
RVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERJU0FCTEVJT0VTQ09OVEVY
VEFOR0xFUFJPQyBnbERpc2FibGVpT0VTQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xFTkFCTEVJT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEVuYWJsZWlPRVNDb250ZXh0QU5HTEU7
CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTElTRU5BQkxFRElPRVNDT05URVhUQU5HTEVQUk9DIGds
SXNFbmFibGVkaU9FU0NvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0VM
RU1FTlRTQkFTRVZFUlRFWE9FU0NPTlRFWFRBTkdMRVBST0MKICAgICBnbERyYXdFbGVtZW50c0Jh
c2VWZXJ0ZXhPRVNDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVN
RU5UU0lOU1RBTkNFREJBU0VWRVJURVhPRVNDT05URVhUQU5HTEVQUk9DCkBAIC0yMTMwLDYgKzIx
MDIsOCBAQCB2b2lkIExvYWRHTEVTKExvYWRQcm9jIGxvYWRQcm9jKQogICAgICAgICBsb2FkUHJv
YygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICBnbFZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRSA9CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xWRVJURVhBVFRSSUJE
SVZJU09SQU5HTEVQUk9DPihsb2FkUHJvYygiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiKSk7
CisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xJTVBPUlRNRU1PUllaSVJDT05IQU5ETEVBTkdMRVBST0M+KAorICAgICAgICBsb2FkUHJv
YygiZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSIpKTsKICAgICBnbE11bHRpRHJhd0Fy
cmF5c0FOR0xFID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTE1VTFRJRFJBV0FSUkFZ
U0FOR0xFUFJPQz4obG9hZFByb2MoImdsTXVsdGlEcmF3QXJyYXlzQU5HTEUiKSk7CiAgICAgZ2xN
dWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xNVUxU
SURSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0M+KApAQCAtMjI4OCw2ICsyMjYyLDkgQEAgdm9p
ZCBMb2FkR0xFUyhMb2FkUHJvYyBsb2FkUHJvYykKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdMRVBST0M+KGxvYWRQcm9jKCJnbFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRSIpKTsKICAgICBnbFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSA9CiAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhTVUJJTUFHRTNEUk9CVVNUQU5HTEVQUk9DPihs
b2FkUHJvYygiZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUiKSk7CisgICAgZ2xJbXBvcnRTZW1h
cGhvcmVaaXJjb25IYW5kbGVBTkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xJ
TVBPUlRTRU1BUEhPUkVaSVJDT05IQU5ETEVBTkdMRVBST0M+KAorICAgICAgICAgICAgbG9hZFBy
b2MoImdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUiKSk7CiAgICAgZ2xJbnZhbGlk
YXRlVGV4dHVyZUFOR0xFID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTElOVkFMSURB
VEVURVhUVVJFQU5HTEVQUk9DPihsb2FkUHJvYygiZ2xJbnZhbGlkYXRlVGV4dHVyZUFOR0xFIikp
OwogICAgIGdsVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUgPQpAQCAtMjMxNCw2NiArMjI5MSw4IEBA
IHZvaWQgTG9hZEdMRVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQz4obG9hZFByb2MoImdsQ29weVRleHR1cmVD
SFJPTUlVTSIpKTsKICAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTENPVkVSQUdFTU9EVUxBVElPTkNIUk9NSVVNUFJPQz4oCiAgICAgICAgIGxv
YWRQcm9jKCJnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNIikpOwotICAgIGdsTWF0cml4TG9h
ZElkZW50aXR5Q0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMTUFUUklYTE9BRElERU5U
SVRZQ0hST01JVU1QUk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsTWF0cml4TG9hZElkZW50aXR5
Q0hST01JVU0iKSk7Ci0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNID0KLSAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxQRk5HTE1BVFJJWExPQURGQ0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xNYXRy
aXhMb2FkZkNIUk9NSVVNIikpOwogICAgIGdsTG9zZUNvbnRleHRDSFJPTUlVTSA9CiAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xMT1NFQ09OVEVYVENIUk9NSVVNUFJPQz4obG9hZFByb2Mo
ImdsTG9zZUNvbnRleHRDSFJPTUlVTSIpKTsKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRp
b25DSFJPTUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5ERlJBR01FTlRJ
TlBVVExPQ0FUSU9OQ0hST01JVU1QUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbEJpbmRG
cmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTSIpKTsKLSAgICBnbENvdmVyRmlsbFBhdGhDSFJP
TUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1ZFUkZJTExQQVRIQ0hST01J
VU1QUk9DPihsb2FkUHJvYygiZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0iKSk7Ci0gICAgZ2xDb3Zl
ckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMQ09WRVJG
SUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQz4oCi0gICAgICAgIGxvYWRQcm9jKCJnbENvdmVy
RmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIpKTsKLSAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTENPVkVSU1RST0tFUEFUSENIUk9N
SVVNUFJPQz4obG9hZFByb2MoImdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0iKSk7Ci0gICAgZ2xD
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0M+KAotICAgICAgICAg
ICAgbG9hZFByb2MoImdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0iKSk7Ci0gICAg
Z2xEZWxldGVQYXRoc0NIUk9NSVVNID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTERF
TEVURVBBVEhTQ0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xEZWxldGVQYXRoc0NIUk9NSVVNIikp
OwotICAgIGdsR2VuUGF0aHNDSFJPTUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xHRU5QQVRIU0NIUk9NSVVNUFJPQz4obG9hZFByb2MoImdsR2VuUGF0aHNDSFJPTUlVTSIpKTsK
LSAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVFBBVEhQQVJBTUVURVJGVkNIUk9NSVVNUFJPQz4oCi0gICAgICAgIGxvYWRQcm9jKCJnbEdl
dFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNIikpOwotICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hS
T01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUEFUSFBBUkFNRVRFUklWQ0hST01JVU1Q
Uk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0iKSk7
Ci0gICAgZ2xJc1BhdGhDSFJPTUlVTSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xJU1BBVEhDSFJP
TUlVTVBST0M+KGxvYWRQcm9jKCJnbElzUGF0aENIUk9NSVVNIikpOwotICAgIGdsUGF0aENvbW1h
bmRzQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMUEFUSENPTU1BTkRT
Q0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTSIpKTsKLSAgICBn
bFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdM
UEFUSFBBUkFNRVRFUkZDSFJPTUlVTVBST0M+KGxvYWRQcm9jKCJnbFBhdGhQYXJhbWV0ZXJmQ0hS
T01JVU0iKSk7Ci0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNID0KLSAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxQRk5HTFBBVEhQQVJBTUVURVJJQ0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xQ
YXRoUGFyYW1ldGVyaUNIUk9NSVVNIikpOwotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0g
PQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1Q
Uk9DPihsb2FkUHJvYygiZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTSIpKTsKLSAgICBnbFByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTkNIUk9NSVVNUFJPQz4oCi0gICAgICAg
ICAgICBsb2FkUHJvYygiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSIpKTsK
LSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTFNURU5DSUxGSUxMUEFUSENIUk9NSVVNUFJPQz4obG9hZFByb2MoImdsU3RlbmNpbEZp
bGxQYXRoQ0hST01JVU0iKSk7Ci0gICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5D
RURDSFJPTUlVTVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsU3RlbmNpbEZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0iKSk7Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNID0g
cmVpbnRlcnByZXRfY2FzdDxQRk5HTFNURU5DSUxTVFJPS0VQQVRIQ0hST01JVU1QUk9DPigKLSAg
ICAgICAgbG9hZFByb2MoImdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTSIpKTsKLSAgICBnbFN0
ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9j
YXN0PFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0M+KAotICAgICAg
ICAgICAgbG9hZFByb2MoImdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIpKTsK
LSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNID0KLSAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSENIUk9NSVVNUFJPQz4oCi0g
ICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSIp
KTsKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNID0KLSAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RB
TkNFRENIUk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIpKTsKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJ
TFRIRU5DT1ZFUlNUUk9LRVBBVEhDSFJPTUlVTVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2Mo
ImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSIpKTsKLSAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJl
dF9jYXN0PFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBS
T0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSIpKTsKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUID0KICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJJTkRGUkFHREFUQUxPQ0FUSU9ORVhUUFJPQz4o
bG9hZFByb2MoImdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFQiKSk7CiAgICAgZ2xCaW5kRnJhZ0Rh
dGFMb2NhdGlvbkluZGV4ZWRFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMQklOREZSQUdEQVRB
TE9DQVRJT05JTkRFWEVERVhUUFJPQz4oCkBAIC0yMzk2LDYgKzIzMTUsOCBAQCB2b2lkIExvYWRH
TEVTKExvYWRQcm9jIGxvYWRQcm9jKQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMREVM
RVRFUVVFUklFU0VYVFBST0M+KGxvYWRQcm9jKCJnbERlbGV0ZVF1ZXJpZXNFWFQiKSk7CiAgICAg
Z2xFbmRRdWVyeUVYVCAgID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVORFFVRVJZRVhUUFJPQz4o
bG9hZFByb2MoImdsRW5kUXVlcnlFWFQiKSk7CiAgICAgZ2xHZW5RdWVyaWVzRVhUID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTEdFTlFVRVJJRVNFWFRQUk9DPihsb2FkUHJvYygiZ2xHZW5RdWVyaWVz
RVhUIikpOworICAgIGdsR2V0SW50ZWdlcjY0dkVYVCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xHRVRJTlRFR0VSNjRWRVhUUFJPQz4obG9hZFByb2MoImdsR2V0SW50ZWdlcjY0dkVY
VCIpKTsKICAgICBnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCA9CiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZFWFRQUk9DPihsb2FkUHJvYygiZ2xHZXRRdWVy
eU9iamVjdGk2NHZFWFQiKSk7CiAgICAgZ2xHZXRRdWVyeU9iamVjdGl2RVhUID0KQEAgLTI0MDgs
NiArMjMyOSwxNyBAQCB2b2lkIExvYWRHTEVTKExvYWRQcm9jIGxvYWRQcm9jKQogICAgIGdsSXNR
dWVyeUVYVCAgICAgID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTElTUVVFUllFWFRQUk9DPihsb2Fk
UHJvYygiZ2xJc1F1ZXJ5RVhUIikpOwogICAgIGdsUXVlcnlDb3VudGVyRVhUID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTFFVRVJZQ09VTlRFUkVYVFBST0M+KGxvYWRQcm9jKCJnbFF1ZXJ5Q291bnRl
ckVYVCIpKTsKICAgICBnbERyYXdCdWZmZXJzRVhUICA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xE
UkFXQlVGRkVSU0VYVFBST0M+KGxvYWRQcm9jKCJnbERyYXdCdWZmZXJzRVhUIikpOworICAgIGds
QmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREVR
VUFUSU9OU0VQQVJBVEVJRVhUUFJPQz4oCisgICAgICAgIGxvYWRQcm9jKCJnbEJsZW5kRXF1YXRp
b25TZXBhcmF0ZWlFWFQiKSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uaUVYVCA9CisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREVRVUFUSU9OSUVYVFBST0M+KGxvYWRQcm9jKCJnbEJs
ZW5kRXF1YXRpb25pRVhUIikpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUID0KKyAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJMRU5ERlVOQ1NFUEFSQVRFSUVYVFBST0M+KGxvYWRQ
cm9jKCJnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVCIpKTsKKyAgICBnbEJsZW5kRnVuY2lFWFQgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRGVU5DSUVYVFBST0M+KGxvYWRQcm9jKCJnbEJsZW5k
RnVuY2lFWFQiKSk7CisgICAgZ2xDb2xvck1hc2tpRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TENPTE9STUFTS0lFWFRQUk9DPihsb2FkUHJvYygiZ2xDb2xvck1hc2tpRVhUIikpOworICAgIGds
RGlzYWJsZWlFWFQgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xESVNBQkxFSUVYVFBST0M+KGxv
YWRQcm9jKCJnbERpc2FibGVpRVhUIikpOworICAgIGdsRW5hYmxlaUVYVCAgICA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xFTkFCTEVJRVhUUFJPQz4obG9hZFByb2MoImdsRW5hYmxlaUVYVCIpKTsK
KyAgICBnbElzRW5hYmxlZGlFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMSVNFTkFCTEVESUVY
VFBST0M+KGxvYWRQcm9jKCJnbElzRW5hYmxlZGlFWFQiKSk7CiAgICAgZ2xEcmF3RWxlbWVudHNC
YXNlVmVydGV4RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdFTEVNRU5UU0JBU0VWRVJU
RVhFWFRQUk9DPigKICAgICAgICAgbG9hZFByb2MoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVY
VCIpKTsKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQgPQpAQCAtMjUy
MCw2ICsyNDUyLDE3IEBAIHZvaWQgTG9hZEdMRVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAgICAg
ICAgICBsb2FkUHJvYygiZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMiKSk7
CiAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KAogICAgICAgICBsb2FkUHJvYygiZ2xF
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZWlPRVMgPSByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRFUVVBVElPTlNFUEFSQVRFSU9FU1BS
T0M+KAorICAgICAgICBsb2FkUHJvYygiZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTIikpOwor
ICAgIGdsQmxlbmRFcXVhdGlvbmlPRVMgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdM
QkxFTkRFUVVBVElPTklPRVNQUk9DPihsb2FkUHJvYygiZ2xCbGVuZEVxdWF0aW9uaU9FUyIpKTsK
KyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUyA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xCTEVOREZVTkNTRVBBUkFURUlPRVNQUk9DPihsb2FkUHJvYygiZ2xCbGVuZEZ1bmNTZXBh
cmF0ZWlPRVMiKSk7CisgICAgZ2xCbGVuZEZ1bmNpT0VTID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEJMRU5ERlVOQ0lPRVNQUk9DPihsb2FkUHJvYygiZ2xCbGVuZEZ1bmNpT0VTIikpOworICAgIGds
Q29sb3JNYXNraU9FUyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT0xPUk1BU0tJT0VTUFJPQz4o
bG9hZFByb2MoImdsQ29sb3JNYXNraU9FUyIpKTsKKyAgICBnbERpc2FibGVpT0VTICAgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMRElTQUJMRUlPRVNQUk9DPihsb2FkUHJvYygiZ2xEaXNhYmxlaU9F
UyIpKTsKKyAgICBnbEVuYWJsZWlPRVMgICAgPSByZWludGVycHJldF9jYXN0PFBGTkdMRU5BQkxF
SU9FU1BST0M+KGxvYWRQcm9jKCJnbEVuYWJsZWlPRVMiKSk7CisgICAgZ2xJc0VuYWJsZWRpT0VT
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTElTRU5BQkxFRElPRVNQUk9DPihsb2FkUHJvYygiZ2xJ
c0VuYWJsZWRpT0VTIikpOwogICAgIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYT0VTUFJPQz4oCiAgICAgICAg
IGxvYWRQcm9jKCJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMiKSk7CiAgICAgZ2xEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTID0KQEAgLTM1MzcsNiArMzQ4MCw5IEBAIHZvaWQg
TG9hZEdMRVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEVDb250ZXh0QU5HTEUgPQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMVkVSVEVYQVRU
UklCRElWSVNPUkFOR0xFQ09OVEVYVEFOR0xFUFJPQz4oCiAgICAgICAgICAgICBsb2FkUHJvYygi
Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEVDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xJbXBvcnRN
ZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xJTVBPUlRNRU1PUllaSVJDT05IQU5ETEVBTkdMRUNPTlRFWFRBTkdMRVBST0M+
KAorICAgICAgICAgICAgbG9hZFByb2MoImdsSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEVD
b250ZXh0QU5HTEUiKSk7CiAgICAgZ2xNdWx0aURyYXdBcnJheXNBTkdMRUNvbnRleHRBTkdMRSA9
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xNVUxUSURSQVdBUlJBWVNBTkdMRUNPTlRF
WFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFByb2MoImdsTXVsdGlEcmF3QXJyYXlzQU5H
TEVDb250ZXh0QU5HTEUiKSk7CkBAIC0zNzUwLDYgKzM2OTYsOSBAQCB2b2lkIExvYWRHTEVTKExv
YWRQcm9jIGxvYWRQcm9jKQogICAgIGdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFO
R0xFID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTFRFWFNVQklNQUdFM0RST0JVU1RB
TkdMRUNPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFByb2MoImdsVGV4U3ViSW1h
Z2UzRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFIikpOworICAgIGdsSW1wb3J0U2VtYXBob3JlWmly
Y29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBG
TkdMSU1QT1JUU0VNQVBIT1JFWklSQ09OSEFORExFQU5HTEVDT05URVhUQU5HTEVQUk9DPigKKyAg
ICAgICAgICAgIGxvYWRQcm9jKCJnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFQ29u
dGV4dEFOR0xFIikpOwogICAgIGdsSW52YWxpZGF0ZVRleHR1cmVBTkdMRUNvbnRleHRBTkdMRSA9
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xJTlZBTElEQVRFVEVYVFVSRUFOR0xFQ09O
VEVYVEFOR0xFUFJPQz4oCiAgICAgICAgICAgICBsb2FkUHJvYygiZ2xJbnZhbGlkYXRlVGV4dHVy
ZUFOR0xFQ29udGV4dEFOR0xFIikpOwpAQCAtMzc4Nyw3OSArMzczNiw4IEBAIHZvaWQgTG9hZEdM
RVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTUNv
bnRleHRBTkdMRSA9CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1ZFUkFHRU1PRFVM
QVRJT05DSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFByb2MoImds
Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xNYXRyaXhM
b2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAg
ICAgICAgICAgbG9hZFByb2MoImdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU1Db250ZXh0QU5H
TEUiKSk7Ci0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTE1BVFJJWExPQURGQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAg
ICAgbG9hZFByb2MoImdsTWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRSIpKTsKICAgICBn
bExvc2VDb250ZXh0Q0hST01JVU1Db250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdM
TE9TRUNPTlRFWFRDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICBsb2FkUHJvYygi
Z2xMb3NlQ29udGV4dENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsQmluZEZyYWdtZW50
SW5wdXRMb2NhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEJJTkRGUkFHTUVOVElOUFVUTE9DQVRJT05DSFJPTUlVTUNPTlRFWFRBTkdMRVBS
T0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNI
Uk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTENPVkVSRklMTFBBVEhDSFJP
TUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsQ292ZXJGaWxs
UGF0aENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTENP
VkVSRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAgICAgICAg
ICAgbG9hZFByb2MoImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xF
IikpOwotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUgPQotICAgICAg
ICByZWludGVycHJldF9jYXN0PFBGTkdMQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVN
Q29udGV4dEFOR0xFIikpOwotICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1D
b250ZXh0QU5HTEUgPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMQ09WRVJTVFJPS0VQ
QVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQ
cm9jKCJnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwot
ICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xERUxFVEVQQVRIU0NIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgIGxvYWRQ
cm9jKCJnbERlbGV0ZVBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xHZW5QYXRo
c0NIUk9NSVVNQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTlBBVEhTQ0hS
T01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsR2VuUGF0aHNDSFJP
TUlVTUNvbnRleHRBTkdMRSIpKTsKLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNQ29u
dGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFBBVEhQQVJBTUVU
RVJGVkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xH
ZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRSIpKTsKLSAgICBnbEdldFBhdGhQ
YXJhbWV0ZXJpdkNIUk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTEdFVFBBVEhQQVJBTUVURVJJVkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAg
ICAgICAgICBsb2FkUHJvYygiZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTUNvbnRleHRBTkdM
RSIpKTsKLSAgICBnbElzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTElTUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgIGxvYWRQcm9j
KCJnbElzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsUGF0aENvbW1hbmRzQ0hS
T01JVU1Db250ZXh0QU5HTEUgPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMUEFUSENP
TU1BTkRTQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJn
bFBhdGhDb21tYW5kc0NIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsUGF0aFBhcmFtZXRl
cmZDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xQ
QVRIUEFSQU1FVEVSRkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2Fk
UHJvYygiZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsUGF0
aFBhcmFtZXRlcmlDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xQQVRIUEFSQU1FVEVSSUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAg
ICAgICBsb2FkUHJvYygiZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29udGV4dEFOR0xFIikpOwot
ICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUgPQotICAgICAgICByZWlu
dGVycHJldF9jYXN0PFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
PigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4
dEFOR0xFIikpOwotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1Db250
ZXh0QU5HTEUgPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMUFJPR1JBTVBBVEhGUkFH
TUVOVElOUFVUR0VOQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQ
cm9jKCJnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNQ29udGV4dEFOR0xFIikp
OwotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUgPQotICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJTEZJTExQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQ
Uk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNQ29u
dGV4dEFOR0xFIikpOwotICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250
ZXh0QU5HTEUgPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJTEZJTExQQVRI
SU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9j
KCJnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAg
IGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMU1RST0tFUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJP
Qz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29u
dGV4dEFOR0xFIikpOwotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNv
bnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMU1RST0tF
UEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2Fk
UHJvYygiZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIikp
OwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUgPQot
ICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRIQ0hS
T01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUgPQotICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hS
T01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGds
U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSENIUk9NSVVN
Q09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsU3RlbmNpbFRoZW5D
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSElOU1RBTkNFRENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIikpOwogICAg
IGdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFRDb250ZXh0QU5HTEUgPQogICAgICAgICByZWludGVy
cHJldF9jYXN0PFBGTkdMQklOREZSQUdEQVRBTE9DQVRJT05FWFRDT05URVhUQU5HTEVQUk9DPigK
ICAgICAgICAgICAgIGxvYWRQcm9jKCJnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUQ29udGV4dEFO
R0xFIikpOwpAQCAtMzg4OSw2ICszNzY3LDggQEAgdm9pZCBMb2FkR0xFUyhMb2FkUHJvYyBsb2Fk
UHJvYykKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVORFFVRVJZRVhUQ09OVEVYVEFO
R0xFUFJPQz4obG9hZFByb2MoImdsRW5kUXVlcnlFWFRDb250ZXh0QU5HTEUiKSk7CiAgICAgZ2xH
ZW5RdWVyaWVzRVhUQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTlFVRVJJ
RVNFWFRDT05URVhUQU5HTEVQUk9DPigKICAgICAgICAgbG9hZFByb2MoImdsR2VuUXVlcmllc0VY
VENvbnRleHRBTkdMRSIpKTsKKyAgICBnbEdldEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMR0VUSU5URUdFUjY0VkVYVENPTlRFWFRBTkdMRVBST0M+KAor
ICAgICAgICBsb2FkUHJvYygiZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xFIikpOwogICAg
IGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUQ29udGV4dEFOR0xFID0KICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTEdFVFFVRVJZT0JKRUNUSTY0VkVYVENPTlRFWFRBTkdMRVBST0M+KAogICAg
ICAgICAgICAgbG9hZFByb2MoImdsR2V0UXVlcnlPYmplY3RpNjR2RVhUQ29udGV4dEFOR0xFIikp
OwpAQCAtMzkwOCw2ICszNzg4LDI0IEBAIHZvaWQgTG9hZEdMRVMoTG9hZFByb2MgbG9hZFByb2Mp
CiAgICAgICAgIGxvYWRQcm9jKCJnbFF1ZXJ5Q291bnRlckVYVENvbnRleHRBTkdMRSIpKTsKICAg
ICBnbERyYXdCdWZmZXJzRVhUQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERS
QVdCVUZGRVJTRVhUQ09OVEVYVEFOR0xFUFJPQz4oCiAgICAgICAgIGxvYWRQcm9jKCJnbERyYXdC
dWZmZXJzRVhUQ29udGV4dEFOR0xFIikpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVY
VENvbnRleHRBTkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREVRVUFU
SU9OU0VQQVJBVEVJRVhUQ09OVEVYVEFOR0xFUFJPQz4oCisgICAgICAgICAgICBsb2FkUHJvYygi
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFIikpOworICAgIGdsQmxlbmRF
cXVhdGlvbmlFWFRDb250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRFUVVB
VElPTklFWFRDT05URVhUQU5HTEVQUk9DPigKKyAgICAgICAgbG9hZFByb2MoImdsQmxlbmRFcXVh
dGlvbmlFWFRDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFRDb250
ZXh0QU5HTEUgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRGVU5DU0VQQVJB
VEVJRVhUQ09OVEVYVEFOR0xFUFJPQz4oCisgICAgICAgICAgICBsb2FkUHJvYygiZ2xCbGVuZEZ1
bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xCbGVuZEZ1bmNpRVhUQ29udGV4
dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJMRU5ERlVOQ0lFWFRDT05URVhUQU5HTEVQ
Uk9DPigKKyAgICAgICAgbG9hZFByb2MoImdsQmxlbmRGdW5jaUVYVENvbnRleHRBTkdMRSIpKTsK
KyAgICBnbENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdM
Q09MT1JNQVNLSUVYVENPTlRFWFRBTkdMRVBST0M+KAorICAgICAgICBsb2FkUHJvYygiZ2xDb2xv
ck1hc2tpRVhUQ29udGV4dEFOR0xFIikpOworICAgIGdsRGlzYWJsZWlFWFRDb250ZXh0QU5HTEUg
PQorICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMRElTQUJMRUlFWFRDT05URVhUQU5HTEVQ
Uk9DPihsb2FkUHJvYygiZ2xEaXNhYmxlaUVYVENvbnRleHRBTkdMRSIpKTsKKyAgICBnbEVuYWJs
ZWlFWFRDb250ZXh0QU5HTEUgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMRU5BQkxF
SUVYVENPTlRFWFRBTkdMRVBST0M+KGxvYWRQcm9jKCJnbEVuYWJsZWlFWFRDb250ZXh0QU5HTEUi
KSk7CisgICAgZ2xJc0VuYWJsZWRpRVhUQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTElTRU5BQkxFRElFWFRDT05URVhUQU5HTEVQUk9DPigKKyAgICAgICAgbG9hZFByb2MoImds
SXNFbmFibGVkaUVYVENvbnRleHRBTkdMRSIpKTsKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0
ZXhFWFRDb250ZXh0QU5HTEUgPQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VM
RU1FTlRTQkFTRVZFUlRFWEVYVENPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFBy
b2MoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVENvbnRleHRBTkdMRSIpKTsKQEAgLTQwNjAs
NiArMzk1OCwyNCBAQCB2b2lkIExvYWRHTEVTKExvYWRQcm9jIGxvYWRQcm9jKQogICAgIGdsRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVNDb250ZXh0QU5HTEUgPQogICAgICAgICByZWludGVycHJl
dF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNDT05URVhUQU5HTEVQUk9DPigK
ICAgICAgICAgICAgIGxvYWRQcm9jKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTQ29udGV4
dEFOR0xFIikpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FU0NvbnRleHRBTkdMRSA9
CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREVRVUFUSU9OU0VQQVJBVEVJT0VT
Q09OVEVYVEFOR0xFUFJPQz4oCisgICAgICAgICAgICBsb2FkUHJvYygiZ2xCbGVuZEVxdWF0aW9u
U2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFIikpOworICAgIGdsQmxlbmRFcXVhdGlvbmlPRVNDb250
ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRFUVVBVElPTklPRVNDT05URVhU
QU5HTEVQUk9DPigKKyAgICAgICAgbG9hZFByb2MoImdsQmxlbmRFcXVhdGlvbmlPRVNDb250ZXh0
QU5HTEUiKSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUgPQorICAg
ICAgICByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTQ09OVEVYVEFO
R0xFUFJPQz4oCisgICAgICAgICAgICBsb2FkUHJvYygiZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVND
b250ZXh0QU5HTEUiKSk7CisgICAgZ2xCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTEJMRU5ERlVOQ0lPRVNDT05URVhUQU5HTEVQUk9DPigKKyAgICAgICAg
bG9hZFByb2MoImdsQmxlbmRGdW5jaU9FU0NvbnRleHRBTkdMRSIpKTsKKyAgICBnbENvbG9yTWFz
a2lPRVNDb250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMQ09MT1JNQVNLSU9FU0NP
TlRFWFRBTkdMRVBST0M+KAorICAgICAgICBsb2FkUHJvYygiZ2xDb2xvck1hc2tpT0VTQ29udGV4
dEFOR0xFIikpOworICAgIGdsRGlzYWJsZWlPRVNDb250ZXh0QU5HTEUgPQorICAgICAgICByZWlu
dGVycHJldF9jYXN0PFBGTkdMRElTQUJMRUlPRVNDT05URVhUQU5HTEVQUk9DPihsb2FkUHJvYygi
Z2xEaXNhYmxlaU9FU0NvbnRleHRBTkdMRSIpKTsKKyAgICBnbEVuYWJsZWlPRVNDb250ZXh0QU5H
TEUgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMRU5BQkxFSU9FU0NPTlRFWFRBTkdM
RVBST0M+KGxvYWRQcm9jKCJnbEVuYWJsZWlPRVNDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xJc0Vu
YWJsZWRpT0VTQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTElTRU5BQkxFRElP
RVNDT05URVhUQU5HTEVQUk9DPigKKyAgICAgICAgbG9hZFByb2MoImdsSXNFbmFibGVkaU9FU0Nv
bnRleHRBTkdMRSIpKTsKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVNDb250ZXh0QU5H
TEUgPQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTQkFTRVZFUlRF
WE9FU0NPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFByb2MoImdsRHJhd0VsZW1l
bnRzQmFzZVZlcnRleE9FU0NvbnRleHRBTkdMRSIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvZ2xlc19sb2FkZXJfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC9nbGVzX2xvYWRlcl9hdXRvZ2VuLmgKaW5kZXggNDI2ZTM1NTMxMDk0ZTFk
Mzc4NmUzYmM4NWJkMjRmYmFlYmRmMGU0Yi4uNjcyYTQ2ODhjMWZjMGNkZGUwOTc4NzA5ZmE3NjBm
NTE2NTUzOGIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nbGVz
X2xvYWRlcl9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nbGVz
X2xvYWRlcl9hdXRvZ2VuLmgKQEAgLTQzNyw2ICs0MzcsNyBAQCBBTkdMRV9VVElMX0VYUE9SVCBl
eHRlcm4gUEZOR0xHRVRURVhJTUFHRUFOR0xFUFJPQyBnbEdldFRleEltYWdlQU5HTEU7CiBBTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DIGds
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdM
RFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xWRVJURVhBVFRSSUJESVZJU09SQU5H
TEVQUk9DIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0
ZXJuIFBGTkdMSU1QT1JUTUVNT1JZWklSQ09OSEFORExFQU5HTEVQUk9DIGdsSW1wb3J0TWVtb3J5
WmlyY29uSGFuZGxlQU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xNVUxUSURS
QVdBUlJBWVNBTkdMRVBST0MgZ2xNdWx0aURyYXdBcnJheXNBTkdMRTsKIEFOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTE1VTFRJRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyBnbE11bHRp
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdM
TVVMVElEUkFXRUxFTUVOVFNBTkdMRVBST0MgZ2xNdWx0aURyYXdFbGVtZW50c0FOR0xFOwpAQCAt
NTI0LDYgKzUyNSw4IEBAIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWFBBUkFNRVRF
UkZWUk9CVVNUQU5HTEVQUk9DIGdsVGV4UGFyYW1ldGVyZnZSb2J1CiBBTkdMRV9VVElMX0VYUE9S
VCBleHRlcm4gUEZOR0xURVhQQVJBTUVURVJJVlJPQlVTVEFOR0xFUFJPQyBnbFRleFBhcmFtZXRl
cml2Um9idXN0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xURVhTVUJJTUFH
RTJEUk9CVVNUQU5HTEVQUk9DIGdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFOwogQU5HTEVfVVRJ
TF9FWFBPUlQgZXh0ZXJuIFBGTkdMVEVYU1VCSU1BR0UzRFJPQlVTVEFOR0xFUFJPQyBnbFRleFN1
YkltYWdlM0RSb2J1c3RBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTElNUE9S
VFNFTUFQSE9SRVpJUkNPTkhBTkRMRUFOR0xFUFJPQworICAgIGdsSW1wb3J0U2VtYXBob3JlWmly
Y29uSGFuZGxlQU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJTlZBTElEQVRF
VEVYVFVSRUFOR0xFUFJPQyBnbEludmFsaWRhdGVUZXh0dXJlQU5HTEU7CiBBTkdMRV9VVElMX0VY
UE9SVCBleHRlcm4gUEZOR0xURVhJTUFHRTJERVhURVJOQUxBTkdMRVBST0MgZ2xUZXhJbWFnZTJE
RXh0ZXJuYWxBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVE1VTFRJU0FN
UExFRlZBTkdMRVBST0MgZ2xHZXRNdWx0aXNhbXBsZWZ2QU5HTEU7CkBAIC01MzcsNDEgKzU0MCw3
IEBAIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPTVBSRVNTRURDT1BZVEVYVFVSRUNI
Uk9NSVVNUFJPQyBnbENvbXByZXNzZWRDb3B5CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xDT1BZU1VCVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU07CiBB
TkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENv
cHlUZXh0dXJlQ0hST01JVU07CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT1ZFUkFH
RU1PRFVMQVRJT05DSFJPTUlVTVBST0MgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTTsKLUFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTE1BVFJJWExPQURJREVOVElUWUNIUk9NSVVNUFJP
QyBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMTUFUUklYTE9BREZDSFJPTUlVTVBST0MgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNOwogQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMTE9TRUNPTlRFWFRDSFJPTUlVTVBST0MgZ2xMb3Nl
Q29udGV4dENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQklOREZSQUdN
RU5USU5QVVRMT0NBVElPTkNIUk9NSVVNUFJPQwotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQ09WRVJGSUxMUEFU
SENIUk9NSVVNUFJPQyBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JU
IGV4dGVybiBQRk5HTENPVkVSRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MgZ2xDb3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xD
T1ZFUlNUUk9LRVBBVEhDSFJPTUlVTVBST0MgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTTsKLUFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9N
SVVNUFJPQwotICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU07Ci1BTkdMRV9V
VElMX0VYUE9SVCBleHRlcm4gUEZOR0xERUxFVEVQQVRIU0NIUk9NSVVNUFJPQyBnbERlbGV0ZVBh
dGhzQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRU5QQVRIU0NIUk9N
SVVNUFJPQyBnbEdlblBhdGhzQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xHRVRQQVRIUEFSQU1FVEVSRlZDSFJPTUlVTVBST0MgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJP
TUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVFBBVEhQQVJBTUVURVJJVkNI
Uk9NSVVNUFJPQyBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBP
UlQgZXh0ZXJuIFBGTkdMSVNQQVRIQ0hST01JVU1QUk9DIGdsSXNQYXRoQ0hST01JVU07Ci1BTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xQQVRIQ09NTUFORFNDSFJPTUlVTVBST0MgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFBBVEhQQVJB
TUVURVJGQ0hST01JVU1QUk9DIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTTsKLUFOR0xFX1VUSUxf
RVhQT1JUIGV4dGVybiBQRk5HTFBBVEhQQVJBTUVURVJJQ0hST01JVU1QUk9DIGdsUGF0aFBhcmFt
ZXRlcmlDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFBBVEhTVEVOQ0lM
RlVOQ0NIUk9NSVVNUFJPQyBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNOwotQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVUR0VOQ0hST01JVU1QUk9D
Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTTsKLUFOR0xFX1VUSUxf
RVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxGSUxMUEFUSENIUk9NSVVNUFJPQyBnbFN0ZW5jaWxG
aWxsUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTEZJ
TExQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DCi0gICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxTVFJPS0VQ
QVRIQ0hST01JVU1QUk9DIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxf
RVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9D
Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNOwotQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRIQ0hST01JVU1QUk9DCi0g
ICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JU
IGV4dGVybiBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJP
QwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU07Ci1BTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSENIUk9N
SVVNUFJPQwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTTsKLUFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRISU5TVEFO
Q0VEQ0hST01JVU1QUk9DCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQklOREZSQUdEQVRBTE9D
QVRJT05FWFRQUk9DIGdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFQ7CiBBTkdMRV9VVElMX0VYUE9S
VCBleHRlcm4gUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTklOREVYRURFWFRQUk9DIGdsQmluZEZy
YWdEYXRhTG9jYXRpb25JbmRleGVkRVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdM
R0VURlJBR0RBVEFJTkRFWEVYVFBST0MgZ2xHZXRGcmFnRGF0YUluZGV4RVhUOwpAQCAtNTg1LDYg
KzU1NCw3IEBAIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJFR0lOUVVFUllFWFRQUk9D
IGdsQmVnaW5RdWVyeUVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTERFTEVURVFV
RVJJRVNFWFRQUk9DIGdsRGVsZXRlUXVlcmllc0VYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVy
biBQRk5HTEVORFFVRVJZRVhUUFJPQyBnbEVuZFF1ZXJ5RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMR0VOUVVFUklFU0VYVFBST0MgZ2xHZW5RdWVyaWVzRVhUOworQU5HTEVfVVRJ
TF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUSU5URUdFUjY0VkVYVFBST0MgZ2xHZXRJbnRlZ2VyNjR2
RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRWRVhU
UFJPQyBnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTEdFVFFVRVJZT0JKRUNUSVZFWFRQUk9DIGdsR2V0UXVlcnlPYmplY3RpdkVYVDsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVFFVRVJZT0JKRUNUVUk2NFZFWFRQUk9DIGdsR2V0
UXVlcnlPYmplY3R1aTY0dkVYVDsKQEAgLTU5Myw2ICs1NjMsMTQgQEAgQU5HTEVfVVRJTF9FWFBP
UlQgZXh0ZXJuIFBGTkdMR0VUUVVFUllJVkVYVFBST0MgZ2xHZXRRdWVyeWl2RVhUOwogQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMSVNRVUVSWUVYVFBST0MgZ2xJc1F1ZXJ5RVhUOwogQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMUVVFUllDT1VOVEVSRVhUUFJPQyBnbFF1ZXJ5Q291
bnRlckVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTERSQVdCVUZGRVJTRVhUUFJP
QyBnbERyYXdCdWZmZXJzRVhUOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRF
UVVBVElPTlNFUEFSQVRFSUVYVFBST0MgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUOworQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRFUVVBVElPTklFWFRQUk9DIGdsQmxlbmRF
cXVhdGlvbmlFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCTEVOREZVTkNTRVBB
UkFURUlFWFRQUk9DIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUOworQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMQkxFTkRGVU5DSUVYVFBST0MgZ2xCbGVuZEZ1bmNpRVhUOworQU5HTEVfVVRJ
TF9FWFBPUlQgZXh0ZXJuIFBGTkdMQ09MT1JNQVNLSUVYVFBST0MgZ2xDb2xvck1hc2tpRVhUOwor
QU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRElTQUJMRUlFWFRQUk9DIGdsRGlzYWJsZWlF
WFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xFTkFCTEVJRVhUUFJPQyBnbEVuYWJs
ZWlFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJU0VOQUJMRURJRVhUUFJPQyBn
bElzRW5hYmxlZGlFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXRUxFTUVO
VFNCQVNFVkVSVEVYRVhUUFJPQyBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQ7CiBBTkdMRV9V
VElMX0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURCQVNFVkVSVEVYRVhU
UFJPQwogICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVDsKQEAgLTY1OCw2
ICs2MzYsMTQgQEAgQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMVEVTVEZFTkNFTlZQUk9D
IGdsVGVzdEZlbmNlTlY7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xFR0xJTUFHRVRB
UkdFVFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNQUk9DCiAgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRl
cmJ1ZmZlclN0b3JhZ2VPRVM7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xFR0xJTUFH
RVRBUkdFVFRFWFRVUkUyRE9FU1BST0MgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUzsKK0FO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlPRVNQUk9D
IGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTEJMRU5ERVFVQVRJT05JT0VTUFJPQyBnbEJsZW5kRXF1YXRpb25pT0VTOworQU5HTEVfVVRJ
TF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTUFJPQyBnbEJsZW5kRnVu
Y1NlcGFyYXRlaU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERlVOQ0lP
RVNQUk9DIGdsQmxlbmRGdW5jaU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENP
TE9STUFTS0lPRVNQUk9DIGdsQ29sb3JNYXNraU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVy
biBQRk5HTERJU0FCTEVJT0VTUFJPQyBnbERpc2FibGVpT0VTOworQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMRU5BQkxFSU9FU1BST0MgZ2xFbmFibGVpT0VTOworQU5HTEVfVVRJTF9FWFBP
UlQgZXh0ZXJuIFBGTkdMSVNFTkFCTEVESU9FU1BST0MgZ2xJc0VuYWJsZWRpT0VTOwogQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRFJBV0VMRU1FTlRTQkFTRVZFUlRFWE9FU1BST0MgZ2xE
cmF3RWxlbWVudHNCYXNlVmVydGV4T0VTOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdM
RFJBV0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRFWE9FU1BST0MKICAgICBnbERyYXdFbGVtZW50
c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVM7CkBAIC0xMjE3LDYgKzEyMDMsOCBAQCBBTkdMRV9VVElM
X0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRUNPTlRFWFRBTkdM
RVBST0MKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFQ29udGV4dEFOR0xFOwogQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMVkVSVEVYQVRUUklCRElWSVNPUkFOR0xFQ09OVEVY
VEFOR0xFUFJPQwogICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFQ29udGV4dEFOR0xFOwor
QU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMSU1QT1JUTUVNT1JZWklSQ09OSEFORExFQU5H
TEVDT05URVhUQU5HTEVQUk9DCisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNv
bnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTE1VTFRJRFJBV0FSUkFZ
U0FOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsTXVsdGlEcmF3QXJyYXlzQU5HTEVDb250ZXh0
QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xNVUxUSURSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRUNPTlRFWFRBTkdMRVBST0MKQEAgLTEzNTksNiArMTM0Nyw4IEBAIEFOR0xFX1VU
SUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdMRUNPTlRFWFRBTkdM
RVBST0MKICAgICBnbFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWFNVQklNQUdFM0RST0JVU1RBTkdMRUNPTlRFWFRB
TkdMRVBST0MKICAgICBnbFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRUNvbnRleHRBTkdMRTsKK0FO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTElNUE9SVFNFTUFQSE9SRVpJUkNPTkhBTkRMRUFO
R0xFQ09OVEVYVEFOR0xFUFJPQworICAgIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5H
TEVDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJTlZBTElEQVRF
VEVYVFVSRUFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsSW52YWxpZGF0ZVRleHR1cmVBTkdM
RUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWElNQUdFMkRF
WFRFUk5BTEFOR0xFQ09OVEVYVEFOR0xFUFJPQwpAQCAtMTM4Myw1MyArMTM3Myw3IEBAIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPUFlTVUJURVhUVVJFQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DCiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVN
Q09OVEVYVEFOR0xFUFJPQyBnbENvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEU7CiBBTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT1ZFUkFHRU1PRFVMQVRJT05DSFJPTUlVTUNPTlRF
WFRBTkdMRVBST0MKICAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xF
OwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMTUFUUklYTE9BRElERU5USVRZQ0hST01J
VU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRl
eHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTE1BVFJJWExPQURGQ0hST01J
VU1DT05URVhUQU5HTEVQUk9DIGdsTWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRTsKIEFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTExPU0VDT05URVhUQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DIGdsTG9zZUNvbnRleHRDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTEJJTkRGUkFHTUVOVElOUFVUTE9DQVRJT05DSFJPTUlVTUNPTlRFWFRB
TkdMRVBST0MKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRleHRB
TkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSRklMTFBBVEhDSFJPTUlV
TUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdM
RTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSRklMTFBBVEhJTlNUQU5DRURD
SFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSU1RS
T0tFUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT1ZFUlNU
Uk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbENvdmVyU3Ry
b2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMREVMRVRFUEFUSFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xEZWxldGVQ
YXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdM
R0VOUEFUSFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xHZW5QYXRoc0NIUk9NSVVNQ29udGV4
dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUUEFUSFBBUkFNRVRFUkZW
Q0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlV
TUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVFBBVEhQQVJB
TUVURVJJVkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2
Q0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJU1BB
VEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRTsK
LUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFBBVEhDT01NQU5EU0NIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQwotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xQQVRIUEFSQU1FVEVSRkNIUk9NSVVNQ09OVEVYVEFO
R0xFUFJPQwotICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFBBVEhQQVJBTUVURVJJQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DCi0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTkNIUk9N
SVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lM
RklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENI
Uk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJ
TEZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xTdGVuY2ls
RmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JU
IGV4dGVybiBQRk5HTFNURU5DSUxTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0g
ICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRF
WFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250
ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lMVEhFTkNPVkVS
RklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQ
Uk9DCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRl
eHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxUSEVOQ09WRVJT
VFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRB
TkdMRVBST0MKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU1Db250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCSU5ERlJBR0RB
VEFMT0NBVElPTkVYVENPTlRFWFRBTkdMRVBST0MKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9u
RVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQklOREZSQUdE
QVRBTE9DQVRJT05JTkRFWEVERVhUQ09OVEVYVEFOR0xFUFJPQwpAQCAtMTQ0Nyw2ICsxMzkxLDcg
QEAgQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkVHSU5RVUVSWUVYVENPTlRFWFRBTkdM
RVBST0MgZ2xCZWdpblF1ZXJ5RVhUQ29udGUKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5H
TERFTEVURVFVRVJJRVNFWFRDT05URVhUQU5HTEVQUk9DIGdsRGVsZXRlUXVlcmllc0VYVENvbnRl
eHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEVORFFVRVJZRVhUQ09OVEVY
VEFOR0xFUFJPQyBnbEVuZFF1ZXJ5RVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMR0VOUVVFUklFU0VYVENPTlRFWFRBTkdMRVBST0MgZ2xHZW5RdWVyaWVzRVhU
Q29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUSU5URUdFUjY0
VkVYVENPTlRFWFRBTkdMRVBST0MgZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xFOwogQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRWRVhUQ09OVEVYVEFO
R0xFUFJPQwogICAgIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUQ29udGV4dEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUUVVFUllPQkpFQ1RJVkVYVENPTlRFWFRBTkdMRVBS
T0MgZ2xHZXRRdWVyeU9iamVjdGl2RVhUQ29udGV4dEFOR0xFOwpAQCAtMTQ1OCw2ICsxNDAzLDE2
IEBAIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVFFVRVJZSVZFWFRDT05URVhUQU5H
TEVQUk9DIGdsR2V0UXVlcnlpdkVYVENvbnRlCiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xJU1FVRVJZRVhUQ09OVEVYVEFOR0xFUFJPQyBnbElzUXVlcnlFWFRDb250ZXh0QU5HTEU7CiBB
TkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xRVUVSWUNPVU5URVJFWFRDT05URVhUQU5HTEVQ
Uk9DIGdsUXVlcnlDb3VudGVyRVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0
ZXJuIFBGTkdMRFJBV0JVRkZFUlNFWFRDT05URVhUQU5HTEVQUk9DIGdsRHJhd0J1ZmZlcnNFWFRD
b250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCTEVOREVRVUFUSU9O
U0VQQVJBVEVJRVhUQ09OVEVYVEFOR0xFUFJPQworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
aUVYVENvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERVFV
QVRJT05JRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRXF1YXRpb25pRVhUQ29udGV4dEFOR0xF
OworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJRVhUQ09O
VEVYVEFOR0xFUFJPQworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFOwor
QU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRGVU5DSUVYVENPTlRFWFRBTkdMRVBS
T0MgZ2xCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMQ09MT1JNQVNLSUVYVENPTlRFWFRBTkdMRVBST0MgZ2xDb2xvck1hc2tpRVhUQ29udGV4
dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRElTQUJMRUlFWFRDT05URVhU
QU5HTEVQUk9DIGdsRGlzYWJsZWlFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBl
eHRlcm4gUEZOR0xFTkFCTEVJRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEVuYWJsZWlFWFRDb250ZXh0
QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJU0VOQUJMRURJRVhUQ09OVEVY
VEFOR0xFUFJPQyBnbElzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9S
VCBleHRlcm4gUEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYRVhUQ09OVEVYVEFOR0xFUFJPQwog
ICAgIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxf
RVhQT1JUIGV4dGVybiBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREJBU0VWRVJURVhFWFRDT05U
RVhUQU5HTEVQUk9DCkBAIC0xNTQ5LDYgKzE1MDQsMTYgQEAgQU5HTEVfVVRJTF9FWFBPUlQgZXh0
ZXJuIFBGTkdMRUdMSU1BR0VUQVJHRVRSRU5ERVJCVUZGRVJTVE9SQUdFT0VTQ09OVEVYVEFOR0xF
UFIKICAgICBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdM
RTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJE
T0VTQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVNDb250
ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCTEVOREVRVUFUSU9OU0VQ
QVJBVEVJT0VTQ09OVEVYVEFOR0xFUFJPQworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9F
U0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERVFVQVRJ
T05JT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRXF1YXRpb25pT0VTQ29udGV4dEFOR0xFOwor
QU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTQ09OVEVY
VEFOR0xFUFJPQworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFOworQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRGVU5DSU9FU0NPTlRFWFRBTkdMRVBST0Mg
Z2xCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMQ09MT1JNQVNLSU9FU0NPTlRFWFRBTkdMRVBST0MgZ2xDb2xvck1hc2tpT0VTQ29udGV4dEFO
R0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRElTQUJMRUlPRVNDT05URVhUQU5H
TEVQUk9DIGdsRGlzYWJsZWlPRVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRl
cm4gUEZOR0xFTkFCTEVJT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEVuYWJsZWlPRVNDb250ZXh0QU5H
TEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJU0VOQUJMRURJT0VTQ09OVEVYVEFO
R0xFUFJPQyBnbElzRW5hYmxlZGlPRVNDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBl
eHRlcm4gUEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYT0VTQ09OVEVYVEFOR0xFUFJPQwogICAg
IGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FU0NvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREJBU0VWRVJURVhPRVNDT05URVhU
QU5HTEVQUk9DCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3JhbmRv
bV91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9yYW5kb21fdXRpbHMuaApp
bmRleCAwNTVkNjBhMGFjNThjZDViYWE4ZjkzODQyYmQzYTVjZTBkZDQ2MjgzLi40Y2M5MmRhZDM3
MzkyMDE5MTc3NzYxZmE5OTBlZDExZjUwMzE3MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL3JhbmRvbV91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvcmFuZG9tX3V0aWxzLmgKQEAgLTEwLDEwICsxMCwxMCBAQAogI2lmbmRlZiBVVElM
X1JBTkRPTV9VVElMU19ICiAjZGVmaW5lIFVUSUxfUkFORE9NX1VUSUxTX0gKIAotLy8gVE9ETyhq
bWFkaWxsKTogUmV3b3JrIHRoaXMgaWYgQ2hyb21pdW0gZGVjaWRlcyB0byBiYW4gPHJhbmRvbT4K
ICNpbmNsdWRlIDxyYW5kb20+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9u
L3ZlY3Rvcl91dGlscy5oIgogI2luY2x1ZGUgInV0aWwvdXRpbF9leHBvcnQuaCIKIAogbmFtZXNw
YWNlIGFuZ2xlCkBAIC03MCw2ICs3MCwxNCBAQCBpbmxpbmUgdm9pZCBGaWxsVmVjdG9yV2l0aFJh
bmRvbVVCeXRlcyhzdGQ6OnZlY3Rvcjx1aW50OF90PiAqZGF0YSkKICAgICBGaWxsVmVjdG9yV2l0
aFJhbmRvbVVCeXRlcygmcm5nLCBkYXRhKTsKIH0KIAoraW5saW5lIFZlY3RvcjQgUmFuZG9tVmVj
NChpbnQgc2VlZCwgZmxvYXQgbWluVmFsdWUsIGZsb2F0IG1heFZhbHVlKQoreworICAgIFJORyBy
bmcoc2VlZCk7CisgICAgc3JhbmQoc2VlZCk7CisgICAgcmV0dXJuIFZlY3RvcjQoCisgICAgICAg
IHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUsIG1heFZhbHVlKSwgcm5nLnJhbmRvbUZs
b2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLAorICAgICAgICBybmcucmFuZG9tRmxvYXRC
ZXR3ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSksIHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFs
dWUsIG1heFZhbHVlKSk7Cit9CiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogI2VuZGlmICAvLyBV
VElMX1JBTkRPTV9VVElMU19ICmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL3V0aWwuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGlsLmduaQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRhMThhNWNhNGI2YzgzOTBiNGU4NGU2YzAxYzNm
MDdhMzg3NTNiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3V0aWwuZ25pCisrKyAvZGV2L251bGwKQEAg
LTEsNzIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0KLXV0aWxfc291cmNlcyA9IFsKLSAgInV0aWwvY29tX3V0aWxzLmgiLAot
ICAidXRpbC9rZXlib2FyZC5oIiwKLSAgInV0aWwvZ2VvbWV0cnlfdXRpbHMuY3BwIiwKLSAgInV0
aWwvZ2VvbWV0cnlfdXRpbHMuaCIsCi0gICJ1dGlsL21vdXNlLmgiLAotICAidXRpbC9yYW5kb21f
dXRpbHMuY3BwIiwKLSAgInV0aWwvcmFuZG9tX3V0aWxzLmgiLAotICAidXRpbC9zaGFkZXJfdXRp
bHMuY3BwIiwKLSAgInV0aWwvc2hhZGVyX3V0aWxzLmgiLAotICAidXRpbC91dGlsX2V4cG9ydC5o
IiwKLSAgInV0aWwvdXRpbF9nbC5oIiwKLSAgInV0aWwvRXZlbnQuaCIsCi0gICJ1dGlsL0VHTFBs
YXRmb3JtUGFyYW1ldGVycy5oIiwKLSAgInV0aWwvRUdMV2luZG93LmNwcCIsCi0gICJ1dGlsL0VH
TFdpbmRvdy5oIiwKLSAgInV0aWwvTWF0cml4LmNwcCIsCi0gICJ1dGlsL01hdHJpeC5oIiwKLSAg
InV0aWwvT1NQaXhtYXAuaCIsCi0gICJ1dGlsL09TV2luZG93LmNwcCIsCi0gICJ1dGlsL09TV2lu
ZG93LmgiLAotXQotCi1pZiAoaXNfd2luKSB7Ci0gIHV0aWxfc291cmNlcyArPSBbICJ1dGlsL3dp
bmRvd3MvV0dMV2luZG93LmgiIF0KLQotICBpZiAodGFyZ2V0X29zICE9ICJ3aW51d3AiKSB7Ci0g
ICAgdXRpbF9zb3VyY2VzICs9IFsKLSAgICAgICJ1dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJQaXht
YXAuY3BwIiwKLSAgICAgICJ1dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJQaXhtYXAuaCIsCi0gICAg
ICAidXRpbC93aW5kb3dzL3dpbjMyL1dpbjMyV2luZG93LmNwcCIsCi0gICAgICAidXRpbC93aW5k
b3dzL3dpbjMyL1dpbjMyV2luZG93LmgiLAotICAgIF0KLSAgfQotfQotCi11dGlsX3gxMV9zb3Vy
Y2VzID0gWwotICAidXRpbC94MTEvWDExUGl4bWFwLmNwcCIsCi0gICJ1dGlsL3gxMS9YMTFQaXht
YXAuaCIsCi0gICJ1dGlsL3gxMS9YMTFXaW5kb3cuY3BwIiwKLSAgInV0aWwveDExL1gxMVdpbmRv
dy5oIiwKLV0KLQotdXRpbF9mdWNoc2lhX3NvdXJjZXMgPSBbCi0gICJ1dGlsL2Z1Y2hzaWEvU2Nl
bmljV2luZG93LmNwcCIsCi0gICJ1dGlsL2Z1Y2hzaWEvU2NlbmljV2luZG93LmgiLAotXQotCi11
dGlsX296b25lX3NvdXJjZXMgPSBbCi0gICJ1dGlsL296b25lL096b25lUGl4bWFwLmNwcCIsCi0g
ICJ1dGlsL296b25lL096b25lV2luZG93LmNwcCIsCi0gICJ1dGlsL296b25lL096b25lV2luZG93
LmgiLAotXQotCi11dGlsX29zeF9zb3VyY2VzID0gWwotICAidXRpbC9vc3gvT1NYUGl4bWFwLm1t
IiwKLSAgInV0aWwvb3N4L09TWFBpeG1hcC5oIiwKLSAgInV0aWwvb3N4L09TWFdpbmRvdy5tbSIs
Ci0gICJ1dGlsL29zeC9PU1hXaW5kb3cuaCIsCi1dCi0KLXV0aWxfYW5kcm9pZF9zb3VyY2VzID0g
WwotICAidXRpbC9hbmRyb2lkL0FuZHJvaWRQaXhtYXAuY3BwIiwKLSAgInV0aWwvYW5kcm9pZC9B
bmRyb2lkV2luZG93LmNwcCIsCi0gICJ1dGlsL2FuZHJvaWQvQW5kcm9pZFdpbmRvdy5oIiwKLSAg
InV0aWwvYW5kcm9pZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5jIiwKLSAg
InV0aWwvYW5kcm9pZC90aGlyZF9wYXJ0eS9hbmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5oIiwKLV0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvdXRpbF9nbC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGlsX2dsLmgKaW5kZXggMWM0Mjg3NWRkYmFhZTJl
YjZkYjNlMmExN2NlNzdkYTdmODY4NzAzNi4uNjEzYjBhNTQ3ZDBhNjU0ODljOTFhNmEwNzVmYjg2
MzI5ZjIxM2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGls
X2dsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGlsX2dsLmgKQEAgLTI3
LDQgKzI3LDEzIEBACiAjICAgIGluY2x1ZGUgImFuZ2xlX2dsLmgiCiAjZW5kaWYgIC8vIGRlZmlu
ZWQoQU5HTEVfVVNFX1VUSUxfTE9BREVSKQogCituYW1lc3BhY2UgYW5nbGUKK3sKK2lubGluZSBi
b29sIENoZWNrRXh0ZW5zaW9uRXhpc3RzKGNvbnN0IGNoYXIgKmFsbEV4dGVuc2lvbnMsIGNvbnN0
IHN0ZDo6c3RyaW5nICZleHROYW1lKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhZGRlZEV4
dGVuc2lvbnMgPSBzdGQ6OnN0cmluZygiICIpICsgYWxsRXh0ZW5zaW9ucyArIHN0ZDo6c3RyaW5n
KCIgIik7CisgICAgcmV0dXJuIHBhZGRlZEV4dGVuc2lvbnMuZmluZChzdGQ6OnN0cmluZygiICIp
ICsgZXh0TmFtZSArIHN0ZDo6c3RyaW5nKCIgIikpICE9CisgICAgICAgICAgIHN0ZDo6c3RyaW5n
OjpucG9zOworfQorfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAjZW5kaWYgIC8vIFVUSUxfR0xfSF8K
</data>
<flag name="review"
          id="410850"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395599</attachid>
            <date>2020-04-06 12:16:18 -0700</date>
            <delta_ts>2020-04-06 13:12:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209689-20200406121609.patch</filename>
            <type>text/plain</type>
            <size>8475308</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggOWQ3ODY5YmI1NmNhYTg5NGFiZDRhNmU5MzI3YWExOTZiNWVjYzgxNi4uOTM5NmFmOWViOWQ5
MmM0MmYyMGE2YzcyYzdkYTNhOGVmMWU2MjEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA0LTA2ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBBTkdMRSB0byAyMDIwLTAzLTI3CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk2ODkKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2UgdXBkYXRlLWFuZ2xlLnNo
IHNjcmlwdCBieSBKYW1lcyBEYXJwaW5pYW4gdG8gcm9sbCBBTkdMRSB0bworICAgICAgICBjb21t
aXQgYjM4N2NlOTM4OWVkZTZhNGVkM2I4MzFhYjFiODE4NzkyN2ZhMjk1ZiBpbgorICAgICAgICBo
dHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUgLgorCisgICAgICAg
IGNoYW5nZXMuZGlmZiBoYXMgYmVlbiBhdXRvLXVwZGF0ZWQgd2l0aCBBcHBsZSdzIGRpZmZzIHJl
bGF0aXZlIHRvCisgICAgICAgIHVwc3RyZWFtLiBObyBhZGRpdGlvbmFsIG1hbnVhbCBjaGFuZ2Vz
IGFyZSBtYWRlIGluIHRoaXMgcm9sbC4KKyAgICAgICAgTG9uZyBhdXRvZ2VuZXJhdGVkIGZpbGUg
bGlzdCBvbWl0dGVkLgorCiAyMDIwLTA0LTAzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEZpeCBidWdzIHJlbGF0ZWQgdG8gVmlkZW9UZXh0dXJlQ29waWVy
Q1YgYW5kIEFOR0xFIHJvbGwgc2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS8uZ2l0aWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvLmdpdGlnbm9yZQppbmRl
eCAyMDdmOGEyMDc0ZmQwZjEzYzE1OTliYTA2Y2Q0ZWNkMGEwNTJjM2IzLi4zMjU1ZDBlZWM4NThl
NWExNzE1NmM5Njk3ODNlYjkxMmZkY2E4MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS8uZ2l0aWdub3JlCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFLy5naXRpZ25v
cmUKQEAgLTEsNCArMSw1IEBACiAudnMKKy52c2NvZGUKICouTWFrZWZpbGUKICoubmNiCiAqLm52
dXNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAppbmRleCAwYjVjZGY4N2IwMTI5Yjgw
YTFhZTRkY2VmYjM2OTk3ODFhZWNhNjFlLi4yYmE1Njk3NjMyMzdlNGFkYWU2ZWEwYTA2OWEyOTNi
YTE0ZGMzNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlz
dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdApAQCAtNiwxMyArNiwx
MyBAQAogCQk8a2V5Pk9wZW5Tb3VyY2VQcm9qZWN0PC9rZXk+CiAJCTxzdHJpbmc+QU5HTEU8L3N0
cmluZz4KIAkJPGtleT5PcGVuU291cmNlVmVyc2lvbjwva2V5PgotCQk8c3RyaW5nPmFhNmRkNTBk
ZTBjNTI1M2Q1NmNhZjM3Yjk2OTFkZDYxYTVmNjcwZmQ8L3N0cmluZz4KKwkJPHN0cmluZz5iMzg3
Y2U5Mzg5ZWRlNmE0ZWQzYjgzMWFiMWI4MTg3OTI3ZmEyOTVmPC9zdHJpbmc+CiAJCTxrZXk+T3Bl
blNvdXJjZVdlYnNpdGVVUkw8L2tleT4KIAkJPHN0cmluZz5odHRwOi8vY29kZS5nb29nbGUuY29t
L3AvYW5nbGVwcm9qZWN0Lzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VTQ008L2tleT4KLQkJ
PHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xl
L2FuZ2xlICZhbXA7JmFtcDsgY2QgYW5nbGUgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgYWE2ZGQ1
MGRlMGM1MjUzZDU2Y2FmMzdiOTY5MWRkNjFhNWY2NzBmZDwvc3RyaW5nPgorCQk8c3RyaW5nPmdp
dCBjbG9uZSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUgJmFt
cDsmYW1wOyBjZCBhbmdsZSAmYW1wOyZhbXA7IGdpdCBjaGVja291dCBiMzg3Y2U5Mzg5ZWRlNmE0
ZWQzYjgzMWFiMWI4MTg3OTI3ZmEyOTVmPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUltcG9y
dERhdGU8L2tleT4KLQkJPHN0cmluZz4yMDIwLTAyLTAzPC9zdHJpbmc+CisJCTxzdHJpbmc+MjAy
MC0wMy0yNzwvc3RyaW5nPgogCQk8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CiAJCTxzdHJp
bmc+QlNEPC9zdHJpbmc+CiAJCTxrZXk+T3BlblNvdXJjZUxpY2Vuc2VGaWxlPC9rZXk+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2OTUxZWE3ZjQ1OWQwYWM3ZTI2MGUwNTBiMGI4ZjhhNjc3ZGRiYjY3Li42
MWEyZWE4Y2E4NDJkNjhmZmM4ZDYwYzY4MDU3YWI3NDhhYTUwZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQyNCw4ICs0MjQsNiBAQAogCQk1Q0IzMDEyQTFERTM5RjFBMDBEMkM0MDUgLyogZnVuY3Rp
b25zZ2xfdHlwZWRlZnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQjMwMEY2MURFMzlGMUEwMEQyQzQwNSAvKiBmdW5jdGlvbnNnbF90eXBlZGVmcy5o
ICovOyB9OwogCQk1Q0IzMDEyQjFERTM5RjFBMDBEMkM0MDUgLyogRnVuY3Rpb25zR0wuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzAwRjcxREUz
OUYxQTAwRDJDNDA1IC8qIEZ1bmN0aW9uc0dMLmNwcCAqLzsgfTsKIAkJNUNCMzAxMkMxREUzOUYx
QTAwRDJDNDA1IC8qIEZ1bmN0aW9uc0dMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDBGODFERTM5RjFBMDBEMkM0MDUgLyogRnVuY3Rpb25zR0wu
aCAqLzsgfTsKLQkJNUNCMzAxMkQxREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhHTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDBGQTFERTM5RjFB
MDBEMkM0MDUgLyogUGF0aEdMLmNwcCAqLzsgfTsKLQkJNUNCMzAxMkUxREUzOUYxQTAwRDJDNDA1
IC8qIFBhdGhHTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNCMzAwRkIxREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhHTC5oICovOyB9OwogCQk1Q0IzMDEy
RjFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwMEZDMURFMzlGMUEwMEQyQzQwNSAvKiBQcm9n
cmFtR0wuY3BwICovOyB9OwogCQk1Q0IzMDEzMDFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdM
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDBG
RDFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmggKi87IH07CiAJCTVDQjMwMTMxMURFMzlG
MUEwMEQyQzQwNSAvKiBRdWVyeUdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQjMwMEZFMURFMzlGMUEwMEQyQzQwNSAvKiBRdWVyeUdMLmNwcCAq
LzsgfTsKQEAgLTU1MSwxNCArNTQ5LDEwIEBACiAJCTVDQ0Q1OTlDMjI4NEZDNzUwMDE4RjJEOCAv
KiBTeXN0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0NENTk5OTIyODRGQzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oICovOyB9OwogCQk1
Q0NEODE3MjFEQkZFOTk5MDA2MDY2QjggLyogRGVidWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNUExREJGRTk5OTAwNjA2NkI4IC8qIERl
YnVnLmNwcCAqLzsgfTsKIAkJNUNDRDgxNzMxREJGRTk5OTAwNjA2NkI4IC8qIERlYnVnLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1QjFEQkZF
OTk5MDA2MDY2QjggLyogRGVidWcuaCAqLzsgfTsKLQkJNUNDRDgxNzQxREJGRTk5OTAwNjA2NkI4
IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTVDMURCRkU5OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5n
ZUFsbG9jYXRvci5jcHAgKi87IH07Ci0JCTVDQ0Q4MTc1MURCRkU5OTkwMDYwNjZCOCAvKiBIYW5k
bGVSYW5nZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNDRDgxNUQxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9y
LmggKi87IH07CiAJCTVDQ0Q4MTc2MURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE1RTFEQkZFOTk5
MDA2MDY2QjggLyogSW1hZ2UuY3BwICovOyB9OwogCQk1Q0NEODE3NzFEQkZFOTk5MDA2MDY2Qjgg
LyogSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDQ0Q4MTVGMURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5oICovOyB9OwogCQk1Q0NEODE3ODFE
QkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTYwMURCRkU5OTkwMDYwNjZCOCAvKiBJ
bmRleFJhbmdlQ2FjaGUuY3BwICovOyB9OwogCQk1Q0NEODE3OTFEQkZFOTk5MDA2MDY2QjggLyog
SW5kZXhSYW5nZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0NEODE2MTFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNhY2hlLmggKi87
IH07Ci0JCTVDQ0Q4MTdBMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTYyMURCRkU5OTkwMDYwNjZC
OCAvKiBQYXRoLmNwcCAqLzsgfTsKLQkJNUNDRDgxN0IxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTYz
MURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmggKi87IH07CiAJCTVDQ0Q4MTdDMURCRkU5OTkwMDYw
NjZCOCAvKiBxdWVyeXV0aWxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQ0Q4MTY0MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmNwcCAq
LzsgfTsKIAkJNUNDRDgxN0QxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY1MURCRkU5OTkw
MDYwNjZCOCAvKiBxdWVyeXV0aWxzLmggKi87IH07CiAJCTVDQ0Q4MTgwMURCRkU5OTkwMDYwNjZC
OCAvKiBTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNDRDgxNjgxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5jcHAgKi87IH07CkBAIC01
ODEsNiArNTc1LDExIEBACiAJCTZFRDcwQTBEMjJDRDYzMEUwMDg2ODhDRSAvKiBnbGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVENzBBMEEyMkNE
NjMwRTAwODY4OENFIC8qIGdsZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwogCQk2RUQ3MEEwRTIyQ0Q2MzBFMDA4Njg4Q0UgLyogZ2xwbGF0Zm9ybS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVENzBBMEIy
MkNENjMwRTAwODY4OENFIC8qIGdscGxhdGZvcm0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CiAJCTZFRDcwQTEwMjJDRDY4MjIwMDg2ODhDRSAvKiBnbGV4
dF9hbmdsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkVENzBBMEYyMkNENjgyMjAwODY4OENFIC8qIGdsZXh0X2FuZ2xlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2RUQ3QkRGMDI0MzJDQ0M0MDBFMDE1
MDMgLyogUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRDdCREVFMjQzMkNDQzMwMEUwMTUwMyAvKiBS
ZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMuY3BwICovOyB9OworCQk2RUQ3QkRGMTI0MzJDQ0M0
MDBFMDE1MDMgLyogUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUQ3QkRFRjI0MzJDQ0MzMDBFMDE1MDMg
LyogUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmggKi87IH07CisJCTZFRDdCREYzMjQzMkNE
MUIwMEUwMTUwMyAvKiBJbmZvTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUQ3QkRGMjI0MzJDRDFCMDBFMDE1MDMgLyogSW5mb0xvZy5oICovOyB9
OworCQk2RUQ3QkRGNjI0MzJDRDYyMDBFMDE1MDMgLyogUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVEN0JERjQyNDMy
Q0Q2MjAwRTAxNTAzIC8qIFByb2dyYW1FeGVjdXRhYmxlLmNwcCAqLzsgfTsKKwkJNkVEN0JERjcy
NDMyQ0Q2MjAwRTAxNTAzIC8qIFByb2dyYW1FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUQ3QkRGNTI0MzJDRDYyMDBFMDE1MDMgLyog
UHJvZ3JhbUV4ZWN1dGFibGUuaCAqLzsgfTsKIAkJNkVFMkZEMkQyMkJBRTk5QzAwMUQzNjlFIC8q
IGVnbGV4dF9hbmdsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkVFMkZEMkMyMkJBRTk5QzAwMUQzNjlFIC8qIGVnbGV4dF9hbmdsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNkVFMkZEMkYyMkJBRTlD
RDAwMUQzNjlFIC8qIGdsMmV4dF9hbmdsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkVFMkZEMkUyMkJBRTlDRDAwMUQzNjlFIC8qIGdsMmV4dF9hbmds
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQTA4
QzNDREMxNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMDhDM0NEQTE2RDZDQjYxMDAz
RjBCODMgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCAqLzsgfTsKQEAgLTExOTcsOCArMTE5Niw2
IEBACiAJCTVDQjMwMEY2MURFMzlGMUEwMEQyQzQwNSAvKiBmdW5jdGlvbnNnbF90eXBlZGVmcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmdW5jdGlvbnNnbF90eXBlZGVmcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzMDBGNzFERTM5RjFBMDBEMkM0MDUg
LyogRnVuY3Rpb25zR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RnVuY3Rpb25zR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzMDBGODFE
RTM5RjFBMDBEMkM0MDUgLyogRnVuY3Rpb25zR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnVuY3Rpb25zR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNC
MzAwRkExREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYXRoR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1Q0IzMDBGQjFERTM5RjFBMDBEMkM0MDUgLyogUGF0aEdMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhdGhHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0IzMDBGQzFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW1HTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDQjMwMEZEMURFMzlGMUEwMEQyQzQwNSAvKiBQcm9ncmFtR0wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3JhbUdMLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDQjMwMEZFMURFMzlGMUEwMEQyQzQwNSAvKiBRdWVyeUdMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1ZXJ5R0wuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMyMCwxNCArMTMxNywxMCBAQAogCQk1Q0NENTk5OTIyODRG
Qzc1MDAxOEYyRDggLyogU3lzdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTVB
MURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZWJ1Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4
MTVCMURCRkU5OTkwMDYwNjZCOCAvKiBEZWJ1Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Zy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0NEODE1QzFE
QkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0NEODE1RDFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxl
UmFuZ2VBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxl
UmFuZ2VBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNUUx
REJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgx
NUYxREJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTYwMURC
RkU5OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5kZXhSYW5nZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNDRDgxNjExREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VDYWNoZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleFJhbmdlQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDRDgxNjIxREJGRTk5OTAwNjA2NkI4IC8qIFBh
dGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQ0Q4MTYzMURCRkU5OTkwMDYwNjZCOCAvKiBQ
YXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNjQxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRp
bHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gcXVlcnl1dGlscy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTY1MURCRkU5OTkwMDYwNjZC
OCAvKiBxdWVyeXV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHF1ZXJ5
dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNjgxREJGRTk5OTAw
NjA2NkI4IC8qIFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM1Myw2ICsxMzQ2
LDExIEBACiAJCTZFRDcwQTBBMjJDRDYzMEUwMDg2ODhDRSAvKiBnbGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBnbGV4dC5oOyBwYXRoID0gaW5jbHVkZS9HTEVTL2dsZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRDcwQTBCMjJDRDYzMEUwMDg2ODhD
RSAvKiBnbHBsYXRmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGdscGxh
dGZvcm0uaDsgcGF0aCA9IGluY2x1ZGUvR0xFUy9nbHBsYXRmb3JtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFRDcwQTBGMjJDRDY4MjIwMDg2ODhDRSAvKiBnbGV4dF9hbmdsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBnbGV4dF9hbmdsZS5oOyBwYXRoID0g
aW5jbHVkZS9HTEVTL2dsZXh0X2FuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZFRDdCREVFMjQzMkNDQzMwMEUwMTUwMyAvKiBSZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3ZlQXRvbWljQ291
bnRlckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVEN0JERUYy
NDMyQ0NDMzAwRTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVEN0JERjIyNDMyQ0QxQjAwRTAxNTAzIC8q
IEluZm9Mb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5mb0xvZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RUQ3QkRGNDI0MzJDRDYyMDBFMDE1MDMgLyog
UHJvZ3JhbUV4ZWN1dGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
RUQ3QkRGNTI0MzJDRDYyMDBFMDE1MDMgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvZ3JhbUV4ZWN1dGFibGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkVFMkZEMkMyMkJBRTk5QzAwMUQzNjlFIC8qIGVnbGV4dF9hbmds
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBlZ2xleHRfYW5nbGUuaDsgcGF0
aCA9IGluY2x1ZGUvRUdML2VnbGV4dF9hbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2RUUyRkQyRTIyQkFFOUNEMDAxRDM2OUUgLyogZ2wyZXh0X2FuZ2xlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGdsMmV4dF9hbmdsZS5oOyBwYXRoID0gaW5jbHVkZS9H
TEVTMi9nbDJleHRfYW5nbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTA4QzND
REExNkQ2Q0I2MTAwM0YwQjgzIC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBcnJheUJvdW5kc0NsYW1wZXIuY3BwOyBwYXRoID0g
Y29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4NDksOCArMTg0Nyw2IEBACiAJCQkJNUNDRDU5NTQyMjg0Rjc5NTAwMThGMkQ4IC8q
IEdMRVMxU3RhdGUuaCAqLywKIAkJCQk1QzFEQkM2RjFCMDQzOEQyMDAyMzU1NTIgLyogSGFuZGxl
QWxsb2NhdG9yLmNwcCAqLywKIAkJCQk1QzFEQkM3MDFCMDQzOEQyMDAyMzU1NTIgLyogSGFuZGxl
QWxsb2NhdG9yLmggKi8sCi0JCQkJNUNDRDgxNUMxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJh
bmdlQWxsb2NhdG9yLmNwcCAqLywKLQkJCQk1Q0NEODE1RDFEQkZFOTk5MDA2MDY2QjggLyogSGFu
ZGxlUmFuZ2VBbGxvY2F0b3IuaCAqLywKIAkJCQk1QzFEQkM3MTFCMDQzOEQyMDAyMzU1NTIgLyog
aGlzdG9ncmFtX21hY3Jvcy5oICovLAogCQkJCTVDQ0Q4MTVFMURCRkU5OTkwMDYwNjZCOCAvKiBJ
bWFnZS5jcHAgKi8sCiAJCQkJNUNDRDgxNUYxREJGRTk5OTAwNjA2NkI4IC8qIEltYWdlLmggKi8s
CkBAIC0xODU4LDYgKzE4NTQsNyBAQAogCQkJCTVDMURCQzczMUIwNDM4RDIwMDIzNTU1MiAvKiBJ
bWFnZUluZGV4LmggKi8sCiAJCQkJNUNDRDgxNjAxREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFu
Z2VDYWNoZS5jcHAgKi8sCiAJCQkJNUNDRDgxNjExREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFu
Z2VDYWNoZS5oICovLAorCQkJCTZFRDdCREYyMjQzMkNEMUIwMEUwMTUwMyAvKiBJbmZvTG9nLmgg
Ki8sCiAJCQkJMzE1RUJERDExRkNFNDUyODAwQUM3QTg5IC8qIExvZ2dpbmdBbm5vdGF0b3IuY3Bw
ICovLAogCQkJCTMxNUVCRERBMUZDRTQ1MkIwMEFDN0E4OSAvKiBMb2dnaW5nQW5ub3RhdG9yLmgg
Ki8sCiAJCQkJNUNDRDU5NTYyMjg0Rjc5NTAwMThGMkQ4IC8qIE1lbW9yeU9iamVjdC5jcHAgKi8s
CkBAIC0xODczLDExICsxODcwLDExIEBACiAJCQkJQTMxNTk4ODMyMzI5OTAzNzAwMDYxOUI5IC8q
IE92ZXJsYXlfZm9udF9hdXRvZ2VuLmggKi8sCiAJCQkJQTMxNTk4ODUyMzI5OTAzNzAwMDYxOUI5
IC8qIE92ZXJsYXlXaWRnZXRzLmNwcCAqLywKIAkJCQlBMzE1OTg4NzIzMjk5MDM3MDAwNjE5Qjkg
LyogT3ZlcmxheVdpZGdldHMuaCAqLywKLQkJCQk1Q0NEODE2MjFEQkZFOTk5MDA2MDY2QjggLyog
UGF0aC5jcHAgKi8sCi0JCQkJNUNDRDgxNjMxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguaCAqLywK
IAkJCQk1QzFEQkM3NTFCMDQzOEQyMDAyMzU1NTIgLyogUGxhdGZvcm0uY3BwICovLAogCQkJCTVD
MURCQzc2MUIwNDM4RDIwMDIzNTU1MiAvKiBQcm9ncmFtLmNwcCAqLywKIAkJCQk1QzFEQkM3NzFC
MDQzOEQyMDAyMzU1NTIgLyogUHJvZ3JhbS5oICovLAorCQkJCTZFRDdCREY0MjQzMkNENjIwMEUw
MTUwMyAvKiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgKi8sCisJCQkJNkVEN0JERjUyNDMyQ0Q2MjAw
RTAxNTAzIC8qIFByb2dyYW1FeGVjdXRhYmxlLmggKi8sCiAJCQkJMzE1RUJERDUxRkNFNDUyOTAw
QUM3QTg5IC8qIFByb2dyYW1MaW5rZWRSZXNvdXJjZXMuY3BwICovLAogCQkJCTMxNUVCRENGMUZD
RTQ1MjcwMEFDN0E4OSAvKiBQcm9ncmFtTGlua2VkUmVzb3VyY2VzLmggKi8sCiAJCQkJMzE1RUJE
Q0UxRkNFNDUyNzAwQUM3QTg5IC8qIFByb2dyYW1QaXBlbGluZS5jcHAgKi8sCkBAIC0yMTQ3LDgg
KzIxNDQsNiBAQAogCQkJCUEzMDMwNzg2MjMwNUY4RjAwMDJEQTk3MiAvKiBNZW1vcnlPYmplY3RH
TC5oICovLAogCQkJCTMxNUVCREI1MUZDRTQ0QkUwMEFDN0E4OSAvKiBudWxsX2Z1bmN0aW9ucy5j
cHAgKi8sCiAJCQkJMzE1RUJEQjgxRkNFNDRCRjAwQUM3QTg5IC8qIG51bGxfZnVuY3Rpb25zLmgg
Ki8sCi0JCQkJNUNCMzAwRkExREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhHTC5jcHAgKi8sCi0JCQkJ
NUNCMzAwRkIxREUzOUYxQTAwRDJDNDA1IC8qIFBhdGhHTC5oICovLAogCQkJCTVDQjMwMEZDMURF
MzlGMUEwMEQyQzQwNSAvKiBQcm9ncmFtR0wuY3BwICovLAogCQkJCTVDQjMwMEZEMURFMzlGMUEw
MEQyQzQwNSAvKiBQcm9ncmFtR0wuaCAqLywKIAkJCQkzMTVFQkRCMDFGQ0U0NEJEMDBBQzdBODkg
LyogUHJvZ3JhbVBpcGVsaW5lR0wuY3BwICovLApAQCAtMjI1Nyw2ICsyMjUyLDggQEAKIAkJCQk1
QzU1RDYwMDIyODI2QjhGMDBCNUJBMkMgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmggKi8sCiAJ
CQkJNUM1NUQ1RkEyMjgyNkI4RjAwQjVCQTJDIC8qIFJlbW92ZUFycmF5TGVuZ3RoTWV0aG9kLmNw
cCAqLywKIAkJCQk1QzU1RDYzRTIyODI2QjlDMDBCNUJBMkMgLyogUmVtb3ZlQXJyYXlMZW5ndGhN
ZXRob2QuaCAqLywKKwkJCQk2RUQ3QkRFRTI0MzJDQ0MzMDBFMDE1MDMgLyogUmVtb3ZlQXRvbWlj
Q291bnRlckJ1aWx0aW5zLmNwcCAqLywKKwkJCQk2RUQ3QkRFRjI0MzJDQ0MzMDBFMDE1MDMgLyog
UmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmggKi8sCiAJCQkJNUM1NUQ2MDkyMjgyNkI5MDAw
QjVCQTJDIC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAgKi8sCiAJCQkJNUM1NUQ2MkYyMjgy
NkI5ODAwQjVCQTJDIC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5oICovLAogCQkJCUEzRDMyOTEy
MjNDRkNCNzYwMDM3NTY1NyAvKiBSZW1vdmVJbmFjdGl2ZUludGVyZmFjZVZhcmlhYmxlcy5jcHAg
Ki8sCkBAIC0yNzE4LDcgKzI3MTUsNiBAQAogCQkJCTMxMDEyRTJEMThCOTdCOUIwMDM5MDYyRiAv
KiBnbHNsYW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBM0QzMjkwQzIzQ0ZDQjREMDAzNzU2NTcg
LyogZ2xzbGFuZ190YWJfYXV0b2dlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERjkxQjA0
MzhEMzAwMjM1NTUyIC8qIEhhbmRsZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUND
RDgxNzUxREJGRTk5OTAwNjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzU1RDcyQzIyODI3NDc3MDBCNUJBMkMgLyogaGFzaF91dGlscy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEwMTJFMzMxOEI5N0I5QjAwMzkwNjJGIC8qIEhhc2hOYW1lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERkExQjA0MzhEMzAwMjM1NTUyIC8qIGhpc3RvZ3JhbV9t
YWNyb3MuaCBpbiBIZWFkZXJzICovLApAQCAtMjczMiw2ICsyNzI4LDcgQEAKIAkJCQk1QzU1RDZF
MjIyODI2Qzc5MDBCNUJBMkMgLyogSW1tdXRhYmxlU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzU1RDZFNTIyODI2Qzc5MDBCNUJBMkMgLyogSW1tdXRhYmxlU3RyaW5nQnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNDRDgxNzkxREJGRTk5OTAwNjA2NkI4IC8qIEluZGV4UmFuZ2VD
YWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkVEN0JERjMyNDMyQ0QxQjAwRTAxNTAzIC8qIElu
Zm9Mb2cuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTM1MThCOTdCOUIwMDM5MDYyRiAvKiBJ
bmZvU2luay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMzcxOEI5N0I5QjAwMzkwNjJGIC8q
IEluaXRpYWxpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTM5MThCOTdCOUIwMDM5MDYy
RiAvKiBJbml0aWFsaXplRGxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODAsOCArMjc3Nyw2IEBA
CiAJCQkJNUM1NUQ3MkEyMjgyNzQ3NzAwQjVCQTJDIC8qIFBhY2tlZEVudW1zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzU1RDcyOTIyODI3NDc3MDBCNUJBMkMgLyogUGFja2VkR0xFbnVtc19hdXRv
Z2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU1NTE4Qjk3QjlCMDAzOTA2MkYgLyogUGFy
c2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0NEODE3QjFEQkZFOTk5MDA2MDY2Qjgg
LyogUGF0aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUNCMzAxMkUxREUzOUYxQTAwRDJDNDA1IC8q
IFBhdGhHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA0RjExREU0MTY0ODAwRDJDNDA1IC8q
IFBhdGhJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE1MTFERTM5RjQ3MDBEMkM0MDUg
LyogUGJ1ZmZlclN1cmZhY2VDR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxM0JDRTVEMjM2MTEz
M0EwMEZDMzlFNSAvKiBQYnVmZmVyU3VyZmFjZUVBR0wuaCBpbiBIZWFkZXJzICovLApAQCAtMjc5
Myw2ICsyNzg4LDcgQEAKIAkJCQlBMjY0RjhCRjE2OTc0REVEMDA2RkFBNUEgLyogUHJlcHJvY2Vz
c29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMzAzMDc5NDIzMDVGOTU5MDAyREE5NzIgLyogcHJv
Y190YWJsZV9lZ2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCRTAwMUIwNDM4RDMwMDIzNTU1
MiAvKiBQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RUQ3QkRGNzI0MzJDRDYyMDBFMDE1
MDMgLyogUHJvZ3JhbUV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwMTMwMURF
MzlGMUEwMEQyQzQwNSAvKiBQcm9ncmFtR0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEYz
MURFNDE2NDgwMEQyQzQwNSAvKiBQcm9ncmFtSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNC
MzA0RjIxREU0MTY0ODAwRDJDNDA1IC8qIFByb2dyYW1JbXBsX21vY2suaCBpbiBIZWFkZXJzICov
LApAQCAtMjgxMiw2ICsyODA4LDcgQEAKIAkJCQk1QzFEQkUwNjFCMDQzOEQzMDAyMzU1NTIgLyog
UmVmQ291bnRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTVENjVDMjI4MjZCOUYwMEI1
QkEyQyAvKiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNTVE
NjlBMjI4MjZCOUYwMEI1QkEyQyAvKiBSZW1vdmVBcnJheUxlbmd0aE1ldGhvZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNkVEN0JERjEyNDMyQ0NDNDAwRTAxNTAzIC8qIFJlbW92ZUF0b21pY0NvdW50
ZXJCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1NUQ2OEIyMjgyNkI5RjAwQjVCQTJD
IC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNEMzI5MTky
M0NGQ0I3NzAwMzc1NjU3IC8qIFJlbW92ZUluYWN0aXZlSW50ZXJmYWNlVmFyaWFibGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzU1RDY0RDIyODI2QjlGMDBCNUJBMkMgLyogUmVtb3ZlSW52YXJp
YW50RGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzE2Miw3ICszMTU5LDYgQEAKIAkJ
CQlBM0QzMjkwRDIzQ0ZDQjREMDAzNzU2NTcgLyogZ2xzbGFuZ19sZXhfYXV0b2dlbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBM0QzMjkwQjIzQ0ZDQjREMDAzNzU2NTcgLyogZ2xzbGFuZ190YWJf
YXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRGODFCMDQzOEQzMDAyMzU1NTIg
LyogSGFuZGxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDQ0Q4MTc0MURCRkU5
OTkwMDYwNjZCOCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMTVFQkQ4NjFGQ0U0NDM2MDBBQzdBODkgLyogSGFzaE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDQ0Q4MTc2MURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0NENTk5MTIyODRGQzQwMDAxOEYyRDggLyogaW1hZ2Vmb3JtYXRzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzIxNCw4ICszMjEwLDYgQEAKIAkJCQk1QzU1RDcyRDIyODI3NDc3MDBC
NUJBMkMgLyogUGFja2VkRW51bXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUM1NUQ3MkUyMjgy
NzQ3NzAwQjVCQTJDIC8qIFBhY2tlZEdMRW51bXNfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTAxMkU1NDE4Qjk3QjlCMDAzOTA2MkYgLyogUGFyc2VDb250ZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTVDQ0Q4MTdBMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTVDQjMwMTJEMURFMzlGMUEwMEQyQzQwNSAvKiBQYXRoR0wuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNDRDU5NkYyMjg0Rjk1NTAwMThGMkQ4IC8qIFBidWZmZXJTdXJmYWNl
Q0dMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxM0JDRTU2MjM2MTEzM0EwMEZDMzlFNSAvKiBQ
YnVmZmVyU3VyZmFjZUVBR0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERkUxQjA0MzhE
MzAwMjM1NTUyIC8qIFBsYXRmb3JtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzIyNyw2ICszMjIx
LDcgQEAKIAkJCQlBM0QzMjkwNzIzQ0ZDODg3MDAzNzU2NTcgLyogcHJlcHJvY2Vzc29yX3RhYl9h
dXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMDMwNzk1MjMwNUY5NTkwMDJEQTk3MiAv
KiBwcm9jX3RhYmxlX2VnbF9hdXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREZG
MUIwNDM4RDMwMDIzNTU1MiAvKiBQcm9ncmFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFRDdC
REY2MjQzMkNENjIwMEUwMTUwMyAvKiBQcm9ncmFtRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1Q0IzMDEyRjFERTM5RjFBMDBEMkM0MDUgLyogUHJvZ3JhbUdMLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMxNUVCREVDMUZDRTQ1MkQwMEFDN0E4OSAvKiBQcm9ncmFtTGlua2VkUmVz
b3VyY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxNUVCREU1MUZDRTQ1MkQwMEFDN0E4OSAv
KiBQcm9ncmFtUGlwZWxpbmUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjQyLDYgKzMyMzcsNyBA
QAogCQkJCTVDNTVENkI5MjI4MjZCQzgwMEI1QkEyQyAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzU1RDZCQTIyODI2QkM4MDBCNUJBMkMgLyogUmVn
ZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDNTVENkJCMjI4MjZC
QzgwMEI1QkEyQyAvKiBSZW1vdmVBcnJheUxlbmd0aE1ldGhvZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk2RUQ3QkRGMDI0MzJDQ0M0MDBFMDE1MDMgLyogUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0
aW5zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDNTVENkJDMjI4MjZCQzgwMEI1QkEyQyAvKiBS
ZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNEMzI5MTgyM0NG
Q0I3NzAwMzc1NjU3IC8qIFJlbW92ZUluYWN0aXZlSW50ZXJmYWNlVmFyaWFibGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDNTVENkJEMjI4MjZCQzgwMEI1QkEyQyAvKiBSZW1vdmVJbnZhcmlh
bnREZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FVVEhPUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCmlu
ZGV4IDI1ZjhlMzM2NzFiZjI0M2RkZjAzNDg1Zjc5ZjRlZWU2ZGZmNDkwMmIuLmZhNTA3M2U3M2E5
MjJiYWVmZjJiZDBkMzcxODUwNjhhOWY3NDNlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FVVEhPUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQVVUSE9SUwpA
QCAtMzQsNiArMzQsNyBAQCBTYW1zdW5nIEVsZWN0cm9uaWNzLCBJbmMuCiBBcm0gTHRkLgogQnJv
YWRjb20gSW5jLgogRmFjZWJvb2ssIEluYy4KK1RoZSBLaHJvbm9zIEdyb3VwLCBJbmMuCiAKIEph
Y2VrIENhYmFuCiBNYXJrIENhbGxvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9CVUlMRC5nbgppbmRleCBjMGJi
ZWI3MzgyY2YyZDNhNTBjZTVjNDE1OWUwOGE5YjBjYTM4NDJhLi5hZDc2NzVmNGU1NmQ1MWFjNDY0
NGYxZDQwMTQ1OWVmNDcxMjI4ODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9CVUlMRC5nbgpAQCAtMzIs
NiArMzIsOSBAQCBkZWNsYXJlX2FyZ3MoKSB7CiAgICMgRG9uJ3QgYnVpbGQgZXh0cmEgKHRlc3Qs
IHNhbXBsZXMgZXRjKSBmb3IgV2luZG93cyBVV1AuIFdlIGRvbid0IGhhdmUKICAgIyBpbmZyYXN0
cnVjdHVyZSAoZS5nLiB3aW5kb3dpbmcgaGVscGVyIGZ1bmN0aW9ucykgaW4gcGxhY2UgdG8gcnVu
IHRoZW0uCiAgIGFuZ2xlX2J1aWxkX2FsbCA9ICFidWlsZF93aXRoX2Nocm9taXVtICYmICFhbmds
ZV9pc193aW51d3AgJiYgYW5nbGVfaGFzX2J1aWxkCisKKyAgIyBFbmFibGUgZ2VuZXJhdGluZyBj
dXJyZW50IGNvbW1pdCBpbmZvcm1hdGlvbiB1c2luZyBnaXQKKyAgYW5nbGVfZW5hYmxlX2NvbW1p
dF9pZCA9IHRydWUKIH0KIAogaWYgKGFuZ2xlX2J1aWxkX2FsbCkgewpAQCAtNTQsMTUgKzU3LDYg
QEAgaWYgKG96b25lX3BsYXRmb3JtX2dibSkgewogICB9CiB9CiAKLWFuZ2xlX2dpdF9pc19wcmVz
ZW50ID0gZXhlY19zY3JpcHQoInNyYy9jb21taXRfaWQucHkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImNoZWNrIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VfcGF0
aCgiLiIsIHJvb3RfYnVpbGRfZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIikKLQotYW5n
bGVfdXNlX2NvbW1pdF9pZCA9IGFuZ2xlX2dpdF9pc19wcmVzZW50ID09IDEKLQogaW1wb3J0KCJz
cmMvY29tcGlsZXIuZ25pIikKIGltcG9ydCgic3JjL2xpYkdMRVN2Mi5nbmkiKQogCkBAIC0xOTcs
MTcgKzE5MSwxMyBAQCBpZiAoX3VzZV9jb3B5X2NvbXBpbGVyX2RsbCkgewogICAgICAgZXhlY19z
Y3JpcHQoInNjcmlwdHMvZmlsZV9leGlzdHMucHkiLCBbIF9vbGRfY29tcGlsZXIgXSwgInZhbHVl
IikKIAogICBjb3B5KCJjb3B5X2NvbXBpbGVyX2RsbCIpIHsKLSAgICBzb3VyY2VzID0gWwotICAg
ICAgIiR3aW5kb3dzX3Nka19wYXRoL1JlZGlzdC9EM0QvJHRhcmdldF9jcHUvZDNkY29tcGlsZXJf
NDcuZGxsIiwKLSAgICBdCisgICAgc291cmNlcyA9IFsgIiR3aW5kb3dzX3Nka19wYXRoL1JlZGlz
dC9EM0QvJHRhcmdldF9jcHUvZDNkY29tcGlsZXJfNDcuZGxsIiBdCiAKICAgICBpZiAoX2hhc19v
bGRfY29tcGlsZXIpIHsKICAgICAgIHNvdXJjZXMgKz0gWyBfb2xkX2NvbXBpbGVyIF0KICAgICB9
CiAKLSAgICBvdXRwdXRzID0gWwotICAgICAgIiRyb290X291dF9kaXIve3tzb3VyY2VfZmlsZV9w
YXJ0fX0iLAotICAgIF0KKyAgICBvdXRwdXRzID0gWyAiJHJvb3Rfb3V0X2Rpci97e3NvdXJjZV9m
aWxlX3BhcnR9fSIgXQogICB9CiB9CiAKQEAgLTI2MywxMiArMjUzLDggQEAgYW5nbGVfc291cmNl
X3NldCgieHhoYXNoIikgewogCiBpZiAoYW5nbGVfaGFzX2J1aWxkKSB7CiAgIGZ1enplcl90ZXN0
KCJ4eGhhc2hfZnV6emVyIikgewotICAgIHNvdXJjZXMgPSBbCi0gICAgICAic3JjL2NvbW1vbi90
aGlyZF9wYXJ0eS94eGhhc2gveHhoYXNoX2Z1enplci5jcHAiLAotICAgIF0KLSAgICBkZXBzID0g
WwotICAgICAgIjp4eGhhc2giLAotICAgIF0KKyAgICBzb3VyY2VzID0gWyAic3JjL2NvbW1vbi90
aGlyZF9wYXJ0eS94eGhhc2gveHhoYXNoX2Z1enplci5jcHAiIF0KKyAgICBkZXBzID0gWyAiOnh4
aGFzaCIgXQogICB9CiB9CiAKQEAgLTI4MCw5ICsyNjYsNyBAQCBhbmdsZV9zdGF0aWNfbGlicmFy
eSgiYW5nbGVfY29tbW9uIikgewogICAgICI6ZGVidWdfYW5ub3RhdGlvbnNfY29uZmlnIiwKICAg
XQogCi0gIGRlcHMgPSBbCi0gICAgIjp4eGhhc2giLAotICBdCisgIGRlcHMgPSBbICI6eHhoYXNo
IiBdCiAKICAgcHVibGljX2RlcHMgPSBbCiAgICAgIjphbmdsZV9zeXN0ZW1fdXRpbHMiLApAQCAt
MzA0LDE3ICsyODgsMTMgQEAgY29uZmlnKCJhbmdsZV9pbWFnZV91dGlsX2NvbmZpZyIpIHsKIAog
YW5nbGVfc291cmNlX3NldCgiYW5nbGVfaW1hZ2VfdXRpbF9oZWFkZXJzIikgewogICBzb3VyY2Vz
ID0gbGliYW5nbGVfaW1hZ2VfdXRpbF9oZWFkZXJzCi0gIHB1YmxpY19kZXBzID0gWwotICAgICI6
YW5nbGVfY29tbW9uIiwKLSAgXQorICBwdWJsaWNfZGVwcyA9IFsgIjphbmdsZV9jb21tb24iIF0K
IH0KIAogYW5nbGVfc3RhdGljX2xpYnJhcnkoImFuZ2xlX2ltYWdlX3V0aWwiKSB7CiAgIHNvdXJj
ZXMgPSBsaWJhbmdsZV9pbWFnZV91dGlsX3NvdXJjZXMKICAgcHVibGljX2NvbmZpZ3MgKz0gWyAi
OmFuZ2xlX2ltYWdlX3V0aWxfY29uZmlnIiBdCi0gIHB1YmxpY19kZXBzID0gWwotICAgICI6YW5n
bGVfaW1hZ2VfdXRpbF9oZWFkZXJzIiwKLSAgXQorICBwdWJsaWNfZGVwcyA9IFsgIjphbmdsZV9p
bWFnZV91dGlsX2hlYWRlcnMiIF0KIH0KIAogY29uZmlnKCJhbmdsZV9nbF92aXNpYmlsaXR5X2Nv
bmZpZyIpIHsKQEAgLTM0Myw5ICszMjMsNyBAQCBhbmdsZV9zdGF0aWNfbGlicmFyeSgiYW5nbGVf
Z3B1X2luZm9fdXRpbCIpIHsKICAgICAiOmFuZ2xlX2dwdV9pbmZvX3V0aWxfY29uZmlnIiwKICAg
ICAiOmFuZ2xlX2JhY2tlbmRfY29uZmlnIiwKICAgXQotICBwdWJsaWNfZGVwcyA9IFsKLSAgICAi
OmFuZ2xlX2NvbW1vbiIsCi0gIF0KKyAgcHVibGljX2RlcHMgPSBbICI6YW5nbGVfY29tbW9uIiBd
CiAgIHNvdXJjZXMgPSBsaWJhbmdsZV9ncHVfaW5mb191dGlsX3NvdXJjZXMKICAgZGVwcyA9IFtd
CiAgIGxpYnMgPSBbXQpAQCAtNDA3LDkgKzM4NSw3IEBAIGFuZ2xlX3N0YXRpY19saWJyYXJ5KCJh
bmdsZV9ncHVfaW5mb191dGlsIikgewogCiBhbmdsZV9zb3VyY2Vfc2V0KCJhbmdsZV90cmFuc2xh
dG9yX2hlYWRlcnMiKSB7CiAgIHNvdXJjZXMgPSBhbmdsZV90cmFuc2xhdG9yX2V4cG9ydGVkX2hl
YWRlcnMKLSAgcHVibGljX2RlcHMgPSBbCi0gICAgIjppbmNsdWRlcyIsCi0gIF0KKyAgcHVibGlj
X2RlcHMgPSBbICI6aW5jbHVkZXMiIF0KIH0KIAogYW5nbGVfc3RhdGljX2xpYnJhcnkoInRyYW5z
bGF0b3IiKSB7CkBAIC00NjksMTggKzQ0NSwxNCBAQCBhbmdsZV9zdGF0aWNfbGlicmFyeSgidHJh
bnNsYXRvciIpIHsKIH0KIAogYW5nbGVfc291cmNlX3NldCgidHJhbnNsYXRvcl9mdXp6ZXIiKSB7
Ci0gIHNvdXJjZXMgPSBbCi0gICAgInNyYy9jb21waWxlci9mdXp6L3RyYW5zbGF0b3JfZnV6emVy
LmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgInNyYy9jb21waWxlci9mdXp6L3RyYW5zbGF0b3Jf
ZnV6emVyLmNwcCIgXQogCiAgIGluY2x1ZGVfZGlycyA9IFsKICAgICAiaW5jbHVkZSIsCiAgICAg
InNyYyIsCiAgIF0KIAotICBkZXBzID0gWwotICAgICI6dHJhbnNsYXRvciIsCi0gIF0KKyAgZGVw
cyA9IFsgIjp0cmFuc2xhdG9yIiBdCiB9CiAKIGNvbmZpZygiY29tbWl0X2lkX2NvbmZpZyIpIHsK
QEAgLTQ4OCw0NiArNDYwLDI5IEBAIGNvbmZpZygiY29tbWl0X2lkX2NvbmZpZyIpIHsKICAgdmlz
aWJpbGl0eSA9IFsgIjpjb21taXRfaWQiIF0KIH0KIAotY29tbWl0X2lkX291dHB1dF9maWxlID0g
IiRyb290X2dlbl9kaXIvYW5nbGUvaWQvY29tbWl0LmgiCi1pZiAoYW5nbGVfdXNlX2NvbW1pdF9p
ZCkgewotICBhY3Rpb24oImNvbW1pdF9pZCIpIHsKLSAgICBzY3JpcHQgPSAic3JjL2NvbW1pdF9p
ZC5weSIKLSAgICBvdXRwdXRzID0gWwotICAgICAgY29tbWl0X2lkX291dHB1dF9maWxlLAotICAg
IF0KK2NvbW1pdF9pZF9vdXRwdXRfZmlsZSA9ICIkcm9vdF9nZW5fZGlyL2FuZ2xlL2NvbW1pdC5o
IgorYWN0aW9uKCJjb21taXRfaWQiKSB7CisgIHNjcmlwdCA9ICJzcmMvY29tbWl0X2lkLnB5Igor
ICBvdXRwdXRzID0gWyBjb21taXRfaWRfb3V0cHV0X2ZpbGUgXQogCisgICMgQWRkIGdpdCBhcyBh
IGRlcGVuZGVuY3kgaWYgaXQgaXMgYXZhaWxhYmxlLgorICBpZiAoYW5nbGVfZW5hYmxlX2NvbW1p
dF9pZCAmJgorICAgICAgZXhlY19zY3JpcHQoInNyYy9jb21taXRfaWQucHkiLCBbICJjaGVjayIg
XSwgInZhbHVlIikgPT0gMSkgewogICAgICMgY29tbWl0IGlkIHNob3VsZCBkZXBlbmQgb24gYW5n
bGUncyBIRUFEIHJldmlzaW9uCi0gICAgaW5wdXRzID0gWwotICAgICAgIi5naXQvSEVBRCIsCi0g
ICAgXQorICAgIGlucHV0cyA9IFsgIi5naXQvSEVBRCIgXQorICB9CiAKLSAgICBhcmdzID0gWwot
ICAgICAgImdlbiIsCi0gICAgICByZWJhc2VfcGF0aCgiLiIsIHJvb3RfYnVpbGRfZGlyKSwKLSAg
ICAgIHJlYmFzZV9wYXRoKGNvbW1pdF9pZF9vdXRwdXRfZmlsZSwgcm9vdF9idWlsZF9kaXIpLAot
ICAgIF0KKyAgYXJncyA9IFsKKyAgICAiZ2VuIiwKKyAgICByZWJhc2VfcGF0aChjb21taXRfaWRf
b3V0cHV0X2ZpbGUsIHJvb3RfYnVpbGRfZGlyKSwKKyAgXQogCi0gICAgcHVibGljX2NvbmZpZ3Mg
PSBbICI6Y29tbWl0X2lkX2NvbmZpZyIgXQotICB9Ci19IGVsc2UgewotICBjb3B5KCJjb21taXRf
aWQiKSB7Ci0gICAgc291cmNlcyA9IFsKLSAgICAgICJzcmMvY29tbWl0LmgiLAotICAgIF0KLSAg
ICBvdXRwdXRzID0gWwotICAgICAgY29tbWl0X2lkX291dHB1dF9maWxlLAotICAgIF0KLSAgICBw
dWJsaWNfY29uZmlncyA9IFsgIjpjb21taXRfaWRfY29uZmlnIiBdCi0gIH0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICI6Y29tbWl0X2lkX2NvbmZpZyIgXQogfQogCiBhbmdsZV9zb3VyY2Vfc2V0KCJh
bmdsZV92ZXJzaW9uIikgewotICBzb3VyY2VzID0gWwotICAgICJzcmMvY29tbW9uL3ZlcnNpb24u
aCIsCi0gIF0KLSAgcHVibGljX2RlcHMgPSBbCi0gICAgIjpjb21taXRfaWQiLAotICBdCisgIHNv
dXJjZXMgPSBbICJzcmMvY29tbW9uL3ZlcnNpb24uaCIgXQorICBwdWJsaWNfZGVwcyA9IFsgIjpj
b21taXRfaWQiIF0KIH0KIAogY29uZmlnKCJhbmdsZV9iYWNrZW5kX2NvbmZpZyIpIHsKQEAgLTU3
MSw3ICs1MjYsOCBAQCBjb25maWcoImxpYkFOR0xFX2NvbmZpZyIpIHsKICAgZGVmaW5lcyArPSBb
ICJMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiIgXQogCiAgIGlmIChpc193aW4pIHsKLSAgICBjZmxh
Z3MgKz0gWyAiL3dkNDUzMCIgXSAgIyBDKysgZXhjZXB0aW9uIGhhbmRsZXIgdXNlZCwgYnV0IHVu
d2luZCBzZW1hbnRpY3MgYXJlIG5vdCBlbmFibGVkLgorICAgIGNmbGFncyArPSBbICIvd2Q0NTMw
IiBdICAjIEMrKyBleGNlcHRpb24gaGFuZGxlciB1c2VkLCBidXQgdW53aW5kIHNlbWFudGljcwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFyZSBub3QgZW5hYmxlZC4KICAgfQogCiAg
IGlmIChpc19hbmRyb2lkICYmIChhbmdsZV9lbmFibGVfZ2wgfHwgYW5nbGVfZW5hYmxlX3Z1bGth
bikpIHsKQEAgLTcyMywxMiArNjc5LDE0IEBAIGFuZ2xlX3NvdXJjZV9zZXQoImxpYkFOR0xFX2Jh
c2UiKSB7CiAgICAgICBzb3VyY2VzICs9IGxpYmFuZ2xlX2dsX2VnbF9kbF9zb3VyY2VzCiAgICAg
ICBzb3VyY2VzICs9IGxpYmFuZ2xlX2dsX2VnbF9hbmRyb2lkX3NvdXJjZXMKICAgICB9CisgICAg
aWYgKGlzX2xpbnV4KSB7CisgICAgICBzb3VyY2VzICs9IGxpYmFuZ2xlX2dsX2VnbF9zb3VyY2Vz
CisgICAgICBzb3VyY2VzICs9IGxpYmFuZ2xlX2dsX2VnbF9kbF9zb3VyY2VzCisgICAgfQogICAg
IGlmIChvem9uZV9wbGF0Zm9ybV9nYm0pIHsKICAgICAgIGNvbmZpZ3MgKz0gWyAiOmxpYmRybSIg
XQogICAgICAgZGVmaW5lcyArPSBbICJBTkdMRV9VU0VfT1pPTkUiIF0KICAgICAgIGRlcHMgKz0g
WyAiLy90aGlyZF9wYXJ0eS9taW5pZ2JtIiBdCi0gICAgICBzb3VyY2VzICs9IGxpYmFuZ2xlX2ds
X2VnbF9zb3VyY2VzCi0gICAgICBzb3VyY2VzICs9IGxpYmFuZ2xlX2dsX2VnbF9kbF9zb3VyY2Vz
CiAgICAgICBzb3VyY2VzICs9IGxpYmFuZ2xlX2dsX296b25lX3NvdXJjZXMKICAgICB9CiAgIH0K
QEAgLTc1NCw5ICs3MTIsNyBAQCBhbmdsZV9zb3VyY2Vfc2V0KCJsaWJBTkdMRV9iYXNlIikgewog
ICAjIFdpbmRvd3MgQVJNNjQgaXMgYXZhaWxhYmxlIHNpbmNlIDEwLjAuMTYyOTkgc28gbm8gbmVl
ZCB0byBjb3B5CiAgICMgZDNkY29tcGlsZXJfNDcuZGxsIGJlY2F1c2UgdGhpcyBmaWxlIGlzIGF2
YWlsYWJsZSBhcyBpbmJveC4KICAgaWYgKF91c2VfY29weV9jb21waWxlcl9kbGwpIHsKLSAgICBk
YXRhX2RlcHMgPSBbCi0gICAgICAiOmNvcHlfY29tcGlsZXJfZGxsIiwKLSAgICBdCisgICAgZGF0
YV9kZXBzID0gWyAiOmNvcHlfY29tcGlsZXJfZGxsIiBdCiAgIH0KIH0KIApAQCAtNzY5LDEzICs3
MjUsOSBAQCBjb25maWcoImFuZ2xlX2ZyYW1lX2NhcHR1cmVfZW5hYmxlZCIpIHsKIH0KIAogYW5n
bGVfc291cmNlX3NldCgibGliQU5HTEUiKSB7Ci0gIHB1YmxpY19kZXBzID0gWwotICAgICI6bGli
QU5HTEVfYmFzZSIsCi0gIF0KKyAgcHVibGljX2RlcHMgPSBbICI6bGliQU5HTEVfYmFzZSIgXQog
ICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmdsZV9mcmFtZV9jYXB0dXJlX2Rpc2FibGVkIiBdCi0g
IHNvdXJjZXMgPSBbCi0gICAgInNyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmVfbW9jay5jcHAiLAot
ICBdCisgIHNvdXJjZXMgPSBbICJzcmMvbGliQU5HTEUvRnJhbWVDYXB0dXJlX21vY2suY3BwIiBd
CiAKICAgIyBnbF9lbnVtX3V0aWxzIGRlZmF1bHRzIGluY2x1ZGVkIGluIHdpdGhfY2FwdHVyZSBi
dWlsZAogICBkZXBzID0gW10KQEAgLTc4NSwxOSArNzM3LDI4IEBAIGFuZ2xlX3NvdXJjZV9zZXQo
ImxpYkFOR0xFIikgewogfQogCiBhbmdsZV9zb3VyY2Vfc2V0KCJhbmdsZV9nbF9lbnVtX3V0aWxz
IikgewotICBwdWJsaWNfZGVwcyA9IFsKLSAgICAiOmxpYkFOR0xFX2Jhc2UiLAotICBdCisgIHB1
YmxpY19kZXBzID0gWyAiOmxpYkFOR0xFX2Jhc2UiIF0KICAgc291cmNlcyA9IFsKICAgICAic3Jj
L2xpYkFOR0xFL2dsX2VudW1fdXRpbHMuY3BwIiwKICAgICAic3JjL2xpYkFOR0xFL2dsX2VudW1f
dXRpbHNfYXV0b2dlbi5jcHAiLAogICBdCiB9CiAKLWFuZ2xlX3NvdXJjZV9zZXQoImxpYkFOR0xF
X3dpdGhfY2FwdHVyZSIpIHsKLSAgcHVibGljX2RlcHMgPSBbCi0gICAgIjpsaWJBTkdMRV9iYXNl
IiwKK2NvbmZpZygiYW5nbGVfY29tcHJlc3Npb25fY29uZmlnIikgeworICBpbmNsdWRlX2RpcnMg
PSBbICIvL3RoaXJkX3BhcnR5L3psaWIvZ29vZ2xlIiBdCit9CisKK2dyb3VwKCJhbmdsZV9jb21w
cmVzc2lvbiIpIHsKKyAgcHVibGljX2NvbmZpZ3MgPSBbCisgICAgIjphbmdsZV9jb21wcmVzc2lv
bl9jb25maWciLAorICAgICIvL3RoaXJkX3BhcnR5L3psaWI6emxpYl9jb25maWciLAogICBdCisg
IHB1YmxpY19kZXBzID0gWyAiLy90aGlyZF9wYXJ0eS96bGliL2dvb2dsZTpjb21wcmVzc2lvbl91
dGlsc19wb3J0YWJsZSIgXQorfQorCithbmdsZV9zb3VyY2Vfc2V0KCJsaWJBTkdMRV93aXRoX2Nh
cHR1cmUiKSB7CisgIHB1YmxpY19kZXBzID0gWyAiOmxpYkFOR0xFX2Jhc2UiIF0KKyAgZGVwcyA9
IFsgIjphbmdsZV9jb21wcmVzc2lvbiIgXQogICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmdsZV9m
cmFtZV9jYXB0dXJlX2VuYWJsZWQiIF0KICAgc291cmNlcyA9IGxpYmFuZ2xlX2NhcHR1cmVfc291
cmNlcwogfQpAQCAtODEwLDYgKzc3MSwxNiBAQCBjb25maWcoInNoYXJlZF9saWJyYXJ5X3B1Ymxp
Y19jb25maWciKSB7CiAgICAgICAiLXJwYXRoIiwKICAgICAgICJAZXhlY3V0YWJsZV9wYXRoLyIs
CiAgICAgXQorICAgIGlmIChidWlsZF93aXRoX2Nocm9taXVtKSB7CisgICAgICBsZGZsYWdzICs9
IFsKKyAgICAgICAgIyBQYXRoIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMgZm9yIHVuYnVu
ZGxlZCBiaW5hcmllcy4KKyAgICAgICAgIyBGcm9tIC8vYnVpbGQvY29uZmlnL21hYy9CVUlMRC5n
biwgdGhpcyBpcyBvbmx5IGFkZGVkIGZvcgorICAgICAgICAjIGNvbXBvbmVudCBidWlsZHMuIEhv
d2V2ZXIsIHNpbmNlIEFOR0xFIGFsd2F5cyBkeW5hbWljYWxseQorICAgICAgICAjIGxpbmtzIHRv
IGxpYnZ1bGthbiwgaXQgc2hvdWxkIGJlIHJlLWFkZGVkIGZvciBub24tY29tcG9uZW50CisgICAg
ICAgICMgYnVpbGRzLiAoYW5nbGVidWcuY29tLzQ0NTUpCisgICAgICAgICItV2wsLXJwYXRoLEBs
b2FkZXJfcGF0aC8uIiwKKyAgICAgIF0KKyAgICB9CiAgIH0KIAogICBpZiAoYW5nbGVfaXNfd2lu
dXdwKSB7CkBAIC04MjQsMTAgKzc5NSwxNyBAQCBjb25maWcoInNoYXJlZF9saWJyYXJ5X3B1Ymxp
Y19jb25maWciKSB7CiB9CiAKIGNvbmZpZygibGlicmFyeV9uYW1lX2NvbmZpZyIpIHsKLSAgZGVm
aW5lcyA9IFsKLSAgICAiQU5HTEVfRUdMX0xJQlJBUllfTkFNRT1cImxpYkVHTCR7YW5nbGVfbGli
c19zdWZmaXh9XCIiLAotICAgICJBTkdMRV9HTEVTVjJfTElCUkFSWV9OQU1FPVwibGliR0xFU3Yy
JHthbmdsZV9saWJzX3N1ZmZpeH1cIiIsCi0gIF0KKyAgaWYgKGlzX2NvbXBvbmVudF9idWlsZCAm
JiBpc19hbmRyb2lkKSB7CisgICAgZGVmaW5lcyA9IFsKKyAgICAgICJBTkdMRV9FR0xfTElCUkFS
WV9OQU1FPVwibGliRUdMJHthbmdsZV9saWJzX3N1ZmZpeH0uY3JcIiIsCisgICAgICAiQU5HTEVf
R0xFU1YyX0xJQlJBUllfTkFNRT1cImxpYkdMRVN2MiR7YW5nbGVfbGlic19zdWZmaXh9LmNyXCIi
LAorICAgIF0KKyAgfSBlbHNlIHsKKyAgICBkZWZpbmVzID0gWworICAgICAgIkFOR0xFX0VHTF9M
SUJSQVJZX05BTUU9XCJsaWJFR0wke2FuZ2xlX2xpYnNfc3VmZml4fVwiIiwKKyAgICAgICJBTkdM
RV9HTEVTVjJfTElCUkFSWV9OQU1FPVwibGliR0xFU3YyJHthbmdsZV9saWJzX3N1ZmZpeH1cIiIs
CisgICAgXQorICB9CiB9CiAKICMgVGhpcyBjb25maWcgY29udHJvbHMgZXhwb3J0IGRlZmluaXRp
b25zIG9uIEFOR0xFIEFQSSBjYWxscy4KQEAgLTg2NiwzNSArODQ0LDI1IEBAIHRlbXBsYXRlKCJh
bmdsZV9saWJHTEVTdjIiKSB7CiAKICAgICBkZXBzID0gaW52b2tlci5kZXBzICsgWyAiOmluY2x1
ZGVzIiBdCiAKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAgICI6YW5nbGVfdmVyc2lvbiIsCi0g
ICAgXQorICAgIHB1YmxpY19kZXBzID0gWyAiOmFuZ2xlX3ZlcnNpb24iIF0KICAgfQogfQogCiBh
bmdsZV9saWJHTEVTdjIoImxpYkdMRVN2MiIpIHsKICAgaWYgKGFuZ2xlX3dpdGhfY2FwdHVyZV9i
eV9kZWZhdWx0KSB7Ci0gICAgZGVwcyA9IFsKLSAgICAgICI6bGliQU5HTEVfd2l0aF9jYXB0dXJl
IiwKLSAgICBdCisgICAgZGVwcyA9IFsgIjpsaWJBTkdMRV93aXRoX2NhcHR1cmUiIF0KICAgfSBl
bHNlIHsKLSAgICBkZXBzID0gWwotICAgICAgIjpsaWJBTkdMRSIsCi0gICAgXQorICAgIGRlcHMg
PSBbICI6bGliQU5HTEUiIF0KICAgfQogfQogCiAjIE91dHB1dCBjYXB0dXJlIGxpYiB3aGVuIGBh
bmdsZV93aXRoX2NhcHR1cmVfYnlfZGVmYXVsdGAgZGlzYWJsZWQsIHZpY2UgdmVyc2EuCiBhbmds
ZV9saWJHTEVTdjIoImxpYkdMRVN2Ml9jYXB0dXJlX2NvbXBsZW1lbnQiKSB7CiAgIGlmIChhbmds
ZV93aXRoX2NhcHR1cmVfYnlfZGVmYXVsdCkgewotICAgIGRlcHMgPSBbCi0gICAgICAiOmxpYkFO
R0xFIiwKLSAgICBdCisgICAgZGVwcyA9IFsgIjpsaWJBTkdMRSIgXQogICAgIG91dHB1dF9uYW1l
ICs9ICJfbm9fY2FwdHVyZSIKICAgfSBlbHNlIHsKLSAgICBkZXBzID0gWwotICAgICAgIjpsaWJB
TkdMRV93aXRoX2NhcHR1cmUiLAotICAgIF0KKyAgICBkZXBzID0gWyAiOmxpYkFOR0xFX3dpdGhf
Y2FwdHVyZSIgXQogICAgIG91dHB1dF9uYW1lICs9ICJfd2l0aF9jYXB0dXJlIgogICB9CiB9CkBA
IC05MjIsOSArODkwLDcgQEAgaWYgKGlzX3dpbiAmJiAhYW5nbGVfaXNfd2ludXdwKSB7CiAgICAg
ICAiOmxpYkFOR0xFIiwKICAgICBdCiAKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAgICI6YW5n
bGVfdmVyc2lvbiIsCi0gICAgXQorICAgIHB1YmxpY19kZXBzID0gWyAiOmFuZ2xlX3ZlcnNpb24i
IF0KICAgfQogfQogCkBAIC05MzIsMTIgKzg5OCw4IEBAIGFuZ2xlX3N0YXRpY19saWJyYXJ5KCJs
aWJHTEVTdjJfc3RhdGljIikgewogICBzb3VyY2VzID0gbGliZ2xlc3YyX3NvdXJjZXMKICAgY29u
ZmlncyArPSBbICI6ZGVidWdfYW5ub3RhdGlvbnNfY29uZmlnIiBdCiAgIHB1YmxpY19jb25maWdz
ICs9IFsgIjphbmdsZV9zdGF0aWMiIF0KLSAgZGVwcyA9IFsKLSAgICAiOmluY2x1ZGVzIiwKLSAg
XQotICBwdWJsaWNfZGVwcyA9IFsKLSAgICAiOmxpYkFOR0xFIiwKLSAgXQorICBkZXBzID0gWyAi
OmluY2x1ZGVzIiBdCisgIHB1YmxpY19kZXBzID0gWyAiOmxpYkFOR0xFIiBdCiB9CiAKIGFuZ2xl
X3NoYXJlZF9saWJyYXJ5KCJsaWJHTEVTdjFfQ00iKSB7CkBAIC05ODMsOSArOTQ1LDcgQEAgYW5n
bGVfc291cmNlX3NldCgibGliRUdMX2VnbF9sb2FkZXIiKSB7CiAgICAgIjpnbF9wcm90b3R5cGVz
IiwKICAgXQogCi0gIGRlcHMgPSBbCi0gICAgIjppbmNsdWRlcyIsCi0gIF0KKyAgZGVwcyA9IFsg
IjppbmNsdWRlcyIgXQogfQogCiBhbmdsZV9zaGFyZWRfbGlicmFyeSgibGliRUdMIikgewpAQCAt
MTAxNSwxMyArOTc1LDkgQEAgYW5nbGVfc2hhcmVkX2xpYnJhcnkoImxpYkVHTCIpIHsKICAgICAi
OmxpYkVHTF9lZ2xfbG9hZGVyIiwKICAgXQogCi0gIHB1YmxpY19kZXBzID0gWwotICAgICI6aW5j
bHVkZXMiLAotICBdCisgIHB1YmxpY19kZXBzID0gWyAiOmluY2x1ZGVzIiBdCiAKLSAgZGF0YV9k
ZXBzID0gWwotICAgICI6bGliR0xFU3YyIiwKLSAgXQorICBkYXRhX2RlcHMgPSBbICI6bGliR0xF
U3YyIiBdCiB9CiAKIGFuZ2xlX3N0YXRpY19saWJyYXJ5KCJsaWJFR0xfc3RhdGljIikgewpAQCAt
MTA0NSwxMyArMTAwMSw5IEBAIGFuZ2xlX3N0YXRpY19saWJyYXJ5KCJsaWJFR0xfc3RhdGljIikg
ewogYW5nbGVfZXhlY3V0YWJsZSgiYW5nbGVfc2hhZGVyX3RyYW5zbGF0b3IiKSB7CiAgIHRlc3Rv
bmx5ID0gdHJ1ZQogCi0gIHNvdXJjZXMgPSBbCi0gICAgInNhbXBsZXMvc2hhZGVyX3RyYW5zbGF0
b3Ivc2hhZGVyX3RyYW5zbGF0b3IuY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAic2FtcGxlcy9z
aGFkZXJfdHJhbnNsYXRvci9zaGFkZXJfdHJhbnNsYXRvci5jcHAiIF0KIAotICBkZXBzID0gWwot
ICAgICI6dHJhbnNsYXRvciIsCi0gIF0KKyAgZGVwcyA9IFsgIjp0cmFuc2xhdG9yIiBdCiB9CiAK
IGlmIChhbmdsZV9oYXNfYnVpbGQpIHsKQEAgLTExMjUsOSArMTA3Nyw3IEBAIGlmICghaXNfY29t
cG9uZW50X2J1aWxkICYmIGlzX2FuZHJvaWQgJiYgc3ltYm9sX2xldmVsICE9IDApIHsKICAgICAg
IH0KICAgICB9CiAKLSAgICBvdXRwdXRzID0gWwotICAgICAgIiRyb290X291dF9kaXIvbGliLmNv
bXByZXNzZWQve3tzb3VyY2VfZmlsZV9wYXJ0fX0iLAotICAgIF0KKyAgICBvdXRwdXRzID0gWyAi
JHJvb3Rfb3V0X2Rpci9saWIuY29tcHJlc3NlZC97e3NvdXJjZV9maWxlX3BhcnR9fSIgXQogCiAg
ICAgYW5kcm9pZF9ubSA9ICIke2FuZHJvaWRfdG9vbF9wcmVmaXh9bm0iCiAgICAgYW5kcm9pZF9z
dHJpcCA9ICIke2FuZHJvaWRfdG9vbF9wcmVmaXh9c3RyaXAiCkBAIC0xMTU2LDE2ICsxMTA2LDE0
IEBAIGlmIChidWlsZF93aXRoX2Nocm9taXVtICYmICFpc19jb21wb25lbnRfYnVpbGQgJiYgaXNf
YW5kcm9pZCAmJgogICB9CiAKICAgZ3JvdXAoImFuZ2xlX2Fwa3MiKSB7Ci0gICAgZGVwcyA9IFsK
LSAgICAgICI6YW5nbGVfY2hyb21pdW1fYXBrIiwKLSAgICBdCisgICAgZGVwcyA9IFsgIjphbmds
ZV9jaHJvbWl1bV9hcGsiIF0KICAgfQogfQogCiBncm91cCgiYW5nbGUiKSB7CiAgIGRhdGFfZGVw
cyA9IFsKKyAgICAiOmxpYkVHTCIsCiAgICAgIjpsaWJHTEVTdjFfQ00iLAogICAgICI6bGliR0xF
U3YyIiwKLSAgICAiOmxpYkVHTCIsCiAgIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0NPTlRSSUJVVE9SUyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NPTlRSSUJV
VE9SUwppbmRleCBiNjc3OTdiYzZmZjQwZTU1NWI1YmYyMmFlY2RkOWEwNzJiMzM1OGQ4Li5hMzBl
ZWFlYjc3NDI1NGU1NzM3YzY4Y2VhYjMwNmIxNGFhZDI0NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvQ09OVFJJQlVUT1JTCkBAIC0xNjIsMTUgKzE2MiwyMyBAQCBTYW1zdW5nIEVsZWN0cm9uaWNz
LCBJbmMuCiAgS3llb25nbWluIEtpbQogIE1pbmt5dSBKZW9uZwogIE1vaGFuIE1haXlhCisgUGV0
ZXIgTW93cnkKICBTYW5nd29uIFBhcmsKIAogQXJtIEx0ZC4KICBGZWkgWWFuZwogIFhpbnlpIEhl
CiAgU3VubnkgU3VuCisgWGlhb3h1YW4gTGl1CisgQW5jaGVuZyBRaWFvCisgQW15IExpdQorIEpp
YW4gTGkKIAogQnJvYWRjb20gSW5jLgogIEdhcnkgU3dlZXQKIAogRmFjZWJvb2ssIEluYy4KICBB
cnRlbSBCb2xnYXIKKworVGhlIEtocm9ub3MgR3JvdXAsIEluYy4KKyBBbGV4ZXkgS255YXpldgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29tcGlsZXIuY21ha2UgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9Db21waWxlci5jbWFrZQppbmRleCBhYzFjMDRhMWUxYzE2Njlk
MDc4MWEzNjY3YThmODI1MjE5YzkwZTEwLi4yZmZlNmRmZWQ3NWIwMTExNjEzYWM2YmZkZDdlOWVk
ODIzNWFmZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db21waWxlci5j
bWFrZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db21waWxlci5jbWFrZQpAQCAtMTUz
LDYgKzE1Myw4IEBAIHNldChhbmdsZV90cmFuc2xhdG9yX3NvdXJjZXMKICAgICAic3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmgiCiAgICAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUFycmF5TGVuZ3RoTWV0aG9kLmNw
cCIKICAgICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXJyYXlMZW5n
dGhNZXRob2QuaCIKKyAgICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3Zl
QXRvbWljQ291bnRlckJ1aWx0aW5zLmNwcCIKKyAgICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
dHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zLmgiCiAgICAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAiCiAgICAgInNy
Yy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUR5bmFtaWNJbmRleGluZy5oIgog
ICAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVJbmFjdGl2ZUludGVy
ZmFjZVZhcmlhYmxlcy5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9E
RVBTIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwppbmRleCBlNzU1NTc5OWNhN2YzY2E2
YzI0MjlmZDdhM2FiMGFjZjJmMjhkZDQ4Li5hYTY5MjljZmNiMGFmZjE1YzU5NDRkYTFmYTkxYzc1
YmIxY2I1ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9ERVBTCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0RFUFMKQEAgLTE5LDEzICsxOSwxMyBAQCB2YXJzID0g
ewogICAnY2hlY2tvdXRfYW5nbGVfaW50ZXJuYWwnOiBGYWxzZSwKIAogICAjIFZlcnNpb24gb2Yg
Q2hyb21pdW0gb3VyIENocm9taXVtLWJhc2VkIERFUFMgYXJlIG1pcnJvcmVkIGZyb20uCi0gICdj
aHJvbWl1bV9yZXZpc2lvbic6ICc4ZmZiMThkMGI5ODM1MzJjNmMyNjM5ZGU2N2IyZWZjOTNiNGRm
MmQzJywKKyAgJ2Nocm9taXVtX3JldmlzaW9uJzogJ2ZhOWQ1ODA1YzQyMTEzM2U5ZDEzY2Y2OThj
NDUwMmQxMzM5OGIyY2UnLAogCiAgICMgQ3VycmVudCByZXZpc2lvbiBvZiBWSy1HTC1DVFMgKGEu
ay5hIGRFUVApLgotICAndmtfZ2xfY3RzX3JldmlzaW9uJzogJ2Q5OWE3NjVkMzhkMzVkZWViM2Yy
N2NmMzBkOWQ2ZmU0ZjE4MzUxMGUnLAorICAndmtfZ2xfY3RzX3JldmlzaW9uJzogJ2E2YjI0OTgx
OWY3MTc3ODIxZDRiN2VlZmZmMzZhZjA3ZmVmNzE4MjUnLAogCiAgICMgQ3VycmVudCByZXZpc2lv
biBvZiBnbHNsYW5nLCB0aGUgS2hyb25vcyBTUElSViBjb21waWxlci4KLSAgJ2dsc2xhbmdfcmV2
aXNpb24nOiAnNWU4NmIyOGZmYjgxMjRhNWVlMmE1OGM2NDAyNDVlZTViMjg1MTEwZCcsCisgICdn
bHNsYW5nX3JldmlzaW9uJzogJzk5NTA4YzFjZTM4OWU2NzhhNzliMDAxNTlmZTBjMGQxM2YwOGYy
MTMnLAogCiAgICMgQ3VycmVudCByZXZpc2lvbiBvZiBnb29nbGV0ZXN0LgogICAjIE5vdGU6IHRo
aXMgZGVwIGNhbm5vdCBiZSBhdXRvLXJvbGxlZCBiL2Mgb2YgbmVzdGluZy4KQEAgLTQzLDIyICs0
MywyMiBAQCB2YXJzID0gewogICAnc3BpcnZfY3Jvc3NfcmV2aXNpb24nOiAnZmQ1YWEzYWQ1MWVj
ZTU1YTFiNTFmZTZiZmIyNzFkYjY4NDRhZTI5MScsCiAKICAgIyBDdXJyZW50IHJldmlzaW9uIGZv
IHRoZSBTUElSVi1IZWFkZXJzIFZ1bGthbiBzdXBwb3J0IGxpYnJhcnkuCi0gICdzcGlydl9oZWFk
ZXJzX3JldmlzaW9uJzogJ2RjNzcwMzBhY2M5YzZmZTdjYTIxZmZmNTRjNWE5ZDdiNTMyZDdkYTYn
LAorICAnc3BpcnZfaGVhZGVyc19yZXZpc2lvbic6ICdmOGJmMTFhMDI1M2EzMjM3NWMzMmNhZDky
Yzg0MTIzN2I5NjY5NmMwJywKIAogICAjIEN1cnJlbnQgcmV2aXNpb24gb2YgU1BJUlYtVG9vbHMg
Zm9yIFZ1bGthbi4KLSAgJ3NwaXJ2X3Rvb2xzX3JldmlzaW9uJzogJzdhMmQ0MDhkZWE2MGFhMWY4
ZDUzZTEyM2IwMTI3N2M0MWI4ZjgzYjknLAorICAnc3BpcnZfdG9vbHNfcmV2aXNpb24nOiAnZmQ3
NzNlYjUwZDYyOGMxOTgxMzM4YWRkYzA5M2RmODc5NzU3YzJjZicsCiAKICAgIyBDdXJyZW50IHJl
dmlzaW9uIG9mIEtocm9ub3MgVnVsa2FuLUhlYWRlcnMuCi0gICd2dWxrYW5faGVhZGVyc19yZXZp
c2lvbic6ICc3MjY0MzU4NzAyMDYxZDNlZDgxOWQ2MmQzZDZmZDY2YWIxZGEzM2MzJywKKyAgJ3Z1
bGthbl9oZWFkZXJzX3JldmlzaW9uJzogJzBlNzhmZmQxZGNmYzNlOWYxNGE5NjZiOTY2MGRiYzU5
YmQ5NjdjNWMnLAogCiAgICMgQ3VycmVudCByZXZpc2lvbiBvZiBLaHJvbm9zIFZ1bGthbi1Mb2Fk
ZXIuCi0gICd2dWxrYW5fbG9hZGVyX3JldmlzaW9uJzogJ2ZiOTRjY2RkYjcyNTUxNjI0MzY0NDIw
NmFiMDdmMGI4MmUxZjBhNWUnLAorICAndnVsa2FuX2xvYWRlcl9yZXZpc2lvbic6ICdjYzQ4MWVm
Mjc2MzE1ZDU0ZGI0MzgxYjJkNWRmZmFjMmI1ODI0Y2JmJywKIAogICAjIEN1cnJlbnQgcmV2aXNp
b24gb2YgS2hyb25vcyBWdWxrYW4tVG9vbHMuCi0gICd2dWxrYW5fdG9vbHNfcmV2aXNpb24nOiAn
MjYwNjc5NjA1Zjk4NDNhZTJjZjA2Y2ZjMGU0NGRjMGQyNWJlNzFiOScsCisgICd2dWxrYW5fdG9v
bHNfcmV2aXNpb24nOiAnYmVjN2I2ZTI5MjYwY2FhOTM0OGIxZmQ0MmI1ZDY1NDQzZDUxMjc0OCcs
CiAKICAgIyBDdXJyZW50IHJldmlzaW9uIG9mIEtocm9ub3MgVnVsa2FuLVZhbGlkYXRpb25MYXll
cnMuCi0gICd2dWxrYW5fdmFsaWRhdGlvbl9yZXZpc2lvbic6ICdlODVmZTRjM2NjOWY2YzEyZDg4
N2QyZWY5MTIyNDEyNDFlMGY1ZmZhJywKKyAgJ3Z1bGthbl92YWxpZGF0aW9uX3JldmlzaW9uJzog
JzU1ZjAxOTUzZDZlOWQ2ZGI2MjVmNTdiZWJiYmM3YTM2YTEzMmFkODgnLAogCiAgICMgVGhyZWUg
bGluZXMgb2Ygbm9uLWNoYW5naW5nIGNvbW1lbnRzIHNvIHRoYXQKICAgIyB0aGUgY29tbWl0IHF1
ZXVlIGNhbiBoYW5kbGUgQ0xzIHJvbGxpbmcgY2F0YXB1bHQKQEAgLTY5LDE3ICs2OSwxNyBAQCB2
YXJzID0gewogZGVwcyA9IHsKIAogICAnYnVpbGQnOiB7Ci0gICAgJ3VybCc6ICd7Y2hyb21pdW1f
Z2l0fS9jaHJvbWl1bS9zcmMvYnVpbGQuZ2l0QGU1MjkzZDhmYTI4ODlhMjQwYmY0NzQyODM2OWNh
ZjBkOWUyZjNkYzcnLAorICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hyb21pdW0vc3JjL2J1
aWxkLmdpdEBhMWNiZjY0NjlhNTQwMGYyYjQ1NWZmYmEyZTk1ZWE0N2ExYjQ3Yzk0JywKICAgICAn
Y29uZGl0aW9uJzogJ25vdCBidWlsZF93aXRoX2Nocm9taXVtJywKICAgfSwKIAogICAnYnVpbGR0
b29scyc6IHsKLSAgICAndXJsJzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy9idWlsZHRv
b2xzLmdpdEBhZmM1Yjc5OGM3MjkwNWU4NWY5OTkxMTUyYmU4Nzg3MTRjNTc5OTU4JywKKyAgICAn
dXJsJzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy9idWlsZHRvb2xzLmdpdEA0MTY0YTMw
NTYyNjc4NmIxOTEyZDQ2NzAwM2FjZjRjNDk5NWJlYzdkJywKICAgICAnY29uZGl0aW9uJzogJ25v
dCBidWlsZF93aXRoX2Nocm9taXVtJywKICAgfSwKIAogICAndGVzdGluZyc6IHsKLSAgICAndXJs
JzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy90ZXN0aW5nQGNmNmVkNDZjZmZlYzM3Mjg1
ZmI1ZDhhY2MxY2NlNTlkYTk2N2NlY2EnLAorICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hy
b21pdW0vc3JjL3Rlc3RpbmdAM2UyMWVlYzUzYzE2ODgzMDJlYmMyNmU5NzVkMDE2MzI1NmJkMWEx
NScsCiAgICAgJ2NvbmRpdGlvbic6ICdub3QgYnVpbGRfd2l0aF9jaHJvbWl1bScsCiAgIH0sCiAK
QEAgLTExNSw3ICsxMTUsNyBAQCBkZXBzID0gewogICB9LAogCiAgICd0aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0JzogewotICAgICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hyb21pdW0vc3JjL3RoaXJk
X3BhcnR5L2dvb2dsZXRlc3RAYzgzZjk5ZTEwY2ZmN2Q5MDE5MGEyMmE3OWYyOTRlYTllMzQwZjRl
NicsCisgICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0fS9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkv
Z29vZ2xldGVzdEBjOTZkYzMyMTEwMWU3YzlmNWJhMTZkOTU3YWZkNDllZTRkYjMwNTQ4JywKICAg
ICAnY29uZGl0aW9uJzogJ25vdCBidWlsZF93aXRoX2Nocm9taXVtJywKICAgfSwKIApAQCAtMTgy
LDcgKzE4Miw3IEBAIGRlcHMgPSB7CiAgIH0sCiAKICAgJ3RoaXJkX3BhcnR5L1N3aWZ0U2hhZGVy
JzogewotICAgICd1cmwnOiAne3N3aWZ0c2hhZGVyX2dpdH0vU3dpZnRTaGFkZXJANDFhNzMwMmU5
YzYyYzIwN2U1YWM1YmNjZTQwZjE2YTFlNDE4YzQyYicsCisgICAgJ3VybCc6ICd7c3dpZnRzaGFk
ZXJfZ2l0fS9Td2lmdFNoYWRlckAwMmUxNWIyNDliMTJmZTRlMWNhNWUzMDNhNWEwZGUwNjY4OTUw
NTM2JywKICAgICAnY29uZGl0aW9uJzogJ25vdCBidWlsZF93aXRoX2Nocm9taXVtJywKICAgfSwK
IApAQCAtMjAzLDE3ICsyMDMsMTcgQEAgZGVwcyA9IHsKICAgfSwKIAogICAndGhpcmRfcGFydHkv
eWFzbSc6IHsKLSAgICAndXJsJzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy90aGlyZF9w
YXJ0eS95YXNtQDBkMDEzNDc4OWE3ZGY0N2RhOWVjNjRmYjkzNzg0OTU3MWY1OGJkYjQnLAorICAg
ICd1cmwnOiAne2Nocm9taXVtX2dpdH0vY2hyb21pdW0vc3JjL3RoaXJkX3BhcnR5L3lhc21AOGU0
ZTU0OGQwYjE5OWRmNTg3NDAzMzYwMjRjMWIzYmFmN2MwYWJkNycsCiAgICAgJ2NvbmRpdGlvbic6
ICdub3QgYnVpbGRfd2l0aF9jaHJvbWl1bScsCiAgIH0sCiAKICAgJ3RoaXJkX3BhcnR5L3psaWIn
OiB7Ci0gICAgJ3VybCc6ICd7Y2hyb21pdW1fZ2l0fS9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkv
emxpYkBiOWI5YTVhZjdjY2EyZTY4M2U1ZjJhZWFkODQxOGU1YmY5ZDVhN2Q1JywKKyAgICAndXJs
JzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS96bGliQDE1NmJlOGM1
MmY4MGNkZTM0MzA4OGI0YTY5YTgwNTc5MTAxYjZlNjcnLAogICAgICdjb25kaXRpb24nOiAnbm90
IGJ1aWxkX3dpdGhfY2hyb21pdW0nLAogICB9LAogCiAgICd0b29scy9jbGFuZyc6IHsKLSAgICAn
dXJsJzogJ3tjaHJvbWl1bV9naXR9L2Nocm9taXVtL3NyYy90b29scy9jbGFuZy5naXRAOTUzZWE3
YWZmOGMxMmRiZDAxNWYxOTNkNTJlNWFiZjI3NmQ0MWU4NScsCisgICAgJ3VybCc6ICd7Y2hyb21p
dW1fZ2l0fS9jaHJvbWl1bS9zcmMvdG9vbHMvY2xhbmcuZ2l0QGQ2MGE2YTgwODQzMDBlYjhkZTk5
ZTU2YjU1OTM2OWRjZGU0Y2ZmYTQnLAogICAgICdjb25kaXRpb24nOiAnbm90IGJ1aWxkX3dpdGhf
Y2hyb21pdW0nLAogICB9LAogCkBAIC00MjIsNyArNDIyLDcgQEAgaG9va3MgPSBbCiAgICAgICAg
ICAgICAgICAgJy0tcmVjdXJzaXZlJywKICAgICAgICAgICAgICAgICAnLS1leHRyYWN0JywKICAg
ICAgICAgICAgICAgICAnLS1idWNrZXQnLCAnY2hyb21lLWFuZ2xlLWNhcHR1cmUtYmluYXJpZXMn
LAotICAgICAgICAgICAgICAgICcuL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJh
Y2VzJywKKyAgICAgICAgICAgICAgICAnc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90
cmFjZXMnLAogICAgIF0KICAgfQogXQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvR0xFU3YyLmNtYWtlIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvR0xFU3YyLmNtYWtlCmlu
ZGV4IGE4Y2E4Y2ZiYjI3NmZkZDliZWU4ZmY5NTViZDE2MmQ0MjJkMTg0YTguLmVmM2RjNzI2ZDUz
MDMxNDAyMjc3ZTRlZGZjOWZhOWYyNzgwMjE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0dMRVN2Mi5jbWFrZQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9HTEVT
djIuY21ha2UKQEAgLTE5Nyw2ICsxOTcsNyBAQCBzZXQobGliYW5nbGVfaW5jbHVkZXMKICAgICAi
aW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc1ZrLmgiCiAgICAgImluY2x1ZGUvcGxhdGZvcm0vRnJv
bnRlbmRGZWF0dXJlcy5oIgogICAgICJpbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgiCisgICAg
ImluY2x1ZGUvdnVsa2FuL3Z1bGthbl9mdWNoc2lhX2V4dC5oIgogKQogCiAKQEAgLTI1MCwxMCAr
MjUxLDEwIEBAIHNldChsaWJhbmdsZV9oZWFkZXJzCiAgICAgInNyYy9saWJBTkdMRS9HTEVTMVNo
YWRlcnMuaW5jIgogICAgICJzcmMvbGliQU5HTEUvR0xFUzFTdGF0ZS5oIgogICAgICJzcmMvbGli
QU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgiCi0gICAgInNyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFs
bG9jYXRvci5oIgogICAgICJzcmMvbGliQU5HTEUvSW1hZ2UuaCIKICAgICAic3JjL2xpYkFOR0xF
L0ltYWdlSW5kZXguaCIKICAgICAic3JjL2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5oIgorICAg
ICJzcmMvbGliQU5HTEUvSW5mb0xvZy5oIgogICAgICJzcmMvbGliQU5HTEUvTG9nZ2luZ0Fubm90
YXRvci5oIgogICAgICJzcmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmgiCiAgICAgInNyYy9saWJB
TkdMRS9NZW1vcnlQcm9ncmFtQ2FjaGUuaCIKQEAgLTI2NSw4ICsyNjYsOCBAQCBzZXQobGliYW5n
bGVfaGVhZGVycwogICAgICJzcmMvbGliQU5HTEUvT3ZlcmxheV9hdXRvZ2VuLmNwcCIKICAgICAi
c3JjL2xpYkFOR0xFL092ZXJsYXlfZm9udF9hdXRvZ2VuLmNwcCIKICAgICAic3JjL2xpYkFOR0xF
L092ZXJsYXlfZm9udF9hdXRvZ2VuLmgiCi0gICAgInNyYy9saWJBTkdMRS9QYXRoLmgiCiAgICAg
InNyYy9saWJBTkdMRS9Qcm9ncmFtLmgiCisgICAgInNyYy9saWJBTkdMRS9Qcm9ncmFtRXhlY3V0
YWJsZS5oIgogICAgICJzcmMvbGliQU5HTEUvUHJvZ3JhbUxpbmtlZFJlc291cmNlcy5oIgogICAg
ICJzcmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmgiCiAgICAgInNyYy9saWJBTkdMRS9RdWVy
eS5oIgpAQCAtMzE5LDcgKzMyMCw2IEBAIHNldChsaWJhbmdsZV9oZWFkZXJzCiAgICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L01lbW9yeU9iamVjdEltcGwuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL092ZXJsYXlJ
bXBsLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oIgogICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1Byb2dyYW1QaXBlbGluZUltcGwuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1F1
ZXJ5SW1wbC5oIgpAQCAtMzk3LDcgKzM5Nyw2IEBAIHNldChsaWJhbmdsZV9zb3VyY2VzCiAgICAg
InNyYy9saWJBTkdMRS9HTEVTMVJlbmRlcmVyLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL0dMRVMx
U3RhdGUuY3BwIgogICAgICJzcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcCIKLSAgICAi
c3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCIKICAgICAic3JjL2xpYkFOR0xF
L0ltYWdlLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwIgogICAgICJzcmMv
bGliQU5HTEUvSW5kZXhSYW5nZUNhY2hlLmNwcCIKQEAgLTQwNSw5ICs0MDQsOSBAQCBzZXQobGli
YW5nbGVfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmNwcCIKICAgICAi
c3JjL2xpYkFOR0xFL01lbW9yeVByb2dyYW1DYWNoZS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9P
YnNlcnZlci5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9QYXRoLmNwcCIKICAgICAic3JjL2xpYkFO
R0xFL1BsYXRmb3JtLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwIgorICAgICJz
cmMvbGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIgogICAgICJzcmMvbGliQU5HTEUvUHJv
Z3JhbUxpbmtlZFJlc291cmNlcy5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9Qcm9ncmFtUGlwZWxp
bmUuY3BwIgogICAgICJzcmMvbGliQU5HTEUvUXVlcnkuY3BwIgpAQCAtNDM2LDcgKzQzNSw2IEBA
IHNldChsaWJhbmdsZV9zb3VyY2VzCiAgICAgInNyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25z
LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZHJpdmVyX3V0aWxzLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL0RldmljZUltcGwu
Y3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuY3BwIgogICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwIgpAQCAtNDQ0LDYg
KzQ0Miw3IEBAIHNldChsaWJhbmdsZV9zb3VyY2VzCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9TaGFkZXJJbXBsLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBs
LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmNwcCIKKyAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcCIKICAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FR0wuY3BwIgpAQCAtNDU1LDE4ICs0NTQsMTggQEAgc2V0KGxpYmFuZ2xlX3NvdXJj
ZXMKICAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMyLmNwcCIKICAgICAic3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FU0VYVC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wx
LmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIuY3BwIgotICAgICJzcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMy5jcHAiCi0gICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0
LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDExLmNwcCIKICAgICAic3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDEyLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25H
TDEzLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0LmNwcCIKICAgICAic3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1LmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDEzLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIuY3BwIgogICAgICJz
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMjEuY3BwIgorICAgICJzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMMy5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMS5jcHAiCiAgICAg
InNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMi5jcHAiCiAgICAgInNyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wzMy5jcHAiCisgICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0LmNwcCIKICAg
ICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQxLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25HTDQyLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQzLmNwcCIK
QEAgLTQ5Miw3ICs0OTEsNiBAQCBzZXQobGliYW5nbGVfZDNkX3NoYXJlZF9zb3VyY2VzCiAgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0ltYWdlMkRITFNMLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuY3BwIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9G
cmFtZWJ1ZmZlckQzRC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVi
dWZmZXJEM0QuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIu
Y3BwIgpAQCAtNTA3LDEyICs1MDUsMTIgQEAgc2V0KGxpYmFuZ2xlX2QzZF9zaGFyZWRfc291cmNl
cwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oIgogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwIgogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9SZW5kZXJUYXJnZXREM0QuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1JlbmRlclRhcmdldEQzRC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Jl
bmRlcmJ1ZmZlckQzRC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVy
YnVmZmVyRDNELmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0Qu
Y3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgiCi0gICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmgiCi0gICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmNwcCIKICAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9TYW1wbGVyRDNELmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvU2hhZGVyRDNELmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFk
ZXJEM0QuaCIKQEAgLTUyOSw2ICs1MjcsNyBAQCBzZXQobGliYW5nbGVfZDNkX3NoYXJlZF9zb3Vy
Y2VzCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmgiCiAgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuY3BwIgogICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisgICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIKICkKIAogCkBAIC01NDMsOCAr
NTQyLDYgQEAgc2V0KGxpYmFuZ2xlX2QzZDlfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvRGVidWdBbm5vdGF0b3I5LmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9GZW5jZTkuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvRmVuY2U5LmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3Jt
YXR1dGlsczkuY3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0
dXRpbHM5LmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZl
cjkuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5
LmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuY3BwIgpAQCAt
NTU1LDIzICs1NTIsMTMgQEAgc2V0KGxpYmFuZ2xlX2QzZDlfc291cmNlcwogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0aXZlV2luZG93OS5oIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L1F1ZXJ5OS5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvUmVuZGVyZXI5LmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Jl
bmRlcmVyOS5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5
X3V0aWxzLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVy
OV91dGlscy5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFy
Z2V0OS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJn
ZXQ5LmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3Bw
IgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiCiAgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJDYWNoZS5oIgogICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyRXhlY3V0YWJsZTkuY3BwIgogICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyRXhlY3V0YWJsZTkuaCIKLSAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50
bWFza3BzLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2Nv
bXBpbGVkL2NvbXBvbmVudG1hc2twcmVtdWx0cHMuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3VubXVsdHBzLmgiCi0g
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWlu
YW5jZXBzLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2Nv
bXBpbGVkL2x1bWluYW5jZXByZW11bHRwcy5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2V1bm11bHRwcy5oIgotICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBz
LmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVk
L3N0YW5kYXJkdnMuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRl
TWFuYWdlcjkuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVN
YW5hZ2VyOS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWlu
OS5jcHAiCkBAIC01ODEsOSArNTY4LDIxIEBAIHNldChsaWJhbmdsZV9kM2Q5X3NvdXJjZXMKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEFycmF5OS5oIgogICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5jcHAiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5LmgiCi0gICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS92ZXJ0ZXhjb252ZXJzaW9uLmgiCiAgICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUu
aCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAi
CisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaCIKKyAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5jcHAiCisg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKKyAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9u
ZW50bWFza3ByZW11bHRwcy5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaCIKKyAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3VubXVsdHBzLmgi
CisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1
bWluYW5jZXByZW11bHRwcy5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2V1bm11bHRwcy5oIgorICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aHBzLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBp
bGVkL3N0YW5kYXJkdnMuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3Zl
cnRleGNvbnZlcnNpb24uaCIKICkKIAogCkBAIC01OTksMTUgKzU5OCwxMCBAQCBzZXQobGliYW5n
bGVfZDNkMTFfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0Nv
bnRleHQxMS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5u
b3RhdG9yMTEuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVn
QW5ub3RhdG9yMTEuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdp
X2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlX2F1dG9nZW4uY3BwIgotICAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5oIgogICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL0V4dGVybmFsSW1hZ2VTaWJsaW5nSW1wbDExLmNwcCIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9FeHRlcm5hbEltYWdlU2libGluZ0lt
cGwxMS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuY3Bw
IgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuaCIKLSAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNwcCIKLSAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5oIgogICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdlMTEuY3BwIgpAQCAtNjE2LDkgKzYxMCw5
IEBAIHNldChsaWJhbmdsZV9kM2QxMV9zb3VyY2VzCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL01hcHBlZFN1YnJlc291cmNlVmVyaWZpZXIxMS5jcHAiCiAgICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTWFwcGVkU3VicmVzb3VyY2VWZXJpZmllcjExLmgi
CisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaCIK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuY3Bw
IgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1BpeGVsVHJhbnNmZXIxMS5o
IgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Byb2dyYW0xMS5jcHAiCkBA
IC02MjcsMTggKzYyMSwzOSBAQCBzZXQobGliYW5nbGVfZDNkMTFfc291cmNlcwogICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Byb2dyYW1QaXBlbGluZTExLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAiCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5oIgotICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5oIgogICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5oIgorICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9SZXNvdXJjZU1hbmFnZXIxMS5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVzb3VyY2VNYW5hZ2VyMTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwIgogICAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5oIgorICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcCIKKyAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oIgorICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZS5jcHAiCisgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJl
LmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3Bw
IgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmgiCisg
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5jcHAi
CisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5o
IgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNr
MTEuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZl
ZWRiYWNrMTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEu
Y3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oIgorICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3BwIgorICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuaCIKKyAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5jcHAiCisgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QnVmZmVyMTEuaCIKKyAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5j
cHAiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3Rh
YmxlLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0
X3RhYmxlX2F1dG9nZW4uY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2Zvcm1hdHV0aWxzMTEuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2Zvcm1hdHV0aWxzMTEuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9y
ZW5kZXJlcjExX3V0aWxzLmNwcCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9yZW5kZXJlcjExX3V0aWxzLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9ncy5oIgogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJl
MTFfcHNfNGYuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzRpLmgiCkBAIC02OTMsMzQgKzcwOCwxOCBA
QCBzZXQobGliYW5nbGVfZDNkMTFfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRhcnJheXBzLmgiCiAgICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxldWky
ZHBzLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9zd2l6emxldWkzZHBzLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3RhdGVNYW5hZ2VyMTEuY3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1N0YXRlTWFuYWdlcjExLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlckQzRFRleHR1cmUuaCIKLSAgICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAiCi0gICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAiCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKICAgICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2Vu
LmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZV91dGlscy5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Rl
eHR1cmVTdG9yYWdlMTEuY3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1RleHR1cmVTdG9yYWdlMTEuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9UcmFuc2Zvcm1GZWVkYmFjazExLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvVHJpbTExLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9UcmltMTEuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0
ZXhBcnJheTExLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0
ZXhBcnJheTExLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4
QnVmZmVyMTEuY3BwIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRl
eEJ1ZmZlcjExLmgiCiApCiAKIAogc2V0KGxpYmFuZ2xlX2QzZDExX3dpbjMyX3NvdXJjZXMKLSAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdp
bjMyLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRp
dmVXaW5kb3cxMVdpbjMyLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Y29udmVyZ2VkL0NvbXBvc2l0b3JOYXRpdmVXaW5kb3cxMS5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvY29udmVyZ2VkL0NvbXBvc2l0b3JOYXRpdmVXaW5kb3cxMS5o
IgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRv
dzExV2luMzIuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMy
L05hdGl2ZVdpbmRvdzExV2luMzIuaCIKICAgICAic3JjL3RoaXJkX3BhcnR5L3N5c3RlbWluZm8v
U3lzdGVtSW5mby5jcHAiCiAgICAgInNyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUlu
Zm8uaCIKICkKQEAgLTc2Myw4ICs3NjIsNiBAQCBzZXQobGliYW5nbGVfZ2xfc291cmNlcwogICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvSW1hZ2VHTC5oIgogICAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0R0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvTWVtb3J5T2JqZWN0R0wuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Bh
dGhHTC5oIgotICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcCIKICAgICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1Byb2dyYW1QaXBlbGluZUdMLmNwcCIKQEAgLTgxMywxMCArODEwLDEwIEBAIHNldChsaWJhbmds
ZV9nbF93Z2xfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0NvbnRl
eHRXR0wuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3Vy
ZmFjZVdHTC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVy
ZVN1cmZhY2VXR0wuaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5
V0dMLmNwcCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1
cmZhY2VXR0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2Fw
Q2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvRGlzcGxheVdHTC5jcHAiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlz
cGxheVdHTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0aW9uc1dH
TC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRnVuY3Rpb25zV0dMLmgi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3Bw
IgpAQCAtODM4LDEwICs4MzUsMTAgQEAgc2V0KGxpYmFuZ2xlX2dsX2dseF9zb3VyY2VzCiAgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oIgogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5jcHAiCiAgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9nbHgvUmVuZGVyZXJHTFguaCIKLSAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9SZW5kZXJlckdMWC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
UGJ1ZmZlclN1cmZhY2VHTFguY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4
L1BidWZmZXJTdXJmYWNlR0xYLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
UmVuZGVyZXJHTFguY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1JlbmRl
cmVyR0xYLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvU3VyZmFjZUdMWC5o
IgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguY3Bw
IgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguaCIK
QEAgLTg1NiwxMyArODUzLDEwIEBAIHNldChsaWJhbmdsZV9nbF9lZ2xfc291cmNlcwogICAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuY3BwIgogICAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuaCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2VnbC9FeHRlcm5hbEltYWdlU2libGluZ0VHTC5oIgotICAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL2VnbF91dGlscy5jcHAiCi0gICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvZWdsX3V0aWxzLmgiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9l
Z2wvRnVuY3Rpb25zRUdMLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9G
dW5jdGlvbnNFR0wuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9JbWFnZUVH
TC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvSW1hZ2VFR0wuaCIKLSAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9mdW5jdGlvbnNlZ2xfdHlwZWRlZnMuaCIK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5jcHAi
CiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaCIK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9SZW5kZXJlckVHTC5jcHAiCkBAIC04
NzMsNiArODY3LDkgQEAgc2V0KGxpYmFuZ2xlX2dsX2VnbF9zb3VyY2VzCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvU3luY0VHTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuaCIKKyAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9lZ2xfdXRpbHMuY3BwIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L2VnbF91dGlscy5oIgorICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Z1bmN0aW9u
c2VnbF90eXBlZGVmcy5oIgogKQogc2V0KGxpYmFuZ2xlX2dsX2VnbF9kbF9zb3VyY2VzCiAgICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMREwuY3BwIgpAQCAtOTAx
LDE2ICs4OTgsMTYgQEAgc2V0KGxpYmFuZ2xlX2dsX2NnbF9zb3VyY2VzCiAgICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9jZ2wvQ29udGV4dENHTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5jcHAiCiAgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvRGV2aWNlQ0dMLmgiCi0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlz
cGxheUNHTC5tbSIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dM
LmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbSIKICAg
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCIK
ICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmgi
Ci0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuY3BwIgotICAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmgiCiAgICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuY3BwIgogICAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgiCi0gICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbSIKKyAgICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9SZW5kZXJlckNHTC5jcHAiCisgICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvUmVuZGVyZXJDR0wuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLmgiCisgICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbSIKICkKIAogCkBAIC05NjksOCArOTY2LDYgQEAg
c2V0KGxpYmFuZ2xlX251bGxfc291cmNlcwogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9GcmFtZWJ1ZmZlck5VTEwuaCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvSW1h
Z2VOVUxMLmNwcCIKICAgICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmgi
Ci0gICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmNwcCIKLSAgICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaCIKICAgICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9Qcm9ncmFtTlVMTC5oIgogICAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9n
cmFtUGlwZWxpbmVOVUxMLmNwcCIKQEAgLTEwMzIsMTYgKzEwMjcsMTYgQEAgc2V0KGxpYmdsX3Nv
dXJjZXMKICAgICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzNfYXV0b2dlbi5jcHAiCiAg
ICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uaCIKICAgICAic3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF80XzRfYXV0b2dlbi5jcHAiCi0gICAgInNyYy9saWJHTC9lbnRy
eV9wb2ludHNfZ2xfNF82X2F1dG9nZW4uY3BwIgogICAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRz
X2dsXzRfNF9hdXRvZ2VuLmgiCiAgICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81X2F1
dG9nZW4uY3BwIgogICAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNV9hdXRvZ2VuLmgi
CisgICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1dG9nZW4uY3BwIgogICAgICJz
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNl9hdXRvZ2VuLmgiCiAgICAgInNyYy9saWJHTC9l
bnRyeV9wb2ludHNfd2dsLmNwcCIKICAgICAic3JjL2xpYkdML2VudHJ5X3BvaW50c193Z2wuaCIK
KyAgICAic3JjL2xpYkdML2xpYkdMLnJjIgogICAgICJzcmMvbGliR0wvbGliR0xfYXV0b2dlbi5j
cHAiCiAgICAgInNyYy9saWJHTC9saWJHTF9hdXRvZ2VuLmRlZiIKLSAgICAic3JjL2xpYkdML2xp
YkdMLnJjIgogICAgICJzcmMvbGliR0wvcHJvY190YWJsZV93Z2wuaCIKICAgICAic3JjL2xpYkdM
L3Byb2NfdGFibGVfd2dsX2F1dG9nZW4uY3BwIgogICAgICJzcmMvbGliR0xFU3YyL2dsb2JhbF9z
dGF0ZS5jcHAiCkBAIC0xMDczLDggKzEwNjgsOCBAQCBzZXQobGliZ2xlc3YyX3NvdXJjZXMKICAg
ICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dlbi5oIgogICAgICJz
cmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAiCiAgICAgInNyYy9saWJHTEVTdjIvZ2xvYmFs
X3N0YXRlLmgiCi0gICAgInNyYy9saWJHTEVTdjIvbGliR0xFU3YyX2F1dG9nZW4uY3BwIgogICAg
ICJzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYyIKKyAgICAic3JjL2xpYkdMRVN2Mi9saWJHTEVT
djJfYXV0b2dlbi5jcHAiCiAgICAgInNyYy9saWJHTEVTdjIvcHJvY190YWJsZV9lZ2wuaCIKICAg
ICAic3JjL2xpYkdMRVN2Mi9wcm9jX3RhYmxlX2VnbF9hdXRvZ2VuLmNwcCIKICAgICAic3JjL2xp
YkdMRVN2Mi9yZXNvdXJjZS5oIgpAQCAtMTA5MCwxMCArMTA4NSwxMCBAQCBzZXQobGliZ2xlc3Yx
X2NtX3NvdXJjZXMKIAogCiBzZXQobGliZWdsX3NvdXJjZXMKKyAgICAic3JjL2xpYkVHTC9lZ2xf
bG9hZGVyX2F1dG9nZW4uaCIKICAgICAic3JjL2xpYkVHTC9saWJFR0wuY3BwIgogICAgICJzcmMv
bGliRUdML2xpYkVHTC5yYyIKICAgICAic3JjL2xpYkVHTC9yZXNvdXJjZS5oIgogICAgICJzcmMv
bGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2wuaCIKICAgICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZWdsX2V4dC5oIgotICAgICJzcmMvbGliRUdML2VnbF9sb2FkZXJfYXV0b2dlbi5oIgog
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvT1dORVJTIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvT1dORVJTCmluZGV4IDU3YTgzM2I1ZmY0YzA5YTllNjFjNWUzNTMwMGVh
NDQyMDU3MDRmNTcuLmRmNDhjZmE1ZDg4MzE2N2M5Nzg4ZWFjMTNiYmY5Y2MyN2RiNGY1MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL09XTkVSUworKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9PV05FUlMKQEAgLTEsOSArMSwxOCBAQAotIyBTZWUgaHR0cHM6Ly9jaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xlL2FuZ2xlLysvbWFzdGVyL2RvYy9Db250cmlidXRp
bmdDb2RlLm1kI3NlbGVjdGluZy1yZXZpZXdlcnMgZm9yIHBlci1maWxlIG93bmVycwotY3dhbGxl
ekBjaHJvbWl1bS5vcmcKKyMgU2VlIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9h
bmdsZS9hbmdsZS8rL21hc3Rlci9kb2MvQ29udHJpYnV0aW5nQ29kZS5tZCNzZWxlY3RpbmctcmV2
aWV3ZXJzIGZvciBtb3JlIGluZm8KIGdlb2ZmbGFuZ0BjaHJvbWl1bS5vcmcKK2dlb2ZmbGFuZ0Bn
b29nbGUuY29tCiBqbWFkaWxsQGNocm9taXVtLm9yZworam1hZGlsbEBnb29nbGUuY29tCitqb25h
aHJAZ29vZ2xlLmNvbQogc3lvdXNzZWZpQGNocm9taXVtLm9yZworc3lvdXNzZWZpQGdvb2dsZS5j
b20KIHlub3Zpa292QGNocm9taXVtLm9yZworeW5vdmlrb3ZAZ29vZ2xlLmNvbQorCitwZXItZmls
ZSBBVVRIT1JTPSoKK3Blci1maWxlIENPTlRSSUJVVE9SUz0qCitwZXItZmlsZSBERVBTPSoKK3Bl
ci1maWxlIFdBVENITElTVFM9KgogCiAjIENPTVBPTkVOVDogSW50ZXJuYWxzPkdQVT5BTkdMRQog
IyBURUFNOiBhbmdsZXByb2plY3RAZ29vZ2xlZ3JvdXBzLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvUFJFU1VCTUlULnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
UFJFU1VCTUlULnB5CmluZGV4IGY3MWNkMGM4N2MwZGM4OGRkNTZjMzJiNWMxNzNjNzNjZDZkODlm
Y2YuLmJjMjg2YjhjY2YxMzdiMGZmMmE2NjM1ZDg0YmNiMjkzNDljM2U1ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1BSRVNVQk1JVC5weQorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9QUkVTVUJNSVQucHkKQEAgLTQzLDcgKzQzLDcgQEAgZGVmIF9DaGVja0NoYW5n
ZUhhc0J1Z0ZpZWxkKGlucHV0X2FwaSwgb3V0cHV0X2FwaSk6CiAgICAgaWYgbGVuKGJ1Z3MpID09
IDEgYW5kIGJ1Z3NbMF0gPT0gJ05vbmUnOgogICAgICAgICByZXR1cm4gW10KIAotICAgIHByb2pl
Y3RzID0gWydhbmdsZXByb2plY3QnLCAnY2hyb21pdW0nLCAnZGF3bicsICdmdWNoc2lhJywgJ3Nr
aWEnLCAnc3dpZnRzaGFkZXInXQorICAgIHByb2plY3RzID0gWydhbmdsZXByb2plY3QnLCAnY2hy
b21pdW0nLCAnZGF3bicsICdmdWNoc2lhJywgJ3NraWEnLCAnc3dpZnRzaGFkZXInLCAnYiddCiAg
ICAgYnVnX3JlZ2V4ID0gcmUuY29tcGlsZShyIihbYS16XSspOihcZCspIikKICAgICBlcnJvcnMg
PSBbXQogICAgIGV4dHJhX2hlbHAgPSBOb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9SRUFETUUubWQKaW5k
ZXggMjFkN2M4ODE4OTkzYmNkNjQzODNhNjFlMDY5Zjk0ZDQ1NGE3Yjg0YS4uZmEzNTRhZGQ2NTQ3
MGEyNTY5ODM5Yzg4NjhjMWMxMGFmNmY1NzIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvUkVBRE1FLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL1JFQURNRS5t
ZApAQCAtMiwxOCArMiwxOCBAQAogCiBUaGUgZ29hbCBvZiBBTkdMRSBpcyB0byBhbGxvdyB1c2Vy
cyBvZiBtdWx0aXBsZSBvcGVyYXRpbmcgc3lzdGVtcyB0byBzZWFtbGVzc2x5IHJ1biBXZWJHTCBh
bmQgb3RoZXIKIE9wZW5HTCBFUyBjb250ZW50IGJ5IHRyYW5zbGF0aW5nIE9wZW5HTCBFUyBBUEkg
Y2FsbHMgdG8gb25lIG9mIHRoZSBoYXJkd2FyZS1zdXBwb3J0ZWQgQVBJcyBhdmFpbGFibGUKLWZv
ciB0aGF0IHBsYXRmb3JtLiBBTkdMRSBjdXJyZW50bHkgcHJvdmlkZXMgdHJhbnNsYXRpb24gZnJv
bSBPcGVuR0wgRVMgMi4wIGFuZCAzLjAgdG8gZGVza3RvcAotT3BlbkdMLCBPcGVuR0wgRVMsIERp
cmVjdDNEIDksIGFuZCBEaXJlY3QzRCAxMS4gU3VwcG9ydCBmb3IgdHJhbnNsYXRpb24gZnJvbSBP
cGVuR0wgRVMgdG8gVnVsa2FuIGlzCi11bmRlcndheSwgYW5kIGZ1dHVyZSBwbGFucyBpbmNsdWRl
IGNvbXB1dGUgc2hhZGVyIHN1cHBvcnQgKEVTIDMuMSkgYW5kIE1hY09TIHN1cHBvcnQuCitmb3Ig
dGhhdCBwbGF0Zm9ybS4gQU5HTEUgY3VycmVudGx5IHByb3ZpZGVzIHRyYW5zbGF0aW9uIGZyb20g
T3BlbkdMIEVTIDIuMCwgMy4wIGFuZCAzLjEgdG8gVnVsa2FuLAorZGVza3RvcCBPcGVuR0wsIE9w
ZW5HTCBFUywgRGlyZWN0M0QgOSwgYW5kIERpcmVjdDNEIDExLiBGdXR1cmUgcGxhbnMgaW5jbHVk
ZSBFUyAzLjIsIHRyYW5zbGF0aW9uIHRvCitNZXRhbCBhbmQgTWFjT1MsIENocm9tZSBPUywgYW5k
IEZ1Y2hzaWEgc3VwcG9ydC4KIAogIyMjIExldmVsIG9mIE9wZW5HTCBFUyBzdXBwb3J0IHZpYSBi
YWNraW5nIHJlbmRlcmVycwogCiB8ICAgICAgICAgICAgICAgIHwgIERpcmVjdDNEIDkgICB8ICBE
aXJlY3QzRCAxMSAgICAgfCAgIERlc2t0b3AgR0wgICB8ICAgIEdMIEVTICAgICAgfCAgICBWdWxr
YW4gICAgIHwgICAgTWV0YWwgICAgICB8CiB8LS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0t
LTp8Oi0tLS0tLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS06fDot
LS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLTp8Ci18IE9wZW5HTCBFUyAyLjAgIHwgICAgY29t
cGxldGUgICB8ICAgIGNvbXBsZXRlICAgICAgfCAgICBjb21wbGV0ZSAgICB8ICAgY29tcGxldGUg
ICAgfCAgICBjb21wbGV0ZSAgIHwgIGluIHByb2dyZXNzICB8Ci18IE9wZW5HTCBFUyAzLjAgIHwg
ICAgICAgICAgICAgICB8ICAgIGNvbXBsZXRlICAgICAgfCAgICBjb21wbGV0ZSAgICB8ICAgY29t
cGxldGUgICAgfCAgaW4gcHJvZ3Jlc3MgIHwgICAgICAgICAgICAgICB8Ci18IE9wZW5HTCBFUyAz
LjEgIHwgICAgICAgICAgICAgICB8ICAgaW4gcHJvZ3Jlc3MgICAgfCAgICBjb21wbGV0ZSAgICB8
ICAgY29tcGxldGUgICAgfCAgaW4gcHJvZ3Jlc3MgIHwgICAgICAgICAgICAgICB8Ci18IE9wZW5H
TCBFUyAzLjIgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfCAgICBwbGFubmVk
ICAgICB8ICAgIHBsYW5uZWQgICAgfCAgICBwbGFubmVkICAgIHwgICAgICAgICAgICAgICB8Cit8
IE9wZW5HTCBFUyAyLjAgIHwgICAgY29tcGxldGUgICB8ICAgIGNvbXBsZXRlICAgICAgfCAgICBj
b21wbGV0ZSAgICB8ICAgIGNvbXBsZXRlICAgfCAgICBjb21wbGV0ZSAgIHwgIGluIHByb2dyZXNz
ICB8Cit8IE9wZW5HTCBFUyAzLjAgIHwgICAgICAgICAgICAgICB8ICAgIGNvbXBsZXRlICAgICAg
fCAgICBjb21wbGV0ZSAgICB8ICAgIGNvbXBsZXRlICAgfCAgICBjb21wbGV0ZSAgIHwgICAgICAg
ICAgICAgICB8Cit8IE9wZW5HTCBFUyAzLjEgIHwgICAgICAgICAgICAgICB8ICAgaW4gcHJvZ3Jl
c3MgICAgfCAgICBjb21wbGV0ZSAgICB8ICAgIGNvbXBsZXRlICAgfCAgaW4gcHJvZ3Jlc3MgIHwg
ICAgICAgICAgICAgICB8Cit8IE9wZW5HTCBFUyAzLjIgIHwgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgfCAgaW4gcHJvZ3Jlc3MgICB8ICBpbiBwcm9ncmVzcyAgfCAgaW4gcHJvZ3Jl
c3MgIHwgICAgICAgICAgICAgICB8CiAKICMjIyBQbGF0Zm9ybSBzdXBwb3J0IHZpYSBiYWNraW5n
IHJlbmRlcmVycwogCkBAIC0yOCw2ICsyOCw4IEBAIHVuZGVyd2F5LCBhbmQgZnV0dXJlIHBsYW5z
IGluY2x1ZGUgY29tcHV0ZSBzaGFkZXIgc3VwcG9ydCAoRVMgMy4xKSBhbmQgTWFjT1Mgc3VwCiB8
IEZ1Y2hzaWEgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICB8IGluIHByb2dyZXNzIHwgICAgICAgICAgICAgfAogCiBBTkdM
RSB2MS4wLjc3MiB3YXMgY2VydGlmaWVkIGNvbXBsaWFudCBieSBwYXNzaW5nIHRoZSBFUyAyLjAu
MyBjb25mb3JtYW5jZSB0ZXN0cyBpbiBPY3RvYmVyIDIwMTEuCitXaXRoIHRoZSBWdWxrYW4gYmFj
a2VuZCwgQU5HTEUgMi4xLjAuZDQ2ZTJmYjFlMzQxIHdhcyBjZXJ0aWZpZWQgY29tcGxpYW50IHRv
IEVTIDIuMCBpbiBOb3YgMjAxOSwgYW5kCitBTkdMRSAyLjEuMC5mMThmZjk0NzM2MGQgdG8gRVMg
My4wIGluIEZlYiAyMDIwLgogQU5HTEUgYWxzbyBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgRUdMIDEuNCBzcGVjaWZpY2F0aW9uLgogCiBBTkdMRSBpcyB1c2VkIGFzIHRoZSBkZWZh
dWx0IFdlYkdMIGJhY2tlbmQgZm9yIGJvdGggR29vZ2xlIENocm9tZSBhbmQgTW96aWxsYSBGaXJl
Zm94IG9uIFdpbmRvd3MKQEAgLTM5LDggKzQxLDggQEAgaW1wbGVtZW50YXRpb25zIGFjcm9zcyBt
dWx0aXBsZSBwbGF0Zm9ybXMuIEl0IGlzIHVzZWQgb24gTWFjIE9TIFgsIExpbnV4LCBhbmQgaW4K
IHRoZSBicm93c2Vycy4gSGF2aW5nIG9uZSBzaGFkZXIgdmFsaWRhdG9yIGhlbHBzIHRvIGVuc3Vy
ZSB0aGF0IGEgY29uc2lzdGVudCBzZXQgb2YgR0xTTCBFUyBzaGFkZXJzCiBhcmUgYWNjZXB0ZWQg
YWNyb3NzIGJyb3dzZXJzIGFuZCBwbGF0Zm9ybXMuIFRoZSBzaGFkZXIgdHJhbnNsYXRvciBjYW4g
YmUgdXNlZCB0byB0cmFuc2xhdGUgc2hhZGVycwogdG8gb3RoZXIgc2hhZGluZyBsYW5ndWFnZXMs
IGFuZCB0byBvcHRpb25hbGx5IGFwcGx5IHNoYWRlciBtb2RpZmljYXRpb25zIHRvIHdvcmsgYXJv
dW5kIGJ1Z3Mgb3IKLXF1aXJrcyBpbiB0aGUgbmF0aXZlIGdyYXBoaWNzIGRyaXZlcnMuIFRoZSB0
cmFuc2xhdG9yIHRhcmdldHMgRGVza3RvcCBHTFNMLCBEaXJlY3QzRCBITFNMLCBhbmQgZXZlbgot
RVNTTCBmb3IgbmF0aXZlIEdMRVMyIHBsYXRmb3Jtcy4KK3F1aXJrcyBpbiB0aGUgbmF0aXZlIGdy
YXBoaWNzIGRyaXZlcnMuIFRoZSB0cmFuc2xhdG9yIHRhcmdldHMgRGVza3RvcCBHTFNMLCBWdWxr
YW4gR0xTTCwgRGlyZWN0M0QKK0hMU0wsIGFuZCBldmVuIEVTU0wgZm9yIG5hdGl2ZSBHTEVTMiBw
bGF0Zm9ybXMuCiAKICMjIFNvdXJjZXMKIApAQCAtNzksNCArODEsNSBAQCBWaWV3IHRoZSBbRGV2
IHNldHVwIGluc3RydWN0aW9uc10oZG9jL0RldlNldHVwLm1kKS4KICogV2F0Y2ggYSBbc2hvcnQg
cHJlc2VudGF0aW9uXShodHRwczovL3lvdXR1LmJlL1FySUtkam1wbWFBKSBvbiB0aGUgVnVsa2Fu
IGJhY2stZW5kLgogKiBUcmFjayB0aGUgW2RFUVAgdGVzdCBjb25mb3JtYW5jZV0oZG9jL2RFUVAt
Q2hhcnRzLm1kKQogKiBSZWFkIGRlc2lnbiBkb2NzIG9uIHRoZSBbVnVsa2FuIGJhY2stZW5kXShz
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JFQURNRS5tZCkKKyogUmVhZCBhYm91dCBBTkdM
RSdzIFt0ZXN0aW5nIGluZnJhc3RydWN0dXJlXShpbmZyYS9SRUFETUUubWQpCiAqIElmIHlvdSB1
c2UgQU5HTEUgaW4geW91ciBvd24gcHJvamVjdCwgd2UnZCBsb3ZlIHRvIGhlYXIgYWJvdXQgaXQh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmRyb2lkL2FuZ2xlX2Fway5n
bmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmRyb2lkL2FuZ2xlX2Fway5nbmkKaW5kZXgg
Y2EzZWE1YjVlYjEyMTMzMjFiOGVjZTdhMjYwNjRjYTdjZGQ1NjA3Mi4uYmE3NzYwMmI0ZDYwNDZm
ZDNmYzNlMjc2OTk3N2Q5ZWJhOTAzNzU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvYW5kcm9pZC9hbmdsZV9hcGsuZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2FuZHJvaWQvYW5nbGVfYXBrLmduaQpAQCAtMzEsOSArMzEsNyBAQCBpZiAoZW5hYmxlX2phdmFf
dGVtcGxhdGVzKSB7CiAKICAgICBhbmRyb2lkX2Fzc2V0cygiJHtpbnZva2VyLnBhY2thZ2VfbmFt
ZX1fYXNzZXRzIikgewogICAgICAgZGlzYWJsZV9jb21wcmVzc2lvbiA9IHRydWUKLSAgICAgIHNv
dXJjZXMgPSBbCi0gICAgICAgICJzcmMvZmVhdHVyZV9zdXBwb3J0X3V0aWwvYTRhX3J1bGVzLmpz
b24iLAotICAgICAgXQorICAgICAgc291cmNlcyA9IFsgInNyYy9mZWF0dXJlX3N1cHBvcnRfdXRp
bC9hNGFfcnVsZXMuanNvbiIgXQogICAgIH0KIAogICAgIGFuZHJvaWRfYXBrKHRhcmdldF9uYW1l
KSB7CkBAIC00Miw5ICs0MCw3IEBAIGlmIChlbmFibGVfamF2YV90ZW1wbGF0ZXMpIHsKICAgICAg
IGFuZHJvaWRfbWFuaWZlc3RfZGVwID0gIjokbWFuaWZlc3RfdGFyZ2V0X25hbWUiCiAgICAgICBt
aW5fc2RrX3ZlcnNpb24gPSAyNgogICAgICAgdGFyZ2V0X3Nka192ZXJzaW9uID0gMjgKLSAgICAg
IGRlcHMgPSBbCi0gICAgICAgICI6JHtpbnZva2VyLnBhY2thZ2VfbmFtZX1fYXNzZXRzIiwKLSAg
ICAgIF0KKyAgICAgIGRlcHMgPSBbICI6JHtpbnZva2VyLnBhY2thZ2VfbmFtZX1fYXNzZXRzIiBd
CiAgICAgICBpZiAoc3ltYm9sX2xldmVsICE9IDApIHsKICAgICAgICAgZGVwcyArPSBbICI6Y29t
cHJlc3NlZF9zeW1ib2xzIiBdCiAgICAgICAgIGlmIChhbmRyb2lkXzY0Yml0X3RhcmdldF9jcHUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NoYW5nZXMuZGlmZiBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NoYW5nZXMuZGlmZgppbmRleCBiZTM2MjE5ZWMwZjhkYTRm
MTFjMzcxNjM3MGNjYjU4ODY2ZTM0NDBlLi42MzczOWFjOTZmMWVlNzVjZDcwNGM5YmQyYWQ3YmNj
ZGM2YzYwNDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jaGFuZ2VzLmRp
ZmYKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY2hhbmdlcy5kaWZmCkBAIC0xLDUgKzEs
MzQgQEAKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaCBiL2luY2x1
ZGUvcGxhdGZvcm0vRmVhdHVyZXNHTC5oCitpbmRleCA1YjM2ZjI3MWYuLjg1OTQ3ZTQwZiAxMDA2
NDQKKy0tLSBhL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNHTC5oCisrKysgYi9pbmNsdWRlL3Bs
YXRmb3JtL0ZlYXR1cmVzR0wuaAorQEAgLTQxMiw2ICs0MTIsMTIgQEAgc3RydWN0IEZlYXR1cmVz
R0wgOiBGZWF0dXJlU2V0QmFzZQorICAgICAgICAgIlJld3JpdGUgcm93IG1ham9yIG1hdHJpY2Vz
IGluIHNoYWRlcnMgYXMgY29sdW1uIG1ham9yIGFzIGEgZHJpdmVyIGJ1ZyB3b3JrYXJvdW5kIiwK
KyAgICAgICAgICZtZW1iZXJzLCAiaHR0cDovL2FuZ2xlYnVnLmNvbS8yMjczIn07CisgCisrICAg
IC8vIEZsdXNoIGJlZm9yZSBnbEJpbmRGcmFtZWJ1ZmZlciBhcyBhIGRyaXZlciBidWcgd29ya2Fy
b3VuZCBpZiBuZWNlc3NhcnkuCisrICAgIEZlYXR1cmUgZmx1c2hCZWZvcmVCaW5kRnJhbWVidWZm
ZXIgPSB7CisrICAgICAgICAiZmx1c2hfYmVmb3JlX2JpbmRmcmFtZWJ1ZmZlciIsIEZlYXR1cmVD
YXRlZ29yeTo6T3BlbkdMV29ya2Fyb3VuZHMsCisrICAgICAgICAiRmx1c2ggYmVmb3JlIGdsQmlu
ZEZyYW1lYnVmZmVyIGFzIGEgZHJpdmVyIGJ1ZyB3b3JrYXJvdW5kIiwKKysgICAgICAgICZtZW1i
ZXJzLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjYyNSJ9Owor
KworICAgICAvLyBCdWdzIGV4aXN0IGluIHZhcmlvdXMgT3BlbkdMIEludGVsIGRyaXZlcnMgb24g
V2luZG93cyB0aGF0IHByb2R1Y2UgaW5jb3JyZWN0CisgICAgIC8vIHZhbHVlcyBmb3IgR0xfQ09N
UFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgZm9ybWF0LiBSZXBsYWNlIGl0IHdpdGgKKyAgICAg
Ly8gR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgYXMgaXQncyB0aGUgY2xv
c2VzdCBvcHRpb24gYWxsb3dlZCBieQorZGlmZiAtLWdpdCBhL2luY2x1ZGUvcGxhdGZvcm0vUGxh
dGZvcm0uaCBiL2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAoraW5kZXggMTMxNjc0MDA4Li5k
MDY1YzNhOWYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgKKysrKyBi
L2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAorQEAgLTksNiArOSw3IEBACisgI2lmbmRlZiBB
TkdMRV9QTEFURk9STV9ICisgI2RlZmluZSBBTkdMRV9QTEFURk9STV9ICisgCisrI2luY2x1ZGUg
PHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+Cisg
I2luY2x1ZGUgPGFycmF5PgogZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcCBi
L3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcAotaW5kZXggODc5MzJhNTNmLi44M2VhMTY4ZTIgMTAw
NjQ0CitpbmRleCAwY2E5NjdjMTcuLjBhNmRjYzI0OCAxMDA2NDQKIC0tLSBhL3NyYy9jb21tb24v
dXRpbGl0aWVzLmNwcAogKysrIGIvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCiBAQCAtNiw2ICs2
LDExIEBACkBAIC01MSw3ICs4MCw3IEBAIGluZGV4IGUwZThkNjQ0Ny4uZWJmOGQ5MGY1IDEwMDY0
NAogIAogICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTUsIDIwMTgt
MjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xF
L1N0YXRlLmNwcCBiL3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAKLWluZGV4IDIwN2JjMzk5Ny4uZmEx
YmQyZjE2IDEwMDY0NAoraW5kZXggNDUyYTY5NWMwLi4xMGFiNWZjMTcgMTAwNjQ0CiAtLS0gYS9z
cmMvbGliQU5HTEUvU3RhdGUuY3BwCiArKysgYi9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCiBAQCAt
Niw2ICs2LDkgQEAKQEAgLTY0LDExICs5MywyNSBAQCBpbmRleCAyMDdiYzM5OTcuLmZhMWJkMmYx
NiAxMDA2NDQKICAjaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKICAKICAjaW5jbHVkZSA8c3Ry
aW5nLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdl
ckdMLmNwcCBiL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAKK2lu
ZGV4IDVhYzFmYTY0OC4uM2Y5YmMwMTY2IDEwMDY0NAorLS0tIGEvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAorKysrIGIvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1N0YXRlTWFuYWdlckdMLmNwcAorQEAgLTU4MCw2ICs1ODAsOSBAQCB2b2lkIFN0YXRlTWFuYWdl
ckdMOjpzZXRQaXhlbFBhY2tCdWZmZXIoY29uc3QgZ2w6OkJ1ZmZlciAqcGl4ZWxCdWZmZXIpCisg
Cisgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6YmluZEZyYW1lYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVp
bnQgZnJhbWVidWZmZXIpCisgeworKyAgICBpZiAobUZlYXR1cmVzLmZsdXNoQmVmb3JlQmluZEZy
YW1lYnVmZmVyLmVuYWJsZWQpCisrICAgICAgICBtRnVuY3Rpb25zLT5mbHVzaCgpOworKworICAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgIHsKKyAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6CiBk
aWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tIGIv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCi1pbmRleCAxNDgyMTM5
MzMuLmNkOGE2Y2E2YiAxMDA2NDQKK2luZGV4IDIyNjI2OTkwOS4uYWU5MDc3NmRhIDEwMDY0NAog
LS0tIGEvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCiArKysgYi9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0KLUBAIC0yOTIsNyArMjky
LDcgQEAgZWdsOjpFcnJvciBEaXNwbGF5Q0dMOjpyZXN0b3JlTG9zdERldmljZShjb25zdCBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkpCitAQCAtMjk0LDcgKzI5NCw3IEBAIGVnbDo6RXJyb3IgRGlzcGxh
eUNHTDo6cmVzdG9yZUxvc3REZXZpY2UoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQogIAog
IGJvb2wgRGlzcGxheUNHTDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBl
IHdpbmRvdykgY29uc3QKICB7CkBAIC05MSw3ICsxMzQsNyBAQCBpbmRleCAxYzFmZDIyNTIuLjU0
ZDgzMjBlYSAxMDA2NDQKICAgICAgICBtRnVuY3Rpb25zKHJlbmRlcmVyLT5nZXRGdW5jdGlvbnMo
KSksCiAgICAgICAgbVN0YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkpLAog
ZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0Rpc3BsYXlFQUdMLm1t
IGIvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvRGlzcGxheUVBR0wubW0KLWluZGV4IDU1
MjI4NTE2MC4uNzk3ZDNiNzVjIDEwMDY0NAoraW5kZXggMjllODM4NzFjLi44NTgwNDQxMWQgMTAw
NjQ0CiAtLS0gYS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWFnbC9EaXNwbGF5RUFHTC5tbQog
KysrIGIvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VhZ2wvRGlzcGxheUVBR0wubW0KIEBAIC0x
MDcsNiArMTA3LDcgQEAgdm9pZCBEaXNwbGF5RUFHTDo6dGVybWluYXRlKCkKQEAgLTEwMiw3ICsx
NDUsNyBAQCBpbmRleCA1NTIyODUxNjAuLjc5N2QzYjc1YyAxMDA2NDQKICAgICAgICAgIG1Db250
ZXh0ID0gbnVsbHB0cjsKICAgICAgfQogIH0KLUBAIC0yMzcsNyArMjM4LDcgQEAgZWdsOjpFcnJv
ciBEaXNwbGF5RUFHTDo6cmVzdG9yZUxvc3REZXZpY2UoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNw
bGF5KQorQEAgLTI0Myw3ICsyNDQsNyBAQCBlZ2w6OkVycm9yIERpc3BsYXlFQUdMOjpyZXN0b3Jl
TG9zdERldmljZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgCiAgYm9vbCBEaXNwbGF5
RUFHTDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29u
c3QKICB7CkBAIC0xMTEsNyArMTU0LDcgQEAgaW5kZXggNTUyMjg1MTYwLi43OTdkM2I3NWMgMTAw
NjQ0CiAgICAgIHJldHVybiBbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbQ0FMYXllciBjbGFzc11dOwog
IH0KICAKLUBAIC0zMjgsNiArMzI5LDcgQEAgV29ya2VyQ29udGV4dEVBR0w6OldvcmtlckNvbnRl
eHRFQUdMKEVBR0xDb250ZXh0T2JqIGNvbnRleHQpIDogbUNvbnRleHQoY29udGV4dCkKK0BAIC0z
MzQsNiArMzM1LDcgQEAgV29ya2VyQ29udGV4dEVBR0w6OldvcmtlckNvbnRleHRFQUdMKEVBR0xD
b250ZXh0T2JqIGNvbnRleHQpIDogbUNvbnRleHQoY29udGV4dCkKICBXb3JrZXJDb250ZXh0RUFH
TDo6fldvcmtlckNvbnRleHRFQUdMKCkKICB7CiAgICAgIFtFQUdMQ29udGV4dCBzZXRDdXJyZW50
Q29udGV4dDpuaWxdOwpAQCAtMTQwLDk4MDEgKzE4MywyNjA5IEBAIGluZGV4IGNiNDgyZDA1Yi4u
NmNlZjdkM2RkIDEwMDY0NAogICAgICAgICAgbVN3YXBMYXllciA9IG5pbDsKICAgICAgfQogIAot
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3Rz
L2dsbWFyazJCZW5jaG1hcmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvZ2xtYXJrMkJlbmNobWFyay5jcHAKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAotaW5kZXggMTc0ZmNjNjczNWEuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9nbG1hcmsyQmVuY2htYXJrLmNwcAotKysrIC9k
ZXYvbnVsbAotQEAgLTEsMjg1ICswLDAgQEAKLS0vLwotLS8vIENvcHlyaWdodCAyMDE5IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0tLy8KLS0vLyBnbG1hcmsyQmVu
Y2htYXJrOgotLS8vICAgUnVucyB0aGUgZ2xtYXJrMiBiZW5jaG1hcmsuCi0tLy8KLS0KLS0jaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLS0KLS0jaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8
c3N0cmVhbT4KLS0KLS0jaW5jbHVkZSAiLi4vcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3Bl
cmZfcmVzdWx0X3JlcG9ydGVyLmgiCi0tI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3RBcmdzLmgiCi0t
I2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgotLSNpbmNsdWRlICJjb21tb24vc3lzdGVtX3V0
aWxzLmgiCi0tI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCi0tI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgotLSNpbmNsdWRlICJ1
dGlsL3Rlc3RfdXRpbHMuaCIKLS0KLS11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0tCi0tbmFtZXNw
YWNlCi0tewotLQotLXN0cnVjdCBCZW5jaG1hcmtJbmZvCi0tewotLSAgICBjb25zdCBjaGFyICpn
bG1hcmsyQ29uZmlnOwotLSAgICBjb25zdCBjaGFyICpuYW1lOwotLX07Ci0tCi0tLy8gRWFjaCBn
bG1hcmsyIHNjZW5lIGlzIGluZGl2aWR1YWxseSBiZW5jaG1hcmtlZC4gIElmIGdsbWFyazIgaXMg
cnVuIHdpdGhvdXQgYSBzcGVjaWZpYyBiZW5jaG1hcmssCi0tLy8gaXQgY2FuIHByb2R1Y2UgYW4g
YWdncmVnYXRlIHNjb3JlLCB3aGljaCBpcyBub3QgaW50ZXJlc3RpbmcgYXQgdGhlIG1vbWVudC4g
IEFkZGluZyBhbiBlbXB0eQotLS8vIHN0cmluZyAoIiIpIHRvIHRoaXMgbGlzdCB3aWxsIGVuYWJs
ZSBhIHRlc3Qgd2hlcmUgZ2xtYXJrMiBpcyBydW4gd2l0aCB0aGUgZGVmYXVsdCBzY2VuZXMgYW5k
IHRoZQotLS8vIHNjb3JlIGZvciBlYWNoIHRlc3QgYXMgd2VsbCBhcyB0aGUgb3ZlcmFsbCBzY29y
ZSBpcyBvdXRwdXQuCi0tY29uc3RleHByIEJlbmNobWFya0luZm8ga0JlbmNobWFya3NbXSA9IHsK
LS0gICAgeyJidWlsZDp1c2UtdmJvPWZhbHNlIiwgImJ1aWxkIn0sCi0tICAgIHsiYnVpbGQ6dXNl
LXZibz10cnVlIiwgImJ1aWxkX3ZibyJ9LAotLSAgICB7InRleHR1cmU6dGV4dHVyZS1maWx0ZXI9
bmVhcmVzdCIsICJ0ZXh0dXJlX25lYXJlc3QifSwKLS0gICAgeyJ0ZXh0dXJlOnRleHR1cmUtZmls
dGVyPWxpbmVhciIsICJ0ZXh0dXJlX2xpbmVhciJ9LAotLSAgICB7InRleHR1cmU6dGV4dHVyZS1m
aWx0ZXI9bWlwbWFwIiwgInRleHR1cmVfbWlwbWFwIn0sCi0tICAgIHsic2hhZGluZzpzaGFkaW5n
PWdvdXJhdWQiLCAic2hhZGluZ19nb3VyYXVkIn0sCi0tICAgIHsic2hhZGluZzpzaGFkaW5nPWJs
aW5uLXBob25nLWluZiIsICJzaGFkaW5nX2JsaW5uX3Bob25nIn0sCi0tICAgIHsic2hhZGluZzpz
aGFkaW5nPXBob25nIiwgInNoYWRpbmdfcGhvbmcifSwKLS0gICAgeyJzaGFkaW5nOnNoYWRpbmc9
Y2VsIiwgInNoYWRpbmdfY2VsIn0sCi0tICAgIHsiYnVtcDpidW1wLXJlbmRlcj1oaWdoLXBvbHki
LCAiYnVtcF9oaWdoX3BvbHkifSwKLS0gICAgeyJidW1wOmJ1bXAtcmVuZGVyPW5vcm1hbHMiLCAi
YnVtcF9ub3JtYWxzIn0sCi0tICAgIHsiYnVtcDpidW1wLXJlbmRlcj1oZWlnaHQiLCAiYnVtcF9o
ZWlnaHQifSwKLS0gICAgeyJlZmZlY3QyZDprZXJuZWw9MCwxLDA7MSwtNCwxOzAsMSwwOyIsICJl
ZmZlY3QyZF9lZGdlIn0sCi0tICAgIHsiZWZmZWN0MmQ6a2VybmVsPTEsMSwxLDEsMTsxLDEsMSwx
LDE7MSwxLDEsMSwxOyIsICJlZmZlY3QyZF9ibHVyIn0sCi0tICAgIHsicHVsc2FyOmxpZ2h0PWZh
bHNlOnF1YWRzPTU6dGV4dHVyZT1mYWxzZSIsICJwdWxzYXIifSwKLS0gICAgeyJkZXNrdG9wOmJs
dXItcmFkaXVzPTU6ZWZmZWN0PWJsdXI6cGFzc2VzPTE6c2VwYXJhYmxlPXRydWU6d2luZG93cz00
IiwgImRlc2t0b3BfYmx1ciJ9LAotLSAgICB7ImRlc2t0b3A6ZWZmZWN0PXNoYWRvdzp3aW5kb3dz
PTQiLCAiZGVza3RvcF9zaGFkb3cifSwKLS0gICAgeyJidWZmZXI6Y29sdW1ucz0yMDA6aW50ZXJs
ZWF2ZT1mYWxzZTp1cGRhdGUtZGlzcGVyc2lvbj0wLjk6dXBkYXRlLWZyYWN0aW9uPTAuNTp1cGRh
dGUtbWV0aG9kPSIKLS0gICAgICJtYXAiLAotLSAgICAgImJ1ZmZlcl9tYXAifSwKLS0gICAgeyJi
dWZmZXI6Y29sdW1ucz0yMDA6aW50ZXJsZWF2ZT1mYWxzZTp1cGRhdGUtZGlzcGVyc2lvbj0wLjk6
dXBkYXRlLWZyYWN0aW9uPTAuNTp1cGRhdGUtbWV0aG9kPSIKLS0gICAgICJzdWJkYXRhIiwKLS0g
ICAgICJidWZmZXJfc3ViZGF0YSJ9LAotLSAgICB7ImJ1ZmZlcjpjb2x1bW5zPTIwMDppbnRlcmxl
YXZlPXRydWU6dXBkYXRlLWRpc3BlcnNpb249MC45OnVwZGF0ZS1mcmFjdGlvbj0wLjU6dXBkYXRl
LW1ldGhvZD0iCi0tICAgICAibWFwIiwKLS0gICAgICJidWZmZXJfbWFwX2ludGVybGVhdmUifSwK
LS0gICAgeyJpZGVhczpzcGVlZD1kdXJhdGlvbiIsICJpZGVhcyJ9LAotLSAgICB7ImplbGx5Zmlz
aCIsICJqZWxseWZpc2gifSwKLS0gICAgeyJ0ZXJyYWluIiwgInRlcnJhaW4ifSwKLS0gICAgeyJz
aGFkb3ciLCAic2hhZG93In0sCi0tICAgIHsicmVmcmFjdCIsICJyZWZyYWN0In0sCi0tICAgIHsi
Y29uZGl0aW9uYWxzOmZyYWdtZW50LXN0ZXBzPTA6dmVydGV4LXN0ZXBzPTAiLCAiY29uZGl0aW9u
YWxzIn0sCi0tICAgIHsiY29uZGl0aW9uYWxzOmZyYWdtZW50LXN0ZXBzPTU6dmVydGV4LXN0ZXBz
PTAiLCAiY29uZGl0aW9uYWxzX2ZyYWdtZW50In0sCi0tICAgIHsiY29uZGl0aW9uYWxzOmZyYWdt
ZW50LXN0ZXBzPTA6dmVydGV4LXN0ZXBzPTUiLCAiY29uZGl0aW9uYWxzX3ZlcnRleCJ9LAotLSAg
ICB7ImZ1bmN0aW9uOmZyYWdtZW50LWNvbXBsZXhpdHk9bG93OmZyYWdtZW50LXN0ZXBzPTUiLCAi
ZnVuY3Rpb24ifSwKLS0gICAgeyJmdW5jdGlvbjpmcmFnbWVudC1jb21wbGV4aXR5PW1lZGl1bTpm
cmFnbWVudC1zdGVwcz01IiwgImZ1bmN0aW9uX2NvbXBsZXgifSwKLS0gICAgeyJsb29wOmZyYWdt
ZW50LWxvb3A9ZmFsc2U6ZnJhZ21lbnQtc3RlcHM9NTp2ZXJ0ZXgtc3RlcHM9NSIsICJsb29wX25v
X2ZzbG9vcCJ9LAotLSAgICB7Imxvb3A6ZnJhZ21lbnQtc3RlcHM9NTpmcmFnbWVudC11bmlmb3Jt
PWZhbHNlOnZlcnRleC1zdGVwcz01IiwgImxvb3Bfbm9fdW5pZm9ybSJ9LAotLSAgICB7Imxvb3A6
ZnJhZ21lbnQtc3RlcHM9NTpmcmFnbWVudC11bmlmb3JtPXRydWU6dmVydGV4LXN0ZXBzPTUiLCAi
bG9vcCJ9LAotLX07Ci0tCi0tdXNpbmcgR0xNYXJrMkJlbmNobWFya1Rlc3RQYXJhbXMgPSBzdGQ6
OnR1cGxlPFBsYXRmb3JtUGFyYW1ldGVycywgc2l6ZV90PjsKLS1zdGQ6OnN0cmluZyBHTE1hcmsy
QmVuY2htYXJrUHJpbnQoCi0tICAgIGNvbnN0IDo6dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxHTE1h
cmsyQmVuY2htYXJrVGVzdFBhcmFtcz4gJnBhcmFtc0luZm8pCi0tewotLSAgICBjb25zdCBHTE1h
cmsyQmVuY2htYXJrVGVzdFBhcmFtcyAmcGFyYW1zID0gcGFyYW1zSW5mby5wYXJhbTsKLS0gICAg
c3RkOjpvc3RyaW5nc3RyZWFtIG91dDsKLS0KLS0gICAgb3V0IDw8IHN0ZDo6Z2V0PDA+KHBhcmFt
cykgPDwgJ18nOwotLSAgICBvdXQgPDwga0JlbmNobWFya3Nbc3RkOjpnZXQ8MT4ocGFyYW1zKV0u
bmFtZTsKLS0KLS0gICAgcmV0dXJuIG91dC5zdHIoKTsKLS19Ci0tCi0tY2xhc3MgR0xNYXJrMkJl
bmNobWFyayA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPEdMTWFyazJCZW5jaG1hcmtU
ZXN0UGFyYW1zPgotLXsKLS0gIHB1YmxpYzoKLS0gICAgR0xNYXJrMkJlbmNobWFyaygpCi0tICAg
IHsKLS0gICAgICAgIHN3aXRjaCAoc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSkuZ2V0UmVuZGVyZXIo
KSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFOgotLSAgICAgICAgICAgICAgICBtQmFja2VuZCA9ICJkM2QxMSI7Ci0tICAg
ICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMRVNfQU5HTEU6Ci0tICAgICAgICAgICAgICAgIG1CYWNrZW5kID0gImdsIjsK
LS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9WVUxLQU5fQU5HTEU6Ci0tICAgICAgICAgICAgICAgIG1CYWNrZW5kID0gInZ1
bGthbiI7Ci0tICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0t
ICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotLSAgICAgICAgc3RkOjpzdHJpbmcg
c3RvcnkgPSBrQmVuY2htYXJrc1tzdGQ6OmdldDwxPihHZXRQYXJhbSgpKV0ubmFtZTsKLS0gICAg
ICAgIG1SZXBvcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8cGVyZl90ZXN0OjpQZXJmUmVzdWx0UmVw
b3J0ZXI+KCJnbG1hcmsyXyIgKyBtQmFja2VuZCwgc3RvcnkpOwotLSAgICAgICAgbVJlcG9ydGVy
LT5SZWdpc3RlckltcG9ydGFudE1ldHJpYygiLmZwcyIsICJmcHMiKTsKLS0gICAgICAgIG1SZXBv
cnRlci0+UmVnaXN0ZXJJbXBvcnRhbnRNZXRyaWMoIi5zY29yZSIsICJzY29yZSIpOwotLSAgICB9
Ci0tCi0tICAgIHZvaWQgcnVuKCkKLS0gICAgewotLSAgICAgICAgLy8gT25seSBzdXBwb3J0ZWQg
b24gTGludXggYW5kIFdpbmRvd3MgYXQgdGhlIG1vbWVudC4KLS0gICAgICAgIGlmICghSXNMaW51
eCgpICYmICFJc1dpbmRvd3MoKSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICByZXR1cm47Ci0t
ICAgICAgICB9Ci0tCi0tICAgICAgICBjb25zdCBCZW5jaG1hcmtJbmZvIGJlbmNobWFya0luZm8g
PSBrQmVuY2htYXJrc1tzdGQ6OmdldDwxPihHZXRQYXJhbSgpKV07Ci0tICAgICAgICBjb25zdCBj
aGFyICpiZW5jaG1hcmsgICAgICAgICAgICAgPSBiZW5jaG1hcmtJbmZvLmdsbWFyazJDb25maWc7
Ci0tICAgICAgICBjb25zdCBjaGFyICpiZW5jaG1hcmtOYW1lICAgICAgICAgPSBiZW5jaG1hcmtJ
bmZvLm5hbWU7Ci0tICAgICAgICBib29sIGNvbXBsZXRlUnVuICAgICAgICAgICAgICAgICAgPSBi
ZW5jaG1hcmsgPT0gbnVsbHB0ciB8fCBiZW5jaG1hcmtbMF0gPT0gJ1wwJzsKLS0KLS0gICAgICAg
IE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBjd2QgPSBHZXRDV0QoKTsKLS0KLS0gICAgICAgIC8vIFNl
dCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZXhlY3V0YWJsZSdzLCBhcyB0
aGUgZGF0YSBwYXRoIG9mIGdsbWFyazIgaXMKLS0gICAgICAgIC8vIHNldCByZWxhdGl2ZSB0byB0
aGF0IHBhdGguCi0tICAgICAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlRGlyID0gR2V0RXhlY3V0
YWJsZURpcmVjdG9yeSgpOwotLSAgICAgICAgU2V0Q1dEKGV4ZWN1dGFibGVEaXIuY19zdHIoKSk7
Ci0tICAgICAgICBTZXRFbnZpcm9ubWVudFZhcigiQU5HTEVfREVGQVVMVF9QTEFURk9STSIsIG1C
YWNrZW5kLmNfc3RyKCkpOwotLQotLSAgICAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBh
cmdzID0gewotLSAgICAgICAgICAgICJnbG1hcmsyX2FuZ2xlIiwKLS0gICAgICAgIH07Ci0tICAg
ICAgICBpZiAoT25lRnJhbWUoKSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBhcmdzLnB1c2hf
YmFjaygiLS12YWxpZGF0ZSIpOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKCFjb21wbGV0ZVJ1
bikKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBhcmdzLnB1c2hfYmFjaygiLS1iZW5jaG1hcmsi
KTsKLS0gICAgICAgICAgICBhcmdzLnB1c2hfYmFjayhiZW5jaG1hcmspOwotLSAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiUnVubmluZyBiZW5jaG1hcms6ICVzXG4iLCBiZW5jaG1hcmspOwot
LSAgICAgICAgfQotLSAgICAgICAgYXJncy5wdXNoX2JhY2sobnVsbHB0cik7Ci0tCi0tICAgICAg
ICBQcm9jZXNzSGFuZGxlIHByb2Nlc3MoYXJncywgdHJ1ZSwgZmFsc2UpOwotLSAgICAgICAgQVNT
RVJUX1RSVUUocHJvY2VzcyAmJiBwcm9jZXNzLT5zdGFydGVkKCkpOwotLSAgICAgICAgQVNTRVJU
X1RSVUUocHJvY2Vzcy0+ZmluaXNoKCkpOwotLQotLSAgICAgICAgLy8gUmVzdG9yZSB0aGUgY3Vy
cmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIG5leHQgdGVzdHMuCi0tICAgICAgICBpZiAo
Y3dkLnZhbGlkKCkpCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgU2V0Q1dEKGN3ZC52YWx1ZSgp
LmNfc3RyKCkpOwotLSAgICAgICAgfQotLQotLSAgICAgICAgQVNTRVJUX0VRKEVYSVRfU1VDQ0VT
UywgcHJvY2Vzcy0+Z2V0RXhpdENvZGUoKSk7Ci0tCi0tICAgICAgICBpZiAoIU9uZUZyYW1lKCkp
Ci0tICAgICAgICB7Ci0tICAgICAgICAgICAgc3RkOjpzdHJpbmcgb3V0cHV0ID0gcHJvY2Vzcy0+
Z2V0U3Rkb3V0KCk7Ci0tICAgICAgICAgICAgcGFyc2VPdXRwdXQob3V0cHV0LCBiZW5jaG1hcmtO
YW1lLCBjb21wbGV0ZVJ1bik7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0KLS0gIHByaXZhdGU6Ci0t
ICAgIHZvaWQgcGFyc2VPdXRwdXQoY29uc3Qgc3RkOjpzdHJpbmcgJm91dHB1dCwgY29uc3QgY2hh
ciAqYmVuY2htYXJrTmFtZSwgYm9vbCBjb21wbGV0ZVJ1bikKLS0gICAgewotLSAgICAgICAgLy8g
T3V0cHV0IGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgotLSAgICAgICAgLy8KLS0gICAgICAg
IC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0gICAgICAgIC8vICAgICBnbG1hcmsyIDIwMTcuMDcKLS0gICAgICAgIC8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gICAgICAg
IC8vICAgICBPcGVuR0wgSW5mb3JtYXRpb24KLS0gICAgICAgIC8vICAgICBHTF9WRU5ET1I6ICAg
ICAuLi4KLS0gICAgICAgIC8vICAgICBHTF9SRU5ERVJFUjogICAuLi4KLS0gICAgICAgIC8vICAg
ICBHTF9WRVJTSU9OOiAgICAuLi4KLS0gICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gICAgICAgIC8vIFt0ZXN0XSBjb25m
aWc6IEZQUzogdWludCBGcmFtZVRpbWU6IGZsb2F0IG1zCi0tICAgICAgICAvLyBbdGVzdF0gY29u
ZmlnOiBOb3QgU3VwcG9ydGVkCi0tICAgICAgICAvLyAuLi4KLS0gICAgICAgIC8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gICAgICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG1hcmsyIFNjb3JlOiB1aW50
Ci0tICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tICAgICAgICAvLwotLSAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBza2lw
cyB0aGUgaGVhZGVyLCBwcmludHMgb25lIGxpbmUgZm9yIGVhY2ggdGVzdC9jb25maWcgbGluZSB3
aGVyZSB0aGVyZSdzCi0tICAgICAgICAvLyBhbiBGUFMgdmFsdWUsIGFuZCBmaW5hbGx5IHByaW50
cyB0aGUgb3ZlcmFsbCBzY29yZS4KLS0gICAgICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBnbG1hcmsy
T3V0cHV0KG91dHB1dCk7Ci0tICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotLQotLSAgICAgICAg
Ly8gRXhwZWN0ID09PT0gYXQgdGhlIHRvcCBvZiB0aGUgaGVhZGVyCi0tICAgICAgICBzdGQ6Omdl
dGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7Ci0tICAgICAgICBBU1NFUlRfRVEoJz0nLCBsaW5l
WzBdKTsKLS0KLS0gICAgICAgIC8vIFNraXAgb25lIGxpbmUKLS0gICAgICAgIHN0ZDo6Z2V0bGlu
ZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKLS0KLS0gICAgICAgIC8vIEV4cGVjdCA9PT09IGluIHRo
ZSBtaWRkbGUgb2YgdGhlIGhlYWRlcgotLSAgICAgICAgc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRw
dXQsIGxpbmUpOwotLSAgICAgICAgQVNTRVJUX0VRKCc9JywgbGluZVswXSk7Ci0tCi0tICAgICAg
ICAvLyBTa2lwIGZvdXIgbGluZXMKLS0gICAgICAgIHN0ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0
LCBsaW5lKTsKLS0gICAgICAgIHN0ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKLS0g
ICAgICAgIHN0ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKLS0gICAgICAgIHN0ZDo6
Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKLS0KLS0gICAgICAgIC8vIFRoZSBmb3VydGgg
bGluZSBpcyB0aGUgR0xfVkVSU0lPTi4gIEV4cGVjdCBpdCB0byBpbmNsdWRlIEFOR0xFLCBvdGhl
cndpc2Ugd2UgYXJlIG5vdAotLSAgICAgICAgLy8gcnVubmluZyBhZ2FpbnN0IEFOR0xFLgotLSAg
ICAgICAgQVNTRVJUX05FKGxpbmUuZmluZCgiQU5HTEUiKSwgc3RkOjpzdHJpbmc6Om5wb3MpOwot
LQotLSAgICAgICAgLy8gRXhwZWN0ID09PT0gYXQgdGhlIGJvdHRvbSBvZiB0aGUgaGVhZGVyCi0t
ICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7Ci0tICAgICAgICBBU1NF
UlRfRVEoJz0nLCBsaW5lWzBdKTsKLS0KLS0gICAgICAgIC8vIFJlYWQgY29uZmlncyB1bnRpbCB0
aGUgdG9wIG9mIHRoZSBmb290ZXIgaXMgcmVhY2hlZAotLSAgICAgICAgd2hpbGUgKHN0ZDo6Z2V0
bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKSAmJiBsaW5lWzBdICE9ICc9JykKLS0gICAgICAgIHsK
LS0gICAgICAgICAgICAvLyBQYXJzZSB0aGUgbGluZQotLSAgICAgICAgICAgIHN0ZDo6aXN0cmlu
Z3N0cmVhbSBsaW4obGluZSk7Ci0tCi0tICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGVzdE5hbWUs
IHRlc3RDb25maWc7Ci0tICAgICAgICAgICAgbGluID4+IHRlc3ROYW1lID4+IHRlc3RDb25maWc7
Ci0tICAgICAgICAgICAgRVhQRUNUX1RSVUUobGluKTsKLS0KLS0gICAgICAgICAgICBzdGQ6OnN0
cmluZyBmcHNUYWcsIGZyYW1ldGltZVRhZzsKLS0gICAgICAgICAgICBzaXplX3QgZnBzOwotLSAg
ICAgICAgICAgIGZsb2F0IGZyYW1ldGltZTsKLS0KLS0gICAgICAgICAgICBsaW4gPj4gZnBzVGFn
ID4+IGZwcyA+PiBmcmFtZXRpbWVUYWcgPj4gZnJhbWV0aW1lOwotLQotLSAgICAgICAgICAgIC8v
IElmIHRoZSBsaW5lIGlzIG5vdCBpbiBgRlBTOiB1aW50IEZyYW1lVGltZTogRmxvYXQgbXNgIGZv
cm1hdCwgdGhlIHRlc3QgaXMgbm90Ci0tICAgICAgICAgICAgLy8gc3VwcG9ydGVkLiAgSXQgd2ls
bCBiZSBza2lwcGVkLgotLSAgICAgICAgICAgIGlmICghbGluKQotLSAgICAgICAgICAgIHsKLS0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0tICAgICAgICAgICAgfQotLQotLSAgICAgICAgICAg
IEVYUEVDVF9FUSgiRlBTOiIsIGZwc1RhZyk7Ci0tICAgICAgICAgICAgRVhQRUNUX0VRKCJGcmFt
ZVRpbWU6IiwgZnJhbWV0aW1lVGFnKTsKLS0KLS0gICAgICAgICAgICBpZiAoIWNvbXBsZXRlUnVu
KQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgbVJlcG9ydGVyLT5BZGRSZXN1bHQo
Ii5mcHMiLCBmcHMpOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0KLS0gICAgICAgIC8v
IEdldCB0aGUgc2NvcmUgbGluZTogYGdsbWFyazIgU2NvcmU6IHVpbnRgCi0tICAgICAgICBzdGQ6
OnN0cmluZyBnbG1hcmsyVGFnLCBzY29yZVRhZzsKLS0gICAgICAgIHNpemVfdCBzY29yZTsKLS0g
ICAgICAgIGdsbWFyazJPdXRwdXQgPj4gZ2xtYXJrMlRhZyA+PiBzY29yZVRhZyA+PiBzY29yZTsK
LS0gICAgICAgIEVYUEVDVF9UUlVFKGdsbWFyazJPdXRwdXQpOwotLSAgICAgICAgRVhQRUNUX0VR
KCJnbG1hcmsyIiwgZ2xtYXJrMlRhZyk7Ci0tICAgICAgICBFWFBFQ1RfRVEoIlNjb3JlOiIsIHNj
b3JlVGFnKTsKLS0KLS0gICAgICAgIGlmIChjb21wbGV0ZVJ1bikKLS0gICAgICAgIHsKLS0gICAg
ICAgICAgICBtUmVwb3J0ZXItPkFkZFJlc3VsdCgiLnNjb3JlIiwgc2NvcmUpOwotLSAgICAgICAg
fQotLSAgICB9Ci0tCi0tICAgIHN0ZDo6c3RyaW5nIG1CYWNrZW5kID0gImludmFsaWQiOwotLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8cGVyZl90ZXN0OjpQZXJmUmVzdWx0UmVwb3J0ZXI+IG1SZXBvcnRl
cjsKLS19OwotLQotLVRFU1RfUChHTE1hcmsyQmVuY2htYXJrLCBSdW4pCi0tewotLSAgICBydW4o
KTsKLS19Ci0tCi0tQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9DT01CSU5FXzEoR0xNYXJrMkJlbmNo
bWFyaywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE1hcmsyQmVuY2htYXJr
UHJpbnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2Uo
c3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgQXJyYXlTaXplKGtCZW5jaG1hcmtzKSksCi0tICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0tICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0tICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX1ZVTEtBTigpKTsKLS0KLS19ICAvLyBuYW1lc3BhY2UKLWRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9nbG1hcmsyL0JVSUxELmdu
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvZ2xtYXJrMi9CVUlMRC5nbgot
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAyNWFlMTMzOTg2YS4uMDAwMDAwMDAwMDAK
LS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2dsbWFyazIvQlVJTEQu
Z24KLSsrKyAvZGV2L251bGwKLUBAIC0xLDQyMyArMCwwIEBACi0tIyBDb3B5cmlnaHQgMjAxOSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLSMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS0jCi0tIyBCdWlsZCBpbnRl
Z3JhdGlvbiBmb3IgZ2xtYXJrMi4KLS0KLS1pbXBvcnQoIi4uLy4uL2duaS9hbmdsZS5nbmkiKQot
LQotLV9nbG1hcmsyX2dsYWRfY29tbW9uX3NvdXJjZXMgPSBbCi0tICAic3JjL3NyYy9nbGFkL2lu
Y2x1ZGUvZ2xhZC9lZ2wuaCIsCi0tICAic3JjL3NyYy9nbGFkL2luY2x1ZGUvZ2xhZC93Z2wuaCIs
Ci0tICAic3JjL3NyYy9nbGFkL3NyYy9lZ2wuYyIsCi0tXQotLQotLWlmIChpc193aW4pIHsKLS0g
IF9nbG1hcmsyX2dsYWRfY29tbW9uX3NvdXJjZXMgKz0gWyAic3JjL3NyYy9nbGFkL3NyYy93Z2wu
YyIgXQotLX0KLS0KLS1jb25maWcoImdsbWFyazJfZ2xhZF9jb25maWciKSB7Ci0tICBpbmNsdWRl
X2RpcnMgPSBbICJzcmMvc3JjL2dsYWQvaW5jbHVkZSIgXQotLX0KLS0KLS1zb3VyY2Vfc2V0KCJn
bG1hcmsyX2dsYWRfZ2xlcyIpIHsKLS0gIHNvdXJjZXMgPSBfZ2xtYXJrMl9nbGFkX2NvbW1vbl9z
b3VyY2VzICsgWwotLSAgICAgICAgICAgICAgInNyYy9zcmMvZ2xhZC9pbmNsdWRlL2dsYWQvZ2xl
czIuaCIsCi0tICAgICAgICAgICAgICAic3JjL3NyYy9nbGFkL3NyYy9nbGVzMi5jIiwKLS0gICAg
ICAgICAgICBdCi0tICBwdWJsaWNfY29uZmlncyA9IFsgIjpnbG1hcmsyX2dsYWRfY29uZmlnIiBd
Ci0tfQotLQotLXNvdXJjZV9zZXQoImdsbWFyazJfZ2xhZF9nbCIpIHsKLS0gIHNvdXJjZXMgPSBf
Z2xtYXJrMl9nbGFkX2NvbW1vbl9zb3VyY2VzICsgWwotLSAgICAgICAgICAgICAgInNyYy9zcmMv
Z2xhZC9pbmNsdWRlL2dsYWQvZ2wuaCIsCi0tICAgICAgICAgICAgICAic3JjL3NyYy9nbGFkL3Ny
Yy9nbC5jIiwKLS0gICAgICAgICAgICBdCi0tICBwdWJsaWNfY29uZmlncyA9IFsgIjpnbG1hcmsy
X2dsYWRfY29uZmlnIiBdCi0tfQotLQotLWdsbWFya19kYXRhX3BhdGggPSAiJHthbmdsZV9yb290
fS90aGlyZF9wYXJ0eS9nbG1hcmsyL3NyYy9kYXRhIgotLXJhd19nbG1hcmtfZGF0YV9wYXRoID0g
cmViYXNlX3BhdGgoZ2xtYXJrX2RhdGFfcGF0aCwgcm9vdF9idWlsZF9kaXIpCi0tCi0tY29uZmln
KCJnbG1hcmsyX2NvbW1vbl9jb25maWciKSB7Ci0tICBkZWZpbmVzID0gWyAiR0xNQVJLX0RBVEFf
UEFUSD1cIiR7cmF3X2dsbWFya19kYXRhX3BhdGh9XCIiIF0KLS0gIGluY2x1ZGVfZGlycyA9IFsg
InNyYy9zcmMiIF0KLS0gIGlmIChpc193aW4pIHsKLS0gICAgaW5jbHVkZV9kaXJzICs9IFsgInNy
Yy9zcmMvaW5jbHVkZSIgXQotLQotLSAgICAjIE1fUEkgaXMgbm9uc3RhbmRhcmQuCi0tICAgIGRl
ZmluZXMgKz0gWyAiX1VTRV9NQVRIX0RFRklORVMiIF0KLS0KLS0gICAgaWYgKCFpc19jbGFuZykg
ewotLSAgICAgIGNmbGFncyA9IFsKLS0gICAgICAgICMgTVNWQyB3YXJucyBhYm91dCB0aGUgY29w
eXJpZ2h0IGNoYXJhY3RlciBiZWluZyBpbGxlZ2FsLgotLSAgICAgICAgIi93ZDQ4MjgiLAotLQot
LSAgICAgICAgIyBBIHdhcm5pbmcgZ2VuZXJhdGVkIGluIHNjZW5lLWVmZmVjdC0yZCBpbiB2ZWMy
OjpjYWxjX29mZnNldAotLSAgICAgICAgIi93ZDQxNDYiLAotLSAgICAgIF0KLS0gICAgfQotLSAg
fQotLX0KLS0KLS1jb25maWcoImdsbWFyazJfZ2xlc19jb25maWciKSB7Ci0tICBkZWZpbmVzID0g
WyAiR0xNQVJLMl9VU0VfR0xFU3YyIiBdCi0tfQotLQotLWNvbmZpZygiZ2xtYXJrMl9nbF9jb25m
aWciKSB7Ci0tICBkZWZpbmVzID0gWyAiR0xNQVJLMl9VU0VfR0wiIF0KLS19Ci0tCi0tZ3JvdXAo
ImdsbWFyazJfZ2xlcyIpIHsKLS0gIHB1YmxpY19jb25maWdzID0gWwotLSAgICAiOmdsbWFyazJf
Y29tbW9uX2NvbmZpZyIsCi0tICAgICI6Z2xtYXJrMl9nbGVzX2NvbmZpZyIsCi0tICBdCi0tICBw
dWJsaWNfZGVwcyA9IFsKLS0gICAgIjpnbG1hcmsyX2dsYWRfZ2xlcyIsCi0tICBdCi0tfQotLQot
LWdyb3VwKCJnbG1hcmsyX2dsIikgewotLSAgcHVibGljX2NvbmZpZ3MgPSBbCi0tICAgICI6Z2xt
YXJrMl9jb21tb25fY29uZmlnIiwKLS0gICAgIjpnbG1hcmsyX2dsX2NvbmZpZyIsCi0tICBdCi0t
ICBwdWJsaWNfZGVwcyA9IFsKLS0gICAgIjpnbG1hcmsyX2dsYWRfZ2wiLAotLSAgXQotLX0KLS0K
LS0jIFN1cHBsaWVzIGNvbXBhdGlibGUgaGVhZGVycyBvbiBXaW4zMi4KLS1jb25maWcoImdsbWFy
azJfaGVhZGVyc19jb25maWciKSB7Ci0tICBpZiAoaXNfd2luKSB7Ci0tICAgIGlmIChpc19jbGFu
ZykgewotLSAgICAgIGNmbGFncyA9IFsKLS0gICAgICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIs
Ci0tICAgICAgICAiLVduby13cml0YWJsZS1zdHJpbmdzIiwKLS0gICAgICAgICItV25vLWV4dHJh
LXRva2VucyIsCi0tICAgICAgXQotLSAgICB9Ci0tICB9Ci0tfQotLQotLXNvdXJjZV9zZXQoImds
bWFyazJfaGVhZGVycyIpIHsKLS0gIHNvdXJjZXMgPSBbCi0tICAgICJzcmMvc3JjL2NhbnZhcy5o
IiwKLS0gICAgInNyYy9zcmMvZ2wtaGVhZGVycy5oIiwKLS0gICAgInNyYy9zcmMvZ2wtc3RhdGUt
ZWdsLmgiLAotLSAgICAic3JjL3NyYy9nbC1zdGF0ZS5oIiwKLS0gICAgInNyYy9zcmMvZ2wtdmlz
dWFsLWNvbmZpZy5oIiwKLS0gICAgInNyYy9zcmMvbWVzaC5oIiwKLS0gICAgInNyYy9zcmMvb3B0
aW9ucy5oIiwKLS0gICAgInNyYy9zcmMvc2NlbmUuaCIsCi0tICAgICJzcmMvc3JjL3NoYXJlZC1s
aWJyYXJ5LmgiLAotLSAgICAic3JjL3NyYy90ZXh0dXJlLmgiLAotLSAgXQotLQotLSAgaWYgKGlz
X2xpbnV4KSB7Ci0tICAgIHNvdXJjZXMgKz0gWyAic3JjL3NyYy9nbC1zdGF0ZS1nbHguaCIgXQot
LSAgfQotLSAgaWYgKGlzX3dpbikgewotLSAgICBzb3VyY2VzICs9IFsKLS0gICAgICAic3JjL3Ny
Yy9nbC1zdGF0ZS13Z2wuaCIsCi0tICAgICAgInNyYy9zcmMvaW5jbHVkZS9kaXJlbnQuaCIsCi0t
ICAgICAgInNyYy9zcmMvaW5jbHVkZS9nZXRvcHQuaCIsCi0tICAgICAgInNyYy9zcmMvaW5jbHVk
ZS9zeXMvdGltZS5oIiwKLS0gICAgXQotLSAgfQotLSAgcHVibGljX2NvbmZpZ3MgPSBbICI6Z2xt
YXJrMl9oZWFkZXJzX2NvbmZpZyIgXQotLSAgaW5jbHVkZV9kaXJzID0gWyAic3JjL3NyYyIgXQot
LX0KLS0KLS1jb25maWcoImdsbWFyazJfbGlibWF0cml4X2NvbmZpZyIpIHsKLS0gIGluY2x1ZGVf
ZGlycyA9IFsgInNyYy9zcmMvbGlibWF0cml4IiBdCi0tfQotLQotLXRlbXBsYXRlKCJnbG1hcmsy
X2xpYm1hdHJpeCIpIHsKLS0gIHNvdXJjZV9zZXQodGFyZ2V0X25hbWUpIHsKLS0gICAgZm9yd2Fy
ZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCAiKiIpCi0tICAgIHNvdXJjZXMgPSBbCi0tICAgICAg
InNyYy9zcmMvbGlibWF0cml4L2dsLWlmLmgiLAotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9s
b2cuY2MiLAotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9sb2cuaCIsCi0tICAgICAgInNyYy9z
cmMvbGlibWF0cml4L21hdC5jYyIsCi0tICAgICAgInNyYy9zcmMvbGlibWF0cml4L21hdC5oIiwK
LS0gICAgICAic3JjL3NyYy9saWJtYXRyaXgvcHJvZ3JhbS5jYyIsCi0tICAgICAgInNyYy9zcmMv
bGlibWF0cml4L3Byb2dyYW0uaCIsCi0tICAgICAgInNyYy9zcmMvbGlibWF0cml4L3NoYWRlci1z
b3VyY2UuY2MiLAotLSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9zaGFkZXItc291cmNlLmgiLAot
LSAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC9zdGFjay5oIiwKLS0gICAgICAic3JjL3NyYy9saWJt
YXRyaXgvdXRpbC5jYyIsCi0tICAgICAgInNyYy9zcmMvbGlibWF0cml4L3V0aWwuaCIsCi0tICAg
ICAgInNyYy9zcmMvbGlibWF0cml4L3ZlYy5oIiwKLS0gICAgXQotLQotLSAgICBpZiAoaXNfY2xh
bmcpIHsKLS0gICAgICBjZmxhZ3NfY2MgPSBbICItV25vLWltcGxpY2l0LWZhbGx0aHJvdWdoIiBd
Ci0tICAgIH0KLS0gICAgcHVibGljX2RlcHMgPSBbCi0tICAgICAgIjpnbG1hcmsyX2hlYWRlcnMi
LAotLSAgICBdCi0tICAgIHB1YmxpY19jb25maWdzID0gWyAiOmdsbWFyazJfbGlibWF0cml4X2Nv
bmZpZyIgXQotLSAgfQotLX0KLS0KLS1nbG1hcmsyX2xpYm1hdHJpeCgiZ2xtYXJrMl9saWJtYXRy
aXhfZ2xlcyIpIHsKLS0gIGRlcHMgPSBbCi0tICAgICI6Z2xtYXJrMl9nbGVzIiwKLS0gIF0KLS19
Ci0tCi0tZ2xtYXJrMl9saWJtYXRyaXgoImdsbWFyazJfbGlibWF0cml4X2dsIikgewotLSAgZGVw
cyA9IFsKLS0gICAgIjpnbG1hcmsyX2dsIiwKLS0gIF0KLS19Ci0tCi0tY29uZmlnKCJnbG1hcmsy
X3NjZW5lX2lkZWFzX2NvbmZpZyIpIHsKLS0gIGluY2x1ZGVfZGlycyA9IFsgInNyYy9zcmMvc2Nl
bmUtaWRlYXMiIF0KLS19Ci0tCi0tdGVtcGxhdGUoImdsbWFyazJfc2NlbmVfaWRlYXMiKSB7Ci0t
ICBzb3VyY2Vfc2V0KHRhcmdldF9uYW1lKSB7Ci0tICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20o
aW52b2tlciwgIioiKQotLSAgICBzb3VyY2VzID0gWwotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlk
ZWFzL2EuY2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL2NoYXJhY3RlcnMuaCIsCi0t
ICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvZC5jYyIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUt
aWRlYXMvZS5jYyIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvaS5jYyIsCi0tICAgICAg
InNyYy9zcmMvc2NlbmUtaWRlYXMvbGFtcC5jYyIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtaWRl
YXMvbGFtcC5oIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9sb2dvLmNjIiwKLS0gICAg
ICAic3JjL3NyYy9zY2VuZS1pZGVhcy9sb2dvLmgiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlk
ZWFzL20uY2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL24uY2MiLAotLSAgICAgICJz
cmMvc3JjL3NjZW5lLWlkZWFzL28uY2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL3Mu
Y2MiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL3NwbGluZXMuY2MiLAotLSAgICAgICJz
cmMvc3JjL3NjZW5lLWlkZWFzL3NwbGluZXMuaCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtaWRl
YXMvdC5jYyIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvdGFibGUuY2MiLAotLSAgICAg
ICJzcmMvc3JjL3NjZW5lLWlkZWFzL3RhYmxlLmgiLAotLSAgICBdCi0tICAgIHB1YmxpY19jb25m
aWdzID0gWyAiOmdsbWFyazJfc2NlbmVfaWRlYXNfY29uZmlnIiBdCi0tICB9Ci0tfQotLQotLWds
bWFyazJfc2NlbmVfaWRlYXMoImdsbWFyazJfc2NlbmVfaWRlYXNfZ2xlcyIpIHsKLS0gIGRlcHMg
PSBbCi0tICAgICI6Z2xtYXJrMl9nbGVzIiwKLS0gICAgIjpnbG1hcmsyX2xpYm1hdHJpeF9nbGVz
IiwKLS0gIF0KLS19Ci0tCi0tZ2xtYXJrMl9zY2VuZV9pZGVhcygiZ2xtYXJrMl9zY2VuZV9pZGVh
c19nbCIpIHsKLS0gIGRlcHMgPSBbCi0tICAgICI6Z2xtYXJrMl9nbCIsCi0tICAgICI6Z2xtYXJr
Ml9saWJtYXRyaXhfZ2wiLAotLSAgXQotLX0KLS0KLS1jb25maWcoImdsbWFyazJfc2NlbmVfdGVy
cmFpbl9jb25maWciKSB7Ci0tICBpbmNsdWRlX2RpcnMgPSBbICJzcmMvc3JjL3NjZW5lLXRlcnJh
aW4iIF0KLS19Ci0tCi0tdGVtcGxhdGUoImdsbWFyazJfc2NlbmVfdGVycmFpbiIpIHsKLS0gIHNv
dXJjZV9zZXQodGFyZ2V0X25hbWUpIHsKLS0gICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZv
a2VyLCAiKiIpCi0tICAgIHNvdXJjZXMgPSBbCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFp
bi9iYXNlLXJlbmRlcmVyLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9ibHVy
LXJlbmRlcmVyLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9jb3B5LXJlbmRl
cmVyLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9sdW1pbmFuY2UtcmVuZGVy
ZXIuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL25vcm1hbC1mcm9tLWhlaWdo
dC1yZW5kZXJlci5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vb3ZlcmxheS1y
ZW5kZXJlci5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vcmVuZGVyZXItY2hh
aW4uY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL3JlbmRlcmVyLmgiLAotLSAg
ICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vc2ltcGxleC1ub2lzZS1yZW5kZXJlci5jcHAiLAot
LSAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vdGVycmFpbi1yZW5kZXJlci5jcHAiLAotLSAg
ICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vdGV4dHVyZS1yZW5kZXJlci5jcHAiLAotLSAgICBd
Ci0tCi0tICAgIHB1YmxpY19jb25maWdzID0gWyAiOmdsbWFyazJfc2NlbmVfdGVycmFpbl9jb25m
aWciIF0KLS0gIH0KLS19Ci0tCi0tZ2xtYXJrMl9zY2VuZV90ZXJyYWluKCJnbG1hcmsyX3NjZW5l
X3RlcnJhaW5fZ2xlcyIpIHsKLS0gIGRlcHMgPSBbCi0tICAgICI6Z2xtYXJrMl9nbGVzIiwKLS0g
ICAgIjpnbG1hcmsyX2xpYm1hdHJpeF9nbGVzIiwKLS0gIF0KLS19Ci0tCi0tZ2xtYXJrMl9zY2Vu
ZV90ZXJyYWluKCJnbG1hcmsyX3NjZW5lX3RlcnJhaW5fZ2wiKSB7Ci0tICBkZXBzID0gWwotLSAg
ICAiOmdsbWFyazJfZ2wiLAotLSAgICAiOmdsbWFyazJfbGlibWF0cml4X2dsIiwKLS0gIF0KLS19
Ci0tCi0tdGVtcGxhdGUoImdsbWFyazJfY29tbW9uIikgewotLSAgc291cmNlX3NldCh0YXJnZXRf
bmFtZSkgewotLSAgICBmb3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIsICIqIikKLS0gICAg
c291cmNlcyA9IFsKLS0gICAgICAic3JjL3NyYy9iZW5jaG1hcmstY29sbGVjdGlvbi5jcHAiLAot
LSAgICAgICJzcmMvc3JjL2JlbmNobWFyay1jb2xsZWN0aW9uLmgiLAotLSAgICAgICJzcmMvc3Jj
L2JlbmNobWFyay5jcHAiLAotLSAgICAgICJzcmMvc3JjL2JlbmNobWFyay5oIiwKLS0gICAgICAi
c3JjL3NyYy9kZWZhdWx0LWJlbmNobWFya3MuaCIsCi0tICAgICAgInNyYy9zcmMvZ2wtaGVhZGVy
cy5jcHAiLAotLSAgICAgICJzcmMvc3JjL2dsLXZpc3VhbC1jb25maWcuY3BwIiwKLS0gICAgICAi
c3JjL3NyYy9nbC12aXN1YWwtY29uZmlnLmgiLAotLSAgICAgICJzcmMvc3JjL2ltYWdlLXJlYWRl
ci5jcHAiLAotLSAgICAgICJzcmMvc3JjL2ltYWdlLXJlYWRlci5oIiwKLS0gICAgICAic3JjL3Ny
Yy9tYWluLWxvb3AuY3BwIiwKLS0gICAgICAic3JjL3NyYy9tYWluLWxvb3AuaCIsCi0tICAgICAg
InNyYy9zcmMvbWVzaC5jcHAiLAotLSAgICAgICJzcmMvc3JjL21vZGVsLmNwcCIsCi0tICAgICAg
InNyYy9zcmMvbW9kZWwuaCIsCi0tICAgICAgInNyYy9zcmMvbmF0aXZlLXN0YXRlLmgiLAotLSAg
ICAgICJzcmMvc3JjL29wdGlvbnMuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1idWZmZXIu
Y3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1idWlsZC5jcHAiLAotLSAgICAgICJzcmMvc3Jj
L3NjZW5lLWJ1bXAuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1jbGVhci5jcHAiLAotLSAg
ICAgICJzcmMvc3JjL3NjZW5lLWNvbGxlY3Rpb24uaCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUt
Y29uZGl0aW9uYWxzLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtZGVmYXVsdC1vcHRpb25z
LmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtZGVza3RvcC5jcHAiLAotLSAgICAgICJzcmMv
c3JjL3NjZW5lLWVmZmVjdC0yZC5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLWZ1bmN0aW9u
LmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtZ3JpZC5jcHAiLAotLSAgICAgICJzcmMvc3Jj
L3NjZW5lLWlkZWFzLmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtamVsbHlmaXNoLmNwcCIs
Ci0tICAgICAgInNyYy9zcmMvc2NlbmUtamVsbHlmaXNoLmgiLAotLSAgICAgICJzcmMvc3JjL3Nj
ZW5lLWxvb3AuY3BwIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1wdWxzYXIuY3BwIiwKLS0gICAg
ICAic3JjL3NyYy9zY2VuZS1yZWZyYWN0LmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtcmVm
cmFjdC5oIiwKLS0gICAgICAic3JjL3NyYy9zY2VuZS1zaGFkaW5nLmNwcCIsCi0tICAgICAgInNy
Yy9zcmMvc2NlbmUtc2hhZG93LmNwcCIsCi0tICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi5j
cHAiLAotLSAgICAgICJzcmMvc3JjL3NjZW5lLXRleHR1cmUuY3BwIiwKLS0gICAgICAic3JjL3Ny
Yy9zY2VuZS5jcHAiLAotLSAgICAgICJzcmMvc3JjL3NoYXJlZC1saWJyYXJ5LmNwcCIsCi0tICAg
ICAgInNyYy9zcmMvdGV4dC1yZW5kZXJlci5jcHAiLAotLSAgICAgICJzcmMvc3JjL3RleHQtcmVu
ZGVyZXIuaCIsCi0tICAgICAgInNyYy9zcmMvdGV4dHVyZS5jcHAiLAotLSAgICBdCi0tCi0tICAg
IHB1YmxpY19kZXBzICs9IFsKLS0gICAgICAiOmdsbWFyazJfaGVhZGVycyIsCi0tICAgICAgIiR7
YW5nbGVfbGlicG5nX2Rpcn06bGlicG5nIiwKLS0gICAgICAiJHthbmdsZV9yb290fS90aGlyZF9w
YXJ0eTpqcGVnIiwKLS0gICAgXQotLSAgfQotLX0KLS0KLS1nbG1hcmsyX2NvbW1vbigiZ2xtYXJr
Ml9jb21tb25fZ2xlcyIpIHsKLS0gIHB1YmxpY19kZXBzID0gWwotLSAgICAiOmdsbWFyazJfZ2xl
cyIsCi0tICAgICI6Z2xtYXJrMl9saWJtYXRyaXhfZ2xlcyIsCi0tICAgICI6Z2xtYXJrMl9zY2Vu
ZV9pZGVhc19nbGVzIiwKLS0gICAgIjpnbG1hcmsyX3NjZW5lX3RlcnJhaW5fZ2xlcyIsCi0tICBd
Ci0tfQotLQotLWdsbWFyazJfY29tbW9uKCJnbG1hcmsyX2NvbW1vbl9nbCIpIHsKLS0gIHB1Ymxp
Y19kZXBzID0gWwotLSAgICAiOmdsbWFyazJfZ2wiLAotLSAgICAiOmdsbWFyazJfbGlibWF0cml4
X2dsIiwKLS0gICAgIjpnbG1hcmsyX3NjZW5lX2lkZWFzX2dsIiwKLS0gICAgIjpnbG1hcmsyX3Nj
ZW5lX3RlcnJhaW5fZ2wiLAotLSAgXQotLX0KLS0KLS1nbG1hcmsyX3ZlcnNpb24gPSAiMjAxNy4w
NyIKLS0KLS10ZW1wbGF0ZSgiZ2xtYXJrMl9leGUiKSB7Ci0tICBleGVjdXRhYmxlKHRhcmdldF9u
YW1lKSB7Ci0tICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52b2tlciwgIioiKQotLSAgICBz
b3VyY2VzICs9IFsKLS0gICAgICAic3JjL3NyYy9jYW52YXMtZ2VuZXJpYy5jcHAiLAotLSAgICAg
ICJzcmMvc3JjL2NhbnZhcy1nZW5lcmljLmgiLAotLSAgICAgICJzcmMvc3JjL21haW4uY3BwIiwK
LS0gICAgXQotLSAgICBkYXRhID0gWwotLSAgICAgICJzcmMvZGF0YS8iLAotLSAgICBdCi0tCi0t
ICAgIGRlZmluZXMgKz0gWyAiR0xNQVJLX1ZFUlNJT049XCIke2dsbWFyazJfdmVyc2lvbn1cIiIg
XQotLQotLSAgICBpZiAoaXNfd2luKSB7Ci0tICAgICAgZGVmaW5lcyArPSBbICJHTE1BUksyX1VT
RV9XSU4zMiIgXQotLSAgICAgIHNvdXJjZXMgKz0gWwotLSAgICAgICAgInNyYy9zcmMvbmF0aXZl
LXN0YXRlLXdpbjMyLmNwcCIsCi0tICAgICAgICAic3JjL3NyYy9uYXRpdmUtc3RhdGUtd2luMzIu
aCIsCi0tICAgICAgXQotLSAgICB9Ci0tICAgIGlmIChpc19saW51eCkgewotLSAgICAgIGRlZmlu
ZXMgKz0gWyAiR0xNQVJLMl9VU0VfWDExIiBdCi0tICAgICAgc291cmNlcyArPSBbCi0tICAgICAg
ICAic3JjL3NyYy9uYXRpdmUtc3RhdGUteDExLmNwcCIsCi0tICAgICAgICAic3JjL3NyYy9uYXRp
dmUtc3RhdGUteDExLmgiLAotLSAgICAgIF0KLS0gICAgICBsaWJzID0gWyAiWDExIiBdCi0tICAg
IH0KLS0gIH0KLS19Ci0tCi0tZ2xtYXJrMl9leGUoImdsbWFyazJfYW5nbGUiKSB7Ci0tICBzb3Vy
Y2VzID0gWwotLSAgICAic3JjL3NyYy9nbC1zdGF0ZS1lZ2wuY3BwIiwKLS0gIF0KLS0gIGRlcHMg
PSBbCi0tICAgICI6Z2xtYXJrMl9jb21tb25fZ2xlcyIsCi0tICBdCi0tICBkYXRhX2RlcHMgPSBb
Ci0tICAgICIke2FuZ2xlX3Jvb3R9OmxpYkVHTCIsCi0tICAgICIke2FuZ2xlX3Jvb3R9OmxpYkdM
RVN2MiIsCi0tICBdCi0tCi0tICBkZWZpbmVzID0gWwotLSAgICAiRUdMX0VHTF9QUk9UT1RZUEVT
PTEiLAotLSAgICAiR0xNQVJLMl9VU0VfRUdMIiwKLS0gIF0KLS0KLS0gIGlmIChpc19saW51eCAm
JiAhaXNfY29tcG9uZW50X2J1aWxkKSB7Ci0tICAgICMgU2V0IHJwYXRoIHRvIGZpbmQgc2hhcmVk
IGxpYnMgaW4gYSBub24tY29tcG9uZW50IGJ1aWxkLgotLSAgICBwdWJsaWNfY29uZmlncyA9IFsg
Ii8vYnVpbGQvY29uZmlnL2djYzpycGF0aF9mb3JfYnVpbHRfc2hhcmVkX2xpYnJhcmllcyIgXQot
LSAgfQotLX0KLS0KLS1pZiAoaXNfbGludXgpIHsKLS0gIGdsbWFyazJfZXhlKCJnbG1hcmsyX2ds
eCIpIHsKLS0gICAgc291cmNlcyA9IFsKLS0gICAgICAic3JjL3NyYy9nbC1zdGF0ZS1nbHguY3Bw
IiwKLS0gICAgICAic3JjL3NyYy9nbGFkL2luY2x1ZGUvZ2xhZC9nbHguaCIsCi0tICAgICAgInNy
Yy9zcmMvZ2xhZC9zcmMvZ2x4LmMiLAotLSAgICBdCi0tICAgIGRlcHMgPSBbCi0tICAgICAgIjpn
bG1hcmsyX2NvbW1vbl9nbCIsCi0tICAgIF0KLS0KLS0gICAgZGVmaW5lcyA9IFsgIkdMTUFSSzJf
VVNFX0dMWCIgXQotLSAgfQotLX0KLS0KLS0jIG9wZW5nbDMyLmxpYi9vcGVuZ2wzMi5kbGwgYXJl
IG5vdCBhdmFpbGFibGUgb24gV2luZG93cyBBUk02NC4KLS1pZiAoaXNfd2luICYmIHRhcmdldF9j
cHUgIT0gImFybTY0IikgewotLSAgZ2xtYXJrMl9leGUoImdsbWFyazJfd2dsIikgewotLSAgICBz
b3VyY2VzID0gWwotLSAgICAgICJzcmMvc3JjL2dsLXN0YXRlLXdnbC5jcHAiLAotLSAgICBdCi0t
ICAgIGRlcHMgPSBbCi0tICAgICAgIjpnbG1hcmsyX2NvbW1vbl9nbCIsCi0tICAgIF0KLS0KLS0g
ICAgbGlicyA9IFsgIm9wZW5nbDMyLmxpYiIgXQotLSAgICBkZWZpbmVzID0gWyAiR0xNQVJLMl9V
U0VfV0dMIiBdCi0tICB9Ci0tfQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3RoaXJkX3BhcnR5L2dsbWFyazIvUkVBRE1FLmFuZ2xlIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdGhpcmRfcGFydHkvZ2xtYXJrMi9SRUFETUUuYW5nbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAotaW5kZXggYTJiNjM3MWZlZDguLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9nbG1hcmsyL1JFQURNRS5hbmdsZQotKysrIC9kZXYvbnVs
bAotQEAgLTEsMTIgKzAsMCBAQAotLU5hbWU6IGdsbWFyazIKLS1TaG9ydCBOYW1lOiBnbG1hcmsy
Ci0tVVJMOiBodHRwczovL2dpdGh1Yi5jb20vZ2xtYXJrMi9nbG1hcmsyCi0tU2VjdXJpdHkgQ3Jp
dGljYWw6IG5vCi0tTGljZW5zZTogR1BMIHYzCi0tTGljZW5zZSBGaWxlOiBOT1RfU0hJUFBFRAot
LQotLURlc2NyaXB0aW9uOgotLWdsbWFyazIgaXMgYW4gT3BlbkdMIDIuMCBhbmQgRVMgMi4wIGJl
bmNobWFyay4KLS0KLS1nbG1hcmsyIGlzIGRldmVsb3BlZCBieSBBbGV4YW5kcm9zIEZyYW50emlz
IGFuZCBKZXNzZSBCYXJrZXIgYmFzZWQgb24gdGhlCi0tb3JpZ2luYWwgZ2xtYXJrIGJlbmNobWFy
ayBieSBCZW4gU21pdGguCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9v
bHMvZmxleC1iaXNvbi9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9m
bGV4LWJpc29uL1JFQURNRS5tZAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA4ZGZl
MTI2MjY2MC4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xz
L2ZsZXgtYmlzb24vUkVBRE1FLm1kCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMjkgKzAsMCBAQAot
LSMgZmxleCBhbmQgYmlzb24gYmluYXJpZXMKLS0KLS1UaGlzIGZvbGRlciBjb250YWlucyB0aGUg
ZmxleCBhbmQgYmlzb24gYmluYXJpZXMuIFdlIHVzZSB0aGVzZSBiaW5hcmllcyB0bwotLWdlbmVy
YXRlIHRoZSBBTkdMRSB0cmFuc2xhdG9yJ3MgbGV4ZXIgYW5kIHBhcnNlci4KLS0KLS1Vc2UgdGhl
IHNjcmlwdCBbYHVwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5YF0odXBkYXRlX2ZsZXhfYmlz
b25fYmluYXJpZXMucHkpCi0tdG8gdXBkYXRlIHRoZSB2ZXJzaW9ucyBvZiB0aGVzZSBiaW5hcmll
cyBpbiBjbG91ZCBzdG9yYWdlLiBJdCBtdXN0IGJlIHJ1biBvbgotLUxpbnV4IG9yIFdpbmRvd3Mu
IEl0IHdpbGwgdXBkYXRlIHRoZSBTSEFzIGZvciB5b3VyIHBsYXRmb3JtLiBBZnRlciBydW5uaW5n
IHRoZQotLXNjcmlwdCBydW4gYGdpdCBjb21taXRgIGFuZCB0aGVuIGBnaXQgY2wgdXBsb2FkYCB0
byBjb2RlIHJldmlldyB1c2luZyB0aGUgbm9ybWFsCi0tcmV2aWV3IHByb2Nlc3MuIFlvdSB3aWxs
IGFsc28gd2FudCB0byBydW4KLS1bYHNjcmlwdHMvcnVuX2NvZGVfZ2VuZXJhdGlvbi5weWBdKC4u
Ly4uL3NjcmlwdHMvcnVuX2NvZGVfZ2VuZXJhdGlvbi5weSkgdG8KLS11cGRhdGUgdGhlIGdlbmVy
YXRlZCBmaWxlcy4KLS0KLS1QbGVhc2UgdXBkYXRlIGJvdGggV2luZG93cyBhbmQgTGludXggYmlu
YXJpZXMgYXQgdGhlIHNhbWUgdGltZS4gVXNlIHR3byBDTHMuIE9uZQotLWZvciBlYWNoIHBsYXRm
b3JtLiBOb3RlIHRoYXQgd2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgTWFjIGZvciBnZW5lcmF0
aW5nIHRoZQotLWxleGVyIGFuZCBwYXJzZXIgZmlsZXMuIElmIHdlIGRvIHdlIHNob3VsZCBhZGQg
YSBmbGV4L2Jpc29uIGRvd25sb2FkIGZvciBNYWMgYXMKLS13ZWxsLgotLQotLUNvbnRhY3Qgam1h
ZGlsbCBvciBzeW91c3NlZmkgZm9yIGFueSBoZWxwIHdpdGggdXBkYXRpbmcgdGhlIGJpbmFyaWVz
LgotLQotLSMjIFVwZGF0aW5nIGZsZXggYW5kIGJpc29uIGJpbmFyaWVzCi0tCi0tVGhpcyBpcyBl
eHBlY3RlZCB0byBiZSBhIHJhcmUgb3BlcmF0aW9uLCBhbmQgaXMgY3VycmVudGx5IGRvbmUgYmFz
ZWQgb24gdGhlCi0tZm9sbG93aW5nIGluc3RydWN0aW9ucy4gIE5vdGU6IGdldCB0aGUgYmluYXJp
ZXMgZmlyc3Qgb24gd2luZG93cywgYXMgb25seSBhCi0tc2luZ2xlIG9wdGlvbiBpcyBhdmFpbGFi
bGUsIHRoZW4gYnVpbGQgdGhlIGJpbmFyaWVzIGZvciB0aGUgc2FtZSB2ZXJzaW9uIG9uCi0tTGlu
dXguCi0tCi0tIyMjIE9uIFdpbmRvd3MKLS0KLS1JbnN0YWxsIE1TeXMyICh4ODZfNjQpIGZyb20g
aHR0cDovL3d3dy5tc3lzMi5vcmcvIG9uIFdpbmRvd3MuICBgZmxleGAgc2hvdWxkCi0tYWxyZWFk
eSBiZSBpbnN0YWxsZWQuICBJbnN0YWxsIGJpc29uOgotLQotLWBgYAotLSQgcGFjbWFuIC1TIGJp
c29uCi0tYGBgCi0tCi0tTm90ZSB0aGUgdmVyc2lvbnMgb2YgZmxleCBhbmQgYmlzb24gc28gdGhl
IHNhbWUgdmVyc2lvbnMgY2FuIGJlIGJ1aWxkIG9uIExpbnV4LgotLUZvciBleGFtcGxlOgotLQot
LWBgYAotLSQgZmxleCAtLXZlcnNpb24KLS1mbGV4IDIuNi40Ci0tCi0tJCBiaXNvbiAtLXZlcnNp
b24KLS1iaXNvbiAoR05VIEJpc29uKSAzLjMuMgotLWBgYAotLQotLVRoZSBvbmx5IGRlcGVuZGVu
Y2llcyBmcm9tIE1TeXMyIHNob3VsZCBiZSB0aGUgZm9sbG93aW5nOgotLQotLWBgYAotLW1zeXMt
aW50bC04LmRsbAotLW1zeXMtaWNvbnYtMi5kbGwKLS1tc3lzLTIuMC5kbGwKLS1gYGAKLS0KLS1U
aGlzIGNhbiBiZSB2ZXJpZmllZCB3aXRoOgotLQotLWBgYAotLSQgbGRkIC91c3IvYmluL2ZsZXgK
LS0kIGxkZCAvdXNyL2Jpbi9iaXNvbgotLWBgYAotLQotLUFkZGl0aW9uYWxseSwgd2UgbmVlZCB0
aGUgYmluYXJ5IGZvciBtNCBhdCBgL3Vzci9iaW4vbTRgLgotLQotLUNvcHkgYWxsIHRoZXNlIDUg
ZmlsZXMgdG8gdGhpcyBkaXJlY3Rvcnk6Ci0tCi0tYGBgCi0tJCBjZCBhbmdsZS8KLS0kIGNwIC91
c3IvYmluL2ZsZXguZXhlIFwKLS0gICAgIC91c3IvYmluL2Jpc29uLmV4ZSBcCi0tICAgICAvdXNy
L2Jpbi9tNC5leGUgXAotLSAgICAgL3Vzci9iaW4vbXN5cy1pbnRsLTguZGxsIFwKLS0gICAgIC91
c3IvYmluL21zeXMtaWNvbnYtMi5kbGwgXAotLSAgICAgL3Vzci9iaW4vbXN5cy0yLjAuZGxsIFwK
LS0gICAgIHRvb2xzL2ZsZXgtYmlzb24vd2luZG93cy8KLS1gYGAKLS0KLS1VcGxvYWQgdGhlIGJp
bmFyaWVzOgotLQotLWBgYAotLSQgY2QgYW5nbGUvCi0tJCBweXRob24gdG9vbHMvZmxleC1iaXNv
bi91cGRhdGVfZmxleF9iaXNvbl9iaW5hcmllcy5weQotLWBgYAotLQotLSMjIyBPbiBMaW51eAot
LQotLWBgYAotLSMgR2V0IHRoZSBzb3VyY2Ugb2YgZmxleAotLSQgZ2l0IGNsb25lIGh0dHBzOi8v
Z2l0aHViLmNvbS93ZXN0ZXMvZmxleC5naXQKLS0kIGNkIGZsZXgvCi0tIyBDaGVja291dCB0aGUg
c2FtZSB2ZXJzaW9uIGFzIG1zeXMyIG9uIHdpbmRvd3MKLS0kIGdpdCBjaGVja291dCB2Mi42LjQK
LS0jIEJ1aWxkCi0tJCBhdXRvcmVjb25mIC1pCi0tJCBta2RpciBidWlsZCAmJiBjZCBidWlsZAot
LSQgLi4vY29uZmlndXJlIENGTEFHUz0iLU8yIC1EX0dOVV9TT1VSQ0UiCi0tJCBtYWtlIC1qCi0t
YGBgCi0tCi0tYGBgCi0tIyBHZXQgdGhlIHNvdXJjZSBvZiBiaXNvbgotLSQgY3VybCBodHRwOi8v
ZnRwLmdudS5vcmcvZ251L2Jpc29uL2Jpc29uLTMuMy4yLnRhci54eiB8IHRhciAteEoKLS0kIGNk
IGJpc29uLTMuMy4yCi0tIyBCdWlsZAotLSQgbWtkaXIgYnVpbGQgJiYgY2QgYnVpbGQKLS0kIC4u
L2NvbmZpZ3VyZSBDRkxBR1M9Ii1PMiIKLS0kIG1ha2UgLWoKLS1gYGAKLS0KLS1Ob3RlOiBCaXNv
bidzIFtob21lIHBhZ2VdW0Jpc29uXSBsaXN0cyBmdHAgc2VydmVyIGFuZCBvdGhlciBtaXJyb3Jz
LiAgSWYgdGhlCi0tYWJvdmUgbGluayBpcyBicm9rZW4sIHJlcGxhY2Ugd2l0aCBhIG1pcnJvci4K
LS0KLS1Db3B5IHRoZSAyIGV4ZWN1dGFibGVzIHRvIHRoaXMgZGlyZWN0b3J5OgotLQotLWBgYAot
LSQgY2QgYW5nbGUvCi0tJCBjcCAvcGF0aC90by9mbGV4L2J1aWxkL3NyYy9mbGV4IFwKLS0gICAg
IC9wYXRoL3RvL2Jpc29uL2J1aWxkL3NyYy9iaXNvbiBcCi0tICAgICB0b29scy9mbGV4LWJpc29u
L2xpbnV4LwotLWBgYAotLQotLVVwbG9hZCB0aGUgYmluYXJpZXM6Ci0tCi0tYGBgCi0tJCBjZCBh
bmdsZS8KLS0kIHB5dGhvbiB0b29scy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFy
aWVzLnB5Ci0tYGBgCi0tCi0tW0Jpc29uXTogaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9i
aXNvbi8KLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJp
c29uL2xpbnV4L2Jpc29uLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL2xpbnV4L2Jpc29uLnNoYTEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg
YzkzZDkyZGU0MTkuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90
b29scy9mbGV4LWJpc29uL2xpbnV4L2Jpc29uLnNoYTEKLSsrKyAvZGV2L251bGwKLUBAIC0xICsw
LDAgQEAKLS1lNjI4YjczY2QwYTc2N2Q5M2UxZjk0YjVhODZjZTUxY2E4M2M5OWQ1Ci1cIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL2xpbnV4L2ZsZXguc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3Rvb2xzL2ZsZXgtYmlzb24vbGludXgvZmxleC5zaGExCi1kZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKLWluZGV4IGQzNDAwNDdjYTEyLi4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9saW51eC9mbGV4LnNoYTEKLSsrKyAvZGV2L251
bGwKLUBAIC0xICswLDAgQEAKLS1lODMwZTZjMDUwOGQ5Njg1ODc2ZTc3MzA0YmJlN2M0YTEyMmMw
OGU4Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5Ly5naXRhdHRyaWJ1dGVz
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS8u
Z2l0YXR0cmlidXRlcwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwNjg4YzhhMTQ5
MS4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgt
Ymlzb24vdGhpcmRfcGFydHkvLmdpdGF0dHJpYnV0ZXMKLSsrKyAvZGV2L251bGwKLUBAIC0xICsw
LDAgQEAKLS0qICAgICAgICAgICAgICAgICAgICBlb2w9bGYKLWRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvTElD
RU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFy
dHkvbTRzdWdhci9MSUNFTlNFCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGQ1MTE5
MDVjMTY0Li4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMv
ZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL0xJQ0VOU0UKLSsrKyAvZGV2L251bGwKLUBA
IC0xLDMzOSArMCwwIEBACi0tCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKLS0JCSAg
ICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQotLQotLSBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotLSA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0tIEV2ZXJ5b25lIGlzIHBlcm1p
dHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwotLSBvZiB0aGlzIGxp
Y2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KLS0KLS0JCQkg
ICAgUHJlYW1ibGUKLS0KLS0gIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVz
aWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKLS1mcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQu
ICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLUxpY2Vuc2UgaXMgaW50ZW5k
ZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKLS1z
b2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVz
ZXJzLiAgVGhpcwotLUdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRo
ZSBGcmVlIFNvZnR3YXJlCi0tRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIg
cHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwotLXVzaW5nIGl0LiAgKFNvbWUgb3RoZXIg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKLS10aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBp
dCB0bwotLXlvdXIgcHJvZ3JhbXMsIHRvby4KLS0KLS0gIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBz
b2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKLS1wcmljZS4gIE91ciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91
Ci0taGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJl
IChhbmQgY2hhcmdlIGZvcgotLXRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJl
Y2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAotLWlmIHlvdSB3YW50IGl0LCB0aGF0IHlv
dSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0Ci0taW4gbmV3IGZy
ZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgot
LQotLSAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtlIHJlc3RyaWN0aW9u
cyB0aGF0IGZvcmJpZAotLWFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNr
IHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KLS1UaGVzZSByZXN0cmljdGlvbnMgdHJhbnNs
YXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQotLWRpc3RyaWJ1
dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1vZGlmeSBpdC4KLS0KLS0gIEZv
ciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdo
ZXRoZXIKLS1ncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRz
IGFsbCB0aGUgcmlnaHRzIHRoYXQKLS15b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0
IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQotLXNvdXJjZSBjb2RlLiAgQW5kIHlv
dSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKLS1yaWdodHMu
Ci0tCi0tICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJp
Z2h0IHRoZSBzb2Z0d2FyZSwgYW5kCi0tKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2gg
Z2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKLS1kaXN0cmlidXRlIGFuZC9vciBt
b2RpZnkgdGhlIHNvZnR3YXJlLgotLQotLSAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVj
dGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KLS10aGF0IGV2ZXJ5b25lIHVu
ZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQotLXNvZnR3
YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFz
c2VkIG9uLCB3ZQotLXdhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhleSBo
YXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCi0tdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNl
ZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKLS1hdXRob3JzJyBy
ZXB1dGF0aW9ucy4KLS0KLS0gIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5l
ZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCi0tcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhl
IGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQotLXByb2dyYW0gd2lsbCBpbmRp
dmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUKLS1w
cm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xl
YXIgdGhhdCBhbnkKLS1wYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVl
IHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgotLQotLSAgVGhlIHByZWNpc2UgdGVybXMgYW5k
IGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKLS1tb2RpZmljYXRpb24g
Zm9sbG93LgotLQotLQkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCi0tICAgVEVSTVMg
QU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9O
Ci0tCi0tICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3
b3JrIHdoaWNoIGNvbnRhaW5zCi0tYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9s
ZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKLS11bmRlciB0aGUgdGVybXMgb2YgdGhp
cyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCi0tcmVmZXJz
IHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFBy
b2dyYW0iCi0tbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsg
dW5kZXIgY29weXJpZ2h0IGxhdzoKLS10aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcg
dGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAotLWVpdGhlciB2ZXJiYXRpbSBvciB3aXRo
IG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCi0tbGFuZ3VhZ2Uu
ICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlv
biBpbgotLXRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVz
c2VkIGFzICJ5b3UiLgotLQotLUFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmli
dXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Ci0tY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7
IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgotLXJ1bm5pbmcgdGhlIFBy
b2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0K
LS1pcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2Vk
IG9uIHRoZQotLVByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVu
bmluZyB0aGUgUHJvZ3JhbSkuCi0tV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0
IHRoZSBQcm9ncmFtIGRvZXMuCi0tCi0tICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUg
dmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKLS1zb3VyY2UgY29kZSBhcyB5b3UgcmVj
ZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKLS1jb25zcGljdW91c2x5
IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCi0t
Y29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3Qg
YWxsIHRoZQotLW5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBh
YnNlbmNlIG9mIGFueSB3YXJyYW50eTsKLS1hbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBv
ZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCi0tYWxvbmcgd2l0aCB0aGUgUHJv
Z3JhbS4KLS0KLS1Zb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0
cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKLS15b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdh
cnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgotLQotLSAgMi4gWW91IG1h
eSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlv
bgotLW9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQg
Y29weSBhbmQKLS1kaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRo
ZSB0ZXJtcyBvZiBTZWN0aW9uIDEKLS1hYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0
IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgotLQotLSAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUg
bW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKLS0gICAgc3RhdGluZyB0
aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KLS0K
LS0gICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBw
dWJsaXNoLCB0aGF0IGluCi0tICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVy
aXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQotLSAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxp
Y2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAotLSAgICBwYXJ0aWVz
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCi0tCi0tICAgIGMpIElmIHRoZSBtb2Rp
ZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKLS0gICAg
d2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3Vj
aAotLSAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmlu
dCBvciBkaXNwbGF5IGFuCi0tICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlh
dGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQotLSAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3
YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUKLS0gICAgYSB3YXJyYW50
eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgotLSAg
ICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNv
cHkgb2YgdGhpcwotLSAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRz
ZWxmIGlzIGludGVyYWN0aXZlIGJ1dAotLSAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNo
IGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCi0tICAgIHRoZSBQcm9ncmFtIGlz
IG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQotLQotLVRoZXNlIHJlcXVp
cmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKLS1pZGVu
dGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQ
cm9ncmFtLAotLWFuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFu
ZCBzZXBhcmF0ZSB3b3JrcyBpbgotLXRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQg
aXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKLS1zZWN0aW9ucyB3aGVuIHlvdSBkaXN0
cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKLS1kaXN0cmlidXRl
IHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFz
ZWQKLS1vbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBi
ZSBvbiB0aGUgdGVybXMgb2YKLS10aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBv
dGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQotLWVudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8g
ZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KLS0KLS1UaHVz
LCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9y
IGNvbnRlc3QKLS15b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyBy
YXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KLS1leGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0
aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKLS1jb2xsZWN0aXZlIHdvcmtzIGJhc2Vk
IG9uIHRoZSBQcm9ncmFtLgotLQotLUluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFu
b3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0KLS13aXRoIHRoZSBQcm9ncmFtIChv
ciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKLS1hIHN0
b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29y
ayB1bmRlcgotLXRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCi0tCi0tICAzLiBZb3UgbWF5IGNv
cHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKLS11
bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0
aGUgdGVybXMgb2YKLS1TZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFs
c28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0tCi0tICAgIGEpIEFjY29tcGFueSBpdCB3aXRo
IHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKLS0gICAgc291cmNl
IGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rp
b25zCi0tICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Ig
c29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAotLQotLSAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBh
IHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQotLSAgICB5ZWFycywgdG8g
Z2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgotLSAg
ICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNv
bXBsZXRlCi0tICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBz
b3VyY2UgY29kZSwgdG8gYmUKLS0gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNl
Y3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0KLS0gICAgY3VzdG9tYXJpbHkgdXNlZCBm
b3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAotLQotLSAgICBjKSBBY2NvbXBhbnkgaXQgd2l0
aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgotLSAgICB0byBk
aXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBp
cwotLSAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBv
bmx5IGlmIHlvdQotLSAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBl
eGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCi0tICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBT
dWJzZWN0aW9uIGIgYWJvdmUuKQotLQotLVRoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5z
IHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKLS1tYWtpbmcgbW9kaWZpY2F0aW9u
cyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQotLWNvZGUg
bWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBs
dXMgYW55Ci0tYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUg
c2NyaXB0cyB1c2VkIHRvCi0tY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9m
IHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQotLXNwZWNpYWwgZXhjZXB0aW9uLCB0aGUg
c291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQotLWFueXRoaW5nIHRoYXQg
aXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5Ci0tZm9y
bSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9u
KSBvZiB0aGUKLS1vcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMs
IHVubGVzcyB0aGF0IGNvbXBvbmVudAotLWl0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJs
ZS4KLS0KLS1JZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBt
YWRlIGJ5IG9mZmVyaW5nCi0tYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2Us
IHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAotLWFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29k
ZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwotLWRpc3RyaWJ1dGlvbiBvZiB0aGUgc291
cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdAotLWNvbXBlbGxlZCB0
byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCi0tCi0tICA0LiBZ
b3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFBy
b2dyYW0KLS1leGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4g
IEFueSBhdHRlbXB0Ci0tb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBk
aXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCi0tdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0
ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgotLUhvd2V2ZXIsIHBhcnRp
ZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCi0t
dGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBs
b25nIGFzIHN1Y2gKLS1wYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCi0tCi0tICA1
LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3Ug
aGF2ZSBub3QKLS1zaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBw
ZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgotLWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRl
cml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQotLXByb2hpYml0ZWQgYnkgbGF3IGlm
IHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKLS1tb2RpZnlp
bmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUK
LS1Qcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2Ug
dG8gZG8gc28sIGFuZAotLWFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcs
IGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKLS10aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBv
biBpdC4KLS0KLS0gIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChv
ciBhbnkgd29yayBiYXNlZCBvbiB0aGUKLS1Qcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0
aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQotLW9yaWdpbmFsIGxpY2Vuc29yIHRv
IGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KLS10aGVz
ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgot
LXJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBn
cmFudGVkIGhlcmVpbi4KLS1Zb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNv
bXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwotLXRoaXMgTGljZW5zZS4KLS0KLS0gIDcuIElm
LCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBw
YXRlbnQKLS1pbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVk
IHRvIHBhdGVudCBpc3N1ZXMpLAotLWNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0
aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKLS1vdGhlcndpc2UpIHRoYXQgY29udHJh
ZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90Ci0tZXhjdXNl
IHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QK
LS1kaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0
aW9ucyB1bmRlciB0aGlzCi0tTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0
aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQotLW1heSBub3QgZGlzdHJpYnV0ZSB0aGUg
UHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKLS1saWNlbnNlIHdvdWxk
IG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5
Ci0tYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRo
cm91Z2ggeW91LCB0aGVuCi0tdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQg
YW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwotLXJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0
cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCi0tCi0tSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0
aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCi0tYW55IHBhcnRpY3Vs
YXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0
bwotLWFwcGx5IGFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5
IGluIG90aGVyCi0tY2lyY3Vtc3RhbmNlcy4KLS0KLS1JdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2Yg
dGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55Ci0tcGF0ZW50cyBvciBv
dGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkK
LS1zdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3Rl
Y3RpbmcgdGhlCi0taW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBz
eXN0ZW0sIHdoaWNoIGlzCi0taW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2Vz
LiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCi0tZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUg
d2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAotLXRocm91Z2ggdGhhdCBzeXN0ZW0g
aW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0Ci0tc3lzdGVtOyBp
dCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2ls
bGluZwotLXRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFu
ZCBhIGxpY2Vuc2VlIGNhbm5vdAotLWltcG9zZSB0aGF0IGNob2ljZS4KLS0KLS1UaGlzIHNlY3Rp
b24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQg
dG8KLS1iZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KLS0KLS0g
IDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0
cmljdGVkIGluCi0tY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29w
eXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCi0tb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8g
cGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQotLW1heSBhZGQgYW4gZXhwbGlj
aXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwotLXRob3Nl
IGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3Ig
YW1vbmcKLS1jb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMg
TGljZW5zZSBpbmNvcnBvcmF0ZXMKLS10aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRo
ZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KLS0KLS0gIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCi0tb2YgdGhlIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9u
cyB3aWxsCi0tYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0
IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCi0tYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2Vy
bnMuCi0tCi0tRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBu
dW1iZXIuICBJZiB0aGUgUHJvZ3JhbQotLXNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRo
aXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55Ci0tbGF0ZXIgdmVyc2lvbiIs
IHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u
cwotLWVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlz
aGVkIGJ5IHRoZSBGcmVlCi0tU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRv
ZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgotLXRoaXMgTGljZW5zZSwgeW91IG1h
eSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK
LS1Gb3VuZGF0aW9uLgotLQotLSAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRz
IG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQotLXByb2dyYW1zIHdob3NlIGRpc3RyaWJ1
dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKLS10byBh
c2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkg
dGhlIEZyZWUKLS1Tb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKLS1tYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBP
dXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscwotLW9mIHByZXNlcnZp
bmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2Fy
ZSBhbmQKLS1vZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdl
bmVyYWxseS4KLS0KLS0JCQkgICAgTk8gV0FSUkFOVFkKLS0KLS0gIDExLiBCRUNBVVNFIFRIRSBQ
Uk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQot
LUZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBM
QVcuICBFWENFUFQgV0hFTgotLU9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKLS1QUk9WSURFIFRIRSBQUk9HUkFNICJB
UyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAotLU9S
IElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GCi0tTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwotLVRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JN
QU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKLS1QUk9HUkFNIFBS
T1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJ
Q0lORywKLS1SRVBBSVIgT1IgQ09SUkVDVElPTi4KLS0KLS0gIDEyLiBJTiBOTyBFVkVOVCBVTkxF
U1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKLS1X
SUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJ
RlkgQU5EL09SCi0tUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwg
QkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywKLS1JTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQ
RUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKLS1PVVQg
T0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVECi0tVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5B
Q0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCi0tWU9VIE9SIFRISVJEIFBBUlRJRVMgT1Ig
QSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKLS1QUk9H
UkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNF
RCBPRiBUSEUKLS1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCi0tCi0tCQkgICAgIEVORCBP
RiBURVJNUyBBTkQgQ09ORElUSU9OUwotLQotLQkgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1z
IHRvIFlvdXIgTmV3IFByb2dyYW1zCi0tCi0tICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFt
LCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Ci0tcG9zc2libGUgdXNlIHRv
IHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAot
LWZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdl
IHVuZGVyIHRoZXNlIHRlcm1zLgotLQotLSAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5n
IG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKLS10byBhdHRhY2ggdGhlbSB0
byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5Ci0tY29u
dmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUg
YXQgbGVhc3QKLS10aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRo
ZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KLS0KLS0gICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHBy
b2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KLS0gICAgQ29w
eXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KLS0KLS0gICAgVGhpcyBwcm9ncmFt
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK
LS0gICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkKLS0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLS0gICAgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
LS0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0g
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYWxvbmcKLS0gICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLS0gICAgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLS0KLS1BbHNv
IGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQg
cGFwZXIgbWFpbC4KLS0KLS1JZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFjdGl2ZSwgbWFrZSBpdCBv
dXRwdXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlzCi0td2hlbiBpdCBzdGFydHMgaW4gYW4gaW50
ZXJhY3RpdmUgbW9kZToKLS0KLS0gICAgR25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0
IChDKSB5ZWFyIG5hbWUgb2YgYXV0aG9yCi0tICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJT
T0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KLS0gICAgVGhp
cyBpcyBmcmVlIHNvZnR3YXJlLCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBp
dAotLSAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFp
bHMuCi0tCi0tVGhlIGh5cG90aGV0aWNhbCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycg
c2hvdWxkIHNob3cgdGhlIGFwcHJvcHJpYXRlCi0tcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNlIG1heQotLWJlIGNhbGxl
ZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQg
ZXZlbiBiZQotLW1vdXNlLWNsaWNrcyBvciBtZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3Vy
IHByb2dyYW0uCi0tCi0tWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ug
d29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKLS1zY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBh
ICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZgotLW5lY2Vzc2FyeS4g
IEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKLS0KLS0gIFlveW9keW5lLCBJbmMu
LCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlIHByb2dyYW0K
LS0gIGBHbm9tb3Zpc2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0
ZW4gYnkgSmFtZXMgSGFja2VyLgotLQotLSAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJp
bCAxOTg5Ci0tICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQotLQotLVRoaXMgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0g
aW50bwotLXByb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91
dGluZSBsaWJyYXJ5LCB5b3UgbWF5Ci0tY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0
IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCi0tbGlicmFyeS4gIElm
IHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwK
LS1QdWJsaWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4KLWRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3Vn
YXIvUkVBRE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL1JFQURNRS5jaHJvbWl1bQotZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0Ci1pbmRleCBjNjBhNWZkNGZkYy4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9SRUFE
TUUuY2hyb21pdW0KLSsrKyAvZGV2L251bGwKLUBAIC0xLDExICswLDAgQEAKLS1OYW1lOiBBdXRv
Y29uZiBNNCBtYWNyb3MgdXNlZCBieSBCaXNvbgotLVNob3J0IE5hbWU6IG00c3VnYXIKLS1VUkw6
IGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYvCi0tVmVyc2lvbjogdW5rbm93
bgotLUxpY2Vuc2U6IEdQTAotLUxpY2Vuc2UgRmlsZTogTElDRU5TRQotLVNlY3VyaXR5IGNyaXRp
Y2FsOiBubwotLQotLURlc2NyaXB0aW9uOgotLUJpc29uIHVzZXMgTTQgdG8gZ2VuZXJhdGUgaXRz
IG91dHB1dCwgYW5kIHVzZXMgdGhlIHV0aWxpdHkgTTQgbWFjcm9zIGluIHRoaXMKLS1kaXJlY3Rv
cnkuCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNv
bi90aGlyZF9wYXJ0eS9tNHN1Z2FyL2ZvcmVhY2gubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvZm9yZWFjaC5tNAotZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA3MDkzZDBmY2M0ZS4uMDAwMDAwMDAwMDAKLS0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRz
dWdhci9mb3JlYWNoLm00Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwzNjIgKzAsMCBAQAotLSMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29u
ZiAtKi0KLS0jIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEF1dG9jb25mLgotLSMgZm9yZWFjaC1iYXNl
ZCByZXBsYWNlbWVudHMgZm9yIHJlY3Vyc2l2ZSBmdW5jdGlvbnMuCi0tIyBTcGVlZHMgdXAgR05V
IE00IDEuNC54IGJ5IGF2b2lkaW5nIHF1YWRyYXRpYyAkQCByZWN1cnNpb24sIGJ1dCBwZW5hbGl6
ZXMKLS0jIEdOVSBNNCAxLjYgYnkgcmVxdWlyaW5nIG1vcmUgbWVtb3J5IGFuZCBtYWNybyBleHBh
bnNpb25zLgotLSMKLS0jIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLgotLQotLSMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQXV0b2NvbmYuICBUaGlz
IHByb2dyYW0gaXMgZnJlZQotLSMgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0tIyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
Ci0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0j
IFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRp
b25hbAotLSMgcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBBdXRvY29uZiBDb25maWd1cmUg
U2NyaXB0IEV4Y2VwdGlvbiwKLS0jIHZlcnNpb24gMy4wLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYW5kIGEgY29weSBv
ZiB0aGUgQXV0b2NvbmYgQ29uZmlndXJlIFNjcmlwdCBFeGNlcHRpb24gYWxvbmcgd2l0aAotLSMg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGVzIENPUFlJTkd2MyBhbmQgQ09QWUlORy5FWENFUFRJ
T04KLS0jIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xp
Y2Vuc2VzLz4uCi0tCi0tIyBXcml0dGVuIGJ5IEVyaWMgQmxha2UuCi0tCi0tIyBJbiBNNCAxLjQu
eCwgZXZlcnkgYnl0ZSBvZiAkQCBpcyByZXNjYW5uZWQuICBUaGlzIG1lYW5zIHRoYXQgYW4KLS0j
IGFsZ29yaXRobSBvbiBuIGFyZ3VtZW50cyB0aGF0IHJlY3Vyc2VzIHdpdGggb25lIGxlc3MgYXJn
dW1lbnQgZWFjaAotLSMgaXRlcmF0aW9uIHdpbGwgc2NhbiBuICogKG4gKyAxKSAvIDIgYXJndW1l
bnRzLCBmb3IgTyhuXjIpIHRpbWUuICBJbgotLSMgTTQgMS42LCB0aGlzIHdhcyBmaXhlZCBzbyB0
aGF0ICRAIGlzIG9ubHkgc2Nhbm5lZCBvbmNlLCB0aGVuCi0tIyBiYWNrLXJlZmVyZW5jZXMgYXJl
IG1hZGUgdG8gaW5mb3JtYXRpb24gc3RvcmVkIGFib3V0IHRoZSBzY2FuLgotLSMgVGh1cywgbiBp
dGVyYXRpb25zIG5lZWQgb25seSBzY2FuIG4gYXJndW1lbnRzLCBmb3IgTyhuKSB0aW1lLgotLSMg
QWRkaXRpb25hbGx5LCBpbiBNNCAxLjQueCwgcmVjdXJzaXZlIGFsZ29yaXRobXMgZGlkIG5vdCBj
bGVhbiB1cAotLSMgbWVtb3J5IHZlcnkgd2VsbCwgcmVxdWlyaW5nIE8obl4yKSBtZW1vcnkgcmF0
aGVyIHRoYW4gTyhuKSBmb3IgbgotLSMgaXRlcmF0aW9ucy4KLS0jCi0tIyBUaGlzIGZpbGUgaXMg
ZGVzaWduZWQgdG8gb3ZlcmNvbWUgdGhlIHF1YWRyYXRpYyBuYXR1cmUgb2YgJEAKLS0jIHJlY3Vy
c2lvbiBieSB3cml0aW5nIGEgdmFyaWFudCBvZiBtNF9mb3JlYWNoIHRoYXQgdXNlcyBtNF9mb3Ig
cmF0aGVyCi0tIyB0aGFuICRAIHJlY3Vyc2lvbiB0byBvcGVyYXRlIG9uIHRoZSBsaXN0LiAgVGhp
cyBpbnZvbHZlcyBtb3JlIG1hY3JvCi0tIyBleHBhbnNpb25zLCBidXQgYXZvaWRzIHRoZSBuZWVk
IHRvIHJlc2NhbiBhIHF1YWRyYXRpYyBudW1iZXIgb2YKLS0jIGFyZ3VtZW50cywgbWFraW5nIHRo
ZXNlIHJlcGxhY2VtZW50cyB2ZXJ5IGF0dHJhY3RpdmUgZm9yIE00IDEuNC54LgotLSMgT24gdGhl
IG90aGVyIGhhbmQsIGluIGFueSB2ZXJzaW9uIG9mIE00LCBleHBhbmRpbmcgYWRkaXRpb25hbCBt
YWNyb3MKLS0jIGNvc3RzIGFkZGl0aW9uYWwgdGltZTsgdGhlcmVmb3JlLCBpbiBNNCAxLjYsIHdo
ZXJlICRAIHJlY3Vyc2lvbiB1c2VzCi0tIyBmZXdlciBtYWNyb3MsIHRoZXNlIHJlcGxhY2VtZW50
cyBhY3R1YWxseSBwZXNzaW1pemUgcGVyZm9ybWFuY2UuCi0tIyBBZGRpdGlvbmFsbHksIHRoZSB1
c2Ugb2YgJDEwIHRvIG1lYW4gdGhlIHRlbnRoIGFyZ3VtZW50IHZpb2xhdGVzCi0tIyBQT1NJWDsg
YWx0aG91Z2ggYWxsIHZlcnNpb25zIG9mIG00IDEuNC54IHN1cHBvcnQgdGhpcyBtZWFuaW5nLCBh
Ci0tIyBmdXR1cmUgbTQgdmVyc2lvbiBtYXkgc3dpdGNoIHRvIHRha2UgaXQgYXMgdGhlIGZpcnN0
IGFyZ3VtZW50Ci0tIyBjb25jYXRlbmF0ZWQgd2l0aCBhIGxpdGVyYWwgMCwgc28gdGhlIGltcGxl
bWVudGF0aW9ucyBpbiB0aGlzIGZpbGUKLS0jIGFyZSBub3QgZnV0dXJlLXByb29mLiAgVGh1cywg
dGhpcyBmaWxlIGlzIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgYXMKLS0jIHBhcnQgb2YgbTRfaW5p
dCgpLCBvbmx5IHdoZW4gaXQgaXMgZGV0ZWN0ZWQgdGhhdCBNNCBwcm9iYWJseSBoYXMKLS0jIHF1
YWRyYXRpYyBiZWhhdmlvciAoaWUuIGl0IGxhY2tzIHRoZSBtYWNybyBfX200X3ZlcnNpb25fXyku
Ci0tIwotLSMgUGxlYXNlIGtlZXAgdGhpcyBmaWxlIGluIHN5bmMgd2l0aCBtNHN1Z2FyLm00Lgot
LQotLSMgX200X2ZvcmVhY2goUFJFLCBQT1NULCBJR05PUkVELCBBUkcuLi4pCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEZvcm0gdGhlIGNvbW1vbiBiYXNp
cyBvZiB0aGUgbTRfZm9yZWFjaCBhbmQgbTRfbWFwIG1hY3Jvcy4gIEZvciBlYWNoCi0tIyBBUkcs
IGV4cGFuZCBQUkVbQVJHXVBPU1RbXS4gIFRoZSBJR05PUkVEIGFyZ3VtZW50IG1ha2VzIHJlY3Vy
c2lvbgotLSMgZWFzaWVyLCBhbmQgbXVzdCBiZSBzdXBwbGllZCByYXRoZXIgdGhhbiBpbXBsaWNp
dC4KLS0jCi0tIyBUaGlzIHZlcnNpb24gbWluaW1pemVzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhh
dCAkQCBpcyBldmFsdWF0ZWQgYnkKLS0jIHVzaW5nIG00X2ZvciB0byBnZW5lcmF0ZSBhIGJvaWxl
cnBsYXRlIGludG8gX200X2YgdGhlbiBwYXNzaW5nICRAIHRvCi0tIyB0aGF0IHRlbXBvcmFyeSBt
YWNyby4gIFRodXMsIHRoZSByZWN1cnNpb24gaXMgZG9uZSBpbiBtNF9mb3Igd2l0aG91dAotLSMg
cmVwYXJzaW5nIGFueSB1c2VyIGlucHV0LCBhbmQgaXMgbm90IHF1YWRyYXRpYy4gIEZvciBhbiBp
ZGVhIG9mIGhvdwotLSMgdGhpcyB3b3Jrcywgbm90ZSB0aGF0IG00X2ZvcmVhY2goaSxbMSwyXSxb
aV0pIGNhbGxzCi0tIyAgIF9tNF9mb3JlYWNoKFttNF9kZWZpbmUoW2ldLF0sWylpXSxbXSxbMV0s
WzJdKQotLSMgd2hpY2ggZGVmaW5lcyBfbTRfZjoKLS0jICAgJDFbJDRdJDJbXSQxWyQ1XSQyW11f
bTRfcG9wZGVmKFtfbTRfZl0pCi0tIyB0aGVuIGNhbGxzIF9tNF9mKFttNF9kZWZpbmUoW2ldLF0s
WylpXSxbXSxbMV0sWzJdKSBmb3IgYSBuZXQgcmVzdWx0OgotLSMgICBtNF9kZWZpbmUoW2ldLFsx
XSlpW11tNF9kZWZpbmUoW2ldLFsyXSlpW11fbTRfcG9wZGVmKFtfbTRfZl0pLgotLW00X2RlZmlu
ZShbX200X2ZvcmVhY2hdLAotLVttNF9pZihbJCNdLCBbM10sIFtdLAotLSAgICAgICBbbTRfcHVz
aGRlZihbX200X2ZdLCBfbTRfZm9yKFs0XSwgWyQjXSwgWzFdLAotLSAgIFskMF8oWzFdLCBbMl0s
XSwgWyldKVtfbTRfcG9wZGVmKFtfbTRfZl0pXSlfbTRfZigkQCldKV0pCi0tCi0tbTRfZGVmaW5l
KFtfbTRfZm9yZWFjaF9dLAotLVtbJCQxWyQkM10kJDJbXV1dKQotLQotLSMgbTRfY2FzZShTV0lU
Q0gsIFZBTDEsIElGLVZBTDEsIFZBTDIsIElGLVZBTDIsIC4uLiwgREVGQVVMVCkKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBGaW5kIHRoZSBmaXJzdCBWQUwgdGhhdCBTV0lUQ0ggbWF0Y2hlcywgYW5kIGV4cGFuZCB0aGUg
Y29ycmVzcG9uZGluZwotLSMgSUYtVkFMLiAgSWYgdGhlcmUgYXJlIG5vIG1hdGNoZXMsIGV4cGFu
ZCBERUZBVUxULgotLSMKLS0jIFVzZSBtNF9mb3IgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IG1hY3Jv
IGluIHRlcm1zIG9mIGEgYm9pbGVycGxhdGUKLS0jIG00X2lmIHdpdGggZmluYWwgY2xlYW51cC4g
IElmICQjIGlzIGV2ZW4sIHdlIGhhdmUgREVGQVVMVDsgaWYgaXQgaXMKLS0jIG9kZCwgdGhlbiBy
b3VuZGluZyB0aGUgbGFzdCAkIyB1cCBpbiB0aGUgdGVtcG9yYXJ5IG1hY3JvIGlzCi0tIyBoYXJt
bGVzcy4gIEZvciBleGFtcGxlLCBib3RoIG00X2Nhc2UoMSwyLDMsNCw1KSBhbmQKLS0jIG00X2Nh
c2UoMSwyLDMsNCw1LDYpIHJlc3VsdCBpbiB0aGUgaW50ZXJtZWRpYXRlIF9tNF9jYXNlIGJlaW5n
Ci0tIyAgIG00X2lmKFskMV0sWyQyXSxbJDNdLFskMV0sWyQ0XSxbJDVdLF9tNF9wb3BkZWYoW19t
NF9jYXNlXSlbJDZdKQotLW00X2RlZmluZShbbTRfY2FzZV0sCi0tW200X2lmKG00X2V2YWwoWyQj
IDw9IDJdKSwgWzFdLCBbJDJdLAotLVttNF9wdXNoZGVmKFtfJDBdLCBbbTRfaWYoXV9tNF9mb3Io
WzJdLCBtNF9ldmFsKFsoJCMgLSAxKSAvIDIgKiAyXSksIFsyXSwKLS0gICAgIFtfJDBfKF0sIFsp
XSlbX200X3BvcGRlZigKLS0JIFtfJDBdKV1tNF9kcXVvdGUoJG00X2V2YWwoWygkIyArIDEpICYg
fjFdKSlbKV0pXyQwKCRAKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9jYXNlX10sCi0tWyQwXyhb
MV0sIFskMV0sIG00X2luY3IoWyQxXSkpXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9jYXNlX19dLAot
LVtbWyQkMV0sWyQkMl0sWyQkM10sXV0pCi0tCi0tIyBtNF9ibWF0Y2goU1dJVENILCBSRTEsIFZB
TDEsIFJFMiwgVkFMMiwgLi4uLCBERUZBVUxUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIG00IGVxdWl2YWxlbnQgb2YKLS0jCi0t
IyBpZiAoU1dJVENIID1+IFJFMSkKLS0jICAgVkFMMTsKLS0jIGVsaWYgKFNXSVRDSCA9fiBSRTIp
Ci0tIyAgIFZBTDI7Ci0tIyBlbGlmIC4uLgotLSMgICAuLi4KLS0jIGVsc2UKLS0jICAgREVGQVVM
VAotLSMKLS0jIFdlIGJ1aWxkIHRoZSB0ZW1wb3JhcnkgbWFjcm8gX200X2I6Ci0tIyAgIG00X2Rl
ZmluZShbX200X2JdLCBfbTRfZGVmbihbX200X2JtYXRjaF0pKV9tNF9iKFskMV0sIFskMl0sIFsk
M10pLi4uCi0tIyAgIF9tNF9iKFskMV0sIFskbS0xXSwgWyRtXSlfbTRfYihbXSwgW10sIFskbSsx
XV9tNF9wb3BkZWYoW19tNF9iXSkpCi0tIyB0aGVuIGludm9rZSBtNF91bnF1b3RlKF9tNF9iKCRA
KSksIGZvciBjb25jYXRlbmF0aW9uIHdpdGggbGF0ZXIgdGV4dC4KLS1tNF9kZWZpbmUoW200X2Jt
YXRjaF0sCi0tW200X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRz
OiAkI10pXSwKLS0gICAgICAgWyQjXSwgMSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVu
dHM6ICQjOiAkMV0pXSwKLS0gICAgICAgWyQjXSwgMiwgWyQyXSwKLS0gICAgICAgW200X3B1c2hk
ZWYoW19tNF9iXSwgW200X2RlZmluZShbX200X2JdLAotLSAgX200X2RlZm4oW18kMF0pKV1fbTRf
Zm9yKFszXSwgbTRfZXZhbChbKCQjICsgMSkgLyAyICogMiAtIDFdKSwKLS0gIFsyXSwgW18kMF8o
XSwgWyldKVtfbTRfYihbXSwgW10sXW00X2RxdW90ZShbJF1tNF9ldmFsKAotLSAgWygkIyArIDEp
IC8gMiAqIDJdKSlbX200X3BvcGRlZihbX200X2JdKSldKW00X3VucXVvdGUoX200X2IoJEApKV0p
XSkKLS0KLS1tNF9kZWZpbmUoW19tNF9ibWF0Y2hdLAotLVttNF9pZihtNF9icmVnZXhwKFskMV0s
IFskMl0pLCBbLTFdLCBbXSwgW1skM11tNF9kZWZpbmUoWyQwXSldKV0pCi0tCi0tbTRfZGVmaW5l
KFtfbTRfYm1hdGNoX10sCi0tWyQwXyhbMV0sIG00X2RlY3IoWyQxXSksIFskMV0pXSkKLS0KLS1t
NF9kZWZpbmUoW19tNF9ibWF0Y2hfX10sCi0tW1tfbTRfYihbJCQxXSwgWyQkMl0sIFskJDNdKV1d
KQotLQotLQotLSMgbTRfY29uZChURVNUMSwgVkFMMSwgSUYtVkFMMSwgVEVTVDIsIFZBTDIsIElG
LVZBTDIsIC4uLiwgW0RFRkFVTFRdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU2ltaWxhciB0byBtNF9p
ZiwgZXhjZXB0IHRoYXQgZWFjaCBURVNUIGlzIGV4cGFuZGVkIHdoZW4gZW5jb3VudGVyZWQuCi0t
IyBJZiB0aGUgZXhwYW5zaW9uIG9mIFRFU1RuIG1hdGNoZXMgdGhlIHN0cmluZyBWQUxuLCB0aGUg
cmVzdWx0IGlzIElGLVZBTG4uCi0tIyBUaGUgcmVzdWx0IGlzIERFRkFVTFQgaWYgbm8gdGVzdHMg
cGFzc2VkLiAgVGhpcyBtYWNybyBhbGxvd3MKLS0jIHNob3J0LWNpcmN1aXRpbmcgb2YgZXhwZW5z
aXZlIHRlc3RzLCB3aGVyZSBpdCBwYXlzIHRvIGFycmFuZ2UgcXVpY2sKLS0jIGZpbHRlciB0ZXN0
cyB0byBydW4gZmlyc3QuCi0tIwotLSMgbTRfY29uZCBhbHJlYWR5IGd1YXJhbnRlZXMgZWl0aGVy
IDMqbiBvciAzKm4gKyAxIGFyZ3VtZW50cywgMSA8PSBuLgotLSMgV2Ugb25seSBoYXZlIHRvIHNw
ZWVkIHVwIF9tNF9jb25kLCBieSBidWlsZGluZyB0aGUgdGVtcG9yYXJ5IF9tNF9jOgotLSMgICBt
NF9kZWZpbmUoW19tNF9jXSwgX200X2RlZm4oW200X3VucXVvdGVdKSlfbTRfYyhbbTRfaWYoKCQx
KSwgWygkMildLAotLSMgICBbWyQzXW00X2RlZmluZShbX200X2NdKV0pXSlfbTRfYyhbbTRfaWYo
KCQ0KSwgWygkNSldLAotLSMgICBbWyQ2XW00X2RlZmluZShbX200X2NdKV0pXSkuLi5fbTRfYyhb
bTRfaWYoKCRtLTIpLCBbKCRtLTEpXSwKLS0jICAgW1skbV1tNF9kZWZpbmUoW19tNF9jXSldKV0p
X200X2MoW1skbSsxXV1fbTRfcG9wZGVmKFtfbTRfY10pKQotLSMgV2UgaW52b2tlIG00X3VucXVv
dGUoX200X2MoJEApKSwgZm9yIGNvbmNhdGVuYXRpb24gd2l0aCBsYXRlciB0ZXh0LgotLW00X2Rl
ZmluZShbX200X2NvbmRdLAotLVttNF9wdXNoZGVmKFtfbTRfY10sIFttNF9kZWZpbmUoW19tNF9j
XSwKLS0gIF9tNF9kZWZuKFttNF91bnF1b3RlXSkpXV9tNF9mb3IoWzJdLCBtNF9ldmFsKFskIyAv
IDMgKiAzIC0gMV0pLCBbM10sCi0tICBbJDBfKF0sIFspXSlbX200X2MoXW00X2RxdW90ZShtNF9k
cXVvdGUoCi0tICBbJF1tNF9ldmFsKFskIyAvIDMgKiAzICsgMV0pKSlbX200X3BvcGRlZihbX200
X2NdKSldKW00X3VucXVvdGUoX200X2MoJEApKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfY29uZF9d
LAotLVskMF8obTRfZGVjcihbJDFdKSwgWyQxXSwgbTRfaW5jcihbJDFdKSldKQotLQotLW00X2Rl
ZmluZShbX200X2NvbmRfX10sCi0tW1tfbTRfYyhbbTRfaWYoKCQkMSksIFsoJCQyKV0sIFtbJCQz
XW00X2RlZmluZShbX200X2NdKV0pXSldXSkKLS0KLS0jIG00X2JwYXRzdWJzdHMoU1RSSU5HLCBS
RTEsIFNVQlNUMSwgUkUyLCBTVUJTVDIsIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIG00IGVxdWl2YWxlbnQgb2YKLS0jCi0t
IyAgICRfID0gU1RSSU5HOwotLSMgICBzL1JFMS9TVUJTVDEvZzsKLS0jICAgcy9SRTIvU1VCU1Qy
L2c7Ci0tIyAgIC4uLgotLSMKLS0jIG00X2JwYXRzdWJzdHMgYWxyZWFkeSB2YWxpZGF0ZWQgYW4g
b2RkIG51bWJlciBvZiBhcmd1bWVudHM7IHdlIG9ubHkKLS0jIG5lZWQgdG8gc3BlZWQgdXAgX200
X2JwYXRzdWJzdHMuICBUbyBhdm9pZCBuZXN0aW5nLCB3ZSBidWlsZCB0aGUKLS0jIHRlbXBvcmFy
eSBfbTRfcDoKLS0jICAgbTRfZGVmaW5lKFtfbTRfcF0sIFskMV0pbTRfZGVmaW5lKFtfbTRfcF0s
Ci0tIyAgIG00X2JwYXRzdWJzdChtNF9kcXVvdGUoX200X2RlZm4oW19tNF9wXSkpLCBbJDJdLCBb
JDNdKSltNF9kZWZpbmUoW19tNF9wXSwKLS0jICAgbTRfYnBhdHN1YnN0KG00X2RxdW90ZShfbTRf
ZGVmbihbX200X3BdKSksIFskNF0sIFskNV0pKW00X2RlZmluZShbX200X3BdLC4uLgotLSMgICBt
NF9icGF0c3Vic3QobTRfZHF1b3RlKF9tNF9kZWZuKFtfbTRfcF0pKSwgWyRtLTFdLCBbJG1dKSlt
NF91bnF1b3RlKAotLSMgICBfbTRfZGVmbihbX200X3BdKV9tNF9wb3BkZWYoW19tNF9wXSkpCi0t
bTRfZGVmaW5lKFtfbTRfYnBhdHN1YnN0c10sCi0tW200X3B1c2hkZWYoW19tNF9wXSwgW200X2Rl
ZmluZShbX200X3BdLAotLSAgXW00X2RxdW90ZShbJF0xKVspXV9tNF9mb3IoWzNdLCBbJCNdLCBb
Ml0sIFskMF8oXSwKLS0gIFspXSlbbTRfdW5xdW90ZShfbTRfZGVmbihbX200X3BdKV9tNF9wb3Bk
ZWYoW19tNF9wXSkpXSlfbTRfcCgkQCldKQotLQotLW00X2RlZmluZShbX200X2JwYXRzdWJzdHNf
XSwKLS1bJDBfKG00X2RlY3IoWyQxXSksIFskMV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9icGF0
c3Vic3RzX19dLAotLVtbbTRfZGVmaW5lKFtfbTRfcF0sCi0tbTRfYnBhdHN1YnN0KG00X2RxdW90
ZShfbTRfZGVmbihbX200X3BdKSksIFskJDFdLCBbJCQyXSkpXV0pCi0tCi0tIyBtNF9zaGlmdG4o
TiwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybnMgLi4uIHNoaWZ0ZWQgTiB0
aW1lcy4gIFVzZWZ1bCBmb3IgcmVjdXJzaXZlICJ2YXJhcmdzIiBjb25zdHJ1Y3RzLgotLSMKLS0j
IG00X3NoaWZ0biBhbHJlYWR5IHZhbGlkYXRlZCBhcmd1bWVudHM7IHdlIG9ubHkgbmVlZCB0byBz
cGVlZCB1cAotLSMgX200X3NoaWZ0bi4gIElmIE4gaXMgMywgdGhlbiB3ZSBidWlsZCB0aGUgdGVt
cG9yYXJ5IF9tNF9zLCBkZWZpbmVkIGFzCi0tIyAgICxbJDVdLFskNl0sLi4uLFskbV1fbTRfcG9w
ZGVmKFtfbTRfc10pCi0tIyBiZWZvcmUgY2FsbGluZyBtNF9zaGlmdChfbTRfcygkQCkpLgotLW00
X2RlZmluZShbX200X3NoaWZ0bl0sCi0tW200X2lmKG00X2luY3IoWyQxXSksIFskI10sIFtdLCBb
bTRfcHVzaGRlZihbX200X3NdLAotLSAgX200X2ZvcihtNF9ldmFsKFskMSArIDJdKSwgWyQjXSwg
WzFdLAotLSAgW1ssXW00X2RxdW90ZSgkXSwgWyldKVtfbTRfcG9wZGVmKFtfbTRfc10pXSltNF9z
aGlmdChfbTRfcygkQCkpXSldKQotLQotLSMgbTRfZG8oU1RSSU5HLCAuLi4pCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIFRoaXMgbWFjcm8gaW52b2tlcyBhbGwgaXRzIGFyZ3VtZW50cyAoaW4g
c2VxdWVuY2UsIG9mIGNvdXJzZSkuICBJdCBpcwotLSMgdXNlZnVsIGZvciBtYWtpbmcgeW91ciBt
YWNyb3MgbW9yZSBzdHJ1Y3R1cmVkIGFuZCByZWFkYWJsZSBieSBkcm9wcGluZwotLSMgdW5uZWNl
c3NhcnkgZG5sJ3MgYW5kIGhhdmUgdGhlIG1hY3JvcyBpbmRlbnRlZCBwcm9wZXJseS4KLS0jCi0t
IyBIZXJlLCB3ZSB1c2UgdGhlIHRlbXBvcmFyeSBtYWNybyBfbTRfZG8sIGRlZmluZWQgYXMKLS0j
ICAgJDFbXSQyW10uLi5bXSRuW11fbTRfcG9wZGVmKFtfbTRfZG9dKQotLW00X2RlZmluZShbbTRf
ZG9dLAotLVttNF9pZihbJCNdLCBbMF0sIFtdLAotLSAgICAgICBbbTRfcHVzaGRlZihbXyQwXSwg
X200X2ZvcihbMV0sIFskI10sIFsxXSwKLS0JCSAgIFskXSwgW1tbXV1dKVtfbTRfcG9wZGVmKFtf
JDBdKV0pXyQwKCRAKV0pXSkKLS0KLS0jIG00X2RxdW90ZV9lbHQoQVJHUykKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIFJldHVybiBBUkdTIGFzIGFuIHVucXVvdGVkIGxpc3Qgb2YgZG91Ymxl
LXF1b3RlZCBhcmd1bWVudHMuCi0tIwotLSMgX200X2ZvcmVhY2ggdG8gdGhlIHJlc2N1ZS4KLS1t
NF9kZWZpbmUoW200X2RxdW90ZV9lbHRdLAotLVttNF9pZihbJCNdLCBbMF0sIFtdLCBbW1skMV1d
X200X2ZvcmVhY2goWyxtNF9kcXVvdGUoXSwgWyldLCAkQCldKV0pCi0tCi0tIyBtNF9yZXZlcnNl
KEFSR1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgQVJHUyBpbiByZXZlcnNlIG9y
ZGVyLgotLSMKLS0jIEludm9rZSBfbTRfcigkQCkgd2l0aCB0aGUgdGVtcG9yYXJ5IF9tNF9yIGJ1
aWx0IGFzCi0tIyAgIFskbV0sIFskbS0xXSwgLi4uLCBbJDJdLCBbJDFdX200X3BvcGRlZihbX200
X3JdKQotLW00X2RlZmluZShbbTRfcmV2ZXJzZV0sCi0tW200X2lmKFskI10sIFswXSwgW10sIFsk
I10sIFsxXSwgW1skMV1dLAotLVttNF9wdXNoZGVmKFtfbTRfcl0sIFtbJCQjXV1fbTRfZm9yKG00
X2RlY3IoWyQjXSksIFsxXSwgWy0xXSwKLS0gICAgW1ssIF1tNF9kcXVvdGUoJF0sIFspXSlbX200
X3BvcGRlZihbX200X3JdKV0pX200X3IoJEApXSldKQotLQotLQotLSMgbTRfbWFwX2FyZ3NfcGFp
cihFWFBSRVNTSU9OLCBbRU5ELUVYUFIgPSBFWFBSRVNTSU9OXSwgQVJHLi4uKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgUGVyZm9ybSBhIHBhaXJ3aXNlIGdyb3VwaW5nIG9mIGNvbnNlY3V0aXZlIEFSR3MsIGJ5IGV4
cGFuZGluZwotLSMgRVhQUkVTU0lPTihbQVJHMV0sIFtBUkcyXSkuICBJZiB0aGVyZSBhcmUgYW4g
b2RkIG51bWJlciBvZiBBUkdzLCB0aGUKLS0jIGZpbmFsIGFyZ3VtZW50IGlzIGV4cGFuZGVkIHdp
dGggRU5ELUVYUFIoW0FSR25dKS4KLS0jCi0tIyBCdWlsZCB0aGUgdGVtcG9yYXJ5IG1hY3JvIF9t
NF9tYXBfYXJnc19wYWlyLCB3aXRoIHRoZSAkMihbJG0rMV0pCi0tIyBvbmx5IG91dHB1dCBpZiAk
IyBpcyBvZGQ6Ci0tIyAgICQxKFskM10sIFskNF0pW10kMShbJDVdLCBbJDZdKVtdLi4uJDEoWyRt
LTFdLAotLSMgICBbJG1dKVtdbTRfZGVmYXVsdChbJDJdLCBbJDFdKShbJG0rMV0pW11fbTRfcG9w
ZGVmKFtfbTRfbWFwX2FyZ3NfcGFpcl0pCi0tbTRfZGVmaW5lKFttNF9tYXBfYXJnc19wYWlyXSwK
LS1bbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNd
KV0sCi0tICAgICAgIFskI10sIFsxXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6
ICQjOiAkMV0pXSwKLS0gICAgICAgWyQjXSwgWzJdLCBbXSwKLS0gICAgICAgWyQjXSwgWzNdLCBb
bTRfZGVmYXVsdChbJDJdLCBbJDFdKShbJDNdKVtdXSwKLS0gICAgICAgW200X3B1c2hkZWYoW18k
MF0sIF9tNF9mb3IoWzNdLAotLSAgIG00X2V2YWwoWyQjIC8gMiAqIDIgLSAxXSksIFsyXSwgW18k
MF8oXSwgWyldKV8kMF9lbmQoCi0tICAgWzFdLCBbMl0sIFskI10pW19tNF9wb3BkZWYoW18kMF0p
XSlfJDAoJEApXSldKQotLQotLW00X2RlZmluZShbX200X21hcF9hcmdzX3BhaXJfXSwKLS1bJDBf
KFsxXSwgWyQxXSwgbTRfaW5jcihbJDFdKSldKQotLQotLW00X2RlZmluZShbX200X21hcF9hcmdz
X3BhaXJfX10sCi0tW1skJDEoWyQkMl0sIFskJDNdKVtdXV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRf
bWFwX2FyZ3NfcGFpcl9lbmRdLAotLVttNF9pZihtNF9ldmFsKFskMyAmIDFdKSwgWzFdLCBbW200
X2RlZmF1bHQoWyQkMl0sIFskJDFdKShbJCQzXSlbXV1dKV0pCi0tCi0tIyBtNF9qb2luKFNFUCwg
QVJHMSwgQVJHMi4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUHJvZHVj
ZSBBUkcxU0VQQVJHMi4uLlNFUEFSR24uICBBdm9pZCBiYWNrLXRvLWJhY2sgU0VQIHdoZW4gYSBn
aXZlbiBBUkcKLS0jIGlzIHRoZSBlbXB0eSBzdHJpbmcuICBObyBleHBhbnNpb24gaXMgcGVyZm9y
bWVkIG9uIFNFUCBvciBBUkdzLgotLSMKLS0jIFVzZSBhIHNlbGYtbW9kaWZ5aW5nIHNlcGFyYXRv
ciwgc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueQotLSMgYXJndW1lbnRzIG1pZ2h0IGJlIHNr
aXBwZWQgYmVmb3JlIGEgc2VwYXJhdG9yIGlzIGZpcnN0IHByaW50ZWQsIGJ1dAotLSMgYmUgY2Fy
ZWZ1bCBpZiB0aGUgc2VwYXJhdG9yIGNvbnRhaW5zICQuICBfbTRfZm9yZWFjaCB0byB0aGUgcmVz
Y3VlLgotLW00X2RlZmluZShbbTRfam9pbl0sCi0tW200X3B1c2hkZWYoW19tNF9zZXBdLCBbbTRf
ZGVmaW5lKFtfbTRfc2VwXSwgX200X2RlZm4oW200X2VjaG9dKSldKV1kbmwKLS1bX200X2ZvcmVh
Y2goW18kMChbJDFdLF0sIFspXSwgJEApX200X3BvcGRlZihbX200X3NlcF0pXSkKLS0KLS1tNF9k
ZWZpbmUoW19tNF9qb2luXSwKLS1bbTRfaWYoWyQyXSwgW10sIFtdLCBbX200X3NlcChbJDFdKVsk
Ml1dKV0pCi0tCi0tIyBtNF9qb2luYWxsKFNFUCwgQVJHMSwgQVJHMi4uLikKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUHJvZHVjZSBBUkcxU0VQQVJHMi4uLlNFUEFSR24u
ICBBbiBlbXB0eSBBUkcgcmVzdWx0cyBpbiBiYWNrLXRvLWJhY2sgU0VQLgotLSMgTm8gZXhwYW5z
aW9uIGlzIHBlcmZvcm1lZCBvbiBTRVAgb3IgQVJHcy4KLS0jCi0tIyBBIGJpdCBlYXNpZXIgdGhh
biBtNF9qb2luLiAgX200X2ZvcmVhY2ggdG8gdGhlIHJlc2N1ZS4KLS1tNF9kZWZpbmUoW200X2pv
aW5hbGxdLAotLVtbJDJdbTRfaWYobTRfZXZhbChbJCMgPD0gMl0pLCBbMV0sIFtdLAotLQkgICBb
X200X2ZvcmVhY2goWyQxXSwgW10sIG00X3NoaWZ0KCRAKSldKV0pCi0tCi0tIyBtNF9saXN0X2Nt
cChBLCBCKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIENvbXBhcmUgdGhlIHR3byBsaXN0cyBv
ZiBpbnRlZ2VyIGV4cHJlc3Npb25zIEEgYW5kIEIuCi0tIwotLSMgbTRfbGlzdF9jbXAgdGFrZXMg
Y2FyZSBvZiBhbnkgc2lkZSBlZmZlY3RzOyB3ZSBvbmx5IG92ZXJyaWRlCi0tIyBfbTRfbGlzdF9j
bXBfcmF3LCB3aGVyZSB3ZSBjYW4gc2FmZWx5IGV4cGFuZCBsaXN0cyBtdWx0aXBsZSB0aW1lcy4K
LS0jIEZpcnN0LCBpbnNlcnQgcGFkZGluZyBzbyB0aGF0IGJvdGggbGlzdHMgYXJlIHRoZSBzYW1l
IGxlbmd0aDsgdGhlCi0tIyB0cmFpbGluZyArMCBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGEgbWlz
c2luZyBsaXN0LiAgTmV4dCwgY3JlYXRlIGEKLS0jIHRlbXBvcmFyeSBtYWNybyB0byBwZXJmb3Jt
IHBhaXJ3aXNlIGNvbXBhcmlzb25zIHVudGlsIGFuIGluZXF1YWxpdHkKLS0jIGlzIGZvdW5kLiAg
Rm9yIGV4YW1wbGUsIG00X2xpc3RfY21wKFsxXSwgWzEsMl0pIGNyZWF0ZXMgX200X2NtcCBhcwot
LSMgICBtNF9pZihtNF9ldmFsKFsoJDEpICE9ICgkMyldKSwgWzFdLCBbbTRfY21wKFskMV0sIFsk
M10pXSwKLS0jICAgICAgICAgbTRfZXZhbChbKCQyKSAhPSAoJDQpXSksIFsxXSwgW200X2NtcChb
JDJdLCBbJDRdKV0sCi0tIyAgICAgICAgIFswXV9tNF9wb3BkZWYoW19tNF9jbXBdKSkKLS0jIHRo
ZW4gY2FsbHMgX200X2NtcChbMSswXSwgWzAqMl0sIFsxXSwgWzIrMF0pCi0tbTRfZGVmaW5lKFtf
bTRfbGlzdF9jbXBfcmF3XSwKLS1bbTRfaWYoWyQxXSwgWyQyXSwgMCwKLS0gICAgICAgW19tNF9s
aXN0X2NtcCgkMSswX200X2xpc3RfcGFkKG00X2NvdW50KCQxKSwgbTRfY291bnQoJDIpKSwKLS0J
CSAgICAgJDIrMF9tNF9saXN0X3BhZChtNF9jb3VudCgkMiksIG00X2NvdW50KCQxKSkpXSldKQot
LQotLW00X2RlZmluZShbX200X2xpc3RfcGFkXSwKLS1bbTRfaWYobTRfZXZhbCgkMSA8ICQyKSwg
WzFdLAotLSAgICAgICBbX200X2ZvcihtNF9pbmNyKFskMV0pLCBbJDJdLCBbMV0sIFssMCpdKV0p
XSkKLS0KLS1tNF9kZWZpbmUoW19tNF9saXN0X2NtcF0sCi0tW200X3B1c2hkZWYoW19tNF9jbXBd
LCBbbTRfaWYoXV9tNF9mb3IoCi0tICAgWzFdLCBtNF9ldmFsKFskIyA+PiAxXSksIFsxXSwgWyQw
XyhdLCBbLF1tNF9ldmFsKFskIyA+PiAxXSlbKV0pWwotLSAgICAgIFswXV9tNF9wb3BkZWYoW19t
NF9jbXBdKSldKV9tNF9jbXAoJEApXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9saXN0X2NtcF9dLAot
LVskMF8oWyQxXSwgbTRfZXZhbChbJDEgKyAkMl0pKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfbGlz
dF9jbXBfX10sCi0tW1ttNF9ldmFsKFsoJCQxKSAhPSAoJCQyKV0pLCBbMV0sIFttNF9jbXAoWyQk
MV0sIFskJDJdKV0sCi0tXV0pCi0tCi0tIyBtNF9tYXgoRVhQUiwgLi4uKQotLSMgbTRfbWluKEVY
UFIsIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gdGhlIGRlY2ltYWwgdmFs
dWUgb2YgdGhlIG1heGltdW0gKG9yIG1pbmltdW0pIGluIGEgc2VyaWVzIG9mCi0tIyBpbnRlZ2Vy
IGV4cHJlc3Npb25zLgotLSMKLS0jIF9tNF9mb3JlYWNoIHRvIHRoZSByZXNjdWU7IHdlIG9ubHkg
bmVlZCB0byByZXBsYWNlIF9tNF9taW5tYXguICBIZXJlLAotLSMgd2UgbmVlZCBhIHRlbXBvcmFy
eSBtYWNybyB0byB0cmFjayB0aGUgYmVzdCBhbnN3ZXIgc28gZmFyLCBzbyB0aGF0Ci0tIyB0aGUg
Zm9yZWFjaCBleHByZXNzaW9uIGlzIHRyYWN0YWJsZS4KLS1tNF9kZWZpbmUoW19tNF9taW5tYXhd
LAotLVttNF9wdXNoZGVmKFtfbTRfYmVzdF0sIG00X2V2YWwoWyQyXSkpX200X2ZvcmVhY2goCi0t
ICBbbTRfZGVmaW5lKFtfbTRfYmVzdF0sICQxKF9tNF9iZXN0LF0sIFspKV0sIG00X3NoaWZ0KCRA
KSldZG5sCi0tW19tNF9iZXN0W11fbTRfcG9wZGVmKFtfbTRfYmVzdF0pXSkKLS0KLS0jIG00X3Nl
dF9hZGRfYWxsKFNFVCwgVkFMVUUuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgQWRkIGVhY2ggVkFMVUUgaW50byBTRVQuICBUaGlzIGlzIE8obikgaW4gdGhlIG51bWJl
ciBvZiBWQUxVRXMsIGFuZAotLSMgY2FuIGJlIGZhc3RlciB0aGFuIGNhbGxpbmcgbTRfc2V0X2Fk
ZCBmb3IgZWFjaCBWQUxVRS4KLS0jCi0tIyBfbTRfZm9yZWFjaCB0byB0aGUgcmVzY3VlLiAgSWYg
bm8gZGVsZXRpb25zIGhhdmUgb2NjdXJyZWQsIHRoZW4KLS0jIGF2b2lkIHRoZSBzcGVlZCBwZW5h
bHR5IG9mIG00X3NldF9hZGQuCi0tbTRfZGVmaW5lKFttNF9zZXRfYWRkX2FsbF0sCi0tW200X2lm
KFskI10sIFswXSwgW10sIFskI10sIFsxXSwgW10sCi0tICAgICAgIFttNF9kZWZpbmUoW19tNF9z
ZXRfc2l6ZSgkMSldLCBtNF9ldmFsKG00X3NldF9zaXplKFskMV0pCi0tCSAgKyBtNF9sZW4oX200
X2ZvcmVhY2gobTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLAotLSAgW1ttNF9zZXRfYWRk
XV0sIFtbXyQwXV0pWyhbJDFdLF0sIFspXSwgJEApKSkpXSldKQotLQotLW00X2RlZmluZShbX200
X3NldF9hZGRfYWxsXSwKLS1bbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLCBbXSwKLS0JICBb
bTRfZGVmaW5lKFtfbTRfc2V0KFskMV0sJDIpXSwKLS0JCSAgICAgWzFdKW00X3B1c2hkZWYoW19t
NF9zZXQoWyQxXSldLCBbJDJdKS1dKV0pCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL200c3VnYXIubTQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3Vn
YXIvbTRzdWdhci5tNAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBiYmQ2OTU4MzZh
Mi4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgt
Ymlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9tNHN1Z2FyLm00Ci0rKysgL2Rldi9udWxsCi1AQCAt
MSwzMzA4ICswLDAgQEAKLS1kaXZlcnQoLTEpIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQotLSMgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgQXV0b2NvbmYuCi0tIyBCYXNlIE00IGxheWVyLgotLSMgUmVxdWlyZXMgR05VIE00Lgot
LSMKLS0jIENvcHlyaWdodCAoQykgMTk5OS0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgotLQotLSMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQXV0b2NvbmYuICBUaGlzIHByb2dyYW0g
aXMgZnJlZQotLSMgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkgaXQgdW5kZXIgdGhlCi0tIyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo
ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFVuZGVyIFNl
Y3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAotLSMg
cGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBBdXRvY29uZiBDb25maWd1cmUgU2NyaXB0IEV4
Y2VwdGlvbiwKLS0jIHZlcnNpb24gMy4wLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbi4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYW5kIGEgY29weSBvZiB0aGUgQXV0
b2NvbmYgQ29uZmlndXJlIFNjcmlwdCBFeGNlcHRpb24gYWxvbmcgd2l0aAotLSMgdGhpcyBwcm9n
cmFtOyBzZWUgdGhlIGZpbGVzIENPUFlJTkd2MyBhbmQgQ09QWUlORy5FWENFUFRJT04KLS0jIHJl
c3BlY3RpdmVseS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u
Ci0tCi0tIyBXcml0dGVuIGJ5IEFraW0gRGVtYWlsbGUuCi0tCi0tIyBTZXQgdGhlIHF1b3Rlcywg
d2hhdGV2ZXIgdGhlIGN1cnJlbnQgcXVvdGluZyBzeXN0ZW0uCi0tY2hhbmdlcXVvdGUoKQotLWNo
YW5nZXF1b3RlKFssIF0pCi0tCi0tIyBTb21lIG9sZCBtNCdzIGRvbid0IHN1cHBvcnQgbTRleGl0
LiAgQnV0IHRoZXkgcHJvdmlkZQotLSMgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5IGJ5IGNvcmUg
ZHVtcGluZyBiZWNhdXNlIG9mIHRoZQotLSMgbG9uZyBtYWNyb3Mgd2UgZGVmaW5lLgotLWlmZGVm
KFtfX2dudV9fXSwgLAotLVtlcnJwcmludChNNHN1Z2FyIHJlcXVpcmVzIEdOVSBNNC4gSW5zdGFs
bCBpdCBiZWZvcmUgaW5zdGFsbGluZyBNNHN1Z2FyIG9yCi0tc2V0IHRoZSBNNCBlbnZpcm9ubWVu
dCB2YXJpYWJsZSB0byBpdHMgYWJzb2x1dGUgZmlsZSBuYW1lLikKLS1tNGV4aXQoMildKQotLQot
LQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyAxLiBTaW11bGF0
ZSAtLXByZWZpeC1idWlsdGlucy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAjIwotLQotLSMgbTRfZGVmaW5lCi0tIyBtNF9kZWZuCi0tIyBtNF91bmRlZmluZQotLWRl
ZmluZShbbTRfZGVmaW5lXSwgICBkZWZuKFtkZWZpbmVdKSkKLS1kZWZpbmUoW200X2RlZm5dLCAg
ICAgZGVmbihbZGVmbl0pKQotLWRlZmluZShbbTRfdW5kZWZpbmVdLCBkZWZuKFt1bmRlZmluZV0p
KQotLQotLW00X3VuZGVmaW5lKFtkZWZpbmVdKQotLW00X3VuZGVmaW5lKFtkZWZuXSkKLS1tNF91
bmRlZmluZShbdW5kZWZpbmVdKQotLQotLQotLSMgbTRfY29weShTUkMsIERTVCkKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBEZWZpbmUgRFNUIGFzIHRoZSBkZWZpbml0aW9uIG9mIFNSQy4KLS0j
IFdoYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuOgotLSMgMS4gbTRfY29weShbZnJvbV0sIFt0
b10pCi0tIyAyLiBtNF9kZWZpbmUoW3RvXSwgW2Zyb20oJEApXSkKLS0jIFdlbGwsIG9idmlvdXNs
eSAxIGlzIG1vcmUgZXhwZW5zaXZlIGluIHNwYWNlLiAgTWF5YmUgMiBpcyBtb3JlIGV4cGVuc2l2
ZQotLSMgaW4gdGltZSwgYnV0IGJlY2F1c2Ugb2YgdGhlIHNwYWNlIGNvc3Qgb2YgMSwgaXQncyBu
b3QgdGhhdCBvYnZpb3VzLgotLSMgTmV2ZXJ0aGVsZXNzLCBvbmUgaHVnZSBkaWZmZXJlbmNlIGlz
IHRoZSBoYW5kbGluZyBvZiBgJDAnLiAgSWYgYGZyb20nCi0tIyB1c2VzIGAkMCcsIHRoZW4gd2l0
aCAxLCBgdG8nJ3MgYCQwJyBpcyBgdG8nLCB3aGlsZSBpdCBpcyBgZnJvbScgaW4gMi4KLS0jIFRo
ZSB1c2VyIHdvdWxkIGNlcnRhaW5seSBwcmVmZXIgdG8gc2VlIGB0bycuCi0tIwotLSMgVGhpcyBk
ZWZpbml0aW9uIGlzIGluIGVmZmVjdCBkdXJpbmcgbTRzdWdhciBpbml0aWFsaXphdGlvbiwgd2hl
bgotLSMgdGhlcmUgYXJlIG5vIHB1c2hkZWYgc3RhY2tzOyBsYXRlciBvbiwgd2UgcmVkZWZpbmUg
aXQgdG8gc29tZXRoaW5nCi0tIyBtb3JlIHBvd2VyZnVsIGZvciBhbGwgb3RoZXIgY2xpZW50cyB0
byB1c2UuCi0tbTRfZGVmaW5lKFttNF9jb3B5XSwKLS1bbTRfZGVmaW5lKFskMl0sIG00X2RlZm4o
WyQxXSkpXSkKLS0KLS0KLS0jIG00X3JlbmFtZShTUkMsIERTVCkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIFJlbmFtZSB0aGUgbWFjcm8gU1JDIHRvIERTVC4KLS1tNF9kZWZpbmUoW200X3Jl
bmFtZV0sCi0tW200X2NvcHkoWyQxXSwgWyQyXSltNF91bmRlZmluZShbJDFdKV0pCi0tCi0tCi0t
IyBtNF9yZW5hbWVfbTQoTUFDUk8tTkFNRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgUmVuYW1lIE1BQ1JPLU5BTUUgdG8gbTRfTUFDUk8tTkFNRS4KLS1tNF9kZWZpbmUoW200X3Jl
bmFtZV9tNF0sCi0tW200X3JlbmFtZShbJDFdLCBbbTRfJDFdKV0pCi0tCi0tCi0tIyBtNF9jb3B5
X3VubTQobTRfTUFDUk8tTkFNRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
Q29weSBtNF9NQUNSTy1OQU1FIHRvIE1BQ1JPLU5BTUUuCi0tbTRfZGVmaW5lKFttNF9jb3B5X3Vu
bTRdLAotLVttNF9jb3B5KFskMV0sIG00X2JwYXRzdWJzdChbJDFdLCBbXm00X1woLipcKV0sIFtb
XDFdXSkpXSkKLS0KLS0KLS0jIFNvbWUgbTQgaW50ZXJuYWxzIGhhdmUgbmFtZXMgY29sbGlkaW5n
IHdpdGggdG9rZW5zIHdlIG1pZ2h0IHVzZS4KLS0jIFJlbmFtZSB0aGVtIGFgIGxhIGBtNCAtLXBy
ZWZpeC1idWlsdGlucycuICBDb25kaXRpb25hbHMgZmlyc3QsIHNpbmNlCi0tIyBzb21lIHN1YnNl
cXVlbnQgcmVuYW1lcyBhcmUgY29uZGl0aW9uYWwuCi0tbTRfcmVuYW1lX200KFtpZmRlZl0pCi0t
bTRfcmVuYW1lKFtpZmVsc2VdLCBbbTRfaWZdKQotLQotLW00X3JlbmFtZV9tNChbYnVpbHRpbl0p
Ci0tbTRfcmVuYW1lX200KFtjaGFuZ2Vjb21dKQotLW00X3JlbmFtZV9tNChbY2hhbmdlcXVvdGVd
KQotLW00X2lmZGVmKFtjaGFuZ2V3b3JkXSxkbmwgY29uZGl0aW9uYWxseSBhdmFpbGFibGUgaW4g
MS40LngKLS1bbTRfdW5kZWZpbmUoW2NoYW5nZXdvcmRdKV0pCi0tbTRfcmVuYW1lX200KFtkZWJ1
Z2ZpbGVdKQotLW00X3JlbmFtZV9tNChbZGVidWdtb2RlXSkKLS1tNF9yZW5hbWVfbTQoW2RlY3Jd
KQotLW00X3JlbmFtZV9tNChbZGl2bnVtXSkKLS1tNF9yZW5hbWVfbTQoW2R1bXBkZWZdKQotLW00
X3JlbmFtZV9tNChbZXJycHJpbnRdKQotLW00X3JlbmFtZV9tNChbZXN5c2NtZF0pCi0tbTRfcmVu
YW1lX200KFtldmFsXSkKLS1tNF9yZW5hbWVfbTQoW2Zvcm1hdF0pCi0tbTRfdW5kZWZpbmUoW2lu
Y2x1ZGVdKQotLW00X3JlbmFtZV9tNChbaW5jcl0pCi0tbTRfcmVuYW1lX200KFtpbmRleF0pCi0t
bTRfcmVuYW1lX200KFtpbmRpcl0pCi0tbTRfcmVuYW1lX200KFtsZW5dKQotLW00X3JlbmFtZShb
bTRleGl0XSwgW200X2V4aXRdKQotLW00X3VuZGVmaW5lKFttNHdyYXBdKQotLW00X2lmZGVmKFtt
a3N0ZW1wXSxkbmwgYWRkZWQgaW4gTTQgMS40LjgKLS1bbTRfcmVuYW1lX200KFtta3N0ZW1wXSkK
LS1tNF9jb3B5KFttNF9ta3N0ZW1wXSwgW200X21ha2V0ZW1wXSkKLS1tNF91bmRlZmluZShbbWFr
ZXRlbXBdKV0sCi0tW200X3JlbmFtZV9tNChbbWFrZXRlbXBdKQotLW00X2NvcHkoW200X21ha2V0
ZW1wXSwgW200X21rc3RlbXBdKV0pCi0tbTRfcmVuYW1lKFtwYXRzdWJzdF0sIFttNF9icGF0c3Vi
c3RdKQotLW00X3JlbmFtZV9tNChbcG9wZGVmXSkKLS1tNF9yZW5hbWVfbTQoW3B1c2hkZWZdKQot
LW00X3JlbmFtZShbcmVnZXhwXSwgW200X2JyZWdleHBdKQotLW00X3JlbmFtZV9tNChbc2hpZnRd
KQotLW00X3VuZGVmaW5lKFtzaW5jbHVkZV0pCi0tbTRfcmVuYW1lX200KFtzdWJzdHJdKQotLW00
X2lmZGVmKFtzeW1ib2xzXSxkbmwgcHJlc2VudCBvbmx5IGluIGFscGhhLXF1YWxpdHkgMS40bwot
LVttNF9yZW5hbWVfbTQoW3N5bWJvbHNdKV0pCi0tbTRfcmVuYW1lX200KFtzeXNjbWRdKQotLW00
X3JlbmFtZV9tNChbc3lzdmFsXSkKLS1tNF9yZW5hbWVfbTQoW3RyYWNlb2ZmXSkKLS1tNF9yZW5h
bWVfbTQoW3RyYWNlb25dKQotLW00X3JlbmFtZV9tNChbdHJhbnNsaXRdKQotLQotLSMgX200X2Rl
Zm4oQVJHKQotLSMgLS0tLS0tLS0tLS0tLQotLSMgX200X2RlZm4gaXMgZm9yIGludGVybmFsIHVz
ZSBvbmx5IC0gaXQgYnlwYXNzZXMgdGhlIHdyYXBwZXIsIHNvIGl0Ci0tIyBtdXN0IG9ubHkgYmUg
dXNlZCBvbiBvbmUgYXJndW1lbnQgYXQgYSB0aW1lLCBhbmQgb25seSBvbiBtYWNyb3MKLS0jIGtu
b3duIHRvIGJlIGRlZmluZWQuICBNYWtlIHN1cmUgdGhpcyBzdGlsbCB3b3JrcyBpZiB0aGUgdXNl
ciByZW5hbWVzCi0tIyBtNF9kZWZuIGJ1dCBub3QgX200X2RlZm4uCi0tbTRfY29weShbbTRfZGVm
bl0sIFtfbTRfZGVmbl0pCi0tCi0tIyBfbTRfZGl2ZXJ0X3JhdyhOVU0pCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBfbTRfZGl2ZXJ0X3JhdyBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuICBV
c2UgdGhpcyBpbnN0ZWFkIG9mCi0tIyBtNF9idWlsdGluKFtkaXZlcnRdLCBOVU0pLCBzbyB0aGF0
IHRyYWNpbmcgZGl2ZXJzaW9uIGZsb3cgaXMgZWFzaWVyLgotLW00X3JlbmFtZShbZGl2ZXJ0XSwg
W19tNF9kaXZlcnRfcmF3XSkKLS0KLS0jIF9tNF9wb3BkZWYoQVJHLi4uKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBfbTRfcG9wZGVmIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAtIGl0IGJ5
cGFzc2VzIHRoZSB3cmFwcGVyLCBzbyBpdAotLSMgbXVzdCBvbmx5IGJlIHVzZWQgb24gbWFjcm9z
IGtub3duIHRvIGJlIGRlZmluZWQuICBNYWtlIHN1cmUgdGhpcwotLSMgc3RpbGwgd29ya3MgaWYg
dGhlIHVzZXIgcmVuYW1lcyBtNF9wb3BkZWYgYnV0IG5vdCBfbTRfcG9wZGVmLgotLW00X2NvcHko
W200X3BvcGRlZl0sIFtfbTRfcG9wZGVmXSkKLS0KLS0jIF9tNF91bmRlZmluZShBUkcuLi4pCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgX200X3VuZGVmaW5lIGlzIGZvciBpbnRlcm5hbCB1
c2Ugb25seSAtIGl0IGJ5cGFzc2VzIHRoZSB3cmFwcGVyLCBzbwotLSMgaXQgbXVzdCBvbmx5IGJl
IHVzZWQgb24gbWFjcm9zIGtub3duIHRvIGJlIGRlZmluZWQuICBNYWtlIHN1cmUgdGhpcwotLSMg
c3RpbGwgd29ya3MgaWYgdGhlIHVzZXIgcmVuYW1lcyBtNF91bmRlZmluZSBidXQgbm90IF9tNF91
bmRlZmluZS4KLS1tNF9jb3B5KFttNF91bmRlZmluZV0sIFtfbTRfdW5kZWZpbmVdKQotLQotLSMg
X200X3VuZGl2ZXJ0KE5VTS4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBfbTRfdW5k
aXZlcnQgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LCBhbmQgc2hvdWxkIGFsd2F5cyBiZSBnaXZl
bgotLSMgYXJndW1lbnRzLiAgVXNlIHRoaXMgaW5zdGVhZCBvZiBtNF9idWlsdGluKFt1bmRpdmVy
dF0sIE5VTS4uLiksIHNvCi0tIyB0aGF0IHRyYWNpbmcgZGl2ZXJzaW9uIGZsb3cgaXMgZWFzaWVy
LgotLW00X3JlbmFtZShbdW5kaXZlcnRdLCBbX200X3VuZGl2ZXJ0XSkKLS0KLS0KLS0jIyAtLS0t
LS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgMi4gRXJyb3IgbWVzc2FnZXMuICAjIwotLSMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIG00X2xvY2F0aW9uCi0tIyAtLS0tLS0tLS0tLQot
LSMgT3V0cHV0IHRoZSBjdXJyZW50IGZpbGUsIGNvbG9uLCBhbmQgdGhlIGN1cnJlbnQgbGluZSBu
dW1iZXIuCi0tbTRfZGVmaW5lKFttNF9sb2NhdGlvbl0sCi0tW19fZmlsZV9fOl9fbGluZV9fXSkK
LS0KLS0KLS0jIG00X2VycnByaW50bihNU0cpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgU2Ft
ZSBhcyBgZXJycHJpbnQnLCBidXQgd2l0aCB0aGUgbWlzc2luZyBlbmQgb2YgbGluZS4KLS1tNF9k
ZWZpbmUoW200X2VycnByaW50bl0sCi0tW200X2VycnByaW50KFskMQotLV0pXSkKLS0KLS0KLS0j
IG00X3dhcm5pbmcoTVNHKQotLSMgLS0tLS0tLS0tLS0tLS0tCi0tIyBXYXJuIHRoZSB1c2VyLgot
LW00X2RlZmluZShbbTRfd2FybmluZ10sCi0tW200X2VycnByaW50bihtNF9sb2NhdGlvbls6IHdh
cm5pbmc6ICQxXSldKQotLQotLQotLSMgbTRfZmF0YWwoTVNHLCBbRVhJVC1TVEFUVVNdKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRmF0YWwgdGhlIHVzZXIuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOikKLS1tNF9kZWZp
bmUoW200X2ZhdGFsXSwKLS1bbTRfZXJycHJpbnRuKG00X2xvY2F0aW9uWzogZXJyb3I6ICQxXQot
LW00X2V4cGFuc2lvbl9zdGFjayltNF9leGl0KG00X2lmKFskMl0sLCAxLCBbJDJdKSldKQotLQot
LQotLSMgbTRfYXNzZXJ0KEVYUFJFU1NJT04sIFtFWElULVNUQVRVUyA9IDFdKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgVGhpcyBtYWNybyBlbnN1cmVz
IHRoYXQgRVhQUkVTU0lPTiBldmFsdWF0ZXMgdG8gdHJ1ZSwgYW5kIGV4aXRzIGlmCi0tIyBFWFBS
RVNTSU9OIGV2YWx1YXRlcyB0byBmYWxzZS4KLS1tNF9kZWZpbmUoW200X2Fzc2VydF0sCi0tW200
X2lmKG00X2V2YWwoWyQxXSksIDAsCi0tICAgICAgIFttNF9mYXRhbChbYXNzZXJ0IGZhaWxlZDog
JDFdLCBbJDJdKV0pXSkKLS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tICMjCi0tIyMgMy4gV2Fy
bmluZ3MuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIF9tNF93YXJuKENBVEVH
T1JZLCBNRVNTQUdFLCBbU1RBQ0stVFJBQ0VdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXBvcnQgYSBNRVNTQUdFIHRvIHRoZSB1c2VyIGlmIHRo
ZSBDQVRFR09SWSBvZiB3YXJuaW5ncyBpcyBlbmFibGVkLgotLSMgVGhpcyBpcyBmb3IgdHJhY2Vz
IG9ubHkuCi0tIyBJZiBwcmVzZW50LCBTVEFDSy1UUkFDRSBpcyBhIFxuLXNlcGFyYXRlZCBsaXN0
IG9mICJMT0NBVElPTjogTUVTU0FHRSIsCi0tIyB3aGVyZSB0aGUgbGFzdCBsaW5lIChhbmQgbm8g
b3RoZXIpIGVuZHMgd2l0aCAidGhlIHRvcCBsZXZlbCIuCi0tIwotLSMgV2l0aGluIG00LCB0aGUg
bWFjcm8gaXMgYSBuby1vcC4gIFRoaXMgbWFjcm8gcmVhbGx5IG1hdHRlcnMKLS0jIHdoZW4gYXV0
b200dGUgcG9zdC1wcm9jZXNzZXMgdGhlIHRyYWNlIG91dHB1dC4KLS1tNF9kZWZpbmUoW19tNF93
YXJuXSwgW10pCi0tCi0tCi0tIyBtNF93YXJuKENBVEVHT1JZLCBNRVNTQUdFKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJlcG9ydCBhIE1FU1NBR0UgdG8gdGhlIHVzZXIgaWYg
dGhlIENBVEVHT1JZIG9mIHdhcm5pbmdzIGlzIGVuYWJsZWQuCi0tbTRfZGVmaW5lKFttNF93YXJu
XSwKLS1bX200X3dhcm4oWyQxXSwgWyQyXSwKLS1tNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFj
a10sIFttNF9leHBhbnNpb25fc3RhY2tdKSldKQotLQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKLS0jIyA0LiBGaWxlIGluY2x1c2lvbi4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLSAjIwotLQotLQotLSMgV2UgYWxzbyB3YW50IHRvIG5ldXRyYWxpemUgaW5jbHVkZSAoYW5k
IHNpbmNsdWRlIGZvciBzeW1tZXRyeSksCi0tIyBidXQgd2Ugd2FudCB0byBleHRlbmQgdGhlbSBz
bGlnaHRseTogd2FybiB3aGVuIGEgZmlsZSBpcyBpbmNsdWRlZAotLSMgc2V2ZXJhbCB0aW1lcy4g
IFRoaXMgaXMsIGluIGdlbmVyYWwsIGEgZGFuZ2Vyb3VzIG9wZXJhdGlvbiwgYmVjYXVzZQotLSMg
dG9vIG1hbnkgcGVvcGxlIGZvcmdldCB0byBxdW90ZSB0aGUgZmlyc3QgYXJndW1lbnQgb2YgbTRf
ZGVmaW5lLgotLSMKLS0jIEZvciBpbnN0YW5jZSBpbiB0aGUgZm9sbG93aW5nIGNhc2U6Ci0tIyAg
IG00X2RlZmluZShmb28sIFtiYXJdKQotLSMgdGhlbiBhIHNlY29uZCByZWFkaW5nIHdpbGwgdHVy
biBpbnRvCi0tIyAgIG00X2RlZmluZShiYXIsIFtiYXJdKQotLSMgd2hpY2ggaXMgY2VydGFpbmx5
IG5vdCB3aGF0IHdhcyBtZWFudC4KLS0KLS0jIG00X2luY2x1ZGVfdW5pcXVlKEZJTEUpCi0tIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVjbGFyZSB0aGF0IHRoZSBGSUxFIHdhcyBsb2Fk
aW5nOyBhbmQgd2FybiBpZiBpdCBoYXMgYWxyZWFkeQotLSMgYmVlbiBpbmNsdWRlZC4KLS1tNF9k
ZWZpbmUoW200X2luY2x1ZGVfdW5pcXVlXSwKLS1bbTRfaWZkZWYoW200X2luY2x1ZGUoJDEpXSwK
LS0JICBbbTRfd2Fybihbc3ludGF4XSwgW2ZpbGUgYCQxJyBpbmNsdWRlZCBzZXZlcmFsIHRpbWVz
XSldKWRubAotLW00X2RlZmluZShbbTRfaW5jbHVkZSgkMSldKV0pCi0tCi0tCi0tIyBtNF9pbmNs
dWRlKEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtlIHRoZSBidWlsdGluIGluY2x1
ZGUsIGJ1dCB3YXJucyBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbnMuCi0tbTRfZGVmaW5lKFtt
NF9pbmNsdWRlXSwKLS1bbTRfaW5jbHVkZV91bmlxdWUoWyQxXSlkbmwKLS1tNF9idWlsdGluKFtp
bmNsdWRlXSwgWyQxXSldKQotLQotLQotLSMgbTRfc2luY2x1ZGUoRklMRSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBMaWtlIHRoZSBidWlsdGluIHNpbmNsdWRlLCBidXQgd2FybnMgYWdhaW5z
dCBtdWx0aXBsZSBpbmNsdXNpb25zLgotLW00X2RlZmluZShbbTRfc2luY2x1ZGVdLAotLVttNF9p
bmNsdWRlX3VuaXF1ZShbJDFdKWRubAotLW00X2J1aWx0aW4oW3NpbmNsdWRlXSwgWyQxXSldKQot
LQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMj
IDUuIEFkZGl0aW9uYWwgYnJhbmNoaW5nIGNvbnN0cnVjdHMuICAjIwotLSMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgQm90aCBgbTRfaWZ2YWwnIGFuZCBg
bTRfaWZzZXQnIHRlc3RzIGFnYWluc3QgdGhlIGVtcHR5IHN0cmluZy4gIFRoZQotLSMgZGlmZmVy
ZW5jZSBpcyB0aGF0IGBtNF9pZnNldCcgaXMgc3BlY2lhbGl6ZWQgb24gbWFjcm9zLgotLSMKLS0j
IEluIGNhc2Ugb2YgYXJndW1lbnRzIG9mIG1hY3JvcywgZWcuICQxLCBpdCBtYWtlcyBsaXR0bGUg
ZGlmZmVyZW5jZS4KLS0jIEluIHRoZSBjYXNlIG9mIGEgbWFjcm8gYEZPTycsIHlvdSBkb24ndCB3
YW50IHRvIGNoZWNrIGBtNF9pZnZhbChGT08sCi0tIyBUUlVFKScsIGJlY2F1c2UgaWYgYEZPTycg
ZXhwYW5kcyB3aXRoIGNvbW1hcywgdGhlcmUgaXMgYSBzaGlmdGluZyBvZgotLSMgdGhlIGFyZ3Vt
ZW50cy4gIFNvIHlvdSB3YW50IHRvIHJ1biBgbTRfaWZ2YWwoW0ZPT10pJywgYnV0IHRoZW4geW91
IGp1c3QKLS0jIGNvbXBhcmUgdGhlICpzdHJpbmcqIGBGT08nIGFnYWluc3QgYCcsIHdoaWNoLCBv
ZiBjb3Vyc2UgZmFpbHMuCi0tIwotLSMgU28geW91IHdhbnQgdGhlIHZhcmlhdGlvbiBgbTRfaWZz
ZXQnIHRoYXQgZXhwZWN0cyBhIG1hY3JvIG5hbWUgYXMgJDEuCi0tIyBJZiB0aGlzIG1hY3JvIGlz
IGJvdGggZGVmaW5lZCBhbmQgZGVmaW5lZCB0byBhIG5vbiBlbXB0eSB2YWx1ZSwgdGhlbgotLSMg
aXQgcnVucyBUUlVFLCBldGMuCi0tCi0tCi0tIyBtNF9pZmJsYW5rKENPTkQsIFtJRi1CTEFOS10s
IFtJRi1URVhUXSkKLS0jIG00X2lmbmJsYW5rKENPTkQsIFtJRi1URVhUXSwgW0lGLUJMQU5LXSkK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIENPTkQg
aXMgZW1wdHksIG9yIGNvbnNpc3RzIG9ubHkgb2YgYmxhbmtzIChzcGFjZSwgdGFiLCBuZXdsaW5l
KSwKLS0jIHRoZW4gZXhwYW5kIElGLUJMQU5LLCBvdGhlcndpc2UgZXhwYW5kIElGLVRFWFQuICBU
aGlzIGRpZmZlcnMgZnJvbQotLSMgbTRfaWZ2YWwgb25seSBpZiBDT05EIGhhcyBqdXN0IHdoaXRl
c3BhY2UsIGJ1dCBpdCBoZWxwcyBvcHRpbWl6ZSBpbgotLSMgc3BpdGUgb2YgdXNlcnMgd2hvIG1p
c3Rha2VubHkgbGVhdmUgdHJhaWxpbmcgc3BhY2UgYWZ0ZXIgd2hhdCB0aGV5Ci0tIyB0aG91Z2h0
IHdhcyBhbiBlbXB0eSBhcmd1bWVudDoKLS0jICAgbWFjcm8oCi0tIyAgICAgICAgIFtdCi0tIyAg
ICAgICAgKQotLSMKLS0jIFdyaXRpbmcgb25lIG1hY3JvIGluIHRlcm1zIG9mIHRoZSBvdGhlciBj
YXVzZXMgZXh0cmEgb3ZlcmhlYWQsIHNvCi0tIyB3ZSBpbmxpbmUgYm90aCBkZWZpbml0aW9ucy4K
LS1tNF9kZWZpbmUoW200X2lmYmxhbmtdLAotLVttNF9pZihtNF90cmFuc2xpdChbWyQxXV0sICBb
IF1bCV1bCi0tXSksIFtdLCBbJDJdLCBbJDNdKV0pCi0tCi0tbTRfZGVmaW5lKFttNF9pZm5ibGFu
a10sCi0tW200X2lmKG00X3RyYW5zbGl0KFtbJDFdXSwgIFsgXVsJXVsKLS1dKSwgW10sIFskM10s
IFskMl0pXSkKLS0KLS0KLS0jIG00X2lmdmFsKENPTkQsIFtJRi1UUlVFXSwgW0lGLUZBTFNFXSkK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIENPTkQgaXMg
bm90IHRoZSBlbXB0eSBzdHJpbmcsIGV4cGFuZCBJRi1UUlVFLCBvdGhlcndpc2UgSUYtRkFMU0Uu
Ci0tIyBDb21wYXJhYmxlIHRvIG00X2lmZGVmLgotLW00X2RlZmluZShbbTRfaWZ2YWxdLAotLVtt
NF9pZihbJDFdLCBbXSwgWyQzXSwgWyQyXSldKQotLQotLQotLSMgbTRfbihURVhUKQotLSMgLS0t
LS0tLS0tLQotLSMgSWYgVEVYVCBpcyBub3QgZW1wdHksIHJldHVybiBURVhUIGFuZCBhIG5ldyBs
aW5lLCBvdGhlcndpc2Ugbm90aGluZy4KLS1tNF9kZWZpbmUoW200X25dLAotLVttNF9pZihbJDFd
LAotLSAgICAgICBbXSwgW10sCi0tCSAgIFskMQotLV0pXSkKLS0KLS0KLS0jIG00X2lmdmFsbihD
T05ELCBbSUYtVFJVRV0sIFtJRi1GQUxTRV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgU2FtZSBhcyBgbTRfaWZ2YWwnLCBidXQgYWRkIGFuIGV4dHJhIG5l
d2xpbmUgdG8gSUYtVFJVRSBvciBJRi1GQUxTRQotLSMgdW5sZXNzIHRoYXQgYXJndW1lbnQgaXMg
ZW1wdHkuCi0tbTRfZGVmaW5lKFttNF9pZnZhbG5dLAotLVttNF9pZihbJDFdLAotLSAgICAgICBb
XSwgICBbbTRfbihbJDNdKV0sCi0tCSAgICAgW200X24oWyQyXSldKV0pCi0tCi0tCi0tIyBtNF9p
ZnNldChNQUNSTywgW0lGLVRSVUVdLCBbSUYtRkFMU0VdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIE1BQ1JPIGhhcyBubyBkZWZpbml0aW9uLCBvciBv
ZiBpdHMgZGVmaW5pdGlvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLAotLSMgZXhwYW5kIElGLUZBTFNF
LCBvdGhlcndpc2UgSUYtVFJVRS4KLS1tNF9kZWZpbmUoW200X2lmc2V0XSwKLS1bbTRfaWZkZWYo
WyQxXSwKLS0JICBbbTRfaWZ2YWwoX200X2RlZm4oWyQxXSksIFskMl0sIFskM10pXSwKLS0JICBb
JDNdKV0pCi0tCi0tCi0tIyBtNF9pZm5kZWYoTkFNRSwgW0lGLU5PVC1ERUZJTkVEXSwgW0lGLURF
RklORURdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS1tNF9kZWZpbmUoW200X2lmbmRlZl0sCi0tW200X2lmZGVmKFskMV0sIFskM10sIFskMl0p
XSkKLS0KLS0KLS0jIG00X2Nhc2UoU1dJVENILCBWQUwxLCBJRi1WQUwxLCBWQUwyLCBJRi1WQUwy
LCAuLi4sIERFRkFVTFQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgbTQgZXF1aXZhbGVudCBvZgotLSMgc3dpdGNoIChT
V0lUQ0gpCi0tIyB7Ci0tIyAgIGNhc2UgVkFMMToKLS0jICAgICBJRi1WQUwxOwotLSMgICAgIGJy
ZWFrOwotLSMgICBjYXNlIFZBTDI6Ci0tIyAgICAgSUYtVkFMMjsKLS0jICAgICBicmVhazsKLS0j
ICAgLi4uCi0tIyAgIGRlZmF1bHQ6Ci0tIyAgICAgREVGQVVMVDsKLS0jICAgICBicmVhazsKLS0j
IH0uCi0tIyBBbGwgdGhlIHZhbHVlcyBhcmUgb3B0aW9uYWwsIGFuZCB0aGUgbWFjcm8gaXMgcm9i
dXN0IHRvIGFjdGl2ZQotLSMgc3ltYm9scyBwcm9wZXJseSBxdW90ZWQuCi0tIwotLSMgUGxlYXNl
IGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4K
LS1tNF9kZWZpbmUoW200X2Nhc2VdLAotLVttNF9pZihbJCNdLCAwLCBbXSwKLS0gICAgICAgWyQj
XSwgMSwgW10sCi0tICAgICAgIFskI10sIDIsIFskMl0sCi0tICAgICAgIFskMV0sIFskMl0sIFsk
M10sCi0tICAgICAgIFskMChbJDFdLCBtNF9zaGlmdDMoJEApKV0pXSkKLS0KLS0KLS0jIG00X2Jt
YXRjaChTV0lUQ0gsIFJFMSwgVkFMMSwgUkUyLCBWQUwyLCAuLi4sIERFRkFVTFQpCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgbTQg
ZXF1aXZhbGVudCBvZgotLSMKLS0jIGlmIChTV0lUQ0ggPX4gUkUxKQotLSMgICBWQUwxOwotLSMg
ZWxpZiAoU1dJVENIID1+IFJFMikKLS0jICAgVkFMMjsKLS0jIGVsaWYgLi4uCi0tIyAgIC4uLgot
LSMgZWxzZQotLSMgICBERUZBVUxUCi0tIwotLSMgQWxsIHRoZSB2YWx1ZXMgYXJlIG9wdGlvbmFs
LCBhbmQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9scwotLSMgcHJvcGVybHkg
cXVvdGVkLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBh
ZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFttNF9ibWF0Y2hdLAotLVttNF9pZihb
JCNdLCAwLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCi0tICAgICAg
IFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCi0t
ICAgICAgIFskI10sIDIsIFskMl0sCi0tICAgICAgIFttNF9pZihtNF9icmVnZXhwKFskMV0sIFsk
Ml0pLCAtMSwgWyQwKFskMV0sIG00X3NoaWZ0MygkQCkpXSwKLS0JICAgICAgWyQzXSldKV0pCi0t
Ci0tIyBtNF9hcmduKE4sIEFSR1MuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHRy
YWN0IGFyZ3VtZW50IE4gKGdyZWF0ZXIgdGhhbiAwKSBmcm9tIEFSR1MuICBFeGFtcGxlOgotLSMg
ICBtNF9kZWZpbmUoW2JdLCBbQl0pCi0tIyAgIG00X2FyZ24oWzJdLCBbYV0sIFtiXSwgW2NdKSA9
PiBiCi0tIwotLSMgUmF0aGVyIHRoYW4gdXNpbmcgbTRfY2FyKG00X3NoaWZ0bihbJDFdLCAkQCkp
LCB3ZSBleHBsb2l0IHRoZSBmYWN0IHRoYXQKLS0jIEdOVSBtNCBjYW4gZGlyZWN0bHkgcmVmZXJl
bmNlIGFueSBhcmd1bWVudCwgdGhyb3VnaCBhbiBpbmRpcmVjdCBtYWNyby4KLS1tNF9kZWZpbmUo
W200X2FyZ25dLAotLVttNF9hc3NlcnQoWzAgPCAkMV0pXWRubAotLVttNF9wdXNoZGVmKFtfJDBd
LCBbX200X3BvcGRlZihbXyQwXSldbTRfZHF1b3RlKFskXW00X2luY3IoWyQxXSkpKV8kMCgkQCld
KQotLQotLQotLSMgbTRfY2FyKEFSR1MuLi4pCi0tIyBtNF9jZHIoQVJHUy4uLikKLS0jIC0tLS0t
LS0tLS0tLS0tLQotLSMgTWFuaXB1bGF0ZSBtNCBsaXN0cy4gIG00X2NhciByZXR1cm5zIHRoZSBm
aXJzdCBhcmd1bWVudC4gIG00X2NkcgotLSMgYnVuZGxlcyBhbGwgYnV0IHRoZSBmaXJzdCBhcmd1
bWVudCBpbnRvIGEgcXVvdGVkIGxpc3QuICBUaGVzZSB0d28KLS0jIG1hY3JvcyBhcmUgZ2VuZXJh
bGx5IHVzZWQgd2l0aCBsaXN0IGFyZ3VtZW50cywgd2l0aCBxdW90aW5nIHJlbW92ZWQKLS0jIHRv
IGJyZWFrIHRoZSBsaXN0IGludG8gbXVsdGlwbGUgbTQgQVJHUy4KLS1tNF9kZWZpbmUoW200X2Nh
cl0sIFtbJDFdXSkKLS1tNF9kZWZpbmUoW200X2Nkcl0sCi0tW200X2lmKFskI10sIDAsIFttNF9m
YXRhbChbJDA6IGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNdKV0sCi0tICAgICAg
IFskI10sIDEsIFtdLAotLSAgICAgICBbbTRfZHF1b3RlKG00X3NoaWZ0KCRAKSldKV0pCi0tCi0t
IyBfbTRfY2RyKEFSR1MuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtlIG00X2Nkciwg
ZXhjZXB0IGluY2x1ZGUgYSBsZWFkaW5nIGNvbW1hIHVubGVzcyBvbmx5IG9uZSBhcmd1bWVudAot
LSMgcmVtYWlucy4gIFdoeT8gIEJlY2F1c2UgY29tcGFyaW5nIGEgbGFyZ2UgbGlzdCBhZ2FpbnN0
IFtdIGlzIG1vcmUKLS0jIGV4cGVuc2l2ZSBpbiBleHBhbnNpb24gdGltZSB0aGFuIGNvbXBhcmlu
ZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50czsgc28KLS0jIF9tNF9jZHIgY2FuIGJlIHVzZWQgdG8g
cmVkdWNlIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHdoZW4gaXQgaXMgdGltZQotLSMgdG8gZW5k
IHJlY3Vyc2lvbi4KLS1tNF9kZWZpbmUoW19tNF9jZHJdLAotLVttNF9pZihbJCNdLCAxLCBbXSwK
LS0gICAgICAgWywgbTRfZHF1b3RlKG00X3NoaWZ0KCRAKSldKV0pCi0tCi0tCi0tCi0tIyBtNF9j
b25kKFRFU1QxLCBWQUwxLCBJRi1WQUwxLCBURVNUMiwgVkFMMiwgSUYtVkFMMiwgLi4uLCBbREVG
QVVMVF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTaW1pbGFyIHRvIG00X2lmLCBleGNlcHQgdGhhdCBl
YWNoIFRFU1QgaXMgZXhwYW5kZWQgd2hlbiBlbmNvdW50ZXJlZC4KLS0jIElmIHRoZSBleHBhbnNp
b24gb2YgVEVTVG4gbWF0Y2hlcyB0aGUgc3RyaW5nIFZBTG4sIHRoZSByZXN1bHQgaXMgSUYtVkFM
bi4KLS0jIFRoZSByZXN1bHQgaXMgREVGQVVMVCBpZiBubyB0ZXN0cyBwYXNzZWQuICBUaGlzIG1h
Y3JvIGFsbG93cwotLSMgc2hvcnQtY2lyY3VpdGluZyBvZiBleHBlbnNpdmUgdGVzdHMsIHdoZXJl
IGl0IHBheXMgdG8gYXJyYW5nZSBxdWljawotLSMgZmlsdGVyIHRlc3RzIHRvIHJ1biBmaXJzdC4K
LS0jCi0tIyBGb3IgYW4gZXhhbXBsZSwgY29uc2lkZXIgYSBwcmV2aW91cyBpbXBsZW1lbnRhdGlv
biBvZiBfQVNfUVVPVEVfSUZFTFNFOgotLSMKLS0jICAgIG00X2lmKG00X2luZGV4KFskMV0sIFtc
XSksIFstMV0sIFskMl0sCi0tIyAgICAgICAgICBtNF9ldmFsKG00X2luZGV4KFskMV0sIFtcXF0p
ID49IDApLCBbMV0sIFskMl0sCi0tIyAgICAgICAgICBtNF9ldmFsKG00X2luZGV4KFskMV0sIFtc
JF0pID49IDApLCBbMV0sIFskMl0sCi0tIyAgICAgICAgICBtNF9ldmFsKG00X2luZGV4KFskMV0s
IFtcYF0pID49IDApLCBbMV0sIFskM10sCi0tIyAgICAgICAgICBtNF9ldmFsKG00X2luZGV4KFsk
MV0sIFtcIl0pID49IDApLCBbMV0sIFskM10sCi0tIyAgICAgICAgICBbJDJdKQotLSMKLS0jIEhl
cmUsIG00X2luZGV4IGlzIGNvbXB1dGVkIDUgdGltZXMsIGFuZCBtNF9ldmFsIDQsIGV2ZW4gaWYg
JDEgY29udGFpbnMKLS0jIG5vIGJhY2tzbGFzaC4gIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGRv
OgotLSMKLS0jICAgIG00X2NvbmQoW200X2luZGV4KFskMV0sIFtcXSldLCBbLTFdLCBbJDJdLAot
LSMgICAgICAgICAgICBbbTRfZXZhbChtNF9pbmRleChbJDFdLCBbXFxdKSA+PSAwKV0sIFsxXSwg
WyQyXSwKLS0jICAgICAgICAgICAgW200X2V2YWwobTRfaW5kZXgoWyQxXSwgW1wkXSkgPj0gMCld
LCBbMV0sIFskMl0sCi0tIyAgICAgICAgICAgIFttNF9ldmFsKG00X2luZGV4KFskMV0sIFtcYF0p
ID49IDApXSwgWzFdLCBbJDNdLAotLSMgICAgICAgICAgICBbbTRfZXZhbChtNF9pbmRleChbJDFd
LCBbXCJdKSA+PSAwKV0sIFsxXSwgWyQzXSwKLS0jICAgICAgICAgICAgWyQyXSkKLS0jCi0tIyBJ
biB0aGUgY29tbW9uIGNhc2Ugb2YgJDEgd2l0aCBubyBiYWNrc2xhc2gsIG9ubHkgb25lIG00X2lu
ZGV4IGV4cGFuc2lvbgotLSMgb2NjdXJzLCBhbmQgbTRfZXZhbCBpcyBhdm9pZGVkIGFsdG9nZXRo
ZXIuCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVz
dG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUoW200X2NvbmRdLAotLVttNF9pZihbJCNdLCBb
MF0sIFttNF9mYXRhbChbJDA6IGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNdKV0s
Ci0tICAgICAgIFskI10sIFsxXSwgWyQxXSwKLS0gICAgICAgbTRfZXZhbChbJCMgJSAzXSksIFsy
XSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhbiBhcmd1bWVudF0pXSwKLS0gICAgICAgW18kMCgk
QCldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfY29uZF0sCi0tW200X2lmKCgkMSksIFsoJDIpXSwg
WyQzXSwKLS0gICAgICAgWyQjXSwgWzNdLCBbXSwKLS0gICAgICAgWyQjXSwgWzRdLCBbJDRdLAot
LSAgICAgICBbJDAobTRfc2hpZnQzKCRAKSldKV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIDYuIEVuaGFuY2VkIHZlcnNpb24gb2Yg
c29tZSBwcmltaXRpdmVzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICMjCi0tCi0tIyBtNF9icGF0c3Vic3RzKFNUUklORywgUkUxLCBTVUJTVDEsIFJF
MiwgU1VCU1QyLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBtNCBlcXVpdmFsZW50IG9mCi0tIwotLSMgICAkXyA9IFNUUklO
RzsKLS0jICAgcy9SRTEvU1VCU1QxL2c7Ci0tIyAgIHMvUkUyL1NVQlNUMi9nOwotLSMgICAuLi4K
LS0jCi0tIyBBbGwgdGhlIHZhbHVlcyBhcmUgb3B0aW9uYWwsIGFuZCB0aGUgbWFjcm8gaXMgcm9i
dXN0IHRvIGFjdGl2ZSBzeW1ib2xzCi0tIyBwcm9wZXJseSBxdW90ZWQuCi0tIwotLSMgSSB3b3Vs
ZCBoYXZlIGxpa2VkIHRvIG5hbWUgdGhpcyBtYWNybyBgbTRfYnBhdHN1YnN0JywgdW5mb3J0dW5h
dGVseSwKLS0jIGR1ZSB0byBxdW90YXRpb24gcHJvYmxlbXMsIEkgbmVlZCB0byBkb3VibGUgcXVv
dGUgJDEgYmVsb3csIHRoZXJlZm9yZQotLSMgdGhlIGFuY2hvcnMgYXJlIGJyb2tlbiA6KCAgSSBj
YW4ndCBsZXQgdXNlcnMgYmUgdHJhcHBlZCBieSB0aGF0LgotLSMKLS0jIFJlY2FsbCB0aGF0IG00
X3NoaWZ0MyBhbHdheXMgcmVzdWx0cyBpbiBhbiBhcmd1bWVudC4gIEhlbmNlLCB3ZSBuZWVkCi0t
IyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgZmluYWwgZGVsZXRpb24gdnMuIGVuZGluZyByZWN1
cnNpb24uCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFk
anVzdG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUoW200X2JwYXRzdWJzdHNdLAotLVttNF9p
ZihbJCNdLCAwLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCi0tICAg
ICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0s
Ci0tICAgICAgIFskI10sIDIsIFttNF91bnF1b3RlKG00X2J1aWx0aW4oW3BhdHN1YnN0XSwgW1sk
MV1dLCBbJDJdKSldLAotLSAgICAgICBbJCNdLCAzLCBbbTRfdW5xdW90ZShtNF9idWlsdGluKFtw
YXRzdWJzdF0sIFtbJDFdXSwgWyQyXSwgWyQzXSkpXSwKLS0gICAgICAgW18kMCgkQG00X2lmKG00
X2V2YWwoJCMgJiAxKSwgMCwgWyxdKSldKV0pCi0tbTRfZGVmaW5lKFtfbTRfYnBhdHN1YnN0c10s
Ci0tW200X2lmKFskI10sIDIsIFskMV0sCi0tICAgICAgIFskMChtNF9idWlsdGluKFtwYXRzdWJz
dF0sIFtbJDFdXSwgWyQyXSwgWyQzXSksCi0tCSAgIG00X3NoaWZ0MygkQCkpXSldKQotLQotLQot
LSMgbTRfY29weShTUkMsIERTVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWZpbmUgdGhl
IHB1c2hkZWYgc3RhY2sgRFNUIGFzIGEgY29weSBvZiB0aGUgcHVzaGRlZiBzdGFjayBTUkM7Ci0t
IyBnaXZlIGFuIGVycm9yIGlmIERTVCBpcyBhbHJlYWR5IGRlZmluZWQuICBUaGlzIGlzIHBhcnRp
Y3VsYXJseSBuaWNlCi0tIyBmb3IgY29weWluZyBzZWxmLW1vZGlmeWluZyBwdXNoZGVmIHN0YWNr
cywgd2hlcmUgdGhlIHRvcCBkZWZpbml0aW9uCi0tIyBpbmNsdWRlcyBvbmUtc2hvdCBpbml0aWFs
aXphdGlvbiB0aGF0IGlzIGxhdGVyIHBvcHBlZCB0byB0aGUgbm9ybWFsCi0tIyBkZWZpbml0aW9u
LiAgVGhpcyB2ZXJzaW9uIGludGVudGlvbmFsbHkgZG9lcyBub3RoaW5nIGlmIFNSQyBpcwotLSMg
dW5kZWZpbmVkLgotLSMKLS0jIFNvbWUgbWFjcm9zIHNpbXBseSBjYW4ndCBiZSByZW5hbWVkIHdp
dGggdGhpcyBtZXRob2Q6IG5hbWVseSwgYW55dGhpbmcKLS0jIGludm9sdmVkIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBtNF9zdGFja19mb3JlYWNoX3NlcC4KLS1tNF9kZWZpbmUoW200X2NvcHld
LAotLVttNF9pZmRlZihbJDJdLCBbbTRfZmF0YWwoWyQwOiB3b24ndCBvdmVyd3JpdGUgZGVmaW5l
ZCBtYWNybzogJDJdKV0sCi0tCSAgW200X3N0YWNrX2ZvcmVhY2hfc2VwKFskMV0sIFttNF9wdXNo
ZGVmKFskMl0sXSwgWyldKV0pXWRubAotLVttNF9pZmRlZihbbTRfbG9jYXRpb24oJDEpXSwgW200
X2RlZmluZShbbTRfbG9jYXRpb24oJDIpXSwgbTRfbG9jYXRpb24pXSldKQotLQotLQotLSMgbTRf
Y29weV9mb3JjZShTUkMsIERTVCkKLS0jIG00X3JlbmFtZV9mb3JjZShTUkMsIERTVCkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgbTRfY29weS9tNF9yZW5hbWUsIGV4Y2Vw
dCBibGluZGx5IG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgRFNULgotLSMgTm90ZSB0aGF0IG00X2Nv
cHlfZm9yY2UgdG9sZXJhdGVzIHVuZGVmaW5lZCBTUkMsIHdoaWxlIG00X3JlbmFtZV9mb3JjZQot
LSMgZG9lcyBub3QuCi0tbTRfZGVmaW5lKFttNF9jb3B5X2ZvcmNlXSwKLS1bbTRfaWZkZWYoWyQy
XSwgW19tNF91bmRlZmluZShbJDJdKV0pbTRfY29weSgkQCldKQotLQotLW00X2RlZmluZShbbTRf
cmVuYW1lX2ZvcmNlXSwKLS1bbTRfaWZkZWYoWyQyXSwgW19tNF91bmRlZmluZShbJDJdKV0pbTRf
cmVuYW1lKCRAKV0pCi0tCi0tCi0tIyBtNF9kZWZpbmVfZGVmYXVsdChNQUNSTywgVkFMVUUpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiBNQUNSTyBpcyB1bmRlZmlu
ZWQsIHNldCBpdCB0byBWQUxVRS4KLS1tNF9kZWZpbmUoW200X2RlZmluZV9kZWZhdWx0XSwKLS1b
bTRfaWZuZGVmKFskMV0sIFttNF9kZWZpbmUoJEApXSldKQotLQotLQotLSMgbTRfZGVmYXVsdChF
WFAxLCBFWFAyKQotLSMgbTRfZGVmYXVsdF9uYmxhbmsoRVhQMSwgRVhQMikKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm5zIEVYUDEgaWYgbm90IGVtcHR5L2JsYW5r
LCBvdGhlcndpc2UgRVhQMi4gIEV4cGFuZCB0aGUgcmVzdWx0LgotLSMKLS0jIG00X2RlZmF1bHQg
aXMgY2FsbGVkIG9uIGhvdCBwYXRocywgc28gaW5saW5lIHRoZSBjb250ZW50cyBvZiBtNF9pZnZh
bCwKLS0jIGZvciBvbmUgbGVzcyByb3VuZCBvZiBleHBhbnNpb24uCi0tbTRfZGVmaW5lKFttNF9k
ZWZhdWx0XSwKLS1bbTRfaWYoWyQxXSwgW10sIFskMl0sIFskMV0pXSkKLS0KLS1tNF9kZWZpbmUo
W200X2RlZmF1bHRfbmJsYW5rXSwKLS1bbTRfaWZibGFuayhbJDFdLCBbJDJdLCBbJDFdKV0pCi0t
Ci0tCi0tIyBtNF9kZWZhdWx0X3F1b3RlZChFWFAxLCBFWFAyKQotLSMgbTRfZGVmYXVsdF9uYmxh
bmtfcXVvdGVkKEVYUDEsIEVYUDIpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIFJldHVybnMgRVhQMSBpZiBub24gZW1wdHkvYmxhbmssIG90aGVyd2lzZSBFWFAy
LiAgTGVhdmUgdGhlIHJlc3VsdCBxdW90ZWQuCi0tIwotLSMgRm9yIGNvbXBhcmlzb246Ci0tIyAg
IG00X2RlZmluZShbYWN0aXZlXSwgW0FDVElWRV0pCi0tIyAgIG00X2RlZmF1bHQoW2FjdGl2ZV0s
IFtkZWZhdWx0XSkgPT4gQUNUSVZFCi0tIyAgIG00X2RlZmF1bHQoW10sIFthY3RpdmVdKSA9PiBB
Q1RJVkUKLS0jICAgLW00X2RlZmF1bHQoWyBdLCBbYWN0aXZlXSktID0+IC0gLQotLSMgICAtbTRf
ZGVmYXVsdF9uYmxhbmsoWyBdLCBbYWN0aXZlXSktID0+IC1BQ1RJVkUtCi0tIyAgIG00X2RlZmF1
bHRfcXVvdGVkKFthY3RpdmVdLCBbZGVmYXVsdF0pID0+IGFjdGl2ZQotLSMgICBtNF9kZWZhdWx0
X3F1b3RlZChbXSwgW2FjdGl2ZV0pID0+IGFjdGl2ZQotLSMgICAtbTRfZGVmYXVsdF9xdW90ZWQo
WyBdLCBbYWN0aXZlXSktID0+IC0gLQotLSMgICAtbTRfZGVmYXVsdF9uYmxhbmtfcXVvdGVkKFsg
XSwgW2FjdGl2ZV0pLSA9PiAtYWN0aXZlLQotLSMKLS0jIG00X2RlZmF1bHQgbWFjcm8gaXMgY2Fs
bGVkIG9uIGhvdCBwYXRocywgc28gaW5saW5lIHRoZSBjb250ZW50cyBvZiBtNF9pZnZhbCwKLS0j
IGZvciBvbmUgbGVzcyByb3VuZCBvZiBleHBhbnNpb24uCi0tbTRfZGVmaW5lKFttNF9kZWZhdWx0
X3F1b3RlZF0sCi0tW200X2lmKFskMV0sIFtdLCBbWyQyXV0sIFtbJDFdXSldKQotLQotLW00X2Rl
ZmluZShbbTRfZGVmYXVsdF9uYmxhbmtfcXVvdGVkXSwKLS1bbTRfaWZibGFuayhbJDFdLCBbWyQy
XV0sIFtbJDFdXSldKQotLQotLQotLSMgbTRfZGVmbihOQU1FKQotLSMgLS0tLS0tLS0tLS0tLQot
LSMgTGlrZSB0aGUgb3JpZ2luYWwsIGV4Y2VwdCBndWFyYW50ZWUgYSB3YXJuaW5nIHdoZW4gdXNp
bmcgc29tZXRoaW5nIHdoaWNoIGlzCi0tIyB1bmRlZmluZWQgKHVubGlrZSBNNCAxLjQueCkuICBU
aGlzIHJlcGxhY2VtZW50IGlzIG5vdCBhIGZ1bGwtZmVhdHVyZWQKLS0jIHJlcGxhY2VtZW50OiBp
ZiBhbnkgb2YgdGhlIGRlZmluZWQgbWFjcm9zIGNvbnRhaW4gdW5iYWxhbmNlZCBxdW90aW5nLCBi
dXQKLS0jIHdoZW4gcGFzdGVkIHRvZ2V0aGVyIHJlc3VsdCBpbiBhIHdlbGwtcXVvdGVkIHN0cmlu
ZywgdGhlbiBvbmx5IG5hdGl2ZSBtNAotLSMgc3VwcG9ydCBpcyBhYmxlIHRvIGdldCBpdCBjb3Jy
ZWN0LiAgQnV0IHRoYXQncyB3aGVyZSBxdWFkcmlncmFwaHMgY29tZSBpbgotLSMgaGFuZHksIGlm
IHlvdSByZWFsbHkgbmVlZCB1bmJhbGFuY2VkIHF1b3RlcyBpbnNpZGUgeW91ciBtYWNyb3MuCi0t
IwotLSMgVGhpcyBtYWNybyBpcyBjYWxsZWQgZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIGFt
b3VudCBvZiBhZGRpdGlvbmFsCi0tIyBleHBhbnNpb25zIGJ5IHNraXBwaW5nIG00X2lmbmRlZi4g
IEJldHRlciB5ZXQsIGlmIF9fbTRfdmVyc2lvbl9fIGV4aXN0cywKLS0jIChhZGRlZCBpbiBNNCAx
LjYpLCB0aGVuIGxldCBtNCBkbyB0aGUgam9iIGZvciB1cyAoc2VlIG00X2luaXQpLgotLW00X2Rl
ZmluZShbbTRfZGVmbl0sCi0tW200X2lmKFskI10sIFswXSwgW1skMF1dLAotLSAgICAgICBbJCNd
LCBbMV0sIFttNF9pZmRlZihbJDFdLCBbX200X2RlZm4oWyQxXSldLAotLQkJCSAgICBbbTRfZmF0
YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQxXSldKV0sCi0tICAgICAgIFttNF9tYXBfYXJncyhb
JDBdLCAkQCldKV0pCi0tCi0tCi0tIyBtNF9kdW1wZGVmKE5BTUUuLi4pCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBJbiBtNCAxLjQueCwgZHVtcGRlZiB3cml0ZXMgdG8gdGhlIGN1cnJlbnQg
ZGVidWdmaWxlLCByYXRoZXIgdGhhbgotLSMgc3RkZXJyLiAgVGhpcyBpbiB0dXJuIHJveWFsbHkg
Y29uZnVzZXMgYXV0b200dGU7IHNvIHdlIGZvbGxvdyB0aGUKLS0jIGxlYWQgb2YgbmV3ZXIgbTQg
YW5kIGFsd2F5cyBkdW1wIHRvIHN0ZGVyci4gIFVubGlrZSB0aGUgb3JpZ2luYWwsCi0tIyB0aGlz
IHZlcnNpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQsIHNpbmNlIHRoZXJlIGlzIG5vIGNvbnZlbmll
bnQgd2F5Ci0tIyBpbiBtNCAxLjQueCB0byBncmFiIHRoZSBuYW1lcyBvZiBhbGwgZGVmaW5lZCBt
YWNyb3MuICBOZXdlciBtNAotLSMgYWx3YXlzIGR1bXBzIHRvIHN0ZGVyciwgcmVnYXJkbGVzcyBv
ZiB0aGUgY3VycmVudCBkZWJ1Z2ZpbGU7IGl0IGFsc28KLS0jIHByb3ZpZGVzIG00c3ltYm9scyBh
cyBhIHdheSB0byBncmFiIGFsbCBjdXJyZW50IG1hY3JvIG5hbWVzLiAgQnV0Ci0tIyBkdW1wZGVm
cyBpcyBub3QgZnJlcXVlbnRseSBjYWxsZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJv
dXQKLS0jIGNvbmRpdGlvbmFsbHkgdXNpbmcgdGhlc2UgbmV3ZXIgZmVhdHVyZXMuICBBbHNvLCB0
aGlzIHZlcnNpb24KLS0jIGRvZXNuJ3Qgc29ydCBtdWx0aXBsZSBhcmd1bWVudHMuCi0tIwotLSMg
SWYgd2UgZGV0ZWN0IG00IDEuNiBvciBuZXdlciwgdGhlbiBwcm92aWRlIGFuIGFsdGVybmF0ZSBk
ZWZpbml0aW9uLAotLSMgaW5zdGFsbGVkIGR1cmluZyBtNF9pbml0LCB0aGF0IGFsbG93cyBidWls
dGlucyB0aHJvdWdoLgotLSMgVW5mb3J0dW5hdGVseSwgdGhlcmUgaXMgbm8gbmljZSB3YXkgaW4g
bTQgMS40LnggdG8gZHVtcCBidWlsdGlucy4KLS1tNF9kZWZpbmUoW200X2R1bXBkZWZdLAotLVtt
NF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRdKV0sCi0tICAg
ICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFttNF9lcnJwcmludG4oCi0tICBbJDE6CV1t
NF9kcXVvdGUoX200X2RlZm4oWyQxXSkpKV0sIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNy
bzogJDFdKV0pXSwKLS0gICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pXSkKLS0KLS1tNF9k
ZWZpbmUoW19tNF9kdW1wZGVmXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBt
aXNzaW5nIGFyZ3VtZW50XSldLAotLSAgICAgICBbJCNdLCBbMV0sIFttNF9idWlsdGluKFtkdW1w
ZGVmXSwgWyQxXSldLAotLSAgICAgICBbbTRfbWFwX2FyZ3Nfc2VwKFttNF9idWlsdGluKFtkdW1w
ZGVmXSxdLCBbKV0sIFtdLCAkQCldKV0pCi0tCi0tCi0tIyBtNF9kdW1wZGVmcyhOQU1FLi4uKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNpbWlsYXIgdG8gYG00X2R1bXBkZWYoTkFNRSkn
LCBidXQgaWYgTkFNRSB3YXMgbTRfcHVzaGRlZidlZCwgZGlzcGxheSBpdHMKLS0jIHZhbHVlIHN0
YWNrIChtb3N0IHJlY2VudCBkaXNwbGF5ZWQgZmlyc3QpLiAgQWxzbywgdGhpcyB2ZXJzaW9uIHNp
bGVudGx5Ci0tIyBpZ25vcmVzIHVuZGVmaW5lZCBtYWNyb3MsIHJhdGhlciB0aGFuIGVycm9yaW5n
IG91dC4KLS0jCi0tIyBUaGlzIG1hY3JvIGNoZWF0cywgYmVjYXVzZSBpdCByZWxpZXMgb24gdGhl
IGN1cnJlbnQgZGVmaW5pdGlvbiBvZiBOQU1FCi0tIyB3aGlsZSB0aGUgc2Vjb25kIGFyZ3VtZW50
IG9mIG00X3N0YWNrX2ZvcmVhY2hfbGlmbyBpcyBldmFsdWF0ZWQgKHdoaWNoCi0tIyB3b3VsZCBi
ZSB1bmRlZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBBUEkpLgotLW00X2RlZmluZShbbTRfZHVtcGRl
ZnNdLAotLVttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYXJndW1lbnRd
KV0sCi0tICAgICAgIFskI10sIFsxXSwgW200X3N0YWNrX2ZvcmVhY2hfbGlmbyhbJDFdLCBbbTRf
ZHVtcGRlZihbJDFdKW00X2lnbm9yZV0pXSwKLS0gICAgICAgW200X21hcF9hcmdzKFskMF0sICRA
KV0pXSkKLS0KLS0jIG00X2VzeXNjbWRfcyhDT01NQU5EKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBMaWtlIG00X2VzeXNjbWQsIGV4Y2VwdCBzdHJpcCBhbnkgdHJhaWxpbmcgbmV3bGlu
ZXMsIHRodXMgYmVoYXZpbmcKLS0jIG1vcmUgbGlrZSBzaGVsbCBjb21tYW5kIHN1YnN0aXR1dGlv
bi4KLS1tNF9kZWZpbmUoW200X2VzeXNjbWRfc10sCi0tW200X2Nob21wX2FsbChtNF9lc3lzY21k
KFskMV0pKV0pCi0tCi0tCi0tIyBtNF9wb3BkZWYoTkFNRSkKLS0jIC0tLS0tLS0tLS0tLS0tLQot
LSMgTGlrZSB0aGUgb3JpZ2luYWwsIGV4Y2VwdCBndWFyYW50ZWUgYSB3YXJuaW5nIHdoZW4gdXNp
bmcgc29tZXRoaW5nIHdoaWNoIGlzCi0tIyB1bmRlZmluZWQgKHVubGlrZSBNNCAxLjQueCkuCi0t
IwotLSMgVGhpcyBtYWNybyBpcyBjYWxsZWQgZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIGFt
b3VudCBvZiBhZGRpdGlvbmFsCi0tIyBleHBhbnNpb25zIGJ5IHNraXBwaW5nIG00X2lmbmRlZi4g
IEJldHRlciB5ZXQsIGlmIF9fbTRfdmVyc2lvbl9fIGV4aXN0cywKLS0jIChhZGRlZCBpbiBNNCAx
LjYpLCB0aGVuIGxldCBtNCBkbyB0aGUgam9iIGZvciB1cyAoc2VlIG00X2luaXQpLgotLW00X2Rl
ZmluZShbbTRfcG9wZGVmXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBbWyQwXV0sCi0tICAgICAgIFsk
I10sIFsxXSwgW200X2lmZGVmKFskMV0sIFtfbTRfcG9wZGVmKFskMV0pXSwKLS0JCQkgICAgW200
X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAotLSAgICAgICBbbTRfbWFwX2Fy
Z3MoWyQwXSwgJEApXSldKQotLQotLQotLSMgbTRfc2hpZnRuKE4sIC4uLikKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBSZXR1cm5zIC4uLiBzaGlmdGVkIE4gdGltZXMuICBVc2VmdWwgZm9yIHJl
Y3Vyc2l2ZSAidmFyYXJncyIgY29uc3RydWN0cy4KLS0jCi0tIyBBdXRvY29uZiBkb2VzIG5vdCB1
c2UgdGhpcyBtYWNybywgYmVjYXVzZSBpdCBpcyBpbmhlcmVudGx5IHNsb3dlciB0aGFuCi0tIyBj
YWxsaW5nIHRoZSBjb21tb24gY2FzZXMgb2YgbTRfc2hpZnQyIG9yIG00X3NoaWZ0MyBkaXJlY3Rs
eS4gIEJ1dCBpdAotLSMgbWlnaHQgYXMgd2VsbCBiZSBmYXN0IGZvciBvdGhlciBjbGllbnRzLCBz
dWNoIGFzIExpYnRvb2wuICBPbmUgd2F5IHRvCi0tIyBkbyB0aGlzIGlzIHRvIGV4cGFuZCAkQCBv
bmx5IG9uY2UgaW4gX200X3NoaWZ0biAob3RoZXJ3aXNlLCBmb3IgbG9uZwotLSMgbGlzdHMsIHRo
ZSBleHBhbnNpb24gb2YgbTRfaWYgdGFrZXMgdHdpY2UgYXMgbXVjaCBtZW1vcnkgYXMgd2hhdCB0
aGUKLS0jIGxpc3QgaXRzZWxmIG9jY3VwaWVzLCBvbmx5IHRvIHRocm93IGF3YXkgdGhlIHVudXNl
ZCBicmFuY2gpLiAgVGhlIGVuZAotLSMgcmVzdWx0IGlzIHN0cmljdGx5IGVxdWl2YWxlbnQgdG8K
LS0jICAgbTRfaWYoWyQxXSwgMSwgW200X3NoaWZ0KCxtNF9zaGlmdChtNF9zaGlmdCgkQCkpKV0s
Ci0tIyAgICAgICAgIFtfbTRfc2hpZnRuKG00X2RlY3IoWyQxXSksIG00X3NoaWZ0KG00X3NoaWZ0
KCRAKSkpXSkKLS0jIGJ1dCB3aXRoIHRoZSBmaW5hbCBgbTRfc2hpZnQobTRfc2hpZnQoJEApKSkn
IHNoYXJlZCBiZXR3ZWVuIHRoZSB0d28KLS0jIHBhdGhzLiAgVGhlIGZpcnN0IGxlZyB1c2VzIGEg
bm8tb3AgbTRfc2hpZnQoLCRAKSB0byBiYWxhbmNlIG91dCB0aGUgKCkuCi0tIwotLSMgUGxlYXNl
IGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4K
LS1tNF9kZWZpbmUoW200X3NoaWZ0bl0sCi0tW200X2Fzc2VydCgwIDwgJDEgJiYgJDEgPCAkIylf
JDAoJEApXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9zaGlmdG5dLAotLVttNF9pZihbJDFdLCAxLCBb
bTRfc2hpZnQoXSwKLS0gICAgICAgWyQwKG00X2RlY3IoWyQxXSldKSwgbTRfc2hpZnQobTRfc2hp
ZnQoJEApKSldKQotLQotLSMgbTRfc2hpZnQyKC4uLikKLS0jIG00X3NoaWZ0MyguLi4pCi0tIyAt
LS0tLS0tLS0tLS0tLQotLSMgUmV0dXJucyAuLi4gc2hpZnRlZCB0d2ljZSwgYW5kIHRocmVlIHRp
bWVzLiAgRmFzdGVyIHRoYW4gbTRfc2hpZnRuLgotLW00X2RlZmluZShbbTRfc2hpZnQyXSwgW200
X3NoaWZ0KG00X3NoaWZ0KCRAKSldKQotLW00X2RlZmluZShbbTRfc2hpZnQzXSwgW200X3NoaWZ0
KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSkKLS0KLS0jIF9tNF9zaGlmdDIoLi4uKQotLSMgX200
X3NoaWZ0MyguLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgbTRfc2hpZnQyIG9yIG00
X3NoaWZ0MywgZXhjZXB0IGluY2x1ZGUgYSBsZWFkaW5nIGNvbW1hIHVubGVzcyBzaGlmdGluZwot
LSMgY29uc3VtZXMgYWxsIGFyZ3VtZW50cy4gIFdoeT8gIEJlY2F1c2UgaW4gcmVjdXJzaW9uLCBp
dCBpcyBuaWNlIHRvCi0tIyBkaXN0aW5ndWlzaCBiZXR3ZWVuIDEgZWxlbWVudCBsZWZ0IGFuZCAw
IGVsZW1lbnRzIGxlZnQsIGJhc2VkIG9uIGhvdyBtYW55Ci0tIyBhcmd1bWVudHMgdGhpcyBzaGlm
dCBleHBhbmRzIHRvLgotLW00X2RlZmluZShbX200X3NoaWZ0Ml0sCi0tW200X2lmKFskI10sIFsy
XSwgW10sCi0tICAgICAgIFssIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSldKV0pCi0tbTRfZGVmaW5l
KFtfbTRfc2hpZnQzXSwKLS1bbTRfaWYoWyQjXSwgWzNdLCBbXSwKLS0gICAgICAgWywgbTRfc2hp
ZnQobTRfc2hpZnQobTRfc2hpZnQoJEApKSldKV0pCi0tCi0tCi0tIyBtNF91bmRlZmluZShOQU1F
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgdGhlIG9yaWdpbmFsLCBleGNlcHQgZ3Vh
cmFudGVlIGEgd2FybmluZyB3aGVuIHVzaW5nIHNvbWV0aGluZyB3aGljaCBpcwotLSMgdW5kZWZp
bmVkICh1bmxpa2UgTTQgMS40LngpLgotLSMKLS0jIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyZXF1
ZW50bHksIHNvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgYWRkaXRpb25hbAotLSMgZXhwYW5zaW9u
cyBieSBza2lwcGluZyBtNF9pZm5kZWYuICBCZXR0ZXIgeWV0LCBpZiBfX200X3ZlcnNpb25fXyBl
eGlzdHMsCi0tIyAoYWRkZWQgaW4gTTQgMS42KSwgdGhlbiBsZXQgbTQgZG8gdGhlIGpvYiBmb3Ig
dXMgKHNlZSBtNF9pbml0KS4KLS1tNF9kZWZpbmUoW200X3VuZGVmaW5lXSwKLS1bbTRfaWYoWyQj
XSwgWzBdLCBbWyQwXV0sCi0tICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFtfbTRf
dW5kZWZpbmUoWyQxXSldLAotLQkJCSAgICBbbTRfZmF0YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86
ICQxXSldKV0sCi0tICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKV0pCi0tCi0tIyBfbTRf
d3JhcChQUkUsIFBPU1QpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBIZWxwZXIgbWFjcm8g
Zm9yIG00X3dyYXAgYW5kIG00X3dyYXBfbGlmby4gIEFsbG93cyBuZXN0ZWQgY2FsbHMgdG8KLS0j
IG00X3dyYXAgd2l0aGluIHdyYXBwZWQgdGV4dC4gIFVzZSBfbTRfZGVmbiBhbmQgX200X3BvcGRl
ZiBmb3Igc3BlZWQuCi0tbTRfZGVmaW5lKFtfbTRfd3JhcF0sCi0tW200X2lmZGVmKFskMF90ZXh0
XSwKLS0JICBbbTRfZGVmaW5lKFskMF90ZXh0XSwgWyQxXV9tNF9kZWZuKFskMF90ZXh0XSlbJDJd
KV0sCi0tCSAgW200X2J1aWx0aW4oW200d3JhcF0sIFttNF91bnF1b3RlKAotLSAgX200X2RlZm4o
WyQwX3RleHRdKV9tNF9wb3BkZWYoWyQwX3RleHRdKSldKW00X2RlZmluZShbJDBfdGV4dF0sIFsk
MSQyXSldKV0pCi0tCi0tIyBtNF93cmFwKFRFWFQpCi0tIyAtLS0tLS0tLS0tLS0tCi0tIyBBcHBl
bmQgVEVYVCB0byB0aGUgbGlzdCBvZiBob29rcyB0byBiZSBleGVjdXRlZCBhdCB0aGUgZW5kIG9m
IGlucHV0LgotLSMgV2hlcmVhcyB0aGUgb3JkZXIgb2YgdGhlIG9yaWdpbmFsIG1heSBiZSBMSUZP
IGluIHRoZSB1bmRlcmx5aW5nIG00LAotLSMgdGhpcyB2ZXJzaW9uIGlzIGFsd2F5cyBGSUZPLgot
LW00X2RlZmluZShbbTRfd3JhcF0sCi0tW19tNF93cmFwKFtdLCBbJDFbXV0pXSkKLS0KLS0jIG00
X3dyYXBfbGlmbyhURVhUKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQcmVwZW5kIFRFWFQg
dG8gdGhlIGxpc3Qgb2YgaG9va3MgdG8gYmUgZXhlY3V0ZWQgYXQgdGhlIGVuZCBvZiBpbnB1dC4K
LS0jIFdoZXJlYXMgdGhlIG9yZGVyIG9mIG00X3dyYXAgbWF5IGJlIEZJRk8gaW4gdGhlIHVuZGVy
bHlpbmcgbTQsIHRoaXMKLS0jIHZlcnNpb24gaXMgYWx3YXlzIExJRk8uCi0tbTRfZGVmaW5lKFtt
NF93cmFwX2xpZm9dLAotLVtfbTRfd3JhcChbJDFbXV0pXSkKLS0KLS0jIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICMjCi0tIyMgNy4gUXVvdGluZyBtYW5pcHVsYXRpb24uICAjIwotLSMjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIG00X2FwcGx5KE1BQ1JPLCBMSVNU
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJbnZva2UgTUFDUk8sIHdpdGggYXJndW1l
bnRzIHByb3ZpZGVkIGZyb20gdGhlIHF1b3RlZCBsaXN0IG9mCi0tIyBjb21tYS1zZXBhcmF0ZWQg
cXVvdGVkIGFyZ3VtZW50cy4gIElmIExJU1QgaXMgZW1wdHksIGludm9rZSBNQUNSTwotLSMgd2l0
aG91dCBhcmd1bWVudHMuICBUaGUgZXhwYW5zaW9uIHdpbGwgbm90IGJlIGNvbmNhdGVuYXRlZCB3
aXRoCi0tIyBzdWJzZXF1ZW50IHRleHQuCi0tbTRfZGVmaW5lKFttNF9hcHBseV0sCi0tW200X2lm
KFskMl0sIFtdLCBbJDFdLCBbJDEoJDIpXSlbXV0pCi0tCi0tIyBfbTRfYXBwbHkoTUFDUk8sIExJ
U1QpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtlIG00X2FwcGx5LCBleGNlcHQg
ZG8gbm90aGluZyBpZiBMSVNUIGlzIGVtcHR5LgotLW00X2RlZmluZShbX200X2FwcGx5XSwKLS1b
bTRfaWYoWyQyXSwgW10sIFtdLCBbJDEoJDIpW11dKV0pCi0tCi0tCi0tIyBtNF9jb3VudChBUkdT
KQotLSMgLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiBhIGNvdW50IG9mIGhvdyBtYW55IEFSR1Mg
YXJlIHByZXNlbnQuCi0tbTRfZGVmaW5lKFttNF9jb3VudF0sIFskI10pCi0tCi0tCi0tIyBtNF9j
dXJyeShNQUNSTywgQVJHLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFBlcmZv
cm0gYXJndW1lbnQgY3VycnlpbmcuICBUaGUgZXhwYW5zaW9uIG9mIHRoaXMgbWFjcm8gaXMgYW5v
dGhlcgotLSMgbWFjcm8gdGhhdCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgYXBwZW5kcyBp
dCB0byB0aGUgZW5kIG9mIHRoZQotLSMgb3JpZ2luYWwgQVJHIGxpc3QsIHRoZW4gaW52b2tlcyBN
QUNSTy4gIEZvciBleGFtcGxlOgotLSMgICBtNF9jdXJyeShbbTRfY3VycnldLCBbbTRfcmV2ZXJz
ZV0sIFsxXSkoWzJdKShbM10pID0+IDMsIDIsIDEKLS0jIE5vdCBxdWl0ZSBhcyBwcmFjdGljYWwg
YXMgbTRfaW5jciwgYnV0IHlvdSBjb3VsZCBhbHNvIGRvOgotLSMgICBtNF9kZWZpbmUoW2FkZF0s
IFttNF9ldmFsKChbJDFdKSArIChbJDJdKSldKQotLSMgICBtNF9kZWZpbmUoW2FkZF9vbmVdLCBb
bTRfY3VycnkoW2FkZF0sIFsxXSldKQotLSMgICBhZGRfb25lKCkoWzJdKSA9PiAzCi0tbTRfZGVm
aW5lKFttNF9jdXJyeV0sIFskMShtNF9zaGlmdCgkQCwpXyQwXSkKLS1tNF9kZWZpbmUoW19tNF9j
dXJyeV0sICAgICAgICAgICAgICAgW1skMV0pXSkKLS0KLS0KLS0jIG00X2RvKFNUUklORywgLi4u
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBUaGlzIG1hY3JvIGludm9rZXMgYWxsIGl0cyBh
cmd1bWVudHMgKGluIHNlcXVlbmNlLCBvZiBjb3Vyc2UpLiAgSXQgaXMKLS0jIHVzZWZ1bCBmb3Ig
bWFraW5nIHlvdXIgbWFjcm9zIG1vcmUgc3RydWN0dXJlZCBhbmQgcmVhZGFibGUgYnkgZHJvcHBp
bmcKLS0jIHVubmVjZXNzYXJ5IGRubCdzIGFuZCBoYXZlIHRoZSBtYWNyb3MgaW5kZW50ZWQgcHJv
cGVybHkuICBObyBjb25jYXRlbmF0aW9uCi0tIyBvY2N1cnMgYWZ0ZXIgYSBTVFJJTkc7IHVzZSBt
NF91bnF1b3RlKG00X2pvaW4oLFNUUklORykpIGZvciB0aGF0LgotLSMKLS0jIFBsZWFzZSBrZWVw
IGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRf
ZGVmaW5lKFttNF9kb10sCi0tW200X2lmKFskI10sIDAsIFtdLAotLSAgICAgICBbJCNdLCAxLCBb
JDFbXV0sCi0tICAgICAgIFskMVtdJDAobTRfc2hpZnQoJEApKV0pXSkKLS0KLS0KLS0jIG00X2Rx
dW90ZShBUkdTKQotLSMgLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gQVJHUyBhcyBhIHF1b3Rl
ZCBsaXN0IG9mIHF1b3RlZCBhcmd1bWVudHMuCi0tbTRfZGVmaW5lKFttNF9kcXVvdGVdLCAgW1sk
QF1dKQotLQotLQotLSMgbTRfZHF1b3RlX2VsdChBUkdTKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgUmV0dXJuIEFSR1MgYXMgYW4gdW5xdW90ZWQgbGlzdCBvZiBkb3VibGUtcXVvdGVkIGFy
Z3VtZW50cy4KLS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkg
YWRqdXN0bWVudHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShbbTRfZHF1b3RlX2VsdF0sCi0tW200
X2lmKFskI10sIFswXSwgW10sCi0tICAgICAgIFskI10sIFsxXSwgW1tbJDFdXV0sCi0tICAgICAg
IFtbWyQxXV0sJDAobTRfc2hpZnQoJEApKV0pXSkKLS0KLS0KLS0jIG00X2VjaG8oQVJHUykKLS0j
IC0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiB0aGUgQVJHUywgd2l0aCB0aGUgc2FtZSBsZXZlbCBv
ZiBxdW90aW5nLiAgV2hpdGVzcGFjZSBhZnRlcgotLSMgdW5xdW90ZWQgY29tbWFzIGFyZSBjb25z
dW1lZC4KLS1tNF9kZWZpbmUoW200X2VjaG9dLCBbJEBdKQotLQotLQotLSMgbTRfZXhwYW5kKEFS
RykKLS0jIF9tNF9leHBhbmQoQVJHKQotLSMgLS0tLS0tLS0tLS0tLS0tCi0tIyBSZXR1cm4gdGhl
IGV4cGFuc2lvbiBvZiBBUkcgYXMgYSBzaW5nbGUgc3RyaW5nLiAgVW5saWtlCi0tIyBtNF9xdW90
ZSgkMSksIHRoaXMgcHJlc2VydmVzIHdoaXRlc3BhY2UgZm9sbG93aW5nIHNpbmdsZS1xdW90ZWQK
LS0jIGNvbW1hcyB0aGF0IGFwcGVhciB3aXRoaW4gQVJHLiAgSXQgYWxzbyBkZWFscyB3aXRoIHNo
ZWxsIGNhc2UKLS0jIHN0YXRlbWVudHMuCi0tIwotLSMgICBtNF9kZWZpbmUoW2FjdGl2ZV0sIFtB
Q1QsIElWRV0pCi0tIyAgIG00X2RlZmluZShbYWN0aXZlMl0sIFtbQUNULCBJVkVdXSkKLS0jICAg
bTRfcXVvdGUoYWN0aXZlLCBhY3RpdmUyKQotLSMgICA9PiBBQ1QsSVZFLEFDVCwgSVZFCi0tIyAg
IG00X2V4cGFuZChbYWN0aXZlLCBhY3RpdmUyXSkKLS0jICAgPT4gQUNULCBJVkUsIEFDVCwgSVZF
Ci0tIwotLSMgVW5mb3J0dW5hdGVseSwgZHVlIHRvIGxpbWl0YXRpb25zIGluIG00LCBBUkcgbXVz
dCBleHBhbmQgdG8KLS0jIHNvbWV0aGluZyB3aXRoIGJhbGFuY2VkIHF1b3RlcyAodXNlIHF1YWRy
aWdyYXBocyB0byBnZXQgYXJvdW5kCi0tIyB0aGlzKSwgYW5kIHNob3VsZCBub3QgY29udGFpbiB0
aGUgdW5saWtlbHkgZGVsaW1pdGVycyAtPTx7KCBvcgotLSMgKX0+PS0uICBJdCBpcyBwb3NzaWJs
ZSB0byBoYXZlIHVuYmFsYW5jZWQgcXVvdGVkIGAoJyBvciBgKScsIGFzIHdlbGwKLS0jIGFzIHVu
YmFsYW5jZWQgdW5xdW90ZWQgYCknLiAgbTRfZXhwYW5kIGNhbiBoYW5kbGUgdW50ZXJtaW5hdGVk
Ci0tIyBjb21tZW50cyBvciBkbmwgb24gdGhlIGZpbmFsIGxpbmUsIGF0IHRoZSBleHBlbnNlIG9m
IHNwZWVkOyBpdCBhbHNvCi0tIyBhaWRzIGluIGRldGVjdGluZyBhdHRlbXB0cyB0byBpbmNvcnJl
Y3RseSBjaGFuZ2UgdGhlIGN1cnJlbnQKLS0jIGRpdmVyc2lvbiBpbnNpZGUgQVJHLiAgTWVhbndo
aWxlLCBfbTRfZXhwYW5kIGlzIGZhc3RlciBidXQgbXVzdCBiZQotLSMgZ2l2ZW4gYSB0ZXJtaW5h
dGVkIGV4cGFuc2lvbiwgYW5kIGhhcyBubyBzYWZldHkgY2hlY2tzIGZvcgotLSMgbWlzLWRpdmVy
dGVkIHRleHQuCi0tIwotLSMgRXhwbG9pdCB0aGF0IGV4dHJhIHVucXVvdGVkICgpIHdpbGwgZ3Jv
dXAgdW5xdW90ZWQgY29tbWFzIGFuZCB0aGUKLS0jIGZvbGxvd2luZyB3aGl0ZXNwYWNlLiAgbTRf
YnBhdHN1YnN0IGNhbid0IGhhbmRsZSBuZXdsaW5lcyBpbnNpZGUgJDEsCi0tIyBhbmQgbTRfc3Vi
c3RyIHN0cmlwcyBxdW90aW5nLiAgU28gd2UgKGFiKXVzZSBtNF9jaGFuZ2VxdW90ZSwgdXNpbmcK
LS0jIHRlbXBvcmFyeSBxdW90ZXMgdG8gcmVtb3ZlIHRoZSBkZWxpbWl0ZXJzIHRoYXQgY29udmVu
aWVudGx5IGluY2x1ZGVkCi0tIyB0aGUgdW5xdW90ZWQgKCkgdGhhdCB3ZXJlIGFkZGVkIHByaW9y
IHRvIHRoZSBjaGFuZ2VxdW90ZS4KLS0jCi0tIyBUaGFua3MgdG8gc2hlbGwgY2FzZSBzdGF0ZW1l
bnRzLCB0b28gbWFueSBwZW9wbGUgYXJlIHByb25lIHRvIHBhc3MKLS0jIHVuZGVycXVvdGVkIGAp
Jywgc28gd2UgdHJ5IHRvIGRldGVjdCB0aGF0IGJ5IHBhc3NpbmcgYSBtYXJrZXIgYXMgYQotLSMg
Zm91cnRoIGFyZ3VtZW50OyBpZiB0aGUgbWFya2VyIGlzIG5vdCBwcmVzZW50LCB0aGVuIHdlIGFz
c3VtZSB0aGF0Ci0tIyB3ZSBlbmNvdW50ZXJlZCBhbiBlYXJseSBgKScsIGFuZCByZS1leHBhbmQg
dGhlIGZpcnN0IGFyZ3VtZW50LCBidXQKLS0jIHRoaXMgdGltZSB3aXRoIG9uZSBtb3JlIGAoJyBp
biB0aGUgc2Vjb25kIGFyZ3VtZW50IGFuZCBpbiB0aGUKLS0jIG9wZW4tcXVvdGUgZGVsaW1pdGVy
LiAgV2UgbXVzdCBhbHNvIGlnbm9yZSB0aGUgc2xvcCBmcm9tIHRoZQotLSMgcHJldmlvdXMgdHJ5
LiAgVGhlIGZpbmFsIG1hY3JvIGlzIHRodXMgaGFsZiBsaW5lLW5vaXNlLCBoYWxmIGFydC4KLS1t
NF9kZWZpbmUoW200X2V4cGFuZF0sCi0tW200X3B1c2hkZWYoW200X2RpdmVydF0sIF9tNF9kZWZu
KFtfbTRfZGl2ZXJ0X3Vuc2FmZV0pKV1kbmwKLS1bbTRfcHVzaGRlZihbbTRfZGl2ZXJ0X3B1c2hd
LCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSldZG5sCi0tW200X2Nob21wKF8kMChbJDEK
LS1dKSlfbTRfcG9wZGVmKFttNF9kaXZlcnRdLCBbbTRfZGl2ZXJ0X3B1c2hdKV0pCi0tCi0tbTRf
ZGVmaW5lKFtfbTRfZXhwYW5kXSwgWyQwXyhbJDFdLCBbKF0sIC09PHsoJDEpfT49LSwgW30+PS1d
KV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfZXhwYW5kX10sCi0tW200X2lmKFskNF0sIFt9Pj0tXSwK
LS0gICAgICAgW200X2NoYW5nZXF1b3RlKFstPTx7JDJdLCBbKX0+PS1dKSQzbTRfY2hhbmdlcXVv
dGUoWywgXSldLAotLSAgICAgICBbJDAoWyQxXSwgWygkMl0sIC09PHsoJDIkMSl9Pj0tLCBbfT49
LV0pbTRfaWdub3JlJDJdKV0pCi0tCi0tCi0tIyBtNF9pZ25vcmUoQVJHUykKLS0jIC0tLS0tLS0t
LS0tLS0tLQotLSMgRXhwYW5kcyB0byBub3RoaW5nLiAgVXNlZnVsIGZvciBjb25kaXRpb25hbGx5
IGlnbm9yaW5nIGFuIGFyYml0cmFyeQotLSMgbnVtYmVyIG9mIGFyZ3VtZW50cyAoc2VlIF9tNF9s
aXN0X2NtcCBmb3IgYW4gZXhhbXBsZSkuCi0tbTRfZGVmaW5lKFttNF9pZ25vcmVdKQotLQotLQot
LSMgbTRfbWFrZV9saXN0KEFSR1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNpbWlsYXIg
dG8gbTRfZHF1b3RlLCB0aGlzIGNyZWF0ZXMgYSBxdW90ZWQgbGlzdCBvZiBxdW90ZWQgQVJHUy4g
IFRoaXMKLS0jIHZlcnNpb24gaXMgbGVzcyBlZmZpY2llbnQgdGhhbiBtNF9kcXVvdGUsIGJ1dCBz
ZXBhcmF0ZXMgZWFjaCBhcmd1bWVudAotLSMgd2l0aCBhIGNvbW1hIGFuZCBuZXdsaW5lLCByYXRo
ZXIgdGhhbiBqdXN0IGNvbW1hLCBmb3IgcmVhZGFiaWxpdHkuCi0tIyBXaGVuIGRldmVsb3Bpbmcg
YW4gbTRzdWdhciBhbGdvcml0aG0sIHlvdSBjb3VsZCB0ZW1wb3JhcmlseSB1c2UKLS0jICAgbTRf
cHVzaGRlZihbbTRfZHF1b3RlXSxtNF9kZWZuKFttNF9tYWtlX2xpc3RdKSkKLS0jIGFyb3VuZCB5
b3VyIGNvZGUgdG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLgotLW00X2RlZmluZShbbTRfbWFrZV9s
aXN0XSwgW200X2pvaW4oWywKLS1dLCBtNF9kcXVvdGVfZWx0KCRAKSldKQotLQotLQotLSMgbTRf
bm9xdW90ZShTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiB0aGUgcmVz
dWx0IG9mIGlnbm9yaW5nIGFsbCBxdW90ZXMgaW4gU1RSSU5HIGFuZCBpbnZva2luZyB0aGUKLS0j
IG1hY3JvcyBpdCBjb250YWlucy4gIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBpcyB1c2VmdWwg
Zm9yIGVuYWJsaW5nCi0tIyBtYWNybyBpbnZvY2F0aW9ucyBpbnNpZGUgc3RyaW5ncyB3aXRoIFtd
IGJsb2NrcyAoZm9yIGluc3RhbmNlIHJlZ2V4cHMKLS0jIGFuZCBoZWxwLXN0cmluZ3MpLiAgT24g
dGhlIG90aGVyIGhhbmQsIHNpbmNlIGFsbCBxdW90ZXMgYXJlIGRpc2FibGVkLAotLSMgYW55IG1h
Y3JvIGV4cGFuZGVkIGR1cmluZyB0aGlzIHRpbWUgdGhhdCByZWxpZXMgb24gbmVzdGVkIFtdIHF1
b3RpbmcKLS0jIHdpbGwgbGlrZWx5IGNyYXNoIGFuZCBidXJuLiAgVGhpcyBtYWNybyBpcyBzZWxk
b20gdXNlZnVsOyBjb25zaWRlcgotLSMgbTRfdW5xdW90ZSBvciBtNF9leHBhbmQgaW5zdGVhZC4K
LS1tNF9kZWZpbmUoW200X25vcXVvdGVdLAotLVttNF9jaGFuZ2VxdW90ZShbLT08eyhdLFspfT49
LV0pJDEtPTx7KCl9Pj0tbTRfY2hhbmdlcXVvdGUoWyxdKV0pCi0tCi0tCi0tIyBtNF9xdW90ZShB
UkdTKQotLSMgLS0tLS0tLS0tLS0tLS0KLS0jIFJldHVybiBBUkdTIGFzIGEgc2luZ2xlIGFyZ3Vt
ZW50LiAgQW55IHdoaXRlc3BhY2UgYWZ0ZXIgdW5xdW90ZWQgY29tbWFzCi0tIyBpcyBzdHJpcHBl
ZC4gIFRoZXJlIGlzIGFsd2F5cyBvdXRwdXQsIGV2ZW4gd2hlbiB0aGVyZSB3ZXJlIG5vIGFyZ3Vt
ZW50cy4KLS0jCi0tIyBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhbGl6ZSB0aGUgZGlmZmVyZW5jZSBi
ZXR3ZWVuIGBtNF9xdW90ZShleHApJyBhbmQKLS0jIGBbZXhwXSc6IGluIHRoZSBmaXJzdCBjYXNl
IHlvdSBvYnRhaW4gdGhlIHF1b3RlZCAqcmVzdWx0KiBvZiB0aGUKLS0jIGV4cGFuc2lvbiBvZiBF
WFAsIHdoaWxlIGluIHRoZSBsYXR0ZXIgeW91IGp1c3Qgb2J0YWluIHRoZSBzdHJpbmcKLS0jIGBl
eHAnLgotLW00X2RlZmluZShbbTRfcXVvdGVdLCAgW1skKl1dKQotLQotLQotLSMgX200X3F1b3Rl
KEFSR1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgbTRfcXVvdGUsIGV4Y2VwdCB0aGF0
IHdoZW4gdGhlcmUgYXJlIG5vIGFyZ3VtZW50cywgdGhlcmUgaXMgbm8KLS0jIG91dHB1dC4gIEZv
ciBjb25kaXRpb25hbCBzY2VuYXJpb3MgKHN1Y2ggYXMgcGFzc2luZyBfbTRfcXVvdGUgYXMgdGhl
Ci0tIyBtYWNybyBuYW1lIGluIG00X21hcGFsbCksIHRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCB0
byBkaXN0aW5ndWlzaCBiZXR3ZWVuCi0tIyBvbmUgYXJndW1lbnQgb2YgdGhlIGVtcHR5IHN0cmlu
ZyB2cy4gbm8gYXJndW1lbnRzLiAgSG93ZXZlciwgaW4gdGhlCi0tIyBub3JtYWwgY2FzZSB3aXRo
IGFyZ3VtZW50cyBwcmVzZW50LCB0aGlzIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gbTRfcXVvdGUu
Ci0tbTRfZGVmaW5lKFtfbTRfcXVvdGVdLAotLVttNF9pZihbJCNdLCBbMF0sIFtdLCBbWyQqXV0p
XSkKLS0KLS0KLS0jIG00X3JldmVyc2UoQVJHUykKLS0jIC0tLS0tLS0tLS0tLS0tLS0KLS0jIE91
dHB1dCBBUkdTIGluIHJldmVyc2Ugb3JkZXIuCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5t
NCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUoW200
X3JldmVyc2VdLAotLVttNF9pZihbJCNdLCBbMF0sIFtdLCBbJCNdLCBbMV0sIFtbJDFdXSwKLS0g
ICAgICAgWyQwKG00X3NoaWZ0KCRAKSksIFskMV1dKV0pCi0tCi0tCi0tIyBtNF91bnF1b3RlKEFS
R1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0tCi0tIyBSZW1vdmUgb25lIGxheWVyIG9mIHF1b3RlcyBm
cm9tIGVhY2ggQVJHLCBwZXJmb3JtaW5nIG9uZSBsZXZlbCBvZgotLSMgZXhwYW5zaW9uLiAgRm9y
IG9uZSBhcmd1bWVudCwgbTRfdW5xdW90ZShbYXJnXSkgaXMgbW9yZSBlZmZpY2llbnQgdGhhbgot
LSMgbTRfZG8oW2FyZ10pLCBidXQgZm9yIG11bHRpcGxlIGFyZ3VtZW50cywgdGhlIGRpZmZlcmVu
Y2UgaXMgdGhhdAotLSMgbTRfdW5xdW90ZSBzZXBhcmF0ZXMgYXJndW1lbnRzIHdpdGggY29tbWFz
IHdoaWxlIG00X2RvIGNvbmNhdGVuYXRlcy4KLS0jIEZvbGxvdyB0aGlzIG1hY3JvIHdpdGggW10g
aWYgY29uY2F0ZW5hdGlvbiB3aXRoIHN1YnNlcXVlbnQgdGV4dCBpcwotLSMgdW5kZXNpcmVkLgot
LW00X2RlZmluZShbbTRfdW5xdW90ZV0sIFskKl0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gIyMKLS0jIyA4LiBJbXBsZW1lbnRpbmcgbTQgbG9vcHMuICAjIwotLSMjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0tIyBtNF9mb3IoVkFSSUFCTEUsIEZJ
UlNULCBMQVNULCBbU1RFUCA9ICsvLTFdLCBFWFBSRVNTSU9OKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCBFWFBS
RVNTSU9OIGRlZmluaW5nIFZBUklBQkxFIHRvIEZST00sIEZST00gKyAxLCAuLi4sIFRPIHdpdGgK
LS0jIGluY3JlbWVudHMgb2YgU1RFUC4gIEJvdGggbGltaXRzIGFyZSBpbmNsdWRlZCwgYW5kIGJv
dW5kcyBhcmUKLS0jIGNoZWNrZWQgZm9yIGNvbnNpc3RlbmN5LiAgVGhlIGFsZ29yaXRobSBpcyBy
b2J1c3QgdG8gaW5kaXJlY3QKLS0jIFZBUklBQkxFIG5hbWVzLiAgQ2hhbmdpbmcgVkFSSUFCTEUg
aW5zaWRlIEVYUFJFU1NJT04gd2lsbCBub3QgaW1wYWN0Ci0tIyB0aGUgbnVtYmVyIG9mIGl0ZXJh
dGlvbnMuCi0tIwotLSMgVXNlcyBfbTRfZGVmbiBmb3Igc3BlZWQsIGFuZCBhdm9pZCBkbmwgaW4g
dGhlIG1hY3JvIGJvZHkuICBGYWN0b3IKLS0jIHRoZSBfbTRfZm9yIGNhbGwgc28gdGhhdCBFWFBS
RVNTSU9OIGlzIG9ubHkgcGFyc2VkIG9uY2UuCi0tbTRfZGVmaW5lKFttNF9mb3JdLAotLVttNF9w
dXNoZGVmKFskMV0sIG00X2V2YWwoWyQyXSkpXWRubAotLVttNF9jb25kKFttNF9ldmFsKChbJDNd
KSA+IChbJDJdKSldLCAxLAotLQkgICBbbTRfcHVzaGRlZihbX200X3N0ZXBdLCBtNF9ldmFsKG00
X2RlZmF1bHRfcXVvdGVkKFskNF0sCi0tCSAgICAgIDEpKSltNF9hc3NlcnQoX200X3N0ZXAgPiAw
KV8kMChfbTRfZGVmbihbJDFdKSwKLS0gIG00X2V2YWwoKChbJDNdKSAtIChbJDJdKSkgLyBfbTRf
c3RlcCAqIF9tNF9zdGVwICsgKFskMl0pKSwgX200X3N0ZXAsXSwKLS0JIFttNF9ldmFsKChbJDNd
KSA8IChbJDJdKSldLCAxLAotLQkgICBbbTRfcHVzaGRlZihbX200X3N0ZXBdLCBtNF9ldmFsKG00
X2RlZmF1bHRfcXVvdGVkKFskNF0sCi0tCSAgICAgIC0xKSkpbTRfYXNzZXJ0KF9tNF9zdGVwIDwg
MClfJDAoX200X2RlZm4oWyQxXSksCi0tICBtNF9ldmFsKCgoWyQyXSkgLSAoWyQzXSkpIC8gLShf
bTRfc3RlcCkgKiBfbTRfc3RlcCArIChbJDJdKSksIF9tNF9zdGVwLF0sCi0tCSBbbTRfcHVzaGRl
ZihbX200X3N0ZXBdKV8kMChfbTRfZGVmbihbJDFdKSwgX200X2RlZm4oWyQxXSksIDAsXSldZG5s
Ci0tW1ttNF9kZWZpbmUoWyQxXSxdLCBbKSQ1XSltNF9wb3BkZWYoW19tNF9zdGVwXSwgWyQxXSld
KQotLQotLSMgX200X2ZvcihDT1VOVCwgTEFTVCwgU1RFUCwgUFJFLCBQT1NUKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQ29yZSBvZiB0aGUgbG9vcCwgbm8g
Y29uc2lzdGVuY3kgY2hlY2tzLCBhbGwgYXJndW1lbnRzIGFyZSBwbGFpbgotLSMgbnVtYmVycy4g
IEV4cGFuZCBQUkVbQ09VTlRdUE9TVCwgdGhlbiBhbHRlciBDT1VOVCBieSBTVEVQIGFuZAotLSMg
aXRlcmF0ZSBpZiBDT1VOVCBpcyBub3QgTEFTVC4KLS1tNF9kZWZpbmUoW19tNF9mb3JdLAotLVsk
NFskMV0kNVtdbTRfaWYoWyQxXSwgWyQyXSwgW10sCi0tCQkgWyQwKG00X2V2YWwoWyQxICsgJDNd
KSwgWyQyXSwgWyQzXSwgWyQ0XSwgWyQ1XSldKV0pCi0tCi0tCi0tIyBJbXBsZW1lbnRpbmcgYGZv
cmVhY2gnIGxvb3BzIGluIG00IGlzIG11Y2ggbW9yZSB0cmlja3kgdGhhbiBpdCBtYXkKLS0jIHNl
ZW0uICBGb3IgZXhhbXBsZSwgdGhlIG9sZCBNNCAxLjQuNCBtYW51YWwgaGFkIGFuIGluY29ycmVj
dCBleGFtcGxlLAotLSMgd2hpY2ggbG9va2VkIGxpa2UgdGhpcyAod2hlbiB0cmFuc2xhdGVkIHRv
IG00c3VnYXIpOgotLSMKLS0jIHwgIyBmb3JlYWNoKFZBUiwgKExJU1QpLCBTVE1UKQotLSMgfCBt
NF9kZWZpbmUoW2ZvcmVhY2hdLAotLSMgfCAgIFttNF9wdXNoZGVmKFskMV0pX2ZvcmVhY2goWyQx
XSwgWyQyXSwgWyQzXSltNF9wb3BkZWYoWyQxXSldKQotLSMgfCBtNF9kZWZpbmUoW19hcmcxXSwg
WyQxXSkKLS0jIHwgbTRfZGVmaW5lKFtfZm9yZWFjaF0sCi0tIyB8ICAgW200X2lmKFskMl0sIFso
KV0sICwKLS0jIHwgICAgIFttNF9kZWZpbmUoWyQxXSwgX2FyZzEkMikkM1tdX2ZvcmVhY2goWyQx
XSwgKG00X3NoaWZ0JDIpLCBbJDNdKV0pXSkKLS0jCi0tIyBCdXQgdGhlbiBpZiB5b3UgcnVuCi0t
IwotLSMgfCBtNF9kZWZpbmUoYSwgMSkKLS0jIHwgbTRfZGVmaW5lKGIsIDIpCi0tIyB8IG00X2Rl
ZmluZShjLCAzKQotLSMgfCBmb3JlYWNoKFtmXSwgWyhbYV0sIFsoYl0sIFtjKV0pXSwgW2VjaG8g
ZgotLSMgfCBdKQotLSMKLS0jIGl0IGdpdmVzCi0tIwotLSMgID0+IGVjaG8gMQotLSMgID0+IGVj
aG8gKDIsMykKLS0jCi0tIyB3aGljaCBpcyBub3Qgd2hhdCBpcyBleHBlY3RlZC4KLS0jCi0tIyBP
ZiBjb3Vyc2UgdGhlIHByb2JsZW0gaXMgdGhhdCBtYW55IHF1b3RlcyBhcmUgbWlzc2luZy4gIFNv
IHlvdSBhZGQKLS0jIHBsZW50eSBvZiBxdW90ZXMgYXQgcmFuZG9tIHBsYWNlcywgdW50aWwgeW91
IHJlYWNoIHRoZSBleHBlY3RlZAotLSMgcmVzdWx0LiAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IGFy
ZSBhIHF1b3Rpbmcgd2l6YXJkLCB5b3UgZGlyZWN0bHkKLS0jIHJlYWNoIHRoZSBmb2xsb3dpbmcg
aW1wbGVtZW50YXRpb24gKGJ1dCBpZiB5b3UgcmVhbGx5IGRpZCwgdGhlbgotLSMgYXBwbHkgdG8g
dGhlIG1haW50ZW5hbmNlIG9mIG00c3VnYXIhKS4KLS0jCi0tIyB8ICMgZm9yZWFjaChWQVIsIChM
SVNUKSwgU1RNVCkKLS0jIHwgbTRfZGVmaW5lKFtmb3JlYWNoXSwgW200X3B1c2hkZWYoWyQxXSlf
Zm9yZWFjaCgkQCltNF9wb3BkZWYoWyQxXSldKQotLSMgfCBtNF9kZWZpbmUoW19hcmcxXSwgW1sk
MV1dKQotLSMgfCBtNF9kZWZpbmUoW19mb3JlYWNoXSwKLS0jIHwgIFttNF9pZigkMiwgWygpXSwg
LAotLSMgfCAgICBbbTRfZGVmaW5lKFskMV0sIFtfYXJnMSQyXSkkM1tdX2ZvcmVhY2goWyQxXSwg
WyhtNF9zaGlmdCQyKV0sIFskM10pXSldKQotLSMKLS0jIHdoaWNoIHRoaXMgdGltZSBhbnN3ZXJz
Ci0tIwotLSMgID0+IGVjaG8gYQotLSMgID0+IGVjaG8gKGIKLS0jICA9PiBlY2hvIGMpCi0tIwot
LSMgQmluZ28hCi0tIwotLSMgV2VsbCwgbm90IHF1aXRlLgotLSMKLS0jIFdpdGggYSBiZXR0ZXIg
bG9vaywgeW91IHJlYWxpemUgdGhhdCB0aGUgcGFyZW5zIGFyZSBtb3JlIGEgcGFpbiB0aGFuCi0t
IyBhIGhlbHA6IHNpbmNlIGFueXdheSB5b3UgbmVlZCB0byBxdW90ZSBwcm9wZXJseSB0aGUgbGlz
dCwgeW91IGVuZCB1cAotLSMgd2l0aCBhbHdheXMgdXNpbmcgYW4gb3V0ZXJtb3N0IHBhaXIgb2Yg
cGFyZW5zIGFuZCBhbiBvdXRlcm1vc3QgcGFpcgotLSMgb2YgcXVvdGVzLiAgUmVqZWN0aW5nIHRo
ZSBwYXJlbnMgYm90aCBlYXNlcyB0aGUgaW1wbGVtZW50YXRpb24sIGFuZAotLSMgc2ltcGxpZmll
cyB0aGUgdXNlOgotLSMKLS0jIHwgIyBmb3JlYWNoKFZBUiwgKExJU1QpLCBTVE1UKQotLSMgfCBt
NF9kZWZpbmUoW2ZvcmVhY2hdLCBbbTRfcHVzaGRlZihbJDFdKV9mb3JlYWNoKCRAKW00X3BvcGRl
ZihbJDFdKV0pCi0tIyB8IG00X2RlZmluZShbX2FyZzFdLCBbJDFdKQotLSMgfCBtNF9kZWZpbmUo
W19mb3JlYWNoXSwKLS0jIHwgIFttNF9pZigkMiwgW10sICwKLS0jIHwgICAgW200X2RlZmluZShb
JDFdLCBbX2FyZzEoJDIpXSkkM1tdX2ZvcmVhY2goWyQxXSwgW200X3NoaWZ0KCQyKV0sIFskM10p
XSldKQotLSMKLS0jCi0tIyBOb3csIGp1c3QgcmVwbGFjZSB0aGUgYCQyJyB3aXRoIGBtNF9xdW90
ZSgkMiknIGluIHRoZSBvdXRlciBgbTRfaWYnCi0tIyB0byBpbXByb3ZlIHJvYnVzdG5lc3MsIGFu
ZCB5b3UgY29tZSB1cCB3aXRoIGEgbmljZSBpbXBsZW1lbnRhdGlvbgotLSMgdGhhdCBkb2Vzbid0
IHJlcXVpcmUgZXh0cmEgcGFyZW50aGVzZXMgaW4gdGhlIHVzZXIncyBMSVNULgotLSMKLS0jIEJ1
dCB3YWl0IC0gIG5vdyB0aGUgYWxnb3JpdGhtIGlzIHF1YWRyYXRpYywgYmVjYXVzZSBldmVyeSBy
ZWN1cnNpb24gb2YKLS0jIHRoZSBhbGdvcml0aG0ga2VlcHMgdGhlIGVudGlyZSBMSVNUIGFuZCBt
ZXJlbHkgYWRkcyBhbm90aGVyIG00X3NoaWZ0IHRvCi0tIyB0aGUgcXVvdGVkIHRleHQuICBJZiB0
aGUgdXNlciBoYXMgYSBsb3Qgb2YgZWxlbWVudHMgaW4gTElTVCwgeW91IGNhbgotLSMgYnJpbmcg
dGhlIHN5c3RlbSB0byBpdHMga25lZXMgd2l0aCB0aGUgbWVtb3J5IG00IHRoZW4gcmVxdWlyZXMs
IG9yIHRyaXAKLS0jIHRoZSBtNCAtLW5lc3RpbmctbGltaXQgcmVjdXJzaW9uIGZhY3Rvci4gIFRo
ZSBvbmx5IHdheSB0byBhdm9pZAotLSMgcXVhZHJhdGljIGdyb3d0aCBpcyBlbnN1cmUgbTRfc2hp
ZnQgaXMgZXhwYW5kZWQgcHJpb3IgdG8gdGhlIHJlY3Vyc2lvbi4KLS0jIEhlbmNlIHRoZSBkZXNp
Z24gYmVsb3cuCi0tIwotLSMgVGhlIE00IG1hbnVhbCBub3cgaW5jbHVkZXMgYSBjaGFwdGVyIGRl
dm90ZWQgdG8gdGhpcyBpc3N1ZSwgd2l0aAotLSMgdGhlIGxlc3NvbnMgbGVhcm5lZCBmcm9tIG00
c3VnYXIuICBBbmQgc3RpbGwsIHRoaXMgZGVzaWduIGlzIG9ubHkKLS0jIG9wdGltYWwgZm9yIE00
IDEuNjsgc2VlIGZvcmVhY2gubTQgZm9yIHlldCBtb3JlIGNvbW1lbnRzIG9uIHdoeQotLSMgTTQg
MS40LnggdXNlcyB5ZXQgYW5vdGhlciBpbXBsZW1lbnRhdGlvbi4KLS0KLS0KLS0jIG00X2ZvcmVh
Y2goVkFSSUFCTEUsIExJU1QsIEVYUFJFU1NJT04pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMKLS0jIEV4cGFuZCBFWFBSRVNTSU9OIGFzc2lnbmluZyBlYWNo
IHZhbHVlIG9mIHRoZSBMSVNUIHRvIFZBUklBQkxFLgotLSMgTElTVCBzaG91bGQgaGF2ZSB0aGUg
Zm9ybSBgaXRlbV8xLCBpdGVtXzIsIC4uLiwgaXRlbV9uJywgaS5lLiB0aGUKLS0jIHdob2xlIGxp
c3QgbXVzdCAqcXVvdGVkKi4gIFF1b3RlIG1lbWJlcnMgdG9vIGlmIHlvdSBkb24ndCB3YW50IHRo
ZW0KLS0jIHRvIGJlIGV4cGFuZGVkLgotLSMKLS0jIFRoaXMgbWFjcm8gaXMgcm9idXN0IHRvIGFj
dGl2ZSBzeW1ib2xzOgotLSMgICAgICB8IG00X2RlZmluZShhY3RpdmUsIFtBQ1QsIElWRV0pCi0t
IyAgICAgIHwgbTRfZm9yZWFjaChWYXIsIFthY3RpdmUsIGFjdGl2ZV0sIFstVmFyLV0pCi0tIyAg
ICAgPT4gLUFDVC0tSVZFLS1BQ1QtLUlWRS0KLS0jCi0tIyAgICAgIHwgbTRfZm9yZWFjaChWYXIs
IFtbYWN0aXZlXSwgW2FjdGl2ZV1dLCBbLVZhci1dKQotLSMgICAgID0+IC1BQ1QsIElWRS0tQUNU
LCBJVkUtCi0tIwotLSMgICAgICB8IG00X2ZvcmVhY2goVmFyLCBbW1thY3RpdmVdXSwgW1thY3Rp
dmVdXV0sIFstVmFyLV0pCi0tIyAgICAgPT4gLWFjdGl2ZS0tYWN0aXZlLQotLSMKLS0jIFRoaXMg
bWFjcm8gaXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIGF2b2lkIGV4dHJhIGV4cGFuc2lvbnMgc3Vj
aCBhcwotLSMgbTRfaWZ2YWwgYW5kIGRubC4gIEFsc28sIHNpbmNlICQyIG1pZ2h0IGJlIHF1aXRl
IGxhcmdlLCB0cnkgdG8gdXNlIGl0Ci0tIyBhcyBsaXR0bGUgYXMgcG9zc2libGUgaW4gX200X2Zv
cmVhY2g7IGVhY2ggZXh0cmEgdXNlIHJlcXVpcmVzIHRoYXQgbXVjaAotLSMgbW9yZSBtZW1vcnkg
Zm9yIGV4cGFuc2lvbi4gIFNvLCByYXRoZXIgdGhhbiBkaXJlY3RseSBjb21wYXJlICQyIGFnYWlu
c3QKLS0jIFtdIGFuZCB1c2UgbTRfY2FyL200X2NkciBmb3IgcmVjdXJzaW9uLCB3ZSBpbnN0ZWFk
IHVuYm94IHRoZSBsaXN0ICh3aGljaAotLSMgcmVxdWlyZXMgc3dhcHBpbmcgdGhlIGFyZ3VtZW50
IG9yZGVyIGluIHRoZSBoZWxwZXIpLCBpbnNlcnQgYW4gaWdub3JlZAotLSMgdGhpcmQgYXJndW1l
bnQsIGFuZCB1c2UgbTRfc2hpZnQzIHRvIGRldGVjdCB3aGVuIHJlY3Vyc2lvbiBpcyBjb21wbGV0
ZSwKLS0jIGF0IHdoaWNoIHBvaW50IHRoaXMgbG9va3MgdmVyeSBtdWNoIGxpa2UgbTRfbWFwX2Fy
Z3MuCi0tbTRfZGVmaW5lKFttNF9mb3JlYWNoXSwKLS1bbTRfaWYoWyQyXSwgW10sIFtdLAotLSAg
ICAgICBbbTRfcHVzaGRlZihbJDFdKV8kMChbbTRfZGVmaW5lKFskMV0sXSwgWykkM10sIFtdLAot
LSAgJDIpbTRfcG9wZGVmKFskMV0pXSldKQotLQotLSMgX200X2ZvcmVhY2goUFJFLCBQT1NULCBJ
R05PUkVELCBBUkcuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIEZvcm0gdGhlIGNvbW1vbiBiYXNpcyBvZiB0aGUgbTRfZm9yZWFjaCBhbmQgbTRfbWFw
IG1hY3Jvcy4gIEZvciBlYWNoCi0tIyBBUkcsIGV4cGFuZCBQUkVbQVJHXVBPU1RbXS4gIFRoZSBJ
R05PUkVEIGFyZ3VtZW50IG1ha2VzIHJlY3Vyc2lvbgotLSMgZWFzaWVyLCBhbmQgbXVzdCBiZSBz
dXBwbGllZCByYXRoZXIgdGhhbiBpbXBsaWNpdC4KLS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNo
Lm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShb
X200X2ZvcmVhY2hdLAotLVttNF9pZihbJCNdLCBbM10sIFtdLAotLSAgICAgICBbJDFbJDRdJDJb
XSQwKFskMV0sIFskMl0sIG00X3NoaWZ0MygkQCkpXSldKQotLQotLQotLSMgbTRfZm9yZWFjaF93
KFZBUklBQkxFLCBMSVNULCBFWFBSRVNTSU9OKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgTGlrZSBtNF9mb3JlYWNoLCBidXQgdGhlIGxpc3QgaXMgd2hp
dGVzcGFjZSBzZXBhcmF0ZWQuICBEZXBlbmRpbmcgb24KLS0jIEVYUFJFU1NJT04sIGl0IG1heSBi
ZSBtb3JlIGVmZmljaWVudCB0byB1c2UgbTRfbWFwX2FyZ3Nfdy4KLS0jCi0tIyBUaGlzIG1hY3Jv
IGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9sczoKLS0jICAgIG00X2ZvcmVhY2hfdyhbVmFyXSwg
WyBhY3RpdmUKLS0jICAgIGIJYWN0XAotLSMgICAgaXZlICBdLCBbLVZhci1dKWVuZAotLSMgICAg
PT4gLWFjdGl2ZS0tYi0tYWN0aXZlLWVuZAotLSMKLS0jIFRoaXMgdXNlZCB0byB1c2UgYSBzbG93
ZXIgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gbTRfZm9yZWFjaDoKLS0jICAgbTRfZm9yZWFjaChb
JDFdLCBtNF9zcGxpdChtNF9ub3JtYWxpemUoWyQyXSksIFsgXSksIFskM10pCi0tbTRfZGVmaW5l
KFttNF9mb3JlYWNoX3ddLAotLVttNF9wdXNoZGVmKFskMV0pbTRfbWFwX2FyZ3NfdyhbJDJdLAot
LSAgW200X2RlZmluZShbJDFdLF0sIFspJDNdKW00X3BvcGRlZihbJDFdKV0pCi0tCi0tCi0tIyBt
NF9tYXAoTUFDUk8sIExJU1QpCi0tIyBtNF9tYXBhbGwoTUFDUk8sIExJU1QpCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBJbnZva2UgTUFDUk8oJDEpLCBNQUNSTygkMikgZXRjLiB3aGVy
ZSAkMSwgJDIuLi4gYXJlIHRoZSBlbGVtZW50cyBvZgotLSMgTElTVC4gICQxLCAkMi4uLiBtdXN0
IGluIHR1cm4gYmUgbGlzdHMsIGFwcHJvcHJpYXRlIGZvciBtNF9hcHBseS4KLS0jIElmIExJU1Qg
Y29udGFpbnMgYW4gZW1wdHkgc3VibGlzdCwgbTRfbWFwIHNraXBzIHRoZSBleHBhbnNpb24gb2YK
LS0jIE1BQ1JPLCB3aGlsZSBtNF9tYXBhbGwgZXhwYW5kcyBNQUNSTyB3aXRoIG5vIGFyZ3VtZW50
cy4KLS0jCi0tIyBTaW5jZSBMSVNUIG1heSBiZSBxdWl0ZSBsYXJnZSwgd2Ugd2FudCB0byBtaW5p
bWl6ZSBob3cgb2Z0ZW4gaXQKLS0jIGFwcGVhcnMgaW4gdGhlIGV4cGFuc2lvbi4gIFJhdGhlciB0
aGFuIHVzZSBtNF9jYXIvbTRfY2RyIGl0ZXJhdGlvbiwKLS0jIHdlIHVuYm94IHRoZSBsaXN0LCBh
bmQgdXNlIF9tNF9mb3JlYWNoIGZvciBpdGVyYXRpb24uICBGb3IgbTRfbWFwLAotLSMgYW4gZW1w
dHkgbGlzdCBiZWhhdmVzIGxpa2UgYW4gZW1wdHkgc3VibGlzdCBhbmQgZ2V0cyBpZ25vcmVkOyBm
b3IKLS0jIG00X21hcGFsbCwgd2UgbXVzdCBzcGVjaWFsLWNhc2UgdGhlIGVtcHR5IGxpc3QuCi0t
bTRfZGVmaW5lKFttNF9tYXBdLAotLVtfbTRfZm9yZWFjaChbX200X2FwcGx5KFskMV0sXSwgWyld
LCBbXSwgJDIpXSkKLS0KLS1tNF9kZWZpbmUoW200X21hcGFsbF0sCi0tW200X2lmKFskMl0sIFtd
LCBbXSwKLS0gICAgICAgW19tNF9mb3JlYWNoKFttNF9hcHBseShbJDFdLF0sIFspXSwgW10sICQy
KV0pXSkKLS0KLS0KLS0jIG00X21hcF9zZXAoTUFDUk8sIFtTRVBBUkFUT1JdLCBMSVNUKQotLSMg
bTRfbWFwYWxsX3NlcChNQUNSTywgW1NFUEFSQVRPUl0sIExJU1QpCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEludm9rZSBNQUNSTygkMSksIFNFUEFSQVRP
UiwgTUFDUk8oJDIpLCAuLi4sIE1BQ1JPKCROKSB3aGVyZSAkMSwKLS0jICQyLi4uICROIGFyZSB0
aGUgZWxlbWVudHMgb2YgTElTVCwgYW5kIGFyZSBpbiB0dXJuIGxpc3RzIGFwcHJvcHJpYXRlCi0t
IyBmb3IgbTRfYXBwbHkuICBTRVBBUkFUT1IgaXMgZXhwYW5kZWQsIGluIG9yZGVyIHRvIGFsbG93
IHRoZSBjcmVhdGlvbgotLSMgb2YgYSBsaXN0IG9mIGFyZ3VtZW50cyBieSB1c2luZyBhIHNpbmds
ZS1xdW90ZWQgY29tbWEgYXMgdGhlCi0tIyBzZXBhcmF0b3IuICBGb3IgZWFjaCBlbXB0eSBzdWJs
aXN0LCBtNF9tYXBfc2VwIHNraXBzIHRoZSBleHBhbnNpb24KLS0jIG9mIE1BQ1JPIGFuZCBTRVBB
UkFUT1IsIHdoaWxlIG00X21hcGFsbF9zZXAgZXhwYW5kcyBNQUNSTyB3aXRoIG5vCi0tIyBhcmd1
bWVudHMuCi0tIwotLSMgRm9yIG00X21hcGFsbF9zZXAsIG1lcmVseSBleHBhbmQgdGhlIGZpcnN0
IGl0ZXJhdGlvbiB3aXRob3V0IHRoZQotLSMgc2VwYXJhdG9yLCB0aGVuIGluY2x1ZGUgc2VwYXJh
dG9yIGFzIHBhcnQgb2Ygc3Vic2VxdWVudCByZWN1cnNpb247Ci0tIyBidXQgYXZvaWQgZXh0cmEg
ZXhwYW5zaW9uIG9mIExJU1QncyBzaWRlLWVmZmVjdHMgdmlhIGEgaGVscGVyIG1hY3JvLgotLSMg
Rm9yIG00X21hcF9zZXAsIHRoaW5ncyBhcmUgdHJpY2tpZXIgLSB3ZSBkb24ndCBrbm93IGlmIHRo
ZSBmaXJzdAotLSMgbGlzdCBlbGVtZW50IGlzIGFuIGVtcHR5IHN1Ymxpc3QsIHNvIHdlIG11c3Qg
ZGVmaW5lIGEgc2VsZi1tb2RpZnlpbmcKLS0jIGhlbHBlciBtYWNybyBhbmQgdXNlIHRoYXQgYXMg
dGhlIHNlcGFyYXRvciBpbnN0ZWFkLgotLW00X2RlZmluZShbbTRfbWFwX3NlcF0sCi0tW200X3B1
c2hkZWYoW200X1NlcF0sIFttNF9kZWZpbmUoW200X1NlcF0sIF9tNF9kZWZuKFttNF91bnF1b3Rl
XSkpXSldZG5sCi0tW19tNF9mb3JlYWNoKFtfbTRfYXBwbHkoW200X1NlcChbJDJdKVtdJDFdLF0s
IFspXSwgW10sICQzKW00X3BvcGRlZihbbTRfU2VwXSldKQotLQotLW00X2RlZmluZShbbTRfbWFw
YWxsX3NlcF0sCi0tW200X2lmKFskM10sIFtdLCBbXSwgW18kMChbJDFdLCBbJDJdLCAkMyldKV0p
Ci0tCi0tbTRfZGVmaW5lKFtfbTRfbWFwYWxsX3NlcF0sCi0tW200X2FwcGx5KFskMV0sIFskM10p
X200X2ZvcmVhY2goW200X2FwcGx5KFskMltdJDFdLF0sIFspXSwgbTRfc2hpZnQyKCRAKSldKQot
LQotLSMgbTRfbWFwX2FyZ3MoRVhQUkVTU0lPTiwgQVJHLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kIEVYUFJFU1NJT04oW0FSR10pIGZvciBlYWNoIGFy
Z3VtZW50LiAgTW9yZSBlZmZpY2llbnQgdGhhbgotLSMgICBtNF9mb3JlYWNoKFt2YXJdLCBbQVJH
Li4uXSwgW0VYUFJFU1NJT04obTRfZGVmbihbdmFyXSkpXSkKLS0jIFNob3J0aGFuZCBmb3IgbTRf
bWFwX2FyZ3Nfc2VwKFtFWFBSRVNTSU9OKF0sIFspXSwgW10sIEFSRy4uLikuCi0tbTRfZGVmaW5l
KFttNF9tYXBfYXJnc10sCi0tW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZl
dyBhcmd1bWVudHM6ICQjXSldLAotLSAgICAgICBbJCNdLCBbMV0sIFtdLAotLSAgICAgICBbJCNd
LCBbMl0sIFskMShbJDJdKVtdXSwKLS0gICAgICAgW19tNF9mb3JlYWNoKFskMShdLCBbKV0sICRA
KV0pXSkKLS0KLS0KLS0jIG00X21hcF9hcmdzX3BhaXIoRVhQUkVTU0lPTiwgW0VORC1FWFBSID0g
RVhQUkVTU0lPTl0sIEFSRy4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFBlcmZvcm0gYSBwYWlyd2lzZSBncm91
cGluZyBvZiBjb25zZWN1dGl2ZSBBUkdzLCBieSBleHBhbmRpbmcKLS0jIEVYUFJFU1NJT04oW0FS
RzFdLCBbQVJHMl0pLiAgSWYgdGhlcmUgYXJlIGFuIG9kZCBudW1iZXIgb2YgQVJHcywgdGhlCi0t
IyBmaW5hbCBhcmd1bWVudCBpcyBleHBhbmRlZCB3aXRoIEVORC1FWFBSKFtBUkduXSkuCi0tIwot
LSMgRm9yIGV4YW1wbGU6Ci0tIyAgIG00X2RlZmluZShbc2hvd10sIFsoJCopbTRfbmV3bGluZV0p
ZG5sCi0tIyAgIG00X21hcF9hcmdzX3BhaXIoW3Nob3ddLCBbXSwgW2FdLCBbYl0sIFtjXSwgW2Rd
LCBbZV0pZG5sCi0tIyAgID0+IChhLGIpCi0tIyAgID0+IChjLGQpCi0tIyAgID0+IChlKQotLSMK
LS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBt
YWRlIGhlcmUuCi0tbTRfZGVmaW5lKFttNF9tYXBfYXJnc19wYWlyXSwKLS1bbTRfaWYoWyQjXSwg
WzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCi0tICAgICAgIFsk
I10sIFsxXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKLS0g
ICAgICAgWyQjXSwgWzJdLCBbXSwKLS0gICAgICAgWyQjXSwgWzNdLCBbbTRfZGVmYXVsdChbJDJd
LCBbJDFdKShbJDNdKVtdXSwKLS0gICAgICAgWyQjXSwgWzRdLCBbJDEoWyQzXSwgWyQ0XSlbXV0s
Ci0tICAgICAgIFskMShbJDNdLCBbJDRdKVtdJDAoWyQxXSwgWyQyXSwgbTRfc2hpZnQobTRfc2hp
ZnQzKCRAKSkpXSldKQotLQotLQotLSMgbTRfbWFwX2FyZ3Nfc2VwKFtQUkVdLCBbUE9TVF0sIFtT
RVBdLCBBUkcuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIEV4cGFuZCBQUkVbQVJHXVBPU1QgZm9yIGVhY2ggYXJndW1lbnQsIHdpdGggU0VQ
IGJldHdlZW4gYXJndW1lbnRzLgotLW00X2RlZmluZShbbTRfbWFwX2FyZ3Nfc2VwXSwKLS1bbTRf
aWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCi0t
ICAgICAgIFskI10sIFsxXSwgW10sCi0tICAgICAgIFskI10sIFsyXSwgW10sCi0tICAgICAgIFsk
I10sIFszXSwgW10sCi0tICAgICAgIFskI10sIFs0XSwgWyQxWyQ0XSQyW11dLAotLSAgICAgICBb
JDFbJDRdJDJbXV9tNF9mb3JlYWNoKFskM1tdJDFdLCBbJDJdLCBtNF9zaGlmdDMoJEApKV0pXSkK
LS0KLS0KLS0jIG00X21hcF9hcmdzX3coU1RSSU5HLCBbUFJFXSwgW1BPU1RdLCBbU0VQXSkKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFBlcmZvcm0g
dGhlIGV4cGFuc2lvbiBvZiBQUkVbd29yZF1QT1NUW10gZm9yIGVhY2ggd29yZCBpbiBTVFJJTkcK
LS0jIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLiAgTW9yZSBlZmZpY2llbnQgdGhhbjoKLS0jICAg
bTRfZm9yZWFjaF93KFt2YXJdLCBbU1RSSU5HXSwgW1BSRVtdbTRfZGVmbihbdmFyXSlQT1NUXSkK
LS0jIEFkZGl0aW9uYWxseSwgZXhwYW5kIFNFUCBiZXR3ZWVuIHdvcmRzLgotLSMKLS0jIEFzIGxv
bmcgYXMgd2UgaGF2ZSB0byB1c2UgbTRfYnBhdHN1YnN0IHRvIHNwbGl0IHRoZSBzdHJpbmcsIHdl
IG1pZ2h0Ci0tIyBhcyB3ZWxsIG1ha2UgaXQgYWxzbyBhcHBseSBQUkUgYW5kIFBPU1Q7IHRoaXMg
YXZvaWRzIGl0ZXJhdGlvbgotLSMgYWx0b2dldGhlci4gIEJ1dCB3ZSBtdXN0IGJlIGNhcmVmdWwg
b2YgYW55IFwgaW4gUFJFIG9yIFBPU1QuCi0tIyBfbTRfc3RyaXAgcmV0dXJucyBhIHF1b3RlZCBz
dHJpbmcsIGJ1dCB0aGF0J3Mgb2theSwgc2luY2UgaXQgYWxzbwotLSMgc3VwcGxpZXMgYW4gZW1w
dHkgbGVhZGluZyBhbmQgdHJhaWxpbmcgYXJndW1lbnQgZHVlIHRvIG91cgotLSMgaW50ZW50aW9u
YWwgd2hpdGVzcGFjZSBhcm91bmQgU1RSSU5HLiAgV2UgdXNlIG00X3N1YnN0ciB0byBzdHJpcCB0
aGUKLS0jIGVtcHR5IGVsZW1lbnRzIGFuZCByZW1vdmUgdGhlIGV4dHJhIGxheWVyIG9mIHF1b3Rp
bmcuCi0tbTRfZGVmaW5lKFttNF9tYXBfYXJnc193XSwKLS1bXyQwKF9tNF9zcGxpdChbIF1tNF9m
bGF0dGVuKFskMV0pWyBdLCBbWwkgXStdLAotLQkgICAgICAgbTRfaWYobTRfaW5kZXgoWyQyJDMk
NF0sIFtcXSksIFstMV0sIFtbJDNbXSQ0W10kMl1dLAotLQkJICAgICBbbTRfYnBhdHN1YnN0KFtb
JDNbXSQ0W10kMl1dLCBbXFxdLCBbXFxcXF0pXSkpLAotLSAgICAgbTRfbGVuKFtbXSQzW10kNF0p
LCBtNF9sZW4oWyQ0W10kMltdXSkpXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9tYXBfYXJnc193XSwK
LS1bbTRfc3Vic3RyKFskMV0sIFskMl0sIG00X2V2YWwobTRfbGVuKFskMV0pIC0gWyQyXSAtIFsk
M10pKV0pCi0tCi0tCi0tIyBtNF9zdGFja19mb3JlYWNoKE1BQ1JPLCBGVU5DKQotLSMgbTRfc3Rh
Y2tfZm9yZWFjaF9saWZvKE1BQ1JPLCBGVU5DKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgUGFzcyBlYWNoIHN0YWNrZWQgZGVmaW5pdGlvbiBvZiBNQUNSTyB0byB0
aGUgb25lLWFyZ3VtZW50IG1hY3JvIEZVTkMuCi0tIyBtNF9zdGFja19mb3JlYWNoIHByb2NlZWRz
IGluIEZJRk8gb3JkZXIsIHdoaWxlIG00X3N0YWNrX2ZvcmVhY2hfbGlmbwotLSMgcHJvY2Vzc2Vz
IHRoZSB0b3Btb3N0IGRlZmluaXRpb25zIGZpcnN0LiAgSW4gYWRkaXRpb24sIEZVTkMgc2hvdWxk
Ci0tIyBub3QgcHVzaCBvciBwb3AgZGVmaW5pdGlvbnMgb2YgTUFDUk8sIGFuZCBzaG91bGQgbm90
IGV4cGVjdCBhbnl0aGluZyBhYm91dAotLSMgdGhlIGFjdGl2ZSBkZWZpbml0aW9uIG9mIE1BQ1JP
IChpdCB3aWxsIG5vdCBiZSB0aGUgdG9wbW9zdCwgYW5kIG1heSBub3QKLS0jIGJlIHRoZSBvbmUg
cGFzc2VkIHRvIEZVTkMgZWl0aGVyKS4KLS0jCi0tIyBTb21lIG1hY3JvcyBzaW1wbHkgY2FuJ3Qg
YmUgZXhhbWluZWQgd2l0aCB0aGlzIG1ldGhvZDogbmFtZWx5LAotLSMgYW55dGhpbmcgaW52b2x2
ZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIF9tNF9zdGFja19yZXZlcnNlLgotLW00X2RlZmlu
ZShbbTRfc3RhY2tfZm9yZWFjaF0sCi0tW19tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAt
JDFdKV1kbmwKLS1bX200X3N0YWNrX3JldmVyc2UoW200X3RtcC0kMV0sIFskMV0sIFskMihfbTRf
ZGVmbihbbTRfdG1wLSQxXSkpXSldKQotLQotLW00X2RlZmluZShbbTRfc3RhY2tfZm9yZWFjaF9s
aWZvXSwKLS1bX200X3N0YWNrX3JldmVyc2UoWyQxXSwgW200X3RtcC0kMV0sIFskMihfbTRfZGVm
bihbbTRfdG1wLSQxXSkpXSldZG5sCi0tW19tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBb
JDFdKV0pCi0tCi0tIyBtNF9zdGFja19mb3JlYWNoX3NlcChNQUNSTywgW1BSRV0sIFtQT1NUXSwg
W1NFUF0pCi0tIyBtNF9zdGFja19mb3JlYWNoX3NlcF9saWZvKE1BQ1JPLCBbUFJFXSwgW1BPU1Rd
LCBbU0VQXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgU2ltaWxhciB0byBtNF9zdGFja19mb3JlYWNoIGFuZCBtNF9zdGFja19m
b3JlYWNoX2xpZm8sIGluIHRoYXQgZXZlcnkKLS0jIGRlZmluaXRpb24gb2YgYSBwdXNoZGVmIHN0
YWNrIHdpbGwgYmUgdmlzaXRlZC4gIEJ1dCByYXRoZXIgdGhhbgotLSMgcGFzc2luZyB0aGUgZGVm
aW5pdGlvbiBhcyBhIHNpbmdsZSBhcmd1bWVudCB0byBhIG1hY3JvLCB0aGlzIHZhcmlhbnQKLS0j
IGV4cGFuZHMgdGhlIGNvbmNhdGVuYXRpb24gb2YgUFJFW11kZWZpbml0aW9uW11QT1NULCBhbmQg
ZXhwYW5kcyBTRVAKLS0jIGJldHdlZW4gY29uc2VjdXRpdmUgZXhwYW5zaW9ucy4gIE5vdGUgdGhh
dCBtNF9zdGFja19mb3JlYWNoKFthXSwgW2JdKQotLSMgaXMgZXF1aXZhbGVudCB0byBtNF9zdGFj
a19mb3JlYWNoX3NlcChbYV0sIFtiKF0sIFspXSkuCi0tbTRfZGVmaW5lKFttNF9zdGFja19mb3Jl
YWNoX3NlcF0sCi0tW19tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdKV1kbmwKLS1b
X200X3N0YWNrX3JldmVyc2UoW200X3RtcC0kMV0sIFskMV0sIFskMltdX200X2RlZm4oW200X3Rt
cC0kMV0pJDNdLCBbJDRbXV0pXSkKLS0KLS1tNF9kZWZpbmUoW200X3N0YWNrX2ZvcmVhY2hfc2Vw
X2xpZm9dLAotLVtfbTRfc3RhY2tfcmV2ZXJzZShbJDFdLCBbbTRfdG1wLSQxXSwgWyQyW11fbTRf
ZGVmbihbbTRfdG1wLSQxXSkkM10sIFskNFtdXSldZG5sCi0tW19tNF9zdGFja19yZXZlcnNlKFtt
NF90bXAtJDFdLCBbJDFdKV0pCi0tCi0tCi0tIyBfbTRfc3RhY2tfcmV2ZXJzZShPTEQsIE5FVywg
W0FDVElPTl0sIFtTRVBdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIEEgcmVjdXJzaXZlIHdvcmtlciBmb3IgcHVzaGRlZiBzdGFjayBtYW5pcHVs
YXRpb24uICBEZXN0cnVjdGl2ZWx5Ci0tIyBjb3B5IHRoZSBPTEQgc3RhY2sgaW50byB0aGUgTkVX
LCBhbmQgZXhwYW5kaW5nIEFDVElPTiBmb3IgZWFjaAotLSMgaXRlcmF0aW9uLiAgQWZ0ZXIgdGhl
IGZpcnN0IGl0ZXJhdGlvbiwgU0VQIGlzIHByb21vdGVkIHRvIHRoZSBmcm9udAotLSMgb2YgQUNU
SU9OIChub3RlIHRoYXQgU0VQIHNob3VsZCBpbmNsdWRlIGEgdHJhaWxpbmcgW10gaWYgaXQgaXMg
dG8KLS0jIGF2b2lkIGludGVyZmVyaW5nIHdpdGggQUNUSU9OKS4gIFRoZSBjdXJyZW50IGRlZmlu
aXRpb24gaXMgZXhhbWluZWQKLS0jIGFmdGVyIHRoZSBORVcgaGFzIGJlZW4gcHVzaGVkIGJ1dCBi
ZWZvcmUgT0xEIGhhcyBiZWVuIHBvcHBlZDsgdGhpcwotLSMgb3JkZXIgaXMgaW1wb3J0YW50LCBh
cyBBQ1RJT04gaXMgcGVybWl0dGVkIHRvIG9wZXJhdGUgb24gZWl0aGVyCi0tIyBfbTRfZGVmbihb
T0xEXSkgb3IgX200X2RlZm4oW05FV10pLiAgU2luY2UgdGhlIG9wZXJhdGlvbiBpcwotLSMgZGVz
dHJ1Y3RpdmUsIHRoaXMgbWFjcm8gaXMgZ2VuZXJhbGx5IHVzZWQgdHdpY2UsIHdpdGggYSB0ZW1w
b3JhcnkKLS0jIG1hY3JvIG5hbWUgaG9sZGluZyB0aGUgc3dhcHBlZCBjb3B5LgotLW00X2RlZmlu
ZShbX200X3N0YWNrX3JldmVyc2VdLAotLVttNF9pZmRlZihbJDFdLCBbbTRfcHVzaGRlZihbJDJd
LAotLSAgX200X2RlZm4oWyQxXSkpJDNbXV9tNF9wb3BkZWYoWyQxXSkkMChbJDFdLCBbJDJdLCBb
JDQkM10pXSldKQotLQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwot
LSMjIDkuIE1vcmUgZGl2ZXJzaW9uIHN1cHBvcnQuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAjIwotLQotLQotLSMgbTRfY2xlYXJkaXZlcnQoRElWRVJTSU9OLU5BTUUuLi4p
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERpc2NhcmQgYW55IHRl
eHQgaW4gRElWRVJTSU9OLU5BTUUuCi0tIwotLSMgVGhpcyB3b3JrcyBldmVuIGluc2lkZSBtNF9l
eHBhbmQuCi0tbTRfZGVmaW5lKFttNF9jbGVhcmRpdmVydF0sCi0tW200X2lmKFskI10sIFswXSwg
W200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKLS0gICAgICAgW19tNF9kaXZlcnRf
cmF3KFstMV0pbTRfdW5kaXZlcnQoJEApX200X2RpdmVydF9yYXcoCi0tCSBfbTRfZGl2ZXJ0KF9t
NF9kZWZuKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pLCBbLV0pKV0pXSkKLS0KLS0KLS0jIF9tNF9k
aXZlcnQoRElWRVJTSU9OLU5BTUUgb3IgTlVNQkVSLCBbTk9XQVJOXSkKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIERJVkVSU0lPTi1OQU1F
IGlzIHRoZSBuYW1lIG9mIGEgZGl2ZXJzaW9uLCByZXR1cm4gaXRzIG51bWJlciwKLS0jIG90aGVy
d2lzZSBpZiBpdCBpcyBhIE5VTUJFUiByZXR1cm4gaXQuICBJc3N1ZSBhIHdhcm5pbmcgYWJvdXQK
LS0jIHRoZSB1c2Ugb2YgYSBudW1iZXIgaW5zdGVhZCBvZiBhIG5hbWUsIHVubGVzcyBOT1dBUk4g
aXMgcHJvdmlkZWQuCi0tbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0XSwKLS1bbTRfaWZkZWYoW19tNF9k
aXZlcnQoJDEpXSwKLS0JICBbbTRfaW5kaXIoW19tNF9kaXZlcnQoJDEpXSldLAotLQkgIFttNF9p
ZihbJDJdLCBbXSwgW200X3dhcm4oW3N5bnRheF0sCi0tCSAgICAgW3ByZWZlciBuYW1lZCBkaXZl
cnNpb25zXSldKSQxXSldKQotLQotLSMgS0lMTCBpcyBvbmx5IHVzZWQgdG8gc3VwcHJlc3Mgb3V0
cHV0LgotLW00X2RlZmluZShbX200X2RpdmVydChLSUxMKV0sICAgICAgICAgICAtMSkKLS0KLS0j
IFRoZSBlbXB0eSBkaXZlcnNpb24gbmFtZSBpcyBhIHN5bm9ueW0gZm9yIDAuCi0tbTRfZGVmaW5l
KFtfbTRfZGl2ZXJ0KCldLCAgICAgICAgICAgICAgICAwKQotLQotLQotLSMgbTRfZGl2ZXJ0X3N0
YWNrCi0tIyAtLS0tLS0tLS0tLS0tLS0KLS0jIFByaW50IHRoZSBkaXZlcnNpb24gc3RhY2ssIGlm
IGl0J3Mgbm9uZW1wdHkuICBUaGUgY2FsbGVyIGlzCi0tIyByZXNwb25zaWJsZSBmb3IgYW55IGxl
YWRpbmcgb3IgdHJhaWxpbmcgbmV3bGluZS4KLS1tNF9kZWZpbmUoW200X2RpdmVydF9zdGFja10s
Ci0tW200X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm8oW19tNF9kaXZlcnRfc3RhY2tdLCBbXSwgW10s
IFsKLS1dKV0pCi0tCi0tCi0tIyBtNF9kaXZlcnRfc3RhY2tfcHVzaChNQUNSTy1OQU1FLCBESVZF
UlNJT04tTkFNRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMgRm9ybSBhbiBlbnRyeSBvZiB0aGUgZGl2ZXJzaW9uIHN0YWNrIGZyb20gY2Fs
bGVyIE1BQ1JPLU5BTUUgYW5kCi0tIyBlbnRlcmluZyBESVZFUlNJT04tTkFNRSBhbmQgcHVzaCBp
dC4KLS1tNF9kZWZpbmUoW200X2RpdmVydF9zdGFja19wdXNoXSwKLS1bbTRfcHVzaGRlZihbX200
X2RpdmVydF9zdGFja10sIG00X2xvY2F0aW9uWzogJDE6ICQyXSldKQotLQotLQotLSMgbTRfZGl2
ZXJ0KERJVkVSU0lPTi1OQU1FKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQ2hh
bmdlIHRoZSBkaXZlcnNpb24gc3RyZWFtIHRvIERJVkVSU0lPTi1OQU1FLgotLW00X2RlZmluZShb
bTRfZGl2ZXJ0XSwKLS1bbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X3N0YWNrXSldZG5sCi0tW200X2Rl
ZmluZShbX200X2RpdmVydF9kaXZlcnNpb25dLCBbJDFdKV1kbmwKLS1bbTRfZGl2ZXJ0X3N0YWNr
X3B1c2goWyQwXSwgWyQxXSldZG5sCi0tW19tNF9kaXZlcnRfcmF3KF9tNF9kaXZlcnQoWyQxXSkp
XSkKLS0KLS0KLS0jIG00X2RpdmVydF9wdXNoKERJVkVSU0lPTi1OQU1FLCBbTk9XQVJOXSkKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIENoYW5nZSB0aGUg
ZGl2ZXJzaW9uIHN0cmVhbSB0byBESVZFUlNJT04tTkFNRSwgd2hpbGUgc3RhY2tpbmcgb2xkIHZh
bHVlcy4KLS0jIEZvciBpbnRlcm5hbCB1c2Ugb25seTogaWYgTk9XQVJOIGlzIG5vdCBlbXB0eSwg
RElWRVJTSU9OLU5BTUUgY2FuIGJlIGEKLS0jIG51bWJlciBpbnN0ZWFkIG9mIGEgbmFtZS4KLS1t
NF9kZWZpbmUoW200X2RpdmVydF9wdXNoXSwKLS1bbTRfZGl2ZXJ0X3N0YWNrX3B1c2goWyQwXSwg
WyQxXSldZG5sCi0tW200X3B1c2hkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgWyQxXSldZG5s
Ci0tW19tNF9kaXZlcnRfcmF3KF9tNF9kaXZlcnQoWyQxXSwgWyQyXSkpXSkKLS0KLS0KLS0jIG00
X2RpdmVydF9wb3AoW0RJVkVSU0lPTi1OQU1FXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIENoYW5nZSB0aGUgZGl2ZXJzaW9uIHN0cmVhbSB0byBpdHMgcHJldmlvdXMg
dmFsdWUsIHVuc3RhY2tpbmcgaXQuCi0tIyBJZiBzcGVjaWZpZWQsIHZlcmlmeSB3ZSBsZWZ0IERJ
VkVSU0lPTi1OQU1FLgotLSMgV2hlbiB3ZSBwb3AgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgc3Rh
Y2ssIHdlIGRpdmVydCB0byAtMS4KLS1tNF9kZWZpbmUoW200X2RpdmVydF9wb3BdLAotLVttNF9p
ZihbJDFdLCBbXSwgW10sCi0tICAgICAgIFskMV0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X2RpdmVy
c2lvbl0pLCBbXSwKLS0gICAgICAgW200X2ZhdGFsKFskMCgkMSk6IGRpdmVyc2lvbiBtaXNtYXRj
aDoKLS1dbTRfZGl2ZXJ0X3N0YWNrKV0pXWRubAotLVtfbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X3N0
YWNrXSwgW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSldZG5sCi0tW200X2lmZGVmKFtfbTRfZGl2ZXJ0
X2RpdmVyc2lvbl0sIFtdLAotLQkgICBbbTRfZmF0YWwoW3RvbyBtYW55IG00X2RpdmVydF9wb3Bd
KV0pXWRubAotLVtfbTRfZGl2ZXJ0X3JhdyhfbTRfZGl2ZXJ0KF9tNF9kZWZuKFtfbTRfZGl2ZXJ0
X2RpdmVyc2lvbl0pLCBbLV0pKV0pCi0tCi0tCi0tIyBtNF9kaXZlcnRfdGV4dChESVZFUlNJT04t
TkFNRSwgQ09OVEVOVCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgT3V0cHV0IENPTlRFTlQgaW50byBESVZFUlNJT04tTkFNRSAod2hpY2ggbWF5IGJlIGEg
bnVtYmVyIGFjdHVhbGx5KS4KLS0jIEFuIGVuZCBvZiBsaW5lIGlzIGFwcGVuZGVkIGZvciBmcmVl
IHRvIENPTlRFTlQuCi0tbTRfZGVmaW5lKFttNF9kaXZlcnRfdGV4dF0sCi0tW200X2RpdmVydF9w
dXNoKFskMV0pJDIKLS1tNF9kaXZlcnRfcG9wKFskMV0pXSkKLS0KLS0KLS0jIG00X2RpdmVydF9v
bmNlKERJVkVSU0lPTi1OQU1FLCBDT05URU5UKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgQ09OVEVOVCBpbnRvIERJVkVSU0lPTi1OQU1FIG9u
Y2UsIGlmIG5vdCBhbHJlYWR5IHRoZXJlLgotLSMgQW4gZW5kIG9mIGxpbmUgaXMgYXBwZW5kZWQg
Zm9yIGZyZWUgdG8gQ09OVEVOVC4KLS1tNF9kZWZpbmUoW200X2RpdmVydF9vbmNlXSwKLS1bbTRf
ZXhwYW5kX29uY2UoW200X2RpdmVydF90ZXh0KFskMV0sIFskMl0pXSldKQotLQotLQotLSMgX200
X2RpdmVydF91bnNhZmUoRElWRVJTSU9OLU5BTUUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIElzc3VlIGEgd2FybmluZyB0aGF0IHRoZSBhdHRlbXB0IHRvIGNoYW5n
ZSB0aGUgY3VycmVudCBkaXZlcnNpb24gdG8KLS0jIERJVkVSU0lPTi1OQU1FIGlzIHVuc2FmZSwg
YmVjYXVzZSB0aGlzIG1hY3JvIGlzIGJlaW5nIGV4cGFuZGVkCi0tIyBkdXJpbmcgYXJndW1lbnQg
Y29sbGVjdGlvbiBvZiBtNF9leHBhbmQuCi0tbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0X3Vuc2FmZV0s
Ci0tW200X2ZhdGFsKFskMDogY2Fubm90IGNoYW5nZSBkaXZlcnNpb24gdG8gYCQxJyBpbnNpZGUg
bTRfZXhwYW5kXSldKQotLQotLQotLSMgbTRfdW5kaXZlcnQoRElWRVJTSU9OLU5BTUUuLi4pCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFVuZGl2ZXJ0IERJVkVSU0lPTi1O
QU1FLiAgVW5saWtlIHRoZSBNNCB2ZXJzaW9uLCB0aGlzIHJlcXVpcmVzIGF0Ci0tIyBsZWFzdCBv
bmUgRElWRVJTSU9OLU5BTUU7IGFsc28sIGR1ZSB0byBzdXBwb3J0IGZvciBuYW1lZCBkaXZlcnNp
b25zLAotLSMgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQgdG8gdW5kaXZlcnQgZmlsZXMuCi0tbTRf
ZGVmaW5lKFttNF91bmRpdmVydF0sCi0tW200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDog
bWlzc2luZyBhcmd1bWVudF0pXSwKLS0gICAgICAgWyQjXSwgWzFdLCBbX200X3VuZGl2ZXJ0KF9t
NF9kaXZlcnQoWyQxXSkpXSwKLS0gICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pXSkKLS0K
LS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK
LS0jIyAxMC4gRGVmaW5pbmcgbWFjcm9zIHdpdGggYmVsbHMgYW5kIHdoaXN0bGVzLiAgIyMKLS0j
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0j
IGBtNF9kZWZ1bicgaXMgYmFzaWNhbGx5IGBtNF9kZWZpbmUnIGJ1dCBpdCBlcXVpcHMgdGhlIG1h
Y3JvIHdpdGggdGhlCi0tIyBuZWVkZWQgbWFjaGluZXJ5IGZvciBgbTRfcmVxdWlyZScuICBBIG1h
Y3JvIG11c3QgYmUgbTRfZGVmdW4nZCBpZgotLSMgZWl0aGVyIGl0IGlzIG00X3JlcXVpcmUnZCwg
b3IgaXQgbTRfcmVxdWlyZSdzLgotLSMKLS0jIFR3byB0aGluZ3MgZGVzZXJ2ZSBhdHRlbnRpb24g
YW5kIGFyZSBkZXRhaWxlZCBiZWxvdzoKLS0jICAxLiBJbXBsZW1lbnRhdGlvbiBvZiBtNF9yZXF1
aXJlCi0tIyAgMi4gS2VlcGluZyB0cmFjayBvZiB0aGUgZXhwYW5zaW9uIHN0YWNrCi0tIwotLSMg
MS4gSW1wbGVtZW50YXRpb24gb2YgbTRfcmVxdWlyZQotLSMgPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLSMKLS0jIE9mIGNvdXJzZSBtNF9kZWZ1biBjYWxscyBtNF9wcm92aWRlLCBz
byB0aGF0IGEgbWFjcm8gd2hpY2ggaGFzCi0tIyBiZWVuIGV4cGFuZGVkIGlzIG5vdCBleHBhbmRl
ZCBhZ2FpbiB3aGVuIG00X3JlcXVpcmUnZCwgYnV0IHRoZQotLSMgZGlmZmljdWx0IHBhcnQgaXMg
dGhlIHByb3BlciBleHBhbnNpb24gb2YgbWFjcm9zIHdoZW4gdGhleSBhcmUKLS0jIG00X3JlcXVp
cmUnZC4KLS0jCi0tIyBUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhyZWUgaWRlYXMs
IChpKSB1c2luZyBkaXZlcnNpb25zIHRvCi0tIyBwcmVwYXJlIHRoZSBleHBhbnNpb24gb2YgdGhl
IG1hY3JvIGFuZCBpdHMgZGVwZW5kZW5jaWVzIChieSBGcmFuYyxvaXMKLS0jIFBpbmFyZCksIChp
aSkgZXhwYW5kIHRoZSBtb3N0IHJlY2VudGx5IG00X3JlcXVpcmUnZCBtYWNyb3MgX2FmdGVyXwot
LSMgdGhlIHByZXZpb3VzIG1hY3JvcyAoYnkgQXhlbCBUaGltbSksIGFuZCAoaWlpKSB0cmFjayBp
bnN0YW5jZXMgb2YKLS0jIHByb3ZpZGUgYmVmb3JlIHJlcXVpcmUgKGJ5IEVyaWMgQmxha2UpLgot
LSMKLS0jCi0tIyBUaGUgZmlyc3QgaWRlYTogd2h5IHVzZSBkaXZlcnNpb25zPwotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jCi0tIyBXaGVuIGEgbWFjcm8gcmVxdWly
ZXMgYW5vdGhlciwgdGhlIG90aGVyIG1hY3JvIGlzIGV4cGFuZGVkIGluIG5ldwotLSMgZGl2ZXJz
aW9uLCBHUk9XLiAgV2hlbiB0aGUgb3V0ZXIgbWFjcm8gaXMgZnVsbHkgZXhwYW5kZWQsIHdlIGZp
cnN0Ci0tIyB1bmRpdmVydCB0aGUgbW9zdCBuZXN0ZWQgZGl2ZXJzaW9ucyAoR1JPVyAtIDEuLi4p
LCBhbmQgZmluYWxseQotLSMgdW5kaXZlcnQgR1JPVy4gIFRvIHVuZGVyc3RhbmQgd2h5IHdlIG5l
ZWQgc2V2ZXJhbCBkaXZlcnNpb25zLAotLSMgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxl
OgotLSMKLS0jIHwgbTRfZGVmdW4oW1RFU1QxXSwgW1Rlc3QuLi5tNF9yZXF1aXJlKFtURVNUMl0p
MV0pCi0tIyB8IG00X2RlZnVuKFtURVNUMl0sIFtUZXN0Li4ubTRfcmVxdWlyZShbVEVTVDNdKTJd
KQotLSMgfCBtNF9kZWZ1bihbVEVTVDNdLCBbVGVzdC4uLjNdKQotLSMKLS0jIEJlY2F1c2UgbTRf
cmVxdWlyZSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmlyc3QgaW4gdGhlIG91dGVyIG1hY3Jvcywg
d2UKLS0jIG11c3Qga2VlcCB0aGUgZXhwYW5zaW9ucyBvZiB0aGUgdmFyaW91cyBsZXZlbHMgb2Yg
bTRfcmVxdWlyZSBzZXBhcmF0ZWQuCi0tIyBSaWdodCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBlcGls
b2d1ZSBvZiBURVNUMSwgd2UgaGF2ZToKLS0jCi0tIwkgICBHUk9XIC0gMjogVGVzdC4uLjMKLS0j
CSAgIEdST1cgLSAxOiBUZXN0Li4uMgotLSMJICAgR1JPVzogICAgIFRlc3QuLi4xCi0tIwkgICBC
T0RZOgotLSMKLS0jIEZpbmFsbHkgdGhlIGVwaWxvZ3VlIG9mIFRFU1QxIHVuZGl2ZXJ0cyBHUk9X
IC0gMiwgR1JPVyAtIDEsIGFuZAotLSMgR1JPVyBpbnRvIHRoZSByZWd1bGFyIGZsb3csIEJPRFku
Ci0tIwotLSMJICAgR1JPVyAtIDI6Ci0tIwkgICBHUk9XIC0gMToKLS0jCSAgIEdST1c6Ci0tIwkg
ICBCT0RZOiAgICAgICAgVGVzdC4uLjM7IFRlc3QuLi4yOyBUZXN0Li4uMQotLSMKLS0jIChUaGUg
c2VtaWNvbG9ucyBhcmUgaGVyZSBmb3IgY2xhcmlmaWNhdGlvbiwgYnV0IG9mIGNvdXJzZSBhcmUg
bm90Ci0tIyBlbWl0dGVkLikgIFRoaXMgaXMgd2hhdCBBdXRvY29uZiAyLjAgKEkgdGhpbmspIHRv
IDIuMTMgKEknbSBzdXJlKQotLSMgaW1wbGVtZW50LgotLSMKLS0jCi0tIyBUaGUgc2Vjb25kIGlk
ZWE6IGZpcnN0IHJlcXVpcmVkIGZpcnN0IG91dAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jCi0tIyBUaGUgbmF0dXJhbCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgaWRlYSBhYm92ZSBpcyBidWdneSBhbmQgcHJvZHVjZXMKLS0jIHZlcnkgc3VycHJpc2luZyBy
ZXN1bHRzIGluIHNvbWUgc2l0dWF0aW9ucy4gIExldCdzIGNvbnNpZGVyIHRoZQotLSMgZm9sbG93
aW5nIGV4YW1wbGUgdG8gZXhwbGFpbiB0aGUgYnVnOgotLSMKLS0jIHwgbTRfZGVmdW4oW1RFU1Qx
XSwgIFttNF9yZXF1aXJlKFtURVNUMmFdKW00X3JlcXVpcmUoW1RFU1QyYl0pXSkKLS0jIHwgbTRf
ZGVmdW4oW1RFU1QyYV0sIFtdKQotLSMgfCBtNF9kZWZ1bihbVEVTVDJiXSwgW200X3JlcXVpcmUo
W1RFU1QzXSldKQotLSMgfCBtNF9kZWZ1bihbVEVTVDNdLCAgW200X3JlcXVpcmUoW1RFU1QyYV0p
XSkKLS0jIHwKLS0jIHwgQUNfSU5JVAotLSMgfCBURVNUMQotLSMKLS0jIFRoZSBkZXBlbmRlbmNp
ZXMgYmV0d2VlbiB0aGUgbWFjcm9zIGFyZToKLS0jCi0tIwkJIDMgLS0tIDJiCi0tIwkJLyAgICAg
ICAgXCAgICAgICAgICAgICAgaXMgbTRfcmVxdWlyZSdkIGJ5Ci0tIwkgICAgICAgLyAgICAgICAg
ICBcICAgICAgIGxlZnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmlnaHQKLS0jCSAgICAyYSAtLS0t
LS0tLS0tLS0gMQotLSMKLS0jIElmIHlvdSBzdHJpY3RseSBhcHBseSB0aGUgcnVsZXMgZ2l2ZW4g
aW4gdGhlIHByZXZpb3VzIHNlY3Rpb24geW91IGdldDoKLS0jCi0tIwkgICBHUk9XIC0gMjogVEVT
VDMKLS0jCSAgIEdST1cgLSAxOiBURVNUMmE7IFRFU1QyYgotLSMJICAgR1JPVzogICAgIFRFU1Qx
Ci0tIwkgICBCT0RZOgotLSMKLS0jIChURVNUMmEsIGFsdGhvdWdoIHJlcXVpcmVkIGJ5IFRFU1Qz
IGlzIG5vdCBleHBhbmRlZCBpbiBHUk9XIC0gMwotLSMgYmVjYXVzZSBpcyBoYXMgYWxyZWFkeSBi
ZWVuIGV4cGFuZGVkIGJlZm9yZSBpbiBHUk9XIC0gMSwgc28gaXQgaGFzCi0tIyBiZWVuIEFDX1BS
T1ZJREUnZCwgc28gaXQgaXMgbm90IGV4cGFuZGVkIGFnYWluKSBzbyB3aGVuIHlvdSB1bmRpdmVy
dAotLSMgdGhlIHN0YWNrIG9mIGRpdmVyc2lvbnMsIHlvdSBnZXQ6Ci0tIwotLSMJICAgR1JPVyAt
IDI6Ci0tIwkgICBHUk9XIC0gMToKLS0jCSAgIEdST1c6Ci0tIwkgICBCT0RZOiAgICAgICAgVEVT
VDM7IFRFU1QyYTsgVEVTVDJiOyBURVNUMQotLSMKLS0jIGkuZS4sIFRFU1QyYSBpcyBleHBhbmRl
ZCBhZnRlciBURVNUMyBhbHRob3VnaCB0aGUgbGF0dGVyIHJlcXVpcmVkIHRoZQotLSMgZm9ybWVy
LgotLSMKLS0jIFN0YXJ0aW5nIGZyb20gMi41MCwgd2UgdXNlIGFuIGltcGxlbWVudGF0aW9uIHBy
b3ZpZGVkIGJ5IEF4ZWwgVGhpbW0uCi0tIyBUaGUgaWRlYSBpcyBzaW1wbGU6IHRoZSBvcmRlciBp
biB3aGljaCBtYWNyb3MgYXJlIGVtaXR0ZWQgbXVzdCBiZSB0aGUKLS0jIHNhbWUgYXMgdGhlIG9u
ZSBpbiB3aGljaCBtYWNyb3MgYXJlIGV4cGFuZGVkLiAgKFRoZSBidWcgYWJvdmUgY2FuCi0tIyBp
bmRlZWQgYmUgZGVzY3JpYmVkIGFzOiBhIG1hY3JvIGhhcyBiZWVuIG00X3Byb3ZpZGUnZCBiZWZv
cmUgaXRzCi0tIyBkZXBlbmRlbnQsIGJ1dCBpdCBpcyBlbWl0dGVkIGFmdGVyOiB0aGUgbGFjayBv
ZiBjb3JyZWxhdGlvbiBiZXR3ZWVuCi0tIyBlbWlzc2lvbiBhbmQgZXhwYW5zaW9uIG9yZGVyIGlz
IGd1aWx0eSkuCi0tIwotLSMgSG93IHRvIGRvIHRoYXQ/ICBZb3Uga2VlcCB0aGUgc3RhY2sgb2Yg
ZGl2ZXJzaW9ucyB0byBlbGFib3JhdGUgdGhlCi0tIyBtYWNyb3MsIGJ1dCBlYWNoIHRpbWUgYSBt
YWNybyBpcyBmdWxseSBleHBhbmRlZCwgZW1pdCBpdCBpbW1lZGlhdGVseS4KLS0jCi0tIyBJbiB0
aGUgZXhhbXBsZSBhYm92ZSwgd2hlbiBURVNUMmEgaXMgZXhwYW5kZWQsIGJ1dCBpdCdzIGVwaWxv
Z3VlIGlzCi0tIyBub3QgcnVuIHlldCwgeW91IGhhdmU6Ci0tIwotLSMJICAgR1JPVyAtIDI6Ci0t
IwkgICBHUk9XIC0gMTogVEVTVDJhCi0tIwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24gb2YgVEVT
VDEKLS0jCSAgIEJPRFk6Ci0tIwotLSMgVGhlIGVwaWxvZ3VlIG9mIFRFU1QyYSBlbWl0cyBpdCBp
bW1lZGlhdGVseToKLS0jCi0tIwkgICBHUk9XIC0gMjoKLS0jCSAgIEdST1cgLSAxOgotLSMJICAg
R1JPVzogICAgIEVsYWJvcmF0aW9uIG9mIFRFU1QxCi0tIwkgICBCT0RZOiAgICAgVEVTVDJhCi0t
IwotLSMgVEVTVDJiIHRoZW4gcmVxdWlyZXMgVEVTVDMsIHNvIHJpZ2h0IGJlZm9yZSB0aGUgZXBp
bG9ndWUgb2YgVEVTVDMsIHlvdQotLSMgaGF2ZToKLS0jCi0tIwkgICBHUk9XIC0gMjogVEVTVDMK
LS0jCSAgIEdST1cgLSAxOiBFbGFib3JhdGlvbiBvZiBURVNUMmIKLS0jCSAgIEdST1c6ICAgICBF
bGFib3JhdGlvbiBvZiBURVNUMQotLSMJICAgQk9EWTogICAgICBURVNUMmEKLS0jCi0tIyBUaGUg
ZXBpbG9ndWUgb2YgVEVTVDMgZW1pdHMgaXQ6Ci0tIwotLSMJICAgR1JPVyAtIDI6Ci0tIwkgICBH
Uk9XIC0gMTogRWxhYm9yYXRpb24gb2YgVEVTVDJiCi0tIwkgICBHUk9XOiAgICAgRWxhYm9yYXRp
b24gb2YgVEVTVDEKLS0jCSAgIEJPRFk6ICAgICBURVNUMmE7IFRFU1QzCi0tIwotLSMgVEVTVDJi
IGlzIG5vdyBjb21wbGV0ZWx5IGV4cGFuZGVkLCBhbmQgZW1pdHRlZDoKLS0jCi0tIwkgICBHUk9X
IC0gMjoKLS0jCSAgIEdST1cgLSAxOgotLSMJICAgR1JPVzogICAgIEVsYWJvcmF0aW9uIG9mIFRF
U1QxCi0tIwkgICBCT0RZOiAgICAgVEVTVDJhOyBURVNUMzsgVEVTVDJiCi0tIwotLSMgYW5kIGZp
bmFsbHksIFRFU1QxIGlzIGZpbmlzaGVkIGFuZCBlbWl0dGVkOgotLSMKLS0jCSAgIEdST1cgLSAy
OgotLSMJICAgR1JPVyAtIDE6Ci0tIwkgICBHUk9XOgotLSMJICAgQk9EWTogICAgIFRFU1QyYTsg
VEVTVDM7IFRFU1QyYjogVEVTVDEKLS0jCi0tIyBUaGUgaWRlYSBpcyBzaW1wbGUsIGJ1dCB0aGUg
aW1wbGVtZW50YXRpb24gaXMgYSBiaXQgaW52b2x2ZWQuICBJZgotLSMgeW91IGFyZSBsaWtlIG1l
LCB5b3Ugd2lsbCB3YW50IHRvIHNlZSB0aGUgYWN0dWFsIGZ1bmN0aW9uaW5nIG9mIHRoaXMKLS0j
IGltcGxlbWVudGF0aW9uIHRvIGJlIGNvbnZpbmNlZC4gIFRoZSBuZXh0IHNlY3Rpb24gZ2l2ZXMg
dGhlIGZ1bGwKLS0jIGRldGFpbHMuCi0tIwotLSMKLS0jIFRoZSBBeGVsIFRoaW1tIGltcGxlbWVu
dGF0aW9uIGF0IHdvcmsKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS0jCi0tIyBXZSBjb25zaWRlciB0aGUgbWFjcm9zIGFib3ZlLCBhbmQgdGhpcyBjb25maWd1cmUu
YWM6Ci0tIwotLSMJICAgIEFDX0lOSVQKLS0jCSAgICBURVNUMQotLSMKLS0jIFlvdSBzaG91bGQg
a2VlcCB0aGUgZGVmaW5pdGlvbnMgb2YgX200X2RlZnVuX3BybywgX200X2RlZnVuX2VwaSwgYW5k
Ci0tIyBtNF9yZXF1aXJlIGF0IGhhbmQgdG8gZm9sbG93IHRoZSBzdGVwcy4KLS0jCi0tIyBUaGlz
IGltcGxlbWVudGF0aW9uIHRyaWVzIG5vdCB0byBhc3N1bWUgdGhhdCB0aGUgY3VycmVudCBkaXZl
cnNpb24gaXMKLS0jIEJPRFksIHNvIGFzIHNvb24gYXMgYSBtYWNybyAobTRfZGVmdW4nZCkgaXMg
ZXhwYW5kZWQsIHdlIGZpcnN0Ci0tIyByZWNvcmQgdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIHVuZGVy
IHRoZSBuYW1lIF9tNF9kaXZlcnRfZHVtcCAoZGVub3RlZAotLSMgRFVNUCBiZWxvdyBmb3Igc2hv
cnQpLiAgVGhpcyBpbnRyb2R1Y2VzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlIHdpdGgKLS0jIHRo
ZSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBBdXRvY29uZjogeW91IGNhbm5vdCB1c2UgbTRfcmVxdWly
ZSBpZiB5b3UKLS0jIGFyZSBub3QgaW5zaWRlIGFuIG00X2RlZnVuJ2QgbWFjcm8sIGFuZCBlc3Bl
Y2lhbGx5LCB5b3UgY2Fubm90Ci0tIyBtNF9yZXF1aXJlIGRpcmVjdGx5IGZyb20gdGhlIHRvcCBs
ZXZlbC4KLS0jCi0tIyBXZSBoYXZlIG5vdCB0cmllZCB0byBzaW11bGF0ZSB0aGUgb2xkIGJlaGF2
aW9yIChiZXR0ZXIgeWV0LCB3ZQotLSMgZGlhZ25vc2UgaXQpLCBiZWNhdXNlIGl0IGlzIHRvbyBk
YW5nZXJvdXM6IGEgbWFjcm8gbTRfcmVxdWlyZSdkIGZyb20KLS0jIHRoZSB0b3AgbGV2ZWwgaXMg
ZXhwYW5kZWQgYmVmb3JlIHRoZSBib2R5IG9mIGBjb25maWd1cmUnLCBpLmUuLCBiZWZvcmUKLS0j
IGFueSBvdGhlciB0ZXN0IHdhcyBydW4uICBJIGxldCB5b3UgaW1hZ2luZSB0aGUgcmVzdWx0IG9m
IHJlcXVpcmluZwotLSMgQUNfU1REQ19IRUFERVJTIGZvciBpbnN0YW5jZSwgYmVmb3JlIEFDX1BS
T0dfQ0Mgd2FzIGFjdHVhbGx5IHJ1bi4uLi4KLS0jCi0tIyBBZnRlciBBQ19JTklUIHdhcyBydW4s
IHRoZSBjdXJyZW50IGRpdmVyc2lvbiBpcyBCT0RZLgotLSMgKiBBQ19JTklUIHdhcyBydW4KLS0j
ICAgRFVNUDogICAgICAgICAgICAgICAgdW5kZWZpbmVkCi0tIyAgIGRpdmVyc2lvbiBzdGFjazog
ICAgIEJPRFkgfC0KLS0jCi0tIyAqIFRFU1QxIGlzIGV4cGFuZGVkCi0tIyBUaGUgcHJvbG9ndWUg
b2YgVEVTVDEgc2V0cyBfbTRfZGl2ZXJ0X2R1bXAsIHdoaWNoIGlzIHRoZSBkaXZlcnNpb24KLS0j
IHdoZXJlIHRoZSBjdXJyZW50IGVsYWJvcmF0aW9uIHdpbGwgYmUgZHVtcGVkLCB0byB0aGUgY3Vy
cmVudAotLSMgZGl2ZXJzaW9uLiAgSXQgYWxzbyBtNF9kaXZlcnRfcHVzaCB0byBHUk9XLCB3aGVy
ZSB0aGUgZnVsbAotLSMgZXhwYW5zaW9uIG9mIFRFU1QxIGFuZCBpdHMgZGVwZW5kZW5jaWVzIHdp
bGwgYmUgZWxhYm9yYXRlZC4KLS0jICAgRFVNUDogICAgICAgIEJPRFkKLS0jICAgQk9EWTogICAg
ICAgIGVtcHR5Ci0tIyAgIGRpdmVyc2lvbnM6ICBHUk9XLCBCT0RZIHwtCi0tIwotLSMgKiBURVNU
MSByZXF1aXJlcyBURVNUMmEKLS0jIF9tNF9yZXF1aXJlX2NhbGwgbTRfZGl2ZXJ0X3B1c2hlcyBh
bm90aGVyIHRlbXBvcmFyeSBkaXZlcnNpb24sCi0tIyBHUk9XIC0gMSwgYW5kIGV4cGFuZHMgVEVT
VDJhIGluIHRoZXJlLgotLSMgICBEVU1QOiAgICAgICAgQk9EWQotLSMgICBCT0RZOiAgICAgICAg
ZW1wdHkKLS0jICAgR1JPVyAtIDE6ICAgIFRFU1QyYQotLSMgICBkaXZlcnNpb25zOiAgR1JPVyAt
IDEsIEdST1csIEJPRFkgfC0KLS0jIFRoZW4gdGhlIGNvbnRlbnQgb2YgdGhlIHRlbXBvcmFyeSBk
aXZlcnNpb24gaXMgbW92ZWQgdG8gRFVNUCBhbmQgdGhlCi0tIyB0ZW1wb3JhcnkgZGl2ZXJzaW9u
IGlzIHBvcHBlZC4KLS0jICAgRFVNUDogICAgICAgIEJPRFkKLS0jICAgQk9EWTogICAgICAgIFRF
U1QyYQotLSMgICBkaXZlcnNpb25zOiAgR1JPVywgQk9EWSB8LQotLSMKLS0jICogVEVTVDEgcmVx
dWlyZXMgVEVTVDJiCi0tIyBBZ2FpbiwgX200X3JlcXVpcmVfY2FsbCBwdXNoZXMgR1JPVyAtIDEg
YW5kIGhlYWRzIHRvIGV4cGFuZCBURVNUMmIuCi0tIyAgIERVTVA6ICAgICAgICBCT0RZCi0tIyAg
IEJPRFk6ICAgICAgICBURVNUMmEKLS0jICAgZGl2ZXJzaW9uczogIEdST1cgLSAxLCBHUk9XLCBC
T0RZIHwtCi0tIwotLSMgKiBURVNUMmIgcmVxdWlyZXMgVEVTVDMKLS0jIF9tNF9yZXF1aXJlX2Nh
bGwgcHVzaGVzIEdST1cgLSAyIGFuZCBleHBhbmRzIFRFU1QzIGhlcmUuCi0tIyAoVEVTVDMgcmVx
dWlyZXMgVEVTVDJhLCBidXQgVEVTVDJhIGhhcyBhbHJlYWR5IGJlZW4gbTRfcHJvdmlkZSdkLCBz
bwotLSMgbm90aGluZyBoYXBwZW5zLikKLS0jICAgRFVNUDogICAgICAgIEJPRFkKLS0jICAgQk9E
WTogICAgICAgIFRFU1QyYQotLSMgICBHUk9XIC0gMjogICAgVEVTVDMKLS0jICAgZGl2ZXJzaW9u
czogIEdST1cgLSAyLCBHUk9XIC0gMSwgR1JPVywgQk9EWSB8LQotLSMgVGhlbiB0aGUgZGl2ZXJz
aW9uIGlzIGFwcGVuZGVkIHRvIERVTVAsIGFuZCBwb3BwZWQuCi0tIyAgIERVTVA6ICAgICAgICBC
T0RZCi0tIyAgIEJPRFk6ICAgICAgICBURVNUMmE7IFRFU1QzCi0tIyAgIGRpdmVyc2lvbnM6ICBH
Uk9XIC0gMSwgR1JPVywgQk9EWSB8LQotLSMKLS0jICogVEVTVDEgcmVxdWlyZXMgVEVTVDJiIChj
b250ZC4pCi0tIyBUaGUgY29udGVudCBvZiBURVNUMmIgaXMgZXhwYW5kZWQuLi4KLS0jICAgRFVN
UDogICAgICAgIEJPRFkKLS0jICAgQk9EWTogICAgICAgIFRFU1QyYTsgVEVTVDMKLS0jICAgR1JP
VyAtIDE6ICAgIFRFU1QyYiwKLS0jICAgZGl2ZXJzaW9uczogIEdST1cgLSAxLCBHUk9XLCBCT0RZ
IHwtCi0tIyAuLi4gYW5kIG1vdmVkIHRvIERVTVAuCi0tIyAgIERVTVA6ICAgICAgICBCT0RZCi0t
IyAgIEJPRFk6ICAgICAgICBURVNUMmE7IFRFU1QzOyBURVNUMmIKLS0jICAgZGl2ZXJzaW9uczog
IEdST1csIEJPRFkgfC0KLS0jCi0tIyAqIFRFU1QxIGlzIGV4cGFuZGVkOiBlcGlsb2d1ZQotLSMg
VEVTVDEncyBvd24gY29udGVudCBpcyBpbiBHUk9XLi4uCi0tIyAgIERVTVA6ICAgICAgICBCT0RZ
Ci0tIyAgIEJPRFk6ICAgICAgICBURVNUMmE7IFRFU1QzOyBURVNUMmIKLS0jICAgR1JPVzogICAg
ICAgIFRFU1QxCi0tIyAgIGRpdmVyc2lvbnM6ICBCT0RZIHwtCi0tIyAuLi4gYW5kIGl0J3MgZXBp
bG9ndWUgbW92ZXMgaXQgdG8gRFVNUCBhbmQgdGhlbiB1bmRlZmluZXMgRFVNUC4KLS0jICAgRFVN
UDogICAgICAgdW5kZWZpbmVkCi0tIyAgIEJPRFk6ICAgICAgIFRFU1QyYTsgVEVTVDM7IFRFU1Qy
YjsgVEVTVDEKLS0jICAgZGl2ZXJzaW9uczogQk9EWSB8LQotLSMKLS0jCi0tIyBUaGUgdGhpcmQg
aWRlYTogdHJhY2sgbWFjcm9zIHByb3ZpZGVkIGJlZm9yZSB0aGV5IHdlcmUgcmVxdWlyZWQKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMKLS0jIFVzaW5nIGp1c3QgdGhlIGZpcnN0IHR3byBpZGVhcywgQXV0b2NvbmYg
Mi41MCB0aHJvdWdoIDIuNjMgc3RpbGwgaGFkCi0tIyBhIHN1YnRsZSBidWcgZm9yIG1vcmUgdGhh
biBzZXZlbiB5ZWFycy4gIExldCdzIGNvbnNpZGVyIHRoZQotLSMgZm9sbG93aW5nIGV4YW1wbGUg
dG8gZXhwbGFpbiB0aGUgYnVnOgotLSMKLS0jIHwgbTRfZGVmdW4oW1RFU1QxXSwgWzFdKQotLSMg
fCBtNF9kZWZ1bihbVEVTVDJdLCBbMltdbTRfcmVxdWlyZShbVEVTVDFdKV0pCi0tIyB8IG00X2Rl
ZnVuKFtURVNUM10sIFszIFRFU1QxIG00X3JlcXVpcmUoW1RFU1QyXSldKQotLSMgfCBURVNUMwot
LSMKLS0jIEFmdGVyIHRoZSBwcm9sb2d1ZSBvZiBURVNUMywgd2UgYXJlIGNvbGxlY3RpbmcgdGV4
dCBpbiBHUk9XIHdpdGggdGhlCi0tIyBpbnRlbnQgb2YgZHVtcGluZyBpdCBpbiBCT0RZIGR1cmlu
ZyB0aGUgZXBpbG9ndWUuICBOZXh0LCB3ZQotLSMgZW5jb3VudGVyIHRoZSBkaXJlY3QgaW52b2Nh
dGlvbiBvZiBURVNUMSwgd2hpY2ggcHJvdmlkZXMgdGhlIG1hY3JvCi0tIyBpbiBwbGFjZSBpbiBH
Uk9XLiAgRnJvbSB0aGVyZSwgd2UgZW5jb3VudGVyIGEgcmVxdWlyZW1lbnQgZm9yIFRFU1QyLAot
LSMgd2hpY2ggbXVzdCBiZSBjb2xsZWN0ZWQgaW4gYSBuZXcgZGl2ZXJzaW9uLiAgV2hpbGUgZXhw
YW5kaW5nIFRFU1QyLAotLSMgd2UgZW5jb3VudGVyIGEgcmVxdWlyZW1lbnQgZm9yIFRFU1QxLCBi
dXQgc2luY2UgaXQgaGFzIGFscmVhZHkgYmVlbgotLSMgZXhwYW5kZWQsIHRoZSBBeGVsIFRoaW1t
IGFsZ29yaXRobSBzdGF0ZXMgdGhhdCB3ZSBjYW4gdHJlYXQgaXQgYXMgYQotLSMgbm8tb3AuICBC
dXQgdGhhdCB3b3VsZCBsZWFkIHRvIGFuIGVuZCByZXN1bHQgb2YgYDIgMyAxJywgbWVhbmluZwot
LSMgdGhhdCB3ZSBoYXZlIG9uY2UgYWdhaW4gb3V0cHV0IGEgbWFjcm8gKFRFU1QyKSBwcmlvciB0
byBpdHMKLS0jIHJlcXVpcmVtZW50cyAoVEVTVDEpLgotLSMKLS0jIFRoZSBwcm9ibGVtIGNhbiBv
bmx5IG9jY3VyIGlmIGEgc2luZ2xlIGRlZnVuJ2QgbWFjcm8gZmlyc3QgcHJvdmlkZXMsCi0tIyB0
aGVuIGxhdGVyIGluZGlyZWN0bHkgcmVxdWlyZXMsIHRoZSBzYW1lIG1hY3JvLiAgTm90ZSB0aGF0
IGRpcmVjdGx5Ci0tIyBleHBhbmRpbmcgdGhlbiByZXF1aXJpbmcgYSBtYWNybyBpcyBva2F5OiBi
ZWNhdXNlIHRoZSBkZXBlbmRlbmN5IHdhcwotLSMgbWV0LCB0aGUgcmVxdWlyZSBwaGFzZSBjYW4g
YmUgYSBuby1vcC4gIEZvciB0aGF0IG1hdHRlciwgdGhlIG91dGVyCi0tIyBtYWNybyBjYW4gZXZl
biByZXF1aXJlIHR3byBoZWxwZXJzLCB3aGVyZSB0aGUgZmlyc3QgaGVscGVyIGV4cGFuZHMKLS0j
IHRoZSBtYWNybywgYW5kIHRoZSBzZWNvbmQgaGVscGVyIGluZGlyZWN0bHkgcmVxdWlyZXMgdGhl
IG1hY3JvLgotLSMgT3V0LW9mLW9yZGVyIGV4cGFuc2lvbiBpcyBvbmx5IHByZXNlbnQgaWYgdGhl
IGlubmVyIG1hY3JvIGlzCi0tIyByZXF1aXJlZCBieSBzb21ldGhpbmcgdGhhdCB3aWxsIGJlIGhv
aXN0ZWQgaW4gZnJvbnQgb2Ygd2hlcmUgdGhlCi0tIyBkaXJlY3QgZXhwYW5zaW9uIG9jY3VycmVk
LiAgSW4gb3RoZXIgd29yZHMsIHdlIG11c3QgYmUgY2FyZWZ1bCBub3QKLS0jIHRvIHdhcm4gb246
Ci0tIwotLSMgfCBtNF9kZWZ1bihbVEVTVDRdLCBbNF0pCi0tIyB8IG00X2RlZnVuKFtURVNUNV0s
IFs1IFRFU1Q0IG00X3JlcXVpcmUoW1RFU1Q0XSldKQotLSMgfCBURVNUNSA9PiA1IDQKLS0jCi0t
IyBvciBldmVuIHRoZSBtb3JlIGNvbXBsZXg6Ci0tIwotLSMgfCBtNF9kZWZ1bihbVEVTVDZdLCBb
Nl0pCi0tIyB8IG00X2RlZnVuKFtURVNUN10sIFs3IFRFU1Q2XSkKLS0jIHwgbTRfZGVmdW4oW1RF
U1Q4XSwgWzggbTRfcmVxdWlyZShbVEVTVDZdKV0pCi0tIyB8IG00X2RlZnVuKFtURVNUOV0sIFs5
IG00X3JlcXVpcmUoW1RFU1Q4XSldKQotLSMgfCBtNF9kZWZ1bihbVEVTVDEwXSwgWzEwIG00X3Jl
cXVpcmUoW1RFU1Q3XSkgbTRfcmVxdWlyZShbVEVTVDldKV0pCi0tIyB8IFRFU1QxMCA9PiA3IDYg
OCA5IDEwCi0tIwotLSMgU28sIHRvIGRldGVjdCB3aGV0aGVyIGEgcmVxdWlyZSB3YXMgZGlyZWN0
IG9yIGluZGlyZWN0LCBtNF9kZWZ1biBhbmQKLS0jIG00X3JlcXVpcmUgdHJhY2sgdGhlIG5hbWUg
b2YgdGhlIG1hY3JvIHRoYXQgY2F1c2VkIGEgZGl2ZXJzaW9uIHRvIGJlCi0tIyBjcmVhdGVkICh1
c2luZyB0aGUgc3RhY2sgX200X2RpdmVydGluZywgY291cGxlZCB3aXRoIGFuIE8oMSkgbG9va3Vw
Ci0tIyBfbTRfZGl2ZXJ0aW5nKFtOQU1FXSkpLCBhbmQgbTRfcHJvdmlkZSBzdG9yZXMgdGhlIG5h
bWUgYXNzb2NpYXRlZAotLSMgd2l0aCB0aGUgZGl2ZXJzaW9uIGF0IHdoaWNoIGEgbWFjcm8gd2Fz
IHByb3ZpZGVkLiAgQSByZXF1aXJlIGNhbGwgaXMKLS0jIGRpcmVjdCBpZiBpdCBvY2N1cnMgd2l0
aGluIHRoZSBzYW1lIGRpdmVyc2lvbiB3aGVyZSB0aGUgbWFjcm8gd2FzCi0tIyBwcm92aWRlZCwg
b3IgaWYgdGhlIGRpdmVyc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGluZyBjb250ZXh0
Ci0tIyBoYXMgYmVlbiBjb2xsZWN0ZWQuCi0tIwotLSMgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSB3YXJuaW5nIGludm9sdmVzIHRyYWNraW5nIHRoZSBzZXQgb2YKLS0jIG1hY3JvcyB3aGljaCBo
YXZlIGJlZW4gcHJvdmlkZWQgc2luY2UgdGhlIHN0YXJ0IG9mIHRoZSBvdXRlcm1vc3QKLS0jIGRl
ZnVuJ2QgbWFjcm8gKHRoZSBzZXQgaXMgbmFtZWQgX200X3Byb3ZpZGUpLiAgV2hlbiBzdGFydGlu
ZyBhbgotLSMgb3V0ZXJtb3N0IG1hY3JvLCB0aGUgc2V0IGlzIGVtcHRpZWQ7IHdoZW4gYSBtYWNy
byBpcyBwcm92aWRlZCwgaXQgaXMKLS0jIGFkZGVkIHRvIHRoZSBzZXQ7IHdoZW4gcmVxdWlyZSBl
eHBhbmRzIHRoZSBib2R5IG9mIGEgbWFjcm8sIGl0IGlzCi0tIyByZW1vdmVkIGZyb20gdGhlIHNl
dDsgYW5kIHdoZW4gYSBtYWNybyBpcyBpbmRpcmVjdGx5IHJlcXVpcmVkLCB0aGUKLS0jIHNldCBp
cyBjaGVja2VkLiAgSWYgYSBtYWNybyBpcyBpbiB0aGUgc2V0LCB0aGVuIGl0IGhhcyBiZWVuIHBy
b3ZpZGVkCi0tIyBiZWZvcmUgaXQgd2FzIHJlcXVpcmVkLCBhbmQgd2Ugc2F0aXNmeSBkZXBlbmRl
bmNpZXMgYnkgZXhwYW5kaW5nIHRoZQotLSMgbWFjcm8gYXMgaWYgaXQgaGFkIG5ldmVyIGJlZW4g
cHJvdmlkZWQ7IGluIHRoZSBleGFtcGxlIGdpdmVuIGFib3ZlLAotLSMgdGhpcyBtZWFucyB3ZSBu
b3cgb3V0cHV0IGAxIDIgMyAxJy4gIE1lYW53aGlsZSwgYSB3YXJuaW5nIGlzIGlzc3VlZAotLSMg
dG8gaW5mb3JtIHRoZSB1c2VyIHRoYXQgaGVyIG1hY3JvcyB0cmlnZ2VyIHRoZSBidWcgaW4gb2xk
ZXIgYXV0b2NvbmYKLS0jIHZlcnNpb25zLCBhbmQgdGhhdCBoZXIgb3V0cHV0IGZpbGUgbm93IGNv
bnRhaW5zIHJlZHVuZGFudCBjb250ZW50cwotLSMgKGFuZCBwb3NzaWJseSBuZXcgcHJvYmxlbXMs
IGlmIHRoZSByZXBlYXRlZCBtYWNybyB3YXMgbm90Ci0tIyBpZGVtcG90ZW50KS4gIE1lYW53aGls
ZSwgbWFjcm9zIGRlZmluZWQgYnkgbTRfZGVmdW5fb25jZSBpbnN0ZWFkIG9mCi0tIyBtNF9kZWZ1
biBhcmUgaWRlbXBvdGVudCwgYXZvaWRpbmcgYW55IHdhcm5pbmcgb3IgZHVwbGljYXRlIG91dHB1
dC4KLS0jCi0tIwotLSMgMi4gS2VlcGluZyB0cmFjayBvZiB0aGUgZXhwYW5zaW9uIHN0YWNrCi0t
IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0jCi0tIyBXaGVuIE00
IGV4cGFuc2lvbiBnb2VzIHdyb25nIGl0IGlzIG9mdGVuIGV4dHJlbWVseSBoYXJkIHRvIGZpbmQg
dGhlCi0tIyBwYXRoIGFtb25nc3QgbWFjcm9zIHRoYXQgZHJvdmUgdG8gdGhlIGZhaWx1cmUuICBX
aGF0IGlzIG5lZWRlZCBpcwotLSMgdGhlIHN0YWNrIG9mIG1hY3JvIGBjYWxscycuIE9uZSBjb3Vs
ZCBpbWFnaW5lIHRoYXQgR05VIE00IHdvdWxkCi0tIyBtYWludGFpbiBhIHN0YWNrIG9mIG1hY3Jv
IGV4cGFuc2lvbnMsIHVuZm9ydHVuYXRlbHkgaXQgZG9lc24ndCwgc28KLS0jIHdlIGRvIGl0IGJ5
IGhhbmQuICBUaGlzIGlzIG9mIGNvdXJzZSBleHRyZW1lbHkgY29zdGx5LCBidXQgdGhlIGhlbHAK
LS0jIHRoaXMgc3RhY2sgcHJvdmlkZXMgaXMgd29ydGggaXQuICBOZXZlcnRoZWxlc3MgdG8gbGlt
aXQgdGhlCi0tIyBwZXJmb3JtYW5jZSBwZW5hbHR5IHRoaXMgaXMgaW1wbGVtZW50ZWQgb25seSBm
b3IgbTRfZGVmdW4nZCBtYWNyb3MsCi0tIyBub3QgZm9yIGRlZmluZSdkIG1hY3Jvcy4KLS0jCi0t
IyBFYWNoIHRpbWUgd2UgZW50ZXIgYW4gbTRfZGVmdW4nZCBtYWNyb3MsIHdlIGFkZCBhIGRlZmlu
aXRpb24gaW4KLS0jIF9tNF9leHBhbnNpb25fc3RhY2ssIGFuZCB3aGVuIHdlIGV4aXQgdGhlIG1h
Y3JvLCB3ZSByZW1vdmUgaXQgKHRoYW5rcwotLSMgdG8gcHVzaGRlZi9wb3BkZWYpLiAgbTRfc3Rh
Y2tfZm9yZWFjaCBpcyB1c2VkIHRvIHByaW50IHRoZSBleHBhbnNpb24KLS0jIHN0YWNrIGluIHRo
ZSByYXJlIGNhc2VzIHdoZW4gaXQncyBuZWVkZWQuCi0tIwotLSMgSW4gYWRkaXRpb24sIHdlIHdh
bnQgdG8gZGV0ZWN0IGNpcmN1bGFyIG00X3JlcXVpcmUgZGVwZW5kZW5jaWVzLgotLSMgRWFjaCB0
aW1lIHdlIGV4cGFuZCBhIG1hY3JvIEZPTyB3ZSBkZWZpbmUgX200X2V4cGFuZGluZyhGT08pOyBh
bmQKLS0jIG00X3JlcXVpcmUoQkFSKSBzaW1wbHkgY2hlY2tzIHdoZXRoZXIgX200X2V4cGFuZGlu
ZyhCQVIpIGlzIGRlZmluZWQuCi0tCi0tCi0tIyBtNF9leHBhbnNpb25fc3RhY2sKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kcyB0byB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBl
eHBhbnNpb24gc3RhY2suICBUaGUgY2FsbGVyCi0tIyBtdXN0IHN1cHBseSBhIHRyYWlsaW5nIG5l
d2xpbmUuICBUaGlzIG1hY3JvIGFsd2F5cyBwcmludHMgYQotLSMgbG9jYXRpb247IGNoZWNrIHdo
ZXRoZXIgX200X2V4cGFuc2lvbl9zdGFjayBpcyBkZWZpbmVkIHRvIGZpbHRlciBvdXQKLS0jIHRo
ZSBjYXNlIHdoZW4gbm8gZGVmdW4nZCBtYWNybyBpcyBpbiBmb3JjZS4KLS1tNF9kZWZpbmUoW200
X2V4cGFuc2lvbl9zdGFja10sCi0tW200X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm8oW18kMF0sIFtf
JDBfZW50cnkoXSwgWykKLS1dKW00X2xvY2F0aW9uWzogdGhlIHRvcCBsZXZlbF1dKQotLQotLSMg
X200X2V4cGFuc2lvbl9zdGFja19lbnRyeShNQUNSTykKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBGb3JtYXQgYW4gZW50cnkgZm9yIE1BQ1JPIGZvdW5kIG9uIHRoZSBl
eHBhbnNpb24gc3RhY2suCi0tbTRfZGVmaW5lKFtfbTRfZXhwYW5zaW9uX3N0YWNrX2VudHJ5XSwK
LS1bX200X2RlZm4oW200X2xvY2F0aW9uKCQxKV0pWzogJDEgaXMgZXhwYW5kZWQgZnJvbS4uLl1d
KQotLQotLSMgbTRfZXhwYW5zaW9uX3N0YWNrX3B1c2goTUFDUk8pCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIEZvcm0gYW4gZW50cnkgb2YgdGhlIGV4cGFuc2lvbiBzdGFj
ayBvbiBlbnRyeSB0byBNQUNSTyBhbmQgcHVzaCBpdC4KLS1tNF9kZWZpbmUoW200X2V4cGFuc2lv
bl9zdGFja19wdXNoXSwKLS1bbTRfcHVzaGRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFskMV0p
XSkKLS0KLS0KLS0jIF9tNF9kaXZlcnQoR1JPVykKLS0jIC0tLS0tLS0tLS0tLS0tLS0KLS0jIFRo
aXMgZGl2ZXJzaW9uIGlzIHVzZWQgYnkgdGhlIG00X2RlZnVuL200X3JlcXVpcmUgbWFjaGluZXJ5
LiAgSXQgaXMKLS0jIGltcG9ydGFudCB0byBrZWVwIHJvb20gYmVmb3JlIEdST1cgYmVjYXVzZSBm
b3IgZWFjaCBuZXN0ZWQKLS0jIEFDX1JFUVVJUkUgd2UgdXNlIGFuIGFkZGl0aW9uYWwgZGl2ZXJz
aW9uIChpLmUuLCB0d28gbTRfcmVxdWlyZSdzCi0tIyB3aWxsIHVzZSBHUk9XIC0gMi4gIE1vcmUg
dGhhbiAzIGxldmVscyBoYXMgbmV2ZXIgc2VlbWVkIHRvIGJlCi0tIyBuZWVkZWQuKQotLSMKLS0j
IC4uLgotLSMgLSBHUk9XIC0gMgotLSMgICBtNF9yZXF1aXJlJ2QgY29kZSwgMiBsZXZlbCBkZWVw
Ci0tIyAtIEdST1cgLSAxCi0tIyAgIG00X3JlcXVpcmUnZCBjb2RlLCAxIGxldmVsIGRlZXAKLS0j
IC0gR1JPVwotLSMgICBtNF9kZWZ1bidkIG1hY3JvcyBhcmUgZWxhYm9yYXRlZCBoZXJlLgotLQot
LW00X2RlZmluZShbX200X2RpdmVydChHUk9XKV0sICAgICAgIDEwMDAwKQotLQotLQotLSMgX200
X2RlZnVuX3BybyhNQUNSTy1OQU1FKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
VGhlIHByb2xvZ3VlIGZvciBBdXRvY29uZiBtYWNyb3MuCi0tIwotLSMgVGhpcyBpcyBjYWxsZWQg
ZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBtYWNybyBpbnZvY2F0aW9ucwot
LSMgYnkgYXZvaWRpbmcgZG5sIGFuZCBtNF9kZWZuIG92ZXJoZWFkLgotLW00X2RlZmluZShbX200
X2RlZnVuX3Byb10sCi0tW200X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW10sIFtfbTRf
ZGVmdW5fcHJvX291dGVyKFskMV0pXSldZG5sCi0tW200X2V4cGFuc2lvbl9zdGFja19wdXNoKFsk
MV0pbTRfcHVzaGRlZihbX200X2V4cGFuZGluZygkMSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRf
ZGVmdW5fcHJvX291dGVyXSwKLS1bbTRfc2V0X2RlbGV0ZShbX200X3Byb3ZpZGVdKV1kbmwKLS1b
bTRfcHVzaGRlZihbX200X2RpdmVydGluZyhbJDFdKV0pbTRfcHVzaGRlZihbX200X2RpdmVydGlu
Z10sIFskMV0pXWRubAotLVttNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2R1bXBdLCBtNF9kaXZudW0p
bTRfZGl2ZXJ0X3B1c2goW0dST1ddKV0pCi0tCi0tIyBfbTRfZGVmdW5fZXBpKE1BQ1JPLU5BTUUp
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBUaGUgRXBpbG9ndWUgZm9yIEF1dG9j
b25mIG1hY3Jvcy4gIE1BQ1JPLU5BTUUgb25seSBoZWxwcyB0cmFjaW5nCi0tIyB0aGUgUFJPL0VQ
SSBwYWlycy4KLS0jCi0tIyBUaGlzIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0
aGUgbnVtYmVyIG9mIG1hY3JvIGludm9jYXRpb25zCi0tIyBieSBhdm9pZGluZyBkbmwgYW5kIG00
X3BvcGRlZiBvdmVyaGVhZC4KLS1tNF9kZWZpbmUoW19tNF9kZWZ1bl9lcGldLAotLVtfbTRfcG9w
ZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0sIFtfbTRfZXhwYW5zaW9uX3N0YWNrXSldZG5sCi0tW200
X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW10sIFtfbTRfZGVmdW5fZXBpX291dGVyKFsk
MV0pXSldZG5sCi0tW200X3Byb3ZpZGUoWyQxXSldKQotLQotLW00X2RlZmluZShbX200X2RlZnVu
X2VwaV9vdXRlcl0sCi0tW19tNF9wb3BkZWYoW19tNF9kaXZlcnRfZHVtcF0sIFtfbTRfZGl2ZXJ0
aW5nKFskMV0pXSwgW19tNF9kaXZlcnRpbmddKV1kbmwKLS1bbTRfZGl2ZXJ0X3BvcChbR1JPV10p
bTRfdW5kaXZlcnQoW0dST1ddKV0pCi0tCi0tCi0tIyBfbTRfZGl2ZXJ0X2R1bXAKLS0jIC0tLS0t
LS0tLS0tLS0tLQotLSMgSWYgYmxhbmssIHdlIGFyZSBvdXRzaWRlIG9mIGFueSBkZWZ1bidkIG1h
Y3JvLiAgT3RoZXJ3aXNlLCBleHBhbmRzCi0tIyB0byB0aGUgZGl2ZXJzaW9uIG51bWJlciAobm90
IG5hbWUpIHdoZXJlIHJlcXVpcmUnZCBtYWNyb3Mgc2hvdWxkIGJlCi0tIyBtb3ZlZCBvbmNlIGNv
bXBsZXRlZC4KLS1tNF9kZWZpbmUoW19tNF9kaXZlcnRfZHVtcF0pCi0tCi0tCi0tIyBtNF9kaXZl
cnRfcmVxdWlyZShESVZFUlNJT04sIE5BTUUtVE8tQ0hFQ0ssIFtCT0RZLVRPLUVYUEFORF0pCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBTYW1lIGFzIG00X3JlcXVpcmUsIGJ1dCBCT0RZLVRPLUVYUEFORCBnb2VzIGlu
dG8gdGhlIG5hbWVkIERJVkVSU0lPTjsKLS0jIHJlcXVpcmVtZW50cyBzdGlsbCBnbyBpbiB0aGUg
Y3VycmVudCBkaXZlcnNpb24gdGhvdWdoLgotLSMKLS1tNF9kZWZpbmUoW200X2RpdmVydF9yZXF1
aXJlXSwKLS1bbTRfaWZkZWYoW19tNF9leHBhbmRpbmcoJDIpXSwKLS0gIFttNF9mYXRhbChbJDA6
IGNpcmN1bGFyIGRlcGVuZGVuY3kgb2YgJDJdKV0pXWRubAotLVttNF9pZihfbTRfZGl2ZXJ0X2R1
bXAsIFtdLAotLSAgW200X2ZhdGFsKFskMCgkMik6IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2Yg
YW4gbTRfZGVmdW4nZCBtYWNyb10pXSldZG5sCi0tW200X3Byb3ZpZGVfaWYoWyQyXSwgW10sCi0t
ICBbX200X3JlcXVpcmVfY2FsbChbJDJdLCBbJDNdLCBfbTRfZGl2ZXJ0KFskMV0sIFstXSkpXSld
KQotLQotLQotLSMgbTRfZGVmdW4oTkFNRSwgRVhQQU5TSU9OLCBbTUFDUk8gPSBtNF9kZWZpbmVd
KQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
RGVmaW5lIGEgbWFjcm8gTkFNRSB3aGljaCBhdXRvbWF0aWNhbGx5IHByb3ZpZGVzIGl0c2VsZi4g
IEFkZAotLSMgbWFjaGluZXJ5IHNvIHRoZSBtYWNybyBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzIGV4
cGFuc2lvbiB0byB0aGUKLS0jIGRpdmVyc2lvbiBzdGFjayBpZiBpdCBpcyBub3QgYWxyZWFkeSB1
c2luZyBpdCwgcHJpb3IgdG8gRVhQQU5TSU9OLgotLSMgSW4gdGhpcyBjYXNlLCBvbmNlIGZpbmlz
aGVkLCBpdCB3aWxsIGJyaW5nIGJhY2sgYWxsIHRoZSBjb2RlCi0tIyBhY2N1bXVsYXRlZCBpbiB0
aGUgZGl2ZXJzaW9uIHN0YWNrLiAgVGhpcywgY29tYmluZWQgd2l0aCBtNF9yZXF1aXJlLAotLSMg
YWNoaWV2ZXMgdGhlIHRvcG9sb2dpY2FsIG9yZGVyaW5nIG9mIG1hY3Jvcy4gIFdlIGRvbid0IHVz
ZSB0aGlzCi0tIyBtYWNybyB0byBkZWZpbmUgc29tZSBmcmVxdWVudGx5IGNhbGxlZCBtYWNyb3Mg
dGhhdCBhcmUgbm90IGludm9sdmVkCi0tIyBpbiBvcmRlcmluZyBjb25zdHJhaW50cywgdG8gc2F2
ZSBtNCBwcm9jZXNzaW5nLgotLSMKLS0jIE1BQ1JPIGlzIGFuIHVuZG9jdW1lbnRlZCBhcmd1bWVu
dDsgd2hlbiBzZXQgdG8gbTRfcHVzaGRlZiwgYW5kIE5BTUUKLS0jIGlzIGFscmVhZHkgZGVmaW5l
ZCwgdGhlIG5ldyBkZWZpbml0aW9uIGlzIGFkZGVkIHRvIHRoZSBwdXNoZGVmCi0tIyBzdGFjaywg
cmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgZGVmaW5pdGlvbi4gIEl0IGNhbiB0
aHVzCi0tIyBiZSB1c2VkIHRvIHdyaXRlIHNlbGYtbW9kaWZ5aW5nIG1hY3Jvcywgd2hpY2ggcG9w
IHRoZW1zZWx2ZXMgdG8gYQotLSMgcHJldmlvdXNseSBtNF9kZWZpbmUnZCBkZWZpbml0aW9uIHNv
IHRoYXQgc3Vic2VxdWVudCB1c2Ugb2YgdGhlCi0tIyBtYWNybyBpcyBmYXN0ZXIuCi0tbTRfZGVm
aW5lKFttNF9kZWZ1bl0sCi0tW200X2RlZmluZShbbTRfbG9jYXRpb24oJDEpXSwgbTRfbG9jYXRp
b24pXWRubAotLVttNF9kZWZhdWx0KFskM10sIFttNF9kZWZpbmVdKShbJDFdLAotLSAgW19tNF9k
ZWZ1bl9wcm8oXW00X2RxdW90ZSgkWzBdKVspJDJbXV9tNF9kZWZ1bl9lcGkoXW00X2RxdW90ZSgk
WzBdKVspXSldKQotLQotLQotLSMgbTRfZGVmdW5faW5pdChOQU1FLCBJTklULCBDT01NT04pCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgbTRfZGVmdW4sIGJ1
dCBzcGxpdCBFWFBBTlNJT04gaW50byB0d28gcG9ydGlvbnM6IElOSVQgd2hpY2ggaXMKLS0jIGRv
bmUgb25seSB0aGUgZmlyc3QgdGltZSBOQU1FIGlzIGludm9rZWQsIGFuZCBDT01NT04gd2hpY2gg
aXMKLS0jIGV4cGFuZGVkIGV2ZXJ5IHRpbWUuCi0tIwotLSMgRm9yIG5vdywgdGhlIENPTU1PTiBk
ZWZpbml0aW9uIGlzIGFsd2F5cyBtNF9kZWZpbmUnZCwgZ2l2aW5nIGFuIGV2ZW4KLS0jIGxpZ2h0
ZXItd2VpZ2h0IGRlZmluaXRpb24uICBtNF9kZWZ1biBhbGxvd3Mgc2VsZi1wcm92aWRpbmcsIGJ1
dCBvbmNlCi0tIyBhIG1hY3JvIGlzIHByb3ZpZGVkLCBtNF9yZXF1aXJlIG5vIGxvbmdlciBjYXJl
cyBpZiBpdCBpcyBtNF9kZWZpbmUnZAotLSMgb3IgbTRfZGVmdW4nZC4gIG00X2RlZnVuIGFsc28g
cHJvdmlkZXMgbG9jYXRpb24gdHJhY2tpbmcgdG8gaWRlbnRpZnkKLS0jIGRlcGVuZGVuY3kgYnVn
cywgYnV0IG9uY2UgdGhlIElOSVQgaGFzIGJlZW4gZXhwYW5kZWQsIHdlIGtub3cgdGhlcmUKLS0j
IGFyZSBubyBkZXBlbmRlbmN5IGJ1Z3MuICBIb3dldmVyLCBpZiBhIGZ1dHVyZSB1c2UgbmVlZHMg
Q09NTU9OIHRvIGJlCi0tIyBtNF9kZWZ1bidkLCB3ZSBjYW4gYWRkIGEgcGFyYW1ldGVyLCBzaW1p
bGFyIHRvIHRoZSB0aGlyZCBwYXJhbWV0ZXIKLS0jIHRvIG00X2RlZnVuLgotLW00X2RlZmluZShb
bTRfZGVmdW5faW5pdF0sCi0tW200X2RlZmluZShbJDFdLCBbJDNbXV0pbTRfZGVmdW4oWyQxXSwK
LS0gICBbJDJbXV9tNF9wb3BkZWYoXW00X2RxdW90ZSgkWzBdKVspbTRfaW5kaXIoXW00X2RxdW90
ZSgkWzBdKWRubAotLVttNF9pZihdbTRfZHF1b3RlKCRbI10pWywgWzBdLCBbXSwgXW00X2RxdW90
ZShbLCRdQClbKSldLCBbbTRfcHVzaGRlZl0pXSkKLS0KLS0KLS0jIG00X2RlZnVuX29uY2UoTkFN
RSwgRVhQQU5TSU9OKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBMaWtl
IG00X2RlZnVuLCBidXQgZ3VhcmFudGVlIHRoYXQgRVhQQU5TSU9OIG9ubHkgaGFwcGVucyBvbmNl
Ci0tIyAodGhlcmVhZnRlciwgdXNpbmcgTkFNRSBpcyBhIG5vLW9wKS4KLS0jCi0tIyBJZiBfbTRf
ZGl2ZXJ0X2R1bXAgaXMgZW1wdHksIHdlIGFyZSBjYWxsZWQgYXQgdGhlIHRvcCBsZXZlbDsKLS0j
IG90aGVyd2lzZSwgd2UgbXVzdCBlbnN1cmUgdGhhdCB3ZSBhcmUgcmVxdWlyZWQgaW4gZnJvbnQg
b2YgdGhlCi0tIyBjdXJyZW50IGRlZnVuJ2QgbWFjcm8uICBVc2UgYSBoZWxwZXIgbWFjcm8gc28g
dGhhdCBFWFBBTlNJT04gbmVlZAotLSMgb25seSBvY2N1ciBvbmNlIGluIHRoZSBkZWZpbml0aW9u
IG9mIE5BTUUsIHNpbmNlIGl0IG1pZ2h0IGJlIGxhcmdlLgotLW00X2RlZmluZShbbTRfZGVmdW5f
b25jZV0sCi0tW200X2RlZmluZShbbTRfbG9jYXRpb24oJDEpXSwgbTRfbG9jYXRpb24pXWRubAot
LVttNF9kZWZpbmUoWyQxXSwgW19tNF9kZWZ1bl9vbmNlKFskMV0sIFskMl0sIG00X2lmKF9tNF9k
aXZlcnRfZHVtcCwgW10sCi0tICBbW19tNF9kZWZ1bl9wcm8oWyQxXSltNF91bnF1b3RlKF0sIFsp
X200X2RlZnVuX2VwaShbJDFdKV1dLAotLW00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwg
Wy1dKSwgWy1dLCBbW200X3VucXVvdGUoXSwgWyldXSwKLS0gIFtbX200X3JlcXVpcmVfY2FsbChb
JDFdLF0sIFssIF9tNF9kaXZlcnRfZHVtcCldXSkpXSldKQotLQotLW00X2RlZmluZShbX200X2Rl
ZnVuX29uY2VdLAotLVttNF9wdXNoZGVmKFskMV0pJDNbJDJbXW00X3Byb3ZpZGUoWyQxXSldJDRd
KQotLQotLQotLSMgbTRfcGF0dGVybl9mb3JiaWQoRVJFLCBbV0hZXSkKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWNsYXJlIHRoYXQgbm8gdG9rZW4gbWF0Y2hpbmcgdGhl
IGZvcmJpZGRlbiBwZXJsIGV4dGVuZGVkIHJlZ3VsYXIKLS0jIGV4cHJlc3Npb24gRVJFIHNob3Vs
ZCBiZSBzZWVuIGluIHRoZSBvdXRwdXQgdW5sZXNzLi4uCi0tbTRfZGVmaW5lKFttNF9wYXR0ZXJu
X2ZvcmJpZF0sIFtdKQotLQotLQotLSMgbTRfcGF0dGVybl9hbGxvdyhFUkUpCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS0jIC4uLiB0aGF0IHRva2VuIGFsc28gbWF0Y2hlcyB0aGUgYWxsb3dl
ZCBleHRlbmRlZCByZWd1bGFyIGV4cHJlc3Npb24gRVJFLgotLSMgQm90aCB1c2VkIHZpYSB0cmFj
ZXMsIGJ5IGF1dG9tNHRlIHBvc3QtcHJvY2Vzc2luZy4KLS1tNF9kZWZpbmUoW200X3BhdHRlcm5f
YWxsb3ddLCBbXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IyMKLS0jIyAxMS4gRGVwZW5kZW5jaWVzIGJldHdlZW4gbWFjcm9zLiAgIyMKLS0jIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIG00X2JlZm9yZShUSElTLU1B
Q1JPLU5BTUUsIENBTExFRC1NQUNSTy1OQU1FKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJc3N1ZSBhIHdhcm5pbmcgaWYgQ0FMTEVELU1BQ1JP
LU5BTUUgd2FzIGNhbGxlZCBiZWZvcmUgVEhJUy1NQUNSTy1OQU1FLgotLW00X2RlZmluZShbbTRf
YmVmb3JlXSwKLS1bbTRfcHJvdmlkZV9pZihbJDJdLAotLQkgICAgICAgW200X3dhcm4oW3N5bnRh
eF0sIFskMiB3YXMgY2FsbGVkIGJlZm9yZSAkMV0pXSldKQotLQotLQotLSMgbTRfcmVxdWlyZShO
QU1FLVRPLUNIRUNLLCBbQk9EWS1UTy1FWFBBTkQgPSBOQU1FLVRPLUNIRUNLXSkKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBJZiBOQU1FLVRPLUNIRUNLIGhhcyBuZXZlciBiZWVuIGV4cGFuZGVkIChhY3R1YWxseSwgaWYg
aXQgaXMgbm90Ci0tIyBtNF9wcm92aWRlJ2QpLCBleHBhbmQgQk9EWS1UTy1FWFBBTkQgKmJlZm9y
ZSogdGhlIGN1cnJlbnQgbWFjcm8KLS0jIGV4cGFuc2lvbjsgZm9sbG93IHRoZSBleHBhbnNpb24g
d2l0aCBhIG5ld2xpbmUuICBPbmNlIGV4cGFuZGVkLCBlbWl0Ci0tIyBpdCBpbiBfbTRfZGl2ZXJ0
X2R1bXAuICBLZWVwIHRyYWNrIG9mIHRoZSBtNF9yZXF1aXJlIGNoYWluIGluCi0tIyBfbTRfZXhw
YW5zaW9uX3N0YWNrLgotLSMKLS0jIFRoZSBub3JtYWwgY2FzZXMgYXJlOgotLSMKLS0jIC0gTkFN
RS1UTy1DSEVDSyA9PSBCT0RZLVRPLUVYUEFORAotLSMgICBXaGljaCB5b3UgY2FuIHVzZSBmb3Ig
cmVndWxhciBtYWNyb3Mgd2l0aCBvciB3aXRob3V0IGFyZ3VtZW50cywgZS5nLiwKLS0jICAgICBt
NF9yZXF1aXJlKFtBQ19QUk9HX0NDXSwgW0FDX1BST0dfQ0NdKQotLSMgICAgIG00X3JlcXVpcmUo
W0FDX0NIRUNLX0hFQURFUlModGhyZWFkcy5oKV0sIFtBQ19DSEVDS19IRUFERVJTKHRocmVhZHMu
aCldKQotLSMgICB3aGljaCBpcyBqdXN0IHRoZSBzYW1lIGFzCi0tIyAgICAgbTRfcmVxdWlyZShb
QUNfUFJPR19DQ10pCi0tIyAgICAgbTRfcmVxdWlyZShbQUNfQ0hFQ0tfSEVBREVSUyh0aHJlYWRz
LmgpXSkKLS0jCi0tIyAtIEJPRFktVE8tRVhQQU5EID09IG00X2luZGlyKFtOQU1FLVRPLUNIRUNL
XSkKLS0jICAgSW4gdGhlIGNhc2Ugb2YgbWFjcm9zIHdpdGggaXJyZWd1bGFyIG5hbWVzLiAgRm9y
IGluc3RhbmNlOgotLSMgICAgIG00X3JlcXVpcmUoW0FDX0xBTkdfQ09NUElMRVIoQyldLCBbaW5k
aXIoW0FDX0xBTkdfQ09NUElMRVIoQyldKV0pCi0tIyAgIHdoaWNoIG1lYW5zIGBpZiB0aGUgbWFj
cm8gbmFtZWQgYEFDX0xBTkdfQ09NUElMRVIoQyknICh0aGUgcGFyZW5zIGFyZQotLSMgICBwYXJ0
IG9mIHRoZSBuYW1lLCBpdCBpcyBub3QgYW4gYXJndW1lbnQpIGhhcyBub3QgYmVlbiBydW4sIHRo
ZW4KLS0jICAgY2FsbCBpdC4nCi0tIyAgIEhhZCB5b3UgdXNlZAotLSMgICAgIG00X3JlcXVpcmUo
W0FDX0xBTkdfQ09NUElMRVIoQyldLCBbQUNfTEFOR19DT01QSUxFUihDKV0pCi0tIyAgIHRoZW4g
bTRfcmVxdWlyZSB3b3VsZCBoYXZlIHRyaWVkIHRvIGV4cGFuZCBgQUNfTEFOR19DT01QSUxFUihD
KScsIGkuZS4sCi0tIyAgIGNhbGwgdGhlIG1hY3JvIGBBQ19MQU5HX0NPTVBJTEVSJyB3aXRoIGBD
JyBhcyBhcmd1bWVudC4KLS0jCi0tIyAgIFlvdSBjb3VsZCBhcmd1ZSB0aGF0IGBBQ19MQU5HX0NP
TVBJTEVSJywgd2hlbiBpdCByZWNlaXZlcyBhbiBhcmd1bWVudAotLSMgICBzdWNoIGFzIGBDJyBz
aG91bGQgZGlzcGF0Y2ggdGhlIGNhbGwgdG8gYEFDX0xBTkdfQ09NUElMRVIoQyknLiAgQnV0IHRo
aXMKLS0jICAgYGV4dGVuc2lvbicgcHJldmVudHMgYEFDX0xBTkdfQ09NUElMRVInIGZyb20gaGF2
aW5nIGFjdHVhbCBhcmd1bWVudHMgdGhhdAotLSMgICBpdCBwYXNzZXMgdG8gYEFDX0xBTkdfQ09N
UElMRVIoQyknLgotLSMKLS0jIFRoaXMgaXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIG1pbmltaXpl
IHRoZSBudW1iZXIgb2YgbWFjcm8gaW52b2NhdGlvbnMKLS0jIGJ5IGF2b2lkaW5nIGRubCBhbmQg
b3RoZXIgb3ZlcmhlYWQgb24gdGhlIGNvbW1vbiBwYXRoLgotLW00X2RlZmluZShbbTRfcmVxdWly
ZV0sCi0tW200X2lmZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0sCi0tICBbbTRfZmF0YWwoWyQwOiBj
aXJjdWxhciBkZXBlbmRlbmN5IG9mICQxXSldKV1kbmwKLS1bbTRfaWYoX200X2RpdmVydF9kdW1w
LCBbXSwKLS0gIFttNF9mYXRhbChbJDAoJDEpOiBjYW5ub3QgYmUgdXNlZCBvdXRzaWRlIG9mIGFu
IF1kbmwKLS1tNF9pZihbJDBdLCBbbTRfcmVxdWlyZV0sIFtbbTRfZGVmdW5dXSwgW1tBQ19ERUZV
Tl1dKVsnZCBtYWNyb10pXSldZG5sCi0tW200X3Byb3ZpZGVfaWYoWyQxXSwgW200X3NldF9jb250
YWlucyhbX200X3Byb3ZpZGVdLCBbJDFdLAotLSAgICBbX200X3JlcXVpcmVfY2hlY2soWyQxXSwg
X200X2RlZm4oW200X3Byb3ZpZGUoJDEpXSksIFskMF0pXSwgW200X2lnbm9yZV0pXSwKLS0gIFtf
bTRfcmVxdWlyZV9jYWxsXSkoWyQxXSwgWyQyXSwgX200X2RpdmVydF9kdW1wKV0pCi0tCi0tCi0t
IyBfbTRfcmVxdWlyZV9jYWxsKE5BTUUtVE8tQ0hFQ0ssIFtCT0RZLVRPLUVYUEFORCA9IE5BTUUt
VE8tQ0hFQ0tdLAotLSMgICAgICAgICAgICAgICAgICBESVZFUlNJT04tTlVNQkVSKQotLSMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIElmIG00X3JlcXVpcmUgZGVjaWRlcyB0byBleHBhbmQgdGhlIGJvZHksIGl0IGNh
bGxzIHRoaXMgbWFjcm8uICBUaGUKLS0jIGV4cGFuc2lvbiBpcyBwbGFjZWQgaW4gRElWRVJTSU9O
LU5VTUJFUi4KLS0jCi0tIyBUaGlzIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0
aGUgbnVtYmVyIG9mIG1hY3JvIGludm9jYXRpb25zCi0tIyBieSBhdm9pZGluZyBkbmwgYW5kIG90
aGVyIG92ZXJoZWFkIG9uIHRoZSBjb21tb24gcGF0aC4KLS0jIFRoZSB1c2Ugb2YgYSB3aXRuZXNz
IG1hY3JvIHByb3RlY3RpbmcgdGhlIHdhcm5pbmcgYWxsb3dzIGFjbG9jYWwKLS0jIHRvIHNpbGVu
Y2UgYW55IHdhcm5pbmdzIHdoZW4gcHJvYmluZyBmb3Igd2hhdCBtYWNyb3MgYXJlIHJlcXVpcmVk
Ci0tIyBhbmQgbXVzdCB0aGVyZWZvcmUgYmUgbG9jYXRlZCwgd2hlbiB1c2luZyB0aGUgQXV0b2Nv
bmYtd2l0aG91dC1hY2xvY2FsLW00Ci0tIyBhdXRvbTR0ZSBsYW5ndWFnZS4gIEZvciBtb3JlIGJh
Y2tncm91bmQsIHNlZToKLS0jIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYXV0
b21ha2UtcGF0Y2hlcy8yMDEyLTExL21zZzAwMDM1Lmh0bWwKLS1tNF9kZWZpbmUoW19tNF9yZXF1
aXJlX2NhbGxdLAotLVttNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0X2dyb3ddLCBtNF9kZWNyKF9tNF9k
aXZlcnRfZ3JvdykpXWRubAotLVttNF9wdXNoZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSltNF9w
dXNoZGVmKFtfbTRfZGl2ZXJ0aW5nXSwgWyQxXSldZG5sCi0tW200X2RpdmVydF9wdXNoKF9tNF9k
aXZlcnRfZ3JvdywgWy1dKV1kbmwKLS1bbTRfaWYoWyQyXSwgW10sIFskMV0sIFskMl0pCi0tbTRf
cHJvdmlkZV9pZihbJDFdLCBbbTRfc2V0X3JlbW92ZShbX200X3Byb3ZpZGVdLCBbJDFdKV0sCi0t
ICBbbTRfaWZuZGVmKFttNF9yZXF1aXJlX3NpbGVudF9wcm9iZV0sCi0tICAgIFttNF93YXJuKFtz
eW50YXhdLCBbJDEgaXMgbTRfcmVxdWlyZSdkIGJ1dCBub3QgbTRfZGVmdW4nZF0pXSldKV1kbmwK
LS1bX200X2RpdmVydF9yYXcoJDMpX200X3VuZGl2ZXJ0KF9tNF9kaXZlcnRfZ3JvdyldZG5sCi0t
W200X2RpdmVydF9wb3AoX200X2RpdmVydF9ncm93KV9tNF9wb3BkZWYoW19tNF9kaXZlcnRfZ3Jv
d10sCi0tW19tNF9kaXZlcnRpbmcoWyQxXSldLCBbX200X2RpdmVydGluZ10pXSkKLS0KLS0KLS0j
IF9tNF9yZXF1aXJlX2NoZWNrKE5BTUUtVE8tQ0hFQ0ssIE9XTkVSLCBDQUxMRVIpCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTkFNRS1UTy1D
SEVDSyBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIHByZXZpb3VzbHkgZXhwYW5kZWQgaW4gdGhlCi0t
IyBkaXZlcnNpb24gb3duZWQgYnkgT1dORVIuICBJZiB0aGlzIGlzIGEgcHJvYmxlbSwgd2FybiBv
biBiZWhhbGYgb2YKLS0jIENBTExFUiBhbmQgcmV0dXJuIF9tNF9yZXF1aXJlX2NhbGw7IG90aGVy
d2lzZSByZXR1cm4gbTRfaWdub3JlLgotLW00X2RlZmluZShbX200X3JlcXVpcmVfY2hlY2tdLAot
LVttNF9pZihfbTRfZGVmbihbX200X2RpdmVydGluZ10pLCBbJDJdLCBbbTRfaWdub3JlXSwKLS0g
ICAgICAgbTRfaWZkZWYoW19tNF9kaXZlcnRpbmcoWyQyXSldLCBbLV0pLCBbLV0sIFttNF93YXJu
KFtzeW50YXhdLAotLSAgIFskMzogYCQxJyB3YXMgZXhwYW5kZWQgYmVmb3JlIGl0IHdhcyByZXF1
aXJlZAotLWh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYvbWFudWFsL2F1dG9j
b25mLmh0bWwjRXhwYW5kZWQtQmVmb3JlLVJlcXVpcmVkXSlfbTRfcmVxdWlyZV9jYWxsXSwKLS0g
ICAgICAgW200X2lnbm9yZV0pXSkKLS0KLS0KLS0jIF9tNF9kaXZlcnRfZ3JvdwotLSMgLS0tLS0t
LS0tLS0tLS0tCi0tIyBUaGUgY291bnRlciBmb3IgX200X3JlcXVpcmVfY2FsbC4KLS1tNF9kZWZp
bmUoW19tNF9kaXZlcnRfZ3Jvd10sIF9tNF9kaXZlcnQoW0dST1ddKSkKLS0KLS0KLS0jIG00X2V4
cGFuZF9vbmNlKFRFWFQsIFtXSVRORVNTID0gVEVYVF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYgVEVYVCBoYXMgbmV2ZXIgYmVlbiBleHBhbmRlZCwg
ZXhwYW5kIGl0ICpoZXJlKi4gIFVzZSBXSVRORVNTIGFzCi0tIyBhcyBhIG1lbW9yeSB0aGF0IFRF
WFQgaGFzIGFscmVhZHkgYmVlbiBleHBhbmRlZC4KLS1tNF9kZWZpbmUoW200X2V4cGFuZF9vbmNl
XSwKLS1bbTRfcHJvdmlkZV9pZihtNF9kZWZhdWx0X3F1b3RlZChbJDJdLCBbJDFdKSwKLS0JICAg
ICAgIFtdLAotLQkgICAgICAgW200X3Byb3ZpZGUobTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWyQx
XSkpW10kMV0pXSkKLS0KLS0KLS0jIG00X3Byb3ZpZGUoTUFDUk8tTkFNRSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW200X3Byb3ZpZGVdLAotLVttNF9pZmRlZihbbTRf
cHJvdmlkZSgkMSldLCBbXSwKLS1bbTRfc2V0X2FkZChbX200X3Byb3ZpZGVdLCBbJDFdLCBbbTRf
ZGVmaW5lKFttNF9wcm92aWRlKCQxKV0sCi0tICBtNF9pZmRlZihbX200X2RpdmVydGluZ10sIFtf
bTRfZGVmbihbX200X2RpdmVydGluZ10pXSkpXSldKV0pCi0tCi0tCi0tIyBtNF9wcm92aWRlX2lm
KE1BQ1JPLU5BTUUsIElGLVBST1ZJREVELCBJRi1OT1QtUFJPVklERUQpCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiBNQUNS
Ty1OQU1FIGlzIHByb3ZpZGVkIGRvIElGLVBST1ZJREVELCBlbHNlIElGLU5PVC1QUk9WSURFRC4K
LS0jIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWFjcm8gaXMgdG8gcHJvdmlkZSB0aGUgdXNlciB3aXRo
IGEgbWVhbnMgdG8KLS0jIGNoZWNrIG1hY3JvcyB3aGljaCBhcmUgcHJvdmlkZWQgd2l0aG91dCBs
ZXR0aW5nIGhlciBrbm93IGhvdyB0aGUKLS0jIGluZm9ybWF0aW9uIGlzIGNvZGVkLgotLW00X2Rl
ZmluZShbbTRfcHJvdmlkZV9pZl0sCi0tW200X2lmZGVmKFttNF9wcm92aWRlKCQxKV0sCi0tCSAg
WyQyXSwgWyQzXSldKQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIDEy
LiBUZXh0IHByb2Nlc3NpbmcuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQot
LQotLSMgbTRfY3JfbGV0dGVycwotLSMgbTRfY3JfTEVUVEVSUwotLSMgbTRfY3JfTGV0dGVycwot
LSMgLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbbTRfY3JfbGV0dGVyc10sIFthYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5el0pCi0tbTRfZGVmaW5lKFttNF9jcl9MRVRURVJTXSwgW0FCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaXSkKLS1tNF9kZWZpbmUoW200X2NyX0xldHRlcnNdLAotLW00X2Rl
Zm4oW200X2NyX2xldHRlcnNdKWRubAotLW00X2RlZm4oW200X2NyX0xFVFRFUlNdKWRubAotLSkK
LS0KLS0KLS0jIG00X2NyX2RpZ2l0cwotLSMgLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFttNF9j
cl9kaWdpdHNdLCBbMDEyMzQ1Njc4OV0pCi0tCi0tCi0tIyBtNF9jcl9hbG51bQotLSMgLS0tLS0t
LS0tLS0KLS1tNF9kZWZpbmUoW200X2NyX2FsbnVtXSwKLS1tNF9kZWZuKFttNF9jcl9MZXR0ZXJz
XSlkbmwKLS1tNF9kZWZuKFttNF9jcl9kaWdpdHNdKWRubAotLSkKLS0KLS0KLS0jIG00X2NyX3N5
bWJvbHMxCi0tIyBtNF9jcl9zeW1ib2xzMgotLSMgLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUo
W200X2NyX3N5bWJvbHMxXSwKLS1tNF9kZWZuKFttNF9jcl9MZXR0ZXJzXSlkbmwKLS1fKQotLQot
LW00X2RlZmluZShbbTRfY3Jfc3ltYm9sczJdLAotLW00X2RlZm4oW200X2NyX3N5bWJvbHMxXSlk
bmwKLS1tNF9kZWZuKFttNF9jcl9kaWdpdHNdKWRubAotLSkKLS0KLS0jIG00X2NyX2FsbAotLSMg
LS0tLS0tLS0tCi0tIyBUaGUgY2hhcmFjdGVyIHJhbmdlIHJlcHJlc2VudGluZyBldmVyeXRoaW5n
LCB3aXRoIGAtJyBhcyB0aGUgbGFzdAotLSMgY2hhcmFjdGVyLCBzaW5jZSBpdCBpcyBzcGVjaWFs
IHRvIG00X3RyYW5zbGl0LiAgVXNlIHdpdGggY2FyZSwgYmVjYXVzZQotLSMgaXQgY29udGFpbnMg
Y2hhcmFjdGVycyBzcGVjaWFsIHRvIE00IChmb3J0dW5hdGVseSwgYm90aCBBU0NJSSBhbmQgRUJD
RElDCi0tIyBoYXZlIFtdIGluIG9yZGVyLCBzbyBtNF9kZWZuKFttNF9jcl9hbGxdKSByZW1haW5z
IGEgdmFsaWQgc3RyaW5nKS4gIEl0Ci0tIyBhbHNvIGNvbnRhaW5zIGNoYXJhY3RlcnMgc3BlY2lh
bCB0byB0ZXJtaW5hbHMsIHNvIGl0IHNob3VsZCBuZXZlciBiZQotLSMgZGlzcGxheWVkIGluIGFu
IGVycm9yIG1lc3NhZ2UuICBBbHNvLCBhdHRlbXB0cyB0byBtYXAgWyBhbmQgXSB0byBvdGhlcgot
LSMgY2hhcmFjdGVycyB2aWEgbTRfdHJhbnNsaXQgbXVzdCBkZWFsIHdpdGggdGhlIGZhY3QgdGhh
dCBtNF90cmFuc2xpdCBkb2VzCi0tIyBub3QgYWRkIHF1b3RlcyB0byB0aGUgb3V0cHV0LgotLSMK
LS0jIEluIEVCQ0RJQywgJCBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSAqLCB3aGljaCBsZWFk
cyB0byBwcm9ibGVtcwotLSMgaWYgbTRfY3JfYWxsIGlzIGlubGluZWQgaW50byBhIG1hY3JvIGRl
ZmluaXRpb247IHNvIHN3YXAgdGhlbS4KLS0jCi0tIyBJdCBpcyBtYWlubHkgdXNlZnVsIGluIGdl
bmVyYXRpbmcgaW52ZXJ0ZWQgY2hhcmFjdGVyIHJhbmdlIG1hcHMsIGZvciB1c2UKLS0jIGluIHBs
YWNlcyB3aGVyZSBtNF90cmFuc2xpdCBpcyBmYXN0ZXIgdGhhbiBhbiBlcXVpdmFsZW50IG00X2Jw
YXRzdWJzdDsKLS0jIHRoZSByZWdleCBgW15hLXpdJyBpcyBlcXVpdmFsZW50IHRvOgotLSMgIG00
X3RyYW5zbGl0KG00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9hbGxdKSksIFthLXpdKQotLW00X2Rl
ZmluZShbbTRfY3JfYWxsXSwKLS1tNF90cmFuc2xpdChtNF9kcXVvdGUobTRfZm9ybWF0KG00X2Rx
dW90ZShtNF9mb3IoCi0tICAsMSwyNTUsLFtbJWNdXSkpbTRfZm9yKFtpXSwxLDI1NSwsWyxpXSkp
KSwgWyQqLV0sIFsqJF0pLSkKLS0KLS0KLS0jIF9tNF9kZWZpbmVfY3Jfbm90KENBVEVHT1JZKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWZpbmUgbTRfY3Jfbm90X0NBVEVH
T1JZIGFzIHRoZSBpbnZlcnNlIG9mIG00X2NyX0NBVEVHT1JZLgotLW00X2RlZmluZShbX200X2Rl
ZmluZV9jcl9ub3RdLAotLVttNF9kZWZpbmUoW200X2NyX25vdF8kMV0sCi0tCSAgIG00X3RyYW5z
bGl0KG00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9hbGxdKSksCi0tCQkgICAgICAgbTRfZGVmbihb
bTRfY3JfJDFdKSkpXSkKLS0KLS0KLS0jIG00X2NyX25vdF9sZXR0ZXJzCi0tIyBtNF9jcl9ub3Rf
TEVUVEVSUwotLSMgbTRfY3Jfbm90X0xldHRlcnMKLS0jIG00X2NyX25vdF9kaWdpdHMKLS0jIG00
X2NyX25vdF9hbG51bQotLSMgbTRfY3Jfbm90X3N5bWJvbHMxCi0tIyBtNF9jcl9ub3Rfc3ltYm9s
czIKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSW52ZXJzZSBjaGFyYWN0ZXIgc2V0cwotLV9t
NF9kZWZpbmVfY3Jfbm90KFtsZXR0ZXJzXSkKLS1fbTRfZGVmaW5lX2NyX25vdChbTEVUVEVSU10p
Ci0tX200X2RlZmluZV9jcl9ub3QoW0xldHRlcnNdKQotLV9tNF9kZWZpbmVfY3Jfbm90KFtkaWdp
dHNdKQotLV9tNF9kZWZpbmVfY3Jfbm90KFthbG51bV0pCi0tX200X2RlZmluZV9jcl9ub3QoW3N5
bWJvbHMxXSkKLS1fbTRfZGVmaW5lX2NyX25vdChbc3ltYm9sczJdKQotLQotLQotLSMgbTRfbmV3
bGluZShbU1RSSU5HXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmRzIHRvIGEg
bmV3bGluZSwgcG9zc2libHkgZm9sbG93ZWQgYnkgU1RSSU5HLiAgRXhpc3RzIG1vc3RseSBmb3IK
LS0jIGZvcm1hdHRpbmcgcmVhc29ucy4KLS1tNF9kZWZpbmUoW200X25ld2xpbmVdLCBbCi0tJDFd
KQotLQotLQotLSMgbTRfcmVfZXNjYXBlKFNUUklORykKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0tIyBFc2NhcGUgUkUgYWN0aXZlIGNoYXJhY3RlcnMgaW4gU1RSSU5HLgotLW00X2RlZmluZShb
bTRfcmVfZXNjYXBlXSwKLS1bbTRfYnBhdHN1YnN0KFskMV0sCi0tCSAgICAgIFtbXVsqKy4/XF4k
XV0sIFtcXFwmXSldKQotLQotLQotLSMgbTRfcmVfc3RyaW5nCi0tIyAtLS0tLS0tLS0tLS0KLS0j
IFJlZ2V4cCBmb3IgYFthLXpBLVpfMC05XSonCi0tIyBtNF9kcXVvdGUgcHJvdmlkZXMgbGl0ZXJh
bCBbXSBmb3IgdGhlIGNoYXJhY3RlciBjbGFzcy4KLS1tNF9kZWZpbmUoW200X3JlX3N0cmluZ10s
Ci0tbTRfZHF1b3RlKG00X2RlZm4oW200X2NyX3N5bWJvbHMyXSkpZG5sCi0tWypdZG5sCi0tKQot
LQotLQotLSMgbTRfcmVfd29yZAotLSMgLS0tLS0tLS0tLQotLSMgUmVnZXhwIGZvciBgW2EtekEt
Wl9dW2EtekEtWl8wLTldKicKLS1tNF9kZWZpbmUoW200X3JlX3dvcmRdLAotLW00X2RxdW90ZSht
NF9kZWZuKFttNF9jcl9zeW1ib2xzMV0pKWRubAotLW00X2RlZm4oW200X3JlX3N0cmluZ10pZG5s
Ci0tKQotLQotLQotLSMgbTRfdG9sb3dlcihTVFJJTkcpCi0tIyBtNF90b3VwcGVyKFNUUklORykK
LS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgVGhlc2UgbWFjcm9zIGNvbnZlcnQgU1RSSU5HIHRv
IGxvd2VyY2FzZSBvciB1cHBlcmNhc2UuCi0tIwotLSMgUmF0aGVyIHRoYW4gZXhwYW5kIHRoZSBt
NF9kZWZuIGVhY2ggdGltZSwgd2UgaW5saW5lIHRoZW0gdXAgZnJvbnQuCi0tbTRfZGVmaW5lKFtt
NF90b2xvd2VyXSwKLS1bbTRfdHJhbnNsaXQoW1skMV1dLCBdbTRfZHF1b3RlKG00X2RlZm4oW200
X2NyX0xFVFRFUlNdKSlbLAotLQkJICAgICBdbTRfZHF1b3RlKG00X2RlZm4oW200X2NyX2xldHRl
cnNdKSlbKV0pCi0tbTRfZGVmaW5lKFttNF90b3VwcGVyXSwKLS1bbTRfdHJhbnNsaXQoW1skMV1d
LCBdbTRfZHF1b3RlKG00X2RlZm4oW200X2NyX2xldHRlcnNdKSlbLAotLQkJICAgICBdbTRfZHF1
b3RlKG00X2RlZm4oW200X2NyX0xFVFRFUlNdKSlbKV0pCi0tCi0tCi0tIyBtNF9zcGxpdChTVFJJ
TkcsIFtSRUdFWFBdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNwbGl0IFNU
UklORyBpbnRvIGFuIG00IGxpc3Qgb2YgcXVvdGVkIGVsZW1lbnRzLiAgVGhlIGVsZW1lbnRzIGFy
ZQotLSMgcXVvdGVkIHdpdGggWyBhbmQgXS4gIEJlZ2lubmluZyBzcGFjZXMgYW5kIGVuZCBzcGFj
ZXMgKmFyZSBrZXB0Ki4KLS0jIFVzZSBtNF9zdHJpcCB0byByZW1vdmUgdGhlbS4KLS0jCi0tIyBS
RUdFWFAgc3BlY2lmaWVzIHdoZXJlIHRvIHNwbGl0LiAgRGVmYXVsdCBpcyBbXHQgXSsuCi0tIwot
LSMgSWYgU1RSSU5HIGlzIGVtcHR5LCB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGxpc3QuCi0tIwot
LSMgUGF5IGF0dGVudGlvbiB0byB0aGUgbTRfY2hhbmdlcXVvdGVzLiAgV2hlbiBtNCByZWFkcyB0
aGUgZGVmaW5pdGlvbiBvZgotLSMgbTRfc3BsaXQsIGl0IHN0aWxsIGhhcyBxdW90ZXMgc2V0IHRv
IFsgYW5kIF0uICBMdWNraWx5LCB0aGVzZSBhcmUgbWF0Y2hlZAotLSMgaW4gdGhlIG1hY3JvIGJv
ZHksIHNvIHRoZSBkZWZpbml0aW9uIGlzIHN0b3JlZCBjb3JyZWN0bHkuICBVc2UgdGhlIHNhbWUK
LS0jIGFsdGVybmF0ZSBxdW90ZXMgYXMgbTRfbm9xdW90ZTsgaXQgbXVzdCBiZSB1bmxpa2VseSB0
byBhcHBlYXIgaW4gJDEuCi0tIwotLSMgQWxzbywgbm90aWNlIHRoYXQgJDEgaXMgcXVvdGVkIHR3
aWNlLCBzaW5jZSB3ZSB3YW50IHRoZSByZXN1bHQgdG8KLS0jIGJlIHF1b3RlZC4gIFRoZW4geW91
IHNob3VsZCB1bmRlcnN0YW5kIHRoYXQgdGhlIGFyZ3VtZW50IG9mCi0tIyBwYXRzdWJzdCBpcyAt
PTx7KFNUUklORyl9Pj0tIChpLmUuLCB3aXRoIGFkZGl0aW9uYWwgLT08eyggYW5kICl9Pj0tKS4K
LS0jCi0tIyBUaGlzIG1hY3JvIGlzIHNhZmUgb24gYWN0aXZlIHN5bWJvbHMsIGkuZS46Ci0tIyAg
IG00X2RlZmluZShhY3RpdmUsIEFDVElWRSkKLS0jICAgbTRfc3BsaXQoW2FjdGl2ZSBhY3RpdmUg
XSllbmQKLS0jICAgPT4gW2FjdGl2ZV0sIFthY3RpdmVdLCBbXWVuZAotLSMKLS0jIE9wdGltaXpl
IG9uIHJlZ2V4IG9mIGAgJyAoc3BhY2UpLCBzaW5jZSBtNF9mb3JlYWNoX3cgYWxyZWFkeSBndWFy
YW50ZWVzCi0tIyB0aGF0IHRoZSBsaXN0IGNvbnRhaW5zIHNpbmdsZSBzcGFjZSBzZXBhcmF0b3Jz
LCBhbmQgYSBjb21tb24gY2FzZSBpcwotLSMgc3BsaXR0aW5nIGEgc2luZ2xlLWVsZW1lbnQgbGlz
dC4gIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyZXF1ZW50bHksCi0tIyBzbyBhdm9pZCB1bm5lY2Vz
c2FyeSBkbmwgaW5zaWRlIHRoZSBkZWZpbml0aW9uLgotLW00X2RlZmluZShbbTRfc3BsaXRdLAot
LVttNF9pZihbJDFdLCBbXSwgW10sCi0tICAgICAgIFskMl0sIFsgXSwgW200X2lmKG00X2luZGV4
KFskMV0sIFsgXSksIFstMV0sIFtbWyQxXV1dLAotLQkJCSBbXyQwKFskMV0sIFskMl0sIFssIF0p
XSldLAotLSAgICAgICBbJDJdLCBbXSwgW18kMChbJDFdLCBbWwkgXStdLCBbLCBdKV0sCi0tICAg
ICAgIFtfJDAoWyQxXSwgWyQyXSwgWywgXSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc3BsaXRd
LAotLVttNF9jaGFuZ2VxdW90ZShbLT08eyhdLFspfT49LV0pXWRubAotLVtbbTRfYnBhdHN1YnN0
KC09PHsoLT08eygkMSl9Pj0tKX0+PS0sIC09PHsoJDIpfT49LSwKLS0JICAgICAgIC09PHsoXSQz
Wyl9Pj0tKV1tNF9jaGFuZ2VxdW90ZShbLCBdKV0pCi0tCi0tCi0tIyBtNF9jaG9tcChTVFJJTkcp
Ci0tIyBtNF9jaG9tcF9hbGwoU1RSSU5HKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJl
dHVybiBTVFJJTkcgcXVvdGVkLCBidXQgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUuICBtNF9j
aG9tcAotLSMgcmVtb3ZlcyBhdCBtb3N0IG9uZSBuZXdsaW5lLCB3aGlsZSBtNF9jaG9tcF9hbGwg
cmVtb3ZlcyBhbGwKLS0jIGNvbnNlY3V0aXZlIHRyYWlsaW5nIG5ld2xpbmVzLiAgRW1iZWRkZWQg
bmV3bGluZXMgYXJlIG5vdCB0b3VjaGVkLAotLSMgYW5kIGEgdHJhaWxpbmcgYmFja3NsYXNoLW5l
d2xpbmUgbGVhdmVzIGp1c3QgYSB0cmFpbGluZyBiYWNrc2xhc2guCi0tIwotLSMgbTRfYnJlZ2V4
cCBpcyBzbG93ZXIgdGhhbiBtNF9pbmRleCwgYW5kIHdlIGRvbid0IGFsd2F5cyB3YW50IHRvCi0t
IyByZW1vdmUgYWxsIG5ld2xpbmVzOyBoZW5jZSB0aGUgdHdvIHZhcmlhbnRzLiAgV2UgbWFzc2Fn
ZSBjaGFyYWN0ZXJzCi0tIyB0byBnaXZlIGEgbmljZXIgcGF0dGVybiB0byBtYXRjaCwgcGFydGlj
dWxhcmx5IHNpbmNlIG00X2JyZWdleHAgaXMKLS0jIGxpbmUtb3JpZW50ZWQuICBCb3RoIHZlcnNp
b25zIG11c3QgZ3VhcmFudGVlIGEgbWF0Y2gsIHRvIGF2b2lkIGJ1Z3MKLS0jIHdpdGggcHJlY2lz
aW9uIC0xIGluIG00X2Zvcm1hdCBpbiBvbGRlciBtNC4KLS1tNF9kZWZpbmUoW200X2Nob21wXSwK
LS1bbTRfZm9ybWF0KFtbJS4qc11dLCBtNF9pbmRleChtNF90cmFuc2xpdChbWyQxXV0sIFsKLS0v
Ll0sIFsvICBdKVsuLy5dLCBbLy5dKSwgWyQxXSldKQotLQotLW00X2RlZmluZShbbTRfY2hvbXBf
YWxsXSwKLS1bbTRfZm9ybWF0KFtbJS4qc11dLCBtNF9icmVnZXhwKG00X3RyYW5zbGl0KFtbJDFd
XSwgWwotLS9dLCBbLyBdKSwgWy8qJF0pLCBbJDFdKV0pCi0tCi0tCi0tIyBtNF9mbGF0dGVuKFNU
UklORykKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYgU1RSSU5HIGNvbnRhaW5zIGVuZCBv
ZiBsaW5lcywgcmVwbGFjZSB0aGVtIHdpdGggc3BhY2VzLiAgSWYgdGhlcmUKLS0jIGFyZSBiYWNr
c2xhc2hlZCBlbmQgb2YgbGluZXMsIHJlbW92ZSB0aGVtLiAgVGhpcyBtYWNybyBpcyBzYWZlIHdp
dGgKLS0jIGFjdGl2ZSBzeW1ib2xzLgotLSMgICAgbTRfZGVmaW5lKGFjdGl2ZSwgQUNUSVZFKQot
LSMgICAgbTRfZmxhdHRlbihbYWN0aXZlCi0tIyAgICBhY3RcCi0tIyAgICBpdmVdKWVuZAotLSMg
ICAgPT4gYWN0aXZlIGFjdGl2ZWVuZAotLSMKLS0jIEluIG00LCBtNF9icGF0c3Vic3QgaXMgZXhw
ZW5zaXZlLCBzbyBmaXJzdCBjaGVjayBmb3IgYSBuZXdsaW5lLgotLW00X2RlZmluZShbbTRfZmxh
dHRlbl0sCi0tW200X2lmKG00X2luZGV4KFskMV0sIFsKLS1dKSwgWy0xXSwgW1skMV1dLAotLSAg
ICAgICBbbTRfdHJhbnNsaXQobTRfYnBhdHN1YnN0KFtbWyQxXV1dLCBbXFwKLS1dKSwgWwotLV0s
IFsgXSldKV0pCi0tCi0tCi0tIyBtNF9zdHJpcChTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0tLS0t
Ci0tIyBFeHBhbmRzIGludG8gU1RSSU5HIHdpdGggdGFicyBhbmQgc3BhY2VzIHNpbmdsZWQgb3V0
IGludG8gYSBzaW5nbGUKLS0jIHNwYWNlLCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxp
bmcgc3BhY2VzLgotLSMKLS0jIFRoaXMgbWFjcm8gaXMgcm9idXN0IHRvIGFjdGl2ZSBzeW1ib2xz
LgotLSMgICAgbTRfZGVmaW5lKGFjdGl2ZSwgQUNUSVZFKQotLSMgICAgbTRfc3RyaXAoWyAgYWN0
aXZlIDx0YWI+IDx0YWI+YWN0aXZlIF0pZW5kCi0tIyAgICA9PiBhY3RpdmUgYWN0aXZlZW5kCi0t
IwotLSMgRmlyc3QsIG5vdGljZSB0aGF0IHdlIGd1YXJhbnRlZSB0cmFpbGluZyBzcGFjZS4gIFdo
eT8gIEJlY2F1c2UgcmVndWxhcgotLSMgZXhwcmVzc2lvbnMgYXJlIGdyZWVkeSwgYW5kIGAuKiA/
JyB3b3VsZCBhbHdheXMgZ3JvdXAgdGhlIHNwYWNlIGludG8gdGhlCi0tIyAuKiBwb3J0aW9uLiAg
VGhlIGFsZ29yaXRobSBpcyBzaW1wbGVyIGJ5IGF2b2lkaW5nIGA/JyBhdCB0aGUgZW5kLiAgVGhl
Ci0tIyBhbGdvcml0aG0gY29ycmVjdGx5IHN0cmlwcyBldmVyeXRoaW5nIGlmIFNUUklORyBpcyBq
dXN0IGAgJy4KLS0jCi0tIyBUaGVuIG5vdGljZSB0aGUgc2Vjb25kIHBhdHRlcm46IGl0IGlzIGlu
IGNoYXJnZSBvZiByZW1vdmluZyB0aGUKLS0jIGxlYWRpbmcvdHJhaWxpbmcgc3BhY2VzLiAgV2h5
IG5vdCBqdXN0IGBbXiBdJz8gIEJlY2F1c2UgdGhleSBhcmUKLS0jIGFwcGxpZWQgdG8gb3Zlci1x
dW90ZWQgc3RyaW5ncywgaS5lLiBtb3JlIG9yIGxlc3MgW1NUUklOR10sIGR1ZQotLSMgdG8gdGhl
IGxpbWl0YXRpb25zIG9mIG00X2JwYXRzdWJzdHMuICBTbyB0aGUgbGVhZGluZyBzcGFjZSBpbiBT
VFJJTkcKLS0jIGlzIHRoZSAqc2Vjb25kKiBjaGFyYWN0ZXI7IGVxdWFsbHkgZm9yIHRoZSB0cmFp
bGluZyBzcGFjZS4KLS1tNF9kZWZpbmUoW200X3N0cmlwXSwKLS1bbTRfYnBhdHN1YnN0cyhbJDEg
XSwKLS0JICAgICAgIFtbCSBdK10sIFsgXSwKLS0JICAgICAgIFteLiA/XCguKlwpIC4kXSwgW1tb
XDFdXV0pXSkKLS0KLS0KLS0jIG00X25vcm1hbGl6ZShTVFJJTkcpCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMgQXBwbHkgbTRfZmxhdHRlbiBhbmQgbTRfc3RyaXAgdG8gU1RSSU5HLgotLSMK
LS0jIFRoZSBhcmd1bWVudCBpcyBxdW90ZWQsIHNvIHRoYXQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0
byBhY3RpdmUgc3ltYm9sczoKLS0jCi0tIyAgICBtNF9kZWZpbmUoYWN0aXZlLCBBQ1RJVkUpCi0t
IyAgICBtNF9ub3JtYWxpemUoWyAgYWN0XAotLSMgICAgaXZlCi0tIyAgICBhY3RpdmUgXSllbmQK
LS0jICAgID0+IGFjdGl2ZSBhY3RpdmVlbmQKLS0KLS1tNF9kZWZpbmUoW200X25vcm1hbGl6ZV0s
Ci0tW200X3N0cmlwKG00X2ZsYXR0ZW4oWyQxXSkpXSkKLS0KLS0KLS0KLS0jIG00X2pvaW4oU0VQ
LCBBUkcxLCBBUkcyLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBQcm9k
dWNlIEFSRzFTRVBBUkcyLi4uU0VQQVJHbi4gIEF2b2lkIGJhY2stdG8tYmFjayBTRVAgd2hlbiBh
IGdpdmVuIEFSRwotLSMgaXMgdGhlIGVtcHR5IHN0cmluZy4gIE5vIGV4cGFuc2lvbiBpcyBwZXJm
b3JtZWQgb24gU0VQIG9yIEFSR3MuCi0tIwotLSMgU2luY2UgdGhlIG51bWJlciBvZiBhcmd1bWVu
dHMgdG8gam9pbiBjYW4gYmUgYXJiaXRyYXJpbHkgbG9uZywgd2UKLS0jIHdhbnQgdG8gYXZvaWQg
aGF2aW5nIG1vcmUgdGhhbiBvbmUgJEAgaW4gdGhlIG1hY3JvIGRlZmluaXRpb247Ci0tIyBvdGhl
cndpc2UsIHRoZSBleHBhbnNpb24gd291bGQgcmVxdWlyZSB0d2ljZSB0aGUgbWVtb3J5IG9mIHRo
ZSBhbHJlYWR5Ci0tIyBsb25nIGxpc3QuICBIZW5jZSwgbTRfam9pbiBtZXJlbHkgbG9va3MgZm9y
IHRoZSBmaXJzdCBub24tZW1wdHkgZWxlbWVudCwKLS0jIGFuZCBvdXRwdXRzIGp1c3QgdGhhdCBl
bGVtZW50OyB3aGlsZSBfbTRfam9pbiBsb29rcyBmb3IgYWxsIG5vbi1lbXB0eQotLSMgZWxlbWVu
dHMsIGFuZCBvdXRwdXRzIHRoZW0gZm9sbG93aW5nIGEgc2VwYXJhdG9yLiAgVGhlIGZpbmFsIHRy
aWNrIHRvCi0tIyBub3RlIGlzIHRoYXQgd2UgZGVjaWRlIGJldHdlZW4gcmVjdXJzaW5nIHdpdGgg
JDAgb3IgXyQwIGJhc2VkIG9uIHRoZQotLSMgbmVzdGVkIG00X2lmIGVuZGluZyB3aXRoIGBfJy4K
LS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVu
dHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShbbTRfam9pbl0sCi0tW200X2lmKFskI10sIFsxXSwg
W10sCi0tICAgICAgIFskI10sIFsyXSwgW1skMl1dLAotLSAgICAgICBbbTRfaWYoWyQyXSwgW10s
IFtdLCBbWyQyXV9dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSldKQotLW00X2RlZmluZShbX200
X2pvaW5dLAotLVttNF9pZihbJCMkMl0sIFsyXSwgW10sCi0tICAgICAgIFttNF9pZihbJDJdLCBb
XSwgW10sIFtbJDEkMl1dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSldKQotLQotLSMgbTRfam9p
bmFsbChTRVAsIEFSRzEsIEFSRzIuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIFByb2R1Y2UgQVJHMVNFUEFSRzIuLi5TRVBBUkduLiAgQW4gZW1wdHkgQVJHIHJlc3Vs
dHMgaW4gYmFjay10by1iYWNrIFNFUC4KLS0jIE5vIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgb24g
U0VQIG9yIEFSR3MuCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGgg
YW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUoW200X2pvaW5hbGxdLCBbWyQy
XV8kMChbJDFdLCBtNF9zaGlmdCgkQCkpXSkKLS1tNF9kZWZpbmUoW19tNF9qb2luYWxsXSwKLS1b
bTRfaWYoWyQjXSwgWzJdLCBbXSwgW1skMSQzXSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSldKQot
LQotLSMgbTRfY29tYmluZShbU0VQQVJBVE9SXSwgUFJFRklYLUxJU1QsIFtJTkZJWF0sIFNVRkZJ
WC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBQcm9kdWNlIHRoZSBwYWlyd2lzZSBjb21iaW5hdGlvbiBvZiBldmVyeSBl
bGVtZW50IGluIHRoZSBxdW90ZWQsCi0tIyBjb21tYS1zZXBhcmF0ZWQgUFJFRklYLUxJU1Qgd2l0
aCBldmVyeSBlbGVtZW50IGZyb20gdGhlIFNVRkZJWCBhcmd1bWVudHMuCi0tIyBFYWNoIHBhaXIg
aXMgam9pbmVkIHdpdGggSU5GSVgsIGFuZCBwYWlycyBhcmUgc2VwYXJhdGVkIGJ5IFNFUEFSQVRP
Ui4KLS0jIE5vIGV4cGFuc2lvbiBvY2N1cnMgb24gU0VQQVJBVE9SLCBJTkZJWCwgb3IgZWxlbWVu
dHMgb2YgZWl0aGVyIGxpc3QuCi0tIwotLSMgRm9yIGV4YW1wbGU6Ci0tIyAgIG00X2NvbWJpbmUo
WywgXSwgW1thXSwgW2JdLCBbY11dLCBbLV0sIFsxXSwgWzJdLCBbM10pCi0tIyAgID0+IGEtMSwg
YS0yLCBhLTMsIGItMSwgYi0yLCBiLTMsIGMtMSwgYy0yLCBjLTMKLS0jCi0tIyBUaGlzIGRlZmlu
aXRpb24gaXMgYSBiaXQgaGFpcnk7IHRoZSB0aGluZyB0byByZWFsaXplIGlzIHRoYXQgd2Ugd2Fu
dAotLSMgdG8gY29uc3RydWN0IG00X21hcF9hcmdzX3NlcChbW3ByZWZpeCQzXV0sIFtdLCBbWyQx
XV0sIG00X3NoaWZ0MygkQCkpCi0tIyBhcyB0aGUgaW5uZXIgbG9vcCwgdXNpbmcgZWFjaCBwcmVm
aXggZ2VuZXJhdGVkIGJ5IHRoZSBvdXRlciBsb29wLAotLSMgYW5kIHdpdGhvdXQgcmVjYWxjdWxh
dGluZyBtNF9zaGlmdDMgZXZlcnkgb3V0ZXIgaXRlcmF0aW9uLgotLW00X2RlZmluZShbbTRfY29t
YmluZV0sCi0tW200X2lmKFskMl0sIFtdLCBbXSwgbTRfZXZhbChbJCMgPiAzXSksIFsxXSwKLS1b
bTRfbWFwX2FyZ3Nfc2VwKFttNF9tYXBfYXJnc19zZXAobTRfZHF1b3RlKF0sIFspW1skM11dLCBb
XSwgW1skMV1dLF1dXWRubAotLVttNF9kcXVvdGUobTRfZHF1b3RlKG00X3NoaWZ0MygkQCkpKVtb
KV0sIFtbJDFdXSwgJDIpXSldKQotLQotLQotLSMgbTRfYXBwZW5kKE1BQ1JPLU5BTUUsIFNUUklO
RywgW1NFUEFSQVRPUl0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIFJlZGVmaW5lIE1BQ1JPLU5BTUUgdG8gaG9sZCBpdHMgZm9ybWVyIGNvbnRlbnQg
cGx1cyBgU0VQQVJBVE9SYCdTVFJJTkcnCi0tIyBhdCB0aGUgZW5kLiAgSXQgaXMgdmFsaWQgdG8g
dXNlIHRoaXMgbWFjcm8gd2l0aCBNQUNSTy1OQU1FIHVuZGVmaW5lZCwKLS0jIGluIHdoaWNoIGNh
c2Ugbm8gU0VQQVJBVE9SIGlzIGFkZGVkLiAgQmUgYXdhcmUgdGhhdCB0aGUgY3JpdGVyaW9uIGlz
Ci0tIyBgbm90IGJlaW5nIGRlZmluZWQnLCBhbmQgbm90IGBub3QgYmVpbmcgZW1wdHknLgotLSMK
LS0jIE5vdGUgdGhhdCBuZWl0aGVyIFNUUklORyBub3IgU0VQQVJBVE9SIGFyZSBleHBhbmRlZCBo
ZXJlOyByYXRoZXIsIHdoZW4KLS0jIHlvdSBleHBhbmQgTUFDUk8tTkFNRSwgdGhleSB3aWxsIGJl
IGV4cGFuZGVkIGF0IHRoYXQgcG9pbnQgaW4gdGltZS4KLS0jCi0tIyBUaGlzIG1hY3JvIGlzIHJv
YnVzdCB0byBhY3RpdmUgc3ltYm9scy4gIEl0IGNhbiBiZSB1c2VkIHRvIGdyb3cKLS0jIHN0cmlu
Z3MuCi0tIwotLSMgICAgfCBtNF9kZWZpbmUoYWN0aXZlLCBBQ1RJVkUpZG5sCi0tIyAgICB8IG00
X2FwcGVuZChbc2VudGVuY2VdLCBbVGhpcyBpcyBhbl0pZG5sCi0tIyAgICB8IG00X2FwcGVuZChb
c2VudGVuY2VdLCBbIGFjdGl2ZSBdKWRubAotLSMgICAgfCBtNF9hcHBlbmQoW3NlbnRlbmNlXSwg
W3N5bWJvbC5dKWRubAotLSMgICAgfCBzZW50ZW5jZQotLSMgICAgfCBtNF91bmRlZmluZShbYWN0
aXZlXSlkbmwKLS0jICAgIHwgc2VudGVuY2UKLS0jICAgID0+IFRoaXMgaXMgYW4gQUNUSVZFIHN5
bWJvbC4KLS0jICAgID0+IFRoaXMgaXMgYW4gYWN0aXZlIHN5bWJvbC4KLS0jCi0tIyBJdCBjYW4g
YmUgdXNlZCB0byBkZWZpbmUgaG9va3MuCi0tIwotLSMgICAgfCBtNF9kZWZpbmUoYWN0aXZlLCBB
Q1RJVkUpZG5sCi0tIyAgICB8IG00X2FwcGVuZChbaG9va3NdLCBbbTRfZGVmaW5lKFthY3QxXSwg
W2FjdDJdKV0pZG5sCi0tIyAgICB8IG00X2FwcGVuZChbaG9va3NdLCBbbTRfZGVmaW5lKFthY3Qy
XSwgW2FjdGl2ZV0pXSlkbmwKLS0jICAgIHwgbTRfdW5kZWZpbmUoW2FjdGl2ZV0pZG5sCi0tIyAg
ICB8IGFjdDEKLS0jICAgIHwgaG9va3MKLS0jICAgIHwgYWN0MQotLSMgICAgPT4gYWN0MQotLSMg
ICAgPT4KLS0jICAgID0+IGFjdGl2ZQotLSMKLS0jIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gY3Jl
YXRlIGxpc3RzLCBhbHRob3VnaCB0aGlzIHBhcnRpY3VsYXIgdXNhZ2Ugd2FzCi0tIyBicm9rZW4g
cHJpb3IgdG8gYXV0b2NvbmYgMi42Mi4KLS0jICAgIHwgbTRfYXBwZW5kKFtsaXN0XSwgW29uZV0s
IFssIF0pZG5sCi0tIyAgICB8IG00X2FwcGVuZChbbGlzdF0sIFt0d29dLCBbLCBdKWRubAotLSMg
ICAgfCBtNF9hcHBlbmQoW2xpc3RdLCBbdGhyZWVdLCBbLCBdKWRubAotLSMgICAgfCBsaXN0Ci0t
IyAgICB8IG00X2RxdW90ZShsaXN0KQotLSMgICAgPT4gb25lLCB0d28sIHRocmVlCi0tIyAgICA9
PiBbb25lXSxbdHdvXSxbdGhyZWVdCi0tIwotLSMgTm90ZSB0aGF0IG00X2FwcGVuZCBjYW4gYmVu
ZWZpdCBmcm9tIGFtb3J0aXplZCBPKG4pIG00IGJlaGF2aW9yLCBpZgotLSMgdGhlIHVuZGVybHlp
bmcgbTQgaW1wbGVtZW50YXRpb24gaXMgc21hcnQgZW5vdWdoIHRvIGF2b2lkIGNvcHlpbmcgZXhp
c3RpbmcKLS0jIGNvbnRlbnRzIHdoZW4gZW5sYXJnaW5nIGEgbWFjcm8ncyBkZWZpbml0aW9uIGlu
dG8gYW55IHByZS1hbGxvY2F0ZWQgc3RvcmFnZQotLSMgKG00IDEuNC54IHVuZm9ydHVuYXRlbHkg
ZG9lcyBub3QgaW1wbGVtZW50IHRoaXMgb3B0aW1pemF0aW9uKS4gIFdlIGRvCi0tIyBub3QgaW1w
bGVtZW50IG00X3ByZXBlbmQsIHNpbmNlIGl0IGlzIGluaGVyZW50bHkgTyhuXjIpIChwcmUtYWxs
b2NhdGVkCi0tIyBzdG9yYWdlIG9ubHkgb2NjdXJzIGF0IHRoZSBlbmQgb2YgYSBtYWNybywgc28g
dGhlIGV4aXN0aW5nIGNvbnRlbnRzIG11c3QKLS0jIGFsd2F5cyBiZSBtb3ZlZCkuCi0tIwotLSMg
VXNlIF9tNF9kZWZuIGZvciBzcGVlZC4KLS1tNF9kZWZpbmUoW200X2FwcGVuZF0sCi0tW200X2Rl
ZmluZShbJDFdLCBtNF9pZmRlZihbJDFdLCBbX200X2RlZm4oWyQxXSlbJDNdXSlbJDJdKV0pCi0t
Ci0tCi0tIyBtNF9hcHBlbmRfdW5pcShNQUNSTy1OQU1FLCBTVFJJTkcsIFtTRVBBUkFUT1JdLCBb
SUYtVU5JUV0sIFtJRi1EVVBdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIExpa2UgYG00X2FwcGVuZCcs
IGJ1dCBhcHBlbmQgb25seSBpZiBub3QgeWV0IHByZXNlbnQuICBBZGRpdGlvbmFsbHksCi0tIyBl
eHBhbmQgSUYtVU5JUSBpZiBTVFJJTkcgd2FzIGFwcGVuZGVkLCBvciBJRi1EVVAgaWYgU1RSSU5H
IHdhcyBhbHJlYWR5Ci0tIyBwcmVzZW50LiAgQWxzbywgd2FybiBpZiBTRVBBUkFUT1IgaXMgbm90
IGVtcHR5IGFuZCBvY2N1cnMgd2l0aGluIFNUUklORywKLS0jIGFzIHRoZSBhbGdvcml0aG0gbm8g
bG9uZ2VyIGd1YXJhbnRlZXMgdW5pcXVlbmVzcy4KLS0jCi0tIyBOb3RlIHRoYXQgd2hpbGUgbTRf
YXBwZW5kIGNhbiBiZSBPKG4pIChkZXBlbmRpbmcgb24gdGhlIHF1YWxpdHkgb2YgdGhlCi0tIyB1
bmRlcmx5aW5nIE00IGltcGxlbWVudGF0aW9uKSwgbTRfYXBwZW5kX3VuaXEgaXMgaW5oZXJlbnRs
eSBPKG5eMikKLS0jIGJlY2F1c2UgZWFjaCBhcHBlbmQgb3BlcmF0aW9uIHNlYXJjaGVzIHRoZSBl
bnRpcmUgc3RyaW5nLgotLW00X2RlZmluZShbbTRfYXBwZW5kX3VuaXFdLAotLVttNF9pZnZhbChb
JDNdLCBbbTRfaWYobTRfaW5kZXgoWyQyXSwgWyQzXSksIFstMV0sIFtdLAotLQkJICAgICAgIFtt
NF93YXJuKFtzeW50YXhdLAotLQkJCQlbJDA6IGAkMicgY29udGFpbnMgYCQzJ10pXSldKV8kMCgk
QCldKQotLW00X2RlZmluZShbX200X2FwcGVuZF91bmlxXSwKLS1bbTRfaWZkZWYoWyQxXSwKLS0J
ICBbbTRfaWYobTRfaW5kZXgoWyQzXV9tNF9kZWZuKFskMV0pWyQzXSwgWyQzJDIkM10pLCBbLTFd
LAotLQkJIFttNF9hcHBlbmQoWyQxXSwgWyQyXSwgWyQzXSkkNF0sIFskNV0pXSwKLS0JICBbbTRf
ZGVmaW5lKFskMV0sIFskMl0pJDRdKV0pCi0tCi0tIyBtNF9hcHBlbmRfdW5pcV93KE1BQ1JPLU5B
TUUsIFNUUklOR1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBGb3IgZWFjaCBvZiB0aGUgd29yZHMgaW4gdGhlIHdoaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qg
U1RSSU5HUywgYXBwZW5kCi0tIyBvbmx5IHRoZSB1bmlxdWUgc3RyaW5ncyB0byB0aGUgZGVmaW5p
dGlvbiBvZiBNQUNSTy1OQU1FLgotLSMKLS0jIFVzZSBfbTRfZGVmbiBmb3Igc3BlZWQuCi0tbTRf
ZGVmaW5lKFttNF9hcHBlbmRfdW5pcV93XSwKLS1bbTRfbWFwX2FyZ3NfdyhbJDJdLCBbX200X2Fw
cGVuZF91bmlxKFskMV0sXSwgWywgWyBdKV0pXSkKLS0KLS0KLS0jIG00X2VzY2FwZShTVFJJTkcp
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgT3V0cHV0IHF1b3RlZCBTVFJJTkcsIGJ1dCB3aXRo
IGVtYmVkZGVkICMsICQsIFsgYW5kIF0gdHVybmVkIGludG8KLS0jIHF1YWRyaWdyYXBocy4KLS0j
Ci0tIyBJdCBpcyBmYXN0ZXIgdG8gY2hlY2sgaWYgU1RSSU5HIGlzIGFscmVhZHkgZ29vZCB1c2lu
ZyBtNF90cmFuc2xpdAotLSMgdGhhbiB0byBibGluZGx5IHBlcmZvcm0gZm91ciBtNF9icGF0c3Vi
c3QuCi0tIwotLSMgQmVjYXVzZSB0aGUgdHJhbnNsaXQgaXMgc3RyaXBwaW5nIHF1b3RlcywgaXQg
bXVzdCBhbHNvIG5ldXRyYWxpemUKLS0jIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgaW4gYSBtYWNy
byBuYW1lLCBhcyB3ZWxsIGFzIGNvbW1lbnRzLCBjb21tYXMsCi0tIyBhbmQgcGFyZW50aGVzZXMu
ICBBbGwgdGhlIHByb2JsZW0gY2hhcmFjdGVycyBhcmUgdW5pZmllZCBzbyB0aGF0IGEKLS0jIHNp
bmdsZSBtNF9pbmRleCBjYW4gc2NhbiB0aGUgcmVzdWx0LgotLSMKLS0jIFJhdGhlciB0aGFuIGV4
cGFuZCBtNF9kZWZuIGV2ZXJ5IHRpbWUgbTRfZXNjYXBlIGlzIGV4cGFuZGVkLCB3ZQotLSMgaW5s
aW5lIGl0cyBleHBhbnNpb24gdXAgZnJvbnQuCi0tbTRfZGVmaW5lKFttNF9lc2NhcGVdLAotLVtt
NF9pZihtNF9pbmRleChtNF90cmFuc2xpdChbJDFdLAotLSAgIFtbXSMsKCldXW00X2RxdW90ZSht
NF9kZWZuKFttNF9jcl9zeW1ib2xzMl0pKVssIFskJCRdKSwgWyRdKSwKLS0gIFstMV0sIFttNF9l
Y2hvXSwgW18kMF0pKFskMV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9lc2NhcGVdLAotLVttNF9j
aGFuZ2VxdW90ZShbLT08eyhdLFspfT49LV0pXWRubAotLVttNF9icGF0c3Vic3QobTRfYnBhdHN1
YnN0KG00X2JwYXRzdWJzdChtNF9icGF0c3Vic3QoCi0tCSAgLT08eygtPTx7KC09PHsoLT08eygt
PTx7KCQxKX0+PS0pfT49LSl9Pj0tKX0+PS0pfT49LSwKLS0JLT08eygjKX0+PS0sIC09PHsoQCU6
QCl9Pj0tKSwKLS0gICAgICAtPTx7KFxbKX0+PS0sIC09PHsoQDw6QCl9Pj0tKSwKLS0gICAgLT08
eyhcXSl9Pj0tLCAtPTx7KEA6PkApfT49LSksCi0tICAtPTx7KFwkKX0+PS0sIC09PHsoQFN8QCl9
Pj0tKW00X2NoYW5nZXF1b3RlKFssXSldKQotLQotLQotLSMgbTRfdGV4dF93cmFwKFNUUklORywg
W1BSRUZJWF0sIFtGSVJTVC1QUkVGSVhdLCBbV0lEVEhdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kcyBpbnRvIFNU
UklORyB3cmFwcGVkIHRvIGhvbGQgaW4gV0lEVEggY29sdW1ucyAoZGVmYXVsdCA9IDc5KS4KLS0j
IElmIFBSRUZJWCBpcyBnaXZlbiwgZWFjaCBsaW5lIGlzIHByZWZpeGVkIHdpdGggaXQuICBJZiBG
SVJTVC1QUkVGSVggaXMKLS0jIHNwZWNpZmllZCwgdGhlbiB0aGUgZmlyc3QgbGluZSBpcyBwcmVm
aXhlZCB3aXRoIGl0LiAgQXMgYSBzcGVjaWFsIGNhc2UsCi0tIyBpZiB0aGUgbGVuZ3RoIG9mIEZJ
UlNULVBSRUZJWCBpcyBncmVhdGVyIHRoYW4gdGhhdCBvZiBQUkVGSVgsIHRoZW4KLS0jIEZJUlNU
LVBSRUZJWCB3aWxsIGJlIGxlZnQgYWxvbmUgb24gdGhlIGZpcnN0IGxpbmUuCi0tIwotLSMgTm8g
ZXhwYW5zaW9uIG9jY3VycyBvbiB0aGUgY29udGVudHMgU1RSSU5HLCBQUkVGSVgsIG9yIEZJUlNU
LVBSRUZJWCwKLS0jIGFsdGhvdWdoIHF1YWRyaWdyYXBocyBhcmUgY29ycmVjdGx5IHJlY29nbml6
ZWQuICBNb3JlIHByZWNpc2VseSwKLS0jIHlvdSBtYXkgcmVkZWZpbmUgbTRfcWxlbiB0byByZWNv
Z25pemUgd2hhdGV2ZXIgZXNjYXBlIHNlcXVlbmNlcyB0aGF0Ci0tIyB5b3Ugd2lsbCBwb3N0LXBy
b2Nlc3MuCi0tIwotLSMgVHlwaWNhbCBvdXRwdXRzIGFyZToKLS0jCi0tIyBtNF90ZXh0X3dyYXAo
W1Nob3J0IHN0cmluZyAqL10sIFsgICBdLCBbLyogXSwgMjApCi0tIyAgPT4gLyogU2hvcnQgc3Ry
aW5nICovCi0tIwotLSMgbTRfdGV4dF93cmFwKFtNdWNoIGxvbmdlciBzdHJpbmcgKi9dLCBbICAg
XSwgWy8qIF0sIDIwKQotLSMgID0+IC8qIE11Y2ggbG9uZ2VyCi0tIyAgPT4gICAgc3RyaW5nICov
Ci0tIwotLSMgbTRfdGV4dF93cmFwKFtTaG9ydCBkb2MuXSwgWyAgICAgICAgICBdLCBbICAtLXNo
b3J0IF0sIDMwKQotLSMgID0+ICAgLS1zaG9ydCBTaG9ydCBkb2MuCi0tIwotLSMgbTRfdGV4dF93
cmFwKFtTaG9ydCBkb2MuXSwgWyAgICAgICAgICBdLCBbICAtLXRvby13aWRlIF0sIDMwKQotLSMg
ID0+ICAgLS10b28td2lkZQotLSMgID0+ICAgICAgICAgICBTaG9ydCBkb2MuCi0tIwotLSMgbTRf
dGV4dF93cmFwKFtTdXBlciBsb25nIGRvY3VtZW50YXRpb24uXSwgWyAgICAgICAgICBdLCBbICAt
LXRvby13aWRlIF0sIDMwKQotLSMgID0+ICAgLS10b28td2lkZQotLSMgID0+ICAgICAgU3VwZXIg
bG9uZwotLSMgID0+ICAgICAgZG9jdW1lbnRhdGlvbi4KLS0jCi0tIyBGSVhNRTogdGhlcmUgaXMg
bm8gY2hlY2tpbmcgb2YgYSBsb25nZXIgUFJFRklYIHRoYW4gV0lEVEgsIGJ1dCBkbwotLSMgd2Ug
cmVhbGx5IHdhbnQgdG8gYm90aGVyIHdpdGggcGVvcGxlIHRyeWluZyBlYWNoIHNpbmdsZSBjb3Ju
ZXIKLS0jIG9mIGEgc29mdHdhcmU/Ci0tIwotLSMgVGhpcyBtYWNybyBkb2VzIG5vdCBsZWF2ZSBh
IHRyYWlsaW5nIHNwYWNlIGJlaGluZCB0aGUgbGFzdCB3b3JkIG9mIGEgbGluZSwKLS0jIHdoaWNo
IGNvbXBsaWNhdGVzIGl0IGEgYml0LiAgVGhlIGFsZ29yaXRobSBpcyBvdGhlcndpc2Ugc3R1cGlk
IGFuZCBzaW1wbGU6Ci0tIyBhbGwgdGhlIHdvcmRzIGFyZSBwcmVjZWRlZCBieSBtNF9TZXBhcmF0
b3Igd2hpY2ggaXMgZGVmaW5lZCB0byBlbXB0eSBmb3IKLS0jIHRoZSBmaXJzdCB3b3JkLCBhbmQg
dGhlbiBgICcgKHNpbmdsZSBzcGFjZSkgZm9yIGFsbCB0aGUgb3RoZXJzLgotLSMKLS0jIFRoZSBh
bGdvcml0aG0gdXNlcyBhIGhlbHBlciB0aGF0IHVzZXMgJDIgdGhyb3VnaCAkNCBkaXJlY3RseSwg
cmF0aGVyIHRoYW4KLS0jIHVzaW5nIGxvY2FsIHZhcmlhYmxlcywgdG8gYXZvaWQgbTRfZGVmbiBv
dmVyaGVhZCwgb3IgZXhwYW5zaW9uIHN3YWxsb3dpbmcKLS0jIGFueSAkLiAgSXQgYWxzbyBieXBh
c3NlcyBtNF9wb3BkZWYgb3ZlcmhlYWQgd2l0aCBfbTRfcG9wZGVmIHNpbmNlIG5vIHVzZXIKLS0j
IG1hY3JvIGV4cGFuc2lvbiBvY2N1cnMgaW4gdGhlIG1lYW50aW1lLiAgQWxzbywgdGhlIGRlZmlu
aXRpb24gaXMgd3JpdHRlbgotLSMgd2l0aCBtNF9kbywgdG8gYXZvaWQgdGltZSB3YXN0ZWQgb24g
ZG5sIGR1cmluZyBleHBhbnNpb24gKHNpbmNlIHRoaXMgaXMKLS0jIGFscmVhZHkgYSB0aW1lLWNv
bnN1bWluZyBtYWNybykuCi0tbTRfZGVmaW5lKFttNF90ZXh0X3dyYXBdLAotLVtfJDAobTRfZXNj
YXBlKFskMV0pLCBbJDJdLCBtNF9kZWZhdWx0X3F1b3RlZChbJDNdLCBbJDJdKSwKLS0gICAgIG00
X2RlZmF1bHRfcXVvdGVkKFskNF0sIFs3OV0pKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfdGV4dF93
cmFwXSwKLS1tNF9kbyhkbmwgc2V0IHVwIGxvY2FsIHZhcmlhYmxlcywgdG8gYXZvaWQgcmVwZWF0
ZWQgY2FsY3VsYXRpb25zCi0tW1ttNF9wdXNoZGVmKFttNF9JbmRlbnRdLCBtNF9xbGVuKFskMl0p
KV1dLAotLVtbbTRfcHVzaGRlZihbbTRfQ3Vyc29yXSwgbTRfcWxlbihbJDNdKSldXSwKLS1bW200
X3B1c2hkZWYoW200X1NlcGFyYXRvcl0sIFttNF9kZWZpbmUoW200X1NlcGFyYXRvcl0sIFsgXSld
KV1dLAotLWRubCBleHBhbmQgdGhlIGZpcnN0IHByZWZpeCwgdGhlbiBjaGVjayBpdHMgbGVuZ3Ro
IHZzLiByZWd1bGFyIHByZWZpeAotLWRubCBzYW1lIGxlbmd0aDogbm90aGluZyBzcGVjaWFsCi0t
ZG5sIHByZWZpeDEgbG9uZ2VyOiBvdXRwdXQgb24gbGluZSBieSBpdHNlbGYsIGFuZCByZXNldCBj
dXJzb3IKLS1kbmwgcHJlZml4MSBzaG9ydGVyOiBwYWQgdG8gbGVuZ3RoIG9mIHByZWZpeCwgYW5k
IHJlc2V0IGN1cnNvcgotLVtbWyQzXW00X2NvbmQoW200X0N1cnNvcl0sIG00X0luZGVudCwgW10s
Ci0tCSAgICAgIFttNF9ldmFsKG00X0N1cnNvciA+IG00X0luZGVudCldLCBbMV0sIFsKLS1bJDJd
bTRfZGVmaW5lKFttNF9DdXJzb3JdLCBtNF9JbmRlbnQpXSwKLS0JICAgICAgW200X2Zvcm1hdChb
JSpzXSwgbTRfbWF4KFswXSwKLS0gIG00X2V2YWwobTRfSW5kZW50IC0gbTRfQ3Vyc29yKSksIFtd
KW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0pXV0sCi0tZG5sIG5vdywgZm9yIGVh
Y2ggd29yZCwgY29tcHV0ZSB0aGUgY3Vyc29yIGFmdGVyIHRoZSB3b3JkIGlzIG91dHB1dCwgdGhl
bgotLWRubCBjaGVjayBpZiB0aGUgY3Vyc29yIHdvdWxkIGV4Y2VlZCB0aGUgd3JhcCBjb2x1bW4K
LS1kbmwgaWYgc28sIHJlc2V0IGN1cnNvciwgYW5kIGluc2VydCBuZXdsaW5lIGFuZCBwcmVmaXgK
LS1kbmwgaWYgbm90LCBpbnNlcnQgdGhlIHNlcGFyYXRvciAodXN1YWxseSBhIHNwYWNlKQotLWRu
bCBlaXRoZXIgd2F5LCBpbnNlcnQgdGhlIHdvcmQKLS1bW200X21hcF9hcmdzX3coWyQxXSwgWyQw
X3dvcmQoXSwgWywgWyQyXSwgWyQ0XSldKV1dLAotLWRubCBmaW5hbGx5LCBjbGVhbiB1cCB0aGUg
bG9jYWwgdmFyaWFibGVzCi0tW1tfbTRfcG9wZGVmKFttNF9TZXBhcmF0b3JdLCBbbTRfQ3Vyc29y
XSwgW200X0luZGVudF0pXV0pKQotLQotLW00X2RlZmluZShbX200X3RleHRfd3JhcF93b3JkXSwK
LS1bbTRfZGVmaW5lKFttNF9DdXJzb3JdLCBtNF9ldmFsKG00X0N1cnNvciArIG00X3FsZW4oWyQx
XSkgKyAxKSldZG5sCi0tW200X2lmKG00X2V2YWwobTRfQ3Vyc29yID4gKFskM10pKSwKLS0gICAg
ICBbMV0sIFttNF9kZWZpbmUoW200X0N1cnNvcl0sIG00X2V2YWwobTRfSW5kZW50ICsgbTRfcWxl
bihbJDFdKSArIDEpKQotLVskMl1dLAotLSAgICAgIFttNF9TZXBhcmF0b3JbXV0pWyQxXV0pCi0t
Ci0tIyBtNF90ZXh0X2JveChNRVNTQUdFLCBbRlJBTUUtQ0hBUkFDVEVSID0gYC0nXSkKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgVHVybiBNRVNT
QUdFIGludG86Ci0tIyAgIyMgLS0tLS0tLSAjIwotLSMgICMjIE1FU1NBR0UgIyMKLS0jICAjIyAt
LS0tLS0tICMjCi0tIyB1c2luZyBGUkFNRS1DSEFSQUNURVIgaW4gdGhlIGJvcmRlci4KLS0jCi0t
IyBRdWFkcmlncmFwaHMgYXJlIGNvcnJlY3RseSByZWNvZ25pemVkLiAgTW9yZSBwcmVjaXNlbHks
IHlvdSBtYXkKLS0jIHJlZGVmaW5lIG00X3FsZW4gdG8gcmVjb2duaXplIHdoYXRldmVyIGVzY2Fw
ZSBzZXF1ZW5jZXMgdGhhdCB5b3UKLS0jIHdpbGwgcG9zdC1wcm9jZXNzLgotLW00X2RlZmluZShb
bTRfdGV4dF9ib3hdLAotLVttNF9wdXNoZGVmKFttNF9Cb3JkZXJdLAotLQkgICAgbTRfdHJhbnNs
aXQobTRfZm9ybWF0KFtbWyUqc11dXSwgbTRfZGVjcihtNF9xbGVuKF9tNF9leHBhbmQoWyQxCi0t
XSkpKSwgW10pLCBbIF0sIG00X2RlZmF1bHRfcXVvdGVkKFskMl0sIFstXSkpKV1kbmwKLS1bWyMj
XSBfbTRfZGVmbihbbTRfQm9yZGVyXSkgWyMjXQotLVsjI10gJDEgWyMjXQotLVsjI10gX200X2Rl
Zm4oW200X0JvcmRlcl0pIFsjI11fbTRfcG9wZGVmKFttNF9Cb3JkZXJdKV0pCi0tCi0tCi0tIyBt
NF9xbGVuKFNUUklORykKLS0jIC0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kcyB0byB0aGUgbGVu
Z3RoIG9mIFNUUklORyBhZnRlciBhdXRvbTR0ZSBjb252ZXJ0cyBhbGwgcXVhZHJpZ3JhcGhzLgot
LSMKLS0jIElmIHlvdSB1c2Ugc29tZSBvdGhlciBtZWFucyBvZiBwb3N0LXByb2Nlc3NpbmcgbTQg
b3V0cHV0IHJhdGhlciB0aGFuCi0tIyBhdXRvbTR0ZSwgdGhlbiB5b3UgbWF5IHJlZGVmaW5lIHRo
aXMgbWFjcm8gdG8gcmVjb2duaXplIHdoYXRldmVyCi0tIyBlc2NhcGUgc2VxdWVuY2VzIHlvdXIg
cG9zdC1wcm9jZXNzb3Igd2lsbCBoYW5kbGUuICBGb3IgdGhhdCBtYXR0ZXIsCi0tIyBtNF9kZWZp
bmUoW200X3FsZW5dLCBtNF9kZWZuKFttNF9sZW5dKSkgaXMgc3VmZmljaWVudCBpZiB5b3UgZG9u
J3QKLS0jIGRvIGFueSBwb3N0LXByb2Nlc3NpbmcuCi0tIwotLSMgQXZvaWQgYnBhdHN1YnN0cyBm
b3IgdGhlIGNvbW1vbiBjYXNlIG9mIG5vIHF1YWRyaWdyYXBocy4gIENhY2hlCi0tIyByZXN1bHRz
LCBhcyBjb25maWd1cmUgc2NyaXB0cyB0ZW5kIHRvIGFzayBhYm91dCBsZW5ndGhzIG9mIGNvbW1v
bgotLSMgc3RyaW5ncyBsaWtlIGAvKicgYW5kIGAqLycgcmF0aGVyIGZyZXF1ZW50bHkuICBNaW5p
bWl6ZSB0aGUgbnVtYmVyCi0tIyBvZiB0aW1lcyB0aGF0ICQxIG9jY3VycyBpbiBtNF9xbGVuLCBz
byB0aGVyZSBpcyBsZXNzIHRleHQgdG8gcGFyc2UKLS0jIG9uIGEgY2FjaGUgaGl0LgotLW00X2Rl
ZmluZShbbTRfcWxlbl0sCi0tW200X2lmZGVmKFskMC0kMV0sIFtfbTRfZGVmbihbJDAtXV0sIFtf
JDAoXSlbJDFdKV0pCi0tbTRfZGVmaW5lKFtfbTRfcWxlbl0sCi0tW200X2RlZmluZShbbTRfcWxl
bi0kMV0sCi0tbTRfaWYobTRfaW5kZXgoWyQxXSwgW0BdKSwgWy0xXSwgW200X2xlbihbJDFdKV0s
Ci0tICAgICAgW200X2xlbihtNF9icGF0c3Vic3QoW1skMV1dLAotLQkJCSAgIFtAXChcKDw6XHw6
Plx8U3xcfCU6XHxcezpcfDpcfVwpXChAXClcfCZ0QFwpXSwKLS0JCQkgICBbXDNdKSldKSlfbTRf
ZGVmbihbbTRfcWxlbi0kMV0pXSkKLS0KLS0jIG00X2NvcHlyaWdodF9jb25kZW5zZShURVhUKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBDb25kZW5zZSB0aGUgY29weXJpZ2h0
IG5vdGljZSBpbiBURVhUIHRvIG9ubHkgZGlzcGxheSB0aGUgZmluYWwKLS0jIHllYXIsIHdyYXBw
aW5nIHRoZSByZXN1bHRzIHRvIGZpdCBpbiA4MCBjb2x1bW5zLgotLW00X2RlZmluZShbbTRfY29w
eXJpZ2h0X2NvbmRlbnNlXSwKLS1bbTRfdGV4dF93cmFwKG00X2JwYXRzdWJzdChtNF9mbGF0dGVu
KFtbJDFdXSksCi0tWyhDKVstCSAsMC05XSpcKFsxLTldWzAtOV1bMC05XVswLTldXCldLCBbKEMp
IFwxXSkpXSkKLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIDEzLiBOdW1i
ZXIgcHJvY2Vzc2luZy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0j
IG00X2NtcChBLCBCKQotLSMgLS0tLS0tLS0tLS0tCi0tIyBDb21wYXJlIHR3byBpbnRlZ2VyIGV4
cHJlc3Npb25zLgotLSMgQSA8IEIgLT4gLTEKLS0jIEEgPSBCIC0+ICAwCi0tIyBBID4gQiAtPiAg
MQotLW00X2RlZmluZShbbTRfY21wXSwKLS1bbTRfZXZhbCgoKFskMV0pID4gKFskMl0pKSAtICgo
WyQxXSkgPCAoWyQyXSkpKV0pCi0tCi0tCi0tIyBtNF9saXN0X2NtcChBLCBCKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0KLS0jCi0tIyBDb21wYXJlIHRoZSB0d28gbGlzdHMgb2YgaW50ZWdlciBleHBy
ZXNzaW9ucyBBIGFuZCBCLiAgRm9yIGluc3RhbmNlOgotLSMgICBtNF9saXN0X2NtcChbMSwgMF0s
ICAgICBbMV0pICAgIC0+ICAwCi0tIyAgIG00X2xpc3RfY21wKFsxLCAwXSwgICAgIFsxLCAwXSkg
LT4gIDAKLS0jICAgbTRfbGlzdF9jbXAoWzEsIDJdLCAgICAgWzEsIDBdKSAtPiAgMQotLSMgICBt
NF9saXN0X2NtcChbMSwgMiwgM10sICBbMSwgMl0pIC0+ICAxCi0tIyAgIG00X2xpc3RfY21wKFsx
LCAyLCAtM10sIFsxLCAyXSkgLT4gLTEKLS0jICAgbTRfbGlzdF9jbXAoWzEsIDBdLCAgICAgWzEs
IDJdKSAtPiAtMQotLSMgICBtNF9saXN0X2NtcChbMV0sICAgICAgICBbMSwgMl0pIC0+IC0xCi0t
IyAgIG00X2RlZmluZShbeGFdLCBbb29wc10pZG5sCi0tIyAgIG00X2xpc3RfY21wKFtbMHhhXV0s
ICAgIFs1KzVdKSAgLT4gMAotLSMKLS0jIFJhdGhlciB0aGFuIGZhY2UgdGhlIG92ZXJoZWFkIG9m
IG00X2Nhc2UsIHdlIHVzZSBhIGhlbHBlciBmdW5jdGlvbiB3aG9zZQotLSMgZXhwYW5zaW9uIGlu
Y2x1ZGVzIHRoZSBuYW1lIG9mIHRoZSBtYWNybyB0byBpbnZva2Ugb24gdGhlIHRhaWwsIGVpdGhl
cgotLSMgbTRfaWdub3JlIG9yIG00X3VucXVvdGUuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2Vm
dWwgd2hlbiBjb21wYXJpbmcKLS0jIGxvbmcgbGlzdHMsIHNpbmNlIGxlc3MgdGV4dCBpcyBiZWlu
ZyBleHBhbmRlZCBmb3IgZGVjaWRpbmcgd2hlbiB0byBlbmQKLS0jIHJlY3Vyc2lvbi4gIFRoZSBy
ZWN1cnNpb24gaXMgYmV0d2VlbiBhIHBhaXIgb2YgbWFjcm9zIHRoYXQgYWx0ZXJuYXRlCi0tIyB3
aGljaCBsaXN0IGlzIHRyaW1tZWQgYnkgb25lIGVsZW1lbnQ7IHRoaXMgaXMgbW9yZSBlZmZpY2ll
bnQgdGhhbgotLSMgY2FsbGluZyBtNF9jZHIgb24gYm90aCBsaXN0cyBmcm9tIGEgc2luZ2xlIG1h
Y3JvLiAgR3VhcmFudGVlIGV4YWN0bHkKLS0jIG9uZSBleHBhbnNpb24gb2YgYm90aCBsaXN0cycg
c2lkZSBlZmZlY3RzLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRo
IGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5lKFttNF9saXN0X2NtcF0sCi0t
W18kMF9yYXcobTRfZHF1b3RlKCQxKSwgbTRfZHF1b3RlKCQyKSldKQotLQotLW00X2RlZmluZShb
X200X2xpc3RfY21wX3Jhd10sCi0tW200X2lmKFskMV0sIFskMl0sIFswXSwgW19tNF9saXN0X2Nt
cF8xKFskMV0sICQyKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9saXN0X2NtcF0sCi0tW200X2lm
KFskMV0sIFtdLCBbMG00X2lnbm9yZV0sIFskMl0sIFswXSwgW200X3VucXVvdGVdLCBbJDJtNF9p
Z25vcmVdKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfbGlzdF9jbXBfMV0sCi0tW19tNF9saXN0X2Nt
cF8yKFskMl0sIFttNF9zaGlmdDIoJEApXSwgJDEpXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9saXN0
X2NtcF8yXSwKLS1bX200X2xpc3RfY21wKFskMSQzXSwgbTRfY21wKFskMyswXSwgWyQxKzBdKSko
Ci0tICBbX200X2xpc3RfY21wXzEobTRfZHF1b3RlKG00X3NoaWZ0MygkQCkpLCAkMildKV0pCi0t
Ci0tIyBtNF9tYXgoRVhQUiwgLi4uKQotLSMgbTRfbWluKEVYUFIsIC4uLikKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBSZXR1cm4gdGhlIGRlY2ltYWwgdmFsdWUgb2YgdGhlIG1heGltdW0gKG9y
IG1pbmltdW0pIGluIGEgc2VyaWVzIG9mCi0tIyBpbnRlZ2VyIGV4cHJlc3Npb25zLgotLSMKLS0j
IE00IDEuNC54IGRvZXNuJ3QgcHJvdmlkZSA/Oi4gIEhlbmNlIHRoaXMgaHVnZSBtNF9ldmFsLiAg
QXZvaWQgbTRfZXZhbAotLSMgaWYgYm90aCBhcmd1bWVudHMgYXJlIGlkZW50aWNhbCwgYnV0IGJl
IGF3YXJlIG9mIG00X21heCgweGEsIDEwKSAoaGVuY2UKLS0jIHRoZSB1c2Ugb2YgPD0sIG5vdCBq
dXN0IDwsIGluIHRoZSBzZWNvbmQgbXVsdGlwbHkpLgotLSMKLS0jIFBsZWFzZSBrZWVwIGZvcmVh
Y2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCi0tbTRfZGVmaW5l
KFttNF9tYXhdLAotLVttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbdG9vIGZldyBhcmd1bWVu
dHMgdG8gJDBdKV0sCi0tICAgICAgIFskI10sIFsxXSwgW200X2V2YWwoWyQxXSldLAotLSAgICAg
ICBbJCMkMV0sIFsyJDJdLCBbbTRfZXZhbChbJDFdKV0sCi0tICAgICAgIFskI10sIFsyXSwgW18k
MCgkQCldLAotLSAgICAgICBbX200X21pbm1heChbXyQwXSwgJEApXSldKQotLQotLW00X2RlZmlu
ZShbX200X21heF0sCi0tW200X2V2YWwoKChbJDFdKSA+IChbJDJdKSkgKiAoWyQxXSkgKyAoKFsk
MV0pIDw9IChbJDJdKSkgKiAoWyQyXSkpXSkKLS0KLS1tNF9kZWZpbmUoW200X21pbl0sCi0tW200
X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFt0b28gZmV3IGFyZ3VtZW50cyB0byAkMF0pXSwKLS0g
ICAgICAgWyQjXSwgWzFdLCBbbTRfZXZhbChbJDFdKV0sCi0tICAgICAgIFskIyQxXSwgWzIkMl0s
IFttNF9ldmFsKFskMV0pXSwKLS0gICAgICAgWyQjXSwgWzJdLCBbXyQwKCRAKV0sCi0tICAgICAg
IFtfbTRfbWlubWF4KFtfJDBdLCAkQCldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfbWluXSwKLS1b
bTRfZXZhbCgoKFskMV0pIDwgKFskMl0pKSAqIChbJDFdKSArICgoWyQxXSkgPj0gKFskMl0pKSAq
IChbJDJdKSldKQotLQotLSMgX200X21pbm1heChNRVRIT0QsIEFSRzEsIEFSRzIuLi4pCi0tIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIENvbW1vbiByZWN1cnNpb24gY29k
ZSBmb3IgbTRfbWF4IGFuZCBtNF9taW4uICBNRVRIT0QgbXVzdCBiZSBfbTRfbWF4Ci0tIyBvciBf
bTRfbWluLCBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCB0d28gYXJndW1lbnRzIHRvIGNvbWJp
bmUuCi0tIwotLSMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVz
dG1lbnRzIG1hZGUgaGVyZS4KLS1tNF9kZWZpbmUoW19tNF9taW5tYXhdLAotLVttNF9pZihbJCNd
LCBbM10sIFskMShbJDJdLCBbJDNdKV0sCi0tICAgICAgIFskMChbJDFdLCAkMShbJDJdLCBbJDNd
KSwgbTRfc2hpZnQzKCRAKSldKV0pCi0tCi0tCi0tIyBtNF9zaWduKEEpCi0tIyAtLS0tLS0tLS0t
Ci0tIyBUaGUgc2lnbiBvZiB0aGUgaW50ZWdlciBleHByZXNzaW9uIEEuCi0tbTRfZGVmaW5lKFtt
NF9zaWduXSwKLS1bbTRfZXZhbCgoKFskMV0pID4gMCkgLSAoKFskMV0pIDwgMCkpXSkKLS0KLS0K
LS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyAxNC4gVmVyc2lvbiBwcm9j
ZXNzaW5nLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIG00
X3ZlcnNpb25fdW5sZXR0ZXIoVkVSU0lPTikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIE5vcm1hbGl6ZSBiZXRhIHZlcnNpb24gbnVtYmVycyB3aXRoIGxldHRlcnMgdG8gbnVt
ZXJpYyBleHByZXNzaW9ucywgd2hpY2gKLS0jIGNhbiB0aGVuIGJlIGhhbmRlZCB0byBtNF9ldmFs
IGZvciB0aGUgcHVycG9zZSBvZiBjb21wYXJpc29uLgotLSMKLS0jICAgTmwgLT4gKE4rMSkuLTEu
KGwjKQotLSMKLS0jIGZvciBleGFtcGxlOgotLSMgICBbMi4xNGFdIC0+IFswLDIsMTQrMSwtMSxb
MHIzNjphXV0gLT4gMi4xNS4tMS4xMAotLSMgICBbMi4xNGJdIC0+IFswLDIsMTUrMSwtMSxbMHIz
NjpiXV0gLT4gMi4xNS4tMS4xMQotLSMgICBbMi42MWFhLmJdIC0+IFswLDIuNjEsMSwtMSxbMHIz
NjphYV0sKzEsLTEsWzByMzY6Yl1dIC0+IDIuNjIuLTEuMzcwLjEuLTEuMTEKLS0jICAgWzA4XSAt
PiBbMCxbMHIxMDowXThdIC0+IDgKLS0jCi0tIyBUaGlzIG1hY3JvIGV4cGVjdHMgcmVhc29uYWJs
ZSB2ZXJzaW9uIG51bWJlcnMsIGJ1dCBjYW4gaGFuZGxlIGRvdWJsZQotLSMgbGV0dGVycyBhbmQg
ZG9lcyBub3QgZXhwYW5kIGFueSBtYWNyb3MuICBPcmlnaW5hbCB2ZXJzaW9uIHN0cmluZ3MgY2Fu
Ci0tIyB1c2UgYm90aCBgLicgYW5kIGAtJyBzZXBhcmF0b3JzLgotLSMKLS0jIElubGluZSBjb25z
dGFudCBleHBhbnNpb25zLCB0byBhdm9pZCBtNF9kZWZuIG92ZXJoZWFkLgotLSMgX200X3ZlcnNp
b25fdW5sZXR0ZXIgaXMgdGhlIHJlYWwgd29ya2hvcnNlIHVzZWQgYnkgbTRfdmVyc2lvbl9jb21w
YXJlLAotLSMgYnV0IHNpbmNlIFswcjM2OmFdIGFuZCBjb21tYXMgYXJlIGxlc3MgcmVhZGFibGUg
dGhhbiAxMCBhbmQgZG90cywgd2UKLS0jIHByb3ZpZGUgYSB3cmFwcGVyIGZvciBodW1hbiB1c2Uu
Ci0tbTRfZGVmaW5lKFttNF92ZXJzaW9uX3VubGV0dGVyXSwKLS1bbTRfc3Vic3RyKG00X21hcF9h
cmdzKFsubTRfZXZhbF0sIG00X3VucXVvdGUoXyQwKFskMV0pKSksIFszXSldKQotLW00X2RlZmlu
ZShbX200X3ZlcnNpb25fdW5sZXR0ZXJdLAotLVttNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KG00
X3RyYW5zbGl0KFtbW1swLCQxXV1dXSwgWy4tXSwgWywsXSksXWRubAotLW00X2RxdW90ZShtNF9k
cXVvdGUobTRfZGVmbihbbTRfY3JfTGV0dGVyc10pKSlbWytdLAotLQkgICAgICBbKzEsLTEsWzBy
MzY6XCZdXSksIFssMF0sIFssWzByMTA6MF1dKV0pCi0tCi0tCi0tIyBtNF92ZXJzaW9uX2NvbXBh
cmUoVkVSU0lPTi0xLCBWRVJTSU9OLTIpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBDb21wYXJlIHRoZSB0d28gdmVyc2lvbiBudW1iZXJzIGFuZCBleHBh
bmQgaW50bwotLSMgIC0xIGlmIFZFUlNJT04tMSA8IFZFUlNJT04tMgotLSMgICAwIGlmICAgICAg
ICAgICA9Ci0tIyAgIDEgaWYgICAgICAgICAgID4KLS0jCi0tIyBTaW5jZSBfbTRfdmVyc2lvbl91
bmxldHRlciBkb2VzIG5vdCBvdXRwdXQgc2lkZSBlZmZlY3RzLCB3ZSBjYW4KLS0jIHNhZmVseSBi
eXBhc3MgdGhlIG92ZXJoZWFkIG9mIG00X3ZlcnNpb25fY21wLgotLW00X2RlZmluZShbbTRfdmVy
c2lvbl9jb21wYXJlXSwKLS1bX200X2xpc3RfY21wX3JhdyhfbTRfdmVyc2lvbl91bmxldHRlcihb
JDFdKSwgX200X3ZlcnNpb25fdW5sZXR0ZXIoWyQyXSkpXSkKLS0KLS0KLS0jIG00X1BBQ0tBR0Vf
TkFNRQotLSMgbTRfUEFDS0FHRV9UQVJOQU1FCi0tIyBtNF9QQUNLQUdFX1ZFUlNJT04KLS0jIG00
X1BBQ0tBR0VfU1RSSU5HCi0tIyBtNF9QQUNLQUdFX0JVR1JFUE9SVAotLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIElmIG00c3VnYXIvdmVyc2lvbi5tNCBpcyBwcmVzZW50LCB0aGVuIGRlZmlu
ZSB2ZXJzaW9uIHN0cmluZ3MuICBUaGlzCi0tIyBmaWxlIGlzIG9wdGlvbmFsLCBwcm92aWRlZCBi
eSBBdXRvY29uZiBidXQgYWJzZW50IGluIEJpc29uLgotLW00X3NpbmNsdWRlKFttNHN1Z2FyL3Zl
cnNpb24ubTRdKQotLQotLQotLSMgbTRfdmVyc2lvbl9wcmVyZXEoVkVSU0lPTiwgW0lGLU9LXSwg
W0lGLU5PVCA9IEZBSUxdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgQ2hlY2sgdGhpcyBBdXRvY29uZiB2ZXJzaW9uIGFnYWluc3Qg
VkVSU0lPTi4KLS1tNF9kZWZpbmUoW200X3ZlcnNpb25fcHJlcmVxXSwKLS1tNF9pZmRlZihbbTRf
UEFDS0FHRV9WRVJTSU9OXSwKLS1bW200X2lmKG00X3ZlcnNpb25fY29tcGFyZShdbTRfZHF1b3Rl
KG00X2RlZm4oW200X1BBQ0tBR0VfVkVSU0lPTl0pKVssIFskMV0pLAotLQlbLTFdLAotLQlbbTRf
ZGVmYXVsdChbJDNdLAotLQkJICAgIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAkMSBvciBo
aWdoZXIgaXMgcmVxdWlyZWRdLAotLQkJCSAgICAgIFs2M10pXSldLAotLQlbJDJdKV1dLAotLVtb
bTRfZmF0YWwoW200c3VnYXIvdmVyc2lvbi5tNCBub3QgZm91bmRdKV1dKSkKLS0KLS0KLS0jIyAt
LS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyAxNS4gU2V0IGhhbmRsaW5nLiAgIyMKLS0jIyAtLS0t
LS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIEF1dG9jb25mIGxpa2VzIHRvIGNyZWF0ZSBhcmJpdHJh
cmlseSBsYXJnZSBzZXRzOyBmb3IgZXhhbXBsZSwgYXMgb2YKLS0jIHRoaXMgd3JpdGluZywgdGhl
IGNvbmZpZ3VyZS5hYyBmb3IgY29yZXV0aWxzIHRyYWNrcyBhIHNldCBvZiBtb3JlCi0tIyB0aGFu
IDQwMCBBQ19TVUJTVC4gIEhvdyBkbyB3ZSB0cmFjayBhbGwgb2YgdGhlc2Ugc2V0IG1lbWJlcnMs
Ci0tIyB3aXRob3V0IGludHJvZHVjaW5nIGR1cGxpY2F0ZXM/ICBXZSBjb3VsZCB1c2UgbTRfYXBw
ZW5kX3VuaXEsIHdpdGgKLS0jIHRoZSBzZXQgTkFNRSByZXNpZGluZyBpbiB0aGUgY29udGVudHMg
b2YgdGhlIG1hY3JvIE5BTUUuCi0tIyBVbmZvcnR1bmF0ZWx5LCBtNF9hcHBlbmRfdW5pcSBpcyBx
dWFkcmF0aWMgZm9yIHNldCBjcmVhdGlvbiwgYmVjYXVzZQotLSMgaXQgY29zdHMgTyhuKSB0byBz
ZWFyY2ggdGhlIHN0cmluZyBmb3IgZWFjaCBvZiBPKG4pIGluc2VydGlvbnM7IG5vdAotLSMgdG8g
bWVudGlvbiB0aGF0IHdpdGggbTQgMS40LngsIGV2ZW4gdXNpbmcgbTRfYXBwZW5kIGlzIHNsb3cs
IGNvc3RpbmcKLS0jIE8obikgcmF0aGVyIHRoYW4gTygxKSBwZXIgaW5zZXJ0aW9uLiAgT3RoZXIg
c2V0IG9wZXJhdGlvbnMsIG5vdCB1c2VkCi0tIyBieSBBdXRvY29uZiBidXQgc3RpbGwgcG9zc2li
bGUgYnkgbWFuaXB1bGF0aW9uIG9mIHRoZSBkZWZpbml0aW9uCi0tIyB0cmFja2VkIGluIG1hY3Jv
IE5BTUUsIGluY2x1ZGUgTyhuKSBkZWxldGlvbiBvZiBvbmUgZWxlbWVudCBhbmQgTyhuKQotLSMg
Y29tcHV0YXRpb24gb2Ygc2V0IHNpemUuICBCZWNhdXNlIHRoZSBzZXQgaXMgZXhwb3NlZCB0byB0
aGUgdXNlciB2aWEKLS0jIHRoZSBkZWZpbml0aW9uIG9mIGEgc2luZ2xlIG1hY3JvLCB3ZSBjYW5u
b3QgY2FjaGUgYW55IGRhdGEgYWJvdXQgdGhlCi0tIyBzZXQgd2l0aG91dCByaXNraW5nIHRoZSBj
YWNoZSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGUgdXNlcgotLSMgcmVkZWZpbmluZyBOQU1FLgot
LSMKLS0jIENhbiB3ZSBkbyBiZXR0ZXI/ICBZZXMsIGJlY2F1c2UgbTQgZ2l2ZXMgdXMgYW4gTygx
KSBzZWFyY2ggZnVuY3Rpb24KLS0jIGZvciBmcmVlOiBpZmRlZi4gIEFkZGl0aW9uYWxseSwgZXZl
biBtNCAxLjQueCBnaXZlcyB1cyBhbiBPKDEpCi0tIyBpbnNlcnQgb3BlcmF0aW9uIGZvciBmcmVl
OiBwdXNoZGVmLiAgQnV0IHRvIHVzZSB0aGVzZSwgd2UgbXVzdAotLSMgcmVwcmVzZW50IHRoZSBz
ZXQgdmlhIGEgZ3JvdXAgb2YgbWFjcm9zOyB0byBrZWVwIHRoZSBzZXQgY29uc2lzdGVudCwKLS0j
IHdlIG11c3QgaGlkZSB0aGUgc2V0IHNvIHRoYXQgdGhlIHVzZXIgY2FuIG9ubHkgbWFuaXB1bGF0
ZSBpdCB0aHJvdWdoCi0tIyBhY2Nlc3NvciBtYWNyb3MuICBUaGUgY29udGVudHMgb2YgdGhlIHNl
dCBhcmUgbWFpbnRhaW5lZCB0aHJvdWdoIHR3bwotLSMgYWNjZXNzIHBvaW50czsgX200X3NldChb
bmFtZV0pIGlzIGEgcHVzaGRlZiBzdGFjayBvZiB2YWx1ZXMgaW4gdGhlCi0tIyBzZXQsIHVzZWZ1
bCBmb3IgTyhuKSB0cmF2ZXJzYWwgb2YgdGhlIHNldCBjb250ZW50czsgd2hpbGUgdGhlCi0tIyBl
eGlzdGVuY2Ugb2YgX200X3NldChbbmFtZV0sdmFsdWUpIHdpdGggbm8gcGFydGljdWxhciB2YWx1
ZSBpcwotLSMgdXNlZnVsIGZvciBPKDEpIHF1ZXJ5aW5nIG9mIHNldCBtZW1iZXJzaGlwLiAgQW5k
IHNpbmNlIHRoZSB1c2VyCi0tIyBjYW5ub3QgZXh0ZXJuYWxseSBtYW5pcHVsYXRlIHRoZSBzZXQs
IHdlIGFyZSBmcmVlIHRvIGFkZCBhZGRpdGlvbmFsCi0tIyBjYWNoaW5nIG1hY3JvcyBmb3Igb3Ro
ZXIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiAgRGVsZXRpb24gY2FuIGJlCi0tIyBPKDEpIHBl
ciBlbGVtZW50IHJhdGhlciB0aGFuIE8obiksIGJ5IHJld29ya2luZyB0aGUgZGVmaW5pdGlvbiBv
ZgotLSMgX200X3NldChbbmFtZV0sdmFsdWUpIHRvIGJlIDAgb3IgMSBiYXNlZCBvbiBjdXJyZW50
IG1lbWJlcnNoaXAsIGFuZAotLSMgYWRkaW5nIF9tNF9zZXRfY2xlYW51cChuYW1lKSB0byBkZWZl
ciB0aGUgTyhuKSBjbGVhbnVwIG9mCi0tIyBfbTRfc2V0KFtuYW1lXSkgdW50aWwgd2UgaGF2ZSBh
bm90aGVyIHJlYXNvbiB0byBkbyBhbiBPKG4pCi0tIyB0cmF2ZXJzYWwuICBUaGUgZXhpc3RlbmNl
IG9mIF9tNF9zZXRfY2xlYW51cChuYW1lKSBjYW4gdGhlbiBiZSB1c2VkCi0tIyBlbHNld2hlcmUg
dG8gZGV0ZXJtaW5lIGlmIHdlIG11c3QgZGVyZWZlcmVuY2UgX200X3NldChbbmFtZV0sdmFsdWUp
LAotLSMgb3IgYXNzdW1lIHRoYXQgZGVmaW5pdGlvbiBpbXBsaWVzIHNldCBtZW1iZXJzaGlwLiAg
RmluYWxseSwgc2l6ZSBjYW4KLS0jIGJlIHRyYWNrZWQgaW4gYW4gTygxKSBmYXNoaW9uIHdpdGgg
X200X3NldF9zaXplKG5hbWUpLgotLSMKLS0jIFRoZSBxdW90aW5nIGluIF9tNF9zZXQoW25hbWVd
LHZhbHVlKSBpcyBjaG9zZW4gc28gdGhhdCB0aGVyZSBpcyBubwotLSMgYW1iaWd1aXR5IHdpdGgg
YSBzZXQgd2hvc2UgbmFtZSBjb250YWlucyBhIGNvbW1hLCBhbmQgc28gdGhhdCB3ZSBjYW4KLS0j
IHN1cHBseSB0aGUgdmFsdWUgdmlhIF9tNF9kZWZuKFtfbTRfc2V0KFtuYW1lXSldKSB3aXRob3V0
IG5lZWRpbmcgYW55Ci0tIyBxdW90ZSBtYW5pcHVsYXRpb24uCi0tCi0tIyBtNF9zZXRfYWRkKFNF
VCwgVkFMVUUsIFtJRi1VTklRXSwgW0lGLURVUF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBBZGQgVkFMVUUgYXMgYW4gZWxlbWVudCBvZiBTRVQu
ICBFeHBhbmQgSUYtVU5JUSBvbiB0aGUgZmlyc3QKLS0jIGFkZGl0aW9uLCBhbmQgSUYtRFVQIGlm
IGl0IGlzIGFscmVhZHkgaW4gdGhlIHNldC4gIEFkZGl0aW9uIG9mIG9uZQotLSMgZWxlbWVudCBp
cyBPKDEpLCBzdWNoIHRoYXQgb3ZlcmFsbCBzZXQgY3JlYXRpb24gaXMgTyhuKS4KLS0jCi0tIyBX
ZSBkbyBub3Qgd2FudCB0byBhZGQgYSBkdXBsaWNhdGUgZm9yIGEgcHJldmlvdXNseSBkZWxldGVk
IGJ1dAotLSMgdW5wcnVuZWQgZWxlbWVudCwgYnV0IGl0IGlzIGp1c3QgYXMgZWFzeSB0byBjaGVj
ayBleGlzdGVuY2UgZGlyZWN0bHkKLS0jIGFzIGl0IGlzIHRvIHF1ZXJ5IF9tNF9zZXRfY2xlYW51
cCgkMSkuCi0tbTRfZGVmaW5lKFttNF9zZXRfYWRkXSwKLS1bbTRfaWZkZWYoW19tNF9zZXQoWyQx
XSwkMildLAotLQkgIFttNF9pZihtNF9pbmRpcihbX200X3NldChbJDFdLCQyKV0pLCBbMF0sCi0t
CQkgW200X2RlZmluZShbX200X3NldChbJDFdLCQyKV0sCi0tCQkJICAgIFsxXSlfbTRfc2V0X3Np
emUoWyQxXSwgW200X2luY3JdKSQzXSwgWyQ0XSldLAotLQkgIFttNF9kZWZpbmUoW19tNF9zZXQo
WyQxXSwkMildLAotLQkJICAgICBbMV0pbTRfcHVzaGRlZihbX200X3NldChbJDFdKV0sCi0tCQkJ
CSAgICBbJDJdKV9tNF9zZXRfc2l6ZShbJDFdLCBbbTRfaW5jcl0pJDNdKV0pCi0tCi0tIyBtNF9z
ZXRfYWRkX2FsbChTRVQsIFZBTFVFLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIEFkZCBlYWNoIFZBTFVFIGludG8gU0VULiAgVGhpcyBpcyBPKG4pIGluIHRoZSBudW1i
ZXIgb2YgVkFMVUVzLCBhbmQKLS0jIGNhbiBiZSBmYXN0ZXIgdGhhbiBjYWxsaW5nIG00X3NldF9h
ZGQgZm9yIGVhY2ggVkFMVUUuCi0tIwotLSMgSW1wbGVtZW50IHR3byByZWN1cnNpb24gaGVscGVy
czsgdGhlIGNoZWNrIHZhcmlhbnQgaXMgc2xvd2VyIGJ1dAotLSMgaGFuZGxlcyB0aGUgY2FzZSB3
aGVyZSBhbiBlbGVtZW50IGhhcyBwcmV2aW91c2x5IGJlZW4gcmVtb3ZlZCBidXQKLS0jIG5vdCBw
cnVuZWQuICBUaGUgcmVjdXJzaW9uIGhlbHBlcnMgaWdub3JlIHRoZWlyIHNlY29uZCBhcmd1bWVu
dCwgc28KLS0jIHRoYXQgd2UgY2FuIHVzZSB0aGUgZmFzdGVyIG00X3NoaWZ0MiBhbmQgMiBhcmd1
bWVudHMsIHJhdGhlciB0aGFuCi0tIyBfbTRfc2hpZnQyIGFuZCBvbmUgYXJndW1lbnQsIGFzIHRo
ZSBzaWduYWwgdG8gZW5kIHJlY3Vyc2lvbi4KLS0jCi0tIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00
IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgotLW00X2RlZmluZShbbTRf
c2V0X2FkZF9hbGxdLAotLVttNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLCBtNF9ldmFsKG00
X3NldF9zaXplKFskMV0pCi0tICArIG00X2xlbihtNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQx
KV0sIFtfJDBfY2hlY2tdLCBbXyQwXSkoWyQxXSwgJEApKSkpXSkKLS0KLS1tNF9kZWZpbmUoW19t
NF9zZXRfYWRkX2FsbF0sCi0tW200X2lmKFskI10sIFsyXSwgW10sCi0tICAgICAgIFttNF9pZmRl
ZihbX200X3NldChbJDFdLCQzKV0sIFtdLAotLQkJIFttNF9kZWZpbmUoW19tNF9zZXQoWyQxXSwk
MyldLCBbMV0pbTRfcHVzaGRlZihbX200X3NldChbJDFdKV0sCi0tCSAgIFskM10pLV0pJDAoWyQx
XSwgbTRfc2hpZnQyKCRAKSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2FkZF9hbGxfY2hl
Y2tdLAotLVttNF9pZihbJCNdLCBbMl0sIFtdLAotLSAgICAgICBbbTRfc2V0X2FkZChbJDFdLCBb
JDNdKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSldKQotLQotLSMgbTRfc2V0X2NvbnRhaW5zKFNF
VCwgVkFMVUUsIFtJRi1QUkVTRU5UXSwgW0lGLUFCU0VOVF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCBJRi1QUkVT
RU5UIGlmIFNFVCBjb250YWlucyBWQUxVRSwgb3RoZXJ3aXNlIGV4cGFuZCBJRi1BQlNFTlQuCi0t
IyBUaGlzIGlzIGFsd2F5cyBPKDEpLgotLW00X2RlZmluZShbbTRfc2V0X2NvbnRhaW5zXSwKLS1b
bTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLAotLQkgIFttNF9pZihtNF9pZmRlZihbX200
X3NldChbJDFdLCQyKV0sCi0tCQkgICAgW200X2luZGlyKFtfbTRfc2V0KFskMV0sJDIpXSldLCBb
MF0pLCBbMV0sIFskM10sIFskNF0pXSwKLS0JICBbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMild
LCBbJDNdLCBbJDRdKV0pXSkKLS0KLS0jIG00X3NldF9jb250ZW50cyhTRVQsIFtTRVBdKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgdG8gYSBzaW5nbGUgc3RyaW5n
IGNvbnRhaW5pbmcgYWxsIHRoZSBlbGVtZW50cyBpbiBTRVQsCi0tIyBzZXBhcmF0ZWQgYnkgU0VQ
LCB3aXRob3V0IG1vZGlmeWluZyBTRVQuICBObyBwcm92aXNpb24gaXMgbWFkZSBmb3IKLS0jIGRp
c2FtYmlndWF0aW5nIHNldCBlbGVtZW50cyB0aGF0IGNvbnRhaW4gbm9uLWVtcHR5IFNFUCBhcyBh
Ci0tIyBzdWItc3RyaW5nLCBvciBmb3IgcmVjb2duaXppbmcgYSBzZXQgdGhhdCBjb250YWlucyBv
bmx5IHRoZSBlbXB0eQotLSMgc3RyaW5nLiAgT3JkZXIgb2YgdGhlIG91dHB1dCBpcyBub3QgZ3Vh
cmFudGVlZC4gIElmIGFueSBlbGVtZW50cwotLSMgaGF2ZSBiZWVuIHByZXZpb3VzbHkgcmVtb3Zl
ZCBmcm9tIHRoZSBzZXQsIHRoaXMgYWN0aW9uIHdpbGwgcHJ1bmUKLS0jIHRoZSB1bnVzZWQgbWVt
b3J5LiAgVGhpcyBpcyBPKG4pIGluIHRoZSBzaXplIG9mIHRoZSBzZXQgYmVmb3JlCi0tIyBwcnVu
aW5nLgotLSMKLS0jIFVzZSBfbTRfcG9wZGVmIGZvciBzcGVlZC4gIFRoZSBleGlzdGVuY2Ugb2Yg
X200X3NldF9jbGVhbnVwKCQxKQotLSMgZGV0ZXJtaW5lcyB3aGljaCB2ZXJzaW9uIG9mIF8xIGhl
bHBlciB3ZSB1c2UuCi0tbTRfZGVmaW5lKFttNF9zZXRfY29udGVudHNdLAotLVttNF9zZXRfbWFw
X3NlcChbJDFdLCBbXSwgW10sIFtbJDJdXSldKQotLQotLSMgX200X3NldF9jb250ZW50c18xKFNF
VCkKLS0jIF9tNF9zZXRfY29udGVudHNfMWMoU0VUKQotLSMgX200X3NldF9jb250ZW50c18yKFNF
VCwgW1BSRV0sIFtQT1NUXSwgW1NFUF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCB0byBhIGxpc3Qgb2YgcXVvdGVkIGVsZW1lbnRz
IGN1cnJlbnRseSBpbiB0aGUgc2V0LCBlYWNoCi0tIyBzdXJyb3VuZGVkIGJ5IFBSRSBhbmQgUE9T
VCwgYW5kIG1vdmluZyBTRVAgaW4gZnJvbnQgb2YgUFJFIG9uCi0tIyByZWN1cnNpb24uICBUbyBh
dm9pZCBuZXN0aW5nIGxpbWl0IHJlc3RyaWN0aW9ucywgdGhlIGFsZ29yaXRobSBtdXN0Ci0tIyBi
ZSBicm9rZW4gaW50byB0d28gcGFydHM7IF8xIGRlc3RydWN0aXZlbHkgY29waWVzIHRoZSBzdGFj
ayBpbgotLSMgcmV2ZXJzZSBpbnRvIF9tNF9zZXRfKCQxKSwgcHJvZHVjaW5nIG5vIG91dHB1dDsg
dGhlbiBfMgotLSMgZGVzdHJ1Y3RpdmVseSBjb3BpZXMgX200X3NldF8oJDEpIGJhY2sgaW50byB0
aGUgc3RhY2sgaW4gcmV2ZXJzZS4KLS0jIElmIG5vIGVsZW1lbnRzIHdlcmUgZGVsZXRlZCwgdGhl
biB0aGlzIHZpc2l0cyB0aGUgc2V0IGluIHRoZSBvcmRlcgotLSMgdGhhdCBlbGVtZW50cyB3ZXJl
IGluc2VydGVkLiAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFBSRS9QT1NUL1NFUAotLSMgdHJp
ZXMgdG8gcmVjdXJzaXZlbHkgbGlzdCBvciBtb2RpZnkgU0VUIGluIGFueSB3YXkgb3RoZXIgdGhh
bgotLSMgY2FsbGluZyBtNF9zZXRfcmVtb3ZlIG9uIHRoZSBjdXJyZW50IGVsZW1lbnQuICBVc2Ug
XzEgaWYgYWxsIGVudHJpZXMKLS0jIGluIHRoZSBzdGFjayBhcmUgZ3VhcmFudGVlZCB0byBiZSBp
biB0aGUgc2V0LCBhbmQgXzFjIHRvIHBydW5lCi0tIyByZW1vdmVkIGVudHJpZXMuICBVc2VzIF9t
NF9kZWZuIGFuZCBfbTRfcG9wZGVmIGZvciBzcGVlZC4KLS1tNF9kZWZpbmUoW19tNF9zZXRfY29u
dGVudHNfMV0sCi0tW19tNF9zdGFja19yZXZlcnNlKFtfbTRfc2V0KFskMV0pXSwgW19tNF9zZXRf
KCQxKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9zZXRfY29udGVudHNfMWNdLAotLVttNF9pZmRl
ZihbX200X3NldChbJDFdKV0sCi0tCSAgW200X3NldF9jb250YWlucyhbJDFdLCBfbTRfZGVmbihb
X200X3NldChbJDFdKV0pLAotLQkJICAgW200X3B1c2hkZWYoW19tNF9zZXRfKCQxKV0sIF9tNF9k
ZWZuKFtfbTRfc2V0KFskMV0pXSkpXSwKLS0JCSAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0s
XV9tNF9kZWZuKAotLSAgICAgIFtfbTRfc2V0KFskMV0pXSlbKV0pXSlfbTRfcG9wZGVmKFtfbTRf
c2V0KFskMV0pXSkkMChbJDFdKV0sCi0tCSAgW19tNF9wb3BkZWYoW19tNF9zZXRfY2xlYW51cCgk
MSldKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19tNF9zZXRfY29udGVudHNfMl0sCi0tW19tNF9zdGFj
a19yZXZlcnNlKFtfbTRfc2V0XygkMSldLCBbX200X3NldChbJDFdKV0sCi0tICBbJDJbXV9tNF9k
ZWZuKFtfbTRfc2V0XygkMSldKSQzXSwgWyQ0W11dKV0pCi0tCi0tIyBtNF9zZXRfZGVsZXRlKFNF
VCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVsZXRlIGFsbCBlbGVtZW50cyBpbiBTRVQs
IGFuZCByZWNsYWltIGFueSBtZW1vcnkgb2NjdXBpZWQgYnkgdGhlCi0tIyBzZXQuICBUaGlzIGlz
IE8obikgaW4gdGhlIHNldCBzaXplLgotLSMKLS0jIFVzZSBfbTRfZGVmbiBhbmQgX200X3BvcGRl
ZiBmb3Igc3BlZWQuCi0tbTRfZGVmaW5lKFttNF9zZXRfZGVsZXRlXSwKLS1bbTRfaWZkZWYoW19t
NF9zZXQoWyQxXSldLAotLQkgIFtfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKFtf
bTRfc2V0KFskMV0pXSlbKV0sCi0tCQkgICAgICBbX200X3NldChbJDFdKV0pJDAoWyQxXSldLAot
LQkgIFttNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCi0tCQkgICAgW19tNF9wb3BkZWYo
W19tNF9zZXRfY2xlYW51cCgkMSldKV0pbTRfaWZkZWYoCi0tCQkgICAgW19tNF9zZXRfc2l6ZSgk
MSldLAotLQkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X3NpemUoJDEpXSldKV0pXSkKLS0KLS0j
IG00X3NldF9kaWZmZXJlbmNlKFNFVDEsIFNFVDIpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMgUHJvZHVjZSBhIExJU1Qgb2YgcXVvdGVkIGVsZW1lbnRzIHRoYXQgb2NjdXIg
aW4gU0VUMSBidXQgbm90IFNFVDIuCi0tIyBPdXRwdXQgYSBjb21tYSBwcmlvciB0byBhbnkgZWxl
bWVudHMsIHRvIGRpc3Rpbmd1aXNoIHRoZSBlbXB0eQotLSMgc3RyaW5nIGZyb20gbm8gZWxlbWVu
dHMuICBUaGlzIGNhbiBiZSBkaXJlY3RseSB1c2VkIGFzIGEgc2VyaWVzIG9mCi0tIyBhcmd1bWVu
dHMsIHN1Y2ggYXMgZm9yIG00X2pvaW4sIG9yIHdyYXBwZWQgaW5zaWRlIHF1b3RlcyBmb3IgdXNl
IGluCi0tIyBtNF9mb3JlYWNoLiAgT3JkZXIgb2YgdGhlIG91dHB1dCBpcyBub3QgZ3VhcmFudGVl
ZC4KLS0jCi0tIyBTaG9ydC1jaXJjdWl0IHRoZSBpZGVtcG90ZW5jZSByZWxhdGlvbi4KLS1tNF9k
ZWZpbmUoW200X3NldF9kaWZmZXJlbmNlXSwKLS1bbTRfaWYoWyQxXSwgWyQyXSwgW10sIFttNF9z
ZXRfbWFwX3NlcChbJDFdLCBbXyQwKFskMl0sXSwgWyldKV0pXSkKLS0KLS1tNF9kZWZpbmUoW19t
NF9zZXRfZGlmZmVyZW5jZV0sCi0tW200X3NldF9jb250YWlucyhbJDFdLCBbJDJdLCBbXSwgWyxb
JDJdXSldKQotLQotLSMgbTRfc2V0X2R1bXAoU0VULCBbU0VQXSkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBFeHBhbmQgdG8gYSBzaW5nbGUgc3RyaW5nIGNvbnRhaW5pbmcgYWxsIHRo
ZSBlbGVtZW50cyBpbiBTRVQsCi0tIyBzZXBhcmF0ZWQgYnkgU0VQLCB0aGVuIGRlbGV0ZSBTRVQu
ICBJbiBnZW5lcmFsLCBpZiB5b3Ugb25seSBuZWVkIHRvCi0tIyBsaXN0IHRoZSBjb250ZW50cyBv
bmNlLCB0aGlzIGlzIGZhc3RlciB0aGFuIG00X3NldF9jb250ZW50cy4gIE5vCi0tIyBwcm92aXNp
b24gaXMgbWFkZSBmb3IgZGlzYW1iaWd1YXRpbmcgc2V0IGVsZW1lbnRzIHRoYXQgY29udGFpbgot
LSMgbm9uLWVtcHR5IFNFUCBhcyBhIHN1Yi1zdHJpbmcuICBPcmRlciBvZiB0aGUgb3V0cHV0IGlz
IG5vdAotLSMgZ3VhcmFudGVlZC4gIFRoaXMgaXMgTyhuKSBpbiB0aGUgc2l6ZSBvZiB0aGUgc2V0
IGJlZm9yZSBwcnVuaW5nLgotLSMKLS0jIFVzZSBfbTRfcG9wZGVmIGZvciBzcGVlZC4gIFVzZSBl
eGlzdGVuY2Ugb2YgX200X3NldF9jbGVhbnVwKCQxKSB0bwotLSMgZGVjaWRlIGlmIG1vcmUgZXhw
ZW5zaXZlIHJlY3Vyc2lvbiBpcyBuZWVkZWQuCi0tbTRfZGVmaW5lKFttNF9zZXRfZHVtcF0sCi0t
W200X2lmZGVmKFtfbTRfc2V0X3NpemUoJDEpXSwKLS0JICBbX200X3BvcGRlZihbX200X3NldF9z
aXplKCQxKV0pXSltNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCi0tICAgIFtfJDBfY2hl
Y2tdLCBbXyQwXSkoWyQxXSwgW10sIFskMl0pXSkKLS0KLS0jIF9tNF9zZXRfZHVtcChTRVQsIFtT
RVBdLCBbUFJFUF0pCi0tIyBfbTRfc2V0X2R1bXBfY2hlY2soU0VULCBbU0VQXSwgW1BSRVBdKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFByaW50IFNFUCBh
bmQgdGhlIGN1cnJlbnQgZWxlbWVudCwgdGhlbiBkZWxldGUgdGhlIGVsZW1lbnQgYW5kCi0tIyBy
ZWN1cnNlIHdpdGggZW1wdHkgU0VQIGNoYW5nZWQgdG8gUFJFUC4gIFRoZSBjaGVjayB2YXJpYW50
IGNoZWNrcwotLSMgd2hldGhlciB0aGUgZWxlbWVudCBoYXMgYmVlbiBwcmV2aW91c2x5IHJlbW92
ZWQuICBVc2UgX200X2RlZm4gYW5kCi0tIyBfbTRfcG9wZGVmIGZvciBzcGVlZC4KLS1tNF9kZWZp
bmUoW19tNF9zZXRfZHVtcF0sCi0tW200X2lmZGVmKFtfbTRfc2V0KFskMV0pXSwKLS0JICBbWyQy
XV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9k
ZWZuKAotLQkJW19tNF9zZXQoWyQxXSldKVspXSwgW19tNF9zZXQoWyQxXSldKSQwKFskMV0sIFsk
MiQzXSldKV0pCi0tCi0tbTRfZGVmaW5lKFtfbTRfc2V0X2R1bXBfY2hlY2tdLAotLVttNF9pZmRl
ZihbX200X3NldChbJDFdKV0sCi0tCSAgW200X3NldF9jb250YWlucyhbJDFdLCBfbTRfZGVmbihb
X200X3NldChbJDFdKV0pLAotLQkJCSAgIFtbJDJdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKV0p
X200X3BvcGRlZigKLS0gICAgW19tNF9zZXQoWyQxXSxdX200X2RlZm4oW19tNF9zZXQoWyQxXSld
KVspXSwKLS0gICAgW19tNF9zZXQoWyQxXSldKSQwKFskMV0sIFskMiQzXSldLAotLQkgIFtfbTRf
cG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKV0pCi0tCi0tIyBtNF9zZXRfZW1wdHkoU0VU
LCBbSUYtRU1QVFldLCBbSUYtRUxFTUVOVFNdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuZCBJRi1FTVBUWSBpZiBTRVQgaGFzIG5vIGVs
ZW1lbnRzLCBvdGhlcndpc2UgSUYtRUxFTUVOVFMuCi0tbTRfZGVmaW5lKFttNF9zZXRfZW1wdHld
LAotLVttNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sCi0tCSAgW200X2lmKG00X2luZGlyKFtf
bTRfc2V0X3NpemUoJDEpXSksIFswXSwgWyQyXSwgWyQzXSldLCBbJDJdKV0pCi0tCi0tIyBtNF9z
ZXRfZm9yZWFjaChTRVQsIFZBUiwgQUNUSU9OKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLS0jIEZvciBlYWNoIGVsZW1lbnQgb2YgU0VULCBkZWZpbmUgVkFSIHRvIHRoZSBl
bGVtZW50IGFuZCBleHBhbmQKLS0jIEFDVElPTi4gIEFDVElPTiBzaG91bGQgbm90IHJlY3Vyc2l2
ZWx5IGxpc3QgU0VUJ3MgY29udGVudHMsIGFkZAotLSMgZWxlbWVudHMgdG8gU0VULCBub3IgZGVs
ZXRlIGFueSBlbGVtZW50IGZyb20gU0VUIGV4Y2VwdCB0aGUgb25lCi0tIyBjdXJyZW50bHkgaW4g
VkFSLiAgVGhlIG9yZGVyIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSB2aXNpdGVkIGluIGlzIG5vdAot
LSMgZ3VhcmFudGVlZC4gIFRoaXMgaXMgZmFzdGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgbTRf
Zm9yZWFjaChbVkFSXSwKLS0jICAgbTRfaW5kaXIoW200X2RxdW90ZV1tNF9zZXRfbGlzdGMoW1NF
VF0pKSwgW0FDVElPTl0pCi0tbTRfZGVmaW5lKFttNF9zZXRfZm9yZWFjaF0sCi0tW200X3B1c2hk
ZWYoWyQyXSltNF9zZXRfbWFwX3NlcChbJDFdLAotLVttNF9kZWZpbmUoWyQyXSxdLCBbKSQzXSlt
NF9wb3BkZWYoWyQyXSldKQotLQotLSMgbTRfc2V0X2ludGVyc2VjdGlvbihTRVQxLCBTRVQyKQot
LSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUHJvZHVjZSBhIExJU1Qgb2Yg
cXVvdGVkIGVsZW1lbnRzIHRoYXQgb2NjdXIgaW4gYm90aCBTRVQxIG9yIFNFVDIuCi0tIyBPdXRw
dXQgYSBjb21tYSBwcmlvciB0byBhbnkgZWxlbWVudHMsIHRvIGRpc3Rpbmd1aXNoIHRoZSBlbXB0
eQotLSMgc3RyaW5nIGZyb20gbm8gZWxlbWVudHMuICBUaGlzIGNhbiBiZSBkaXJlY3RseSB1c2Vk
IGFzIGEgc2VyaWVzIG9mCi0tIyBhcmd1bWVudHMsIHN1Y2ggYXMgZm9yIG00X2pvaW4sIG9yIHdy
YXBwZWQgaW5zaWRlIHF1b3RlcyBmb3IgdXNlIGluCi0tIyBtNF9mb3JlYWNoLiAgT3JkZXIgb2Yg
dGhlIG91dHB1dCBpcyBub3QgZ3VhcmFudGVlZC4KLS0jCi0tIyBJdGVyYXRlIG92ZXIgdGhlIHNt
YWxsZXIgc2V0LCBhbmQgc2hvcnQtY2lyY3VpdCB0aGUgaWRlbXBvdGVuY2UKLS0jIHJlbGF0aW9u
LgotLW00X2RlZmluZShbbTRfc2V0X2ludGVyc2VjdGlvbl0sCi0tW200X2lmKFskMV0sIFskMl0s
IFttNF9zZXRfbGlzdGMoWyQxXSldLAotLSAgICAgICBtNF9ldmFsKG00X3NldF9zaXplKFskMl0p
IDwgbTRfc2V0X3NpemUoWyQxXSkpLCBbMV0sIFskMChbJDJdLCBbJDFdKV0sCi0tICAgICAgIFtt
NF9zZXRfbWFwX3NlcChbJDFdLCBbXyQwKFskMl0sXSwgWyldKV0pXSkKLS0KLS1tNF9kZWZpbmUo
W19tNF9zZXRfaW50ZXJzZWN0aW9uXSwKLS1bbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFss
WyQyXV0pXSkKLS0KLS0jIG00X3NldF9saXN0KFNFVCkKLS0jIG00X3NldF9saXN0YyhTRVQpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLQotLSMgUHJvZHVjZSBhIExJU1Qgb2YgcXVvdGVkIGVsZW1lbnRz
IG9mIFNFVC4gIFRoaXMgY2FuIGJlIGRpcmVjdGx5IHVzZWQKLS0jIGFzIGEgc2VyaWVzIG9mIGFy
Z3VtZW50cywgc3VjaCBhcyBmb3IgbTRfam9pbiBvciBtNF9zZXRfYWRkX2FsbCwgb3IKLS0jIHdy
YXBwZWQgaW5zaWRlIHF1b3RlcyBmb3IgdXNlIGluIG00X2ZvcmVhY2ggb3IgbTRfbWFwLiAgV2l0
aAotLSMgbTRfc2V0X2xpc3QsIHRoZXJlIGlzIG5vIHdheSB0byBkaXN0aW5ndWlzaCBhbiBlbXB0
eSBzZXQgZnJvbSBhIHNldAotLSMgY29udGFpbmluZyBvbmx5IHRoZSBlbXB0eSBzdHJpbmc7IHdp
dGggbTRfc2V0X2xpc3RjLCBhIGxlYWRpbmcgY29tbWEKLS0jIGlzIG91dHB1dCBpZiB0aGVyZSBh
cmUgYW55IGVsZW1lbnRzLgotLW00X2RlZmluZShbbTRfc2V0X2xpc3RdLAotLVttNF9zZXRfbWFw
X3NlcChbJDFdLCBbXSwgW10sIFssXSldKQotLQotLW00X2RlZmluZShbbTRfc2V0X2xpc3RjXSwK
LS1bbTRfc2V0X21hcF9zZXAoWyQxXSwgWyxdKV0pCi0tCi0tIyBtNF9zZXRfbWFwKFNFVCwgQUNU
SU9OKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEZvciBlYWNoIGVsZW1lbnQgb2Yg
U0VULCBleHBhbmQgQUNUSU9OIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlCi0tIyBjdXJy
ZW50IGVsZW1lbnQuICBBQ1RJT04gc2hvdWxkIG5vdCByZWN1cnNpdmVseSBsaXN0IFNFVCdzIGNv
bnRlbnRzLAotLSMgYWRkIGVsZW1lbnRzIHRvIFNFVCwgbm9yIGRlbGV0ZSBhbnkgZWxlbWVudCBm
cm9tIFNFVCBleGNlcHQgdGhlIG9uZQotLSMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LiAgVGhlIG9y
ZGVyIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSB2aXNpdGVkIGluCi0tIyBpcyBub3QgZ3VhcmFudGVl
ZC4gIFRoaXMgaXMgZmFzdGVyIHRoYW4gZWl0aGVyIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0tIyAg
IG00X21hcF9hcmdzKFtBQ1RJT05dbTRfc2V0X2xpc3RjKFtTRVRdKSkKLS0jICAgbTRfc2V0X2Zv
cmVhY2goW1NFVF0sIFtWQVJdLCBbQUNUSU9OKG00X2RlZm4oW1ZBUl0pKV0pCi0tbTRfZGVmaW5l
KFttNF9zZXRfbWFwXSwKLS1bbTRfc2V0X21hcF9zZXAoWyQxXSwgWyQyKF0sIFspXSldKQotLQot
LSMgbTRfc2V0X21hcF9zZXAoU0VULCBbUFJFXSwgW1BPU1RdLCBbU0VQXSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBGb3IgZWFjaCBlbGVtZW50IG9m
IFNFVCwgZXhwYW5kIFBSRVt2YWx1ZV1QT1NUW10sIGFuZCBleHBhbmQgU0VQCi0tIyBiZXR3ZWVu
IGVsZW1lbnRzLgotLW00X2RlZmluZShbbTRfc2V0X21hcF9zZXBdLAotLVttNF9pZmRlZihbX200
X3NldF9jbGVhbnVwKCQxKV0sIFtfbTRfc2V0X2NvbnRlbnRzXzFjXSwKLS0JICBbX200X3NldF9j
b250ZW50c18xXSkoWyQxXSlfbTRfc2V0X2NvbnRlbnRzXzIoJEApXSkKLS0KLS0jIG00X3NldF9y
ZW1vdmUoU0VULCBWQUxVRSwgW0lGLVBSRVNFTlRdLCBbSUYtQUJTRU5UXSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIFZBTFVF
IGlzIGFuIGVsZW1lbnQgb2YgU0VULCBkZWxldGUgaXQgYW5kIGV4cGFuZCBJRi1QUkVTRU5ULgot
LSMgT3RoZXJ3aXNlIGV4cGFuZCBJRi1BQlNFTlQuICBEZWxldGluZyBhIHNpbmdsZSB2YWx1ZSBp
cyBPKDEpLAotLSMgYWx0aG91Z2ggaXQgbGVhdmVzIG1lbW9yeSBvY2N1cGllZCB1bnRpbCB0aGUg
bmV4dCBPKG4pIHRyYXZlcnNhbCBvZgotLSMgdGhlIHNldCB3aGljaCB3aWxsIGNvbXBhY3QgdGhl
IHNldC4KLS0jCi0tIyBPcHRpbWl6ZSBpZiB0aGUgZWxlbWVudCBiZWluZyByZW1vdmVkIGlzIHRo
ZSBtb3N0IHJlY2VudGx5IGFkZGVkLAotLSMgc2luY2UgZGVmaW5pbmcgX200X3NldF9jbGVhbnVw
KCQxKSBzbG93cyBkb3duIHNvIG1hbnkgb3RoZXIgbWFjcm9zLgotLSMgSW4gcGFydGljdWxhciwg
dGhpcyBwbGF5cyB3ZWxsIHdpdGggbTRfc2V0X2ZvcmVhY2ggYW5kIG00X3NldF9tYXAuCi0tbTRf
ZGVmaW5lKFttNF9zZXRfcmVtb3ZlXSwKLS1bbTRfc2V0X2NvbnRhaW5zKFskMV0sIFskMl0sIFtf
bTRfc2V0X3NpemUoWyQxXSwKLS0gICAgW200X2RlY3JdKW00X2lmKF9tNF9kZWZuKFtfbTRfc2V0
KFskMV0pXSksIFskMl0sCi0tCQkgICAgW19tNF9wb3BkZWYoW19tNF9zZXQoWyQxXSwkMildLCBb
X200X3NldChbJDFdKV0pXSwKLS0JCSAgICBbbTRfZGVmaW5lKFtfbTRfc2V0X2NsZWFudXAoJDEp
XSltNF9kZWZpbmUoCi0tCQkgICAgICBbX200X3NldChbJDFdLCQyKV0sIFswXSldKSQzXSwgWyQ0
XSldKQotLQotLSMgbTRfc2V0X3NpemUoU0VUKQotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhw
YW5kIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY3VycmVudGx5IGluIFNFVC4gIFRoaXMgb3Bl
cmF0aW9uCi0tIyBpcyBPKDEpLCBhbmQgdGh1cyBtb3JlIGVmZmljaWVudCB0aGFuIG00X2NvdW50
KG00X3NldF9saXN0KFtTRVRdKSkuCi0tbTRfZGVmaW5lKFttNF9zZXRfc2l6ZV0sCi0tW200X2lm
ZGVmKFtfbTRfc2V0X3NpemUoJDEpXSwgW200X2luZGlyKFtfbTRfc2V0X3NpemUoJDEpXSldLCBb
MF0pXSkKLS0KLS0jIF9tNF9zZXRfc2l6ZShTRVQsIEFDVElPTikKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIEFDVElPTiBtdXN0IGJlIGVpdGhlciBtNF9pbmNyIG9yIG00X2RlY3Is
IGFuZCB0aGUgc2l6ZSBvZiBTRVQgaXMKLS0jIGNoYW5nZWQgYWNjb3JkaW5nbHkuICBJZiB0aGUg
c2V0IGlzIGVtcHR5LCBBQ1RJT04gbXVzdCBub3QgYmUKLS0jIG00X2RlY3IuCi0tbTRfZGVmaW5l
KFtfbTRfc2V0X3NpemVdLAotLVttNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLAotLQkgICBt
NF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sIFskMihtNF9pbmRpcihbX200X3NldF9zaXplKCQx
KV0pKV0sCi0tCQkgICAgWzFdKSldKQotLQotLSMgbTRfc2V0X3VuaW9uKFNFVDEsIFNFVDIpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFByb2R1Y2UgYSBMSVNUIG9mIGRvdWJsZSBx
dW90ZWQgZWxlbWVudHMgdGhhdCBvY2N1ciBpbiBlaXRoZXIgU0VUMQotLSMgb3IgU0VUMiwgd2l0
aG91dCBkdXBsaWNhdGVzLiAgT3V0cHV0IGEgY29tbWEgcHJpb3IgdG8gYW55IGVsZW1lbnRzLAot
LSMgdG8gZGlzdGluZ3Vpc2ggdGhlIGVtcHR5IHN0cmluZyBmcm9tIG5vIGVsZW1lbnRzLiAgVGhp
cyBjYW4gYmUKLS0jIGRpcmVjdGx5IHVzZWQgYXMgYSBzZXJpZXMgb2YgYXJndW1lbnRzLCBzdWNo
IGFzIGZvciBtNF9qb2luLCBvcgotLSMgd3JhcHBlZCBpbnNpZGUgcXVvdGVzIGZvciB1c2UgaW4g
bTRfZm9yZWFjaC4gIE9yZGVyIG9mIHRoZSBvdXRwdXQgaXMKLS0jIG5vdCBndWFyYW50ZWVkLgot
LSMKLS0jIFdlIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgbTRfc2V0X2xpc3RjIHBydW5lcyBT
RVQxLCBzbyB3ZSBkb24ndAotLSMgbmVlZCB0byBjaGVjayBfbTRfc2V0KFskMV0sZWxlbWVudCkg
Zm9yIDAuICBTaG9ydC1jaXJjdWl0IHRoZQotLSMgaWRlbXBvdGVuY2UgcmVsYXRpb24uCi0tbTRf
ZGVmaW5lKFttNF9zZXRfdW5pb25dLAotLVttNF9zZXRfbGlzdGMoWyQxXSltNF9pZihbJDFdLCBb
JDJdLCBbXSwKLS0gIFttNF9zZXRfbWFwX3NlcChbJDJdLCBbXyQwKFskMV0sXSwgWyldKV0pXSkK
LS0KLS1tNF9kZWZpbmUoW19tNF9zZXRfdW5pb25dLAotLVttNF9pZmRlZihbX200X3NldChbJDFd
LCQyKV0sIFtdLCBbLFskMl1dKV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwot
LSMjIDE2LiBGaWxlIGhhbmRsaW5nLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0t
Ci0tCi0tIyBJdCBpcyBhIHJlYWwgcGl0eSB0aGF0IE00IGNvbWVzIHdpdGggbm8gbWFjcm9zIHRv
IGJpbmQgYSBkaXZlcnNpb24KLS0jIHRvIGEgZmlsZS4gIFNvIHdlIGhhdmUgdG8gZGVhbCB3aXRo
b3V0LCB3aGljaCBtYWtlcyB1cyBhIGxvdCBtb3JlCi0tIyBmcmFnaWxlIHRoYW4gd2Ugc2hvdWxk
LgotLQotLQotLSMgbTRfZmlsZV9hcHBlbmQoRklMRS1OQU1FLCBDT05URU5UKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbbTRfZmlsZV9hcHBlbmRd
LAotLVttNF9zeXNjbWQoW2NhdCA+PiQxIDw8X200ZW9mCi0tJDIKLS1fbTRlb2YKLS1dKQotLW00
X2lmKG00X3N5c3ZhbCwgWzBdLCBbXSwKLS0gICAgICBbbTRfZmF0YWwoWyQwOiBjYW5ub3Qgd3Jp
dGU6ICQxXSldKV0pCi0tCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0t
IyMgMTcuIFNldHRpbmcgTTRzdWdhciB1cC4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICMjCi0tCi0tIyBfbTRfZGl2ZXJ0X2RpdmVyc2lvbiBzaG91bGQgYmUgZGVmaW5lZC4KLS1t
NF9kaXZlcnRfcHVzaChbS0lMTF0pCi0tCi0tIyBtNF9pbml0Ci0tIyAtLS0tLS0tCi0tIyBJbml0
aWFsaXplIHRoZSBtNHN1Z2FyIGxhbmd1YWdlLgotLW00X2RlZmluZShbbTRfaW5pdF0sCi0tWyMg
QWxsIHRoZSBNNHN1Z2FyIG1hY3JvcyBzdGFydCB3aXRoIGBtNF8nLCBleGNlcHQgYGRubCcga2Vw
dCBhcyBpcwotLSMgZm9yIHNha2Ugb2Ygc2ltcGxpY2l0eS4KLS1tNF9wYXR0ZXJuX2ZvcmJpZChb
Xl8/bTRfXSkKLS1tNF9wYXR0ZXJuX2ZvcmJpZChbXmRubCRdKQotLQotLSMgSWYgX19tNF92ZXJz
aW9uX18gaXMgZGVmaW5lZCwgd2UgYXNzdW1lIHRoYXQgd2UgYXJlIGJlaW5nIHJ1biBieSBNNAot
LSMgMS42IG9yIG5ld2VyLCB0aHVzICRAIHJlY3Vyc2lvbiBpcyBsaW5lYXIsIGFuZCBkZWJ1Z21v
ZGUoK2RvKQotLSMgaXMgYXZhaWxhYmxlIGZvciBmYXN0ZXIgY2hlY2tzIG9mIGRlcmVmZXJlbmNp
bmcgdW5kZWZpbmVkIG1hY3JvcwotLSMgYW5kIGZvcmNpbmcgZHVtcGRlZiB0byBwcmludCB0byBz
dGRlcnIgcmVnYXJkbGVzcyBvZiBkZWJ1Z2ZpbGUuCi0tIyBCdXQgaWYgaXQgaXMgbWlzc2luZywg
d2UgYXNzdW1lIHdlIGFyZSBiZWluZyBydW4gYnkgTTQgMS40LngsIHRoYXQKLS0jICRAIHJlY3Vy
c2lvbiBpcyBxdWFkcmF0aWMsIGFuZCB0aGF0IHdlIG5lZWQgZm9yZWFjaC1iYXNlZAotLSMgcmVw
bGFjZW1lbnQgbWFjcm9zLiAgQWxzbywgbTQgcHJpb3IgdG8gMS40LjggbG9zZXMgdHJhY2sgb2Yg
bG9jYXRpb24KLS0jIGR1cmluZyBtNHdyYXAgdGV4dDsgX19saW5lX18gc2hvdWxkIG5ldmVyIGJl
IDAuCi0tIwotLSMgVXNlIHRoZSByYXcgYnVpbHRpbiB0byBhdm9pZCB0cmlwcGluZyB1cCBpbmNs
dWRlIHRyYWNpbmcuCi0tIyBNZWFud2hpbGUsIGF2b2lkIG00X2NvcHksIHNpbmNlIGl0IHRlbXBv
cmFyaWx5IHVuZGVmaW5lcyBtNF9kZWZuLgotLW00X2lmZGVmKFtfX200X3ZlcnNpb25fX10sCi0t
W200X2RlYnVnbW9kZShbK2RvXSkKLS1tNF9kZWZpbmUoW200X2RlZm5dLCBfbTRfZGVmbihbX200
X2RlZm5dKSkKLS1tNF9kZWZpbmUoW200X2R1bXBkZWZdLCBfbTRfZGVmbihbX200X2R1bXBkZWZd
KSkKLS1tNF9kZWZpbmUoW200X3BvcGRlZl0sIF9tNF9kZWZuKFtfbTRfcG9wZGVmXSkpCi0tbTRf
ZGVmaW5lKFttNF91bmRlZmluZV0sIF9tNF9kZWZuKFtfbTRfdW5kZWZpbmVdKSldLAotLVttNF9i
dWlsdGluKFtpbmNsdWRlXSwgW200c3VnYXIvZm9yZWFjaC5tNF0pCi0tbTRfd3JhcF9saWZvKFtt
NF9pZihfX2xpbmVfXywgWzBdLCBbbTRfcHVzaGRlZihbbTRfbG9jYXRpb25dLAotLV1dbTRfZHF1
b3RlKG00X2RxdW90ZShtNF9kcXVvdGUoX19maWxlX186X19saW5lX18pKSlbWyldKV0pXSkKLS0K
LS0jIFJld3JpdGUgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBkaXZlcnNpb24gc3RhY2suCi0tbTRf
ZGl2ZXJ0KFtLSUxMXSkKLS0KLS0jIENoZWNrIHRoZSBkaXZlcnQgcHVzaC9wb3AgcGVyZmVjdCBi
YWxhbmNlLgotLSMgU29tZSB1c2VycyBhcmUgcHJvbmUgdG8gYWxzbyB1c2UgbTRfd3JhcCB0byBy
ZWdpc3RlciBsYXN0LW1pbnV0ZQotLSMgbTRfZGl2ZXJ0X3RleHQ7IHNvIGFmdGVyIG91ciBkaXZl
cnNpb24gY2xlYW51cHMsIHdlIHJlc3RvcmUKLS0jIEtJTEwgYXMgdGhlIGJvdHRvbSBvZiB0aGUg
ZGl2ZXJzaW9uIHN0YWNrLgotLW00X3dyYXAoW200X3BvcGRlZihbX200X2RpdmVydF9kaXZlcnNp
b25dKW00X2lmZGVmKAotLSAgW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgW200X2ZhdGFsKFskMDog
dW5iYWxhbmNlZCBtNF9kaXZlcnRfcHVzaDoKLS1dbTRfZGl2ZXJ0X3N0YWNrKV0pX200X3BvcGRl
ZihbX200X2RpdmVydF9zdGFja10pbTRfZGl2ZXJ0X3B1c2goW0tJTExdKV0pCi0tXSkKLWRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3Bh
cnR5L3NrZWxldG9ucy9MSUNFTlNFIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxl
eC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvTElDRU5TRQotZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0Ci1pbmRleCA5NGE5ZWQwMjRkMy4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL0xJQ0VO
U0UKLSsrKyAvZGV2L251bGwKLUBAIC0xLDY3NCArMCwwIEBACi0tICAgICAgICAgICAgICAgICAg
ICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQotLSAgICAgICAgICAgICAgICAgICAgICAgVmVy
c2lvbiAzLCAyOSBKdW5lIDIwMDcKLS0KLS0gQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgotLSBFdmVyeW9uZSBpcyBwZXJt
aXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKLS0gb2YgdGhpcyBs
aWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCi0tCi0tICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCi0tCi0tICBUaGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgotLXNvZnR3YXJl
IGFuZCBvdGhlciBraW5kcyBvZiB3b3Jrcy4KLS0KLS0gIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBz
b2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAotLXRvIHRha2Ug
YXdheSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSB0aGUgd29ya3MuICBCeSBjb250
cmFzdCwKLS10aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3Vh
cmFudGVlIHlvdXIgZnJlZWRvbSB0bwotLXNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9m
IGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQotLXNvZnR3YXJlIGZvciBh
bGwgaXRzIHVzZXJzLiAgV2UsIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHVzZSB0aGUK
LS1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9zdCBvZiBvdXIgc29mdHdhcmU7IGl0
IGFwcGxpZXMgYWxzbyB0bwotLWFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0
cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwotLXlvdXIgcHJvZ3JhbXMsIHRvby4KLS0K
LS0gIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBm
cmVlZG9tLCBub3QKLS1wcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVz
aWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91Ci0taGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmli
dXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgotLXRoZW0gaWYgeW91
IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91
Ci0td2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNl
cyBvZiBpdCBpbiBuZXcKLS1mcmVlIHByb2dyYW1zLCBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2Fu
IGRvIHRoZXNlIHRoaW5ncy4KLS0KLS0gIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQg
dG8gcHJldmVudCBvdGhlcnMgZnJvbSBkZW55aW5nIHlvdQotLXRoZXNlIHJpZ2h0cyBvciBhc2tp
bmcgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLiAgVGhlcmVmb3JlLCB5b3UgaGF2ZQotLWNl
cnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNv
ZnR3YXJlLCBvciBpZgotLXlvdSBtb2RpZnkgaXQ6IHJlc3BvbnNpYmlsaXRpZXMgdG8gcmVzcGVj
dCB0aGUgZnJlZWRvbSBvZiBvdGhlcnMuCi0tCi0tICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3Ry
aWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCi0tZ3JhdGlzIG9yIGZvciBh
IGZlZSwgeW91IG11c3QgcGFzcyBvbiB0byB0aGUgcmVjaXBpZW50cyB0aGUgc2FtZQotLWZyZWVk
b21zIHRoYXQgeW91IHJlY2VpdmVkLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9v
LCByZWNlaXZlCi0tb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hv
dyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKLS1rbm93IHRoZWlyIHJpZ2h0cy4KLS0KLS0gIERl
dmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3
byBzdGVwczoKLS0oMSkgYXNzZXJ0IGNvcHlyaWdodCBvbiB0aGUgc29mdHdhcmUsIGFuZCAoMikg
b2ZmZXIgeW91IHRoaXMgTGljZW5zZQotLWdpdmluZyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBj
b3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgaXQuCi0tCi0tICBGb3IgdGhlIGRldmVsb3Bl
cnMnIGFuZCBhdXRob3JzJyBwcm90ZWN0aW9uLCB0aGUgR1BMIGNsZWFybHkgZXhwbGFpbnMKLS10
aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUuICBGb3IgYm90
aCB1c2VycycgYW5kCi0tYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlm
aWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwotLWNoYW5nZWQsIHNvIHRoYXQgdGhlaXIgcHJvYmxl
bXMgd2lsbCBub3QgYmUgYXR0cmlidXRlZCBlcnJvbmVvdXNseSB0bwotLWF1dGhvcnMgb2YgcHJl
dmlvdXMgdmVyc2lvbnMuCi0tCi0tICBTb21lIGRldmljZXMgYXJlIGRlc2lnbmVkIHRvIGRlbnkg
dXNlcnMgYWNjZXNzIHRvIGluc3RhbGwgb3IgcnVuCi0tbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhl
IHNvZnR3YXJlIGluc2lkZSB0aGVtLCBhbHRob3VnaCB0aGUgbWFudWZhY3R1cmVyCi0tY2FuIGRv
IHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YK
LS1wcm90ZWN0aW5nIHVzZXJzJyBmcmVlZG9tIHRvIGNoYW5nZSB0aGUgc29mdHdhcmUuICBUaGUg
c3lzdGVtYXRpYwotLXBhdHRlcm4gb2Ygc3VjaCBhYnVzZSBvY2N1cnMgaW4gdGhlIGFyZWEgb2Yg
cHJvZHVjdHMgZm9yIGluZGl2aWR1YWxzIHRvCi0tdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hl
cmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCi0taGF2ZSBkZXNpZ25l
ZCB0aGlzIHZlcnNpb24gb2YgdGhlIEdQTCB0byBwcm9oaWJpdCB0aGUgcHJhY3RpY2UgZm9yIHRo
b3NlCi0tcHJvZHVjdHMuICBJZiBzdWNoIHByb2JsZW1zIGFyaXNlIHN1YnN0YW50aWFsbHkgaW4g
b3RoZXIgZG9tYWlucywgd2UKLS1zdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24g
dG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKLS1vZiB0aGUgR1BMLCBhcyBuZWVk
ZWQgdG8gcHJvdGVjdCB0aGUgZnJlZWRvbSBvZiB1c2Vycy4KLS0KLS0gIEZpbmFsbHksIGV2ZXJ5
IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuCi0t
U3RhdGVzIHNob3VsZCBub3QgYWxsb3cgcGF0ZW50cyB0byByZXN0cmljdCBkZXZlbG9wbWVudCBh
bmQgdXNlIG9mCi0tc29mdHdhcmUgb24gZ2VuZXJhbC1wdXJwb3NlIGNvbXB1dGVycywgYnV0IGlu
IHRob3NlIHRoYXQgZG8sIHdlIHdpc2ggdG8KLS1hdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhh
dCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKLS1tYWtlIGl0IGVmZmVj
dGl2ZWx5IHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB0aGUgR1BMIGFzc3VyZXMgdGhh
dAotLXBhdGVudHMgY2Fubm90IGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBwcm9ncmFtIG5vbi1mcmVl
LgotLQotLSAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRp
c3RyaWJ1dGlvbiBhbmQKLS1tb2RpZmljYXRpb24gZm9sbG93LgotLQotLSAgICAgICAgICAgICAg
ICAgICAgICAgVEVSTVMgQU5EIENPTkRJVElPTlMKLS0KLS0gIDAuIERlZmluaXRpb25zLgotLQot
LSAgIlRoaXMgTGljZW5zZSIgcmVmZXJzIHRvIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UuCi0tCi0tICAiQ29weXJpZ2h0IiBhbHNvIG1lYW5zIGNvcHlyaWdodC1s
aWtlIGxhd3MgdGhhdCBhcHBseSB0byBvdGhlciBraW5kcyBvZgotLXdvcmtzLCBzdWNoIGFzIHNl
bWljb25kdWN0b3IgbWFza3MuCi0tCi0tICAiVGhlIFByb2dyYW0iIHJlZmVycyB0byBhbnkgY29w
eXJpZ2h0YWJsZSB3b3JrIGxpY2Vuc2VkIHVuZGVyIHRoaXMKLS1MaWNlbnNlLiAgRWFjaCBsaWNl
bnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuICAiTGljZW5zZWVzIiBhbmQKLS0icmVjaXBpZW50
cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCi0tCi0tICBUbyAibW9kaWZ5
IiBhIHdvcmsgbWVhbnMgdG8gY29weSBmcm9tIG9yIGFkYXB0IGFsbCBvciBwYXJ0IG9mIHRoZSB3
b3JrCi0taW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIg
dGhhbiB0aGUgbWFraW5nIG9mIGFuCi0tZXhhY3QgY29weS4gIFRoZSByZXN1bHRpbmcgd29yayBp
cyBjYWxsZWQgYSAibW9kaWZpZWQgdmVyc2lvbiIgb2YgdGhlCi0tZWFybGllciB3b3JrIG9yIGEg
d29yayAiYmFzZWQgb24iIHRoZSBlYXJsaWVyIHdvcmsuCi0tCi0tICBBICJjb3ZlcmVkIHdvcmsi
IG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmllZCBQcm9ncmFtIG9yIGEgd29yayBiYXNlZAotLW9u
IHRoZSBQcm9ncmFtLgotLQotLSAgVG8gInByb3BhZ2F0ZSIgYSB3b3JrIG1lYW5zIHRvIGRvIGFu
eXRoaW5nIHdpdGggaXQgdGhhdCwgd2l0aG91dAotLXBlcm1pc3Npb24sIHdvdWxkIG1ha2UgeW91
IGRpcmVjdGx5IG9yIHNlY29uZGFyaWx5IGxpYWJsZSBmb3IKLS1pbmZyaW5nZW1lbnQgdW5kZXIg
YXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKLS1jb21w
dXRlciBvciBtb2RpZnlpbmcgYSBwcml2YXRlIGNvcHkuICBQcm9wYWdhdGlvbiBpbmNsdWRlcyBj
b3B5aW5nLAotLWRpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiksIG1h
a2luZyBhdmFpbGFibGUgdG8gdGhlCi0tcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3Ro
ZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgotLQotLSAgVG8gImNvbnZleSIgYSB3b3JrIG1lYW5zIGFu
eSBraW5kIG9mIHByb3BhZ2F0aW9uIHRoYXQgZW5hYmxlcyBvdGhlcgotLXBhcnRpZXMgdG8gbWFr
ZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3Vn
aAotLWEgY29tcHV0ZXIgbmV0d29yaywgd2l0aCBubyB0cmFuc2ZlciBvZiBhIGNvcHksIGlzIG5v
dCBjb252ZXlpbmcuCi0tCi0tICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5
cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKLS10byB0aGUgZXh0ZW50IHRoYXQgaXQgaW5j
bHVkZXMgYSBjb252ZW5pZW50IGFuZCBwcm9taW5lbnRseSB2aXNpYmxlCi0tZmVhdHVyZSB0aGF0
ICgxKSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlLCBhbmQgKDIpCi0t
dGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4
Y2VwdCB0byB0aGUKLS1leHRlbnQgdGhhdCB3YXJyYW50aWVzIGFyZSBwcm92aWRlZCksIHRoYXQg
bGljZW5zZWVzIG1heSBjb252ZXkgdGhlCi0td29yayB1bmRlciB0aGlzIExpY2Vuc2UsIGFuZCBo
b3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYKLS10aGUgaW50ZXJmYWNlIHBy
ZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQotLW1l
bnUsIGEgcHJvbWluZW50IGl0ZW0gaW4gdGhlIGxpc3QgbWVldHMgdGhpcyBjcml0ZXJpb24uCi0t
Ci0tICAxLiBTb3VyY2UgQ29kZS4KLS0KLS0gIFRoZSAic291cmNlIGNvZGUiIGZvciBhIHdvcmsg
bWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrCi0tZm9yIG1ha2luZyBtb2RpZmlj
YXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQotLWZvcm0g
b2YgYSB3b3JrLgotLQotLSAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZh
Y2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKLS1zdGFuZGFyZCBkZWZpbmVkIGJ5IGEgcmVj
b2duaXplZCBzdGFuZGFyZHMgYm9keSwgb3IsIGluIHRoZSBjYXNlIG9mCi0taW50ZXJmYWNlcyBz
cGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBwcm9ncmFtbWluZyBsYW5ndWFnZSwgb25lIHRoYXQK
LS1pcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFn
ZS4KLS0KLS0gIFRoZSAiU3lzdGVtIExpYnJhcmllcyIgb2YgYW4gZXhlY3V0YWJsZSB3b3JrIGlu
Y2x1ZGUgYW55dGhpbmcsIG90aGVyCi0tdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChh
KSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKLS1wYWNrYWdpbmcgYSBNYWpvciBD
b21wb25lbnQsIGJ1dCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGF0IE1ham9yCi0tQ29tcG9uZW50
LCBhbmQgKGIpIHNlcnZlcyBvbmx5IHRvIGVuYWJsZSB1c2Ugb2YgdGhlIHdvcmsgd2l0aCB0aGF0
Ci0tTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2Ug
Zm9yIHdoaWNoIGFuCi0taW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMg
aW4gc291cmNlIGNvZGUgZm9ybS4gIEEKLS0iTWFqb3IgQ29tcG9uZW50IiwgaW4gdGhpcyBjb250
ZXh0LCBtZWFucyBhIG1ham9yIGVzc2VudGlhbCBjb21wb25lbnQKLS0oa2VybmVsLCB3aW5kb3cg
c3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCi0tKGlm
IGFueSkgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgd29yayBydW5zLCBvciBhIGNvbXBpbGVyIHVz
ZWQgdG8KLS1wcm9kdWNlIHRoZSB3b3JrLCBvciBhbiBvYmplY3QgY29kZSBpbnRlcnByZXRlciB1
c2VkIHRvIHJ1biBpdC4KLS0KLS0gIFRoZSAiQ29ycmVzcG9uZGluZyBTb3VyY2UiIGZvciBhIHdv
cmsgaW4gb2JqZWN0IGNvZGUgZm9ybSBtZWFucyBhbGwKLS10aGUgc291cmNlIGNvZGUgbmVlZGVk
IHRvIGdlbmVyYXRlLCBpbnN0YWxsLCBhbmQgKGZvciBhbiBleGVjdXRhYmxlCi0td29yaykgcnVu
IHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0
cyB0bwotLWNvbnRyb2wgdGhvc2UgYWN0aXZpdGllcy4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGlu
Y2x1ZGUgdGhlIHdvcmsncwotLVN5c3RlbSBMaWJyYXJpZXMsIG9yIGdlbmVyYWwtcHVycG9zZSB0
b29scyBvciBnZW5lcmFsbHkgYXZhaWxhYmxlIGZyZWUKLS1wcm9ncmFtcyB3aGljaCBhcmUgdXNl
ZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKLS13aGljaCBh
cmUgbm90IHBhcnQgb2YgdGhlIHdvcmsuICBGb3IgZXhhbXBsZSwgQ29ycmVzcG9uZGluZyBTb3Vy
Y2UKLS1pbmNsdWRlcyBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcyBhc3NvY2lhdGVkIHdpdGgg
c291cmNlIGZpbGVzIGZvcgotLXRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFy
ZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQotLWxpbmtlZCBzdWJwcm9ncmFtcyB0aGF0IHRo
ZSB3b3JrIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byByZXF1aXJlLAotLXN1Y2ggYXMgYnkg
aW50aW1hdGUgZGF0YSBjb21tdW5pY2F0aW9uIG9yIGNvbnRyb2wgZmxvdyBiZXR3ZWVuIHRob3Nl
Ci0tc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgotLQotLSAgVGhlIENv
cnJlc3BvbmRpbmcgU291cmNlIG5lZWQgbm90IGluY2x1ZGUgYW55dGhpbmcgdGhhdCB1c2Vycwot
LWNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29y
cmVzcG9uZGluZwotLVNvdXJjZS4KLS0KLS0gIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3Ig
YSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdAotLXNhbWUgd29yay4KLS0KLS0gIDIu
IEJhc2ljIFBlcm1pc3Npb25zLgotLQotLSAgQWxsIHJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMg
TGljZW5zZSBhcmUgZ3JhbnRlZCBmb3IgdGhlIHRlcm0gb2YKLS1jb3B5cmlnaHQgb24gdGhlIFBy
b2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZAotLWNvbmRpdGlv
bnMgYXJlIG1ldC4gIFRoaXMgTGljZW5zZSBleHBsaWNpdGx5IGFmZmlybXMgeW91ciB1bmxpbWl0
ZWQKLS1wZXJtaXNzaW9uIHRvIHJ1biB0aGUgdW5tb2RpZmllZCBQcm9ncmFtLiAgVGhlIG91dHB1
dCBmcm9tIHJ1bm5pbmcgYQotLWNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5z
ZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwotLWNvbnRlbnQsIGNvbnN0aXR1dGVzIGEg
Y292ZXJlZCB3b3JrLiAgVGhpcyBMaWNlbnNlIGFja25vd2xlZGdlcyB5b3VyCi0tcmlnaHRzIG9m
IGZhaXIgdXNlIG9yIG90aGVyIGVxdWl2YWxlbnQsIGFzIHByb3ZpZGVkIGJ5IGNvcHlyaWdodCBs
YXcuCi0tCi0tICBZb3UgbWF5IG1ha2UsIHJ1biBhbmQgcHJvcGFnYXRlIGNvdmVyZWQgd29ya3Mg
dGhhdCB5b3UgZG8gbm90Ci0tY29udmV5LCB3aXRob3V0IGNvbmRpdGlvbnMgc28gbG9uZyBhcyB5
b3VyIGxpY2Vuc2Ugb3RoZXJ3aXNlIHJlbWFpbnMKLS1pbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5
IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCi0tb2YgaGF2aW5n
IHRoZW0gbWFrZSBtb2RpZmljYXRpb25zIGV4Y2x1c2l2ZWx5IGZvciB5b3UsIG9yIHByb3ZpZGUg
eW91Ci0td2l0aCBmYWNpbGl0aWVzIGZvciBydW5uaW5nIHRob3NlIHdvcmtzLCBwcm92aWRlZCB0
aGF0IHlvdSBjb21wbHkgd2l0aAotLXRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5
aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCi0tbm90IGNvbnRyb2wgY29weXJpZ2h0
LiAgVGhvc2UgdGh1cyBtYWtpbmcgb3IgcnVubmluZyB0aGUgY292ZXJlZCB3b3JrcwotLWZvciB5
b3UgbXVzdCBkbyBzbyBleGNsdXNpdmVseSBvbiB5b3VyIGJlaGFsZiwgdW5kZXIgeW91ciBkaXJl
Y3Rpb24KLS1hbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFr
aW5nIGFueSBjb3BpZXMgb2YKLS15b3VyIGNvcHlyaWdodGVkIG1hdGVyaWFsIG91dHNpZGUgdGhl
aXIgcmVsYXRpb25zaGlwIHdpdGggeW91LgotLQotLSAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhl
ciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKLS10aGUgY29uZGl0aW9u
cyBzdGF0ZWQgYmVsb3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFsbG93ZWQ7IHNlY3Rpb24gMTAK
LS1tYWtlcyBpdCB1bm5lY2Vzc2FyeS4KLS0KLS0gIDMuIFByb3RlY3RpbmcgVXNlcnMnIExlZ2Fs
IFJpZ2h0cyBGcm9tIEFudGktQ2lyY3VtdmVudGlvbiBMYXcuCi0tCi0tICBObyBjb3ZlcmVkIHdv
cmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKLS1t
ZWFzdXJlIHVuZGVyIGFueSBhcHBsaWNhYmxlIGxhdyBmdWxmaWxsaW5nIG9ibGlnYXRpb25zIHVu
ZGVyIGFydGljbGUKLS0xMSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQgdHJlYXR5IGFkb3B0ZWQgb24g
MjAgRGVjZW1iZXIgMTk5Niwgb3IKLS1zaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJp
Y3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCi0tbWVhc3VyZXMuCi0tCi0tICBXaGVuIHlvdSBj
b252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlk
Ci0tY2lyY3VtdmVudGlvbiBvZiB0ZWNobm9sb2dpY2FsIG1lYXN1cmVzIHRvIHRoZSBleHRlbnQg
c3VjaCBjaXJjdW12ZW50aW9uCi0taXMgZWZmZWN0ZWQgYnkgZXhlcmNpc2luZyByaWdodHMgdW5k
ZXIgdGhpcyBMaWNlbnNlIHdpdGggcmVzcGVjdCB0bwotLXRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5
b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKLS1tb2RpZmlj
YXRpb24gb2YgdGhlIHdvcmsgYXMgYSBtZWFucyBvZiBlbmZvcmNpbmcsIGFnYWluc3QgdGhlIHdv
cmsncwotLXVzZXJzLCB5b3VyIG9yIHRoaXJkIHBhcnRpZXMnIGxlZ2FsIHJpZ2h0cyB0byBmb3Ji
aWQgY2lyY3VtdmVudGlvbiBvZgotLXRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCi0tCi0tICA0LiBD
b252ZXlpbmcgVmVyYmF0aW0gQ29waWVzLgotLQotLSAgWW91IG1heSBjb252ZXkgdmVyYmF0aW0g
Y29waWVzIG9mIHRoZSBQcm9ncmFtJ3Mgc291cmNlIGNvZGUgYXMgeW91Ci0tcmVjZWl2ZSBpdCwg
aW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UgY29uc3BpY3VvdXNseSBhbmQKLS1hcHBy
b3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBu
b3RpY2U7Ci0ta2VlcCBpbnRhY3QgYWxsIG5vdGljZXMgc3RhdGluZyB0aGF0IHRoaXMgTGljZW5z
ZSBhbmQgYW55Ci0tbm9uLXBlcm1pc3NpdmUgdGVybXMgYWRkZWQgaW4gYWNjb3JkIHdpdGggc2Vj
dGlvbiA3IGFwcGx5IHRvIHRoZSBjb2RlOwotLWtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRo
ZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCi0tcmVjaXBpZW50cyBhIGNv
cHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlIFByb2dyYW0uCi0tCi0tICBZb3UgbWF5
IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252
ZXksCi0tYW5kIHlvdSBtYXkgb2ZmZXIgc3VwcG9ydCBvciB3YXJyYW50eSBwcm90ZWN0aW9uIGZv
ciBhIGZlZS4KLS0KLS0gIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCi0t
Ci0tICBZb3UgbWF5IGNvbnZleSBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIG9yIHRoZSBt
b2RpZmljYXRpb25zIHRvCi0tcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9y
bSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKLS10ZXJtcyBvZiBzZWN0aW9uIDQsIHByb3ZpZGVk
IHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKLS0KLS0gICAgYSkg
VGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1v
ZGlmaWVkCi0tICAgIGl0LCBhbmQgZ2l2aW5nIGEgcmVsZXZhbnQgZGF0ZS4KLS0KLS0gICAgYikg
VGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMK
LS0gICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkgY29uZGl0aW9ucyBhZGRl
ZCB1bmRlciBzZWN0aW9uCi0tICAgIDcuICBUaGlzIHJlcXVpcmVtZW50IG1vZGlmaWVzIHRoZSBy
ZXF1aXJlbWVudCBpbiBzZWN0aW9uIDQgdG8KLS0gICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2Vz
Ii4KLS0KLS0gICAgYykgWW91IG11c3QgbGljZW5zZSB0aGUgZW50aXJlIHdvcmssIGFzIGEgd2hv
bGUsIHVuZGVyIHRoaXMKLS0gICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9z
c2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCi0tICAgIExpY2Vuc2Ugd2lsbCB0aGVyZWZvcmUgYXBw
bHksIGFsb25nIHdpdGggYW55IGFwcGxpY2FibGUgc2VjdGlvbiA3Ci0tICAgIGFkZGl0aW9uYWwg
dGVybXMsIHRvIHRoZSB3aG9sZSBvZiB0aGUgd29yaywgYW5kIGFsbCBpdHMgcGFydHMsCi0tICAg
IHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVz
IG5vCi0tICAgIHBlcm1pc3Npb24gdG8gbGljZW5zZSB0aGUgd29yayBpbiBhbnkgb3RoZXIgd2F5
LCBidXQgaXQgZG9lcyBub3QKLS0gICAgaW52YWxpZGF0ZSBzdWNoIHBlcm1pc3Npb24gaWYgeW91
IGhhdmUgc2VwYXJhdGVseSByZWNlaXZlZCBpdC4KLS0KLS0gICAgZCkgSWYgdGhlIHdvcmsgaGFz
IGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlcywgZWFjaCBtdXN0IGRpc3BsYXkKLS0gICAgQXBw
cm9wcmlhdGUgTGVnYWwgTm90aWNlczsgaG93ZXZlciwgaWYgdGhlIFByb2dyYW0gaGFzIGludGVy
YWN0aXZlCi0tICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBM
ZWdhbCBOb3RpY2VzLCB5b3VyCi0tICAgIHdvcmsgbmVlZCBub3QgbWFrZSB0aGVtIGRvIHNvLgot
LQotLSAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRl
IGFuZCBpbmRlcGVuZGVudAotLXdvcmtzLCB3aGljaCBhcmUgbm90IGJ5IHRoZWlyIG5hdHVyZSBl
eHRlbnNpb25zIG9mIHRoZSBjb3ZlcmVkIHdvcmssCi0tYW5kIHdoaWNoIGFyZSBub3QgY29tYmlu
ZWQgd2l0aCBpdCBzdWNoIGFzIHRvIGZvcm0gYSBsYXJnZXIgcHJvZ3JhbSwKLS1pbiBvciBvbiBh
IHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFu
Ci0tImFnZ3JlZ2F0ZSIgaWYgdGhlIGNvbXBpbGF0aW9uIGFuZCBpdHMgcmVzdWx0aW5nIGNvcHly
aWdodCBhcmUgbm90Ci0tdXNlZCB0byBsaW1pdCB0aGUgYWNjZXNzIG9yIGxlZ2FsIHJpZ2h0cyBv
ZiB0aGUgY29tcGlsYXRpb24ncyB1c2VycwotLWJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdv
cmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawotLWluIGFuIGFnZ3JlZ2F0
ZSBkb2VzIG5vdCBjYXVzZSB0aGlzIExpY2Vuc2UgdG8gYXBwbHkgdG8gdGhlIG90aGVyCi0tcGFy
dHMgb2YgdGhlIGFnZ3JlZ2F0ZS4KLS0KLS0gIDYuIENvbnZleWluZyBOb24tU291cmNlIEZvcm1z
LgotLQotLSAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9y
bSB1bmRlciB0aGUgdGVybXMKLS1vZiBzZWN0aW9ucyA0IGFuZCA1LCBwcm92aWRlZCB0aGF0IHlv
dSBhbHNvIGNvbnZleSB0aGUKLS1tYWNoaW5lLXJlYWRhYmxlIENvcnJlc3BvbmRpbmcgU291cmNl
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsCi0taW4gb25lIG9mIHRoZXNlIHdheXM6
Ci0tCi0tICAgIGEpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBh
IHBoeXNpY2FsIHByb2R1Y3QKLS0gICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlv
biBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKLS0gICAgQ29ycmVzcG9uZGluZyBTb3VyY2Ug
Zml4ZWQgb24gYSBkdXJhYmxlIHBoeXNpY2FsIG1lZGl1bQotLSAgICBjdXN0b21hcmlseSB1c2Vk
IGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KLS0KLS0gICAgYikgQ29udmV5IHRoZSBvYmplY3Qg
Y29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAotLSAgICAoaW5jbHVk
aW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IGEKLS0g
ICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxp
ZCBmb3IgYXMKLS0gICAgbG9uZyBhcyB5b3Ugb2ZmZXIgc3BhcmUgcGFydHMgb3IgY3VzdG9tZXIg
c3VwcG9ydCBmb3IgdGhhdCBwcm9kdWN0Ci0tICAgIG1vZGVsLCB0byBnaXZlIGFueW9uZSB3aG8g
cG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRoZXIgKDEpIGEKLS0gICAgY29weSBvZiB0aGUg
Q29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCi0tICAgIHBy
b2R1Y3QgdGhhdCBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwgb24gYSBkdXJhYmxlIHBoeXNp
Y2FsCi0tICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5n
ZSwgZm9yIGEgcHJpY2Ugbm8KLS0gICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9m
IHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCi0tICAgIGNvbnZleWluZyBvZiBzb3VyY2UsIG9y
ICgyKSBhY2Nlc3MgdG8gY29weSB0aGUKLS0gICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgZnJvbSBh
IG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS4KLS0KLS0gICAgYykgQ29udmV5IGluZGl2aWR1
YWwgY29waWVzIG9mIHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29weSBvZiB0aGUKLS0gICAgd3Jp
dHRlbiBvZmZlciB0byBwcm92aWRlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRoaXMKLS0g
ICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVy
Y2lhbGx5LCBhbmQKLS0gICAgb25seSBpZiB5b3UgcmVjZWl2ZWQgdGhlIG9iamVjdCBjb2RlIHdp
dGggc3VjaCBhbiBvZmZlciwgaW4gYWNjb3JkCi0tICAgIHdpdGggc3Vic2VjdGlvbiA2Yi4KLS0K
LS0gICAgZCkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBieSBvZmZlcmluZyBhY2Nlc3MgZnJvbSBh
IGRlc2lnbmF0ZWQKLS0gICAgcGxhY2UgKGdyYXRpcyBvciBmb3IgYSBjaGFyZ2UpLCBhbmQgb2Zm
ZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gdGhlCi0tICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGlu
IHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCi0tICAgIGZ1cnRoZXIg
Y2hhcmdlLiAgWW91IG5lZWQgbm90IHJlcXVpcmUgcmVjaXBpZW50cyB0byBjb3B5IHRoZQotLSAg
ICBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4gIElmIHRo
ZSBwbGFjZSB0bwotLSAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVy
LCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKLS0gICAgbWF5IGJlIG9uIGEgZGlmZmVyZW50IHNl
cnZlciAob3BlcmF0ZWQgYnkgeW91IG9yIGEgdGhpcmQgcGFydHkpCi0tICAgIHRoYXQgc3VwcG9y
dHMgZXF1aXZhbGVudCBjb3B5aW5nIGZhY2lsaXRpZXMsIHByb3ZpZGVkIHlvdSBtYWludGFpbgot
LSAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVy
ZSB0byBmaW5kIHRoZQotLSAgICBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFJlZ2FyZGxlc3Mgb2Yg
d2hhdCBzZXJ2ZXIgaG9zdHMgdGhlCi0tICAgIENvcnJlc3BvbmRpbmcgU291cmNlLCB5b3UgcmVt
YWluIG9ibGlnYXRlZCB0byBlbnN1cmUgdGhhdCBpdCBpcwotLSAgICBhdmFpbGFibGUgZm9yIGFz
IGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgotLQotLSAgICBl
KSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24s
IHByb3ZpZGVkCi0tICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBj
b2RlIGFuZCBDb3JyZXNwb25kaW5nCi0tICAgIFNvdXJjZSBvZiB0aGUgd29yayBhcmUgYmVpbmcg
b2ZmZXJlZCB0byB0aGUgZ2VuZXJhbCBwdWJsaWMgYXQgbm8KLS0gICAgY2hhcmdlIHVuZGVyIHN1
YnNlY3Rpb24gNmQuCi0tCi0tICBBIHNlcGFyYWJsZSBwb3J0aW9uIG9mIHRoZSBvYmplY3QgY29k
ZSwgd2hvc2Ugc291cmNlIGNvZGUgaXMgZXhjbHVkZWQKLS1mcm9tIHRoZSBDb3JyZXNwb25kaW5n
IFNvdXJjZSBhcyBhIFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBiZQotLWluY2x1ZGVkIGluIGNv
bnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KLS0KLS0gIEEgIlVzZXIgUHJvZHVjdCIgaXMg
ZWl0aGVyICgxKSBhICJjb25zdW1lciBwcm9kdWN0Iiwgd2hpY2ggbWVhbnMgYW55Ci0tdGFuZ2li
bGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWws
IGZhbWlseSwKLS1vciBob3VzZWhvbGQgcHVycG9zZXMsIG9yICgyKSBhbnl0aGluZyBkZXNpZ25l
ZCBvciBzb2xkIGZvciBpbmNvcnBvcmF0aW9uCi0taW50byBhIGR3ZWxsaW5nLiAgSW4gZGV0ZXJt
aW5pbmcgd2hldGhlciBhIHByb2R1Y3QgaXMgYSBjb25zdW1lciBwcm9kdWN0LAotLWRvdWJ0ZnVs
IGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFy
dGljdWxhcgotLXByb2R1Y3QgcmVjZWl2ZWQgYnkgYSBwYXJ0aWN1bGFyIHVzZXIsICJub3JtYWxs
eSB1c2VkIiByZWZlcnMgdG8gYQotLXR5cGljYWwgb3IgY29tbW9uIHVzZSBvZiB0aGF0IGNsYXNz
IG9mIHByb2R1Y3QsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXR1cwotLW9mIHRoZSBwYXJ0aWN1bGFy
IHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCi0tYWN0dWFs
bHkgdXNlcywgb3IgZXhwZWN0cyBvciBpcyBleHBlY3RlZCB0byB1c2UsIHRoZSBwcm9kdWN0LiAg
QSBwcm9kdWN0Ci0taXMgYSBjb25zdW1lciBwcm9kdWN0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0
aGUgcHJvZHVjdCBoYXMgc3Vic3RhbnRpYWwKLS1jb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5v
bi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAotLXRoZSBvbmx5IHNp
Z25pZmljYW50IG1vZGUgb2YgdXNlIG9mIHRoZSBwcm9kdWN0LgotLQotLSAgIkluc3RhbGxhdGlv
biBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLAotLXBy
b2NlZHVyZXMsIGF1dGhvcml6YXRpb24ga2V5cywgb3Igb3RoZXIgaW5mb3JtYXRpb24gcmVxdWly
ZWQgdG8gaW5zdGFsbAotLWFuZCBleGVjdXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIGEgY292ZXJl
ZCB3b3JrIGluIHRoYXQgVXNlciBQcm9kdWN0IGZyb20KLS1hIG1vZGlmaWVkIHZlcnNpb24gb2Yg
aXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKLS1zdWZmaWNl
IHRvIGVuc3VyZSB0aGF0IHRoZSBjb250aW51ZWQgZnVuY3Rpb25pbmcgb2YgdGhlIG1vZGlmaWVk
IG9iamVjdAotLWNvZGUgaXMgaW4gbm8gY2FzZSBwcmV2ZW50ZWQgb3IgaW50ZXJmZXJlZCB3aXRo
IHNvbGVseSBiZWNhdXNlCi0tbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCi0tCi0tICBJZiB5
b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsgdW5kZXIgdGhpcyBzZWN0aW9uIGluLCBvciB3
aXRoLCBvcgotLXNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRo
ZSBjb252ZXlpbmcgb2NjdXJzIGFzCi0tcGFydCBvZiBhIHRyYW5zYWN0aW9uIGluIHdoaWNoIHRo
ZSByaWdodCBvZiBwb3NzZXNzaW9uIGFuZCB1c2Ugb2YgdGhlCi0tVXNlciBQcm9kdWN0IGlzIHRy
YW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0dWl0eSBvciBmb3IgYQotLWZpeGVk
IHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVk
KSwgdGhlCi0tQ29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQgdW5kZXIgdGhpcyBzZWN0aW9u
IG11c3QgYmUgYWNjb21wYW5pZWQKLS1ieSB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uLiAg
QnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKLS1pZiBuZWl0aGVyIHlvdSBub3Ig
YW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAotLW1vZGlmaWVk
IG9iamVjdCBjb2RlIG9uIHRoZSBVc2VyIFByb2R1Y3QgKGZvciBleGFtcGxlLCB0aGUgd29yayBo
YXMKLS1iZWVuIGluc3RhbGxlZCBpbiBST00pLgotLQotLSAgVGhlIHJlcXVpcmVtZW50IHRvIHBy
b3ZpZGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIGRvZXMgbm90IGluY2x1ZGUgYQotLXJlcXVp
cmVtZW50IHRvIGNvbnRpbnVlIHRvIHByb3ZpZGUgc3VwcG9ydCBzZXJ2aWNlLCB3YXJyYW50eSwg
b3IgdXBkYXRlcwotLWZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxs
ZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCi0tdGhlIFVzZXIgUHJvZHVjdCBpbiB3aGljaCBp
dCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQuICBBY2Nlc3MgdG8gYQotLW5ldHdvcmsg
bWF5IGJlIGRlbmllZCB3aGVuIHRoZSBtb2RpZmljYXRpb24gaXRzZWxmIG1hdGVyaWFsbHkgYW5k
Ci0tYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9s
YXRlcyB0aGUgcnVsZXMgYW5kCi0tcHJvdG9jb2xzIGZvciBjb21tdW5pY2F0aW9uIGFjcm9zcyB0
aGUgbmV0d29yay4KLS0KLS0gIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5z
dGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAotLWluIGFjY29yZCB3aXRoIHRoaXMgc2Vj
dGlvbiBtdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgaXMgcHVibGljbHkKLS1kb2N1bWVudGVkIChh
bmQgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbgotLXNv
dXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Ig
a2V5IGZvcgotLXVucGFja2luZywgcmVhZGluZyBvciBjb3B5aW5nLgotLQotLSAgNy4gQWRkaXRp
b25hbCBUZXJtcy4KLS0KLS0gICJBZGRpdGlvbmFsIHBlcm1pc3Npb25zIiBhcmUgdGVybXMgdGhh
dCBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzCi0tTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0
aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgotLUFkZGl0aW9uYWwgcGVy
bWlzc2lvbnMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZW50aXJlIFByb2dyYW0gc2hhbGwK
LS1iZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBMaWNlbnNl
LCB0byB0aGUgZXh0ZW50Ci0tdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxh
dy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKLS1hcHBseSBvbmx5IHRvIHBhcnQgb2YgdGhl
IFByb2dyYW0sIHRoYXQgcGFydCBtYXkgYmUgdXNlZCBzZXBhcmF0ZWx5Ci0tdW5kZXIgdGhvc2Ug
cGVybWlzc2lvbnMsIGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVtYWlucyBnb3Zlcm5lZCBieQot
LXRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9u
cy4KLS0KLS0gIFdoZW4geW91IGNvbnZleSBhIGNvcHkgb2YgYSBjb3ZlcmVkIHdvcmssIHlvdSBt
YXkgYXQgeW91ciBvcHRpb24KLS1yZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJv
bSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKLS1pdC4gIChBZGRpdGlvbmFsIHBlcm1p
c3Npb25zIG1heSBiZSB3cml0dGVuIHRvIHJlcXVpcmUgdGhlaXIgb3duCi0tcmVtb3ZhbCBpbiBj
ZXJ0YWluIGNhc2VzIHdoZW4geW91IG1vZGlmeSB0aGUgd29yay4pICBZb3UgbWF5IHBsYWNlCi0t
YWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292
ZXJlZCB3b3JrLAotLWZvciB3aGljaCB5b3UgaGF2ZSBvciBjYW4gZ2l2ZSBhcHByb3ByaWF0ZSBj
b3B5cmlnaHQgcGVybWlzc2lvbi4KLS0KLS0gIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJv
dmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQotLWFkZCB0byBhIGNvdmVy
ZWQgd29yaywgeW91IG1heSAoaWYgYXV0aG9yaXplZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlcnMg
b2YKLS10aGF0IG1hdGVyaWFsKSBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ug
d2l0aCB0ZXJtczoKLS0KLS0gICAgYSkgRGlzY2xhaW1pbmcgd2FycmFudHkgb3IgbGltaXRpbmcg
bGlhYmlsaXR5IGRpZmZlcmVudGx5IGZyb20gdGhlCi0tICAgIHRlcm1zIG9mIHNlY3Rpb25zIDE1
IGFuZCAxNiBvZiB0aGlzIExpY2Vuc2U7IG9yCi0tCi0tICAgIGIpIFJlcXVpcmluZyBwcmVzZXJ2
YXRpb24gb2Ygc3BlY2lmaWVkIHJlYXNvbmFibGUgbGVnYWwgbm90aWNlcyBvcgotLSAgICBhdXRo
b3IgYXR0cmlidXRpb25zIGluIHRoYXQgbWF0ZXJpYWwgb3IgaW4gdGhlIEFwcHJvcHJpYXRlIExl
Z2FsCi0tICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCi0t
Ci0tICAgIGMpIFByb2hpYml0aW5nIG1pc3JlcHJlc2VudGF0aW9uIG9mIHRoZSBvcmlnaW4gb2Yg
dGhhdCBtYXRlcmlhbCwgb3IKLS0gICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMg
b2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KLS0gICAgcmVhc29uYWJsZSB3YXlzIGFzIGRp
ZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCB2ZXJzaW9uOyBvcgotLQotLSAgICBkKSBMaW1pdGlu
ZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9y
Ci0tICAgIGF1dGhvcnMgb2YgdGhlIG1hdGVyaWFsOyBvcgotLQotLSAgICBlKSBEZWNsaW5pbmcg
dG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCi0tICAg
IHRyYWRlIG5hbWVzLCB0cmFkZW1hcmtzLCBvciBzZXJ2aWNlIG1hcmtzOyBvcgotLQotLSAgICBm
KSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0
aGF0Ci0tICAgIG1hdGVyaWFsIGJ5IGFueW9uZSB3aG8gY29udmV5cyB0aGUgbWF0ZXJpYWwgKG9y
IG1vZGlmaWVkIHZlcnNpb25zIG9mCi0tICAgIGl0KSB3aXRoIGNvbnRyYWN0dWFsIGFzc3VtcHRp
b25zIG9mIGxpYWJpbGl0eSB0byB0aGUgcmVjaXBpZW50LCBmb3IKLS0gICAgYW55IGxpYWJpbGl0
eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgot
LSAgICB0aG9zZSBsaWNlbnNvcnMgYW5kIGF1dGhvcnMuCi0tCi0tICBBbGwgb3RoZXIgbm9uLXBl
cm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgotLXJlc3Ry
aWN0aW9ucyIgd2l0aGluIHRoZSBtZWFuaW5nIG9mIHNlY3Rpb24gMTAuICBJZiB0aGUgUHJvZ3Jh
bSBhcyB5b3UKLS1yZWNlaXZlZCBpdCwgb3IgYW55IHBhcnQgb2YgaXQsIGNvbnRhaW5zIGEgbm90
aWNlIHN0YXRpbmcgdGhhdCBpdCBpcwotLWdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3
aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgotLXJlc3RyaWN0aW9uLCB5b3UgbWF5IHJlbW92
ZSB0aGF0IHRlcm0uICBJZiBhIGxpY2Vuc2UgZG9jdW1lbnQgY29udGFpbnMKLS1hIGZ1cnRoZXIg
cmVzdHJpY3Rpb24gYnV0IHBlcm1pdHMgcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nIHVuZGVyIHRo
aXMKLS1MaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zl
cm5lZCBieSB0aGUgdGVybXMKLS1vZiB0aGF0IGxpY2Vuc2UgZG9jdW1lbnQsIHByb3ZpZGVkIHRo
YXQgdGhlIGZ1cnRoZXIgcmVzdHJpY3Rpb24gZG9lcwotLW5vdCBzdXJ2aXZlIHN1Y2ggcmVsaWNl
bnNpbmcgb3IgY29udmV5aW5nLgotLQotLSAgSWYgeW91IGFkZCB0ZXJtcyB0byBhIGNvdmVyZWQg
d29yayBpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24sIHlvdQotLW11c3QgcGxhY2UsIGluIHRo
ZSByZWxldmFudCBzb3VyY2UgZmlsZXMsIGEgc3RhdGVtZW50IG9mIHRoZQotLWFkZGl0aW9uYWwg
dGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwot
LXdoZXJlIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgdGVybXMuCi0tCi0tICBBZGRpdGlvbmFsIHRl
cm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQot
LWZvcm0gb2YgYSBzZXBhcmF0ZWx5IHdyaXR0ZW4gbGljZW5zZSwgb3Igc3RhdGVkIGFzIGV4Y2Vw
dGlvbnM7Ci0tdGhlIGFib3ZlIHJlcXVpcmVtZW50cyBhcHBseSBlaXRoZXIgd2F5LgotLQotLSAg
OC4gVGVybWluYXRpb24uCi0tCi0tICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEg
Y292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKLS1wcm92aWRlZCB1bmRlciB0aGlzIExp
Y2Vuc2UuICBBbnkgYXR0ZW1wdCBvdGhlcndpc2UgdG8gcHJvcGFnYXRlIG9yCi0tbW9kaWZ5IGl0
IGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVu
ZGVyCi0tdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVk
IHVuZGVyIHRoZSB0aGlyZAotLXBhcmFncmFwaCBvZiBzZWN0aW9uIDExKS4KLS0KLS0gIEhvd2V2
ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3Vy
Ci0tbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0
ZWQgKGEpCi0tcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0IGhv
bGRlciBleHBsaWNpdGx5IGFuZAotLWZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFu
ZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKLS1ob2xkZXIgZmFpbHMgdG8gbm90
aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucwotLXByaW9y
IHRvIDYwIGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KLS0KLS0gIE1vcmVvdmVyLCB5b3VyIGxp
Y2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcwotLXJlaW5zdGF0ZWQg
cGVybWFuZW50bHkgaWYgdGhlIGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQot
LXZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRp
bWUgeW91IGhhdmUKLS1yZWNlaXZlZCBub3RpY2Ugb2YgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5z
ZSAoZm9yIGFueSB3b3JrKSBmcm9tIHRoYXQKLS1jb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1
cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0byAzMCBkYXlzIGFmdGVyCi0teW91ciByZWNlaXB0IG9m
IHRoZSBub3RpY2UuCi0tCi0tICBUZXJtaW5hdGlvbiBvZiB5b3VyIHJpZ2h0cyB1bmRlciB0aGlz
IHNlY3Rpb24gZG9lcyBub3QgdGVybWluYXRlIHRoZQotLWxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hv
IGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgotLXRoaXMgTGlj
ZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUgYmVlbiB0ZXJtaW5hdGVkIGFuZCBub3QgcGVybWFu
ZW50bHkKLS1yZWluc3RhdGVkLCB5b3UgZG8gbm90IHF1YWxpZnkgdG8gcmVjZWl2ZSBuZXcgbGlj
ZW5zZXMgZm9yIHRoZSBzYW1lCi0tbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KLS0KLS0gIDku
IEFjY2VwdGFuY2UgTm90IFJlcXVpcmVkIGZvciBIYXZpbmcgQ29waWVzLgotLQotLSAgWW91IGFy
ZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBpbiBvcmRlciB0byByZWNlaXZl
IG9yCi0tcnVuIGEgY29weSBvZiB0aGUgUHJvZ3JhbS4gIEFuY2lsbGFyeSBwcm9wYWdhdGlvbiBv
ZiBhIGNvdmVyZWQgd29yawotLW9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1
c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCi0tdG8gcmVjZWl2ZSBhIGNvcHkgbGlrZXdp
c2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93ZXZlciwKLS1ub3RoaW5nIG90aGVy
IHRoYW4gdGhpcyBMaWNlbnNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBwcm9wYWdhdGUgb3IK
LS1tb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJp
Z2h0IGlmIHlvdSBkbwotLW5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieSBt
b2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQotLWNvdmVyZWQgd29yaywgeW91IGluZGljYXRlIHlv
dXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28uCi0tCi0tICAxMC4gQXV0b21h
dGljIExpY2Vuc2luZyBvZiBEb3duc3RyZWFtIFJlY2lwaWVudHMuCi0tCi0tICBFYWNoIHRpbWUg
eW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5Ci0t
cmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29ycywgdG8gcnVuLCBt
b2RpZnkgYW5kCi0tcHJvcGFnYXRlIHRoYXQgd29yaywgc3ViamVjdCB0byB0aGlzIExpY2Vuc2Uu
ICBZb3UgYXJlIG5vdCByZXNwb25zaWJsZQotLWZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0
aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgotLQotLSAgQW4gImVudGl0eSB0cmFuc2Fj
dGlvbiIgaXMgYSB0cmFuc2FjdGlvbiB0cmFuc2ZlcnJpbmcgY29udHJvbCBvZiBhbgotLW9yZ2Fu
aXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRp
bmcgYW4KLS1vcmdhbml6YXRpb24sIG9yIG1lcmdpbmcgb3JnYW5pemF0aW9ucy4gIElmIHByb3Bh
Z2F0aW9uIG9mIGEgY292ZXJlZAotLXdvcmsgcmVzdWx0cyBmcm9tIGFuIGVudGl0eSB0cmFuc2Fj
dGlvbiwgZWFjaCBwYXJ0eSB0byB0aGF0Ci0tdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29w
eSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCi0tbGljZW5zZXMgdG8gdGhlIHdv
cmsgdGhlIHBhcnR5J3MgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QgaGFkIG9yIGNvdWxkCi0tZ2l2
ZSB1bmRlciB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBwbHVzIGEgcmlnaHQgdG8gcG9zc2Vzc2lv
biBvZiB0aGUKLS1Db3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVk
ZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKLS10aGUgcHJlZGVjZXNzb3IgaGFzIGl0IG9yIGNhbiBn
ZXQgaXQgd2l0aCByZWFzb25hYmxlIGVmZm9ydHMuCi0tCi0tICBZb3UgbWF5IG5vdCBpbXBvc2Ug
YW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKLS1yaWdodHMg
Z3JhbnRlZCBvciBhZmZpcm1lZCB1bmRlciB0aGlzIExpY2Vuc2UuICBGb3IgZXhhbXBsZSwgeW91
IG1heQotLW5vdCBpbXBvc2UgYSBsaWNlbnNlIGZlZSwgcm95YWx0eSwgb3Igb3RoZXIgY2hhcmdl
IGZvciBleGVyY2lzZSBvZgotLXJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5k
IHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KLS0oaW5jbHVkaW5nIGEgY3Jvc3MtY2xh
aW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdAotLWFueSBwYXRl
bnQgY2xhaW0gaXMgaW5mcmluZ2VkIGJ5IG1ha2luZywgdXNpbmcsIHNlbGxpbmcsIG9mZmVyaW5n
IGZvcgotLXNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBp
dC4KLS0KLS0gIDExLiBQYXRlbnRzLgotLQotLSAgQSAiY29udHJpYnV0b3IiIGlzIGEgY29weXJp
Z2h0IGhvbGRlciB3aG8gYXV0aG9yaXplcyB1c2UgdW5kZXIgdGhpcwotLUxpY2Vuc2Ugb2YgdGhl
IFByb2dyYW0gb3IgYSB3b3JrIG9uIHdoaWNoIHRoZSBQcm9ncmFtIGlzIGJhc2VkLiAgVGhlCi0t
d29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0
b3IgdmVyc2lvbiIuCi0tCi0tICBBIGNvbnRyaWJ1dG9yJ3MgImVzc2VudGlhbCBwYXRlbnQgY2xh
aW1zIiBhcmUgYWxsIHBhdGVudCBjbGFpbXMKLS1vd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBj
b250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCi0taGVyZWFmdGVyIGFjcXVp
cmVkLCB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBieSBzb21lIG1hbm5lciwgcGVybWl0dGVkCi0t
YnkgdGhpcyBMaWNlbnNlLCBvZiBtYWtpbmcsIHVzaW5nLCBvciBzZWxsaW5nIGl0cyBjb250cmli
dXRvciB2ZXJzaW9uLAotLWJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBp
bmZyaW5nZWQgb25seSBhcyBhCi0tY29uc2VxdWVuY2Ugb2YgZnVydGhlciBtb2RpZmljYXRpb24g
b2YgdGhlIGNvbnRyaWJ1dG9yIHZlcnNpb24uICBGb3IKLS1wdXJwb3NlcyBvZiB0aGlzIGRlZmlu
aXRpb24sICJjb250cm9sIiBpbmNsdWRlcyB0aGUgcmlnaHQgdG8gZ3JhbnQKLS1wYXRlbnQgc3Vi
bGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YK
LS10aGlzIExpY2Vuc2UuCi0tCi0tICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24t
ZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQotLXBhdGVudCBsaWNlbnNlIHVuZGVy
IHRoZSBjb250cmlidXRvcidzIGVzc2VudGlhbCBwYXRlbnQgY2xhaW1zLCB0bwotLW1ha2UsIHVz
ZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHJ1biwgbW9kaWZ5
IGFuZAotLXByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24u
Ci0tCi0tICBJbiB0aGUgZm9sbG93aW5nIHRocmVlIHBhcmFncmFwaHMsIGEgInBhdGVudCBsaWNl
bnNlIiBpcyBhbnkgZXhwcmVzcwotLWFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRl
bm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAotLShzdWNoIGFzIGFuIGV4cHJlc3Mg
cGVybWlzc2lvbiB0byBwcmFjdGljZSBhIHBhdGVudCBvciBjb3ZlbmFudCBub3QgdG8KLS1zdWUg
Zm9yIHBhdGVudCBpbmZyaW5nZW1lbnQpLiAgVG8gImdyYW50IiBzdWNoIGEgcGF0ZW50IGxpY2Vu
c2UgdG8gYQotLXBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0
bWVudCBub3QgdG8gZW5mb3JjZSBhCi0tcGF0ZW50IGFnYWluc3QgdGhlIHBhcnR5LgotLQotLSAg
SWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRl
bnQgbGljZW5zZSwKLS1hbmQgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG9mIHRoZSB3b3JrIGlz
IG5vdCBhdmFpbGFibGUgZm9yIGFueW9uZQotLXRvIGNvcHksIGZyZWUgb2YgY2hhcmdlIGFuZCB1
bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLCB0aHJvdWdoIGEKLS1wdWJsaWNseSBhdmFp
bGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAot
LXRoZW4geW91IG11c3QgZWl0aGVyICgxKSBjYXVzZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ug
dG8gYmUgc28KLS1hdmFpbGFibGUsIG9yICgyKSBhcnJhbmdlIHRvIGRlcHJpdmUgeW91cnNlbGYg
b2YgdGhlIGJlbmVmaXQgb2YgdGhlCi0tcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxh
ciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKLS1jb25zaXN0ZW50IHdpdGggdGhl
IHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UsIHRvIGV4dGVuZCB0aGUgcGF0ZW50Ci0tbGlj
ZW5zZSB0byBkb3duc3RyZWFtIHJlY2lwaWVudHMuICAiS25vd2luZ2x5IHJlbHlpbmciIG1lYW5z
IHlvdSBoYXZlCi0tYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGlj
ZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCi0tY292ZXJlZCB3b3JrIGluIGEgY291bnRyeSwgb3Ig
eW91ciByZWNpcGllbnQncyB1c2Ugb2YgdGhlIGNvdmVyZWQgd29yawotLWluIGEgY291bnRyeSwg
d291bGQgaW5mcmluZ2Ugb25lIG9yIG1vcmUgaWRlbnRpZmlhYmxlIHBhdGVudHMgaW4gdGhhdAot
LWNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCi0tCi0t
ICBJZiwgcHVyc3VhbnQgdG8gb3IgaW4gY29ubmVjdGlvbiB3aXRoIGEgc2luZ2xlIHRyYW5zYWN0
aW9uIG9yCi0tYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJp
bmcgY29udmV5YW5jZSBvZiwgYQotLWNvdmVyZWQgd29yaywgYW5kIGdyYW50IGEgcGF0ZW50IGxp
Y2Vuc2UgdG8gc29tZSBvZiB0aGUgcGFydGllcwotLXJlY2VpdmluZyB0aGUgY292ZXJlZCB3b3Jr
IGF1dGhvcml6aW5nIHRoZW0gdG8gdXNlLCBwcm9wYWdhdGUsIG1vZGlmeQotLW9yIGNvbnZleSBh
IHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vu
c2UKLS15b3UgZ3JhbnQgaXMgYXV0b21hdGljYWxseSBleHRlbmRlZCB0byBhbGwgcmVjaXBpZW50
cyBvZiB0aGUgY292ZXJlZAotLXdvcmsgYW5kIHdvcmtzIGJhc2VkIG9uIGl0LgotLQotLSAgQSBw
YXRlbnQgbGljZW5zZSBpcyAiZGlzY3JpbWluYXRvcnkiIGlmIGl0IGRvZXMgbm90IGluY2x1ZGUg
d2l0aGluCi0tdGhlIHNjb3BlIG9mIGl0cyBjb3ZlcmFnZSwgcHJvaGliaXRzIHRoZSBleGVyY2lz
ZSBvZiwgb3IgaXMKLS1jb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBt
b3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKLS1zcGVjaWZpY2FsbHkgZ3JhbnRlZCB1bmRlciB0
aGlzIExpY2Vuc2UuICBZb3UgbWF5IG5vdCBjb252ZXkgYSBjb3ZlcmVkCi0td29yayBpZiB5b3Ug
YXJlIGEgcGFydHkgdG8gYW4gYXJyYW5nZW1lbnQgd2l0aCBhIHRoaXJkIHBhcnR5IHRoYXQgaXMK
LS1pbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5
b3UgbWFrZSBwYXltZW50Ci0tdG8gdGhlIHRoaXJkIHBhcnR5IGJhc2VkIG9uIHRoZSBleHRlbnQg
b2YgeW91ciBhY3Rpdml0eSBvZiBjb252ZXlpbmcKLS10aGUgd29yaywgYW5kIHVuZGVyIHdoaWNo
IHRoZSB0aGlyZCBwYXJ0eSBncmFudHMsIHRvIGFueSBvZiB0aGUKLS1wYXJ0aWVzIHdobyB3b3Vs
ZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKLS1w
YXRlbnQgbGljZW5zZSAoYSkgaW4gY29ubmVjdGlvbiB3aXRoIGNvcGllcyBvZiB0aGUgY292ZXJl
ZCB3b3JrCi0tY29udmV5ZWQgYnkgeW91IChvciBjb3BpZXMgbWFkZSBmcm9tIHRob3NlIGNvcGll
cyksIG9yIChiKSBwcmltYXJpbHkKLS1mb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZp
YyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdAotLWNvbnRhaW4gdGhlIGNvdmVyZWQgd29y
aywgdW5sZXNzIHlvdSBlbnRlcmVkIGludG8gdGhhdCBhcnJhbmdlbWVudCwKLS1vciB0aGF0IHBh
dGVudCBsaWNlbnNlIHdhcyBncmFudGVkLCBwcmlvciB0byAyOCBNYXJjaCAyMDA3LgotLQotLSAg
Tm90aGluZyBpbiB0aGlzIExpY2Vuc2Ugc2hhbGwgYmUgY29uc3RydWVkIGFzIGV4Y2x1ZGluZyBv
ciBsaW1pdGluZwotLWFueSBpbXBsaWVkIGxpY2Vuc2Ugb3Igb3RoZXIgZGVmZW5zZXMgdG8gaW5m
cmluZ2VtZW50IHRoYXQgbWF5Ci0tb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIg
YXBwbGljYWJsZSBwYXRlbnQgbGF3LgotLQotLSAgMTIuIE5vIFN1cnJlbmRlciBvZiBPdGhlcnMn
IEZyZWVkb20uCi0tCi0tICBJZiBjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhl
ciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCi0tb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRp
Y3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAotLWV4Y3VzZSB5
b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNv
bnZleSBhCi0tY292ZXJlZCB3b3JrIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91
ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCi0tTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVu
dCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdSBtYXkKLS1ub3QgY29udmV5
IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxp
Z2F0ZSB5b3UKLS10byBjb2xsZWN0IGEgcm95YWx0eSBmb3IgZnVydGhlciBjb252ZXlpbmcgZnJv
bSB0aG9zZSB0byB3aG9tIHlvdSBjb252ZXkKLS10aGUgUHJvZ3JhbSwgdGhlIG9ubHkgd2F5IHlv
dSBjb3VsZCBzYXRpc2Z5IGJvdGggdGhvc2UgdGVybXMgYW5kIHRoaXMKLS1MaWNlbnNlIHdvdWxk
IGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCi0tCi0t
ICAxMy4gVXNlIHdpdGggdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLS0K
LS0gIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwg
eW91IGhhdmUKLS1wZXJtaXNzaW9uIHRvIGxpbmsgb3IgY29tYmluZSBhbnkgY292ZXJlZCB3b3Jr
IHdpdGggYSB3b3JrIGxpY2Vuc2VkCi0tdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJv
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQotLWNvbWJpbmVkIHdvcmssIGFu
ZCB0byBjb252ZXkgdGhlIHJlc3VsdGluZyB3b3JrLiAgVGhlIHRlcm1zIG9mIHRoaXMKLS1MaWNl
bnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMgdGhlIGNvdmVy
ZWQgd29yaywKLS1idXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJv
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCi0tc2VjdGlvbiAxMywgY29uY2VybmluZyBpbnRlcmFj
dGlvbiB0aHJvdWdoIGEgbmV0d29yayB3aWxsIGFwcGx5IHRvIHRoZQotLWNvbWJpbmF0aW9uIGFz
IHN1Y2guCi0tCi0tICAxNC4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGlzIExpY2Vuc2UuCi0tCi0t
ICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29y
IG5ldyB2ZXJzaW9ucyBvZgotLXRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRp
bWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKLS1iZSBzaW1pbGFyIGluIHNwaXJp
dCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KLS1h
ZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KLS0KLS0gIEVhY2ggdmVyc2lvbiBpcyBn
aXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlCi0tUHJvZ3JhbSBz
cGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVy
YWwKLS1QdWJsaWMgTGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iIGFwcGxpZXMgdG8gaXQs
IHlvdSBoYXZlIHRoZQotLW9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRp
b25zIGVpdGhlciBvZiB0aGF0IG51bWJlcmVkCi0tdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVy
c2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLS1Gb3VuZGF0aW9uLiAgSWYgdGhl
IFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZQotLUdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1
Ymxpc2hlZAotLWJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0tCi0tICBJZiB0aGUg
UHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlCi0t
dmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0
aGF0IHByb3h5J3MKLS1wdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJzaW9u
IHBlcm1hbmVudGx5IGF1dGhvcml6ZXMgeW91Ci0tdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3Ig
dGhlIFByb2dyYW0uCi0tCi0tICBMYXRlciBsaWNlbnNlIHZlcnNpb25zIG1heSBnaXZlIHlvdSBh
ZGRpdGlvbmFsIG9yIGRpZmZlcmVudAotLXBlcm1pc3Npb25zLiAgSG93ZXZlciwgbm8gYWRkaXRp
b25hbCBvYmxpZ2F0aW9ucyBhcmUgaW1wb3NlZCBvbiBhbnkKLS1hdXRob3Igb3IgY29weXJpZ2h0
IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCi0tbGF0ZXIg
dmVyc2lvbi4KLS0KLS0gIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgotLQotLSAgVEhFUkUg
SVMgTk8gV0FSUkFOVFkgRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBC
WQotLUFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklU
SU5HIFRIRSBDT1BZUklHSFQKLS1IT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJREUg
VEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZCi0tT0YgQU5ZIEtJTkQsIEVJVEhF
UiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0t
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotLVBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJ
VFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNCi0tSVMgV0lUSCBZT1UuICBTSE9VTEQg
VEhFIFBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GCi0tQUxM
IE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgotLQotLSAgMTYuIExp
bWl0YXRpb24gb2YgTGlhYmlsaXR5LgotLQotLSAgSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVE
IEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCi0tV0lMTCBBTlkgQ09Q
WVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09O
VkVZUwotLVRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBG
T1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQotLUdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRQotLVVTRSBPUiBJTkFC
SUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExP
U1MgT0YKLS1EQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMg
U1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRAotLVBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQ
Uk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgUFJPR1JBTVMpLAotLUVWRU4gSUYgU1VD
SCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKLS1TVUNIIERBTUFHRVMuCi0tCi0tICAxNy4gSW50ZXJwcmV0YXRpb24gb2YgU2VjdGlv
bnMgMTUgYW5kIDE2LgotLQotLSAgSWYgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudHkgYW5kIGxp
bWl0YXRpb24gb2YgbGlhYmlsaXR5IHByb3ZpZGVkCi0tYWJvdmUgY2Fubm90IGJlIGdpdmVuIGxv
Y2FsIGxlZ2FsIGVmZmVjdCBhY2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCi0tcmV2aWV3aW5nIGNv
dXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVz
Ci0tYW4gYWJzb2x1dGUgd2FpdmVyIG9mIGFsbCBjaXZpbCBsaWFiaWxpdHkgaW4gY29ubmVjdGlv
biB3aXRoIHRoZQotLVByb2dyYW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRpb24gb2Yg
bGlhYmlsaXR5IGFjY29tcGFuaWVzIGEKLS1jb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBm
b3IgYSBmZWUuCi0tCi0tICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05E
SVRJT05TCi0tCi0tICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIg
TmV3IFByb2dyYW1zCi0tCi0tICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91
IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Ci0tcG9zc2libGUgdXNlIHRvIHRoZSBwdWJs
aWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAotLWZyZWUgc29m
dHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRo
ZXNlIHRlcm1zLgotLQotLSAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMg
dG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKLS10byBhdHRhY2ggdGhlbSB0byB0aGUgc3Rh
cnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5Ci0tc3RhdGUgdGhlIGV4
Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAot
LXRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90
aWNlIGlzIGZvdW5kLgotLQotLSAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5h
bWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgotLSAgICBDb3B5cmlnaHQgKEMp
IDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgotLQotLSAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgICBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieQotLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv
biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotLQotLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgICBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3
LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS1BbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8g
Y29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KLS0KLS0gIElmIHRoZSBw
cm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQK
LS1ub3RpY2UgbGlrZSB0aGlzIHdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6
Ci0tCi0tICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhv
cj4KLS0gICAgVGhpcyBwcm9ncmFtIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsg
Zm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KLS0gICAgVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBh
bmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAotLSAgICB1bmRlciBjZXJ0YWlu
IGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCi0tCi0tVGhlIGh5cG90aGV0
aWNhbCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycgc2hvdWxkIHNob3cgdGhlIGFwcHJv
cHJpYXRlCi0tcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2Us
IHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCi0tbWlnaHQgYmUgZGlmZmVyZW50OyBmb3IgYSBHVUkg
aW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJhYm91dCBib3giLgotLQotLSAgWW91IHNob3Vs
ZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9y
IHNjaG9vbCwKLS1pZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0
aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgotLUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMs
IGFuZCBob3cgdG8gYXBwbHkgYW5kIGZvbGxvdyB0aGUgR05VIEdQTCwgc2VlCi0tPGh0dHA6Ly93
d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLQotLSAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbQotLWludG8gcHJv
cHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJh
cnksIHlvdQotLW1heSBjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlua2luZyBw
cm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAotLXRoZSBsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3
aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbAotLVB1YmxpYyBM
aWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAot
LTxodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93aHktbm90LWxncGwuaHRtbD4uCi1kaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9w
YXJ0eS9za2VsZXRvbnMvUkVBRE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvUkVBRE1FLmNocm9taXVtCi1k
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDIxNWQ4MmU2MzY2Li4wMDAwMDAwMDAwMAot
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0
eS9za2VsZXRvbnMvUkVBRE1FLmNocm9taXVtCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMCArMCww
IEBACi0tTmFtZTogQmlzb24gc2tlbGV0b25zCi0tVVJMOiBodHRwczovL3d3dy5nbnUub3JnL3Nv
ZnR3YXJlL2Jpc29uLwotLVZlcnNpb246IDMuMy4yCi0tTGljZW5zZTogR1BMCi0tTGljZW5zZSBG
aWxlOiBMSUNFTlNFCi0tU2VjdXJpdHkgY3JpdGljYWw6IG5vCi0tCi0tRGVzY3JpcHRpb246Ci0t
Qmlzb24gaXMgYSBwYXJzZXIgZ2VuZXJhdG9yLiBJdCB1c2VzIHNrZWxldG9uIGZpbGVzIGFzIHRl
bXBsYXRlcyBmb3IgYnVpbGRpbmcKLS1zaW1pbGFyIGxhbmd1YWdlcy4KLWRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxl
dG9ucy9iaXNvbi5tNCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24v
dGhpcmRfcGFydHkvc2tlbGV0b25zL2Jpc29uLm00Ci1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
LWluZGV4IGUzNTkxODc1YzBmLi4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYmlzb24ubTQKLSsr
KyAvZGV2L251bGwKLUBAIC0xLDExMTEgKzAsMCBAQAotLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KLS0K
LS0jIExhbmd1YWdlLWluZGVwZW5kZW50IE00IE1hY3JvcyBmb3IgQmlzb24uCi0tCi0tIyBDb3B5
cmlnaHQgKEMpIDIwMDIsIDIwMDQtMjAxNSwgMjAxOC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwKLS0jIEluYy4KLS0KLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z
ZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tCi0tCi0t
IyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIElkZW50aWZpY2F0aW9uLiAgIyMKLS0jIyAtLS0t
LS0tLS0tLS0tLS0tICMjCi0tCi0tIyBiNF9nZW5lcmF0ZWRfYnkKLS0jIC0tLS0tLS0tLS0tLS0t
LQotLW00X2RlZmluZShbYjRfZ2VuZXJhdGVkX2J5XSwKLS1bYjRfY29tbWVudChbQSBCaXNvbiBw
YXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIGI0X3ZlcnNpb24uXSkKLS1dKQotLQotLSMgYjRfY29w
eXJpZ2h0KFRJVExFLCBbWUVBUlNdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgSWYgWUVBUlMgYXJlIG5vdCBkZWZpbmVkLCB1c2UgYjRfY29weXJpZ2h0X3llYXJzLgotLW00
X2RlZmluZShbYjRfY29weXJpZ2h0XSwKLS1bYjRfZ2VuZXJhdGVkX2J5Ci0tYjRfY29tbWVudChb
JDEKLS0KLS1dbTRfZHF1b3RlKG00X3RleHRfd3JhcChbQ29weXJpZ2h0IChDKQotLV1tNF9pZnZh
bChbJDJdLCBbWyQyXV0sIFttNF9kZWZuKFtiNF9jb3B5cmlnaHRfeWVhcnNdKV0pWwotLUZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLl0pKVsKLS0KLS1UaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLWl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5Ci0tdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0
aGUgTGljZW5zZSwgb3IKLS0oYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQot
LVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotLWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0tTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0tCi0tWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS1hbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm
IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5dKQotLQotLWI0X2NvbW1l
bnQoW0FzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsg
dGhhdCBjb250YWlucwotLXBhcnQgb3IgYWxsIG9mIHRoZSBCaXNvbiBwYXJzZXIgc2tlbGV0b24g
YW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCi0tdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHNv
IGxvbmcgYXMgdGhhdCB3b3JrIGlzbid0IGl0c2VsZiBhCi0tcGFyc2VyIGdlbmVyYXRvciB1c2lu
ZyB0aGUgc2tlbGV0b24gb3IgYSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJlb2YKLS1hcyBhIHBhcnNl
ciBza2VsZXRvbi4gIEFsdGVybmF0aXZlbHksIGlmIHlvdSBtb2RpZnkgb3IgcmVkaXN0cmlidXRl
Ci0tdGhlIHBhcnNlciBza2VsZXRvbiBpdHNlbGYsIHlvdSBtYXkgKGF0IHlvdXIgb3B0aW9uKSBy
ZW1vdmUgdGhpcwotLXNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2Vs
ZXRvbiBhbmQgdGhlIHJlc3VsdGluZwotLUJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNl
ZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tTGljZW5zZSB3aXRob3V0IHRoaXMgc3Bl
Y2lhbCBleGNlcHRpb24uCi0tCi0tVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBpbgotLXZlcnNpb24gMi4yIG9mIEJpc29uLl0p
Ci0tXSkKLS0KLS0KLS0jIGI0X2Rpc2NsYWltZXIKLS0jIC0tLS0tLS0tLS0tLS0KLS0jIElzc3Vl
IGEgd2FybmluZyBhYm91dCBwcml2YXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCi0tbTRfZGVm
aW5lKFtiNF9kaXNjbGFpbWVyXSwKLS1bYjRfY29tbWVudChbVW5kb2N1bWVudGVkIG1hY3Jvcywg
ZXNwZWNpYWxseSB0aG9zZSB3aG9zZSBuYW1lIHN0YXJ0IHdpdGggWVlfLAotLWFyZSBwcml2YXRl
IGltcGxlbWVudGF0aW9uIGRldGFpbHMuICBEbyBub3QgcmVseSBvbiB0aGVtLl0pCi0tXSkKLS0K
LS0KLS0KLS0jIGI0X3JlcXVpcmVkX3ZlcnNpb25faWYoVkVSU0lPTiwgSUZfTkVXRVIsIElGX09M
REVSKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBJZiB0aGUgdmVyc2lvbiAlcmVxdWlyZSdkIGJ5IHRoZSB1c2VyIGlzIFZFUlNJT04g
KG9yIG5ld2VyKSBleHBhbmQKLS0jIElGX05FV0VSLCBvdGhlcndpc2UgSUZfT0xERVIuICBWRVJT
SU9OIHNob3VsZCBiZSBhbiBpbnRlZ2VyLCBlLmcuLAotLSMgMzAyIGZvciAzLjIuCi0tbTRfZGVm
aW5lKFtiNF9yZXF1aXJlZF92ZXJzaW9uX2lmXSwKLS1bbTRfaWYobTRfZXZhbCgkMSA8PSBiNF9y
ZXF1aXJlZF92ZXJzaW9uKSwKLS0gICAgICAgICAgICAgIFsxXSwgWyQyXSwgWyQzXSldKQotLQot
LQotLSMjIC0tLS0tLS0tICMjCi0tIyMgT3V0cHV0LiAgIyMKLS0jIyAtLS0tLS0tLSAjIwotLQot
LSMgYjRfb3V0cHV0X2JlZ2luKEZJTEUxLCBGSUxFMikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0tIyBFbmFibGUgb3V0cHV0LCBpLmUuLCBzZW5kIHRvIGRpdmVyc2lvbiAwLCBl
eHBhbmQgYWZ0ZXIgIiMiLCBhbmQKLS0jIGdlbmVyYXRlIHRoZSB0YWcgdG8gb3V0cHV0IGludG8g
RklMRS4gIE11c3QgYmUgZm9sbG93ZWQgYnkgRU9MLgotLSMgRklMRSBpcyBGSUxFMSBjb25jYXRl
bmF0ZWQgdG8gRklMRTIuICBGSUxFMiBjYW4gYmUgZW1wdHksIG9yIGJlCi0tIyBhYnNvbHV0ZTog
ZG8gdGhlIHJpZ2h0IHRoaW5nLgotLW00X2RlZmluZShbYjRfb3V0cHV0X2JlZ2luXSwKLS1bbTRf
Y2hhbmdlY29tKCkKLS1tNF9kaXZlcnRfcHVzaCgwKWRubAotLUBvdXRwdXQobTRfdW5xdW90ZShb
JDFdKUAsbTRfdW5xdW90ZShbJDJdKUApQGRubAotLV0pCi0tCi0tCi0tIyBiNF9vdXRwdXRfZW5k
Ci0tIyAtLS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgbm90aGluZywgcmVzdG9yZSAjIGFzIGNvbW1l
bnQgY2hhcmFjdGVyIChubyBleHBhbnNpb25zIGFmdGVyICMpLgotLW00X2RlZmluZShbYjRfb3V0
cHV0X2VuZF0sCi0tW200X2RpdmVydF9wb3AoMCkKLS1tNF9jaGFuZ2Vjb20oWyNdKQotLV0pCi0t
Ci0tCi0tIyBiNF9kaXZlcnRfa2lsbChDT0RFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0j
IEV4cGFuZCBDT0RFIGZvciBpdHMgc2lkZSBlZmZlY3RzLCBkaXNjYXJkIGl0cyBvdXRwdXQuCi0t
bTRfZGVmaW5lKFtiNF9kaXZlcnRfa2lsbF0sCi0tW200X2RpdmVydF90ZXh0KFtLSUxMXSwgWyQx
XSldKQotLQotLQotLSMgYjRfZGVmaW5lX3NpbGVudChNQUNSTywgQ09ERSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBTYW1lIGFzIG00X2RlZmluZSwgYnV0IHRocm93IGF3
YXkgdGhlIGV4cGFuc2lvbiBvZiBDT0RFLgotLW00X2RlZmluZShbYjRfZGVmaW5lX3NpbGVudF0s
Ci0tW200X2RlZmluZShbJDFdLCBbYjRfZGl2ZXJ0X2tpbGwoWyQyXSldKV0pCi0tCi0tCi0tIyMg
LS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIEVycm9yIGhhbmRsaW5nLiAgIyMKLS0jIyAtLS0tLS0t
LS0tLS0tLS0tICMjCi0tCi0tIyBUaGUgZm9sbG93aW5nIGVycm9yIGhhbmRsaW5nIG1hY3JvcyBw
cmludCBlcnJvciBkaXJlY3RpdmVzIHRoYXQgc2hvdWxkIG5vdAotLSMgYmVjb21lIGFyZ3VtZW50
cyBvZiBvdGhlciBtYWNybyBpbnZvY2F0aW9ucyBzaW5jZSB0aGV5IHdvdWxkIGxpa2VseSB0aGVu
IGJlCi0tIyBtYW5nbGVkLiAgVGh1cywgdGhleSBwcmludCB0byBzdGRvdXQgZGlyZWN0bHkuCi0t
Ci0tIyBiNF9jYXQoVEVYVCkKLS0jIC0tLS0tLS0tLS0tLQotLSMgV3JpdGUgVEVYVCB0byBzdGRv
dXQuICBQcmVjZWRlIHRoZSBmaW5hbCBuZXdsaW5lIHdpdGggYW4gQCBzbyB0aGF0IGl0J3MKLS0j
IGVzY2FwZWQuICBGb3IgZXhhbXBsZToKLS0jCi0tIyAgIGI0X2NhdChbW0Bjb21wbGFpbihpbnZh
bGlkIGlucHV0QCldXSkKLS1tNF9kZWZpbmUoW2I0X2NhdF0sCi0tW200X3N5c2NtZChbY2F0IDw8
J19tNGVvZicKLS1dbTRfYnBhdHN1YnN0KG00X2RxdW90ZSgkMSksIFtfbTRlb2ZdLCBbX200QGBl
b2ZdKVtACi0tX200ZW9mCi0tXSlkbmwKLS1tNF9pZihtNF9zeXN2YWwsIFswXSwgW10sIFttNF9m
YXRhbChbJDA6IGNhbm5vdCB3cml0ZSB0byBzdGRvdXRdKV0pXSkKLS0KLS0jIGI0X2Vycm9yKEtJ
TkQsIFNUQVJULCBFTkQsIEZPUk1BVCwgW0FSRzFdLCBbQVJHMl0sIC4uLikKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFdyaXRl
IEBLSU5EKFNUQVJUQCxFTkRALEZPUk1BVEAsQVJHMUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0Lgot
LSMKLS0jIEZvciBleGFtcGxlOgotLSMKLS0jICAgYjRfZXJyb3IoW1tjb21wbGFpbl1dLCBbW2lu
cHV0Lnk6Mi4zXV0sIFtbaW5wdXQueTo1LjRdXSwKLS0jICAgICAgICAgICAgW1tpbnZhbGlkICVz
XV0sIFtbZm9vXV0pCi0tbTRfZGVmaW5lKFtiNF9lcnJvcl0sCi0tW2I0X2NhdChbW0Bjb21wbGFp
bl1bKF0kMVtALF0kMltALF0kM1tALF0kNFtdXWRubAotLVttNF9pZihbJCNdLCBbNF0sIFtdLAot
LSAgICAgICBbbTRfZm9yZWFjaChbYjRfYXJnXSwKLS0gICAgICAgICAgICAgICAgICAgbTRfZHF1
b3RlKG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpKSksCi0tICAgICAg
ICAgICAgICAgICAgIFtbQCxdYjRfYXJnXSldKVtAKV1dKV0pCi0tCi0tIyBiNF93YXJuKEZPUk1B
VCwgW0FSRzFdLCBbQVJHMl0sIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMgV3JpdGUgQHdhcm4oRk9STUFUQCxBUkcxQCxBUkcyQCwuLi5AKSB0byBzdGRv
dXQuCi0tIwotLSMgRm9yIGV4YW1wbGU6Ci0tIwotLSMgICBiNF93YXJuKFtbaW52YWxpZCB2YWx1
ZSBmb3IgJyVzJzogJXNdXSwgW1tmb29dXSwgW1szXV0pCi0tIwotLSMgQXMgYSBzaW1wbGUgdGVz
dCBzdWl0ZSwgdGhpczoKLS0jCi0tIyAgIG00X2RpdmVydCgtMSkKLS0jICAgbTRfZGVmaW5lKFth
c2RmXSwgW0FTREZdKQotLSMgICBtNF9kZWZpbmUoW2ZzYV0sIFtGU0FdKQotLSMgICBtNF9kZWZp
bmUoW2Zkc2FdLCBbRkRTQV0pCi0tIyAgIGI0X3dhcm5fYXQoW1tbYXNkZiksIGFzZGZdXV0sIFtb
W2ZzYSksIGZzYV1dXSwgW1tbZmRzYSksIGZkc2FdXV0pCi0tIyAgIGI0X3dhcm5fYXQoW1thc2Rm
KSwgYXNkZl1dLCBbW2ZzYSksIGZzYV1dLCBbW2Zkc2EpLCBmZHNhXV0pCi0tIyAgIGI0X3dhcm5f
YXQoKQotLSMgICBiNF93YXJuX2F0KDEpCi0tIyAgIGI0X3dhcm5fYXQoMSwgMikKLS0jCi0tIyBT
aG91bGQgcHJvZHVjZSB0aGlzIHdpdGhvdXQgbmV3bGluZXM6Ci0tIwotLSMgICBAd2Fybl9hdChb
YXNkZiksIGFzZGZdQCxALEAsW2ZzYSksIGZzYV1ALFtmZHNhKSwgZmRzYV1AKQotLSMgICBAd2Fy
bihhc2RmKSwgYXNkZkAsQCxALGZzYSksIGZzYUAsZmRzYSksIGZkc2FAKQotLSMgICBAd2FybihA
KQotLSMgICBAd2FybigxQCkKLS0jICAgQHdhcm4oMUAsMkApCi0tbTRfZGVmaW5lKFtiNF93YXJu
XSwKLS1bYjRfZXJyb3IoW1t3YXJuXV0sIFtdLCBbXSwgJEApXSkKLS0KLS0jIGI0X3dhcm5fYXQo
U1RBUlQsIEVORCwgRk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBXcml0ZSBAd2FybihT
VEFSVEAsRU5EQCxGT1JNQVRALEFSRzFALEFSRzJALC4uLkApIHRvIHN0ZG91dC4KLS0jCi0tIyBG
b3IgZXhhbXBsZToKLS0jCi0tIyAgIGI0X3dhcm5fYXQoW1tpbnB1dC55OjIuM11dLCBbW2lucHV0
Lnk6NS40XV0sIFtbaW52YWxpZCAlc11dLCBbW2Zvb11dKQotLW00X2RlZmluZShbYjRfd2Fybl9h
dF0sCi0tW2I0X2Vycm9yKFtbd2Fybl1dLCAkQCldKQotLQotLSMgYjRfY29tcGxhaW4oRk9STUFU
LCBbQVJHMV0sIFtBUkcyXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgQm91bmNlIHRvIGI0X2NvbXBsYWluX2F0LgotLSMKLS0jIFNlZSBiNF93
YXJuIGV4YW1wbGUuCi0tbTRfZGVmaW5lKFtiNF9jb21wbGFpbl0sCi0tW2I0X2Vycm9yKFtbY29t
cGxhaW5dXSwgW10sIFtdLCAkQCldKQotLQotLSMgYjRfY29tcGxhaW5fYXQoU1RBUlQsIEVORCwg
Rk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgV3JpdGUgQGNvbXBsYWluKFNUQVJU
QCxFTkRALEZPUk1BVEAsQVJHMUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0LgotLSMKLS0jIFNlZSBi
NF93YXJuX2F0IGV4YW1wbGUuCi0tbTRfZGVmaW5lKFtiNF9jb21wbGFpbl9hdF0sCi0tW2I0X2Vy
cm9yKFtbY29tcGxhaW5dXSwgJEApXSkKLS0KLS0jIGI0X2ZhdGFsKEZPUk1BVCwgW0FSRzFdLCBb
QVJHMl0sIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0j
IEJvdW5jZSB0byBiNF9mYXRhbF9hdC4KLS0jCi0tIyBTZWUgYjRfd2FybiBleGFtcGxlLgotLW00
X2RlZmluZShbYjRfZmF0YWxdLAotLVtiNF9lcnJvcihbW2ZhdGFsXV0sIFtdLCBbXSwgJEApZG5s
Ci0tbTRfZXhpdCgxKV0pCi0tCi0tIyBiNF9mYXRhbF9hdChTVEFSVCwgRU5ELCBGT1JNQVQsIFtB
UkcxXSwgW0FSRzJdLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBXcml0ZSBAZmF0YWwoU1RBUlRALEVOREAsRk9STUFUQCxB
UkcxQCxBUkcyQCwuLi5AKSB0byBzdGRvdXQgYW5kIGV4aXQuCi0tIwotLSMgU2VlIGI0X3dhcm5f
YXQgZXhhbXBsZS4KLS1tNF9kZWZpbmUoW2I0X2ZhdGFsX2F0XSwKLS1bYjRfZXJyb3IoW1tmYXRh
bF1dLCAkQClkbmwKLS1tNF9leGl0KDEpXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0gIyMKLS0j
IyBEYXRhIFR5cGVzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0gIyMKLS0KLS0jIGI0X2ludHNfaW4o
SU5UMSwgSU5UMiwgTE9XLCBISUdIKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBSZXR1cm4gMSBpZmYgYm90aCBJTlQxIGFuZCBJTlQyIGFyZSBpbiBbTE9XLCBISUdI
XSwgMCBvdGhlcndpc2UuCi0tbTRfZGVmaW5lKFtiNF9pbnRzX2luXSwKLS1bbTRfZXZhbChbJDMg
PD0gJDEgJiYgJDEgPD0gJDQgJiYgJDMgPD0gJDIgJiYgJDIgPD0gJDRdKV0pCi0tCi0tCi0tIyBi
NF9zdWJ0cmFjdChMSFMsIFJIUykKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRXZhbHVh
dGUgTEhTIC0gUkhTIGlmIHRoZXkgYXJlIGludGVnZXIgbGl0ZXJhbHMsIG90aGVyd2lzZSBleHBh
bmQKLS0jIHRvIChMSFMpIC0gKFJIUykuCi0tbTRfZGVmaW5lKFtiNF9zdWJ0cmFjdF0sCi0tW200
X2JtYXRjaChbJDEkMl0sIFteWzAxMjM0NTY3ODldKiRdLAotLSAgICAgICAgICAgW200X2V2YWwo
WyQxIC0gJDJdKV0sCi0tICAgICAgICAgICBbKCQxKSAtICgkMildKV0pCi0tCi0tIyBiNF9qb2lu
KEFSRzEsIC4uLikKLS0jIF9iNF9qb2luKEFSRzEsIC4uLikKLS0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIEpvaW4gd2l0aCBjb21tYSwgc2tpcHBpbmcgZW1wdHkgYXJndW1lbnRzLgotLSMgYjRf
am9pbiBjYWxscyBpdHNlbGYgcmVjdXJzaXZlbHkgdW50aWwgaXQgc2VlcyB0aGUgZmlyc3Qgbm9u
LWVtcHR5Ci0tIyBhcmd1bWVudCwgdGhlbiBjYWxscyBfYjRfam9pbiAoaS5lLiwgYF8kMGApIHdo
aWNoIHByZXBlbmRzIGVhY2gKLS0jIG5vbi1lbXB0eSBhcmd1bWVudCB3aXRoIGEgY29tbWEuCi0t
bTRfZGVmaW5lKFtiNF9qb2luXSwKLS1bbTRfaWYoWyQjJDFdLAotLSAgICAgICBbMV0sIFtdLAot
LSAgICAgICBbbTRfaWZ2YWwoWyQxXSwKLS0gICAgICAgICAgICAgICAgIFskMVtdXyQwKG00X3No
aWZ0KCRAKSldLAotLSAgICAgICAgICAgICAgICAgWyQwKG00X3NoaWZ0KCRAKSldKV0pXSkKLS0K
LS0jIF9iNF9qb2luKEFSR1MxLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2Rl
ZmluZShbX2I0X2pvaW5dLAotLVttNF9pZihbJCMkMV0sCi0tICAgICAgIFsxXSwgW10sCi0tICAg
ICAgIFttNF9pZnZhbChbJDFdLCBbLCAkMV0pW10kMChtNF9zaGlmdCgkQCkpXSldKQotLQotLQot
LQotLQotLSMgYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlc19tYXAoTUFDUk8pCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBNYXAgTUFDUk8gb24gYWxsIHRoZSBp
bnRlZ3JhbCB0YWJsZXMuICBNQUNSTyBpcyBleHBlY3RlZCB0byBoYXZlCi0tIyB0aGUgc2lnbmF0
dXJlIE1BQ1JPKFRBQkxFLU5BTUUsIENPTlRFTlQsIENPTU1FTlQpLgotLW00X2RlZmluZShbYjRf
aW50ZWdyYWxfcGFyc2VyX3RhYmxlc19tYXBdLAotLVskMShbcGFjdF0sIFtiNF9wYWN0XSwKLS0g
ICAgW1tZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0aW9u
IGRlc2NyaWJpbmcKLS1TVEFURS1OVU0uXV0pCi0tCi0tJDEoW2RlZmFjdF0sIFtiNF9kZWZhY3Rd
LAotLSAgIFtbWVlERUZBQ1RbU1RBVEUtTlVNXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIg
aW4gc3RhdGUgU1RBVEUtTlVNLgotLVBlcmZvcm1lZCB3aGVuIFlZVEFCTEUgZG9lcyBub3Qgc3Bl
Y2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KLS1tZWFucyB0aGUgZGVmYXVsdCBpcyBh
biBlcnJvci5dXSkKLS0KLS0kMShbcGdvdG9dLCBbYjRfcGdvdG9dLCBbW1lZUEdPVE9bTlRFUk0t
TlVNXS5dXSkKLS0KLS0kMShbZGVmZ290b10sIFtiNF9kZWZnb3RvXSwgW1tZWURFRkdPVE9bTlRF
Uk0tTlVNXS5dXSkKLS0KLS0kMShbdGFibGVdLCBbYjRfdGFibGVdLAotLSAgIFtbWVlUQUJMRVtZ
WVBBQ1RbU1RBVEUtTlVNXV0gLS0gV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgot
LXBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVs
ZSB3aG9zZQotLW51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRh
eCBlcnJvci5dXSkKLS0KLS0kMShbY2hlY2tdLCBbYjRfY2hlY2tdKQotLQotLSQxKFtzdG9zXSwg
W2I0X3N0b3NdLAotLSAgIFtbWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhlIChpbnRlcm5hbCBudW1i
ZXIgb2YgdGhlKSBhY2Nlc3NpbmcKLS1zeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLl1dKQotLQot
LSQxKFtyMV0sIFtiNF9yMV0sCi0tICAgW1tZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBz
eW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLl1dKQotLQotLSQxKFtyMl0sIFtiNF9yMl0sCi0t
ICAgW1tZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lk
ZSBvZiBydWxlIFlZTi5dXSkKLS1dKQotLQotLQotLSMgYjRfcGFyc2VyX3RhYmxlc19kZWNsYXJl
Ci0tIyBiNF9wYXJzZXJfdGFibGVzX2RlZmluZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0tIyBEZWZpbmUvZGVjbGFyZSB0aGUgKGRldGVybWluaXN0aWMpIHBhcnNlciB0YWJsZXMuCi0t
bTRfZGVmaW5lKFtiNF9wYXJzZXJfdGFibGVzX2RlY2xhcmVdLAotLVtiNF9pbnRlZ3JhbF9wYXJz
ZXJfdGFibGVzX21hcChbYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlX2RlY2xhcmVdKV0pCi0tCi0t
bTRfZGVmaW5lKFtiNF9wYXJzZXJfdGFibGVzX2RlZmluZV0sCi0tW2I0X2ludGVncmFsX3BhcnNl
cl90YWJsZXNfbWFwKFtiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVfZGVmaW5lXSldKQotLQotLQot
LQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIERlY29kaW5nIG9wdGlvbnMuICAjIwot
LSMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgYjRfZmxhZ19pZihGTEFHLCBJRi1UUlVF
LCBJRi1GQUxTRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBS
dW4gSUYtVFJVRSBpZiBiNF9GTEFHX2ZsYWcgaXMgMSwgSUYtRkFMU0UgaWYgRkxBRyBpcyAwLCBv
dGhlcndpc2UgZmFpbC4KLS1tNF9kZWZpbmUoW2I0X2ZsYWdfaWZdLAotLVttNF9jYXNlKGI0XyQx
X2ZsYWcsCi0tICAgICAgICAgWzBdLCBbJDNdLAotLSAgICAgICAgIFsxXSwgWyQyXSwKLS0gICAg
ICAgICBbbTRfZmF0YWwoW2ludmFsaWQgJDEgdmFsdWU6IF1iNF8kMV9mbGFnKV0pXSkKLS0KLS0K
LS0jIGI0X2RlZmluZV9mbGFnX2lmKEZMQUcpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgRGVmaW5lICJiNF9GTEFHX2lmKElGLVRSVUUsIElGLUZBTFNFKSIgdGhhdCBkZXBlbmRzIG9u
IHRoZQotLSMgdmFsdWUgb2YgdGhlIEJvb2xlYW4gRkxBRy4KLS1tNF9kZWZpbmUoW2I0X2RlZmlu
ZV9mbGFnX2lmXSwKLS1bX2I0X2RlZmluZV9mbGFnX2lmKCRbMV0sICRbMl0sIFskMV0pXSkKLS0K
LS0jIF9iNF9kZWZpbmVfZmxhZ19pZigkMSwgJDIsIEZMQUcpCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgV29yayBhcm91bmQgdGhlIGltcG9zc2liaWxpdHkgdG8gZGVm
aW5lIG1hY3JvcyBpbnNpZGUgbWFjcm9zLAotLSMgYmVjYXVzZSBpc3N1aW5nICdbJDFdJyBpcyBu
b3QgcG9zc2libGUgaW4gTTQuICBHTlUgTTQgc2hvdWxkIHByb3ZpZGUKLS0jICQkMSBhIGxhIE01
L1RlWC4KLS1tNF9kZWZpbmUoW19iNF9kZWZpbmVfZmxhZ19pZl0sCi0tW200X2lmKFskMSQyXSwg
JFsxXSRbMl0sIFtdLAotLSAgICAgICBbbTRfZmF0YWwoWyQwOiBJbnZhbGlkIGFyZ3VtZW50czog
JEBdKV0pZG5sCi0tbTRfZGVmaW5lKFtiNF8kM19pZl0sCi0tICAgICAgICAgIFtiNF9mbGFnX2lm
KFskM10sIFskMV0sIFskMl0pXSldKQotLQotLQotLSMgYjRfRkxBR19pZihJRi1UUlVFLCBJRi1G
QUxTRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgSUYtVFJV
RSwgaWYgRkxBRyBpcyB0cnVlLCBJRi1GQUxTRSBvdGhlcndpc2UuCi0tYjRfZGVmaW5lX2ZsYWdf
aWYoW2RlZmluZXNdKSAgICAgICAgICAgICMgV2hldGhlciBoZWFkZXJzIGFyZSByZXF1ZXN0ZWQu
Ci0tYjRfZGVmaW5lX2ZsYWdfaWYoW2dscl0pICAgICAgICAgICAgICAgICMgV2hldGhlciBhIEdM
UiBwYXJzZXIgaXMgcmVxdWVzdGVkLgotLWI0X2RlZmluZV9mbGFnX2lmKFtub25kZXRlcm1pbmlz
dGljXSkgICAjIFdoZXRoZXIgY29uZmxpY3RzIHNob3VsZCBiZSBoYW5kbGVkLgotLWI0X2RlZmlu
ZV9mbGFnX2lmKFt0b2tlbl90YWJsZV0pICAgICAgICAjIFdoZXRoZXIgeXl0b2tlbl90YWJsZSBp
cyBkZW1hbmRlZC4KLS1iNF9kZWZpbmVfZmxhZ19pZihbeWFjY10pICAgICAgICAgICAgICAgIyBX
aGV0aGVyIFBPU0lYIFlhY2MgaXMgZW11bGF0ZWQuCi0tCi0tCi0tIyBiNF9nbHJfY2NfaWYoW0lG
LVRSVUVdLCBbSUYtRkFMU0VdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS1tNF9kZWZpbmUoW2I0X2dscl9jY19pZl0sCi0tICAgICAgICAgIFttNF9pZihiNF9za2Vs
ZXRvbiwgWyJnbHIuY2MiXSwgJEApXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0gIyMKLS0jIyBTeW1i
b2xzLiAgIyMKLS0jIyAtLS0tLS0tLS0gIyMKLS0KLS0jIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRo
ZSBTeW1ib2wgaGFuZGxpbmcsIHNlZSBSRUFETUUuCi0tIwotLSMgVGhlIGZvbGxvd2luZyBtYWNy
b3MgcHJvdmlkZSBhY2Nlc3MgdG8gc3ltYm9sIHJlbGF0ZWQgdmFsdWVzLgotLQotLSMgX19iNF9z
eW1ib2woTlVNLCBGSUVMRCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBSZWNvdmVy
IGEgRklFTEQgYWJvdXQgc3ltYm9sICNOVU0uICBUaGFua3MgdG8gbTRfaW5kaXIsIGZhaWxzIGlm
Ci0tIyB1bmRlZmluZWQuCi0tbTRfZGVmaW5lKFtfX2I0X3N5bWJvbF0sCi0tW200X2luZGlyKFti
NF9zeW1ib2woJDEsICQyKV0pXSkKLS0KLS0KLS0jIF9iNF9zeW1ib2woTlVNLCBGSUVMRCkKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJlY292ZXIgYSBGSUVMRCBhYm91dCBzeW1ib2wg
I05VTSAob3IgIm9yaWcgTlVNIikuICBGYWlscyBpZgotLSMgdW5kZWZpbmVkLgotLW00X2RlZmlu
ZShbX2I0X3N5bWJvbF0sCi0tW200X2lmZGVmKFtiNF9zeW1ib2woJDEsIG51bWJlcildLAotLSAg
ICAgICAgICBbX19iNF9zeW1ib2wobTRfaW5kaXIoW2I0X3N5bWJvbCgkMSwgbnVtYmVyKV0pLCAk
MildLAotLSAgICAgICAgICBbX19iNF9zeW1ib2woWyQxXSwgWyQyXSldKV0pCi0tCi0tCi0tCi0t
IyBiNF9zeW1ib2woTlVNLCBGSUVMRCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUmVj
b3ZlciBhIEZJRUxEIGFib3V0IHN5bWJvbCAjTlVNIChvciAib3JpZyBOVU0iKS4gIEZhaWxzIGlm
Ci0tIyB1bmRlZmluZWQuICBJZiBGSUVMRCA9IGlkLCBwcmVwZW5kIHRoZSB0b2tlbiBwcmVmaXgu
Ci0tbTRfZGVmaW5lKFtiNF9zeW1ib2xdLAotLVttNF9jYXNlKFskMl0sCi0tICAgICAgICAgW2lk
XSwgICAgW200X2RvKFtiNF9wZXJjZW50X2RlZmluZV9nZXQoW2FwaS50b2tlbi5wcmVmaXhdKV0s
Ci0tICAgICAgICAgICAgICAgICAgICAgICAgIFtfYjRfc3ltYm9sKFskMV0sIFtpZF0pXSldLAot
LSAgICAgICAgIFtfYjRfc3ltYm9sKCRAKV0pXSkKLS0KLS0KLS0jIGI0X3N5bWJvbF9pZihOVU0s
IEZJRUxELCBJRi1UUlVFLCBJRi1GQUxTRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIEZJRUxEIGFib3V0IHN5bWJvbCAjTlVNIGlzIDEgZXhw
YW5kIElGLVRSVUUsIGlmIGlzIDAsIGV4cGFuZCBJRi1GQUxTRS4KLS0jIE90aGVyd2lzZSBhbiBl
cnJvci4KLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF9pZl0sCi0tW200X2Nhc2UoYjRfc3ltYm9sKFsk
MV0sIFskMl0pLAotLSAgICAgICAgIFsxXSwgWyQzXSwKLS0gICAgICAgICBbMF0sIFskNF0sCi0t
ICAgICAgICAgW200X2ZhdGFsKFskMDogZmllbGQgJDIgb2YgJDEgaXMgbm90IGEgQm9vbGVhbjpd
IGI0X3N5bWJvbChbJDFdLCBbJDJdKSldKV0pCi0tCi0tCi0tIyBiNF9zeW1ib2xfdGFnX2NvbW1l
bnQoU1lNQk9MLU5VTSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
SXNzdWUgYSBjb21tZW50IGdpdmluZyB0aGUgdGFnIG9mIHN5bWJvbCBOVU0uCi0tbTRfZGVmaW5l
KFtiNF9zeW1ib2xfdGFnX2NvbW1lbnRdLAotLVtiNF9jb21tZW50KFtiNF9zeW1ib2woWyQxXSwg
W3RhZ10pXSkKLS1dKQotLQotLQotLSMgYjRfc3ltYm9sX2FjdGlvbl9sb2NhdGlvbihTWU1CT0wt
TlVNLCBLSU5EKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLSMgUmVwb3J0IHRoZSBsb2NhdGlvbiBvZiB0aGUgS0lORCBhY3Rpb24gYXMgRklMRTpMSU5F
LgotLW00X2RlZmluZShbYjRfc3ltYm9sX2FjdGlvbl9sb2NhdGlvbl0sCi0tW2I0X3N5bWJvbChb
JDFdLCBbJDJfZmlsZV0pOmI0X3N5bmNsaW5lKFtiNF9zeW1ib2woWyQxXSwgWyQyX2xpbmVdKV0p
XSkKLS0KLS0KLS0jIGI0X3N5bWJvbF9hY3Rpb24oU1lNQk9MLU5VTSwgS0lORCkKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFJ1biB0aGUgYWN0aW9uIEtJTkQgKGRl
c3RydWN0b3Igb3IgcHJpbnRlcikgZm9yIFNZTUJPTC1OVU0uCi0tbTRfZGVmaW5lKFtiNF9zeW1i
b2xfYWN0aW9uXSwKLS1bYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfJDJdLAotLVtiNF9kb2xsYXJf
cHVzaGRlZihbKCp5eXZhbHVlcCldLAotLSAgICAgICAgICAgICAgICAgICBbJDFdLAotLSAgICAg
ICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgWygqeXlsb2NhdGlvbnApXSlk
bmwKLS0gICAgX2I0X3N5bWJvbF9jYXNlKFskMV0pW11kbmwKLS1iNF9zeW5jbGluZShbYjRfc3lt
Ym9sKFskMV0sIFskMl9saW5lXSldLCBbYjRfc3ltYm9sKFskMV0sIFskMl9maWxlXSldKQotLSAg
ICAgIGI0X3N5bWJvbChbJDFdLCBbJDJdKQotLWI0X3N5bmNsaW5lKFtAb2xpbmVAXSwgW0BvZmls
ZUBdKQotLSAgICAgICAgYnJlYWs7Ci0tCi0tYjRfZG9sbGFyX3BvcGRlZltdZG5sCi0tXSldKQot
LQotLQotLSMgYjRfc3ltYm9sX2Rlc3RydWN0b3IoU1lNQk9MLU5VTSkKLS0jIGI0X3N5bWJvbF9w
cmludGVyKFNZTUJPTC1OVU0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LW00X2RlZmluZShbYjRfc3ltYm9sX2Rlc3RydWN0b3JdLCBbYjRfc3ltYm9sX2FjdGlvbihbJDFd
LCBbZGVzdHJ1Y3Rvcl0pXSkKLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF9wcmludGVyXSwgICAgW2I0
X3N5bWJvbF9hY3Rpb24oWyQxXSwgW3ByaW50ZXJdKV0pCi0tCi0tCi0tIyBiNF9zeW1ib2xfYWN0
aW9ucyhLSU5ELCBbVFlQRSA9IHl5dHlwZV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBFbWl0IHRoZSBzeW1ib2wgYWN0aW9ucyBmb3IgS0lORCAoInBy
aW50ZXIiIG9yICJkZXN0cnVjdG9yIikuCi0tIyBEaXNwYXRjaCBvbiBUWVBFLgotLW00X2RlZmlu
ZShbYjRfc3ltYm9sX2FjdGlvbnNdLAotLVttNF9wdXNoZGVmKFtiNF9hY3Rpb25zX10sIG00X2V4
cGFuZChbYjRfc3ltYm9sX2ZvcmVhY2goW2I0X3N5bWJvbF8kMV0pXSkpZG5sCi0tbTRfaWZ2YWwo
bTRfZGVmbihbYjRfYWN0aW9uc19dKSwKLS1bc3dpdGNoIChtNF9kZWZhdWx0KFskMl0sIFt5eXR5
cGVdKSkKLS0gICAgewotLW00X2RlZm4oW2I0X2FjdGlvbnNfXSlbXWRubAotLSAgICAgIGRlZmF1
bHQ6Ci0tICAgICAgICBicmVhazsKLS0gICAgfWRubAotLV0sCi0tW1lZVVNFIChtNF9kZWZhdWx0
KFskMl0sIFt5eXR5cGVdKSk7XSlkbmwKLS1tNF9wb3BkZWYoW2I0X2FjdGlvbnNfXSlkbmwKLS1d
KQotLQotLSMgX2I0X3N5bWJvbF9jYXNlKFNZTUJPTC1OVU0pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIElzc3VlIGEgImNhc2UgTlVNIiBmb3IgU1lNQk9MLU5VTS4gIEVuZHMg
d2l0aCBpdHMgRU9MIHRvIG1ha2UgaXQKLS0jIGVhc2llciB0byB1c2Ugd2l0aCBtNF9tYXAsIGJ1
dCB0aGVuLCB1c2UgW11kbmwgdG8gc3VwcHJlc3MgdGhlIGxhc3QKLS0jIG9uZS4KLS1tNF9kZWZp
bmUoW19iNF9zeW1ib2xfY2FzZV0sCi0tW2Nhc2UgYjRfc3ltYm9sKFskMV0sIFtudW1iZXJdKTog
YjRfc3ltYm9sX3RhZ19jb21tZW50KFskMV0pXSkKLS1dKQotLQotLQotLSMgYjRfc3ltYm9sX2Zv
cmVhY2goTUFDUk8pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEludm9rZSBNQUNS
TyhTWU1CT0wtTlVNKSBmb3IgZWFjaCBTWU1CT0wtTlVNLgotLW00X2RlZmluZShbYjRfc3ltYm9s
X2ZvcmVhY2hdLAotLSAgICAgICAgICBbbTRfbWFwKFskMV0sIG00X2RlZm4oW2I0X3N5bWJvbF9u
dW1iZXJzXSkpXSkKLS0KLS0jIGI0X3N5bWJvbF9tYXAoTUFDUk8pCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLQotLSMgUmV0dXJuIGEgbGlzdCAocG9zc2libHkgZW1wdHkgZWxlbWVudHMpIG9mIE1B
Q1JPIGludm9rZWQgZm9yIGVhY2gKLS0jIFNZTUJPTC1OVU0uCi0tbTRfZGVmaW5lKFtiNF9zeW1i
b2xfbWFwXSwKLS1bbTRfbWFwX2FyZ3Nfc2VwKFskMShdLCBbKV0sIFssXSwgYjRfc3ltYm9sX251
bWJlcnMpXSkKLS0KLS0KLS0jIGI0X3Rva2VuX3Zpc2libGVfaWYoTlVNLCBJRi1UUlVFLCBJRi1G
QUxTRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0j
IFdoZXRoZXIgTlVNIGRlbm90ZXMgYSB0b2tlbiB0aGF0IGhhcyBhbiBleHBvcnRlZCBkZWZpbml0
aW9uIChpLmUuLAotLSMgc2hvd3MgaW4gZW51bSB5eXRva2VudHlwZSkuCi0tbTRfZGVmaW5lKFti
NF90b2tlbl92aXNpYmxlX2lmXSwKLS1bYjRfc3ltYm9sX2lmKFskMV0sIFtpc190b2tlbl0sCi0t
ICAgICAgICAgICAgICBbYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfaWRdLCBbJDJdLCBbJDNdKV0s
Ci0tICAgICAgICAgICAgICBbJDNdKV0pCi0tCi0tIyBiNF90b2tlbl9oYXNfZGVmaW5pdGlvbihO
VU0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyAxIGlmIE5VTSBpcyB2aXNp
YmxlLCBub3RoaW5nIG90aGVyd2lzZS4KLS1tNF9kZWZpbmUoW2I0X3Rva2VuX2hhc19kZWZpbml0
aW9uXSwKLS1bYjRfdG9rZW5fdmlzaWJsZV9pZihbJDFdLCBbMV0pXSkKLS0KLS0jIGI0X2FueV90
b2tlbl92aXNpYmxlX2lmKFtJRi1UUlVFXSwgW0lGLUZBTFNFXSkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFdoZXRoZXIgdGhlcmUgaXMgYSB0
b2tlbiB0aGF0IG5lZWRzIHRvIGJlIGRlZmluZWQuCi0tbTRfZGVmaW5lKFtiNF9hbnlfdG9rZW5f
dmlzaWJsZV9pZl0sCi0tW200X2lmdmFsKGI0X3N5bWJvbF9mb3JlYWNoKFtiNF90b2tlbl9oYXNf
ZGVmaW5pdGlvbl0pLAotLSAgICAgICAgICBbJDFdLCBbJDJdKV0pCi0tCi0tCi0tIyBiNF90b2tl
bl9mb3JtYXQoRk9STUFULCBOVU0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
bTRfZGVmaW5lKFtiNF90b2tlbl9mb3JtYXRdLAotLVtiNF90b2tlbl92aXNpYmxlX2lmKFskMl0s
Ci0tW200X3F1b3RlKG00X2Zvcm1hdChbJDFdLAotLSAgICAgICAgICAgICAgICAgICAgIFtiNF9z
eW1ib2woWyQyXSwgW2lkXSldLAotLSAgICAgICAgICAgICAgICAgICAgIFtiNF9zeW1ib2woWyQy
XSwgW3VzZXJfbnVtYmVyXSldKSldKV0pCi0tCi0tCi0tIyMgLS0tLS0tLSAjIwotLSMjIFR5cGVz
LiAgIyMKLS0jIyAtLS0tLS0tICMjCi0tCi0tIyBfYjRfdHlwZV9hY3Rpb24oTlVNUykKLS0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgUnVuIGFjdGlvbnMgZm9yIHRoZSBzeW1ib2wgTlVNUyB0
aGF0IGFsbCBoYXZlIHRoZSBzYW1lIHR5cGUtbmFtZS4KLS0jIFNraXAgTlVNUyB0aGF0IGhhdmUg
bm8gdHlwZS1uYW1lLgotLSMKLS0jIFRvIHNwZWNpZnkgdGhlIGFjdGlvbiB0byBydW4sIGRlZmlu
ZSBiNF9kb2xsYXJfZG9sbGFyKFNZTUJPTC1OVU0sCi0tIyBUQUcsIFRZUEUpLgotLW00X2RlZmlu
ZShbX2I0X3R5cGVfYWN0aW9uXSwKLS1bYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfdHlwZV0sCi0t
W200X21hcChbICAgICAgX2I0X3N5bWJvbF9jYXNlXSwgWyRAXSlbXWRubAotLSAgICAgICAgYjRf
ZG9sbGFyX2RvbGxhcihbYjRfc3ltYm9sKFskMV0sIFtudW1iZXJdKV0sCi0tICAgICAgICAgICAg
ICAgICAgICAgICAgIFtiNF9zeW1ib2woWyQxXSwgW3RhZ10pXSwKLS0gICAgICAgICAgICAgICAg
ICAgICAgICAgW2I0X3N5bWJvbChbJDFdLCBbdHlwZV0pXSk7Ci0tICAgICAgICBicmVhazsKLS0K
LS1dKV0pCi0tCi0tIyBiNF90eXBlX2ZvcmVhY2goTUFDUk8pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBJbnZva2UgTUFDUk8oU1lNQk9MLU5VTVMpIGZvciBlYWNoIHNldCBvZiBTWU1C
T0wtTlVNUyBmb3IgZWFjaCB0eXBlIHNldC4KLS1tNF9kZWZpbmUoW2I0X3R5cGVfZm9yZWFjaF0s
Ci0tICAgICAgICAgIFttNF9tYXAoWyQxXSwgbTRfZGVmbihbYjRfdHlwZV9uYW1lc10pKV0pCi0t
Ci0tCi0tCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0jIyBTeW5jbGluZXMuICAjIwotLSMjIC0tLS0t
LS0tLS0tICMjCi0tCi0tIyBiNF9iYXNlbmFtZShOQU1FKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0K
LS0jIFNpbWlsYXIgdG8gUE9TSVggYmFzZW5hbWU7IHRoZSBkaWZmZXJlbmNlcyBkb24ndCBtYXR0
ZXIgaGVyZS4KLS0jIEJld2FyZSB0aGF0IE5BTUUgaXMgbm90IGV2YWx1YXRlZC4KLS1tNF9kZWZp
bmUoW2I0X2Jhc2VuYW1lXSwKLS1bbTRfYnBhdHN1YnN0KFskMV0sIFteLiovXChbXi9dK1wpLyok
XSwgW1wxXSldKQotLQotLQotLSMgYjRfc3luY2xpbmUoTElORSwgRklMRSkKLS0jIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtiNF9zeW5jbGluZV0sCi0tW2I0X2ZsYWdfaWYo
W3N5bmNsaW5lc10sCi0tW2I0X3N5bmNfc3RhcnQoWyQxXSwgWyQyXSkgYjRfc3luY19lbmQoW19f
bGluZV9fXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYjRfYmFz
ZW5hbWUobTRfcXVvdGUoX19maWxlX18pKV0pW11kbmwKLS1dKV0pCi0tCi0tIyBiNF9zeW5jX3N0
YXJ0KExJTkUsIEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU3luY2xpbmUg
Zm9yIHRoZSBuZXcgcGxhY2UuICBUeXBpY2FsbHkgYSBkaXJlY3RpdmUgZm9yIHRoZSBjb21waWxl
ci4KLS1tNF9kZWZpbmUoW2I0X3N5bmNfc3RhcnRdLCBbYjRfY29tbWVudChbJDI6JDFdKV0pCi0t
Ci0tIyBiNF9zeW5jX2VuZChMSU5FLCBGSUxFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS0jIFN5bmNsaW5lIGZvciB0aGUgY3VycmVudCBwbGFjZSwgd2hpY2ggZW5kcy4gIFR5cGljYWxs
eSBhIGNvbW1lbnQKLS0jIGxlZnQgZm9yIHRoZSByZWFkZXIuCi0tbTRfZGVmaW5lKFtiNF9zeW5j
X2VuZF0sICAgW2I0X2NvbW1lbnQoWyQyOiQxXSldKQotLQotLQotLSMgYjRfdXNlcl9jb2RlKFVT
RVItQ09ERSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBFbWl0IGNvZGUgZnJvbSB0
aGUgdXNlciwgZW5kaW5nIGl0IHdpdGggc3luY2xpbmVzLgotLW00X2RlZmluZShbYjRfdXNlcl9j
b2RlXSwKLS1bJDEKLS1iNF9zeW5jbGluZShbQG9saW5lQF0sIFtAb2ZpbGVAXSldKQotLQotLQot
LSMgYjRfZGVmaW5lX3VzZXJfY29kZShNQUNSTywgQ09NTUVOVCkKLS0jIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBGcm9tIGI0X01BQ1JPLCBpZiBkZWZpbmVkLCBidWls
ZCBiNF91c2VyX01BQ1JPIHRoYXQgaW5jbHVkZXMgdGhlIHN5bmNsaW5lcy4KLS1tNF9kZWZpbmUo
W2I0X2RlZmluZV91c2VyX2NvZGVdLAotLVttNF9kZWZpbmUoW2I0X3VzZXJfJDFdLAotLSAgICAg
ICAgICAgW200X2lmZGVmKFtiNF8kMV0sCi0tICAgICAgICAgICAgICAgICAgICAgW200X2lmdmFs
KFskMl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiNF9jb21tZW50KFskMl0p
Ci0tXSliNF91c2VyX2NvZGUoW2I0XyQxXSldKV0pXSkKLS0KLS0jIGI0X3VzZXJfYWN0aW9ucwot
LSMgYjRfdXNlcl9pbml0aWFsX2FjdGlvbgotLSMgYjRfdXNlcl9wb3N0X3Byb2xvZ3VlCi0tIyBi
NF91c2VyX3ByZV9wcm9sb2d1ZQotLSMgYjRfdXNlcl91bmlvbl9tZW1iZXJzCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBNYWNyb3MgdGhhdCBpc3N1ZSB1c2VyIGNvZGUsIGVuZGluZyB3
aXRoIHN5bmNsaW5lcy4KLS1iNF9kZWZpbmVfdXNlcl9jb2RlKFthY3Rpb25zXSkKLS1iNF9kZWZp
bmVfdXNlcl9jb2RlKFtpbml0aWFsX2FjdGlvbl0sIFtVc2VyIGluaXRpYWxpemF0aW9uIGNvZGUu
XSkKLS1iNF9kZWZpbmVfdXNlcl9jb2RlKFtwb3N0X3Byb2xvZ3VlXSwgW1NlY29uZCBwYXJ0IG9m
IHVzZXIgcHJvbG9ndWUuXSkKLS1iNF9kZWZpbmVfdXNlcl9jb2RlKFtwcmVfcHJvbG9ndWVdLCBb
Rmlyc3QgcGFydCBvZiB1c2VyIHByb2xvZ3VlLl0pCi0tYjRfZGVmaW5lX3VzZXJfY29kZShbdW5p
b25fbWVtYmVyc10pCi0tCi0tCi0tIyBiNF9jaGVja191c2VyX25hbWVzKFdIQVQsIFVTRVItTElT
VCwgQklTT04tTkFNRVNQQUNFKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIENvbXBsYWluIGlmIGFueSBuYW1lIG9mIHR5cGUgV0hB
VCBpcyB1c2VkIGJ5IHRoZSB1c2VyIChhcyByZWNvcmRlZCBpbgotLSMgVVNFUi1MSVNUKSBidXQg
aXMgbm90IHVzZWQgYnkgQmlzb24gKGFzIHJlY29yZGVkIGJ5IG1hY3JvcyBpbiB0aGUKLS0jIG5h
bWVzcGFjZSBCSVNPTi1OQU1FU1BBQ0UpLgotLSMKLS0jIFVTRVItTElTVCBtdXN0IGV4cGFuZCB0
byBhIGxpc3Qgc3BlY2lmeWluZyBhbGwgdXNlciBvY2N1cnJlbmNlcyBvZiBhbGwgbmFtZXMKLS0j
IG9mIHR5cGUgV0hBVC4gICBFYWNoIGl0ZW0gaW4gdGhlIGxpc3QgbXVzdCBiZSBhIHRyaXBsZXQg
c3BlY2lmeWluZyBvbmUKLS0jIG9jY3VycmVuY2U6IG5hbWUsIHN0YXJ0IGJvdW5kYXJ5LCBhbmQg
ZW5kIGJvdW5kYXJ5LiAgRW1wdHkgc3RyaW5nIG5hbWVzIGFyZQotLSMgZmluZS4gIEFuIGVtcHR5
IGxpc3QgaXMgZmluZS4KLS0jCi0tIyBGb3IgZXhhbXBsZSwgdG8gZGVmaW5lIGI0X2Zvb191c2Vy
X25hbWVzIHRvIGJlIHVzZWQgZm9yIFVTRVItTElTVCB3aXRoIHRocmVlCi0tIyBuYW1lIG9jY3Vy
cmVuY2VzIGFuZCB3aXRoIGNvcnJlY3QgcXVvdGluZzoKLS0jCi0tIyAgIG00X2RlZmluZShbYjRf
Zm9vX3VzZXJfbmFtZXNdLAotLSMgICAgICAgICAgICAgW1tbW1tbYmFyXV0sIFtbcGFyc2VyLnk6
MS43XV0sIFtbcGFyc2VyLnk6MS4xNl1dXV0sCi0tIyAgICAgICAgICAgICAgIFtbW1tiYXJdXSwg
W1twYXJzZXIueTo1LjddXSwgW1twYXJzZXIueTo1LjE2XV1dXSwKLS0jICAgICAgICAgICAgICAg
W1tbW2Jhel1dLCBbW3BhcnNlci55OjguN11dLCBbW3BhcnNlci55OjguMTZdXV1dXV0pCi0tIwot
LSMgVGhlIG1hY3JvIEJJU09OLU5BTUVTUEFDRShiYXIpIG11c3QgYmUgZGVmaW5lZCBpZmYgdGhl
IG5hbWUgYmFyIG9mIHR5cGUgV0hBVAotLSMgaXMgdXNlZCBieSBCaXNvbiAoaW4gdGhlIGZyb250
LWVuZCBvciBpbiB0aGUgc2tlbGV0b24pLiAgRW1wdHkgc3RyaW5nIG5hbWVzCi0tIyBhcmUgZmlu
ZSwgYnV0IGl0IHdvdWxkIGJlIHVnbHkgZm9yIEJpc29uIHRvIGFjdHVhbGx5IHVzZSBvbmUuCi0t
IwotLSMgRm9yIGV4YW1wbGUsIHRvIHVzZSBiNF9mb29fYmlzb25fbmFtZXMgZm9yIEJJU09OLU5B
TUVTUEFDRSBhbmQgZGVmaW5lIHRoYXQKLS0jIHRoZSBuYW1lcyBiYXIgYW5kIGJheiBhcmUgdXNl
ZCBieSBCaXNvbjoKLS0jCi0tIyAgIG00X2RlZmluZShbYjRfZm9vX2Jpc29uX25hbWVzKGJhcild
KQotLSMgICBtNF9kZWZpbmUoW2I0X2Zvb19iaXNvbl9uYW1lcyhiYXopXSkKLS0jCi0tIyBUbyBp
bnZva2UgYjRfY2hlY2tfdXNlcl9uYW1lcyB3aXRoIFRZUEUgZm9vLCB3aXRoIFVTRVItTElTVAot
LSMgYjRfZm9vX3VzZXJfbmFtZXMsIHdpdGggQklTT04tTkFNRVNQQUNFIGI0X2Zvb19iaXNvbl9u
YW1lcywgYW5kIHdpdGggY29ycmVjdAotLSMgcXVvdGluZzoKLS0jCi0tIyAgIGI0X2NoZWNrX3Vz
ZXJfbmFtZXMoW1tmb29dXSwgW2I0X2Zvb191c2VyX25hbWVzXSwKLS0jICAgICAgICAgICAgICAg
ICAgICAgICBbW2I0X2Zvb19iaXNvbl9uYW1lc11dKQotLW00X2RlZmluZShbYjRfY2hlY2tfdXNl
cl9uYW1lc10sCi0tW200X2ZvcmVhY2goW2I0X29jY3VycmVuY2VdLCAkMiwKLS1bbTRfcHVzaGRl
ZihbYjRfb2NjdXJyZW5jZV0sIGI0X29jY3VycmVuY2UpZG5sCi0tbTRfcHVzaGRlZihbYjRfdXNl
cl9uYW1lXSwgbTRfY2FyKGI0X29jY3VycmVuY2UpKWRubAotLW00X3B1c2hkZWYoW2I0X3N0YXJ0
XSwgbTRfY2FyKG00X3NoaWZ0KGI0X29jY3VycmVuY2UpKSlkbmwKLS1tNF9wdXNoZGVmKFtiNF9l
bmRdLCBtNF9zaGlmdChtNF9zaGlmdChiNF9vY2N1cnJlbmNlKSkpZG5sCi0tbTRfaWZuZGVmKCQz
WyhdbTRfcXVvdGUoYjRfdXNlcl9uYW1lKVspXSwKLS0gICAgICAgICAgW2I0X2NvbXBsYWluX2F0
KFtiNF9zdGFydF0sIFtiNF9lbmRdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgW1slcyAn
JXMnIGlzIG5vdCB1c2VkXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbJDFdLCBbYjRf
dXNlcl9uYW1lXSldKVtdZG5sCi0tbTRfcG9wZGVmKFtiNF9vY2N1cnJlbmNlXSlkbmwKLS1tNF9w
b3BkZWYoW2I0X3VzZXJfbmFtZV0pZG5sCi0tbTRfcG9wZGVmKFtiNF9zdGFydF0pZG5sCi0tbTRf
cG9wZGVmKFtiNF9lbmRdKWRubAotLV0pXSkKLS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKLS0jIyBiNF9wZXJjZW50X2RlZmluZV8qLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0gIyMKLS0KLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5lX3VzZShWQVJJQUJMRSkKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlY2xhcmUgdGhhdCBWQVJJQUJM
RSB3YXMgdXNlZC4KLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX3VzZV0sCi0tW200X2Rl
ZmluZShbYjRfcGVyY2VudF9kZWZpbmVfYmlzb25fdmFyaWFibGVzKF0kMVspXSlkbmwKLS1dKQot
LQotLSMgYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFZBUklBQkxFLCBbREVGQVVMVF0pCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIE1pbWljIG11c2NsZV9w
ZXJjZW50X2RlZmluZV9nZXQgaW4gLi4vc3JjL211c2NsZS10YWIuaC4gIFRoYXQgaXMsIGlmCi0t
IyB0aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyBkZWZpbmVkLCBlbWl0IGl0cyB2YWx1
ZS4gIENvbnRyYXJ5Ci0tIyB0byBpdHMgQyBjb3VudGVycGFydCwgcmV0dXJuIERFRkFVTFQgb3Ro
ZXJ3aXNlLiAgQWxzbywgcmVjb3JkCi0tIyBCaXNvbidzIHVzYWdlIG9mIFZBUklBQkxFIGJ5IGRl
ZmluaW5nCi0tIyBiNF9wZXJjZW50X2RlZmluZV9iaXNvbl92YXJpYWJsZXMoVkFSSUFCTEUpLgot
LSMKLS0jIEZvciBleGFtcGxlOgotLSMKLS0jICAgYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbZm9v
XV0pCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9nZXRdLAotLVtiNF9wZXJjZW50X2Rl
ZmluZV91c2UoWyQxXSlkbmwKLS1fYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoWyQxXSwKLS0gICAg
ICAgICAgICAgICAgICAgICAgICAgW200X2luZGlyKFtiNF9wZXJjZW50X2RlZmluZShdJDFbKV0p
XSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgWyQyXSldKQotLQotLSMgYjRfcGVyY2VudF9k
ZWZpbmVfZ2V0X2xvYyhWQVJJQUJMRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tIyBNaW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyBpbiAuLi9zcmMv
bXVzY2xlLXRhYi5oIGV4YWN0bHkuICBUaGF0IGlzLAotLSMgaWYgdGhlICVkZWZpbmUgdmFyaWFi
bGUgVkFSSUFCTEUgaXMgdW5kZWZpbmVkLCBjb21wbGFpbiBmYXRhbGx5IHNpbmNlIHRoYXQncwot
LSMgYSBCaXNvbiBvciBza2VsZXRvbiBlcnJvci4gIE90aGVyd2lzZSwgcmV0dXJuIGl0cyBkZWZp
bml0aW9uIGxvY2F0aW9uIGluIGEKLS0jIGZvcm0gYXBwcm9wcmlhdGUgZm9yIHRoZSBmaXJzdCB0
d28gYXJndW1lbnRzIG9mIGI0X3dhcm5fYXQsIGI0X2NvbXBsYWluX2F0LCBvcgotLSMgYjRfZmF0
YWxfYXQuICBEb24ndCByZWNvcmQgdGhpcyBhcyBhIEJpc29uIHVzYWdlIG9mIFZBUklBQkxFIGFz
IHRoZXJlJ3Mgbm8KLS0jIHJlYXNvbiB0byBzdXNwZWN0IHRoYXQgdGhlIHVzZXItc3VwcGxpZWQg
dmFsdWUgaGFzIHlldCBpbmZsdWVuY2VkIHRoZSBvdXRwdXQuCi0tIwotLSMgRm9yIGV4YW1wbGU6
Ci0tIwotLSMgICBiNF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFtbZm9v
XV0pLCBbW2ludmFsaWQgZm9vXV0pCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9nZXRf
bG9jXSwKLS1bbTRfaWZkZWYoW2I0X3BlcmNlbnRfZGVmaW5lX2xvYyhdJDFbKV0sCi0tICAgICAg
ICAgIFttNF9wdXNoZGVmKFtiNF9sb2NdLCBtNF9pbmRpcihbYjRfcGVyY2VudF9kZWZpbmVfbG9j
KF0kMVspXSkpZG5sCi0tYjRfbG9jW11kbmwKLS1tNF9wb3BkZWYoW2I0X2xvY10pXSwKLS0gICAg
ICAgICAgW2I0X2ZhdGFsKFtbJDA6IHVuZGVmaW5lZCAlJWRlZmluZSB2YXJpYWJsZSAnJXMnXV0s
IFskMV0pXSldKQotLQotLSMgYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2tpbmQoVkFSSUFCTEUpCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEdldCB0aGUga2luZCAo
Y29kZSwga2V5d29yZCwgc3RyaW5nKSBvZiBWQVJJQUJMRSwgaS5lLiwgaG93IGl0cwotLSMgdmFs
dWUgd2FzIGRlZmluZWQgKGJyYWNlcywgbm90IGRlbGltaXRlcnMsIHF1b3RlcykuCi0tIwotLSMg
SWYgdGhlICVkZWZpbmUgdmFyaWFibGUgVkFSSUFCTEUgaXMgdW5kZWZpbmVkLCBjb21wbGFpbiBm
YXRhbGx5Ci0tIyBzaW5jZSB0aGF0J3MgYSBCaXNvbiBvciBza2VsZXRvbiBlcnJvci4gIERvbid0
IHJlY29yZCB0aGlzIGFzIGEKLS0jIEJpc29uIHVzYWdlIG9mIFZBUklBQkxFIGFzIHRoZXJlJ3Mg
bm8gcmVhc29uIHRvIHN1c3BlY3QgdGhhdCB0aGUKLS0jIHVzZXItc3VwcGxpZWQgdmFsdWUgaGFz
IHlldCBpbmZsdWVuY2VkIHRoZSBvdXRwdXQuCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmlu
ZV9nZXRfa2luZF0sCi0tW200X2lmZGVmKFtiNF9wZXJjZW50X2RlZmluZV9raW5kKF0kMVspXSwK
LS0gICAgICAgICAgW200X2luZGlyKFtiNF9wZXJjZW50X2RlZmluZV9raW5kKF0kMVspXSldLAot
LSAgICAgICAgICBbYjRfZmF0YWwoW1skMDogdW5kZWZpbmVkICUlZGVmaW5lIHZhcmlhYmxlICcl
cyddXSwgWyQxXSldKV0pCi0tCi0tIyBiNF9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmUoVkFS
SUFCTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBN
aW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfZ2V0X3N5bmNsaW5lIGluIC4uL3NyYy9tdXNjbGUt
dGFiLmggZXhhY3RseS4KLS0jIFRoYXQgaXMsIGlmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklB
QkxFIGlzIHVuZGVmaW5lZCwgY29tcGxhaW4gZmF0YWxseQotLSMgc2luY2UgdGhhdCdzIGEgQmlz
b24gb3Igc2tlbGV0b24gZXJyb3IuICBPdGhlcndpc2UsIHJldHVybiBpdHMgZGVmaW5pdGlvbgot
LSMgbG9jYXRpb24gYXMgYSBiNF9zeW5jbGluZSBpbnZvY2F0aW9uLiAgRG9uJ3QgcmVjb3JkIHRo
aXMgYXMgYSBCaXNvbiB1c2FnZSBvZgotLSMgVkFSSUFCTEUgYXMgdGhlcmUncyBubyByZWFzb24g
dG8gc3VzcGVjdCB0aGF0IHRoZSB1c2VyLXN1cHBsaWVkIHZhbHVlIGhhcyB5ZXQKLS0jIGluZmx1
ZW5jZWQgdGhlIG91dHB1dC4KLS0jCi0tIyBGb3IgZXhhbXBsZToKLS0jCi0tIyAgIGI0X3BlcmNl
bnRfZGVmaW5lX2dldF9zeW5jbGluZShbW2Zvb11dKQotLW00X2RlZmluZShbYjRfcGVyY2VudF9k
ZWZpbmVfZ2V0X3N5bmNsaW5lXSwKLS1bbTRfaWZkZWYoW2I0X3BlcmNlbnRfZGVmaW5lX3N5bmNs
aW5lKF0kMVspXSwKLS0gICAgICAgICAgW200X2luZGlyKFtiNF9wZXJjZW50X2RlZmluZV9zeW5j
bGluZShdJDFbKV0pXSwKLS0gICAgICAgICAgW2I0X2ZhdGFsKFtbJDA6IHVuZGVmaW5lZCAlJWRl
ZmluZSB2YXJpYWJsZSAnJXMnXV0sIFskMV0pXSldKQotLQotLSMgX2I0X3BlcmNlbnRfZGVmaW5l
X2lmZGVmKFZBUklBQkxFLCBJRi1UUlVFLCBbSUYtRkFMU0VdKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBJZiB0aGUgJWRlZmlu
ZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyBkZWZpbmVkLCBleHBhbmQgSUYtVFJVRSwgZWxzZSBleHBh
bmQKLS0jIElGLUZBTFNFLiAgRG9uJ3QgcmVjb3JkIHVzYWdlIG9mIFZBUklBQkxFLgotLSMKLS0j
IEZvciBleGFtcGxlOgotLSMKLS0jICAgX2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFtbZm9vXV0s
IFtbaXQncyBkZWZpbmVkXV0sIFtbaXQncyB1bmRlZmluZWRdXSkKLS1tNF9kZWZpbmUoW19iNF9w
ZXJjZW50X2RlZmluZV9pZmRlZl0sCi0tW200X2lmZGVmKFtiNF9wZXJjZW50X2RlZmluZShdJDFb
KV0sCi0tICAgICAgICAgIFskMl0sCi0tICAgICAgICAgIFskM10pXSkKLS0KLS0jIGI0X3BlcmNl
bnRfZGVmaW5lX2lmZGVmKFZBUklBQkxFLCBJRi1UUlVFLCBbSUYtRkFMU0VdKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBNaW1p
YyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfaWZkZWYgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFj
dGx5LiAgVGhhdCBpcywKLS0jIGlmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlzIGRl
ZmluZWQsIGV4cGFuZCBJRi1UUlVFLCBlbHNlIGV4cGFuZAotLSMgSUYtRkFMU0UuICBBbHNvLCBy
ZWNvcmQgQmlzb24ncyB1c2FnZSBvZiBWQVJJQUJMRSBieSBkZWZpbmluZwotLSMgYjRfcGVyY2Vu
dF9kZWZpbmVfYmlzb25fdmFyaWFibGVzKFZBUklBQkxFKS4KLS0jCi0tIyBGb3IgZXhhbXBsZToK
LS0jCi0tIyAgIGI0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFtbZm9vXV0sIFtbaXQncyBkZWZpbmVk
XV0sIFtbaXQncyB1bmRlZmluZWRdXSkKLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2lm
ZGVmXSwKLS1bX2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCi0tICAgICAgICAgICAgICAg
ICAgICAgICAgIFtiNF9wZXJjZW50X2RlZmluZV91c2UoWyQxXSkkMl0sCi0tICAgICAgICAgICAg
ICAgICAgICAgICAgIFskM10pXSkKLS0KLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2Zp
bGVfY29tcGxhaW4oVkFSSUFCTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgV2FybiBhYm91dCAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxF
IGhhdmluZyBhbiBpbmNvcnJlY3QKLS0jIHZhbHVlLgotLW00X2RlZmluZShbYjRfcGVyY2VudF9k
ZWZpbmVfY2hlY2tfZmlsZV9jb21wbGFpbl0sCi0tW2I0X2NvbXBsYWluX2F0KGI0X3BlcmNlbnRf
ZGVmaW5lX2dldF9sb2MoWyQxXSksCi0tICAgICAgICAgICAgICAgIFtbJSVkZWZpbmUgdmFyaWFi
bGUgJyVzJyByZXF1aXJlcyAnbm9uZScgb3IgJyIuLi4iJyB2YWx1ZXNdXSwKLS0gICAgICAgICAg
ICAgICAgWyQxXSldKQotLQotLQotLSMgYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfZmlsZShNQUNS
TywgVkFSSUFCTEUsIERFRkFVTFQpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklB
QkxFOgotLSMgLSBpcyB1bmRlZmluZWQsIHRoZW4gaWYgREVGQVVMVCBpcyBub24tZW1wdHksIGRl
ZmluZSBNQUNSTyB0byBERUZBVUxUCi0tIyAtIGlzIGEgc3RyaW5nLCBkZWZpbmUgTUFDUk8gdG8g
aXRzIHZhbHVlCi0tIyAtIGlzIHRoZSBrZXl3b3JkICdub25lJywgZG8gbm90aGluZwotLSMgLSBv
dGhlcndpc2UsIHdhcm4gYWJvdXQgdGhlIGluY29ycmVjdCB2YWx1ZS4KLS1tNF9kZWZpbmUoW2I0
X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2ZpbGVdLAotLVtiNF9wZXJjZW50X2RlZmluZV9pZmRlZihb
JDJdLAotLSAgW200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2tpbmQoWyQyXSksCi0tICAg
IFtzdHJpbmddLAotLSAgICAgICAgIFttNF9kZWZpbmUoWyQxXSwgYjRfcGVyY2VudF9kZWZpbmVf
Z2V0KFskMl0pKV0sCi0tICAgIFtrZXl3b3JkXSwKLS0gICAgICAgICBbbTRfaWYoYjRfcGVyY2Vu
dF9kZWZpbmVfZ2V0KFskMl0pLCBbbm9uZV0sIFtdLAotLSAgICAgICAgICAgICAgICBbYjRfcGVy
Y2VudF9kZWZpbmVfY2hlY2tfZmlsZV9jb21wbGFpbihbJDJdKV0pXSwKLS0gICAgW2I0X3BlcmNl
bnRfZGVmaW5lX2NoZWNrX2ZpbGVfY29tcGxhaW4oWyQyXSldKQotLSAgIF0sCi0tICAgW200X2lm
dmFsKFskM10sCi0tICAgICAgICAgICAgIFttNF9kZWZpbmUoWyQxXSwgWyQzXSldKV0pCi0tXSkK
LS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0gIyMKLS0jIyBPcHRpb25zLiAgIyMKLS0jIyAtLS0tLS0t
LS0gIyMKLS0KLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2ZsYWdfaWYoVkFSSUFCTEUsIElGLVRS
VUUsIFtJRi1GQUxTRV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5lX2ZsYWdf
aWYgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5LiAgVGhhdCBpcywKLS0jIGlmIHRoZSAl
ZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlzIGRlZmluZWQgdG8gIiIgb3IgInRydWUiLCBleHBh
bmQgSUYtVFJVRS4KLS0jIElmIGl0IGlzIGRlZmluZWQgdG8gImZhbHNlIiwgZXhwYW5kIElGLUZB
TFNFLiAgQ29tcGxhaW4gaWYgaXQgaXMgdW5kZWZpbmVkCi0tIyAoYSBCaXNvbiBvciBza2VsZXRv
biBlcnJvciBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgaGF2ZSBiZWVuIHNldAotLSMg
YWxyZWFkeSkgb3IgZGVmaW5lZCB0byBhbnkgb3RoZXIgdmFsdWUgKHBvc3NpYmx5IGEgdXNlciBl
cnJvcikuICBBbHNvLCByZWNvcmQKLS0jIEJpc29uJ3MgdXNhZ2Ugb2YgVkFSSUFCTEUgYnkgZGVm
aW5pbmcKLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2Jpc29uX3ZhcmlhYmxlcyhWQVJJQUJMRSkuCi0t
IwotLSMgRm9yIGV4YW1wbGU6Ci0tIwotLSMgICBiNF9wZXJjZW50X2RlZmluZV9mbGFnX2lmKFtb
Zm9vXV0sIFtbaXQncyB0cnVlXV0sIFtbaXQncyBmYWxzZV1dKQotLW00X2RlZmluZShbYjRfcGVy
Y2VudF9kZWZpbmVfZmxhZ19pZl0sCi0tW2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCi0t
ICBbbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXQoWyQxXSksCi0tICAgICAgICAgICBbXSwg
WyQyXSwgW3RydWVdLCBbJDJdLCBbZmFsc2VdLCBbJDNdLAotLSAgICAgICAgICAgW200X2V4cGFu
ZF9vbmNlKFtiNF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAot
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW2ludmFsaWQgdmFs
dWUgZm9yICUlZGVmaW5lIEJvb2xlYW4gdmFyaWFibGUgJyVzJ11dLAotLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJDFdKV0sCi0tICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1tiNF9wZXJjZW50X2RlZmluZV9mbGFnX2lmKCQxKV1dKV0pXSwKLS0gIFtiNF9m
YXRhbChbWyQwOiB1bmRlZmluZWQgJSVkZWZpbmUgdmFyaWFibGUgJyVzJ11dLCBbJDFdKV0pXSkK
LS0KLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoVkFSSUFCTEUsIERFRkFVTFQsIFtL
SU5EID0ga2V5d29yZF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTWltaWMgbXVzY2xlX3BlcmNlbnRfZGVmaW5l
X2RlZmF1bHQgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5LiAgVGhhdCBpcywKLS0jIGlm
IHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlzIHVuZGVmaW5lZCwgc2V0IGl0cyB2YWx1
ZSB0byBERUZBVUxULgotLSMgRG9uJ3QgcmVjb3JkIHRoaXMgYXMgYSBCaXNvbiB1c2FnZSBvZiBW
QVJJQUJMRSBhcyB0aGVyZSdzIG5vIHJlYXNvbiB0bwotLSMgc3VzcGVjdCB0aGF0IHRoZSB2YWx1
ZSBoYXMgeWV0IGluZmx1ZW5jZWQgdGhlIG91dHB1dC4KLS0jCi0tIyBGb3IgZXhhbXBsZToKLS0j
Ci0tIyAgIGI0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1tmb29dXSwgW1tkZWZhdWx0IHZhbHVl
XV0pCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0XSwKLS1bX2I0X3BlcmNl
bnRfZGVmaW5lX2lmZGVmKFskMV0sIFtdLAotLSAgICAgICAgICAgW200X2RlZmluZShbYjRfcGVy
Y2VudF9kZWZpbmUoXSQxWyldLCBbJDJdKWRubAotLSAgICAgICAgICAgIG00X2RlZmluZShbYjRf
cGVyY2VudF9kZWZpbmVfa2luZChdJDFbKV0sCi0tICAgICAgICAgICAgICAgICAgICAgIFttNF9k
ZWZhdWx0KFskM10sIFtrZXl3b3JkXSldKWRubAotLSAgICAgICAgICAgIG00X2RlZmluZShbYjRf
cGVyY2VudF9kZWZpbmVfbG9jKF0kMVspXSwKLS0gICAgICAgICAgICAgICAgICAgICAgW1tbWzxz
a2VsZXRvbiBkZWZhdWx0IHZhbHVlPjotMS4tMV1dLAotLSAgICAgICAgICAgICAgICAgICAgICAg
IFtbPHNrZWxldG9uIGRlZmF1bHQgdmFsdWU+Oi0xLi0xXV1dXSlkbmwKLS0gICAgICAgICAgICBt
NF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX3N5bmNsaW5lKF0kMVspXSwgW1tdXSldKV0pCi0t
Ci0tCi0tIyBiNF9wZXJjZW50X2RlZmluZV9pZl9kZWZpbmUoTkFNRSwgW1ZBUklBQkxFID0gTkFN
RV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0tIyBEZWZpbmUgYjRfTkFNRV9pZiB0aGF0IGV4ZWN1dGVzIGl0cyAkMSBvciAkMiBkZXBl
bmRpbmcgd2hldGhlcgotLSMgVkFSSUFCTEUgd2FzICVkZWZpbmVkLiAgVGhlIGNoYXJhY3RlcnMg
Jy4nIGFuZCBgLScgaW4gVkFSSUFCTEUgYXJlIG1hcHBlZAotLSMgdG8gJ18nLgotLW00X2RlZmlu
ZShbX2I0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZV0sCi0tW200X2RlZmluZShtNF9icGF0c3Vi
c3QoW2I0XyQxX2lmXSwgW1stLl1dLCBbX10pLAotLSAgICAgICAgICAgW2I0X3BlcmNlbnRfZGVm
aW5lX2ZsYWdfaWYobTRfZGVmYXVsdChbJDJdLCBbJDFdKSwKLS0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFskM10sIFskNF0pXSldKQotLW00X2RlZmluZShbYjRfcGVyY2Vu
dF9kZWZpbmVfaWZfZGVmaW5lXSwKLS1bYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVsdChbbTRfZGVm
YXVsdChbJDJdLCBbJDFdKV0sIFtbZmFsc2VdXSkKLS1fYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVm
aW5lKFskMV0sIFskMl0sICRbMV0sICRbMl0pXSkKLS0KLS0KLS0jIGI0X3BlcmNlbnRfZGVmaW5l
X2NoZWNrX2tpbmQoVkFSSUFCTEUsIEtJTkQsIFtESUFHTk9TVElDID0gY29tcGxhaW5dKQotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kXSwK
LS1bX2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFskMV0sCi0tICBbbTRfaWYoYjRfcGVyY2VudF9k
ZWZpbmVfZ2V0X2tpbmQoWyQxXSksIFskMl0sIFtdLAotLSAgICBbYjRfZXJyb3IoW200X2RlZmF1
bHQoWyQzXSwgW2NvbXBsYWluXSldLAotLSAgICAgICAgICAgICAgYjRfcGVyY2VudF9kZWZpbmVf
Z2V0X2xvYyhbJDFdKSwKLS0gICAgICAgICAgICAgIFttNF9jYXNlKFskMl0sCi0tICAgICAgICAg
ICAgICAgICBbY29kZV0sICAgIFtbJSVkZWZpbmUgdmFyaWFibGUgJyVzJyByZXF1aXJlcyAney4u
Ln0nIHZhbHVlc11dLAotLSAgICAgICAgICAgICAgICAgW2tleXdvcmRdLCBbWyUlZGVmaW5lIHZh
cmlhYmxlICclcycgcmVxdWlyZXMga2V5d29yZCB2YWx1ZXNdXSwKLS0gICAgICAgICAgICAgICAg
IFtzdHJpbmddLCAgW1slJWRlZmluZSB2YXJpYWJsZSAnJXMnIHJlcXVpcmVzICciLi4uIicgdmFs
dWVzXV0pXSwKLS0gICAgICAgICAgICAgIFskMV0pXSldKWRubAotLV0pCi0tCi0tCi0tIyBiNF9w
ZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXMoVkFMVUVTKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIE1pbWljIG11c2NsZV9wZXJjZW50X2RlZmluZV9jaGVj
a192YWx1ZXMgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5Ci0tIyBleGNlcHQgdGhhdCB0
aGUgVkFMVUVTIHN0cnVjdHVyZSBpcyBtb3JlIGFwcHJvcHJpYXRlIGZvciBNNC4gIFRoYXQgaXMs
IFZBTFVFUwotLSMgaXMgYSBsaXN0IG9mIHN1Ymxpc3RzIG9mIHN0cmluZ3MuICBGb3IgZWFjaCBz
dWJsaXN0LCB0aGUgZmlyc3Qgc3RyaW5nIGlzIHRoZQotLSMgbmFtZSBvZiBhICVkZWZpbmUgdmFy
aWFibGUsIGFuZCBhbGwgcmVtYWluaW5nIHN0cmluZ3MgaW4gdGhhdCBzdWJsaXN0IGFyZSB0aGUK
LS0jIHZhbGlkIHZhbHVlcyBmb3IgdGhhdCB2YXJpYWJsZS4gIENvbXBsYWluIGlmIHN1Y2ggYSB2
YXJpYWJsZSBpcyB1bmRlZmluZWQgKGEKLS0jIEJpc29uIGVycm9yIHNpbmNlIHRoZSBkZWZhdWx0
IHZhbHVlIHNob3VsZCBoYXZlIGJlZW4gc2V0IGFscmVhZHkpIG9yIGRlZmluZWQKLS0jIHRvIGFu
eSBvdGhlciB2YWx1ZSAocG9zc2libHkgYSB1c2VyIGVycm9yKS4gIERvbid0IHJlY29yZCB0aGlz
IGFzIGEgQmlzb24KLS0jIHVzYWdlIG9mIHRoZSB2YXJpYWJsZSBhcyB0aGVyZSdzIG5vIHJlYXNv
biB0byBzdXNwZWN0IHRoYXQgdGhlIHZhbHVlIGhhcyB5ZXQKLS0jIGluZmx1ZW5jZWQgdGhlIG91
dHB1dC4KLS0jCi0tIyBGb3IgZXhhbXBsZToKLS0jCi0tIyAgIGI0X3BlcmNlbnRfZGVmaW5lX2No
ZWNrX3ZhbHVlcyhbW1tbZm9vXV0sIFtbZm9vLXZhbHVlMV1dLCBbW2Zvby12YWx1ZTJdXV1dLAot
LSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tbW2Jhcl1dLCBbW2Jhci12YWx1
ZTFdXV1dKQotLW00X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVzXSwKLS1b
bTRfZm9yZWFjaChbYjRfc3VibGlzdF0sIG00X3F1b3RlKCRAKSwKLS0gICAgICAgICAgICBbX2I0
X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhiNF9zdWJsaXN0KV0pXSkKLS0KLS1tNF9kZWZp
bmUoW19iNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXNdLAotLVtfYjRfcGVyY2VudF9kZWZp
bmVfaWZkZWYoWyQxXSwKLS0gIFtiNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kKF0kMVssIFtr
ZXl3b3JkXSwgW2RlcHJlY2F0ZWRdKWRubAotLSAgIG00X3B1c2hkZWYoW2I0X2dvb2RfdmFsdWVd
LCBbMF0pZG5sCi0tICAgbTRfaWYoJCMsIDEsIFtdLAotLSAgICAgICAgIFttNF9mb3JlYWNoKFti
NF92YWx1ZV0sIG00X2RxdW90ZShtNF9zaGlmdCgkQCkpLAotLSAgICAgICAgICAgICAgICAgICAg
IFttNF9pZihtNF9pbmRpcihbYjRfcGVyY2VudF9kZWZpbmUoXSQxWyldKSwgYjRfdmFsdWUsCi0t
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttNF9kZWZpbmUoW2I0X2dvb2RfdmFsdWVdLCBb
MV0pXSldKV0pZG5sCi0tICAgbTRfaWYoYjRfZ29vZF92YWx1ZSwgWzBdLAotLSAgICAgICAgIFti
NF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAotLSAgICAgICAg
ICAgICAgICAgICAgICAgICBbW2ludmFsaWQgdmFsdWUgZm9yICUlZGVmaW5lIHZhcmlhYmxlICcl
cyc6ICclcyddXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgWyQxXSwKLS0gICAgICAgICAg
ICAgICAgICAgICAgICAgbTRfZHF1b3RlKG00X2luZGlyKFtiNF9wZXJjZW50X2RlZmluZShdJDFb
KV0pKSkKLS0gICAgICAgICAgbTRfZm9yZWFjaChbYjRfdmFsdWVdLCBtNF9kcXVvdGUobTRfc2hp
ZnQoJEApKSwKLS0gICAgICAgICAgICAgICAgICAgICBbYjRfZXJyb3IoW1tub3RlXV0sIGI0X3Bl
cmNlbnRfZGVmaW5lX2dldF9sb2MoWyQxXSksIFtdCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtbYWNjZXB0ZWQgdmFsdWU6ICclcyddXSwKLS0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbTRfZHF1b3RlKGI0X3ZhbHVlKSldKV0pZG5sCi0tICAgbTRf
cG9wZGVmKFtiNF9nb29kX3ZhbHVlXSldLAotLSAgW2I0X2ZhdGFsKFtbJDA6IHVuZGVmaW5lZCAl
JWRlZmluZSB2YXJpYWJsZSAnJXMnXV0sIFskMV0pXSldKQotLQotLSMgYjRfcGVyY2VudF9jb2Rl
X2dldChbUVVBTElGSUVSXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBJZiBhbnkgJWNvZGUgYmxvY2tzIGZvciBRVUFMSUZJRVIgYXJlIGRlZmluZWQsIGVtaXQgdGhl
bSBiZWdpbm5pbmcgd2l0aCBhCi0tIyBjb21tZW50IGFuZCBlbmRpbmcgd2l0aCBzeW5jbGluZXMg
YW5kIGEgbmV3bGluZS4gIElmIFFVQUxJRklFUiBpcyBub3QKLS0jIHNwZWNpZmllZCBvciBlbXB0
eSwgZG8gdGhpcyBmb3IgdGhlIHVucXVhbGlmaWVkICVjb2RlIGJsb2Nrcy4gIEFsc28sIHJlY29y
ZAotLSMgQmlzb24ncyB1c2FnZSBvZiBRVUFMSUZJRVIgKGlmIHNwZWNpZmllZCkgYnkgZGVmaW5p
bmcKLS0jIGI0X3BlcmNlbnRfY29kZV9iaXNvbl9xdWFsaWZpZXJzKFFVQUxJRklFUikuCi0tIwot
LSMgRm9yIGV4YW1wbGUsIHRvIGVtaXQgYW55IHVucXVhbGlmaWVkICVjb2RlIGJsb2NrcyBmb2xs
b3dlZCBieSBhbnkgJWNvZGUKLS0jIGJsb2NrcyBmb3IgdGhlIHF1YWxpZmllciBmb286Ci0tIwot
LSMgICBiNF9wZXJjZW50X2NvZGVfZ2V0Ci0tIyAgIGI0X3BlcmNlbnRfY29kZV9nZXQoW1tmb29d
XSkKLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfY29kZV9nZXRdLAotLVttNF9wdXNoZGVmKFtiNF9t
YWNyb19uYW1lXSwgW1tiNF9wZXJjZW50X2NvZGUoXSQxWyldXSlkbmwKLS1tNF9pZnZhbChbJDFd
LCBbbTRfZGVmaW5lKFtiNF9wZXJjZW50X2NvZGVfYmlzb25fcXVhbGlmaWVycyhdJDFbKV0pXSlk
bmwKLS1tNF9pZmRlZihiNF9tYWNyb19uYW1lLAotLVtiNF9jb21tZW50KFttNF9pZihbJCNdLCBb
MF0sIFtbVW5xdWFsaWZpZWQgJWNvZGVdXSwKLS0gICAgICAgICAgICAgICAgICAgW1siJWNvZGUg
XSQxWyJdXSlbIGJsb2Nrcy5dXSkKLS1iNF91c2VyX2NvZGUoW200X2luZGlyKGI0X21hY3JvX25h
bWUpXSkKLS1dKWRubAotLW00X3BvcGRlZihbYjRfbWFjcm9fbmFtZV0pXSkKLS0KLS0jIGI0X3Bl
cmNlbnRfY29kZV9pZmRlZihRVUFMSUZJRVIsIElGLVRSVUUsIFtJRi1GQUxTRV0pCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSWYg
YW55ICVjb2RlIGJsb2NrcyBmb3IgUVVBTElGSUVSIChvciB1bnF1YWxpZmllZCAlY29kZSBibG9j
a3MgaWYKLS0jIFFVQUxJRklFUiBpcyBlbXB0eSkgYXJlIGRlZmluZWQsIGV4cGFuZCBJRi1UUlVF
LCBlbHNlIGV4cGFuZCBJRi1GQUxTRS4KLS0jIEFsc28sIHJlY29yZCBCaXNvbidzIHVzYWdlIG9m
IFFVQUxJRklFUiAoaWYgc3BlY2lmaWVkKSBieSBkZWZpbmluZwotLSMgYjRfcGVyY2VudF9jb2Rl
X2Jpc29uX3F1YWxpZmllcnMoUVVBTElGSUVSKS4KLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfY29k
ZV9pZmRlZl0sCi0tW200X2lmZGVmKFtiNF9wZXJjZW50X2NvZGUoXSQxWyldLAotLSAgICAgICAg
ICBbbTRfaWZ2YWwoWyQxXSwgW200X2RlZmluZShbYjRfcGVyY2VudF9jb2RlX2Jpc29uX3F1YWxp
ZmllcnMoXSQxWyldKV0pJDJdLAotLSAgICAgICAgICBbJDNdKV0pCi0tCi0tCi0tIyMgLS0tLS0t
LS0tLS0tLS0tLS0tICMjCi0tIyMgQ29tbW9uIHZhcmlhYmxlcy4gICMjCi0tIyMgLS0tLS0tLS0t
LS0tLS0tLS0tICMjCi0tCi0tCi0tIyBiNF9wYXJzZV9hc3NlcnRfaWYoW0lGLUFTU0VSVElPTlMt
QVJFLVVTRURdLCBbSUYtTk9UXSkKLS0jIGI0X3BhcnNlX3RyYWNlX2lmKFtJRi1ERUJVRy1UUkFD
RVMtQVJFLUVOQUJMRURdLCBbSUYtTk9UXSkKLS0jIGI0X3Rva2VuX2N0b3JfaWYoW0lGLVlZTEVY
LVJFVFVSTlMtQS1UT0tFTl0sIFtJRi1OT1RdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLWI0X3BlcmNlbnRfZGVmaW5lX2lm
X2RlZmluZShbdG9rZW5fY3Rvcl0sIFthcGkudG9rZW4uY29uc3RydWN0b3JdKQotLWI0X3BlcmNl
bnRfZGVmaW5lX2lmX2RlZmluZShbbG9jYXRpb25zXSkgICAgICMgV2hldGhlciBsb2NhdGlvbnMg
YXJlIHRyYWNrZWQuCi0tYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5lKFtwYXJzZS5hc3NlcnRd
KQotLWI0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmluZShbcGFyc2UudHJhY2VdKQotLQotLQotLSMg
YjRfYmlzb25fbG9jYXRpb25zX2lmKFtJRi1UUlVFXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBFeHBhbmQgSUYtVFJVRSBpZiB1c2luZyBsb2NhdGlvbnMsIGFuZCB1
c2luZyB0aGUgZGVmYXVsdCBsb2NhdGlvbgotLSMgdHlwZS4KLS1tNF9kZWZpbmUoW2I0X2Jpc29u
X2xvY2F0aW9uc19pZl0sCi0tW2I0X2xvY2F0aW9uc19pZihbYjRfcGVyY2VudF9kZWZpbmVfaWZk
ZWYoW1thcGkubG9jYXRpb24udHlwZV1dLCBbXSwgWyQxXSldKV0pCi0tCi0tCi0tIyBiNF9lcnJv
cl92ZXJib3NlX2lmKFtJRi1FUlJPUlMtQVJFLVZFUkJPU0VdLCBbSUYtTk9UXSkKLS0jIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgTWFw
ICVkZWZpbmUgcGFyc2UuZXJyb3IgIihzaW1wbGV8dmVyYm9zZSkiIHRvIGI0X2Vycm9yX3ZlcmJv
c2VfaWYgYW5kCi0tIyBiNF9lcnJvcl92ZXJib3NlX2ZsYWcuCi0tYjRfcGVyY2VudF9kZWZpbmVf
ZGVmYXVsdChbW3BhcnNlLmVycm9yXV0sIFtbc2ltcGxlXV0pCi0tYjRfcGVyY2VudF9kZWZpbmVf
Y2hlY2tfdmFsdWVzKFtbW1twYXJzZS5lcnJvcl1dLAotLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtbc2ltcGxlXV0sIFtbdmVyYm9zZV1dXV0pCi0tbTRfZGVmaW5lKFtiNF9lcnJv
cl92ZXJib3NlX2ZsYWddLAotLSAgICAgICAgICBbbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9n
ZXQoW1twYXJzZS5lcnJvcl1dKSwKLS0gICAgICAgICAgICAgICAgICAgW3NpbXBsZV0sICBbWzBd
XSwKLS0gICAgICAgICAgICAgICAgICAgW3ZlcmJvc2VdLCBbWzFdXSldKQotLWI0X2RlZmluZV9m
bGFnX2lmKFtlcnJvcl92ZXJib3NlXSkKLS0KLS0jIHl5dG9rZW5fdGFibGUgaXMgbmVlZGVkIHRv
IHN1cHBvcnQgdmVyYm9zZSBlcnJvcnMuCi0tYjRfZXJyb3JfdmVyYm9zZV9pZihbbTRfZGVmaW5l
KFtiNF90b2tlbl90YWJsZV9mbGFnXSwgWzFdKV0pCi0tCi0tCi0tIyBiNF92YXJpYW50X2lmKFtJ
Ri1WQVJJQU5ULUFSRS1VU0VEXSwgW0lGLU5PVF0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5lKFt2
YXJpYW50XSkKLS1tNF9kZWZpbmUoW2I0X3ZhcmlhbnRfZmxhZ10sIFtbMF1dKQotLWI0X3BlcmNl
bnRfZGVmaW5lX2lmZGVmKFtbYXBpLnZhbHVlLnR5cGVdXSwKLS0gICBbbTRfY2FzZShiNF9wZXJj
ZW50X2RlZmluZV9nZXRfa2luZChbW2FwaS52YWx1ZS50eXBlXV0pLCBba2V5d29yZF0sCi0tICAg
ICAgICAgICAgW200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbYXBpLnZhbHVlLnR5cGVd
XSksIFt2YXJpYW50XSwKLS0gICAgICAgICAgICAgICAgICAgIFttNF9kZWZpbmUoW2I0X3Zhcmlh
bnRfZmxhZ10sIFtbMV1dKV0pXSldKQotLWI0X2RlZmluZV9mbGFnX2lmKFt2YXJpYW50XSkKLS0K
LS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAjIwotLSMjIEFmdGVyIHByb2Nlc3NpbmcgdGhlIHNrZWxldG9ucywgY2hlY2sg
dGhhdCBhbGwgdGhlIHVzZXIncyAgICMjCi0tIyMgJWRlZmluZSB2YXJpYWJsZXMgYW5kICVjb2Rl
IHF1YWxpZmllcnMgd2VyZSB1c2VkIGJ5IEJpc29uLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLW00X2Rl
ZmluZShbYjRfY2hlY2tfdXNlcl9uYW1lc193cmFwXSwKLS1bbTRfaWZkZWYoW2I0X3BlcmNlbnRf
XSQxW191c2VyX10kMltzXSwKLS0gICAgICAgICAgW2I0X2NoZWNrX3VzZXJfbmFtZXMoW1slXSQx
ICQyXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2I0X3BlcmNlbnRfXSQxW191
c2VyX10kMltzXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tiNF9wZXJjZW50
X10kMVtfYmlzb25fXSQyW3NdXSldKV0pCi0tCi0tbTRfd3JhcF9saWZvKFsKLS1iNF9jaGVja191
c2VyX25hbWVzX3dyYXAoW1tkZWZpbmVdXSwgW1t2YXJpYWJsZV1dKQotLWI0X2NoZWNrX3VzZXJf
bmFtZXNfd3JhcChbW2NvZGVdXSwgW1txdWFsaWZpZXJdXSkKLS1dKQotLQotLQotLSMjIC0tLS0t
LS0tLS0tLS0tLS0gIyMKLS0jIyBEZWZhdWx0IHZhbHVlcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0t
LS0tLSAjIwotLQotLSMgbTRfZGVmaW5lX2RlZmF1bHQoW2I0X2xleF9wYXJhbV0sIFtdKSAgIGRu
bCBicmVha3Mgb3RoZXIgc2tlbGV0b25zCi0tbTRfZGVmaW5lX2RlZmF1bHQoW2I0X2VwaWxvZ3Vl
XSwgW10pCi0tbTRfZGVmaW5lX2RlZmF1bHQoW2I0X3BhcnNlX3BhcmFtXSwgW10pCi0tCi0tIyBU
aGUgaW5pdGlhbCBjb2x1bW4gYW5kIGxpbmUuCi0tbTRfZGVmaW5lX2RlZmF1bHQoW2I0X2xvY2F0
aW9uX2luaXRpYWxfY29sdW1uXSwgWzFdKQotLW00X2RlZmluZV9kZWZhdWx0KFtiNF9sb2NhdGlv
bl9pbml0aWFsX2xpbmVdLCAgIFsxXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0gIyMKLS0j
IyBTYW5pdHkgY2hlY2tzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0jIGFwaS5s
b2NhdGlvbi5wcmVmaXg9ey4uLn0gKEphdmEgYW5kIEMrKykuCi0tYjRfcGVyY2VudF9kZWZpbmVf
Y2hlY2tfa2luZChbYXBpLmxvY2F0aW9uLnR5cGVdLCBbY29kZV0sIFtkZXByZWNhdGVkXSkKLS0K
LS0jIGFwaS5wb3NpdGlvbi5wcmVmaXg9ey4uLn0gKEphdmEpLgotLWI0X3BlcmNlbnRfZGVmaW5l
X2NoZWNrX2tpbmQoW2FwaS5wb3NpdGlvbi50eXBlXSwgW2NvZGVdLCBbZGVwcmVjYXRlZF0pCi0t
Ci0tIyBhcGkucHJlZml4ID48ICVuYW1lLXByZWZpeC4KLS1iNF9wZXJjZW50X2RlZmluZV9jaGVj
a19raW5kKFthcGkucHJlZml4XSwgW2NvZGVdLCBbZGVwcmVjYXRlZF0pCi0tYjRfcGVyY2VudF9k
ZWZpbmVfaWZkZWYoW2FwaS5wcmVmaXhdLAotLVttNF9pZmRlZihbYjRfcHJlZml4XSwKLS1bYjRf
Y29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbYXBpLnByZWZpeF0pLAotLSAg
ICAgICAgICAgICAgICBbWyclcycgYW5kICclcycgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJdXSwK
LS0gICAgICAgICAgICAgICAgWyVuYW1lLXByZWZpeF0sCi0tICAgICAgICAgICAgICAgIFslZGVm
aW5lIGFwaS5wcmVmaXhdKV0pXSkKLS0KLS0jIGFwaS50b2tlbi5wcmVmaXg9ey4uLn0KLS0jIE1h
a2UgaXQgYSB3YXJuaW5nIGZvciB0aG9zZSB3aG8gdXNlZCBiZXRhcyBvZiBCaXNvbiAzLjAuCi0t
YjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChbYXBpLnRva2VuLnByZWZpeF0sIFtjb2RlXSwg
W2RlcHJlY2F0ZWRdKQotLQotLSMgYXBpLnZhbHVlLnR5cGUgPjwgJXVuaW9uLgotLWI0X3BlcmNl
bnRfZGVmaW5lX2lmZGVmKFthcGkudmFsdWUudHlwZV0sCi0tW200X2lmZGVmKFtiNF91bmlvbl9t
ZW1iZXJzXSwKLS1bYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbYXBp
LnZhbHVlLnR5cGVdKSwKLS0gICAgICAgICAgICAgICAgW1snJXMnIGFuZCAnJXMnIGNhbm5vdCBi
ZSB1c2VkIHRvZ2V0aGVyXV0sCi0tICAgICAgICAgICAgICAgIFsldW5pb25dLAotLSAgICAgICAg
ICAgICAgICBbJWRlZmluZSBhcGkudmFsdWUudHlwZV0pXSldKQotLQotLSMgYXBpLnZhbHVlLnR5
cGU9dW5pb24gPjwgJXlhY2MuCi0tYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW2FwaS52YWx1ZS50
eXBlXSwKLS1bbTRfaWYoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFthcGkudmFsdWUudHlwZV0pLCBb
dW5pb25dLAotLVtiNF95YWNjX2lmKGRubAotLVtiNF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2Rl
ZmluZV9nZXRfbG9jKFthcGkudmFsdWUudHlwZV0pLAotLSAgICAgICAgICAgICAgICBbWyclcycg
YW5kICclcycgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJdXSwKLS0gICAgICAgICAgICAgICAgWyV5
YWNjXSwKLS0gICAgICAgICAgICAgICAgWyVkZWZpbmUgYXBpLnZhbHVlLnR5cGUgInVuaW9uIl0p
XSldKV0pCi0tCi0tIyBhcGkudmFsdWUudW5pb24ubmFtZS4KLS1iNF9wZXJjZW50X2RlZmluZV9j
aGVja19raW5kKFthcGkudmFsdWUudW5pb24ubmFtZV0sIFtrZXl3b3JkXSkKLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3Nr
ZWxldG9ucy9jLWxpa2UubTQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJp
c29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9jLWxpa2UubTQKLWRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAotaW5kZXggOGQ4OTFiNjdlZjkuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9jLWxpa2Uu
bTQKLSsrKyAvZGV2L251bGwKLUBAIC0xLDY2ICswLDAgQEAKLS0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSot
Ci0tCi0tIyBDb21tb24gY29kZSBmb3IgQy1saWtlIGxhbmd1YWdlcyAoQywgQysrLCBKYXZhLCBl
dGMuKQotLQotLSMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUsIDIwMTgtMjAxOSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot
LSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg
TGljZW5zZSwgb3IKLS0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tIwot
LSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0t
Ci0tIyBfYjRfY29tbWVudChURVhULCBPUEVOLCBDT05USU5VRSwgRU5EKQotLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIFB1dCBURVhUIGluIGNvbW1lbnQuICBB
dm9pZCB0cmFpbGluZyBzcGFjZXM6IGRvbid0IGluZGVudCBlbXB0eSBsaW5lcy4KLS0jIEF2b2lk
IGFkZGluZyBpbmRlbnRhdGlvbiB0byB0aGUgZmlyc3QgbGluZSwgYXMgdGhlIGluZGVudGF0aW9u
IGNvbWVzCi0tIyBmcm9tIE9QRU4uICBUaGF0J3Mgd2h5IHdlIGRvbid0IHBhdHN1YnN0KFskMV0s
IFteXCguXCldLCBbICAgXDFdKS4KLS0jCi0tIyBQcmVmaXggYWxsIHRoZSBvdXRwdXQgbGluZXMg
d2l0aCBQUkVGSVguCi0tbTRfZGVmaW5lKFtfYjRfY29tbWVudF0sCi0tWyQyW11tNF9icGF0c3Vi
c3QobTRfZXhwYW5kKFtbJDFdXSksIFsKLS1cKC5cKV0sIFsKLS0kM1wxXSkkNF0pCi0tCi0tCi0t
IyBiNF9jb21tZW50KFRFWFQsIFtQUkVGSVhdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIFB1dCBURVhUIGluIGNvbW1lbnQuICBQcmVmaXggYWxsIHRoZSBvdXRwdXQgbGluZXMg
d2l0aCBQUkVGSVguCi0tbTRfZGVmaW5lKFtiNF9jb21tZW50XSwKLS1bX2I0X2NvbW1lbnQoWyQx
XSwgWyQyLyogXSwgWyQyICAgXSwgWyAgKi9dKV0pCi0tCi0tCi0tCi0tCi0tIyBfYjRfZG9sbGFy
X2RvbGxhcihWQUxVRSwgU1lNQk9MLU5VTSwgRklFTEQsIERFRkFVTFQtRklFTEQpCi0tIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBJZiBGSUVMRCAob3IgREVGQVVMVC1GSUVMRCkgaXMgbm9uLW51bGwsIHJldHVybiAiVkFMVUUu
RklFTEQiLAotLSMgb3RoZXJ3aXNlIGp1c3QgVkFMVUUuICBCZSBzdXJlIHRvIHBhc3MgIihWQUxV
RSkiIGlmIFZBTFVFIGlzIGEKLS0jIHBvaW50ZXIuCi0tbTRfZGVmaW5lKFtfYjRfZG9sbGFyX2Rv
bGxhcl0sCi0tW2I0X3N5bWJvbF92YWx1ZShbJDFdLAotLSAgICAgICAgICAgICAgICAgWyQyXSwK
LS0gICAgICAgICAgICAgICAgIG00X2lmKFskM10sIFtbXV0sCi0tICAgICAgICAgICAgICAgICAg
ICAgICBbWyQ0XV0sIFtbJDNdXSkpXSkKLS0KLS0jIGI0X2RvbGxhcl9wdXNoZGVmKFZBTFVFLVBP
SU5URVIsIFNZTUJPTC1OVU0sIFtUWVBFX1RBR10sIExPQ0FUSU9OKQotLSMgYjRfZG9sbGFyX3Bv
cGRlZgotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWZpbmUgYjRfZG9sbGFyX2RvbGxhciBmb3IgVkFMVUUt
UE9JTlRFUiBhbmQgREVGQVVMVC1GSUVMRCwKLS0jIGFuZCBiNF9hdF9kb2xsYXIgZm9yIExPQ0FU
SU9OLgotLW00X2RlZmluZShbYjRfZG9sbGFyX3B1c2hkZWZdLAotLVttNF9wdXNoZGVmKFtiNF9k
b2xsYXJfZG9sbGFyXSwKLS0gICAgICAgICAgICBbX2I0X2RvbGxhcl9kb2xsYXIoWyQxXSwgWyQy
XSwgbTRfZHF1b3RlKCRdWzEpLCBbJDNdKV0pZG5sCi0tbTRfcHVzaGRlZihbYjRfYXRfZG9sbGFy
XSwgWyQ0XSlkbmwKLS1dKQotLW00X2RlZmluZShbYjRfZG9sbGFyX3BvcGRlZl0sCi0tW200X3Bv
cGRlZihbYjRfYXRfZG9sbGFyXSlkbmwKLS1tNF9wb3BkZWYoW2I0X2RvbGxhcl9kb2xsYXJdKWRu
bAotLV0pCi1kaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1i
aXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy5tNCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL2MubTQKLWRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAotaW5kZXggM2NkZTA0YTk1NzEuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9u
cy9jLm00Ci0rKysgL2Rldi9udWxsCi1AQCAtMSw4ODMgKzAsMCBAQAotLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29u
ZiAtKi0KLS0KLS0jIEMgTTQgTWFjcm9zIGZvciBCaXNvbi4KLS0KLS0jIENvcHlyaWdodCAoQykg
MjAwMiwgMjAwNC0yMDE1LCAyMDE4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSMg
SW5jLgotLQotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMg
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v
dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS1tNF9pbmNsdWRlKGI0
X3NrZWxldG9uc2Rpci9bYy1saWtlLm00XSkKLS0KLS0jIGI0X3RvY3BwKFNUUklORykKLS0jIC0t
LS0tLS0tLS0tLS0tLS0KLS0jIENvbnZlcnQgU1RSSU5HIGludG8gYSB2YWxpZCBDIG1hY3JvIG5h
bWUuCi0tbTRfZGVmaW5lKFtiNF90b2NwcF0sCi0tW200X3RvdXBwZXIobTRfYnBhdHN1YnN0KG00
X3F1b3RlKCQxKSwgW1teYS16QS1aMC05XStdLCBbX10pKV0pCi0tCi0tCi0tIyBiNF9jcHBfZ3Vh
cmQoRklMRSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQSB2YWxpZCBDIG1hY3JvIG5hbWUg
dG8gdXNlIGFzIGEgQ1BQIGhlYWRlciBndWFyZCBmb3IgRklMRS4KLS1tNF9kZWZpbmUoW2I0X2Nw
cF9ndWFyZF0sCi0tW1tZWV9dYjRfdG9jcHAobTRfZGVmbihbYjRfcHJlZml4XSkvWyQxXSlbX0lO
Q0xVREVEXV0pCi0tCi0tCi0tIyBiNF9jcHBfZ3VhcmRfb3BlbihGSUxFKQotLSMgYjRfY3BwX2d1
YXJkX2Nsb3NlKEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIElmIEZJTEUg
ZG9lcyBub3QgZXhwYW5kIHRvIG5vdGhpbmcsIG9wZW4vY2xvc2UgQ1BQIGluY2x1c2lvbiBndWFy
ZHMgZm9yIEZJTEUuCi0tbTRfZGVmaW5lKFtiNF9jcHBfZ3VhcmRfb3Blbl0sCi0tW200X2lmdmFs
KG00X3F1b3RlKCQxKSwKLS1bI2lmbmRlZiBiNF9jcHBfZ3VhcmQoWyQxXSkKLS0jIGRlZmluZSBi
NF9jcHBfZ3VhcmQoWyQxXSldKV0pCi0tCi0tbTRfZGVmaW5lKFtiNF9jcHBfZ3VhcmRfY2xvc2Vd
LAotLVttNF9pZnZhbChtNF9xdW90ZSgkMSksCi0tWyNlbmRpZiBiNF9jb21tZW50KFshYjRfY3Bw
X2d1YXJkKFskMV0pXSldKV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIElk
ZW50aWZpY2F0aW9uLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tIyBiNF9pZGVu
dGlmaWNhdGlvbgotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlcGVuZHMgb24gaW5kaXZpZHVh
bCBza2VsZXRvbnMgdG8gZGVmaW5lIGI0X3B1cmVfZmxhZywgYjRfcHVzaF9mbGFnLCBvcgotLSMg
YjRfcHVsbF9mbGFnIGlmIHRoZXkgdXNlIHRoZSB2YWx1ZXMgb2YgdGhlICVkZWZpbmUgdmFyaWFi
bGVzIGFwaS5wdXJlIG9yCi0tIyBhcGkucHVzaC1wdWxsLgotLW00X2RlZmluZShbYjRfaWRlbnRp
ZmljYXRpb25dLAotLVtbLyogSWRlbnRpZnkgQmlzb24gb3V0cHV0LiAgKi8KLS0jZGVmaW5lIFlZ
QklTT04gMQotLQotLS8qIEJpc29uIHZlcnNpb24uICAqLwotLSNkZWZpbmUgWVlCSVNPTl9WRVJT
SU9OICJdYjRfdmVyc2lvblsiCi0tCi0tLyogU2tlbGV0b24gbmFtZS4gICovCi0tI2RlZmluZSBZ
WVNLRUxFVE9OX05BTUUgXWI0X3NrZWxldG9uW11tNF9pZmRlZihbYjRfcHVyZV9mbGFnXSwgW1sK
LS0KLS0vKiBQdXJlIHBhcnNlcnMuICAqLwotLSNkZWZpbmUgWVlQVVJFIF1iNF9wdXJlX2ZsYWdd
KVtdbTRfaWZkZWYoW2I0X3B1c2hfZmxhZ10sIFtbCi0tCi0tLyogUHVzaCBwYXJzZXJzLiAgKi8K
LS0jZGVmaW5lIFlZUFVTSCBdYjRfcHVzaF9mbGFnXSlbXW00X2lmZGVmKFtiNF9wdWxsX2ZsYWdd
LCBbWwotLQotLS8qIFB1bGwgcGFyc2Vycy4gICovCi0tI2RlZmluZSBZWVBVTEwgXWI0X3B1bGxf
ZmxhZ10pWwotLV1dKQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBEZWZhdWx0
IHZhbHVlcy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgYjRfYXBpX3ByZWZp
eCwgYjRfYXBpX1BSRUZJWAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQ29y
cmVzcG9uZHMgdG8gJWRlZmluZSBhcGkucHJlZml4Ci0tYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVs
dChbW2FwaS5wcmVmaXhdXSwgW1t5eV1dKQotLW00X2RlZmluZShbYjRfYXBpX3ByZWZpeF0sCi0t
W2I0X3BlcmNlbnRfZGVmaW5lX2dldChbW2FwaS5wcmVmaXhdXSldKQotLW00X2RlZmluZShbYjRf
YXBpX1BSRUZJWF0sCi0tW200X3RvdXBwZXIoYjRfYXBpX3ByZWZpeCldKQotLQotLQotLSMgYjRf
cHJlZml4Ci0tIyAtLS0tLS0tLS0KLS0jIElmIHRoZSAlbmFtZS1wcmVmaXggaXMgbm90IGdpdmVu
LCBpdCBpcyBhcGkucHJlZml4LgotLW00X2RlZmluZV9kZWZhdWx0KFtiNF9wcmVmaXhdLCBbYjRf
YXBpX3ByZWZpeF0pCi0tCi0tIyBJZiB0aGUgJXVuaW9uIGlzIG5vdCBuYW1lZCwgaXRzIG5hbWUg
aXMgWVlTVFlQRS4KLS1iNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbYXBpLnZhbHVlLnVuaW9u
Lm5hbWVdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFtiNF9hcGlfUFJFRklYW11bU1RZ
UEVdXSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBQdXJlL2lt
cHVyZSBpbnRlcmZhY2VzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0K
LS0jIGI0X2xleF9mb3JtYWxzCi0tIyAtLS0tLS0tLS0tLS0tLQotLSMgQWxsIHRoZSB5eWxleCBm
b3JtYWwgYXJndW1lbnRzLgotLSMgYjRfbGV4X3BhcmFtIGFycml2ZXMgcXVvdGVkIHR3aWNlLCBi
dXQgd2Ugd2FudCB0byBrZWVwIG9ubHkgb25lIGxldmVsLgotLW00X2RlZmluZShbYjRfbGV4X2Zv
cm1hbHNdLAotLVtiNF9wdXJlX2lmKFtbW1tZWVNUWVBFICp5eWx2YWxwXV0sIFtbJnl5bHZhbF1d
XVtdZG5sCi0tYjRfbG9jYXRpb25zX2lmKFssIFtbWVlMVFlQRSAqeXlsbG9jcF0sIFsmeXlsbG9j
XV1dKV0pZG5sCi0tbTRfaWZkZWYoW2I0X2xleF9wYXJhbV0sIFssIF1iNF9sZXhfcGFyYW0pXSkK
LS0KLS0KLS0jIGI0X2xleAotLSMgLS0tLS0tCi0tIyBDYWxsIHl5bGV4LgotLW00X2RlZmluZShb
YjRfbGV4XSwKLS1bYjRfZnVuY3Rpb25fY2FsbChbeXlsZXhdLCBbaW50XSwgYjRfbGV4X2Zvcm1h
bHMpXSkKLS0KLS0KLS0jIGI0X3VzZXJfYXJncwotLSMgLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5l
KFtiNF91c2VyX2FyZ3NdLAotLVttNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbLCBiNF9hcmdz
KGI0X3BhcnNlX3BhcmFtKV0pXSkKLS0KLS0KLS0jIGI0X3BhcnNlX3BhcmFtCi0tIyAtLS0tLS0t
LS0tLS0tLQotLSMgSWYgZGVmaW5lZCwgYjRfcGFyc2VfcGFyYW0gYXJyaXZlcyBkb3VibGUgcXVv
dGVkLCBidXQgYmVsb3cgd2UgcHJlZmVyCi0tIyBpdCB0byBiZSBzaW5nbGUgcXVvdGVkLgotLW00
X2RlZmluZShbYjRfcGFyc2VfcGFyYW1dLAotLWI0X3BhcnNlX3BhcmFtKQotLQotLQotLSMgYjRf
cGFyc2VfcGFyYW1fZm9yKERFQ0wsIEZPUk1BTCwgQk9EWSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgSXRlcmF0ZSBvdmVyIHRoZSB1c2VyIHBhcmFtZXRl
cnMsIGJpbmRpbmcgdGhlIGRlY2xhcmF0aW9uIHRvIERFQ0wsCi0tIyB0aGUgZm9ybWFsIG5hbWUg
dG8gRk9STUFMLCBhbmQgZXZhbHVhdGluZyB0aGUgQk9EWS4KLS1tNF9kZWZpbmUoW2I0X3BhcnNl
X3BhcmFtX2Zvcl0sCi0tW200X2ZvcmVhY2goWyQxXyQyXSwgbTRfZGVmbihbYjRfcGFyc2VfcGFy
YW1dKSwKLS1bbTRfcHVzaGRlZihbJDFdLCBtNF91bnF1b3RlKG00X2NhcigkMV8kMikpKWRubAot
LW00X3B1c2hkZWYoWyQyXSwgbTRfc2hpZnQoJDFfJDIpKWRubAotLSQzW11kbmwKLS1tNF9wb3Bk
ZWYoWyQyXSlkbmwKLS1tNF9wb3BkZWYoWyQxXSlkbmwKLS1dKV0pCi0tCi0tIyBiNF9wYXJzZV9w
YXJhbV91c2UoW1ZBTF0sIFtMT0NdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jICdZWVVTRScgVkFMLCBMT0MgaWYgbG9jYXRpb25zIGFyZSBlbmFibGVkLCBhbmQgYWxs
IHRoZSBwYXJzZS1wYXJhbXMuCi0tbTRfZGVmaW5lKFtiNF9wYXJzZV9wYXJhbV91c2VdLAotLVtt
NF9pZnZhbG4oWyQxXSwgWyAgWVlVU0UgKFskMV0pO10pZG5sCi0tYjRfbG9jYXRpb25zX2lmKFtt
NF9pZnZhbG4oWyQyXSwgWyAgWVlVU0UgKFskMl0pO10pXSlkbmwKLS1iNF9wYXJzZV9wYXJhbV9m
b3IoW0RlY2xdLCBbRm9ybWFsXSwgWyAgWVlVU0UgKEZvcm1hbCk7Ci0tXSlkbmwKLS1dKQotLQot
LQotLSMjIC0tLS0tLS0tLS0tLSAjIwotLSMjIERhdGEgVHlwZXMuICAjIwotLSMjIC0tLS0tLS0t
LS0tLSAjIwotLQotLSMgYjRfaW50X3R5cGUoTUlOLCBNQVgpCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIFJldHVybiB0aGUgc21hbGxlc3QgaW50IHR5cGUgYWJsZSB0byBoYW5kbGUgbnVt
YmVycyByYW5naW5nIGZyb20KLS0jIE1JTiB0byBNQVggKGluY2x1ZGVkKS4KLS1tNF9kZWZpbmUo
W2I0X2ludF90eXBlXSwKLS1bbTRfaWYoYjRfaW50c19pbigkQCwgICAgICBbMF0sICAgWzI1NV0p
LCBbMV0sIFt1bnNpZ25lZCBjaGFyXSwKLS0gICAgICAgYjRfaW50c19pbigkQCwgICBbLTEyOF0s
ICAgWzEyN10pLCBbMV0sIFtzaWduZWQgY2hhcl0sCi0tCi0tICAgICAgIGI0X2ludHNfaW4oJEAs
ICAgICAgWzBdLCBbNjU1MzVdKSwgWzFdLCBbdW5zaWduZWQgc2hvcnRdLAotLSAgICAgICBiNF9p
bnRzX2luKCRALCBbLTMyNzY4XSwgWzMyNzY3XSksIFsxXSwgW3Nob3J0XSwKLS0KLS0gICAgICAg
bTRfZXZhbChbMCA8PSAkMV0pLCAgICAgICAgICAgICAgICBbMV0sIFt1bnNpZ25lZF0sCi0tCi0t
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50XSldKQot
LQotLQotLSMgYjRfaW50X3R5cGVfZm9yKE5BTUUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS0jIFJldHVybiB0aGUgc21hbGxlc3QgaW50IHR5cGUgYWJsZSB0byBoYW5kbGUgbnVtYmVycyBy
YW5naW5nIGZyb20KLS0jICdOQU1FX21pbicgdG8gJ05BTUVfbWF4JyAoaW5jbHVkZWQpLgotLW00
X2RlZmluZShbYjRfaW50X3R5cGVfZm9yXSwKLS1bYjRfaW50X3R5cGUoJDFfbWluLCAkMV9tYXgp
XSkKLS0KLS0KLS0jIGI0X3RhYmxlX3ZhbHVlX2VxdWFscyhUQUJMRSwgVkFMVUUsIExJVEVSQUwp
Ci0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgV2l0
aG91dCBpbmR1Y2luZyBhIGNvbXBhcmlzb24gd2FybmluZyBmcm9tIHRoZSBjb21waWxlciwgY2hl
Y2sgaWYgdGhlCi0tIyBsaXRlcmFsIHZhbHVlIExJVEVSQUwgZXF1YWxzIFZBTFVFIGZyb20gdGFi
bGUgVEFCTEUsIHdoaWNoIG11c3QgaGF2ZQotLSMgVEFCTEVfbWluIGFuZCBUQUJMRV9tYXggZGVm
aW5lZC4KLS1tNF9kZWZpbmUoW2I0X3RhYmxlX3ZhbHVlX2VxdWFsc10sCi0tW200X2lmKG00X2V2
YWwoJDMgPCBtNF9pbmRpcihbYjRfXSQxW19taW5dKQotLSAgICAgICAgICAgICAgIHx8IG00X2lu
ZGlyKFtiNF9dJDFbX21heF0pIDwgJDMpLCBbMV0sCi0tICAgICAgIFtbMF1dLAotLSAgICAgICBb
KCEhKCgkMikgPT0gKCQzKSkpXSldKQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCi0t
IyMgQ29tcGlsZXIgaXNzdWVzLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMg
YjRfYXR0cmlidXRlX2RlZmluZShbbm9yZXR1cm5dKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgUHJvdmlkZSBwb3J0YWJsZSBjb21waWxlciAiYXR0cmlidXRlcyIuICBJ
ZiAibm9yZXR1cm4iIGlzIHBhc3NlZCwgZGVmaW5lCi0tIyBfTm9yZXR1cm4uCi0tbTRfZGVmaW5l
KFtiNF9hdHRyaWJ1dGVfZGVmaW5lXSwKLS1bWyNpZm5kZWYgWVlfQVRUUklCVVRFCi0tIyBpZiAo
ZGVmaW5lZCBfX0dOVUNfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotLSAgICAgICYmICgyIDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDIgJiYgOTYg
PD0gX19HTlVDX01JTk9SX18pKSkgIFwKLS0gICAgIHx8IGRlZmluZWQgX19TVU5QUk9fQyAmJiAw
eDUxMTAgPD0gX19TVU5QUk9fQwotLSMgIGRlZmluZSBZWV9BVFRSSUJVVEUoU3BlYykgX19hdHRy
aWJ1dGVfXyhTcGVjKQotLSMgZWxzZQotLSMgIGRlZmluZSBZWV9BVFRSSUJVVEUoU3BlYykgLyog
ZW1wdHkgKi8KLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmbmRlZiBZWV9BVFRSSUJVVEVfUFVS
RQotLSMgZGVmaW5lIFlZX0FUVFJJQlVURV9QVVJFICAgWVlfQVRUUklCVVRFICgoX19wdXJlX18p
KQotLSNlbmRpZgotLQotLSNpZm5kZWYgWVlfQVRUUklCVVRFX1VOVVNFRAotLSMgZGVmaW5lIFlZ
X0FUVFJJQlVURV9VTlVTRUQgWVlfQVRUUklCVVRFICgoX191bnVzZWRfXykpCi0tI2VuZGlmCi0t
Ci0tXW00X2JtYXRjaChbJDFdLCBbXGJub3JldHVyblxiXSwgW1svKiBUaGUgX05vcmV0dXJuIGtl
eXdvcmQgb2YgQzExLiAgKi8KLS0jaWYgISBkZWZpbmVkIF9Ob3JldHVybgotLSMgaWYgZGVmaW5l
ZCBfX2NwbHVzcGx1cyAmJiAyMDExMDNMIDw9IF9fY3BsdXNwbHVzCi0tIyAgZGVmaW5lIF9Ob3Jl
dHVybiBbW25vcmV0dXJuXV0KLS0jIGVsaWYgIShkZWZpbmVkIF9fU1REQ19WRVJTSU9OX18gJiYg
MjAxMTEyIDw9IF9fU1REQ19WRVJTSU9OX18pCi0tIyAgaWYgKDMgPD0gX19HTlVDX18gfHwgKF9f
R05VQ19fID09IDIgJiYgOCA8PSBfX0dOVUNfTUlOT1JfXykgXAotLSAgICAgICB8fCAweDUxMTAg
PD0gX19TVU5QUk9fQykKLS0jICAgZGVmaW5lIF9Ob3JldHVybiBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSkKLS0jICBlbGlmIGRlZmluZWQgX01TQ19WRVIgJiYgMTIwMCA8PSBfTVNDX1ZF
UgotLSMgICBkZWZpbmUgX05vcmV0dXJuIF9fZGVjbHNwZWMgKG5vcmV0dXJuKQotLSMgIGVsc2UK
LS0jICAgZGVmaW5lIF9Ob3JldHVybgotLSMgIGVuZGlmCi0tIyBlbmRpZgotLSNlbmRpZgotLQot
LV1dKVsvKiBTdXBwcmVzcyB1bnVzZWQtdmFyaWFibGUgd2FybmluZ3MgYnkgInVzaW5nIiBFLiAg
Ki8KLS0jaWYgISBkZWZpbmVkIGxpbnQgfHwgZGVmaW5lZCBfX0dOVUNfXwotLSMgZGVmaW5lIFlZ
VVNFKEUpICgodm9pZCkgKEUpKQotLSNlbHNlCi0tIyBkZWZpbmUgWVlVU0UoRSkgLyogZW1wdHkg
Ki8KLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAhIGRlZmluZWQgX19JQ0Mg
JiYgNDA3IDw9IF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18KLS0vKiBTdXBwcmVzcyBh
biBpbmNvcnJlY3QgZGlhZ25vc3RpYyBhYm91dCB5eWx2YWwgYmVpbmcgdW5pbml0aWFsaXplZC4g
ICovCi0tIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4gXAotLSAg
ICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcHVzaCIpIFwKLS0gICAgX1ByYWdtYSAoIkdDQyBk
aWFnbm9zdGljIGlnbm9yZWQgXCItV3VuaW5pdGlhbGl6ZWRcIiIpXAotLSAgICBfUHJhZ21hICgi
R0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFsaXplZFwiIikKLS0jIGRl
ZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQgXAotLSAgICBfUHJhZ21hICgi
R0NDIGRpYWdub3N0aWMgcG9wIikKLS0jZWxzZQotLSMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUo
VmFsdWUpIFZhbHVlCi0tI2VuZGlmCi0tI2lmbmRlZiBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM
SVpFRF9CRUdJTgotLSMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lO
Ci0tIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECi0tI2VuZGlmCi0t
I2lmbmRlZiBZWV9JTklUSUFMX1ZBTFVFCi0tIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1
ZSkgLyogTm90aGluZy4gKi8KLS0jZW5kaWYKLS1dXSkKLS0KLS0KLS0jIGI0X251bGxfZGVmaW5l
Ci0tIyAtLS0tLS0tLS0tLS0tLQotLSMgUG9ydGFiaWxpdHkgaXNzdWVzOiBkZWZpbmUgYSBZWV9O
VUxMUFRSIGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudAotLSMgbGFuZ3VhZ2UgKEMsIEMrKzk4
LCBvciBDKysxMSkuCi0tIwotLSMgSW4gQysrIHByZSBDKysxMSBpdCBpcyBzdGFuZGFyZCBwcmFj
dGljZSB0byB1c2UgMCAobm90IE5VTEwpIGZvciB0aGUKLS0jIG51bGwgcG9pbnRlci4gIEluIEMs
IHByZWZlciAoKHZvaWQqKTApIHRvIGF2b2lkIGhhdmluZyB0byBpbmNsdWRlIHN0ZGxpYi5oLgot
LW00X2RlZmluZShbYjRfbnVsbF9kZWZpbmVdLAotLVsjIGlmbmRlZiBZWV9OVUxMUFRSCi0tIyAg
aWYgZGVmaW5lZCBfX2NwbHVzcGx1cwotLSMgICBpZiAyMDExMDNMIDw9IF9fY3BsdXNwbHVzCi0t
IyAgICBkZWZpbmUgWVlfTlVMTFBUUiBudWxscHRyCi0tIyAgIGVsc2UKLS0jICAgIGRlZmluZSBZ
WV9OVUxMUFRSIDAKLS0jICAgZW5kaWYKLS0jICBlbHNlCi0tIyAgIGRlZmluZSBZWV9OVUxMUFRS
ICgodm9pZCopMCkKLS0jICBlbmRpZgotLSMgZW5kaWZbXWRubAotLV0pCi0tCi0tCi0tIyBiNF9u
dWxsCi0tIyAtLS0tLS0tCi0tIyBSZXR1cm4gYSBudWxsIHBvaW50ZXIgY29uc3RhbnQuCi0tbTRf
ZGVmaW5lKFtiNF9udWxsXSwgW1lZX05VTExQVFJdKQotLQotLQotLQotLSMjIC0tLS0tLS0tLSMj
Ci0tIyMgVmFsdWVzLiAgIyMKLS0jIyAtLS0tLS0tLS0jIwotLQotLSMgYjRfaW50ZWdyYWxfcGFy
c2VyX3RhYmxlX2RlZmluZShUQUJMRS1OQU1FLCBDT05URU5ULCBDT01NRU5UKQotLSMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
LSMgRGVmaW5lICJ5eTxUQUJMRS1OQU1FPiIgd2hvc2UgY29udGVudHMgaXMgQ09OVEVOVC4KLS1t
NF9kZWZpbmUoW2I0X2ludGVncmFsX3BhcnNlcl90YWJsZV9kZWZpbmVdLAotLVttNF9pZnZhbG4o
WyQzXSwgW2I0X2NvbW1lbnQoWyQzXSwgWyAgXSldKWRubAotLXN0YXRpYyBjb25zdCBiNF9pbnRf
dHlwZV9mb3IoWyQyXSkgeXkkMVtbXV0gPQotLXsKLS0gICQyCi0tfTtkbmwKLS1dKQotLQotLQot
LSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBBc3NpZ25pbmcgdG9rZW4gbnVt
YmVycy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLSMgYjRfdG9r
ZW5fZGVmaW5lKFRPS0VOLU5VTSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBP
dXRwdXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyB0b2tlbiBhcyAjZGVmaW5lLgotLW00X2RlZmlu
ZShbYjRfdG9rZW5fZGVmaW5lXSwKLS1bYjRfdG9rZW5fZm9ybWF0KFsjZGVmaW5lICVzICVzXSwg
WyQxXSldKQotLQotLSMgYjRfdG9rZW5fZGVmaW5lcwotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMg
T3V0cHV0IHRoZSBkZWZpbml0aW9uIG9mIHRoZSB0b2tlbnMuCi0tbTRfZGVmaW5lKFtiNF90b2tl
bl9kZWZpbmVzXSwKLS1bYjRfYW55X3Rva2VuX3Zpc2libGVfaWYoWy8qIFRva2Vucy4gICovCi0t
bTRfam9pbihbCi0tXSwgYjRfc3ltYm9sX21hcChbYjRfdG9rZW5fZGVmaW5lXSkpCi0tXSldKQot
LQotLQotLSMgYjRfdG9rZW5fZW51bShUT0tFTi1OVU0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS0jIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHRva2VuIGFzIGFuIGVudW0u
Ci0tbTRfZGVmaW5lKFtiNF90b2tlbl9lbnVtXSwKLS1bYjRfdG9rZW5fZm9ybWF0KFslcyA9ICVz
XSwgWyQxXSldKQotLQotLQotLSMgYjRfdG9rZW5fZW51bXMKLS0jIC0tLS0tLS0tLS0tLS0tCi0t
IyBPdXRwdXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHRva2VucyAoaWYgdGhlcmUgYXJlKSBhcyBl
bnVtcy4KLS1tNF9kZWZpbmUoW2I0X3Rva2VuX2VudW1zXSwKLS1bYjRfYW55X3Rva2VuX3Zpc2li
bGVfaWYoW1svKiBUb2tlbiB0eXBlLiAgKi8KLS0jaWZuZGVmIF1iNF9hcGlfUFJFRklYW1RPS0VO
VFlQRQotLSMgZGVmaW5lIF1iNF9hcGlfUFJFRklYW1RPS0VOVFlQRQotLSAgZW51bSBdYjRfYXBp
X3ByZWZpeFt0b2tlbnR5cGUKLS0gIHsKLS0gICAgXW00X2pvaW4oWywKLS0gICAgXSwKLS0gICAg
ICAgICAgICAgYjRfc3ltYm9sX21hcChbYjRfdG9rZW5fZW51bV0pKVsKLS0gIH07Ci0tI2VuZGlm
Ci0tXV0pXSkKLS0KLS0KLS0jIGI0X3Rva2VuX2VudW1zX2RlZmluZXMKLS0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS0jIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgdG9rZW5zIChpZiB0
aGVyZSBhcmUgYW55KSBhcyBlbnVtcyBhbmQsCi0tIyBpZiBQT1NJWCBZYWNjIGlzIGVuYWJsZWQs
IGFzICNkZWZpbmVzLgotLW00X2RlZmluZShbYjRfdG9rZW5fZW51bXNfZGVmaW5lc10sCi0tW2I0
X3Rva2VuX2VudW1zW11iNF95YWNjX2lmKFtiNF90b2tlbl9kZWZpbmVzXSldKQotLQotLQotLSMj
IC0tLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgU2VtYW50aWMgVmFsdWVzLiAgIyMKLS0jIyAtLS0t
LS0tLS0tLS0tLS0tLSAjIwotLQotLQotLSMgYjRfc3ltYm9sX3ZhbHVlKFZBTCwgW1NZTUJPTC1O
VU1dLCBbVFlQRS1UQUddKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotLSMgU2VlIFJFQURNRS4KLS1tNF9kZWZpbmUoW2I0X3N5bWJvbF92YWx1ZV0s
Ci0tW200X2lmdmFsKFskM10sCi0tICAgICAgICAgIFsoJDEuJDMpXSwKLS0gICAgICAgICAgW200
X2lmdmFsKFskMl0sCi0tICAgICAgICAgICAgICAgICAgICBbYjRfc3ltYm9sX2lmKFskMl0sIFto
YXNfdHlwZV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJDEuYjRfc3lt
Ym9sKFskMl0sIFt0eXBlXSkpXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyQxXSldLAotLSAgICAgICAgICAgICAgICAgICAgWyQxXSldKV0pCi0tCi0tCi0tIyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIERlZmluaW5nIEMgZnVuY3Rpb25zLiAgIyMKLS0jIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tCi0tIyBiNF9mdW5jdGlvbl9kZWZpbmUoTkFN
RSwgUkVUVVJOLVZBTFVFLCBbREVDTDEsIE5BTUUxXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlY2xhcmUg
dGhlIGZ1bmN0aW9uIE5BTUUgaW4gQy4KLS1tNF9kZWZpbmUoW2I0X2Z1bmN0aW9uX2RlZmluZV0s
Ci0tWyQyCi0tJDEgKGI0X2Zvcm1hbHMobTRfc2hpZnQyKCRAKSkpW11kbmwKLS1dKQotLQotLQot
LSMgYjRfZm9ybWFscyhbREVDTDEsIE5BTUUxXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotLSMgVGhlIGZvcm1hbCBhcmd1bWVudHMgb2YgYSBDIGZ1bmN0aW9uIGRl
ZmluaXRpb24uCi0tbTRfZGVmaW5lKFtiNF9mb3JtYWxzXSwKLS1bbTRfaWYoWyQjXSwgWzBdLCBb
dm9pZF0sCi0tICAgICAgIFskIyQxXSwgWzFdLCBbdm9pZF0sCi0tICAgICAgICAgICAgICAgW200
X21hcF9zZXAoW2I0X2Zvcm1hbF0sIFssIF0sIFskQF0pXSldKQotLQotLW00X2RlZmluZShbYjRf
Zm9ybWFsXSwKLS1bJDFdKQotLQotLQotLQotLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj
Ci0tIyMgRGVjbGFyaW5nIEMgZnVuY3Rpb25zLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAjIwotLQotLQotLSMgYjRfZnVuY3Rpb25fZGVjbGFyZShOQU1FLCBSRVRVUk4tVkFMVUUs
IFtERUNMMSwgTkFNRTFdLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlY2xhcmUgdGhlIGZ1bmN0aW9uIE5B
TUUuCi0tbTRfZGVmaW5lKFtiNF9mdW5jdGlvbl9kZWNsYXJlXSwKLS1bJDIgJDEgKGI0X2Zvcm1h
bHMobTRfc2hpZnQyKCRAKSkpO1tdZG5sCi0tXSkKLS0KLS0KLS0KLS0KLS0jIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0gIyMKLS0jIyBDYWxsaW5nIEMgZnVuY3Rpb25zLiAgIyMKLS0jIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIGI0X2Z1bmN0aW9uX2NhbGwoTkFNRSwgUkVUVVJO
LVZBTFVFLCBbREVDTDEsIE5BTUUxXSwgLi4uKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIENhbGwgdGhlIGZ1bmN0aW9u
IE5BTUUgd2l0aCBhcmd1bWVudHMgTkFNRTEsIE5BTUUyIGV0Yy4KLS1tNF9kZWZpbmUoW2I0X2Z1
bmN0aW9uX2NhbGxdLAotLVskMSAoYjRfYXJncyhtNF9zaGlmdDIoJEApKSlbXWRubAotLV0pCi0t
Ci0tCi0tIyBiNF9hcmdzKFtERUNMMSwgTkFNRTFdLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBPdXRwdXQgdGhlIGFyZ3VtZW50cyBOQU1FMSwgTkFNRTIuLi4KLS1t
NF9kZWZpbmUoW2I0X2FyZ3NdLAotLVttNF9tYXBfc2VwKFtiNF9hcmddLCBbLCBdLCBbJEBdKV0p
Ci0tCi0tbTRfZGVmaW5lKFtiNF9hcmddLAotLVskMl0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0g
IyMKLS0jIyBTeW5jbGluZXMuICAjIwotLSMjIC0tLS0tLS0tLS0tICMjCi0tCi0tIyBiNF9zeW5j
X3N0YXJ0KExJTkUsIEZJTEUpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVm
aW5lKFtiNF9zeW5jX3N0YXJ0XSwgW1sjXWxpbmUgJDEgJDJdKQotLQotLQotLSMjIC0tLS0tLS0t
LS0tLS0tICMjCi0tIyMgVXNlciBhY3Rpb25zLiAgIyMKLS0jIyAtLS0tLS0tLS0tLS0tLSAjIwot
LQotLSMgYjRfY2FzZShMQUJFTCwgU1RBVEVNRU5UUykKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0tbTRfZGVmaW5lKFtiNF9jYXNlXSwKLS1bICBjYXNlICQxOgotLSQyCi0tYjRfc3lu
Y2xpbmUoW0BvbGluZUBdLCBbQG9maWxlQF0pCi0tICAgIGJyZWFrO10pCi0tCi0tCi0tIyBiNF9w
cmVkaWNhdGVfY2FzZShMQUJFTCwgQ09ORElUSU9OUykKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRfcHJlZGljYXRlX2Nhc2VdLAotLVsgIGNh
c2UgJDE6Ci0tICAgIGlmICghICgKLS0kMikpIFlZRVJST1I7Ci0tYjRfc3luY2xpbmUoW0BvbGlu
ZUBdLCBbQG9maWxlQF0pCi0tICAgIGJyZWFrO10pCi0tCi0tCi0tIyBiNF95eWRlc3RydWN0X2Rl
ZmluZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlZmluZSB0aGUgInl5ZGVzdHJ1Y3Qi
IGZ1bmN0aW9uLgotLW00X2RlZmluZV9kZWZhdWx0KFtiNF95eWRlc3RydWN0X2RlZmluZV0sCi0t
W1svKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwg
UmVsZWFzZSB0aGUgbWVtb3J5IGFzc29jaWF0ZWQgdG8gdGhpcyBzeW1ib2wuICB8Ci0tYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS0KLS1dYjRfZnVu
Y3Rpb25fZGVmaW5lKFt5eWRlc3RydWN0XSwKLS0gICAgW3N0YXRpYyB2b2lkXSwKLS0gICAgW1tj
b25zdCBjaGFyICp5eW1zZ10sICAgIFt5eW1zZ11dLAotLSAgICBbW2ludCB5eXR5cGVdLCAgICAg
ICAgICAgW3l5dHlwZV1dLAotLSAgICBbW1lZU1RZUEUgKnl5dmFsdWVwXSwgICAgW3l5dmFsdWVw
XV1bXWRubAotLWI0X2xvY2F0aW9uc19pZiggICAgICAgICAgICBbLCBbW1lZTFRZUEUgKnl5bG9j
YXRpb25wXSwgW3l5bG9jYXRpb25wXV1dKVtdZG5sCi0tbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFt
XSwgWywgYjRfcGFyc2VfcGFyYW1dKSlbCi0tewotLV1iNF9wYXJzZV9wYXJhbV91c2UoW3l5dmFs
dWVwXSwgW3l5bG9jYXRpb25wXSlkbmwKLS1bICBpZiAoIXl5bXNnKQotLSAgICB5eW1zZyA9ICJE
ZWxldGluZyI7Ci0tICBZWV9TWU1CT0xfUFJJTlQgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCB5
eWxvY2F0aW9ucCk7Ci0tCi0tICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgot
LSAgXWI0X3N5bWJvbF9hY3Rpb25zKFtkZXN0cnVjdG9yXSlbCi0tICBZWV9JR05PUkVfTUFZQkVf
VU5JTklUSUFMSVpFRF9FTkQKLS19XWRubAotLV0pCi0tCi0tCi0tIyBiNF95eV9zeW1ib2xfcHJp
bnRfZGVmaW5lCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWZpbmUgdGhlICJ5
eV9zeW1ib2xfcHJpbnQiIGZ1bmN0aW9uLgotLW00X2RlZmluZV9kZWZhdWx0KFtiNF95eV9zeW1i
b2xfcHJpbnRfZGVmaW5lXSwKLS1bWwotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0uCi0tfCBQcmludCB0aGlzIHN5bWJvbCdzIHZhbHVlIG9uIFlZTy4gIHwKLS1gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLQotLV1iNF9mdW5jdGlvbl9kZWZpbmUo
W3l5X3N5bWJvbF92YWx1ZV9wcmludF0sCi0tICAgIFtzdGF0aWMgdm9pZF0sCi0tICAgICAgICAg
ICAgICAgW1tGSUxFICp5eW9dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeXlvXV0sCi0t
ICAgICAgICAgICAgICAgW1tpbnQgeXl0eXBlXSwgICAgICAgICAgICAgICAgICAgICAgICAgICBb
eXl0eXBlXV0sCi0tICAgICAgICAgICAgICAgW1tZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1
ZXBdLCAgICAgICBbeXl2YWx1ZXBdXVtdZG5sCi0tYjRfbG9jYXRpb25zX2lmKFssIFtbWVlMVFlQ
RSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wXSwgW3l5bG9jYXRpb25wXV1dKVtdZG5sCi0tbTRf
aWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywgYjRfcGFyc2VfcGFyYW1dKSlbCi0tewotLSAgRklM
RSAqeXlvdXRwdXQgPSB5eW87Ci0tXWI0X3BhcnNlX3BhcmFtX3VzZShbeXlvdXRwdXRdLCBbeXls
b2NhdGlvbnBdKWRubAotLVsgIGlmICgheXl2YWx1ZXApCi0tICAgIHJldHVybjtdCi0tZG5sIGds
ci5jIGRvZXMgbm90IGZlYXR1cmUgeXl0b2tudW0uCi0tbTRfaWYoYjRfc2tlbGV0b24sIFsieWFj
Yy5jIl0sCi0tW1sjIGlmZGVmIFlZUFJJTlQKLS0gIGlmICh5eXR5cGUgPCBZWU5UT0tFTlMpCi0t
ICAgIFlZUFJJTlQgKHl5bywgeXl0b2tudW1beXl0eXBlXSwgKnl5dmFsdWVwKTsKLS0jIGVuZGlm
Ci0tXV0pZG5sCi0tICBiNF9zeW1ib2xfYWN0aW9ucyhbcHJpbnRlcl0pWwotLX0KLS0KLS0KLS0v
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS18IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZ
Ty4gIHwKLS1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS0KLS1dYjRfZnVuY3Rpb25f
ZGVmaW5lKFt5eV9zeW1ib2xfcHJpbnRdLAotLSAgICBbc3RhdGljIHZvaWRdLAotLSAgICAgICAg
ICAgICAgIFtbRklMRSAqeXlvXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3l5b11dLAot
LSAgICAgICAgICAgICAgIFtbaW50IHl5dHlwZV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
W3l5dHlwZV1dLAotLSAgICAgICAgICAgICAgIFtbWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFs
dWVwXSwgICAgICAgW3l5dmFsdWVwXV1bXWRubAotLWI0X2xvY2F0aW9uc19pZihbLCBbW1lZTFRZ
UEUgY29uc3QgKiBjb25zdCB5eWxvY2F0aW9ucF0sIFt5eWxvY2F0aW9ucF1dXSlbXWRubAotLW00
X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssIGI0X3BhcnNlX3BhcmFtXSkpWwotLXsKLS0gIFlZ
RlBSSU5URiAoeXlvLCAiJXMgJXMgKCIsCi0tICAgICAgICAgICAgIHl5dHlwZSA8IFlZTlRPS0VO
UyA/ICJ0b2tlbiIgOiAibnRlcm0iLCB5eXRuYW1lW3l5dHlwZV0pOwotLQotLV1iNF9sb2NhdGlv
bnNfaWYoWyAgWVlfTE9DQVRJT05fUFJJTlQgKHl5bywgKnl5bG9jYXRpb25wKTsKLS0gIFlZRlBS
SU5URiAoeXlvLCAiOiAiKTsKLS1dKWRubAotLVsgIHl5X3N5bWJvbF92YWx1ZV9wcmludCAoeXlv
LCB5eXR5cGUsIHl5dmFsdWVwXWRubAotLWI0X2xvY2F0aW9uc19pZihbLCB5eWxvY2F0aW9ucF0p
W11iNF91c2VyX2FyZ3NbKTsKLS0gIFlZRlBSSU5URiAoeXlvLCAiKSIpOwotLX1dZG5sCi0tXSkK
LS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tIyMgYXBpLnZhbHVlLnR5cGUuICAjIwot
LSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IwotLSMgYXBpLnZhbHVlLnR5cGU9dW5pb24uICAjCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICMKLS0KLS0jIGI0X3N5bWJvbF90eXBlX3JlZ2lzdGVyKFNZTUJPTC1OVU0pCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU3ltYm9sIFNZTUJPTC1OVU0gaGFzIGEg
dHlwZSAoZm9yIHZhcmlhbnQpIGluc3RlYWQgb2YgYSB0eXBlLXRhZy4KLS0jIEV4dGVuZCB0aGUg
ZGVmaW5pdGlvbiBvZiAldW5pb24ncyBib2R5IChiNF91bmlvbl9tZW1iZXJzKSB3aXRoIGEKLS0j
IGZpZWxkIG9mIHRoYXQgdHlwZSwgYW5kIGV4dGVuZCB0aGUgc3ltYm9sJ3MgInR5cGUiIGZpZWxk
IHRvIHBvaW50IHRvCi0tIyB0aGUgZmllbGQgbmFtZSwgaW5zdGVhZCBvZiB0aGUgdHlwZSBuYW1l
LgotLW00X2RlZmluZShbYjRfc3ltYm9sX3R5cGVfcmVnaXN0ZXJdLAotLVttNF9kZWZpbmUoW2I0
X3N5bWJvbCgkMSwgdHlwZV90YWcpXSwKLS0gICAgICAgICAgIFtiNF9zeW1ib2xfaWYoWyQxXSwg
W2hhc19pZF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFtiNF9zeW1ib2woWyQxXSwgW2lk
XSldLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBbeXl0eXBlX1tdYjRfc3ltYm9sKFskMV0s
IFtudW1iZXJdKV0pXSlkbmwKLS1tNF9hcHBlbmQoW2I0X3VuaW9uX21lbWJlcnNdLAotLW00X2V4
cGFuZChbCi0tICBiNF9zeW1ib2xfdGFnX2NvbW1lbnQoWyQxXSlkbmwKLS0gIGI0X3N5bWJvbChb
JDFdLCBbdHlwZV0pIGI0X3N5bWJvbChbJDFdLCBbdHlwZV90YWddKTtdKSkKLS1dKQotLQotLQot
LSMgYjRfdHlwZV9kZWZpbmVfdGFnKFNZTUJPTDEtTlVNLCAuLi4pCi0tIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEZvciB0aGUgYmF0Y2ggb2Ygc3ltYm9scyBTWU1C
T0wxLU5VTS4uLiAod2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUKLS0jIHR5cGUpLCBlbmhhbmNlIHRo
ZSAldW5pb24gZGVmaW5pdGlvbiBmb3IgZWFjaCBvZiB0aGVtLCBhbmQgc2V0Ci0tIyB0aGVyZSAi
dHlwZSIgZmllbGQgdG8gdGhlIGZpZWxkIHRhZyBuYW1lLCBpbnN0ZWFkIG9mIHRoZSB0eXBlIG5h
bWUuCi0tbTRfZGVmaW5lKFtiNF90eXBlX2RlZmluZV90YWddLAotLVtiNF9zeW1ib2xfaWYoWyQx
XSwgW2hhc190eXBlXSwKLS0gICAgICAgICAgICAgIFttNF9tYXAoW2I0X3N5bWJvbF90eXBlX3Jl
Z2lzdGVyXSwgWyRAXSldKQotLV0pCi0tCi0tCi0tIyBiNF9zeW1ib2xfdmFsdWVfdW5pb24oVkFM
LCBTWU1CT0wtTlVNLCBbVFlQRV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0tIyBTYW1lIG9mIGI0X3N5bWJvbF92YWx1ZSwgYnV0IHdoZW4gYXBp
LnZhbHVlLnR5cGU9dW5pb24uCi0tbTRfZGVmaW5lKFtiNF9zeW1ib2xfdmFsdWVfdW5pb25dLAot
LVttNF9pZnZhbChbJDNdLAotLSAgICAgICAgICBbKCooJDMqKSgmJDEpKV0sCi0tICAgICAgICAg
IFttNF9pZnZhbChbJDJdLAotLSAgICAgICAgICAgICAgICAgICAgW2I0X3N5bWJvbF9pZihbJDJd
LCBbaGFzX3R5cGVdLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCQxLmI0
X3N5bWJvbChbJDJdLCBbdHlwZV90YWddKSldLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJDFdKV0sCi0tICAgICAgICAgICAgICAgICAgICBbJDFdKV0pXSkKLS0KLS0KLS0j
IGI0X3ZhbHVlX3R5cGVfc2V0dXBfdW5pb24KLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LS0jIFNldHVwIHN1cHBvcnQgZm9yIGFwaS52YWx1ZS50eXBlPXVuaW9uLiAgU3ltYm9scyBhcmUg
ZGVmaW5lZCB3aXRoIGEKLS0jIHR5cGUgaW5zdGVhZCBvZiBhIHVuaW9uIG1lbWJlciBuYW1lOiBi
dWlsZCB0aGUgY29ycmVzcG9uZGluZyB1bmlvbiwKLS0jIGFuZCBnaXZlIHRoZSBzeW1ib2xzIHRo
ZWlyIHRhZy4KLS1tNF9kZWZpbmUoW2I0X3ZhbHVlX3R5cGVfc2V0dXBfdW5pb25dLAotLVttNF9k
ZWZpbmUoW2I0X3VuaW9uX21lbWJlcnNdKQotLWI0X3R5cGVfZm9yZWFjaChbYjRfdHlwZV9kZWZp
bmVfdGFnXSkKLS1tNF9jb3B5X2ZvcmNlKFtiNF9zeW1ib2xfdmFsdWVfdW5pb25dLCBbYjRfc3lt
Ym9sX3ZhbHVlXSkKLS1dKQotLQotLQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwot
LSMgYXBpLnZhbHVlLnR5cGUgPSB2YXJpYW50LiAgIwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIwotLQotLSMgYjRfdmFsdWVfdHlwZV9zZXR1cF92YXJpYW50Ci0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLS0jIFNldHVwIHN1cHBvcnQgZm9yIGFwaS52YWx1ZS50eXBlPXZh
cmlhbnQuICBCeSBkZWZhdWx0LCBmYWlsLCBzcGVjaWFsaXplZAotLSMgYnkgb3RoZXIgc2tlbGV0
b25zLgotLW00X2RlZmluZShbYjRfdmFsdWVfdHlwZV9zZXR1cF92YXJpYW50XSwKLS1bYjRfY29t
cGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvYyhbW2FwaS52YWx1ZS50eXBlXV0pLAot
LSAgICAgICAgICAgICAgICBbWyclcycgZG9lcyBub3Qgc3VwcG9ydCAnJXMnXV0sCi0tICAgICAg
ICAgICAgICAgIFtiNF9za2VsZXRvbl0sCi0tICAgICAgICAgICAgICAgIFslZGVmaW5lIGFwaS52
YWx1ZS50eXBlIHZhcmlhbnRdKV0pCi0tCi0tCi0tIyBfYjRfdmFsdWVfdHlwZV9zZXR1cF9rZXl3
b3JkCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBhcGkudmFsdWUudHlwZSBp
cyBkZWZpbmVkIHdpdGggYSBrZXl3b3JkL3N0cmluZyBzeW50YXguICBDaGVjayBpZgotLSMgdGhh
dCBpcyBwcm9wZXJseSBkZWZpbmVkLCBhbmQgcHJlcGFyZSBpdHMgdXNlLgotLW00X2RlZmluZShb
X2I0X3ZhbHVlX3R5cGVfc2V0dXBfa2V5d29yZF0sCi0tW2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNr
X3ZhbHVlcyhbW1tbYXBpLnZhbHVlLnR5cGVdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1tub25lXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb
dW5pb25dXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1t1bmlvbi1kaXJl
Y3RpdmVdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1t2YXJpYW50XV0s
Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbeXlzdHlwZV1dXV0pZG5sCi0t
bTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkudmFsdWUudHlwZV1dKSwKLS0gICAg
ICAgIFt1bmlvbl0sICAgW2I0X3ZhbHVlX3R5cGVfc2V0dXBfdW5pb25dLAotLSAgICAgICAgW3Zh
cmlhbnRdLCBbYjRfdmFsdWVfdHlwZV9zZXR1cF92YXJpYW50XSldKQotLQotLQotLSMgYjRfdmFs
dWVfdHlwZV9zZXR1cAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQ2hlY2sgaWYgYXBpLnZh
bHVlLnR5cGUgaXMgcHJvcGVybHkgZGVmaW5lZCwgYW5kIHBvc3NpYmx5IHByZXBhcmUKLS0jIGl0
cyB1c2UuCi0tYjRfZGVmaW5lX3NpbGVudChbYjRfdmFsdWVfdHlwZV9zZXR1cF0sCi0tWyMgRGVm
aW5lIGRlZmF1bHQgdmFsdWUuCi0tYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW1thcGkudmFsdWUu
dHlwZV1dLCBbXSwKLS1bIyAldW5pb24gPT4gYXBpLnZhbHVlLnR5cGU9dW5pb24tZGlyZWN0aXZl
Ci0tbTRfaWZkZWYoW2I0X3VuaW9uX21lbWJlcnNdLAotLVttNF9kZWZpbmUoW2I0X3BlcmNlbnRf
ZGVmaW5lX2tpbmQoYXBpLnZhbHVlLnR5cGUpXSwgW2tleXdvcmRdKQotLW00X2RlZmluZShbYjRf
cGVyY2VudF9kZWZpbmUoYXBpLnZhbHVlLnR5cGUpXSwgW3VuaW9uLWRpcmVjdGl2ZV0pXSwKLS1b
IyBubyB0YWcgc2VlbiA9PiBhcGkudmFsdWUudHlwZT17aW50fQotLW00X2lmKGI0X3RhZ19zZWVu
X2ZsYWcsIDAsCi0tW200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfa2luZChhcGkudmFsdWUu
dHlwZSldLCBbY29kZV0pCi0tbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZShhcGkudmFsdWUu
dHlwZSldLCBbaW50XSldLAotLVsjIG90aGVyd2lzZSBhcGkudmFsdWUudHlwZT15eXN0eXBlCi0t
bTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9raW5kKGFwaS52YWx1ZS50eXBlKV0sIFtrZXl3
b3JkXSkKLS1tNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lKGFwaS52YWx1ZS50eXBlKV0sIFt5
eXN0eXBlXSldKV0pXSkKLS0KLS0jIFNldCB1cC4KLS1tNF9ibWF0Y2goYjRfcGVyY2VudF9kZWZp
bmVfZ2V0X2tpbmQoW1thcGkudmFsdWUudHlwZV1dKSwKLS0gICBba2V5d29yZFx8c3RyaW5nXSwg
W19iNF92YWx1ZV90eXBlX3NldHVwX2tleXdvcmRdKQotLV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0t
LS0tLS0gIyMKLS0jIyBEZWNsYXJhdGlvbnMuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tICMjCi0t
Ci0tCi0tIyBiNF92YWx1ZV90eXBlX2RlZmluZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1t
NF9kZWZpbmUoW2I0X3ZhbHVlX3R5cGVfZGVmaW5lXSwKLS1bYjRfdmFsdWVfdHlwZV9zZXR1cFtd
ZG5sCi0tLyogVmFsdWUgdHlwZS4gICovCi0tbTRfYm1hdGNoKGI0X3BlcmNlbnRfZGVmaW5lX2dl
dF9raW5kKFtbYXBpLnZhbHVlLnR5cGVdXSksCi0tW2NvZGVdLAotLVtbI2lmICEgZGVmaW5lZCBd
YjRfYXBpX1BSRUZJWFtTVFlQRSAmJiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNf
REVDTEFSRUQKLS10eXBlZGVmIF1iNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkudmFsdWUudHlw
ZV1dKVsgXWI0X2FwaV9QUkVGSVhbU1RZUEU7Ci0tIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbU1RZ
UEVfSVNfVFJJVklBTCAxCi0tIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNfREVDTEFS
RUQgMQotLSNlbmRpZgotLV1dLAotLVttNF9ibWF0Y2goYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtb
YXBpLnZhbHVlLnR5cGVdXSksCi0tW3VuaW9uXHx1bmlvbi1kaXJlY3RpdmVdLAotLVtbI2lmICEg
ZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtTVFlQRSAmJiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhb
U1RZUEVfSVNfREVDTEFSRUQKLS1dYjRfcGVyY2VudF9kZWZpbmVfZ2V0X3N5bmNsaW5lKFtbYXBp
LnZhbHVlLnVuaW9uLm5hbWVdXSlbCi0tdW5pb24gXWI0X3BlcmNlbnRfZGVmaW5lX2dldChbW2Fw
aS52YWx1ZS51bmlvbi5uYW1lXV0pWwotLXsKLS1dYjRfdXNlcl91bmlvbl9tZW1iZXJzWwotLX07
Ci0tXWI0X3BlcmNlbnRfZGVmaW5lX2dldF9zeW5jbGluZShbW2FwaS52YWx1ZS51bmlvbi5uYW1l
XV0pWwotLXR5cGVkZWYgdW5pb24gXWI0X3BlcmNlbnRfZGVmaW5lX2dldChbW2FwaS52YWx1ZS51
bmlvbi5uYW1lXV0pWyBdYjRfYXBpX1BSRUZJWFtTVFlQRTsKLS0jIGRlZmluZSBdYjRfYXBpX1BS
RUZJWFtTVFlQRV9JU19UUklWSUFMIDEKLS0jIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtTVFlQRV9J
U19ERUNMQVJFRCAxCi0tI2VuZGlmCi0tXV0pXSldKQotLQotLQotLSMgYjRfbG9jYXRpb25fdHlw
ZV9kZWZpbmUKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtiNF9sb2Nh
dGlvbl90eXBlX2RlZmluZV0sCi0tW1svKiBMb2NhdGlvbiB0eXBlLiAgKi8KLS0jaWYgISBkZWZp
bmVkIF1iNF9hcGlfUFJFRklYW0xUWVBFICYmICEgZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtMVFlQ
RV9JU19ERUNMQVJFRAotLXR5cGVkZWYgc3RydWN0IF1iNF9hcGlfUFJFRklYW0xUWVBFIF1iNF9h
cGlfUFJFRklYW0xUWVBFOwotLXN0cnVjdCBdYjRfYXBpX1BSRUZJWFtMVFlQRQotLXsKLS0gIGlu
dCBmaXJzdF9saW5lOwotLSAgaW50IGZpcnN0X2NvbHVtbjsKLS0gIGludCBsYXN0X2xpbmU7Ci0t
ICBpbnQgbGFzdF9jb2x1bW47Ci0tfTsKLS0jIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtMVFlQRV9J
U19ERUNMQVJFRCAxCi0tIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfVFJJVklBTCAx
Ci0tI2VuZGlmCi0tXV0pCi0tCi0tCi0tIyBiNF9kZWNsYXJlX3l5bHN0eXBlCi0tIyAtLS0tLS0t
LS0tLS0tLS0tLS0tCi0tIyBEZWNsYXJhdGlvbnMgdGhhdCBtaWdodCBlaXRoZXIgZ28gaW50byB0
aGUgaGVhZGVyIChpZiAtLWRlZmluZXMpIG9yCi0tIyBpbiB0aGUgcGFyc2VyIGJvZHkuICBEZWNs
YXJlIFlZU1RZUEUvWVlMVFlQRSwgYW5kIHl5bHZhbC95eWxsb2MuCi0tbTRfZGVmaW5lKFtiNF9k
ZWNsYXJlX3l5bHN0eXBlXSwKLS1bYjRfdmFsdWVfdHlwZV9kZWZpbmVbXWI0X2xvY2F0aW9uc19p
ZihbCi0tYjRfbG9jYXRpb25fdHlwZV9kZWZpbmVdKQotLQotLWI0X3B1cmVfaWYoW10sIFtbZXh0
ZXJuIF1iNF9hcGlfUFJFRklYW1NUWVBFIF1iNF9wcmVmaXhbbHZhbDsKLS1dYjRfbG9jYXRpb25z
X2lmKFtbZXh0ZXJuIF1iNF9hcGlfUFJFRklYW0xUWVBFIF1iNF9wcmVmaXhbbGxvYztdXSldKVtd
ZG5sCi0tXSkKLS0KLS0KLS0jIGI0X1lZREVCVUdfZGVmaW5lCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LQotLW00X2RlZmluZShbYjRfWVlERUJVR19kZWZpbmVdLAotLVtbLyogRGVidWcgdHJhY2VzLiAg
Ki8KLS1dbTRfaWYoYjRfYXBpX3ByZWZpeCwgW3l5XSwKLS1bWyNpZm5kZWYgWVlERUJVRwotLSMg
ZGVmaW5lIFlZREVCVUcgXWI0X3BhcnNlX3RyYWNlX2lmKFsxXSwgWzBdKVsKLS0jZW5kaWZdXSwK
LS1bWyNpZm5kZWYgXWI0X2FwaV9QUkVGSVhbREVCVUcKLS0jIGlmIGRlZmluZWQgWVlERUJVRwot
LSNpZiBZWURFQlVHCi0tIyAgIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtERUJVRyAxCi0tIyAgZWxz
ZQotLSMgICBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbREVCVUcgMAotLSMgIGVuZGlmCi0tIyBlbHNl
IC8qICEgZGVmaW5lZCBZWURFQlVHICovCi0tIyAgZGVmaW5lIF1iNF9hcGlfUFJFRklYW0RFQlVH
IF1iNF9wYXJzZV90cmFjZV9pZihbMV0sIFswXSlbCi0tIyBlbmRpZiAvKiAhIGRlZmluZWQgWVlE
RUJVRyAqLwotLSNlbmRpZiAgLyogISBkZWZpbmVkIF1iNF9hcGlfUFJFRklYW0RFQlVHICovXV0p
W11kbmwKLS1dKQotLQotLSMgYjRfZGVjbGFyZV95eWRlYnVnCi0tIyAtLS0tLS0tLS0tLS0tLS0t
LS0KLS1tNF9kZWZpbmUoW2I0X2RlY2xhcmVfeXlkZWJ1Z10sCi0tW2I0X1lZREVCVUdfZGVmaW5l
WwotLSNpZiBdYjRfYXBpX1BSRUZJWFtERUJVRwotLWV4dGVybiBpbnQgXWI0X3ByZWZpeFtkZWJ1
ZzsKLS0jZW5kaWZdW11kbmwKLS1dKQotLQotLSMgYjRfeXlsbG9jX2RlZmF1bHRfZGVmaW5lCi0t
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlZmluZSBZWUxMT0NfREVGQVVMVC4KLS1t
NF9kZWZpbmUoW2I0X3l5bGxvY19kZWZhdWx0X2RlZmluZV0sCi0tW1svKiBZWUxMT0NfREVGQVVM
VCAtLSBTZXQgQ1VSUkVOVCB0byBzcGFuIGZyb20gUkhTWzFdIHRvIFJIU1tOXS4KLS0gICBJZiBO
IGlzIDAsIHRoZW4gc2V0IENVUlJFTlQgdG8gdGhlIGVtcHR5IGxvY2F0aW9uIHdoaWNoIGVuZHMK
LS0gICB0aGUgcHJldmlvdXMgc3ltYm9sOiBSSFNbMF0gKGFsd2F5cyBkZWZpbmVkKS4gICovCi0t
Ci0tI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotLSMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJl
bnQsIFJocywgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgZG8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0tICAgICAgaWYgKE4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2xpbmUgICA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2xpbmU7ICAg
ICAgICBcCi0tICAgICAgICAgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSBZWVJIU0xPQyAoUmhz
LCAxKS5maXJzdF9jb2x1bW47ICAgICAgXAotLSAgICAgICAgICAoQ3VycmVudCkubGFzdF9saW5l
ICAgID0gWVlSSFNMT0MgKFJocywgTikubGFzdF9saW5lOyAgICAgICAgIFwKLS0gICAgICAgICAg
KEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfY29sdW1uOyAg
ICAgICBcCi0tICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0tICAgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSAoQ3VycmVudCkubGFz
dF9saW5lICAgPSAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIFlZUkhTTE9DIChSaHMsIDAp
Lmxhc3RfbGluZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAg
KEN1cnJlbnQpLmZpcnN0X2NvbHVtbiA9IChDdXJyZW50KS5sYXN0X2NvbHVtbiA9ICAgICAgICAg
ICAgICBcCi0tICAgICAgICAgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgd2hpbGUg
KDApCi0tI2VuZGlmCi0tXV0pCi0tCi0tIyBiNF95eV9sb2NhdGlvbl9wcmludF9kZWZpbmUKLS0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgRGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5U
LgotLW00X2RlZmluZShbYjRfeXlfbG9jYXRpb25fcHJpbnRfZGVmaW5lXSwKLS1bYjRfbG9jYXRp
b25zX2lmKFtbCi0tLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxvY2F0aW9uIG9u
IHRoZSBzdHJlYW0uCi0tICAgVGhpcyBtYWNybyB3YXMgbm90IG1hbmRhdGVkIG9yaWdpbmFsbHk6
IGRlZmluZSBvbmx5IGlmIHdlIGtub3cKLS0gICB3ZSB3b24ndCBicmVhayB1c2VyIGNvZGU6IHdo
ZW4gdGhlc2UgYXJlIHRoZSBsb2NhdGlvbnMgd2Uga25vdy4gICovCi0tCi0tI2lmbmRlZiBZWV9M
T0NBVElPTl9QUklOVAotLSMgaWYgZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19UUklW
SUFMICYmIF1iNF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwKLS0KLS0vKiBQcmludCAqWVlM
T0NQIG9uIFlZTy4gIFByaXZhdGUsIGRvIG5vdCByZWx5IG9uIGl0cyBleGlzdGVuY2UuICovCi0t
Ci0tWVlfQVRUUklCVVRFX1VOVVNFRAotLV1iNF9mdW5jdGlvbl9kZWZpbmUoW3l5X2xvY2F0aW9u
X3ByaW50X10sCi0tICAgIFtzdGF0aWMgaW50XSwKLS0gICAgICAgICAgICAgICBbW0ZJTEUgKnl5
b10sICAgICAgICAgICAgICAgICAgICBbeXlvXV0sCi0tICAgICAgICAgICAgICAgW1tZWUxUWVBF
IGNvbnN0ICogY29uc3QgeXlsb2NwXSwgW3l5bG9jcF1dKVsKLS17Ci0tICBpbnQgcmVzID0gMDsK
LS0gIGludCBlbmRfY29sID0gMCAhPSB5eWxvY3AtPmxhc3RfY29sdW1uID8geXlsb2NwLT5sYXN0
X2NvbHVtbiAtIDEgOiAwOwotLSAgaWYgKDAgPD0geXlsb2NwLT5maXJzdF9saW5lKQotLSAgICB7
Ci0tICAgICAgcmVzICs9IFlZRlBSSU5URiAoeXlvLCAiJWQiLCB5eWxvY3AtPmZpcnN0X2xpbmUp
OwotLSAgICAgIGlmICgwIDw9IHl5bG9jcC0+Zmlyc3RfY29sdW1uKQotLSAgICAgICAgcmVzICs9
IFlZRlBSSU5URiAoeXlvLCAiLiVkIiwgeXlsb2NwLT5maXJzdF9jb2x1bW4pOwotLSAgICB9Ci0t
ICBpZiAoMCA8PSB5eWxvY3AtPmxhc3RfbGluZSkKLS0gICAgewotLSAgICAgIGlmICh5eWxvY3At
PmZpcnN0X2xpbmUgPCB5eWxvY3AtPmxhc3RfbGluZSkKLS0gICAgICAgIHsKLS0gICAgICAgICAg
cmVzICs9IFlZRlBSSU5URiAoeXlvLCAiLSVkIiwgeXlsb2NwLT5sYXN0X2xpbmUpOwotLSAgICAg
ICAgICBpZiAoMCA8PSBlbmRfY29sKQotLSAgICAgICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5
bywgIi4lZCIsIGVuZF9jb2wpOwotLSAgICAgICAgfQotLSAgICAgIGVsc2UgaWYgKDAgPD0gZW5k
X2NvbCAmJiB5eWxvY3AtPmZpcnN0X2NvbHVtbiA8IGVuZF9jb2wpCi0tICAgICAgICByZXMgKz0g
WVlGUFJJTlRGICh5eW8sICItJWQiLCBlbmRfY29sKTsKLS0gICAgfQotLSAgcmV0dXJuIHJlczsK
LS0gfQotLQotLSMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICAgICAgICAg
IFwKLS0gIHl5X2xvY2F0aW9uX3ByaW50XyAoRmlsZSwgJihMb2MpKQotLQotLSMgZWxzZQotLSMg
IGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKLS0jIGVuZGlm
Ci0tI2VuZGlmXV0sCi0tW1svKiBUaGlzIG1hY3JvIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5LiAqLwotLSNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKLS0jIGRlZmluZSBZ
WV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKLS0jZW5kaWZdXSkKLS1dKQot
LQotLSMgYjRfeXlsb2NfZGVmYXVsdAotLSMgLS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kIHRv
IGEgcG9zc2libGUgZGVmYXVsdCB2YWx1ZSBmb3IgeXlsbG9jLgotLW00X2RlZmluZShbYjRfeXls
b2NfZGVmYXVsdF0sCi0tW1sKLS0jIGlmIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNf
VFJJVklBTCAmJiBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19UUklWSUFMCi0tICA9IHsgXW00X2pv
aW4oWywgXSwKLS0gICAgICAgICAgICAgICBtNF9kZWZuKFtiNF9sb2NhdGlvbl9pbml0aWFsX2xp
bmVdKSwKLS0gICAgICAgICAgICAgICBtNF9kZWZuKFtiNF9sb2NhdGlvbl9pbml0aWFsX2NvbHVt
bl0pLAotLSAgICAgICAgICAgICAgIG00X2RlZm4oW2I0X2xvY2F0aW9uX2luaXRpYWxfbGluZV0p
LAotLSAgICAgICAgICAgICAgIG00X2RlZm4oW2I0X2xvY2F0aW9uX2luaXRpYWxfY29sdW1uXSkp
WyB9Ci0tIyBlbmRpZgotLV1dKQotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL3lhY2MuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL3lh
Y2MuYwotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA1NGU0MGU2NzQxMi4uMDAwMDAw
MDAwMDAKLS0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhp
cmRfcGFydHkvc2tlbGV0b25zL3lhY2MuYwotKysrIC9kZXYvbnVsbAotQEAgLTEsMTkyNyArMCww
IEBACi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0qLSBDIC0qLQotLSMgWWFjYyBjb21wYXRpYmxlIHNrZWxldG9uIGZvciBCaXNv
bgotLQotLSMgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIwMDAtMjAxNSwgMjAxOC0y
MDE5IEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4KLS0KLS1tNF9wdXNoZGVmKFti
NF9jb3B5cmlnaHRfeWVhcnNdLAotLSAgICAgICAgICAgWzE5ODQsIDE5ODktMTk5MCwgMjAwMC0y
MDE1LCAyMDE4LTIwMTldKQotLQotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl
bnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS0j
IENoZWNrIHRoZSB2YWx1ZSBvZiAlZGVmaW5lIGFwaS5wdXNoLXB1bGwuCi0tYjRfcGVyY2VudF9k
ZWZpbmVfZGVmYXVsdChbW2FwaS5wdXNoLXB1bGxdXSwgW1twdWxsXV0pCi0tYjRfcGVyY2VudF9k
ZWZpbmVfY2hlY2tfdmFsdWVzKFtbW1thcGkucHVzaC1wdWxsXV0sCi0tICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1twdWxsXV0sIFtbcHVzaF1dLCBbW2JvdGhdXV1dKQotLWI0X2Rl
ZmluZV9mbGFnX2lmKFtwdWxsXSkgbTRfZGVmaW5lKFtiNF9wdWxsX2ZsYWddLCBbWzFdXSkKLS1i
NF9kZWZpbmVfZmxhZ19pZihbcHVzaF0pIG00X2RlZmluZShbYjRfcHVzaF9mbGFnXSwgW1sxXV0p
Ci0tbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkucHVzaC1wdWxsXV0pLAotLSAg
ICAgICAgW3B1bGxdLCBbbTRfZGVmaW5lKFtiNF9wdXNoX2ZsYWddLCBbWzBdXSldLAotLSAgICAg
ICAgW3B1c2hdLCBbbTRfZGVmaW5lKFtiNF9wdWxsX2ZsYWddLCBbWzBdXSldKQotLQotLSMgSGFu
ZGxlIEJJU09OX1VTRV9QVVNIX0ZPUl9QVUxMIGZvciB0aGUgdGVzdCBzdWl0ZS4gIFNvIHRoYXQg
cHVzaCBwYXJzaW5nCi0tIyB0ZXN0cyBmdW5jdGlvbiBhcyB3cml0dGVuLCBkbyBub3QgbGV0IEJJ
U09OX1VTRV9QVVNIX0ZPUl9QVUxMIG1vZGlmeSB0aGUKLS0jIGJlaGF2aW9yIG9mIEJpc29uIGF0
IGFsbCB3aGVuIHB1c2ggcGFyc2luZyBpcyBhbHJlYWR5IHJlcXVlc3RlZC4KLS1iNF9kZWZpbmVf
ZmxhZ19pZihbdXNlX3B1c2hfZm9yX3B1bGxdKQotLWI0X3VzZV9wdXNoX2Zvcl9wdWxsX2lmKFsK
LS0gIGI0X3B1c2hfaWYoW200X2RlZmluZShbYjRfdXNlX3B1c2hfZm9yX3B1bGxfZmxhZ10sIFtb
MF1dKV0sCi0tICAgICAgICAgICAgIFttNF9kZWZpbmUoW2I0X3B1c2hfZmxhZ10sIFtbMV1dKV0p
XSkKLS0KLS0jIENoZWNrIHRoZSB2YWx1ZSBvZiAlZGVmaW5lIHBhcnNlLmxhYyBhbmQgZnJpZW5k
cywgd2hlcmUgTEFDIHN0YW5kcyBmb3IKLS0jIGxvb2thaGVhZCBjb3JyZWN0aW9uLgotLWI0X3Bl
cmNlbnRfZGVmaW5lX2RlZmF1bHQoW1twYXJzZS5sYWNdXSwgW1tub25lXV0pCi0tYjRfcGVyY2Vu
dF9kZWZpbmVfZGVmYXVsdChbW3BhcnNlLmxhYy5lcy1jYXBhY2l0eS1pbml0aWFsXV0sIFtbMjBd
XSkKLS1iNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbcGFyc2UubGFjLm1lbW9yeS10cmFjZV1d
LCBbW2ZhaWx1cmVzXV0pCi0tYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVzKFtbW1twYXJz
ZS5sYWNdXSwgW1tmdWxsXV0sIFtbbm9uZV1dXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtbW1twYXJzZS5sYWMubWVtb3J5LXRyYWNlXV0sCi0tICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW1tmYWlsdXJlc11dLCBbW2Z1bGxdXV1dKQotLWI0X2RlZmluZV9mbGFn
X2lmKFtsYWNdKQotLW00X2RlZmluZShbYjRfbGFjX2ZsYWddLAotLSAgICAgICAgICBbbTRfaWYo
YjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbcGFyc2UubGFjXV0pLAotLSAgICAgICAgICAgICAgICAg
W25vbmVdLCBbWzBdXSwgW1sxXV0pXSkKLS0KLS1tNF9pbmNsdWRlKGI0X3NrZWxldG9uc2Rpci9b
Yy5tNF0pCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIERlZmF1bHQgdmFsdWVzLiAg
IyMKLS0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCi0tCi0tIyBTdGFjayBwYXJhbWV0ZXJzLgotLW00
X2RlZmluZV9kZWZhdWx0KFtiNF9zdGFja19kZXB0aF9tYXhdLCBbMTAwMDBdKQotLW00X2RlZmlu
ZV9kZWZhdWx0KFtiNF9zdGFja19kZXB0aF9pbml0XSwgIFsyMDBdKQotLQotLQotLSMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFB1cmUvaW1wdXJlIGludGVyZmFjZXMuICAjIwot
LSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotLQotLWI0X3BlcmNlbnRfZGVmaW5lX2Rl
ZmF1bHQoW1thcGkucHVyZV1dLCBbW2ZhbHNlXV0pCi0tYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tf
dmFsdWVzKFtbW1thcGkucHVyZV1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtbZmFsc2VdXSwgW1t0cnVlXV0sIFtbXV0sIFtbZnVsbF1dXV0pCi0tCi0tbTRfZGVmaW5lKFti
NF9wdXJlX2ZsYWddLCBbWzBdXSkKLS1tNF9jYXNlKGI0X3BlcmNlbnRfZGVmaW5lX2dldChbW2Fw
aS5wdXJlXV0pLAotLSAgICAgICAgW2ZhbHNlXSwgW200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwg
W1swXV0pXSwKLS0gICAgICAgIFt0cnVlXSwgIFttNF9kZWZpbmUoW2I0X3B1cmVfZmxhZ10sIFtb
MV1dKV0sCi0tICAgICAgICBbXSwgICAgICBbbTRfZGVmaW5lKFtiNF9wdXJlX2ZsYWddLCBbWzFd
XSldLAotLSAgICAgICAgW2Z1bGxdLCAgW200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1syXV0p
XSkKLS0KLS1tNF9kZWZpbmUoW2I0X3B1cmVfaWZdLAotLVttNF9jYXNlKGI0X3B1cmVfZmxhZywK
LS0gICAgICAgICBbMF0sIFskMl0sCi0tICAgICAgICAgWzFdLCBbJDFdLAotLSAgICAgICAgIFsy
XSwgWyQxXSldKQotLSAgICAgICAgIFttNF9mYXRhbChbaW52YWxpZCBhcGkucHVyZSB2YWx1ZTog
XSQxKV0pXSkKLS0KLS0jIGI0X3l5ZXJyb3JfYXJnX2xvY19pZihBUkcpCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotLSMgRXhwYW5kIEFSRyBpZmYgeXllcnJvciBpcyB0byBiZSBnaXZl
biBhIGxvY2F0aW9uIGFzIGFyZ3VtZW50LgotLW00X2RlZmluZShbYjRfeXllcnJvcl9hcmdfbG9j
X2lmXSwKLS1bYjRfbG9jYXRpb25zX2lmKFttNF9jYXNlKGI0X3B1cmVfZmxhZywKLS0gICAgICAg
ICAgICAgICAgICAgICAgICAgIFsxXSwgW200X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFskMV0p
XSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFsyXSwgWyQxXSldKV0pCi0tCi0tIyBiNF95
eWVycm9yX2FyZ3MKLS0jIC0tLS0tLS0tLS0tLS0tLQotLSMgQXJndW1lbnRzIHBhc3NlZCB0byB5
eWVycm9yOiB1c2VyIGFyZ3MgcGx1cyB5eWxsb2MuCi0tbTRfZGVmaW5lKFtiNF95eWVycm9yX2Fy
Z3NdLAotLVtiNF95eWVycm9yX2FyZ19sb2NfaWYoWyZ5eWxsb2MsIF0pZG5sCi0tbTRfaWZzZXQo
W2I0X3BhcnNlX3BhcmFtXSwgW2I0X2FyZ3MoYjRfcGFyc2VfcGFyYW0pLCBdKV0pCi0tCi0tCi0t
Ci0tIyMgLS0tLS0tLS0tLS0tICMjCi0tIyMgRGF0YSBUeXBlcy4gICMjCi0tIyMgLS0tLS0tLS0t
LS0tICMjCi0tCi0tIyBiNF9pbnRfdHlwZShNSU4sIE1BWCkKLS0jIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotLSMgUmV0dXJuIHRoZSBzbWFsbGVzdCBpbnQgdHlwZSBhYmxlIHRvIGhhbmRsZSBudW1i
ZXJzIHJhbmdpbmcgZnJvbQotLSMgTUlOIHRvIE1BWCAoaW5jbHVkZWQpLiAgT3ZlcndyaXRlIHRo
ZSB2ZXJzaW9uIGZyb20gYy5tNCwgd2hpY2gKLS0jIHVzZXMgb25seSBDODkgdHlwZXMsIHNvIHRo
YXQgdGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRoZSBzaG9ydGVyCi0tIyB0eXBlcywgYW5kIHNvIHRo
YXQgcHJlLUM4OSBjb21waWxlcnMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LgotLW00X2RlZmluZShb
YjRfaW50X3R5cGVdLAotLVttNF9pZihiNF9pbnRzX2luKCRALCAgICAgIFswXSwgICBbMjU1XSks
IFsxXSwgW3l5dHlwZV91aW50OF0sCi0tICAgICAgIGI0X2ludHNfaW4oJEAsICAgWy0xMjhdLCAg
IFsxMjddKSwgWzFdLCBbeXl0eXBlX2ludDhdLAotLQotLSAgICAgICBiNF9pbnRzX2luKCRALCAg
ICAgIFswXSwgWzY1NTM1XSksIFsxXSwgW3l5dHlwZV91aW50MTZdLAotLSAgICAgICBiNF9pbnRz
X2luKCRALCBbLTMyNzY4XSwgWzMyNzY3XSksIFsxXSwgW3l5dHlwZV9pbnQxNl0sCi0tCi0tICAg
ICAgIG00X2V2YWwoWzAgPD0gJDFdKSwgICAgICAgICAgICAgICAgWzFdLCBbdW5zaWduZWRdLAot
LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ludF0p
XSkKLS0KLS0KLS0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotLSMjIFNlbWFudGljIFZhbHVlcy4g
ICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0KLS0KLS0jIGI0X2xoc192YWx1ZShTWU1C
T0wtTlVNLCBbVFlQRV0pCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
U2VlIFJFQURNRS4KLS1tNF9kZWZpbmUoW2I0X2xoc192YWx1ZV0sCi0tW2I0X3N5bWJvbF92YWx1
ZSh5eXZhbCwgWyQxXSwgWyQyXSldKQotLQotLQotLSMgYjRfcmhzX3ZhbHVlKFJVTEUtTEVOR1RI
LCBQT1MsIFtTWU1CT0wtTlVNXSwgW1RZUEVdKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgU2VlIFJFQURNRS4KLS1tNF9kZWZpbmUo
W2I0X3Joc192YWx1ZV0sCi0tW2I0X3N5bWJvbF92YWx1ZShbeXl2c3BAe2I0X3N1YnRyYWN0KFsk
Ml0sIFskMV0pQH1dLCBbJDNdLCBbJDRdKV0pCi0tCi0tCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0j
IyBMb2NhdGlvbnMuICAjIwotLSMjIC0tLS0tLS0tLS0tICMjCi0tCi0tIyBiNF9saHNfbG9jYXRp
b24oKQotLSMgLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEV4cGFuc2lvbiBvZiBAJC4KLS1tNF9kZWZp
bmUoW2I0X2xoc19sb2NhdGlvbl0sCi0tWyh5eWxvYyldKQotLQotLQotLSMgYjRfcmhzX2xvY2F0
aW9uKFJVTEUtTEVOR1RILCBQT1MpCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLS0jIEV4cGFuc2lvbiBvZiBAUE9TLCB3aGVyZSB0aGUgY3VycmVudCBydWxlIGhhcyBSVUxF
LUxFTkdUSCBzeW1ib2xzCi0tIyBvbiBSSFMuCi0tbTRfZGVmaW5lKFtiNF9yaHNfbG9jYXRpb25d
LAotLVsoeXlsc3BAe2I0X3N1YnRyYWN0KFskMl0sIFskMV0pQH0pXSkKLS0KLS0KLS0jIyAtLS0t
LS0tLS0tLS0tLSAjIwotLSMjIERlY2xhcmF0aW9ucy4gICMjCi0tIyMgLS0tLS0tLS0tLS0tLS0g
IyMKLS0KLS0jIGI0X2RlY2xhcmVfc2Nhbm5lcl9jb21tdW5pY2F0aW9uX3ZhcmlhYmxlcwotLSMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBEZWNsYXJlIHRo
ZSB2YXJpYWJsZXMgdGhhdCBhcmUgZ2xvYmFsLCBvciBsb2NhbCB0byBZWVBBUlNFIGlmCi0tIyBw
dXJlLXBhcnNlci4KLS1tNF9kZWZpbmUoW2I0X2RlY2xhcmVfc2Nhbm5lcl9jb21tdW5pY2F0aW9u
X3ZhcmlhYmxlc10sIFtbCi0tLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwotLWludCB5eWNo
YXI7Ci0tCi0tXWI0X3B1cmVfaWYoW1sKLS0vKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxv
b2thaGVhZCBzeW1ib2wuICAqLwotLS8qIERlZmF1bHQgdmFsdWUgdXNlZCBmb3IgaW5pdGlhbGl6
YXRpb24sIGZvciBwYWNpZnlpbmcgb2xkZXIgR0NDcwotLSAgIG9yIG5vbi1HQ0MgY29tcGlsZXJz
LiAgKi8KLS1ZWV9JTklUSUFMX1ZBTFVFIChzdGF0aWMgWVlTVFlQRSB5eXZhbF9kZWZhdWx0OykK
LS1ZWVNUWVBFIHl5bHZhbCBZWV9JTklUSUFMX1ZBTFVFICg9IHl5dmFsX2RlZmF1bHQpO11iNF9s
b2NhdGlvbnNfaWYoW1sKLS0KLS0vKiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9va2FoZWFkIHN5
bWJvbC4gICovCi0tc3RhdGljIFlZTFRZUEUgeXlsb2NfZGVmYXVsdF1iNF95eWxvY19kZWZhdWx0
WzsKLS1ZWUxUWVBFIHl5bGxvYyA9IHl5bG9jX2RlZmF1bHQ7XV0pXSwKLS1bWy8qIFRoZSBzZW1h
bnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCi0tWVlTVFlQRSB5eWx2YWw7
XWI0X2xvY2F0aW9uc19pZihbWwotLS8qIExvY2F0aW9uIGRhdGEgZm9yIHRoZSBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KLS1ZWUxUWVBFIHl5bGxvY11iNF95eWxvY19kZWZhdWx0WztdXSlbCi0tLyog
TnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAgKi8KLS1pbnQgeXluZXJycztdXSldKQot
LQotLQotLSMgYjRfZGVjbGFyZV9wYXJzZXJfc3RhdGVfdmFyaWFibGVzCi0tIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIERlY2xhcmUgYWxsIHRoZSB2YXJpYWJsZXMgdGhh
dCBhcmUgbmVlZGVkIHRvIG1haW50YWluIHRoZSBwYXJzZXIgc3RhdGUKLS0jIGJldHdlZW4gY2Fs
bHMgdG8geXlwdXNoX3BhcnNlLgotLW00X2RlZmluZShbYjRfZGVjbGFyZV9wYXJzZXJfc3RhdGVf
dmFyaWFibGVzXSwgW2I0X3B1cmVfaWYoW1sKLS0gICAgLyogTnVtYmVyIG9mIHN5bnRheCBlcnJv
cnMgc28gZmFyLiAgKi8KLS0gICAgaW50IHl5bmVycnM7Ci0tXV0pWwotLSAgICBpbnQgeXlzdGF0
ZTsKLS0gICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2Fn
ZXMgZW5hYmxlZC4gICovCi0tICAgIGludCB5eWVycnN0YXR1czsKLS0KLS0gICAgLyogVGhlIHN0
YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0tICAgICAgICd5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMu
Ci0tICAgICAgICd5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMuXWI0X2xvY2F0aW9u
c19pZihbWwotLSAgICAgICAneXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLl1dKVsKLS0KLS0g
ICAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJvdWdoIHNlcGFyYXRlIHBvaW50ZXJzLCB0byBh
bGxvdyB5eW92ZXJmbG93Ci0tICAgICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAq
LwotLQotLSAgICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLwotLSAgICB5eXR5cGVfaW50MTYgeXlz
c2FbWVlJTklUREVQVEhdOwotLSAgICB5eXR5cGVfaW50MTYgKnl5c3M7Ci0tICAgIHl5dHlwZV9p
bnQxNiAqeXlzc3A7Ci0tCi0tICAgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0t
ICAgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotLSAgICBZWVNUWVBFICp5eXZzOwotLSAg
ICBZWVNUWVBFICp5eXZzcDtdYjRfbG9jYXRpb25zX2lmKFtbCi0tCi0tICAgIC8qIFRoZSBsb2Nh
dGlvbiBzdGFjay4gICovCi0tICAgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOwotLSAgICBZ
WUxUWVBFICp5eWxzOwotLSAgICBZWUxUWVBFICp5eWxzcDsKLS0KLS0gICAgLyogVGhlIGxvY2F0
aW9ucyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQgZW5kZWQuICAqLwotLSAgICBZWUxUWVBF
IHl5ZXJyb3JfcmFuZ2VbM107XV0pWwotLQotLSAgICBZWVNJWkVfVCB5eXN0YWNrc2l6ZTtdYjRf
bGFjX2lmKFtbCi0tCi0tICAgIHl5dHlwZV9pbnQxNiB5eWVzYUB7XWI0X3BlcmNlbnRfZGVmaW5l
X2dldChbW3BhcnNlLmxhYy5lcy1jYXBhY2l0eS1pbml0aWFsXV0pW0B9OwotLSAgICB5eXR5cGVf
aW50MTYgKnl5ZXM7Ci0tICAgIFlZU0laRV9UIHl5ZXNfY2FwYWNpdHk7XV0pXSkKLS0KLS0KLS0j
IF9iNF9kZWNsYXJlX3l5cGFyc2VfcHVzaAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0t
IyBEZWNsYXJhdGlvbiBvZiB5eXBhcnNlIChhbmQgZGVwZW5kZW5jaWVzKSB3aGVuIHVzaW5nIHRo
ZSBwdXNoIHBhcnNlcgotLSMgKGluY2x1ZGluZyBpbiBwdWxsIG1vZGUpLgotLW00X2RlZmluZShb
X2I0X2RlY2xhcmVfeXlwYXJzZV9wdXNoXSwKLS1bWyNpZm5kZWYgWVlQVVNIX01PUkVfREVGSU5F
RAotLSMgZGVmaW5lIFlZUFVTSF9NT1JFX0RFRklORUQKLS1lbnVtIHsgWVlQVVNIX01PUkUgPSA0
IH07Ci0tI2VuZGlmCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgXWI0X3ByZWZpeFtwc3RhdGUgXWI0X3By
ZWZpeFtwc3RhdGU7Ci0tCi0tXWI0X3B1bGxfaWYoW2I0X2Z1bmN0aW9uX2RlY2xhcmUoW2I0X3By
ZWZpeFtwYXJzZV1dLCBbW2ludF1dLCBiNF9wYXJzZV9wYXJhbSkKLS1dKWI0X2Z1bmN0aW9uX2Rl
Y2xhcmUoW2I0X3ByZWZpeFtwdXNoX3BhcnNlXV0sIFtbaW50XV0sCi0tICBbW2I0X3ByZWZpeFtw
c3RhdGUgKnBzXV0sIFtbcHNdXV1iNF9wdXJlX2lmKFssCi0tICBbW1tpbnQgcHVzaGVkX2NoYXJd
XSwgW1twdXNoZWRfY2hhcl1dXSwKLS0gIFtbYjRfYXBpX1BSRUZJWFtTVFlQRSBjb25zdCAqcHVz
aGVkX3ZhbF1dLCBbW3B1c2hlZF92YWxdXV1iNF9sb2NhdGlvbnNfaWYoWywKLS0gIFtbYjRfYXBp
X1BSRUZJWFtMVFlQRSAqcHVzaGVkX2xvY11dLCBbW3B1c2hlZF9sb2NdXV1dKV0pbTRfaWZzZXQo
W2I0X3BhcnNlX3BhcmFtXSwgWywKLS0gIGI0X3BhcnNlX3BhcmFtXSkpCi0tYjRfcHVsbF9pZihb
YjRfZnVuY3Rpb25fZGVjbGFyZShbYjRfcHJlZml4W3B1bGxfcGFyc2VdXSwgW1tpbnRdXSwKLS0g
IFtbYjRfcHJlZml4W3BzdGF0ZSAqcHNdXSwgW1twc11dXW00X2lmc2V0KFtiNF9wYXJzZV9wYXJh
bV0sIFssCi0tICBiNF9wYXJzZV9wYXJhbV0pKV0pCi0tYjRfZnVuY3Rpb25fZGVjbGFyZShbYjRf
cHJlZml4W3BzdGF0ZV9uZXddXSwgW2I0X3ByZWZpeFtwc3RhdGUgKl1dLAotLSAgICAgICAgICAg
ICAgICAgICAgW1tbdm9pZF1dLCBbXV0pCi0tYjRfZnVuY3Rpb25fZGVjbGFyZShbYjRfcHJlZml4
W3BzdGF0ZV9kZWxldGVdXSwgW1t2b2lkXV0sCi0tICAgICAgICAgICAgICAgICAgIFtbYjRfcHJl
Zml4W3BzdGF0ZSAqcHNdXSwgW1twc11dXSlkbmwKLS1dKQotLQotLSMgX2I0X2RlY2xhcmVfeXlw
YXJzZQotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgV2hlbiBub3QgdGhlIHB1c2ggcGFyc2Vy
LgotLW00X2RlZmluZShbX2I0X2RlY2xhcmVfeXlwYXJzZV0sCi0tW2I0X2Z1bmN0aW9uX2RlY2xh
cmUoYjRfcHJlZml4W3BhcnNlXSwgW2ludF0sIGI0X3BhcnNlX3BhcmFtKV0pCi0tCi0tCi0tIyBi
NF9kZWNsYXJlX3l5cGFyc2UKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLQotLW00X2RlZmluZShbYjRf
ZGVjbGFyZV95eXBhcnNlXSwKLS1bYjRfcHVzaF9pZihbX2I0X2RlY2xhcmVfeXlwYXJzZV9wdXNo
XSwKLS0gICAgICAgICAgICBbX2I0X2RlY2xhcmVfeXlwYXJzZV0pW11kbmwKLS1dKQotLQotLQot
LSMgYjRfc2hhcmVkX2RlY2xhcmF0aW9ucwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMg
RGVjbGFyYXRpb24gdGhhdCBtaWdodCBlaXRoZXIgZ28gaW50byB0aGUgaGVhZGVyIChpZiAtLWRl
ZmluZXMpCi0tIyBvciBvcGVuIGNvZGVkIGluIHRoZSBwYXJzZXIgYm9keS4KLS1tNF9kZWZpbmUo
W2I0X3NoYXJlZF9kZWNsYXJhdGlvbnNdLAotLVtiNF9jcHBfZ3VhcmRfb3BlbihbYjRfc3BlY19k
ZWZpbmVzX2ZpbGVdKVsKLS1dYjRfZGVjbGFyZV95eWRlYnVnWwotLV1iNF9wZXJjZW50X2NvZGVf
Z2V0KFtbcmVxdWlyZXNdXSlbCi0tXWI0X3Rva2VuX2VudW1zX2RlZmluZXNbCi0tXWI0X2RlY2xh
cmVfeXlsc3R5cGVbCi0tXWI0X2RlY2xhcmVfeXlwYXJzZVsKLS1dYjRfcGVyY2VudF9jb2RlX2dl
dChbW3Byb3ZpZGVzXV0pWwotLV1iNF9jcHBfZ3VhcmRfY2xvc2UoW2I0X3NwZWNfZGVmaW5lc19m
aWxlXSlbXWRubAotLV0pCi0tCi0tIyMgLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBPdXRwdXQgZmls
ZXMuICAjIwotLSMjIC0tLS0tLS0tLS0tLS0tICMjCi0tCi0tYjRfb3V0cHV0X2JlZ2luKFtiNF9w
YXJzZXJfZmlsZV9uYW1lXSlbCi0tXWI0X2NvcHlyaWdodChbQmlzb24gaW1wbGVtZW50YXRpb24g
Zm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIENdKVsKLS0vKiBDIExBTFIoMSkgcGFyc2VyIHNrZWxl
dG9uIHdyaXR0ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiwgYnkKLS0gICBzaW1wbGlmeWluZyB0aGUg
b3JpZ2luYWwgc28tY2FsbGVkICJzZW1hbnRpYyIgcGFyc2VyLiAgKi8KLS0KLS0vKiBBbGwgc3lt
Ym9scyBkZWZpbmVkIGJlbG93IHNob3VsZCBiZWdpbiB3aXRoIHl5IG9yIFlZLCB0byBhdm9pZAot
LSAgIGluZnJpbmdpbmcgb24gdXNlciBuYW1lIHNwYWNlLiAgVGhpcyBzaG91bGQgYmUgZG9uZSBl
dmVuIGZvciBsb2NhbAotLSAgIHZhcmlhYmxlcywgYXMgdGhleSBtaWdodCBvdGhlcndpc2UgYmUg
ZXhwYW5kZWQgYnkgdXNlciBtYWNyb3MuCi0tICAgVGhlcmUgYXJlIHNvbWUgdW5hdm9pZGFibGUg
ZXhjZXB0aW9ucyB3aXRoaW4gaW5jbHVkZSBmaWxlcyB0bwotLSAgIGRlZmluZSBuZWNlc3Nhcnkg
bGlicmFyeSBzeW1ib2xzOyB0aGV5IGFyZSBub3RlZCAiSU5GUklOR0VTIE9OCi0tICAgVVNFUiBO
QU1FIFNQQUNFIiBiZWxvdy4gICovCi0tCi0tXWI0X2Rpc2NsYWltZXJbCi0tXWI0X2lkZW50aWZp
Y2F0aW9uWwotLV1iNF9wZXJjZW50X2NvZGVfZ2V0KFtbdG9wXV0pW11kbmwKLS1tNF9pZihiNF9h
cGlfcHJlZml4LCBbeXldLCBbXSwKLS1bWy8qIFN1YnN0aXR1dGUgdGhlIHR5cGUgbmFtZXMuICAq
LwotLSNkZWZpbmUgWVlTVFlQRSAgICAgICAgIF1iNF9hcGlfUFJFRklYW1NUWVBFXWI0X2xvY2F0
aW9uc19pZihbWwotLSNkZWZpbmUgWVlMVFlQRSAgICAgICAgIF1iNF9hcGlfUFJFRklYW0xUWVBF
XV0pXSlbCi0tXW00X2lmKGI0X3ByZWZpeCwgW3l5XSwgW10sCi0tW1svKiBTdWJzdGl0dXRlIHRo
ZSB2YXJpYWJsZSBhbmQgZnVuY3Rpb24gbmFtZXMuICAqL11iNF9wdWxsX2lmKFtbCi0tI2RlZmlu
ZSB5eXBhcnNlICAgICAgICAgXWI0X3ByZWZpeFtwYXJzZV1dKWI0X3B1c2hfaWYoW1sKLS0jZGVm
aW5lIHl5cHVzaF9wYXJzZSAgICBdYjRfcHJlZml4W3B1c2hfcGFyc2VdYjRfcHVsbF9pZihbWwot
LSNkZWZpbmUgeXlwdWxsX3BhcnNlICAgIF1iNF9wcmVmaXhbcHVsbF9wYXJzZV1dKVsKLS0jZGVm
aW5lIHl5cHN0YXRlX25ldyAgICBdYjRfcHJlZml4W3BzdGF0ZV9uZXcKLS0jZGVmaW5lIHl5cHN0
YXRlX2RlbGV0ZSBdYjRfcHJlZml4W3BzdGF0ZV9kZWxldGUKLS0jZGVmaW5lIHl5cHN0YXRlICAg
ICAgICBdYjRfcHJlZml4W3BzdGF0ZV1dKVsKLS0jZGVmaW5lIHl5bGV4ICAgICAgICAgICBdYjRf
cHJlZml4W2xleAotLSNkZWZpbmUgeXllcnJvciAgICAgICAgIF1iNF9wcmVmaXhbZXJyb3IKLS0j
ZGVmaW5lIHl5ZGVidWcgICAgICAgICBdYjRfcHJlZml4W2RlYnVnCi0tI2RlZmluZSB5eW5lcnJz
ICAgICAgICAgXWI0X3ByZWZpeFtuZXJycwotLV1dYjRfcHVyZV9pZihbXSwgW1sKLS0jZGVmaW5l
IHl5bHZhbCAgICAgICAgICBdYjRfcHJlZml4W2x2YWwKLS0jZGVmaW5lIHl5Y2hhciAgICAgICAg
ICBdYjRfcHJlZml4W2NoYXJdYjRfbG9jYXRpb25zX2lmKFtbCi0tI2RlZmluZSB5eWxsb2MgICAg
ICAgICAgXWI0X3ByZWZpeFtsbG9jXV0pXSkpWwotLQotLV1iNF91c2VyX3ByZV9wcm9sb2d1ZVsK
LS1dYjRfbnVsbF9kZWZpbmVbCi0tCi0tLyogRW5hYmxpbmcgdmVyYm9zZSBlcnJvciBtZXNzYWdl
cy4gICovCi0tI2lmZGVmIFlZRVJST1JfVkVSQk9TRQotLSMgdW5kZWYgWVlFUlJPUl9WRVJCT1NF
Ci0tIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIDEKLS0jZWxzZQotLSMgZGVmaW5lIFlZRVJST1Jf
VkVSQk9TRSBdYjRfZXJyb3JfdmVyYm9zZV9pZihbMV0sIFswXSlbCi0tI2VuZGlmCi0tCi0tXW00
X2lmdmFsKG00X3F1b3RlKGI0X3NwZWNfZGVmaW5lc19maWxlKSwKLS1bWy8qIEluIGEgZnV0dXJl
IHJlbGVhc2Ugb2YgQmlzb24sIHRoaXMgc2VjdGlvbiB3aWxsIGJlIHJlcGxhY2VkCi0tICAgYnkg
I2luY2x1ZGUgIkBiYXNlbmFtZShdYjRfc3BlY19kZWZpbmVzX2ZpbGVbQCkiLiAgKi8KLS1dXSlk
bmwKLS1iNF9zaGFyZWRfZGVjbGFyYXRpb25zWwotLQotLV1iNF91c2VyX3Bvc3RfcHJvbG9ndWVb
Ci0tXWI0X3BlcmNlbnRfY29kZV9nZXRbXWRubAotLQotLVsjaWZkZWYgc2hvcnQKLS0jIHVuZGVm
IHNob3J0Ci0tI2VuZGlmCi0tCi0tI2lmZGVmIFlZVFlQRV9VSU5UOAotLXR5cGVkZWYgWVlUWVBF
X1VJTlQ4IHl5dHlwZV91aW50ODsKLS0jZWxzZQotLXR5cGVkZWYgdW5zaWduZWQgY2hhciB5eXR5
cGVfdWludDg7Ci0tI2VuZGlmCi0tCi0tI2lmZGVmIFlZVFlQRV9JTlQ4Ci0tdHlwZWRlZiBZWVRZ
UEVfSU5UOCB5eXR5cGVfaW50ODsKLS0jZWxzZQotLXR5cGVkZWYgc2lnbmVkIGNoYXIgeXl0eXBl
X2ludDg7Ci0tI2VuZGlmCi0tCi0tI2lmZGVmIFlZVFlQRV9VSU5UMTYKLS10eXBlZGVmIFlZVFlQ
RV9VSU5UMTYgeXl0eXBlX3VpbnQxNjsKLS0jZWxzZQotLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
eXl0eXBlX3VpbnQxNjsKLS0jZW5kaWYKLS0KLS0jaWZkZWYgWVlUWVBFX0lOVDE2Ci0tdHlwZWRl
ZiBZWVRZUEVfSU5UMTYgeXl0eXBlX2ludDE2OwotLSNlbHNlCi0tdHlwZWRlZiBzaG9ydCB5eXR5
cGVfaW50MTY7Ci0tI2VuZGlmCi0tCi0tI2lmbmRlZiBZWVNJWkVfVAotLSMgaWZkZWYgX19TSVpF
X1RZUEVfXwotLSMgIGRlZmluZSBZWVNJWkVfVCBfX1NJWkVfVFlQRV9fCi0tIyBlbGlmIGRlZmlu
ZWQgc2l6ZV90Ci0tIyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAotLSMgZWxpZiAhIGRlZmluZWQg
WVlTSVpFX1QKLS0jICBpbmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFN
RSBTUEFDRSAqLwotLSMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLS0jIGVsc2UKLS0jICBkZWZp
bmUgWVlTSVpFX1QgdW5zaWduZWQKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2RlZmluZSBZWVNJ
WkVfTUFYSU1VTSAoKFlZU0laRV9UKSAtMSkKLS0KLS0jaWZuZGVmIFlZXwotLSMgaWYgZGVmaW5l
ZCBZWUVOQUJMRV9OTFMgJiYgWVlFTkFCTEVfTkxTCi0tIyAgaWYgRU5BQkxFX05MUwotLSMgICBp
bmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLS0j
ICAgZGVmaW5lIFlZXyhNc2dpZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgTXNnaWQpCi0t
IyAgZW5kaWYKLS0jIGVuZGlmCi0tIyBpZm5kZWYgWVlfCi0tIyAgZGVmaW5lIFlZXyhNc2dpZCkg
TXNnaWQKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tXWI0X2F0dHJpYnV0ZV9kZWZpbmVbCi0tCi0t
I2lmIF1iNF9sYWNfaWYoW1sxXV0sIFtbISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9W
RVJCT1NFXV0pWwotLQotLS8qIFRoZSBwYXJzZXIgaW52b2tlcyBhbGxvY2Egb3IgbWFsbG9jOyBk
ZWZpbmUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAgKi9dZG5sCi0tYjRfcHVzaF9pZihbXSwgW2I0
X2xhY19pZihbXSwgW1sKLS0KLS0jIGlmZGVmIFlZU1RBQ0tfVVNFX0FMTE9DQQotLSMgIGlmIFlZ
U1RBQ0tfVVNFX0FMTE9DQQotLSMgICBpZmRlZiBfX0dOVUNfXwotLSMgICAgZGVmaW5lIFlZU1RB
Q0tfQUxMT0MgX19idWlsdGluX2FsbG9jYQotLSMgICBlbGlmIGRlZmluZWQgX19CVUlMVElOX1ZB
X0FSR19JTkNSCi0tIyAgICBpbmNsdWRlIDxhbGxvY2EuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIg
TkFNRSBTUEFDRSAqLwotLSMgICBlbGlmIGRlZmluZWQgX0FJWAotLSMgICAgZGVmaW5lIFlZU1RB
Q0tfQUxMT0MgX19hbGxvY2EKLS0jICAgZWxpZiBkZWZpbmVkIF9NU0NfVkVSCi0tIyAgICBpbmNs
dWRlIDxtYWxsb2MuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotLSMgICAg
ZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0tIyAgIGVsc2UKLS0jICAgIGRlZmluZSBZWVNUQUNLX0FM
TE9DIGFsbG9jYQotLSMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQgRVhJ
VF9TVUNDRVNTCi0tIyAgICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VS
IE5BTUUgU1BBQ0UgKi8KLS0gICAgICAvKiBVc2UgRVhJVF9TVUNDRVNTIGFzIGEgd2l0bmVzcyBm
b3Igc3RkbGliLmguICAqLwotLSMgICAgIGlmbmRlZiBFWElUX1NVQ0NFU1MKLS0jICAgICAgZGVm
aW5lIEVYSVRfU1VDQ0VTUyAwCi0tIyAgICAgZW5kaWYKLS0jICAgIGVuZGlmCi0tIyAgIGVuZGlm
Ci0tIyAgZW5kaWYKLS0jIGVuZGlmXV0pXSlbCi0tCi0tIyBpZmRlZiBZWVNUQUNLX0FMTE9DCi0t
ICAgLyogUGFjaWZ5IEdDQydzICdlbXB0eSBpZi1ib2R5JyB3YXJuaW5nLiAgKi8KLS0jICBkZWZp
bmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAqLzsgfSB3aGlsZSAoMCkKLS0jICBp
Zm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCi0tICAgIC8qIFRoZSBPUyBtaWdodCBndWFyYW50
ZWUgb25seSBvbmUgZ3VhcmQgcGFnZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjaywKLS0gICAg
ICAgYW5kIGEgcGFnZSBzaXplIGNhbiBiZSBhcyBzbWFsbCBhcyA0MDk2IGJ5dGVzLiAgU28gd2Ug
Y2Fubm90IHNhZmVseQotLSAgICAgICBpbnZva2UgYWxsb2NhIChOKSBpZiBOIGV4Y2VlZHMgNDA5
Ni4gIFVzZSBhIHNsaWdodGx5IHNtYWxsZXIgbnVtYmVyCi0tICAgICAgIHRvIGFsbG93IGZvciBh
IGZldyBjb21waWxlci1hbGxvY2F0ZWQgdGVtcG9yYXJ5IHN0YWNrIHNsb3RzLiAgKi8KLS0jICAg
ZGVmaW5lIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSA0MDMyIC8qIHJlYXNvbmFibGUgY2lyY2EgMjAw
NiAqLwotLSMgIGVuZGlmCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgWVlNQUxM
T0MKLS0jICBkZWZpbmUgWVlTVEFDS19GUkVFIFlZRlJFRQotLSMgIGlmbmRlZiBZWVNUQUNLX0FM
TE9DX01BWElNVU0KLS0jICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSBZWVNJWkVfTUFY
SU1VTQotLSMgIGVuZGlmCi0tIyAgaWYgKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgISBkZWZpbmVk
IEVYSVRfU1VDQ0VTUyBcCi0tICAgICAgICYmICEgKChkZWZpbmVkIFlZTUFMTE9DIHx8IGRlZmlu
ZWQgbWFsbG9jKSBcCi0tICAgICAgICAgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVk
IGZyZWUpKSkKLS0jICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5B
TUUgU1BBQ0UgKi8KLS0jICAgaWZuZGVmIEVYSVRfU1VDQ0VTUwotLSMgICAgZGVmaW5lIEVYSVRf
U1VDQ0VTUyAwCi0tIyAgIGVuZGlmCi0tIyAgZW5kaWYKLS0jICBpZm5kZWYgWVlNQUxMT0MKLS0j
ICAgZGVmaW5lIFlZTUFMTE9DIG1hbGxvYwotLSMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEg
ZGVmaW5lZCBFWElUX1NVQ0NFU1MKLS12b2lkICptYWxsb2MgKFlZU0laRV9UKTsgLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotLSMgICBlbmRpZgotLSMgIGVuZGlmCi0tIyAgaWZu
ZGVmIFlZRlJFRQotLSMgICBkZWZpbmUgWVlGUkVFIGZyZWUKLS0jICAgaWYgISBkZWZpbmVkIGZy
ZWUgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUwotLXZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5G
UklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotLSMgICBlbmRpZgotLSMgIGVuZGlmCi0tIyBl
bmRpZl1iNF9sYWNfaWYoW1sKLS0jIGRlZmluZSBZWUNPUFlfTkVFREVEIDFdXSlbCi0tI2VuZGlm
XWI0X2xhY19pZihbXSwgW1sgLyogISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJC
T1NFICovXV0pWwotLQotLQotLSNpZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAotLSAgICAgJiYg
KCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0tICAgICAgICAgfHwgKF1iNF9sb2NhdGlvbnNfaWYo
W1tkZWZpbmVkIF1iNF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwgJiYgXWI0X2FwaV9QUkVG
SVhbTFRZUEVfSVNfVFJJVklBTCBcCi0tICAgICAgICAgICAgICYmIF1dKVtkZWZpbmVkIF1iNF9h
cGlfUFJFRklYW1NUWVBFX0lTX1RSSVZJQUwgJiYgXWI0X2FwaV9QUkVGSVhbU1RZUEVfSVNfVFJJ
VklBTCkpKQotLQotLS8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBz
dGFjayBtZW1iZXIuICAqLwotLXVuaW9uIHl5YWxsb2MKLS17Ci0tICB5eXR5cGVfaW50MTYgeXlz
c19hbGxvYzsKLS0gIFlZU1RZUEUgeXl2c19hbGxvYztdYjRfbG9jYXRpb25zX2lmKFsKLS0gIFlZ
TFRZUEUgeXlsc19hbGxvYztdKVsKLS19OwotLQotLS8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVt
IGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCi0tIyBkZWZp
bmUgWVlTVEFDS19HQVBfTUFYSU1VTSAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCi0tCi0t
LyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxsIHN0YWNr
cywgZWFjaCB3aXRoCi0tICAgTiBlbGVtZW50cy4gICovCi0tXWI0X2xvY2F0aW9uc19pZigKLS1b
IyBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0tICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBl
X2ludDE2KSArIHNpemVvZiAoWVlTVFlQRSkgKyBzaXplb2YgKFlZTFRZUEUpKSBcCi0tICAgICAg
KyAyICogWVlTVEFDS19HQVBfTUFYSU1VTSldLAotLVsjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4p
IFwKLS0gICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9mIChZWVNUWVBF
KSkgXAotLSAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSldKVsKLS0KLS0jIGRlZmluZSBZWUNP
UFlfTkVFREVEIDEKLS0KLS0vKiBSZWxvY2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24g
dG8gdGhlIG5ldyBvbmUuICBUaGUKLS0gICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNU
QUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKLS0gICBlbGVtZW50cyBpbiB0
aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQotLSAgIHN0
YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRo
ZSBuZXh0Ci0tICAgc3RhY2suICAqLwotLSMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2tf
YWxsb2MsIFN0YWNrKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgZG8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0tICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgWVlTSVpFX1QgeXluZXdieXRlczsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIFlZQ09Q
WSAoJnl5cHRyLT5TdGFja19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7ICAgICAgICAgICAgICAgICAg
ICBcCi0tICAgICAgICBTdGFjayA9ICZ5eXB0ci0+U3RhY2tfYWxsb2M7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgeXluZXdieXRlcyA9IHl5c3RhY2tzaXpl
ICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYSU1VTTsgXAotLSAgICAgICAgeXlw
dHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAoKnl5cHRyKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLS0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHdoaWxlICgwKQotLQotLSNlbmRpZgotLQot
LSNpZiBkZWZpbmVkIFlZQ09QWV9ORUVERUQgJiYgWVlDT1BZX05FRURFRAotLS8qIENvcHkgQ09V
TlQgb2JqZWN0cyBmcm9tIFNSQyB0byBEU1QuICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBk
bwotLSAgIG5vdCBvdmVybGFwLiAgKi8KLS0jIGlmbmRlZiBZWUNPUFkKLS0jICBpZiBkZWZpbmVk
IF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXwotLSMgICBkZWZpbmUgWVlDT1BZKERzdCwgU3JjLCBD
b3VudCkgXAotLSAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKERzdCwgU3JjLCAoQ291bnQpICogc2l6
ZW9mICgqKFNyYykpKQotLSMgIGVsc2UKLS0jICAgZGVmaW5lIFlZQ09QWShEc3QsIFNyYywgQ291
bnQpICAgICAgICAgICAgICBcCi0tICAgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLS0gICAgICAgICAgWVlTSVpFX1QgeXlpOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0tICAgICAgICAgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKyspICAgXAot
LSAgICAgICAgICAgIChEc3QpW3l5aV0gPSAoU3JjKVt5eWldOyAgICAgICAgICAgIFwKLS0gICAg
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgd2hp
bGUgKDApCi0tIyAgZW5kaWYKLS0jIGVuZGlmCi0tI2VuZGlmIC8qICFZWUNPUFlfTkVFREVEICov
Ci0tCi0tLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRl
LiAgKi8KLS0jZGVmaW5lIFlZRklOQUwgIF1iNF9maW5hbF9zdGF0ZV9udW1iZXJbCi0tLyogWVlM
QVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCi0tI2RlZmluZSBZWUxBU1QgICBdYjRf
bGFzdFsKLS0KLS0vKiBZWU5UT0tFTlMgLS0gTnVtYmVyIG9mIHRlcm1pbmFscy4gICovCi0tI2Rl
ZmluZSBZWU5UT0tFTlMgIF1iNF90b2tlbnNfbnVtYmVyWwotLS8qIFlZTk5UUyAtLSBOdW1iZXIg
b2Ygbm9udGVybWluYWxzLiAgKi8KLS0jZGVmaW5lIFlZTk5UUyAgXWI0X250ZXJtc19udW1iZXJb
Ci0tLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLS0jZGVmaW5lIFlZTlJVTEVT
ICBdYjRfcnVsZXNfbnVtYmVyWwotLS8qIFlZTlNUQVRFUyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAg
Ki8KLS0jZGVmaW5lIFlZTlNUQVRFUyAgXWI0X3N0YXRlc19udW1iZXJbCi0tCi0tI2RlZmluZSBZ
WVVOREVGVE9LICBdYjRfdW5kZWZfdG9rZW5fbnVtYmVyWwotLSNkZWZpbmUgWVlNQVhVVE9LICAg
XWI0X3VzZXJfdG9rZW5fbnVtYmVyX21heFsKLS0KLS0vKiBZWVRSQU5TTEFURShUT0tFTi1OVU0p
IC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBUT0tFTi1OVU0KLS0gICBhcyByZXR1
cm5lZCBieSB5eWxleCwgd2l0aCBvdXQtb2YtYm91bmRzIGNoZWNraW5nLiAgKi8KLS0jZGVmaW5l
IFlZVFJBTlNMQVRFKFlZWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0tICAoKHVuc2lnbmVkKSAoWVlYKSA8PSBZWU1BWFVUT0sgPyB5eXRyYW5zbGF0
ZVtZWVhdIDogWVlVTkRFRlRPSykKLS0KLS0vKiBZWVRSQU5TTEFURVtUT0tFTi1OVU1dIC0tIFN5
bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBUT0tFTi1OVU0KLS0gICBhcyByZXR1cm5lZCBi
eSB5eWxleC4gICovCi0tc3RhdGljIGNvbnN0IF1iNF9pbnRfdHlwZV9mb3IoW2I0X3RyYW5zbGF0
ZV0pWyB5eXRyYW5zbGF0ZVtdID0KLS17Ci0tICBdYjRfdHJhbnNsYXRlWwotLX07Ci0tCi0tI2lm
IF1iNF9hcGlfUFJFRklYW0RFQlVHCi0tXWI0X2ludGVncmFsX3BhcnNlcl90YWJsZV9kZWZpbmUo
W3JsaW5lXSwgW2I0X3JsaW5lXSwKLS0gICAgIFtbWVlSTElORVtZWU5dIC0tIFNvdXJjZSBsaW5l
IHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC5dXSlbCi0tI2VuZGlmCi0tCi0tI2lm
IF1iNF9hcGlfUFJFRklYW0RFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCBdYjRfdG9rZW5fdGFi
bGVfZmxhZ1sKLS0vKiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBz
eW1ib2wgU1lNQk9MLU5VTS4KLS0gICBGaXJzdCwgdGhlIHRlcm1pbmFscywgdGhlbiwgc3RhcnRp
bmcgYXQgWVlOVE9LRU5TLCBub250ZXJtaW5hbHMuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpj
b25zdCB5eXRuYW1lW10gPQotLXsKLS0gIF1iNF90bmFtZVsKLS19OwotLSNlbmRpZgotLQotLSMg
aWZkZWYgWVlQUklOVAotLS8qIFlZVE9LTlVNW05VTV0gLS0gKEV4dGVybmFsKSB0b2tlbiBudW1i
ZXIgY29ycmVzcG9uZGluZyB0byB0aGUKLS0gICAoaW50ZXJuYWwpIHN5bWJvbCBudW1iZXIgTlVN
ICh3aGljaCBtdXN0IGJlIHRoYXQgb2YgYSB0b2tlbikuICAqLwotLXN0YXRpYyBjb25zdCBdYjRf
aW50X3R5cGVfZm9yKFtiNF90b2tudW1dKVsgeXl0b2tudW1bXSA9Ci0tewotLSAgXWI0X3Rva251
bVsKLS19OwotLSMgZW5kaWYKLS0KLS0jZGVmaW5lIFlZUEFDVF9OSU5GIF1iNF9wYWN0X25pbmZb
Ci0tCi0tI2RlZmluZSB5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCi0tICBdYjRf
dGFibGVfdmFsdWVfZXF1YWxzKFtbcGFjdF1dLCBbW1l5c3RhdGVdXSwgW2I0X3BhY3RfbmluZl0p
WwotLQotLSNkZWZpbmUgWVlUQUJMRV9OSU5GIF1iNF90YWJsZV9uaW5mWwotLQotLSNkZWZpbmUg
eXl0YWJsZV92YWx1ZV9pc19lcnJvcihZeXRhYmxlX3ZhbHVlKSBcCi0tICBdYjRfdGFibGVfdmFs
dWVfZXF1YWxzKFtbdGFibGVdXSwgW1tZeXRhYmxlX3ZhbHVlXV0sIFtiNF90YWJsZV9uaW5mXSlb
Ci0tCi0tXWI0X3BhcnNlcl90YWJsZXNfZGVmaW5lWwotLQotLSNkZWZpbmUgeXllcnJvayAgICAg
ICAgICh5eWVycnN0YXR1cyA9IDApCi0tI2RlZmluZSB5eWNsZWFyaW4gICAgICAgKHl5Y2hhciA9
IFlZRU1QVFkpCi0tI2RlZmluZSBZWUVNUFRZICAgICAgICAgKC0yKQotLSNkZWZpbmUgWVlFT0Yg
ICAgICAgICAgIDAKLS0KLS0jZGVmaW5lIFlZQUNDRVBUICAgICAgICBnb3RvIHl5YWNjZXB0bGFi
Ci0tI2RlZmluZSBZWUFCT1JUICAgICAgICAgZ290byB5eWFib3J0bGFiCi0tI2RlZmluZSBZWUVS
Uk9SICAgICAgICAgZ290byB5eWVycm9ybGFiCi0tCi0tCi0tI2RlZmluZSBZWVJFQ09WRVJJTkco
KSAgKCEheXllcnJzdGF0dXMpCi0tCi0tI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgZG8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgaWYg
KHl5Y2hhciA9PSBZWUVNUFRZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0tICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotLSAgICAgICAgeXljaGFyID0gKFRva2VuKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHl5bHZhbCA9IChWYWx1ZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICBZWVBP
UFNUQUNLICh5eWxlbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
LSAgICAgICAgeXlzdGF0ZSA9ICp5eXNzcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFxdYjRfbGFjX2lmKFtbCi0tICAgICAgICBZWV9MQUNfRElTQ0FSRCAoIllZQkFD
S1VQIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF1dKVsKLS0gICAgICAgIGdvdG8g
eXliYWNrdXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0t
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotLSAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICB5eWVycm9yIChd
YjRfeXllcnJvcl9hcmdzW1lZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsgXAot
LSAgICAgICAgWVlFUlJPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLS0gICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0tICB3aGlsZSAoMCkKLS0KLS0vKiBFcnJvciB0b2tl
biBudW1iZXIgKi8KLS0jZGVmaW5lIFlZVEVSUk9SICAgICAgICAxCi0tI2RlZmluZSBZWUVSUkNP
REUgICAgICAgMjU2Ci0tCi0tXWI0X2xvY2F0aW9uc19pZihbWwotLV1iNF95eWxsb2NfZGVmYXVs
dF9kZWZpbmVbCi0tI2RlZmluZSBZWVJIU0xPQyhSaHMsIEspICgoUmhzKVtLXSkKLS1dXSlbCi0t
Ci0tLyogRW5hYmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwotLSNpZiBdYjRfYXBpX1BS
RUZJWFtERUJVRwotLQotLSMgaWZuZGVmIFlZRlBSSU5URgotLSMgIGluY2x1ZGUgPHN0ZGlvLmg+
IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLS0jICBkZWZpbmUgWVlGUFJJTlRG
IGZwcmludGYKLS0jIGVuZGlmCi0tCi0tIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpICAgICAgICAg
ICAgICAgICAgICAgICAgXAotLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLS0gIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0tICAgIFlZRlBSSU5URiBBcmdzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotLX0gd2hpbGUgKDApCi0tCi0tXWI0X3l5X2xvY2F0aW9uX3ByaW50X2RlZmluZVsKLS0KLS0j
IGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBMb2NhdGlvbikgICAg
ICAgICAgICAgICAgICAgIFwKLS1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gIGlmICh5eWRlYnVnKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIs
IFRpdGxlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICB5eV9z
eW1ib2xfcHJpbnQgKHN0ZGVyciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICBUeXBlLCBWYWx1ZV1iNF9sb2NhdGlvbnNfaWYo
WywgTG9jYXRpb25dKVtdYjRfdXNlcl9hcmdzWyk7IFwKLS0gICAgICBZWUZQUklOVEYgKHN0ZGVy
ciwgIlxuIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0g
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLS19IHdoaWxlICgwKQotLQotLV1iNF95eV9zeW1ib2xfcHJpbnRf
ZGVmaW5lWwotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlfc3RhY2tfcHJpbnQgLS0gUHJpbnQgdGhl
IHN0YXRlIHN0YWNrIGZyb20gaXRzIEJPVFRPTSB1cCB0byBpdHMgfAotLXwgVE9QIChpbmNsdWRl
ZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
LWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLwotLQotLV1iNF9mdW5jdGlvbl9kZWZpbmUoW3l5X3N0YWNrX3ByaW50XSwg
W3N0YXRpYyB2b2lkXSwKLS0gICAgICAgICAgICAgICAgICAgW1t5eXR5cGVfaW50MTYgKnl5Ym90
dG9tXSwgW3l5Ym90dG9tXV0sCi0tICAgICAgICAgICAgICAgICAgIFtbeXl0eXBlX2ludDE2ICp5
eXRvcF0sICAgIFt5eXRvcF1dKVsKLS17Ci0tICBZWUZQUklOVEYgKHN0ZGVyciwgIlN0YWNrIG5v
dyIpOwotLSAgZm9yICg7IHl5Ym90dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQotLSAgICB7Ci0t
ICAgICAgaW50IHl5Ym90ID0gKnl5Ym90dG9tOwotLSAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi
ICVkIiwgeXlib3QpOwotLSAgICB9Ci0tICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7Ci0tfQot
LQotLSMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwgVG9wKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0tZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLS0gIGlmICh5eWRlYnVnKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB5eV9zdGFja19wcmludCAo
KEJvdHRvbSksIChUb3ApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tfSB3aGlsZSAo
MCkKLS0KLS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS4KLS18IFJlcG9ydCB0aGF0IHRoZSBZWVJVTEUgaXMgZ29pbmcgdG8gYmUgcmVkdWNlZC4g
IHwKLS1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
LS0KLS1dYjRfZnVuY3Rpb25fZGVmaW5lKFt5eV9yZWR1Y2VfcHJpbnRdLCBbc3RhdGljIHZvaWRd
LAotLSAgICAgICAgICAgICAgICAgICBbW3l5dHlwZV9pbnQxNiAqeXlzc3BdLCBbeXlzc3BdXSwK
LS0gICAgICAgICAgICAgICAgICAgW1tZWVNUWVBFICp5eXZzcF0sIFt5eXZzcF1dLAotLSAgICBi
NF9sb2NhdGlvbnNfaWYoW1tbWVlMVFlQRSAqeXlsc3BdLCBbeXlsc3BdXSwKLS0gICAgICAgICAg
ICAgICAgICAgXSlbW2ludCB5eXJ1bGVdLCBbeXlydWxlXV1tNF9pZnNldChbYjRfcGFyc2VfcGFy
YW1dLCBbLAotLSAgICAgICAgICAgICAgICAgICBiNF9wYXJzZV9wYXJhbV0pKVsKLS17Ci0tICB1
bnNpZ25lZCBsb25nIHl5bG5vID0geXlybGluZVt5eXJ1bGVdOwotLSAgaW50IHl5bnJocyA9IHl5
cjJbeXlydWxlXTsKLS0gIGludCB5eWk7Ci0tICBZWUZQUklOVEYgKHN0ZGVyciwgIlJlZHVjaW5n
IHN0YWNrIGJ5IHJ1bGUgJWQgKGxpbmUgJWx1KTpcbiIsCi0tICAgICAgICAgICAgIHl5cnVsZSAt
IDEsIHl5bG5vKTsKLS0gIC8qIFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQuICAqLwotLSAgZm9y
ICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQotLSAgICB7Ci0tICAgICAgWVlGUFJJTlRG
IChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKLS0gICAgICB5eV9zeW1ib2xfcHJpbnQg
KHN0ZGVyciwKLS0gICAgICAgICAgICAgICAgICAgICAgIHl5c3Rvc1t5eXNzcFt5eWkgKyAxIC0g
eXlucmhzXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAmXWI0X3Joc192YWx1ZSh5eW5yaHMs
IHl5aSArIDEpWwotLSAgICAgICAgICAgICAgICAgICAgICAgXWI0X2xvY2F0aW9uc19pZihbLCAm
XWI0X3Joc19sb2NhdGlvbih5eW5yaHMsIHl5aSArIDEpKVtdZG5sCi0tICAgICAgICAgICAgICAg
ICAgICAgICBiNF91c2VyX2FyZ3NbKTsKLS0gICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7
Ci0tICAgIH0KLS19Ci0tCi0tIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpICAgICAgICAg
IFwKLS1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgaWYgKHl5
ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHl5X3JlZHVjZV9wcmludCAo
eXlzc3AsIHl5dnNwLCBdYjRfbG9jYXRpb25zX2lmKFt5eWxzcCwgXSlbUnVsZV1iNF91c2VyX2Fy
Z3NbKTsgXAotLX0gd2hpbGUgKDApCi0tCi0tLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0
cmFjZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0Ci0tICAgbXVsdGlwbGUgcGFy
c2VycyBjYW4gY29leGlzdC4gICovCi0taW50IHl5ZGVidWc7Ci0tI2Vsc2UgLyogIV1iNF9hcGlf
UFJFRklYW0RFQlVHICovCi0tIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCi0tIyBkZWZpbmUgWVlf
U1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pCi0tIyBkZWZpbmUgWVlf
U1RBQ0tfUFJJTlQoQm90dG9tLCBUb3ApCi0tIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUp
Ci0tI2VuZGlmIC8qICFdYjRfYXBpX1BSRUZJWFtERUJVRyAqLwotLQotLQotLS8qIFlZSU5JVERF
UFRIIC0tIGluaXRpYWwgc2l6ZSBvZiB0aGUgcGFyc2VyJ3Mgc3RhY2tzLiAgKi8KLS0jaWZuZGVm
IFlZSU5JVERFUFRICi0tIyBkZWZpbmUgWVlJTklUREVQVEggXWI0X3N0YWNrX2RlcHRoX2luaXRb
Ci0tI2VuZGlmCi0tCi0tLyogWVlNQVhERVBUSCAtLSBtYXhpbXVtIHNpemUgdGhlIHN0YWNrcyBj
YW4gZ3JvdyB0byAoZWZmZWN0aXZlIG9ubHkKLS0gICBpZiB0aGUgYnVpbHQtaW4gc3RhY2sgZXh0
ZW5zaW9uIG1ldGhvZCBpcyB1c2VkKS4KLS0KLS0gICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRv
byBsYXJnZTsgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZgotLSAgIFlZU1RBQ0tfQUxMT0Nf
TUFYSU1VTSA8IFlZU1RBQ0tfQllURVMgKFlZTUFYREVQVEgpCi0tICAgZXZhbHVhdGVkIHdpdGgg
aW5maW5pdGUtcHJlY2lzaW9uIGludGVnZXIgYXJpdGhtZXRpYy4gICovCi0tCi0tI2lmbmRlZiBZ
WU1BWERFUFRICi0tIyBkZWZpbmUgWVlNQVhERVBUSCBdYjRfc3RhY2tfZGVwdGhfbWF4WwotLSNl
bmRpZl1iNF9sYWNfaWYoW1sKLS0KLS0vKiBHaXZlbiBhIHN0YXRlIHN0YWNrIHN1Y2ggdGhhdCAq
WVlCT1RUT00gaXMgaXRzIGJvdHRvbSwgc3VjaCB0aGF0Ci0tICAgKllZVE9QIGlzIGVpdGhlciBp
dHMgdG9wIG9yIGlzIFlZVE9QX0VNUFRZIHRvIGluZGljYXRlIGFuIGVtcHR5Ci0tICAgc3RhY2ss
IGFuZCBzdWNoIHRoYXQgKllZQ0FQQUNJVFkgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1l
bnRzIGl0Ci0tICAgY2FuIGhvbGQgd2l0aG91dCBhIHJlYWxsb2NhdGlvbiwgbWFrZSBzdXJlIHRo
ZXJlIGlzIGVub3VnaCByb29tIHRvCi0tICAgc3RvcmUgWVlBREQgbW9yZSBlbGVtZW50cy4gIElm
IG5vdCwgYWxsb2NhdGUgYSBuZXcgc3RhY2sgdXNpbmcKLS0gICBZWVNUQUNLX0FMTE9DLCBjb3B5
IHRoZSBleGlzdGluZyBlbGVtZW50cywgYW5kIGFkanVzdCAqWVlCT1RUT00sCi0tICAgKllZVE9Q
LCBhbmQgKllZQ0FQQUNJVFkgdG8gcmVmbGVjdCB0aGUgbmV3IGNhcGFjaXR5IGFuZCBtZW1vcnkK
LS0gICBsb2NhdGlvbi4gIElmICpZWUJPVFRPTSAhPSBZWUJPVFRPTV9OT19GUkVFLCB0aGVuIGZy
ZWUgdGhlIG9sZCBzdGFjawotLSAgIHVzaW5nIFlZU1RBQ0tfRlJFRS4gIFJldHVybiAwIGlmIHN1
Y2Nlc3NmdWwgb3IgaWYgbm8gcmVhbGxvY2F0aW9uIGlzCi0tICAgcmVxdWlyZWQuICBSZXR1cm4g
MSBpZiBtZW1vcnkgaXMgZXhoYXVzdGVkLiAgKi8KLS1zdGF0aWMgaW50Ci0teXlfbGFjX3N0YWNr
X3JlYWxsb2MgKFlZU0laRV9UICp5eWNhcGFjaXR5LCBZWVNJWkVfVCB5eWFkZCwKLS0jaWYgXWI0
X2FwaV9QUkVGSVhbREVCVUcKLS0gICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAqeXlk
ZWJ1Z19wcmVmaXgsCi0tICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKnl5ZGVidWdf
c3VmZml4LAotLSNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICB5eXR5cGVfaW50MTYgKip5
eWJvdHRvbSwKLS0gICAgICAgICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRvbV9u
b19mcmVlLAotLSAgICAgICAgICAgICAgICAgICAgICB5eXR5cGVfaW50MTYgKip5eXRvcCwgeXl0
eXBlX2ludDE2ICp5eXRvcF9lbXB0eSkKLS17Ci0tICBZWVNJWkVfVCB5eXNpemVfb2xkID0KLS0g
ICAgKFlZU0laRV9UKSAoKnl5dG9wID09IHl5dG9wX2VtcHR5ID8gMCA6ICp5eXRvcCAtICp5eWJv
dHRvbSArIDEpOwotLSAgWVlTSVpFX1QgeXlzaXplX25ldyA9IHl5c2l6ZV9vbGQgKyB5eWFkZDsK
LS0gIGlmICgqeXljYXBhY2l0eSA8IHl5c2l6ZV9uZXcpCi0tICAgIHsKLS0gICAgICBZWVNJWkVf
VCB5eWFsbG9jID0gMiAqIHl5c2l6ZV9uZXc7Ci0tICAgICAgeXl0eXBlX2ludDE2ICp5eWJvdHRv
bV9uZXc7Ci0tICAgICAgLyogVXNlIFlZTUFYREVQVEggZm9yIG1heGltdW0gc3RhY2sgc2l6ZSBn
aXZlbiB0aGF0IHRoZSBzdGFjawotLSAgICAgICAgIHNob3VsZCBuZXZlciBuZWVkIHRvIGdyb3cg
bGFyZ2VyIHRoYW4gdGhlIG1haW4gc3RhdGUgc3RhY2sKLS0gICAgICAgICBuZWVkcyB0byBncm93
IHdpdGhvdXQgTEFDLiAgKi8KLS0gICAgICBpZiAoWVlNQVhERVBUSCA8IHl5c2l6ZV9uZXcpCi0t
ICAgICAgICB7Ci0tICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiVzbWF4IHNpemUgZXhj
ZWVkZWQlcyIsIHl5ZGVidWdfcHJlZml4LAotLSAgICAgICAgICAgICAgICAgICAgICB5eWRlYnVn
X3N1ZmZpeCkpOwotLSAgICAgICAgICByZXR1cm4gMTsKLS0gICAgICAgIH0KLS0gICAgICBpZiAo
WVlNQVhERVBUSCA8IHl5YWxsb2MpCi0tICAgICAgICB5eWFsbG9jID0gWVlNQVhERVBUSDsKLS0g
ICAgICB5eWJvdHRvbV9uZXcgPQotLSAgICAgICAgKHl5dHlwZV9pbnQxNiopIFlZU1RBQ0tfQUxM
T0MgKHl5YWxsb2MgKiBzaXplb2YgKnl5Ym90dG9tX25ldyk7Ci0tICAgICAgaWYgKCF5eWJvdHRv
bV9uZXcpCi0tICAgICAgICB7Ci0tICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiVzcmVh
bGxvYyBmYWlsZWQlcyIsIHl5ZGVidWdfcHJlZml4LAotLSAgICAgICAgICAgICAgICAgICAgICB5
eWRlYnVnX3N1ZmZpeCkpOwotLSAgICAgICAgICByZXR1cm4gMTsKLS0gICAgICAgIH0KLS0gICAg
ICBpZiAoKnl5dG9wICE9IHl5dG9wX2VtcHR5KQotLSAgICAgICAgewotLSAgICAgICAgICBZWUNP
UFkgKHl5Ym90dG9tX25ldywgKnl5Ym90dG9tLCB5eXNpemVfb2xkKTsKLS0gICAgICAgICAgKnl5
dG9wID0geXlib3R0b21fbmV3ICsgKHl5c2l6ZV9vbGQgLSAxKTsKLS0gICAgICAgIH0KLS0gICAg
ICBpZiAoKnl5Ym90dG9tICE9IHl5Ym90dG9tX25vX2ZyZWUpCi0tICAgICAgICBZWVNUQUNLX0ZS
RUUgKCp5eWJvdHRvbSk7Ci0tICAgICAgKnl5Ym90dG9tID0geXlib3R0b21fbmV3OwotLSAgICAg
ICp5eWNhcGFjaXR5ID0geXlhbGxvYztdbTRfaWYoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbcGFy
c2UubGFjLm1lbW9yeS10cmFjZV1dKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtmdWxsXSwgW1sKLS0gICAgICBZWURQUklOVEYgKChzdGRlcnIsICIlc3JlYWxsb2MgdG8g
JWx1JXMiLCB5eWRlYnVnX3ByZWZpeCwKLS0gICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u
ZykgeXlhbGxvYywgeXlkZWJ1Z19zdWZmaXgpKTtdXSlbCi0tICAgIH0KLS0gIHJldHVybiAwOwot
LX0KLS0KLS0vKiBFc3RhYmxpc2ggdGhlIGluaXRpYWwgY29udGV4dCBmb3IgdGhlIGN1cnJlbnQg
bG9va2FoZWFkIGlmIG5vIGluaXRpYWwKLS0gICBjb250ZXh0IGlzIGN1cnJlbnRseSBlc3RhYmxp
c2hlZC4KLS0KLS0gICBXZSBkZWZpbmUgYSBjb250ZXh0IGFzIGEgc25hcHNob3Qgb2YgdGhlIHBh
cnNlciBzdGFja3MuICBXZSBkZWZpbmUKLS0gICB0aGUgaW5pdGlhbCBjb250ZXh0IGZvciBhIGxv
b2thaGVhZCBhcyB0aGUgY29udGV4dCBpbiB3aGljaCB0aGUKLS0gICBwYXJzZXIgaW5pdGlhbGx5
IGV4YW1pbmVzIHRoYXQgbG9va2FoZWFkIGluIG9yZGVyIHRvIHNlbGVjdCBhCi0tICAgc3ludGFj
dGljIGFjdGlvbi4gIFRodXMsIGlmIHRoZSBsb29rYWhlYWQgZXZlbnR1YWxseSBwcm92ZXMKLS0g
ICBzeW50YWN0aWNhbGx5IHVuYWNjZXB0YWJsZSAocG9zc2libHkgaW4gYSBsYXRlciBjb250ZXh0
IHJlYWNoZWQgdmlhIGEKLS0gICBzZXJpZXMgb2YgcmVkdWN0aW9ucyksIHRoZSBpbml0aWFsIGNv
bnRleHQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lCi0tICAgdGhlIGV4YWN0IHNldCBvZiB0b2tl
bnMgdGhhdCB3b3VsZCBiZSBzeW50YWN0aWNhbGx5IGFjY2VwdGFibGUgaW4gdGhlCi0tICAgbG9v
a2FoZWFkJ3MgcGxhY2UuICBNb3Jlb3ZlciwgaXQgaXMgdGhlIGNvbnRleHQgYWZ0ZXIgd2hpY2gg
YW55Ci0tICAgZnVydGhlciBzZW1hbnRpYyBhY3Rpb25zIHdvdWxkIGJlIGVycm9uZW91cyBiZWNh
dXNlIHRoZXkgd291bGQgYmUKLS0gICBkZXRlcm1pbmVkIGJ5IGEgc3ludGFjdGljYWxseSB1bmFj
Y2VwdGFibGUgdG9rZW4uCi0tCi0tICAgWVlfTEFDX0VTVEFCTElTSCBzaG91bGQgYmUgaW52b2tl
ZCB3aGVuIGEgcmVkdWN0aW9uIGlzIGFib3V0IHRvIGJlCi0tICAgcGVyZm9ybWVkIGluIGFuIGlu
Y29uc2lzdGVudCBzdGF0ZSAod2hpY2gsIGZvciB0aGUgcHVycG9zZXMgb2YgTEFDLAotLSAgIGlu
Y2x1ZGVzIGNvbnNpc3RlbnQgc3RhdGVzIHRoYXQgZG9uJ3Qga25vdyB0aGV5J3JlIGNvbnNpc3Rl
bnQgYmVjYXVzZQotLSAgIHRoZWlyIGRlZmF1bHQgcmVkdWN0aW9ucyBoYXZlIGJlZW4gZGlzYWJs
ZWQpLiAgSWZmIHRoZXJlIGlzIGEKLS0gICBsb29rYWhlYWQgdG9rZW4sIGl0IHNob3VsZCBhbHNv
IGJlIGludm9rZWQgYmVmb3JlIHJlcG9ydGluZyBhIHN5bnRheAotLSAgIGVycm9yLiAgVGhpcyBs
YXR0ZXIgY2FzZSBpcyBmb3IgdGhlIHNha2Ugb2YgdGhlIGRlYnVnZ2luZyBvdXRwdXQuCi0tCi0t
ICAgRm9yIHBhcnNlLmxhYz1mdWxsLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgWVlfTEFDX0VTVEFC
TElTSCBpcyBhcwotLSAgIGZvbGxvd3MuICBJZiBubyBpbml0aWFsIGNvbnRleHQgaXMgY3VycmVu
dGx5IGVzdGFibGlzaGVkIGZvciB0aGUKLS0gICBjdXJyZW50IGxvb2thaGVhZCwgdGhlbiBjaGVj
ayBpZiB0aGF0IGxvb2thaGVhZCBjYW4gZXZlbnR1YWxseSBiZQotLSAgIHNoaWZ0ZWQgaWYgc3lu
dGFjdGljIGFjdGlvbnMgY29udGludWUgZnJvbSB0aGUgY3VycmVudCBjb250ZXh0LgotLSAgIFJl
cG9ydCBhIHN5bnRheCBlcnJvciBpZiBpdCBjYW5ub3QuICAqLwotLSNkZWZpbmUgWVlfTEFDX0VT
VEFCTElTSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLWRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotLSAgaWYgKCF5eV9sYWNfZXN0YWJsaXNoZWQpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgICAg
ICAgICJMQUM6IGluaXRpYWwgY29udGV4dCBlc3RhYmxpc2hlZCBmb3IgJXNcbiIsICAgXAotLSAg
ICAgICAgICAgICAgICAgIHl5dG5hbWVbeXl0b2tlbl0pKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotLSAgICAgIHl5X2xhY19lc3RhYmxpc2hlZCA9IDE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotLSAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgaW50IHl5X2xhY19zdGF0
dXMgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICB5
eV9sYWMgKHl5ZXNhLCAmeXllcywgJnl5ZXNfY2FwYWNpdHksIHl5c3NwLCB5eXRva2VuKTsgXAot
LSAgICAgICAgaWYgKHl5X2xhY19zdGF0dXMgPT0gMikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotLSAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgaWYgKHl5X2xhY19zdGF0dXMgPT0gMSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICBnb3RvIHl5ZXJy
bGFiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotLX0gd2hpbGUgKDApCi0tCi0tLyogRGlzY2FyZCBhbnkgcHJldmlvdXMg
aW5pdGlhbCBsb29rYWhlYWQgY29udGV4dCBiZWNhdXNlIG9mIEV2ZW50LAotLSAgIHdoaWNoIG1h
eSBiZSBhIGxvb2thaGVhZCBjaGFuZ2Ugb3IgYW4gaW52YWxpZGF0aW9uIG9mIHRoZSBjdXJyZW50
bHkKLS0gICBlc3RhYmxpc2hlZCBpbml0aWFsIGNvbnRleHQgZm9yIHRoZSBjdXJyZW50IGxvb2th
aGVhZC4KLS0KLS0gICBUaGUgbW9zdCBjb21tb24gZXhhbXBsZSBvZiBhIGxvb2thaGVhZCBjaGFu
Z2UgaXMgYSBzaGlmdC4gIEFuIGV4YW1wbGUKLS0gICBvZiBib3RoIGNhc2VzIGlzIHN5bnRheCBl
cnJvciByZWNvdmVyeS4gIFRoYXQgaXMsIGEgc3ludGF4IGVycm9yCi0tICAgb2NjdXJzIHdoZW4g
dGhlIGxvb2thaGVhZCBpcyBzeW50YWN0aWNhbGx5IGVycm9uZW91cyBmb3IgdGhlCi0tICAgY3Vy
cmVudGx5IGVzdGFibGlzaGVkIGluaXRpYWwgY29udGV4dCwgc28gZXJyb3IgcmVjb3ZlcnkgbWFu
aXB1bGF0ZXMKLS0gICB0aGUgcGFyc2VyIHN0YWNrcyB0byB0cnkgdG8gZmluZCBhIG5ldyBpbml0
aWFsIGNvbnRleHQgaW4gd2hpY2ggdGhlCi0tICAgY3VycmVudCBsb29rYWhlYWQgaXMgc3ludGFj
dGljYWxseSBhY2NlcHRhYmxlLiAgSWYgaXQgZmFpbHMgdG8gZmluZAotLSAgIHN1Y2ggYSBjb250
ZXh0LCBpdCBkaXNjYXJkcyB0aGUgbG9va2FoZWFkLiAgKi8KLS0jaWYgXWI0X2FwaV9QUkVGSVhb
REVCVUcKLS0jIGRlZmluZSBZWV9MQUNfRElTQ0FSRChFdmVudCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotLWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICBpZiAoeXlf
bGFjX2VzdGFibGlzaGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIGlmICh5eWRlYnVnKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAg
ICBZWUZQUklOVEYgKHN0ZGVyciwgIkxBQzogaW5pdGlhbCBjb250ZXh0IGRpc2NhcmRlZCBkdWUg
dG8gIiAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgRXZlbnQgIlxuIik7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIHl5X2xhY19lc3RhYmxpc2hl
ZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLS19IHdoaWxlICgwKQotLSNlbHNlCi0tIyBkZWZpbmUgWVlfTEFDX0RJ
U0NBUkQoRXZlbnQpIHl5X2xhY19lc3RhYmxpc2hlZCA9IDAKLS0jZW5kaWYKLS0KLS0vKiBHaXZl
biB0aGUgc3RhY2sgd2hvc2UgdG9wIGlzICpZWVNTUCwgcmV0dXJuIDAgaWZmIFlZVE9LRU4gY2Fu
Ci0tICAgZXZlbnR1YWxseSAoYWZ0ZXIgcGVyaGFwcyBzb21lIHJlZHVjdGlvbnMpIGJlIHNoaWZ0
ZWQsIHJldHVybiAxIGlmCi0tICAgbm90LCBvciByZXR1cm4gMiBpZiBtZW1vcnkgaXMgZXhoYXVz
dGVkLiAgQXMgcHJlY29uZGl0aW9ucyBhbmQKLS0gICBwb3N0Y29uZGl0aW9uczogKllZRVNfQ0FQ
QUNJVFkgaXMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBhcnJheSB0bwotLSAgIHdoaWNoICpZ
WUVTIHBvaW50cywgYW5kIGVpdGhlciAqWVlFUyA9IFlZRVNBIG9yICpZWUVTIHBvaW50cyB0byBh
bgotLSAgIGFycmF5IGFsbG9jYXRlZCB3aXRoIFlZU1RBQ0tfQUxMT0MuICB5eV9sYWMgbWF5IG92
ZXJ3cml0ZSB0aGUKLS0gICBjb250ZW50cyBvZiBlaXRoZXIgYXJyYXksIGFsdGVyICpZWUVTIGFu
ZCAqWVlFU19DQVBBQ0lUWSwgYW5kIGZyZWUKLS0gICBhbnkgb2xkICpZWUVTIG90aGVyIHRoYW4g
WVlFU0EuICAqLwotLXN0YXRpYyBpbnQKLS15eV9sYWMgKHl5dHlwZV9pbnQxNiAqeXllc2EsIHl5
dHlwZV9pbnQxNiAqKnl5ZXMsCi0tICAgICAgICBZWVNJWkVfVCAqeXllc19jYXBhY2l0eSwgeXl0
eXBlX2ludDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCi0tewotLSAgeXl0eXBlX2ludDE2ICp5eWVz
X3ByZXYgPSB5eXNzcDsKLS0gIHl5dHlwZV9pbnQxNiAqeXllc3AgPSB5eWVzX3ByZXY7Ci0tICBZ
WURQUklOVEYgKChzdGRlcnIsICJMQUM6IGNoZWNraW5nIGxvb2thaGVhZCAlczoiLCB5eXRuYW1l
W3l5dG9rZW5dKSk7Ci0tICBpZiAoeXl0b2tlbiA9PSBZWVVOREVGVE9LKQotLSAgICB7Ci0tICAg
ICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiIEFsd2F5cyBFcnJcbiIpKTsKLS0gICAgICByZXR1cm4g
MTsKLS0gICAgfQotLSAgd2hpbGUgKDEpCi0tICAgIHsKLS0gICAgICBpbnQgeXlydWxlID0geXlw
YWN0Wyp5eWVzcF07Ci0tICAgICAgaWYgKHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eXJ1bGUp
Ci0tICAgICAgICAgIHx8ICh5eXJ1bGUgKz0geXl0b2tlbikgPCAwIHx8IFlZTEFTVCA8IHl5cnVs
ZQotLSAgICAgICAgICB8fCB5eWNoZWNrW3l5cnVsZV0gIT0geXl0b2tlbikKLS0gICAgICAgIHsK
LS0gICAgICAgICAgeXlydWxlID0geXlkZWZhY3RbKnl5ZXNwXTsKLS0gICAgICAgICAgaWYgKHl5
cnVsZSA9PSAwKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIFlZRFBSSU5URiAoKHN0
ZGVyciwgIiBFcnJcbiIpKTsKLS0gICAgICAgICAgICAgIHJldHVybiAxOwotLSAgICAgICAgICAg
IH0KLS0gICAgICAgIH0KLS0gICAgICBlbHNlCi0tICAgICAgICB7Ci0tICAgICAgICAgIHl5cnVs
ZSA9IHl5dGFibGVbeXlydWxlXTsKLS0gICAgICAgICAgaWYgKHl5dGFibGVfdmFsdWVfaXNfZXJy
b3IgKHl5cnVsZSkpCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiIEVyclxuIikpOwotLSAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0tICAgICAgICAg
ICAgfQotLSAgICAgICAgICBpZiAoMCA8IHl5cnVsZSkKLS0gICAgICAgICAgICB7Ci0tICAgICAg
ICAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICIgUyVkXG4iLCB5eXJ1bGUpKTsKLS0gICAgICAg
ICAgICAgIHJldHVybiAwOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgeXlydWxlID0gLXl5
cnVsZTsKLS0gICAgICAgIH0KLS0gICAgICB7Ci0tICAgICAgICBZWVNJWkVfVCB5eWxlbiA9IHl5
cjJbeXlydWxlXTsKLS0gICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBSJWQiLCB5eXJ1bGUg
LSAxKSk7Ci0tICAgICAgICBpZiAoeXllc3AgIT0geXllc19wcmV2KQotLSAgICAgICAgICB7Ci0t
ICAgICAgICAgICAgWVlTSVpFX1QgeXlzaXplID0gKFlZU0laRV9UKSAoeXllc3AgLSAqeXllcyAr
IDEpOwotLSAgICAgICAgICAgIGlmICh5eWxlbiA8IHl5c2l6ZSkKLS0gICAgICAgICAgICAgIHsK
LS0gICAgICAgICAgICAgICAgeXllc3AgLT0geXlsZW47Ci0tICAgICAgICAgICAgICAgIHl5bGVu
ID0gMDsKLS0gICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAg
ICB7Ci0tICAgICAgICAgICAgICAgIHl5bGVuIC09IHl5c2l6ZTsKLS0gICAgICAgICAgICAgICAg
eXllc3AgPSB5eWVzX3ByZXY7Ci0tICAgICAgICAgICAgICB9Ci0tICAgICAgICAgIH0KLS0gICAg
ICAgIGlmICh5eWxlbikKLS0gICAgICAgICAgeXllc3AgPSB5eWVzX3ByZXYgLT0geXlsZW47Ci0t
ICAgICAgfQotLSAgICAgIHsKLS0gICAgICAgIHl5dHlwZV9pbnQxNiB5eXN0YXRlOwotLSAgICAg
ICAgewotLSAgICAgICAgICBjb25zdCBpbnQgeXlsaHMgPSB5eXIxW3l5cnVsZV0gLSBZWU5UT0tF
TlM7Ci0tICAgICAgICAgIGNvbnN0IGludCB5eWkgPSB5eXBnb3RvW3l5bGhzXSArICp5eWVzcDsK
LS0gICAgICAgICAgeXlzdGF0ZSA9ICgoeXl0eXBlX2ludDE2KQotLSAgICAgICAgICAgICAgICAg
ICAgICgwIDw9IHl5aSAmJiB5eWkgPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXlpXSA9PSAqeXllc3AK
LS0gICAgICAgICAgICAgICAgICAgICAgPyB5eXRhYmxlW3l5aV0KLS0gICAgICAgICAgICAgICAg
ICAgICAgOiB5eWRlZmdvdG9beXlsaHNdKSk7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAoeXll
c3AgPT0geXllc19wcmV2KQotLSAgICAgICAgICB7Ci0tICAgICAgICAgICAgeXllc3AgPSAqeXll
czsKLS0gICAgICAgICAgICAqeXllc3AgPSB5eXN0YXRlOwotLSAgICAgICAgICB9Ci0tICAgICAg
ICBlbHNlCi0tICAgICAgICAgIHsKLS0gICAgICAgICAgICBpZiAoeXlfbGFjX3N0YWNrX3JlYWxs
b2MgKHl5ZXNfY2FwYWNpdHksIDEsCi0tI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHCi0tICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICgiLCAiKSIsCi0tI2VuZGlmCi0tICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWVzLCB5eWVzYSwgJnl5ZXNwLCB5
eWVzX3ByZXYpKQotLSAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBZWURQUklOVEYg
KChzdGRlcnIsICJcbiIpKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDI7Ci0tICAgICAgICAg
ICAgICB9Ci0tICAgICAgICAgICAgKisreXllc3AgPSB5eXN0YXRlOwotLSAgICAgICAgICB9Ci0t
ICAgICAgICBZWURQUklOVEYgKChzdGRlcnIsICIgRyVkIiwgKGludCkgeXlzdGF0ZSkpOwotLSAg
ICAgIH0KLS0gICAgfQotLX1dXSlbCi0tCi0tCi0tI2lmIFlZRVJST1JfVkVSQk9TRQotLQotLSMg
aWZuZGVmIHl5c3RybGVuCi0tIyAgaWYgZGVmaW5lZCBfX0dMSUJDX18gJiYgZGVmaW5lZCBfU1RS
SU5HX0gKLS0jICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgotLSMgIGVsc2UKLS0vKiBSZXR1cm4g
dGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCi0tXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlzdHJsZW5d
LCBbc3RhdGljIFlZU0laRV9UXSwKLS0gICBbW2NvbnN0IGNoYXIgKnl5c3RyXSwgW3l5c3RyXV0p
WwotLXsKLS0gIFlZU0laRV9UIHl5bGVuOwotLSAgZm9yICh5eWxlbiA9IDA7IHl5c3RyW3l5bGVu
XTsgeXlsZW4rKykKLS0gICAgY29udGludWU7Ci0tICByZXR1cm4geXlsZW47Ci0tfQotLSMgIGVu
ZGlmCi0tIyBlbmRpZgotLQotLSMgaWZuZGVmIHl5c3RwY3B5Ci0tIyAgaWYgZGVmaW5lZCBfX0dM
SUJDX18gJiYgZGVmaW5lZCBfU1RSSU5HX0ggJiYgZGVmaW5lZCBfR05VX1NPVVJDRQotLSMgICBk
ZWZpbmUgeXlzdHBjcHkgc3RwY3B5Ci0tIyAgZWxzZQotLS8qIENvcHkgWVlTUkMgdG8gWVlERVNU
LCByZXR1cm5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIHRlcm1pbmF0aW5nICdcMCcgaW4KLS0gICBZ
WURFU1QuICAqLwotLV1iNF9mdW5jdGlvbl9kZWZpbmUoW3l5c3RwY3B5XSwgW3N0YXRpYyBjaGFy
ICpdLAotLSAgIFtbY2hhciAqeXlkZXN0XSwgW3l5ZGVzdF1dLCBbW2NvbnN0IGNoYXIgKnl5c3Jj
XSwgW3l5c3JjXV0pWwotLXsKLS0gIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKLS0gIGNvbnN0IGNoYXIg
Knl5cyA9IHl5c3JjOwotLQotLSAgd2hpbGUgKCgqeXlkKysgPSAqeXlzKyspICE9ICdcMCcpCi0t
ICAgIGNvbnRpbnVlOwotLQotLSAgcmV0dXJuIHl5ZCAtIDE7Ci0tfQotLSMgIGVuZGlmCi0tIyBl
bmRpZgotLQotLSMgaWZuZGVmIHl5dG5hbWVycgotLS8qIENvcHkgdG8gWVlSRVMgdGhlIGNvbnRl
bnRzIG9mIFlZU1RSIGFmdGVyIHN0cmlwcGluZyBhd2F5IHVubmVjZXNzYXJ5Ci0tICAgcXVvdGVz
IGFuZCBiYWNrc2xhc2hlcywgc28gdGhhdCBpdCdzIHN1aXRhYmxlIGZvciB5eWVycm9yLiAgVGhl
Ci0tICAgaGV1cmlzdGljIGlzIHRoYXQgZG91YmxlLXF1b3RpbmcgaXMgdW5uZWNlc3NhcnkgdW5s
ZXNzIHRoZSBzdHJpbmcKLS0gICBjb250YWlucyBhbiBhcG9zdHJvcGhlLCBhIGNvbW1hLCBvciBi
YWNrc2xhc2ggKG90aGVyIHRoYW4KLS0gICBiYWNrc2xhc2gtYmFja3NsYXNoKS4gIFlZU1RSIGlz
IHRha2VuIGZyb20geXl0bmFtZS4gIElmIFlZUkVTIGlzCi0tICAgbnVsbCwgZG8gbm90IGNvcHk7
IGluc3RlYWQsIHJldHVybiB0aGUgbGVuZ3RoIG9mIHdoYXQgdGhlIHJlc3VsdAotLSAgIHdvdWxk
IGhhdmUgYmVlbi4gICovCi0tc3RhdGljIFlZU0laRV9UCi0teXl0bmFtZXJyIChjaGFyICp5eXJl
cywgY29uc3QgY2hhciAqeXlzdHIpCi0tewotLSAgaWYgKCp5eXN0ciA9PSAnIicpCi0tICAgIHsK
LS0gICAgICBZWVNJWkVfVCB5eW4gPSAwOwotLSAgICAgIGNoYXIgY29uc3QgKnl5cCA9IHl5c3Ry
OwotLQotLSAgICAgIGZvciAoOzspCi0tICAgICAgICBzd2l0Y2ggKCorK3l5cCkKLS0gICAgICAg
ICAgewotLSAgICAgICAgICBjYXNlICdcJyc6Ci0tICAgICAgICAgIGNhc2UgJywnOgotLSAgICAg
ICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKLS0KLS0gICAgICAgICAgY2FzZSAnXFwn
OgotLSAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKLS0gICAgICAgICAgICAgIGdvdG8g
ZG9fbm90X3N0cmlwX3F1b3RlczsKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICBn
b3RvIGFwcGVuZDsKLS0KLS0gICAgICAgICAgYXBwZW5kOgotLSAgICAgICAgICBkZWZhdWx0Ogot
LSAgICAgICAgICAgIGlmICh5eXJlcykKLS0gICAgICAgICAgICAgIHl5cmVzW3l5bl0gPSAqeXlw
OwotLSAgICAgICAgICAgIHl5bisrOwotLSAgICAgICAgICAgIGJyZWFrOwotLQotLSAgICAgICAg
ICBjYXNlICciJzoKLS0gICAgICAgICAgICBpZiAoeXlyZXMpCi0tICAgICAgICAgICAgICB5eXJl
c1t5eW5dID0gJ1wwJzsKLS0gICAgICAgICAgICByZXR1cm4geXluOwotLSAgICAgICAgICB9Ci0t
ICAgIGRvX25vdF9zdHJpcF9xdW90ZXM6IDsKLS0gICAgfQotLQotLSAgaWYgKCEgeXlyZXMpCi0t
ICAgIHJldHVybiB5eXN0cmxlbiAoeXlzdHIpOwotLQotLSAgcmV0dXJuIChZWVNJWkVfVCkgKHl5
c3RwY3B5ICh5eXJlcywgeXlzdHIpIC0geXlyZXMpOwotLX0KLS0jIGVuZGlmCi0tCi0tLyogQ29w
eSBpbnRvICpZWU1TRywgd2hpY2ggaXMgb2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1l
c3NhZ2UKLS0gICBhYm91dCB0aGUgdW5leHBlY3RlZCB0b2tlbiBZWVRPS0VOIGZvciB0aGUgc3Rh
dGUgc3RhY2sgd2hvc2UgdG9wIGlzCi0tICAgWVlTU1AuXWI0X2xhY19pZihbWyAgSW4gb3JkZXIg
dG8gc2VlIGlmIGEgcGFydGljdWxhciB0b2tlbiBUIGlzIGEKLS0gICB2YWxpZCBsb29ha2hlYWQs
IGludm9rZSB5eV9sYWMgKFlZRVNBLCBZWUVTLCBZWUVTX0NBUEFDSVRZLCBZWVNTUCwgVCkuXV0p
WwotLQotLSAgIFJldHVybiAwIGlmICpZWU1TRyB3YXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4uICBS
ZXR1cm4gMSBpZiAqWVlNU0cgaXMKLS0gICBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1l
c3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0Ci0tICAgKllZTVNHX0FMTE9DIHRvIHRoZSBy
ZXF1aXJlZCBudW1iZXIgb2YgYnl0ZXMuICBSZXR1cm4gMiBpZiB0aGUKLS0gICByZXF1aXJlZCBu
dW1iZXIgb2YgYnl0ZXMgaXMgdG9vIGxhcmdlIHRvIHN0b3JlXWI0X2xhY19pZihbWyBvciBpZgot
LSAgIHl5X2xhYyByZXR1cm5lZCAyXV0pWy4gICovCi0tc3RhdGljIGludAotLXl5c3ludGF4X2Vy
cm9yIChZWVNJWkVfVCAqeXltc2dfYWxsb2MsIGNoYXIgKip5eW1zZywKLS0gICAgICAgICAgICAg
ICAgXWI0X2xhY19pZihbW3l5dHlwZV9pbnQxNiAqeXllc2EsIHl5dHlwZV9pbnQxNiAqKnl5ZXMs
Ci0tICAgICAgICAgICAgICAgIFlZU0laRV9UICp5eWVzX2NhcGFjaXR5LCBdXSlbeXl0eXBlX2lu
dDE2ICp5eXNzcCwgaW50IHl5dG9rZW4pCi0tewotLSAgWVlTSVpFX1QgeXlzaXplMCA9IHl5dG5h
bWVyciAoWVlfTlVMTFBUUiwgeXl0bmFtZVt5eXRva2VuXSk7Ci0tICBZWVNJWkVfVCB5eXNpemUg
PSB5eXNpemUwOwotLSAgZW51bSB7IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07
Ci0tICAvKiBJbnRlcm5hdGlvbmFsaXplZCBmb3JtYXQgc3RyaW5nLiAqLwotLSAgY29uc3QgY2hh
ciAqeXlmb3JtYXQgPSBZWV9OVUxMUFRSOwotLSAgLyogQXJndW1lbnRzIG9mIHl5Zm9ybWF0LiAq
LwotLSAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07Ci0t
ICAvKiBOdW1iZXIgb2YgcmVwb3J0ZWQgdG9rZW5zIChvbmUgZm9yIHRoZSAidW5leHBlY3RlZCIs
IG9uZSBwZXIKLS0gICAgICJleHBlY3RlZCIpLiAqLwotLSAgaW50IHl5Y291bnQgPSAwOwotLQot
LSAgLyogVGhlcmUgYXJlIG1hbnkgcG9zc2liaWxpdGllcyBoZXJlIHRvIGNvbnNpZGVyOgotLSAg
ICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBh
Y3Rpb24sIHRoZW4KLS0gICAgICAgdGhlIG9ubHkgd2F5IHRoaXMgZnVuY3Rpb24gd2FzIGludm9r
ZWQgaXMgaWYgdGhlIGRlZmF1bHQgYWN0aW9uCi0tICAgICAgIGlzIGFuIGVycm9yIGFjdGlvbi4g
IEluIHRoYXQgY2FzZSwgZG9uJ3QgY2hlY2sgZm9yIGV4cGVjdGVkCi0tICAgICAgIHRva2VucyBi
ZWNhdXNlIHRoZXJlIGFyZSBub25lLgotLSAgICAgLSBUaGUgb25seSB3YXkgdGhlcmUgY2FuIGJl
IG5vIGxvb2thaGVhZCBwcmVzZW50IChpbiB5eWNoYXIpIGlzIGlmCi0tICAgICAgIHRoaXMgc3Rh
dGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRodXMsCi0t
ICAgICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVhZCBpcyBzdWZmaWNpZW50
IHRvIGRldGVybWluZQotLSAgICAgICB0aGF0IHRoZXJlIGlzIG5vIHVuZXhwZWN0ZWQgb3IgZXhw
ZWN0ZWQgdG9rZW4gdG8gcmVwb3J0LiAgSW4gdGhhdAotLSAgICAgICBjYXNlLCBqdXN0IHJlcG9y
dCBhIHNpbXBsZSAic3ludGF4IGVycm9yIi4KLS0gICAgIC0gRG9uJ3QgYXNzdW1lIHRoZXJlIGlz
bid0IGEgbG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEKLS0gICAgICAgY29u
c2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaGVyZSBtaWdodCBoYXZlIGJl
ZW4gYQotLSAgICAgICBwcmV2aW91cyBpbmNvbnNpc3RlbnQgc3RhdGUsIGNvbnNpc3RlbnQgc3Rh
dGUgd2l0aCBhIG5vbi1kZWZhdWx0Ci0tICAgICAgIGFjdGlvbiwgb3IgdXNlciBzZW1hbnRpYyBh
Y3Rpb24gdGhhdCBtYW5pcHVsYXRlZCB5eWNoYXIuXWI0X2xhY19pZihbWwotLSAgICAgICBJbiB0
aGUgZmlyc3QgdHdvIGNhc2VzLCBpdCBtaWdodCBhcHBlYXIgdGhhdCB0aGUgY3VycmVudCBzeW50
YXgKLS0gICAgICAgZXJyb3Igc2hvdWxkIGhhdmUgYmVlbiBkZXRlY3RlZCBpbiB0aGUgcHJldmlv
dXMgc3RhdGUgd2hlbiB5eV9sYWMKLS0gICAgICAgd2FzIGludm9rZWQuICBIb3dldmVyLCBhdCB0
aGF0IHRpbWUsIHRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBhCi0tICAgICAgIGRpZmZlcmVudCBzeW50
YXggZXJyb3IgdGhhdCBkaXNjYXJkZWQgYSBkaWZmZXJlbnQgaW5pdGlhbCBjb250ZXh0Ci0tICAg
ICAgIGR1cmluZyBlcnJvciByZWNvdmVyeSwgbGVhdmluZyBiZWhpbmQgdGhlIGN1cnJlbnQgbG9v
a2FoZWFkLl1dLCBbWwotLSAgICAgLSBPZiBjb3Vyc2UsIHRoZSBleHBlY3RlZCB0b2tlbiBsaXN0
IGRlcGVuZHMgb24gc3RhdGVzIHRvIGhhdmUKLS0gICAgICAgY29ycmVjdCBsb29rYWhlYWQgaW5m
b3JtYXRpb24sIGFuZCBpdCBkZXBlbmRzIG9uIHRoZSBwYXJzZXIgbm90Ci0tICAgICAgIHRvIHBl
cmZvcm0gZXh0cmEgcmVkdWN0aW9ucyBhZnRlciBmZXRjaGluZyBhIGxvb2thaGVhZCBmcm9tIHRo
ZQotLSAgICAgICBzY2FubmVyIGFuZCBiZWZvcmUgZGV0ZWN0aW5nIGEgc3ludGF4IGVycm9yLiAg
VGh1cywgc3RhdGUgbWVyZ2luZwotLSAgICAgICAoZnJvbSBMQUxSIG9yIElFTFIpIGFuZCBkZWZh
dWx0IHJlZHVjdGlvbnMgY29ycnVwdCB0aGUgZXhwZWN0ZWQKLS0gICAgICAgdG9rZW4gbGlzdC4g
IEhvd2V2ZXIsIHRoZSBsaXN0IGlzIGNvcnJlY3QgZm9yIGNhbm9uaWNhbCBMUiB3aXRoCi0tICAg
ICAgIG9uZSBleGNlcHRpb246IGl0IHdpbGwgc3RpbGwgY29udGFpbiBhbnkgdG9rZW4gdGhhdCB3
aWxsIG5vdCBiZQotLSAgICAgICBhY2NlcHRlZCBkdWUgdG8gYW4gZXJyb3IgYWN0aW9uIGluIGEg
bGF0ZXIgc3RhdGUuXV0pWwotLSAgKi8KLS0gIGlmICh5eXRva2VuICE9IFlZRU1QVFkpCi0tICAg
IHsKLS0gICAgICBpbnQgeXluID0geXlwYWN0Wyp5eXNzcF07XWI0X2xhY19pZihbWwotLSAgICAg
IFlZRFBSSU5URiAoKHN0ZGVyciwgIkNvbnN0cnVjdGluZyBzeW50YXggZXJyb3IgbWVzc2FnZVxu
IikpO11dKVsKLS0gICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXRva2VuXTsKLS0g
ICAgICBpZiAoIXl5cGFjdF92YWx1ZV9pc19kZWZhdWx0ICh5eW4pKQotLSAgICAgICAge11iNF9s
YWNfaWYoW10sIFtbCi0tICAgICAgICAgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZl
IHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KLS0gICAgICAgICAgICAgWVlDSEVDSy4gIElu
IG90aGVyIHdvcmRzLCBza2lwIHRoZSBmaXJzdCAtWVlOIGFjdGlvbnMgZm9yCi0tICAgICAgICAg
ICAgIHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFyZSBkZWZhdWx0IGFjdGlvbnMuICAqLwotLSAg
ICAgICAgICBpbnQgeXl4YmVnaW4gPSB5eW4gPCAwID8gLXl5biA6IDA7Ci0tICAgICAgICAgIC8q
IFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sgYW5kIHl5dG5hbWUuICAqLwotLSAg
ICAgICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAtIHl5biArIDE7Ci0tICAgICAgICAgIGlu
dCB5eXhlbmQgPSB5eWNoZWNrbGltIDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VO
UztdXSlbCi0tICAgICAgICAgIGludCB5eXg7XWI0X2xhY19pZihbWwotLQotLSAgICAgICAgICBm
b3IgKHl5eCA9IDA7IHl5eCA8IFlZTlRPS0VOUzsgKyt5eXgpCi0tICAgICAgICAgICAgaWYgKHl5
eCAhPSBZWVRFUlJPUiAmJiB5eXggIT0gWVlVTkRFRlRPSykKLS0gICAgICAgICAgICAgIHsKLS0g
ICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgIGludCB5eV9sYWNfc3RhdHVzID0g
eXlfbGFjICh5eWVzYSwgeXllcywgeXllc19jYXBhY2l0eSwKLS0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlzc3AsIHl5eCk7Ci0tICAgICAgICAgICAgICAg
ICAgaWYgKHl5X2xhY19zdGF0dXMgPT0gMikKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAy
OwotLSAgICAgICAgICAgICAgICAgIGlmICh5eV9sYWNfc3RhdHVzID09IDEpCi0tICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLS0gICAgICAgICAgICAgICAgfV1dLCBbWwotLQotLSAgICAg
ICAgICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQotLSAgICAgICAg
ICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUgotLSAg
ICAgICAgICAgICAgICAmJiAheXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5eXggKyB5
eW5dKSkKLS0gICAgICAgICAgICAgIHtdXSlbCi0tICAgICAgICAgICAgICAgIGlmICh5eWNvdW50
ID09IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCi0tICAgICAgICAgICAgICAgICAgewot
LSAgICAgICAgICAgICAgICAgICAgeXljb3VudCA9IDE7Ci0tICAgICAgICAgICAgICAgICAgICB5
eXNpemUgPSB5eXNpemUwOwotLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAg
ICAgICAgICAgfQotLSAgICAgICAgICAgICAgICB5eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5
eXhdOwotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgWVlTSVpFX1QgeXlz
aXplMSA9IHl5c2l6ZSArIHl5dG5hbWVyciAoWVlfTlVMTFBUUiwgeXl0bmFtZVt5eXhdKTsKLS0g
ICAgICAgICAgICAgICAgICBpZiAoeXlzaXplIDw9IHl5c2l6ZTEgJiYgeXlzaXplMSA8PSBZWVNU
QUNLX0FMTE9DX01BWElNVU0pCi0tICAgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNpemUx
OwotLSAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAy
OwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICB9Ci0tICAgICAgICB9XWI0X2xh
Y19pZihbWwotLSMgaWYgXWI0X2FwaV9QUkVGSVhbREVCVUcKLS0gICAgICBlbHNlIGlmICh5eWRl
YnVnKQotLSAgICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJObyBleHBlY3RlZCB0b2tlbnMuXG4i
KTsKLS0jIGVuZGlmXV0pWwotLSAgICB9Ci0tCi0tICBzd2l0Y2ggKHl5Y291bnQpCi0tICAgIHsK
LS0jIGRlZmluZSBZWUNBU0VfKE4sIFMpICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBj
YXNlIE46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHl5Zm9ybWF0
ID0gUzsgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICBicmVhawotLSAgICBkZWZhdWx0
OiAvKiBBdm9pZCBjb21waWxlciB3YXJuaW5ncy4gKi8KLS0gICAgICBZWUNBU0VfKDAsIFlZXygi
c3ludGF4IGVycm9yIikpOwotLSAgICAgIFlZQ0FTRV8oMSwgWVlfKCJzeW50YXggZXJyb3IsIHVu
ZXhwZWN0ZWQgJXMiKSk7Ci0tICAgICAgWVlDQVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5l
eHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIikpOwotLSAgICAgIFlZQ0FTRV8oMywgWVlfKCJzeW50
YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpKTsKLS0gICAgICBZ
WUNBU0VfKDQsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzLCBleHBlY3RpbmcgJXMg
b3IgJXMgb3IgJXMiKSk7Ci0tICAgICAgWVlDQVNFXyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5l
eHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIikpOwotLSMgdW5kZWYg
WVlDQVNFXwotLSAgICB9Ci0tCi0tICB7Ci0tICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUg
KyB5eXN0cmxlbiAoeXlmb3JtYXQpOwotLSAgICBpZiAoeXlzaXplIDw9IHl5c2l6ZTEgJiYgeXlz
aXplMSA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pCi0tICAgICAgeXlzaXplID0geXlzaXplMTsK
LS0gICAgZWxzZQotLSAgICAgIHJldHVybiAyOwotLSAgfQotLQotLSAgaWYgKCp5eW1zZ19hbGxv
YyA8IHl5c2l6ZSkKLS0gICAgewotLSAgICAgICp5eW1zZ19hbGxvYyA9IDIgKiB5eXNpemU7Ci0t
ICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKLS0gICAgICAgICAgICAgJiYgKnl5
bXNnX2FsbG9jIDw9IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTSkpCi0tICAgICAgICAqeXltc2dfYWxs
b2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07Ci0tICAgICAgcmV0dXJuIDE7Ci0tICAgIH0KLS0K
LS0gIC8qIEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2VyJ3MgbmFt
ZSBzcGFjZS4KLS0gICAgIERvbid0IGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIGV2ZW4gaWYgdGhl
IHRyYW5zbGF0aW9uCi0tICAgICBwcm9kdWNlZCBhIHN0cmluZyB3aXRoIHRoZSB3cm9uZyBudW1i
ZXIgb2YgIiVzInMuICAqLwotLSAgewotLSAgICBjaGFyICp5eXAgPSAqeXltc2c7Ci0tICAgIGlu
dCB5eWkgPSAwOwotLSAgICB3aGlsZSAoKCp5eXAgPSAqeXlmb3JtYXQpICE9ICdcMCcpCi0tICAg
ICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5Zm9ybWF0WzFdID09ICdzJyAmJiB5eWkgPCB5eWNvdW50
KQotLSAgICAgICAgewotLSAgICAgICAgICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5
aSsrXSk7Ci0tICAgICAgICAgIHl5Zm9ybWF0ICs9IDI7Ci0tICAgICAgICB9Ci0tICAgICAgZWxz
ZQotLSAgICAgICAgewotLSAgICAgICAgICB5eXArKzsKLS0gICAgICAgICAgeXlmb3JtYXQrKzsK
LS0gICAgICAgIH0KLS0gIH0KLS0gIHJldHVybiAwOwotLX0KLS0jZW5kaWYgLyogWVlFUlJPUl9W
RVJCT1NFICovCi0tCi0tXWI0X3l5ZGVzdHJ1Y3RfZGVmaW5lWwotLQotLV1iNF9wdXJlX2lmKFtd
LCBbCi0tCi0tYjRfZGVjbGFyZV9zY2FubmVyX2NvbW11bmljYXRpb25fdmFyaWFibGVzXSlbXWI0
X3B1c2hfaWYoW1sKLS0KLS1zdHJ1Y3QgeXlwc3RhdGUKLS0gIHtdYjRfZGVjbGFyZV9wYXJzZXJf
c3RhdGVfdmFyaWFibGVzWwotLSAgICAvKiBVc2VkIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIHRo
ZSBmaXJzdCB0aW1lIHRoaXMgaW5zdGFuY2UgaGFzCi0tICAgICAgIGJlZW4gdXNlZC4gICovCi0t
ICAgIGludCB5eW5ldzsKLS0gIH07XWI0X3B1cmVfaWYoW10sIFtbCi0tCi0tc3RhdGljIGNoYXIg
eXlwc3RhdGVfYWxsb2NhdGVkID0gMDtdXSliNF9wdWxsX2lmKFsKLS0KLS1iNF9mdW5jdGlvbl9k
ZWZpbmUoW1t5eXBhcnNlXV0sIFtbaW50XV0sIGI0X3BhcnNlX3BhcmFtKVsKLS17Ci0tICByZXR1
cm4geXlwdWxsX3BhcnNlIChZWV9OVUxMUFRSXW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sCi0t
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbLCBdYjRfYXJncyhiNF9wYXJzZV9w
YXJhbSldKVspOwotLX0KLS0KLS1dYjRfZnVuY3Rpb25fZGVmaW5lKFtbeXlwdWxsX3BhcnNlXV0s
IFtbaW50XV0sCi0tICBbW1t5eXBzdGF0ZSAqeXlwc11dLCBbW3l5cHNdXV1tNF9pZnNldChbYjRf
cGFyc2VfcGFyYW1dLCBbLAotLSAgYjRfcGFyc2VfcGFyYW1dKSlbCi0te11iNF9wdXJlX2lmKFti
NF9sb2NhdGlvbnNfaWYoW1sKLS0gIHN0YXRpYyBZWUxUWVBFIHl5bG9jX2RlZmF1bHRdW11iNF95
eWxvY19kZWZhdWx0WzsKLS0gIFlZTFRZUEUgeXlsbG9jID0geXlsb2NfZGVmYXVsdDtdXSldKVsK
LS0gIHl5cHN0YXRlICp5eXBzX2xvY2FsOwotLSAgaWYgKHl5cHMpCi0tICAgIHl5cHNfbG9jYWwg
PSB5eXBzOwotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgeXlwc19sb2NhbCA9IHl5cHN0YXRlX25l
dyAoKTsKLS0gICAgICBpZiAoIXl5cHNfbG9jYWwpCi0tICAgICAgICB7XWI0X3B1cmVfaWYoW1sK
LS0gICAgICAgICAgeXllcnJvciAoXWI0X3l5ZXJyb3JfYXJnc1tZWV8oIm1lbW9yeSBleGhhdXN0
ZWQiKSk7XV0sIFtbCi0tICAgICAgICAgIGlmICgheXlwc3RhdGVfYWxsb2NhdGVkKQotLSAgICAg
ICAgICAgIHl5ZXJyb3IgKF1iNF95eWVycm9yX2FyZ3NbWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikp
O11dKVsKLS0gICAgICAgICAgcmV0dXJuIDI7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0gIGludCB5
eXN0YXR1czsKLS0gIGRvIHtdYjRfcHVyZV9pZihbWwotLSAgICBZWVNUWVBFIHl5bHZhbDsKLS0g
ICAgaW50IF1dKVt5eWNoYXIgPSBdYjRfbGV4WzsKLS0gICAgeXlzdGF0dXMgPQotLSAgICAgIHl5
cHVzaF9wYXJzZSAoeXlwc19sb2NhbF1iNF9wdXJlX2lmKFtbLCB5eWNoYXIsICZ5eWx2YWxdYjRf
bG9jYXRpb25zX2lmKFtbLCAmeXlsbG9jXV0pXSltNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBb
LCBiNF9hcmdzKGI0X3BhcnNlX3BhcmFtKV0pWyk7Ci0tICB9IHdoaWxlICh5eXN0YXR1cyA9PSBZ
WVBVU0hfTU9SRSk7Ci0tICBpZiAoIXl5cHMpCi0tICAgIHl5cHN0YXRlX2RlbGV0ZSAoeXlwc19s
b2NhbCk7Ci0tICByZXR1cm4geXlzdGF0dXM7Ci0tfV1dKVsKLS0KLS0vKiBJbml0aWFsaXplIHRo
ZSBwYXJzZXIgZGF0YSBzdHJ1Y3R1cmUuICAqLwotLV1iNF9mdW5jdGlvbl9kZWZpbmUoW1t5eXBz
dGF0ZV9uZXddXSwgW1t5eXBzdGF0ZSAqXV0pWwotLXsKLS0gIHl5cHN0YXRlICp5eXBzO11iNF9w
dXJlX2lmKFtdLCBbWwotLSAgaWYgKHl5cHN0YXRlX2FsbG9jYXRlZCkKLS0gICAgcmV0dXJuIFlZ
X05VTExQVFI7XV0pWwotLSAgeXlwcyA9ICh5eXBzdGF0ZSAqKSBtYWxsb2MgKHNpemVvZiAqeXlw
cyk7Ci0tICBpZiAoIXl5cHMpCi0tICAgIHJldHVybiBZWV9OVUxMUFRSOwotLSAgeXlwcy0+eXlu
ZXcgPSAxO11iNF9wdXJlX2lmKFtdLCBbWwotLSAgeXlwc3RhdGVfYWxsb2NhdGVkID0gMTtdXSlb
Ci0tICByZXR1cm4geXlwczsKLS19Ci0tCi0tXWI0X2Z1bmN0aW9uX2RlZmluZShbW3l5cHN0YXRl
X2RlbGV0ZV1dLCBbW3ZvaWRdXSwKLS0gICAgICAgICAgICAgICAgICAgW1tbeXlwc3RhdGUgKnl5
cHNdXSwgW1t5eXBzXV1dKVsKLS17Ci0tICBpZiAoeXlwcykKLS0gICAgewotLSNpZm5kZWYgeXlv
dmVyZmxvdwotLSAgICAgIC8qIElmIHRoZSBzdGFjayB3YXMgcmVhbGxvY2F0ZWQgYnV0IHRoZSBw
YXJzZSBkaWQgbm90IGNvbXBsZXRlLCB0aGVuIHRoZQotLSAgICAgICAgIHN0YWNrIHN0aWxsIG5l
ZWRzIHRvIGJlIGZyZWVkLiAgKi8KLS0gICAgICBpZiAoIXl5cHMtPnl5bmV3ICYmIHl5cHMtPnl5
c3MgIT0geXlwcy0+eXlzc2EpCi0tICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5cHMtPnl5c3MpOwot
LSNlbmRpZl1iNF9sYWNfaWYoW1sKLS0gICAgICBpZiAoIXl5cHMtPnl5bmV3ICYmIHl5cHMtPnl5
ZXMgIT0geXlwcy0+eXllc2EpCi0tICAgICAgICBZWVNUQUNLX0ZSRUUgKHl5cHMtPnl5ZXMpO11d
KVsKLS0gICAgICBmcmVlICh5eXBzKTtdYjRfcHVyZV9pZihbXSwgW1sKLS0gICAgICB5eXBzdGF0
ZV9hbGxvY2F0ZWQgPSAwO11dKVsKLS0gICAgfQotLX0KLS1dYjRfcHVyZV9pZihbWwotLSNkZWZp
bmUgXWI0X3ByZWZpeFtuZXJycyB5eXBzLT5dYjRfcHJlZml4W25lcnJzXV0pWwotLSNkZWZpbmUg
eXlzdGF0ZSB5eXBzLT55eXN0YXRlCi0tI2RlZmluZSB5eWVycnN0YXR1cyB5eXBzLT55eWVycnN0
YXR1cwotLSNkZWZpbmUgeXlzc2EgeXlwcy0+eXlzc2EKLS0jZGVmaW5lIHl5c3MgeXlwcy0+eXlz
cwotLSNkZWZpbmUgeXlzc3AgeXlwcy0+eXlzc3AKLS0jZGVmaW5lIHl5dnNhIHl5cHMtPnl5dnNh
Ci0tI2RlZmluZSB5eXZzIHl5cHMtPnl5dnMKLS0jZGVmaW5lIHl5dnNwIHl5cHMtPnl5dnNwXWI0
X2xvY2F0aW9uc19pZihbWwotLSNkZWZpbmUgeXlsc2EgeXlwcy0+eXlsc2EKLS0jZGVmaW5lIHl5
bHMgeXlwcy0+eXlscwotLSNkZWZpbmUgeXlsc3AgeXlwcy0+eXlsc3AKLS0jZGVmaW5lIHl5ZXJy
b3JfcmFuZ2UgeXlwcy0+eXllcnJvcl9yYW5nZV1dKVsKLS0jZGVmaW5lIHl5c3RhY2tzaXplIHl5
cHMtPnl5c3RhY2tzaXplXWI0X2xhY19pZihbWwotLSNkZWZpbmUgeXllc2EgeXlwcy0+eXllc2EK
LS0jZGVmaW5lIHl5ZXMgeXlwcy0+eXllcwotLSNkZWZpbmUgeXllc19jYXBhY2l0eSB5eXBzLT55
eWVzX2NhcGFjaXR5XV0pWwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlwdXNoX3Bh
cnNlLiAgfAotLWAtLS0tLS0tLS0tLS0tLS0qLwotLQotLV1iNF9mdW5jdGlvbl9kZWZpbmUoW1t5
eXB1c2hfcGFyc2VdXSwgW1tpbnRdXSwKLS0gIFtbW3l5cHN0YXRlICp5eXBzXV0sIFtbeXlwc11d
XWI0X3B1cmVfaWYoWywKLS0gIFtbW2ludCB5eXB1c2hlZF9jaGFyXV0sIFtbeXlwdXNoZWRfY2hh
cl1dXSwKLS0gIFtbW1lZU1RZUEUgY29uc3QgKnl5cHVzaGVkX3ZhbF1dLCBbW3l5cHVzaGVkX3Zh
bF1dXWI0X2xvY2F0aW9uc19pZihbLAotLSAgW1tbWVlMVFlQRSAqeXlwdXNoZWRfbG9jXV0sIFtb
eXlwdXNoZWRfbG9jXV1dXSldKW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssCi0tICBiNF9w
YXJzZV9wYXJhbV0pKV0sIFtbCi0tCi0tCi0tLyotLS0tLS0tLS0tLgotLXwgeXlwYXJzZS4gIHwK
LS1gLS0tLS0tLS0tLSovCi0tCi0tXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlwYXJzZV0sIFtpbnRd
LCBiNF9wYXJzZV9wYXJhbSldKVsKLS17XWI0X3B1cmVfaWYoW2I0X2RlY2xhcmVfc2Nhbm5lcl9j
b21tdW5pY2F0aW9uX3ZhcmlhYmxlcwotLV0pYjRfcHVzaF9pZihbYjRfcHVyZV9pZihbXSwgW1sK
LS0gIGludCB5eXB1c2hlZF9jaGFyID0geXljaGFyOwotLSAgWVlTVFlQRSB5eXB1c2hlZF92YWwg
PSB5eWx2YWw7XWI0X2xvY2F0aW9uc19pZihbWwotLSAgWVlMVFlQRSB5eXB1c2hlZF9sb2MgPSB5
eWxsb2M7XV0pCi0tXSldLAotLSAgW2I0X2RlY2xhcmVfcGFyc2VyX3N0YXRlX3ZhcmlhYmxlcwot
LV0pYjRfbGFjX2lmKFtbCi0tICBpbnQgeXlfbGFjX2VzdGFibGlzaGVkID0gMDtdXSlbCi0tICBp
bnQgeXluOwotLSAgaW50IHl5cmVzdWx0OwotLSAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGlu
dGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotLSAgaW50IHl5dG9rZW4gPSAw
OwotLSAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQg
bG9jYXRpb24gZnJvbSB0aGUKLS0gICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0tICBZWVNUWVBF
IHl5dmFsO11iNF9sb2NhdGlvbnNfaWYoW1sKLS0gIFlZTFRZUEUgeXlsb2M7XV0pWwotLQotLSNp
ZiBZWUVSUk9SX1ZFUkJPU0UKLS0gIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBp
dHMgYWxsb2NhdGVkIHNpemUuICAqLwotLSAgY2hhciB5eW1zZ2J1ZlsxMjhdOwotLSAgY2hhciAq
eXltc2cgPSB5eW1zZ2J1ZjsKLS0gIFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNn
YnVmOwotLSNlbmRpZgotLQotLSNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZzcCAtPSAoTiks
IHl5c3NwIC09IChOKV1iNF9sb2NhdGlvbnNfaWYoWywgeXlsc3AgLT0gKE4pXSlbKQotLQotLSAg
LyogVGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQgcnVsZS4K
LS0gICAgIEtlZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVkLiAgKi8K
LS0gIGludCB5eWxlbiA9IDA7XWI0X3B1c2hfaWYoW1sKLS0KLS0gIGlmICgheXlwcy0+eXluZXcp
Ci0tICAgIHsKLS0gICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0tICAgICAgZ290byB5eXJl
YWRfcHVzaGVkX3Rva2VuOwotLSAgICB9XV0pWwotLQotLSAgeXlzc3AgPSB5eXNzID0geXlzc2E7
Ci0tICB5eXZzcCA9IHl5dnMgPSB5eXZzYTtdYjRfbG9jYXRpb25zX2lmKFtbCi0tICB5eWxzcCA9
IHl5bHMgPSB5eWxzYTtdXSlbCi0tICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIO11iNF9sYWNf
aWYoW1sKLS0KLS0gIHl5ZXMgPSB5eWVzYTsKLS0gIHl5ZXNfY2FwYWNpdHkgPSBzaXplb2YgeXll
c2EgLyBzaXplb2YgKnl5ZXM7Ci0tICBpZiAoWVlNQVhERVBUSCA8IHl5ZXNfY2FwYWNpdHkpCi0t
ICAgIHl5ZXNfY2FwYWNpdHkgPSBZWU1BWERFUFRIO11dKVsKLS0KLS0gIFlZRFBSSU5URiAoKHN0
ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7Ci0tCi0tICB5eXN0YXRlID0gMDsKLS0gIHl5ZXJy
c3RhdHVzID0gMDsKLS0gIHl5bmVycnMgPSAwOwotLSAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1
c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KLS1dbTRfaWZkZWYoW2I0X2luaXRpYWxfYWN0aW9u
XSwgWwotLWI0X2RvbGxhcl9wdXNoZGVmKFttNF9kZWZpbmUoW2I0X2RvbGxhcl9kb2xsYXJfdXNl
ZF0peXlsdmFsXSwgW10sIFtdLAotLSAgICAgICAgICAgICAgICAgIFtiNF9wdXNoX2lmKFtiNF9w
dXJlX2lmKFsqXSl5eXB1c2hlZF9sb2NdLCBbeXlsbG9jXSldKWRubAotLWI0X3VzZXJfaW5pdGlh
bF9hY3Rpb24KLS1iNF9kb2xsYXJfcG9wZGVmW11kbmwKLS1tNF9pZmRlZihbYjRfZG9sbGFyX2Rv
bGxhcl91c2VkXSxbWyAgeXl2c3BbMF0gPSB5eWx2YWw7Ci0tXV0pXSlkbmwKLS1iNF9sb2NhdGlv
bnNfaWYoW1sgIHl5bHNwWzBdID0gXWI0X3B1c2hfaWYoW2I0X3B1cmVfaWYoWypdKXl5cHVzaGVk
X2xvY10sIFt5eWxsb2NdKVs7Ci0tXV0pZG5sCi0tWyAgZ290byB5eXNldHN0YXRlOwotLQotLQot
LS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLgotLXwgeXluZXdzdGF0ZSAtLSBwdXNoIGEgbmV3IHN0YXRlLCB3aGljaCBpcyBmb3Vu
ZCBpbiB5eXN0YXRlLiAgfAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLXl5bmV3c3RhdGU6Ci0tICAvKiBJbiBhbGwgY2Fz
ZXMsIHdoZW4geW91IGdldCBoZXJlLCB0aGUgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrcwotLSAg
ICAgaGF2ZSBqdXN0IGJlZW4gcHVzaGVkLiAgU28gcHVzaGluZyBhIHN0YXRlIGhlcmUgZXZlbnMg
dGhlIHN0YWNrcy4gICovCi0tICB5eXNzcCsrOwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0tfCB5
eW5ld3N0YXRlIC0tIHNldCBjdXJyZW50IHN0YXRlICh0aGUgdG9wIG9mIHRoZSBzdGFjaykgdG8g
eXlzdGF0ZS4gIHwKLS1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLXl5c2V0c3RhdGU6Ci0tICAqeXlzc3AgPSAo
eXl0eXBlX2ludDE2KSB5eXN0YXRlOwotLQotLSAgaWYgKHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEg
PD0geXlzc3ApCi0tI2lmICFkZWZpbmVkIHl5b3ZlcmZsb3cgJiYgIWRlZmluZWQgWVlTVEFDS19S
RUxPQ0FURQotLSAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwotLSNlbHNlCi0tICAgIHsKLS0gICAg
ICAvKiBHZXQgdGhlIGN1cnJlbnQgdXNlZCBzaXplIG9mIHRoZSB0aHJlZSBzdGFja3MsIGluIGVs
ZW1lbnRzLiAgKi8KLS0gICAgICBZWVNJWkVfVCB5eXNpemUgPSAoWVlTSVpFX1QpICh5eXNzcCAt
IHl5c3MgKyAxKTsKLS0KLS0jIGlmIGRlZmluZWQgeXlvdmVyZmxvdwotLSAgICAgIHsKLS0gICAg
ICAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVzZSBj
b3BpZXMgb2YKLS0gICAgICAgICAgIHRoZXNlIHNvIHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0
aGUgcmVhbCBvbmVzIGludG8KLS0gICAgICAgICAgIG1lbW9yeS4gICovCi0tICAgICAgICBZWVNU
WVBFICp5eXZzMSA9IHl5dnM7Ci0tICAgICAgICB5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzcztd
YjRfbG9jYXRpb25zX2lmKFsKLS0gICAgICAgIFlZTFRZUEUgKnl5bHMxID0geXlscztdKVsKLS0K
LS0gICAgICAgIC8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRo
ZSBzaXplIG9mIHRoZQotLSAgICAgICAgICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4g
Ynl0ZXMuICBUaGlzIHVzZWQgdG8gYmUgYQotLSAgICAgICAgICAgY29uZGl0aW9uYWwgYXJvdW5k
IGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodAotLSAgICAgICAgICAgYmUg
dW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCi0tICAgICAgICB5eW92ZXJm
bG93IChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSwKLS0gICAgICAgICAgICAgICAgICAgICZ5eXNz
MSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAotLSAgICAgICAgICAgICAgICAgICAgJnl5dnMx
LCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksXWI0X2xvY2F0aW9uc19pZihbCi0tICAgICAgICAg
ICAgICAgICAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSxdKVsKLS0gICAgICAg
ICAgICAgICAgICAgICZ5eXN0YWNrc2l6ZSk7Ci0tICAgICAgICB5eXNzID0geXlzczE7Ci0tICAg
ICAgICB5eXZzID0geXl2czE7XWI0X2xvY2F0aW9uc19pZihbCi0tICAgICAgICB5eWxzID0geXls
czE7XSlbCi0tICAgICAgfQotLSMgZWxzZSAvKiBkZWZpbmVkIFlZU1RBQ0tfUkVMT0NBVEUgKi8K
LS0gICAgICAvKiBFeHRlbmQgdGhlIHN0YWNrIG91ciBvd24gd2F5LiAgKi8KLS0gICAgICBpZiAo
WVlNQVhERVBUSCA8PSB5eXN0YWNrc2l6ZSkKLS0gICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7
Ci0tICAgICAgeXlzdGFja3NpemUgKj0gMjsKLS0gICAgICBpZiAoWVlNQVhERVBUSCA8IHl5c3Rh
Y2tzaXplKQotLSAgICAgICAgeXlzdGFja3NpemUgPSBZWU1BWERFUFRIOwotLQotLSAgICAgIHsK
LS0gICAgICAgIHl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwotLSAgICAgICAgdW5pb24geXlh
bGxvYyAqeXlwdHIgPQotLSAgICAgICAgICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9D
IChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwotLSAgICAgICAgaWYgKCEgeXlwdHIpCi0t
ICAgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7Ci0tICAgICAgICBZWVNUQUNLX1JFTE9DQVRF
ICh5eXNzX2FsbG9jLCB5eXNzKTsKLS0gICAgICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5dnNfYWxs
b2MsIHl5dnMpO11iNF9sb2NhdGlvbnNfaWYoWwotLSAgICAgICAgWVlTVEFDS19SRUxPQ0FURSAo
eXlsc19hbGxvYywgeXlscyk7XSlbCi0tIyB1bmRlZiBZWVNUQUNLX1JFTE9DQVRFCi0tICAgICAg
ICBpZiAoeXlzczEgIT0geXlzc2EpCi0tICAgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwot
LSAgICAgIH0KLS0jIGVuZGlmCi0tCi0tICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXplIC0gMTsK
LS0gICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxO11iNF9sb2NhdGlvbnNfaWYoWwotLSAg
ICAgIHl5bHNwID0geXlscyArIHl5c2l6ZSAtIDE7XSlbCi0tCi0tICAgICAgWVlEUFJJTlRGICgo
c3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAotLSAgICAgICAgICAgICAg
ICAgICh1bnNpZ25lZCBsb25nKSB5eXN0YWNrc2l6ZSkpOwotLQotLSAgICAgIGlmICh5eXNzICsg
eXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQotLSAgICAgICAgWVlBQk9SVDsKLS0gICAgfQotLSNl
bmRpZiAvKiAhZGVmaW5lZCB5eW92ZXJmbG93ICYmICFkZWZpbmVkIFlZU1RBQ0tfUkVMT0NBVEUg
Ki8KLS0KLS0gIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0
YXRlKSk7Ci0tCi0tICBpZiAoeXlzdGF0ZSA9PSBZWUZJTkFMKQotLSAgICBZWUFDQ0VQVDsKLS0K
LS0gIGdvdG8geXliYWNrdXA7Ci0tCi0tCi0tLyotLS0tLS0tLS0tLS4KLS18IHl5YmFja3VwLiAg
fAotLWAtLS0tLS0tLS0tLSovCi0teXliYWNrdXA6Ci0tICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9j
ZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCi0tICAgICBsb29rYWhlYWQg
dG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwotLQot
LSAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRv
IGxvb2thaGVhZCB0b2tlbi4gICovCi0tICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0tICBpZiAo
eXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCi0tICAgIGdvdG8geXlkZWZhdWx0OwotLQot
LSAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5
IGhhdmUgb25lLiAgKi8KLS0KLS0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVP
RiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAqLwotLSAgaWYgKHl5Y2hhciA9PSBZWUVN
UFRZKQotLSAgICB7XWI0X3B1c2hfaWYoW1sKLS0gICAgICBpZiAoIXl5cHMtPnl5bmV3KQotLSAg
ICAgICAge11iNF91c2VfcHVzaF9mb3JfcHVsbF9pZihbXSwgW1sKLS0gICAgICAgICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiUmV0dXJuIGZvciBhIG5ldyB0b2tlbjpcbiIpKTtdXSlbCi0tICAgICAg
ICAgIHl5cmVzdWx0ID0gWVlQVVNIX01PUkU7Ci0tICAgICAgICAgIGdvdG8geXlwdXNocmV0dXJu
OwotLSAgICAgICAgfQotLSAgICAgIHl5cHMtPnl5bmV3ID0gMDtdYjRfcHVyZV9pZihbXSwgW1sK
LS0gICAgICAvKiBSZXN0b3JpbmcgdGhlIHB1c2hlZCB0b2tlbiBpcyBvbmx5IG5lY2Vzc2FyeSBm
b3IgdGhlIGZpcnN0Ci0tICAgICAgICAgeXlwdXNoX3BhcnNlIGludm9jYXRpb24gc2luY2Ugc3Vi
c2VxdWVudCBpbnZvY2F0aW9ucyBkb24ndCBvdmVyd3JpdGUKLS0gICAgICAgICBpdCBiZWZvcmUg
anVtcGluZyB0byB5eXJlYWRfcHVzaGVkX3Rva2VuLiAgKi8KLS0gICAgICB5eWNoYXIgPSB5eXB1
c2hlZF9jaGFyOwotLSAgICAgIHl5bHZhbCA9IHl5cHVzaGVkX3ZhbDtdYjRfbG9jYXRpb25zX2lm
KFtbCi0tICAgICAgeXlsbG9jID0geXlwdXNoZWRfbG9jO11dKV0pWwotLXl5cmVhZF9wdXNoZWRf
dG9rZW46XV0pWwotLSAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjog
IikpO11iNF9wdXNoX2lmKFtiNF9wdXJlX2lmKFtbCi0tICAgICAgeXljaGFyID0geXlwdXNoZWRf
Y2hhcjsKLS0gICAgICBpZiAoeXlwdXNoZWRfdmFsKQotLSAgICAgICAgeXlsdmFsID0gKnl5cHVz
aGVkX3ZhbDtdYjRfbG9jYXRpb25zX2lmKFtbCi0tICAgICAgaWYgKHl5cHVzaGVkX2xvYykKLS0g
ICAgICAgIHl5bGxvYyA9ICp5eXB1c2hlZF9sb2M7XV0pXSldLCBbWwotLSAgICAgIHl5Y2hhciA9
IF1iNF9sZXhbO11dKVsKLS0gICAgfQotLQotLSAgaWYgKHl5Y2hhciA8PSBZWUVPRikKLS0gICAg
ewotLSAgICAgIHl5Y2hhciA9IHl5dG9rZW4gPSBZWUVPRjsKLS0gICAgICBZWURQUklOVEYgKChz
dGRlcnIsICJOb3cgYXQgZW5kIG9mIGlucHV0LlxuIikpOwotLSAgICB9Ci0tICBlbHNlCi0tICAg
IHsKLS0gICAgICB5eXRva2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0tICAgICAgWVlfU1lN
Qk9MX1BSSU5UICgiTmV4dCB0b2tlbiBpcyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOwot
LSAgICB9Ci0tCi0tICAvKiBJZiB0aGUgcHJvcGVyIGFjdGlvbiBvbiBzZWVpbmcgdG9rZW4gWVlU
T0tFTiBpcyB0byByZWR1Y2Ugb3IgdG8KLS0gICAgIGRldGVjdCBhbiBlcnJvciwgdGFrZSB0aGF0
IGFjdGlvbi4gICovCi0tICB5eW4gKz0geXl0b2tlbjsKLS0gIGlmICh5eW4gPCAwIHx8IFlZTEFT
VCA8IHl5biB8fCB5eWNoZWNrW3l5bl0gIT0geXl0b2tlbildYjRfbGFjX2lmKFtbCi0tICAgIHsK
LS0gICAgICBZWV9MQUNfRVNUQUJMSVNIOwotLSAgICAgIGdvdG8geXlkZWZhdWx0OwotLSAgICB9
XV0sIFtbCi0tICAgIGdvdG8geXlkZWZhdWx0O11dKVsKLS0gIHl5biA9IHl5dGFibGVbeXluXTsK
LS0gIGlmICh5eW4gPD0gMCkKLS0gICAgewotLSAgICAgIGlmICh5eXRhYmxlX3ZhbHVlX2lzX2Vy
cm9yICh5eW4pKQotLSAgICAgICAgZ290byB5eWVycmxhYjtdYjRfbGFjX2lmKFtbCi0tICAgICAg
WVlfTEFDX0VTVEFCTElTSDtdXSlbCi0tICAgICAgeXluID0gLXl5bjsKLS0gICAgICBnb3RvIHl5
cmVkdWNlOwotLSAgICB9Ci0tCi0tICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBzaW5jZSBlcnJv
cjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCi0tICAgICBzdGF0dXMuICAqLwotLSAgaWYg
KHl5ZXJyc3RhdHVzKQotLSAgICB5eWVycnN0YXR1cy0tOwotLQotLSAgLyogU2hpZnQgdGhlIGxv
b2thaGVhZCB0b2tlbi4gICovCi0tICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9r
ZW4sICZ5eWx2YWwsICZ5eWxsb2MpOwotLQotLSAgLyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tl
bi4gICovCi0tICB5eWNoYXIgPSBZWUVNUFRZO11iNF9sYWNfaWYoW1sKLS0gIFlZX0xBQ19ESVND
QVJEICgic2hpZnQiKTtdXSlbCi0tCi0tICB5eXN0YXRlID0geXluOwotLSAgWVlfSUdOT1JFX01B
WUJFX1VOSU5JVElBTElaRURfQkVHSU4KLS0gICorK3l5dnNwID0geXlsdmFsOwotLSAgWVlfSUdO
T1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECi0tXWI0X2xvY2F0aW9uc19pZihbICAqKyt5eWxz
cCA9IHl5bGxvYztdKVsKLS0gIGdvdG8geXluZXdzdGF0ZTsKLS0KLS0KLS0vKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlk
ZWZhdWx0IC0tIGRvIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIGN1cnJlbnQgc3RhdGUuICB8
Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KLS15eWRlZmF1bHQ6Ci0tICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKLS0gIGlm
ICh5eW4gPT0gMCkKLS0gICAgZ290byB5eWVycmxhYjsKLS0gIGdvdG8geXlyZWR1Y2U7Ci0tCi0t
Ci0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS18IHl5cmVkdWNlIC0tIGRvIGEg
cmVkdWN0aW9uLiAgfAotLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0teXlyZWR1
Y2U6Ci0tICAvKiB5eW4gaXMgdGhlIG51bWJlciBvZiBhIHJ1bGUgdG8gcmVkdWNlIHdpdGguICAq
LwotLSAgeXlsZW4gPSB5eXIyW3l5bl07Ci0tCi0tICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBp
bXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKLS0gICAgICckJCA9ICQx
Jy4KLS0KLS0gICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlWQUwgdG8g
Z2FyYmFnZS4KLS0gICAgIFRoaXMgYmVoYXZpb3IgaXMgdW5kb2N1bWVudGVkIGFuZCBCaXNvbgot
LSAgICAgdXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQuICBBc3NpZ25pbmcgdG8gWVlWQUwK
LS0gICAgIHVuY29uZGl0aW9uYWxseSBtYWtlcyB0aGUgcGFyc2VyIGEgYml0IHNtYWxsZXIsIGFu
ZCBpdCBhdm9pZHMgYQotLSAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUgdXNlZCB1
bmluaXRpYWxpemVkLiAgKi8KLS0gIHl5dmFsID0geXl2c3BbMS15eWxlbl07Ci0tCi0tXWI0X2xv
Y2F0aW9uc19pZigKLS1bWyAgLyogRGVmYXVsdCBsb2NhdGlvbi4gKi8KLS0gIFlZTExPQ19ERUZB
VUxUICh5eWxvYywgKHl5bHNwIC0geXlsZW4pLCB5eWxlbik7Ci0tICB5eWVycm9yX3JhbmdlWzFd
ID0geXlsb2M7XV0pWwotLSAgWVlfUkVEVUNFX1BSSU5UICh5eW4pO11iNF9sYWNfaWYoW1sKLS0g
IHsKLS0gICAgaW50IHl5Y2hhcl9iYWNrdXAgPSB5eWNoYXI7Ci0tICAgIHN3aXRjaCAoeXluKQot
LSAgICAgIHsKLS1dYjRfdXNlcl9hY3Rpb25zWwotLSAgICAgICAgZGVmYXVsdDogYnJlYWs7Ci0t
ICAgICAgfQotLSAgICBpZiAoeXljaGFyX2JhY2t1cCAhPSB5eWNoYXIpCi0tICAgICAgWVlfTEFD
X0RJU0NBUkQgKCJ5eWNoYXIgY2hhbmdlIik7Ci0tICB9XV0sIFtbCi0tICBzd2l0Y2ggKHl5bikK
LS0gICAgewotLSAgICAgIF1iNF91c2VyX2FjdGlvbnNbCi0tICAgICAgZGVmYXVsdDogYnJlYWs7
Ci0tICAgIH1dXSlbCi0tICAvKiBVc2VyIHNlbWFudGljIGFjdGlvbnMgc29tZXRpbWVzIGFsdGVy
IHl5Y2hhciwgYW5kIHRoYXQgcmVxdWlyZXMKLS0gICAgIHRoYXQgeXl0b2tlbiBiZSB1cGRhdGVk
IHdpdGggdGhlIG5ldyB0cmFuc2xhdGlvbi4gIFdlIHRha2UgdGhlCi0tICAgICBhcHByb2FjaCBv
ZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZvcmUgZXZlcnkgdXNlIG9mIHl5dG9rZW4uCi0t
ICAgICBPbmUgYWx0ZXJuYXRpdmUgaXMgdHJhbnNsYXRpbmcgaGVyZSBhZnRlciBldmVyeSBzZW1h
bnRpYyBhY3Rpb24sCi0tICAgICBidXQgdGhhdCB0cmFuc2xhdGlvbiB3b3VsZCBiZSBtaXNzZWQg
aWYgdGhlIHNlbWFudGljIGFjdGlvbiBpbnZva2VzCi0tICAgICBZWUFCT1JULCBZWUFDQ0VQVCwg
b3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRlcmluZyB5eWNoYXIgb3IKLS0gICAgIGlm
IGl0IGludm9rZXMgWVlCQUNLVVAuICBJbiB0aGUgY2FzZSBvZiBZWUFCT1JUIG9yIFlZQUNDRVBU
LCBhbgotLSAgICAgaW5jb3JyZWN0IGRlc3RydWN0b3IgbWlnaHQgdGhlbiBiZSBpbnZva2VkIGlt
bWVkaWF0ZWx5LiAgSW4gdGhlCi0tICAgICBjYXNlIG9mIFlZRVJST1Igb3IgWVlCQUNLVVAsIHN1
YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAotLSAgICAgdG8gYW4gaW5jb3JyZWN0
IGRlc3RydWN0b3IgY2FsbCBvciB2ZXJib3NlIHN5bnRheCBlcnJvciBtZXNzYWdlCi0tICAgICBi
ZWZvcmUgdGhlIGxvb2thaGVhZCBpcyB0cmFuc2xhdGVkLiAgKi8KLS0gIFlZX1NZTUJPTF9QUklO
VCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKLS0KLS0gIFlZUE9QU1RB
Q0sgKHl5bGVuKTsKLS0gIHl5bGVuID0gMDsKLS0gIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNz
cCk7Ci0tCi0tICAqKyt5eXZzcCA9IHl5dmFsO11iNF9sb2NhdGlvbnNfaWYoWwotLSAgKisreXls
c3AgPSB5eWxvYztdKVsKLS0KLS0gIC8qIE5vdyAnc2hpZnQnIHRoZSByZXN1bHQgb2YgdGhlIHJl
ZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCi0tICAgICB0aGF0IGdvZXMgdG8sIGJhc2Vk
IG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBhbmQgdGhlIHJ1bGUKLS0gICAgIG51bWJl
ciByZWR1Y2VkIGJ5LiAgKi8KLS0gIHsKLS0gICAgY29uc3QgaW50IHl5bGhzID0geXlyMVt5eW5d
IC0gWVlOVE9LRU5TOwotLSAgICBjb25zdCBpbnQgeXlpID0geXlwZ290b1t5eWxoc10gKyAqeXlz
c3A7Ci0tICAgIHl5c3RhdGUgPSAoMCA8PSB5eWkgJiYgeXlpIDw9IFlZTEFTVCAmJiB5eWNoZWNr
W3l5aV0gPT0gKnl5c3NwCi0tICAgICAgICAgICAgICAgPyB5eXRhYmxlW3l5aV0KLS0gICAgICAg
ICAgICAgICA6IHl5ZGVmZ290b1t5eWxoc10pOwotLSAgfQotLQotLSAgZ290byB5eW5ld3N0YXRl
OwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0tfCB5
eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvci4gIHwKLS1gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLXl5ZXJybGFiOgotLSAgLyogTWFrZSBzdXJlIHdl
IGhhdmUgbGF0ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4gIFNlZSBjb21tZW50cyBhdAotLSAg
ICAgdXNlciBzZW1hbnRpYyBhY3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLwot
LSAgeXl0b2tlbiA9IHl5Y2hhciA9PSBZWUVNUFRZID8gWVlFTVBUWSA6IFlZVFJBTlNMQVRFICh5
eWNoYXIpOwotLQotLSAgLyogSWYgbm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9y
LCByZXBvcnQgdGhpcyBlcnJvci4gICovCi0tICBpZiAoIXl5ZXJyc3RhdHVzKQotLSAgICB7Ci0t
ICAgICAgKyt5eW5lcnJzOwotLSNpZiAhIFlZRVJST1JfVkVSQk9TRQotLSAgICAgIHl5ZXJyb3Ig
KF1iNF95eWVycm9yX2FyZ3NbWVlfKCJzeW50YXggZXJyb3IiKSk7Ci0tI2Vsc2UKLS0jIGRlZmlu
ZSBZWVNZTlRBWF9FUlJPUiB5eXN5bnRheF9lcnJvciAoJnl5bXNnX2FsbG9jLCAmeXltc2csIFxd
YjRfbGFjX2lmKFtbCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5
ZXNhLCAmeXllcywgJnl5ZXNfY2FwYWNpdHksIFxdXSlbCi0tICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHl5c3NwLCB5eXRva2VuKQotLSAgICAgIHsKLS0gICAgICAgIGNo
YXIgY29uc3QgKnl5bXNncCA9IFlZXygic3ludGF4IGVycm9yIik7Ci0tICAgICAgICBpbnQgeXlz
eW50YXhfZXJyb3Jfc3RhdHVzO11iNF9sYWNfaWYoW1sKLS0gICAgICAgIGlmICh5eWNoYXIgIT0g
WVlFTVBUWSkKLS0gICAgICAgICAgWVlfTEFDX0VTVEFCTElTSDtdXSlbCi0tICAgICAgICB5eXN5
bnRheF9lcnJvcl9zdGF0dXMgPSBZWVNZTlRBWF9FUlJPUjsKLS0gICAgICAgIGlmICh5eXN5bnRh
eF9lcnJvcl9zdGF0dXMgPT0gMCkKLS0gICAgICAgICAgeXltc2dwID0geXltc2c7Ci0tICAgICAg
ICBlbHNlIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0dXMgPT0gMSkKLS0gICAgICAgICAgewotLSAg
ICAgICAgICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKLS0gICAgICAgICAgICAgIFlZU1RBQ0tf
RlJFRSAoeXltc2cpOwotLSAgICAgICAgICAgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExP
QyAoeXltc2dfYWxsb2MpOwotLSAgICAgICAgICAgIGlmICgheXltc2cpCi0tICAgICAgICAgICAg
ICB7Ci0tICAgICAgICAgICAgICAgIHl5bXNnID0geXltc2didWY7Ci0tICAgICAgICAgICAgICAg
IHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOwotLSAgICAgICAgICAgICAgICB5eXN5bnRh
eF9lcnJvcl9zdGF0dXMgPSAyOwotLSAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UK
LS0gICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgeXlzeW50YXhfZXJyb3Jfc3RhdHVz
ID0gWVlTWU5UQVhfRVJST1I7Ci0tICAgICAgICAgICAgICAgIHl5bXNncCA9IHl5bXNnOwotLSAg
ICAgICAgICAgICAgfQotLSAgICAgICAgICB9Ci0tICAgICAgICB5eWVycm9yIChdYjRfeXllcnJv
cl9hcmdzW3l5bXNncCk7Ci0tICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDIp
Ci0tICAgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7Ci0tICAgICAgfQotLSMgdW5kZWYgWVlT
WU5UQVhfRVJST1IKLS0jZW5kaWYKLS0gICAgfQotLQotLV1iNF9sb2NhdGlvbnNfaWYoW1sgIHl5
ZXJyb3JfcmFuZ2VbMV0gPSB5eWxsb2M7XV0pWwotLQotLSAgaWYgKHl5ZXJyc3RhdHVzID09IDMp
Ci0tICAgIHsKLS0gICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9v
a2FoZWFkIHRva2VuIGFmdGVyIGFuCi0tICAgICAgICAgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwot
LQotLSAgICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCi0tICAgICAgICB7Ci0tICAgICAgICAgIC8q
IFJldHVybiBmYWlsdXJlIGlmIGF0IGVuZCBvZiBpbnB1dC4gICovCi0tICAgICAgICAgIGlmICh5
eWNoYXIgPT0gWVlFT0YpCi0tICAgICAgICAgICAgWVlBQk9SVDsKLS0gICAgICAgIH0KLS0gICAg
ICBlbHNlCi0tICAgICAgICB7Ci0tICAgICAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2Fy
ZGluZyIsCi0tICAgICAgICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWxdYjRfbG9jYXRp
b25zX2lmKFssICZ5eWxsb2NdKVtdYjRfdXNlcl9hcmdzWyk7Ci0tICAgICAgICAgIHl5Y2hhciA9
IFlZRU1QVFk7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0KLS0gIC8qIEVsc2Ugd2lsbCB0cnkgdG8g
cmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgotLSAgICAgdG9r
ZW4uICAqLwotLSAgZ290byB5eWVycmxhYjE7Ci0tCi0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0tfCB5eWVycm9ybGFiIC0tIGVycm9y
IHJhaXNlZCBleHBsaWNpdGx5IGJ5IFlZRVJST1IuICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0teXllcnJvcmxhYjoKLS0gIC8qIFBh
Y2lmeSBjb21waWxlcnMgd2hlbiB0aGUgdXNlciBjb2RlIG5ldmVyIGludm9rZXMgWVlFUlJPUiBh
bmQgdGhlCi0tICAgICBsYWJlbCB5eWVycm9ybGFiIHRoZXJlZm9yZSBuZXZlciBhcHBlYXJzIGlu
IHVzZXIgY29kZS4gICovCi0tICBpZiAoMCkKLS0gICAgWVlFUlJPUjsKLS0KLS0gIC8qIERvIG5v
dCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdob3NlIGFjdGlvbiB0cmlnZ2VyZWQK
LS0gICAgIHRoaXMgWVlFUlJPUi4gICovCi0tICBZWVBPUFNUQUNLICh5eWxlbik7Ci0tICB5eWxl
biA9IDA7Ci0tICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwotLSAgeXlzdGF0ZSA9ICp5
eXNzcDsKLS0gIGdvdG8geXllcnJsYWIxOwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS18IHl5ZXJybGFiMSAt
LSBjb21tb24gY29kZSBmb3IgYm90aCBzeW50YXggZXJyb3IgYW5kIFlZRVJST1IuICB8Ci0tYC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwotLXl5ZXJybGFiMToKLS0gIHl5ZXJyc3RhdHVzID0gMzsgICAgICAvKiBFYWNoIHJlYWwg
dG9rZW4gc2hpZnRlZCBkZWNyZW1lbnRzIHRoaXMuICAqLwotLQotLSAgZm9yICg7OykKLS0gICAg
ewotLSAgICAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLS0gICAgICBpZiAoIXl5cGFjdF92YWx1
ZV9pc19kZWZhdWx0ICh5eW4pKQotLSAgICAgICAgewotLSAgICAgICAgICB5eW4gKz0gWVlURVJS
T1I7Ci0tICAgICAgICAgIGlmICgwIDw9IHl5biAmJiB5eW4gPD0gWVlMQVNUICYmIHl5Y2hlY2tb
eXluXSA9PSBZWVRFUlJPUikKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICB5eW4gPSB5
eXRhYmxlW3l5bl07Ci0tICAgICAgICAgICAgICBpZiAoMCA8IHl5bikKLS0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgfQotLQotLSAgICAgIC8qIFBvcCB0
aGUgY3VycmVudCBzdGF0ZSBiZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIGVycm9yIHRva2Vu
LiAgKi8KLS0gICAgICBpZiAoeXlzc3AgPT0geXlzcykKLS0gICAgICAgIFlZQUJPUlQ7Ci0tCi0t
XWI0X2xvY2F0aW9uc19pZihbWyAgICAgIHl5ZXJyb3JfcmFuZ2VbMV0gPSAqeXlsc3A7XV0pWwot
LSAgICAgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogcG9wcGluZyIsCi0tICAgICAgICAgICAgICAgICAg
eXlzdG9zW3l5c3RhdGVdLCB5eXZzcF1iNF9sb2NhdGlvbnNfaWYoWywgeXlsc3BdKVtdYjRfdXNl
cl9hcmdzWyk7Ci0tICAgICAgWVlQT1BTVEFDSyAoMSk7Ci0tICAgICAgeXlzdGF0ZSA9ICp5eXNz
cDsKLS0gICAgICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwotLSAgICB9XWI0X2xhY19p
ZihbWwotLQotLSAgLyogSWYgdGhlIHN0YWNrIHBvcHBpbmcgYWJvdmUgZGlkbid0IGxvc2UgdGhl
IGluaXRpYWwgY29udGV4dCBmb3IgdGhlCi0tICAgICBjdXJyZW50IGxvb2thaGVhZCB0b2tlbiwg
dGhlIHNoaWZ0IGJlbG93IHdpbGwgZm9yIHN1cmUuICAqLwotLSAgWVlfTEFDX0RJU0NBUkQgKCJl
cnJvciByZWNvdmVyeSIpO11dKVsKLS0KLS0gIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVE
X0JFR0lOCi0tICAqKyt5eXZzcCA9IHl5bHZhbDsKLS0gIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJ
QUxJWkVEX0VORAotLV1iNF9sb2NhdGlvbnNfaWYoW1sKLS0gIHl5ZXJyb3JfcmFuZ2VbMl0gPSB5
eWxsb2M7Ci0tICAvKiBVc2luZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3b3VsZCBjaGFuZ2Ug
dGhlIGxvY2F0aW9uIG9mCi0tICAgICB0aGUgbG9va2FoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxl
IHRob3VnaC4gICovCi0tICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsIHl5ZXJyb3JfcmFuZ2UsIDIp
OwotLSAgKisreXlsc3AgPSB5eWxvYztdXSlbCi0tCi0tICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9r
ZW4uICAqLwotLSAgWVlfU1lNQk9MX1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2
c3AsIHl5bHNwKTsKLS0KLS0gIHl5c3RhdGUgPSB5eW47Ci0tICBnb3RvIHl5bmV3c3RhdGU7Ci0t
Ci0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlhY2Nl
cHRsYWIgLS0gWVlBQ0NFUFQgY29tZXMgaGVyZS4gIHwKLS1gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCi0teXlhY2NlcHRsYWI6Ci0tICB5eXJlc3VsdCA9IDA7Ci0tICBn
b3RvIHl5cmV0dXJuOwotLQotLQotLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0uCi0tfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4gIHwKLS1gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLXl5YWJvcnRsYWI6Ci0tICB5eXJlc3VsdCA9
IDE7Ci0tICBnb3RvIHl5cmV0dXJuOwotLQotLQotLSNpZiBdYjRfbGFjX2lmKFtbMV1dLCBbWyFk
ZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NFXV0pWwotLS8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS18IHl5ZXhoYXVzdGVkbGFi
IC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8Ci0tYC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLXl5ZXhoYXVzdGVkbGFiOgotLSAg
eXllcnJvciAoXWI0X3l5ZXJyb3JfYXJnc1tZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7Ci0tICB5
eXJlc3VsdCA9IDI7Ci0tICAvKiBGYWxsIHRocm91Z2guICAqLwotLSNlbmRpZgotLQotLQotLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0t
fCB5eXJldHVybiAtLSBwYXJzaW5nIGlzIGZpbmlzaGVkLCByZXR1cm4gdGhlIHJlc3VsdC4gIHwK
LS1gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LwotLXl5cmV0dXJuOgotLSAgaWYgKHl5Y2hhciAhPSBZWUVNUFRZKQotLSAgICB7Ci0tICAgICAg
LyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4gIFNlZSBj
b21tZW50cyBhdAotLSAgICAgICAgIHVzZXIgc2VtYW50aWMgYWN0aW9ucyBmb3Igd2h5IHRoaXMg
aXMgbmVjZXNzYXJ5LiAgKi8KLS0gICAgICB5eXRva2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7
Ci0tICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKLS0g
ICAgICAgICAgICAgICAgICB5eXRva2VuLCAmeXlsdmFsXWI0X2xvY2F0aW9uc19pZihbLCAmeXls
bG9jXSlbXWI0X3VzZXJfYXJnc1spOwotLSAgICB9Ci0tICAvKiBEbyBub3QgcmVjbGFpbSB0aGUg
c3ltYm9scyBvZiB0aGUgcnVsZSB3aG9zZSBhY3Rpb24gdHJpZ2dlcmVkCi0tICAgICB0aGlzIFlZ
QUJPUlQgb3IgWVlBQ0NFUFQuICAqLwotLSAgWVlQT1BTVEFDSyAoeXlsZW4pOwotLSAgWVlfU1RB
Q0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKLS0gIHdoaWxlICh5eXNzcCAhPSB5eXNzKQotLSAgICB7
Ci0tICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IHBvcHBpbmciLAotLSAgICAgICAgICAgICAg
ICAgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcF1iNF9sb2NhdGlvbnNfaWYoWywgeXlsc3BdKVtdYjRf
dXNlcl9hcmdzWyk7Ci0tICAgICAgWVlQT1BTVEFDSyAoMSk7Ci0tICAgIH0KLS0jaWZuZGVmIHl5
b3ZlcmZsb3cKLS0gIGlmICh5eXNzICE9IHl5c3NhKQotLSAgICBZWVNUQUNLX0ZSRUUgKHl5c3Mp
OwotLSNlbmRpZl1iNF9sYWNfaWYoW1sKLS0gIGlmICh5eWVzICE9IHl5ZXNhKQotLSAgICBZWVNU
QUNLX0ZSRUUgKHl5ZXMpO11dKWI0X3B1c2hfaWYoW1sKLS0gIHl5cHMtPnl5bmV3ID0gMTsKLS0K
LS0KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLXwgeXlw
dXNocmV0dXJuIC0tIGFzayBmb3IgdGhlIG5leHQgdG9rZW4uICB8Ci0tYC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS15eXB1c2hyZXR1cm46XV0pWwotLSNpZiBZ
WUVSUk9SX1ZFUkJPU0UKLS0gIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKLS0gICAgWVlTVEFDS19G
UkVFICh5eW1zZyk7Ci0tI2VuZGlmCi0tICByZXR1cm4geXlyZXN1bHQ7Ci0tfQotLV1iNF9lcGls
b2d1ZVtdZG5sCi0tYjRfb3V0cHV0X2VuZAotLQotLWI0X2RlZmluZXNfaWYoW1sKLS1dYjRfb3V0
cHV0X2JlZ2luKFtiNF9zcGVjX2RlZmluZXNfZmlsZV0pWwotLV1iNF9jb3B5cmlnaHQoW0Jpc29u
IGludGVyZmFjZSBmb3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQ10pWwotLV1iNF9kaXNjbGFpbWVy
WwotLV1iNF9zaGFyZWRfZGVjbGFyYXRpb25zWwotLV1iNF9vdXRwdXRfZW5kWwotLV1dKSMgYjRf
ZGVmaW5lc19pZgotZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2Zs
ZXgtYmlzb24vdXBkYXRlX2ZsZXhfYmlzb25fYmluYXJpZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5Ci1k
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDk5YzAwMmIwNGU3Li4wMDAwMDAwMDAwMAot
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi91cGRhdGVfZmxl
eF9iaXNvbl9iaW5hcmllcy5weQotKysrIC9kZXYvbnVsbAotQEAgLTEsNjkgKzAsMCBAQAotLSMh
L3Vzci9iaW4vcHl0aG9uMgotLSMKLS0jIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0tIyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLSMKLS0jIHVwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVz
LnB5OgotLSMgICBIZWxwZXIgc2NyaXB0IHRvIHVwZGF0ZSB0aGUgdmVyc2lvbiBvZiBmbGV4IGFu
ZCBiaXNvbiBpbiBjbG91ZCBzdG9yYWdlLgotLSMgICBUaGVzZSBiaW5hcmllcyBhcmUgdXNlZCB0
byBnZW5lcmF0ZSB0aGUgQU5HTEUgdHJhbnNsYXRvcidzIGxleGVyIGFuZCBwYXJzZXIuCi0tIyAg
IFRoaXMgc2NyaXB0IHJlbGllcyBvbiBmbGV4IGFuZCBiaXNvbiBiaW5hcmllcyB0byBiZSBleHRl
cm5hbGx5IGJ1aWx0IHdoaWNoCi0tIyAgIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmFyZSBvcGVyYXRp
b24uIEl0IGN1cnJlbnRseSBvbmx5IHdvcmtzIG9uIFdpbmRvd3MgYW5kCi0tIyAgIExpbnV4LiBJ
dCBhbHNvIHdpbGwgdXBkYXRlIHRoZSBoYXNoZXMgc3RvcmVkIGluIHRoZSB0cmVlLiBGb3IgbW9y
ZSBpbmZvIHNlZQotLSMgICBSRUFETUUubWQgaW4gdGhpcyBmb2xkZXIuCi0tCi0taW1wb3J0IG9z
Ci0taW1wb3J0IHBsYXRmb3JtCi0taW1wb3J0IHNodXRpbAotLWltcG9ydCBzeXMKLS0KLS1zeXMu
cGF0aC5hcHBlbmQoJ3Rvb2xzLycpCi0taW1wb3J0IGFuZ2xlX3Rvb2xzCi0tCi0tCi0tZGVmIG1h
aW4oKToKLS0gICAgaWYgYW5nbGVfdG9vbHMuaXNfbGludXg6Ci0tICAgICAgICBzdWJkaXIgPSAn
bGludXgnCi0tICAgICAgICBmaWxlcyA9IFsnZmxleCcsICdiaXNvbiddCi0tICAgIGVsaWYgYW5n
bGVfdG9vbHMuaXNfd2luZG93czoKLS0gICAgICAgIHN1YmRpciA9ICd3aW5kb3dzJwotLSAgICAg
ICAgZmlsZXMgPSBbCi0tICAgICAgICAgICAgJ2ZsZXguZXhlJywgJ2Jpc29uLmV4ZScsICdtNC5l
eGUnLCAnbXN5cy0yLjAuZGxsJywgJ21zeXMtaWNvbnYtMi5kbGwnLAotLSAgICAgICAgICAgICdt
c3lzLWludGwtOC5kbGwnCi0tICAgICAgICBdCi0tICAgIGVsc2U6Ci0tICAgICAgICBwcmludCgn
U2NyaXB0IG11c3QgYmUgcnVuIG9uIExpbnV4IG9yIFdpbmRvd3MuJykKLS0gICAgICAgIHJldHVy
biAxCi0tCi0tICAgIGZpbGVzID0gW29zLnBhdGguam9pbihzeXMucGF0aFswXSwgc3ViZGlyLCBm
KSBmb3IgZiBpbiBmaWxlc10KLS0KLS0gICAgIyBTdGVwIDE6IFVwbG9hZCB0byBjbG91ZCBzdG9y
YWdlCi0tICAgIGlmIG5vdCBhbmdsZV90b29scy51cGxvYWRfdG9fZ29vZ2xlX3N0b3JhZ2UoJ2Fu
Z2xlLWZsZXgtYmlzb24nLCBmaWxlcyk6Ci0tICAgICAgICBwcmludCgnRXJyb3IgdXBsb2FkIHRv
IGNsb3VkIHN0b3JhZ2UnKQotLSAgICAgICAgcmV0dXJuIDEKLS0KLS0gICAgIyBTdGVwIDI6IFN0
YWdlIG5ldyBTSEEgdG8gZ2l0Ci0tICAgIGlmIG5vdCBhbmdsZV90b29scy5zdGFnZV9nb29nbGVf
c3RvcmFnZV9zaGExKGZpbGVzKToKLS0gICAgICAgIHByaW50KCdFcnJvciBydW5uaW5nIGdpdCBh
ZGQnKQotLSAgICAgICAgcmV0dXJuIDIKLS0KLS0gICAgcHJpbnQoJycpCi0tICAgIHByaW50KCdU
aGUgdXBkYXRlZCBTSEEgaGFzIGJlZW4gc3RhZ2VkIGZvciBjb21taXQuIFBsZWFzZSBjb21taXQg
YW5kIHVwbG9hZC4nKQotLSAgICBwcmludCgnU3VnZ2VzdGVkIGNvbW1pdCBtZXNzYWdlIChwbGVh
c2UgaW5kaWNhdGUgZmxleC9iaXNvbiB2ZXJzaW9ucyk6JykKLS0gICAgcHJpbnQoJy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0nKQotLSAgICBwcmludCgnJykKLS0gICAgcHJpbnQoJ1VwZGF0
ZSBmbGV4IGFuZCBiaXNvbiBiaW5hcmllcyBmb3IgJXMuJyAlIHBsYXRmb3JtLnN5c3RlbSgpKQot
LSAgICBwcmludCgnJykKLS0gICAgcHJpbnQoJ1RoZXNlIGJpbmFyaWVzIHdlcmUgdXBkYXRlZCB1
c2luZyAlcy4nICUgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykpCi0tICAgIHByaW50KCdQbGVh
c2Ugc2VlIGluc3RydWN0aW9ucyBpbiB0b29scy9mbGV4LWJpc29uL1JFQURNRS5tZC4nKQotLSAg
ICBwcmludCgnJykKLS0gICAgcHJpbnQoJ2ZsZXggaXMgYXQgdmVyc2lvbiBUT0RPLicpCi0tICAg
IHByaW50KCdiaXNvbiBpcyBhdCB2ZXJzaW9uIFRPRE8uJykKLS0gICAgcHJpbnQoJycpCi0tICAg
IHByaW50KCdCdWc6IE5vbmUnKQotLQotLSAgICByZXR1cm4gMAotLQotLQotLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0tICAgIHN5cy5leGl0KG1haW4oKSkKLWRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvYmlzb24uZXhlLnNo
YTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvYmlz
b24uZXhlLnNoYTEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOGNiNWY0ZmI1YmIu
LjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJp
c29uL3dpbmRvd3MvYmlzb24uZXhlLnNoYTEKLSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAK
LS00YTZlMWRjZWQ2MWRhYjJmY2Q4MjhlZGJmYmZhN2ViMDIxNWNmMmE0Ci1cIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3dpbmRvd3MvZmxleC5leGUuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9mbGV4LmV4ZS5zaGExCi1kZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKLWluZGV4IGZhYTc4ZWRjYWZlLi4wMDAwMDAwMDAwMAotLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL2ZsZXguZXhlLnNoYTEK
LSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAKLS1iYzUwYjNiNmU4NGEzMDk0MGFhMTIyM2Y2
OTJjOWYxZmM5YmVkYmY5Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbTQuZXhl
LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3Mv
bTQuZXhlLnNoYTEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNTY0M2RmYjNiMDUu
LjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJp
c29uL3dpbmRvd3MvbTQuZXhlLnNoYTEKLSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAKLS0w
NjgzNmU0NWIwNWQ1OTdkNTZiNzRmZWJlM2JjZmQ3NmU4MGVmOGY4Ci1cIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9m
bGV4LWJpc29uL3dpbmRvd3MvbXN5cy0yLjAuZGxsLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbXN5cy0yLjAuZGxsLnNoYTEKLWRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOTgzNTJjNzQ2MzUuLjAwMDAwMDAwMDAwCi0tLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbXN5cy0yLjAu
ZGxsLnNoYTEKLSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAKLS1kMGJlYWI3ZWM3N2IyNWFj
NzFiZDJkM2JmNTRmNGVmZDM5ZTM5NDdmCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRv
d3MvbXN5cy1pY29udi0yLmRsbC5zaGExIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMv
ZmxleC1iaXNvbi93aW5kb3dzL21zeXMtaWNvbnYtMi5kbGwuc2hhMQotZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0Ci1pbmRleCBmNTJiYzRiNDJiOS4uMDAwMDAwMDAwMDAKLS0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLWljb252LTIuZGxs
LnNoYTEKLSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAKLS0wNTc5ZjE1NjNlMjIwZDYxMjFi
NjVhNWY0NzI5OTE5Y2QwY2I2YWY5Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3Mv
bXN5cy1pbnRsLTguZGxsLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4
LWJpc29uL3dpbmRvd3MvbXN5cy1pbnRsLTguZGxsLnNoYTEKLWRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAotaW5kZXggYTczNTkyMTEzZjEuLjAwMDAwMDAwMDAwCi0tLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbXN5cy1pbnRsLTguZGxsLnNoYTEK
LSsrKyAvZGV2L251bGwKLUBAIC0xICswLDAgQEAKLS0yMTJhOWVmOTBlMjFhOThmZjU3Y2EzMDFh
NjBjODRjYmVjYTdiZTI4Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYgLS1naXQg
YS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmggYi9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3Jt
LmgKLWluZGV4IGI2MDNmZjliYWQyLi5mNGVjNGY4ODM3YyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUv
cGxhdGZvcm0vUGxhdGZvcm0uaAotKysrIGIvaW5jbHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oCi1A
QCAtOSw2ICs5LDcgQEAKLSAjaWZuZGVmIEFOR0xFX1BMQVRGT1JNX0gKLSAjZGVmaW5lIEFOR0xF
X1BMQVRGT1JNX0gKK2RpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVy
ZXJnbF91dGlscy5jcHAgYi9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGls
cy5jcHAKK2luZGV4IDRlYzk5YmNlYS4uNmEyNTBkYjg1IDEwMDY0NAorLS0tIGEvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCisrKysgYi9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5jcHAKK0BAIC0xNjE1LDcgKzE2MTUsOSBAQCB2
b2lkIEluaXRpYWxpemVGZWF0dXJlcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBhbmds
ZTo6RmVhdHVyZXNHTCAqZmVhdHVyZQorICAgICBib29sIGxpbWl0TWF4VGV4dHVyZVNpemUgPSBp
c0ludGVsICYmIElzTGludXgoKSAmJiBHZXRMaW51eE9TVmVyc2lvbigpIDwgT1NWZXJzaW9uKDUs
IDAsIDApOworICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgbGltaXRNYXhU
ZXh0dXJlU2l6ZVRvNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNBbmRyb2lk
KCkgfHwgbGltaXRNYXhUZXh0dXJlU2l6ZSk7CistICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9O
KGZlYXR1cmVzLCBsaW1pdE1heE1TQUFTYW1wbGVzVG80LCBJc0FuZHJvaWQoKSk7CisrICAgIC8v
IE9uIEFwcGxlIHN3aXRjaGFibGUgZ3JhcGhpY3MsIEdMX01BWF9TQU1QTEVTIG1heSBkaWZmZXIg
YmV0d2VlbiB0aGUgR1BVcy4KKysgICAgLy8gNCBpcyBhIGxvd2VzdCBjb21tb24gZGVub21pbmF0
b3IgdGhhdCBpcyBhbHdheXMgc3VwcG9ydGVkLgorKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElP
TihmZWF0dXJlcywgbGltaXRNYXhNU0FBU2FtcGxlc1RvNCwgSXNBbmRyb2lkKCkgfHwgKElzQXBw
bGUoKSAmJiAoaXNJbnRlbCB8fCBpc0FNRCB8fCBpc052aWRpYSkpKTsKKyAgICAgQU5HTEVfRkVB
VFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGxpbWl0TWF4M2RBcnJheVRleHR1cmVTaXplVG8xMDI0
LCBsaW1pdE1heFRleHR1cmVTaXplKTsKICAKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1
ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxhcnJheT4KKyAgICAgQU5HTEVfRkVBVFVSRV9DT05E
SVRJT04oZmVhdHVyZXMsIGFsbG93Q2xlYXJGb3JSb2J1c3RSZXNvdXJjZUluaXQsIElzQXBwbGUo
KSk7CitAQCAtMTY3Myw2ICsxNjc1LDkgQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgYW5nbGU6OkZlYXR1cmVzR0wgKmZlYXR1cmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhhbmdsZWJ1Zy5jb20vMjI3Myk6IGRpYWdu
b3NlIGNyYXNoZXMgd2l0aCB0aGlzIHdvcmthcm91bmQuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlKTsKICAKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL1BhY2tlZEVudW1zLmgg
Yi9zcmMvY29tbW9uL1BhY2tlZEVudW1zLmgKLWluZGV4IGJkNWZjMzQwZGNjLi42MzM2OGUyNWRm
ZSAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vUGFja2VkRW51bXMuaAotKysrIGIvc3JjL2NvbW1v
bi9QYWNrZWRFbnVtcy5oCi1AQCAtODMsMTAgKzgzLDcgQEAgY2xhc3MgUGFja2VkRW51bU1hcAot
ICAgICAgICAgLy8gV2UgdXNlIGEgZm9yIGxvb3AgaW5zdGVhZCBvZiByYW5nZS1mb3IgdG8gd29y
ayBhcm91bmQgYSBsaW1pdGF0aW9uIGluIE1TVkMuCi0gICAgICAgICBmb3IgKGNvbnN0IEluaXRQ
YWlyICppdCA9IGluaXQuYmVnaW4oKTsgaXQgIT0gaW5pdC5lbmQoKTsgKytpdCkKLSAgICAgICAg
IHsKLS0gICAgICAgICAgICAvLyBUaGlzIGhvcnJpYmxlIGNvbnN0X2Nhc3QgcGF0dGVybiBpcyBu
ZWNlc3NhcnkgdG8gd29yayBhcm91bmQgYSBjb25zdGV4cHIgbGltaXRhdGlvbi4KLS0gICAgICAg
ICAgICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzM0MTk5Nzc0LyAuIE5vdGUg
dGhhdCBpdCBzaG91bGQgYmUgZml4ZWQgd2l0aCBDKysxNy4KLS0gICAgICAgICAgICBjb25zdF9j
YXN0PFQgJj4oY29uc3RfY2FzdDxjb25zdCBTdG9yYWdlICY+KAotLSAgICAgICAgICAgICAgICBt
UHJpdmF0ZURhdGEpW3N0YXRpY19jYXN0PFVuZGVybHlpbmdUeXBlPihpdC0+Zmlyc3QpXSkgPSBp
dC0+c2Vjb25kOwotKyAgICAgICAgICAgIG1Qcml2YXRlRGF0YVtzdGF0aWNfY2FzdDxVbmRlcmx5
aW5nVHlwZT4oaXQtPmZpcnN0KV0gPSBpdC0+c2Vjb25kOwotICAgICAgICAgfQotICAgICB9Cisr
ICAgIC8vIGJ1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjI1CisrICAgIEFOR0xF
X0ZFQVRVUkVfQ09ORElUSU9OKGZlYXR1cmVzLCBmbHVzaEJlZm9yZUJpbmRGcmFtZWJ1ZmZlciwg
SXNBcHBsZSgpICYmIGlzSW50ZWwpOworKworICAgICAvLyBXb3JrYXJvdW5kIGZvciBpbmNvcnJl
Y3Qgc2FtcGxpbmcgZnJvbSBEWFQxIHNSR0IgdGV4dHVyZXMgaW4gSW50ZWwgT3BlbkdMIG9uIFdp
bmRvd3MuCisgICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKGZlYXR1cmVzLCBhdm9pZERYVDFz
UkdCVGV4dHVyZUZvcm1hdCwgSXNXaW5kb3dzKCkgJiYgaXNJbnRlbCk7CisgCitkaWZmIC0tZ2l0
IGEvc3JjL3RoaXJkX3BhcnR5L3ZvbGsvdm9say5jIGIvc3JjL3RoaXJkX3BhcnR5L3ZvbGsvdm9s
ay5jCitpbmRleCAzNTE3Y2I0ZjYuLmJiYzA5OWJkZiAxMDA2NDQKKy0tLSBhL3NyYy90aGlyZF9w
YXJ0eS92b2xrL3ZvbGsuYworKysrIGIvc3JjL3RoaXJkX3BhcnR5L3ZvbGsvdm9say5jCitAQCAt
MywxNiArMywxNiBAQAorICNpbmNsdWRlICJ2b2xrLmgiCisgCisgI2lmZGVmIF9XSU4zMgorLQl0
eXBlZGVmIGNvbnN0IGNoYXIqIExQQ1NUUjsKKy0JdHlwZWRlZiBzdHJ1Y3QgSElOU1RBTkNFX18q
IEhJTlNUQU5DRTsKKy0JdHlwZWRlZiBISU5TVEFOQ0UgSE1PRFVMRTsKKy0JI2lmZGVmIF9XSU42
NAorLQkJdHlwZWRlZiBfX2ludDY0IChfX3N0ZGNhbGwqIEZBUlBST0MpKHZvaWQpOworLQkjZWxz
ZQorLQkJdHlwZWRlZiBpbnQgKF9fc3RkY2FsbCogRkFSUFJPQykodm9pZCk7CistCSNlbmRpZgor
KyAgICB0eXBlZGVmIGNvbnN0IGNoYXIqIExQQ1NUUjsKKysgICAgdHlwZWRlZiBzdHJ1Y3QgSElO
U1RBTkNFX18qIEhJTlNUQU5DRTsKKysgICAgdHlwZWRlZiBISU5TVEFOQ0UgSE1PRFVMRTsKKysg
ICAgI2lmZGVmIF9XSU42NAorKyAgICAgICAgdHlwZWRlZiBfX2ludDY0IChfX3N0ZGNhbGwqIEZB
UlBST0MpKHZvaWQpOworKyAgICAjZWxzZQorKyAgICAgICAgdHlwZWRlZiBpbnQgKF9fc3RkY2Fs
bCogRkFSUFJPQykodm9pZCk7CisrICAgICNlbmRpZgorICNlbHNlCistIwlpbmNsdWRlIDxkbGZj
bi5oPgorKyMgICBpbmNsdWRlIDxkbGZjbi5oPgorICNlbmRpZgorIAorICNpZmRlZiBfX2NwbHVz
cGx1cworQEAgLTM0LDEwOTUgKzM0LDEwOTUgQEAgc3RhdGljIHZvaWQgdm9sa0dlbkxvYWREZXZp
Y2VUYWJsZShzdHJ1Y3QgVm9sa0RldmljZVRhYmxlKiB0YWJsZSwgdm9pZCogY29udGV4dCwKKyAK
KyBzdGF0aWMgUEZOX3ZrVm9pZEZ1bmN0aW9uIHZrR2V0SW5zdGFuY2VQcm9jQWRkclN0dWIodm9p
ZCogY29udGV4dCwgY29uc3QgY2hhciogbmFtZSkKKyB7CistCXJldHVybiB2a0dldEluc3RhbmNl
UHJvY0FkZHIoKFZrSW5zdGFuY2UpY29udGV4dCwgbmFtZSk7CisrICAgIHJldHVybiB2a0dldElu
c3RhbmNlUHJvY0FkZHIoKFZrSW5zdGFuY2UpY29udGV4dCwgbmFtZSk7CisgfQorIAorIHN0YXRp
YyBQRk5fdmtWb2lkRnVuY3Rpb24gdmtHZXREZXZpY2VQcm9jQWRkclN0dWIodm9pZCogY29udGV4
dCwgY29uc3QgY2hhciogbmFtZSkKKyB7CistCXJldHVybiB2a0dldERldmljZVByb2NBZGRyKChW
a0RldmljZSljb250ZXh0LCBuYW1lKTsKKysgICAgcmV0dXJuIHZrR2V0RGV2aWNlUHJvY0FkZHIo
KFZrRGV2aWNlKWNvbnRleHQsIG5hbWUpOworIH0KKyAKKyBWa1Jlc3VsdCB2b2xrSW5pdGlhbGl6
ZSh2b2lkKQorIHsKKyAjaWYgZGVmaW5lZChfV0lOMzIpCistCUhNT0RVTEUgbW9kdWxlID0gTG9h
ZExpYnJhcnlBKCJ2dWxrYW4tMS5kbGwiKTsKKy0JaWYgKCFtb2R1bGUpCistCQlyZXR1cm4gVktf
RVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEOworKyAgICBITU9EVUxFIG1vZHVsZSA9IExvYWRM
aWJyYXJ5QSgidnVsa2FuLTEuZGxsIik7CisrICAgIGlmICghbW9kdWxlKQorKyAgICAgICAgcmV0
dXJuIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRDsKKyAKKy0JLy8gbm90ZTogZnVuY3Rp
b24gcG9pbnRlciBpcyBjYXN0IHRocm91Z2ggdm9pZCBmdW5jdGlvbiBwb2ludGVyIHRvIHNpbGVu
Y2UgY2FzdC1mdW5jdGlvbi10eXBlIHdhcm5pbmcgb24gZ2NjOAorLQl2a0dldEluc3RhbmNlUHJv
Y0FkZHIgPSAoUEZOX3ZrR2V0SW5zdGFuY2VQcm9jQWRkcikodm9pZCgqKSh2b2lkKSlHZXRQcm9j
QWRkcmVzcyhtb2R1bGUsICJ2a0dldEluc3RhbmNlUHJvY0FkZHIiKTsKKysgICAgLy8gbm90ZTog
ZnVuY3Rpb24gcG9pbnRlciBpcyBjYXN0IHRocm91Z2ggdm9pZCBmdW5jdGlvbiBwb2ludGVyIHRv
IHNpbGVuY2UgY2FzdC1mdW5jdGlvbi10eXBlIHdhcm5pbmcgb24gZ2NjOAorKyAgICB2a0dldElu
c3RhbmNlUHJvY0FkZHIgPSAoUEZOX3ZrR2V0SW5zdGFuY2VQcm9jQWRkcikodm9pZCgqKSh2b2lk
KSlHZXRQcm9jQWRkcmVzcyhtb2R1bGUsICJ2a0dldEluc3RhbmNlUHJvY0FkZHIiKTsKKyAjZWxp
ZiBkZWZpbmVkKF9fQVBQTEVfXykKKy0Jdm9pZCogbW9kdWxlID0gZGxvcGVuKCJsaWJ2dWxrYW4u
ZHlsaWIiLCBSVExEX05PVyB8IFJUTERfTE9DQUwpOworLQlpZiAoIW1vZHVsZSkKKy0JCW1vZHVs
ZSA9IGRsb3BlbigibGlidnVsa2FuLjEuZHlsaWIiLCBSVExEX05PVyB8IFJUTERfTE9DQUwpOwor
LQlpZiAoIW1vZHVsZSkKKy0JCW1vZHVsZSA9IGRsb3BlbigibGliTW9sdGVuVksuZHlsaWIiLCBS
VExEX05PVyB8IFJUTERfTE9DQUwpOworLQlpZiAoIW1vZHVsZSkKKy0JCXJldHVybiBWS19FUlJP
Ul9JTklUSUFMSVpBVElPTl9GQUlMRUQ7CisrICAgIHZvaWQqIG1vZHVsZSA9IGRsb3BlbigibGli
dnVsa2FuLmR5bGliIiwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKysgICAgaWYgKCFtb2R1bGUp
CisrICAgICAgICBtb2R1bGUgPSBkbG9wZW4oImxpYnZ1bGthbi4xLmR5bGliIiwgUlRMRF9OT1cg
fCBSVExEX0xPQ0FMKTsKKysgICAgaWYgKCFtb2R1bGUpCisrICAgICAgICBtb2R1bGUgPSBkbG9w
ZW4oImxpYk1vbHRlblZLLmR5bGliIiwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKysgICAgaWYg
KCFtb2R1bGUpCisrICAgICAgICByZXR1cm4gVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVE
OworIAorLQl2a0dldEluc3RhbmNlUHJvY0FkZHIgPSAoUEZOX3ZrR2V0SW5zdGFuY2VQcm9jQWRk
cilkbHN5bShtb2R1bGUsICJ2a0dldEluc3RhbmNlUHJvY0FkZHIiKTsKKysgICAgdmtHZXRJbnN0
YW5jZVByb2NBZGRyID0gKFBGTl92a0dldEluc3RhbmNlUHJvY0FkZHIpZGxzeW0obW9kdWxlLCAi
dmtHZXRJbnN0YW5jZVByb2NBZGRyIik7CisgI2Vsc2UKKy0Jdm9pZCogbW9kdWxlID0gZGxvcGVu
KCJsaWJ2dWxrYW4uc28iLCBSVExEX05PVyB8IFJUTERfTE9DQUwpOworLQlpZiAoIW1vZHVsZSkK
Ky0JCW1vZHVsZSA9IGRsb3BlbigibGlidnVsa2FuLnNvLjEiLCBSVExEX05PVyB8IFJUTERfTE9D
QUwpOworLQlpZiAoIW1vZHVsZSkKKy0JCXJldHVybiBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9G
QUlMRUQ7CisrICAgIHZvaWQqIG1vZHVsZSA9IGRsb3BlbigibGlidnVsa2FuLnNvIiwgUlRMRF9O
T1cgfCBSVExEX0xPQ0FMKTsKKysgICAgaWYgKCFtb2R1bGUpCisrICAgICAgICBtb2R1bGUgPSBk
bG9wZW4oImxpYnZ1bGthbi5zby4xIiwgUlRMRF9OT1cgfCBSVExEX0xPQ0FMKTsKKysgICAgaWYg
KCFtb2R1bGUpCisrICAgICAgICByZXR1cm4gVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVE
OworIAorLQl2a0dldEluc3RhbmNlUHJvY0FkZHIgPSAoUEZOX3ZrR2V0SW5zdGFuY2VQcm9jQWRk
cilkbHN5bShtb2R1bGUsICJ2a0dldEluc3RhbmNlUHJvY0FkZHIiKTsKKysgICAgdmtHZXRJbnN0
YW5jZVByb2NBZGRyID0gKFBGTl92a0dldEluc3RhbmNlUHJvY0FkZHIpZGxzeW0obW9kdWxlLCAi
dmtHZXRJbnN0YW5jZVByb2NBZGRyIik7CisgI2VuZGlmCisgCistCXZvbGtHZW5Mb2FkTG9hZGVy
KE5VTEwsIHZrR2V0SW5zdGFuY2VQcm9jQWRkclN0dWIpOworKyAgICB2b2xrR2VuTG9hZExvYWRl
cihOVUxMLCB2a0dldEluc3RhbmNlUHJvY0FkZHJTdHViKTsKKyAKKy0JcmV0dXJuIFZLX1NVQ0NF
U1M7CisrICAgIHJldHVybiBWS19TVUNDRVNTOworIH0KKyAKKyB2b2lkIHZvbGtJbml0aWFsaXpl
Q3VzdG9tKFBGTl92a0dldEluc3RhbmNlUHJvY0FkZHIgaGFuZGxlcikKKyB7CistCXZrR2V0SW5z
dGFuY2VQcm9jQWRkciA9IGhhbmRsZXI7CisrICAgIHZrR2V0SW5zdGFuY2VQcm9jQWRkciA9IGhh
bmRsZXI7CisgCistCXZvbGtHZW5Mb2FkTG9hZGVyKE5VTEwsIHZrR2V0SW5zdGFuY2VQcm9jQWRk
clN0dWIpOworKyAgICB2b2xrR2VuTG9hZExvYWRlcihOVUxMLCB2a0dldEluc3RhbmNlUHJvY0Fk
ZHJTdHViKTsKKyB9CisgCisgdWludDMyX3Qgdm9sa0dldEluc3RhbmNlVmVyc2lvbih2b2lkKQor
IHsKKyAjaWYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkKKy0JdWludDMyX3QgYXBpVmVyc2lvbiA9
IDA7CistCWlmICh2a0VudW1lcmF0ZUluc3RhbmNlVmVyc2lvbiAmJiB2a0VudW1lcmF0ZUluc3Rh
bmNlVmVyc2lvbigmYXBpVmVyc2lvbikgPT0gVktfU1VDQ0VTUykKKy0JCXJldHVybiBhcGlWZXJz
aW9uOworKyAgICB1aW50MzJfdCBhcGlWZXJzaW9uID0gMDsKKysgICAgaWYgKHZrRW51bWVyYXRl
SW5zdGFuY2VWZXJzaW9uICYmIHZrRW51bWVyYXRlSW5zdGFuY2VWZXJzaW9uKCZhcGlWZXJzaW9u
KSA9PSBWS19TVUNDRVNTKQorKyAgICAgICAgcmV0dXJuIGFwaVZlcnNpb247CisgI2VuZGlmCisg
CistCWlmICh2a0NyZWF0ZUluc3RhbmNlKQorLQkJcmV0dXJuIFZLX0FQSV9WRVJTSU9OXzFfMDsK
KysgICAgaWYgKHZrQ3JlYXRlSW5zdGFuY2UpCisrICAgICAgICByZXR1cm4gVktfQVBJX1ZFUlNJ
T05fMV8wOworIAorLQlyZXR1cm4gMDsKKysgICAgcmV0dXJuIDA7CisgfQorIAorIHZvaWQgdm9s
a0xvYWRJbnN0YW5jZShWa0luc3RhbmNlIGluc3RhbmNlKQorIHsKKy0JbG9hZGVkSW5zdGFuY2Ug
PSBpbnN0YW5jZTsKKy0Jdm9sa0dlbkxvYWRJbnN0YW5jZShpbnN0YW5jZSwgdmtHZXRJbnN0YW5j
ZVByb2NBZGRyU3R1Yik7CistCXZvbGtHZW5Mb2FkRGV2aWNlKGluc3RhbmNlLCB2a0dldEluc3Rh
bmNlUHJvY0FkZHJTdHViKTsKKysgICAgbG9hZGVkSW5zdGFuY2UgPSBpbnN0YW5jZTsKKysgICAg
dm9sa0dlbkxvYWRJbnN0YW5jZShpbnN0YW5jZSwgdmtHZXRJbnN0YW5jZVByb2NBZGRyU3R1Yik7
CisrICAgIHZvbGtHZW5Mb2FkRGV2aWNlKGluc3RhbmNlLCB2a0dldEluc3RhbmNlUHJvY0FkZHJT
dHViKTsKKyB9CisgCisgVmtJbnN0YW5jZSB2b2xrR2V0TG9hZGVkSW5zdGFuY2UoKQorIHsKKy0J
cmV0dXJuIGxvYWRlZEluc3RhbmNlOworKyAgICByZXR1cm4gbG9hZGVkSW5zdGFuY2U7CisgfQor
IAorIHZvaWQgdm9sa0xvYWREZXZpY2UoVmtEZXZpY2UgZGV2aWNlKQorIHsKKy0JbG9hZGVkRGV2
aWNlID0gZGV2aWNlOworLQl2b2xrR2VuTG9hZERldmljZShkZXZpY2UsIHZrR2V0RGV2aWNlUHJv
Y0FkZHJTdHViKTsKKysgICAgbG9hZGVkRGV2aWNlID0gZGV2aWNlOworKyAgICB2b2xrR2VuTG9h
ZERldmljZShkZXZpY2UsIHZrR2V0RGV2aWNlUHJvY0FkZHJTdHViKTsKKyB9CisgCisgVmtEZXZp
Y2Ugdm9sa0dldExvYWRlZERldmljZSgpCisgeworLQlyZXR1cm4gbG9hZGVkRGV2aWNlOworKyAg
ICByZXR1cm4gbG9hZGVkRGV2aWNlOworIH0KKyAKKyB2b2lkIHZvbGtMb2FkRGV2aWNlVGFibGUo
c3RydWN0IFZvbGtEZXZpY2VUYWJsZSogdGFibGUsIFZrRGV2aWNlIGRldmljZSkKKyB7CistCXZv
bGtHZW5Mb2FkRGV2aWNlVGFibGUodGFibGUsIGRldmljZSwgdmtHZXREZXZpY2VQcm9jQWRkclN0
dWIpOworKyAgICB2b2xrR2VuTG9hZERldmljZVRhYmxlKHRhYmxlLCBkZXZpY2UsIHZrR2V0RGV2
aWNlUHJvY0FkZHJTdHViKTsKKyB9CisgCisgc3RhdGljIHZvaWQgdm9sa0dlbkxvYWRMb2FkZXIo
dm9pZCogY29udGV4dCwgUEZOX3ZrVm9pZEZ1bmN0aW9uICgqbG9hZCkodm9pZCosIGNvbnN0IGNo
YXIqKSkKKyB7CistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9MT0FERVIgKi8KKysgICAgLyogVk9M
S19HRU5FUkFURV9MT0FEX0xPQURFUiAqLworICNpZiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8wKQor
LQl2a0NyZWF0ZUluc3RhbmNlID0gKFBGTl92a0NyZWF0ZUluc3RhbmNlKWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlSW5zdGFuY2UiKTsKKy0JdmtFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3Bl
cnRpZXMgPSAoUEZOX3ZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKWxvYWQo
Y29udGV4dCwgInZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIik7CistCXZr
RW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMgPSAoUEZOX3ZrRW51bWVyYXRlSW5zdGFu
Y2VMYXllclByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVJbnN0YW5jZUxheWVy
UHJvcGVydGllcyIpOworKyAgICB2a0NyZWF0ZUluc3RhbmNlID0gKFBGTl92a0NyZWF0ZUluc3Rh
bmNlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW5zdGFuY2UiKTsKKysgICAgdmtFbnVtZXJhdGVJ
bnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMgPSAoUEZOX3ZrRW51bWVyYXRlSW5zdGFuY2VFeHRl
bnNpb25Qcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNp
b25Qcm9wZXJ0aWVzIik7CisrICAgIHZrRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMg
PSAoUEZOX3ZrRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAi
dmtFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcyIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX1ZFUlNJT05fMV8wKSAqLworICNpZiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKQorLQl2a0Vu
dW1lcmF0ZUluc3RhbmNlVmVyc2lvbiA9IChQRk5fdmtFbnVtZXJhdGVJbnN0YW5jZVZlcnNpb24p
bG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVJbnN0YW5jZVZlcnNpb24iKTsKKysgICAgdmtFbnVt
ZXJhdGVJbnN0YW5jZVZlcnNpb24gPSAoUEZOX3ZrRW51bWVyYXRlSW5zdGFuY2VWZXJzaW9uKWxv
YWQoY29udGV4dCwgInZrRW51bWVyYXRlSW5zdGFuY2VWZXJzaW9uIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfVkVSU0lPTl8xXzEpICovCistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9MT0FERVIg
Ki8KKysgICAgLyogVk9MS19HRU5FUkFURV9MT0FEX0xPQURFUiAqLworIH0KKyAKKyBzdGF0aWMg
dm9pZCB2b2xrR2VuTG9hZEluc3RhbmNlKHZvaWQqIGNvbnRleHQsIFBGTl92a1ZvaWRGdW5jdGlv
biAoKmxvYWQpKHZvaWQqLCBjb25zdCBjaGFyKikpCisgeworLQkvKiBWT0xLX0dFTkVSQVRFX0xP
QURfSU5TVEFOQ0UgKi8KKysgICAgLyogVk9MS19HRU5FUkFURV9MT0FEX0lOU1RBTkNFICovCisg
I2lmIGRlZmluZWQoVktfVkVSU0lPTl8xXzApCistCXZrQ3JlYXRlRGV2aWNlID0gKFBGTl92a0Ny
ZWF0ZURldmljZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURldmljZSIpOworLQl2a0Rlc3Ryb3lJ
bnN0YW5jZSA9IChQRk5fdmtEZXN0cm95SW5zdGFuY2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95
SW5zdGFuY2UiKTsKKy0JdmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzID0gKFBG
Tl92a0VudW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtF
bnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIik7CistCXZrRW51bWVyYXRlRGV2aWNl
TGF5ZXJQcm9wZXJ0aWVzID0gKFBGTl92a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyls
b2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyIpOworLQl2a0Vu
dW1lcmF0ZVBoeXNpY2FsRGV2aWNlcyA9IChQRk5fdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMp
bG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMiKTsKKy0JdmtHZXREZXZp
Y2VQcm9jQWRkciA9IChQRk5fdmtHZXREZXZpY2VQcm9jQWRkcilsb2FkKGNvbnRleHQsICJ2a0dl
dERldmljZVByb2NBZGRyIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlcyA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VGZWF0dXJlcyIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlRm9ybWF0UHJvcGVydGllcyA9
IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAi
dmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMiKTsKKy0JdmtHZXRQaHlzaWNhbERl
dmljZUltYWdlRm9ybWF0UHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUltYWdl
Rm9ybWF0UHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VG
b3JtYXRQcm9wZXJ0aWVzIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVz
ID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcylsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyIpOworLQl2a0dldFBoeXNpY2Fs
RGV2aWNlUHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMpbG9h
ZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMiKTsKKy0JdmtHZXRQaHlz
aWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmlj
ZVF1ZXVlRmFtaWx5UHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
UXVldWVGYW1pbHlQcm9wZXJ0aWVzIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFn
ZUZvcm1hdFByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZv
cm1hdFByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUlt
YWdlRm9ybWF0UHJvcGVydGllcyIpOworKyAgICB2a0NyZWF0ZURldmljZSA9IChQRk5fdmtDcmVh
dGVEZXZpY2UpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZXZpY2UiKTsKKysgICAgdmtEZXN0cm95
SW5zdGFuY2UgPSAoUEZOX3ZrRGVzdHJveUluc3RhbmNlKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eUluc3RhbmNlIik7CisrICAgIHZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcyA9
IChQRk5fdmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwg
InZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcyIpOworKyAgICB2a0VudW1lcmF0
ZURldmljZUxheWVyUHJvcGVydGllcyA9IChQRk5fdmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3Bl
cnRpZXMpbG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMiKTsK
KysgICAgdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMgPSAoUEZOX3ZrRW51bWVyYXRlUGh5c2lj
YWxEZXZpY2VzKWxvYWQoY29udGV4dCwgInZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VzIik7Cisr
ICAgIHZrR2V0RGV2aWNlUHJvY0FkZHIgPSAoUEZOX3ZrR2V0RGV2aWNlUHJvY0FkZHIpbG9hZChj
b250ZXh0LCAidmtHZXREZXZpY2VQcm9jQWRkciIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNl
RmVhdHVyZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlcylsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmlj
ZUZvcm1hdFByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0
aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzIik7
CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtH
ZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllcyIpOworKyAgICB2a0dldFBoeXNp
Y2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZU1lbW9y
eVByb3BlcnRpZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3Bl
cnRpZXMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0
UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZp
Y2VQcm9wZXJ0aWVzIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3Bl
cnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMpbG9h
ZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllcyIpOwor
KyAgICB2a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzID0gKFBG
Tl92a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzKWxvYWQoY29u
dGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFByb3BlcnRpZXMiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19WRVJTSU9OXzFfMCkgKi8KKyAjaWYgZGVmaW5lZChWS19W
RVJTSU9OXzFfMSkKKy0JdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3VwcyA9IChQRk5fdmtF
bnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3Vwcylsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZVBo
eXNpY2FsRGV2aWNlR3JvdXBzIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZl
clByb3BlcnRpZXMgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZlclByb3Bl
cnRpZXMpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsQnVmZmVyUHJv
cGVydGllcyIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxGZW5jZVByb3BlcnRpZXMg
PSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEZlbmNlUHJvcGVydGllcylsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxGZW5jZVByb3BlcnRpZXMiKTsKKy0J
dmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllcyA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZUV4dGVybmFsU2VtYXBob3JlUHJvcGVydGllcylsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzIik7CistCXZr
R2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0
dXJlczIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMiIpOworLQl2
a0dldFBoeXNpY2FsRGV2aWNlRm9ybWF0UHJvcGVydGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxE
ZXZpY2VGb3JtYXRQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
Rm9ybWF0UHJvcGVydGllczIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJv
cGVydGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMy
KWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMy
Iik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMiA9IChQRk5fdmtHZXRQ
aHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMyKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2lj
YWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVy
dGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMilsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllczIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmlj
ZVF1ZXVlRmFtaWx5UHJvcGVydGllczIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZh
bWlseVByb3BlcnRpZXMyKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZh
bWlseVByb3BlcnRpZXMyIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1h
dFByb3BlcnRpZXMyID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQ
cm9wZXJ0aWVzMilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VG
b3JtYXRQcm9wZXJ0aWVzMiIpOworKyAgICB2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlR3JvdXBz
ID0gKFBGTl92a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlR3JvdXBzKWxvYWQoY29udGV4dCwgInZr
RW51bWVyYXRlUGh5c2ljYWxEZXZpY2VHcm91cHMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmlj
ZUV4dGVybmFsQnVmZmVyUHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUV4dGVy
bmFsQnVmZmVyUHJvcGVydGllcylsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRXh0
ZXJuYWxCdWZmZXJQcm9wZXJ0aWVzIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5h
bEZlbmNlUHJvcGVydGllcyA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsRmVuY2VQ
cm9wZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEZlbmNl
UHJvcGVydGllcyIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQ
cm9wZXJ0aWVzID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9w
ZXJ0aWVzKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbFNlbWFwaG9y
ZVByb3BlcnRpZXMiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMiA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2Fs
RGV2aWNlRmVhdHVyZXMyIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0
aWVzMiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMyKWxvYWQoY29u
dGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzMiIpOworKyAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMiA9IChQRk5fdmtHZXRQaHlzaWNh
bERldmljZUltYWdlRm9ybWF0UHJvcGVydGllczIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNh
bERldmljZUltYWdlRm9ybWF0UHJvcGVydGllczIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmlj
ZU1lbW9yeVByb3BlcnRpZXMyID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVy
dGllczIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMy
Iik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMiA9IChQRk5fdmtHZXRQaHlz
aWNhbERldmljZVByb3BlcnRpZXMyKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VQ
cm9wZXJ0aWVzMiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0
aWVzMiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllczIpbG9h
ZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllczIiKTsK
KysgICAgdmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdlRm9ybWF0UHJvcGVydGllczIgPSAo
UEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyKWxvYWQo
Y29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFByb3BlcnRpZXMy
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpICovCisgI2lmIGRlZmluZWQo
VktfRVhUX2FjcXVpcmVfeGxpYl9kaXNwbGF5KQorLQl2a0FjcXVpcmVYbGliRGlzcGxheUVYVCA9
IChQRk5fdmtBY3F1aXJlWGxpYkRpc3BsYXlFWFQpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlWGxp
YkRpc3BsYXlFWFQiKTsKKy0JdmtHZXRSYW5kUk91dHB1dERpc3BsYXlFWFQgPSAoUEZOX3ZrR2V0
UmFuZFJPdXRwdXREaXNwbGF5RVhUKWxvYWQoY29udGV4dCwgInZrR2V0UmFuZFJPdXRwdXREaXNw
bGF5RVhUIik7CisrICAgIHZrQWNxdWlyZVhsaWJEaXNwbGF5RVhUID0gKFBGTl92a0FjcXVpcmVY
bGliRGlzcGxheUVYVClsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVYbGliRGlzcGxheUVYVCIpOwor
KyAgICB2a0dldFJhbmRST3V0cHV0RGlzcGxheUVYVCA9IChQRk5fdmtHZXRSYW5kUk91dHB1dERp
c3BsYXlFWFQpbG9hZChjb250ZXh0LCAidmtHZXRSYW5kUk91dHB1dERpc3BsYXlFWFQiKTsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19FWFRfYWNxdWlyZV94bGliX2Rpc3BsYXkpICovCisgI2lmIGRl
ZmluZWQoVktfRVhUX2NhbGlicmF0ZWRfdGltZXN0YW1wcykKKy0JdmtHZXRQaHlzaWNhbERldmlj
ZUNhbGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUNh
bGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVClsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2
aWNlQ2FsaWJyYXRlYWJsZVRpbWVEb21haW5zRVhUIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZp
Y2VDYWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VD
YWxpYnJhdGVhYmxlVGltZURvbWFpbnNFWFQpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERl
dmljZUNhbGlicmF0ZWFibGVUaW1lRG9tYWluc0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X0VYVF9jYWxpYnJhdGVkX3RpbWVzdGFtcHMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2RlYnVn
X3JlcG9ydCkKKy0JdmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUID0gKFBGTl92a0NyZWF0
ZURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZWJ1Z1JlcG9y
dENhbGxiYWNrRVhUIik7CistCXZrRGVidWdSZXBvcnRNZXNzYWdlRVhUID0gKFBGTl92a0RlYnVn
UmVwb3J0TWVzc2FnZUVYVClsb2FkKGNvbnRleHQsICJ2a0RlYnVnUmVwb3J0TWVzc2FnZUVYVCIp
OworLQl2a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUID0gKFBGTl92a0Rlc3Ryb3lEZWJ1
Z1JlcG9ydENhbGxiYWNrRVhUKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlYnVnUmVwb3J0Q2Fs
bGJhY2tFWFQiKTsKKysgICAgdmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUID0gKFBGTl92
a0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZWJ1
Z1JlcG9ydENhbGxiYWNrRVhUIik7CisrICAgIHZrRGVidWdSZXBvcnRNZXNzYWdlRVhUID0gKFBG
Tl92a0RlYnVnUmVwb3J0TWVzc2FnZUVYVClsb2FkKGNvbnRleHQsICJ2a0RlYnVnUmVwb3J0TWVz
c2FnZUVYVCIpOworKyAgICB2a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUID0gKFBGTl92
a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURl
YnVnUmVwb3J0Q2FsbGJhY2tFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZGVidWdf
cmVwb3J0KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9kZWJ1Z191dGlscykKKy0JdmtDbWRCZWdp
bkRlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtDbWRCZWdpbkRlYnVnVXRpbHNMYWJlbEVYVCls
b2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luRGVidWdVdGlsc0xhYmVsRVhUIik7CistCXZrQ21kRW5k
RGVidWdVdGlsc0xhYmVsRVhUID0gKFBGTl92a0NtZEVuZERlYnVnVXRpbHNMYWJlbEVYVClsb2Fk
KGNvbnRleHQsICJ2a0NtZEVuZERlYnVnVXRpbHNMYWJlbEVYVCIpOworLQl2a0NtZEluc2VydERl
YnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtDbWRJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQpbG9h
ZChjb250ZXh0LCAidmtDbWRJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQiKTsKKy0JdmtDcmVhdGVE
ZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUID0gKFBGTl92a0NyZWF0ZURlYnVnVXRpbHNNZXNzZW5nZXJF
WFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUIik7CistCXZr
RGVzdHJveURlYnVnVXRpbHNNZXNzZW5nZXJFWFQgPSAoUEZOX3ZrRGVzdHJveURlYnVnVXRpbHNN
ZXNzZW5nZXJFWFQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVidWdVdGlsc01lc3NlbmdlckVY
VCIpOworLQl2a1F1ZXVlQmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQgPSAoUEZOX3ZrUXVldWVCZWdp
bkRlYnVnVXRpbHNMYWJlbEVYVClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlQmVnaW5EZWJ1Z1V0aWxz
TGFiZWxFWFQiKTsKKy0JdmtRdWV1ZUVuZERlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtRdWV1
ZUVuZERlYnVnVXRpbHNMYWJlbEVYVClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlRW5kRGVidWdVdGls
c0xhYmVsRVhUIik7CistCXZrUXVldWVJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQgPSAoUEZOX3Zr
UXVldWVJbnNlcnREZWJ1Z1V0aWxzTGFiZWxFWFQpbG9hZChjb250ZXh0LCAidmtRdWV1ZUluc2Vy
dERlYnVnVXRpbHNMYWJlbEVYVCIpOworLQl2a1NldERlYnVnVXRpbHNPYmplY3ROYW1lRVhUID0g
KFBGTl92a1NldERlYnVnVXRpbHNPYmplY3ROYW1lRVhUKWxvYWQoY29udGV4dCwgInZrU2V0RGVi
dWdVdGlsc09iamVjdE5hbWVFWFQiKTsKKy0JdmtTZXREZWJ1Z1V0aWxzT2JqZWN0VGFnRVhUID0g
KFBGTl92a1NldERlYnVnVXRpbHNPYmplY3RUYWdFWFQpbG9hZChjb250ZXh0LCAidmtTZXREZWJ1
Z1V0aWxzT2JqZWN0VGFnRVhUIik7CistCXZrU3VibWl0RGVidWdVdGlsc01lc3NhZ2VFWFQgPSAo
UEZOX3ZrU3VibWl0RGVidWdVdGlsc01lc3NhZ2VFWFQpbG9hZChjb250ZXh0LCAidmtTdWJtaXRE
ZWJ1Z1V0aWxzTWVzc2FnZUVYVCIpOworKyAgICB2a0NtZEJlZ2luRGVidWdVdGlsc0xhYmVsRVhU
ID0gKFBGTl92a0NtZEJlZ2luRGVidWdVdGlsc0xhYmVsRVhUKWxvYWQoY29udGV4dCwgInZrQ21k
QmVnaW5EZWJ1Z1V0aWxzTGFiZWxFWFQiKTsKKysgICAgdmtDbWRFbmREZWJ1Z1V0aWxzTGFiZWxF
WFQgPSAoUEZOX3ZrQ21kRW5kRGVidWdVdGlsc0xhYmVsRVhUKWxvYWQoY29udGV4dCwgInZrQ21k
RW5kRGVidWdVdGlsc0xhYmVsRVhUIik7CisrICAgIHZrQ21kSW5zZXJ0RGVidWdVdGlsc0xhYmVs
RVhUID0gKFBGTl92a0NtZEluc2VydERlYnVnVXRpbHNMYWJlbEVYVClsb2FkKGNvbnRleHQsICJ2
a0NtZEluc2VydERlYnVnVXRpbHNMYWJlbEVYVCIpOworKyAgICB2a0NyZWF0ZURlYnVnVXRpbHNN
ZXNzZW5nZXJFWFQgPSAoUEZOX3ZrQ3JlYXRlRGVidWdVdGlsc01lc3NlbmdlckVYVClsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZURlYnVnVXRpbHNNZXNzZW5nZXJFWFQiKTsKKysgICAgdmtEZXN0cm95
RGVidWdVdGlsc01lc3NlbmdlckVYVCA9IChQRk5fdmtEZXN0cm95RGVidWdVdGlsc01lc3Nlbmdl
ckVYVClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUIik7Cisr
ICAgIHZrUXVldWVCZWdpbkRlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5fdmtRdWV1ZUJlZ2luRGVi
dWdVdGlsc0xhYmVsRVhUKWxvYWQoY29udGV4dCwgInZrUXVldWVCZWdpbkRlYnVnVXRpbHNMYWJl
bEVYVCIpOworKyAgICB2a1F1ZXVlRW5kRGVidWdVdGlsc0xhYmVsRVhUID0gKFBGTl92a1F1ZXVl
RW5kRGVidWdVdGlsc0xhYmVsRVhUKWxvYWQoY29udGV4dCwgInZrUXVldWVFbmREZWJ1Z1V0aWxz
TGFiZWxFWFQiKTsKKysgICAgdmtRdWV1ZUluc2VydERlYnVnVXRpbHNMYWJlbEVYVCA9IChQRk5f
dmtRdWV1ZUluc2VydERlYnVnVXRpbHNMYWJlbEVYVClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlSW5z
ZXJ0RGVidWdVdGlsc0xhYmVsRVhUIik7CisrICAgIHZrU2V0RGVidWdVdGlsc09iamVjdE5hbWVF
WFQgPSAoUEZOX3ZrU2V0RGVidWdVdGlsc09iamVjdE5hbWVFWFQpbG9hZChjb250ZXh0LCAidmtT
ZXREZWJ1Z1V0aWxzT2JqZWN0TmFtZUVYVCIpOworKyAgICB2a1NldERlYnVnVXRpbHNPYmplY3RU
YWdFWFQgPSAoUEZOX3ZrU2V0RGVidWdVdGlsc09iamVjdFRhZ0VYVClsb2FkKGNvbnRleHQsICJ2
a1NldERlYnVnVXRpbHNPYmplY3RUYWdFWFQiKTsKKysgICAgdmtTdWJtaXREZWJ1Z1V0aWxzTWVz
c2FnZUVYVCA9IChQRk5fdmtTdWJtaXREZWJ1Z1V0aWxzTWVzc2FnZUVYVClsb2FkKGNvbnRleHQs
ICJ2a1N1Ym1pdERlYnVnVXRpbHNNZXNzYWdlRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktf
RVhUX2RlYnVnX3V0aWxzKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9kaXJlY3RfbW9kZV9kaXNw
bGF5KQorLQl2a1JlbGVhc2VEaXNwbGF5RVhUID0gKFBGTl92a1JlbGVhc2VEaXNwbGF5RVhUKWxv
YWQoY29udGV4dCwgInZrUmVsZWFzZURpc3BsYXlFWFQiKTsKKysgICAgdmtSZWxlYXNlRGlzcGxh
eUVYVCA9IChQRk5fdmtSZWxlYXNlRGlzcGxheUVYVClsb2FkKGNvbnRleHQsICJ2a1JlbGVhc2VE
aXNwbGF5RVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2RpcmVjdF9tb2RlX2Rpc3Bs
YXkpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Rpc3BsYXlfc3VyZmFjZV9jb3VudGVyKQorLQl2
a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllczJFWFQgPSAoUEZOX3ZrR2V0UGh5
c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzMkVYVClsb2FkKGNvbnRleHQsICJ2a0dldFBo
eXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllczJFWFQiKTsKKysgICAgdmtHZXRQaHlzaWNh
bERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXMyRVhUID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
U3VyZmFjZUNhcGFiaWxpdGllczJFWFQpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmlj
ZVN1cmZhY2VDYXBhYmlsaXRpZXMyRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2Rp
c3BsYXlfc3VyZmFjZV9jb3VudGVyKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVl
bl9leGNsdXNpdmUpCistCXZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzMkVY
VCA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXMyRVhUKWxvYWQo
Y29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzMkVYVCIpOwor
KyAgICB2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2RlczJFWFQgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzMkVYVClsb2FkKGNvbnRleHQsICJ2
a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2RlczJFWFQiKTsKKyAjZW5kaWYgLyog
ZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZlKSAqLworICNpZiBkZWZpbmVkKFZL
X0VYVF9oZWFkbGVzc19zdXJmYWNlKQorLQl2a0NyZWF0ZUhlYWRsZXNzU3VyZmFjZUVYVCA9IChQ
Rk5fdmtDcmVhdGVIZWFkbGVzc1N1cmZhY2VFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVIZWFk
bGVzc1N1cmZhY2VFWFQiKTsKKysgICAgdmtDcmVhdGVIZWFkbGVzc1N1cmZhY2VFWFQgPSAoUEZO
X3ZrQ3JlYXRlSGVhZGxlc3NTdXJmYWNlRVhUKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSGVhZGxl
c3NTdXJmYWNlRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2hlYWRsZXNzX3N1cmZh
Y2UpICovCisgI2lmIGRlZmluZWQoVktfRVhUX21ldGFsX3N1cmZhY2UpCistCXZrQ3JlYXRlTWV0
YWxTdXJmYWNlRVhUID0gKFBGTl92a0NyZWF0ZU1ldGFsU3VyZmFjZUVYVClsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZU1ldGFsU3VyZmFjZUVYVCIpOworKyAgICB2a0NyZWF0ZU1ldGFsU3VyZmFjZUVY
VCA9IChQRk5fdmtDcmVhdGVNZXRhbFN1cmZhY2VFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVN
ZXRhbFN1cmZhY2VFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfbWV0YWxfc3VyZmFj
ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfc2FtcGxlX2xvY2F0aW9ucykKKy0JdmtHZXRQaHlz
aWNhbERldmljZU11bHRpc2FtcGxlUHJvcGVydGllc0VYVCA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZU11bHRpc2FtcGxlUHJvcGVydGllc0VYVClsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2Fs
RGV2aWNlTXVsdGlzYW1wbGVQcm9wZXJ0aWVzRVhUIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZp
Y2VNdWx0aXNhbXBsZVByb3BlcnRpZXNFWFQgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VNdWx0
aXNhbXBsZVByb3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZU11
bHRpc2FtcGxlUHJvcGVydGllc0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9zYW1w
bGVfbG9jYXRpb25zKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF90b29saW5nX2luZm8pCistCXZr
R2V0UGh5c2ljYWxEZXZpY2VUb29sUHJvcGVydGllc0VYVCA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZVRvb2xQcm9wZXJ0aWVzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VU
b29sUHJvcGVydGllc0VYVCIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlVG9vbFByb3BlcnRp
ZXNFWFQgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VUb29sUHJvcGVydGllc0VYVClsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlVG9vbFByb3BlcnRpZXNFWFQiKTsKKyAjZW5kaWYg
LyogZGVmaW5lZChWS19FWFRfdG9vbGluZ19pbmZvKSAqLworICNpZiBkZWZpbmVkKFZLX0ZVQ0hT
SUFfaW1hZ2VwaXBlX3N1cmZhY2UpCistCXZrQ3JlYXRlSW1hZ2VQaXBlU3VyZmFjZUZVQ0hTSUEg
PSAoUEZOX3ZrQ3JlYXRlSW1hZ2VQaXBlU3VyZmFjZUZVQ0hTSUEpbG9hZChjb250ZXh0LCAidmtD
cmVhdGVJbWFnZVBpcGVTdXJmYWNlRlVDSFNJQSIpOworKyAgICB2a0NyZWF0ZUltYWdlUGlwZVN1
cmZhY2VGVUNIU0lBID0gKFBGTl92a0NyZWF0ZUltYWdlUGlwZVN1cmZhY2VGVUNIU0lBKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlSW1hZ2VQaXBlU3VyZmFjZUZVQ0hTSUEiKTsKKyAjZW5kaWYgLyog
ZGVmaW5lZChWS19GVUNIU0lBX2ltYWdlcGlwZV9zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZL
X0dHUF9zdHJlYW1fZGVzY3JpcHRvcl9zdXJmYWNlKQorLQl2a0NyZWF0ZVN0cmVhbURlc2NyaXB0
b3JTdXJmYWNlR0dQID0gKFBGTl92a0NyZWF0ZVN0cmVhbURlc2NyaXB0b3JTdXJmYWNlR0dQKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlU3RyZWFtRGVzY3JpcHRvclN1cmZhY2VHR1AiKTsKKysgICAg
dmtDcmVhdGVTdHJlYW1EZXNjcmlwdG9yU3VyZmFjZUdHUCA9IChQRk5fdmtDcmVhdGVTdHJlYW1E
ZXNjcmlwdG9yU3VyZmFjZUdHUClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVN0cmVhbURlc2NyaXB0
b3JTdXJmYWNlR0dQIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfR0dQX3N0cmVhbV9kZXNjcmlw
dG9yX3N1cmZhY2UpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2FuZHJvaWRfc3VyZmFjZSkKKy0J
dmtDcmVhdGVBbmRyb2lkU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVBbmRyb2lkU3VyZmFjZUtI
Uilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUFuZHJvaWRTdXJmYWNlS0hSIik7CisrICAgIHZrQ3Jl
YXRlQW5kcm9pZFN1cmZhY2VLSFIgPSAoUEZOX3ZrQ3JlYXRlQW5kcm9pZFN1cmZhY2VLSFIpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVBbmRyb2lkU3VyZmFjZUtIUiIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0tIUl9hbmRyb2lkX3N1cmZhY2UpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2Rldmlj
ZV9ncm91cF9jcmVhdGlvbikKKy0JdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3Vwc0tIUiA9
IChQRk5fdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3Vwc0tIUilsb2FkKGNvbnRleHQsICJ2
a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlR3JvdXBzS0hSIik7CisrICAgIHZrRW51bWVyYXRlUGh5
c2ljYWxEZXZpY2VHcm91cHNLSFIgPSAoUEZOX3ZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VHcm91
cHNLSFIpbG9hZChjb250ZXh0LCAidmtFbnVtZXJhdGVQaHlzaWNhbERldmljZUdyb3Vwc0tIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXBfY3JlYXRpb24pICovCisg
I2lmIGRlZmluZWQoVktfS0hSX2Rpc3BsYXkpCistCXZrQ3JlYXRlRGlzcGxheU1vZGVLSFIgPSAo
UEZOX3ZrQ3JlYXRlRGlzcGxheU1vZGVLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEaXNwbGF5
TW9kZUtIUiIpOworLQl2a0NyZWF0ZURpc3BsYXlQbGFuZVN1cmZhY2VLSFIgPSAoUEZOX3ZrQ3Jl
YXRlRGlzcGxheVBsYW5lU3VyZmFjZUtIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURpc3BsYXlQ
bGFuZVN1cmZhY2VLSFIiKTsKKy0JdmtHZXREaXNwbGF5TW9kZVByb3BlcnRpZXNLSFIgPSAoUEZO
X3ZrR2V0RGlzcGxheU1vZGVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGlzcGxh
eU1vZGVQcm9wZXJ0aWVzS0hSIik7CistCXZrR2V0RGlzcGxheVBsYW5lQ2FwYWJpbGl0aWVzS0hS
ID0gKFBGTl92a0dldERpc3BsYXlQbGFuZUNhcGFiaWxpdGllc0tIUilsb2FkKGNvbnRleHQsICJ2
a0dldERpc3BsYXlQbGFuZUNhcGFiaWxpdGllc0tIUiIpOworLQl2a0dldERpc3BsYXlQbGFuZVN1
cHBvcnRlZERpc3BsYXlzS0hSID0gKFBGTl92a0dldERpc3BsYXlQbGFuZVN1cHBvcnRlZERpc3Bs
YXlzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGlzcGxheVBsYW5lU3VwcG9ydGVkRGlzcGxheXNL
SFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQbGFuZVByb3BlcnRpZXNLSFIgPSAo
UEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UGxhbmVQcm9wZXJ0aWVzS0hSKWxvYWQoY29u
dGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UGxhbmVQcm9wZXJ0aWVzS0hSIik7Cist
CXZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQaHlz
aWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2lj
YWxEZXZpY2VEaXNwbGF5UHJvcGVydGllc0tIUiIpOworKyAgICB2a0NyZWF0ZURpc3BsYXlNb2Rl
S0hSID0gKFBGTl92a0NyZWF0ZURpc3BsYXlNb2RlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRl
RGlzcGxheU1vZGVLSFIiKTsKKysgICAgdmtDcmVhdGVEaXNwbGF5UGxhbmVTdXJmYWNlS0hSID0g
KFBGTl92a0NyZWF0ZURpc3BsYXlQbGFuZVN1cmZhY2VLSFIpbG9hZChjb250ZXh0LCAidmtDcmVh
dGVEaXNwbGF5UGxhbmVTdXJmYWNlS0hSIik7CisrICAgIHZrR2V0RGlzcGxheU1vZGVQcm9wZXJ0
aWVzS0hSID0gKFBGTl92a0dldERpc3BsYXlNb2RlUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQs
ICJ2a0dldERpc3BsYXlNb2RlUHJvcGVydGllc0tIUiIpOworKyAgICB2a0dldERpc3BsYXlQbGFu
ZUNhcGFiaWxpdGllc0tIUiA9IChQRk5fdmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRpZXNLSFIp
bG9hZChjb250ZXh0LCAidmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRpZXNLSFIiKTsKKysgICAg
dmtHZXREaXNwbGF5UGxhbmVTdXBwb3J0ZWREaXNwbGF5c0tIUiA9IChQRk5fdmtHZXREaXNwbGF5
UGxhbmVTdXBwb3J0ZWREaXNwbGF5c0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERpc3BsYXlQbGFu
ZVN1cHBvcnRlZERpc3BsYXlzS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5
UGxhbmVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5l
UHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBs
YW5lUHJvcGVydGllc0tIUiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3Bl
cnRpZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UHJvcGVydGllc0tIUils
b2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3BlcnRpZXNLSFIiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZGlzcGxheSkgKi8KKyAjaWYgZGVmaW5lZChWS19L
SFJfZXh0ZXJuYWxfZmVuY2VfY2FwYWJpbGl0aWVzKQorLQl2a0dldFBoeXNpY2FsRGV2aWNlRXh0
ZXJuYWxGZW5jZVByb3BlcnRpZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5h
bEZlbmNlUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRXh0
ZXJuYWxGZW5jZVByb3BlcnRpZXNLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZUV4dGVy
bmFsRmVuY2VQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxG
ZW5jZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVy
bmFsRmVuY2VQcm9wZXJ0aWVzS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2V4dGVy
bmFsX2ZlbmNlX2NhcGFiaWxpdGllcykgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxf
bWVtb3J5X2NhcGFiaWxpdGllcykKKy0JdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsQnVmZmVy
UHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsQnVmZmVyUHJv
cGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxCdWZm
ZXJQcm9wZXJ0aWVzS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZl
clByb3BlcnRpZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEJ1ZmZlclBy
b3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsQnVm
ZmVyUHJvcGVydGllc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9t
ZW1vcnlfY2FwYWJpbGl0aWVzKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9zZW1h
cGhvcmVfY2FwYWJpbGl0aWVzKQorLQl2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhv
cmVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhv
cmVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5h
bFNlbWFwaG9yZVByb3BlcnRpZXNLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZUV4dGVy
bmFsU2VtYXBob3JlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUV4dGVy
bmFsU2VtYXBob3JlUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2
aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9jYXBhYmlsaXRpZXMpICovCisgI2lmIGRlZmluZWQo
VktfS0hSX2dldF9kaXNwbGF5X3Byb3BlcnRpZXMyKQorLQl2a0dldERpc3BsYXlNb2RlUHJvcGVy
dGllczJLSFIgPSAoUEZOX3ZrR2V0RGlzcGxheU1vZGVQcm9wZXJ0aWVzMktIUilsb2FkKGNvbnRl
eHQsICJ2a0dldERpc3BsYXlNb2RlUHJvcGVydGllczJLSFIiKTsKKy0JdmtHZXREaXNwbGF5UGxh
bmVDYXBhYmlsaXRpZXMyS0hSID0gKFBGTl92a0dldERpc3BsYXlQbGFuZUNhcGFiaWxpdGllczJL
SFIpbG9hZChjb250ZXh0LCAidmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRpZXMyS0hSIik7Cist
CXZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UGxhbmVQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZURpc3BsYXlQbGFuZVByb3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UGxhbmVQcm9wZXJ0aWVzMktIUiIpOworLQl2a0dl
dFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2Fs
RGV2aWNlRGlzcGxheVByb3BlcnRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VEaXNwbGF5UHJvcGVydGllczJLSFIiKTsKKysgICAgdmtHZXREaXNwbGF5TW9kZVByb3Bl
cnRpZXMyS0hSID0gKFBGTl92a0dldERpc3BsYXlNb2RlUHJvcGVydGllczJLSFIpbG9hZChjb250
ZXh0LCAidmtHZXREaXNwbGF5TW9kZVByb3BlcnRpZXMyS0hSIik7CisrICAgIHZrR2V0RGlzcGxh
eVBsYW5lQ2FwYWJpbGl0aWVzMktIUiA9IChQRk5fdmtHZXREaXNwbGF5UGxhbmVDYXBhYmlsaXRp
ZXMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGlzcGxheVBsYW5lQ2FwYWJpbGl0aWVzMktIUiIp
OworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5lUHJvcGVydGllczJLSFIgPSAo
UEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VEaXNwbGF5UGxhbmVQcm9wZXJ0aWVzMktIUilsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlRGlzcGxheVBsYW5lUHJvcGVydGllczJLSFIiKTsK
KysgICAgdmtHZXRQaHlzaWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZURpc3BsYXlQcm9wZXJ0aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dl
dFBoeXNpY2FsRGV2aWNlRGlzcGxheVByb3BlcnRpZXMyS0hSIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfS0hSX2dldF9kaXNwbGF5X3Byb3BlcnRpZXMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tI
Ul9nZXRfcGh5c2ljYWxfZGV2aWNlX3Byb3BlcnRpZXMyKQorLQl2a0dldFBoeXNpY2FsRGV2aWNl
RmVhdHVyZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMyS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlczJLSFIiKTsKKy0JdmtHZXRQaHlz
aWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
Rm9ybWF0UHJvcGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUZv
cm1hdFByb3BlcnRpZXMyS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFBy
b3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0
aWVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9w
ZXJ0aWVzMktIUiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllczJLSFIg
PSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VNZW1vcnlQcm9wZXJ0aWVzMktIUilsb2FkKGNvbnRl
eHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllczJLSFIiKTsKKy0JdmtHZXRQ
aHlzaWNhbERldmljZVByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlUHJv
cGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMy
S0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMyS0hSID0g
KFBGTl92a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzMktIUilsb2FkKGNv
bnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzMktIUiIpOwor
LQl2a0dldFBoeXNpY2FsRGV2aWNlU3BhcnNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMktIUiA9IChQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdlRm9ybWF0UHJvcGVydGllczJLSFIpbG9h
ZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdlRm9ybWF0UHJvcGVydGll
czJLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMktIUiA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZUZlYXR1cmVzMktIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2Fs
RGV2aWNlRmVhdHVyZXMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9w
ZXJ0aWVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZUZvcm1hdFByb3BlcnRpZXMyS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VGb3JtYXRQcm9wZXJ0aWVzMktIUiIp
OworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMktIUiA9IChQ
Rk5fdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllczJLSFIpbG9hZChjb250
ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllczJLSFIiKTsKKysg
ICAgdmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMyS0hSID0gKFBGTl92a0dldFBo
eXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllczJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlz
aWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMyS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZp
Y2VQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMyS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzMktIUiIpOworKyAg
ICB2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzMktIUiA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllczJLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UHJvcGVydGllczJLSFIiKTsKKysgICAgdmtH
ZXRQaHlzaWNhbERldmljZVNwYXJzZUltYWdlRm9ybWF0UHJvcGVydGllczJLSFIgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyS0hSKWxvYWQoY29u
dGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTcGFyc2VJbWFnZUZvcm1hdFByb3BlcnRpZXMyS0hS
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2dldF9waHlzaWNhbF9kZXZpY2VfcHJvcGVy
dGllczIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2dldF9zdXJmYWNlX2NhcGFiaWxpdGllczIp
CistCXZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzMktIUiA9IChQRk5fdmtH
ZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXMyS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzMktIUiIpOworLQl2a0dldFBoeXNp
Y2FsRGV2aWNlU3VyZmFjZUZvcm1hdHMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3Vy
ZmFjZUZvcm1hdHMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNl
Rm9ybWF0czJLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRp
ZXMyS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllczJLSFIp
bG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXMyS0hS
Iik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0czJLSFIgPSAoUEZOX3Zr
R2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0czJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQ
aHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzMktIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X0tIUl9nZXRfc3VyZmFjZV9jYXBhYmlsaXRpZXMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9w
ZXJmb3JtYW5jZV9xdWVyeSkKKy0JdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5
UGVyZm9ybWFuY2VRdWVyeUNvdW50ZXJzS0hSID0gKFBGTl92a0VudW1lcmF0ZVBoeXNpY2FsRGV2
aWNlUXVldWVGYW1pbHlQZXJmb3JtYW5jZVF1ZXJ5Q291bnRlcnNLSFIpbG9hZChjb250ZXh0LCAi
dmtFbnVtZXJhdGVQaHlzaWNhbERldmljZVF1ZXVlRmFtaWx5UGVyZm9ybWFuY2VRdWVyeUNvdW50
ZXJzS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1hbmNlUXVl
cnlQYXNzZXNLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1h
bmNlUXVlcnlQYXNzZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVF1ZXVl
RmFtaWx5UGVyZm9ybWFuY2VRdWVyeVBhc3Nlc0tIUiIpOworKyAgICB2a0VudW1lcmF0ZVBoeXNp
Y2FsRGV2aWNlUXVldWVGYW1pbHlQZXJmb3JtYW5jZVF1ZXJ5Q291bnRlcnNLSFIgPSAoUEZOX3Zr
RW51bWVyYXRlUGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVBlcmZvcm1hbmNlUXVlcnlDb3VudGVy
c0tIUilsb2FkKGNvbnRleHQsICJ2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQ
ZXJmb3JtYW5jZVF1ZXJ5Q291bnRlcnNLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVF1
ZXVlRmFtaWx5UGVyZm9ybWFuY2VRdWVyeVBhc3Nlc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZVF1ZXVlRmFtaWx5UGVyZm9ybWFuY2VRdWVyeVBhc3Nlc0tIUilsb2FkKGNvbnRleHQsICJ2
a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQZXJmb3JtYW5jZVF1ZXJ5UGFzc2VzS0hSIik7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3BlcmZvcm1hbmNlX3F1ZXJ5KSAqLworICNpZiBk
ZWZpbmVkKFZLX0tIUl9zdXJmYWNlKQorLQl2a0Rlc3Ryb3lTdXJmYWNlS0hSID0gKFBGTl92a0Rl
c3Ryb3lTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVN1cmZhY2VLSFIiKTsKKy0J
dmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIgPSAoUEZOX3ZrR2V0UGh5
c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5
c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIik7CistCXZrR2V0UGh5c2ljYWxEZXZp
Y2VTdXJmYWNlRm9ybWF0c0tIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3Jt
YXRzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tI
UiIpOworLQl2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiA9IChQRk5f
dmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIiKTsKKy0JdmtHZXRQaHlz
aWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3Vy
ZmFjZVN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VT
dXBwb3J0S0hSIik7CisrICAgIHZrRGVzdHJveVN1cmZhY2VLSFIgPSAoUEZOX3ZrRGVzdHJveVN1
cmZhY2VLSFIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U3VyZmFjZUtIUiIpOworKyAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNh
bERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNh
bERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmlj
ZVN1cmZhY2VGb3JtYXRzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1h
dHNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzS0hS
Iik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSID0gKFBG
Tl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUilsb2FkKGNvbnRleHQs
ICJ2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiIpOworKyAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlU3VyZmFjZVN1cHBvcnRLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZp
Y2VTdXJmYWNlU3VwcG9ydEtIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlU3Vy
ZmFjZVN1cHBvcnRLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfc3VyZmFjZSkgKi8K
KyAjaWYgZGVmaW5lZChWS19LSFJfd2F5bGFuZF9zdXJmYWNlKQorLQl2a0NyZWF0ZVdheWxhbmRT
dXJmYWNlS0hSID0gKFBGTl92a0NyZWF0ZVdheWxhbmRTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlV2F5bGFuZFN1cmZhY2VLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVdheWxh
bmRQcmVzZW50YXRpb25TdXBwb3J0S0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlV2F5bGFu
ZFByZXNlbnRhdGlvblN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmlj
ZVdheWxhbmRQcmVzZW50YXRpb25TdXBwb3J0S0hSIik7CisrICAgIHZrQ3JlYXRlV2F5bGFuZFN1
cmZhY2VLSFIgPSAoUEZOX3ZrQ3JlYXRlV2F5bGFuZFN1cmZhY2VLSFIpbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVXYXlsYW5kU3VyZmFjZUtIUiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlV2F5
bGFuZFByZXNlbnRhdGlvblN1cHBvcnRLSFIgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VXYXls
YW5kUHJlc2VudGF0aW9uU3VwcG9ydEtIUilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2
aWNlV2F5bGFuZFByZXNlbnRhdGlvblN1cHBvcnRLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19LSFJfd2F5bGFuZF9zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl93aW4zMl9zdXJm
YWNlKQorLQl2a0NyZWF0ZVdpbjMyU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVXaW4zMlN1cmZh
Y2VLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVXaW4zMlN1cmZhY2VLSFIiKTsKKy0JdmtHZXRQ
aHlzaWNhbERldmljZVdpbjMyUHJlc2VudGF0aW9uU3VwcG9ydEtIUiA9IChQRk5fdmtHZXRQaHlz
aWNhbERldmljZVdpbjMyUHJlc2VudGF0aW9uU3VwcG9ydEtIUilsb2FkKGNvbnRleHQsICJ2a0dl
dFBoeXNpY2FsRGV2aWNlV2luMzJQcmVzZW50YXRpb25TdXBwb3J0S0hSIik7CisrICAgIHZrQ3Jl
YXRlV2luMzJTdXJmYWNlS0hSID0gKFBGTl92a0NyZWF0ZVdpbjMyU3VyZmFjZUtIUilsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVdpbjMyU3VyZmFjZUtIUiIpOworKyAgICB2a0dldFBoeXNpY2FsRGV2
aWNlV2luMzJQcmVzZW50YXRpb25TdXBwb3J0S0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
V2luMzJQcmVzZW50YXRpb25TdXBwb3J0S0hSKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VXaW4zMlByZXNlbnRhdGlvblN1cHBvcnRLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19LSFJfd2luMzJfc3VyZmFjZSkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfeGNiX3N1cmZhY2Up
CistCXZrQ3JlYXRlWGNiU3VyZmFjZUtIUiA9IChQRk5fdmtDcmVhdGVYY2JTdXJmYWNlS0hSKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlWGNiU3VyZmFjZUtIUiIpOworLQl2a0dldFBoeXNpY2FsRGV2
aWNlWGNiUHJlc2VudGF0aW9uU3VwcG9ydEtIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVhj
YlByZXNlbnRhdGlvblN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmlj
ZVhjYlByZXNlbnRhdGlvblN1cHBvcnRLSFIiKTsKKysgICAgdmtDcmVhdGVYY2JTdXJmYWNlS0hS
ID0gKFBGTl92a0NyZWF0ZVhjYlN1cmZhY2VLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVYY2JT
dXJmYWNlS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VYY2JQcmVzZW50YXRpb25TdXBw
b3J0S0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlWGNiUHJlc2VudGF0aW9uU3VwcG9ydEtI
Uilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNlWGNiUHJlc2VudGF0aW9uU3VwcG9y
dEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl94Y2Jfc3VyZmFjZSkgKi8KKyAjaWYg
ZGVmaW5lZChWS19LSFJfeGxpYl9zdXJmYWNlKQorLQl2a0NyZWF0ZVhsaWJTdXJmYWNlS0hSID0g
KFBGTl92a0NyZWF0ZVhsaWJTdXJmYWNlS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlWGxpYlN1
cmZhY2VLSFIiKTsKKy0JdmtHZXRQaHlzaWNhbERldmljZVhsaWJQcmVzZW50YXRpb25TdXBwb3J0
S0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlWGxpYlByZXNlbnRhdGlvblN1cHBvcnRLSFIp
bG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVhsaWJQcmVzZW50YXRpb25TdXBwb3J0
S0hSIik7CisrICAgIHZrQ3JlYXRlWGxpYlN1cmZhY2VLSFIgPSAoUEZOX3ZrQ3JlYXRlWGxpYlN1
cmZhY2VLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVYbGliU3VyZmFjZUtIUiIpOworKyAgICB2
a0dldFBoeXNpY2FsRGV2aWNlWGxpYlByZXNlbnRhdGlvblN1cHBvcnRLSFIgPSAoUEZOX3ZrR2V0
UGh5c2ljYWxEZXZpY2VYbGliUHJlc2VudGF0aW9uU3VwcG9ydEtIUilsb2FkKGNvbnRleHQsICJ2
a0dldFBoeXNpY2FsRGV2aWNlWGxpYlByZXNlbnRhdGlvblN1cHBvcnRLSFIiKTsKKyAjZW5kaWYg
LyogZGVmaW5lZChWS19LSFJfeGxpYl9zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZLX01WS19p
b3Nfc3VyZmFjZSkKKy0JdmtDcmVhdGVJT1NTdXJmYWNlTVZLID0gKFBGTl92a0NyZWF0ZUlPU1N1
cmZhY2VNVkspbG9hZChjb250ZXh0LCAidmtDcmVhdGVJT1NTdXJmYWNlTVZLIik7CisrICAgIHZr
Q3JlYXRlSU9TU3VyZmFjZU1WSyA9IChQRk5fdmtDcmVhdGVJT1NTdXJmYWNlTVZLKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlSU9TU3VyZmFjZU1WSyIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX01W
S19pb3Nfc3VyZmFjZSkgKi8KKyAjaWYgZGVmaW5lZChWS19NVktfbWFjb3Nfc3VyZmFjZSkKKy0J
dmtDcmVhdGVNYWNPU1N1cmZhY2VNVksgPSAoUEZOX3ZrQ3JlYXRlTWFjT1NTdXJmYWNlTVZLKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlTWFjT1NTdXJmYWNlTVZLIik7CisrICAgIHZrQ3JlYXRlTWFj
T1NTdXJmYWNlTVZLID0gKFBGTl92a0NyZWF0ZU1hY09TU3VyZmFjZU1WSylsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZU1hY09TU3VyZmFjZU1WSyIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX01WS19t
YWNvc19zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZLX05OX3ZpX3N1cmZhY2UpCistCXZrQ3Jl
YXRlVmlTdXJmYWNlTk4gPSAoUEZOX3ZrQ3JlYXRlVmlTdXJmYWNlTk4pbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVWaVN1cmZhY2VOTiIpOworKyAgICB2a0NyZWF0ZVZpU3VyZmFjZU5OID0gKFBGTl92
a0NyZWF0ZVZpU3VyZmFjZU5OKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlVmlTdXJmYWNlTk4iKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19OTl92aV9zdXJmYWNlKSAqLworICNpZiBkZWZpbmVkKFZL
X05WWF9kZXZpY2VfZ2VuZXJhdGVkX2NvbW1hbmRzKQorLQl2a0dldFBoeXNpY2FsRGV2aWNlR2Vu
ZXJhdGVkQ29tbWFuZHNQcm9wZXJ0aWVzTlZYID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlR2Vu
ZXJhdGVkQ29tbWFuZHNQcm9wZXJ0aWVzTlZYKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxE
ZXZpY2VHZW5lcmF0ZWRDb21tYW5kc1Byb3BlcnRpZXNOVlgiKTsKKysgICAgdmtHZXRQaHlzaWNh
bERldmljZUdlbmVyYXRlZENvbW1hbmRzUHJvcGVydGllc05WWCA9IChQRk5fdmtHZXRQaHlzaWNh
bERldmljZUdlbmVyYXRlZENvbW1hbmRzUHJvcGVydGllc05WWClsb2FkKGNvbnRleHQsICJ2a0dl
dFBoeXNpY2FsRGV2aWNlR2VuZXJhdGVkQ29tbWFuZHNQcm9wZXJ0aWVzTlZYIik7CisgI2VuZGlm
IC8qIGRlZmluZWQoVktfTlZYX2RldmljZV9nZW5lcmF0ZWRfY29tbWFuZHMpICovCisgI2lmIGRl
ZmluZWQoVktfTlZfY29vcGVyYXRpdmVfbWF0cml4KQorLQl2a0dldFBoeXNpY2FsRGV2aWNlQ29v
cGVyYXRpdmVNYXRyaXhQcm9wZXJ0aWVzTlYgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VDb29w
ZXJhdGl2ZU1hdHJpeFByb3BlcnRpZXNOVilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2
aWNlQ29vcGVyYXRpdmVNYXRyaXhQcm9wZXJ0aWVzTlYiKTsKKysgICAgdmtHZXRQaHlzaWNhbERl
dmljZUNvb3BlcmF0aXZlTWF0cml4UHJvcGVydGllc05WID0gKFBGTl92a0dldFBoeXNpY2FsRGV2
aWNlQ29vcGVyYXRpdmVNYXRyaXhQcm9wZXJ0aWVzTlYpbG9hZChjb250ZXh0LCAidmtHZXRQaHlz
aWNhbERldmljZUNvb3BlcmF0aXZlTWF0cml4UHJvcGVydGllc05WIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfTlZfY29vcGVyYXRpdmVfbWF0cml4KSAqLworICNpZiBkZWZpbmVkKFZLX05WX2Nv
dmVyYWdlX3JlZHVjdGlvbl9tb2RlKQorLQl2a0dldFBoeXNpY2FsRGV2aWNlU3VwcG9ydGVkRnJh
bWVidWZmZXJNaXhlZFNhbXBsZXNDb21iaW5hdGlvbnNOViA9IChQRk5fdmtHZXRQaHlzaWNhbERl
dmljZVN1cHBvcnRlZEZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzQ29tYmluYXRpb25zTlYpbG9hZChj
b250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVN1cHBvcnRlZEZyYW1lYnVmZmVyTWl4ZWRTYW1w
bGVzQ29tYmluYXRpb25zTlYiKTsKKysgICAgdmtHZXRQaHlzaWNhbERldmljZVN1cHBvcnRlZEZy
YW1lYnVmZmVyTWl4ZWRTYW1wbGVzQ29tYmluYXRpb25zTlYgPSAoUEZOX3ZrR2V0UGh5c2ljYWxE
ZXZpY2VTdXBwb3J0ZWRGcmFtZWJ1ZmZlck1peGVkU2FtcGxlc0NvbWJpbmF0aW9uc05WKWxvYWQo
Y29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VTdXBwb3J0ZWRGcmFtZWJ1ZmZlck1peGVkU2Ft
cGxlc0NvbWJpbmF0aW9uc05WIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfY292ZXJhZ2Vf
cmVkdWN0aW9uX21vZGUpICovCisgI2lmIGRlZmluZWQoVktfTlZfZXh0ZXJuYWxfbWVtb3J5X2Nh
cGFiaWxpdGllcykKKy0JdmtHZXRQaHlzaWNhbERldmljZUV4dGVybmFsSW1hZ2VGb3JtYXRQcm9w
ZXJ0aWVzTlYgPSAoUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEltYWdlRm9ybWF0UHJv
cGVydGllc05WKWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbEltYWdl
Rm9ybWF0UHJvcGVydGllc05WIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbElt
YWdlRm9ybWF0UHJvcGVydGllc05WID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxJ
bWFnZUZvcm1hdFByb3BlcnRpZXNOVilsb2FkKGNvbnRleHQsICJ2a0dldFBoeXNpY2FsRGV2aWNl
RXh0ZXJuYWxJbWFnZUZvcm1hdFByb3BlcnRpZXNOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X05WX2V4dGVybmFsX21lbW9yeV9jYXBhYmlsaXRpZXMpICovCisgI2lmIChkZWZpbmVkKFZLX0tI
Ul9kZXZpY2VfZ3JvdXApICYmIGRlZmluZWQoVktfS0hSX3N1cmZhY2UpKSB8fCAoZGVmaW5lZChW
S19LSFJfc3dhcGNoYWluKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JdmtHZXRQaHlz
aWNhbERldmljZVByZXNlbnRSZWN0YW5nbGVzS0hSID0gKFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
UHJlc2VudFJlY3RhbmdsZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaHlzaWNhbERldmljZVBy
ZXNlbnRSZWN0YW5nbGVzS0hSIik7CisrICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VQcmVzZW50UmVj
dGFuZ2xlc0tIUiA9IChQRk5fdmtHZXRQaHlzaWNhbERldmljZVByZXNlbnRSZWN0YW5nbGVzS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0UGh5c2ljYWxEZXZpY2VQcmVzZW50UmVjdGFuZ2xlc0tIUiIp
OworICNlbmRpZiAvKiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVkKFZL
X0tIUl9zdXJmYWNlKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChW
S19WRVJTSU9OXzFfMSkpICovCistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9JTlNUQU5DRSAqLwor
KyAgICAvKiBWT0xLX0dFTkVSQVRFX0xPQURfSU5TVEFOQ0UgKi8KKyB9CisgCisgc3RhdGljIHZv
aWQgdm9sa0dlbkxvYWREZXZpY2Uodm9pZCogY29udGV4dCwgUEZOX3ZrVm9pZEZ1bmN0aW9uICgq
bG9hZCkodm9pZCosIGNvbnN0IGNoYXIqKSkKKyB7CistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9E
RVZJQ0UgKi8KKysgICAgLyogVk9MS19HRU5FUkFURV9MT0FEX0RFVklDRSAqLworICNpZiBkZWZp
bmVkKFZLX1ZFUlNJT05fMV8wKQorLQl2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMgPSAoUEZOX3Zr
QWxsb2NhdGVDb21tYW5kQnVmZmVycylsb2FkKGNvbnRleHQsICJ2a0FsbG9jYXRlQ29tbWFuZEJ1
ZmZlcnMiKTsKKy0JdmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzID0gKFBGTl92a0FsbG9jYXRlRGVz
Y3JpcHRvclNldHMpbG9hZChjb250ZXh0LCAidmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzIik7Cist
CXZrQWxsb2NhdGVNZW1vcnkgPSAoUEZOX3ZrQWxsb2NhdGVNZW1vcnkpbG9hZChjb250ZXh0LCAi
dmtBbGxvY2F0ZU1lbW9yeSIpOworLQl2a0JlZ2luQ29tbWFuZEJ1ZmZlciA9IChQRk5fdmtCZWdp
bkNvbW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtCZWdpbkNvbW1hbmRCdWZmZXIiKTsKKy0J
dmtCaW5kQnVmZmVyTWVtb3J5ID0gKFBGTl92a0JpbmRCdWZmZXJNZW1vcnkpbG9hZChjb250ZXh0
LCAidmtCaW5kQnVmZmVyTWVtb3J5Iik7CistCXZrQmluZEltYWdlTWVtb3J5ID0gKFBGTl92a0Jp
bmRJbWFnZU1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a0JpbmRJbWFnZU1lbW9yeSIpOworLQl2a0Nt
ZEJlZ2luUXVlcnkgPSAoUEZOX3ZrQ21kQmVnaW5RdWVyeSlsb2FkKGNvbnRleHQsICJ2a0NtZEJl
Z2luUXVlcnkiKTsKKy0JdmtDbWRCZWdpblJlbmRlclBhc3MgPSAoUEZOX3ZrQ21kQmVnaW5SZW5k
ZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ21kQmVnaW5SZW5kZXJQYXNzIik7CistCXZrQ21kQmlu
ZERlc2NyaXB0b3JTZXRzID0gKFBGTl92a0NtZEJpbmREZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRl
eHQsICJ2a0NtZEJpbmREZXNjcmlwdG9yU2V0cyIpOworLQl2a0NtZEJpbmRJbmRleEJ1ZmZlciA9
IChQRk5fdmtDbWRCaW5kSW5kZXhCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kSW5kZXhC
dWZmZXIiKTsKKy0JdmtDbWRCaW5kUGlwZWxpbmUgPSAoUEZOX3ZrQ21kQmluZFBpcGVsaW5lKWxv
YWQoY29udGV4dCwgInZrQ21kQmluZFBpcGVsaW5lIik7CistCXZrQ21kQmluZFZlcnRleEJ1ZmZl
cnMgPSAoUEZOX3ZrQ21kQmluZFZlcnRleEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtDbWRCaW5k
VmVydGV4QnVmZmVycyIpOworLQl2a0NtZEJsaXRJbWFnZSA9IChQRk5fdmtDbWRCbGl0SW1hZ2Up
bG9hZChjb250ZXh0LCAidmtDbWRCbGl0SW1hZ2UiKTsKKy0JdmtDbWRDbGVhckF0dGFjaG1lbnRz
ID0gKFBGTl92a0NtZENsZWFyQXR0YWNobWVudHMpbG9hZChjb250ZXh0LCAidmtDbWRDbGVhckF0
dGFjaG1lbnRzIik7CistCXZrQ21kQ2xlYXJDb2xvckltYWdlID0gKFBGTl92a0NtZENsZWFyQ29s
b3JJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NtZENsZWFyQ29sb3JJbWFnZSIpOworLQl2a0NtZENs
ZWFyRGVwdGhTdGVuY2lsSW1hZ2UgPSAoUEZOX3ZrQ21kQ2xlYXJEZXB0aFN0ZW5jaWxJbWFnZSls
b2FkKGNvbnRleHQsICJ2a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UiKTsKKy0JdmtDbWRDb3B5
QnVmZmVyID0gKFBGTl92a0NtZENvcHlCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QnVm
ZmVyIik7CistCXZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UgPSAoUEZOX3ZrQ21kQ29weUJ1ZmZlclRv
SW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QnVmZmVyVG9JbWFnZSIpOworLQl2a0NtZENv
cHlJbWFnZSA9IChQRk5fdmtDbWRDb3B5SW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5SW1h
Z2UiKTsKKy0JdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlciA9IChQRk5fdmtDbWRDb3B5SW1hZ2VUb0J1
ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZENvcHlJbWFnZVRvQnVmZmVyIik7CistCXZrQ21kQ29w
eVF1ZXJ5UG9vbFJlc3VsdHMgPSAoUEZOX3ZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMpbG9hZChj
b250ZXh0LCAidmtDbWRDb3B5UXVlcnlQb29sUmVzdWx0cyIpOworLQl2a0NtZERpc3BhdGNoID0g
KFBGTl92a0NtZERpc3BhdGNoKWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2giKTsKKy0JdmtD
bWREaXNwYXRjaEluZGlyZWN0ID0gKFBGTl92a0NtZERpc3BhdGNoSW5kaXJlY3QpbG9hZChjb250
ZXh0LCAidmtDbWREaXNwYXRjaEluZGlyZWN0Iik7CistCXZrQ21kRHJhdyA9IChQRk5fdmtDbWRE
cmF3KWxvYWQoY29udGV4dCwgInZrQ21kRHJhdyIpOworLQl2a0NtZERyYXdJbmRleGVkID0gKFBG
Tl92a0NtZERyYXdJbmRleGVkKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWQiKTsKKy0J
dmtDbWREcmF3SW5kZXhlZEluZGlyZWN0ID0gKFBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3Qp
bG9hZChjb250ZXh0LCAidmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Iik7CistCXZrQ21kRHJhd0lu
ZGlyZWN0ID0gKFBGTl92a0NtZERyYXdJbmRpcmVjdClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJ
bmRpcmVjdCIpOworLQl2a0NtZEVuZFF1ZXJ5ID0gKFBGTl92a0NtZEVuZFF1ZXJ5KWxvYWQoY29u
dGV4dCwgInZrQ21kRW5kUXVlcnkiKTsKKy0JdmtDbWRFbmRSZW5kZXJQYXNzID0gKFBGTl92a0Nt
ZEVuZFJlbmRlclBhc3MpbG9hZChjb250ZXh0LCAidmtDbWRFbmRSZW5kZXJQYXNzIik7CistCXZr
Q21kRXhlY3V0ZUNvbW1hbmRzID0gKFBGTl92a0NtZEV4ZWN1dGVDb21tYW5kcylsb2FkKGNvbnRl
eHQsICJ2a0NtZEV4ZWN1dGVDb21tYW5kcyIpOworLQl2a0NtZEZpbGxCdWZmZXIgPSAoUEZOX3Zr
Q21kRmlsbEJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZEZpbGxCdWZmZXIiKTsKKy0JdmtDbWRO
ZXh0U3VicGFzcyA9IChQRk5fdmtDbWROZXh0U3VicGFzcylsb2FkKGNvbnRleHQsICJ2a0NtZE5l
eHRTdWJwYXNzIik7CistCXZrQ21kUGlwZWxpbmVCYXJyaWVyID0gKFBGTl92a0NtZFBpcGVsaW5l
QmFycmllcilsb2FkKGNvbnRleHQsICJ2a0NtZFBpcGVsaW5lQmFycmllciIpOworLQl2a0NtZFB1
c2hDb25zdGFudHMgPSAoUEZOX3ZrQ21kUHVzaENvbnN0YW50cylsb2FkKGNvbnRleHQsICJ2a0Nt
ZFB1c2hDb25zdGFudHMiKTsKKy0JdmtDbWRSZXNldEV2ZW50ID0gKFBGTl92a0NtZFJlc2V0RXZl
bnQpbG9hZChjb250ZXh0LCAidmtDbWRSZXNldEV2ZW50Iik7CistCXZrQ21kUmVzZXRRdWVyeVBv
b2wgPSAoUEZOX3ZrQ21kUmVzZXRRdWVyeVBvb2wpbG9hZChjb250ZXh0LCAidmtDbWRSZXNldFF1
ZXJ5UG9vbCIpOworLQl2a0NtZFJlc29sdmVJbWFnZSA9IChQRk5fdmtDbWRSZXNvbHZlSW1hZ2Up
bG9hZChjb250ZXh0LCAidmtDbWRSZXNvbHZlSW1hZ2UiKTsKKy0JdmtDbWRTZXRCbGVuZENvbnN0
YW50cyA9IChQRk5fdmtDbWRTZXRCbGVuZENvbnN0YW50cylsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dEJsZW5kQ29uc3RhbnRzIik7CistCXZrQ21kU2V0RGVwdGhCaWFzID0gKFBGTl92a0NtZFNldERl
cHRoQmlhcylsb2FkKGNvbnRleHQsICJ2a0NtZFNldERlcHRoQmlhcyIpOworLQl2a0NtZFNldERl
cHRoQm91bmRzID0gKFBGTl92a0NtZFNldERlcHRoQm91bmRzKWxvYWQoY29udGV4dCwgInZrQ21k
U2V0RGVwdGhCb3VuZHMiKTsKKy0JdmtDbWRTZXRFdmVudCA9IChQRk5fdmtDbWRTZXRFdmVudCls
b2FkKGNvbnRleHQsICJ2a0NtZFNldEV2ZW50Iik7CistCXZrQ21kU2V0TGluZVdpZHRoID0gKFBG
Tl92a0NtZFNldExpbmVXaWR0aClsb2FkKGNvbnRleHQsICJ2a0NtZFNldExpbmVXaWR0aCIpOwor
LQl2a0NtZFNldFNjaXNzb3IgPSAoUEZOX3ZrQ21kU2V0U2Npc3Nvcilsb2FkKGNvbnRleHQsICJ2
a0NtZFNldFNjaXNzb3IiKTsKKy0JdmtDbWRTZXRTdGVuY2lsQ29tcGFyZU1hc2sgPSAoUEZOX3Zr
Q21kU2V0U3RlbmNpbENvbXBhcmVNYXNrKWxvYWQoY29udGV4dCwgInZrQ21kU2V0U3RlbmNpbENv
bXBhcmVNYXNrIik7CistCXZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSA9IChQRk5fdmtDbWRTZXRT
dGVuY2lsUmVmZXJlbmNlKWxvYWQoY29udGV4dCwgInZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSIp
OworLQl2a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2sgPSAoUEZOX3ZrQ21kU2V0U3RlbmNpbFdyaXRl
TWFzaylsb2FkKGNvbnRleHQsICJ2a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2siKTsKKy0JdmtDbWRT
ZXRWaWV3cG9ydCA9IChQRk5fdmtDbWRTZXRWaWV3cG9ydClsb2FkKGNvbnRleHQsICJ2a0NtZFNl
dFZpZXdwb3J0Iik7CistCXZrQ21kVXBkYXRlQnVmZmVyID0gKFBGTl92a0NtZFVwZGF0ZUJ1ZmZl
cilsb2FkKGNvbnRleHQsICJ2a0NtZFVwZGF0ZUJ1ZmZlciIpOworLQl2a0NtZFdhaXRFdmVudHMg
PSAoUEZOX3ZrQ21kV2FpdEV2ZW50cylsb2FkKGNvbnRleHQsICJ2a0NtZFdhaXRFdmVudHMiKTsK
Ky0JdmtDbWRXcml0ZVRpbWVzdGFtcCA9IChQRk5fdmtDbWRXcml0ZVRpbWVzdGFtcClsb2FkKGNv
bnRleHQsICJ2a0NtZFdyaXRlVGltZXN0YW1wIik7CistCXZrQ3JlYXRlQnVmZmVyID0gKFBGTl92
a0NyZWF0ZUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUJ1ZmZlciIpOworLQl2a0NyZWF0
ZUJ1ZmZlclZpZXcgPSAoUEZOX3ZrQ3JlYXRlQnVmZmVyVmlldylsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZUJ1ZmZlclZpZXciKTsKKy0JdmtDcmVhdGVDb21tYW5kUG9vbCA9IChQRk5fdmtDcmVhdGVD
b21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUNvbW1hbmRQb29sIik7CistCXZrQ3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lcyA9IChQRk5fdmtDcmVhdGVDb21wdXRlUGlwZWxpbmVzKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lcyIpOworLQl2a0NyZWF0ZURlc2NyaXB0
b3JQb29sID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwgInZrQ3Jl
YXRlRGVzY3JpcHRvclBvb2wiKTsKKy0JdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0ID0gKFBG
Tl92a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZXNj
cmlwdG9yU2V0TGF5b3V0Iik7CistCXZrQ3JlYXRlRXZlbnQgPSAoUEZOX3ZrQ3JlYXRlRXZlbnQp
bG9hZChjb250ZXh0LCAidmtDcmVhdGVFdmVudCIpOworLQl2a0NyZWF0ZUZlbmNlID0gKFBGTl92
a0NyZWF0ZUZlbmNlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlRmVuY2UiKTsKKy0JdmtDcmVhdGVG
cmFtZWJ1ZmZlciA9IChQRk5fdmtDcmVhdGVGcmFtZWJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZUZyYW1lYnVmZmVyIik7CistCXZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMgPSAoUEZOX3Zr
Q3JlYXRlR3JhcGhpY3NQaXBlbGluZXMpbG9hZChjb250ZXh0LCAidmtDcmVhdGVHcmFwaGljc1Bp
cGVsaW5lcyIpOworLQl2a0NyZWF0ZUltYWdlID0gKFBGTl92a0NyZWF0ZUltYWdlKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlSW1hZ2UiKTsKKy0JdmtDcmVhdGVJbWFnZVZpZXcgPSAoUEZOX3ZrQ3Jl
YXRlSW1hZ2VWaWV3KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW1hZ2VWaWV3Iik7CistCXZrQ3Jl
YXRlUGlwZWxpbmVDYWNoZSA9IChQRk5fdmtDcmVhdGVQaXBlbGluZUNhY2hlKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlUGlwZWxpbmVDYWNoZSIpOworLQl2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0ID0g
KFBGTl92a0NyZWF0ZVBpcGVsaW5lTGF5b3V0KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUGlwZWxp
bmVMYXlvdXQiKTsKKy0JdmtDcmVhdGVRdWVyeVBvb2wgPSAoUEZOX3ZrQ3JlYXRlUXVlcnlQb29s
KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUXVlcnlQb29sIik7CistCXZrQ3JlYXRlUmVuZGVyUGFz
cyA9IChQRk5fdmtDcmVhdGVSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUmVuZGVy
UGFzcyIpOworLQl2a0NyZWF0ZVNhbXBsZXIgPSAoUEZOX3ZrQ3JlYXRlU2FtcGxlcilsb2FkKGNv
bnRleHQsICJ2a0NyZWF0ZVNhbXBsZXIiKTsKKy0JdmtDcmVhdGVTZW1hcGhvcmUgPSAoUEZOX3Zr
Q3JlYXRlU2VtYXBob3JlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU2VtYXBob3JlIik7CistCXZr
Q3JlYXRlU2hhZGVyTW9kdWxlID0gKFBGTl92a0NyZWF0ZVNoYWRlck1vZHVsZSlsb2FkKGNvbnRl
eHQsICJ2a0NyZWF0ZVNoYWRlck1vZHVsZSIpOworLQl2a0Rlc3Ryb3lCdWZmZXIgPSAoUEZOX3Zr
RGVzdHJveUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lCdWZmZXIiKTsKKy0JdmtEZXN0
cm95QnVmZmVyVmlldyA9IChQRk5fdmtEZXN0cm95QnVmZmVyVmlldylsb2FkKGNvbnRleHQsICJ2
a0Rlc3Ryb3lCdWZmZXJWaWV3Iik7CistCXZrRGVzdHJveUNvbW1hbmRQb29sID0gKFBGTl92a0Rl
c3Ryb3lDb21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lDb21tYW5kUG9vbCIpOwor
LQl2a0Rlc3Ryb3lEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRvclBvb2wp
bG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3JpcHRvclBvb2wiKTsKKy0JdmtEZXN0cm95RGVz
Y3JpcHRvclNldExheW91dCA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRvclNldExheW91dClsb2Fk
KGNvbnRleHQsICJ2a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0Iik7CistCXZrRGVzdHJveURl
dmljZSA9IChQRk5fdmtEZXN0cm95RGV2aWNlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURldmlj
ZSIpOworLQl2a0Rlc3Ryb3lFdmVudCA9IChQRk5fdmtEZXN0cm95RXZlbnQpbG9hZChjb250ZXh0
LCAidmtEZXN0cm95RXZlbnQiKTsKKy0JdmtEZXN0cm95RmVuY2UgPSAoUEZOX3ZrRGVzdHJveUZl
bmNlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUZlbmNlIik7CistCXZrRGVzdHJveUZyYW1lYnVm
ZmVyID0gKFBGTl92a0Rlc3Ryb3lGcmFtZWJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lG
cmFtZWJ1ZmZlciIpOworLQl2a0Rlc3Ryb3lJbWFnZSA9IChQRk5fdmtEZXN0cm95SW1hZ2UpbG9h
ZChjb250ZXh0LCAidmtEZXN0cm95SW1hZ2UiKTsKKy0JdmtEZXN0cm95SW1hZ2VWaWV3ID0gKFBG
Tl92a0Rlc3Ryb3lJbWFnZVZpZXcpbG9hZChjb250ZXh0LCAidmtEZXN0cm95SW1hZ2VWaWV3Iik7
CistCXZrRGVzdHJveVBpcGVsaW5lID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZSlsb2FkKGNvbnRl
eHQsICJ2a0Rlc3Ryb3lQaXBlbGluZSIpOworLQl2a0Rlc3Ryb3lQaXBlbGluZUNhY2hlID0gKFBG
Tl92a0Rlc3Ryb3lQaXBlbGluZUNhY2hlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5l
Q2FjaGUiKTsKKy0JdmtEZXN0cm95UGlwZWxpbmVMYXlvdXQgPSAoUEZOX3ZrRGVzdHJveVBpcGVs
aW5lTGF5b3V0KWxvYWQoY29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5lTGF5b3V0Iik7CistCXZr
RGVzdHJveVF1ZXJ5UG9vbCA9IChQRk5fdmtEZXN0cm95UXVlcnlQb29sKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveVF1ZXJ5UG9vbCIpOworLQl2a0Rlc3Ryb3lSZW5kZXJQYXNzID0gKFBGTl92a0Rl
c3Ryb3lSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVJlbmRlclBhc3MiKTsKKy0J
dmtEZXN0cm95U2FtcGxlciA9IChQRk5fdmtEZXN0cm95U2FtcGxlcilsb2FkKGNvbnRleHQsICJ2
a0Rlc3Ryb3lTYW1wbGVyIik7CistCXZrRGVzdHJveVNlbWFwaG9yZSA9IChQRk5fdmtEZXN0cm95
U2VtYXBob3JlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNlbWFwaG9yZSIpOworLQl2a0Rlc3Ry
b3lTaGFkZXJNb2R1bGUgPSAoUEZOX3ZrRGVzdHJveVNoYWRlck1vZHVsZSlsb2FkKGNvbnRleHQs
ICJ2a0Rlc3Ryb3lTaGFkZXJNb2R1bGUiKTsKKy0JdmtEZXZpY2VXYWl0SWRsZSA9IChQRk5fdmtE
ZXZpY2VXYWl0SWRsZSlsb2FkKGNvbnRleHQsICJ2a0RldmljZVdhaXRJZGxlIik7CistCXZrRW5k
Q29tbWFuZEJ1ZmZlciA9IChQRk5fdmtFbmRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4dCwgInZr
RW5kQ29tbWFuZEJ1ZmZlciIpOworLQl2a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92
a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzKWxvYWQoY29udGV4dCwgInZrRmx1c2hNYXBwZWRNZW1v
cnlSYW5nZXMiKTsKKy0JdmtGcmVlQ29tbWFuZEJ1ZmZlcnMgPSAoUEZOX3ZrRnJlZUNvbW1hbmRC
dWZmZXJzKWxvYWQoY29udGV4dCwgInZrRnJlZUNvbW1hbmRCdWZmZXJzIik7CistCXZrRnJlZURl
c2NyaXB0b3JTZXRzID0gKFBGTl92a0ZyZWVEZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2
a0ZyZWVEZXNjcmlwdG9yU2V0cyIpOworLQl2a0ZyZWVNZW1vcnkgPSAoUEZOX3ZrRnJlZU1lbW9y
eSlsb2FkKGNvbnRleHQsICJ2a0ZyZWVNZW1vcnkiKTsKKy0JdmtHZXRCdWZmZXJNZW1vcnlSZXF1
aXJlbWVudHMgPSAoUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzKWxvYWQoY29udGV4
dCwgInZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzIik7CistCXZrR2V0RGV2aWNlTWVtb3J5
Q29tbWl0bWVudCA9IChQRk5fdmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50KWxvYWQoY29udGV4
dCwgInZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudCIpOworLQl2a0dldERldmljZVF1ZXVlID0g
KFBGTl92a0dldERldmljZVF1ZXVlKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlUXVldWUiKTsK
Ky0JdmtHZXRFdmVudFN0YXR1cyA9IChQRk5fdmtHZXRFdmVudFN0YXR1cylsb2FkKGNvbnRleHQs
ICJ2a0dldEV2ZW50U3RhdHVzIik7CistCXZrR2V0RmVuY2VTdGF0dXMgPSAoUEZOX3ZrR2V0RmVu
Y2VTdGF0dXMpbG9hZChjb250ZXh0LCAidmtHZXRGZW5jZVN0YXR1cyIpOworLQl2a0dldEltYWdl
TWVtb3J5UmVxdWlyZW1lbnRzID0gKFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzKWxv
YWQoY29udGV4dCwgInZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMiKTsKKy0JdmtHZXRJbWFn
ZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50cyA9IChQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJl
cXVpcmVtZW50cylsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1l
bnRzIik7CistCXZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dCA9IChQRk5fdmtHZXRJbWFnZVN1
YnJlc291cmNlTGF5b3V0KWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91
dCIpOworLQl2a0dldFBpcGVsaW5lQ2FjaGVEYXRhID0gKFBGTl92a0dldFBpcGVsaW5lQ2FjaGVE
YXRhKWxvYWQoY29udGV4dCwgInZrR2V0UGlwZWxpbmVDYWNoZURhdGEiKTsKKy0JdmtHZXRRdWVy
eVBvb2xSZXN1bHRzID0gKFBGTl92a0dldFF1ZXJ5UG9vbFJlc3VsdHMpbG9hZChjb250ZXh0LCAi
dmtHZXRRdWVyeVBvb2xSZXN1bHRzIik7CistCXZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5ID0g
KFBGTl92a0dldFJlbmRlckFyZWFHcmFudWxhcml0eSlsb2FkKGNvbnRleHQsICJ2a0dldFJlbmRl
ckFyZWFHcmFudWxhcml0eSIpOworLQl2a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMgPSAo
UEZOX3ZrSW52YWxpZGF0ZU1hcHBlZE1lbW9yeVJhbmdlcylsb2FkKGNvbnRleHQsICJ2a0ludmFs
aWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMiKTsKKy0JdmtNYXBNZW1vcnkgPSAoUEZOX3ZrTWFwTWVt
b3J5KWxvYWQoY29udGV4dCwgInZrTWFwTWVtb3J5Iik7CistCXZrTWVyZ2VQaXBlbGluZUNhY2hl
cyA9IChQRk5fdmtNZXJnZVBpcGVsaW5lQ2FjaGVzKWxvYWQoY29udGV4dCwgInZrTWVyZ2VQaXBl
bGluZUNhY2hlcyIpOworLQl2a1F1ZXVlQmluZFNwYXJzZSA9IChQRk5fdmtRdWV1ZUJpbmRTcGFy
c2UpbG9hZChjb250ZXh0LCAidmtRdWV1ZUJpbmRTcGFyc2UiKTsKKy0JdmtRdWV1ZVN1Ym1pdCA9
IChQRk5fdmtRdWV1ZVN1Ym1pdClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlU3VibWl0Iik7CistCXZr
UXVldWVXYWl0SWRsZSA9IChQRk5fdmtRdWV1ZVdhaXRJZGxlKWxvYWQoY29udGV4dCwgInZrUXVl
dWVXYWl0SWRsZSIpOworLQl2a1Jlc2V0Q29tbWFuZEJ1ZmZlciA9IChQRk5fdmtSZXNldENvbW1h
bmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtSZXNldENvbW1hbmRCdWZmZXIiKTsKKy0JdmtSZXNl
dENvbW1hbmRQb29sID0gKFBGTl92a1Jlc2V0Q29tbWFuZFBvb2wpbG9hZChjb250ZXh0LCAidmtS
ZXNldENvbW1hbmRQb29sIik7CistCXZrUmVzZXREZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtSZXNl
dERlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwgInZrUmVzZXREZXNjcmlwdG9yUG9vbCIpOwor
LQl2a1Jlc2V0RXZlbnQgPSAoUEZOX3ZrUmVzZXRFdmVudClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0
RXZlbnQiKTsKKy0JdmtSZXNldEZlbmNlcyA9IChQRk5fdmtSZXNldEZlbmNlcylsb2FkKGNvbnRl
eHQsICJ2a1Jlc2V0RmVuY2VzIik7CistCXZrU2V0RXZlbnQgPSAoUEZOX3ZrU2V0RXZlbnQpbG9h
ZChjb250ZXh0LCAidmtTZXRFdmVudCIpOworLQl2a1VubWFwTWVtb3J5ID0gKFBGTl92a1VubWFw
TWVtb3J5KWxvYWQoY29udGV4dCwgInZrVW5tYXBNZW1vcnkiKTsKKy0JdmtVcGRhdGVEZXNjcmlw
dG9yU2V0cyA9IChQRk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2a1Vw
ZGF0ZURlc2NyaXB0b3JTZXRzIik7CistCXZrV2FpdEZvckZlbmNlcyA9IChQRk5fdmtXYWl0Rm9y
RmVuY2VzKWxvYWQoY29udGV4dCwgInZrV2FpdEZvckZlbmNlcyIpOworKyAgICB2a0FsbG9jYXRl
Q29tbWFuZEJ1ZmZlcnMgPSAoUEZOX3ZrQWxsb2NhdGVDb21tYW5kQnVmZmVycylsb2FkKGNvbnRl
eHQsICJ2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMiKTsKKysgICAgdmtBbGxvY2F0ZURlc2NyaXB0
b3JTZXRzID0gKFBGTl92a0FsbG9jYXRlRGVzY3JpcHRvclNldHMpbG9hZChjb250ZXh0LCAidmtB
bGxvY2F0ZURlc2NyaXB0b3JTZXRzIik7CisrICAgIHZrQWxsb2NhdGVNZW1vcnkgPSAoUEZOX3Zr
QWxsb2NhdGVNZW1vcnkpbG9hZChjb250ZXh0LCAidmtBbGxvY2F0ZU1lbW9yeSIpOworKyAgICB2
a0JlZ2luQ29tbWFuZEJ1ZmZlciA9IChQRk5fdmtCZWdpbkNvbW1hbmRCdWZmZXIpbG9hZChjb250
ZXh0LCAidmtCZWdpbkNvbW1hbmRCdWZmZXIiKTsKKysgICAgdmtCaW5kQnVmZmVyTWVtb3J5ID0g
KFBGTl92a0JpbmRCdWZmZXJNZW1vcnkpbG9hZChjb250ZXh0LCAidmtCaW5kQnVmZmVyTWVtb3J5
Iik7CisrICAgIHZrQmluZEltYWdlTWVtb3J5ID0gKFBGTl92a0JpbmRJbWFnZU1lbW9yeSlsb2Fk
KGNvbnRleHQsICJ2a0JpbmRJbWFnZU1lbW9yeSIpOworKyAgICB2a0NtZEJlZ2luUXVlcnkgPSAo
UEZOX3ZrQ21kQmVnaW5RdWVyeSlsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnkiKTsKKysg
ICAgdmtDbWRCZWdpblJlbmRlclBhc3MgPSAoUEZOX3ZrQ21kQmVnaW5SZW5kZXJQYXNzKWxvYWQo
Y29udGV4dCwgInZrQ21kQmVnaW5SZW5kZXJQYXNzIik7CisrICAgIHZrQ21kQmluZERlc2NyaXB0
b3JTZXRzID0gKFBGTl92a0NtZEJpbmREZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2a0Nt
ZEJpbmREZXNjcmlwdG9yU2V0cyIpOworKyAgICB2a0NtZEJpbmRJbmRleEJ1ZmZlciA9IChQRk5f
dmtDbWRCaW5kSW5kZXhCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kSW5kZXhCdWZmZXIi
KTsKKysgICAgdmtDbWRCaW5kUGlwZWxpbmUgPSAoUEZOX3ZrQ21kQmluZFBpcGVsaW5lKWxvYWQo
Y29udGV4dCwgInZrQ21kQmluZFBpcGVsaW5lIik7CisrICAgIHZrQ21kQmluZFZlcnRleEJ1ZmZl
cnMgPSAoUEZOX3ZrQ21kQmluZFZlcnRleEJ1ZmZlcnMpbG9hZChjb250ZXh0LCAidmtDbWRCaW5k
VmVydGV4QnVmZmVycyIpOworKyAgICB2a0NtZEJsaXRJbWFnZSA9IChQRk5fdmtDbWRCbGl0SW1h
Z2UpbG9hZChjb250ZXh0LCAidmtDbWRCbGl0SW1hZ2UiKTsKKysgICAgdmtDbWRDbGVhckF0dGFj
aG1lbnRzID0gKFBGTl92a0NtZENsZWFyQXR0YWNobWVudHMpbG9hZChjb250ZXh0LCAidmtDbWRD
bGVhckF0dGFjaG1lbnRzIik7CisrICAgIHZrQ21kQ2xlYXJDb2xvckltYWdlID0gKFBGTl92a0Nt
ZENsZWFyQ29sb3JJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NtZENsZWFyQ29sb3JJbWFnZSIpOwor
KyAgICB2a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UgPSAoUEZOX3ZrQ21kQ2xlYXJEZXB0aFN0
ZW5jaWxJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UiKTsK
KysgICAgdmtDbWRDb3B5QnVmZmVyID0gKFBGTl92a0NtZENvcHlCdWZmZXIpbG9hZChjb250ZXh0
LCAidmtDbWRDb3B5QnVmZmVyIik7CisrICAgIHZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UgPSAoUEZO
X3ZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QnVmZmVyVG9J
bWFnZSIpOworKyAgICB2a0NtZENvcHlJbWFnZSA9IChQRk5fdmtDbWRDb3B5SW1hZ2UpbG9hZChj
b250ZXh0LCAidmtDbWRDb3B5SW1hZ2UiKTsKKysgICAgdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlciA9
IChQRk5fdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZENvcHlJbWFn
ZVRvQnVmZmVyIik7CisrICAgIHZrQ21kQ29weVF1ZXJ5UG9vbFJlc3VsdHMgPSAoUEZOX3ZrQ21k
Q29weVF1ZXJ5UG9vbFJlc3VsdHMpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5UXVlcnlQb29sUmVz
dWx0cyIpOworKyAgICB2a0NtZERpc3BhdGNoID0gKFBGTl92a0NtZERpc3BhdGNoKWxvYWQoY29u
dGV4dCwgInZrQ21kRGlzcGF0Y2giKTsKKysgICAgdmtDbWREaXNwYXRjaEluZGlyZWN0ID0gKFBG
Tl92a0NtZERpc3BhdGNoSW5kaXJlY3QpbG9hZChjb250ZXh0LCAidmtDbWREaXNwYXRjaEluZGly
ZWN0Iik7CisrICAgIHZrQ21kRHJhdyA9IChQRk5fdmtDbWREcmF3KWxvYWQoY29udGV4dCwgInZr
Q21kRHJhdyIpOworKyAgICB2a0NtZERyYXdJbmRleGVkID0gKFBGTl92a0NtZERyYXdJbmRleGVk
KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWQiKTsKKysgICAgdmtDbWREcmF3SW5kZXhl
ZEluZGlyZWN0ID0gKFBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3QpbG9hZChjb250ZXh0LCAi
dmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Iik7CisrICAgIHZrQ21kRHJhd0luZGlyZWN0ID0gKFBG
Tl92a0NtZERyYXdJbmRpcmVjdClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdCIpOwor
KyAgICB2a0NtZEVuZFF1ZXJ5ID0gKFBGTl92a0NtZEVuZFF1ZXJ5KWxvYWQoY29udGV4dCwgInZr
Q21kRW5kUXVlcnkiKTsKKysgICAgdmtDbWRFbmRSZW5kZXJQYXNzID0gKFBGTl92a0NtZEVuZFJl
bmRlclBhc3MpbG9hZChjb250ZXh0LCAidmtDbWRFbmRSZW5kZXJQYXNzIik7CisrICAgIHZrQ21k
RXhlY3V0ZUNvbW1hbmRzID0gKFBGTl92a0NtZEV4ZWN1dGVDb21tYW5kcylsb2FkKGNvbnRleHQs
ICJ2a0NtZEV4ZWN1dGVDb21tYW5kcyIpOworKyAgICB2a0NtZEZpbGxCdWZmZXIgPSAoUEZOX3Zr
Q21kRmlsbEJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZEZpbGxCdWZmZXIiKTsKKysgICAgdmtD
bWROZXh0U3VicGFzcyA9IChQRk5fdmtDbWROZXh0U3VicGFzcylsb2FkKGNvbnRleHQsICJ2a0Nt
ZE5leHRTdWJwYXNzIik7CisrICAgIHZrQ21kUGlwZWxpbmVCYXJyaWVyID0gKFBGTl92a0NtZFBp
cGVsaW5lQmFycmllcilsb2FkKGNvbnRleHQsICJ2a0NtZFBpcGVsaW5lQmFycmllciIpOworKyAg
ICB2a0NtZFB1c2hDb25zdGFudHMgPSAoUEZOX3ZrQ21kUHVzaENvbnN0YW50cylsb2FkKGNvbnRl
eHQsICJ2a0NtZFB1c2hDb25zdGFudHMiKTsKKysgICAgdmtDbWRSZXNldEV2ZW50ID0gKFBGTl92
a0NtZFJlc2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtDbWRSZXNldEV2ZW50Iik7CisrICAgIHZr
Q21kUmVzZXRRdWVyeVBvb2wgPSAoUEZOX3ZrQ21kUmVzZXRRdWVyeVBvb2wpbG9hZChjb250ZXh0
LCAidmtDbWRSZXNldFF1ZXJ5UG9vbCIpOworKyAgICB2a0NtZFJlc29sdmVJbWFnZSA9IChQRk5f
dmtDbWRSZXNvbHZlSW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRSZXNvbHZlSW1hZ2UiKTsKKysg
ICAgdmtDbWRTZXRCbGVuZENvbnN0YW50cyA9IChQRk5fdmtDbWRTZXRCbGVuZENvbnN0YW50cyls
b2FkKGNvbnRleHQsICJ2a0NtZFNldEJsZW5kQ29uc3RhbnRzIik7CisrICAgIHZrQ21kU2V0RGVw
dGhCaWFzID0gKFBGTl92a0NtZFNldERlcHRoQmlhcylsb2FkKGNvbnRleHQsICJ2a0NtZFNldERl
cHRoQmlhcyIpOworKyAgICB2a0NtZFNldERlcHRoQm91bmRzID0gKFBGTl92a0NtZFNldERlcHRo
Qm91bmRzKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGVwdGhCb3VuZHMiKTsKKysgICAgdmtDbWRT
ZXRFdmVudCA9IChQRk5fdmtDbWRTZXRFdmVudClsb2FkKGNvbnRleHQsICJ2a0NtZFNldEV2ZW50
Iik7CisrICAgIHZrQ21kU2V0TGluZVdpZHRoID0gKFBGTl92a0NtZFNldExpbmVXaWR0aClsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldExpbmVXaWR0aCIpOworKyAgICB2a0NtZFNldFNjaXNzb3IgPSAo
UEZOX3ZrQ21kU2V0U2Npc3Nvcilsb2FkKGNvbnRleHQsICJ2a0NtZFNldFNjaXNzb3IiKTsKKysg
ICAgdmtDbWRTZXRTdGVuY2lsQ29tcGFyZU1hc2sgPSAoUEZOX3ZrQ21kU2V0U3RlbmNpbENvbXBh
cmVNYXNrKWxvYWQoY29udGV4dCwgInZrQ21kU2V0U3RlbmNpbENvbXBhcmVNYXNrIik7CisrICAg
IHZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSA9IChQRk5fdmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNl
KWxvYWQoY29udGV4dCwgInZrQ21kU2V0U3RlbmNpbFJlZmVyZW5jZSIpOworKyAgICB2a0NtZFNl
dFN0ZW5jaWxXcml0ZU1hc2sgPSAoUEZOX3ZrQ21kU2V0U3RlbmNpbFdyaXRlTWFzaylsb2FkKGNv
bnRleHQsICJ2a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2siKTsKKysgICAgdmtDbWRTZXRWaWV3cG9y
dCA9IChQRk5fdmtDbWRTZXRWaWV3cG9ydClsb2FkKGNvbnRleHQsICJ2a0NtZFNldFZpZXdwb3J0
Iik7CisrICAgIHZrQ21kVXBkYXRlQnVmZmVyID0gKFBGTl92a0NtZFVwZGF0ZUJ1ZmZlcilsb2Fk
KGNvbnRleHQsICJ2a0NtZFVwZGF0ZUJ1ZmZlciIpOworKyAgICB2a0NtZFdhaXRFdmVudHMgPSAo
UEZOX3ZrQ21kV2FpdEV2ZW50cylsb2FkKGNvbnRleHQsICJ2a0NtZFdhaXRFdmVudHMiKTsKKysg
ICAgdmtDbWRXcml0ZVRpbWVzdGFtcCA9IChQRk5fdmtDbWRXcml0ZVRpbWVzdGFtcClsb2FkKGNv
bnRleHQsICJ2a0NtZFdyaXRlVGltZXN0YW1wIik7CisrICAgIHZrQ3JlYXRlQnVmZmVyID0gKFBG
Tl92a0NyZWF0ZUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUJ1ZmZlciIpOworKyAgICB2
a0NyZWF0ZUJ1ZmZlclZpZXcgPSAoUEZOX3ZrQ3JlYXRlQnVmZmVyVmlldylsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZUJ1ZmZlclZpZXciKTsKKysgICAgdmtDcmVhdGVDb21tYW5kUG9vbCA9IChQRk5f
dmtDcmVhdGVDb21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUNvbW1hbmRQb29sIik7
CisrICAgIHZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lcyA9IChQRk5fdmtDcmVhdGVDb21wdXRlUGlw
ZWxpbmVzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lcyIpOworKyAgICB2
a0NyZWF0ZURlc2NyaXB0b3JQb29sID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JQb29sKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclBvb2wiKTsKKysgICAgdmtDcmVhdGVEZXNjcmlw
dG9yU2V0TGF5b3V0ID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQpbG9hZChjb250
ZXh0LCAidmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0Iik7CisrICAgIHZrQ3JlYXRlRXZlbnQg
PSAoUEZOX3ZrQ3JlYXRlRXZlbnQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVFdmVudCIpOworKyAg
ICB2a0NyZWF0ZUZlbmNlID0gKFBGTl92a0NyZWF0ZUZlbmNlKWxvYWQoY29udGV4dCwgInZrQ3Jl
YXRlRmVuY2UiKTsKKysgICAgdmtDcmVhdGVGcmFtZWJ1ZmZlciA9IChQRk5fdmtDcmVhdGVGcmFt
ZWJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUZyYW1lYnVmZmVyIik7CisrICAgIHZrQ3Jl
YXRlR3JhcGhpY3NQaXBlbGluZXMgPSAoUEZOX3ZrQ3JlYXRlR3JhcGhpY3NQaXBlbGluZXMpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcyIpOworKyAgICB2a0NyZWF0ZUlt
YWdlID0gKFBGTl92a0NyZWF0ZUltYWdlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW1hZ2UiKTsK
KysgICAgdmtDcmVhdGVJbWFnZVZpZXcgPSAoUEZOX3ZrQ3JlYXRlSW1hZ2VWaWV3KWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlSW1hZ2VWaWV3Iik7CisrICAgIHZrQ3JlYXRlUGlwZWxpbmVDYWNoZSA9
IChQRk5fdmtDcmVhdGVQaXBlbGluZUNhY2hlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUGlwZWxp
bmVDYWNoZSIpOworKyAgICB2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0ID0gKFBGTl92a0NyZWF0ZVBp
cGVsaW5lTGF5b3V0KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQiKTsKKysg
ICAgdmtDcmVhdGVRdWVyeVBvb2wgPSAoUEZOX3ZrQ3JlYXRlUXVlcnlQb29sKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlUXVlcnlQb29sIik7CisrICAgIHZrQ3JlYXRlUmVuZGVyUGFzcyA9IChQRk5f
dmtDcmVhdGVSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUmVuZGVyUGFzcyIpOwor
KyAgICB2a0NyZWF0ZVNhbXBsZXIgPSAoUEZOX3ZrQ3JlYXRlU2FtcGxlcilsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZVNhbXBsZXIiKTsKKysgICAgdmtDcmVhdGVTZW1hcGhvcmUgPSAoUEZOX3ZrQ3Jl
YXRlU2VtYXBob3JlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU2VtYXBob3JlIik7CisrICAgIHZr
Q3JlYXRlU2hhZGVyTW9kdWxlID0gKFBGTl92a0NyZWF0ZVNoYWRlck1vZHVsZSlsb2FkKGNvbnRl
eHQsICJ2a0NyZWF0ZVNoYWRlck1vZHVsZSIpOworKyAgICB2a0Rlc3Ryb3lCdWZmZXIgPSAoUEZO
X3ZrRGVzdHJveUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lCdWZmZXIiKTsKKysgICAg
dmtEZXN0cm95QnVmZmVyVmlldyA9IChQRk5fdmtEZXN0cm95QnVmZmVyVmlldylsb2FkKGNvbnRl
eHQsICJ2a0Rlc3Ryb3lCdWZmZXJWaWV3Iik7CisrICAgIHZrRGVzdHJveUNvbW1hbmRQb29sID0g
KFBGTl92a0Rlc3Ryb3lDb21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lDb21tYW5k
UG9vbCIpOworKyAgICB2a0Rlc3Ryb3lEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtEZXN0cm95RGVz
Y3JpcHRvclBvb2wpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3JpcHRvclBvb2wiKTsKKysg
ICAgdmtEZXN0cm95RGVzY3JpcHRvclNldExheW91dCA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRv
clNldExheW91dClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0Iik7
CisrICAgIHZrRGVzdHJveURldmljZSA9IChQRk5fdmtEZXN0cm95RGV2aWNlKWxvYWQoY29udGV4
dCwgInZrRGVzdHJveURldmljZSIpOworKyAgICB2a0Rlc3Ryb3lFdmVudCA9IChQRk5fdmtEZXN0
cm95RXZlbnQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RXZlbnQiKTsKKysgICAgdmtEZXN0cm95
RmVuY2UgPSAoUEZOX3ZrRGVzdHJveUZlbmNlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUZlbmNl
Iik7CisrICAgIHZrRGVzdHJveUZyYW1lYnVmZmVyID0gKFBGTl92a0Rlc3Ryb3lGcmFtZWJ1ZmZl
cilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lGcmFtZWJ1ZmZlciIpOworKyAgICB2a0Rlc3Ryb3lJ
bWFnZSA9IChQRk5fdmtEZXN0cm95SW1hZ2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95SW1hZ2Ui
KTsKKysgICAgdmtEZXN0cm95SW1hZ2VWaWV3ID0gKFBGTl92a0Rlc3Ryb3lJbWFnZVZpZXcpbG9h
ZChjb250ZXh0LCAidmtEZXN0cm95SW1hZ2VWaWV3Iik7CisrICAgIHZrRGVzdHJveVBpcGVsaW5l
ID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQaXBlbGlu
ZSIpOworKyAgICB2a0Rlc3Ryb3lQaXBlbGluZUNhY2hlID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGlu
ZUNhY2hlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5lQ2FjaGUiKTsKKysgICAgdmtE
ZXN0cm95UGlwZWxpbmVMYXlvdXQgPSAoUEZOX3ZrRGVzdHJveVBpcGVsaW5lTGF5b3V0KWxvYWQo
Y29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5lTGF5b3V0Iik7CisrICAgIHZrRGVzdHJveVF1ZXJ5
UG9vbCA9IChQRk5fdmtEZXN0cm95UXVlcnlQb29sKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVF1
ZXJ5UG9vbCIpOworKyAgICB2a0Rlc3Ryb3lSZW5kZXJQYXNzID0gKFBGTl92a0Rlc3Ryb3lSZW5k
ZXJQYXNzKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVJlbmRlclBhc3MiKTsKKysgICAgdmtEZXN0
cm95U2FtcGxlciA9IChQRk5fdmtEZXN0cm95U2FtcGxlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ry
b3lTYW1wbGVyIik7CisrICAgIHZrRGVzdHJveVNlbWFwaG9yZSA9IChQRk5fdmtEZXN0cm95U2Vt
YXBob3JlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVNlbWFwaG9yZSIpOworKyAgICB2a0Rlc3Ry
b3lTaGFkZXJNb2R1bGUgPSAoUEZOX3ZrRGVzdHJveVNoYWRlck1vZHVsZSlsb2FkKGNvbnRleHQs
ICJ2a0Rlc3Ryb3lTaGFkZXJNb2R1bGUiKTsKKysgICAgdmtEZXZpY2VXYWl0SWRsZSA9IChQRk5f
dmtEZXZpY2VXYWl0SWRsZSlsb2FkKGNvbnRleHQsICJ2a0RldmljZVdhaXRJZGxlIik7CisrICAg
IHZrRW5kQ29tbWFuZEJ1ZmZlciA9IChQRk5fdmtFbmRDb21tYW5kQnVmZmVyKWxvYWQoY29udGV4
dCwgInZrRW5kQ29tbWFuZEJ1ZmZlciIpOworKyAgICB2a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2Vz
ID0gKFBGTl92a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzKWxvYWQoY29udGV4dCwgInZrRmx1c2hN
YXBwZWRNZW1vcnlSYW5nZXMiKTsKKysgICAgdmtGcmVlQ29tbWFuZEJ1ZmZlcnMgPSAoUEZOX3Zr
RnJlZUNvbW1hbmRCdWZmZXJzKWxvYWQoY29udGV4dCwgInZrRnJlZUNvbW1hbmRCdWZmZXJzIik7
CisrICAgIHZrRnJlZURlc2NyaXB0b3JTZXRzID0gKFBGTl92a0ZyZWVEZXNjcmlwdG9yU2V0cyls
b2FkKGNvbnRleHQsICJ2a0ZyZWVEZXNjcmlwdG9yU2V0cyIpOworKyAgICB2a0ZyZWVNZW1vcnkg
PSAoUEZOX3ZrRnJlZU1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a0ZyZWVNZW1vcnkiKTsKKysgICAg
dmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMgPSAoUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVx
dWlyZW1lbnRzKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzIik7
CisrICAgIHZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudCA9IChQRk5fdmtHZXREZXZpY2VNZW1v
cnlDb21taXRtZW50KWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudCIp
OworKyAgICB2a0dldERldmljZVF1ZXVlID0gKFBGTl92a0dldERldmljZVF1ZXVlKWxvYWQoY29u
dGV4dCwgInZrR2V0RGV2aWNlUXVldWUiKTsKKysgICAgdmtHZXRFdmVudFN0YXR1cyA9IChQRk5f
dmtHZXRFdmVudFN0YXR1cylsb2FkKGNvbnRleHQsICJ2a0dldEV2ZW50U3RhdHVzIik7CisrICAg
IHZrR2V0RmVuY2VTdGF0dXMgPSAoUEZOX3ZrR2V0RmVuY2VTdGF0dXMpbG9hZChjb250ZXh0LCAi
dmtHZXRGZW5jZVN0YXR1cyIpOworKyAgICB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzID0g
KFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzKWxvYWQoY29udGV4dCwgInZrR2V0SW1h
Z2VNZW1vcnlSZXF1aXJlbWVudHMiKTsKKysgICAgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVp
cmVtZW50cyA9IChQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50cylsb2FkKGNv
bnRleHQsICJ2a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzIik7CisrICAgIHZrR2V0
SW1hZ2VTdWJyZXNvdXJjZUxheW91dCA9IChQRk5fdmtHZXRJbWFnZVN1YnJlc291cmNlTGF5b3V0
KWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dCIpOworKyAgICB2a0dl
dFBpcGVsaW5lQ2FjaGVEYXRhID0gKFBGTl92a0dldFBpcGVsaW5lQ2FjaGVEYXRhKWxvYWQoY29u
dGV4dCwgInZrR2V0UGlwZWxpbmVDYWNoZURhdGEiKTsKKysgICAgdmtHZXRRdWVyeVBvb2xSZXN1
bHRzID0gKFBGTl92a0dldFF1ZXJ5UG9vbFJlc3VsdHMpbG9hZChjb250ZXh0LCAidmtHZXRRdWVy
eVBvb2xSZXN1bHRzIik7CisrICAgIHZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5ID0gKFBGTl92
a0dldFJlbmRlckFyZWFHcmFudWxhcml0eSlsb2FkKGNvbnRleHQsICJ2a0dldFJlbmRlckFyZWFH
cmFudWxhcml0eSIpOworKyAgICB2a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMgPSAoUEZO
X3ZrSW52YWxpZGF0ZU1hcHBlZE1lbW9yeVJhbmdlcylsb2FkKGNvbnRleHQsICJ2a0ludmFsaWRh
dGVNYXBwZWRNZW1vcnlSYW5nZXMiKTsKKysgICAgdmtNYXBNZW1vcnkgPSAoUEZOX3ZrTWFwTWVt
b3J5KWxvYWQoY29udGV4dCwgInZrTWFwTWVtb3J5Iik7CisrICAgIHZrTWVyZ2VQaXBlbGluZUNh
Y2hlcyA9IChQRk5fdmtNZXJnZVBpcGVsaW5lQ2FjaGVzKWxvYWQoY29udGV4dCwgInZrTWVyZ2VQ
aXBlbGluZUNhY2hlcyIpOworKyAgICB2a1F1ZXVlQmluZFNwYXJzZSA9IChQRk5fdmtRdWV1ZUJp
bmRTcGFyc2UpbG9hZChjb250ZXh0LCAidmtRdWV1ZUJpbmRTcGFyc2UiKTsKKysgICAgdmtRdWV1
ZVN1Ym1pdCA9IChQRk5fdmtRdWV1ZVN1Ym1pdClsb2FkKGNvbnRleHQsICJ2a1F1ZXVlU3VibWl0
Iik7CisrICAgIHZrUXVldWVXYWl0SWRsZSA9IChQRk5fdmtRdWV1ZVdhaXRJZGxlKWxvYWQoY29u
dGV4dCwgInZrUXVldWVXYWl0SWRsZSIpOworKyAgICB2a1Jlc2V0Q29tbWFuZEJ1ZmZlciA9IChQ
Rk5fdmtSZXNldENvbW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtSZXNldENvbW1hbmRCdWZm
ZXIiKTsKKysgICAgdmtSZXNldENvbW1hbmRQb29sID0gKFBGTl92a1Jlc2V0Q29tbWFuZFBvb2wp
bG9hZChjb250ZXh0LCAidmtSZXNldENvbW1hbmRQb29sIik7CisrICAgIHZrUmVzZXREZXNjcmlw
dG9yUG9vbCA9IChQRk5fdmtSZXNldERlc2NyaXB0b3JQb29sKWxvYWQoY29udGV4dCwgInZrUmVz
ZXREZXNjcmlwdG9yUG9vbCIpOworKyAgICB2a1Jlc2V0RXZlbnQgPSAoUEZOX3ZrUmVzZXRFdmVu
dClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0RXZlbnQiKTsKKysgICAgdmtSZXNldEZlbmNlcyA9IChQ
Rk5fdmtSZXNldEZlbmNlcylsb2FkKGNvbnRleHQsICJ2a1Jlc2V0RmVuY2VzIik7CisrICAgIHZr
U2V0RXZlbnQgPSAoUEZOX3ZrU2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtTZXRFdmVudCIpOwor
KyAgICB2a1VubWFwTWVtb3J5ID0gKFBGTl92a1VubWFwTWVtb3J5KWxvYWQoY29udGV4dCwgInZr
VW5tYXBNZW1vcnkiKTsKKysgICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtVcGRh
dGVEZXNjcmlwdG9yU2V0cylsb2FkKGNvbnRleHQsICJ2a1VwZGF0ZURlc2NyaXB0b3JTZXRzIik7
CisrICAgIHZrV2FpdEZvckZlbmNlcyA9IChQRk5fdmtXYWl0Rm9yRmVuY2VzKWxvYWQoY29udGV4
dCwgInZrV2FpdEZvckZlbmNlcyIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8w
KSAqLworICNpZiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKQorLQl2a0JpbmRCdWZmZXJNZW1vcnky
ID0gKFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyKWxvYWQoY29udGV4dCwgInZrQmluZEJ1ZmZlck1l
bW9yeTIiKTsKKy0JdmtCaW5kSW1hZ2VNZW1vcnkyID0gKFBGTl92a0JpbmRJbWFnZU1lbW9yeTIp
bG9hZChjb250ZXh0LCAidmtCaW5kSW1hZ2VNZW1vcnkyIik7CistCXZrQ21kRGlzcGF0Y2hCYXNl
ID0gKFBGTl92a0NtZERpc3BhdGNoQmFzZSlsb2FkKGNvbnRleHQsICJ2a0NtZERpc3BhdGNoQmFz
ZSIpOworLQl2a0NtZFNldERldmljZU1hc2sgPSAoUEZOX3ZrQ21kU2V0RGV2aWNlTWFzaylsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldERldmljZU1hc2siKTsKKy0JdmtDcmVhdGVEZXNjcmlwdG9yVXBk
YXRlVGVtcGxhdGUgPSAoUEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlKWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIik7CistCXZrQ3JlYXRl
U2FtcGxlclljYmNyQ29udmVyc2lvbiA9IChQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJz
aW9uKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbiIpOworLQl2
a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUgPSAoUEZOX3ZrRGVzdHJveURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRl
VGVtcGxhdGUiKTsKKy0JdmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbiA9IChQRk5fdmtE
ZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lTYW1w
bGVyWWNiY3JDb252ZXJzaW9uIik7CistCXZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMiA9
IChQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyKWxvYWQoY29udGV4dCwgInZrR2V0
QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworLQl2a0dldERlc2NyaXB0b3JTZXRMYXlvdXRT
dXBwb3J0ID0gKFBGTl92a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0KWxvYWQoY29udGV4
dCwgInZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBvcnQiKTsKKy0JdmtHZXREZXZpY2VHcm91
cFBlZXJNZW1vcnlGZWF0dXJlcyA9IChQRk5fdmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0
dXJlcylsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzIik7
CistCXZrR2V0RGV2aWNlUXVldWUyID0gKFBGTl92a0dldERldmljZVF1ZXVlMilsb2FkKGNvbnRl
eHQsICJ2a0dldERldmljZVF1ZXVlMiIpOworLQl2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRz
MiA9IChQRk5fdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czIpbG9hZChjb250ZXh0LCAidmtH
ZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czIiKTsKKy0JdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJl
cXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyKWxv
YWQoY29udGV4dCwgInZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyIik7CistCXZr
VHJpbUNvbW1hbmRQb29sID0gKFBGTl92a1RyaW1Db21tYW5kUG9vbClsb2FkKGNvbnRleHQsICJ2
a1RyaW1Db21tYW5kUG9vbCIpOworLQl2a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUg
PSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZSlsb2FkKGNvbnRleHQsICJ2
a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUiKTsKKysgICAgdmtCaW5kQnVmZmVyTWVt
b3J5MiA9IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5Milsb2FkKGNvbnRleHQsICJ2a0JpbmRCdWZm
ZXJNZW1vcnkyIik7CisrICAgIHZrQmluZEltYWdlTWVtb3J5MiA9IChQRk5fdmtCaW5kSW1hZ2VN
ZW1vcnkyKWxvYWQoY29udGV4dCwgInZrQmluZEltYWdlTWVtb3J5MiIpOworKyAgICB2a0NtZERp
c3BhdGNoQmFzZSA9IChQRk5fdmtDbWREaXNwYXRjaEJhc2UpbG9hZChjb250ZXh0LCAidmtDbWRE
aXNwYXRjaEJhc2UiKTsKKysgICAgdmtDbWRTZXREZXZpY2VNYXNrID0gKFBGTl92a0NtZFNldERl
dmljZU1hc2spbG9hZChjb250ZXh0LCAidmtDbWRTZXREZXZpY2VNYXNrIik7CisrICAgIHZrQ3Jl
YXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JVcGRh
dGVUZW1wbGF0ZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0
ZSIpOworKyAgICB2a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24gPSAoUEZOX3ZrQ3JlYXRl
U2FtcGxlclljYmNyQ29udmVyc2lvbilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNhbXBsZXJZY2Jj
ckNvbnZlcnNpb24iKTsKKysgICAgdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlID0g
KFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIik7CisrICAgIHZrRGVzdHJveVNhbXBsZXJZ
Y2JjckNvbnZlcnNpb24gPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb24pbG9h
ZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbiIpOworKyAgICB2a0dl
dEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVxdWly
ZW1lbnRzMilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIiKTsK
KysgICAgdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydCA9IChQRk5fdmtHZXREZXNjcmlw
dG9yU2V0TGF5b3V0U3VwcG9ydClsb2FkKGNvbnRleHQsICJ2a0dldERlc2NyaXB0b3JTZXRMYXlv
dXRTdXBwb3J0Iik7CisrICAgIHZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMgPSAo
UEZOX3ZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMpbG9hZChjb250ZXh0LCAidmtH
ZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlcyIpOworKyAgICB2a0dldERldmljZVF1ZXVl
MiA9IChQRk5fdmtHZXREZXZpY2VRdWV1ZTIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VRdWV1
ZTIiKTsKKysgICAgdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0SW1h
Z2VNZW1vcnlSZXF1aXJlbWVudHMyKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VNZW1vcnlSZXF1
aXJlbWVudHMyIik7CisrICAgIHZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyID0g
KFBGTl92a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMilsb2FkKGNvbnRleHQsICJ2
a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworKyAgICB2a1RyaW1Db21tYW5k
UG9vbCA9IChQRk5fdmtUcmltQ29tbWFuZFBvb2wpbG9hZChjb250ZXh0LCAidmtUcmltQ29tbWFu
ZFBvb2wiKTsKKysgICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlID0gKFBGTl92
a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUpbG9hZChjb250ZXh0LCAidmtVcGRhdGVE
ZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfVkVSU0lP
Tl8xXzEpICovCisgI2lmIGRlZmluZWQoVktfQU1EX2J1ZmZlcl9tYXJrZXIpCistCXZrQ21kV3Jp
dGVCdWZmZXJNYXJrZXJBTUQgPSAoUEZOX3ZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQpbG9hZChj
b250ZXh0LCAidmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRCIpOworKyAgICB2a0NtZFdyaXRlQnVm
ZmVyTWFya2VyQU1EID0gKFBGTl92a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1EKWxvYWQoY29udGV4
dCwgInZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19B
TURfYnVmZmVyX21hcmtlcikgKi8KKyAjaWYgZGVmaW5lZChWS19BTURfZGlzcGxheV9uYXRpdmVf
aGRyKQorLQl2a1NldExvY2FsRGltbWluZ0FNRCA9IChQRk5fdmtTZXRMb2NhbERpbW1pbmdBTUQp
bG9hZChjb250ZXh0LCAidmtTZXRMb2NhbERpbW1pbmdBTUQiKTsKKysgICAgdmtTZXRMb2NhbERp
bW1pbmdBTUQgPSAoUEZOX3ZrU2V0TG9jYWxEaW1taW5nQU1EKWxvYWQoY29udGV4dCwgInZrU2V0
TG9jYWxEaW1taW5nQU1EIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2Rpc3BsYXlfbmF0
aXZlX2hkcikgKi8KKyAjaWYgZGVmaW5lZChWS19BTURfZHJhd19pbmRpcmVjdF9jb3VudCkKKy0J
dmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRBTUQgPSAoUEZOX3ZrQ21kRHJhd0luZGV4ZWRJ
bmRpcmVjdENvdW50QU1EKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENv
dW50QU1EIik7CistCXZrQ21kRHJhd0luZGlyZWN0Q291bnRBTUQgPSAoUEZOX3ZrQ21kRHJhd0lu
ZGlyZWN0Q291bnRBTUQpbG9hZChjb250ZXh0LCAidmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCIp
OworKyAgICB2a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRCA9IChQRk5fdmtDbWREcmF3
SW5kZXhlZEluZGlyZWN0Q291bnRBTUQpbG9hZChjb250ZXh0LCAidmtDbWREcmF3SW5kZXhlZElu
ZGlyZWN0Q291bnRBTUQiKTsKKysgICAgdmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCA9IChQRk5f
dmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVj
dENvdW50QU1EIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2RyYXdfaW5kaXJlY3RfY291
bnQpICovCisgI2lmIGRlZmluZWQoVktfQU1EX3NoYWRlcl9pbmZvKQorLQl2a0dldFNoYWRlcklu
Zm9BTUQgPSAoUEZOX3ZrR2V0U2hhZGVySW5mb0FNRClsb2FkKGNvbnRleHQsICJ2a0dldFNoYWRl
ckluZm9BTUQiKTsKKysgICAgdmtHZXRTaGFkZXJJbmZvQU1EID0gKFBGTl92a0dldFNoYWRlcklu
Zm9BTUQpbG9hZChjb250ZXh0LCAidmtHZXRTaGFkZXJJbmZvQU1EIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfQU1EX3NoYWRlcl9pbmZvKSAqLworICNpZiBkZWZpbmVkKFZLX0FORFJPSURfZXh0
ZXJuYWxfbWVtb3J5X2FuZHJvaWRfaGFyZHdhcmVfYnVmZmVyKQorLQl2a0dldEFuZHJvaWRIYXJk
d2FyZUJ1ZmZlclByb3BlcnRpZXNBTkRST0lEID0gKFBGTl92a0dldEFuZHJvaWRIYXJkd2FyZUJ1
ZmZlclByb3BlcnRpZXNBTkRST0lEKWxvYWQoY29udGV4dCwgInZrR2V0QW5kcm9pZEhhcmR3YXJl
QnVmZmVyUHJvcGVydGllc0FORFJPSUQiKTsKKy0JdmtHZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVC
dWZmZXJBTkRST0lEID0gKFBGTl92a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJP
SUQpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVCdWZmZXJBTkRST0lE
Iik7CisrICAgIHZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQgPSAo
UEZOX3ZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQpbG9hZChjb250
ZXh0LCAidmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRCIpOworKyAg
ICB2a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQgPSAoUEZOX3ZrR2V0TWVt
b3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRClsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9y
eUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFORFJPSUQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19B
TkRST0lEX2V4dGVybmFsX21lbW9yeV9hbmRyb2lkX2hhcmR3YXJlX2J1ZmZlcikgKi8KKyAjaWYg
ZGVmaW5lZChWS19FWFRfYnVmZmVyX2RldmljZV9hZGRyZXNzKQorLQl2a0dldEJ1ZmZlckRldmlj
ZUFkZHJlc3NFWFQgPSAoUEZOX3ZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VYVClsb2FkKGNvbnRl
eHQsICJ2a0dldEJ1ZmZlckRldmljZUFkZHJlc3NFWFQiKTsKKysgICAgdmtHZXRCdWZmZXJEZXZp
Y2VBZGRyZXNzRVhUID0gKFBGTl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NFWFQpbG9hZChjb250
ZXh0LCAidmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfRVhUX2J1ZmZlcl9kZXZpY2VfYWRkcmVzcykgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfY2Fs
aWJyYXRlZF90aW1lc3RhbXBzKQorLQl2a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUID0gKFBG
Tl92a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0Q2FsaWJy
YXRlZFRpbWVzdGFtcHNFWFQiKTsKKysgICAgdmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVCA9
IChQRk5fdmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVClsb2FkKGNvbnRleHQsICJ2a0dldENh
bGlicmF0ZWRUaW1lc3RhbXBzRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2NhbGli
cmF0ZWRfdGltZXN0YW1wcykgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfY29uZGl0aW9uYWxfcmVu
ZGVyaW5nKQorLQl2a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQgPSAoUEZOX3ZrQ21k
QmVnaW5Db25kaXRpb25hbFJlbmRlcmluZ0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luQ29u
ZGl0aW9uYWxSZW5kZXJpbmdFWFQiKTsKKy0JdmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VY
VCA9IChQRk5fdmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVClsb2FkKGNvbnRleHQsICJ2
a0NtZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIik7CisrICAgIHZrQ21kQmVnaW5Db25kaXRp
b25hbFJlbmRlcmluZ0VYVCA9IChQRk5fdmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhU
KWxvYWQoY29udGV4dCwgInZrQ21kQmVnaW5Db25kaXRpb25hbFJlbmRlcmluZ0VYVCIpOworKyAg
ICB2a0NtZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhUID0gKFBGTl92a0NtZEVuZENvbmRpdGlv
bmFsUmVuZGVyaW5nRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJp
bmdFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfY29uZGl0aW9uYWxfcmVuZGVyaW5n
KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9kZWJ1Z19tYXJrZXIpCistCXZrQ21kRGVidWdNYXJr
ZXJCZWdpbkVYVCA9IChQRk5fdmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUKWxvYWQoY29udGV4dCwg
InZrQ21kRGVidWdNYXJrZXJCZWdpbkVYVCIpOworLQl2a0NtZERlYnVnTWFya2VyRW5kRVhUID0g
KFBGTl92a0NtZERlYnVnTWFya2VyRW5kRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRGVidWdNYXJr
ZXJFbmRFWFQiKTsKKy0JdmtDbWREZWJ1Z01hcmtlckluc2VydEVYVCA9IChQRk5fdmtDbWREZWJ1
Z01hcmtlckluc2VydEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERlYnVnTWFya2VySW5zZXJ0RVhU
Iik7CistCXZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUID0gKFBGTl92a0RlYnVnTWFya2Vy
U2V0T2JqZWN0TmFtZUVYVClsb2FkKGNvbnRleHQsICJ2a0RlYnVnTWFya2VyU2V0T2JqZWN0TmFt
ZUVYVCIpOworLQl2a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUID0gKFBGTl92a0RlYnVnTWFy
a2VyU2V0T2JqZWN0VGFnRVhUKWxvYWQoY29udGV4dCwgInZrRGVidWdNYXJrZXJTZXRPYmplY3RU
YWdFWFQiKTsKKysgICAgdmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUID0gKFBGTl92a0NtZERlYnVn
TWFya2VyQmVnaW5FWFQpbG9hZChjb250ZXh0LCAidmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUIik7
CisrICAgIHZrQ21kRGVidWdNYXJrZXJFbmRFWFQgPSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJFbmRF
WFQpbG9hZChjb250ZXh0LCAidmtDbWREZWJ1Z01hcmtlckVuZEVYVCIpOworKyAgICB2a0NtZERl
YnVnTWFya2VySW5zZXJ0RVhUID0gKFBGTl92a0NtZERlYnVnTWFya2VySW5zZXJ0RVhUKWxvYWQo
Y29udGV4dCwgInZrQ21kRGVidWdNYXJrZXJJbnNlcnRFWFQiKTsKKysgICAgdmtEZWJ1Z01hcmtl
clNldE9iamVjdE5hbWVFWFQgPSAoUEZOX3ZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUKWxv
YWQoY29udGV4dCwgInZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUIik7CisrICAgIHZrRGVi
dWdNYXJrZXJTZXRPYmplY3RUYWdFWFQgPSAoUEZOX3ZrRGVidWdNYXJrZXJTZXRPYmplY3RUYWdF
WFQpbG9hZChjb250ZXh0LCAidmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVCIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX0VYVF9kZWJ1Z19tYXJrZXIpICovCisgI2lmIGRlZmluZWQoVktfRVhU
X2Rpc2NhcmRfcmVjdGFuZ2xlcykKKy0JdmtDbWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUID0gKFBG
Tl92a0NtZFNldERpc2NhcmRSZWN0YW5nbGVFWFQpbG9hZChjb250ZXh0LCAidmtDbWRTZXREaXNj
YXJkUmVjdGFuZ2xlRVhUIik7CisrICAgIHZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVCA9IChQ
Rk5fdmtDbWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGlz
Y2FyZFJlY3RhbmdsZUVYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9kaXNjYXJkX3Jl
Y3RhbmdsZXMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Rpc3BsYXlfY29udHJvbCkKKy0JdmtE
aXNwbGF5UG93ZXJDb250cm9sRVhUID0gKFBGTl92a0Rpc3BsYXlQb3dlckNvbnRyb2xFWFQpbG9h
ZChjb250ZXh0LCAidmtEaXNwbGF5UG93ZXJDb250cm9sRVhUIik7CistCXZrR2V0U3dhcGNoYWlu
Q291bnRlckVYVCA9IChQRk5fdmtHZXRTd2FwY2hhaW5Db3VudGVyRVhUKWxvYWQoY29udGV4dCwg
InZrR2V0U3dhcGNoYWluQ291bnRlckVYVCIpOworLQl2a1JlZ2lzdGVyRGV2aWNlRXZlbnRFWFQg
PSAoUEZOX3ZrUmVnaXN0ZXJEZXZpY2VFdmVudEVYVClsb2FkKGNvbnRleHQsICJ2a1JlZ2lzdGVy
RGV2aWNlRXZlbnRFWFQiKTsKKy0JdmtSZWdpc3RlckRpc3BsYXlFdmVudEVYVCA9IChQRk5fdmtS
ZWdpc3RlckRpc3BsYXlFdmVudEVYVClsb2FkKGNvbnRleHQsICJ2a1JlZ2lzdGVyRGlzcGxheUV2
ZW50RVhUIik7CisrICAgIHZrRGlzcGxheVBvd2VyQ29udHJvbEVYVCA9IChQRk5fdmtEaXNwbGF5
UG93ZXJDb250cm9sRVhUKWxvYWQoY29udGV4dCwgInZrRGlzcGxheVBvd2VyQ29udHJvbEVYVCIp
OworKyAgICB2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQgPSAoUEZOX3ZrR2V0U3dhcGNoYWluQ291
bnRlckVYVClsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQiKTsKKysgICAg
dmtSZWdpc3RlckRldmljZUV2ZW50RVhUID0gKFBGTl92a1JlZ2lzdGVyRGV2aWNlRXZlbnRFWFQp
bG9hZChjb250ZXh0LCAidmtSZWdpc3RlckRldmljZUV2ZW50RVhUIik7CisrICAgIHZrUmVnaXN0
ZXJEaXNwbGF5RXZlbnRFWFQgPSAoUEZOX3ZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQpbG9hZChj
b250ZXh0LCAidmtSZWdpc3RlckRpc3BsYXlFdmVudEVYVCIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0VYVF9kaXNwbGF5X2NvbnRyb2wpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2V4dGVybmFs
X21lbW9yeV9ob3N0KQorLQl2a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVCA9IChQ
Rk5fdmtHZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAidmtH
ZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXNFWFQiKTsKKysgICAgdmtHZXRNZW1vcnlIb3N0
UG9pbnRlclByb3BlcnRpZXNFWFQgPSAoUEZOX3ZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0
aWVzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzRVhU
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2V4dGVybmFsX21lbW9yeV9ob3N0KSAqLwor
ICNpZiBkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUpCistCXZrQWNxdWlyZUZ1
bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUID0gKFBGTl92a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVz
aXZlTW9kZUVYVClsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9k
ZUVYVCIpOworLQl2a1JlbGVhc2VGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCA9IChQRk5fdmtS
ZWxlYXNlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQpbG9hZChjb250ZXh0LCAidmtSZWxlYXNl
RnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQiKTsKKysgICAgdmtBY3F1aXJlRnVsbFNjcmVlbkV4
Y2x1c2l2ZU1vZGVFWFQgPSAoUEZOX3ZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhU
KWxvYWQoY29udGV4dCwgInZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIik7Cisr
ICAgIHZrUmVsZWFzZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUID0gKFBGTl92a1JlbGVhc2VG
dWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVClsb2FkKGNvbnRleHQsICJ2a1JlbGVhc2VGdWxsU2Ny
ZWVuRXhjbHVzaXZlTW9kZUVYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9mdWxsX3Nj
cmVlbl9leGNsdXNpdmUpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2hkcl9tZXRhZGF0YSkKKy0J
dmtTZXRIZHJNZXRhZGF0YUVYVCA9IChQRk5fdmtTZXRIZHJNZXRhZGF0YUVYVClsb2FkKGNvbnRl
eHQsICJ2a1NldEhkck1ldGFkYXRhRVhUIik7CisrICAgIHZrU2V0SGRyTWV0YWRhdGFFWFQgPSAo
UEZOX3ZrU2V0SGRyTWV0YWRhdGFFWFQpbG9hZChjb250ZXh0LCAidmtTZXRIZHJNZXRhZGF0YUVY
VCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9oZHJfbWV0YWRhdGEpICovCisgI2lmIGRl
ZmluZWQoVktfRVhUX2hvc3RfcXVlcnlfcmVzZXQpCistCXZrUmVzZXRRdWVyeVBvb2xFWFQgPSAo
UEZOX3ZrUmVzZXRRdWVyeVBvb2xFWFQpbG9hZChjb250ZXh0LCAidmtSZXNldFF1ZXJ5UG9vbEVY
VCIpOworKyAgICB2a1Jlc2V0UXVlcnlQb29sRVhUID0gKFBGTl92a1Jlc2V0UXVlcnlQb29sRVhU
KWxvYWQoY29udGV4dCwgInZrUmVzZXRRdWVyeVBvb2xFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19FWFRfaG9zdF9xdWVyeV9yZXNldCkgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfaW1hZ2Vf
ZHJtX2Zvcm1hdF9tb2RpZmllcikKKy0JdmtHZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVy
dGllc0VYVCA9IChQRk5fdmtHZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCls
b2FkKGNvbnRleHQsICJ2a0dldEltYWdlRHJtRm9ybWF0TW9kaWZpZXJQcm9wZXJ0aWVzRVhUIik7
CisrICAgIHZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNFWFQgPSAoUEZOX3Zr
R2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3BlcnRpZXNFWFQpbG9hZChjb250ZXh0LCAidmtH
ZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0VYVF9pbWFnZV9kcm1fZm9ybWF0X21vZGlmaWVyKSAqLworICNpZiBkZWZpbmVkKFZL
X0VYVF9saW5lX3Jhc3Rlcml6YXRpb24pCistCXZrQ21kU2V0TGluZVN0aXBwbGVFWFQgPSAoUEZO
X3ZrQ21kU2V0TGluZVN0aXBwbGVFWFQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRMaW5lU3RpcHBs
ZUVYVCIpOworKyAgICB2a0NtZFNldExpbmVTdGlwcGxlRVhUID0gKFBGTl92a0NtZFNldExpbmVT
dGlwcGxlRVhUKWxvYWQoY29udGV4dCwgInZrQ21kU2V0TGluZVN0aXBwbGVFWFQiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19FWFRfbGluZV9yYXN0ZXJpemF0aW9uKSAqLworICNpZiBkZWZpbmVk
KFZLX0VYVF9zYW1wbGVfbG9jYXRpb25zKQorLQl2a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVCA9
IChQRk5fdmtDbWRTZXRTYW1wbGVMb2NhdGlvbnNFWFQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRT
YW1wbGVMb2NhdGlvbnNFWFQiKTsKKysgICAgdmtDbWRTZXRTYW1wbGVMb2NhdGlvbnNFWFQgPSAo
UEZOX3ZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUKWxvYWQoY29udGV4dCwgInZrQ21kU2V0U2Ft
cGxlTG9jYXRpb25zRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX3NhbXBsZV9sb2Nh
dGlvbnMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX3RyYW5zZm9ybV9mZWVkYmFjaykKKy0JdmtD
bWRCZWdpblF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRCZWdpblF1ZXJ5SW5kZXhlZEVYVCls
b2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnlJbmRleGVkRVhUIik7CistCXZrQ21kQmVnaW5U
cmFuc2Zvcm1GZWVkYmFja0VYVCA9IChQRk5fdmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNrRVhU
KWxvYWQoY29udGV4dCwgInZrQ21kQmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVCIpOworLQl2a0Nt
ZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQgPSAoUEZOX3ZrQ21kQmluZFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyc0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnNFWFQiKTsKKy0JdmtDbWREcmF3SW5kaXJlY3RCeXRlQ291bnRFWFQgPSAoUEZO
X3ZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0lu
ZGlyZWN0Qnl0ZUNvdW50RVhUIik7CistCXZrQ21kRW5kUXVlcnlJbmRleGVkRVhUID0gKFBGTl92
a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZEVuZFF1ZXJ5SW5kZXhl
ZEVYVCIpOworLQl2a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUID0gKFBGTl92a0NtZEVuZFRy
YW5zZm9ybUZlZWRiYWNrRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRW5kVHJhbnNmb3JtRmVlZGJh
Y2tFWFQiKTsKKysgICAgdmtDbWRCZWdpblF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRCZWdp
blF1ZXJ5SW5kZXhlZEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnlJbmRleGVkRVhU
Iik7CisrICAgIHZrQ21kQmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVCA9IChQRk5fdmtDbWRCZWdp
blRyYW5zZm9ybUZlZWRiYWNrRVhUKWxvYWQoY29udGV4dCwgInZrQ21kQmVnaW5UcmFuc2Zvcm1G
ZWVkYmFja0VYVCIpOworKyAgICB2a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQg
PSAoUEZOX3ZrQ21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0VYVClsb2FkKGNvbnRleHQs
ICJ2a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQiKTsKKysgICAgdmtDbWREcmF3
SW5kaXJlY3RCeXRlQ291bnRFWFQgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhU
KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUIik7CisrICAgIHZr
Q21kRW5kUXVlcnlJbmRleGVkRVhUID0gKFBGTl92a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVClsb2Fk
KGNvbnRleHQsICJ2a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVCIpOworKyAgICB2a0NtZEVuZFRyYW5z
Zm9ybUZlZWRiYWNrRVhUID0gKFBGTl92a0NtZEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUKWxvYWQo
Y29udGV4dCwgInZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF92
YWxpZGF0aW9uX2NhY2hlKQorLQl2a0NyZWF0ZVZhbGlkYXRpb25DYWNoZUVYVCA9IChQRk5fdmtD
cmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQpbG9hZChjb250ZXh0LCAidmtDcmVhdGVWYWxpZGF0aW9u
Q2FjaGVFWFQiKTsKKy0JdmtEZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUID0gKFBGTl92a0Rlc3Ry
b3lWYWxpZGF0aW9uQ2FjaGVFWFQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95VmFsaWRhdGlvbkNh
Y2hlRVhUIik7CistCXZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVYVCA9IChQRk5fdmtHZXRWYWxp
ZGF0aW9uQ2FjaGVEYXRhRVhUKWxvYWQoY29udGV4dCwgInZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0
YUVYVCIpOworLQl2a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVCA9IChQRk5fdmtNZXJnZVZhbGlk
YXRpb25DYWNoZXNFWFQpbG9hZChjb250ZXh0LCAidmtNZXJnZVZhbGlkYXRpb25DYWNoZXNFWFQi
KTsKKysgICAgdmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQgPSAoUEZOX3ZrQ3JlYXRlVmFsaWRh
dGlvbkNhY2hlRVhUKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhUIik7
CisrICAgIHZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVCA9IChQRk5fdmtEZXN0cm95VmFsaWRh
dGlvbkNhY2hlRVhUKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVCIp
OworKyAgICB2a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQgPSAoUEZOX3ZrR2V0VmFsaWRhdGlv
bkNhY2hlRGF0YUVYVClsb2FkKGNvbnRleHQsICJ2a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQi
KTsKKysgICAgdmtNZXJnZVZhbGlkYXRpb25DYWNoZXNFWFQgPSAoUEZOX3ZrTWVyZ2VWYWxpZGF0
aW9uQ2FjaGVzRVhUKWxvYWQoY29udGV4dCwgInZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVzRVhUIik7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX3ZhbGlkYXRpb25fY2FjaGUpICovCisgI2lmIGRl
ZmluZWQoVktfR09PR0xFX2Rpc3BsYXlfdGltaW5nKQorLQl2a0dldFBhc3RQcmVzZW50YXRpb25U
aW1pbmdHT09HTEUgPSAoUEZOX3ZrR2V0UGFzdFByZXNlbnRhdGlvblRpbWluZ0dPT0dMRSlsb2Fk
KGNvbnRleHQsICJ2a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUiKTsKKy0JdmtHZXRS
ZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRSA9IChQRk5fdmtHZXRSZWZyZXNoQ3ljbGVEdXJhdGlv
bkdPT0dMRSlsb2FkKGNvbnRleHQsICJ2a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFIik7
CisrICAgIHZrR2V0UGFzdFByZXNlbnRhdGlvblRpbWluZ0dPT0dMRSA9IChQRk5fdmtHZXRQYXN0
UHJlc2VudGF0aW9uVGltaW5nR09PR0xFKWxvYWQoY29udGV4dCwgInZrR2V0UGFzdFByZXNlbnRh
dGlvblRpbWluZ0dPT0dMRSIpOworKyAgICB2a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xF
ID0gKFBGTl92a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFKWxvYWQoY29udGV4dCwgInZr
R2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19H
T09HTEVfZGlzcGxheV90aW1pbmcpICovCisgI2lmIGRlZmluZWQoVktfSU5URUxfcGVyZm9ybWFu
Y2VfcXVlcnkpCistCXZrQWNxdWlyZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMID0gKFBG
Tl92a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTClsb2FkKGNvbnRleHQsICJ2
a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworLQl2a0NtZFNldFBlcmZv
cm1hbmNlTWFya2VySU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VNYXJrZXJJTlRFTCls
b2FkKGNvbnRleHQsICJ2a0NtZFNldFBlcmZvcm1hbmNlTWFya2VySU5URUwiKTsKKy0JdmtDbWRT
ZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VPdmVy
cmlkZUlOVEVMKWxvYWQoY29udGV4dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVM
Iik7CistCXZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTCA9IChQRk5fdmtDbWRT
ZXRQZXJmb3JtYW5jZVN0cmVhbU1hcmtlcklOVEVMKWxvYWQoY29udGV4dCwgInZrQ21kU2V0UGVy
Zm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTCIpOworLQl2a0dldFBlcmZvcm1hbmNlUGFyYW1ldGVy
SU5URUwgPSAoUEZOX3ZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRFTClsb2FkKGNvbnRleHQs
ICJ2a0dldFBlcmZvcm1hbmNlUGFyYW1ldGVySU5URUwiKTsKKy0JdmtJbml0aWFsaXplUGVyZm9y
bWFuY2VBcGlJTlRFTCA9IChQRk5fdmtJbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTClsb2Fk
KGNvbnRleHQsICJ2a0luaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMIik7CistCXZrUXVldWVT
ZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtRdWV1ZVNldFBlcmZvcm1h
bmNlQ29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29udGV4dCwgInZrUXVldWVTZXRQZXJmb3JtYW5j
ZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworLQl2a1JlbGVhc2VQZXJmb3JtYW5jZUNvbmZpZ3VyYXRp
b25JTlRFTCA9IChQRk5fdmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwpbG9h
ZChjb250ZXh0LCAidmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwiKTsKKy0J
dmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMID0gKFBGTl92a1VuaW5pdGlhbGl6ZVBl
cmZvcm1hbmNlQXBpSU5URUwpbG9hZChjb250ZXh0LCAidmtVbmluaXRpYWxpemVQZXJmb3JtYW5j
ZUFwaUlOVEVMIik7CisrICAgIHZrQWNxdWlyZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVM
ID0gKFBGTl92a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTClsb2FkKGNvbnRl
eHQsICJ2a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworKyAgICB2a0Nt
ZFNldFBlcmZvcm1hbmNlTWFya2VySU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VNYXJr
ZXJJTlRFTClsb2FkKGNvbnRleHQsICJ2a0NtZFNldFBlcmZvcm1hbmNlTWFya2VySU5URUwiKTsK
KysgICAgdmtDbWRTZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwgPSAoUEZOX3ZrQ21kU2V0UGVy
Zm9ybWFuY2VPdmVycmlkZUlOVEVMKWxvYWQoY29udGV4dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VP
dmVycmlkZUlOVEVMIik7CisrICAgIHZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRF
TCA9IChQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZVN0cmVhbU1hcmtlcklOVEVMKWxvYWQoY29udGV4
dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTCIpOworKyAgICB2a0dldFBl
cmZvcm1hbmNlUGFyYW1ldGVySU5URUwgPSAoUEZOX3ZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJ
TlRFTClsb2FkKGNvbnRleHQsICJ2a0dldFBlcmZvcm1hbmNlUGFyYW1ldGVySU5URUwiKTsKKysg
ICAgdmtJbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCA9IChQRk5fdmtJbml0aWFsaXplUGVy
Zm9ybWFuY2VBcGlJTlRFTClsb2FkKGNvbnRleHQsICJ2a0luaXRpYWxpemVQZXJmb3JtYW5jZUFw
aUlOVEVMIik7CisrICAgIHZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCA9
IChQRk5fdmtRdWV1ZVNldFBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29udGV4
dCwgInZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworKyAgICB2a1Jl
bGVhc2VQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtSZWxlYXNlUGVyZm9y
bWFuY2VDb25maWd1cmF0aW9uSU5URUwpbG9hZChjb250ZXh0LCAidmtSZWxlYXNlUGVyZm9ybWFu
Y2VDb25maWd1cmF0aW9uSU5URUwiKTsKKysgICAgdmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFw
aUlOVEVMID0gKFBGTl92a1VuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwpbG9hZChjb250
ZXh0LCAidmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfSU5URUxfcGVyZm9ybWFuY2VfcXVlcnkpICovCisgI2lmIGRlZmluZWQoVktfS0hS
X2JpbmRfbWVtb3J5MikKKy0JdmtCaW5kQnVmZmVyTWVtb3J5MktIUiA9IChQRk5fdmtCaW5kQnVm
ZmVyTWVtb3J5MktIUilsb2FkKGNvbnRleHQsICJ2a0JpbmRCdWZmZXJNZW1vcnkyS0hSIik7Cist
CXZrQmluZEltYWdlTWVtb3J5MktIUiA9IChQRk5fdmtCaW5kSW1hZ2VNZW1vcnkyS0hSKWxvYWQo
Y29udGV4dCwgInZrQmluZEltYWdlTWVtb3J5MktIUiIpOworKyAgICB2a0JpbmRCdWZmZXJNZW1v
cnkyS0hSID0gKFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyS0hSKWxvYWQoY29udGV4dCwgInZrQmlu
ZEJ1ZmZlck1lbW9yeTJLSFIiKTsKKysgICAgdmtCaW5kSW1hZ2VNZW1vcnkyS0hSID0gKFBGTl92
a0JpbmRJbWFnZU1lbW9yeTJLSFIpbG9hZChjb250ZXh0LCAidmtCaW5kSW1hZ2VNZW1vcnkyS0hS
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2JpbmRfbWVtb3J5MikgKi8KKyAjaWYgZGVm
aW5lZChWS19LSFJfYnVmZmVyX2RldmljZV9hZGRyZXNzKQorLQl2a0dldEJ1ZmZlckRldmljZUFk
ZHJlc3NLSFIgPSAoUEZOX3ZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0tIUilsb2FkKGNvbnRleHQs
ICJ2a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFIiKTsKKy0JdmtHZXRCdWZmZXJPcGFxdWVDYXB0
dXJlQWRkcmVzc0tIUiA9IChQRk5fdmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUils
b2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSIik7CistCXZr
R2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIgPSAoUEZOX3ZrR2V0RGV2aWNl
TWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VN
ZW1vcnlPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiIpOworKyAgICB2a0dldEJ1ZmZlckRldmljZUFk
ZHJlc3NLSFIgPSAoUEZOX3ZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0tIUilsb2FkKGNvbnRleHQs
ICJ2a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFIiKTsKKysgICAgdmtHZXRCdWZmZXJPcGFxdWVD
YXB0dXJlQWRkcmVzc0tIUiA9IChQRk5fdmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tI
Uilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSIik7Cisr
ICAgIHZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIgPSAoUEZOX3ZrR2V0
RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRE
ZXZpY2VNZW1vcnlPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0tIUl9idWZmZXJfZGV2aWNlX2FkZHJlc3MpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2Ny
ZWF0ZV9yZW5kZXJwYXNzMikKKy0JdmtDbWRCZWdpblJlbmRlclBhc3MyS0hSID0gKFBGTl92a0Nt
ZEJlZ2luUmVuZGVyUGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblJlbmRlclBhc3My
S0hSIik7CistCXZrQ21kRW5kUmVuZGVyUGFzczJLSFIgPSAoUEZOX3ZrQ21kRW5kUmVuZGVyUGFz
czJLSFIpbG9hZChjb250ZXh0LCAidmtDbWRFbmRSZW5kZXJQYXNzMktIUiIpOworLQl2a0NtZE5l
eHRTdWJwYXNzMktIUiA9IChQRk5fdmtDbWROZXh0U3VicGFzczJLSFIpbG9hZChjb250ZXh0LCAi
dmtDbWROZXh0U3VicGFzczJLSFIiKTsKKy0JdmtDcmVhdGVSZW5kZXJQYXNzMktIUiA9IChQRk5f
dmtDcmVhdGVSZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVJlbmRlclBhc3My
S0hSIik7CisrICAgIHZrQ21kQmVnaW5SZW5kZXJQYXNzMktIUiA9IChQRk5fdmtDbWRCZWdpblJl
bmRlclBhc3MyS0hSKWxvYWQoY29udGV4dCwgInZrQ21kQmVnaW5SZW5kZXJQYXNzMktIUiIpOwor
KyAgICB2a0NtZEVuZFJlbmRlclBhc3MyS0hSID0gKFBGTl92a0NtZEVuZFJlbmRlclBhc3MyS0hS
KWxvYWQoY29udGV4dCwgInZrQ21kRW5kUmVuZGVyUGFzczJLSFIiKTsKKysgICAgdmtDbWROZXh0
U3VicGFzczJLSFIgPSAoUEZOX3ZrQ21kTmV4dFN1YnBhc3MyS0hSKWxvYWQoY29udGV4dCwgInZr
Q21kTmV4dFN1YnBhc3MyS0hSIik7CisrICAgIHZrQ3JlYXRlUmVuZGVyUGFzczJLSFIgPSAoUEZO
X3ZrQ3JlYXRlUmVuZGVyUGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVSZW5kZXJQYXNz
MktIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9jcmVhdGVfcmVuZGVycGFzczIpICov
CisgI2lmIGRlZmluZWQoVktfS0hSX2Rlc2NyaXB0b3JfdXBkYXRlX3RlbXBsYXRlKQorLQl2a0Ny
ZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9y
VXBkYXRlVGVtcGxhdGVLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRl
VGVtcGxhdGVLSFIiKTsKKy0JdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSID0g
KFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSIik7CistCXZrVXBkYXRlRGVzY3Jp
cHRvclNldFdpdGhUZW1wbGF0ZUtIUiA9IChQRk5fdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRl
bXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0
ZUtIUiIpOworKyAgICB2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5f
dmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIpbG9hZChjb250ZXh0LCAidmtDcmVh
dGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIiKTsKKysgICAgdmtEZXN0cm95RGVzY3JpcHRv
clVwZGF0ZVRlbXBsYXRlS0hSID0gKFBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxh
dGVLSFIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hS
Iik7CisrICAgIHZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiA9IChQRk5fdmtV
cGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrVXBkYXRl
RGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tI
Ul9kZXNjcmlwdG9yX3VwZGF0ZV90ZW1wbGF0ZSkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZGV2
aWNlX2dyb3VwKQorLQl2a0NtZERpc3BhdGNoQmFzZUtIUiA9IChQRk5fdmtDbWREaXNwYXRjaEJh
c2VLSFIpbG9hZChjb250ZXh0LCAidmtDbWREaXNwYXRjaEJhc2VLSFIiKTsKKy0JdmtDbWRTZXRE
ZXZpY2VNYXNrS0hSID0gKFBGTl92a0NtZFNldERldmljZU1hc2tLSFIpbG9hZChjb250ZXh0LCAi
dmtDbWRTZXREZXZpY2VNYXNrS0hSIik7CistCXZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVh
dHVyZXNLSFIgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNLSFIpbG9h
ZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiIpOworKyAg
ICB2a0NtZERpc3BhdGNoQmFzZUtIUiA9IChQRk5fdmtDbWREaXNwYXRjaEJhc2VLSFIpbG9hZChj
b250ZXh0LCAidmtDbWREaXNwYXRjaEJhc2VLSFIiKTsKKysgICAgdmtDbWRTZXREZXZpY2VNYXNr
S0hSID0gKFBGTl92a0NtZFNldERldmljZU1hc2tLSFIpbG9hZChjb250ZXh0LCAidmtDbWRTZXRE
ZXZpY2VNYXNrS0hSIik7CisrICAgIHZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNL
SFIgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXNLSFIpbG9hZChjb250
ZXh0LCAidmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiIpOworICNlbmRpZiAv
KiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICovCisgI2lmIGRlZmluZWQoVktfS0hSX2Rp
c3BsYXlfc3dhcGNoYWluKQorLQl2a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIgPSAoUEZOX3Zr
Q3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNoYXJlZFN3
YXBjaGFpbnNLSFIiKTsKKysgICAgdmtDcmVhdGVTaGFyZWRTd2FwY2hhaW5zS0hSID0gKFBGTl92
a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTaGFyZWRT
d2FwY2hhaW5zS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2Rpc3BsYXlfc3dhcGNo
YWluKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9kcmF3X2luZGlyZWN0X2NvdW50KQorLQl2a0Nt
ZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEtIUiA9IChQRk5fdmtDbWREcmF3SW5kZXhlZEluZGly
ZWN0Q291bnRLSFIpbG9hZChjb250ZXh0LCAidmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRL
SFIiKTsKKy0JdmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUiA9IChQRk5fdmtDbWREcmF3SW5kaXJl
Y3RDb3VudEtIUilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdENvdW50S0hSIik7Cisr
ICAgIHZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50S0hSID0gKFBGTl92a0NtZERyYXdJbmRl
eGVkSW5kaXJlY3RDb3VudEtIUilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkSW5kaXJl
Y3RDb3VudEtIUiIpOworKyAgICB2a0NtZERyYXdJbmRpcmVjdENvdW50S0hSID0gKFBGTl92a0Nt
ZERyYXdJbmRpcmVjdENvdW50S0hSKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Q291
bnRLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZHJhd19pbmRpcmVjdF9jb3VudCkg
Ki8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2VfZmQpCistCXZrR2V0RmVuY2VG
ZEtIUiA9IChQRk5fdmtHZXRGZW5jZUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RmVuY2VGZEtI
UiIpOworLQl2a0ltcG9ydEZlbmNlRmRLSFIgPSAoUEZOX3ZrSW1wb3J0RmVuY2VGZEtIUilsb2Fk
KGNvbnRleHQsICJ2a0ltcG9ydEZlbmNlRmRLSFIiKTsKKysgICAgdmtHZXRGZW5jZUZkS0hSID0g
KFBGTl92a0dldEZlbmNlRmRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRGZW5jZUZkS0hSIik7Cisr
ICAgIHZrSW1wb3J0RmVuY2VGZEtIUiA9IChQRk5fdmtJbXBvcnRGZW5jZUZkS0hSKWxvYWQoY29u
dGV4dCwgInZrSW1wb3J0RmVuY2VGZEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9l
eHRlcm5hbF9mZW5jZV9mZCkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2Vf
d2luMzIpCistCXZrR2V0RmVuY2VXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtHZXRGZW5jZVdpbjMy
SGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RmVuY2VXaW4zMkhhbmRsZUtIUiIpOworLQl2
a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrSW1wb3J0RmVuY2VXaW4zMkhhbmRs
ZUtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIiKTsKKysgICAg
dmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0dldEZlbmNlV2luMzJIYW5kbGVLSFIp
bG9hZChjb250ZXh0LCAidmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSIik7CisrICAgIHZrSW1wb3J0
RmVuY2VXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtJbXBvcnRGZW5jZVdpbjMySGFuZGxlS0hSKWxv
YWQoY29udGV4dCwgInZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUiIpOworICNlbmRpZiAvKiBk
ZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9mZW5jZV93aW4zMikgKi8KKyAjaWYgZGVmaW5lZChWS19L
SFJfZXh0ZXJuYWxfbWVtb3J5X2ZkKQorLQl2a0dldE1lbW9yeUZkS0hSID0gKFBGTl92a0dldE1l
bW9yeUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5RmRLSFIiKTsKKy0JdmtHZXRNZW1v
cnlGZFByb3BlcnRpZXNLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSIik7CisrICAgIHZrR2V0TWVtb3J5
RmRLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5RmRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlG
ZEtIUiIpOworKyAgICB2a0dldE1lbW9yeUZkUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRNZW1v
cnlGZFByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlGZFByb3BlcnRpZXNL
SFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5X2ZkKSAqLwor
ICNpZiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9tZW1vcnlfd2luMzIpCistCXZrR2V0TWVtb3J5
V2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5V2luMzJIYW5kbGVLSFIpbG9hZChjb250
ZXh0LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRsZUtIUiIpOworLQl2a0dldE1lbW9yeVdpbjMySGFu
ZGxlUHJvcGVydGllc0tIUiA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNL
SFIpbG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNLSFIiKTsK
KysgICAgdmtHZXRNZW1vcnlXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhh
bmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSIik7CisrICAg
IHZrR2V0TWVtb3J5V2luMzJIYW5kbGVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldE1lbW9yeVdp
bjMySGFuZGxlUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFu
ZGxlUHJvcGVydGllc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9t
ZW1vcnlfd2luMzIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9m
ZCkKKy0JdmtHZXRTZW1hcGhvcmVGZEtIUiA9IChQRk5fdmtHZXRTZW1hcGhvcmVGZEtIUilsb2Fk
KGNvbnRleHQsICJ2a0dldFNlbWFwaG9yZUZkS0hSIik7CistCXZrSW1wb3J0U2VtYXBob3JlRmRL
SFIgPSAoUEZOX3ZrSW1wb3J0U2VtYXBob3JlRmRLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRT
ZW1hcGhvcmVGZEtIUiIpOworKyAgICB2a0dldFNlbWFwaG9yZUZkS0hSID0gKFBGTl92a0dldFNl
bWFwaG9yZUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlRmRLSFIiKTsKKysgICAg
dmtJbXBvcnRTZW1hcGhvcmVGZEtIUiA9IChQRk5fdmtJbXBvcnRTZW1hcGhvcmVGZEtIUilsb2Fk
KGNvbnRleHQsICJ2a0ltcG9ydFNlbWFwaG9yZUZkS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9mZCkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0
ZXJuYWxfc2VtYXBob3JlX3dpbjMyKQorLQl2a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSID0g
KFBGTl92a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2Vt
YXBob3JlV2luMzJIYW5kbGVLSFIiKTsKKy0JdmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhhbmRsZUtI
UiA9IChQRk5fdmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2
a0ltcG9ydFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSIik7CisrICAgIHZrR2V0U2VtYXBob3JlV2lu
MzJIYW5kbGVLSFIgPSAoUEZOX3ZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIpbG9hZChjb250
ZXh0LCAidmtHZXRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiIpOworKyAgICB2a0ltcG9ydFNlbWFw
aG9yZVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0ltcG9ydFNlbWFwaG9yZVdpbjMySGFuZGxlS0hS
KWxvYWQoY29udGV4dCwgInZrSW1wb3J0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX3dpbjMyKSAqLworICNpZiBk
ZWZpbmVkKFZLX0tIUl9nZXRfbWVtb3J5X3JlcXVpcmVtZW50czIpCistCXZrR2V0QnVmZmVyTWVt
b3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMy
S0hSKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUiIpOwor
LQl2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtHZXRJbWFnZU1lbW9y
eVJlcXVpcmVtZW50czJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVt
ZW50czJLSFIiKTsKKy0JdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czJLSFIgPSAo
UEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7CisrICAgIHZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJl
bWVudHMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktI
UiIpOworKyAgICB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtHZXRJ
bWFnZU1lbW9yeVJlcXVpcmVtZW50czJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZU1lbW9y
eVJlcXVpcmVtZW50czJLSFIiKTsKKysgICAgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVt
ZW50czJLSFIgPSAoUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxv
YWQoY29udGV4dCwgInZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7Cisg
I2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2dldF9tZW1vcnlfcmVxdWlyZW1lbnRzMikgKi8KKyAj
aWYgZGVmaW5lZChWS19LSFJfbWFpbnRlbmFuY2UxKQorLQl2a1RyaW1Db21tYW5kUG9vbEtIUiA9
IChQRk5fdmtUcmltQ29tbWFuZFBvb2xLSFIpbG9hZChjb250ZXh0LCAidmtUcmltQ29tbWFuZFBv
b2xLSFIiKTsKKysgICAgdmtUcmltQ29tbWFuZFBvb2xLSFIgPSAoUEZOX3ZrVHJpbUNvbW1hbmRQ
b29sS0hSKWxvYWQoY29udGV4dCwgInZrVHJpbUNvbW1hbmRQb29sS0hSIik7CisgI2VuZGlmIC8q
IGRlZmluZWQoVktfS0hSX21haW50ZW5hbmNlMSkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfbWFp
bnRlbmFuY2UzKQorLQl2a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSID0gKFBGTl92
a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGVz
Y3JpcHRvclNldExheW91dFN1cHBvcnRLSFIiKTsKKysgICAgdmtHZXREZXNjcmlwdG9yU2V0TGF5
b3V0U3VwcG9ydEtIUiA9IChQRk5fdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydEtIUils
b2FkKGNvbnRleHQsICJ2a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSIik7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfS0hSX21haW50ZW5hbmNlMykgKi8KKyAjaWYgZGVmaW5lZChWS19L
SFJfcGVyZm9ybWFuY2VfcXVlcnkpCistCXZrQWNxdWlyZVByb2ZpbGluZ0xvY2tLSFIgPSAoUEZO
X3ZrQWNxdWlyZVByb2ZpbGluZ0xvY2tLSFIpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlUHJvZmls
aW5nTG9ja0tIUiIpOworLQl2a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSID0gKFBGTl92a1JlbGVh
c2VQcm9maWxpbmdMb2NrS0hSKWxvYWQoY29udGV4dCwgInZrUmVsZWFzZVByb2ZpbGluZ0xvY2tL
SFIiKTsKKysgICAgdmtBY3F1aXJlUHJvZmlsaW5nTG9ja0tIUiA9IChQRk5fdmtBY3F1aXJlUHJv
ZmlsaW5nTG9ja0tIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVQcm9maWxpbmdMb2NrS0hSIik7
CisrICAgIHZrUmVsZWFzZVByb2ZpbGluZ0xvY2tLSFIgPSAoUEZOX3ZrUmVsZWFzZVByb2ZpbGlu
Z0xvY2tLSFIpbG9hZChjb250ZXh0LCAidmtSZWxlYXNlUHJvZmlsaW5nTG9ja0tIUiIpOworICNl
bmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9wZXJmb3JtYW5jZV9xdWVyeSkgKi8KKyAjaWYgZGVmaW5l
ZChWS19LSFJfcGlwZWxpbmVfZXhlY3V0YWJsZV9wcm9wZXJ0aWVzKQorLQl2a0dldFBpcGVsaW5l
RXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRpb25zS0hSID0gKFBGTl92a0dldFBpcGVsaW5l
RXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRpb25zS0hSKWxvYWQoY29udGV4dCwgInZrR2V0
UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIiKTsKKy0JdmtHZXRQ
aXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBpcGVsaW5lRXhlY3V0
YWJsZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQ
cm9wZXJ0aWVzS0hSIik7CistCXZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlzdGljc0tIUiA9
IChQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlzdGljc0tIUiIpOworKyAgICB2a0dldFBpcGVs
aW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRpb25zS0hSID0gKFBGTl92a0dldFBpcGVs
aW5lRXhlY3V0YWJsZUludGVybmFsUmVwcmVzZW50YXRpb25zS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIiKTsKKysgICAg
dmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBpcGVsaW5l
RXhlY3V0YWJsZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaXBlbGluZUV4ZWN1
dGFibGVQcm9wZXJ0aWVzS0hSIik7CisrICAgIHZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlz
dGljc0tIUiA9IChQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSKWxvYWQo
Y29udGV4dCwgInZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlzdGljc0tIUiIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX0tIUl9waXBlbGluZV9leGVjdXRhYmxlX3Byb3BlcnRpZXMpICovCisg
I2lmIGRlZmluZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRvcikKKy0JdmtDbWRQdXNoRGVzY3JpcHRv
clNldEtIUiA9IChQRk5fdmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUilsb2FkKGNvbnRleHQsICJ2
a0NtZFB1c2hEZXNjcmlwdG9yU2V0S0hSIik7CisrICAgIHZrQ21kUHVzaERlc2NyaXB0b3JTZXRL
SFIgPSAoUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JTZXRLSFIpbG9hZChjb250ZXh0LCAidmtDbWRQ
dXNoRGVzY3JpcHRvclNldEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rl
c2NyaXB0b3IpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3NhbXBsZXJfeWNiY3JfY29udmVyc2lv
bikKKy0JdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSID0gKFBGTl92a0NyZWF0ZVNh
bXBsZXJZY2JjckNvbnZlcnNpb25LSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTYW1wbGVyWWNi
Y3JDb252ZXJzaW9uS0hSIik7CistCXZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIg
PSAoUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiIpOworKyAgICB2a0NyZWF0ZVNhbXBs
ZXJZY2JjckNvbnZlcnNpb25LSFIgPSAoUEZOX3ZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lv
bktIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIiKTsK
KysgICAgdmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiA9IChQRk5fdmtEZXN0cm95
U2FtcGxlclljYmNyQ29udmVyc2lvbktIUilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lTYW1wbGVy
WWNiY3JDb252ZXJzaW9uS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3NhbXBsZXJf
eWNiY3JfY29udmVyc2lvbikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfc2hhcmVkX3ByZXNlbnRh
YmxlX2ltYWdlKQorLQl2a0dldFN3YXBjaGFpblN0YXR1c0tIUiA9IChQRk5fdmtHZXRTd2FwY2hh
aW5TdGF0dXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRTd2FwY2hhaW5TdGF0dXNLSFIiKTsKKysg
ICAgdmtHZXRTd2FwY2hhaW5TdGF0dXNLSFIgPSAoUEZOX3ZrR2V0U3dhcGNoYWluU3RhdHVzS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0U3dhcGNoYWluU3RhdHVzS0hSIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfS0hSX3NoYXJlZF9wcmVzZW50YWJsZV9pbWFnZSkgKi8KKyAjaWYgZGVmaW5lZChW
S19LSFJfc3dhcGNoYWluKQorLQl2a0FjcXVpcmVOZXh0SW1hZ2VLSFIgPSAoUEZOX3ZrQWNxdWly
ZU5leHRJbWFnZUtIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVOZXh0SW1hZ2VLSFIiKTsKKy0J
dmtDcmVhdGVTd2FwY2hhaW5LSFIgPSAoUEZOX3ZrQ3JlYXRlU3dhcGNoYWluS0hSKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlU3dhcGNoYWluS0hSIik7CistCXZrRGVzdHJveVN3YXBjaGFpbktIUiA9
IChQRk5fdmtEZXN0cm95U3dhcGNoYWluS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVN3YXBj
aGFpbktIUiIpOworLQl2a0dldFN3YXBjaGFpbkltYWdlc0tIUiA9IChQRk5fdmtHZXRTd2FwY2hh
aW5JbWFnZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIiKTsKKy0J
dmtRdWV1ZVByZXNlbnRLSFIgPSAoUEZOX3ZrUXVldWVQcmVzZW50S0hSKWxvYWQoY29udGV4dCwg
InZrUXVldWVQcmVzZW50S0hSIik7CisrICAgIHZrQWNxdWlyZU5leHRJbWFnZUtIUiA9IChQRk5f
dmtBY3F1aXJlTmV4dEltYWdlS0hSKWxvYWQoY29udGV4dCwgInZrQWNxdWlyZU5leHRJbWFnZUtI
UiIpOworKyAgICB2a0NyZWF0ZVN3YXBjaGFpbktIUiA9IChQRk5fdmtDcmVhdGVTd2FwY2hhaW5L
SFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTd2FwY2hhaW5LSFIiKTsKKysgICAgdmtEZXN0cm95
U3dhcGNoYWluS0hSID0gKFBGTl92a0Rlc3Ryb3lTd2FwY2hhaW5LSFIpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95U3dhcGNoYWluS0hSIik7CisrICAgIHZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSID0g
KFBGTl92a0dldFN3YXBjaGFpbkltYWdlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFp
bkltYWdlc0tIUiIpOworKyAgICB2a1F1ZXVlUHJlc2VudEtIUiA9IChQRk5fdmtRdWV1ZVByZXNl
bnRLSFIpbG9hZChjb250ZXh0LCAidmtRdWV1ZVByZXNlbnRLSFIiKTsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19LSFJfc3dhcGNoYWluKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl90aW1lbGluZV9z
ZW1hcGhvcmUpCistCXZrR2V0U2VtYXBob3JlQ291bnRlclZhbHVlS0hSID0gKFBGTl92a0dldFNl
bWFwaG9yZUNvdW50ZXJWYWx1ZUtIUilsb2FkKGNvbnRleHQsICJ2a0dldFNlbWFwaG9yZUNvdW50
ZXJWYWx1ZUtIUiIpOworLQl2a1NpZ25hbFNlbWFwaG9yZUtIUiA9IChQRk5fdmtTaWduYWxTZW1h
cGhvcmVLSFIpbG9hZChjb250ZXh0LCAidmtTaWduYWxTZW1hcGhvcmVLSFIiKTsKKy0JdmtXYWl0
U2VtYXBob3Jlc0tIUiA9IChQRk5fdmtXYWl0U2VtYXBob3Jlc0tIUilsb2FkKGNvbnRleHQsICJ2
a1dhaXRTZW1hcGhvcmVzS0hSIik7CisrICAgIHZrR2V0U2VtYXBob3JlQ291bnRlclZhbHVlS0hS
ID0gKFBGTl92a0dldFNlbWFwaG9yZUNvdW50ZXJWYWx1ZUtIUilsb2FkKGNvbnRleHQsICJ2a0dl
dFNlbWFwaG9yZUNvdW50ZXJWYWx1ZUtIUiIpOworKyAgICB2a1NpZ25hbFNlbWFwaG9yZUtIUiA9
IChQRk5fdmtTaWduYWxTZW1hcGhvcmVLSFIpbG9hZChjb250ZXh0LCAidmtTaWduYWxTZW1hcGhv
cmVLSFIiKTsKKysgICAgdmtXYWl0U2VtYXBob3Jlc0tIUiA9IChQRk5fdmtXYWl0U2VtYXBob3Jl
c0tIUilsb2FkKGNvbnRleHQsICJ2a1dhaXRTZW1hcGhvcmVzS0hSIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZSkgKi8KKyAjaWYgZGVmaW5lZChWS19OVlhf
ZGV2aWNlX2dlbmVyYXRlZF9jb21tYW5kcykKKy0JdmtDbWRQcm9jZXNzQ29tbWFuZHNOVlggPSAo
UEZOX3ZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYKWxvYWQoY29udGV4dCwgInZrQ21kUHJvY2Vzc0Nv
bW1hbmRzTlZYIik7CistCXZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlggPSAoUEZOX3Zr
Q21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlgpbG9hZChjb250ZXh0LCAidmtDbWRSZXNlcnZl
U3BhY2VGb3JDb21tYW5kc05WWCIpOworLQl2a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXRO
VlggPSAoUEZOX3ZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWClsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgiKTsKKy0JdmtDcmVhdGVPYmplY3RU
YWJsZU5WWCA9IChQRk5fdmtDcmVhdGVPYmplY3RUYWJsZU5WWClsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZU9iamVjdFRhYmxlTlZYIik7CistCXZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXRO
VlggPSAoUEZOX3ZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgpbG9hZChjb250ZXh0
LCAidmtEZXN0cm95SW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCIpOworLQl2a0Rlc3Ryb3lPYmpl
Y3RUYWJsZU5WWCA9IChQRk5fdmtEZXN0cm95T2JqZWN0VGFibGVOVlgpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95T2JqZWN0VGFibGVOVlgiKTsKKy0JdmtSZWdpc3Rlck9iamVjdHNOVlggPSAoUEZO
X3ZrUmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4dCwgInZrUmVnaXN0ZXJPYmplY3RzTlZY
Iik7CistCXZrVW5yZWdpc3Rlck9iamVjdHNOVlggPSAoUEZOX3ZrVW5yZWdpc3Rlck9iamVjdHNO
VlgpbG9hZChjb250ZXh0LCAidmtVbnJlZ2lzdGVyT2JqZWN0c05WWCIpOworKyAgICB2a0NtZFBy
b2Nlc3NDb21tYW5kc05WWCA9IChQRk5fdmtDbWRQcm9jZXNzQ29tbWFuZHNOVlgpbG9hZChjb250
ZXh0LCAidmtDbWRQcm9jZXNzQ29tbWFuZHNOVlgiKTsKKysgICAgdmtDbWRSZXNlcnZlU3BhY2VG
b3JDb21tYW5kc05WWCA9IChQRk5fdmtDbWRSZXNlcnZlU3BhY2VGb3JDb21tYW5kc05WWClsb2Fk
KGNvbnRleHQsICJ2a0NtZFJlc2VydmVTcGFjZUZvckNvbW1hbmRzTlZYIik7CisrICAgIHZrQ3Jl
YXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCA9IChQRk5fdmtDcmVhdGVJbmRpcmVjdENvbW1h
bmRzTGF5b3V0TlZYKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91
dE5WWCIpOworKyAgICB2a0NyZWF0ZU9iamVjdFRhYmxlTlZYID0gKFBGTl92a0NyZWF0ZU9iamVj
dFRhYmxlTlZYKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlT2JqZWN0VGFibGVOVlgiKTsKKysgICAg
dmtEZXN0cm95SW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCA9IChQRk5fdmtEZXN0cm95SW5kaXJl
Y3RDb21tYW5kc0xheW91dE5WWClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lJbmRpcmVjdENvbW1h
bmRzTGF5b3V0TlZYIik7CisrICAgIHZrRGVzdHJveU9iamVjdFRhYmxlTlZYID0gKFBGTl92a0Rl
c3Ryb3lPYmplY3RUYWJsZU5WWClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lPYmplY3RUYWJsZU5W
WCIpOworKyAgICB2a1JlZ2lzdGVyT2JqZWN0c05WWCA9IChQRk5fdmtSZWdpc3Rlck9iamVjdHNO
VlgpbG9hZChjb250ZXh0LCAidmtSZWdpc3Rlck9iamVjdHNOVlgiKTsKKysgICAgdmtVbnJlZ2lz
dGVyT2JqZWN0c05WWCA9IChQRk5fdmtVbnJlZ2lzdGVyT2JqZWN0c05WWClsb2FkKGNvbnRleHQs
ICJ2a1VucmVnaXN0ZXJPYmplY3RzTlZYIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZYX2Rl
dmljZV9nZW5lcmF0ZWRfY29tbWFuZHMpICovCisgI2lmIGRlZmluZWQoVktfTlZYX2ltYWdlX3Zp
ZXdfaGFuZGxlKQorLQl2a0dldEltYWdlVmlld0hhbmRsZU5WWCA9IChQRk5fdmtHZXRJbWFnZVZp
ZXdIYW5kbGVOVlgpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVZpZXdIYW5kbGVOVlgiKTsKKysg
ICAgdmtHZXRJbWFnZVZpZXdIYW5kbGVOVlggPSAoUEZOX3ZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZY
KWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZYIik7CisgI2VuZGlmIC8qIGRl
ZmluZWQoVktfTlZYX2ltYWdlX3ZpZXdfaGFuZGxlKSAqLworICNpZiBkZWZpbmVkKFZLX05WX2Ns
aXBfc3BhY2Vfd19zY2FsaW5nKQorLQl2a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViA9IChQRk5f
dmtDbWRTZXRWaWV3cG9ydFdTY2FsaW5nTlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRWaWV3cG9y
dFdTY2FsaW5nTlYiKTsKKysgICAgdmtDbWRTZXRWaWV3cG9ydFdTY2FsaW5nTlYgPSAoUEZOX3Zr
Q21kU2V0Vmlld3BvcnRXU2NhbGluZ05WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0Vmlld3BvcnRX
U2NhbGluZ05WIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfY2xpcF9zcGFjZV93X3NjYWxp
bmcpICovCisgI2lmIGRlZmluZWQoVktfTlZfZGV2aWNlX2RpYWdub3N0aWNfY2hlY2twb2ludHMp
CistCXZrQ21kU2V0Q2hlY2twb2ludE5WID0gKFBGTl92a0NtZFNldENoZWNrcG9pbnROVilsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldENoZWNrcG9pbnROViIpOworLQl2a0dldFF1ZXVlQ2hlY2twb2lu
dERhdGFOViA9IChQRk5fdmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYpbG9hZChjb250ZXh0LCAi
dmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYiKTsKKysgICAgdmtDbWRTZXRDaGVja3BvaW50TlYg
PSAoUEZOX3ZrQ21kU2V0Q2hlY2twb2ludE5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0Q2hlY2tw
b2ludE5WIik7CisrICAgIHZrR2V0UXVldWVDaGVja3BvaW50RGF0YU5WID0gKFBGTl92a0dldFF1
ZXVlQ2hlY2twb2ludERhdGFOVilsb2FkKGNvbnRleHQsICJ2a0dldFF1ZXVlQ2hlY2twb2ludERh
dGFOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX2RldmljZV9kaWFnbm9zdGljX2NoZWNr
cG9pbnRzKSAqLworICNpZiBkZWZpbmVkKFZLX05WX2V4dGVybmFsX21lbW9yeV93aW4zMikKKy0J
dmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WID0gKFBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlTlYp
bG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WIik7CisrICAgIHZrR2V0TWVt
b3J5V2luMzJIYW5kbGVOViA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WKWxvYWQoY29u
dGV4dCwgInZrR2V0TWVtb3J5V2luMzJIYW5kbGVOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X05WX2V4dGVybmFsX21lbW9yeV93aW4zMikgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9tZXNoX3No
YWRlcikKKy0JdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WID0gKFBGTl92a0NtZERy
YXdNZXNoVGFza3NJbmRpcmVjdENvdW50TlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3TWVzaFRh
c2tzSW5kaXJlY3RDb3VudE5WIik7CistCXZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYgPSAo
UEZOX3ZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3
TWVzaFRhc2tzSW5kaXJlY3ROViIpOworLQl2a0NtZERyYXdNZXNoVGFza3NOViA9IChQRk5fdmtD
bWREcmF3TWVzaFRhc2tzTlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3TWVzaFRhc2tzTlYiKTsK
KysgICAgdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WID0gKFBGTl92a0NtZERyYXdN
ZXNoVGFza3NJbmRpcmVjdENvdW50TlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3TWVzaFRhc2tz
SW5kaXJlY3RDb3VudE5WIik7CisrICAgIHZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYgPSAo
UEZOX3ZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3
TWVzaFRhc2tzSW5kaXJlY3ROViIpOworKyAgICB2a0NtZERyYXdNZXNoVGFza3NOViA9IChQRk5f
dmtDbWREcmF3TWVzaFRhc2tzTlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3TWVzaFRhc2tzTlYi
KTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9tZXNoX3NoYWRlcikgKi8KKyAjaWYgZGVmaW5l
ZChWS19OVl9yYXlfdHJhY2luZykKKy0JdmtCaW5kQWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5
TlYgPSAoUEZOX3ZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WKWxvYWQoY29udGV4
dCwgInZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WIik7CistCXZrQ21kQnVpbGRB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVj
dHVyZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIp
OworLQl2a0NtZENvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDbWRDb3B5QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QWNjZWxlcmF0aW9u
U3RydWN0dXJlTlYiKTsKKy0JdmtDbWRUcmFjZVJheXNOViA9IChQRk5fdmtDbWRUcmFjZVJheXNO
Vilsb2FkKGNvbnRleHQsICJ2a0NtZFRyYWNlUmF5c05WIik7CistCXZrQ21kV3JpdGVBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WID0gKFBGTl92a0NtZFdyaXRlQWNjZWxlcmF0aW9u
U3RydWN0dXJlc1Byb3BlcnRpZXNOVilsb2FkKGNvbnRleHQsICJ2a0NtZFdyaXRlQWNjZWxlcmF0
aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOViIpOworLQl2a0NvbXBpbGVEZWZlcnJlZE5WID0gKFBG
Tl92a0NvbXBpbGVEZWZlcnJlZE5WKWxvYWQoY29udGV4dCwgInZrQ29tcGlsZURlZmVycmVkTlYi
KTsKKy0JdmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDcmVhdGVBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVOVilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUFjY2VsZXJhdGlvblN0
cnVjdHVyZU5WIik7CistCXZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5lc05WID0gKFBGTl92a0Ny
ZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOVilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVJheVRyYWNp
bmdQaXBlbGluZXNOViIpOworLQl2a0Rlc3Ryb3lBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQ
Rk5fdmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtEZXN0
cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsKKy0JdmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1
cmVIYW5kbGVOViA9IChQRk5fdmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOVilsb2Fk
KGNvbnRleHQsICJ2a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZUhhbmRsZU5WIik7CistCXZrR2V0
QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWlyZW1lbnRzTlYgPSAoUEZOX3ZrR2V0QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWlyZW1lbnRzTlYpbG9hZChjb250ZXh0LCAidmtH
ZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOViIpOworLQl2a0dldFJh
eVRyYWNpbmdTaGFkZXJHcm91cEhhbmRsZXNOViA9IChQRk5fdmtHZXRSYXlUcmFjaW5nU2hhZGVy
R3JvdXBIYW5kbGVzTlYpbG9hZChjb250ZXh0LCAidmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBI
YW5kbGVzTlYiKTsKKysgICAgdmtCaW5kQWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5TlYgPSAo
UEZOX3ZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WKWxvYWQoY29udGV4dCwgInZr
QmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WIik7CisrICAgIHZrQ21kQnVpbGRBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVy
ZU5WKWxvYWQoY29udGV4dCwgInZrQ21kQnVpbGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOwor
KyAgICB2a0NtZENvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDbWRDb3B5QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QWNjZWxlcmF0aW9u
U3RydWN0dXJlTlYiKTsKKysgICAgdmtDbWRUcmFjZVJheXNOViA9IChQRk5fdmtDbWRUcmFjZVJh
eXNOVilsb2FkKGNvbnRleHQsICJ2a0NtZFRyYWNlUmF5c05WIik7CisrICAgIHZrQ21kV3JpdGVB
Y2NlbGVyYXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WID0gKFBGTl92a0NtZFdyaXRlQWNjZWxl
cmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOVilsb2FkKGNvbnRleHQsICJ2a0NtZFdyaXRlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOViIpOworKyAgICB2a0NvbXBpbGVEZWZlcnJl
ZE5WID0gKFBGTl92a0NvbXBpbGVEZWZlcnJlZE5WKWxvYWQoY29udGV4dCwgInZrQ29tcGlsZURl
ZmVycmVkTlYiKTsKKysgICAgdmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5f
dmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOVilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CisrICAgIHZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5l
c05WID0gKFBGTl92a0NyZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOVilsb2FkKGNvbnRleHQsICJ2
a0NyZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOViIpOworKyAgICB2a0Rlc3Ryb3lBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVOViA9IChQRk5fdmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9h
ZChjb250ZXh0LCAidmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsKKysgICAgdmtH
ZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOViA9IChQRk5fdmtHZXRBY2NlbGVyYXRpb25T
dHJ1Y3R1cmVIYW5kbGVOVilsb2FkKGNvbnRleHQsICJ2a0dldEFjY2VsZXJhdGlvblN0cnVjdHVy
ZUhhbmRsZU5WIik7CisrICAgIHZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWly
ZW1lbnRzTlYgPSAoUEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVxdWlyZW1l
bnRzTlYpbG9hZChjb250ZXh0LCAidmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1
aXJlbWVudHNOViIpOworKyAgICB2a0dldFJheVRyYWNpbmdTaGFkZXJHcm91cEhhbmRsZXNOViA9
IChQRk5fdmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYpbG9hZChjb250ZXh0LCAi
dmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYiKTsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19OVl9yYXlfdHJhY2luZykgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9zY2lzc29yX2V4Y2x1
c2l2ZSkKKy0JdmtDbWRTZXRFeGNsdXNpdmVTY2lzc29yTlYgPSAoUEZOX3ZrQ21kU2V0RXhjbHVz
aXZlU2Npc3Nvck5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5WIik7
CisrICAgIHZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5WID0gKFBGTl92a0NtZFNldEV4Y2x1c2l2
ZVNjaXNzb3JOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOViIpOwor
ICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX3NjaXNzb3JfZXhjbHVzaXZlKSAqLworICNpZiBkZWZp
bmVkKFZLX05WX3NoYWRpbmdfcmF0ZV9pbWFnZSkKKy0JdmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFn
ZU5WID0gKFBGTl92a0NtZEJpbmRTaGFkaW5nUmF0ZUltYWdlTlYpbG9hZChjb250ZXh0LCAidmtD
bWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5WIik7CistCXZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJO
ViA9IChQRk5fdmtDbWRTZXRDb2Fyc2VTYW1wbGVPcmRlck5WKWxvYWQoY29udGV4dCwgInZrQ21k
U2V0Q29hcnNlU2FtcGxlT3JkZXJOViIpOworLQl2a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQ
YWxldHRlTlYgPSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOVilsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYiKTsKKysgICAg
dmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5WID0gKFBGTl92a0NtZEJpbmRTaGFkaW5nUmF0ZUlt
YWdlTlYpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5WIik7CisrICAg
IHZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOViA9IChQRk5fdmtDbWRTZXRDb2Fyc2VTYW1wbGVP
cmRlck5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOViIpOworKyAg
ICB2a0NtZFNldFZpZXdwb3J0U2hhZGluZ1JhdGVQYWxldHRlTlYgPSAoUEZOX3ZrQ21kU2V0Vmll
d3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNldFZpZXdwb3J0
U2hhZGluZ1JhdGVQYWxldHRlTlYiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9zaGFkaW5n
X3JhdGVfaW1hZ2UpICovCisgI2lmIChkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNp
dmUpICYmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkpIHx8IChkZWZpbmVkKFZLX0VYVF9m
dWxsX3NjcmVlbl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKQorLQl2a0dl
dERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQgPSAoUEZOX3ZrR2V0RGV2aWNlR3Jv
dXBTdXJmYWNlUHJlc2VudE1vZGVzMkVYVClsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3Vw
U3VyZmFjZVByZXNlbnRNb2RlczJFWFQiKTsKKysgICAgdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQ
cmVzZW50TW9kZXMyRVhUID0gKFBGTl92a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rl
czJFWFQpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMy
RVhUIik7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUp
ICYmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkpIHx8IChkZWZpbmVkKFZLX0VYVF9mdWxs
X3NjcmVlbl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLworICNpZiAo
ZGVmaW5lZChWS19LSFJfZGVzY3JpcHRvcl91cGRhdGVfdGVtcGxhdGUpICYmIGRlZmluZWQoVktf
S0hSX3B1c2hfZGVzY3JpcHRvcikpIHx8IChkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3Ip
ICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKQorLQl2a0NtZFB1c2hEZXNjcmlwdG9yU2V0V2l0
aFRlbXBsYXRlS0hSID0gKFBGTl92a0NtZFB1c2hEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hS
KWxvYWQoY29udGV4dCwgInZrQ21kUHVzaERlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIiKTsK
KysgICAgdmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiA9IChQRk5fdmtDbWRQ
dXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUilsb2FkKGNvbnRleHQsICJ2a0NtZFB1c2hE
ZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSIik7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0tI
Ul9kZXNjcmlwdG9yX3VwZGF0ZV90ZW1wbGF0ZSkgJiYgZGVmaW5lZChWS19LSFJfcHVzaF9kZXNj
cmlwdG9yKSkgfHwgKGRlZmluZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRvcikgJiYgZGVmaW5lZChW
S19WRVJTSU9OXzFfMSkpICovCisgI2lmIChkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICYm
IGRlZmluZWQoVktfS0hSX3N1cmZhY2UpKSB8fCAoZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSAm
JiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBh
YmlsaXRpZXNLSFIgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hS
KWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSIik7
CistCXZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSID0gKFBGTl92a0dldERl
dmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmlj
ZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiIpOworKyAgICB2a0dldERldmljZUdyb3VwUHJl
c2VudENhcGFiaWxpdGllc0tIUiA9IChQRk5fdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmls
aXRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRp
ZXNLSFIiKTsKKysgICAgdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXNLSFIgPSAo
UEZOX3ZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSKWxvYWQoY29udGV4dCwg
InZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSIik7CisgI2VuZGlmIC8qIChk
ZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICYmIGRlZmluZWQoVktfS0hSX3N1cmZhY2UpKSB8
fCAoZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkg
Ki8KKyAjaWYgKGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJf
c3dhcGNoYWluKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19W
RVJTSU9OXzFfMSkpCistCXZrQWNxdWlyZU5leHRJbWFnZTJLSFIgPSAoUEZOX3ZrQWNxdWlyZU5l
eHRJbWFnZTJLSFIpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlTmV4dEltYWdlMktIUiIpOworKyAg
ICB2a0FjcXVpcmVOZXh0SW1hZ2UyS0hSID0gKFBGTl92a0FjcXVpcmVOZXh0SW1hZ2UyS0hSKWxv
YWQoY29udGV4dCwgInZrQWNxdWlyZU5leHRJbWFnZTJLSFIiKTsKKyAjZW5kaWYgLyogKGRlZmlu
ZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSkgfHwg
KGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpICov
CistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9ERVZJQ0UgKi8KKysgICAgLyogVk9MS19HRU5FUkFU
RV9MT0FEX0RFVklDRSAqLworIH0KKyAKKyBzdGF0aWMgdm9pZCB2b2xrR2VuTG9hZERldmljZVRh
YmxlKHN0cnVjdCBWb2xrRGV2aWNlVGFibGUqIHRhYmxlLCB2b2lkKiBjb250ZXh0LCBQRk5fdmtW
b2lkRnVuY3Rpb24gKCpsb2FkKSh2b2lkKiwgY29uc3QgY2hhciopKQorIHsKKy0JLyogVk9MS19H
RU5FUkFURV9MT0FEX0RFVklDRV9UQUJMRSAqLworKyAgICAvKiBWT0xLX0dFTkVSQVRFX0xPQURf
REVWSUNFX1RBQkxFICovCisgI2lmIGRlZmluZWQoVktfVkVSU0lPTl8xXzApCistCXRhYmxlLT52
a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMgPSAoUEZOX3ZrQWxsb2NhdGVDb21tYW5kQnVmZmVycyls
b2FkKGNvbnRleHQsICJ2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMiKTsKKy0JdGFibGUtPnZrQWxs
b2NhdGVEZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzKWxvYWQo
Y29udGV4dCwgInZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cyIpOworLQl0YWJsZS0+dmtBbGxvY2F0
ZU1lbW9yeSA9IChQRk5fdmtBbGxvY2F0ZU1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a0FsbG9jYXRl
TWVtb3J5Iik7CistCXRhYmxlLT52a0JlZ2luQ29tbWFuZEJ1ZmZlciA9IChQRk5fdmtCZWdpbkNv
bW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtCZWdpbkNvbW1hbmRCdWZmZXIiKTsKKy0JdGFi
bGUtPnZrQmluZEJ1ZmZlck1lbW9yeSA9IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5KWxvYWQoY29u
dGV4dCwgInZrQmluZEJ1ZmZlck1lbW9yeSIpOworLQl0YWJsZS0+dmtCaW5kSW1hZ2VNZW1vcnkg
PSAoUEZOX3ZrQmluZEltYWdlTWVtb3J5KWxvYWQoY29udGV4dCwgInZrQmluZEltYWdlTWVtb3J5
Iik7CistCXRhYmxlLT52a0NtZEJlZ2luUXVlcnkgPSAoUEZOX3ZrQ21kQmVnaW5RdWVyeSlsb2Fk
KGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnkiKTsKKy0JdGFibGUtPnZrQ21kQmVnaW5SZW5kZXJQ
YXNzID0gKFBGTl92a0NtZEJlZ2luUmVuZGVyUGFzcylsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2lu
UmVuZGVyUGFzcyIpOworLQl0YWJsZS0+dmtDbWRCaW5kRGVzY3JpcHRvclNldHMgPSAoUEZOX3Zr
Q21kQmluZERlc2NyaXB0b3JTZXRzKWxvYWQoY29udGV4dCwgInZrQ21kQmluZERlc2NyaXB0b3JT
ZXRzIik7CistCXRhYmxlLT52a0NtZEJpbmRJbmRleEJ1ZmZlciA9IChQRk5fdmtDbWRCaW5kSW5k
ZXhCdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRCaW5kSW5kZXhCdWZmZXIiKTsKKy0JdGFibGUt
PnZrQ21kQmluZFBpcGVsaW5lID0gKFBGTl92a0NtZEJpbmRQaXBlbGluZSlsb2FkKGNvbnRleHQs
ICJ2a0NtZEJpbmRQaXBlbGluZSIpOworLQl0YWJsZS0+dmtDbWRCaW5kVmVydGV4QnVmZmVycyA9
IChQRk5fdmtDbWRCaW5kVmVydGV4QnVmZmVycylsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRWZXJ0
ZXhCdWZmZXJzIik7CistCXRhYmxlLT52a0NtZEJsaXRJbWFnZSA9IChQRk5fdmtDbWRCbGl0SW1h
Z2UpbG9hZChjb250ZXh0LCAidmtDbWRCbGl0SW1hZ2UiKTsKKy0JdGFibGUtPnZrQ21kQ2xlYXJB
dHRhY2htZW50cyA9IChQRk5fdmtDbWRDbGVhckF0dGFjaG1lbnRzKWxvYWQoY29udGV4dCwgInZr
Q21kQ2xlYXJBdHRhY2htZW50cyIpOworLQl0YWJsZS0+dmtDbWRDbGVhckNvbG9ySW1hZ2UgPSAo
UEZOX3ZrQ21kQ2xlYXJDb2xvckltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQ2xlYXJDb2xvcklt
YWdlIik7CistCXRhYmxlLT52a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UgPSAoUEZOX3ZrQ21k
Q2xlYXJEZXB0aFN0ZW5jaWxJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NtZENsZWFyRGVwdGhTdGVu
Y2lsSW1hZ2UiKTsKKy0JdGFibGUtPnZrQ21kQ29weUJ1ZmZlciA9IChQRk5fdmtDbWRDb3B5QnVm
ZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUJ1ZmZlciIpOworLQl0YWJsZS0+dmtDbWRDb3B5
QnVmZmVyVG9JbWFnZSA9IChQRk5fdmtDbWRDb3B5QnVmZmVyVG9JbWFnZSlsb2FkKGNvbnRleHQs
ICJ2a0NtZENvcHlCdWZmZXJUb0ltYWdlIik7CistCXRhYmxlLT52a0NtZENvcHlJbWFnZSA9IChQ
Rk5fdmtDbWRDb3B5SW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5SW1hZ2UiKTsKKy0JdGFi
bGUtPnZrQ21kQ29weUltYWdlVG9CdWZmZXIgPSAoUEZOX3ZrQ21kQ29weUltYWdlVG9CdWZmZXIp
bG9hZChjb250ZXh0LCAidmtDbWRDb3B5SW1hZ2VUb0J1ZmZlciIpOworLQl0YWJsZS0+dmtDbWRD
b3B5UXVlcnlQb29sUmVzdWx0cyA9IChQRk5fdmtDbWRDb3B5UXVlcnlQb29sUmVzdWx0cylsb2Fk
KGNvbnRleHQsICJ2a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzIik7CistCXRhYmxlLT52a0NtZERp
c3BhdGNoID0gKFBGTl92a0NtZERpc3BhdGNoKWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2gi
KTsKKy0JdGFibGUtPnZrQ21kRGlzcGF0Y2hJbmRpcmVjdCA9IChQRk5fdmtDbWREaXNwYXRjaElu
ZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hJbmRpcmVjdCIpOworLQl0YWJsZS0+
dmtDbWREcmF3ID0gKFBGTl92a0NtZERyYXcpbG9hZChjb250ZXh0LCAidmtDbWREcmF3Iik7Cist
CXRhYmxlLT52a0NtZERyYXdJbmRleGVkID0gKFBGTl92a0NtZERyYXdJbmRleGVkKWxvYWQoY29u
dGV4dCwgInZrQ21kRHJhd0luZGV4ZWQiKTsKKy0JdGFibGUtPnZrQ21kRHJhd0luZGV4ZWRJbmRp
cmVjdCA9IChQRk5fdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21k
RHJhd0luZGV4ZWRJbmRpcmVjdCIpOworLQl0YWJsZS0+dmtDbWREcmF3SW5kaXJlY3QgPSAoUEZO
X3ZrQ21kRHJhd0luZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Iik7Cist
CXRhYmxlLT52a0NtZEVuZFF1ZXJ5ID0gKFBGTl92a0NtZEVuZFF1ZXJ5KWxvYWQoY29udGV4dCwg
InZrQ21kRW5kUXVlcnkiKTsKKy0JdGFibGUtPnZrQ21kRW5kUmVuZGVyUGFzcyA9IChQRk5fdmtD
bWRFbmRSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrQ21kRW5kUmVuZGVyUGFzcyIpOworLQl0
YWJsZS0+dmtDbWRFeGVjdXRlQ29tbWFuZHMgPSAoUEZOX3ZrQ21kRXhlY3V0ZUNvbW1hbmRzKWxv
YWQoY29udGV4dCwgInZrQ21kRXhlY3V0ZUNvbW1hbmRzIik7CistCXRhYmxlLT52a0NtZEZpbGxC
dWZmZXIgPSAoUEZOX3ZrQ21kRmlsbEJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZEZpbGxCdWZm
ZXIiKTsKKy0JdGFibGUtPnZrQ21kTmV4dFN1YnBhc3MgPSAoUEZOX3ZrQ21kTmV4dFN1YnBhc3Mp
bG9hZChjb250ZXh0LCAidmtDbWROZXh0U3VicGFzcyIpOworLQl0YWJsZS0+dmtDbWRQaXBlbGlu
ZUJhcnJpZXIgPSAoUEZOX3ZrQ21kUGlwZWxpbmVCYXJyaWVyKWxvYWQoY29udGV4dCwgInZrQ21k
UGlwZWxpbmVCYXJyaWVyIik7CistCXRhYmxlLT52a0NtZFB1c2hDb25zdGFudHMgPSAoUEZOX3Zr
Q21kUHVzaENvbnN0YW50cylsb2FkKGNvbnRleHQsICJ2a0NtZFB1c2hDb25zdGFudHMiKTsKKy0J
dGFibGUtPnZrQ21kUmVzZXRFdmVudCA9IChQRk5fdmtDbWRSZXNldEV2ZW50KWxvYWQoY29udGV4
dCwgInZrQ21kUmVzZXRFdmVudCIpOworLQl0YWJsZS0+dmtDbWRSZXNldFF1ZXJ5UG9vbCA9IChQ
Rk5fdmtDbWRSZXNldFF1ZXJ5UG9vbClsb2FkKGNvbnRleHQsICJ2a0NtZFJlc2V0UXVlcnlQb29s
Iik7CistCXRhYmxlLT52a0NtZFJlc29sdmVJbWFnZSA9IChQRk5fdmtDbWRSZXNvbHZlSW1hZ2Up
bG9hZChjb250ZXh0LCAidmtDbWRSZXNvbHZlSW1hZ2UiKTsKKy0JdGFibGUtPnZrQ21kU2V0Qmxl
bmRDb25zdGFudHMgPSAoUEZOX3ZrQ21kU2V0QmxlbmRDb25zdGFudHMpbG9hZChjb250ZXh0LCAi
dmtDbWRTZXRCbGVuZENvbnN0YW50cyIpOworLQl0YWJsZS0+dmtDbWRTZXREZXB0aEJpYXMgPSAo
UEZOX3ZrQ21kU2V0RGVwdGhCaWFzKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGVwdGhCaWFzIik7
CistCXRhYmxlLT52a0NtZFNldERlcHRoQm91bmRzID0gKFBGTl92a0NtZFNldERlcHRoQm91bmRz
KWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGVwdGhCb3VuZHMiKTsKKy0JdGFibGUtPnZrQ21kU2V0
RXZlbnQgPSAoUEZOX3ZrQ21kU2V0RXZlbnQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRFdmVudCIp
OworLQl0YWJsZS0+dmtDbWRTZXRMaW5lV2lkdGggPSAoUEZOX3ZrQ21kU2V0TGluZVdpZHRoKWxv
YWQoY29udGV4dCwgInZrQ21kU2V0TGluZVdpZHRoIik7CistCXRhYmxlLT52a0NtZFNldFNjaXNz
b3IgPSAoUEZOX3ZrQ21kU2V0U2Npc3Nvcilsb2FkKGNvbnRleHQsICJ2a0NtZFNldFNjaXNzb3Ii
KTsKKy0JdGFibGUtPnZrQ21kU2V0U3RlbmNpbENvbXBhcmVNYXNrID0gKFBGTl92a0NtZFNldFN0
ZW5jaWxDb21wYXJlTWFzaylsb2FkKGNvbnRleHQsICJ2a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFz
ayIpOworLQl0YWJsZS0+dmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlID0gKFBGTl92a0NtZFNldFN0
ZW5jaWxSZWZlcmVuY2UpbG9hZChjb250ZXh0LCAidmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlIik7
CistCXRhYmxlLT52a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2sgPSAoUEZOX3ZrQ21kU2V0U3RlbmNp
bFdyaXRlTWFzaylsb2FkKGNvbnRleHQsICJ2a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2siKTsKKy0J
dGFibGUtPnZrQ21kU2V0Vmlld3BvcnQgPSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnQpbG9hZChjb250
ZXh0LCAidmtDbWRTZXRWaWV3cG9ydCIpOworLQl0YWJsZS0+dmtDbWRVcGRhdGVCdWZmZXIgPSAo
UEZOX3ZrQ21kVXBkYXRlQnVmZmVyKWxvYWQoY29udGV4dCwgInZrQ21kVXBkYXRlQnVmZmVyIik7
CistCXRhYmxlLT52a0NtZFdhaXRFdmVudHMgPSAoUEZOX3ZrQ21kV2FpdEV2ZW50cylsb2FkKGNv
bnRleHQsICJ2a0NtZFdhaXRFdmVudHMiKTsKKy0JdGFibGUtPnZrQ21kV3JpdGVUaW1lc3RhbXAg
PSAoUEZOX3ZrQ21kV3JpdGVUaW1lc3RhbXApbG9hZChjb250ZXh0LCAidmtDbWRXcml0ZVRpbWVz
dGFtcCIpOworLQl0YWJsZS0+dmtDcmVhdGVCdWZmZXIgPSAoUEZOX3ZrQ3JlYXRlQnVmZmVyKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlQnVmZmVyIik7CistCXRhYmxlLT52a0NyZWF0ZUJ1ZmZlclZp
ZXcgPSAoUEZOX3ZrQ3JlYXRlQnVmZmVyVmlldylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUJ1ZmZl
clZpZXciKTsKKy0JdGFibGUtPnZrQ3JlYXRlQ29tbWFuZFBvb2wgPSAoUEZOX3ZrQ3JlYXRlQ29t
bWFuZFBvb2wpbG9hZChjb250ZXh0LCAidmtDcmVhdGVDb21tYW5kUG9vbCIpOworLQl0YWJsZS0+
dmtDcmVhdGVDb21wdXRlUGlwZWxpbmVzID0gKFBGTl92a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXMp
bG9hZChjb250ZXh0LCAidmtDcmVhdGVDb21wdXRlUGlwZWxpbmVzIik7CistCXRhYmxlLT52a0Ny
ZWF0ZURlc2NyaXB0b3JQb29sID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JQb29sKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclBvb2wiKTsKKy0JdGFibGUtPnZrQ3JlYXRlRGVzY3Jp
cHRvclNldExheW91dCA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dCIpOworLQl0YWJsZS0+dmtDcmVhdGVF
dmVudCA9IChQRk5fdmtDcmVhdGVFdmVudClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUV2ZW50Iik7
CistCXRhYmxlLT52a0NyZWF0ZUZlbmNlID0gKFBGTl92a0NyZWF0ZUZlbmNlKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlRmVuY2UiKTsKKy0JdGFibGUtPnZrQ3JlYXRlRnJhbWVidWZmZXIgPSAoUEZO
X3ZrQ3JlYXRlRnJhbWVidWZmZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVGcmFtZWJ1ZmZlciIp
OworLQl0YWJsZS0+dmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcyA9IChQRk5fdmtDcmVhdGVHcmFw
aGljc1BpcGVsaW5lcylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzIik7
CistCXRhYmxlLT52a0NyZWF0ZUltYWdlID0gKFBGTl92a0NyZWF0ZUltYWdlKWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlSW1hZ2UiKTsKKy0JdGFibGUtPnZrQ3JlYXRlSW1hZ2VWaWV3ID0gKFBGTl92
a0NyZWF0ZUltYWdlVmlldylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUltYWdlVmlldyIpOworLQl0
YWJsZS0+dmtDcmVhdGVQaXBlbGluZUNhY2hlID0gKFBGTl92a0NyZWF0ZVBpcGVsaW5lQ2FjaGUp
bG9hZChjb250ZXh0LCAidmtDcmVhdGVQaXBlbGluZUNhY2hlIik7CistCXRhYmxlLT52a0NyZWF0
ZVBpcGVsaW5lTGF5b3V0ID0gKFBGTl92a0NyZWF0ZVBpcGVsaW5lTGF5b3V0KWxvYWQoY29udGV4
dCwgInZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQiKTsKKy0JdGFibGUtPnZrQ3JlYXRlUXVlcnlQb29s
ID0gKFBGTl92a0NyZWF0ZVF1ZXJ5UG9vbClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVF1ZXJ5UG9v
bCIpOworLQl0YWJsZS0+dmtDcmVhdGVSZW5kZXJQYXNzID0gKFBGTl92a0NyZWF0ZVJlbmRlclBh
c3MpbG9hZChjb250ZXh0LCAidmtDcmVhdGVSZW5kZXJQYXNzIik7CistCXRhYmxlLT52a0NyZWF0
ZVNhbXBsZXIgPSAoUEZOX3ZrQ3JlYXRlU2FtcGxlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNh
bXBsZXIiKTsKKy0JdGFibGUtPnZrQ3JlYXRlU2VtYXBob3JlID0gKFBGTl92a0NyZWF0ZVNlbWFw
aG9yZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNlbWFwaG9yZSIpOworLQl0YWJsZS0+dmtDcmVh
dGVTaGFkZXJNb2R1bGUgPSAoUEZOX3ZrQ3JlYXRlU2hhZGVyTW9kdWxlKWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlU2hhZGVyTW9kdWxlIik7CistCXRhYmxlLT52a0Rlc3Ryb3lCdWZmZXIgPSAoUEZO
X3ZrRGVzdHJveUJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lCdWZmZXIiKTsKKy0JdGFi
bGUtPnZrRGVzdHJveUJ1ZmZlclZpZXcgPSAoUEZOX3ZrRGVzdHJveUJ1ZmZlclZpZXcpbG9hZChj
b250ZXh0LCAidmtEZXN0cm95QnVmZmVyVmlldyIpOworLQl0YWJsZS0+dmtEZXN0cm95Q29tbWFu
ZFBvb2wgPSAoUEZOX3ZrRGVzdHJveUNvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eUNvbW1hbmRQb29sIik7CistCXRhYmxlLT52a0Rlc3Ryb3lEZXNjcmlwdG9yUG9vbCA9IChQRk5f
dmtEZXN0cm95RGVzY3JpcHRvclBvb2wpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3JpcHRv
clBvb2wiKTsKKy0JdGFibGUtPnZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQgPSAoUEZOX3Zr
RGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3Jp
cHRvclNldExheW91dCIpOworLQl0YWJsZS0+dmtEZXN0cm95RGV2aWNlID0gKFBGTl92a0Rlc3Ry
b3lEZXZpY2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGV2aWNlIik7CistCXRhYmxlLT52a0Rl
c3Ryb3lFdmVudCA9IChQRk5fdmtEZXN0cm95RXZlbnQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95
RXZlbnQiKTsKKy0JdGFibGUtPnZrRGVzdHJveUZlbmNlID0gKFBGTl92a0Rlc3Ryb3lGZW5jZSls
b2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lGZW5jZSIpOworLQl0YWJsZS0+dmtEZXN0cm95RnJhbWVi
dWZmZXIgPSAoUEZOX3ZrRGVzdHJveUZyYW1lYnVmZmVyKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eUZyYW1lYnVmZmVyIik7CistCXRhYmxlLT52a0Rlc3Ryb3lJbWFnZSA9IChQRk5fdmtEZXN0cm95
SW1hZ2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95SW1hZ2UiKTsKKy0JdGFibGUtPnZrRGVzdHJv
eUltYWdlVmlldyA9IChQRk5fdmtEZXN0cm95SW1hZ2VWaWV3KWxvYWQoY29udGV4dCwgInZrRGVz
dHJveUltYWdlVmlldyIpOworLQl0YWJsZS0+dmtEZXN0cm95UGlwZWxpbmUgPSAoUEZOX3ZrRGVz
dHJveVBpcGVsaW5lKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5lIik7CistCXRhYmxl
LT52a0Rlc3Ryb3lQaXBlbGluZUNhY2hlID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZUNhY2hlKWxv
YWQoY29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5lQ2FjaGUiKTsKKy0JdGFibGUtPnZrRGVzdHJv
eVBpcGVsaW5lTGF5b3V0ID0gKFBGTl92a0Rlc3Ryb3lQaXBlbGluZUxheW91dClsb2FkKGNvbnRl
eHQsICJ2a0Rlc3Ryb3lQaXBlbGluZUxheW91dCIpOworLQl0YWJsZS0+dmtEZXN0cm95UXVlcnlQ
b29sID0gKFBGTl92a0Rlc3Ryb3lRdWVyeVBvb2wpbG9hZChjb250ZXh0LCAidmtEZXN0cm95UXVl
cnlQb29sIik7CistCXRhYmxlLT52a0Rlc3Ryb3lSZW5kZXJQYXNzID0gKFBGTl92a0Rlc3Ryb3lS
ZW5kZXJQYXNzKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVJlbmRlclBhc3MiKTsKKy0JdGFibGUt
PnZrRGVzdHJveVNhbXBsZXIgPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXIpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95U2FtcGxlciIpOworLQl0YWJsZS0+dmtEZXN0cm95U2VtYXBob3JlID0gKFBGTl92
a0Rlc3Ryb3lTZW1hcGhvcmUpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2VtYXBob3JlIik7Cist
CXRhYmxlLT52a0Rlc3Ryb3lTaGFkZXJNb2R1bGUgPSAoUEZOX3ZrRGVzdHJveVNoYWRlck1vZHVs
ZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lTaGFkZXJNb2R1bGUiKTsKKy0JdGFibGUtPnZrRGV2
aWNlV2FpdElkbGUgPSAoUEZOX3ZrRGV2aWNlV2FpdElkbGUpbG9hZChjb250ZXh0LCAidmtEZXZp
Y2VXYWl0SWRsZSIpOworLQl0YWJsZS0+dmtFbmRDb21tYW5kQnVmZmVyID0gKFBGTl92a0VuZENv
bW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtFbmRDb21tYW5kQnVmZmVyIik7CistCXRhYmxl
LT52a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92a0ZsdXNoTWFwcGVkTWVtb3J5UmFu
Z2VzKWxvYWQoY29udGV4dCwgInZrRmx1c2hNYXBwZWRNZW1vcnlSYW5nZXMiKTsKKy0JdGFibGUt
PnZrRnJlZUNvbW1hbmRCdWZmZXJzID0gKFBGTl92a0ZyZWVDb21tYW5kQnVmZmVycylsb2FkKGNv
bnRleHQsICJ2a0ZyZWVDb21tYW5kQnVmZmVycyIpOworLQl0YWJsZS0+dmtGcmVlRGVzY3JpcHRv
clNldHMgPSAoUEZOX3ZrRnJlZURlc2NyaXB0b3JTZXRzKWxvYWQoY29udGV4dCwgInZrRnJlZURl
c2NyaXB0b3JTZXRzIik7CistCXRhYmxlLT52a0ZyZWVNZW1vcnkgPSAoUEZOX3ZrRnJlZU1lbW9y
eSlsb2FkKGNvbnRleHQsICJ2a0ZyZWVNZW1vcnkiKTsKKy0JdGFibGUtPnZrR2V0QnVmZmVyTWVt
b3J5UmVxdWlyZW1lbnRzID0gKFBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cylsb2Fk
KGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyIpOworLQl0YWJsZS0+dmtH
ZXREZXZpY2VNZW1vcnlDb21taXRtZW50ID0gKFBGTl92a0dldERldmljZU1lbW9yeUNvbW1pdG1l
bnQpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50Iik7CistCXRhYmxl
LT52a0dldERldmljZVF1ZXVlID0gKFBGTl92a0dldERldmljZVF1ZXVlKWxvYWQoY29udGV4dCwg
InZrR2V0RGV2aWNlUXVldWUiKTsKKy0JdGFibGUtPnZrR2V0RXZlbnRTdGF0dXMgPSAoUEZOX3Zr
R2V0RXZlbnRTdGF0dXMpbG9hZChjb250ZXh0LCAidmtHZXRFdmVudFN0YXR1cyIpOworLQl0YWJs
ZS0+dmtHZXRGZW5jZVN0YXR1cyA9IChQRk5fdmtHZXRGZW5jZVN0YXR1cylsb2FkKGNvbnRleHQs
ICJ2a0dldEZlbmNlU3RhdHVzIik7CistCXRhYmxlLT52a0dldEltYWdlTWVtb3J5UmVxdWlyZW1l
bnRzID0gKFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzKWxvYWQoY29udGV4dCwgInZr
R2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMiKTsKKy0JdGFibGUtPnZrR2V0SW1hZ2VTcGFyc2VN
ZW1vcnlSZXF1aXJlbWVudHMgPSAoUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVu
dHMpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50cyIpOwor
LQl0YWJsZS0+dmtHZXRJbWFnZVN1YnJlc291cmNlTGF5b3V0ID0gKFBGTl92a0dldEltYWdlU3Vi
cmVzb3VyY2VMYXlvdXQpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVN1YnJlc291cmNlTGF5b3V0
Iik7CistCXRhYmxlLT52a0dldFBpcGVsaW5lQ2FjaGVEYXRhID0gKFBGTl92a0dldFBpcGVsaW5l
Q2FjaGVEYXRhKWxvYWQoY29udGV4dCwgInZrR2V0UGlwZWxpbmVDYWNoZURhdGEiKTsKKy0JdGFi
bGUtPnZrR2V0UXVlcnlQb29sUmVzdWx0cyA9IChQRk5fdmtHZXRRdWVyeVBvb2xSZXN1bHRzKWxv
YWQoY29udGV4dCwgInZrR2V0UXVlcnlQb29sUmVzdWx0cyIpOworLQl0YWJsZS0+dmtHZXRSZW5k
ZXJBcmVhR3JhbnVsYXJpdHkgPSAoUEZOX3ZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5KWxvYWQo
Y29udGV4dCwgInZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5Iik7CistCXRhYmxlLT52a0ludmFs
aWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMgPSAoUEZOX3ZrSW52YWxpZGF0ZU1hcHBlZE1lbW9yeVJh
bmdlcylsb2FkKGNvbnRleHQsICJ2a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMiKTsKKy0J
dGFibGUtPnZrTWFwTWVtb3J5ID0gKFBGTl92a01hcE1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a01h
cE1lbW9yeSIpOworLQl0YWJsZS0+dmtNZXJnZVBpcGVsaW5lQ2FjaGVzID0gKFBGTl92a01lcmdl
UGlwZWxpbmVDYWNoZXMpbG9hZChjb250ZXh0LCAidmtNZXJnZVBpcGVsaW5lQ2FjaGVzIik7Cist
CXRhYmxlLT52a1F1ZXVlQmluZFNwYXJzZSA9IChQRk5fdmtRdWV1ZUJpbmRTcGFyc2UpbG9hZChj
b250ZXh0LCAidmtRdWV1ZUJpbmRTcGFyc2UiKTsKKy0JdGFibGUtPnZrUXVldWVTdWJtaXQgPSAo
UEZOX3ZrUXVldWVTdWJtaXQpbG9hZChjb250ZXh0LCAidmtRdWV1ZVN1Ym1pdCIpOworLQl0YWJs
ZS0+dmtRdWV1ZVdhaXRJZGxlID0gKFBGTl92a1F1ZXVlV2FpdElkbGUpbG9hZChjb250ZXh0LCAi
dmtRdWV1ZVdhaXRJZGxlIik7CistCXRhYmxlLT52a1Jlc2V0Q29tbWFuZEJ1ZmZlciA9IChQRk5f
dmtSZXNldENvbW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtSZXNldENvbW1hbmRCdWZmZXIi
KTsKKy0JdGFibGUtPnZrUmVzZXRDb21tYW5kUG9vbCA9IChQRk5fdmtSZXNldENvbW1hbmRQb29s
KWxvYWQoY29udGV4dCwgInZrUmVzZXRDb21tYW5kUG9vbCIpOworLQl0YWJsZS0+dmtSZXNldERl
c2NyaXB0b3JQb29sID0gKFBGTl92a1Jlc2V0RGVzY3JpcHRvclBvb2wpbG9hZChjb250ZXh0LCAi
dmtSZXNldERlc2NyaXB0b3JQb29sIik7CistCXRhYmxlLT52a1Jlc2V0RXZlbnQgPSAoUEZOX3Zr
UmVzZXRFdmVudClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0RXZlbnQiKTsKKy0JdGFibGUtPnZrUmVz
ZXRGZW5jZXMgPSAoUEZOX3ZrUmVzZXRGZW5jZXMpbG9hZChjb250ZXh0LCAidmtSZXNldEZlbmNl
cyIpOworLQl0YWJsZS0+dmtTZXRFdmVudCA9IChQRk5fdmtTZXRFdmVudClsb2FkKGNvbnRleHQs
ICJ2a1NldEV2ZW50Iik7CistCXRhYmxlLT52a1VubWFwTWVtb3J5ID0gKFBGTl92a1VubWFwTWVt
b3J5KWxvYWQoY29udGV4dCwgInZrVW5tYXBNZW1vcnkiKTsKKy0JdGFibGUtPnZrVXBkYXRlRGVz
Y3JpcHRvclNldHMgPSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldHMpbG9hZChjb250ZXh0LCAi
dmtVcGRhdGVEZXNjcmlwdG9yU2V0cyIpOworLQl0YWJsZS0+dmtXYWl0Rm9yRmVuY2VzID0gKFBG
Tl92a1dhaXRGb3JGZW5jZXMpbG9hZChjb250ZXh0LCAidmtXYWl0Rm9yRmVuY2VzIik7CisrICAg
IHRhYmxlLT52a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMgPSAoUEZOX3ZrQWxsb2NhdGVDb21tYW5k
QnVmZmVycylsb2FkKGNvbnRleHQsICJ2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMiKTsKKysgICAg
dGFibGUtPnZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cyA9IChQRk5fdmtBbGxvY2F0ZURlc2NyaXB0
b3JTZXRzKWxvYWQoY29udGV4dCwgInZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cyIpOworKyAgICB0
YWJsZS0+dmtBbGxvY2F0ZU1lbW9yeSA9IChQRk5fdmtBbGxvY2F0ZU1lbW9yeSlsb2FkKGNvbnRl
eHQsICJ2a0FsbG9jYXRlTWVtb3J5Iik7CisrICAgIHRhYmxlLT52a0JlZ2luQ29tbWFuZEJ1ZmZl
ciA9IChQRk5fdmtCZWdpbkNvbW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtCZWdpbkNvbW1h
bmRCdWZmZXIiKTsKKysgICAgdGFibGUtPnZrQmluZEJ1ZmZlck1lbW9yeSA9IChQRk5fdmtCaW5k
QnVmZmVyTWVtb3J5KWxvYWQoY29udGV4dCwgInZrQmluZEJ1ZmZlck1lbW9yeSIpOworKyAgICB0
YWJsZS0+dmtCaW5kSW1hZ2VNZW1vcnkgPSAoUEZOX3ZrQmluZEltYWdlTWVtb3J5KWxvYWQoY29u
dGV4dCwgInZrQmluZEltYWdlTWVtb3J5Iik7CisrICAgIHRhYmxlLT52a0NtZEJlZ2luUXVlcnkg
PSAoUEZOX3ZrQ21kQmVnaW5RdWVyeSlsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnkiKTsK
KysgICAgdGFibGUtPnZrQ21kQmVnaW5SZW5kZXJQYXNzID0gKFBGTl92a0NtZEJlZ2luUmVuZGVy
UGFzcylsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUmVuZGVyUGFzcyIpOworKyAgICB0YWJsZS0+
dmtDbWRCaW5kRGVzY3JpcHRvclNldHMgPSAoUEZOX3ZrQ21kQmluZERlc2NyaXB0b3JTZXRzKWxv
YWQoY29udGV4dCwgInZrQ21kQmluZERlc2NyaXB0b3JTZXRzIik7CisrICAgIHRhYmxlLT52a0Nt
ZEJpbmRJbmRleEJ1ZmZlciA9IChQRk5fdmtDbWRCaW5kSW5kZXhCdWZmZXIpbG9hZChjb250ZXh0
LCAidmtDbWRCaW5kSW5kZXhCdWZmZXIiKTsKKysgICAgdGFibGUtPnZrQ21kQmluZFBpcGVsaW5l
ID0gKFBGTl92a0NtZEJpbmRQaXBlbGluZSlsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRQaXBlbGlu
ZSIpOworKyAgICB0YWJsZS0+dmtDbWRCaW5kVmVydGV4QnVmZmVycyA9IChQRk5fdmtDbWRCaW5k
VmVydGV4QnVmZmVycylsb2FkKGNvbnRleHQsICJ2a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzIik7Cisr
ICAgIHRhYmxlLT52a0NtZEJsaXRJbWFnZSA9IChQRk5fdmtDbWRCbGl0SW1hZ2UpbG9hZChjb250
ZXh0LCAidmtDbWRCbGl0SW1hZ2UiKTsKKysgICAgdGFibGUtPnZrQ21kQ2xlYXJBdHRhY2htZW50
cyA9IChQRk5fdmtDbWRDbGVhckF0dGFjaG1lbnRzKWxvYWQoY29udGV4dCwgInZrQ21kQ2xlYXJB
dHRhY2htZW50cyIpOworKyAgICB0YWJsZS0+dmtDbWRDbGVhckNvbG9ySW1hZ2UgPSAoUEZOX3Zr
Q21kQ2xlYXJDb2xvckltYWdlKWxvYWQoY29udGV4dCwgInZrQ21kQ2xlYXJDb2xvckltYWdlIik7
CisrICAgIHRhYmxlLT52a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2UgPSAoUEZOX3ZrQ21kQ2xl
YXJEZXB0aFN0ZW5jaWxJbWFnZSlsb2FkKGNvbnRleHQsICJ2a0NtZENsZWFyRGVwdGhTdGVuY2ls
SW1hZ2UiKTsKKysgICAgdGFibGUtPnZrQ21kQ29weUJ1ZmZlciA9IChQRk5fdmtDbWRDb3B5QnVm
ZmVyKWxvYWQoY29udGV4dCwgInZrQ21kQ29weUJ1ZmZlciIpOworKyAgICB0YWJsZS0+dmtDbWRD
b3B5QnVmZmVyVG9JbWFnZSA9IChQRk5fdmtDbWRDb3B5QnVmZmVyVG9JbWFnZSlsb2FkKGNvbnRl
eHQsICJ2a0NtZENvcHlCdWZmZXJUb0ltYWdlIik7CisrICAgIHRhYmxlLT52a0NtZENvcHlJbWFn
ZSA9IChQRk5fdmtDbWRDb3B5SW1hZ2UpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5SW1hZ2UiKTsK
KysgICAgdGFibGUtPnZrQ21kQ29weUltYWdlVG9CdWZmZXIgPSAoUEZOX3ZrQ21kQ29weUltYWdl
VG9CdWZmZXIpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5SW1hZ2VUb0J1ZmZlciIpOworKyAgICB0
YWJsZS0+dmtDbWRDb3B5UXVlcnlQb29sUmVzdWx0cyA9IChQRk5fdmtDbWRDb3B5UXVlcnlQb29s
UmVzdWx0cylsb2FkKGNvbnRleHQsICJ2a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzIik7CisrICAg
IHRhYmxlLT52a0NtZERpc3BhdGNoID0gKFBGTl92a0NtZERpc3BhdGNoKWxvYWQoY29udGV4dCwg
InZrQ21kRGlzcGF0Y2giKTsKKysgICAgdGFibGUtPnZrQ21kRGlzcGF0Y2hJbmRpcmVjdCA9IChQ
Rk5fdmtDbWREaXNwYXRjaEluZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRGlzcGF0Y2hJbmRp
cmVjdCIpOworKyAgICB0YWJsZS0+dmtDbWREcmF3ID0gKFBGTl92a0NtZERyYXcpbG9hZChjb250
ZXh0LCAidmtDbWREcmF3Iik7CisrICAgIHRhYmxlLT52a0NtZERyYXdJbmRleGVkID0gKFBGTl92
a0NtZERyYXdJbmRleGVkKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWQiKTsKKysgICAg
dGFibGUtPnZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdCA9IChQRk5fdmtDbWREcmF3SW5kZXhlZElu
ZGlyZWN0KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdCIpOworKyAgICB0
YWJsZS0+dmtDbWREcmF3SW5kaXJlY3QgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0KWxvYWQoY29u
dGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Iik7CisrICAgIHRhYmxlLT52a0NtZEVuZFF1ZXJ5ID0g
KFBGTl92a0NtZEVuZFF1ZXJ5KWxvYWQoY29udGV4dCwgInZrQ21kRW5kUXVlcnkiKTsKKysgICAg
dGFibGUtPnZrQ21kRW5kUmVuZGVyUGFzcyA9IChQRk5fdmtDbWRFbmRSZW5kZXJQYXNzKWxvYWQo
Y29udGV4dCwgInZrQ21kRW5kUmVuZGVyUGFzcyIpOworKyAgICB0YWJsZS0+dmtDbWRFeGVjdXRl
Q29tbWFuZHMgPSAoUEZOX3ZrQ21kRXhlY3V0ZUNvbW1hbmRzKWxvYWQoY29udGV4dCwgInZrQ21k
RXhlY3V0ZUNvbW1hbmRzIik7CisrICAgIHRhYmxlLT52a0NtZEZpbGxCdWZmZXIgPSAoUEZOX3Zr
Q21kRmlsbEJ1ZmZlcilsb2FkKGNvbnRleHQsICJ2a0NtZEZpbGxCdWZmZXIiKTsKKysgICAgdGFi
bGUtPnZrQ21kTmV4dFN1YnBhc3MgPSAoUEZOX3ZrQ21kTmV4dFN1YnBhc3MpbG9hZChjb250ZXh0
LCAidmtDbWROZXh0U3VicGFzcyIpOworKyAgICB0YWJsZS0+dmtDbWRQaXBlbGluZUJhcnJpZXIg
PSAoUEZOX3ZrQ21kUGlwZWxpbmVCYXJyaWVyKWxvYWQoY29udGV4dCwgInZrQ21kUGlwZWxpbmVC
YXJyaWVyIik7CisrICAgIHRhYmxlLT52a0NtZFB1c2hDb25zdGFudHMgPSAoUEZOX3ZrQ21kUHVz
aENvbnN0YW50cylsb2FkKGNvbnRleHQsICJ2a0NtZFB1c2hDb25zdGFudHMiKTsKKysgICAgdGFi
bGUtPnZrQ21kUmVzZXRFdmVudCA9IChQRk5fdmtDbWRSZXNldEV2ZW50KWxvYWQoY29udGV4dCwg
InZrQ21kUmVzZXRFdmVudCIpOworKyAgICB0YWJsZS0+dmtDbWRSZXNldFF1ZXJ5UG9vbCA9IChQ
Rk5fdmtDbWRSZXNldFF1ZXJ5UG9vbClsb2FkKGNvbnRleHQsICJ2a0NtZFJlc2V0UXVlcnlQb29s
Iik7CisrICAgIHRhYmxlLT52a0NtZFJlc29sdmVJbWFnZSA9IChQRk5fdmtDbWRSZXNvbHZlSW1h
Z2UpbG9hZChjb250ZXh0LCAidmtDbWRSZXNvbHZlSW1hZ2UiKTsKKysgICAgdGFibGUtPnZrQ21k
U2V0QmxlbmRDb25zdGFudHMgPSAoUEZOX3ZrQ21kU2V0QmxlbmRDb25zdGFudHMpbG9hZChjb250
ZXh0LCAidmtDbWRTZXRCbGVuZENvbnN0YW50cyIpOworKyAgICB0YWJsZS0+dmtDbWRTZXREZXB0
aEJpYXMgPSAoUEZOX3ZrQ21kU2V0RGVwdGhCaWFzKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGVw
dGhCaWFzIik7CisrICAgIHRhYmxlLT52a0NtZFNldERlcHRoQm91bmRzID0gKFBGTl92a0NtZFNl
dERlcHRoQm91bmRzKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGVwdGhCb3VuZHMiKTsKKysgICAg
dGFibGUtPnZrQ21kU2V0RXZlbnQgPSAoUEZOX3ZrQ21kU2V0RXZlbnQpbG9hZChjb250ZXh0LCAi
dmtDbWRTZXRFdmVudCIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRMaW5lV2lkdGggPSAoUEZOX3Zr
Q21kU2V0TGluZVdpZHRoKWxvYWQoY29udGV4dCwgInZrQ21kU2V0TGluZVdpZHRoIik7CisrICAg
IHRhYmxlLT52a0NtZFNldFNjaXNzb3IgPSAoUEZOX3ZrQ21kU2V0U2Npc3Nvcilsb2FkKGNvbnRl
eHQsICJ2a0NtZFNldFNjaXNzb3IiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0U3RlbmNpbENvbXBh
cmVNYXNrID0gKFBGTl92a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzaylsb2FkKGNvbnRleHQsICJ2
a0NtZFNldFN0ZW5jaWxDb21wYXJlTWFzayIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRTdGVuY2ls
UmVmZXJlbmNlID0gKFBGTl92a0NtZFNldFN0ZW5jaWxSZWZlcmVuY2UpbG9hZChjb250ZXh0LCAi
dmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlIik7CisrICAgIHRhYmxlLT52a0NtZFNldFN0ZW5jaWxX
cml0ZU1hc2sgPSAoUEZOX3ZrQ21kU2V0U3RlbmNpbFdyaXRlTWFzaylsb2FkKGNvbnRleHQsICJ2
a0NtZFNldFN0ZW5jaWxXcml0ZU1hc2siKTsKKysgICAgdGFibGUtPnZrQ21kU2V0Vmlld3BvcnQg
PSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRWaWV3cG9ydCIp
OworKyAgICB0YWJsZS0+dmtDbWRVcGRhdGVCdWZmZXIgPSAoUEZOX3ZrQ21kVXBkYXRlQnVmZmVy
KWxvYWQoY29udGV4dCwgInZrQ21kVXBkYXRlQnVmZmVyIik7CisrICAgIHRhYmxlLT52a0NtZFdh
aXRFdmVudHMgPSAoUEZOX3ZrQ21kV2FpdEV2ZW50cylsb2FkKGNvbnRleHQsICJ2a0NtZFdhaXRF
dmVudHMiKTsKKysgICAgdGFibGUtPnZrQ21kV3JpdGVUaW1lc3RhbXAgPSAoUEZOX3ZrQ21kV3Jp
dGVUaW1lc3RhbXApbG9hZChjb250ZXh0LCAidmtDbWRXcml0ZVRpbWVzdGFtcCIpOworKyAgICB0
YWJsZS0+dmtDcmVhdGVCdWZmZXIgPSAoUEZOX3ZrQ3JlYXRlQnVmZmVyKWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlQnVmZmVyIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZUJ1ZmZlclZpZXcgPSAoUEZO
X3ZrQ3JlYXRlQnVmZmVyVmlldylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUJ1ZmZlclZpZXciKTsK
KysgICAgdGFibGUtPnZrQ3JlYXRlQ29tbWFuZFBvb2wgPSAoUEZOX3ZrQ3JlYXRlQ29tbWFuZFBv
b2wpbG9hZChjb250ZXh0LCAidmtDcmVhdGVDb21tYW5kUG9vbCIpOworKyAgICB0YWJsZS0+dmtD
cmVhdGVDb21wdXRlUGlwZWxpbmVzID0gKFBGTl92a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXMpbG9h
ZChjb250ZXh0LCAidmtDcmVhdGVDb21wdXRlUGlwZWxpbmVzIik7CisrICAgIHRhYmxlLT52a0Ny
ZWF0ZURlc2NyaXB0b3JQb29sID0gKFBGTl92a0NyZWF0ZURlc2NyaXB0b3JQb29sKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclBvb2wiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlRGVz
Y3JpcHRvclNldExheW91dCA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KWxvYWQo
Y29udGV4dCwgInZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dCIpOworKyAgICB0YWJsZS0+dmtD
cmVhdGVFdmVudCA9IChQRk5fdmtDcmVhdGVFdmVudClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUV2
ZW50Iik7CisrICAgIHRhYmxlLT52a0NyZWF0ZUZlbmNlID0gKFBGTl92a0NyZWF0ZUZlbmNlKWxv
YWQoY29udGV4dCwgInZrQ3JlYXRlRmVuY2UiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlRnJhbWVi
dWZmZXIgPSAoUEZOX3ZrQ3JlYXRlRnJhbWVidWZmZXIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVG
cmFtZWJ1ZmZlciIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcyA9IChQ
Rk5fdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcylsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZUdyYXBo
aWNzUGlwZWxpbmVzIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZUltYWdlID0gKFBGTl92a0NyZWF0
ZUltYWdlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW1hZ2UiKTsKKysgICAgdGFibGUtPnZrQ3Jl
YXRlSW1hZ2VWaWV3ID0gKFBGTl92a0NyZWF0ZUltYWdlVmlldylsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZUltYWdlVmlldyIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVQaXBlbGluZUNhY2hlID0gKFBG
Tl92a0NyZWF0ZVBpcGVsaW5lQ2FjaGUpbG9hZChjb250ZXh0LCAidmtDcmVhdGVQaXBlbGluZUNh
Y2hlIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVBpcGVsaW5lTGF5b3V0ID0gKFBGTl92a0NyZWF0
ZVBpcGVsaW5lTGF5b3V0KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQiKTsK
KysgICAgdGFibGUtPnZrQ3JlYXRlUXVlcnlQb29sID0gKFBGTl92a0NyZWF0ZVF1ZXJ5UG9vbCls
b2FkKGNvbnRleHQsICJ2a0NyZWF0ZVF1ZXJ5UG9vbCIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVS
ZW5kZXJQYXNzID0gKFBGTl92a0NyZWF0ZVJlbmRlclBhc3MpbG9hZChjb250ZXh0LCAidmtDcmVh
dGVSZW5kZXJQYXNzIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVNhbXBsZXIgPSAoUEZOX3ZrQ3Jl
YXRlU2FtcGxlcilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNhbXBsZXIiKTsKKysgICAgdGFibGUt
PnZrQ3JlYXRlU2VtYXBob3JlID0gKFBGTl92a0NyZWF0ZVNlbWFwaG9yZSlsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZVNlbWFwaG9yZSIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVTaGFkZXJNb2R1bGUg
PSAoUEZOX3ZrQ3JlYXRlU2hhZGVyTW9kdWxlKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU2hhZGVy
TW9kdWxlIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lCdWZmZXIgPSAoUEZOX3ZrRGVzdHJveUJ1
ZmZlcilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lCdWZmZXIiKTsKKysgICAgdGFibGUtPnZrRGVz
dHJveUJ1ZmZlclZpZXcgPSAoUEZOX3ZrRGVzdHJveUJ1ZmZlclZpZXcpbG9hZChjb250ZXh0LCAi
dmtEZXN0cm95QnVmZmVyVmlldyIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95Q29tbWFuZFBvb2wg
PSAoUEZOX3ZrRGVzdHJveUNvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrRGVzdHJveUNvbW1h
bmRQb29sIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lEZXNjcmlwdG9yUG9vbCA9IChQRk5fdmtE
ZXN0cm95RGVzY3JpcHRvclBvb2wpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3JpcHRvclBv
b2wiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQgPSAoUEZOX3Zr
RGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGVzY3Jp
cHRvclNldExheW91dCIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95RGV2aWNlID0gKFBGTl92a0Rl
c3Ryb3lEZXZpY2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95RGV2aWNlIik7CisrICAgIHRhYmxl
LT52a0Rlc3Ryb3lFdmVudCA9IChQRk5fdmtEZXN0cm95RXZlbnQpbG9hZChjb250ZXh0LCAidmtE
ZXN0cm95RXZlbnQiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveUZlbmNlID0gKFBGTl92a0Rlc3Ry
b3lGZW5jZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lGZW5jZSIpOworKyAgICB0YWJsZS0+dmtE
ZXN0cm95RnJhbWVidWZmZXIgPSAoUEZOX3ZrRGVzdHJveUZyYW1lYnVmZmVyKWxvYWQoY29udGV4
dCwgInZrRGVzdHJveUZyYW1lYnVmZmVyIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lJbWFnZSA9
IChQRk5fdmtEZXN0cm95SW1hZ2UpbG9hZChjb250ZXh0LCAidmtEZXN0cm95SW1hZ2UiKTsKKysg
ICAgdGFibGUtPnZrRGVzdHJveUltYWdlVmlldyA9IChQRk5fdmtEZXN0cm95SW1hZ2VWaWV3KWxv
YWQoY29udGV4dCwgInZrRGVzdHJveUltYWdlVmlldyIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95
UGlwZWxpbmUgPSAoUEZOX3ZrRGVzdHJveVBpcGVsaW5lKWxvYWQoY29udGV4dCwgInZrRGVzdHJv
eVBpcGVsaW5lIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lQaXBlbGluZUNhY2hlID0gKFBGTl92
a0Rlc3Ryb3lQaXBlbGluZUNhY2hlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVBpcGVsaW5lQ2Fj
aGUiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveVBpcGVsaW5lTGF5b3V0ID0gKFBGTl92a0Rlc3Ry
b3lQaXBlbGluZUxheW91dClsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lQaXBlbGluZUxheW91dCIp
OworKyAgICB0YWJsZS0+dmtEZXN0cm95UXVlcnlQb29sID0gKFBGTl92a0Rlc3Ryb3lRdWVyeVBv
b2wpbG9hZChjb250ZXh0LCAidmtEZXN0cm95UXVlcnlQb29sIik7CisrICAgIHRhYmxlLT52a0Rl
c3Ryb3lSZW5kZXJQYXNzID0gKFBGTl92a0Rlc3Ryb3lSZW5kZXJQYXNzKWxvYWQoY29udGV4dCwg
InZrRGVzdHJveVJlbmRlclBhc3MiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveVNhbXBsZXIgPSAo
UEZOX3ZrRGVzdHJveVNhbXBsZXIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlciIpOwor
KyAgICB0YWJsZS0+dmtEZXN0cm95U2VtYXBob3JlID0gKFBGTl92a0Rlc3Ryb3lTZW1hcGhvcmUp
bG9hZChjb250ZXh0LCAidmtEZXN0cm95U2VtYXBob3JlIik7CisrICAgIHRhYmxlLT52a0Rlc3Ry
b3lTaGFkZXJNb2R1bGUgPSAoUEZOX3ZrRGVzdHJveVNoYWRlck1vZHVsZSlsb2FkKGNvbnRleHQs
ICJ2a0Rlc3Ryb3lTaGFkZXJNb2R1bGUiKTsKKysgICAgdGFibGUtPnZrRGV2aWNlV2FpdElkbGUg
PSAoUEZOX3ZrRGV2aWNlV2FpdElkbGUpbG9hZChjb250ZXh0LCAidmtEZXZpY2VXYWl0SWRsZSIp
OworKyAgICB0YWJsZS0+dmtFbmRDb21tYW5kQnVmZmVyID0gKFBGTl92a0VuZENvbW1hbmRCdWZm
ZXIpbG9hZChjb250ZXh0LCAidmtFbmRDb21tYW5kQnVmZmVyIik7CisrICAgIHRhYmxlLT52a0Zs
dXNoTWFwcGVkTWVtb3J5UmFuZ2VzID0gKFBGTl92a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzKWxv
YWQoY29udGV4dCwgInZrRmx1c2hNYXBwZWRNZW1vcnlSYW5nZXMiKTsKKysgICAgdGFibGUtPnZr
RnJlZUNvbW1hbmRCdWZmZXJzID0gKFBGTl92a0ZyZWVDb21tYW5kQnVmZmVycylsb2FkKGNvbnRl
eHQsICJ2a0ZyZWVDb21tYW5kQnVmZmVycyIpOworKyAgICB0YWJsZS0+dmtGcmVlRGVzY3JpcHRv
clNldHMgPSAoUEZOX3ZrRnJlZURlc2NyaXB0b3JTZXRzKWxvYWQoY29udGV4dCwgInZrRnJlZURl
c2NyaXB0b3JTZXRzIik7CisrICAgIHRhYmxlLT52a0ZyZWVNZW1vcnkgPSAoUEZOX3ZrRnJlZU1l
bW9yeSlsb2FkKGNvbnRleHQsICJ2a0ZyZWVNZW1vcnkiKTsKKysgICAgdGFibGUtPnZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzID0gKFBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50
cylsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyIpOworKyAgICB0
YWJsZS0+dmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50ID0gKFBGTl92a0dldERldmljZU1lbW9y
eUNvbW1pdG1lbnQpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50Iik7
CisrICAgIHRhYmxlLT52a0dldERldmljZVF1ZXVlID0gKFBGTl92a0dldERldmljZVF1ZXVlKWxv
YWQoY29udGV4dCwgInZrR2V0RGV2aWNlUXVldWUiKTsKKysgICAgdGFibGUtPnZrR2V0RXZlbnRT
dGF0dXMgPSAoUEZOX3ZrR2V0RXZlbnRTdGF0dXMpbG9hZChjb250ZXh0LCAidmtHZXRFdmVudFN0
YXR1cyIpOworKyAgICB0YWJsZS0+dmtHZXRGZW5jZVN0YXR1cyA9IChQRk5fdmtHZXRGZW5jZVN0
YXR1cylsb2FkKGNvbnRleHQsICJ2a0dldEZlbmNlU3RhdHVzIik7CisrICAgIHRhYmxlLT52a0dl
dEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzID0gKFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1l
bnRzKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMiKTsKKysgICAg
dGFibGUtPnZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMgPSAoUEZOX3ZrR2V0SW1h
Z2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVNwYXJz
ZU1lbW9yeVJlcXVpcmVtZW50cyIpOworKyAgICB0YWJsZS0+dmtHZXRJbWFnZVN1YnJlc291cmNl
TGF5b3V0ID0gKFBGTl92a0dldEltYWdlU3VicmVzb3VyY2VMYXlvdXQpbG9hZChjb250ZXh0LCAi
dmtHZXRJbWFnZVN1YnJlc291cmNlTGF5b3V0Iik7CisrICAgIHRhYmxlLT52a0dldFBpcGVsaW5l
Q2FjaGVEYXRhID0gKFBGTl92a0dldFBpcGVsaW5lQ2FjaGVEYXRhKWxvYWQoY29udGV4dCwgInZr
R2V0UGlwZWxpbmVDYWNoZURhdGEiKTsKKysgICAgdGFibGUtPnZrR2V0UXVlcnlQb29sUmVzdWx0
cyA9IChQRk5fdmtHZXRRdWVyeVBvb2xSZXN1bHRzKWxvYWQoY29udGV4dCwgInZrR2V0UXVlcnlQ
b29sUmVzdWx0cyIpOworKyAgICB0YWJsZS0+dmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHkgPSAo
UEZOX3ZrR2V0UmVuZGVyQXJlYUdyYW51bGFyaXR5KWxvYWQoY29udGV4dCwgInZrR2V0UmVuZGVy
QXJlYUdyYW51bGFyaXR5Iik7CisrICAgIHRhYmxlLT52a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlS
YW5nZXMgPSAoUEZOX3ZrSW52YWxpZGF0ZU1hcHBlZE1lbW9yeVJhbmdlcylsb2FkKGNvbnRleHQs
ICJ2a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMiKTsKKysgICAgdGFibGUtPnZrTWFwTWVt
b3J5ID0gKFBGTl92a01hcE1lbW9yeSlsb2FkKGNvbnRleHQsICJ2a01hcE1lbW9yeSIpOworKyAg
ICB0YWJsZS0+dmtNZXJnZVBpcGVsaW5lQ2FjaGVzID0gKFBGTl92a01lcmdlUGlwZWxpbmVDYWNo
ZXMpbG9hZChjb250ZXh0LCAidmtNZXJnZVBpcGVsaW5lQ2FjaGVzIik7CisrICAgIHRhYmxlLT52
a1F1ZXVlQmluZFNwYXJzZSA9IChQRk5fdmtRdWV1ZUJpbmRTcGFyc2UpbG9hZChjb250ZXh0LCAi
dmtRdWV1ZUJpbmRTcGFyc2UiKTsKKysgICAgdGFibGUtPnZrUXVldWVTdWJtaXQgPSAoUEZOX3Zr
UXVldWVTdWJtaXQpbG9hZChjb250ZXh0LCAidmtRdWV1ZVN1Ym1pdCIpOworKyAgICB0YWJsZS0+
dmtRdWV1ZVdhaXRJZGxlID0gKFBGTl92a1F1ZXVlV2FpdElkbGUpbG9hZChjb250ZXh0LCAidmtR
dWV1ZVdhaXRJZGxlIik7CisrICAgIHRhYmxlLT52a1Jlc2V0Q29tbWFuZEJ1ZmZlciA9IChQRk5f
dmtSZXNldENvbW1hbmRCdWZmZXIpbG9hZChjb250ZXh0LCAidmtSZXNldENvbW1hbmRCdWZmZXIi
KTsKKysgICAgdGFibGUtPnZrUmVzZXRDb21tYW5kUG9vbCA9IChQRk5fdmtSZXNldENvbW1hbmRQ
b29sKWxvYWQoY29udGV4dCwgInZrUmVzZXRDb21tYW5kUG9vbCIpOworKyAgICB0YWJsZS0+dmtS
ZXNldERlc2NyaXB0b3JQb29sID0gKFBGTl92a1Jlc2V0RGVzY3JpcHRvclBvb2wpbG9hZChjb250
ZXh0LCAidmtSZXNldERlc2NyaXB0b3JQb29sIik7CisrICAgIHRhYmxlLT52a1Jlc2V0RXZlbnQg
PSAoUEZOX3ZrUmVzZXRFdmVudClsb2FkKGNvbnRleHQsICJ2a1Jlc2V0RXZlbnQiKTsKKysgICAg
dGFibGUtPnZrUmVzZXRGZW5jZXMgPSAoUEZOX3ZrUmVzZXRGZW5jZXMpbG9hZChjb250ZXh0LCAi
dmtSZXNldEZlbmNlcyIpOworKyAgICB0YWJsZS0+dmtTZXRFdmVudCA9IChQRk5fdmtTZXRFdmVu
dClsb2FkKGNvbnRleHQsICJ2a1NldEV2ZW50Iik7CisrICAgIHRhYmxlLT52a1VubWFwTWVtb3J5
ID0gKFBGTl92a1VubWFwTWVtb3J5KWxvYWQoY29udGV4dCwgInZrVW5tYXBNZW1vcnkiKTsKKysg
ICAgdGFibGUtPnZrVXBkYXRlRGVzY3JpcHRvclNldHMgPSAoUEZOX3ZrVXBkYXRlRGVzY3JpcHRv
clNldHMpbG9hZChjb250ZXh0LCAidmtVcGRhdGVEZXNjcmlwdG9yU2V0cyIpOworKyAgICB0YWJs
ZS0+dmtXYWl0Rm9yRmVuY2VzID0gKFBGTl92a1dhaXRGb3JGZW5jZXMpbG9hZChjb250ZXh0LCAi
dmtXYWl0Rm9yRmVuY2VzIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfVkVSU0lPTl8xXzApICov
CisgI2lmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpCistCXRhYmxlLT52a0JpbmRCdWZmZXJNZW1v
cnkyID0gKFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyKWxvYWQoY29udGV4dCwgInZrQmluZEJ1ZmZl
ck1lbW9yeTIiKTsKKy0JdGFibGUtPnZrQmluZEltYWdlTWVtb3J5MiA9IChQRk5fdmtCaW5kSW1h
Z2VNZW1vcnkyKWxvYWQoY29udGV4dCwgInZrQmluZEltYWdlTWVtb3J5MiIpOworLQl0YWJsZS0+
dmtDbWREaXNwYXRjaEJhc2UgPSAoUEZOX3ZrQ21kRGlzcGF0Y2hCYXNlKWxvYWQoY29udGV4dCwg
InZrQ21kRGlzcGF0Y2hCYXNlIik7CistCXRhYmxlLT52a0NtZFNldERldmljZU1hc2sgPSAoUEZO
X3ZrQ21kU2V0RGV2aWNlTWFzaylsb2FkKGNvbnRleHQsICJ2a0NtZFNldERldmljZU1hc2siKTsK
Ky0JdGFibGUtPnZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlID0gKFBGTl92a0NyZWF0
ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZSlsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZSIpOworLQl0YWJsZS0+dmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJz
aW9uID0gKFBGTl92a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24pbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uIik7CistCXRhYmxlLT52a0Rlc3Ryb3lEZXNj
cmlwdG9yVXBkYXRlVGVtcGxhdGUgPSAoUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1w
bGF0ZSlsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUiKTsK
Ky0JdGFibGUtPnZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb24gPSAoUEZOX3ZrRGVzdHJv
eVNhbXBsZXJZY2JjckNvbnZlcnNpb24pbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlcllj
YmNyQ29udmVyc2lvbiIpOworLQl0YWJsZS0+dmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMy
ID0gKFBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIpbG9hZChjb250ZXh0LCAidmtH
ZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyIik7CistCXRhYmxlLT52a0dldERlc2NyaXB0b3JT
ZXRMYXlvdXRTdXBwb3J0ID0gKFBGTl92a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0KWxv
YWQoY29udGV4dCwgInZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBvcnQiKTsKKy0JdGFibGUt
PnZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXMgPSAoUEZOX3ZrR2V0RGV2aWNlR3Jv
dXBQZWVyTWVtb3J5RmVhdHVyZXMpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VHcm91cFBlZXJN
ZW1vcnlGZWF0dXJlcyIpOworLQl0YWJsZS0+dmtHZXREZXZpY2VRdWV1ZTIgPSAoUEZOX3ZrR2V0
RGV2aWNlUXVldWUyKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlUXVldWUyIik7CistCXRhYmxl
LT52a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMiA9IChQRk5fdmtHZXRJbWFnZU1lbW9yeVJl
cXVpcmVtZW50czIpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czIi
KTsKKy0JdGFibGUtPnZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJlbWVudHMyID0gKFBGTl92
a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMilsb2FkKGNvbnRleHQsICJ2a0dldElt
YWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworLQl0YWJsZS0+dmtUcmltQ29tbWFuZFBv
b2wgPSAoUEZOX3ZrVHJpbUNvbW1hbmRQb29sKWxvYWQoY29udGV4dCwgInZrVHJpbUNvbW1hbmRQ
b29sIik7CistCXRhYmxlLT52a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUgPSAoUEZO
X3ZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZSlsb2FkKGNvbnRleHQsICJ2a1VwZGF0
ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGUiKTsKKysgICAgdGFibGUtPnZrQmluZEJ1ZmZlck1l
bW9yeTIgPSAoUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeTIpbG9hZChjb250ZXh0LCAidmtCaW5kQnVm
ZmVyTWVtb3J5MiIpOworKyAgICB0YWJsZS0+dmtCaW5kSW1hZ2VNZW1vcnkyID0gKFBGTl92a0Jp
bmRJbWFnZU1lbW9yeTIpbG9hZChjb250ZXh0LCAidmtCaW5kSW1hZ2VNZW1vcnkyIik7CisrICAg
IHRhYmxlLT52a0NtZERpc3BhdGNoQmFzZSA9IChQRk5fdmtDbWREaXNwYXRjaEJhc2UpbG9hZChj
b250ZXh0LCAidmtDbWREaXNwYXRjaEJhc2UiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0RGV2aWNl
TWFzayA9IChQRk5fdmtDbWRTZXREZXZpY2VNYXNrKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGV2
aWNlTWFzayIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGUg
PSAoUEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlKWxvYWQoY29udGV4dCwgInZr
Q3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVNh
bXBsZXJZY2JjckNvbnZlcnNpb24gPSAoUEZOX3ZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lv
bilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24iKTsKKysgICAg
dGFibGUtPnZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZSA9IChQRk5fdmtEZXN0cm95
RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZSIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95U2FtcGxlclljYmNyQ29u
dmVyc2lvbiA9IChQRk5fdmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbilsb2FkKGNvbnRl
eHQsICJ2a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uIik7CisrICAgIHRhYmxlLT52a0dl
dEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0QnVmZmVyTWVtb3J5UmVxdWly
ZW1lbnRzMilsb2FkKGNvbnRleHQsICJ2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czIiKTsK
KysgICAgdGFibGUtPnZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBvcnQgPSAoUEZOX3ZrR2V0
RGVzY3JpcHRvclNldExheW91dFN1cHBvcnQpbG9hZChjb250ZXh0LCAidmtHZXREZXNjcmlwdG9y
U2V0TGF5b3V0U3VwcG9ydCIpOworKyAgICB0YWJsZS0+dmtHZXREZXZpY2VHcm91cFBlZXJNZW1v
cnlGZWF0dXJlcyA9IChQRk5fdmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlcylsb2Fk
KGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzIik7CisrICAgIHRh
YmxlLT52a0dldERldmljZVF1ZXVlMiA9IChQRk5fdmtHZXREZXZpY2VRdWV1ZTIpbG9hZChjb250
ZXh0LCAidmtHZXREZXZpY2VRdWV1ZTIiKTsKKysgICAgdGFibGUtPnZrR2V0SW1hZ2VNZW1vcnlS
ZXF1aXJlbWVudHMyID0gKFBGTl92a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMilsb2FkKGNv
bnRleHQsICJ2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzMiIpOworKyAgICB0YWJsZS0+dmtH
ZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czIgPSAoUEZOX3ZrR2V0SW1hZ2VTcGFyc2VN
ZW1vcnlSZXF1aXJlbWVudHMyKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlS
ZXF1aXJlbWVudHMyIik7CisrICAgIHRhYmxlLT52a1RyaW1Db21tYW5kUG9vbCA9IChQRk5fdmtU
cmltQ29tbWFuZFBvb2wpbG9hZChjb250ZXh0LCAidmtUcmltQ29tbWFuZFBvb2wiKTsKKysgICAg
dGFibGUtPnZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZSA9IChQRk5fdmtVcGRhdGVE
ZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlKWxvYWQoY29udGV4dCwgInZrVXBkYXRlRGVzY3JpcHRv
clNldFdpdGhUZW1wbGF0ZSIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSAq
LworICNpZiBkZWZpbmVkKFZLX0FNRF9idWZmZXJfbWFya2VyKQorLQl0YWJsZS0+dmtDbWRXcml0
ZUJ1ZmZlck1hcmtlckFNRCA9IChQRk5fdmtDbWRXcml0ZUJ1ZmZlck1hcmtlckFNRClsb2FkKGNv
bnRleHQsICJ2a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1EIik7CisrICAgIHRhYmxlLT52a0NtZFdy
aXRlQnVmZmVyTWFya2VyQU1EID0gKFBGTl92a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1EKWxvYWQo
Y29udGV4dCwgInZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQiKTsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19BTURfYnVmZmVyX21hcmtlcikgKi8KKyAjaWYgZGVmaW5lZChWS19BTURfZGlzcGxheV9u
YXRpdmVfaGRyKQorLQl0YWJsZS0+dmtTZXRMb2NhbERpbW1pbmdBTUQgPSAoUEZOX3ZrU2V0TG9j
YWxEaW1taW5nQU1EKWxvYWQoY29udGV4dCwgInZrU2V0TG9jYWxEaW1taW5nQU1EIik7CisrICAg
IHRhYmxlLT52a1NldExvY2FsRGltbWluZ0FNRCA9IChQRk5fdmtTZXRMb2NhbERpbW1pbmdBTUQp
bG9hZChjb250ZXh0LCAidmtTZXRMb2NhbERpbW1pbmdBTUQiKTsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19BTURfZGlzcGxheV9uYXRpdmVfaGRyKSAqLworICNpZiBkZWZpbmVkKFZLX0FNRF9kcmF3
X2luZGlyZWN0X2NvdW50KQorLQl0YWJsZS0+dmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRB
TUQgPSAoUEZOX3ZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EKWxvYWQoY29udGV4dCwg
InZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EIik7CistCXRhYmxlLT52a0NtZERyYXdJ
bmRpcmVjdENvdW50QU1EID0gKFBGTl92a0NtZERyYXdJbmRpcmVjdENvdW50QU1EKWxvYWQoY29u
dGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Q291bnRBTUQiKTsKKysgICAgdGFibGUtPnZrQ21kRHJh
d0luZGV4ZWRJbmRpcmVjdENvdW50QU1EID0gKFBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3RD
b3VudEFNRClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEFNRCIp
OworKyAgICB0YWJsZS0+dmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCA9IChQRk5fdmtDbWREcmF3
SW5kaXJlY3RDb3VudEFNRClsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRpcmVjdENvdW50QU1E
Iik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2RyYXdfaW5kaXJlY3RfY291bnQpICovCisg
I2lmIGRlZmluZWQoVktfQU1EX3NoYWRlcl9pbmZvKQorLQl0YWJsZS0+dmtHZXRTaGFkZXJJbmZv
QU1EID0gKFBGTl92a0dldFNoYWRlckluZm9BTUQpbG9hZChjb250ZXh0LCAidmtHZXRTaGFkZXJJ
bmZvQU1EIik7CisrICAgIHRhYmxlLT52a0dldFNoYWRlckluZm9BTUQgPSAoUEZOX3ZrR2V0U2hh
ZGVySW5mb0FNRClsb2FkKGNvbnRleHQsICJ2a0dldFNoYWRlckluZm9BTUQiKTsKKyAjZW5kaWYg
LyogZGVmaW5lZChWS19BTURfc2hhZGVyX2luZm8pICovCisgI2lmIGRlZmluZWQoVktfQU5EUk9J
RF9leHRlcm5hbF9tZW1vcnlfYW5kcm9pZF9oYXJkd2FyZV9idWZmZXIpCistCXRhYmxlLT52a0dl
dEFuZHJvaWRIYXJkd2FyZUJ1ZmZlclByb3BlcnRpZXNBTkRST0lEID0gKFBGTl92a0dldEFuZHJv
aWRIYXJkd2FyZUJ1ZmZlclByb3BlcnRpZXNBTkRST0lEKWxvYWQoY29udGV4dCwgInZrR2V0QW5k
cm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQiKTsKKy0JdGFibGUtPnZrR2V0TWVt
b3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRCA9IChQRk5fdmtHZXRNZW1vcnlBbmRyb2lk
SGFyZHdhcmVCdWZmZXJBTkRST0lEKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5QW5kcm9pZEhh
cmR3YXJlQnVmZmVyQU5EUk9JRCIpOworKyAgICB0YWJsZS0+dmtHZXRBbmRyb2lkSGFyZHdhcmVC
dWZmZXJQcm9wZXJ0aWVzQU5EUk9JRCA9IChQRk5fdmtHZXRBbmRyb2lkSGFyZHdhcmVCdWZmZXJQ
cm9wZXJ0aWVzQU5EUk9JRClsb2FkKGNvbnRleHQsICJ2a0dldEFuZHJvaWRIYXJkd2FyZUJ1ZmZl
clByb3BlcnRpZXNBTkRST0lEIik7CisrICAgIHRhYmxlLT52a0dldE1lbW9yeUFuZHJvaWRIYXJk
d2FyZUJ1ZmZlckFORFJPSUQgPSAoUEZOX3ZrR2V0TWVtb3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVy
QU5EUk9JRClsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeUFuZHJvaWRIYXJkd2FyZUJ1ZmZlckFO
RFJPSUQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19BTkRST0lEX2V4dGVybmFsX21lbW9yeV9h
bmRyb2lkX2hhcmR3YXJlX2J1ZmZlcikgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfYnVmZmVyX2Rl
dmljZV9hZGRyZXNzKQorLQl0YWJsZS0+dmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUID0gKFBG
Tl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NFWFQpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJE
ZXZpY2VBZGRyZXNzRVhUIik7CisrICAgIHRhYmxlLT52a0dldEJ1ZmZlckRldmljZUFkZHJlc3NF
WFQgPSAoUEZOX3ZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VYVClsb2FkKGNvbnRleHQsICJ2a0dl
dEJ1ZmZlckRldmljZUFkZHJlc3NFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfYnVm
ZmVyX2RldmljZV9hZGRyZXNzKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9jYWxpYnJhdGVkX3Rp
bWVzdGFtcHMpCistCXRhYmxlLT52a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUID0gKFBGTl92
a0dldENhbGlicmF0ZWRUaW1lc3RhbXBzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0Q2FsaWJyYXRl
ZFRpbWVzdGFtcHNFWFQiKTsKKysgICAgdGFibGUtPnZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNF
WFQgPSAoUEZOX3ZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQpbG9hZChjb250ZXh0LCAidmtH
ZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9j
YWxpYnJhdGVkX3RpbWVzdGFtcHMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2NvbmRpdGlvbmFs
X3JlbmRlcmluZykKKy0JdGFibGUtPnZrQ21kQmVnaW5Db25kaXRpb25hbFJlbmRlcmluZ0VYVCA9
IChQRk5fdmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhUKWxvYWQoY29udGV4dCwgInZr
Q21kQmVnaW5Db25kaXRpb25hbFJlbmRlcmluZ0VYVCIpOworLQl0YWJsZS0+dmtDbWRFbmRDb25k
aXRpb25hbFJlbmRlcmluZ0VYVCA9IChQRk5fdmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VY
VClsb2FkKGNvbnRleHQsICJ2a0NtZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIik7CisrICAg
IHRhYmxlLT52a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQgPSAoUEZOX3ZrQ21kQmVn
aW5Db25kaXRpb25hbFJlbmRlcmluZ0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luQ29uZGl0
aW9uYWxSZW5kZXJpbmdFWFQiKTsKKysgICAgdGFibGUtPnZrQ21kRW5kQ29uZGl0aW9uYWxSZW5k
ZXJpbmdFWFQgPSAoUEZOX3ZrQ21kRW5kQ29uZGl0aW9uYWxSZW5kZXJpbmdFWFQpbG9hZChjb250
ZXh0LCAidmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVCIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0VYVF9jb25kaXRpb25hbF9yZW5kZXJpbmcpICovCisgI2lmIGRlZmluZWQoVktfRVhU
X2RlYnVnX21hcmtlcikKKy0JdGFibGUtPnZrQ21kRGVidWdNYXJrZXJCZWdpbkVYVCA9IChQRk5f
dmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUKWxvYWQoY29udGV4dCwgInZrQ21kRGVidWdNYXJrZXJC
ZWdpbkVYVCIpOworLQl0YWJsZS0+dmtDbWREZWJ1Z01hcmtlckVuZEVYVCA9IChQRk5fdmtDbWRE
ZWJ1Z01hcmtlckVuZEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERlYnVnTWFya2VyRW5kRVhUIik7
CistCXRhYmxlLT52a0NtZERlYnVnTWFya2VySW5zZXJ0RVhUID0gKFBGTl92a0NtZERlYnVnTWFy
a2VySW5zZXJ0RVhUKWxvYWQoY29udGV4dCwgInZrQ21kRGVidWdNYXJrZXJJbnNlcnRFWFQiKTsK
Ky0JdGFibGUtPnZrRGVidWdNYXJrZXJTZXRPYmplY3ROYW1lRVhUID0gKFBGTl92a0RlYnVnTWFy
a2VyU2V0T2JqZWN0TmFtZUVYVClsb2FkKGNvbnRleHQsICJ2a0RlYnVnTWFya2VyU2V0T2JqZWN0
TmFtZUVYVCIpOworLQl0YWJsZS0+dmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVCA9IChQRk5f
dmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVClsb2FkKGNvbnRleHQsICJ2a0RlYnVnTWFya2Vy
U2V0T2JqZWN0VGFnRVhUIik7CisrICAgIHRhYmxlLT52a0NtZERlYnVnTWFya2VyQmVnaW5FWFQg
PSAoUEZOX3ZrQ21kRGVidWdNYXJrZXJCZWdpbkVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERlYnVn
TWFya2VyQmVnaW5FWFQiKTsKKysgICAgdGFibGUtPnZrQ21kRGVidWdNYXJrZXJFbmRFWFQgPSAo
UEZOX3ZrQ21kRGVidWdNYXJrZXJFbmRFWFQpbG9hZChjb250ZXh0LCAidmtDbWREZWJ1Z01hcmtl
ckVuZEVYVCIpOworKyAgICB0YWJsZS0+dmtDbWREZWJ1Z01hcmtlckluc2VydEVYVCA9IChQRk5f
dmtDbWREZWJ1Z01hcmtlckluc2VydEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZERlYnVnTWFya2Vy
SW5zZXJ0RVhUIik7CisrICAgIHRhYmxlLT52a0RlYnVnTWFya2VyU2V0T2JqZWN0TmFtZUVYVCA9
IChQRk5fdmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQpbG9hZChjb250ZXh0LCAidmtEZWJ1
Z01hcmtlclNldE9iamVjdE5hbWVFWFQiKTsKKysgICAgdGFibGUtPnZrRGVidWdNYXJrZXJTZXRP
YmplY3RUYWdFWFQgPSAoUEZOX3ZrRGVidWdNYXJrZXJTZXRPYmplY3RUYWdFWFQpbG9hZChjb250
ZXh0LCAidmtEZWJ1Z01hcmtlclNldE9iamVjdFRhZ0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0VYVF9kZWJ1Z19tYXJrZXIpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Rpc2NhcmRfcmVj
dGFuZ2xlcykKKy0JdGFibGUtPnZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVCA9IChQRk5fdmtD
bWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGlzY2FyZFJl
Y3RhbmdsZUVYVCIpOworKyAgICB0YWJsZS0+dmtDbWRTZXREaXNjYXJkUmVjdGFuZ2xlRVhUID0g
KFBGTl92a0NtZFNldERpc2NhcmRSZWN0YW5nbGVFWFQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRE
aXNjYXJkUmVjdGFuZ2xlRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2Rpc2NhcmRf
cmVjdGFuZ2xlcykgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfZGlzcGxheV9jb250cm9sKQorLQl0
YWJsZS0+dmtEaXNwbGF5UG93ZXJDb250cm9sRVhUID0gKFBGTl92a0Rpc3BsYXlQb3dlckNvbnRy
b2xFWFQpbG9hZChjb250ZXh0LCAidmtEaXNwbGF5UG93ZXJDb250cm9sRVhUIik7CistCXRhYmxl
LT52a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQgPSAoUEZOX3ZrR2V0U3dhcGNoYWluQ291bnRlckVY
VClsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQiKTsKKy0JdGFibGUtPnZr
UmVnaXN0ZXJEZXZpY2VFdmVudEVYVCA9IChQRk5fdmtSZWdpc3RlckRldmljZUV2ZW50RVhUKWxv
YWQoY29udGV4dCwgInZrUmVnaXN0ZXJEZXZpY2VFdmVudEVYVCIpOworLQl0YWJsZS0+dmtSZWdp
c3RlckRpc3BsYXlFdmVudEVYVCA9IChQRk5fdmtSZWdpc3RlckRpc3BsYXlFdmVudEVYVClsb2Fk
KGNvbnRleHQsICJ2a1JlZ2lzdGVyRGlzcGxheUV2ZW50RVhUIik7CisrICAgIHRhYmxlLT52a0Rp
c3BsYXlQb3dlckNvbnRyb2xFWFQgPSAoUEZOX3ZrRGlzcGxheVBvd2VyQ29udHJvbEVYVClsb2Fk
KGNvbnRleHQsICJ2a0Rpc3BsYXlQb3dlckNvbnRyb2xFWFQiKTsKKysgICAgdGFibGUtPnZrR2V0
U3dhcGNoYWluQ291bnRlckVYVCA9IChQRk5fdmtHZXRTd2FwY2hhaW5Db3VudGVyRVhUKWxvYWQo
Y29udGV4dCwgInZrR2V0U3dhcGNoYWluQ291bnRlckVYVCIpOworKyAgICB0YWJsZS0+dmtSZWdp
c3RlckRldmljZUV2ZW50RVhUID0gKFBGTl92a1JlZ2lzdGVyRGV2aWNlRXZlbnRFWFQpbG9hZChj
b250ZXh0LCAidmtSZWdpc3RlckRldmljZUV2ZW50RVhUIik7CisrICAgIHRhYmxlLT52a1JlZ2lz
dGVyRGlzcGxheUV2ZW50RVhUID0gKFBGTl92a1JlZ2lzdGVyRGlzcGxheUV2ZW50RVhUKWxvYWQo
Y29udGV4dCwgInZrUmVnaXN0ZXJEaXNwbGF5RXZlbnRFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19FWFRfZGlzcGxheV9jb250cm9sKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9leHRlcm5h
bF9tZW1vcnlfaG9zdCkKKy0JdGFibGUtPnZrR2V0TWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVz
RVhUID0gKFBGTl92a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVClsb2FkKGNvbnRl
eHQsICJ2a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVCIpOworKyAgICB0YWJsZS0+
dmtHZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXNFWFQgPSAoUEZOX3ZrR2V0TWVtb3J5SG9z
dFBvaW50ZXJQcm9wZXJ0aWVzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5SG9zdFBvaW50
ZXJQcm9wZXJ0aWVzRVhUIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2V4dGVybmFsX21l
bW9yeV9ob3N0KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUp
CistCXRhYmxlLT52a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCA9IChQRk5fdmtB
Y3F1aXJlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQpbG9hZChjb250ZXh0LCAidmtBY3F1aXJl
RnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQiKTsKKy0JdGFibGUtPnZrUmVsZWFzZUZ1bGxTY3Jl
ZW5FeGNsdXNpdmVNb2RlRVhUID0gKFBGTl92a1JlbGVhc2VGdWxsU2NyZWVuRXhjbHVzaXZlTW9k
ZUVYVClsb2FkKGNvbnRleHQsICJ2a1JlbGVhc2VGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCIp
OworKyAgICB0YWJsZS0+dmtBY3F1aXJlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQgPSAoUEZO
X3ZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUKWxvYWQoY29udGV4dCwgInZrQWNx
dWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIik7CisrICAgIHRhYmxlLT52a1JlbGVhc2VG
dWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCA9IChQRk5fdmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1
c2l2ZU1vZGVFWFQpbG9hZChjb250ZXh0LCAidmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1v
ZGVFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZl
KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9oZHJfbWV0YWRhdGEpCistCXRhYmxlLT52a1NldEhk
ck1ldGFkYXRhRVhUID0gKFBGTl92a1NldEhkck1ldGFkYXRhRVhUKWxvYWQoY29udGV4dCwgInZr
U2V0SGRyTWV0YWRhdGFFWFQiKTsKKysgICAgdGFibGUtPnZrU2V0SGRyTWV0YWRhdGFFWFQgPSAo
UEZOX3ZrU2V0SGRyTWV0YWRhdGFFWFQpbG9hZChjb250ZXh0LCAidmtTZXRIZHJNZXRhZGF0YUVY
VCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9oZHJfbWV0YWRhdGEpICovCisgI2lmIGRl
ZmluZWQoVktfRVhUX2hvc3RfcXVlcnlfcmVzZXQpCistCXRhYmxlLT52a1Jlc2V0UXVlcnlQb29s
RVhUID0gKFBGTl92a1Jlc2V0UXVlcnlQb29sRVhUKWxvYWQoY29udGV4dCwgInZrUmVzZXRRdWVy
eVBvb2xFWFQiKTsKKysgICAgdGFibGUtPnZrUmVzZXRRdWVyeVBvb2xFWFQgPSAoUEZOX3ZrUmVz
ZXRRdWVyeVBvb2xFWFQpbG9hZChjb250ZXh0LCAidmtSZXNldFF1ZXJ5UG9vbEVYVCIpOworICNl
bmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9ob3N0X3F1ZXJ5X3Jlc2V0KSAqLworICNpZiBkZWZpbmVk
KFZLX0VYVF9pbWFnZV9kcm1fZm9ybWF0X21vZGlmaWVyKQorLQl0YWJsZS0+dmtHZXRJbWFnZURy
bUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCA9IChQRk5fdmtHZXRJbWFnZURybUZvcm1hdE1v
ZGlmaWVyUHJvcGVydGllc0VYVClsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlRHJtRm9ybWF0TW9k
aWZpZXJQcm9wZXJ0aWVzRVhUIik7CisrICAgIHRhYmxlLT52a0dldEltYWdlRHJtRm9ybWF0TW9k
aWZpZXJQcm9wZXJ0aWVzRVhUID0gKFBGTl92a0dldEltYWdlRHJtRm9ybWF0TW9kaWZpZXJQcm9w
ZXJ0aWVzRVhUKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VEcm1Gb3JtYXRNb2RpZmllclByb3Bl
cnRpZXNFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfaW1hZ2VfZHJtX2Zvcm1hdF9t
b2RpZmllcikgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfbGluZV9yYXN0ZXJpemF0aW9uKQorLQl0
YWJsZS0+dmtDbWRTZXRMaW5lU3RpcHBsZUVYVCA9IChQRk5fdmtDbWRTZXRMaW5lU3RpcHBsZUVY
VClsb2FkKGNvbnRleHQsICJ2a0NtZFNldExpbmVTdGlwcGxlRVhUIik7CisrICAgIHRhYmxlLT52
a0NtZFNldExpbmVTdGlwcGxlRVhUID0gKFBGTl92a0NtZFNldExpbmVTdGlwcGxlRVhUKWxvYWQo
Y29udGV4dCwgInZrQ21kU2V0TGluZVN0aXBwbGVFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19FWFRfbGluZV9yYXN0ZXJpemF0aW9uKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9zYW1wbGVf
bG9jYXRpb25zKQorLQl0YWJsZS0+dmtDbWRTZXRTYW1wbGVMb2NhdGlvbnNFWFQgPSAoUEZOX3Zr
Q21kU2V0U2FtcGxlTG9jYXRpb25zRVhUKWxvYWQoY29udGV4dCwgInZrQ21kU2V0U2FtcGxlTG9j
YXRpb25zRVhUIik7CisrICAgIHRhYmxlLT52a0NtZFNldFNhbXBsZUxvY2F0aW9uc0VYVCA9IChQ
Rk5fdmtDbWRTZXRTYW1wbGVMb2NhdGlvbnNFWFQpbG9hZChjb250ZXh0LCAidmtDbWRTZXRTYW1w
bGVMb2NhdGlvbnNFWFQiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfc2FtcGxlX2xvY2F0
aW9ucykgKi8KKyAjaWYgZGVmaW5lZChWS19FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrKQorLQl0YWJs
ZS0+dmtDbWRCZWdpblF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRCZWdpblF1ZXJ5SW5kZXhl
ZEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnlJbmRleGVkRVhUIik7CistCXRhYmxl
LT52a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQgPSAoUEZOX3ZrQ21kQmVnaW5UcmFuc2Zv
cm1GZWVkYmFja0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tF
WFQiKTsKKy0JdGFibGUtPnZrQ21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0VYVCA9IChQ
Rk5fdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUKWxvYWQoY29udGV4dCwgInZr
Q21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0VYVCIpOworLQl0YWJsZS0+dmtDbWREcmF3
SW5kaXJlY3RCeXRlQ291bnRFWFQgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhU
KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhUIik7CistCXRhYmxl
LT52a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQp
bG9hZChjb250ZXh0LCAidmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQiKTsKKy0JdGFibGUtPnZrQ21k
RW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQgPSAoUEZOX3ZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tF
WFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFja0VYVCIpOworKyAgICB0
YWJsZS0+dmtDbWRCZWdpblF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRCZWdpblF1ZXJ5SW5k
ZXhlZEVYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luUXVlcnlJbmRleGVkRVhUIik7CisrICAg
IHRhYmxlLT52a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQgPSAoUEZOX3ZrQ21kQmVnaW5U
cmFuc2Zvcm1GZWVkYmFja0VYVClsb2FkKGNvbnRleHQsICJ2a0NtZEJlZ2luVHJhbnNmb3JtRmVl
ZGJhY2tFWFQiKTsKKysgICAgdGFibGUtPnZrQ21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
c0VYVCA9IChQRk5fdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUKWxvYWQoY29u
dGV4dCwgInZrQ21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0VYVCIpOworKyAgICB0YWJs
ZS0+dmtDbWREcmF3SW5kaXJlY3RCeXRlQ291bnRFWFQgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0
Qnl0ZUNvdW50RVhUKWxvYWQoY29udGV4dCwgInZrQ21kRHJhd0luZGlyZWN0Qnl0ZUNvdW50RVhU
Iik7CisrICAgIHRhYmxlLT52a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVCA9IChQRk5fdmtDbWRFbmRR
dWVyeUluZGV4ZWRFWFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmRRdWVyeUluZGV4ZWRFWFQiKTsK
KysgICAgdGFibGUtPnZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQgPSAoUEZOX3ZrQ21kRW5k
VHJhbnNmb3JtRmVlZGJhY2tFWFQpbG9hZChjb250ZXh0LCAidmtDbWRFbmRUcmFuc2Zvcm1GZWVk
YmFja0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF90cmFuc2Zvcm1fZmVlZGJhY2sp
ICovCisgI2lmIGRlZmluZWQoVktfRVhUX3ZhbGlkYXRpb25fY2FjaGUpCistCXRhYmxlLT52a0Ny
ZWF0ZVZhbGlkYXRpb25DYWNoZUVYVCA9IChQRk5fdmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQp
bG9hZChjb250ZXh0LCAidmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQiKTsKKy0JdGFibGUtPnZr
RGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVCA9IChQRk5fdmtEZXN0cm95VmFsaWRhdGlvbkNhY2hl
RVhUKWxvYWQoY29udGV4dCwgInZrRGVzdHJveVZhbGlkYXRpb25DYWNoZUVYVCIpOworLQl0YWJs
ZS0+dmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRhRVhUID0gKFBGTl92a0dldFZhbGlkYXRpb25DYWNo
ZURhdGFFWFQpbG9hZChjb250ZXh0LCAidmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRhRVhUIik7Cist
CXRhYmxlLT52a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVCA9IChQRk5fdmtNZXJnZVZhbGlkYXRp
b25DYWNoZXNFWFQpbG9hZChjb250ZXh0LCAidmtNZXJnZVZhbGlkYXRpb25DYWNoZXNFWFQiKTsK
KysgICAgdGFibGUtPnZrQ3JlYXRlVmFsaWRhdGlvbkNhY2hlRVhUID0gKFBGTl92a0NyZWF0ZVZh
bGlkYXRpb25DYWNoZUVYVClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVZhbGlkYXRpb25DYWNoZUVY
VCIpOworKyAgICB0YWJsZS0+dmtEZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUID0gKFBGTl92a0Rl
c3Ryb3lWYWxpZGF0aW9uQ2FjaGVFWFQpbG9hZChjb250ZXh0LCAidmtEZXN0cm95VmFsaWRhdGlv
bkNhY2hlRVhUIik7CisrICAgIHRhYmxlLT52a0dldFZhbGlkYXRpb25DYWNoZURhdGFFWFQgPSAo
UEZOX3ZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVYVClsb2FkKGNvbnRleHQsICJ2a0dldFZhbGlk
YXRpb25DYWNoZURhdGFFWFQiKTsKKysgICAgdGFibGUtPnZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVz
RVhUID0gKFBGTl92a01lcmdlVmFsaWRhdGlvbkNhY2hlc0VYVClsb2FkKGNvbnRleHQsICJ2a01l
cmdlVmFsaWRhdGlvbkNhY2hlc0VYVCIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF92YWxp
ZGF0aW9uX2NhY2hlKSAqLworICNpZiBkZWZpbmVkKFZLX0dPT0dMRV9kaXNwbGF5X3RpbWluZykK
Ky0JdGFibGUtPnZrR2V0UGFzdFByZXNlbnRhdGlvblRpbWluZ0dPT0dMRSA9IChQRk5fdmtHZXRQ
YXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFKWxvYWQoY29udGV4dCwgInZrR2V0UGFzdFByZXNl
bnRhdGlvblRpbWluZ0dPT0dMRSIpOworLQl0YWJsZS0+dmtHZXRSZWZyZXNoQ3ljbGVEdXJhdGlv
bkdPT0dMRSA9IChQRk5fdmtHZXRSZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRSlsb2FkKGNvbnRl
eHQsICJ2a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFIik7CisrICAgIHRhYmxlLT52a0dl
dFBhc3RQcmVzZW50YXRpb25UaW1pbmdHT09HTEUgPSAoUEZOX3ZrR2V0UGFzdFByZXNlbnRhdGlv
blRpbWluZ0dPT0dMRSlsb2FkKGNvbnRleHQsICJ2a0dldFBhc3RQcmVzZW50YXRpb25UaW1pbmdH
T09HTEUiKTsKKysgICAgdGFibGUtPnZrR2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUgPSAo
UEZOX3ZrR2V0UmVmcmVzaEN5Y2xlRHVyYXRpb25HT09HTEUpbG9hZChjb250ZXh0LCAidmtHZXRS
ZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRSIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0dPT0dM
RV9kaXNwbGF5X3RpbWluZykgKi8KKyAjaWYgZGVmaW5lZChWS19JTlRFTF9wZXJmb3JtYW5jZV9x
dWVyeSkKKy0JdGFibGUtPnZrQWNxdWlyZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMID0g
KFBGTl92a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTClsb2FkKGNvbnRleHQs
ICJ2a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworLQl0YWJsZS0+dmtD
bWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMID0gKFBGTl92a0NtZFNldFBlcmZvcm1hbmNlTWFy
a2VySU5URUwpbG9hZChjb250ZXh0LCAidmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMIik7
CistCXRhYmxlLT52a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJpZGVJTlRFTCA9IChQRk5fdmtDbWRT
ZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwpbG9hZChjb250ZXh0LCAidmtDbWRTZXRQZXJmb3Jt
YW5jZU92ZXJyaWRlSU5URUwiKTsKKy0JdGFibGUtPnZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1N
YXJrZXJJTlRFTCA9IChQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZVN0cmVhbU1hcmtlcklOVEVMKWxv
YWQoY29udGV4dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTCIpOworLQl0
YWJsZS0+dmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMID0gKFBGTl92a0dldFBlcmZvcm1h
bmNlUGFyYW1ldGVySU5URUwpbG9hZChjb250ZXh0LCAidmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRl
cklOVEVMIik7CistCXRhYmxlLT52a0luaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMID0gKFBG
Tl92a0luaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlOVEVMKWxvYWQoY29udGV4dCwgInZrSW5pdGlh
bGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwiKTsKKy0JdGFibGUtPnZrUXVldWVTZXRQZXJmb3JtYW5j
ZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5fdmtRdWV1ZVNldFBlcmZvcm1hbmNlQ29uZmlndXJh
dGlvbklOVEVMKWxvYWQoY29udGV4dCwgInZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRp
b25JTlRFTCIpOworLQl0YWJsZS0+dmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5U
RUwgPSAoUEZOX3ZrUmVsZWFzZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29u
dGV4dCwgInZrUmVsZWFzZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMIik7CistCXRhYmxl
LT52a1VuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwgPSAoUEZOX3ZrVW5pbml0aWFsaXpl
UGVyZm9ybWFuY2VBcGlJTlRFTClsb2FkKGNvbnRleHQsICJ2a1VuaW5pdGlhbGl6ZVBlcmZvcm1h
bmNlQXBpSU5URUwiKTsKKysgICAgdGFibGUtPnZrQWNxdWlyZVBlcmZvcm1hbmNlQ29uZmlndXJh
dGlvbklOVEVMID0gKFBGTl92a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCls
b2FkKGNvbnRleHQsICJ2a0FjcXVpcmVQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOwor
KyAgICB0YWJsZS0+dmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMID0gKFBGTl92a0NtZFNl
dFBlcmZvcm1hbmNlTWFya2VySU5URUwpbG9hZChjb250ZXh0LCAidmtDbWRTZXRQZXJmb3JtYW5j
ZU1hcmtlcklOVEVMIik7CisrICAgIHRhYmxlLT52a0NtZFNldFBlcmZvcm1hbmNlT3ZlcnJpZGVJ
TlRFTCA9IChQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwpbG9hZChjb250ZXh0
LCAidmtDbWRTZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwiKTsKKysgICAgdGFibGUtPnZrQ21k
U2V0UGVyZm9ybWFuY2VTdHJlYW1NYXJrZXJJTlRFTCA9IChQRk5fdmtDbWRTZXRQZXJmb3JtYW5j
ZVN0cmVhbU1hcmtlcklOVEVMKWxvYWQoY29udGV4dCwgInZrQ21kU2V0UGVyZm9ybWFuY2VTdHJl
YW1NYXJrZXJJTlRFTCIpOworKyAgICB0YWJsZS0+dmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklO
VEVMID0gKFBGTl92a0dldFBlcmZvcm1hbmNlUGFyYW1ldGVySU5URUwpbG9hZChjb250ZXh0LCAi
dmtHZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMIik7CisrICAgIHRhYmxlLT52a0luaXRpYWxp
emVQZXJmb3JtYW5jZUFwaUlOVEVMID0gKFBGTl92a0luaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlO
VEVMKWxvYWQoY29udGV4dCwgInZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwiKTsKKysg
ICAgdGFibGUtPnZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCA9IChQRk5f
dmtRdWV1ZVNldFBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29udGV4dCwgInZr
UXVldWVTZXRQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCIpOworKyAgICB0YWJsZS0+dmtS
ZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgPSAoUEZOX3ZrUmVsZWFzZVBlcmZv
cm1hbmNlQ29uZmlndXJhdGlvbklOVEVMKWxvYWQoY29udGV4dCwgInZrUmVsZWFzZVBlcmZvcm1h
bmNlQ29uZmlndXJhdGlvbklOVEVMIik7CisrICAgIHRhYmxlLT52a1VuaW5pdGlhbGl6ZVBlcmZv
cm1hbmNlQXBpSU5URUwgPSAoUEZOX3ZrVW5pbml0aWFsaXplUGVyZm9ybWFuY2VBcGlJTlRFTCls
b2FkKGNvbnRleHQsICJ2a1VuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19JTlRFTF9wZXJmb3JtYW5jZV9xdWVyeSkgKi8KKyAjaWYgZGVmaW5l
ZChWS19LSFJfYmluZF9tZW1vcnkyKQorLQl0YWJsZS0+dmtCaW5kQnVmZmVyTWVtb3J5MktIUiA9
IChQRk5fdmtCaW5kQnVmZmVyTWVtb3J5MktIUilsb2FkKGNvbnRleHQsICJ2a0JpbmRCdWZmZXJN
ZW1vcnkyS0hSIik7CistCXRhYmxlLT52a0JpbmRJbWFnZU1lbW9yeTJLSFIgPSAoUEZOX3ZrQmlu
ZEltYWdlTWVtb3J5MktIUilsb2FkKGNvbnRleHQsICJ2a0JpbmRJbWFnZU1lbW9yeTJLSFIiKTsK
KysgICAgdGFibGUtPnZrQmluZEJ1ZmZlck1lbW9yeTJLSFIgPSAoUEZOX3ZrQmluZEJ1ZmZlck1l
bW9yeTJLSFIpbG9hZChjb250ZXh0LCAidmtCaW5kQnVmZmVyTWVtb3J5MktIUiIpOworKyAgICB0
YWJsZS0+dmtCaW5kSW1hZ2VNZW1vcnkyS0hSID0gKFBGTl92a0JpbmRJbWFnZU1lbW9yeTJLSFIp
bG9hZChjb250ZXh0LCAidmtCaW5kSW1hZ2VNZW1vcnkyS0hSIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfS0hSX2JpbmRfbWVtb3J5MikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfYnVmZmVyX2Rl
dmljZV9hZGRyZXNzKQorLQl0YWJsZS0+dmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSID0gKFBG
Tl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXRCdWZmZXJE
ZXZpY2VBZGRyZXNzS0hSIik7CistCXRhYmxlLT52a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRy
ZXNzS0hSID0gKFBGTl92a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSKWxvYWQoY29u
dGV4dCwgInZrR2V0QnVmZmVyT3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIiKTsKKy0JdGFibGUtPnZr
R2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIgPSAoUEZOX3ZrR2V0RGV2aWNl
TWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIpbG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VN
ZW1vcnlPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiIpOworKyAgICB0YWJsZS0+dmtHZXRCdWZmZXJE
ZXZpY2VBZGRyZXNzS0hSID0gKFBGTl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFIpbG9hZChj
b250ZXh0LCAidmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hSIik7CisrICAgIHRhYmxlLT52a0dl
dEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSID0gKFBGTl92a0dldEJ1ZmZlck9wYXF1ZUNh
cHR1cmVBZGRyZXNzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyT3BhcXVlQ2FwdHVyZUFk
ZHJlc3NLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFk
ZHJlc3NLSFIgPSAoUEZOX3ZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFIp
bG9hZChjb250ZXh0LCAidmtHZXREZXZpY2VNZW1vcnlPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiIp
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9idWZmZXJfZGV2aWNlX2FkZHJlc3MpICovCisg
I2lmIGRlZmluZWQoVktfS0hSX2NyZWF0ZV9yZW5kZXJwYXNzMikKKy0JdGFibGUtPnZrQ21kQmVn
aW5SZW5kZXJQYXNzMktIUiA9IChQRk5fdmtDbWRCZWdpblJlbmRlclBhc3MyS0hSKWxvYWQoY29u
dGV4dCwgInZrQ21kQmVnaW5SZW5kZXJQYXNzMktIUiIpOworLQl0YWJsZS0+dmtDbWRFbmRSZW5k
ZXJQYXNzMktIUiA9IChQRk5fdmtDbWRFbmRSZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQsICJ2
a0NtZEVuZFJlbmRlclBhc3MyS0hSIik7CistCXRhYmxlLT52a0NtZE5leHRTdWJwYXNzMktIUiA9
IChQRk5fdmtDbWROZXh0U3VicGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDbWROZXh0U3VicGFz
czJLSFIiKTsKKy0JdGFibGUtPnZrQ3JlYXRlUmVuZGVyUGFzczJLSFIgPSAoUEZOX3ZrQ3JlYXRl
UmVuZGVyUGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVSZW5kZXJQYXNzMktIUiIpOwor
KyAgICB0YWJsZS0+dmtDbWRCZWdpblJlbmRlclBhc3MyS0hSID0gKFBGTl92a0NtZEJlZ2luUmVu
ZGVyUGFzczJLSFIpbG9hZChjb250ZXh0LCAidmtDbWRCZWdpblJlbmRlclBhc3MyS0hSIik7Cisr
ICAgIHRhYmxlLT52a0NtZEVuZFJlbmRlclBhc3MyS0hSID0gKFBGTl92a0NtZEVuZFJlbmRlclBh
c3MyS0hSKWxvYWQoY29udGV4dCwgInZrQ21kRW5kUmVuZGVyUGFzczJLSFIiKTsKKysgICAgdGFi
bGUtPnZrQ21kTmV4dFN1YnBhc3MyS0hSID0gKFBGTl92a0NtZE5leHRTdWJwYXNzMktIUilsb2Fk
KGNvbnRleHQsICJ2a0NtZE5leHRTdWJwYXNzMktIUiIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVS
ZW5kZXJQYXNzMktIUiA9IChQRk5fdmtDcmVhdGVSZW5kZXJQYXNzMktIUilsb2FkKGNvbnRleHQs
ICJ2a0NyZWF0ZVJlbmRlclBhc3MyS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2Ny
ZWF0ZV9yZW5kZXJwYXNzMikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZGVzY3JpcHRvcl91cGRh
dGVfdGVtcGxhdGUpCistCXRhYmxlLT52a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtI
UiA9IChQRk5fdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIpbG9hZChjb250ZXh0
LCAidmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIiKTsKKy0JdGFibGUtPnZrRGVz
dHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRv
clVwZGF0ZVRlbXBsYXRlS0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JVcGRh
dGVUZW1wbGF0ZUtIUiIpOworLQl0YWJsZS0+dmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBs
YXRlS0hSID0gKFBGTl92a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIpbG9hZChj
b250ZXh0LCAidmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSIik7CisrICAgIHRh
YmxlLT52a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5fdmtDcmVhdGVE
ZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVEZXNjcmlw
dG9yVXBkYXRlVGVtcGxhdGVLSFIiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveURlc2NyaXB0b3JV
cGRhdGVUZW1wbGF0ZUtIUiA9IChQRk5fdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRl
S0hSKWxvYWQoY29udGV4dCwgInZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiIp
OworKyAgICB0YWJsZS0+dmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSID0gKFBG
Tl92a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFIpbG9hZChjb250ZXh0LCAidmtV
cGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfS0hSX2Rlc2NyaXB0b3JfdXBkYXRlX3RlbXBsYXRlKSAqLworICNpZiBkZWZpbmVkKFZLX0tI
Ul9kZXZpY2VfZ3JvdXApCistCXRhYmxlLT52a0NtZERpc3BhdGNoQmFzZUtIUiA9IChQRk5fdmtD
bWREaXNwYXRjaEJhc2VLSFIpbG9hZChjb250ZXh0LCAidmtDbWREaXNwYXRjaEJhc2VLSFIiKTsK
Ky0JdGFibGUtPnZrQ21kU2V0RGV2aWNlTWFza0tIUiA9IChQRk5fdmtDbWRTZXREZXZpY2VNYXNr
S0hSKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGV2aWNlTWFza0tIUiIpOworLQl0YWJsZS0+dmtH
ZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiA9IChQRk5fdmtHZXREZXZpY2VHcm91
cFBlZXJNZW1vcnlGZWF0dXJlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwUGVl
ck1lbW9yeUZlYXR1cmVzS0hSIik7CisrICAgIHRhYmxlLT52a0NtZERpc3BhdGNoQmFzZUtIUiA9
IChQRk5fdmtDbWREaXNwYXRjaEJhc2VLSFIpbG9hZChjb250ZXh0LCAidmtDbWREaXNwYXRjaEJh
c2VLSFIiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0RGV2aWNlTWFza0tIUiA9IChQRk5fdmtDbWRT
ZXREZXZpY2VNYXNrS0hSKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RGV2aWNlTWFza0tIUiIpOwor
KyAgICB0YWJsZS0+dmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiA9IChQRk5f
dmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dl
dERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzS0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfS0hSX2RldmljZV9ncm91cCkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZGlzcGxheV9zd2Fw
Y2hhaW4pCistCXRhYmxlLT52a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNLSFIgPSAoUEZOX3ZrQ3Jl
YXRlU2hhcmVkU3dhcGNoYWluc0tIUilsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZVNoYXJlZFN3YXBj
aGFpbnNLSFIiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUiA9IChQ
Rk5fdmtDcmVhdGVTaGFyZWRTd2FwY2hhaW5zS0hSKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlU2hh
cmVkU3dhcGNoYWluc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kaXNwbGF5X3N3
YXBjaGFpbikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZHJhd19pbmRpcmVjdF9jb3VudCkKKy0J
dGFibGUtPnZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50S0hSID0gKFBGTl92a0NtZERyYXdJ
bmRleGVkSW5kaXJlY3RDb3VudEtIUilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRleGVkSW5k
aXJlY3RDb3VudEtIUiIpOworLQl0YWJsZS0+dmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUiA9IChQ
Rk5fdmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdJbmRp
cmVjdENvdW50S0hSIik7CisrICAgIHRhYmxlLT52a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3Vu
dEtIUiA9IChQRk5fdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIpbG9hZChjb250ZXh0
LCAidmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFIiKTsKKysgICAgdGFibGUtPnZrQ21k
RHJhd0luZGlyZWN0Q291bnRLSFIgPSAoUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFIpbG9h
ZChjb250ZXh0LCAidmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUiIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX0tIUl9kcmF3X2luZGlyZWN0X2NvdW50KSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9l
eHRlcm5hbF9mZW5jZV9mZCkKKy0JdGFibGUtPnZrR2V0RmVuY2VGZEtIUiA9IChQRk5fdmtHZXRG
ZW5jZUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0RmVuY2VGZEtIUiIpOworLQl0YWJsZS0+dmtJ
bXBvcnRGZW5jZUZkS0hSID0gKFBGTl92a0ltcG9ydEZlbmNlRmRLSFIpbG9hZChjb250ZXh0LCAi
dmtJbXBvcnRGZW5jZUZkS0hSIik7CisrICAgIHRhYmxlLT52a0dldEZlbmNlRmRLSFIgPSAoUEZO
X3ZrR2V0RmVuY2VGZEtIUilsb2FkKGNvbnRleHQsICJ2a0dldEZlbmNlRmRLSFIiKTsKKysgICAg
dGFibGUtPnZrSW1wb3J0RmVuY2VGZEtIUiA9IChQRk5fdmtJbXBvcnRGZW5jZUZkS0hSKWxvYWQo
Y29udGV4dCwgInZrSW1wb3J0RmVuY2VGZEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tI
Ul9leHRlcm5hbF9mZW5jZV9mZCkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVu
Y2Vfd2luMzIpCistCXRhYmxlLT52a0dldEZlbmNlV2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrR2V0
RmVuY2VXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0dldEZlbmNlV2luMzJIYW5kbGVL
SFIiKTsKKy0JdGFibGUtPnZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtJbXBv
cnRGZW5jZVdpbjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrSW1wb3J0RmVuY2VXaW4zMkhh
bmRsZUtIUiIpOworKyAgICB0YWJsZS0+dmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSID0gKFBGTl92
a0dldEZlbmNlV2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAidmtHZXRGZW5jZVdpbjMySGFu
ZGxlS0hSIik7CisrICAgIHRhYmxlLT52a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIgPSAoUEZO
X3ZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydEZlbmNl
V2luMzJIYW5kbGVLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVu
Y2Vfd2luMzIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX21lbW9yeV9mZCkKKy0J
dGFibGUtPnZrR2V0TWVtb3J5RmRLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5RmRLSFIpbG9hZChjb250
ZXh0LCAidmtHZXRNZW1vcnlGZEtIUiIpOworLQl0YWJsZS0+dmtHZXRNZW1vcnlGZFByb3BlcnRp
ZXNLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSIik7CisrICAgIHRhYmxlLT52a0dldE1lbW9yeUZkS0hS
ID0gKFBGTl92a0dldE1lbW9yeUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5RmRLSFIi
KTsKKysgICAgdGFibGUtPnZrR2V0TWVtb3J5RmRQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldE1l
bW9yeUZkUHJvcGVydGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeUZkUHJvcGVydGll
c0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9tZW1vcnlfZmQpICov
CisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX21lbW9yeV93aW4zMikKKy0JdGFibGUtPnZr
R2V0TWVtb3J5V2luMzJIYW5kbGVLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5V2luMzJIYW5kbGVLSFIp
bG9hZChjb250ZXh0LCAidmtHZXRNZW1vcnlXaW4zMkhhbmRsZUtIUiIpOworLQl0YWJsZS0+dmtH
ZXRNZW1vcnlXaW4zMkhhbmRsZVByb3BlcnRpZXNLSFIgPSAoUEZOX3ZrR2V0TWVtb3J5V2luMzJI
YW5kbGVQcm9wZXJ0aWVzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5V2luMzJIYW5kbGVQ
cm9wZXJ0aWVzS0hSIik7CisrICAgIHRhYmxlLT52a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSID0g
KFBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0TWVtb3J5
V2luMzJIYW5kbGVLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0TWVtb3J5V2luMzJIYW5kbGVQcm9w
ZXJ0aWVzS0hSID0gKFBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUilsb2Fk
KGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUiIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9tZW1vcnlfd2luMzIpICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9mZCkKKy0JdGFibGUtPnZrR2V0U2VtYXBob3Jl
RmRLSFIgPSAoUEZOX3ZrR2V0U2VtYXBob3JlRmRLSFIpbG9hZChjb250ZXh0LCAidmtHZXRTZW1h
cGhvcmVGZEtIUiIpOworLQl0YWJsZS0+dmtJbXBvcnRTZW1hcGhvcmVGZEtIUiA9IChQRk5fdmtJ
bXBvcnRTZW1hcGhvcmVGZEtIUilsb2FkKGNvbnRleHQsICJ2a0ltcG9ydFNlbWFwaG9yZUZkS0hS
Iik7CisrICAgIHRhYmxlLT52a0dldFNlbWFwaG9yZUZkS0hSID0gKFBGTl92a0dldFNlbWFwaG9y
ZUZkS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlRmRLSFIiKTsKKysgICAgdGFibGUt
PnZrSW1wb3J0U2VtYXBob3JlRmRLSFIgPSAoUEZOX3ZrSW1wb3J0U2VtYXBob3JlRmRLSFIpbG9h
ZChjb250ZXh0LCAidmtJbXBvcnRTZW1hcGhvcmVGZEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0tIUl9leHRlcm5hbF9zZW1hcGhvcmVfZmQpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4
dGVybmFsX3NlbWFwaG9yZV93aW4zMikKKy0JdGFibGUtPnZrR2V0U2VtYXBob3JlV2luMzJIYW5k
bGVLSFIgPSAoUEZOX3ZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAi
dmtHZXRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUiIpOworLQl0YWJsZS0+dmtJbXBvcnRTZW1hcGhv
cmVXaW4zMkhhbmRsZUtIUiA9IChQRk5fdmtJbXBvcnRTZW1hcGhvcmVXaW4zMkhhbmRsZUtIUils
b2FkKGNvbnRleHQsICJ2a0ltcG9ydFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSIik7CisrICAgIHRh
YmxlLT52a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSID0gKFBGTl92a0dldFNlbWFwaG9yZVdp
bjMySGFuZGxlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIi
KTsKKysgICAgdGFibGUtPnZrSW1wb3J0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIgPSAoUEZOX3Zr
SW1wb3J0U2VtYXBob3JlV2luMzJIYW5kbGVLSFIpbG9hZChjb250ZXh0LCAidmtJbXBvcnRTZW1h
cGhvcmVXaW4zMkhhbmRsZUtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5h
bF9zZW1hcGhvcmVfd2luMzIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2dldF9tZW1vcnlfcmVx
dWlyZW1lbnRzMikKKy0JdGFibGUtPnZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9
IChQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUiIpOworLQl0YWJsZS0+dmtHZXRJbWFnZU1l
bW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMy
S0hSKWxvYWQoY29udGV4dCwgInZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7Cist
CXRhYmxlLT52a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtH
ZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRJ
bWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czJLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJl
bWVudHMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktI
UiIpOworKyAgICB0YWJsZS0+dmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czJLSFIgPSAoUEZO
X3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSKWxvYWQoY29udGV4dCwgInZrR2V0SW1h
Z2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSIik7CisrICAgIHRhYmxlLT52a0dldEltYWdlU3BhcnNl
TWVtb3J5UmVxdWlyZW1lbnRzMktIUiA9IChQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVp
cmVtZW50czJLSFIpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVt
ZW50czJLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZ2V0X21lbW9yeV9yZXF1aXJl
bWVudHMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTEpCistCXRhYmxlLT52
a1RyaW1Db21tYW5kUG9vbEtIUiA9IChQRk5fdmtUcmltQ29tbWFuZFBvb2xLSFIpbG9hZChjb250
ZXh0LCAidmtUcmltQ29tbWFuZFBvb2xLSFIiKTsKKysgICAgdGFibGUtPnZrVHJpbUNvbW1hbmRQ
b29sS0hSID0gKFBGTl92a1RyaW1Db21tYW5kUG9vbEtIUilsb2FkKGNvbnRleHQsICJ2a1RyaW1D
b21tYW5kUG9vbEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTEp
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX21haW50ZW5hbmNlMykKKy0JdGFibGUtPnZrR2V0RGVz
Y3JpcHRvclNldExheW91dFN1cHBvcnRLSFIgPSAoUEZOX3ZrR2V0RGVzY3JpcHRvclNldExheW91
dFN1cHBvcnRLSFIpbG9hZChjb250ZXh0LCAidmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9y
dEtIUiIpOworKyAgICB0YWJsZS0+dmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydEtIUiA9
IChQRk5fdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydEtIUilsb2FkKGNvbnRleHQsICJ2
a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0S0hSIik7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfS0hSX21haW50ZW5hbmNlMykgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfcGVyZm9ybWFuY2Vf
cXVlcnkpCistCXRhYmxlLT52a0FjcXVpcmVQcm9maWxpbmdMb2NrS0hSID0gKFBGTl92a0FjcXVp
cmVQcm9maWxpbmdMb2NrS0hSKWxvYWQoY29udGV4dCwgInZrQWNxdWlyZVByb2ZpbGluZ0xvY2tL
SFIiKTsKKy0JdGFibGUtPnZrUmVsZWFzZVByb2ZpbGluZ0xvY2tLSFIgPSAoUEZOX3ZrUmVsZWFz
ZVByb2ZpbGluZ0xvY2tLSFIpbG9hZChjb250ZXh0LCAidmtSZWxlYXNlUHJvZmlsaW5nTG9ja0tI
UiIpOworKyAgICB0YWJsZS0+dmtBY3F1aXJlUHJvZmlsaW5nTG9ja0tIUiA9IChQRk5fdmtBY3F1
aXJlUHJvZmlsaW5nTG9ja0tIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVQcm9maWxpbmdMb2Nr
S0hSIik7CisrICAgIHRhYmxlLT52a1JlbGVhc2VQcm9maWxpbmdMb2NrS0hSID0gKFBGTl92a1Jl
bGVhc2VQcm9maWxpbmdMb2NrS0hSKWxvYWQoY29udGV4dCwgInZrUmVsZWFzZVByb2ZpbGluZ0xv
Y2tLSFIiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfcGVyZm9ybWFuY2VfcXVlcnkpICov
CisgI2lmIGRlZmluZWQoVktfS0hSX3BpcGVsaW5lX2V4ZWN1dGFibGVfcHJvcGVydGllcykKKy0J
dGFibGUtPnZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIg
PSAoUEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIp
bG9hZChjb250ZXh0LCAidmtHZXRQaXBlbGluZUV4ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0
aW9uc0tIUiIpOworLQl0YWJsZS0+dmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hS
ID0gKFBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0
LCAidmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSIik7CistCXRhYmxlLT52a0dl
dFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRpc3RpY3NLSFIgPSAoUEZOX3ZrR2V0UGlwZWxpbmVFeGVj
dXRhYmxlU3RhdGlzdGljc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFBpcGVsaW5lRXhlY3V0YWJs
ZVN0YXRpc3RpY3NLSFIiKTsKKysgICAgdGFibGUtPnZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50
ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIgPSAoUEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlSW50
ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaXBlbGluZUV4ZWN1
dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9uc0tIUiIpOworKyAgICB0YWJsZS0+dmtHZXRQaXBl
bGluZUV4ZWN1dGFibGVQcm9wZXJ0aWVzS0hSID0gKFBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJs
ZVByb3BlcnRpZXNLSFIpbG9hZChjb250ZXh0LCAidmtHZXRQaXBlbGluZUV4ZWN1dGFibGVQcm9w
ZXJ0aWVzS0hSIik7CisrICAgIHRhYmxlLT52a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRpc3Rp
Y3NLSFIgPSAoUEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlzdGljc0tIUilsb2FkKGNv
bnRleHQsICJ2a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRpc3RpY3NLSFIiKTsKKyAjZW5kaWYg
LyogZGVmaW5lZChWS19LSFJfcGlwZWxpbmVfZXhlY3V0YWJsZV9wcm9wZXJ0aWVzKSAqLworICNp
ZiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3IpCistCXRhYmxlLT52a0NtZFB1c2hEZXNj
cmlwdG9yU2V0S0hSID0gKFBGTl92a0NtZFB1c2hEZXNjcmlwdG9yU2V0S0hSKWxvYWQoY29udGV4
dCwgInZrQ21kUHVzaERlc2NyaXB0b3JTZXRLSFIiKTsKKysgICAgdGFibGUtPnZrQ21kUHVzaERl
c2NyaXB0b3JTZXRLSFIgPSAoUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JTZXRLSFIpbG9hZChjb250
ZXh0LCAidmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZL
X0tIUl9wdXNoX2Rlc2NyaXB0b3IpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3NhbXBsZXJfeWNi
Y3JfY29udmVyc2lvbikKKy0JdGFibGUtPnZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbktI
UiA9IChQRk5fdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSKWxvYWQoY29udGV4dCwg
InZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbktIUiIpOworLQl0YWJsZS0+dmtEZXN0cm95
U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiA9IChQRk5fdmtEZXN0cm95U2FtcGxlclljYmNyQ29u
dmVyc2lvbktIUilsb2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9u
S0hSIik7CisrICAgIHRhYmxlLT52a0NyZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIgPSAo
UEZOX3ZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbktIUilsb2FkKGNvbnRleHQsICJ2a0Ny
ZWF0ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIiKTsKKysgICAgdGFibGUtPnZrRGVzdHJveVNh
bXBsZXJZY2JjckNvbnZlcnNpb25LSFIgPSAoUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZl
cnNpb25LSFIpbG9hZChjb250ZXh0LCAidmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbktI
UiIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9zYW1wbGVyX3ljYmNyX2NvbnZlcnNpb24p
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX3NoYXJlZF9wcmVzZW50YWJsZV9pbWFnZSkKKy0JdGFi
bGUtPnZrR2V0U3dhcGNoYWluU3RhdHVzS0hSID0gKFBGTl92a0dldFN3YXBjaGFpblN0YXR1c0tI
Uilsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBjaGFpblN0YXR1c0tIUiIpOworKyAgICB0YWJsZS0+
dmtHZXRTd2FwY2hhaW5TdGF0dXNLSFIgPSAoUEZOX3ZrR2V0U3dhcGNoYWluU3RhdHVzS0hSKWxv
YWQoY29udGV4dCwgInZrR2V0U3dhcGNoYWluU3RhdHVzS0hSIik7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfS0hSX3NoYXJlZF9wcmVzZW50YWJsZV9pbWFnZSkgKi8KKyAjaWYgZGVmaW5lZChWS19L
SFJfc3dhcGNoYWluKQorLQl0YWJsZS0+dmtBY3F1aXJlTmV4dEltYWdlS0hSID0gKFBGTl92a0Fj
cXVpcmVOZXh0SW1hZ2VLSFIpbG9hZChjb250ZXh0LCAidmtBY3F1aXJlTmV4dEltYWdlS0hSIik7
CistCXRhYmxlLT52a0NyZWF0ZVN3YXBjaGFpbktIUiA9IChQRk5fdmtDcmVhdGVTd2FwY2hhaW5L
SFIpbG9hZChjb250ZXh0LCAidmtDcmVhdGVTd2FwY2hhaW5LSFIiKTsKKy0JdGFibGUtPnZrRGVz
dHJveVN3YXBjaGFpbktIUiA9IChQRk5fdmtEZXN0cm95U3dhcGNoYWluS0hSKWxvYWQoY29udGV4
dCwgInZrRGVzdHJveVN3YXBjaGFpbktIUiIpOworLQl0YWJsZS0+dmtHZXRTd2FwY2hhaW5JbWFn
ZXNLSFIgPSAoUEZOX3ZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSKWxvYWQoY29udGV4dCwgInZrR2V0
U3dhcGNoYWluSW1hZ2VzS0hSIik7CistCXRhYmxlLT52a1F1ZXVlUHJlc2VudEtIUiA9IChQRk5f
dmtRdWV1ZVByZXNlbnRLSFIpbG9hZChjb250ZXh0LCAidmtRdWV1ZVByZXNlbnRLSFIiKTsKKysg
ICAgdGFibGUtPnZrQWNxdWlyZU5leHRJbWFnZUtIUiA9IChQRk5fdmtBY3F1aXJlTmV4dEltYWdl
S0hSKWxvYWQoY29udGV4dCwgInZrQWNxdWlyZU5leHRJbWFnZUtIUiIpOworKyAgICB0YWJsZS0+
dmtDcmVhdGVTd2FwY2hhaW5LSFIgPSAoUEZOX3ZrQ3JlYXRlU3dhcGNoYWluS0hSKWxvYWQoY29u
dGV4dCwgInZrQ3JlYXRlU3dhcGNoYWluS0hSIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lTd2Fw
Y2hhaW5LSFIgPSAoUEZOX3ZrRGVzdHJveVN3YXBjaGFpbktIUilsb2FkKGNvbnRleHQsICJ2a0Rl
c3Ryb3lTd2FwY2hhaW5LSFIiKTsKKysgICAgdGFibGUtPnZrR2V0U3dhcGNoYWluSW1hZ2VzS0hS
ID0gKFBGTl92a0dldFN3YXBjaGFpbkltYWdlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldFN3YXBj
aGFpbkltYWdlc0tIUiIpOworKyAgICB0YWJsZS0+dmtRdWV1ZVByZXNlbnRLSFIgPSAoUEZOX3Zr
UXVldWVQcmVzZW50S0hSKWxvYWQoY29udGV4dCwgInZrUXVldWVQcmVzZW50S0hSIik7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJf
dGltZWxpbmVfc2VtYXBob3JlKQorLQl0YWJsZS0+dmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVL
SFIgPSAoUEZOX3ZrR2V0U2VtYXBob3JlQ291bnRlclZhbHVlS0hSKWxvYWQoY29udGV4dCwgInZr
R2V0U2VtYXBob3JlQ291bnRlclZhbHVlS0hSIik7CistCXRhYmxlLT52a1NpZ25hbFNlbWFwaG9y
ZUtIUiA9IChQRk5fdmtTaWduYWxTZW1hcGhvcmVLSFIpbG9hZChjb250ZXh0LCAidmtTaWduYWxT
ZW1hcGhvcmVLSFIiKTsKKy0JdGFibGUtPnZrV2FpdFNlbWFwaG9yZXNLSFIgPSAoUEZOX3ZrV2Fp
dFNlbWFwaG9yZXNLSFIpbG9hZChjb250ZXh0LCAidmtXYWl0U2VtYXBob3Jlc0tIUiIpOworKyAg
ICB0YWJsZS0+dmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVLSFIgPSAoUEZOX3ZrR2V0U2VtYXBo
b3JlQ291bnRlclZhbHVlS0hSKWxvYWQoY29udGV4dCwgInZrR2V0U2VtYXBob3JlQ291bnRlclZh
bHVlS0hSIik7CisrICAgIHRhYmxlLT52a1NpZ25hbFNlbWFwaG9yZUtIUiA9IChQRk5fdmtTaWdu
YWxTZW1hcGhvcmVLSFIpbG9hZChjb250ZXh0LCAidmtTaWduYWxTZW1hcGhvcmVLSFIiKTsKKysg
ICAgdGFibGUtPnZrV2FpdFNlbWFwaG9yZXNLSFIgPSAoUEZOX3ZrV2FpdFNlbWFwaG9yZXNLSFIp
bG9hZChjb250ZXh0LCAidmtXYWl0U2VtYXBob3Jlc0tIUiIpOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0tIUl90aW1lbGluZV9zZW1hcGhvcmUpICovCisgI2lmIGRlZmluZWQoVktfTlZYX2Rldmlj
ZV9nZW5lcmF0ZWRfY29tbWFuZHMpCistCXRhYmxlLT52a0NtZFByb2Nlc3NDb21tYW5kc05WWCA9
IChQRk5fdmtDbWRQcm9jZXNzQ29tbWFuZHNOVlgpbG9hZChjb250ZXh0LCAidmtDbWRQcm9jZXNz
Q29tbWFuZHNOVlgiKTsKKy0JdGFibGUtPnZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlgg
PSAoUEZOX3ZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlgpbG9hZChjb250ZXh0LCAidmtD
bWRSZXNlcnZlU3BhY2VGb3JDb21tYW5kc05WWCIpOworLQl0YWJsZS0+dmtDcmVhdGVJbmRpcmVj
dENvbW1hbmRzTGF5b3V0TlZYID0gKFBGTl92a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNMYXlvdXRO
VlgpbG9hZChjb250ZXh0LCAidmtDcmVhdGVJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYIik7Cist
CXRhYmxlLT52a0NyZWF0ZU9iamVjdFRhYmxlTlZYID0gKFBGTl92a0NyZWF0ZU9iamVjdFRhYmxl
TlZYKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlT2JqZWN0VGFibGVOVlgiKTsKKy0JdGFibGUtPnZr
RGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlggPSAoUEZOX3ZrRGVzdHJveUluZGlyZWN0
Q29tbWFuZHNMYXlvdXROVlgpbG9hZChjb250ZXh0LCAidmtEZXN0cm95SW5kaXJlY3RDb21tYW5k
c0xheW91dE5WWCIpOworLQl0YWJsZS0+dmtEZXN0cm95T2JqZWN0VGFibGVOVlggPSAoUEZOX3Zr
RGVzdHJveU9iamVjdFRhYmxlTlZYKWxvYWQoY29udGV4dCwgInZrRGVzdHJveU9iamVjdFRhYmxl
TlZYIik7CistCXRhYmxlLT52a1JlZ2lzdGVyT2JqZWN0c05WWCA9IChQRk5fdmtSZWdpc3Rlck9i
amVjdHNOVlgpbG9hZChjb250ZXh0LCAidmtSZWdpc3Rlck9iamVjdHNOVlgiKTsKKy0JdGFibGUt
PnZrVW5yZWdpc3Rlck9iamVjdHNOVlggPSAoUEZOX3ZrVW5yZWdpc3Rlck9iamVjdHNOVlgpbG9h
ZChjb250ZXh0LCAidmtVbnJlZ2lzdGVyT2JqZWN0c05WWCIpOworKyAgICB0YWJsZS0+dmtDbWRQ
cm9jZXNzQ29tbWFuZHNOVlggPSAoUEZOX3ZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYKWxvYWQoY29u
dGV4dCwgInZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYIik7CisrICAgIHRhYmxlLT52a0NtZFJlc2Vy
dmVTcGFjZUZvckNvbW1hbmRzTlZYID0gKFBGTl92a0NtZFJlc2VydmVTcGFjZUZvckNvbW1hbmRz
TlZYKWxvYWQoY29udGV4dCwgInZrQ21kUmVzZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlgiKTsKKysg
ICAgdGFibGUtPnZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCA9IChQRk5fdmtDcmVh
dGVJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlSW5kaXJl
Y3RDb21tYW5kc0xheW91dE5WWCIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVPYmplY3RUYWJsZU5W
WCA9IChQRk5fdmtDcmVhdGVPYmplY3RUYWJsZU5WWClsb2FkKGNvbnRleHQsICJ2a0NyZWF0ZU9i
amVjdFRhYmxlTlZYIik7CisrICAgIHRhYmxlLT52a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5
b3V0TlZYID0gKFBGTl92a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYKWxvYWQoY29u
dGV4dCwgInZrRGVzdHJveUluZGlyZWN0Q29tbWFuZHNMYXlvdXROVlgiKTsKKysgICAgdGFibGUt
PnZrRGVzdHJveU9iamVjdFRhYmxlTlZYID0gKFBGTl92a0Rlc3Ryb3lPYmplY3RUYWJsZU5WWCls
b2FkKGNvbnRleHQsICJ2a0Rlc3Ryb3lPYmplY3RUYWJsZU5WWCIpOworKyAgICB0YWJsZS0+dmtS
ZWdpc3Rlck9iamVjdHNOVlggPSAoUEZOX3ZrUmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4
dCwgInZrUmVnaXN0ZXJPYmplY3RzTlZYIik7CisrICAgIHRhYmxlLT52a1VucmVnaXN0ZXJPYmpl
Y3RzTlZYID0gKFBGTl92a1VucmVnaXN0ZXJPYmplY3RzTlZYKWxvYWQoY29udGV4dCwgInZrVW5y
ZWdpc3Rlck9iamVjdHNOVlgiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVlhfZGV2aWNlX2dl
bmVyYXRlZF9jb21tYW5kcykgKi8KKyAjaWYgZGVmaW5lZChWS19OVlhfaW1hZ2Vfdmlld19oYW5k
bGUpCistCXRhYmxlLT52a0dldEltYWdlVmlld0hhbmRsZU5WWCA9IChQRk5fdmtHZXRJbWFnZVZp
ZXdIYW5kbGVOVlgpbG9hZChjb250ZXh0LCAidmtHZXRJbWFnZVZpZXdIYW5kbGVOVlgiKTsKKysg
ICAgdGFibGUtPnZrR2V0SW1hZ2VWaWV3SGFuZGxlTlZYID0gKFBGTl92a0dldEltYWdlVmlld0hh
bmRsZU5WWClsb2FkKGNvbnRleHQsICJ2a0dldEltYWdlVmlld0hhbmRsZU5WWCIpOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX05WWF9pbWFnZV92aWV3X2hhbmRsZSkgKi8KKyAjaWYgZGVmaW5lZChW
S19OVl9jbGlwX3NwYWNlX3dfc2NhbGluZykKKy0JdGFibGUtPnZrQ21kU2V0Vmlld3BvcnRXU2Nh
bGluZ05WID0gKFBGTl92a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOVilsb2FkKGNvbnRleHQsICJ2
a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRWaWV3cG9y
dFdTY2FsaW5nTlYgPSAoUEZOX3ZrQ21kU2V0Vmlld3BvcnRXU2NhbGluZ05WKWxvYWQoY29udGV4
dCwgInZrQ21kU2V0Vmlld3BvcnRXU2NhbGluZ05WIik7CisgI2VuZGlmIC8qIGRlZmluZWQoVktf
TlZfY2xpcF9zcGFjZV93X3NjYWxpbmcpICovCisgI2lmIGRlZmluZWQoVktfTlZfZGV2aWNlX2Rp
YWdub3N0aWNfY2hlY2twb2ludHMpCistCXRhYmxlLT52a0NtZFNldENoZWNrcG9pbnROViA9IChQ
Rk5fdmtDbWRTZXRDaGVja3BvaW50TlYpbG9hZChjb250ZXh0LCAidmtDbWRTZXRDaGVja3BvaW50
TlYiKTsKKy0JdGFibGUtPnZrR2V0UXVldWVDaGVja3BvaW50RGF0YU5WID0gKFBGTl92a0dldFF1
ZXVlQ2hlY2twb2ludERhdGFOVilsb2FkKGNvbnRleHQsICJ2a0dldFF1ZXVlQ2hlY2twb2ludERh
dGFOViIpOworKyAgICB0YWJsZS0+dmtDbWRTZXRDaGVja3BvaW50TlYgPSAoUEZOX3ZrQ21kU2V0
Q2hlY2twb2ludE5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0Q2hlY2twb2ludE5WIik7CisrICAg
IHRhYmxlLT52a0dldFF1ZXVlQ2hlY2twb2ludERhdGFOViA9IChQRk5fdmtHZXRRdWV1ZUNoZWNr
cG9pbnREYXRhTlYpbG9hZChjb250ZXh0LCAidmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYiKTsK
KyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9kZXZpY2VfZGlhZ25vc3RpY19jaGVja3BvaW50cykg
Ki8KKyAjaWYgZGVmaW5lZChWS19OVl9leHRlcm5hbF9tZW1vcnlfd2luMzIpCistCXRhYmxlLT52
a0dldE1lbW9yeVdpbjMySGFuZGxlTlYgPSAoUEZOX3ZrR2V0TWVtb3J5V2luMzJIYW5kbGVOVils
b2FkKGNvbnRleHQsICJ2a0dldE1lbW9yeVdpbjMySGFuZGxlTlYiKTsKKysgICAgdGFibGUtPnZr
R2V0TWVtb3J5V2luMzJIYW5kbGVOViA9IChQRk5fdmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WKWxv
YWQoY29udGV4dCwgInZrR2V0TWVtb3J5V2luMzJIYW5kbGVOViIpOworICNlbmRpZiAvKiBkZWZp
bmVkKFZLX05WX2V4dGVybmFsX21lbW9yeV93aW4zMikgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9t
ZXNoX3NoYWRlcikKKy0JdGFibGUtPnZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROViA9
IChQRk5fdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WKWxvYWQoY29udGV4dCwgInZr
Q21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROViIpOworLQl0YWJsZS0+dmtDbWREcmF3TWVz
aFRhc2tzSW5kaXJlY3ROViA9IChQRk5fdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3ROVilsb2Fk
KGNvbnRleHQsICJ2a0NtZERyYXdNZXNoVGFza3NJbmRpcmVjdE5WIik7CistCXRhYmxlLT52a0Nt
ZERyYXdNZXNoVGFza3NOViA9IChQRk5fdmtDbWREcmF3TWVzaFRhc2tzTlYpbG9hZChjb250ZXh0
LCAidmtDbWREcmF3TWVzaFRhc2tzTlYiKTsKKysgICAgdGFibGUtPnZrQ21kRHJhd01lc2hUYXNr
c0luZGlyZWN0Q291bnROViA9IChQRk5fdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5W
KWxvYWQoY29udGV4dCwgInZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROViIpOworKyAg
ICB0YWJsZS0+dmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3ROViA9IChQRk5fdmtDbWREcmF3TWVz
aFRhc2tzSW5kaXJlY3ROVilsb2FkKGNvbnRleHQsICJ2a0NtZERyYXdNZXNoVGFza3NJbmRpcmVj
dE5WIik7CisrICAgIHRhYmxlLT52a0NtZERyYXdNZXNoVGFza3NOViA9IChQRk5fdmtDbWREcmF3
TWVzaFRhc2tzTlYpbG9hZChjb250ZXh0LCAidmtDbWREcmF3TWVzaFRhc2tzTlYiKTsKKyAjZW5k
aWYgLyogZGVmaW5lZChWS19OVl9tZXNoX3NoYWRlcikgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9y
YXlfdHJhY2luZykKKy0JdGFibGUtPnZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5W
ID0gKFBGTl92a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlOVilsb2FkKGNvbnRleHQs
ICJ2a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlOViIpOworLQl0YWJsZS0+dmtDbWRC
dWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WID0gKFBGTl92a0NtZEJ1aWxkQWNjZWxlcmF0aW9u
U3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVy
ZU5WIik7CistCXRhYmxlLT52a0NtZENvcHlBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5f
dmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5
QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsKKy0JdGFibGUtPnZrQ21kVHJhY2VSYXlzTlYgPSAo
UEZOX3ZrQ21kVHJhY2VSYXlzTlYpbG9hZChjb250ZXh0LCAidmtDbWRUcmFjZVJheXNOViIpOwor
LQl0YWJsZS0+dmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYgPSAo
UEZOX3ZrQ21kV3JpdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WKWxvYWQoY29u
dGV4dCwgInZrQ21kV3JpdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WIik7Cist
CXRhYmxlLT52a0NvbXBpbGVEZWZlcnJlZE5WID0gKFBGTl92a0NvbXBpbGVEZWZlcnJlZE5WKWxv
YWQoY29udGV4dCwgInZrQ29tcGlsZURlZmVycmVkTlYiKTsKKy0JdGFibGUtPnZrQ3JlYXRlQWNj
ZWxlcmF0aW9uU3RydWN0dXJlTlYgPSAoUEZOX3ZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYpbG9hZChjb250ZXh0LCAidmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOworLQl0
YWJsZS0+dmtDcmVhdGVSYXlUcmFjaW5nUGlwZWxpbmVzTlYgPSAoUEZOX3ZrQ3JlYXRlUmF5VHJh
Y2luZ1BpcGVsaW5lc05WKWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5l
c05WIik7CistCXRhYmxlLT52a0Rlc3Ryb3lBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5f
dmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtEZXN0cm95
QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsKKy0JdGFibGUtPnZrR2V0QWNjZWxlcmF0aW9uU3Ry
dWN0dXJlSGFuZGxlTlYgPSAoUEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFuZGxlTlYp
bG9hZChjb250ZXh0LCAidmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOViIpOworLQl0
YWJsZS0+dmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOViA9IChQ
Rk5fdmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOVilsb2FkKGNv
bnRleHQsICJ2a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeVJlcXVpcmVtZW50c05WIik7
CistCXRhYmxlLT52a0dldFJheVRyYWNpbmdTaGFkZXJHcm91cEhhbmRsZXNOViA9IChQRk5fdmtH
ZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYpbG9hZChjb250ZXh0LCAidmtHZXRSYXlU
cmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYiKTsKKysgICAgdGFibGUtPnZrQmluZEFjY2VsZXJh
dGlvblN0cnVjdHVyZU1lbW9yeU5WID0gKFBGTl92a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVN
ZW1vcnlOVilsb2FkKGNvbnRleHQsICJ2a0JpbmRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlO
ViIpOworKyAgICB0YWJsZS0+dmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WID0gKFBG
Tl92a0NtZEJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtDbWRC
dWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIik7CisrICAgIHRhYmxlLT52a0NtZENvcHlBY2Nl
bGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYpbG9hZChjb250ZXh0LCAidmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYiKTsKKysg
ICAgdGFibGUtPnZrQ21kVHJhY2VSYXlzTlYgPSAoUEZOX3ZrQ21kVHJhY2VSYXlzTlYpbG9hZChj
b250ZXh0LCAidmtDbWRUcmFjZVJheXNOViIpOworKyAgICB0YWJsZS0+dmtDbWRXcml0ZUFjY2Vs
ZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYgPSAoUEZOX3ZrQ21kV3JpdGVBY2NlbGVyYXRp
b25TdHJ1Y3R1cmVzUHJvcGVydGllc05WKWxvYWQoY29udGV4dCwgInZrQ21kV3JpdGVBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVzUHJvcGVydGllc05WIik7CisrICAgIHRhYmxlLT52a0NvbXBpbGVEZWZl
cnJlZE5WID0gKFBGTl92a0NvbXBpbGVEZWZlcnJlZE5WKWxvYWQoY29udGV4dCwgInZrQ29tcGls
ZURlZmVycmVkTlYiKTsKKysgICAgdGFibGUtPnZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJl
TlYgPSAoUEZOX3ZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAi
dmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViIpOworKyAgICB0YWJsZS0+dmtDcmVhdGVS
YXlUcmFjaW5nUGlwZWxpbmVzTlYgPSAoUEZOX3ZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5lc05W
KWxvYWQoY29udGV4dCwgInZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5lc05WIik7CisrICAgIHRh
YmxlLT52a0Rlc3Ryb3lBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOViA9IChQRk5fdmtEZXN0cm95QWNj
ZWxlcmF0aW9uU3RydWN0dXJlTlYpbG9hZChjb250ZXh0LCAidmtEZXN0cm95QWNjZWxlcmF0aW9u
U3RydWN0dXJlTlYiKTsKKysgICAgdGFibGUtPnZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFu
ZGxlTlYgPSAoUEZOX3ZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlSGFuZGxlTlYpbG9hZChjb250
ZXh0LCAidmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOViIpOworKyAgICB0YWJsZS0+
dmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOViA9IChQRk5fdmtH
ZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOVilsb2FkKGNvbnRleHQs
ICJ2a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9yeVJlcXVpcmVtZW50c05WIik7CisrICAg
IHRhYmxlLT52a0dldFJheVRyYWNpbmdTaGFkZXJHcm91cEhhbmRsZXNOViA9IChQRk5fdmtHZXRS
YXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYpbG9hZChjb250ZXh0LCAidmtHZXRSYXlUcmFj
aW5nU2hhZGVyR3JvdXBIYW5kbGVzTlYiKTsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19OVl9yYXlf
dHJhY2luZykgKi8KKyAjaWYgZGVmaW5lZChWS19OVl9zY2lzc29yX2V4Y2x1c2l2ZSkKKy0JdGFi
bGUtPnZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5WID0gKFBGTl92a0NtZFNldEV4Y2x1c2l2ZVNj
aXNzb3JOVilsb2FkKGNvbnRleHQsICJ2a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOViIpOworKyAg
ICB0YWJsZS0+dmtDbWRTZXRFeGNsdXNpdmVTY2lzc29yTlYgPSAoUEZOX3ZrQ21kU2V0RXhjbHVz
aXZlU2Npc3Nvck5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5WIik7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfc2Npc3Nvcl9leGNsdXNpdmUpICovCisgI2lmIGRl
ZmluZWQoVktfTlZfc2hhZGluZ19yYXRlX2ltYWdlKQorLQl0YWJsZS0+dmtDbWRCaW5kU2hhZGlu
Z1JhdGVJbWFnZU5WID0gKFBGTl92a0NtZEJpbmRTaGFkaW5nUmF0ZUltYWdlTlYpbG9hZChjb250
ZXh0LCAidmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5WIik7CistCXRhYmxlLT52a0NtZFNldENv
YXJzZVNhbXBsZU9yZGVyTlYgPSAoUEZOX3ZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOVilsb2Fk
KGNvbnRleHQsICJ2a0NtZFNldENvYXJzZVNhbXBsZU9yZGVyTlYiKTsKKy0JdGFibGUtPnZrQ21k
U2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOViA9IChQRk5fdmtDbWRTZXRWaWV3cG9ydFNo
YWRpbmdSYXRlUGFsZXR0ZU5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0Vmlld3BvcnRTaGFkaW5n
UmF0ZVBhbGV0dGVOViIpOworKyAgICB0YWJsZS0+dmtDbWRCaW5kU2hhZGluZ1JhdGVJbWFnZU5W
ID0gKFBGTl92a0NtZEJpbmRTaGFkaW5nUmF0ZUltYWdlTlYpbG9hZChjb250ZXh0LCAidmtDbWRC
aW5kU2hhZGluZ1JhdGVJbWFnZU5WIik7CisrICAgIHRhYmxlLT52a0NtZFNldENvYXJzZVNhbXBs
ZU9yZGVyTlYgPSAoUEZOX3ZrQ21kU2V0Q29hcnNlU2FtcGxlT3JkZXJOVilsb2FkKGNvbnRleHQs
ICJ2a0NtZFNldENvYXJzZVNhbXBsZU9yZGVyTlYiKTsKKysgICAgdGFibGUtPnZrQ21kU2V0Vmll
d3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOViA9IChQRk5fdmtDbWRTZXRWaWV3cG9ydFNoYWRpbmdS
YXRlUGFsZXR0ZU5WKWxvYWQoY29udGV4dCwgInZrQ21kU2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBh
bGV0dGVOViIpOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05WX3NoYWRpbmdfcmF0ZV9pbWFnZSkg
Ki8KKyAjaWYgKGRlZmluZWQoVktfRVhUX2Z1bGxfc2NyZWVuX2V4Y2x1c2l2ZSkgJiYgZGVmaW5l
ZChWS19LSFJfZGV2aWNlX2dyb3VwKSkgfHwgKGRlZmluZWQoVktfRVhUX2Z1bGxfc2NyZWVuX2V4
Y2x1c2l2ZSkgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpCistCXRhYmxlLT52a0dldERldmlj
ZUdyb3VwU3VyZmFjZVByZXNlbnRNb2RlczJFWFQgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBTdXJm
YWNlUHJlc2VudE1vZGVzMkVYVClsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwU3VyZmFj
ZVByZXNlbnRNb2RlczJFWFQiKTsKKysgICAgdGFibGUtPnZrR2V0RGV2aWNlR3JvdXBTdXJmYWNl
UHJlc2VudE1vZGVzMkVYVCA9IChQRk5fdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9k
ZXMyRVhUKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVz
MkVYVCIpOworICNlbmRpZiAvKiAoZGVmaW5lZChWS19FWFRfZnVsbF9zY3JlZW5fZXhjbHVzaXZl
KSAmJiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApKSB8fCAoZGVmaW5lZChWS19FWFRfZnVs
bF9zY3JlZW5fZXhjbHVzaXZlKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkgKi8KKyAjaWYg
KGRlZmluZWQoVktfS0hSX2Rlc2NyaXB0b3JfdXBkYXRlX3RlbXBsYXRlKSAmJiBkZWZpbmVkKFZL
X0tIUl9wdXNoX2Rlc2NyaXB0b3IpKSB8fCAoZGVmaW5lZChWS19LSFJfcHVzaF9kZXNjcmlwdG9y
KSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JdGFibGUtPnZrQ21kUHVzaERlc2NyaXB0
b3JTZXRXaXRoVGVtcGxhdGVLSFIgPSAoUEZOX3ZrQ21kUHVzaERlc2NyaXB0b3JTZXRXaXRoVGVt
cGxhdGVLSFIpbG9hZChjb250ZXh0LCAidmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0
ZUtIUiIpOworKyAgICB0YWJsZS0+dmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtI
UiA9IChQRk5fdmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUilsb2FkKGNvbnRl
eHQsICJ2a0NtZFB1c2hEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSIik7CisgI2VuZGlmIC8q
IChkZWZpbmVkKFZLX0tIUl9kZXNjcmlwdG9yX3VwZGF0ZV90ZW1wbGF0ZSkgJiYgZGVmaW5lZChW
S19LSFJfcHVzaF9kZXNjcmlwdG9yKSkgfHwgKGRlZmluZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRv
cikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpICovCisgI2lmIChkZWZpbmVkKFZLX0tIUl9k
ZXZpY2VfZ3JvdXApICYmIGRlZmluZWQoVktfS0hSX3N1cmZhY2UpKSB8fCAoZGVmaW5lZChWS19L
SFJfc3dhcGNoYWluKSAmJiBkZWZpbmVkKFZLX1ZFUlNJT05fMV8xKSkKKy0JdGFibGUtPnZrR2V0
RGV2aWNlR3JvdXBQcmVzZW50Q2FwYWJpbGl0aWVzS0hSID0gKFBGTl92a0dldERldmljZUdyb3Vw
UHJlc2VudENhcGFiaWxpdGllc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdyb3VwUHJl
c2VudENhcGFiaWxpdGllc0tIUiIpOworLQl0YWJsZS0+dmtHZXREZXZpY2VHcm91cFN1cmZhY2VQ
cmVzZW50TW9kZXNLSFIgPSAoUEZOX3ZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVz
S0hSKWxvYWQoY29udGV4dCwgInZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hS
Iik7CisrICAgIHRhYmxlLT52a0dldERldmljZUdyb3VwUHJlc2VudENhcGFiaWxpdGllc0tIUiA9
IChQRk5fdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIpbG9hZChjb250ZXh0
LCAidmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIiKTsKKysgICAgdGFibGUt
PnZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSID0gKFBGTl92a0dldERldmlj
ZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUilsb2FkKGNvbnRleHQsICJ2a0dldERldmljZUdy
b3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiIpOworICNlbmRpZiAvKiAoZGVmaW5lZChWS19LSFJf
ZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVkKFZLX0tIUl9zdXJmYWNlKSkgfHwgKGRlZmluZWQoVktf
S0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpICovCisgI2lmIChkZWZp
bmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXApICYmIGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikpIHx8
IChkZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKQor
LQl0YWJsZS0+dmtBY3F1aXJlTmV4dEltYWdlMktIUiA9IChQRk5fdmtBY3F1aXJlTmV4dEltYWdl
MktIUilsb2FkKGNvbnRleHQsICJ2a0FjcXVpcmVOZXh0SW1hZ2UyS0hSIik7CisrICAgIHRhYmxl
LT52a0FjcXVpcmVOZXh0SW1hZ2UyS0hSID0gKFBGTl92a0FjcXVpcmVOZXh0SW1hZ2UyS0hSKWxv
YWQoY29udGV4dCwgInZrQWNxdWlyZU5leHRJbWFnZTJLSFIiKTsKKyAjZW5kaWYgLyogKGRlZmlu
ZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSkgfHwg
KGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpICov
CistCS8qIFZPTEtfR0VORVJBVEVfTE9BRF9ERVZJQ0VfVEFCTEUgKi8KKysgICAgLyogVk9MS19H
RU5FUkFURV9MT0FEX0RFVklDRV9UQUJMRSAqLworIH0KKyAKKyAjaWZkZWYgX19HTlVDX18KKy0j
CXByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGhpZGRlbikKKysjICAgcHJhZ21hIEdDQyB2aXNp
YmlsaXR5IHB1c2goaGlkZGVuKQorICNlbmRpZgorIAorIC8qIFZPTEtfR0VORVJBVEVfUFJPVE9U
WVBFU19DICovCitAQCAtMTY4Nyw3ICsxNjg3LDcgQEAgUEZOX3ZrQWNxdWlyZU5leHRJbWFnZTJL
SFIgdmtBY3F1aXJlTmV4dEltYWdlMktIUjsKKyAvKiBWT0xLX0dFTkVSQVRFX1BST1RPVFlQRVNf
QyAqLworIAorICNpZmRlZiBfX0dOVUNfXworLSMJcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBvcAor
KyMgICBwcmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCisgI2VuZGlmCisgCisgI2lmZGVmIF9fY3Bs
dXNwbHVzCitkaWZmIC0tZ2l0IGEvc3JjL3RoaXJkX3BhcnR5L3ZvbGsvdm9say5oIGIvc3JjL3Ro
aXJkX3BhcnR5L3ZvbGsvdm9say5oCitpbmRleCA4YjU5N2E1ZjIuLjg0ZjBlNTQ5MyAxMDA2NDQK
Ky0tLSBhL3NyYy90aGlyZF9wYXJ0eS92b2xrL3ZvbGsuaAorKysrIGIvc3JjL3RoaXJkX3BhcnR5
L3ZvbGsvdm9say5oCitAQCAtMTEsNyArMTEsNyBAQAorICNkZWZpbmUgVk9MS19IXworIAorICNp
ZiBkZWZpbmVkKFZVTEtBTl9IXykgJiYgIWRlZmluZWQoVktfTk9fUFJPVE9UWVBFUykKKy0jCWVy
cm9yIFRvIHVzZSB2b2xrLCB5b3UgbmVlZCB0byBkZWZpbmUgVktfTk9fUFJPVE9UWVBFUyBiZWZv
cmUgaW5jbHVkaW5nIHZ1bGthbi5oCisrIyAgIGVycm9yIFRvIHVzZSB2b2xrLCB5b3UgbmVlZCB0
byBkZWZpbmUgVktfTk9fUFJPVE9UWVBFUyBiZWZvcmUgaW5jbHVkaW5nIHZ1bGthbi5oCisgI2Vu
ZGlmCisgCisgLyogVk9MS19HRU5FUkFURV9WRVJTSU9OX0RFRklORSAqLworQEAgLTE5LDMyICsx
OSwzMiBAQAorIC8qIFZPTEtfR0VORVJBVEVfVkVSU0lPTl9ERUZJTkUgKi8KKyAKKyAjaWZuZGVm
IFZLX05PX1BST1RPVFlQRVMKKy0jCWRlZmluZSBWS19OT19QUk9UT1RZUEVTCisrIyAgIGRlZmlu
ZSBWS19OT19QUk9UT1RZUEVTCisgI2VuZGlmCisgCisgI2lmbmRlZiBWVUxLQU5fSF8KKyAjICAg
ICAgIGlmZGVmIFZPTEtfVlVMS0FOX0hfUEFUSAorICMgICAgICAgICAgICAgICBpbmNsdWRlIFZP
TEtfVlVMS0FOX0hfUEFUSAorLSMJZWxpZiBkZWZpbmVkKFZLX1VTRV9QTEFURk9STV9XSU4zMl9L
SFIpCistIwkJaW5jbHVkZSA8dnVsa2FuL3ZrX3BsYXRmb3JtLmg+CistIwkJaW5jbHVkZSA8dnVs
a2FuL3Z1bGthbl9jb3JlLmg+CisrIyAgIGVsaWYgZGVmaW5lZChWS19VU0VfUExBVEZPUk1fV0lO
MzJfS0hSKQorKyMgICAgICAgaW5jbHVkZSA8dnVsa2FuL3ZrX3BsYXRmb3JtLmg+CisrIyAgICAg
ICBpbmNsdWRlIDx2dWxrYW4vdnVsa2FuX2NvcmUuaD4KKyAKKy0JCS8qIFdoZW4gVktfVVNFX1BM
QVRGT1JNX1dJTjMyX0tIUiBpcyBkZWZpbmVkLCBpbnN0ZWFkIG9mIGluY2x1ZGluZyB2dWxrYW4u
aCBkaXJlY3RseSwgd2UgaW5jbHVkZSBpbmRpdmlkdWFsIHBhcnRzIG9mIHRoZSBTREsKKy0JCSAq
IFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGluY2x1ZGluZyA8d2luZG93cy5oPiB3aGljaCBp
cyB2ZXJ5IGhlYXZ5IC0gaXQgdGFrZXMgMjAwbXMgdG8gcGFyc2Ugd2l0aG91dCBXSU4zMl9MRUFO
X0FORF9NRUFOCistCQkgKiBhbmQgMTAwbXMgdG8gcGFyc2Ugd2l0aCBpdC4gdnVsa2FuX3dpbjMy
Lmggb25seSBuZWVkcyBhIGZldyBzeW1ib2xzIHRoYXQgYXJlIGVhc3kgdG8gcmVkZWZpbmUgb3Vy
c2VsdmVzLgorLQkJICovCistCQl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgRFdPUkQ7CistCQl0eXBl
ZGVmIGNvbnN0IHdjaGFyX3QqIExQQ1dTVFI7CistCQl0eXBlZGVmIHZvaWQqIEhBTkRMRTsKKy0J
CXR5cGVkZWYgc3RydWN0IEhJTlNUQU5DRV9fKiBISU5TVEFOQ0U7CistCQl0eXBlZGVmIHN0cnVj
dCBIV05EX18qIEhXTkQ7CistCQl0eXBlZGVmIHN0cnVjdCBITU9OSVRPUl9fKiBITU9OSVRPUjsK
Ky0JCXR5cGVkZWYgc3RydWN0IF9TRUNVUklUWV9BVFRSSUJVVEVTIFNFQ1VSSVRZX0FUVFJJQlVU
RVM7CisrICAgICAgICAvKiBXaGVuIFZLX1VTRV9QTEFURk9STV9XSU4zMl9LSFIgaXMgZGVmaW5l
ZCwgaW5zdGVhZCBvZiBpbmNsdWRpbmcgdnVsa2FuLmggZGlyZWN0bHksIHdlIGluY2x1ZGUgaW5k
aXZpZHVhbCBwYXJ0cyBvZiB0aGUgU0RLCisrICAgICAgICAgKiBUaGlzIGlzIG5lY2Vzc2FyeSB0
byBhdm9pZCBpbmNsdWRpbmcgPHdpbmRvd3MuaD4gd2hpY2ggaXMgdmVyeSBoZWF2eSAtIGl0IHRh
a2VzIDIwMG1zIHRvIHBhcnNlIHdpdGhvdXQgV0lOMzJfTEVBTl9BTkRfTUVBTgorKyAgICAgICAg
ICogYW5kIDEwMG1zIHRvIHBhcnNlIHdpdGggaXQuIHZ1bGthbl93aW4zMi5oIG9ubHkgbmVlZHMg
YSBmZXcgc3ltYm9scyB0aGF0IGFyZSBlYXN5IHRvIHJlZGVmaW5lIG91cnNlbHZlcy4KKysgICAg
ICAgICAqLworKyAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIERXT1JEOworKyAgICAgICAg
dHlwZWRlZiBjb25zdCB3Y2hhcl90KiBMUENXU1RSOworKyAgICAgICAgdHlwZWRlZiB2b2lkKiBI
QU5ETEU7CisrICAgICAgICB0eXBlZGVmIHN0cnVjdCBISU5TVEFOQ0VfXyogSElOU1RBTkNFOwor
KyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOworKyAgICAgICAgdHlwZWRlZiBz
dHJ1Y3QgSE1PTklUT1JfXyogSE1PTklUT1I7CisrICAgICAgICB0eXBlZGVmIHN0cnVjdCBfU0VD
VVJJVFlfQVRUUklCVVRFUyBTRUNVUklUWV9BVFRSSUJVVEVTOworIAorLSMJCWluY2x1ZGUgPHZ1
bGthbi92dWxrYW5fd2luMzIuaD4KKy0jCWVsc2UKKy0jCQlpbmNsdWRlIDx2dWxrYW4vdnVsa2Fu
Lmg+CistIwllbmRpZgorKyMgICAgICAgaW5jbHVkZSA8dnVsa2FuL3Z1bGthbl93aW4zMi5oPgor
KyMgICBlbHNlCisrIyAgICAgICBpbmNsdWRlIDx2dWxrYW4vdnVsa2FuLmg+CisrIyAgIGVuZGlm
CisgI2VuZGlmCisgCisgI2lmZGVmIF9fY3BsdXNwbHVzCitAQCAtMTExLDQwMyArMTExLDQwMyBA
QCB2b2lkIHZvbGtMb2FkRGV2aWNlVGFibGUoc3RydWN0IFZvbGtEZXZpY2VUYWJsZSogdGFibGUs
IFZrRGV2aWNlIGRldmljZSk7CisgICovCisgc3RydWN0IFZvbGtEZXZpY2VUYWJsZQorIHsKKy0J
LyogVk9MS19HRU5FUkFURV9ERVZJQ0VfVEFCTEUgKi8KKysgICAgLyogVk9MS19HRU5FUkFURV9E
RVZJQ0VfVEFCTEUgKi8KKyAjaWYgZGVmaW5lZChWS19WRVJTSU9OXzFfMCkKKy0JUEZOX3ZrQWxs
b2NhdGVDb21tYW5kQnVmZmVycyB2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnM7CistCVBGTl92a0Fs
bG9jYXRlRGVzY3JpcHRvclNldHMgdmtBbGxvY2F0ZURlc2NyaXB0b3JTZXRzOworLQlQRk5fdmtB
bGxvY2F0ZU1lbW9yeSB2a0FsbG9jYXRlTWVtb3J5OworLQlQRk5fdmtCZWdpbkNvbW1hbmRCdWZm
ZXIgdmtCZWdpbkNvbW1hbmRCdWZmZXI7CistCVBGTl92a0JpbmRCdWZmZXJNZW1vcnkgdmtCaW5k
QnVmZmVyTWVtb3J5OworLQlQRk5fdmtCaW5kSW1hZ2VNZW1vcnkgdmtCaW5kSW1hZ2VNZW1vcnk7
CistCVBGTl92a0NtZEJlZ2luUXVlcnkgdmtDbWRCZWdpblF1ZXJ5OworLQlQRk5fdmtDbWRCZWdp
blJlbmRlclBhc3MgdmtDbWRCZWdpblJlbmRlclBhc3M7CistCVBGTl92a0NtZEJpbmREZXNjcmlw
dG9yU2V0cyB2a0NtZEJpbmREZXNjcmlwdG9yU2V0czsKKy0JUEZOX3ZrQ21kQmluZEluZGV4QnVm
ZmVyIHZrQ21kQmluZEluZGV4QnVmZmVyOworLQlQRk5fdmtDbWRCaW5kUGlwZWxpbmUgdmtDbWRC
aW5kUGlwZWxpbmU7CistCVBGTl92a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzIHZrQ21kQmluZFZlcnRl
eEJ1ZmZlcnM7CistCVBGTl92a0NtZEJsaXRJbWFnZSB2a0NtZEJsaXRJbWFnZTsKKy0JUEZOX3Zr
Q21kQ2xlYXJBdHRhY2htZW50cyB2a0NtZENsZWFyQXR0YWNobWVudHM7CistCVBGTl92a0NtZENs
ZWFyQ29sb3JJbWFnZSB2a0NtZENsZWFyQ29sb3JJbWFnZTsKKy0JUEZOX3ZrQ21kQ2xlYXJEZXB0
aFN0ZW5jaWxJbWFnZSB2a0NtZENsZWFyRGVwdGhTdGVuY2lsSW1hZ2U7CistCVBGTl92a0NtZENv
cHlCdWZmZXIgdmtDbWRDb3B5QnVmZmVyOworLQlQRk5fdmtDbWRDb3B5QnVmZmVyVG9JbWFnZSB2
a0NtZENvcHlCdWZmZXJUb0ltYWdlOworLQlQRk5fdmtDbWRDb3B5SW1hZ2UgdmtDbWRDb3B5SW1h
Z2U7CistCVBGTl92a0NtZENvcHlJbWFnZVRvQnVmZmVyIHZrQ21kQ29weUltYWdlVG9CdWZmZXI7
CistCVBGTl92a0NtZENvcHlRdWVyeVBvb2xSZXN1bHRzIHZrQ21kQ29weVF1ZXJ5UG9vbFJlc3Vs
dHM7CistCVBGTl92a0NtZERpc3BhdGNoIHZrQ21kRGlzcGF0Y2g7CistCVBGTl92a0NtZERpc3Bh
dGNoSW5kaXJlY3QgdmtDbWREaXNwYXRjaEluZGlyZWN0OworLQlQRk5fdmtDbWREcmF3IHZrQ21k
RHJhdzsKKy0JUEZOX3ZrQ21kRHJhd0luZGV4ZWQgdmtDbWREcmF3SW5kZXhlZDsKKy0JUEZOX3Zr
Q21kRHJhd0luZGV4ZWRJbmRpcmVjdCB2a0NtZERyYXdJbmRleGVkSW5kaXJlY3Q7CistCVBGTl92
a0NtZERyYXdJbmRpcmVjdCB2a0NtZERyYXdJbmRpcmVjdDsKKy0JUEZOX3ZrQ21kRW5kUXVlcnkg
dmtDbWRFbmRRdWVyeTsKKy0JUEZOX3ZrQ21kRW5kUmVuZGVyUGFzcyB2a0NtZEVuZFJlbmRlclBh
c3M7CistCVBGTl92a0NtZEV4ZWN1dGVDb21tYW5kcyB2a0NtZEV4ZWN1dGVDb21tYW5kczsKKy0J
UEZOX3ZrQ21kRmlsbEJ1ZmZlciB2a0NtZEZpbGxCdWZmZXI7CistCVBGTl92a0NtZE5leHRTdWJw
YXNzIHZrQ21kTmV4dFN1YnBhc3M7CistCVBGTl92a0NtZFBpcGVsaW5lQmFycmllciB2a0NtZFBp
cGVsaW5lQmFycmllcjsKKy0JUEZOX3ZrQ21kUHVzaENvbnN0YW50cyB2a0NtZFB1c2hDb25zdGFu
dHM7CistCVBGTl92a0NtZFJlc2V0RXZlbnQgdmtDbWRSZXNldEV2ZW50OworLQlQRk5fdmtDbWRS
ZXNldFF1ZXJ5UG9vbCB2a0NtZFJlc2V0UXVlcnlQb29sOworLQlQRk5fdmtDbWRSZXNvbHZlSW1h
Z2UgdmtDbWRSZXNvbHZlSW1hZ2U7CistCVBGTl92a0NtZFNldEJsZW5kQ29uc3RhbnRzIHZrQ21k
U2V0QmxlbmRDb25zdGFudHM7CistCVBGTl92a0NtZFNldERlcHRoQmlhcyB2a0NtZFNldERlcHRo
QmlhczsKKy0JUEZOX3ZrQ21kU2V0RGVwdGhCb3VuZHMgdmtDbWRTZXREZXB0aEJvdW5kczsKKy0J
UEZOX3ZrQ21kU2V0RXZlbnQgdmtDbWRTZXRFdmVudDsKKy0JUEZOX3ZrQ21kU2V0TGluZVdpZHRo
IHZrQ21kU2V0TGluZVdpZHRoOworLQlQRk5fdmtDbWRTZXRTY2lzc29yIHZrQ21kU2V0U2Npc3Nv
cjsKKy0JUEZOX3ZrQ21kU2V0U3RlbmNpbENvbXBhcmVNYXNrIHZrQ21kU2V0U3RlbmNpbENvbXBh
cmVNYXNrOworLQlQRk5fdmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlIHZrQ21kU2V0U3RlbmNpbFJl
ZmVyZW5jZTsKKy0JUEZOX3ZrQ21kU2V0U3RlbmNpbFdyaXRlTWFzayB2a0NtZFNldFN0ZW5jaWxX
cml0ZU1hc2s7CistCVBGTl92a0NtZFNldFZpZXdwb3J0IHZrQ21kU2V0Vmlld3BvcnQ7CistCVBG
Tl92a0NtZFVwZGF0ZUJ1ZmZlciB2a0NtZFVwZGF0ZUJ1ZmZlcjsKKy0JUEZOX3ZrQ21kV2FpdEV2
ZW50cyB2a0NtZFdhaXRFdmVudHM7CistCVBGTl92a0NtZFdyaXRlVGltZXN0YW1wIHZrQ21kV3Jp
dGVUaW1lc3RhbXA7CistCVBGTl92a0NyZWF0ZUJ1ZmZlciB2a0NyZWF0ZUJ1ZmZlcjsKKy0JUEZO
X3ZrQ3JlYXRlQnVmZmVyVmlldyB2a0NyZWF0ZUJ1ZmZlclZpZXc7CistCVBGTl92a0NyZWF0ZUNv
bW1hbmRQb29sIHZrQ3JlYXRlQ29tbWFuZFBvb2w7CistCVBGTl92a0NyZWF0ZUNvbXB1dGVQaXBl
bGluZXMgdmtDcmVhdGVDb21wdXRlUGlwZWxpbmVzOworLQlQRk5fdmtDcmVhdGVEZXNjcmlwdG9y
UG9vbCB2a0NyZWF0ZURlc2NyaXB0b3JQb29sOworLQlQRk5fdmtDcmVhdGVEZXNjcmlwdG9yU2V0
TGF5b3V0IHZrQ3JlYXRlRGVzY3JpcHRvclNldExheW91dDsKKy0JUEZOX3ZrQ3JlYXRlRXZlbnQg
dmtDcmVhdGVFdmVudDsKKy0JUEZOX3ZrQ3JlYXRlRmVuY2UgdmtDcmVhdGVGZW5jZTsKKy0JUEZO
X3ZrQ3JlYXRlRnJhbWVidWZmZXIgdmtDcmVhdGVGcmFtZWJ1ZmZlcjsKKy0JUEZOX3ZrQ3JlYXRl
R3JhcGhpY3NQaXBlbGluZXMgdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lczsKKy0JUEZOX3ZrQ3Jl
YXRlSW1hZ2UgdmtDcmVhdGVJbWFnZTsKKy0JUEZOX3ZrQ3JlYXRlSW1hZ2VWaWV3IHZrQ3JlYXRl
SW1hZ2VWaWV3OworLQlQRk5fdmtDcmVhdGVQaXBlbGluZUNhY2hlIHZrQ3JlYXRlUGlwZWxpbmVD
YWNoZTsKKy0JUEZOX3ZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQgdmtDcmVhdGVQaXBlbGluZUxheW91
dDsKKy0JUEZOX3ZrQ3JlYXRlUXVlcnlQb29sIHZrQ3JlYXRlUXVlcnlQb29sOworLQlQRk5fdmtD
cmVhdGVSZW5kZXJQYXNzIHZrQ3JlYXRlUmVuZGVyUGFzczsKKy0JUEZOX3ZrQ3JlYXRlU2FtcGxl
ciB2a0NyZWF0ZVNhbXBsZXI7CistCVBGTl92a0NyZWF0ZVNlbWFwaG9yZSB2a0NyZWF0ZVNlbWFw
aG9yZTsKKy0JUEZOX3ZrQ3JlYXRlU2hhZGVyTW9kdWxlIHZrQ3JlYXRlU2hhZGVyTW9kdWxlOwor
LQlQRk5fdmtEZXN0cm95QnVmZmVyIHZrRGVzdHJveUJ1ZmZlcjsKKy0JUEZOX3ZrRGVzdHJveUJ1
ZmZlclZpZXcgdmtEZXN0cm95QnVmZmVyVmlldzsKKy0JUEZOX3ZrRGVzdHJveUNvbW1hbmRQb29s
IHZrRGVzdHJveUNvbW1hbmRQb29sOworLQlQRk5fdmtEZXN0cm95RGVzY3JpcHRvclBvb2wgdmtE
ZXN0cm95RGVzY3JpcHRvclBvb2w7CistCVBGTl92a0Rlc3Ryb3lEZXNjcmlwdG9yU2V0TGF5b3V0
IHZrRGVzdHJveURlc2NyaXB0b3JTZXRMYXlvdXQ7CistCVBGTl92a0Rlc3Ryb3lEZXZpY2UgdmtE
ZXN0cm95RGV2aWNlOworLQlQRk5fdmtEZXN0cm95RXZlbnQgdmtEZXN0cm95RXZlbnQ7CistCVBG
Tl92a0Rlc3Ryb3lGZW5jZSB2a0Rlc3Ryb3lGZW5jZTsKKy0JUEZOX3ZrRGVzdHJveUZyYW1lYnVm
ZmVyIHZrRGVzdHJveUZyYW1lYnVmZmVyOworLQlQRk5fdmtEZXN0cm95SW1hZ2UgdmtEZXN0cm95
SW1hZ2U7CistCVBGTl92a0Rlc3Ryb3lJbWFnZVZpZXcgdmtEZXN0cm95SW1hZ2VWaWV3OworLQlQ
Rk5fdmtEZXN0cm95UGlwZWxpbmUgdmtEZXN0cm95UGlwZWxpbmU7CistCVBGTl92a0Rlc3Ryb3lQ
aXBlbGluZUNhY2hlIHZrRGVzdHJveVBpcGVsaW5lQ2FjaGU7CistCVBGTl92a0Rlc3Ryb3lQaXBl
bGluZUxheW91dCB2a0Rlc3Ryb3lQaXBlbGluZUxheW91dDsKKy0JUEZOX3ZrRGVzdHJveVF1ZXJ5
UG9vbCB2a0Rlc3Ryb3lRdWVyeVBvb2w7CistCVBGTl92a0Rlc3Ryb3lSZW5kZXJQYXNzIHZrRGVz
dHJveVJlbmRlclBhc3M7CistCVBGTl92a0Rlc3Ryb3lTYW1wbGVyIHZrRGVzdHJveVNhbXBsZXI7
CistCVBGTl92a0Rlc3Ryb3lTZW1hcGhvcmUgdmtEZXN0cm95U2VtYXBob3JlOworLQlQRk5fdmtE
ZXN0cm95U2hhZGVyTW9kdWxlIHZrRGVzdHJveVNoYWRlck1vZHVsZTsKKy0JUEZOX3ZrRGV2aWNl
V2FpdElkbGUgdmtEZXZpY2VXYWl0SWRsZTsKKy0JUEZOX3ZrRW5kQ29tbWFuZEJ1ZmZlciB2a0Vu
ZENvbW1hbmRCdWZmZXI7CistCVBGTl92a0ZsdXNoTWFwcGVkTWVtb3J5UmFuZ2VzIHZrRmx1c2hN
YXBwZWRNZW1vcnlSYW5nZXM7CistCVBGTl92a0ZyZWVDb21tYW5kQnVmZmVycyB2a0ZyZWVDb21t
YW5kQnVmZmVyczsKKy0JUEZOX3ZrRnJlZURlc2NyaXB0b3JTZXRzIHZrRnJlZURlc2NyaXB0b3JT
ZXRzOworLQlQRk5fdmtGcmVlTWVtb3J5IHZrRnJlZU1lbW9yeTsKKy0JUEZOX3ZrR2V0QnVmZmVy
TWVtb3J5UmVxdWlyZW1lbnRzIHZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzOworLQlQRk5f
dmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50IHZrR2V0RGV2aWNlTWVtb3J5Q29tbWl0bWVudDsK
Ky0JUEZOX3ZrR2V0RGV2aWNlUXVldWUgdmtHZXREZXZpY2VRdWV1ZTsKKy0JUEZOX3ZrR2V0RXZl
bnRTdGF0dXMgdmtHZXRFdmVudFN0YXR1czsKKy0JUEZOX3ZrR2V0RmVuY2VTdGF0dXMgdmtHZXRG
ZW5jZVN0YXR1czsKKy0JUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMgdmtHZXRJbWFn
ZU1lbW9yeVJlcXVpcmVtZW50czsKKy0JUEZOX3ZrR2V0SW1hZ2VTcGFyc2VNZW1vcnlSZXF1aXJl
bWVudHMgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czsKKy0JUEZOX3ZrR2V0SW1h
Z2VTdWJyZXNvdXJjZUxheW91dCB2a0dldEltYWdlU3VicmVzb3VyY2VMYXlvdXQ7CistCVBGTl92
a0dldFBpcGVsaW5lQ2FjaGVEYXRhIHZrR2V0UGlwZWxpbmVDYWNoZURhdGE7CistCVBGTl92a0dl
dFF1ZXJ5UG9vbFJlc3VsdHMgdmtHZXRRdWVyeVBvb2xSZXN1bHRzOworLQlQRk5fdmtHZXRSZW5k
ZXJBcmVhR3JhbnVsYXJpdHkgdmtHZXRSZW5kZXJBcmVhR3JhbnVsYXJpdHk7CistCVBGTl92a0lu
dmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5nZXMgdmtJbnZhbGlkYXRlTWFwcGVkTWVtb3J5UmFuZ2Vz
OworLQlQRk5fdmtNYXBNZW1vcnkgdmtNYXBNZW1vcnk7CistCVBGTl92a01lcmdlUGlwZWxpbmVD
YWNoZXMgdmtNZXJnZVBpcGVsaW5lQ2FjaGVzOworLQlQRk5fdmtRdWV1ZUJpbmRTcGFyc2UgdmtR
dWV1ZUJpbmRTcGFyc2U7CistCVBGTl92a1F1ZXVlU3VibWl0IHZrUXVldWVTdWJtaXQ7CistCVBG
Tl92a1F1ZXVlV2FpdElkbGUgdmtRdWV1ZVdhaXRJZGxlOworLQlQRk5fdmtSZXNldENvbW1hbmRC
dWZmZXIgdmtSZXNldENvbW1hbmRCdWZmZXI7CistCVBGTl92a1Jlc2V0Q29tbWFuZFBvb2wgdmtS
ZXNldENvbW1hbmRQb29sOworLQlQRk5fdmtSZXNldERlc2NyaXB0b3JQb29sIHZrUmVzZXREZXNj
cmlwdG9yUG9vbDsKKy0JUEZOX3ZrUmVzZXRFdmVudCB2a1Jlc2V0RXZlbnQ7CistCVBGTl92a1Jl
c2V0RmVuY2VzIHZrUmVzZXRGZW5jZXM7CistCVBGTl92a1NldEV2ZW50IHZrU2V0RXZlbnQ7Cist
CVBGTl92a1VubWFwTWVtb3J5IHZrVW5tYXBNZW1vcnk7CistCVBGTl92a1VwZGF0ZURlc2NyaXB0
b3JTZXRzIHZrVXBkYXRlRGVzY3JpcHRvclNldHM7CistCVBGTl92a1dhaXRGb3JGZW5jZXMgdmtX
YWl0Rm9yRmVuY2VzOworKyAgICBQRk5fdmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzIHZrQWxsb2Nh
dGVDb21tYW5kQnVmZmVyczsKKysgICAgUEZOX3ZrQWxsb2NhdGVEZXNjcmlwdG9yU2V0cyB2a0Fs
bG9jYXRlRGVzY3JpcHRvclNldHM7CisrICAgIFBGTl92a0FsbG9jYXRlTWVtb3J5IHZrQWxsb2Nh
dGVNZW1vcnk7CisrICAgIFBGTl92a0JlZ2luQ29tbWFuZEJ1ZmZlciB2a0JlZ2luQ29tbWFuZEJ1
ZmZlcjsKKysgICAgUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeSB2a0JpbmRCdWZmZXJNZW1vcnk7Cisr
ICAgIFBGTl92a0JpbmRJbWFnZU1lbW9yeSB2a0JpbmRJbWFnZU1lbW9yeTsKKysgICAgUEZOX3Zr
Q21kQmVnaW5RdWVyeSB2a0NtZEJlZ2luUXVlcnk7CisrICAgIFBGTl92a0NtZEJlZ2luUmVuZGVy
UGFzcyB2a0NtZEJlZ2luUmVuZGVyUGFzczsKKysgICAgUEZOX3ZrQ21kQmluZERlc2NyaXB0b3JT
ZXRzIHZrQ21kQmluZERlc2NyaXB0b3JTZXRzOworKyAgICBQRk5fdmtDbWRCaW5kSW5kZXhCdWZm
ZXIgdmtDbWRCaW5kSW5kZXhCdWZmZXI7CisrICAgIFBGTl92a0NtZEJpbmRQaXBlbGluZSB2a0Nt
ZEJpbmRQaXBlbGluZTsKKysgICAgUEZOX3ZrQ21kQmluZFZlcnRleEJ1ZmZlcnMgdmtDbWRCaW5k
VmVydGV4QnVmZmVyczsKKysgICAgUEZOX3ZrQ21kQmxpdEltYWdlIHZrQ21kQmxpdEltYWdlOwor
KyAgICBQRk5fdmtDbWRDbGVhckF0dGFjaG1lbnRzIHZrQ21kQ2xlYXJBdHRhY2htZW50czsKKysg
ICAgUEZOX3ZrQ21kQ2xlYXJDb2xvckltYWdlIHZrQ21kQ2xlYXJDb2xvckltYWdlOworKyAgICBQ
Rk5fdmtDbWRDbGVhckRlcHRoU3RlbmNpbEltYWdlIHZrQ21kQ2xlYXJEZXB0aFN0ZW5jaWxJbWFn
ZTsKKysgICAgUEZOX3ZrQ21kQ29weUJ1ZmZlciB2a0NtZENvcHlCdWZmZXI7CisrICAgIFBGTl92
a0NtZENvcHlCdWZmZXJUb0ltYWdlIHZrQ21kQ29weUJ1ZmZlclRvSW1hZ2U7CisrICAgIFBGTl92
a0NtZENvcHlJbWFnZSB2a0NtZENvcHlJbWFnZTsKKysgICAgUEZOX3ZrQ21kQ29weUltYWdlVG9C
dWZmZXIgdmtDbWRDb3B5SW1hZ2VUb0J1ZmZlcjsKKysgICAgUEZOX3ZrQ21kQ29weVF1ZXJ5UG9v
bFJlc3VsdHMgdmtDbWRDb3B5UXVlcnlQb29sUmVzdWx0czsKKysgICAgUEZOX3ZrQ21kRGlzcGF0
Y2ggdmtDbWREaXNwYXRjaDsKKysgICAgUEZOX3ZrQ21kRGlzcGF0Y2hJbmRpcmVjdCB2a0NtZERp
c3BhdGNoSW5kaXJlY3Q7CisrICAgIFBGTl92a0NtZERyYXcgdmtDbWREcmF3OworKyAgICBQRk5f
dmtDbWREcmF3SW5kZXhlZCB2a0NtZERyYXdJbmRleGVkOworKyAgICBQRk5fdmtDbWREcmF3SW5k
ZXhlZEluZGlyZWN0IHZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdDsKKysgICAgUEZOX3ZrQ21kRHJh
d0luZGlyZWN0IHZrQ21kRHJhd0luZGlyZWN0OworKyAgICBQRk5fdmtDbWRFbmRRdWVyeSB2a0Nt
ZEVuZFF1ZXJ5OworKyAgICBQRk5fdmtDbWRFbmRSZW5kZXJQYXNzIHZrQ21kRW5kUmVuZGVyUGFz
czsKKysgICAgUEZOX3ZrQ21kRXhlY3V0ZUNvbW1hbmRzIHZrQ21kRXhlY3V0ZUNvbW1hbmRzOwor
KyAgICBQRk5fdmtDbWRGaWxsQnVmZmVyIHZrQ21kRmlsbEJ1ZmZlcjsKKysgICAgUEZOX3ZrQ21k
TmV4dFN1YnBhc3MgdmtDbWROZXh0U3VicGFzczsKKysgICAgUEZOX3ZrQ21kUGlwZWxpbmVCYXJy
aWVyIHZrQ21kUGlwZWxpbmVCYXJyaWVyOworKyAgICBQRk5fdmtDbWRQdXNoQ29uc3RhbnRzIHZr
Q21kUHVzaENvbnN0YW50czsKKysgICAgUEZOX3ZrQ21kUmVzZXRFdmVudCB2a0NtZFJlc2V0RXZl
bnQ7CisrICAgIFBGTl92a0NtZFJlc2V0UXVlcnlQb29sIHZrQ21kUmVzZXRRdWVyeVBvb2w7Cisr
ICAgIFBGTl92a0NtZFJlc29sdmVJbWFnZSB2a0NtZFJlc29sdmVJbWFnZTsKKysgICAgUEZOX3Zr
Q21kU2V0QmxlbmRDb25zdGFudHMgdmtDbWRTZXRCbGVuZENvbnN0YW50czsKKysgICAgUEZOX3Zr
Q21kU2V0RGVwdGhCaWFzIHZrQ21kU2V0RGVwdGhCaWFzOworKyAgICBQRk5fdmtDbWRTZXREZXB0
aEJvdW5kcyB2a0NtZFNldERlcHRoQm91bmRzOworKyAgICBQRk5fdmtDbWRTZXRFdmVudCB2a0Nt
ZFNldEV2ZW50OworKyAgICBQRk5fdmtDbWRTZXRMaW5lV2lkdGggdmtDbWRTZXRMaW5lV2lkdGg7
CisrICAgIFBGTl92a0NtZFNldFNjaXNzb3IgdmtDbWRTZXRTY2lzc29yOworKyAgICBQRk5fdmtD
bWRTZXRTdGVuY2lsQ29tcGFyZU1hc2sgdmtDbWRTZXRTdGVuY2lsQ29tcGFyZU1hc2s7CisrICAg
IFBGTl92a0NtZFNldFN0ZW5jaWxSZWZlcmVuY2UgdmtDbWRTZXRTdGVuY2lsUmVmZXJlbmNlOwor
KyAgICBQRk5fdmtDbWRTZXRTdGVuY2lsV3JpdGVNYXNrIHZrQ21kU2V0U3RlbmNpbFdyaXRlTWFz
azsKKysgICAgUEZOX3ZrQ21kU2V0Vmlld3BvcnQgdmtDbWRTZXRWaWV3cG9ydDsKKysgICAgUEZO
X3ZrQ21kVXBkYXRlQnVmZmVyIHZrQ21kVXBkYXRlQnVmZmVyOworKyAgICBQRk5fdmtDbWRXYWl0
RXZlbnRzIHZrQ21kV2FpdEV2ZW50czsKKysgICAgUEZOX3ZrQ21kV3JpdGVUaW1lc3RhbXAgdmtD
bWRXcml0ZVRpbWVzdGFtcDsKKysgICAgUEZOX3ZrQ3JlYXRlQnVmZmVyIHZrQ3JlYXRlQnVmZmVy
OworKyAgICBQRk5fdmtDcmVhdGVCdWZmZXJWaWV3IHZrQ3JlYXRlQnVmZmVyVmlldzsKKysgICAg
UEZOX3ZrQ3JlYXRlQ29tbWFuZFBvb2wgdmtDcmVhdGVDb21tYW5kUG9vbDsKKysgICAgUEZOX3Zr
Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lcyB2a0NyZWF0ZUNvbXB1dGVQaXBlbGluZXM7CisrICAgIFBG
Tl92a0NyZWF0ZURlc2NyaXB0b3JQb29sIHZrQ3JlYXRlRGVzY3JpcHRvclBvb2w7CisrICAgIFBG
Tl92a0NyZWF0ZURlc2NyaXB0b3JTZXRMYXlvdXQgdmtDcmVhdGVEZXNjcmlwdG9yU2V0TGF5b3V0
OworKyAgICBQRk5fdmtDcmVhdGVFdmVudCB2a0NyZWF0ZUV2ZW50OworKyAgICBQRk5fdmtDcmVh
dGVGZW5jZSB2a0NyZWF0ZUZlbmNlOworKyAgICBQRk5fdmtDcmVhdGVGcmFtZWJ1ZmZlciB2a0Ny
ZWF0ZUZyYW1lYnVmZmVyOworKyAgICBQRk5fdmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcyB2a0Ny
ZWF0ZUdyYXBoaWNzUGlwZWxpbmVzOworKyAgICBQRk5fdmtDcmVhdGVJbWFnZSB2a0NyZWF0ZUlt
YWdlOworKyAgICBQRk5fdmtDcmVhdGVJbWFnZVZpZXcgdmtDcmVhdGVJbWFnZVZpZXc7CisrICAg
IFBGTl92a0NyZWF0ZVBpcGVsaW5lQ2FjaGUgdmtDcmVhdGVQaXBlbGluZUNhY2hlOworKyAgICBQ
Rk5fdmtDcmVhdGVQaXBlbGluZUxheW91dCB2a0NyZWF0ZVBpcGVsaW5lTGF5b3V0OworKyAgICBQ
Rk5fdmtDcmVhdGVRdWVyeVBvb2wgdmtDcmVhdGVRdWVyeVBvb2w7CisrICAgIFBGTl92a0NyZWF0
ZVJlbmRlclBhc3MgdmtDcmVhdGVSZW5kZXJQYXNzOworKyAgICBQRk5fdmtDcmVhdGVTYW1wbGVy
IHZrQ3JlYXRlU2FtcGxlcjsKKysgICAgUEZOX3ZrQ3JlYXRlU2VtYXBob3JlIHZrQ3JlYXRlU2Vt
YXBob3JlOworKyAgICBQRk5fdmtDcmVhdGVTaGFkZXJNb2R1bGUgdmtDcmVhdGVTaGFkZXJNb2R1
bGU7CisrICAgIFBGTl92a0Rlc3Ryb3lCdWZmZXIgdmtEZXN0cm95QnVmZmVyOworKyAgICBQRk5f
dmtEZXN0cm95QnVmZmVyVmlldyB2a0Rlc3Ryb3lCdWZmZXJWaWV3OworKyAgICBQRk5fdmtEZXN0
cm95Q29tbWFuZFBvb2wgdmtEZXN0cm95Q29tbWFuZFBvb2w7CisrICAgIFBGTl92a0Rlc3Ryb3lE
ZXNjcmlwdG9yUG9vbCB2a0Rlc3Ryb3lEZXNjcmlwdG9yUG9vbDsKKysgICAgUEZOX3ZrRGVzdHJv
eURlc2NyaXB0b3JTZXRMYXlvdXQgdmtEZXN0cm95RGVzY3JpcHRvclNldExheW91dDsKKysgICAg
UEZOX3ZrRGVzdHJveURldmljZSB2a0Rlc3Ryb3lEZXZpY2U7CisrICAgIFBGTl92a0Rlc3Ryb3lF
dmVudCB2a0Rlc3Ryb3lFdmVudDsKKysgICAgUEZOX3ZrRGVzdHJveUZlbmNlIHZrRGVzdHJveUZl
bmNlOworKyAgICBQRk5fdmtEZXN0cm95RnJhbWVidWZmZXIgdmtEZXN0cm95RnJhbWVidWZmZXI7
CisrICAgIFBGTl92a0Rlc3Ryb3lJbWFnZSB2a0Rlc3Ryb3lJbWFnZTsKKysgICAgUEZOX3ZrRGVz
dHJveUltYWdlVmlldyB2a0Rlc3Ryb3lJbWFnZVZpZXc7CisrICAgIFBGTl92a0Rlc3Ryb3lQaXBl
bGluZSB2a0Rlc3Ryb3lQaXBlbGluZTsKKysgICAgUEZOX3ZrRGVzdHJveVBpcGVsaW5lQ2FjaGUg
dmtEZXN0cm95UGlwZWxpbmVDYWNoZTsKKysgICAgUEZOX3ZrRGVzdHJveVBpcGVsaW5lTGF5b3V0
IHZrRGVzdHJveVBpcGVsaW5lTGF5b3V0OworKyAgICBQRk5fdmtEZXN0cm95UXVlcnlQb29sIHZr
RGVzdHJveVF1ZXJ5UG9vbDsKKysgICAgUEZOX3ZrRGVzdHJveVJlbmRlclBhc3MgdmtEZXN0cm95
UmVuZGVyUGFzczsKKysgICAgUEZOX3ZrRGVzdHJveVNhbXBsZXIgdmtEZXN0cm95U2FtcGxlcjsK
KysgICAgUEZOX3ZrRGVzdHJveVNlbWFwaG9yZSB2a0Rlc3Ryb3lTZW1hcGhvcmU7CisrICAgIFBG
Tl92a0Rlc3Ryb3lTaGFkZXJNb2R1bGUgdmtEZXN0cm95U2hhZGVyTW9kdWxlOworKyAgICBQRk5f
dmtEZXZpY2VXYWl0SWRsZSB2a0RldmljZVdhaXRJZGxlOworKyAgICBQRk5fdmtFbmRDb21tYW5k
QnVmZmVyIHZrRW5kQ29tbWFuZEJ1ZmZlcjsKKysgICAgUEZOX3ZrRmx1c2hNYXBwZWRNZW1vcnlS
YW5nZXMgdmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlczsKKysgICAgUEZOX3ZrRnJlZUNvbW1hbmRC
dWZmZXJzIHZrRnJlZUNvbW1hbmRCdWZmZXJzOworKyAgICBQRk5fdmtGcmVlRGVzY3JpcHRvclNl
dHMgdmtGcmVlRGVzY3JpcHRvclNldHM7CisrICAgIFBGTl92a0ZyZWVNZW1vcnkgdmtGcmVlTWVt
b3J5OworKyAgICBQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMgdmtHZXRCdWZmZXJN
ZW1vcnlSZXF1aXJlbWVudHM7CisrICAgIFBGTl92a0dldERldmljZU1lbW9yeUNvbW1pdG1lbnQg
dmtHZXREZXZpY2VNZW1vcnlDb21taXRtZW50OworKyAgICBQRk5fdmtHZXREZXZpY2VRdWV1ZSB2
a0dldERldmljZVF1ZXVlOworKyAgICBQRk5fdmtHZXRFdmVudFN0YXR1cyB2a0dldEV2ZW50U3Rh
dHVzOworKyAgICBQRk5fdmtHZXRGZW5jZVN0YXR1cyB2a0dldEZlbmNlU3RhdHVzOworKyAgICBQ
Rk5fdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cyB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1l
bnRzOworKyAgICBQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50cyB2a0dldElt
YWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzOworKyAgICBQRk5fdmtHZXRJbWFnZVN1YnJlc291
cmNlTGF5b3V0IHZrR2V0SW1hZ2VTdWJyZXNvdXJjZUxheW91dDsKKysgICAgUEZOX3ZrR2V0UGlw
ZWxpbmVDYWNoZURhdGEgdmtHZXRQaXBlbGluZUNhY2hlRGF0YTsKKysgICAgUEZOX3ZrR2V0UXVl
cnlQb29sUmVzdWx0cyB2a0dldFF1ZXJ5UG9vbFJlc3VsdHM7CisrICAgIFBGTl92a0dldFJlbmRl
ckFyZWFHcmFudWxhcml0eSB2a0dldFJlbmRlckFyZWFHcmFudWxhcml0eTsKKysgICAgUEZOX3Zr
SW52YWxpZGF0ZU1hcHBlZE1lbW9yeVJhbmdlcyB2a0ludmFsaWRhdGVNYXBwZWRNZW1vcnlSYW5n
ZXM7CisrICAgIFBGTl92a01hcE1lbW9yeSB2a01hcE1lbW9yeTsKKysgICAgUEZOX3ZrTWVyZ2VQ
aXBlbGluZUNhY2hlcyB2a01lcmdlUGlwZWxpbmVDYWNoZXM7CisrICAgIFBGTl92a1F1ZXVlQmlu
ZFNwYXJzZSB2a1F1ZXVlQmluZFNwYXJzZTsKKysgICAgUEZOX3ZrUXVldWVTdWJtaXQgdmtRdWV1
ZVN1Ym1pdDsKKysgICAgUEZOX3ZrUXVldWVXYWl0SWRsZSB2a1F1ZXVlV2FpdElkbGU7CisrICAg
IFBGTl92a1Jlc2V0Q29tbWFuZEJ1ZmZlciB2a1Jlc2V0Q29tbWFuZEJ1ZmZlcjsKKysgICAgUEZO
X3ZrUmVzZXRDb21tYW5kUG9vbCB2a1Jlc2V0Q29tbWFuZFBvb2w7CisrICAgIFBGTl92a1Jlc2V0
RGVzY3JpcHRvclBvb2wgdmtSZXNldERlc2NyaXB0b3JQb29sOworKyAgICBQRk5fdmtSZXNldEV2
ZW50IHZrUmVzZXRFdmVudDsKKysgICAgUEZOX3ZrUmVzZXRGZW5jZXMgdmtSZXNldEZlbmNlczsK
KysgICAgUEZOX3ZrU2V0RXZlbnQgdmtTZXRFdmVudDsKKysgICAgUEZOX3ZrVW5tYXBNZW1vcnkg
dmtVbm1hcE1lbW9yeTsKKysgICAgUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldHMgdmtVcGRhdGVE
ZXNjcmlwdG9yU2V0czsKKysgICAgUEZOX3ZrV2FpdEZvckZlbmNlcyB2a1dhaXRGb3JGZW5jZXM7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfVkVSU0lPTl8xXzApICovCisgI2lmIGRlZmluZWQoVktf
VkVSU0lPTl8xXzEpCistCVBGTl92a0JpbmRCdWZmZXJNZW1vcnkyIHZrQmluZEJ1ZmZlck1lbW9y
eTI7CistCVBGTl92a0JpbmRJbWFnZU1lbW9yeTIgdmtCaW5kSW1hZ2VNZW1vcnkyOworLQlQRk5f
dmtDbWREaXNwYXRjaEJhc2UgdmtDbWREaXNwYXRjaEJhc2U7CistCVBGTl92a0NtZFNldERldmlj
ZU1hc2sgdmtDbWRTZXREZXZpY2VNYXNrOworLQlQRk5fdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRl
VGVtcGxhdGUgdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGU7CistCVBGTl92a0NyZWF0
ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24gdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uOwor
LQlQRk5fdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIHZrRGVzdHJveURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZTsKKy0JUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb24g
dmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbjsKKy0JUEZOX3ZrR2V0QnVmZmVyTWVtb3J5
UmVxdWlyZW1lbnRzMiB2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czI7CistCVBGTl92a0dl
dERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0IHZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBv
cnQ7CistCVBGTl92a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzIHZrR2V0RGV2aWNl
R3JvdXBQZWVyTWVtb3J5RmVhdHVyZXM7CistCVBGTl92a0dldERldmljZVF1ZXVlMiB2a0dldERl
dmljZVF1ZXVlMjsKKy0JUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyIHZrR2V0SW1h
Z2VNZW1vcnlSZXF1aXJlbWVudHMyOworLQlQRk5fdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVp
cmVtZW50czIgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czI7CistCVBGTl92a1Ry
aW1Db21tYW5kUG9vbCB2a1RyaW1Db21tYW5kUG9vbDsKKy0JUEZOX3ZrVXBkYXRlRGVzY3JpcHRv
clNldFdpdGhUZW1wbGF0ZSB2a1VwZGF0ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGU7CisrICAg
IFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyIHZrQmluZEJ1ZmZlck1lbW9yeTI7CisrICAgIFBGTl92
a0JpbmRJbWFnZU1lbW9yeTIgdmtCaW5kSW1hZ2VNZW1vcnkyOworKyAgICBQRk5fdmtDbWREaXNw
YXRjaEJhc2UgdmtDbWREaXNwYXRjaEJhc2U7CisrICAgIFBGTl92a0NtZFNldERldmljZU1hc2sg
dmtDbWRTZXREZXZpY2VNYXNrOworKyAgICBQRk5fdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVt
cGxhdGUgdmtDcmVhdGVEZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGU7CisrICAgIFBGTl92a0NyZWF0
ZVNhbXBsZXJZY2JjckNvbnZlcnNpb24gdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9uOwor
KyAgICBQRk5fdmtEZXN0cm95RGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlIHZrRGVzdHJveURlc2Ny
aXB0b3JVcGRhdGVUZW1wbGF0ZTsKKysgICAgUEZOX3ZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZl
cnNpb24gdmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbjsKKysgICAgUEZOX3ZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzMiB2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czI7Cisr
ICAgIFBGTl92a0dldERlc2NyaXB0b3JTZXRMYXlvdXRTdXBwb3J0IHZrR2V0RGVzY3JpcHRvclNl
dExheW91dFN1cHBvcnQ7CisrICAgIFBGTl92a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1
cmVzIHZrR2V0RGV2aWNlR3JvdXBQZWVyTWVtb3J5RmVhdHVyZXM7CisrICAgIFBGTl92a0dldERl
dmljZVF1ZXVlMiB2a0dldERldmljZVF1ZXVlMjsKKysgICAgUEZOX3ZrR2V0SW1hZ2VNZW1vcnlS
ZXF1aXJlbWVudHMyIHZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyOworKyAgICBQRk5fdmtH
ZXRJbWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czIgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJl
cXVpcmVtZW50czI7CisrICAgIFBGTl92a1RyaW1Db21tYW5kUG9vbCB2a1RyaW1Db21tYW5kUG9v
bDsKKysgICAgUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZSB2a1VwZGF0ZURl
c2NyaXB0b3JTZXRXaXRoVGVtcGxhdGU7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfVkVSU0lPTl8x
XzEpICovCisgI2lmIGRlZmluZWQoVktfQU1EX2J1ZmZlcl9tYXJrZXIpCistCVBGTl92a0NtZFdy
aXRlQnVmZmVyTWFya2VyQU1EIHZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQ7CisrICAgIFBGTl92
a0NtZFdyaXRlQnVmZmVyTWFya2VyQU1EIHZrQ21kV3JpdGVCdWZmZXJNYXJrZXJBTUQ7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfQU1EX2J1ZmZlcl9tYXJrZXIpICovCisgI2lmIGRlZmluZWQoVktf
QU1EX2Rpc3BsYXlfbmF0aXZlX2hkcikKKy0JUEZOX3ZrU2V0TG9jYWxEaW1taW5nQU1EIHZrU2V0
TG9jYWxEaW1taW5nQU1EOworKyAgICBQRk5fdmtTZXRMb2NhbERpbW1pbmdBTUQgdmtTZXRMb2Nh
bERpbW1pbmdBTUQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU1EX2Rpc3BsYXlfbmF0aXZlX2hk
cikgKi8KKyAjaWYgZGVmaW5lZChWS19BTURfZHJhd19pbmRpcmVjdF9jb3VudCkKKy0JUEZOX3Zr
Q21kRHJhd0luZGV4ZWRJbmRpcmVjdENvdW50QU1EIHZrQ21kRHJhd0luZGV4ZWRJbmRpcmVjdENv
dW50QU1EOworLQlQRk5fdmtDbWREcmF3SW5kaXJlY3RDb3VudEFNRCB2a0NtZERyYXdJbmRpcmVj
dENvdW50QU1EOworKyAgICBQRk5fdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRBTUQgdmtD
bWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRBTUQ7CisrICAgIFBGTl92a0NtZERyYXdJbmRpcmVj
dENvdW50QU1EIHZrQ21kRHJhd0luZGlyZWN0Q291bnRBTUQ7CisgI2VuZGlmIC8qIGRlZmluZWQo
VktfQU1EX2RyYXdfaW5kaXJlY3RfY291bnQpICovCisgI2lmIGRlZmluZWQoVktfQU1EX3NoYWRl
cl9pbmZvKQorLQlQRk5fdmtHZXRTaGFkZXJJbmZvQU1EIHZrR2V0U2hhZGVySW5mb0FNRDsKKysg
ICAgUEZOX3ZrR2V0U2hhZGVySW5mb0FNRCB2a0dldFNoYWRlckluZm9BTUQ7CisgI2VuZGlmIC8q
IGRlZmluZWQoVktfQU1EX3NoYWRlcl9pbmZvKSAqLworICNpZiBkZWZpbmVkKFZLX0FORFJPSURf
ZXh0ZXJuYWxfbWVtb3J5X2FuZHJvaWRfaGFyZHdhcmVfYnVmZmVyKQorLQlQRk5fdmtHZXRBbmRy
b2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRCB2a0dldEFuZHJvaWRIYXJkd2FyZUJ1
ZmZlclByb3BlcnRpZXNBTkRST0lEOworLQlQRk5fdmtHZXRNZW1vcnlBbmRyb2lkSGFyZHdhcmVC
dWZmZXJBTkRST0lEIHZrR2V0TWVtb3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRDsKKysg
ICAgUEZOX3ZrR2V0QW5kcm9pZEhhcmR3YXJlQnVmZmVyUHJvcGVydGllc0FORFJPSUQgdmtHZXRB
bmRyb2lkSGFyZHdhcmVCdWZmZXJQcm9wZXJ0aWVzQU5EUk9JRDsKKysgICAgUEZOX3ZrR2V0TWVt
b3J5QW5kcm9pZEhhcmR3YXJlQnVmZmVyQU5EUk9JRCB2a0dldE1lbW9yeUFuZHJvaWRIYXJkd2Fy
ZUJ1ZmZlckFORFJPSUQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfQU5EUk9JRF9leHRlcm5hbF9t
ZW1vcnlfYW5kcm9pZF9oYXJkd2FyZV9idWZmZXIpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2J1
ZmZlcl9kZXZpY2VfYWRkcmVzcykKKy0JUEZOX3ZrR2V0QnVmZmVyRGV2aWNlQWRkcmVzc0VYVCB2
a0dldEJ1ZmZlckRldmljZUFkZHJlc3NFWFQ7CisrICAgIFBGTl92a0dldEJ1ZmZlckRldmljZUFk
ZHJlc3NFWFQgdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzRVhUOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX0VYVF9idWZmZXJfZGV2aWNlX2FkZHJlc3MpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Nh
bGlicmF0ZWRfdGltZXN0YW1wcykKKy0JUEZOX3ZrR2V0Q2FsaWJyYXRlZFRpbWVzdGFtcHNFWFQg
dmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVDsKKysgICAgUEZOX3ZrR2V0Q2FsaWJyYXRlZFRp
bWVzdGFtcHNFWFQgdmtHZXRDYWxpYnJhdGVkVGltZXN0YW1wc0VYVDsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzKSAqLworICNpZiBkZWZpbmVkKFZLX0VY
VF9jb25kaXRpb25hbF9yZW5kZXJpbmcpCistCVBGTl92a0NtZEJlZ2luQ29uZGl0aW9uYWxSZW5k
ZXJpbmdFWFQgdmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhUOworLQlQRk5fdmtDbWRF
bmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVCB2a0NtZEVuZENvbmRpdGlvbmFsUmVuZGVyaW5nRVhU
OworKyAgICBQRk5fdmtDbWRCZWdpbkNvbmRpdGlvbmFsUmVuZGVyaW5nRVhUIHZrQ21kQmVnaW5D
b25kaXRpb25hbFJlbmRlcmluZ0VYVDsKKysgICAgUEZOX3ZrQ21kRW5kQ29uZGl0aW9uYWxSZW5k
ZXJpbmdFWFQgdmtDbWRFbmRDb25kaXRpb25hbFJlbmRlcmluZ0VYVDsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19FWFRfY29uZGl0aW9uYWxfcmVuZGVyaW5nKSAqLworICNpZiBkZWZpbmVkKFZLX0VY
VF9kZWJ1Z19tYXJrZXIpCistCVBGTl92a0NtZERlYnVnTWFya2VyQmVnaW5FWFQgdmtDbWREZWJ1
Z01hcmtlckJlZ2luRVhUOworLQlQRk5fdmtDbWREZWJ1Z01hcmtlckVuZEVYVCB2a0NtZERlYnVn
TWFya2VyRW5kRVhUOworLQlQRk5fdmtDbWREZWJ1Z01hcmtlckluc2VydEVYVCB2a0NtZERlYnVn
TWFya2VySW5zZXJ0RVhUOworLQlQRk5fdmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQgdmtE
ZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQ7CistCVBGTl92a0RlYnVnTWFya2VyU2V0T2JqZWN0
VGFnRVhUIHZrRGVidWdNYXJrZXJTZXRPYmplY3RUYWdFWFQ7CisrICAgIFBGTl92a0NtZERlYnVn
TWFya2VyQmVnaW5FWFQgdmtDbWREZWJ1Z01hcmtlckJlZ2luRVhUOworKyAgICBQRk5fdmtDbWRE
ZWJ1Z01hcmtlckVuZEVYVCB2a0NtZERlYnVnTWFya2VyRW5kRVhUOworKyAgICBQRk5fdmtDbWRE
ZWJ1Z01hcmtlckluc2VydEVYVCB2a0NtZERlYnVnTWFya2VySW5zZXJ0RVhUOworKyAgICBQRk5f
dmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVFWFQgdmtEZWJ1Z01hcmtlclNldE9iamVjdE5hbWVF
WFQ7CisrICAgIFBGTl92a0RlYnVnTWFya2VyU2V0T2JqZWN0VGFnRVhUIHZrRGVidWdNYXJrZXJT
ZXRPYmplY3RUYWdFWFQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2RlYnVnX21hcmtlcikg
Ki8KKyAjaWYgZGVmaW5lZChWS19FWFRfZGlzY2FyZF9yZWN0YW5nbGVzKQorLQlQRk5fdmtDbWRT
ZXREaXNjYXJkUmVjdGFuZ2xlRVhUIHZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVDsKKysgICAg
UEZOX3ZrQ21kU2V0RGlzY2FyZFJlY3RhbmdsZUVYVCB2a0NtZFNldERpc2NhcmRSZWN0YW5nbGVF
WFQ7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfRVhUX2Rpc2NhcmRfcmVjdGFuZ2xlcykgKi8KKyAj
aWYgZGVmaW5lZChWS19FWFRfZGlzcGxheV9jb250cm9sKQorLQlQRk5fdmtEaXNwbGF5UG93ZXJD
b250cm9sRVhUIHZrRGlzcGxheVBvd2VyQ29udHJvbEVYVDsKKy0JUEZOX3ZrR2V0U3dhcGNoYWlu
Q291bnRlckVYVCB2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQ7CistCVBGTl92a1JlZ2lzdGVyRGV2
aWNlRXZlbnRFWFQgdmtSZWdpc3RlckRldmljZUV2ZW50RVhUOworLQlQRk5fdmtSZWdpc3RlckRp
c3BsYXlFdmVudEVYVCB2a1JlZ2lzdGVyRGlzcGxheUV2ZW50RVhUOworKyAgICBQRk5fdmtEaXNw
bGF5UG93ZXJDb250cm9sRVhUIHZrRGlzcGxheVBvd2VyQ29udHJvbEVYVDsKKysgICAgUEZOX3Zr
R2V0U3dhcGNoYWluQ291bnRlckVYVCB2a0dldFN3YXBjaGFpbkNvdW50ZXJFWFQ7CisrICAgIFBG
Tl92a1JlZ2lzdGVyRGV2aWNlRXZlbnRFWFQgdmtSZWdpc3RlckRldmljZUV2ZW50RVhUOworKyAg
ICBQRk5fdmtSZWdpc3RlckRpc3BsYXlFdmVudEVYVCB2a1JlZ2lzdGVyRGlzcGxheUV2ZW50RVhU
OworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9kaXNwbGF5X2NvbnRyb2wpICovCisgI2lmIGRl
ZmluZWQoVktfRVhUX2V4dGVybmFsX21lbW9yeV9ob3N0KQorLQlQRk5fdmtHZXRNZW1vcnlIb3N0
UG9pbnRlclByb3BlcnRpZXNFWFQgdmtHZXRNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXNFWFQ7
CisrICAgIFBGTl92a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVCB2a0dldE1lbW9y
eUhvc3RQb2ludGVyUHJvcGVydGllc0VYVDsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfZXh0
ZXJuYWxfbWVtb3J5X2hvc3QpICovCisgI2lmIGRlZmluZWQoVktfRVhUX2Z1bGxfc2NyZWVuX2V4
Y2x1c2l2ZSkKKy0JUEZOX3ZrQWNxdWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUIHZrQWNx
dWlyZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUOworLQlQRk5fdmtSZWxlYXNlRnVsbFNjcmVl
bkV4Y2x1c2l2ZU1vZGVFWFQgdmtSZWxlYXNlRnVsbFNjcmVlbkV4Y2x1c2l2ZU1vZGVFWFQ7Cisr
ICAgIFBGTl92a0FjcXVpcmVGdWxsU2NyZWVuRXhjbHVzaXZlTW9kZUVYVCB2a0FjcXVpcmVGdWxs
U2NyZWVuRXhjbHVzaXZlTW9kZUVYVDsKKysgICAgUEZOX3ZrUmVsZWFzZUZ1bGxTY3JlZW5FeGNs
dXNpdmVNb2RlRVhUIHZrUmVsZWFzZUZ1bGxTY3JlZW5FeGNsdXNpdmVNb2RlRVhUOworICNlbmRp
ZiAvKiBkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUpICovCisgI2lmIGRlZmlu
ZWQoVktfRVhUX2hkcl9tZXRhZGF0YSkKKy0JUEZOX3ZrU2V0SGRyTWV0YWRhdGFFWFQgdmtTZXRI
ZHJNZXRhZGF0YUVYVDsKKysgICAgUEZOX3ZrU2V0SGRyTWV0YWRhdGFFWFQgdmtTZXRIZHJNZXRh
ZGF0YUVYVDsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19FWFRfaGRyX21ldGFkYXRhKSAqLworICNp
ZiBkZWZpbmVkKFZLX0VYVF9ob3N0X3F1ZXJ5X3Jlc2V0KQorLQlQRk5fdmtSZXNldFF1ZXJ5UG9v
bEVYVCB2a1Jlc2V0UXVlcnlQb29sRVhUOworKyAgICBQRk5fdmtSZXNldFF1ZXJ5UG9vbEVYVCB2
a1Jlc2V0UXVlcnlQb29sRVhUOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9ob3N0X3F1ZXJ5
X3Jlc2V0KSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9pbWFnZV9kcm1fZm9ybWF0X21vZGlmaWVy
KQorLQlQRk5fdmtHZXRJbWFnZURybUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCB2a0dldElt
YWdlRHJtRm9ybWF0TW9kaWZpZXJQcm9wZXJ0aWVzRVhUOworKyAgICBQRk5fdmtHZXRJbWFnZURy
bUZvcm1hdE1vZGlmaWVyUHJvcGVydGllc0VYVCB2a0dldEltYWdlRHJtRm9ybWF0TW9kaWZpZXJQ
cm9wZXJ0aWVzRVhUOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF9pbWFnZV9kcm1fZm9ybWF0
X21vZGlmaWVyKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF9saW5lX3Jhc3Rlcml6YXRpb24pCist
CVBGTl92a0NtZFNldExpbmVTdGlwcGxlRVhUIHZrQ21kU2V0TGluZVN0aXBwbGVFWFQ7CisrICAg
IFBGTl92a0NtZFNldExpbmVTdGlwcGxlRVhUIHZrQ21kU2V0TGluZVN0aXBwbGVFWFQ7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfRVhUX2xpbmVfcmFzdGVyaXphdGlvbikgKi8KKyAjaWYgZGVmaW5l
ZChWS19FWFRfc2FtcGxlX2xvY2F0aW9ucykKKy0JUEZOX3ZrQ21kU2V0U2FtcGxlTG9jYXRpb25z
RVhUIHZrQ21kU2V0U2FtcGxlTG9jYXRpb25zRVhUOworKyAgICBQRk5fdmtDbWRTZXRTYW1wbGVM
b2NhdGlvbnNFWFQgdmtDbWRTZXRTYW1wbGVMb2NhdGlvbnNFWFQ7CisgI2VuZGlmIC8qIGRlZmlu
ZWQoVktfRVhUX3NhbXBsZV9sb2NhdGlvbnMpICovCisgI2lmIGRlZmluZWQoVktfRVhUX3RyYW5z
Zm9ybV9mZWVkYmFjaykKKy0JUEZOX3ZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQgdmtDbWRCZWdp
blF1ZXJ5SW5kZXhlZEVYVDsKKy0JUEZOX3ZrQ21kQmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVCB2
a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQ7CistCVBGTl92a0NtZEJpbmRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnNFWFQgdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzRVhUOwor
LQlQRk5fdmtDbWREcmF3SW5kaXJlY3RCeXRlQ291bnRFWFQgdmtDbWREcmF3SW5kaXJlY3RCeXRl
Q291bnRFWFQ7CistCVBGTl92a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVCB2a0NtZEVuZFF1ZXJ5SW5k
ZXhlZEVYVDsKKy0JUEZOX3ZrQ21kRW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQgdmtDbWRFbmRUcmFu
c2Zvcm1GZWVkYmFja0VYVDsKKysgICAgUEZOX3ZrQ21kQmVnaW5RdWVyeUluZGV4ZWRFWFQgdmtD
bWRCZWdpblF1ZXJ5SW5kZXhlZEVYVDsKKysgICAgUEZOX3ZrQ21kQmVnaW5UcmFuc2Zvcm1GZWVk
YmFja0VYVCB2a0NtZEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQ7CisrICAgIFBGTl92a0NtZEJp
bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQgdmtDbWRCaW5kVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJzRVhUOworKyAgICBQRk5fdmtDbWREcmF3SW5kaXJlY3RCeXRlQ291bnRFWFQgdmtDbWRE
cmF3SW5kaXJlY3RCeXRlQ291bnRFWFQ7CisrICAgIFBGTl92a0NtZEVuZFF1ZXJ5SW5kZXhlZEVY
VCB2a0NtZEVuZFF1ZXJ5SW5kZXhlZEVYVDsKKysgICAgUEZOX3ZrQ21kRW5kVHJhbnNmb3JtRmVl
ZGJhY2tFWFQgdmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFja0VYVDsKKyAjZW5kaWYgLyogZGVmaW5l
ZChWS19FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrKSAqLworICNpZiBkZWZpbmVkKFZLX0VYVF92YWxp
ZGF0aW9uX2NhY2hlKQorLQlQRk5fdmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQgdmtDcmVhdGVW
YWxpZGF0aW9uQ2FjaGVFWFQ7CistCVBGTl92a0Rlc3Ryb3lWYWxpZGF0aW9uQ2FjaGVFWFQgdmtE
ZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUOworLQlQRk5fdmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRh
RVhUIHZrR2V0VmFsaWRhdGlvbkNhY2hlRGF0YUVYVDsKKy0JUEZOX3ZrTWVyZ2VWYWxpZGF0aW9u
Q2FjaGVzRVhUIHZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVzRVhUOworKyAgICBQRk5fdmtDcmVhdGVW
YWxpZGF0aW9uQ2FjaGVFWFQgdmtDcmVhdGVWYWxpZGF0aW9uQ2FjaGVFWFQ7CisrICAgIFBGTl92
a0Rlc3Ryb3lWYWxpZGF0aW9uQ2FjaGVFWFQgdmtEZXN0cm95VmFsaWRhdGlvbkNhY2hlRVhUOwor
KyAgICBQRk5fdmtHZXRWYWxpZGF0aW9uQ2FjaGVEYXRhRVhUIHZrR2V0VmFsaWRhdGlvbkNhY2hl
RGF0YUVYVDsKKysgICAgUEZOX3ZrTWVyZ2VWYWxpZGF0aW9uQ2FjaGVzRVhUIHZrTWVyZ2VWYWxp
ZGF0aW9uQ2FjaGVzRVhUOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0VYVF92YWxpZGF0aW9uX2Nh
Y2hlKSAqLworICNpZiBkZWZpbmVkKFZLX0dPT0dMRV9kaXNwbGF5X3RpbWluZykKKy0JUEZOX3Zr
R2V0UGFzdFByZXNlbnRhdGlvblRpbWluZ0dPT0dMRSB2a0dldFBhc3RQcmVzZW50YXRpb25UaW1p
bmdHT09HTEU7CistCVBGTl92a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9uR09PR0xFIHZrR2V0UmVm
cmVzaEN5Y2xlRHVyYXRpb25HT09HTEU7CisrICAgIFBGTl92a0dldFBhc3RQcmVzZW50YXRpb25U
aW1pbmdHT09HTEUgdmtHZXRQYXN0UHJlc2VudGF0aW9uVGltaW5nR09PR0xFOworKyAgICBQRk5f
dmtHZXRSZWZyZXNoQ3ljbGVEdXJhdGlvbkdPT0dMRSB2a0dldFJlZnJlc2hDeWNsZUR1cmF0aW9u
R09PR0xFOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0dPT0dMRV9kaXNwbGF5X3RpbWluZykgKi8K
KyAjaWYgZGVmaW5lZChWS19JTlRFTF9wZXJmb3JtYW5jZV9xdWVyeSkKKy0JUEZOX3ZrQWNxdWly
ZVBlcmZvcm1hbmNlQ29uZmlndXJhdGlvbklOVEVMIHZrQWNxdWlyZVBlcmZvcm1hbmNlQ29uZmln
dXJhdGlvbklOVEVMOworLQlQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMIHZrQ21k
U2V0UGVyZm9ybWFuY2VNYXJrZXJJTlRFTDsKKy0JUEZOX3ZrQ21kU2V0UGVyZm9ybWFuY2VPdmVy
cmlkZUlOVEVMIHZrQ21kU2V0UGVyZm9ybWFuY2VPdmVycmlkZUlOVEVMOworLQlQRk5fdmtDbWRT
ZXRQZXJmb3JtYW5jZVN0cmVhbU1hcmtlcklOVEVMIHZrQ21kU2V0UGVyZm9ybWFuY2VTdHJlYW1N
YXJrZXJJTlRFTDsKKy0JUEZOX3ZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRFTCB2a0dldFBl
cmZvcm1hbmNlUGFyYW1ldGVySU5URUw7CistCVBGTl92a0luaXRpYWxpemVQZXJmb3JtYW5jZUFw
aUlOVEVMIHZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUw7CistCVBGTl92a1F1ZXVlU2V0
UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgdmtRdWV1ZVNldFBlcmZvcm1hbmNlQ29uZmln
dXJhdGlvbklOVEVMOworLQlQRk5fdmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5U
RUwgdmtSZWxlYXNlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUw7CistCVBGTl92a1VuaW5p
dGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwgdmtVbmluaXRpYWxpemVQZXJmb3JtYW5jZUFwaUlO
VEVMOworKyAgICBQRk5fdmtBY3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUwgdmtB
Y3F1aXJlUGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUw7CisrICAgIFBGTl92a0NtZFNldFBl
cmZvcm1hbmNlTWFya2VySU5URUwgdmtDbWRTZXRQZXJmb3JtYW5jZU1hcmtlcklOVEVMOworKyAg
ICBQRk5fdmtDbWRTZXRQZXJmb3JtYW5jZU92ZXJyaWRlSU5URUwgdmtDbWRTZXRQZXJmb3JtYW5j
ZU92ZXJyaWRlSU5URUw7CisrICAgIFBGTl92a0NtZFNldFBlcmZvcm1hbmNlU3RyZWFtTWFya2Vy
SU5URUwgdmtDbWRTZXRQZXJmb3JtYW5jZVN0cmVhbU1hcmtlcklOVEVMOworKyAgICBQRk5fdmtH
ZXRQZXJmb3JtYW5jZVBhcmFtZXRlcklOVEVMIHZrR2V0UGVyZm9ybWFuY2VQYXJhbWV0ZXJJTlRF
TDsKKysgICAgUEZOX3ZrSW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUwgdmtJbml0aWFsaXpl
UGVyZm9ybWFuY2VBcGlJTlRFTDsKKysgICAgUEZOX3ZrUXVldWVTZXRQZXJmb3JtYW5jZUNvbmZp
Z3VyYXRpb25JTlRFTCB2a1F1ZXVlU2V0UGVyZm9ybWFuY2VDb25maWd1cmF0aW9uSU5URUw7Cisr
ICAgIFBGTl92a1JlbGVhc2VQZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTCB2a1JlbGVhc2VQ
ZXJmb3JtYW5jZUNvbmZpZ3VyYXRpb25JTlRFTDsKKysgICAgUEZOX3ZrVW5pbml0aWFsaXplUGVy
Zm9ybWFuY2VBcGlJTlRFTCB2a1VuaW5pdGlhbGl6ZVBlcmZvcm1hbmNlQXBpSU5URUw7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfSU5URUxfcGVyZm9ybWFuY2VfcXVlcnkpICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX2JpbmRfbWVtb3J5MikKKy0JUEZOX3ZrQmluZEJ1ZmZlck1lbW9yeTJLSFIgdmtC
aW5kQnVmZmVyTWVtb3J5MktIUjsKKy0JUEZOX3ZrQmluZEltYWdlTWVtb3J5MktIUiB2a0JpbmRJ
bWFnZU1lbW9yeTJLSFI7CisrICAgIFBGTl92a0JpbmRCdWZmZXJNZW1vcnkyS0hSIHZrQmluZEJ1
ZmZlck1lbW9yeTJLSFI7CisrICAgIFBGTl92a0JpbmRJbWFnZU1lbW9yeTJLSFIgdmtCaW5kSW1h
Z2VNZW1vcnkyS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9iaW5kX21lbW9yeTIpICov
CisgI2lmIGRlZmluZWQoVktfS0hSX2J1ZmZlcl9kZXZpY2VfYWRkcmVzcykKKy0JUEZOX3ZrR2V0
QnVmZmVyRGV2aWNlQWRkcmVzc0tIUiB2a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFI7CistCVBG
Tl92a0dldEJ1ZmZlck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSIHZrR2V0QnVmZmVyT3BhcXVlQ2Fw
dHVyZUFkZHJlc3NLSFI7CistCVBGTl92a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRy
ZXNzS0hSIHZrR2V0RGV2aWNlTWVtb3J5T3BhcXVlQ2FwdHVyZUFkZHJlc3NLSFI7CisrICAgIFBG
Tl92a0dldEJ1ZmZlckRldmljZUFkZHJlc3NLSFIgdmtHZXRCdWZmZXJEZXZpY2VBZGRyZXNzS0hS
OworKyAgICBQRk5fdmtHZXRCdWZmZXJPcGFxdWVDYXB0dXJlQWRkcmVzc0tIUiB2a0dldEJ1ZmZl
ck9wYXF1ZUNhcHR1cmVBZGRyZXNzS0hSOworKyAgICBQRk5fdmtHZXREZXZpY2VNZW1vcnlPcGFx
dWVDYXB0dXJlQWRkcmVzc0tIUiB2a0dldERldmljZU1lbW9yeU9wYXF1ZUNhcHR1cmVBZGRyZXNz
S0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9idWZmZXJfZGV2aWNlX2FkZHJlc3MpICov
CisgI2lmIGRlZmluZWQoVktfS0hSX2NyZWF0ZV9yZW5kZXJwYXNzMikKKy0JUEZOX3ZrQ21kQmVn
aW5SZW5kZXJQYXNzMktIUiB2a0NtZEJlZ2luUmVuZGVyUGFzczJLSFI7CistCVBGTl92a0NtZEVu
ZFJlbmRlclBhc3MyS0hSIHZrQ21kRW5kUmVuZGVyUGFzczJLSFI7CistCVBGTl92a0NtZE5leHRT
dWJwYXNzMktIUiB2a0NtZE5leHRTdWJwYXNzMktIUjsKKy0JUEZOX3ZrQ3JlYXRlUmVuZGVyUGFz
czJLSFIgdmtDcmVhdGVSZW5kZXJQYXNzMktIUjsKKysgICAgUEZOX3ZrQ21kQmVnaW5SZW5kZXJQ
YXNzMktIUiB2a0NtZEJlZ2luUmVuZGVyUGFzczJLSFI7CisrICAgIFBGTl92a0NtZEVuZFJlbmRl
clBhc3MyS0hSIHZrQ21kRW5kUmVuZGVyUGFzczJLSFI7CisrICAgIFBGTl92a0NtZE5leHRTdWJw
YXNzMktIUiB2a0NtZE5leHRTdWJwYXNzMktIUjsKKysgICAgUEZOX3ZrQ3JlYXRlUmVuZGVyUGFz
czJLSFIgdmtDcmVhdGVSZW5kZXJQYXNzMktIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJf
Y3JlYXRlX3JlbmRlcnBhc3MyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9kZXNjcmlwdG9yX3Vw
ZGF0ZV90ZW1wbGF0ZSkKKy0JUEZOX3ZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hS
IHZrQ3JlYXRlRGVzY3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSOworLQlQRk5fdmtEZXN0cm95RGVz
Y3JpcHRvclVwZGF0ZVRlbXBsYXRlS0hSIHZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0
ZUtIUjsKKy0JUEZOX3ZrVXBkYXRlRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiB2a1VwZGF0
ZURlc2NyaXB0b3JTZXRXaXRoVGVtcGxhdGVLSFI7CisrICAgIFBGTl92a0NyZWF0ZURlc2NyaXB0
b3JVcGRhdGVUZW1wbGF0ZUtIUiB2a0NyZWF0ZURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUjsK
KysgICAgUEZOX3ZrRGVzdHJveURlc2NyaXB0b3JVcGRhdGVUZW1wbGF0ZUtIUiB2a0Rlc3Ryb3lE
ZXNjcmlwdG9yVXBkYXRlVGVtcGxhdGVLSFI7CisrICAgIFBGTl92a1VwZGF0ZURlc2NyaXB0b3JT
ZXRXaXRoVGVtcGxhdGVLSFIgdmtVcGRhdGVEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSOwor
ICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kZXNjcmlwdG9yX3VwZGF0ZV90ZW1wbGF0ZSkgKi8K
KyAjaWYgZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKQorLQlQRk5fdmtDbWREaXNwYXRjaEJh
c2VLSFIgdmtDbWREaXNwYXRjaEJhc2VLSFI7CistCVBGTl92a0NtZFNldERldmljZU1hc2tLSFIg
dmtDbWRTZXREZXZpY2VNYXNrS0hSOworLQlQRk5fdmtHZXREZXZpY2VHcm91cFBlZXJNZW1vcnlG
ZWF0dXJlc0tIUiB2a0dldERldmljZUdyb3VwUGVlck1lbW9yeUZlYXR1cmVzS0hSOworKyAgICBQ
Rk5fdmtDbWREaXNwYXRjaEJhc2VLSFIgdmtDbWREaXNwYXRjaEJhc2VLSFI7CisrICAgIFBGTl92
a0NtZFNldERldmljZU1hc2tLSFIgdmtDbWRTZXREZXZpY2VNYXNrS0hSOworKyAgICBQRk5fdmtH
ZXREZXZpY2VHcm91cFBlZXJNZW1vcnlGZWF0dXJlc0tIUiB2a0dldERldmljZUdyb3VwUGVlck1l
bW9yeUZlYXR1cmVzS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9kZXZpY2VfZ3JvdXAp
ICovCisgI2lmIGRlZmluZWQoVktfS0hSX2Rpc3BsYXlfc3dhcGNoYWluKQorLQlQRk5fdmtDcmVh
dGVTaGFyZWRTd2FwY2hhaW5zS0hSIHZrQ3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUjsKKysgICAg
UEZOX3ZrQ3JlYXRlU2hhcmVkU3dhcGNoYWluc0tIUiB2a0NyZWF0ZVNoYXJlZFN3YXBjaGFpbnNL
SFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2Rpc3BsYXlfc3dhcGNoYWluKSAqLworICNp
ZiBkZWZpbmVkKFZLX0tIUl9kcmF3X2luZGlyZWN0X2NvdW50KQorLQlQRk5fdmtDbWREcmF3SW5k
ZXhlZEluZGlyZWN0Q291bnRLSFIgdmtDbWREcmF3SW5kZXhlZEluZGlyZWN0Q291bnRLSFI7Cist
CVBGTl92a0NtZERyYXdJbmRpcmVjdENvdW50S0hSIHZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFI7
CisrICAgIFBGTl92a0NtZERyYXdJbmRleGVkSW5kaXJlY3RDb3VudEtIUiB2a0NtZERyYXdJbmRl
eGVkSW5kaXJlY3RDb3VudEtIUjsKKysgICAgUEZOX3ZrQ21kRHJhd0luZGlyZWN0Q291bnRLSFIg
dmtDbWREcmF3SW5kaXJlY3RDb3VudEtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfZHJh
d19pbmRpcmVjdF9jb3VudCkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2Vf
ZmQpCistCVBGTl92a0dldEZlbmNlRmRLSFIgdmtHZXRGZW5jZUZkS0hSOworLQlQRk5fdmtJbXBv
cnRGZW5jZUZkS0hSIHZrSW1wb3J0RmVuY2VGZEtIUjsKKysgICAgUEZOX3ZrR2V0RmVuY2VGZEtI
UiB2a0dldEZlbmNlRmRLSFI7CisrICAgIFBGTl92a0ltcG9ydEZlbmNlRmRLSFIgdmtJbXBvcnRG
ZW5jZUZkS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9mZW5jZV9mZCkg
Ki8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfZmVuY2Vfd2luMzIpCistCVBGTl92a0dl
dEZlbmNlV2luMzJIYW5kbGVLSFIgdmtHZXRGZW5jZVdpbjMySGFuZGxlS0hSOworLQlQRk5fdmtJ
bXBvcnRGZW5jZVdpbjMySGFuZGxlS0hSIHZrSW1wb3J0RmVuY2VXaW4zMkhhbmRsZUtIUjsKKysg
ICAgUEZOX3ZrR2V0RmVuY2VXaW4zMkhhbmRsZUtIUiB2a0dldEZlbmNlV2luMzJIYW5kbGVLSFI7
CisrICAgIFBGTl92a0ltcG9ydEZlbmNlV2luMzJIYW5kbGVLSFIgdmtJbXBvcnRGZW5jZVdpbjMy
SGFuZGxlS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9mZW5jZV93aW4z
MikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZXh0ZXJuYWxfbWVtb3J5X2ZkKQorLQlQRk5fdmtH
ZXRNZW1vcnlGZEtIUiB2a0dldE1lbW9yeUZkS0hSOworLQlQRk5fdmtHZXRNZW1vcnlGZFByb3Bl
cnRpZXNLSFIgdmtHZXRNZW1vcnlGZFByb3BlcnRpZXNLSFI7CisrICAgIFBGTl92a0dldE1lbW9y
eUZkS0hSIHZrR2V0TWVtb3J5RmRLSFI7CisrICAgIFBGTl92a0dldE1lbW9yeUZkUHJvcGVydGll
c0tIUiB2a0dldE1lbW9yeUZkUHJvcGVydGllc0tIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19L
SFJfZXh0ZXJuYWxfbWVtb3J5X2ZkKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9t
ZW1vcnlfd2luMzIpCistCVBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlS0hSIHZrR2V0TWVtb3J5
V2luMzJIYW5kbGVLSFI7CistCVBGTl92a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tI
UiB2a0dldE1lbW9yeVdpbjMySGFuZGxlUHJvcGVydGllc0tIUjsKKysgICAgUEZOX3ZrR2V0TWVt
b3J5V2luMzJIYW5kbGVLSFIgdmtHZXRNZW1vcnlXaW4zMkhhbmRsZUtIUjsKKysgICAgUEZOX3Zr
R2V0TWVtb3J5V2luMzJIYW5kbGVQcm9wZXJ0aWVzS0hSIHZrR2V0TWVtb3J5V2luMzJIYW5kbGVQ
cm9wZXJ0aWVzS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9leHRlcm5hbF9tZW1vcnlf
d2luMzIpICovCisgI2lmIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9mZCkKKy0J
UEZOX3ZrR2V0U2VtYXBob3JlRmRLSFIgdmtHZXRTZW1hcGhvcmVGZEtIUjsKKy0JUEZOX3ZrSW1w
b3J0U2VtYXBob3JlRmRLSFIgdmtJbXBvcnRTZW1hcGhvcmVGZEtIUjsKKysgICAgUEZOX3ZrR2V0
U2VtYXBob3JlRmRLSFIgdmtHZXRTZW1hcGhvcmVGZEtIUjsKKysgICAgUEZOX3ZrSW1wb3J0U2Vt
YXBob3JlRmRLSFIgdmtJbXBvcnRTZW1hcGhvcmVGZEtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX2ZkKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9leHRl
cm5hbF9zZW1hcGhvcmVfd2luMzIpCistCVBGTl92a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hS
IHZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFI7CistCVBGTl92a0ltcG9ydFNlbWFwaG9yZVdp
bjMySGFuZGxlS0hSIHZrSW1wb3J0U2VtYXBob3JlV2luMzJIYW5kbGVLSFI7CisrICAgIFBGTl92
a0dldFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSIHZrR2V0U2VtYXBob3JlV2luMzJIYW5kbGVLSFI7
CisrICAgIFBGTl92a0ltcG9ydFNlbWFwaG9yZVdpbjMySGFuZGxlS0hSIHZrSW1wb3J0U2VtYXBo
b3JlV2luMzJIYW5kbGVLSFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX2V4dGVybmFsX3Nl
bWFwaG9yZV93aW4zMikgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfZ2V0X21lbW9yeV9yZXF1aXJl
bWVudHMyKQorLQlQRk5fdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyS0hSIHZrR2V0QnVm
ZmVyTWVtb3J5UmVxdWlyZW1lbnRzMktIUjsKKy0JUEZOX3ZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJl
bWVudHMyS0hSIHZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMyS0hSOworLQlQRk5fdmtHZXRJ
bWFnZVNwYXJzZU1lbW9yeVJlcXVpcmVtZW50czJLSFIgdmtHZXRJbWFnZVNwYXJzZU1lbW9yeVJl
cXVpcmVtZW50czJLSFI7CisrICAgIFBGTl92a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50czJL
SFIgdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMyS0hSOworKyAgICBQRk5fdmtHZXRJbWFn
ZU1lbW9yeVJlcXVpcmVtZW50czJLSFIgdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50czJLSFI7
CisrICAgIFBGTl92a0dldEltYWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMktIUiB2a0dldElt
YWdlU3BhcnNlTWVtb3J5UmVxdWlyZW1lbnRzMktIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19L
SFJfZ2V0X21lbW9yeV9yZXF1aXJlbWVudHMyKSAqLworICNpZiBkZWZpbmVkKFZLX0tIUl9tYWlu
dGVuYW5jZTEpCistCVBGTl92a1RyaW1Db21tYW5kUG9vbEtIUiB2a1RyaW1Db21tYW5kUG9vbEtI
UjsKKysgICAgUEZOX3ZrVHJpbUNvbW1hbmRQb29sS0hSIHZrVHJpbUNvbW1hbmRQb29sS0hSOwor
ICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9tYWludGVuYW5jZTEpICovCisgI2lmIGRlZmluZWQo
VktfS0hSX21haW50ZW5hbmNlMykKKy0JUEZOX3ZrR2V0RGVzY3JpcHRvclNldExheW91dFN1cHBv
cnRLSFIgdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3VwcG9ydEtIUjsKKysgICAgUEZOX3ZrR2V0
RGVzY3JpcHRvclNldExheW91dFN1cHBvcnRLSFIgdmtHZXREZXNjcmlwdG9yU2V0TGF5b3V0U3Vw
cG9ydEtIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfbWFpbnRlbmFuY2UzKSAqLworICNp
ZiBkZWZpbmVkKFZLX0tIUl9wZXJmb3JtYW5jZV9xdWVyeSkKKy0JUEZOX3ZrQWNxdWlyZVByb2Zp
bGluZ0xvY2tLSFIgdmtBY3F1aXJlUHJvZmlsaW5nTG9ja0tIUjsKKy0JUEZOX3ZrUmVsZWFzZVBy
b2ZpbGluZ0xvY2tLSFIgdmtSZWxlYXNlUHJvZmlsaW5nTG9ja0tIUjsKKysgICAgUEZOX3ZrQWNx
dWlyZVByb2ZpbGluZ0xvY2tLSFIgdmtBY3F1aXJlUHJvZmlsaW5nTG9ja0tIUjsKKysgICAgUEZO
X3ZrUmVsZWFzZVByb2ZpbGluZ0xvY2tLSFIgdmtSZWxlYXNlUHJvZmlsaW5nTG9ja0tIUjsKKyAj
ZW5kaWYgLyogZGVmaW5lZChWS19LSFJfcGVyZm9ybWFuY2VfcXVlcnkpICovCisgI2lmIGRlZmlu
ZWQoVktfS0hSX3BpcGVsaW5lX2V4ZWN1dGFibGVfcHJvcGVydGllcykKKy0JUEZOX3ZrR2V0UGlw
ZWxpbmVFeGVjdXRhYmxlSW50ZXJuYWxSZXByZXNlbnRhdGlvbnNLSFIgdmtHZXRQaXBlbGluZUV4
ZWN1dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9uc0tIUjsKKy0JUEZOX3ZrR2V0UGlwZWxpbmVF
eGVjdXRhYmxlUHJvcGVydGllc0tIUiB2a0dldFBpcGVsaW5lRXhlY3V0YWJsZVByb3BlcnRpZXNL
SFI7CistCVBGTl92a0dldFBpcGVsaW5lRXhlY3V0YWJsZVN0YXRpc3RpY3NLSFIgdmtHZXRQaXBl
bGluZUV4ZWN1dGFibGVTdGF0aXN0aWNzS0hSOworKyAgICBQRk5fdmtHZXRQaXBlbGluZUV4ZWN1
dGFibGVJbnRlcm5hbFJlcHJlc2VudGF0aW9uc0tIUiB2a0dldFBpcGVsaW5lRXhlY3V0YWJsZUlu
dGVybmFsUmVwcmVzZW50YXRpb25zS0hSOworKyAgICBQRk5fdmtHZXRQaXBlbGluZUV4ZWN1dGFi
bGVQcm9wZXJ0aWVzS0hSIHZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlUHJvcGVydGllc0tIUjsKKysg
ICAgUEZOX3ZrR2V0UGlwZWxpbmVFeGVjdXRhYmxlU3RhdGlzdGljc0tIUiB2a0dldFBpcGVsaW5l
RXhlY3V0YWJsZVN0YXRpc3RpY3NLSFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3BpcGVs
aW5lX2V4ZWN1dGFibGVfcHJvcGVydGllcykgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfcHVzaF9k
ZXNjcmlwdG9yKQorLQlQRk5fdmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUiB2a0NtZFB1c2hEZXNj
cmlwdG9yU2V0S0hSOworKyAgICBQRk5fdmtDbWRQdXNoRGVzY3JpcHRvclNldEtIUiB2a0NtZFB1
c2hEZXNjcmlwdG9yU2V0S0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2Ny
aXB0b3IpICovCisgI2lmIGRlZmluZWQoVktfS0hSX3NhbXBsZXJfeWNiY3JfY29udmVyc2lvbikK
Ky0JUEZOX3ZrQ3JlYXRlU2FtcGxlclljYmNyQ29udmVyc2lvbktIUiB2a0NyZWF0ZVNhbXBsZXJZ
Y2JjckNvbnZlcnNpb25LSFI7CistCVBGTl92a0Rlc3Ryb3lTYW1wbGVyWWNiY3JDb252ZXJzaW9u
S0hSIHZrRGVzdHJveVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFI7CisrICAgIFBGTl92a0NyZWF0
ZVNhbXBsZXJZY2JjckNvbnZlcnNpb25LSFIgdmtDcmVhdGVTYW1wbGVyWWNiY3JDb252ZXJzaW9u
S0hSOworKyAgICBQRk5fdmtEZXN0cm95U2FtcGxlclljYmNyQ29udmVyc2lvbktIUiB2a0Rlc3Ry
b3lTYW1wbGVyWWNiY3JDb252ZXJzaW9uS0hSOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX0tIUl9z
YW1wbGVyX3ljYmNyX2NvbnZlcnNpb24pICovCisgI2lmIGRlZmluZWQoVktfS0hSX3NoYXJlZF9w
cmVzZW50YWJsZV9pbWFnZSkKKy0JUEZOX3ZrR2V0U3dhcGNoYWluU3RhdHVzS0hSIHZrR2V0U3dh
cGNoYWluU3RhdHVzS0hSOworKyAgICBQRk5fdmtHZXRTd2FwY2hhaW5TdGF0dXNLSFIgdmtHZXRT
d2FwY2hhaW5TdGF0dXNLSFI7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfS0hSX3NoYXJlZF9wcmVz
ZW50YWJsZV9pbWFnZSkgKi8KKyAjaWYgZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKQorLQlQRk5f
dmtBY3F1aXJlTmV4dEltYWdlS0hSIHZrQWNxdWlyZU5leHRJbWFnZUtIUjsKKy0JUEZOX3ZrQ3Jl
YXRlU3dhcGNoYWluS0hSIHZrQ3JlYXRlU3dhcGNoYWluS0hSOworLQlQRk5fdmtEZXN0cm95U3dh
cGNoYWluS0hSIHZrRGVzdHJveVN3YXBjaGFpbktIUjsKKy0JUEZOX3ZrR2V0U3dhcGNoYWluSW1h
Z2VzS0hSIHZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSOworLQlQRk5fdmtRdWV1ZVByZXNlbnRLSFIg
dmtRdWV1ZVByZXNlbnRLSFI7CisrICAgIFBGTl92a0FjcXVpcmVOZXh0SW1hZ2VLSFIgdmtBY3F1
aXJlTmV4dEltYWdlS0hSOworKyAgICBQRk5fdmtDcmVhdGVTd2FwY2hhaW5LSFIgdmtDcmVhdGVT
d2FwY2hhaW5LSFI7CisrICAgIFBGTl92a0Rlc3Ryb3lTd2FwY2hhaW5LSFIgdmtEZXN0cm95U3dh
cGNoYWluS0hSOworKyAgICBQRk5fdmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIgdmtHZXRTd2FwY2hh
aW5JbWFnZXNLSFI7CisrICAgIFBGTl92a1F1ZXVlUHJlc2VudEtIUiB2a1F1ZXVlUHJlc2VudEtI
UjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSAqLworICNpZiBkZWZpbmVk
KFZLX0tIUl90aW1lbGluZV9zZW1hcGhvcmUpCistCVBGTl92a0dldFNlbWFwaG9yZUNvdW50ZXJW
YWx1ZUtIUiB2a0dldFNlbWFwaG9yZUNvdW50ZXJWYWx1ZUtIUjsKKy0JUEZOX3ZrU2lnbmFsU2Vt
YXBob3JlS0hSIHZrU2lnbmFsU2VtYXBob3JlS0hSOworLQlQRk5fdmtXYWl0U2VtYXBob3Jlc0tI
UiB2a1dhaXRTZW1hcGhvcmVzS0hSOworKyAgICBQRk5fdmtHZXRTZW1hcGhvcmVDb3VudGVyVmFs
dWVLSFIgdmtHZXRTZW1hcGhvcmVDb3VudGVyVmFsdWVLSFI7CisrICAgIFBGTl92a1NpZ25hbFNl
bWFwaG9yZUtIUiB2a1NpZ25hbFNlbWFwaG9yZUtIUjsKKysgICAgUEZOX3ZrV2FpdFNlbWFwaG9y
ZXNLSFIgdmtXYWl0U2VtYXBob3Jlc0tIUjsKKyAjZW5kaWYgLyogZGVmaW5lZChWS19LSFJfdGlt
ZWxpbmVfc2VtYXBob3JlKSAqLworICNpZiBkZWZpbmVkKFZLX05WWF9kZXZpY2VfZ2VuZXJhdGVk
X2NvbW1hbmRzKQorLQlQRk5fdmtDbWRQcm9jZXNzQ29tbWFuZHNOVlggdmtDbWRQcm9jZXNzQ29t
bWFuZHNOVlg7CistCVBGTl92a0NtZFJlc2VydmVTcGFjZUZvckNvbW1hbmRzTlZYIHZrQ21kUmVz
ZXJ2ZVNwYWNlRm9yQ29tbWFuZHNOVlg7CistCVBGTl92a0NyZWF0ZUluZGlyZWN0Q29tbWFuZHNM
YXlvdXROVlggdmtDcmVhdGVJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZYOworLQlQRk5fdmtDcmVh
dGVPYmplY3RUYWJsZU5WWCB2a0NyZWF0ZU9iamVjdFRhYmxlTlZYOworLQlQRk5fdmtEZXN0cm95
SW5kaXJlY3RDb21tYW5kc0xheW91dE5WWCB2a0Rlc3Ryb3lJbmRpcmVjdENvbW1hbmRzTGF5b3V0
TlZYOworLQlQRk5fdmtEZXN0cm95T2JqZWN0VGFibGVOVlggdmtEZXN0cm95T2JqZWN0VGFibGVO
Vlg7CistCVBGTl92a1JlZ2lzdGVyT2JqZWN0c05WWCB2a1JlZ2lzdGVyT2JqZWN0c05WWDsKKy0J
UEZOX3ZrVW5yZWdpc3Rlck9iamVjdHNOVlggdmtVbnJlZ2lzdGVyT2JqZWN0c05WWDsKKysgICAg
UEZOX3ZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYIHZrQ21kUHJvY2Vzc0NvbW1hbmRzTlZYOworKyAg
ICBQRk5fdmtDbWRSZXNlcnZlU3BhY2VGb3JDb21tYW5kc05WWCB2a0NtZFJlc2VydmVTcGFjZUZv
ckNvbW1hbmRzTlZYOworKyAgICBQRk5fdmtDcmVhdGVJbmRpcmVjdENvbW1hbmRzTGF5b3V0TlZY
IHZrQ3JlYXRlSW5kaXJlY3RDb21tYW5kc0xheW91dE5WWDsKKysgICAgUEZOX3ZrQ3JlYXRlT2Jq
ZWN0VGFibGVOVlggdmtDcmVhdGVPYmplY3RUYWJsZU5WWDsKKysgICAgUEZOX3ZrRGVzdHJveUlu
ZGlyZWN0Q29tbWFuZHNMYXlvdXROVlggdmtEZXN0cm95SW5kaXJlY3RDb21tYW5kc0xheW91dE5W
WDsKKysgICAgUEZOX3ZrRGVzdHJveU9iamVjdFRhYmxlTlZYIHZrRGVzdHJveU9iamVjdFRhYmxl
TlZYOworKyAgICBQRk5fdmtSZWdpc3Rlck9iamVjdHNOVlggdmtSZWdpc3Rlck9iamVjdHNOVlg7
CisrICAgIFBGTl92a1VucmVnaXN0ZXJPYmplY3RzTlZYIHZrVW5yZWdpc3Rlck9iamVjdHNOVlg7
CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZYX2RldmljZV9nZW5lcmF0ZWRfY29tbWFuZHMpICov
CisgI2lmIGRlZmluZWQoVktfTlZYX2ltYWdlX3ZpZXdfaGFuZGxlKQorLQlQRk5fdmtHZXRJbWFn
ZVZpZXdIYW5kbGVOVlggdmtHZXRJbWFnZVZpZXdIYW5kbGVOVlg7CisrICAgIFBGTl92a0dldElt
YWdlVmlld0hhbmRsZU5WWCB2a0dldEltYWdlVmlld0hhbmRsZU5WWDsKKyAjZW5kaWYgLyogZGVm
aW5lZChWS19OVlhfaW1hZ2Vfdmlld19oYW5kbGUpICovCisgI2lmIGRlZmluZWQoVktfTlZfY2xp
cF9zcGFjZV93X3NjYWxpbmcpCistCVBGTl92a0NtZFNldFZpZXdwb3J0V1NjYWxpbmdOViB2a0Nt
ZFNldFZpZXdwb3J0V1NjYWxpbmdOVjsKKysgICAgUEZOX3ZrQ21kU2V0Vmlld3BvcnRXU2NhbGlu
Z05WIHZrQ21kU2V0Vmlld3BvcnRXU2NhbGluZ05WOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05W
X2NsaXBfc3BhY2Vfd19zY2FsaW5nKSAqLworICNpZiBkZWZpbmVkKFZLX05WX2RldmljZV9kaWFn
bm9zdGljX2NoZWNrcG9pbnRzKQorLQlQRk5fdmtDbWRTZXRDaGVja3BvaW50TlYgdmtDbWRTZXRD
aGVja3BvaW50TlY7CistCVBGTl92a0dldFF1ZXVlQ2hlY2twb2ludERhdGFOViB2a0dldFF1ZXVl
Q2hlY2twb2ludERhdGFOVjsKKysgICAgUEZOX3ZrQ21kU2V0Q2hlY2twb2ludE5WIHZrQ21kU2V0
Q2hlY2twb2ludE5WOworKyAgICBQRk5fdmtHZXRRdWV1ZUNoZWNrcG9pbnREYXRhTlYgdmtHZXRR
dWV1ZUNoZWNrcG9pbnREYXRhTlY7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfZGV2aWNlX2Rp
YWdub3N0aWNfY2hlY2twb2ludHMpICovCisgI2lmIGRlZmluZWQoVktfTlZfZXh0ZXJuYWxfbWVt
b3J5X3dpbjMyKQorLQlQRk5fdmtHZXRNZW1vcnlXaW4zMkhhbmRsZU5WIHZrR2V0TWVtb3J5V2lu
MzJIYW5kbGVOVjsKKysgICAgUEZOX3ZrR2V0TWVtb3J5V2luMzJIYW5kbGVOViB2a0dldE1lbW9y
eVdpbjMySGFuZGxlTlY7CisgI2VuZGlmIC8qIGRlZmluZWQoVktfTlZfZXh0ZXJuYWxfbWVtb3J5
X3dpbjMyKSAqLworICNpZiBkZWZpbmVkKFZLX05WX21lc2hfc2hhZGVyKQorLQlQRk5fdmtDbWRE
cmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WIHZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0Q291
bnROVjsKKy0JUEZOX3ZrQ21kRHJhd01lc2hUYXNrc0luZGlyZWN0TlYgdmtDbWREcmF3TWVzaFRh
c2tzSW5kaXJlY3ROVjsKKy0JUEZOX3ZrQ21kRHJhd01lc2hUYXNrc05WIHZrQ21kRHJhd01lc2hU
YXNrc05WOworKyAgICBQRk5fdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WIHZrQ21k
RHJhd01lc2hUYXNrc0luZGlyZWN0Q291bnROVjsKKysgICAgUEZOX3ZrQ21kRHJhd01lc2hUYXNr
c0luZGlyZWN0TlYgdmtDbWREcmF3TWVzaFRhc2tzSW5kaXJlY3ROVjsKKysgICAgUEZOX3ZrQ21k
RHJhd01lc2hUYXNrc05WIHZrQ21kRHJhd01lc2hUYXNrc05WOworICNlbmRpZiAvKiBkZWZpbmVk
KFZLX05WX21lc2hfc2hhZGVyKSAqLworICNpZiBkZWZpbmVkKFZLX05WX3JheV90cmFjaW5nKQor
LQlQRk5fdmtCaW5kQWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5TlYgdmtCaW5kQWNjZWxlcmF0
aW9uU3RydWN0dXJlTWVtb3J5TlY7CistCVBGTl92a0NtZEJ1aWxkQWNjZWxlcmF0aW9uU3RydWN0
dXJlTlYgdmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WOworLQlQRk5fdmtDbWRDb3B5
QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYgdmtDbWRDb3B5QWNjZWxlcmF0aW9uU3RydWN0dXJlTlY7
CistCVBGTl92a0NtZFRyYWNlUmF5c05WIHZrQ21kVHJhY2VSYXlzTlY7CistCVBGTl92a0NtZFdy
aXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOViB2a0NtZFdyaXRlQWNjZWxlcmF0
aW9uU3RydWN0dXJlc1Byb3BlcnRpZXNOVjsKKy0JUEZOX3ZrQ29tcGlsZURlZmVycmVkTlYgdmtD
b21waWxlRGVmZXJyZWROVjsKKy0JUEZOX3ZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlYg
dmtDcmVhdGVBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOVjsKKy0JUEZOX3ZrQ3JlYXRlUmF5VHJhY2lu
Z1BpcGVsaW5lc05WIHZrQ3JlYXRlUmF5VHJhY2luZ1BpcGVsaW5lc05WOworLQlQRk5fdmtEZXN0
cm95QWNjZWxlcmF0aW9uU3RydWN0dXJlTlYgdmtEZXN0cm95QWNjZWxlcmF0aW9uU3RydWN0dXJl
TlY7CistCVBGTl92a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZUhhbmRsZU5WIHZrR2V0QWNjZWxl
cmF0aW9uU3RydWN0dXJlSGFuZGxlTlY7CistCVBGTl92a0dldEFjY2VsZXJhdGlvblN0cnVjdHVy
ZU1lbW9yeVJlcXVpcmVtZW50c05WIHZrR2V0QWNjZWxlcmF0aW9uU3RydWN0dXJlTWVtb3J5UmVx
dWlyZW1lbnRzTlY7CistCVBGTl92a0dldFJheVRyYWNpbmdTaGFkZXJHcm91cEhhbmRsZXNOViB2
a0dldFJheVRyYWNpbmdTaGFkZXJHcm91cEhhbmRsZXNOVjsKKysgICAgUEZOX3ZrQmluZEFjY2Vs
ZXJhdGlvblN0cnVjdHVyZU1lbW9yeU5WIHZrQmluZEFjY2VsZXJhdGlvblN0cnVjdHVyZU1lbW9y
eU5WOworKyAgICBQRk5fdmtDbWRCdWlsZEFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIHZrQ21kQnVp
bGRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVOVjsKKysgICAgUEZOX3ZrQ21kQ29weUFjY2VsZXJhdGlv
blN0cnVjdHVyZU5WIHZrQ21kQ29weUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WOworKyAgICBQRk5f
dmtDbWRUcmFjZVJheXNOViB2a0NtZFRyYWNlUmF5c05WOworKyAgICBQRk5fdmtDbWRXcml0ZUFj
Y2VsZXJhdGlvblN0cnVjdHVyZXNQcm9wZXJ0aWVzTlYgdmtDbWRXcml0ZUFjY2VsZXJhdGlvblN0
cnVjdHVyZXNQcm9wZXJ0aWVzTlY7CisrICAgIFBGTl92a0NvbXBpbGVEZWZlcnJlZE5WIHZrQ29t
cGlsZURlZmVycmVkTlY7CisrICAgIFBGTl92a0NyZWF0ZUFjY2VsZXJhdGlvblN0cnVjdHVyZU5W
IHZrQ3JlYXRlQWNjZWxlcmF0aW9uU3RydWN0dXJlTlY7CisrICAgIFBGTl92a0NyZWF0ZVJheVRy
YWNpbmdQaXBlbGluZXNOViB2a0NyZWF0ZVJheVRyYWNpbmdQaXBlbGluZXNOVjsKKysgICAgUEZO
X3ZrRGVzdHJveUFjY2VsZXJhdGlvblN0cnVjdHVyZU5WIHZrRGVzdHJveUFjY2VsZXJhdGlvblN0
cnVjdHVyZU5WOworKyAgICBQRk5fdmtHZXRBY2NlbGVyYXRpb25TdHJ1Y3R1cmVIYW5kbGVOViB2
a0dldEFjY2VsZXJhdGlvblN0cnVjdHVyZUhhbmRsZU5WOworKyAgICBQRk5fdmtHZXRBY2NlbGVy
YXRpb25TdHJ1Y3R1cmVNZW1vcnlSZXF1aXJlbWVudHNOViB2a0dldEFjY2VsZXJhdGlvblN0cnVj
dHVyZU1lbW9yeVJlcXVpcmVtZW50c05WOworKyAgICBQRk5fdmtHZXRSYXlUcmFjaW5nU2hhZGVy
R3JvdXBIYW5kbGVzTlYgdmtHZXRSYXlUcmFjaW5nU2hhZGVyR3JvdXBIYW5kbGVzTlY7CisgI2Vu
ZGlmIC8qIGRlZmluZWQoVktfTlZfcmF5X3RyYWNpbmcpICovCisgI2lmIGRlZmluZWQoVktfTlZf
c2Npc3Nvcl9leGNsdXNpdmUpCistCVBGTl92a0NtZFNldEV4Y2x1c2l2ZVNjaXNzb3JOViB2a0Nt
ZFNldEV4Y2x1c2l2ZVNjaXNzb3JOVjsKKysgICAgUEZOX3ZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nv
ck5WIHZrQ21kU2V0RXhjbHVzaXZlU2Npc3Nvck5WOworICNlbmRpZiAvKiBkZWZpbmVkKFZLX05W
X3NjaXNzb3JfZXhjbHVzaXZlKSAqLworICNpZiBkZWZpbmVkKFZLX05WX3NoYWRpbmdfcmF0ZV9p
bWFnZSkKKy0JUEZOX3ZrQ21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViB2a0NtZEJpbmRTaGFkaW5n
UmF0ZUltYWdlTlY7CistCVBGTl92a0NtZFNldENvYXJzZVNhbXBsZU9yZGVyTlYgdmtDbWRTZXRD
b2Fyc2VTYW1wbGVPcmRlck5WOworLQlQRk5fdmtDbWRTZXRWaWV3cG9ydFNoYWRpbmdSYXRlUGFs
ZXR0ZU5WIHZrQ21kU2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOVjsKKysgICAgUEZOX3Zr
Q21kQmluZFNoYWRpbmdSYXRlSW1hZ2VOViB2a0NtZEJpbmRTaGFkaW5nUmF0ZUltYWdlTlY7Cisr
ICAgIFBGTl92a0NtZFNldENvYXJzZVNhbXBsZU9yZGVyTlYgdmtDbWRTZXRDb2Fyc2VTYW1wbGVP
cmRlck5WOworKyAgICBQRk5fdmtDbWRTZXRWaWV3cG9ydFNoYWRpbmdSYXRlUGFsZXR0ZU5WIHZr
Q21kU2V0Vmlld3BvcnRTaGFkaW5nUmF0ZVBhbGV0dGVOVjsKKyAjZW5kaWYgLyogZGVmaW5lZChW
S19OVl9zaGFkaW5nX3JhdGVfaW1hZ2UpICovCisgI2lmIChkZWZpbmVkKFZLX0VYVF9mdWxsX3Nj
cmVlbl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkpIHx8IChkZWZp
bmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfVkVSU0lPTl8x
XzEpKQorLQlQRk5fdmtHZXREZXZpY2VHcm91cFN1cmZhY2VQcmVzZW50TW9kZXMyRVhUIHZrR2V0
RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzMkVYVDsKKysgICAgUEZOX3ZrR2V0RGV2aWNl
R3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzMkVYVCB2a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNl
bnRNb2RlczJFWFQ7CisgI2VuZGlmIC8qIChkZWZpbmVkKFZLX0VYVF9mdWxsX3NjcmVlbl9leGNs
dXNpdmUpICYmIGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkpIHx8IChkZWZpbmVkKFZLX0VY
VF9mdWxsX3NjcmVlbl9leGNsdXNpdmUpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLwor
ICNpZiAoZGVmaW5lZChWS19LSFJfZGVzY3JpcHRvcl91cGRhdGVfdGVtcGxhdGUpICYmIGRlZmlu
ZWQoVktfS0hSX3B1c2hfZGVzY3JpcHRvcikpIHx8IChkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2Ny
aXB0b3IpICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKQorLQlQRk5fdmtDbWRQdXNoRGVzY3Jp
cHRvclNldFdpdGhUZW1wbGF0ZUtIUiB2a0NtZFB1c2hEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRl
S0hSOworKyAgICBQRk5fdmtDbWRQdXNoRGVzY3JpcHRvclNldFdpdGhUZW1wbGF0ZUtIUiB2a0Nt
ZFB1c2hEZXNjcmlwdG9yU2V0V2l0aFRlbXBsYXRlS0hSOworICNlbmRpZiAvKiAoZGVmaW5lZChW
S19LSFJfZGVzY3JpcHRvcl91cGRhdGVfdGVtcGxhdGUpICYmIGRlZmluZWQoVktfS0hSX3B1c2hf
ZGVzY3JpcHRvcikpIHx8IChkZWZpbmVkKFZLX0tIUl9wdXNoX2Rlc2NyaXB0b3IpICYmIGRlZmlu
ZWQoVktfVkVSU0lPTl8xXzEpKSAqLworICNpZiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3Vw
KSAmJiBkZWZpbmVkKFZLX0tIUl9zdXJmYWNlKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFp
bikgJiYgZGVmaW5lZChWS19WRVJTSU9OXzFfMSkpCistCVBGTl92a0dldERldmljZUdyb3VwUHJl
c2VudENhcGFiaWxpdGllc0tIUiB2a0dldERldmljZUdyb3VwUHJlc2VudENhcGFiaWxpdGllc0tI
UjsKKy0JUEZOX3ZrR2V0RGV2aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSIHZrR2V0RGV2
aWNlR3JvdXBTdXJmYWNlUHJlc2VudE1vZGVzS0hSOworKyAgICBQRk5fdmtHZXREZXZpY2VHcm91
cFByZXNlbnRDYXBhYmlsaXRpZXNLSFIgdmtHZXREZXZpY2VHcm91cFByZXNlbnRDYXBhYmlsaXRp
ZXNLSFI7CisrICAgIFBGTl92a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiB2
a0dldERldmljZUdyb3VwU3VyZmFjZVByZXNlbnRNb2Rlc0tIUjsKKyAjZW5kaWYgLyogKGRlZmlu
ZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5lZChWS19LSFJfc3VyZmFjZSkpIHx8IChk
ZWZpbmVkKFZLX0tIUl9zd2FwY2hhaW4pICYmIGRlZmluZWQoVktfVkVSU0lPTl8xXzEpKSAqLwor
ICNpZiAoZGVmaW5lZChWS19LSFJfZGV2aWNlX2dyb3VwKSAmJiBkZWZpbmVkKFZLX0tIUl9zd2Fw
Y2hhaW4pKSB8fCAoZGVmaW5lZChWS19LSFJfc3dhcGNoYWluKSAmJiBkZWZpbmVkKFZLX1ZFUlNJ
T05fMV8xKSkKKy0JUEZOX3ZrQWNxdWlyZU5leHRJbWFnZTJLSFIgdmtBY3F1aXJlTmV4dEltYWdl
MktIUjsKKysgICAgUEZOX3ZrQWNxdWlyZU5leHRJbWFnZTJLSFIgdmtBY3F1aXJlTmV4dEltYWdl
MktIUjsKKyAjZW5kaWYgLyogKGRlZmluZWQoVktfS0hSX2RldmljZV9ncm91cCkgJiYgZGVmaW5l
ZChWS19LSFJfc3dhcGNoYWluKSkgfHwgKGRlZmluZWQoVktfS0hSX3N3YXBjaGFpbikgJiYgZGVm
aW5lZChWS19WRVJTSU9OXzFfMSkpICovCistCS8qIFZPTEtfR0VORVJBVEVfREVWSUNFX1RBQkxF
ICovCisrICAgIC8qIFZPTEtfR0VORVJBVEVfREVWSUNFX1RBQkxFICovCisgfTsKICAKKyAvKiBW
T0xLX0dFTkVSQVRFX1BST1RPVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZG9jL0NhcHR1cmVBbmRSZXBsYXkubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9kb2MvQ2FwdHVyZUFuZFJlcGxheS5tZAppbmRleCBmNjc3ZGRhZTI2MGI2ZDI0Mzc1OWY0Njhh
NDcyOWJkOGYxZjgxYTlkLi5lODhjOTQ0YWUyZjRlOWNmYzNjNGQwNWYzMmY0MTU5ZjBiZDIzYTQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvQ2FwdHVyZUFuZFJlcGxh
eS5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvQ2FwdHVyZUFuZFJlcGxheS5t
ZApAQCAtMzIsNiArMzIsOCBAQCBTb21lIHNpbXBsZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY29u
dHJvbCBmcmFtZSBjYXB0dXJlOgogCiAgKiBgQU5HTEVfQ0FQVFVSRV9FTkFCTEVEYDoKICAgICog
U2V0IHRvIGAwYCB0byBkaXNhYmxlIGNhcHR1cmUgZW50aXJlbHkuIERlZmF1bHQgaXMgYDFgLgor
ICogYEFOR0xFX0NBUFRVUkVfQ09NUFJFU1NJT05gOgorICAgKiBTZXQgdG8gYDBgIHRvIGRpc2Fi
bGUgY2FwdHVyZSBjb21wcmVzc2lvbi4gRGVmYXVsdCBpcyBgMWAuCiAgKiBgQU5HTEVfQ0FQVFVS
RV9PVVRfRElSPTxwYXRoPmA6CiAgICAqIENhbiBzcGVjaWZ5IGFuIGFsdGVybmF0ZSByZXBsYXkg
b3V0cHV0IGRpcmVjdG9yeS4KICAgICogRXhhbXBsZTogYEFOR0xFX0NBUFRVUkVfT1VUX0RJUj1z
YW1wbGVzL2NhcHR1cmVfcmVwbGF5YC4gRGVmYXVsdCBpcyB0aGUgQ1dELgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0NvbnRyaWJ1dGluZ0NvZGUubWQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9kb2MvQ29udHJpYnV0aW5nQ29kZS5tZAppbmRleCBjZWY1ODIzYTg2
ZjI5MDgyNjc0OTMzOGYwOTVlMTM5NTQ5OWZiNzM4Li40ZDhjZjgyYzg0ZmQ1Yzk4YTU1OTY0OWZh
ZGRhOGZlMDQ3ZmU4OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2Mv
Q29udHJpYnV0aW5nQ29kZS5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvQ29u
dHJpYnV0aW5nQ29kZS5tZApAQCAtNCw4ICs0LDcgQEAKIAogKiBXaGV0aGVyIHlvdSdyZSB3cml0
aW5nIGEgbmV3IGZlYXR1cmUgb3IgZml4aW5nIGFuIGV4aXN0aW5nIGJ1ZywgaXQgcGF5cyB0byBn
ZXQgYSBzZWNvbmQgb3BpbmlvbgogICBiZWZvcmUgeW91IGdldCB0b28gZmFyLiBJZiBpdCdzIGEg
bmV3IGZlYXR1cmUgaWRlYSwgcG9zdCB0byB0aGUgZGlzY3Vzc2lvbiBncm91cAotICAoW2FuZ2xl
cHJvamVjdF1bQU5HTEUtd2Vic2l0ZV0pIGFuZCBwcm9wb3NlIGl0IG9yIHRhbGsgd2l0aCB0aGUg
QU5HTEUgdGVhbSBvbiBJUkMgaW4gdGhlCi0gIGAjQU5HTEVwcm9qZWN0YCBjaGFubmVsIG9uIEZy
ZWVOb2RlLgorICAoW2FuZ2xlcHJvamVjdF1bQU5HTEUtd2Vic2l0ZV0pLgogKiBOb3QgYWxsIGJ1
Z3MgaW4gb3VyIFtidWcgc3lzdGVtXVthbmdsZWJ1Zy5jb21dIGFyZSBhc3NpZ25lZCwgYnV0IGlm
IHRoZSBvbmUgeW91J3JlIGludGVyZXN0ZWQgaW4KICAgZml4aW5nIGlzLCBzZW5kIGEgbm90ZSB0
byB0aGUgcGVyc29uIGl0J3MgYXNzaWduZWQgdG8gYW5kIGFzayBpZiB0aGV5IHdvdWxkIGxpa2Ug
YSBwYXRjaC4KICogQmVoYXZpb3IgY2hhbmdlcyBhbmQgYW55dGhpbmcgbm9udHJpdmlhbCAoaS5l
LiBhbnl0aGluZyBvdGhlciB0aGFuIHNpbXBsZSBjbGVhbnVwcyBhbmQgc3R5bGUKQEAgLTIyLDI4
ICsyMSwzMiBAQAogIyMjIENvZGUKIAogMS4gTXVzdCBjb25mb3JtIHRvIHRoZSBbQU5HTEUgc3R5
bGVdW0FOR0xFLXN0eWxlXSBndWlkZWxpbmVzLgotMi4gTXVzdCBiZSB0ZXN0ZWQuIChzZWUgdGhl
ICdUZXN0aW5nJyBzZWN0aW9uIGJlbG93KQorMi4gTXVzdCBiZSB0ZXN0ZWQuIChzZWUgdGhlIFtU
ZXN0aW5nXVtUZXN0aW5nXSBzZWN0aW9uIGJlbG93KQogMy4gU2hvdWxkIGJlIGEgcmVhc29uYWJs
ZSBzaXplIHRvIHJldmlldy4gIEdpYW50IHBhdGNoZXMgYXJlIHVubGlrZWx5IHRvIGdldCByZXZp
ZXdlZCBxdWlja2x5LgogCiBbQU5HTEUtc3R5bGVdOiBDb2RpbmdTdGFuZGFyZC5tZAorW1Rlc3Rp
bmddOiAjVGVzdGluZwogCiAjIyMgQnVpbGQgbWFpbnRlbmFuY2UKIAogMS4gSWYgeW91IGFkZGVk
IG9yIHJlbW92ZWQgc291cmNlIGZpbGVzOgotICAgKiBZb3UgX211c3RfIHVwZGF0ZSB0aGUgYnVp
bGQgZmlsZXMgd2l0aCB5b3VyIGNoYW5nZXMuIFNlZSBgc3JjL2xpYkdMRVN2Mi5nbmlgIGFuZAot
ICAgYHNyYy9jb21waWxlci5nbmlgLgorICAgKiBZb3UgX211c3RfIHVwZGF0ZSB0aGUgYnVpbGQg
ZmlsZXMgd2l0aCB5b3VyIGNoYW5nZXMuIFNlZSBbYHNyYy9saWJHTEVTdjIuZ25pYF1bbGliR0xF
U3YyLmduaV0KKyAgICAgYW5kIFtgc3JjL2NvbXBpbGVyLmduaWBdW2NvbXBpbGVyLmduaV0uCiAy
LiBBTkdMRSdzIEJVSUxELmduIHNjcmlwdCBpcyB1c2VkIGJ5IFtDaHJvbWl1bSdzIGduIGJ1aWxk
XVtnbi1idWlsZC1jb25maWddLiBJZiB5b3UgY2hhbmdlIGJ1aWxkCiAgICBmaWxlcyBvdGhlciB0
aGFuIHRvIGFkZCBvciByZW1vdmUgc291cmNlIGZpbGVzIGJlIGF3YXJlIHlvdSBjb3VsZCBicmVh
ayB0aGUgQ2hyb21pdW0gYnVpbGQuCiAgICBBTkdMRSdzIGNvbW1pdCBxdWV1ZSAoQ1EpIHdpbGwg
ZGV0ZWN0IHN1Y2ggYnJlYWthZ2UuIEFzayBhIHByb2plY3QgbWVtYmVyIGZvciBoZWxwIHdpdGgg
Q2hyb21pdW0KICAgIGlzc3VlcyBpZiB5b3UgZG9uJ3QgaGF2ZSBhIENocm9taXVtIGNoZWNrb3V0
LgogMy4gU29tZSBnZW5lcmF0ZWQgY29kZSBpcyBiYWtlZCBpbnRvIHRoZSByZXBvc2l0b3J5LiBJ
ZiB5b3UgbW9kaWZ5IHRoZSBzb3VyY2Ugb2YgdGhlc2UgZmlsZXMsIHN1Y2gKLSAgIGFzIHRoZSB0
cmFuc2xhdG9yJ3MgYGdsc2xhbmcubGAsIG9yIG9uZSBvZiB0aGUgaW50ZXJuYWwgc2hhZGVycyBp
biB0aGUgVnVsa2FuIGJhY2tlbmQsIHlvdSB3aWxsCi0gICBuZWVkIHRvIHJ1biBgc2NyaXB0cy9y
dW5fY29kZV9nZW5lcmF0aW9uLnB5YCBhbmQgaW5jbHVkZSB0aGUgYXV0b2dlbmVyYXRlZCBmaWxl
cyBpbiB5b3VyIGNoYW5nZS4KKyAgIGFzIHRoZSB0cmFuc2xhdG9yJ3MgW2BnbHNsYW5nLmxgXVtn
bHNsYW5nLmxdLCBvciBvbmUgb2YgdGhlIGludGVybmFsIHNoYWRlcnMgaW4gdGhlIFZ1bGthbgor
ICAgYmFja2VuZCwgeW91IHdpbGwgbmVlZCB0byBydW4gW2BzY3JpcHRzL3J1bl9jb2RlX2dlbmVy
YXRpb24ucHlgXVtydW5fY29kZV9nZW5lcmF0aW9uLnB5XSBhbmQKKyAgIGluY2x1ZGUgdGhlIGF1
dG9nZW5lcmF0ZWQgZmlsZXMgaW4geW91ciBjaGFuZ2UuCiAgICBgZ2l0IGNsIHVwbG9hZGAgc2hv
dWxkIHdhcm4geW91IGlmIHlvdSBhcmUgbWlzc2luZyB0aGlzIHN0ZXAuCi0gICAgKiBOb3RlIHRo
YXQgdXBkYXRpbmcgdGhlIHRyYW5zbGF0b3IncyBsZXhlciBhbmQgcGFyc2VyICh1c2luZyBgZmxl
eGAgYW5kIGBiaXNvbmApIGlzIG9ubHkKLSAgICAgIHN1cHBvcnRlZCBvbiBMaW51eCBhbmQgV2lu
ZG93cy4KIAogW2duLWJ1aWxkLWNvbmZpZ106IGh0dHBzOi8vd3d3LmNocm9taXVtLm9yZy9kZXZl
bG9wZXJzL2duLWJ1aWxkLWNvbmZpZ3VyYXRpb24KK1tjb21waWxlci5nbmldOiBodHRwczovL2No
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUvKy9yZWZzL2hlYWRzL21hc3Rlci9z
cmMvY29tcGlsZXIuZ25pCitbbGliR0xFU3YyLmduaV06IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9hbmdsZS9hbmdsZS8rL3JlZnMvaGVhZHMvbWFzdGVyL3NyYy9saWJHTEVTdjIu
Z25pCitbZ2xzbGFuZy5sXTogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xl
L2FuZ2xlLysvcmVmcy9oZWFkcy9tYXN0ZXIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFu
Zy5sCitbcnVuX2NvZGVfZ2VuZXJhdGlvbi5weV06IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9hbmdsZS9hbmdsZS8rL3JlZnMvaGVhZHMvbWFzdGVyL3NjcmlwdHMvcnVuX2NvZGVf
Z2VuZXJhdGlvbi5weQogCiAjIyMgVGVzdGluZwogCkBAIC02NCw2ICs2Nyw4IEBACiAgICAqIFdl
IGRvIG5vdCBjdXJyZW50bHkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBydW4gaW5kaXZpZHVhbCBi
b3RzIG9yIHRlc3RzIGluIGEgcnVuLgogKiBUZXN0cyBjYW4gYWxzbyBiZSBydW4gbG9jYWxseSwg
QU5HTEUncyBtYWluIHRlc3RpbmcgbWV0aG9kcyBhcmU6CiAgICAqIGBhbmdsZV91bml0dGVzdHNg
LCBgYW5nbGVfZW5kMmVuZF90ZXN0c2AgYW5kIGBhbmdsZV93aGl0ZV9ib3hfdGVzdHNgIHRhcmdl
dHMuCisgICAqIFRoZSBPcGVuR0wgQ1RTIGFsc28ga25vd24gYXMgW2RyYXdFbGVtZW50cyBRdWFs
aXR5IFByb2dyYW0gKGRFUVApXShkRVFQLm1kKS4KKyAgICAgSWYgeW91J3JlIHdvcmtpbmcgb24g
YSBuZXcgZmVhdHVyZSwgdGhlcmUgbWF5IGJlIHNvbWUgZXh0ZW5zaXZlIHRlc3RzIGZvciBpdCBh
bHJlYWR5IHdyaXR0ZW4uCiAgICAqIFRoZSBbVG9wLW9mLVRyZWUgV2ViR0wgQ29uZm9ybWFuY2Ug
dGVzdHNdW1dlYkdMLUNUU10uCiAgICAgICogSWYgeW91IGFyZSBhIENocm9taXVtIGRldmVsb3Bl
ciwgc2VlCiAgICAgICAgW0J1aWxkaW5nIEFOR0xFIGZvciBDaHJvbWl1bSBEZXZlbG9wbWVudF1b
YnVpbGQtQU5HTEUtZm9yLWNocm9taXVtXSBmb3IgaW5zdHJ1Y3Rpb25zIG9uCkBAIC04NCw4ICs4
OSw2IEBACiAgICAgQU5HTEUgcGF0Y2hlcyB0aGF0IGhhdmUgYmVlbiBjb21taXR0ZWQuICBUaGVy
ZSBtYXkgYmUgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgbm90CiAgICAgdGVzdGVk
IGJ5IHRoZSBBTkdMRSB0cnlib3RzLCBpZiB5b3Ugbm90aWNlIGJyZWFrYWdlIG9uIHRoaXMgd2F0
ZXJmYWxsIGFmdGVyIGxhbmRpbmcgYSBwYXRjaCwKICAgICBwbGVhc2Ugbm90aWZ5IGEgcHJvamVj
dCBtZW1iZXIuCi0gICogQU5HTEUgYWxzbyBpbmNsdWRlcyB0aGUgW2RyYXdFbGVtZW50cyBRdWFs
aXR5IFByb2dyYW0gKGRFUVApXShkRVFQLm1kKSBmb3IgYWRkaXRpb25hbCB0ZXN0aW5nLgotICAg
IElmIHlvdSdyZSB3b3JraW5nIG9uIGEgbmV3IGZlYXR1cmUsIHRoZXJlIG1heSBiZSBzb21lIGV4
dGVuc2l2ZSB0ZXN0cyBmb3IgaXQgYWxyZWFkeSB3cml0dGVuLgogCiBbV2ViR0wtQ1RTXTogaHR0
cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc2RrL3Rlc3RzL3dlYmdsLWNvbmZv
cm1hbmNlLXRlc3RzLmh0bWwKIFtidWlsZC1BTkdMRS1mb3ItQ2hyb21pdW1dOiBCdWlsZGluZ0Fu
Z2xlRm9yQ2hyb21pdW1EZXZlbG9wbWVudC5tZApAQCAtMTc5LDE0ICsxODIsMjMgQEAKIAogIyMj
IFNlbGVjdGluZyByZXZpZXdlcnMKIAotV2hlbiB5b3VyIENMIGlzIHJlYWR5IHRvIHJldmlldywg
YWRkIGFueSBvZiB0aGUgZm9sbG93aW5nIHJldmlld2Vycy4gVGhleSB3aWxsIGJlIGFibGUgdG8g
cm91dGUgeW91cgotQ0wgdG8gYWRkaXRpb25hbCByZXZpZXdlcnMgYXMgbmVjY2Vzc2FyeSBhbmQg
YW5zd2VyIGFueSBxdWVzdGlvbnMgeW91IG1heSBoYXZlIGFib3V0IHRoZSBwcm9jZXNzLiBBbGwK
LW5vbi10cml2YWwgQ0xzIHNob3VsZCBiZSByZXZpZXdlZCBieSB0d28gcmV2aWV3ZXJzLgorV2hl
biB5b3VyIENMIGlzIHJlYWR5IHRvIHJldmlldywgeW91IGNhbiB1c2UgdGhlICJGaW5kIE93bmVy
cyIgYnV0dG9uIGluCitHZXJyaXQgdG8gc2VsZWN0IGFwcHJvcHJpYXRlIGNvZGUgcmV2aWV3ZXJz
LiBUaGV5IHdpbGwgYmUgYWJsZSB0byByb3V0ZSB5b3VyCitDTCB0byBhZGRpdGlvbmFsIHJldmll
d2VycyBhcyBuZWNjZXNzYXJ5IGFuZCBhbnN3ZXIgYW55IHF1ZXN0aW9ucyB5b3UgbWF5IGhhdmUK
K2Fib3V0IHRoZSBwcm9jZXNzLgogCi0qIGBnZW9mZmxhbmcgYXQgY2hyb21pdW0gZG90IG9yZ2AK
LSogYGptYWRpbGwgYXQgY2hyb21pdW0gZG90IG9yZ2AKLSogYHN5b3Vzc2VmaSBhdCBjaHJvbWl1
bSBkb3Qgb3JnYAotKiBgeW5vdmlrb3YgYXQgY2hyb21pdW0gZG90IG9yZ2AKKyMjIyBSdWxlcyBm
b3Igc3VibWlzc2lvbgorCisgKiBBdCBsZWFzdCBvbmUgKipPd25lcioqIG11c3QgZ2l2ZSBhcHBy
b3ZhbC4KKyAqIFRoZSBvd25lciBtdXN0IGJlIGZyb20gdGhlICoqbW9zdCBzcGVjaWZpYyoqIGRp
cmVjdG9yeS4KKyAqIEF0IGxlYXN0IHR3byAqKkNvbW1pdHRlcnMqKiBtdXN0IGdpdmUgYXBwcm92
YWwgZm9yIG5vbi10cml2YWwgQ0xzLgorICAgRm9yIHRyaXZpYWwgQ0xzLCBhIHNpbmdsZSBPd25l
ciBhcHByb3ZhbCBpcyBzdWZmaWNpZW50LgorICogT25seSAqKkNvbW1pdHRlcnMqKiBtYXkgc3Vi
bWl0IENMcy4gSWYgeW91IGFyZW4ndCBhIGNvbW1pdHRlciBwbGVhc2UgYXNrIGZvciBoZWxwIHN1
Ym1pdHRpbmcuCisgKiBDb21taXR0ZXJzIG1heSBzdWJtaXQgaGlnaC1wcmlvcml0eSBzbWFsbCBD
THMgaW1tZWRpYXRlbHkgdXNpbmcgKipUQlIqKi4KKyAgIFNlZSBbdGhlIENocm9taXVtIGRvY3Nd
W1RCUl0gZm9yIG1vcmUgaW5mby4KKyAqIFRoZXJlIGFyZSBleGNlcHRpb25zIHRvIHRoZXNlIHJ1
bGVzLiBVc2UgeW91ciBiZXN0IGp1ZGdlbWVudC4KKworW1RCUl06IGh0dHBzOi8vY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy9tYXN0ZXIvZG9jcy9jb2RlX3Jldmlld3Mu
bWQjdGJyLXRvLWJlLXJldmlld2VkCiAKICMjIyBDb21taXR0ZXIgc3RhdHVzCiAKQEAgLTE5NCw3
ICsyMDYsMTMgQEAgU2ltaWxhciB0byBbQ2hyb21pdW0ncyBjb21taXR0ZXIgc3RhdHVzXVtDb21t
aXR0ZXItc3RhdHVzXSwgbG9uZy10ZXJtIGNvbnRyaWJ1dG8KIHByb2plY3QgbWF5IHJlcXVlc3Qg
dG8gam9pbiB0aGUgYGFuZ2xlLWNvbW1pdHRlcnNgIGdyb3VwLiAgVGhpcyBhbGxvd3MgeW91IHRv
IGdpdmUgYCsyYCBvbiBjb2RlCiByZXZpZXdzIGFuZCBsYW5kIHBhdGNoZXMgd2l0aG91dCBhc3Np
c3RhbmNlLiAgQWZ0ZXIgYWJvdXQgNiBtb250aHMgb2YgcmVndWxhciBjb250cmlidXRpb25zLCB5
b3UgbWF5CiByZXF1ZXN0IGNvbW1pdHRlciBzdGF0dXMgZnJvbSBhIGNvcmUgQU5HTEUgdGVhbSBt
ZW1iZXIgdmlhIGVtYWlsIG9yIGNvZGUgcmV2aWV3LiAgQ2hyb21pdW0KLWNvbW1pdHRlcnMgbWF5
IGFzayBhdCBhbnkgdGltZS4KK2NvbW1pdHRlcnMgYW5kIEdvb2dsZXJzIG1heSBhc2sgYXQgYW55
IHRpbWUuCisKKyMjIyBPV05FUlMgZmlsZXMgYW5kIGJlY29taW5nIGFuIE93bmVyCisKK1NlZSB0
aGVzZSBDaHJvbWl1bSBkb2NzIGZvciBzb21lIGdvb2QgZ3VpZGVsaW5lczogW2xpbmtdW093bmVy
c10uCisKKyMjIyBNb3JlIGluZm8KIAogU2VlIGFsc286CiAKQEAgLTIwNywzICsyMjUsNCBAQCBT
ZWUgYWxzbzoKIFtDb250cmlidXRpbmctY29kZV06IGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL2Rl
dmVsb3BlcnMvY29udHJpYnV0aW5nLWNvZGUvCiBbZGVwb3QtdG9vbHMtdHV0b3JpYWxdOiBodHRw
Oi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2hyb21lLWluZnJhLWRvY3MvZmxh
dC9kZXBvdF90b29scy9kb2NzL2h0bWwvZGVwb3RfdG9vbHNfdHV0b3JpYWwuaHRtbAogW1BlcmZ0
ZXN0LVJFQURNRV06IC4uL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1JFQURNRS5tZAorW093bmVyc106
IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy9tYXN0ZXIv
ZG9jcy9jb2RlX3Jldmlld3MubWQjZXhwZWN0YXRpb25zLW9mLW93bmVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0RldlNldHVwLm1kIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvZG9jL0RldlNldHVwLm1kCmluZGV4IGFmOWJkODQzNjA4YWNkYjk2ODdiMDA3YTM3
YjNkYjFmZmVhN2IwZmIuLjIxNzM5ZGFiMDA2ODQ5ZTUzZjJiNzkwOWMzYWE5NTg4NjFkNTMyY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2RvYy9EZXZTZXR1cC5tZAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvRGV2U2V0dXAubWQKQEAgLTk1LDUwICs5NSw3
IEBAIE9uY2UgdGhlIGJ1aWxkIGNvbXBsZXRlcyBhbGwgQU5HTEUgbGlicmFyaWVzLCB0ZXN0cywg
YW5kIHNhbXBsZXMgd2lsbCBiZSBsb2NhdGVkCiAKICMjIyBCdWlsZGluZyBBTkdMRSBmb3IgQW5k
cm9pZAogCi1CdWlsZGluZyBBTkdMRSBmb3IgQW5kcm9pZCBpcyBoZWF2aWx5IGRlcGVuZGVudCBv
biB0aGUgQ2hyb21pdW0gdG9vbGNoYWluLiBJdCBpcyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRv
IGJ1aWxkIEFOR0xFIGZvciBBbmRyb2lkIHdpdGhvdXQgYSBDaHJvbWl1bSBjaGVja291dC4gU2Vl
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjM0NCBmb3IgbW9yZSBkZXRhaWxzIG9uIHdoeS4KLVBsZWFz
ZSBmb2xsb3cgdGhlIHN0ZXBzIGluCi1bQ2hlY2tpbmcgb3V0IGFuZCBidWlsZGluZyBDaHJvbWl1
bSBmb3IgQW5kcm9pZF0oaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt
L3NyYy8rL21hc3Rlci9kb2NzL2FuZHJvaWRfYnVpbGRfaW5zdHJ1Y3Rpb25zLm1kKS4KLVRoaXMg
bXVzdCBiZSBkb25lIG9uIExpbnV4LCB0aGUgb25seSBwbGF0Zm9ybSB0aGF0IENocm9taXVtIGZv
ciBBbmRyb2lkIHN1cHBvcnRzLgotTmFtZSB5b3VyIG91dHB1dCBkaXJlY3RvcmllcyBgb3V0L0Rl
YnVnYCBhbmQgYG91dC9SZWxlYXNlYCwgYmVjYXVzZSBDaHJvbWl1bSBHUFUgdGVzdHMgbG9vayBm
b3IgYnJvd3NlciBiaW5hcmllcyBpbiB0aGVzZSBmb2xkZXJzLiBSZXBsYWNpbmcgYG91dGAgd2l0
aCBvdGhlciBuYW1lcyBzZWVtcyB0byBiZSBPSyB3aGVuIHdvcmtpbmcgd2l0aCBtdWx0aXBsZSBi
dWlsZCBjb25maWd1cmF0aW9ucy4KLUl0J3MgYmVzdCB0byB1c2UgYSBidWlsZCBjb25maWd1cmF0
aW9uIG9mIHNvbWUgQW5kcm9pZCBib3Qgb24gW0dQVS5GWUkgd2F0ZXJmYWxsXShodHRwczovL2Np
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2cvY2hyb21pdW0uZ3B1LmZ5aS9jb25zb2xlKS4gTG9v
ayBmb3IgYGdlbmVyYXRlX2J1aWxkX2ZpbGVzYCBzdGVwIG91dHB1dCBvZiB0aGF0IGJvdC4gUmVt
b3ZlIGBnb21hX2RpcmAgZmxhZy4KLUZvciBleGFtcGxlLCB0aGVzZSBhcmUgdGhlIGJ1aWxkIGZs
YWdzIGZyb20gTmV4dXMgNVggYm90OgotYGBgCi1idWlsZF9hbmdsZV9kZXFwX3Rlc3RzID0gdHJ1
ZQotZGNoZWNrX2Fsd2F5c19vbiA9IHRydWUKLWZmbXBlZ19icmFuZGluZyA9ICJDaHJvbWUiCi1p
c19jb21wb25lbnRfYnVpbGQgPSBmYWxzZQotaXNfZGVidWcgPSBmYWxzZQotcHJvcHJpZXRhcnlf
Y29kZWNzID0gdHJ1ZQotc3ltYm9sX2xldmVsID0gMQotdGFyZ2V0X2NwdSA9ICJhcm02NCIgICAg
ICAgICAgIyBOZXh1cyA1WCBpcyA2NCBiaXQsIHJlbW92ZSB0aGlzIG9uIDMyIGJpdCBkZXZpY2Vz
Ci10YXJnZXRfb3MgPSAiYW5kcm9pZCIKLXVzZV9nb21hID0gdHJ1ZSAgICAgICAgICAgICAgICMg
UmVtb3ZlIHRoaXMgaWYgeW91IGRvbid0IGhhdmUgZ29tYQotYGBgCi1BZGRpdGlvbmFsIGZsYWdz
IHRvIGJ1aWxkIHRoZSBWdWxrYW4gYmFja2VuZCwgZW5hYmxlIG9ubHkgaWYgcnVubmluZyBvbiBB
bmRyb2lkIE8gb3IgaGlnaGVyOgotYGBgCi1hbmRyb2lkMzJfbmRrX2FwaV9sZXZlbCA9IDI2Ci1h
bmRyb2lkNjRfbmRrX2FwaV9sZXZlbCA9IDI2Ci1gYGAKLQotVGhlc2UgQU5HTEUgdGFyZ2V0cyBh
cmUgc3VwcG9ydGVkOgotYG5pbmphIC1DIG91dC9SZWxlYXNlIHRyYW5zbGF0b3IgbGliRUdMIGxp
YkdMRVN2MiBhbmdsZV91bml0dGVzdHMgYW5nbGVfZW5kMmVuZF90ZXN0cyBhbmdsZV93aGl0ZV9i
b3hfdGVzdHMgYW5nbGVfZGVxcF9nbGVzMl90ZXN0cyBhbmdsZV9kZXFwX2dsZXMzX3Rlc3RzIGFu
Z2xlX2RlcXBfZWdsX3Rlc3RzIGFuZ2xlX3BlcmZ0ZXN0cyBhbmdsZV93aGl0ZV9ib3hfcGVyZnRl
c3RzYAotCi1JbiBvcmRlciB0byBydW4gQU5HTEUgdGVzdHMsIHByZXBlbmQgYGJpbi9ydW5fYCB0
byB0aGUgdGVzdCBuYW1lLCBmb3IgZXhhbXBsZTogYC4vb3V0L1JlbGVhc2UvYmluL3J1bl9hbmds
ZV91bml0dGVzdHNgLgotQWRkaXRpb25hbCBkZXRhaWxzIGFyZSBpbiBbQW5kcm9pZCBUZXN0IElu
c3RydWN0aW9uc10oaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
Yy8rL21hc3Rlci9kb2NzL3Rlc3RpbmcvYW5kcm9pZF90ZXN0X2luc3RydWN0aW9ucy5tZCkuCi0K
LSoqZEVRUCBOb3RlKio6IFJ1bm5pbmcgdGhlIHRlc3RzIG5vdCB1c2luZyB0aGUgdGVzdCBydW5u
ZXIgaXMgdHJpY2t5LCBidXQgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGdldCBhIGNvbXBsZXRl
IFRlc3RSZXN1bHRzLnFwYSBmcm9tIHRoZSBkRVFQIHRlc3RzIChzaW5jZSB0aGUgcnVubmVyIHNo
YXJkcyB0aGUgdGVzdHMsIG9ubHkgdGhlIHJlc3VsdHMgb2YgdGhlIGxhc3Qgc2hhcmQgd2lsbCBi
ZSBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgdGVzdCBydW5uZXIpLiBGaXJzdCwgdXNlIHRoZSBy
dW5uZXIgdG8gaW5zdGFsbCB0aGUgQVBLLCB0ZXN0IGRhdGEgYW5kIHRlc3QgZXhwZWN0YXRpb25z
IG9uIHRoZSBkZXZpY2UuIEFmdGVyIHRoZSB0ZXN0cyBzdGFydCBydW5uaW5nLCB0aGUgdGVzdCBy
dW5uZXIgY2FuIGJlIHN0b3BwZWQgd2l0aCBDdHJsK0MuIFRoZW4sIHJ1bgotYGBgCi1hZGIgc2hl
bGwgYW0gc3RhcnQgLWEgYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4gLW4gb3JnLmNocm9taXVt
Lm5hdGl2ZV90ZXN0Ly5OYXRpdmVVbml0VGVzdE5hdGl2ZUFjdGl2aXR5IC1lIG9yZy5jaHJvbWl1
bS5uYXRpdmVfdGVzdC5OYXRpdmVUZXN0LlN0ZG91dEZpbGUgL3NkY2FyZC9jaHJvbWl1bV90ZXN0
c19yb290L291dC50eHQKLWBgYAotQWZ0ZXIgdGhlIHRlc3RzIGZpbmlzaCwgZ2V0IHRoZSByZXN1
bHRzIHdpdGgKLWBgYAotYWRiIHB1bGwgL3NkY2FyZC9jaHJvbWl1bV90ZXN0c19yb290L3RoaXJk
X3BhcnR5L2FuZ2xlL3RoaXJkX3BhcnR5L2RlcXAvc3JjL2RhdGEvVGVzdFJlc3VsdHMucXBhIC4K
LWBgYAotTm90ZTogdGhpcyBsb2NhdGlvbiBtaWdodCBjaGFuZ2UsIG9uZSBjYW4gZG91YmxlLWNo
ZWNrIHdpdGggYGFkYiBsb2djYXQgLWQgfCBncmVwIHFwYWAuCi0KLUluIG9yZGVyIHRvIHJ1biBH
UFUgdGVsZW1ldHJ5IHRlc3RzLCBidWlsZCBgY2hyb21lX3B1YmxpY19hcGtgIHRhcmdldC4gVGhl
biBmb2xsb3cgW0dQVSBUZXN0aW5nXShodHRwOi8vd3d3LmNocm9taXVtLm9yZy9kZXZlbG9wZXJz
L3Rlc3RpbmcvZ3B1LXRlc3RpbmcjVE9DLVJ1bm5pbmctdGhlLUdQVS1UZXN0cy1Mb2NhbGx5KSBk
b2MsIHVzaW5nIGAtLWJyb3dzZXI9YW5kcm9pZC1jaHJvbWl1bWAgYXJndW1lbnQuIE1ha2Ugc3Vy
ZSB0byBzZXQgeW91ciBgQ0hST01JVU1fT1VUX0RJUmAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHNv
IHRoYXQgeW91ciBicm93c2VyIGlzIGZvdW5kLCBvdGhlcndpc2UgdGhlIHN0b2NrIG9uZSB3aWxs
IHJ1bi4KLQotQWxzbywgZm9sbG93IFtIb3cgdG8gYnVpbGQgQU5HTEUgaW4gQ2hyb21pdW0gZm9y
IGRldl0oQnVpbGRpbmdBbmdsZUZvckNocm9taXVtRGV2ZWxvcG1lbnQubWQpIHRvIHdvcmsgd2l0
aCBUb3Agb2YgVHJlZSBBTkdMRSBpbiBDaHJvbWl1bS4KK1NlZSB0aGUgQW5kcm9pZCBzcGVjaWZp
YyBbZG9jdW1lbnRhdGlvbl0oRGV2U2V0dXBBbmRyb2lkLm1kI0FOR0xFLWZvci1BbmRyb2lkKS4K
IAogIyMgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgd2l0aCBBTkdMRQogVGhpcyBzZWN0aW9ucyBk
ZXNjcmliZXMgaG93IHRvIHVzZSBBTkdMRSB0byBidWlsZCBhbiBPcGVuR0wgRVMgYXBwbGljYXRp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvRGV2U2V0dXBBbmRy
b2lkLm1kIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0RldlNldHVwQW5kcm9pZC5tZApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MjgzNmQ1MDdkMWIzOWUxMjczNGZlZjcwMGUxNmQ3ZDM5YjMxY2M4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZG9jL0RldlNldHVwQW5kcm9p
ZC5tZApAQCAtMCwwICsxLDE4NCBAQAorIyBBTkdMRSBmb3IgQW5kcm9pZAorCitCdWlsZGluZyBB
TkdMRSBmb3IgQW5kcm9pZCBpcyBoZWF2aWx5IGRlcGVuZGVudCBvbiB0aGUgQ2hyb21pdW0gdG9v
bGNoYWluLiBJdCBpcyBub3QgY3VycmVudGx5IHBvc3NpYmxlIHRvIGJ1aWxkIEFOR0xFIGZvciBB
bmRyb2lkIHdpdGhvdXQgYSBDaHJvbWl1bSBjaGVja291dC4gU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMjM0NCBmb3IgbW9yZSBkZXRhaWxzIG9uIHdoeS4KKworRnJvbSBhIExpbnV4IHBsYXRmb3Jt
ICh0aGUgb25seSBwbGF0Zm9ybSB0aGF0IENocm9taXVtIGZvciBBbmRyb2lkIHN1cHBvcnRzKSwg
Zm9sbG93IHRoZSBzdGVwcyBpbgorW0NoZWNraW5nIG91dCBhbmQgYnVpbGRpbmcgQ2hyb21pdW0g
Zm9yIEFuZHJvaWRdKGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMvKy9tYXN0ZXIvZG9jcy9hbmRyb2lkX2J1aWxkX2luc3RydWN0aW9ucy5tZCkuCisKK05hbWUg
eW91ciBvdXRwdXQgZGlyZWN0b3JpZXMgYG91dC9EZWJ1Z2AgYW5kIGBvdXQvUmVsZWFzZWAsIGJl
Y2F1c2UgQ2hyb21pdW0gR1BVIHRlc3RzIGxvb2sgZm9yIGJyb3dzZXIgYmluYXJpZXMgaW4gdGhl
c2UgZm9sZGVycy4gUmVwbGFjaW5nICdbRGVidWd8UmVsZWFzZV0nIHdpdGggb3RoZXIgbmFtZXMg
c2VlbXMgdG8gYmUgT0sgd2hlbiB3b3JraW5nIHdpdGggbXVsdGlwbGUgYnVpbGQgY29uZmlndXJh
dGlvbnMuCisKK1RoZSBmb2xsb3dpbmcgR04gYXJncyBhcmUga25vd24gdG8gd29yayB3ZWxsIGZv
ciBSZWxlYXNlIGFuZCBEZWJ1ZyBjb25maWd1cmF0aW9ucy4KKworRGVidWc6CitgYGAKKyQgZ24g
YXJncyBvdXQvRGVidWcKK2BgYAorYGBgCit0YXJnZXRfb3MgPSAiYW5kcm9pZCIKK3RhcmdldF9j
cHUgPSAiYXJtNjQiCithbmRyb2lkMzJfbmRrX2FwaV9sZXZlbCA9IDI2CithbmRyb2lkNjRfbmRr
X2FwaV9sZXZlbCA9IDI2CithbmdsZV9saWJzX3N1ZmZpeCA9ICJfYW5nbGUiCitmZm1wZWdfYnJh
bmRpbmcgPSAiQ2hyb21lIgoraXNfY29tcG9uZW50X2J1aWxkID0gZmFsc2UKK3N5bWJvbF9sZXZl
bCA9IDEKK2lzX2RlYnVnID0gdHJ1ZQorZGNoZWNrX2Fsd2F5c19vbiA9IHRydWUKK2FuZ2xlX2Vu
YWJsZV92dWxrYW4gPSB0cnVlCithbmdsZV9lbmFibGVfdnVsa2FuX3ZhbGlkYXRpb25fbGF5ZXJz
ID0gdHJ1ZQorYW5nbGVfZW5hYmxlX2dsID0gZmFsc2UKK2BgYAorUmVsZWFzZToKK2BgYAorJCBn
biBhcmdzIG91dC9SZWxlYXNlCitgYGAKK2BgYAordGFyZ2V0X29zID0gImFuZHJvaWQiCit0YXJn
ZXRfY3B1ID0gImFybTY0IgorYW5kcm9pZDMyX25ka19hcGlfbGV2ZWwgPSAyNgorYW5kcm9pZDY0
X25ka19hcGlfbGV2ZWwgPSAyNgorYW5nbGVfbGlic19zdWZmaXggPSAiX2FuZ2xlIgorZmZtcGVn
X2JyYW5kaW5nID0gIkNocm9tZSIKK2lzX2NvbXBvbmVudF9idWlsZCA9IGZhbHNlCitzeW1ib2xf
bGV2ZWwgPSAwCitzdHJpcF9kZWJ1Z19pbmZvID0gdHJ1ZQoraXNfZGVidWcgPSBmYWxzZQoraXNf
b2ZmaWNpYWxfYnVpbGQgPSB0cnVlICMgZW5hYmxlcyBsZXZlbCBvZiBvcHRpbWl6YXRpb24gYmV5
b25kIHJlbGVhc2UKK2RjaGVja19hbHdheXNfb24gPSBmYWxzZQorYW5nbGVfZW5hYmxlX3Z1bGth
biA9IHRydWUKK2FuZ2xlX2VuYWJsZV92dWxrYW5fdmFsaWRhdGlvbl9sYXllcnMgPSBmYWxzZQor
YW5nbGVfZW5hYmxlX2dsID0gZmFsc2UKK2VuYWJsZV9yZXNvdXJjZV93aGl0ZWxpc3RfZ2VuZXJh
dGlvbiA9IGZhbHNlCitgYGAKKworSWYgeW91IHJ1biBpbnRvIGFueSBwcm9ibGVtcyB3aXRoIHRo
ZSBhYm92ZSwgeW91IG1heSBiZSBhYmxlIHRvIHB1bGwgbmV3ZXIgR04gYXJncyBmcm9tIGFuIG9m
ZmljaWFsIEFuZHJvaWQgYm90IG9uIFtHUFUuRllJIHdhdGVyZmFsbF0oaHR0cHM6Ly9jaS5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS9nL2Nocm9taXVtLmdwdS5meWkvY29uc29sZSkuCisgLSBMb29r
IGZvciBgZ2VuZXJhdGVfYnVpbGRfZmlsZXNgIHN0ZXAgb3V0cHV0IG9mIHRoYXQgYm90LgorIC0g
UmVtb3ZlIGBnb21hX2RpcmAgZmxhZy4KKworQnVpbGQgYW4gQU5HTEUgdGFyZ2V0IHVzaW5nIHRo
ZSBmb2xsb3dpbmcgY29tbWFuZDoKKworYGBgCithdXRvbmluamEgLUMgb3V0L0RlYnVnIDx0YXJn
ZXQ+CitgYGAKK29yCitgYGAKK2F1dG9uaW5qYSAtQyBvdXQvUmVsZWFzZSA8dGFyZ2V0PgorYGBg
CisKK1RoZSBmb2xsb3dpbmcgQU5HTEUgYnVpbGQgdGFyZ2V0cyBhcmUgc3VwcG9ydGVkOgorCitg
YGAKK2FuZ2xlCithbmdsZV9hcGtzCithbmdsZV9kZXFwX2dsZXMyX3Rlc3RzCithbmdsZV9kZXFw
X2tocl9nbGVzMl90ZXN0cworYW5nbGVfZGVxcF9nbGVzM190ZXN0cworYW5nbGVfZGVxcF9raHJf
Z2xlczNfdGVzdHMKK2FuZ2xlX2RlcXBfZ2xlczMxX3Rlc3RzCithbmdsZV9kZXFwX2tocl9nbGVz
MzFfdGVzdHMKK2FuZ2xlX2RlcXBfZWdsX3Rlc3RzCithbmdsZV9lbmQyZW5kX3Rlc3RzCithbmds
ZV9wZXJmdGVzdHMKK2FuZ2xlX3VuaXR0ZXN0cworYW5nbGVfd2hpdGVfYm94X3BlcmZ0ZXN0cwor
YW5nbGVfd2hpdGVfYm94X3Rlc3RzCitgYGAKK0FOR0xFIHRlc3RzIHdpbGwgYmUgaW4geW91ciBv
dXQvPHRhcmdldD4gZGlyZWN0b3J5LCBhbmQgY2FuIGJlIHJ1biB3aXRoIHZhcmlvdXMgb3B0aW9u
cy4gRm9yIGluc3RhbmNlLCBhbmdsZSBwZXJmdGVzdHMgY2FuIGJlIHJ1biB3aXRoOgorYGBgCisu
L291dC9EZWJ1Zy9hbmdsZV9wZXJmdGVzdHMgLS11c2UtYW5nbGU9dnVsa2FuIC0tdmVyYm9zZSAt
LWxvY2FsLW91dHB1dCAtLWd0ZXN0X2ZpbHRlcj0iKmZvbyoiCitgYGAKKworQWRkaXRpb25hbCBk
ZXRhaWxzIGFyZSBpbiBbQW5kcm9pZCBUZXN0IEluc3RydWN0aW9uc10oaHR0cHM6Ly9jaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rL21hc3Rlci9kb2NzL3Rlc3RpbmcvYW5k
cm9pZF90ZXN0X2luc3RydWN0aW9ucy5tZCkuCisKK0FkZGl0aW9uYWwgQW5kcm9pZCBkRVFQIG5v
dGVzIGNhbiBiZSBmb3VuZCBpbiBbUnVubmluZyBkRVFQIG9uIEFuZHJvaWRdKGRFUVAubWQjUnVu
bmluZy1kRVFQLW9uLUFuZHJvaWQpLgorCitJZiB5b3UgYXJlIHRhcmdldGluZyBXZWJHTCBhbmQg
d2FudCB0byBydW4gR1BVIHRlbGVtZXRyeSB0ZXN0cywgYnVpbGQgYGNocm9tZV9wdWJsaWNfYXBr
YCB0YXJnZXQuIFRoZW4gZm9sbG93IFtHUFUgVGVzdGluZ10oaHR0cDovL3d3dy5jaHJvbWl1bS5v
cmcvZGV2ZWxvcGVycy90ZXN0aW5nL2dwdS10ZXN0aW5nI1RPQy1SdW5uaW5nLXRoZS1HUFUtVGVz
dHMtTG9jYWxseSkgZG9jLCB1c2luZyBgLS1icm93c2VyPWFuZHJvaWQtY2hyb21pdW1gIGFyZ3Vt
ZW50LiBNYWtlIHN1cmUgdG8gc2V0IHlvdXIgYENIUk9NSVVNX09VVF9ESVJgIGVudmlyb25tZW50
IHZhcmlhYmxlLCBzbyB0aGF0IHlvdXIgYnJvd3NlciBpcyBmb3VuZCwgb3RoZXJ3aXNlIHRoZSBz
dG9jayBvbmUgd2lsbCBydW4uIEFsc28sIGZvbGxvdyBbSG93IHRvIGJ1aWxkIEFOR0xFIGluIENo
cm9taXVtIGZvciBkZXZdKEJ1aWxkaW5nQW5nbGVGb3JDaHJvbWl1bURldmVsb3BtZW50Lm1kKSB0
byB3b3JrIHdpdGggVG9wIG9mIFRyZWUgQU5HTEUgaW4gQ2hyb21pdW0uCisKKyMjIFVzaW5nIEFO
R0xFIGFzIHRoZSBBbmRyb2lkIE9wZW5HTCBFUyBkcml2ZXIKKworU3RhcnRpbmcgd2l0aCBBbmRy
b2lkIDEwIChRKSwgQU5HTEUgY2FuIGJlIGxvYWRlZCBhcyB0aGUgT3BlbkdMIEVTIGRyaXZlci4K
KworYD09IEltcG9ydGFudCBOb3RlID09YCBBTkdMRSBidWlsdCB0aGlzIHdheSBjYW4gb25seSBi
ZSB1c2VkIGZvciAqREVCVUdHQUJMRSBBUFBTKiAoaS5lLiBbbWFya2VkIGRlYnVnZ2FibGVdKGh0
dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL2d1aWRlL3RvcGljcy9tYW5pZmVzdC9hcHBsaWNh
dGlvbi1lbGVtZW50I2RlYnVnKSBpbiB0aGUgbWFuaWZlc3QpIG9yIHVzZXJzIHdpdGggKlJPT1Qg
QUNDRVNTKiAoaS5lLiBhIFt1c2VyZGVidWddKGh0dHBzOi8vc291cmNlLmFuZHJvaWQuY29tL3Nl
dHVwL2J1aWxkL2J1aWxkaW5nKSBidWlsZCkuCisKK1RvIGJ1aWxkIHRoZSBBTkdMRSBBUEssIHlv
dSBtdXN0IGZpcnN0IGJvb3RzdHJhcCB5b3VyIGJ1aWxkIGJ5IGZvbGxvd2luZyB0aGUgc3RlcHMg
W2Fib3ZlXSgjQU5HTEUtZm9yLUFuZHJvaWQpLiBUaGUgc3RlcHMgYmVsb3cgd2lsbCByZXN1bHQg
aW4gYW4gQVBLIHRoYXQgY29udGFpbnMgdGhlIEFOR0xFIGxpYnJhcmllcyBhbmQgY2FuIGJlIGlu
c3RhbGxlZCBvbiBhbnkgQW5kcm9pZCAxMCsgYnVpbGQuCisKK0FwcHMgY2FuIGJlIG9wdGVkIGlu
IHRvIEFOR0xFIFtvbmUgYXQgYSB0aW1lXSgjQU5HTEUtZm9yLWEtc2luZ2xlLU9wZW5HTC1FUy1h
cHApLCBpbiBbZ3JvdXBzXSgjQU5HTEUtZm9yLW11bHRpcGxlLU9wZW5HTC1FUy1hcHBzKSwgb3Ig
W2dsb2JhbGx5XSgjQU5HTEUtZm9yLWFsbC1PcGVuR0wtRVMtYXBwcyksIGJ1dCB0aGV5IG11c3Qg
YmUgbGF1bmNoZWQgYnkgdGhlIEphdmEgcnVudGltZSBzaW5jZSB0aGUgbGlicmFyaWVzIGFyZSBk
aXNjb3ZlcmVkIHdpdGhpbiBhbiBpbnN0YWxsZWQgcGFja2FnZS4gVGhpcyBtZWFucyBBTkdMRSBj
YW5ub3QgYmUgdXNlZCBieSBuYXRpdmUgZXhlY3V0YWJsZXMgb3IgU3VyZmFjZUZsaW5nZXIgYXQg
dGhpcyB0aW1lLgorCisjIyBCdWlsZCB0aGUgQU5HTEUgQVBLCisKK1VzaW5nICdnbiBhcmdzYCBm
cm9tIGFib3ZlLCB5b3UgY2FuIGJ1aWxkIHRoZSBBTkdMRSBhcGsgdXNpbmc6CitgYGAKK2F1dG9u
aW5qYSAtQyBvdXQvRGVidWcgYW5nbGVfYXBrcworYGBgCisjIyBJbnN0YWxsIHRoZSBBTkdMRSBB
UEsKK2BgYAorYWRiIGluc3RhbGwgb3V0L0RlYnVnL2Fwa3MvQW5nbGVMaWJyYXJpZXMuYXBrCitg
YGAKK1lvdSBjYW4gdmVyaWZ5IGluc3RhbGxhdGlvbiBieSBsb29raW5nIGZvciB0aGUgcGFja2Fn
ZSBuYW1lOgorYGBgCiskIGFkYiBzaGVsbCBwbSBwYXRoIGNvbS5jaHJvbWl1bS5hbmdsZQorcGFj
a2FnZTovZGF0YS9hcHAvY29tLmNocm9taXVtLmFuZ2xlLUhwa1VjZU5Gam9MWUtQYklWeEZXTFE9
PS9iYXNlLmFwaworYGBgCisjIyBTZWxlY3RpbmcgQU5HTEUgYXMgdGhlIE9wZW5HTCBFUyBkcml2
ZXIKKworRm9yIGRlYnVnZ2FibGUgYXBwbGljYXRpb25zIG9yIHJvb3QgdXNlcnMsIHlvdSBjYW4g
dGVsbCB0aGUgcGxhdGZvcm0gdG8gbG9hZCBBTkdMRSBsaWJyYXJpZXMgZnJvbSB0aGUgaW5zdGFs
bGVkIHBhY2thZ2UuCitgYGAKK2FkYiBzaGVsbCBzZXR0aW5ncyBwdXQgZ2xvYmFsIGFuZ2xlX2Rl
YnVnX3BhY2thZ2UgY29tLmNocm9taXVtLmFuZ2xlCitgYGAKK1JlbWVtYmVyIHRoYXQgQU5HTEUg
Y2FuIG9ubHkgYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMgbGF1bmNoZWQgYnkgdGhlIEphdmEgcnVu
dGltZS4KKworIyMgQU5HTEUgZHJpdmVyIGNob2ljZXMKK1RoZXJlIGFyZSBtdWx0aXBsZSB2YWx1
ZXMgeW91IGNhbiB1c2UgZm9yIHNlbGVjdGluZyB3aGljaCBPcGVuR0wgRVMgZHJpdmVyIGlzIGxv
YWRlZCBieSB0aGUgcGxhdGZvcm0uCisKK1RoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBzdXBwb3J0
ZWQgZm9yIGBhbmdsZV9nbF9kcml2ZXJfc2VsZWN0aW9uX3ZhbHVlc2A6CisgLSBgYW5nbGVgIDog
VXNlIEFOR0xFLgorIC0gYG5hdGl2ZWAgOiBVc2UgdGhlIG5hdGl2ZSBPcGVuR0wgRVMgZHJpdmVy
LgorIC0gYGRlZmF1bHRgIDogVXNlIHRoZSBkZWZhdWx0IGRyaXZlci4gVGhpcyBhbGxvd3MgdGhl
IHBsYXRmb3JtIHRvIGRlY2lkZSB3aGljaCBkcml2ZXIgdG8gdXNlLgorCitJbiBlYWNoIHNlY3Rp
b24gYmVsb3csIHJlcGxhY2UgYDxkcml2ZXI+YCB3aXRoIG9uZSBvZiB0aGUgdmFsdWVzIGFib3Zl
LgorCisjIyBBTkdMRSBmb3IgYSAqc2luZ2xlKiBPcGVuR0wgRVMgYXBwCitgYGAKK2FkYiBzaGVs
bCBzZXR0aW5ncyBwdXQgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9zZWxlY3Rpb25fcGtncyA8cGFj
a2FnZSBuYW1lPgorYWRiIHNoZWxsIHNldHRpbmdzIHB1dCBnbG9iYWwgYW5nbGVfZ2xfZHJpdmVy
X3NlbGVjdGlvbl92YWx1ZXMgPGRyaXZlcj4KK2BgYAorIyMgQU5HTEUgZm9yICptdWx0aXBsZSog
T3BlbkdMIEVTIGFwcHMKK1NpbWlsYXIgdG8gc2VsZWN0aW5nIGEgc2luZ2xlIGFwcCwgeW91IGNh
biBzZWxlY3QgbXVsdGlwbGUgYXBwbGljYXRpb25zIGJ5IGxpc3RpbmcgdGhlaXIgcGFja2FnZSBu
YW1lcyBhbmQgZHJpdmVyIGNob2ljZSBpbiBjb21tYSBzZXBhcmF0ZWQgbGlzdHMuICBOb3RlIHRo
ZSBsaXN0cyBtdXN0IGJlIHRoZSBzYW1lIGxlbmd0aCwgb25lIGRyaXZlciBjaG9pY2UgcGVyIHBh
Y2thZ2UgbmFtZS4KK2BgYAorYWRiIHNoZWxsIHNldHRpbmdzIHB1dCBnbG9iYWwgYW5nbGVfZ2xf
ZHJpdmVyX3NlbGVjdGlvbl9wa2dzIDxwYWNrYWdlIG5hbWUgMT4sPHBhY2thZ2UgbmFtZSAyPiw8
cGFja2FnZSBuYW1lIDM+LC4uLgorYWRiIHNoZWxsIHNldHRpbmdzIHB1dCBnbG9iYWwgYW5nbGVf
Z2xfZHJpdmVyX3NlbGVjdGlvbl92YWx1ZXMgPGRyaXZlciAxPiw8ZHJpdmVyIDI+LDxkcml2ZXIg
Mz4sLi4uCitgYGAKKyMjIEFOR0xFIGZvciAqYWxsKiBPcGVuR0wgRVMgYXBwcworRW5hYmxlOgor
YGBgCithZGIgc2hlbGwgc2V0dGluZ3MgcHV0IGdsb2JhbCBhbmdsZV9nbF9kcml2ZXJfYWxsX2Fu
Z2xlIDEKK2BgYAorRGlzYWJsZToKK2BgYAorYWRiIHNoZWxsIHNldHRpbmdzIHB1dCBnbG9iYWwg
YW5nbGVfZ2xfZHJpdmVyX2FsbF9hbmdsZSAwCitgYGAKKyMjIENoZWNrIGZvciBzdWNjZXNzCitD
aGVjayB0byBzZWUgdGhhdCBBTkdMRSB3YXMgbG9hZGVkIGJ5IHlvdXIgYXBwbGljYXRpb246Citg
YGAKKyQgYWRiIGxvZ2NhdCAtZCB8IGdyZXAgQU5HTEUKK1YgR3JhcGhpY3NFbnZpcm9ubWVudDog
QU5HTEUgZGV2ZWxvcGVyIG9wdGlvbiBmb3IgPHBhY2thZ2UgbmFtZT46IGFuZ2xlCitJIEdyYXBo
aWNzRW52aXJvbm1lbnQ6IEFOR0xFIHBhY2thZ2UgZW5hYmxlZDogY29tLmNocm9taXVtLmFuZ2xl
CitJIEFOR0xFICAgOiBWZXJzaW9uICgyLjEuMC5mODdmYWM1NmQyMmYpLCBSZW5kZXJlciAoVnVs
a2FuIDEuMS44NyhBZHJlbm8gKFRNKSA2MTUgKDB4MDYwMTA1MDEpKSkKK2BgYAorIyMgQ2xlYW4g
dXAKK1NldHRpbmdzIHBlcnNpc3QgYWNyb3NzIHJlYm9vdHMsIHNvIGl0IGlzIGEgZ29vZCBpZGVh
IHRvIGRlbGV0ZSB0aGVtIHdoZW4gZmluaXNoZWQuCitgYGAKK2FkYiBzaGVsbCBzZXR0aW5ncyBk
ZWxldGUgZ2xvYmFsIGFuZ2xlX2RlYnVnX3BhY2thZ2UKK2FkYiBzaGVsbCBzZXR0aW5ncyBkZWxl
dGUgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9hbGxfYW5nbGUKK2FkYiBzaGVsbCBzZXR0aW5ncyBk
ZWxldGUgZ2xvYmFsIGFuZ2xlX2dsX2RyaXZlcl9zZWxlY3Rpb25fcGtncworYWRiIHNoZWxsIHNl
dHRpbmdzIGRlbGV0ZSBnbG9iYWwgYW5nbGVfZ2xfZHJpdmVyX3NlbGVjdGlvbl92YWx1ZXMKK2Bg
YAorIyMgVHJvdWJsZXNob290aW5nCitJZiB5b3VyIGFwcGxpY2F0aW9uIGlzIG5vdCBkZWJ1Z2dh
YmxlIG9yIHlvdSBhcmUgbm90IHJvb3QsIHlvdSBtYXkgc2VlIGFuIGVycm9yIGxpa2UgdGhpcyBp
biB0aGUgbG9nOgorYGBgCiskIGFkYiBsb2djYXQgLWQgfCBncmVwIEFOR0xFCitWIEdyYXBoaWNz
RW52aXJvbm1lbnQ6IEFOR0xFIGRldmVsb3BlciBvcHRpb24gZm9yIDxwYWNrYWdlIG5hbWU+OiBh
bmdsZQorRSBHcmFwaGljc0Vudmlyb25tZW50OiBJbnZhbGlkIG51bWJlciBvZiBBTkdMRSBwYWNr
YWdlcy4gUmVxdWlyZWQ6IDEsIEZvdW5kOiAwCitFIEdyYXBoaWNzRW52aXJvbm1lbnQ6IEZhaWxl
ZCB0byBmaW5kIEFOR0xFIHBhY2thZ2UuCitgYGAKK0RvdWJsZSBjaGVjayB0aGF0IHlvdSBhcmUg
cm9vdCwgb3IgdGhhdCB5b3VyIGFwcGxpY2F0aW9uIGlzIFttYXJrZWQgZGVidWdnYWJsZV0oaHR0
cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vZ3VpZGUvdG9waWNzL21hbmlmZXN0L2FwcGxpY2F0
aW9uLWVsZW1lbnQjZGVidWcpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
ZG9jL2RFUVAubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvZEVRUC5tZAppbmRleCA5
MDBhZTUzNjcxZDdmYmM4YWIxMDg4OTlmNDYzYTEzMDIzODMzZjUyLi4wNWQ1Y2IxOTQ5ZjhiMjI0
OGM4NzBhMDc5ODNlNTRjODdiOTg2YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9kb2MvZEVRUC5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9kb2MvZEVRUC5t
ZApAQCAtNzEsMyArNzEsMTUgQEAgQU5HTEUgYWxzbyBzdXBwb3J0cyB0aGUgc2FtZSBzZXQgb2Yg
dGFyZ2V0cyBidWlsdCB3aXRoIEdvb2dsZVRlc3QsIGZvciBydW5uaW5nCiBvbiB0aGUgYm90cy4g
V2UgZG9uJ3QgY3VycmVudGx5IHJlY29tbWVuZCB1c2luZyB0aGVzZSBmb3IgbG9jYWwgZGVidWdn
aW5nLCBidXQKIHdlIGRvIG1haW50YWluIGxpc3RzIG9mIHRlc3QgZXhwZWN0YXRpb25zIGluIGBz
cmMvdGVzdHMvZGVxcF9zdXBwb3J0YC4gV2hlbgogeW91IGZpeCB0ZXN0cywgcGxlYXNlIHJlbW92
ZSB0aGUgc3VwcHJlc3Npb24ocykgZnJvbSB0aGUgcmVsZXZhbnQgZmlsZXMhCisKKyMjIyBSdW5u
aW5nIGRFUVAgb24gQW5kcm9pZAorCitSdW5uaW5nIHRoZSB0ZXN0cyBub3QgdXNpbmcgdGhlIHRl
c3QgcnVubmVyIGlzIHRyaWNreSwgYnV0IGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBnZXQgYSBj
b21wbGV0ZSBUZXN0UmVzdWx0cy5xcGEgZnJvbSB0aGUgZEVRUCB0ZXN0cyAoc2luY2UgdGhlIHJ1
bm5lciBzaGFyZHMgdGhlIHRlc3RzLCBvbmx5IHRoZSByZXN1bHRzIG9mIHRoZSBsYXN0IHNoYXJk
IHdpbGwgYmUgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlIHRlc3QgcnVubmVyKS4gRmlyc3QsIHVz
ZSB0aGUgcnVubmVyIHRvIGluc3RhbGwgdGhlIEFQSywgdGVzdCBkYXRhIGFuZCB0ZXN0IGV4cGVj
dGF0aW9ucyBvbiB0aGUgZGV2aWNlLiBBZnRlciB0aGUgdGVzdHMgc3RhcnQgcnVubmluZywgdGhl
IHRlc3QgcnVubmVyIGNhbiBiZSBzdG9wcGVkIHdpdGggQ3RybCtDLiBUaGVuLCBydW4KK2BgYAor
YWRiIHNoZWxsIGFtIHN0YXJ0IC1hIGFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOIC1uIG9yZy5j
aHJvbWl1bS5uYXRpdmVfdGVzdC8uTmF0aXZlVW5pdFRlc3ROYXRpdmVBY3Rpdml0eSAtZSBvcmcu
Y2hyb21pdW0ubmF0aXZlX3Rlc3QuTmF0aXZlVGVzdC5TdGRvdXRGaWxlIC9zZGNhcmQvY2hyb21p
dW1fdGVzdHNfcm9vdC9vdXQudHh0CitgYGAKK0FmdGVyIHRoZSB0ZXN0cyBmaW5pc2gsIGdldCB0
aGUgcmVzdWx0cyB3aXRoCitgYGAKK2FkYiBwdWxsIC9zZGNhcmQvY2hyb21pdW1fdGVzdHNfcm9v
dC90aGlyZF9wYXJ0eS9hbmdsZS90aGlyZF9wYXJ0eS9kZXFwL3NyYy9kYXRhL1Rlc3RSZXN1bHRz
LnFwYSAuCitgYGAKK05vdGU6IHRoaXMgbG9jYXRpb24gbWlnaHQgY2hhbmdlLCBvbmUgY2FuIGRv
dWJsZS1jaGVjayB3aXRoIGBhZGIgbG9nY2F0IC1kIHwgZ3JlcCBxcGFgLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9leHRlcm5hbF9vYmplY3Rz
X2Z1Y2hzaWEudHh0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvZXh0ZW5zaW9ucy9BTkdMRV9l
eHRlcm5hbF9vYmplY3RzX2Z1Y2hzaWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyZGIwMDY5ZmNmMjlmNTA4
NTZhMzhjYjFlYWVjZTU4ZmRiMzg3MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9leHRlbnNpb25zL0FOR0xFX2V4dGVybmFsX29iamVjdHNfZnVjaHNpYS50eHQK
QEAgLTAsMCArMSwxMzUgQEAKK05hbWUKKworICAgIEFOR0xFX2V4dGVybmFsX29iamVjdHNfZnVj
aHNpYQorCitOYW1lIFN0cmluZ3MKKworICAgIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNp
YQorICAgIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhCisKK0NvbnRyaWJ1dG9ycworCisgICAg
TWljaGFlbCBTcGFuZywgR29vZ2xlCisKK0NvbnRhY3QKKworICAgIE1pY2hhZWwgU3BhbmcsIEdv
b2dsZSAoc3BhbmcgJ2F0JyBnb29nbGUuY29tKQorCitTdGF0dXMKKworICAgIERyYWZ0CisKK1Zl
cnNpb24KKworICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogRmViIDE5LCAyMDIwCisgICAgUmV2aXNp
b246IDEKKworTnVtYmVyCisKKyAgICBUQkQKKworRGVwZW5kZW5jaWVzCisKKyAgICBXcml0dGVu
IGFnYWluc3QgdGhlIE9wZW5HTCA0LjUgYW5kIE9wZW5HTCBFUyAzLjIgc3BlY2lmaWNhdGlvbnMK
KworICAgIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSByZXF1aXJlcyBHTF9FWFRfbWVt
b3J5X29iamVjdAorCisgICAgR0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEgcmVxdWlyZXMgR0xf
RVhUX3NlbWFwaG9yZQorCitPdmVydmlldworCisgICAgQnVpbGRpbmcgdXBvbiB0aGUgT3BlbkdM
IG1lbW9yeSBvYmplY3QgYW5kIHNlbWFwaG9yZSBmcmFtZXdvcmsKKyAgICBkZWZpbmVkIGluIEVY
VF9leHRlcm5hbF9vYmplY3RzLCB0aGlzIGV4dGVuc2lvbiBlbmFibGVzIGFuIE9wZW5HTAorICAg
IGFwcGxpY2F0aW9uIHRvIGltcG9ydCBhIG1lbW9yeSBvYmplY3Qgb3Igc2VtYXBob3JlIGZyb20g
WmlyY29uCisgICAgZXh0ZXJuYWwgaGFuZGxlcy4KKworTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0
aW9ucworCisgICAgSWYgdGhlIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSBzdHJpbmcg
aXMgcmVwb3J0ZWQsIHRoZSBmb2xsb3dpbmcKKyAgICBjb21tYW5kcyBhcmUgYWRkZWQ6CisKKyAg
ICB2b2lkIEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKHVpbnQgbWVtb3J5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGhhbmRsZSk7CisKKyAgICBJZiB0aGUg
R0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEgc3RyaW5nIGlzIHJlcG9ydGVkLCB0aGUgZm9sbG93
aW5nIGNvbW1hbmRzCisgICAgYXJlIGFkZGVkOgorCisgICAgdm9pZCBJbXBvcnRTZW1hcGhvcmVa
aXJjb25IYW5kbGVBTkdMRSh1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQgaGFuZGxlKTsKKworCitOZXcgVG9rZW5zCisKKyAg
ICBJZiB0aGUgR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhIHN0cmluZyBpcyByZXBvcnRl
ZCwgdGhlIGZvbGxvd2luZworICAgIHRva2VucyBhcmUgYWRkZWQ6CisKKyAgICBBY2NlcHRlZCBi
eSB0aGUgPGhhbmRsZVR5cGU+IHBhcmFtZXRlciBvZiBJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVB
TkdMRSgpLgorCisgICAgICAgIEhBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEUgICAgICAgICAg
ICAgICAweDkzQUUKKworICAgIElmIHRoZSBHTF9BTkdMRV9zZW1hcGhvcmVfZnVjaHNpYSBzdHJp
bmcgaXMgcmVwb3J0ZWQsIHRoZSBmb2xsb3dpbmcKKyAgICB0b2tlbnMgYXJlIGFkZGVkOgorCisg
ICAgQWNjZXB0ZWQgYnkgdGhlIDxoYW5kbGVUeXBlPiBwYXJhbWV0ZXIgb2YgSW1wb3J0U2VtYXBo
b3JlWmlyY29uSGFuZGxlQU5HTEUoKS4KKworICAgICAgICBIQU5ETEVfVFlQRV9aSVJDT05fRVZF
TlRfQU5HTEUgICAgICAgICAgICAgMHg5M0FGCisKK0FkZGl0aW9ucyB0byBDaGFwdGVyIDQgb2Yg
dGhlIE9wZW5HTCA0LjUgU3BlY2lmaWNhdGlvbiAoRXZlbnQgTW9kZWwpCisKKyAgICBBZGQgdGhl
IGZvbGxvd2luZyBlbnRyeSB0byB0YWJsZSA0LjIgIkNvbW1hbmRzIGZvciBpbXBvcnRpbmcKKyAg
ICBleHRlcm5hbCBzZW1hcGhvcmUgaGFuZGxlcy4iCisKKyAgICAgICAgfCBIYW5kbGUgVHlwZSAg
ICAgICAgICAgICAgICAgICAgfCBJbXBvcnQgY29tbWFuZCAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICB8IEhBTkRMRV9UWVBFX1pJUkNPTl9FVkVOVF9B
TkdMRSB8IEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFIHwKKyAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCisKKyAgICBSZXBsYWNlIHRoZSBwYXJhZ3JhcGggaW4gc2VjdGlvbiA0LjIuMSBiZWdp
bm5pbmcgIkV4dGVybmFsIGhhbmRsZXMKKyAgICBhcmUgb2Z0ZW4gZGVmaW5lZC4uLiIgd2l0aCB0
aGUgZm9sbG93aW5nCisKKyAgICAgICAgVGhlIGNvbW1hbmQKKworICAgICAgICAgICAgSW1wb3J0
U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUodWludCBzZW1hcGhvcmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGhhbmRsZVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IGhhbmRsZSk7CisKKyAg
ICAgICAgaW1wb3J0cyBhIHNlbWFwaG9yZSBmcm9tIHRoZSB6aXJjb24gaGFuZGxlIDxoYW5kbGU+
LiAgV2hhdCB0eXBlIG9mCisgICAgICAgIGhhbmRsZSA8aGFuZGxlPiByZWZlcnMgdG8gaXMgZGV0
ZXJtaW5lZCBieSA8aGFuZGxlVHlwZT4uICBBIHN1Y2Nlc3NmdWwKKyAgICAgICAgaW1wb3J0IG9w
ZXJhdGlvbiB0cmFuc2ZlcnMgb3duZXJzaGlwIG9mIDxoYW5kbGU+IHRvIHRoZSBHTAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiwgYW5kIHBlcmZvcm1pbmcgYW55IG9wZXJhdGlvbiBvbiA8aGFuZGxl
PiBpbiB0aGUKKyAgICAgICAgYXBwbGljYXRpb24gYWZ0ZXIgYW4gaW1wb3J0IHJlc3VsdHMgaW4g
dW5kZWZpbmVkIGJlaGF2aW9yLgorCitBZGRpdGlvbnMgdG8gQ2hhcHRlciA2IG9mIHRoZSBPcGVu
R0wgNC41IFNwZWNpZmljYXRpb24gKE1lbW9yeSBPYmplY3RzKQorCisgICAgQWRkIHRoZSBmb2xs
b3dpbmcgZW50cnkgdG8gdGFibGUgNi4yICJDb21tYW5kcyBmb3IgaW1wb3J0aW5nCisgICAgZXh0
ZXJuYWwgbWVtb3J5IGhhbmRsZXMuIgorCisgICAgICAgIHwgSGFuZGxlIFR5cGUgICAgICAgICAg
ICAgICAgICB8IEltcG9ydCBjb21tYW5kICAgICAgICAgICAgICAgIHwKKyAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KworICAgICAgICB8IEhBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEUgfCBJbXBvcnRNZW1vcnla
aXJjb25IYW5kbGVBTkdMRSB8CisgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgIFJlcGxhY2UgdGhlIHBh
cmFncmFwaCBpbiBzZWN0aW9uIDYuMSBiZWdpbm5pbmcgIkV4dGVybmFsIGhhbmRsZXMgYXJlCisg
ICAgb2Z0ZW4gZGVmaW5lZC4uLiIgd2l0aCB0aGUgZm9sbG93aW5nCisKKyAgICAgICAgVGhlIGNv
bW1hbmQKKworICAgICAgICAgICAgdm9pZCBJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSh1
aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludCBoYW5kbGUpOworCisgICAgICAgIGltcG9ydHMgYSBtZW1vcnkg
b2JqZWN0IG9mIGxlbmd0aCA8c2l6ZT4gZnJvbSB0aGUgaGFuZGxlCisgICAgICAgIDxoYW5kbGU+
LiAgV2hhdCB0eXBlIG9mIG9iamVjdCA8aGFuZGxlPiByZWZlcnMgdG8gaXMgZGV0ZXJtaW5lZCBi
eQorICAgICAgICA8aGFuZGxlVHlwZT4uICBBIHN1Y2Nlc3NmdWwgaW1wb3J0IG9wZXJhdGlvbiB0
cmFuc2ZlcnMgb3duZXJzaGlwCisgICAgICAgIG9mIDxoYW5kbGU+IHRvIHRoZSBHTCBpbXBsZW1l
bnRhdGlvbiwgYW5kIHBlcmZvcm1pbmcgYW55IG9wZXJhdGlvbiBvbgorICAgICAgICA8aGFuZGxl
PiBpbiB0aGUgYXBwbGljYXRpb24gYWZ0ZXIgYW4gaW1wb3J0IHJlc3VsdHMgaW4gdW5kZWZpbmVk
CisgICAgICAgIGJlaGF2aW9yLgorCitSZXZpc2lvbiBIaXN0b3J5CisKKyAgICBSZXZpc2lvbiAx
LCAyMDE5LTAyLTE5IChNaWNoYWVsIFNwYW5nKQorICAgICAgICAtIEluaXRpYWwgZHJhZnQgYmFz
ZWQgY2xvc2VseSBvbiBFWFRfZXh0ZXJuYWxfb2JqZWN0c19mZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xFX2lvc3VyZmFjZV9jbGllbnRf
YnVmZmVyLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVuc2lvbnMvRUdMX0FOR0xF
X2lvc3VyZmFjZV9jbGllbnRfYnVmZmVyLnR4dAppbmRleCA2OTA4ZTQ4NWQ1OGMzYThiYTAyZWUw
MDE2YzU3YjM2YjgxMTI1M2YyLi45NTMxNzdlZDUxNmMwYzQzMGZkMTFhYTQ4YzY4NzgzZjRiOTBk
MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9B
TkdMRV9pb3N1cmZhY2VfY2xpZW50X2J1ZmZlci50eHQKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvZXh0ZW5zaW9ucy9FR0xfQU5HTEVfaW9zdXJmYWNlX2NsaWVudF9idWZmZXIudHh0CkBA
IC01NSw2ICs1NSwxMSBAQCBOZXcgVG9rZW5zCiAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFM
X0ZPUk1BVF9BTkdMRSAweDM0NUQKICAgICAgICAgRUdMX0lPU1VSRkFDRV9VU0FHRV9ISU5UX0FO
R0xFIDB4MzQ4QQogCisgICAgQWNjZXB0ZWQgaW4gdGhlIDxhdHRyaWJ1dGU+IHBhcmFtZXRlciBv
ZgorICAgIGVnbEdldENvbmZpZ0F0dHJpYjoKKworICAgICAgICBFR0xfQklORF9UT19URVhUVVJF
X1RBUkdFVF9BTkdMRSAweDM0OEQKKwogQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdM
IDEuNCBTcGVjaWZpY2F0aW9uIChFR0wgRnVuY3Rpb25zIGFuZCBFcnJvcnMpCiAKICAgICBSZXBs
YWNlIHRoZSBsYXN0IHNlbnRlbmNlIG9mIHBhcmFncmFwaCAxIG9mIFNlY3Rpb24gMy41LjMgd2l0
aCB0aGUKQEAgLTgxLDggKzg2LDggQEAgQWRkaXRpb25zIHRvIENoYXB0ZXIgMyBvZiB0aGUgRUdM
IDEuNCBTcGVjaWZpY2F0aW9uIChFR0wgRnVuY3Rpb25zIGFuZCBFcnJvcnMpCiAgICAgICAtIEVH
TF9URVhUVVJFX0ZPUk1BVCB3aXRoIGEgdmFsdWUgb2YgRUdMX1RFWFRVUkVfUkdCQQogICAgICAg
LSBFR0xfV0lEVEggd2l0aCBhIHZhbHVlIGJldHdlZW4gMSBhbmQgdGhlIHdpZHRoIG9mIDxidWZm
ZXI+LgogICAgICAgLSBFR0xfSEVJR0hUIHdpdGggYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIHRoZSBo
ZWlnaHQgb2YgPGJ1ZmZlcj4uCi0gICAgICAtIEVHTF9URVhUVVJFX1RBUkdFVCB3aXRoIGEgdmFs
dWUgb2YgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFIChtYWNPUykKLSAgICAgICAgb3IgRUdM
X1RFWFRVUkVfMkQgKGlPUykKKyAgICAgIC0gRUdMX1RFWFRVUkVfVEFSR0VUIHdpdGggYSB2YWx1
ZSB0aGF0IG1hdGNoZXMgdGhlIGF0dHJpYnV0ZQorICAgICAgRUdMX0JJTkRfVE9fVEVYVFVSRV9U
QVJHRVRfQU5HTEUgYXMgcXVlcmllZCBmcm9tIGVnbEdldENvbmZpZ0F0dHJpYi4KICAgICAgIC0g
RUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSB3aXRoIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCB0aGUg
bnVtYmVyIG9mCiAgICAgcGxhbmVzIG9mIDxidWZmZXI+IChleGNsdXNpdmUpLgogCkBAIC0xMTks
NiArMTI0LDE1IEBAIEFkZGl0aW9ucyB0byBDaGFwdGVyIDMgb2YgdGhlIEVHTCAxLjQgU3BlY2lm
aWNhdGlvbiAoRUdMIEZ1bmN0aW9ucyBhbmQgRXJyb3JzKQogICAgIG9mIHRoZSBhc3NvY2ljYXRl
ZCBJT1N1cmZhY2Ugb2JqZWN0IGFyZSB1bmRlZmluZWQgd2hpbGUgdGhlIHBidWZmZXIgaXMKICAg
ICBib3VuZCB0byBhIGNsaWVudCB0ZXh0dXJlLiIKIAorICAgIEFwcGVuZCB0byB0aGUgZW5kIG9m
IFRhYmxlIDMuMS4KKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBBdHRyaWJ1dGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUeXBlICAgIE5vdGVzCisgICAgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisgICAgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEUgICAgZW51bSAgICBUZXh0dXJl
IHRhcmdldCBzdXBwb3J0ZWQgYnkKKyAgICBJT1N1cmZhY2UtYmFja2VkIHBidWZmZXJzLgorICAg
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisKIElzc3VlcwogCiAgICAgMS4gQ2FuIFJHQiBmb3JtYXRz
IGJlIHN1cHBvcnRlZD8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2V4dGVu
c2lvbnMvRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2RldmljZV90eXBlX2VnbC50eHQgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9leHRlbnNpb25zL0VHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9k
ZXZpY2VfdHlwZV9lZ2wudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkZGQ2NmIzOTY0Mjk0ZjljNzFkMjQ2ZGUw
ZWI3Nzg3MzAzM2NiNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9leHRlbnNpb25zL0VHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2VfdHlwZV9lZ2wudHh0
CkBAIC0wLDAgKzEsODYgQEAKK05hbWUKKworICAgIEFOR0xFX3BsYXRmb3JtX2FuZ2xlX2Rldmlj
ZV90eXBlX2VnbF9hbmdsZQorCitOYW1lIFN0cmluZ3MKKworICAgIEVHTF9BTkdMRV9wbGF0Zm9y
bV9hbmdsZV9kZXZpY2VfdHlwZV9lZ2xfYW5nbGUKKworQ29udHJpYnV0b3JzCisKKyAgICBKdWxp
ZW4gSXNvcmNlLCBPYmxvbmcKKworQ29udGFjdHMKKworICAgIEp1bGllbiBJc29yY2UsIE9ibG9u
ZyAoamlzb3JjZSAnYXQnIG9ibG9uZyAnZG90JyBjb20pCisKK1N0YXR1cworCisgICAgRHJhZnQK
KworVmVyc2lvbgorCisgICAgVmVyc2lvbiAxLCAyMDIwLTAzLTAzCisKK051bWJlcgorCisgICAg
RUdMIEV4dGVuc2lvbiBYWFgKKworRXh0ZW5zaW9uIFR5cGUKKworICAgIEVHTCBjbGllbnQgZXh0
ZW5zaW9uCisKK0RlcGVuZGVuY2llcworCisgICAgUmVxdWlyZXMgRUdMX0FOR0xFX3BsYXRmb3Jt
X2FuZ2xlX29wZW5nbC4KKworT3ZlcnZpZXcKKworICAgIFRoaXMgZXh0ZW5zaW9uIGVuYWJsZXMg
Y2hvb3NpbmcgdGhlIGRyaXZlcidzIEVHTCBpbXBsZW1lbnRhdGlvbiB3aGVuIGl0IGlzCisgICAg
YXZhaWxhYmxlLgorCitOZXcgVHlwZXMKKworICAgIE5vbmUKKworTmV3IFByb2NlZHVyZXMgYW5k
IEZ1bmN0aW9ucworCisgICAgTm9uZQorCitOZXcgVG9rZW5zCisKKyAgICBBY2NlcHRlZCBhcyB2
YWx1ZXMgZm9yIHRoZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUKKyAgICBh
dHRyaWJ1dGU6CisKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0VHTF9B
TkdMRSAgICAgMHgzNDhFCisKK0FkZGl0aW9ucyB0byB0aGUgRUdMIFNwZWNpZmljYXRpb24KKwor
ICAgIE5vbmUuCisKK05ldyBCZWhhdmlvcgorCisgICAgV2hlbiBjYWxsaW5nIGVnbEdldFBsYXRm
b3JtRGlzcGxheToKKworICAgIFRvIHJlcXVlc3QgYSBkcml2ZXIgZWdsLWJhY2tlZCBpbXBsZW1l
bnRhdGlvbiB3aXRoIEFOR0xFLCB0aGUgdmFsdWUgb2YKKyAgICBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9BTkdMRSBzaG91bGQgYmUKKyAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xf
QU5HTEUgb3IKKyAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRQorICAg
IGFuZCB0aGUgdmFsdWUgb2YgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFIHNo
b3VsZCBiZQorICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9FR0xfQU5HTEUuCisK
KyAgICBJZiBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUgaXMKKyAgICBFR0xf
UExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfRUdMX0FOR0xFIGFuZAorICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0FOR0xFIGlzIG5vdAorICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTF9BTkdMRSBvciBpcyBub3QKKyAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xF
U19BTkdMRSB0aGVuIGFuIEVHTF9CQURfQVRUUklCVVRFIGVycm9yIGlzCisgICAgaXMgZ2VuZXJh
dGVkIGFuZCBFR0xfTk9fRElTUExBWSBpcyByZXR1cm5lZC4KKworSXNzdWVzCisKKyAgICBOb25l
CisKK1JldmlzaW9uIEhpc3RvcnkKKworICAgIFZlcnNpb24gMSwgMjAyMC0wMy0wMyAoSnVsaWVu
IElzb3JjZSkKKyAgICAgIC0gSW5pdGlhbCBkcmFmdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0X2FuZ2xlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHRfYW5nbGUuaAppbmRleCA3NGU0ZTUxY2IyZDM5ZjAx
NWMwMjRhMDRhMTA2ZDVhZDE3ZDI4OGRjLi41MGJkNmYxYzgyZDE4YzU4M2JiNjkwMjA2ODU2OGI1
ZWY0MjkyYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VH
TC9lZ2xleHRfYW5nbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VH
TC9lZ2xleHRfYW5nbGUuaApAQCAtOTcsNiArOTcsMTEgQEAKICNkZWZpbmUgRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX1NXSUZUU0hBREVSX0FOR0xFIDB4MzQ4NwogI2VuZGlmIC8qIEVH
TF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2VfdHlwZV9zd2lmdHNoYWRlciAqLwogCisjaWZu
ZGVmIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2VfdHlwZV9lZ2xfYW5nbGUKKyNkZWZp
bmUgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2RldmljZV90eXBlX2VnbF9hbmdsZQorI2RlZmlu
ZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfRUdMX0FOR0xFIDB4MzQ4RQorI2VuZGlm
IC8qIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kZXZpY2VfdHlwZV9lZ2xfYW5nbGUgKi8KKwog
I2lmbmRlZiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfY29udGV4dF92aXJ0dWFsaXphdGlvbgog
I2RlZmluZSBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfY29udGV4dF92aXJ0dWFsaXphdGlvbiAx
CiAjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdMRV9DT05URVhUX1ZJUlRVQUxJWkFUSU9OX0FOR0xF
IDB4MzQ4MQpAQCAtMTk3LDYgKzIwMiw3IEBAIEVHTEFQSSBFR0xpbnQgRUdMQVBJRU5UUlkgZWds
UHJvZ3JhbUNhY2hlUmVzaXplQU5HTEUoRUdMRGlzcGxheSBkcHksIEVHTGludCBsaW1pCiAjZGVm
aW5lIEVHTF9JT1NVUkZBQ0VfVVNBR0VfSElOVF9BTkdMRSAweDM0OEEKICNkZWZpbmUgRUdMX0lP
U1VSRkFDRV9SRUFEX0hJTlRfQU5HTEUgMHgwMDAxCiAjZGVmaW5lIEVHTF9JT1NVUkZBQ0VfV1JJ
VEVfSElOVF9BTkdMRSAweDAwMDIKKyNkZWZpbmUgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRf
QU5HTEUgMHgzNDhECiAjZW5kaWYgLyogRUdMX0FOR0xFX2lvc3VyZmFjZV9jbGllbnRfYnVmZmVy
ICovCiAKICNpZm5kZWYgRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X2V4dGVuc2lvbnNfZW5hYmxl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJl
eHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKaW5k
ZXggMGVlMDgyYTNkMGYwY2NhZGFmMDk5YzkxMTA2ZjZjYWIyNzIyOTMwZi4uODM5M2IwNzM0Y2Nm
NjkyNGRlMjM3MTQ1OGE4NzkzYzljYWViODNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCkBAIC0zOCw3ICszOCw3IEBAIGV4dGVybiAiQyIg
ewogI2RlZmluZSBHTF9BUElFTlRSWVAgR0xfQVBJRU5UUlkqCiAjZW5kaWYKIAotLyogR2VuZXJh
dGVkIG9uIGRhdGUgMjAxODA1MjUgKi8KKy8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMjAwMjIxICov
CiAKIC8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CiAgKiBBUEk6IGdsZXMyCkBAIC0xOTcsNiAr
MTk3LDIyIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtdWl2S0hS
IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sCiAjZW5kaWYKICNlbmRpZiAvKiBHTF9L
SFJfcm9idXN0bmVzcyAqLwogCisjaWZuZGVmIEdMX0tIUl9zaGFkZXJfc3ViZ3JvdXAKKyNkZWZp
bmUgR0xfS0hSX3NoYWRlcl9zdWJncm91cCAxCisjZGVmaW5lIEdMX1NVQkdST1VQX1NJWkVfS0hS
ICAgICAgICAgICAgICAweDk1MzIKKyNkZWZpbmUgR0xfU1VCR1JPVVBfU1VQUE9SVEVEX1NUQUdF
U19LSFIgIDB4OTUzMworI2RlZmluZSBHTF9TVUJHUk9VUF9TVVBQT1JURURfRkVBVFVSRVNfS0hS
IDB4OTUzNAorI2RlZmluZSBHTF9TVUJHUk9VUF9RVUFEX0FMTF9TVEFHRVNfS0hSICAgMHg5NTM1
CisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQkFTSUNfQklUX0tIUiAweDAwMDAwMDAxCisj
ZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfVk9URV9CSVRfS0hSICAweDAwMDAwMDAyCisjZGVm
aW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQVJJVEhNRVRJQ19CSVRfS0hSIDB4MDAwMDAwMDQKKyNk
ZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9CQUxMT1RfQklUX0tIUiAweDAwMDAwMDA4CisjZGVm
aW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9CSVRfS0hSIDB4MDAwMDAwMTAKKyNkZWZp
bmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9TSFVGRkxFX1JFTEFUSVZFX0JJVF9LSFIgMHgwMDAwMDAy
MAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0NMVVNURVJFRF9CSVRfS0hSIDB4MDAwMDAw
NDAKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9RVUFEX0JJVF9LSFIgIDB4MDAwMDAwODAK
KyNlbmRpZiAvKiBHTF9LSFJfc2hhZGVyX3N1Ymdyb3VwICovCisKICNpZm5kZWYgR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKICNkZWZpbmUgR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19oZHIgMQogI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hS
ICAgMHg5M0IwCkBAIC04MDEsNiArODE3LDIyIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldEZsb2F0aV92T0VTIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvCiAj
ZGVmaW5lIEdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgMHg4N0VFCiAjZW5kaWYg
LyogR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUgKi8KIAorI2lmbmRlZiBHTF9BTURfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGVfYWR2YW5jZWQKKyNkZWZpbmUgR0xfQU1EX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlX2FkdmFuY2VkIDEKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NUT1JBR0Vf
U0FNUExFU19BTUQgMHg5MUIyCisjZGVmaW5lIEdMX01BWF9DT0xPUl9GUkFNRUJVRkZFUl9TQU1Q
TEVTX0FNRCAweDkxQjMKKyNkZWZpbmUgR0xfTUFYX0NPTE9SX0ZSQU1FQlVGRkVSX1NUT1JBR0Vf
U0FNUExFU19BTUQgMHg5MUI0CisjZGVmaW5lIEdMX01BWF9ERVBUSF9TVEVOQ0lMX0ZSQU1FQlVG
RkVSX1NBTVBMRVNfQU1EIDB4OTFCNQorI2RlZmluZSBHTF9OVU1fU1VQUE9SVEVEX01VTFRJU0FN
UExFX01PREVTX0FNRCAweDkxQjYKKyNkZWZpbmUgR0xfU1VQUE9SVEVEX01VTFRJU0FNUExFX01P
REVTX0FNRCAweDkxQjcKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVOREVSQlVG
RkVSU1RPUkFHRU1VTFRJU0FNUExFQURWQU5DRURBTURQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xz
aXplaSBzYW1wbGVzLCBHTHNpemVpIHN0b3JhZ2VTYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMTkFNRURSRU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVBRFZBTkNFREFN
RFBST0MpIChHTHVpbnQgcmVuZGVyYnVmZmVyLCBHTHNpemVpIHNhbXBsZXMsIEdMc2l6ZWkgc3Rv
cmFnZVNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFkdmFuY2VkQU1EIChH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMc2l6ZWkgc3RvcmFnZVNhbXBsZXMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTmFtZWRSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBZHZhbmNlZEFNRCAoR0x1aW50IHJlbmRlcmJ1ZmZlciwgR0xzaXplaSBzYW1wbGVzLCBH
THNpemVpIHN0b3JhZ2VTYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0FNRF9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZV9hZHZhbmNlZCAqLworCiAjaWZuZGVmIEdMX0FNRF9wZXJmb3JtYW5jZV9t
b25pdG9yCiAjZGVmaW5lIEdMX0FNRF9wZXJmb3JtYW5jZV9tb25pdG9yIDEKICNkZWZpbmUgR0xf
Q09VTlRFUl9UWVBFX0FNRCAgICAgICAgICAgICAgIDB4OEJDMApAQCAtOTE0LDkgKzk0Niw5IEBA
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSAo
R0x1aW50IGluZGV4LCBHTHVpbnQgZGl2CiAjaWZuZGVmIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hh
ZGVyX3NvdXJjZQogI2RlZmluZSBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UgMQog
I2RlZmluZSBHTF9UUkFOU0xBVEVEX1NIQURFUl9TT1VSQ0VfTEVOR1RIX0FOR0xFIDB4OTNBMAot
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRUUkFOU0xBVEVEU0hBREVSU09VUkNF
QU5HTEVQUk9DKSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMY2hhciAqc291cmNlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VFJBTlNMQVRFRFNIQURFUlNPVVJDRUFOR0xFUFJPQykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7CiAjaWZkZWYgR0xfR0xF
WFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0xjaGFyICpzb3VyY2UpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIChHTHVpbnQgc2hhZGVyLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpzb3VyY2UpOwogI2VuZGlmCiAjZW5k
aWYgLyogR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlICovCiAKQEAgLTk5NCw3ICsx
MDI2LDcgQEAgdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVTWU5DQVBQTEVQ
Uk9DKSAoR0xzeW5jIHN5bmMpOwogdHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTENM
SUVOVFdBSVRTWU5DQVBQTEVQUk9DKSAoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdM
dWludDY0IHRpbWVvdXQpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xXQUlUU1lO
Q0FQUExFUFJPQykgKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1l
b3V0KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUjY0VkFQUExF
UFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUU1lOQ0lWQVBQTEVQUk9DKSAoR0xzeW5jIHN5bmMsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICp2YWx1ZXMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTWU5DSVZBUFBMRVBST0MpIChHTHN5
bmMgc3luYywgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGNvdW50LCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICp2YWx1ZXMpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgR0xz
eW5jIEdMX0FQSUVOVFJZIGdsRmVuY2VTeW5jQVBQTEUgKEdMZW51bSBjb25kaXRpb24sIEdMYml0
ZmllbGQgZmxhZ3MpOwogR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1N5bmNB
UFBMRSAoR0xzeW5jIHN5bmMpOwpAQCAtMTAwMiw3ICsxMDM0LDcgQEAgR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRGVsZXRlU3luY0FQUExFIChHTHN5bmMgc3luYyk7CiBHTF9BUElDQUxM
IEdMZW51bSBHTF9BUElFTlRSWSBnbENsaWVudFdhaXRTeW5jQVBQTEUgKEdMc3luYyBzeW5jLCBH
TGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFdhaXRTeW5jQVBQTEUgKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBH
THVpbnQ2NCB0aW1lb3V0KTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVn
ZXI2NHZBUFBMRSAoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwotR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2V0U3luY2l2QVBQTEUgKEdMc3luYyBzeW5jLCBHTGVudW0gcG5h
bWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqdmFsdWVzKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFN5bmNpdkFQUExFIChHTHN5bmMgc3luYywg
R0xlbnVtIHBuYW1lLCBHTHNpemVpIGNvdW50LCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICp2YWx1
ZXMpOwogI2VuZGlmCiAjZW5kaWYgLyogR0xfQVBQTEVfc3luYyAqLwogCkBAIC0xMDQ5LDYgKzEw
ODEsMTEgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U3luY2l2QVBQTEUgKEdM
c3luYyBzeW5jLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkKICNkZWZpbmUgR0xfQVJNX3NoYWRlcl9m
cmFtZWJ1ZmZlcl9mZXRjaF9kZXB0aF9zdGVuY2lsIDEKICNlbmRpZiAvKiBHTF9BUk1fc2hhZGVy
X2ZyYW1lYnVmZmVyX2ZldGNoX2RlcHRoX3N0ZW5jaWwgKi8KIAorI2lmbmRlZiBHTF9BUk1fdGV4
dHVyZV91bm5vcm1hbGl6ZWRfY29vcmRpbmF0ZXMKKyNkZWZpbmUgR0xfQVJNX3RleHR1cmVfdW5u
b3JtYWxpemVkX2Nvb3JkaW5hdGVzIDEKKyNkZWZpbmUgR0xfVEVYVFVSRV9VTk5PUk1BTElaRURf
Q09PUkRJTkFURVNfQVJNIDB4OEY2QQorI2VuZGlmIC8qIEdMX0FSTV90ZXh0dXJlX3Vubm9ybWFs
aXplZF9jb29yZGluYXRlcyAqLworCiAjaWZuZGVmIEdMX0RNUF9wcm9ncmFtX2JpbmFyeQogI2Rl
ZmluZSBHTF9ETVBfcHJvZ3JhbV9iaW5hcnkgMQogI2RlZmluZSBHTF9TTUFQSFMzMF9QUk9HUkFN
X0JJTkFSWV9ETVAgICAgMHg5MjUxCkBAIC0xMjMwLDYgKzEyNjcsMTEgQEAgR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsUG9wR3JvdXBNYXJrZXJFWFQgKHZvaWQpOwogI2VuZGlmCiAjZW5k
aWYgLyogR0xfRVhUX2RlYnVnX21hcmtlciAqLwogCisjaWZuZGVmIEdMX0VYVF9kZXB0aF9jbGFt
cAorI2RlZmluZSBHTF9FWFRfZGVwdGhfY2xhbXAgMQorI2RlZmluZSBHTF9ERVBUSF9DTEFNUF9F
WFQgICAgICAgICAgICAgICAgMHg4NjRGCisjZW5kaWYgLyogR0xfRVhUX2RlcHRoX2NsYW1wICov
CisKICNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKICNkZWZpbmUgR0xfRVhUX2Rp
c2NhcmRfZnJhbWVidWZmZXIgMQogI2RlZmluZSBHTF9DT0xPUl9FWFQgICAgICAgICAgICAgICAg
ICAgICAgMHgxODAwCkBAIC0xMjYxLDYgKzEzMDMsNyBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNUSVZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gcG5h
bQogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9CSkVDVFVJVkVYVFBS
T0MpIChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwogdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZFWFRQUk9DKSAoR0x1aW50
IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNUVUk2NFZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVu
dW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRJTlRFR0VSNjRWRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSk7
CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2VuUXVlcmllc0VYVCAoR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7CiBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVRdWVyaWVzRVhUIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqaWRzKTsKQEAgLTEyNzMsNiArMTMxNiw3IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldFF1ZXJ5T2JqZWN0aXZFWFQgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGluCiBH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCAoR0x1aW50
IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCAoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUs
IEdMaW50NjQgKnBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVy
eU9iamVjdHVpNjR2RVhUIChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFt
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyNjR2RVhUIChHTGVu
dW0gcG5hbWUsIEdMaW50NjQgKmRhdGEpOwogI2VuZGlmCiAjZW5kaWYgLyogR0xfRVhUX2Rpc2pv
aW50X3RpbWVyX3F1ZXJ5ICovCiAKQEAgLTE1OTcsNiArMTY0MSwxOCBAQCBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyaV92RVhUIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMaQogI2VuZGlmCiAjZW5kaWYgLyogR0xfRVhUX211bHRpdmlld19kcmF3X2J1ZmZl
cnMgKi8KIAorI2lmbmRlZiBHTF9FWFRfbXVsdGl2aWV3X3Rlc3NlbGxhdGlvbl9nZW9tZXRyeV9z
aGFkZXIKKyNkZWZpbmUgR0xfRVhUX211bHRpdmlld190ZXNzZWxsYXRpb25fZ2VvbWV0cnlfc2hh
ZGVyIDEKKyNlbmRpZiAvKiBHTF9FWFRfbXVsdGl2aWV3X3Rlc3NlbGxhdGlvbl9nZW9tZXRyeV9z
aGFkZXIgKi8KKworI2lmbmRlZiBHTF9FWFRfbXVsdGl2aWV3X3RleHR1cmVfbXVsdGlzYW1wbGUK
KyNkZWZpbmUgR0xfRVhUX211bHRpdmlld190ZXh0dXJlX211bHRpc2FtcGxlIDEKKyNlbmRpZiAv
KiBHTF9FWFRfbXVsdGl2aWV3X3RleHR1cmVfbXVsdGlzYW1wbGUgKi8KKworI2lmbmRlZiBHTF9F
WFRfbXVsdGl2aWV3X3RpbWVyX3F1ZXJ5CisjZGVmaW5lIEdMX0VYVF9tdWx0aXZpZXdfdGltZXJf
cXVlcnkgMQorI2VuZGlmIC8qIEdMX0VYVF9tdWx0aXZpZXdfdGltZXJfcXVlcnkgKi8KKwogI2lm
bmRlZiBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4KICNkZWZpbmUgR0xfRVhUX29jY2x1
c2lvbl9xdWVyeV9ib29sZWFuIDEKICNkZWZpbmUgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCAg
ICAgICAgIDB4OEMyRgpAQCAtMjEzOCw2ICsyMTk0LDEwIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFRleEJ1ZmZlclJhbmdlRVhUIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJu
YWxmCiAjZGVmaW5lIEdMX1JHQjE2X1NOT1JNX0VYVCAgICAgICAgICAgICAgICAweDhGOUEKICNl
bmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9ub3JtMTYgKi8KIAorI2lmbmRlZiBHTF9FWFRfdGV4dHVy
ZV9xdWVyeV9sb2QKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfcXVlcnlfbG9kIDEKKyNlbmRpZiAv
KiBHTF9FWFRfdGV4dHVyZV9xdWVyeV9sb2QgKi8KKwogI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9y
ZwogI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9yZyAxCiAjZGVmaW5lIEdMX1JFRF9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAweDE5MDMKQEAgLTIxNjMsNiArMjIyMywxMCBAQCBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhCdWZmZXJSYW5nZUVYVCAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGludGVybmFsZgogI2RlZmluZSBHTF9TS0lQX0RFQ09ERV9FWFQgICAgICAgICAgICAgICAg
MHg4QTRBCiAjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfc1JHQl9kZWNvZGUgKi8KIAorI2lmbmRl
ZiBHTF9FWFRfdGV4dHVyZV9zaGFkb3dfbG9kCisjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX3NoYWRv
d19sb2QgMQorI2VuZGlmIC8qIEdMX0VYVF90ZXh0dXJlX3NoYWRvd19sb2QgKi8KKwogI2lmbmRl
ZiBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ug
MQogI2RlZmluZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVRfRVhUICAgMHg5MTJGCkBAIC0y
Mzk1LDYgKzI0NTksMTcgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZlF1
ZXJ5SW5mb0lOVEVMIChHTHVpbnQgcXVlcnlJZCwgR0x1aW50IHF1ZXIKICNlbmRpZgogI2VuZGlm
IC8qIEdMX0lOVEVMX3BlcmZvcm1hbmNlX3F1ZXJ5ICovCiAKKyNpZm5kZWYgR0xfTUVTQV9mcmFt
ZWJ1ZmZlcl9mbGlwX3kKKyNkZWZpbmUgR0xfTUVTQV9mcmFtZWJ1ZmZlcl9mbGlwX3kgMQorI2Rl
ZmluZSBHTF9GUkFNRUJVRkZFUl9GTElQX1lfTUVTQSAgICAgICAgMHg4QkJCCit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSUEFSQU1FVEVSSU1FU0FQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVEZSQU1FQlVGRkVSUEFSQU1FVEVSSVZNRVNBUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisjaWZkZWYgR0xfR0xFWFRf
UFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJQYXJh
bWV0ZXJpTUVTQSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2TUVT
QSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyNlbmRpZgor
I2VuZGlmIC8qIEdMX01FU0FfZnJhbWVidWZmZXJfZmxpcF95ICovCisKICNpZm5kZWYgR0xfTUVT
QV9wcm9ncmFtX2JpbmFyeV9mb3JtYXRzCiAjZGVmaW5lIEdMX01FU0FfcHJvZ3JhbV9iaW5hcnlf
Zm9ybWF0cyAxCiAjZGVmaW5lIEdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVF9NRVNBICAgICAweDg3
NUYKQEAgLTI1MjEsNiArMjU5NiwxMCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xW
aWV3cG9ydFBvc2l0aW9uV1NjYWxlTlYgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4YwogI2VuZGlm
CiAjZW5kaWYgLyogR0xfTlZfY2xpcF9zcGFjZV93X3NjYWxpbmcgKi8KIAorI2lmbmRlZiBHTF9O
Vl9jb21wdXRlX3NoYWRlcl9kZXJpdmF0aXZlcworI2RlZmluZSBHTF9OVl9jb21wdXRlX3NoYWRl
cl9kZXJpdmF0aXZlcyAxCisjZW5kaWYgLyogR0xfTlZfY29tcHV0ZV9zaGFkZXJfZGVyaXZhdGl2
ZXMgKi8KKwogI2lmbmRlZiBHTF9OVl9jb25kaXRpb25hbF9yZW5kZXIKICNkZWZpbmUgR0xfTlZf
Y29uZGl0aW9uYWxfcmVuZGVyIDEKICNkZWZpbmUgR0xfUVVFUllfV0FJVF9OViAgICAgICAgICAg
ICAgICAgIDB4OEUxMwpAQCAtMjcxMiw2ICsyNzkxLDEwIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEZyYWdtZW50Q292ZXJhZ2VDb2xvck5WIChHTHVpbnQgY29sb3IpOwogI2VuZGlm
CiAjZW5kaWYgLyogR0xfTlZfZnJhZ21lbnRfY292ZXJhZ2VfdG9fY29sb3IgKi8KIAorI2lmbmRl
ZiBHTF9OVl9mcmFnbWVudF9zaGFkZXJfYmFyeWNlbnRyaWMKKyNkZWZpbmUgR0xfTlZfZnJhZ21l
bnRfc2hhZGVyX2JhcnljZW50cmljIDEKKyNlbmRpZiAvKiBHTF9OVl9mcmFnbWVudF9zaGFkZXJf
YmFyeWNlbnRyaWMgKi8KKwogI2lmbmRlZiBHTF9OVl9mcmFnbWVudF9zaGFkZXJfaW50ZXJsb2Nr
CiAjZGVmaW5lIEdMX05WX2ZyYWdtZW50X3NoYWRlcl9pbnRlcmxvY2sgMQogI2VuZGlmIC8qIEdM
X05WX2ZyYWdtZW50X3NoYWRlcl9pbnRlcmxvY2sgKi8KQEAgLTI3MzksMTEgKzI4MjIsMTEgQEAg
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxpdEZyYW1lYnVmZmVyTlYgKEdMaW50IHNy
Y1gwLCBHTGludCBzcmNZMCwgR0xpbnQKICNkZWZpbmUgR0xfQ09WRVJBR0VfTU9EVUxBVElPTl9O
ViAgICAgICAgIDB4OTMzMgogI2RlZmluZSBHTF9DT1ZFUkFHRV9NT0RVTEFUSU9OX1RBQkxFX1NJ
WkVfTlYgMHg5MzMzCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTU9E
VUxBVElPTlRBQkxFTlZQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICp2KTsKLXR5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQ09WRVJBR0VNT0RVTEFUSU9OVEFCTEVOVlBS
T0MpIChHTHNpemVpIGJ1ZnNpemUsIEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRDT1ZFUkFHRU1PRFVMQVRJT05UQUJMRU5WUFJPQykgKEdMc2l6ZWkgYnVm
U2l6ZSwgR0xmbG9hdCAqdik7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVS
QUdFTU9EVUxBVElPTk5WUFJPQykgKEdMZW51bSBjb21wb25lbnRzKTsKICNpZmRlZiBHTF9HTEVY
VF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlcmFnZU1vZHVs
YXRpb25UYWJsZU5WIChHTHNpemVpIG4sIGNvbnN0IEdMZmxvYXQgKnYpOwotR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2V0Q292ZXJhZ2VNb2R1bGF0aW9uVGFibGVOViAoR0xzaXplaSBi
dWZzaXplLCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldENv
dmVyYWdlTW9kdWxhdGlvblRhYmxlTlYgKEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqdik7CiBH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlcmFnZU1vZHVsYXRpb25OViAoR0xlbnVt
IGNvbXBvbmVudHMpOwogI2VuZGlmCiAjZW5kaWYgLyogR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRf
c2FtcGxlcyAqLwpAQCAtMjg5MSwxMiArMjk3NCwxMDIgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVmVydGV4QXR0cmliRGl2aXNvck5WIChHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZp
c28KICNkZWZpbmUgR0xfU1VQRVJTQU1QTEVfU0NBTEVfWF9OViAgICAgICAgIDB4OTM3MgogI2Rl
ZmluZSBHTF9TVVBFUlNBTVBMRV9TQ0FMRV9ZX05WICAgICAgICAgMHg5MzczCiAjZGVmaW5lIEdM
X0NPTkZPUk1BTlRfTlYgICAgICAgICAgICAgICAgICAweDkzNzQKLXR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUSU5URVJOQUxGT1JNQVRTQU1QTEVJVk5WUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gcG5h
bWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVElOVEVSTkFMRk9STUFUU0FNUExFSVZOVlBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIHBuYW1l
LCBHTHNpemVpIGNvdW50LCBHTGludCAqcGFyYW1zKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZ
UEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlcm5hbGZvcm1hdFNhbXBs
ZWl2TlYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSBzYW1w
bGVzLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlcm5hbGZvcm1hdFNhbXBsZWl2TlYgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgY291bnQsIEdMaW50ICpwYXJhbXMpOwogI2VuZGlmCiAjZW5kaWYg
LyogR0xfTlZfaW50ZXJuYWxmb3JtYXRfc2FtcGxlX3F1ZXJ5ICovCiAKKyNpZm5kZWYgR0xfTlZf
bWVtb3J5X2F0dGFjaG1lbnQKKyNkZWZpbmUgR0xfTlZfbWVtb3J5X2F0dGFjaG1lbnQgMQorI2Rl
ZmluZSBHTF9BVFRBQ0hFRF9NRU1PUllfT0JKRUNUX05WICAgICAgMHg5NUE0CisjZGVmaW5lIEdM
X0FUVEFDSEVEX01FTU9SWV9PRkZTRVRfTlYgICAgICAweDk1QTUKKyNkZWZpbmUgR0xfTUVNT1JZ
X0FUVEFDSEFCTEVfQUxJR05NRU5UX05WIDB4OTVBNgorI2RlZmluZSBHTF9NRU1PUllfQVRUQUNI
QUJMRV9TSVpFX05WICAgICAgMHg5NUE3CisjZGVmaW5lIEdMX01FTU9SWV9BVFRBQ0hBQkxFX05W
ICAgICAgICAgICAweDk1QTgKKyNkZWZpbmUgR0xfREVUQUNIRURfTUVNT1JZX0lOQ0FSTkFUSU9O
X05WIDB4OTVBOQorI2RlZmluZSBHTF9ERVRBQ0hFRF9URVhUVVJFU19OViAgICAgICAgICAgMHg5
NUFBCisjZGVmaW5lIEdMX0RFVEFDSEVEX0JVRkZFUlNfTlYgICAgICAgICAgICAweDk1QUIKKyNk
ZWZpbmUgR0xfTUFYX0RFVEFDSEVEX1RFWFRVUkVTX05WICAgICAgIDB4OTVBQworI2RlZmluZSBH
TF9NQVhfREVUQUNIRURfQlVGRkVSU19OViAgICAgICAgMHg5NUFECit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVE1FTU9SWU9CSkVDVERFVEFDSEVEUkVTT1VSQ0VTVUlWTlZQUk9D
KSAoR0x1aW50IG1lbW9yeSwgR0xlbnVtIHBuYW1lLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3Vu
dCwgR0x1aW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRVNF
VE1FTU9SWU9CSkVDVFBBUkFNRVRFUk5WUFJPQykgKEdMdWludCBtZW1vcnksIEdMZW51bSBwbmFt
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWEFUVEFDSE1FTU9SWU5WUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBtZW1vcnksIEdMdWludDY0IG9mZnNldCk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJVRkZFUkFUVEFDSE1FTU9SWU5WUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMdWludCBtZW1vcnksIEdMdWludDY0IG9mZnNldCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFRVUkVBVFRBQ0hNRU1PUllOVlBST0MpIChHTHVpbnQg
dGV4dHVyZSwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQgb2Zmc2V0KTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMTkFNRURCVUZGRVJBVFRBQ0hNRU1PUllOVlBST0MpIChHTHVpbnQg
YnVmZmVyLCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBvZmZzZXQpOworI2lmZGVmIEdMX0dMRVhU
X1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldE1lbW9yeU9iamVj
dERldGFjaGVkUmVzb3VyY2VzdWl2TlYgKEdMdWludCBtZW1vcnksIEdMZW51bSBwbmFtZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFJlc2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyTlYgKEdMdWludCBtZW1v
cnksIEdMZW51bSBwbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhBdHRh
Y2hNZW1vcnlOViAoR0xlbnVtIHRhcmdldCwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQgb2Zmc2V0
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlckF0dGFjaE1lbW9yeU5WIChH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBvZmZzZXQpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4dHVyZUF0dGFjaE1lbW9yeU5WIChHTHVpbnQgdGV4dHVy
ZSwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQgb2Zmc2V0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbE5hbWVkQnVmZmVyQXR0YWNoTWVtb3J5TlYgKEdMdWludCBidWZmZXIsIEdMdWlu
dCBtZW1vcnksIEdMdWludDY0IG9mZnNldCk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9OVl9tZW1v
cnlfYXR0YWNobWVudCAqLworCisjaWZuZGVmIEdMX05WX21lc2hfc2hhZGVyCisjZGVmaW5lIEdM
X05WX21lc2hfc2hhZGVyIDEKKyNkZWZpbmUgR0xfTUVTSF9TSEFERVJfTlYgICAgICAgICAgICAg
ICAgIDB4OTU1OQorI2RlZmluZSBHTF9UQVNLX1NIQURFUl9OViAgICAgICAgICAgICAgICAgMHg5
NTVBCisjZGVmaW5lIEdMX01BWF9NRVNIX1VOSUZPUk1fQkxPQ0tTX05WICAgICAweDhFNjAKKyNk
ZWZpbmUgR0xfTUFYX01FU0hfVEVYVFVSRV9JTUFHRV9VTklUU19OViAweDhFNjEKKyNkZWZpbmUg
R0xfTUFYX01FU0hfSU1BR0VfVU5JRk9STVNfTlYgICAgIDB4OEU2MgorI2RlZmluZSBHTF9NQVhf
TUVTSF9VTklGT1JNX0NPTVBPTkVOVFNfTlYgMHg4RTYzCisjZGVmaW5lIEdMX01BWF9NRVNIX0FU
T01JQ19DT1VOVEVSX0JVRkZFUlNfTlYgMHg4RTY0CisjZGVmaW5lIEdMX01BWF9NRVNIX0FUT01J
Q19DT1VOVEVSU19OViAgICAweDhFNjUKKyNkZWZpbmUgR0xfTUFYX01FU0hfU0hBREVSX1NUT1JB
R0VfQkxPQ0tTX05WIDB4OEU2NgorI2RlZmluZSBHTF9NQVhfQ09NQklORURfTUVTSF9VTklGT1JN
X0NPTVBPTkVOVFNfTlYgMHg4RTY3CisjZGVmaW5lIEdMX01BWF9UQVNLX1VOSUZPUk1fQkxPQ0tT
X05WICAgICAweDhFNjgKKyNkZWZpbmUgR0xfTUFYX1RBU0tfVEVYVFVSRV9JTUFHRV9VTklUU19O
ViAweDhFNjkKKyNkZWZpbmUgR0xfTUFYX1RBU0tfSU1BR0VfVU5JRk9STVNfTlYgICAgIDB4OEU2
QQorI2RlZmluZSBHTF9NQVhfVEFTS19VTklGT1JNX0NPTVBPTkVOVFNfTlYgMHg4RTZCCisjZGVm
aW5lIEdMX01BWF9UQVNLX0FUT01JQ19DT1VOVEVSX0JVRkZFUlNfTlYgMHg4RTZDCisjZGVmaW5l
IEdMX01BWF9UQVNLX0FUT01JQ19DT1VOVEVSU19OViAgICAweDhFNkQKKyNkZWZpbmUgR0xfTUFY
X1RBU0tfU0hBREVSX1NUT1JBR0VfQkxPQ0tTX05WIDB4OEU2RQorI2RlZmluZSBHTF9NQVhfQ09N
QklORURfVEFTS19VTklGT1JNX0NPTVBPTkVOVFNfTlYgMHg4RTZGCisjZGVmaW5lIEdMX01BWF9N
RVNIX1dPUktfR1JPVVBfSU5WT0NBVElPTlNfTlYgMHg5NUEyCisjZGVmaW5lIEdMX01BWF9UQVNL
X1dPUktfR1JPVVBfSU5WT0NBVElPTlNfTlYgMHg5NUEzCisjZGVmaW5lIEdMX01BWF9NRVNIX1RP
VEFMX01FTU9SWV9TSVpFX05WICAweDk1MzYKKyNkZWZpbmUgR0xfTUFYX1RBU0tfVE9UQUxfTUVN
T1JZX1NJWkVfTlYgIDB4OTUzNworI2RlZmluZSBHTF9NQVhfTUVTSF9PVVRQVVRfVkVSVElDRVNf
TlYgICAgMHg5NTM4CisjZGVmaW5lIEdMX01BWF9NRVNIX09VVFBVVF9QUklNSVRJVkVTX05WICAw
eDk1MzkKKyNkZWZpbmUgR0xfTUFYX1RBU0tfT1VUUFVUX0NPVU5UX05WICAgICAgIDB4OTUzQQor
I2RlZmluZSBHTF9NQVhfRFJBV19NRVNIX1RBU0tTX0NPVU5UX05WICAgMHg5NTNECisjZGVmaW5l
IEdMX01BWF9NRVNIX1ZJRVdTX05WICAgICAgICAgICAgICAweDk1NTcKKyNkZWZpbmUgR0xfTUVT
SF9PVVRQVVRfUEVSX1ZFUlRFWF9HUkFOVUxBUklUWV9OViAweDkyREYKKyNkZWZpbmUgR0xfTUVT
SF9PVVRQVVRfUEVSX1BSSU1JVElWRV9HUkFOVUxBUklUWV9OViAweDk1NDMKKyNkZWZpbmUgR0xf
TUFYX01FU0hfV09SS19HUk9VUF9TSVpFX05WICAgIDB4OTUzQgorI2RlZmluZSBHTF9NQVhfVEFT
S19XT1JLX0dST1VQX1NJWkVfTlYgICAgMHg5NTNDCisjZGVmaW5lIEdMX01FU0hfV09SS19HUk9V
UF9TSVpFX05WICAgICAgICAweDk1M0UKKyNkZWZpbmUgR0xfVEFTS19XT1JLX0dST1VQX1NJWkVf
TlYgICAgICAgIDB4OTUzRgorI2RlZmluZSBHTF9NRVNIX1ZFUlRJQ0VTX09VVF9OViAgICAgICAg
ICAgMHg5NTc5CisjZGVmaW5lIEdMX01FU0hfUFJJTUlUSVZFU19PVVRfTlYgICAgICAgICAweDk1
N0EKKyNkZWZpbmUgR0xfTUVTSF9PVVRQVVRfVFlQRV9OViAgICAgICAgICAgIDB4OTU3QgorI2Rl
ZmluZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfTUVTSF9TSEFERVJfTlYgMHg5NTlD
CisjZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9UQVNLX1NIQURFUl9OViAw
eDk1OUQKKyNkZWZpbmUgR0xfUkVGRVJFTkNFRF9CWV9NRVNIX1NIQURFUl9OViAgIDB4OTVBMAor
I2RlZmluZSBHTF9SRUZFUkVOQ0VEX0JZX1RBU0tfU0hBREVSX05WICAgMHg5NUExCisjZGVmaW5l
IEdMX01FU0hfU0hBREVSX0JJVF9OViAgICAgICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIEdM
X1RBU0tfU0hBREVSX0JJVF9OViAgICAgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIEdMX01F
U0hfU1VCUk9VVElORV9OViAgICAgICAgICAgICAweDk1N0MKKyNkZWZpbmUgR0xfVEFTS19TVUJS
T1VUSU5FX05WICAgICAgICAgICAgIDB4OTU3RAorI2RlZmluZSBHTF9NRVNIX1NVQlJPVVRJTkVf
VU5JRk9STV9OViAgICAgMHg5NTdFCisjZGVmaW5lIEdMX1RBU0tfU1VCUk9VVElORV9VTklGT1JN
X05WICAgICAweDk1N0YKKyNkZWZpbmUgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1JFRkVSRU5D
RURfQllfTUVTSF9TSEFERVJfTlYgMHg5NTlFCisjZGVmaW5lIEdMX0FUT01JQ19DT1VOVEVSX0JV
RkZFUl9SRUZFUkVOQ0VEX0JZX1RBU0tfU0hBREVSX05WIDB4OTU5RgordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xEUkFXTUVTSFRBU0tTTlZQUk9DKSAoR0x1aW50IGZpcnN0LCBHTHVp
bnQgY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXTUVTSFRBU0tT
SU5ESVJFQ1ROVlBST0MpIChHTGludHB0ciBpbmRpcmVjdCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTE1VTFRJRFJBV01FU0hUQVNLU0lORElSRUNUTlZQUk9DKSAoR0xpbnRwdHIg
aW5kaXJlY3QsIEdMc2l6ZWkgZHJhd2NvdW50LCBHTHNpemVpIHN0cmlkZSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV01FU0hUQVNLU0lORElSRUNUQ09VTlROVlBS
T0MpIChHTGludHB0ciBpbmRpcmVjdCwgR0xpbnRwdHIgZHJhd2NvdW50LCBHTHNpemVpIG1heGRy
YXdjb3VudCwgR0xzaXplaSBzdHJpZGUpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdNZXNoVGFza3NOViAoR0x1aW50IGZpcnN0
LCBHTHVpbnQgY291bnQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd01lc2hU
YXNrc0luZGlyZWN0TlYgKEdMaW50cHRyIGluZGlyZWN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbE11bHRpRHJhd01lc2hUYXNrc0luZGlyZWN0TlYgKEdMaW50cHRyIGluZGlyZWN0
LCBHTHNpemVpIGRyYXdjb3VudCwgR0xzaXplaSBzdHJpZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsTXVsdGlEcmF3TWVzaFRhc2tzSW5kaXJlY3RDb3VudE5WIChHTGludHB0ciBp
bmRpcmVjdCwgR0xpbnRwdHIgZHJhd2NvdW50LCBHTHNpemVpIG1heGRyYXdjb3VudCwgR0xzaXpl
aSBzdHJpZGUpOworI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfbWVzaF9zaGFkZXIgKi8KKwogI2lm
bmRlZiBHTF9OVl9ub25fc3F1YXJlX21hdHJpY2VzCiAjZGVmaW5lIEdMX05WX25vbl9zcXVhcmVf
bWF0cmljZXMgMQogI2RlZmluZSBHTF9GTE9BVF9NQVQyeDNfTlYgICAgICAgICAgICAgICAgMHg4
QjY1CkBAIC0zMTMzLDcgKzMzMDYsNyBAQCB0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBG
TkdMUEFUSEdMWVBISU5ERVhSQU5HRU5WUFJPQykgKEdMZW51bSBmb250VGFyZ2V0LAogdHlwZWRl
ZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhHTFlQSElOREVYQVJSQVlOVlBST0MpIChH
THVpbnQgZmlyc3RQYXRoTmFtZSwgR0xlbnVtIGZvbnRUYXJnZXQsIGNvbnN0IHZvaWQgKmZvbnRO
YW1lLCBHTGJpdGZpZWxkIGZvbnRTdHlsZSwgR0x1aW50IGZpcnN0R2x5cGhJbmRleCwgR0xzaXpl
aSBudW1HbHlwaHMsIEdMdWludCBwYXRoUGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2Fs
ZSk7CiB0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMUEFUSE1FTU9SWUdMWVBISU5E
RVhBUlJBWU5WUFJPQykgKEdMdWludCBmaXJzdFBhdGhOYW1lLCBHTGVudW0gZm9udFRhcmdldCwg
R0xzaXplaXB0ciBmb250U2l6ZSwgY29uc3Qgdm9pZCAqZm9udERhdGEsIEdMc2l6ZWkgZmFjZUlu
ZGV4LCBHTHVpbnQgZmlyc3RHbHlwaEluZGV4LCBHTHNpemVpIG51bUdseXBocywgR0x1aW50IHBh
dGhQYXJhbWV0ZXJUZW1wbGF0ZSwgR0xmbG9hdCBlbVNjYWxlKTsKIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVUR0VOTlZQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGVudW0gZ2VuTW9kZSwgR0xpbnQgY29tcG9uZW50
cywgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUUFJPR1JBTVJFU09VUkNFRlZOVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBy
b2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRleCwgR0xzaXplaSBwcm9wQ291bnQsIGNvbnN0IEdM
ZW51bSAqcHJvcHMsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpw
YXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNUkVTT1VS
Q0VGVk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0x1
aW50IGluZGV4LCBHTHNpemVpIHByb3BDb3VudCwgY29uc3QgR0xlbnVtICpwcm9wcywgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOwogdHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xNQVRSSVhGUlVTVFVNRVhUUFJPQykgKEdMZW51bSBtb2RlLCBH
TGRvdWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwgR0xkb3VibGUgYm90dG9tLCBHTGRvdWJsZSB0
b3AsIEdMZG91YmxlIHpOZWFyLCBHTGRvdWJsZSB6RmFyKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMTUFUUklYTE9BRElERU5USVRZRVhUUFJPQykgKEdMZW51bSBtb2RlKTsKIHR5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYTE9BRFRSQU5TUE9TRUZFWFRQUk9D
KSAoR0xlbnVtIG1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOwpAQCAtMzIxMCw3ICszMzgzLDcgQEAg
R0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJRU5UUlkgZ2xQYXRoR2x5cGhJbmRleFJhbmdlTlYgKEdM
ZW51bSBmb250VGFyZ2V0LCBjb25zdAogR0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJRU5UUlkgZ2xQ
YXRoR2x5cGhJbmRleEFycmF5TlYgKEdMdWludCBmaXJzdFBhdGhOYW1lLCBHTGVudW0gZm9udFRh
cmdldCwgY29uc3Qgdm9pZCAqZm9udE5hbWUsIEdMYml0ZmllbGQgZm9udFN0eWxlLCBHTHVpbnQg
Zmlyc3RHbHlwaEluZGV4LCBHTHNpemVpIG51bUdseXBocywgR0x1aW50IHBhdGhQYXJhbWV0ZXJU
ZW1wbGF0ZSwgR0xmbG9hdCBlbVNjYWxlKTsKIEdMX0FQSUNBTEwgR0xlbnVtIEdMX0FQSUVOVFJZ
IGdsUGF0aE1lbW9yeUdseXBoSW5kZXhBcnJheU5WIChHTHVpbnQgZmlyc3RQYXRoTmFtZSwgR0xl
bnVtIGZvbnRUYXJnZXQsIEdMc2l6ZWlwdHIgZm9udFNpemUsIGNvbnN0IHZvaWQgKmZvbnREYXRh
LCBHTHNpemVpIGZhY2VJbmRleCwgR0x1aW50IGZpcnN0R2x5cGhJbmRleCwgR0xzaXplaSBudW1H
bHlwaHMsIEdMdWludCBwYXRoUGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2FsZSk7CiBH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5O
ViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGVudW0gZ2VuTW9kZSwgR0xpbnQg
Y29tcG9uZW50cywgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZWZ2TlYgKEdMdWludCBwcm9ncmFtLCBHTGVudW0g
cHJvZ3JhbUludGVyZmFjZSwgR0x1aW50IGluZGV4LCBHTHNpemVpIHByb3BDb3VudCwgY29uc3Qg
R0xlbnVtICpwcm9wcywgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQg
KnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUmVzb3Vy
Y2Vmdk5WIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBp
bmRleCwgR0xzaXplaSBwcm9wQ291bnQsIGNvbnN0IEdMZW51bSAqcHJvcHMsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbE1hdHJpeEZydXN0dW1FWFQgKEdMZW51bSBtb2RlLCBHTGRvdWJsZSBsZWZ0
LCBHTGRvdWJsZSByaWdodCwgR0xkb3VibGUgYm90dG9tLCBHTGRvdWJsZSB0b3AsIEdMZG91Ymxl
IHpOZWFyLCBHTGRvdWJsZSB6RmFyKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1h
dHJpeExvYWRJZGVudGl0eUVYVCAoR0xlbnVtIG1vZGUpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsTWF0cml4TG9hZFRyYW5zcG9zZWZFWFQgKEdMZW51bSBtb2RlLCBjb25zdCBHTGZs
b2F0ICptKTsKQEAgLTMyODUsNiArMzQ1OCwxMSBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xSZWFkQnVmZmVyTlYgKEdMZW51bSBtb2RlKTsKICNkZWZpbmUgR0xfTlZfcmVhZF9zdGVu
Y2lsIDEKICNlbmRpZiAvKiBHTF9OVl9yZWFkX3N0ZW5jaWwgKi8KIAorI2lmbmRlZiBHTF9OVl9y
ZXByZXNlbnRhdGl2ZV9mcmFnbWVudF90ZXN0CisjZGVmaW5lIEdMX05WX3JlcHJlc2VudGF0aXZl
X2ZyYWdtZW50X3Rlc3QgMQorI2RlZmluZSBHTF9SRVBSRVNFTlRBVElWRV9GUkFHTUVOVF9URVNU
X05WIDB4OTM3RgorI2VuZGlmIC8qIEdMX05WX3JlcHJlc2VudGF0aXZlX2ZyYWdtZW50X3Rlc3Qg
Ki8KKwogI2lmbmRlZiBHTF9OVl9zUkdCX2Zvcm1hdHMKICNkZWZpbmUgR0xfTlZfc1JHQl9mb3Jt
YXRzIDEKICNkZWZpbmUgR0xfU0xVTUlOQU5DRV9OViAgICAgICAgICAgICAgICAgIDB4OEM0NgpA
QCAtMzMyMyw2ICszNTAxLDE4IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlc29s
dmVEZXB0aFZhbHVlc05WICh2b2lkKTsKICNkZWZpbmUgR0xfTlZfc2FtcGxlX21hc2tfb3ZlcnJp
ZGVfY292ZXJhZ2UgMQogI2VuZGlmIC8qIEdMX05WX3NhbXBsZV9tYXNrX292ZXJyaWRlX2NvdmVy
YWdlICovCiAKKyNpZm5kZWYgR0xfTlZfc2Npc3Nvcl9leGNsdXNpdmUKKyNkZWZpbmUgR0xfTlZf
c2Npc3Nvcl9leGNsdXNpdmUgMQorI2RlZmluZSBHTF9TQ0lTU09SX1RFU1RfRVhDTFVTSVZFX05W
ICAgICAgMHg5NTU1CisjZGVmaW5lIEdMX1NDSVNTT1JfQk9YX0VYQ0xVU0lWRV9OViAgICAgICAw
eDk1NTYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUkVYQ0xVU0lWRU5W
UFJPQykgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUkVYQ0xVU0lWRUFSUkFZVk5W
UFJPQykgKEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworI2lm
ZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNj
aXNzb3JFeGNsdXNpdmVOViAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2Npc3NvckV4Y2x1c2l2
ZUFycmF5dk5WIChHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsK
KyNlbmRpZgorI2VuZGlmIC8qIEdMX05WX3NjaXNzb3JfZXhjbHVzaXZlICovCisKICNpZm5kZWYg
R0xfTlZfc2hhZGVyX2F0b21pY19mcDE2X3ZlY3RvcgogI2RlZmluZSBHTF9OVl9zaGFkZXJfYXRv
bWljX2ZwMTZfdmVjdG9yIDEKICNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfYXRvbWljX2ZwMTZfdmVj
dG9yICovCkBAIC0zMzMxLDYgKzM1MjEsNTYgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUmVzb2x2ZURlcHRoVmFsdWVzTlYgKHZvaWQpOwogI2RlZmluZSBHTF9OVl9zaGFkZXJfbm9w
ZXJzcGVjdGl2ZV9pbnRlcnBvbGF0aW9uIDEKICNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfbm9wZXJz
cGVjdGl2ZV9pbnRlcnBvbGF0aW9uICovCiAKKyNpZm5kZWYgR0xfTlZfc2hhZGVyX3N1Ymdyb3Vw
X3BhcnRpdGlvbmVkCisjZGVmaW5lIEdMX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZCAx
CisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIDB4MDAwMDAx
MDAKKyNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQgKi8KKworI2lm
bmRlZiBHTF9OVl9zaGFkZXJfdGV4dHVyZV9mb290cHJpbnQKKyNkZWZpbmUgR0xfTlZfc2hhZGVy
X3RleHR1cmVfZm9vdHByaW50IDEKKyNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfdGV4dHVyZV9mb290
cHJpbnQgKi8KKworI2lmbmRlZiBHTF9OVl9zaGFkaW5nX3JhdGVfaW1hZ2UKKyNkZWZpbmUgR0xf
TlZfc2hhZGluZ19yYXRlX2ltYWdlIDEKKyNkZWZpbmUgR0xfU0hBRElOR19SQVRFX0lNQUdFX05W
ICAgICAgICAgIDB4OTU2MworI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfTk9fSU5WT0NBVElPTlNf
TlYgMHg5NTY0CisjZGVmaW5lIEdMX1NIQURJTkdfUkFURV8xX0lOVk9DQVRJT05fUEVSX1BJWEVM
X05WIDB4OTU2NQorI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfMV9JTlZPQ0FUSU9OX1BFUl8xWDJf
UElYRUxTX05WIDB4OTU2NgorI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfMV9JTlZPQ0FUSU9OX1BF
Ul8yWDFfUElYRUxTX05WIDB4OTU2NworI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfMV9JTlZPQ0FU
SU9OX1BFUl8yWDJfUElYRUxTX05WIDB4OTU2OAorI2RlZmluZSBHTF9TSEFESU5HX1JBVEVfMV9J
TlZPQ0FUSU9OX1BFUl8yWDRfUElYRUxTX05WIDB4OTU2OQorI2RlZmluZSBHTF9TSEFESU5HX1JB
VEVfMV9JTlZPQ0FUSU9OX1BFUl80WDJfUElYRUxTX05WIDB4OTU2QQorI2RlZmluZSBHTF9TSEFE
SU5HX1JBVEVfMV9JTlZPQ0FUSU9OX1BFUl80WDRfUElYRUxTX05WIDB4OTU2QgorI2RlZmluZSBH
TF9TSEFESU5HX1JBVEVfMl9JTlZPQ0FUSU9OU19QRVJfUElYRUxfTlYgMHg5NTZDCisjZGVmaW5l
IEdMX1NIQURJTkdfUkFURV80X0lOVk9DQVRJT05TX1BFUl9QSVhFTF9OViAweDk1NkQKKyNkZWZp
bmUgR0xfU0hBRElOR19SQVRFXzhfSU5WT0NBVElPTlNfUEVSX1BJWEVMX05WIDB4OTU2RQorI2Rl
ZmluZSBHTF9TSEFESU5HX1JBVEVfMTZfSU5WT0NBVElPTlNfUEVSX1BJWEVMX05WIDB4OTU2Rgor
I2RlZmluZSBHTF9TSEFESU5HX1JBVEVfSU1BR0VfQklORElOR19OViAgMHg5NTVCCisjZGVmaW5l
IEdMX1NIQURJTkdfUkFURV9JTUFHRV9URVhFTF9XSURUSF9OViAweDk1NUMKKyNkZWZpbmUgR0xf
U0hBRElOR19SQVRFX0lNQUdFX1RFWEVMX0hFSUdIVF9OViAweDk1NUQKKyNkZWZpbmUgR0xfU0hB
RElOR19SQVRFX0lNQUdFX1BBTEVUVEVfU0laRV9OViAweDk1NUUKKyNkZWZpbmUgR0xfTUFYX0NP
QVJTRV9GUkFHTUVOVF9TQU1QTEVTX05WIDB4OTU1RgorI2RlZmluZSBHTF9TSEFESU5HX1JBVEVf
U0FNUExFX09SREVSX0RFRkFVTFRfTlYgMHg5NUFFCisjZGVmaW5lIEdMX1NIQURJTkdfUkFURV9T
QU1QTEVfT1JERVJfUElYRUxfTUFKT1JfTlYgMHg5NUFGCisjZGVmaW5lIEdMX1NIQURJTkdfUkFU
RV9TQU1QTEVfT1JERVJfU0FNUExFX01BSk9SX05WIDB4OTVCMAordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xCSU5EU0hBRElOR1JBVEVJTUFHRU5WUFJPQykgKEdMdWludCB0ZXh0dXJl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0hBRElOR1JBVEVJTUFHRVBB
TEVUVEVOVlBST0MpIChHTHVpbnQgdmlld3BvcnQsIEdMdWludCBlbnRyeSwgR0xlbnVtICpyYXRl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0hBRElOR1JBVEVTQU1QTEVM
T0NBVElPTklWTlZQUk9DKSAoR0xlbnVtIHJhdGUsIEdMdWludCBzYW1wbGVzLCBHTHVpbnQgaW5k
ZXgsIEdMaW50ICpsb2NhdGlvbik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNI
QURJTkdSQVRFSU1BR0VCQVJSSUVSTlZQUk9DKSAoR0xib29sZWFuIHN5bmNocm9uaXplKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0hBRElOR1JBVEVJTUFHRVBBTEVUVEVOVlBS
T0MpIChHTHVpbnQgdmlld3BvcnQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xlbnVtICpyYXRlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNIQURJTkdS
QVRFU0FNUExFT1JERVJOVlBST0MpIChHTGVudW0gb3JkZXIpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xTSEFESU5HUkFURVNBTVBMRU9SREVSQ1VTVE9NTlZQUk9DKSAoR0xlbnVt
IHJhdGUsIEdMdWludCBzYW1wbGVzLCBjb25zdCBHTGludCAqbG9jYXRpb25zKTsKKyNpZmRlZiBH
TF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kU2hh
ZGluZ1JhdGVJbWFnZU5WIChHTHVpbnQgdGV4dHVyZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRTaGFkaW5nUmF0ZUltYWdlUGFsZXR0ZU5WIChHTHVpbnQgdmlld3BvcnQsIEdM
dWludCBlbnRyeSwgR0xlbnVtICpyYXRlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFNoYWRpbmdSYXRlU2FtcGxlTG9jYXRpb25pdk5WIChHTGVudW0gcmF0ZSwgR0x1aW50IHNh
bXBsZXMsIEdMdWludCBpbmRleCwgR0xpbnQgKmxvY2F0aW9uKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFNoYWRpbmdSYXRlSW1hZ2VCYXJyaWVyTlYgKEdMYm9vbGVhbiBzeW5jaHJv
bml6ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTaGFkaW5nUmF0ZUltYWdlUGFs
ZXR0ZU5WIChHTHVpbnQgdmlld3BvcnQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xlbnVtICpyYXRlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTaGFkaW5n
UmF0ZVNhbXBsZU9yZGVyTlYgKEdMZW51bSBvcmRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xTaGFkaW5nUmF0ZVNhbXBsZU9yZGVyQ3VzdG9tTlYgKEdMZW51bSByYXRlLCBHTHVp
bnQgc2FtcGxlcywgY29uc3QgR0xpbnQgKmxvY2F0aW9ucyk7CisjZW5kaWYKKyNlbmRpZiAvKiBH
TF9OVl9zaGFkaW5nX3JhdGVfaW1hZ2UgKi8KKwogI2lmbmRlZiBHTF9OVl9zaGFkb3dfc2FtcGxl
cnNfYXJyYXkKICNkZWZpbmUgR0xfTlZfc2hhZG93X3NhbXBsZXJzX2FycmF5IDEKICNkZWZpbmUg
R0xfU0FNUExFUl8yRF9BUlJBWV9TSEFET1dfTlYgICAgIDB4OERDNApAQCAtMzQ0MSw2ICszNjgx
LDEwIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZU11
bHRpc2FtcGxlTXVsdGl2aWV3T1ZSIChHTGVudW0KICNlbmRpZgogI2VuZGlmIC8qIEdMX09WUl9t
dWx0aXZpZXdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlICovCiAKKyNpZm5kZWYgR0xf
UUNPTV9ZVVZfdGV4dHVyZV9nYXRoZXIKKyNkZWZpbmUgR0xfUUNPTV9ZVVZfdGV4dHVyZV9nYXRo
ZXIgMQorI2VuZGlmIC8qIEdMX1FDT01fWVVWX3RleHR1cmVfZ2F0aGVyICovCisKICNpZm5kZWYg
R0xfUUNPTV9hbHBoYV90ZXN0CiAjZGVmaW5lIEdMX1FDT01fYWxwaGFfdGVzdCAxCiAjZGVmaW5l
IEdMX0FMUEhBX1RFU1RfUUNPTSAgICAgICAgICAgICAgICAweDBCQzAKQEAgLTM1NDcsNiArMzc5
MSwxMCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlckZldGNoQmFy
cmllclFDT00gKHZvaWQpOwogI2VuZGlmCiAjZW5kaWYgLyogR0xfUUNPTV9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2hfbm9uY29oZXJlbnQgKi8KIAorI2lmbmRlZiBHTF9RQ09NX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaF9yYXRlCisjZGVmaW5lIEdMX1FDT01fc2hhZGVyX2ZyYW1lYnVmZmVyX2Zl
dGNoX3JhdGUgMQorI2VuZGlmIC8qIEdMX1FDT01fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoX3Jh
dGUgKi8KKwogI2lmbmRlZiBHTF9RQ09NX3RleHR1cmVfZm92ZWF0ZWQKICNkZWZpbmUgR0xfUUNP
TV90ZXh0dXJlX2ZvdmVhdGVkIDEKICNkZWZpbmUgR0xfVEVYVFVSRV9GT1ZFQVRFRF9GRUFUVVJF
X0JJVFNfUUNPTSAweDhCRkIKQEAgLTM1NjAsNiArMzgwOCwxMiBAQCBHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xUZXh0dXJlRm92ZWF0aW9uUGFyYW1ldGVyc1FDT00gKEdMdWludCB0ZXh0
dXJlLCBHTAogI2VuZGlmCiAjZW5kaWYgLyogR0xfUUNPTV90ZXh0dXJlX2ZvdmVhdGVkICovCiAK
KyNpZm5kZWYgR0xfUUNPTV90ZXh0dXJlX2ZvdmVhdGVkX3N1YnNhbXBsZWRfbGF5b3V0CisjZGVm
aW5lIEdMX1FDT01fdGV4dHVyZV9mb3ZlYXRlZF9zdWJzYW1wbGVkX2xheW91dCAxCisjZGVmaW5l
IEdMX0ZPVkVBVElPTl9TVUJTQU1QTEVEX0xBWU9VVF9NRVRIT0RfQklUX1FDT00gMHgwMDAwMDAw
NAorI2RlZmluZSBHTF9NQVhfU0hBREVSX1NVQlNBTVBMRURfSU1BR0VfVU5JVFNfUUNPTSAweDhG
QTEKKyNlbmRpZiAvKiBHTF9RQ09NX3RleHR1cmVfZm92ZWF0ZWRfc3Vic2FtcGxlZF9sYXlvdXQg
Ki8KKwogI2lmbmRlZiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZwogI2RlZmluZSBHTF9RQ09NX3Rp
bGVkX3JlbmRlcmluZyAxCiAjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQwX1FDT00gICAgICAg
ICAweDAwMDAwMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0dMRVMyL2dsMmV4dF9hbmdsZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9H
TEVTMi9nbDJleHRfYW5nbGUuaAppbmRleCA1YzdlZWI0OGMxNjU3MGMxYTg2MjY3MWM4ODExMTBh
NTA1MmU2YmU1Li5iYzU2YzE0OWZhZjdlMjg5MDQxNjdmYWYzOGM2ZmIxYWQ5MjEyOGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMmV4dF9hbmds
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0X2Fu
Z2xlLmgKQEAgLTc1LDIzNyArNzUsNiBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xN
YXRyaXhMb2FkSWRlbnRpdHlFWFQoR0xlbnVtIG1hdHJpeE1vZGUpOwogI2VuZGlmCiAjZW5kaWYg
LyogR0xfRVhUX2RpcmVjdF9zdGF0ZV9hY2Nlc3MgKi8KIAotI2lmbmRlZiBHTF9DSFJPTUlVTV9w
YXRoX3JlbmRlcmluZwotI2RlZmluZSBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyAxCi0jZGVm
aW5lIEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNIDB4MTcwMAotI2RlZmluZSBHTF9QQVRIX1BS
T0pFQ1RJT05fQ0hST01JVU0gMHgxNzAxCi0jZGVmaW5lIEdMX0NMT1NFX1BBVEhfQ0hST01JVU0g
MHgwMAotI2RlZmluZSBHTF9NT1ZFX1RPX0NIUk9NSVVNIDB4MDIKLSNkZWZpbmUgR0xfTElORV9U
T19DSFJPTUlVTSAweDA0Ci0jZGVmaW5lIEdMX1FVQURSQVRJQ19DVVJWRV9UT19DSFJPTUlVTSAw
eDBBCi0jZGVmaW5lIEdMX0NVQklDX0NVUlZFX1RPX0NIUk9NSVVNIDB4MEMKLSNkZWZpbmUgR0xf
Q09OSUNfQ1VSVkVfVE9fQ0hST01JVU0gMHgxQQotI2RlZmluZSBHTF9QQVRIX01PREVMVklFV19N
QVRSSVhfQ0hST01JVU0gMHgwQkE2Ci0jZGVmaW5lIEdMX1BBVEhfUFJPSkVDVElPTl9NQVRSSVhf
Q0hST01JVU0gMHgwQkE3Ci0jZGVmaW5lIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNIDB4
OTA3NQotI2RlZmluZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNIDB4OTA3NgotI2RlZmluZSBH
TF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0gMHg5MDc5Ci0jZGVmaW5lIEdMX1BBVEhfTUlURVJf
TElNSVRfQ0hST01JVU0gMHg5MDdhCi0jZGVmaW5lIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9N
SVVNIDB4OTA4NgotI2RlZmluZSBHTF9GTEFUX0NIUk9NSVVNIDB4MUQwMAotI2RlZmluZSBHTF9T
UVVBUkVfQ0hST01JVU0gMHg5MGEzCi0jZGVmaW5lIEdMX1JPVU5EX0NIUk9NSVVNIDB4OTBhNAot
I2RlZmluZSBHTF9CRVZFTF9DSFJPTUlVTSAweDkwQTYKLSNkZWZpbmUgR0xfTUlURVJfUkVWRVJU
X0NIUk9NSVVNIDB4OTBBNwotI2RlZmluZSBHTF9DT1VOVF9VUF9DSFJPTUlVTSAweDkwODgKLSNk
ZWZpbmUgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTSAweDkwODkKLSNkZWZpbmUgR0xfQ09OVkVYX0hV
TExfQ0hST01JVU0gMHg5MDhCCi0jZGVmaW5lIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSAweDkw
OEQKLSNkZWZpbmUgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNIDB4
OTA5QwotI2RlZmluZSBHTF9FWUVfTElORUFSX0NIUk9NSVVNIDB4MjQwMAotI2RlZmluZSBHTF9P
QkpFQ1RfTElORUFSX0NIUk9NSVVNIDB4MjQwMQotI2RlZmluZSBHTF9DT05TVEFOVF9DSFJPTUlV
TSAweDg1NzYKLSNkZWZpbmUgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0gMHg5MDhFCi0jZGVmaW5l
IEdMX1RSQU5TTEFURV9ZX0NIUk9NSVVNIDB4OTA4RgotI2RlZmluZSBHTF9UUkFOU0xBVEVfMkRf
Q0hST01JVU0gMHg5MDkwCi0jZGVmaW5lIEdMX1RSQU5TTEFURV8zRF9DSFJPTUlVTSAweDkwOTEK
LSNkZWZpbmUgR0xfQUZGSU5FXzJEX0NIUk9NSVVNIDB4OTA5MgotI2RlZmluZSBHTF9BRkZJTkVf
M0RfQ0hST01JVU0gMHg5MDk0Ci0jZGVmaW5lIEdMX1RSQU5TUE9TRV9BRkZJTkVfMkRfQ0hST01J
VU0gMHg5MDk2Ci0jZGVmaW5lIEdMX1RSQU5TUE9TRV9BRkZJTkVfM0RfQ0hST01JVU0gMHg5MDk4
Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMTUFUUklYTE9BREZDSFJPTUlVTVBST0Mp
KEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptKTsKLXR5cGVkZWYgdm9pZChHTF9B
UElFTlRSWVAgUEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTVBST0MpKEdMZW51bSBtYXRy
aXhNb2RlKTsKLXR5cGVkZWYgR0x1aW50KEdMX0FQSUVOVFJZUCBQRk5HTEdFTlBBVEhTQ0hST01J
VU1QUk9DKShHTHNpemVpIHJhbmdlKTsKLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xE
RUxFVEVQQVRIU0NIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsIEdMc2l6ZWkgcmFuZ2UpOwotdHlw
ZWRlZiBHTGJvb2xlYW4oR0xfQVBJRU5UUllQIFBGTkdMSVNQQVRIQ0hST01JVU1QUk9DKShHTHVp
bnQgcGF0aCk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMUEFUSENPTU1BTkRTQ0hS
T01JVU1QUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVi
eXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmNvb3Jkcyk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMUEFUSFBB
UkFNRVRFUklDSFJPTUlVTVBST0MpKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50IHZh
bHVlKTsKLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQQVRIUEFSQU1FVEVSRkNIUk9N
SVVNUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2YWx1ZSk7
Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEFUSFBBUkFNRVRFUklWQ0hST01J
VU1QUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2
YWx1ZSk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEFUSFBBUkFNRVRFUkZW
Q0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnZhbHVlKTsKLXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xQQVRIU1RFTkNJ
TEZVTkNDSFJPTUlVTVBST0MpKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsK
LXR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRklMTFBBVEhDSFJPTUlVTVBS
T0MpKEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spOwot
dHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxTVFJPS0VQQVRIQ0hST01JVU1Q
Uk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
ayk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJGSUxMUEFUSENIUk9NSVVN
UFJPQykoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkKEdMX0FQ
SUVOVFJZUCBQRk5HTENPVkVSU1RST0tFUEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsIEdM
ZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxU
SEVOQ09WRVJGSUxMUEFUSENIUk9NSVVNUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxU
SEVOQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdM
Q09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQykoR0xzaXplaSBudW1QYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09W
RVJTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DKSgKLSAgICBHTHNpemVpIG51bVBhdGhz
LAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
R0x1aW50IHBhdGhCYXNlLAotICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCi0gICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYg
dm9pZChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTVBS
T0MpKAotICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAg
ICBjb25zdCB2b2lkICpwYXRocywKLSAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgR0xlbnVtIGZp
bGxNb2RlLAotICAgIEdMdWludCBtYXNrLAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5U
UllQIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MpKAotICAgIEdM
c2l6ZWkgbnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgR0xpbnQgcmVmZXJlbmNlLAotICAg
IEdMdWludCBtYXNrLAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMU1RF
TkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DKSgKLSAgICBHTHNpemVp
IG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0
aHMsCi0gICAgR0x1aW50IHBhdGhCYXNlLAotICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICBHTHVp
bnQgbWFzaywKLSAgICBHTGVudW0gY292ZXJNb2RlLAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBl
LAotICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQoR0xf
QVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlV
TVBST0MpKAotICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwK
LSAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgR0xpbnQg
cmVmZXJlbmNlLAotICAgIEdMdWludCBtYXNrLAotICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KTsKLQotdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRGUkFHTUVOVElOUFVUTE9D
QVRJT05DSFJPTUlVTVBST0MpKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotdHlwZWRlZiB2b2lkKEdM
X0FQSUVOVFJZUCBQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTkNIUk9NSVVNUFJPQyko
R0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7Ci0jaWZkZWYgR0xfR0xFWFRf
UFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZGZDSFJP
TUlVTShHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbSk7Ci1HTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShHTGVudW0gbWF0cml4
TW9kZSk7Ci1HTF9BUElDQUxMIEdMdWludCBHTF9BUElFTlRSWSBnbEdlblBhdGhzQ0hST01JVU0o
R0xzaXplaSByYW5nZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQYXRo
c0NIUk9NSVVNKEdMdWludCBwYXRoLCBHTHNpemVpIHJhbmdlKTsKLUdMX0FQSUNBTEwgR0xib29s
ZWFuIEdMX0FQSUVOVFJZIGdsSXNQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgpOwotR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0aENvbW1hbmRzQ0hST01JVU0oR0x1aW50IHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpjb29yZHMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0aFBh
cmFtZXRlcmlDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7
Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKEdM
dWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpOwotR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0oR0x1aW50IHBhdGgsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgKnZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhTdGVuY2ls
RnVuY0NIUk9NSVVNKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKLUdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKEdMdWludCBw
YXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMaW50IHJl
ZmVyZW5jZSwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292
ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLUdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdMdWludCBw
YXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsK
LUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
Q0hST01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVt
UGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0oR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRo
TmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0
aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZCi1nbFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwot
Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkKLWdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBh
dGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cyk7Ci0KLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFnbWVudElucHV0TG9j
YXRpb25DSFJPTUlVTShHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0oR0x1aW50IHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7Ci0KLSNl
bmRpZgotI2VuZGlmIC8qIEdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nICovCi0KICNpZm5kZWYg
R0xfQ0hST01JVU1fY29weV90ZXh0dXJlCiAjZGVmaW5lIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVy
ZSAxCiB0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQ09QWVRFWFRVUkVDSFJPTUlVTVBS
T0MpKEdMdWludCBzb3VyY2VJZCwKQEAgLTcxMyw2ICs0ODIsMzQgQEAgR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdMRSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIGYKICNkZWZpbmUgR0xfU0FNUExFUl9WSURFT19JTUFHRV9XRUJHTCAweDkyNDkKICNl
bmRpZiAvKiBHTF9XRUJHTF92aWRlb190ZXh0dXJlICovCiAKKyNpZm5kZWYgR0xfQU5HTEVfbWVt
b3J5X29iamVjdF9mdWNoc2lhCisjZGVmaW5lIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNp
YSAxCisjZGVmaW5lIEdMX0hBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEUgMHg5M0FFCit0eXBl
ZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMSU1QT1JUTUVNT1JZWklSQ09OSEFORExFQU5HTEVQ
Uk9DKShHTHVpbnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CisjaWZkZWYgR0xfR0xF
WFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW1wb3J0TWVtb3J5
WmlyY29uSGFuZGxlQU5HTEUoR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOworI2VuZGlmCisjZW5kaWYgLyog
R0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhICovCisKKyNpZm5kZWYgR0xfQU5HTEVfc2Vt
YXBob3JlX2Z1Y2hzaWEKKyNkZWZpbmUgR0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEgMQorI2Rl
ZmluZSBHTF9IQU5ETEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEUgMHg5M0FGCit0eXBlZGVmIHZv
aWQoR0xfQVBJRU5UUllQIFBGTkdMSU1QT1JUU0VNQVBIT1JFWklSQ09OSEFORExFQU5HTEVQUk9D
KShHTHVpbnQgc2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaGFuZGxlKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdM
RShHTHVpbnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhICov
CisKIC8vIGNsYW5nLWZvcm1hdCBvbgogCiAjZW5kaWYgIC8vIElOQ0xVREVfR0xFUzJfR0wyRVhU
X0FOR0xFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
RVMyL2dsMmV4dF9leHBsaWNpdF9jb250ZXh0X2F1dG9nZW4uaW5jIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHRfZXhwbGljaXRfY29udGV4dF9hdXRvZ2VuLmlu
YwppbmRleCA0ZTEzMWFhOGUxOTkzYTRhN2NlYmMzMjY5MjZhOTVmNmY2NDQ0ZGUxLi5lYThiZTVj
ZDMxODk1ZmU1YmFiNTA4ZjcyYjIwZTI0MjQ0Y2Q0ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMmV4dF9leHBsaWNpdF9jb250ZXh0X2F1dG9n
ZW4uaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0
X2V4cGxpY2l0X2NvbnRleHRfYXV0b2dlbi5pbmMKQEAgLTE1NCw4ICsxNTQsMTggQEAgdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCRUdJTlFVRVJZRVhUQ09OVEVYVEFOR0xFUFJPQyko
R0xlZ2xDb250ZXh0IGN0eCwKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREZS
QUdEQVRBTE9DQVRJT05FWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVp
bnQgcHJvZ3JhbSwgR0x1aW50IGNvbG9yLCBjb25zdCBHTGNoYXIgKm5hbWUpOwogdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTklOREVYRURFWFRDT05U
RVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGNv
bG9yTnVtYmVyLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqbmFtZSk7CiB0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRWRVJURVhBUlJBWU9FU0NPTlRFWFRBTkdMRVBST0Mp
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBhcnJheSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlFWFRDT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBo
YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFU
RUlPRVNDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVu
dW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEJMRU5ERVFVQVRJT05JRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0
eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xCTEVOREVRVUFUSU9OSU9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgs
IEdMdWludCBidWYsIEdMZW51bSBtb2RlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQkxFTkRGVU5DU0VQQVJBVEVJRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0
eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0Fs
cGhhLCBHTGVudW0gZHN0QWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xC
TEVOREZVTkNTRVBBUkFURUlPRVNDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEs
IEdMZW51bSBkc3RBbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5E
RlVOQ0lFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBH
TGVudW0gc3JjLCBHTGVudW0gZHN0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
QkxFTkRGVU5DSU9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBi
dWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xCTElURlJBTUVCVUZGRVJBTkdMRUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBj
dHgsIEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBH
TGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRm
aWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQlVGRkVSU1RPUkFHRU1FTUVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgR0x1aW50IG1lbW9yeSwgR0x1aW50NjQg
b2Zmc2V0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09MT1JNQVNLSUVYVENP
TlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0xib29sZWFu
IHIsIEdMYm9vbGVhbiBnLCBHTGJvb2xlYW4gYiwgR0xib29sZWFuIGEpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xDT0xPUk1BU0tJT0VTQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9v
bGVhbiBiLCBHTGJvb2xlYW4gYSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENP
TVBSRVNTRURURVhJTUFHRTNET0VTQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xz
aXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOwogdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYU1VCSU1BR0UzRE9FU0NPTlRFWFRBTkdMRVBST0MpKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNv
bnN0IHZvaWQgKmRhdGEpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVY
U1VCSU1BR0UzRE9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6
b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7
CkBAIC0xNjgsNiArMTc4LDggQEAgdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxF
VEVNRU1PUllPQkpFQ1RTRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb24KIHR5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUVVFUklFU0VYVENPTlRFWFRBTkdMRVBST0MpKEdM
ZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpOwogdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVTRU1BUEhPUkVTRVhUQ09OVEVYVEFOR0xFUFJP
QykoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZXMp
OwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVWRVJURVhBUlJBWVNPRVND
T05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqYXJyYXlzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQUJMRUlFWFRD
T05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFSU9FU0NPTlRF
WFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERJU0NBUkRGUkFNRUJVRkZFUkVY
VENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwogdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVDT05URVhUQU5H
TEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4
dCBjdHgsIEdMZW51bSBtb2RlLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBw
cmltY291bnQpOwpAQCAtMTgyLDYgKzE5NCw4IEBAIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNCQVNFVkVSVEVYRVhUQ09OVEVYVEFOR0xFUFJPQykoCiB0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdSQU5HRUVMRU1FTlRTQkFTRVZFUlRF
WE9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlLCBHTHVp
bnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2
b2lkICppbmRpY2VzLCBHTGludCBiYXNldmVydGV4KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMRUdMSU1BR0VUQVJHRVRSRU5ERVJCVUZGRVJTVE9SQUdFT0VTQ09OVEVYVEFOR0xF
UFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFn
ZSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVS
RTJET0VTQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwg
R0xlZ2xJbWFnZU9FUyBpbWFnZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVO
QUJMRUlFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVJ
T0VTQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5EUVVFUllFWFRD
T05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KTsKIHR5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRklOSVNIRkVOQ0VOVkNPTlRFWFRBTkdMRVBST0Mp
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmZW5jZSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEZMVVNITUFQUEVEQlVGRkVSUkFOR0VFWFRDT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIg
bGVuZ3RoKTsKQEAgLTE5OCw2ICsyMTIsNyBAQCB0eXBlZGVmIEdMdWludCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUREVCVUdNRVNTQUdFTE9HS0hSQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDbwogdHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGRU5DRUlWTlZDT05URVhUQU5HTEVQUk9D
KShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7CiB0eXBlZGVmIEdMaW50IChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFHREFUQUlOREVY
RVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIGNv
bnN0IEdMY2hhciAqbmFtZSk7CiB0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
R1JBUEhJQ1NSRVNFVFNUQVRVU0VYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRJTlRFR0VSNjRWRVhUQ09OVEVY
VEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRh
KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTUVNT1JZT0JKRUNUUEFSQU1F
VEVSSVZFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWVtb3J5
T2JqZWN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogdHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRPQkpFQ1RMQUJFTEtIUkNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpOwogdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRPQkpFQ1RQVFJMQUJFTEtIUkNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29u
dGV4dCBjdHgsIGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMY2hhciAqbGFiZWwpOwpAQCAtMjIyLDYgKzIzNyw4IEBAIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1JVkVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29u
dGV4dCBjCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTElNUE9SVE1FTU9SWUZERVhU
Q09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1lbW9yeSwgR0x1aW50
NjQgc2l6ZSwgR0xlbnVtIGhhbmRsZVR5cGUsIEdMaW50IGZkKTsKIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMSU1QT1JUU0VNQVBIT1JFRkRFWFRDT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgc2VtYXBob3JlLCBHTGVudW0gaGFuZGxlVHlwZSwgR0xpbnQg
ZmQpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xJTlNFUlRFVkVOVE1BUktFUkVY
VENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBHTGNoYXIgKm1hcmtlcik7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdM
SVNFTkFCTEVESUVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBG
TkdMSVNFTkFCTEVESU9FU0NPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQ
IFBGTkdMSVNGRU5DRU5WQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50
IGZlbmNlKTsKIHR5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU01FTU9SWU9C
SkVDVEVYVENPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBtZW1vcnlP
YmplY3QpOwogdHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTUVVFUllFWFRD
T05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaWQpOwpAQCAtMjY3LDMx
ICsyODQsNiBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkRJ
VklTT1JFWFRDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbgogdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xXQUlUU0VNQVBIT1JFRVhUQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0
IGN0eCwgR0x1aW50IHNlbWFwaG9yZSwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzLCBjb25zdCBH
THVpbnQgKmJ1ZmZlcnMsIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMsIGNvbnN0IEdMdWludCAq
dGV4dHVyZXMsIGNvbnN0IEdMZW51bSAqc3JjTGF5b3V0cyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEJJTkRVTklGT1JNTE9DQVRJT05DSFJPTUlVTUNPTlRFWFRBTkdMRVBST0Mp
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3Qg
R0xjaGFyKiBuYW1lKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJBR0VN
T0RVTEFUSU9OQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gY29tcG9uZW50cyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1BVFJJWExP
QURGQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbWF0
cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqIG1hdHJpeCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTE1BVFJJWExPQURJREVOVElUWUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIG1hdHJpeE1vZGUpOwotdHlwZWRlZiBHTHVpbnQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFTlBBVEhTQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRl
eHQgY3R4LCBHTHNpemVpIHJhbmdlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
REVMRVRFUEFUSFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBmaXJzdCwgR0xzaXplaSByYW5nZSk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5U
UllQIFBGTkdMSVNQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgcGF0aCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhDT01N
QU5EU0NIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBh
dGgsIEdMc2l6ZWkgbnVtQ29tbWFuZHMsIGNvbnN0IEdMdWJ5dGUgKiBjb21tYW5kcywgR0xzaXpl
aSBudW1Db29yZHMsIEdMZW51bSBjb29yZFR5cGUsIGNvbnN0IHZvaWQqIGNvb3Jkcyk7Ci10eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVURVJGQ0hST01JVU1DT05URVhU
QU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0IHZhbHVlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUSFBBUkFN
RVRFUklDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBw
YXRoLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUUEFUSFBBUkFNRVRFUkZWQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICogdmFsdWUp
OwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQQVRIUEFSQU1FVEVSSVZDSFJP
TUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICogdmFsdWUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xQQVRIU1RFTkNJTEZVTkNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKLXR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTEZJTExQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
KShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQg
bWFzayk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxTVFJPS0VQQVRI
Q0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwg
R0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzayk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTENPVkVSRklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4
dCBjdHgsIEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLXR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7Ci10eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSENIUk9NSVVN
Q09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51bSBm
aWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSENIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5j
ZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xDT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
KShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG51bVBhdGgsIEdMZW51bSBwYXRoTmFtZVR5cGUs
IGNvbnN0IHZvaWQgKiBwYXRocywgR0x1aW50IHBhdGhCYXNlLCBHTGVudW0gY292ZXJNb2RlLCBH
TGVudW0gdHJhbnNmb3JtVHlwZSwgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyk7Ci10
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSU1RST0tFUEFUSElOU1RBTkNFRENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRo
LCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICogcGF0aHMsIEdMdWludCBwYXRoQmFz
ZSwgR0xlbnVtIGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQg
KiB0cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVO
Q0lMU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQykoR0xlZ2xDb250
ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRoLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lk
ICogcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zvcm1WYWx1ZXMpOwot
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5DRURD
SFJPTUlVTUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbnVtUGF0
aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKiBwYXRocywgR0x1aW50IHBhdGhC
YXNlLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gdHJhbnNmb3JtVHlwZSwg
Y29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRocywgR0xlbnVtIHBh
dGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqIHBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZW51bSBm
aWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzKTsKLXR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlV
TUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbnVtUGF0aHMsIEdM
ZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKiBwYXRocywgR0x1aW50IHBhdGhCYXNlLCBH
TGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlLCBHTGVudW0gdHJh
bnNmb3JtVHlwZSwgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRGUkFHTUVOVElOUFVUTE9DQVRJT05DSFJPTUlVTUNP
TlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtcywgR0xpbnQg
bG9jYXRpb24sIGNvbnN0IEdMY2hhciAqIG5hbWUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xQUk9HUkFNUEFUSEZSQUdNRU5USU5QVVRHRU5DSFJPTUlVTUNPTlRFWFRBTkdMRVBS
T0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xl
bnVtIGdlbk1vZGUsIEdMaW50IGNvbXBvbmVudHMsIGNvbnN0IEdMZmxvYXQgKiBjb2VmZnMpOwog
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQykoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNvdXJjZUlkLCBHTGludCBzb3Vy
Y2VMZXZlbCwgR0xlbnVtIGRlc3RUYXJnZXQsIEdMdWludCBkZXN0SWQsIEdMaW50IGRlc3RMZXZl
bCwgR0xpbnQgaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBkZXN0VHlwZSwgR0xib29sZWFuIHVucGFj
a0ZsaXBZLCBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgR0xib29sZWFuIHVucGFj
a1VubXVsdGlwbHlBbHBoYSk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPUFlT
VUJURVhUVVJFQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4LCBHTHVp
bnQgc291cmNlSWQsIEdMaW50IHNvdXJjZUxldmVsLCBHTGVudW0gZGVzdFRhcmdldCwgR0x1aW50
IGRlc3RJZCwgR0xpbnQgZGVzdExldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBH
TGludCB4LCBHTGludCB5LCBHTGludCB3aWR0aCwgR0xpbnQgaGVpZ2h0LCBHTGJvb2xlYW4gdW5w
YWNrRmxpcFksIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCBHTGJvb2xlYW4gdW5w
YWNrVW5tdWx0aXBseUFscGhhKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09N
UFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1DT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQg
Y3R4LCBHTHVpbnQgc291cmNlSWQsIEdMdWludCBkZXN0SWQpOwpAQCAtMzgyLDYgKzM3NCw4IEBA
IHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UyREVYVEVSTkFMQU5HTEVD
T05URVhUQU5HTEVQUk9DKShHTGVnbENvCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TElOVkFMSURBVEVURVhUVVJFQU5HTEVDT05URVhUQU5HTEVQUk9DKShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gdGFyZ2V0KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVEVY
SU1BR0VBTkdMRUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxz
KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUkVOREVSQlVGRkVSSU1BR0VB
TkdMRUNPTlRFWFRBTkdMRVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xJTVBPUlRNRU1PUllaSVJDT05IQU5ETEVBTkdMRUNPTlRFWFRBTkdM
RVBST0MpKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBtZW1vcnksIEdMdWludDY0IHNpemUsIEdM
ZW51bSBoYW5kbGVUeXBlLCBHTHVpbnQgaGFuZGxlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMSU1QT1JUU0VNQVBIT1JFWklSQ09OSEFORExFQU5HTEVDT05URVhUQU5HTEVQUk9D
KShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgc2VtYXBob3JlLCBHTGVudW0gaGFuZGxlVHlwZSwg
R0x1aW50IGhhbmRsZSk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQWN0aXZlVGV4dHVyZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gdGV4dHVyZSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xBdHRh
Y2hTaGFkZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdM
dWludCBzaGFkZXIpOwpAQCAtNTI5LDggKzUyMywxOCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xCZWdpblF1ZXJ5RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bQogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBjb2xv
ciwgY29uc3QgR0xjaGFyICpuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJp
bmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGNvbG9yTnVtYmVyLCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMY2hhciAqbmFtZSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVmVydGV4
QXJyYXlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGFycmF5KTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdM
ZW51bSBtb2RlQWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVh
dGlvblNlcGFyYXRlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYnVm
LCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
YnVmLCBHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1Ziwg
R0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0
QWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jU2VwYXJhdGVp
T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmNS
R0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpOwogR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTGludCBzcmNYMSwg
R0xpbnQgc3JjWTEsIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdMaW50
IGRzdFkxLCBHTGJpdGZpZWxkIG1hc2ssIEdMZW51bSBmaWx0ZXIpOwogR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQnVmZmVyU3RvcmFnZU1lbUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIEdMdWludCBtZW1vcnksIEdM
dWludDY0IG9mZnNldCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb2xvck1hc2tp
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0xib29sZWFu
IHIsIEdMYm9vbGVhbiBnLCBHTGJvb2xlYW4gYiwgR0xib29sZWFuIGEpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JNYXNraU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIs
IEdMYm9vbGVhbiBhKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRU
ZXhJbWFnZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCB2b2lkICpkYXRhKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGlu
dCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwg
R0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOwogR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKQEAgLTU0Myw2ICs1NDcsOCBAQCBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdAogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUXVl
cmllc0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdM
dWludCAqaWRzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVNlbWFwaG9y
ZXNFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBjb25zdCBHTHVp
bnQgKnNlbWFwaG9yZXMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlVmVy
dGV4QXJyYXlzT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICphcnJheXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJs
ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGVpT0VTQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiBH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2ht
ZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHBy
aW1jb3VudCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlLCBHTGludCBz
dGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwpAQCAtNTU3LDYgKzU2Myw4
IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZl
cnRleEVYVENvbnRleHRBTkdMRShHTGVnbENvCiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIG1vZGUsIEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMaW50IGJhc2V2ZXJ0ZXgpOwog
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdM
ZWdsSW1hZ2VPRVMgaW1hZ2UpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xFbmFibGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVp
T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmRRdWVyeUVYVENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KTsKIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEZpbmlzaEZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGZlbmNlKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZsdXNoTWFwcGVk
QnVmZmVyUmFuZ2VFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdl
dCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCk7CkBAIC01NzMsNiArNTgxLDcg
QEAgR0xfQVBJQ0FMTCBHTHVpbnQgR0xfQVBJRU5UUlkgZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFJD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldEZlbmNlaXZOVkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2Us
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CiBHTF9BUElDQUxMIEdMaW50IEdMX0FQSUVO
VFJZIGdsR2V0RnJhZ0RhdGFJbmRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKIEdMX0FQSUNBTEwgR0xlbnVtIEdM
X0FQSUVOVFJZIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXI2NHZF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpk
YXRhKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldE1lbW9yeU9iamVjdFBhcmFt
ZXRlcml2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBtZW1vcnlPYmpl
Y3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRPYmplY3RMYWJlbEtIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dE9iamVjdFB0ckxhYmVsS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIGNvbnN0IHZv
aWQgKnB0ciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwp
OwpAQCAtNTk3LDYgKzYwNiw4IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5V
bmlmb3JtaXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1CiBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xJbXBvcnRNZW1vcnlGZEVYVENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBzaXplLCBHTGVudW0gaGFuZGxlVHlw
ZSwgR0xpbnQgZmQpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW1wb3J0U2VtYXBo
b3JlRmRFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNlbWFwaG9yZSwg
R0xlbnVtIGhhbmRsZVR5cGUsIEdMaW50IGZkKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEluc2VydEV2ZW50TWFya2VyRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1hcmtlcik7CitHTF9BUElDQUxMIEdMYm9vbGVh
biBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdM
X0FQSUVOVFJZIGdsSXNFbmFibGVkaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwogR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgZ2xJc0ZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZl
bmNlKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNNZW1vcnlPYmplY3RF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1lbW9yeU9iamVjdCk7CiBH
TF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUXVlcnlFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGlkKTsKQEAgLTY0MiwzMSArNjUzLDYgQEAgR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliRGl2aXNvckVYVENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3QKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFdhaXRTZW1h
cGhvcmVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNlbWFwaG9yZSwg
R0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMsIEdMdWludCBu
dW1UZXh0dXJlQmFycmllcnMsIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsIGNvbnN0IEdMZW51bSAq
c3JjTGF5b3V0cyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVW5pZm9ybUxv
Y2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIqIG5hbWUpOwogR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvbXBvbmVudHMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsTWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqIG1hdHJpeCk7Ci1HTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbWF0cml4TW9kZSk7Ci1HTF9BUElDQUxMIEdMdWlu
dCBHTF9BUElFTlRSWSBnbEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xzaXplaSByYW5nZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxl
dGVQYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmaXJz
dCwgR0xzaXplaSByYW5nZSk7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElz
UGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoKTsK
LUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhDb21tYW5kc0NIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoLCBHTHNpemVpIG51bUNvbW1hbmRz
LCBjb25zdCBHTHVieXRlICogY29tbWFuZHMsIEdMc2l6ZWkgbnVtQ29vcmRzLCBHTGVudW0gY29v
cmRUeXBlLCBjb25zdCB2b2lkKiBjb29yZHMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwotR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCAqIHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhQYXJh
bWV0ZXJpdkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRo
LCBHTGVudW0gcG5hbWUsIEdMaW50ICogdmFsdWUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOwot
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNl
LCBHTHVpbnQgbWFzayk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQ
YXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgsIEdM
ZW51bSBjb3Zlck1vZGUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJv
a2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBhdGgs
IEdMZW51bSBjb3Zlck1vZGUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1v
ZGUpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGF0aCwg
R0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywgR0xlbnVtIGNvdmVyTW9kZSk7Ci1HTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRoLCBHTGVudW0gcGF0aE5h
bWVUeXBlLCBjb25zdCB2b2lkICogcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xlbnVtIGNvdmVy
TW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zvcm1WYWx1
ZXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRo
LCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICogcGF0aHMsIEdMdWludCBwYXRoQmFz
ZSwgR0xlbnVtIGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQg
KiB0cmFuc2Zvcm1WYWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHNpemVpIG51bVBhdGgsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKiBwYXRo
cywgR0x1aW50IHBhdGhCYXNlLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrLCBHTGVudW0g
dHJhbnNmb3JtVHlwZSwgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyk7Ci1HTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0
aE5hbWVUeXBlLCBjb25zdCB2b2lkICogcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xlbnVtIGZp
bGxNb2RlLCBHTHVpbnQgbWFzaywgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQg
KiB0cmFuc2Zvcm1WYWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRocywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9p
ZCAqIHBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ss
IEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0ICog
dHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xzaXplaSBudW1QYXRocywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9p
ZCAqIHBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2ss
IEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0ICog
dHJhbnNmb3JtVmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFn
bWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbXMsIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKiBuYW1lKTsKLUdM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNI
Uk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xlbnVtIGdlbk1vZGUsIEdMaW50IGNvbXBvbmVudHMsIGNvbnN0IEdMZmxv
YXQgKiBjb2VmZnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleHR1cmVD
SFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgc291cmNlSWQsIEdM
aW50IHNvdXJjZUxldmVsLCBHTGVudW0gZGVzdFRhcmdldCwgR0x1aW50IGRlc3RJZCwgR0xpbnQg
ZGVzdExldmVsLCBHTGludCBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIGRlc3RUeXBlLCBHTGJvb2xl
YW4gdW5wYWNrRmxpcFksIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCBHTGJvb2xl
YW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bENvcHlTdWJUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1
aW50IHNvdXJjZUlkLCBHTGludCBzb3VyY2VMZXZlbCwgR0xlbnVtIGRlc3RUYXJnZXQsIEdMdWlu
dCBkZXN0SWQsIEdMaW50IGRlc3RMZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCwgR0xib29sZWFuIHVu
cGFja0ZsaXBZLCBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgR0xib29sZWFuIHVu
cGFja1VubXVsdGlwbHlBbHBoYSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21w
cmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgc291cmNlSWQsIEdMdWludCBkZXN0SWQpOwpAQCAtNzU3LDQgKzc0Myw2IEBAIEdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleEltYWdlMkRFeHRlcm5hbEFOR0xFQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjCiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbnZhbGlk
YXRlVGV4dHVyZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4SW1hZ2VBTkdMRUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQgKnBpeGVscyk7CiBHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCB2
b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW1wb3J0TWVtb3J5
WmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1l
bW9yeSwgR0x1aW50NjQgc2l6ZSwgR0xlbnVtIGhhbmRsZVR5cGUsIEdMdWludCBoYW5kbGUpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxl
QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNlbWFwaG9yZSwgR0xl
bnVtIGhhbmRsZVR5cGUsIEdMdWludCBoYW5kbGUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAppbmRleCA2NzM3
NzY2YTdiODhhYTYyZDk1OWRhMTFlOTA4NTZlNTc0OTY2MmJlLi5jNTE0Y2I1NWMyN2Y4YTVhOGY5
MzBjZWI3ODZlNTYwNmI4YzIzOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogLy8g
VmVyc2lvbiBudW1iZXIgZm9yIHNoYWRlciB0cmFuc2xhdGlvbiBBUEkuCiAvLyBJdCBpcyBpbmNy
ZW1lbnRlZCBldmVyeSB0aW1lIHRoZSBBUEkgY2hhbmdlcy4KLSNkZWZpbmUgQU5HTEVfU0hfVkVS
U0lPTiAyMjQKKyNkZWZpbmUgQU5HTEVfU0hfVkVSU0lPTiAyMjYKIAogZW51bSBTaFNoYWRlclNw
ZWMKIHsKQEAgLTMzMyw2ICszMzMsOSBAQCBjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0RJU0FC
TEVfQVJCX1RFWFRVUkVfUkVDVEFOR0xFID0gVUlOVDY0X0MoMSkgPDwgNTI7CiAvLyBhcyBjb2x1
bW4tbWFqb3IgaW4gRVNTTCAzLjAwIGFuZCBncmVhdGVyIHNoYWRlcnMuCiBjb25zdCBTaENvbXBp
bGVPcHRpb25zIFNIX1JFV1JJVEVfUk9XX01BSk9SX01BVFJJQ0VTID0gVUlOVDY0X0MoMSkgPDwg
NTM7CiAKKy8vIERyb3AgYW55IGV4cGxpY2l0IHByZWNpc2lvbiBxdWFsaWZpZXJzIGZyb20gc2hh
ZGVyLgorY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9JR05PUkVfUFJFQ0lTSU9OX1FVQUxJRklF
UlMgPSBVSU5UNjRfQygxKSA8PCA1NDsKKwogLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3RyYXRlZ2ll
cyBmb3IgaW1wbGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgogZW51bSBTaEFycmF5SW5k
ZXhDbGFtcGluZ1N0cmF0ZWd5CiB7CkBAIC0zODQsNiArMzg3LDcgQEAgc3RydWN0IFNoQnVpbHRJ
blJlc291cmNlcwogICAgIGludCBFWFRfWVVWX3RhcmdldDsKICAgICBpbnQgRVhUX2dlb21ldHJ5
X3NoYWRlcjsKICAgICBpbnQgRVhUX2dwdV9zaGFkZXI1OworICAgIGludCBFWFRfc2hhZGVyX25v
bl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzOwogICAgIGludCBPRVNfdGV4dHVyZV9zdG9y
YWdlX211bHRpc2FtcGxlXzJkX2FycmF5OwogICAgIGludCBPRVNfdGV4dHVyZV8zRDsKICAgICBp
bnQgQU5HTEVfdGV4dHVyZV9tdWx0aXNhbXBsZTsKQEAgLTc2MywxMiArNzY3LDEyIEBAIGV4dGVy
biBjb25zdCBjaGFyIGtEZWZhdWx0VW5pZm9ybXNOYW1lR1NbXTsKIGV4dGVybiBjb25zdCBjaGFy
IGtEZWZhdWx0VW5pZm9ybXNOYW1lRlNbXTsKIGV4dGVybiBjb25zdCBjaGFyIGtEZWZhdWx0VW5p
Zm9ybXNOYW1lQ1NbXTsKIAotLy8gSW50ZXJmYWNlIGJsb2NrIGFuZCB2YXJpYWJsZSBuYW1lIGNv
bnRhaW5pbmcgZHJpdmVyIHVuaWZvcm1zCisvLyBJbnRlcmZhY2UgYmxvY2sgYW5kIHZhcmlhYmxl
IG5hbWVzIGNvbnRhaW5pbmcgZHJpdmVyIHVuaWZvcm1zCiBleHRlcm4gY29uc3QgY2hhciBrRHJp
dmVyVW5pZm9ybXNCbG9ja05hbWVbXTsKIGV4dGVybiBjb25zdCBjaGFyIGtEcml2ZXJVbmlmb3Jt
c1Zhck5hbWVbXTsKIAotLy8gSW50ZXJmYWNlIGJsb2NrIGFycmF5IHZhcmlhYmxlIG5hbWUgdXNl
ZCBmb3IgYXRvbWljIGNvdW50ZXIgZW11bGF0aW9uCi1leHRlcm4gY29uc3QgY2hhciBrQXRvbWlj
Q291bnRlcnNWYXJOYW1lW107CisvLyBJbnRlcmZhY2UgYmxvY2sgYXJyYXkgbmFtZSB1c2VkIGZv
ciBhdG9taWMgY291bnRlciBlbXVsYXRpb24KK2V4dGVybiBjb25zdCBjaGFyIGtBdG9taWNDb3Vu
dGVyc0Jsb2NrTmFtZVtdOwogCiAvLyBMaW5lIHJhc3RlciBlbXVsYXRpb24gdmFyeWluZwogZXh0
ZXJuIGNvbnN0IGNoYXIga0xpbmVSYXN0ZXJFbXVsYXRpb25Qb3NpdGlvbltdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmUuaAppbmRleCA3
YWY0MTc0Mjc4NWU1ZTJjOGI4YjkwYzJlNzhiNDVlMjc2ZWE0MzM0Li41NTllMDgwMTJkZDkwNjg4
NzZmNDQ2NDc1OWE5MWRjMGQ2ZDI3Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmUuaApAQCAtMTMsMTEgKzEzLDExIEBACiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2RlZmluZSBBTkdMRV9GRUFUVVJF
X0NPTkRJVElPTihzZXQsIGZlYXR1cmUsIGNvbmQpICAgICBcCi0gICAgZG8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzZXQtPmZl
YXR1cmUuZW5hYmxlZCAgID0gY29uZDsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNldC0+
ZmVhdHVyZS5jb25kaXRpb24gPSBBTkdMRV9TVFJJTkdJRlkoY29uZCk7IFwKKyNkZWZpbmUgQU5H
TEVfRkVBVFVSRV9DT05ESVRJT04oc2V0LCBmZWF0dXJlLCBjb25kKSAgICAgICBcCisgICAgZG8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgKHNldCktPmZlYXR1cmUuZW5hYmxlZCAgID0gY29uZDsgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIChzZXQpLT5mZWF0dXJlLmNvbmRpdGlvbiA9IEFOR0xFX1NUUklOR0lGWShj
b25kKTsgXAogICAgIH0gd2hpbGUgKDApCiAKIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9ybS9GZWF0dXJlc0dMLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaAppbmRl
eCAwZjY0OWRiMmFkMGMwMzkwMWRmZDI3OGI3M2E2YTE4NmZiNzBjOThjLi44NTk0N2U0MGZkNTZh
NDk0ODZiNzVmNDEyZWJiZjlhZjRmM2QwOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0ZlYXR1cmVzR0wuaApAQCAtNDE3LDYgKzQxNywx
OSBAQCBzdHJ1Y3QgRmVhdHVyZXNHTCA6IEZlYXR1cmVTZXRCYXNlCiAgICAgICAgICJmbHVzaF9i
ZWZvcmVfYmluZGZyYW1lYnVmZmVyIiwgRmVhdHVyZUNhdGVnb3J5OjpPcGVuR0xXb3JrYXJvdW5k
cywKICAgICAgICAgIkZsdXNoIGJlZm9yZSBnbEJpbmRGcmFtZWJ1ZmZlciBhcyBhIGRyaXZlciBi
dWcgd29ya2Fyb3VuZCIsCiAgICAgICAgICZtZW1iZXJzLCAiaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNjYyNSJ9OworCisgICAgLy8gQnVncyBleGlzdCBpbiB2YXJp
b3VzIE9wZW5HTCBJbnRlbCBkcml2ZXJzIG9uIFdpbmRvd3MgdGhhdCBwcm9kdWNlIGluY29ycmVj
dAorICAgIC8vIHZhbHVlcyBmb3IgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQgZm9y
bWF0LiBSZXBsYWNlIGl0IHdpdGgKKyAgICAvLyBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQxX0VYVCBhcyBpdCdzIHRoZSBjbG9zZXN0IG9wdGlvbiBhbGxvd2VkIGJ5CisgICAgLy8g
dGhlIFdlYkdMIGV4dGVuc2lvbiBzcGVjLgorICAgIEZlYXR1cmUgYXZvaWREWFQxc1JHQlRleHR1
cmVGb3JtYXQgPSB7CisgICAgICAgICJhdm9pZF9keHQxX3NyZ2JfdGV4dHVyZV9mb3JtYXQiLCBG
ZWF0dXJlQ2F0ZWdvcnk6Ok9wZW5HTFdvcmthcm91bmRzLAorICAgICAgICAiUmVwbGFjZXMgRFhU
MSBzUkdCIHdpdGggRFhUMSBzUkdCIEFscGhhIGFzIGEgZHJpdmVyIGJ1ZyB3b3JrYXJvdW5kLiIs
ICZtZW1iZXJzfTsKKworICAgIC8vIEdMX0VYVF9zZW1hcGhvcmVfZmQgZG9lc24ndCB3b3JrIHBy
b3Blcmx5IHdpdGggTWVzYSAxOS4zLjQgYW5kIGVhcmxpZXIgdmVyc2lvbnMuCisgICAgRmVhdHVy
ZSBkaXNhYmxlU2VtYXBob3JlRmQgPSB7ImRpc2FibGVfc2VtYXBob3JlX2ZkIiwgRmVhdHVyZUNh
dGVnb3J5OjpPcGVuR0xXb3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRGlzYWJsZSBHTF9FWFRfc2VtYXBob3JlX2ZkIGV4dGVuc2lvbiIsICZtZW1iZXJzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2NyYnVnLmNvbS8xMDQ2
NDYyIn07CiB9OwogCiBpbmxpbmUgRmVhdHVyZXNHTDo6RmVhdHVyZXNHTCgpICA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL0Zl
YXR1cmVzVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVh
dHVyZXNWay5oCmluZGV4IGE2Y2ZiYzBlOGNkY2JlYmI1YmI1ODA2NWUwYzkxM2U5OGNiNjIwNTEu
LjdkOTk5MzczODNhNGVmZjc1MzEwYWFlZjFiM2U1MmY1MDU0NGYwMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNWay5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vRmVhdHVyZXNWay5oCkBA
IC0xMTQsMTIgKzExNCwyNCBAQCBzdHJ1Y3QgRmVhdHVyZXNWayA6IEZlYXR1cmVTZXRCYXNlCiAg
ICAgICAgICJzdXBwb3J0c19leHRlcm5hbF9tZW1vcnlfZmQiLCBGZWF0dXJlQ2F0ZWdvcnk6OlZ1
bGthbkZlYXR1cmVzLAogICAgICAgICAiVmtEZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0tIUl9leHRl
cm5hbF9tZW1vcnlfZmQgZXh0ZW5zaW9uIiwgJm1lbWJlcnN9OwogCisgICAgLy8gV2hldGhlciB0
aGUgVmtEZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0ZVQ0hTSUFfZXh0ZXJuYWxfbWVtb3J5CisgICAg
Ly8gZXh0ZW5zaW9uLCBvbiB3aGljaCB0aGUgR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lh
IGV4dGVuc2lvbiBjYW4gYmUgbGF5ZXJlZC4KKyAgICBhbmdsZTo6RmVhdHVyZSBzdXBwb3J0c0V4
dGVybmFsTWVtb3J5RnVjaHNpYSA9IHsKKyAgICAgICAgInN1cHBvcnRzX2V4dGVybmFsX21lbW9y
eV9mdWNoc2lhIiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgIlZr
RGV2aWNlIHN1cHBvcnRzIHRoZSBWS19GVUNIU0lBX2V4dGVybmFsX21lbW9yeSBleHRlbnNpb24i
LCAmbWVtYmVyc307CisKICAgICAvLyBXaGV0aGVyIHRoZSBWa0RldmljZSBzdXBwb3J0cyB0aGUg
VktfS0hSX2V4dGVybmFsX3NlbWFwaG9yZV9mZCBleHRlbnNpb24sIG9uIHdoaWNoIHRoZQogICAg
IC8vIEdMX0VYVF9zZW1hcGhvcmVfZmQgZXh0ZW5zaW9uIGNhbiBiZSBsYXllcmVkLgogICAgIEZl
YXR1cmUgc3VwcG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZkID0gewogICAgICAgICAic3VwcG9ydHNf
ZXh0ZXJuYWxfc2VtYXBob3JlX2ZkIiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywK
ICAgICAgICAgIlZrRGV2aWNlIHN1cHBvcnRzIHRoZSBWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3Jl
X2ZkIGV4dGVuc2lvbiIsICZtZW1iZXJzfTsKIAorICAgIC8vIFdoZXRoZXIgdGhlIFZrRGV2aWNl
IHN1cHBvcnRzIHRoZSBWS19GVUNIU0lBX2V4dGVybmFsX3NlbWFwaG9yZQorICAgIC8vIGV4dGVu
c2lvbiwgb24gd2hpY2ggdGhlIEdMX0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhIGV4dGVuc2lvbiBj
YW4gYmUgbGF5ZXJlZC4KKyAgICBhbmdsZTo6RmVhdHVyZSBzdXBwb3J0c0V4dGVybmFsU2VtYXBo
b3JlRnVjaHNpYSA9IHsKKyAgICAgICAgInN1cHBvcnRzX2V4dGVybmFsX3NlbWFwaG9yZV9mdWNo
c2lhIiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgIlZrRGV2aWNl
IHN1cHBvcnRzIHRoZSBWS19GVUNIU0lBX2V4dGVybmFsX3NlbWFwaG9yZSBleHRlbnNpb24iLCAm
bWVtYmVyc307CisKICAgICAvLyBXaGV0aGVyIHRoZSBWa0RldmljZSBzdXBwb3J0cyB0aGUgVktf
RVhUX3NoYWRlcl9zdGVuY2lsX2V4cG9ydCBleHRlbnNpb24sIHdoaWNoIGlzIHVzZWQgdG8KICAg
ICAvLyBwZXJmb3JtIG11bHRpc2FtcGxlZCByZXNvbHZlIG9mIHN0ZW5jaWwgYnVmZmVyLiAgQSBt
dWx0aS1zdGVwIHdvcmthcm91bmQgaXMgdXNlZCBpbnN0ZWFkIGlmCiAgICAgLy8gdGhpcyBleHRl
bnNpb24gaXMgbm90IGF2YWlsYWJsZS4KQEAgLTE0MSw2ICsxNTMsMTIgQEAgc3RydWN0IEZlYXR1
cmVzVmsgOiBGZWF0dXJlU2V0QmFzZQogICAgICAgICAiVHJhbnNmb3JtIGZlZWRiYWNrIHVzZXMg
dGhlIFZLX0VYVF90cmFuc2Zvcm1fZmVlZGJhY2sgZXh0ZW5zaW9uLiIsICZtZW1iZXJzLAogICAg
ICAgICAiaHR0cDovL2FuZ2xlYnVnLmNvbS8zMjA2In07CiAKKyAgICAvLyBXaGV0aGVyIHRoZSBW
a0RldmljZSBzdXBwb3J0cyB0aGUgVktfRVhUX2luZGV4X3R5cGVfdWludDggZXh0ZW5zaW9uCisg
ICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS80NDA1CisgICAgRmVhdHVyZSBzdXBwb3J0c0luZGV4
VHlwZVVpbnQ4ID0geyJzdXBwb3J0c19pbmRleF90eXBlX3VpbnQ4IiwgRmVhdHVyZUNhdGVnb3J5
OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlZrRGV2aWNlIHN1cHBvcnRzIHRoZSBWS19FWFRfaW5kZXhfdHlwZV91aW50OCBleHRlbnNpb24i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVtYmVycywgImh0dHA6
Ly9hbmdsZWJ1Zy5jb20vNDQwNSJ9OworCiAgICAgLy8gVktfUFJFU0VOVF9NT0RFX0ZJRk9fS0hS
IGNhdXNlcyByYW5kb20gdGltZW91dHMgb24gTGludXggSW50ZWwuIGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMzE1MwogICAgIEZlYXR1cmUgZGlzYWJsZUZpZm9QcmVzZW50TW9kZSA9IHsKICAgICAgICAg
ImRpc2FibGVfZmlmb19wcmVzZW50X21vZGUiLCBGZWF0dXJlQ2F0ZWdvcnk6OlZ1bGthbldvcmth
cm91bmRzLApAQCAtMTk2LDI0ICsyMTQsMjIgQEAgc3RydWN0IEZlYXR1cmVzVmsgOiBGZWF0dXJl
U2V0QmFzZQogICAgICAgICAiUmV3cml0ZVN0cnVjdFNhbXBsZXJzIGJlaGF2aW9yLCB3aGljaCBw
cm9kdWNlcyBmZXdlci4iLAogICAgICAgICAmbWVtYmVycywgImh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MjcwMyJ9OwogCi0gICAgLy8gSWYgdGhlIHJvYnVzdEJ1ZmZlckFjY2VzcyBmZWF0dXJlIGlzIGVu
YWJsZWQsIFZ1bGthbiBjb25zaWRlcnMgdmVydGV4IGF0dHJpYnV0ZSBhY2Nlc3NlcyBvbmx5Ci0g
ICAgLy8gdmFsaWQgdXAgdG8gdGhlIGxhc3QgbXVsdGlwbGUgb2Ygc3RyaWRlLiAgSWYgYSB2ZXJ0
ZXgncyBhdHRyaWJ1dGUgcmFuZ2UgaXMgc3VjaCB0aGF0IGl0IGZhbGxzCi0gICAgLy8gd2l0aGlu
IHRoZSByYW5nZSBvZiB0aGUgYnVmZmVyLCBidXQgYmV5b25kIHRoZSBsYXN0IG11bHRpcGxlIG9m
IHN0cmlkZSwgdGhlIGRyaXZlciBpcyBhbGxvd2VkCi0gICAgLy8gdG8gZWl0aGVyIHJlYWQgdGhh
dCByYW5nZSBmcm9tIHRoZSBidWZmZXIgYW55d2F5LCBvciB0byByZXR1cm4gKDAsIDAsIDAsIDEp
LiAgTW9zdCBkcml2ZXJzCi0gICAgLy8gaW1wbGVtZW50IHRoZSBmb3JtZXIsIHdoaWxlIGFtZHZs
ayBvbiBMaW51eCBhbmQgQU1EJ3Mgd2luZG93cyBkcml2ZXIgaW1wbGVtZW50IHRoZSBsYXR0ZXIu
Ci0gICAgLy8gRm9yIHRoZSBsYXR0ZXIsIHRoaXMgd29ya2Fyb3VuZCBsaW1pdHMgR0xfTUFYX1ZF
UlRFWF9BVFRSSUJfU1RSSURFIHRvIGEgcmVhc29uYWJsZSB2YWx1ZSwgYW5kCi0gICAgLy8gcm91
bmRzIHVwIGV2ZXJ5IGJ1ZmZlciBhbGxvY2F0aW9uIHNpemUgdG8gYmUgYSBtdWx0aXBsZSBvZiB0
aGF0LgotICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjUxNAotICAgIEZlYXR1cmUgcm91bmRV
cEJ1ZmZlcnNUb01heFZlcnRleEF0dHJpYlN0cmlkZSA9IHsKLSAgICAgICAgInJvdW5kX3VwX2J1
ZmZlcnNfdG9fbWF4X3ZlcnRleF9hdHRyaWJfc3RyaWRlIiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxr
YW5Xb3JrYXJvdW5kcywKLSAgICAgICAgIklmIHRoZSByb2J1c3RCdWZmZXJBY2Nlc3MgZmVhdHVy
ZSBpcyBlbmFibGVkLCBWdWxrYW4gY29uc2lkZXJzIHZlcnRleCBhdHRyaWJ1dGUgYWNjZXNzZXMg
IgotICAgICAgICAib25seSB2YWxpZCB1cCB0byB0aGUgbGFzdCBtdWx0aXBsZSBvZiBzdHJpZGUu
IElmIGEgdmVydGV4J3MgYXR0cmlidXRlIHJhbmdlIGlzIHN1Y2ggdGhhdCAiCi0gICAgICAgICJp
dCBmYWxscyB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBidWZmZXIsIGJ1dCBiZXlvbmQgdGhlIGxh
c3QgbXVsdGlwbGUgb2Ygc3RyaWRlLCB0aGUgIgotICAgICAgICAiZHJpdmVyIGlzIGFsbG93ZWQg
dG8gZWl0aGVyIHJlYWQgdGhhdCByYW5nZSBmcm9tIHRoZSBidWZmZXIgYW55d2F5LCBvciB0byBy
ZXR1cm4gIgotICAgICAgICAiKDAsIDAsIDAsIDEpLiBNb3N0IGRyaXZlcnMgaW1wbGVtZW50IHRo
ZSBmb3JtZXIsIHdoaWxlIHNvbWUgZHJpdmVycyB0aGUgbGF0dGVyLiBGb3IgdGhlICIKLSAgICAg
ICAgImxhdHRlciwgdGhpcyB3b3JrYXJvdW5kIGxpbWl0cyBHTF9NQVhfVkVSVEVYX0FUVFJJQl9T
VFJJREUgdG8gYSByZWFzb25hYmxlIHZhbHVlLCBhbmQgIgotICAgICAgICAicm91bmRzIHVwIGV2
ZXJ5IGJ1ZmZlciBhbGxvY2F0aW9uIHNpemUgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGF0LiIsCi0g
ICAgICAgICZtZW1iZXJzLCAiaHR0cDovL2FuZ2xlYnVnLmNvbS8yODQ4In07CisgICAgLy8gVnVs
a2FuIGNvbnNpZGVycyB2ZXJ0ZXggYXR0cmlidXRlIGFjY2Vzc2VzIHRvIGNvdW50IHVwIHRvIHRo
ZSBsYXN0IG11bHRpcGxlIG9mIHRoZSBzdHJpZGUuCisgICAgLy8gVGhpcyBhZGRpdGlvbmFsIGFj
Y2VzcyBzdXBwb3J0cyBBTUQncyByb2J1c3QgYnVmZmVyIGFjY2VzcyBpbXBsZW1lbnRhdGlvbi4K
KyAgICAvLyBBTURWTEsgaW4gcGFydGljdWxhciB3aWxsIHJldHVybiBpbmNvcnJlY3QgdmFsdWVz
IHdoZW4gdGhlIHZlcnRleCBhY2Nlc3MgZXh0ZW5kcyBpbnRvIHRoZQorICAgIC8vIHJhbmdlIHRo
YXQgd291bGQgYmUgdGhlIHN0cmlkZSBwYWRkaW5nIGFuZCB0aGUgYnVmZmVyIGlzIHRvbyBzbWFs
bC4KKyAgICAvLyBUaGlzIHdvcmthcm91bmQgbGltaXRzIEdMX01BWF9WRVJURVhfQVRUUklCX1NU
UklERSB0byBhIHJlYXNvbmFibGUgdmFsdWUgYW5kIHBhZHMgb3V0CisgICAgLy8gZXZlcnkgYnVm
ZmVyIGFsbG9jYXRpb24gc2l6ZSB0byBiZSBsYXJnZSBlbm91Z2ggdG8gc3VwcG9ydCBhIG1heGlt
dW0gdmVydGV4IHN0cmlkZS4KKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQ0MjgKKyAgICBG
ZWF0dXJlIHBhZEJ1ZmZlcnNUb01heFZlcnRleEF0dHJpYlN0cmlkZSA9IHsKKyAgICAgICAgInBh
ZF9idWZmZXJzX3RvX21heF92ZXJ0ZXhfYXR0cmliX3N0cmlkZSIsIEZlYXR1cmVDYXRlZ29yeTo6
VnVsa2FuV29ya2Fyb3VuZHMsCisgICAgICAgICJWdWxrYW4gY29uc2lkZXJzIHZlcnRleCBhdHRy
aWJ1dGUgYWNjZXNzZXMgdG8gY291bnQgdXAgdG8gdGhlIGxhc3QgbXVsdGlwbGUgb2YgdGhlICIK
KyAgICAgICAgInN0cmlkZS4gVGhpcyBhZGRpdGlvbmFsIGFjY2VzcyBzdXBwb3J0cyBBTUQncyBy
b2J1c3QgYnVmZmVyIGFjY2VzcyBpbXBsZW1lbnRhdGlvbi4gIgorICAgICAgICAiQU1EVkxLIGlu
IHBhcnRpY3VsYXIgd2lsbCByZXR1cm4gaW5jb3JyZWN0IHZhbHVlcyB3aGVuIHRoZSB2ZXJ0ZXgg
YWNjZXNzIGV4dGVuZHMgaW50byAiCisgICAgICAgICJ0aGUgcmFuZ2UgdGhhdCB3b3VsZCBiZSB0
aGUgc3RyaWRlIHBhZGRpbmcgYW5kIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsLiAiCisgICAgICAg
ICJUaGlzIHdvcmthcm91bmQgbGltaXRzIEdMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSB0byBh
IG1heGltdW0gdmFsdWUgYW5kICIKKyAgICAgICAgInBhZHMgdXAgZXZlcnkgYnVmZmVyIGFsbG9j
YXRpb24gc2l6ZSB0byBiZSBhIG11bHRpcGxlIG9mIHRoZSBtYXhpbXVtIHN0cmlkZS4iLAorICAg
ICAgICAmbWVtYmVycywgImh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQyOCJ9OwogCiAgICAgLy8gV2hl
dGhlciB0aGUgVmtEZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0VYVF9zd2FwY2hhaW5fY29sb3JzcGFj
ZSBleHRlbnNpb24KICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzI1MTQKQEAgLTIyMiwxMyAr
MjM4LDQyIEBAIHN0cnVjdCBGZWF0dXJlc1ZrIDogRmVhdHVyZVNldEJhc2UKICAgICAgICAgIlZr
RGV2aWNlIHN1cHBvcnRzIHRoZSBWS19FWFRfc3dhcGNoYWluX2NvbG9yc3BhY2UgZXh0ZW5zaW9u
IiwgJm1lbWJlcnMsCiAgICAgICAgICJodHRwOi8vYW5nbGVidWcuY29tLzI1MTQifTsKIAotICAg
IC8vIFdoZXRoZXIgdG8gdXNlIEFOR0xFJ3MgZGVmZXJyZWQgY29tbWFuZCBncmFwaC4gaHR0cDov
L2FuZ2xlYnVnLmNvbS80MDI5Ci0gICAgRmVhdHVyZSBjb21tYW5kR3JhcGggPSB7Ci0gICAgICAg
ICJjb21tYW5kX2dyYXBoIiwKLSAgICAgICAgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJl
cywKLSAgICAgICAgIlVzZSBBTkdMRSdzIFZ1bGthbiBkZWZlcnJlZCBjb21tYW5kIGdyYXBoLiIs
Ci0gICAgICAgICZtZW1iZXJzLAotICAgIH07CisgICAgLy8gV2hldGhlciB0aGUgVmtEZXZpY2Ug
c3VwcG9ydHMgdGhlIFZLX0VYVF9leHRlcm5hbF9tZW1vcnlfaG9zdCBleHRlbnNpb24sIG9uIHdo
aWNoIHRoZQorICAgIC8vIEFOR0xFX2lvc3VyZmFjZV9jbGllbnRfYnVmZmVyIGV4dGVuc2lvbiBj
YW4gYmUgbGF5ZXJlZC4KKyAgICBGZWF0dXJlIHN1cHBvcnRzRXh0ZXJuYWxNZW1vcnlIb3N0ID0g
eworICAgICAgICAic3VwcG9ydHNfZXh0ZXJuYWxfbWVtb3J5X2hvc3QiLCBGZWF0dXJlQ2F0ZWdv
cnk6OlZ1bGthbkZlYXR1cmVzLAorICAgICAgICAiVmtEZXZpY2Ugc3VwcG9ydHMgdGhlIFZLX0VY
VF9leHRlcm5hbF9tZW1vcnlfaG9zdCBleHRlbnNpb24iLCAmbWVtYmVyc307CisKKyAgICAvLyBX
aGV0aGVyIHRvIGZpbGwgbmV3IGJ1ZmZlcnMgYW5kIHRleHR1cmVzIHdpdGggbm9uemVybyBkYXRh
IHRvIHNhbml0aXplIHJvYnVzdCByZXNvdXJjZQorICAgIC8vIGluaXRpYWxpemF0aW9uIGFuZCBm
bHVzaCBvdXQgYXNzdW1wdGlvbnMgYWJvdXQgemVybyBpbml0LgorICAgIEZlYXR1cmUgYWxsb2Nh
dGVOb25aZXJvTWVtb3J5ID0geworICAgICAgICAiYWxsb2NhdGVfbm9uX3plcm9fbWVtb3J5Iiwg
RmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgIkZpbGwgbmV3IGFsbG9j
YXRpb25zIHdpdGggbm9uLXplcm8gdmFsdWVzIHRvIGZsdXNoIG91dCBlcnJvcnMuIiwgJm1lbWJl
cnMsCisgICAgICAgICJodHRwOi8vYW5nbGVidWcuY29tLzQzODQifTsKKworICAgIC8vIEFuZHJv
aWQgbmVlZHMgdG8gcHJlLXJvdGF0ZSBzdXJmYWNlcyB0aGF0IGFyZSBub3Qgb3JpZW50ZWQgcGVy
IHRoZSBuYXRpdmUgZGV2aWNlJ3MKKyAgICAvLyBvcmllbnRhdGlvbiAoZS5nLiBhIGxhbmRzY2Fw
ZSBhcHBsaWNhdGlvbiBvbiBhIFBpeGVsIHBob25lKS4gIFRoaXMgZmVhdHVyZSB3b3JrcyBmb3IK
KyAgICAvLyBmdWxsLXNjcmVlbiBhcHBsaWNhdGlvbnMuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzUw
MgorICAgIEZlYXR1cmUgZW5hYmxlUHJlUm90YXRlU3VyZmFjZXMgPSB7ImVuYWJsZV9wcmVfcm90
YXRpb25fc3VyZmFjZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFbmFibGUgQW5kcm9pZCBwcmUtcm90YXRpb24gZm9yIGxhbmRzY2Fw
ZSBhcHBsaWNhdGlvbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1lbWJlcnMsICJodHRwOi8vYW5nbGVidWcuY29tLzM1MDIifTsKKworICAgIC8vIENhY2hlIEZy
YW1lYnVmZmVyVmsgb2JqZWN0cy4gQ3VycmVudGx5IGhpdHRpbmcgYSBidWcgb24gQXBwbGU6IGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ0MgorICAgIEZlYXR1cmUgZW5hYmxlRnJhbWVidWZmZXJWa0Nh
Y2hlID0geworICAgICAgICAiZW5hYmxlX2ZyYW1lYnVmZmVyX3ZrX2NhY2hlIiwgRmVhdHVyZUNh
dGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAgIkVuYWJsZSBGcmFtZWJ1ZmZlclZrIG9i
amVjdHMgdG8gYmUgY2FjaGVkIiwgJm1lbWJlcnMsICJodHRwOi8vYW5nbGVidWcuY29tLzQ0NDIi
fTsKKworICAgIC8vIEVuYWJsZSBwcmVjaXNpb24gcXVhbGlmaWVycyBmb3Igc2hhZGVycyBnZW5l
cmF0ZWQgYnkgVnVsa2FuIGJhY2tlbmQgaHR0cDovL2FuZ2xlYnVnLmNvbS8zMDc4CisgICAgRmVh
dHVyZSBlbmFibGVQcmVjaXNpb25RdWFsaWZpZXJzID0geworICAgICAgICAiZW5hYmxlX3ByZWNp
c2lvbl9xdWFsaWZpZXJzIiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAg
ICAgIkVuYWJsZSBwcmVjaXNpb24gcXVhbGlmaWVycyBpbiBzaGFkZXJzIiwgJm1lbWJlcnMsICJo
dHRwOi8vYW5nbGVidWcuY29tLzMwNzgifTsKKworICAgIC8vIFN1cHBvcnQgRGVwdGgvU3RlbmNp
bCByZW5kZXJpbmcgZmVlZGJhY2sgbG9vcHMgYnkgbWFza2luZyBvdXQgdGhlIGRlcHRoL3N0ZW5j
aWwgYnVmZmVyLgorICAgIC8vIE1hbmhhdHRhbiB1c2VzIHRoaXMgZmVhdHVyZSBpbiBhIGZldyBk
cmF3IGNhbGxzLgorICAgIEZlYXR1cmUgc3VwcG9ydERlcHRoU3RlbmNpbFJlbmRlcmluZ0ZlZWRi
YWNrTG9vcHMgPSB7CisgICAgICAgICJzdXBwb3J0X2RlcHRoX3N0ZW5jaWxfcmVuZGVyaW5nX2Zl
ZWRiYWNrX2xvb3BzIiwgRmVhdHVyZUNhdGVnb3J5OjpWdWxrYW5GZWF0dXJlcywKKyAgICAgICAg
IlN1cG9ydCBkZXB0aC9zdGVuY2lsIHJlbmRlcmluZyBmZWVkYmFjayBsb29wcyIsICZtZW1iZXJz
LCAiaHR0cDovL2FuZ2xlYnVnLmNvbS80NDkwIn07CiB9OwogCiBpbmxpbmUgRmVhdHVyZXNWazo6
RmVhdHVyZXNWaygpICA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgKaW5kZXggZjRlYzRmODgzN2M4ZTYxZjA0NjIz
ZDFhNGRiNzA1NTIwOTM1ZWI3Ny4uZDA2NWMzYTlmNzhjZTJmYmE2NjNmYmFjYjRjYmY0NWY0MGU2
ODZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9wbGF0Zm9y
bS9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZv
cm0vUGxhdGZvcm0uaApAQCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAj
aW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8YXJyYXk+
CiAKICNkZWZpbmUgRUdMX1BMQVRGT1JNX0FOR0xFX1BMQVRGT1JNX01FVEhPRFNfQU5HTEVYIDB4
MzQ4MgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS92dWxrYW4v
dnVsa2FuX2Z1Y2hzaWFfZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3Z1
bGthbi92dWxrYW5fZnVjaHNpYV9leHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWYxMjBlNzA1NmQ0M2U2YjUx
YWI0MjUwN2JjMGJjYTkwYzA0ZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS92dWxrYW4vdnVsa2FuX2Z1Y2hzaWFfZXh0LmgKQEAgLTAsMCArMSwx
NDUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyB2dWxrYW5fZnVjaHNpYV9leHQ6CisvLyAgICBEZWZpbmVzIEZ1
Y2hzaWEtc3BlY2lmaWMgVnVsa2FuIGV4dGVuc2lvbnMgdGhhdCBoYXZlbid0IGJlZW4KKy8vICAg
IHVwc3RyZWFtZWQgdG8gdGhlIG9mZmljaWFsIFZ1bGthbiBoZWFkZXJzLgorLy8KKworI2lmbmRl
ZiBDT01NT05fVlVMS0FOX0ZVQ0hTSUFfRVhUX0hfCisjZGVmaW5lIENPTU1PTl9WVUxLQU5fRlVD
SFNJQV9FWFRfSF8KKworI2lmICFkZWZpbmVkKFZLX05PX1BST1RPVFlQRVMpCisjICAgIGRlZmlu
ZSBWS19OT19QUk9UT1RZUEVTCisjZW5kaWYKKworI2luY2x1ZGUgPHZ1bGthbi92dWxrYW4uaD4K
KworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fRlVDSFNJQSkKKyMgICAgaW5jbHVkZSA8emly
Y29uL3R5cGVzLmg+CisjZWxzZQordHlwZWRlZiB1aW50MzJfdCB6eF9oYW5kbGVfdDsKKyMgICAg
ZGVmaW5lIFpYX0hBTkRMRV9JTlZBTElEICgoenhfaGFuZGxlX3QpMCkKKyNlbmRpZgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2NvbnN0IFZrU3RydWN0dXJl
VHlwZSBWS19TVFJVQ1RVUkVfVFlQRV9URU1QX0lNUE9SVF9NRU1PUllfWklSQ09OX0hBTkRMRV9J
TkZPX0ZVQ0hTSUEgPQorICAgIHN0YXRpY19jYXN0PFZrU3RydWN0dXJlVHlwZT4oMTAwMTAwNTAw
MCk7Citjb25zdCBWa1N0cnVjdHVyZVR5cGUgVktfU1RSVUNUVVJFX1RZUEVfVEVNUF9NRU1PUllf
WklSQ09OX0hBTkRMRV9QUk9QRVJUSUVTX0ZVQ0hTSUEgPQorICAgIHN0YXRpY19jYXN0PFZrU3Ry
dWN0dXJlVHlwZT4oMTAwMTAwNTAwMSk7Citjb25zdCBWa1N0cnVjdHVyZVR5cGUgVktfU1RSVUNU
VVJFX1RZUEVfVEVNUF9NRU1PUllfR0VUX1pJUkNPTl9IQU5ETEVfSU5GT19GVUNIU0lBID0KKyAg
ICBzdGF0aWNfY2FzdDxWa1N0cnVjdHVyZVR5cGU+KDEwMDEwMDUwMDIpOworY29uc3QgVmtTdHJ1
Y3R1cmVUeXBlIFZLX1NUUlVDVFVSRV9UWVBFX1RFTVBfSU1QT1JUX1NFTUFQSE9SRV9aSVJDT05f
SEFORExFX0lORk9fRlVDSFNJQSA9CisgICAgc3RhdGljX2Nhc3Q8VmtTdHJ1Y3R1cmVUeXBlPigx
MDAxMDA2MDAwKTsKK2NvbnN0IFZrU3RydWN0dXJlVHlwZSBWS19TVFJVQ1RVUkVfVFlQRV9URU1Q
X1NFTUFQSE9SRV9HRVRfWklSQ09OX0hBTkRMRV9JTkZPX0ZVQ0hTSUEgPQorICAgIHN0YXRpY19j
YXN0PFZrU3RydWN0dXJlVHlwZT4oMTAwMTAwNjAwMSk7CisKK2NvbnN0IFZrRXh0ZXJuYWxNZW1v
cnlIYW5kbGVUeXBlRmxhZ0JpdHMKKyAgICBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVf
VEVNUF9aSVJDT05fVk1PX0JJVF9GVUNIU0lBID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8VmtFeHRl
cm5hbE1lbW9yeUhhbmRsZVR5cGVGbGFnQml0cz4oMHgwMDEwMDAwMCk7CisKK2NvbnN0IFZrRXh0
ZXJuYWxTZW1hcGhvcmVIYW5kbGVUeXBlRmxhZ0JpdHMKKyAgICBWS19FWFRFUk5BTF9TRU1BUEhP
UkVfSEFORExFX1RZUEVfVEVNUF9aSVJDT05fRVZFTlRfQklUX0ZVQ0hTSUEgPQorICAgICAgICBz
dGF0aWNfY2FzdDxWa0V4dGVybmFsU2VtYXBob3JlSGFuZGxlVHlwZUZsYWdCaXRzPigweDAwMTAw
MDAwKTsKKworI2RlZmluZSBWS19GVUNIU0lBX2V4dGVybmFsX21lbW9yeSAxCisjZGVmaW5lIFZL
X0ZVQ0hTSUFfRVhURVJOQUxfTUVNT1JZX1NQRUNfVkVSU0lPTiAxCisjZGVmaW5lIFZLX0ZVQ0hT
SUFfRVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FICJWS19GVUNIU0lBX2V4dGVybmFsX21l
bW9yeSIKKwordHlwZWRlZiBzdHJ1Y3QgVmtJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVJbmZvRlVD
SFNJQQoreworICAgIFZrU3RydWN0dXJlVHlwZSBzVHlwZTsKKyAgICBjb25zdCB2b2lkICpwTmV4
dDsKKyAgICBWa0V4dGVybmFsTWVtb3J5SGFuZGxlVHlwZUZsYWdCaXRzIGhhbmRsZVR5cGU7Cisg
ICAgenhfaGFuZGxlX3QgaGFuZGxlOworfSBWa0ltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUluZm9G
VUNIU0lBOworCit0eXBlZGVmIHN0cnVjdCBWa01lbW9yeVppcmNvbkhhbmRsZVByb3BlcnRpZXNG
VUNIU0lBCit7CisgICAgVmtTdHJ1Y3R1cmVUeXBlIHNUeXBlOworICAgIHZvaWQgKnBOZXh0Owor
ICAgIHp4X2hhbmRsZV90IG1lbW9yeVR5cGVCaXRzOworfSBWa01lbW9yeVppcmNvbkhhbmRsZVBy
b3BlcnRpZXNGVUNIU0lBOworCit0eXBlZGVmIHN0cnVjdCBWa01lbW9yeUdldFppcmNvbkhhbmRs
ZUluZm9GVUNIU0lBCit7CisgICAgVmtTdHJ1Y3R1cmVUeXBlIHNUeXBlOworICAgIGNvbnN0IHZv
aWQgKnBOZXh0OworICAgIFZrRGV2aWNlTWVtb3J5IG1lbW9yeTsKKyAgICBWa0V4dGVybmFsTWVt
b3J5SGFuZGxlVHlwZUZsYWdCaXRzIGhhbmRsZVR5cGU7Cit9IFZrTWVtb3J5R2V0WmlyY29uSGFu
ZGxlSW5mb0ZVQ0hTSUE7CisKK3R5cGVkZWYgVmtSZXN1bHQoVktBUElfUFRSICpQRk5fdmtHZXRN
ZW1vcnlaaXJjb25IYW5kbGVGVUNIU0lBKSgKKyAgICBWa0RldmljZSBkZXZpY2UsCisgICAgY29u
c3QgVmtNZW1vcnlHZXRaaXJjb25IYW5kbGVJbmZvRlVDSFNJQSAqcEdldFppcmNvbkhhbmRsZUlu
Zm8sCisgICAgenhfaGFuZGxlX3QgKnBaaXJjb25IYW5kbGUpOwordHlwZWRlZiBWa1Jlc3VsdChW
S0FQSV9QVFIgKlBGTl92a0dldE1lbW9yeVppcmNvbkhhbmRsZVByb3BlcnRpZXNGVUNIU0lBKSgK
KyAgICBWa0RldmljZSBkZXZpY2UsCisgICAgVmtFeHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVGbGFn
Qml0cyBoYW5kbGVUeXBlLAorICAgIHp4X2hhbmRsZV90IFppcmNvbkhhbmRsZSwKKyAgICBWa01l
bW9yeVppcmNvbkhhbmRsZVByb3BlcnRpZXNGVUNIU0lBICpwTWVtb3J5WmlyY29uSGFuZGxlUHJv
cGVydGllcyk7CisKKyNpZm5kZWYgVktfTk9fUFJPVE9UWVBFUworVktBUElfQVRUUiBWa1Jlc3Vs
dCBWS0FQSV9DQUxMCit2a0dldE1lbW9yeVppcmNvbkhhbmRsZUZVQ0hTSUEoVmtEZXZpY2UgZGV2
aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrTWVtb3J5R2V0Wmly
Y29uSGFuZGxlSW5mb0ZVQ0hTSUEgKnBHZXRaaXJjb25IYW5kbGVJbmZvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHp4X2hhbmRsZV90ICpwWmlyY29uSGFuZGxlKTsKKworVktBUElf
QVRUUiBWa1Jlc3VsdCBWS0FQSV9DQUxMIHZrR2V0TWVtb3J5WmlyY29uSGFuZGxlUHJvcGVydGll
c0ZVQ0hTSUEoCisgICAgVmtEZXZpY2UgZGV2aWNlLAorICAgIFZrRXh0ZXJuYWxNZW1vcnlIYW5k
bGVUeXBlRmxhZ0JpdHMgaGFuZGxlVHlwZSwKKyAgICB6eF9oYW5kbGVfdCBaaXJjb25IYW5kbGUs
CisgICAgVmtNZW1vcnlaaXJjb25IYW5kbGVQcm9wZXJ0aWVzRlVDSFNJQSAqcE1lbW9yeVppcmNv
bkhhbmRsZVByb3BlcnRpZXMpOworI2VuZGlmCisKKyNkZWZpbmUgVktfRlVDSFNJQV9leHRlcm5h
bF9zZW1hcGhvcmUgMQorI2RlZmluZSBWS19GVUNIU0lBX0VYVEVSTkFMX1NFTUFQSE9SRV9TUEVD
X1ZFUlNJT04gMQorI2RlZmluZSBWS19GVUNIU0lBX0VYVEVSTkFMX1NFTUFQSE9SRV9FWFRFTlNJ
T05fTkFNRSAiVktfRlVDSFNJQV9leHRlcm5hbF9zZW1hcGhvcmUiCisKK3R5cGVkZWYgc3RydWN0
IFZrSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlSW5mb0ZVQ0hTSUEKK3sKKyAgICBWa1N0cnVj
dHVyZVR5cGUgc1R5cGU7CisgICAgY29uc3Qgdm9pZCAqcE5leHQ7CisgICAgVmtTZW1hcGhvcmUg
c2VtYXBob3JlOworICAgIFZrU2VtYXBob3JlSW1wb3J0RmxhZ3MgZmxhZ3M7CisgICAgVmtFeHRl
cm5hbFNlbWFwaG9yZUhhbmRsZVR5cGVGbGFnQml0cyBoYW5kbGVUeXBlOworICAgIHp4X2hhbmRs
ZV90IGhhbmRsZTsKK30gVmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVJbmZvRlVDSFNJQTsK
KwordHlwZWRlZiBzdHJ1Y3QgVmtTZW1hcGhvcmVHZXRaaXJjb25IYW5kbGVJbmZvRlVDSFNJQQor
eworICAgIFZrU3RydWN0dXJlVHlwZSBzVHlwZTsKKyAgICBjb25zdCB2b2lkICpwTmV4dDsKKyAg
ICBWa1NlbWFwaG9yZSBzZW1hcGhvcmU7CisgICAgVmtFeHRlcm5hbFNlbWFwaG9yZUhhbmRsZVR5
cGVGbGFnQml0cyBoYW5kbGVUeXBlOworfSBWa1NlbWFwaG9yZUdldFppcmNvbkhhbmRsZUluZm9G
VUNIU0lBOworCit0eXBlZGVmIFZrUmVzdWx0KFZLQVBJX1BUUiAqUEZOX3ZrSW1wb3J0U2VtYXBo
b3JlWmlyY29uSGFuZGxlRlVDSFNJQSkoCisgICAgVmtEZXZpY2UgZGV2aWNlLAorICAgIGNvbnN0
IFZrSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlSW5mb0ZVQ0hTSUEgKnBJbXBvcnRTZW1hcGhv
cmVaaXJjb25IYW5kbGVJbmZvKTsKK3R5cGVkZWYgVmtSZXN1bHQoVktBUElfUFRSICpQRk5fdmtH
ZXRTZW1hcGhvcmVaaXJjb25IYW5kbGVGVUNIU0lBKSgKKyAgICBWa0RldmljZSBkZXZpY2UsCisg
ICAgY29uc3QgVmtTZW1hcGhvcmVHZXRaaXJjb25IYW5kbGVJbmZvRlVDSFNJQSAqcEdldFppcmNv
bkhhbmRsZUluZm8sCisgICAgenhfaGFuZGxlX3QgKnBaaXJjb25IYW5kbGUpOworCisjaWZuZGVm
IFZLX05PX1BST1RPVFlQRVMKK1ZLQVBJX0FUVFIgVmtSZXN1bHQgVktBUElfQ0FMTCB2a0ltcG9y
dFNlbWFwaG9yZVppcmNvbkhhbmRsZUZVQ0hTSUEoCisgICAgVmtEZXZpY2UgZGV2aWNlLAorICAg
IGNvbnN0IFZrSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlSW5mb0ZVQ0hTSUEgKnBJbXBvcnRT
ZW1hcGhvcmVaaXJjb25IYW5kbGVJbmZvKTsKKworVktBUElfQVRUUiBWa1Jlc3VsdCBWS0FQSV9D
QUxMCit2a0dldFNlbWFwaG9yZVppcmNvbkhhbmRsZUZVQ0hTSUEoVmtEZXZpY2UgZGV2aWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrU2VtYXBob3JlR2V0Wmly
Y29uSGFuZGxlSW5mb0ZVQ0hTSUEgKnBHZXRaaXJjb25IYW5kbGVJbmZvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHp4X2hhbmRsZV90ICpwWmlyY29uSGFuZGxlKTsKKyNlbmRp
ZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgIC8vIENPTU1PTl9W
VUxLQU5fRlVDSFNJQV9FWFRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luZnJhL0FOR0xFV3JhbmdsaW5nLm1kIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5mcmEv
QU5HTEVXcmFuZ2xpbmcubWQKaW5kZXggZjQwZWJjMWNkMTRmMWI1MDVmMWExNzI5ZTFjYzdkYzVj
MjhjMzJmYS4uMzYxZjNkMTIyZGVhMWIyNGYzZDZlZjA5MDU4M2I4ZmU2OWI4MWU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5mcmEvQU5HTEVXcmFuZ2xpbmcubWQKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5mcmEvQU5HTEVXcmFuZ2xpbmcubWQKQEAgLTEz
LDcgKzEzLDEyIEBAIEFzIGFuIEFOR0xFIFNoZXJpZmYuIFlvdXIgam9iIGlzIHRvOgogSWYgeW91
J3JlIG5vdCBhbiBBTkdMRSB0ZWFtIG1lbWJlciwgeW91IGNhbiBjb250YWN0IHVzIG9uIHRoZSBw
dWJsaWMgQU5HTEUgcHJvamVjdAogW0dvb2dsZSBncm91cF0oaHR0cHM6Ly9ncm91cHMuZ29vZ2xl
LmNvbS9mb3J1bS8jIWZvcnVtL2FuZ2xlcHJvamVjdCkuCiAKLSMjIFRhc2sgMTogVGhlIFRyeSBX
YXRlcmZhbGwKKyoqTm90ZSoqOiBJdCdzIGhpZ2hseSByZWNvbW1lbmQgdGhhdCBhbGwgd3Jhbmds
ZXJzIGluc3RhbGwgdGhlIFtDaHJvbWl1bSBGbGFrZSBMaW5rZXJdW0ZsYWtlcl0KK2V4dGVuc2lv
biBmb3IgaW5zcGVjdGluZyBib3QgYnVpbGRzLiBJdCdsbCBzYXZlIHlvdSBhIGxvdCBvZiB0aW1l
LgorCitbRmxha2VyXTogaHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwv
Zmxha2UtbGlua2VyL2JvYW1ubWJnbWZub2JvbWRkbWVuYmFpY29kZ2dsa2hjCisKKyMjIFRhc2sg
MTogTW9uaXRvciBBTkdMRSBDSSBhbmQgVHJ5IFRlc3RlcnMKIAogWW91ciBmaXJzdCBqb2IgaXMg
dG8ga2VlcCB0aGUKIFtBTkdMRSBUcnkgV2F0ZXJmYWxsXShodHRwczovL2NpLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtL2cvYW5nbGUudHJ5L2J1aWxkZXJzKSBoZWFsdGh5LiAgU29tZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5mcmEvUkVBRE1FLm1kIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvaW5mcmEvUkVBRE1FLm1kCmluZGV4IGQzMzAxYmUwNmZhZTk2ZDEyMzk1
NzczMzFiZGJjMmFmY2EzMDk2YmIuLmVhNDVlYTQ3NmUwOTM1YTNjMDc4YzE3NGNlODY2ZTFmY2U3
NTIxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJhL1JFQURNRS5t
ZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmZyYS9SRUFETUUubWQKQEAgLTEsNCAr
MSw0NCBAQAotIyBBTkdMRSBTdGFuZGFsb25lIFRlc3RpbmcgSW5mcmFzdHJ1Y3R1cmUKKyMgQU5H
TEUgVGVzdGluZyBJbmZyYXN0cnVjdHVyZQorCitBTkdMRSBydW5zIGh1bmRyZWRzIG9mIHRob3Vz
YW5kcyBvZiB0ZXN0cyBvbiBldmVyeSBjaGFuZ2UgYmVmb3JlIGl0IGxhbmRzIGluCit0aGUgdHJl
ZS4gV2Ugc2NhbGUgb3VyIHByZS1jb21taXQgYW5kIHBvc3QtY29tbWl0IHRlc3RpbmcgdG8gbWFu
eSBtYWNoaW5lcwordXNpbmcgW0Nocm9taXVtIFN3YXJtaW5nXVtTd2FybWluZ10uIE91ciB0ZXN0
aW5nIHNldHVwIGhlYXZpbHkgbGV2ZXJhZ2VzCitleGlzdGluZyB3b3JrIGluIENocm9taXVtLiBX
ZSBhbHNvIHJ1biBjb21waWxlLW9ubHkKK1tTdGFuZGFsb25lIFRlc3RpbmddW1N0YW5kYWxvbmVd
IHRoYXQgZG9lcyBub3QgZGVwZW5kIG9uIGEgQ2hyb21pdW0gY2hlY2tvdXQuCisKK0Fsc28gc2Vl
IHRoZSBkb2N1bWVudGF0aW9uIG9uIFtBTkdMRSBXcmFuZ2xpbmddW1dyYW5nbGluZ10gZm9yIG1v
cmUgaW5mby4KKworIyMgUHJlLUNvbW1pdCBUZXN0aW5nCisKK1NlZSB0aGUgcHJlLWNvbW1pdCB0
cnkgd2F0ZXJmYWxsIGhlcmU6CisKK1tgaHR0cHM6Ly9jaS5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS9nL2FuZ2xlLnRyeS9idWlsZGVyc2BdKGh0dHBzOi8vY2kuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0vZy9hbmdsZS50cnkvYnVpbGRlcnMpCisKK1dlIGN1cnJlbnRseSBydW4gcHJlLWNvbW1pdCB0
ZXN0cyBvbjoKKworICogV2luZG93cyAzMi1iaXQgQU1EIGFuZCBXaW5kb3dzIDY0LWJpdCBJbnRl
bCBhbmQgTlZJRElBIEdQVXMKKyAqIExpbnV4IDY0LWJpdCBOVklESUEgYW5kIEludGVsIEdQVXMK
KyAqIE1hYyBOVklESUEsIEludGVsIGFuZCBBTUQgR1BVcworICogUGl4ZWwgMiBhbmQgTmV4dXMg
NVgKKyAqIEZ1Y2hzaWEgdGVzdGluZyBpbiBhIFZNCisKK0xvb2tpbmcgYXQgYW4gZXhhbXBsZSBi
dWlsZCBzaG93cyBob3cgdGVzdHMgYXJlIHNwbGl0IHVwIGJldHdlZW4gbWFjaGluZXMuIFNlZSBm
b3IgZXhhbXBsZToKKworW2BodHRwczovL2NpLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2J1aWxk
ZXJzL3RyeS9tYWMtYW5nbGUtcmVsLzU5MDVgXShodHRwczovL2NpLmNocm9taXVtLm9yZy9wL2No
cm9taXVtL2J1aWxkZXJzL3RyeS9tYWMtYW5nbGUtcmVsLzU5MDUpCisKK1RoaXMgYnVpbGQgcmFu
IDgyIHRlc3Qgc3RlcHMgYWNyb3NzIDMgR1BVIGZhbWlsaWVzLiBJbiBzb21lIGNhc2VzIChlLmcu
Cit3ZWJnbDJfY29uZm9ybWFuY2VfdGVzdHMpIHRoZSB0ZXN0IGlzIHNwbGl0IHVwIGJldHdlZW4g
bXVsdGlwbGUgbWFjaGluZXMgdG8KK3J1biBmYXN0ZXIgKGluIHRoaXMgY2FzZSAyMCBkaWZmZXJl
bnQgbWFjaGluZXMgYXQgb25jZSkuIFRoaXMgYnVpbGQgdG9vayAyNworbWludXRlcyB0byBjb21w
bGV0ZSBtdWx0aXBsZSBob3VycyBvZiByZWFsIGF1dG9tYXRlZCB0ZXN0aW5nLgorCitGb3IgbW9y
ZSBkZXRhaWxzIG9uIHJ1bm5pbmcgYW5kIHdvcmtpbmcgd2l0aCBvdXIgdGVzdCBzZXRzIHNlZSB0
aGUgZG9jcyBpbiBbQ29udHJpYnV0aW5nIENvZGVdW0NvbnRyaWJdLgorCitbU3dhcm1pbmddOiBo
dHRwczovL2Nocm9taXVtLXN3YXJtLmFwcHNwb3QuY29tLworW1N0YW5kYWxvbmVdOiAjQU5HTEUt
U3RhbmRhbG9uZS1UZXN0aW5nCitbQ29udHJpYl06IC4uL2RvYy9Db250cmlidXRpbmdDb2RlLm1k
I1Rlc3RpbmcKK1tXcmFuZ2xpbmddOiBBTkdMRVdyYW5nbGluZy5tZAorCisjIyBBTkdMRSBTdGFu
ZGFsb25lIFRlc3RpbmcKIAogSW4gYWRkaXRpb24gdG8gdGhlIEFOR0xFIHRyeSBib3RzIHVzaW5n
IENocm9tZSwgYW5kIHRoZSBHUFUuRllJIGJvdHMsIEFOR0xFCiBoYXMgc3RhbmRhbG9uZSB0ZXN0
aW5nIG9uIHRoZSBDaHJvbWUgaW5mcmFzdHJ1Y3R1cmUuIEN1cnJlbnRseSB0aGVzZSB0ZXN0cyBh
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luZnJhL2NvbmZpZy9nbG9i
YWwvY3ItYnVpbGRidWNrZXQuY2ZnIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5mcmEvY29u
ZmlnL2dsb2JhbC9jci1idWlsZGJ1Y2tldC5jZmcKaW5kZXggYzdkN2Y0ZTA5Y2UzYmVmZmYxZDI1
NmM2NmFlNmJlYTI3NGE1N2EzZC4uMmJhY2EzMjk2ZjE2ODU1ZDE1MmE4NTIxYTM2YTk3MTUyYmM3
Y2FiZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5mcmEvY29uZmlnL2ds
b2JhbC9jci1idWlsZGJ1Y2tldC5jZmcKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5m
cmEvY29uZmlnL2dsb2JhbC9jci1idWlsZGJ1Y2tldC5jZmcKQEAgLTYzLDcgKzYzLDcgQEAgYnVp
bGRlcl9taXhpbnMgewogICByZWNpcGUgewogICAgIHByb3BlcnRpZXNfajogPDxFT0YKICAgICAg
ICRkZXBvdF90b29scy9vc3hfc2RrOnsKLSAgICAgICAgInNka192ZXJzaW9uIjogIjEwYjYxIgor
ICAgICAgICAic2RrX3ZlcnNpb24iOiAiMTFiNTIiCiAgICAgICB9CiAgICAgRU9GCiAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NhbXBsZXMvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zYW1wbGVzL0JVSUxELmduCmluZGV4IGNkMDk1OWE3MDU3ZmNl
ZmRhM2IzMDEwMzU4NTZiNzZlYTAyZDc1M2EuLmIwY2UyMDg4YjA0ZWIxMjUwYjU0NTJhZGNiMTVk
MGU0MDdiYjhiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NhbXBsZXMv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2FtcGxlcy9CVUlMRC5nbgpA
QCAtNDgsOSArNDgsNyBAQCB0ZW1wbGF0ZSgiYW5nbGVfc2FtcGxlIikgewogICBpZiAoZGVmaW5l
ZChpbnZva2VyLmRhdGEpKSB7CiAgICAgY29weSh0YXJnZXRfbmFtZSArICJfZGF0YSIpIHsKICAg
ICAgIHNvdXJjZXMgPSBpbnZva2VyLmRhdGEKLSAgICAgIG91dHB1dHMgPSBbCi0gICAgICAgICIk
cm9vdF9vdXRfZGlyL3t7c291cmNlX2ZpbGVfcGFydH19IiwKLSAgICAgIF0KKyAgICAgIG91dHB1
dHMgPSBbICIkcm9vdF9vdXRfZGlyL3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiAgICAgfQogICB9
CiAKQEAgLTYwLDExICs1OCwxMCBAQCB0ZW1wbGF0ZSgiYW5nbGVfc2FtcGxlIikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Zs
YWdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmluZXMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzb3VyY2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgZGVwcyA9IFsK
LSAgICAgICI6c2FtcGxlX3V0aWwiLAotICAgIF0KKyAgICBkZXBzICs9IFsgIjpzYW1wbGVfdXRp
bCIgXQogICAgIGlmIChkZWZpbmVkKGludm9rZXIuZGF0YSkpIHsKICAgICAgIGRlcHMgKz0gWyAi
OiR7dGFyZ2V0X25hbWV9X2RhdGEiIF0KICAgICB9CkBAIC03NSwyMiArNzIsMjAgQEAgdGVtcGxh
dGUoImFuZ2xlX3NhbXBsZSIpIHsKICAgfQogfQogCitzZXRfZGVmYXVsdHMoImFuZ2xlX3NhbXBs
ZSIpIHsKKyAgZGVwcyA9IFtdCit9CisKIGFuZ2xlX3NhbXBsZSgiaGVsbG9fdHJpYW5nbGUiKSB7
Ci0gIHNvdXJjZXMgPSBbCi0gICAgImhlbGxvX3RyaWFuZ2xlL0hlbGxvVHJpYW5nbGUuY3BwIiwK
LSAgXQorICBzb3VyY2VzID0gWyAiaGVsbG9fdHJpYW5nbGUvSGVsbG9UcmlhbmdsZS5jcHAiIF0K
IH0KIAogYW5nbGVfc2FtcGxlKCJtaXBfbWFwXzJkIikgewotICBzb3VyY2VzID0gWwotICAgICJt
aXBfbWFwXzJkL01pcE1hcDJELmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgIm1pcF9tYXBfMmQv
TWlwTWFwMkQuY3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgibXVsdGlfdGV4dHVyZSIpIHsKLSAg
c291cmNlcyA9IFsKLSAgICAibXVsdGlfdGV4dHVyZS9NdWx0aVRleHR1cmUuY3BwIiwKLSAgXQor
ICBzb3VyY2VzID0gWyAibXVsdGlfdGV4dHVyZS9NdWx0aVRleHR1cmUuY3BwIiBdCiAgIGRhdGEg
PSBbCiAgICAgIm11bHRpX3RleHR1cmUvYmFzZW1hcC50Z2EiLAogICAgICJtdWx0aV90ZXh0dXJl
L2xpZ2h0bWFwLnRnYSIsCkBAIC05OCwxNSArOTMsMTEgQEAgYW5nbGVfc2FtcGxlKCJtdWx0aV90
ZXh0dXJlIikgewogfQogCiBhbmdsZV9zYW1wbGUoIm11bHRpX3dpbmRvdyIpIHsKLSAgc291cmNl
cyA9IFsKLSAgICAibXVsdGlfd2luZG93L011bHRpV2luZG93LmNwcCIsCi0gIF0KKyAgc291cmNl
cyA9IFsgIm11bHRpX3dpbmRvdy9NdWx0aVdpbmRvdy5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxl
KCJtdWx0aXBsZV9kcmF3X2J1ZmZlcnMiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgIm11bHRpcGxl
X2RyYXdfYnVmZmVycy9NdWx0aXBsZURyYXdCdWZmZXJzLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9
IFsgIm11bHRpcGxlX2RyYXdfYnVmZmVycy9NdWx0aXBsZURyYXdCdWZmZXJzLmNwcCIgXQogICBk
YXRhID0gWwogICAgICJtdWx0aXBsZV9kcmF3X2J1ZmZlcnMvbXVsdGlwbGVfZHJhd19idWZmZXJz
X2NvcHlfZnMuZ2xzbCIsCiAgICAgIm11bHRpcGxlX2RyYXdfYnVmZmVycy9tdWx0aXBsZV9kcmF3
X2J1ZmZlcnNfZnMuZ2xzbCIsCkBAIC0xMTUsMTA4ICsxMDYsNzIgQEAgYW5nbGVfc2FtcGxlKCJt
dWx0aXBsZV9kcmF3X2J1ZmZlcnMiKSB7CiB9CiAKIGFuZ2xlX3NhbXBsZSgibXVsdGl2aWV3Iikg
ewotICBzb3VyY2VzID0gWwotICAgICJtdWx0aXZpZXcvTXVsdGl2aWV3LmNwcCIsCi0gIF0KKyAg
c291cmNlcyA9IFsgIm11bHRpdmlldy9NdWx0aXZpZXcuY3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBs
ZSgicGFydGljbGVfc3lzdGVtIikgewotICBzb3VyY2VzID0gWwotICAgICJwYXJ0aWNsZV9zeXN0
ZW0vUGFydGljbGVTeXN0ZW0uY3BwIiwKLSAgXQotICBkYXRhID0gWwotICAgICJwYXJ0aWNsZV9z
eXN0ZW0vc21va2UudGdhIiwKLSAgXQorICBzb3VyY2VzID0gWyAicGFydGljbGVfc3lzdGVtL1Bh
cnRpY2xlU3lzdGVtLmNwcCIgXQorICBkYXRhID0gWyAicGFydGljbGVfc3lzdGVtL3Ntb2tlLnRn
YSIgXQogfQogCiBhbmdsZV9zYW1wbGUoInBvc3Rfc3ViX2J1ZmZlciIpIHsKLSAgc291cmNlcyA9
IFsKLSAgICAicG9zdF9zdWJfYnVmZmVyL1Bvc3RTdWJCdWZmZXIuY3BwIiwKLSAgXQorICBzb3Vy
Y2VzID0gWyAicG9zdF9zdWJfYnVmZmVyL1Bvc3RTdWJCdWZmZXIuY3BwIiBdCiB9CiAKIGFuZ2xl
X3NhbXBsZSgic2ltcGxlX2luc3RhbmNpbmciKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgInNpbXBs
ZV9pbnN0YW5jaW5nL1NpbXBsZUluc3RhbmNpbmcuY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAi
c2ltcGxlX2luc3RhbmNpbmcvU2ltcGxlSW5zdGFuY2luZy5jcHAiIF0KIH0KIAogYW5nbGVfc2Ft
cGxlKCJzaW1wbGVfdGV4dHVyZV8yZCIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAic2ltcGxlX3Rl
eHR1cmVfMmQvU2ltcGxlVGV4dHVyZTJELmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgInNpbXBs
ZV90ZXh0dXJlXzJkL1NpbXBsZVRleHR1cmUyRC5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxlKCJz
aW1wbGVfdGV4dHVyZV9jdWJlbWFwIikgewotICBzb3VyY2VzID0gWwotICAgICJzaW1wbGVfdGV4
dHVyZV9jdWJlbWFwL1NpbXBsZVRleHR1cmVDdWJlbWFwLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9
IFsgInNpbXBsZV90ZXh0dXJlX2N1YmVtYXAvU2ltcGxlVGV4dHVyZUN1YmVtYXAuY3BwIiBdCiB9
CiAKIGFuZ2xlX3NhbXBsZSgic2ltcGxlX3ZlcnRleF9zaGFkZXIiKSB7Ci0gIHNvdXJjZXMgPSBb
Ci0gICAgInNpbXBsZV92ZXJ0ZXhfc2hhZGVyL1NpbXBsZVZlcnRleFNoYWRlci5jcHAiLAotICBd
CisgIHNvdXJjZXMgPSBbICJzaW1wbGVfdmVydGV4X3NoYWRlci9TaW1wbGVWZXJ0ZXhTaGFkZXIu
Y3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgic3RlbmNpbF9vcGVyYXRpb25zIikgewotICBzb3Vy
Y2VzID0gWwotICAgICJzdGVuY2lsX29wZXJhdGlvbnMvU3RlbmNpbE9wZXJhdGlvbnMuY3BwIiwK
LSAgXQorICBzb3VyY2VzID0gWyAic3RlbmNpbF9vcGVyYXRpb25zL1N0ZW5jaWxPcGVyYXRpb25z
LmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoInRleF9yZWRlZl9taWNyb2JlbmNoIikgewotICBz
b3VyY2VzID0gWwotICAgICJ0ZXhfcmVkZWZfbWljcm9iZW5jaC9UZXhSZWRlZk1pY3JvQmVuY2gu
Y3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAidGV4X3JlZGVmX21pY3JvYmVuY2gvVGV4UmVkZWZN
aWNyb0JlbmNoLmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoInRleHR1cmVfd3JhcCIpIHsKLSAg
c291cmNlcyA9IFsKLSAgICAidGV4dHVyZV93cmFwL1RleHR1cmVXcmFwLmNwcCIsCi0gIF0KKyAg
c291cmNlcyA9IFsgInRleHR1cmVfd3JhcC9UZXh0dXJlV3JhcC5jcHAiIF0KIH0KIAogYW5nbGVf
c2FtcGxlKCJ0cmlfZmFuX21pY3JvYmVuY2giKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgInRyaV9m
YW5fbWljcm9iZW5jaC9UcmlGYW5NaWNyb0JlbmNoLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsg
InRyaV9mYW5fbWljcm9iZW5jaC9UcmlGYW5NaWNyb0JlbmNoLmNwcCIgXQogfQogCiBhbmdsZV9z
YW1wbGUoIndpbmRvd190ZXN0IikgewotICBzb3VyY2VzID0gWwotICAgICJXaW5kb3dUZXN0L1dp
bmRvd1Rlc3QuY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAiV2luZG93VGVzdC9XaW5kb3dUZXN0
LmNwcCIgXQogfQogCiBhbmdsZV9zYW1wbGUoImdsZXMxX2hlbGxvX3RyaWFuZ2xlIikgewotICBz
b3VyY2VzID0gWwotICAgICJnbGVzMS9IZWxsb1RyaWFuZ2xlLmNwcCIsCi0gIF0KKyAgc291cmNl
cyA9IFsgImdsZXMxL0hlbGxvVHJpYW5nbGUuY3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgiZ2xl
czFfc2ltcGxlX3RleHR1cmVfMmQiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgImdsZXMxL1NpbXBs
ZVRleHR1cmUyRC5jcHAiLAotICBdCisgIHNvdXJjZXMgPSBbICJnbGVzMS9TaW1wbGVUZXh0dXJl
MkQuY3BwIiBdCiB9CiAKIGFuZ2xlX3NhbXBsZSgiZ2xlczFfc2ltcGxlX2xpZ2h0aW5nIikgewot
ICBzb3VyY2VzID0gWwotICAgICJnbGVzMS9TaW1wbGVMaWdodGluZy5jcHAiLAotICBdCisgIHNv
dXJjZXMgPSBbICJnbGVzMS9TaW1wbGVMaWdodGluZy5jcHAiIF0KIH0KIAogYW5nbGVfc2FtcGxl
KCJnbGVzMV9mbGF0X3NoYWRpbmciKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgImdsZXMxL0ZsYXRT
aGFkaW5nLmNwcCIsCi0gIF0KKyAgc291cmNlcyA9IFsgImdsZXMxL0ZsYXRTaGFkaW5nLmNwcCIg
XQogfQogCiBhbmdsZV9zYW1wbGUoImdsZXMxX2RyYXdfdGV4dHVyZSIpIHsKLSAgc291cmNlcyA9
IFsKLSAgICAiZ2xlczEvRHJhd1RleHR1cmUuY3BwIiwKLSAgXQorICBzb3VyY2VzID0gWyAiZ2xl
czEvRHJhd1RleHR1cmUuY3BwIiBdCiB9CiAKIGlmIChhbmdsZV9idWlsZF9jYXB0dXJlX3JlcGxh
eV9zYW1wbGUpIHsKQEAgLTIzOCw2ICsxOTMsOCBAQCBpZiAoYW5nbGVfYnVpbGRfY2FwdHVyZV9y
ZXBsYXlfc2FtcGxlKSB7CiAgICAgICAgICAgImNhcHR1cmVfcmVwbGF5L2FuZ2xlX2NhcHR1cmVf
Y29udGV4dCR7X2NvbnRleHRpZH0uaCIsCiAgICAgICAgIF0KIAorICAgIGRlcHMgPSBbICIkYW5n
bGVfcm9vdDphbmdsZV9jb21wcmVzc2lvbiIgXQorCiAgICAgX2RhdGFfcGF0aCA9IHJlYmFzZV9w
YXRoKCJjYXB0dXJlX3JlcGxheSIsIHJvb3Rfb3V0X2RpcikKICAgICBkZWZpbmVzID0gWwogICAg
ICAgIkFOR0xFX0NBUFRVUkVfUkVQTEFZX1NBTVBMRV9EQVRBX0RJUj1cIiR7X2RhdGFfcGF0aH1c
IiIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zYW1wbGVzL2NhcHR1cmVf
cmVwbGF5L0NhcHR1cmVSZXBsYXkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2FtcGxl
cy9jYXB0dXJlX3JlcGxheS9DYXB0dXJlUmVwbGF5LmNwcAppbmRleCBjMjgyNDc2NjJiN2U5YjJh
ZjY2MWEwZTg0MmE1ZjdmODEzODE5MzQ0Li5hMzhjMjNiZThiMGU4NmNiMThmMDA2ZDNhY2E2ZmI5
ODk0ZDkxNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zYW1wbGVzL2Nh
cHR1cmVfcmVwbGF5L0NhcHR1cmVSZXBsYXkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NhbXBsZXMvY2FwdHVyZV9yZXBsYXkvQ2FwdHVyZVJlcGxheS5jcHAKQEAgLTksNiArOSw4
IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCisjaW5jbHVkZSAidXRpbC9mcmFtZV9jYXB0
dXJlX3V0aWxzLmgiCisKICNkZWZpbmUgQU5HTEVfTUFDUk9fU1RSSU5HSVpFX0FVWChhKSAjYQog
I2RlZmluZSBBTkdMRV9NQUNST19TVFJJTkdJWkUoYSkgQU5HTEVfTUFDUk9fU1RSSU5HSVpFX0FV
WChhKQogI2RlZmluZSBBTkdMRV9NQUNST19DT05DQVRfQVVYKGEsIGIpIGEjI2IKQEAgLTM5LDYg
KzQxLDEwIEBAIGNsYXNzIENhcHR1cmVSZXBsYXlTYW1wbGUgOiBwdWJsaWMgU2FtcGxlQXBwbGlj
YXRpb24KICAgICAgICAgc3RkOjpzdHJpbmcgZXhlRGlyID0gYW5nbGU6OkdldEV4ZWN1dGFibGVE
aXJlY3RvcnkoKTsKICAgICAgICAgaWYgKCFhbmdsZTo6U2V0Q1dEKGV4ZURpci5jX3N0cigpKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGtJc0JpbmFyeURhdGFDb21w
cmVzc2VkKQorICAgICAgICB7CisgICAgICAgICAgICBTZXRCaW5hcnlEYXRhRGVjb21wcmVzc0Nh
bGxiYWNrKGFuZ2xlOjpEZWNvbXByZXNzQmluYXJ5RGF0YSk7CisgICAgICAgIH0KICAgICAgICAg
U2V0QmluYXJ5RGF0YURpcihBTkdMRV9DQVBUVVJFX1JFUExBWV9TQU1QTEVfREFUQV9ESVIpOwog
ICAgICAgICBTZXR1cENvbnRleHRSZXBsYXkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc2FtcGxlcy9tdWx0aXBsZV9kcmF3X2J1ZmZlcnMvTXVsdGlwbGVEcmF3QnVm
ZmVycy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zYW1wbGVzL211bHRpcGxlX2RyYXdf
YnVmZmVycy9NdWx0aXBsZURyYXdCdWZmZXJzLmNwcAppbmRleCBjMTIzMWMzMWIwMTY2ZGFmNjdh
M2MzODBhNjhhOWY3MTU0N2ZhNWYyLi4zMmE1ZGExOWM3OGIzNTEwMmNkNTRhZmMyYjlhYjg1MmIx
MmQxOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zYW1wbGVzL211bHRp
cGxlX2RyYXdfYnVmZmVycy9NdWx0aXBsZURyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zYW1wbGVzL211bHRpcGxlX2RyYXdfYnVmZmVycy9NdWx0aXBsZURyYXdC
dWZmZXJzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBNdWx0aXBsZURyYXdCdWZmZXJzU2Ft
cGxlIDogcHVibGljIFNhbXBsZUFwcGxpY2F0aW9uCiAgICAgICAgIGZzU3RyZWFtIDw8IGFuZ2xl
OjpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkgPDwgIi9tdWx0aXBsZV9kcmF3X2J1ZmZlcnNfZnMu
Z2xzbCI7CiAKICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gY29weUZzU3RyZWFtOwotICAgICAg
ICBmc1N0cmVhbSA8PCBhbmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpIDw8ICIvbXVsdGlw
bGVfZHJhd19idWZmZXJzX2NvcHlfZnMuZ2xzbCI7CisgICAgICAgIGNvcHlGc1N0cmVhbSA8PCBh
bmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpIDw8ICIvbXVsdGlwbGVfZHJhd19idWZmZXJz
X2NvcHlfZnMuZ2xzbCI7CiAKICAgICAgICAgbU1SVFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbUZy
b21GaWxlcyh2c1N0cmVhbS5zdHIoKSwgZnNTdHJlYW0uc3RyKCkpOwogICAgICAgICBpZiAoIW1N
UlRQcm9ncmFtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9j
b2RlX2dlbmVyYXRpb25faGFzaGVzL0FOR0xFX2Zvcm1hdC5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0FOR0xFX2Zvcm1hdC5qc29u
CmluZGV4IGJkNDkxYTJiZmZmMTliYTgwYzdhMTk2NzU5Mzc1OTk3MTFmMmQwNDguLjAxMzkxNTQ4
MjNmOGNkODEyNzFkODg3ZmUxYmRmZTQ0NTAzODRlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9BTkdMRV9mb3JtYXQu
anNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlv
bl9oYXNoZXMvQU5HTEVfZm9ybWF0Lmpzb24KQEAgLTEsMTQgKzEsMTQgQEAKIHsKICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRJRF9hdXRvZ2VuLmgiOgotICAgICI2ZGY0NjMyYzI5MDg3
NTE2MzUzOTZhMDczYzIwNmRhNiIsCisgICAgIjI0ZmRjZTQwNzJkN2Y5ZTc2MzM3ZmZiZTRjNThi
NGFiIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAi
OgotICAgICI2OWQ1MzI1ZjVhNzFhZjRkN2E1MDE3YjBhODU3NDNhNCIsCisgICAgIjg5NGVhYTE1
MDk0OWQzMmM1NjNlOTQwMjQzMTIyOTVkIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmds
ZV9mb3JtYXQucHkiOgogICAgICIzMmJhNzE5NDJjMGZkMDBlNjgwNzEwNGYxYmI4MGEzYyIsCiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X2RhdGEuanNvbiI6Ci0gICAgImIw
YzM5ODI3YzM2OTQxYTI4M2Y2NzkzNDVmZWE2ZDNlIiwKKyAgICAiYjhiZmU0NzBjMzFiMTJiMjdm
M2EyYmRiMDI4OGU0YmUiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9t
YXAuanNvbiI6Ci0gICAgImJjYTVlNjg2MDAxZjZkZDBhZjMwNmFmMjM0YTM2Njc3IiwKKyAgICAi
ZmFkNTgxMTc2NTdiNmJkZTk0ODhhMTBkMzU4NzJkNDUiLAogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkiOgogICAgICI4ZTM0OWE2NDNlODFhMDI4ZWJi
NTRiZGUzNzU2ZjlmNyIKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMv
QU5HTEVfbG9hZF9mdW5jdGlvbnNfdGFibGUuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9BTkdMRV9sb2FkX2Z1bmN0aW9uc190YWJs
ZS5qc29uCmluZGV4IGIwYzE5MjU4YzJlMTc1NmZjZWIxNjE2ODJmNGU3MTMzZTc0YTJjMTkuLmFm
Nzg3NmUyYjFhNDkxODE2MmVlY2Q5N2JkYjhlYTZmMWFkMTI5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9BTkdMRV9s
b2FkX2Z1bmN0aW9uc190YWJsZS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Nj
cmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9BTkdMRV9sb2FkX2Z1bmN0aW9uc190YWJsZS5q
c29uCkBAIC00LDcgKzQsNyBAQAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dlbl9sb2FkX2Z1
bmN0aW9uc190YWJsZS5weSI6CiAgICAgIjliNGVhNmJjYjRlYjRjNDNmNDhhMDk3YTllYzkyMGYx
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24iOgot
ICAgICI5YzRmOGZmNWVmNmNhYjdiMjJmZTc2YmNlNjQzZmFkZCIsCisgICAgIjdkZjY0YTU0ODFm
NTVmMzA5NmFmZjExNjQ5ZDk5OTJkIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1
bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcCI6Ci0gICAgIjJjY2NhZDYzNWJiYTM0YThlMmVlN2Vm
MjZjMTM2NDlmIgorICAgICI4MjY1OGUwNWExMDE5Mzc1NTAxMDc2YzQwNDNkNmY4MiIKIH0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvRDNEMTFfZm9ybWF0Lmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvRDNE
MTFfZm9ybWF0Lmpzb24KaW5kZXggNTM2ZjIyNzg4NjRlZGVkZGJjYTVmNDZmMGQ3ZmQ1ZWVmZTdj
NmJlNS4uZDVmNjUxZmI3MGVkNjAyMDhhODMxZmIzMzYyOGVkYWJiYzhjNzYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVz
L0QzRDExX2Zvcm1hdC5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EM0QxMV9mb3JtYXQuanNvbgpAQCAtNCw5ICs0LDkgQEAK
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX3RleHR1cmVfZm9ybWF0X3Rh
YmxlLnB5IjoKICAgICAiYmYxMWUzNDA0ZDQ2MjIwNTliNmU5YzRlOTZhYmY5NWUiLAogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24iOgot
ICAgICJkNzQ4M2VjZTgxN2U4MTk1ODhmNGNhMTU3NzE2ZGM3YiIsCisgICAgImM4MDcwOGMxODM0
OGZkODlhM2I5MThlNThlNzRjMWY4IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvdGV4dHVyZV9mb3JtYXRfbWFwLmpzb24iOgogICAgICJlOWRmYmQ1MWZmMTgzODA5ZjU5NWY4
ZmM1ZGI5YzIxNyIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVf
Zm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwIjoKLSAgICAiMDNkMmI4NWRiMjhkZTVjOTRmMWUzOGQy
ZWQ0ZWUzODUiCisgICAgImY0ODg2NDE1OWMzYTFmZTZjYTc1NjdlM2ViODIxNWZiIgogfQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1hdC5qc29uIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0RYR0lf
Zm9ybWF0Lmpzb24KaW5kZXggODgwYjAwZWZlM2VmOTM2ZWFjODVmNDIwNTJkM2M4ZTg3ZDAzOWQz
NC4uMTJlZjg0ZTJkYzYzNTlkYzBhMWUyMWFhYmRlOTM5YTNlNzY4ZjA1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0RY
R0lfZm9ybWF0Lmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2Rl
X2dlbmVyYXRpb25faGFzaGVzL0RYR0lfZm9ybWF0Lmpzb24KQEAgLTIsMTEgKzIsMTEgQEAKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkiOgogICAgICIzMmJhNzE5NDJj
MGZkMDBlNjgwNzEwNGYxYmI4MGEzYyIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVf
Zm9ybWF0X21hcC5qc29uIjoKLSAgICAiYmNhNWU2ODYwMDFmNmRkMGFmMzA2YWYyMzRhMzY2Nzci
LAorICAgICJmYWQ1ODExNzY1N2I2YmRlOTQ4OGExMGQzNTg3MmQ0NSIsCiAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbiI6Ci0gICAgIjI0ZjUy
NWIwNWRjNjY1ZmJiYzhjNmQ2OGZiODYzNzE5IiwKKyAgICAiMzQyOGU0NzYxY2NkMDVmOTYwYWRm
ZmQ2Y2NiZDg2YzUiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zv
cm1hdF9tYXBfYXV0b2dlbi5jcHAiOgotICAgICIzMmI5ODYwZTNmZDhlODdhODlmZjlhMDllODQ4
ZTUxNiIsCisgICAgIjk3NDMwOGNhNzk4NDc2ZGZhYTA3NmZiODY0NDc4MzEwIiwKICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfZm9ybWF0X3RhYmxlLnB5IjoKICAg
ICAiNDExZTYwNjRiOTE2ZDU3MGZhNzY5NDk4MjBkMzRhNDUiCiB9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9j
b2RlX2dlbmVyYXRpb25faGFzaGVzL0RYR0lfZm9ybWF0X3N1cHBvcnQuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9EWEdJX2Zvcm1h
dF9zdXBwb3J0Lmpzb24KaW5kZXggYzI5ODQyZmVhYjBiZTNhMjBlZjJlN2UwMDE5YWJmMWZhMjBk
ZjgzMy4uODViNzBlMzdkNTM3YWVhMWViMDFkMGI3Mjc1N2U0MDMzNGZlOGY2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVz
L0RYR0lfZm9ybWF0X3N1cHBvcnQuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
Y3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvRFhHSV9mb3JtYXRfc3VwcG9ydC5qc29uCkBA
IC0xLDggKzEsOCBAQAogewogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdp
X3N1cHBvcnRfZGF0YS5qc29uIjoKLSAgICAiMDkxOTUwNTNmODgyOWZjODFlZmUwODIyOWI1NGE4
YjUiLAorICAgICI4NjEwMzdmZjIzNDBkZDUyZTcxM2M3YjcyODM2MDliZCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZV9hdXRvZ2VuLmNwcCI6
Ci0gICAgIjdlYzMyY2UwYWQ0MTQ1MGJlNzQ5M2MxZGIxMTMwZTI1IiwKKyAgICAiM2YzMmVhYmU0
MzYwZTM1ZDA3NjI2NWE2YTE0ZDlhYTUiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9nZW5fZHhnaV9zdXBwb3J0X3RhYmxlcy5weSI6CiAgICAgImI0NjRmMTUzZjE1ZDYwZGYx
YzY1MzZhZGJmYWZiMDcyIgogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hl
cy9HTF9DVFNfKGRFUVApX2J1aWxkX2ZpbGVzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfQ1RTXyhkRVFQKV9idWlsZF9maWxl
cy5qc29uCmluZGV4IDU4ZmQ1NDhhYmM0ZWNhNDVhNTBkNmVjNDc3MmQ2ZjQ5MWQ4YzZlZjUuLjhl
ZTE2YjdlODQ0M2VmMmU4YWY2ZTI0YTczZGVmNWFkN2NjZGE4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9DVFNf
KGRFUVApX2J1aWxkX2ZpbGVzLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2Ny
aXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX0NUU18oZEVRUClfYnVpbGRfZmlsZXMuanNv
bgpAQCAtMiw3ICsyLDcgQEAKICAgInNjcmlwdHMvZ2VuX3ZrX2dsX2N0c19idWlsZC5weSI6CiAg
ICAgIjUxZDczZjVkZGE2Y2QwYWZhYzJiMjQxYmY5NTgwNWRkIiwKICAgInNyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvQlVJTEQuZ24iOgotICAgICJhYWM5ZmQ2NDEwN2NjY2RkMGYzZDQ3ZDM3OTc0YmE2
NyIsCisgICAgIjg2MGNjOWI3MjhkYzM1NDU0YjBkNTI3NjUxY2M0N2RlIiwKICAgInNyYy90ZXN0
cy9kZXFwX3N1cHBvcnQvZGVxcF9kYXRhX2F1dG9nZW4uZ25pIjoKICAgICAiM2E3NGU5ZTQwNGE5
YjFhNGZmMWE3OGQ4YTY0MGM0NzIiLAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9DTWFr
ZUxpc3RzLnR4dCI6CkBAIC00Miw5ICs0Miw5IEBACiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMv
c3JjL2V4dGVybmFsL3NwaXJ2LXRvb2xzL0NNYWtlTGlzdHMudHh0IjoKICAgICAiY2NhOGI0Yjk4
NGM0MGFmYjk4ODBkMTc3ZDUzNjIzYTEiLAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9l
eHRlcm5hbC92dWxrYW5jdHMvZnJhbWV3b3JrL3Z1bGthbi9DTWFrZUxpc3RzLnR4dCI6Ci0gICAg
IjIyNjMzMTcwZDE2MTBiOTFiYWQ3NjI0YmQ0MmNlYjgzIiwKKyAgICAiMjYwYjJhMWZmYjEzNjll
OTk3Y2RlNjE5NTZkOTczYmEiLAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5h
bC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vQ01ha2VMaXN0cy50eHQiOgotICAgICIwNWUwNDg0
MWY2NTEyMjk3ZjQ5YzlkNjQyNjQ5ZjQyMSIsCisgICAgIjU4YTBmNTU2ZGIzNTY3MDBjZmJmOTMz
OTZmYzliZTc0IiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2Fu
Y3RzL21vZHVsZXMvdnVsa2FuL2FtYmVyL0NNYWtlTGlzdHMudHh0IjoKICAgICAiODZjYjAzYTc3
MWQ1YzBhNTdhNmUwZGJiMzA1YzJhYmEiLAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9l
eHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vYXBpL0NNYWtlTGlzdHMudHh0IjoKQEAg
LTgyLDcgKzgyLDcgQEAKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVs
a2FuY3RzL21vZHVsZXMvdnVsa2FuL211bHRpdmlldy9DTWFrZUxpc3RzLnR4dCI6CiAgICAgIjE2
YTM0MWU0ZjA4ZTg1YWRhZDZkYmYwMzA5ODgzZjViIiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNU
Uy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3RzL21vZHVsZXMvdnVsa2FuL3BpcGVsaW5lL0NNYWtlTGlz
dHMudHh0IjoKLSAgICAiNzNhMWZmOGFhMDg5MmZmNmY4NmI0NmZlYjMzZDNkYTAiLAorICAgICIw
NmY3Yzg0ZWE2YjgwZTliY2I4ZDdkZjUwOTQ2ZDgyNyIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1D
VFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9wcm90ZWN0ZWRfbWVtb3J5
L0NNYWtlTGlzdHMudHh0IjoKICAgICAiNjIzODlhNDU3ZmE3OWZmMDkzMTdiNzQ1ZTBjMmY0YWEi
LAogICAidGhpcmRfcGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxl
cy92dWxrYW4vcXVlcnlfcG9vbC9DTWFrZUxpc3RzLnR4dCI6CkBAIC05MCwxNyArOTAsMTcgQEAK
ICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3RzL21vZHVsZXMv
dnVsa2FuL3Jhc3Rlcml6YXRpb24vQ01ha2VMaXN0cy50eHQiOgogICAgICI3MjQ0Y2MzMWUwOTQ0
MjZiNDQ1NDBjNTdhMDE3YmVhYSIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjL2V4dGVy
bmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9yZW5kZXJwYXNzL0NNYWtlTGlzdHMudHh0IjoK
LSAgICAiNzg1YzYxNjNmODJiZTE1YmEwMTFiY2I0ZTQ4MTdiOGEiLAorICAgICIxNTQyNTRlYzlk
MjExMjRhM2VmNDZhZDllNWNiMTgyOSIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjL2V4
dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9yb2J1c3RuZXNzL0NNYWtlTGlzdHMudHh0
IjoKICAgICAiZDBkNTI0NTg3ZTMwODM3MDJjZmU3OTY0M2U5ZDgyN2IiLAogICAidGhpcmRfcGFy
dHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vc2hhZGVy
ZXhlY3V0b3IvQ01ha2VMaXN0cy50eHQiOgogICAgICIwNWQzMTQwOTFhM2VhMjYwOTU4NzVjZDg2
MGJkMDNjYSIsCiAgICJ0aGlyZF9wYXJ0eS9WSy1HTC1DVFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0
cy9tb2R1bGVzL3Z1bGthbi9zaGFkZXJyZW5kZXIvQ01ha2VMaXN0cy50eHQiOgotICAgICIwZWZl
MTRiZjE1Yzk2OTk3YzU1ZGY1MGZjMjk4OThjMSIsCisgICAgImE0M2MxZTI2MjYzZjA1MDE1NWQ5
Yjc0NDExYjM5MzFjIiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVs
a2FuY3RzL21vZHVsZXMvdnVsa2FuL3NwYXJzZV9yZXNvdXJjZXMvQ01ha2VMaXN0cy50eHQiOgog
ICAgICJiZmFmMDcwMDkzZDU2M2U0ZGM5MmVjNzJkM2UyMGQ5NyIsCiAgICJ0aGlyZF9wYXJ0eS9W
Sy1HTC1DVFMvc3JjL2V4dGVybmFsL3Z1bGthbmN0cy9tb2R1bGVzL3Z1bGthbi9zcGlydl9hc3Nl
bWJseS9DTWFrZUxpc3RzLnR4dCI6Ci0gICAgIjBjOTk3YTI1Y2JkZjhmMDliMmE2MTliMzI2OWYw
ZDE1IiwKKyAgICAiYzhhMzYwOWU2YTNiMzgxM2JjZDViZWY2ZDU3NmNkZWMiLAogICAidGhpcmRf
cGFydHkvVkstR0wtQ1RTL3NyYy9leHRlcm5hbC92dWxrYW5jdHMvbW9kdWxlcy92dWxrYW4vc3Ni
by9DTWFrZUxpc3RzLnR4dCI6CiAgICAgIjk1N2I3YzQ1ZDk0ZDY1MjYwNzgzM2FlYjAwNzEzMmM1
IiwKICAgInRoaXJkX3BhcnR5L1ZLLUdMLUNUUy9zcmMvZXh0ZXJuYWwvdnVsa2FuY3RzL21vZHVs
ZXMvdnVsa2FuL3N1Ymdyb3Vwcy9DTWFrZUxpc3RzLnR4dCI6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfRUdMX1dH
TF9sb2FkZXIuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5l
cmF0aW9uX2hhc2hlcy9HTF9FR0xfV0dMX2xvYWRlci5qc29uCmluZGV4IGM5ZGFmNjRiOGYxZDcw
NWY4NThmOTQ1YmQ3YmRlMWVlM2NjMTRmMGIuLjJiOTJkZTg5M2M5ZWRhYTliZjQ5MmI3YzZiNmJh
Yzk1YWU1YjhiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMv
Y29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9FR0xfV0dMX2xvYWRlci5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9FR0xf
V0dMX2xvYWRlci5qc29uCkBAIC00LDkgKzQsMTMgQEAKICAgInNjcmlwdHMvZWdsX2FuZ2xlX2V4
dC54bWwiOgogICAgICI2M2YxOGRjOWI3MTgzZWFkNGRkZDNkZmQxNTcxOTczYSIsCiAgICJzY3Jp
cHRzL2dlbmVyYXRlX2xvYWRlci5weSI6Ci0gICAgIjQ4YzYwYzY2OGJlYzQyYTgwMzc4MTc5YWFl
MmFjYzYxIiwKKyAgICAiNzkyYzQxZDdhZTkzYTQ1MThmMGM3M2U0NTYyNmQxOWIiLAorICAic2Ny
aXB0cy9nbC54bWwiOgorICAgICJlNzRhNTk1MDY4Y2JkZDYwNjQzMDBiZTFlNzFiN2NjOSIsCisg
ICJzY3JpcHRzL2dsX2FuZ2xlX2V4dC54bWwiOgorICAgICIwNzljYzQ4MjlkZTdjZTYzOGZhZjdi
YmY2NmUxNDFhZCIsCiAgICJzY3JpcHRzL3JlZ2lzdHJ5X3htbC5weSI6Ci0gICAgIjQ2N2FlMWE5
OTg4MDQ5YTQyOWQ4MjAyZTVkMmNmNzNjIiwKKyAgICAiMDZjODM3YjM5NWM4Y2QwYzRmYzkzN2Ix
OTMzNjUwNDIiLAogICAic2NyaXB0cy93Z2wueG1sIjoKICAgICAiYWE5NjQxOWM1ODJhZjJmNjY3
MzQzMGUyODQ3NjkzZjQiLAogICAic3JjL2xpYkVHTC9lZ2xfbG9hZGVyX2F1dG9nZW4uY3BwIjoK
QEAgLTE4LDkgKzIyLDkgQEAKICAgInV0aWwvZWdsX2xvYWRlcl9hdXRvZ2VuLmgiOgogICAgICI1
NWI1NDA3MWU2MWIzZTdiZWFiMjgxNzhkYzIwZmQyOCIsCiAgICJ1dGlsL2dsZXNfbG9hZGVyX2F1
dG9nZW4uY3BwIjoKLSAgICAiNmU1YzljMjA2NzdmYjA5NTdjODRmY2M5MDlmMDc0OTYiLAorICAg
ICJiNzNmYTg2MzEyYTcxYzc2ZjZhODQwMjU0OGQyMTIwNCIsCiAgICJ1dGlsL2dsZXNfbG9hZGVy
X2F1dG9nZW4uaCI6Ci0gICAgIjExYzQwMDViOGU4NzI5MzUzMDM3ZTNhNmJkNGU4YTcwIiwKKyAg
ICAiZjVkZjk0ZDM1NGRiMGQyNjI3NWIxODI4ZjQwODM2MzMiLAogICAidXRpbC93aW5kb3dzL3dn
bF9sb2FkZXJfYXV0b2dlbi5jcHAiOgogICAgICJjMGQ5YTY1ZWFhOWFhYzM1NmM2ZmQzZjg4NjM4
ZDJiZSIsCiAgICJ1dGlsL3dpbmRvd3Mvd2dsX2xvYWRlcl9hdXRvZ2VuLmgiOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVz
L0dMX0VHTF9lbnRyeV9wb2ludHMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Njcmlw
dHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9FR0xfZW50cnlfcG9pbnRzLmpzb24KaW5kZXgg
NjhmNjczOWNlYzM2NDExYWY0MDM3OTRkMDM2ZTMxMDNjNGI2ZmJlZS4uMzY2NGVkN2IwZDU0OTM2
OWZiNDNkOThkNTI2ZGMxNjlmZjM5ODExZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL0dMX0VHTF9lbnRyeV9wb2ludHMu
anNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlv
bl9oYXNoZXMvR0xfRUdMX2VudHJ5X3BvaW50cy5qc29uCkBAIC00LDE5ICs0LDE5IEBACiAgICJz
Y3JpcHRzL2VnbF9hbmdsZV9leHQueG1sIjoKICAgICAiNjNmMThkYzliNzE4M2VhZDRkZGQzZGZk
MTU3MTk3M2EiLAogICAic2NyaXB0cy9lbnRyeV9wb2ludF9wYWNrZWRfZ2xfZW51bXMuanNvbiI6
Ci0gICAgImJjZjk3ZjE2ZmQ0Y2Q0ZDRlNTBkNjY2MjI5ODJlNjdlIiwKKyAgICAiNjNmNTA4YTA4
NjExZTc1ODEwZGFlZGIyOTdkY2EwZTkiLAogICAic2NyaXB0cy9nZW5lcmF0ZV9lbnRyeV9wb2lu
dHMucHkiOgotICAgICIzNmY4OWY1NTE0ZmZmMjdlY2I0YmFlZGVkODlhZTY0ZCIsCisgICAgImUx
MjU0MDA5NGI3ZjU3Nzc4ZGU5N2IwNWMxNmQyZTI4IiwKICAgInNjcmlwdHMvZ2wueG1sIjoKLSAg
ICAiYzRhMzIxM2U2MDZkODQ0ZTgxMjg4M2ZkNzI5YzRmZDMiLAorICAgICJlNzRhNTk1MDY4Y2Jk
ZDYwNjQzMDBiZTFlNzFiN2NjOSIsCiAgICJzY3JpcHRzL2dsX2FuZ2xlX2V4dC54bWwiOgotICAg
ICJkNjkwN2NkODRkOTVhYzBiMzJhMTY0MTk0ZWFkY2Y1MyIsCisgICAgIjA3OWNjNDgyOWRlN2Nl
NjM4ZmFmN2JiZjY2ZTE0MWFkIiwKICAgInNjcmlwdHMvcmVnaXN0cnlfeG1sLnB5IjoKLSAgICAi
NDY3YWUxYTk5ODgwNDlhNDI5ZDgyMDJlNWQyY2Y3M2MiLAorICAgICIwNmM4MzdiMzk1YzhjZDBj
NGZjOTM3YjE5MzM2NTA0MiIsCiAgICJzY3JpcHRzL3dnbC54bWwiOgogICAgICJhYTk2NDE5YzU4
MmFmMmY2NjczNDMwZTI4NDc2OTNmNCIsCiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbF8xXzBf
YXV0b2dlbi5oIjoKLSAgICAiZjJkZDVmYjg4MGNhNDdmZjFlNTU1OGE5NWE4ZmY0MDciLAorICAg
ICJmYTMxNWVlYTY2ODg5NTMwZGNjYTMxMWQ5MDQ5MGQzYiIsCiAgICJzcmMvbGliQU5HTEUvQ29u
dGV4dF9nbF8xXzFfYXV0b2dlbi5oIjoKICAgICAiODRlNGJkOGYxM2FlODI3NGFlOTA3MmQ3NjFh
ZmQwNDMiLAogICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfMV8yX2F1dG9nZW4uaCI6CkBAIC00
MCw5ICs0MCw5IEBACiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbF8zXzNfYXV0b2dlbi5oIjoK
ICAgICAiNmU4ZDc3NmU5NDg4M2FiMjU0YTVjMzdkYjEzMzA3NTQiLAogICAic3JjL2xpYkFOR0xF
L0NvbnRleHRfZ2xfNF8wX2F1dG9nZW4uaCI6Ci0gICAgImIyZjc1MzU4ZmMzODQ1MDI2ZDY3MGU0
YWY0ODA5Njg4IiwKKyAgICAiMjIyNjdlNDJiMTZhNDhmMjFkYWRmZmY1NjVkMmE2ZjMiLAogICAi
c3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfNF8xX2F1dG9nZW4uaCI6Ci0gICAgIjQzMjU4MGY3OTg1
MzdhNWNlNzdjNTdhMDc1NzQ4Y2UxIiwKKyAgICAiZmUxZTkyOGQyN2VjMTY2YTUwN2Q0YTU5YTg1
YzE5NmMiLAogICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfNF8yX2F1dG9nZW4uaCI6CiAgICAg
IjZhNzdkNTA3YWYwNDU0ODAyMjAxY2E1NTNmMDZjYzBiIiwKICAgInNyYy9saWJBTkdMRS9Db250
ZXh0X2dsXzRfM19hdXRvZ2VuLmgiOgpAQCAtNTAsMTc5ICs1MCwxNzkgQEAKICAgInNyYy9saWJB
TkdMRS9Db250ZXh0X2dsXzRfNF9hdXRvZ2VuLmgiOgogICAgICIyN2IwNGQ4ZDNiMWY3YTI4MDRk
NDliODU2MjdlNzhhOSIsCiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzVfYXV0b2dlbi5o
IjoKLSAgICAiNWZjYTNkNDM3M2VhZTJjZjkzMGMzM2M0NzlkNzE5ZTYiLAorICAgICJmMDZlMTAy
YzE2MWIyODA0Y2FhYTk0MzAyN2YxNTdhZCIsCiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbF80
XzZfYXV0b2dlbi5oIjoKICAgICAiNzM4ZTM0NDkxOWQ5YTg2N2U4ODIzY2JmNTJkMTAzOTQiLAog
ICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18xXzBfYXV0b2dlbi5oIjoKICAgICAiNTFmY2U5
NWFjYmY4ZGU3MmQyMTI1NWFkYmJlMGU4Y2QiLAogICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xl
c18yXzBfYXV0b2dlbi5oIjoKLSAgICAiYWFkZDhlOTExMjA0MTc0NWNjZmMzNGZjOWI3ZGRjZGQi
LAorICAgICI0NDNkMDBkNDVkZTE0N2QxZDFlM2I2Njg0NmVhMGMyOSIsCiAgICJzcmMvbGliQU5H
TEUvQ29udGV4dF9nbGVzXzNfMF9hdXRvZ2VuLmgiOgotICAgICI2ZGYwNDYxZjI4MWJiMjEwYTQ5
ZWI1ZWRlZDJmZjNhNiIsCisgICAgImZlNjFjMmM4MjE4MTZkOTU2MWRjYjRmZTFmZWY3NGU1IiwK
ICAgInNyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfM18xX2F1dG9nZW4uaCI6Ci0gICAgImZmNjg5
NTEzMDg2NDBjMjlhY2FiNzhlMGNhYTMxMmYwIiwKKyAgICAiYmI4MTk4NDIyMjMyY2E5Y2VhYTA2
YTVkMzdjM2NkOTIiLAogICAic3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzJfYXV0b2dlbi5o
IjoKLSAgICAiOGFiNDU3NmQ3MzdkNDZlMmVlNjY2YzI2YzAxYWU2MDgiLAorICAgICJlMjZmN2Vl
N2I1OWE4OWE0ZjUzMzcxNzE4MTZiODMzNiIsCiAgICJzcmMvbGliQU5HTEUvQ29udGV4dF9nbGVz
X2V4dF9hdXRvZ2VuLmgiOgotICAgICJkMDllZjk3MzM4YWYxZDVkMjY4MzZkMDhiZjljZjk4MiIs
CisgICAgIjU3MjAwNmZhNDQ5M2E5MDFlODc5ZjZkZjNjYjRlZWU4IiwKICAgInNyYy9saWJBTkdM
RS9jYXB0dXJlX2dsZXNfMV8wX2F1dG9nZW4uY3BwIjoKICAgICAiOTZmYzBmNTAxZTJlNjk2YWI5
MTFkYWQ4YjQwMGRmYjIiLAogICAic3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18xXzBfYXV0b2dl
bi5oIjoKICAgICAiNTQ2MTczMDkwYzg1YWQyOGE1ODBjYTc2Y2QxMTc0ODQiLAogICAic3JjL2xp
YkFOR0xFL2NhcHR1cmVfZ2xlc18yXzBfYXV0b2dlbi5jcHAiOgotICAgICJhNjM4ZDk1MDk4ZDk0
ZGRlM2FmNzY3ZWRhYTczMWUxMSIsCisgICAgIjllNDc1NDJmNTBiMjk1ODFmNWZjYWY1YTY5ZjZi
NTE4IiwKICAgInNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX2F1dG9nZW4uaCI6Ci0gICAg
IjFkNWY4YjhkMjgxYzBiYTgwZWNjZDBiZTA1OTBlYTE3IiwKKyAgICAiNjk4NWQ1ZTNkMDEyNmJj
OGUwMmRkOTgyMjY3YTkwNGYiLAogICAic3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzBfYXV0
b2dlbi5jcHAiOgotICAgICIxMDljMDhiYjIyNDdlNWUyOTNjMWJiNTI1OWJkOTcyNCIsCisgICAg
ImExMmM5NDcwNTY5YjlkMWQ2M2FiMGI4YmU5MTAwNTVmIiwKICAgInNyYy9saWJBTkdMRS9jYXB0
dXJlX2dsZXNfM18wX2F1dG9nZW4uaCI6Ci0gICAgIjA5Y2I4Mjg2YTE2ZDNmYzIyNTVjYjlkY2Mw
YzE2MjM2IiwKKyAgICAiYjk2M2ZlYzA3MGUwYmVjZGNmNGFmNjkyMTZjZDFjN2IiLAogICAic3Jj
L2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzFfYXV0b2dlbi5jcHAiOgotICAgICI5MmMzYzlmN2I2
MmM5MzdmZDM1OTVjMmExZDFhOWNlMCIsCisgICAgImM3YzRlZTBmY2ViYzliZDE5ZjhmNGE0OThm
OTM1YWMxIiwKICAgInNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4uaCI6Ci0g
ICAgIjNhZDAxNmRlMmFhZDkwOTVhZDU3MDczYWEwZmM5ZjlmIiwKKyAgICAiM2QzNjNmNGRlOTdi
NDdlY2ZmNjFlMjk5MzlkY2YxMWEiLAogICAic3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJf
YXV0b2dlbi5jcHAiOgotICAgICI5MzlkZmNhMWI0MjNiNTZjYzc0MjYwZGM2MjNlYjBmNSIsCisg
ICAgImYzNDk3YTYzZDI3YTMwYjlhMTBmZmZmZDRjMjVjMDIzIiwKICAgInNyYy9saWJBTkdMRS9j
YXB0dXJlX2dsZXNfM18yX2F1dG9nZW4uaCI6Ci0gICAgImE3ZmE5NTFlOTI5NmU5MjdjZDliYjE5
N2M1MWRjOWEyIiwKKyAgICAiMmZiY2E3MTY4NTQxYzJlOWZmOGEwNTVjMjU2Zjg1MzEiLAogICAi
c3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5jcHAiOgotICAgICJlMjQxMzBi
NzhjNTZkZDM2MjU4N2JiOWUyN2ZjYWVlZSIsCisgICAgIjk2Y2I1MDQzZWJmY2UzNDljODllY2Uz
YWZlYzZkOWY4IiwKICAgInNyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9nZW4uaCI6
Ci0gICAgIjY3N2I1OGMxMTJjMDA5ZmY0MjI4MzlhNDAyNWNkYzgzIiwKKyAgICAiNWQ5YzczNmEz
Nzk2MTVkMDBmOTc1MWY0ZmVkNzFkMjQiLAogICAic3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50c19l
bnVtX2F1dG9nZW4uY3BwIjoKLSAgICAiMDg4MTU2MmRlMWI2MjRjNzNlOWUwYmRhOWZiODQzYjUi
LAorICAgICI2NmYwOWQ0ZjllNmY4ZTgzZjJmNmYwY2Y4ZmMzZjNkOSIsCiAgICJzcmMvbGliQU5H
TEUvZW50cnlfcG9pbnRzX2VudW1fYXV0b2dlbi5oIjoKLSAgICAiNDRjNWJkMzBlN2ZkMGRhNTVi
ODA1YjllYTA0MDlhYzQiLAorICAgICI4NzIwNjk1OThlNjdjMzU4ZWU0Y2JiMTQyNjBkMjhiZiIs
CiAgICJzcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV9yZXBsYXlfYXV0b2dlbi5jcHAiOgotICAg
ICJiYzNkYzgxZDUxNmU1ZWIzYTMzMWI0MTAyZDQ1ZjJhMyIsCisgICAgImMwZDU3NzA0YzIxZTAw
MzJhNDg2YTYxOTVkZGI4N2U0IiwKICAgInNyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3V0aWxz
X2F1dG9nZW4uY3BwIjoKLSAgICAiMzJmMDU1ZWYwNjM4NTZmN2FjOGQ3ZDI5MmVkYTVhNzUiLAor
ICAgICI3YTRmMTZhOTY3MTRlNDNmYWFhMGJlZjI5OWFkNzAyOCIsCiAgICJzcmMvbGliQU5HTEUv
ZnJhbWVfY2FwdHVyZV91dGlsc19hdXRvZ2VuLmgiOgotICAgICJhZWFhYzNiYmY1ODg4YjVjNjY2
M2U0ODhlZTNmZDM1ZSIsCisgICAgIjg2ZTM2OGJlOTA4M2ZhNTQyYTA4YzFjMTQzYzhiODdlIiwK
ICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMxX2F1dG9nZW4uaCI6Ci0gICAgIjIxMGZmMjhh
NGNmYTExZWY5ZTQ1MGVkZTBjYWJlNDhkIiwKKyAgICAiYzhlZGIwYTViMjYzMDNiZjdjNDY5MmI5
ZDBiMDVjMWYiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzJfYXV0b2dlbi5oIjoKLSAg
ICAiZjlmNDFmNmQ1ODIwZjVkZWJiMjlmZmZjNTE1Mzc2NjEiLAorICAgICIxZmM0YzcwMTdhZTU5
NDkxNjBhYzI1NjFlNmQyZTIyZSIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzFfYXV0
b2dlbi5oIjoKLSAgICAiMDZhNzE1OWExZDA2MDRjMDBiYmJjZWMyMmM4YmQxYzMiLAorICAgICJl
ZDkwNjZjYmY0MDZiNmY3ODJjMDU4MDE5ODk1YzY1ZSIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTMzJfYXV0b2dlbi5oIjoKLSAgICAiYjU3NzRjODVjNDdmM2JlMTg1MWM5NzAwNjIwNmFl
M2UiLAorICAgICI3YjRiNWY5Mzk4YTRjMDg4ZmVhYjhiYTJjNmJmYzAyNCIsCiAgICJzcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTM19hdXRvZ2VuLmgiOgotICAgICJmMmNkNGFjNGJlMDdhNWJmZWQ1
MWE0MTNlMjk2NzA2MCIsCisgICAgIjg2YmE1MDM4MzUzMjg0MzgxNThkOWE0NjQ5NDNmM2JkIiwK
ICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFRfYXV0b2dlbi5oIjoKLSAgICAiYjU2YTBm
MjIxODg0ZWQ0NmIzZTYzMWMzMDBmNjVmZDIiLAorICAgICI4NmFmOWYzMTVkMjhhMmFiNjYyNzhi
Nzk5MmFhZTQ0ZiIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTFfYXV0b2dlbi5oIjoK
LSAgICAiMDQzYTYwOTQwZGFhMTA1NzMwZTIxNjZmMGEyOTBlMmYiLAorICAgICJhYWRkMTQ1YzE0
MDRkZTljMzRkNmI3YzAwNDA0ZjEwZiIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTJf
YXV0b2dlbi5oIjoKICAgICAiODMwZDg0MGZjOGJiMzk1MTYxZTYzMGNjMTAxODE3OGIiLAogICAi
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEzX2F1dG9nZW4uaCI6Ci0gICAgIjYyOGQ5YmIwZmJm
MTBlMTE4Mzg1OGE4NTU0OWQwYTQxIiwKKyAgICAiMjdmMmU5YjQxYjhmMmVmNDMxMzEyYTE0OGE3
NTUzMWEiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0X2F1dG9nZW4uaCI6Ci0gICAg
ImFmZGQxMzQxYjkxMGU0YjI4NGU3NTMxMzNjMWFhZWEwIiwKKyAgICAiYmZlYTYyNWE4YmI4Yjhk
MWVlYjQxZWI4YWIzMGQ0YjQiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1X2F1dG9n
ZW4uaCI6Ci0gICAgIjhkYTYwNzkzNzA2NjQxZjk4YjMyMjZlYjdhMDQzZjNiIiwKKyAgICAiYThl
MjhiM2JmZTE2ZmM1OGY0ZTQwNGE3M2U1OTA0NjkiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDFfYXV0b2dlbi5oIjoKLSAgICAiMmFlMGEwMGYyYTMzMjI2NzdmZDk0MmJlNTk3YmIzMjUi
LAorICAgICIwNjAxOGI5ZDM3NDliYjY1ZjU5Y2FhNjk0MTc1ZGY5OCIsCiAgICJzcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkdMMjFfYXV0b2dlbi5oIjoKICAgICAiZThmYmNmNDE0OWQ5MzllYWMwMjll
YWI4N2Q3OGE2ZWEiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDJfYXV0b2dlbi5oIjoK
LSAgICAiYmY1ZmNhZTgyZDM3Y2FmOTgxZmZkYTA3NmJjNjVkMjIiLAorICAgICJkNDgzOGZmY2Ji
ZWM5NWU1OWNlMTM0YzVmYjIwM2RjMyIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzFf
YXV0b2dlbi5oIjoKLSAgICAiYmM2YzM4ZTc4YzdkNjk5MmE4ZmFhNmRkZTNjNzliMDEiLAorICAg
ICJkMzdkZjVlODdlNWE0M2MxNjk1NTRiY2ZmNTIyNWYyYyIsCiAgICJzcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkdMMzJfYXV0b2dlbi5oIjoKLSAgICAiNzNiMjVlZTQ3NTIxZTkyNWJlZTRmMDlkMTUw
NWU1MGEiLAorICAgICJiYTI4ODRhZGE2YTE1NzZhZjMzMjYyMWFmNjNmYWYwZiIsCiAgICJzcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMMzNfYXV0b2dlbi5oIjoKLSAgICAiYzkyYjUzMjhlZGU1YmQ1
MGM3ZTc0MGZmN2M4NDFjOGUiLAorICAgICIxOTJhZGViOTNkOTAzYzE2NmJmMzZjODQ3NDI4YTkw
MiIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMM19hdXRvZ2VuLmgiOgotICAgICI5Mzhm
MGRkNTIyZGRlMjlmZWU0Zjg3ZGNmZmQyZWZhNSIsCisgICAgIjdjZWZhYTllNTU2OGNiODZkZjAx
MzcxYWQ1MzkwYTI5IiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0MV9hdXRvZ2VuLmgi
OgotICAgICI2NTM5NWVkYzA2OWFlMzFmMzk0YjRmNzU4YWYyZTc1YyIsCisgICAgImY5MjAzMzg2
OGUyYTZlY2Y3MDdiNzMwYzcwZDQ0ZjJjIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0
Ml9hdXRvZ2VuLmgiOgotICAgICI0ZTBkNDdlYTIzNDg0YjJlNDI0YzJhOGVkOGQzNTBhZSIsCisg
ICAgIjliYmMzYmMxYTJiODljYTYyYmYyMTliYzE1OTAzZWM5IiwKICAgInNyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0w0M19hdXRvZ2VuLmgiOgotICAgICIwZGRlYTU0YjI0NWVlZjY3ZTE2ZTZlMDg3
YTY1YzgzNiIsCisgICAgIjBkMDVmOTg3M2NiNWM2NWIwYzY4YTYwNDIzZTljNzI0IiwKICAgInNy
Yy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NF9hdXRvZ2VuLmgiOgotICAgICJlMDgyNTc4NTg1MmFk
NjYwZmY2OGM1YmJmMGRmNjFmMyIsCisgICAgImVlODliZWMxYmY0ZWFiMzFiM2I2NTNjMGYxYTg4
ZDMzIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NV9hdXRvZ2VuLmgiOgotICAgICIw
MDNiOTczZjdjOTQwODIwNDZmYmYwZmMwODZlNTZkZSIsCisgICAgImEwYWY1MTA0ZjBkMzk0OWM5
ZDk0NTM4N2QxMWU2MzAyIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0Nl9hdXRvZ2Vu
LmgiOgotICAgICI5ZjhiNGU1ZmRlMjUxMzc2NDBjNWQ2YzQ1MDU4NmY3NiIsCisgICAgIjQ2Zjc0
YTNiMTlmZDdlMjQzZGRkNDdhNzQ3OGFlODE4IiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0w0X2F1dG9nZW4uaCI6Ci0gICAgIjcxYjEzYWMxNGY3NjU0YTE5Zjc2MDZjYjIzMzA5NTUxIiwK
KyAgICAiY2JlM2Y5MTcwMjRhOTNhM2FkY2JkMjgwNmYzZTk1MWYiLAogICAic3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8xXzBfYXV0b2dlbi5jcHAiOgotICAgICJiZGU0OTQ4ODIwMjcwMjY3YzM1
NWY4OGQ0YTI2NGMxMCIsCisgICAgImU5ODRlNjc1ZGFiOTYyNDIxNDYwOWZjODZmMTMzMGE4IiwK
ICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8wX2F1dG9nZW4uaCI6CiAgICAgIjRmZjAw
YWZjMjE3ODBiYzZjMTM4YjU0MzFhMmQwNjdjIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfMV8xX2F1dG9nZW4uY3BwIjoKLSAgICAiZjgzNTlhZjQ1MDBkY2RiN2UyMjZlZTQ3MjhjMmQx
MDIiLAorICAgICIyNTMyMDU4MDQ5MDVjMWU1YmY2NDIyYzFkZjYwNjA3OSIsCiAgICJzcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzFfMV9hdXRvZ2VuLmgiOgogICAgICI1NzBhODM5YmIzMzZkOGY1
ZjgzZDNiNTBmZTQ5NDExYSIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMl9hdXRv
Z2VuLmNwcCI6Ci0gICAgIjFhMTI3MjU5ODUzMmYzN2FkOTAxMjIxOWY4OTJkNWE1IiwKKyAgICAi
MGNhMWFkOGQxYTNhNDhjODA1M2I0MDgxYmRmNWY1ZTQiLAogICAic3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF8xXzJfYXV0b2dlbi5oIjoKICAgICAiM2Y1MjE4N2YyOTlmZTk2NjcyMzg0ZTE2NDZm
NGExY2IiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzNfYXV0b2dlbi5jcHAiOgot
ICAgICIxYzJlZjczZmJmNjE2ZDZkOTZiNTZmYjhiNzVlYWNkNSIsCisgICAgIjViY2U5ZjdiYjI2
MzlhN2RlNTdlOTI1YTAyODAzOWVmIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8z
X2F1dG9nZW4uaCI6CiAgICAgIjVlYTM2ZDg2OWI4MmE4MjRkNWYyOTA2MjVjNGVhMDUyIiwKICAg
InNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV80X2F1dG9nZW4uY3BwIjoKLSAgICAiMjM3Njk0
NGY5ZTEyMGU4NTczMDZhOTdiMWQ2ODQzNDgiLAorICAgICJlNzk5Mzg3ZDA4NGFlNzE4ZmUwNzYy
ZDQ4YzFhNDBiOSIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfNF9hdXRvZ2VuLmgi
OgogICAgICIyYzVkMzFjYTI0ODUwN2EwMjRlNDcyNGM3NDI4M2VjNCIsCiAgICJzcmMvbGliR0wv
ZW50cnlfcG9pbnRzX2dsXzFfNV9hdXRvZ2VuLmNwcCI6Ci0gICAgImY2ZjE3ODllZGY4ZjRiZDcx
YmQ4ZTcwZjA4ZmVmOGU5IiwKKyAgICAiYWFkZGJkZTg5Yzc4MDE5NGFjNDc1NGY3YTExNzdjODQi
LAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzVfYXV0b2dlbi5oIjoKICAgICAiOTc4
NDU3YWE5YTQwZTQyNzg0NmI2ZGVhMjQ2MDg5MDMiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50
c19nbF8yXzBfYXV0b2dlbi5jcHAiOgotICAgICI2NmU3MzViNTg0MDYwZjFlYWU0YWVhNDkzM2Ex
YTk0MCIsCisgICAgIjY4ZmJmMzMyYjUxNDAxMzkxOTc4YmM0YmIzZWNlNjU0IiwKICAgInNyYy9s
aWJHTC9lbnRyeV9wb2ludHNfZ2xfMl8wX2F1dG9nZW4uaCI6CiAgICAgIjQxYjBjZDA2NDE2N2Zh
Yzg0YmNkYjE4OTZhMjc1YjFiIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMl8xX2F1
dG9nZW4uY3BwIjoKLSAgICAiN2UzNjZmZTM4YTgzYjdjODUzYjcwZmZjOTRjMzZjNzkiLAorICAg
ICI0ZTMxYjlkOGE4OGRjNjlhOWYxZjA3YjBhZGI5ODk2NSIsCiAgICJzcmMvbGliR0wvZW50cnlf
cG9pbnRzX2dsXzJfMV9hdXRvZ2VuLmgiOgogICAgICIxZGE0OGRlYzU2MGVhNWZmOGNhZGY0ZDBi
NmJmZGUxYyIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMF9hdXRvZ2VuLmNwcCI6
Ci0gICAgIjYyY2EyZWMxZGE2MzM4YjcxMjE3MTZlYjBmZmIyNDk5IiwKKyAgICAiNmRlY2M2NDk0
YzlhY2RmYjYzZDUzNzliMGJiN2U3NjciLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8z
XzBfYXV0b2dlbi5oIjoKICAgICAiMGZhZDgwMDVmMjM4MTViZWI4ZWU5YjM3OTdjMDBiODMiLAog
ICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzFfYXV0b2dlbi5jcHAiOgotICAgICI5NWIw
YWRkMDlhYjM2NmE4NTdjOGY3Zjg5Njc0MDFhYSIsCisgICAgIjY0NzI1MmNiYzU4NWVjNDEzMTIx
ZmU2Y2QxNmM4ZGJmIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18xX2F1dG9nZW4u
aCI6CiAgICAgImE2OGZmNmM2OWYwY2U5NWQ5NzMwZTIyYmI0YzYzMzY2IiwKICAgInNyYy9saWJH
TC9lbnRyeV9wb2ludHNfZ2xfM18yX2F1dG9nZW4uY3BwIjoKLSAgICAiYjAyMzczY2JiOThlM2U2
ODdiN2Q2Mjg3NDQyZTM2ZmYiLAorICAgICJkN2NkZGFjYTlhMmM2ZTA1MWE0ZGVjNzZiMDM2MTFm
MiIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMl9hdXRvZ2VuLmgiOgogICAgICJm
MTYyYzRlOTNhNjRhYjJlNDMwNDhhMDkzN2Y3YzQ2ZiIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzNfM19hdXRvZ2VuLmNwcCI6Ci0gICAgIjRhNjFmYmQyZmJjNWRiM2ZjMDhkMGYyOWE5
YTI5N2I2IiwKKyAgICAiMzBmOGRmZDViOTAyZDIwM2FiYWI4NGM1Nzk1ZTRlNGIiLAogICAic3Jj
L2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzNfYXV0b2dlbi5oIjoKICAgICAiNTFjMGU0ZjA3NGM4
NTQ0N2Y1ZDkxMGM2M2I5ZWE2MWMiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzBf
YXV0b2dlbi5jcHAiOgotICAgICI5YTk0YzBmM2IyMjYxYWQ1ZTA1MWE2YTAwYWZkN2MxZSIsCisg
ICAgIjRlNGMwOTgxMDQwODI0NTFkMmIxYzQ1MGQ0OGJjYTcyIiwKICAgInNyYy9saWJHTC9lbnRy
eV9wb2ludHNfZ2xfNF8wX2F1dG9nZW4uaCI6CiAgICAgIjM1ZDYxMTEzODk1MWNlYmMyOWRiOTlj
OWJmM2E5ZTVmIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8xX2F1dG9nZW4uY3Bw
IjoKLSAgICAiODdiOGEzNWIyMTk2ZTQwNjhkYjQ0MjBiYTgzYzNlYWEiLAorICAgICJhZjJmZmVh
ZmRlZTg1MzU0NzBiYzhmYjRlZTllNjJmZCIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2ds
XzRfMV9hdXRvZ2VuLmgiOgogICAgICJiZWVjNjY1OWEzYTc3Njk1ZGFkNjZkZjkwNzE3YzZiYSIs
CiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfMl9hdXRvZ2VuLmNwcCI6Ci0gICAgImVk
MzA2ODI4ODU0MGUxZjQyZWE0NWNkOTM2NzViNmUzIiwKKyAgICAiMDQ4YmUzMTU5NDg4NTA2NzY0
MzliNDNmYmMyMTVkODAiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzJfYXV0b2dl
bi5oIjoKICAgICAiYTJjYjJhNDhjY2VhZjYxMzFmOTZiZjhlYzU1NmFhNTUiLAogICAic3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF80XzNfYXV0b2dlbi5jcHAiOgotICAgICJiZTE1NWQyYmE3MTA2
ZGM2YjNiYTk4NmM4M2NkNjk3MyIsCisgICAgIjcyMDFhMmU5NzczZDYwNzc1NmZmY2QxZTNhMGYx
NGY1IiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uaCI6CiAgICAg
ImFiZmE0MzE3NDJhMmI2NDNkYjIxMjIwOTQ0ZTEwYWIwIiwKICAgInNyYy9saWJHTC9lbnRyeV9w
b2ludHNfZ2xfNF80X2F1dG9nZW4uY3BwIjoKLSAgICAiMDQxZjhkYjViMWRkODllYTdlMGRiNzdl
MDQ4MThmMTciLAorICAgICJjYjhlNTNhYmVlNTI0MGE5YjIxMjYxZWNlNDI0NTM0NCIsCiAgICJz
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2VuLmgiOgogICAgICJjZGYxNjUxZjAw
ZDI2ZGI1NDdiMTUzYWZjMDlhY2MxYyIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRf
NV9hdXRvZ2VuLmNwcCI6Ci0gICAgIjA0MDRjOWQxNDM3ZWRiNjAwYmZiZjBiZWYzNTVjNTk0IiwK
KyAgICAiNTA2ZTkwM2Q2MThjYTYwMzllYWZlNjM5YTBkMzU4ZjQiLAogICAic3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF80XzVfYXV0b2dlbi5oIjoKICAgICAiOWY1ZGU5NTEzYzA2YjgyYWNhNjA4
NTY4NjBmN2I3MTYiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzZfYXV0b2dlbi5j
cHAiOgotICAgICIxODhmNzk4NmM1YTE2MzkyZjg3NDViMmU5NDYwNmY1NiIsCisgICAgImEwMDdi
OWM1ZTBiNWM0NDVhZGY2NGU5ZjAwYWI3MDkyIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfNF82X2F1dG9nZW4uaCI6CiAgICAgImVlMzE1MGQ0YThkMjY3MjcxYTAyZTM4ZThmZWI5MjNh
IiwKICAgInNyYy9saWJHTC9saWJHTF9hdXRvZ2VuLmNwcCI6CkBAIC0yMzAsMzUgKzIzMCwzNSBA
QAogICAic3JjL2xpYkdML2xpYkdMX2F1dG9nZW4uZGVmIjoKICAgICAiMjc4OWQ4N2IwNWVlYTlm
NTNkNTJlMmFmZjQ5OWI3ODUiLAogICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18x
XzBfYXV0b2dlbi5jcHAiOgotICAgICI5M2M1N2I1YzljNWRjZTBlNTIxYWQ2OGUyYzU2MDFmOCIs
CisgICAgIjkwNDdlZjI0NTJhNDVjODZjNGE5MmI1NjhmNjg3N2MzIiwKICAgInNyYy9saWJHTEVT
djIvZW50cnlfcG9pbnRzX2dsZXNfMV8wX2F1dG9nZW4uaCI6CiAgICAgIjg5OWRjZmY5MzgzNDY1
MzgwZjk0ZmJkZmU1YmNmMGEwIiwKICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
Ml8wX2F1dG9nZW4uY3BwIjoKLSAgICAiMjRhODgzOGU0NTUzOGZkODcxYjVmNzdmNjg5OWI2NWQi
LAorICAgICI1YTU0ZDEwNmUxMTk2Nzk1YWI5YmIyMmQyNGYzMmRjNCIsCiAgICJzcmMvbGliR0xF
U3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRvZ2VuLmgiOgogICAgICIyNjM4N2UyN2NiZGRm
NWUzNGQ2Y2Q5Zjg1MGNiOGI2NCIsCiAgICJzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzNfMF9hdXRvZ2VuLmNwcCI6Ci0gICAgImMzNzliZDUxMjQ5YWI5MGU5YzIxMzhkMGE0NzFkYzcz
IiwKKyAgICAiYmNlNzY1MGRmNWE4M2FlOWM2YjA4MGIxYTRhOTE2NGIiLAogICAic3JjL2xpYkdM
RVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfYXV0b2dlbi5oIjoKICAgICAiMGQyNDYwMjQzNzlm
YmY1NWI4NzIwNGRiNWQ2YTM3ZTMiLAogICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xl
c18zXzFfYXV0b2dlbi5jcHAiOgotICAgICJhZTgwYTQ0MTBhMWQ1M2U5ZjBjZmMxY2ExODE0NjZj
ZSIsCisgICAgImY0NDkzNDA4NTJiZTNhMzg5ZjUyZmIxMGRkZDI5ZDk0IiwKICAgInNyYy9saWJH
TEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xX2F1dG9nZW4uaCI6CiAgICAgIjY5YmFlNWM5NGVk
NDY2NTgzNmE4NDY0YjZjMzUzZjlhIiwKICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2ds
ZXNfM18yX2F1dG9nZW4uY3BwIjoKLSAgICAiOTcwOGZjMTE5ZjY2ZDg5YmVlMTM1MmY5MGEwOTg4
MjQiLAorICAgICI5YTk5YjE1MTIyZWI3M2RhZmY5NTVjZWEwOTcxODVlYSIsCiAgICJzcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMl9hdXRvZ2VuLmgiOgogICAgICI1Nzk4YWEwYTcz
YWYxZDRiYTVkZmU5OWI2MjE3YTI0NyIsCiAgICJzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19n
bGVzX2V4dF9hdXRvZ2VuLmNwcCI6Ci0gICAgIjMzZjkzMWVlZmQ4ZjcxOWEwYmUzMjkwYmU5NjQ0
OGFmIiwKKyAgICAiMGIxN2M0OWEwYTVkYzIxMjg1NjI4Y2RlNzZmMmYyNjYiLAogICAic3JjL2xp
YkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dlbi5oIjoKLSAgICAiMWNiZTFlYmE1
ZGY1MjdlYWUxNDZjZjRjNDAyMWU5MWEiLAorICAgICI5YjIzYWE3MmZlODI1Nzg2Y2Y2MzA4MDM1
MWZhNGRhZiIsCiAgICJzcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmNwcCI6Ci0gICAg
IjE4MWQyY2UwZWZlYWYyZTExYWIxOTdmNjQ1OGYwMjQ5IiwKKyAgICAiMTY4OWE4OGM1YmYzNzZk
YTFmMDQzM2RiMjQyZWRlN2QiLAogICAic3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5k
ZWYiOgotICAgICI3ZGI3ZjNhMDljNDY0Y2U5Mzk2MDhkOTViNTdkNDAyYiIsCisgICAgIjVmMWVi
NzYzZTMxZjkwODBlYjJkZmIxODgzMjYwODMzIiwKICAgInNyYy9saWJHTEVTdjIvbGliR0xFU3Yy
X25vX2NhcHR1cmVfYXV0b2dlbi5kZWYiOgotICAgICJmMDAxOWE2N2JkMWFlMWYyNzQ1ZGRlNTNm
MzE2YTkxOSIsCisgICAgIjI4YzhhNWVlMGQzZDY3ODE1YzFhN2ZmN2MyZDQ5NWNhIiwKICAgInNy
Yy9saWJHTEVTdjIvbGliR0xFU3YyX3dpdGhfY2FwdHVyZV9hdXRvZ2VuLmRlZiI6Ci0gICAgIjk0
Mzc2ZTY3ZDBjNGM4N2Q5YzA5N2NmODhjZGM4MDM2IgorICAgICJkZDBjN2M1NGZkNWRhOGFmMGRj
ODVmMmYxZTMyMTJlZCIKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMv
R0xfZm9ybWF0X21hcC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2Rl
X2dlbmVyYXRpb25faGFzaGVzL0dMX2Zvcm1hdF9tYXAuanNvbgppbmRleCAwMzJmMjVhNzg5NDA5
Yzc3NTJmZThlYjc4YTU4OGFmN2ZjNjZlOGU1Li4zNDE4ZGIxOGRkYmY1ZTNmMjg5MGZlNTNmZTE5
NjdkMzAwYzcxOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRz
L2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xfZm9ybWF0X21hcC5qc29uCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTF9mb3JtYXRf
bWFwLmpzb24KQEAgLTIsOSArMiw5IEBACiAgICJzcmMvbGliQU5HTEUvZXMzX2Zvcm1hdF90eXBl
X2NvbWJpbmF0aW9ucy5qc29uIjoKICAgICAiYjQ0YjIyMmMyN2VlYTY4MzljMGRhMzA3NmVlNTQw
ZmMiLAogICAic3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAiOgotICAgICI0Yjk5
MjdhZmM2Y2M0N2ZjZWE2YmZjYmNkNjAyYjZlNSIsCisgICAgImUwZGVkYjRhNDdjYTdlYWIyZDMz
ZDIwNDMwYTMwZDA1IiwKICAgInNyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2RhdGEuanNvbiI6Ci0g
ICAgIjJkZDE5ODZmNDljNDQxYWQ5YTcxYjgyNDEwZjU3ZDZlIiwKKyAgICAiMmVkYWI0ZGIxMmEx
Y2MxMzFmMjZlMGU1NjgwYjdkMGMiLAogICAic3JjL2xpYkFOR0xFL2dlbl9mb3JtYXRfbWFwLnB5
IjoKICAgICAiMzgzMjBkODQ0ZTY2MjllMDlhZmM1Y2NkYzQ4NGU5YWEiLAogICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdC5weSI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvR0xlbnVtX3ZhbHVlX3Rv
X3N0cmluZ19tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9n
ZW5lcmF0aW9uX2hhc2hlcy9HTGVudW1fdmFsdWVfdG9fc3RyaW5nX21hcC5qc29uCmluZGV4IDEz
N2MwMDJjNWQ1MzFjYjY0ODRjN2MyMjM2NmI3ZjM1NjJjNDZlNjQuLmU2NDQ5MDllM2YzZTQyZWNl
N2ExOTNjMmU2NzIzYjFhYjlkZmVhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9HTGVudW1fdmFsdWVfdG9fc3RyaW5n
X21hcC5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5l
cmF0aW9uX2hhc2hlcy9HTGVudW1fdmFsdWVfdG9fc3RyaW5nX21hcC5qc29uCkBAIC0yLDEzICsy
LDEzIEBACiAgICJzY3JpcHRzL2dlbl9nbF9lbnVtX3V0aWxzLnB5IjoKICAgICAiZjI1Y2RjNzRi
NTdkMTBhMWNiYzQxOTRhNzJlOTcxYWYiLAogICAic2NyaXB0cy9nbC54bWwiOgotICAgICJjNGEz
MjEzZTYwNmQ4NDRlODEyODgzZmQ3MjljNGZkMyIsCisgICAgImU3NGE1OTUwNjhjYmRkNjA2NDMw
MGJlMWU3MWI3Y2M5IiwKICAgInNjcmlwdHMvZ2xfYW5nbGVfZXh0LnhtbCI6Ci0gICAgImQ2OTA3
Y2Q4NGQ5NWFjMGIzMmExNjQxOTRlYWRjZjUzIiwKKyAgICAiMDc5Y2M0ODI5ZGU3Y2U2MzhmYWY3
YmJmNjZlMTQxYWQiLAogICAic2NyaXB0cy9yZWdpc3RyeV94bWwucHkiOgotICAgICI0NjdhZTFh
OTk4ODA0OWE0MjlkODIwMmU1ZDJjZjczYyIsCisgICAgIjA2YzgzN2IzOTVjOGNkMGM0ZmM5Mzdi
MTkzMzY1MDQyIiwKICAgInNyYy9saWJBTkdMRS9nbF9lbnVtX3V0aWxzX2F1dG9nZW4uY3BwIjoK
LSAgICAiZmMwMjNhZDIxZTEwZDIyNzljOGYxNDY4NmJmODM4YjYiLAorICAgICJjZmM1MmY0MTMy
NzJjMDYxZWU0YTAzNzg3Njc5MjcyNiIsCiAgICJzcmMvbGliQU5HTEUvZ2xfZW51bV91dGlsc19h
dXRvZ2VuLmgiOgogICAgICJkZDU0ZjM0YmU3MzNhZmZjYjk5NGZjMzE1YzNiOTcyZCIKIH0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvTWV0YWxfZm9ybWF0X3RhYmxlLmpz
b24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNo
ZXMvTWV0YWxfZm9ybWF0X3RhYmxlLmpzb24KaW5kZXggMjdlMzRmMDhiYmE3NzUwZGRjZDhkYmNk
MTczYTEyODAxN2EyMTQ3Yi4uOWYxNTFkYzU5NjU3ZmZlZGUyMzRjOTM0OTUxYTVjMmViZGE2YTFi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVy
YXRpb25faGFzaGVzL01ldGFsX2Zvcm1hdF90YWJsZS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9NZXRhbF9mb3JtYXRfdGFi
bGUuanNvbgpAQCAtNCw3ICs0LDcgQEAKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9n
ZW5fbXRsX2Zvcm1hdF90YWJsZS5weSI6CiAgICAgImI2NDY4NDQ2ZGQxZGEzZTQ0YWM5ZGQxMTY5
MGI1YmYxIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X21hcC5q
c29uIjoKLSAgICAiMDE2NmI3MDY5NzczMjYxMmJkNDY5NDJlN2NjZjhlNmUiLAorICAgICIyMjNl
MGI3MjlmNWRmN2Q5MWFmMzgyZmEzYWYzMjI1NCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvbXRsX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLm1tIjoKLSAgICAiODc5NmJlNjk0NjFlMmJi
MDdkYjNiODFiNmVmMjQ0MzIiCisgICAgImQ5MjQxODQzOTQ2MjUwMzJlOGEzZTk3YzhiOTM2YTVm
IgogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9PcGVuR0xfZGlzcGF0
Y2hfdGFibGUuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5l
cmF0aW9uX2hhc2hlcy9PcGVuR0xfZGlzcGF0Y2hfdGFibGUuanNvbgppbmRleCBkNWYyMjgzNTc3
YjM2MjFjZDlhOWU1ZWI3NDNlOTE0NTllZWM2MjA5Li5jMjFlZGU5NzAxMDRkN2U2ZGMxMzY0NTIw
NzE3NWFiZGUwYjY4ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3Jp
cHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvT3BlbkdMX2Rpc3BhdGNoX3RhYmxlLmpzb24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVz
L09wZW5HTF9kaXNwYXRjaF90YWJsZS5qc29uCkBAIC0xLDE4ICsxLDE4IEBACiB7CiAgICJzY3Jp
cHRzL2dsLnhtbCI6Ci0gICAgImM0YTMyMTNlNjA2ZDg0NGU4MTI4ODNmZDcyOWM0ZmQzIiwKKyAg
ICAiZTc0YTU5NTA2OGNiZGQ2MDY0MzAwYmUxZTcxYjdjYzkiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2FuZ2xlX2Zvcm1hdC5weSI6CiAgICAgIjMyYmE3MTk0MmMwZmQwMGU2ODA3MTA0ZjFi
YjgwYTNjIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwYXRjaFRhYmxlR0xfYXV0
b2dlbi5jcHAiOgotICAgICJlYTI1M2MyNDVlNjRmZDY3YzU1OTA0ZmQyODE3Mzk5NyIsCisgICAg
IjA5NDc2MjJmZWE1MGQxOGViOWYwNTU3Y2E0Yzg1YmZhIiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9EaXNwYXRjaFRhYmxlR0xfYXV0b2dlbi5oIjoKLSAgICAiMjdhZjRkYTc3YzVjYzYw
NzA4ZmQyYWFiZWRjOTgzZjciLAorICAgICIxYzY4MjRkMGM1NDk5YjNjMWM3NjVkMjVkOTQyYzg5
NiIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2VuZXJhdGVfZ2xfZGlzcGF0Y2hfdGFi
bGUucHkiOgogICAgICI0ZjE5YTdlZWUxNzY3OWIzYTBhZDRhYmFkNmZhYjJjOSIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2xfYmluZGluZ3NfZGF0YS5qc29uIjoKLSAgICAiZTg3MGE0
ZDg2ZGM2OWU1MmRjYWI5YWZkNzhhNDdjOWIiLAorICAgICI2YWU1NWU5MTI3NzdiNjk1ZjI3Yjlk
ZDk5YmNlMWQ5OCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvbnVsbF9mdW5jdGlvbnMu
Y3BwIjoKLSAgICAiODA0MDZkYTAzYTk1MDAwMjNmMTk2YTcwMTQ0ZjEwNTkiLAorICAgICIwMDM2
Zjg2MDBjOTY4YmI1M2Y3YmIzMTFjYzU0MDQxYyIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvbnVsbF9mdW5jdGlvbnMuaCI6Ci0gICAgIjc3Mzk1MDg3OWY2NDYwODVmNzhiODlmZTZhMmRh
ZjVkIgorICAgICJlZGJhNDE5YmNiZmNjMTgzMDY3M2U4YmFmZDFhNGJmYiIKIH0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
Y3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVsa2FuX2Zvcm1hdC5qc29uIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9m
b3JtYXQuanNvbgppbmRleCA4M2U4ODc4YjA2OGMyMTU5NmRiZDY2NjU1ZGQwZGQwZThkYmNjZjgz
Li44NzhjY2M1NGNiYjVjYmVkOTM3MDRjOTg3MzBhNjQ3ZWRmMTM5NjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVs
a2FuX2Zvcm1hdC5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29k
ZV9nZW5lcmF0aW9uX2hhc2hlcy9WdWxrYW5fZm9ybWF0Lmpzb24KQEAgLTIsMTEgKzIsMTEgQEAK
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkiOgogICAgICIzMmJhNzE5
NDJjMGZkMDBlNjgwNzEwNGYxYmI4MGEzYyIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5n
bGVfZm9ybWF0X21hcC5qc29uIjoKLSAgICAiYmNhNWU2ODYwMDFmNmRkMGFmMzA2YWYyMzRhMzY2
NzciLAorICAgICJmYWQ1ODExNzY1N2I2YmRlOTQ4OGExMGQzNTg3MmQ0NSIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL2dlbl92a19mb3JtYXRfdGFibGUucHkiOgogICAgICJkOGEw
ZjIyNzhjMDlhNDkwNDlhNzM5MzBiOWRhMzcxOSIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL3ZrX2Zvcm1hdF9tYXAuanNvbiI6Ci0gICAgIjcwMjEzZTIzYTlhMjI0NmE2OWJhMWIy
ZWI4ZWRiMTMzIiwKKyAgICAiODkzOTUwZjYzMGM5NWM2NTNlYzkwNzkwMTkzOWFmZDgiLAogICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAi
OgotICAgICI1ZTAzYTFkNTE2ODIyNGY5YTU0MjA2MjM5NDE4ZDJmNCIKKyAgICAiNDU1NzI1OWNh
ZGI0NWM5ZGIzMzAxMDM5Y2RhM2E3YmMiCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRp
b25faGFzaGVzL1Z1bGthbl9pbnRlcm5hbF9zaGFkZXJfcHJvZ3JhbXMuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9WdWxrYW5faW50
ZXJuYWxfc2hhZGVyX3Byb2dyYW1zLmpzb24KaW5kZXggMTljMDM1YjdhMjVlOWFlYzc5YWQwY2Fl
Y2JlZTFlNGE0ZTIxNWRlOS4uYWMxMjc5OTE4ZmM5NTFiOWIzNmZkZDFiYTgzNzBlMTA0YWVlYmM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVy
YXRpb25faGFzaGVzL1Z1bGthbl9pbnRlcm5hbF9zaGFkZXJfcHJvZ3JhbXMuanNvbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVs
a2FuX2ludGVybmFsX3NoYWRlcl9wcm9ncmFtcy5qc29uCkBAIC05MCw5ICs5MCwxMSBAQAogICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXguY29t
cC4wMDAwMDAwMy5pbmMiOgogICAgICIwZDNlYjBmODJmMzI4ODM3ZWY0YzBmZTVmOTc4ZWYzZiIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRl
eEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMiOgotICAgICI3NmQ4MjY1YTZjY2Vj
ODEzZmI3ZjdhZDFiNTAzOTQ3ZSIsCisgICAgImJiMDdiNjk0MWNlZTk0M2VmYWY2MjdkYTEyZmFi
NTA0IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVy
dEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAxLmluYyI6Ci0gICAgImExOTY0ZmQ5
ZDBiNzU3MDFhMzg0YTExYWMyMzI0MmZiIiwKKyAgICAiNDhkZTc5MDBmZTRkOTY0NDZhNjFhYmNi
MWI4NmYwY2EiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9D
b252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDIuaW5jIjoKKyAgICAiNTM0
NzVkZWM4MDlkZGRhZjkwMmRkMTIyNTNhY2JhMTkiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAw
LmluYyI6CiAgICAgIjUyM2QzMjA3ZDQyNDYxNDE5N2FjZTk2MDFjZTU2OTUwIiwKICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydFZlcnRleC5jb21wLjAw
MDAwMDAwLmluYyI6CkBAIC0yNDAsNyArMjQyLDcgQEAKICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydEluZGV4LmNvbXAiOgogICAgICJhNDZiNDhkN2Q1
YjE5Yzc0ZWIzNzdmMjc1NTI1YWI4ZCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3NoYWRlcnMvc3JjL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcCI6Ci0gICAgIjYz
NDE4YTkxNWQwYTYzYTI2YzE3ZmVhMzA5MWNkNDJkIiwKKyAgICAiZWU5NGYyZGFiMzk1ODNjMTdj
YjU3MzkxOTkyMjk0MjciLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJz
L3NyYy9Db252ZXJ0SW5kaXJlY3RMaW5lTG9vcC5jb21wIjoKICAgICAiYzRmZTBmNDYzYjQxY2Q1
OWJhZTMzZjk3MTFlMGI2N2IiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFk
ZXJzL3NyYy9Db252ZXJ0VmVydGV4LmNvbXAiOgpAQCAtMjU2LDkgKzI1OCw5IEBACiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvc3JjL092ZXJsYXlEcmF3LmNvbXAiOgog
ICAgICJkY2MyNDZiMzk4YjJlMDdhODY5YTI2NDY2NjQ5OTM2MiIsCiAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5jcHAiOgotICAgICI3
ZTBiYzM2ZDI0YWJiNzczMjYwYTdiYmQ0N2I5ZDFkMCIsCisgICAgIjdhMzg0NDJmNjNkNmZiN2I5
MzEzOTBkMzc3NmNjOTY0IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaW50
ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmgiOgotICAgICIzNTAwMjBkYmMxMzZhZThjYzY3NDU1Njk0
ZWQxM2YzMSIsCisgICAgIjNlZWE5NjEzOTljYzMxYmVkYWM1MTI4NzcwZDUxNzVkIiwKICAgInRv
b2xzL2dsc2xhbmcvZ2xzbGFuZ192YWxpZGF0b3IuZXhlLnNoYTEiOgogICAgICIyODlmMzA1OTg4
NjVhOTg3YTIxYjc5YWU1MjVmYzY2ZiIsCiAgICJ0b29scy9nbHNsYW5nL2dsc2xhbmdfdmFsaWRh
dG9yLnNoYTEiOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9j
b2RlX2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9tYW5kYXRvcnlfZm9ybWF0X3N1cHBvcnRfdGFi
bGUuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9u
X2hhc2hlcy9WdWxrYW5fbWFuZGF0b3J5X2Zvcm1hdF9zdXBwb3J0X3RhYmxlLmpzb24KaW5kZXgg
MmY3MWY1YWQ4MDVjNmNkZTA5YmVjN2ZmMjk1MjU1MDc2OTg4NDhiMy4uZDMzNTI3NGQzM2IyZmY1
NzVlNjU5ZjVlODExNGNlYzQ0OTE2ZDUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL1Z1bGthbl9tYW5kYXRvcnlfZm9y
bWF0X3N1cHBvcnRfdGFibGUuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3Jp
cHRzL2NvZGVfZ2VuZXJhdGlvbl9oYXNoZXMvVnVsa2FuX21hbmRhdG9yeV9mb3JtYXRfc3VwcG9y
dF90YWJsZS5qc29uCkBAIC04LDUgKzgsNSBAQAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi92a19tYW5kYXRvcnlfZm9ybWF0X3N1cHBvcnRfdGFibGVfYXV0b2dlbi5jcHAiOgogICAg
ICI4YmZkOGEzODU3YzJiOTA2MmQ3YWRhNDZjN2QyN2JjZiIsCiAgICJ0aGlyZF9wYXJ0eS92dWxr
YW4taGVhZGVycy9zcmMvcmVnaXN0cnkvdmsueG1sIjoKLSAgICAiMTEzYWE3ZGQyYTM3ZDIzODEw
YmQ1N2M1MmU5MTNhODAiCisgICAgIjQwOWZlYWM5Nzk5MjJiZTRhZGI1ZThkM2VjMTZhZGI3Igog
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9vdmVybGF5X3dpZGdldHMu
anNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hh
c2hlcy9vdmVybGF5X3dpZGdldHMuanNvbgppbmRleCBlZGZkMjZhOThhZGM0M2I1NzgwNjhhYmZj
Y2U5YTNkMjI0NWY5ZGZlLi42NzJiNDhhZGE4ODJhM2NjY2Q1ZTMxMmFkZjEwMmI4ODc3ZmRkZTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJh
dGlvbl9oYXNoZXMvb3ZlcmxheV93aWRnZXRzLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL292ZXJsYXlfd2lkZ2V0cy5qc29u
CkBAIC0xLDggKzEsOCBAQAogewogICAic3JjL2xpYkFOR0xFL092ZXJsYXlfYXV0b2dlbi5jcHAi
OgotICAgICI1MTRiODEwOGY2MmVmNjE2YzI5NmRjNTExYmIyZjY0NCIsCisgICAgImIwZDk4MDNm
MmRiN2I5NjJhNTNkNGQ4ODU3YTYzZmJjIiwKICAgInNyYy9saWJBTkdMRS9nZW5fb3ZlcmxheV93
aWRnZXRzLnB5IjoKICAgICAiMDcyNTJmYmRlMzA0ZmQ0ODU1OWFlMDdmOGY5MjBhMDgiLAogICAi
c3JjL2xpYkFOR0xFL292ZXJsYXlfd2lkZ2V0cy5qc29uIjoKLSAgICAiNTUyYjFlMjg4M2ExMmMz
OGQ0MjdjN2ZiZDFjMmJmMjIiCisgICAgIjEzNjI5NzM0YzMxNGNjODhjNDg1Y2IyNzUyNzkxM2Yz
IgogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wYWNrZWRfZW51bS5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFz
aGVzL3BhY2tlZF9lbnVtLmpzb24KaW5kZXggNjU2NGUwNGExY2VhODIwMzM1ZDYyNDNiMjkzNzcz
ZGY5OTBkODUwMy4uY2UwMDE3ZjgyNGUzZGI1ODU3N2VkMjk3YmM3Y2ZhZGIwYTQxYzZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25f
aGFzaGVzL3BhY2tlZF9lbnVtLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2Ny
aXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL3BhY2tlZF9lbnVtLmpzb24KQEAgLTQsMTMgKzQs
MTMgQEAKICAgInNyYy9jb21tb24vUGFja2VkRUdMRW51bXNfYXV0b2dlbi5oIjoKICAgICAiMDg1
ZDgyZDIwMDNmMDIzNDVhYmM0OTg2NTIzMTI3ZDQiLAogICAic3JjL2NvbW1vbi9QYWNrZWRHTEVu
dW1zX2F1dG9nZW4uY3BwIjoKLSAgICAiNDE5NTU3YWRhYTE0OWJlZDgwNmY3YmI5YzY4YjJjY2Mi
LAorICAgICI4ZmNlZWFiYWE4YTk2ZDBmMGIyMDM0ZTJjNTZmZjU5NyIsCiAgICJzcmMvY29tbW9u
L1BhY2tlZEdMRW51bXNfYXV0b2dlbi5oIjoKLSAgICAiODY2MDY2ZTc2YTYyNzdkMDlmN2FlNDAx
NzViMmQyOTMiLAorICAgICI5YmFhNjM1NmM4NmRmYmY3MjM4MDUzOTY5OGI1NTU5MCIsCiAgICJz
cmMvY29tbW9uL2dlbl9wYWNrZWRfZ2xfZW51bXMucHkiOgogICAgICJiM2U5NmVhNDRmNTJlYzIz
ZWU4OTNiZDg0M2RmZDJjYiIsCiAgICJzcmMvY29tbW9uL3BhY2tlZF9lZ2xfZW51bXMuanNvbiI6
CiAgICAgIjc2ZTFiODE0NDIxZTEyMTE2NGQ2MGEwZDg5Y2IxNmMxIiwKICAgInNyYy9jb21tb24v
cGFja2VkX2dsX2VudW1zLmpzb24iOgotICAgICI1OGYwNzM0Nzc2Njk2MTRjY2RjN2UxNjFkNGU1
MWM4OSIKKyAgICAiZmJlNTg5ZGM2Yzc5MGYwZGY0N2UzMGE0YmYwYTQ4ZWEiCiB9ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL3Byb2NfdGFibGUuanNvbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29kZV9nZW5lcmF0aW9uX2hhc2hlcy9wcm9jX3RhYmxl
Lmpzb24KaW5kZXggMzA0ZmMzZTExYmM1YzgwZmM4NGJjYTFhYWMzM2M1MmRiMTU0ZGVmZC4uOGRk
NjVhOWEyYTgxY2M2Zjg5YzMwZjM4OGExMzExNDJhZDc0OWEzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb2RlX2dlbmVyYXRpb25faGFzaGVzL3Byb2NfdGFi
bGUuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2NvZGVfZ2VuZXJh
dGlvbl9oYXNoZXMvcHJvY190YWJsZS5qc29uCkBAIC02LDE1ICs2LDE1IEBACiAgICJzY3JpcHRz
L2dlbl9wcm9jX3RhYmxlLnB5IjoKICAgICAiMjRkYmNjNzhmZDNmMDAwZjU4Y2E5ODIzN2NjYzBk
YTQiLAogICAic2NyaXB0cy9nbC54bWwiOgotICAgICJjNGEzMjEzZTYwNmQ4NDRlODEyODgzZmQ3
MjljNGZkMyIsCisgICAgImU3NGE1OTUwNjhjYmRkNjA2NDMwMGJlMWU3MWI3Y2M5IiwKICAgInNj
cmlwdHMvZ2xfYW5nbGVfZXh0LnhtbCI6Ci0gICAgImQ2OTA3Y2Q4NGQ5NWFjMGIzMmExNjQxOTRl
YWRjZjUzIiwKKyAgICAiMDc5Y2M0ODI5ZGU3Y2U2MzhmYWY3YmJmNjZlMTQxYWQiLAogICAic2Ny
aXB0cy9yZWdpc3RyeV94bWwucHkiOgotICAgICI0NjdhZTFhOTk4ODA0OWE0MjlkODIwMmU1ZDJj
ZjczYyIsCisgICAgIjA2YzgzN2IzOTVjOGNkMGM0ZmM5MzdiMTkzMzY1MDQyIiwKICAgInNjcmlw
dHMvd2dsLnhtbCI6CiAgICAgImFhOTY0MTljNTgyYWYyZjY2NzM0MzBlMjg0NzY5M2Y0IiwKICAg
InNyYy9saWJHTC9wcm9jX3RhYmxlX3dnbF9hdXRvZ2VuLmNwcCI6CiAgICAgIjAzYzA1ZjIwYzU3
YzFkZTgyMmIwZGRhZjZkNGY5NjA3IiwKICAgInNyYy9saWJHTEVTdjIvcHJvY190YWJsZV9lZ2xf
YXV0b2dlbi5jcHAiOgotICAgICI5NTE1YzVjMGJlZjI1MWI5NGIzMzE2YjNlYzgxZjFlMiIKKyAg
ICAiYTUxYzg1OWM3MjFkY2QxYjUzYTAxYTYwNTIwZmFkNTYiCiB9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9l
bnRyeV9wb2ludF9wYWNrZWRfZ2xfZW51bXMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NjcmlwdHMvZW50cnlfcG9pbnRfcGFja2VkX2dsX2VudW1zLmpzb24KaW5kZXggMjdiNjcxZTYx
ZjM0YTYyZTZhYjkzMDM3N2JjY2E4ZDlkYWUyMWZlZS4uODE5YzljOGE2NDI1ODE4ZTRiYzA4YWRi
NmRmNmMzM2JiNzQxNzVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2Ny
aXB0cy9lbnRyeV9wb2ludF9wYWNrZWRfZ2xfZW51bXMuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zY3JpcHRzL2VudHJ5X3BvaW50X3BhY2tlZF9nbF9lbnVtcy5qc29uCkBAIC04
OSw3ICs4OSw4IEBACiAgICAgICAgICJpZCI6ICJUcmFuc2Zvcm1GZWVkYmFja0lEIgogICAgIH0s
CiAgICAgImdsQmluZFVuaWZvcm1Mb2NhdGlvbiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hh
ZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAg
ICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsQmluZFZl
cnRleEFycmF5IjogewogICAgICAgICAiYXJyYXkiOiAiVmVydGV4QXJyYXlJRCIKQEAgLTU3NCwy
NSArNTc1LDMyIEBACiAgICAgICAgICJyZW5kZXJidWZmZXIiOiAiUmVuZGVyYnVmZmVySUQiCiAg
ICAgfSwKICAgICAiZ2xHZXRuVW5pZm9ybWR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRuVW5p
Zm9ybWZ2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlm
b3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRuVW5pZm9ybWZ2Um9idXN0IjogewotICAg
ICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNo
YWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAg
ICAgfSwKICAgICAiZ2xHZXRuVW5pZm9ybWl2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRuVW5p
Zm9ybWl2Um9idXN0IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisg
ICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6
ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRuVW5pZm9ybXVpdiI6IHsKLSAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJT
aGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgog
ICAgIH0sCiAgICAgImdsR2V0blVuaWZvcm11aXZSb2J1c3QiOiB7Ci0gICAgICAgICJwcm9ncmFt
IjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlE
IiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJn
bEdldFBhdGhDb21tYW5kcyI6IHsKICAgICAgICAgInBhdGgiOiAiUGF0aElEIgpAQCAtODM5LDMx
ICs4NDcsMzggQEAKICAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgogICAgIH0s
CiAgICAgImdsR2V0VW5pZm9ybWR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9n
cmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJs
b2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRVbmlmb3JtZnYi
OiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dy
YW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2Nh
dGlvbiIKICAgICB9LAogICAgICJnbEdldFVuaWZvcm1mdlJvYnVzdCI6IHsKLSAgICAgICAgInBy
b2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9n
cmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAg
ICAgImdsR2V0VW5pZm9ybUluZGljZXMiOiB7CiAgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclBy
b2dyYW1JRCIKICAgICB9LAogICAgICJnbEdldFVuaWZvcm1pdiI6IHsKLSAgICAgICAgInByb2dy
YW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAg
ImdsR2V0VW5pZm9ybWl2Um9idXN0IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9n
cmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJs
b2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xHZXRVbmlmb3JtTG9j
YXRpb24iOiB7CiAgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKICAgICB9LAog
ICAgICJnbEdldFVuaWZvcm11aXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbEdldFVuaWZvcm11aXZS
b2J1c3QiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAg
InByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZv
cm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbEdldFZlcnRleEFycmF5SW5kZXhlZDY0aXYiOiB7
CiAgICAgICAgICJ2YW9iaiI6ICJWZXJ0ZXhBcnJheUlEIgpAQCAtODc4LDEwICs4OTMsMTggQEAK
ICAgICAgICAgImhhbmRsZVR5cGUiOiAiSGFuZGxlVHlwZSIsCiAgICAgICAgICJtZW1vcnkiOiAi
TWVtb3J5T2JqZWN0SUQiCiAgICAgfSwKKyAgICAiZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGUi
OiB7CisgICAgICAgICJoYW5kbGVUeXBlIjogIkhhbmRsZVR5cGUiLAorICAgICAgICAibWVtb3J5
IjogIk1lbW9yeU9iamVjdElEIgorICAgIH0sCiAgICAgImdsSW1wb3J0U2VtYXBob3JlRmQiOiB7
CiAgICAgICAgICJoYW5kbGVUeXBlIjogIkhhbmRsZVR5cGUiLAogICAgICAgICAic2VtYXBob3Jl
IjogIlNlbWFwaG9yZUlEIgogICAgIH0sCisgICAgImdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFu
ZGxlIjogeworICAgICAgICAiaGFuZGxlVHlwZSI6ICJIYW5kbGVUeXBlIiwKKyAgICAgICAgInNl
bWFwaG9yZSI6ICJTZW1hcGhvcmVJRCIKKyAgICB9LAogICAgICJnbEludGVycG9sYXRlUGF0aHMi
OiB7CiAgICAgICAgICJwYXRoQSI6ICJQYXRoSUQiLAogICAgICAgICAicGF0aEIiOiAiUGF0aElE
IgpAQCAtMTE1MCwxNTQgKzExNzMsMjA0IEBACiAgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclBy
b2dyYW1JRCIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMWQiOiB7Ci0gICAgICAgICJw
cm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJv
Z3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAog
ICAgICJnbFByb2dyYW1Vbmlmb3JtMWR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQ
cm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAg
ICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5p
Zm9ybTFmIjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlm
b3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTFmdiI6IHsKLSAgICAg
ICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAg
IH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0xaSI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hh
ZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAg
ICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3Jh
bVVuaWZvcm0xaXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjog
IlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMXVpIjogewot
ICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjog
IlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24i
CiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTF1aXYiOiB7Ci0gICAgICAgICJwcm9ncmFt
IjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlE
IiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJn
bFByb2dyYW1Vbmlmb3JtMmQiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1J
RCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0
aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMmR2
IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9n
cmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9j
YXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTJmIjogewotICAgICAgICAicHJv
Z3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAg
ICAiZ2xQcm9ncmFtVW5pZm9ybTJmdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJv
Z3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAi
bG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZv
cm0yaSI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAi
cHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9y
bUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0yaXYiOiB7Ci0gICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVy
UHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9
LAogICAgICJnbFByb2dyYW1Vbmlmb3JtMnVpIjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFt
VW5pZm9ybTJ1aXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAg
ICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjog
IlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtM2QiOiB7Ci0g
ICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIK
ICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtM2R2IjogewotICAgICAgICAicHJvZ3JhbSI6
ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIs
CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQ
cm9ncmFtVW5pZm9ybTNmIjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQi
CisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlv
biI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTNmdiI6
IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3Jh
bSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0
aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm0zaSI6IHsKLSAgICAgICAgInByb2dy
YW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAg
ImdsUHJvZ3JhbVVuaWZvcm0zaXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3Jt
M3VpIjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJw
cm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3Jt
TG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTN1aXYiOiB7Ci0gICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVy
UHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9
LAogICAgICJnbFByb2dyYW1Vbmlmb3JtNGQiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRl
clByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAg
ICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1V
bmlmb3JtNGR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAg
ICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJV
bmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTRmIjogewotICAg
ICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNo
YWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAg
ICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybTRmdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAi
U2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAor
ICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJv
Z3JhbVVuaWZvcm00aSI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgor
ICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24i
OiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm00aXYiOiB7
Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0i
OiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlv
biIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtNHVpIjogewotICAgICAgICAicHJvZ3Jh
bSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1J
RCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAi
Z2xQcm9ncmFtVW5pZm9ybTR1aXYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dy
YW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3Jt
TWF0cml4MmR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAg
ICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJV
bmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdiI6
IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3Jh
bSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0
aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNkdiI6IHsKLSAgICAg
ICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAg
IH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdiI6IHsKLSAgICAgICAgInByb2dy
YW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAg
ImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hh
ZGVyUHJvZ3JhbUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAg
ICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyeDRmdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3Jh
bUlEIgorICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9j
YXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZHYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAg
ICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVu
aWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2Ijog
ewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFt
IjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRp
b24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2IjogewotICAgICAg
ICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRl
clByb2dyYW1JRCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAg
fSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2IjogewotICAgICAgICAicHJvZ3Jh
bSI6ICJTaGFkZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1J
RCIsCisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAi
Z2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGR2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFk
ZXJQcm9ncmFtSUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4NGZ2IjogewotICAgICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFt
SUQiCisgICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIsCisgICAgICAgICJsb2Nh
dGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCiAgICAgfSwKICAgICAiZ2xQcm9ncmFtVW5pZm9ybU1h
dHJpeDRkdiI6IHsKLSAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIgorICAgICAg
ICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiLAorICAgICAgICAibG9jYXRpb24iOiAiVW5p
Zm9ybUxvY2F0aW9uIgogICAgIH0sCiAgICAgImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYiOiB7
Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0i
OiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlv
biIKICAgICB9LAogICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYiOiB7Ci0gICAgICAg
ICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVy
UHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9
LAogICAgICJnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYiOiB7Ci0gICAgICAgICJwcm9ncmFt
IjogIlNoYWRlclByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlE
IiwKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJn
bFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZHYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRl
clByb2dyYW1JRCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAg
ICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb2dyYW1V
bmlmb3JtTWF0cml4NHgzZnYiOiB7Ci0gICAgICAgICJwcm9ncmFtIjogIlNoYWRlclByb2dyYW1J
RCIKKyAgICAgICAgInByb2dyYW0iOiAiU2hhZGVyUHJvZ3JhbUlEIiwKKyAgICAgICAgImxvY2F0
aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKICAgICB9LAogICAgICJnbFByb3Zva2luZ1ZlcnRleCI6
IHsKICAgICAgICAgIm1vZGUiOiAiUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiIKQEAgLTE1NzIs
NiArMTY0NSwxNTYgQEAKICAgICAiZ2xUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIjogewogICAg
ICAgICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCiAgICAgfSwKKyAgICAiZ2xVbmlmb3Jt
MWYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAg
ICAiZ2xVbmlmb3JtMWZ2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9u
IgorICAgIH0sCisgICAgImdsVW5pZm9ybTFpIjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5p
Zm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTFpdiI6IHsKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0xdWkiOiB7
CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xV
bmlmb3JtMXVpdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAg
ICB9LAorICAgICJnbFVuaWZvcm0yZiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1M
b2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0yZnYiOiB7CisgICAgICAgICJsb2NhdGlv
biI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtMmkiOiB7CisgICAg
ICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3Jt
Mml2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisg
ICAgImdsVW5pZm9ybTJ1aSI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlv
biIKKyAgICB9LAorICAgICJnbFVuaWZvcm0ydWl2IjogeworICAgICAgICAibG9jYXRpb24iOiAi
VW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTNmIjogeworICAgICAgICAi
bG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTNmdiI6
IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJn
bFVuaWZvcm0zaSI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAg
ICB9LAorICAgICJnbFVuaWZvcm0zaXYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3Jt
TG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtM3VpIjogeworICAgICAgICAibG9jYXRp
b24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTN1aXYiOiB7Cisg
ICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlm
b3JtNGYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwK
KyAgICAiZ2xVbmlmb3JtNGZ2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0
aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTRpIjogeworICAgICAgICAibG9jYXRpb24iOiAi
VW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTRpdiI6IHsKKyAgICAgICAg
ImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm00dWki
OiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAi
Z2xVbmlmb3JtNHVpdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIK
KyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgyZnYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6
ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4M2Z2Ijogewor
ICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5p
Zm9ybU1hdHJpeDRmdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIK
KyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgyeDNmdiI6IHsKKyAgICAgICAgImxvY2F0aW9u
IjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgyeDRmdiI6
IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJn
bFVuaWZvcm1NYXRyaXgzeDJmdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2Nh
dGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgzeDRmdiI6IHsKKyAgICAgICAgImxv
Y2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXg0
eDJmdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAor
ICAgICJnbFVuaWZvcm1NYXRyaXg0eDNmdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZv
cm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0xZCI6IHsKKyAgICAgICAgImxvY2F0
aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm0xZHYiOiB7Cisg
ICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlm
b3JtMmQiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwK
KyAgICAiZ2xVbmlmb3JtMmR2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0
aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTNkIjogeworICAgICAgICAibG9jYXRpb24iOiAi
VW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybTNkdiI6IHsKKyAgICAgICAg
ImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm00ZCI6
IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJn
bFVuaWZvcm00ZHYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisg
ICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4MmR2IjogeworICAgICAgICAibG9jYXRpb24iOiAi
VW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5pZm9ybU1hdHJpeDJ4M2R2Ijogewor
ICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9uIgorICAgIH0sCisgICAgImdsVW5p
Zm9ybU1hdHJpeDJ4NGR2IjogeworICAgICAgICAibG9jYXRpb24iOiAiVW5pZm9ybUxvY2F0aW9u
IgorICAgIH0sCisgICAgImdsVW5pZm9ybU1hdHJpeDNkdiI6IHsKKyAgICAgICAgImxvY2F0aW9u
IjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXgzeDJkdiI6
IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2NhdGlvbiIKKyAgICB9LAorICAgICJn
bFVuaWZvcm1NYXRyaXgzeDRkdiI6IHsKKyAgICAgICAgImxvY2F0aW9uIjogIlVuaWZvcm1Mb2Nh
dGlvbiIKKyAgICB9LAorICAgICJnbFVuaWZvcm1NYXRyaXg0ZHYiOiB7CisgICAgICAgICJsb2Nh
dGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAgICAiZ2xVbmlmb3JtTWF0cml4NHgy
ZHYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3JtTG9jYXRpb24iCisgICAgfSwKKyAg
ICAiZ2xVbmlmb3JtTWF0cml4NHgzZHYiOiB7CisgICAgICAgICJsb2NhdGlvbiI6ICJVbmlmb3Jt
TG9jYXRpb24iCisgICAgfSwKICAgICAiZ2xVbmlmb3JtQmxvY2tCaW5kaW5nIjogewogICAgICAg
ICAicHJvZ3JhbSI6ICJTaGFkZXJQcm9ncmFtSUQiCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZXhwb3J0X3RhcmdldHMucHkgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2V4cG9ydF90YXJnZXRzLnB5CmluZGV4IDg4Zjk4M2IyOWJj
YzM3NmIwYzU1Y2JhMDI2MmUyZDQ0OTUyZTRkNzMuLmJiZWQ5MzQyNjZhMjNmNzM2NjNhOWJjOTRj
MDlmZDgyNGQ2MDg4Y2EgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Njcmlw
dHMvZXhwb3J0X3RhcmdldHMucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0
cy9leHBvcnRfdGFyZ2V0cy5weQpAQCAtMTgzLDExICsxODMsMTIgQEAgSUdOT1JFRF9JTkNMVURF
UyA9IHsKICAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmgnLAogICAgIGIn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oJywKICAgICBiJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdpblJULmgnLAotICAgIGIn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaCcsCiAgICAgYidsaWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oJywKICAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VhZ2wvRGlzcGxheUVBR0wuaCcsCi0gICAgYidsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pv
bmUvRGlzcGxheU96b25lLmgnLAogICAgIGInbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJv
aWQvRGlzcGxheUFuZHJvaWQuaCcsCisgICAgYidsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlz
cGxheUVHTC5oJywKKyAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5
T3pvbmUuaCcsCisgICAgYidsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oJywK
ICAgICBiJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgnLAogICAgIGInbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bF9hcGkuaCcsCiAgICAgYidsaWJBTkdMRS9y
ZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2NyaXB0cy9nZW5lcmF0ZV9hbmRyb2lkX2JwLnB5IGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2NyaXB0cy9nZW5lcmF0ZV9hbmRyb2lkX2JwLnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkYzk1
M2RmNDE1YTZiYzIwMWM2YmJmNTgzNmNlOTFhMzI2ZTQ5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2dlbmVyYXRlX2FuZHJvaWRfYnAucHkKQEAg
LTAsMCArMSw0OTUgQEAKKyMgIENvcHlyaWdodCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyAgZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKyMKKyMgR2VuZXJhdGVzIGFuIEFuZHJvaWQuYnAgZmlsZSBmcm9tIHRoZSBq
c29uIG91dHB1dCBvZiBhICdnbiBkZXNjJyBjb21tYW5kLgorIyBFeGFtcGxlIHVzYWdlOgorIyAg
IGduIGRlc2Mgb3V0L0FuZHJvaWQgLS1mb3JtYXQ9anNvbiAiKiIgPiBkZXNjLmpzb24KKyMgICBw
eXRob24gc2NyaXB0cy9nZW5lcmF0ZV9hbmRyb2lkX2JwLnB5IGRlc2MuanNvbiA+IEFuZHJvaWQu
YnAKKworaW1wb3J0IGpzb24KK2ltcG9ydCBzeXMKK2ltcG9ydCByZQoraW1wb3J0IG9zCitpbXBv
cnQgYXJncGFyc2UKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKKworcm9vdF90YXJnZXRzID0g
WworICAgICIvLzpsaWJHTEVTdjIiLAorICAgICIvLzpsaWJHTEVTdjFfQ00iLAorICAgICIvLzps
aWJFR0wiLAorICAgICIvLzpsaWJmZWF0dXJlX3N1cHBvcnQiLAorXQorCitzZGtfdmVyc2lvbiA9
ICcyOCcKK3N0bCA9ICdsaWJjKytfc3RhdGljJworCisKK2RlZiB0YWJzKGluZGVudCk6CisgICAg
cmV0dXJuICcgJyAqIChpbmRlbnQgKiA0KQorCisKK2RlZiBoYXNfY2hpbGRfdmFsdWVzKHZhbHVl
KToKKyAgICAjIEVsZW1lbnRzIG9mIHRoZSBibHVlcHJpbnQgY2FuIGJlIHBydW5lZCBpZiB0aGV5
IGFyZSBlbXB0eSBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb2YgZW1wdHkKKyAgICAjIGxpc3RzCisg
ICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICAgIHJldHVybiBsZW4odmFsdWUp
ID4gMAorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRpY3QpOgorICAgICAgICBmb3IgKGl0ZW0s
IGl0ZW1fdmFsdWUpIGluIHZhbHVlLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBoYXNfY2hpbGRf
dmFsdWVzKGl0ZW1fdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgIyBUaGlzIGlzIGEgdmFsdWUgbGVhZiBub2RlCisgICAgcmV0
dXJuIFRydWUKKworCitkZWYgd3JpdGVfYmx1ZXByaW50X2tleV92YWx1ZShvdXRwdXQsIG5hbWUs
IHZhbHVlLCBpbmRlbnQ9MSk6CisgICAgaWYgbm90IGhhc19jaGlsZF92YWx1ZXModmFsdWUpOgor
ICAgICAgICByZXR1cm4KKworICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHNldCkgb3IgaXNpbnN0
YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICAgIHZhbHVlID0gbGlzdChzb3J0ZWQoc2V0KHZhbHVl
KSkpCisKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKKyAgICAgICAgb3V0cHV0LmFw
cGVuZCh0YWJzKGluZGVudCkgKyAnJXM6IFsnICUgbmFtZSkKKyAgICAgICAgZm9yIGl0ZW0gaW4g
dmFsdWU6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHRhYnMoaW5kZW50ICsgMSkgKyAnIiVz
IiwnICUgaXRlbSkKKyAgICAgICAgb3V0cHV0LmFwcGVuZCh0YWJzKGluZGVudCkgKyAnXSwnKQor
ICAgICAgICByZXR1cm4KKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKKyAgICAgICAg
aWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG91dHB1dC5hcHBlbmQo
dGFicyhpbmRlbnQpICsgJyVzOiB7JyAlIG5hbWUpCisgICAgICAgIGZvciAoaXRlbSwgaXRlbV92
YWx1ZSkgaW4gdmFsdWUuaXRlbXMoKToKKyAgICAgICAgICAgIHdyaXRlX2JsdWVwcmludF9rZXlf
dmFsdWUob3V0cHV0LCBpdGVtLCBpdGVtX3ZhbHVlLCBpbmRlbnQgKyAxKQorICAgICAgICBvdXRw
dXQuYXBwZW5kKHRhYnMoaW5kZW50KSArICd9LCcpCisgICAgICAgIHJldHVybgorICAgIGlmIGlz
aW5zdGFuY2UodmFsdWUsIGJvb2wpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKHRhYnMoaW5kZW50
KSArICclczogJXMsJyAlIChuYW1lLCAndHJ1ZScgaWYgdmFsdWUgZWxzZSAnZmFsc2UnKSkKKyAg
ICAgICAgcmV0dXJuCisgICAgb3V0cHV0LmFwcGVuZCh0YWJzKGluZGVudCkgKyAnJXM6ICIlcyIs
JyAlIChuYW1lLCB2YWx1ZSkpCisKKworZGVmIHdyaXRlX2JsdWVwcmludChvdXRwdXQsIHRhcmdl
dF90eXBlLCB2YWx1ZXMpOgorICAgIG91dHB1dC5hcHBlbmQoJyVzIHsnICUgdGFyZ2V0X3R5cGUp
CisgICAgZm9yIChrZXksIHZhbHVlKSBpbiB2YWx1ZXMuaXRlbXMoKToKKyAgICAgICAgd3JpdGVf
Ymx1ZXByaW50X2tleV92YWx1ZShvdXRwdXQsIGtleSwgdmFsdWUpCisgICAgb3V0cHV0LmFwcGVu
ZCgnfScpCisKKworZGVmIGduX3RhcmdldF90b19ibHVlcHJpbnRfdGFyZ2V0KHRhcmdldCwgdGFy
Z2V0X2luZm8pOgorICAgIGlmICdvdXRwdXRfbmFtZScgaW4gdGFyZ2V0X2luZm86CisgICAgICAg
IHJldHVybiB0YXJnZXRfaW5mb1snb3V0cHV0X25hbWUnXQorCisgICAgIyBQcmVmaXggYWxsIHRh
cmdldHMgd2l0aCBhbmdsZV8KKyAgICAjIFJlbW92ZSB0aGUgcHJlZml4IC8vOiBmcm9tIGduIHRh
cmdldCBuYW1lcworICAgIGNsZWFuZWRfcGF0aCA9IHJlLnN1YihyJ14vLy4qOicsICcnLCB0YXJn
ZXQpCisgICAgcHJlZml4ID0gImFuZ2xlXyIKKyAgICBpZiBub3QgY2xlYW5lZF9wYXRoLnN0YXJ0
c3dpdGgocHJlZml4KToKKyAgICAgICAgY2xlYW5lZF9wYXRoID0gcHJlZml4ICsgY2xlYW5lZF9w
YXRoCisgICAgcmV0dXJuIGNsZWFuZWRfcGF0aAorCisKK2RlZiByZW1hcF9nbl9wYXRoKHBhdGgp
OgorICAgICMgVE9ETzogcGFzcyB0aGUgZ24gZ2VuIGZvbGRlciBhcyBhbiBhcmcgc28gaXQgaXMg
ZnV0dXJlIHByb29mLiBiLzE1MDQ1NzI3NworICAgIHJlbWFwX2ZvbGRlcnMgPSBbCisgICAgICAg
ICgnb3V0L0FuZHJvaWQvZ2VuL2FuZ2xlLycsICcnKSwKKyAgICAgICAgKCdvdXQvQW5kcm9pZC9n
ZW4vJywgJycpLAorICAgIF0KKworICAgIHJlbWFwcGVkX3BhdGggPSBwYXRoCisgICAgZm9yIChy
ZW1hcF9zb3VyY2UsIHJlbWFwX2Rlc3QpIGluIHJlbWFwX2ZvbGRlcnM6CisgICAgICAgIHJlbWFw
cGVkX3BhdGggPSByZW1hcHBlZF9wYXRoLnJlcGxhY2UocmVtYXBfc291cmNlLCByZW1hcF9kZXN0
KQorCisgICAgcmV0dXJuIHJlbWFwcGVkX3BhdGgKKworCitkZWYgZ25fcGF0aF90b19ibHVlcHJp
bnRfcGF0aChzb3VyY2UpOgorICAgICMgZ24gdXNlcyAnLy8nIHRvIGluZGljYXRlIHRoZSByb290
IGRpcmVjdG9yeSwgYmx1ZXByaW50IHVzZXMgdGhlIC5icCBmaWxlJ3MgbG9jYXRpb24KKyAgICBy
ZXR1cm4gcmVtYXBfZ25fcGF0aChyZS5zdWIocideLy8/JywgJycsIHNvdXJjZSkpCisKKworZGVm
IGduX3BhdGhzX3RvX2JsdWVwcmludF9wYXRocyhwYXRocyk6CisgICAgcmViYXNlZF9wYXRocyA9
IFtdCisgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgIHJlYmFzZWRfcGF0aHMuYXBwZW5k
KGduX3BhdGhfdG9fYmx1ZXByaW50X3BhdGgocGF0aCkpCisgICAgcmV0dXJuIHJlYmFzZWRfcGF0
aHMKKworCitkZWYgZ25fc291cmNlc190b19ibHVlcHJpbnRfc291cmNlcyhzb3VyY2VzKToKKyAg
ICAjIEJsdWVwcmludHMgb25seSBsaXN0IHNvdXJjZSBmaWxlcyBpbiB0aGUgc291cmNlcyBsaXN0
LiBIZWFkZXJzIGFyZSBvbmx5IHJlZmVyZW5jZWQgdGhvdWdoCisgICAgIyBpbmNsdWRlIHBhdGhz
LgorICAgIGZpbGVfZXh0ZW5zaW9uX3doaXRlbGlzdCA9IFsKKyAgICAgICAgJy5jJywKKyAgICAg
ICAgJy5jYycsCisgICAgICAgICcuY3BwJywKKyAgICBdCisKKyAgICByZWJhc2VkX3NvdXJjZXMg
PSBbXQorICAgIGZvciBzb3VyY2UgaW4gc291cmNlczoKKyAgICAgICAgaWYgb3MucGF0aC5zcGxp
dGV4dChzb3VyY2UpWzFdIGluIGZpbGVfZXh0ZW5zaW9uX3doaXRlbGlzdDoKKyAgICAgICAgICAg
IHJlYmFzZWRfc291cmNlcy5hcHBlbmQoZ25fcGF0aF90b19ibHVlcHJpbnRfcGF0aChzb3VyY2Up
KQorICAgIHJldHVybiByZWJhc2VkX3NvdXJjZXMKKworCit0YXJnZXRfYmxhY2tpc3QgPSBbCisg
ICAgJy8vYnVpbGQvY29uZmlnOnNoYXJlZF9saWJyYXJ5X2RlcHMnLAorXQorCitpbmNsdWRlX2Js
YWNrbGlzdCA9IFsKK10KKworCitkZWYgZ25fZGVwc190b19ibHVlcHJpbnRfZGVwcyh0YXJnZXRf
aW5mbywgYnVpbGRfaW5mbyk6CisgICAgc3RhdGljX2xpYnMgPSBbXQorICAgIHNoYXJlZF9saWJz
ID0gW10KKyAgICBkZWZhdWx0cyA9IFtdCisgICAgZ2VuZXJhdGVkX2hlYWRlcnMgPSBbXQorICAg
IGhlYWRlcl9saWJzID0gW10KKyAgICBpZiBub3QgJ2RlcHMnIGluIHRhcmdldF9pbmZvOgorICAg
ICAgICByZXR1cm4gKHN0YXRpY19saWJzLCBkZWZhdWx0cykKKworICAgIGZvciBkZXAgaW4gdGFy
Z2V0X2luZm9bJ2RlcHMnXToKKyAgICAgICAgaWYgbm90IGRlcCBpbiB0YXJnZXRfYmxhY2tpc3Q6
CisgICAgICAgICAgICBkZXBfaW5mbyA9IGJ1aWxkX2luZm9bZGVwXQorICAgICAgICAgICAgYmx1
ZXByaW50X2RlcF9uYW1lID0gZ25fdGFyZ2V0X3RvX2JsdWVwcmludF90YXJnZXQoZGVwLCBkZXBf
aW5mbykKKworICAgICAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGRlcCB0eXBlLCBibHVlcHJp
bnRzIHJlZmVyZW5jZSBpdCBkaWZmZXJlbnRseS4KKyAgICAgICAgICAgIGduX2RlcF90eXBlID0g
ZGVwX2luZm9bJ3R5cGUnXQorICAgICAgICAgICAgaWYgZ25fZGVwX3R5cGUgPT0gJ3N0YXRpY19s
aWJyYXJ5JzoKKyAgICAgICAgICAgICAgICBzdGF0aWNfbGlicy5hcHBlbmQoYmx1ZXByaW50X2Rl
cF9uYW1lKQorICAgICAgICAgICAgZWxpZiBnbl9kZXBfdHlwZSA9PSAnc2hhcmVkX2xpYnJhcnkn
OgorICAgICAgICAgICAgICAgIHNoYXJlZF9saWJzLmFwcGVuZChibHVlcHJpbnRfZGVwX25hbWUp
CisgICAgICAgICAgICBlbGlmIGduX2RlcF90eXBlID09ICdzb3VyY2Vfc2V0JyBvciBnbl9kZXBf
dHlwZSA9PSAnZ3JvdXAnOgorICAgICAgICAgICAgICAgIGRlZmF1bHRzLmFwcGVuZChibHVlcHJp
bnRfZGVwX25hbWUpCisgICAgICAgICAgICBlbGlmIGduX2RlcF90eXBlID09ICdhY3Rpb24nOgor
ICAgICAgICAgICAgICAgIGdlbmVyYXRlZF9oZWFkZXJzLmFwcGVuZChibHVlcHJpbnRfZGVwX25h
bWUpCisKKyAgICAgICAgICAgICMgQmx1ZXByaW50cyBkbyBub3QgY2hhaW4gbGlua2luZyBvZiBz
dGF0aWMgbGlicmFyaWVzLgorICAgICAgICAgICAgKGNoaWxkX3N0YXRpY19saWJzLCBfLCBfLCBj
aGlsZF9nZW5lcmF0ZWRfaGVhZGVycywgXykgPSBnbl9kZXBzX3RvX2JsdWVwcmludF9kZXBzKAor
ICAgICAgICAgICAgICAgIGRlcF9pbmZvLCBidWlsZF9pbmZvKQorCisgICAgICAgICAgICAjIEVh
Y2ggdGFyZ2V0IG5lZWRzIHRvIGxpbmsgYWxsIGNoaWxkIHN0YXRpYyBsaWJyYXJ5IGRlcGVuZGVu
Y2llcy4KKyAgICAgICAgICAgIHN0YXRpY19saWJzICs9IGNoaWxkX3N0YXRpY19saWJzCisKKyAg
ICAgICAgICAgICMgRWFjaCBibHVlcHJpbnQgdGFyZ2V0IHJ1bnMgZ2VucnVsZXMgaW4gYSBkaWZm
ZXJlbnQgb3V0cHV0IGRpcmVjdG9yeSB1bmxpa2UgR04uIElmIGEKKyAgICAgICAgICAgICMgdGFy
Z2V0IGRlcGVuZHMgb24gYW5vdGhlcidzIGdlbnJ1bGUsIGl0IHdvbnQgZmluZCB0aGUgb3V0cHV0
cy4gUHJvcG9nYXRlIGdlbmVyYXRlZAorICAgICAgICAgICAgIyBoZWFkZXJzIHVwIHRoZSBkZXBl
bmRlbmN5IHN0YWNrLgorICAgICAgICAgICAgZ2VuZXJhdGVkX2hlYWRlcnMgKz0gY2hpbGRfZ2Vu
ZXJhdGVkX2hlYWRlcnMKKworICAgIHJldHVybiAoc3RhdGljX2xpYnMsIHNoYXJlZF9saWJzLCBk
ZWZhdWx0cywgZ2VuZXJhdGVkX2hlYWRlcnMsIGhlYWRlcl9saWJzKQorCisKK2RlZiBnbl9saWJz
X3RvX2JsdWVwcmludF9zaGFyZWRfbGlicmFyaWVzKHRhcmdldF9pbmZvKToKKyAgICBsaWJfYmxh
Y2tpc3QgPSBbCisgICAgICAgICdhbmRyb2lkX3N1cHBvcnQnLAorICAgIF0KKworICAgIHJlc3Vs
dCA9IFtdCisgICAgaWYgJ2xpYnMnIGluIHRhcmdldF9pbmZvOgorICAgICAgICBmb3IgbGliIGlu
IHRhcmdldF9pbmZvWydsaWJzJ106CisgICAgICAgICAgICBpZiBub3QgbGliIGluIGxpYl9ibGFj
a2lzdDoKKyAgICAgICAgICAgICAgICBhbmRyb2lkX2xpYiA9IGxpYiBpZiAnQCcgaW4gbGliIGVs
c2UgJ2xpYicgKyBsaWIKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGFuZHJvaWRfbGli
KQorICAgIHJldHVybiByZXN1bHQKKworCitkZWYgZ25faW5jbHVkZV9kaXJzX3RvX2JsdWVwcmlu
dF9pbmNsdWRlX2RpcnModGFyZ2V0X2luZm8pOgorICAgIHJlc3VsdCA9IFtdCisgICAgaWYgJ2lu
Y2x1ZGVfZGlycycgaW4gdGFyZ2V0X2luZm86CisgICAgICAgIGZvciBpbmNsdWRlX2RpciBpbiB0
YXJnZXRfaW5mb1snaW5jbHVkZV9kaXJzJ106CisgICAgICAgICAgICBpZiBub3QgaW5jbHVkZV9k
aXIgaW4gaW5jbHVkZV9ibGFja2xpc3Q6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChn
bl9wYXRoX3RvX2JsdWVwcmludF9wYXRoKGluY2x1ZGVfZGlyKSkKKyAgICByZXR1cm4gcmVzdWx0
CisKKworZGVmIGVzY2FwZV9xdW90ZXMoc3RyKToKKyAgICByZXR1cm4gc3RyLnJlcGxhY2UoIlwi
IiwgIlxcXCIiKS5yZXBsYWNlKCJcJyIsICJcXFwnIikKKworCithbmdsZV9jcHVfYml0c19kZWZp
bmUgPSByJ15BTkdMRV9JU19bMC05XStfQklUX0NQVSQnCisKKworZGVmIGduX2NmbGFnc190b19i
bHVlcHJpbnRfY2ZsYWdzKHRhcmdldF9pbmZvKToKKyAgICByZXN1bHQgPSBbXQorCisgICAgIyBP
bmx5IGZvcndhcmQgY2ZsYWdzIHRoYXQgZGlzYWJsZSB3YXJuaW5ncworICAgIGNmbGFnX3doaXRl
bGlzdCA9IHInXi1Xbm8tLiokJworCisgICAgZm9yIGNmbGFnX3R5cGUgaW4gWydjZmxhZ3MnLCAn
Y2ZsYWdzX2MnLCAnY2ZsYWdzX2NjJ106CisgICAgICAgIGlmIGNmbGFnX3R5cGUgaW4gdGFyZ2V0
X2luZm86CisgICAgICAgICAgICBmb3IgY2ZsYWcgaW4gdGFyZ2V0X2luZm9bY2ZsYWdfdHlwZV06
CisgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGNmbGFnX3doaXRlbGlzdCwgY2ZsYWcpOgor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNmbGFnKQorCisgICAgIyBDaHJvbWUg
YW5kIEFuZHJvaWQgdXNlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBDbGFuZyB3aGljaCBzdXBwb3J0
IGRpZmZlcm50IHdhcm5pbmcgb3B0aW9ucy4KKyAgICAjIElnbm9yZSBlcnJvcnMgYWJvdXQgdW5y
ZWNvZ25pemVkIHdhcm5pbmcgZmxhZ3MuCisgICAgcmVzdWx0LmFwcGVuZCgnLVduby11bmtub3du
LXdhcm5pbmctb3B0aW9uJykKKworICAgIGlmICdkZWZpbmVzJyBpbiB0YXJnZXRfaW5mbzoKKyAg
ICAgICAgZm9yIGRlZmluZSBpbiB0YXJnZXRfaW5mb1snZGVmaW5lcyddOgorICAgICAgICAgICAg
IyBEb24ndCBlbWl0IEFOR0xFJ3MgQ1BVLWJpdHMgZGVmaW5lIGhlcmUsIGl0IHdpbGwgYmUgcGFy
dCBvZiB0aGUgYXJjaC1zcGVjaWZpYworICAgICAgICAgICAgIyBpbmZvcm1hdGlvbiBsYXRlcgor
ICAgICAgICAgICAgaWYgbm90IHJlLnNlYXJjaChhbmdsZV9jcHVfYml0c19kZWZpbmUsIGRlZmlu
ZSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLUQlcycgJSBlc2NhcGVfcXVvdGVz
KGRlZmluZSkpCisKKyAgICByZXR1cm4gcmVzdWx0CisKKworZGVmIGduX2FyY2hfc3BlY2lmaWNf
dG9fYmx1ZXByaW50KHRhcmdldF9pbmZvKToKKyAgICBhcmNoX2luZm9zID0geworICAgICAgICAn
YXJtJzogeworICAgICAgICAgICAgJ2JpdHMnOiAzMgorICAgICAgICB9LAorICAgICAgICAnYXJt
NjQnOiB7CisgICAgICAgICAgICAnYml0cyc6IDY0CisgICAgICAgIH0sCisgICAgICAgICd4ODYn
OiB7CisgICAgICAgICAgICAnYml0cyc6IDMyCisgICAgICAgIH0sCisgICAgICAgICd4ODZfNjQn
OiB7CisgICAgICAgICAgICAnYml0cyc6IDY0CisgICAgICAgIH0sCisgICAgfQorCisgICAgcmVz
dWx0ID0ge30KKyAgICBmb3IgKGFyY2hfbmFtZSwgYXJjaF9pbmZvKSBpbiBhcmNoX2luZm9zLml0
ZW1zKCk6CisgICAgICAgIHJlc3VsdFthcmNoX25hbWVdID0geydjZmxhZ3MnOiBbXX0KKworICAg
ICMgSWYgdGhlIHRhcmdldCBoYXMgQU5HTEUncyBDUFUtYml0cyBkZWZpbmUsIHJlcGxhY2UgaXQg
d2l0aCB0aGUgYXJjaC1zcGVjaWZpYyBiaXRzIGhlcmUuCisgICAgaWYgJ2RlZmluZXMnIGluIHRh
cmdldF9pbmZvOgorICAgICAgICBmb3IgZGVmaW5lIGluIHRhcmdldF9pbmZvWydkZWZpbmVzJ106
CisgICAgICAgICAgICBpZiByZS5zZWFyY2goYW5nbGVfY3B1X2JpdHNfZGVmaW5lLCBkZWZpbmUp
OgorICAgICAgICAgICAgICAgIGZvciAoYXJjaF9uYW1lLCBhcmNoX2luZm8pIGluIGFyY2hfaW5m
b3MuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2FyY2hfbmFtZV1bJ2NmbGFn
cyddLmFwcGVuZCgnLURBTkdMRV9JU18lZF9CSVRfQ1BVJyAlIGFyY2hfaW5mb1snYml0cyddKQor
CisgICAgcmV0dXJuIHJlc3VsdAorCisKK2JsdWVwcmludF9saWJyYXJ5X3RhcmdldF90eXBlcyA9
IHsKKyAgICAic3RhdGljX2xpYnJhcnkiOiAiY2NfbGlicmFyeV9zdGF0aWMiLAorICAgICJzaGFy
ZWRfbGlicmFyeSI6ICJjY19saWJyYXJ5X3NoYXJlZCIsCisgICAgInNvdXJjZV9zZXQiOiAiY2Nf
ZGVmYXVsdHMiLAorICAgICJncm91cCI6ICJjY19kZWZhdWx0cyIsCit9CisKKworZGVmIGxpYnJh
cnlfdGFyZ2V0X3RvX2JsdWVwcmludCh0YXJnZXQsIGJ1aWxkX2luZm8pOgorICAgIHRhcmdldF9p
bmZvID0gYnVpbGRfaW5mb1t0YXJnZXRdCisKKyAgICBibHVlcHJpbnRfdHlwZSA9IGJsdWVwcmlu
dF9saWJyYXJ5X3RhcmdldF90eXBlc1t0YXJnZXRfaW5mb1sndHlwZSddXQorCisgICAgYnAgPSB7
fQorICAgIGJwWyduYW1lJ10gPSBnbl90YXJnZXRfdG9fYmx1ZXByaW50X3RhcmdldCh0YXJnZXQs
IHRhcmdldF9pbmZvKQorCisgICAgaWYgJ3NvdXJjZXMnIGluIHRhcmdldF9pbmZvOgorICAgICAg
ICBicFsnc3JjcyddID0gZ25fc291cmNlc190b19ibHVlcHJpbnRfc291cmNlcyh0YXJnZXRfaW5m
b1snc291cmNlcyddKQorCisgICAgKGJwWydzdGF0aWNfbGlicyddLCBicFsnc2hhcmVkX2xpYnMn
XSwgYnBbJ2RlZmF1bHRzJ10sIGJwWydnZW5lcmF0ZWRfaGVhZGVycyddLAorICAgICBicFsnaGVh
ZGVyX2xpYnMnXSkgPSBnbl9kZXBzX3RvX2JsdWVwcmludF9kZXBzKHRhcmdldF9pbmZvLCBidWls
ZF9pbmZvKQorICAgIGJwWydzaGFyZWRfbGlicyddICs9IGduX2xpYnNfdG9fYmx1ZXByaW50X3No
YXJlZF9saWJyYXJpZXModGFyZ2V0X2luZm8pCisKKyAgICBicFsnbG9jYWxfaW5jbHVkZV9kaXJz
J10gPSBnbl9pbmNsdWRlX2RpcnNfdG9fYmx1ZXByaW50X2luY2x1ZGVfZGlycyh0YXJnZXRfaW5m
bykKKworICAgIGJwWydjZmxhZ3MnXSA9IGduX2NmbGFnc190b19ibHVlcHJpbnRfY2ZsYWdzKHRh
cmdldF9pbmZvKQorICAgIGJwWydhcmNoJ10gPSBnbl9hcmNoX3NwZWNpZmljX3RvX2JsdWVwcmlu
dCh0YXJnZXRfaW5mbykKKworICAgIGJwWydzZGtfdmVyc2lvbiddID0gc2RrX3ZlcnNpb24KKyAg
ICBicFsnc3RsJ10gPSBzdGwKKworICAgIHJldHVybiAoYmx1ZXByaW50X3R5cGUsIGJwKQorCisK
K2RlZiBnbl9hY3Rpb25fYXJnc190b19ibHVlcHJpbnRfYXJncyhibHVlcHJpbnRfaW5wdXRzLCBi
bHVlcHJpbnRfb3V0cHV0cywgYXJncyk6CisgICAgIyBUT0RPOiBwYXNzIHRoZSBnbiBnZW4gZm9s
ZGVyIGFzIGFuIGFyZyBzbyB3ZSBrbm93IGhvdyB0byBnZXQgZnJvbSB0aGUgZ2VuIHBhdGggdG8g
dGhlIHJvb3QKKyAgICAjIHBhdGguIGIvMTUwNDU3Mjc3CisgICAgcmVtYXBfZm9sZGVycyA9IFsK
KyAgICAgICAgKCcuLi8uLi8nLCAnJyksCisgICAgICAgICgnZ2VuLycsICcnKSwKKyAgICBdCisK
KyAgICByZXN1bHRfYXJncyA9IFtdCisgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICAjIEF0
dGVtcHQgdG8gZmluZCBpZiB0aGlzIGFyZyBpcyBhIHBhdGggdG8gb25lIG9mIHRoZSBpbnB1dHMu
IElmIGl0IGlzLCB1c2UgdGhlIGJsdWVwcmludAorICAgICAgICAjICQobG9jYXRpb24gPHBhdGg+
KSBhcmd1bWVudCBpbnN0ZWFkIHNvIHRoZSBwYXRoIGdldHMgcmVtYXBwZWQgcHJvcGVybHkgdG8g
dGhlIGxvY2F0aW9uCisgICAgICAgICMgdGhhdCB0aGUgc2NyaXB0IGlzIHJ1biBmcm9tCisgICAg
ICAgIHJlbWFwcGVkX3BhdGhfYXJnID0gYXJnCisgICAgICAgIGZvciAocmVtYXBfc291cmNlLCBy
ZW1hcF9kZXN0KSBpbiByZW1hcF9mb2xkZXJzOgorICAgICAgICAgICAgcmVtYXBwZWRfcGF0aF9h
cmcgPSByZW1hcHBlZF9wYXRoX2FyZy5yZXBsYWNlKHJlbWFwX3NvdXJjZSwgcmVtYXBfZGVzdCkK
KworICAgICAgICBpZiByZW1hcHBlZF9wYXRoX2FyZyBpbiBibHVlcHJpbnRfaW5wdXRzIG9yIHJl
bWFwcGVkX3BhdGhfYXJnIGluIGJsdWVwcmludF9vdXRwdXRzOgorICAgICAgICAgICAgcmVzdWx0
X2FyZ3MuYXBwZW5kKCckKGxvY2F0aW9uICVzKScgJSByZW1hcHBlZF9wYXRoX2FyZykKKyAgICAg
ICAgZWxpZiBvcy5wYXRoLmJhc2VuYW1lKHJlbWFwcGVkX3BhdGhfYXJnKSBpbiBibHVlcHJpbnRf
b3V0cHV0czoKKyAgICAgICAgICAgIHJlc3VsdF9hcmdzLmFwcGVuZCgnJChsb2NhdGlvbiAlcykn
ICUgb3MucGF0aC5iYXNlbmFtZShyZW1hcHBlZF9wYXRoX2FyZykpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICByZXN1bHRfYXJncy5hcHBlbmQocmVtYXBwZWRfcGF0aF9hcmcpCisKKyAgICBy
ZXR1cm4gcmVzdWx0X2FyZ3MKKworCitibHVlcHJpbnRfZ2VuX3R5cGVzID0geworICAgICJhY3Rp
b24iOiAiY2NfZ2VucnVsZSIsCit9CisKKworZGVmIGFjdGlvbl90YXJnZXRfdG9fYmx1ZXByaW50
KHRhcmdldCwgYnVpbGRfaW5mbyk6CisgICAgdGFyZ2V0X2luZm8gPSBidWlsZF9pbmZvW3Rhcmdl
dF0KKyAgICBibHVlcHJpbnRfdHlwZSA9IGJsdWVwcmludF9nZW5fdHlwZXNbdGFyZ2V0X2luZm9b
J3R5cGUnXV0KKworICAgIGJwID0ge30KKyAgICBicFsnbmFtZSddID0gZ25fdGFyZ2V0X3RvX2Js
dWVwcmludF90YXJnZXQodGFyZ2V0LCB0YXJnZXRfaW5mbykKKworICAgICMgQmx1ZXByaW50cyB1
c2Ugb25seSBvbmUgJ3NyY3MnLCBtZXJnZSBhbGwgZ24gaW5wdXRzIGludG8gb25lIGxpc3QuCisg
ICAgZ25faW5wdXRzID0gW10KKyAgICBpZiAnaW5wdXRzJyBpbiB0YXJnZXRfaW5mbzoKKyAgICAg
ICAgZ25faW5wdXRzICs9IHRhcmdldF9pbmZvWydpbnB1dHMnXQorICAgIGlmICdzb3VyY2VzJyBp
biB0YXJnZXRfaW5mbzoKKyAgICAgICAgZ25faW5wdXRzICs9IHRhcmdldF9pbmZvWydzb3VyY2Vz
J10KKyAgICBicF9zcmNzID0gZ25fcGF0aHNfdG9fYmx1ZXByaW50X3BhdGhzKGduX2lucHV0cykK
KworICAgIGJwWydzcmNzJ10gPSBicF9zcmNzCisKKyAgICAjIGdlbnJ1bGVzIGdlbmVyYXRlIHRo
ZSBvdXRwdXQgcmlnaHQgaW50byB0aGUgJ3Jvb3QnIGRpcmVjdG9yeS4gU3RyaXAgYW55IHBhdGgg
YmVmb3JlIHRoZQorICAgICMgZmlsZSBuYW1lLgorICAgIGJwX291dHB1dHMgPSBbXQorICAgIGZv
ciBnbl9vdXRwdXQgaW4gdGFyZ2V0X2luZm9bJ291dHB1dHMnXToKKyAgICAgICAgYnBfb3V0cHV0
cy5hcHBlbmQob3MucGF0aC5iYXNlbmFtZShnbl9vdXRwdXQpKQorCisgICAgYnBbJ291dCddID0g
YnBfb3V0cHV0cworCisgICAgYnBbJ3Rvb2xfZmlsZXMnXSA9IFtnbl9wYXRoX3RvX2JsdWVwcmlu
dF9wYXRoKHRhcmdldF9pbmZvWydzY3JpcHQnXSldCisKKyAgICAjIEdlbmVyYXRlIHRoZSBmdWxs
IGNvbW1hbmQsICQobG9jYXRpb24pIHJlZmVycyB0byB0b29sX2ZpbGVzWzBdLCB0aGUgc2NyaXB0
CisgICAgY21kID0gWyckKGxvY2F0aW9uKSddICsgZ25fYWN0aW9uX2FyZ3NfdG9fYmx1ZXByaW50
X2FyZ3MoYnBfc3JjcywgYnBfb3V0cHV0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaW5mb1snYXJncyddKQorICAg
IGJwWydjbWQnXSA9ICcgJy5qb2luKGNtZCkKKworICAgIHJldHVybiAoYmx1ZXByaW50X3R5cGUs
IGJwKQorCisKK2RlZiBnbl90YXJnZXRfdG9fYmx1ZXByaW50KHRhcmdldCwgYnVpbGRfaW5mbyk6
CisgICAgZ25fdHlwZSA9IGJ1aWxkX2luZm9bdGFyZ2V0XVsndHlwZSddCisgICAgaWYgZ25fdHlw
ZSBpbiBibHVlcHJpbnRfbGlicmFyeV90YXJnZXRfdHlwZXM6CisgICAgICAgIHJldHVybiBsaWJy
YXJ5X3RhcmdldF90b19ibHVlcHJpbnQodGFyZ2V0LCBidWlsZF9pbmZvKQorICAgIGVsaWYgZ25f
dHlwZSBpbiBibHVlcHJpbnRfZ2VuX3R5cGVzOgorICAgICAgICByZXR1cm4gYWN0aW9uX3Rhcmdl
dF90b19ibHVlcHJpbnQodGFyZ2V0LCBidWlsZF9pbmZvKQorICAgIGVsc2U6CisgICAgICAgIHJh
aXNlIFJ1bnRpbWVFcnJvcigiVW5rbm93biBnbiB0YXJnZXQgdHlwZTogIiArIGduX3R5cGUpCisK
KworZGVmIGdldF9nbl90YXJnZXRfZGVwZW5kZW5jaWVzKG91dHB1dF9kZXBlbmRlbmNpZXMsIGJ1
aWxkX2luZm8sIHRhcmdldCk6CisgICAgb3V0cHV0X2RlcGVuZGVuY2llcy5pbnNlcnQoMCwgdGFy
Z2V0KQorICAgIGZvciBkZXAgaW4gYnVpbGRfaW5mb1t0YXJnZXRdWydkZXBzJ106CisgICAgICAg
IGlmIGRlcCBpbiB0YXJnZXRfYmxhY2tpc3Q6CisgICAgICAgICAgICAjIEJsYWNrbGlzdGVkIGRl
cAorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgZGVwIGluIG91dHB1dF9kZXBlbmRl
bmNpZXM6CisgICAgICAgICAgICAjIEFscmVhZHkgYWRkZWQgdGhpcyBkZXAKKyAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBkZXAgaW4gYnVpbGRfaW5mbzoKKyAgICAgICAgICAg
ICMgTm8gaW5mbyBmb3IgdGhpcyBkZXAsIHNraXAgaXQKKyAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgIyBSZWN1cnNlCisgICAgICAgIGdldF9nbl90YXJnZXRfZGVwZW5kZW5jaWVzKG91
dHB1dF9kZXBlbmRlbmNpZXMsIGJ1aWxkX2luZm8sIGRlcCkKKworCitkZWYgbWFpbigpOgorICAg
IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICBkZXNjcmlwdGlvbj0n
R2VuZXJhdGUgQW5kcm9pZCBibHVlcHJpbnRzIGZyb20gZ24gZGVzY3JpcHRpb25zLicpCisgICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgJ2duX2pzb24nLAorICAgICAgICBoZWxwPSdn
biBkZXNjIGluIGpzb24gZm9ybWF0LiBHZW5lcmF0ZWQgd2l0aCBcJ2duIGRlc2MgPG91dF9kaXI+
IC0tZm9ybWF0PWpzb24gIioiXCcuJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQor
CisgICAgd2l0aCBvcGVuKGFyZ3MuZ25fanNvbiwgJ3InKSBhcyBmOgorICAgICAgICBidWlsZF9p
bmZvID0ganNvbi5sb2FkKGYpCisKKyAgICB0YXJnZXRzX3RvX3dyaXRlID0gW10KKyAgICBmb3Ig
cm9vdF90YXJnZXQgaW4gcm9vdF90YXJnZXRzOgorICAgICAgICBnZXRfZ25fdGFyZ2V0X2RlcGVu
ZGVuY2llcyh0YXJnZXRzX3RvX3dyaXRlLCBidWlsZF9pbmZvLCByb290X3RhcmdldCkKKworICAg
IGJsdWVwcmludF90YXJnZXRzID0gW10KKworICAgIGZvciB0YXJnZXQgaW4gdGFyZ2V0c190b193
cml0ZToKKyAgICAgICAgYmx1ZXByaW50X3RhcmdldHMuYXBwZW5kKGduX3RhcmdldF90b19ibHVl
cHJpbnQodGFyZ2V0LCBidWlsZF9pbmZvKSkKKworICAgICMgQWRkIEFQS3Mgd2l0aCBhbGwgb2Yg
dGhlIHJvb3QgbGlicmFyaWVzCisgICAgYmx1ZXByaW50X3RhcmdldHMuYXBwZW5kKCgnZmlsZWdy
b3VwJywgeworICAgICAgICAnbmFtZSc6ICdBTkdMRV9zcmNzJywKKyAgICAgICAgJ3NyY3MnOiBb
J3NyYy8qKi8qLmphdmEnLF0sCisgICAgfSkpCisKKyAgICBibHVlcHJpbnRfdGFyZ2V0cy5hcHBl
bmQoKAorICAgICAgICAnamF2YV9kZWZhdWx0cycsCisgICAgICAgIHsKKyAgICAgICAgICAgICdu
YW1lJzoKKyAgICAgICAgICAgICAgICAnQU5HTEVfamF2YV9kZWZhdWx0cycsCisgICAgICAgICAg
ICAnc2RrX3ZlcnNpb24nOgorICAgICAgICAgICAgICAgICdzeXN0ZW1fY3VycmVudCcsCisgICAg
ICAgICAgICAnbWluX3Nka192ZXJzaW9uJzoKKyAgICAgICAgICAgICAgICBzZGtfdmVyc2lvbiwK
KyAgICAgICAgICAgICdjb21waWxlX211bHRpbGliJzoKKyAgICAgICAgICAgICAgICAnYm90aCcs
CisgICAgICAgICAgICAndXNlX2VtYmVkZGVkX25hdGl2ZV9saWJzJzoKKyAgICAgICAgICAgICAg
ICBUcnVlLAorICAgICAgICAgICAgJ2puaV9saWJzJzogWworICAgICAgICAgICAgICAgIGduX3Rh
cmdldF90b19ibHVlcHJpbnRfdGFyZ2V0KHRhcmdldCwgYnVpbGRfaW5mb1t0YXJnZXRdKQorICAg
ICAgICAgICAgICAgIGZvciB0YXJnZXQgaW4gcm9vdF90YXJnZXRzCisgICAgICAgICAgICBdLAor
ICAgICAgICAgICAgJ2FhcHRmbGFncyc6IFsKKyAgICAgICAgICAgICAgICAjIERvbid0IGNvbXBy
ZXNzICouanNvbiBmaWxlcworICAgICAgICAgICAgICAgICctMCAuanNvbicsCisgICAgICAgICAg
ICAgICAgIyBHaXZlIGNvbS5hbmRyb2lkLmFuZ2xlLmNvbW1vbiBKYXZhIGZpbGVzIGFjY2VzcyB0
byB0aGUgUiBjbGFzcworICAgICAgICAgICAgICAgICctLWV4dHJhLXBhY2thZ2VzIGNvbS5hbmRy
b2lkLmFuZ2xlLmNvbW1vbicsCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJ3NyY3MnOiBb
JzpBTkdMRV9zcmNzJ10sCisgICAgICAgICAgICAncHJpdmlsZWdlZCc6CisgICAgICAgICAgICAg
ICAgVHJ1ZSwKKyAgICAgICAgICAgICdvd25lcic6CisgICAgICAgICAgICAgICAgJ2dvb2dsZScs
CisgICAgICAgIH0pKQorCisgICAgYmx1ZXByaW50X3RhcmdldHMuYXBwZW5kKCgKKyAgICAgICAg
J2FuZHJvaWRfbGlicmFyeScsCisgICAgICAgIHsKKyAgICAgICAgICAgICduYW1lJzogJ0FOR0xF
X2xpYnJhcnknLAorICAgICAgICAgICAgJ3Nka192ZXJzaW9uJzogJ3N5c3RlbV9jdXJyZW50JywK
KyAgICAgICAgICAgICdtaW5fc2RrX3ZlcnNpb24nOiBzZGtfdmVyc2lvbiwKKyAgICAgICAgICAg
ICdyZXNvdXJjZV9kaXJzJzogWydzcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzJyxdLAor
ICAgICAgICAgICAgJ2Fzc2V0X2RpcnMnOiBbJ3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9h
c3NldHMnLF0sCisgICAgICAgICAgICAnYWFwdGZsYWdzJzogWworICAgICAgICAgICAgICAgICMg
RG9uJ3QgY29tcHJlc3MgKi5qc29uIGZpbGVzCisgICAgICAgICAgICAgICAgJy0wIC5qc29uJywK
KyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnbWFuaWZlc3QnOiAnc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9BbmRyb2lkTWFuaWZlc3QueG1sJywK
KyAgICAgICAgICAgICdzdGF0aWNfbGlicyc6IFsnYW5kcm9pZHgucHJlZmVyZW5jZV9wcmVmZXJl
bmNlJyxdLAorICAgICAgICB9KSkKKworICAgIGJsdWVwcmludF90YXJnZXRzLmFwcGVuZCgoJ2Fu
ZHJvaWRfYXBwJywgeworICAgICAgICAnbmFtZSc6ICdBTkdMRScsCisgICAgICAgICdkZWZhdWx0
cyc6IFsnQU5HTEVfamF2YV9kZWZhdWx0cyddLAorICAgICAgICAnc3RhdGljX2xpYnMnOiBbJ0FO
R0xFX2xpYnJhcnknXSwKKyAgICAgICAgJ21hbmlmZXN0JzogJ3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvQW5kcm9pZE1hbmlmZXN0LnhtbCcsCisgICAg
ICAgICdyZXF1aXJlZCc6IFsncHJpdmFwcF93aGl0ZWxpc3RfY29tLmFuZHJvaWQuYW5nbGUnXSwK
KyAgICB9KSkKKworICAgIG91dHB1dCA9IFsKKyAgICAgICAgIiIiLy8gR0VORVJBVEVEIEZJTEUg
LSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSAlcworLy8KKy8vIENvcHlyaWdodCAlcyBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisiIiIgJSAoc3lzLmFy
Z3ZbMF0sIGRhdGUudG9kYXkoKS55ZWFyKQorICAgIF0KKyAgICBmb3IgKGJsdWVwcmludF90eXBl
LCBibHVlcHJpbnRfZGF0YSkgaW4gYmx1ZXByaW50X3RhcmdldHM6CisgICAgICAgIHdyaXRlX2Js
dWVwcmludChvdXRwdXQsIGJsdWVwcmludF90eXBlLCBibHVlcHJpbnRfZGF0YSkKKworICAgIHBy
aW50ICdcbicuam9pbihvdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAg
ICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
Y3JpcHRzL2dlbmVyYXRlX2VudHJ5X3BvaW50cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NjcmlwdHMvZ2VuZXJhdGVfZW50cnlfcG9pbnRzLnB5CmluZGV4IDhmZGZmZDc0ZDI0Y2YyNTBm
NWJmMmJmMWE0OWNlMjE4MzA0ZDAzNmYuLjViYjgzNWYzYzdlYjg2NzM1NzU0MmQzNzYwZDYzZTQ1
MWJhNjFhNWEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2Vu
ZXJhdGVfZW50cnlfcG9pbnRzLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Njcmlw
dHMvZ2VuZXJhdGVfZW50cnlfcG9pbnRzLnB5CkBAIC0xNDksNyArMTQ5LDcgQEAgdGVtcGxhdGVf
ZW50cnlfcG9pbnRfbm9fcmV0dXJuID0gIiIidm9pZCBHTF9BUElFTlRSWSB7bmFtZX17ZXhwbGlj
aXRfY29udGV4dF9zdWYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHt7e2Fzc2VydF9leHBsaWNp
dF9jb250ZXh0fXtwYWNrZWRfZ2xfZW51bV9jb252ZXJzaW9uc30KLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZXtu
YW1lfSh7dmFsaWRhdGVfcGFyYW1zfSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHt7CkBAIC0xNjgsNyArMTY4LDcgQEAgdGVtcGxhdGVfZW50cnlfcG9pbnRfd2l0aF9yZXR1
cm4gPSAiIiJ7cmV0dXJuX3R5cGV9R0xfQVBJRU5UUlkge25hbWV9e2V4cGxpY2l0X2MKICAgICB7
cmV0dXJuX3R5cGV9IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHt7e2Fzc2Vy
dF9leHBsaWNpdF9jb250ZXh0fXtwYWNrZWRfZ2xfZW51bV9jb252ZXJzaW9uc30KLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZXtuYW1lfSh7dmFsaWRhdGVfcGFyYW1zfSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHt7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29udGV4dF9oZWFkZXIgPSAiIiIv
LyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgogI2VuZGlmIC8vIEFOR0xFX0NPTlRFWFRf
QVBJX3t2ZXJzaW9ufV9BVVRPR0VOX0hfCiAiIiIKIAotY29udGV4dF9kZWNsX2Zvcm1hdCA9ICIi
IiAgICB7cmV0dXJuX3R5cGV9IHtuYW1lX2xvd2VyX25vX3N1ZmZpeH0oe2ludGVybmFsX3BhcmFt
c30pOyBcXCIiIgorY29udGV4dF9kZWNsX2Zvcm1hdCA9ICIiIiAgICB7cmV0dXJuX3R5cGV9IHtu
YW1lX2xvd2VyX25vX3N1ZmZpeH0oe2ludGVybmFsX3BhcmFtc30pe21heWJlX2NvbnN0fTsgXFwi
IiIKIAogbGliZ2xlc19lbnRyeV9wb2ludF9kZWYgPSAiIiJ7cmV0dXJuX3R5cGV9R0xfQVBJRU5U
UlkgZ2x7bmFtZX17ZXhwbGljaXRfY29udGV4dF9zdWZmaXh9KHtleHBsaWNpdF9jb250ZXh0X3Bh
cmFtfXtleHBsaWNpdF9jb250ZXh0X2NvbW1hfXtwYXJhbXN9KQoge3sKQEAgLTU2Myw3ICs1NjMs
MTAgQEAgdm9pZCBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGUgcGFyYW1UeXBlLCBUIHZhbHVlSW4s
IFBhcmFtVmFsdWUgKnZhbHVlT3V0KQogICAgIH19CiB9fQogCi12b2lkIFdyaXRlUGFyYW1UeXBl
VG9TdHJlYW0oc3RkOjpvc3RyZWFtICZvcywgUGFyYW1UeXBlIHBhcmFtVHlwZSwgY29uc3QgUGFy
YW1WYWx1ZSYgcGFyYW1WYWx1ZSk7CitzdHJ1Y3QgQ2FsbENhcHR1cmU7CitzdHJ1Y3QgUGFyYW1D
YXB0dXJlOworCit2b2lkIFdyaXRlUGFyYW1DYXB0dXJlUmVwbGF5KHN0ZDo6b3N0cmVhbSAmb3Ms
IGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLCBjb25zdCBQYXJhbUNhcHR1cmUgJnBhcmFtKTsKIGNv
bnN0IGNoYXIgKlBhcmFtVHlwZVRvU3RyaW5nKFBhcmFtVHlwZSBwYXJhbVR5cGUpOwogCiBlbnVt
IGNsYXNzIFJlc291cmNlSURUeXBlCkBAIC01OTQsOSArNTk3LDkgQEAgdGVtcGxhdGVfZnJhbWVf
Y2FwdHVyZV91dGlsc19zb3VyY2UgPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElU
LgogCiBuYW1lc3BhY2UgYW5nbGUKIHt7Ci12b2lkIFdyaXRlUGFyYW1UeXBlVG9TdHJlYW0oc3Rk
Ojpvc3RyZWFtICZvcywgUGFyYW1UeXBlIHBhcmFtVHlwZSwgY29uc3QgUGFyYW1WYWx1ZSYgcGFy
YW1WYWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbUNhcHR1cmVSZXBsYXkoc3RkOjpvc3RyZWFtICZvcywg
Y29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsIGNvbnN0IFBhcmFtQ2FwdHVyZSAmcGFyYW0pCiB7ewot
ICAgIHN3aXRjaCAocGFyYW1UeXBlKQorICAgIHN3aXRjaCAocGFyYW0udHlwZSkKICAgICB7ewog
e3dyaXRlX3BhcmFtX3R5cGVfdG9fc3RyZWFtX2Nhc2VzfQogICAgICAgICBkZWZhdWx0OgpAQCAt
NjU5LDcgKzY2Miw3IEBAIHRlbXBsYXRlX2luaXRfcGFyYW1fdmFsdWVfY2FzZSA9ICIiIiAgICAg
ICAgY2FzZSBQYXJhbVR5cGU6OlR7ZW51bX06CiAgICAgICAgICAgICBicmVhazsiIiIKIAogdGVt
cGxhdGVfd3JpdGVfcGFyYW1fdHlwZV90b19zdHJlYW1fY2FzZSA9ICIiIiAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlR7ZW51bX06Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlR7ZW51bX0+KG9zLCBwYXJhbVZhbHVlLnt1bmlvbl9uYW1lfSk7CisgICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUe2VudW19PihvcywgY2FsbCwg
cGFyYW0udmFsdWUue3VuaW9uX25hbWV9KTsKICAgICAgICAgICAgIGJyZWFrOyIiIgogCiB0ZW1w
bGF0ZV9wYXJhbV90eXBlX3RvX3N0cmluZ19jYXNlID0gIiIiICAgICAgICBjYXNlIFBhcmFtVHlw
ZTo6VHtlbnVtfToKQEAgLTk0OCw2ICs5NTEsMTYgQEAgZGVmIGZvcm1hdF9jYXB0dXJlX21ldGhv
ZChjb21tYW5kLCBjbWRfbmFtZSwgcHJvdG8sIHBhcmFtcywgYWxsX3BhcmFtX3R5cGVzLCBjYXAK
ICAgICAgICAgcmV0dXJuIHRlbXBsYXRlX2NhcHR1cmVfbWV0aG9kX3dpdGhfcmV0dXJuX3ZhbHVl
LmZvcm1hdCgqKmZvcm1hdF9hcmdzKQogCiAKK2RlZiBjb25zdF9wb2ludGVyX3R5cGUocGFyYW0s
IHBhY2tlZF9nbF9lbnVtcyk6CisgICAgdHlwZSA9IGp1c3RfdGhlX3R5cGVfcGFja2VkKHBhcmFt
LCBwYWNrZWRfZ2xfZW51bXMpCisgICAgaWYgIioqIiBpbiB0eXBlIGFuZCAiY29uc3QiIG5vdCBp
biB0eXBlOgorICAgICAgICByZXR1cm4gdHlwZS5yZXBsYWNlKCIqKiIsICIqIGNvbnN0ICoiKQor
ICAgIGVsaWYgIioiIGluIHR5cGUgYW5kICJjb25zdCIgbm90IGluIHR5cGU6CisgICAgICAgIHJl
dHVybiAiY29uc3QgIiArIHR5cGUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gdHlwZQorCisK
IGRlZiBnZXRfaW50ZXJuYWxfcGFyYW1zKGNtZF9uYW1lLCBwYXJhbXMsIGNtZF9wYWNrZWRfZ2xf
ZW51bXMpOgogICAgIHBhY2tlZF9nbF9lbnVtcyA9IGdldF9wYWNrZWRfZW51bXMoY21kX3BhY2tl
ZF9nbF9lbnVtcywgY21kX25hbWUpCiAgICAgcmV0dXJuICIsICIuam9pbihbCkBAIC05NTcsMTcg
Kzk3MCwyOSBAQCBkZWYgZ2V0X2ludGVybmFsX3BhcmFtcyhjbWRfbmFtZSwgcGFyYW1zLCBjbWRf
cGFja2VkX2dsX2VudW1zKToKICAgICBdKQogCiAKK2RlZiBnZXRfdmFsaWRhdGlvbl9wYXJhbXMo
Y21kX25hbWUsIHBhcmFtcywgY21kX3BhY2tlZF9nbF9lbnVtcyk6CisgICAgcGFja2VkX2dsX2Vu
dW1zID0gZ2V0X3BhY2tlZF9lbnVtcyhjbWRfcGFja2VkX2dsX2VudW1zLCBjbWRfbmFtZSkKKyAg
ICByZXR1cm4gIiwgIi5qb2luKFsKKyAgICAgICAgbWFrZV9wYXJhbSgKKyAgICAgICAgICAgIGNv
bnN0X3BvaW50ZXJfdHlwZShwYXJhbSwgcGFja2VkX2dsX2VudW1zKSwganVzdF90aGVfbmFtZV9w
YWNrZWQoCisgICAgICAgICAgICAgICAgcGFyYW0sIHBhY2tlZF9nbF9lbnVtcykpIGZvciBwYXJh
bSBpbiBwYXJhbXMKKyAgICBdKQorCisKIGRlZiBmb3JtYXRfY29udGV4dF9kZWNsKGNtZF9uYW1l
LCBwcm90bywgcGFyYW1zLCB0ZW1wbGF0ZSwgY21kX3BhY2tlZF9nbF9lbnVtcyk6CiAgICAgaW50
ZXJuYWxfcGFyYW1zID0gZ2V0X2ludGVybmFsX3BhcmFtcyhjbWRfbmFtZSwgcGFyYW1zLCBjbWRf
cGFja2VkX2dsX2VudW1zKQogCiAgICAgcmV0dXJuX3R5cGUgPSBwcm90b1s6LWxlbihjbWRfbmFt
ZSldCiAgICAgbmFtZV9sb3dlcl9ub19zdWZmaXggPSBjbWRfbmFtZVsyOjNdLmxvd2VyKCkgKyBj
bWRfbmFtZVszOl0KICAgICBuYW1lX2xvd2VyX25vX3N1ZmZpeCA9IHN0cmlwX3N1ZmZpeChuYW1l
X2xvd2VyX25vX3N1ZmZpeCkKKyAgICBtYXliZV9jb25zdCA9ICIgY29uc3QiIGlmIG5hbWVfbG93
ZXJfbm9fc3VmZml4LnN0YXJ0c3dpdGgoCisgICAgICAgICJpcyIpIGFuZCBuYW1lX2xvd2VyX25v
X3N1ZmZpeFsyXS5pc3VwcGVyKCkgZWxzZSAiIgogCiAgICAgcmV0dXJuIHRlbXBsYXRlLmZvcm1h
dCgKICAgICAgICAgcmV0dXJuX3R5cGU9cmV0dXJuX3R5cGUsCiAgICAgICAgIG5hbWVfbG93ZXJf
bm9fc3VmZml4PW5hbWVfbG93ZXJfbm9fc3VmZml4LAotICAgICAgICBpbnRlcm5hbF9wYXJhbXM9
aW50ZXJuYWxfcGFyYW1zKQorICAgICAgICBpbnRlcm5hbF9wYXJhbXM9aW50ZXJuYWxfcGFyYW1z
LAorICAgICAgICBtYXliZV9jb25zdD1tYXliZV9jb25zdCkKIAogCiBkZWYgZm9ybWF0X2xpYmds
ZXNfZW50cnlfcG9pbnRfZGVmKGNtZF9uYW1lLCBwcm90bywgcGFyYW1zLCBpc19leHBsaWNpdF9j
b250ZXh0KToKQEAgLTk4Niw4ICsxMDExLDggQEAgZGVmIGZvcm1hdF9saWJnbGVzX2VudHJ5X3Bv
aW50X2RlZihjbWRfbmFtZSwgcHJvdG8sIHBhcmFtcywgaXNfZXhwbGljaXRfY29udGV4dCkKIAog
CiBkZWYgZm9ybWF0X3ZhbGlkYXRpb25fcHJvdG8oY21kX25hbWUsIHBhcmFtcywgY21kX3BhY2tl
ZF9nbF9lbnVtcyk6Ci0gICAgaW50ZXJuYWxfcGFyYW1zID0gZ2V0X2ludGVybmFsX3BhcmFtcyhj
bWRfbmFtZSwgWyJDb250ZXh0ICpjb250ZXh0Il0gKyBwYXJhbXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRfcGFja2VkX2dsX2VudW1zKQorICAgIGludGVy
bmFsX3BhcmFtcyA9IGdldF92YWxpZGF0aW9uX3BhcmFtcyhjbWRfbmFtZSwgWyJDb250ZXh0ICpj
b250ZXh0Il0gKyBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtZF9wYWNrZWRfZ2xfZW51bXMpCiAgICAgcmV0dXJuIHRlbXBsYXRlX3ZhbGlkYXRp
b25fcHJvdG8gJSAoY21kX25hbWVbMjpdLCBpbnRlcm5hbF9wYXJhbXMpCiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nZW5lcmF0ZV9sb2FkZXIucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2dlbmVyYXRlX2xvYWRlci5weQppbmRleCA1
ZDY2MGI4NjE5YTczOTUyOTM1MDZmNzY0YjA4OTRlYjE3ZGNmYTkyLi44YzE2NzRlNmNmNDEzYzZi
NGU5YWQ3ZWJlNDliOTlkMzg4ZDlmNGJiIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2dlbmVyYXRlX2xvYWRlci5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL2dlbmVyYXRlX2xvYWRlci5weQpAQCAtMTkwLDYgKzE5MCw4IEBAIGRlZiBt
YWluKCk6CiAgICAgIyBIYW5kbGUgaW5wdXRzL291dHB1dHMgZm9yIHJ1bl9jb2RlX2dlbmVyYXRp
b24ucHkncyBhdXRvX3NjcmlwdAogICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgogICAgICAgICBp
bnB1dHMgPSBbCisgICAgICAgICAgICAnZ2wueG1sJywKKyAgICAgICAgICAgICdnbF9hbmdsZV9l
eHQueG1sJywKICAgICAgICAgICAgICdlZ2wueG1sJywKICAgICAgICAgICAgICdlZ2xfYW5nbGVf
ZXh0LnhtbCcsCiAgICAgICAgICAgICAncmVnaXN0cnlfeG1sLnB5JywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2wueG1sIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc2NyaXB0cy9nbC54bWwKaW5kZXggYTI1Y2UyNDg3ZTBhYjdkZWFlMzZjMjJlYTE4MDA2
YTc4NmQ0Mzc0OC4uZTgyY2Y3NzMzOTFmNDI0OWEwNTRiNjAyZThhZGFmNDdjMzlkM2VlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nbC54bWwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nbC54bWwKQEAgLTE4MzAsNyArMTgzMCw5IEBA
IHR5cGVkZWYgdW5zaWduZWQgaW50IEdMaGFuZGxlQVJCOwogICAgICAgICAgICAgPGVudW0gbmFt
ZT0iR0xfQ09NUFJFU1NFRF9SMTFfRUFDIi8+CiAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9D
T01QUkVTU0VEX1NJR05FRF9SMTFfRUFDIi8+CiAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9D
T01QUkVTU0VEX1JHX1JHVEMyIi8+CisgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9DT01QUkVT
U0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQiLz4KICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX0NP
TVBSRVNTRURfU0lHTkVEX1JHX1JHVEMyIi8+CisgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9D
T01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUIi8+CiAgICAgICAgICAgICA8ZW51
bSBuYW1lPSJHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STSIvPgogICAgICAgICAgICAgPGVu
dW0gbmFtZT0iR0xfQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5PUk1fQVJCIi8+CiAgICAgICAgICAg
ICA8ZW51bSBuYW1lPSJHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQiLz4KQEAgLTE2
NzY5LDYgKzE2NzcxLDEyIEBAIHR5cGVkZWYgdW5zaWduZWQgaW50IEdMaGFuZGxlQVJCOwogICAg
ICAgICAgICAgPGFsaWFzIG5hbWU9ImdsR2V0SW50ZWdlcmlfdiIvPgogICAgICAgICAgICAgPGds
eCB0eXBlPSJzaW5nbGUiIG9wY29kZT0iMjExIi8+CiAgICAgICAgIDwvY29tbWFuZD4KKyAgICAg
ICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbEdldEludGVnZXI2
NHZFWFQ8L25hbWU+PC9wcm90bz4KKyAgICAgICAgICAgIDxwYXJhbSBncm91cD0iR2V0UE5hbWUi
PjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5wbmFtZTwvbmFtZT48L3BhcmFtPgorICAgICAg
ICAgICAgPHBhcmFtIGxlbj0iQ09NUFNJWkUocG5hbWUpIj48cHR5cGU+R0xpbnQ2NDwvcHR5cGU+
ICo8bmFtZT5kYXRhPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8YWxpYXMgbmFtZT0iZ2xH
ZXRJbnRlZ2VyNjR2Ii8+CisgICAgICAgIDwvY29tbWFuZD4KICAgICAgICAgPGNvbW1hbmQ+CiAg
ICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbEdldEludGVnZXJpX3Y8L25hbWU+PC9wcm90
bz4KICAgICAgICAgICAgIDxwYXJhbSBncm91cD0iVHlwZUVudW0iPjxwdHlwZT5HTGVudW08L3B0
eXBlPiA8bmFtZT50YXJnZXQ8L25hbWU+PC9wYXJhbT4KQEAgLTQzMzM5LDYgKzQzMzQ3LDcgQEAg
dHlwZWRlZiB1bnNpZ25lZCBpbnQgR0xoYW5kbGVBUkI7CiAgICAgICAgICAgICAgICAgPGNvbW1h
bmQgbmFtZT0iZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCIvPgogICAgICAgICAgICAgICAgIDxjb21t
YW5kIG5hbWU9ImdsR2V0UXVlcnlPYmplY3RpNjR2RVhUIi8+CiAgICAgICAgICAgICAgICAgPGNv
bW1hbmQgbmFtZT0iZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUIi8+CisgICAgICAgICAgICAgICAg
PGNvbW1hbmQgbmFtZT0iZ2xHZXRJbnRlZ2VyNjR2RVhUIi8+CiAgICAgICAgICAgICA8L3JlcXVp
cmU+CiAgICAgICAgIDwvZXh0ZW5zaW9uPgogICAgICAgICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX0VY
VF9kcmF3X2J1ZmZlcnMiIHN1cHBvcnRlZD0iZ2xlczIiPgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc2NyaXB0cy9nbF9hbmdsZV9leHQueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2NyaXB0cy9nbF9hbmdsZV9leHQueG1sCmluZGV4IDQxMGMyYmFlOTY0MTNiZDU1
ZTFhN2YwZjExMWM4MDI0OTAyMzY2NDkuLjM0NGExZmExNTNjYmI0YTc2YzJkMTRlNzNiOGJjNWUz
MDQxYTYxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvZ2xf
YW5nbGVfZXh0LnhtbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL2dsX2Fu
Z2xlX2V4dC54bWwKQEAgLTgsNiArOCwxNSBAQAogICAgIGdsX2FuZ2xlX2V4dC54bWwKICAgICAg
ICAgSW5jbHVkZXMgZGF0YSB1c2VkIHRvIGF1dG8tZ2VuZXJhdGUgQU5HTEUgY2xhc3Nlcy4KICAg
ICA8L2NvbW1lbnQ+CisKKyAgICA8IS0tIFNFQ1RJT046IEdMIHBhcmFtZXRlciBjbGFzcyB0eXBl
IGRlZmluaXRpb25zLiAtLT4KKyAgICA8Z3JvdXBzPgorICAgICAgICA8Z3JvdXAgbmFtZT0iRXh0
ZXJuYWxIYW5kbGVUeXBlIj4KKyAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX0hBTkRMRV9UWVBF
X1pJUkNPTl9WTU9fQU5HTEUiLz4KKyAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX0hBTkRMRV9U
WVBFX1pJUkNPTl9FVkVOVF9BTkdMRSIvPgorICAgICAgICA8L2dyb3VwPgorICAgIDwvZ3JvdXBz
PgorCiAgICAgPCEtLSBTRUNUSU9OOiBHTCBjb21tYW5kIGRlZmluaXRpb25zLiAtLT4KICAgICA8
Y29tbWFuZHMgbmFtZXNwYWNlPSJHTCI+CiAgICAgICAgIDxjb21tYW5kPgpAQCAtMjksMTc0ICsz
OCw2IEBACiAgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbE1hdHJpeExvYWRJZGVudGl0
eUNIUk9NSVVNPC9uYW1lPjwvcHJvdG8+CiAgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51
bTwvcHR5cGU+IDxuYW1lPm1hdHJpeE1vZGU8L25hbWU+PC9wYXJhbT4KICAgICAgICAgPC9jb21t
YW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz5HTHVpbnQgPG5hbWU+
Z2xHZW5QYXRoc0NIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0
eXBlPkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT5yYW5nZTwvbmFtZT48L3BhcmFtPgotICAgICAgICA8
L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5h
bWU+Z2xEZWxldGVQYXRoc0NIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFy
YW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmZpcnN0PC9uYW1lPjwvcGFyYW0+Ci0gICAg
ICAgICAgICA8cGFyYW0+PHB0eXBlPkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT5yYW5nZTwvbmFtZT48
L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAg
ICAgPHByb3RvPkdMYm9vbGVhbiA8bmFtZT5nbElzUGF0aENIUk9NSVVNPC9uYW1lPjwvcHJvdG8+
Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnBhdGg8L25h
bWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAg
ICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsUGF0aENvbW1hbmRzQ0hST01JVU08L25hbWU+PC9w
cm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cGF0
aDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlw
ZT4gPG5hbWU+bnVtQ29tbWFuZHM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48
cHR5cGU+Y29uc3QgR0x1Ynl0ZSAqPC9wdHlwZT4gPG5hbWU+Y29tbWFuZHM8L25hbWU+PC9wYXJh
bT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPm51bUNv
b3JkczwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0
eXBlPiA8bmFtZT5jb29yZFR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48
cHR5cGU+Y29uc3Qgdm9pZCo8L3B0eXBlPiA8bmFtZT5jb29yZHM8L25hbWU+PC9wYXJhbT4KLSAg
ICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52
b2lkIDxuYW1lPmdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAg
ICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFy
YW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnBuYW1l
PC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZmxvYXQ8L3B0eXBl
PiA8bmFtZT52YWx1ZTwvbmFtZT48L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAg
IDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xQYXRoUGFyYW1ldGVy
aUNIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWlu
dDwvcHR5cGU+IDxuYW1lPnBhdGg8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48
cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+cG5hbWU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAg
ICAgIDxwYXJhbT48cHR5cGU+R0xpbnQ8L3B0eXBlPiA8bmFtZT52YWx1ZTwvbmFtZT48L3BhcmFt
PgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAgPHBy
b3RvPnZvaWQgPG5hbWU+Z2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTTwvbmFtZT48L3Byb3Rv
PgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxu
YW1lPnBuYW1lPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZmxv
YXQgKjwvcHR5cGU+IDxuYW1lPnZhbHVlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFu
ZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbEdl
dFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFy
YW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnBhdGg8L25hbWU+PC9wYXJhbT4KLSAgICAg
ICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+cG5hbWU8L25hbWU+PC9w
YXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xpbnQgKjwvcHR5cGU+IDxuYW1lPnZh
bHVlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+
Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVN
PC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+
IDxuYW1lPmZ1bmM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xp
bnQ8L3B0eXBlPiA8bmFtZT5yZWY8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48
cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+bWFzazwvbmFtZT48L3BhcmFtPgotICAgICAgICA8
L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5h
bWU+Z2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAg
PHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+Ci0g
ICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmZpbGxNb2RlPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxu
YW1lPm1hc2s8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29t
bWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsU3RlbmNpbFN0cm9rZVBhdGhD
SFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8
L3B0eXBlPiA8bmFtZT5wYXRoPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0
eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+cmVmZXJlbmNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAg
ICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPm1hc2s8L25hbWU+PC9wYXJh
bT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxw
cm90bz52b2lkIDxuYW1lPmdsQ292ZXJGaWxsUGF0aENIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0g
ICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnBhdGg8L25hbWU+
PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+
Y292ZXJNb2RlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNv
bW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbENvdmVyU3Ryb2tlUGF0aENI
Uk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwv
cHR5cGU+IDxuYW1lPnBhdGg8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5
cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Y292ZXJNb2RlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAg
IDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8
bmFtZT5nbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0g
ICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnBhdGg8L25hbWU+
PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+
ZmlsbE1vZGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+bWFzazwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5jb3Zlck1vZGU8L25hbWU+PC9wYXJhbT4KLSAgICAg
ICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lk
IDxuYW1lPmdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTTwvbmFtZT48L3Byb3Rv
PgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wYXRoPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5h
bWU+cmVmZXJlbmNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdM
dWludDwvcHR5cGU+IDxuYW1lPm1hc2s8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJh
bT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Y292ZXJNb2RlPC9uYW1lPjwvcGFyYW0+Ci0g
ICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1hbmQ+Ci0gICAgICAgICAgICA8cHJvdG8+
dm9pZCA8bmFtZT5nbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTTwvbmFtZT48L3Byb3Rv
PgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+bnVtUGF0
aDwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBl
PiA8bmFtZT5wYXRoTmFtZVR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48
cHR5cGU+Y29uc3Qgdm9pZCAqPC9wdHlwZT4gPG5hbWU+cGF0aHM8L25hbWU+PC9wYXJhbT4KLSAg
ICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cGF0aEJhc2U8L25h
bWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5h
bWU+Y292ZXJNb2RlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdM
ZW51bTwvcHR5cGU+IDxuYW1lPnRyYW5zZm9ybVR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAg
ICAgIDxwYXJhbT48cHR5cGU+Y29uc3QgR0xmbG9hdCAqPC9wdHlwZT4gPG5hbWU+dHJhbnNmb3Jt
VmFsdWVzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgPGNvbW1h
bmQ+Ci0gICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbENvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZENIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdM
c2l6ZWk8L3B0eXBlPiA8bmFtZT5udW1QYXRoPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8
cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnBhdGhOYW1lVHlwZTwvbmFtZT48L3Bh
cmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5jb25zdCB2b2lkICo8L3B0eXBlPiA8bmFt
ZT5wYXRoczwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8
L3B0eXBlPiA8bmFtZT5wYXRoQmFzZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFt
PjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5jb3Zlck1vZGU8L25hbWU+PC9wYXJhbT4KLSAg
ICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+dHJhbnNmb3JtVHlw
ZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5jb25zdCBHTGZsb2F0
ICo8L3B0eXBlPiA8bmFtZT50cmFuc2Zvcm1WYWx1ZXM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAg
PC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAgICAgIDxwcm90bz52b2lkIDxu
YW1lPmdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgot
ICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+bnVtUGF0aDwv
bmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8
bmFtZT5wYXRoTmFtZVR5cGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5
cGU+Y29uc3Qgdm9pZCAqPC9wdHlwZT4gPG5hbWU+cGF0aHM8L25hbWU+PC9wYXJhbT4KLSAgICAg
ICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cGF0aEJhc2U8L25hbWU+
PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xpbnQ8L3B0eXBlPiA8bmFtZT5y
ZWZlcmVuY2U8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+bWFzazwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT50cmFuc2Zvcm1UeXBlPC9uYW1lPjwvcGFyYW0+Ci0g
ICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IEdMZmxvYXQgKjwvcHR5cGU+IDxuYW1lPnRy
YW5zZm9ybVZhbHVlczwvbmFtZT48L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAg
IDxjb21tYW5kPgotICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xTdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+bnVtUGF0aHM8L25hbWU+PC9wYXJhbT4KLSAgICAg
ICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+cGF0aE5hbWVUeXBlPC9u
YW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPmNvbnN0IHZvaWQgKjwvcHR5
cGU+IDxuYW1lPnBhdGhzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBl
PkdMdWludDwvcHR5cGU+IDxuYW1lPnBhdGhCYXNlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAg
ICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmZpbGxNb2RlPC9uYW1lPjwvcGFy
YW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPm1hc2s8
L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4g
PG5hbWU+dHJhbnNmb3JtVHlwZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5jb25zdCBHTGZsb2F0ICo8L3B0eXBlPiA8bmFtZT50cmFuc2Zvcm1WYWx1ZXM8L25hbWU+
PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAgICAgICAg
ICAgIDxwcm90bz52b2lkIDxuYW1lPmdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXpl
aTwvcHR5cGU+IDxuYW1lPm51bVBhdGhzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFy
YW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnBhdGhOYW1lVHlwZTwvbmFtZT48L3BhcmFt
PgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5jb25zdCB2b2lkICo8L3B0eXBlPiA8bmFtZT5w
YXRoczwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0
eXBlPiA8bmFtZT5wYXRoQmFzZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxw
dHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5maWxsTW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAg
ICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5tYXNrPC9uYW1lPjwvcGFy
YW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPmNvdmVy
TW9kZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0
eXBlPiA8bmFtZT50cmFuc2Zvcm1UeXBlPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFy
YW0+PHB0eXBlPmNvbnN0IEdMZmxvYXQgKjwvcHR5cGU+IDxuYW1lPnRyYW5zZm9ybVZhbHVlczwv
bmFtZT48L3BhcmFtPgotICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgIDxjb21tYW5kPgotICAg
ICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNPC9uYW1lPjwvcHJvdG8+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0eXBl
PkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT5udW1QYXRoczwvbmFtZT48L3BhcmFtPgotICAgICAgICAg
ICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT5wYXRoTmFtZVR5cGU8L25hbWU+
PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29uc3Qgdm9pZCAqPC9wdHlwZT4g
PG5hbWU+cGF0aHM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1
aW50PC9wdHlwZT4gPG5hbWU+cGF0aEJhc2U8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxw
YXJhbT48cHR5cGU+R0xpbnQ8L3B0eXBlPiA8bmFtZT5yZWZlcmVuY2U8L25hbWU+PC9wYXJhbT4K
LSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+bWFzazwvbmFt
ZT48L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFt
ZT5jb3Zlck1vZGU8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xl
bnVtPC9wdHlwZT4gPG5hbWU+dHJhbnNmb3JtVHlwZTwvbmFtZT48L3BhcmFtPgotICAgICAgICAg
ICAgPHBhcmFtPjxwdHlwZT5jb25zdCBHTGZsb2F0ICo8L3B0eXBlPiA8bmFtZT50cmFuc2Zvcm1W
YWx1ZXM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFu
ZD4KLSAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU08L25hbWU+PC9wcm90bz4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+cHJvZ3JhbXM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJh
bT48cHR5cGU+R0xpbnQ8L3B0eXBlPiA8bmFtZT5sb2NhdGlvbjwvbmFtZT48L3BhcmFtPgotICAg
ICAgICAgICAgPHBhcmFtPjxwdHlwZT5jb25zdCBHTGNoYXIgKjwvcHR5cGU+IDxuYW1lPm5hbWU8
L25hbWU+PC9wYXJhbT4KLSAgICAgICAgPC9jb21tYW5kPgotICAgICAgICA8Y29tbWFuZD4KLSAg
ICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJP
TUlVTTwvbmFtZT48L3Byb3RvPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0
eXBlPiA8bmFtZT5wcm9ncmFtPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0+PHB0
eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+bG9jYXRpb248L25hbWU+PC9wYXJhbT4KLSAgICAgICAg
ICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Z2VuTW9kZTwvbmFtZT48L3Bh
cmFtPgotICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPmNvbXBv
bmVudHM8L25hbWU+PC9wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+Y29uc3QgR0xm
bG9hdCAqPC9wdHlwZT4gPG5hbWU+Y29lZmZzPC9uYW1lPjwvcGFyYW0+Ci0gICAgICAgIDwvY29t
bWFuZD4KICAgICAgICAgPGNvbW1hbmQ+CiAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsQ29w
eVRleHR1cmVDSFJPTUlVTTwvbmFtZT48L3Byb3RvPgogICAgICAgICAgICAgPHBhcmFtPjxwdHlw
ZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5zb3VyY2VJZDwvbmFtZT48L3BhcmFtPgpAQCAtOTc3LDcg
KzgxOCwyMSBAQAogICAgICAgICAgICAgPHBhcmFtIGdyb3VwPSJQaXhlbFR5cGUiPjxwdHlwZT5H
TGVudW08L3B0eXBlPiA8bmFtZT50eXBlPC9uYW1lPjwvcGFyYW0+CiAgICAgICAgICAgICA8cGFy
YW0gbGVuPSJDT01QU0laRSh0YXJnZXQsbGV2ZWwsZm9ybWF0LHR5cGUpIj52b2lkICo8bmFtZT5w
aXhlbHM8L25hbWU+PC9wYXJhbT4KICAgICAgICAgPC9jb21tYW5kPgorICAgICAgICA8Y29tbWFu
ZD4KKyAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsSW1wb3J0TWVtb3J5WmlyY29uSGFu
ZGxlQU5HTEU8L25hbWU+PC9wcm90bz4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50
PC9wdHlwZT4gPG5hbWU+bWVtb3J5PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+
PHB0eXBlPkdMdWludDY0PC9wdHlwZT4gPG5hbWU+c2l6ZTwvbmFtZT48L3BhcmFtPgorICAgICAg
ICAgICAgPHBhcmFtIGdyb3VwPSJFeHRlcm5hbEhhbmRsZVR5cGUiPjxwdHlwZT5HTGVudW08L3B0
eXBlPiA8bmFtZT5oYW5kbGVUeXBlPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+
PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmhhbmRsZTwvbmFtZT48L3BhcmFtPgorICAgICAg
ICA8L2NvbW1hbmQ+CisgICAgICAgIDxjb21tYW5kPgorICAgICAgICAgICAgPHByb3RvPnZvaWQg
PG5hbWU+Z2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRTwvbmFtZT48L3Byb3RvPgor
ICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5zZW1hcGhvcmU8
L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBncm91cD0iRXh0ZXJuYWxIYW5kbGVU
eXBlIj48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+aGFuZGxlVHlwZTwvbmFtZT48L3BhcmFt
PgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5oYW5kbGU8
L25hbWU+PC9wYXJhbT4KKyAgICAgICAgPC9jb21tYW5kPgogICAgIDwvY29tbWFuZHM+CisKICAg
ICA8IS0tIFNFQ1RJT046IEFOR0xFIGV4dGVuc2lvbiBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgLS0+
CiAgICAgPGV4dGVuc2lvbnM+CiAgICAgICAgIDxleHRlbnNpb24gbmFtZT0iR0xfQ0hST01JVU1f
YmluZF91bmlmb3JtX2xvY2F0aW9uIiBzdXBwb3J0ZWQ9J2dsZXMyJz4KQEAgLTk4NywzOCArODQy
LDkgQEAKICAgICAgICAgPC9leHRlbnNpb24+CiAgICAgICAgIDxleHRlbnNpb24gbmFtZT0iR0xf
Q0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyIgc3VwcG9ydGVkPSdnbGVzMic+CiAg
ICAgICAgICAgICA8cmVxdWlyZT4KLSAgICAgICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbE1h
dHJpeExvYWRmQ0hST01JVU0iLz4KLSAgICAgICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbE1h
dHJpeExvYWRJZGVudGl0eUNIUk9NSVVNIi8+CiAgICAgICAgICAgICAgICAgPGNvbW1hbmQgbmFt
ZT0iZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSIvPgogICAgICAgICAgICAgPC9yZXF1aXJl
PgogICAgICAgICA8L2V4dGVuc2lvbj4KLSAgICAgICAgPGV4dGVuc2lvbiBuYW1lPSJHTF9DSFJP
TUlVTV9wYXRoX3JlbmRlcmluZyIgc3VwcG9ydGVkPSdnbGVzMic+Ci0gICAgICAgIDxyZXF1aXJl
PgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xHZW5QYXRoc0NIUk9NSVVNIi8+Ci0gICAg
ICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbERlbGV0ZVBhdGhzQ0hST01JVU0iLz4KLSAgICAgICAg
ICAgIDxjb21tYW5kIG5hbWU9ImdsSXNQYXRoQ0hST01JVU0iLz4KLSAgICAgICAgICAgIDxjb21t
YW5kIG5hbWU9ImdsUGF0aENvbW1hbmRzQ0hST01JVU0iLz4KLSAgICAgICAgICAgIDxjb21tYW5k
IG5hbWU9ImdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSIvPgotICAgICAgICAgICAgPGNvbW1hbmQg
bmFtZT0iZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBu
YW1lPSJnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFu
ZCBuYW1lPSJnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29t
bWFuZCBuYW1lPSJnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29t
bWFuZCBuYW1lPSJnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29t
bWFuZCBuYW1lPSJnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0iLz4KLSAgICAgICAgICAgIDxj
b21tYW5kIG5hbWU9ImdsQ292ZXJGaWxsUGF0aENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29t
bWFuZCBuYW1lPSJnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29t
bWFuZCBuYW1lPSJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNIi8+Ci0gICAgICAg
ICAgICA8Y29tbWFuZCBuYW1lPSJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0i
Lz4KLSAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbENvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFN0ZW5jaWxG
aWxsUGF0aEluc3RhbmNlZENIUk9NSVVNIi8+Ci0gICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJn
bFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0iLz4KLSAgICAgICAgICAgIDxjb21t
YW5kIG5hbWU9ImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0iLz4K
LSAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSIvPgotICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0iLz4KLSAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9
ImdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0iLz4KLSAgICAgICAgPC9yZXF1
aXJlPgotICAgICAgICA8L2V4dGVuc2lvbj4KICAgICAgICAgPGV4dGVuc2lvbiBuYW1lPSJHTF9D
SFJPTUlVTV9jb3B5X3RleHR1cmUiIHN1cHBvcnRlZD0nZ2xlczInPgogICAgICAgICAgICAgPHJl
cXVpcmU+CiAgICAgICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xDb3B5VGV4dHVyZUNIUk9N
SVVNIi8+CkBAIC0xMTYzLDUgKzk4OSwyMyBAQAogICAgICAgICAgICAgICAgIDxjb21tYW5kIG5h
bWU9ImdsR2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdMRSIvPgogICAgICAgICAgICAgPC9yZXF1aXJl
PgogICAgICAgICA8L2V4dGVuc2lvbj4KKyAgICAgICAgPGV4dGVuc2lvbiBuYW1lPSJHTF9BTkdM
RV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEiIHN1cHBvcnRlZD0iZ2x8Z2xlczIiPgorICAgICAgICAg
ICAgPHJlcXVpcmU+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfSEFORExFX1RZUEVf
WklSQ09OX1ZNT19BTkdMRSIvPgorICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsSW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUiLz4KKyAgICAgICAgICAgIDwvcmVxdWlyZT4KKyAg
ICAgICAgPC9leHRlbnNpb24+CisgICAgICAgIDxleHRlbnNpb24gbmFtZT0iR0xfQU5HTEVfc2Vt
YXBob3JlX2Z1Y2hzaWEiIHN1cHBvcnRlZD0iZ2x8Z2xlczIiPgorICAgICAgICAgICAgPHJlcXVp
cmU+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfSEFORExFX1RZUEVfWklSQ09OX0VW
RU5UX0FOR0xFIi8+CisgICAgICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xJbXBvcnRTZW1h
cGhvcmVaaXJjb25IYW5kbGVBTkdMRSIvPgorICAgICAgICAgICAgPC9yZXF1aXJlPgorICAgICAg
ICA8L2V4dGVuc2lvbj4KICAgICA8L2V4dGVuc2lvbnM+CisKKyAgICA8IS0tIFNFQ1RJT046IEdM
IGVudW1lcmFudCAodG9rZW4pIGRlZmluaXRpb25zLiAtLT4KKyAgICA8ZW51bXMgbmFtZXNwYWNl
PSJHTCIgc3RhcnQ9IjB4OTNBRSIgZW5kPSIweDkzQUYiIHZlbmRvcj0iQU5HTEUiPgorICAgICAg
ICA8ZW51bSB2YWx1ZT0iMHg5M0FFIiBuYW1lPSJHTF9IQU5ETEVfVFlQRV9aSVJDT05fVk1PX0FO
R0xFIi8+CisgICAgICAgIDxlbnVtIHZhbHVlPSIweDkzQUYiIG5hbWU9IkdMX0hBTkRMRV9UWVBF
X1pJUkNPTl9FVkVOVF9BTkdMRSIvPgorICAgIDwvZW51bXM+CiA8L3JlZ2lzdHJ5PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9yZWdpc3RyeV94bWwucHkgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL3JlZ2lzdHJ5X3htbC5weQppbmRleCA0Yzg2
YmFhNjUwMjAxNWRlMmNjZTcxNGJlODU2NWVjZTVjMzg0YTNhLi44N2NhOTY5ZWNiNzU4YmI1MzVm
YWRkNDg1ZTg1ZTY3NTNjOTc0YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zY3JpcHRzL3JlZ2lzdHJ5X3htbC5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
Y3JpcHRzL3JlZ2lzdHJ5X3htbC5weQpAQCAtNTUsOCArNTUsMTAgQEAgZ2xlc19leHRlbnNpb25z
ID0gWwogICAgICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IiwKICAgICAiR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUiLAogICAgICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiwK
KyAgICAiR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhIiwKICAgICAiR0xfQU5HTEVfbXVs
dGlfZHJhdyIsCiAgICAgIkdMX0FOR0xFX3Byb3Zva2luZ192ZXJ0ZXgiLAorICAgICJHTF9BTkdM
RV9zZW1hcGhvcmVfZnVjaHNpYSIsCiAgICAgIkdMX0FOR0xFX3RleHR1cmVfbXVsdGlzYW1wbGUi
LAogICAgICJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiLAogICAgICJHTF9FWFRf
YmxlbmRfZnVuY19leHRlbmRlZCIsCkBAIC02NCw2ICs2Niw3IEBAIGdsZXNfZXh0ZW5zaW9ucyA9
IFsKICAgICAiR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIiLAogICAgICJHTF9FWFRfZGlzam9p
bnRfdGltZXJfcXVlcnkiLAogICAgICJHTF9FWFRfZHJhd19idWZmZXJzIiwKKyAgICAiR0xfRVhU
X2RyYXdfYnVmZmVyc19pbmRleGVkIiwKICAgICAiR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFzZV92
ZXJ0ZXgiLAogICAgICJHTF9FWFRfZ2VvbWV0cnlfc2hhZGVyIiwKICAgICAiR0xfRVhUX2luc3Rh
bmNlZF9hcnJheXMiLApAQCAtNzksNiArODIsNyBAQCBnbGVzX2V4dGVuc2lvbnMgPSBbCiAgICAg
IkdMX0VYVF9zUkdCIiwKICAgICAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIsCiAg
ICAgIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiLAorICAgICJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9yZ3RjIiwKICAgICAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0
YyIsCiAgICAgIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiIsCiAgICAgIkdM
X0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIsCkBAIC04OSw2ICs5Myw3IEBAIGdsZXNf
ZXh0ZW5zaW9ucyA9IFsKICAgICAiR0xfTlZfZmVuY2UiLAogICAgICJHTF9PRVNfY29tcHJlc3Nl
ZF9FVEMxX1JHQjhfdGV4dHVyZSIsCiAgICAgIkdMX09FU19kZXB0aDMyIiwKKyAgICAiR0xfT0VT
X2RyYXdfYnVmZmVyc19pbmRleGVkIiwKICAgICAiR0xfT0VTX2RyYXdfZWxlbWVudHNfYmFzZV92
ZXJ0ZXgiLAogICAgICJHTF9PRVNfRUdMX2ltYWdlIiwKICAgICAiR0xfT0VTX2dldF9wcm9ncmFt
X2JpbmFyeSIsCkBAIC0yMzAsNiArMjM1LDEwIEBAIGNsYXNzIFJlZ2lzdHJ5WE1MOgogICAgICAg
ICBmb3IgZXh0ZW5zaW9uIGluIGFuZ2xlX2V4dF9yb290Lml0ZXIoJ2V4dGVuc2lvbnMnKToKICAg
ICAgICAgICAgIGluc2VydGlvbl9wb2ludC5leHRlbmQoZXh0ZW5zaW9uKQogCisgICAgICAgIGlu
c2VydGlvbl9wb2ludCA9IHNlbGYucm9vdAorICAgICAgICBmb3IgZW51bXMgaW4gYW5nbGVfZXh0
X3Jvb3QuaXRlcignZW51bXMnKToKKyAgICAgICAgICAgIGluc2VydGlvbl9wb2ludC5hcHBlbmQo
ZW51bXMpCisKICAgICBkZWYgQWRkQ29tbWFuZHMoc2VsZiwgZmVhdHVyZV9uYW1lLCBhbm5vdGF0
aW9uKToKICAgICAgICAgeHBhdGggPSAiLi8vZmVhdHVyZVtAbmFtZT0nJXMnXS8vY29tbWFuZCIg
JSBmZWF0dXJlX25hbWUKICAgICAgICAgY29tbWFuZHMgPSBbY21kLmF0dHJpYlsnbmFtZSddIGZv
ciBjbWQgaW4gc2VsZi5yb290LmZpbmRhbGwoeHBhdGgpXQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc2NyaXB0cy9yb2xsX2Fvc3Auc2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zY3JpcHRzL3JvbGxfYW9zcC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmNiZDRiODZmNGMyYTdjMzhk
OTFkZjgwZGFiY2E1ZDZhYTljZWRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc2NyaXB0cy9yb2xsX2Fvc3Auc2gKQEAgLTAsMCArMSw3OCBAQAorIyEvYmluL2Jh
c2gKKworIyAgQ29weXJpZ2h0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjICBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjICBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorIworIyBHZW5lcmF0ZXMgYSByb2xsIENMIHdpdGhpbiB0aGUgQU5HTEUgcmVwb3NpdG9yeSBv
ZiBBT1NQLgorCitnaXQgbWVyZ2UgLVggdGhlaXJzIGFvc3AvdXBzdHJlYW0tbWlycm9yCisKK2Rl
cHM9KAorICAgICJ0aGlyZF9wYXJ0eS9zcGlydi10b29scy9zcmMiCisgICAgInRoaXJkX3BhcnR5
L2dsc2xhbmcvc3JjIgorICAgICJ0aGlyZF9wYXJ0eS9zcGlydi1oZWFkZXJzL3NyYyIKKyAgICAi
dGhpcmRfcGFydHkvdnVsa2FuLWhlYWRlcnMvc3JjIgorICAgICJ0aGlyZF9wYXJ0eS9qc29uY3Bw
IgorICAgICJ0aGlyZF9wYXJ0eS9qc29uY3BwL3NvdXJjZSIKKykKKworIyBEZWxldGUgZGVwIGRp
cmVjdG9yaWVzIHNvIHRoYXQgZ2NsaWVudCBjYW4gY2hlY2sgdGhlbSBvdXQKK2ZvciBkZXAgaW4g
JHtkZXBzW0BdfTsgZG8KKyAgICBybSAtcmYgLS1wcmVzZXJ2ZS1yb290ICRkZXAKK2RvbmUKKwor
IyBTeW5jIGFsbCBvZiBBTkdMRSdzIGRlcHMgc28gdGhhdCAnZ24gZ2VuJyB3b3JrcworcHl0aG9u
IHNjcmlwdHMvYm9vdHN0cmFwLnB5CitnY2xpZW50IHN5bmMgLUQKKworIyBnZW5lcmF0ZSBnbiBi
dWlsZCBmaWxlcyBhbmQgY29udmVydCB0aGVtIHRvIGJsdWVwcmludHMKK2duX2FyZ3M9KAorICAg
ICJ0YXJnZXRfb3MgPSBcImFuZHJvaWRcIiIKKyAgICAiaXNfY29tcG9uZW50X2J1aWxkID0gZmFs
c2UiCisgICAgImlzX2RlYnVnID0gZmFsc2UiCisKKyAgICAjIEJ1aWxkIGZvciA2NC1iaXQgQ1BV
cworICAgICJ0YXJnZXRfY3B1ID0gXCJhcm02NFwiIgorCisgICAgIyBEb24ndCBtYWtlIGEgZGVw
ZW5kZW5jeSBvbiAuZ2l0L0hFQUQuIFNvbWUgQW5kcm9pZCBidWlsZHMgYXJlIGRvbmUgd2l0aG91
dCAuZ2l0IGZvbGRlcnMKKyAgICAjIHByZXNlbnQuCisgICAgImFuZ2xlX2VuYWJsZV9jb21taXRf
aWQgPSBmYWxzZSIKKworICAgICMgVGFyZ2V0IG5kayBBUEkgMjYgdG8gbWFrZSBzdXJlIEFOR0xF
IGNhbiB1c2UgdGhlIFZ1bGthbiBiYWNrZW5kIG9uIEFuZHJvaWQKKyAgICAiYW5kcm9pZDMyX25k
a19hcGlfbGV2ZWwgPSAyNiIKKyAgICAiYW5kcm9pZDY0X25ka19hcGlfbGV2ZWwgPSAyNiIKKwor
ICAgICMgRGlzYWJsZSBhbGwgYmFja2VuZHMgZXhjZXB0IFZ1bGthbgorICAgICJhbmdsZV9lbmFi
bGVfdnVsa2FuID0gdHJ1ZSIKKyAgICAiYW5nbGVfZW5hYmxlX2dsID0gdHJ1ZSIgIyBUT0RPKGdl
b2ZmbGFuZyk6IERpc2FibGUgR0wgb25jZSBBbmRyaWQgbm8gbG9uZ2VyIHJlcXVpcmVzIGl0LiBh
bmdsZWJ1Zy5jb20vNDQ0NAorICAgICJhbmdsZV9lbmFibGVfZDNkOSA9IGZhbHNlIgorICAgICJh
bmdsZV9lbmFibGVfZDNkMTEgPSBmYWxzZSIKKyAgICAiYW5nbGVfZW5hYmxlX251bGwgPSBmYWxz
ZSIKKyAgICAiYW5nbGVfZW5hYmxlX21ldGFsID0gZmFsc2UiCisKKyAgICAjIFN3aWZ0U2hhZGVy
IGlzIGxvYWRlZCBhcyB0aGUgc3lzdGVtIFZ1bGthbiBkcml2ZXIgb24gQW5kcm9pZCwgbm90IGNv
bXBpbGVkIGJ5IEFOR0xFCisgICAgImFuZ2xlX2VuYWJsZV9zd2lmdHNoYWRlciA9IGZhbHNlIgor
CisgICAgIyBEaXNhYmxlIGFsbCBzaGFkZXIgdHJhbnNsYXRvciB0YXJnZXRzIGV4Y2VwdCBkZXNr
dG9wIEdMIChmb3IgVnVsa2FuKQorICAgICJhbmdsZV9lbmFibGVfZXNzbCA9IHRydWUiICMgVE9E
TyhnZW9mZmxhbmcpOiBEaXNhYmxlIEVTU0wgb25jZSBBbmRyaWQgbm8gbG9uZ2VyIHJlcXVpcmVz
IGl0LiBhbmdsZWJ1Zy5jb20vNDQ0NAorICAgICJhbmdsZV9lbmFibGVfZ2xzbCA9IHRydWUiICMg
VE9ETyhnZW9mZmxhbmcpOiBEaXNhYmxlIEVTU0wgb25jZSBBbmRyaWQgbm8gbG9uZ2VyIHJlcXVp
cmVzIGl0LiBhbmdsZWJ1Zy5jb20vNDQ0NAorICAgICJhbmdsZV9lbmFibGVfaGxzbCA9IGZhbHNl
IgorKQorZ24gZ2VuIG91dC9BbmRyb2lkIC0tYXJncz0iJHtnbl9hcmdzWypdfSIKK2duIGRlc2Mg
b3V0L0FuZHJvaWQgLS1mb3JtYXQ9anNvbiAiKiIgPiBvdXQvQW5kcm9pZC9kZXNjLmpzb24KK3B5
dGhvbiBzY3JpcHRzL2dlbmVyYXRlX2FuZHJvaWRfYnAucHkgb3V0L0FuZHJvaWQvZGVzYy5qc29u
ID4gQW5kcm9pZC5icAorcm0gLXIgb3V0CitnaXQgYWRkIEFuZHJvaWQuYnAKKworIyBEZWxldGUg
dGhlIC5naXQgZmlsZXMgaW4gZWFjaCBkZXAgc28gdGhhdCBpdCBjYW4gYmUgYWRkZWQgdG8gdGhp
cyByZXBvLiBTb21lIGRlcHMgbGlrZSBqc29uY3BwCisjIGhhdmUgbXVsdGlwbGUgbGF5ZXJzIG9m
IGRlcHMgc28gZGVsZXRlIGV2ZXJ5dGhpbmcgYmVmb3JlIGFkZGluZyB0aGVtLgorZm9yIGRlcCBp
biAke2RlcHNbQF19OyBkbworICAgIHJtIC1yZiAtLXByZXNlcnZlLXJvb3QgJGRlcC8uZ2l0Citk
b25lCisKK2ZvciBkZXAgaW4gJHtkZXBzW0BdfTsgZG8KKyAgICBnaXQgYWRkIC1mICRkZXAKK2Rv
bmUKKworZ2l0IGNvbW1pdCAtLWFtZW5kIC0tbm8tZWRpdApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc2NyaXB0cy90cmlnZ2VyLnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc2NyaXB0cy90cmlnZ2VyLnB5CmluZGV4IDNlMWQ5M2FiNTE5ZGZhMDA0MTIxOTFhOTQyOWU3
ZjU2OGFmN2EyOGMuLmYzNDNkYmNmMDgyODU5Y2M1ZWVkNmM2ZDIzYmYxNjA3ZWI2ODk2ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvdHJpZ2dlci5weQorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zY3JpcHRzL3RyaWdnZXIucHkKQEAgLTgsNiArOCw3
IEBACiAjICAgSGVscGVyIHNjcmlwdCBmb3IgdHJpZ2dlcmluZyBHUFUgdGVzdHMgb24gc3dhcm1p
bmcuCiAKIGltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGhhc2hsaWIKIGltcG9ydCBvcwogaW1wb3J0
IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKQEAgLTI0LDYgKzI1LDQ3IEBAIGRlZiBwYXJzZV9hcmdz
KCk6CiAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKCkKIAogCisjIFRha2VuIGZy
b206CisjIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvdG9v
bHMvbWIvKy8yMTkyZGY2NmNkMGVkMjE0YmNmYmZkMzg3YWQwYzVjOGMwYTIxZWIxL21iLnB5IzU4
NgorZGVmIGFkZF9iYXNlX3NvZnR3YXJlKHN3YXJtaW5nX2FyZ3MpOgorICAgICMgSEFDSyhpYW5u
dWNjaSk6IFRoZXNlIHBhY2thZ2VzIFNIT1VMRCBOT1QgQkUgSEVSRS4KKyAgICAjIFJlbW92ZSBt
ZXRob2Qgb25jZSBTd2FybWluZyBQb29sIFRhc2sgVGVtcGxhdGVzIGFyZSBpbXBsZW1lbnRlZC4K
KyAgICAjIGNyYnVnLmNvbS84MTI0MjgKKworICAgICMgQWRkIGluIHJlcXVpcmVkIGJhc2Ugc29m
dHdhcmUuIFRoaXMgc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZQorICAgICMgYGNocm9t
aXVtX3N3YXJtaW5nYCByZWNpcGUgbW9kdWxlIGluIGJ1aWxkLmdpdC4gQWxsIHJlZmVyZW5jZXMg
dG8KKyAgICAjIGBzd2FybWluZ19tb2R1bGVgIGJlbG93IGFyZSBwdXJlbHkgZHVlIHRvIHRoaXMu
CisgICAgY2lwZF9wYWNrYWdlcyA9IFsKKyAgICAgICAgKCdpbmZyYS9weXRob24vY3B5dGhvbi8k
e3BsYXRmb3JtfScsICd2ZXJzaW9uOjIuNy4xNS5jaHJvbWl1bTE0JyksCisgICAgICAgICgnaW5m
cmEvdG9vbHMvbHVjaS9sb2dkb2cvYnV0bGVyLyR7cGxhdGZvcm19JywKKyAgICAgICAgICdnaXRf
cmV2aXNpb246ZTFhYmM1N2JlNjJkMTk4YjVjMmY0ODdiZmIyZmEyZDJlYjBlODY3YycpLAorICAg
ICAgICAoJ2luZnJhL3Rvb2xzL2x1Y2kvdnB5dGhvbi1uYXRpdmUvJHtwbGF0Zm9ybX0nLAorICAg
ICAgICAgJ2dpdF9yZXZpc2lvbjplMzE3YzdkMmMxN2Q0YzM0NjBlZTM3NTI0ZGZjZTRlMWRlZTQz
MDZhJyksCisgICAgICAgICgnaW5mcmEvdG9vbHMvbHVjaS92cHl0aG9uLyR7cGxhdGZvcm19JywK
KyAgICAgICAgICdnaXRfcmV2aXNpb246ZTMxN2M3ZDJjMTdkNGMzNDYwZWUzNzUyNGRmY2U0ZTFk
ZWU0MzA2YScpLAorICAgIF0KKworICAgIGZvciBwa2csIHZlcnMgaW4gY2lwZF9wYWNrYWdlczoK
KyAgICAgICAgc3dhcm1pbmdfYXJncy5hcHBlbmQoJy0tY2lwZC1wYWNrYWdlPS5zd2FybWluZ19t
b2R1bGU6JXM9JXMnICUgKHBrZywgdmVycykpCisKKyAgICAjIEFkZCBwYWNrYWdlcyB0byAkUEFU
SAorICAgIHN3YXJtaW5nX2FyZ3MuZXh0ZW5kKFsKKyAgICAgICAgJy0tZW52LXByZWZpeCcsCisg
ICAgICAgICdQQVRIPS5zd2FybWluZ19tb2R1bGUnLAorICAgICAgICAnLS1lbnYtcHJlZml4JywK
KyAgICAgICAgJ1BBVEg9LnN3YXJtaW5nX21vZHVsZS9iaW4nLAorICAgIF0pCisKKyAgICAjIEFk
ZCBjYWNoZSBkaXJlY3RpdmVzIGZvciB2cHl0aG9uLgorICAgIHZweXRob25fY2FjaGVfcGF0aCA9
ICcuc3dhcm1pbmdfbW9kdWxlX2NhY2hlL3ZweXRob24nCisgICAgc3dhcm1pbmdfYXJncy5leHRl
bmQoWworICAgICAgICAnLS1uYW1lZC1jYWNoZScsCisgICAgICAgICdzd2FybWluZ19tb2R1bGVf
Y2FjaGVfdnB5dGhvbj0nICsgdnB5dGhvbl9jYWNoZV9wYXRoLAorICAgICAgICAnLS1lbnYtcHJl
Zml4JywKKyAgICAgICAgJ1ZQWVRIT05fVklSVFVBTEVOVl9ST09UPScgKyB2cHl0aG9uX2NhY2hl
X3BhdGgsCisgICAgXSkKKworCiBkZWYgbWFpbigpOgogICAgIGFyZ3MsIHVua25vd24gPSBwYXJz
ZV9hcmdzKCkKICAgICBwYXRoID0gYXJncy5nbl9wYXRoLnJlcGxhY2UoJ1xcJywgJy8nKQpAQCAt
MzMsMzMgKzc1LDQyIEBAIGRlZiBtYWluKCk6CiAgICAgbWJfc2NyaXB0X3BhdGggPSBvcy5wYXRo
LmpvaW4oJ3Rvb2xzJywgJ21iJywgJ21iLnB5JykKICAgICBzdWJwcm9jZXNzLmNhbGwoWydweXRo
b24nLCBtYl9zY3JpcHRfcGF0aCwgJ2lzb2xhdGUnLCBvdXRfZ25fcGF0aCwgYXJncy50ZXN0XSkK
IAotICAgIGlzb2xhdGVfc2NyaXB0X3BhdGggPSBvcy5wYXRoLmpvaW4oJ3Rvb2xzJywgJ3N3YXJt
aW5nX2NsaWVudCcsICdpc29sYXRlLnB5JykKKyAgICBpc29sYXRlX2NtZF9wYXRoID0gb3MucGF0
aC5qb2luKCd0b29scycsICdsdWNpLWdvJywgJ2lzb2xhdGUnKQogICAgIGlzb2xhdGVfZmlsZSA9
IG9zLnBhdGguam9pbihvdXRfZmlsZV9wYXRoLCAnJXMuaXNvbGF0ZScgJSBhcmdzLnRlc3QpCiAg
ICAgaXNvbGF0ZWRfZmlsZSA9IG9zLnBhdGguam9pbihvdXRfZmlsZV9wYXRoLCAnJXMuaXNvbGF0
ZWQnICUgYXJncy50ZXN0KQogCiAgICAgaXNvbGF0ZV9hcmdzID0gWwotICAgICAgICAncHl0aG9u
JywgaXNvbGF0ZV9zY3JpcHRfcGF0aCwgJ2FyY2hpdmUnLCAnLUknLCAnaHR0cHM6Ly9pc29sYXRl
c2VydmVyLmFwcHNwb3QuY29tJywgJy1pJywKLSAgICAgICAgaXNvbGF0ZV9maWxlLCAnLXMnLCBp
c29sYXRlZF9maWxlCisgICAgICAgIGlzb2xhdGVfY21kX3BhdGgsICdhcmNoaXZlJywgJy1JJywg
J2h0dHBzOi8vaXNvbGF0ZXNlcnZlci5hcHBzcG90LmNvbScsICctaScsIGlzb2xhdGVfZmlsZSwK
KyAgICAgICAgJy1zJywgaXNvbGF0ZWRfZmlsZQogICAgIF0KLSAgICBzdGRvdXQgPSBzdWJwcm9j
ZXNzLmNoZWNrX291dHB1dChpc29sYXRlX2FyZ3MpCi0gICAgc2hhID0gc3Rkb3V0Wzo0MF0KKyAg
ICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoaXNvbGF0ZV9hcmdzKQorICAgIHdpdGggb3Blbihpc29s
YXRlZF9maWxlLCAncmInKSBhcyBmOgorICAgICAgICBzaGEgPSBoYXNobGliLnNoYTEoZi5yZWFk
KCkpLmhleGRpZ2VzdCgpCiAKICAgICBwcmludCgnR290IGFuIGlzb2xhdGVkIFNIQSBvZiAlcycg
JSBzaGEpCi0gICAgc3dhcm1pbmdfc2NyaXB0X3BhdGggPSBvcy5wYXRoLmpvaW4oJ3Rvb2xzJywg
J3N3YXJtaW5nX2NsaWVudCcsICdzd2FybWluZy5weScpCisgICAgc3dhcm1pbmdfc2NyaXB0X3Bh
dGggPSBvcy5wYXRoLmpvaW4oJ3Rvb2xzJywgJ2x1Y2ktZ28nLCAnc3dhcm1pbmcnKQogCi0gICAg
c3dhcm1pbmdzX2FyZ3MgPSBbCi0gICAgICAgICdweXRob24nLCBzd2FybWluZ19zY3JpcHRfcGF0
aCwgJ3RyaWdnZXInLCAnLVMnLCAnY2hyb21pdW0tc3dhcm0uYXBwc3BvdC5jb20nLCAnLUknLAot
ICAgICAgICAnaXNvbGF0ZXNlcnZlci5hcHBzcG90LmNvbScsICctZCcsICdvcycsIGFyZ3Mub3Nf
ZGltLCAnLWQnLCAncG9vbCcsIGFyZ3MucG9vbCwgJy1kJywgJ2dwdScsCi0gICAgICAgIGFyZ3Mu
Z3B1X2RpbSwKLSAgICAgICAgJy0tc2hhcmRzPSVkJyAlIGFyZ3Muc2hhcmRzLCAnLXMnLCBzaGEK
KyAgICBzd2FybWluZ19hcmdzID0gWworICAgICAgICBzd2FybWluZ19zY3JpcHRfcGF0aCwgJ3Ry
aWdnZXInLCAnLVMnLCAnY2hyb21pdW0tc3dhcm0uYXBwc3BvdC5jb20nLCAnLUknLAorICAgICAg
ICAnaHR0cHM6Ly9pc29sYXRlc2VydmVyLmFwcHNwb3QuY29tJywgJy1kJywgJ29zPScgKyBhcmdz
Lm9zX2RpbSwgJy1kJywgJ3Bvb2w9JyArIGFyZ3MucG9vbCwKKyAgICAgICAgJy1kJywgJ2dwdT0n
ICsgYXJncy5ncHVfZGltLCAnLXMnLCBzaGEKICAgICBdCiAKLSAgICBpZiB1bmtub3duOgotICAg
ICAgICBzd2FybWluZ3NfYXJncyArPSBbIi0tIl0gKyB1bmtub3duCisgICAgYWRkX2Jhc2Vfc29m
dHdhcmUoc3dhcm1pbmdfYXJncykKIAorICAgIGZvciBpIGluIHJhbmdlKGFyZ3Muc2hhcmRzKToK
KyAgICAgICAgc2hhcmRfYXJncyA9IHN3YXJtaW5nX2FyZ3NbOl0KKyAgICAgICAgc2hhcmRfYXJn
cy5leHRlbmQoWworICAgICAgICAgICAgJy0tZW52JywKKyAgICAgICAgICAgICdHVEVTVF9UT1RB
TF9TSEFSRFM9JWQnICUgYXJncy5zaGFyZHMsCisgICAgICAgICAgICAnLS1lbnYnLAorICAgICAg
ICAgICAgJ0dURVNUX1NIQVJEX0lOREVYPSVkJyAlIGksCisgICAgICAgIF0pCisgICAgICAgIGlm
IHVua25vd246CisgICAgICAgICAgICBzaGFyZF9hcmdzICs9IFsiLS0iXSArIHVua25vd24KIAot
ICAgIHByaW50KCcgJy5qb2luKHN3YXJtaW5nc19hcmdzKSkKLSAgICBzdWJwcm9jZXNzLmNhbGwo
c3dhcm1pbmdzX2FyZ3MpCisgICAgICAgIHByaW50KCcgJy5qb2luKHNoYXJkX2FyZ3MpKQorICAg
ICAgICBzdWJwcm9jZXNzLmNhbGwoc2hhcmRfYXJncykKICAgICByZXR1cm4gMAogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9hc3NldHMvYTRhX3J1bGVzLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvYXNzZXRzL2E0YV9ydWxlcy5qc29uCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYw
NzM1ZDM1OGIwZDVhYjM0ODQzZWNiYmU2ZmIxMDNkOWU3MDVhMjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvYXNz
ZXRzL2E0YV9ydWxlcy5qc29uCkBAIC0wLDAgKzEsMjUgQEAKK3sKKyAgICJSdWxlcyI6WworICAg
ICAgeworICAgICAgICAgIlJ1bGUiOiJEZWZhdWx0IFJ1bGUgKGkuZS4gdXNlIG5hdGl2ZSBkcml2
ZXIpIiwKKyAgICAgICAgICJVc2VBTkdMRSI6ZmFsc2UKKyAgICAgIH0sCisgICAgICB7CisgICAg
ICAgICAiUnVsZSI6IlN1cHBvcnRlZCBhcHBsaWNhdGlvbihzKSAoZS5nLiBNYXBzIG9uIEdvb2ds
ZSBkZXZpY2VzKSIsCisgICAgICAgICAiVXNlQU5HTEUiOnRydWUsCisgICAgICAgICAiQXBwbGlj
YXRpb25zIjpbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiQXBwTmFtZSI6ImNvbS5h
bmRyb2lkLmFuZ2xlIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICJBcHBOYW1lIjoiY29tLmdvb2dsZS5hbmRyb2lkLmFuZ2xlIgorICAgICAgICAgICAgfQor
ICAgICAgICAgXSwKKyAgICAgICAgICJEZXZpY2VzIjpbCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAiTWFudWZhY3R1cmVyIjoiR29vZ2xlIgorICAgICAgICAgICAgfQorICAgICAgICAg
XQorICAgICAgfQorICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy9kcmF3YWJsZS9pY29uLnBuZyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvZHJhd2Fi
bGUvaWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhjZmQ1MWUwNjMzN2E2YTkyNWUwZTA2NjY5MWI0MWZm
YzQ2MDA1NQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzkwOQp6Y21ZKmNYSUstKytEJTkoaVBT
YHByaVJkNURXUjdEUTZaRnM1fU1MUXhgMlF7a2Q4RDNCPWlMN3FJM31pPXtBWn4KejE/ZzMpcHRL
Yk83Xj5vaC1UbjV2Y2I7Y3YtZylRRElxI1lJSEYxVXArQUw2QkM7JExwIVJjVSlrN3VjcSZjdHYk
CnpuJGhqWTk4Vy1CVntMVW48d3lTMjt8MWlsailnQShhMC02WGZxPCtXP3FoKDN0RW9CQlR3ZjNF
O04+QXs9amRoYwp6QnBLandgeHAlWHMwTl5xTGt9bVM5VXtRdm1adld8S24/ajkwKH41eHEpfHgz
VWw1fFo4cSE/ZjVUVzdhPEFqaXgKemwjYFN+VnhSfkZMZTxDNzhFdVQhYHNldVpOKTM2Rk5XNl9r
cTVTPipDSC1ZM3k/azZ5KCNwIXBDQEMzfmpFdXhGCnpMYyV4RGxWfSRwO3ByPipIXzg5O1Y0WnYm
ZHxZbzZVQTtVSkMla3N7VVZjUDFCPVNWKS19Wk4lTHw1bmtTTXYxegp6JEpWaHkpWDVHP1QyYyEy
RlpjMEwpc3JsbTtOJDlhdGJEP2NreWlaK2A5SGFUYld+OSU7e1IzNS0la0leOSRVcGcKelJaOyg1
OHdSU15DVGVsfkpvaitlRTJjTjtgeikrVEhkbEYkI0BePW1lJEExVSYwVmNeUWc+STg1S2JzVTck
aUtECnpxd0JvRHQtb1o0WGtgPkUtRSpYTm1NX0xATUhFSXR1TWFURngwWkZzbXRrUjZfVD1SSDg9
TyR7ZDx+Yk5NfkFlVwp6OGRVUkteVW16RE96dDFkcVo2U29vTmFieS1TNXUqeldjaipZIT52Qmpn
MkZxWkBBe1ctMHQmPGRnaXZDN1Rze1EKejImTGRqTWQpNXRPUzY1MVNRVEBsMlZ2ZnEhWmVKYDgh
Nm4qPjspbHpuVGJHbilGbz53Ykp7YFBebjwxTzJRVCtkCnpBPkRFSWl4RmF9KEV1JTAoVl5zJEs/
IyZ5dnp7T35KU1hnbXE0R3VnSyREPTBrQUw3YUA0VVY2cUZpaXE+fmlqSAp6dCZscEo2QztKV3Iz
MlhMdFZwKkghaWMteVc+VEF3b3JAU0pmYk14cUEyQj1sYX5YdGptaitWaiVyeTdFQlpGVSgKekNl
N2VZczw0TmU7akw/I3B8UU9aT2tjK0xwNDJZKEpBPFlvUyhMJlVGNjEpNGM2RUBfcm8lYDJaR2I7
dFRueH5yCnpGVmE5aG50MzlXX2B6ZDspRHJYUiRPZXdzJWkrUDYhaDBPe0lIb3BCUzM0fTRjKWZD
cXpUakhrdzgoJUtkeHZsfQp6ZGd7YUooYj95UEEmM1NLanc4RjI7TDF0UUJVNFZFNUhsWjNkMF9j
MkBZR3c4LU4kQmNsVXlLMkE2N2J+Wj8jUUEKeiZmZyF9SnBHZ1ZSOGhmfW9lXylgJEwrQzlLdDkj
JXVDUiM/RysxKGZNZEImVXhraitSM1lLZWpWRT0pMytZKzlSCnptZFNnXkpCQGd3XnFeYz9jfDJt
dUR4OXokeWxoPyEoRWNMcGF6JWBhSE5kTlhBIVozWnIzUTEmenJJV2pDYnhTQgp6MjMrK0M+SDty
MHVaNk4jYjJZKHRBRn5ffD5ldVhpPUpiXj5lcGZDZnN+JkhIQG1uVnRXNDIjb2FpejM2MH16QFAK
em91O0E8O3x3XjVsal8qYHdRXl5CYm5TekY5eWBZP2ZPRDN1V3JIfFBtKjU7YWlSPEFuOUNiQWNm
bjVeYT56NXRvCno/K1BOTndXdD0haFE4UDJnT3QpTGMwfHBHdyt5PGlLRyZgb0FkNnshTXFfdTNV
b34taVBrX2RLPVBfYmk8dG44OAp6SGNXfkBYWnpVKj5IQTRHYHZGI1RWX1ZSLVhSQHA1bn5RRThL
I21AblladlNjbTBDIyFSPGRrVkFeZ1k4c2Q7WDsKemtkYi1uRHdOb2luc05nY3VFN3QoJUMoQEVW
ejdCSGhjaUF8b1pyI0I2UWshU21mOSE7dFclT1drNX1+NkpRSWVhCnoyMGttQTRYIzQpTmpjUXBg
X3dab0s9UnxxYzVqOXpsP3xWRFFSflRDJiEoVEZoRjh6dHE9bCFOeiZldXo+X2BKdgp6RzFLM1gk
XiN5fjgocG0zSypHfTNvNUYtPUleayhTcilAN19IYm5sXmg4KVNze316RldjVkVwPTIrZT5oKmV+
ZWsKekZBN1BOakUlbzBRMVJpREY8Q218RDRgcCRSWSNheDE/Mnwqe2kxSUhRXllJQyooMyZeIy07
MlRIa097YDU5YUt0Cnp1QDRgKFRGflhSKlVlV0tnPk9fSjQjMEVOMn0tMk9RdVBARWtLNElWUW8l
elMza2xwIU14czZGRWNFQz5GR2d+Pgp6cGh2aTZaeyZWLVIhZWRJc0lFbXNYS2M5O3hGKTJ4bFRs
RFAjYURsQl9qRXdwVnxrSHU7cWFwe00oc3B3Qmc2VWoKenRhSW8ycVRteSFkdkVBRUY/PWVRbyM1
MlZieG9RWFp7KkZqVW4oUVlje21TYzNQZkI0SEE+TFd5OFk2LWNDa2R1Cnp3ZmxXJV5tYE9uRkUt
bnwmbVdaZT1jZkwrViFFYTY7VGFBQGE4eTcwUG1hOHFrem58a2NGaEVEVWVhTUN5XkVPfgp6cj4k
OGdwSmV8YiVJPldMX2h7Uk53clB1NG5fQU9kPXloRT5QZ2UlS1lEJXM8KiM4e31rTSZkTVhZS3ow
QTw+N2YKejkwcHgmKDt5R1BlPzwxOTRYSHVhKnZwSV9tQ1orUjtVQVJlbC0raGdYS2xGIT4haXRo
LXphUDR2d0VBe0s0JTVICnpEZ0Y4SGU7RXxYQ0V+cHdWMmUzcXtua0Z5a0s8JkxIfVp6eyRtWHg/
UispK0p4ZEZPZXd7QlBzNCVlKHopSUlvPwp6IVB+Z25uOTxTXzl1PDBzb0RRMGl7R3JvMmVaJH4w
Z1JIO1pKTn4xNClnS3FEaTZwYyE4dVVCXzcrKFpnIVZpbnIKekZpbXxtNiNIMFJpTH0zN0o2N01D
WkRDRCZNN35jPF8zYUNGNF8mQTR6PEZpM2pfRm5WbGBBZ1RjN2p5PXAlOCNkCnp7Y05vSnVXRzdS
Q2NtVVg/T0R3VVdzPzBxOEJYcE9rVzZhKkwlJnJ4O0NjNU9lZVpMP2N3MShwZi1yWUdmQyNJUwp6
VVA4cVNvY0pgcGtmWGd+KSkyKzYpTD5jZlNza01GcXl5d2k/cGtifm9RcShxZWc1Y148dHlwfiNp
PW15Skw1VVQKenBJZmQ9QUM/RVRkYXoocjVmNzZERF80b0JXKDlsczVCYWMjQTxJTyp3bGtnX1dO
Y1I0PjNvPTV4KFZJT05xQjtpCnpQOVpzeyNYZHx+QlgzTHN0VytGYVA8cHROYm5CODsjKXtJfj5q
bk8wcjJKWVZuS1R5YFZWc0gweVQtPFpkRDd2KQp6V2RkYk5afTQmTj5vfTdiPjlRYm1uTkN7T3FF
PzlIVE9FPjBMeEFRRyZobFExMnhNVnVCcCEmV05RWUlPPmJVZ2EKekQ4VmEjPlgjKmRrUEFPQ3J7
Rz4hKzVSN1U7T3swZlB4b1c1QzJmTj4zQmsyNTJ+Pkh5VTVuYWxmai0ld3F9NzJoCno+KHlPfWtL
QHpkbXQwWDdFJiVZSig+WWorcGRfTSFvfnFXeEJ7IVM5VWtZWVNzRjZDaGN0a3hIKlFQTTZDMytR
Qgp6KVI5MH0pK1lQIyp4amNeb1ZRdiZTM0F5RU02WWw+amozKyY2fFdyOGlKWUc+ZihXPHBVR3Zo
eCNqT1BSdXVpS2UKenVzVDBaRkVCdnhJYVRjPjYtKzYlbk41NFFwUGghbVV1JUBCZkglXik3TDM7
RT45NjkjI3I4OzglQ3tWQHBtJkRYCnpBaCpZT1FaaWNncFl5UDtEOUQxIXFHNk1jS0tPJDtNa3Rw
eEYlSSFuQXU4Qmh0T219NiFROTc+MlpFJj16YDRacAp6UTZ1Y0hIN1g4O3RjI3NBQEZKaigoSSVx
Rjw5OTkhJi1DdVExPT80RyQ8WSFjZXFsZkA7WmRAKXRXMVRCRioxK34KejxUNUUkYiZoKX1rZ0d9
OGFodTUqQmJSOElYSGhIXyl0R0JoKyNYWG14UiM/O2FnTClmbEZjTmEyU3wlZEVJVSl7CnoyJHJH
cGlkX195TmM1eX5QYWpBRTgycT08JD9PWjdXbzlycyk/UEhMLUsyUT9tRyEmXl9HeUtyd1JGaEhN
Yy1Iegp6MyVxPHxuN3Y7bSFMWHtIeTtRak0/YnNFM3Y4Mz0wQnxLOH1FalZEenomKW4qbl5hPjB7
ejBXe3gpSDt5KUZKbV4KekwjVVFzMzlRUTlkI0xKZTE+Pz93M1pDMTY+NUBYYytvND1yeXs2QCo+
WChHX0Y3T0VSXi1vLWxGbm97V0pjVUY5CnpuN3BWOWxEJURySWVifCNWJWc4ZiZge3VHLT4jVX1K
dz5gO3p2dzhZJWUxRTslRyp3RmllQmRNOHlFckdkfVprdgp6Uz9kRW9BKFFDKFYjTyhHZEdSSzZU
JjBsKWFkTndxKnUtb2xBckFhaVR3JnxYZ21FY2wpdTIzOCpaRENuU2BWZV4KeiN9SHZzOUoyNkwq
QkRTQlUqeyN4NSRSeUgwejdMdzMtMUd1Xz10fmY8KEwlWmhJYGlmXn5wJTE5eUl4c2N0Nz98Cnpi
PnhaXjE9N1lrVmttfFI7d3d1fUx+fio/O25IPV9WV2FzS1E3JFU5YHZPNFMjOXRYNitDOFBEN2RO
aTRUYDs4Zwp6YTwzbn56eXN0ZmZafSEwbUZGNy1oP2ZAQyQ8PUREYW8ydXxKbU42aVcjYU9eeUZt
Rj5kLXUldnBmcDxGcV5eXnIKemZ+OFpveGZFajMjMVJ4NUV9O3kmWkhtWURNIUh4RGI4YT80bTdF
OUI/cVpwQF5mc05BJCs0ZnUmK3JUfnJocnZuCnpHKSEmb1lzVTEmQ3o4U35CVF5OMjlrNi1Kd1pX
QDNtXyhgfEFLTj80SUU+PjlEZUIxTSpLR3BRNDxCKilkM305Swp6cF9FcGQ2bj8rQzBDSVRDZ01Q
fFB5SitqRG9Mc3hWO25fdkI/czFITWslYmoxOXhjcVQ7IzlVSjFYZEllP3V3WSMKenklUUEzX2Y4
QUJFQ1c2aSU2a31QLUYpfFFmZDYoRGVJJlplVms5ans/VVhJO1k9T3R2cEp+Xk9SWUg7JGw0PW16
CnplRnhXTkBfdnEqS0ZLIW52fXxoZC0pcUkrUmdqWkduYlNmM2FPay16Nz9rUjZec3F9cF4tK20t
eWVOJEImT3xDZwp6dnY/Kn4lUWtZT3dQczVRcmBsXih6ZDUrWiFwUjk3N0lnQ3VpPnM+WiUmNHpS
SCh3PyRoeWkmJkY4OWEjUWdhSEkKemVNbTAqZU5tZTNtOWtUYzslbSFHVTRAUjEjQC1GOHBaKlpB
bCtvO3NXZWEtZFUwWVNnN08ka0ZWPk0mMSZXeWBVCnohe3tKKVZkRFAlTzh3fjFhd0pmKCllJEk0
VWE/cmVGMHJnYDg9UCZIe0gjdWhJOGwtIUx1WV9xK2t6JCRlNGhEXwp6OHZfRnwrakcrWilzS1U9
YE5NakshYXBrWW5meXZXemBHNkRIbX4/fEdZQk87PmhYeUYjU3xlaiVaYHRxMU1nZWEKejNZe2lt
a3ZOK0w0TEJWWDlhWl5fNmRSPThmOGwwYnZ2Jjc9K2d4JjApUzFBcVU4a3F1QS1UQj97bVkpMl5C
KCpZCnpWRiR9WTsyJSF9VypaWXQkYHUoXzZacWU3NERkLXEwNEBedTI3PCFsNzF6NkFNcjxxVW1G
SUxgQ2xCZntJaHZaQAp6NjJBVF91Uyh3ZF94bWxULTxZYDhrKWZaXlJAdXFhN1UlV045cV4wd3lZ
SiZSXmU/JUQ9d2RudzUyUStGdnwzN3gKejJMIy1PalRWJD9tdjZPLTNjPmE9YHtiZGc4fmM7VT1m
MXlSYmU7TWcpQSZJKE8pYz92NV5ZbUU/P2RiZXA7bHA1Cno4VGlJNG5SbW9tTSNxYkpmS09CUGEr
VTNaTG5Gd3AqIzNSS3J+NDBmZXxvWkUxcEQ/KztrdV9iQDlMdzk7Kzt8IQp6Ml5AUlpMeCVhRXpI
PnxXMikrSEtiQilQeW5ee0pJVlImTHM/IT8hWHdTP3ByeDVDRyNAKV8qJnFFQ3JxWGcyZVYKel94
VWdORyVXMEw/UCt8eXMhfik7NiUtbk96UG95fmw2KEdwVikpMUJ2amNqNSQrSHRVRkVUZ1opbE14
UEZFRUtrCnp6bGxDXz09LUZIWUlZYVhWWUFiXlhoMGp1SmVKb3NofWteaElrZlQzX3ZTNV5AWShK
fWs2elI0Q0JKOU9fP09xZQp6UiVnOyExNmpVNUpsdG9TKiFXVz5iQHhJbUkzJCQlZCh1ISE1bCZW
c2pENGN8dkYqMkRfWiNhdlQ3czFGa0V7Y34KeiQkNShEP2tEbT9xfSN6PGRaSCp+OTxUbGkjP0Ah
NFY2e217RkB2WDJKZXg/SHpYMm08JnwpRjF4WDgpaDdOPT18Ckp0eUk0ZWA1elN7OHdkYVoKCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvbGF5b3V0L2ZyYWdtZW50LnhtbCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvbGF5
b3V0L2ZyYWdtZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzMwNWZjMTZmODJmODI1ODNlZjBmOGMyZGQy
OGExZTAwZDVjYzhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy9sYXlvdXQvZnJhZ21lbnQueG1sCkBAIC0w
LDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/PgorPCEt
LQorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
LS0+CisKKzxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9p
ZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWln
aHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1h
dGNoX3BhcmVudCIKKyAgICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwi
PgorCisgICAgPGZyYWdtZW50ICBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmFuZ2xlLmNvbW1v
bi5NYWluRnJhZ21lbnQiCisgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2ZyYWdtZW50
IgorICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisg
ICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50Ii8+CisKKzwv
TGluZWFyTGF5b3V0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1h
Zi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjYxZTUwNDRhNDliYTZmODQ1ZDVmMDViMGViMGE0
NTZmODU3NTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYWYvc3RyaW5ncy54bWwKQEAgLTAs
MCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0g
CisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisg
ICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAg
LS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5j
b20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6
eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2Vz
IiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFLXZvb3JrZXVyZSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcy
MDYyMTE0Nzk3MDY3NTQ1Ij4iV3lzaWcgQU5HTEUtaW5zdGVsbGluZ3MiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2
MDAyNiI+IkFsZ2VtZWVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zv
cl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJHZWJydWlrIEFOR0xFIHZp
ciBhbGxlIHByb2dyYW1tZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVf
aW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iV3lzIGRpYWxv
b2drYXNzaWUgd2FubmVlciBBTkdMRSBnZWxhYWkgaXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYz
MDQiPiJLaWVzIE9wZW5HTC1kcnl3ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3
b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWth
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2Ui
IG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iR2VicnVpayB0YW5zIEFOR0xFIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUx
ODM0NTQxNDE5ODkwNjAzIj4iR2VlbiBwcm9ncmFtbWUgYmVza2lrYmFhciBuaWUiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTky
MjgyOTUyMjY5MjQ5NzU5NiI+IkdlZW4gcHJvZ3JhbW1lIGlzIGdlw69uc3RhbGxlZXIgd2F0IEFO
R0xFIGthbiBnZWJydWlrIG5pZSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtYW0vc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hbS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YzBhZGMyM2QxODVhZDVlMzJiMTY0ZTdiMWY4Yjg2OGFlN2FlZTZkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtYW0vc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAg
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAg
ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5k
cm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHht
bG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2Mzgy
NSI+IuGLqEFOR0xFIOGIneGIreGMq+GLjuGJvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i
4YuoQU5HTEUg4YmF4YqV4Yml4Yiu4Ym94YqVIOGLreGJgOGLreGIqSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4i4Yqg4Yyg4YmD4YiL4YutIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2Fu
Z2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJBTkdMRSDhiIjh
iIHhiInhiJ0g4YiY4Ymw4YyN4Ymg4Yiq4Yur4YuO4Ym9IOGLreGMoOGJgOGImSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg4Yiy4Yyr4YqVIOGImOGMiOGKk+GKmyDhiLPhjKXh
ipUg4Yqg4Yiz4YutIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9k
cml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i4YuoT3BlbkdMIOGKkOGM
giDhi63hiJ3hiKjhjKEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNn
aWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZeGNoyBvcGVuZ2zhjaMg4YyN4Yir4Y2K4Yqt
4Yi1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3Nh
Z2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEXhipUg4Ymg4YiY4Yyg4YmA4Yid
IOGIi+GLrSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3Rp
dGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuGIneGKleGInSDhi6jhiJrhjIjhipkg
4YiY4Ymw4YyN4Ymg4Yiq4Yur4YuO4Ym9IOGLqOGIieGInSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3
NTk2Ij4iQU5HTEXhipUg4YiY4Yyg4YmA4YidIOGLqOGImuGJveGIiSDhiJ3hipXhiJ0g4YiY4Ymw
4YyN4Ymg4Yiq4Yur4YuO4Ym9IOGKoOGIjeGJsOGMq+GKkeGInSI8L3N0cmluZz4KKzwvcmVzb3Vy
Y2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1hci9zdHJpbmdz
LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZjBmNGUzMTFiNDBiYmY3NGJiYjI2YTg0ZDg5ZDA5NTYxNDQ2ZDg4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYXIvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29w
eXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5z
ZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7
CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRo
IHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKwor
ICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3Jp
dGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0
cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxy
ZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jl
cy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9j
dW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0i
NjI3Nzc4MTk3NDcxMjY2MzgyNSI+Itin2YTYpdi52K/Yp9iv2KfYqiDYp9mE2YXZgdi22YTYqSDZ
hNmF2K3YsdmQ2ZHZgyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i2KrYudiv2YrZ
hCDYpdi52K/Yp9iv2KfYqiBcItmF2K3YsdmQ2ZHZgyBBTkdMRVwiIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAw
MjYiPiLYudin2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2Fs
bF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+Itin2LPYqtiu2K/Yp9mFIFwi2YXY
rdix2ZDZkdmDIEFOR0xFXCIg2YTYrNmF2YrYuSDYp9mE2KrYt9io2YrZgtin2KoiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0i
MzQ0MzI1MDQzNDAyNjAwMDc1NCI+Iti52LHYtiDZhdix2KjYuSDYrdmI2KfYsSDYudmG2K8g2KrY
rdmF2YrZhCBcItmF2K3YsdmQ2ZHZgyBBTkdMRVwiIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0
Ij4i2KfYrtiq2YrYp9ixINio2LHZhtin2YXYrCDYqti02LrZitmEIE9wZW5HTCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+
ItmF2K3YsdmQ2ZHZgyBhbmdsZdiMIOKAj29wZW5nbNiMINix2LPZiNmF2KfYqiI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+Itio2KfYs9iq2K7Yr9in2YUgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0
MTk4OTA2MDMiPiLZhNinINiq2KrZiNmB2LEg2KPZiiDYqti32KjZitmC2KfYqiI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIy
ODI5NTIyNjkyNDk3NTk2Ij4i2YTZitizINmH2YbYp9mDINij2Yog2KrYt9io2YrZgtin2Kog2YXY
q9io2KrYqSDZitmF2YPZhtmH2Kcg2KfYs9iq2K7Yr9in2YUgQU5HTEUiPC9zdHJpbmc+Cis8L3Jl
c291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFzL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYXMvc3Ry
aW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFmZTliNmQ4ZDc0OWE2NjlhMWJiNTM4ODlhN2UzNDg2ZDg2
ZGNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWFzL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAg
IENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAg
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgor
Cis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fw
ay9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZm
OmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNn
aWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDgpoXgppfgp43gp7Dgpr7gpqfgpr/gppXg
pr7gp7AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1t
YXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFIOCmm+Cnh+Cmn+Cmv+CmguCm
uOCmruCnguCmuSDgprjgpoLgprbgp4vgpqfgpqgg4KaV4Kew4KaVIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAw
MjYiPiLgprjgpr7gpqfgpr7gp7DgpqMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2Vf
YW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuCmuOCmleCm
suCniyDgpo/gpqrgp7Ag4Kas4Ka+4Kas4KeHIEFOR0xFIOCmrOCnjeCmr+CnseCmueCmvuCnsCDg
ppXgp7DgppUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9k
aWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOCmslwn4KahIOCm
uVwn4Kay4KeHIOCmoeCmvuCmr+CmvOCmsuCmlyDgpqzgpr7gppXgppog4Kam4KeH4KaW4KeB4Kex
4Ka+4KaT4KaVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2
ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIERyaXZlciDgppbg
p4vgprLgppUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYz
ODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDgppfgp43gp7Dgpr7gpqvgpr/gppXg
p43gprgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVz
c2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDgpqzgp43gpq/gp7Hgprng
pr7gp7Ag4KaV4Kew4Ka/IOCmhuCmm+CnhyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5v
X2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuCmleCn
i+CmqOCniyDgpo/gpqrgp43igIwg4KaJ4Kaq4Kay4Kas4KeN4KanIOCmqOCmueCmr+CmvCI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lk
PSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUg4Kas4KeN4Kav4Kex4Ka54Ka+4KewIOCmleCn
sOCmv+CmrCDgpqrgp7Dgpr4g4KaV4KeL4Kao4KeLIOCmj+CmquCnjeKAjCDgpofgpqjgprfgp43g
pp/gprIg4KaV4Kew4Ka/IOCmpeCni+CnseCmviDgpqjgpr7gpociPC9zdHJpbmc+Cis8L3Jlc291
cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWF6L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYXovc3RyaW5n
cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTVkMzFjNTQ5MWRmZDAyYzI3YmI0MzRkMGViNDhhZmQ5M2Q0YTMy
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWF6L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENv
cHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisK
KyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8
cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9y
ZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRv
Y3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9
IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSBUyZlyY2lobMmZcmkiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjEx
NDc5NzA2NzU0NSI+IkFOR0xFIGF5YXJsYXLEsW5hIGTDvHrJmWxpxZ8gZWRpbiI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3
MTgzMzYwMDI2Ij4iw5xtdW1pIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xl
X2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJCw7x0w7xuIHTJmXRi
aXFsyZlyIMO8w6fDvG4gQU5HTEUgaXN0aWZhZMmZIGVkaW4iPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAy
NjAwMDc1NCI+IkFOR0xFIHnDvGtsyZluZGlrZMmZIGRpYWxvcSBxdXR1c3VudSBnw7ZzdMmZcmlu
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUi
IG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIERpc2tpbmkgYcOnxLFuIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYx
Mzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i
QU5HTEUgaXN0aWZhZMmZIGVkaWxpciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2Fw
cHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IsaPbMOnYXRh
biB0yZl0YmlxIHlveGR1ciI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUgaXN0aWZh
ZMmZIGVkyZluIHTJmXRiaXEgcXVyYcWfZMSxcsSxbG1hecSxYiI8L3N0cmluZz4KKzwvcmVzb3Vy
Y2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYitzcitMYXRuL3N0cmluZ3MueG1sIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYitz
citMYXRuL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYjQ4ODU4NDFmMmViYzMxM2JiYTA1Mjkz
YWMzNGZiZjAxMWFmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1iK3NyK0xhdG4vc3RyaW5n
cy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9u
IDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNl
cHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxh
dyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJ
VEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVz
cyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1
YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUg
TGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVt
YXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2Fz
aXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIHBvZGXFoWF2
YW5qYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1h
cnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iSXptZW5pdGUgQU5HTEUgcG9kZcWhYXZh
bmphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNn
aWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJPcMWhdGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+
IktvcmlzdGkgQU5HTEUgemEgc3ZlIGFwbGlrYWNpamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAw
MDc1NCI+IlByaWthxb5pIHByb3pvciBkaWphbG9nYSBrYWRhIHNlIEFOR0xFIHXEjWl0YSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dp
ZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ikl6YWJlcml0ZSBPcGVuR0wgdXByYXZsamHEjWtpIHBy
b2dyYW0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2
MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWthIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3
ODYxOTc5NTU4Ij4iS29yaXN0aSBzZSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik5p
amUgZG9zdHVwbmEgbmlqZWRuYSBhcGxpa2FjaWphIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYi
PiJOaWplIGluc3RhbGlyYW5hIG5pamVkbmEgYXBsaWthY2lqYSBrb2phIG1vxb5lIGRhIGtvcmlz
dGkgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJlL3N0
cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtYmUvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg1OTk0NWM0ZmJm
OGI2MTVlMDk2OGUyZTQzNGI1NWZkYzM5MzdkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJl
L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4g
U291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZp
bGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9i
dGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGlj
YWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
KyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZp
YyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5k
ZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6
Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0i
dXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLQndCw0LvQ
sNC00YsgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
c19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+ItCX0LzQtdC90LAg0L3QsNC7
0LDQtCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0
bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i0JDQs9GD0LvRjNC90YvRjyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4i0JLRi9C60LDRgNGL0YHRgtC+0Z7QstCw0YbRjCBBTkdMRSDQtNC7
0Y8g0Z7RgdGW0YUg0L/RgNCw0LPRgNCw0LwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJz
aG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+
ItCf0LDQutCw0LfQstCw0YbRjCDQtNGL0Y/Qu9C+0LPQsNCy0LDQtSDQsNC60L3QviDQv9GA0Ysg
0LfQsNCz0YDRg9C30YbRiyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVj
dF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+ItCS0YvQ
sdC10YDRi9GG0LUg0LTRgNCw0LnQstC10YAgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5n
bCwg0LPRgNCw0YTRltC60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91
c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLQktGL0LrQsNGA
0YvRgdGC0L7RntCy0LDQtdGG0YbQsCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+ItCd
0Y/QvNCwINC00LDRgdGC0YPQv9C90YvRhSDQv9GA0LDQs9GA0LDQvCI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIy
NjkyNDk3NTk2Ij4i0J/RgNCw0LPRgNCw0LzRiywg0Y/QutGW0Y8g0LzQvtCz0YPRhtGMINCy0YvQ
utCw0YDRi9GB0YLQvtGe0LLQsNGG0YwgQU5HTEUsINC90LUg0Z7RgdGC0LDQu9GP0LLQsNC90Ysi
PC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJnL3N0cmluZ3MueG1s
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtYmcvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZkMzJmMWE5Y2E1MjEwZWE2Y2Vj
YTViNTc2NWFlYzkwYjU2MWNkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJnL3N0cmluZ3Mu
eG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFz
LmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lz
Om5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9w
cmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLQn9GA0LXQtNC/0L7Rh9C4
0YLQsNC90LjRjyDQt9CwIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLQn9GA0L7Q
vNGP0L3QsCDQvdCwINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0LfQsCBBTkdMRSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3
MTgzMzYwMDI2Ij4i0J7QsdGJ0LgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5n
bGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+ItCY0LfQv9C+0LvQ
t9Cy0LDQvdC1INC90LAgQU5HTEUg0LfQsCDQstGB0LjRh9C60Lgg0L/RgNC40LvQvtC20LXQvdC4
0Y8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2df
Ym94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+ItCf0YDQuCDQt9Cw0YDQtdC20LTQsNC9
0LXRgtC+INC90LAgQU5HTEUg0LTQsCDRgdC1INC/0L7QutCw0LfQstCwINC00LjQsNC70L7Qs9C+
0LIg0L/RgNC+0LfQvtGA0LXRhiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9v
cGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+ItCY0LfQsdC4
0YDQsNC90LUg0L3QsCDQtNGA0LDQudCy0LXRgCDQt9CwIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xl
LCBvcGVuZ2wsINCz0YDQsNGE0LjQutCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i0J/Q
vtGB0YDQtdC00YHRgtCy0L7QvCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5v
X2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+ItCd0Y/Q
vNCwINC90LDQu9C40YfQvdC4INC/0YDQuNC70L7QttC10L3QuNGPIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2
OTI0OTc1OTYiPiLQndGP0LzQsCDQuNC90YHRgtCw0LvQuNGA0LDQvdC4INC/0YDQuNC70L7QttC1
0L3QuNGPLCDQutC+0LjRgtC+INC80L7Qs9Cw0YIg0LTQsCDQuNC30L/QvtC70LfQstCw0YIgQU5H
TEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJuL3N0cmluZ3Mu
eG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtYm4vc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkwZDA0NDM4NDc1MWE1NTNl
NzMxZTMwMmFjYjYzMjZlODVkYjY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJuL3N0cmlu
Z3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVU
Ri04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNl
IFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lv
biAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xp
Y2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBX
SVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJl
c3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5n
dWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hl
bWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9h
c2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDgprjgpoLg
ppXgp43gprDgpr7gpqjgp43gpqQg4KaF4Kat4Ka/4Kaw4KeB4Kaa4Ka/Ijwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIx
MTQ3OTcwNjc1NDUiPiJBTkdMRSDgprjgp4fgpp/gpr/gpoLgprgg4Kaq4Kaw4Ka/4Kas4Kaw4KeN
4Kak4KaoIOCmleCmsOCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dl
bmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i4Ka44Ka+4Kan4Ka+4Kaw
4KajIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIg
bXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLgprjgpq7gprjgp43gpqQg4KaF4KeN4Kav4Ka+
4Kaq4KeH4KawIOCmnOCmqOCnjeCmryBBTkdMRSDgpqzgp43gpq/gpqzgprngpr7gprAg4KaV4Kaw
4KeB4KaoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlh
bG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSDgprLgp4vgpqEg4Ka5
4KaT4Kav4Ka84Ka+4KawIOCmuOCmruCmr+CmvCDgpqHgpr7gpq/gprzgpr7gprLgppcg4Kas4KaV
4KeN4Ka4IOCmpuCnh+CmluCngeCmqCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVj
dF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5H
TCDgpqHgp43gprDgpr7gpofgpq3gpr7gprAg4Kas4KeH4Kab4KeHIOCmqOCmv+CmqCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5
NSI+ImFuZ2xlLCBvcGVuZ2wsIOCml+CnjeCmsOCmvuCmq+Cmv+CmleCnjeCmuCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOCmrOCnjeCmr+CmrOCmueCmvuCmsCDgppXgprDgpr4g
4Ka54Kaa4KeN4Kab4KeHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4KaV4KeL4Kao4KaTIOCm
heCnjeCmr+CmvuCmqiDgpongpqrgprLgpq3gp43gpq8g4Kao4KeH4KaHIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1
MjI2OTI0OTc1OTYiPiLgpo/gpq7gpqgg4KaV4KeL4Kao4KaTIOCmheCnjeCmr+CmvuCmqiDgpofg
pqjgprjgp43gpp/gprIg4KaV4Kaw4Ka+IOCmqOCnh+CmhyDgpq/gpr4gQU5HTEUg4Kas4KeN4Kav
4Kas4Ka54Ka+4KawIOCmleCmsOCmpOCnhyDgpqrgpr7gprDgp4ciPC9zdHJpbmc+Cis8L3Jlc291
cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJzL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtYnMvc3RyaW5n
cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTc0MTMyNGIzODYxNTUwZWY4YmI0YzlkMmNlZDdjOWM3NzE1ODkw
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWJzL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENv
cHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisK
KyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8
cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9y
ZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRv
Y3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9
IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQb3N0YXZrZSB6YSBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0
Nzk3MDY3NTQ1Ij4iSXptaWplbml0ZSBwb3N0YXZrZSB6YSBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4iT3DEh2VuaXRvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zv
cl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJLb3Jpc3RpIEFOR0xFIHph
IHN2ZSBhcGxpa2FjaWplIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9p
bl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJQcmlrYcW+aSBk
aWphbG/FoWtpIG9rdmlyIGthZGEgc2UgQU5HTEUgdcSNaXRhIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5
Mzg2MzA0Ij4iT2RhYmVyaXRlIGRyYWp2ZXIgemEgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9w
ZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90
b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IktvcmlzdGkgc2UgQU5H
TEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIg
bXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJOZW1hIGRvc3R1cG5paCBhcGxpa2FjaWphIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNn
aWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJOZW1hIGluc3RhbGlyYW5paCBhcGxpa2FjaWphIGtv
amUgbW9ndSBrb3Jpc3RpdGkgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtY2Evc3RyaW5ncy54bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTM2YzIzZDRiY2Y2ZTBiZmU3NGI0ODNiOWVkMTYzN2VhMmM5NTM3NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWNhL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5z
OmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAg
ICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2
NjM4MjUiPiJQcmVmZXLDqG5jaWVzIGRcJ0FOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUi
PiJNb2RpZmljYSBsYSBjb25maWd1cmFjacOzIGRcJ0FOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYi
PiJHZW5lcmFsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxf
YXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJVdGlsaXR6YSBBTkdMRSBwZXIgYSB0
b3RlcyBsZXMgYXBsaWNhY2lvbnMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2Fu
Z2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ik1vc3Ry
YSB1biBxdWFkcmUgZGUgZGnDoGxlZyBxdWFuIEFOR0xFIHNcJ2hhZ2kgY2FycmVnYXQiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9
IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTZWxlY2Npb25hIGVsIGNvbnRyb2xhZG9yIE9wZW5HTCI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2
MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyw6BmaWNzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5
NTU4Ij4iU1wnZXN0w6AgdXRpbGl0emFudCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+
Ik5vIGhpIGhhIGNhcCBhcGxpY2FjacOzIGRpc3BvbmlibGUiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5
NzU5NiI+Ik5vIGhpIGhhIGNhcCBhcGxpY2FjacOzIGluc3RhbMK3bGFkYSBxdWUgcHVndWkgdXRp
bGl6YXIgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWNz
L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtY3Mvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzE0YzI5N2Mz
OTg0YWVmZTc4NGQ3NDg0N2NiMDQzZGIwOTkzYjBhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LWNzL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0
dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlm
Zj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQxZll
ZHZvbGJ5IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5j
ZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJVcHJhdml0IG5hc3RhdmVu
w60gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+Ik9iZWNuw6kiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIz
OTY5NCI+IlBvdcW+w612YXQgQU5HTEUgcHJvIHbFoWVjaG55IGFwbGlrYWNlIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0
NDMyNTA0MzQwMjYwMDA3NTQiPiJab2JyYXppdCBkaWFsb2dvdsOpIG9rbm8gcMWZaSBuYcSNdGVu
w60gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZl
cl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJWeWJlcnRlIG92bGFkYcSNIE9w
ZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYz
NTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4
NjE5Nzk1NTgiPiJQb3XFvsOtdsOhIHNlIGFwbGlrYWNlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5
ODkwNjAzIj4iSyBkaXNwb3ppY2kgbmVqc291IMW+w6FkbsOpIGFwbGlrYWNlIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4
Mjk1MjI2OTI0OTc1OTYiPiJGdW5rY2kgQU5HTEUgbmVkb2vDocW+ZSBwb3XFvsOtdmF0IMW+w6Fk
bsOhIG5haW5zdGFsb3ZhbsOhIGFwbGlrYWNlIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWRhL3N0cmluZ3MueG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU4ZGMzOTZiN2Y1ZTI2NWFlNmYwYjA3YWU2ZDAwN2NhOTE2NWM0ODEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1kYS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAx
OSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
ICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4
bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQi
CisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIi
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0
NzEyNjYzODI1Ij4iUHLDpmZlcmVuY2VyIGZvciBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3
NTQ1Ij4iUmVkaWdlciBpbmRzdGlsbGluZ2VybmUgZm9yIEFOR0xFIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAw
MjYiPiJHZW5lcmVsdCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3Jf
YWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iQnJ1ZyBBTkdMRSB0aWwgYWxs
ZSBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlh
bG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJWaXMgZGlhbG9nYm9rc2VuLCBu
w6VyIEFOR0xFIGluZGzDpnNlcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9v
cGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlbDpmxnIE9w
ZW5HTCBEcml2ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9
IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWsiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0
MzQxOTc4NjE5Nzk1NTgiPiJCcnVnZXIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJE
ZXIgZXIgaW5nZW4gdGlsZ8OmbmdlbGlnZSBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYi
PiJEZXIgZXIgaW5nZW4gaW5zdGFsbGVyZWRlIGFwcHMsIHNvbSBrYW4gYnJ1Z2UgQU5HTEUiPC9z
dHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1sIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtZGUvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjNjMyNGUyNGQyYjJiNGM0NzAwMTBl
ZThiZjAzM2IwN2JjYjc3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWRlL3N0cmluZ3MueG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFu
ZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5h
bWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRS1FaW5zdGVsbHVuZ2Vu
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIg
bXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRS1FaW5zdGVsbHVuZ2VuIMOkbmRlcm4i
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0i
Mzg1MTM5NzYxNzE4MzM2MDAyNiI+IkFsbGdlbWVpbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i
QU5HTEUgZsO8ciBhbGxlIEFwcHMgdmVyd2VuZGVuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3
NTQiPiJEaWFsb2dmZWxkIGFuemVpZ2VuLCB3ZW5uIEFOR0xFIGdlbGFkZW4gaXN0Ijwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIz
NDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIERyaXZlciBhdXN3w6RobGVuIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4i
YW5nbGUsIG9wZW5nbCwgZ3JhZmlrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
aW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iQU5HTEUg
d2lyZCB2ZXJ3ZW5kZXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJLZWluZSBBcHBzIHZvcmhh
bmRlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iS2VpbmUgQXBwcyBpbnN0YWxsaWVydCwg
ZGllIEFOR0xFIHZlcndlbmRlbiBrw7ZubmVuIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVsL3N0cmluZ3MueG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhOTQ0ZmM2YmM3MDMzNzFhNTIxMTg4YzM5ZTEzOTJjMGIzMTJkMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1lbC9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAx
OSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0
aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3Ug
bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu
c2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAg
IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNz
IHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0
d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMg
T0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNl
bnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAor
ICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4
bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQi
CisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIi
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0
NzEyNjYzODI1Ij4izqDPgc6/z4TOuc68zq7Pg861zrnPgiBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0
Nzk3MDY3NTQ1Ij4izqTPgc6/z4DOv8+Azr/Or863z4POtyDPgc+FzrjOvM6vz4POtc+Jzr0gQU5H
TEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dp
ZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+Is6TzrXOvc65zrrOrCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5
Njk0Ij4izqfPgc6uz4POtyBBTkdMRSDOs865zrEgz4zOu861z4Igz4TOuc+CIM61z4bOsc+BzrzO
v86zzq3PgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2Rp
YWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4izpXOvM+GzqzOvc65z4POtyDP
gM6xz4HOsc64z43Pgc6/z4UgzrTOuc6xzrvPjM6zzr/PhSDOus6xz4TOrCDPhM63IM+Gz4zPgc+E
z4nPg863IM+Ezr/PhSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9v
cGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Is6Vz4DOuc67
zr/Os86uIM+Az4HOv86zz4HOrM68zrzOsc+Ezr/PgiDOv860zq7Os863z4POt8+CIE9wZW5HTCI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2
MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIM6zz4HOsc+GzrnOus6sIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3
ODYxOTc5NTU4Ij4izqfPgc6uz4POtyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Is6U
zrXOvSDPhc+AzqzPgc+Hzr/Phc69IM60zrnOsc64zq3Pg865zrzOtc+CIM61z4bOsc+BzrzOv86z
zq3PgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4izpTOtc69IM6tz4fOv8+Fzr0gzrXOs866
zrHPhM6xz4PPhM6xzrjOtc6vIM61z4bOsc+BzrzOv86zzq3PgiDPgM6/z4UgzrzPgM6/z4HOv8+N
zr0gzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc6uz4POv8+Fzr0gz4TOvyBBTkdMRSI8L3N0cmlu
Zz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtZW4tckFVL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMjU3YmFlMzUyZDllODkwNjAw
NDc4MjA5MTllYzVhYmI5ZGNiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lbi1yQVUvc3Ry
aW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAg
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3Nj
aGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46
b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIFByZWZl
cmVuY2VzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNb2RpZnkgQU5HTEUgc2V0dGluZ3Mi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0i
Mzg1MTM5NzYxNzE4MzM2MDAyNiI+IkdlbmVyYWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlVz
ZSBBTkdMRSBmb3IgYWxsIGFwcHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2Fu
Z2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlNob3cg
ZGlhbG9ndWUgYm94IHdoZW4gQU5HTEUgaXMgbG9hZGVkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2
MzA0Ij4iU2VsZWN0IE9wZW5HTCBEcml2ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJr
ZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFw
aGljcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IlVzaW5nIEFOR0xFIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0
NTQxNDE5ODkwNjAzIj4iTm8gYXZhaWxhYmxlIGFwcHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5
NiI+Ik5vIGFwcHMgaW5zdGFsbGVkIHRoYXQgY2FuIHVzZSBBTkdMRSI8L3N0cmluZz4KKzwvcmVz
b3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tckNBL3N0cmluZ3MueG1sIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4t
ckNBL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMjU3YmFlMzUyZDllODkwNjAwNDc4MjA5MTll
YzVhYmI5ZGNiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lbi1yQ0Evc3RyaW5ncy54bWwK
QEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
KzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5k
cm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFt
ZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIFByZWZlcmVuY2VzIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNn
aWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNb2RpZnkgQU5HTEUgc2V0dGluZ3MiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYx
NzE4MzM2MDAyNiI+IkdlbmVyYWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5n
bGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlVzZSBBTkdMRSBm
b3IgYWxsIGFwcHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlNob3cgZGlhbG9ndWUg
Ym94IHdoZW4gQU5HTEUgaXMgbG9hZGVkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2Vs
ZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2Vs
ZWN0IE9wZW5HTCBEcml2ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIg
bXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFwaGljcyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dp
ZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IlVzaW5nIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkw
NjAzIj4iTm8gYXZhaWxhYmxlIGFwcHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19h
cHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik5vIGFw
cHMgaW5zdGFsbGVkIHRoYXQgY2FuIHVzZSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tckdCL3N0cmlu
Z3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViMjU3YmFlMzUyZDllODkwNjAwNDc4MjA5MTllYzVhYmI5ZGNi
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lbi1yR0Ivc3RyaW5ncy54bWwKQEAgLTAsMCAr
MSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisg
ICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAg
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+
CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20v
YXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxp
ZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBt
c2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIFByZWZlcmVuY2VzIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIw
NjIxMTQ3OTcwNjc1NDUiPiJNb2RpZnkgQU5HTEUgc2V0dGluZ3MiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAy
NiI+IkdlbmVyYWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2Fs
bF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlVzZSBBTkdMRSBmb3IgYWxsIGFw
cHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2df
Ym94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlNob3cgZGlhbG9ndWUgYm94IHdoZW4g
QU5HTEUgaXMgbG9hZGVkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5n
bF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2VsZWN0IE9wZW5H
TCBEcml2ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYz
ODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFwaGljcyI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQz
NDE5Nzg2MTk3OTU1OCI+IlVzaW5nIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
bm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTm8g
YXZhaWxhYmxlIGFwcHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik5vIGFwcHMgaW5zdGFs
bGVkIHRoYXQgY2FuIHVzZSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tcklOL3N0cmluZ3MueG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjViMjU3YmFlMzUyZDllODkwNjAwNDc4MjA5MTllYzVhYmI5ZGNiMjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1lbi1ySU4vc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJp
Z2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisg
ICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
CisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAg
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNv
dXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9h
bmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1l
bnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3
Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIFByZWZlcmVuY2VzIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcw
Njc1NDUiPiJNb2RpZnkgQU5HTEUgc2V0dGluZ3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkdlbmVy
YWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBt
c2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlVzZSBBTkdMRSBmb3IgYWxsIGFwcHMiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dp
ZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlNob3cgZGlhbG9ndWUgYm94IHdoZW4gQU5HTEUgaXMg
bG9hZGVkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJf
dGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iU2VsZWN0IE9wZW5HTCBEcml2ZXIi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgw
NjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFwaGljcyI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3
OTU1OCI+IlVzaW5nIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTm8gYXZhaWxhYmxl
IGFwcHMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1t
YXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik5vIGFwcHMgaW5zdGFsbGVkIHRoYXQg
Y2FuIHVzZSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
ZW4tclhDL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZW4tclhDL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhkOGU4NGIzZDk4YTJhZWIxNDY4ZTA0MWU5OTQ0NDNkNDA4MDI4MTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1lbi1yWEMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAg
ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1s
bnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgor
ICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcx
MjY2MzgyNSI+IuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAj+KAjuKAj+KAj+KAj+KAjuKAjuKAjuKA
j+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAj+KAj+KAj+KAj+KAj+KAj+KAj+KA
juKAj+KAjuKAj+KAj+KAj+KAjuKAjuKAjuKAj+KAj+KAj+KAj+KAj+KAjuKAjuKAj+KAjuKAj+KA
juKAjuKAj+KAjuKAj+KAj+KAj+KAjuKAjuKAjuKAj+KAj+KAj+KAj+KAjuKAjuKAj+KAjuKAjuKA
juKAjuKAjuKAj+KAj+KAjuKAjuKAj+KAjuKAjuKAj+KAj+KAj+KAj+KAj+KAj+KAjuKAjuKAjuKA
j+KAjuKAjuKAjuKAj+KAjkFOR0xFIFByZWZlcmVuY2Vz4oCO4oCP4oCO4oCO4oCP4oCOIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9
IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLigI7igI/igI7igI7igI7igI7igI7igI/igI7igI/igI/i
gI/igI7igI7igI7igI/igI7igI7igI7igI7igI7igI7igI/igI/igI7igI/igI7igI/igI/igI/i
gI/igI7igI/igI/igI/igI/igI7igI7igI/igI/igI7igI7igI7igI7igI7igI/igI7igI/igI/i
gI/igI7igI7igI7igI/igI/igI7igI7igI7igI7igI7igI/igI/igI/igI/igI/igI7igI7igI7i
gI7igI/igI7igI7igI7igI7igI7igI/igI/igI7igI7igI7igI7igI/igI/igI/igI7igI/igI7i
gI7igI7igI/igI/igI7igI7igI/igI5Nb2RpZnkgQU5HTEUgc2V0dGluZ3PigI7igI/igI7igI7i
gI/igI4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAj+KAjuKA
j+KAj+KAj+KAjuKAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAj+KA
j+KAj+KAj+KAj+KAjuKAj+KAj+KAjuKAj+KAjuKAj+KAjuKAj+KAj+KAj+KAjuKAjuKAj+KAjuKA
j+KAj+KAj+KAjuKAj+KAjuKAjuKAj+KAj+KAjuKAj+KAj+KAj+KAjuKAj+KAjuKAjuKAjuKAj+KA
juKAj+KAj+KAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAjuKAjuKAjuKAjuKAjuKAjuKAjuKAj+KA
juKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAjkdlbmVyYWzigI7igI/igI7igI7igI/igI4i
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dp
ZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAj+KAjuKAj+KA
j+KAj+KAjuKAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAj+KAj+KA
j+KAj+KAj+KAjuKAj+KAjuKAjuKAjuKAj+KAj+KAj+KAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKA
j+KAj+KAj+KAjuKAj+KAj+KAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAjuKAj+KAj+KAj+KA
j+KAjuKAjuKAjuKAj+KAj+KAjuKAjuKAjuKAj+KAjuKAj+KAjuKAj+KAjuKAj+KAj+KAj+KAjuKA
juKAj+KAjuKAjuKAjuKAj+KAj+KAj+KAjuKAjlVzZSBBTkdMRSBmb3IgYWxsIGFwcHPigI7igI/i
gI7igI7igI/igI4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IuKAjuKAj+KAjuKAjuKA
juKAjuKAjuKAj+KAjuKAj+KAj+KAj+KAjuKAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KA
j+KAjuKAj+KAjuKAj+KAj+KAj+KAj+KAj+KAjuKAj+KAjuKAj+KAj+KAj+KAj+KAj+KAj+KAjuKA
juKAj+KAjuKAjuKAjuKAj+KAj+KAj+KAjuKAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KA
j+KAjuKAj+KAj+KAjuKAj+KAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAj+KAjuKAjuKAjuKA
j+KAjuKAj+KAjuKAjuKAjuKAj+KAjuKAj+KAj+KAj+KAjuKAjuKAj+KAjuKAjlNob3cgZGlhbG9n
IGJveCB3aGVuIEFOR0xFIGlzIGxvYWRlZOKAjuKAj+KAjuKAjuKAj+KAjiI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIy
MDc0MTEzOTM4NjMwNCI+IuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAj+KAjuKAj+KAj+KAj+KAjuKA
juKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKAj+KAj+KAj+KAj+KAj+KA
juKAj+KAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAj+KAjuKAj+KAj+KAj+KAjuKA
j+KAjuKAjuKAj+KAjuKAj+KAjuKAj+KAj+KAjuKAj+KAj+KAjuKAj+KAjuKAj+KAj+KAjuKAj+KA
juKAj+KAj+KAj+KAjuKAj+KAjuKAjuKAjuKAjuKAj+KAjuKAjuKAj+KAj+KAj+KAj+KAj+KAj+KA
juKAjuKAjuKAjuKAjuKAjuKAjlNlbGVjdCBPcGVuR0wgRHJpdmVy4oCO4oCP4oCO4oCO4oCP4oCO
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4i4oCO4oCP4oCO4oCO4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCO4oCO
4oCP4oCO4oCO4oCO4oCO4oCO4oCO4oCP4oCP4oCO4oCP4oCO4oCP4oCP4oCP4oCP4oCP4oCP4oCP
4oCO4oCP4oCP4oCO4oCO4oCO4oCP4oCO4oCP4oCO4oCP4oCO4oCO4oCO4oCP4oCP4oCP4oCP4oCP
4oCP4oCP4oCO4oCO4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCP4oCO4oCP4oCP4oCP4oCO4oCO4oCP
4oCP4oCO4oCO4oCP4oCO4oCO4oCP4oCP4oCP4oCO4oCP4oCO4oCP4oCO4oCO4oCP4oCO4oCP4oCO
4oCP4oCO4oCO4oCP4oCP4oCOYW5nbGUsIG9wZW5nbCwgZ3JhcGhpY3PigI7igI/igI7igI7igI/i
gI4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2Fn
ZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLigI7igI/igI7igI7igI7igI7igI7igI/i
gI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7igI7igI7igI/igI/igI7igI/igI7i
gI/igI/igI/igI/igI7igI/igI/igI/igI/igI/igI/igI7igI/igI7igI/igI/igI7igI/igI/i
gI7igI7igI7igI/igI/igI/igI/igI/igI7igI/igI/igI7igI/igI/igI/igI7igI/igI7igI7i
gI/igI7igI/igI7igI7igI/igI/igI/igI7igI/igI/igI/igI7igI/igI/igI7igI/igI7igI/i
gI7igI/igI/igI7igI/igI7igI7igI/igI/igI7igI5Vc2luZyBBTkdMReKAjuKAj+KAjuKAjuKA
j+KAjiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxl
IiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAj+KA
juKAj+KAj+KAj+KAjuKAjuKAjuKAj+KAjuKAjuKAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAjuKA
j+KAj+KAj+KAj+KAjuKAj+KAj+KAjuKAj+KAj+KAjuKAj+KAj+KAj+KAjuKAj+KAj+KAjuKAjuKA
juKAj+KAj+KAj+KAj+KAj+KAj+KAjuKAj+KAj+KAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAj+KA
j+KAj+KAj+KAjuKAj+KAjuKAjuKAjuKAjuKAj+KAj+KAjuKAj+KAj+KAjuKAjuKAjuKAjuKAj+KA
j+KAj+KAj+KAjuKAj+KAjuKAj+KAjuKAj+KAj+KAjk5vIGF2YWlsYWJsZSBhcHBz4oCO4oCP4oCO
4oCO4oCP4oCOIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRf
c3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLigI7igI/igI7igI7igI7igI7i
gI7igI/igI7igI/igI/igI/igI7igI7igI7igI/igI7igI7igI7igI7igI7igI7igI/igI/igI7i
gI/igI7igI/igI/igI/igI/igI7igI/igI/igI/igI7igI/igI7igI/igI7igI/igI7igI/igI/i
gI/igI/igI7igI/igI7igI7igI7igI7igI/igI/igI7igI/igI7igI7igI7igI7igI/igI/igI7i
gI/igI/igI7igI7igI/igI/igI/igI/igI7igI/igI/igI/igI7igI7igI7igI7igI/igI/igI7i
gI7igI7igI7igI7igI/igI7igI/igI/igI/igI/igI7igI7igI5ObyBhcHBzIGluc3RhbGxlZCB0
aGF0IGNhbiB1c2UgQU5HTEXigI7igI/igI7igI7igI/igI4iPC9zdHJpbmc+Cis8L3Jlc291cmNl
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVzLXJVUy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVzLXJVUy9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDgxODMyNTA5YTQ0ZDgxMjVkZjgwY2ExMWEwNGNmYzBi
YTUwNzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXMtclVTL3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQcmVmZXJlbmNpYXMgZGUgQU5HTEUiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dp
ZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ik1vZGlmaWNhciBjb25maWd1cmFjacOzbiBkZSBBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lk
PSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR2VuZXJhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i
VXNhciBBTkdMRSBwYXJhIHRvZGFzIGxhcyBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3
NTQiPiJNb3N0cmFyIGN1YWRybyBkZSBkacOhbG9nbyBjdWFuZG8gQU5HTEUgZXN0w6EgY2FyZ2Fk
byI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxl
IiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlNlbGVjY2lvbmFyIGNvbnRyb2xhZG9yIGRl
IE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4
ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyw6FmaWNvcyI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQz
NDE5Nzg2MTk3OTU1OCI+IlVzYW5kbyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik5v
IGhheSBhcHBzIGRpc3BvbmlibGVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBw
c19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJObyBzZSBp
bnN0YWxhcm9uIGFwcHMgcXVlIHB1ZWRlbiB1c2FyIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJj
ZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWVzL3N0cmluZ3Mu
eG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFiODYzNThiZTA3MWVjOGVlYjIyYWJmODk5OTNmZWZlZjcxYTBjYjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1lcy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5
cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
KyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisg
ICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJl
c291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVz
L2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1
bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2
Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyZW5jaWFzIGRlIEFOR0xFIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIx
MTQ3OTcwNjc1NDUiPiJNb2RpZmljYXIgYWp1c3RlcyBkZSBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4iR2VuZXJhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3Jf
YWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iVXNhciBBTkdMRSBwYXJhIHRv
ZGFzIGxhcyBhcGxpY2FjaW9uZXMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2Fu
Z2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ik1vc3Ry
YXIgY3VhZHJvIGRlIGRpw6Fsb2dvIGN1YW5kbyBzZSBjYXJndWUgQU5HTEUiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQy
MjA3NDExMzkzODYzMDQiPiJTZWxlY2Npb25hciBjb250cm9sYWRvciBkZSBPcGVuR0wiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJhbmdsZSwgb3BlbmdsLCBncsOhZmljb3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgi
PiJVc2FuZG8gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJObyBoYXkgYXBsaWNhY2lv
bmVzIGRpc3BvbmlibGVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJOaW5ndW5hIGFwbGlj
YWNpw7NuIGluc3RhbGFkYSBwdWVkZSB1c2FyIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1ldC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWV0L3N0cmluZ3MueG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE3MmMzNDg1YWQzMjhlYWY1ZTNlYzBhNzdkYzViZTNmZjc0YzU0NmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ldC9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmln
aHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAg
ICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisK
KyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291
cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2Fu
ZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVu
dDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3
NzgxOTc0NzEyNjYzODI1Ij4iUmFrZW5kdXNlIEFOR0xFIGVlbGlzdHVzZWQiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2
MjExNDc5NzA2NzU0NSI+IlJha2VuZHVzZSBBTkdMRSBzZWFkZXRlIG11dXRtaW5lIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2
MTcxODMzNjAwMjYiPiLDnGxkaW5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2Fu
Z2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJLYXN1dGEga8O1
aWdpIHJha2VuZHVzdGUgcHVodWwgcmFrZW5kdXN0IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQw
MjYwMDA3NTQiPiJLdXZhIGRpYWxvb2dpYm9rcywga3VpIEFOR0xFIG9uIGxhYWRpdHVkIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lk
PSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMLWkgZHJhaXZlcmkgdmFsaW1pbmUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJhbmdsZSwgb3BlbmdsLCBncmFhZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+
IlJha2VuZHVzZSBBTkdMRSBrYXN1dGFtaW5lIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
bm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iUmFr
ZW5kdXNpIHBvbGUgc2FhZGF2YWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBz
X2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IlBvbGUgaW5z
dGFsbGl0dWQgw7xodGVnaSByYWtlbmR1c3QsIG1pcyBzYWFrcyBrYXN1dGFkYSBmdW5rdHNpb29u
aSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXUvc3Ry
aW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1ldS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2M1M2JmYWEzYTU0
YjczNjBiMzQ5NWQ0NDU5NjdjMGIwOWIwNTk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZXUv
c3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDov
L3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1
cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIGFw
bGlrYXppb2FyZW4gaG9iZXNwZW5hayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQWxkYXR1
IEFOR0xFIGFwbGlrYXppb2FyZW4gZXphcnBlbmFrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJPcm9r
b3JyYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMi
IG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iRXJhYmlsaSBBTkdMRSBhcGxpa2F6aW8gZ3V6
dGlldGFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlh
bG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJFcmFrdXRzaSBsZWlob2EgQU5H
TEUga2FyZ2F0emVuIGRlbmVhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9v
cGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IkhhdXRhdHUg
T3BlbkdMIGtvbnRyb2xhdHphaWxlYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdv
cmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpa29h
ayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdl
IiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIGVyYWJpbHR6ZW4iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4
MzQ1NDE0MTk4OTA2MDMiPiJFeiBkYWdvIGFwbGlrYXppb3JpayBlcmFiaWxnYXJyaSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIx
OTIyODI5NTIyNjkyNDk3NTk2Ij4iRXogZGF1a2F6dSBpbnN0YWxhdHV0YSBBTkdMRSBlcmFiaWwg
ZGV6YWtlZW4gYXBsaWthemlvcmlrIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1mYS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZhL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc5NGRiZWYxMDhiMTgxYjllMjlhY2E2YTdmMTNlMmUwMmZjODI5YjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mv
cmVzL3ZhbHVlcy1mYS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUg
QW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBh
Y2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisg
ICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVp
cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQor
ICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZv
ciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxp
bWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczph
bmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAg
eG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYz
ODI1Ij4i2KrZhti424zZhdin2Kog2KjYsdqv2LLbjNiv2YcgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjEx
NDc5NzA2NzU0NSI+Itiq2LrbjNuM2LEg2KrZhti424zZhdin2KogQU5HTEUiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4
MzM2MDAyNiI+ItmF2YjYp9ix2K8g2qnZhNuMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
dXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLYp9iz
2KrZgdin2K/ZhyDYp9iyIEFOR0xFINio2LHYp9uMINmH2YXZhyDYqNix2YbYp9mF2YfigIzZh9in
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2Jv
eCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLZiNmC2KrbjCBBTkdMRSDYqNin2LEg2YXb
jOKAjNi02YjYr9iMINqp2KfYr9ixINqv2YHYqtqv2YjbjNuMINmG2LTYp9mGINiv2KfYr9mHINi0
2YjYryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3Rp
dGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Itin2YbYqtiu2KfYqCDYr9ix2KfbjNmI
2LEgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2
Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUg2IxvcGVuZ2wg2IxncmFwaGljcyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+Itiv2LHYrdin2YQg2KfYs9iq2YHYp9iv2Ycg2KfYsiBBTkdMRSI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dp
ZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Itio2LHZhtin2YXZh+KAjNin24wg2K/Ysdiv2LPYqtix
2LMg2YbbjNiz2KoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxl
ZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+ItmH24zahiDYqNix2YbYp9mF
2YfigIzYp9uMINio2Kcg2YLYp9io2YTbjNiqINin2LPYqtmB2KfYr9mHINin2LIgQU5HTEUg2YbY
tdioINmG2LTYr9mHINin2LPYqiI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtZmkvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1maS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZTBkMmYyYjg5NmQ0ZWVhYTY0OTNhNGU4NDQ3NDVmMDk2NmM5ZTY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtZmkvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAg
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAg
ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5k
cm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHht
bG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2Mzgy
NSI+IkFOR0xFLXZhbGlubmF0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJl
ZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNdXV0YSBBTkdM
RS1hc2V0dWtzaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3Rp
dGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IllsZWlzZXQiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0
MTIzOTY5NCI+IkvDpHl0w6QgQU5HTEVhIGthaWtpc3NhIHNvdmVsbHVrc2lzc2EiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0i
MzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ik7DpHl0w6QgdmFsaW50YWlra3VuYSwga3VuIEFOR0xFIG9u
IGxhZGF0dHUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZl
cl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJWYWxpdHNlIE9wZW5HTC1hanVy
aSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0
ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpaWtrYSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2
MTk3OTU1OCI+IkFOR0xFIGvDpHl0w7Zzc8OkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
bm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iRWkg
c292ZWxsdWtzaWEgc2FhdGF2aWxsYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2Fw
cHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUg
ZWkgdG9pbWkgYXNlbm5ldHVpbGxhIHNvdmVsbHVrc2lsbGEiPC9zdHJpbmc+Cis8L3Jlc291cmNl
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZyLXJDQS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZyLXJDQS9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjA1NzQ5OWY4MDY4MThmYmRmM2MyMTdjODY1NjdhMDg4
NTc5YTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZnItckNBL3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQcsOpZsOpcmVuY2VzIGRcJ0FOR0xFIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNn
aWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNb2RpZmllciBsZXMgcGFyYW3DqHRyZXMgZFwnQU5H
TEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dp
ZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkfDqW7DqXJhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0
Ij4iVXRpbGlzZXIgQU5HTEUgcG91ciB0b3V0ZXMgbGVzIGFwcGxpY2F0aW9ucyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iQWZmaWNoZXIgbGEgYm/DrnRlIGRlIGRpYWxvZ3VlIGxvcnNx
dWUgQU5HTEUgZXN0IGNoYXJnw6kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rf
b3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTw6lsZWN0
aW9ubmVyIGxlIHBpbG90ZSBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3
b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFwaGlx
dWVzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3Nh
Z2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iVXRpbGlzYXRpb24gZFwnQU5HTEUiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9
IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJBdWN1bmUgYXBwbGljYXRpb24gY29tcGF0aWJsZSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lk
PSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQXVjdW5lIGRlcyBhcHBsaWNhdGlvbnMgaW5zdGFsbMOp
ZXMgbmUgcGV1dCB1dGlsaXNlciBsZSBtb3RldXIgZ3JhcGhpcXVlIEFOR0xFIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWZy
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiY2JiZDQ4NjE1M2ZiYjg5Y2U4MGFkM2JjMTdjYTdj
ZjUxMmIzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1mci9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHLDqWbDqXJlbmNlcyByZWxhdGl2ZXMgw6Ag
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1t
YXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ik1vZGlmaWVyIGxlcyBwYXJhbcOodHJl
cyByZWxhdGlmcyDDoCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dl
bmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR8OpbsOpcmF1eCI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIy
NTYyNjc4MDQ0MDQxMjM5Njk0Ij4iVXRpbGlzZXIgQU5HTEUgcG91ciB0b3V0ZXMgbGVzIGFwcGxp
Y2F0aW9ucyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2Rp
YWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQWZmaWNoZXIgdW5lIGJvw650
ZSBkZSBkaWFsb2d1ZSBsb3JzcXVlIEFOR0xFIGVzdCBjaGFyZ8OpIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQx
MTM5Mzg2MzA0Ij4iU8OpbGVjdGlvbm5lciB1biBwaWxvdGUgT3BlbkdMIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5n
bGUsIG9wZW5nbCwgZ3JhcGhpc21lcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IlV0aWxp
c2F0aW9uIGRlIGxcJ2FwcGxpY2F0aW9uIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i
QXVjdW5lIGFwcGxpY2F0aW9uIGRpc3BvbmlibGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+
IkF1Y3VuZSBhcHBsaWNhdGlvbiBpbnN0YWxsw6llIG5lIHBldXQgdXRpbGlzZXIgQU5HTEUiPC9z
dHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWdsL3N0cmluZ3MueG1sIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtZ2wvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk5NzdiMTQzMjNiZGQ3YzUzNDNmYTNi
YmNlNTc1Mjk3NDM5MTNmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWdsL3N0cmluZ3MueG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFu
ZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5h
bWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQcmVmZXJlbmNpYXMgZGUgQU5H
TEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5
IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+Ik1vZGlmaWNhIGEgY29uZmlndXJhY2nDs24g
ZGUgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IlhlcmFsIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2
OTQiPiJVdGlsaXphciBBTkdMRSBwYXJhIHRvZGFzIGFzIGFwbGljYWNpw7NucyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iTW9zdHJhciBjYWl4YSBkZSBkacOhbG9nbyBjYW5kbyBzZSBj
YXJndWUgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2Ry
aXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTZWxlY2Npb25hciBjb250
cm9sYWRvciBkZSBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIg
bXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncsOhZmljb3MiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNn
aWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVc2FuZG8gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4
OTA2MDMiPiJOb24gaGFpIG5pbmd1bmhhIGFwbGljYWNpw7NuIGRpc3Bvw7FpYmxlIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5
MjI4Mjk1MjI2OTI0OTc1OTYiPiJOb24gaGF5IG5pbmd1bmhhIGFwbGljYWNpw7NuIGluc3RhbGFk
YSBxdWUgcG9pZGEgdXRpbGl6YXIgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWd1L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtZ3Uvc3RyaW5ncy54bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTZiNzNjNzNkOGFhMDI3NmY5ZTFmOGNjN2Q5ZDkyOGQ5ZTA3ODdiNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLWd1L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
ICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHht
bG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIK
KyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3
MTI2NjM4MjUiPiJBTkdMReCqqOCrgCDgqqrgqrjgqoLgqqbgqpfgq4DgqpMiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2
MjExNDc5NzA2NzU0NSI+IkFOR0xF4Kqo4Kq+IOCquOCrh+Cqn+Cqv+CqguCql+CqruCqvuCqgiDg
qqvgq4fgqrDgqqvgqr7gqrAg4KqV4Kqw4KuLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLgqrjgqr7g
qq7gqr7gqqjgq43gqq8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuCqrOCqp+CrgCDgqo3gqqog
4Kqu4Kq+4Kqf4KuHIEFOR0xF4Kqo4KuLIOCqieCqquCqr+Cri+CqlyDgqpXgqrDgq4siPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dp
ZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IuCqnOCrjeCqr+CqvuCqsOCrhyBBTkdMReCqqOCrhyDg
qrLgq4vgqqEg4KqV4Kqw4Kq14Kq+4Kqu4Kq+4KqCIOCqhuCqteCrhyDgqqTgq43gqq/gqr7gqrDg
q4cg4Kq44KqC4Kq14Kq+4KqmIOCqrOCrieCqleCrjeCquCDgqqzgqqTgqr7gqrXgq4siPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9
IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0zgqqjgqr4g4Kqh4KuN4Kqw4Kq+4KqH4Kq14Kqw
IOCqquCquOCqguCqpiDgqpXgqrDgq4siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3
b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDgqpfgq43g
qrDgqr7gqqvgqr/gqpXgq43gqrgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9p
bl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMReCq
qOCriyDgqongqqrgqq/gq4vgqpcg4KqV4Kqw4Kq14Kq+4Kqu4Kq+4KqCIOCqhuCqteCrgCDgqrDg
qrngq43gqq/gq4sg4Kqb4KuHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4KqV4KuL4KqIIOCq
jeCqqiDgqongqqrgqrLgqqzgq43gqqcg4Kqo4Kql4KuAIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1
OTYiPiJBTkdMReCqqOCriyDgqongqqrgqq/gq4vgqpcg4KqV4Kqw4KuAIOCqtuCqleCrhyDgqqTg
q4fgqrXgq4Ag4KqV4KuL4KqIIOCqjeCqqiDgqofgqqjgq43gqrjgq43gqp/gq4ngqrIg4KqV4Kqw
4KuH4Kqy4KuAIOCqqOCqpeCrgCI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtaGkvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1oaS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
Y2MzMjhmZDM3NGE2OWViYTRiNmY5OGQzZmEwYjlkYmQ2M2Y0YWJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtaGkvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAg
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAg
ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5k
cm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHht
bG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2Mzgy
NSI+IkFOR0xFIOCkleClgCDgpKrgpY3gpLDgpL7gpKXgpK7gpL/gpJXgpKTgpL7gpI/gpIIiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dp
ZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFIOCkleClgCDgpLjgpYfgpJ/gpL/gpILgpJcg
4KSs4KSm4KSy4KWH4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJh
bF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLgpLjgpL7gpK7gpL7gpKjgpY3g
pK8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBt
c2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuCkuOCkreClgCDgpJDgpKrgpY3gpLLgpL/gpJXg
pYfgpLbgpKgg4KSV4KWHIOCksuCkv+CkjyBBTkdMRSDgpJXgpL4g4KSH4KS44KWN4KSk4KWH4KSu
4KS+4KSyIOCkleCksOClh+CkgiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5n
bGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg
4KSV4KWHIOCksuCli+CkoSDgpLngpYvgpKjgpYcg4KSq4KSwIOCkoeCkvuCkr+CksuClieCklyDg
pKzgpYngpJXgpY3gpLgg4KSm4KS/4KSW4KS+4KSP4KSCIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2
MzA0Ij4iT3BlbkdMIOCkoeCljeCksOCkvuCkh+CkteCksCDgpJrgpYHgpKjgpYfgpIIiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJhbmdsZSwgb3BlbmdsLCDgpJfgpY3gpLDgpL7gpKvgpLzgpL/gpJUiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0
MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDgpJXgpL4g4KSH4KS44KWN4KSk4KWH4KSu4KS+4KSyIOCk
leCkv+Ckr+CkviDgpJzgpL4g4KSw4KS54KS+IOCkueCliCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYw
MyI+IuCkleCli+CkiCDgpJDgpKrgpY3gpLLgpL/gpJXgpYfgpLbgpKgg4KSJ4KSq4KSy4KSs4KWN
4KSnIOCkqOCkueClgOCkgiDgpLngpYgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19h
cHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IuCkh+Ck
guCkuOCljeCkn+ClieCksiDgpJXgpL/gpK/gpL4g4KSX4KSv4KS+IOCkleCli+CkiCDgpJDgpKrg
pY3gpLLgpL/gpJXgpYfgpLbgpKggQU5HTEUg4KSV4KS+IOCkh+CkuOCljeCkpOClh+CkruCkvuCk
siDgpKjgpLngpYDgpIIg4KSV4KSwIOCkuOCkleCkpOCkviI8L3N0cmluZz4KKzwvcmVzb3VyY2Vz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1oci9zdHJpbmdzLnht
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNTAwMzhkN2ZlNDIwNDI3M2MxN2IzNjg2MjQwMmVlNDg5ZjRjY2I5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaHIvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJp
Z2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisg
ICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
CisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAg
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNv
dXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9h
bmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1l
bnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3
Nzc4MTk3NDcxMjY2MzgyNSI+IlBvc3RhdmtlIHphIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcw
Njc1NDUiPiJJem1pamVuaXRlIHBvc3RhdmtlIHphIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYi
PiJPcMSHZW5pdG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2Fs
bF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IktvcmlzdGkgQU5HTEUgemEgc3Zl
IGFwbGlrYWNpamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3Vz
ZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlByaWthxb5pIGRpamFs
b8Wha2kgb2t2aXIga2FkIHNlIEFOR0xFIHXEjWl0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMw
NCI+Ik9kYWJlcml0ZSB1cHJhdmxqYcSNa2kgcHJvZ3JhbSB6YSBPcGVuR0wiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJh
bmdsZSwgb3BlbmdsLCBncmFmaWthIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
aW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iVXBvdHJl
YmxqYXZhIHNlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTmVtYSBkb3N0dXBuaWgg
YXBsaWthY2lqYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVk
X3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmlqZWRuYSBpbnN0YWxpcmFu
YSBhcGxpa2FjaWphIG5lIG1vxb5lIHVwb3RyZWJsamF2YXRpIEFOR0xFIjwvc3RyaW5nPgorPC9y
ZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWh1L3N0
cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZjVkMWIyMTA2MTAzZDQwNmUzZGIyNjhjYTAyMjczMGFi
OWNmMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1odS9zdHJpbmdzLnhtbApAQCAtMCwwICsx
LDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAg
ICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
ICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4K
KworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9h
cGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlm
Zjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1z
Z2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUtYmXDoWxsw610w6Fzb2siPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3
MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFLWJlw6FsbMOtdMOhc29rIG3Ds2Rvc8OtdMOhc2EiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1
MTM5NzYxNzE4MzM2MDAyNiI+IsOBbHRhbMOhbm9zIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJB
TkdMRSBoYXN6bsOhbGF0YSBtaW5kZW4gYWxrYWxtYXrDoXNuw6FsIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0
MzQwMjYwMDA3NTQiPiJQw6FyYmVzesOpZHBhbmVsIG1lZ2plbGVuw610w6lzZSBheiBBTkdMRSBi
ZXTDtmx0w6lzZSB1dMOhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVu
Z2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTC1pbGxl
c3p0xZFwcm9ncmFtIGtpdsOhbGFzenTDoXNhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
a2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3Jh
ZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkF6IEFOR0xFIGhhc3puw6FsYXTDoXZh
bCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBt
c2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+Ik5pbmNzZW5layByZW5kZWxrZXrDqXNyZSDDoWxs
w7MgYWxrYWxtYXrDoXNvayI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmluY3Mgb2x5YW4g
YWxrYWxtYXrDoXMgdGVsZXDDrXR2ZSwgYW1lbHkga8OpcGVzIGxlbm5lIGhhc3puw6FsbmkgYXog
QU5HTEUtdCI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaHkvc3Ry
aW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0
dGluZ3MvcmVzL3ZhbHVlcy1oeS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjY4MmE2YTMwNjcy
MjViMThlMjQzZTYzNjQyMTljNDg0N2E1YWJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaHkv
c3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDov
L3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1
cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9
ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFLdWr
INWv1aHWgNWj1aHVvtW41oDVuNaC1bTVttWl1oAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+
ItWT1bjVrdWl1oQgQU5HTEUt1asg1a/VodaA1aPVodW+1bjWgNW41oLVtNW21aXWgNWoIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEz
OTc2MTcxODMzNjAwMjYiPiLUuNW21aTVsNWh1bbVuNaC1oAiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+ItWV1aPVv9Wh1aPVuNaA1a7VpdWsIEFOR0xFLdWoINWi1bjVrNW41oAg1bDVodW+1aXVrNW+
1aHVrtW21aXWgNWrINWw1aHVtNWh1oAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93
X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+ItWR
1bjWgtW11oEg1b/VodWsINWl1oDVr9Wt1bjVvdW41oLVqdW11aHVtiDVutWh1b/VuNaC1bDVodW2
1agsINWl1oDVoiBBTkdMRS3VqCDVotWl1bzVttW+1bjWgtW0INWnIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQx
MTM5Mzg2MzA0Ij4i1LjVttW/1oDVpdaEIE9wZW5HTCDVvdWh1oDWhNWh1b7VodaA1agiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJBTkdMRSwgT3BlbkdMLCDVo9Wu1aHVutWh1b/Vr9Wl1oDVttWl1oAiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0
MzQxOTc4NjE5Nzk1NTgiPiLVldWj1b/VodWj1bjWgNWu1b7VuNaC1bQg1acgQU5HTEUg1bDVodW+
1aXVrNW+1aHVrtWoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i1YDVodW91aHVttWl1azVqyDV
sNWh1b7VpdWs1b7VodWu1bbVpdaAINW51a/VodW2Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYi
PiLVj9Wl1bLVodWk1oDVvtWh1a4g1bDVodW+1aXVrNW+1aHVrtW21aXWgNWr1oEg1bjVuSDVtNWl
1a/VqCDVudWrINWh1bvVodWv1oHVuNaC1bQgQU5HTEUt1ag6Ijwvc3RyaW5nPgorPC9yZXNvdXJj
ZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWluL3N0cmluZ3Mu
eG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkZDdiMmM1ZWZhMzk5NmJjYWJkMmU4MzAwZWMzYThkZGNhODdhOTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pbi9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5
cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
KyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgg
dGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0
CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisg
ICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0
aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3Ry
aWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENP
TkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJl
c291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVz
L2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1
bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2
Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyZW5zaSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3
MDY3NTQ1Ij4iVWJhaCBzZXRlbGFuIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJVbXVtIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9
IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJHdW5ha2FuIEFOR0xFIHVudHVrIHNlbXVhIGFwbGlrYXNp
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2Jv
eCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJUYW1waWxrYW4ga290YWsgZGlhbG9nIHNh
YXQgQU5HTEUgZGltdWF0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5n
bF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iUGlsaWggRHJpdmVy
IE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4
ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpcyI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5
Nzg2MTk3OTU1OCI+Ik1lbmdndW5ha2FuIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i
VGlkYWsgYWRhIGFwbGlrYXNpIHlhbmcgdGVyc2VkaWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5
NiI+IlRpZGFrIGFkYSBhcGxpa2FzaSB0ZXJpbnN0YWwgeWFuZyBkYXBhdCBtZW5nZ3VuYWthbiBB
TkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaXMvc3RyaW5n
cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy1pcy9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmNlN2ZlZDY2M2ZmMDE1
NjYwNTM3NDQ2N2JkNDA3OTI3ZDFhOTE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaXMvc3Ry
aW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
VVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3Vy
Y2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBl
eGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxl
IGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1
bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAg
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0
aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3Nj
aGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46
b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+Iktqw7Zyc3RpbGxp
bmdhciBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2Vz
X3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQnJleXRhIHN0aWxsaW5ndW0g
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkFsbWVubnQiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+Ik5vdGEgQU5HTEUgZnlyaXIgw7ZsbCBmb3JyaXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAw
MDc1NCI+IlPDvW5hIGdsdWdnYSDDvmVnYXIgQU5HTEUgZXIgaGxhw7Bpw7AiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQy
MjA3NDExMzkzODYzMDQiPiJPcG5hIE9wZW5HTC1yZWtpbCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVu
Z2wsIGdyYWbDrWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9h
c3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJOb3RhciBBTkdMRSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0i
MTY1MTgzNDU0MTQxOTg5MDYwMyI+IkVuZ2luIGZvcnJpdCB0aWx0w6ZrIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1
MjI2OTI0OTc1OTYiPiJFbmdpbiB1cHBzZXR0IGdldGEgbm90YcOwIEFOR0xFIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWl0
L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZThiYzA3MzA1OTI5MTZmMDc2NzAyNmM0OTA2ODc5
ZGM4YjFjODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1pdC9zdHJpbmdzLnhtbApAQCAtMCww
ICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAK
KyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAg
ICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM
aWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5U
SUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQu
CisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAt
LT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNv
bS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4
bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMi
IG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyZW56ZSBBTkdMRSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcy
MDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpY2EgbGUgaW1wb3N0YXppb25pIGRpIEFOR0xFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEz
OTc2MTcxODMzNjAwMjYiPiJHZW5lcmFsaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVz
ZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iVXNhIEFO
R0xFIHBlciB0dXR0ZSBsZSBhcHAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2Fu
Z2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ik1vc3Ry
YSBmaW5lc3RyYSBkaSBkaWFsb2dvIGRvcG8gaWwgY2FyaWNhbWVudG8gZGkgQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9
IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTZWxlemlvbmEgZHJpdmVyIE9wZW5HTCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+
ImFuZ2xlLCBvcGVuZ2wsIGdyYWZpY2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdM
RSBpbiB1c28iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90
aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJOZXNzdW5hIGFwcCBkaXNwb25pYmls
ZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnki
IG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmVzc3VuYSBhcHAgaW5zdGFsbGF0YSBwdcOy
IHV0aWxpenphcmUgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFs
dWVzLWl3L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtaXcvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMx
NGMzNTQwNTI1Zjc0NmM2NDQwM2Y0YmNjZjZlM2ExMDJmODNjNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLWl3L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRy
b2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUg
TGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVz
ZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAg
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lO
RCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo
ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJv
aWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxu
czp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUi
PiLXlNei15PXpNeV16og16nXnCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i16nX
mdeg15XXmSDXqdecINeU15LXk9eo15XXqiBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i15vX
nNec15kiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBz
IiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IteU16TXotec15Qg16nXnCBBTkdMRSDXnNeb
15wg15TXkNek15zXmden16bXmdeV16oiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93
X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IteU
16bXkteqINeq15nXkdeqINeT15Ut16nXmdeXINeb16ktQU5HTEUg16DXmNei158iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0
NzQyMjA3NDExMzkzODYzMDQiPiLXkdeX15nXqNeqINee16DXlNecINeU15TXqten158g15wtT3Bl
bkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1
NTQ4MDYwNDYxMzk1Ij4iYW5nbGUs4oCPIG9wZW5nbCwg15LXqNek15nXp9eUIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5
NDM0MTk3ODYxOTc5NTU4Ij4i15HXkNee16bXoteV16ogQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4
OTA2MDMiPiLXkNeZ158g15DXpNec15nXp9em15nXldeqINeW157Xmdeg15XXqiI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIy
ODI5NTIyNjkyNDk3NTk2Ij4i15DXmdefINeQ16TXnNeZ16fXpteZ15XXqiDXnteV16rXp9eg15XX
qiDXqdeZ15vXldec15XXqiDXnNeU16nXqtee16kg15EtQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291
cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtamEvc3RyaW5n
cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjM5YTA1MmY2NmIwNTIyZDc2MDdjNWJlZjhjOWM2YjZlMWJmNmE3
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWphL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENv
cHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisK
KyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8
cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9y
ZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRv
Y3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9
IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDjga7oqK3lrpoiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5
NzA2NzU0NSI+IkFOR0xFIOOBruioreWumuOCkuWkieabtCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i
5YWo6IisIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBw
cyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLjgZnjgbnjgabjga7jgqLjg5fjg6rjgacg
QU5HTEUg44KS5L2/55SoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9p
bl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSDjga7o
qq3jgb/ovrzjgb/mmYLjgavjg4DjgqTjgqLjg63jgrAg44Oc44OD44Kv44K544KS6KGo56S6Ijwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1z
Z2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIOODieODqeOCpOODkOOBrumBuOaKniI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2
MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIOOCsOODqeODleOCo+ODg+OCr+OCuSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOOCkuS9v+eUqOOBl+OBpuOBhOOBvuOBmSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+IuS9v+eUqOOBp+OBjeOCi+OCouODl+ODquOBjOOBguOCiuOBvuOB
m+OCkyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEUg44KS5L2/55So44Gn44GN44KL
44Ki44OX44Oq44GM44Kk44Oz44K544OI44O844Or44GV44KM44Gm44GE44G+44Gb44KTIjwvc3Ry
aW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rYS9zdHJpbmdzLnhtbCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFs
dWVzLWthL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNDg1YzQxNDdiYzU0YTNhZWJjMmI3YmE4
YWFiYjMyMWY1MzVhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rYS9zdHJpbmdzLnhtbApA
QCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgor
PCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0
CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0
aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBj
b21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9m
IHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9M
SUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBX
QVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGlt
cGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292
ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNl
LgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRy
b2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1l
czp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVy
ZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUt4YOY4YOhIOGDnuGDkOGD
oOGDkOGDm+GDlOGDouGDoOGDlOGDkeGDmCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFu
Z2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5H
TEUt4YOY4YOhIOGDnuGDkOGDoOGDkOGDm+GDlOGDouGDoOGDlOGDkeGDmOGDoSDhg6jhg5Thg6rh
g5Xhg5rhg5AiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuGDluGDneGDkuGDkOGDk+GDmCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4iQU5HTEUt4YOY4YOhIOGDkuGDkOGDm+GDneGDp+GDlOGDnOGDlOGD
keGDkCDhg6fhg5Xhg5Thg5rhg5Ag4YOQ4YOe4YOY4YOh4YOX4YOV4YOY4YOhIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0
NDMyNTA0MzQwMjYwMDA3NTQiPiLhg5Phg5jhg5Dhg5rhg53hg5Lhg5jhg6Eg4YOk4YOQ4YOc4YOv
4YOg4YOY4YOhIOGDqeGDleGDlOGDnOGDlOGDkeGDkCBBTkdMRS3hg5jhg6Eg4YOp4YOQ4YOi4YOV
4YOY4YOg4YOX4YOV4YOY4YOh4YOQ4YOhIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2Vs
ZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i4YOQ
4YOY4YOg4YOp4YOY4YOU4YOXIE9wZW5HTCDhg5Phg6Dhg5Dhg5jhg5Xhg5Thg6Dhg5giPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJhbmdsZSwgb3BlbmdsLCDhg5Lhg6Dhg5Dhg6Thg5jhg5nhg5AiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQx
OTc4NjE5Nzk1NTgiPiLhg5Lhg5Dhg5vhg53hg5jhg6fhg5Thg5zhg5Thg5Hhg5AgQU5HTEUiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9
IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLhg67hg5Thg5rhg5vhg5jhg6Hhg5Dhg6zhg5Xhg5Phg53h
g5vhg5gg4YOQ4YOe4YOU4YOR4YOYIOGDkOGDoCDhg5Dhg6Dhg5jhg6EiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUy
MjY5MjQ5NzU5NiI+IuGDkOGDnuGDlOGDkeGDmCwg4YOg4YOd4YOb4YOa4YOU4YOR4YOh4YOQ4YOq
IOGDqOGDlOGDo+GDq+GDmuGDmOGDkOGDlyDhg5Lhg5Dhg5vhg53hg5jhg6fhg5Thg5zhg53hg5wg
QU5HTEUsIOGDk+GDkOGDp+GDlOGDnOGDlOGDkeGDo+GDmuGDmCDhg5Dhg6Ag4YOQ4YOg4YOY4YOh
Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ray9zdHJpbmdzLnht
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLWtrL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTBhNjA5NTZmMGM5MDNlOTU5
NDEzZGM5ODgzNjVjZTY5ZDQ2OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ray9zdHJpbmdz
LnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1h
cy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNp
czpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg0L/QsNGA0LDQ
vNC10YLRgNC70LXRgNGWIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVy
ZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDQv9Cw0YDQ
sNC80LXRgtGA0LvQtdGA0ZbQvSDTqdC30LPQtdGA0YLRgyI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4i
0JbQsNC70L/RiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxs
X2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i0JHQsNGA0LvRi9KbINKb0L7Qu9C0
0LDQvdCx0LDQu9Cw0YDSk9CwIEFOR0xFINC/0LDQudC00LDQu9Cw0L3RgyI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQz
MjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg0LbSr9C60YLQtdC70LPQtdC9INC60LXQt9C00LUsINC0
0LjQsNC70L7Qs9GC0ZbQuiDRgtC10YDQtdC30LXQvdGWINC606nRgNGB0LXRgtGDIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIz
NDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMINC00YDQsNC50LLQtdGA0ZbQvSDRgtCw0qPQtNCw
0YMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1
NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDQs9GA0LDRhNC40LrQsCI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQz
NDE5Nzg2MTk3OTU1OCI+IkFOR0xFINKb0L7Qu9C00LDQvdCx0LDRgdGL0L0g0L/QsNC50LTQsNC7
0LDQvdGDIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0
bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i0prQvtC70LbRgtC10LzQtNGWINKb0L7Q
u9C00LDQvdCx0LDQu9Cw0YAg0LbQvtKbIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9f
YXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBTkdM
RSDQv9Cw0LnQtNCw0LvQsNC90LDRgtGL0L0g0LXRiNKb0LDQvdC00LDQuSDSm9C+0LvQtNCw0L3Q
sdCw0LvQsNGAINC+0YDQvdCw0YLRi9C70LzQsNC00YsuIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy1rbS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWttL3N0cmluZ3MueG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk5MGExOTA3YTk2YzM2ODhmNjU4OWQ3NjVjMzQzZGUzYWI1YWVmNDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1rbS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmln
aHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAg
ICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisK
KyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291
cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2Fu
ZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVu
dDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3
NzgxOTc0NzEyNjYzODI1Ij4i4Z6F4Z+G4Z6O4Z684Z6b4oCL4Z6F4Z634Z6P4Z+S4Z6PIEFOR0xF
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIg
bXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLhnoDhn4LigIvhnoDhnrbhnprhnoDhn4bhno7h
no/hn4sgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3Rp
dGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuGekeGevOGekeGfhSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4
MDQ0MDQxMjM5Njk0Ij4i4Z6U4Z+S4Z6a4Z6+IEFOR0xFIOGen+GemOGfkuGemuGetuGelOGfi+KA
i+GegOGemOGfkuGemOGenOGet+GekuGeuOKAi+GekeGetuGfhuGehOGeouGen+GfiyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lk
PSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i4Z6U4Z6E4Z+S4Z6g4Z624Z6J4oCL4Z6U4Z+S4Z6a4Z6i
4Z6U4Z+L4Z6U4Z6J4Z+S4Z6F4Z684Z6b4oCL4Z6T4Z+F4Z6W4Z+B4Z6b4oCL4Z6V4Z+S4Z6R4Z67
4Z6AIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2
ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i4Z6H4Z+S4Z6a4Z6+4Z6f4Z6a
4Z6+4Z6f4oCL4Z6K4Z+S4Z6a4Z624Z6Z4Z6c4Z6+IE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBv
cGVuZ2wsIOGegOGfkuGemuGetuGeoOGfkuGenOGet+GegCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3
OTU1OCI+IuGegOGfhuGeluGeu+GehOGelOGfkuGemuGeviBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQx
OTg5MDYwMyI+IuGemOGet+Gek+GemOGetuGek+KAi+GegOGemOGfkuGemOGenOGet+GekuGeuOKA
i+GeouGetuGeheGelOGfkuGemuGevuGelOGetuGek+GekeGfgSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjky
NDk3NTk2Ij4i4Z6C4Z+S4Z6Y4Z624Z6T4Z6A4Z6Y4Z+S4Z6Y4Z6c4Z634Z6S4Z644oCL4Z6K4Z+C
4Z6b4Z6U4Z624Z6T4Z6K4Z+G4Z6h4Z6+4Z6EIOGeiuGfguGem+GeouGetuGeheGelOGfkuGemuGe
viBBTkdMRSDhnpThnrbhnpPhnpHhn4EiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLWtuL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta24vc3RyaW5ncy54bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzg4ZDUwNTQwOGI3NWVmYWFhZmI4NTY3OTNkNmY2NDY5ZDRlY2IyNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLWtuL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5z
OmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAg
ICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2
NjM4MjUiPiJBTkdMRSDgsobgsqbgs43gsq/gsqTgs4bgspfgsrPgs4EiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjEx
NDc5NzA2NzU0NSI+IkFOR0xFIOCyuOCzhuCyn+CzjeCyn+Cyv+CyguCyl+CzjeKAjOCyl+Cys+Cy
qOCzjeCyqOCzgSDgsq7gsr7gsrDgs43gsqrgsqHgsr/gsrjgsr8iPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAy
NiI+IuCyuOCyvuCyruCyvuCyqOCzjeCyryI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVz
ZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i4LKO4LKy
4LON4LKy4LK+IOCyhuCzjeCyr+CyquCzjeKAjOCyl+Cys+Cyv+Cyl+CyvuCyl+CyvyBBTkdMRSDg
soXgsqjgs43gsqjgs4Eg4LKs4LKz4LK44LK/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
c2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQi
PiJBTkdMRSDgsrLgs4vgsqHgs40g4LKG4LKX4LK/4LKw4LOB4LK14LK+4LKXIOCyoeCziOCysuCy
vuCyl+CzjSDgsqzgsr7gspXgs43gsrjgs40g4LKF4LKo4LON4LKo4LOBIOCypOCzi+CysOCyv+Cy
uOCyvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3Rp
dGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDgsqHgs43gsrDgs4jgsrXg
srDgs43igIwg4LKF4LKo4LON4LKo4LOBIOCyhuCyr+CzjeCyleCzhuCyruCyvuCyoeCyvyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2
MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIOCyl+CzjeCysOCyvuCyq+Cyv+CyleCzjeCyuOCzjSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dp
ZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOCyheCyqOCzjeCyqOCzgSDgsqzgsrPgsrjg
srLgsr7gspfgs4HgsqTgs43gsqTgsr/gsqbgs4YiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLg
sq/gsr7gsrXgs4Hgsqbgs4cg4LKG4LON4LKv4LKq4LON4oCM4LKX4LKz4LOBIOCysuCyreCzjeCy
r+CyteCyv+CysuCzjeCysiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i4LKv4LK+4LK14LOB
4LKm4LOHIOCyhuCzjeCyr+CyquCzjeKAjOCyl+Cys+CyqOCzjeCyqOCzgSDgsofgsqjgs43igIzg
srjgs43gsp/gsr7gsrLgs40g4LKu4LK+4LKh4LKy4LK+4LKX4LK/4LKy4LON4LKyLCBBTkdMRSDg
sqzgsrPgsrjgsqzgsrngs4Hgsqbgsr7gspfgsr/gsqbgs4YiPC9zdHJpbmc+Cis8L3Jlc291cmNl
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta28vc3RyaW5ncy54
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjA5YTE1Mjc0YmE4YjQ0MDY2MzM0N2VlNGJjZWE4YzM3MTQ1YTVhMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWtvL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAK
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHly
aWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2Vk
IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwor
ICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQK
KworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAg
ICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09O
RElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUg
dGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lv
bnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVz
b3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMv
YW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3Vt
ZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYy
Nzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDtmZjqsr3shKTsoJUiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5
NzA2NzU0NSI+IkFOR0xFIOyEpOyglSDsiJjsoJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuydvOuw
mCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1z
Z2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i66qo65OgIOyVseyXkCBBTkdMRSDsgqzsmqkiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBt
c2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xF7J20IOuhnOuTnOuQmOuptCDrjIDtmZTs
g4HsnpAg7ZGc7IucIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9k
cml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIOuTnOudvOyd
tOuyhCDshKDtg50iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9
IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDqt7jrnpjtlL0iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIy
NTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdMReydhCDsgqzsmqkg7KSR7J6F64uI64ukLiI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+IuyCrOyaqSDqsIDriqXtlZwg7JWx7J20IOyXhuydjCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIx
OTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEXsnYQg7IKs7Jqp7ZWgIOyImCDsnojripQg7JWx7J20
IOyEpOy5mOuQmOyWtCDsnojsp4Ag7JWK7Iq164uI64ukLiI8L3N0cmluZz4KKzwvcmVzb3VyY2Vz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMta3kvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1reS9zdHJpbmdzLnht
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZTgyY2E1N2UyYmMwMzNiOTc1YmJlMWJiNzUxMGJmM2JhNzliYzVjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lz
dGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMta3kvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJp
Z2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cisg
ICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
CisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAg
IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGlu
Zywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05E
SVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0
aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9u
cyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNv
dXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9h
bmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1l
bnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3
Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFINC/0LDRgNCw0LzQtdGC0YDQu9C10YDQuCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIy
MDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg0LbTqdC90LTTqdOp0LvTqdGA0q/QvSDTqdC30LPT
qdGA0YLSr9KvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRs
ZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLQltCw0LvQv9GLIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQw
NDEyMzk2OTQiPiLQkdCw0YDQtNGL0Log0LrQvtC70LTQvtC90LzQvtC70L7RgNC00L4gQU5HTEUg
0LrQvtC70LTQvtC90YPQu9GB0YPQvSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5H
TEUg0LbSr9C60YLTqdC70LPTqdC90LTTqSwg0LTQuNCw0LvQvtCzINC60YPRgtGD0YHRgyDQutOp
0YDRgdOp0YLSr9C70YHSr9C9Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29w
ZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMINC0
0YDQsNC50LLQtdGA0LjQvSDRgtCw0L3QtNC+0L4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDQ
s9GA0LDRhNC40LrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90
b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFINC60L7Qu9C0
0L7QvdGD0LvRg9GD0LTQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+ItCW0LXRgtC60LjQu9C4
0LrRgtKv0q8g0LrQvtC70LTQvtC90LzQvtC70L7RgCDQttC+0LoiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5
MjQ5NzU5NiI+IkFOR0xFXCfQtNC4INC/0LDQudC00LDQu9Cw0L3QsCDRgtGD0YDQs9Cw0L0g0LHQ
uNGAINC00LAg0LrQvtC70LTQvtC90LzQviDQvtGA0L3QvtGC0YPQu9Cz0LDQvSDQttC+0LoiPC9z
dHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWxvL3N0cmluZ3MueG1sIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtbG8vc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdkZDdkM2YxYzZlOTMyYWZkOTNjYzcx
ZDgzN2RlODE2ZDRmNmNlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLWxvL3N0cmluZ3MueG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFu
ZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5h
bWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLguoHgurLgupngupXgurHgu4ng
uofguoTgu4jgurIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IuC7geC6geC7ieC7
hOC6guC6geC6suC6meC6leC6seC7ieC6h+C6hOC7iOC6siBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4i4LqX4Lq74LuI4Lqn4LuE4LqbIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNl
X2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLgu4Pguorg
u4kgQU5HTEUg4Lqq4Lqz4Lql4Lqx4Lqa4LqX4Lq44LqB4LuB4Lqt4Lqx4LqaIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0
NDMyNTA0MzQwMjYwMDA3NTQiPiLguqrgurDgu4HgupTguofguoHgu4jguq3guofguoLgu43gu4ng
uoTguqfgurLguqHgu4DguqHgurfgu4jguq3gu4LguqvgurzgupQgQU5HTEUg4LuB4Lql4LuJ4Lqn
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUi
IG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i4LuA4Lql4Lq34Lqt4LqB4LuE4LqU4Lqj4LuA
4Lqn4Lq1IE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dp
ZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIOC6geC6o+C6suC6muC6n+C6
tOC6gSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IuC6geC6s+C6peC6seC6h+C7g+C6iuC7
iSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3Rp
dGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuC6muC7jeC7iOC6oeC6teC7geC6reC6
seC6muC6l+C6teC7iOC7g+C6iuC7ieC7hOC6lOC7iSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2
Ij4i4Lqa4LuN4LuI4Lqh4Lq14LuB4Lqt4Lqx4Lqa4LqX4Lq14LuI4LqV4Lq04LqU4LqV4Lqx4LuJ
4LqH4LuE4Lqn4LuJIOC6quC6suC6oeC6suC6lOC7g+C6iuC7iSBBTkdMRSI8L3N0cmluZz4KKzwv
cmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1sdC9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTgwZWI2NDAxNmM1MmE5OTAxNDZkNmU1MzIzZjgyM2Y2
NWQ0OTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbHQvc3RyaW5ncy54bWwKQEAgLTAsMCAr
MSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisg
ICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAg
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+
CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20v
YXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxp
ZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBt
c2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIG51b3N0YXRvcyI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYy
MTE0Nzk3MDY3NTQ1Ij4iS2Vpc3RpIEFOR0xFIG51c3RhdHltdXMiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAy
NiI+IkJlbmRyaWVqaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3Jf
YWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iTmF1ZG90aSBBTkdMRSB2aXNv
c2UgcHJvZ3JhbW9zZSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5f
dXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iUm9keXRpIGRpYWxv
Z28gbGFuZ8SFLCBrYWkgQU5HTEUgxK9rZWx0YSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+
IlBhc2lyaW5rdGkg4oCeT3BlbkdM4oCcIHR2YXJreWtsxJkiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3Bl
bmdsLCBncmFmaWthIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3Rv
YXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iTmF1ZG9qYW1hIHByb2dy
YW1hIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRf
dGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTsSXcmEgam9racWzIHBhc2lla2lh
bcWzIHByb2dyYW3FsyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTsSXcmEgam9racWzIMSv
ZGllZ3TFsyBwcm9ncmFtxbMsIGdhbGluxI1pxbMgbmF1ZG90aSBBTkdMRSI8L3N0cmluZz4KKzwv
cmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1sdi9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZmRmZmY3Y2ZmMTljZjNiZDQyMjlhYjNkMTZiZGEyZTIx
Mzk1NTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbHYvc3RyaW5ncy54bWwKQEAgLTAsMCAr
MSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisg
ICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAg
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5j
ZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElF
UyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgor
ICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+
CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20v
YXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxp
ZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBt
c2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIHByZWZlcmVuY2VzIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIw
NjIxMTQ3OTcwNjc1NDUiPiJQxIFydmVpZG9qaWV0IEFOR0xFIGllc3RhdMSranVtdXMiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5
NzYxNzE4MzM2MDAyNiI+IlZpc3DEgXLEq2dpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
dXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJJem1h
bnRvdCBBTkdMRSB2aXPEgW0gbGlldG90bsSTbSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0
Ij4iUsSBZMSrdCBkaWFsb2dsb2R6acWGdSwgaWVsxIFkxJNqb3QgQU5HTEUiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQy
MjA3NDExMzkzODYzMDQiPiJPcGVuR0wgZHppxYZhIGF0bGFzZSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBv
cGVuZ2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2Vf
dG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJJem1hbnRvam90IGxp
ZXRvdG5pIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTmF2IHBpZWVqYW1hIG5ldmll
bmEgbGlldG90bmUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxl
ZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik5hdiBpbnN0YWzEk3RhIG5l
dmllbmEgbGlldG90bmUsIGthcyB2YXIgaXptYW50b3QgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291
cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1rL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbWsvc3RyaW5n
cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjM2Y2Y2MjhlNTk2YmU2Njg1NDEzNDdkMGMzZWVlNzNiZmU0YjQy
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1rL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENv
cHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vu
c2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIp
OworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0
aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2Ug
YXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisK
KyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdy
aXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBT
ZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8
cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9y
ZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRv
Y3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9
IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiLQn9C+0YHRgtCw0LLQutC4INC30LAgQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0i
MjA3MjA2MjExNDc5NzA2NzU0NSI+ItCY0LfQvNC10L3QtdGC0LUg0LPQuCDQv9C+0YHRgtCw0LLQ
utC40YLQtSDQt9CwIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2Vu
ZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLQntC/0YjRgtC+Ijwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1
NjI2NzgwNDQwNDEyMzk2OTQiPiLQmtC+0YDQuNGB0YLQuCBBTkdMRSDQt9CwINGB0LjRgtC1INCw
0L/Qu9C40LrQsNGG0LjQuCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVf
aW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4i0J/RgNC40LrQ
sNC20YPQstCw0Zgg0YDQsNC80LrQsCDQt9CwINC00LjRmNCw0LvQvtCzINC/0YDQuCDQstGH0LjR
gtGD0LLQsNGa0LXRgtC+INC90LAgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJz
ZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiLQ
mNC30LHQtdGA0LXRgtC1INC00YDQsNGY0LLQtdGAINC30LAgT3BlbkdMIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5n
bGUsIG9wZW5nbCwg0LPRgNCw0YTQuNC60LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLQ
odC1INC60L7RgNC40YHRgtC4IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9f
YXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i0J3QtdC8
0LAg0LTQvtGB0YLQsNC/0L3QuCDQsNC/0LvQuNC60LDRhtC40LgiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5
MjQ5NzU5NiI+ItCd0LXQvNCwINC40L3RgdGC0LDQu9C40YDQsNC90Lgg0LDQv9C70LjQutCw0YbQ
uNC4INGI0YLQviDQvNC+0LbQsNGCINC00LAg0LrQvtGA0LjRgdGC0LDRgiBBTkdMRSI8L3N0cmlu
Zz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbWwvc3RyaW5ncy54bWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1tbC9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjUyNGM1ZjljYjA3NGUyNjVhMDFlZTIxOTky
NGYyMjkzYmFlYmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbWwvc3RyaW5ncy54bWwKQEAg
LTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwh
LS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAor
CisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl
ICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29t
cGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0
aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElD
RU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3Jl
ZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGlj
ZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVy
bmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4K
KyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9p
ZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6
dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVu
Y2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IuC0huC0guC0l+C0v+C1viDgtK7gtYHg
tbvgtJfgtKPgtKjgtJXgtb4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IuC0huC0guC0l+C0
v+C1viDgtJXgtY3gtLDgtK7gtYDgtJXgtLDgtKPgtIIg4LSq4LSw4LS/4LS34LWN4oCM4LSV4LWN
4LSV4LSw4LS/4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLgtKrgtYrgtKTg
tYHgtLXgtL7gtK/gtLUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuC0juC0suC1jeC0suC0viDg
tIbgtKrgtY3gtKrgtYHgtJXgtb7gtJXgtY3gtJXgtYHgtIIg4LSG4LSC4LSX4LS/4LW+IOC0ieC0
quC0r+C1i+C0l+C0v+C0leC1jeC0leC1geC0lSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0
Ij4i4LSG4LSC4LSX4LS/4LW+IOC0suC1i+C0oeC1jSDgtJrgtYbgtK/gtY3igIzgtKTgtY0g4LSV
4LS04LS/4LSv4LWB4LSu4LWN4LSq4LWL4LW+IOC0oeC0r+C0suC1i+C0l+C1jSDgtKzgtYvgtJXg
tY3igIzgtLjgtY0g4LSV4LS+4LSj4LS/4LSV4LWN4LSV4LWB4LSVIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQx
MTM5Mzg2MzA0Ij4iT3BlbkdMIOC0oeC1jeC0sOC1iOC0teC0sOC1jeKAjSDgtKTgtL/gtLDgtJ7g
tY3gtJ7gtYbgtJ/gtYHgtJXgtY3gtJXgtYHgtJUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgT3BlbkdMLCDg
tJfgtY3gtLDgtL7gtKvgtL/gtJXgtY3igIzgtLjgtY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1
NTgiPiJBTkdMRSDgtIngtKrgtK/gtYvgtJfgtL/gtJXgtY3gtJXgtYHgtKjgtY3gtKjgtYEiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9
IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLgtLLgtK3gtY3gtK/gtK7gtL7gtK8g4LSG4LSq4LWN4LSq
4LWB4LSV4LSz4LWK4LSo4LWN4LSo4LWB4LSu4LS/4LSy4LWN4LSyIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2
OTI0OTc1OTYiPiLgtIbgtILgtJfgtL/gtb4g4LSJ4LSq4LSv4LWL4LSX4LS/4LSV4LWN4LSV4LS+
4LW7IOC0leC0tOC0v+C0r+C1geC0qOC1jeC0qCDgtIbgtKrgtY3gtKrgtYHgtJXgtLPgtYrgtKjg
tY3gtKjgtYHgtIIg4LSH4LW74LS44LWN4oCM4LSx4LWN4LSx4LS+4LW+IOC0muC1huC0r+C1jeKA
jOC0pOC0v+C0n+C1jeC0n+C0v+C0suC1jeC0siI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3Jlcy92YWx1ZXMtbW4vc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1tbi9zdHJpbmdzLnhtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMWQxOTIzMGQzMzRhYTJhMjI1YWUyZTM3OGI2NGFiZDM0NThkMjFiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtbW4vc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIw
MTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIg
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91
IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNl
bnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAg
ICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVz
cyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29m
dHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBv
biBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05T
IE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGlj
ZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQK
KyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMg
eG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lk
IgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4y
Ij4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3
NDcxMjY2MzgyNSI+IkFOR0xFLdC9INGB0L7QvdCz0L7Qu9GCIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcw
Njc1NDUiPiJBTkdMRSDRgtC+0YXQuNGA0LPQvtC+0LMg06nTqdGA0YfQu9Op0YUiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYx
NzE4MzM2MDAyNiI+ItCV0YDTqdC90YXQuNC5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
dXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJBTkdM
RS3QsyDQsdKv0YUg0LDQv9C/0LDQtCDQsNGI0LjQs9C70LDRhSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0
MDI2MDAwNzU0Ij4iQU5HTEUt0LMg0LDRh9Cw0LDQu9Cw0YUg0q/QtdC0INGF0LDRgNC40LvRhtCw
0YUg0YbQvtC90YUg0YXQsNGA0YPRg9C70LDRhSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+
Ik9wZW5HTCDQtNGA0LDQudCy0LXRgCDRgdC+0L3Qs9C+0YUiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3Bl
bmdsLCBncmFwaGljcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90
b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFLdCzINCw0YjQ
uNCz0LvQsNC2INCx0LDQudC90LAiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBz
X2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLQkdC+0LvQvtC8
0LbRgtC+0Lkg0LDQv9C/INCw0LvQs9CwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9f
YXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJBTkdM
RS3QsyDQsNGI0LjQs9C70LDRhSDQsdC+0LvQvtC80LbRgtC+0Lkg0LDQv9C/INGB0YPRg9C70LPQ
sNCw0LPSr9C5INCx0LDQudC90LAiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzLW1yL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJv
aWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbXIvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDI4N2ExNjBlOWMwYTIzZjkxNDQzOGZmYzFiMGE1MWIxMzA4YmE4MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLW1yL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBB
bmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90
IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAg
ICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDov
L3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWly
ZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisg
ICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFT
IElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGlt
aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFu
ZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4
bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4
MjUiPiJBTkdMRSDgpKrgpY3gpLDgpL7gpKfgpL7gpKjgpY3gpK/gpYciPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjEx
NDc5NzA2NzU0NSI+IkFOR0xFIOCkuOClh+Ckn+Ckv+CkguCkl+CljeCknOCkruCkp+CljeCkr+Cl
hyDgpLjgpYHgpKfgpL7gpLDgpKPgpL4g4KSV4KSw4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLg
pLjgpL7gpKfgpL7gpLDgpKMiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVf
Zm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuCkuOCksOCljeCktSDg
pIXigI3gpYXgpKrgpY3gpLjgpLjgpL7gpKDgpYAgQU5HTEUg4KS14KS+4KSq4KSw4KS+Ijwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNn
aWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSDgpLLgpYvgpKEg4KSd4KS+4KSy4KWN4KSv
4KS+4KS14KSwIOCkoeCkvuCkr+CksuClieCklyDgpKzgpYngpJXgpY3gpLgg4KSm4KS+4KSW4KS1
4KS+Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0
bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIOCkoeCljeCksOCkvuCkr+Ck
teCljeCkueCksCDgpKjgpL/gpLXgpKHgpL4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJr
ZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDgpJfg
pY3gpLDgpL7gpKvgpL/gpJXgpY3gpLgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdM
RSDgpLXgpL7gpKrgpLDgpKQg4KSG4KS54KWHIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
bm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4KSV
4KWL4KSj4KSk4KWH4KS54KWAIOCkheKAjeClheCkquCljeCkuCDgpIngpKrgpLLgpKzgpY3gpKcg
4KSo4KS+4KS54KWA4KSkIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0
YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLgpIXgpIHgpJfgpLIg
4KS14KS+4KSq4KSw4KWCIOCktuCkleCko+CkvuCksOClhyDgpIXigI3gpYXgpKrgpY3gpLgg4KSH
4KSC4KS44KWN4KSf4KWJ4KSyIOCkleClh+CksuClh+CksuClhyDgpKjgpL7gpLngpYDgpKQiPC9z
dHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1zL3N0cmluZ3MueG1sIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtbXMvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY4Mjg0ZGIwMzY3MzViNzY3NTdiNzZi
NWU3OTIzNjQ5MTk5YjkwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW1zL3N0cmluZ3MueG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFu
ZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5h
bWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQaWxpaGFuIEFOR0xFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9
IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJVYmFoIHN1YWkgdGV0YXBhbiBBTkdMRSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3
MTgzMzYwMDI2Ij4iVW11bSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9m
b3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iR3VuYWthbiBBTkdMRSB1
bnR1ayBzZW11YSBhcGwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlR1bmp1a2thbiBr
b3RhayBkaWFsb2cgYXBhYmlsYSBBTkdMRSBkaW11YXRrYW4iPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkz
ODYzMDQiPiJQaWxpaCBQZW1hY3UgT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
a2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3Jh
ZmlrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3Nh
Z2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iTWVuZ2d1bmFrYW4gQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2
NTE4MzQ1NDE0MTk4OTA2MDMiPiJUaWFkYSBhcGwgeWFuZyB0ZXJzZWRpYSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5
NTIyNjkyNDk3NTk2Ij4iVGlhZGEgYXBsIHRlcnBhc2FuZyB5YW5nIGRhcGF0IG1lbmdndW5ha2Fu
IEFOR0xFIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1teS9zdHJp
bmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzLW15L3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjYjAzZWQ4MDkyYjhi
Mjg5MjY2MzQxMTFkMjBlZGNmZmFlMzFkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1teS9z
dHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxl
IGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9y
Zy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVk
IHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisg
ICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBl
eHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8v
c2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVy
bjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg4YCe
4YCQ4YC64YCZ4YC+4YCQ4YC64YCB4YC74YCA4YC64YCZ4YC74YCs4YC4Ijwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIx
MTQ3OTcwNjc1NDUiPiJBTkdMRSDhgIbhgIDhgLrhgJDhgIThgLrhgJnhgLvhgKzhgLgg4YCV4YC8
4YCU4YC64YCV4YC84YCE4YC64YCV4YCx4YC44YCe4YCK4YC6Ijwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYi
PiLhgKHhgJHhgL3hgLHhgJHhgL3hgLEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2Vf
YW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IuGAoeGAgOGA
uuGAleGAuuGAoeGArOGAuOGAnOGAr+GAtuGAuOGAoeGAkOGAveGAgOGAuiBBTkdMRSDhgJ7hgK/h
gLbhgLjhgJvhgJThgLoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOGAluGA
veGAhOGAt+GAuuGAkeGArOGAuOGAnuGAiuGAt+GAuuGAoeGAgeGAqyDhgJLhgK3hgK/hgIThgLrh
gJrhgKzhgJzhgLHhgKzhgLfhgILhgLrhgKHhgIDhgL3hgIDhgLrhgIDhgK3hgK8g4YCV4YC84YCb
4YCU4YC6Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJf
dGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIOGAkuGAm+GAreGAr+GA
hOGAuuGAl+GArCDhgJvhgL3hgLHhgLjhgJXhgKsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZeGBiiBvcGVuZ2zh
gYog4YCC4YCb4YCV4YC64YCW4YCF4YC64YCZ4YC74YCs4YC4Ijwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYx
OTc5NTU4Ij4iQU5HTEUg4YCh4YCs4YC4IOGAoeGAnuGAr+GAtuGAuOGAleGAvOGAr+GAlOGAseGA
leGAq+GAnuGAiuGAuuGBiyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuGAnuGAr+GAtuGAuOGA
lOGAreGAr+GAhOGAuuGAnuGAseGArOGAoeGAgOGAuuGAleGAuiDhgJnhgJvhgL7hgK3hgJXhgKsi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBt
c2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xFIOGAgOGAreGAryDhgJ7hgK/hgLbhgLjh
gJThgK3hgK/hgIThgLrhgJ7hgLHhgKwg4YCh4YCA4YC64YCV4YC64YCQ4YCF4YC64YCB4YCv4YCZ
4YC74YC+IOGAkeGAiuGAt+GAuuGAnuGAveGAhOGAuuGAuOGAmeGAkeGArOGAuOGAleGAqyI8L3N0
cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1uYi9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjdjOTgzZWNiOGUyYmY1ODM3MmE1OGJi
YzczZjViMDBkMmU4YTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmIvc3RyaW5ncy54bWwK
QEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
KzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5k
cm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFt
ZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFLWlubnN0aWxsaW5nZXIi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBt
c2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkVuZHJlIEFOR0xFLWlubnN0aWxsaW5nZXIiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1
MTM5NzYxNzE4MzM2MDAyNiI+IkdlbmVyZWx0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
dXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJCcnVr
IEFOR0xFIGZvciBhbGxlIGFwcGVyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19h
bmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJWaXMg
ZGlhbG9nYm9rcyBuw6VyIEFOR0xFIGVyIGxhc3RldCBpbm4iPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkz
ODYzMDQiPiJWZWxnIE9wZW5HTC1kcml2ZXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJr
ZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFm
aWtrIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3Nh
Z2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iTWVkIEFOR0xFIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQx
NDE5ODkwNjAzIj4iSW5nZW4gdGlsZ2plbmdlbGlnZSBhcHBlciI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjky
NDk3NTk2Ij4iSW5nZW4gYXBwZXIgc29tIGthbiBicnVrZSBBTkdMRSwgZXIgaW5zdGFsbGVydCI8
L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmUvc3RyaW5ncy54bWwg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVz
L3ZhbHVlcy1uZS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDQ4NGRlZTQ0NDRlNDY2YmVlZGM5
OTJmZDFmMzIzMDEyNWEwMmI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtbmUvc3RyaW5ncy54
bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi
Pz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29w
eSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5z
ZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBv
ciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdl
IGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMu
YW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6
bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3By
ZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIOCkleCkviDgpKrg
pY3gpLDgpL7gpKXgpK7gpL/gpJXgpKTgpL7gpLngpLDgpYIiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2
NzU0NSI+IkFOR0xFIOCkleCkviDgpLjgpYfgpJ/gpL/gpJngpLngpLDgpYIg4KSq4KSw4KS/4KSu
4KS+4KSw4KWN4KSc4KSoIOCkl+CksOCljeCkqOClgeCkueCli+CkuOCljSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgz
MzYwMDI2Ij4i4KS44KS+4KSu4KS+4KSo4KWN4KSvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLg
pLjgpKzgpYgg4KSF4KSo4KWB4KSq4KWN4KSw4KSv4KWL4KSX4KS54KSw4KWC4KSu4KS+IEFOR0xF
IOCkquCljeCksOCkr+Cli+CklyDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0i
MzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFOR0xFIOCksuCli+CkoSDgpK3gpI/gpKrgpJvgpL8g4KS4
4KSC4KS14KS+4KSmIOCkrOCkvuCkleCkuCDgpKbgpYfgpJbgpL7gpIngpKjgpYHgpLngpYvgpLjg
pY0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRs
ZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4KSh4KWN4KSw4KS+4KSH4KSt
4KSwIOCkmuCkr+CkqCDgpJfgpLDgpY3gpKjgpYHgpLngpYvgpLjgpY0iPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmds
ZSwgb3BlbmdsLCDgpJfgpY3gpLDgpL7gpKvgpL/gpJXgpY3gpLgiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4
NjE5Nzk1NTgiPiJBTkdMRSDgpKrgpY3gpLDgpK/gpYvgpJcg4KSX4KSw4KWN4KSm4KWIIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIx
NjUxODM0NTQxNDE5ODkwNjAzIj4i4KSV4KWB4KSo4KWIIOCkquCkqOCkvyDgpIXgpKjgpYHgpKrg
pY3gpLDgpK/gpYvgpJcg4KSJ4KSq4KSy4KSs4KWN4KSnIOCkm+CliOCkqCI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5
NTIyNjkyNDk3NTk2Ij4iQU5HTEUg4KSq4KWN4KSw4KSv4KWL4KSXIOCkl+CksOCljeCkqCDgpLjg
pJXgpY3gpKjgpYcg4KSV4KWB4KSo4KWIIOCkquCkqOCkvyDgpIXgpKjgpYHgpKrgpY3gpLDgpK/g
pYvgpJcg4KS44KWN4KSl4KS+4KSq4KSo4KS+IOCkl+CksOCkv+Ckj+CkleCliyDgpJvgpYjgpKgi
PC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW5sL3N0cmluZ3MueG1s
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtbmwvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVmNDM4NGYxNDE5YjJjMTIwYzc4
YjhhYjQ2NmIyZDAzMmJjZTY4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLW5sL3N0cmluZ3Mu
eG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFBy
b2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNv
cHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcg
b3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRI
T1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mg
b3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExp
Y2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFz
LmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lz
Om5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9w
cmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRS12b29ya2V1cmVu
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIg
bXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRS1pbnN0ZWxsaW5nZW4gYWFucGFzc2Vu
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9
IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJBbGdlbWVlbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i
QU5HTEUgZ2VicnVpa2VuIHZvb3IgYWxsZSBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3
NTQiPiJEaWFsb29ndmVuc3RlciB3ZWVyZ2V2ZW4gd2FubmVlciBBTkdMRSBpcyBnZWxhZGVuIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1z
Z2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMLXN0dXVycHJvZ3JhbW1hIHNlbGVjdGVy
ZW4iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1
NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncmFwaGljcyI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2
MTk3OTU1OCI+IkFOR0xFIHdvcmR0IGdlYnJ1aWt0Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i
R2VlbiBiZXNjaGlrYmFyZSBhcHBzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBw
c19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJFciB6aWpu
IGdlZW4gYXBwcyBnZcOvbnN0YWxsZWVyZCBkaWUgQU5HTEUga3VubmVuIGdlYnJ1aWtlbiI8L3N0
cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtb3Ivc3RyaW5ncy54bWwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy1vci9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOWViNzFiZTRmMzczZjA1NmE5NjVjNTUz
NTY3NmM3OTU1MmQzODQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtb3Ivc3RyaW5ncy54bWwK
QEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
KzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVj
dAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAo
dGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4g
Y29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBv
ZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMv
TElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBh
Z3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUg
TGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQg
V0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBp
bXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z
ZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5k
cm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFt
ZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IkFOR0xFIOCsheCsl+CtjeCssOCs
vuCsp+Csv+CsleCsvuCssCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZl
cmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iQU5HTEUg4Ky44K2H
4Kyf4Ky/4KyC4Ky44K2NIOCsquCssOCsv+CsrOCssOCtjeCspOCtjeCspOCsqCDgrJXgrLDgrKjg
rY3grKTgrYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuCsuOCsvuCsp+CsvuCssOCsoyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4i4Ky44Kyu4Ky44K2N4KykIOCshuCsquCtjSDgrKrgrL7grIfgrIEg
QU5HTEUg4Kys4K2N4K2f4Kys4Ky54Ky+4KywIOCsleCssOCsqOCtjeCspOCtgSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg4Kyy4K2L4Kyh4K2NIOCsueCth+CsrOCsviDgrKrg
rLDgrYcg4Kyh4Ky+4KyP4Kyy4KyX4K2N4oCNIOCsrOCsleCtjeCsuCDgrKbgrYfgrJbgrKjgrY3g
rKTgrYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90
aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4Kyh4K2N4Kyw4Ky+4KyH
4Kyt4Kyw4K2NIOCsmuCtn+CsqCDgrJXgrLDgrKjgrY3grKTgrYEiPC9zdHJpbmc+CisgICAgPHN0
cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwg
b3BlbmdsLCDgrJfgrY3grLDgrL7grKvgrL/grJXgrY3grLgiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5
Nzk1NTgiPiJVc2luZyBBTkdMRSDgrKzgrY3grZ/grKzgrLngrL7grLAg4KyV4Kyw4Ky+4Kyv4Ky+
4KyJ4Kyb4Ky/Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRf
dGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i4KyV4K2M4Kyj4Ky44Ky/IOCshuCs
quCtjeCsuCDgrIngrKrgrLLgrKzgrY3grKcg4Kyo4Ky+4Ky54Ky/4KyBIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1
MjI2OTI0OTc1OTYiPiJBTkdMRSDgrKzgrY3grZ/grKzgrLngrL7grLAg4KyV4Kyw4Ky/4Kyq4Ky+
4Kyw4Ky/4Kys4Ky+IOCsreCss+CsvyDgrJXgrYzgrKPgrLjgrL8g4KyG4Kyq4K2N4Ky4IOCsh+Cs
qOCtjeKAjOCst+CtjeCsn+CssuCtjSDgrLngrYvgrIfgrKjgrL7grLngrL/grIEiPC9zdHJpbmc+
Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXBhL3N0cmluZ3MueG1sIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
cGEvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdlZDUxZjgyOTVjZjhlMWM4NTg2OTcwZjVmMDgw
ZGE0OWJlMDllMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXBhL3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDgqKTgqLDgqJzgqYDgqLngqL7g
qIIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5
IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IkFOR0xFIOCouOCpiOCon+Cov+CpsOCol+Co
vuCogiDgqLjgqYvgqKfgqYsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5l
cmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuCouOCop+CovuCosOCoqCI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lk
PSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i4Ki44Ki+4Kiw4KmA4KiG4KiCIOCokOCoquCovuCogiDg
qLLgqIggQU5HTEUg4Ki14Kiw4Kik4KmLIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hv
d19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJB
TkdMRSDgqKbgqYcg4Kiy4KmL4KihIOCoueCpi+CooyBcJ+CopOCphyDgqKHgqL7gqIfgqLLgqYzg
qJcg4Kis4Ki+4KiV4Ki4IOCopuCov+ColuCovuCokyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMw
NCI+Ik9wZW5HTCDgqKHgqLDgqL7gqIjgqLXgqLAg4Kia4KmB4Kij4KmLIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5n
bGUsIG9wZW5nbCwg4KiX4KmN4Kiw4Ki+4Kir4Ki/4KiVIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5
NTU4Ij4iQU5HTEUg4Kim4KmAIOCoteCosOCopOCpi+CogiDgqJXgqYDgqKTgqYAg4Kic4Ki+IOCo
sOCoueCpgCDgqLngqYgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLgqJXgqYvgqIgg4KiQ4Kiq
4Ki+4KiCIOCoieCoquCosuCorOCopyDgqKjgqLngqYDgqIIg4Ki54KioIjwvc3RyaW5nPgorICAg
IDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1
MjI2OTI0OTc1OTYiPiJBTkdMRSDgqKbgqYAg4Ki14Kiw4Kik4KmL4KiCIOColeCosCDgqLjgqJXg
qKMg4Ki14Ki+4Kiy4KmA4KiG4KiCIOColeCpi+CoiCDgqJDgqKrgqL7gqIIg4Ki44Kil4Ki+4Kiq
4KikIOCoqOCoueCpgOCogiDgqLngqKgiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtcGwvc3RyaW5ncy54bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTIzYTM1N2M0YWU4MTUxYzgzNzZlYzBiYmI0MmE4MzQwYTllOTU5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLXBsL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5z
OmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAg
ICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2
NjM4MjUiPiJVc3Rhd2llbmlhIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJabWll
xYQgdXN0YXdpZW5pYSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dl
bmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iT2fDs2xuZSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4iVcW8eXdhaiBBTkdMRSBkbyB3c3p5c3RraWNoIGFwbGlrYWNqaSI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3gi
IG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iUG9rYcW8IG9rbm8gcG8gd2N6eXRhbml1IEFO
R0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0
bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iV3liaWVyeiBzdGVyb3duaWsgT3BlbkdM
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3
OTU1OCI+IlXFvHl3YW0gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBz
X2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJCcmFrIG9kcG93
aWVkbmljaCBhcGxpa2FjamkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ik5pZSB6YWluc3Rh
bG93YW5vIGFwbGlrYWNqaSwga3TDs3JlIG1vZ8SFIHXFvHl3YcSHIEFOR0xFIjwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1wdC1yUFQvc3RyaW5ncy54bWwgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy1wdC1yUFQvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBlNTI1MmVkYjEyOWQ0MzY4NzBlZTcy
YWJlYzFmMmE3ZGQ5Y2FlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXB0LXJQVC9zdHJpbmdz
LnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1h
cy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNp
czpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyw6puY2lhcyBk
byBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1
bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpY2FyIGRlZmluacOnw7Vl
cyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUi
IG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iR2VyYWwiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+IlV0aWxpemFyIG8gQU5HTEUgcGFyYSB0b2RhcyBhcyBhcGxpY2HDp8O1ZXMiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0i
MzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ik1vc3RyYXIgYSBjYWl4YSBkZSBkacOhbG9nbyBxdWFuZG8g
byBBTkdMRSDDqSBjYXJyZWdhZG8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rf
b3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJTZWxlY2lv
bmUgbyBjb250cm9sYWRvciBkbyBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJr
ZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCBncsOh
Zmljb3MiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVz
c2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBIHV0aWxpemFyIEFOR0xFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIx
NjUxODM0NTQxNDE5ODkwNjAzIj4iTmVuaHVtYSBhcGxpY2HDp8OjbyBkaXNwb27DrXZlbCI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lk
PSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTsOjbyBleGlzdGVtIGFwbGljYcOnw7VlcyBpbnN0YWxh
ZGFzIHF1ZSBwb3NzYW0gdXRpbGl6YXIgbyBBTkdMRS4iPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9z
ZXR0aW5ncy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtcHQvc3RyaW5ncy54bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTJiNDdkNjkyMmI0MTE5MGU5NjY4ZjZmZmFlYTBmMGFkMWZjNmM4NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLXB0L3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdo
dCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAg
IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUg
TGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKwor
ICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBV
bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
IHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0
ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElU
SU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3Vy
Y2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5k
cm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50
OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3
ODE5NzQ3MTI2NjM4MjUiPiJQcmVmZXLDqm5jaWFzIGRvIEFOR0xFIjwvc3RyaW5nPgorICAgIDxz
dHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3
OTcwNjc1NDUiPiJNb2RpZmljYXIgY29uZmlndXJhw6fDtWVzIGRvIEFOR0xFIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcx
ODMzNjAwMjYiPiJHZXJhbCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9m
b3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iVXNhciBvIEFOR0xFIHBh
cmEgdG9kb3Mgb3MgYXBwcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVf
aW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iTW9zdHJhciBj
YWl4YSBkZSBkacOhbG9nbyBkZXBvaXMgcXVlIG8gQU5HTEUgZm9yIGNhcnJlZ2FkbyI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0i
MzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlNlbGVjaW9uYXIgZHJpdmVyIE9wZW5HTCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+
ImFuZ2xlLCBvcGVuZ2wsIGdyw6FmaWNvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5n
bGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4iVXNh
bmRvIG8gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxl
ZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJOZW5odW0gYXBwIGRpc3BvbsOt
dmVsIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFy
eSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJOZW5odW0gZG9zIGFwcHMgaW5zdGFsYWRv
cyBwb2RlIHVzYXIgbyBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92
YWx1ZXMtcm8vc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1yby9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YjY3N2E5ODU2NTk3OWYyMzFkYmEwNWU0Y2FhZmNiYmRkNDEzYTRhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jl
cy92YWx1ZXMtcm8vc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFu
ZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3Qg
dXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAg
IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8v
d3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJl
ZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAg
ICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg
SVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1p
dGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5k
cm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHht
bG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2Mzgy
NSI+IlByZWZlcmluyJtlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJNb2RpZmlj
xIMgc2V0xINyaWxlIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2Vu
ZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJHZW5lcmFsIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2
NzgwNDQwNDEyMzk2OTQiPiJGb2xvc2XImXRlIEFOR0xFIHBlbnRydSB0b2F0ZSBhcGxpY2HIm2lp
bGUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2df
Ym94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IkFmaciZZWF6xIMgY2FzZXRhIGRlIGRp
YWxvZyBjw6JuZCBBTkdMRSBlc3RlIMOubmPEg3JjYXQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYz
MDQiPiJTZWxlY3RlYXrEgyBkcml2ZXJ1bCBPcGVuR0wiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3Blbmds
LCBncmFmaWPEgyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2Fz
dF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkZvbG9zaW5kIEFOR0xFIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lk
PSIxNjUxODM0NTQxNDE5ODkwNjAzIj4iTnUgZXhpc3TEgyBhcGxpY2HIm2lpIGRpc3BvbmliaWxl
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIg
bXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJOdSBleGlzdMSDIGFwbGljYcibaWkgaW5zdGFs
YXRlIGNhcmUgcG90IGZvbG9zaSBBTkdMRSI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1ydS9zdHJpbmdzLnhtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMDBjM2RhNjE1MjEzZTU2OTkyM2I5ZDljNWNhMWJkZjdhN2QyM2U2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3Jlcy92YWx1ZXMtcnUvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAg
ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1s
bnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgor
ICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcx
MjY2MzgyNSI+ItCd0LDRgdGC0YDQvtC50LrQuCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3
NTQ1Ij4i0JjQt9C80LXQvdC10L3QuNC1INC90LDRgdGC0YDQvtC10LogQU5HTEUuIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2
MTcxODMzNjAwMjYiPiLQntCx0YnQuNC1Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNl
X2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLQmNGB0L/Q
vtC70YzQt9C+0LLQsNGC0YwgQU5HTEUg0LTQu9GPINCy0YHQtdGFINC/0YDQuNC70L7QttC10L3Q
uNC5Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9n
X2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLQn9C+0LrQsNC30YvQstCw0YLRjCDQ
tNC40LDQu9C+0LPQvtCy0L7QtSDQvtC60L3QviDQv9GA0Lgg0LfQsNC/0YPRgdC60LUgQU5HTEUi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIg
bXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiLQktGL0LHQtdGA0LjRgtC1INC00YDQsNC50LLQ
tdGAIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0i
NjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsINCz0YDQsNGE0LjQutCwIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lk
PSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPIEFOR0xFIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lk
PSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i0J3QtdGCINC00L7RgdGC0YPQv9C90YvRhSDQv9GA0LjQ
u9C+0LbQtdC90LjQuSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i0J3QuCDQvtC00L3QviDQ
uNC3INGD0YHRgtCw0L3QvtCy0LvQtdC90L3Ri9GFINC/0YDQuNC70L7QttC10L3QuNC5INC90LUg
0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCIEFOR0xFLiI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3Nl
dHRpbmdzL3Jlcy92YWx1ZXMtc2kvc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zaS9zdHJpbmdzLnhtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYjZjNjFmNjY5YTBjYjEyNjIwZDM5MGJiOTRjMGYzZjQxNDViNjYyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtc2kvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0
IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5k
ZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAg
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisg
ICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVu
bGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywg
c29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRl
ZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJ
T05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUg
TGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJj
ZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRy
b2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6
MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4
MTk3NDcxMjY2MzgyNSI+IkFOR0xFIOC2uOC2seC3j+C2tCI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3
NTQ1Ij4iQU5HTEUg4LeD4LeQ4Laa4LeD4LeT4La44LeKIOC3gOC3kuC2muC2u+C2q+C2uiI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUx
Mzk3NjE3MTgzMzYwMDI2Ij4i4La04Lec4Lav4LeUIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiLg
t4Pgt5Lgtrrgtr3gt5Qg4La64LeZ4Lav4LeU4La44LeKIOC3g+C2s+C3hOC3jyBBTkdMRSDgtrfg
t4/gt4Dgt5Lgtq3gt48g4Laa4La74Lax4LeK4LaxIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3
NTQiPiJBTkdMRSDgtrTgt5bgtrvgtqvgtrog4LeA4LeWIOC3gOC3kuC2pyDgt4PgtoLgt4Dgt4/g
tq8g4Laa4Lec4Lan4LeU4LeAIOC2tOC3meC2seC3iuC3gOC2seC3iuC2sSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIy
MDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDgtrDgt4/gt4Dgtprgtrog4Lat4Led4La74Lax4LeK4Lax
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4i4Laa4Led4Lar4La6LCBvcGVuZ2wsIOC2oOC3kuC2reC3iuKAjeC2u+C2miI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBt
c2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOC2t+C3j+C3gOC3kuC2reC2uiI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0i
MTY1MTgzNDU0MTQxOTg5MDYwMyI+IuC2veC2tuC3jyDgtpzgtq0g4LeE4LeQ4Laa4LeSIOC2uuC3
meC2r+C3lOC2uOC3iiDgtrHgt5zgtrjgt5Dgtq0iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+
IkFOR0xFIOC2t+C3j+C3gOC3kuC2rSDgtprgt4Ug4LeE4LeQ4Laa4LeSIOC2uuC3meC2r+C3lOC2
uOC3iiDgtprgt5Lgt4Pgt5Lgt4Dgtprgt4og4LeD4LeK4Lau4LeP4La04LaxIOC2muC2uyDgtrHg
t5Dgtq0iPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNrL3N0cmlu
Z3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3Jlcy92YWx1ZXMtc2svc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQ2ODZiODkyMzkwZmQw
OGY5YWE0MTc5ZWY2MWI5MTU4MjkxNWE4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNrL3N0
cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9z
Y2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJu
Om9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJQcmVkdm/EvmJ5
IEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3Vt
bWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJVcHJhdmnFpSBuYXN0YXZlbmlhIEFO
R0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNn
aWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJWxaFlb2JlY27DqSI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5
Njk0Ij4iUG91xb7DrXZhxaUgQU5HTEUgcHJlIHbFoWV0a3kgYXBsaWvDoWNpZSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIz
NDQzMjUwNDM0MDI2MDAwNzU0Ij4iWm9icmF6acWlIGRpYWzDs2dvdsOpIG9rbm8gcHJpIG5hxI3D
rXRhbsOtIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9k
cml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4iVnliZXJ0ZSBvdmzDoWRh
xI0gT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2
Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1OTQz
NDE5Nzg2MTk3OTU1OCI+IlBvdcW+w612YSBzYSBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYw
MyI+Ik5pZSBzw7oga8KgZGlzcG96w61jaWkgxb5pYWRuZSBhcGxpa8OhY2llIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4
Mjk1MjI2OTI0OTc1OTYiPiLFvWlhZG5hIG5haW7FoXRhbG92YW7DoSBhcGxpa8OhY2lhIG5lZG9r
w6HFvmUgcG91xb7DrXZhxaUgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtc2wvc3RyaW5ncy54bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDBmZWE2NDllODYyMzIwNzUxMzdjYzJmNmE4ZjQ0M2ZjODE5ODk3NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLXNsL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5z
OmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAg
ICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2
NjM4MjUiPiJOYXN0YXZpdHZlIHphIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJT
cHJlbWluamFuamUgbmFzdGF2aXRldiB6YSBnb25pbG5payBBTkdMRSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYw
MDI2Ij4iU3Bsb8Whbm8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlVwb3JhYmkgQU5HTEUgemEg
dnNlIGFwbGlrYWNpamUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2lu
X3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAyNjAwMDc1NCI+IlBva2HFvmkgcG9n
b3Zvcm5vIG9rbm8sIGtvIHNlIG5hbG/FvmkgZ29uaWxuaWsgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3
NDExMzkzODYzMDQiPiJJemJpcmEgZ29uaWxuaWthIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBv
cGVuZ2wsIGdyYWZpa2EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2Vf
dG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJVcG9yYWJsamEgc2Ug
Z29uaWxuaWsgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJOYSB2b2xqbyBuaSBub2Jl
bmEgYXBsaWthY2lqYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iTmFtZcWhxI1lbmEgbmkg
bm9iZW5hIGFwbGlrYWNpamEsIGtpIGJpIGxhaGtvIHVwb3JhYmxqYWxhIGdvbmlsbmlrIEFOR0xF
Ijwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zcS9zdHJpbmdzLnht
bCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLXNxL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNTJlZmIzNjUzOTNhNTkxNmJl
NDE3Y2RmZGIyYzU3NTc3ODIzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy1zcS9zdHJpbmdz
LnhtbApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYt
OCI/PgorPCEtLSAKKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQ
cm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24g
Mi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBj
b3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNl
bnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVy
IHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3Vh
Z2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBM
aWNlbnNlLgorICAtLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1h
cy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNp
czpuYW1lczp0Yzp4bGlmZjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVf
cHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iUHJlZmVyZW5jYXQgZSBB
TkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1h
cnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4iTW9kaWZpa28gY2lsw6tzaW1ldCBlIEFO
R0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNn
aWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiJUw6sgcMOrcmdqaXRoc2htZSI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0
MDQxMjM5Njk0Ij4iUMOrcmRvciBBTkdMRSBww6tyIHTDqyBnaml0aGEgYXBsaWthY2lvbmV0Ijwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIg
bXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJTaGZhcSBrdXRpbsOrIGUgZGlhbG9ndXQga3Vy
IG5nYXJrb2hldCBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVu
Z2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlpnamlkaCBkcml2
ZXItaW4gT3BlbkdMIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lk
PSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3JhZmlrYSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+IlBvIHDDq3Jkb3IgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2
MDMiPiJOdWsga2EgYXNuasOrIGFwbGlrYWNpb24iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+
Ik51ayBrYSBhc25qw6sgYXBsaWthY2lvbiB0w6sgaW5zdGFsdWFyIHHDqyBtdW5kIHTDqyBww6ty
ZG9yw6sgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXNy
L3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3Jlcy92YWx1ZXMtc3Ivc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhhN2Q3NGQx
ODg0NTI5ZTQ2N2RmZmRlNTY2YjAwMjllN2I0YTkyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LXNyL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9w
ZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlz
IGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBw
bGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJp
YnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJ
UywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0
aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMg
dW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0
dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlm
Zj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdM
RSDQv9C+0LTQtdGI0LDQstCw0ZrQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xl
X3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0Nzk3MDY3NTQ1Ij4i0JjQt9C8
0LXQvdC40YLQtSBBTkdMRSDQv9C+0LTQtdGI0LDQstCw0ZrQsCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgzMzYwMDI2
Ij4i0J7Qv9GI0YLQtSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3Jf
YWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i0JrQvtGA0LjRgdGC0LggQU5H
TEUg0LfQsCDRgdCy0LUg0LDQv9C70LjQutCw0YbQuNGY0LUiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0iMzQ0MzI1MDQzNDAy
NjAwMDc1NCI+ItCf0YDQuNC60LDQttC4INC/0YDQvtC30L7RgCDQtNC40ZjQsNC70L7Qs9CwINC6
0LDQtNCwINGB0LUgQU5HTEUg0YPRh9C40YLQsCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+
ItCY0LfQsNCx0LXRgNC40YLQtSBPcGVuR0wg0YPQv9GA0LDQstGZ0LDRh9C60Lgg0L/RgNC+0LPR
gNCw0LwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2
MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDQs9GA0LDRhNC40LrQsCI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+ItCa0L7RgNC40YHRgtC4INGB0LUgQU5HTEUiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1
NDE0MTk4OTA2MDMiPiLQndC40ZjQtSDQtNC+0YHRgtGD0L/QvdCwINC90LjRmNC10LTQvdCwINCw
0L/Qu9C40LrQsNGG0LjRmNCwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19p
bnN0YWxsZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLQndC40ZjQtSDQ
uNC90YHRgtCw0LvQuNGA0LDQvdCwINC90LjRmNC10LTQvdCwINCw0L/Qu9C40LrQsNGG0LjRmNCw
INC60L7RmNCwINC80L7QttC1INC00LAg0LrQvtGA0LjRgdGC0LggQU5HTEUiPC9zdHJpbmc+Cis8
L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtc3Yv
c3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZiMDVkM2NmYjY3ZmNiZjkwMTliY2U0MjFmNDU2ZDdj
Mzk4MmU5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXN2L3N0cmluZ3MueG1sCkBAIC0wLDAg
KzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAor
ICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAg
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0t
PgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29t
L2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhs
aWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIg
bXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJJbnN0w6RsbG5pbmdhciBmw7ZyIEFOR0xFIjwv
c3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNn
aWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLDhG5kcmEgaW5zdMOkbGxuaW5nYXIgZsO2ciBBTkdM
RSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lk
PSIzODUxMzk3NjE3MTgzMzYwMDI2Ij4iQWxsbcOkbnQiPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+
IkFudsOkbmQgQU5HTEUgZsO2ciBhbGxhIGFwcGFyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3
NTQiPiJWaXNhIGVuIGRpYWxvZ3J1dGEgbsOkciBBTkdMRSBoYXIgbMOkc3RzIGluIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIz
NDc0MjIwNzQxMTM5Mzg2MzA0Ij4iVsOkbGogZHJpdnJ1dGluZW4gZsO2ciBPcGVuR0wiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJhbmdsZSwgb3BlbmdsLCBncmFmaWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJh
bmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJB
TkdMRSBhbnbDpG5kcyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IkRldCBmaW5ucyBpbmdhIHRp
bGxnw6RuZ2xpZ2EgYXBwYXIiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkRldCBmaW5ucyBp
bmdhIGluc3RhbGxlcmFkZSBhcHBhciBkw6RyIEFOR0xFIGthbiBhbnbDpG5kYXMiPC9zdHJpbmc+
Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMt
c3cvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJhZjAwNTA1ZGU4NWY2MTAwYTdiMDc4NmE3MzQ1
MGY2NzIyZTQ4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXN3L3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJNYXBlbmRlbGVvIHlhIEFOR0xFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9
IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJCYWRpbGlzaGEgbWlwYW5naWxpbyB5YSBBTkdMRSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUx
Mzk3NjE3MTgzMzYwMDI2Ij4iSnVtbGEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2Vf
YW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IlR1bWlhIEFO
R0xFIGthdGlrYSBwcm9ncmFtdSB6b3RlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hv
d19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJP
bnllc2hhIGtpZGlyaXNoYSBjaGEgbWF6dW5ndW16byBpbmFwb3Bha2lhIEFOR0xFIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIz
NDc0MjIwNzQxMTM5Mzg2MzA0Ij4iQ2hhZ3VhIEtpZW5kZXNoYWppIGNoYSBPcGVuR0wiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEz
OTUiPiJhbmdsZSwgb3BlbmdsLCBtaWNob3JvIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i
SW5hdHVtaWEgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJIYWt1bmEgcHJvZ3JhbXUg
emluYXpvcGF0aWthbmEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+Ikhha3VuYSBwcm9ncmFt
dSB6aWxpem9zYWtpbmlzaGEgemluYXpvd2VrYSBrdXR1bWlhIEFOR0xFIjwvc3RyaW5nPgorPC9y
ZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10YS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXRhL3N0
cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMTZlZmUyODU5NTA0ZjBhYzA4OTVlMDQyYjgxMGRmOGRl
NzJiYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10YS9zdHJpbmdzLnhtbApAQCAtMCwwICsx
LDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAg
ICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
ICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4K
KworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9h
cGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlm
Zjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1z
Z2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg4K614K6/4K6w4K+B4K6q4K+N4K6q4K6k
4K+N4K6k4K+H4K6w4K+N4K614K+B4K6V4K6z4K+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUi
PiJBTkdMRSDgroXgrq7gr4jgrqrgr43grqrgr4HgrpXgrrPgr4gg4K6u4K6+4K6x4K+N4K6x4K+B
4K6u4K+NIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIg
bXNnaWQ9IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLgrqrgr4rgrqTgr4EiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0
MTIzOTY5NCI+IuCuheCuqeCviOCupOCvjeCupOCvgSDgrobgrqrgr43grrjgrr/grrHgr43grpXg
r4Hgrq7gr40gQU5HTEXgrrPgr4jgrqrgr40g4K6q4K6v4K6p4K+N4K6q4K6f4K+B4K6k4K+N4K6k
4K+BIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9n
X2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSDgrongrqrgrq/gr4vgrpXg
rr/grpXgr43grpXgrqrgr43grqrgrp/gr4Hgrq7gr43grqrgr4vgrqTgr4Eg4K6J4K6w4K+I4K6v
4K6+4K6f4K6y4K+NIOCuquCvhuCun+CvjeCun+Cuv+Cur+CviOCuleCvjSDgrpXgrr7grp/gr43g
rp/gr4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90
aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4K6f4K6/4K6w4K+I4K61
4K6w4K+I4K6k4K+NIOCupOCvh+CusOCvjeCuqOCvjeCupOCvhuCun+CvgeCupOCvjeCupOCusuCv
jSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0
ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIOCuleCuv+CusOCuvuCug+CuquCuv+CuleCvjeCu
uOCvjSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIOCuhuCuquCvjeCuuOCviOCu
quCvjSDgrqrgrq/grqngr43grqrgrp/gr4HgrqTgr43grqTgrqrgr43grqrgrp/gr4HgrpXgrr/g
rrHgrqTgr4EiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90
aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLgrobgrqrgr43grrjgr40g4K6O4K6k
4K+B4K614K+B4K6u4K+NIOCuh+CusuCvjeCusuCviCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2
Ij4iQU5HTEXgrrPgr4jgrqrgr40g4K6q4K6v4K6p4K+N4K6q4K6f4K+B4K6k4K+N4K6k4K6V4K+N
4K6V4K+C4K6f4K6/4K6vIOCujuCuqOCvjeCupCDgrobgrqrgr43grrjgr4Hgrq7gr40g4K6o4K6/
4K6x4K+B4K614K6q4K+N4K6q4K6f4K614K6/4K6y4K+N4K6y4K+IIjwvc3RyaW5nPgorPC9yZXNv
dXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10ZS9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXRlL3N0cmlu
Z3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYwYzFlNGUyNjAxNDczYjFjMDk2YTVkMTZmODFmYWM4M2VhMjBj
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10ZS9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMw
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBD
b3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
CisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAg
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKwor
PHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsv
cmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpk
b2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lk
PSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUg4LCq4LGN4LCw4LC+4LCn4LC+4LCo4LGN4LCv
4LCk4LCy4LGBIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNf
c3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJBTkdMRSDgsLjgsYbgsJ/gsY3g
sJ/gsL/gsILgsJfgsY3igIzgsLLgsKjgsYEg4LCu4LC+4LCw4LGN4LCa4LCh4LCCIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2
MTcxODMzNjAwMjYiPiLgsLjgsL7gsKfgsL7gsLDgsKPgsIIiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5
NCI+IkFOR0xF4LCo4LGBIOCwheCwqOCxjeCwqOCwvyDgsK/gsL7gsKrgsY3igIzgsLIg4LCV4LGL
4LC44LCCIOCwieCwquCwr+Cxi+Cwl+Cwv+CwguCwmuCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5n
IG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2
MDAwNzU0Ij4iQU5HTEUg4LCy4LGL4LCh4LGNIOCwheCwr+Cwv+CwqOCwquCxjeCwquCxgeCwoeCx
gSDgsJMg4LCh4LGI4LCy4LC+4LCX4LGNIOCwrOCwvuCwleCxjeCwuOCxjSDgsJrgsYLgsKrgsL/g
sILgsJrgsYEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZl
cl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJPcGVuR0wg4LCh4LGN4LCw4LGI
4LC14LCw4LGN4oCM4LCo4LGBIOCwjuCwguCwmuCxgeCwleCxi+CwguCwoeCwvyI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+
IkFOR0xFLCBPcGVuR0wsIOCwl+CxjeCwsOCwvuCwq+Cwv+CwleCxjeCwuOCxjSI8L3N0cmluZz4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNzYWdlIiBtc2dpZD0iMjI1
OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xF4LCo4LGBIOCwieCwquCwr+Cxi+Cwl+Cwv+CwuOCxjeCw
pOCxi+CwguCwpuCwvyI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFs
bGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IuCwheCwguCwpuCxgeCwrOCw
vuCwn+CxgeCwsuCxiyDgsIngsKjgsY3gsKgg4LCv4LC+4LCq4LGN4oCM4LCy4LGBIOCwsuCxh+Cw
teCxgSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4iQU5HTEXgsKjgsYEg4LCJ4LCq4LCv4LGL
4LCX4LC/4LCC4LCa4LCX4LCyIOCwr+CwvuCwquCxjeKAjOCwsuCxgSDgsIfgsKjgsY3igIzgsLjg
sY3gsJ/gsL7gsLLgsY0g4LCa4LGH4LCv4LCs4LCh4LCy4LGH4LCm4LGBIjwvc3RyaW5nPgorPC9y
ZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXRoL3N0
cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZjAxMjVhMjUyMThkZDBhOTY1N2E2YzMwYzAzYmY3ZmIz
NTE1M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5k
cm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10aC9zdHJpbmdzLnhtbApAQCAtMCwwICsx
LDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAg
ICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBM
aWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNl
bnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIu
MAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBp
biB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlz
IGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisg
ICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBl
cm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4K
KworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9h
cGsvcmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlm
Zjpkb2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1z
Z2lkPSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4i4LiE4LmI4Liy4LiB4Liz4Lir4LiZ4LiUIEFOR0xF
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIg
bXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiLguYHguIHguYnguYTguILguIHguLLguKPguJXg
uLHguYnguIfguITguYjguLIgQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuC4l+C4seC5iOC4
p+C5hOC4myI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2Fw
cHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i4LmD4LiK4LmJIEFOR0xFIOC4quC4s+C4
q+C4o+C4seC4muC5geC4reC4m+C4l+C4seC5ieC4h+C4q+C4oeC4lCI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUw
NDM0MDI2MDAwNzU0Ij4i4LmB4Liq4LiU4LiH4LiB4Lil4LmI4Lit4LiH4LmC4LiV4LmJ4LiV4Lit
4Lia4LmA4Lih4Li34LmI4LitIEFOR0xFIOC5guC4q+C4peC4lCI8L3N0cmluZz4KKyAgICA8c3Ry
aW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEz
OTM4NjMwNCI+IuC5gOC4peC4t+C4reC4geC5hOC4lOC4o+C5gOC4p+C4reC4o+C5jCBPcGVuR0wi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgw
NjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDguIHguKPguLLguJ/guLTguIEiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0
MzQxOTc4NjE5Nzk1NTgiPiLguIHguLPguKXguLHguIfguYPguIrguYkgQU5HTEUiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4
MzQ1NDE0MTk4OTA2MDMiPiLguYTguKHguYjguKHguLXguYHguK3guJvguJfguLXguYjguJ7guKPg
uYnguK3guKHguYPguIrguYnguIfguLLguJkiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IuC5
geC4reC4m+C4l+C4teC5iOC4leC4tOC4lOC4leC4seC5ieC4h+C5hOC4p+C5iSDguYPguIrguYkg
QU5HTEUg4LmE4Lih4LmI4LmE4LiU4LmJ4LmA4Lil4LiiIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXRsL3N0cmluZ3MueG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFmMGU5NWMzZGQyN2I5ZDc3ZTdmZWU4MWY5OWY2MzI5YTA0OTMyYjUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10bC9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmln
aHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAg
ICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisK
KyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291
cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2Fu
ZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVu
dDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3
NzgxOTc0NzEyNjYzODI1Ij4iTWdhIEthZ3VzdHVoYW4gc2EgQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjEx
NDc5NzA2NzU0NSI+IkJhZ3VoaW4gYW5nIG1nYSBzZXR0aW5nIG5nIEFOR0xFIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9IjM4NTEzOTc2MTcx
ODMzNjAwMjYiPiJQYW5na2FsYWhhdGFuIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idXNl
X2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJHYW1pdGlu
IGFuZyBBTkdMRSBwYXJhIHNhIGxhaGF0IG5nIGFwcCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5h
bWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAw
NzU0Ij4iSXBha2l0YSBhbmcgZGlhbG9nIGJveCBrYXBhZyBuYS1sb2FkIGFuZyBBTkdMRSI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dp
ZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IlBpbGlpbiBhbmcgT3BlbkdMIERyaXZlciI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5
NSI+ImFuZ2xlLCBvcGVuZ2wsIGdyYXBoaWNzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4i
R2luYWdhbWl0IGFuZyBBTkdMRSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNf
aW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1MTgzNDU0MTQxOTg5MDYwMyI+IldhbGFuZyBhdmFp
bGFibGUgbmEgYXBwIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxs
ZWRfc3VtbWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJXYWxhbmcgbmFrYS1pbnN0
YWxsIG5hIGFwcCBuYSBwdXdlZGVuZyBndW1hbWl0IG5nIEFOR0xFIjwvc3RyaW5nPgorPC9yZXNv
dXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXRyL3N0cmlu
Z3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBjNjUyNjIwZDJhMWUzNjM1MDlmMWRjZWI3YWFkZTA4OGNkNTRl
NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9p
ZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy10ci9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMw
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBD
b3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
CisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAg
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKwor
PHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsv
cmVzL2FuZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpk
b2N1bWVudDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lk
PSI2Mjc3NzgxOTc0NzEyNjYzODI1Ij4iQU5HTEUgVGVyY2lobGVyaSI8L3N0cmluZz4KKyAgICA8
c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiIG1zZ2lkPSIyMDcyMDYyMTE0
Nzk3MDY3NTQ1Ij4iQU5HTEUgYXlhcmxhcsSxbsSxIGRlxJ9pxZ90aXJpbiI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIzODUxMzk3NjE3MTgz
MzYwMDI2Ij4iR2VuZWwiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9y
X2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+IkFOR0xFXCfEsSB0w7xtIHV5
Z3VsYW1hbGFyIGnDp2luIGt1bGxhbiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5H
TEUgecO8a2xlbmRpxJ9pbmRlIGlsZXRpxZ9pbSBrdXR1c3VudSBnw7ZzdGVyIjwvc3RyaW5nPgor
ICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0
MjIwNzQxMTM5Mzg2MzA0Ij4iT3BlbkdMIFPDvHLDvGPDvHPDvG7DvCBzZcOnaW4iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUi
PiJhbmdsZSwgb3BlbmdsLCBncmFmaWsiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmds
ZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiJBTkdM
RVwnxLEgS3VsbGFubWEiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJLdWxsYW7EsWxhYmlsZWNl
ayB1eWd1bGFtYSB5b2siPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3Rh
bGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xFIGt1bGxhbmFi
aWxlbiBoacOnYmlyIHV5Z3VsYW1hIHnDvGtsZW5tZWRpIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXVrL3N0cmluZ3MueG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZhYjBjZGFmMzU5N2E2ZmU2YTIzZDQzNDFkYzZkZTU4NmExMGY1ZmMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0
ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy11ay9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDMwIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLSAKKyAgICBDb3B5cmln
aHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAg
ICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhl
IExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisK
KyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAg
VW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5n
LCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPHJlc291
cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2Fu
ZHJvaWQiCisgICAgeG1sbnM6eGxpZmY9InVybjpvYXNpczpuYW1lczp0Yzp4bGlmZjpkb2N1bWVu
dDoxLjIiPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXMiIG1zZ2lkPSI2Mjc3
NzgxOTc0NzEyNjYzODI1Ij4i0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPIEFOR0xFIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIw
NzIwNjIxMTQ3OTcwNjc1NDUiPiLQl9C80ZbQvdC40YLQuCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC9
0Y8gQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxl
IiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+ItCX0LDQs9Cw0LvRjNC90ZYiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3
ODA0NDA0MTIzOTY5NCI+ItCS0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCBBTkdMRSDQtNC7
0Y8g0LLRgdGW0YUg0LTQvtC00LDRgtC60ZbQsiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9
InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0
Ij4i0J/QvtC60LDQt9GD0LLQsNGC0Lgg0LTRltCw0LvQvtCz0L7QstC1INCy0ZbQutC90L4sINC6
0L7Qu9C4INC30LDQstCw0L3RgtCw0LbRg9GU0YLRjNGB0Y8gQU5HTEUiPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3
NDExMzkzODYzMDQiPiLQktC40LHQtdGA0ZbRgtGMINC00YDQsNC50LLQtdGAIE9wZW5HTCI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2
MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsINCz0YDQsNGE0ZbQutCwIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYx
OTc5NTU4Ij4i0JLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8gQU5HTEUiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4
MzQ1NDE0MTk4OTA2MDMiPiLQndC10LzQsNGUINC00L7RgdGC0YPQv9C90LjRhSDQtNC+0LTQsNGC
0LrRltCyIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3Vt
bWFyeSIgbXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiLQndC1INCy0YHRgtCw0L3QvtCy0LvQ
tdC90L4g0LTQvtC00LDRgtC60ZbQsiwg0Y/QutGWINC80L7QttGD0YLRjCDQstC40LrQvtGA0LjR
gdGC0L7QstGD0LLQsNGC0LggQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9y
ZXMvdmFsdWVzLXVyL3N0cmluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdXIvc3RyaW5ncy54bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2FlNTU1MWZhYzE4ZTAxNDBhNDQ0ZTMyOGM5OGM5YzU5NzU2OTRjOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5n
cy9yZXMvdmFsdWVzLXVyL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBB
cGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkg
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4K
KyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVx
dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl
CisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBB
TlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAg
bGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5z
OmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAg
ICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2
NjM4MjUiPiJBTkdMRSDaqduMINiq2LHYrNuM2K3Yp9iqIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1
NDUiPiJBTkdMRSDaqduMINiq2LHYqtuM2KjYp9iqINmF24zauiDYqtix2YXbjNmFINqp2LHbjNq6
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfZ2VuZXJhbF90aXRsZSIgbXNnaWQ9
IjM4NTEzOTc2MTcxODMzNjAwMjYiPiLYudin2YUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJ1c2VfYW5nbGVfZm9yX2FsbF9hcHBzIiBtc2dpZD0iMjU2MjY3ODA0NDA0MTIzOTY5NCI+Itiz
2KjavtuMINin24zZvtizINqp25Ig2YTbjNuSIEFOR0xFINin2LPYqti52YXYp9mEINqp2LHbjNq6
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2Jv
eCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiJBTkdMRSDZhNmI2ogg24HZiCDYrNin2Ybb
kiDZvtixINqI2KfYptmE2KfaryDYqNin2qnYsyDYr9qp2r7Yp9im24zauiI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIy
MDc0MTEzOTM4NjMwNCI+Ik9wZW5HTCDaiNix2KfYptuM2YjYsSDZhdmG2KrYrtioINqp2LHbjNq6
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4iYW5nbGXigI/YjCBvcGVuZ2zYjCDar9ix2KfZgdqp2LMiPC9zdHJpbmc+Cisg
ICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0
MzQxOTc4NjE5Nzk1NTgiPiJBTkdMRSDYstuM2LEg2KfYs9iq2LnZhdin2YQg24HbkiI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3RpdGxlIiBtc2dpZD0iMTY1
MTgzNDU0MTQxOTg5MDYwMyI+Itqp2YjYptuMINin24zZviDYr9iz2KrbjNin2Kgg2YbbgduM2rog
24HbkiI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1h
cnkiIG1zZ2lkPSIxOTIyODI5NTIyNjkyNDk3NTk2Ij4i2KfbjNiz24wg2qnZiNim24wg2KfbjNm+
INin2YbYs9m52KfZhCDZhtuB24zauiDaqduMINqv2KbbjCDbgduSINis2YggQU5HTEUg2qnZiCDY
p9iz2KrYudmF2KfZhCDaqdixINiz2qnbkiI8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtdXovc3RyaW5ncy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
YW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy11ei9zdHJpbmdzLnhtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzgwYjUwODBmYmJkY2JhMzQ0ZTA1Y2IxY2ZkZDRmZTc1NGQxMzEwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRp
bmdzL3Jlcy92YWx1ZXMtdXovc3RyaW5ncy54bWwKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gCisgICAgQ29weXJpZ2h0IDIwMTkg
VGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhl
IEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1h
eSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNl
LgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBo
dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBh
biAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5z
ZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAg
ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAgLS0+CisKKzxyZXNvdXJjZXMgeG1s
bnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgor
ICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4K
KyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2VzIiBtc2dpZD0iNjI3Nzc4MTk3NDcx
MjY2MzgyNSI+IkFOR0xFIHNvemxhbWFsYXJpIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
YW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJB
TkdMRSBzb3psYW1hbGFyaW5pIG/Ku3pnYXJ0aXJpc2giPC9zdHJpbmc+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IlVt
dW1peSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMi
IG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4iQmFyY2hhIGlsb3ZhbGFyIHVjaHVuIEFOR0xF
IGlzaGxhdGlzaCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNl
X2RpYWxvZ19ib3giIG1zZ2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUgeXVrbGFuZ2Fu
ZGEgbXVsb3FvdCBveW5hc2luaSBjaGlxYXJpc2giPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQi
PiJPcGVuR0wgZHJheXZlcmluaSB0YW5sYXNoIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
a2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgZ3Jh
ZmlrYSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2luX3VzZV90b2FzdF9tZXNz
YWdlIiBtc2dpZD0iMjI1OTQzNDE5Nzg2MTk3OTU1OCI+IkFOR0xFIGlzaGxhdGlsbW9xZGEiPC9z
dHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9
IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJIZWNoIHFhbmRheSBpbG92YSB0b3BpbG1hZGkiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0i
MTkyMjgyOTUyMjY5MjQ5NzU5NiI+IkFOR0xFIGlzaGxhdHV2Y2hpIGhlY2ggcWFuZGF5IGlsb3Zh
IG/Ku3JuYXRpbG1hZ2FuIjwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy12MTcvc3R5bGVzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5
c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXYxNy9zdHlsZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzZDE4
NzkwMmQxNmU4MTk5ZmM2NjJlMzFhODM1NTMxOGY5NDg5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3Zh
bHVlcy12MTcvc3R5bGVzLnhtbApAQCAtMCwwICsxLDM0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorICBDb3B5cmlnaHQgMjAxOCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVXNlIG9mIHRoaXMKKyAgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3Vu
ZCBpbiB0aGUKKyAgTElDRU5TRSBmaWxlLgorLS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9p
ZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8c3R5
bGUgbmFtZT0iUHJlZmVyZW5jZUZyYWdtZW50TGlzdFNpbmdsZVBhbmUiIHBhcmVudD0iQCphbmRy
b2lkOnN0eWxlL1ByZWZlcmVuY2VGcmFnbWVudExpc3QiPgorICAgICAgICA8aXRlbSBuYW1lPSJh
bmRyb2lkOnBhZGRpbmdTdGFydCI+QGRpbWVuL3NldHRpbmdzX3NpZGVfbWFyZ2luPC9pdGVtPgor
ICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnBhZGRpbmdFbmQiPkBkaW1lbi9zZXR0aW5nc19z
aWRlX21hcmdpbjwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRfbWFy
Z2luU3RhcnQiPjBkcDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDpsYXlvdXRf
bWFyZ2luRW5kIj4wZHA8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6c2Nyb2xs
YmFyU3R5bGUiPm91dHNpZGVPdmVybGF5PC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5
bGUgbmFtZT0iTXVsdGlTZWxlY3REaWFsb2dTdHlsZSIgcGFyZW50PSJAc3R5bGUvUHJlZmVyZW5j
ZS5NYXRlcmlhbCI+CisgICAgICAgIDxpdGVtIG5hbWU9Im5lZ2F0aXZlQnV0dG9uVGV4dCI+QGFu
ZHJvaWQ6c3RyaW5nL2NhbmNlbDwvaXRlbT4KKyAgICAgICAgPGl0ZW0gbmFtZT0icG9zaXRpdmVC
dXR0b25UZXh0Ij5AYW5kcm9pZDpzdHJpbmcvb2s8L2l0ZW0+CisgICAgPC9zdHlsZT4KKworICAg
IDxzdHlsZSBuYW1lPSJTZXR0aW5nc1ByZWZlcmVuY2VGcmFnbWVudFN0eWxlIiBwYXJlbnQ9IkBz
dHlsZS9QcmVmZXJlbmNlRnJhZ21lbnQuTWF0ZXJpYWwiPgorICAgICAgICA8aXRlbSBuYW1lPSJh
bmRyb2lkOmxheW91dCI+QGxheW91dC9wcmVmZXJlbmNlX2xpc3RfZnJhZ21lbnQ8L2l0ZW0+Cisg
ICAgPC9zdHlsZT4KKworICAgIDxzdHlsZSBuYW1lPSJQcmVmZXJlbmNlVGhlbWUiIHBhcmVudD0i
QHN0eWxlL1ByZWZlcmVuY2VUaGVtZU92ZXJsYXkudjE0Lk1hdGVyaWFsIj4KKyAgICAgIDxpdGVt
IG5hbWU9InByZWZlcmVuY2VGcmFnbWVudFN0eWxlIj5Ac3R5bGUvU2V0dGluZ3NQcmVmZXJlbmNl
RnJhZ21lbnRTdHlsZTwvaXRlbT4KKyAgICAgIDxpdGVtIG5hbWU9ImRpYWxvZ1ByZWZlcmVuY2VT
dHlsZSI+QHN0eWxlL011bHRpU2VsZWN0RGlhbG9nU3R5bGU8L2l0ZW0+CisgICAgPC9zdHlsZT4K
KworICAgIDxzdHlsZSBuYW1lPSJUaGVtZS5TZXR0aW5ncyIgcGFyZW50PSJAYW5kcm9pZDpzdHls
ZS9UaGVtZS5EZXZpY2VEZWZhdWx0LlNldHRpbmdzIiA+CisgICAgICA8aXRlbSBuYW1lPSJwcmVm
ZXJlbmNlVGhlbWUiPkBzdHlsZS9QcmVmZXJlbmNlVGhlbWU8L2l0ZW0+CisgICAgPC9zdHlsZT4K
KzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy12
aS9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Mzk5MTViMzZmNDRkMDM0OWJkNjc4MjQxNGMyMWNj
NzkxYzNjNDMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtdmkvc3RyaW5ncy54bWwKQEAgLTAs
MCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0g
CisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisg
ICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJM
aWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxp
YW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5T
RS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmlu
ZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAg
LS0+CisKKzxyZXNvdXJjZXMgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5j
b20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6
eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX3ByZWZlcmVuY2Vz
IiBtc2dpZD0iNjI3Nzc4MTk3NDcxMjY2MzgyNSI+IlTDuXkgY2jhu41uIEFOR0xFIjwvc3RyaW5n
PgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9IjIw
NzIwNjIxMTQ3OTcwNjc1NDUiPiJT4butYSDEkeG7lWkgdMO5eSBjaOG7jW4gY8OgaSDEkeG6t3Qg
QU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBt
c2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IkNodW5nIjwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQi
PiJT4butIGThu6VuZyBBTkdMRSBjaG8gdOG6pXQgY+G6oyDhu6luZyBk4bulbmciPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJzaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IiBtc2dpZD0i
MzQ0MzI1MDQzNDAyNjAwMDc1NCI+Ikhp4buDbiB0aOG7iyBo4buZcCB0aG/huqFpIGtoaSBBTkdM
RSDEkcaw4bujYyB04bqjaSI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNlbGVjdF9vcGVu
Z2xfZHJpdmVyX3RpdGxlIiBtc2dpZD0iMzQ3NDIyMDc0MTEzOTM4NjMwNCI+IkNo4buNbiB0csOs
bmggxJFp4buBdSBraGnhu4NuIE9wZW5HTCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imtl
eXdvcmRzIiBtc2dpZD0iNjM4ODYzNTU0ODA2MDQ2MTM5NSI+ImFuZ2xlLCBvcGVuZ2wsIMSR4buT
IGjhu41hIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21l
c3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYxOTc5NTU4Ij4ixJBhbmcgc+G7rSBk4bulbmcgQU5H
TEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIg
bXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiJLaMO0bmcgY8OzIOG7qW5nIGThu6VuZyBuw6Bv
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSIg
bXNnaWQ9IjE5MjI4Mjk1MjI2OTI0OTc1OTYiPiJDaMawYSBjw6BpIMSR4bq3dCDhu6luZyBk4bul
bmcgbsOgbyBjw7MgdGjhu4Mgc+G7rSBk4bulbmcgQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNl
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpoLXJDTi9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpoLXJDTi9z
dHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODkxZDdkNDcwOTQ1MDQyZTM1Yjk1NGU3ZWRmNmRjZmY0
YjQ1YzQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtemgtckNOL3N0cmluZ3MueG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0t
IAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKwor
ICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhl
IExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVk
IHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJB
TlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGll
ZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5p
bmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
IC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQu
Y29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRj
OnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNl
cyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDlgY/lpb3orr7nva4iPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0i
MjA3MjA2MjExNDc5NzA2NzU0NSI+IuS/ruaUuSBBTkdMRSDorr7nva4iPC9zdHJpbmc+CisgICAg
PHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2
MDAyNiI+IuS4gOiIrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3Jf
YWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i6ZKI5a+55omA5pyJ5bqU55So
5L2/55SoIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19hbmdsZV9pbl91
c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLliqDovb0gQU5HTEUg
5ZCO5pi+56S65a+56K+d5qGGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29w
ZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i6YCJ5oupIE9w
ZW5HTCDpqbHliqjnqIvluo8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIg
bXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDlm77lvaIiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9
IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLkvb/nlKggQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2
MDMiPiLmsqHmnInlj6/nlKjnmoTlupTnlKgiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IuaC
qOayoeacieWuieijheWPr+S7peS9v+eUqCBBTkdMRSDnmoTlupTnlKgiPC9zdHJpbmc+Cis8L3Jl
c291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpoLXJISy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpo
LXJISy9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWI4YWYyMzA3MzExZGE3YmZlNzM0Y2E1M2E4
ZTAxZGUxN2VmNzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtemgtckhLL3N0cmluZ3MueG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2pl
Y3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGlu
IGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2Vz
L0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3Ig
YWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl
IExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VU
IFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3Ig
aW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBn
b3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFu
ZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5h
bWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVm
ZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJBTkdMRSDlgY/lpb3oqK3lrpoi
PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBt
c2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+IuS/ruaUuSBBTkdMRSDoqK3lrpoiPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9nZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYx
NzE4MzM2MDAyNiI+IuS4gOiIrCI8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmds
ZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYyNjc4MDQ0MDQxMjM5Njk0Ij4i6K6T5omA5pyJ5oeJ
55So56iL5byP5L2/55SoIEFOR0xFIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2hvd19h
bmdsZV9pbl91c2VfZGlhbG9nX2JveCIgbXNnaWQ9IjM0NDMyNTA0MzQwMjYwMDA3NTQiPiLovInl
haUgQU5HTEUg5b6M6aGv56S65bCN6Kmx5qGGIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0i
c2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i
6YG45Y+WIE9wZW5HTCDpqYXli5XnqIvlvI8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJr
ZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDlnJbl
g48iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2Fn
ZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5Nzk1NTgiPiLmraPlnKjkvb/nlKggQU5HTEUiPC9zdHJp
bmc+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2
NTE4MzQ1NDE0MTk4OTA2MDMiPiLmspLmnInlj6/nlKjnmoTmh4nnlKjnqIvlvI8iPC9zdHJpbmc+
CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTky
MjgyOTUyMjY5MjQ5NzU5NiI+IuaykuacieWuieijneS7u+S9leWPr+S7peS9v+eUqCBBTkdMRSDn
moTmh4nnlKjnqIvlvI8iPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVz
LXpoLXJUVy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXpoLXJUVy9zdHJpbmdzLnhtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZDNkMGNlMjlkZTgxNmExNzMyMzFkM2M2YzJmOGNhYjYzMTdhNzU3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdz
L3Jlcy92YWx1ZXMtemgtclRXL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAorICAgIENvcHlyaWdodCAyMDE5
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
ICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0tPgorCis8cmVzb3VyY2VzIHht
bG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIK
KyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhsaWZmOmRvY3VtZW50OjEuMiI+
CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIgbXNnaWQ9IjYyNzc3ODE5NzQ3
MTI2NjM4MjUiPiJBTkdMRSDlgY/lpb3oqK3lrpoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1l
PSJhbmdsZV9wcmVmZXJlbmNlc19zdW1tYXJ5IiBtc2dpZD0iMjA3MjA2MjExNDc5NzA2NzU0NSI+
IuS/ruaUuSBBTkdMRSDoqK3lrpoiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9n
ZW5lcmFsX3RpdGxlIiBtc2dpZD0iMzg1MTM5NzYxNzE4MzM2MDAyNiI+IuS4gOiIrCI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InVzZV9hbmdsZV9mb3JfYWxsX2FwcHMiIG1zZ2lkPSIyNTYy
Njc4MDQ0MDQxMjM5Njk0Ij4i5bCHIEFOR0xFIOeUqOaWvOaJgOacieaHieeUqOeoi+W8jyI8L3N0
cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1z
Z2lkPSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQU5HTEUg6LyJ5YWl5b6M6aGv56S65bCN6Kmx5pa5
5aGKIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ic2VsZWN0X29wZW5nbF9kcml2ZXJfdGl0
bGUiIG1zZ2lkPSIzNDc0MjIwNzQxMTM5Mzg2MzA0Ij4i6YG45Y+WIE9wZW5HTCDpqYXli5XnqIvl
vI8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJrZXl3b3JkcyIgbXNnaWQ9IjYzODg2MzU1
NDgwNjA0NjEzOTUiPiJhbmdsZSwgb3BlbmdsLCDlnJblvaIiPC9zdHJpbmc+CisgICAgPHN0cmlu
ZyBuYW1lPSJhbmdsZV9pbl91c2VfdG9hc3RfbWVzc2FnZSIgbXNnaWQ9IjIyNTk0MzQxOTc4NjE5
Nzk1NTgiPiLmraPlnKjkvb/nlKggQU5HTEUiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJu
b19hcHBzX2luc3RhbGxlZF90aXRsZSIgbXNnaWQ9IjE2NTE4MzQ1NDE0MTk4OTA2MDMiPiLmspLm
nInlj6/nlKjnmoTmh4nnlKjnqIvlvI8iPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJub19h
cHBzX2luc3RhbGxlZF9zdW1tYXJ5IiBtc2dpZD0iMTkyMjgyOTUyMjY5MjQ5NzU5NiI+IuS9oOay
kuacieWuieijneWPr+S7peS9v+eUqCBBTkdMRSDnmoTmh4nnlKjnqIvlvI8iPC9zdHJpbmc+Cis8
L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMtenUv
c3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE0MDA5NTIwZDJmNzQ0Mzg3YjU1ZDA1NGUzODJiNGY1
MTI5NmY4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzLXp1L3N0cmluZ3MueG1sCkBAIC0wLDAg
KzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIAor
ICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAg
IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExp
Y2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0Ut
Mi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug
aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
KyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcg
cGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgIC0t
PgorCis8cmVzb3VyY2VzIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29t
L2Fway9yZXMvYW5kcm9pZCIKKyAgICB4bWxuczp4bGlmZj0idXJuOm9hc2lzOm5hbWVzOnRjOnhs
aWZmOmRvY3VtZW50OjEuMiI+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9wcmVmZXJlbmNlcyIg
bXNnaWQ9IjYyNzc3ODE5NzQ3MTI2NjM4MjUiPiJJemludGFuZG9rYXppIHplLUFOR0xFIjwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iYW5nbGVfcHJlZmVyZW5jZXNfc3VtbWFyeSIgbXNnaWQ9
IjIwNzIwNjIxMTQ3OTcwNjc1NDUiPiJTaGludHNoYSBpemlsdW5naXNlbGVsbyB6ZS1BTkdMRSI8
L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiIG1zZ2lkPSIz
ODUxMzk3NjE3MTgzMzYwMDI2Ij4iT2t1dmFtaWxlIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIgbXNnaWQ9IjI1NjI2NzgwNDQwNDEyMzk2OTQiPiJT
ZWJlbnppc2EgaS1BTkdMRSBrdXpvIHpvbmtlIGl6aW5obGVsbyB6b2t1c2ViZW56YSI8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InNob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giIG1zZ2lk
PSIzNDQzMjUwNDM0MDI2MDAwNzU0Ij4iQm9uaXNhIGliaG9raXNpIHVtYSBpLUFOR0xFIGlsYXlp
c2hpd2UiPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJzZWxlY3Rfb3BlbmdsX2RyaXZlcl90
aXRsZSIgbXNnaWQ9IjM0NzQyMjA3NDExMzkzODYzMDQiPiJLaGV0aGEgaS1PcGVuR0wgRHJpdmVy
Ijwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ia2V5d29yZHMiIG1zZ2lkPSI2Mzg4NjM1NTQ4
MDYwNDYxMzk1Ij4iYW5nbGUsIG9wZW5nbCwgaXppdGhvbWJlIjwvc3RyaW5nPgorICAgIDxzdHJp
bmcgbmFtZT0iYW5nbGVfaW5fdXNlX3RvYXN0X21lc3NhZ2UiIG1zZ2lkPSIyMjU5NDM0MTk3ODYx
OTc5NTU4Ij4iVWt1c2ViZW56aXNhIGktRU5HRUxJIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFt
ZT0ibm9fYXBwc19pbnN0YWxsZWRfdGl0bGUiIG1zZ2lkPSIxNjUxODM0NTQxNDE5ODkwNjAzIj4i
QXppa2hvIGl6aW5obGVsbyB6b2t1c2ViZW56YSBleml0aG9sYWthbGF5byI8L3N0cmluZz4KKyAg
ICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5zdGFsbGVkX3N1bW1hcnkiIG1zZ2lkPSIxOTIyODI5
NTIyNjkyNDk3NTk2Ij4iQXppa2hvIGl6aW5obGVsbyB6b2t1c2ViZW56YSBlemlmYWtpd2UgZXpp
bmdhc2ViZW56aXNhIGktQU5HTEUiPC9zdHJpbmc+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMv
dmFsdWVzL2RpbWVucy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NzAyNmIw
ODU3NDE1YmRlYTE2MzcxNDFiZGJhM2MyZWZiOTcwOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy9kaW1lbnMueG1sCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rp
bmc9InV0Zi04Ij8+Cis8IS0tCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBW
ZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0
YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5v
cmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmlidXRl
ZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAor
ICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1bmRl
ciB0aGUgTGljZW5zZS4KKyAtLT4KKworPHJlc291cmNlcz4KKyAgICA8ZGltZW4gbmFtZT0ic2V0
dGluZ3Nfc2lkZV9tYXJnaW4iPjBkaXA8L2RpbWVuPgorPC9yZXNvdXJjZXM+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZHJpdmVycy54bWwgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9k
cml2ZXJzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjhmMzYxMTdmMmJiYmZhY2I2MDEzNzhiMWJlOGU2MmI1
ZjkxZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Fu
ZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZHJpdmVycy54bWwKQEAgLTAsMCArMSwy
OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgICBD
b3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNl
bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2Ui
KTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdp
dGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAor
CisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRp
c3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9S
IENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAg
U2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1p
c3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorCis8
cmVzb3VyY2VzPgorCis8c3RyaW5nIG5hbWU9ImRlZmF1bHRfZHJpdmVyIj5kZWZhdWx0PC9zdHJp
bmc+CisKKzxzdHJpbmctYXJyYXkgbmFtZT0iZHJpdmVyX3ZhbHVlcyI+CisgICAgPGl0ZW0+QHN0
cmluZy9kZWZhdWx0X2RyaXZlcjwvaXRlbT4KKyAgICA8aXRlbT5hbmdsZTwvaXRlbT4KKyAgICA8
aXRlbT5uYXRpdmU8L2l0ZW0+Cis8L3N0cmluZy1hcnJheT4KKworPC9yZXNvdXJjZXM+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGlu
Z3MvcmVzL3ZhbHVlcy9nbG9iYWxfc2V0dGluZ3MueG1sIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZ2xvYmFsX3NldHRpbmdz
LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kYTcxNmFjNThlNTk2YmUyZDU2N2U3MDcyZjcwYmQ3MGRmNWMyODA5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRf
c3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvZ2xvYmFsX3NldHRpbmdzLnhtbApAQCAtMCwwICsx
LDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorICAg
IENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ug
d2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4w
CisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGlu
IHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMg
T1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAg
ICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+CisK
KzxyZXNvdXJjZXM+CisgICAgPHN0cmluZyBuYW1lPSJnbG9iYWxfc2V0dGluZ3NfZHJpdmVyX2Fs
bF9hbmdsZSI+YW5nbGVfZ2xfZHJpdmVyX2FsbF9hbmdsZTwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0iZ2xvYmFsX3NldHRpbmdzX3Nob3dfYW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giPnNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3g8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imdsb2Jh
bF9zZXR0aW5nc19kcml2ZXJfc2VsZWN0aW9uX3BrZ3MiPmFuZ2xlX2dsX2RyaXZlcl9zZWxlY3Rp
b25fcGtnczwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX3NldHRpbmdzX2RyaXZl
cl9zZWxlY3Rpb25fdmFsdWVzIj5hbmdsZV9nbF9kcml2ZXJfc2VsZWN0aW9uX3ZhbHVlczwvc3Ry
aW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZ2xvYmFsX3NldHRpbmdzX2FuZ2xlX2RlYnVnX3BhY2th
Z2UiPmFuZ2xlX2RlYnVnX3BhY2thZ2U8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Imdsb2Jh
bF9zZXR0aW5nc19hbmdsZV93aGl0ZWxpc3QiPmFuZ2xlX3doaXRlbGlzdDwvc3RyaW5nPgorPC9y
ZXNvdXJjZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMv
aW50ZW50cy54bWwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1f
c2V0dGluZ3MvcmVzL3ZhbHVlcy9pbnRlbnRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzJmYjMxYmE3Mzg0
Y2ZiMWUyZTg2M2JiMWE0MjlkOTNlMzVmNzE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1ZXMvaW50
ZW50cy54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
dXRmLTgiPz4KKzwhLS0KKyAgICBDb3B5cmlnaHQgMjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJj
ZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9s
aWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUg
bGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVu
ZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAg
V0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHBy
ZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRo
ZSBMaWNlbnNlLgorIC0tPgorCis8cmVzb3VyY2VzPgorICAgIDxzdHJpbmcgbmFtZT0iaW50ZW50
X2FuZ2xlX2Zvcl9hbmRyb2lkX3RvYXN0X21lc3NhZ2UiPmFuZHJvaWQuYXBwLmFjdGlvbi5BTkdM
RV9GT1JfQU5EUk9JRF9UT0FTVF9NRVNTQUdFPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJp
bnRlbnRfa2V5X2E0YV90b2FzdF9tZXNzYWdlIj5BNEEgVG9hc3QgTWVzc2FnZTwvc3RyaW5nPgor
PC9yZXNvdXJjZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Jlcy92YWx1
ZXMvcHJlZmVyZW5jZV9rZXlzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRy
b2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMvdmFsdWVzL3ByZWZlcmVuY2Vfa2V5cy54bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjg0NGFlZGE0NzZiNzkwOGU2MDdjNjNjYzcwNDlhMTQ5OWU4YTg5ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0
aW5ncy9yZXMvdmFsdWVzL3ByZWZlcmVuY2Vfa2V5cy54bWwKQEAgLTAsMCArMSwyNCBAQAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKyAgICBDb3B5cmlnaHQg
MjAxOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICBMaWNlbnNlZCB1bmRl
ciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICB5
b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuCisgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAg
ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5s
ZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBz
b2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElP
TlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorCis8cmVzb3VyY2Vz
PgorICAgIDxzdHJpbmcgbmFtZT0icHJlZl9rZXlfYW5nbGVfZmxhZ3NfY2F0ZWdvcnkiPmFuZ2xl
X2ZsYWdzX2NhdGVnb3J5PC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwcmVmX2tleV9hbGxf
YW5nbGUiPmFsbF9wa2dzX3VzZV9hbmdsZTwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0icHJl
Zl9rZXlfYW5nbGVfaW5fdXNlX2RpYWxvZyI+YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3g8L3N0cmlu
Zz4KKyAgICA8c3RyaW5nIG5hbWU9InByZWZfa2V5X3NlbGVjdF9vcGVuZ2xfZHJpdmVyX2NhdGVn
b3J5Ij5zZWxlY3Rfb3BlbmdsX2RyaXZlcl9jYXRlZ29yeTwvc3RyaW5nPgorICAgIDxzdHJpbmcg
bmFtZT0icHJlZl9rZXlfaW5zdGFsbGVkX3BrZ3MiPmluc3RhbGxlZF9wa2dzPC9zdHJpbmc+Cis8
L3Jlc291cmNlcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVl
cy9zdHJpbmdzLnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwZmQ1ODYwNDJm
YWU3MzkxZjk0ZDI2ZDA5OGVlZjkwZWYyODZlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3ZhbHVlcy9z
dHJpbmdzLnhtbApAQCAtMCwwICsxLDU2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgorPCEtLQorICAgIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVy
c2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFp
biBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAg
ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4
cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBs
YW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCisgLS0+CisKKzxyZXNvdXJjZXM+CisgICAgPCEtLSBUaGlzIGlzIHRoZSB1
c2VyIHZpc2libGUgbmFtZSBvZiB0aGUgYXBwIGFuZCB0aXRsZS4gLS0+CisgICAgPHN0cmluZyBu
YW1lPSJhbmdsZV9wcmVmZXJlbmNlcyI+QU5HTEUgUHJlZmVyZW5jZXM8L3N0cmluZz4KKworICAg
IDwhLS0gVGhpcyBzdHJpbmcgaXMgYSBkZXNjcmlwdGlvbiBvZiB3aGF0ICJBTkdMRSBQcmVmZXJl
bmNlcyIgaXMuCisgICAgSXQgaXMgdXNlZCBhcyBhIHN1YnRpdGxlIG9yIHN1bW1hcnkgdGV4dCB0
byBkZXNjcmliZSB0aGlzIEFOR0xFIGFwcC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9w
cmVmZXJlbmNlc19zdW1tYXJ5Ij5Nb2RpZnkgQU5HTEUgc2V0dGluZ3M8L3N0cmluZz4KKworICAg
IDwhLS0gQ2F0ZWdvcnkgdGl0bGUgbGlzdGluZyBBTkdMRSBmbGFncyBbQ0hBUl9MSU1JVD01MF0t
LT4KKyAgICA8c3RyaW5nIG5hbWU9ImFuZ2xlX2dlbmVyYWxfdGl0bGUiPkdlbmVyYWw8L3N0cmlu
Zz4KKworICAgIDwhLS0gVGhpcyBpcyB0aGUgbGFiZWwgZm9yIGEgdG9nZ2xlIGJ1dHRvbi4KKyAg
ICBXaGVuIHRoZSB0b2dnbGUgaXMgZW5hYmxlZCwgd2Ugd2lsbCB1c2UgQU5HTEUgZm9yIGFsbCBQ
S0dzLCByZWdhcmRsZXNzIG9mIGFueSBvdGhlciBzZXR0aW5ncy4KKyAgICBUaGlzIGlzIGFsc28g
dXNlZCBhcyBhIFF1aWNrIFNldHRpbmdzIHRpbGUgbGFiZWwuIC0tPgorICAgIDxzdHJpbmcgbmFt
ZT0idXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyI+VXNlIEFOR0xFIGZvciBhbGwgYXBwczwvc3RyaW5n
PgorCisgICAgPCEtLSBUaGlzIGlzIHRoZSBsYWJlbCBmb3IgYSB0b2dnbGUgYnV0dG9uLgorICAg
IFdoZW4gdGhlIHRvZ2dsZSBpcyBlbmFibGVkLCB3ZSB3aWxsIHNob3cgYSBkaWFsb2cgYm94IGlu
ZGljYXRpbmcgdGhhdCBBTkdMRSBpcyBpbiB1c2UuCisgICAgVGhpcyBpcyBhbHNvIHVzZWQgYXMg
YSBRdWljayBTZXR0aW5ncyB0aWxlIGxhYmVsLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InNob3df
YW5nbGVfaW5fdXNlX2RpYWxvZ19ib3giPlNob3cgZGlhbG9nIGJveCB3aGVuIEFOR0xFIGlzIGxv
YWRlZDwvc3RyaW5nPgorCisgICAgPCEtLSBMaXN0UHJlZmVyZW5jZSB0aXRsZSBsaXN0aW5nIGlu
c3RhbGxlZCBwYWNrYWdlcyBbQ0hBUl9MSU1JVD01MF0tLT4KKyAgICA8c3RyaW5nIG5hbWU9InNl
bGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIj5TZWxlY3QgT3BlbkdMIERyaXZlcjwvc3RyaW5nPgor
CisgICAgPCEtLSBUaGVzZSBhcmUga2V5d29yZHMgdGhhdCB0aGUgdXNlciBjYW4gdXNlIHRvIHNl
YXJjaCBmb3IgdGhpcyBhcHAuCisgICAgJ2FuZ2xlJyBzaG91bGQgbm90IGJlIHRyYW5zbGF0ZWQs
IGFzIGl0IGlzIGFuIGFwcCBuYW1lLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImtleXdvcmRzIj5h
bmdsZSwgb3BlbmdsLCBncmFwaGljczwvc3RyaW5nPgorCisgICAgPCEtLSBUaGlzIGlzIHRoZSBt
ZXNzYWdlIGRpc3BsYXllZCBpbiB0aGUgVG9hc3QgdG8gdGhlIHVzZXIgd2hlbiBBTkdMRSBpcyBi
ZWluZyB1c2VkIGZvciB0aGUgYXBwLgorICAgICdBTkdMRScgc2hvdWxkIG5vdCBiZSB0cmFuc2xh
dGVkLCBhcyBpdCBpcyBhbiBhcHAgbmFtZS4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJhbmdsZV9p
bl91c2VfdG9hc3RfbWVzc2FnZSI+VXNpbmcgQU5HTEU8L3N0cmluZz4KKworICAgIDwhLS0gVGhp
cyBpcyB0aGUgdGl0bGUgZGlzcGxheWVkIHdoZW4gbm8gYXBwcyBhcmUgaW5zdGFsbGVkIHRoYXQg
QU5HTEUgY2FuIGJlIHVzZWQgZm9yLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9Im5vX2FwcHNfaW5z
dGFsbGVkX3RpdGxlIj5ObyBhdmFpbGFibGUgYXBwczwvc3RyaW5nPgorCisgICAgPCEtLSBUaGlz
IGlzIHRoZSBzdW1tYXJ5IGRpc3BsYXllZCB3aGVuIG5vIGFwcHMgYXJlIGluc3RhbGxlZCB0aGF0
IEFOR0xFIGNhbiBiZSB1c2VkIGZvci4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJub19hcHBzX2lu
c3RhbGxlZF9zdW1tYXJ5Ij5ObyBhcHBzIGluc3RhbGxlZCB0aGF0IGNhbiB1c2UgQU5HTEU8L3N0
cmluZz4KKworPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3MvcmVzL3htbC9tYWluLnhtbCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9yZXMveG1sL21haW4u
eG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYwMjI2MjRmODZmNjE2YWUwNzBjZDdmODI0YjAzMDg3MmIzMjRjMDUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3MvcmVzL3htbC9tYWluLnhtbApAQCAtMCwwICsxLDQ4IEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorICAgIENvcHlyaWdodCAyMDE5
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRo
ZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBt
YXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAg
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3Mg
cmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3
YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24g
YW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vu
c2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisg
ICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+CisKKzxhbmRyb2lkeC5wcmVm
ZXJlbmNlLlByZWZlcmVuY2VTY3JlZW4KKyAgICB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1h
cy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorCisgICAgPFByZWZlcmVuY2VDYXRlZ29y
eQorICAgICAgICBhbmRyb2lkOmtleT0iQHN0cmluZy9wcmVmX2tleV9hbmdsZV9mbGFnc19jYXRl
Z29yeSIKKyAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9hbmdsZV9nZW5lcmFsX3RpdGxl
Ij4KKworICAgICAgICA8IS0tVE9ETyA6IElzc3VlIDI5ODkgOiBib3VsZGVyLWdyYXBoaWNzLXRl
YW1AZ29vZ2xlLmNvbQorICAgICAgICBFbmFibGUgdGhlIHN3aXRjaCBvbmNlIEFuZHJvaWQgY2Fu
IGJvb3Qgd2l0aCBBTkdMRSBlbmFibGVkIGZvciBldmVyeXRoaW5nLS0+CisgICAgICAgIDxhbmRy
b2lkeC5wcmVmZXJlbmNlLlN3aXRjaFByZWZlcmVuY2UKKyAgICAgICAgICAgIGFuZHJvaWQ6a2V5
PSJAc3RyaW5nL3ByZWZfa2V5X2FsbF9hbmdsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGl0bGU9
IkBzdHJpbmcvdXNlX2FuZ2xlX2Zvcl9hbGxfYXBwcyIKKyAgICAgICAgICAgIGFuZHJvaWQ6c3Vt
bWFyeT0iQHN0cmluZy9nbG9iYWxfc2V0dGluZ3NfZHJpdmVyX2FsbF9hbmdsZSIKKyAgICAgICAg
ICAgIGFuZHJvaWQ6ZGVmYXVsdFZhbHVlPSJmYWxzZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZW5h
YmxlZD0iZmFsc2UiLz4KKworICAgICAgICA8YW5kcm9pZHgucHJlZmVyZW5jZS5Td2l0Y2hQcmVm
ZXJlbmNlCisgICAgICAgICAgICBhbmRyb2lkOmtleT0iQHN0cmluZy9wcmVmX2tleV9hbmdsZV9p
bl91c2VfZGlhbG9nIgorICAgICAgICAgICAgYW5kcm9pZDp0aXRsZT0iQHN0cmluZy9zaG93X2Fu
Z2xlX2luX3VzZV9kaWFsb2dfYm94IgorICAgICAgICAgICAgYW5kcm9pZDpzdW1tYXJ5PSJAc3Ry
aW5nL2dsb2JhbF9zZXR0aW5nc19zaG93X2FuZ2xlX2luX3VzZV9kaWFsb2dfYm94IgorICAgICAg
ICAgICAgYW5kcm9pZDpkZWZhdWx0VmFsdWU9ImZhbHNlIgorICAgICAgICAgICAgYW5kcm9pZDpl
bmFibGVkPSJ0cnVlIi8+CisgICAgPC9QcmVmZXJlbmNlQ2F0ZWdvcnk+CisKKyAgICA8UHJlZmVy
ZW5jZUNhdGVnb3J5CisgICAgICAgIGFuZHJvaWQ6a2V5PSJAc3RyaW5nL3ByZWZfa2V5X3NlbGVj
dF9vcGVuZ2xfZHJpdmVyX2NhdGVnb3J5IgorICAgICAgICBhbmRyb2lkOnRpdGxlPSJAc3RyaW5n
L3NlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlIj4KKworICAgIDwvUHJlZmVyZW5jZUNhdGVnb3J5
PgorCis8L2FuZHJvaWR4LnByZWZlcmVuY2UuUHJlZmVyZW5jZVNjcmVlbj4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMv
Y29tL2FuZHJvaWQvYW5nbGUvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUv
QW5kcm9pZE1hbmlmZXN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWJmYTBjZjAyMDRlZTcxY2JjYjEzYzQx
Y2JhZTJiOTkyNDU3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9BbmRy
b2lkTWFuaWZlc3QueG1sCkBAIC0wLDAgKzEsOTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgICAgQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNl
LCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lT
LAorICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNp
ZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKyAtLT4KKworPG1hbmlmZXN0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6
Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICAgICAgICBhbmRyb2lk
OnZlcnNpb25Db2RlPSIxMDAiCisgICAgICAgICAgYW5kcm9pZDp2ZXJzaW9uTmFtZT0iMTAwIgor
ICAgICAgICAgIHBhY2thZ2U9ImNvbS5hbmRyb2lkLmFuZ2xlIj4KKworICAgIDx1c2VzLXBlcm1p
c3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfU0VDVVJFX1NFVFRJ
TkdTIiAvPgorICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1p
c3Npb24uUkVDRUlWRV9CT09UX0NPTVBMRVRFRCIgLz4KKyAgICA8dXNlcy1wZXJtaXNzaW9uIGFu
ZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlFVRVJZX0FMTF9QQUNLQUdFUyIgLz4KKwor
ICAgIDx1c2VzLXNkayBhbmRyb2lkOm1pblNka1ZlcnNpb249IjI2IgorICAgICAgICAgICAgICBh
bmRyb2lkOnRhcmdldFNka1ZlcnNpb249IjI4Ij4KKyAgICA8L3VzZXMtc2RrPgorCisgICAgPGFw
cGxpY2F0aW9uIGFuZHJvaWQ6bGFiZWw9IkFuZHJvaWQgU3lzdGVtIEFuZ2xlIgorICAgICAgICAg
ICAgICAgICBhbmRyb2lkOmljb249IkBkcmF3YWJsZS9pY29uIgorICAgICAgICAgICAgICAgICBh
bmRyb2lkOmV4dHJhY3ROYXRpdmVMaWJzPSJmYWxzZSIKKyAgICAgICAgICAgICAgICAgYW5kcm9p
ZDptdWx0aUFyY2g9InRydWUiPgorCisgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9ImNv
bS5hbmRyb2lkLmFuZ2xlLk1haW5BY3Rpdml0eSIKKyAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6
bGFiZWw9IkBzdHJpbmcvYW5nbGVfcHJlZmVyZW5jZXMiCisgICAgICAgICAgICAgICAgICBhbmRy
b2lkOmRlc2NyaXB0aW9uPSJAc3RyaW5nL2FuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkiCisgICAg
ICAgICAgICAgICAgICBhbmRyb2lkOnRoZW1lPSJAc3R5bGUvVGhlbWUuU2V0dGluZ3MiCisgICAg
ICAgICAgICAgICAgICBhbmRyb2lkOnZpc2libGVUb0luc3RhbnRBcHBzPSJ0cnVlIgorICAgICAg
ICAgICAgICAgICAgYW5kcm9pZDpsYXVuY2hNb2RlPSJzaW5nbGVUYXNrIj4KKyAgICAgICAgICAg
IDxpbnRlbnQtZmlsdGVyPgorICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJh
bmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiIvPgorICAgICAgICAgICAgICAgIDxjYXRlZ29yeSBh
bmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmNhdGVnb3J5LklORk8iLz4KKyAgICAgICAgICAg
IDwvaW50ZW50LWZpbHRlcj4KKworICAgICAgICAgICAgPCEtLSBJbmRpY2F0ZSB0aGF0IHRoaXMg
UEtHIGlzIEFOR0xFLiAtLT4KKyAgICAgICAgICAgIDxpbnRlbnQtZmlsdGVyIGFuZHJvaWQ6cHJp
b3JpdHk9IjEiPgorICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lk
LmFwcC5hY3Rpb24uQU5HTEVfRk9SX0FORFJPSUQiIC8+CisgICAgICAgICAgICAgICAgPGNhdGVn
b3J5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuREVGQVVMVCIgLz4KKyAg
ICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KKworICAgICAgICAgICAgPGludGVudC1maWx0ZXI+
CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuc2VydmljZS5x
dWlja3NldHRpbmdzLmFjdGlvbi5RU19USUxFX1BSRUZFUkVOQ0VTIiAvPgorICAgICAgICAgICAg
PC9pbnRlbnQtZmlsdGVyPgorCisgICAgICAgICAgICA8IS0tIE1hcmsgdGhpcyBmcmFnbWVudCBh
cyBhIGR5bmFtaWMgc2V0dGluZyBpbiB0aGUgZGV2ZWxvcG1lbnQgY2F0ZWdvcnkuIC0tPgorICAg
ICAgICAgICAgPGludGVudC1maWx0ZXI+CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lk
Om5hbWU9ImNvbS5hbmRyb2lkLnNldHRpbmdzLmFjdGlvbi5JQV9TRVRUSU5HUyIgLz4KKyAgICAg
ICAgICAgIDwvaW50ZW50LWZpbHRlcj4KKyAgICAgICAgICAgIDxtZXRhLWRhdGEgYW5kcm9pZDpu
YW1lPSJjb20uYW5kcm9pZC5zZXR0aW5ncy5jYXRlZ29yeSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgYW5kcm9pZDp2YWx1ZT0iY29tLmFuZHJvaWQuc2V0dGluZ3MuY2F0ZWdvcnkuaWEuZGV2ZWxv
cG1lbnQiIC8+CisgICAgICAgICAgICA8bWV0YS1kYXRhIGFuZHJvaWQ6bmFtZT0iY29tLmFuZHJv
aWQuc2V0dGluZ3Muc3VtbWFyeSIgYW5kcm9pZDpyZXNvdXJjZT0iQHN0cmluZy9hbmdsZV9wcmVm
ZXJlbmNlc19zdW1tYXJ5IiAvPgorICAgICAgICAgICAgPG1ldGEtZGF0YSBhbmRyb2lkOm5hbWU9
ImNvbS5hbmRyb2lkLnNldHRpbmdzLm9yZGVyIiBhbmRyb2lkOnZhbHVlPSIyMCIgLz4KKyAgICAg
ICAgICAgIDxtZXRhLWRhdGEgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5zZXR0aW5ncy5wcm9m
aWxlIiBhbmRyb2lkOnZhbHVlPSJwcmltYXJ5X3Byb2ZpbGVfb25seSIgLz4KKyAgICAgICAgICAg
IDxtZXRhLWRhdGEgYW5kcm9pZDpuYW1lPSJpbnN0YW50YXBwcy5jbGllbnRzLmFsbG93ZWQiIGFu
ZHJvaWQ6dmFsdWU9InRydWUiIC8+CisgICAgICAgIDwvYWN0aXZpdHk+CisKKyAgICAgICAgPHJl
Y2VpdmVyIGFuZHJvaWQ6bmFtZT0iY29tLmFuZHJvaWQuYW5nbGUuY29tbW9uLlJlY2VpdmVyIgor
ICAgICAgICAgICAgICAgICAgYW5kcm9pZDpkaXJlY3RCb290QXdhcmU9InRydWUiPgorICAgICAg
ICAgICAgPGludGVudC1maWx0ZXI+CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5h
bWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5CT09UX0NPTVBMRVRFRCIgLz4KKyAgICAgICAgICAg
ICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1ZX1BBQ0tB
R0VfUkVQTEFDRUQiIC8+CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFu
ZHJvaWQuYXBwLmFjdGlvbi5BTkdMRV9GT1JfQU5EUk9JRF9UT0FTVF9NRVNTQUdFIiAvPgorICAg
ICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgorICAgICAgICA8L3JlY2VpdmVyPgorCisgICAgICAg
IDxwcm92aWRlcgorICAgICAgICAgICAgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5hbmdsZS5j
b21tb24uU2VhcmNoUHJvdmlkZXIiCisgICAgICAgICAgICBhbmRyb2lkOmF1dGhvcml0aWVzPSJj
b20uYW5kcm9pZC5hbmdsZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bXVsdGlwcm9jZXNzPSJmYWxz
ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3JhbnRVcmlQZXJtaXNzaW9ucz0idHJ1ZSIKKyAgICAg
ICAgICAgIGFuZHJvaWQ6cGVybWlzc2lvbj0iYW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfU0VBUkNI
X0lOREVYQUJMRVMiCisgICAgICAgICAgICBhbmRyb2lkOmV4cG9ydGVkPSJ0cnVlIj4KKyAgICAg
ICAgICAgIDxpbnRlbnQtZmlsdGVyPgorICAgICAgICAgICAgICAgIDxhY3Rpb24gYW5kcm9pZDpu
YW1lPSJhbmRyb2lkLmNvbnRlbnQuYWN0aW9uLlNFQVJDSF9JTkRFWEFCTEVTX1BST1ZJREVSIiAv
PgorICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgorICAgICAgICA8L3Byb3ZpZGVyPgorICAg
IDwvYXBwbGljYXRpb24+Cis8L21hbmlmZXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmds
ZS9NYWluQWN0aXZpdHkuamF2YSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lk
X3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvTWFpbkFjdGl2aXR5LmphdmEK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjBkMjJkZGZjN2EzYmFjMGJjYTJiYWM3NzBhMWViY2IzYjdiN2QyMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvTWFpbkFjdGl2aXR5LmphdmEKQEAgLTAs
MCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNl
IFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNp
b24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhj
ZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEg
Y29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3Jn
L2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2Fi
bGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAq
IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhw
cmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFu
Z3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhl
IExpY2Vuc2UuCisgKi8KK3BhY2thZ2UgY29tLmFuZHJvaWQuYW5nbGU7CisKK2ltcG9ydCBhbmRy
b2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKKworaW1wb3J0IGNv
bS5hbmRyb2lkLmFuZ2xlLmNvbW1vbi4qOworCitwdWJsaWMgY2xhc3MgTWFpbkFjdGl2aXR5IGV4
dGVuZHMgQWN0aXZpdHkKK3sKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBUQUcgPSB0aGlzLmdl
dENsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpOworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVk
IHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkKKyAgICB7CisgICAgICAg
IHN1cGVyLm9uQ3JlYXRlKHNhdmVkSW5zdGFuY2VTdGF0ZSk7CisgICAgICAgIHNldENvbnRlbnRW
aWV3KFIubGF5b3V0LmZyYWdtZW50KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lk
L2FuZ2xlL2NvbW1vbi9HbG9iYWxTZXR0aW5ncy5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9jb21t
b24vR2xvYmFsU2V0dGluZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDE3OTc1Y2Q2NzdjNDY3YTZhODE0
OTM5OGRlNmI1ZWYxNjNlYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9j
b21tb24vR2xvYmFsU2V0dGluZ3MuamF2YQpAQCAtMCwwICsxLDMwMiBAQAorLyoKKyAqIENvcHly
aWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
KyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAor
ICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisg
KgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ug
Y29tLmFuZHJvaWQuYW5nbGUuY29tbW9uOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRl
bnRSZXNvbHZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRy
b2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm87CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0
aW5nczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5
TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0Owor
CitjbGFzcyBHbG9iYWxTZXR0aW5ncworeworCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFH
ID0gdGhpcy5nZXRDbGFzcygpLmdldFNpbXBsZU5hbWUoKTsKKworICAgIHByaXZhdGUgQ29udGV4
dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIExpc3Q8UGFja2FnZUluZm8+IG1JbnN0YWxsZWRQa2dz
ICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBt
R2xvYmFsU2V0dGluZ3NEcml2ZXJQa2dzICAgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICBwcml2
YXRlIExpc3Q8U3RyaW5nPiBtR2xvYmFsU2V0dGluZ3NEcml2ZXJWYWx1ZXMgPSBuZXcgQXJyYXlM
aXN0PD4oKTsKKworICAgIEdsb2JhbFNldHRpbmdzKENvbnRleHQgY29udGV4dCwgTGlzdDxQYWNr
YWdlSW5mbz4gaW5zdGFsbGVkUGtncykKKyAgICB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4
dDsKKworICAgICAgICBzZXRJbnN0YWxsZWRQa2dzKGluc3RhbGxlZFBrZ3MpOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyQWxsR2xvYmFsU2V0dGluZ3MoQ29udGV4dCBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgLy8gYW5nbGVfZ2xfZHJpdmVyX2FsbF9hbmdsZQorICAgICAgICB1cGRh
dGVBbGxVc2VBbmdsZShjb250ZXh0LCBmYWxzZSk7CisgICAgICAgIC8vIHNob3dfYW5nbGVfaW5f
dXNlX2RpYWxvZ19ib3gKKyAgICAgICAgdXBkYXRlU2hvd0FuZ2xlSW5Vc2VEaWFsb2coY29udGV4
dCwgZmFsc2UpOworICAgICAgICAvLyBhbmdsZV9nbF9kcml2ZXJfc2VsZWN0aW9uX3BrZ3MsIGFu
Z2xlX2dsX2RyaXZlcl9zZWxlY3Rpb25fdmFsdWVzCisgICAgICAgIENvbnRlbnRSZXNvbHZlciBj
b250ZW50UmVzb2x2ZXIgPSBjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICBT
ZXR0aW5ncy5HbG9iYWwucHV0U3RyaW5nKGNvbnRlbnRSZXNvbHZlciwKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5nbG9iYWxfc2V0dGluZ3NfZHJpdmVyX3NlbGVj
dGlvbl9wa2dzKSwgIlwiXCIiKTsKKyAgICAgICAgU2V0dGluZ3MuR2xvYmFsLnB1dFN0cmluZyhj
b250ZW50UmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJp
bmcuZ2xvYmFsX3NldHRpbmdzX2RyaXZlcl9zZWxlY3Rpb25fdmFsdWVzKSwgIlwiXCIiKTsKKwor
ICAgICAgICAvLyBGb3IgY29tcGxldGVuZXNzLCB3ZSdsbCBjbGVhciB0aGUgYW5nbGVfZGVidWdf
cGFja2FnZSwgYnV0IHdlIGRvbid0IGFsbG93IHNldHRpbmcKKyAgICAgICAgLy8gaXQgdmlhIHRo
ZSBBUEsgKGN1cnJlbnRseSkKKyAgICAgICAgU2V0dGluZ3MuR2xvYmFsLnB1dFN0cmluZyhjb250
ZW50UmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcu
Z2xvYmFsX3NldHRpbmdzX2FuZ2xlX2RlYnVnX3BhY2thZ2UpLCAiIik7CisKKyAgICAgICAgLy8g
U2tpcCBhbmdsZV93aGl0ZWxpc3Q7IG5vdCB1cGRhdGFibGUgdmlhIERldmVsb3BlciBPcHRpb25z
CisgICAgfQorCisgICAgQm9vbGVhbiBnZXRBbGxVc2VBbmdsZSgpCisgICAgeworICAgICAgICBD
b250ZW50UmVzb2x2ZXIgY29udGVudFJlc29sdmVyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29s
dmVyKCk7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgYWxsVXNlQW5n
bGUgPSBTZXR0aW5ncy5HbG9iYWwuZ2V0SW50KAorICAgICAgICAgICAgICAgICAgICBjb250ZW50
UmVzb2x2ZXIsIG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5nbG9iYWxfc2V0dGluZ3NfZHJp
dmVyX2FsbF9hbmdsZSkpOworICAgICAgICAgICAgcmV0dXJuIChhbGxVc2VBbmdsZSA9PSAxKTsK
KyAgICAgICAgfQorICAgICAgICBjYXRjaCAoU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0
aW9uIGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEJvb2xlYW4gZ2V0U2hvd0FuZ2xlSW5Vc2VEaWFsb2dCb3goKQorICAgIHsK
KyAgICAgICAgQ29udGVudFJlc29sdmVyIGNvbnRlbnRSZXNvbHZlciA9IG1Db250ZXh0LmdldENv
bnRlbnRSZXNvbHZlcigpOworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgaW50
IHNob3dBbmdsZUluVXNlRGlhbG9nQm94ID0gU2V0dGluZ3MuR2xvYmFsLmdldEludChjb250ZW50
UmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmlu
Zy5nbG9iYWxfc2V0dGluZ3Nfc2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCkpOworICAgICAg
ICAgICAgcmV0dXJuIChzaG93QW5nbGVJblVzZURpYWxvZ0JveCA9PSAxKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXRjaCAoU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZUFsbFVzZUFuZ2xlKENvbnRleHQgY29udGV4dCwgQm9vbGVhbiBh
bGxVc2VBbmdsZSkKKyAgICB7CisgICAgICAgIENvbnRlbnRSZXNvbHZlciBjb250ZW50UmVzb2x2
ZXIgPSBjb250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICBTZXR0aW5ncy5HbG9i
YWwucHV0SW50KGNvbnRlbnRSZXNvbHZlciwKKyAgICAgICAgICAgICAgICBjb250ZXh0LmdldFN0
cmluZyhSLnN0cmluZy5nbG9iYWxfc2V0dGluZ3NfZHJpdmVyX2FsbF9hbmdsZSksIGFsbFVzZUFu
Z2xlID8gMSA6IDApOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNob3dBbmdsZUlu
VXNlRGlhbG9nKENvbnRleHQgY29udGV4dCwgQm9vbGVhbiBzaG93QW5nbGVJblVzZURpYWxvZykK
KyAgICB7CisgICAgICAgIENvbnRlbnRSZXNvbHZlciBjb250ZW50UmVzb2x2ZXIgPSBjb250ZXh0
LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICBTZXR0aW5ncy5HbG9iYWwucHV0SW50KGNv
bnRlbnRSZXNvbHZlciwKKyAgICAgICAgICAgICAgICBjb250ZXh0LmdldFN0cmluZyhSLnN0cmlu
Zy5nbG9iYWxfc2V0dGluZ3Nfc2hvd19hbmdsZV9pbl91c2VfZGlhbG9nX2JveCksCisgICAgICAg
ICAgICAgICAgc2hvd0FuZ2xlSW5Vc2VEaWFsb2cgPyAxIDogMCk7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgdXBkYXRlQW5nbGVXaGl0ZWxpc3QoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgcGFj
a2FnZU5hbWVzKQorICAgIHsKKyAgICAgICAgQ29udGVudFJlc29sdmVyIGNvbnRlbnRSZXNvbHZl
ciA9IGNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisgICAgICAgIFNldHRpbmdzLkdsb2Jh
bC5wdXRTdHJpbmcoY29udGVudFJlc29sdmVyLAorICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0
U3RyaW5nKFIuc3RyaW5nLmdsb2JhbF9zZXR0aW5nc19hbmdsZV93aGl0ZWxpc3QpLCBwYWNrYWdl
TmFtZXMpOworICAgIH0KKworICAgIHZvaWQgdXBkYXRlUGtnKFN0cmluZyBwa2dOYW1lLCBTdHJp
bmcgZHJpdmVyKQorICAgIHsKKyAgICAgICAgaW50IHBrZ0luZGV4ID0gZ2V0R2xvYmFsU2V0dGlu
Z3NQa2dJbmRleChwa2dOYW1lKTsKKworICAgICAgICBpZiAoIWlzVmFsaWREaXZlclZhbHVlKGRy
aXZlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgIkF0dGVtcHRpbmcgdG8g
dXBkYXRlIGEgUEtHIHdpdGggYW4gaW52YWxpZCBkcml2ZXI6ICciICsgZHJpdmVyICsgIiciKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBkZWZhdWx0
RHJpdmVyID0gbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmRlZmF1bHRfZHJpdmVyKTsKKyAg
ICAgICAgaWYgKGRyaXZlci5lcXVhbHMoZGVmYXVsdERyaXZlcikpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChwa2dJbmRleCA+PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIFdlIG9ubHkgc3RvcmUgZ2xvYmFsIHNldHRpbmdzIGZvciBkcml2ZXIgdmFsdWVzIG90aGVy
IHRoYW4gdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICBtR2xvYmFsU2V0dGluZ3NEcml2ZXJQ
a2dzLnJlbW92ZShwa2dJbmRleCk7CisgICAgICAgICAgICAgICAgbUdsb2JhbFNldHRpbmdzRHJp
dmVyVmFsdWVzLnJlbW92ZShwa2dJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocGtnSW5kZXggPj0gMCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtR2xvYmFsU2V0dGluZ3NEcml2ZXJWYWx1ZXMu
c2V0KHBrZ0luZGV4LCBkcml2ZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1HbG9iYWxTZXR0aW5nc0RyaXZlclBrZ3Mu
YWRkKHBrZ05hbWUpOworICAgICAgICAgICAgICAgIG1HbG9iYWxTZXR0aW5nc0RyaXZlclZhbHVl
cy5hZGQoZHJpdmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdyaXRl
R2xvYmFsU2V0dGluZ3MoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZ2V0RHJpdmVyRm9yUGtnKFN0
cmluZyBwa2dOYW1lKQorICAgIHsKKyAgICAgICAgaW50IHBrZ0luZGV4ID0gZ2V0R2xvYmFsU2V0
dGluZ3NQa2dJbmRleChwa2dOYW1lKTsKKworICAgICAgICBpZiAocGtnSW5kZXggPj0gMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1HbG9iYWxTZXR0aW5nc0RyaXZlclZhbHVlcy5n
ZXQocGtnSW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQor
CisgICAgdm9pZCBzZXRJbnN0YWxsZWRQa2dzKExpc3Q8UGFja2FnZUluZm8+IGluc3RhbGxlZFBr
Z3MpCisgICAgeworICAgICAgICBtSW5zdGFsbGVkUGtncyA9IGluc3RhbGxlZFBrZ3M7CisKKyAg
ICAgICAgdXBkYXRlR2xvYmFsU2V0dGluZ3MoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQg
dXBkYXRlR2xvYmFsU2V0dGluZ3MoKQorICAgIHsKKyAgICAgICAgcmVhZEdsb2JhbFNldHRpbmdz
KCk7CisKKyAgICAgICAgdmFsaWRhdGVHbG9iYWxTZXR0aW5ncygpOworCisgICAgICAgIHdyaXRl
R2xvYmFsU2V0dGluZ3MoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVhZEdsb2JhbFNl
dHRpbmdzKCkKKyAgICB7CisgICAgICAgIG1HbG9iYWxTZXR0aW5nc0RyaXZlclBrZ3MgPSBnZXRH
bG9iYWxTZXR0aW5nc1N0cmluZygKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmco
Ui5zdHJpbmcuZ2xvYmFsX3NldHRpbmdzX2RyaXZlcl9zZWxlY3Rpb25fcGtncykpOworICAgICAg
ICBtR2xvYmFsU2V0dGluZ3NEcml2ZXJWYWx1ZXMgPSBnZXRHbG9iYWxTZXR0aW5nc1N0cmluZygK
KyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX3NldHRp
bmdzX2RyaXZlcl9zZWxlY3Rpb25fdmFsdWVzKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBMaXN0
PFN0cmluZz4gZ2V0R2xvYmFsU2V0dGluZ3NTdHJpbmcoU3RyaW5nIGdsb2JhbFNldHRpbmcpCisg
ICAgeworICAgICAgICBMaXN0PFN0cmluZz4gdmFsdWVMaXN0OworICAgICAgICBDb250ZW50UmVz
b2x2ZXIgY29udGVudFJlc29sdmVyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7Cisg
ICAgICAgIFN0cmluZyBzZXR0aW5nc1ZhbHVlICAgICAgICAgICAgPSBTZXR0aW5ncy5HbG9iYWwu
Z2V0U3RyaW5nKGNvbnRlbnRSZXNvbHZlciwgZ2xvYmFsU2V0dGluZyk7CisKKyAgICAgICAgaWYg
KHNldHRpbmdzVmFsdWUgIT0gbnVsbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFsdWVMaXN0
ID0gbmV3IEFycmF5TGlzdDw+KEFycmF5cy5hc0xpc3Qoc2V0dGluZ3NWYWx1ZS5zcGxpdCgiLCIp
KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB2YWx1
ZUxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2
YWx1ZUxpc3Q7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlR2xvYmFsU2V0dGluZ3Mo
KQorICAgIHsKKyAgICAgICAgU3RyaW5nIGRyaXZlclBrZ3MgICA9IFN0cmluZy5qb2luKCIsIiwg
bUdsb2JhbFNldHRpbmdzRHJpdmVyUGtncyk7CisgICAgICAgIFN0cmluZyBkcml2ZXJWYWx1ZXMg
PSBTdHJpbmcuam9pbigiLCIsIG1HbG9iYWxTZXR0aW5nc0RyaXZlclZhbHVlcyk7CisKKyAgICAg
ICAgQ29udGVudFJlc29sdmVyIGNvbnRlbnRSZXNvbHZlciA9IG1Db250ZXh0LmdldENvbnRlbnRS
ZXNvbHZlcigpOworICAgICAgICBTZXR0aW5ncy5HbG9iYWwucHV0U3RyaW5nKGNvbnRlbnRSZXNv
bHZlciwKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFs
X3NldHRpbmdzX2RyaXZlcl9zZWxlY3Rpb25fcGtncyksIGRyaXZlclBrZ3MpOworICAgICAgICBT
ZXR0aW5ncy5HbG9iYWwucHV0U3RyaW5nKGNvbnRlbnRSZXNvbHZlciwKKyAgICAgICAgICAgICAg
ICBtQ29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX3NldHRpbmdzX2RyaXZlcl9zZWxl
Y3Rpb25fdmFsdWVzKSwgZHJpdmVyVmFsdWVzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQg
dmFsaWRhdGVHbG9iYWxTZXR0aW5ncygpCisgICAgeworICAgICAgICAvLyBWZXJpZnkgbGVuZ3Ro
cworICAgICAgICBpZiAobUdsb2JhbFNldHRpbmdzRHJpdmVyUGtncy5zaXplKCkgIT0gbUdsb2Jh
bFNldHRpbmdzRHJpdmVyVmFsdWVzLnNpemUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
VGhlIGxlbmd0aHMgZG9uJ3QgbWF0Y2gsIHNvIGNsZWFyIHRoZSB2YWx1ZXMgb3V0IGFuZCByZWJ1
aWxkIGxhdGVyLgorICAgICAgICAgICAgbUdsb2JhbFNldHRpbmdzRHJpdmVyUGtncy5jbGVhcigp
OworICAgICAgICAgICAgbUdsb2JhbFNldHRpbmdzRHJpdmVyVmFsdWVzLmNsZWFyKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgZGVmYXVsdERyaXZl
ciA9IG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5kZWZhdWx0X2RyaXZlcik7CisgICAgICAg
IC8vIFVzZSBhIHRlbXAgbGlzdCwgc2luY2Ugd2UncmUgcG90ZW50aWFsbHkgbW9kaWZ5aW5nIHRo
ZSBvcmlnaW5hbCBsaXN0LgorICAgICAgICBMaXN0PFN0cmluZz4gZ2xvYmFsU2V0dGluZ3NEcml2
ZXJQa2dzID0gbmV3IEFycmF5TGlzdDw+KG1HbG9iYWxTZXR0aW5nc0RyaXZlclBrZ3MpOworICAg
ICAgICBmb3IgKFN0cmluZyBwa2dOYW1lIDogZ2xvYmFsU2V0dGluZ3NEcml2ZXJQa2dzKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBSZW1vdmUgYW55IHVuaW5zdGFsbGVkIHBhY2thZ2VzLgor
ICAgICAgICAgICAgaWYgKCFpc1BrZ0luc3RhbGxlZChwa2dOYW1lKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZW1vdmVQa2dGcm9tR2xvYmFsU2V0dGluZ3MocGtnTmFtZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBSZW1vdmUgYW55IHBhY2thZ2VzIHdpdGggaW52
YWxpZCBkcml2ZXIgdmFsdWVzCisgICAgICAgICAgICBlbHNlIGlmICghaXNWYWxpZERpdmVyVmFs
dWUoZ2V0RHJpdmVyRm9yUGtnKHBrZ05hbWUpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZW1vdmVQa2dGcm9tR2xvYmFsU2V0dGluZ3MocGtnTmFtZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAvLyBSZW1vdmUgYW55IHBhY2thZ2VzIHdpdGggdGhlICdkZWZhdWx0JyBk
cml2ZXIgc2VsZWN0ZWQKKyAgICAgICAgICAgIGVsc2UgaWYgKGRlZmF1bHREcml2ZXIuZXF1YWxz
KGdldERyaXZlckZvclBrZyhwa2dOYW1lKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmVtb3ZlUGtnRnJvbUdsb2JhbFNldHRpbmdzKHBrZ05hbWUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlbW92ZVBrZ0Zyb21HbG9iYWxT
ZXR0aW5ncyhTdHJpbmcgcGtnTmFtZSkKKyAgICB7CisgICAgICAgIGludCBwa2dJbmRleCA9IGdl
dEdsb2JhbFNldHRpbmdzUGtnSW5kZXgocGtnTmFtZSk7CisKKyAgICAgICAgbUdsb2JhbFNldHRp
bmdzRHJpdmVyUGtncy5yZW1vdmUocGtnSW5kZXgpOworICAgICAgICBtR2xvYmFsU2V0dGluZ3NE
cml2ZXJWYWx1ZXMucmVtb3ZlKHBrZ0luZGV4KTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCBn
ZXRHbG9iYWxTZXR0aW5nc1BrZ0luZGV4KFN0cmluZyBwa2dOYW1lKQorICAgIHsKKyAgICAgICAg
Zm9yIChpbnQgcGtnSW5kZXggPSAwOyBwa2dJbmRleCA8IG1HbG9iYWxTZXR0aW5nc0RyaXZlclBr
Z3Muc2l6ZSgpOyBwa2dJbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUdsb2Jh
bFNldHRpbmdzRHJpdmVyUGtncy5nZXQocGtnSW5kZXgpLmVxdWFscyhwa2dOYW1lKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGtnSW5kZXg7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcHJpdmF0ZSBC
b29sZWFuIGlzUGtnSW5zdGFsbGVkKFN0cmluZyBwa2dOYW1lKQorICAgIHsKKyAgICAgICAgZm9y
IChQYWNrYWdlSW5mbyBwa2cgOiBtSW5zdGFsbGVkUGtncykKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHBrZy5wYWNrYWdlTmFtZS5lcXVhbHMocGtnTmFtZSkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBCb29sZWFuIGlzVmFs
aWREaXZlclZhbHVlKFN0cmluZyBkcml2ZXJWYWx1ZSkKKyAgICB7CisgICAgICAgIENoYXJTZXF1
ZW5jZVtdIGRyaXZlcnMgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRTdHJpbmdBcnJheShS
LmFycmF5LmRyaXZlcl92YWx1ZXMpOworCisgICAgICAgIGZvciAoQ2hhclNlcXVlbmNlIGRyaXZl
ciA6IGRyaXZlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChkcml2ZXJWYWx1ZS5lcXVh
bHMoZHJpdmVyLnRvU3RyaW5nKCkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmRyb2lkX3N5c3RlbV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL01haW5G
cmFnbWVudC5qYXZhIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVt
X3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmdsZS9jb21tb24vTWFpbkZyYWdtZW50LmphdmEK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDYwYWNiNTk0NzU2Yjg1NTc4NmVmOTU3MjZlYWExMDgzY2ZlNzRkNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmRyb2lkX3N5c3Rl
bV9zZXR0aW5ncy9zcmMvY29tL2FuZHJvaWQvYW5nbGUvY29tbW9uL01haW5GcmFnbWVudC5qYXZh
CkBAIC0wLDAgKzEsMzQyIEBACisvKgorICogQ29weXJpZ2h0IDIwMTkgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBjb20uYW5kcm9pZC5hbmdsZS5jb21tb247
CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQu
Y29udGVudC5TaGFyZWRQcmVmZXJlbmNlczsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2hhcmVk
UHJlZmVyZW5jZXMuT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXI7CitpbXBvcnQgYW5k
cm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQu
cG0uUGFja2FnZUluZm87CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9p
ZC5vcy5Qcm9jZXNzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZHgu
cHJlZmVyZW5jZS5MaXN0UHJlZmVyZW5jZTsKK2ltcG9ydCBhbmRyb2lkeC5wcmVmZXJlbmNlLlBy
ZWZlcmVuY2U7CitpbXBvcnQgYW5kcm9pZHgucHJlZmVyZW5jZS5QcmVmZXJlbmNlQ2F0ZWdvcnk7
CitpbXBvcnQgYW5kcm9pZHgucHJlZmVyZW5jZS5QcmVmZXJlbmNlRnJhZ21lbnQ7CitpbXBvcnQg
YW5kcm9pZHgucHJlZmVyZW5jZS5QcmVmZXJlbmNlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkeC5w
cmVmZXJlbmNlLlN3aXRjaFByZWZlcmVuY2U7CisKK2ltcG9ydCBqYXZhLnRleHQuQ29sbGF0b3I7
CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlv
bnM7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7
CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworcHVibGljIGNsYXNzIE1haW5GcmFnbWVudCBleHRl
bmRzIFByZWZlcmVuY2VGcmFnbWVudCBpbXBsZW1lbnRzIE9uU2hhcmVkUHJlZmVyZW5jZUNoYW5n
ZUxpc3RlbmVyCit7CisKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBUQUcgPSB0aGlzLmdldENs
YXNzKCkuZ2V0U2ltcGxlTmFtZSgpOworCisgICAgcHJpdmF0ZSBTaGFyZWRQcmVmZXJlbmNlcyBt
UHJlZnM7CisgICAgcHJpdmF0ZSBHbG9iYWxTZXR0aW5ncyBtR2xvYmFsU2V0dGluZ3M7CisgICAg
cHJpdmF0ZSBSZWNlaXZlciBtUmVmcmVzaFJlY2VpdmVyID0gbmV3IFJlY2VpdmVyKCk7CisgICAg
cHJpdmF0ZSBTd2l0Y2hQcmVmZXJlbmNlIG1BbGxBbmdsZVN3aXRjaFByZWY7CisgICAgcHJpdmF0
ZSBTd2l0Y2hQcmVmZXJlbmNlIG1TaG93QW5nbGVJblVzZURpYWxvZ1N3aXRjaFByZWY7CisgICAg
cHJpdmF0ZSBMaXN0PFBhY2thZ2VJbmZvPiBtSW5zdGFsbGVkUGtncyAgICAgID0gbmV3IEFycmF5
TGlzdDw+KCk7CisgICAgcHJpdmF0ZSBMaXN0PExpc3RQcmVmZXJlbmNlPiBtRHJpdmVyTGlzdFBy
ZWZzID0gbmV3IEFycmF5TGlzdDw+KCk7CisKKyAgICBTaGFyZWRQcmVmZXJlbmNlcy5PblNoYXJl
ZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lciA9CisgICAgICAgICAgICBuZXcgU2hh
cmVkUHJlZmVyZW5jZXMuT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIoKSB7CisgICAg
ICAgICAgICAgICAgcHVibGljIHZvaWQgb25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlZChTaGFyZWRQ
cmVmZXJlbmNlcyBwcmVmcywgU3RyaW5nIGtleSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8geWV0CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfTsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uQ3JlYXRlKEJ1
bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUpCisgICAgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShz
YXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIGdldEluc3RhbGxlZFBrZ3NMaXN0KCk7CisK
KyAgICAgICAgbVByZWZzID0gUHJlZmVyZW5jZU1hbmFnZXIuZ2V0RGVmYXVsdFNoYXJlZFByZWZl
cmVuY2VzKAorICAgICAgICAgICAgICAgIGdldEFjdGl2aXR5KCkuZ2V0QXBwbGljYXRpb25Db250
ZXh0KCkpOworICAgICAgICB2YWxpZGF0ZVByZWZlcmVuY2VzKCk7CisKKyAgICAgICAgbUdsb2Jh
bFNldHRpbmdzID0gbmV3IEdsb2JhbFNldHRpbmdzKGdldENvbnRleHQoKSwgbUluc3RhbGxlZFBr
Z3MpOworICAgICAgICBtZXJnZUdsb2JhbFNldHRpbmdzKCk7CisKKyAgICAgICAgY3JlYXRlQWxs
VXNlQW5nbGVQcmVmZXJlbmNlKCk7CisgICAgICAgIGNyZWF0ZVNob3dBbmdsZUluVXNlRGlhbG9n
UHJlZmVyZW5jZSgpOworCisgICAgICAgIHVwZGF0ZVByZWZlcmVuY2VzRnJvbUdsb2JhbFNldHRp
bmdzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUo
KQorICAgIHsKKyAgICAgICAgc3VwZXIub25SZXN1bWUoKTsKKworICAgICAgICB1cGRhdGVQcmVm
ZXJlbmNlc0Zyb21HbG9iYWxTZXR0aW5ncygpOworCisgICAgICAgIGdldEFjdGl2aXR5KCkucmVn
aXN0ZXJSZWNlaXZlcihtUmVmcmVzaFJlY2VpdmVyLAorICAgICAgICAgICAgICAgIG5ldyBJbnRl
bnRGaWx0ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuZ2V0U3RyaW5n
KFIuc3RyaW5nLmludGVudF9hbmdsZV9mb3JfYW5kcm9pZF90b2FzdF9tZXNzYWdlKSkpOworICAg
ICAgICBnZXRQcmVmZXJlbmNlU2NyZWVuKCkuZ2V0U2hhcmVkUHJlZmVyZW5jZXMoKS5yZWdpc3Rl
ck9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyKAorICAgICAgICAgICAgICAgIGxpc3Rl
bmVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkK
KyAgICB7CisgICAgICAgIGdldEFjdGl2aXR5KCkudW5yZWdpc3RlclJlY2VpdmVyKG1SZWZyZXNo
UmVjZWl2ZXIpOworICAgICAgICBnZXRQcmVmZXJlbmNlU2NyZWVuKCkuZ2V0U2hhcmVkUHJlZmVy
ZW5jZXMoKS51bnJlZ2lzdGVyT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIoCisgICAg
ICAgICAgICAgICAgbGlzdGVuZXIpOworCisgICAgICAgIHN1cGVyLm9uUGF1c2UoKTsKKyAgICB9
CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZVByZWZlcmVuY2VzKEJ1
bmRsZSBzYXZlZEluc3RhbmNlU3RhdGUsIFN0cmluZyByb290S2V5KQorICAgIHsKKyAgICAgICAg
YWRkUHJlZmVyZW5jZXNGcm9tUmVzb3VyY2UoUi54bWwubWFpbik7CisgICAgfQorCisgICAgQE92
ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlZChTaGFyZWRQ
cmVmZXJlbmNlcyBzaGFyZWRQcmVmZXJlbmNlcywgU3RyaW5nIGtleSkKKyAgICB7CisgICAgICAg
IExvZy52KFRBRywgIlNoYXJlZCBwcmVmZXJlbmNlIGNoYW5nZWQ6IGtleSA9ICciICsga2V5ICsg
IiciKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNGcm9tR2xv
YmFsU2V0dGluZ3MoKQorICAgIHsKKyAgICAgICAgbUFsbEFuZ2xlU3dpdGNoUHJlZi5zZXRDaGVj
a2VkKG1HbG9iYWxTZXR0aW5ncy5nZXRBbGxVc2VBbmdsZSgpKTsKKyAgICAgICAgbVNob3dBbmds
ZUluVXNlRGlhbG9nU3dpdGNoUHJlZi5zZXRDaGVja2VkKG1HbG9iYWxTZXR0aW5ncy5nZXRTaG93
QW5nbGVJblVzZURpYWxvZ0JveCgpKTsKKyAgICAgICAgY3JlYXRlSW5zdGFsbGVkQXBwc0xpc3RQ
cmVmZXJlbmNlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUFsbFVzZUFuZ2xl
UHJlZmVyZW5jZSgpCisgICAgeworICAgICAgICBTdHJpbmcgYWxsVXNlQW5nbGVLZXkgPSBnZXRD
b250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLnByZWZfa2V5X2FsbF9hbmdsZSk7CisgICAgICAg
IEJvb2xlYW4gYWxsVXNlQW5nbGUgICA9IG1QcmVmcy5nZXRCb29sZWFuKGFsbFVzZUFuZ2xlS2V5
LCBmYWxzZSk7CisgICAgICAgIG1BbGxBbmdsZVN3aXRjaFByZWYgICA9IChTd2l0Y2hQcmVmZXJl
bmNlKSBmaW5kUHJlZmVyZW5jZShhbGxVc2VBbmdsZUtleSk7CisgICAgICAgIG1BbGxBbmdsZVN3
aXRjaFByZWYuc2V0T25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcigKKyAgICAgICAgICAgICAgICBu
ZXcgUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAg
ICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gb25Q
cmVmZXJlbmNlQ2xpY2soUHJlZmVyZW5jZSBwcmVmZXJlbmNlKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWNlaXZlci51cGRhdGVBbGxVc2VBbmdsZShn
ZXRDb250ZXh0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcml2
YXRlIHZvaWQgY3JlYXRlU2hvd0FuZ2xlSW5Vc2VEaWFsb2dQcmVmZXJlbmNlKCkKKyAgICB7Cisg
ICAgICAgIFN0cmluZyBzaG93QW5nbGVJblVzZURpYWxvZ0tleSA9CisgICAgICAgICAgICAgICAg
Z2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5wcmVmX2tleV9hbmdsZV9pbl91c2VfZGlh
bG9nKTsKKyAgICAgICAgQm9vbGVhbiBzaG93QW5nbGVJblVzZURpYWxvZ0JveCA9IG1QcmVmcy5n
ZXRCb29sZWFuKHNob3dBbmdsZUluVXNlRGlhbG9nS2V5LCBmYWxzZSk7CisgICAgICAgIG1TaG93
QW5nbGVJblVzZURpYWxvZ1N3aXRjaFByZWYgPQorICAgICAgICAgICAgICAgIChTd2l0Y2hQcmVm
ZXJlbmNlKSBmaW5kUHJlZmVyZW5jZShzaG93QW5nbGVJblVzZURpYWxvZ0tleSk7CisgICAgICAg
IG1TaG93QW5nbGVJblVzZURpYWxvZ1N3aXRjaFByZWYuc2V0T25QcmVmZXJlbmNlQ2xpY2tMaXN0
ZW5lcigKKyAgICAgICAgICAgICAgICBuZXcgUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDbGlja0xp
c3RlbmVyKCkgeworICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAg
ICAgICAgcHVibGljIGJvb2xlYW4gb25QcmVmZXJlbmNlQ2xpY2soUHJlZmVyZW5jZSBwcmVmZXJl
bmNlKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWNl
aXZlci51cGRhdGVTaG93QW5nbGVJblVzZURpYWxvZ0JveChnZXRDb250ZXh0KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlSW5zdGFs
bGVkQXBwc0xpc3RQcmVmZXJlbmNlKCkKKyAgICB7CisgICAgICAgIGdldEluc3RhbGxlZFBrZ3NM
aXN0KCk7CisgICAgICAgIG1HbG9iYWxTZXR0aW5ncy5zZXRJbnN0YWxsZWRQa2dzKG1JbnN0YWxs
ZWRQa2dzKTsKKyAgICAgICAgbWVyZ2VHbG9iYWxTZXR0aW5ncygpOworCisgICAgICAgIFN0cmlu
ZyBzZWxlY3REcml2ZXJDYXRLZXkgPQorICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRT
dHJpbmcoUi5zdHJpbmcucHJlZl9rZXlfc2VsZWN0X29wZW5nbF9kcml2ZXJfY2F0ZWdvcnkpOwor
ICAgICAgICBQcmVmZXJlbmNlQ2F0ZWdvcnkgaW5zdGFsbGVkUGtnc0NhdCA9CisgICAgICAgICAg
ICAgICAgKFByZWZlcmVuY2VDYXRlZ29yeSkgZmluZFByZWZlcmVuY2Uoc2VsZWN0RHJpdmVyQ2F0
S2V5KTsKKyAgICAgICAgaW5zdGFsbGVkUGtnc0NhdC5yZW1vdmVBbGwoKTsKKyAgICAgICAgbURy
aXZlckxpc3RQcmVmcy5jbGVhcigpOworICAgICAgICBpZiAobUluc3RhbGxlZFBrZ3MuaXNFbXB0
eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBMaXN0UHJlZmVyZW5jZSBsaXN0UHJlZmVyZW5j
ZSA9IG5ldyBMaXN0UHJlZmVyZW5jZShpbnN0YWxsZWRQa2dzQ2F0LmdldENvbnRleHQoKSk7Cisg
ICAgICAgICAgICBpbml0RW1wdHlMaXN0UHJlZmVyZW5jZShsaXN0UHJlZmVyZW5jZSk7CisgICAg
ICAgICAgICBpbnN0YWxsZWRQa2dzQ2F0LmFkZFByZWZlcmVuY2UobGlzdFByZWZlcmVuY2UpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChQYWNr
YWdlSW5mbyBwYWNrYWdlSW5mbyA6IG1JbnN0YWxsZWRQa2dzKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIExpc3RQcmVmZXJlbmNlIGxpc3RQcmVmZXJlbmNlID0gbmV3IExpc3RQcmVm
ZXJlbmNlKGluc3RhbGxlZFBrZ3NDYXQuZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBp
bml0TGlzdFByZWZlcmVuY2UocGFja2FnZUluZm8sIGxpc3RQcmVmZXJlbmNlKTsKKyAgICAgICAg
ICAgICAgICBpbnN0YWxsZWRQa2dzQ2F0LmFkZFByZWZlcmVuY2UobGlzdFByZWZlcmVuY2UpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHZhbGlk
YXRlUHJlZmVyZW5jZXMoKQorICAgIHsKKyAgICAgICAgTWFwPFN0cmluZywgPz4gYWxsUHJlZnMg
PSBtUHJlZnMuZ2V0QWxsKCk7CisKKyAgICAgICAgLy8gUmVtb3ZlIFByZWZlcmVuY2UgdmFsdWVz
IGZvciBhbnkgdW5pbnN0YWxsZWQgUEtHcworICAgICAgICBmb3IgKFN0cmluZyBrZXkgOiBhbGxQ
cmVmcy5rZXlTZXQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSB1bmlu
c3RhbGxlZCBQS0dzCisgICAgICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IGdldFBh
Y2thZ2VJbmZvRm9yUGFja2FnZU5hbWUoa2V5KTsKKworICAgICAgICAgICAgaWYgKHBhY2thZ2VJ
bmZvICE9IG51bGwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVtb3ZlUGtnUHJl
ZmVyZW5jZShrZXkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJp
dmF0ZSB2b2lkIGdldEluc3RhbGxlZFBrZ3NMaXN0KCkKKyAgICB7CisgICAgICAgIExpc3Q8UGFj
a2FnZUluZm8+IHBrZ3MgPSBnZXRBY3Rpdml0eSgpLmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0SW5z
dGFsbGVkUGFja2FnZXMoMCk7CisKKyAgICAgICAgbUluc3RhbGxlZFBrZ3MuY2xlYXIoKTsKKwor
ICAgICAgICBmb3IgKFBhY2thZ2VJbmZvIHBhY2thZ2VJbmZvIDogcGtncykKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHBhY2thZ2VJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPT0gUHJvY2Vz
cy5TWVNURU1fVUlEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGFwcHMgdGhhdCBhcmUg
c3lzdGVtIGFwcHMKKyAgICAgICAgICAgIGlmICgocGFja2FnZUluZm8uYXBwbGljYXRpb25JbmZv
LmZsYWdzICYgQXBwbGljYXRpb25JbmZvLkZMQUdfU1lTVEVNKSAhPSAwKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBtSW5zdGFsbGVkUGtncy5hZGQocGFja2FnZUluZm8pOworICAgICAgICB9CisKKyAgICAgICAg
Q29sbGVjdGlvbnMuc29ydChtSW5zdGFsbGVkUGtncywgZGlzcGxheU5hbWVDb21wYXJhdG9yKTsK
KyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIENvbXBhcmF0b3I8UGFja2FnZUluZm8+IGRpc3Bs
YXlOYW1lQ29tcGFyYXRvciA9IG5ldyBDb21wYXJhdG9yPFBhY2thZ2VJbmZvPigpIHsKKyAgICAg
ICAgcHVibGljIGZpbmFsIGludCBjb21wYXJlKFBhY2thZ2VJbmZvIGEsIFBhY2thZ2VJbmZvIGIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb2xsYXRvci5jb21wYXJlKGdldEFwcE5h
bWUoYSksIGdldEFwcE5hbWUoYikpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBmaW5h
bCBDb2xsYXRvciBjb2xsYXRvciA9IENvbGxhdG9yLmdldEluc3RhbmNlKCk7CisgICAgfTsKKwor
ICAgIHByaXZhdGUgU3RyaW5nIGdldEFwcE5hbWUoUGFja2FnZUluZm8gcGFja2FnZUluZm8pCisg
ICAgeworICAgICAgICByZXR1cm4gcGFja2FnZUluZm8uYXBwbGljYXRpb25JbmZvLmxvYWRMYWJl
bChnZXRBY3Rpdml0eSgpLmdldFBhY2thZ2VNYW5hZ2VyKCkpLnRvU3RyaW5nKCk7CisgICAgfQor
CisgICAgcHJpdmF0ZSB2b2lkIGluaXRFbXB0eUxpc3RQcmVmZXJlbmNlKExpc3RQcmVmZXJlbmNl
IGxpc3RQcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgU3RyaW5nIG5vQXBwc0luc3RhbGxlZFRp
dGxlID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5ub19hcHBzX2luc3RhbGxlZF90
aXRsZSk7CisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldFRpdGxlKG5vQXBwc0luc3RhbGxlZFRp
dGxlKTsKKworICAgICAgICBTdHJpbmcgbm9BcHBzSW5zdGFsbGVkU3VtbWFyeSA9IGdldENvbnRl
eHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcubm9fYXBwc19pbnN0YWxsZWRfc3VtbWFyeSk7CisgICAg
ICAgIGxpc3RQcmVmZXJlbmNlLnNldFN1bW1hcnkobm9BcHBzSW5zdGFsbGVkU3VtbWFyeSk7CisK
KyAgICAgICAgbGlzdFByZWZlcmVuY2Uuc2V0U2VsZWN0YWJsZShmYWxzZSk7CisKKyAgICAgICAg
bURyaXZlckxpc3RQcmVmcy5hZGQobGlzdFByZWZlcmVuY2UpOworICAgIH0KKworICAgIHByaXZh
dGUgdm9pZCBpbml0TGlzdFByZWZlcmVuY2UoUGFja2FnZUluZm8gcGFja2FnZUluZm8sIExpc3RQ
cmVmZXJlbmNlIGxpc3RQcmVmZXJlbmNlKQorICAgIHsKKyAgICAgICAgQ2hhclNlcXVlbmNlW10g
ZHJpdmVycyA9IGdldFJlc291cmNlcygpLmdldFN0cmluZ0FycmF5KFIuYXJyYXkuZHJpdmVyX3Zh
bHVlcyk7CisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldEVudHJ5VmFsdWVzKGRyaXZlcnMpOwor
ICAgICAgICBsaXN0UHJlZmVyZW5jZS5zZXRFbnRyaWVzKGRyaXZlcnMpOworCisgICAgICAgIFN0
cmluZyBkZWZhdWx0RHJpdmVyID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5kZWZh
dWx0X2RyaXZlcik7CisgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldERlZmF1bHRWYWx1ZShkZWZh
dWx0RHJpdmVyKTsKKworICAgICAgICBTdHJpbmcgZGlhbG9nVGl0bGVLZXkgPSBnZXRDb250ZXh0
KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLnNlbGVjdF9vcGVuZ2xfZHJpdmVyX3RpdGxlKTsKKyAgICAg
ICAgbGlzdFByZWZlcmVuY2Uuc2V0RGlhbG9nVGl0bGUoZGlhbG9nVGl0bGVLZXkpOworICAgICAg
ICBsaXN0UHJlZmVyZW5jZS5zZXRLZXkocGFja2FnZUluZm8ucGFja2FnZU5hbWUpOworCisgICAg
ICAgIGxpc3RQcmVmZXJlbmNlLnNldFRpdGxlKGdldEFwcE5hbWUocGFja2FnZUluZm8pKTsKKyAg
ICAgICAgbGlzdFByZWZlcmVuY2Uuc2V0U3VtbWFyeShtUHJlZnMuZ2V0U3RyaW5nKHBhY2thZ2VJ
bmZvLnBhY2thZ2VOYW1lLCBkZWZhdWx0RHJpdmVyKSk7CisKKyAgICAgICAgbGlzdFByZWZlcmVu
Y2Uuc2V0T25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIobmV3IFByZWZlcmVuY2UuT25QcmVmZXJl
bmNlQ2hhbmdlTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAg
IHB1YmxpYyBib29sZWFuIG9uUHJlZmVyZW5jZUNoYW5nZShQcmVmZXJlbmNlIHByZWZlcmVuY2Us
IE9iamVjdCBuZXdWYWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMaXN0UHJl
ZmVyZW5jZSBsaXN0UHJlZmVyZW5jZSA9IChMaXN0UHJlZmVyZW5jZSkgcHJlZmVyZW5jZTsKKwor
ICAgICAgICAgICAgICAgIGxpc3RQcmVmZXJlbmNlLnNldFN1bW1hcnkobmV3VmFsdWUudG9TdHJp
bmcoKSk7CisgICAgICAgICAgICAgICAgbUdsb2JhbFNldHRpbmdzLnVwZGF0ZVBrZyhwcmVmZXJl
bmNlLmdldEtleSgpLCBuZXdWYWx1ZS50b1N0cmluZygpKTsKKworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBtRHJpdmVy
TGlzdFByZWZzLmFkZChsaXN0UHJlZmVyZW5jZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lk
IHJlbW92ZVBrZ1ByZWZlcmVuY2UoU3RyaW5nIGtleSkKKyAgICB7CisgICAgICAgIFNoYXJlZFBy
ZWZlcmVuY2VzLkVkaXRvciBlZGl0b3IgPSBtUHJlZnMuZWRpdCgpOworCisgICAgICAgIGVkaXRv
ci5yZW1vdmUoa2V5KTsKKyAgICAgICAgZWRpdG9yLmFwcGx5KCk7CisKKyAgICAgICAgZm9yIChM
aXN0UHJlZmVyZW5jZSBsaXN0UHJlZmVyZW5jZSA6IG1Ecml2ZXJMaXN0UHJlZnMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChsaXN0UHJlZmVyZW5jZS5nZXRLZXkoKS5lcXVhbHMoa2V5KSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRHJpdmVyTGlzdFByZWZzLnJlbW92ZShs
aXN0UHJlZmVyZW5jZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBw
cml2YXRlIFBhY2thZ2VJbmZvIGdldFBhY2thZ2VJbmZvRm9yUGFja2FnZU5hbWUoU3RyaW5nIHBr
Z05hbWUpCisgICAgeworICAgICAgICBQYWNrYWdlSW5mbyBmb3VuZFBhY2thZ2VJbmZvID0gbnVs
bDsKKworICAgICAgICBmb3IgKFBhY2thZ2VJbmZvIHBhY2thZ2VJbmZvIDogbUluc3RhbGxlZFBr
Z3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwa2dOYW1lLmVxdWFscyhnZXRBcHBOYW1l
KHBhY2thZ2VJbmZvKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm91bmRQYWNr
YWdlSW5mbyA9IHBhY2thZ2VJbmZvOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZvdW5kUGFja2FnZUluZm87CisgICAg
fQorCisgICAgcHJpdmF0ZSB2b2lkIG1lcmdlR2xvYmFsU2V0dGluZ3MoKQorICAgIHsKKyAgICAg
ICAgU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIGVkaXRvciA9IG1QcmVmcy5lZGl0KCk7CisKKyAg
ICAgICAgZm9yIChQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA6IG1JbnN0YWxsZWRQa2dzKQorICAg
ICAgICB7CisgICAgICAgICAgICBTdHJpbmcgZHJpdmVyID0gbUdsb2JhbFNldHRpbmdzLmdldERy
aXZlckZvclBrZyhwYWNrYWdlSW5mby5wYWNrYWdlTmFtZSk7CisKKyAgICAgICAgICAgIGlmIChk
cml2ZXIgIT0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlZGl0b3IucHV0
U3RyaW5nKHBhY2thZ2VJbmZvLnBhY2thZ2VOYW1lLCBkcml2ZXIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIE5vIEds
b2JhbC5TZXR0aW5nIGRyaXZlciB2YWx1ZSBmb3IgdGhpcyBwYWNrYWdlLCBzbyBtdXN0IGJlICdk
ZWZhdWx0JworICAgICAgICAgICAgICAgIFN0cmluZyBkZWZhdWx0RHJpdmVyID0gZ2V0Q29udGV4
dCgpLmdldFN0cmluZyhSLnN0cmluZy5kZWZhdWx0X2RyaXZlcik7CisgICAgICAgICAgICAgICAg
ZWRpdG9yLnB1dFN0cmluZyhwYWNrYWdlSW5mby5wYWNrYWdlTmFtZSwgZGVmYXVsdERyaXZlcik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBlZGl0b3IuYXBwbHkoKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9z
eXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9hbmRyb2lkL2FuZ2xlL2NvbW1vbi9SZWNlaXZlci5qYXZh
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3Ny
Yy9jb20vYW5kcm9pZC9hbmdsZS9jb21tb24vUmVjZWl2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGJh
N2Y2YjdjMjk2MmFjOWFmYmM0YjIzZmU3YjMwN2EwNWFlNjZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9j
b20vYW5kcm9pZC9hbmdsZS9jb21tb24vUmVjZWl2ZXIuamF2YQpAQCAtMCwwICsxLDIwNiBAQAor
LyoKKyAqIENvcHlyaWdodCAyMDE5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAq
CisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUg
IkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUg
TGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJ
Q0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExp
Y2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBs
aWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJu
aW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisg
Ki8KK3BhY2thZ2UgY29tLmFuZHJvaWQuYW5nbGUuY29tbW9uOworCitpbXBvcnQgYW5kcm9pZC5j
b250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0
OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50
LlNoYXJlZFByZWZlcmVuY2VzOworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2Vy
dmVyOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsK
K2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0
aW5nczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWR4LnByZWZlcmVu
Y2UuUHJlZmVyZW5jZU1hbmFnZXI7CisKK2ltcG9ydCBvcmcuanNvbi5KU09OQXJyYXk7CitpbXBv
cnQgb3JnLmpzb24uSlNPTkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuanNvbi5KU09OT2JqZWN0Owor
CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFt
OworCitwdWJsaWMgY2xhc3MgUmVjZWl2ZXIgZXh0ZW5kcyBCcm9hZGNhc3RSZWNlaXZlcgorewor
CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyAgICAgICAgICAgICAgPSAiQW5n
bGVSZWNlaXZlciI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFOR0xFX1JVTEVT
X0ZJTEUgPSAiYTRhX3J1bGVzLmpzb24iOworCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZv
aWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkKKyAgICB7CisgICAg
ICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgIExvZy52KFRB
RywgIlJlY2VpdmVkIGludGVudDogJyIgKyBhY3Rpb24gKyAiJyIpOworCisgICAgICAgIGlmIChh
Y3Rpb24uZXF1YWxzKGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmludGVudF9hbmdsZV9mb3Jf
YW5kcm9pZF90b2FzdF9tZXNzYWdlKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJ1bmRsZSBy
ZXN1bHRzID0gZ2V0UmVzdWx0RXh0cmFzKHRydWUpOworICAgICAgICAgICAgcmVzdWx0cy5wdXRT
dHJpbmcoY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuaW50ZW50X2tleV9hNGFfdG9hc3RfbWVz
c2FnZSksCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmFu
Z2xlX2luX3VzZV90b2FzdF9tZXNzYWdlKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBTdHJpbmcganNvblN0ciAgICAgID0gbG9hZFJ1bGVzKGNvbnRl
eHQpOworICAgICAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lcyA9IHBhcnNlUGFja2FnZU5hbWVz
KGpzb25TdHIpOworCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIEFOR0xFIHdoaXRlbGlzdAor
ICAgICAgICAgICAgaWYgKHBhY2thZ2VOYW1lcyAhPSBudWxsKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEdsb2JhbFNldHRpbmdzLnVwZGF0ZUFuZ2xlV2hpdGVsaXN0KGNvbnRleHQs
IHBhY2thZ2VOYW1lcyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVwZGF0ZURldmVs
b3Blck9wdGlvbnNXYXRjaGVyKGNvbnRleHQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoK
KyAgICAgKiBPcGVuIHRoZSBydWxlcyBmaWxlIGFuZCBwdWxsIGFsbCB0aGUgSlNPTiBpbnRvIGEg
c3RyaW5nCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgbG9hZFJ1bGVzKENvbnRleHQgY29u
dGV4dCkKKyAgICB7CisgICAgICAgIFN0cmluZyBqc29uU3RyID0gbnVsbDsKKworICAgICAgICB0
cnkKKyAgICAgICAgeworICAgICAgICAgICAgSW5wdXRTdHJlYW0gcnVsZXNTdHJlYW0gPSBjb250
ZXh0LmdldEFzc2V0cygpLm9wZW4oQU5HTEVfUlVMRVNfRklMRSk7CisgICAgICAgICAgICBpbnQg
c2l6ZSAgICAgICAgICAgICAgICA9IHJ1bGVzU3RyZWFtLmF2YWlsYWJsZSgpOworICAgICAgICAg
ICAgYnl0ZVtdIGJ1ZmZlciAgICAgICAgICAgPSBuZXcgYnl0ZVtzaXplXTsKKyAgICAgICAgICAg
IHJ1bGVzU3RyZWFtLnJlYWQoYnVmZmVyKTsKKyAgICAgICAgICAgIHJ1bGVzU3RyZWFtLmNsb3Nl
KCk7CisgICAgICAgICAgICBqc29uU3RyID0gbmV3IFN0cmluZyhidWZmZXIsICJVVEYtOCIpOwor
ICAgICAgICB9CisgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIExvZy5lKFRBRywgIkZhaWxlZCB0byBvcGVuICIgKyBBTkdMRV9SVUxFU19GSUxF
ICsgIjogIiwgaW9lKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBqc29uU3RyOworICAg
IH0KKworICAgIC8qCisgICAgICogRXh0cmFjdCBhbGwgYXBwIHBhY2thZ2UgbmFtZXMgZnJvbSB0
aGUganNvbiBmaWxlIGFuZCByZXR1cm4gdGhlbSBjb21tYSBzZXBhcmF0ZWQKKyAgICAgKi8KKyAg
ICBwcml2YXRlIFN0cmluZyBwYXJzZVBhY2thZ2VOYW1lcyhTdHJpbmcgcnVsZXNKU09OKQorICAg
IHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBwYWNrYWdlTmFtZXMgPSBuZXcgU3RyaW5nQnVpbGRl
cigpOworCisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBKU09OT2JqZWN0IGpz
b25PYmogPSBuZXcgSlNPTk9iamVjdChydWxlc0pTT04pOworICAgICAgICAgICAgSlNPTkFycmF5
IHJ1bGVzICAgID0ganNvbk9iai5nZXRKU09OQXJyYXkoIlJ1bGVzIik7CisgICAgICAgICAgICBp
ZiAocnVsZXMgPT0gbnVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMb2cuZShU
QUcsICJObyBSdWxlcyBpbiAiICsgQU5HTEVfUlVMRVNfRklMRSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHJ1bGVzLmxlbmd0aCgpOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
SlNPTk9iamVjdCBydWxlID0gcnVsZXMuZ2V0SlNPTk9iamVjdChpKTsKKyAgICAgICAgICAgICAg
ICBKU09OQXJyYXkgYXBwcyAgPSBydWxlLm9wdEpTT05BcnJheSgiQXBwbGljYXRpb25zIik7Cisg
ICAgICAgICAgICAgICAgaWYgKGFwcHMgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIExvZy52KFRBRywgIlNraXBwaW5nIFJ1bGVzIGVudHJ5IHdpdGggbm8g
QXBwbGljYXRpb25zIik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGFwcHMubGVuZ3Ro
KCk7IGorKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEpTT05PYmpl
Y3QgYXBwID0gYXBwcy5vcHRKU09OT2JqZWN0KGopOworICAgICAgICAgICAgICAgICAgICBTdHJp
bmcgYXBwTmFtZSA9IGFwcC5vcHRTdHJpbmcoIkFwcE5hbWUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKChhcHBOYW1lID09IG51bGwpIHx8IGFwcE5hbWUuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJJbnZhbGlk
IEFwcE5hbWU6ICciICsgYXBwTmFtZSArICInIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFwYWNrYWdlTmFtZXMudG9TdHJpbmcoKS5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VO
YW1lcy5hcHBlbmQoIiwiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBwYWNrYWdlTmFtZXMuYXBwZW5kKGFwcE5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIExvZy52KFRBRywgIlBhcnNlZCB0aGUgZm9sbG93aW5n
IHBhY2thZ2UgbmFtZXMgZnJvbSAiICsgQU5HTEVfUlVMRVNfRklMRSArICI6ICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArIHBhY2thZ2VOYW1lcyk7CisgICAgICAgIH0KKyAgICAg
ICAgY2F0Y2ggKEpTT05FeGNlcHRpb24gamUpCisgICAgICAgIHsKKyAgICAgICAgICAgIExvZy5l
KFRBRywgIkVycm9yIHdoZW4gcGFyc2luZyBhbmdsZSBKU09OOiAiLCBqZSk7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwYWNrYWdlTmFtZXMu
dG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVBbGxVc2VBbmdsZShD
b250ZXh0IGNvbnRleHQpCisgICAgeworICAgICAgICBTaGFyZWRQcmVmZXJlbmNlcyBwcmVmcyA9
IFByZWZlcmVuY2VNYW5hZ2VyLmdldERlZmF1bHRTaGFyZWRQcmVmZXJlbmNlcyhjb250ZXh0KTsK
KyAgICAgICAgU3RyaW5nIGFsbFVzZUFuZ2xlS2V5ICAgPSBjb250ZXh0LmdldFN0cmluZyhSLnN0
cmluZy5wcmVmX2tleV9hbGxfYW5nbGUpOworICAgICAgICBib29sZWFuIGFsbFVzZUFuZ2xlICAg
ICA9IHByZWZzLmdldEJvb2xlYW4oYWxsVXNlQW5nbGVLZXksIGZhbHNlKTsKKworICAgICAgICBH
bG9iYWxTZXR0aW5ncy51cGRhdGVBbGxVc2VBbmdsZShjb250ZXh0LCBhbGxVc2VBbmdsZSk7CisK
KyAgICAgICAgTG9nLnYoVEFHLCAiQWxsIFBLR3MgdXNlIEFOR0xFIHNldCB0bzogIiArIGFsbFVz
ZUFuZ2xlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGVTaG93QW5nbGVJblVzZURp
YWxvZ0JveChDb250ZXh0IGNvbnRleHQpCisgICAgeworICAgICAgICBTaGFyZWRQcmVmZXJlbmNl
cyBwcmVmcyA9IFByZWZlcmVuY2VNYW5hZ2VyLmdldERlZmF1bHRTaGFyZWRQcmVmZXJlbmNlcyhj
b250ZXh0KTsKKyAgICAgICAgU3RyaW5nIHNob3dBbmdsZUluVXNlRGlhbG9nQm94S2V5ID0KKyAg
ICAgICAgICAgICAgICBjb250ZXh0LmdldFN0cmluZyhSLnN0cmluZy5wcmVmX2tleV9hbmdsZV9p
bl91c2VfZGlhbG9nKTsKKyAgICAgICAgYm9vbGVhbiBzaG93QW5nbGVJblVzZURpYWxvZ0JveCA9
IHByZWZzLmdldEJvb2xlYW4oc2hvd0FuZ2xlSW5Vc2VEaWFsb2dCb3hLZXksIGZhbHNlKTsKKwor
ICAgICAgICBHbG9iYWxTZXR0aW5ncy51cGRhdGVTaG93QW5nbGVJblVzZURpYWxvZyhjb250ZXh0
LCBzaG93QW5nbGVJblVzZURpYWxvZ0JveCk7CisKKyAgICAgICAgTG9nLnYoVEFHLCAiU2hvdyAn
QU5HTEUgSW4gVXNlJyBkaWFsb2cgYm94IHNldCB0bzogIiArIHNob3dBbmdsZUluVXNlRGlhbG9n
Qm94KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXaGVuIERldmVsb3BlciBPcHRpb25zIGFy
ZSBkaXNhYmxlZCwgcmVzZXQgYWxsIG9mIHRoZSBnbG9iYWwgc2V0dGluZ3MgYmFjayB0byB0aGVp
ciBkZWZhdWx0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHVwZGF0ZURldmVs
b3Blck9wdGlvbnNXYXRjaGVyKENvbnRleHQgY29udGV4dCkKKyAgICB7CisgICAgICAgIFVyaSBz
ZXR0aW5nVXJpID0gU2V0dGluZ3MuR2xvYmFsLmdldFVyaUZvcihTZXR0aW5ncy5HbG9iYWwuREVW
RUxPUE1FTlRfU0VUVElOR1NfRU5BQkxFRCk7CisKKyAgICAgICAgQ29udGVudE9ic2VydmVyIGRl
dmVsb3Blck9wdGlvbnNPYnNlcnZlciA9IG5ldyBDb250ZW50T2JzZXJ2ZXIobmV3IEhhbmRsZXIo
KSkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNo
YW5nZShib29sZWFuIHNlbGZDaGFuZ2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3VwZXIub25DaGFuZ2Uoc2VsZkNoYW5nZSk7CisKKyAgICAgICAgICAgICAgICBib29sZWFuIGRl
dmVsb3Blck9wdGlvbnNFbmFibGVkID0KKyAgICAgICAgICAgICAgICAgICAgICAgICgxCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFNldHRpbmdzLkdsb2JhbC5nZXRJbnQoY29u
dGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXR0aW5ncy5HbG9iYWwuREVWRUxPUE1FTlRfU0VUVElOR1NfRU5BQkxFRCwg
MCkpOworCisgICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAiRGV2ZWxvcGVyIE9wdGlvbnMgZW5h
YmxlZCB2YWx1ZSBjaGFuZ2VkOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICsgImRldmVsb3Blck9wdGlvbnNFbmFibGVkID0gIiArIGRldmVsb3Blck9wdGlvbnNFbmFibGVk
KTsKKworICAgICAgICAgICAgICAgIGlmICghZGV2ZWxvcGVyT3B0aW9uc0VuYWJsZWQpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgbmVjZXNzYXJ5
IHNldHRpbmdzIHRvIHRoZWlyIGRlZmF1bHRzLgorICAgICAgICAgICAgICAgICAgICBTaGFyZWRQ
cmVmZXJlbmNlcy5FZGl0b3IgZWRpdG9yID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cmVmZXJlbmNlTWFuYWdlci5nZXREZWZhdWx0U2hhcmVkUHJlZmVyZW5jZXMoY29udGV4dCkuZWRp
dCgpOworICAgICAgICAgICAgICAgICAgICBlZGl0b3IuY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWRpdG9yLmFwcGx5KCk7CisgICAgICAgICAgICAgICAgICAgIEdsb2JhbFNldHRpbmdz
LmNsZWFyQWxsR2xvYmFsU2V0dGluZ3MoY29udGV4dCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGNvbnRleHQuZ2V0Q29udGVudFJlc29s
dmVyKCkucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoCisgICAgICAgICAgICAgICAgc2V0dGluZ1Vy
aSwgZmFsc2UsIGRldmVsb3Blck9wdGlvbnNPYnNlcnZlcik7CisgICAgICAgIGRldmVsb3Blck9w
dGlvbnNPYnNlcnZlci5vbkNoYW5nZSh0cnVlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5kcm9pZF9zeXN0ZW1fc2V0dGluZ3Mvc3JjL2NvbS9h
bmRyb2lkL2FuZ2xlL2NvbW1vbi9TZWFyY2hQcm92aWRlci5qYXZhIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9hbmds
ZS9jb21tb24vU2VhcmNoUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODlhYzA1ZDk1ZjJkODY3
NzBlYWM2MTdjZTRhY2ViN2Y3YzI2YzRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2FuZHJvaWRfc3lzdGVtX3NldHRpbmdzL3NyYy9jb20vYW5kcm9pZC9h
bmdsZS9jb21tb24vU2VhcmNoUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisg
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8K
KworcGFja2FnZSBjb20uYW5kcm9pZC5hbmdsZS5jb21tb247CisKK2ltcG9ydCBzdGF0aWMgYW5k
cm9pZC5wcm92aWRlci5TZWFyY2hJbmRleGFibGVzQ29udHJhY3QuQ09MVU1OX0lOREVYX1JBV19J
TlRFTlRfQUNUSU9OOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaEluZGV4
YWJsZXNDb250cmFjdC5DT0xVTU5fSU5ERVhfUkFXX0lOVEVOVF9UQVJHRVRfQ0xBU1M7CitpbXBv
cnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuU2VhcmNoSW5kZXhhYmxlc0NvbnRyYWN0LkNPTFVN
Tl9JTkRFWF9SQVdfSU5URU5UX1RBUkdFVF9QQUNLQUdFOworaW1wb3J0IHN0YXRpYyBhbmRyb2lk
LnByb3ZpZGVyLlNlYXJjaEluZGV4YWJsZXNDb250cmFjdC5DT0xVTU5fSU5ERVhfUkFXX0tFWTsK
K2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRlci5TZWFyY2hJbmRleGFibGVzQ29udHJhY3Qu
Q09MVU1OX0lOREVYX1JBV19LRVlXT1JEUzsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRl
ci5TZWFyY2hJbmRleGFibGVzQ29udHJhY3QuQ09MVU1OX0lOREVYX1JBV19TVU1NQVJZX09OOwor
aW1wb3J0IHN0YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaEluZGV4YWJsZXNDb250cmFjdC5D
T0xVTU5fSU5ERVhfUkFXX1RJVExFOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlNl
YXJjaEluZGV4YWJsZXNDb250cmFjdC5JTkRFWEFCTEVTX1JBV19DT0xVTU5TOworaW1wb3J0IHN0
YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaEluZGV4YWJsZXNDb250cmFjdC5OT05fSU5ERVhB
QkxFU19LRVlTX0NPTFVNTlM7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2lt
cG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vy
c29yOworaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuTWF0cml4Q3Vyc29yOworaW1wb3J0IGFuZHJv
aWQucHJvdmlkZXIuU2VhcmNoSW5kZXhhYmxlc1Byb3ZpZGVyOworaW1wb3J0IGFuZHJvaWQucHJv
dmlkZXIuU2V0dGluZ3M7CisKK3B1YmxpYyBjbGFzcyBTZWFyY2hQcm92aWRlciBleHRlbmRzIFNl
YXJjaEluZGV4YWJsZXNQcm92aWRlcgoreworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3Ry
aW5nIFRBRyA9ICJTZWFyY2hQcm92aWRlciI7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMg
Ym9vbGVhbiBvbkNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQ3Vyc29yIHF1ZXJ5WG1sUmVzb3VyY2VzKFN0cmlu
Z1tdIHByb2plY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAg
ICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgQ3Vyc29yIHF1ZXJ5UmF3RGF0YShTdHJpbmdbXSBwcm9q
ZWN0aW9uKQorICAgIHsKKyAgICAgICAgTWF0cml4Q3Vyc29yIGN1cnNvciA9IG5ldyBNYXRyaXhD
dXJzb3IoSU5ERVhBQkxFU19SQVdfQ09MVU1OUyk7CisgICAgICAgIENvbnRleHQgY29udGV4dCAg
ICAgPSBnZXRDb250ZXh0KCk7CisKKyAgICAgICAgT2JqZWN0W10gcmVmICAgICAgICAgICAgICAg
ICAgICAgICAgPSBuZXcgT2JqZWN0W0lOREVYQUJMRVNfUkFXX0NPTFVNTlMubGVuZ3RoXTsKKyAg
ICAgICAgcmVmW0NPTFVNTl9JTkRFWF9SQVdfS0VZXSAgICAgICAgICAgPSBjb250ZXh0LmdldFN0
cmluZyhSLnN0cmluZy5hbmdsZV9wcmVmZXJlbmNlcyk7CisgICAgICAgIHJlZltDT0xVTU5fSU5E
RVhfUkFXX1RJVExFXSAgICAgICAgID0gY29udGV4dC5nZXRTdHJpbmcoUi5zdHJpbmcuYW5nbGVf
cHJlZmVyZW5jZXMpOworICAgICAgICByZWZbQ09MVU1OX0lOREVYX1JBV19TVU1NQVJZX09OXSAg
ICA9IGNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmFuZ2xlX3ByZWZlcmVuY2VzX3N1bW1hcnkp
OworICAgICAgICByZWZbQ09MVU1OX0lOREVYX1JBV19LRVlXT1JEU10gICAgICA9IGNvbnRleHQu
Z2V0U3RyaW5nKFIuc3RyaW5nLmtleXdvcmRzKTsKKyAgICAgICAgcmVmW0NPTFVNTl9JTkRFWF9S
QVdfSU5URU5UX0FDVElPTl0gPSBJbnRlbnQuQUNUSU9OX01BSU47CisgICAgICAgIHJlZltDT0xV
TU5fSU5ERVhfUkFXX0lOVEVOVF9UQVJHRVRfUEFDS0FHRV0gPSBnZXRDb250ZXh0KCkuZ2V0QXBw
bGljYXRpb25JbmZvKCkucGFja2FnZU5hbWU7CisgICAgICAgIHJlZltDT0xVTU5fSU5ERVhfUkFX
X0lOVEVOVF9UQVJHRVRfQ0xBU1NdICAgPSAiY29tLmFuZHJvaWQuYW5nbGUuTWFpbkFjdGl2aXR5
IjsKKworICAgICAgICBjdXJzb3IuYWRkUm93KHJlZik7CisgICAgICAgIHJldHVybiBjdXJzb3I7
CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIEN1cnNvciBxdWVyeU5vbkluZGV4
YWJsZUtleXMoU3RyaW5nW10gcHJvamVjdGlvbikKKyAgICB7CisgICAgICAgIGJvb2xlYW4gZGV2
ZWxvcGVyT3B0aW9uc0lzRW5hYmxlZCA9CisgICAgICAgICAgICAgICAgU2V0dGluZ3MuR2xvYmFs
LmdldEludChnZXRDb250ZXh0KCkuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBTZXR0aW5ncy5HbG9iYWwuREVWRUxPUE1FTlRfU0VUVElOR1NfRU5BQkxFRCwg
MCkKKyAgICAgICAgICAgICAgICAhPSAwOworCisgICAgICAgIC8vIElmIGRldmVsb3BlciBvcHRp
b25zIGlzIG5vdCBlbmFibGVkLCBBTkdMRSBzaG91bGRuJ3QgYmUgc2VhcmNoYWJsZS4KKyAgICAg
ICAgaWYgKCFkZXZlbG9wZXJPcHRpb25zSXNFbmFibGVkKQorICAgICAgICB7CisgICAgICAgICAg
ICBNYXRyaXhDdXJzb3IgY3Vyc29yID0gbmV3IE1hdHJpeEN1cnNvcihOT05fSU5ERVhBQkxFU19L
RVlTX0NPTFVNTlMpOworICAgICAgICAgICAgT2JqZWN0W10gcm93ICAgICAgICA9IG5ldyBPYmpl
Y3RbXSB7Z2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5hbmdsZV9wcmVmZXJlbmNlcyl9
OworICAgICAgICAgICAgY3Vyc29yLmFkZFJvdyhyb3cpOworICAgICAgICAgICAgcmV0dXJuIGN1
cnNvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1pdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1pdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjFmZjQzODdkYzgxYzU0YzVm
YTEzZTM3MDIyNzEwYzE3YTk3YWMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21taXQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDE0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBjb21taXQuaDoKLS8vICAgVGhp
cyBpcyBhIGRlZmF1bHQgY29tbWl0IGhhc2ggaGVhZGVyLCB3aGVuIGdpdCBpcyBub3QgYXZhaWxh
YmxlLgotLy8KLQotI2RlZmluZSBBTkdMRV9DT01NSVRfSEFTSCAidW5rbm93biBoYXNoIgotI2Rl
ZmluZSBBTkdMRV9DT01NSVRfSEFTSF9TSVpFIDEyCi0jZGVmaW5lIEFOR0xFX0NPTU1JVF9EQVRF
ICJ1bmtub3duIGRhdGUiCi0KLSNkZWZpbmUgQU5HTEVfRElTQUJMRV9QUk9HUkFNX0JJTkFSWV9M
T0FECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbWl0X2lkLnB5
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1pdF9pZC5weQppbmRleCAxNzQwNzUw
ZGQ2N2Y5OTI3ZjZiZmUyYzdlMzlkZWYzMjI0Njg1ZTIwLi5mOWUxNTk4ZDBjMWZmMDkzMzQ0OTY1
Zjg3NjU5MGM1NWFmOTEwMDk5IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbWl0X2lkLnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21taXRf
aWQucHkKQEAgLTExLDQwICsxMSw0NyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIAogdXNhZ2Ug
PSAiIiJcCi1Vc2FnZTogY29tbWl0X2lkLnB5IGNoZWNrIDxhbmdsZV9kaXI+ICAgICAgICAgICAg
ICAgIC0gY2hlY2sgaWYgZ2l0IGlzIHByZXNlbnQKLSAgICAgICBjb21taXRfaWQucHkgZ2VuIDxh
bmdsZV9kaXI+IDxmaWxlX3RvX3dyaXRlPiAgLSBnZW5lcmF0ZSBjb21taXQuaCIiIgorVXNhZ2U6
IGNvbW1pdF9pZC5weSBjaGVjayAgICAgICAgICAgICAgICAtIGNoZWNrIGlmIGdpdCBpcyBwcmVz
ZW50CisgICAgICAgY29tbWl0X2lkLnB5IGdlbiA8ZmlsZV90b193cml0ZT4gIC0gZ2VuZXJhdGUg
Y29tbWl0LmgiIiIKIAogCiBkZWYgZ3JhYl9vdXRwdXQoY29tbWFuZCwgY3dkKToKICAgICByZXR1
cm4gc3AuUG9wZW4oY29tbWFuZCwgc3Rkb3V0PXNwLlBJUEUsIHNoZWxsPVRydWUsIGN3ZD1jd2Qp
LmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQogCiAKLWlmIGxlbihzeXMuYXJndikgPCAzOgoraWYg
bGVuKHN5cy5hcmd2KSA8IDI6CiAgICAgc3lzLmV4aXQodXNhZ2UpCiAKIG9wZXJhdGlvbiA9IHN5
cy5hcmd2WzFdCi1jd2QgPSBzeXMuYXJndlsyXQorCisjIFNldCB0aGUgcm9vdCBvZiBBTkdMRSdz
IHJlcG8gYXMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5Citjd2QgPSBvcy5wYXRoLmpvaW4ob3MucGF0
aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSwgJy4uJykKKworZ2l0X2Rpcl9l
eGlzdHMgPSBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oY3dkLCAnLmdpdCcsICdIRUFEJykp
CiAKIGlmIG9wZXJhdGlvbiA9PSAnY2hlY2snOgotICAgIGluZGV4X3BhdGggPSBvcy5wYXRoLmpv
aW4oY3dkLCAnLmdpdCcsICdpbmRleCcpCi0gICAgaWYgb3MucGF0aC5leGlzdHMoaW5kZXhfcGF0
aCk6CisgICAgaWYgZ2l0X2Rpcl9leGlzdHM6CiAgICAgICAgIHByaW50KCIxIikKICAgICBlbHNl
OgogICAgICAgICBwcmludCgiMCIpCiAgICAgc3lzLmV4aXQoMCkKIAotaWYgbGVuKHN5cy5hcmd2
KSA8IDQgb3Igb3BlcmF0aW9uICE9ICdnZW4nOgoraWYgbGVuKHN5cy5hcmd2KSA8IDMgb3Igb3Bl
cmF0aW9uICE9ICdnZW4nOgogICAgIHN5cy5leGl0KHVzYWdlKQogCi1vdXRwdXRfZmlsZSA9IHN5
cy5hcmd2WzNdCitvdXRwdXRfZmlsZSA9IHN5cy5hcmd2WzJdCiBjb21taXRfaWRfc2l6ZSA9IDEy
Citjb21taXRfaWQgPSAndW5rbm93biBoYXNoJworY29tbWl0X2RhdGUgPSAndW5rbm93biBkYXRl
JworZW5hYmxlX2JpbmFyeV9sb2FkaW5nID0gRmFsc2UKIAotdHJ5OgotICAgIGNvbW1pdF9pZCA9
IGdyYWJfb3V0cHV0KCdnaXQgcmV2LXBhcnNlIC0tc2hvcnQ9JWQgSEVBRCcgJSBjb21taXRfaWRf
c2l6ZSwgY3dkKQotICAgIGNvbW1pdF9kYXRlID0gZ3JhYl9vdXRwdXQoJ2dpdCBzaG93IC1zIC0t
Zm9ybWF0PSVjaSBIRUFEJywgY3dkKQotZXhjZXB0OgotICAgIGNvbW1pdF9pZCA9ICdpbnZhbGlk
LWhhc2gnCi0gICAgY29tbWl0X2RhdGUgPSAnaW52YWxpZC1kYXRlJworaWYgZ2l0X2Rpcl9leGlz
dHM6CisgICAgdHJ5OgorICAgICAgICBjb21taXRfaWQgPSBncmFiX291dHB1dCgnZ2l0IHJldi1w
YXJzZSAtLXNob3J0PSVkIEhFQUQnICUgY29tbWl0X2lkX3NpemUsIGN3ZCkKKyAgICAgICAgY29t
bWl0X2RhdGUgPSBncmFiX291dHB1dCgnZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JWNpIEhFQUQnLCBj
d2QpCisgICAgICAgIGVuYWJsZV9iaW5hcnlfbG9hZGluZyA9IFRydWUKKyAgICBleGNlcHQ6Cisg
ICAgICAgIHBhc3MKIAogaGZpbGUgPSBvcGVuKG91dHB1dF9maWxlLCAndycpCiAKQEAgLTUyLDQg
KzU5LDcgQEAgaGZpbGUud3JpdGUoJyNkZWZpbmUgQU5HTEVfQ09NTUlUX0hBU0ggIiVzIlxuJyAl
IGNvbW1pdF9pZCkKIGhmaWxlLndyaXRlKCcjZGVmaW5lIEFOR0xFX0NPTU1JVF9IQVNIX1NJWkUg
JWRcbicgJSBjb21taXRfaWRfc2l6ZSkKIGhmaWxlLndyaXRlKCcjZGVmaW5lIEFOR0xFX0NPTU1J
VF9EQVRFICIlcyJcbicgJSBjb21taXRfZGF0ZSkKIAoraWYgbm90IGVuYWJsZV9iaW5hcnlfbG9h
ZGluZzoKKyAgICBoZmlsZS53cml0ZSgnI2RlZmluZSBBTkdMRV9ESVNBQkxFX1BST0dSQU1fQklO
QVJZX0xPQURcbicpCisKIGhmaWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vUGFja2VkRW51bXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vUGFja2VkRW51bXMuaAppbmRleCA2ZmNmY2U1OGE4NTBlZWNlOTEwOTc4
OTQzZWM3YmUzYWVlMWVlY2YwLi4zOGM2OTEwYzE0OTFhNmRlY2M0ZjY5MDM5NTI5OTY5MzkwOTEz
ZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tl
ZEVudW1zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9QYWNrZWRF
bnVtcy5oCkBAIC04Myw3ICs4MywxNCBAQCBjbGFzcyBQYWNrZWRFbnVtTWFwCiAgICAgICAgIC8v
IFdlIHVzZSBhIGZvciBsb29wIGluc3RlYWQgb2YgcmFuZ2UtZm9yIHRvIHdvcmsgYXJvdW5kIGEg
bGltaXRhdGlvbiBpbiBNU1ZDLgogICAgICAgICBmb3IgKGNvbnN0IEluaXRQYWlyICppdCA9IGlu
aXQuYmVnaW4oKTsgaXQgIT0gaW5pdC5lbmQoKTsgKytpdCkKICAgICAgICAgeworI2lmIChfX2Nw
bHVzcGx1cyA8IDIwMTcwM0wpCisgICAgICAgICAgICAvLyBUaGlzIGhvcnJpYmxlIGNvbnN0X2Nh
c3QgcGF0dGVybiBpcyBuZWNlc3NhcnkgdG8gd29yayBhcm91bmQgYSBjb25zdGV4cHIgbGltaXRh
dGlvbi4KKyAgICAgICAgICAgIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMzQx
OTk3NzQvIC4gTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBmaXhlZCB3aXRoIEMrKzE3LgorICAgICAg
ICAgICAgY29uc3RfY2FzdDxUICY+KGNvbnN0X2Nhc3Q8Y29uc3QgU3RvcmFnZSAmPigKKyAgICAg
ICAgICAgICAgICBtUHJpdmF0ZURhdGEpW3N0YXRpY19jYXN0PFVuZGVybHlpbmdUeXBlPihpdC0+
Zmlyc3QpXSkgPSBpdC0+c2Vjb25kOworI2Vsc2UKICAgICAgICAgICAgIG1Qcml2YXRlRGF0YVtz
dGF0aWNfY2FzdDxVbmRlcmx5aW5nVHlwZT4oaXQtPmZpcnN0KV0gPSBpdC0+c2Vjb25kOworI2Vu
ZGlmCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0NSw2ICs1NTIsMTEgQEAgRnJvbUdMKEZyb21U
IGZyb20pCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RW51bVQ+KGZyb20pOwogfQor
CitzdHJ1Y3QgVW5pZm9ybUxvY2F0aW9uCit7CisgICAgaW50IHZhbHVlOworfTsKIH0gIC8vIG5h
bWVzcGFjZSBnbAogCiBuYW1lc3BhY2UgZWdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tlZEdMRW51bXNfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tlZEdMRW51bXNfYXV0b2dlbi5jcHAKaW5kZXgg
NWIzMzIzMzA5NWRkN2IyNjA5Yzk1ZDNlMmFjMDdjMzg2MjQyMjJjZC4uZWU4YmY0NjAwZTg2MTgy
YTA0MzhkNzQzOWFjNjJjMGMzZDkyNDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9QYWNrZWRHTEVudW1zX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUGFja2VkR0xFbnVtc19hdXRvZ2VuLmNwcApAQCAt
NjEzLDYgKzYxMywxMCBAQCBIYW5kbGVUeXBlIEZyb21HTGVudW08SGFuZGxlVHlwZT4oR0xlbnVt
IGZyb20pCiAgICAgewogICAgICAgICBjYXNlIEdMX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9FWFQ6
CiAgICAgICAgICAgICByZXR1cm4gSGFuZGxlVHlwZTo6T3BhcXVlRmQ7CisgICAgICAgIGNhc2Ug
R0xfSEFORExFX1RZUEVfWklSQ09OX1ZNT19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBIYW5k
bGVUeXBlOjpaaXJjb25WbW87CisgICAgICAgIGNhc2UgR0xfSEFORExFX1RZUEVfWklSQ09OX0VW
RU5UX0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGU6OlppcmNvbkV2ZW50Owog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEhhbmRsZVR5cGU6OkludmFsaWRF
bnVtOwogICAgIH0KQEAgLTYyNCw2ICs2MjgsMTAgQEAgR0xlbnVtIFRvR0xlbnVtKEhhbmRsZVR5
cGUgZnJvbSkKICAgICB7CiAgICAgICAgIGNhc2UgSGFuZGxlVHlwZTo6T3BhcXVlRmQ6CiAgICAg
ICAgICAgICByZXR1cm4gR0xfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0VYVDsKKyAgICAgICAgY2Fz
ZSBIYW5kbGVUeXBlOjpaaXJjb25WbW86CisgICAgICAgICAgICByZXR1cm4gR0xfSEFORExFX1RZ
UEVfWklSQ09OX1ZNT19BTkdMRTsKKyAgICAgICAgY2FzZSBIYW5kbGVUeXBlOjpaaXJjb25FdmVu
dDoKKyAgICAgICAgICAgIHJldHVybiBHTF9IQU5ETEVfVFlQRV9aSVJDT05fRVZFTlRfQU5HTEU7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAg
ICAgcmV0dXJuIDA7CkBAIC02MzcsNiArNjQ1LDEyIEBAIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0gJm9zLCBIYW5kbGVUeXBlIHZhbHVlKQogICAgICAgICBjYXNlIEhhbmRs
ZVR5cGU6Ok9wYXF1ZUZkOgogICAgICAgICAgICAgb3MgPDwgIkdMX0hBTkRMRV9UWVBFX09QQVFV
RV9GRF9FWFQiOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSGFuZGxlVHlwZTo6
WmlyY29uVm1vOgorICAgICAgICAgICAgb3MgPDwgIkdMX0hBTkRMRV9UWVBFX1pJUkNPTl9WTU9f
QU5HTEUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSGFuZGxlVHlwZTo6Wmly
Y29uRXZlbnQ6CisgICAgICAgICAgICBvcyA8PCAiR0xfSEFORExFX1RZUEVfWklSQ09OX0VWRU5U
X0FOR0xFIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgb3MgPDwgIkdMX0lOVkFMSURfRU5VTSI7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUGFja2VkR0xFbnVtc19hdXRv
Z2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1BhY2tlZEdMRW51bXNf
YXV0b2dlbi5oCmluZGV4IDA1M2I4YTBiOWQyOTg1ZWJjMjZkMzIyMzFlMDc2M2ZhMWQ5ZWI0NzUu
LjZiZTVmODdjMWJhNTZhOTUwNDRmNTM3ZmVkMGZjNmYxMjEzNmY4MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUGFja2VkR0xFbnVtc19hdXRvZ2VuLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9QYWNrZWRHTEVudW1zX2F1
dG9nZW4uaApAQCAtMTcyLDEwICsxNzIsMTIgQEAgc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSAmb3MsIEdyYXBoaWNzUmVzZXRTdGF0dXMgdmFsdWUpOwogCiBlbnVtIGNsYXNz
IEhhbmRsZVR5cGUgOiB1aW50OF90CiB7Ci0gICAgT3BhcXVlRmQgPSAwLAorICAgIE9wYXF1ZUZk
ICAgID0gMCwKKyAgICBaaXJjb25WbW8gICA9IDEsCisgICAgWmlyY29uRXZlbnQgPSAyLAogCi0g
ICAgSW52YWxpZEVudW0gPSAxLAotICAgIEVudW1Db3VudCAgID0gMSwKKyAgICBJbnZhbGlkRW51
bSA9IDMsCisgICAgRW51bUNvdW50ICAgPSAzLAogfTsKIAogdGVtcGxhdGUgPD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5kcm9pZF91dGlsLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5kcm9pZF91dGlsLmNwcAppbmRl
eCAxYmUxMmU1ZDgxNTA1MTk1YzUxNjMxZjIyODdlZTRmMTM3OWU1NzU4Li4yOWM1MTg2MTU0MzM0
NDc4NWMzZDk0NDJmMjA5NzE3NmQzZTc4YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2FuZHJvaWRfdXRpbC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9hbmRyb2lkX3V0aWwuY3BwCkBAIC0yNjYsNiArMjY2LDQ2IEBA
IEdMZW51bSBOYXRpdmVQaXhlbEZvcm1hdFRvR0xJbnRlcm5hbEZvcm1hdChpbnQgcGl4ZWxGb3Jt
YXQpCiAgICAgfQogfQogCitpbnQgR0xJbnRlcm5hbEZvcm1hdFRvTmF0aXZlUGl4ZWxGb3JtYXQo
R0xlbnVtIGludGVybmFsRm9ybWF0KQoreworICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisg
ICAgeworICAgICAgICBjYXNlIEdMX1JHQkE4OgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FS
RUJVRkZFUl9GT1JNQVRfUjhHOEI4QThfVU5PUk07CisgICAgICAgIGNhc2UgR0xfUkdCODoKKyAg
ICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZGRVJfRk9STUFUX1I4RzhCOFg4X1VOT1JNOwor
ICAgICAgICBjYXNlIEdMX1JHQjU2NToKKyAgICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZG
RVJfRk9STUFUX1I1RzZCNV9VTk9STTsKKyAgICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAg
ICAgICAgICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9COEc4UjhBOF9VTk9STTsKKyAg
ICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZF
Ul9GT1JNQVRfQjVHNVI1QTFfVU5PUk07CisgICAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAg
ICAgICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9CNEc0UjRBNF9VTk9STTsKKyAgICAg
ICAgY2FzZSBHTF9SR0JBMTZGOgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9G
T1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUOworICAgICAgICBjYXNlIEdMX1JHQjEwX0EyOgorICAg
ICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk07
CisgICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZG
RVJfRk9STUFUX0JMT0I7CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CisgICAg
ICAgICAgICByZXR1cm4gQUhBUkRXQVJFQlVGRkVSX0ZPUk1BVF9EMTZfVU5PUk07CisgICAgICAg
IGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMjQ6CisgICAgICAgICAgICByZXR1cm4gQUhBUkRXQVJF
QlVGRkVSX0ZPUk1BVF9EMjRfVU5PUk07CisgICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lM
ODoKKyAgICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZGRVJfRk9STUFUX0QyNF9VTk9STV9T
OF9VSU5UOworICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyRjoKKyAgICAgICAgICAg
IHJldHVybiBBSEFSRFdBUkVCVUZGRVJfRk9STUFUX0QzMl9GTE9BVDsKKyAgICAgICAgY2FzZSBH
TF9ERVBUSDMyRl9TVEVOQ0lMODoKKyAgICAgICAgICAgIHJldHVybiBBSEFSRFdBUkVCVUZGRVJf
Rk9STUFUX0QzMl9GTE9BVF9TOF9VSU5UOworICAgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4
OgorICAgICAgICAgICAgcmV0dXJuIEFIQVJEV0FSRUJVRkZFUl9GT1JNQVRfUzhfVUlOVDsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdBUk4oKSA8PCAiVW5rbm93biBpbnRlcm5hbEZv
cm1hdDogIiA8PCBpbnRlcm5hbEZvcm1hdCA8PCAiLiBUcmVhdGluZyBhcyAwIjsKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgIH0KK30KKwogQUhhcmR3YXJlQnVmZmVyICpBTmF0aXZlV2luZG93
QnVmZmVyVG9BSGFyZHdhcmVCdWZmZXIoQU5hdGl2ZVdpbmRvd0J1ZmZlciAqd2luZG93QnVmZmVy
KQogewogICAgIHJldHVybiBvZmZzZXRQb2ludGVyPEFIYXJkd2FyZUJ1ZmZlcj4od2luZG93QnVm
ZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmRy
b2lkX3V0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5kcm9pZF91
dGlsLmgKaW5kZXggOTgyNmM0YWI2MTk4ZDQ2MTA5Y2VlOWZhNTY3MGMxMmE3YjliYWQ3YS4uYjFi
ODhiNWUxZmYxNDMwZGRjMDdiZGM2YjQ5Mzg4Nzk3YTVmMmE1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmRyb2lkX3V0aWwuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZHJvaWRfdXRpbC5oCkBAIC0zMCw2ICszMCw3
IEBAIHZvaWQgR2V0QU5hdGl2ZVdpbmRvd0J1ZmZlclByb3BlcnRpZXMoY29uc3QgQU5hdGl2ZVdp
bmRvd0J1ZmZlciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgKmRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KnBpeGVsRm9ybWF0KTsKIEdMZW51bSBOYXRpdmVQaXhlbEZvcm1hdFRvR0xJbnRlcm5hbEZvcm1h
dChpbnQgcGl4ZWxGb3JtYXQpOworaW50IEdMSW50ZXJuYWxGb3JtYXRUb05hdGl2ZVBpeGVsRm9y
bWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CiAKIEFIYXJkd2FyZUJ1ZmZlciAqQU5hdGl2ZVdp
bmRvd0J1ZmZlclRvQUhhcmR3YXJlQnVmZmVyKEFOYXRpdmVXaW5kb3dCdWZmZXIgKndpbmRvd0J1
ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
Yml0c2V0X3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNl
dF91dGlscy5oCmluZGV4IDBkMDRhODAwOGI4ZDIzM2FjY2JlOWE1YTYzZmE5MWM2ZTZkMDFhZGQu
LjE4ODJlN2Q1MzZlZWY4Y2I1NjcyMjQzOTYwZjZkOWQ0NWVhNDE1ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYml0c2V0X3V0aWxzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHMuaApAQCAtNDk0LDEx
ICs0OTQsOCBAQCBzdGQ6OnNpemVfdCBCaXRTZXRUPE4sIEJpdHNULCBQYXJhbVQ+OjpJdGVyYXRv
cjo6Z2V0TmV4dEJpdCgpCiB0ZW1wbGF0ZSA8c2l6ZV90IE4+CiB1c2luZyBCaXRTZXQzMiA9IEJp
dFNldFQ8TiwgdWludDMyX3Q+OwogCi0vLyBTY2FuRm9yd2FyZCBmb3IgNjQtYml0cyByZXF1aXJl
cyBhIDY0LWJpdCBpbXBsZW1lbnRhdGlvbi4KLSNpZiBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9D
UFUpCiB0ZW1wbGF0ZSA8c2l6ZV90IE4+CiB1c2luZyBCaXRTZXQ2NCA9IEJpdFNldFQ8TiwgdWlu
dDY0X3Q+OwotI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUpCiAKIG5hbWVz
cGFjZSBwcml2CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL2JpdHNldF91dGlsc191bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbW9uL2JpdHNldF91dGlsc191bml0dGVzdC5jcHAKaW5kZXggN2UzN2FkNDBhNzEyZjc4
MDgwNzQ0MzhkZDRkZTY5MTA1YjY1NjAwMy4uZjZiODRjYzQ4ZTg3MDEzMDc5YzUwY2JiYTUwNWYw
MjI1ODM4MDg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9iaXRzZXRfdXRpbHNfdW5pdHRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vYml0c2V0X3V0aWxzX3VuaXR0ZXN0LmNwcApAQCAtMTUsMTQgKzE1LDIwIEBA
IHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKIAogbmFtZXNwYWNlCiB7Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KIGNsYXNzIEJpdFNldFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAogewogICBwcm90
ZWN0ZWQ6Ci0gICAgQml0U2V0PDEyPiBtQml0czsKKyAgICBUIG1CaXRzOworICAgIHR5cGVkZWYg
VCBCaXRTZXQ7CiB9OwogCi1URVNUX0YoQml0U2V0VGVzdCwgQmFzaWMpCit1c2luZyBCaXRTZXRU
eXBlcyA9IDo6dGVzdGluZzo6VHlwZXM8Qml0U2V0PDEyPiwgQml0U2V0MzI8MTI+LCBCaXRTZXQ2
NDwxMj4+OworVFlQRURfVEVTVF9TVUlURShCaXRTZXRUZXN0LCBCaXRTZXRUeXBlcyk7CisKK1RZ
UEVEX1RFU1QoQml0U2V0VGVzdCwgQmFzaWMpCiB7CisgICAgVHlwZVBhcmFtIG1CaXRzID0gdGhp
cy0+bUJpdHM7CiAgICAgRVhQRUNUX0ZBTFNFKG1CaXRzLmFsbCgpKTsKICAgICBFWFBFQ1RfRkFM
U0UobUJpdHMuYW55KCkpOwogICAgIEVYUEVDVF9UUlVFKG1CaXRzLm5vbmUoKSk7CkBAIC05Niw4
ICsxMDIsOSBAQCBURVNUX0YoQml0U2V0VGVzdCwgQmFzaWMpCiAgICAgRVhQRUNUX0VRKG1CaXRz
LmZsaXAoMTMpLmJpdHMoKSAmIH5rTWFzaywgMHUpOwogfQogCi1URVNUX0YoQml0U2V0VGVzdCwg
Qml0d2lzZU9wZXJhdG9ycykKK1RZUEVEX1RFU1QoQml0U2V0VGVzdCwgQml0d2lzZU9wZXJhdG9y
cykKIHsKKyAgICBUeXBlUGFyYW0gbUJpdHMgPSB0aGlzLT5tQml0czsKICAgICAvLyBVc2UgYSB2
YWx1ZSB0aGF0IGhhcyBhIDEgaW4gdGhlIDEydGggYW5kIDEzdGggYml0cywgdG8gbWFrZSBzdXJl
IG1hc2tpbmcgdG8gZXhhY3RseSAxMiBiaXRzCiAgICAgLy8gZG9lcyBub3QgaGF2ZSBhbiBvZmYt
Ynktb25lIGVycm9yLgogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBrU2VsZlZhbHVlICA9IDB4RjlF
NDsKQEAgLTExMiwxMCArMTE5LDEwIEBAIFRFU1RfRihCaXRTZXRUZXN0LCBCaXR3aXNlT3BlcmF0
b3JzKQogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBrU2VsZlNoaWZ0ZWRSaWdodCA9IGtTZWxmTWFz
a2VkVmFsdWUgPj4ga1NoaWZ0ICYga01hc2s7CiAKICAgICBtQml0cyB8PSBrU2VsZlZhbHVlOwot
ICAgIEJpdFNldDwxMj4gb3RoZXIoa090aGVyVmFsdWUpOwotICAgIEJpdFNldDwxMj4gYW5kZWQo
a1NlbGZNYXNrZWRWYWx1ZSAmIGtPdGhlck1hc2tlZFZhbHVlKTsKLSAgICBCaXRTZXQ8MTI+IG9y
ZWQoa1NlbGZNYXNrZWRWYWx1ZSB8IGtPdGhlck1hc2tlZFZhbHVlKTsKLSAgICBCaXRTZXQ8MTI+
IHhvcmVkKGtTZWxmTWFza2VkVmFsdWUgXiBrT3RoZXJNYXNrZWRWYWx1ZSk7CisgICAgdHlwZW5h
bWUgVGVzdEZpeHR1cmU6OkJpdFNldCBvdGhlcihrT3RoZXJWYWx1ZSk7CisgICAgdHlwZW5hbWUg
VGVzdEZpeHR1cmU6OkJpdFNldCBhbmRlZChrU2VsZk1hc2tlZFZhbHVlICYga090aGVyTWFza2Vk
VmFsdWUpOworICAgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpCaXRTZXQgb3JlZChrU2VsZk1hc2tl
ZFZhbHVlIHwga090aGVyTWFza2VkVmFsdWUpOworICAgIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpC
aXRTZXQgeG9yZWQoa1NlbGZNYXNrZWRWYWx1ZSBeIGtPdGhlck1hc2tlZFZhbHVlKTsKIAogICAg
IEVYUEVDVF9FUShtQml0cy5iaXRzKCksIGtTZWxmTWFza2VkVmFsdWUpOwogICAgIEVYUEVDVF9F
UShvdGhlci5iaXRzKCksIGtPdGhlck1hc2tlZFZhbHVlKTsKQEAgLTEzNywxOCArMTQ0LDE4IEBA
IFRFU1RfRihCaXRTZXRUZXN0LCBCaXR3aXNlT3BlcmF0b3JzKQogCiAgICAgbUJpdHMgXj0gb3Ro
ZXI7CiAgICAgbUJpdHMgXj0gYW5kZWQ7Ci0gICAgRVhQRUNUX0VRKG1CaXRzLCBCaXRTZXQ8MTI+
KGtTZWxmVmFsdWUpKTsKKyAgICBFWFBFQ1RfRVEobUJpdHMsIHR5cGVuYW1lIFRlc3RGaXh0dXJl
OjpCaXRTZXQoa1NlbGZWYWx1ZSkpOwogCi0gICAgRVhQRUNUX0VRKG1CaXRzIDw8IGtTaGlmdCwg
Qml0U2V0PDEyPihrU2VsZlNoaWZ0ZWRMZWZ0KSk7Ci0gICAgRVhQRUNUX0VRKG1CaXRzID4+IGtT
aGlmdCwgQml0U2V0PDEyPihrU2VsZlNoaWZ0ZWRSaWdodCkpOworICAgIEVYUEVDVF9FUShtQml0
cyA8PCBrU2hpZnQsIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpCaXRTZXQoa1NlbGZTaGlmdGVkTGVm
dCkpOworICAgIEVYUEVDVF9FUShtQml0cyA+PiBrU2hpZnQsIHR5cGVuYW1lIFRlc3RGaXh0dXJl
OjpCaXRTZXQoa1NlbGZTaGlmdGVkUmlnaHQpKTsKIAogICAgIG1CaXRzIDw8PSBrU2hpZnQ7Ci0g
ICAgRVhQRUNUX0VRKG1CaXRzLCBCaXRTZXQ8MTI+KGtTZWxmU2hpZnRlZExlZnQpKTsKKyAgICBF
WFBFQ1RfRVEobUJpdHMsIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpCaXRTZXQoa1NlbGZTaGlmdGVk
TGVmdCkpOwogICAgIEVYUEVDVF9FUShtQml0cy5iaXRzKCkgJiB+a01hc2ssIDB1KTsKIAotICAg
IG1CaXRzID0gQml0U2V0PDEyPihrU2VsZlZhbHVlKTsKKyAgICBtQml0cyA9IHR5cGVuYW1lIFRl
c3RGaXh0dXJlOjpCaXRTZXQoa1NlbGZWYWx1ZSk7CiAgICAgbUJpdHMgPj49IGtTaGlmdDsKLSAg
ICBFWFBFQ1RfRVEobUJpdHMsIEJpdFNldDwxMj4oa1NlbGZTaGlmdGVkUmlnaHQpKTsKKyAgICBF
WFBFQ1RfRVEobUJpdHMsIHR5cGVuYW1lIFRlc3RGaXh0dXJlOjpCaXRTZXQoa1NlbGZTaGlmdGVk
UmlnaHQpKTsKICAgICBFWFBFQ1RfRVEobUJpdHMuYml0cygpICYgfmtNYXNrLCAwdSk7CiAKICAg
ICBtQml0cyB8PSBrU2VsZk1hc2tlZFZhbHVlOwpAQCAtMTU3LDE1ICsxNjQsMjEgQEAgVEVTVF9G
KEJpdFNldFRlc3QsIEJpdHdpc2VPcGVyYXRvcnMpCiAgICAgRVhQRUNUX0VRKG1CaXRzLmJpdHMo
KSAmIH5rTWFzaywgMHUpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIEJpdFNl
dEl0ZXJhdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0CiB7CiAgIHByb3RlY3RlZDoKLSAg
ICBCaXRTZXQ8NDA+IG1TdGF0ZUJpdHM7CisgICAgVCBtU3RhdGVCaXRzOworICAgIHR5cGVkZWYg
VCBCaXRTZXQ7CiB9OwogCit1c2luZyBCaXRTZXRJdGVyYXRvclR5cGVzID0gOjp0ZXN0aW5nOjpU
eXBlczxCaXRTZXQ8NDA+LCBCaXRTZXQ2NDw0MD4+OworVFlQRURfVEVTVF9TVUlURShCaXRTZXRJ
dGVyYXRvclRlc3QsIEJpdFNldEl0ZXJhdG9yVHlwZXMpOworCiAvLyBTaW1wbGUgaXRlcmF0b3Ig
dGVzdC4KLVRFU1RfRihCaXRTZXRJdGVyYXRvclRlc3QsIEl0ZXJhdG9yKQorVFlQRURfVEVTVChC
aXRTZXRJdGVyYXRvclRlc3QsIEl0ZXJhdG9yKQogeworICAgIFR5cGVQYXJhbSBtU3RhdGVCaXRz
ID0gdGhpcy0+bVN0YXRlQml0czsKICAgICBzdGQ6OnNldDxzaXplX3Q+IG9yaWdpbmFsVmFsdWVz
OwogICAgIG9yaWdpbmFsVmFsdWVzLmluc2VydCgyKTsKICAgICBvcmlnaW5hbFZhbHVlcy5pbnNl
cnQoNik7CkBAIC0xODksOCArMjAyLDkgQEAgVEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgSXRl
cmF0b3IpCiB9CiAKIC8vIFRlc3QgYW4gZW1wdHkgaXRlcmF0b3IuCi1URVNUX0YoQml0U2V0SXRl
cmF0b3JUZXN0LCBFbXB0eVNldCkKK1RZUEVEX1RFU1QoQml0U2V0SXRlcmF0b3JUZXN0LCBFbXB0
eVNldCkKIHsKKyAgICBUeXBlUGFyYW0gbVN0YXRlQml0cyA9IHRoaXMtPm1TdGF0ZUJpdHM7CiAg
ICAgLy8gV2UgZG9uJ3QgdXNlIHRoZSBGQUlMIGd0ZXN0IG1hY3JvIGhlcmUgc2luY2UgaXQgcmV0
dXJucyBpbW1lZGlhdGVseSwKICAgICAvLyBjYXVzaW5nIGFuIHVucmVhY2hhYmxlIGNvZGUgd2Fy
bmluZyBpbiBNU1ZTCiAgICAgYm9vbCBzYXdCaXQgPSBmYWxzZTsKQEAgLTIwMyw5ICsyMTcsMTAg
QEAgVEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgRW1wdHlTZXQpCiB9CiAKIC8vIFRlc3QgaXRl
cmF0aW5nIGEgcmVzdWx0IG9mIGNvbWJpbmluZyB0d28gYml0c2V0cy4KLVRFU1RfRihCaXRTZXRJ
dGVyYXRvclRlc3QsIE5vbkxWYWx1ZUJpdHNldCkKK1RZUEVEX1RFU1QoQml0U2V0SXRlcmF0b3JU
ZXN0LCBOb25MVmFsdWVCaXRzZXQpCiB7Ci0gICAgQml0U2V0PDQwPiBvdGhlckJpdHM7CisgICAg
VHlwZVBhcmFtIG1TdGF0ZUJpdHMgPSB0aGlzLT5tU3RhdGVCaXRzOworICAgIHR5cGVuYW1lIFRl
c3RGaXh0dXJlOjpCaXRTZXQgb3RoZXJCaXRzOwogCiAgICAgbVN0YXRlQml0cy5zZXQoMSk7CiAg
ICAgbVN0YXRlQml0cy5zZXQoMik7CkBAIC0yMTksNyArMjM0LDcgQEAgVEVTVF9GKEJpdFNldEl0
ZXJhdG9yVGVzdCwgTm9uTFZhbHVlQml0c2V0KQogCiAgICAgc3RkOjpzZXQ8c2l6ZV90PiBzZWVu
Qml0czsKIAotICAgIGFuZ2xlOjpCaXRTZXQ8NDA+IG1hc2tlZEJpdHMgPSAobVN0YXRlQml0cyAm
IG90aGVyQml0cyk7CisgICAgdHlwZW5hbWUgVGVzdEZpeHR1cmU6OkJpdFNldCBtYXNrZWRCaXRz
ID0gKG1TdGF0ZUJpdHMgJiBvdGhlckJpdHMpOwogICAgIGZvciAoc2l6ZV90IGJpdCA6IG1hc2tl
ZEJpdHMpCiAgICAgewogICAgICAgICBFWFBFQ1RfRVEoMHUsIHNlZW5CaXRzLmNvdW50KGJpdCkp
OwpAQCAtMjMyLDggKzI0Nyw5IEBAIFRFU1RfRihCaXRTZXRJdGVyYXRvclRlc3QsIE5vbkxWYWx1
ZUJpdHNldCkKIH0KIAogLy8gVGVzdCBiaXQgYXNzaWdubWVudHMuCi1URVNUX0YoQml0U2V0SXRl
cmF0b3JUZXN0LCBCaXRBc3NpZ25tZW50KQorVFlQRURfVEVTVChCaXRTZXRJdGVyYXRvclRlc3Qs
IEJpdEFzc2lnbm1lbnQpCiB7CisgICAgVHlwZVBhcmFtIG1TdGF0ZUJpdHMgPSB0aGlzLT5tU3Rh
dGVCaXRzOwogICAgIHN0ZDo6c2V0PHNpemVfdD4gb3JpZ2luYWxWYWx1ZXM7CiAgICAgb3JpZ2lu
YWxWYWx1ZXMuaW5zZXJ0KDIpOwogICAgIG9yaWdpbmFsVmFsdWVzLmluc2VydCg2KTsKQEAgLTI1
Miw4ICsyNjgsOSBAQCBURVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBCaXRBc3NpZ25tZW50KQog
fQogCiAvLyBUZXN0cyBhZGRpbmcgYml0cyB0byB0aGUgaXRlcmF0b3IgZHVyaW5nIGl0ZXJhdGlv
bi4KLVRFU1RfRihCaXRTZXRJdGVyYXRvclRlc3QsIFNldExhdGVyQml0KQorVFlQRURfVEVTVChC
aXRTZXRJdGVyYXRvclRlc3QsIFNldExhdGVyQml0KQogeworICAgIFR5cGVQYXJhbSBtU3RhdGVC
aXRzICAgICAgICAgICAgPSB0aGlzLT5tU3RhdGVCaXRzOwogICAgIHN0ZDo6c2V0PHNpemVfdD4g
ZXhwZWN0ZWRWYWx1ZXMgPSB7MSwgMywgNSwgNywgOX07CiAgICAgbVN0YXRlQml0cy5zZXQoMSk7
CiAKQEAgLTI3Niw4ICsyOTMsOSBAQCBURVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBTZXRMYXRl
ckJpdCkKIH0KIAogLy8gVGVzdHMgcmVtb3ZpbmcgYml0cyBmcm9tIHRoZSBpdGVyYXRvciBkdXJp
bmcgaXRlcmF0aW9uLgotVEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgUmVzZXRMYXRlckJpdCkK
K1RZUEVEX1RFU1QoQml0U2V0SXRlcmF0b3JUZXN0LCBSZXNldExhdGVyQml0KQogeworICAgIFR5
cGVQYXJhbSBtU3RhdGVCaXRzICAgICAgICAgICAgPSB0aGlzLT5tU3RhdGVCaXRzOwogICAgIHN0
ZDo6c2V0PHNpemVfdD4gZXhwZWN0ZWRWYWx1ZXMgPSB7MSwgMywgNSwgNywgOX07CiAKICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDw9IDk7ICsraW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwCmluZGV4IGMyNjgxNWQzYmExOGE5ZDg5
ZGEzYzFhYzBkM2EzYjBkZGFiY2I5MWUuLjI5MzUwOTNiZWZkNTcxZjEyOWJjMDNlNjQyMGMyNjY2
ODRmNDBiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
ZGVidWcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgU2hvdWxkQ3JlYXRlTG9nTWVzc2FnZShMb2dTZXZl
cml0eSBzZXZlcml0eSkKICNpZiBkZWZpbmVkKEFOR0xFX1RSQUNFX0VOQUJMRUQpCiAgICAgcmV0
dXJuIHRydWU7CiAjZWxpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRTKQotICAgIHJldHVy
biBzZXZlcml0eSAhPSBMT0dfRVZFTlQ7CisgICAgcmV0dXJuIHNldmVyaXR5ID09IExPR19GQVRB
TCB8fCBzZXZlcml0eSA9PSBMT0dfRVJSIHx8IHNldmVyaXR5ID09IExPR19XQVJOOwogI2Vsc2UK
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI1NCw3ICsyNTQsOCBAQCB2b2lkIFRyYWNl
KExvZ1NldmVyaXR5IHNldmVyaXR5LCBjb25zdCBjaGFyICptZXNzYWdlKQogICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBvc19sb2dfd2l0aF90eXBlKE9TX0xPR19ERUZBVUxULCBhcHBs
ZV9sb2dfdHlwZSwgIkFOR0xFOiAlczogJXNcbiIsIExvZ1NldmVyaXR5TmFtZShzZXZlcml0eSks
IHN0ci5jX3N0cigpKTsKKyAgICAgICAgICAgIG9zX2xvZ193aXRoX3R5cGUoT1NfTE9HX0RFRkFV
TFQsIGFwcGxlX2xvZ190eXBlLCAiQU5HTEU6ICVzOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTG9nU2V2ZXJpdHlOYW1lKHNldmVyaXR5KSwgc3RyLmNfc3RyKCkpOwogICAg
ICAgICB9CiAjZWxzZQogICAgICAgICAvLyBOb3RlOiB3ZSB1c2UgZnByaW50ZiBiZWNhdXNlIDxp
b3N0cmVhbT4gaW5jbHVkZXMgc3RhdGljIGluaXRpYWxpemVycy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZnVjaHNpYV9lZ2wvQlVJTEQuZ24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Z1Y2hzaWFfZWdsL0JVSUxELmduCmluZGV4
IDg0YTEyMzE5MDIzZWU0M2FiNmJiMDUxZDg1NTExYzg3ZGY0NDBlMDIuLmJiYTc2ZWQwYTI4ZTI0
YzZmYzhlOWI4ZDBjMWRmZWY3NGQwMTAyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vZnVjaHNpYV9lZ2wvQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi9mdWNoc2lhX2VnbC9CVUlMRC5nbgpAQCAtMTEsMjAgKzEx
LDEyIEBAIGNvbmZpZygiY29uZmlnIikgewogfQogCiBhbmdsZV9zaGFyZWRfbGlicmFyeSgiZnVj
aHNpYV9lZ2wiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgImZ1Y2hzaWFfZWdsLmMiLAotICBdCi0g
IHB1YmxpYyA9IFsKLSAgICAiZnVjaHNpYV9lZ2wuaCIsCi0gIF0KLSAgcHVibGljX2NvbmZpZ3Mg
PSBbIjpjb25maWciXQotICBkZXBzID0gWwotICAgICI6YmFja2VuZCIsCi0gIF0KKyAgc291cmNl
cyA9IFsgImZ1Y2hzaWFfZWdsLmMiIF0KKyAgcHVibGljID0gWyAiZnVjaHNpYV9lZ2wuaCIgXQor
ICBwdWJsaWNfY29uZmlncyA9IFsgIjpjb25maWciIF0KKyAgZGVwcyA9IFsgIjpiYWNrZW5kIiBd
CiB9CiAKIGFuZ2xlX3NvdXJjZV9zZXQoImJhY2tlbmQiKSB7Ci0gIHB1YmxpYyA9IFsKLSAgICAi
ZnVjaHNpYV9lZ2xfYmFja2VuZC5oIiwKLSAgXQorICBwdWJsaWMgPSBbICJmdWNoc2lhX2VnbF9i
YWNrZW5kLmgiIF0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vbWF0aHV0aWwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9t
YXRodXRpbC5jcHAKaW5kZXggOWEyYzJlYzg2YmQ1MGQ1YWE0ZmE3NGQxNGViMzFjZTgwODFhYTZh
MC4uMzA2Y2RlMTIxMGJjMjMzN2FmM2EwMjQ2ODBkOWRlYjAzNWQyMGJiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbC5jcHAKQEAgLTc5LDE1ICs3
OSw0IEBAIHZvaWQgY29udmVydDk5OUU1dG9SR0JGbG9hdHModW5zaWduZWQgaW50IGlucHV0LCBm
bG9hdCAqcmVkLCBmbG9hdCAqZ3JlZW4sIGZsb2F0CiAgICAgICAgIGlucHV0RGF0YS0+QiAqIHBv
dygyLjBmLCAoaW50KWlucHV0RGF0YS0+RSAtIGdfc2hhcmVkZXhwX2JpYXMgLSBnX3NoYXJlZGV4
cF9tYW50aXNzYWJpdHMpOwogfQogCi1pbnQgQml0Q291bnRQb2x5ZmlsbCh1aW50MzJfdCBiaXRz
KQotewotICAgIGludCBvbmVzID0gMDsKLSAgICB3aGlsZSAoYml0cykKLSAgICB7Ci0gICAgICAg
IG9uZXMgKz0gYm9vbChiaXRzICYgMSk7Ci0gICAgICAgIGJpdHMgPj49IDE7Ci0gICAgfQotICAg
IHJldHVybiBvbmVzOwotfQotCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuaAppbmRleCA1YmRlMGRhMzk4MjdkOTQyM2E3
MmMwMTUwNTczYmFlYjY0YTRkZWExLi5mNDdkMjE3NTc0NDgzNTUxMTI1ZjFmODdmODM2ZDIyYzUy
ZmQxZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21h
dGh1dGlsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRp
bC5oCkBAIC05ODEsNTQgKzk4MSw5NiBAQCBpbmxpbmUgdWludDMyX3QgQml0ZmllbGRSZXZlcnNl
KHVpbnQzMl90IHZhbHVlKQogfQogCiAvLyBDb3VudCB0aGUgMSBiaXRzLgotI2lmIGRlZmluZWQo
X01TQ19WRVIpICYmIChkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01fWDY0KSkKLSMgICAg
ZGVmaW5lIEFOR0xFX0hBU19CSVRDT1VOVF8zMgorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFk
ZWZpbmVkKF9fY2xhbmdfXykKKyMgICAgaWYgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9N
X1g2NCkKK25hbWVzcGFjZSBwcml2Cit7CisvLyBDaGVjayBQT1BDTlQgaW5zdHJ1Y3Rpb24gc3Vw
cG9ydCBhbmQgY2FjaGUgdGhlIHJlc3VsdC4KKy8vIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29t
L2VuLXVzL2NwcC9pbnRyaW5zaWNzL3BvcGNudDE2LXBvcGNudC1wb3BjbnQ2NCNyZW1hcmtzCitz
dGF0aWMgY29uc3QgYm9vbCBrSGFzUG9wY250ID0gW10geworICAgIGludCBpbmZvWzRdOworICAg
IF9fY3B1aWQoJmluZm9bMF0sIDEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihpbmZv
WzJdICYgMHg4MDAwMDApOworfSgpOworfSAgLy8gbmFtZXNwYWNlIHByaXYKKworLy8gUG9seWZp
bGxzIGZvciB4ODYveDY0IENQVXMgd2l0aG91dCBQT1BDTlQuCisvLyBodHRwczovL2dyYXBoaWNz
LnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI0NvdW50Qml0c1NldFBhcmFsbGVs
CitpbmxpbmUgaW50IEJpdENvdW50UG9seWZpbGwodWludDMyX3QgYml0cykKK3sKKyAgICBiaXRz
ID0gYml0cyAtICgoYml0cyA+PiAxKSAmIDB4NTU1NTU1NTUpOworICAgIGJpdHMgPSAoYml0cyAm
IDB4MzMzMzMzMzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7CisgICAgYml0cyA9ICgo
Yml0cyArIChiaXRzID4+IDQpICYgMHgwRjBGMEYwRikgKiAweDAxMDEwMTAxKSA+PiAyNDsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihiaXRzKTsKK30KKworaW5saW5lIGludCBCaXRDb3Vu
dFBvbHlmaWxsKHVpbnQ2NF90IGJpdHMpCit7CisgICAgYml0cyA9IGJpdHMgLSAoKGJpdHMgPj4g
MSkgJiAweDU1NTU1NTU1NTU1NTU1NTV1bGwpOworICAgIGJpdHMgPSAoYml0cyAmIDB4MzMzMzMz
MzMzMzMzMzMzM3VsbCkgKyAoKGJpdHMgPj4gMikgJiAweDMzMzMzMzMzMzMzMzMzMzN1bGwpOwor
ICAgIGJpdHMgPSAoKGJpdHMgKyAoYml0cyA+PiA0KSAmIDB4MEYwRjBGMEYwRjBGMEYwRnVsbCkg
KiAweDAxMDEwMTAxMDEwMTAxMDF1bGwpID4+IDU2OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KGJpdHMpOworfQorCiBpbmxpbmUgaW50IEJpdENvdW50KHVpbnQzMl90IGJpdHMpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oX19wb3BjbnQoYml0cykpOworICAgIGlmIChwcml2
OjprSGFzUG9wY250KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oX19w
b3BjbnQoYml0cykpOworICAgIH0KKyAgICByZXR1cm4gQml0Q291bnRQb2x5ZmlsbChiaXRzKTsK
IH0KLSMgICAgaWYgZGVmaW5lZChfTV9YNjQpCi0jICAgICAgICBkZWZpbmUgQU5HTEVfSEFTX0JJ
VENPVU5UXzY0CisKIGlubGluZSBpbnQgQml0Q291bnQodWludDY0X3QgYml0cykKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihfX3BvcGNudDY0KGJpdHMpKTsKKyAgICBpZiAocHJpdjo6
a0hhc1BvcGNudCkKKyAgICB7CisjICAgICAgICBpZiBkZWZpbmVkKF9NX1g2NCkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oX19wb3BjbnQ2NChiaXRzKSk7CisjICAgICAgICBlbHNl
ICAgLy8geDg2CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KF9fcG9wY250KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihiaXRzID4+IDMyKSkgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3BvcGNudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cykpKTsKKyMgICAgICAg
IGVuZGlmICAvLyBkZWZpbmVkKF9NX1g2NCkKKyAgICB9CisgICAgcmV0dXJuIEJpdENvdW50UG9s
eWZpbGwoYml0cyk7CiB9Ci0jICAgIGVuZGlmICAvLyBkZWZpbmVkKF9NX1g2NCkKLSNlbmRpZiAg
ICAgIC8vIGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfTV9YNjQpCiAKLSNpZiBkZWZpbmVk
KEFOR0xFX1BMQVRGT1JNX1BPU0lYKQotIyAgICBkZWZpbmUgQU5HTEVfSEFTX0JJVENPVU5UXzMy
CisjICAgIGVsaWYgZGVmaW5lZChfTV9BUk0pIHx8IGRlZmluZWQoX01fQVJNNjQpCisKKy8vIE1T
VkMncyBfQ291bnRPbmVCaXRzKiBpbnRyaW5zaWNzIGFyZSBub3QgZGVmaW5lZCBmb3IgQVJNNjQs
IG1vcmVvdmVyIHRoZXkgZG8gbm90IHVzZSBkZWRpY2F0ZWQKKy8vIE5FT04gaW5zdHJ1Y3Rpb25z
LgorCiBpbmxpbmUgaW50IEJpdENvdW50KHVpbnQzMl90IGJpdHMpCiB7Ci0gICAgcmV0dXJuIF9f
YnVpbHRpbl9wb3Bjb3VudChiaXRzKTsKKyAgICAvLyBjYXN0IGJpdHMgdG8gOHg4IGRhdGF0eXBl
IGFuZCB1c2UgVkNOVCBvbiBpdAorICAgIGNvbnN0IHVpbnQ4eDhfdCB2c3VtID0gdmNudF91OCh2
Y3JlYXRlX3U4KHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXRzKSkpOworCisgICAgLy8gcGFpcndp
c2Ugc3VtczogOHg4IC0+IDE2eDQgLT4gMzJ4MgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHZnZXRfbGFuZV91MzIodnBhZGRsX3UxNih2cGFkZGxfdTgodnN1bSkpLCAwKSk7CiB9CiAKLSMg
ICAgaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQotIyAgICAgICAgZGVmaW5lIEFOR0xF
X0hBU19CSVRDT1VOVF82NAogaW5saW5lIGludCBCaXRDb3VudCh1aW50NjRfdCBiaXRzKQogewot
ICAgIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnRsbChiaXRzKTsKLX0KLSMgICAgZW5kaWYgIC8v
IGRlZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKLSNlbmRpZiAgICAgIC8vIGRlZmluZWQoQU5H
TEVfUExBVEZPUk1fUE9TSVgpCisgICAgLy8gY2FzdCBiaXRzIHRvIDh4OCBkYXRhdHlwZSBhbmQg
dXNlIFZDTlQgb24gaXQKKyAgICBjb25zdCB1aW50OHg4X3QgdnN1bSA9IHZjbnRfdTgodmNyZWF0
ZV91OChiaXRzKSk7CiAKLWludCBCaXRDb3VudFBvbHlmaWxsKHVpbnQzMl90IGJpdHMpOworICAg
IC8vIHBhaXJ3aXNlIHN1bXM6IDh4OCAtPiAxNng0IC0+IDMyeDIgLT4gNjR4MQorICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHZnZXRfbGFuZV91NjQodnBhZGRsX3UzMih2cGFkZGxfdTE2KHZw
YWRkbF91OCh2c3VtKSkpLCAwKSk7Cit9CisjICAgIGVuZGlmICAvLyBkZWZpbmVkKF9NX0lYODYp
IHx8IGRlZmluZWQoX01fWDY0KQorI2VuZGlmICAgICAgLy8gZGVmaW5lZChfTVNDX1ZFUikgJiYg
IWRlZmluZWQoX19jbGFuZ19fKQogCi0jaWYgIWRlZmluZWQoQU5HTEVfSEFTX0JJVENPVU5UXzMy
KQotaW5saW5lIGludCBCaXRDb3VudChjb25zdCB1aW50MzJfdCBiaXRzKQorI2lmIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fUE9TSVgpIHx8IGRlZmluZWQoX19jbGFuZ19fKQoraW5saW5lIGludCBC
aXRDb3VudCh1aW50MzJfdCBiaXRzKQogewotICAgIHJldHVybiBCaXRDb3VudFBvbHlmaWxsKGJp
dHMpOworICAgIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnQoYml0cyk7CiB9Ci0jZW5kaWYgIC8v
ICFkZWZpbmVkKEFOR0xFX0hBU19CSVRDT1VOVF8zMikKIAotI2lmICFkZWZpbmVkKEFOR0xFX0hB
U19CSVRDT1VOVF82NCkKLWlubGluZSBpbnQgQml0Q291bnQoY29uc3QgdWludDY0X3QgYml0cykK
K2lubGluZSBpbnQgQml0Q291bnQodWludDY0X3QgYml0cykKIHsKLSAgICByZXR1cm4gQml0Q291
bnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpdHMgPj4gMzIpKSArIEJpdENvdW50KHN0YXRpY19j
YXN0PHVpbnQzMl90PihiaXRzKSk7CisgICAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudGxsKGJp
dHMpOwogfQotI2VuZGlmICAvLyAhZGVmaW5lZChBTkdMRV9IQVNfQklUQ09VTlRfNjQpCi0jdW5k
ZWYgQU5HTEVfSEFTX0JJVENPVU5UXzMyCi0jdW5kZWYgQU5HTEVfSEFTX0JJVENPVU5UXzY0Cisj
ZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fUE9TSVgpIHx8IGRlZmluZWQoX19jbGFu
Z19fKQogCiBpbmxpbmUgaW50IEJpdENvdW50KHVpbnQ4X3QgYml0cykKIHsKQEAgLTEwNTIsMTcg
KzEwOTQsMjggQEAgaW5saW5lIHVuc2lnbmVkIGxvbmcgU2NhbkZvcndhcmQodWludDMyX3QgYml0
cykKICAgICByZXR1cm4gZmlyc3RCaXRJbmRleDsKIH0KIAotIyAgICBpZiBkZWZpbmVkKEFOR0xF
X0lTXzY0X0JJVF9DUFUpCiBpbmxpbmUgdW5zaWduZWQgbG9uZyBTY2FuRm9yd2FyZCh1aW50NjRf
dCBiaXRzKQogewogICAgIEFTU0VSVChiaXRzICE9IDB1KTsKICAgICB1bnNpZ25lZCBsb25nIGZp
cnN0Qml0SW5kZXggPSAwdWw7Ci0gICAgdW5zaWduZWQgY2hhciByZXQgICAgICAgICAgID0gX0Jp
dFNjYW5Gb3J3YXJkNjQoJmZpcnN0Qml0SW5kZXgsIGJpdHMpOworIyAgICBpZiBkZWZpbmVkKEFO
R0xFX0lTXzY0X0JJVF9DUFUpCisgICAgdW5zaWduZWQgY2hhciByZXQgPSBfQml0U2NhbkZvcndh
cmQ2NCgmZmlyc3RCaXRJbmRleCwgYml0cyk7CisjICAgIGVsc2UKKyAgICB1bnNpZ25lZCBjaGFy
IHJldDsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpdHMpID09IDApCisgICAgewor
ICAgICAgICByZXQgPSBfQml0U2NhbkZvcndhcmQoJmZpcnN0Qml0SW5kZXgsIHN0YXRpY19jYXN0
PHVpbnQzMl90PihiaXRzID4+IDMyKSk7CisgICAgICAgIGZpcnN0Qml0SW5kZXggKz0gMzJ1bDsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0ID0gX0JpdFNjYW5Gb3J3YXJkKCZm
aXJzdEJpdEluZGV4LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cykpOworICAgIH0KKyMgICAg
ZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKICAgICBBU1NFUlQocmV0ICE9
IDB1KTsKICAgICByZXR1cm4gZmlyc3RCaXRJbmRleDsKIH0KLSMgICAgZW5kaWYgIC8vIGRlZmlu
ZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKLSNlbmRpZiAgICAgIC8vIGRlZmluZWQoQU5HTEVfUExB
VEZPUk1fV0lORE9XUykKKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dT
KQogCiAjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9QT1NJWCkKIGlubGluZSB1bnNpZ25lZCBs
b25nIFNjYW5Gb3J3YXJkKHVpbnQzMl90IGJpdHMpCkBAIC0xMDcxLDE0ICsxMTI0LDE4IEBAIGlu
bGluZSB1bnNpZ25lZCBsb25nIFNjYW5Gb3J3YXJkKHVpbnQzMl90IGJpdHMpCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KF9fYnVpbHRpbl9jdHooYml0cykpOwogfQogCi0j
ICAgIGlmIGRlZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKIGlubGluZSB1bnNpZ25lZCBsb25n
IFNjYW5Gb3J3YXJkKHVpbnQ2NF90IGJpdHMpCiB7CiAgICAgQVNTRVJUKGJpdHMgIT0gMHUpOwor
IyAgICBpZiBkZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KF9fYnVpbHRpbl9jdHpsbChiaXRzKSk7Ci19CisjICAgIGVsc2UK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGJpdHMpID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gX19idWlsdGluX2N0eihzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cyA+PiAzMikpICsgMzIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19idWlsdGluX2N0
eihzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0cykpKTsKICMgICAgZW5kaWYgIC8vIGRlZmluZWQo
QU5HTEVfSVNfNjRfQklUX0NQVSkKLSNlbmRpZiAgICAgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZP
Uk1fUE9TSVgpCit9CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fUE9TSVgpCiAK
IGlubGluZSB1bnNpZ25lZCBsb25nIFNjYW5Gb3J3YXJkKHVpbnQ4X3QgYml0cykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWxfdW5pdHRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0
dGVzdC5jcHAKaW5kZXggZTM1NDMzNDBjZGIzYmU5YTFkZWE0NTQ1NGMwZmU2MGU0MGE2YWVkYy4u
NjBkZjZkMGE1MTcwYzAwOTMyODVkZmJhYjU2MDg3ZTZiNzExYWY4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0dGVzdC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0dGVzdC5j
cHAKQEAgLTI1OCwxMSArMjU4LDEyIEBAIFRFU1QoTWF0aFV0aWxUZXN0LCBCaXRDb3VudCkKICAg
ICBFWFBFQ1RfRVEoMzIsIGdsOjpCaXRDb3VudCgweEZGRkZGRkZGdSkpOwogICAgIEVYUEVDVF9F
USgxMCwgZ2w6OkJpdENvdW50KDB4MTcxMDMxMjF1KSk7CiAKLSNpZiBkZWZpbmVkKEFOR0xFX0lT
XzY0X0JJVF9DUFUpCiAgICAgRVhQRUNUX0VRKDAsIGdsOjpCaXRDb3VudChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oMHVsbCkpKTsKICAgICBFWFBFQ1RfRVEoMzIsIGdsOjpCaXRDb3VudChzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oMHhGRkZGRkZGRnVsbCkpKTsKICAgICBFWFBFQ1RfRVEoMTAsIGdsOjpC
aXRDb3VudChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMHgxNzEwMzEyMXVsbCkpKTsKLSNlbmRpZiAg
Ly8gZGVmaW5lZChBTkdMRV9JU182NF9CSVRfQ1BVKQorCisgICAgRVhQRUNUX0VRKDMzLCBnbDo6
Qml0Q291bnQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4RkZGRkZGRkY4MDAwMDAwMHVsbCkpKTsK
KyAgICBFWFBFQ1RfRVEoMTEsIGdsOjpCaXRDb3VudChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMHgx
NzEwMzEyMTgwMDAwMDAwdWxsKSkpOwogfQogCiAvLyBUZXN0IFNjYW5Gb3J3YXJkLCB3aGljaCBz
Y2FucyBmb3IgdGhlIGxlYXN0IHNpZ25pZmljYW50IDEgYml0IGZyb20gYSBub24temVybyBpbnRl
Z2VyLgpAQCAtMjcyLDExICsyNzMsMTMgQEAgVEVTVChNYXRoVXRpbFRlc3QsIFNjYW5Gb3J3YXJk
KQogICAgIEVYUEVDVF9FUSgxNnVsLCBnbDo6U2NhbkZvcndhcmQoMHg4MDAxMDAwMHUpKTsKICAg
ICBFWFBFQ1RfRVEoMzF1bCwgZ2w6OlNjYW5Gb3J3YXJkKDB4ODAwMDAwMDB1KSk7CiAKLSNpZiBk
ZWZpbmVkKEFOR0xFX0lTXzY0X0JJVF9DUFUpCiAgICAgRVhQRUNUX0VRKDB1bCwgZ2w6OlNjYW5G
b3J3YXJkKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxdWxsKSkpOwogICAgIEVYUEVDVF9FUSgxNnVs
LCBnbDo6U2NhbkZvcndhcmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDB4ODAwMTAwMDB1bGwpKSk7
CiAgICAgRVhQRUNUX0VRKDMxdWwsIGdsOjpTY2FuRm9yd2FyZChzdGF0aWNfY2FzdDx1aW50NjRf
dD4oMHg4MDAwMDAwMHVsbCkpKTsKLSNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9JU182NF9CSVRf
Q1BVKQorCisgICAgRVhQRUNUX0VRKDMydWwsIGdsOjpTY2FuRm9yd2FyZChzdGF0aWNfY2FzdDx1
aW50NjRfdD4oMHgxMDAwMDAwMDB1bGwpKSk7CisgICAgRVhQRUNUX0VRKDQ4dWwsIGdsOjpTY2Fu
Rm9yd2FyZChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMHg4MDAxMDAwMDAwMDAwMDAwdWxsKSkpOwor
ICAgIEVYUEVDVF9FUSg2M3VsLCBnbDo6U2NhbkZvcndhcmQoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KDB4ODAwMDAwMDAwMDAwMDAwMHVsbCkpKTsKIH0KIAogLy8gVGVzdCBTY2FuUmV2ZXJzZSwgd2hp
Y2ggc2NhbnMgZm9yIHRoZSBtb3N0IHNpZ25pZmljYW50IDEgYml0IGZyb20gYSBub24temVybyBp
bnRlZ2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9t
YXRyaXhfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0cml4
X3V0aWxzLmgKaW5kZXggNWIzNDYyMDQ1YzQ5ZDA2YmNlMjZjOTI3ZDkxMzI4ODlkZjVmMzE4Yy4u
N2NjYTdhOTQ2MWM5YzQ5ZWM5Yjc0Zjk4MmJmZmE3NWMzZWM3NDU5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRyaXhfdXRpbHMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdHJpeF91dGlscy5oCkBAIC0xMzQsNiAr
MTM0LDcgQEAgY2xhc3MgTWF0cml4CiAKICAgICBzdGQ6OnZlY3RvcjxUPiBlbGVtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1FbGVtZW50czsgfQogICAgIFQgKmRhdGEoKSB7IHJldHVybiBtRWxlbWVu
dHMuZGF0YSgpOyB9CisgICAgY29uc3QgVCAqY29uc3REYXRhKCkgY29uc3QgeyByZXR1cm4gbUVs
ZW1lbnRzLmRhdGEoKTsgfQogCiAgICAgTWF0cml4PFQ+IGNvbXBNdWx0KGNvbnN0IE1hdHJpeDxU
PiAmbWF0MSkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3BhY2tlZF9nbF9lbnVtcy5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9wYWNrZWRfZ2xfZW51bXMuanNvbgppbmRleCA5OTNhYmM5MTFjZTVmM2Nh
MmI5NmJlOTQ1NDQ3M2M3OWNjYmFmNmQwLi4zYzM4YzZlMDI0MTMwNGU3NzFhYzEyZjI0NzE3YTU5
ODkxOGU3MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L3BhY2tlZF9nbF9lbnVtcy5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vcGFja2VkX2dsX2VudW1zLmpzb24KQEAgLTI2Nyw3ICsyNjcsOSBAQAogICAgIH0sCiAg
ICAgIkhhbmRsZVR5cGUiOgogICAgIHsKLSAgICAgICAgIk9wYXF1ZUZkIjogIkdMX0hBTkRMRV9U
WVBFX09QQVFVRV9GRF9FWFQiCisgICAgICAgICJPcGFxdWVGZCI6ICJHTF9IQU5ETEVfVFlQRV9P
UEFRVUVfRkRfRVhUIiwKKyAgICAgICAgIlppcmNvblZtbyI6ICJHTF9IQU5ETEVfVFlQRV9aSVJD
T05fVk1PX0FOR0xFIiwKKyAgICAgICAgIlppcmNvbkV2ZW50IjogIkdMX0hBTkRMRV9UWVBFX1pJ
UkNPTl9FVkVOVF9BTkdMRSIKICAgICB9LAogICAgICJJbWFnZUxheW91dCI6CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMuY3Bw
CmluZGV4IGU2ODM2YmFjNmU1Yzg3NWNmNDU4YjkzZjVhY2M2NzdkNDY0N2UyYzguLmE2OTNlMjFj
YzVkMWE5ZTQzOTJmOGIxYTE2ZjI5NDMwM2JiZTljYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxzLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGlscy5jcHAKQEAgLTcsNyArNyw3IEBA
CiAvLyAgIFN0cmluZyBoZWxwZXIgZnVuY3Rpb25zLgogLy8KIAotI2luY2x1ZGUgInN0cmluZ191
dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKIAogI2luY2x1ZGUgPHN0
ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUg
PHNzdHJlYW0+CiAKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKKyNpbmNsdWRlICJjb21t
b24vc3lzdGVtX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBhbmdsZQogewpAQCAtMjA5LDQgKzIxMCw5
IEBAIGJvb2wgUmVwbGFjZVN1YnN0cmluZyhzdGQ6OnN0cmluZyAqc3RyLAogICAgIHJldHVybiB0
cnVlOwogfQogCitzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0U3RyaW5nc0Zyb21FbnZpcm9u
bWVudFZhcihjb25zdCBjaGFyICp2YXJOYW1lLCBjb25zdCBjaGFyICpzZXBhcmF0b3IpCit7Cisg
ICAgc3RkOjpzdHJpbmcgZW52aXJvbm1lbnQgPSBHZXRFbnZpcm9ubWVudFZhcih2YXJOYW1lKTsK
KyAgICByZXR1cm4gU3BsaXRTdHJpbmcoZW52aXJvbm1lbnQsIHNlcGFyYXRvciwgVFJJTV9XSElU
RVNQQUNFLCBTUExJVF9XQU5UX05PTkVNUFRZKTsKK30KIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRp
bHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0aWxzLmgK
aW5kZXggNTQzYmEzODYwMTViNzYyZWMxOTE3MDY5NmQ4YTUxMzM2OWQ4NGU5My4uNTQwYTQyM2Rk
ODkxY2IwNmQ2ZDRiMzgzZDhkN2ViNDc5YmVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGlscy5oCkBAIC04MSw2ICs4MSw5IEBAIGJv
b2wgUmVwbGFjZVN1YnN0cmluZyhzdGQ6OnN0cmluZyAqc3RyLAogICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzdWJzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnJlcGxhY2VtZW50KTsKIAorLy8gU3BsaXQgdXAgYSBzdHJpbmcg
cGFyc2VkIGZyb20gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCitzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gR2V0U3RyaW5nc0Zyb21FbnZpcm9ubWVudFZhcihjb25zdCBjaGFyICp2YXJOYW1lLCBj
b25zdCBjaGFyICpzZXBhcmF0b3IpOworCiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogI2VuZGlm
ICAvLyBMSUJBTkdMRV9TVFJJTkdfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmNwcAppbmRleCA1NDY5M2IzZDU4OTZjNTY2
ODFhMDA3N2Q0NzMxMGUzNzhmOTE1NjE0Li44ZjNlM2YwNDFkOTU5NTYzZWI2ODE4YWYyZTJhMWY5
YmNkM2YxNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L3N5c3RlbV91dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9zeXN0ZW1fdXRpbHMuY3BwCkBAIC02LDcgKzYsNyBAQAogCiAvLyBzeXN0ZW1fdXRpbHMuY3Bw
OiBJbXBsZW1lbnRhdGlvbiBvZiBjb21tb24gZnVuY3Rpb25zCiAKLSNpbmNsdWRlICJzeXN0ZW1f
dXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vc3lzdGVtX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBh
bmdsZQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9z
eXN0ZW1fdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVt
X3V0aWxzLmgKaW5kZXggYzA2MDdhYzAxMmM5MjkzODJjY2Q1MzQ1MmEzODMzNjIwZDIyM2FmMC4u
OWRkYTE0NDM3MWRmZWRiYWNiYWViZGE0ZjM3MDZiZmYyN2M2YTQ0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5oCkBAIC0xMiwxMCAr
MTIsMTMgQEAKICNpbmNsdWRlICJjb21tb24vT3B0aW9uYWwuaCIKICNpbmNsdWRlICJjb21tb24v
YW5nbGV1dGlscy5oIgogCisjaW5jbHVkZSA8c3RyaW5nPgorCiBuYW1lc3BhY2UgYW5nbGUKIHsK
IHN0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVQYXRoKCk7CiBzdGQ6OnN0cmluZyBHZXRFeGVjdXRh
YmxlRGlyZWN0b3J5KCk7CitzdGQ6OnN0cmluZyBHZXRIZWxwZXJFeGVjdXRhYmxlRGlyKCk7CiBj
b25zdCBjaGFyICpHZXRTaGFyZWRMaWJyYXJ5RXh0ZW5zaW9uKCk7CiBjb25zdCBjaGFyICpHZXRF
eGVjdXRhYmxlRXh0ZW5zaW9uKCk7CiBjaGFyIEdldFBhdGhTZXBhcmF0b3IoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3Bvc2l4
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3Bv
c2l4LmNwcAppbmRleCBlZDQ3ZmYwNTk1ZTIzNjYyYTJjNjM3YzQ1NTkwMTVjYTYyN2Q0YzgyLi5m
OWMwMTk1OWY5NzM0OTc1ZDJiYzNmMmRlZjMyOWU5ZjdmMzBmYjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlsc19wb3NpeC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfcG9zaXgu
Y3BwCkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgogCiAjaW5jbHVk
ZSA8YXJyYXk+CisjaW5jbHVkZSA8aW9zdHJlYW0+CiAKICNpbmNsdWRlIDxkbGZjbi5oPgogI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+CkBAIC01NSw2ICs1NiwxOSBAQCBjb25zdCBjaGFyICpHZXRQYXRo
U2VwYXJhdG9yRm9yRW52aXJvbm1lbnRWYXIoKQogICAgIHJldHVybiAiOiI7CiB9CiAKK3N0ZDo6
c3RyaW5nIEdldEhlbHBlckV4ZWN1dGFibGVEaXIoKQoreworICAgIHN0ZDo6c3RyaW5nIGRpcmVj
dG9yeTsKKyAgICBzdGF0aWMgaW50IGR1bW15U3ltYm9sID0gMDsKKyAgICBEbF9pbmZvIGRsSW5m
bzsKKyAgICBpZiAoZGxhZGRyKCZkdW1teVN5bWJvbCwgJmRsSW5mbykgIT0gMCkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6c3RyaW5nIG1vZHVsZU5hbWUgPSBkbEluZm8uZGxpX2ZuYW1lOworICAgICAg
ICBkaXJlY3RvcnkgICAgICAgICAgICAgID0gbW9kdWxlTmFtZS5zdWJzdHIoMCwgbW9kdWxlTmFt
ZS5maW5kX2xhc3Rfb2YoJy8nKSArIDEpOworICAgIH0KKyAgICByZXR1cm4gZGlyZWN0b3J5Owor
fQorCiBjbGFzcyBQb3NpeExpYnJhcnkgOiBwdWJsaWMgTGlicmFyeQogewogICBwdWJsaWM6CkBA
IC02MywxNyArNzcsMTUgQEAgY2xhc3MgUG9zaXhMaWJyYXJ5IDogcHVibGljIExpYnJhcnkKICAg
ICAgICAgc3RkOjpzdHJpbmcgZGlyZWN0b3J5OwogICAgICAgICBpZiAoc2VhcmNoVHlwZSA9PSBT
ZWFyY2hUeXBlOjpBcHBsaWNhdGlvbkRpcikKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGludCBkdW1teVN5bWJvbCA9IDA7Ci0gICAgICAgICAgICBEbF9pbmZvIGRsSW5mbzsKLSAgICAg
ICAgICAgIGlmIChkbGFkZHIoJmR1bW15U3ltYm9sLCAmZGxJbmZvKSAhPSAwKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1vZHVsZU5hbWUgPSBkbEluZm8uZGxp
X2ZuYW1lOwotICAgICAgICAgICAgICAgIGRpcmVjdG9yeSAgICAgICAgICAgICAgPSBtb2R1bGVO
YW1lLnN1YnN0cigwLCBtb2R1bGVOYW1lLmZpbmRfbGFzdF9vZignLycpICsgMSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBkaXJlY3RvcnkgPSBHZXRIZWxwZXJFeGVjdXRhYmxlRGlyKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBzdGQ6OnN0cmluZyBmdWxsUGF0aCA9IGRpcmVjdG9yeSAr
IGxpYnJhcnlOYW1lICsgIi4iICsgR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lvbigpOwogICAgICAg
ICBtTW9kdWxlICAgICAgICAgICAgICA9IGRsb3BlbihmdWxsUGF0aC5jX3N0cigpLCBSVExEX05P
Vyk7CisgICAgICAgIGlmICghbU1vZHVsZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpj
ZXJyIDw8ICJGYWlsZWQgdG8gbG9hZCAiIDw8IGxpYnJhcnlOYW1lIDw8ICI6ICIgPDwgZGxlcnJv
cigpIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIH5Qb3NpeExpYnJhcnko
KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9zeXN0ZW1fdXRpbHNfdW5pdHRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9zeXN0ZW1fdXRpbHNfdW5pdHRlc3QuY3BwCmluZGV4IDdiMTg5Yjk1NzYyMzNhOTA5
YTJmMGE3N2QxZTBiMGFiNTZlZWI0ZjQuLjZjNDY3YTMxMzQwNGY3ZDU4ZmQ3ZGJhZDcwNjUwYzky
MWJjNDQ0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
c3lzdGVtX3V0aWxzX3VuaXR0ZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbW9uL3N5c3RlbV91dGlsc191bml0dGVzdC5jcHAKQEAgLTE3LDI5ICsxNywyNSBAQCBu
YW1lc3BhY2UKIC8vIFRlc3QgZ2V0dGluZyB0aGUgZXhlY3V0YWJsZSBwYXRoCiBURVNUKFN5c3Rl
bVV0aWxzLCBFeGVjdXRhYmxlUGF0aCkKIHsKLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0ZV
Q0hTSUEpCiAgICAgLy8gVE9ETzogZnVjaHNpYSBzdXBwb3J0LiBodHRwOi8vYW5nbGVidWcuY29t
LzMxNjEKLSAgICByZXR1cm47Ci0jZW5kaWYKLQorI2lmICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X0ZVQ0hTSUEpCiAgICAgc3RkOjpzdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBHZXRFeGVjdXRhYmxl
UGF0aCgpOwogICAgIEVYUEVDVF9ORSgiIiwgZXhlY3V0YWJsZVBhdGgpOworI2VuZGlmCiB9CiAK
IC8vIFRlc3QgZ2V0dGluZyB0aGUgZXhlY3V0YWJsZSBkaXJlY3RvcnkKIFRFU1QoU3lzdGVtVXRp
bHMsIEV4ZWN1dGFibGVEaXIpCiB7Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9GVUNIU0lB
KQogICAgIC8vIFRPRE86IGZ1Y2hzaWEgc3VwcG9ydC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zMTYx
Ci0gICAgcmV0dXJuOwotI2VuZGlmCi0KKyNpZiAhZGVmaW5lZChBTkdMRV9QTEFURk9STV9GVUNI
U0lBKQogICAgIHN0ZDo6c3RyaW5nIGV4ZWN1dGFibGVEaXIgPSBHZXRFeGVjdXRhYmxlRGlyZWN0
b3J5KCk7CiAgICAgRVhQRUNUX05FKCIiLCBleGVjdXRhYmxlRGlyKTsKIAogICAgIHN0ZDo6c3Ry
aW5nIGV4ZWN1dGFibGVQYXRoID0gR2V0RXhlY3V0YWJsZVBhdGgoKTsKICAgICBFWFBFQ1RfTFQo
ZXhlY3V0YWJsZURpci5zaXplKCksIGV4ZWN1dGFibGVQYXRoLnNpemUoKSk7CiAgICAgRVhQRUNU
X0VRKDAsIHN0cm5jbXAoZXhlY3V0YWJsZURpci5jX3N0cigpLCBleGVjdXRhYmxlUGF0aC5jX3N0
cigpLCBleGVjdXRhYmxlRGlyLnNpemUoKSkpOworI2VuZGlmCiB9CiAKIC8vIFRlc3Qgc2V0dGlu
ZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3dpbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlsc193aW4uY3BwCmluZGV4IGM2ZmQwMDQ5MDE5OWNh
OTMwZWYzYTVlMmY2ZGNiODJiMjhlMWUzMTkuLjg4NmNhMGNjZTA0YWYxODU2NGE1MzQ0NDZlMzNm
ZDczYWJkMTcyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vc3lzdGVtX3V0aWxzX3dpbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9zeXN0ZW1fdXRpbHNfd2luLmNwcApAQCAtMTAwLDQgKzEwMCw5IEBAIGNoYXIgR2V0
UGF0aFNlcGFyYXRvcigpCiB7CiAgICAgcmV0dXJuICdcXCc7CiB9CisKK3N0ZDo6c3RyaW5nIEdl
dEhlbHBlckV4ZWN1dGFibGVEaXIoKQoreworICAgIHJldHVybiAiIjsKK30KIH0gIC8vIG5hbWVz
cGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi90bHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi90bHMuY3BwCmlu
ZGV4IDk1NTlhZmUyMGM4ODM3N2FlZWE5ZGZkYjllN2YyMzQ0NDJmZWVmNzEuLjJlNTQ0M2U4ZjY1
ZmZjYWIxMTFlNjI0ODBjY2Q0MjAwM2I2NWVkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vdGxzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3Rscy5jcHAKQEAgLTgsNyArOCw3IEBACiAKICNpbmNsdWRlICJjb21tb24v
dGxzLmgiCiAKLSNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
IAogI2lmZGVmIEFOR0xFX0VOQUJMRV9XSU5ET1dTX1VXUAogIyAgICBpbmNsdWRlIDxtYXA+CkBA
IC02MiwxNCArNjIsMTQgQEAgVExTSW5kZXggQ3JlYXRlVExTSW5kZXgoKQogICAgIH0KICNlbmRp
ZgogCi0gICAgYXNzZXJ0KGluZGV4ICE9IFRMU19JTlZBTElEX0lOREVYICYmCisgICAgQVNTRVJU
KGluZGV4ICE9IFRMU19JTlZBTElEX0lOREVYICYmCiAgICAgICAgICAgICJDcmVhdGVUTFNJbmRl
eCgpOiBVbmFibGUgdG8gYWxsb2NhdGUgVGhyZWFkIExvY2FsIFN0b3JhZ2UiKTsKICAgICByZXR1
cm4gaW5kZXg7CiB9CiAKIGJvb2wgRGVzdHJveVRMU0luZGV4KFRMU0luZGV4IGluZGV4KQogewot
ICAgIGFzc2VydChpbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCAmJiAiRGVzdHJveVRMU0luZGV4
KCk6IEludmFsaWQgVExTIEluZGV4Iik7CisgICAgQVNTRVJUKGluZGV4ICE9IFRMU19JTlZBTElE
X0lOREVYICYmICJEZXN0cm95VExTSW5kZXgoKTogSW52YWxpZCBUTFMgSW5kZXgiKTsKICAgICBp
ZiAoaW5kZXggPT0gVExTX0lOVkFMSURfSU5ERVgpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC03Nyw4ICs3Nyw4IEBAIGJvb2wgRGVzdHJveVRMU0luZGV4KFRMU0luZGV4IGluZGV4
KQogCiAjaWZkZWYgQU5HTEVfUExBVEZPUk1fV0lORE9XUwogIyAgICBpZmRlZiBBTkdMRV9FTkFC
TEVfV0lORE9XU19VV1AKLSAgICBhc3NlcnQoaW5kZXggPCBuZXh0VGxzSW5kZXgpOwotICAgIGFz
c2VydChmaW5kKGZyZWVUbHNJbmRpY2VzLmJlZ2luKCksIGZyZWVUbHNJbmRpY2VzLmVuZCgpLCBp
bmRleCkgPT0gZnJlZVRsc0luZGljZXMuZW5kKCkpOworICAgIEFTU0VSVChpbmRleCA8IG5leHRU
bHNJbmRleCk7CisgICAgQVNTRVJUKGZpbmQoZnJlZVRsc0luZGljZXMuYmVnaW4oKSwgZnJlZVRs
c0luZGljZXMuZW5kKCksIGluZGV4KSA9PSBmcmVlVGxzSW5kaWNlcy5lbmQoKSk7CiAKICAgICBm
cmVlVGxzSW5kaWNlcy5wdXNoX2JhY2soaW5kZXgpOwogICAgIGZvciAoYXV0byB0aHJlYWREYXRh
IDogYWxsVGhyZWFkRGF0YSkKQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBEZXN0cm95VExTSW5kZXgo
VExTSW5kZXggaW5kZXgpCiAKIGJvb2wgU2V0VExTVmFsdWUoVExTSW5kZXggaW5kZXgsIHZvaWQg
KnZhbHVlKQogewotICAgIGFzc2VydChpbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCAmJiAiU2V0
VExTVmFsdWUoKTogSW52YWxpZCBUTFMgSW5kZXgiKTsKKyAgICBBU1NFUlQoaW5kZXggIT0gVExT
X0lOVkFMSURfSU5ERVggJiYgIlNldFRMU1ZhbHVlKCk6IEludmFsaWQgVExTIEluZGV4Iik7CiAg
ICAgaWYgKGluZGV4ID09IFRMU19JTlZBTElEX0lOREVYKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgU2V0VExTVmFsdWUoVExTSW5kZXggaW5k
ZXgsIHZvaWQgKnZhbHVlKQogCiB2b2lkICpHZXRUTFNWYWx1ZShUTFNJbmRleCBpbmRleCkKIHsK
LSAgICBhc3NlcnQoaW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVggJiYgIkdldFRMU1ZhbHVlKCk6
IEludmFsaWQgVExTIEluZGV4Iik7CisgICAgQVNTRVJUKGluZGV4ICE9IFRMU19JTlZBTElEX0lO
REVYICYmICJHZXRUTFNWYWx1ZSgpOiBJbnZhbGlkIFRMUyBJbmRleCIpOwogICAgIGlmIChpbmRl
eCA9PSBUTFNfSU5WQUxJRF9JTkRFWCkKICAgICB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCmlu
ZGV4IDUwMDMxODZiMTJhM2Y5MmEzZDRhZmNlMGYzZTllODI3YTZkYzQwOGYuLjBhNmRjYzI0ODlj
ZmRlM2IzNzJhMTY0YTMxOTkxMDJhYWI4YzZiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKQEAgLTEwMzEsNiArMTAzMSw2NiBAQCBQ
aXBlbGluZVR5cGUgR2V0UGlwZWxpbmVUeXBlKFNoYWRlclR5cGUgdHlwZSkKICAgICB9CiB9CiAK
K2NvbnN0IGNoYXIgKkdldERlYnVnTWVzc2FnZVNvdXJjZVN0cmluZyhHTGVudW0gc291cmNlKQor
eworICAgIHN3aXRjaCAoc291cmNlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9ERUJVR19TT1VS
Q0VfQVBJOgorICAgICAgICAgICAgcmV0dXJuICJBUEkiOworICAgICAgICBjYXNlIEdMX0RFQlVH
X1NPVVJDRV9XSU5ET1dfU1lTVEVNOgorICAgICAgICAgICAgcmV0dXJuICJXaW5kb3cgU3lzdGVt
IjsKKyAgICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSOgorICAgICAg
ICAgICAgcmV0dXJuICJTaGFkZXIgQ29tcGlsZXIiOworICAgICAgICBjYXNlIEdMX0RFQlVHX1NP
VVJDRV9USElSRF9QQVJUWToKKyAgICAgICAgICAgIHJldHVybiAiVGhpcmQgUGFydHkiOworICAg
ICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTjoKKyAgICAgICAgICAgIHJldHVy
biAiQXBwbGljYXRpb24iOworICAgICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9PVEhFUjoKKyAg
ICAgICAgICAgIHJldHVybiAiT3RoZXIiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuICJVbmtub3duIFNvdXJjZSI7CisgICAgfQorfQorCitjb25zdCBjaGFyICpHZXREZWJ1
Z01lc3NhZ2VUeXBlU3RyaW5nKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9FUlJPUjoKKyAgICAgICAgICAgIHJldHVy
biAiRXJyb3IiOworICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklP
UjoKKyAgICAgICAgICAgIHJldHVybiAiRGVwcmVjYXRlZCBiZWhhdmlvciI7CisgICAgICAgIGNh
c2UgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1I6CisgICAgICAgICAgICByZXR1cm4g
IlVuZGVmaW5lZCBiZWhhdmlvciI7CisgICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QT1JUQUJJ
TElUWToKKyAgICAgICAgICAgIHJldHVybiAiUG9ydGFiaWxpdHkiOworICAgICAgICBjYXNlIEdM
X0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6CisgICAgICAgICAgICByZXR1cm4gIlBlcmZvcm1hbmNl
IjsKKyAgICAgICAgY2FzZSBHTF9ERUJVR19UWVBFX09USEVSOgorICAgICAgICAgICAgcmV0dXJu
ICJPdGhlciI7CisgICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9NQVJLRVI6CisgICAgICAgICAg
ICByZXR1cm4gIk1hcmtlciI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
IlVua25vd24gVHlwZSI7CisgICAgfQorfQorCitjb25zdCBjaGFyICpHZXREZWJ1Z01lc3NhZ2VT
ZXZlcml0eVN0cmluZyhHTGVudW0gc2V2ZXJpdHkpCit7CisgICAgc3dpdGNoIChzZXZlcml0eSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfSElHSDoKKyAgICAgICAgICAg
IHJldHVybiAiSGlnaCI7CisgICAgICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNOgor
ICAgICAgICAgICAgcmV0dXJuICJNZWRpdW0iOworICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVS
SVRZX0xPVzoKKyAgICAgICAgICAgIHJldHVybiAiTG93IjsKKyAgICAgICAgY2FzZSBHTF9ERUJV
R19TRVZFUklUWV9OT1RJRklDQVRJT046CisgICAgICAgICAgICByZXR1cm4gIk5vdGlmaWNhdGlv
biI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gIlVua25vd24gU2V2ZXJp
dHkiOworICAgIH0KK30KIH0gIC8vIG5hbWVzcGFjZSBnbAogCiBuYW1lc3BhY2UgZWdsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuaAppbmRleCAwYzA1
NDczOTFlZjQyM2IxOTBlNTY2MDdlNDBlMmUzZmRhMTE2MmYzLi4zZGI3MDFjMGI4ZDBjZGZlYjY3
YWI4YmU2YzE2NjNkMDEyYjU4M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vdXRpbGl0aWVzLmgKQEAgLTIyMiw2ICsyMjIsMTIgQEAgZW51bSBjbGFzcyBQaXBl
bGluZVR5cGUKIH07CiAKIFBpcGVsaW5lVHlwZSBHZXRQaXBlbGluZVR5cGUoU2hhZGVyVHlwZSBz
aGFkZXJUeXBlKTsKKworLy8gRm9yIHVzZSB3aXRoIEtIUl9kZWJ1Zy4KK2NvbnN0IGNoYXIgKkdl
dERlYnVnTWVzc2FnZVNvdXJjZVN0cmluZyhHTGVudW0gc291cmNlKTsKK2NvbnN0IGNoYXIgKkdl
dERlYnVnTWVzc2FnZVR5cGVTdHJpbmcoR0xlbnVtIHR5cGUpOworY29uc3QgY2hhciAqR2V0RGVi
dWdNZXNzYWdlU2V2ZXJpdHlTdHJpbmcoR0xlbnVtIHNldmVyaXR5KTsKKwogfSAgLy8gbmFtZXNw
YWNlIGdsCiAKIG5hbWVzcGFjZSBlZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIuZ25pCmluZGV4IGU1MzYwYjFiZTQ1NzM4MDgzNzMyOTRlODUwMjBkODBhMDgyNzQwYWUuLjUy
MzBhNDE1ZTc5MTMwYzIxZjU2NmM5NmRhYTYzNGE4NmJkODgxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci5nbmkKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyLmduaQpAQCAtMTQ4LDYgKzE0OCw4IEBAIGFuZ2xlX3RyYW5z
bGF0b3Jfc291cmNlcyA9IFsKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1Jl
Z2VuZXJhdGVTdHJ1Y3ROYW1lcy5oIiwKICAgInNyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVf
b3BzL1JlbW92ZUFycmF5TGVuZ3RoTWV0aG9kLmNwcCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX29wcy9SZW1vdmVBcnJheUxlbmd0aE1ldGhvZC5oIiwKKyAgInNyYy9jb21waWxl
ci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHAiLAor
ICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlQXRvbWljQ291bnRlckJ1
aWx0aW5zLmgiLAogICAic3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmVtb3ZlRHlu
YW1pY0luZGV4aW5nLmNwcCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9S
ZW1vdmVEeW5hbWljSW5kZXhpbmcuaCIsCiAgICJzcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVl
X29wcy9SZW1vdmVJbmFjdGl2ZUludGVyZmFjZVZhcmlhYmxlcy5jcHAiLApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNl
VHlwZXMuaAppbmRleCBjZjVjZDEzOTZhYTNiZDY0N2NlYjY2NDM2Y2ZkZDZhNDE5MDBhYTAxLi4x
OGQwMTQyMWViYTU0MjllM2I2ODEyY2FiMWE1MGJmYTFlNmM2Zjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNl
VHlwZXMuaApAQCAtMjc2LDcgKzI3Niw3IEBAIGlubGluZSBib29sIElzSW50ZWdlclNhbXBsZXIo
VEJhc2ljVHlwZSB0eXBlKQogICAgICAgICBjYXNlIEVidFNhbXBsZXJWaWRlb1dFQkdMOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNz
ZXJ0KCFJc1NhbXBsZXIodHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc1NhbXBsZXIodHlw
ZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMSw3ICszMTEsNyBAQCBpbmxp
bmUgYm9vbCBJc0ludGVnZXJTYW1wbGVyVW5zaWduZWQoVEJhc2ljVHlwZSB0eXBlKQogICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyQ3ViZUFycmF5OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3NlcnQoIUlzSW50ZWdlclNhbXBsZXIodHlw
ZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc0ludGVnZXJTYW1wbGVyKHR5cGUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC00NjksNyArNDY5LDcgQEAgaW5saW5lIGJvb2wgSXNT
YW1wbGVyMkQoVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZUFy
cmF5OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc1Nh
bXBsZXIodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTUyNSw3ICs1MjUs
NyBAQCBpbmxpbmUgYm9vbCBJc1NhbXBsZXJDdWJlKFRCYXNpY1R5cGUgdHlwZSkKICAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyVmlkZW9XRUJHTDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01ODEsNyArNTgxLDcgQEAgaW5saW5lIGJvb2wgSXNTYW1wbGVyM0QoVEJhc2lj
VHlwZSB0eXBlKQogICAgICAgICBjYXNlIEVidFNhbXBsZXJWaWRlb1dFQkdMOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0KCFJ
c1NhbXBsZXIodHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKCFJc1NhbXBsZXIodHlwZSkpOwog
ICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTYzNyw3ICs2MzcsNyBAQCBpbmxpbmUgYm9v
bCBJc1NhbXBsZXJBcnJheShUQmFzaWNUeXBlIHR5cGUpCiAgICAgICAgIGNhc2UgRWJ0U2FtcGxl
clZpZGVvV0VCR0w6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBhc3NlcnQoIUlzU2FtcGxlcih0eXBlKSk7CisgICAgICAgICAgICBBU1NF
UlQoIUlzU2FtcGxlcih0eXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjkz
LDcgKzY5Myw3IEBAIGlubGluZSBib29sIElzU2hhZG93U2FtcGxlcihUQmFzaWNUeXBlIHR5cGUp
CiAgICAgICAgIGNhc2UgRWJ0U2FtcGxlclZpZGVvV0VCR0w6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3NlcnQoIUlzU2FtcGxlcih0
eXBlKSk7CisgICAgICAgICAgICBBU1NFUlQoIUlzU2FtcGxlcih0eXBlKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzQyLDcgKzc0Miw3IEBAIGlubGluZSBib29sIElzSW1hZ2Uy
RChUQmFzaWNUeXBlIHR5cGUpCiAgICAgICAgIGNhc2UgRWJ0VUltYWdlQnVmZmVyOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0
KCFJc0ltYWdlKHR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCghSXNJbWFnZSh0eXBlKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzkxLDcgKzc5MSw3IEBAIGlubGluZSBib29s
IElzSW1hZ2UzRChUQmFzaWNUeXBlIHR5cGUpCiAgICAgICAgIGNhc2UgRWJ0VUltYWdlQnVmZmVy
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYXNzZXJ0KCFJc0ltYWdlKHR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCghSXNJbWFnZSh0
eXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODQwLDcgKzg0MCw3IEBAIGlu
bGluZSBib29sIElzSW1hZ2UyREFycmF5KFRCYXNpY1R5cGUgdHlwZSkKICAgICAgICAgY2FzZSBF
YnRVSW1hZ2VCdWZmZXI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBhc3NlcnQoIUlzSW1hZ2UodHlwZSkpOworICAgICAgICAgICAgQVNT
RVJUKCFJc0ltYWdlKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC04ODks
NyArODg5LDcgQEAgaW5saW5lIGJvb2wgSXNJbWFnZUN1YmUoVEJhc2ljVHlwZSB0eXBlKQogICAg
ICAgICBjYXNlIEVidFVJbWFnZUJ1ZmZlcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFzc2VydCghSXNJbWFnZSh0eXBlKSk7CisgICAg
ICAgICAgICBBU1NFUlQoIUlzSW1hZ2UodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0NvbXBpbGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcAppbmRleCA4MDM1OTU0ODQxMTA1YWZkNjc3NTU5OWQ5
ODZiNzlmOWYzNmRmYzIyLi44NzU2NWViMDk4OWJhMWVjOWQxNjQ0ODhlODc1MTI4ZmQ2MTU4Njlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9Db21waWxlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCkBAIC01NTcsNiArNTU3LDIxIEBAIGJvb2wgVENv
bXBpbGVyOjpjaGVja0FuZFNpbXBsaWZ5QVNUKFRJbnRlcm1CbG9jayAqcm9vdCwKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIFdlIG5lZWQgdG8gZ2VuZXJhdGUgZ2xvYmFs
cyBlYXJseSBpZiB3ZSBoYXZlIG5vbiBjb25zdGFudCBpbml0aWFsaXplcnMgZW5hYmxlZAorICAg
IGJvb2wgaW5pdGlhbGl6ZUxvY2Fsc0FuZEdsb2JhbHMgPQorICAgICAgICAoY29tcGlsZU9wdGlv
bnMgJiBTSF9JTklUSUFMSVpFX1VOSU5JVElBTElaRURfTE9DQUxTKSAmJiAhSXNPdXRwdXRITFNM
KGdldE91dHB1dFR5cGUoKSk7CisgICAgYm9vbCBjYW5Vc2VMb29wc1RvSW5pdGlhbGl6ZSA9ICEo
Y29tcGlsZU9wdGlvbnMgJiBTSF9ET05UX1VTRV9MT09QU19UT19JTklUSUFMSVpFX1ZBUklBQkxF
Uyk7CisgICAgYm9vbCBoaWdoUHJlY2lzaW9uU3VwcG9ydGVkICA9IG1TaGFkZXJWZXJzaW9uID4g
MTAwIHx8IG1TaGFkZXJUeXBlICE9IEdMX0ZSQUdNRU5UX1NIQURFUiB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1SZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID09
IDE7CisgICAgYm9vbCBlbmFibGVOb25Db25zdGFudEluaXRpYWxpemVycyA9IElzRXh0ZW5zaW9u
RW5hYmxlZCgKKyAgICAgICAgbUV4dGVuc2lvbkJlaGF2aW9yLCBURXh0ZW5zaW9uOjpFWFRfc2hh
ZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzKTsKKyAgICBpZiAoZW5hYmxlTm9u
Q29uc3RhbnRJbml0aWFsaXplcnMgJiYKKyAgICAgICAgIURlZmVyR2xvYmFsSW5pdGlhbGl6ZXJz
KHRoaXMsIHJvb3QsIGluaXRpYWxpemVMb2NhbHNBbmRHbG9iYWxzLCBjYW5Vc2VMb29wc1RvSW5p
dGlhbGl6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hQcmVjaXNpb25T
dXBwb3J0ZWQsICZtU3ltYm9sVGFibGUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIC8vIENyZWF0ZSB0aGUgZnVuY3Rpb24gREFHIGFuZCBjaGVjayB0aGVyZSBp
cyBubyByZWN1cnNpb24KICAgICBpZiAoIWluaXRDYWxsRGFnKHJvb3QpKQogICAgIHsKQEAgLTc2
NSw4ICs3ODAsNiBAQCBib29sIFRDb21waWxlcjo6Y2hlY2tBbmRTaW1wbGlmeUFTVChUSW50ZXJt
QmxvY2sgKnJvb3QsCiAgICAgR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT51bmxvY2soKTsKICAg
ICBtQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IubWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRp
b24ocm9vdCk7CiAKLSAgICBib29sIGhpZ2hQcmVjaXNpb25TdXBwb3J0ZWQgPSBtU2hhZGVyVmVy
c2lvbiA+IDEwMCB8fCBtU2hhZGVyVHlwZSAhPSBHTF9GUkFHTUVOVF9TSEFERVIgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9u
SGlnaCA9PSAxOwogICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX1NDQUxBUklaRV9WRUNfQU5E
X01BVF9DT05TVFJVQ1RPUl9BUkdTKQogICAgIHsKICAgICAgICAgaWYgKCFTY2FsYXJpemVWZWNB
bmRNYXRDb25zdHJ1Y3RvckFyZ3ModGhpcywgcm9vdCwgbVNoYWRlclR5cGUsIGhpZ2hQcmVjaXNp
b25TdXBwb3J0ZWQsCkBAIC04MzksMTAgKzg1MiwxMSBAQCBib29sIFRDb21waWxlcjo6Y2hlY2tB
bmRTaW1wbGlmeUFTVChUSW50ZXJtQmxvY2sgKnJvb3QsCiAgICAgLy8gc3RhdGVtZW50cyBmcm9t
IGV4cHJlc3Npb25zLiBCdXQgaXQncyBmaW5lIHRvIHJ1biBEZWZlckdsb2JhbEluaXRpYWxpemVy
cyBhZnRlciB0aGUgYWJvdmUKICAgICAvLyBTcGxpdFNlcXVlbmNlT3BlcmF0b3IgYW5kIFJlbW92
ZUFycmF5TGVuZ3RoTWV0aG9kIHNpbmNlIHRoZXkgb25seSBoYXZlIGFuIGVmZmVjdCBvbiB0aGUg
QVNUCiAgICAgLy8gb24gRVNTTCA+PSAzLjAwLCBhbmQgdGhlIGluaXRpYWxpemVycyB0aGF0IG5l
ZWQgdG8gYmUgZGVmZXJyZWQgY2FuIG9ubHkgZXhpc3QgaW4gRVNTTCA8IDMuMDAuCi0gICAgYm9v
bCBpbml0aWFsaXplTG9jYWxzQW5kR2xvYmFscyA9Ci0gICAgICAgIChjb21waWxlT3B0aW9ucyAm
IFNIX0lOSVRJQUxJWkVfVU5JTklUSUFMSVpFRF9MT0NBTFMpICYmICFJc091dHB1dEhMU0woZ2V0
T3V0cHV0VHlwZSgpKTsKLSAgICBib29sIGNhblVzZUxvb3BzVG9Jbml0aWFsaXplID0gIShjb21w
aWxlT3B0aW9ucyAmIFNIX0RPTlRfVVNFX0xPT1BTX1RPX0lOSVRJQUxJWkVfVkFSSUFCTEVTKTsK
LSAgICBpZiAoIURlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzKHRoaXMsIHJvb3QsIGluaXRpYWxpemVM
b2NhbHNBbmRHbG9iYWxzLCBjYW5Vc2VMb29wc1RvSW5pdGlhbGl6ZSwKKyAgICAvLyBFeGNlcHRp
b246IGlmIEVYVF9zaGFkZXJfbm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMgaXMgZW5h
YmxlZCwgd2UgbXVzdCBnZW5lcmF0ZSBnbG9iYWwKKyAgICAvLyBpbml0aWFsaXplcnMgYmVmb3Jl
IHdlIGdlbmVyYXRlIHRoZSBEQUcsIHNpbmNlIGluaXRpYWxpemVycyBtYXkgY2FsbCBmdW5jdGlv
bnMgd2hpY2ggbXVzdCBub3QKKyAgICAvLyBiZSBvcHRpbWl6ZWQgb3V0CisgICAgaWYgKCFlbmFi
bGVOb25Db25zdGFudEluaXRpYWxpemVycyAmJgorICAgICAgICAhRGVmZXJHbG9iYWxJbml0aWFs
aXplcnModGhpcywgcm9vdCwgaW5pdGlhbGl6ZUxvY2Fsc0FuZEdsb2JhbHMsIGNhblVzZUxvb3Bz
VG9Jbml0aWFsaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaFByZWNp
c2lvblN1cHBvcnRlZCwgJm1TeW1ib2xUYWJsZSkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTE1LDYgKzExMjksMjYgQEAgdm9pZCBUQ29tcGlsZXI6OmNvbGxlY3RJbnRlcmZh
Y2VCbG9ja3MoKQogICAgIG1JbnRlcmZhY2VCbG9ja3MuaW5zZXJ0KG1JbnRlcmZhY2VCbG9ja3Mu
ZW5kKCksIG1JbkJsb2Nrcy5iZWdpbigpLCBtSW5CbG9ja3MuZW5kKCkpOwogfQogCitib29sIFRD
b21waWxlcjo6ZW11bGF0ZVByZWNpc2lvbklmTmVlZGVkKFRJbnRlcm1CbG9jayAqcm9vdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEluZm9TaW5rQmFzZSAmc2lu
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqaXNOZWVk
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoU2hh
ZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKQoreworICAgICppc05lZWRlZCA9IGdldFJlc291cmNl
cygpLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24gJiYgZ2V0UHJhZ21hKCkuZGVidWdTaGFk
ZXJQcmVjaXNpb247CisKKyAgICBpZiAoKmlzTmVlZGVkKQorICAgIHsKKyAgICAgICAgRW11bGF0
ZVByZWNpc2lvbiBlbXVsYXRlUHJlY2lzaW9uKCZnZXRTeW1ib2xUYWJsZSgpKTsKKyAgICAgICAg
cm9vdC0+dHJhdmVyc2UoJmVtdWxhdGVQcmVjaXNpb24pOworICAgICAgICBpZiAoIWVtdWxhdGVQ
cmVjaXNpb24udXBkYXRlVHJlZSh0aGlzLCByb290KSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGVtdWxhdGVQcmVjaXNpb24ud3JpdGVF
bXVsYXRpb25IZWxwZXJzKHNpbmssIGdldFNoYWRlclZlcnNpb24oKSwgb3V0cHV0TGFuZ3VhZ2Up
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVz
dWx0cygpCiB7CiAgICAgbUFycmF5Qm91bmRzQ2xhbXBlci5DbGVhbnVwKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29t
cGlsZXIuaAppbmRleCAyYzc4OTdjYThhMTQyMjM4ZDA2YzJjZGMzM2FiYTlkYWViNGM0MDNiLi45
NTBiNmExODQ4ZWM4OTM4YWVjYzIxMGFlMmUwYmYzODE2MGU0ODI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBp
bGVyLmgKQEAgLTE3Myw2ICsxNzMsMTIgQEAgY2xhc3MgVENvbXBpbGVyIDogcHVibGljIFRTaEhh
bmRsZUJhc2UKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZh
cmlhbnRBbGwoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZENvbGxlY3RWYXJpYWJsZXMo
U2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CisgICAgLy8gSWYgcHJlY2lzaW9uIGVt
dWxhdGlvbiBuZWVkZWQsIHNldCBpc05lZWRlZCB0byB0cnVlIGFuZCBlbXVsYXRlIHByZWNpc2lv
biBmb3IgZ2l2ZW4KKyAgICAvLyAgb3V0cHV0TGFuZ3VhZ2UsIHJldHVybmluZyBmYWxzZSBpZiB0
aGF0IGZhaWxzLCBlbHNlIHJldHVybmluZyB0cnVlLgorICAgIGJvb2wgZW11bGF0ZVByZWNpc2lv
bklmTmVlZGVkKFRJbnRlcm1CbG9jayAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW5mb1NpbmtCYXNlICZzaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgKmlzTmVlZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKTsKIAogICAgIGJvb2wgd2VyZVZh
cmlhYmxlc0NvbGxlY3RlZCgpIGNvbnN0OwogICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJp
YWJsZT4gbUF0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmgKaW5kZXggM2Vk
MDhiZjk3MDFhMDI1MmZlMDE5ODYzOTQ4MWE5NGI3Njg3OTNiOS4uYTYyM2Q2NWZiMWQ1NDU3YTI5
ZDc4MmUzZDEzYjA4MTg0OGIyYjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbnN0YW50VW5pb24uaApA
QCAtNyw4ICs3LDYgQEAKICNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9DT05TVEFOVFVOSU9O
X0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfQ09OU1RBTlRVTklPTl9IXwogCi0jaW5j
bHVkZSA8YXNzZXJ0Lmg+Ci0KICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBl
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgiCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVu
c2lvbkJlaGF2aW9yLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmNwcAppbmRleCA2NjRhNmE5MTMyZDVhMDc2OTAx
MzIxM2ExNjVmNjBjOGM2YzBjZWRhLi5mMmI1YjY4ZDhhMDRmY2NiYzllYTllZjlhZTJkZmExMWFk
OGQxNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuY3BwCkBAIC0x
MiwyOSArMTIsMzAgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jZGVmaW5lIExJU1RfRVhU
RU5TSU9OUyhPUCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE9QKEFSQl90ZXh0dXJlX3Jl
Y3RhbmdsZSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICBPUChBTkdMRV90ZXh0dXJlX211bHRp
c2FtcGxlKSAgICAgICAgICAgICAgICBcCi0gICAgT1AoQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaCkgICAgICAgICAgICAgXAotICAgIE9QKEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkKSAgICAg
ICAgICAgICAgICAgIFwKLSAgICBPUChFWFRfZHJhd19idWZmZXJzKSAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgT1AoRVhUX2ZyYWdfZGVwdGgpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIE9QKEVYVF9nZW9tZXRyeV9zaGFkZXIpICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBPUChFWFRfZ3B1X3NoYWRlcjUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
T1AoRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkgICAgICAgICAgICAgXAotICAgIE9QKEVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QpICAgICAgICAgICAgICAgICAgIFwKLSAgICBPUChFWFRfWVVW
X3RhcmdldCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgT1AoTlZfRUdMX3N0cmVh
bV9jb25zdW1lcl9leHRlcm5hbCkgICAgICAgICAgXAotICAgIE9QKE5WX3NoYWRlcl9mcmFtZWJ1
ZmZlcl9mZXRjaCkgICAgICAgICAgICAgIFwKLSAgICBPUChPRVNfRUdMX2ltYWdlX2V4dGVybmFs
KSAgICAgICAgICAgICAgICAgICBcCi0gICAgT1AoT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3Ns
MykgICAgICAgICAgICAgXAotICAgIE9QKE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykgICAgICAg
ICAgICAgICAgIFwKLSAgICBPUChPRVNfdGV4dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2Fy
cmF5KSBcCi0gICAgT1AoT0VTX3RleHR1cmVfM0QpICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIE9QKE9WUl9tdWx0aXZpZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBPUChPVlJfbXVsdGl2aWV3MikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgT1Ao
QU5HTEVfbXVsdGlfZHJhdykgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE9QKEFOR0xF
X2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UpICAgICAgICAgIFwKKyNkZWZpbmUgTElTVF9FWFRF
TlNJT05TKE9QKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgT1AoQVJCX3RleHR1cmVf
cmVjdGFuZ2xlKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKEFOR0xFX3RleHR1cmVf
bXVsdGlzYW1wbGUpICAgICAgICAgICAgICAgICAgIFwKKyAgICBPUChBUk1fc2hhZGVyX2ZyYW1l
YnVmZmVyX2ZldGNoKSAgICAgICAgICAgICAgICBcCisgICAgT1AoRVhUX2JsZW5kX2Z1bmNfZXh0
ZW5kZWQpICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKEVYVF9kcmF3X2J1ZmZlcnMpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBPUChFWFRfZnJhZ19kZXB0aCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgT1AoRVhUX2dlb21ldHJ5X3NoYWRlcikgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKEVYVF9ncHVfc2hhZGVyNSkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBPUChFWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNo
KSAgICAgICAgICAgICAgICBcCisgICAgT1AoRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCkgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIE9QKEVYVF9ZVVZfdGFyZ2V0KSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBPUChFWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5p
dGlhbGl6ZXJzKSBcCisgICAgT1AoTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCkgICAg
ICAgICAgICAgXAorICAgIE9QKE5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkgICAgICAgICAg
ICAgICAgIFwKKyAgICBPUChPRVNfRUdMX2ltYWdlX2V4dGVybmFsKSAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgT1AoT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMykgICAgICAgICAgICAg
ICAgXAorICAgIE9QKE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBPUChPRVNfdGV4dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5KSAgICBc
CisgICAgT1AoT0VTX3RleHR1cmVfM0QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIE9QKE9WUl9tdWx0aXZpZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBPUChPVlJfbXVsdGl2aWV3MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
T1AoQU5HTEVfbXVsdGlfZHJhdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9Q
KEFOR0xFX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UpICAgICAgICAgICAgIFwKICAgICBPUChX
RUJHTF92aWRlb190ZXh0dXJlKQogCiBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9y
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRl
bnNpb25CZWhhdmlvci5oCmluZGV4IGIyYzM1OTc2ZGJmN2U2NzA0N2RlOTk2YzUxYWE1OTJhZDIx
ZDNmYmQuLjU5ZThlZjdiZDFjZjA5NzBkNWUyNWRhOTQ0MWJiOGYwNDVjMjEwMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVu
c2lvbkJlaGF2aW9yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaApAQCAtMjksNiArMjksNyBAQCBlbnVtIGNs
YXNzIFRFeHRlbnNpb24KICAgICBFWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoLAogICAgIEVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QsCiAgICAgRVhUX1lVVl90YXJnZXQsCisgICAgRVhUX3NoYWRl
cl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycywKICAgICBOVl9FR0xfc3RyZWFtX2Nv
bnN1bWVyX2V4dGVybmFsLAogICAgIE5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCwKICAgICBP
RVNfRUdMX2ltYWdlX2V4dGVybmFsLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmNwcAppbmRleCA4
MmU3ZTBmZDYzMzUxZDUyMzBjMGMzODk2YjBlOTJiYWY5Y2VhOTkxLi42MzhmNWUwMWFjZmQzOGJh
OWU2MGFiM2QxN2I2MTIxMDcxNzE1MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmNwcApA
QCAtODEsNiArODEsMTAgQEAgdm9pZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hCdWls
dEluUmVzb3VyY2VzICZyZXNvdXJjZXMsIFRFeHRlbnNpb25CZWhhdmkKICAgICB7CiAgICAgICAg
IGV4dEJlaGF2aW9yW1RFeHRlbnNpb246OkVYVF9ncHVfc2hhZGVyNV0gPSBFQmhVbmRlZmluZWQ7
CiAgICAgfQorICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFs
X2luaXRpYWxpemVycykKKyAgICB7CisgICAgICAgIGV4dEJlaGF2aW9yW1RFeHRlbnNpb246OkVY
VF9zaGFkZXJfbm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnNdID0gRUJoVW5kZWZpbmVk
OworICAgIH0KICAgICBpZiAocmVzb3VyY2VzLk9FU190ZXh0dXJlX3N0b3JhZ2VfbXVsdGlzYW1w
bGVfMmRfYXJyYXkpCiAgICAgewogICAgICAgICBleHRCZWhhdmlvcltURXh0ZW5zaW9uOjpPRVNf
dGV4dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5XSA9IEVCaFVuZGVmaW5lZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L091dHB1dFZ1bGthbkdMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5jcHAKaW5kZXggMjc5ZjgxMjRlMjQ0YmUw
OTAyYjhjYTAxOTQ3ZmU0YjA0MzE5NDc0Yi4uMzYyNjQ1MmNlNjBlZjM5MDg1ZWRjOGI4M2ViNzJh
ODcwMmJhYjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5jcHAKQEAg
LTI3LDYgKzI3LDggQEAgVE91dHB1dFZ1bGthbkdMU0w6OlRPdXRwdXRWdWxrYW5HTFNMKFRJbmZv
U2lua0Jhc2UgJm9ialNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2g6OkdMZW51bSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzaGFkZXJWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZvcmNlSGlnaHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBlbmFibGVQcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKICAgICA6IFRPdXRwdXRH
TFNMKG9ialNpbmssCiAgICAgICAgICAgICAgICAgICBjbGFtcGluZ1N0cmF0ZWd5LApAQCAtMzks
NyArNDEsOSBAQCBUT3V0cHV0VnVsa2FuR0xTTDo6VE91dHB1dFZ1bGthbkdMU0woVEluZm9TaW5r
QmFzZSAmb2JqU2luaywKICAgICAgICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKSwKICAgICAg
IG1OZXh0VW51c2VkQmluZGluZygwKSwKICAgICAgIG1OZXh0VW51c2VkSW5wdXRMb2NhdGlvbigw
KSwKLSAgICAgIG1OZXh0VW51c2VkT3V0cHV0TG9jYXRpb24oMCkKKyAgICAgIG1OZXh0VW51c2Vk
T3V0cHV0TG9jYXRpb24oMCksCisgICAgICBtRm9yY2VIaWdocChmb3JjZUhpZ2hwKSwKKyAgICAg
IG1FbmFibGVQcmVjaXNpb24oZW5hYmxlUHJlY2lzaW9uKQoge30KIAogdm9pZCBUT3V0cHV0VnVs
a2FuR0xTTDo6d3JpdGVMYXlvdXRRdWFsaWZpZXIoVEludGVybVR5cGVkICp2YXJpYWJsZSkKQEAg
LTE2OCw0ICsxNzIsMTcgQEAgdm9pZCBUT3V0cHV0VnVsa2FuR0xTTDo6d3JpdGVTdHJ1Y3RUeXBl
KGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSkKICAgICB9CiB9CiAKK2Jvb2wgVE91dHB1dFZ1
bGthbkdMU0w6OndyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbiBwcmVjaXNpb24pCit7
CisgICAgaWYgKChwcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVkKSB8fCAhbUVuYWJsZVByZWNpc2lv
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gb2Jq
U2luaygpOworICAgIGlmIChtRm9yY2VIaWdocCkKKyAgICAgICAgb3V0IDw8IGdldFByZWNpc2lv
blN0cmluZyhFYnBIaWdoKTsKKyAgICBlbHNlCisgICAgICAgIG91dCA8PCBnZXRQcmVjaXNpb25T
dHJpbmcocHJlY2lzaW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNl
IHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmgKaW5kZXggNmFkNjE1NGRjODBi
ODI2M2E5Zjg0MmIzOGQ2Y2VhZjExNjcxYTJkYS4uMzY4NWY1YzUzNWY3YjNiMmVlZGMxNzcxMDU1
MzMyNTAwOGU2MTJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wuaApAQCAt
MjUsNiArMjUsOCBAQCBjbGFzcyBUT3V0cHV0VnVsa2FuR0xTTCA6IHB1YmxpYyBUT3V0cHV0R0xT
TAogICAgICAgICAgICAgICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICBT
aFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3JjZUhp
Z2hwLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlUHJlY2lzaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOwogCiAgICAg
dm9pZCB3cml0ZVN0cnVjdFR5cGUoY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlKTsKQEAgLTQ4
LDYgKzUwLDcgQEAgY2xhc3MgVE91dHB1dFZ1bGthbkdMU0wgOiBwdWJsaWMgVE91dHB1dEdMU0wK
ICAgICB2b2lkIHdyaXRlVmFyaWFibGVUeXBlKGNvbnN0IFRUeXBlICZ0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbCAqc3ltYm9sLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQXJndW1lbnQpIG92ZXJyaWRlOworICAgIGJvb2wg
d3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEV2
ZXJ5IHJlc291cmNlIHRoYXQgcmVxdWlyZXMgc2V0ICYgYmluZGluZyBsYXlvdXQgcXVhbGlmaWVy
cyBpcyBhc3NpZ25lZCBzZXQgMCBhbmQgYW4KICAgICAvLyBhcmJpdHJhcnkgYmluZGluZyB3aGVu
IG91dHB1dHRpbmcgR0xTTC4gIEV2ZXJ5IGlucHV0L291dHB1dCB0aGF0IHJlcXVpcmVzIGEgbG9j
YXRpb24KQEAgLTU3LDYgKzYwLDEwIEBAIGNsYXNzIFRPdXRwdXRWdWxrYW5HTFNMIDogcHVibGlj
IFRPdXRwdXRHTFNMCiAgICAgdWludDMyX3QgbU5leHRVbnVzZWRCaW5kaW5nOwogICAgIHVpbnQz
Ml90IG1OZXh0VW51c2VkSW5wdXRMb2NhdGlvbjsKICAgICB1aW50MzJfdCBtTmV4dFVudXNlZE91
dHB1dExvY2F0aW9uOworCisgIHByaXZhdGU6CisgICAgYm9vbCBtRm9yY2VIaWdocDsKKyAgICBi
b29sIG1FbmFibGVQcmVjaXNpb247CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1
dFZ1bGthbkdMU0xGb3JNZXRhbC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0xGb3JNZXRhbC5tbQppbmRleCAzNWUwNmVi
OWVkMjBhM2NmMDA2NGVjZTUwNDYzMmUyZTUzYjQ2NDZiLi5mOWM3OTlhOTA4NzEzMzEzZDk5ZGFh
M2RmNDQzZWEzMjQyYTI2NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMRm9yTWV0YWwubW0KKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVs
a2FuR0xTTEZvck1ldGFsLm1tCkBAIC03MSw2ICs3MSw4IEBAIFRPdXRwdXRWdWxrYW5HTFNMRm9y
TWV0YWw6OlRPdXRwdXRWdWxrYW5HTFNMRm9yTWV0YWwoVEluZm9TaW5rQmFzZSAmb2JqU2luaywK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzaGFkZXJWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB0cnVl
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMpCiB7fQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJz
ZUNvbnRleHQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUGFyc2VDb250ZXh0LmNwcAppbmRleCA1YzRhMGQyZTIyMmUyZTQ2ZThjOGRkNTM0MWNi
NzU1MjAzOTI4ZTNhLi4xNzk1MTJlZGJiMGNkMTdiYjQyMzRkYWUyZTdjYTcyM2Q0NTE2ZjY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9QYXJzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKQEAgLTEwNjcsNiArMTA2NywzNSBAQCBi
b29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQXJyYXlFbGVtZW50SXNOb3RBcnJheShjb25zdCBUU291
cmNlTG9jICZsaW5lLAogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBDaGVjayBmb3IgYXJyYXkt
b2YtYXJyYXlzIGJlaW5nIHVzZWQgYXMgbm9uLWFsbG93ZWQgc2hhZGVyIGlucHV0cy9vdXRwdXRz
LgorYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0FycmF5T2ZBcnJheXNJbk91dChjb25zdCBUU291
cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUUHVibGljVHlwZSAmZWxlbWVudFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZhcnJheVR5cGUpCit7CisgICAgaWYg
KGFycmF5VHlwZS5pc0FycmF5T2ZBcnJheXMoKSkKKyAgICB7CisgICAgICAgIGlmIChlbGVtZW50
VHlwZS5xdWFsaWZpZXIgPT0gRXZxVmVydGV4T3V0KQorICAgICAgICB7CisgICAgICAgICAgICBl
cnJvcihsaW5lLCAidmVydGV4IHNoYWRlciBvdXRwdXQgY2Fubm90IGJlIGFuIGFycmF5IG9mIGFy
cmF5cyIsCisgICAgICAgICAgICAgICAgICBUVHlwZShlbGVtZW50VHlwZSkuZ2V0UXVhbGlmaWVy
U3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IGlmIChlbGVtZW50VHlwZS5xdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRJbikKKyAgICAgICAgewor
ICAgICAgICAgICAgZXJyb3IobGluZSwgImZyYWdtZW50IHNoYWRlciBpbnB1dCBjYW5ub3QgYmUg
YW4gYXJyYXkgb2YgYXJyYXlzIiwKKyAgICAgICAgICAgICAgICAgIFRUeXBlKGVsZW1lbnRUeXBl
KS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGVsZW1lbnRUeXBlLnF1YWxpZmllciA9PSBFdnFGcmFnbWVudE91
dCkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImZyYWdtZW50IHNoYWRlciBv
dXRwdXQgY2Fubm90IGJlIGFuIGFycmF5IG9mIGFycmF5cyIsCisgICAgICAgICAgICAgICAgICBU
VHlwZShlbGVtZW50VHlwZSkuZ2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiAvLyBD
aGVjayBpZiB0aGlzIHF1YWxpZmllZCBlbGVtZW50IHR5cGUgY2FuIGJlIGZvcm1lZCBpbnRvIGFu
IGFycmF5LiBUaGlzIGlzIG9ubHkgY2FsbGVkIHdoZW4gYXJyYXkKIC8vIGJyYWNrZXRzIGFyZSBh
c3NvY2lhdGVkIHdpdGggYW4gaWRlbnRpZmllciBpbiBhIGRlY2xhcmF0aW9uLCBsaWtlIHRoaXM6
CiAvLyAgIGZsb2F0IGFbMl07CkBAIC0yMDA5LDEwICsyMDM4LDEzIEBAIGJvb2wgVFBhcnNlQ29u
dGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBib29sIG5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6
ZXJzID0KKyAgICAgICAgSXNFeHRlbnNpb25FbmFibGVkKG1EaXJlY3RpdmVIYW5kbGVyLmV4dGVu
c2lvbkJlaGF2aW9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBURXh0ZW5zaW9uOjpF
WFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzKTsKICAgICBib29sIGds
b2JhbEluaXRXYXJuaW5nID0gZmFsc2U7CiAgICAgaWYgKHN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2
ZWwoKSAmJgogICAgICAgICAhVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihpbml0aWFsaXplciwg
bVNoYWRlclZlcnNpb24sIHNoOjpJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdsb2JhbEluaXRXYXJuaW5nKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnMs
ICZnbG9iYWxJbml0V2FybmluZykpCiAgICAgewogICAgICAgICAvLyBFcnJvciBtZXNzYWdlIGRv
ZXMgbm90IGNvbXBsZXRlbHkgbWF0Y2ggYmVoYXZpb3Igd2l0aCBFU1NMIDEuMDAsIGJ1dAogICAg
ICAgICAvLyB3ZSB3YW50IHRvIHN0ZWVyIGRldmVsb3BlcnMgdG93YXJkcyBvbmx5IHVzaW5nIGNv
bnN0YW50IGV4cHJlc3Npb25zLgpAQCAtMjU3NSw2ICsyNjA3LDggQEAgVEludGVybURlY2xhcmF0
aW9uICpUUGFyc2VDb250ZXh0OjpwYXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24oCiAgICAgVFR5
cGUgKmFycmF5VHlwZSA9IG5ldyBUVHlwZShlbGVtZW50VHlwZSk7CiAgICAgYXJyYXlUeXBlLT5t
YWtlQXJyYXlzKGFycmF5U2l6ZXMpOwogCisgICAgY2hlY2tBcnJheU9mQXJyYXlzSW5PdXQoaW5k
ZXhMb2NhdGlvbiwgZWxlbWVudFR5cGUsICphcnJheVR5cGUpOworCiAgICAgY2hlY2tHZW9tZXRy
eVNoYWRlcklucHV0QW5kU2V0QXJyYXlTaXplKGluZGV4TG9jYXRpb24sIGlkZW50aWZpZXIsIGFy
cmF5VHlwZSk7CiAKICAgICBjaGVja0NhbkJlRGVjbGFyZWRXaXRob3V0SW5pdGlhbGl6ZXIoaWRl
bnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcnJheVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJz
ZUNvbnRleHQuaAppbmRleCA5ZWMyNTJiMmVkZjI5MDU5ZTc2NWUzNTY2NTM1YjFmMGJlNjRlMzY2
Li40N2VhZGVkNzExOGM4MmMxYzA2OWM2MDYwMzZmZDIzOTU5NmI0ODc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRl
eHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9QYXJzZUNvbnRleHQuaApAQCAtMTM2LDYgKzEzNiw5IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQg
OiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB1bnNpZ25lZCBpbnQgY2hlY2tJc1ZhbGlkQXJyYXlT
aXplKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIFRJbnRlcm1UeXBlZCAqZXhwcik7CiAgICAgYm9v
bCBjaGVja0lzVmFsaWRRdWFsaWZpZXJGb3JBcnJheShjb25zdCBUU291cmNlTG9jICZsaW5lLCBj
b25zdCBUUHVibGljVHlwZSAmZWxlbWVudFF1YWxpZmllcik7CiAgICAgYm9vbCBjaGVja0FycmF5
RWxlbWVudElzTm90QXJyYXkoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5
cGUgJmVsZW1lbnRUeXBlKTsKKyAgICBib29sIGNoZWNrQXJyYXlPZkFycmF5c0luT3V0KGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUUHVibGljVHlwZSAmZWxlbWVudFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUVHlwZSAmYXJyYXlUeXBlKTsKICAgICBib29sIGNoZWNrSXNOb25Wb2lkKGNv
bnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbW11
dGFibGVTdHJpbmcgJmlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
QmFzaWNUeXBlICZ0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuY3BwCmluZGV4IGRhMTM5NmI1
YTUwOWZjNDBmMWE3NzUxOTY4YTI5MjU1ZjQzZjk2NzAuLmQ0YTYzMWIyZDdmZDliZDQ5YzY2YmVi
MTA2MDUzODZjYzMxYzY1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNwcApAQCAtNiwxNCAr
NiwxNCBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaCIKIAot
I2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUg
ImNvbW1vbi90bHMuaCIKIAogVExTSW5kZXggUG9vbEluZGV4ID0gVExTX0lOVkFMSURfSU5ERVg7
CiAKIGJvb2wgSW5pdGlhbGl6ZVBvb2xJbmRleCgpCiB7Ci0gICAgYXNzZXJ0KFBvb2xJbmRleCA9
PSBUTFNfSU5WQUxJRF9JTkRFWCk7CisgICAgQVNTRVJUKFBvb2xJbmRleCA9PSBUTFNfSU5WQUxJ
RF9JTkRFWCk7CiAKICAgICBQb29sSW5kZXggPSBDcmVhdGVUTFNJbmRleCgpOwogICAgIHJldHVy
biBQb29sSW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVg7CkBAIC0yMSw3ICsyMSw3IEBAIGJvb2wg
SW5pdGlhbGl6ZVBvb2xJbmRleCgpCiAKIHZvaWQgRnJlZVBvb2xJbmRleCgpCiB7Ci0gICAgYXNz
ZXJ0KFBvb2xJbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCk7CisgICAgQVNTRVJUKFBvb2xJbmRl
eCAhPSBUTFNfSU5WQUxJRF9JTkRFWCk7CiAKICAgICBEZXN0cm95VExTSW5kZXgoUG9vbEluZGV4
KTsKICAgICBQb29sSW5kZXggPSBUTFNfSU5WQUxJRF9JTkRFWDsKQEAgLTI5LDEyICsyOSwxMiBA
QCB2b2lkIEZyZWVQb29sSW5kZXgoKQogCiBhbmdsZTo6UG9vbEFsbG9jYXRvciAqR2V0R2xvYmFs
UG9vbEFsbG9jYXRvcigpCiB7Ci0gICAgYXNzZXJ0KFBvb2xJbmRleCAhPSBUTFNfSU5WQUxJRF9J
TkRFWCk7CisgICAgQVNTRVJUKFBvb2xJbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGFuZ2xlOjpQb29sQWxsb2NhdG9yICo+KEdldFRMU1ZhbHVlKFBv
b2xJbmRleCkpOwogfQogCiB2b2lkIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoYW5nbGU6OlBvb2xB
bGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IpCiB7Ci0gICAgYXNzZXJ0KFBvb2xJbmRleCAhPSBUTFNf
SU5WQUxJRF9JTkRFWCk7CisgICAgQVNTRVJUKFBvb2xJbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRF
WCk7CiAgICAgU2V0VExTVmFsdWUoUG9vbEluZGV4LCBwb29sQWxsb2NhdG9yKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1No
YWRlckxhbmcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU2hhZGVyTGFuZy5jcHAKaW5kZXggZmYzODYyNmQwMWRkNWVjNTE1ZTQ0N2E5NzI1MDlm
OGRkM2Q5NDQ4OS4uNTdhY2U2N2Y2NTJlNTM2OTcxMDg1YzViYjc0M2E0MjEyMTQzOTI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2hhZGVyTGFuZy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAKQEAgLTE0OSwzMCArMTQ5LDMxIEBAIHZvaWQgSW5p
dEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzICpyZXNvdXJjZXMpCiAgICAgcmVz
b3VyY2VzLT5NYXhEcmF3QnVmZmVycyAgICAgICAgICAgICAgID0gMTsKIAogICAgIC8vIEV4dGVu
c2lvbnMuCi0gICAgcmVzb3VyY2VzLT5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgICAgICAgICAg
ICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgICAgICAg
ICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbF9l
c3NsMyAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5OVl9FR0xfc3RyZWFtX2NvbnN1
bWVyX2V4dGVybmFsICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPkFSQl90ZXh0dXJlX3Jl
Y3RhbmdsZSAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+RVhUX2JsZW5k
X2Z1bmNfZXh0ZW5kZWQgICAgICAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRf
ZHJhd19idWZmZXJzICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMt
PkVYVF9mcmFnX2RlcHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291
cmNlcy0+RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCAgICAgICAgICAgICAgICAgICA9IDA7Ci0gICAg
cmVzb3VyY2VzLT5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICAgICAgICAgICAgID0gMDsK
LSAgICByZXNvdXJjZXMtPkVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggICAgICAgICAgICAg
PSAwOwotICAgIHJlc291cmNlcy0+TlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgICAgICAg
ICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAg
ICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPk9WUl9tdWx0aXZpZXcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+T1ZSX211bHRpdmlldzIgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRfWVVWX3RhcmdldCAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKLSAgICByZXNvdXJjZXMtPkVYVF9nZW9tZXRy
eV9zaGFkZXIgICAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+RVhUX2dw
dV9zaGFkZXI1ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5P
RVNfdGV4dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5ID0gMDsKLSAgICByZXNvdXJj
ZXMtPk9FU190ZXh0dXJlXzNEICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIHJl
c291cmNlcy0+QU5HTEVfdGV4dHVyZV9tdWx0aXNhbXBsZSAgICAgICAgICAgICAgICA9IDA7Ci0g
ICAgcmVzb3VyY2VzLT5BTkdMRV9tdWx0aV9kcmF3ICAgICAgICAgICAgICAgICAgICAgICAgID0g
MDsKLSAgICByZXNvdXJjZXMtPkFOR0xFX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UgICAgICAg
ICAgPSAwOwotICAgIHJlc291cmNlcy0+V0VCR0xfdmlkZW9fdGV4dHVyZSAgICAgICAgICAgICAg
ICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgICAg
ICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJu
YWwgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+T0VTX0VHTF9pbWFn
ZV9leHRlcm5hbF9lc3NsMyAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5OVl9F
R0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJj
ZXMtPkFSQl90ZXh0dXJlX3JlY3RhbmdsZSAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAg
IHJlc291cmNlcy0+RVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgICAgICAgICAgICAgICAgICAgICA9
IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZHJhd19idWZmZXJzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9mcmFnX2RlcHRoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+RVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5XRUJHTF9kZWJ1Z19z
aGFkZXJfcHJlY2lzaW9uICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9z
aGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNl
cy0+TlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgICAgICAgICAgICAgICA9IDA7CisgICAg
cmVzb3VyY2VzLT5BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgICAgICAgICAgICAgID0g
MDsKKyAgICByZXNvdXJjZXMtPk9WUl9tdWx0aXZpZXcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAwOworICAgIHJlc291cmNlcy0+T1ZSX211bHRpdmlldzIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfWVVWX3RhcmdldCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9nZW9tZXRyeV9z
aGFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+RVhUX2dw
dV9zaGFkZXI1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2Vz
LT5FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzID0gMDsKKyAgICBy
ZXNvdXJjZXMtPk9FU190ZXh0dXJlX3N0b3JhZ2VfbXVsdGlzYW1wbGVfMmRfYXJyYXkgICAgPSAw
OworICAgIHJlc291cmNlcy0+T0VTX3RleHR1cmVfM0QgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5BTkdMRV90ZXh0dXJlX211bHRpc2FtcGxlICAgICAg
ICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkFOR0xFX211bHRpX2RyYXcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+QU5HTEVfYmFzZV92ZXJ0
ZXhfYmFzZV9pbnN0YW5jZSAgICAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5XRUJHTF92
aWRlb190ZXh0dXJlICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKIAogICAgIHJlc291cmNl
cy0+TlZfZHJhd19idWZmZXJzID0gMDsKIApAQCAtNzEzLDEyICs3MTQsMTIgQEAgY29uc3QgY2hh
ciBrRGVmYXVsdFVuaWZvcm1zTmFtZUdTW10gID0gImRlZmF1bHRVbmlmb3Jtc0dTIjsKIGNvbnN0
IGNoYXIga0RlZmF1bHRVbmlmb3Jtc05hbWVGU1tdICA9ICJkZWZhdWx0VW5pZm9ybXNGUyI7CiBj
b25zdCBjaGFyIGtEZWZhdWx0VW5pZm9ybXNOYW1lQ1NbXSAgPSAiZGVmYXVsdFVuaWZvcm1zQ1Mi
OwogCi0vLyBJbnRlcmZhY2UgYmxvY2sgYW5kIHZhcmlhYmxlIG5hbWUgY29udGFpbmluZyBkcml2
ZXIgdW5pZm9ybXMKKy8vIEludGVyZmFjZSBibG9jayBhbmQgdmFyaWFibGUgbmFtZXMgY29udGFp
bmluZyBkcml2ZXIgdW5pZm9ybXMKIGNvbnN0IGNoYXIga0RyaXZlclVuaWZvcm1zQmxvY2tOYW1l
W10gPSAiQU5HTEVVbmlmb3JtQmxvY2siOwogY29uc3QgY2hhciBrRHJpdmVyVW5pZm9ybXNWYXJO
YW1lW10gICA9ICJBTkdMRVVuaWZvcm1zIjsKIAotLy8gSW50ZXJmYWNlIGJsb2NrIGFycmF5IHZh
cmlhYmxlIG5hbWUgdXNlZCBmb3IgYXRvbWljIGNvdW50ZXIgZW11bGF0aW9uCi1jb25zdCBjaGFy
IGtBdG9taWNDb3VudGVyc1Zhck5hbWVbXSA9ICJhdG9taWNDb3VudGVycyI7CisvLyBJbnRlcmZh
Y2UgYmxvY2sgYXJyYXkgbmFtZSB1c2VkIGZvciBhdG9taWMgY291bnRlciBlbXVsYXRpb24KK2Nv
bnN0IGNoYXIga0F0b21pY0NvdW50ZXJzQmxvY2tOYW1lW10gPSAiQU5HTEVBdG9taWNDb3VudGVy
cyI7CiAKIGNvbnN0IGNoYXIga0xpbmVSYXN0ZXJFbXVsYXRpb25Qb3NpdGlvbltdID0gIkFOR0xF
UG9zaXRpb24iOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAKaW5kZXggNTY2
OTUxY2E5MDhjOWI5YzgyMDE3N2Y3YjBlMDAzNDJjMzU3NWJkOC4uNTFmOTc4YjBiYjJjNjljZDU1
ZjQ0ZjcyY2RmZDY2MjA2NmUyYzAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NM
LmNwcApAQCAtOSw3ICs5LDYgQEAKICNpbmNsdWRlICJhbmdsZV9nbC5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NMLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci90cmVlX29wcy9FbXVsYXRlUHJlY2lzaW9uLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5oIgogCiBuYW1l
c3BhY2Ugc2gKQEAgLTQ3LDE5ICs0Niw5IEBAIGJvb2wgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0
ZShUSW50ZXJtQmxvY2sgKnJvb3QsCiAgICAgLy8gbGlrZSBub24tcHJlcHJvY2Vzc29yIHRva2Vu
cy4KICAgICB3cml0ZVByYWdtYShjb21waWxlT3B0aW9ucyk7CiAKLSAgICBib29sIHByZWNpc2lv
bkVtdWxhdGlvbiA9Ci0gICAgICAgIGdldFJlc291cmNlcygpLldFQkdMX2RlYnVnX3NoYWRlcl9w
cmVjaXNpb24gJiYgZ2V0UHJhZ21hKCkuZGVidWdTaGFkZXJQcmVjaXNpb247Ci0KLSAgICBpZiAo
cHJlY2lzaW9uRW11bGF0aW9uKQotICAgIHsKLSAgICAgICAgRW11bGF0ZVByZWNpc2lvbiBlbXVs
YXRlUHJlY2lzaW9uKCZnZXRTeW1ib2xUYWJsZSgpKTsKLSAgICAgICAgcm9vdC0+dHJhdmVyc2Uo
JmVtdWxhdGVQcmVjaXNpb24pOwotICAgICAgICBpZiAoIWVtdWxhdGVQcmVjaXNpb24udXBkYXRl
VHJlZSh0aGlzLCByb290KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgICAgIGVtdWxhdGVQcmVjaXNpb24ud3JpdGVFbXVsYXRpb25IZWxwZXJz
KHNpbmssIHNoYWRlclZlciwgU0hfRVNTTF9PVVRQVVQpOwotICAgIH0KKyAgICBib29sIHByZWNp
c2lvbkVtdWxhdGlvbiA9IGZhbHNlOworICAgIGlmICghZW11bGF0ZVByZWNpc2lvbklmTmVlZGVk
KHJvb3QsIHNpbmssICZwcmVjaXNpb25FbXVsYXRpb24sIFNIX0VTU0xfT1VUUFVUKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFSZWNvcmRDb25zdGFudFByZWNpc2lvbih0aGlz
LCByb290LCAmZ2V0U3ltYm9sVGFibGUoKSkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckdMU0wuY3BwCmluZGV4IDczYzhhYTEyMjQwMDNiZDcyNjU2ZTQ4ZmQzMDBjN2ZhMDY5ZTc3
YzQuLmJmNDg0ZGJiMzZhOTQxNzM2OTNkZDE3NDYxOWEzNWE5MTliNDY0ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JHTFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAKQEAgLTExLDcgKzExLDYgQEAKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL091dHB1dEdMU0wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Zl
cnNpb25HTFNMLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9FbXVs
YXRlUHJlY2lzaW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9S
ZXdyaXRlUm93TWFqb3JNYXRyaWNlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
dHJlZV9vcHMvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL3RyZWVfb3BzL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oIgpAQCAt
MTE4LDE5ICsxMTcsOSBAQCBib29sIFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xhdGUoVEludGVybUJs
b2NrICpyb290LAogICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBwcmVjaXNpb25FbXVsYXRp
b24gPQotICAgICAgICBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9u
ICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOwotCi0gICAgaWYgKHByZWNpc2lv
bkVtdWxhdGlvbikKLSAgICB7Ci0gICAgICAgIEVtdWxhdGVQcmVjaXNpb24gZW11bGF0ZVByZWNp
c2lvbigmZ2V0U3ltYm9sVGFibGUoKSk7Ci0gICAgICAgIHJvb3QtPnRyYXZlcnNlKCZlbXVsYXRl
UHJlY2lzaW9uKTsKLSAgICAgICAgaWYgKCFlbXVsYXRlUHJlY2lzaW9uLnVwZGF0ZVRyZWUodGhp
cywgcm9vdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgICAgICBlbXVsYXRlUHJlY2lzaW9uLndyaXRlRW11bGF0aW9uSGVscGVycyhzaW5rLCBn
ZXRTaGFkZXJWZXJzaW9uKCksIGdldE91dHB1dFR5cGUoKSk7Ci0gICAgfQorICAgIGJvb2wgcHJl
Y2lzaW9uRW11bGF0aW9uID0gZmFsc2U7CisgICAgaWYgKCFlbXVsYXRlUHJlY2lzaW9uSWZOZWVk
ZWQocm9vdCwgc2luaywgJnByZWNpc2lvbkVtdWxhdGlvbiwgZ2V0T3V0cHV0VHlwZSgpKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV3JpdGUgZW11bGF0ZWQgYnVpbHQtaW4gZnVu
Y3Rpb25zIGlmIG5lZWRlZC4KICAgICBpZiAoIWdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCku
aXNPdXRwdXRFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCmluZGV4
IGJmZjI1Mzk2NDg0MDc3Nzg2YWMzODY3YmI4YWVjNjM5NmMzYTAyYTUuLjI0MTljYjNjZjQ2NDk4
ZjNmYTM4NjI4NWE4MTJjYTdjNjZkODZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
SExTTC5jcHAKQEAgLTEwLDcgKzEwLDYgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L3RyZWVfb3BzL0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci90cmVlX29wcy9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuaCIK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL0JyZWFrVmFyaWFibGVBbGlh
c2luZ0luSW5uZXJMb29wcy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV9v
cHMvRW11bGF0ZVByZWNpc2lvbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJl
ZV9vcHMvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci90cmVlX29wcy9QcnVuZUVtcHR5Q2FzZXMuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUR5bmFtaWNJbmRleGluZy5oIgpAQCAtMTQwLDIw
ICsxMzksOSBAQCBib29sIFRyYW5zbGF0b3JITFNMOjp0cmFuc2xhdGUoVEludGVybUJsb2NrICpy
b290LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBwcmVjaXNpb25F
bXVsYXRpb24gPQotICAgICAgICBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJl
Y2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOwotCi0gICAgaWYgKHBy
ZWNpc2lvbkVtdWxhdGlvbikKLSAgICB7Ci0gICAgICAgIEVtdWxhdGVQcmVjaXNpb24gZW11bGF0
ZVByZWNpc2lvbigmZ2V0U3ltYm9sVGFibGUoKSk7Ci0gICAgICAgIHJvb3QtPnRyYXZlcnNlKCZl
bXVsYXRlUHJlY2lzaW9uKTsKLSAgICAgICAgaWYgKCFlbXVsYXRlUHJlY2lzaW9uLnVwZGF0ZVRy
ZWUodGhpcywgcm9vdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICBlbXVsYXRlUHJlY2lzaW9uLndyaXRlRW11bGF0aW9uSGVscGVycyhn
ZXRJbmZvU2luaygpLm9iaiwgZ2V0U2hhZGVyVmVyc2lvbigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXRwdXRUeXBlKCkpOwotICAgIH0KKyAg
ICBib29sIHByZWNpc2lvbkVtdWxhdGlvbiA9IGZhbHNlOworICAgIGlmICghZW11bGF0ZVByZWNp
c2lvbklmTmVlZGVkKHJvb3QsIGdldEluZm9TaW5rKCkub2JqLCAmcHJlY2lzaW9uRW11bGF0aW9u
LCBnZXRPdXRwdXRUeXBlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoKGNv
bXBpbGVPcHRpb25zICYgU0hfRVhQQU5EX1NFTEVDVF9ITFNMX0lOVEVHRVJfUE9XX0VYUFJFU1NJ
T05TKSAhPSAwKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yTWV0YWwuY3BwCmlu
ZGV4IGNlNGU5ZWEyOGY1ZGM5ODg3NTMzNDUyZmVkZGZhOTkyZWI1MGFlZGUuLjQzNTM5YmU4N2Nj
ODllNjMxMGIzZWM4NjU0ODhhNzg0NjRiYmUwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JNZXRhbC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvck1ldGFsLmNwcApAQCAtNjcsOSArNjcsMTAgQEAgYm9vbCBUcmFuc2xhdG9yTWV0YWw6OnRy
YW5zbGF0ZShUSW50ZXJtQmxvY2sgKnJvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBlcmZvcm1hbmNlRGlhZ25vc3RpY3MgKnBlcmZEaWFnbm9zdGljcykKIHsKICAgICBUSW5m
b1NpbmtCYXNlICZzaW5rID0gZ2V0SW5mb1NpbmsoKS5vYmo7CisKICAgICBUT3V0cHV0VnVsa2Fu
R0xTTCBvdXRwdXRHTFNMKHNpbmssIGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCksIGdl
dEhhc2hGdW5jdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmFt
ZU1hcCgpLCAmZ2V0U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVHlwZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0U2hhZGVyVmVyc2lvbigpLCBnZXRPdXRwdXRUeXBlKCks
IGNvbXBpbGVPcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNo
YWRlclZlcnNpb24oKSwgZ2V0T3V0cHV0VHlwZSgpLCBmYWxzZSwgdHJ1ZSwgY29tcGlsZU9wdGlv
bnMpOwogCiAgICAgY29uc3QgVFZhcmlhYmxlICpkcml2ZXJVbmlmb3JtcyA9IG51bGxwdHI7CiAg
ICAgaWYgKCFUcmFuc2xhdG9yVnVsa2FuOjp0cmFuc2xhdGVJbXBsKHJvb3QsIGNvbXBpbGVPcHRp
b25zLCBwZXJmRGlhZ25vc3RpY3MsICZkcml2ZXJVbmlmb3JtcywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxr
YW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvclZ1bGthbi5jcHAKaW5kZXggZDY1NzM2ZjZmZGQ1MjllNTBkZTM0NTNmZjJjY2Qz
NzY3NWMxMDgzNi4uZmQ4M2FkY2IwZDc4MWJjYjQ3OGYxY2M4NzczODUyNzVhOGNkOWU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvclZ1bGthbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1bGthbi5jcHAKQEAgLTE5LDYgKzE5LDcgQEAK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wuaCIKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1N0YXRpY1R5cGUuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL3RyZWVfb3BzL05hbWVFbWJlZGRlZFVuaWZvcm1TdHJ1Y3RzLmgiCisjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVBdG9taWNDb3VudGVyQnVp
bHRpbnMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUlu
YWN0aXZlSW50ZXJmYWNlVmFyaWFibGVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci90cmVlX29wcy9SZXdyaXRlQXRvbWljQ291bnRlcnMuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL3RyZWVfb3BzL1Jld3JpdGVDdWJlTWFwU2FtcGxlcnNBczJEQXJyYXkuaCIKQEAg
LTE4MCwxMSArMTgxLDEyIEBAIGNvbnN0ZXhwciBjb25zdCBjaGFyIGtYZmJWZXJ0aWNlc1BlckRy
YXdbXSAgID0gInhmYlZlcnRpY2VzUGVyRHJhdyI7CiBjb25zdGV4cHIgY29uc3QgY2hhciBrWGZi
QnVmZmVyT2Zmc2V0c1tdICAgICA9ICJ4ZmJCdWZmZXJPZmZzZXRzIjsKIGNvbnN0ZXhwciBjb25z
dCBjaGFyIGtBY2JCdWZmZXJPZmZzZXRzW10gICAgID0gImFjYkJ1ZmZlck9mZnNldHMiOwogY29u
c3RleHByIGNvbnN0IGNoYXIga0RlcHRoUmFuZ2VbXSAgICAgICAgICAgPSAiZGVwdGhSYW5nZSI7
Citjb25zdGV4cHIgY29uc3QgY2hhciBrUHJlUm90YXRpb25bXSAgICAgICAgICA9ICJwcmVSb3Rh
dGlvbiI7CiAKLWNvbnN0ZXhwciBzaXplX3Qga051bUdyYXBoaWNzRHJpdmVyVW5pZm9ybXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDk7Citjb25zdGV4
cHIgc2l6ZV90IGtOdW1HcmFwaGljc0RyaXZlclVuaWZvcm1zICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMDsKIGNvbnN0ZXhwciBzdGQ6OmFycmF5PGNv
bnN0IGNoYXIgKiwga051bUdyYXBoaWNzRHJpdmVyVW5pZm9ybXM+IGtHcmFwaGljc0RyaXZlclVu
aWZvcm1OYW1lcyA9IHsKICAgICB7a1ZpZXdwb3J0LCBrSGFsZlJlbmRlckFyZWFIZWlnaHQsIGtW
aWV3cG9ydFlTY2FsZSwga05lZ1ZpZXdwb3J0WVNjYWxlLCBrWGZiQWN0aXZlVW5wYXVzZWQsCi0g
ICAgIGtYZmJWZXJ0aWNlc1BlckRyYXcsIGtYZmJCdWZmZXJPZmZzZXRzLCBrQWNiQnVmZmVyT2Zm
c2V0cywga0RlcHRoUmFuZ2V9fTsKKyAgICAga1hmYlZlcnRpY2VzUGVyRHJhdywga1hmYkJ1ZmZl
ck9mZnNldHMsIGtBY2JCdWZmZXJPZmZzZXRzLCBrRGVwdGhSYW5nZSwga1ByZVJvdGF0aW9ufX07
CiAKIGNvbnN0ZXhwciBzaXplX3Qga051bUNvbXB1dGVEcml2ZXJVbmlmb3JtcyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOwogY29uc3RleHByIHN0ZDo6
YXJyYXk8Y29uc3QgY2hhciAqLCBrTnVtQ29tcHV0ZURyaXZlclVuaWZvcm1zPiBrQ29tcHV0ZURy
aXZlclVuaWZvcm1OYW1lcyA9IHsKQEAgLTMzMiw2ICszMzQsMzUgQEAgQU5HTEVfTk9fRElTQ0FS
RCBib29sIEFwcGVuZFZlcnRleFNoYWRlckRlcHRoQ29ycmVjdGlvblRvTWFpbihUQ29tcGlsZXIg
KmNvbXBpbGUKICAgICByZXR1cm4gUnVuQXRUaGVFbmRPZlNoYWRlcihjb21waWxlciwgcm9vdCwg
YXNzaWdubWVudCwgc3ltYm9sVGFibGUpOwogfQogCisvLyBUaGlzIG9wZXJhdGlvbiBwZXJmb3Jt
cyBBbmRyb2lkIHByZS1yb3RhdGlvbiBhbmQgeS1mbGlwLiAgRm9yIEFuZHJvaWQgKGFuZCBwb3Rl
bnRpYWxseSBvdGhlcgorLy8gcGxhdGZvcm1zKSwgdGhlIGRldmljZSBtYXkgcm90YXRlLCBzdWNo
IHRoYXQgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbiBpcyByb3RhdGVkCisvLyBy
ZWxhdGl2ZSB0byB0aGUgbmF0aXZlIG9yaWVudGF0aW9uIG9mIHRoZSBkZXZpY2UuICBUaGlzIGlz
IGNvcnJlY3RlZCBpbiBwYXJ0IGJ5IG11bHRpcGx5aW5nCisvLyBnbF9Qb3NpdGlvbiBieSBhIG1h
dDIuCisvLyBUaGUgZXF1YXRpb25zIHJlZHVjZSB0byBhbiBleHByZXNzaW9uOgorLy8KKy8vICAg
ICBnbF9Qb3NpdGlvbi54eSA9IGdsX1Bvc2l0aW9uLnh5ICogcHJlUm90YXRpb24KK0FOR0xFX05P
X0RJU0NBUkQgYm9vbCBBcHBlbmRQcmVSb3RhdGlvbihUQ29tcGlsZXIgKmNvbXBpbGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqcm9vdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUgKnN5
bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRWYXJpYWJsZSAqZHJpdmVyVW5pZm9ybXMpCit7CisgICAgVEludGVybUJpbmFyeSAqcHJlUm90
YXRpb25SZWYgPSBDcmVhdGVEcml2ZXJVbmlmb3JtUmVmKGRyaXZlclVuaWZvcm1zLCBrUHJlUm90
YXRpb24pOworICAgIFRJbnRlcm1TeW1ib2wgKmdsUG9zICAgICAgICAgID0gbmV3IFRJbnRlcm1T
eW1ib2woQnVpbHRJblZhcmlhYmxlOjpnbF9Qb3NpdGlvbigpKTsKKyAgICBUVmVjdG9yPGludD4g
c3dpenpsZU9mZnNldFhZICA9IHswLCAxfTsKKyAgICBUSW50ZXJtU3dpenpsZSAqZ2xQb3NYWSAg
ICAgICA9IG5ldyBUSW50ZXJtU3dpenpsZShnbFBvcywgc3dpenpsZU9mZnNldFhZKTsKKworICAg
IC8vIENyZWF0ZSB0aGUgZXhwcmVzc2lvbiAiKGdsX1Bvc2l0aW9uLnh5ICogcHJlUm90YXRpb24p
IgorICAgIFRJbnRlcm1CaW5hcnkgKnpSb3RhdGVkID0KKyAgICAgICAgbmV3IFRJbnRlcm1CaW5h
cnkoRU9wTWF0cml4VGltZXNWZWN0b3IsIHByZVJvdGF0aW9uUmVmLT5kZWVwQ29weSgpLCBnbFBv
c1hZLT5kZWVwQ29weSgpKTsKKworICAgIC8vIENyZWF0ZSB0aGUgYXNzaWdubWVudCAiZ2xfUG9z
aXRpb24ueHkgPSAoZ2xfUG9zaXRpb24ueHkgKiBwcmVSb3RhdGlvbikiCisgICAgVEludGVybUJp
bmFyeSAqYXNzaWdubWVudCA9CisgICAgICAgIG5ldyBUSW50ZXJtQmluYXJ5KFRPcGVyYXRvcjo6
RU9wQXNzaWduLCBnbFBvc1hZLT5kZWVwQ29weSgpLCB6Um90YXRlZCk7CisKKyAgICAvLyBBcHBl
bmQgdGhlIGFzc2lnbm1lbnQgYXMgYSBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgc2hhZGVy
LgorICAgIHJldHVybiBSdW5BdFRoZUVuZE9mU2hhZGVyKGNvbXBpbGVyLCByb290LCBhc3NpZ25t
ZW50LCBzeW1ib2xUYWJsZSk7Cit9CisKIEFOR0xFX05PX0RJU0NBUkQgYm9vbCBBcHBlbmRWZXJ0
ZXhTaGFkZXJUcmFuc2Zvcm1GZWVkYmFja091dHB1dFRvTWFpbihUQ29tcGlsZXIgKmNvbXBpbGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqcm9vdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9s
VGFibGUgKnN5bWJvbFRhYmxlKQpAQCAtMzkwLDYgKzQyMSw3IEBAIGNvbnN0IFRWYXJpYWJsZSAq
QWRkR3JhcGhpY3NEcml2ZXJVbmlmb3Jtc1RvU2hhZGVyKFRJbnRlcm1CbG9jayAqcm9vdCwgVFN5
bWJvbFRhCiAgICAgICAgIG5ldyBUVHlwZShFYnRJbnQsIDQpLAogICAgICAgICBuZXcgVFR5cGUo
RWJ0VUludCwgNCksCiAgICAgICAgIGVtdWxhdGVkRGVwdGhSYW5nZVR5cGUsCisgICAgICAgIG5l
dyBUVHlwZShFYnRGbG9hdCwgMiwgMiksCiAgICAgfX07CiAKICAgICBmb3IgKHNpemVfdCB1bmlm
b3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBrTnVtR3JhcGhpY3NEcml2ZXJVbmlmb3Jtczsg
Kyt1bmlmb3JtSW5kZXgpCkBAIC04MzMsNiArODY1LDE2IEBAIGJvb2wgVHJhbnNsYXRvclZ1bGth
bjo6dHJhbnNsYXRlSW1wbChUSW50ZXJtQmxvY2sgKnJvb3QsCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoZ2V0U2hhZGVyVmVyc2lvbigp
ID49IDMxMCkKKyAgICB7CisgICAgICAgIC8vIFZ1bGthbiBkb2Vzbid0IHN1cHBvcnQgQXRvbWlj
IFN0b3JhZ2UgYXMgYSBTdG9yYWdlIENsYXNzLCBidXQgd2UndmUgc2VlbgorICAgICAgICAvLyBj
YXNlcyB3aGVyZSBidWlsdGlucyBhcmUgdXNpbmcgaXQgZXZlbiB3aXRoIG5vIGFjdGl2ZSBhdG9t
aWMgY291bnRlcnMuCisgICAgICAgIC8vIFRoaXMgcGFzcyBzaW1wbHkgcmVtb3ZlcyB0aG9zZSBi
dWlsdGlucyBpbiB0aGF0IHNjZW5hcmlvLgorICAgICAgICBpZiAoIVJlbW92ZUF0b21pY0NvdW50
ZXJCdWlsdGlucyh0aGlzLCByb290KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGdldFNoYWRlclR5cGUoKSAhPSBHTF9D
T01QVVRFX1NIQURFUikKICAgICB7CkBAIC05NzYsNiArMTAxOCwxMCBAQCBib29sIFRyYW5zbGF0
b3JWdWxrYW46OnRyYW5zbGF0ZUltcGwoVEludGVybUJsb2NrICpyb290LAogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFBcHBlbmRQ
cmVSb3RhdGlvbih0aGlzLCByb290LCAmZ2V0U3ltYm9sVGFibGUoKSwgZHJpdmVyVW5pZm9ybXMp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9
CiAgICAgZWxzZSBpZiAoZ2V0U2hhZGVyVHlwZSgpID09IEdMX0dFT01FVFJZX1NIQURFUikKICAg
ICB7CkBAIC0xMDA4LDkgKzEwNTQsMTcgQEAgYm9vbCBUcmFuc2xhdG9yVnVsa2FuOjp0cmFuc2xh
dGUoVEludGVybUJsb2NrICpyb290LAogewogCiAgICAgVEluZm9TaW5rQmFzZSAmc2luayA9IGdl
dEluZm9TaW5rKCkub2JqOworCisgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBmYWxzZTsK
KyAgICBpZiAoIWVtdWxhdGVQcmVjaXNpb25JZk5lZWRlZChyb290LCBzaW5rLCAmcHJlY2lzaW9u
RW11bGF0aW9uLCBTSF9HTFNMX1ZVTEtBTl9PVVRQVVQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBib29sIGVuYWJsZVByZWNpc2lvbiA9ICgoY29tcGlsZU9wdGlvbnMgJiBTSF9JR05P
UkVfUFJFQ0lTSU9OX1FVQUxJRklFUlMpID09IDApOworCiAgICAgVE91dHB1dFZ1bGthbkdMU0wg
b3V0cHV0R0xTTChzaW5rLCBnZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpLCBnZXRIYXNo
RnVuY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5hbWVNYXAo
KSwgJmdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclR5cGUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldFNoYWRlclZlcnNpb24oKSwgZ2V0T3V0cHV0VHlwZSgpLCBjb21w
aWxlT3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTaGFkZXJW
ZXJzaW9uKCksIGdldE91dHB1dFR5cGUoKSwgcHJlY2lzaW9uRW11bGF0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUHJlY2lzaW9uLCBjb21waWxlT3B0aW9ucyk7
CiAKICAgICBpZiAoIXRyYW5zbGF0ZUltcGwocm9vdCwgY29tcGlsZU9wdGlvbnMsIHBlcmZEaWFn
bm9zdGljcywgbnVsbHB0ciwgJm91dHB1dEdMU0wpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFs
SW5pdGlhbGl6ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAKaW5kZXggMDZmNTFlZGQ3ZDA3
ZThjN2FmYzZiY2YxMThmMzdjYjBkMzVkZTViMS4uZmVkYzhiNDkwNDE3YTM0ZjFmNjE2NmVjYzQ4
NjFkYWM4NjRiZDgwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9i
YWxJbml0aWFsaXplci5jcHAKQEAgLTE5LDcgKzE5LDkgQEAgY29uc3QgaW50IGtNYXhBbGxvd2Vk
VHJhdmVyc2FsRGVwdGggPSAyNTY7CiBjbGFzcyBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJh
dmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgotICAgIFZhbGlk
YXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXIoaW50IHNoYWRlclZlcnNpb24sIGJvb2wgaXNX
ZWJHTCk7CisgICAgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcihpbnQgc2hhZGVy
VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNX
ZWJHTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzRXh0
Tm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnMpOwogCiAgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sICpub2RlKSBvdmVycmlkZTsKICAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkgb3ZlcnJpZGU7CkBAIC0zMSw4ICszMywyNCBAQCBj
bGFzcyBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1U
cmF2ZXJzZXIKICAgICBib29sIGlzc3VlV2FybmluZygpIGNvbnN0IHsgcmV0dXJuIG1Jc3N1ZVdh
cm5pbmc7IH0KIAogICBwcml2YXRlOgorICAgIEFOR0xFX0lOTElORSB2b2lkIG9uTm9uQ29uc3RJ
bml0aWFsaXplclZpc2l0KGJvb2wgYWNjZXB0KQorICAgIHsKKyAgICAgICAgaWYgKGFjY2VwdCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtRXh0Tm9uQ29uc3RHbG9iYWxJbml0aWFsaXpl
cnMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbUlzc3VlV2FybmluZyA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgaW50IG1T
aGFkZXJWZXJzaW9uOwogICAgIGJvb2wgbUlzV2ViR0w7CisgICAgYm9vbCBtRXh0Tm9uQ29uc3RH
bG9iYWxJbml0aWFsaXplcnM7CiAgICAgYm9vbCBtSXNWYWxpZDsKICAgICBib29sIG1Jc3N1ZVdh
cm5pbmc7CiB9OwpAQCAtNTEsMTQgKzY5LDggQEAgdm9pZCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxp
emVyVHJhdmVyc2VyOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQogICAgICAgICAg
ICAgLy8gV2UgYWxsb3cgdGhlc2UgY2FzZXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGxlZ2FjeSBF
U1NMIDEuMDAgY29udGVudC4KICAgICAgICAgICAgIC8vIEltcGxlbWVudCBzdHJpY3RlciBydWxl
cyBmb3IgRVNTTCAzLjAwIHNpbmNlIHRoZXJlJ3Mgbm8gbGVnYWN5IGNvbnRlbnQgdG8gZGVhbAog
ICAgICAgICAgICAgLy8gd2l0aC4KLSAgICAgICAgICAgIGlmICgobVNoYWRlclZlcnNpb24gPj0g
MzAwKSB8fCAhbUlzV2ViR0wpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUlzVmFs
aWQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtSXNzdWVXYXJuaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG9uTm9uQ29uc3RJbml0aWFsaXplclZpc2l0KG1FeHROb25Db25zdEdsb2Jh
bEluaXRpYWxpemVycyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KChtU2hhZGVyVmVyc2lvbiA8IDMwMCkgJiYgbUlzV2ViR0wpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbUlzVmFsaWQgPSBmYWxzZTsKQEAgLTc0
LDE0ICs4Niw4IEBAIHZvaWQgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcjo6dmlz
aXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uCiAgICAgICAgIGNhc2UgRXZxQ29u
c3Q6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFdnFUZW1wb3Jhcnk6Ci0gICAg
ICAgICAgICBpZiAoKG1TaGFkZXJWZXJzaW9uID49IDMwMCkgfHwgIW1Jc1dlYkdMKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1Jc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUlzc3Vl
V2FybmluZyA9IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBvbk5vbkNvbnN0SW5p
dGlhbGl6ZXJWaXNpdChtRXh0Tm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnMgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobVNoYWRlclZlcnNpb24gPCAzMDApICYm
IG1Jc1dlYkdMKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBAIC05Niw3ICsxMDIsNyBAQCBib29sIFZhbGlkYXRlR2xv
YmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQWdncgogICAgIC8vIHRoZSBmdW5jdGlvbiBjYWxsIG9wcy4KICAgICBpZiAobm9kZS0+aXNG
dW5jdGlvbkNhbGwoKSkKICAgICB7Ci0gICAgICAgIG1Jc1ZhbGlkID0gZmFsc2U7CisgICAgICAg
IG9uTm9uQ29uc3RJbml0aWFsaXplclZpc2l0KG1FeHROb25Db25zdEdsb2JhbEluaXRpYWxpemVy
cyk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA1LDcgKzExMSw3IEBAIGJvb2wg
VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlz
aXQsIFRJbnRlcm1CaW5hcnkKIHsKICAgICBpZiAobm9kZS0+aXNBc3NpZ25tZW50KCkpCiAgICAg
ewotICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOworICAgICAgICBvbk5vbkNvbnN0SW5pdGlhbGl6
ZXJWaXNpdChtRXh0Tm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnMpOwogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTExNCwxNiArMTIwLDE5IEBAIGJvb2wgVmFsaWRhdGVHbG9iYWxJbml0
aWFsaXplclRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpu
CiB7CiAgICAgaWYgKG5vZGUtPmlzQXNzaWdubWVudCgpKQogICAgIHsKLSAgICAgICAgbUlzVmFs
aWQgPSBmYWxzZTsKKyAgICAgICAgb25Ob25Db25zdEluaXRpYWxpemVyVmlzaXQobUV4dE5vbkNv
bnN0R2xvYmFsSW5pdGlhbGl6ZXJzKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVZh
bGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OlZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXJUcmF2ZXJzZXIoaW50IHNoYWRlclZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXZWJH
TCkKK1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OlZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXJUcmF2ZXJzZXIoCisgICAgaW50IHNoYWRlclZlcnNpb24sCisgICAgYm9vbCBpc1dl
YkdMLAorICAgIGJvb2wgaGFzRXh0Tm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnMpCiAgICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSwgbnVsbHB0ciksCiAgICAgICBtU2hh
ZGVyVmVyc2lvbihzaGFkZXJWZXJzaW9uKSwKICAgICAgIG1Jc1dlYkdMKGlzV2ViR0wpLAorICAg
ICAgbUV4dE5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzKGhhc0V4dE5vbkNvbnN0R2xvYmFsSW5p
dGlhbGl6ZXJzKSwKICAgICAgIG1Jc1ZhbGlkKHRydWUpLAogICAgICAgbUlzc3VlV2FybmluZyhm
YWxzZSkKIHsKQEAgLTEzNSw5ICsxNDQsMTEgQEAgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRy
YXZlcnNlcjo6VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcihpbnQgc2hhZGUKIGJv
b2wgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXZWJHTCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGhhc0V4dE5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKndhcm5pbmcpCiB7Ci0gICAgVmFsaWRh
dGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlciB2YWxpZGF0ZShzaGFkZXJWZXJzaW9uLCBpc1dl
YkdMKTsKKyAgICBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyIHZhbGlkYXRlKHNo
YWRlclZlcnNpb24sIGlzV2ViR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYXNFeHROb25Db25zdEdsb2JhbEluaXRpYWxpemVycyk7CiAgICAgaW5p
dGlhbGl6ZXItPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7CiAgICAgQVNTRVJUKHdhcm5pbmcgIT0gbnVs
bHB0cik7CiAgICAgKndhcm5pbmcgPSB2YWxpZGF0ZS5pc3N1ZVdhcm5pbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlk
YXRlR2xvYmFsSW5pdGlhbGl6ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaAppbmRleCBkNGQ3NWZh
OTExOGU0OTc1YjQwOTllYTQ2ZjBkY2E5YWE2ZjAzMDI4Li5jYjRiNjUyYjE4NmQ5Y2E0MGM1YjE5
MWJhMTZkYjE2Njc4OWZlMDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVH
bG9iYWxJbml0aWFsaXplci5oCkBAIC0xNiw2ICsxNiw3IEBAIGNsYXNzIFRJbnRlcm1UeXBlZDsK
IGJvb2wgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNXZWJHTCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGhhc0V4dE5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKndhcm5pbmcpOwogCiB9ICAvLyBu
YW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29w
cy9SZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZGM1NzRhZjk4
MDJkOTNkOGM3ZmRhZjYxZDdmZDA2NDU1MmExNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVB
dG9taWNDb3VudGVyQnVpbHRpbnMuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBS
ZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnM6IFJlbW92ZSBhdG9taWMgY291bnRlciBidWlsdGlu
cy4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0
b21pY0NvdW50ZXJCdWlsdGlucy5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9D
b21waWxlci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdHJlZV91dGlsL0ludGVy
bVRyYXZlcnNlLmgiCisKK25hbWVzcGFjZSBzaAoreworbmFtZXNwYWNlCit7CisKK2Jvb2wgSXNB
dG9taWNDb3VudGVyRGVjbChjb25zdCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAg
Y29uc3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9ICoobm9kZS0+Z2V0U2VxdWVuY2UoKSk7
CisgICAgVEludGVybVR5cGVkICp2YXJpYWJsZSAgICAgICAgICA9IHNlcXVlbmNlLmZyb250KCkt
PmdldEFzVHlwZWQoKTsKKyAgICBjb25zdCBUVHlwZSAmdHlwZSAgICAgICAgICAgICAgID0gdmFy
aWFibGUtPmdldFR5cGUoKTsKKyAgICByZXR1cm4gdHlwZS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFV
bmlmb3JtICYmIHR5cGUuaXNBdG9taWNDb3VudGVyKCk7Cit9CisKKy8vIFRyYXZlcnNlciB0aGF0
IHJlbW92ZXMgYWxsIEdMU0wgYnVpbHQtaW5zIHRoYXQgdXNlIEF0b21pY0NvdW50ZXJzCisvLyBP
bmx5IGNhbGxlZCB3aGVuIHRoZSBidWlsdGlucyBhcmUgaW4gdXNlLCBidXQgbm8gYXRvbWljIGNv
dW50ZXJzIGhhdmUgYmVlbiBkZWNsYXJlZAorY2xhc3MgUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0
aW5zVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAg
IFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGluc1RyYXZlcnNlcigpIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpIHt9CisKKyAgICBib29sIHZpc2l0RGVjbGFyYXRpb24oVmlz
aXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisKKyAgICAgICAgLy8gQWN0aXZlIGF0b21p
YyBjb3VudGVycyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgUmV3cml0ZUF0b21pY0NvdW50
ZXJzLCBhbmQgdGhpcworICAgICAgICAvLyB0cmF2ZXJzYWwgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
aW52b2tlZAorICAgICAgICBBU1NFUlQoIUlzQXRvbWljQ291bnRlckRlY2wobm9kZSkpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmIChub2RlLT5nZXRPcCgpID09IEVPcE1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBWdWxrYW4gZG9lcyBub3Qgc3VwcG9ydCBhdG9taWMgY291
bnRlcnMsIHNvIGlmIHRoaXMgYnVpbHRpbiBmaW5kcyBpdHMgd2F5IGhlcmUsCisgICAgICAgICAg
ICAvLyB3ZSBuZWVkIHRvIHJlbW92ZSBpdC4KKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBl
bXB0eVNlcXVlbmNlOworICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLmVtcGxhY2VfYmFj
ayhnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKSwgbm9kZSwgZW1wdHlTZXF1ZW5jZSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNob3Vs
ZG4ndCBzZWUgYW55IG90aGVyIGJ1aWx0aW5zIGJlY2F1c2UgdGhleSBjYW5ub3QgYmUgcHJlc2Vu
dCB3aXRob3V0IGFuIGFjdGl2ZQorICAgICAgICAvLyBhdG9taWMgY291bnRlciwgYW5kIHNob3Vs
ZCBoYXZlIGJlZW4gcmVtb3ZlZCBieSBSZXdyaXRlQXRvbWljQ291bnRlcnMuIElmIHRoaXMgZmly
ZXMsCisgICAgICAgIC8vIHRoaXMgdHJhdmVyc2FsIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZC4KKyAgICAgICAgQVNTRVJUKCEobm9kZS0+Z2V0T3AoKSA9PSBFT3BDYWxsQnVpbHRJbkZ1bmN0
aW9uICYmCisgICAgICAgICAgICAgICAgIG5vZGUtPmdldEZ1bmN0aW9uKCktPmlzQXRvbWljQ291
bnRlckZ1bmN0aW9uKCkpKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIFJlbW92ZUF0b21pY0NvdW50ZXJCdWls
dGlucyhUQ29tcGlsZXIgKmNvbXBpbGVyLCBUSW50ZXJtQmxvY2sgKnJvb3QpCit7CisgICAgUmVt
b3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAgICByb290LT50
cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICByZXR1cm4gdHJhdmVyc2VyLnVwZGF0ZVRyZWUoY29t
cGlsZXIsIHJvb3QpOworfQorfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZW1vdmVB
dG9taWNDb3VudGVyQnVpbHRpbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1JlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZmNjczYWQwZTA3YWYwMTdiNGMzMDE2NzBmNTA3ZTdjN2Y2OTA2NmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci90cmVlX29wcy9SZW1vdmVBdG9taWNDb3VudGVyQnVpbHRpbnMuaApAQCAtMCwwICsxLDI0
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gUmVtb3ZlQXRvbWljQ291bnRlckJ1aWx0aW5zOiBSZW1vdmUgYXRv
bWljIGNvdW50ZXIgYnVpbHRpbnMuCisvLyBOb3JtYWxseSBoYW5kbGVkIGJ5IFJld3JpdGVBdG9t
aWNDb3VudGVycywgYnV0IHRoYXQgaXMgb25seSBpbnZva2VkIHdoZW4KKy8vIGF0b21pYyBjb3Vu
dGVycyBhcmUgYWN0dWFsbHkgaW4gdXNlLiBUaGlzIHBhc3MgcmVtb3ZlcyB0aGUgYnVpbHRpbnMg
YW5kCisvLyBhc3NlcnRzIG5vIGF0b21pYyBjb3VudGVycyBhcmUgZGVjbGFyZWQuCisKKyNpZm5k
ZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9UUkVFT1BTX1JFTU9WRUFUT01JQ0NPVU5URVJCVUlMVElO
U19IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1RSRUVPUFNfUkVNT1ZFQVRPTUlDQ09V
TlRFUkJVSUxUSU5TX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1l
c3BhY2Ugc2gKK3sKK2NsYXNzIFRDb21waWxlcjsKK2NsYXNzIFRJbnRlcm1CbG9jazsKKworQU5H
TEVfTk9fRElTQ0FSRCBib29sIFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucyhUQ29tcGlsZXIg
KmNvbXBpbGVyLCBUSW50ZXJtQmxvY2sgKnJvb3QpOworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNl
bmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9UUkVFT1BTX1JFTU9WRUFUT01JQ0NPVU5URVJC
VUlMVElOU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvdHJlZV9vcHMvUmV3cml0ZUF0b21pY0NvdW50ZXJzLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RyZWVfb3BzL1Jld3Jp
dGVBdG9taWNDb3VudGVycy5jcHAKaW5kZXggYzBlYzRjNWVkZDZhMTYzYjI1MDZmYTNmMDQ4YjJm
YmY1ZGY2OTU3OC4uYmEyNTk4NGU5MTM0MjVjNTZlZmZkMTY4NDI2OGJhY2UzYmRjOTFiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
dHJlZV9vcHMvUmV3cml0ZUF0b21pY0NvdW50ZXJzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci90cmVlX29wcy9SZXdyaXRlQXRvbWljQ291
bnRlcnMuY3BwCkBAIC0yMSw3ICsyMSw3IEBAIG5hbWVzcGFjZSBzaAogbmFtZXNwYWNlCiB7CiBj
b25zdGV4cHIgSW1tdXRhYmxlU3RyaW5nIGtBdG9taWNDb3VudGVyVHlwZU5hbWUgID0gSW1tdXRh
YmxlU3RyaW5nKCJBTkdMRV9hdG9taWNfdWludCIpOwotY29uc3RleHByIEltbXV0YWJsZVN0cmlu
ZyBrQXRvbWljQ291bnRlckJsb2NrTmFtZSA9IEltbXV0YWJsZVN0cmluZygiQU5HTEVBdG9taWND
b3VudGVycyIpOworY29uc3RleHByIEltbXV0YWJsZVN0cmluZyBrQXRvbWljQ291bnRlcnNWYXJO
YW1lICA9IEltbXV0YWJsZVN0cmluZygiYXRvbWljQ291bnRlcnMiKTsKIGNvbnN0ZXhwciBJbW11
dGFibGVTdHJpbmcga0F0b21pY0NvdW50ZXJGaWVsZE5hbWUgPSBJbW11dGFibGVTdHJpbmcoImNv
dW50ZXJzIik7CiAKIC8vIERlY2xhcmVBdG9taWNDb3VudGVyc0J1ZmZlciBhZGRzIGEgc3RvcmFn
ZSBidWZmZXIgYXJyYXkgdGhhdCdzIHVzZWQgd2l0aCBhdG9taWMgY291bnRlcnMuCkBAIC00NSw5
ICs0NSw5IEBAIGNvbnN0IFRWYXJpYWJsZSAqRGVjbGFyZUF0b21pY0NvdW50ZXJzQnVmZmVycyhU
SW50ZXJtQmxvY2sgKnJvb3QsIFRTeW1ib2xUYWJsZSAqCiAgICAgY29uc3RleHByIHVpbnQzMl90
IGtNYXhBdG9taWNDb3VudGVyQnVmZmVycyA9IDg7CiAKICAgICAvLyBEZWZpbmUgYSBzdG9yYWdl
IGJsb2NrICJBTkdMRUF0b21pY0NvdW50ZXJzIiB3aXRoIGluc3RhbmNlIG5hbWUgImF0b21pY0Nv
dW50ZXJzIi4KLSAgICByZXR1cm4gRGVjbGFyZUludGVyZmFjZUJsb2NrKHJvb3QsIHN5bWJvbFRh
YmxlLCBmaWVsZExpc3QsIEV2cUJ1ZmZlciwgY29oZXJlbnRNZW1vcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrTWF4QXRvbWljQ291bnRlckJ1ZmZlcnMsIGtBdG9taWNDb3Vu
dGVyQmxvY2tOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1tdXRhYmxl
U3RyaW5nKHZrOjprQXRvbWljQ291bnRlcnNWYXJOYW1lKSk7CisgICAgcmV0dXJuIERlY2xhcmVJ
bnRlcmZhY2VCbG9jaygKKyAgICAgICAgcm9vdCwgc3ltYm9sVGFibGUsIGZpZWxkTGlzdCwgRXZx
QnVmZmVyLCBjb2hlcmVudE1lbW9yeSwga01heEF0b21pY0NvdW50ZXJCdWZmZXJzLAorICAgICAg
ICBJbW11dGFibGVTdHJpbmcodms6OmtBdG9taWNDb3VudGVyc0Jsb2NrTmFtZSksIGtBdG9taWND
b3VudGVyc1Zhck5hbWUpOwogfQogCiBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqQ3JlYXRlVUludENv
bnN0YW50KHVpbnQzMl90IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2ZlYXR1cmVfc3VwcG9ydF91dGlsL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9mZWF0dXJlX3N1cHBvcnRfdXRpbC9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThjNjU5Njc1
ZGU2YWI2ODA5MjAxYjNjYThkZWNlNjhmMjFjYWU1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9mZWF0dXJlX3N1cHBvcnRfdXRpbC9PV05FUlMKQEAgLTAs
MCArMSBAQAoraWFuZWxsaW90QGdvb2dsZS5jb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKaW5kZXggM2U1NTQ5
ZDU1MTA1Y2YyYmQ2MWZjOGVjNTU3ODhiOTdmNDk4MGE1Yi4uZjc0ODk0OWQ5ZjE1NzAyOGQ2MjE2
MjdhNDQ3ZWI5YWE2ZGRjMGM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKQEAgLTE0MCw2ICsxNDAsMTEg
QEAgYm9vbCBJc1F1YWxjb21tKFZlbmRvcklEIHZlbmRvcklkKQogICAgIHJldHVybiB2ZW5kb3JJ
ZCA9PSBrVmVuZG9ySURfUXVhbGNvbW07CiB9CiAKK2Jvb2wgSXNHb29nbGUoVmVuZG9ySUQgdmVu
ZG9ySWQpCit7CisgICAgcmV0dXJuIHZlbmRvcklkID09IGtWZW5kb3JJRF9HT09HTEU7Cit9CisK
IGJvb2wgSXNWZXJpU2lsaWNvbihWZW5kb3JJRCB2ZW5kb3JJZCkKIHsKICAgICByZXR1cm4gdmVu
ZG9ySWQgPT0ga1ZlbmRvcklEX1ZlcmlTaWxpY29uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5oCmluZGV4IGJkOGQ1ZWFm
YzVmYjIwODVhZDdjZWJmNzIyY2YzZGE1MGI5MmM3MDcuLjc4OTBiZGNkMDQ5Njc5YjI2YjVkNDQx
NzNlZDE1N2ZmNjAzNGUyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvLmgKQEAgLTExMSw2ICsxMTEsNyBAQCBib29s
IElzSW50ZWwoVmVuZG9ySUQgdmVuZG9ySWQpOwogYm9vbCBJc0themFuKFZlbmRvcklEIHZlbmRv
cklkKTsKIGJvb2wgSXNOVklESUEoVmVuZG9ySUQgdmVuZG9ySWQpOwogYm9vbCBJc1F1YWxjb21t
KFZlbmRvcklEIHZlbmRvcklkKTsKK2Jvb2wgSXNHb29nbGUoVmVuZG9ySUQgdmVuZG9ySWQpOwog
Ym9vbCBJc1N3aWZ0c2hhZGVyKFZlbmRvcklEIHZlbmRvcklkKTsKIGJvb2wgSXNWZXJpU2lsaWNv
bihWZW5kb3JJRCB2ZW5kb3JJZCk7CiBib29sIElzVk1XYXJlKFZlbmRvcklEIHZlbmRvcklkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pZC9jb21taXQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pZC9jb21taXQuaAppbmRleCBmMjFmZjQzODdkYzgx
YzU0YzVmYTEzZTM3MDIyNzEwYzE3YTk3YWMzLi40MWQwYjZjMjA1NmZlZjE4ZTRkY2VhYmE4ZTli
NWE3MTVhOWQ4MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaWQv
Y29tbWl0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2lkL2NvbW1pdC5oCkBA
IC0xLDE0ICsxLDMgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBjb21taXQuaDoKLS8vICAgVGhpcyBpcyBhIGRl
ZmF1bHQgY29tbWl0IGhhc2ggaGVhZGVyLCB3aGVuIGdpdCBpcyBub3QgYXZhaWxhYmxlLgotLy8K
LQotI2RlZmluZSBBTkdMRV9DT01NSVRfSEFTSCAidW5rbm93biBoYXNoIgorI2RlZmluZSBBTkdM
RV9DT01NSVRfSEFTSCAiYjM4N2NlOTM4OWVkIgogI2RlZmluZSBBTkdMRV9DT01NSVRfSEFTSF9T
SVpFIDEyCi0jZGVmaW5lIEFOR0xFX0NPTU1JVF9EQVRFICJ1bmtub3duIGRhdGUiCi0KLSNkZWZp
bmUgQU5HTEVfRElTQUJMRV9QUk9HUkFNX0JJTkFSWV9MT0FECisjZGVmaW5lIEFOR0xFX0NPTU1J
VF9EQVRFICIyMDIwLTAzLTI4IDA0OjEwOjI4ICswMDAwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oCmluZGV4IDNlMjBkMGEyNGE5
OGM4Y2M4NDkxMGQ1MzllOWJkMzIyNWUxZTBlNWEuLjIwNjNmMzEwZjIxNmU2ZmFkNzQwYzA2YjAz
N2Y2NDJhOTM1MmU4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9CaW5hcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQmluYXJ5U3RyZWFtLmgKQEAgLTE4Niw4ICsxODYsMTAgQEAgY2xhc3MgQmluYXJ5
T3V0cHV0U3RyZWFtIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdGVtcGxhdGUgPGNsYXNzIElu
dFQ+CiAgICAgdm9pZCB3cml0ZUludChJbnRUIHBhcmFtKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KGFuZ2xlOjpJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPGludD4ocGFyYW0pKTsKLSAgICAg
ICAgaW50IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7CisgICAgICAgIHVzaW5n
IFByb21vdGVkSW50VCA9CisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0
ZDo6aXNfc2lnbmVkPEludFQ+Ojp2YWx1ZSwgaW50LCB1bnNpZ25lZD46OnR5cGU7CisgICAgICAg
IEFTU0VSVChhbmdsZTo6SXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxQcm9tb3RlZEludFQ+
KHBhcmFtKSk7CisgICAgICAgIFByb21vdGVkSW50VCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PFBy
b21vdGVkSW50VD4ocGFyYW0pOwogICAgICAgICB3cml0ZSgmaW50VmFsdWUsIDEpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCmluZGV4
IDQ3YjU0NzU4YWVhZTU3MjFkZTBmZGQwZjIwNzAxNGNiNGIzNjkzZTIuLjQ3NzEwNWMzOTUxMmRj
ZDFkNTM5ZTVhMzUwOTQxZDg0Njk3NTE5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgYm9vbCBE
ZXRlcm1pbmVEZXB0aFRleHR1cmVBTkdMRVN1cHBvcnQoY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRl
eHR1cmVDYXBzKQogICAgICAgICBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywKICAgICB9OwogCi0g
ICAgcmV0dXJuIEdldEZvcm1hdFN1cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiBHZXRGb3JtYXRTdXBw
b3J0KHRleHR1cmVDYXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIHRydWUsIHRydWUsIGZhbHNl
LCBmYWxzZSk7CiB9CiAKIC8vIENoZWNrIGZvciBHTF9PRVNfZGVwdGhfdGV4dHVyZSBzdXBwb3J0
CkBAIC03MTIsNiArNzEyLDE2IEBAIHN0YXRpYyBib29sIERldGVybWluZVRleHR1cmVOb3JtMTZT
dXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKICAgICAgICAgICAgR2V0
Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRSZW5kZXJGb3JtYXRzLCB0cnVlLCBm
YWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOwogfQogCisvLyBDaGVjayBmb3IgRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fcmd0YyBzdXBwb3J0CitzdGF0aWMgYm9vbCBEZXRlcm1pbmVSR1RDVGV4dHVy
ZVN1cHBvcnQoY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzKQoreworICAgIGNvbnN0
ZXhwciBHTGVudW0gcmVxdWlyZWRGb3JtYXRzW10gPSB7CisgICAgICAgIEdMX0NPTVBSRVNTRURf
UkVEX1JHVEMxX0VYVCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwKKyAgICAg
ICAgR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhULCBHTF9DT01QUkVTU0VEX1NJR05F
RF9SRURfR1JFRU5fUkdUQzJfRVhUfTsKKworICAgIHJldHVybiBHZXRGb3JtYXRTdXBwb3J0KHRl
eHR1cmVDYXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpOworfQorCiAvLyBDaGVjayBmb3IgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyBzdXBw
b3J0CiBzdGF0aWMgYm9vbCBEZXRlcm1pbmVCUFRDVGV4dHVyZVN1cHBvcnQoY29uc3QgVGV4dHVy
ZUNhcHNNYXAgJnRleHR1cmVDYXBzKQogewpAQCAtODA2LDYgKzgxNiw3IEBAIHZvaWQgRXh0ZW5z
aW9uczo6c2V0VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQoY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRl
eHR1cmVDYXBzKQogICAgIGNvbG9yQnVmZmVyRmxvYXQgICAgICAgICAgICAgICAgICAgID0gRGV0
ZXJtaW5lQ29sb3JCdWZmZXJGbG9hdFN1cHBvcnQodGV4dHVyZUNhcHMpOwogICAgIGZsb2F0Qmxl
bmQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRGV0ZXJtaW5lRmxvYXRCbGVuZFN1cHBvcnQo
dGV4dHVyZUNhcHMpOwogICAgIHRleHR1cmVOb3JtMTYgICAgICAgICAgICAgICAgICAgICAgID0g
RGV0ZXJtaW5lVGV4dHVyZU5vcm0xNlN1cHBvcnQodGV4dHVyZUNhcHMpOworICAgIHRleHR1cmVD
b21wcmVzc2lvblJHVEMgICAgICAgICAgICAgID0gRGV0ZXJtaW5lUkdUQ1RleHR1cmVTdXBwb3J0
KHRleHR1cmVDYXBzKTsKICAgICB0ZXh0dXJlQ29tcHJlc3Npb25CUFRDICAgICAgICAgICAgICA9
IERldGVybWluZUJQVENUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiAgICAgY29tcHJlc3Nl
ZFRleHR1cmVQVlJUQyAgICAgICAgICAgICAgPSBEZXRlcm1pbmVQVlJUQ1RleHR1cmVTdXBwb3J0
KHRleHR1cmVDYXBzKTsKICAgICBjb21wcmVzc2VkVGV4dHVyZVBWUlRDc1JHQiAgICAgICAgICA9
IERldGVybWluZVBWUlRDc1JHQlRleHR1cmVTdXBwb3J0KHRleHR1cmVDYXBzKTsKQEAgLTg2MSw4
ICs4NzIsMTAgQEAgY29uc3QgRXh0ZW5zaW9uSW5mb01hcCAmR2V0RXh0ZW5zaW9uSW5mb01hcCgp
CiAgICAgICAgIG1hcFsiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIl0gPSBl
bmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25TM1RDc1JH
Qik7CiAgICAgICAgIG1hcFsiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiXSA9
IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENM
RFJLSFIpOwogICAgICAgICBtYXBbIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRy
Il0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25B
U1RDSERSS0hSKTsKKyAgICAgICAgbWFwWyJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X3NsaWNlZF8zZCJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUNv
bXByZXNzaW9uU2xpY2VkM2RBU1RDS0hSKTsKICAgICAgICAgbWFwWyJHTF9PRVNfdGV4dHVyZV9j
b21wcmVzc2lvbl9hc3RjIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0
dXJlQ29tcHJlc3Npb25BU1RDT0VTKTsKICAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9jb21w
cmVzc2lvbl9icHRjIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJl
Q29tcHJlc3Npb25CUFRDKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9yZ3RjIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJl
c3Npb25SR1RDKTsKICAgICAgICAgbWFwWyJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4
dHVyZSJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6Y29tcHJlc3NlZEVUQzFS
R0I4VGV4dHVyZU9FUyk7CiAgICAgICAgIG1hcFsiR0xfT0VTX2NvbXByZXNzZWRfRVRDMl9SR0I4
X3RleHR1cmUiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmNvbXByZXNzZWRF
VEMyUkdCOFRleHR1cmVPRVMpOwogICAgICAgICBtYXBbIkdMX09FU19jb21wcmVzc2VkX0VUQzJf
c1JHQjhfdGV4dHVyZSJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6Y29tcHJl
c3NlZEVUQzJzUkdCOFRleHR1cmVPRVMpOwpAQCAtODg3LDYgKzkwMCw4IEBAIGNvbnN0IEV4dGVu
c2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9NYXAoKQogICAgICAgICBtYXBbIkdMX0VYVF90
ZXh0dXJlX3N0b3JhZ2UiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1
cmVTdG9yYWdlKTsKICAgICAgICAgbWFwWyJHTF9PRVNfdGV4dHVyZV9ucG90Il0gPSBlbmFibGVh
YmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlTlBPVE9FUyk7CiAgICAgICAgIG1hcFsi
R0xfRVhUX2RyYXdfYnVmZmVycyJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
ZHJhd0J1ZmZlcnMpOworICAgICAgICBtYXBbIkdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhlZCJd
ID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZHJhd0J1ZmZlcnNJbmRleGVkRVhU
KTsKKyAgICAgICAgbWFwWyJHTF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQiXSA9IGVuYWJsZWFi
bGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmRyYXdCdWZmZXJzSW5kZXhlZE9FUyk7CiAgICAgICAg
IG1hcFsiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl0gPSBlbmFibGVhYmxlRXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOwogICAgICAgICBt
YXBbIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiJdID0gZW5hYmxlYWJsZUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6b2NjbHVzaW9uUXVlcnlCb29sZWFuKTsKICAgICAgICAgbWFwWyJHTF9O
Vl9mZW5jZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpmZW5jZU5WKTsKQEAgLTkx
MywxMiArOTI4LDE1IEBAIGNvbnN0IEV4dGVuc2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9N
YXAoKQogICAgICAgICBtYXBbIkdMX09FU19FR0xfaW1hZ2UiXSA9IGVuYWJsZWFibGVFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OmVnbEltYWdlT0VTKTsKICAgICAgICAgbWFwWyJHTF9PRVNfRUdMX2lt
YWdlX2V4dGVybmFsIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplZ2xJbWFn
ZUV4dGVybmFsT0VTKTsKICAgICAgICAgbWFwWyJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vz
c2wzIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjplZ2xJbWFnZUV4dGVybmFs
RXNzbDNPRVMpOworICAgICAgICBtYXBbIkdMX0VYVF9FR0xfaW1hZ2VfZXh0ZXJuYWxfd3JhcF9t
b2RlcyJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZWdsSW1hZ2VFeHRlcm5h
bFdyYXBNb2Rlc0VYVCk7CiAgICAgICAgIG1hcFsiR0xfT0VTX0VHTF9zeW5jIl0gPSBlc09ubHlF
eHRlbnNpb24oJkV4dGVuc2lvbnM6OmVnbFN5bmNPRVMpOwogICAgICAgICBtYXBbIkdMX0VYVF9t
ZW1vcnlfb2JqZWN0Il0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjptZW1vcnlP
YmplY3QpOwogICAgICAgICBtYXBbIkdMX0VYVF9tZW1vcnlfb2JqZWN0X2ZkIl0gPSBlbmFibGVh
YmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjptZW1vcnlPYmplY3RGZCk7CisgICAgICAgIG1hcFsi
R0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjptZW1vcnlPYmplY3RGdWNoc2lhQU5HTEUpOwogICAgICAgICBtYXBbIkdMX0VY
VF9zZW1hcGhvcmUiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnNlbWFwaG9y
ZSk7CiAgICAgICAgIG1hcFsiR0xfRVhUX3NlbWFwaG9yZV9mZCJdID0gZW5hYmxlYWJsZUV4dGVu
c2lvbigmRXh0ZW5zaW9uczo6c2VtYXBob3JlRmQpOwogICAgICAgICBtYXBbIkdMX05WX0VHTF9z
dHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lv
bnM6OmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWxOVik7CisgICAgICAgIG1hcFsiR0xfQU5HTEVf
c2VtYXBob3JlX2Z1Y2hzaWEiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnNl
bWFwaG9yZUZ1Y2hzaWFBTkdMRSk7CiAgICAgICAgIG1hcFsiR0xfRVhUX3VucGFja19zdWJpbWFn
ZSJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dW5wYWNrU3ViaW1hZ2UpOwog
ICAgICAgICBtYXBbIkdMX05WX3BhY2tfc3ViaW1hZ2UiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OnBhY2tTdWJpbWFnZSk7CiAgICAgICAgIG1hcFsiR0xfRVhUX2NvbG9yX2J1
ZmZlcl9mbG9hdCJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6Y29sb3JCdWZm
ZXJGbG9hdCk7CkBAIC05MjcsOCArOTQ1LDcgQEAgY29uc3QgRXh0ZW5zaW9uSW5mb01hcCAmR2V0
RXh0ZW5zaW9uSW5mb01hcCgpCiAgICAgICAgIG1hcFsiR0xfT0VTX3ZlcnRleF90eXBlXzEwXzEw
XzEwXzIiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnZlcnRleEF0dHJpYlR5
cGUxMDEwMTAyT0VTKTsKICAgICAgICAgbWFwWyJHTF9LSFJfZGVidWciXSA9IGVzT25seUV4dGVu
c2lvbigmRXh0ZW5zaW9uczo6ZGVidWcpOwogICAgICAgICBtYXBbIkdMX09FU190ZXh0dXJlX2Jv
cmRlcl9jbGFtcCJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUJv
cmRlckNsYW1wT0VTKTsKLSAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRW5hYmxlIHRoaXMgd2hl
biBjb21wbGV0ZS4KLSAgICAgICAgLy9tYXBbIkdMX0tIUl9ub19lcnJvciJdID0gZXNPbmx5RXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjpub0Vycm9yKTsKKyAgICAgICAgbWFwWyJHTF9LSFJfbm9fZXJy
b3IiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bm9FcnJvcik7CiAgICAgICAgIG1h
cFsiR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29kZSJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0
ZW5zaW9uczo6bG9zc3lFVENEZWNvZGUpOwogICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX2JpbmRf
dW5pZm9ybV9sb2NhdGlvbiJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpiaW5kVW5p
Zm9ybUxvY2F0aW9uKTsKICAgICAgICAgbWFwWyJHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5Il0gPSBl
bmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpzeW5jUXVlcnkpOwpAQCAtOTQ2LDcgKzk2
Myw2IEBAIGNvbnN0IEV4dGVuc2lvbkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9NYXAoKQogICAg
ICAgICBtYXBbIkdMX0VYVF9tdWx0aXNhbXBsZV9jb21wYXRpYmlsaXR5Il0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6Om11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eSk7CiAgICAgICAgIG1h
cFsiR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyJdID0gZXNPbmx5RXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjpmcmFtZWJ1ZmZlck1peGVkU2FtcGxlcyk7CiAgICAgICAgIG1hcFsi
R0xfRVhUX3RleHR1cmVfbm9ybTE2Il0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25z
Ojp0ZXh0dXJlTm9ybTE2KTsKLSAgICAgICAgbWFwWyJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmlu
ZyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpwYXRoUmVuZGVyaW5nKTsKICAgICAg
ICAgbWFwWyJHTF9PRVNfc3VyZmFjZWxlc3NfY29udGV4dCJdID0gZXNPbmx5RXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjpzdXJmYWNlbGVzc0NvbnRleHRPRVMpOwogICAgICAgICBtYXBbIkdMX0FOR0xF
X2NsaWVudF9hcnJheXMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6Y2xpZW50QXJy
YXlzKTsKICAgICAgICAgbWFwWyJHTF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRp
b24iXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cm9idXN0UmVzb3VyY2VJbml0aWFs
aXphdGlvbik7CkBAIC05NzYsNiArOTkyLDcgQEAgY29uc3QgRXh0ZW5zaW9uSW5mb01hcCAmR2V0
RXh0ZW5zaW9uSW5mb01hcCgpCiAgICAgICAgIG1hcFsiR0xfT0VTX3BvaW50X3Nwcml0ZSJdID0g
ZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cG9pbnRTcHJpdGVPRVMpOwogICAgICAg
ICBtYXBbIkdMX09FU19kcmF3X3RleHR1cmUiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OmRyYXdUZXh0dXJlT0VTKTsKICAgICAgICAgbWFwWyJHTF9BTkdMRV9tZW1vcnlfc2l6
ZSJdID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6bWVtb3J5U2l6ZSk7CisgICAg
ICAgIG1hcFsiR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyJd
ID0gZW5hYmxlYWJsZUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6c2hhZGVyTm9uQ29uc3RHbG9iYWxJ
bml0aWFsaXplcnNFWFQpOwogICAgICAgICBtYXBbIkdMX1dFQkdMX3ZpZGVvX3RleHR1cmUiXSA9
IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lvbnM6OndlYmdsVmlkZW9UZXh0dXJlKTsKICAg
ICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKQEAgLTEzMzksOCArMTM1Niw3IEBAIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiBEaXNwbGF5RXh0ZW5zaW9uczo6Z2V0U3RyaW5ncygpIGNvbnN0CiAg
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfYmFja3dh
cmRzX2NvbXBhdGlibGUiLCAgICAgICBjcmVhdGVDb250ZXh0QmFja3dhcmRzQ29tcGF0aWJsZSwg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hS
X25vX2NvbmZpZ19jb250ZXh0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICBub0NvbmZpZ0Nv
bnRleHQsICAgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJFR0xfSU1HX2NvbnRleHRfcHJpb3JpdHkiLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0UHJpb3JpdHksICAgICAgICAgICAgICAgICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogRW5hYmxlIHRoaXMgd2hlbiBjb21w
bGV0ZS4KLSAgICAvL0luc2VydEV4dGVuc2lvblN0cmluZygiS0hSX2NyZWF0ZV9jb250ZXh0X25v
X2Vycm9yIiwgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNvbnRleHROb0Vycm9yLCAgICAg
ICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmco
IkVHTF9LSFJfY3JlYXRlX2NvbnRleHRfbm9fZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZUNvbnRleHROb0Vycm9yLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAg
ICAvLyBjbGFuZy1mb3JtYXQgb24KIAogICAgIHJldHVybiBleHRlbnNpb25TdHJpbmdzOwpAQCAt
MTM3Niw2ICsxMzkyLDcgQEAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IENsaWVudEV4dGVuc2lv
bnM6OmdldFN0cmluZ3MoKSBjb25zdAogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FO
R0xFX3BsYXRmb3JtX2FuZ2xlIiwgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm1BTkdM
RSwgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIsICAgICAgICAgICAg
ICAgICAgICAgcGxhdGZvcm1BTkdMRUQzRCwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2Fu
Z2xlX2QzZDExb24xMiIsICAgICAgICAgICAgICAgcGxhdGZvcm1BTkdMRUQzRDExT04xMiwgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2RldmljZV90eXBlX2VnbF9hbmdsZSIsICAgcGxhdGZv
cm1BTkdMRURldmljZVR5cGVFR0xBTkdMRSwgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2RldmljZV90eXBl
X3N3aWZ0c2hhZGVyIiwgcGxhdGZvcm1BTkdMRURldmljZVR5cGVTd2lmdFNoYWRlciwgJmV4dGVu
c2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRm
b3JtX2FuZ2xlX29wZW5nbCIsICAgICAgICAgICAgICAgICAgcGxhdGZvcm1BTkdMRU9wZW5HTCwg
ICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX251bGwiLCAgICAgICAgICAgICAgICAgICAg
cGxhdGZvcm1BTkdMRU5VTEwsICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmgKaW5kZXggY2MxMDU4
ZmNmMDE2YjQ3MGNhYWRjYzk3MDBiZTZkN2I2MWI0ZTQ4ZC4uYmQ2OTc4NzE5YzZmYjA1M2IzM2Vj
YWQxYWUxOGZkMWE5ZWVlNWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NhcHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvQ2Fwcy5oCkBAIC0xMTgsNiArMTE4LDcgQEAgc3RydWN0IEV4dGVuc2lvbnMKICAgICAv
LyBHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0CiAgICAgLy8gR0xfRVhUX3RleHR1cmVfbm9ybTE2
CiAgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YworICAgIC8vIEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3JndGMKICAgICB2b2lkIHNldFRleHR1cmVFeHRlbnNpb25TdXBw
b3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2Fwcyk7CiAKICAgICAvLyBpbmRpY2F0
ZSBpZiBhbnkgZGVwdGggdGV4dHVyZSBleHRlbnNpb24gaXMgYXZhaWxhYmxlCkBAIC0yMTIsOSAr
MjEzLDE1IEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfT0VTX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0YwogICAgIGJvb2wgdGV4dHVyZUNvbXByZXNzaW9uQVNUQ09FUyA9IGZhbHNlOwog
CisgICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19zbGljZWRfM2QKKyAgICBi
b29sIHRleHR1cmVDb21wcmVzc2lvblNsaWNlZDNkQVNUQ0tIUiA9IGZhbHNlOworCiAgICAgLy8g
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YwogICAgIGJvb2wgdGV4dHVyZUNvbXByZXNz
aW9uQlBUQyA9IGZhbHNlOwogCisgICAgLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YworICAgIGJvb2wgdGV4dHVyZUNvbXByZXNzaW9uUkdUQyA9IGZhbHNlOworCiAgICAgLy8gR0xf
T0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUKICAgICAvLyBJbXBsaWVzIHRoYXQgVGV4
dHVyZUNhcHMgZm9yIEdMX0VUQzFfUkdCOF9PRVMgZXhpc3QKICAgICBib29sIGNvbXByZXNzZWRF
VEMxUkdCOFRleHR1cmVPRVMgPSBmYWxzZTsKQEAgLTI5Niw2ICszMDMsMTUgQEAgc3RydWN0IEV4
dGVuc2lvbnMKICAgICAvLyBHTF9FWFRfZHJhd19idWZmZXJzCiAgICAgYm9vbCBkcmF3QnVmZmVy
cyA9IGZhbHNlOwogCisgICAgLy8gR0xfRVhUX2RyYXdfYnVmZmVyc19pbmRleGVkCisgICAgYm9v
bCBkcmF3QnVmZmVyc0luZGV4ZWRFWFQgPSBmYWxzZTsKKworICAgIC8vIEdMX09FU19kcmF3X2J1
ZmZlcnNfaW5kZXhlZAorICAgIGJvb2wgZHJhd0J1ZmZlcnNJbmRleGVkT0VTID0gZmFsc2U7CisK
KyAgICAvLyBBbnkgdmVyc2lvbiBvZiB0aGUgZHJhd19idWZmZXJzX2luZGV4ZWQKKyAgICBib29s
IGRyYXdCdWZmZXJzSW5kZXhlZEFueSgpIGNvbnN0IHsgcmV0dXJuIChkcmF3QnVmZmVyc0luZGV4
ZWRFWFQgfHwgZHJhd0J1ZmZlcnNJbmRleGVkT0VTKTsgfQorCiAgICAgLy8gR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAgICAgYm9vbCB0ZXh0dXJlRmlsdGVyQW5pc290cm9waWMg
PSBmYWxzZTsKICAgICBHTGZsb2F0IG1heFRleHR1cmVBbmlzb3Ryb3B5ICA9IDAuMGY7CkBAIC0z
NzksNiArMzk1LDkgQEAgc3RydWN0IEV4dGVuc2lvbnMKICAgICAvLyBHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsX2Vzc2wzCiAgICAgYm9vbCBlZ2xJbWFnZUV4dGVybmFsRXNzbDNPRVMgPSBmYWxz
ZTsKIAorICAgIC8vIEdMX0VYVF9FR0xfaW1hZ2VfZXh0ZXJuYWxfd3JhcF9tb2RlcworICAgIGJv
b2wgZWdsSW1hZ2VFeHRlcm5hbFdyYXBNb2Rlc0VYVCA9IGZhbHNlOworCiAgICAgLy8gR0xfT0VT
X0VHTF9zeW5jCiAgICAgYm9vbCBlZ2xTeW5jT0VTID0gZmFsc2U7CiAKQEAgLTM4OCwxMiArNDA3
LDE4IEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfRVhUX21lbW9yeV9vYmplY3RfZmQK
ICAgICBib29sIG1lbW9yeU9iamVjdEZkID0gZmFsc2U7CiAKKyAgICAvLyBHTF9BTkdMRV9tZW1v
cnlfb2JqZWN0X2Z1Y2hzaWEKKyAgICBib29sIG1lbW9yeU9iamVjdEZ1Y2hzaWFBTkdMRSA9IGZh
bHNlOworCiAgICAgLy8gR0xfRVhUX3NlbWFwaG9yZQogICAgIGJvb2wgc2VtYXBob3JlID0gZmFs
c2U7CiAKICAgICAvLyBHTF9FWFRfc2VtYXBob3JlX2ZkCiAgICAgYm9vbCBzZW1hcGhvcmVGZCA9
IGZhbHNlOwogCisgICAgLy8gR0xfQU5HTEVfc2VtYXBob3JlX2Z1Y2hzaWEKKyAgICBib29sIHNl
bWFwaG9yZUZ1Y2hzaWFBTkdMRSA9IGZhbHNlOworCiAgICAgLy8gTlZfRUdMX3N0cmVhbV9jb25z
dW1lcl9leHRlcm5hbAogICAgIGJvb2wgZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbE5WID0gZmFs
c2U7CiAKQEAgLTQ4Myw5ICs1MDgsNiBAQCBzdHJ1Y3QgRXh0ZW5zaW9ucwogICAgIC8vIHdyaXR0
ZW4gYWdhaW5zdCBFUyAzLjEgYnV0IGNhbiBhcHBseSB0byBFUyAzLjAgYXMgd2VsbC4KICAgICBi
b29sIHRleHR1cmVOb3JtMTYgPSBmYWxzZTsKIAotICAgIC8vIEdMX0NIUk9NSVVNX3BhdGhfcmVu
ZGVyaW5nCi0gICAgYm9vbCBwYXRoUmVuZGVyaW5nID0gZmFsc2U7Ci0KICAgICAvLyBHTF9PRVNf
c3VyZmFjZWxlc3NfY29udGV4dAogICAgIGJvb2wgc3VyZmFjZWxlc3NDb250ZXh0T0VTID0gZmFs
c2U7CiAKQEAgLTU3Myw2ICs1OTUsOSBAQCBzdHJ1Y3QgRXh0ZW5zaW9ucwogICAgICAgICByZXR1
cm4gKGRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMgfHwgZHJhd0VsZW1lbnRzQmFzZVZlcnRleEVY
VCk7CiAgICAgfQogCisgICAgLy8gR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2lu
aXRpYWxpemVycworICAgIGJvb2wgc2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0aWFsaXplcnNFWFQg
PSBmYWxzZTsKKwogICAgIC8vIEdMX0VYVF9ncHVfc2hhZGVyNQogICAgIGJvb2wgZ3B1U2hhZGVy
NUVYVCA9IGZhbHNlOwogICAgIC8vIFdFQkdMX3ZpZGVvX3RleHR1cmUKQEAgLTEwOTcsNiArMTEy
Miw5IEBAIHN0cnVjdCBDbGllbnRFeHRlbnNpb25zCiAKICAgICAvLyBFR0xfQU5HTEVfcGxhdGZv
cm1fYW5nbGVfZGV2aWNlX3R5cGVfc3dpZnRzaGFkZXIKICAgICBib29sIHBsYXRmb3JtQU5HTEVE
ZXZpY2VUeXBlU3dpZnRTaGFkZXIgPSBmYWxzZTsKKworICAgIC8vIEVHTF9BTkdMRV9wbGF0Zm9y
bV9hbmdsZV9kZXZpY2VfdHlwZV9lZ2xfYW5nbGUKKyAgICBib29sIHBsYXRmb3JtQU5HTEVEZXZp
Y2VUeXBlRUdMQU5HTEUgPSBmYWxzZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBlZ2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCmluZGV4
IDQxNjMyMjNlODEwMDEwZTAyZjQ0MjRmOTRiYTJiNDU5NzQwODk0ZDAuLjlkZGU1MDQ3MWU5YzM2
NWExZTAwMmQzYTJhZGZmYmIxOTYxYWFhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0NvbXBpbGVyLmNwcApAQCAtOTAsOCArOTAsMTAgQEAgQ29tcGls
ZXI6OkNvbXBpbGVyKHJ4OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgU3RhdGUg
JnN0YXRlKQogICAgIG1SZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICAgICA9IGV4
dGVuc2lvbnMuc3RhbmRhcmREZXJpdmF0aXZlc09FUzsKICAgICBtUmVzb3VyY2VzLkVYVF9kcmF3
X2J1ZmZlcnMgICAgICAgICAgICAgPSBleHRlbnNpb25zLmRyYXdCdWZmZXJzOwogICAgIG1SZXNv
dXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCAgICAgICA9IGV4dGVuc2lvbnMuc2hhZGVyVGV4
dHVyZUxPRDsKLSAgICBtUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgICAgICAgPSBl
eHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWxPRVM7Ci0gICAgbVJlc291cmNlcy5PRVNfRUdMX2lt
YWdlX2V4dGVybmFsX2Vzc2wzID0gZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsRXNzbDNPRVM7
CisgICAgbVJlc291cmNlcy5FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6
ZXJzID0KKyAgICAgICAgZXh0ZW5zaW9ucy5zaGFkZXJOb25Db25zdEdsb2JhbEluaXRpYWxpemVy
c0VYVDsKKyAgICBtUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgICAgICAgICAgPSBl
eHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWxPRVM7CisgICAgbVJlc291cmNlcy5PRVNfRUdMX2lt
YWdlX2V4dGVybmFsX2Vzc2wzICAgID0gZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsRXNzbDNP
RVM7CiAgICAgbVJlc291cmNlcy5OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsID0gZXh0
ZW5zaW9ucy5lZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsTlY7CiAgICAgbVJlc291cmNlcy5BUkJf
dGV4dHVyZV9yZWN0YW5nbGUgICAgICAgICAgID0gZXh0ZW5zaW9ucy50ZXh0dXJlUmVjdGFuZ2xl
OwogICAgIG1SZXNvdXJjZXMuRVhUX2dwdV9zaGFkZXI1ICAgICAgICAgICAgICAgICA9IGV4dGVu
c2lvbnMuZ3B1U2hhZGVyNUVYVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db25maWcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0NvbmZpZy5jcHAKaW5kZXggMzViMTIzNmI5YTg1MzhiYTlhYjliY2JmOWVkNTg5YjBk
ZTYwZjUzNi4uMzMwNTZjZTJiNmZlYmNhYzFlODJkMTY5MTM4ZWJhZmViMGMwZGUxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAgQ29uZmlnOjpDb25maWcoKQogICAgICAgYWxwaGFNYXNrU2l6ZSgwKSwKICAg
ICAgIGJpbmRUb1RleHR1cmVSR0IoRUdMX0ZBTFNFKSwKICAgICAgIGJpbmRUb1RleHR1cmVSR0JB
KEVHTF9GQUxTRSksCisgICAgICBiaW5kVG9UZXh0dXJlVGFyZ2V0KEVHTF9URVhUVVJFXzJEKSwK
ICAgICAgIGNvbG9yQnVmZmVyVHlwZShFR0xfUkdCX0JVRkZFUiksCiAgICAgICBjb25maWdDYXZl
YXQoRUdMX05PTkUpLAogICAgICAgY29uZmlnSUQoMCksCkBAIC0zMTgsNiArMzE5LDkgQEAgc3Rk
Ojp2ZWN0b3I8Y29uc3QgQ29uZmlnICo+IENvbmZpZ1NldDo6ZmlsdGVyKGNvbnN0IEF0dHJpYnV0
ZU1hcCAmYXR0cmlidXRlTWFwKQogICAgICAgICAgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVY
VFVSRV9SR0JBOgogICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy5iaW5kVG9UZXh0
dXJlUkdCQSA9PSBzdGF0aWNfY2FzdDxFR0xCb29sZWFuPihhdHRyaWJ1dGVWYWx1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9f
VEVYVFVSRV9UQVJHRVRfQU5HTEU6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmln
LmJpbmRUb1RleHR1cmVUYXJnZXQgPT0gc3RhdGljX2Nhc3Q8RUdMZW51bT4oYXR0cmlidXRlVmFs
dWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEVH
TF9NSU5fU1dBUF9JTlRFUlZBTDoKICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWcu
bWluU3dhcEludGVydmFsID09IGF0dHJpYnV0ZVZhbHVlOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9D
b25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcuaApp
bmRleCAxZjRmYzI3ZjRhZTBkNjRhNDZmNTM5YzFjODQ2MmRlZWIzZjgxZDVlLi5iNDM5NGI2ZDQ4
YmFlMjQ0Njk0NTQwNzUxNzQxNGRjM2I0OWUxMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5oCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBDb25m
aWcKICAgICBFR0xpbnQgYWxwaGFNYXNrU2l6ZTsgICAgICAgICAgLy8gQml0cyBvZiBBbHBoYSBN
YXNrIGluIHRoZSBtYXNrIGJ1ZmZlcgogICAgIEVHTEJvb2xlYW4gYmluZFRvVGV4dHVyZVJHQjsg
ICAvLyBUcnVlIGlmIGJpbmRhYmxlIHRvIFJHQiB0ZXh0dXJlcy4KICAgICBFR0xCb29sZWFuIGJp
bmRUb1RleHR1cmVSR0JBOyAgLy8gVHJ1ZSBpZiBiaW5kYWJsZSB0byBSR0JBIHRleHR1cmVzLgor
ICAgIEVHTGVudW0gYmluZFRvVGV4dHVyZVRhcmdldDsgICAvLyBXaGljaCB0ZXh0dXJlIHRhcmdl
dCBzaG91bGQgYmUgdXNlZCBmb3IgcGJ1ZmZlcnMKICAgICBFR0xlbnVtIGNvbG9yQnVmZmVyVHlw
ZTsgICAgICAgLy8gQ29sb3IgYnVmZmVyIHR5cGUKICAgICBFR0xlbnVtIGNvbmZpZ0NhdmVhdDsg
ICAgICAgICAgLy8gQW55IGNhdmVhdHMgZm9yIHRoZSBjb25maWd1cmF0aW9uCiAgICAgRUdMaW50
IGNvbmZpZ0lEOyAgICAgICAgICAgICAgIC8vIFVuaXF1ZSBFR0xDb25maWcgaWRlbnRpZmllcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuY3BwCmlu
ZGV4IGE3NWViOTI5ZTNkZGI4YTQ4Y2ExNWFmNjIzZWQzZGM3MzczNDRiN2UuLjMyMGM3MmY2ODI0
Y2MyMzIzNzMxMTExODkxZTViOWM5NTRmYjVkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNs
dWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVm
ZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL01lbW9yeU9iamVjdC5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL1BhdGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
UXVlcnkuaCIKQEAgLTUxLDU4ICs1MCw2IEBAIG5hbWVzcGFjZSBnbAogewogbmFtZXNwYWNlCiB7
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6dmVjdG9yPFBhdGggKj4gR2F0aGVyUGF0aHMo
UGF0aE1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJ
RCBwYXRoQmFzZSkKLXsKLSAgICBzdGQ6OnZlY3RvcjxQYXRoICo+IHJldDsKLSAgICByZXQucmVz
ZXJ2ZShudW1QYXRocyk7Ci0KLSAgICBjb25zdCBhdXRvICpuYW1lQXJyYXkgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUICo+KHBhdGhzKTsKLQotICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IG51bVBh
dGhzOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBHTHVpbnQgcGF0aE5hbWUgPSBuYW1lQXJy
YXlbaV0gKyBwYXRoQmFzZS52YWx1ZTsKLQotICAgICAgICByZXQucHVzaF9iYWNrKHJlc291cmNl
TWFuYWdlci5nZXRQYXRoKHtwYXRoTmFtZX0pKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0Owot
fQotCi1zdGQ6OnZlY3RvcjxQYXRoICo+IEdhdGhlclBhdGhzKFBhdGhNYW5hZ2VyICZyZXNvdXJj
ZU1hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UpCi17Ci0gICAgc3dp
dGNoIChwYXRoTmFtZVR5cGUpCi0gICAgewotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
Ci0gICAgICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8R0x1Ynl0ZT4ocmVzb3VyY2VNYW5hZ2Vy
LCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKTsKLQotICAgICAgICBjYXNlIEdMX0JZVEU6Ci0g
ICAgICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8R0xieXRlPihyZXNvdXJjZU1hbmFnZXIsIG51
bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpOwotCi0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlQ6Ci0gICAgICAgICAgICByZXR1cm4gR2F0aGVyUGF0aHM8R0x1c2hvcnQ+KHJlc291cmNlTWFu
YWdlciwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSk7Ci0KLSAgICAgICAgY2FzZSBHTF9TSE9S
VDoKLSAgICAgICAgICAgIHJldHVybiBHYXRoZXJQYXRoczxHTHNob3J0PihyZXNvdXJjZU1hbmFn
ZXIsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpOwotCi0gICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UOgotICAgICAgICAgICAgcmV0dXJuIEdhdGhlclBhdGhzPEdMdWludD4ocmVzb3VyY2VN
YW5hZ2VyLCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKTsKLQotICAgICAgICBjYXNlIEdMX0lO
VDoKLSAgICAgICAgICAgIHJldHVybiBHYXRoZXJQYXRoczxHTGludD4ocmVzb3VyY2VNYW5hZ2Vy
LCBudW1QYXRocywgcGF0aHMsIHBhdGhCYXNlKTsKLSAgICB9Ci0KLSAgICBVTlJFQUNIQUJMRSgp
OwotICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoICo+KCk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogYW5nbGU6OlJlc3VsdCBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBRdWVyeSAqcXVlcnksIEdMZW51bSBwbmFtZSwgVCAqcGFyYW1zKQogewpA
QCAtNDk4LDExICs0NDUsNiBAQCB2b2lkIENvbnRleHQ6OmluaXRpYWxpemUoKQogICAgIG1EcmF3
RGlydHlPYmplY3RzLnNldChTdGF0ZTo6RElSVFlfT0JKRUNUX1NBTVBMRVJTKTsKICAgICBtRHJh
d0RpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9JTUFHRVMpOwogCi0gICAgbVBh
dGhPcGVyYXRpb25EaXJ0eU9iamVjdHMuc2V0KFN0YXRlOjpESVJUWV9PQkpFQ1RfRFJBV19GUkFN
RUJVRkZFUik7Ci0gICAgbVBhdGhPcGVyYXRpb25EaXJ0eU9iamVjdHMuc2V0KFN0YXRlOjpESVJU
WV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKLSAgICBtUGF0aE9wZXJhdGlvbkRpcnR5T2JqZWN0cy5z
ZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9URVhUVVJFUyk7Ci0gICAgbVBhdGhPcGVyYXRpb25EaXJ0
eU9iamVjdHMuc2V0KFN0YXRlOjpESVJUWV9PQkpFQ1RfU0FNUExFUlMpOwotCiAgICAgbVRleElt
YWdlRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1VOUEFDS19TVEFURSk7CiAgICAgbVRl
eEltYWdlRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1VOUEFDS19CVUZGRVJfQklORElO
Ryk7CiAgICAgLy8gTm8gZGlydHkgb2JqZWN0cy4KQEAgLTYyNyw3ICs1NjksNiBAQCBlZ2w6OkVy
cm9yIENvbnRleHQ6Om9uRGVzdHJveShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAg
bVN0YXRlLm1SZW5kZXJidWZmZXJNYW5hZ2VyLT5yZWxlYXNlKHRoaXMpOwogICAgIG1TdGF0ZS5t
U2FtcGxlck1hbmFnZXItPnJlbGVhc2UodGhpcyk7CiAgICAgbVN0YXRlLm1TeW5jTWFuYWdlci0+
cmVsZWFzZSh0aGlzKTsKLSAgICBtU3RhdGUubVBhdGhNYW5hZ2VyLT5yZWxlYXNlKHRoaXMpOwog
ICAgIG1TdGF0ZS5tRnJhbWVidWZmZXJNYW5hZ2VyLT5yZWxlYXNlKHRoaXMpOwogICAgIG1TdGF0
ZS5tUHJvZ3JhbVBpcGVsaW5lTWFuYWdlci0+cmVsZWFzZSh0aGlzKTsKICAgICBtU3RhdGUubU1l
bW9yeU9iamVjdE1hbmFnZXItPnJlbGVhc2UodGhpcyk7CkBAIC03NDcsMTggKzY4OCw2IEBAIFJl
bmRlcmJ1ZmZlcklEIENvbnRleHQ6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiAgICAgcmV0dXJuIG1T
dGF0ZS5tUmVuZGVyYnVmZmVyTWFuYWdlci0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CiB9CiAKLXZv
aWQgQ29udGV4dDo6dHJ5R2VuUGF0aHMoR0xzaXplaSByYW5nZSwgUGF0aElEICpjcmVhdGVkT3V0
KQotewotICAgIEFOR0xFX0NPTlRFWFRfVFJZKG1TdGF0ZS5tUGF0aE1hbmFnZXItPmNyZWF0ZVBh
dGhzKHRoaXMsIHJhbmdlLCBjcmVhdGVkT3V0KSk7Ci19Ci0KLUdMdWludCBDb250ZXh0OjpnZW5Q
YXRocyhHTHNpemVpIHJhbmdlKQotewotICAgIFBhdGhJRCBjcmVhdGVkID0gezB9OwotICAgIHRy
eUdlblBhdGhzKHJhbmdlLCAmY3JlYXRlZCk7Ci0gICAgcmV0dXJuIGNyZWF0ZWQudmFsdWU7Ci19
Ci0KIC8vIFJldHVybnMgYW4gdW51c2VkIGZyYW1lYnVmZmVyIG5hbWUKIEZyYW1lYnVmZmVySUQg
Q29udGV4dDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewpAQCAtODY2LDExMCArNzk1LDYgQEAgdm9p
ZCBDb250ZXh0OjpkZWxldGVTZW1hcGhvcmUoU2VtYXBob3JlSUQgc2VtYXBob3JlKQogICAgIG1T
dGF0ZS5tU2VtYXBob3JlTWFuYWdlci0+ZGVsZXRlU2VtYXBob3JlKHRoaXMsIHNlbWFwaG9yZSk7
CiB9CiAKLXZvaWQgQ29udGV4dDo6ZGVsZXRlUGF0aHMoUGF0aElEIGZpcnN0LCBHTHNpemVpIHJh
bmdlKQotewotICAgIG1TdGF0ZS5tUGF0aE1hbmFnZXItPmRlbGV0ZVBhdGhzKGZpcnN0LCByYW5n
ZSk7Ci19Ci0KLUdMYm9vbGVhbiBDb250ZXh0Ojppc1BhdGgoUGF0aElEIHBhdGgpCi17Ci0gICAg
Y29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aE1hbmFnZXItPmdldFBhdGgocGF0aCk7
Ci0gICAgaWYgKHBhdGhPYmogPT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHBhdGhPYmotPmhhc1BhdGhEYXRhKCk7Ci19Ci0KLWJvb2wgQ29udGV4dDo6aXNQ
YXRoR2VuZXJhdGVkKFBhdGhJRCBwYXRoKSBjb25zdAotewotICAgIHJldHVybiBtU3RhdGUubVBh
dGhNYW5hZ2VyLT5oYXNQYXRoKHBhdGgpOwotfQotCi12b2lkIENvbnRleHQ6OnBhdGhDb21tYW5k
cyhQYXRoSUQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29t
bWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5k
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3JkcykKLXsKLSAgICBhdXRvICpwYXRoT2JqZWN0ID0g
bVN0YXRlLm1QYXRoTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKLQotICAgIEFOR0xFX0NPTlRFWFRf
VFJZKHBhdGhPYmplY3QtPnNldENvbW1hbmRzKG51bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29v
cmRzLCBjb29yZFR5cGUsIGNvb3JkcykpOwotfQotCi12b2lkIENvbnRleHQ6OnBhdGhQYXJhbWV0
ZXJmKFBhdGhJRCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCi17Ci0gICAgUGF0
aCAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aE1hbmFnZXItPmdldFBhdGgocGF0aCk7Ci0KLSAgICBz
d2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9LRV9XSURUSF9D
SFJPTUlVTToKLSAgICAgICAgICAgIHBhdGhPYmotPnNldFN0cm9rZVdpZHRoKHZhbHVlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU06
Ci0gICAgICAgICAgICBwYXRoT2JqLT5zZXRFbmRDYXBzKHN0YXRpY19jYXN0PEdMZW51bT4odmFs
dWUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1BBVEhfSk9JTl9TVFlM
RV9DSFJPTUlVTToKLSAgICAgICAgICAgIHBhdGhPYmotPnNldEpvaW5TdHlsZShzdGF0aWNfY2Fz
dDxHTGVudW0+KHZhbHVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9Q
QVRIX01JVEVSX0xJTUlUX0NIUk9NSVVNOgotICAgICAgICAgICAgcGF0aE9iai0+c2V0TWl0ZXJM
aW1pdCh2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9QQVRIX1NU
Uk9LRV9CT1VORF9DSFJPTUlVTToKLSAgICAgICAgICAgIHBhdGhPYmotPnNldFN0cm9rZUJvdW5k
KHZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBD
b250ZXh0OjpwYXRoUGFyYW1ldGVyaShQYXRoSUQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCB2
YWx1ZSkKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBTaG91bGQgdXNlIHByb3BlciBjbGFtcGlu
Zy9jYXN0aW5nLgotICAgIHBhdGhQYXJhbWV0ZXJmKHBhdGgsIHBuYW1lLCBzdGF0aWNfY2FzdDxH
TGZsb2F0Pih2YWx1ZSkpOwotfQotCi12b2lkIENvbnRleHQ6OmdldFBhdGhQYXJhbWV0ZXJmdihQ
YXRoSUQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSkKLXsKLSAgICBjb25zdCBQ
YXRoICpwYXRoT2JqID0gbVN0YXRlLm1QYXRoTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKLQotICAg
IHN3aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgICBjYXNlIEdMX1BBVEhfU1RST0tFX1dJRFRI
X0NIUk9NSVVNOgotICAgICAgICAgICAgKnZhbHVlID0gcGF0aE9iai0+Z2V0U3Ryb2tlV2lkdGgo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1BBVEhfRU5EX0NBUFNfQ0hS
T01JVU06Ci0gICAgICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXRoT2Jq
LT5nZXRFbmRDYXBzKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfUEFU
SF9KT0lOX1NUWUxFX0NIUk9NSVVNOgotICAgICAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8
R0xmbG9hdD4ocGF0aE9iai0+Z2V0Sm9pblN0eWxlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTToKLSAgICAgICAgICAgICp2
YWx1ZSA9IHBhdGhPYmotPmdldE1pdGVyTGltaXQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNOgotICAgICAgICAgICAgKnZh
bHVlID0gcGF0aE9iai0+Z2V0U3Ryb2tlQm91bmQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH0KLX0KLQotdm9pZCBDb250ZXh0OjpnZXRQYXRoUGFyYW1ldGVyaXYoUGF0aElE
IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKQotewotICAgIEdMZmxvYXQgdmFsID0g
MC4wZjsKLSAgICBnZXRQYXRoUGFyYW1ldGVyZnYocGF0aCwgcG5hbWUsIHZhbHVlICE9IG51bGxw
dHIgPyAmdmFsIDogbnVsbHB0cik7Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICAqdmFsdWUgPSBz
dGF0aWNfY2FzdDxHTGludD4odmFsKTsKLX0KLQotdm9pZCBDb250ZXh0OjpwYXRoU3RlbmNpbEZ1
bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCi17Ci0gICAgbVN0YXRlLnNl
dFBhdGhTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwotfQotCiAvLyBHTF9DSFJPTUlVTV9s
b3NlX2NvbnRleHQKIHZvaWQgQ29udGV4dDo6bG9zZUNvbnRleHQoR3JhcGhpY3NSZXNldFN0YXR1
cyBjdXJyZW50LCBHcmFwaGljc1Jlc2V0U3RhdHVzIG90aGVyKQogewpAQCAtMTEyNiw3ICs5NTEs
NyBAQCB2b2lkIENvbnRleHQ6OmdldE9iamVjdFB0ckxhYmVsKGNvbnN0IHZvaWQgKnB0ciwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndAogICAgIEdldE9iamVjdExhYmVsQmFzZShvYmpl
Y3RMYWJlbCwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0
Ojppc1NhbXBsZXIoU2FtcGxlcklEIHNhbXBsZXJOYW1lKQorR0xib29sZWFuIENvbnRleHQ6Omlz
U2FtcGxlcihTYW1wbGVySUQgc2FtcGxlck5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1TdGF0
ZS5tU2FtcGxlck1hbmFnZXItPmlzU2FtcGxlcihzYW1wbGVyTmFtZSk7CiB9CkBAIC0xMjM5LDcg
KzEwNjQsNyBAQCB2b2lkIENvbnRleHQ6OmJpbmRQcm9ncmFtUGlwZWxpbmUoUHJvZ3JhbVBpcGVs
aW5lSUQgcGlwZWxpbmVIYW5kbGUpCiAKIHZvaWQgQ29udGV4dDo6YmVnaW5RdWVyeShRdWVyeVR5
cGUgdGFyZ2V0LCBRdWVyeUlEIHF1ZXJ5KQogewotICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGdl
dFF1ZXJ5KHF1ZXJ5LCB0cnVlLCB0YXJnZXQpOworICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGdl
dE9yQ3JlYXRlUXVlcnkocXVlcnksIHRhcmdldCk7CiAgICAgQVNTRVJUKHF1ZXJ5T2JqZWN0KTsK
IAogICAgIC8vIGJlZ2luIHF1ZXJ5CkBAIC0xMjY3LDcgKzEwOTIsNyBAQCB2b2lkIENvbnRleHQ6
OnF1ZXJ5Q291bnRlcihRdWVyeUlEIGlkLCBRdWVyeVR5cGUgdGFyZ2V0KQogewogICAgIEFTU0VS
VCh0YXJnZXQgPT0gUXVlcnlUeXBlOjpUaW1lc3RhbXApOwogCi0gICAgUXVlcnkgKnF1ZXJ5T2Jq
ZWN0ID0gZ2V0UXVlcnkoaWQsIHRydWUsIHRhcmdldCk7CisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0
ID0gZ2V0T3JDcmVhdGVRdWVyeShpZCwgdGFyZ2V0KTsKICAgICBBU1NFUlQocXVlcnlPYmplY3Qp
OwogCiAgICAgQU5HTEVfQ09OVEVYVF9UUlkocXVlcnlPYmplY3QtPnF1ZXJ5Q291bnRlcih0aGlz
KSk7CkBAIC0xMzgxLDEyICsxMjA2LDEyIEBAIEZyYW1lYnVmZmVyICpDb250ZXh0OjpnZXRGcmFt
ZWJ1ZmZlcihGcmFtZWJ1ZmZlcklEIGhhbmRsZSkgY29uc3QKICAgICByZXR1cm4gbVN0YXRlLm1G
cmFtZWJ1ZmZlck1hbmFnZXItPmdldEZyYW1lYnVmZmVyKGhhbmRsZSk7CiB9CiAKLUZlbmNlTlYg
KkNvbnRleHQ6OmdldEZlbmNlTlYoRmVuY2VOVklEIGhhbmRsZSkKK0ZlbmNlTlYgKkNvbnRleHQ6
OmdldEZlbmNlTlYoRmVuY2VOVklEIGhhbmRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gbUZlbmNl
TlZNYXAucXVlcnkoaGFuZGxlKTsKIH0KIAotUXVlcnkgKkNvbnRleHQ6OmdldFF1ZXJ5KFF1ZXJ5
SUQgaGFuZGxlLCBib29sIGNyZWF0ZSwgUXVlcnlUeXBlIHR5cGUpCitRdWVyeSAqQ29udGV4dDo6
Z2V0T3JDcmVhdGVRdWVyeShRdWVyeUlEIGhhbmRsZSwgUXVlcnlUeXBlIHR5cGUpCiB7CiAgICAg
aWYgKCFtUXVlcnlNYXAuY29udGFpbnMoaGFuZGxlKSkKICAgICB7CkBAIC0xMzk0LDcgKzEyMTks
NyBAQCBRdWVyeSAqQ29udGV4dDo6Z2V0UXVlcnkoUXVlcnlJRCBoYW5kbGUsIGJvb2wgY3JlYXRl
LCBRdWVyeVR5cGUgdHlwZSkKICAgICB9CiAKICAgICBRdWVyeSAqcXVlcnkgPSBtUXVlcnlNYXAu
cXVlcnkoaGFuZGxlKTsKLSAgICBpZiAoIXF1ZXJ5ICYmIGNyZWF0ZSkKKyAgICBpZiAoIXF1ZXJ5
KQogICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgIT0gUXVlcnlUeXBlOjpJbnZhbGlkRW51bSk7
CiAgICAgICAgIHF1ZXJ5ID0gbmV3IFF1ZXJ5KG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgdHlwZSwg
aGFuZGxlKTsKQEAgLTE0MzQsNyArMTI1OSw3IEBAIENvbXBpbGVyICpDb250ZXh0OjpnZXRDb21w
aWxlcigpIGNvbnN0CiAgICAgcmV0dXJuIG1Db21waWxlci5nZXQoKTsKIH0KIAotdm9pZCBDb250
ZXh0OjpnZXRCb29sZWFudkltcGwoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykKK3Zv
aWQgQ29udGV4dDo6Z2V0Qm9vbGVhbnZJbXBsKEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJh
bXMpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CkBAIC0xNDUxLDcgKzEyNzYs
NyBAQCB2b2lkIENvbnRleHQ6OmdldEJvb2xlYW52SW1wbChHTGVudW0gcG5hbWUsIEdMYm9vbGVh
biAqcGFyYW1zKQogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0OjpnZXRGbG9hdHZJbXBsKEdMZW51
bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRGbG9hdHZJbXBsKEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKSBjb25zdAogewogICAgIC8vIFF1ZXJpZXMgYWJv
dXQgY29udGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBDb250
ZXh0LgogICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJlIGFu
c3dlcmVkIGJ5IFN0YXRlLgpAQCAtMTQ4MCwzMiArMTMwNSwxMyBAQCB2b2lkIENvbnRleHQ6Omdl
dEZsb2F0dkltcGwoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAgICAgICAgIGNhc2Ug
R0xfTUFYX1RFWFRVUkVfTE9EX0JJQVM6CiAgICAgICAgICAgICAqcGFyYW1zID0gbVN0YXRlLm1D
YXBzLm1heExPREJpYXM7CiAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEdMX1BB
VEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9QQVRIX1BST0pF
Q1RJT05fTUFUUklYX0NIUk9NSVVNOgotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBHTEVTMSBl
bXVsYXRpb246IC8vIEdMX1BBVEhfKE1PREVMVklFV3xQUk9KRUNUSU9OKV9NQVRSSVhfQ0hST01J
VU0gY29sbGlkZXMgd2l0aCB0aGUKLSAgICAgICAgICAgIC8vIEdMRVMxIGNvbnN0YW50cyBmb3Ig
bW9kZWx2aWV3L3Byb2plY3Rpb24gbWF0cml4LgotICAgICAgICAgICAgaWYgKGdldENsaWVudFZl
cnNpb24oKSA8IFZlcnNpb24oMiwgMCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
bVN0YXRlLmdldEZsb2F0dihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobVN0YXRlLm1F
eHRlbnNpb25zLnBhdGhSZW5kZXJpbmcpOwotICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
Km0gPSBtU3RhdGUuZ2V0UGF0aFJlbmRlcmluZ01hdHJpeChwbmFtZSk7Ci0gICAgICAgICAgICAg
ICAgbWVtY3B5KHBhcmFtcywgbSwgMTYgKiBzaXplb2YoR0xmbG9hdCkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBtU3RhdGUuZ2V0RmxvYXR2KHBuYW1lLCBwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCi12b2lkIENvbnRleHQ6OmdldEludGVnZXJ2SW1wbChHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldEludGVnZXJ2SW1wbChHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpIGNvbnN0CiB7CiAgICAgLy8gUXVlcmllcyBhYm91dCBjb250ZXh0
IGNhcGFiaWxpdGllcyBhbmQgbWF4aW11bXMgYXJlIGFuc3dlcmVkIGJ5IENvbnRleHQuCiAgICAg
Ly8gUXVlcmllcyBhYm91dCBjdXJyZW50IEdMIHN0YXRlIHZhbHVlcyBhcmUgYW5zd2VyZWQgYnkg
U3RhdGUuCkBAIC0xODg5LDMwICsxNjk1LDI2IEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcnZJ
bXBsKEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgICAgY2FzZSBHTF9DT0xPUl9B
UlJBWV9CVUZGRVJfQklORElORzoKICAgICAgICAgY2FzZSBHTF9QT0lOVF9TSVpFX0FSUkFZX0JV
RkZFUl9CSU5ESU5HX09FUzoKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPT1JEX0FSUkFZX0JV
RkZFUl9CSU5ESU5HOgotICAgICAgICAgICAgZ2V0VmVydGV4QXR0cmliaXYoc3RhdGljX2Nhc3Q8
R0x1aW50Pih2ZXJ0ZXhBcnJheUluZGV4KFBhcmFtVG9WZXJ0ZXhBcnJheVR5cGUocG5hbWUpKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JV
RkZFUl9CSU5ESU5HLCBwYXJhbXMpOworICAgICAgICAgICAgZ2V0SW50ZWdlclZlcnRleEF0dHJp
YkltcGwocG5hbWUsIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcsIHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVJSQVlfU1RS
SURFOgogICAgICAgICBjYXNlIEdMX05PUk1BTF9BUlJBWV9TVFJJREU6CiAgICAgICAgIGNhc2Ug
R0xfQ09MT1JfQVJSQVlfU1RSSURFOgogICAgICAgICBjYXNlIEdMX1BPSU5UX1NJWkVfQVJSQVlf
U1RSSURFX09FUzoKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPT1JEX0FSUkFZX1NUUklERToK
LSAgICAgICAgICAgIGdldFZlcnRleEF0dHJpYml2KHN0YXRpY19jYXN0PEdMdWludD4odmVydGV4
QXJyYXlJbmRleChQYXJhbVRvVmVydGV4QXJyYXlUeXBlKHBuYW1lKSkpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUsIHBhcmFtcyk7
CisgICAgICAgICAgICBnZXRJbnRlZ2VyVmVydGV4QXR0cmliSW1wbChwbmFtZSwgR0xfVkVSVEVY
X0FUVFJJQl9BUlJBWV9TVFJJREUsIHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHTF9WRVJURVhfQVJSQVlfU0laRToKICAgICAgICAgY2FzZSBHTF9DT0xPUl9BUlJB
WV9TSVpFOgogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRToKLSAgICAg
ICAgICAgIGdldFZlcnRleEF0dHJpYml2KHN0YXRpY19jYXN0PEdMdWludD4odmVydGV4QXJyYXlJ
bmRleChQYXJhbVRvVmVydGV4QXJyYXlUeXBlKHBuYW1lKSkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFLCBwYXJhbXMpOworICAgICAg
ICAgICAgZ2V0SW50ZWdlclZlcnRleEF0dHJpYkltcGwocG5hbWUsIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfU0laRSwgcGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9BUlJBWV9UWVBFOgogICAgICAgICBjYXNlIEdMX0NPTE9SX0FSUkFZX1RZUEU6CiAg
ICAgICAgIGNhc2UgR0xfTk9STUFMX0FSUkFZX1RZUEU6CiAgICAgICAgIGNhc2UgR0xfUE9JTlRf
U0laRV9BUlJBWV9UWVBFX09FUzoKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPT1JEX0FSUkFZ
X1RZUEU6Ci0gICAgICAgICAgICBnZXRWZXJ0ZXhBdHRyaWJpdihzdGF0aWNfY2FzdDxHTHVpbnQ+
KHZlcnRleEFycmF5SW5kZXgoUGFyYW1Ub1ZlcnRleEFycmF5VHlwZShwbmFtZSkpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSwgcGFy
YW1zKTsKKyAgICAgICAgICAgIGdldEludGVnZXJWZXJ0ZXhBdHRyaWJJbXBsKHBuYW1lLCBHTF9W
RVJURVhfQVRUUklCX0FSUkFZX1RZUEUsIHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKQEAgLTE5MzEsNyArMTcz
MywxMyBAQCB2b2lkIENvbnRleHQ6OmdldEludGVnZXJ2SW1wbChHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpCiAgICAgfQogfQogCi12b2lkIENvbnRleHQ6OmdldEludGVnZXI2NHZJbXBsKEdM
ZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VyVmVy
dGV4QXR0cmliSW1wbChHTGVudW0gcG5hbWUsIEdMZW51bSBhdHRyaWJwbmFtZSwgR0xpbnQgKnBh
cmFtcykgY29uc3QKK3sKKyAgICBnZXRWZXJ0ZXhBdHRyaWJpdkltcGwoc3RhdGljX2Nhc3Q8R0x1
aW50Pih2ZXJ0ZXhBcnJheUluZGV4KFBhcmFtVG9WZXJ0ZXhBcnJheVR5cGUocG5hbWUpKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnBuYW1lLCBwYXJhbXMpOworfQorCit2b2lk
IENvbnRleHQ6OmdldEludGVnZXI2NHZJbXBsKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1z
KSBjb25zdAogewogICAgIC8vIFF1ZXJpZXMgYWJvdXQgY29udGV4dCBjYXBhYmlsaXRpZXMgYW5k
IG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBDb250ZXh0LgogICAgIC8vIFF1ZXJpZXMgYWJvdXQg
Y3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJlIGFuc3dlcmVkIGJ5IFN0YXRlLgpAQCAtMjQ0NCw3
ICsyMjUyLDcgQEAgdm9pZCBDb250ZXh0OjpmaW5pc2goKQogdm9pZCBDb250ZXh0OjppbnNlcnRF
dmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQogewogICAgIEFT
U0VSVChtSW1wbGVtZW50YXRpb24pOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+aW5zZXJ0RXZlbnRN
YXJrZXIobGVuZ3RoLCBtYXJrZXIpOworICAgIEFOR0xFX0NPTlRFWFRfVFJZKG1JbXBsZW1lbnRh
dGlvbi0+aW5zZXJ0RXZlbnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIpKTsKIH0KIAogdm9pZCBDb250
ZXh0OjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikK
QEAgLTI0NTUsMjEgKzIyNjMsMjMgQEAgdm9pZCBDb250ZXh0OjpwdXNoR3JvdXBNYXJrZXIoR0xz
aXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKICAgICB7CiAgICAgICAgIC8vIEZyb20g
dGhlIEVYVF9kZWJ1Z19tYXJrZXIgc3BlYywKICAgICAgICAgLy8gIklmIDxtYXJrZXI+IGlzIG51
bGwgdGhlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4iCi0gICAgICAg
IG1JbXBsZW1lbnRhdGlvbi0+cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgIiIpOworICAgICAgICBB
TkdMRV9DT05URVhUX1RSWShtSW1wbGVtZW50YXRpb24tPnB1c2hHcm91cE1hcmtlcihsZW5ndGgs
ICIiKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+
cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgbWFya2VyKTsKKyAgICAgICAgQU5HTEVfQ09OVEVYVF9U
UlkobUltcGxlbWVudGF0aW9uLT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCBtYXJrZXIpKTsKICAg
ICB9CiB9CiAKIHZvaWQgQ29udGV4dDo6cG9wR3JvdXBNYXJrZXIoKQogewogICAgIEFTU0VSVCht
SW1wbGVtZW50YXRpb24pOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+cG9wR3JvdXBNYXJrZXIoKTsK
KyAgICBBTkdMRV9DT05URVhUX1RSWShtSW1wbGVtZW50YXRpb24tPnBvcEdyb3VwTWFya2VyKCkp
OwogfQogCi12b2lkIENvbnRleHQ6OmJpbmRVbmlmb3JtTG9jYXRpb24oU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNoYXIgKm5hbWUpCit2b2lkIENvbnRl
eHQ6OmJpbmRVbmlmb3JtTG9jYXRpb24oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAg
ICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3JhbVJlc29sdmVMaW5rKHByb2dyYW0p
OwogICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKQEAgLTI0ODIsMjE1ICsyMjkyLDYgQEAgdm9p
ZCBDb250ZXh0Ojpjb3ZlcmFnZU1vZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpCiAgICAgbVN0
YXRlLnNldENvdmVyYWdlTW9kdWxhdGlvbihjb21wb25lbnRzKTsKIH0KIAotdm9pZCBDb250ZXh0
OjptYXRyaXhMb2FkZihHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KQot
ewotICAgIG1TdGF0ZS5sb2FkUGF0aFJlbmRlcmluZ01hdHJpeChtYXRyaXhNb2RlLCBtYXRyaXgp
OwotfQotCi12b2lkIENvbnRleHQ6Om1hdHJpeExvYWRJZGVudGl0eShHTGVudW0gbWF0cml4TW9k
ZSkKLXsKLSAgICBHTGZsb2F0IElbMTZdOwotICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNl
dFRvSWRlbnRpdHkoSSk7Ci0KLSAgICBtU3RhdGUubG9hZFBhdGhSZW5kZXJpbmdNYXRyaXgobWF0
cml4TW9kZSwgSSk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbEZpbGxQYXRoKFBhdGhJRCBw
YXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQotewotICAgIGNvbnN0IGF1dG8gKnBh
dGhPYmogPSBtU3RhdGUubVBhdGhNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOwotICAgIGlmICghcGF0
aE9iaikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRl
Rm9yUGF0aE9wZXJhdGlvbigpKTsKLQotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbEZpbGxQ
YXRoKHBhdGhPYmosIGZpbGxNb2RlLCBtYXNrKTsKLX0KLQotdm9pZCBDb250ZXh0OjpzdGVuY2ls
U3Ryb2tlUGF0aChQYXRoSUQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKLXsK
LSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRoTWFuYWdlci0+Z2V0UGF0aChw
YXRoKTsKLSAgICBpZiAoIXBhdGhPYmopCi0gICAgICAgIHJldHVybjsKLQotICAgIEFOR0xFX0NP
TlRFWFRfVFJZKHN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKSk7Ci0KLSAgICBtSW1wbGVtZW50
YXRpb24tPnN0ZW5jaWxTdHJva2VQYXRoKHBhdGhPYmosIHJlZmVyZW5jZSwgbWFzayk7Ci19Ci0K
LXZvaWQgQ29udGV4dDo6Y292ZXJGaWxsUGF0aChQYXRoSUQgcGF0aCwgR0xlbnVtIGNvdmVyTW9k
ZSkKLXsKLSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRoTWFuYWdlci0+Z2V0
UGF0aChwYXRoKTsKLSAgICBpZiAoIXBhdGhPYmopCi0gICAgICAgIHJldHVybjsKLQotICAgIEFO
R0xFX0NPTlRFWFRfVFJZKHN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKSk7Ci0KLSAgICBtSW1w
bGVtZW50YXRpb24tPmNvdmVyRmlsbFBhdGgocGF0aE9iaiwgY292ZXJNb2RlKTsKLX0KLQotdm9p
ZCBDb250ZXh0Ojpjb3ZlclN0cm9rZVBhdGgoUGF0aElEIHBhdGgsIEdMZW51bSBjb3Zlck1vZGUp
Ci17Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aE1hbmFnZXItPmdldFBh
dGgocGF0aCk7Ci0gICAgaWYgKCFwYXRoT2JqKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTkdM
RV9DT05URVhUX1RSWShzeW5jU3RhdGVGb3JQYXRoT3BlcmF0aW9uKCkpOwotCi0gICAgbUltcGxl
bWVudGF0aW9uLT5jb3ZlclN0cm9rZVBhdGgocGF0aE9iaiwgY292ZXJNb2RlKTsKLX0KLQotdm9p
ZCBDb250ZXh0OjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoUGF0aElEIHBhdGgsIEdMZW51bSBm
aWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgY29uc3QgYXV0
byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aE1hbmFnZXItPmdldFBhdGgocGF0aCk7Ci0gICAgaWYg
KCFwYXRoT2JqKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBTkdMRV9DT05URVhUX1RSWShzeW5j
U3RhdGVGb3JQYXRoT3BlcmF0aW9uKCkpOwotCi0gICAgbUltcGxlbWVudGF0aW9uLT5zdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGgocGF0aE9iaiwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSk7Ci19
Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgoUGF0aElEIHBhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5j
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUpCi17Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aE1hbmFnZXItPmdl
dFBhdGgocGF0aCk7Ci0gICAgaWYgKCFwYXRoT2JqKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
TkdMRV9DT05URVhUX1RSWShzeW5jU3RhdGVGb3JQYXRoT3BlcmF0aW9uKCkpOwotCi0gICAgbUlt
cGxlbWVudGF0aW9uLT5zdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChwYXRoT2JqLCByZWZlcmVu
Y2UsIG1hc2ssIGNvdmVyTW9kZSk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6Y292ZXJGaWxsUGF0aElu
c3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGF0aElEIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIGNvbnN0IGF1
dG8gJnBhdGhPYmplY3RzID0KLSAgICAgICAgR2F0aGVyUGF0aHMoKm1TdGF0ZS5tUGF0aE1hbmFn
ZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7Ci0KLSAgICBBTkdM
RV9DT05URVhUX1RSWShzeW5jU3RhdGVGb3JQYXRoT3BlcmF0aW9uKCkpOwotCi0gICAgbUltcGxl
bWVudGF0aW9uLT5jb3ZlckZpbGxQYXRoSW5zdGFuY2VkKHBhdGhPYmplY3RzLCBjb3Zlck1vZGUs
IHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6Y292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zv
cm1WYWx1ZXMpCi17Ci0gICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPQotICAgICAgICBHYXRo
ZXJQYXRocygqbVN0YXRlLm1QYXRoTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0
aHMsIHBhdGhCYXNlKTsKLQotICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXli
ZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5nPwotICAgIEFOR0xF
X0NPTlRFWFRfVFJZKHN5bmNTdGF0ZUZvclBhdGhPcGVyYXRpb24oKSk7Ci0KLSAgICBtSW1wbGVt
ZW50YXRpb24tPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChwYXRoT2JqZWN0cywgY292ZXJNb2Rl
LCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewot
ICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KLSAgICAgICAgR2F0aGVyUGF0aHMoKm1TdGF0
ZS5tUGF0aE1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7
Ci0KLSAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0
YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KLSAgICBBTkdMRV9DT05URVhUX1RSWShz
eW5jU3RhdGVGb3JQYXRoT3BlcmF0aW9uKCkpOwotCi0gICAgbUltcGxlbWVudGF0aW9uLT5zdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWQocGF0aE9iamVjdHMsIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0
YW5jZWQoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAgICAgIEdhdGhlclBhdGhz
KCptU3RhdGUubVBhdGhNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2UpOwotCi0gICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9wZXJhdGlv
bigpKTsKLQotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQo
cGF0aE9iamVjdHMsIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Ci19
Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6
ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAg
ICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAgICAgIEdhdGhlclBhdGhzKCptU3RhdGUu
bVBhdGhNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOwot
Ci0gICAgQU5HTEVfQ09OVEVYVF9UUlkoc3luY1N0YXRlRm9yUGF0aE9wZXJhdGlvbigpKTsKLQot
ICAgIG1JbXBsZW1lbnRhdGlvbi0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKHBh
dGhPYmplY3RzLCBjb3Zlck1vZGUsIGZpbGxNb2RlLCBtYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5z
Zm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJ
RCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0
cyA9Ci0gICAgICAgIEdhdGhlclBhdGhzKCptU3RhdGUubVBhdGhNYW5hZ2VyLCBudW1QYXRocywg
cGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOwotCi0gICAgQU5HTEVfQ09OVEVYVF9UUlko
c3luY1N0YXRlRm9yUGF0aE9wZXJhdGlvbigpKTsKLQotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQocGF0aE9iamVjdHMsIGNvdmVyTW9kZSwg
cmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQot
dm9pZCBDb250ZXh0OjpiaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgY29uc3QgR0xjaGFyICpuYW1lKQotewotICAgIGF1dG8g
KnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtUmVzb2x2ZUxpbmsocHJvZ3JhbSk7Ci0KLSAgICBw
cm9ncmFtT2JqZWN0LT5iaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKGxvY2F0aW9uLCBuYW1lKTsK
LX0KLQotdm9pZCBDb250ZXh0Ojpwcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4oU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXsKLSAgICBhdXRvICpwcm9ncmFtT2Jq
ZWN0ID0gZ2V0UHJvZ3JhbVJlc29sdmVMaW5rKHByb2dyYW0pOwotCi0gICAgcHJvZ3JhbU9iamVj
dC0+cGF0aEZyYWdtZW50SW5wdXRHZW4obG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMsIGNv
ZWZmcyk7Ci19Ci0KIEdMdWludCBDb250ZXh0OjpnZXRQcm9ncmFtUmVzb3VyY2VJbmRleChTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCkBAIC0yNzYwLDkgKzIzNjEsOSBAQCB2
b2lkIENvbnRleHQ6OmhhbmRsZUVycm9yKEdMZW51bSBlcnJvckNvZGUsCiAgICAgbUVycm9ycy5o
YW5kbGVFcnJvcihlcnJvckNvZGUsIG1lc3NhZ2UsIGZpbGUsIGZ1bmN0aW9uLCBsaW5lKTsKIH0K
IAotdm9pZCBDb250ZXh0Ojp2YWxpZGF0aW9uRXJyb3IoR0xlbnVtIGVycm9yQ29kZSwgY29uc3Qg
Y2hhciAqbWVzc2FnZSkKK3ZvaWQgQ29udGV4dDo6dmFsaWRhdGlvbkVycm9yKEdMZW51bSBlcnJv
ckNvZGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpIGNvbnN0CiB7Ci0gICAgbUVycm9ycy52YWxpZGF0
aW9uRXJyb3IoZXJyb3JDb2RlLCBtZXNzYWdlKTsKKyAgICBjb25zdF9jYXN0PENvbnRleHQgKj4o
dGhpcyktPm1FcnJvcnMudmFsaWRhdGlvbkVycm9yKGVycm9yQ29kZSwgbWVzc2FnZSk7CiB9CiAK
IC8vIEdldCBvbmUgb2YgdGhlIHJlY29yZGVkIGVycm9ycyBhbmQgY2xlYXIgaXRzIGZsYWcsIGlm
IGFueS4KQEAgLTI5MDMsMTMgKzI1MDQsMTMgQEAgVHJhbnNmb3JtRmVlZGJhY2sgKkNvbnRleHQ6
OmNoZWNrVHJhbnNmb3JtRmVlZGJhY2tBbGxvY2F0aW9uKAogICAgIHJldHVybiB0cmFuc2Zvcm1G
ZWVkYmFjazsKIH0KIAotYm9vbCBDb250ZXh0Ojppc1ZlcnRleEFycmF5R2VuZXJhdGVkKFZlcnRl
eEFycmF5SUQgdmVydGV4QXJyYXkpCitib29sIENvbnRleHQ6OmlzVmVydGV4QXJyYXlHZW5lcmF0
ZWQoVmVydGV4QXJyYXlJRCB2ZXJ0ZXhBcnJheSkgY29uc3QKIHsKICAgICBBU1NFUlQobVZlcnRl
eEFycmF5TWFwLmNvbnRhaW5zKHswfSkpOwogICAgIHJldHVybiBtVmVydGV4QXJyYXlNYXAuY29u
dGFpbnModmVydGV4QXJyYXkpOwogfQogCi1ib29sIENvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJh
Y2tHZW5lcmF0ZWQoVHJhbnNmb3JtRmVlZGJhY2tJRCB0cmFuc2Zvcm1GZWVkYmFjaykKK2Jvb2wg
Q29udGV4dDo6aXNUcmFuc2Zvcm1GZWVkYmFja0dlbmVyYXRlZChUcmFuc2Zvcm1GZWVkYmFja0lE
IHRyYW5zZm9ybUZlZWRiYWNrKSBjb25zdAogewogICAgIEFTU0VSVChtVHJhbnNmb3JtRmVlZGJh
Y2tNYXAuY29udGFpbnMoezB9KSk7CiAgICAgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja01hcC5j
b250YWlucyh0cmFuc2Zvcm1GZWVkYmFjayk7CkBAIC0zMjkxLDcgKzI4OTIsNyBAQCBzaXplX3Qg
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtRXh0
ZW5zaW9uU3RyaW5ncy5zaXplKCk7CiB9CiAKLWJvb2wgQ29udGV4dDo6aXNFeHRlbnNpb25SZXF1
ZXN0YWJsZShjb25zdCBjaGFyICpuYW1lKQorYm9vbCBDb250ZXh0Ojppc0V4dGVuc2lvblJlcXVl
c3RhYmxlKGNvbnN0IGNoYXIgKm5hbWUpIGNvbnN0CiB7CiAgICAgY29uc3QgRXh0ZW5zaW9uSW5m
b01hcCAmZXh0ZW5zaW9uSW5mb3MgPSBHZXRFeHRlbnNpb25JbmZvTWFwKCk7CiAgICAgYXV0byBl
eHRlbnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25JbmZvcy5maW5kKG5h
bWUpOwpAQCAtMzMwMCw3ICsyOTAxLDcgQEAgYm9vbCBDb250ZXh0Ojppc0V4dGVuc2lvblJlcXVl
c3RhYmxlKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgICAgICAgIG1TdXBwb3J0ZWRFeHRlbnNpb25z
LiooZXh0ZW5zaW9uLT5zZWNvbmQuRXh0ZW5zaW9uc01lbWJlcik7CiB9CiAKLWJvb2wgQ29udGV4
dDo6aXNFeHRlbnNpb25EaXNhYmxhYmxlKGNvbnN0IGNoYXIgKm5hbWUpCitib29sIENvbnRleHQ6
OmlzRXh0ZW5zaW9uRGlzYWJsYWJsZShjb25zdCBjaGFyICpuYW1lKSBjb25zdAogewogICAgIGNv
bnN0IEV4dGVuc2lvbkluZm9NYXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01h
cCgpOwogICAgIGF1dG8gZXh0ZW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5z
aW9uSW5mb3MuZmluZChuYW1lKTsKQEAgLTM0MjAsNiArMzAyMSw4IEBAIEV4dGVuc2lvbnMgQ29u
dGV4dDo6Z2VuZXJhdGVTdXBwb3J0ZWRFeHRlbnNpb25zKCkgY29uc3QKICAgICAgICAgc3VwcG9y
dGVkRXh0ZW5zaW9ucy5tYXhWaWV3cyAgICAgICAgICAgICAgICAgPSAxdTsKICAgICAgICAgc3Vw
cG9ydGVkRXh0ZW5zaW9ucy5jb3B5VGV4dHVyZTNkICAgICAgICAgICAgPSBmYWxzZTsKICAgICAg
ICAgc3VwcG9ydGVkRXh0ZW5zaW9ucy50ZXh0dXJlTXVsdGlzYW1wbGUgICAgICAgPSBmYWxzZTsK
KyAgICAgICAgc3VwcG9ydGVkRXh0ZW5zaW9ucy5kcmF3QnVmZmVyc0luZGV4ZWRFWFQgICAgPSBm
YWxzZTsKKyAgICAgICAgc3VwcG9ydGVkRXh0ZW5zaW9ucy5kcmF3QnVmZmVyc0luZGV4ZWRPRVMg
ICAgPSBmYWxzZTsKIAogICAgICAgICAvLyBSZXF1aXJlcyBnbENvbXByZXNzZWRUZXhJbWFnZTNE
CiAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMudGV4dHVyZUNvbXByZXNzaW9uQVNUQ09FUyA9
IGZhbHNlOwpAQCAtMzUwMSw4ICszMTA0LDggQEAgRXh0ZW5zaW9ucyBDb250ZXh0OjpnZW5lcmF0
ZVN1cHBvcnRlZEV4dGVuc2lvbnMoKSBjb25zdAogICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMubWF4
RGVidWdHcm91cFN0YWNrRGVwdGggPSAxMDI0OwogICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMubWF4
TGFiZWxMZW5ndGggICAgICAgICAgPSAxMDI0OwogCi0gICAgLy8gRXhwbGljaXRseSBlbmFibGUg
R0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKLSAgICBzdXBwb3J0ZWRFeHRlbnNpb25zLnJv
YnVzdENsaWVudE1lbW9yeSA9IHRydWU7CisgICAgLy8gRXhwbGljaXRseSBlbmFibGUgR0xfQU5H
TEVfcm9idXN0X2NsaWVudF9tZW1vcnkgaWYgdGhlIGNvbnRleHQgc3VwcG9ydHMgdmFsaWRhdGlv
bi4KKyAgICBzdXBwb3J0ZWRFeHRlbnNpb25zLnJvYnVzdENsaWVudE1lbW9yeSA9ICFtU2tpcFZh
bGlkYXRpb247CiAKICAgICAvLyBEZXRlcm1pbmUgcm9idXN0IHJlc291cmNlIGluaXQgYXZhaWxh
YmlsaXR5IGZyb20gRUdMLgogICAgIHN1cHBvcnRlZEV4dGVuc2lvbnMucm9idXN0UmVzb3VyY2VJ
bml0aWFsaXphdGlvbiA9IG1TdGF0ZS5pc1JvYnVzdFJlc291cmNlSW5pdEVuYWJsZWQoKTsKQEAg
LTM1MzcsNyArMzE0MCw4IEBAIEV4dGVuc2lvbnMgQ29udGV4dDo6Z2VuZXJhdGVTdXBwb3J0ZWRF
eHRlbnNpb25zKCkgY29uc3QKICAgICBzdXBwb3J0ZWRFeHRlbnNpb25zLmxvc2VDb250ZXh0Q0hS
T01JVU0gPSB0cnVlOwogCiAgICAgLy8gVGhlIEFTVEMgdGV4dHVyZSBleHRlbnNpb25zIGhhdmUg
ZGVwZW5kZW5jeSByZXF1aXJlbWVudHMuCi0gICAgaWYgKHN1cHBvcnRlZEV4dGVuc2lvbnMudGV4
dHVyZUNvbXByZXNzaW9uQVNUQ0hEUktIUikKKyAgICBpZiAoc3VwcG9ydGVkRXh0ZW5zaW9ucy50
ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSS0hSIHx8CisgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lv
bnMudGV4dHVyZUNvbXByZXNzaW9uU2xpY2VkM2RBU1RDS0hSKQogICAgIHsKICAgICAgICAgLy8g
R0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIgY2Fubm90IGJlIGV4cG9zZWQgd2l0
aG91dCBhbHNvIGV4cG9zaW5nCiAgICAgICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyCkBAIC00ODk1LDE2ICs0NDk5LDYgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Ojpz
eW5jU3RhdGVGb3JCbGl0KCkKICAgICByZXR1cm4gc3luY1N0YXRlKG1CbGl0RGlydHlCaXRzLCBt
QmxpdERpcnR5T2JqZWN0cyk7CiB9CiAKLWFuZ2xlOjpSZXN1bHQgQ29udGV4dDo6c3luY1N0YXRl
Rm9yUGF0aE9wZXJhdGlvbigpCi17Ci0gICAgQU5HTEVfVFJZKHN5bmNEaXJ0eU9iamVjdHMobVBh
dGhPcGVyYXRpb25EaXJ0eU9iamVjdHMpKTsKLQotICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRp
YS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5n
PwotICAgIEFOR0xFX1RSWShzeW5jRGlydHlCaXRzKCkpOwotCi0gICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOwotfQotCiB2b2lkIENvbnRleHQ6OmFjdGl2ZVNoYWRlclByb2dyYW0o
UHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQogewog
ICAgIFVOSU1QTEVNRU5URUQoKTsKQEAgLTQ5MjIsNyArNDUxNiw3IEBAIHZvaWQgQ29udGV4dDo6
YmxlbmRCYXJyaWVyKCkKIAogdm9pZCBDb250ZXh0OjpibGVuZENvbG9yKEdMZmxvYXQgcmVkLCBH
TGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpCiB7Ci0gICAgbVN0YXRl
LnNldEJsZW5kQ29sb3IoY2xhbXAwMShyZWQpLCBjbGFtcDAxKGdyZWVuKSwgY2xhbXAwMShibHVl
KSwgY2xhbXAwMShhbHBoYSkpOworICAgIG1TdGF0ZS5zZXRCbGVuZENvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKIH0KIAogdm9pZCBDb250ZXh0OjpibGVuZEVxdWF0aW9uKEdMZW51bSBt
b2RlKQpAQCAtNDkzMiw3ICs0NTI2LDcgQEAgdm9pZCBDb250ZXh0OjpibGVuZEVxdWF0aW9uKEdM
ZW51bSBtb2RlKQogCiB2b2lkIENvbnRleHQ6OmJsZW5kRXF1YXRpb25pKEdMdWludCBidWYsIEdM
ZW51bSBtb2RlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0QmxlbmRF
cXVhdGlvbkluZGV4ZWQobW9kZSwgbW9kZSwgYnVmKTsKIH0KIAogdm9pZCBDb250ZXh0OjpibGVu
ZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCkBAIC00
OTQyLDcgKzQ1MzYsNyBAQCB2b2lkIENvbnRleHQ6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVu
dW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKIAogdm9pZCBDb250ZXh0OjpibGVuZEVxdWF0
aW9uU2VwYXJhdGVpKEdMdWludCBidWYsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhh
KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0QmxlbmRFcXVhdGlvbklu
ZGV4ZWQobW9kZVJHQiwgbW9kZUFscGhhLCBidWYpOwogfQogCiB2b2lkIENvbnRleHQ6OmJsZW5k
RnVuYyhHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCkBAIC00OTUyLDcgKzQ1NDYsMTIg
QEAgdm9pZCBDb250ZXh0OjpibGVuZEZ1bmMoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9y
KQogCiB2b2lkIENvbnRleHQ6OmJsZW5kRnVuY2koR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xl
bnVtIGRzdCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgbVN0YXRlLnNldEJsZW5kRmFj
dG9yc0luZGV4ZWQoc3JjLCBkc3QsIHNyYywgZHN0LCBidWYpOworCisgICAgaWYgKG1TdGF0ZS5u
b1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYygpKQorICAgIHsKKyAg
ICAgICAgbVN0YXRlQ2FjaGUub25CbGVuZEZ1bmNJbmRleGVkQ2hhbmdlKHRoaXMpOworICAgIH0K
IH0KIAogdm9pZCBDb250ZXh0OjpibGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVu
dW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKQEAgLTQ5NjYsNyAr
NDU2NSwxMiBAQCB2b2lkIENvbnRleHQ6OmJsZW5kRnVuY1NlcGFyYXRlaShHTHVpbnQgYnVmLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0FscGhhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0QmxlbmRGYWN0b3JzSW5kZXhlZChzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhLCBidWYpOworCisgICAgaWYgKG1TdGF0ZS5ub1NpbXVs
dGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYygpKQorICAgIHsKKyAgICAgICAg
bVN0YXRlQ2FjaGUub25CbGVuZEZ1bmNJbmRleGVkQ2hhbmdlKHRoaXMpOworICAgIH0KIH0KIAog
dm9pZCBDb250ZXh0OjpjbGVhckNvbG9yKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZs
b2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpCkBAIC00OTkzLDcgKzQ1OTcsOSBAQCB2b2lkIENvbnRl
eHQ6OmNvbG9yTWFzayhHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBi
bHVlLCBHTGJvb2xlYQogCiB2b2lkIENvbnRleHQ6OmNvbG9yTWFza2koR0x1aW50IGluZGV4LCBH
TGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSkKIHsKLSAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgbVN0YXRlLnNldENvbG9yTWFza0luZGV4ZWQoQ29udmVy
dFRvQm9vbChyKSwgQ29udmVydFRvQm9vbChnKSwgQ29udmVydFRvQm9vbChiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0VG9Cb29sKGEpLCBpbmRleCk7CisgICAgbVN0
YXRlQ2FjaGUub25Db2xvck1hc2tDaGFuZ2UodGhpcyk7CiB9CiAKIHZvaWQgQ29udGV4dDo6Y3Vs
bEZhY2UoQ3VsbEZhY2VNb2RlIG1vZGUpCkBAIC01MDI0LDcgKzQ2MzAsOCBAQCB2b2lkIENvbnRl
eHQ6OmRpc2FibGUoR0xlbnVtIGNhcCkKIAogdm9pZCBDb250ZXh0OjpkaXNhYmxlaShHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG1TdGF0
ZS5zZXRFbmFibGVGZWF0dXJlSW5kZXhlZCh0YXJnZXQsIGZhbHNlLCBpbmRleCk7CisgICAgbVN0
YXRlQ2FjaGUub25Db250ZXh0Q2FwQ2hhbmdlKHRoaXMpOwogfQogCiB2b2lkIENvbnRleHQ6OmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCkBAIC01MDQxLDcgKzQ2NDgsOCBA
QCB2b2lkIENvbnRleHQ6OmVuYWJsZShHTGVudW0gY2FwKQogCiB2b2lkIENvbnRleHQ6OmVuYWJs
ZWkoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICBtU3RhdGUuc2V0RW5hYmxlRmVhdHVyZUluZGV4ZWQodGFyZ2V0LCB0cnVlLCBpbmRleCk7
CisgICAgbVN0YXRlQ2FjaGUub25Db250ZXh0Q2FwQ2hhbmdlKHRoaXMpOwogfQogCiB2b2lkIENv
bnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMdWludCBpbmRleCkKQEAgLTUzNTEsNyAr
NDk1OSw3IEBAIHZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliSTR1aXYoR0x1aW50IGluZGV4LCBj
b25zdCBHTHVpbnQgKnYpCiAgICAgbVN0YXRlQ2FjaGUub25EZWZhdWx0VmVydGV4QXR0cmlidXRl
Q2hhbmdlKHRoaXMpOwogfQogCi12b2lkIENvbnRleHQ6OmdldFZlcnRleEF0dHJpYml2KEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWJpdkltcGwoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpIGNvbnN0CiB7CiAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3Vy
cmVudFZhbHVlcyA9CiAgICAgICAgIGdldFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZh
bHVlKGluZGV4KTsKQEAgLTUzNjAsNiArNDk2OCwxMSBAQCB2b2lkIENvbnRleHQ6OmdldFZlcnRl
eEF0dHJpYml2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiB9CiAK
K3ZvaWQgQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIGdldFZlcnRleEF0dHJpYml2SW1wbChp
bmRleCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKIHZvaWQgQ29udGV4dDo6Z2V0VmVydGV4QXR0cmli
aXZSb2J1c3QoR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKQEAgLTU0ODIsMTQgKzUwOTUsMTQgQEAgR0x1aW50IENvbnRleHQ6
OmdldERlYnVnTWVzc2FnZUxvZyhHTHVpbnQgY291bnQsCiB2b2lkIENvbnRleHQ6OnB1c2hEZWJ1
Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdM
Y2hhciAqbWVzc2FnZSkKIHsKICAgICBzdGQ6OnN0cmluZyBtc2cobWVzc2FnZSwgKGxlbmd0aCA+
IDApID8gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpIDogc3RybGVuKG1lc3NhZ2UpKTsKLSAg
ICBtSW1wbGVtZW50YXRpb24tPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwgaWQsIG1zZyk7CisgICAg
QU5HTEVfQ09OVEVYVF9UUlkobUltcGxlbWVudGF0aW9uLT5wdXNoRGVidWdHcm91cCh0aGlzLCBz
b3VyY2UsIGlkLCBtc2cpKTsKICAgICBtU3RhdGUuZ2V0RGVidWcoKS5wdXNoR3JvdXAoc291cmNl
LCBpZCwgc3RkOjptb3ZlKG1zZykpOwogfQogCiB2b2lkIENvbnRleHQ6OnBvcERlYnVnR3JvdXAo
KQogewogICAgIG1TdGF0ZS5nZXREZWJ1ZygpLnBvcEdyb3VwKCk7Ci0gICAgbUltcGxlbWVudGF0
aW9uLT5wb3BEZWJ1Z0dyb3VwKCk7CisgICAgQU5HTEVfQ09OVEVYVF9UUlkobUltcGxlbWVudGF0
aW9uLT5wb3BEZWJ1Z0dyb3VwKHRoaXMpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpwcmltaXRpdmVC
b3VuZGluZ0JveChHTGZsb2F0IG1pblgsCkBAIC02NDcyLDE0ICs2MDg1LDEzIEBAIHZvaWQgQ29u
dGV4dDo6Z2V0SW50ZWdlcnZSb2J1c3QoR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwKIAogdm9pZCBDb250ZXh0OjpnZXRQcm9ncmFtaXYoU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0ID0gbnVsbHB0cjsKLSAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkKKyAg
ICAvLyBEb24ndCByZXNvbHZlIGxpbmsgaWYgY2hlY2tpbmcgdGhlIGxpbmsgY29tcGxldGlvbiBz
dGF0dXMuCisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW1Ob1Jlc29sdmVM
aW5rKHByb2dyYW0pOworICAgIGlmICghaXNDb250ZXh0TG9zdCgpICYmIHBuYW1lICE9IEdMX0NP
TVBMRVRJT05fU1RBVFVTX0tIUikKICAgICB7Ci0gICAgICAgIC8vIERvbid0IHJlc29sdmUgbGlu
ayBpZiBjaGVja2luZyB0aGUgbGluayBjb21wbGV0aW9uIHN0YXR1cy4KLSAgICAgICAgcHJvZ3Jh
bU9iamVjdCA9IChwbmFtZSA9PSBHTF9DT01QTEVUSU9OX1NUQVRVU19LSFIgPyBnZXRQcm9ncmFt
Tm9SZXNvbHZlTGluayhwcm9ncmFtKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldFByb2dyYW1SZXNvbHZlTGluayhwcm9ncmFt
KSk7Ci0gICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVj
dCA9IGdldFByb2dyYW1SZXNvbHZlTGluayhwcm9ncmFtKTsKICAgICB9CisgICAgQVNTRVJUKHBy
b2dyYW1PYmplY3QpOwogICAgIFF1ZXJ5UHJvZ3JhbWl2KHRoaXMsIHByb2dyYW1PYmplY3QsIHBu
YW1lLCBwYXJhbXMpOwogfQogCkBAIC02NTE0LDcgKzYxMjYsNyBAQCB2b2lkIENvbnRleHQ6Omdl
dFByb2dyYW1JbmZvTG9nKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogewogICAgIFByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtUmVzb2x2ZUxpbmsocHJvZ3JhbSk7CiAgICAgQVNT
RVJUKHByb2dyYW1PYmplY3QpOwotICAgIHByb2dyYW1PYmplY3QtPmdldEluZm9Mb2coYnVmc2l6
ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKKyAgICBwcm9ncmFtT2JqZWN0LT5nZXRFeGVjdXRhYmxlKCku
Z2V0SW5mb0xvZyhidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOwogfQogCiB2b2lkIENvbnRleHQ6
OmdldFByb2dyYW1QaXBlbGluZUluZm9Mb2coUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUsCkBA
IC02NjM4LDcgKzYyNTAsNyBAQCB2b2lkIENvbnRleHQ6OmdldFNoYWRlclNvdXJjZShTaGFkZXJQ
cm9ncmFtSUQgc2hhZGVyLAogICAgIHNoYWRlck9iamVjdC0+Z2V0U291cmNlKGJ1ZnNpemUsIGxl
bmd0aCwgc291cmNlKTsKIH0KIAotdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtZnYoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIENv
bnRleHQ6OmdldFVuaWZvcm1mdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9i
amVjdCA9IGdldFByb2dyYW1SZXNvbHZlTGluayhwcm9ncmFtKTsKICAgICBBU1NFUlQocHJvZ3Jh
bU9iamVjdCk7CkBAIC02NjQ2LDcgKzYyNTgsNyBAQCB2b2lkIENvbnRleHQ6OmdldFVuaWZvcm1m
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgKnBhcgog
fQogCiB2b2lkIENvbnRleHQ6OmdldFVuaWZvcm1mdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQpAQCAtNjY1NCw3ICs2MjY2
LDcgQEAgdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtZnZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCiAgICAgZ2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpOwogfQog
Ci12b2lkIENvbnRleHQ6OmdldFVuaWZvcm1pdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMaW50ICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldFVuaWZvcm1pdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCAq
cGFyYW1zKQogewogICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtUmVzb2x2
ZUxpbmsocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOwpAQCAtNjY2Miw3ICs2
Mjc0LDcgQEAgdm9pZCBDb250ZXh0OjpnZXRVbmlmb3JtaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW0KIH0KIAogdm9pZCBDb250ZXh0OjpnZXRV
bmlmb3JtaXZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpCkBAIC02Njc0LDEwICs2Mjg2LDEwIEBAIEdMaW50IENvbnRleHQ6Omdl
dFVuaWZvcm1Mb2NhdGlvbihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpu
YW1lKQogewogICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtUmVzb2x2ZUxp
bmsocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOwotICAgIHJldHVybiBwcm9n
cmFtT2JqZWN0LT5nZXRVbmlmb3JtTG9jYXRpb24obmFtZSk7CisgICAgcmV0dXJuIHByb2dyYW1P
YmplY3QtPmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKS52YWx1ZTsKIH0KIAotR0xib29sZWFuIENv
bnRleHQ6OmlzQnVmZmVyKEJ1ZmZlcklEIGJ1ZmZlcikKK0dMYm9vbGVhbiBDb250ZXh0Ojppc0J1
ZmZlcihCdWZmZXJJRCBidWZmZXIpIGNvbnN0CiB7CiAgICAgaWYgKGJ1ZmZlci52YWx1ZSA9PSAw
KQogICAgIHsKQEAgLTY2ODcsMTggKzYyOTksMTcgQEAgR0xib29sZWFuIENvbnRleHQ6OmlzQnVm
ZmVyKEJ1ZmZlcklEIGJ1ZmZlcikKICAgICByZXR1cm4gQ29udmVydFRvR0xCb29sZWFuKGdldEJ1
ZmZlcihidWZmZXIpKTsKIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzRW5hYmxlZChHTGVudW0g
Y2FwKQorR0xib29sZWFuIENvbnRleHQ6OmlzRW5hYmxlZChHTGVudW0gY2FwKSBjb25zdAogewog
ICAgIHJldHVybiBtU3RhdGUuZ2V0RW5hYmxlRmVhdHVyZShjYXApOwogfQogCi1HTGJvb2xlYW4g
Q29udGV4dDo6aXNFbmFibGVkaShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCitHTGJvb2xl
YW4gQ29udGV4dDo6aXNFbmFibGVkaShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpIGNvbnN0
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bVN0YXRlLmdldEVuYWJsZUZlYXR1cmVJbmRleGVkKHRhcmdldCwgaW5kZXgpOwogfQogCi1HTGJv
b2xlYW4gQ29udGV4dDo6aXNGcmFtZWJ1ZmZlcihGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyKQor
R0xib29sZWFuIENvbnRleHQ6OmlzRnJhbWVidWZmZXIoRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZl
cikgY29uc3QKIHsKICAgICBpZiAoZnJhbWVidWZmZXIudmFsdWUgPT0gMCkKICAgICB7CkBAIC02
NzA4LDcgKzYzMTksNyBAQCBHTGJvb2xlYW4gQ29udGV4dDo6aXNGcmFtZWJ1ZmZlcihGcmFtZWJ1
ZmZlcklEIGZyYW1lYnVmZmVyKQogICAgIHJldHVybiBDb252ZXJ0VG9HTEJvb2xlYW4oZ2V0RnJh
bWVidWZmZXIoZnJhbWVidWZmZXIpKTsKIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzUHJvZ3Jh
bShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1Byb2dyYW0o
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pIGNvbnN0CiB7CiAgICAgaWYgKHByb2dyYW0udmFsdWUg
PT0gMCkKICAgICB7CkBAIC02NzE4LDcgKzYzMjksNyBAQCBHTGJvb2xlYW4gQ29udGV4dDo6aXNQ
cm9ncmFtKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQogICAgIHJldHVybiBDb252ZXJ0VG9HTEJv
b2xlYW4oZ2V0UHJvZ3JhbU5vUmVzb2x2ZUxpbmsocHJvZ3JhbSkpOwogfQogCi1HTGJvb2xlYW4g
Q29udGV4dDo6aXNSZW5kZXJidWZmZXIoUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKQorR0xi
b29sZWFuIENvbnRleHQ6OmlzUmVuZGVyYnVmZmVyKFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZl
cikgY29uc3QKIHsKICAgICBpZiAocmVuZGVyYnVmZmVyLnZhbHVlID09IDApCiAgICAgewpAQCAt
NjcyOCw3ICs2MzM5LDcgQEAgR0xib29sZWFuIENvbnRleHQ6OmlzUmVuZGVyYnVmZmVyKFJlbmRl
cmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikKICAgICByZXR1cm4gQ29udmVydFRvR0xCb29sZWFuKGdl
dFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKTsKIH0KIAotR0xib29sZWFuIENvbnRleHQ6Omlz
U2hhZGVyKFNoYWRlclByb2dyYW1JRCBzaGFkZXIpCitHTGJvb2xlYW4gQ29udGV4dDo6aXNTaGFk
ZXIoU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikgY29uc3QKIHsKICAgICBpZiAoc2hhZGVyLnZhbHVl
ID09IDApCiAgICAgewpAQCAtNjczOCw3ICs2MzQ5LDcgQEAgR0xib29sZWFuIENvbnRleHQ6Omlz
U2hhZGVyKFNoYWRlclByb2dyYW1JRCBzaGFkZXIpCiAgICAgcmV0dXJuIENvbnZlcnRUb0dMQm9v
bGVhbihnZXRTaGFkZXIoc2hhZGVyKSk7CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0Ojppc1RleHR1
cmUoVGV4dHVyZUlEIHRleHR1cmUpCitHTGJvb2xlYW4gQ29udGV4dDo6aXNUZXh0dXJlKFRleHR1
cmVJRCB0ZXh0dXJlKSBjb25zdAogewogICAgIGlmICh0ZXh0dXJlLnZhbHVlID09IDApCiAgICAg
ewpAQCAtNjgzMSwxOSArNjQ0MiwyMiBAQCB2b2lkIENvbnRleHQ6OnBhdGNoUGFyYW1ldGVyaShH
TGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9p
ZCBDb250ZXh0Ojp1bmlmb3JtMWYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCkKK3ZvaWQgQ29u
dGV4dDo6dW5pZm9ybTFmKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xmbG9hdCB4KQogewog
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0t
PnNldFVuaWZvcm0xZnYobG9jYXRpb24sIDEsICZ4KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlm
b3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtMWZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0
YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBj
b3VudCwgdik7CiB9CiAKLXZvaWQgQ29udGV4dDo6c2V0VW5pZm9ybTFpSW1wbChQcm9ncmFtICpw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCit2
b2lkIENvbnRleHQ6OnNldFVuaWZvcm0xaUltcGwoUHJvZ3JhbSAqcHJvZ3JhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqdikKIHsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3Jt
MWl2KHRoaXMsIGxvY2F0aW9uLCBjb3VudCwgdik7CiB9CkBAIC02ODU0LDk1ICs2NDY4LDk1IEBA
IHZvaWQgQ29udGV4dDo6b25TYW1wbGVyVW5pZm9ybUNoYW5nZShzaXplX3QgdGV4dHVyZVVuaXRJ
bmRleCkKICAgICBtU3RhdGVDYWNoZS5vbkFjdGl2ZVRleHR1cmVDaGFuZ2UodGhpcyk7CiB9CiAK
LXZvaWQgQ29udGV4dDo6dW5pZm9ybTFpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KQordm9pZCBD
b250ZXh0Ojp1bmlmb3JtMWkoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCB4KQogewog
ICAgIHNldFVuaWZvcm0xaUltcGwobVN0YXRlLmdldFByb2dyYW0oKSwgbG9jYXRpb24sIDEsICZ4
KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTFpdihVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewogICAg
IHNldFVuaWZvcm0xaUltcGwobVN0YXRlLmdldFByb2dyYW0oKSwgbG9jYXRpb24sIGNvdW50LCB2
KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtMmYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
eCwgR0xmbG9hdCB5KQordm9pZCBDb250ZXh0Ojp1bmlmb3JtMmYoVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKIHsKICAgICBHTGZsb2F0IHh5WzJdICAgID0g
e3gsIHl9OwogICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAg
IHByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9jYXRpb24sIDEsIHh5KTsKIH0KIAotdm9pZCBDb250
ZXh0Ojp1bmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2KQordm9pZCBDb250ZXh0Ojp1bmlmb3JtMmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBQcm9ncmFtICpwcm9n
cmFtID0gbVN0YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMmZ2KGxv
Y2F0aW9uLCBjb3VudCwgdik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTJpKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB4LCBHTGludCB5KQordm9pZCBDb250ZXh0Ojp1bmlmb3JtMmkoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KQogewogICAgIEdMaW50IHh5WzJd
ICAgICAgPSB7eCwgeX07CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1TdGF0ZS5nZXRQcm9ncmFt
KCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgMSwgeHkpOwogfQogCi12
b2lkIENvbnRleHQ6OnVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50ICp2KQordm9pZCBDb250ZXh0Ojp1bmlmb3JtMml2KFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgUHJvZ3JhbSAq
cHJvZ3JhbSA9IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJp
dihsb2NhdGlvbiwgY291bnQsIHYpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0zZihHTGlu
dCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKK3ZvaWQgQ29udGV4
dDo6dW5pZm9ybTNmKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeikKIHsKICAgICBHTGZsb2F0IHh5elszXSAgID0ge3gsIHksIHp9OwogICAg
IFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNl
dFVuaWZvcm0zZnYobG9jYXRpb24sIDEsIHh5eik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9y
bTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3Zv
aWQgQ29udGV4dDo6dW5pZm9ybTNmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1TdGF0
ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNmdihsb2NhdGlvbiwgY291
bnQsIHYpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0zaShHTGludCBsb2NhdGlvbiwgR0xp
bnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTNpKFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKIHsKICAgICBHTGlu
dCB4eXpbM10gICAgID0ge3gsIHksIHp9OwogICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUu
Z2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24sIDEsIHh5
eik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCit2b2lkIENvbnRleHQ6OnVuaWZvcm0zaXYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5z
ZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwgdik7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5p
Zm9ybTRmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBH
TGZsb2F0IHcpCit2b2lkIENvbnRleHQ6OnVuaWZvcm00ZihVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKIHsKICAgICBH
TGZsb2F0IHh5endbNF0gID0ge3gsIHksIHosIHd9OwogICAgIFByb2dyYW0gKnByb2dyYW0gPSBt
U3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNldFVuaWZvcm00ZnYobG9jYXRpb24s
IDEsIHh5encpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit2b2lkIENvbnRleHQ6OnVuaWZvcm00
ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KQogewogICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAg
IHByb2dyYW0tPnNldFVuaWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAotdm9pZCBD
b250ZXh0Ojp1bmlmb3JtNGkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50
IHosIEdMaW50IHcpCit2b2lkIENvbnRleHQ6OnVuaWZvcm00aShVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCiB7CiAgICAgR0xpbnQg
eHl6d1s0XSAgICA9IHt4LCB5LCB6LCB3fTsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRl
LmdldFByb2dyYW0oKTsKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNGl2KGxvY2F0aW9uLCAxLCB4
eXp3KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTRpdihVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewog
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0t
PnNldFVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1
bmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLAordm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0
cml4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpCkBAIC02OTUxLDcgKzY1NjUsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZv
cm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJp
eDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQogCi12b2lkIENvbnRl
eHQ6OnVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIENvbnRleHQ6OnVuaWZv
cm1NYXRyaXgzZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTY5NjAsNyArNjU3NCw3IEBAIHZvaWQgQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwKICAgICBwcm9ncmFtLT5zZXRVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKLXZvaWQg
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDRmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzAwNSw1MSArNjYxOSw1MSBAQCB2b2lkIENv
bnRleHQ6OnByb2dyYW1CaW5hcnkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgQU5HTEVf
Q09OVEVYVF9UUlkob25Qcm9ncmFtTGluayhwcm9ncmFtT2JqZWN0KSk7CiB9CiAKLXZvaWQgQ29u
dGV4dDo6dW5pZm9ybTF1aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKQordm9pZCBDb250ZXh0
Ojp1bmlmb3JtMXVpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50IHYwKQogewogICAg
IFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dyYW0tPnNl
dFVuaWZvcm0xdWl2KGxvY2F0aW9uLCAxLCAmdjApOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZv
cm0ydWkoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKQordm9pZCBDb250ZXh0
Ojp1bmlmb3JtMnVpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQg
djEpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSAgPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAg
IGNvbnN0IEdMdWludCB4eVtdID0ge3YwLCB2MX07CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJ1
aXYobG9jYXRpb24sIDEsIHh5KTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtM3VpKEdMaW50
IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKQordm9pZCBDb250ZXh0
Ojp1bmlmb3JtM3VpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQg
djEsIEdMdWludCB2MikKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtICAgPSBtU3RhdGUuZ2V0UHJv
Z3JhbSgpOwogICAgIGNvbnN0IEdMdWludCB4eXpbXSA9IHt2MCwgdjEsIHYyfTsKICAgICBwcm9n
cmFtLT5zZXRVbmlmb3JtM3Vpdihsb2NhdGlvbiwgMSwgeHl6KTsKIH0KIAotdm9pZCBDb250ZXh0
Ojp1bmlmb3JtNHVpKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50
IHYyLCBHTHVpbnQgdjMpCit2b2lkIENvbnRleHQ6OnVuaWZvcm00dWkoVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyLCBHTHVpbnQgdjMpCiB7
CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSAgICA9IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgY29u
c3QgR0x1aW50IHh5endbXSA9IHt2MCwgdjEsIHYyLCB2M307CiAgICAgcHJvZ3JhbS0+c2V0VW5p
Zm9ybTR1aXYobG9jYXRpb24sIDEsIHh5encpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0x
dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtMXVpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9
IG1TdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTF1aXYobG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CiB9Ci12b2lkIENvbnRleHQ6OnVuaWZvcm0ydWl2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQordm9pZCBDb250ZXh0
Ojp1bmlmb3JtMnVpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1TdGF0ZS5nZXRQ
cm9ncmFtKCk7CiAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJ1aXYobG9jYXRpb24sIGNvdW50LCB2
YWx1ZSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTN1aXYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIENvbnRleHQ6OnVuaWZvcm0z
dWl2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2YWx1ZSkKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbVN0YXRlLmdldFByb2dyYW0oKTsK
ICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtM3Vpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0K
IAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtNHVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50ICp2YWx1ZSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTR1aXYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQog
ewogICAgIFByb2dyYW0gKnByb2dyYW0gPSBtU3RhdGUuZ2V0UHJvZ3JhbSgpOwogICAgIHByb2dy
YW0tPnNldFVuaWZvcm00dWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwpAQCAtNzA4MywxMiAr
NjY5NywxNyBAQCB2b2lkIENvbnRleHQ6OmRlbGV0ZVF1ZXJpZXMoR0xzaXplaSBuLCBjb25zdCBR
dWVyeUlEICppZHMpCiAgICAgfQogfQogCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNRdWVyeShRdWVy
eUlEIGlkKQorYm9vbCBDb250ZXh0Ojppc1F1ZXJ5R2VuZXJhdGVkKFF1ZXJ5SUQgcXVlcnkpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIENvbnZlcnRUb0dMQm9vbGVhbihnZXRRdWVyeShpZCwgZmFsc2Us
IFF1ZXJ5VHlwZTo6SW52YWxpZEVudW0pICE9IG51bGxwdHIpOworICAgIHJldHVybiBtUXVlcnlN
YXAuY29udGFpbnMocXVlcnkpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDNm
dihHTGludCBsb2NhdGlvbiwKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1F1ZXJ5KFF1ZXJ5SUQgaWQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIENvbnZlcnRUb0dMQm9vbGVhbihnZXRRdWVyeShpZCkgIT0g
bnVsbHB0cik7Cit9CisKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4M2Z2KFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCkBAIC03MDk3LDcgKzY3MTYsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgy
eDNmdihHTGludCBsb2NhdGlvbiwKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MngzZnYo
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1
bmlmb3JtTWF0cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIENvbnRleHQ6OnVuaWZvcm1N
YXRyaXgzeDJmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzEwNiw3ICs2NzI1LDcgQEAgdm9pZCBDb250
ZXh0Ojp1bmlmb3JtTWF0cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgcHJvZ3JhbS0+c2V0
VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9uLAordm9p
ZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4Mng0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTcxMTUsNyAr
NjczNCw3IEBAIHZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9u
LAogICAgIHByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJmdihH
TGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmZ2KFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCkBAIC03MTI0LDcgKzY3NDMsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0
eDJmdihHTGludCBsb2NhdGlvbiwKICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NHgyZnYo
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1
bmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIENvbnRleHQ6OnVuaWZvcm1N
YXRyaXgzeDRmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzEzMyw3ICs2NzUyLDcgQEAgdm9pZCBDb250
ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgcHJvZ3JhbS0+c2V0
VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLAordm9p
ZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTcxNzUsNyAr
Njc5NCw3IEBAIHZvaWQgQ29udGV4dDo6Z2VuVmVydGV4QXJyYXlzKEdMc2l6ZWkgbiwgVmVydGV4
QXJyYXlJRCAqYXJyYXlzKQogICAgIH0KIH0KIAotR0xib29sZWFuIENvbnRleHQ6OmlzVmVydGV4
QXJyYXkoVmVydGV4QXJyYXlJRCBhcnJheSkKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1ZlcnRleEFy
cmF5KFZlcnRleEFycmF5SUQgYXJyYXkpIGNvbnN0CiB7CiAgICAgaWYgKGFycmF5LnZhbHVlID09
IDApCiAgICAgewpAQCAtNzI1MCw3ICs2ODY5LDcgQEAgdm9pZCBDb250ZXh0OjpnZW5UcmFuc2Zv
cm1GZWVkYmFja3MoR0xzaXplaSBuLCBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHMpCiAgICAgfQog
fQogCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNUcmFuc2Zvcm1GZWVkYmFjayhUcmFuc2Zvcm1GZWVk
YmFja0lEIGlkKQorR0xib29sZWFuIENvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2soVHJhbnNm
b3JtRmVlZGJhY2tJRCBpZCkgY29uc3QKIHsKICAgICBpZiAoaWQudmFsdWUgPT0gMCkKICAgICB7
CkBAIC03Mjc3LDE0ICs2ODk2LDE0IEBAIHZvaWQgQ29udGV4dDo6cmVzdW1lVHJhbnNmb3JtRmVl
ZGJhY2soKQogICAgIG1TdGF0ZUNhY2hlLm9uQWN0aXZlVHJhbnNmb3JtRmVlZGJhY2tDaGFuZ2Uo
dGhpcyk7CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0VW5pZm9ybXVpdihTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKQordm9pZCBDb250ZXh0Ojpn
ZXRVbmlmb3JtdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sIEdMdWludCAqcGFyYW1zKQogewogICAgIGNvbnN0IFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBnZXRQcm9ncmFtUmVzb2x2ZUxpbmsocHJvZ3JhbSk7CiAgICAgcHJvZ3JhbU9iamVjdC0+
Z2V0VW5pZm9ybXVpdih0aGlzLCBsb2NhdGlvbiwgcGFyYW1zKTsKIH0KIAogdm9pZCBDb250ZXh0
OjpnZXRVbmlmb3JtdWl2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQpAQCAtNzM5OSw3ICs3MDE4LDcgQEAgR0xzeW5j
IENvbnRleHQ6OmZlbmNlU3luYyhHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKQog
ICAgIHJldHVybiBzeW5jSGFuZGxlOwogfQogCi1HTGJvb2xlYW4gQ29udGV4dDo6aXNTeW5jKEdM
c3luYyBzeW5jKQorR0xib29sZWFuIENvbnRleHQ6OmlzU3luYyhHTHN5bmMgc3luYykgY29uc3QK
IHsKICAgICByZXR1cm4gKGdldFN5bmMoc3luYykgIT0gbnVsbHB0cik7CiB9CkBAIC03NTA2LDE5
ICs3MTI1LDIyIEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdChHTGVu
dW0gdGFyZ2V0LAogICAgIGdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcyk7CiB9CiAKLXZvaWQgQ29udGV4dDo6cHJvZ3JhbVVu
aWZvcm0xaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYw
KQordm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTFpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMaW50IHYwKQogewogICAgIHByb2dyYW1Vbmlm
b3JtMWl2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCAmdjApOwogfQogCi12b2lkIENvbnRleHQ6OnBy
b2dyYW1Vbmlmb3JtMmkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGludCB2MCwgR0xpbnQgdjEpCit2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMmkoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxKQogewogICAgIEdM
aW50IHh5WzJdID0ge3YwLCB2MX07CiAgICAgcHJvZ3JhbVVuaWZvcm0yaXYocHJvZ3JhbSwgbG9j
YXRpb24sIDEsIHh5KTsKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTNpKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB2MikKQEAgLTc1MjgsNyArNzE1MCw3IEBAIHZvaWQgQ29udGV4
dDo6cHJvZ3JhbVVuaWZvcm0zaShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBD
b250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MiwKQEAg
LTc1MzgsMTkgKzcxNjAsMjIgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRpKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAogICAgIHByb2dyYW1Vbmlmb3JtNGl2KHByb2dyYW0sIGxvY2F0
aW9uLCAxLCB4eXp3KTsKIH0KIAotdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTF1aShTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKK3ZvaWQgQ29u
dGV4dDo6cHJvZ3JhbVVuaWZvcm0xdWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50IHYwKQogewogICAgIHByb2dyYW1Vbmlmb3JtMXVpdihw
cm9ncmFtLCBsb2NhdGlvbiwgMSwgJnYwKTsKIH0KIAotdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybTJ1aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2
MCwgR0x1aW50IHYxKQordm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJ1aShTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
djAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSkKIHsKICAgICBH
THVpbnQgeHlbMl0gPSB7djAsIHYxfTsKICAgICBwcm9ncmFtVW5pZm9ybTJ1aXYocHJvZ3JhbSwg
bG9jYXRpb24sIDEsIHh5KTsKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTN1aShT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MikKQEAgLTc1NjAsNyArNzE4NSw3IEBA
IHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zdWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
CiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00dWkoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjIsCkBAIC03NTcwLDE5ICs3MTk1LDIyIEBAIHZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm00dWkoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgcHJvZ3JhbVVu
aWZvcm00dWl2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eXp3KTsKIH0KIAotdm9pZCBDb250ZXh0
Ojpwcm9ncmFtVW5pZm9ybTFmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB2MCkKK3ZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xZihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGZsb2F0IHYwKQogewog
ICAgIHByb2dyYW1Vbmlmb3JtMWZ2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCAmdjApOwogfQogCi12
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMmYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKQordm9pZCBDb250ZXh0Ojpwcm9n
cmFtVW5pZm9ybTJmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgdjEpCiB7CiAgICAgR0xmbG9hdCB4eVsyXSA9IHt2MCwgdjF9OwogICAgIHByb2dy
YW1Vbmlmb3JtMmZ2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eSk7CiB9CiAKIHZvaWQgQ29udGV4
dDo6cHJvZ3JhbVVuaWZvcm0zZihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIpCkBA
IC03NTkyLDcgKzcyMjAsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtM2YoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00ZihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIsCkBAIC03NjAzLDcgKzcyMzEsNyBAQCB2
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNGYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9
CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKQEAgLTc2MTMsNyAr
NzI0MSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xaXYoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yaXYoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsK
QEAgLTc2MjMsNyArNzI1MSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0yaXYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0z
aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICp2YWx1ZSkKIHsKQEAgLTc2MzMsNyArNzI2MSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVu
aWZvcm0zaXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJv
Z3JhbVVuaWZvcm00aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKQEAgLTc2NDMsNyArNzI3MSw3IEBAIHZvaWQgQ29udGV4
dDo6cHJvZ3JhbVVuaWZvcm00aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQg
Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xdWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKQEAgLTc2NTMsNyArNzI4
MSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xdWl2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMnVpdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUp
CiB7CkBAIC03NjYzLDcgKzcyOTEsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMnVp
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybTN1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlKQogewpAQCAtNzY3Myw3ICs3MzAxLDcgQEAgdm9pZCBDb250ZXh0
Ojpwcm9ncmFtVW5pZm9ybTN1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQg
Q29udGV4dDo6cHJvZ3JhbVVuaWZvcm00dWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKQEAgLTc2ODMsNyArNzMx
MSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00dWl2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWZ2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsK
QEAgLTc2OTMsNyArNzMyMSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0xZnYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0y
ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQogewpAQCAtNzcwMyw3ICs3MzMxLDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFt
VW5pZm9ybTJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpw
cm9ncmFtVW5pZm9ybTNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CkBAIC03NzEzLDcgKzczNDEsNyBAQCB2b2lkIENv
bnRleHQ6OnByb2dyYW1Vbmlmb3JtM2Z2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtNGZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKQEAgLTc3MjMsNyArNzM1
MSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00ZnYoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzczNCw3ICs3MzYyLDcgQEAgdm9pZCBD
b250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
IH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC03NzQ1LDcgKzczNzMsNyBAQCB2b2lkIENvbnRleHQ6
OnByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKQEAgLTc3NTYsNyArNzM4NCw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29u
dGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzc2Nyw3ICs3Mzk1LDcgQEAgdm9pZCBDb250ZXh0Ojpw
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTc3NzgsNyArNzQwNiw3IEBAIHZvaWQgQ29u
dGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
IH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC03Nzg5LDcgKzc0MTcsNyBAQCB2
b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtNzgwMCw3ICs3NDI4
LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0
ZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTc4MTEs
NyArNzQzOSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1h
dHJpeDR4M2Z2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBA
IC03ODQ1LDcgKzc0NzMsNyBAQCB2b2lkIENvbnRleHQ6OmRlbGV0ZVByb2dyYW1QaXBlbGluZXMo
R0xzaXplaSBjb3VudCwgY29uc3QgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcAogICAgIH0KIH0KIAot
R0xib29sZWFuIENvbnRleHQ6OmlzUHJvZ3JhbVBpcGVsaW5lKFByb2dyYW1QaXBlbGluZUlEIHBp
cGVsaW5lKQorR0xib29sZWFuIENvbnRleHQ6OmlzUHJvZ3JhbVBpcGVsaW5lKFByb2dyYW1QaXBl
bGluZUlEIHBpcGVsaW5lKSBjb25zdAogewogICAgIGlmIChwaXBlbGluZS52YWx1ZSA9PSAwKQog
ICAgIHsKQEAgLTc5MDgsNyArNzUzNiw3IEBAIHZvaWQgQ29udGV4dDo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZShTaGFkZXJQcm9ncmFtSUQgc2hhZGVyLAogfQogCiB2b2lkIENvbnRleHQ6Omdl
dG5Vbmlmb3JtZnYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMp
CiB7CkBAIC03OTE5LDcgKzc1NDcsNyBAQCB2b2lkIENvbnRleHQ6OmdldG5Vbmlmb3JtZnYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm1mdlJv
YnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpwYXJhbXMpCkBAIC03OTI3LDcgKzc1NTUsMTAgQEAgdm9pZCBDb250ZXh0OjpnZXRuVW5p
Zm9ybWZ2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgIFVOSU1QTEVNRU5URUQo
KTsKIH0KIAotdm9pZCBDb250ZXh0OjpnZXRuVW5pZm9ybWl2KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKQordm9p
ZCBDb250ZXh0OjpnZXRuVW5pZm9ybWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
Z2V0UHJvZ3JhbVJlc29sdmVMaW5rKHByb2dyYW0pOwogICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0
KTsKQEAgLTc5MzYsNyArNzU2Nyw3IEBAIHZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm1pdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmCiB9CiAKIHZv
aWQgQ29udGV4dDo6Z2V0blVuaWZvcm1pdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQpAQCAtNzk0NSw3ICs3NTc2LDcg
QEAgdm9pZCBDb250ZXh0OjpnZXRuVW5pZm9ybWl2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAogfQogCiB2b2lkIENvbnRleHQ6OmdldG5Vbmlmb3JtdWl2Um9idXN0KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMp
CkBAIC03OTUzLDcgKzc1ODQsNyBAQCB2b2lkIENvbnRleHQ6OmdldG5Vbmlmb3JtdWl2Um9idXN0
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotR0xi
b29sZWFuIENvbnRleHQ6OmlzRmVuY2VOVihGZW5jZU5WSUQgZmVuY2UpCitHTGJvb2xlYW4gQ29u
dGV4dDo6aXNGZW5jZU5WKEZlbmNlTlZJRCBmZW5jZSkgY29uc3QKIHsKICAgICBGZW5jZU5WICpm
ZW5jZU9iamVjdCA9IGdldEZlbmNlTlYoZmVuY2UpOwogCkBAIC04MDEzLDcgKzc2NDQsNyBAQCB2
b2lkIENvbnRleHQ6OmRlbGV0ZU1lbW9yeU9iamVjdHMoR0xzaXplaSBuLCBjb25zdCBNZW1vcnlP
YmplY3RJRCAqbWVtb3J5T2JqZWN0cwogICAgIH0KIH0KIAotR0xib29sZWFuIENvbnRleHQ6Omlz
TWVtb3J5T2JqZWN0KE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdCkKK0dMYm9vbGVhbiBDb250
ZXh0Ojppc01lbW9yeU9iamVjdChNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3QpIGNvbnN0CiB7
CiAgICAgaWYgKG1lbW9yeU9iamVjdC52YWx1ZSA9PSAwKQogICAgIHsKQEAgLTgwMzEsMTYgKzc2
NjIsMTggQEAgdm9pZCBDb250ZXh0OjpjcmVhdGVNZW1vcnlPYmplY3RzKEdMc2l6ZWkgbiwgTWVt
b3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHMpCiAgICAgfQogfQogCi12b2lkIENvbnRleHQ6Om1l
bW9yeU9iamVjdFBhcmFtZXRlcml2KE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQordm9pZCBD
b250ZXh0OjptZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihNZW1vcnlPYmplY3RJRCBtZW1vcnksIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgTWVtb3J5T2JqZWN0ICptZW1vcnlPYmplY3QgPSBnZXRNZW1vcnlPYmplY3QobWVtb3J5
KTsKKyAgICBBU1NFUlQobWVtb3J5T2JqZWN0KTsKKyAgICBBTkdMRV9DT05URVhUX1RSWShTZXRN
ZW1vcnlPYmplY3RQYXJhbWV0ZXJpdih0aGlzLCBtZW1vcnlPYmplY3QsIHBuYW1lLCBwYXJhbXMp
KTsKIH0KIAotdm9pZCBDb250ZXh0OjpnZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihNZW1vcnlP
YmplY3RJRCBtZW1vcnlPYmplY3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3ZvaWQg
Q29udGV4dDo6Z2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYoTWVtb3J5T2JqZWN0SUQgbWVtb3J5
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIGNvbnN0IE1lbW9yeU9iamVjdCAqbWVtb3J5T2JqZWN0ID0gZ2V0TWVtb3J5T2JqZWN0KG1l
bW9yeSk7CisgICAgQVNTRVJUKG1lbW9yeU9iamVjdCk7CisgICAgUXVlcnlNZW1vcnlPYmplY3RQ
YXJhbWV0ZXJpdihtZW1vcnlPYmplY3QsIHBuYW1lLCBwYXJhbXMpOwogfQogCiB2b2lkIENvbnRl
eHQ6OnRleFN0b3JhZ2VNZW0yRChUZXh0dXJlVHlwZSB0YXJnZXQsCkBAIC04MTExLDYgKzc3NDQs
MTYgQEAgdm9pZCBDb250ZXh0OjppbXBvcnRNZW1vcnlGZChNZW1vcnlPYmplY3RJRCBtZW1vcnks
IEdMdWludDY0IHNpemUsIEhhbmRsZVR5cGUgaGEKICAgICBBTkdMRV9DT05URVhUX1RSWShtZW1v
cnlPYmplY3QtPmltcG9ydEZkKHRoaXMsIHNpemUsIGhhbmRsZVR5cGUsIGZkKSk7CiB9CiAKK3Zv
aWQgQ29udGV4dDo6aW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlKE1lbW9yeU9iamVjdElEIG1lbW9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRs
ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFu
ZGxlKQoreworICAgIE1lbW9yeU9iamVjdCAqbWVtb3J5T2JqZWN0ID0gZ2V0TWVtb3J5T2JqZWN0
KG1lbW9yeSk7CisgICAgQVNTRVJUKG1lbW9yeU9iamVjdCAhPSBudWxscHRyKTsKKyAgICBBTkdM
RV9DT05URVhUX1RSWShtZW1vcnlPYmplY3QtPmltcG9ydFppcmNvbkhhbmRsZSh0aGlzLCBzaXpl
LCBoYW5kbGVUeXBlLCBoYW5kbGUpKTsKK30KKwogdm9pZCBDb250ZXh0OjpnZW5TZW1hcGhvcmVz
KEdMc2l6ZWkgbiwgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXMpCiB7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBuOyBpKyspCkBAIC04MTI3LDcgKzc3NzAsNyBAQCB2b2lkIENvbnRleHQ6OmRlbGV0
ZVNlbWFwaG9yZXMoR0xzaXplaSBuLCBjb25zdCBTZW1hcGhvcmVJRCAqc2VtYXBob3JlcykKICAg
ICB9CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0Ojppc1NlbWFwaG9yZShTZW1hcGhvcmVJRCBzZW1h
cGhvcmUpCitHTGJvb2xlYW4gQ29udGV4dDo6aXNTZW1hcGhvcmUoU2VtYXBob3JlSUQgc2VtYXBo
b3JlKSBjb25zdAogewogICAgIGlmIChzZW1hcGhvcmUudmFsdWUgPT0gMCkKICAgICB7CkBAIC04
MjA2LDYgKzc4NDksMTUgQEAgdm9pZCBDb250ZXh0OjppbXBvcnRTZW1hcGhvcmVGZChTZW1hcGhv
cmVJRCBzZW1hcGhvcmUsIEhhbmRsZVR5cGUgaGFuZGxlVHlwZSwgR0wKICAgICBBTkdMRV9DT05U
RVhUX1RSWShzZW1hcGhvcmVPYmplY3QtPmltcG9ydEZkKHRoaXMsIGhhbmRsZVR5cGUsIGZkKSk7
CiB9CiAKK3ZvaWQgQ29udGV4dDo6aW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlKFNlbWFwaG9y
ZUlEIHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBoYW5kbGUpCit7CisgICAgU2VtYXBob3JlICpzZW1hcGhvcmVPYmpl
Y3QgPSBnZXRTZW1hcGhvcmUoc2VtYXBob3JlKTsKKyAgICBBU1NFUlQoc2VtYXBob3JlT2JqZWN0
ICE9IG51bGxwdHIpOworICAgIEFOR0xFX0NPTlRFWFRfVFJZKHNlbWFwaG9yZU9iamVjdC0+aW1w
b3J0WmlyY29uSGFuZGxlKHRoaXMsIGhhbmRsZVR5cGUsIGhhbmRsZSkpOworfQorCiB2b2lkIENv
bnRleHQ6OmVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKFRleHR1cmVUeXBlIHRhcmdldCwgR0xlZ2xJ
bWFnZU9FUyBpbWFnZSkKIHsKICAgICBUZXh0dXJlICp0ZXh0dXJlICAgICAgICA9IGdldFRleHR1
cmVCeVR5cGUodGFyZ2V0KTsKQEAgLTgyNTksNiArNzkxMSwzMCBAQCBib29sIENvbnRleHQ6Omdl
dEluZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwKICAgICAgICAgfQogICAg
IH0KIAorICAgIGlmIChtU3VwcG9ydGVkRXh0ZW5zaW9ucy5kcmF3QnVmZmVyc0luZGV4ZWRBbnko
KSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAg
ICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6CisgICAgICAgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19B
TFBIQToKKyAgICAgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjoKKyAgICAgICAgICAgIGNh
c2UgR0xfQkxFTkRfRFNUX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElP
Tl9SR0I6CisgICAgICAgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAg
ICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdMX0NPTE9SX1dSSVRFTUFTSzoKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfQk9PTDsKKyAgICAgICAgICAg
ICAgICAqbnVtUGFyYW1zID0gNDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkg
PCBWZXJzaW9uKDMsIDEpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODQwNyw3
ICs4MDgzLDggQEAgdm9pZCBDb250ZXh0OjpvblN1YmplY3RTdGF0ZUNoYW5nZShhbmdsZTo6U3Vi
amVjdEluZGV4IGluZGV4LCBhbmdsZTo6U3ViamVjdE1lc3MKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGlmIChpbmRleCA8IGtUZXh0dXJlTWF4U3ViamVjdEluZGV4KQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IGFuZ2xlOjpTdWJqZWN0TWVzc2Fn
ZTo6Q29udGVudHNDaGFuZ2VkKQorICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IGFuZ2xl
OjpTdWJqZWN0TWVzc2FnZTo6Q29udGVudHNDaGFuZ2VkICYmCisgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UgIT0gYW5nbGU6OlN1YmplY3RNZXNzYWdlOjpCaW5kaW5nQ2hhbmdlZCkKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5vbkFjdGl2ZVRleHR1cmVT
dGF0ZUNoYW5nZSh0aGlzLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZUNhY2hl
Lm9uQWN0aXZlVGV4dHVyZUNoYW5nZSh0aGlzKTsKQEAgLTg2NjcsOCArODM0NCw5IEBAIHZvaWQg
U3RhdGVDYWNoZTo6dXBkYXRlQWN0aXZlQXR0cmlic01hc2soQ29udGV4dCAqY29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEF0dHJpYnV0ZXNNYXNrIGFjdGl2ZUF0dHJpYnMg
PSBpc0dMRVMxID8gZ2xTdGF0ZS5nbGVzMSgpLmdldEFjdGl2ZUF0dHJpYnV0ZXNNYXNrKCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdsU3RhdGUuZ2V0UHJv
Z3JhbSgpLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7CisgICAgQXR0cmlidXRlc01h
c2sgYWN0aXZlQXR0cmlicyA9CisgICAgICAgIGlzR0xFUzEgPyBnbFN0YXRlLmdsZXMxKCkuZ2V0
QWN0aXZlQXR0cmlidXRlc01hc2soKQorICAgICAgICAgICAgICAgIDogZ2xTdGF0ZS5nZXRQcm9n
cmFtRXhlY3V0YWJsZSgpLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7CiAKICAgICBj
b25zdCBWZXJ0ZXhBcnJheSAqdmFvID0gZ2xTdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOwogICAgIEFT
U0VSVCh2YW8pOwpAQCAtODcwOCw3ICs4Mzg2LDcgQEAgdm9pZCBTdGF0ZUNhY2hlOjp1cGRhdGVW
ZXJ0ZXhFbGVtZW50TGltaXRzSW1wbChDb250ZXh0ICpjb250ZXh0KQogCiAgICAgICAgIGNvbnN0
IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcgPSB2ZXJ0ZXhCaW5kaW5nc1thdHRyaWIuYmluZGluZ0lu
ZGV4XTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQtPmlzR0xFUzEoKSB8fAotICAgICAgICAgICAg
ICAgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtKCktPmlzQXR0cmliTG9jYXRpb25BY3Rp
dmUoYXR0cmlidXRlSW5kZXgpKTsKKyAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCku
Z2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS0+aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShhdHRyaWJ1dGVJ
bmRleCkpOwogCiAgICAgICAgIEdMaW50NjQgbGltaXQgPSBhdHRyaWIuZ2V0Q2FjaGVkRWxlbWVu
dExpbWl0KCk7CiAgICAgICAgIGlmIChiaW5kaW5nLmdldERpdmlzb3IoKSA+IDApCkBAIC04NzM0
LDE0ICs4NDEyLDE0IEBAIHZvaWQgU3RhdGVDYWNoZTo6dXBkYXRlQmFzaWNEcmF3RWxlbWVudHNF
cnJvcigpCiAgICAgbUNhY2hlZEJhc2ljRHJhd0VsZW1lbnRzRXJyb3IgPSBrSW52YWxpZFBvaW50
ZXI7CiB9CiAKLWludHB0cl90IFN0YXRlQ2FjaGU6OmdldEJhc2ljRHJhd1N0YXRlc0Vycm9ySW1w
bChDb250ZXh0ICpjb250ZXh0KSBjb25zdAoraW50cHRyX3QgU3RhdGVDYWNoZTo6Z2V0QmFzaWNE
cmF3U3RhdGVzRXJyb3JJbXBsKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1DYWNoZWRCYXNpY0RyYXdTdGF0ZXNFcnJvciA9PSBrSW52YWxpZFBvaW50ZXIpOwog
ICAgIG1DYWNoZWRCYXNpY0RyYXdTdGF0ZXNFcnJvciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KFZhbGlkYXRlRHJhd1N0YXRlcyhjb250ZXh0KSk7CiAgICAgcmV0dXJuIG1DYWNoZWRCYXNp
Y0RyYXdTdGF0ZXNFcnJvcjsKIH0KIAotaW50cHRyX3QgU3RhdGVDYWNoZTo6Z2V0QmFzaWNEcmF3
RWxlbWVudHNFcnJvckltcGwoQ29udGV4dCAqY29udGV4dCkgY29uc3QKK2ludHB0cl90IFN0YXRl
Q2FjaGU6OmdldEJhc2ljRHJhd0VsZW1lbnRzRXJyb3JJbXBsKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1DYWNoZWRCYXNpY0RyYXdFbGVtZW50c0Vycm9yID09
IGtJbnZhbGlkUG9pbnRlcik7CiAgICAgbUNhY2hlZEJhc2ljRHJhd0VsZW1lbnRzRXJyb3IgPSBy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihWYWxpZGF0ZURyYXdFbGVtZW50c1N0YXRlcyhjb250
ZXh0KSk7CkBAIC04ODQxLDYgKzg1MTksMTEgQEAgdm9pZCBTdGF0ZUNhY2hlOjpvbkNvbG9yTWFz
a0NoYW5nZShDb250ZXh0ICpjb250ZXh0KQogICAgIHVwZGF0ZUJhc2ljRHJhd1N0YXRlc0Vycm9y
KCk7CiB9CiAKK3ZvaWQgU3RhdGVDYWNoZTo6b25CbGVuZEZ1bmNJbmRleGVkQ2hhbmdlKENvbnRl
eHQgKmNvbnRleHQpCit7CisgICAgdXBkYXRlQmFzaWNEcmF3U3RhdGVzRXJyb3IoKTsKK30KKwog
dm9pZCBTdGF0ZUNhY2hlOjpzZXRWYWxpZERyYXdNb2Rlcyhib29sIHBvaW50c09LLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxpbmVzT0ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdHJpc09LLApAQCAtODg5OCwxMyArODU4MSwxNCBA
QCB2b2lkIFN0YXRlQ2FjaGU6OnVwZGF0ZVZhbGlkRHJhd01vZGVzKENvbnRleHQgKmNvbnRleHQp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXByb2dyYW0gfHwgIXByb2dyYW0t
Pmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6Okdlb21ldHJ5KSkKKyAgICBjb25zdCBQ
cm9ncmFtRXhlY3V0YWJsZSAqcHJvZ3JhbUV4ZWN1dGFibGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgp
LmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgaWYgKCFwcm9ncmFtRXhlY3V0YWJsZSB8fCAh
cHJvZ3JhbUV4ZWN1dGFibGUtPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6Okdlb21l
dHJ5KSkKICAgICB7CiAgICAgICAgIG1DYWNoZWRWYWxpZERyYXdNb2RlcyA9IGtWYWxpZEJhc2lj
RHJhd01vZGVzOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKHByb2dyYW0g
JiYgcHJvZ3JhbS0+aGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6R2VvbWV0cnkpKTsK
KyAgICBBU1NFUlQocHJvZ3JhbUV4ZWN1dGFibGUtPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRl
clR5cGU6Okdlb21ldHJ5KSk7CiAgICAgUHJpbWl0aXZlTW9kZSBnc01vZGUgPSBwcm9ncmFtLT5n
ZXRHZW9tZXRyeVNoYWRlcklucHV0UHJpbWl0aXZlVHlwZSgpOwogCiAgICAgYm9vbCBwb2ludHNP
SyAgPSBnc01vZGUgPT0gUHJpbWl0aXZlTW9kZTo6UG9pbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmgKaW5kZXggYzcwZGUxZGE4NjJlM2Y0OWE4
YjJhNGI1MTk1MmNkOWI0ZmRiYjE2YS4uMjAxMDEwZjlmNTU1NWZhYTc5Y2FiNDgwYTM0Y2FmNjNi
ZjVmZmJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0NvbnRleHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29u
dGV4dC5oCkBAIC0xNzQsNiArMTc0LDcgQEAgY2xhc3MgU3RhdGVDYWNoZSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgIC8vIDEzLiBvblVuaWZvcm1CdWZmZXJTdGF0ZUNoYW5nZS4KICAg
ICAvLyAxNC4gb25Db2xvck1hc2tDaGFuZ2UuCiAgICAgLy8gMTUuIG9uQnVmZmVyQmluZGluZ0No
YW5nZS4KKyAgICAvLyAxNi4gb25CbGVuZEZ1bmNJbmRleGVkQ2hhbmdlLgogICAgIGJvb2wgaGFz
QmFzaWNEcmF3U3RhdGVzRXJyb3IoQ29udGV4dCAqY29udGV4dCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChtQ2FjaGVkQmFzaWNEcmF3U3RhdGVzRXJyb3IgPT0gMCkKQEAgLTE4Nyw3ICsxODgs
NyBAQCBjbGFzcyBTdGF0ZUNhY2hlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAg
IHJldHVybiBnZXRCYXNpY0RyYXdTdGF0ZXNFcnJvckltcGwoY29udGV4dCkgIT0gMDsKICAgICB9
CiAKLSAgICBpbnRwdHJfdCBnZXRCYXNpY0RyYXdTdGF0ZXNFcnJvcihDb250ZXh0ICpjb250ZXh0
KSBjb25zdAorICAgIGludHB0cl90IGdldEJhc2ljRHJhd1N0YXRlc0Vycm9yKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobUNhY2hlZEJhc2ljRHJhd1N0
YXRlc0Vycm9yICE9IGtJbnZhbGlkUG9pbnRlcikKICAgICAgICAgewpAQCAtMjAxLDcgKzIwMiw3
IEBAIGNsYXNzIFN0YXRlQ2FjaGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAvLyAx
LiBvbkFjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrQ2hhbmdlLgogICAgIC8vIDIuIG9uVmVydGV4QXJy
YXlCdWZmZXJTdGF0ZUNoYW5nZS4KICAgICAvLyAzLiBvbkJ1ZmZlckJpbmRpbmdDaGFuZ2UuCi0g
ICAgaW50cHRyX3QgZ2V0QmFzaWNEcmF3RWxlbWVudHNFcnJvcihDb250ZXh0ICpjb250ZXh0KSBj
b25zdAorICAgIGludHB0cl90IGdldEJhc2ljRHJhd0VsZW1lbnRzRXJyb3IoY29uc3QgQ29udGV4
dCAqY29udGV4dCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtQ2FjaGVkQmFzaWNEcmF3RWxl
bWVudHNFcnJvciAhPSBrSW52YWxpZFBvaW50ZXIpCiAgICAgICAgIHsKQEAgLTI3NCw2ICsyNzUs
NyBAQCBjbGFzcyBTdGF0ZUNhY2hlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9p
ZCBvblVuaWZvcm1CdWZmZXJTdGF0ZUNoYW5nZShDb250ZXh0ICpjb250ZXh0KTsKICAgICB2b2lk
IG9uQ29sb3JNYXNrQ2hhbmdlKENvbnRleHQgKmNvbnRleHQpOwogICAgIHZvaWQgb25CdWZmZXJC
aW5kaW5nQ2hhbmdlKENvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgb25CbGVuZEZ1bmNJbmRl
eGVkQ2hhbmdlKENvbnRleHQgKmNvbnRleHQpOwogCiAgIHByaXZhdGU6CiAgICAgLy8gQ2FjaGUg
dXBkYXRlIGZ1bmN0aW9ucy4KQEAgLTI5MSw4ICsyOTMsOCBAQCBjbGFzcyBTdGF0ZUNhY2hlIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICB2b2lkIHNldFZhbGlkRHJhd01vZGVzKGJv
b2wgcG9pbnRzT0ssIGJvb2wgbGluZXNPSywgYm9vbCB0cmlzT0ssIGJvb2wgbGluZUFkak9LLCBi
b29sIHRyaUFkak9LKTsKIAotICAgIGludHB0cl90IGdldEJhc2ljRHJhd1N0YXRlc0Vycm9ySW1w
bChDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKLSAgICBpbnRwdHJfdCBnZXRCYXNpY0RyYXdFbGVt
ZW50c0Vycm9ySW1wbChDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKKyAgICBpbnRwdHJfdCBnZXRC
YXNpY0RyYXdTdGF0ZXNFcnJvckltcGwoY29uc3QgQ29udGV4dCAqY29udGV4dCkgY29uc3Q7Cisg
ICAgaW50cHRyX3QgZ2V0QmFzaWNEcmF3RWxlbWVudHNFcnJvckltcGwoY29uc3QgQ29udGV4dCAq
Y29udGV4dCkgY29uc3Q7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGludHB0cl90IGtJbnZhbGlk
UG9pbnRlciA9IDE7CiAKQEAgLTMyNCw2ICszMjYsMTAgQEAgY2xhc3MgU3RhdGVDYWNoZSBmaW5h
bCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBtQ2FjaGVkSW50ZWdlclZlcnRleEF0dHJp
YlR5cGVzVmFsaWRhdGlvbjsKIH07CiAKK3VzaW5nIFZlcnRleEFycmF5TWFwICAgICAgID0gUmVz
b3VyY2VNYXA8VmVydGV4QXJyYXksIFZlcnRleEFycmF5SUQ+OwordXNpbmcgUXVlcnlNYXAgICAg
ICAgICAgICAgPSBSZXNvdXJjZU1hcDxRdWVyeSwgUXVlcnlJRD47Cit1c2luZyBUcmFuc2Zvcm1G
ZWVkYmFja01hcCA9IFJlc291cmNlTWFwPFRyYW5zZm9ybUZlZWRiYWNrLCBUcmFuc2Zvcm1GZWVk
YmFja0lEPjsKKwogY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6OkxhYmVsZWRPYmpl
Y3QsIGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIGFuZ2xlOjpPYnNlcnZlckludGVyZmFjZQog
ewogICBwdWJsaWM6CkBAIC0zNjcsMTQgKzM3MywxMSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDog
cHVibGljIGVnbDo6TGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgYW5n
bAogICAgIHZvaWQgZGVsZXRlTWVtb3J5T2JqZWN0KE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVj
dCk7CiAgICAgdm9pZCBkZWxldGVTZW1hcGhvcmUoU2VtYXBob3JlSUQgc2VtYXBob3JlKTsKIAot
ICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0gICAgYm9vbCBpc1BhdGhHZW5lcmF0ZWQo
UGF0aElEIHBhdGgpIGNvbnN0OwotCiAgICAgdm9pZCBiaW5kUmVhZEZyYW1lYnVmZmVyKEZyYW1l
YnVmZmVySUQgZnJhbWVidWZmZXJIYW5kbGUpOwogICAgIHZvaWQgYmluZERyYXdGcmFtZWJ1ZmZl
cihGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVySGFuZGxlKTsKIAogICAgIEJ1ZmZlciAqZ2V0QnVm
ZmVyKEJ1ZmZlcklEIGhhbmRsZSkgY29uc3Q7Ci0gICAgRmVuY2VOViAqZ2V0RmVuY2VOVihGZW5j
ZU5WSUQgaGFuZGxlKTsKKyAgICBGZW5jZU5WICpnZXRGZW5jZU5WKEZlbmNlTlZJRCBoYW5kbGUp
IGNvbnN0OwogICAgIFN5bmMgKmdldFN5bmMoR0xzeW5jIGhhbmRsZSkgY29uc3Q7CiAgICAgQU5H
TEVfSU5MSU5FIFRleHR1cmUgKmdldFRleHR1cmUoVGV4dHVyZUlEIGhhbmRsZSkgY29uc3QKICAg
ICB7CkBAIC0zODUsNyArMzg4LDcgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6
OkxhYmVsZWRPYmplY3QsIGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIGFuZ2wKICAgICBSZW5k
ZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihSZW5kZXJidWZmZXJJRCBoYW5kbGUpIGNvbnN0Owog
ICAgIFZlcnRleEFycmF5ICpnZXRWZXJ0ZXhBcnJheShWZXJ0ZXhBcnJheUlEIGhhbmRsZSkgY29u
c3Q7CiAgICAgU2FtcGxlciAqZ2V0U2FtcGxlcihTYW1wbGVySUQgaGFuZGxlKSBjb25zdDsKLSAg
ICBRdWVyeSAqZ2V0UXVlcnkoUXVlcnlJRCBoYW5kbGUsIGJvb2wgY3JlYXRlLCBRdWVyeVR5cGUg
dHlwZSk7CisgICAgUXVlcnkgKmdldE9yQ3JlYXRlUXVlcnkoUXVlcnlJRCBoYW5kbGUsIFF1ZXJ5
VHlwZSB0eXBlKTsKICAgICBRdWVyeSAqZ2V0UXVlcnkoUXVlcnlJRCBoYW5kbGUpIGNvbnN0Owog
ICAgIFRyYW5zZm9ybUZlZWRiYWNrICpnZXRUcmFuc2Zvcm1GZWVkYmFjayhUcmFuc2Zvcm1GZWVk
YmFja0lEIGhhbmRsZSkgY29uc3Q7CiAgICAgUHJvZ3JhbVBpcGVsaW5lICpnZXRQcm9ncmFtUGlw
ZWxpbmUoUHJvZ3JhbVBpcGVsaW5lSUQgaGFuZGxlKSBjb25zdDsKQEAgLTM5OCwxMyArNDAxLDE1
IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmds
ZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBhbmdsCiAKICAgICBDb21waWxlciAqZ2V0Q29tcGlsZXIo
KSBjb25zdDsKIAotICAgIGJvb2wgaXNWZXJ0ZXhBcnJheUdlbmVyYXRlZChWZXJ0ZXhBcnJheUlE
IHZlcnRleEFycmF5KTsKLSAgICBib29sIGlzVHJhbnNmb3JtRmVlZGJhY2tHZW5lcmF0ZWQoVHJh
bnNmb3JtRmVlZGJhY2tJRCB0cmFuc2Zvcm1GZWVkYmFjayk7CisgICAgYm9vbCBpc1ZlcnRleEFy
cmF5R2VuZXJhdGVkKFZlcnRleEFycmF5SUQgdmVydGV4QXJyYXkpIGNvbnN0OworICAgIGJvb2wg
aXNUcmFuc2Zvcm1GZWVkYmFja0dlbmVyYXRlZChUcmFuc2Zvcm1GZWVkYmFja0lEIHRyYW5zZm9y
bUZlZWRiYWNrKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0Qm9vbGVhbnZJbXBsKEdMZW51bSBwbmFt
ZSwgR0xib29sZWFuICpwYXJhbXMpOwotICAgIHZvaWQgZ2V0RmxvYXR2SW1wbChHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnBhcmFtcyk7Ci0gICAgdm9pZCBnZXRJbnRlZ2VydkltcGwoR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsKLSAgICB2b2lkIGdldEludGVnZXI2NHZJbXBsKEdMZW51bSBw
bmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldEJvb2xlYW52SW1wbChHTGVudW0g
cG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKSBjb25zdDsKKyAgICB2b2lkIGdldEZsb2F0dkltcGwo
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpIGNvbnN0OworICAgIHZvaWQgZ2V0SW50ZWdl
cnZJbXBsKEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykgY29uc3Q7CisgICAgdm9pZCBnZXRJ
bnRlZ2VyNjR2SW1wbChHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcykgY29uc3Q7CisgICAg
dm9pZCBnZXRJbnRlZ2VyVmVydGV4QXR0cmliSW1wbChHTGVudW0gcG5hbWUsIEdMZW51bSBhdHRy
aWJwbmFtZSwgR0xpbnQgKnBhcmFtcykgY29uc3Q7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJp
dkltcGwoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpIGNvbnN0Owog
CiAgICAgLy8gRnJhbWVidWZmZXJzIGFyZSBvd25lZCBieSB0aGUgQ29udGV4dCwgc28gdGhlc2Ug
bWV0aG9kcyBkbyBub3QgcGFzcyB0aHJvdWdoCiAgICAgRnJhbWVidWZmZXJJRCBjcmVhdGVGcmFt
ZWJ1ZmZlcigpOwpAQCAtNDQ4LDcgKzQ1Myw3IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJs
aWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBhbmdsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBsaW5lKTsKIAotICAgIHZvaWQgdmFsaWRhdGlvbkVycm9yKEdM
ZW51bSBlcnJvckNvZGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworICAgIHZvaWQgdmFsaWRhdGlv
bkVycm9yKEdMZW51bSBlcnJvckNvZGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpIGNvbnN0OwogCiAg
ICAgdm9pZCBtYXJrQ29udGV4dExvc3QoR3JhcGhpY3NSZXNldFN0YXR1cyBzdGF0dXMpOwogCkBA
IC00NjgsOCArNDczLDggQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6OkxhYmVs
ZWRPYmplY3QsIGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIGFuZ2wKIAogICAgIHNpemVfdCBn
ZXRFeHRlbnNpb25TdHJpbmdDb3VudCgpIGNvbnN0OwogCi0gICAgYm9vbCBpc0V4dGVuc2lvblJl
cXVlc3RhYmxlKGNvbnN0IGNoYXIgKm5hbWUpOwotICAgIGJvb2wgaXNFeHRlbnNpb25EaXNhYmxh
YmxlKGNvbnN0IGNoYXIgKm5hbWUpOworICAgIGJvb2wgaXNFeHRlbnNpb25SZXF1ZXN0YWJsZShj
b25zdCBjaGFyICpuYW1lKSBjb25zdDsKKyAgICBib29sIGlzRXh0ZW5zaW9uRGlzYWJsYWJsZShj
b25zdCBjaGFyICpuYW1lKSBjb25zdDsKICAgICBzaXplX3QgZ2V0UmVxdWVzdGFibGVFeHRlbnNp
b25TdHJpbmdDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RXh0ZW5zaW9uRW5hYmxlZChjb25z
dCBjaGFyICpuYW1lLCBib29sIGVuYWJsZWQpOwogICAgIHZvaWQgcmVpbml0aWFsaXplQWZ0ZXJF
eHRlbnNpb25zQ2hhbmdlZCgpOwpAQCAtNTUzLDYgKzU1OCw3IEBAIGNsYXNzIENvbnRleHQgZmlu
YWwgOiBwdWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUsIHB1Ymxp
YyBhbmdsCiAgICAgYm9vbCBpc1JlbmRlcmJ1ZmZlckdlbmVyYXRlZChSZW5kZXJidWZmZXJJRCBy
ZW5kZXJidWZmZXIpIGNvbnN0OwogICAgIGJvb2wgaXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChGcmFt
ZWJ1ZmZlcklEIGZyYW1lYnVmZmVyKSBjb25zdDsKICAgICBib29sIGlzUHJvZ3JhbVBpcGVsaW5l
R2VuZXJhdGVkKFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lKSBjb25zdDsKKyAgICBib29sIGlz
UXVlcnlHZW5lcmF0ZWQoUXVlcnlJRCBxdWVyeSkgY29uc3Q7CiAKICAgICBib29sIHVzaW5nRGlz
cGxheVRleHR1cmVTaGFyZUdyb3VwKCkgY29uc3Q7CiAKQEAgLTU4NCw2ICs1OTAsMTMgQEAgY2xh
c3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBlZ2w6OkxhYmVsZWRPYmplY3QsIGFuZ2xlOjpOb25D
b3B5YWJsZSwgcHVibGljIGFuZ2wKIAogICAgIGFuZ2xlOjpGcmFtZUNhcHR1cmUgKmdldEZyYW1l
Q2FwdHVyZSgpIHsgcmV0dXJuIG1GcmFtZUNhcHR1cmUuZ2V0KCk7IH0KIAorICAgIGNvbnN0IFZl
cnRleEFycmF5TWFwICZnZXRWZXJ0ZXhBcnJheXNGb3JDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4g
bVZlcnRleEFycmF5TWFwOyB9CisgICAgY29uc3QgUXVlcnlNYXAgJmdldFF1ZXJpZXNGb3JDYXB0
dXJlKCkgY29uc3QgeyByZXR1cm4gbVF1ZXJ5TWFwOyB9CisgICAgY29uc3QgVHJhbnNmb3JtRmVl
ZGJhY2tNYXAgJmdldFRyYW5zZm9ybUZlZWRiYWNrc0ZvckNhcHR1cmUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja01hcDsKKyAgICB9CisKICAgICB2b2lk
IG9uUG9zdFN3YXAoKSBjb25zdDsKIAogICBwcml2YXRlOgpAQCAtNjAyLDcgKzYxNSw2IEBAIGNs
YXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9u
Q29weWFibGUsIHB1YmxpYyBhbmdsCiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jU3RhdGVGb3JSZWFk
UGl4ZWxzKCk7CiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jU3RhdGVGb3JUZXhJbWFnZSgpOwogICAg
IGFuZ2xlOjpSZXN1bHQgc3luY1N0YXRlRm9yQmxpdCgpOwotICAgIGFuZ2xlOjpSZXN1bHQgc3lu
Y1N0YXRlRm9yUGF0aE9wZXJhdGlvbigpOwogCiAgICAgVmVydGV4QXJyYXkgKmNoZWNrVmVydGV4
QXJyYXlBbGxvY2F0aW9uKFZlcnRleEFycmF5SUQgdmVydGV4QXJyYXlIYW5kbGUpOwogICAgIFRy
YW5zZm9ybUZlZWRiYWNrICpjaGVja1RyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdGlvbihUcmFuc2Zv
cm1GZWVkYmFja0lEIHRyYW5zZm9ybUZlZWRiYWNrKTsKQEAgLTYxOCw5ICs2MzAsNiBAQCBjbGFz
cyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVnbDo6TGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNv
cHlhYmxlLCBwdWJsaWMgYW5nbAogICAgIHZvaWQgZGV0YWNoU2FtcGxlcihTYW1wbGVySUQgc2Ft
cGxlcik7CiAgICAgdm9pZCBkZXRhY2hQcm9ncmFtUGlwZWxpbmUoUHJvZ3JhbVBpcGVsaW5lSUQg
cGlwZWxpbmUpOwogCi0gICAgLy8gQSBzbWFsbCBoZWxwZXIgbWV0aG9kIHRvIGZhY2lsaXRhdGUg
dXNpbmcgdGhlIEFOR0xFX0NPTlRFWFRfVFJZIG1hY3JvLgotICAgIHZvaWQgdHJ5R2VuUGF0aHMo
R0xzaXplaSByYW5nZSwgUGF0aElEICpjcmVhdGVkT3V0KTsKLQogICAgIGVnbDo6RXJyb3Igc2V0
RGVmYXVsdEZyYW1lYnVmZmVyKGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsIGVnbDo6U3VyZmFj
ZSAqcmVhZFN1cmZhY2UpOwogICAgIGVnbDo6RXJyb3IgdW5zZXREZWZhdWx0RnJhbWVidWZmZXIo
KTsKIApAQCAtNjM1LDcgKzY0NCwxMCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIGVn
bDo6TGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgYW5nbAogICAgIGds
OjpMYWJlbGVkT2JqZWN0ICpnZXRMYWJlbGVkT2JqZWN0KEdMZW51bSBpZGVudGlmaWVyLCBHTHVp
bnQgbmFtZSkgY29uc3Q7CiAgICAgZ2w6OkxhYmVsZWRPYmplY3QgKmdldExhYmVsZWRPYmplY3RG
cm9tUHRyKGNvbnN0IHZvaWQgKnB0cikgY29uc3Q7CiAKLSAgICB2b2lkIHNldFVuaWZvcm0xaUlt
cGwoUHJvZ3JhbSAqcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2KTsKKyAgICB2b2lkIHNldFVuaWZvcm0xaUltcGwoUHJvZ3JhbSAqcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqdik7CiAKICAgICBTdGF0ZSBtU3RhdGU7CiAgICAgYm9vbCBt
U2hhcmVkOwpAQCAtNjY2LDEzICs2NzgsMTMgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1Ymxp
YyBlZ2w6OkxhYmVsZWRPYmplY3QsIGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIGFuZ2wKICAg
ICBSZXNvdXJjZU1hcDxGZW5jZU5WLCBGZW5jZU5WSUQ+IG1GZW5jZU5WTWFwOwogICAgIEhhbmRs
ZUFsbG9jYXRvciBtRmVuY2VOVkhhbmRsZUFsbG9jYXRvcjsKIAotICAgIFJlc291cmNlTWFwPFF1
ZXJ5LCBRdWVyeUlEPiBtUXVlcnlNYXA7CisgICAgUXVlcnlNYXAgbVF1ZXJ5TWFwOwogICAgIEhh
bmRsZUFsbG9jYXRvciBtUXVlcnlIYW5kbGVBbGxvY2F0b3I7CiAKLSAgICBSZXNvdXJjZU1hcDxW
ZXJ0ZXhBcnJheSwgVmVydGV4QXJyYXlJRD4gbVZlcnRleEFycmF5TWFwOworICAgIFZlcnRleEFy
cmF5TWFwIG1WZXJ0ZXhBcnJheU1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbVZlcnRleEFycmF5
SGFuZGxlQWxsb2NhdG9yOwogCi0gICAgUmVzb3VyY2VNYXA8VHJhbnNmb3JtRmVlZGJhY2ssIFRy
YW5zZm9ybUZlZWRiYWNrSUQ+IG1UcmFuc2Zvcm1GZWVkYmFja01hcDsKKyAgICBUcmFuc2Zvcm1G
ZWVkYmFja01hcCBtVHJhbnNmb3JtRmVlZGJhY2tNYXA7CiAgICAgSGFuZGxlQWxsb2NhdG9yIG1U
cmFuc2Zvcm1GZWVkYmFja0hhbmRsZUFsbG9jYXRvcjsKIAogICAgIGNvbnN0IGNoYXIgKm1WZXJz
aW9uU3RyaW5nOwpAQCAtNzA0LDcgKzcxNiw2IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJs
aWMgZWdsOjpMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBhbmdsCiAg
ICAgTWVtb3J5UHJvZ3JhbUNhY2hlICptTWVtb3J5UHJvZ3JhbUNhY2hlOwogCiAgICAgU3RhdGU6
OkRpcnR5T2JqZWN0cyBtRHJhd0RpcnR5T2JqZWN0czsKLSAgICBTdGF0ZTo6RGlydHlPYmplY3Rz
IG1QYXRoT3BlcmF0aW9uRGlydHlPYmplY3RzOwogCiAgICAgU3RhdGVDYWNoZSBtU3RhdGVDYWNo
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bnRleHRfZ2wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRl
eHRfZ2wuY3BwCmluZGV4IDg3YmQ3MzI3ODY4MjRiMzVkMjY2NDc3NzMxYTAzN2Y1YzJlMGY2OGUu
LjFkYzUwOTllOWFkMDBhYWM5NGQ1OWY0ZWQ0ZGJkYzhiYWRiYzIzNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbC5jcHAKQEAgLTEx
MzksNyArMTEzOSw3IEBAIHZvaWQgQ29udGV4dDo6aW5pdE5hbWVzKCkKICAgICBVTklNUExFTUVO
VEVEKCk7CiB9CiAKLUdMYm9vbGVhbiBDb250ZXh0Ojppc0xpc3QoR0x1aW50IGxpc3QpCitHTGJv
b2xlYW4gQ29udGV4dDo6aXNMaXN0KEdMdWludCBsaXN0KSBjb25zdAogewogICAgIFVOSU1QTEVN
RU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjgzLDcgKzIyODMsNyBAQCB2b2lkIENv
bnRleHQ6OmdldFVuaWZvcm1TdWJyb3V0aW5ldWl2KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGludCBs
b2NhdGlvbiwgR0x1aW50CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6
OmdldFVuaWZvcm1kdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
ZG91YmxlICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldFVuaWZvcm1kdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGRvdWJsZSAqcGFyYW1zKQog
ewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KQEAgLTIyOTMsNDcgKzIyOTMsNDcgQEAgdm9pZCBD
b250ZXh0OjpwYXRjaFBhcmFtZXRlcmZ2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqdmFs
dWVzKQogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtMWQo
R0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgpCit2b2lkIENvbnRleHQ6OnVuaWZvcm0xZChVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZG91YmxlIHgpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0xZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTFkdihV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9y
bTJkKEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQordm9pZCBDb250ZXh0
Ojp1bmlmb3JtMmQoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5KQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9pZCBDb250ZXh0Ojp1bmlmb3Jt
MmR2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
Cit2b2lkIENvbnRleHQ6OnVuaWZvcm0yZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwogfQogCi12b2lkIENvbnRleHQ6OnVuaWZvcm0zZChHTGludCBsb2NhdGlvbiwgR0xkb3VibGUg
eCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTNkKFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikK
IHsKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybTNkdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKQordm9p
ZCBDb250ZXh0Ojp1bmlmb3JtM2R2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0K
IAotdm9pZCBDb250ZXh0Ojp1bmlmb3JtNGQoR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdM
ZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpCit2b2lkIENvbnRleHQ6OnVuaWZvcm00
ZChVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91
YmxlIHosIEdMZG91YmxlIHcpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENv
bnRleHQ6OnVuaWZvcm00ZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZG91YmxlICp2YWx1ZSkKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTRkdihVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKICAgICBV
TklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJkdihHTGlu
dCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJkdihVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAg
LTIzNDEsNyArMjM0MSw3IEBAIHZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJkdihHTGludCBs
b2NhdGlvbiwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDJ4M2R2KEdMaW50IGxvY2F0aW9uLAordm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4
MngzZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2b2lkIENvbnRleHQ6
OnVuaWZvcm1NYXRyaXgyeDNkdihHTGludCBsb2NhdGlvbiwKICAgICBVTklNUExFTUVOVEVEKCk7
CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJ4NGR2KEdMaW50IGxvY2F0aW9uLAor
dm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4Mng0ZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzU3
LDcgKzIzNTcsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgyeDRkdihHTGludCBsb2Nh
dGlvbiwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDNkdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNkdihV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91Ymxl
ICp2YWx1ZSkKQEAgLTIzNjUsNyArMjM2NSw3IEBAIHZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDNkdihHTGludCBsb2NhdGlvbiwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29u
dGV4dDo6dW5pZm9ybU1hdHJpeDN4MmR2KEdMaW50IGxvY2F0aW9uLAordm9pZCBDb250ZXh0Ojp1
bmlmb3JtTWF0cml4M3gyZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzczLDcgKzIzNzMsNyBAQCB2
b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDJkdihHTGludCBsb2NhdGlvbiwKICAgICBVTklN
UExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDN4NGR2KEdMaW50
IGxvY2F0aW9uLAordm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4M3g0ZHYoVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFs
dWUpCkBAIC0yMzgxLDcgKzIzODEsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzeDRk
dihHTGludCBsb2NhdGlvbiwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDRkdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDRkdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTIzODksNyArMjM4OSw3IEBAIHZvaWQgQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDRkdihHTGludCBsb2NhdGlvbiwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9
CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJpeDR4MmR2KEdMaW50IGxvY2F0aW9uLAordm9p
ZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgyZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yMzk3LDcg
KzIzOTcsNyBAQCB2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXg0eDJkdihHTGludCBsb2NhdGlv
biwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDR4M2R2KEdMaW50IGxvY2F0aW9uLAordm9pZCBDb250ZXh0Ojp1bmlmb3JtTWF0cml4NHgzZHYo
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGRvdWJsZSAqdmFsdWUpCkBAIC0yNDM1LDI2ICsyNDM1LDI5IEBAIHZvaWQgQ29udGV4dDo6Z2V0
VmVydGV4QXR0cmliTGR2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFy
YW1zKQogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybTFkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUg
djApCit2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWQoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xkb3VibGUgdjApCiB7CiAgICAgVU5JTVBM
RU1FTlRFRCgpOwogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMWR2KFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
CiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi12b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlm
b3JtMmQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB2
MCwgR0xkb3VibGUgdjEpCit2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtMmQoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91Ymxl
IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYxKQogewogICAg
IFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTJkdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUg
KnZhbHVlKQogewpAQCAtMjQ2Miw3ICsyNDY1LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybTJkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9n
cmFtVW5pZm9ybTNkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MikKQEAgLTI0
NzEsNyArMjQ3NCw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm0zZChTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTNkdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZh
bHVlKQogewpAQCAtMjQ3OSw3ICsyNDgyLDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9y
bTNkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFt
VW5pZm9ybTRkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2
MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MiwKQEAgLTI0ODks
NyArMjQ5Miw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm00ZChTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRkdihTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVl
KQogewpAQCAtMjQ5Nyw3ICsyNTAwLDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybTRk
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5p
Zm9ybU1hdHJpeDJkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjUw
Niw3ICsyNTA5LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJkdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1h
dHJpeDJ4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpA
QCAtMjUxNSw3ICsyNTE4LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4
M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRleHQ6OnByb2dyYW1V
bmlmb3JtTWF0cml4Mng0ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
dmFsdWUpCkBAIC0yNTI0LDcgKzI1MjcsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1Vbmlmb3Jt
TWF0cml4Mng0ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6
cHJvZ3JhbVVuaWZvcm1NYXRyaXgzZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1
ZSkKQEAgLTI1MzMsNyArMjUzNiw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRy
aXgzZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6cHJvZ3Jh
bVVuaWZvcm1NYXRyaXgzeDJkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91Ymxl
ICp2YWx1ZSkKQEAgLTI1NDIsNyArMjU0NSw3IEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDJkdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKIH0KIAogdm9pZCBDb250ZXh0
Ojpwcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xkb3VibGUgKnZhbHVlKQpAQCAtMjU1MSw3ICsyNTU0LDcgQEAgdm9pZCBDb250ZXh0Ojpwcm9n
cmFtVW5pZm9ybU1hdHJpeDN4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lk
IENvbnRleHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpCkBAIC0yNTYwLDcgKzI1NjMsNyBAQCB2b2lkIENvbnRleHQ6OnByb2dyYW1V
bmlmb3JtTWF0cml4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogfQogCiB2b2lkIENvbnRl
eHQ6OnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0yNTY5LDcgKzI1NzIsNyBAQCB2b2lkIENvbnRleHQ6OnBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZv
aWQgQ29udGV4dDo6cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTMzNjgsNyArMzM3MSw3IEBAIHZvaWQgQ29u
dGV4dDo6Z2V0blRleEltYWdlKEdMZW51bSB0YXJnZXQsCiB9CiAKIHZvaWQgQ29udGV4dDo6Z2V0
blVuaWZvcm1kdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlICpwYXJhbXMp
CiB7CkBAIC0zMzc2LDcgKzMzNzksNyBAQCB2b2lkIENvbnRleHQ6OmdldG5Vbmlmb3JtZHYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiB9CiAKIHZvaWQgQ29udGV4dDo6Z2V0blVuaWZvcm11aXYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF8x
XzBfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRl
eHRfZ2xfMV8wX2F1dG9nZW4uaAppbmRleCA1ZDgwM2RjMTI1Nzg4MGI3OGYxNGE2MDljMzkwMmJi
MzVmYjEyZDE4Li44NzA3YmVmNmUxYjkxZjE0ODg4MWY4NjE3OTkxNGMyNzhlOTc0NDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF8x
XzBfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9D
b250ZXh0X2dsXzFfMF9hdXRvZ2VuLmgKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIHZvaWQgaW5k
ZXhzKEdMc2hvcnQgYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgaW5kZXhzdihjb25zdCBH
THNob3J0ICpjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgaW5pdE5hbWVzKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIEdMYm9vbGVhbiBpc0xpc3QoR0x1aW50IGxpc3QpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEdMYm9vbGVhbiBpc0xpc3QoR0x1aW50IGxpc3QpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgbGlnaHRN
b2RlbGkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgbGlnaHRNb2RlbGl2KEdMZW51
bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIHZvaWQgbGlnaHRpKEdMZW51bSBsaWdodCwgR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bnRleHRfZ2xfNF8wX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Db250ZXh0X2dsXzRfMF9hdXRvZ2VuLmgKaW5kZXggMTJiYjk0ZDkzNTQ3OTJjNTZmZWFi
YmU3MGRlYjc2ZTE0YTk5M2JlNi4uODBmYTE3Yjk4YWFkZWQxYjcwODhlMWIzYTM4YjkyOTdlNTcx
MjA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bnRleHRfZ2xfNF8wX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQ29udGV4dF9nbF80XzBfYXV0b2dlbi5oCkBAIC0zMCwzMyArMzAsMzUgQEAKICAg
ICBHTGludCBnZXRTdWJyb3V0aW5lVW5pZm9ybUxvY2F0aW9uKFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLCBHTGVudW0gc2hhZGVydHlwZSwgICAgICAgICBcCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2V0VW5pZm9ybVN1YnJvdXRpbmV1
aXYoR0xlbnVtIHNoYWRlcnR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcyk7ICAg
ICAgICAgICAgIFwKLSAgICB2b2lkIGdldFVuaWZvcm1kdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlICpwYXJhbXMpOyAgICAgICAgICBcCisg
ICAgdm9pZCBnZXRVbmlmb3JtZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHBhdGNoUGFyYW1ldGVyZnYoR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMWQoR0xpbnQgbG9jYXRpb24sIEdMZG91Ymxl
IHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHZvaWQgdW5pZm9ybTFkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZv
cm0yZChHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMmR2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTNkKEdMaW50IGxvY2F0aW9uLCBHTGRvdWJs
ZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB2b2lkIHVuaWZvcm0zZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlm
b3JtNGQoR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHos
IEdMZG91YmxlIHcpOyAgICAgICAgICAgICAgXAotICAgIHZvaWQgdW5pZm9ybTRkdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZHYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICBc
CisgICAgdm9pZCB1bmlmb3JtMWQoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGRv
dWJsZSB4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdW5p
Zm9ybTFkdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0yZChVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOyAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMmR2KFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAg
XAorICAgIHZvaWQgdW5pZm9ybTNkKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xk
b3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7ICAgICAgICAgIFwKKyAgICB2b2lkIHVu
aWZvcm0zZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtNGQoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs
ZSB6LCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHcpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB2b2lkIHVuaWZvcm00ZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICBcCisgICAgdm9pZCB1
bmlmb3JtTWF0cml4MmR2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBj
b3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyeDNkdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgICAgICAgICAgICAg
ICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4MngzZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgy
eDRkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZHYoVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lk
IHVuaWZvcm1NYXRyaXgzZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4
M2R2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29s
ZWFuIHRyYW5zcG9zZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDJkdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgICAgICAgICAgICAgICBcCisgICAgdm9p
ZCB1bmlmb3JtTWF0cml4M3gyZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgXAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgzeDRkdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgICAgICAgICAg
ICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRy
aXg0ZHYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4NGR2KFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2
b2lkIHVuaWZvcm1NYXRyaXg0eDJkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xi
b29sZWFuIHRyYW5zcG9zZSwgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0
cml4NHgyZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0eDNkdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgICAgICAgICAgICAgICAgICBcCisgICAg
dm9pZCB1bmlmb3JtTWF0cml4NHgzZHYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHVuaWZvcm1TdWJyb3V0aW5lc3VpdihH
TGVudW0gc2hhZGVydHlwZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICppbmRpY2VzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRl
eHRfZ2xfNF8xX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db250ZXh0X2dsXzRfMV9hdXRvZ2VuLmgKaW5kZXggMWY5OTQwZmE4ODg5MzYwOTI5MmQwZmVm
ZTJjZjc5NmZlM2VlYjYxNy4uMGNjYTFjMDA0NThhNjgyZTQyMWVkMDg3MTAwOWExOGE1NmE0MThk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRl
eHRfZ2xfNF8xX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvQ29udGV4dF9nbF80XzFfYXV0b2dlbi5oCkBAIC0xMCw2MCArMTAsNjEgQEAKICNpZm5k
ZWYgQU5HTEVfQ09OVEVYVF9HTF80XzFfQVVUT0dFTl9IXwogI2RlZmluZSBBTkdMRV9DT05URVhU
X0dMXzRfMV9BVVRPR0VOX0hfCiAKLSNkZWZpbmUgQU5HTEVfR0xfNF8xX0NPTlRFWFRfQVBJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICB2b2lkIGRlcHRoUmFuZ2VBcnJheXYoR0x1aW50IGZpcnN0LCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB2b2lkIGRlcHRoUmFuZ2VJbmRleGVkKEdMdWludCBpbmRleCwgR0xkb3VibGUgbiwgR0xkb3Vi
bGUgZik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldERv
dWJsZWlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlICpkYXRhKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldEZsb2F0aV92KEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqZGF0YSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldFZlcnRleEF0dHJpYkxkdihHTHVpbnQgaW5k
ZXgsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtMWQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB2MCk7ICAgICAgICAgICAgIFwKLSAgICB2
b2lkIHByb2dyYW1Vbmlmb3JtMWR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtMmQoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB2MCwg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjEpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtMmR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgICAgICAgIFwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlm
b3JtM2QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTGRv
dWJsZSB2MCwgR0xkb3VibGUgdjEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3Vi
bGUgdjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtM2R2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgICAgICAgIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHBy
b2dyYW1Vbmlmb3JtNGQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0
aW9uLCBHTGRvdWJsZSB2MCwgR0xkb3VibGUgdjEsIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgdjIsIEdMZG91YmxlIHYzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtNGR2KFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICAgIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0
cml4MngzZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZHYoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1V
bmlmb3JtTWF0cml4M2R2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZHYoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAg
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lk
IHByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVl
KTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4NGR2
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3Vi
bGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1Vbmlmb3Jt
TWF0cml4NHgzZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICB2b2lkIHNjaXNzb3JBcnJheXYoR0x1aW50IGZpcnN0LCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB2b2lkIHNjaXNzb3JJbmRleGVkKEdMdWludCBpbmRleCwgR0xpbnQgbGVmdCwgR0xpbnQgYm90
dG9tLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7ICAgIFwKLSAgICB2b2lkIHNjaXNz
b3JJbmRleGVkdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHZlcnRleEF0dHJpYkwxZChH
THVpbnQgaW5kZXgsIEdMZG91YmxlIHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHZlcnRleEF0dHJpYkwxZHYoR0x1aW50IGluZGV4
LCBjb25zdCBHTGRvdWJsZSAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB2b2lkIHZlcnRleEF0dHJpYkwyZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgs
IEdMZG91YmxlIHkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2
b2lkIHZlcnRleEF0dHJpYkwyZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHZlcnRleEF0
dHJpYkwzZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHop
OyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHZlcnRleEF0dHJpYkwzZHYoR0x1
aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB2b2lkIHZlcnRleEF0dHJpYkw0ZChHTHVpbnQgaW5kZXgsIEdM
ZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcpOyAgICAgICAgICAg
IFwKLSAgICB2b2lkIHZlcnRleEF0dHJpYkw0ZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJs
ZSAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lk
IHZlcnRleEF0dHJpYkxQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5
cGUsIEdMc2l6ZWkgc3RyaWRlLCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHZpZXdwb3J0QXJyYXl2KEdMdWludCBm
aXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB2b2lkIHZpZXdwb3J0SW5kZXhlZGYoR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB3LCBHTGZsb2F0IGgpOyAgICAgICAgICAgICAgIFwK
KyNkZWZpbmUgQU5HTEVfR0xfNF8xX0NPTlRFWFRfQVBJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZGVw
dGhSYW5nZUFycmF5dihHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91Ymxl
ICp2KTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBkZXB0aFJhbmdlSW5kZXhl
ZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIG4sIEdMZG91YmxlIGYpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIGdldERvdWJsZWlfdihHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgsIEdMZG91YmxlICpkYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHZvaWQgZ2V0RmxvYXRpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBH
TGZsb2F0ICpkYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJMZHYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZG91Ymxl
ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlm
b3JtMWQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSB2MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFkdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3Jh
bVVuaWZvcm0yZChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIHYwLCBHTGRvdWJsZSB2MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlmb3JtMmR2KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3Vi
bGUgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBw
cm9ncmFtVW5pZm9ybTNkKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgdjAsIEdMZG91YmxlIHYxLCBHTGRvdWJsZSB2Mik7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm0zZHYoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGRvdWJsZSAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2
b2lkIHByb2dyYW1Vbmlmb3JtNGQoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGRvdWJsZSB2MCwgR0xkb3VibGUgdjEsIEdMZG91YmxlIHYyLCBHTGRvdWJsZSB2
Myk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRkdihTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZG91YmxlICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0
cml4MngzZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAg
ICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
OyAgICAgIFwKKyAgICB2b2lkIHByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZHYoU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICBcCisgICAgdm9pZCBwcm9ncmFt
VW5pZm9ybU1hdHJpeDN4NGR2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUg
KnZhbHVlKTsgICAgXAorICAgIHZvaWQgcHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOyAgICAgIFwKKyAgICB2b2lkIHBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgXAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpOyAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2KFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsgICAgXAorICAgIHZv
aWQgc2Npc3NvckFycmF5dihHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBzY2lzc29ySW5k
ZXhlZChHTHVpbnQgaW5kZXgsIEdMaW50IGxlZnQsIEdMaW50IGJvdHRvbSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQpOyAgIFwKKyAgICB2b2lkIHNjaXNzb3JJbmRleGVkdihHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMaW50ICp2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHZvaWQgdmVydGV4QXR0cmliTDFkKEdMdWludCBpbmRleCwgR0xkb3Vi
bGUgeCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMMWR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHZlcnRl
eEF0dHJpYkwyZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgdmVydGV4QXR0cmliTDJkdihH
THVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJMM2QoR0x1aW50IGluZGV4LCBH
TGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB2b2lkIHZlcnRleEF0dHJpYkwzZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJs
ZSAqdik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQg
dmVydGV4QXR0cmliTDRkKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeiwgR0xkb3VibGUgdyk7ICAgICAgICAgICBcCisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJM
NGR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHZlcnRleEF0dHJpYkxQb2ludGVyKEdMdWlu
dCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRl
cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
dm9pZCB2aWV3cG9ydEFycmF5dihHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHZpZXdwb3J0
SW5kZXhlZGYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB3LCBH
TGZsb2F0IGgpOyAgICAgICAgICAgICAgXAogICAgIHZvaWQgdmlld3BvcnRJbmRleGVkZnYoR0x1
aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKIAogI2VuZGlmICAvLyBBTkdMRV9DT05URVhU
X0FQSV80XzFfQVVUT0dFTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfNF81X2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0X2dsXzRfNV9hdXRvZ2VuLmgKaW5kZXggZDhjMmI3
ODlmZDk4YWNjNDQwYTUzMTRmMGYyM2FkNDE3YmU0ODA3OS4uYTU4MmM0MzZiMmQ4MzZlYWMxZWYz
Yzc1ZTlmNDk2Yjg0ZWQ5MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xfNF81X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbF80XzVfYXV0b2dlbi5oCkBAIC0xMjIs
OCArMTIyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcm93LCBHTHNp
emVpIGNvbHVtbkJ1ZlNpemUsIHZvaWQgKmNvbHVtbiwgdm9pZCAqc3Bhbik7ICAgICAgICAgIFwK
ICAgICB2b2lkIGdldG5UZXhJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgICAgIFwKICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpwaXhlbHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldG5Vbmlmb3JtZHYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1
ZlNpemUsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgKnBh
cmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB2b2lkIGdldG5Vbmlmb3JtZHYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLCBHTGRvdWJsZSAqcGFyYW1zKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGludmFs
aWRhdGVOYW1lZEZyYW1lYnVmZmVyRGF0YShGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2Vk
LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyU3Vi
RGF0YShGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLCAgICAgICAgICAgICAgICAgICAg
ICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9D
b250ZXh0X2dsZXNfMV8wLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db250ZXh0X2dsZXNfMV8wLmNwcAppbmRleCBjNjdlNmVlNzUxMzIwZDE5NmRiYjhkMzJjZjY1
MDM5ZjIxYTBhMmQwLi40ZTk5ZjgyMWE3MmU0NzAwYWM3MzgyYTIwMGNiNGE2MWQ1N2Q4ODcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9n
bGVzXzFfMC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bnRleHRfZ2xlc18xXzAuY3BwCkBAIC00OCwxMiArNDgsMTMgQEAgdm9pZCBDb250ZXh0OjphbHBo
YUZ1bmN4KEFscGhhVGVzdEZ1bmMgZnVuYywgR0xmaXhlZCByZWYpCiAKIHZvaWQgQ29udGV4dDo6
Y2xlYXJDb2xvcngoR0xmaXhlZCByZWQsIEdMZml4ZWQgZ3JlZW4sIEdMZml4ZWQgYmx1ZSwgR0xm
aXhlZCBhbHBoYSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgbVN0YXRlLnNldENvbG9y
Q2xlYXJWYWx1ZShDb252ZXJ0Rml4ZWRUb0Zsb2F0KHJlZCksIENvbnZlcnRGaXhlZFRvRmxvYXQo
Z3JlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydEZpeGVkVG9GbG9h
dChibHVlKSwgQ29udmVydEZpeGVkVG9GbG9hdChhbHBoYSkpOwogfQogCiB2b2lkIENvbnRleHQ6
OmNsZWFyRGVwdGh4KEdMZml4ZWQgZGVwdGgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IG1TdGF0ZS5zZXREZXB0aENsZWFyVmFsdWUoY2xhbXAwMShDb252ZXJ0Rml4ZWRUb0Zsb2F0KGRl
cHRoKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmNsaWVudEFjdGl2ZVRleHR1cmUoR0xlbnVtIHRl
eHR1cmUpCkBAIC0xMDUsNyArMTA2LDcgQEAgdm9pZCBDb250ZXh0Ojpjb2xvclBvaW50ZXIoR0xp
bnQgc2l6ZSwgVmVydGV4QXR0cmliVHlwZSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY28KIAogdm9p
ZCBDb250ZXh0OjpkZXB0aFJhbmdleChHTGZpeGVkIG4sIEdMZml4ZWQgZikKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgbVN0YXRlLnNldERlcHRoUmFuZ2UoY2xhbXAwMShDb252ZXJ0Rml4
ZWRUb0Zsb2F0KG4pKSwgY2xhbXAwMShDb252ZXJ0Rml4ZWRUb0Zsb2F0KGYpKSk7CiB9CiAKIHZv
aWQgQ29udGV4dDo6ZGlzYWJsZUNsaWVudFN0YXRlKENsaWVudFZlcnRleEFycmF5VHlwZSBjbGll
bnRTdGF0ZSkKQEAgLTE5Niw3ICsxOTcsMTggQEAgdm9pZCBDb250ZXh0OjpnZXRDbGlwUGxhbmV4
KEdMZW51bSBwbGFuZSwgR0xmaXhlZCAqZXF1YXRpb24pCiAKIHZvaWQgQ29udGV4dDo6Z2V0Rml4
ZWR2KEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0g
MDsKKworICAgIGdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1Q
YXJhbXMpOworCisgICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gcGFyYW1zZihudW1QYXJhbXMsIDAp
OworICAgIENhc3RTdGF0ZVZhbHVlcyh0aGlzLCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1z
LCBwYXJhbXNmLmRhdGEoKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51
bVBhcmFtczsgaSsrKQorICAgIHsKKyAgICAgICAgcGFyYW1zW2ldID0gQ29udmVydEZsb2F0VG9G
aXhlZChwYXJhbXNmW2ldKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29udGV4dDo6Z2V0TGlnaHRmdihH
TGVudW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCkBAIC0y
NTIsNyArMjY0LDggQEAgdm9pZCBDb250ZXh0OjpnZXRUZXhFbnZ4dihUZXh0dXJlRW52VGFyZ2V0
IHRhcmdldCwgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZSwgR0wKIAogdm9pZCBDb250ZXh0Ojpn
ZXRUZXhQYXJhbWV0ZXJ4dihUZXh0dXJlVHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhl
ZCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBjb25zdCBUZXh0dXJlICpj
b25zdCB0ZXh0dXJlID0gZ2V0VGV4dHVyZUJ5VHlwZSh0YXJnZXQpOworICAgIFF1ZXJ5VGV4UGFy
YW1ldGVyeHYodGhpcywgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQgQ29udGV4
dDo6bGlnaHRNb2RlbGYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQpAQCAtMzExLDcgKzMy
NCw3IEBAIHZvaWQgQ29udGV4dDo6bGlnaHR4dihHTGVudW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVy
IHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiAKIHZvaWQgQ29udGV4dDo6bGluZVdpZHRo
eChHTGZpeGVkIHdpZHRoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBtU3RhdGUuc2V0
TGluZVdpZHRoKENvbnZlcnRGaXhlZFRvRmxvYXQod2lkdGgpKTsKIH0KIAogdm9pZCBDb250ZXh0
Ojpsb2FkSWRlbnRpdHkoKQpAQCAtNDYzLDcgKzQ3Niw3IEBAIHZvaWQgQ29udGV4dDo6cG9pbnRT
aXpleChHTGZpeGVkIHNpemUpCiAKIHZvaWQgQ29udGV4dDo6cG9seWdvbk9mZnNldHgoR0xmaXhl
ZCBmYWN0b3IsIEdMZml4ZWQgdW5pdHMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG1T
dGF0ZS5zZXRQb2x5Z29uT2Zmc2V0UGFyYW1zKENvbnZlcnRGaXhlZFRvRmxvYXQoZmFjdG9yKSwg
Q29udmVydEZpeGVkVG9GbG9hdCh1bml0cykpOwogfQogCiB2b2lkIENvbnRleHQ6OnBvcE1hdHJp
eCgpCkBAIC00OTAsNyArNTAzLDggQEAgdm9pZCBDb250ZXh0Ojpyb3RhdGV4KEdMZml4ZWQgYW5n
bGUsIEdMZml4ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopCiAKIHZvaWQgQ29udGV4dDo6c2Ft
cGxlQ292ZXJhZ2V4KEdMY2xhbXB4IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICBHTGNsYW1wZiB2YWx1ZWYgPSBDb252ZXJ0Rml4ZWRUb0Zsb2F0
KHZhbHVlKTsKKyAgICBtU3RhdGUuc2V0U2FtcGxlQ292ZXJhZ2VQYXJhbXMoY2xhbXAwMSh2YWx1
ZWYpLCBDb252ZXJ0VG9Cb29sKGludmVydCkpOwogfQogCiB2b2lkIENvbnRleHQ6OnNjYWxlZihm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQpAQCAtNTU1LDEyICs1NjksMTQgQEAgdm9pZCBDb250
ZXh0Ojp0ZXhFbnZ4dihUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwgVGV4dHVyZUVudlBhcmFtZXRl
ciBwbmFtZSwgY29uc3QKIAogdm9pZCBDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJ4KFRleHR1cmVUeXBl
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICBUZXh0dXJlICpjb25zdCB0ZXh0dXJlID0gZ2V0VGV4dHVyZUJ5VHlwZSh0YXJn
ZXQpOworICAgIFNldFRleFBhcmFtZXRlcngodGhpcywgdGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsK
IH0KIAogdm9pZCBDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJ4dihUZXh0dXJlVHlwZSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICBUZXh0dXJlICpjb25zdCB0ZXh0dXJlID0gZ2V0VGV4dHVyZUJ5VHlwZSh0YXJnZXQp
OworICAgIFNldFRleFBhcmFtZXRlcnh2KHRoaXMsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOwog
fQogCiB2b2lkIENvbnRleHQ6OnRyYW5zbGF0ZWYoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0
X2dsZXNfMl8wX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db250ZXh0X2dsZXNfMl8wX2F1dG9nZW4uaAppbmRleCA2NGU1YjM0M2JiMzRkMjUzZDY0MDBi
YjUxN2I2OThkYmJjODhhMzlkLi41MzM2YWRiOWM4YjFiYTVhM2QyMjU3ZTk5NTJjYWFkMzgyYzUx
NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29u
dGV4dF9nbGVzXzJfMF9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0NvbnRleHRfZ2xlc18yXzBfYXV0b2dlbi5oCkBAIC0xMDYsMTkgKzEwNiwyMSBA
QAogICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgXAogICAgIHZvaWQg
Z2V0VGV4UGFyYW1ldGVyaXYoVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgXAogICAgIEdMaW50IGdldFVuaWZvcm1M
b2NhdGlvbihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgY29uc3QgR0xjaGFyICpuYW1l
KTsgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsgICAg
ICAgICAgICAgXAotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgXAor
ICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIHZvaWQgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnYoR0x1aW50IGluZGV4LCBH
TGVudW0gcG5hbWUsIHZvaWQgKipwb2ludGVyKTsgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgaGludChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gbW9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIEdMYm9vbGVhbiBpc0J1ZmZlcihCdWZmZXJJRCBidWZmZXJQ
YWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIEdMYm9vbGVhbiBpc0VuYWJsZWQoR0xlbnVtIGNhcCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEdM
Ym9vbGVhbiBpc0ZyYW1lYnVmZmVyKEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEdMYm9vbGVhbiBpc1By
b2dyYW0oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEdMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihS
ZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIEdMYm9vbGVhbiBpc1NoYWRlcihTaGFkZXJQcm9ncmFtSUQgc2hh
ZGVyUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgIEdMYm9vbGVhbiBpc1RleHR1cmUoVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9v
bGVhbiBpc0J1ZmZlcihCdWZmZXJJRCBidWZmZXJQYWNrZWQpIGNvbnN0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9vbGVhbiBpc0VuYWJs
ZWQoR0xlbnVtIGNhcCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKEZyYW1l
YnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIEdMYm9vbGVhbiBpc1Byb2dyYW0oU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIEdMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQ
YWNrZWQpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9vbGVh
biBpc1NoYWRlcihTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkKSBjb25zdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9vbGVhbiBpc1RleHR1cmUo
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgbGluZVdpZHRoKEdMZmxvYXQgd2lkdGgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIHZvaWQgbGlua1Byb2dyYW0oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IHZvaWQgcGl4ZWxTdG9yZWkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTQ4LDI3ICsxNTAs
MjggQEAKICAgICB2b2lkIHRleFN1YkltYWdlMkQoVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQs
IEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCAgICAgIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0xZihHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCB2MCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB2b2lkIHVuaWZvcm0xaShHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lk
IHVuaWZvcm0xaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0yZihH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0yZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0yaShHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAs
IEdMaW50IHYxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB2b2lkIHVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVu
aWZvcm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2
Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0zZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0zaShHTGludCBsb2NhdGlvbiwg
R0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB2b2lkIHVuaWZvcm00ZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwg
R0xmbG9hdCB2MiwgR0xmbG9hdCB2Myk7ICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZv
cm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm00aShHTGludCBs
b2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOyAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2
b2lkIHVuaWZvcm0xZihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMZmxvYXQgdjAp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0x
ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0xaShVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0xaXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAg
IFwKKyAgICB2b2lkIHVuaWZvcm0yZihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lk
IHVuaWZvcm0yZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0yaShV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBHTGludCB2MSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0yaXYoVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAg
ICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0zZihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpOyAgICAgICAgICAgIFwK
KyAgICB2b2lkIHVuaWZvcm0zZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgIFwKKyAgICB2b2lkIHVu
aWZvcm0zaShVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBHTGludCB2
MSwgR0xpbnQgdjIpOyAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm0zaXYoVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dmFsdWUpOyAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm00ZihVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYzKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB2b2lkIHVuaWZvcm00ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZv
cm00aShVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBHTGludCB2MSwg
R0xpbnQgdjIsIEdMaW50IHYzKTsgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm00aXYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFs
dWUpOyAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAg
ICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2
b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIHVuaWZvcm1N
YXRyaXgzZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICAgIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHVzZVByb2dyYW0o
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Db250ZXh0X2dsZXNfM18wX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfM18wX2F1dG9nZW4uaAppbmRleCBmMGY2MGVlYzc2
NDY5YzFmNzFhNjg0Y2RhMDM1OWVlYzIyYTU5MTM0Li5jZjExMGJmNDUzNWQ3OTZiOTRlMTJiYmQ2
NjgxNjYzNGJmNDRjZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMF9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzBfYXV0b2dlbi5oCkBAIC04Nywx
OCArODcsMTkgQEAKICAgICBHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrSW5kZXgoU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsIGNvbnN0IEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSk7ICAgIFwK
ICAgICB2b2lkIGdldFVuaWZvcm1JbmRpY2VzKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LCBHTHNpemVpIHVuaWZvcm1Db3VudCwgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnVuaWZvcm1OYW1lcywgR0x1aW50
ICp1bmlmb3JtSW5kaWNlcyk7ICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldFVuaWZvcm11aXYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBh
cmFtcyk7ICAgICAgICAgICAgIFwKKyAgICB2b2lkIGdldFVuaWZvcm11aXYoU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYklpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdldFZl
cnRleEF0dHJpYkl1aXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1z
KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzKTsgIFwKICAgICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0
dGFjaG1lbnRzLCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCAgICAgIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNR
dWVyeShRdWVyeUlEIGlkUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNTYW1wbGVyKFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNTeW5jKEdMc3luYyBzeW5jKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICBHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhUcmFuc2Zvcm1GZWVkYmFja0lE
IGlkUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJv
b2xlYW4gaXNWZXJ0ZXhBcnJheShWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNRdWVy
eShRdWVyeUlEIGlkUGFja2VkKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNTYW1wbGVyKFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBHTGJvb2xlYW4gaXNTeW5jKEdMc3luYyBzeW5jKSBjb25zdDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBHTGJvb2xlYW4gaXNUcmFuc2Zvcm1GZWVkYmFjayhUcmFuc2Zvcm1GZWVkYmFja0lEIGlk
UGFja2VkKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHTGJvb2xl
YW4gaXNWZXJ0ZXhBcnJheShWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkKSBjb25zdDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkICptYXBCdWZmZXJSYW5n
ZShCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRy
IGxlbmd0aCwgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxk
IGFjY2Vzcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB2b2lkIHBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAg
LTEyNSwyNyArMTI2LDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBj
b25zdCB2b2lkICpwaXhlbHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgdm9pZCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBHTHNpemVpIGNvdW50LCAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnZhcnlp
bmdzLCBHTGVudW0gYnVmZmVyTW9kZSk7ICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3Jt
MXVpKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjApOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMXVpdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtMnVpKEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjAsIEdMdWludCB2MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCB1bmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCB1bmlmb3JtM3VpKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50
IHYyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtM3Vp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtNHVpKEdMaW50IGxvY2F0
aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyLCBHTHVpbnQgdjMpOyAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtNHVpdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdm9pZCB1bmlmb3JtMXVpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0x1
aW50IHYwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1
bmlmb3JtMXVpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMnVpKFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOyAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtMnVpdihVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOyAg
ICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtM3VpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7ICAgICAgICAgICAgICBcCisg
ICAgdm9pZCB1bmlmb3JtM3VpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOyAgICAgICAgICBcCisgICAgdm9pZCB1bmlm
b3JtNHVpKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0x1aW50IHYwLCBHTHVpbnQg
djEsIEdMdWludCB2MiwgR0x1aW50IHYzKTsgICBcCisgICAgdm9pZCB1bmlmb3JtNHVpdihVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAq
dmFsdWUpOyAgICAgICAgICBcCiAgICAgdm9pZCB1bmlmb3JtQmxvY2tCaW5kaW5nKFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsICAgICAgICAg
ICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tC
aW5kaW5nKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCB1bmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3Jt
TWF0cml4MngzZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4Mng0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0
cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4M3gyZnYoVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCB1bmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1
bmlmb3JtTWF0cml4M3g0ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsICAgICAgICAgICAg
ICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgyZnYoVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCAgICBcCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCB1bmlm
b3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCB1bmlmb3JtTWF0cml4NHgz
ZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgR0xib29sZWFuIHVubWFwQnVmZmVyKEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFj
a2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
dm9pZCB2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNfMV9hdXRvZ2Vu
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzXzNf
MV9hdXRvZ2VuLmgKaW5kZXggOGZlZjg3NzIwMDYyYWJkOGI1ZTNjNjFkNTE3ZDUxZGM4NGVhNTcx
ZS4uM2Y2ZWRlNGE0MWJkYjJlMTM3ZGE0YWZmMzRlYzdjMzNkNzgxNjkwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xlc18zXzFfYXV0
b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0
X2dsZXNfM18xX2F1dG9nZW4uaApAQCAtNDgsNjkgKzQ4LDc1IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRUZXhMZXZlbFBhcmFtZXRl
cml2KFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1l
LCAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgR0xib29sZWFuIGlzUHJvZ3JhbVBpcGVsaW5lKFByb2dyYW1QaXBlbGluZUlEIHBp
cGVsaW5lUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR0xi
b29sZWFuIGlzUHJvZ3JhbVBpcGVsaW5lKFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2Vk
KSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBtZW1vcnlCYXJy
aWVyKEdMYml0ZmllbGQgYmFycmllcnMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBtZW1vcnlCYXJyaWVyQnlSZWdpb24o
R0xiaXRmaWVsZCBiYXJyaWVycyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFmKFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCk7ICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9y
bTFpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xpbnQg
djApOyAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFpdihTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAg
ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBwcm9ncmFtVW5pZm9ybTF1aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwg
R0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCk7ICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9n
cmFtVW5pZm9ybTF1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJmKFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2
MSk7ICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICAgICAgICBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFt
VW5pZm9ybTJpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwg
R0xpbnQgdjAsIEdMaW50IHYxKTsgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJpdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJ1aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKTsgICBcCi0gICAgdm9p
ZCBwcm9ncmFtVW5pZm9ybTJ1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNmKFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xm
bG9hdCB2MSwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9y
bTNpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xpbnQg
djAsIEdMaW50IHYxLCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYy
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNpdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICAgICAgICBcCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9n
cmFtVW5pZm9ybTN1aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRp
b24sIEdMdWludCB2MCwgR0x1aW50IHYxLCAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTN1aXYoU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAg
ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCBwcm9ncmFtVW5pZm9ybTRmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGlu
dCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRmdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCAgICAgICBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHYyLCBHTGludCB2Myk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5p
Zm9ybTRpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybTR1aShTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCAgICBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIsIEdMdWludCB2Myk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBw
cm9ncmFtVW5pZm9ybTR1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1h
dHJpeDJ4NGZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICBcCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFt
VW5pZm9ybU1hdHJpeDN4MmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
ICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9p
ZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsICAgICBcCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4
MmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9y
bTFmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
djApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFmdihTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9n
cmFtVW5pZm9ybTFpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHYwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTFpdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
dm9pZCBwcm9ncmFtVW5pZm9ybTF1aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgdjApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTF1aXYo
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5p
Zm9ybTJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJpKFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBw
cm9ncmFtVW5pZm9ybTJpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJ1aShTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsIEdMdWludCB2
MSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdm9pZCBwcm9ncmFtVW5pZm9ybTJ1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNm
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAs
IEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFt
VW5pZm9ybTNpKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHYxLCBHTGludCB2Mik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTNpdihTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9p
ZCBwcm9ncmFtVW5pZm9ybTN1aShTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTN1aXYoU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRmKFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxv
YXQgdjMpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9y
bTRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTRpKFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMaW50IHYwLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9n
cmFtVW5pZm9ybTRpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybTR1aShTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsIEdMdWludCB2MSwg
R0x1aW50IHYyLCBHTHVpbnQgdjMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
dm9pZCBwcm9ncmFtVW5pZm9ybTR1aXYoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJp
eDJmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLCAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAg
ICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4NGZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICBcCisgICAgdm9pZCBw
cm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICBcCisg
ICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1h
dHJpeDR4MmZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsg
ICAgICBcCisgICAgdm9pZCBwcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsgICAgICBcCiAgICAgdm9pZCBzYW1wbGVN
YXNraShHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCB0ZXhTdG9yYWdlMkRNdWx0aXNh
bXBsZShUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsg
ICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29u
dGV4dF9nbGVzXzNfMl9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvQ29udGV4dF9nbGVzXzNfMl9hdXRvZ2VuLmgKaW5kZXggNjNjOGIxZjkwYmY5YjQyNjg1
ZjcwODczY2E0MmJjNTI4ZjZkZGI5Zi4uZjYwMGQxYTE0Yzc2ZDYzOTM3YjQ4NzMzZWVhNTUwMmZl
ZmFhMzU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0NvbnRleHRfZ2xlc18zXzJfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db250ZXh0X2dsZXNfM18yX2F1dG9nZW4uaApAQCAtNTIsMTMgKzUyLDEz
IEBACiAgICAgdm9pZCBnZXRTYW1wbGVyUGFyYW1ldGVySXVpdihTYW1wbGVySUQgc2FtcGxlclBh
Y2tlZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7ICAgICAgICAgICBcCiAgICAgdm9p
ZCBnZXRUZXhQYXJhbWV0ZXJJaXYoVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJJdWl2KFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQg
KnBhcmFtcyk7ICAgICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRuVW5pZm9ybWZ2KFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgdm9pZCBnZXRuVW5pZm9ybWl2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCAgICAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRuVW5pZm9ybXVp
dihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
YnVmU2l6ZSwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBh
cmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgR0xib29sZWFuIGlzRW5hYmxlZGkoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdm9pZCBnZXRuVW5pZm9ybWZ2KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXRuVW5pZm9ybWl2KFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgdm9pZCBnZXRuVW5pZm9ybXVpdihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsIEdMdWludCAqcGFyYW1zKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR0xib29sZWFuIGlz
RW5hYmxlZGkoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KSBjb25zdDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBtaW5TYW1wbGVTaGFkaW5nKEdM
ZmxvYXQgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgdm9pZCBvYmplY3RMYWJlbChHTGVudW0gaWRlbnRpZmllciwg
R0x1aW50IG5hbWUsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsgICAgICAg
ICBcCiAgICAgdm9pZCBvYmplY3RQdHJMYWJlbChjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVu
Z3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dF9nbGVzX2V4
dF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4
dF9nbGVzX2V4dF9hdXRvZ2VuLmgKaW5kZXggNzk0MzYzNGE5OWQxMGUxMWJkMzMzNjE0OGY5Nzhm
MzEwYzVhNDdjOS4uNTgzN2NhZDU4YmY4MzdiYTllNDYzM2IwNTJhODQ1Y2RhYzM2MTVmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRfZ2xl
c19leHRfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db250ZXh0X2dsZXNfZXh0X2F1dG9nZW4uaApAQCAtODMsMTAgKzgzLDEwIEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFt
cyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJpdlJvYnVzdChUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsICAgICAgICBc
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpw
YXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBn
ZXRVbmlmb3JtaXZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXRVbmlmb3JtZnZSb2J1c3QoU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdm9pZCBnZXRVbmlmb3JtaXZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpw
YXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJm
dlJvYnVzdChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdChHTHVpbnQgaW5kZXgsIEdM
ZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsICAgICBcCkBAIC0x
NDEsOCArMTQxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3QoR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCAgIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldFVuaWZvcm11
aXZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGJ1ZlNpemUsICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB2b2lkIGdldFVuaWZvcm11aXZSb2J1c3QoU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAgIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMdWludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKQEAgLTE3NywxMiArMTc3LDEyIEBACiAgICAgdm9pZCByZWFkblBpeGVsc1JvYnVz
dChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVt
IGZvcm1hdCwgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMc2l6ZWkgKmNvbHVtbnMsICAg
ICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpyb3dzLCB2b2lkICpk
YXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
dm9pZCBnZXRuVW5pZm9ybWZ2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCAgICAgICBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0
KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBi
dWZTaXplLCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgdm9pZCBnZXRuVW5pZm9ybXVpdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgICAgICBcCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsIEdMdWludCAqcGFyYW1zKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBnZXRuVW5pZm9y
bWZ2Um9idXN0KFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOyAgICAgICAg
ICAgICAgICAgICBcCisgICAgdm9pZCBnZXRuVW5pZm9ybWl2Um9idXN0KFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsICAgICAgICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBn
ZXRuVW5pZm9ybXVpdlJvYnVzdChTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0x1aW50ICpwYXJhbXMp
OyAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCB0ZXhQYXJhbWV0ZXJJaXZSb2J1c3QoVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgICAg
ICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgdm9pZCB0ZXhQYXJhbWV0ZXJJdWl2Um9idXN0KFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwg
R0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsICAgICAgICAgICBcCkBAIC0yMTEsNyArMjEx
LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2
b2lkIGludmFsaWRhdGVUZXh0dXJlKFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9DSFJPTUlV
TV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb24o
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsIEdMaW50IGxvY2F0aW9uLCBjb25zdCBHTGNo
YXIgKm5hbWUpOyAgIFwKKyAgICB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb24oU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgICAgICAg
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBH
TF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVyZSAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGNvbXByZXNzZWRD
b3B5VGV4dHVyZShUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQsIFRleHR1cmVJRCBkZXN0SWRQYWNr
ZWQpOyAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKQEAgLTIyNiw1MyArMjI3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhl
ZF9zYW1wbGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB2b2lkIGNvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0gY29tcG9uZW50cyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB2b2lkIG1hdHJpeExvYWRmKEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptYXRy
aXgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIG1hdHJp
eExvYWRJZGVudGl0eShHTGVudW0gbWF0cml4TW9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9DSFJPTUlVTV9sb3NlX2Nv
bnRleHQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIGxvc2VDb250ZXh0KEdyYXBoaWNzUmVzZXRTdGF0
dXMgY3VycmVudFBhY2tlZCwgR3JhcGhpY3NSZXNldFN0YXR1cyBvdGhlclBhY2tlZCk7ICAgICAg
ICAgIFwKICAgICAvKiBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyAqLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBH
THVpbnQgZ2VuUGF0aHMoR0xzaXplaSByYW5nZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGRlbGV0ZVBh
dGhzKFBhdGhJRCBmaXJzdFBhY2tlZCwgR0xzaXplaSByYW5nZSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHTGJvb2xlYW4gaXNQYXRoKFBhdGhJRCBw
YXRoUGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB2b2lkIHBhdGhDb21tYW5kcyhQYXRoSUQgcGF0aFBhY2tlZCwg
R0xzaXplaSBudW1Db21tYW5kcywgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywgR0xlbnVtIGNvb3Jk
VHlwZSwgY29uc3Qgdm9pZCAqY29vcmRzKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lk
IHBhdGhQYXJhbWV0ZXJmKFBhdGhJRCBwYXRoUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHBhdGhQYXJhbWV0
ZXJpKFBhdGhJRCBwYXRoUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGdldFBhdGhQYXJhbWV0ZXJmdihQYXRo
SUQgcGF0aFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB2b2lkIGdldFBhdGhQYXJhbWV0ZXJpdihQYXRoSUQgcGF0aFBhY2tl
ZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICB2b2lkIHBhdGhTdGVuY2lsRnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQg
bWFzayk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHN0
ZW5jaWxGaWxsUGF0aChQYXRoSUQgcGF0aFBhY2tlZCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQg
bWFzayk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHN0ZW5jaWxTdHJva2VQ
YXRoKFBhdGhJRCBwYXRoUGFja2VkLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvdmVyRmlsbFBhdGgoUGF0aElEIHBhdGhQ
YWNrZWQsIEdMZW51bSBjb3Zlck1vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aChQYXRoSUQgcGF0aFBhY2tlZCwgR0xl
bnVtIGNvdmVyTW9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChQYXRoSUQgcGF0aFBhY2tlZCwgR0xlbnVt
IGZpbGxNb2RlLCBHTHVpbnQgbWFzaywgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoKFBhdGhJRCBwYXRoUGFja2VkLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNr
LCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICB2b2lkIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoR0xzaXplaSBudW1QYXRoLCBH
TGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICpwYXRocywgICAgICAgICAgIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLCBHTGVudW0g
Y292ZXJNb2RlLCBHTGVudW0gdHJhbnNmb3JtVHlwZSwgICAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZChHTHNpemVpIG51bVBhdGgsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBh
dGhzLCAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQg
cGF0aEJhc2VQYWNrZWQsIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCAg
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lk
IHN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aCwgR0xlbnVtIHBhdGhO
YW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwgR0xpbnQgcmVmZXJlbmNlLCBH
THVpbnQgbWFzaywgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
OyAgICAgICAgIFwKLSAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChHTHNpemVpIG51
bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICpwYXRocywgICAgICAgIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQs
IEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ssICAgICAgICAgICAgIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwgY29uc3QgR0xmbG9h
dCAqdHJhbnNmb3JtVmFsdWVzKTsgICAgICAgICAgIFwKLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBl
LCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywgUGF0aElEIHBhdGhCYXNlUGFja2VkLCAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlLCAgICAgICAgIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsgIFwKLSAgICB2b2lkIHN0ZW5j
aWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgR0xzaXplaSBudW1QYXRocywg
R0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIFBhdGhJRCBwYXRoQmFzZVBh
Y2tlZCwgICAgICAgICAgIFwKLSAgICAgICAgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywg
R0xlbnVtIGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2
b2lkIGJpbmRGcmFnbWVudElucHV0TG9jYXRpb24oU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1zUGFj
a2VkLCBHTGludCBsb2NhdGlvbiwgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbihTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgR0xpbnQgbG9jYXRpb24sICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZ2VuTW9kZSwgR0xpbnQgY29tcG9uZW50cywgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsgICAg
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBH
TEVTMisgRXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTI5Miw2ICsyNDksOSBAQAogICAgIC8qIEdMX0FO
R0xFX2ZyYW1lYnVmZmVyX2JsaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMgKi8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIC8qIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSAqLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHZvaWQgaW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlKE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tl
ZCwgR0x1aW50NjQgc2l6ZSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCwgR0x1aW50IGhh
bmRsZSk7ICAgICAgICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX0FOR0xFX211bHRpX2RyYXcg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzKFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCwgY29uc3QgR0xpbnQgKmZpcnN0cywgY29uc3QgR0xzaXplaSAqY291bnRzLCAg
ICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzA2
LDYgKzI2Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICppbnN0YW5jZUNvdW50cywgR0xzaXplaSBkcmF3Y291bnQpOyAgICAgICAgICAgICBc
CiAgICAgLyogR0xfQU5HTEVfcHJvdm9raW5nX3ZlcnRleCAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBw
cm92b2tpbmdWZXJ0ZXgoUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogR0xfQU5HTEVfc2VtYXBo
b3JlX2Z1Y2hzaWEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBpbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5k
bGUoU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkLCBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNr
ZWQsICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhh
bmRsZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgLyogR0xfQU5HTEVfdGV4dHVyZV9tdWx0aXNhbXBsZSAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xfQU5H
TEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBnZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlKFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQsIEdMc2l6ZWkgYnVmc2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBcCkBAIC0zMjksNiArMjkyLDcgQEAKICAgICB2b2lkIGdldFF1ZXJ5
T2JqZWN0dWk2NHYoUXVlcnlJRCBpZFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFy
YW1zKTsgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIHF1ZXJ5Q291bnRlcihRdWVyeUlE
IGlkUGFja2VkLCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAvKiBHTF9FWFRfZHJhd19idWZmZXJzICovICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAvKiBHTF9FWFRfZHJhd19idWZmZXJzX2luZGV4ZWQgKi8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBH
TF9FWFRfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleCAqLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2b2lkIG11bHRpRHJhd0Vs
ZW1lbnRzQmFzZVZlcnRleChQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsIGNvbnN0IEdMc2l6ZWkg
KmNvdW50LCAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsIGNvbnN0IHZvaWQgKmNvbnN0ICppbmRp
Y2VzLCAgICAgIFwKQEAgLTM0NSw3ICszMDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2V0VW5zaWduZWRCeXRldihHTGVudW0gcG5h
bWUsIEdMdWJ5dGUgKmRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgIHZvaWQgZ2V0VW5zaWduZWRCeXRlaV92KEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCwgR0x1Ynl0ZSAqZGF0YSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IEdMYm9vbGVhbiBpc01lbW9yeU9iamVjdChNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNr
ZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdMYm9vbGVhbiBp
c01lbW9yeU9iamVjdChNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQpIGNvbnN0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgbWVtb3J5T2JqZWN0UGFyYW1l
dGVyaXYoTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkLCBHTGVudW0gcG5hbWUsICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIHZvaWQgdGV4U3RvcmFnZU1lbTJEKFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwg
R0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgICAgICAgICAgXApAQCAtMzc2
LDcgKzM0MCw3IEBACiAgICAgdm9pZCBkZWxldGVTZW1hcGhvcmVzKEdMc2l6ZWkgbiwgY29uc3Qg
U2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgdm9pZCBnZW5TZW1hcGhvcmVzKEdMc2l6ZWkgbiwgU2VtYXBob3JlSUQgKnNlbWFwaG9y
ZXNQYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBn
ZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dihTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQsIEdM
ZW51bSBwbmFtZSwgR0x1aW50NjQgKnBhcmFtcyk7ICBcCi0gICAgR0xib29sZWFuIGlzU2VtYXBo
b3JlKFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgR0xib29sZWFuIGlzU2VtYXBob3JlKFNlbWFwaG9y
ZUlEIHNlbWFwaG9yZVBhY2tlZCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgdm9pZCBzZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dihTZW1hcGhvcmVJRCBz
ZW1hcGhvcmVQYWNrZWQsIEdMZW51bSBwbmFtZSwgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQ2NCAqcGFyYW1zKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgdm9pZCBzaWdu
YWxTZW1hcGhvcmUoU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkLCBHTHVpbnQgbnVtQnVmZmVy
QmFycmllcnMsICAgICAgICAgICAgICAgICAgICBcCkBAIC0zODksNiArMzUzLDcgQEAKICAgICB2
b2lkIGltcG9ydFNlbWFwaG9yZUZkKFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCwgSGFuZGxl
VHlwZSBoYW5kbGVUeXBlUGFja2VkLCBHTGludCBmZCk7ICAgIFwKICAgICAvKiBHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9icHRjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQxICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjICov
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjICovICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IgKi8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAvKiBHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTQwMyw3ICszNjgsNyBAQAogICAgIHZvaWQgZmlu
aXNoRmVuY2VOVihGZW5jZU5WSUQgZmVuY2VQYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2VuRmVuY2VzTlYoR0xz
aXplaSBuLCBGZW5jZU5WSUQgKmZlbmNlc1BhY2tlZCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgZ2V0RmVuY2Vpdk5WKEZlbmNlTlZJRCBmZW5j
ZVBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIEdMYm9vbGVhbiBpc0ZlbmNlTlYoRmVuY2VOVklEIGZlbmNlUGFja2VkKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEdMYm9vbGVhbiBpc0ZlbmNlTlYoRmVuY2VOVklEIGZlbmNlUGFja2VkKSBjb25zdDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZvaWQgc2V0RmVu
Y2VOVihGZW5jZU5WSUQgZmVuY2VQYWNrZWQsIEdMZW51bSBjb25kaXRpb24pOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIEdMYm9vbGVhbiB0ZXN0RmVuY2VOVihG
ZW5jZU5WSUQgZmVuY2VQYWNrZWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgIC8qIEdMX09FU19FR0xfaW1hZ2UgKi8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApAQCAtNDExLDYgKzM3Niw3IEBACiAgICAgdm9pZCBlR0xJbWFnZVRhcmdldFRleHR1cmUy
RChUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOyAgICAgICAg
ICAgICAgICAgICBcCiAgICAgLyogR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUg
Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgLyogR0xfT0VTX2RlcHRoMzIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogR0xf
T0VTX2RyYXdfYnVmZmVyc19pbmRleGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xfT0VTX2RyYXdfZWxl
bWVudHNfYmFzZV92ZXJ0ZXggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgLyogR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSAq
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgLyogR0xfT0VTX21hcGJ1ZmZlciAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAKaW5k
ZXggZjhjYTZkYjVmOTU1Yzk1NTBjODQ0M2U5ZTQ3MGJlMWVkZDQxNjM0My4uZjNiNmViZjAzNTY1
ZTJhOTNmYzUwZWUyOWU1NGZmNDA4ZjhhYTY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcApAQCAtNTAsMTQgKzUwLDE5IEBACiAjaWYg
ZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQogIyAgICBpZiBkZWZpbmVkKEFOR0xFX1BMQVRG
T1JNX1dJTkRPV1MpCiAjICAgICAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
RGlzcGxheVdHTC5oIgotIyAgICBlbGlmIGRlZmluZWQoQU5HTEVfVVNFX1gxMSkKLSMgICAgICAg
IGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgiCiAjICAgIGVs
aWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNPUykgfHwgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9NQUNDQVRBTFlTVCkKICMgICAgICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9EaXNwbGF5Q0dMLmgiCiAjICAgIGVsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9JT1MpCiAj
ICAgICAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lYWdsL0Rpc3BsYXlFQUdMLmgi
Ci0jICAgIGVsaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCi0jICAgICAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgiCisjICAgIGVsaWYg
ZGVmaW5lZChBTkdMRV9QTEFURk9STV9MSU5VWCkKKyMgICAgICAgIGlmIGRlZmluZWQoQU5HTEVf
VVNFX09aT05FKQorIyAgICAgICAgICAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9vem9uZS9EaXNwbGF5T3pvbmUuaCIKKyMgICAgICAgIGVsc2UKKyMgICAgICAgICAgICBpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oIgorIyAgICAgICAgICAg
IGlmIGRlZmluZWQoQU5HTEVfVVNFX1gxMSkKKyMgICAgICAgICAgICAgICAgaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaCIKKyMgICAgICAgICAgICBlbmRpZgor
IyAgICAgICAgZW5kaWYKICMgICAgZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQp
CiAjICAgICAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNw
bGF5QW5kcm9pZC5oIgogIyAgICBlbHNlCkBAIC0yMTYsNyArMjIxLDkgQEAgRUdMQXR0cmliIEdl
dERldmljZVR5cGVGcm9tRW52aXJvbm1lbnQoKQogICAgIHJldHVybiBFR0xfUExBVEZPUk1fQU5H
TEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEU7CiB9CiAKLXJ4OjpEaXNwbGF5SW1wbCAqQ3Jl
YXRlRGlzcGxheUZyb21BdHRyaWJzKEVHTEF0dHJpYiBkaXNwbGF5VHlwZSwgY29uc3QgRGlzcGxh
eVN0YXRlICZzdGF0ZSkKK3J4OjpEaXNwbGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJz
KEVHTEF0dHJpYiBkaXNwbGF5VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTEF0dHJpYiBkZXZpY2VUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRGlzcGxheVN0YXRlICZzdGF0ZSkKIHsKICAgICBBU1NF
UlQoZGlzcGxheVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRSk7
CiAgICAgcng6OkRpc3BsYXlJbXBsICppbXBsID0gbnVsbHB0cjsKQEAgLTI0MSwxNSArMjQ4LDI2
IEBAIHJ4OjpEaXNwbGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJzKEVHTEF0dHJpYiBk
aXNwbGF5VHlwZSwgY29uc3QgRGlzcGxheVN0CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BF
TkdMKQogIyAgICBpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCiAgICAgICAgICAg
ICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dMKHN0YXRlKTsKLSMgICAgZWxpZiBkZWZpbmVkKEFO
R0xFX1VTRV9YMTEpCi0gICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKHN0YXRl
KTsKICMgICAgZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ09TKSB8fCBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX01BQ0NBVEFMWVNUKQogICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlz
cGxheUNHTChzdGF0ZSk7CiAjICAgIGVsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9JT1MpCiAg
ICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RUFHTChzdGF0ZSk7Ci0jICAgIGVsaWYg
ZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCisjICAgIGVsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9MSU5VWCkKKyMgICAgICAgIGlmIGRlZmluZWQoQU5HTEVfVVNFX09aT05FKQogICAgICAgICAg
ICAgLy8gVGhpcyBtaWdodCB3b3JrIGJ1dCBoYXMgbmV2ZXIgYmVlbiB0cmllZCwgc28gZGlzYWxs
b3cgZm9yIG5vdy4KICAgICAgICAgICAgIGltcGwgPSBudWxscHRyOworIyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaWYgKGRldmljZVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX0VHTF9BTkdMRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbXBsID0gbmV3
IHJ4OjpEaXNwbGF5RUdMKHN0YXRlKTsKKyAgICAgICAgICAgIH0KKyMgICAgICAgICAgICBpZiBk
ZWZpbmVkKEFOR0xFX1VTRV9YMTEpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWChzdGF0ZSk7CisgICAgICAg
ICAgICB9CisjICAgICAgICAgICAgZW5kaWYKKyMgICAgICAgIGVuZGlmCiAjICAgIGVsaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQogICAgICAgICAgICAgLy8gTm8gR0wgc3VwcG9y
dCBvbiB0aGlzIHBsYXRmb3JtLCBmYWlsIGRpc3BsYXkgY3JlYXRpb24uCiAgICAgICAgICAgICBp
bXBsID0gbnVsbHB0cjsKQEAgLTI2NiwxMCArMjg0LDIxIEBAIHJ4OjpEaXNwbGF5SW1wbCAqQ3Jl
YXRlRGlzcGxheUZyb21BdHRyaWJzKEVHTEF0dHJpYiBkaXNwbGF5VHlwZSwgY29uc3QgRGlzcGxh
eVN0CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQogIyAgICBpZiBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX1dJTkRPV1MpCiAgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5
V0dMKHN0YXRlKTsKLSMgICAgZWxpZiBkZWZpbmVkKEFOR0xFX1VTRV9YMTEpCi0gICAgICAgICAg
ICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKHN0YXRlKTsKLSMgICAgZWxpZiBkZWZpbmVkKEFO
R0xFX1VTRV9PWk9ORSkKKyMgICAgZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0xJTlVYKQor
IyAgICAgICAgaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCiAgICAgICAgICAgICBpbXBsID0g
bmV3IHJ4OjpEaXNwbGF5T3pvbmUoc3RhdGUpOworIyAgICAgICAgZWxzZQorICAgICAgICAgICAg
aWYgKGRldmljZVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0VHTF9BTkdM
RSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5
RUdMKHN0YXRlKTsKKyAgICAgICAgICAgIH0KKyMgICAgICAgICAgICBpZiBkZWZpbmVkKEFOR0xF
X1VTRV9YMTEpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWChzdGF0ZSk7CisgICAgICAgICAgICB9CisjICAg
ICAgICAgICAgZW5kaWYKKyMgICAgICAgIGVuZGlmCiAjICAgIGVsaWYgZGVmaW5lZChBTkdMRV9Q
TEFURk9STV9BTkRST0lEKQogICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUFuZHJv
aWQoc3RhdGUpOwogIyAgICBlbHNlCkBAIC0zOTIsNyArNDIxLDkgQEAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBrU2NyYXRjaEJ1ZmZlckxpZmV0aW1lID0gNjR1OwogCiB9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKLURpc3BsYXlTdGF0ZTo6RGlzcGxheVN0YXRlKCkgOiBsYWJlbChudWxs
cHRyKSwgZmVhdHVyZXNBbGxEaXNhYmxlZChmYWxzZSkge30KK0Rpc3BsYXlTdGF0ZTo6RGlzcGxh
eVN0YXRlKEVHTE5hdGl2ZURpc3BsYXlUeXBlIG5hdGl2ZURpc3BsYXlJZCkKKyAgICA6IGxhYmVs
KG51bGxwdHIpLCBmZWF0dXJlc0FsbERpc2FibGVkKGZhbHNlKSwgZGlzcGxheUlkKG5hdGl2ZURp
c3BsYXlJZCkKK3t9CiAKIERpc3BsYXlTdGF0ZTo6fkRpc3BsYXlTdGF0ZSgpIHt9CiAKQEAgLTQy
OSw3ICs0NjAsOSBAQCBEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbU5hdGl2ZURpc3Bs
YXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheQogICAgICAgICBkaXNwbGF5LT51
cGRhdGVBdHRyaWJzRnJvbUVudmlyb25tZW50KGF0dHJpYk1hcCk7CiAKICAgICAgICAgRUdMQXR0
cmliIGRpc3BsYXlUeXBlID0gZGlzcGxheS0+bUF0dHJpYnV0ZU1hcC5nZXQoRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfQU5HTEUpOwotICAgICAgICByeDo6RGlzcGxheUltcGwgKmltcGwgPSBDcmVh
dGVEaXNwbGF5RnJvbUF0dHJpYnMoZGlzcGxheVR5cGUsIGRpc3BsYXktPmdldFN0YXRlKCkpOwor
ICAgICAgICBFR0xBdHRyaWIgZGV2aWNlVHlwZSAgPSBkaXNwbGF5LT5tQXR0cmlidXRlTWFwLmdl
dChFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOworICAgICAgICByeDo6RGlz
cGxheUltcGwgKmltcGwgPQorICAgICAgICAgICAgQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJzKGRp
c3BsYXlUeXBlLCBkZXZpY2VUeXBlLCBkaXNwbGF5LT5nZXRTdGF0ZSgpKTsKICAgICAgICAgaWYg
KGltcGwgPT0gbnVsbHB0cikKICAgICAgICAgewogICAgICAgICAgICAgLy8gTm8gdmFsaWQgZGlz
cGxheSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlc2UgYXR0cmlidXRlcwpAQCAtNTA2LDggKzUzOSw4
IEBAIERpc3BsYXkgKkRpc3BsYXk6OkdldERpc3BsYXlGcm9tRGV2aWNlKERldmljZSAqZGV2aWNl
LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpCiB9CiAKIERpc3BsYXk6OkRpc3BsYXkoRUdMZW51
bSBwbGF0Zm9ybSwgRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkLCBEZXZpY2UgKmVnbERl
dmljZSkKLSAgICA6IG1JbXBsZW1lbnRhdGlvbihudWxscHRyKSwKLSAgICAgIG1EaXNwbGF5SWQo
ZGlzcGxheUlkKSwKKyAgICA6IG1TdGF0ZShkaXNwbGF5SWQpLAorICAgICAgbUltcGxlbWVudGF0
aW9uKG51bGxwdHIpLAogICAgICAgbUF0dHJpYnV0ZU1hcCgpLAogICAgICAgbUNvbmZpZ1NldCgp
LAogICAgICAgbUNvbnRleHRTZXQoKSwKQEAgLTUzNSw3ICs1NjgsNyBAQCBEaXNwbGF5Ojp+RGlz
cGxheSgpCiAgICAgaWYgKG1QbGF0Zm9ybSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUpCiAg
ICAgewogICAgICAgICBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCAqZGlzcGxheXMgICAgICA9IEdl
dEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwKCk7Ci0gICAgICAgIEFOR0xFUGxhdGZvcm1EaXNwbGF5
TWFwOjppdGVyYXRvciBpdGVyID0gZGlzcGxheXMtPmZpbmQobURpc3BsYXlJZCk7CisgICAgICAg
IEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwOjppdGVyYXRvciBpdGVyID0gZGlzcGxheXMtPmZpbmQo
bVN0YXRlLmRpc3BsYXlJZCk7CiAgICAgICAgIGlmIChpdGVyICE9IGRpc3BsYXlzLT5lbmQoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgZGlzcGxheXMtPmVyYXNlKGl0ZXIpOwpAQCAtMTM1NCw2
ICsxMzg3LDEwIEBAIHN0YXRpYyBDbGllbnRFeHRlbnNpb25zIEdlbmVyYXRlQ2xpZW50RXh0ZW5z
aW9ucygpCiAgICAgZXh0ZW5zaW9ucy54MTFWaXN1YWwgPSB0cnVlOwogI2VuZGlmCiAKKyNpZiBk
ZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0xJTlVYKSAmJiAhZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUp
CisgICAgZXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFRGV2aWNlVHlwZUVHTEFOR0xFID0gdHJ1ZTsK
KyNlbmRpZgorCiAgICAgZXh0ZW5zaW9ucy5jbGllbnRHZXRBbGxQcm9jQWRkcmVzc2VzID0gdHJ1
ZTsKICAgICBleHRlbnNpb25zLmRlYnVnICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOwogICAg
IGV4dGVuc2lvbnMuZXhwbGljaXRDb250ZXh0ICAgICAgICAgICA9IHRydWU7CkBAIC0xNDk5LDcg
KzE1MzYsNyBAQCB2b2lkIERpc3BsYXk6OmluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKCkKIAog
ICAgIG1JbXBsZW1lbnRhdGlvbi0+aW5pdGlhbGl6ZUZyb250ZW5kRmVhdHVyZXMoJm1Gcm9udGVu
ZEZlYXR1cmVzKTsKIAotICAgIHJ4OjpPdmVycmlkZUZlYXR1cmVzV2l0aERpc3BsYXlTdGF0ZSgm
bUZyb250ZW5kRmVhdHVyZXMsIG1TdGF0ZSk7CisgICAgcng6OkFwcGx5RmVhdHVyZU92ZXJyaWRl
cygmbUZyb250ZW5kRmVhdHVyZXMsIG1TdGF0ZSk7CiB9CiAKIGNvbnN0IERpc3BsYXlFeHRlbnNp
b25zICZEaXNwbGF5OjpnZXRFeHRlbnNpb25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCmluZGV4IDA3ZmIyYWExNmY0ZjBkMjU1YzVh
NDJkZWI0M2U1ODIzNzNiNjA0OWYuLjYxY2MwY2IyODAwODVjZjJkZjM0ZmRhYmI0OWNmMTgyYTIx
MGU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9E
aXNwbGF5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3Bs
YXkuaApAQCAtNTEsNyArNTEsNyBAQCB1c2luZyBTdXJmYWNlU2V0ID0gc3RkOjpzZXQ8U3VyZmFj
ZSAqPjsKIAogc3RydWN0IERpc3BsYXlTdGF0ZSBmaW5hbCA6IHByaXZhdGUgYW5nbGU6Ok5vbkNv
cHlhYmxlCiB7Ci0gICAgRGlzcGxheVN0YXRlKCk7CisgICAgRGlzcGxheVN0YXRlKEVHTE5hdGl2
ZURpc3BsYXlUeXBlIG5hdGl2ZURpc3BsYXlJZCk7CiAgICAgfkRpc3BsYXlTdGF0ZSgpOwogCiAg
ICAgRUdMTGFiZWxLSFIgbGFiZWw7CkBAIC01OSw2ICs1OSw3IEBAIHN0cnVjdCBEaXNwbGF5U3Rh
dGUgZmluYWwgOiBwcml2YXRlIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBmZWF0dXJlT3ZlcnJpZGVzRW5hYmxlZDsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gZmVhdHVyZU92ZXJyaWRlc0Rpc2FibGVkOwogICAgIGJvb2wgZmVhdHVyZXNBbGxE
aXNhYmxlZDsKKyAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5SWQ7CiB9OwogCiAvLyBD
b25zdGFudCBjb2RlZCBoZXJlIGFzIGEgc2FuaXR5IGxpbWl0LgpAQCAtMTg3LDcgKzE4OCw3IEBA
IGNsYXNzIERpc3BsYXkgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdCwgYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgRUdMaW50IHByb2dyYW1DYWNoZVJlc2l6ZShFR0xpbnQgbGltaXQsIEVHTGVu
dW0gbW9kZSk7CiAKICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmdldEF0dHJpYnV0ZU1hcCgpIGNv
bnN0IHsgcmV0dXJuIG1BdHRyaWJ1dGVNYXA7IH0KLSAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBn
ZXROYXRpdmVEaXNwbGF5SWQoKSBjb25zdCB7IHJldHVybiBtRGlzcGxheUlkOyB9CisgICAgRUdM
TmF0aXZlRGlzcGxheVR5cGUgZ2V0TmF0aXZlRGlzcGxheUlkKCkgY29uc3QgeyByZXR1cm4gbVN0
YXRlLmRpc3BsYXlJZDsgfQogCiAgICAgcng6OkRpc3BsYXlJbXBsICpnZXRJbXBsZW1lbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbjsgfQogICAgIERldmljZSAqZ2V0RGV2
aWNlKCkgY29uc3Q7CkBAIC0yMzcsNyArMjM4LDYgQEAgY2xhc3MgRGlzcGxheSBmaW5hbCA6IHB1
YmxpYyBMYWJlbGVkT2JqZWN0LCBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBEaXNwbGF5U3RhdGUg
bVN0YXRlOwogICAgIHJ4OjpEaXNwbGF5SW1wbCAqbUltcGxlbWVudGF0aW9uOwogCi0gICAgRUdM
TmF0aXZlRGlzcGxheVR5cGUgbURpc3BsYXlJZDsKICAgICBBdHRyaWJ1dGVNYXAgbUF0dHJpYnV0
ZU1hcDsKIAogICAgIENvbmZpZ1NldCBtQ29uZmlnU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yU3RyaW5ncy5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yU3RyaW5ncy5oCmluZGV4IGFmYTMxNWRhNzAw
MTllZjQ2MmJiYmRkNjdjN2M4MjJhNDBkMjZjYWUuLmJhYTc4YmIyMWIyYTAxZWI0ZDE2NzUwMjdm
MGNhZjdkMWU0ZWJjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9FcnJvclN0cmluZ3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvRXJyb3JTdHJpbmdzLmgKQEAgLTY4LDcgKzY4LDcgQEAgTVNHIGtDb21wcmVzc2Vk
RGF0YVNpemVUb29TbWFsbCA9ICJkYXRhU2l6ZSBpcyB0b28gc21hbGwiOwogTVNHIGtDb21wcmVz
c2VkTWlzbWF0Y2ggPSAiQ29tcHJlc3NlZCBkYXRhIGlzIHZhbGlkIGlmLWFuZC1vbmx5LWlmIHRo
ZSB0ZXh0dXJlIGlzIGNvbXByZXNzZWQuIjsKIE1TRyBrQ29tcHJlc3NlZFRleHR1cmVEaW1lbnNp
b25zTXVzdE1hdGNoRGF0YSA9ICJDb21wcmVzc2VkIHRleHR1cmUgZGltZW5zaW9ucyBtdXN0IGV4
YWN0bHkgbWF0Y2ggdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGRhdGEgcGFzc2VkIGluLiI7CiBNU0cg
a0NvbXByZXNzZWRUZXh0dXJlc05vdEF0dGFjaGFibGUgPSAiQ29tcHJlc3NlZCB0ZXh0dXJlcyBj
YW5ub3QgYmUgYXR0YWNoZWQgdG8gYSBmcmFtZWJ1ZmZlci4iOwotTVNHIGtDb25zdGFudENvbG9y
QWxwaGFMaW1pdGF0aW9uID0gIlNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEv
R0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIGFuZCBHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVf
TUlOVVNfQ09OU1RBTlRfQ09MT1Igbm90IHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9u
LiI7CitNU0cga0NvbnN0YW50Q29sb3JBbHBoYUxpbWl0YXRpb24gPSAiU2ltdWx0YW5lb3VzIHVz
ZSBvZiBHTF9DT05TVEFOVF9BTFBIQS9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgYW5kIEdM
X0NPTlNUQU5UX0NPTE9SL0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiBhcyBjb2xvciBmYWN0
b3JzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4iOwogTVNHIGtDb250
ZXh0TG9zdCA9ICJDb250ZXh0IGhhcyBiZWVuIGxvc3QuIjsKIE1TRyBrQ29weUFsaWFzID0gIlRo
ZSByZWFkIGFuZCB3cml0ZSBjb3B5IHJlZ2lvbnMgYWxpYXMgbWVtb3J5LiI7CiBNU0cga0N1YmVt
YXBGYWNlc0VxdWFsRGltZW5zaW9ucyA9ICJFYWNoIGN1YmVtYXAgZmFjZSBtdXN0IGhhdmUgZXF1
YWwgd2lkdGggYW5kIGhlaWdodC4iOwpAQCAtMTQxLDYgKzE0MSw3IEBAIE1TRyBrR2V0SW1hZ2VF
eHRlbnNpb25Ob3RFbmFibGVkID0gIkdMX0FOR0xFX2dldF9pbWFnZSBleHRlbnNpb24gbm90IGVu
YWJsZWQuIjsKIE1TRyBrR0xFUzFPbmx5ID0gIkdMRVMxLW9ubHkgZnVuY3Rpb24uIjsKIE1TRyBr
SW1hZ2VTaXplTXVzdEJlWmVybyA9ICJpbWFnZVNpemUgbXVzdCBiZSAwIGlmIG5vIHRleHR1cmUg
ZGF0YSBpcyBwcm92aWRlZC4iOwogTVNHIGtJbWFnZVNpemVUb29TbWFsbCA9ICJpbWFnZVNpemUg
aXMgdG9vIHNtYWxsLiI7CitNU0cga0ltbXV0YWJsZU1lbW9yeU9iamVjdCA9ICJUaGUgbWVtb3J5
IG9iamVjdCBpcyBpbW11dGFibGUuIjsKIE1TRyBrSW1tdXRhYmxlVGV4dHVyZUJvdW5kID0gIlRo
ZSB2YWx1ZSBvZiBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQgZm9yIHRoZSB0ZXh0dXJlIGN1cnJl
bnRseSBib3VuZCB0byB0YXJnZXQgb24gdGhlIGFjdGl2ZSB0ZXh0dXJlIHVuaXQgaXMgdHJ1ZS4i
OwogTVNHIGtJbmNvbXBhdGlibGVEcmF3TW9kZUFnYWluc3RHZW9tZXRyeVNoYWRlciA9ICJQcmlt
aXRpdmUgbW9kZSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgaW5wdXQgcHJpbWl0aXZlIHR5cGUg
b2YgdGhlIGdlb21ldHJ5IHNoYWRlci4iOwogTVNHIGtJbmRleEV4Y2VlZHNBY3RpdmVVbmlmb3Jt
QmxvY2tDb3VudCA9ICJJbmRleCBleGNlZWRzIGFjdGl2ZSB1bmlmb3JtIGJsb2NrIGNvdW50LiI7
CkBAIC0xNTksNiArMTYwLDkgQEAgTVNHIGtJbnN1ZmZpY2llbnRQYXJhbXMgPSAiTW9yZSBwYXJh
bWV0ZXJzIGFyZSByZXF1aXJlZCB0aGFuIHdlcmUgcHJvdmlkZWQuIjsKIE1TRyBrSW5zdWZmaWNp
ZW50VmVydGV4QnVmZmVyU2l6ZSA9ICJWZXJ0ZXggYnVmZmVyIGlzIG5vdCBiaWcgZW5vdWdoIGZv
ciB0aGUgZHJhdyBjYWxsIjsKIE1TRyBrSW50ZWdlck92ZXJmbG93ID0gIkludGVnZXIgb3ZlcmZs
b3cuIjsKIE1TRyBrSW50ZXJuYWxGb3JtYXRSZXF1aXJlc1RleHR1cmUyREFycmF5ID0gImludGVy
bmFsZm9ybWF0IGlzIGFuIEVUQzIvRUFDIGZvcm1hdCBhbmQgdGFyZ2V0IGlzIG5vdCBHTF9URVhU
VVJFXzJEX0FSUkFZLiI7CitNU0cga0ludGVybmFsRm9ybWF0UmVxdWlyZXNUZXh0dXJlMkRBcnJh
eVMzVEMgPSAiaW50ZXJuYWxmb3JtYXQgaXMgYW4gUzNUQyBmb3JtYXQgYW5kIHRhcmdldCBpcyBu
b3QgR0xfVEVYVFVSRV8yRF9BUlJBWS4iOworTVNHIGtJbnRlcm5hbEZvcm1hdFJlcXVpcmVzVGV4
dHVyZTJEQXJyYXlSR1RDID0gImludGVybmFsZm9ybWF0IGlzIGFuIFJHVEMgZm9ybWF0IGFuZCB0
YXJnZXQgaXMgbm90IEdMX1RFWFRVUkVfMkRfQVJSQVkuIjsKK01TRyBrSW50ZXJuYWxGb3JtYXRS
ZXF1aXJlc1RleHR1cmUyREFycmF5QVNUQyA9ICJpbnRlcm5hbGZvcm1hdCBpcyBhbiBBU1RDIGZv
cm1hdCBhbmQgdGFyZ2V0IGlzIG5vdCBHTF9URVhUVVJFXzJEX0FSUkFZLiI7CiBNU0cga0ludmFs
aWRBY2Nlc3NCaXRzID0gIkludmFsaWQgYWNjZXNzIGJpdHMuIjsKIE1TRyBrSW52YWxpZEFjY2Vz
c0JpdHNGbHVzaCA9ICJUaGUgZXhwbGljaXQgZmx1c2hpbmcgYml0IG1heSBvbmx5IGJlIHNldCBp
ZiB0aGUgYnVmZmVyIGlzIG1hcHBlZCBmb3Igd3JpdGluZy4iOwogTVNHIGtJbnZhbGlkQWNjZXNz
Qml0c1JlYWQgPSAiSW52YWxpZCBhY2Nlc3MgYml0cyB3aGVuIG1hcHBpbmcgYnVmZmVyIGZvciBy
ZWFkaW5nIjsKQEAgLTE4MCw3ICsxODQsNyBAQCBNU0cga0ludmFsaWRDb21iaW5lZEltYWdlVW5p
dCA9ICJTcGVjaWZpZWQgdW5pdCBtdXN0IGJlIGluIFtHTF9URVhUVVJFMCwgR0xfVEVYVAogTVNH
IGtJbnZhbGlkQ29tcG9uZW50cyA9ICJJbnZhbGlkIGNvbXBvbmVudHMuIjsKIE1TRyBrSW52YWxp
ZENvbXByZXNzZWRGb3JtYXQgPSAiTm90IGEgdmFsaWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1h
dC4iOwogTVNHIGtJbnZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZSA9ICJJbnZhbGlkIGNvbXByZXNz
ZWQgaW1hZ2Ugc2l6ZS4iOwotTVNHIGtJbnZhbGlkQ29uc3RhbnRDb2xvciA9ICJDT05TVEFOVF9D
T0xPUiAob3IgT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SKSBhbmQgQ09OU1RBTlRfQUxQSEEgKG9y
IE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQSkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291
cmNlIGFuZCBkZXN0aW5hdGlvbiBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbi4iOworTVNH
IGtJbnZhbGlkQ29uc3RhbnRDb2xvciA9ICJDT05TVEFOVF9DT0xPUiAob3IgT05FX01JTlVTX0NP
TlNUQU5UX0NPTE9SKSBhbmQgQ09OU1RBTlRfQUxQSEEgKG9yIE9ORV9NSU5VU19DT05TVEFOVF9B
TFBIQSkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBj
b2xvciBmYWN0b3JzIGluIHRoZSBibGVuZCBmdW5jdGlvbi4iOwogTVNHIGtJbnZhbGlkQ29weUNv
bWJpbmF0aW9uID0gIkludmFsaWQgY29weSB0ZXh0dXJlIGZvcm1hdCBjb21iaW5hdGlvbi4iOwog
TVNHIGtJbnZhbGlkQ292ZXJhZ2VDb21wb25lbnRzID0gImNvbXBvbmVudHMgaXMgbm90IG9uZSBv
ZiBHTF9SR0IsIEdMX1JHQkEsIEdMX0FMUEhBIG9yIEdMX05PTkUuIjsKIE1TRyBrSW52YWxpZENv
dmVyTW9kZSA9ICJJbnZhbGlkIGNvdmVyIG1vZGUuIjsKQEAgLTIzNywzMSArMjQxLDE0IEBAIE1T
RyBrSW52YWxpZE1hdGVyaWFsRmFjZSA9ICJJbnZhbGlkIG1hdGVyaWFsIGZhY2UuIjsKIE1TRyBr
SW52YWxpZE1hdGVyaWFsUGFyYW1ldGVyID0gIkludmFsaWQgbWF0ZXJpYWwgcGFyYW1ldGVyLiI7
CiBNU0cga0ludmFsaWRNYXRyaXhNb2RlID0gIkludmFsaWQgbWF0cml4IG1vZGUuIjsKIE1TRyBr
SW52YWxpZE1lbW9yeUJhcnJpZXJCaXQgPSAiSW52YWxpZCBtZW1vcnkgYmFycmllciBiaXQuIjsK
K01TRyBrSW52YWxpZE1lbW9yeU9iamVjdCA9ICJJbnZhbGlkIG1lbW9yeSBvYmplY3QuIjsKK01T
RyBrSW52YWxpZE1lbW9yeU9iamVjdFBhcmFtZXRlciA9ICJJbnZhbGlkIG1lbW9yeSBvYmplY3Qg
cGFyYW1ldGVyLiI7CiBNU0cga0ludmFsaWRNaXBMZXZlbCA9ICJMZXZlbCBvZiBkZXRhaWwgb3V0
c2lkZSBvZiByYW5nZS4iOwogTVNHIGtJbnZhbGlkTWlwTGV2ZWxzID0gIkludmFsaWQgbGV2ZWwg
Y291bnQuIjsKIE1TRyBrSW52YWxpZE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyT3BlcmF0aW9uID0g
IkludmFsaWQgb3BlcmF0aW9uIG9uIG11bHRpc2FtcGxlZCBmcmFtZWJ1ZmZlciI7CiBNU0cga0lu
dmFsaWRNdWx0aXRleHR1cmVVbml0ID0gIlNwZWNpZmllZCB1bml0IG11c3QgYmUgaW4gW0dMX1RF
WFRVUkUwLCBHTF9URVhUVVJFMCArIEdMX01BWF9URVhUVVJFX1VOSVRTKSI7CiBNU0cga0ludmFs
aWROYW1lID0gIkludmFsaWQgbmFtZS4iOwogTVNHIGtJbnZhbGlkTmFtZUNoYXJhY3RlcnMgPSAi
TmFtZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMuIjsKLU1TRyBrSW52YWxpZFBhdGhDb2Vm
ZmljaWVudHNBcnJheSA9ICJObyBjb2VmZmljaWVudHMgYXJyYXkgZ2l2ZW4uIjsKLU1TRyBrSW52
YWxpZFBhdGhDb21tYW5kID0gIkludmFsaWQgY29tbWFuZC4iOwotTVNHIGtJbnZhbGlkUGF0aENv
bW1hbmRzQXJyYXkgPSAiTm8gY29tbWFuZHMgYXJyYXkgZ2l2ZW4uIjsKLU1TRyBrSW52YWxpZFBh
dGhDb21wb25lbnRzID0gIlVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbXBvbmVudHMiOwotTVNHIGtJ
bnZhbGlkUGF0aENvb3JkaW5hdGVUeXBlID0gIkludmFsaWQgY29vcmRpbmF0ZSB0eXBlLiI7Ci1N
U0cga0ludmFsaWRQYXRoRW5kQ2FwcyA9ICJJbnZhbGlkIGVuZCBjYXBzLiI7Ci1NU0cga0ludmFs
aWRQYXRoR2VuTW9kZSA9ICJJbnZhbGlkIGdlbiBtb2RlLiI7Ci1NU0cga0ludmFsaWRQYXRoSm9p
blN0eWxlID0gIkludmFsaWQgam9pbiBzdHlsZS4iOwotTVNHIGtJbnZhbGlkUGF0aE1hdHJpeCA9
ICJJbnZhbGlkIG1hdHJpeC4iOwotTVNHIGtJbnZhbGlkUGF0aE1pdGVyTGltaXQgPSAiSW52YWxp
ZCBtaXRlciBsaW1pdC4iOwotTVNHIGtJbnZhbGlkUGF0aE5hbWVBcnJheSA9ICJObyBwYXRoIG5h
bWUgYXJyYXkuIjsKLU1TRyBrSW52YWxpZFBhdGhOYW1lVHlwZSA9ICJJbnZhbGlkIHBhdGggbmFt
ZSB0eXBlLiI7Ci1NU0cga0ludmFsaWRQYXRoTnVtQ29tbWFuZHMgPSAiSW52YWxpZCBudW1iZXIg
b2YgY29tbWFuZHMuIjsKLU1TRyBrSW52YWxpZFBhdGhOdW1Db29yZHMgPSAiSW52YWxpZCBudW1i
ZXIgb2YgY29vcmRpbmF0ZXMuIjsKLU1TRyBrSW52YWxpZFBhdGhOdW1Db29yZHNBcnJheSA9ICJO
byBjb29yZGluYXRlIGFycmF5IGdpdmVuLiI7Ci1NU0cga0ludmFsaWRQYXRoTnVtUGF0aHMgPSAi
SW52YWxpZCAobmVnYXRpdmUpIG51bVBhdGhzLiI7Ci1NU0cga0ludmFsaWRQYXRoUGFyYW1ldGVy
ID0gIkludmFsaWQgcGF0aCBwYXJhbWV0ZXIuIjsKLU1TRyBrSW52YWxpZFBhdGhTdHJva2VXaWR0
aCA9ICJJbnZhbGlkIHN0cm9rZSB3aWR0aC4iOwotTVNHIGtJbnZhbGlkUGF0aFZhbHVlQXJyYXkg
PSAiTm8gdmFsdWUgYXJyYXkuIjsKIE1TRyBrSW52YWxpZFBuYW1lID0gIkludmFsaWQgcG5hbWUu
IjsKIE1TRyBrSW52YWxpZFBvaW50ZXJRdWVyeSA9ICJJbnZhbGlkIHBvaW50ZXIgcXVlcnkuIjsK
IE1TRyBrSW52YWxpZFBvaW50UGFyYW1ldGVyID0gIkludmFsaWQgcG9pbnQgcGFyYW1ldGVyLiI7
CkBAIC0zOTIsMTEgKzM3OSw5IEBAIE1TRyBrTm9BY3RpdmVHcmFwaGljc1NoYWRlclN0YWdlID0g
Ikl0IGlzIGEgdW5kZWZpbmVkIGJlaGF2aW91ciB0byByZW5kZXIgd2l0aG91CiBNU0cga05vQWN0
aXZlUHJvZ3JhbVdpdGhDb21wdXRlU2hhZGVyID0gIk5vIGFjdGl2ZSBwcm9ncmFtIGZvciB0aGUg
Y29tcHV0ZSBzaGFkZXIgc3RhZ2UuIjsKIE1TRyBrTm9EZWZpbmVkQ2xlYXJDb252ZXJzaW9uID0g
Ik5vIGRlZmluZWQgY29udmVyc2lvbiBiZXR3ZWVuIGNsZWFyIHZhbHVlIGFuZCBhdHRhY2htZW50
IGZvcm1hdC4iOwogTVNHIGtOb25Qb3NpdGl2ZURyYXdUZXh0dXJlRGltZW5zaW9uID0gIkJvdGgg
d2lkdGggYW5kIGhlaWdodCBhcmd1bWVudCBvZiBkcmF3biB0ZXh0dXJlIG11c3QgYmUgcG9zaXRp
dmUuIjsKLU1TRyBrTm9QYXRoT3JOb1BhdGhEYXRhID0gIk5vIHN1Y2ggcGF0aCBvciBwYXRoIGhh
cyBubyBkYXRhLiI7CiBNU0cga05vUHJvZ3JhbUJpbmFyeUZvcm1hdHMgPSAiTm8gcHJvZ3JhbSBi
aW5hcnkgZm9ybWF0cyBzdXBwb3J0ZWQuIjsKIE1TRyBrTm9SZWFkRnJhbWVidWZmZXIgPSAiTm8g
YWN0aXZlIHJlYWQgZnJhbWVidWZmZXIuIjsKIE1TRyBrTm9TYW1wbGVBbHBoYVRvQ292ZXJhZ2Vz
TGltaXRhdGlvbiA9ICJDdXJyZW50IHJlbmRlcmVyIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYS10by1j
b3ZlcmFnZS4iOwotTVNHIGtOb1N1Y2hQYXRoID0gIk5vIHN1Y2ggcGF0aCBvYmplY3QuIjsKIE1T
RyBrTm9UcmFuc2Zvcm1BcnJheSA9ICJObyB0cmFuc2Zvcm0gYXJyYXkgZ2l2ZW4uIjsKIE1TRyBr
Tm9UcmFuc2Zvcm1GZWVkYmFja091dHB1dFZhcmlhYmxlcyA9ICJUaGUgYWN0aXZlIHByb2dyYW0g
aGFzIHNwZWNpZmllZCBubyBvdXRwdXQgdmFyaWFibGVzIHRvIHJlY29yZC4iOwogTVNHIGtOb1pl
cm9EaXZpc29yID0gIkF0IGxlYXN0IG9uZSBlbmFibGVkIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYSBk
aXZpc29yIG9mIHplcm8uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0ZyYW1lQ2FwdHVyZS5jcHAKaW5kZXggZmE0YWM5OTkyMGU4NjQ1M2M4MjdmNjZk
ZGEzZjFlMzc1YmI1MTM3My4uMTMwN2JmYTRkYTQwOGRmNWFiZDA0NmNhNTIxNmYwMjFmODQ1MmRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1l
Q2FwdHVyZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Zy
YW1lQ2FwdHVyZS5jcHAKQEAgLTE5LDYgKzE5LDggQEAKICNpbmNsdWRlICJjb21tb24vc3lzdGVt
X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9SZXNvdXJjZU1hcC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvY2Fw
dHVyZV9nbGVzXzJfMF9hdXRvZ2VuLmgiCkBAIC0yNyw2ICsyOSw5IEBACiAjaW5jbHVkZSAibGli
QU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRpbHMu
aCIKIAorI2RlZmluZSBVU0VfU1lTVEVNX1pMSUIKKyNpbmNsdWRlICJjb21wcmVzc2lvbl91dGls
c19wb3J0YWJsZS5oIgorCiAjaWYgIUFOR0xFX0NBUFRVUkVfRU5BQkxFRAogIyAgICBlcnJvciBG
cmFtZSBjYXB0dXJlIG11c3QgYmUgZW5ibGVkIHRvIGluY2x1ZGUgdGhpcyBmaWxlLgogI2VuZGlm
ICAvLyAhQU5HTEVfQ0FQVFVSRV9FTkFCTEVECkBAIC00MSw2ICs0Niw3IEBAIGNvbnN0ZXhwciBj
aGFyIGtPdXREaXJlY3RvcnlWYXJOYW1lW10gPSAiQU5HTEVfQ0FQVFVSRV9PVVRfRElSIjsKIGNv
bnN0ZXhwciBjaGFyIGtGcmFtZVN0YXJ0VmFyTmFtZVtdICAgPSAiQU5HTEVfQ0FQVFVSRV9GUkFN
RV9TVEFSVCI7CiBjb25zdGV4cHIgY2hhciBrRnJhbWVFbmRWYXJOYW1lW10gICAgID0gIkFOR0xF
X0NBUFRVUkVfRlJBTUVfRU5EIjsKIGNvbnN0ZXhwciBjaGFyIGtDYXB0dXJlTGFiZWxbXSAgICAg
ICAgPSAiQU5HTEVfQ0FQVFVSRV9MQUJFTCI7Citjb25zdGV4cHIgY2hhciBrQ29tcHJlc3Npb25b
XSAgICAgICAgID0gIkFOR0xFX0NBUFRVUkVfQ09NUFJFU1NJT04iOwogCiAjaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9BTkRST0lEKQogCkBAIC00OSw2ICs1NSw3IEBAIGNvbnN0ZXhwciBjaGFy
IGtBbmRyb2lkT3V0RGlyW10gICAgICAgICA9ICJkZWJ1Zy5hbmdsZS5jYXB0dXJlLm91dF9kaXIi
OwogY29uc3RleHByIGNoYXIga0FuZHJvaWRGcmFtZVN0YXJ0W10gICAgID0gImRlYnVnLmFuZ2xl
LmNhcHR1cmUuZnJhbWVfc3RhcnQiOwogY29uc3RleHByIGNoYXIga0FuZHJvaWRGcmFtZUVuZFtd
ICAgICAgID0gImRlYnVnLmFuZ2xlLmNhcHR1cmUuZnJhbWVfZW5kIjsKIGNvbnN0ZXhwciBjaGFy
IGtBbmRyb2lkQ2FwdHVyZUxhYmVsW10gICA9ICJkZWJ1Zy5hbmdsZS5jYXB0dXJlLmxhYmVsIjsK
K2NvbnN0ZXhwciBjaGFyIGtBbmRyb2lkQ29tcHJlc3Npb25bXSAgICA9ICJkZWJ1Zy5hbmdsZS5j
YXB0dXJlLmNvbXByZXNzaW9uIjsKIAogY29uc3RleHByIGludCBrU3RyZWFtU2l6ZSA9IDY0Owog
CkBAIC0xMDgsOSArMTE1LDE2IEBAIHZvaWQgUHJpbWVBbmRyb2lkRW52aXJvbm1lbnRWYXJpYWJs
ZXMoKQogICAgIHN0ZDo6c3RyaW5nIGNhcHR1cmVMYWJlbCA9IEFuZHJvaWRHZXRFbnZGcm9tUHJv
cChrQW5kcm9pZENhcHR1cmVMYWJlbCk7CiAgICAgaWYgKCFjYXB0dXJlTGFiZWwuZW1wdHkoKSkK
ICAgICB7Ci0gICAgICAgIElORk8oKSA8PCAiQ2FwdHVyZSBsYWJlbCByZWFkICIgPDwgY2FwdHVy
ZUxhYmVsIDw8ICIgZnJvbSAiIDw8IGtBbmRyb2lkQ2FwdHVyZUxhYmVsOworICAgICAgICBJTkZP
KCkgPDwgIkZyYW1lIGNhcHR1cmUgcmVhZCAiIDw8IGNhcHR1cmVMYWJlbCA8PCAiIGZyb20gIiA8
PCBrQW5kcm9pZENhcHR1cmVMYWJlbDsKICAgICAgICAgc2V0ZW52KGtDYXB0dXJlTGFiZWwsIGNh
cHR1cmVMYWJlbC5jX3N0cigpLCAxKTsKICAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBjb21wcmVz
c2lvbiA9IEFuZHJvaWRHZXRFbnZGcm9tUHJvcChrQW5kcm9pZENvbXByZXNzaW9uKTsKKyAgICBp
ZiAoIWNvbXByZXNzaW9uLmVtcHR5KCkpCisgICAgeworICAgICAgICBJTkZPKCkgPDwgIkZyYW1l
IGNhcHR1cmUgcmVhZCAiIDw8IGNvbXByZXNzaW9uIDw8ICIgZnJvbSAiIDw8IGtBbmRyb2lkQ29t
cHJlc3Npb247CisgICAgICAgIHNldGVudihrQ29tcHJlc3Npb24sIGNvbXByZXNzaW9uLmNfc3Ry
KCksIDEpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC0yODUsNiArMjk5LDMwIEBAIHZvaWQgV3Jp
dGVJbmxpbmVEYXRhPEdMZmxvYXQ+KGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICZ2ZWMsIHN0
ZDo6b3N0cmVhbSAmb3V0CiAgICAgfQogfQogCit0ZW1wbGF0ZSA8Pgordm9pZCBXcml0ZUlubGlu
ZURhdGE8R0xjaGFyPihjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAmdmVjLCBzdGQ6Om9zdHJl
YW0gJm91dCkKK3sKKyAgICBjb25zdCBHTGNoYXIgKmRhdGEgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IEdMY2hhciAqPih2ZWMuZGF0YSgpKTsKKyAgICBzaXplX3QgY291bnQgICAgICAgPSB2ZWMu
c2l6ZSgpIC8gc2l6ZW9mKEdMY2hhcik7CisKKyAgICBpZiAoZGF0YSA9PSBudWxscHRyIHx8IGRh
dGFbMF0gPT0gJ1wwJykKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBvdXQg
PDwgIlwiIjsKKworICAgIGZvciAoc2l6ZV90IGRhdGFJbmRleCA9IDA7IGRhdGFJbmRleCA8IGNv
dW50OyArK2RhdGFJbmRleCkKKyAgICB7CisgICAgICAgIGlmIChkYXRhW2RhdGFJbmRleF0gPT0g
J1wwJykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIG91dCA8PCBzdGF0aWNfY2FzdDxH
TGNoYXI+KGRhdGFbZGF0YUluZGV4XSk7CisgICAgfQorCisgICAgb3V0IDw8ICJcIiI7Cit9CisK
IGNvbnN0ZXhwciBzaXplX3Qga0lubGluZURhdGFUaHJlc2hvbGQgPSAxMjg7CiAKIHZvaWQgV3Jp
dGVTdHJpbmdQYXJhbVJlcGxheShzdGQ6Om9zdHJlYW0gJm91dCwgY29uc3QgUGFyYW1DYXB0dXJl
ICZwYXJhbSkKQEAgLTQxNSw3ICs0NTMsMTIgQEAgdm9pZCBXcml0ZUJpbmFyeVBhcmFtUmVwbGF5
KERhdGFDb3VudGVycyAqY291bnRlcnMsCiAgICAgICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdM
ZW51bUNvbnN0UG9pbnRlcjoKICAgICAgICAgICAgICAgICBXcml0ZUlubGluZURhdGE8R0x1aW50
PihkYXRhLCBoZWFkZXIpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRHTGNoYXJQb2ludGVyOgorICAgICAgICAgICAgICAgIFdyaXRlSW5saW5l
RGF0YTxHTGNoYXI+KGRhdGEsIGhlYWRlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIElORk8oKSA8PCAiVW5oYW5kbGVkIFBh
cmFtVHlwZTogIiA8PCBhbmdsZTo6UGFyYW1UeXBlVG9TdHJpbmcob3ZlcnJpZGVUeXBlKQorICAg
ICAgICAgICAgICAgICAgICAgICA8PCAiIGluICIgPDwgY2FsbC5uYW1lKCk7CiAgICAgICAgICAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC00NDEsNiArNDg0LDE4IEBAIHZvaWQgV3JpdGVDcHBSZXBsYXlGb3JDYWxsKGNvbnN0IENh
bGxDYXB0dXJlICZjYWxsLAogICAgICAgICBjYWxsT3V0IDw8ICJnU2hhZGVyUHJvZ3JhbU1hcFsi
IDw8IGlkIDw8ICJdID0gIjsKICAgICB9CiAKKyAgICBpZiAoY2FsbC5lbnRyeVBvaW50ID09IGds
OjpFbnRyeVBvaW50OjpNYXBCdWZmZXJSYW5nZSkKKyAgICB7CisgICAgICAgIEdMYml0ZmllbGQg
YWNjZXNzID0KKyAgICAgICAgICAgIGNhbGwucGFyYW1zLmdldFBhcmFtKCJhY2Nlc3MiLCBQYXJh
bVR5cGU6OlRHTGJpdGZpZWxkLCAzKS52YWx1ZS5HTGJpdGZpZWxkVmFsOworCisgICAgICAgIGlm
IChhY2Nlc3MgJiBHTF9NQVBfV1JJVEVfQklUKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBU
cmFjayB0aGUgcmV0dXJuZWQgcG9pbnRlciBzbyB3ZSB1cGRhdGUgaXRzIGRhdGEKKyAgICAgICAg
ICAgIGNhbGxPdXQgPDwgImdNYXBwZWRCdWZmZXJEYXRhID0gIjsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIGNhbGxPdXQgPDwgY2FsbC5uYW1lKCkgPDwgIigiOwogCiAgICAgYm9vbCBmaXJzdCA9
IHRydWU7CkBAIC00NzUsNyArNTMwLDcgQEAgdm9pZCBXcml0ZUNwcFJlcGxheUZvckNhbGwoY29u
c3QgQ2FsbENhcHR1cmUgJmNhbGwsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FsbE91dCA8PCBwYXJhbTsKKyAgICAgICAg
ICAgICAgICBXcml0ZVBhcmFtQ2FwdHVyZVJlcGxheShjYWxsT3V0LCBjYWxsLCBwYXJhbSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtNTkwLDMzICs2NDUsNzEg
QEAgc3RydWN0IFNhdmVGaWxlSGVscGVyCiAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGg7CiB9Owog
Ci12b2lkIFNhdmVCaW5hcnlEYXRhKGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCi0gICAgICAg
ICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSAmb3V0LAorc3RkOjpzdHJpbmcgR2V0QmluYXJ5RGF0
YUZpbGVQYXRoKGJvb2wgY29tcHJlc3Npb24sIGludCBjb250ZXh0SWQsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZjYXB0dXJlTGFiZWwpCit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gZm5hbWVTdHJlYW07
CisgICAgZm5hbWVTdHJlYW0gPDwgRm10Q2FwdHVyZVByZWZpeChjb250ZXh0SWQsIGNhcHR1cmVM
YWJlbCkgPDwgIi5hbmdsZWRhdGEiOworICAgIGlmIChjb21wcmVzc2lvbikKKyAgICB7CisgICAg
ICAgIGZuYW1lU3RyZWFtIDw8ICIuZ3oiOworICAgIH0KKyAgICByZXR1cm4gZm5hbWVTdHJlYW0u
c3RyKCk7Cit9CisKK3ZvaWQgU2F2ZUJpbmFyeURhdGEoYm9vbCBjb21wcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm91dERpciwKICAgICAgICAgICAgICAg
ICAgICAgaW50IGNvbnRleHRJZCwKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmNhcHR1cmVMYWJlbCwKLSAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVJbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3VmZml4LAogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiAmYmluYXJ5RGF0YSkKIHsKLSAgICBz
dGQ6OnN0cmluZyBiaW5hcnlEYXRhRmlsZU5hbWUgPQotICAgICAgICBHZXRDYXB0dXJlRmlsZU5h
bWUoY29udGV4dElkLCBjYXB0dXJlTGFiZWwsIGZyYW1lSW5kZXgsIHN1ZmZpeCk7CisgICAgc3Rk
OjpzdHJpbmcgYmluYXJ5RGF0YUZpbGVOYW1lID0gR2V0QmluYXJ5RGF0YUZpbGVQYXRoKGNvbXBy
ZXNzaW9uLCBjb250ZXh0SWQsIGNhcHR1cmVMYWJlbCk7CisgICAgc3RkOjpzdHJpbmcgZGF0YUZp
bGVwYXRoICAgICAgID0gb3V0RGlyICsgYmluYXJ5RGF0YUZpbGVOYW1lOworCisgICAgU2F2ZUZp
bGVIZWxwZXIgc2F2ZURhdGEoZGF0YUZpbGVwYXRoLCBzdGQ6Omlvczo6YmluYXJ5KTsKIAotICAg
IG91dCA8PCAiICAgIExvYWRCaW5hcnlEYXRhKFwiIiA8PCBiaW5hcnlEYXRhRmlsZU5hbWUgPDwg
IlwiLCAiCi0gICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oYmluYXJ5RGF0YS5zaXplKCkpIDw8
ICIpO1xuIjsKKyAgICBpZiAoY29tcHJlc3Npb24pCisgICAgeworICAgICAgICAvLyBTYXZlIGNv
bXByZXNzZWQgZGF0YS4KKyAgICAgICAgdUxvbmcgdW5jb21wcmVzc2VkU2l6ZSAgICAgICA9IHN0
YXRpY19jYXN0PHVMb25nPihiaW5hcnlEYXRhLnNpemUoKSk7CisgICAgICAgIHVMb25nIGV4cGVj
dGVkQ29tcHJlc3NlZFNpemUgPSB6bGliX2ludGVybmFsOjpHemlwRXhwZWN0ZWRDb21wcmVzc2Vk
U2l6ZSh1bmNvbXByZXNzZWRTaXplKTsKIAotICAgIHN0ZDo6c3RyaW5nIGRhdGFGaWxlcGF0aCA9
Ci0gICAgICAgIEdldENhcHR1cmVGaWxlUGF0aChvdXREaXIsIGNvbnRleHRJZCwgY2FwdHVyZUxh
YmVsLCBmcmFtZUluZGV4LCBzdWZmaXgpOworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBj
b21wcmVzc2VkRGF0YShleHBlY3RlZENvbXByZXNzZWRTaXplLCAwKTsKIAotICAgIFNhdmVGaWxl
SGVscGVyIHNhdmVEYXRhKGRhdGFGaWxlcGF0aCwgc3RkOjppb3M6OmJpbmFyeSk7Ci0gICAgc2F2
ZURhdGEub2ZzLndyaXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihiaW5hcnlEYXRh
LmRhdGEoKSksIGJpbmFyeURhdGEuc2l6ZSgpKTsKKyAgICAgICAgdUxvbmcgY29tcHJlc3NlZFNp
emUgPSBleHBlY3RlZENvbXByZXNzZWRTaXplOworICAgICAgICBpbnQgelJlc3VsdCA9IHpsaWJf
aW50ZXJuYWw6Okd6aXBDb21wcmVzc0hlbHBlcihjb21wcmVzc2VkRGF0YS5kYXRhKCksICZjb21w
cmVzc2VkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmluYXJ5RGF0YS5kYXRhKCksIHVuY29tcHJlc3NlZFNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
IG51bGxwdHIpOworCisgICAgICAgIGlmICh6UmVzdWx0ICE9IFpfT0spCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEZBVEFMKCkgPDwgIkVycm9yIGNvbXByZXNzaW5nIGJpbmFyeSBkYXRhOiAiIDw8
IHpSZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBzYXZlRGF0YS5vZnMud3JpdGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGNvbXByZXNzZWREYXRhLmRhdGEoKSksIGNvbXByZXNz
ZWRTaXplKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc2F2ZURhdGEub2ZzLndy
aXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihiaW5hcnlEYXRhLmRhdGEoKSksIGJp
bmFyeURhdGEuc2l6ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgV3JpdGVMb2FkQmluYXJ5RGF0YUNh
bGwoYm9vbCBjb21wcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpv
c3RyZWFtICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250ZXh0SWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZjYXB0dXJl
TGFiZWwpCit7CisgICAgc3RkOjpzdHJpbmcgYmluYXJ5RGF0YUZpbGVOYW1lID0gR2V0QmluYXJ5
RGF0YUZpbGVQYXRoKGNvbXByZXNzaW9uLCBjb250ZXh0SWQsIGNhcHR1cmVMYWJlbCk7CisgICAg
b3V0IDw8ICIgICAgTG9hZEJpbmFyeURhdGEoXCIiIDw8IGJpbmFyeURhdGFGaWxlTmFtZSA8PCAi
XCIpO1xuIjsKIH0KIAotdm9pZCBXcml0ZUNwcFJlcGxheShjb25zdCBzdGQ6OnN0cmluZyAmb3V0
RGlyLAordm9pZCBXcml0ZUNwcFJlcGxheShib29sIGNvbXByZXNzaW9uLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmb3V0RGlyLAogICAgICAgICAgICAgICAgICAgICBp
bnQgY29udGV4dElkLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmY2Fw
dHVyZUxhYmVsLAogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmcmFtZUluZGV4LAogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4gJmZyYW1lQ2Fs
bHMsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAm
c2V0dXBDYWxscykKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Q2FsbENh
cHR1cmU+ICZzZXR1cENhbGxzLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50
OF90PiAqYmluYXJ5RGF0YSkKIHsKICAgICBEYXRhQ291bnRlcnMgY291bnRlcnM7CiAKQEAgLTY0
MSwyMSArNzM0LDE2IEBAIHZvaWQgV3JpdGVDcHBSZXBsYXkoY29uc3Qgc3RkOjpzdHJpbmcgJm91
dERpciwKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogCiAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHNldHVwQ2FsbFN0cmVhbTsKLSAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gc2V0dXBCaW5h
cnlEYXRhOworCisgICAgICAgIFdyaXRlTG9hZEJpbmFyeURhdGFDYWxsKGNvbXByZXNzaW9uLCBz
ZXR1cENhbGxTdHJlYW0sIGNvbnRleHRJZCwgY2FwdHVyZUxhYmVsKTsKIAogICAgICAgICBmb3Ig
KGNvbnN0IENhbGxDYXB0dXJlICZjYWxsIDogc2V0dXBDYWxscykKICAgICAgICAgewogICAgICAg
ICAgICAgc2V0dXBDYWxsU3RyZWFtIDw8ICIgICAgIjsKLSAgICAgICAgICAgIFdyaXRlQ3BwUmVw
bGF5Rm9yQ2FsbChjYWxsLCAmY291bnRlcnMsIHNldHVwQ2FsbFN0cmVhbSwgaGVhZGVyLCAmc2V0
dXBCaW5hcnlEYXRhKTsKKyAgICAgICAgICAgIFdyaXRlQ3BwUmVwbGF5Rm9yQ2FsbChjYWxsLCAm
Y291bnRlcnMsIHNldHVwQ2FsbFN0cmVhbSwgaGVhZGVyLCBiaW5hcnlEYXRhKTsKICAgICAgICAg
ICAgIHNldHVwQ2FsbFN0cmVhbSA8PCAiO1xuIjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgh
c2V0dXBCaW5hcnlEYXRhLmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNhdmVCaW5h
cnlEYXRhKG91dERpciwgb3V0LCBjb250ZXh0SWQsIGNhcHR1cmVMYWJlbCwgZnJhbWVJbmRleCwg
Ii5zZXR1cC5hbmdsZWRhdGEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBCaW5h
cnlEYXRhKTsKLSAgICAgICAgfQotCiAgICAgICAgIG91dCA8PCBzZXR1cENhbGxTdHJlYW0uc3Ry
KCk7CiAKICAgICAgICAgb3V0IDw8ICJ9XG4iOwpAQCAtNjY2LDIwICs3NTQsMTQgQEAgdm9pZCBX
cml0ZUNwcFJlcGxheShjb25zdCBzdGQ6OnN0cmluZyAmb3V0RGlyLAogICAgIG91dCA8PCAie1xu
IjsKIAogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGNhbGxTdHJlYW07Ci0gICAgc3RkOjp2ZWN0b3I8
dWludDhfdD4gYmluYXJ5RGF0YTsKIAogICAgIGZvciAoY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwg
OiBmcmFtZUNhbGxzKQogICAgIHsKICAgICAgICAgY2FsbFN0cmVhbSA8PCAiICAgICI7Ci0gICAg
ICAgIFdyaXRlQ3BwUmVwbGF5Rm9yQ2FsbChjYWxsLCAmY291bnRlcnMsIGNhbGxTdHJlYW0sIGhl
YWRlciwgJmJpbmFyeURhdGEpOworICAgICAgICBXcml0ZUNwcFJlcGxheUZvckNhbGwoY2FsbCwg
JmNvdW50ZXJzLCBjYWxsU3RyZWFtLCBoZWFkZXIsIGJpbmFyeURhdGEpOwogICAgICAgICBjYWxs
U3RyZWFtIDw8ICI7XG4iOwogICAgIH0KIAotICAgIGlmICghYmluYXJ5RGF0YS5lbXB0eSgpKQot
ICAgIHsKLSAgICAgICAgU2F2ZUJpbmFyeURhdGEob3V0RGlyLCBvdXQsIGNvbnRleHRJZCwgY2Fw
dHVyZUxhYmVsLCBmcmFtZUluZGV4LCAiLmFuZ2xlZGF0YSIsIGJpbmFyeURhdGEpOwotICAgIH0K
LQogICAgIG91dCA8PCBjYWxsU3RyZWFtLnN0cigpOwogICAgIG91dCA8PCAifVxuIjsKIApAQCAt
NzAyLDcgKzc4NCw4IEBAIHZvaWQgV3JpdGVDcHBSZXBsYXkoY29uc3Qgc3RkOjpzdHJpbmcgJm91
dERpciwKICAgICB9CiB9CiAKLXZvaWQgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKGNvbnN0IHN0
ZDo6c3RyaW5nICZvdXREaXIsCit2b2lkIFdyaXRlQ3BwUmVwbGF5SW5kZXhGaWxlcyhib29sIGNv
bXByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJm91dERpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250ZXh0SWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmY2FwdHVy
ZUxhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhbWVTdGFy
dCwKQEAgLTcyNCwzNyArODA3LDY5IEBAIHZvaWQgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKGNv
bnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCiAgICAgaGVhZGVyIDw8ICIjaW5jbHVkZSA8Y3N0ZGlv
PlxuIjsKICAgICBoZWFkZXIgPDwgIiNpbmNsdWRlIDxjc3RyaW5nPlxuIjsKICAgICBoZWFkZXIg
PDwgIiNpbmNsdWRlIDxsaW1pdHM+XG4iOworICAgIGhlYWRlciA8PCAiI2luY2x1ZGUgPHZlY3Rv
cj5cbiI7CiAgICAgaGVhZGVyIDw8ICIjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD5cbiI7CiAgICAg
aGVhZGVyIDw8ICJcbiI7Ci0gICAgaGVhZGVyIDw8ICIvLyBSZXBsYXkgZnVuY3Rpb25zXG4iOwot
ICAgIGhlYWRlciA8PCAiXG4iOwotICAgIGhlYWRlciA8PCAidXNpbmcgUmVzb3VyY2VNYXAgPSBz
dGQ6OnVub3JkZXJlZF9tYXA8R0x1aW50LCBHTHVpbnQ+O1xuIjsKLSAgICBoZWFkZXIgPDwgIlxu
IjsKKwogICAgIGlmICghY2FwdHVyZUxhYmVsLmVtcHR5KCkpCiAgICAgewogICAgICAgICBoZWFk
ZXIgPDwgIm5hbWVzcGFjZSAiIDw8IGNhcHR1cmVMYWJlbCA8PCAiXG4iOwogICAgICAgICBoZWFk
ZXIgPDwgIntcbiI7CiAgICAgfQorICAgIGhlYWRlciA8PCAiLy8gUmVwbGF5IGZ1bmN0aW9uc1xu
IjsKKyAgICBoZWFkZXIgPDwgIlxuIjsKKyAgICBoZWFkZXIgPDwgIi8vIE1hcHMgZnJvbSA8Y2Fw
dHVyZWQgUHJvZ3JhbSBJRCwgY2FwdHVyZWQgbG9jYXRpb24+IHRvIHJ1bi10aW1lIGxvY2F0aW9u
LlxuIjsKKyAgICBoZWFkZXIKKyAgICAgICAgPDwgInVzaW5nIExvY2F0aW9uc01hcCA9IHN0ZDo6
dW5vcmRlcmVkX21hcDxHTHVpbnQsIHN0ZDo6dW5vcmRlcmVkX21hcDxHTGludCwgR0xpbnQ+Pjtc
biI7CisgICAgaGVhZGVyIDw8ICJleHRlcm4gTG9jYXRpb25zTWFwIGdVbmlmb3JtTG9jYXRpb25z
O1xuIjsKKyAgICBoZWFkZXIgPDwgImV4dGVybiBHTHVpbnQgZ0N1cnJlbnRQcm9ncmFtO1xuIjsK
KyAgICBoZWFkZXIgPDwgInZvaWQgVXBkYXRlVW5pZm9ybUxvY2F0aW9uKEdMdWludCBwcm9ncmFt
LCBjb25zdCBjaGFyICpuYW1lLCBHTGludCBsb2NhdGlvbik7XG4iOworICAgIGhlYWRlciA8PCAi
dm9pZCBEZWxldGVVbmlmb3JtTG9jYXRpb25zKEdMdWludCBwcm9ncmFtKTtcbiI7CisgICAgaGVh
ZGVyIDw8ICJ2b2lkIFVwZGF0ZUN1cnJlbnRQcm9ncmFtKEdMdWludCBwcm9ncmFtKTtcbiI7Cisg
ICAgaGVhZGVyIDw8ICJcbiI7CisgICAgaGVhZGVyIDw8ICIvLyBNYXBzIGZyb20gY2FwdHVyZWQg
UmVzb3VyY2UgSUQgdG8gcnVuLXRpbWUgUmVzb3VyY2UgSUQuXG4iOworICAgIGhlYWRlciA8PCAi
dXNpbmcgUmVzb3VyY2VNYXAgPSBzdGQ6OnVub3JkZXJlZF9tYXA8R0x1aW50LCBHTHVpbnQ+O1xu
IjsKKyAgICBoZWFkZXIgPDwgIlxuIjsKKyAgICBoZWFkZXIgPDwgIlxuIjsKICAgICBoZWFkZXIg
PDwgImNvbnN0ZXhwciB1aW50MzJfdCBrUmVwbGF5RnJhbWVTdGFydCA9ICIgPDwgZnJhbWVTdGFy
dCA8PCAiO1xuIjsKICAgICBoZWFkZXIgPDwgImNvbnN0ZXhwciB1aW50MzJfdCBrUmVwbGF5RnJh
bWVFbmQgPSAiIDw8IGZyYW1lRW5kIDw8ICI7XG4iOwogICAgIGhlYWRlciA8PCAiXG4iOwogICAg
IGhlYWRlciA8PCAidm9pZCBTZXR1cENvbnRleHQiIDw8IGNvbnRleHRJZCA8PCAiUmVwbGF5KCk7
XG4iOwogICAgIGhlYWRlciA8PCAidm9pZCBSZXBsYXlDb250ZXh0IiA8PCBjb250ZXh0SWQgPDwg
IkZyYW1lKHVpbnQzMl90IGZyYW1lSW5kZXgpO1xuIjsKICAgICBoZWFkZXIgPDwgIlxuIjsKKyAg
ICBoZWFkZXIgPDwgInVzaW5nIEZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2sgPSB2b2lkKCopKHZv
aWQgKnVzZXJEYXRhLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgIgorICAgICAgICAgICAgICAiZnJh
bWVidWZmZXIpO1xuIjsKKyAgICBoZWFkZXIgPDwgInZvaWQgU2V0RnJhbWVidWZmZXJDaGFuZ2VD
YWxsYmFjayh2b2lkICp1c2VyRGF0YSwgRnJhbWVidWZmZXJDaGFuZ2VDYWxsYmFjayAiCisgICAg
ICAgICAgICAgICJjYWxsYmFjayk7XG4iOworICAgIGhlYWRlciA8PCAidm9pZCBPbkZyYW1lYnVm
ZmVyQ2hhbmdlKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcik7XG4iOworICAgIGhl
YWRlciA8PCAiXG4iOwogICAgIGZvciAodWludDMyX3QgZnJhbWVJbmRleCA9IGZyYW1lU3RhcnQ7
IGZyYW1lSW5kZXggPCBmcmFtZUVuZDsgKytmcmFtZUluZGV4KQogICAgIHsKICAgICAgICAgaGVh
ZGVyIDw8ICJ2b2lkICIgPDwgRm10UmVwbGF5RnVuY3Rpb24oY29udGV4dElkLCBmcmFtZUluZGV4
KSA8PCAiO1xuIjsKICAgICB9CiAgICAgaGVhZGVyIDw8ICJcbiI7CisgICAgaGVhZGVyIDw8ICJj
b25zdGV4cHIgYm9vbCBrSXNCaW5hcnlEYXRhQ29tcHJlc3NlZCA9ICIgPDwgKGNvbXByZXNzaW9u
ID8gInRydWUiIDogImZhbHNlIikKKyAgICAgICAgICAgPDwgIjtcbiI7CisgICAgaGVhZGVyIDw8
ICJcbiI7CisgICAgaGVhZGVyIDw8ICJ1c2luZyBEZWNvbXByZXNzQ2FsbGJhY2sgPSB1aW50OF90
ICooKikoY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gJik7XG4iOworICAgIGhlYWRlciA8PCAi
dm9pZCBTZXRCaW5hcnlEYXRhRGVjb21wcmVzc0NhbGxiYWNrKERlY29tcHJlc3NDYWxsYmFjayBj
YWxsYmFjayk7XG4iOwogICAgIGhlYWRlciA8PCAidm9pZCBTZXRCaW5hcnlEYXRhRGlyKGNvbnN0
IGNoYXIgKmRhdGFEaXIpO1xuIjsKLSAgICBoZWFkZXIgPDwgInZvaWQgTG9hZEJpbmFyeURhdGEo
Y29uc3QgY2hhciAqZmlsZU5hbWUsIHNpemVfdCBzaXplKTtcbiI7CisgICAgaGVhZGVyIDw8ICJ2
b2lkIExvYWRCaW5hcnlEYXRhKGNvbnN0IGNoYXIgKmZpbGVOYW1lKTtcbiI7CiAgICAgaGVhZGVy
IDw8ICJcbiI7CiAgICAgaGVhZGVyIDw8ICIvLyBHbG9iYWwgc3RhdGVcbiI7CiAgICAgaGVhZGVy
IDw8ICJcbiI7CiAgICAgaGVhZGVyIDw8ICJleHRlcm4gdWludDhfdCAqZ0JpbmFyeURhdGE7XG4i
OworICAgIGhlYWRlciA8PCAiZXh0ZXJuIHZvaWQgKmdNYXBwZWRCdWZmZXJEYXRhO1xuIjsKIAog
ICAgIHNvdXJjZSA8PCAiI2luY2x1ZGUgXCIiIDw8IEZtdENhcHR1cmVQcmVmaXgoY29udGV4dElk
LCBjYXB0dXJlTGFiZWwpIDw8ICIuaFwiXG4iOwogICAgIHNvdXJjZSA8PCAiXG4iOworCisgICAg
aWYgKCFjYXB0dXJlTGFiZWwuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHNvdXJjZSA8PCAibmFt
ZXNwYWNlICIgPDwgY2FwdHVyZUxhYmVsIDw8ICJcbiI7CisgICAgICAgIHNvdXJjZSA8PCAie1xu
IjsKKyAgICB9CisKICAgICBzb3VyY2UgPDwgIm5hbWVzcGFjZVxuIjsKICAgICBzb3VyY2UgPDwg
IntcbiI7CiAgICAgc291cmNlIDw8ICJ2b2lkIFVwZGF0ZVJlc291cmNlTWFwKFJlc291cmNlTWFw
ICpyZXNvdXJjZU1hcCwgR0x1aW50IGlkLCBHTHNpemVpICIKQEAgLTc2MywyMSArODc4LDM1IEBA
IHZvaWQgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIs
CiAgICAgc291cmNlIDw8ICIgICAgR0x1aW50IHJldHVybmVkSUQ7XG4iOwogICAgIHN0ZDo6c3Ry
aW5nIGNhcHR1cmVOYW1lc3BhY2UgPSAhY2FwdHVyZUxhYmVsLmVtcHR5KCkgPyBjYXB0dXJlTGFi
ZWwgKyAiOjoiIDogIiI7CiAgICAgc291cmNlIDw8ICIgICAgbWVtY3B5KCZyZXR1cm5lZElELCAm
IiA8PCBjYXB0dXJlTmFtZXNwYWNlCi0gICAgICAgICAgIDw8ICJnUmVhZEJ1ZmZlcltyZWFkQnVm
ZmVyT2Zmc2V0XSwgc2l6ZW9mKEdMdWludCkpO1xuICI7CisgICAgICAgICAgIDw8ICJnUmVhZEJ1
ZmZlcltyZWFkQnVmZmVyT2Zmc2V0XSwgc2l6ZW9mKEdMdWludCkpO1xuIjsKICAgICBzb3VyY2Ug
PDwgIiAgICAoKnJlc291cmNlTWFwKVtpZF0gPSByZXR1cm5lZElEO1xuIjsKICAgICBzb3VyY2Ug
PDwgIn1cbiI7CiAgICAgc291cmNlIDw8ICJcbiI7CisgICAgc291cmNlIDw8ICJEZWNvbXByZXNz
Q2FsbGJhY2sgZ0RlY29tcHJlc3NDYWxsYmFjaztcbiI7CiAgICAgc291cmNlIDw8ICJjb25zdCBj
aGFyICpnQmluYXJ5RGF0YURpciA9IFwiLlwiO1xuIjsKKyAgICBzb3VyY2UgPDwgIkZyYW1lYnVm
ZmVyQ2hhbmdlQ2FsbGJhY2sgZ0ZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2s7XG4iOworICAgIHNv
dXJjZSA8PCAidm9pZCAqZ0ZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2tVc2VyRGF0YTtcbiI7CiAg
ICAgc291cmNlIDw8ICJ9ICAvLyBuYW1lc3BhY2VcbiI7CiAgICAgc291cmNlIDw8ICJcbiI7Ci0K
LSAgICBpZiAoIWNhcHR1cmVMYWJlbC5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgc291cmNlIDw8
ICJuYW1lc3BhY2UgIiA8PCBjYXB0dXJlTGFiZWwgPDwgIlxuIjsKLSAgICAgICAgc291cmNlIDw8
ICJ7XG4iOwotICAgIH0KKyAgICBzb3VyY2UgPDwgIkxvY2F0aW9uc01hcCBnVW5pZm9ybUxvY2F0
aW9ucztcbiI7CisgICAgc291cmNlIDw8ICJHTHVpbnQgZ0N1cnJlbnRQcm9ncmFtID0gMDtcbiI7
CisgICAgc291cmNlIDw8ICJcbiI7CisgICAgc291cmNlIDw8ICJ2b2lkIFVwZGF0ZVVuaWZvcm1M
b2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciAqbmFtZSwgR0xpbnQgbG9jYXRpb24p
XG4iOworICAgIHNvdXJjZSA8PCAie1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICBnVW5pZm9ybUxv
Y2F0aW9uc1twcm9ncmFtXVtsb2NhdGlvbl0gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCBuYW1lKTtcbiI7CisgICAgc291cmNlIDw8ICJ9XG4iOworICAgIHNvdXJjZSA8PCAidm9pZCBE
ZWxldGVVbmlmb3JtTG9jYXRpb25zKEdMdWludCBwcm9ncmFtKVxuIjsKKyAgICBzb3VyY2UgPDwg
IntcbiI7CisgICAgc291cmNlIDw8ICIgICAgZ1VuaWZvcm1Mb2NhdGlvbnMuZXJhc2UocHJvZ3Jh
bSk7XG4iOworICAgIHNvdXJjZSA8PCAifVxuIjsKKyAgICBzb3VyY2UgPDwgInZvaWQgVXBkYXRl
Q3VycmVudFByb2dyYW0oR0x1aW50IHByb2dyYW0pXG4iOworICAgIHNvdXJjZSA8PCAie1xuIjsK
KyAgICBzb3VyY2UgPDwgIiAgICBnQ3VycmVudFByb2dyYW0gPSBwcm9ncmFtO1xuIjsKKyAgICBz
b3VyY2UgPDwgIn1cbiI7CisgICAgc291cmNlIDw8ICJcbiI7CiAKICAgICBzb3VyY2UgPDwgInVp
bnQ4X3QgKmdCaW5hcnlEYXRhID0gbnVsbHB0cjtcbiI7CisgICAgc291cmNlIDw8ICJ2b2lkKiBn
TWFwcGVkQnVmZmVyRGF0YSA9IG51bGxwdHI7XG4iOwogCiAgICAgaWYgKHJlYWRCdWZmZXJTaXpl
ID4gMCkKICAgICB7CkBAIC03OTMsOSArOTIyLDcgQEAgdm9pZCBXcml0ZUNwcFJlcGxheUluZGV4
RmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgJm91dERpciwKICAgICB9CiAgICAgZm9yIChSZXNvdXJj
ZUlEVHlwZSByZXNvdXJjZVR5cGUgOiBBbGxFbnVtczxSZXNvdXJjZUlEVHlwZT4oKSkKICAgICB7
Ci0gICAgICAgIGlmICghaGFzUmVzb3VyY2VUeXBlW3Jlc291cmNlVHlwZV0pCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQorICAgICAgICAvLyBUT0RPOiBPbmx5IGVtaXQgcmVzb3VyY2VzIG5lZWRl
ZCBieSB0aGUgZnJhbWVzIChhbmdsZWJ1Zy5jb20vNDIyMykKICAgICAgICAgY29uc3QgY2hhciAq
bmFtZSA9IEdldFJlc291cmNlSURUeXBlTmFtZShyZXNvdXJjZVR5cGUpOwogICAgICAgICBoZWFk
ZXIgPDwgImV4dGVybiBSZXNvdXJjZU1hcCBnIiA8PCBuYW1lIDw8ICJNYXA7XG4iOwogICAgICAg
ICBzb3VyY2UgPDwgIlJlc291cmNlTWFwIGciIDw8IG5hbWUgPDwgIk1hcDtcbiI7CkBAIC04MDMs
NiArOTMwLDIxIEBAIHZvaWQgV3JpdGVDcHBSZXBsYXlJbmRleEZpbGVzKGNvbnN0IHN0ZDo6c3Ry
aW5nICZvdXREaXIsCiAKICAgICBoZWFkZXIgPDwgIlxuIjsKIAorICAgIHNvdXJjZSA8PCAiXG4i
OworICAgIHNvdXJjZSA8PCAidm9pZCBTZXRGcmFtZWJ1ZmZlckNoYW5nZUNhbGxiYWNrKHZvaWQg
KnVzZXJEYXRhLCBGcmFtZWJ1ZmZlckNoYW5nZUNhbGxiYWNrICIKKyAgICAgICAgICAgICAgImNh
bGxiYWNrKVxuIjsKKyAgICBzb3VyY2UgPDwgIntcbiI7CisgICAgc291cmNlIDw8ICIgICAgZ0Zy
YW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2tVc2VyRGF0YSA9IHVzZXJEYXRhO1xuIjsKKyAgICBzb3Vy
Y2UgPDwgIiAgICBnRnJhbWVidWZmZXJDaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrO1xuIjsKKyAg
ICBzb3VyY2UgPDwgIn1cbiI7CisgICAgc291cmNlIDw8ICJcbiI7CisgICAgc291cmNlIDw8ICJ2
b2lkIE9uRnJhbWVidWZmZXJDaGFuZ2UoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVy
KVxuIjsKKyAgICBzb3VyY2UgPDwgIntcbiI7CisgICAgc291cmNlIDw8ICIgICAgaWYgKGdGcmFt
ZWJ1ZmZlckNoYW5nZUNhbGxiYWNrKVxuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAgZ0ZyYW1l
YnVmZmVyQ2hhbmdlQ2FsbGJhY2soZ0ZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2tVc2VyRGF0YSwg
dGFyZ2V0LCAiCisgICAgICAgICAgICAgICJmcmFtZWJ1ZmZlcik7XG4iOworICAgIHNvdXJjZSA8
PCAifVxuIjsKKwogICAgIHNvdXJjZSA8PCAiXG4iOwogICAgIHNvdXJjZSA8PCAidm9pZCBSZXBs
YXlDb250ZXh0IiA8PCBjb250ZXh0SWQgPDwgIkZyYW1lKHVpbnQzMl90IGZyYW1lSW5kZXgpXG4i
OwogICAgIHNvdXJjZSA8PCAie1xuIjsKQEAgLTgxOSwyMiArOTYxLDU0IEBAIHZvaWQgV3JpdGVD
cHBSZXBsYXlJbmRleEZpbGVzKGNvbnN0IHN0ZDo6c3RyaW5nICZvdXREaXIsCiAgICAgc291cmNl
IDw8ICIgICAgfVxuIjsKICAgICBzb3VyY2UgPDwgIn1cbiI7CiAgICAgc291cmNlIDw8ICJcbiI7
CisgICAgc291cmNlIDw8ICJ2b2lkIFNldEJpbmFyeURhdGFEZWNvbXByZXNzQ2FsbGJhY2soRGVj
b21wcmVzc0NhbGxiYWNrIGNhbGxiYWNrKVxuIjsKKyAgICBzb3VyY2UgPDwgIntcbiI7CisgICAg
c291cmNlIDw8ICIgICAgZ0RlY29tcHJlc3NDYWxsYmFjayA9IGNhbGxiYWNrO1xuIjsKKyAgICBz
b3VyY2UgPDwgIn1cbiI7CisgICAgc291cmNlIDw8ICJcbiI7CiAgICAgc291cmNlIDw8ICJ2b2lk
IFNldEJpbmFyeURhdGFEaXIoY29uc3QgY2hhciAqZGF0YURpcilcbiI7CiAgICAgc291cmNlIDw8
ICJ7XG4iOwogICAgIHNvdXJjZSA8PCAiICAgIGdCaW5hcnlEYXRhRGlyID0gZGF0YURpcjtcbiI7
CiAgICAgc291cmNlIDw8ICJ9XG4iOwogICAgIHNvdXJjZSA8PCAiXG4iOwotICAgIHNvdXJjZSA8
PCAidm9pZCBMb2FkQmluYXJ5RGF0YShjb25zdCBjaGFyICpmaWxlTmFtZSwgc2l6ZV90IHNpemUp
XG4iOworICAgIHNvdXJjZSA8PCAidm9pZCBMb2FkQmluYXJ5RGF0YShjb25zdCBjaGFyICpmaWxl
TmFtZSlcbiI7CiAgICAgc291cmNlIDw8ICJ7XG4iOwogICAgIHNvdXJjZSA8PCAiICAgIGlmIChn
QmluYXJ5RGF0YSAhPSBudWxscHRyKVxuIjsKICAgICBzb3VyY2UgPDwgIiAgICB7XG4iOwogICAg
IHNvdXJjZSA8PCAiICAgICAgICBkZWxldGUgW10gZ0JpbmFyeURhdGE7XG4iOwogICAgIHNvdXJj
ZSA8PCAiICAgIH1cbiI7Ci0gICAgc291cmNlIDw8ICIgICAgZ0JpbmFyeURhdGEgPSBuZXcgdWlu
dDhfdFtzaXplXTtcbiI7CiAgICAgc291cmNlIDw8ICIgICAgY2hhciBwYXRoQnVmZmVyWzEwMDBd
ID0ge307XG4iOwogICAgIHNvdXJjZSA8PCAiICAgIHNwcmludGYocGF0aEJ1ZmZlciwgXCIlcy8l
c1wiLCBnQmluYXJ5RGF0YURpciwgZmlsZU5hbWUpO1xuIjsKICAgICBzb3VyY2UgPDwgIiAgICBG
SUxFICpmcCA9IGZvcGVuKHBhdGhCdWZmZXIsIFwicmJcIik7XG4iOwotICAgIHNvdXJjZSA8PCAi
ICAgICh2b2lkKWZyZWFkKGdCaW5hcnlEYXRhLCAxLCBzaXplLCBmcCk7XG4iOworICAgIHNvdXJj
ZSA8PCAiICAgIGlmIChmcCA9PSAwKVxuIjsKKyAgICBzb3VyY2UgPDwgIiAgICB7XG4iOworICAg
IHNvdXJjZSA8PCAiICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXCJFcnJvciBsb2FkaW5nIGJpbmFy
eSBkYXRhIGZpbGU6ICVzXFxuXCIsIGZpbGVOYW1lKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAg
ICAgIGV4aXQoMSk7XG4iOworICAgIHNvdXJjZSA8PCAiICAgIH1cbiI7CisgICAgc291cmNlIDw8
ICIgICAgZnNlZWsoZnAsIDAsIFNFRUtfRU5EKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAgbG9u
ZyBzaXplID0gZnRlbGwoZnApO1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICBmc2VlayhmcCwgMCwg
U0VFS19TRVQpO1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICBpZiAoZ0RlY29tcHJlc3NDYWxsYmFj
aylcbiI7CisgICAgc291cmNlIDw8ICIgICAge1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAg
aWYgKCFzdHJzdHIoZmlsZU5hbWUsIFwiLmd6XCIpKVxuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAg
ICAge1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCBcIkZp
bGVuYW1lIGRvZXMgbm90IGVuZCBpbiAuZ3pcIik7XG4iOworICAgIHNvdXJjZSA8PCAiICAgICAg
ICAgICAgZXhpdCgxKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAgICAgIH1cbiI7CisgICAgc291
cmNlIDw8ICIgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGNvbXByZXNzZWREYXRhKHNpemUp
O1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAgKHZvaWQpZnJlYWQoY29tcHJlc3NlZERhdGEu
ZGF0YSgpLCAxLCBzaXplLCBmcCk7XG4iOworICAgIHNvdXJjZSA8PCAiICAgICAgICBnQmluYXJ5
RGF0YSA9IGdEZWNvbXByZXNzQ2FsbGJhY2soY29tcHJlc3NlZERhdGEpO1xuIjsKKyAgICBzb3Vy
Y2UgPDwgIiAgICB9XG4iOworICAgIHNvdXJjZSA8PCAiICAgIGVsc2VcbiI7CisgICAgc291cmNl
IDw8ICIgICAge1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAgaWYgKCFzdHJzdHIoZmlsZU5h
bWUsIFwiLmFuZ2xlZGF0YVwiKSlcbiI7CisgICAgc291cmNlIDw8ICIgICAgICAgIHtcbiI7Cisg
ICAgc291cmNlIDw8ICIgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgXCJGaWxlbmFtZSBkb2Vz
IG5vdCBlbmQgaW4gLmFuZ2xlZGF0YVwiKTtcbiI7CisgICAgc291cmNlIDw8ICIgICAgICAgICAg
ICBleGl0KDEpO1xuIjsKKyAgICBzb3VyY2UgPDwgIiAgICAgICAgfVxuIjsKKyAgICBzb3VyY2Ug
PDwgIiAgICAgICAgZ0JpbmFyeURhdGEgPSBuZXcgdWludDhfdFtzaXplXTtcbiI7CisgICAgc291
cmNlIDw8ICIgICAgICAgICh2b2lkKWZyZWFkKGdCaW5hcnlEYXRhLCAxLCBzaXplLCBmcCk7XG4i
OworICAgIHNvdXJjZSA8PCAiICAgIH1cbiI7CiAgICAgc291cmNlIDw8ICIgICAgZmNsb3NlKGZw
KTtcbiI7CiAgICAgc291cmNlIDw8ICJ9XG4iOwogCkBAIC04NDcsMTQgKzEwMjEsMjEgQEAgdm9p
ZCBXcml0ZUNwcFJlcGxheUluZGV4RmlsZXMoY29uc3Qgc3RkOjpzdHJpbmcgJm91dERpciwKICAg
ICAgICAgc291cmNlIDw8ICJ2b2lkIFVwZGF0ZUNsaWVudEFycmF5UG9pbnRlcihpbnQgYXJyYXlJ
bmRleCwgY29uc3Qgdm9pZCAqZGF0YSwgdWludDY0X3Qgc2l6ZSkiCiAgICAgICAgICAgICAgICA8
PCAiXG4iOwogICAgICAgICBzb3VyY2UgPDwgIntcbiI7Ci0gICAgICAgIHNvdXJjZSA8PCAiICAg
IG1lbWNweShnQ2xpZW50QXJyYXlzW2FycmF5SW5kZXhdLCBkYXRhLCBzaXplKTtcbiI7CisgICAg
ICAgIHNvdXJjZSA8PCAiICAgIG1lbWNweShnQ2xpZW50QXJyYXlzW2FycmF5SW5kZXhdLCBkYXRh
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTtcbiI7CiAgICAgICAgIHNvdXJjZSA8PCAifVxu
IjsKICAgICB9CiAKKyAgICBoZWFkZXIgPDwgInZvaWQgVXBkYXRlQ2xpZW50QnVmZmVyRGF0YShj
b25zdCB2b2lkICpzb3VyY2UsIEdMc2l6ZWkgc2l6ZSk7XG4iOworICAgIHNvdXJjZSA8PCAiXG4i
OworICAgIHNvdXJjZSA8PCAidm9pZCBVcGRhdGVDbGllbnRCdWZmZXJEYXRhKGNvbnN0IHZvaWQg
KnNvdXJjZSwgR0xzaXplaSBzaXplKSI7CisgICAgc291cmNlIDw8ICJcbiI7CisgICAgc291cmNl
IDw8ICJ7XG4iOworICAgIHNvdXJjZSA8PCAiICAgIG1lbWNweShnTWFwcGVkQnVmZmVyRGF0YSwg
c291cmNlLCBzaXplKTtcbiI7CisgICAgc291cmNlIDw8ICJ9XG4iOworCiAgICAgZm9yIChSZXNv
dXJjZUlEVHlwZSByZXNvdXJjZVR5cGUgOiBBbGxFbnVtczxSZXNvdXJjZUlEVHlwZT4oKSkKICAg
ICB7Ci0gICAgICAgIGlmICghaGFzUmVzb3VyY2VUeXBlW3Jlc291cmNlVHlwZV0pCi0gICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gVE9ETzogT25seSBlbWl0IHJlc291cmNlcyBuZWVk
ZWQgYnkgdGhlIGZyYW1lcyAoYW5nbGVidWcuY29tLzQyMjMpCiAgICAgICAgIGNvbnN0IGNoYXIg
Km5hbWUgPSBHZXRSZXNvdXJjZUlEVHlwZU5hbWUocmVzb3VyY2VUeXBlKTsKICAgICAgICAgaGVh
ZGVyIDw8ICJ2b2lkIFVwZGF0ZSIgPDwgbmFtZSA8PCAiSUQoR0x1aW50IGlkLCBHTHNpemVpIHJl
YWRCdWZmZXJPZmZzZXQpO1xuIjsKIApAQCAtOTQ4LDYgKzExMjksNjYgQEAgdm9pZCBDYXB0dXJl
VXBkYXRlUmVzb3VyY2VJRHMoY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCiAgICAgfQogfQogCit2
b2lkIENhcHR1cmVVcGRhdGVVbmlmb3JtTG9jYXRpb25zKGNvbnN0IGdsOjpQcm9ncmFtICpwcm9n
cmFtLCBzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4gKmNhbGxzT3V0KQoreworICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3JtPiAmdW5pZm9ybXMgICAgID0gcHJvZ3JhbS0+Z2V0
U3RhdGUoKS5nZXRVbmlmb3JtcygpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpWYXJpYWJs
ZUxvY2F0aW9uPiAmbG9jYXRpb25zID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9ucygpOwor
CisgICAgZm9yIChHTGludCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9uIDwgc3RhdGljX2Nhc3Q8R0xp
bnQ+KGxvY2F0aW9ucy5zaXplKCkpOyArK2xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgY29uc3Qg
Z2w6OlZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uVmFyID0gbG9jYXRpb25zW2xvY2F0aW9uXTsK
KyAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJnVuaWZvcm0gICAgICAgID0gdW5pZm9y
bXNbbG9jYXRpb25WYXIuaW5kZXhdOworCisgICAgICAgIFBhcmFtQnVmZmVyIHBhcmFtczsKKyAg
ICAgICAgcGFyYW1zLmFkZFZhbHVlUGFyYW0oInByb2dyYW0iLCBQYXJhbVR5cGU6OlRTaGFkZXJQ
cm9ncmFtSUQsIHByb2dyYW0tPmlkKCkpOworCisgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSB1
bmlmb3JtLm5hbWU7CisKKyAgICAgICAgaWYgKHVuaWZvcm0uaXNBcnJheSgpKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobG9jYXRpb25WYXIuYXJyYXlJbmRleCA+IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gTm9uLXNlcXVlbnRpYWwgYXJyYXkgdW5pZm9ybSBsb2Nh
dGlvbnMgYXJlIG5vdCBjdXJyZW50bHkgaGFuZGxlZC4KKyAgICAgICAgICAgICAgICAvLyBJbiBw
cmFjdGljZSBhcnJheSBsb2NhdGlvbnMgc2hvdWxkbid0IGV2ZXIgYmUgbm9uLXNlcXVlbnRpYWwu
CisgICAgICAgICAgICAgICAgQVNTRVJUKHVuaWZvcm0ubG9jYXRpb24gPT0gLTEgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPT0gdW5pZm9ybS5sb2NhdGlvbiArIHN0YXRpY19j
YXN0PGludD4obG9jYXRpb25WYXIuYXJyYXlJbmRleCkpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodW5pZm9ybS5pc0FycmF5T2ZB
cnJheXMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5hbWUgPSBnbDo6U3RyaXBMYXN0QXJyYXlJ
bmRleChuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIFBhcmFtQ2FwdHVyZSBuYW1lUGFyYW0o
Im5hbWUiLCBQYXJhbVR5cGU6OlRHTGNoYXJDb25zdFBvaW50ZXIpOworICAgICAgICBDYXB0dXJl
U3RyaW5nKG5hbWUuY19zdHIoKSwgJm5hbWVQYXJhbSk7CisgICAgICAgIHBhcmFtcy5hZGRQYXJh
bShzdGQ6Om1vdmUobmFtZVBhcmFtKSk7CisKKyAgICAgICAgcGFyYW1zLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICAgICAgY2FsbHNP
dXQtPmVtcGxhY2VfYmFjaygiVXBkYXRlVW5pZm9ybUxvY2F0aW9uIiwgc3RkOjptb3ZlKHBhcmFt
cykpOworICAgIH0KK30KKwordm9pZCBDYXB0dXJlRGVsZXRlVW5pZm9ybUxvY2F0aW9ucyhnbDo6
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAqY2FsbHNP
dXQpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1zOworICAgIHBhcmFtcy5hZGRWYWx1ZVBhcmFt
KCJwcm9ncmFtIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtKTsKKyAgICBj
YWxsc091dC0+ZW1wbGFjZV9iYWNrKCJEZWxldGVVbmlmb3JtTG9jYXRpb25zIiwgc3RkOjptb3Zl
KHBhcmFtcykpOworfQorCit2b2lkIENhcHR1cmVPbkZyYW1lYnVmZmVyQ2hhbmdlKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlcklE
IGZyYW1lYnVmZmVySUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPENhbGxDYXB0dXJlPiAqY2FsbHNPdXQpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1zOwor
ICAgIHBhcmFtcy5hZGRWYWx1ZVBhcmFtKCJ0YXJnZXQiLCBQYXJhbVR5cGU6OlRHTGVudW0sIHRh
cmdldCk7CisgICAgcGFyYW1zLmFkZFZhbHVlUGFyYW0oImZyYW1lYnVmZmVyIiwgUGFyYW1UeXBl
OjpURnJhbWVidWZmZXJJRCwgZnJhbWVidWZmZXJJRCk7CisgICAgY2FsbHNPdXQtPmVtcGxhY2Vf
YmFjaygiT25GcmFtZWJ1ZmZlckNoYW5nZSIsIHN0ZDo6bW92ZShwYXJhbXMpKTsKK30KKwogdm9p
ZCBNYXliZUNhcHR1cmVVcGRhdGVSZXNvdXJjZUlEcyhzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4g
KmNhbGxzT3V0KQogewogICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsID0gY2FsbHNPdXQtPmJh
Y2soKTsKQEAgLTk3OSwxMiArMTIyMCw2IEBAIHZvaWQgTWF5YmVDYXB0dXJlVXBkYXRlUmVzb3Vy
Y2VJRHMoc3RkOjp2ZWN0b3I8Q2FsbENhcHR1cmU+ICpjYWxsc091dCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6R2VuUGF0aHND
SFJPTUlVTToKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogSGFuZGxl
IHBhdGggSURzLiBodHRwOi8vYW5nbGVidWcuY29tLzM2NjIKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0KICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6R2VuUHJvZ3JhbVBpcGVs
aW5lczoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgUGFyYW1DYXB0dXJlICZwaXBlbGlu
ZXMgPQpAQCAtMTA1Nyw2ICsxMjkyLDE4IEBAIHZvaWQgTWF5YmVDYXB0dXJlVXBkYXRlUmVzb3Vy
Y2VJRHMoc3RkOjp2ZWN0b3I8Q2FsbENhcHR1cmU+ICpjYWxsc091dCkKICAgICB9CiB9CiAKK3Zv
aWQgQ2FwdHVyZVVwZGF0ZUN1cnJlbnRQcm9ncmFtKGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLCBz
dGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4gKmNhbGxzT3V0KQoreworICAgIGNvbnN0IFBhcmFtQ2Fw
dHVyZSAmcGFyYW0gPQorICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCk7CisgICAgZ2w6OlNoYWRlclByb2dy
YW1JRCBwcm9ncmFtSUQgPSBwYXJhbS52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWw7CisKKyAgICBQ
YXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJw
cm9ncmFtIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtSUQpOworCisgICAg
Y2FsbHNPdXQtPmVtcGxhY2VfYmFjaygiVXBkYXRlQ3VycmVudFByb2dyYW0iLCBzdGQ6Om1vdmUo
cGFyYW1CdWZmZXIpKTsKK30KKwogYm9vbCBJc0RlZmF1bHRDdXJyZW50VmFsdWUoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZSkKIHsKICAgICBpZiAo
Y3VycmVudFZhbHVlLlR5cGUgIT0gZ2w6OlZlcnRleEF0dHJpYlR5cGU6OkZsb2F0KQpAQCAtMTA2
NywxMCArMTMxNCwxMDMgQEAgYm9vbCBJc0RlZmF1bHRDdXJyZW50VmFsdWUoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZSkKICAgICAgICAgICAgY3Vy
cmVudFZhbHVlLlZhbHVlcy5GbG9hdFZhbHVlc1syXSA9PSAwLjBmICYmIGN1cnJlbnRWYWx1ZS5W
YWx1ZXMuRmxvYXRWYWx1ZXNbM10gPT0gMS4wZjsKIH0KIAorYm9vbCBJc1F1ZXJ5QWN0aXZlKGNv
bnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSwgZ2w6OlF1ZXJ5SUQgJnF1ZXJ5SUQpCit7CisgICAgY29u
c3QgZ2w6OkFjdGl2ZVF1ZXJ5TWFwICZhY3RpdmVRdWVyaWVzID0gZ2xTdGF0ZS5nZXRBY3RpdmVR
dWVyaWVzRm9yQ2FwdHVyZSgpOworICAgIGZvciAoY29uc3QgYXV0byAmYWN0aXZlUXVlcnlJdGVy
IDogYWN0aXZlUXVlcmllcykKKyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpRdWVyeSAqYWN0aXZl
UXVlcnkgPSBhY3RpdmVRdWVyeUl0ZXIuZ2V0KCk7CisgICAgICAgIGlmIChhY3RpdmVRdWVyeSAm
JiBhY3RpdmVRdWVyeS0+aWQoKSA9PSBxdWVyeUlEKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBDYXB0dXJlKHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAqc2V0dXBDYWxscywgQ2FsbENh
cHR1cmUgJiZjYWxsKQoreworICAgIHNldHVwQ2FsbHMtPmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUo
Y2FsbCkpOworfQorCit2b2lkIENhcHR1cmVGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoc3RkOjp2ZWN0
b3I8Q2FsbENhcHR1cmU+ICpzZXR1cENhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTdGF0ZSAmcmVwbGF5U3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAmYXR0YWNobWVu
dCkKK3sKKyAgICBHTHVpbnQgcmVzb3VyY2VJRCA9IGF0dGFjaG1lbnQuZ2V0UmVzb3VyY2UoKS0+
Z2V0SWQoKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IExheWVyIGF0dGFjaG1lbnRzLiBodHRw
Oi8vYW5nbGVidWcuY29tLzM2NjIKKyAgICBpZiAoYXR0YWNobWVudC50eXBlKCkgPT0gR0xfVEVY
VFVSRSkKKyAgICB7CisgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gYXR0YWNobWVudC5n
ZXRUZXh0dXJlSW1hZ2VJbmRleCgpOworCisgICAgICAgIENhcHR1cmUoc2V0dXBDYWxscywgQ2Fw
dHVyZUZyYW1lYnVmZmVyVGV4dHVyZTJEKHJlcGxheVN0YXRlLCB0cnVlLCBHTF9GUkFNRUJVRkZF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXR0YWNobWVudC5nZXRCaW5kaW5nKCksIGluZGV4LmdldFRhcmdldCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cmVzb3VyY2VJ
RH0sIGluZGV4LmdldExldmVsSW5kZXgoKSkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBBU1NFUlQoYXR0YWNobWVudC50eXBlKCkgPT0gR0xfUkVOREVSQlVGRkVSKTsKKyAgICAg
ICAgQ2FwdHVyZShzZXR1cENhbGxzLCBDYXB0dXJlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIocmVw
bGF5U3RhdGUsIHRydWUsIEdMX0ZSQU1FQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LmdldEJpbmRpbmco
KSwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7cmVzb3VyY2VJRH0pKTsKKyAgICB9Cit9CisKK3ZvaWQg
Q2FwdHVyZVZlcnRleEFycmF5RGF0YShzdGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4gKnNldHVwQ2Fs
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2
ZXJ0ZXhBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U3RhdGUgKnJlcGxh
eVN0YXRlKQoreworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJ1dGU+ICZ2
ZXJ0ZXhBdHRyaWJzID0gdmVydGV4QXJyYXktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBj
b25zdCBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4QmluZGluZz4gJnZlcnRleEJpbmRpbmdzICA9IHZl
cnRleEFycmF5LT5nZXRWZXJ0ZXhCaW5kaW5ncygpOworCisgICAgZm9yIChHTHVpbnQgYXR0cmli
SW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7ICsrYXR0cmli
SW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlIGRlZmF1bHRB
dHRyaWIoYXR0cmliSW5kZXgpOworICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyBkZWZh
dWx0QmluZGluZzsKKworICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIg
PSB2ZXJ0ZXhBdHRyaWJzW2F0dHJpYkluZGV4XTsKKyAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJp
bmRpbmcgJmJpbmRpbmcgID0gdmVydGV4QmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CisK
KyAgICAgICAgaWYgKGF0dHJpYi5lbmFibGVkICE9IGRlZmF1bHRBdHRyaWIuZW5hYmxlZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQ2FwdHVyZShzZXR1cENhbGxzLCBDYXB0dXJlRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoKnJlcGxheVN0YXRlLCBmYWxzZSwgYXR0cmliSW5kZXgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChhdHRyaWIuZm9ybWF0ICE9IGRlZmF1bHRBdHRyaWIuZm9ybWF0
IHx8IGF0dHJpYi5wb2ludGVyICE9IGRlZmF1bHRBdHRyaWIucG9pbnRlciB8fAorICAgICAgICAg
ICAgYmluZGluZy5nZXRTdHJpZGUoKSAhPSBkZWZhdWx0QmluZGluZy5nZXRTdHJpZGUoKSB8fAor
ICAgICAgICAgICAgYmluZGluZy5nZXRCdWZmZXIoKS5nZXQoKSAhPSBudWxscHRyKQorICAgICAg
ICB7CisgICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBiaW5kaW5nLmdldEJ1ZmZlcigp
LmdldCgpOworCisgICAgICAgICAgICBpZiAoYnVmZmVyICE9IHJlcGxheVN0YXRlLT5nZXRBcnJh
eUJ1ZmZlcigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlcGxheVN0YXRlLT5z
ZXRCdWZmZXJCaW5kaW5nKGNvbnRleHQsIGdsOjpCdWZmZXJCaW5kaW5nOjpBcnJheSwgYnVmZmVy
KTsKKyAgICAgICAgICAgICAgICBDYXB0dXJlKHNldHVwQ2FsbHMsIENhcHR1cmVCaW5kQnVmZmVy
KCpyZXBsYXlTdGF0ZSwgdHJ1ZSwgZ2w6OkJ1ZmZlckJpbmRpbmc6OkFycmF5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5pZCgp
KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENhcHR1cmUoc2V0dXBDYWxscywgQ2Fw
dHVyZVZlcnRleEF0dHJpYlBvaW50ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqcmVwbGF5U3RhdGUsIHRydWUsIGF0dHJpYkluZGV4LCBhdHRyaWIuZm9ybWF0LT5jaGFu
bmVsQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIuZm9y
bWF0LT52ZXJ0ZXhBdHRyaWJUeXBlLCBhdHRyaWIuZm9ybWF0LT5pc05vcm0oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuZ2V0U3RyaWRlKCksIGF0dHJpYi5w
b2ludGVyKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmluZGluZy5nZXREaXZpc29yKCkg
IT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgQ2FwdHVyZShzZXR1cENhbGxzLCBDYXB0dXJl
VmVydGV4QXR0cmliRGl2aXNvcigqcmVwbGF5U3RhdGUsIHRydWUsIGF0dHJpYkluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
aW5kaW5nLmdldERpdmlzb3IoKSkpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENhcHR1
cmVNaWRFeGVjdXRpb25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiAqc2V0dXBDYWxs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlclNvdXJjZU1hcCAm
Y2FjaGVkU2hhZGVyU291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFByb2dyYW1Tb3VyY2VNYXAgJmNhY2hlZFByb2dyYW1Tb3VyY2VzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVNvdXJjZU1hcCAmY2FjaGVkUHJvZ3JhbVNvdXJj
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlTGV2ZWxEYXRh
TWFwICZjYWNoZWRUZXh0dXJlTGV2ZWxEYXRhKQogewogICAgIGNvbnN0IGdsOjpTdGF0ZSAmYXBp
U3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIGdsOjpTdGF0ZSByZXBsYXlTdGF0ZSgw
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBFR0xfT1BFTkdMX0VTX0FQSSwKQEAgLTExMjks
NTUgKzE0NjksNDkgQEAgdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsCiAgICAgLy8gVmVydGV4IGlucHV0IHN0YXRlcy4gT25seSBoYW5kbGVz
IEdMRVMgMi4wIHN0YXRlcyByaWdodCBub3cuCiAgICAgLy8gTXVzdCBoYXBwZW4gYWZ0ZXIgYnVm
ZmVyIGRhdGEgaW5pdGlhbGl6YXRpb24uCiAgICAgLy8gVE9ETyhodHRwOi8vYW5nbGVidWcuY29t
LzM2NjIpOiBDb21wbGV0ZSBzdGF0ZSBjYXB0dXJlLgorCisgICAgLy8gQ2FwdHVyZSBkZWZhdWx0
IHZlcnRleCBhdHRyaWJzCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlZlcnRleEF0dHJpYkN1
cnJlbnRWYWx1ZURhdGE+ICZjdXJyZW50VmFsdWVzID0KICAgICAgICAgYXBpU3RhdGUuZ2V0VmVy
dGV4QXR0cmliQ3VycmVudFZhbHVlcygpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpWZXJ0
ZXhBdHRyaWJ1dGU+ICZ2ZXJ0ZXhBdHRyaWJzID0KLSAgICAgICAgYXBpU3RhdGUuZ2V0VmVydGV4
QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlcygpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpWZXJ0ZXhCaW5kaW5nPiAmdmVydGV4QmluZGluZ3MgPQotICAgICAgICBhcGlTdGF0ZS5nZXRW
ZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhCaW5kaW5ncygpOwogCiAgICAgZm9yIChHTHVpbnQgYXR0
cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7ICsrYXR0
cmliSW5kZXgpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZh
bHVlRGF0YSAmY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlc1thdHRyaWJJbmRleF07Ci0gICAg
ICAgIGlmICghSXNEZWZhdWx0Q3VycmVudFZhbHVlKGN1cnJlbnRWYWx1ZSkpCisgICAgICAgIGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZkZWZhdWx0VmFsdWUgPSBjdXJy
ZW50VmFsdWVzW2F0dHJpYkluZGV4XTsKKyAgICAgICAgaWYgKCFJc0RlZmF1bHRDdXJyZW50VmFs
dWUoZGVmYXVsdFZhbHVlKSkKICAgICAgICAgewotICAgICAgICAgICAgY2FwKENhcHR1cmVWZXJ0
ZXhBdHRyaWI0ZnYocmVwbGF5U3RhdGUsIHRydWUsIGF0dHJpYkluZGV4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlLlZhbHVlcy5GbG9hdFZhbHVl
cykpOworICAgICAgICAgICAgQ2FwdHVyZShzZXR1cENhbGxzLCBDYXB0dXJlVmVydGV4QXR0cmli
NGZ2KHJlcGxheVN0YXRlLCB0cnVlLCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUuVmFsdWVzLkZs
b2F0VmFsdWVzKSk7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliID0gdmVydGV4QXR0cmlic1thdHRyaWJJbmRleF07Ci0gICAgICAg
IGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nICA9IHZlcnRleEJpbmRpbmdzW2F0dHJp
Yi5iaW5kaW5nSW5kZXhdOwotCi0gICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgZGVm
YXVsdEF0dHJpYihhdHRyaWJJbmRleCk7Ci0gICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5n
IGRlZmF1bHRCaW5kaW5nOwotCi0gICAgICAgIGlmIChhdHRyaWIuZW5hYmxlZCAhPSBkZWZhdWx0
QXR0cmliLmVuYWJsZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhcChDYXB0dXJlRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkocmVwbGF5U3RhdGUsIGZhbHNlLCBhdHRyaWJJbmRleCkpOwotICAg
ICAgICB9CisgICAgLy8gQ2FwdHVyZSB2ZXJ0ZXggYXJyYXkgb2JqZWN0cworICAgIGNvbnN0IGds
OjpWZXJ0ZXhBcnJheU1hcCAmdmVydGV4QXJyYXlNYXAgPSBjb250ZXh0LT5nZXRWZXJ0ZXhBcnJh
eXNGb3JDYXB0dXJlKCk7CisgICAgZ2w6OlZlcnRleEFycmF5SUQgYm91bmRWZXJ0ZXhBcnJheUlE
ICAgICA9IHswfTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnZlcnRleEFycmF5SXRlciA6IHZlcnRl
eEFycmF5TWFwKQorICAgIHsKKyAgICAgICAgZ2w6OlZlcnRleEFycmF5SUQgdmVydGV4QXJyYXlJ
RCA9IHt2ZXJ0ZXhBcnJheUl0ZXIuZmlyc3R9OworICAgICAgICBjYXAoQ2FwdHVyZUdlblZlcnRl
eEFycmF5cyhyZXBsYXlTdGF0ZSwgdHJ1ZSwgMSwgJnZlcnRleEFycmF5SUQpKTsKKyAgICAgICAg
TWF5YmVDYXB0dXJlVXBkYXRlUmVzb3VyY2VJRHMoc2V0dXBDYWxscyk7CiAKLSAgICAgICAgaWYg
KGF0dHJpYi5mb3JtYXQgIT0gZGVmYXVsdEF0dHJpYi5mb3JtYXQgfHwgYXR0cmliLnBvaW50ZXIg
IT0gZGVmYXVsdEF0dHJpYi5wb2ludGVyIHx8Ci0gICAgICAgICAgICBiaW5kaW5nLmdldFN0cmlk
ZSgpICE9IGRlZmF1bHRCaW5kaW5nLmdldFN0cmlkZSgpIHx8Ci0gICAgICAgICAgICBiaW5kaW5n
LmdldEJ1ZmZlcigpLmdldCgpICE9IG51bGxwdHIpCisgICAgICAgIGlmICh2ZXJ0ZXhBcnJheUl0
ZXIuc2Vjb25kKQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBi
aW5kaW5nLmdldEJ1ZmZlcigpLmdldCgpOworICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEFy
cmF5ICp2ZXJ0ZXhBcnJheSA9IHZlcnRleEFycmF5SXRlci5zZWNvbmQ7CiAKLSAgICAgICAgICAg
IGlmIChidWZmZXIgIT0gcmVwbGF5U3RhdGUuZ2V0QXJyYXlCdWZmZXIoKSkKKyAgICAgICAgICAg
IC8vIEJpbmQgdGhlIHZlcnRleEFycmF5ICh1bmxlc3MgZGVmYXVsdCkgYW5kIHBvcHVsYXRlIGl0
CisgICAgICAgICAgICBpZiAodmVydGV4QXJyYXlJRC52YWx1ZSAhPSAwKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJlcGxheVN0YXRlLnNldEJ1ZmZlckJpbmRpbmcoY29udGV4dCwg
Z2w6OkJ1ZmZlckJpbmRpbmc6OkFycmF5LCBidWZmZXIpOwotICAgICAgICAgICAgICAgIGNhcChD
YXB0dXJlQmluZEJ1ZmZlcihyZXBsYXlTdGF0ZSwgdHJ1ZSwgZ2w6OkJ1ZmZlckJpbmRpbmc6OkFy
cmF5LCBidWZmZXItPmlkKCkpKTsKKyAgICAgICAgICAgICAgICBjYXAoQ2FwdHVyZUJpbmRWZXJ0
ZXhBcnJheShyZXBsYXlTdGF0ZSwgdHJ1ZSwgdmVydGV4QXJyYXlJRCkpOworICAgICAgICAgICAg
ICAgIGJvdW5kVmVydGV4QXJyYXlJRCA9IHZlcnRleEFycmF5SUQ7CiAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGNhcChDYXB0dXJlVmVydGV4QXR0cmliUG9pbnRlcihyZXBsYXlTdGF0ZSwg
dHJ1ZSwgYXR0cmliSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmliLmZvcm1hdC0+Y2hhbm5lbENvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYi5mb3JtYXQtPnZlcnRleEF0dHJpYlR5cGUsIGF0
dHJpYi5mb3JtYXQtPmlzTm9ybSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJpbmRpbmcuZ2V0U3RyaWRlKCksIGF0dHJpYi5wb2ludGVyKSk7CisgICAgICAg
ICAgICBDYXB0dXJlVmVydGV4QXJyYXlEYXRhKHNldHVwQ2FsbHMsIGNvbnRleHQsIHZlcnRleEFy
cmF5LCAmcmVwbGF5U3RhdGUpOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAgIGlmIChiaW5k
aW5nLmdldERpdmlzb3IoKSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYXAoQ2FwdHVy
ZVZlcnRleEF0dHJpYkRpdmlzb3IocmVwbGF5U3RhdGUsIHRydWUsIGF0dHJpYkluZGV4LCBiaW5k
aW5nLmdldERpdmlzb3IoKSkpOwotICAgICAgICB9CisgICAgLy8gQmluZCB0aGUgY3VycmVudCB2
ZXJ0ZXggYXJyYXkKKyAgICBjb25zdCBnbDo6VmVydGV4QXJyYXkgKmN1cnJlbnRWZXJ0ZXhBcnJh
eSA9IGFwaVN0YXRlLmdldFZlcnRleEFycmF5KCk7CisgICAgaWYgKGN1cnJlbnRWZXJ0ZXhBcnJh
eS0+aWQoKSAhPSBib3VuZFZlcnRleEFycmF5SUQpCisgICAgeworICAgICAgICBjYXAoQ2FwdHVy
ZUJpbmRWZXJ0ZXhBcnJheShyZXBsYXlTdGF0ZSwgdHJ1ZSwgY3VycmVudFZlcnRleEFycmF5LT5p
ZCgpKSk7CiAgICAgfQogCiAgICAgLy8gQ2FwdHVyZSBCdWZmZXIgYmluZGluZ3MuCkBAIC0xMTkw
LDE4ICsxNTI0LDE5IEBAIHZvaWQgQ2FwdHVyZU1pZEV4ZWN1dGlvblNldHVwKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAvLyB3ZSBzZXQgZWFybGllci4KICAgICAgICAgYm9v
bCBpc0FycmF5ICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nID09IGdsOjpCdWZmZXJCaW5kaW5n
OjpBcnJheTsKICAgICAgICAgY29uc3QgZ2w6OkJ1ZmZlciAqYXJyYXlCdWZmZXIgPSByZXBsYXlT
dGF0ZS5nZXRBcnJheUJ1ZmZlcigpOwotICAgICAgICBpZiAoKGlzQXJyYXkgJiYgYXJyYXlCdWZm
ZXItPmlkKCkgIT0gYnVmZmVySUQpIHx8ICghaXNBcnJheSAmJiBidWZmZXJJRC52YWx1ZSAhPSAw
KSkKKyAgICAgICAgaWYgKChpc0FycmF5ICYmIGFycmF5QnVmZmVyICYmIGFycmF5QnVmZmVyLT5p
ZCgpICE9IGJ1ZmZlcklEKSB8fAorICAgICAgICAgICAgKCFpc0FycmF5ICYmIGJ1ZmZlcklELnZh
bHVlICE9IDApKQogICAgICAgICB7CiAgICAgICAgICAgICBjYXAoQ2FwdHVyZUJpbmRCdWZmZXIo
cmVwbGF5U3RhdGUsIHRydWUsIGJpbmRpbmcsIGJ1ZmZlcklEKSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAvLyBTZXQgYSBwYWNrIGFsaWdubWVudCBvZiAxLgotICAgIGdsOjpQaXhlbFBhY2tT
dGF0ZSAmY3VycmVudFBhY2tTdGF0ZSA9IHJlcGxheVN0YXRlLmdldFBhY2tTdGF0ZSgpOwotICAg
IGlmIChjdXJyZW50UGFja1N0YXRlLmFsaWdubWVudCAhPSAxKQorICAgIC8vIFNldCBhIHVucGFj
ayBhbGlnbm1lbnQgb2YgMS4KKyAgICBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmY3VycmVudFVucGFj
a1N0YXRlID0gcmVwbGF5U3RhdGUuZ2V0VW5wYWNrU3RhdGUoKTsKKyAgICBpZiAoY3VycmVudFVu
cGFja1N0YXRlLmFsaWdubWVudCAhPSAxKQogICAgIHsKICAgICAgICAgY2FwKENhcHR1cmVQaXhl
bFN0b3JlaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSkpOwotICAg
ICAgICBjdXJyZW50UGFja1N0YXRlLmFsaWdubWVudCA9IDE7CisgICAgICAgIGN1cnJlbnRVbnBh
Y2tTdGF0ZS5hbGlnbm1lbnQgPSAxOwogICAgIH0KIAogICAgIC8vIENhcHR1cmUgVGV4dHVyZSBz
ZXR1cCBhbmQgZGF0YS4KQEAgLTEyMzcsNiArMTU3MiwxMCBAQCB2b2lkIENhcHR1cmVNaWRFeGVj
dXRpb25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNhcChD
YXB0dXJlVGV4UGFyYW1ldGVyaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgdGV4dHVyZS0+Z2V0VHlwZSgp
LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgfTsKIAorICAgICAgICBhdXRvIGNhcFRleFBhcmFt
ZiA9IFtjYXAsICZyZXBsYXlTdGF0ZSwgdGV4dHVyZV0oR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBh
cmFtKSB7CisgICAgICAgICAgICBjYXAoQ2FwdHVyZVRleFBhcmFtZXRlcmYocmVwbGF5U3RhdGUs
IHRydWUsIHRleHR1cmUtPmdldFR5cGUoKSwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAgIH07CisK
ICAgICAgICAgaWYgKHRleHR1cmVTYW1wbGVyU3RhdGUuZ2V0TWluRmlsdGVyKCkgIT0gZGVmYXVs
dFNhbXBsZXJTdGF0ZS5nZXRNaW5GaWx0ZXIoKSkKICAgICAgICAgewogICAgICAgICAgICAgY2Fw
VGV4UGFyYW0oR0xfVEVYVFVSRV9NSU5fRklMVEVSLCB0ZXh0dXJlU2FtcGxlclN0YXRlLmdldE1p
bkZpbHRlcigpKTsKQEAgLTEyNjIsNiArMTYwMSw0OCBAQCB2b2lkIENhcHR1cmVNaWRFeGVjdXRp
b25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNhcFRleFBh
cmFtKEdMX1RFWFRVUkVfV1JBUF9ULCB0ZXh0dXJlU2FtcGxlclN0YXRlLmdldFdyYXBUKCkpOwog
ICAgICAgICB9CiAKKyAgICAgICAgaWYgKHRleHR1cmVTYW1wbGVyU3RhdGUuZ2V0TWluTG9kKCkg
IT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRNaW5Mb2QoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY2FwVGV4UGFyYW1mKEdMX1RFWFRVUkVfTUlOX0xPRCwgdGV4dHVyZVNhbXBsZXJTdGF0ZS5n
ZXRNaW5Mb2QoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGV4dHVyZVNhbXBsZXJTdGF0
ZS5nZXRNYXhMb2QoKSAhPSBkZWZhdWx0U2FtcGxlclN0YXRlLmdldE1heExvZCgpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjYXBUZXhQYXJhbWYoR0xfVEVYVFVSRV9NQVhfTE9ELCB0ZXh0dXJl
U2FtcGxlclN0YXRlLmdldE1heExvZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0ZXh0
dXJlU2FtcGxlclN0YXRlLmdldENvbXBhcmVNb2RlKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5n
ZXRDb21wYXJlTW9kZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXBUZXhQYXJhbShHTF9U
RVhUVVJFX0NPTVBBUkVfTU9ERSwgdGV4dHVyZVNhbXBsZXJTdGF0ZS5nZXRDb21wYXJlTW9kZSgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0ZXh0dXJlU2FtcGxlclN0YXRlLmdldENvbXBh
cmVGdW5jKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRDb21wYXJlRnVuYygpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjYXBUZXhQYXJhbShHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywgdGV4
dHVyZVNhbXBsZXJTdGF0ZS5nZXRDb21wYXJlRnVuYygpKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRleHR1cmUgcGFyYW1ldGVycworICAgICAgICAvLyBUT0RPOiBBZGQgaW1tdXRhYmxlIGFu
ZCBiYXNlL21heCB3aGVuIFRleFN0b3JhZ2UgaXMgaGFuZGxlZCAoaHR0cDovL2FuZ2xlYnVnLmNv
bS8zNjYyKQorICAgICAgICBpZiAodGV4dHVyZS0+Z2V0U3dpenpsZVJlZCgpICE9IEdMX1JFRCkK
KyAgICAgICAgeworICAgICAgICAgICAgY2FwVGV4UGFyYW0oR0xfVEVYVFVSRV9TV0laWkxFX1Is
IHRleHR1cmUtPmdldFN3aXp6bGVSZWQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGV4
dHVyZS0+Z2V0U3dpenpsZUdyZWVuKCkgIT0gR0xfR1JFRU4pCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNhcFRleFBhcmFtKEdMX1RFWFRVUkVfU1dJWlpMRV9HLCB0ZXh0dXJlLT5nZXRTd2l6emxl
R3JlZW4oKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGV4dHVyZS0+Z2V0U3dpenpsZUJs
dWUoKSAhPSBHTF9CTFVFKQorICAgICAgICB7CisgICAgICAgICAgICBjYXBUZXhQYXJhbShHTF9U
RVhUVVJFX1NXSVpaTEVfQiwgdGV4dHVyZS0+Z2V0U3dpenpsZUJsdWUoKSk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodGV4dHVyZS0+Z2V0U3dpenpsZUFscGhhKCkgIT0gR0xfQUxQSEEpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNhcFRleFBhcmFtKEdMX1RFWFRVUkVfU1dJWlpMRV9BLCB0
ZXh0dXJlLT5nZXRTd2l6emxlQWxwaGEoKSk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJdGVy
YXRlIHRleHR1cmUgbGV2ZWxzIGFuZCBsYXllcnMuCiAgICAgICAgIGdsOjpJbWFnZUluZGV4SXRl
cmF0b3IgaW1hZ2VJdGVyID0gZ2w6OkltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZUdlbmVyaWMoCiAg
ICAgICAgICAgICB0ZXh0dXJlLT5nZXRUeXBlKCksIDAsIHRleHR1cmUtPmdldE1pcG1hcE1heExl
dmVsKCkgKyAxLCBnbDo6SW1hZ2VJbmRleDo6a0VudGlyZUxldmVsLApAQCAtMTI3Nyw2NiArMTY1
OCwxMDggQEAgdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAKICAgICAgICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0
ID0gKmRlc2MuZm9ybWF0LmluZm87CiAKLSAgICAgICAgICAgIC8vIEFzc3VtZSAyRCBvciBDdWJl
IGZvciBub3cuCi0gICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiAzRCBhbmQgMkQgYXJyYXkg
dGV4dHVyZXMuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDA0OAorICAgICAgICAgICAgLy8gQ2hlY2sg
Zm9yIHN1cHBvcnRlZCB0ZXh0dXJlcwogICAgICAgICAgICAgQVNTRVJUKGluZGV4LmdldFR5cGUo
KSA9PSBnbDo6VGV4dHVyZVR5cGU6Ol8yRCB8fAorICAgICAgICAgICAgICAgICAgIGluZGV4Lmdl
dFR5cGUoKSA9PSBnbDo6VGV4dHVyZVR5cGU6Ol8zRCB8fAorICAgICAgICAgICAgICAgICAgIGlu
ZGV4LmdldFR5cGUoKSA9PSBnbDo6VGV4dHVyZVR5cGU6Ol8yREFycmF5IHx8CiAgICAgICAgICAg
ICAgICAgICAgaW5kZXguZ2V0VHlwZSgpID09IGdsOjpUZXh0dXJlVHlwZTo6Q3ViZU1hcCk7CiAK
LSAgICAgICAgICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgZGF0YTsKKyAgICAgICAgICAgIGJvb2wg
aXMzRCA9IChpbmRleC5nZXRUeXBlKCkgPT0gZ2w6OlRleHR1cmVUeXBlOjpfM0QgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRleC5nZXRUeXBlKCkgPT0gZ2w6OlRleHR1cmVUeXBlOjpf
MkRBcnJheSk7CiAKLSAgICAgICAgICAgIC8vIFVzZSBBTkdMRV9nZXRfaW1hZ2UgdG8gcmVhZCBi
YWNrIHBpeGVsIGRhdGEuCi0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmdldEltYWdlQU5HTEUpCisgICAgICAgICAgICBpZiAoZm9ybWF0LmNvbXByZXNzZWQpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gZm9ybWF0
LmludGVybmFsRm9ybWF0OwotICAgICAgICAgICAgICAgIEdMZW51bSBnZXRGb3JtYXQgICAgICA9
IGZvcm1hdC5mb3JtYXQ7Ci0gICAgICAgICAgICAgICAgR0xlbnVtIGdldFR5cGUgICAgICAgID0g
Zm9ybWF0LnR5cGU7Ci0gICAgICAgICAgICAgICAgR0xzaXplaSBwaXhlbEJ5dGVzICAgID0gZm9y
bWF0LnBpeGVsQnl0ZXM7CisgICAgICAgICAgICAgICAgLy8gRm9yIGNvbXByZXNzZWQgaW1hZ2Vz
LCB3ZSd2ZSB0cmFja2VkIGEgY29weSBvZiB0aGUgaW5jb21pbmcgZGF0YSwgc28gd2UgY2FuCisg
ICAgICAgICAgICAgICAgLy8gdXNlIHRoYXQgcmF0aGVyIHRoYW4gdHJ5IHRvIHJlYWQgZGF0YSBi
YWNrIHRoYXQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQuCiAKLSAgICAgICAgICAgICAgICBpZiAo
Zm9ybWF0LmNvbXByZXNzZWQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAvLyBEZXRlcm1pbmUgaWYgd2UncmUgZW11bGF0aW5nIHRoZSBjb21wcmVzc2VkIGZvcm1hdC4K
LSAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlYWRGb3JtYXQgPSB0ZXh0dXJlLT5nZXRJbXBs
ZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdChjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHJlYWRUeXBlICAgPSB0ZXh0dXJlLT5nZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5
cGUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgLy8gTG9vayB1cCB0aGUgZGF0YSBmb3IgdGhl
IHJlcXVlc3RlZCB0ZXh0dXJlCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmZm91bmRUZXh0
dXJlTGV2ZWxzID0gY2FjaGVkVGV4dHVyZUxldmVsRGF0YS5maW5kKHRleHR1cmUtPmlkKCkpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChmb3VuZFRleHR1cmVMZXZlbHMgIT0gY2FjaGVkVGV4dHVy
ZUxldmVsRGF0YS5lbmQoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZuYXRpdmVGb3JtYXQgPQotICAgICAgICAgICAgICAgICAgICAgICAgZ2w6Okdl
dEludGVybmFsRm9ybWF0SW5mbyhyZWFkRm9ybWF0LCByZWFkVHlwZSk7CisgICAgICAgICAgICAg
ICAgLy8gRm9yIHRoYXQgdGV4dHVyZSwgbG9vayB1cCB0aGUgZGF0YSBmb3IgdGhlIGdpdmVuIGxl
dmVsCisgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwgICAgICAgICAgICAgICAgICAgPSBpbmRl
eC5nZXRMZXZlbEluZGV4KCk7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmZm91bmRUZXh0
dXJlTGV2ZWwgPSBmb3VuZFRleHR1cmVMZXZlbHMtPnNlY29uZC5maW5kKGxldmVsKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZm91bmRUZXh0dXJlTGV2ZWwgIT0gZm91bmRUZXh0dXJlTGV2ZWxz
LT5zZWNvbmQuZW5kKCkpOworICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+ICZjYXB0dXJlZFRleHR1cmVMZXZlbCA9IGZvdW5kVGV4dHVyZUxldmVsLT5zZWNvbmQ7CiAK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVGb3JtYXQuY29tcHJlc3NlZCkKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRW11bGF0ZSB3aXRo
IGEgbm9uLWNvbXByZXNzZWQgZm9ybWF0LgotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJu
YWxGb3JtYXQgPSBuYXRpdmVGb3JtYXQuaW50ZXJuYWxGb3JtYXQ7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBnZXRGb3JtYXQgICAgICA9IHJlYWRGb3JtYXQ7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBnZXRUeXBlICAgICAgICA9IHJlYWRUeXBlOwotICAgICAgICAgICAgICAgICAgICAgICAg
cGl4ZWxCeXRlcyAgICAgPSBuYXRpdmVGb3JtYXQucGl4ZWxCeXRlczsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdpbGwgbmVlZCB0byBhZGQgZ2xHZXRDb21wcmVz
c2VkVGV4SW1hZ2Ugc3VwcG9ydCB0byBBTkdMRV9nZXRfaW1hZ2UuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBhZGQgZ2xHZXRDb21wcmVzc2VkVGV4SW1hZ2UuIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMzk0NAotICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gVXNlIHRo
ZSBzaGFkb3cgY29weSBvZiB0aGUgZGF0YSB0byBwb3B1bGF0ZSB0aGUgY2FsbAorICAgICAgICAg
ICAgICAgIGlmIChpczNEKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2FwKENhcHR1cmVDb21wcmVzc2VkVGV4SW1hZ2UzRCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxheVN0YXRlLCB0cnVlLCBpbmRleC5nZXRUYXJnZXQoKSwgaW5kZXguZ2V0TGV2ZWxJbmRl
eCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmludGVybmFsRm9ybWF0LCBkZXNj
LnNpemUud2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIGRlc2Muc2l6ZS5kZXB0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIHN0YXRpY19jYXN0PEdMdWludD4oY2FwdHVyZWRUZXh0dXJlTGV2
ZWwuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkVGV4dHVyZUxldmVs
LmRhdGEoKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXAoQ2FwdHVyZUNvbXByZXNzZWRU
ZXhJbWFnZTJEKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5U3RhdGUsIHRydWUsIGlu
ZGV4LmdldFRhcmdldCgpLCBpbmRleC5nZXRMZXZlbEluZGV4KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQuaW50ZXJuYWxGb3JtYXQsIGRlc2Muc2l6ZS53aWR0aCwgZGVzYy5zaXpl
LmhlaWdodCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4o
Y2FwdHVyZWRUZXh0dXJlTGV2ZWwuc2l6ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
cHR1cmVkVGV4dHVyZUxldmVsLmRhdGEoKSkpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBVc2UgQU5HTEVfZ2V0X2ltYWdlIHRvIHJlYWQgYmFjayBwaXhlbCBkYXRhLgorICAgICAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0SW1hZ2VBTkdMRSkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZXRGb3JtYXQgPSBmb3Jt
YXQuZm9ybWF0OworICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2V0VHlwZSAgID0gZm9ybWF0
LnR5cGU7CiAKLSAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhU2l6ZSA9IHBpeGVsQnl0ZXMg
KiBkZXNjLnNpemUud2lkdGggKiBkZXNjLnNpemUuaGVpZ2h0OworICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6TWVtb3J5QnVmZmVyIGRhdGE7CiAKLSAgICAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IGRhdGEucmVzaXplKGRhdGFTaXplKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgc2l6ZShkZXNjLnNpemUu
d2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIGRlc2Muc2l6ZS5kZXB0aCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2sgPSBhcGlTdGF0ZS5nZXRV
bnBhY2tTdGF0ZSgpOwogCi0gICAgICAgICAgICAgICAgZ2w6OlBpeGVsUGFja1N0YXRlIHBhY2tT
dGF0ZTsKLSAgICAgICAgICAgICAgICBwYWNrU3RhdGUuYWxpZ25tZW50ID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGVuZEJ5dGUgPSAwOworICAgICAgICAgICAgICAgICAgICBib29s
IHVucGFja1NpemUgPQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmNvbXB1dGVQYWNr
VW5wYWNrRW5kQnl0ZShnZXRUeXBlLCBzaXplLCB1bnBhY2ssIHRydWUsICZlbmRCeXRlKTsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHVucGFja1NpemUpOwogCi0gICAgICAgICAgICAgICAg
KHZvaWQpdGV4dHVyZS0+Z2V0VGV4SW1hZ2UoY29udGV4dCwgcGFja1N0YXRlLCBudWxscHRyLCBp
bmRleC5nZXRUYXJnZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleC5nZXRMZXZlbEluZGV4KCksIGdldEZvcm1hdCwgZ2V0VHlwZSwgZGF0YS5kYXRh
KCkpOworICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGRhdGEucmVzaXplKGVuZEJ5
dGUpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAgICAgICAgICAg
ICAgIGNhcChDYXB0dXJlVGV4SW1hZ2UyRChyZXBsYXlTdGF0ZSwgdHJ1ZSwgaW5kZXguZ2V0VGFy
Z2V0KCksIGluZGV4LmdldExldmVsSW5kZXgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIGRlc2Muc2l6ZS53aWR0aCwgZGVzYy5zaXplLmhl
aWdodCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Rm9ybWF0
LCBnZXRUeXBlLCBkYXRhLmRhdGEoKSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhcChDYXB0dXJlVGV4SW1hZ2UyRChy
ZXBsYXlTdGF0ZSwgdHJ1ZSwgaW5kZXguZ2V0VGFyZ2V0KCksIGluZGV4LmdldExldmVsSW5kZXgo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmludGVybmFs
Rm9ybWF0LCBkZXNjLnNpemUud2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5mb3JtYXQsIGZvcm1hdC50eXBlLCBu
dWxscHRyKSk7CisgICAgICAgICAgICAgICAgICAgIGdsOjpQaXhlbFBhY2tTdGF0ZSBwYWNrU3Rh
dGU7CisgICAgICAgICAgICAgICAgICAgIHBhY2tTdGF0ZS5hbGlnbm1lbnQgPSAxOworCisgICAg
ICAgICAgICAgICAgICAgICh2b2lkKXRleHR1cmUtPmdldFRleEltYWdlKGNvbnRleHQsIHBhY2tT
dGF0ZSwgbnVsbHB0ciwgaW5kZXguZ2V0VGFyZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmdldExldmVsSW5kZXgoKSwgZ2V0Rm9ybWF0
LCBnZXRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLmRhdGEoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzM0QpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcChDYXB0dXJlVGV4SW1h
Z2UzRChyZXBsYXlTdGF0ZSwgdHJ1ZSwgaW5kZXguZ2V0VGFyZ2V0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXguZ2V0TGV2ZWxJbmRleCgpLCBm
b3JtYXQuaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzYy5zaXplLndpZHRoLCBkZXNjLnNpemUuaGVpZ2h0LCBkZXNjLnNpemUu
ZGVwdGgsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0Rm9ybWF0LCBnZXRUeXBlLCBkYXRhLmRhdGEoKSkpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FwKENhcHR1cmVUZXhJbWFnZTJEKHJlcGxheVN0YXRlLCB0cnVl
LCBpbmRleC5nZXRUYXJnZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleC5nZXRMZXZlbEluZGV4KCksIGZvcm1hdC5pbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjLnNpemUu
d2lkdGgsIGRlc2Muc2l6ZS5oZWlnaHQsIDAsIGdldEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUeXBlLCBkYXRhLmRhdGEoKSkpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpczNEKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXAoQ2FwdHVyZVRl
eEltYWdlM0QocmVwbGF5U3RhdGUsIHRydWUsIGluZGV4LmdldFRhcmdldCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmdldExldmVsSW5kZXgo
KSwgZm9ybWF0LmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc2Muc2l6ZS53aWR0aCwgZGVzYy5zaXplLmhlaWdodCwgZGVzYy5z
aXplLmRlcHRoLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdC5mb3JtYXQsIGZvcm1hdC50eXBlLCBudWxscHRyKSk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjYXAoQ2FwdHVyZVRleEltYWdlMkQocmVwbGF5U3Rh
dGUsIHRydWUsIGluZGV4LmdldFRhcmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4LmdldExldmVsSW5kZXgoKSwgZm9ybWF0LmludGVybmFs
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
c2Muc2l6ZS53aWR0aCwgZGVzYy5zaXplLmhlaWdodCwgMCwgZm9ybWF0LmZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQudHlwZSwgbnVs
bHB0cikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTQ0NSw0MyArMTg2OCwyMSBAQCB2b2lkIENh
cHR1cmVNaWRFeGVjdXRpb25TZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgR0x1aW50
IHJlc291cmNlSUQgPSBjb2xvckF0dGFjaG1lbnQuZ2V0UmVzb3VyY2UoKS0+Z2V0SWQoKTsKLQot
ICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogTGF5ZXIgYXR0YWNobWVudHMuIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMzY2MgotICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC50eXBlKCkg
PT0gR0xfVEVYVFVSRSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6SW1hZ2VJ
bmRleCBpbmRleCA9IGNvbG9yQXR0YWNobWVudC5nZXRUZXh0dXJlSW1hZ2VJbmRleCgpOwotCi0g
ICAgICAgICAgICAgICAgY2FwKENhcHR1cmVGcmFtZWJ1ZmZlclRleHR1cmUyRChyZXBsYXlTdGF0
ZSwgdHJ1ZSwgR0xfRlJBTUVCVUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnQuZ2V0QmluZGluZygpLCBpbmRleC5nZXRU
YXJnZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHtyZXNvdXJjZUlEfSwgaW5kZXguZ2V0TGV2ZWxJbmRleCgpKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGNv
bG9yQXR0YWNobWVudC50eXBlKCkgPT0gR0xfUkVOREVSQlVGRkVSKTsKLSAgICAgICAgICAgICAg
ICBjYXAoQ2FwdHVyZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHJlcGxheVN0YXRlLCB0cnVlLCBH
TF9GUkFNRUJVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbG9yQXR0YWNobWVudC5nZXRCaW5kaW5nKCksIEdMX1JFTkRFUkJVRkZFUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXNv
dXJjZUlEfSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQ2FwdHVyZUZyYW1lYnVmZmVy
QXR0YWNobWVudChzZXR1cENhbGxzLCByZXBsYXlTdGF0ZSwgY29sb3JBdHRhY2htZW50KTsKICAg
ICAgICAgfQogCiAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRo
QXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXREZXB0aEF0dGFjaG1lbnQoKTsKICAgICAgICAg
aWYgKGRlcHRoQXR0YWNobWVudCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGRlcHRo
QXR0YWNobWVudC0+dHlwZSgpID09IEdMX1JFTkRFUkJVRkZFUik7Ci0gICAgICAgICAgICBHTHVp
bnQgcmVzb3VyY2VJRCA9IGRlcHRoQXR0YWNobWVudC0+Z2V0UmVzb3VyY2UoKS0+Z2V0SWQoKTsK
LSAgICAgICAgICAgIGNhcChDYXB0dXJlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIocmVwbGF5U3Rh
dGUsIHRydWUsIEdMX0ZSQU1FQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIHty
ZXNvdXJjZUlEfSkpOworICAgICAgICAgICAgQVNTRVJUKGRlcHRoQXR0YWNobWVudC0+Z2V0Qmlu
ZGluZygpID09IEdMX0RFUFRIX0FUVEFDSE1FTlQpOworICAgICAgICAgICAgQ2FwdHVyZUZyYW1l
YnVmZmVyQXR0YWNobWVudChzZXR1cENhbGxzLCByZXBsYXlTdGF0ZSwgKmRlcHRoQXR0YWNobWVu
dCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50
ICpzdGVuY2lsQXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXRTdGVuY2lsQXR0YWNobWVudCgp
OwogICAgICAgICBpZiAoc3RlbmNpbEF0dGFjaG1lbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChzdGVuY2lsQXR0YWNobWVudC0+dHlwZSgpID09IEdMX1JFTkRFUkJVRkZFUik7Ci0g
ICAgICAgICAgICBHTHVpbnQgcmVzb3VyY2VJRCA9IHN0ZW5jaWxBdHRhY2htZW50LT5nZXRSZXNv
dXJjZSgpLT5nZXRJZCgpOwotICAgICAgICAgICAgY2FwKENhcHR1cmVGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfRlJBTUVCVUZGRVIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NURU5DSUxfQVRUQUNITUVOVCwg
R0xfUkVOREVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB7cmVzb3VyY2VJRH0pKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGVuY2lsQXR0YWNo
bWVudC0+Z2V0QmluZGluZygpID09IEdMX1NURU5DSUxfQVRUQUNITUVOVCk7CisgICAgICAgICAg
ICBDYXB0dXJlRnJhbWVidWZmZXJBdHRhY2htZW50KHNldHVwQ2FsbHMsIHJlcGxheVN0YXRlLCAq
c3RlbmNpbEF0dGFjaG1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogRHJhdyBidWZmZXIgc3RhdGVzLiBodHRwOi8vYW5nbGVidWcuY29tLzM2NjIKQEAgLTE1Mjgs
OCArMTkyOSw4IEBAIHZvaWQgQ2FwdHVyZU1pZEV4ZWN1dGlvblNldHVwKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAogICAgIGdsOjpTaGFkZXJQcm9ncmFtSUQgdGVtcFNoYWRlcklEID0gezF9
OwogICAgIGZvciAoY29uc3QgYXV0byAmcHJvZ3JhbUl0ZXIgOiBwcm9ncmFtcykKICAgICB7Ci0g
ICAgICAgIGdsOjpTaGFkZXJQcm9ncmFtSUQgaWQgPSB7cHJvZ3JhbUl0ZXIuZmlyc3R9OwotICAg
ICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSAgID0gcHJvZ3JhbUl0ZXIuc2Vjb25kOworICAgICAg
ICBnbDo6U2hhZGVyUHJvZ3JhbUlEIGlkICAgICA9IHtwcm9ncmFtSXRlci5maXJzdH07CisgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtID0gcHJvZ3JhbUl0ZXIuc2Vjb25kOwogCiAg
ICAgICAgIC8vIEdldCBsYXN0IGNvbXBpbGVkIHNoYWRlciBzb3VyY2UuCiAgICAgICAgIGNvbnN0
IGF1dG8gJmZvdW5kU291cmNlcyA9IGNhY2hlZFByb2dyYW1Tb3VyY2VzLmZpbmQoaWQpOwpAQCAt
MTU0NSw3ICsxOTQ2LDcgQEAgdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNhcChDYXB0dXJlQ3JlYXRlUHJvZ3JhbShyZXBs
YXlTdGF0ZSwgdHJ1ZSwgaWQudmFsdWUpKTsKIAogICAgICAgICAvLyBDb21waWxlIHdpdGggbGFz
dCBsaW5rZWQgc291cmNlcy4KLSAgICAgICAgZm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBl
IDogcHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICAgICAg
Zm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgp
LmdldExpbmtlZFNoYWRlclN0YWdlcygpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc291cmNlU3RyaW5nID0gbGlua2VkU291cmNlc1tzaGFkZXJUeXBlXTsKICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKnNvdXJjZVBvaW50ZXIgICAgICAgPSBzb3VyY2VTdHJpbmcu
Y19zdHIoKTsKQEAgLTE1NTgsNyArMTk1OSwzMCBAQCB2b2lkIENhcHR1cmVNaWRFeGVjdXRpb25T
ZXR1cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNhcChDYXB0dXJl
RGVsZXRlU2hhZGVyKHJlcGxheVN0YXRlLCB0cnVlLCB0ZW1wU2hhZGVySUQpKTsKICAgICAgICAg
fQogCisgICAgICAgIC8vIEdhdGhlciBYRkIgdmFyeWluZ3MKKyAgICAgICAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IHhmYlZhcnlpbmdzOworICAgICAgICBmb3IgKGNvbnN0IGdsOjpUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcgJnhmYlZhcnlpbmcgOgorICAgICAgICAgICAgIHByb2dyYW0tPmdl
dFN0YXRlKCkuZ2V0TGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygpKQorICAgICAgICB7
CisgICAgICAgICAgICB4ZmJWYXJ5aW5ncy5wdXNoX2JhY2soeGZiVmFyeWluZy5uYW1lV2l0aEFy
cmF5SW5kZXgoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXhmYlZhcnlpbmdzLmVtcHR5
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gdmFy
eWluZ3NTdHJpbmdzOworICAgICAgICAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyAmdmFyeWlu
Z1N0cmluZyA6IHhmYlZhcnlpbmdzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZh
cnlpbmdzU3RyaW5ncy5wdXNoX2JhY2sodmFyeWluZ1N0cmluZy5kYXRhKCkpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBHTGVudW0geGZiTW9kZSA9IHByb2dyYW0tPmdldFN0YXRlKCku
Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCk7CisgICAgICAgICAgICBjYXAoQ2FwdHVy
ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocmVwbGF5U3RhdGUsIHRydWUsIGlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdM
aW50Pih4ZmJWYXJ5aW5ncy5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcnlpbmdzU3RyaW5ncy5kYXRhKCksIHhmYk1vZGUpKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhcChDYXB0dXJlTGlua1Byb2dyYW0ocmVwbGF5U3RhdGUsIHRy
dWUsIGlkKSk7CisgICAgICAgIENhcHR1cmVVcGRhdGVVbmlmb3JtTG9jYXRpb25zKHByb2dyYW0s
IHNldHVwQ2FsbHMpOwogICAgIH0KIAogICAgIC8vIEhhbmRsZSBzaGFkZXJzLgpAQCAtMTYwMSwx
MCArMjAyNSwxNTIgQEAgdm9pZCBDYXB0dXJlTWlkRXhlY3V0aW9uU2V0dXAoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsCiAgICAgaWYgKGFwaVN0YXRlLmdldFByb2dyYW0oKSkKICAgICB7CiAg
ICAgICAgIGNhcChDYXB0dXJlVXNlUHJvZ3JhbShyZXBsYXlTdGF0ZSwgdHJ1ZSwgYXBpU3RhdGUu
Z2V0UHJvZ3JhbSgpLT5pZCgpKSk7CisgICAgICAgIENhcHR1cmVVcGRhdGVDdXJyZW50UHJvZ3Jh
bShzZXR1cENhbGxzLT5iYWNrKCksIHNldHVwQ2FsbHMpOwogICAgIH0KIAogICAgIC8vIFRPRE8o
aHR0cDovL2FuZ2xlYnVnLmNvbS8zNjYyKTogRVMgMy54IG9iamVjdHMuCiAKKyAgICAvLyBDcmVh
dGUgZXhpc3RpbmcgcXVlcmllcy4gTm90ZSB0aGF0IHF1ZXJpZXMgbWF5IGJlIGdlbm5lZCBhbmQg
bm90IHlldCBzdGFydGVkLiBJbiB0aGF0CisgICAgLy8gY2FzZSB0aGUgcXVlcmllcyB3aWxsIGV4
aXN0IGluIHRoZSBxdWVyeSBtYXAgYXMgbnVsbHB0ciBlbnRyaWVzLgorICAgIGNvbnN0IGdsOjpR
dWVyeU1hcCAmcXVlcnlNYXAgPSBjb250ZXh0LT5nZXRRdWVyaWVzRm9yQ2FwdHVyZSgpOworICAg
IGZvciAoZ2w6OlF1ZXJ5TWFwOjpJdGVyYXRvciBxdWVyeUl0ZXIgPSBxdWVyeU1hcC5iZWdpbldp
dGhOdWxsKCk7CisgICAgICAgICBxdWVyeUl0ZXIgIT0gcXVlcnlNYXAuZW5kV2l0aE51bGwoKTsg
KytxdWVyeUl0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQocXVlcnlJdGVyLT5maXJzdCk7Cisg
ICAgICAgIGdsOjpRdWVyeUlEIHF1ZXJ5SUQgPSB7cXVlcnlJdGVyLT5maXJzdH07CisKKyAgICAg
ICAgY2FwKENhcHR1cmVHZW5RdWVyaWVzKHJlcGxheVN0YXRlLCB0cnVlLCAxLCAmcXVlcnlJRCkp
OworICAgICAgICBNYXliZUNhcHR1cmVVcGRhdGVSZXNvdXJjZUlEcyhzZXR1cENhbGxzKTsKKwor
ICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5ID0gcXVlcnlJdGVyLT5zZWNvbmQ7CisgICAgICAgIGlm
IChxdWVyeSkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OlF1ZXJ5VHlwZSBxdWVyeVR5cGUg
PSBxdWVyeS0+Z2V0VHlwZSgpOworCisgICAgICAgICAgICAvLyBCZWdpbiB0aGUgcXVlcnkgdG8g
Z2VuZXJhdGUgdGhlIG9iamVjdAorICAgICAgICAgICAgY2FwKENhcHR1cmVCZWdpblF1ZXJ5KHJl
cGxheVN0YXRlLCB0cnVlLCBxdWVyeVR5cGUsIHF1ZXJ5SUQpKTsKKworICAgICAgICAgICAgLy8g
RW5kIHRoZSBxdWVyeSBpZiBpdCB3YXMgbm90IGFjdGl2ZQorICAgICAgICAgICAgaWYgKCFJc1F1
ZXJ5QWN0aXZlKGFwaVN0YXRlLCBxdWVyeUlEKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXAoQ2FwdHVyZUVuZFF1ZXJ5KHJlcGxheVN0YXRlLCB0cnVlLCBxdWVyeVR5cGUpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRyYW5zZm9ybSBGZWVk
YmFjaworICAgIGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja01hcCAmeGZiTWFwID0gY29udGV4
dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tzRm9yQ2FwdHVyZSgpOworICAgIGZvciAoY29uc3QgYXV0
byAmeGZiSXRlciA6IHhmYk1hcCkKKyAgICB7CisgICAgICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFj
a0lEIHhmYklEID0ge3hmYkl0ZXIuZmlyc3R9OworICAgICAgICBjYXAoQ2FwdHVyZUdlblRyYW5z
Zm9ybUZlZWRiYWNrcyhyZXBsYXlTdGF0ZSwgdHJ1ZSwgMSwgJnhmYklEKSk7CisgICAgICAgIE1h
eWJlQ2FwdHVyZVVwZGF0ZVJlc291cmNlSURzKHNldHVwQ2FsbHMpOworCisgICAgICAgIGdsOjpU
cmFuc2Zvcm1GZWVkYmFjayAqeGZiID0geGZiSXRlci5zZWNvbmQ7CisgICAgICAgIGlmICgheGZi
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgb2JqZWN0IHdhcyBuZXZlciBjcmVhdGVk
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJpbmQgWEZC
IHRvIGNyZWF0ZSB0aGUgb2JqZWN0CisgICAgICAgIGNhcChDYXB0dXJlQmluZFRyYW5zZm9ybUZl
ZWRiYWNrKHJlcGxheVN0YXRlLCB0cnVlLCBHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIHhmYklEKSk7
CisKKyAgICAgICAgLy8gQmluZCB0aGUgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBYRkIg
b2JqZWN0CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeGZiLT5nZXRJbmRleGVkQnVm
ZmVyQ291bnQoKTsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0
QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJnhmYkJ1ZmZlciA9IHhmYi0+Z2V0SW5kZXhlZEJ1
ZmZlcihpKTsKKworICAgICAgICAgICAgLy8gTm90ZTogQnVmZmVycyBib3VuZCB3aXRoIEJpbmRC
dWZmZXJCYXNlIGNhbiBiZSB1c2VkIHdpdGggQmluZEJ1ZmZlcgorICAgICAgICAgICAgY2FwKENh
cHR1cmVCaW5kQnVmZmVyUmFuZ2UocmVwbGF5U3RhdGUsIHRydWUsIGdsOjpCdWZmZXJCaW5kaW5n
OjpUcmFuc2Zvcm1GZWVkYmFjaywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHhmYkJ1ZmZlci5pZCgpLCB4ZmJCdWZmZXIuZ2V0T2Zmc2V0KCksIHhmYkJ1ZmZlci5n
ZXRTaXplKCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh4ZmItPmlzQWN0aXZlKCkgfHwg
eGZiLT5pc1BhdXNlZCgpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSBkb24ndCBzdXBw
b3J0IGFjdGl2ZSBYRkIgaW4gTUVDIHlldAorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gQmluZCB0aGUgY3VycmVudCBYRkIgYnVmZmVyIGFm
dGVyIHBvcHVsYXRpbmcgWEZCIG9iamVjdHMKKyAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKmN1
cnJlbnRYRkIgPSBhcGlTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICBj
YXAoQ2FwdHVyZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayhyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLLCBjdXJyZW50WEZCLT5pZCgpKSk7CisKKyAgICAvLyBDYXB0dXJlIFNh
bXBsZXIgT2JqZWN0cworICAgIGNvbnN0IGdsOjpTYW1wbGVyTWFuYWdlciAmc2FtcGxlcnMgPSBh
cGlTdGF0ZS5nZXRTYW1wbGVyTWFuYWdlckZvckNhcHR1cmUoKTsKKyAgICBmb3IgKGNvbnN0IGF1
dG8gJnNhbXBsZXJJdGVyIDogc2FtcGxlcnMpCisgICAgeworICAgICAgICBnbDo6U2FtcGxlcklE
IHNhbXBsZXJJRCA9IHtzYW1wbGVySXRlci5maXJzdH07CisgICAgICAgIGNhcChDYXB0dXJlR2Vu
U2FtcGxlcnMocmVwbGF5U3RhdGUsIHRydWUsIDEsICZzYW1wbGVySUQpKTsKKyAgICAgICAgTWF5
YmVDYXB0dXJlVXBkYXRlUmVzb3VyY2VJRHMoc2V0dXBDYWxscyk7CisKKyAgICAgICAgZ2w6OlNh
bXBsZXIgKnNhbXBsZXIgPSBzYW1wbGVySXRlci5zZWNvbmQ7CisgICAgICAgIGlmICghc2FtcGxl
cikKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBnbDo6U2FtcGxlclN0YXRlIGRlZmF1bHRTYW1wbGVyU3RhdGU7CisgICAgICAgIGlmIChzYW1w
bGVyLT5nZXRNaW5GaWx0ZXIoKSAhPSBkZWZhdWx0U2FtcGxlclN0YXRlLmdldE1pbkZpbHRlcigp
KQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2FwdHVyZVNhbXBsZXJQYXJhbWV0ZXJpKHJl
cGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlci0+Z2V0TWluRmlsdGVy
KCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2FtcGxlci0+Z2V0TWFnRmlsdGVyKCkgIT0g
ZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRNYWdGaWx0ZXIoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY2FwKENhcHR1cmVTYW1wbGVyUGFyYW1ldGVyaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgc2FtcGxl
cklELCBHTF9URVhUVVJFX01BR19GSUxURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZXItPmdldE1hZ0ZpbHRlcigpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHNhbXBsZXItPmdldFdyYXBTKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRXcmFw
UygpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2FwdHVyZVNhbXBsZXJQYXJhbWV0ZXJp
KHJlcGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RFWFRVUkVfV1JBUF9TLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyLT5nZXRXcmFwUygpKSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNhbXBsZXItPmdldFdyYXBSKCkgIT0gZGVmYXVsdFNh
bXBsZXJTdGF0ZS5nZXRXcmFwUigpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2FwdHVy
ZVNhbXBsZXJQYXJhbWV0ZXJpKHJlcGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RFWFRV
UkVfV1JBUF9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVyLT5nZXRXcmFwUigpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNhbXBsZXItPmdldFdy
YXBUKCkgIT0gZGVmYXVsdFNhbXBsZXJTdGF0ZS5nZXRXcmFwVCgpKQorICAgICAgICB7CisgICAg
ICAgICAgICBjYXAoQ2FwdHVyZVNhbXBsZXJQYXJhbWV0ZXJpKHJlcGxheVN0YXRlLCB0cnVlLCBz
YW1wbGVySUQsIEdMX1RFWFRVUkVfV1JBUF9ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVyLT5nZXRXcmFwVCgpKSk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHNhbXBsZXItPmdldE1pbkxvZCgpICE9IGRlZmF1bHRTYW1wbGVyU3RhdGUuZ2V0TWluTG9k
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcChDYXB0dXJlU2FtcGxlclBhcmFtZXRlcmYo
cmVwbGF5U3RhdGUsIHRydWUsIHNhbXBsZXJJRCwgR0xfVEVYVFVSRV9NSU5fTE9ELAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyLT5nZXRNaW5Mb2QoKSkp
OworICAgICAgICB9CisgICAgICAgIGlmIChzYW1wbGVyLT5nZXRNYXhMb2QoKSAhPSBkZWZhdWx0
U2FtcGxlclN0YXRlLmdldE1heExvZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXAoQ2Fw
dHVyZVNhbXBsZXJQYXJhbWV0ZXJmKHJlcGxheVN0YXRlLCB0cnVlLCBzYW1wbGVySUQsIEdMX1RF
WFRVUkVfTUFYX0xPRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlci0+Z2V0TWF4TG9kKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2FtcGxlci0+
Z2V0Q29tcGFyZU1vZGUoKSAhPSBkZWZhdWx0U2FtcGxlclN0YXRlLmdldENvbXBhcmVNb2RlKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcChDYXB0dXJlU2FtcGxlclBhcmFtZXRlcmkocmVw
bGF5U3RhdGUsIHRydWUsIHNhbXBsZXJJRCwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXItPmdldENvbXBhcmVN
b2RlKCkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2FtcGxlci0+Z2V0Q29tcGFyZUZ1bmMo
KSAhPSBkZWZhdWx0U2FtcGxlclN0YXRlLmdldENvbXBhcmVGdW5jKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNhcChDYXB0dXJlU2FtcGxlclBhcmFtZXRlcmkocmVwbGF5U3RhdGUsIHRydWUs
IHNhbXBsZXJJRCwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXItPmdldENvbXBhcmVGdW5jKCkpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIEJpbmQgc2FtcGxlcnMKKyAgICBnbDo6U2FtcGxlckJpbmRp
bmdWZWN0b3Igc2FtcGxlckJpbmRpbmdzID0gYXBpU3RhdGUuZ2V0U2FtcGxlcnMoKTsKKyAgICBm
b3IgKEdMdWludCBiaW5kaW5nSW5kZXggPSAwOyBiaW5kaW5nSW5kZXggPCBzdGF0aWNfY2FzdDxH
THVpbnQ+KHNhbXBsZXJCaW5kaW5ncy5zaXplKCkpOworICAgICAgICAgKytiaW5kaW5nSW5kZXgp
CisgICAgeworICAgICAgICBnbDo6U2FtcGxlcklEIHNhbXBsZXJJRCA9IHNhbXBsZXJCaW5kaW5n
c1tiaW5kaW5nSW5kZXhdLmlkKCk7CisgICAgICAgIGlmIChzYW1wbGVySUQudmFsdWUgIT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgY2FwKENhcHR1cmVCaW5kU2FtcGxlcihyZXBsYXlTdGF0
ZSwgdHJ1ZSwgYmluZGluZ0luZGV4LCBzYW1wbGVySUQpKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIC8vIENhcHR1cmUgR0wgQ29udGV4dCBzdGF0ZXMuCiAgICAgLy8gVE9ETyhodHRwOi8vYW5n
bGVidWcuY29tLzM2NjIpOiBDb21wbGV0ZSBzdGF0ZSBjYXB0dXJlLgogICAgIGF1dG8gY2FwQ2Fw
ID0gW2NhcCwgJnJlcGxheVN0YXRlXShHTGVudW0gY2FwRW51bSwgYm9vbCBjYXBWYWx1ZSkgewpA
QCAtMTc1MiwxNCArMjMxOCw2OSBAQCB2b2lkIENhcHR1cmVNaWRFeGVjdXRpb25TZXR1cChjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICB9CiAKICAgICAvLyBQaXhlbCBzdG9yYWdlIHN0
YXRlcy4KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBFUyAzLngrIGltcGxlbWVudGF0aW9uLiBodHRw
Oi8vYW5nbGVidWcuY29tLzM2NjIKKyAgICBnbDo6UGl4ZWxQYWNrU3RhdGUgJmN1cnJlbnRQYWNr
U3RhdGUgPSByZXBsYXlTdGF0ZS5nZXRQYWNrU3RhdGUoKTsKICAgICBpZiAoY3VycmVudFBhY2tT
dGF0ZS5hbGlnbm1lbnQgIT0gYXBpU3RhdGUuZ2V0UGFja0FsaWdubWVudCgpKQogICAgIHsKLSAg
ICAgICAgY2FwKENhcHR1cmVQaXhlbFN0b3JlaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfVU5QQUNL
X0FMSUdOTUVOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlTdGF0ZS5nZXRQ
YWNrQWxpZ25tZW50KCkpKTsKKyAgICAgICAgY2FwKENhcHR1cmVQaXhlbFN0b3JlaShyZXBsYXlT
dGF0ZSwgdHJ1ZSwgR0xfUEFDS19BTElHTk1FTlQsIGFwaVN0YXRlLmdldFBhY2tBbGlnbm1lbnQo
KSkpOwogICAgICAgICBjdXJyZW50UGFja1N0YXRlLmFsaWdubWVudCA9IGFwaVN0YXRlLmdldFBh
Y2tBbGlnbm1lbnQoKTsKICAgICB9CiAKKyAgICBpZiAoY3VycmVudFBhY2tTdGF0ZS5yb3dMZW5n
dGggIT0gYXBpU3RhdGUuZ2V0UGFja1Jvd0xlbmd0aCgpKQorICAgIHsKKyAgICAgICAgY2FwKENh
cHR1cmVQaXhlbFN0b3JlaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfUEFDS19ST1dfTEVOR1RILCBh
cGlTdGF0ZS5nZXRQYWNrUm93TGVuZ3RoKCkpKTsKKyAgICAgICAgY3VycmVudFBhY2tTdGF0ZS5y
b3dMZW5ndGggPSBhcGlTdGF0ZS5nZXRQYWNrUm93TGVuZ3RoKCk7CisgICAgfQorCisgICAgaWYg
KGN1cnJlbnRQYWNrU3RhdGUuc2tpcFJvd3MgIT0gYXBpU3RhdGUuZ2V0UGFja1NraXBSb3dzKCkp
CisgICAgeworICAgICAgICBjYXAoQ2FwdHVyZVBpeGVsU3RvcmVpKHJlcGxheVN0YXRlLCB0cnVl
LCBHTF9QQUNLX1NLSVBfUk9XUywgYXBpU3RhdGUuZ2V0UGFja1NraXBSb3dzKCkpKTsKKyAgICAg
ICAgY3VycmVudFBhY2tTdGF0ZS5za2lwUm93cyA9IGFwaVN0YXRlLmdldFBhY2tTa2lwUm93cygp
OworICAgIH0KKworICAgIGlmIChjdXJyZW50UGFja1N0YXRlLnNraXBQaXhlbHMgIT0gYXBpU3Rh
dGUuZ2V0UGFja1NraXBQaXhlbHMoKSkKKyAgICB7CisgICAgICAgIGNhcChDYXB0dXJlUGl4ZWxT
dG9yZWkocmVwbGF5U3RhdGUsIHRydWUsIEdMX1BBQ0tfU0tJUF9QSVhFTFMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXBpU3RhdGUuZ2V0UGFja1NraXBQaXhlbHMoKSkpOworICAg
ICAgICBjdXJyZW50UGFja1N0YXRlLnNraXBQaXhlbHMgPSBhcGlTdGF0ZS5nZXRQYWNrU2tpcFBp
eGVscygpOworICAgIH0KKworICAgIC8vIFdlIHNldCB1bnBhY2sgYWxpZ25tZW50IGFib3ZlLCBu
byBuZWVkIHRvIGNoYW5nZSBpdCBoZXJlCisgICAgQVNTRVJUKGN1cnJlbnRVbnBhY2tTdGF0ZS5h
bGlnbm1lbnQgPT0gMSk7CisgICAgaWYgKGN1cnJlbnRVbnBhY2tTdGF0ZS5yb3dMZW5ndGggIT0g
YXBpU3RhdGUuZ2V0VW5wYWNrUm93TGVuZ3RoKCkpCisgICAgeworICAgICAgICBjYXAoQ2FwdHVy
ZVBpeGVsU3RvcmVpKHJlcGxheVN0YXRlLCB0cnVlLCBHTF9VTlBBQ0tfUk9XX0xFTkdUSCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlTdGF0ZS5nZXRVbnBhY2tSb3dMZW5ndGgo
KSkpOworICAgICAgICBjdXJyZW50VW5wYWNrU3RhdGUucm93TGVuZ3RoID0gYXBpU3RhdGUuZ2V0
VW5wYWNrUm93TGVuZ3RoKCk7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnRVbnBhY2tTdGF0ZS5z
a2lwUm93cyAhPSBhcGlTdGF0ZS5nZXRVbnBhY2tTa2lwUm93cygpKQorICAgIHsKKyAgICAgICAg
Y2FwKENhcHR1cmVQaXhlbFN0b3JlaShyZXBsYXlTdGF0ZSwgdHJ1ZSwgR0xfVU5QQUNLX1NLSVBf
Uk9XUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlTdGF0ZS5nZXRVbnBhY2tT
a2lwUm93cygpKSk7CisgICAgICAgIGN1cnJlbnRVbnBhY2tTdGF0ZS5za2lwUm93cyA9IGFwaVN0
YXRlLmdldFVucGFja1NraXBSb3dzKCk7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnRVbnBhY2tT
dGF0ZS5za2lwUGl4ZWxzICE9IGFwaVN0YXRlLmdldFVucGFja1NraXBQaXhlbHMoKSkKKyAgICB7
CisgICAgICAgIGNhcChDYXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUsIHRydWUsIEdMX1VO
UEFDS19TS0lQX1BJWEVMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlTdGF0
ZS5nZXRVbnBhY2tTa2lwUGl4ZWxzKCkpKTsKKyAgICAgICAgY3VycmVudFVucGFja1N0YXRlLnNr
aXBQaXhlbHMgPSBhcGlTdGF0ZS5nZXRVbnBhY2tTa2lwUGl4ZWxzKCk7CisgICAgfQorCisgICAg
aWYgKGN1cnJlbnRVbnBhY2tTdGF0ZS5pbWFnZUhlaWdodCAhPSBhcGlTdGF0ZS5nZXRVbnBhY2tJ
bWFnZUhlaWdodCgpKQorICAgIHsKKyAgICAgICAgY2FwKENhcHR1cmVQaXhlbFN0b3JlaShyZXBs
YXlTdGF0ZSwgdHJ1ZSwgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcGlTdGF0ZS5nZXRVbnBhY2tJbWFnZUhlaWdodCgpKSk7CisgICAgICAg
IGN1cnJlbnRVbnBhY2tTdGF0ZS5pbWFnZUhlaWdodCA9IGFwaVN0YXRlLmdldFVucGFja0ltYWdl
SGVpZ2h0KCk7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnRVbnBhY2tTdGF0ZS5za2lwSW1hZ2Vz
ICE9IGFwaVN0YXRlLmdldFVucGFja1NraXBJbWFnZXMoKSkKKyAgICB7CisgICAgICAgIGNhcChD
YXB0dXJlUGl4ZWxTdG9yZWkocmVwbGF5U3RhdGUsIHRydWUsIEdMX1VOUEFDS19TS0lQX0lNQUdF
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlTdGF0ZS5nZXRVbnBhY2tTa2lw
SW1hZ2VzKCkpKTsKKyAgICAgICAgY3VycmVudFVucGFja1N0YXRlLnNraXBJbWFnZXMgPSBhcGlT
dGF0ZS5nZXRVbnBhY2tTa2lwSW1hZ2VzKCk7CisgICAgfQorCiAgICAgLy8gQ2xlYXIgc3RhdGUu
IE1pc3NpbmcgRVMgMy54IGZlYXR1cmVzLgogICAgIC8vIFRPRE8oaHR0cDovL2FuZ2xlYnVnLmNv
bS8zNjYyKTogQ29tcGxldGUgc3RhdGUgY2FwdHVyZS4KICAgICBjb25zdCBnbDo6Q29sb3JGICZj
dXJyZW50Q2xlYXJDb2xvciA9IGFwaVN0YXRlLmdldENvbG9yQ2xlYXJWYWx1ZSgpOwpAQCAtMTc3
NCw2ICsyMzk1LDExIEBAIHZvaWQgQ2FwdHVyZU1pZEV4ZWN1dGlvblNldHVwKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICBjYXAoQ2FwdHVyZUNsZWFyRGVwdGhmKHJlcGxheVN0
YXRlLCB0cnVlLCBhcGlTdGF0ZS5nZXREZXB0aENsZWFyVmFsdWUoKSkpOwogICAgIH0KIAorICAg
IGlmIChhcGlTdGF0ZS5nZXRTdGVuY2lsQ2xlYXJWYWx1ZSgpICE9IDApCisgICAgeworICAgICAg
ICBjYXAoQ2FwdHVyZUNsZWFyU3RlbmNpbChyZXBsYXlTdGF0ZSwgdHJ1ZSwgYXBpU3RhdGUuZ2V0
U3RlbmNpbENsZWFyVmFsdWUoKSkpOworICAgIH0KKwogICAgIC8vIFZpZXdwb3J0IC8gc2Npc3Nv
ciAvIGNsaXBwaW5nIHBsYW5lcy4KICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZjdXJyZW50Vmll
d3BvcnQgPSBhcGlTdGF0ZS5nZXRWaWV3cG9ydCgpOwogICAgIGlmIChjdXJyZW50Vmlld3BvcnQg
IT0gZ2w6OlJlY3RhbmdsZSgpKQpAQCAtMTc5OSw2ICsyNDI1LDE0IEBAIHZvaWQgQ2FwdHVyZU1p
ZEV4ZWN1dGlvblNldHVwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VycmVudFNjaXNzb3Iud2lkdGgsIGN1cnJlbnRTY2lzc29yLmhlaWdo
dCkpOwogICAgIH0KIAorICAgIGNvbnN0IGdsOjpTeW5jTWFuYWdlciAmc3luY3MgPSBhcGlTdGF0
ZS5nZXRTeW5jTWFuYWdlckZvckNhcHR1cmUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnN5bmNJ
dGVyIDogc3luY3MpCisgICAgeworICAgICAgICAvLyBUT0RPOiBDcmVhdGUgZXhpc3Rpbmcgc3lu
YyBvYmplY3RzIChodHRwOi8vYW5nbGVidWcuY29tLzM2NjIpCisgICAgICAgICh2b2lkKXN5bmNJ
dGVyOworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorCiAgICAgLy8gQWxsb3cgdGhl
IHJlcGxheVN0YXRlIG9iamVjdCB0byBiZSBkZXN0cm95ZWQgY29udmVuaWVudGx5LgogICAgIHJl
cGxheVN0YXRlLnNldEJ1ZmZlckJpbmRpbmcoY29udGV4dCwgZ2w6OkJ1ZmZlckJpbmRpbmc6OkFy
cmF5LCBudWxscHRyKTsKIH0KQEAgLTE5NTYsNiArMjU5MCw3IEBAIFJlcGxheUNvbnRleHQ6On5S
ZXBsYXlDb250ZXh0KCkge30KIAogRnJhbWVDYXB0dXJlOjpGcmFtZUNhcHR1cmUoKQogICAgIDog
bUVuYWJsZWQodHJ1ZSksCisgICAgICBtQ29tcHJlc3Npb24odHJ1ZSksCiAgICAgICBtQ2xpZW50
VmVydGV4QXJyYXlNYXB7fSwKICAgICAgIG1GcmFtZUluZGV4KDApLAogICAgICAgbUZyYW1lU3Rh
cnQoMCksCkBAIC0yMDEwLDEwICsyNjQ1LDIyMCBAQCBGcmFtZUNhcHR1cmU6OkZyYW1lQ2FwdHVy
ZSgpCiAgICAgICAgIC8vIE9wdGlvbmFsIGxhYmVsIHRvIHByb3ZpZGUgdW5pcXVlIGZpbGUgbmFt
ZXMgYW5kIG5hbWVzcGFjZXMKICAgICAgICAgbUNhcHR1cmVMYWJlbCA9IGxhYmVsRnJvbUVudjsK
ICAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBjb21wcmVzc2lvbkZyb21FbnYgPSBhbmdsZTo6R2V0
RW52aXJvbm1lbnRWYXIoa0NvbXByZXNzaW9uKTsKKyAgICBpZiAoY29tcHJlc3Npb25Gcm9tRW52
ID09ICIwIikKKyAgICB7CisgICAgICAgIG1Db21wcmVzc2lvbiA9IGZhbHNlOworICAgIH0KIH0K
IAogRnJhbWVDYXB0dXJlOjp+RnJhbWVDYXB0dXJlKCkgPSBkZWZhdWx0OwogCit2b2lkIEZyYW1l
Q2FwdHVyZTo6Y2FwdHVyZUNvbXByZXNzZWRUZXh0dXJlRGF0YShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwpCit7CisgICAgLy8gRm9yIGNvbXByZXNz
ZWQgdGV4dHVyZXMsIHRyYWNrIGEgc2hhZG93IGNvcHkgb2YgdGhlIGRhdGEKKyAgICAvLyBmb3Ig
dXNlIGR1cmluZyBtaWQtZXhlY3V0aW9uIGNhcHR1cmUsIHJhdGhlciB0aGFuIHJlYWRpbmcgaXQg
YmFjaworICAgIC8vIHdpdGggQU5HTEVfZ2V0X2ltYWdlCisKKyAgICAvLyBTdG9yaW5nIHRoZSBj
b21wcmVzc2VkIGRhdGEgaXMgaGFuZGxlZCB0aGUgc2FtZSBmb3IgYWxsIGVudHJ5IHBvaW50cywK
KyAgICAvLyB0aGV5IGp1c3QgaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnQgcGFyYW1ldGVyIGxvY2F0
aW9ucworICAgIGludCBkYXRhUGFyYW1PZmZzZXQgICAgPSAtMTsKKyAgICBpbnQgeG9mZnNldFBh
cmFtT2Zmc2V0ID0gLTE7CisgICAgaW50IHlvZmZzZXRQYXJhbU9mZnNldCA9IC0xOworICAgIGlu
dCB6b2Zmc2V0UGFyYW1PZmZzZXQgPSAtMTsKKyAgICBpbnQgd2lkdGhQYXJhbU9mZnNldCAgID0g
LTE7CisgICAgaW50IGhlaWdodFBhcmFtT2Zmc2V0ICA9IC0xOworICAgIGludCBkZXB0aFBhcmFt
T2Zmc2V0ICAgPSAtMTsKKyAgICBzd2l0Y2ggKGNhbGwuZW50cnlQb2ludCkKKyAgICB7CisgICAg
ICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEOgorICAgICAg
ICAgICAgeG9mZnNldFBhcmFtT2Zmc2V0ID0gMjsKKyAgICAgICAgICAgIHlvZmZzZXRQYXJhbU9m
ZnNldCA9IDM7CisgICAgICAgICAgICB6b2Zmc2V0UGFyYW1PZmZzZXQgPSA0OworICAgICAgICAg
ICAgd2lkdGhQYXJhbU9mZnNldCAgID0gNTsKKyAgICAgICAgICAgIGhlaWdodFBhcmFtT2Zmc2V0
ICA9IDY7CisgICAgICAgICAgICBkZXB0aFBhcmFtT2Zmc2V0ICAgPSA3OworICAgICAgICAgICAg
ZGF0YVBhcmFtT2Zmc2V0ICAgID0gMTA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBnbDo6RW50cnlQb2ludDo6Q29tcHJlc3NlZFRleEltYWdlM0Q6CisgICAgICAgICAgICB3aWR0
aFBhcmFtT2Zmc2V0ICA9IDQ7CisgICAgICAgICAgICBoZWlnaHRQYXJhbU9mZnNldCA9IDU7Cisg
ICAgICAgICAgICBkZXB0aFBhcmFtT2Zmc2V0ICA9IDY7CisgICAgICAgICAgICBkYXRhUGFyYW1P
ZmZzZXQgICA9IDk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnbDo6RW50cnlQ
b2ludDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQ6CisgICAgICAgICAgICB4b2Zmc2V0UGFyYW1P
ZmZzZXQgPSAyOworICAgICAgICAgICAgeW9mZnNldFBhcmFtT2Zmc2V0ID0gMzsKKyAgICAgICAg
ICAgIHdpZHRoUGFyYW1PZmZzZXQgICA9IDQ7CisgICAgICAgICAgICBoZWlnaHRQYXJhbU9mZnNl
dCAgPSA1OworICAgICAgICAgICAgZGF0YVBhcmFtT2Zmc2V0ICAgID0gODsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpDb21wcmVzc2VkVGV4SW1hZ2Uy
RDoKKyAgICAgICAgICAgIHdpZHRoUGFyYW1PZmZzZXQgID0gMzsKKyAgICAgICAgICAgIGhlaWdo
dFBhcmFtT2Zmc2V0ID0gNDsKKyAgICAgICAgICAgIGRhdGFQYXJhbU9mZnNldCAgID0gNzsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gVGhlcmUg
c2hvdWxkIGJlIG5vIG90aGVyIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbgorICAgICAgICAgICAg
QVNTRVJUKDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ2w6OkJ1ZmZlciAq
cGl4ZWxVbnBhY2tCdWZmZXIgPQorICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdl
dEJ1ZmZlcihnbDo6QnVmZmVyQmluZGluZzo6UGl4ZWxVbnBhY2spOworCisgICAgY29uc3QgdWlu
dDhfdCAqZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oCisgICAgICAgIGNhbGwu
cGFyYW1zLmdldFBhcmFtKCJkYXRhIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlciwgZGF0
YVBhcmFtT2Zmc2V0KQorICAgICAgICAgICAgLnZhbHVlLnZvaWRDb25zdFBvaW50ZXJWYWwpOwor
CisgICAgR0xzaXplaSBpbWFnZVNpemUgPSBjYWxsLnBhcmFtcy5nZXRQYXJhbSgiaW1hZ2VTaXpl
IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgZGF0YVBhcmFtT2Zmc2V0IC0gMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuR0xzaXplaVZhbDsKKworICAgIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVsRGF0YSA9IG51bGxwdHI7CisKKyAgICBpZiAocGl4ZWxVbnBhY2tCdWZmZXIpCisgICAg
eworICAgICAgICAvLyBJZiB1c2luZyBwaXhlbCB1bnBhY2sgYnVmZmVyLCBtYXAgdGhlIGJ1ZmZl
ciBhbmQgdHJhY2sgaXRzIGRhdGEKKyAgICAgICAgQVNTRVJUKCFwaXhlbFVucGFja0J1ZmZlci0+
aXNNYXBwZWQoKSk7CisgICAgICAgICh2b2lkKXBpeGVsVW5wYWNrQnVmZmVyLT5tYXBSYW5nZShj
b250ZXh0LCByZWludGVycHJldF9jYXN0PEdMaW50cHRyPihkYXRhKSwgaW1hZ2VTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTUFQX1JFQURfQklUKTsK
KworICAgICAgICBwaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4o
cGl4ZWxVbnBhY2tCdWZmZXItPmdldE1hcFBvaW50ZXIoKSk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHBpeGVsRGF0YSA9IGRhdGE7CisgICAgfQorCisgICAgaWYgKCFwaXhlbERh
dGEpCisgICAgeworICAgICAgICAvLyBJZiBubyBwb2ludGVyIHdhcyBwcm92aWRlZCBhbmQgd2Ug
d2VyZW4ndCBhYmxlIHRvIG1hcCB0aGUgYnVmZmVyLCB0aGVyZSBpcyBubyBkYXRhIHRvCisgICAg
ICAgIC8vIGNhcHR1cmUKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIExvb2sgdXAg
dGhlIHRleHR1cmUgdHlwZQorICAgIGdsOjpUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCA9Cisg
ICAgICAgIGNhbGwucGFyYW1zLmdldFBhcmFtKCJ0YXJnZXRQYWNrZWQiLCBQYXJhbVR5cGU6OlRU
ZXh0dXJlVGFyZ2V0LCAwKS52YWx1ZS5UZXh0dXJlVGFyZ2V0VmFsOworICAgIGdsOjpUZXh0dXJl
VHlwZSB0ZXh0dXJlVHlwZSA9IGdsOjpUZXh0dXJlVGFyZ2V0VG9UeXBlKHRhcmdldFBhY2tlZCk7
CisKKyAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBpbmNvbWluZyBkYXRhCisgICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4gY29tcHJlc3NlZERhdGE7CisgICAgY29tcHJlc3NlZERhdGEuYXNzaWdu
KHBpeGVsRGF0YSwgcGl4ZWxEYXRhICsgaW1hZ2VTaXplKTsKKworICAgIC8vIExvb2sgdXAgdGhl
IGN1cnJlbnRseSBib3VuZCB0ZXh0dXJlCisgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldFRleHR1cmUodGV4dHVyZVR5cGUpOworICAgIEFTU0VS
VCh0ZXh0dXJlKTsKKworICAgIC8vIFJlY29yZCB0aGUgZGF0YSwgaW5kZXhlZCBieSB0ZXh0dXJl
SUQgYW5kIGxldmVsCisgICAgR0xpbnQgbGV2ZWwgICAgICAgICAgICAgPSBjYWxsLnBhcmFtcy5n
ZXRQYXJhbSgibGV2ZWwiLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWw7Cisg
ICAgYXV0byBmb3VuZFRleHR1cmVMZXZlbHMgPSBtQ2FjaGVkVGV4dHVyZUxldmVsRGF0YS5maW5k
KHRleHR1cmUtPmlkKCkpOworICAgIGlmIChmb3VuZFRleHR1cmVMZXZlbHMgPT0gbUNhY2hlZFRl
eHR1cmVMZXZlbERhdGEuZW5kKCkpCisgICAgeworICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0
ZXh0dXJlIElEIGRhdGEuCisgICAgICAgIGF1dG8gZW1wbGFjZVJlc3VsdCA9IG1DYWNoZWRUZXh0
dXJlTGV2ZWxEYXRhLmVtcGxhY2UodGV4dHVyZS0+aWQoKSwgVGV4dHVyZUxldmVscygpKTsKKyAg
ICAgICAgQVNTRVJUKGVtcGxhY2VSZXN1bHQuc2Vjb25kKTsKKyAgICAgICAgZm91bmRUZXh0dXJl
TGV2ZWxzID0gZW1wbGFjZVJlc3VsdC5maXJzdDsKKyAgICB9CisKKyAgICAvLyBHZXQgdGhlIGZv
cm1hdCBvZiB0aGUgdGV4dHVyZSBmb3IgdXNlIHdpdGggdGhlIGNvbXByZXNzZWQgYmxvY2sgc2l6
ZSBtYXRoLgorICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0ID0gKnRleHR1cmUt
PmdldEZvcm1hdCh0YXJnZXRQYWNrZWQsIGxldmVsKS5pbmZvOworCisgICAgVGV4dHVyZUxldmVs
cyAmZm91bmRMZXZlbHMgPSBmb3VuZFRleHR1cmVMZXZlbHMtPnNlY29uZDsKKyAgICBhdXRvIGZv
dW5kTGV2ZWwgICAgICAgICAgICA9IGZvdW5kTGV2ZWxzLmZpbmQobGV2ZWwpOworCisgICAgLy8g
RGl2aWRlIGRpbWVuc2lvbnMgYWNjb3JkaW5nIHRvIGJsb2NrIHNpemUuCisgICAgY29uc3QgZ2w6
OkV4dGVudHMgJmxldmVsRXh0ZW50cyA9IHRleHR1cmUtPmdldEV4dGVudHModGFyZ2V0UGFja2Vk
LCBsZXZlbCk7CisKKyAgICBpZiAoZm91bmRMZXZlbCA9PSBmb3VuZExldmVscy5lbmQoKSkKKyAg
ICB7CisgICAgICAgIC8vIEluaXRpYWxpemUgdGV4dHVyZSByZWN0YW5nbGUgZGF0YS4gRGVmYXVs
dCBpbml0IHRvIHplcm8gZm9yIHN0YWJpbGl0eS4KKyAgICAgICAgR0x1aW50IHNpemVJbkJ5dGVz
OworICAgICAgICBib29sIHJlc3VsdCA9IGZvcm1hdC5jb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6
ZShsZXZlbEV4dGVudHMsICZzaXplSW5CeXRlcyk7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOwor
CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG5ld1BpeGVsRGF0YShzaXplSW5CeXRlcywg
MCk7CisgICAgICAgIGF1dG8gZW1wbGFjZVJlc3VsdCA9IGZvdW5kTGV2ZWxzLmVtcGxhY2UobGV2
ZWwsIHN0ZDo6bW92ZShuZXdQaXhlbERhdGEpKTsKKyAgICAgICAgQVNTRVJUKGVtcGxhY2VSZXN1
bHQuc2Vjb25kKTsKKyAgICAgICAgZm91bmRMZXZlbCA9IGVtcGxhY2VSZXN1bHQuZmlyc3Q7Cisg
ICAgfQorCisgICAgLy8gVW5wYWNrIHRoZSB2YXJpb3VzIHBpeGVsIHJlY3RhbmdsZSBwYXJhbWV0
ZXJzLgorICAgIEFTU0VSVCh3aWR0aFBhcmFtT2Zmc2V0ICE9IC0xKTsKKyAgICBBU1NFUlQoaGVp
Z2h0UGFyYW1PZmZzZXQgIT0gLTEpOworICAgIEdMc2l6ZWkgcGl4ZWxXaWR0aCA9CisgICAgICAg
IGNhbGwucGFyYW1zLmdldFBhcmFtKCJ3aWR0aCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIHdpZHRo
UGFyYW1PZmZzZXQpLnZhbHVlLkdMc2l6ZWlWYWw7CisgICAgR0xzaXplaSBwaXhlbEhlaWdodCA9
CisgICAgICAgIGNhbGwucGFyYW1zLmdldFBhcmFtKCJoZWlnaHQiLCBQYXJhbVR5cGU6OlRHTHNp
emVpLCBoZWlnaHRQYXJhbU9mZnNldCkudmFsdWUuR0xzaXplaVZhbDsKKyAgICBHTHNpemVpIHBp
eGVsRGVwdGggPSAxOworICAgIGlmIChkZXB0aFBhcmFtT2Zmc2V0ICE9IC0xKQorICAgIHsKKyAg
ICAgICAgcGl4ZWxEZXB0aCA9CisgICAgICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgiZGVw
dGgiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBkZXB0aFBhcmFtT2Zmc2V0KS52YWx1ZS5HTHNpemVp
VmFsOworICAgIH0KKworICAgIEdMaW50IHhvZmZzZXQgPSAwOworICAgIEdMaW50IHlvZmZzZXQg
PSAwOworICAgIEdMaW50IHpvZmZzZXQgPSAwOworCisgICAgaWYgKHhvZmZzZXRQYXJhbU9mZnNl
dCAhPSAtMSkKKyAgICB7CisgICAgICAgIHhvZmZzZXQgPQorICAgICAgICAgICAgY2FsbC5wYXJh
bXMuZ2V0UGFyYW0oInhvZmZzZXQiLCBQYXJhbVR5cGU6OlRHTGludCwgeG9mZnNldFBhcmFtT2Zm
c2V0KS52YWx1ZS5HTGludFZhbDsKKyAgICB9CisKKyAgICBpZiAoeW9mZnNldFBhcmFtT2Zmc2V0
ICE9IC0xKQorICAgIHsKKyAgICAgICAgeW9mZnNldCA9CisgICAgICAgICAgICBjYWxsLnBhcmFt
cy5nZXRQYXJhbSgieW9mZnNldCIsIFBhcmFtVHlwZTo6VEdMaW50LCB5b2Zmc2V0UGFyYW1PZmZz
ZXQpLnZhbHVlLkdMaW50VmFsOworICAgIH0KKworICAgIGlmICh6b2Zmc2V0UGFyYW1PZmZzZXQg
IT0gLTEpCisgICAgeworICAgICAgICB6b2Zmc2V0ID0KKyAgICAgICAgICAgIGNhbGwucGFyYW1z
LmdldFBhcmFtKCJ6b2Zmc2V0IiwgUGFyYW1UeXBlOjpUR0xpbnQsIHpvZmZzZXRQYXJhbU9mZnNl
dCkudmFsdWUuR0xpbnRWYWw7CisgICAgfQorCisgICAgLy8gU2luY2Ugd2UncmUgZGVhbGluZyBp
biA0eDQgYmxvY2tzLCBzY2FsZSBkb3duIHRoZSB3aWR0aC9oZWlnaHQgcGl4ZWwgb2Zmc2V0cy4K
KyAgICBBU1NFUlQoZm9ybWF0LmNvbXByZXNzZWRCbG9ja1dpZHRoID09IDQpOworICAgIEFTU0VS
VChmb3JtYXQuY29tcHJlc3NlZEJsb2NrSGVpZ2h0ID09IDQpOworICAgIEFTU0VSVChmb3JtYXQu
Y29tcHJlc3NlZEJsb2NrRGVwdGggPT0gMSk7CisgICAgcGl4ZWxXaWR0aCA+Pj0gMjsKKyAgICBw
aXhlbEhlaWdodCA+Pj0gMjsKKyAgICB4b2Zmc2V0ID4+PSAyOworICAgIHlvZmZzZXQgPj49IDI7
CisKKyAgICAvLyBVcGRhdGUgcGl4ZWwgZGF0YS4KKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiAm
bGV2ZWxEYXRhID0gZm91bmRMZXZlbC0+c2Vjb25kOworCisgICAgR0xpbnQgcGl4ZWxCeXRlcyA9
IHN0YXRpY19jYXN0PEdMaW50Pihmb3JtYXQucGl4ZWxCeXRlcyk7CisKKyAgICBHTGludCBwaXhl
bFJvd1BpdGNoICAgPSBwaXhlbFdpZHRoICogcGl4ZWxCeXRlczsKKyAgICBHTGludCBwaXhlbERl
cHRoUGl0Y2ggPSBwaXhlbFJvd1BpdGNoICogcGl4ZWxIZWlnaHQ7CisgICAgR0xpbnQgbGV2ZWxS
b3dQaXRjaCAgID0gKGxldmVsRXh0ZW50cy53aWR0aCA+PiAyKSAqIHBpeGVsQnl0ZXM7CisgICAg
R0xpbnQgbGV2ZWxEZXB0aFBpdGNoID0gbGV2ZWxSb3dQaXRjaCAqIChsZXZlbEV4dGVudHMuaGVp
Z2h0ID4+IDIpOworCisgICAgZm9yIChHTGludCB6aW5kZXggPSAwOyB6aW5kZXggPCBwaXhlbERl
cHRoOyArK3ppbmRleCkKKyAgICB7CisgICAgICAgIEdMaW50IHogPSB6aW5kZXggKyB6b2Zmc2V0
OworICAgICAgICBmb3IgKEdMaW50IHlpbmRleCA9IDA7IHlpbmRleCA8IHBpeGVsSGVpZ2h0OyAr
K3lpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgeSAgICAgICAgICAgPSB5aW5k
ZXggKyB5b2Zmc2V0OworICAgICAgICAgICAgR0xpbnQgcGl4ZWxPZmZzZXQgPSB6aW5kZXggKiBw
aXhlbERlcHRoUGl0Y2ggKyB5aW5kZXggKiBwaXhlbFJvd1BpdGNoOworICAgICAgICAgICAgR0xp
bnQgbGV2ZWxPZmZzZXQgPSB6ICogbGV2ZWxEZXB0aFBpdGNoICsgeSAqIGxldmVsUm93UGl0Y2gg
KyB4b2Zmc2V0ICogcGl4ZWxCeXRlczsKKyAgICAgICAgICAgIG1lbWNweSgmbGV2ZWxEYXRhW2xl
dmVsT2Zmc2V0XSwgJnBpeGVsRGF0YVtwaXhlbE9mZnNldF0sIHBpeGVsUm93UGl0Y2gpOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHBpeGVsVW5wYWNrQnVmZmVyKQorICAgIHsKKyAgICAg
ICAgR0xib29sZWFuIHN1Y2Nlc3M7CisgICAgICAgICh2b2lkKXBpeGVsVW5wYWNrQnVmZmVyLT51
bm1hcChjb250ZXh0LCAmc3VjY2Vzcyk7CisgICAgICAgIEFTU0VSVChzdWNjZXNzKTsKKyAgICB9
Cit9CisKIHZvaWQgRnJhbWVDYXB0dXJlOjptYXliZUNhcHR1cmVDbGllbnREYXRhKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LCBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCkKIHsKICAgICBzd2l0
Y2ggKGNhbGwuZW50cnlQb2ludCkKQEAgLTIxMDYsNiArMjk1MSw5MSBAQCB2b2lkIEZyYW1lQ2Fw
dHVyZTo6bWF5YmVDYXB0dXJlQ2xpZW50RGF0YShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
Y29uc3QgQ2FsbAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IGdsOjpFbnRyeVBvaW50OjpDb21wcmVzc2VkVGV4SW1hZ2UxRDoKKyAgICAgICAgY2FzZSBnbDo6
RW50cnlQb2ludDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMUQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6Q29tcHJlc3NlZFRleEltYWdlMkQ6CisgICAgICAg
IGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkNvbXByZXNzZWRUZXhJbWFnZTNEOgorICAgICAgICBjYXNl
IGdsOjpFbnRyeVBvaW50OjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDoKKyAgICAgICAgY2FzZSBn
bDo6RW50cnlQb2ludDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0Q6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhcHR1cmVDb21wcmVzc2VkVGV4dHVyZURhdGEoY29udGV4dCwgY2FsbCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6
OkRlbGV0ZVRleHR1cmVzOgorICAgICAgICB7CisgICAgICAgICAgICAvLyBGcmVlIGFueSBUZXh0
dXJlTGV2ZWxEYXRhTWFwIGVudHJpZXMgYmVpbmcgdHJhY2tlZCBmb3IgdGhpcyB0ZXh0dXJlCisg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRvIGNvdmVyIHRoZSBzY2VuYXJpbyB3aGVyZSBhIHRleHR1
cmUgaGFzIGJlZW4gY3JlYXRlZCwgaXRzCisgICAgICAgICAgICAvLyBsZXZlbHMgY2FjaGVkLCB0
aGVuIHRleHR1cmUgZGVsZXRlZCBhbmQgcmVjcmVhdGVkLCByZWNlaXZpbmcgdGhlIHNhbWUgSUQK
KworICAgICAgICAgICAgLy8gTG9vayB1cCBob3cgbWFueSB0ZXh0dXJlcyBhcmUgYmVpbmcgZGVs
ZXRlZAorICAgICAgICAgICAgR0xzaXplaSBuID0gY2FsbC5wYXJhbXMuZ2V0UGFyYW0oIm4iLCBQ
YXJhbVR5cGU6OlRHTHNpemVpLCAwKS52YWx1ZS5HTHNpemVpVmFsOworCisgICAgICAgICAgICAv
LyBMb29rIHVwIHRoZSBwb2ludGVyIHRvIGxpc3Qgb2YgdGV4dHVyZXMKKyAgICAgICAgICAgIGNv
bnN0IGdsOjpUZXh0dXJlSUQgKnRleHR1cmVJRHMgPQorICAgICAgICAgICAgICAgIGNhbGwucGFy
YW1zLmdldFBhcmFtKCJ0ZXh0dXJlc1BhY2tlZCIsIFBhcmFtVHlwZTo6VFRleHR1cmVJRENvbnN0
UG9pbnRlciwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlRleHR1cmVJRENvbnN0UG9p
bnRlclZhbDsKKworICAgICAgICAgICAgLy8gRm9yIGVhY2ggdGV4dHVyZSBsaXN0ZWQgZm9yIGRl
bGV0aW9uCisgICAgICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBuOyArK2kpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gTG9vayBpdCB1cCBpbiB0aGUgY2FjaGUsIGFu
ZCBkZWxldGUgaXQgaWYgZm91bmQKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvICZmb3VuZFRl
eHR1cmVMZXZlbHMgPSBtQ2FjaGVkVGV4dHVyZUxldmVsRGF0YS5maW5kKHRleHR1cmVJRHNbaV0p
OworICAgICAgICAgICAgICAgIGlmIChmb3VuZFRleHR1cmVMZXZlbHMgIT0gbUNhY2hlZFRleHR1
cmVMZXZlbERhdGEuZW5kKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAvLyBEZWxldGUgYWxsIHRleHR1cmUgbGV2ZWxzIGF0IG9uY2UKKyAgICAgICAgICAgICAgICAg
ICAgbUNhY2hlZFRleHR1cmVMZXZlbERhdGEuZXJhc2UoZm91bmRUZXh0dXJlTGV2ZWxzKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6Ok1hcEJ1ZmZlcjoKKyAgICAgICAg
Y2FzZSBnbDo6RW50cnlQb2ludDo6TWFwQnVmZmVyT0VTOgorICAgICAgICBjYXNlIGdsOjpFbnRy
eVBvaW50OjpNYXBCdWZmZXJSYW5nZUVYVDoKKyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6
VW5tYXBCdWZmZXJPRVM6CisgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVubWFwTmFtZWRC
dWZmZXI6CisgICAgICAgIHsKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6TWFw
QnVmZmVyUmFuZ2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgYWNjZXNzIGJp
dHMgdG8gc2VlIGlmIGNvbnRlbnRzIG1heSBiZSBtb2RpZmllZAorICAgICAgICAgICAgR0xiaXRm
aWVsZCBhY2Nlc3MgPQorICAgICAgICAgICAgICAgIGNhbGwucGFyYW1zLmdldFBhcmFtKCJhY2Nl
c3MiLCBQYXJhbVR5cGU6OlRHTGJpdGZpZWxkLCAzKS52YWx1ZS5HTGJpdGZpZWxkVmFsOworCisg
ICAgICAgICAgICBpZiAoYWNjZXNzICYgR0xfTUFQX1dSSVRFX0JJVCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGJ1ZmZlciB3YXMgbWFwcGVkIHdyaXRhYmxlLCB3
ZSBkb24ndCBoYXZlIGFueSB2aXNpYmlsaXR5IGludG8gd2hhdAorICAgICAgICAgICAgICAgIC8v
IGhhcHBlbnMgdG8gaXQuIFRoZXJlZm9yZSwgcmVtZW1iZXIgdGhlIGRldGFpbHMgYWJvdXQgaXQs
IGFuZCB3ZSdsbCByZWFkIGl0IGJhY2sKKyAgICAgICAgICAgICAgICAvLyBvbiBVbm1hcCB0byBy
ZXBvcHVsYXRlIGl0IGR1cmluZyByZXBsYXkuCisKKyAgICAgICAgICAgICAgICBnbDo6QnVmZmVy
QmluZGluZyB0YXJnZXQgPQorICAgICAgICAgICAgICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJh
bSgidGFyZ2V0UGFja2VkIiwgUGFyYW1UeXBlOjpUQnVmZmVyQmluZGluZywgMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC52YWx1ZS5CdWZmZXJCaW5kaW5nVmFsOworICAgICAgICAgICAgICAg
IEdMaW50cHRyIG9mZnNldCA9CisgICAgICAgICAgICAgICAgICAgIGNhbGwucGFyYW1zLmdldFBh
cmFtKCJvZmZzZXQiLCBQYXJhbVR5cGU6OlRHTGludHB0ciwgMSkudmFsdWUuR0xpbnRwdHJWYWw7
CisgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGggPQorICAgICAgICAgICAgICAgICAg
ICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgibGVuZ3RoIiwgUGFyYW1UeXBlOjpUR0xzaXplaXB0ciwg
MikudmFsdWUuR0xzaXplaXB0clZhbDsKKworICAgICAgICAgICAgICAgIG1CdWZmZXJEYXRhTWFw
W3RhcmdldF0gPSBzdGQ6Om1ha2VfcGFpcihvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgZ2w6OkVudHJ5
UG9pbnQ6OlVubWFwQnVmZmVyOgorICAgICAgICB7CisgICAgICAgICAgICAvLyBTZWUgaWYgd2Ug
bmVlZCB0byBjYXB0dXJlIHRoZSBidWZmZXIgY29udGVudHMKKyAgICAgICAgICAgIGNhcHR1cmVN
YXBwZWRCdWZmZXJTbmFwc2hvdChjb250ZXh0LCBjYWxsKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yMTE5LDggKzMwNDksNDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OmNhcHR1cmVDYWxsKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LCBDYWxsQ2FwdHVyZSAmJmNhbGwpCiAgICAgbVJlYWRCdWZm
ZXJTaXplID0gc3RkOjptYXgobVJlYWRCdWZmZXJTaXplLCBjYWxsLnBhcmFtcy5nZXRSZWFkQnVm
ZmVyU2l6ZSgpKTsKICAgICBtRnJhbWVDYWxscy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGNhbGwp
KTsKIAorICAgIG1heWJlQ2FwdHVyZVBvc3RDYWxsVXBkYXRlcyhjb250ZXh0KTsKK30KKwordm9p
ZCBGcmFtZUNhcHR1cmU6Om1heWJlQ2FwdHVyZVBvc3RDYWxsVXBkYXRlcyhjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCkKK3sKICAgICAvLyBQcm9jZXNzIHJlc291cmNlIElEIHVwZGF0ZXMuCiAg
ICAgTWF5YmVDYXB0dXJlVXBkYXRlUmVzb3VyY2VJRHMoJm1GcmFtZUNhbGxzKTsKKworICAgIGNv
bnN0IENhbGxDYXB0dXJlICZsYXN0Q2FsbCA9IG1GcmFtZUNhbGxzLmJhY2soKTsKKyAgICBzd2l0
Y2ggKGxhc3RDYWxsLmVudHJ5UG9pbnQpCisgICAgeworICAgICAgICBjYXNlIGdsOjpFbnRyeVBv
aW50OjpMaW5rUHJvZ3JhbToKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgUGFyYW1DYXB0
dXJlICZwYXJhbSA9CisgICAgICAgICAgICAgICAgbGFzdENhbGwucGFyYW1zLmdldFBhcmFtKCJw
cm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKTsKKyAgICAgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtID0KKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5nZXRQcm9ncmFtUmVzb2x2ZUxpbmsocGFyYW0udmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsKTsK
KyAgICAgICAgICAgIENhcHR1cmVVcGRhdGVVbmlmb3JtTG9jYXRpb25zKHByb2dyYW0sICZtRnJh
bWVDYWxscyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGds
OjpFbnRyeVBvaW50OjpVc2VQcm9ncmFtOgorICAgICAgICAgICAgQ2FwdHVyZVVwZGF0ZUN1cnJl
bnRQcm9ncmFtKGxhc3RDYWxsLCAmbUZyYW1lQ2FsbHMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkRlbGV0ZVByb2dyYW06CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnN0IFBhcmFtQ2FwdHVyZSAmcGFyYW0gPQorICAgICAgICAgICAgICAgIGxh
c3RDYWxsLnBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRl
clByb2dyYW1JRCwgMCk7CisgICAgICAgICAgICBDYXB0dXJlRGVsZXRlVW5pZm9ybUxvY2F0aW9u
cyhwYXJhbS52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsICZtRnJhbWVDYWxscyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpCaW5k
RnJhbWVidWZmZXI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IFBhcmFtQ2FwdHVyZSAm
dGFyZ2V0ID0gbGFzdENhbGwucGFyYW1zLmdldFBhcmFtKCJ0YXJnZXQiLCBQYXJhbVR5cGU6OlRH
TGVudW0sIDApOworICAgICAgICAgICAgY29uc3QgUGFyYW1DYXB0dXJlICZmcmFtZWJ1ZmZlciA9
CisgICAgICAgICAgICAgICAgbGFzdENhbGwucGFyYW1zLmdldFBhcmFtKCJmcmFtZWJ1ZmZlclBh
Y2tlZCIsIFBhcmFtVHlwZTo6VEZyYW1lYnVmZmVySUQsIDEpOworICAgICAgICAgICAgQ2FwdHVy
ZU9uRnJhbWVidWZmZXJDaGFuZ2UodGFyZ2V0LnZhbHVlLkdMZW51bVZhbCwgZnJhbWVidWZmZXIu
dmFsdWUuRnJhbWVidWZmZXJJRFZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZtRnJhbWVDYWxscyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiB2b2lkIEZyYW1l
Q2FwdHVyZTo6Y2FwdHVyZUNsaWVudEFycmF5U25hcHNob3QoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCkBAIC0yMTcyLDIwICszMTQyLDc4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpjYXB0dXJl
Q2xpZW50QXJyYXlTbmFwc2hvdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICB9CiB9
CiAKK3ZvaWQgRnJhbWVDYXB0dXJlOjpjYXB0dXJlTWFwcGVkQnVmZmVyU25hcHNob3QoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsKQoreworICAgIC8v
IElmIHRoZSBidWZmZXIgd2FzIG1hcHBlZCB3cml0YWJsZSwgd2UgbmVlZCB0byByZXN0b3JlIGl0
cyBkYXRhLCBzaW5jZSB3ZSBoYXZlIG5vIHZpc2liaWxpdHkKKyAgICAvLyBpbnRvIHdoYXQgdGhl
IGNsaWVudCBkaWQgdG8gdGhlIGJ1ZmZlciB3aGlsZSBtYXBwZWQKKyAgICAvLyBUaGlzIHNlcXVl
bmNlIHdpbGwgcmVzdWx0IGluIHJlcGxheSBjYWxscyBsaWtlIHRoaXM6CisgICAgLy8gICAuLi4K
KyAgICAvLyAgIGdNYXBwZWRCdWZmZXJEYXRhID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9QSVhFTF9V
TlBBQ0tfQlVGRkVSLCAwLCA2NTUzNiwgR0xfTUFQX1dSSVRFX0JJVCk7CisgICAgLy8gICAuLi4K
KyAgICAvLyAgIFVwZGF0ZUNsaWVudEJ1ZmZlckRhdGEoJmdCaW5hcnlEYXRhWzE2NDYzMTAyNF0s
IDY1NTM2KTsKKyAgICAvLyAgIGdsVW5tYXBCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7
CisgICAgLy8gICAuLi4KKworICAgIC8vIFJlLW1hcCB0aGUgYnVmZmVyLCB1c2luZyB0aGUgaW5m
byB3ZSB0cmFja2VkIGFib3V0IHRoZSBidWZmZXIKKyAgICBnbDo6QnVmZmVyQmluZGluZyB0YXJn
ZXQgPQorICAgICAgICBjYWxsLnBhcmFtcy5nZXRQYXJhbSgidGFyZ2V0UGFja2VkIiwgUGFyYW1U
eXBlOjpUQnVmZmVyQmluZGluZywgMCkudmFsdWUuQnVmZmVyQmluZGluZ1ZhbDsKKworICAgIGNv
bnN0IGF1dG8gJmJ1ZmZlckRhdGFJbmZvID0gbUJ1ZmZlckRhdGFNYXAuZmluZCh0YXJnZXQpOwor
ICAgIGlmIChidWZmZXJEYXRhSW5mbyA9PSBtQnVmZmVyRGF0YU1hcC5lbmQoKSkKKyAgICB7Cisg
ICAgICAgIC8vIFRoaXMgYnVmZmVyIHdhcyBub3QgbWFya2VkIHdyaXRhYmxlLCBzbyB3ZSBkaWQg
bm90IGJhY2sgaXQgdXAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdMaW50cHRyIG9m
ZnNldCAgID0gYnVmZmVyRGF0YUluZm8tPnNlY29uZC5maXJzdDsKKyAgICBHTHNpemVpcHRyIGxl
bmd0aCA9IGJ1ZmZlckRhdGFJbmZvLT5zZWNvbmQuc2Vjb25kOworCisgICAgLy8gTWFwIHRoZSBi
dWZmZXIgc28gd2UgY2FuIGNvcHkgaXRzIGNvbnRlbnRzIG91dAorICAgIGdsOjpCdWZmZXIgKmJ1
ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAg
QVNTRVJUKCFidWZmZXItPmlzTWFwcGVkKCkpOworICAgICh2b2lkKWJ1ZmZlci0+bWFwUmFuZ2Uo
Y29udGV4dCwgb2Zmc2V0LCBsZW5ndGgsIEdMX01BUF9SRUFEX0JJVCk7CisgICAgY29uc3QgdWlu
dDhfdCAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihidWZmZXItPmdl
dE1hcFBvaW50ZXIoKSk7CisKKyAgICAvLyBDcmVhdGUgdGhlIHBhcmFtZXRlcnMgdG8gb3VyIGhl
bHBlciBmb3IgdXNlIGR1cmluZyByZXBsYXkKKyAgICBQYXJhbUJ1ZmZlciBkYXRhUGFyYW1CdWZm
ZXI7CisKKyAgICAvLyBDYXB0dXJlIHRoZSBjdXJyZW50IGJ1ZmZlciBkYXRhIHdpdGggYSBiaW5h
cnkgcGFyYW0KKyAgICBQYXJhbUNhcHR1cmUgY2FwdHVyZURhdGEoInNvdXJjZSIsIFBhcmFtVHlw
ZTo6VHZvaWRDb25zdFBvaW50ZXIpOworICAgIENhcHR1cmVNZW1vcnkoZGF0YSwgbGVuZ3RoLCAm
Y2FwdHVyZURhdGEpOworICAgIGRhdGFQYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUoY2Fw
dHVyZURhdGEpKTsKKworICAgIC8vIEFsc28gdHJhY2sgaXRzIHNpemUgZm9yIHVzZSB3aXRoIG1l
bWNweQorICAgIGRhdGFQYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtPEdMc2l6ZWlwdHI+KCJzaXpl
IiwgUGFyYW1UeXBlOjpUR0xzaXplaXB0ciwgbGVuZ3RoKTsKKworICAgIC8vIENhbGwgdGhlIGhl
bHBlciB0aGF0IHBvcHVsYXRlcyB0aGUgYnVmZmVyIHdpdGggY2FwdHVyZWQgZGF0YQorICAgIG1G
cmFtZUNhbGxzLmVtcGxhY2VfYmFjaygiVXBkYXRlQ2xpZW50QnVmZmVyRGF0YSIsIHN0ZDo6bW92
ZShkYXRhUGFyYW1CdWZmZXIpKTsKKworICAgIC8vIFVubWFwIHRoZSBidWZmZXIgYW5kIG1vdmUg
b24KKyAgICBHTGJvb2xlYW4gZG9udENhcmU7CisgICAgKHZvaWQpYnVmZmVyLT51bm1hcChjb250
ZXh0LCAmZG9udENhcmUpOworfQorCiB2b2lkIEZyYW1lQ2FwdHVyZTo6b25FbmRGcmFtZShjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKICAgICAvLyBOb3RlIHRoYXQgd2UgY3VycmVudGx5
IGNhcHR1cmUgYmVmb3JlIHRoZSBzdGFydCBmcmFtZSB0byBjb2xsZWN0IHNoYWRlciBhbmQgcHJv
Z3JhbSBzb3VyY2VzLgogICAgIGlmICghbUZyYW1lQ2FsbHMuZW1wdHkoKSAmJiBtRnJhbWVJbmRl
eCA+PSBtRnJhbWVTdGFydCkKICAgICB7Ci0gICAgICAgIFdyaXRlQ3BwUmVwbGF5KG1PdXREaXJl
Y3RvcnksIGNvbnRleHQtPmlkKCksIG1DYXB0dXJlTGFiZWwsIG1GcmFtZUluZGV4LCBtRnJhbWVD
YWxscywKLSAgICAgICAgICAgICAgICAgICAgICAgbVNldHVwQ2FsbHMpOworICAgICAgICBXcml0
ZUNwcFJlcGxheShtQ29tcHJlc3Npb24sIG1PdXREaXJlY3RvcnksIGNvbnRleHQtPmlkKCksIG1D
YXB0dXJlTGFiZWwsIG1GcmFtZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBtRnJhbWVD
YWxscywgbVNldHVwQ2FsbHMsICZtQmluYXJ5RGF0YSk7CiAKICAgICAgICAgLy8gU2F2ZSB0aGUg
aW5kZXggZmlsZXMgYWZ0ZXIgdGhlIGxhc3QgZnJhbWUuCiAgICAgICAgIGlmIChtRnJhbWVJbmRl
eCA9PSBtRnJhbWVFbmQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFdyaXRlQ3BwUmVwbGF5SW5k
ZXhGaWxlcyhtT3V0RGlyZWN0b3J5LCBjb250ZXh0LT5pZCgpLCBtQ2FwdHVyZUxhYmVsLCBtRnJh
bWVTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRnJhbWVFbmQs
IG1SZWFkQnVmZmVyU2l6ZSwgbUNsaWVudEFycmF5U2l6ZXMsCisgICAgICAgICAgICBXcml0ZUNw
cFJlcGxheUluZGV4RmlsZXMobUNvbXByZXNzaW9uLCBtT3V0RGlyZWN0b3J5LCBjb250ZXh0LT5p
ZCgpLCBtQ2FwdHVyZUxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1GcmFtZVN0YXJ0LCBtRnJhbWVFbmQsIG1SZWFkQnVmZmVyU2l6ZSwgbUNsaWVudEFycmF5U2l6
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhc1Jlc291cmNlVHlw
ZSk7CisKKyAgICAgICAgICAgIGlmICghbUJpbmFyeURhdGEuZW1wdHkoKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBTYXZlQmluYXJ5RGF0YShtQ29tcHJlc3Npb24sIG1PdXREaXJl
Y3RvcnksIGNvbnRleHQtPmlkKCksIG1DYXB0dXJlTGFiZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbUJpbmFyeURhdGEpOworICAgICAgICAgICAgICAgIG1CaW5hcnlEYXRhLmNs
ZWFyKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyMDksOCArMzIz
Nyw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpvbkVuZEZyYW1lKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KQogICAgIGlmIChlbmFibGVkKCkgJiYgbUZyYW1lSW5kZXggPT0gbUZyYW1lU3RhcnQp
CiAgICAgewogICAgICAgICBtU2V0dXBDYWxscy5jbGVhcigpOwotICAgICAgICBDYXB0dXJlTWlk
RXhlY3V0aW9uU2V0dXAoY29udGV4dCwgJm1TZXR1cENhbGxzLCBtQ2FjaGVkU2hhZGVyU291cmNl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRQcm9ncmFtU291cmNl
cyk7CisgICAgICAgIENhcHR1cmVNaWRFeGVjdXRpb25TZXR1cChjb250ZXh0LCAmbVNldHVwQ2Fs
bHMsIG1DYWNoZWRTaGFkZXJTb3VyY2VzLCBtQ2FjaGVkUHJvZ3JhbVNvdXJjZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkVGV4dHVyZUxldmVsRGF0YSk7CiAgICAg
fQogfQogCkBAIC0yMjc4LDEyICszMzA2LDYgQEAgdm9pZCBGcmFtZUNhcHR1cmU6OnJlc2V0KCkK
ICAgICAvLyBuZWNlc3NhcnkuCiB9CiAKLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0gJm9zLCBjb25zdCBQYXJhbUNhcHR1cmUgJmNhcHR1cmUpCi17Ci0gICAgV3JpdGVQYXJh
bVR5cGVUb1N0cmVhbShvcywgY2FwdHVyZS50eXBlLCBjYXB0dXJlLnZhbHVlKTsKLSAgICByZXR1
cm4gb3M7Ci19Ci0KIHZvaWQgQ2FwdHVyZU1lbW9yeShjb25zdCB2b2lkICpzb3VyY2UsIHNpemVf
dCBzaXplLCBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsKICAgICBzdGQ6OnZlY3Rvcjx1
aW50OF90PiBkYXRhKHNpemUpOwpAQCAtMjI5Nyw2ICszMzE5LDI0IEBAIHZvaWQgQ2FwdHVyZVN0
cmluZyhjb25zdCBHTGNoYXIgKnN0ciwgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiAgICAg
Q2FwdHVyZU1lbW9yeShzdHIsIHN0cmxlbihzdHIpICsgMSwgcGFyYW1DYXB0dXJlKTsKIH0KIAor
dm9pZCBDYXB0dXJlU3RyaW5nTGltaXQoY29uc3QgR0xjaGFyICpzdHIsIHVpbnQzMl90IGxpbWl0
LCBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKK3sKKyAgICAvLyBXcml0ZSB0aGUgaW5jb21p
bmcgc3RyaW5nIHVwIHRvIGxpbWl0LCBpbmNsdWRpbmcgbnVsbCB0ZXJtaW5hdG9yCisgICAgc2l6
ZV90IGxlbmd0aCA9IHN0cmxlbihzdHIpICsgMTsKKworICAgIGlmIChsZW5ndGggPiBsaW1pdCkK
KyAgICB7CisgICAgICAgIC8vIElmIHRvbyBtYW55IGNoYXJhY3RlcnMsIHJlc2l6ZSB0aGUgc3Ry
aW5nIHRvIGZpdCBpbiB0aGUgbGltaXQKKyAgICAgICAgc3RkOjpzdHJpbmcgbmV3U3RyID0gc3Ry
OworICAgICAgICBuZXdTdHIucmVzaXplKGxpbWl0IC0gMSk7CisgICAgICAgIENhcHR1cmVTdHJp
bmcobmV3U3RyLmNfc3RyKCksIHBhcmFtQ2FwdHVyZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIENhcHR1cmVNZW1vcnkoc3RyLCBsZW5ndGgsIHBhcmFtQ2FwdHVyZSk7CisgICAg
fQorfQorCiBnbDo6UHJvZ3JhbSAqR2V0TGlua2VkUHJvZ3JhbUZvckNhcHR1cmUoY29uc3QgZ2w6
OlN0YXRlICZnbFN0YXRlLCBnbDo6U2hhZGVyUHJvZ3JhbUlEIGhhbmRsZSkKIHsKICAgICBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUuZ2V0U2hhZGVyUHJvZ3JhbU1hbmFnZXJGb3JDYXB0
dXJlKCkuZ2V0UHJvZ3JhbShoYW5kbGUpOwpAQCAtMjMyNiw3ICszMzY2LDkgQEAgdm9pZCBDYXB0
dXJlR2VuSGFuZGxlc0ltcGwoR0xzaXplaSBuLCBHTHVpbnQgKmhhbmRsZXMsIFBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXIKIH0KIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUR0xib29sZWFuPihzdGQ6Om9zdHJlYW0gJm9zLCBHTGJvb2xlYW4g
dmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGJvb2xlYW4+
KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdmFsdWUpCiB7CiAgICAg
c3dpdGNoICh2YWx1ZSkKICAgICB7CkBAIC0yMzQyLDcgKzMzODQsOSBAQCB2b2lkIFdyaXRlUGFy
YW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMYm9vbGVhbj4oc3RkOjpvc3RyZWFtICZvcywg
R0xib29sZWFuCiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXI+KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IHZv
aWQgKnZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUdm9pZENv
bnN0UG9pbnRlcj4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IDApCiAgICAgewpAQCAtMjM1
Niw5NyArMzQwMCwxNTkgQEAgdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6
OlR2b2lkQ29uc3RQb2ludGVyPihzdGQ6Om9zdHJlYW0gJm9zLCBjb24KIH0KIAogdGVtcGxhdGUg
PD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xERUJVR1BST0NL
SFI+KHN0ZDo6b3N0cmVhbSAmb3MsIEdMREVCVUdQUk9DS0hSIHZhbHVlKQordm9pZCBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xERUJVR1BST0NLSFI+KHN0ZDo6b3N0cmVhbSAm
b3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xERUJVR1BST0NLSFIgdmFsdWUpCiB7fQogCiB0
ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTERF
QlVHUFJPQz4oc3RkOjpvc3RyZWFtICZvcywgR0xERUJVR1BST0MgdmFsdWUpCit2b2lkIFdyaXRl
UGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTERFQlVHUFJPQz4oc3RkOjpvc3RyZWFtICZv
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTERFQlVHUFJPQyB2YWx1ZSkKIHt9CiAKIHRlbXBsYXRlIDw+
Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEJ1ZmZlcklEPihzdGQ6
Om9zdHJlYW0gJm9zLCBnbDo6QnVmZmVySUQgdmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJl
cGxheTxQYXJhbVR5cGU6OlRCdWZmZXJJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAm
Y2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6QnVmZmVySUQgdmFsdWUpCiB7CiAgICAgb3MgPDwgImdCdWZmZXJNYXBbIiA8PCB2YWx1ZS52
YWx1ZSA8PCAiXSI7CiB9CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3Ry
ZWFtPFBhcmFtVHlwZTo6VEZlbmNlTlZJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OkZlbmNlTlZJ
RCB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEZlbmNlTlZJ
RD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpGZW5jZU5WSUQgdmFsdWUpCiB7
CiAgICAgb3MgPDwgImdGZW5jZU1hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVt
cGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpURnJhbWVi
dWZmZXJJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OkZyYW1lYnVmZmVySUQgdmFsdWUpCit2b2lk
IFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEPihzdGQ6Om9z
dHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXJJRCB2YWx1ZSkK
IHsKICAgICBvcyA8PCAiZ0ZyYW1lYnVmZmVyTWFwWyIgPDwgdmFsdWUudmFsdWUgPDwgIl0iOwog
fQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6
OlRNZW1vcnlPYmplY3RJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6Ok1lbW9yeU9iamVjdElEIHZh
bHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0
SUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6Ok1lbW9yeU9i
amVjdElEIHZhbHVlKQogewogICAgIG9zIDw8ICJnTWVtb3J5T2JqZWN0TWFwWyIgPDwgdmFsdWUu
dmFsdWUgPDwgIl0iOwogfQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0
cmVhbTxQYXJhbVR5cGU6OlRQYXRoSUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpQYXRoSUQgdmFs
dWUpCi17Ci0gICAgb3MgPDwgImdQYXRoTWFwWyIgPDwgdmFsdWUudmFsdWUgPDwgIl0iOwotfQot
Ci10ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRQ
cm9ncmFtUGlwZWxpbmVJRD4oc3RkOjpvc3RyZWFtICZvcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFtUGlwZWxp
bmVJRCB2YWx1ZSkKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFByb2dy
YW1QaXBlbGluZUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpQcm9ncmFtUGlwZWxpbmVJRCB2YWx1ZSkKIHsKICAgICBvcyA8PCAiZ1Byb2dyYW1Q
aXBlbGluZU1hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVtcGxhdGUgPD4KLXZv
aWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUXVlcnlJRD4oc3RkOjpvc3Ry
ZWFtICZvcywgZ2w6OlF1ZXJ5SUQgdmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRRdWVyeUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UXVlcnlJ
RCB2YWx1ZSkKIHsKICAgICBvcyA8PCAiZ1F1ZXJ5TWFwWyIgPDwgdmFsdWUudmFsdWUgPDwgIl0i
OwogfQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5
cGU6OlRSZW5kZXJidWZmZXJJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OlJlbmRlcmJ1ZmZlcklE
IHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUUmVuZGVyYnVm
ZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlJlbmRl
cmJ1ZmZlcklEIHZhbHVlKQogewogICAgIG9zIDw8ICJnUmVuZGVyYnVmZmVyTWFwWyIgPDwgdmFs
dWUudmFsdWUgPDwgIl0iOwogfQogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRTYW1wbGVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpTYW1w
bGVySUQgdmFsdWUpCit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRTYW1w
bGVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2FtcGxlcklEIHZhbHVl
KQogewogICAgIG9zIDw8ICJnU2FtcGxlck1hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0K
IAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
U2VtYXBob3JlSUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpTZW1hcGhvcmVJRCB2YWx1ZSkKK3Zv
aWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNlbWFwaG9yZUlEPihzdGQ6Om9z
dHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTZW1hcGhvcmVJRCB2YWx1ZSkKIHsKICAg
ICBvcyA8PCAiZ1NlbXBhaG9yZU1hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAogdGVt
cGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUU2hhZGVy
UHJvZ3JhbUlEPihzdGQ6Om9zdHJlYW0gJm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJQcm9ncmFtSUQgdmFsdWUp
Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQ+
KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyUHJv
Z3JhbUlEIHZhbHVlKQogewogICAgIG9zIDw8ICJnU2hhZGVyUHJvZ3JhbU1hcFsiIDw8IHZhbHVl
LnZhbHVlIDw8ICJdIjsKIH0KIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZUlEPihzdGQ6Om9zdHJlYW0gJm9zLCBnbDo6VGV4dHVy
ZUlEIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVGV4dHVy
ZUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVJRCB2YWx1ZSkK
IHsKICAgICBvcyA8PCAiZ1RleHR1cmVNYXBbIiA8PCB2YWx1ZS52YWx1ZSA8PCAiXSI7CiB9CiAK
IHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRy
YW5zZm9ybUZlZWRiYWNrSUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUcmFuc2Zvcm1G
ZWVkYmFja0lEIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
VHJhbnNmb3JtRmVlZGJhY2tJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0
dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrSUQgdmFsdWUpCiB7CiAgICAgb3Mg
PDwgImdUcmFuc2Zvcm1GZWVkYmFja01hcFsiIDw8IHZhbHVlLnZhbHVlIDw8ICJdIjsKIH0KIAog
dGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVmVy
dGV4QXJyYXlJRD4oc3RkOjpvc3RyZWFtICZvcywgZ2w6OlZlcnRleEFycmF5SUQgdmFsdWUpCit2
b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEPihzdGQ6
Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VmVydGV4QXJyYXlJRCB2YWx1
ZSkKIHsKICAgICBvcyA8PCAiZ1ZlcnRleEFycmF5TWFwWyIgPDwgdmFsdWUudmFsdWUgPDwgIl0i
OwogfQorCitib29sIEZpbmRTaGFkZXJQcm9ncmFtSURJbkNhbGwoY29uc3QgQ2FsbENhcHR1cmUg
JmNhbGwsIGdsOjpTaGFkZXJQcm9ncmFtSUQgKmlkT3V0KQoreworICAgIGZvciAoY29uc3QgUGFy
YW1DYXB0dXJlICZwYXJhbSA6IGNhbGwucGFyYW1zLmdldFBhcmFtQ2FwdHVyZXMoKSkKKyAgICB7
CisgICAgICAgIGlmIChwYXJhbS50eXBlID09IFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCAm
JiBwYXJhbS5uYW1lID09ICJwcm9ncmFtUGFja2VkIikKKyAgICAgICAgeworICAgICAgICAgICAg
KmlkT3V0ID0gcGFyYW0udmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Rl
bXBsYXRlIDw+Cit2b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRVbmlmb3Jt
TG9jYXRpb24+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
VW5pZm9ybUxvY2F0aW9uIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS52YWx1ZSA9PSAtMSkKKyAg
ICB7CisgICAgICAgIG9zIDw8ICItMSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBv
cyA8PCAiZ1VuaWZvcm1Mb2NhdGlvbnNbIjsKKworICAgIC8vIEZpbmQgdGhlIHByb2dyYW0gZnJv
bSB0aGUgY2FsbCBwYXJhbWV0ZXJzLgorICAgIGdsOjpTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbUlE
OworICAgIGlmIChGaW5kU2hhZGVyUHJvZ3JhbUlESW5DYWxsKGNhbGwsICZwcm9ncmFtSUQpKQor
ICAgIHsKKyAgICAgICAgb3MgPDwgImdTaGFkZXJQcm9ncmFtTWFwWyIgPDwgcHJvZ3JhbUlELnZh
bHVlIDw8ICJdIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgb3MgPDwgImdDdXJy
ZW50UHJvZ3JhbSI7CisgICAgfQorCisgICAgb3MgPDwgIl1bIiA8PCB2YWx1ZS52YWx1ZSA8PCAi
XSI7Cit9CiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZUNhcHR1cmUuaAppbmRleCA4NTVhZWJjMmM0ZDg4ZGU1
NjE5MjlkYTcwZTIxM2RkM2U2MDcwM2NiLi44OTkwODlkMDFhMDUyZDdiMjNhZTBiYmVlOGFjMDZl
YzkyN2JmODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvRnJhbWVDYXB0dXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0ZyYW1lQ2FwdHVyZS5oCkBAIC0xNzMsNiArMTczLDkgQEAgY2xhc3MgRGF0YUNvdW50ZXJz
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAvLyBVc2VkIGJ5IHRoZSBDUFAgcmVwbGF5IHRv
IGZpbHRlciBvdXQgdW5uZWNlc3NhcnkgY29kZS4KIHVzaW5nIEhhc1Jlc291cmNlVHlwZU1hcCA9
IGFuZ2xlOjpQYWNrZWRFbnVtQml0U2V0PFJlc291cmNlSURUeXBlPjsKIAorLy8gTWFwIG9mIGJ1
ZmZpbmcgYmluZGluZ3MgdG8gb2Zmc2V0IGFuZCBzaXplIHVzZWQgd2hlbiBtYXBwZWQKK3VzaW5n
IEJ1ZmZlckRhdGFNYXAgPSBzdGQ6Om1hcDxnbDo6QnVmZmVyQmluZGluZywgc3RkOjpwYWlyPEdM
aW50cHRyLCBHTHNpemVpcHRyPj47CisKIC8vIEEgZGljdGlvbmFyeSBvZiBzb3VyY2VzIGluZGV4
ZWQgYnkgc2hhZGVyIHR5cGUuCiB1c2luZyBQcm9ncmFtU291cmNlcyA9IGdsOjpTaGFkZXJNYXA8
c3RkOjpzdHJpbmc+OwogCkBAIC0xODAsNiArMTgzLDEwIEBAIHVzaW5nIFByb2dyYW1Tb3VyY2Vz
ID0gZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz47CiB1c2luZyBTaGFkZXJTb3VyY2VNYXAgID0g
c3RkOjptYXA8Z2w6OlNoYWRlclByb2dyYW1JRCwgc3RkOjpzdHJpbmc+OwogdXNpbmcgUHJvZ3Jh
bVNvdXJjZU1hcCA9IHN0ZDo6bWFwPGdsOjpTaGFkZXJQcm9ncmFtSUQsIFByb2dyYW1Tb3VyY2Vz
PjsKIAorLy8gTWFwIGZyb20gdGV4dHVyZUlEIHRvIGxldmVsIGFuZCBkYXRhCit1c2luZyBUZXh0
dXJlTGV2ZWxzICAgICAgID0gc3RkOjptYXA8R0xpbnQsIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+PjsK
K3VzaW5nIFRleHR1cmVMZXZlbERhdGFNYXAgPSBzdGQ6Om1hcDxnbDo6VGV4dHVyZUlELCBUZXh0
dXJlTGV2ZWxzPjsKKwogY2xhc3MgRnJhbWVDYXB0dXJlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiB7CiAgIHB1YmxpYzoKQEAgLTE5NSw5ICsyMDIsMTMgQEAgY2xhc3MgRnJhbWVDYXB0dXJl
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBjYXB0dXJlQ2xpZW50QXJyYXlT
bmFwc2hvdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB2ZXJ0ZXhDb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0YW5jZUNvdW50KTsKKyAgICB2b2lkIGNhcHR1cmVN
YXBwZWRCdWZmZXJTbmFwc2hvdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgY29uc3QgQ2Fs
bENhcHR1cmUgJmNhbGwpOworCisgICAgdm9pZCBjYXB0dXJlQ29tcHJlc3NlZFRleHR1cmVEYXRh
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCk7CiAK
ICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtYXliZUNhcHR1cmVDbGllbnREYXRhKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LCBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCk7CisgICAgdm9p
ZCBtYXliZUNhcHR1cmVQb3N0Q2FsbFVwZGF0ZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQp
OwogCiAgICAgc3RhdGljIHZvaWQgUmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlcGxheUNvbnRleHQgKnJlcGxheUNvbnRleHQsCkBA
IC0yMDcsOSArMjE4LDE0IEBAIGNsYXNzIEZyYW1lQ2FwdHVyZSBmaW5hbCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIHN0ZDo6dmVjdG9yPENhbGxDYXB0dXJlPiBtRnJhbWVDYWxsczsKICAgICBz
dGQ6OnZlY3RvcjxDYWxsQ2FwdHVyZT4gbVRlYXJEb3duQ2FsbHM7CiAKKyAgICAvLyBXZSBzYXZl
IG9uZSBsYXJnZSBidWZmZXIgb2YgYmluYXJ5IGRhdGEgZm9yIHRoZSB3aG9sZSBDUFAgcmVwbGF5
LgorICAgIC8vIFRoaXMgc2ltcGxpZmllcyBhIGxvdCBvZiBmaWxlIG1hbmFnZW1lbnQuCisgICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4gbUJpbmFyeURhdGE7CisKICAgICBib29sIG1FbmFibGVkOwog
ICAgIHN0ZDo6c3RyaW5nIG1PdXREaXJlY3Rvcnk7CiAgICAgc3RkOjpzdHJpbmcgbUNhcHR1cmVM
YWJlbDsKKyAgICBib29sIG1Db21wcmVzc2lvbjsKICAgICBnbDo6QXR0cmliQXJyYXk8aW50PiBt
Q2xpZW50VmVydGV4QXJyYXlNYXA7CiAgICAgdWludDMyX3QgbUZyYW1lSW5kZXg7CiAgICAgdWlu
dDMyX3QgbUZyYW1lU3RhcnQ7CkBAIC0yMTcsMTAgKzIzMywxNSBAQCBjbGFzcyBGcmFtZUNhcHR1
cmUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBnbDo6QXR0cmliQXJyYXk8c2l6ZV90
PiBtQ2xpZW50QXJyYXlTaXplczsKICAgICBzaXplX3QgbVJlYWRCdWZmZXJTaXplOwogICAgIEhh
c1Jlc291cmNlVHlwZU1hcCBtSGFzUmVzb3VyY2VUeXBlOworICAgIEJ1ZmZlckRhdGFNYXAgbUJ1
ZmZlckRhdGFNYXA7CiAKICAgICAvLyBDYWNoZSBtb3N0IHJlY2VudGx5IGNvbXBpbGVkIGFuZCBs
aW5rZWQgc291cmNlcy4KICAgICBTaGFkZXJTb3VyY2VNYXAgbUNhY2hlZFNoYWRlclNvdXJjZXM7
CiAgICAgUHJvZ3JhbVNvdXJjZU1hcCBtQ2FjaGVkUHJvZ3JhbVNvdXJjZXM7CisKKyAgICAvLyBD
YWNoZSBhIHNoYWRvdyBjb3B5IG9mIHRleHR1cmUgbGV2ZWwgZGF0YQorICAgIFRleHR1cmVMZXZl
bHMgbUNhY2hlZFRleHR1cmVMZXZlbHM7CisgICAgVGV4dHVyZUxldmVsRGF0YU1hcCBtQ2FjaGVk
VGV4dHVyZUxldmVsRGF0YTsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDYXB0dXJlRnVuY1Qs
IHR5cGVuYW1lLi4uIEFyZ3NUPgpAQCAtMjYyLDYgKzI4Myw3IEBAIHN0ZDo6b3N0cmVhbSAmb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBQYXJhbUNhcHR1cmUgJmNhcHR1cmUpOwog
Ly8gUG9pbnRlciBjYXB0dXJlIGhlbHBlcnMuCiB2b2lkIENhcHR1cmVNZW1vcnkoY29uc3Qgdm9p
ZCAqc291cmNlLCBzaXplX3Qgc2l6ZSwgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9p
ZCBDYXB0dXJlU3RyaW5nKGNvbnN0IEdMY2hhciAqc3RyLCBQYXJhbUNhcHR1cmUgKnBhcmFtQ2Fw
dHVyZSk7Cit2b2lkIENhcHR1cmVTdHJpbmdMaW1pdChjb25zdCBHTGNoYXIgKnN0ciwgdWludDMy
X3QgbGltaXQsIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIAogZ2w6OlByb2dyYW0gKkdl
dExpbmtlZFByb2dyYW1Gb3JDYXB0dXJlKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSwgZ2w6OlNo
YWRlclByb2dyYW1JRCBoYW5kbGUpOwogCkBAIC0yODAsNzAgKzMwMiwxMDEgQEAgdm9pZCBDYXB0
dXJlR2VuSGFuZGxlcyhHTHNpemVpIG4sIFQgKmhhbmRsZXMsIFBhcmFtQ2FwdHVyZSAqcGFyYW1D
YXB0dXJlKQogfQogCiB0ZW1wbGF0ZSA8UGFyYW1UeXBlIFBhcmFtVCwgdHlwZW5hbWUgVD4KLXZv
aWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW0oc3RkOjpvc3RyZWFtICZvcywgVCB2YWx1ZSk7Cit2
b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheShzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBDYWxsQ2Fw
dHVyZSAmY2FsbCwgVCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMYm9vbGVhbj4oc3RkOjpvc3RyZWFtICZvcywgR0xib29s
ZWFuIHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMYm9v
bGVhbj4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB2YWx1ZSk7CiAK
IHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VHZv
aWRDb25zdFBvaW50ZXI+KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IHZvaWQgKnZhbHVlKTsKK3Zv
aWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXI+KHN0
ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnZh
bHVlKTsKIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1U
eXBlOjpUR0xERUJVR1BST0NLSFI+KHN0ZDo6b3N0cmVhbSAmb3MsIEdMREVCVUdQUk9DS0hSIHZh
bHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMREVCVUdQUk9D
S0hSPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQUk9D
S0hSIHZhbHVlKTsKIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUR0xERUJVR1BST0M+KHN0ZDo6b3N0cmVhbSAmb3MsIEdMREVCVUdQUk9DIHZh
bHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMREVCVUdQUk9D
PihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQUk9DIHZhbHVlKTsK
IAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
QnVmZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpCdWZmZXJJRCB2YWx1ZSk7Cit2b2lkIFdy
aXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRCdWZmZXJJRD4oc3RkOjpvc3RyZWFtICZv
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6QnVmZmVySUQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGZW5jZU5WSUQ+KHN0ZDo6b3N0cmVh
bSAmb3MsIGdsOjpGZW5jZU5WSUQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8
UGFyYW1UeXBlOjpURmVuY2VOVklEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2Fs
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkZlbmNlTlZJRCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VEZyYW1lYnVmZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsIGdsOjpG
cmFtZWJ1ZmZlcklEIHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VEZyYW1lYnVmZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2Fs
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsOjpGcmFtZWJ1ZmZlcklEIHZhbHVlKTsKIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SUQ+KHN0ZDo6b3N0cmVhbSAm
b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6TWVtb3J5T2JqZWN0SUQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBs
YXk8UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2Fs
bENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6Ok1lbW9yeU9iamVjdElEIHZhbHVlKTsKIAogdGVtcGxhdGUgPD4K
LXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUGF0aElEPihzdGQ6Om9z
dHJlYW0gJm9zLCBnbDo6UGF0aElEIHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5
PFBhcmFtVHlwZTo6VFByb2dyYW1QaXBlbGluZUlEPihzdGQ6Om9zdHJlYW0gJm9zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpQcm9ncmFtUGlwZWxpbmVJRCB2YWx1ZSk7CiAKIHRl
bXBsYXRlIDw+Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFByb2dy
YW1QaXBlbGluZUlEPihzdGQ6Om9zdHJlYW0gJm9zLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlByb2dyYW1QaXBlbGluZUlE
IHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFF1ZXJ5SUQ+
KHN0ZDo6b3N0cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpRdWVyeUlEIHZhbHVlKTsKIAogdGVtcGxh
dGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUXVlcnlJRD4o
c3RkOjpvc3RyZWFtICZvcywgZ2w6OlF1ZXJ5SUQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFs
dWVSZXBsYXk8UGFyYW1UeXBlOjpUUmVuZGVyYnVmZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlJlbmRlcmJ1ZmZlcklEIHZhbHVlKTsKIAogdGVtcGxh
dGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUmVuZGVyYnVm
ZmVySUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UmVuZGVyYnVmZmVySUQgdmFsdWUpOwordm9p
ZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2FtcGxlcklEPihzdGQ6Om9zdHJl
YW0gJm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlNhbXBsZXJJRCB2YWx1ZSk7CiAKIHRlbXBsYXRlIDw+
Ci12b2lkIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNhbXBsZXJJRD4oc3Rk
Ojpvc3RyZWFtICZvcywgZ2w6OlNhbXBsZXJJRCB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRTZW1hcGhvcmVJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxs
Q2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6U2VtYXBob3JlSUQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgotdm9pZCBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTZW1hcGhvcmVJRD4oc3RkOjpvc3Ry
ZWFtICZvcywgZ2w6OlNlbWFwaG9yZUlEIHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZhbHVlUmVw
bGF5PFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q2FsbENhcHR1cmUgJmNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJQcm9ncmFtSUQgdmFsdWUpOwogCiB0ZW1wbGF0
ZSA8Pgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9n
cmFtSUQ+KHN0ZDo6b3N0cmVhbSAmb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlclByb2dyYW1JRCB2YWx1ZSk7Cit2
b2lkIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRUZXh0dXJlSUQ+KHN0ZDo6b3N0
cmVhbSAmb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUlEIHZhbHVlKTsKIAogdGVtcGxhdGUg
PD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZUlEPihz
dGQ6Om9zdHJlYW0gJm9zLCBnbDo6VGV4dHVyZUlEIHZhbHVlKTsKK3ZvaWQgV3JpdGVQYXJhbVZh
bHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSUQ+KHN0ZDo6b3N0cmVhbSAm
b3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDYWxsQ2FwdHVyZSAmY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFj
a0lEIHZhbHVlKTsKIAogdGVtcGxhdGUgPD4KLXZvaWQgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRD4oc3RkOjpvc3RyZWFtICZvcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OlRyYW5zZm9ybUZlZWRiYWNrSUQgdmFsdWUpOwordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBs
YXk8UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRD4oc3RkOjpvc3RyZWFtICZvcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxD
YXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OlZlcnRleEFycmF5SUQgdmFsdWUpOwogCiB0ZW1wbGF0ZSA8Pgotdm9p
ZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEPihzdGQ6
Om9zdHJlYW0gJm9zLCBnbDo6VmVydGV4QXJyYXlJRCB2YWx1ZSk7Cit2b2lkIFdyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24+KHN0ZDo6b3N0cmVhbSAmb3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENhbGxDYXB0dXJlICZjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VW5pZm9ybUxvY2F0aW9uIHZhbHVlKTsKIAog
Ly8gR2VuZXJhbCBmYWxsYmFjayBmb3IgYW55IHVuc3BlY2lmaWMgdHlwZS4KIHRlbXBsYXRlIDxQ
YXJhbVR5cGUgUGFyYW1ULCB0eXBlbmFtZSBUPgotdm9pZCBXcml0ZVBhcmFtVmFsdWVUb1N0cmVh
bShzdGQ6Om9zdHJlYW0gJm9zLCBUIHZhbHVlKQordm9pZCBXcml0ZVBhcmFtVmFsdWVSZXBsYXko
c3RkOjpvc3RyZWFtICZvcywgY29uc3QgQ2FsbENhcHR1cmUgJmNhbGwsIFQgdmFsdWUpCiB7CiAg
ICAgb3MgPDwgdmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcAppbmRleCA2MzE5YzA3YTQ3NGE0NGUyMjMzZmMxYzQ5
NzFiNDA2NWEzYTNhNjNlLi40ZTgzYzI1MDA0ZjA3NjRlNmYzMzU5NTA4NWQ5YTFhMmRiYTRjMzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVi
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFt
ZWJ1ZmZlci5jcHAKQEAgLTI3OSwxMiArMjc5LDE0IEBAIGJvb2wgSXNTdGVuY2lsTWFza2VkT3V0
KGNvbnN0IERlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWwpCiAgICAgcmV0dXJuICgoZGVw
dGhTdGVuY2lsLnN0ZW5jaWxNYXNrICYgZGVwdGhTdGVuY2lsLnN0ZW5jaWxXcml0ZW1hc2spID09
IDApOwogfQogCi1ib29sIElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGJ1ZmZlcikKK2Jvb2wgSXNDbGVhckJ1ZmZlck1hc2tlZE91dChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyKQogewogICAg
IHN3aXRjaCAoYnVmZmVyKQogICAgIHsKICAgICAgICAgY2FzZSBHTF9DT0xPUjoKLSAgICAgICAg
ICAgIHJldHVybiBJc0NvbG9yTWFza2VkT3V0KGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QmxlbmRT
dGF0ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGRyYXdidWZm
ZXIpIDwKKyAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldEJsZW5kU3Rh
dGVBcnJheSgpLnNpemUoKSk7CisgICAgICAgICAgICByZXR1cm4gSXNDb2xvck1hc2tlZE91dChj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldEJsZW5kU3RhdGVBcnJheSgpW2RyYXdidWZmZXJdKTsKICAg
ICAgICAgY2FzZSBHTF9ERVBUSDoKICAgICAgICAgICAgIHJldHVybiBJc0RlcHRoTWFza2VkT3V0
KGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKSk7CiAgICAgICAgIGNh
c2UgR0xfU1RFTkNJTDoKQEAgLTMxNCw2ICszMTYsOSBAQCBGcmFtZWJ1ZmZlclN0YXRlOjpGcmFt
ZWJ1ZmZlclN0YXRlKCkKICAgICAgIG1EZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xfRkFM
U0UpLAogICAgICAgbURlZmF1bHRMYXllcnMoMCksCiAgICAgICBtV2ViR0xEZXB0aFN0ZW5jaWxD
b25zaXN0ZW50KHRydWUpLAorICAgICAgbURlcHRoQnVmZmVyRmVlZGJhY2tMb29wKGZhbHNlKSwK
KyAgICAgIG1TdGVuY2lsQnVmZmVyRmVlZGJhY2tMb29wKGZhbHNlKSwKKyAgICAgIG1IYXNSZW5k
ZXJpbmdGZWVkYmFja0xvb3AoZmFsc2UpLAogICAgICAgbURlZmF1bHRGcmFtZWJ1ZmZlclJlYWRB
dHRhY2htZW50SW5pdGlhbGl6ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1EcmF3QnVmZmVyU3Rh
dGVzLnNpemUoKSA+IDApOwpAQCAtMzMzLDYgKzMzOCw5IEBAIEZyYW1lYnVmZmVyU3RhdGU6OkZy
YW1lYnVmZmVyU3RhdGUoY29uc3QgQ2FwcyAmY2FwcywgRnJhbWVidWZmZXJJRCBpZCkKICAgICAg
IG1EZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xfRkFMU0UpLAogICAgICAgbURlZmF1bHRM
YXllcnMoMCksCiAgICAgICBtV2ViR0xEZXB0aFN0ZW5jaWxDb25zaXN0ZW50KHRydWUpLAorICAg
ICAgbURlcHRoQnVmZmVyRmVlZGJhY2tMb29wKGZhbHNlKSwKKyAgICAgIG1TdGVuY2lsQnVmZmVy
RmVlZGJhY2tMb29wKGZhbHNlKSwKKyAgICAgIG1IYXNSZW5kZXJpbmdGZWVkYmFja0xvb3AoZmFs
c2UpLAogICAgICAgbURlZmF1bHRGcmFtZWJ1ZmZlclJlYWRBdHRhY2htZW50SW5pdGlhbGl6ZWQo
ZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1JZCAhPSBGcmFtZWJ1ZmZlcjo6a0RlZmF1bHREcmF3RnJh
bWVidWZmZXJIYW5kbGUpOwpAQCAtNjcxLDYgKzY3OSw1MyBAQCBib29sIEZyYW1lYnVmZmVyU3Rh
dGU6OmlzRGVmYXVsdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1JZCA9PSBGcmFtZWJ1ZmZlcjo6a0Rl
ZmF1bHREcmF3RnJhbWVidWZmZXJIYW5kbGU7CiB9CiAKK2Jvb2wgRnJhbWVidWZmZXJTdGF0ZTo6
dXBkYXRlQXR0YWNobWVudEZlZWRiYWNrTG9vcEFuZFJldHVybklmQ2hhbmdlZChzaXplX3QgZGly
dHlCaXQpCit7CisgICAgYm9vbCBwcmV2aW91czsKKyAgICBib29sIGxvb3A7CisKKyAgICBzd2l0
Y2ggKGRpcnR5Qml0KQorICAgIHsKKyAgICAgICAgY2FzZSBGcmFtZWJ1ZmZlcjo6RElSVFlfQklU
X0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBwcmV2aW91cyAgICAgICAgICAgICAgICAg
PSBtRGVwdGhCdWZmZXJGZWVkYmFja0xvb3A7CisgICAgICAgICAgICBsb29wICAgICAgICAgICAg
ICAgICAgICAgPSBtRGVwdGhBdHRhY2htZW50LmlzQm91bmRBc1NhbXBsZXJPckltYWdlKCk7Cisg
ICAgICAgICAgICBtRGVwdGhCdWZmZXJGZWVkYmFja0xvb3AgPSBsb29wOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX1NURU5DSUxfQVRU
QUNITUVOVDoKKyAgICAgICAgICAgIHByZXZpb3VzICAgICAgICAgICAgICAgICAgID0gbVN0ZW5j
aWxCdWZmZXJGZWVkYmFja0xvb3A7CisgICAgICAgICAgICBsb29wICAgICAgICAgICAgICAgICAg
ICAgICA9IG1TdGVuY2lsQXR0YWNobWVudC5pc0JvdW5kQXNTYW1wbGVyT3JJbWFnZSgpOworICAg
ICAgICAgICAgbVN0ZW5jaWxCdWZmZXJGZWVkYmFja0xvb3AgPSBsb29wOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGRpcnR5Qml0IDw9IEZyYW1lYnVmZmVyOjpESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF9NQVgp
OworICAgICAgICAgICAgcHJldmlvdXMgPSBtRHJhd0J1ZmZlckZlZWRiYWNrTG9vcHMudGVzdChk
aXJ0eUJpdCk7CisgICAgICAgICAgICBsb29wICAgICA9IG1Db2xvckF0dGFjaG1lbnRzW2RpcnR5
Qml0XS5pc0JvdW5kQXNTYW1wbGVyT3JJbWFnZSgpOworICAgICAgICAgICAgbURyYXdCdWZmZXJG
ZWVkYmFja0xvb3BzW2RpcnR5Qml0XSA9IGxvb3A7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHVwZGF0ZUhhc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcCgpOworICAg
IHJldHVybiBwcmV2aW91cyAhPSBsb29wOworfQorCit2b2lkIEZyYW1lYnVmZmVyU3RhdGU6OnVw
ZGF0ZUhhc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcCgpCit7CisgICAgLy8gV2UgZG9uJ3QgaGFuZGxl
IHRyaWNreSBjYXNlcyB3aGVyZSB0aGUgZGVmYXVsdCBGQk8gaXMgYm91bmQgYXMgYSBzYW1wbGVy
LgorICAgIC8vIFdlIGFsc28gZG9uJ3QgaGFuZGxlIHRyaWNreSBjYXNlcyB3aXRoIEVHTEltYWdl
cyBhbmQgbWlwbWFwIHNlbGVjdGlvbi4KKyAgICAvLyBUT0RPKGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
NDUwMCk6IFRyaWNreSByZW5kZXJpbmcgZmVlZGJhY2sgbG9vcCBjYXNlcy4KKyAgICBpZiAoaXNE
ZWZhdWx0KCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbUhhc1JlbmRl
cmluZ0ZlZWRiYWNrTG9vcCA9CisgICAgICAgIG1EcmF3QnVmZmVyRmVlZGJhY2tMb29wcy5hbnko
KSB8fCBtRGVwdGhCdWZmZXJGZWVkYmFja0xvb3AgfHwgbVN0ZW5jaWxCdWZmZXJGZWVkYmFja0xv
b3A7Cit9CisKIGNvbnN0IEZyYW1lYnVmZmVySUQgRnJhbWVidWZmZXI6OmtEZWZhdWx0RHJhd0Zy
YW1lYnVmZmVySGFuZGxlID0gezB9OwogCiBGcmFtZWJ1ZmZlcjo6RnJhbWVidWZmZXIoY29uc3Qg
Q2FwcyAmY2Fwcywgcng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEZyYW1lYnVmZmVySUQgaWQp
CkBAIC0xMDU1LDcgKzExMTAsNyBAQCB2b2lkIEZyYW1lYnVmZmVyOjppbnZhbGlkYXRlQ29tcGxl
dGVuZXNzQ2FjaGUoKQogICAgIG9uU3RhdGVDaGFuZ2UoYW5nbGU6OlN1YmplY3RNZXNzYWdlOjpE
aXJ0eUJpdHNGbGFnZ2VkKTsKIH0KIAotR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1c0lt
cGwoY29uc3QgQ29udGV4dCAqY29udGV4dCkKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0
dXNJbXBsKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0Rl
ZmF1bHQoKSk7CiAgICAgQVNTRVJUKGhhc0FueURpcnR5Qml0KCkgfHwgIW1DYWNoZWRTdGF0dXMu
dmFsaWQoKSk7CkBAIC0xMDgzLDcgKzExMzgsNyBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNr
U3RhdHVzSW1wbChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiBtQ2FjaGVkU3Rh
dHVzLnZhbHVlKCk7CiB9CiAKLUdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNXaXRoR0xG
cm9udEVuZChjb25zdCBDb250ZXh0ICpjb250ZXh0KQorR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVj
a1N0YXR1c1dpdGhHTEZyb250RW5kKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKIApAQCAtMTM5MCwx
NCArMTQ0NSw5IEBAIGJvb2wgRnJhbWVidWZmZXI6OnBhcnRpYWxDbGVhck5lZWRzSW5pdChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogCiAgICAgLy8gSWYgY29sb3JzIG1hc2tlZCwgd2UgbXVzdCBj
bGVhciBiZWZvcmUgd2UgY2xlYXIuIERvIGEgc2ltcGxlIGNoZWNrLgogICAgIC8vIFRPRE8oam1h
ZGlsbCk6IEZpbHRlciBvdXQgdW51c2VkIGNvbG9yIGNoYW5uZWxzIGZyb20gdGhlIHRlc3QuCi0g
ICAgaWYgKGNvbG9yKQorICAgIGlmIChjb2xvciAmJiBnbFN0YXRlLmFueUFjdGl2ZURyYXdCdWZm
ZXJDaGFubmVsTWFza2VkKCkpCiAgICAgewotICAgICAgICBjb25zdCBhdXRvICZibGVuZCA9IGds
U3RhdGUuZ2V0QmxlbmRTdGF0ZSgpOwotICAgICAgICBpZiAoIShibGVuZC5jb2xvck1hc2tSZWQg
JiYgYmxlbmQuY29sb3JNYXNrR3JlZW4gJiYgYmxlbmQuY29sb3JNYXNrQmx1ZSAmJgotICAgICAg
ICAgICAgICBibGVuZC5jb2xvck1hc2tBbHBoYSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAg
IGNvbnN0IGF1dG8gJmRlcHRoU3RlbmNpbCA9IGdsU3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUo
KTsKQEAgLTE0MzMsOCArMTQ4Myw4IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXI6OmNsZWFy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykKICAgICAvLyBSZW1vdmUg
Y2xlYXIgYml0cyB0aGF0IGFyZSBpbmVmZmVjdGl2ZS4gQW4gZWZmZWN0aXZlIGNsZWFyIGNoYW5n
ZXMgYXQgbGVhc3Qgb25lIGZyYWdtZW50LiBJZgogICAgIC8vIGNvbG9yL2RlcHRoL3N0ZW5jaWwg
bWFza3MgbWFrZSB0aGUgY2xlYXIgaW5lZmZlY3RpdmUgd2Ugc2tpcCBpdCBhbHRvZ2V0aGVyLgog
Ci0gICAgLy8gSWYgYWxsIGNvbG9yIGNoYW5uZWxzIGFyZSBtYXNrZWQsIGRvbid0IGF0dGVtcHQg
dG8gY2xlYXIgY29sb3IuCi0gICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QmxlbmRTdGF0
ZSgpLmFsbENoYW5uZWxzTWFza2VkKCkpCisgICAgLy8gSWYgYWxsIGNvbG9yIGNoYW5uZWxzIGlu
IGFsbCBkcmF3IGJ1ZmZlcnMgYXJlIG1hc2tlZCwgZG9uJ3QgYXR0ZW1wdCB0byBjbGVhciBjb2xv
ci4KKyAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5hbGxBY3RpdmVEcmF3QnVmZmVyQ2hhbm5l
bHNNYXNrZWQoKSkKICAgICB7CiAgICAgICAgIG1hc2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9CSVQ7
CiAgICAgfQpAQCAtMTQ2NCwyOCArMTUxNCwxMiBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVy
OjpjbGVhckJ1ZmZlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsKLSAg
ICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpIHx8
IElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVmZmVyKSkKKyAgICBpZiAoY29udGV4
dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpIHx8CisgICAgICAgIElz
Q2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyKSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAgICB9CiAKLSAgICBp
ZiAoYnVmZmVyID09IEdMX0RFUFRIKQotICAgIHsKLSAgICAgICAgLy8gSWYgZGVwdGggd3JpdGUg
aXMgZGlzYWJsZWQsIGRvbid0IGF0dGVtcHQgdG8gY2xlYXIgZGVwdGguCi0gICAgICAgIGlmICgh
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpLmRlcHRoTWFzaykKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIElmIGFsbCBjb2xvciBj
aGFubmVscyBhcmUgbWFza2VkLCBkb24ndCBhdHRlbXB0IHRvIGNsZWFyIGNvbG9yLgotICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRCbGVuZFN0YXRlKCkuYWxsQ2hhbm5lbHNNYXNr
ZWQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgQU5HTEVfVFJZKG1JbXBsLT5jbGVhckJ1ZmZl
cmZ2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKSk7CiAKICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CkBAIC0xNDk2LDEzICsxNTMwLDggQEAgYW5nbGU6OlJl
c3VsdCBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnZhbHVlcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJE
aXNjYXJkRW5hYmxlZCgpIHx8IElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVmZmVy
KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLSAgICB9
Ci0KLSAgICAvLyBJZiBhbGwgY29sb3IgY2hhbm5lbHMgYXJlIG1hc2tlZCwgZG9uJ3QgYXR0ZW1w
dCB0byBjbGVhciBjb2xvci4KLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRCbGVuZFN0
YXRlKCkuYWxsQ2hhbm5lbHNNYXNrZWQoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5p
c1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpIHx8CisgICAgICAgIElzQ2xlYXJCdWZmZXJNYXNr
ZWRPdXQoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyKSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAgICB9CkBAIC0xNTE3LDI4ICsxNTQ2LDEyIEBA
IGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXI6OmNsZWFyQnVmZmVyaXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnZhbHVlcykKIHsKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rl
cml6ZXJEaXNjYXJkRW5hYmxlZCgpIHx8IElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwg
YnVmZmVyKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJk
RW5hYmxlZCgpIHx8CisgICAgICAgIElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVm
ZmVyLCBkcmF3YnVmZmVyKSkKICAgICB7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyID09IEdMX1NURU5DSUwpCi0gICAgewot
ICAgICAgICAvLyBJZiBhbGwgc3RlbmNpbCBiaXRzIGFyZSBtYXNrZWQsIGRvbid0IGF0dGVtcHQg
dG8gY2xlYXIgc3RlbmNpbC4KLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RGVw
dGhTdGVuY2lsU3RhdGUoKS5zdGVuY2lsV3JpdGVtYXNrID09IDApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBJZiBhbGwgY29sb3IgY2hhbm5lbHMgYXJlIG1h
c2tlZCwgZG9uJ3QgYXR0ZW1wdCB0byBjbGVhciBjb2xvci4KLSAgICAgICAgaWYgKGNvbnRleHQt
PmdldFN0YXRlKCkuZ2V0QmxlbmRTdGF0ZSgpLmFsbENoYW5uZWxzTWFza2VkKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLSAgICAgICAg
fQotICAgIH0KLQogICAgIEFOR0xFX1RSWShtSW1wbC0+Y2xlYXJCdWZmZXJpdihjb250ZXh0LCBi
dWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcykpOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwpAQCAtMTU1MCw3ICsxNTYzLDggQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZl
cjo6Y2xlYXJCdWZmZXJmaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGVuY2lsKQogewotICAgIGlmIChjb250
ZXh0LT5nZXRTdGF0ZSgpLmlzUmFzdGVyaXplckRpc2NhcmRFbmFibGVkKCkgfHwgSXNDbGVhckJ1
ZmZlck1hc2tlZE91dChjb250ZXh0LCBidWZmZXIpKQorICAgIGlmIChjb250ZXh0LT5nZXRTdGF0
ZSgpLmlzUmFzdGVyaXplckRpc2NhcmRFbmFibGVkKCkgfHwKKyAgICAgICAgSXNDbGVhckJ1ZmZl
ck1hc2tlZE91dChjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIpKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgIH0KQEAgLTE2NDAsMTIgKzE2NTQs
MTIgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlcjo6YmxpdChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiBtSW1wbC0+YmxpdChjb250ZXh0LCBzb3VyY2VBcmVhLCBkZXN0QXJl
YSwgYmxpdE1hc2ssIGZpbHRlcik7CiB9CiAKLWludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhj
b25zdCBDb250ZXh0ICpjb250ZXh0KQoraW50IEZyYW1lYnVmZmVyOjpnZXRTYW1wbGVzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChpc0NvbXBsZXRlKGNvbnRl
eHQpID8gZ2V0Q2FjaGVkU2FtcGxlcyhjb250ZXh0LCBBdHRhY2htZW50U2FtcGxlVHlwZTo6RW11
bGF0ZWQpIDogMCk7CiB9CiAKLWludCBGcmFtZWJ1ZmZlcjo6Z2V0UmVzb3VyY2VTYW1wbGVzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQpCitpbnQgRnJhbWVidWZmZXI6OmdldFJlc291cmNlU2FtcGxl
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25zdAogewogICAgIHJldHVybiAoaXNDb21wbGV0
ZShjb250ZXh0KSA/IGdldENhY2hlZFNhbXBsZXMoY29udGV4dCwgQXR0YWNobWVudFNhbXBsZVR5
cGU6OlJlc291cmNlKSA6IDApOwogfQpAQCAtMTg5OCwxOCArMTkxMiwxNCBAQCB2b2lkIEZyYW1l
YnVmZmVyOjpzZXRBdHRhY2htZW50SW1wbChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogCiAgICAg
ICAgICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1D
b2xvckF0dGFjaG1lbnRCaXRzLnJlc2V0KGNvbG9ySW5kZXgpOwogICAgICAgICAgICAgICAgIG1G
bG9hdDMyQ29sb3JBdHRhY2htZW50Qml0cy5yZXNldChjb2xvckluZGV4KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtQ29s
b3JBdHRhY2htZW50Qml0cy5zZXQoY29sb3JJbmRleCk7CiAgICAgICAgICAgICAgICAgdXBkYXRl
RmxvYXQzMkNvbG9yQXR0YWNobWVudEJpdHMoCiAgICAgICAgICAgICAgICAgICAgIGNvbG9ySW5k
ZXgsIHJlc291cmNlLT5nZXRBdHRhY2htZW50Rm9ybWF0KGJpbmRpbmcsIHRleHR1cmVJbmRleCku
aW5mbyk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEFT
U0VSVCBpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZSBhdHRhY2htZW50IGV4aXN0cyBpbgotICAgICAg
ICAgICAgLy8gZm9ybXNSZW5kZXJpbmdGZWVkYmFja0xvb3BXaXRoCiAgICAgICAgICAgICBib29s
IGVuYWJsZWQgPSAodHlwZSAhPSBHTF9OT05FICYmIGdldERyYXdCdWZmZXJTdGF0ZShjb2xvcklu
ZGV4KSAhPSBHTF9OT05FKTsKICAgICAgICAgICAgIG1TdGF0ZS5tRW5hYmxlZERyYXdCdWZmZXJz
LnNldChjb2xvckluZGV4LCBlbmFibGVkKTsKICAgICAgICAgICAgIFNldENvbXBvbmVudFR5cGVN
YXNrKGdldERyYXdidWZmZXJXcml0ZVR5cGUoY29sb3JJbmRleCksIGNvbG9ySW5kZXgsCkBAIC0x
OTM4LDYgKzE5NDgsNyBAQCB2b2lkIEZyYW1lYnVmZmVyOjp1cGRhdGVBdHRhY2htZW50KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgbVN0YXRlLm1SZXNvdXJjZU5lZWRzSW5pdC5zZXQoZGly
dHlCaXQsIGF0dGFjaG1lbnQtPmluaXRTdGF0ZSgpID09IEluaXRTdGF0ZTo6TWF5TmVlZEluaXQp
OwogICAgIG9uRGlydHlCaW5kaW5nLT5iaW5kKHJlc291cmNlKTsKIAorICAgIG1TdGF0ZS51cGRh
dGVBdHRhY2htZW50RmVlZGJhY2tMb29wQW5kUmV0dXJuSWZDaGFuZ2VkKGRpcnR5Qml0KTsKICAg
ICBpbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKIH0KIApAQCAtMTk0Niw3ICsxOTU3LDcg
QEAgdm9pZCBGcmFtZWJ1ZmZlcjo6cmVzZXRBdHRhY2htZW50KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBiaW5kaW5nKQogICAgIHNldEF0dGFjaG1lbnQoY29udGV4dCwgR0xfTk9ORSwg
YmluZGluZywgSW1hZ2VJbmRleCgpLCBudWxscHRyKTsKIH0KIAotYW5nbGU6OlJlc3VsdCBGcmFt
ZWJ1ZmZlcjo6c3luY1N0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCithbmdsZTo6UmVzdWx0
IEZyYW1lYnVmZmVyOjpzeW5jU3RhdGUoY29uc3QgQ29udGV4dCAqY29udGV4dCkgY29uc3QKIHsK
ICAgICBpZiAobURpcnR5Qml0cy5hbnkoKSkKICAgICB7CkBAIC0xOTcwLDYgKzE5ODEsMTcgQEAg
dm9pZCBGcmFtZWJ1ZmZlcjo6b25TdWJqZWN0U3RhdGVDaGFuZ2UoYW5nbGU6OlN1YmplY3RJbmRl
eCBpbmRleCwgYW5nbGU6OlN1YmplY3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CisgICAgICAgIC8vIFRyaWdnZXJlZCBieSBjaGFuZ2VzIHRvIFRleHR1cmUgZmVlZGJhY2sgbG9v
cHMuCisgICAgICAgIGlmIChtZXNzYWdlID09IGFuZ2xlOjpTdWJqZWN0TWVzc2FnZTo6QmluZGlu
Z0NoYW5nZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUudXBkYXRlQXR0YWNo
bWVudEZlZWRiYWNrTG9vcEFuZFJldHVybklmQ2hhbmdlZChpbmRleCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoaW5kZXgpOworICAgICAgICAgICAgICAg
IG9uU3RhdGVDaGFuZ2UoYW5nbGU6OlN1YmplY3RNZXNzYWdlOjpEaXJ0eUJpdHNGbGFnZ2VkKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAg
IC8vIFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBieSB0aGUgR0wgYmFjay1lbmQgVGV4dHVyZUdMIGNs
YXNzLgogICAgICAgICBBU1NFUlQobWVzc2FnZSA9PSBhbmdsZTo6U3ViamVjdE1lc3NhZ2U6OkRp
cnR5Qml0c0ZsYWdnZWQpOwogICAgICAgICByZXR1cm47CkBAIC0yMDEwLDcyICsyMDMyLDYgQEAg
RnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0QXR0YWNobWVudEZyb21TdWJq
ZWN0SW5kZXgoYW5nbGU6OlN1YmplY3QKICAgICB9CiB9CiAKLWJvb2wgRnJhbWVidWZmZXI6OmZv
cm1zUmVuZGVyaW5nRmVlZGJhY2tMb29wV2l0aChjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25z
dAotewotICAgIGNvbnN0IFN0YXRlICZzdGF0ZSAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwot
ICAgIGNvbnN0IFByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7Ci0KLSAgICAv
LyBUT0RPKGptYWRpbGwpOiBEZWZhdWx0IGZyYW1lYnVmZmVyIGZlZWRiYWNrIGxvb3BzLgotICAg
IGlmIChtU3RhdGUuaXNEZWZhdWx0KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpkZXB0aCAgID0gZ2V0RGVw
dGhBdHRhY2htZW50KCk7Ci0gICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpzdGVuY2ls
ID0gZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKTsKLQotICAgIGNvbnN0IGJvb2wgY2hlY2tEZXB0aCA9
IGRlcHRoICYmIGRlcHRoLT50eXBlKCkgPT0gR0xfVEVYVFVSRTsKLSAgICAvLyBTa2lwIHRoZSBm
ZWVkYmFjayBsb29wIGNoZWNrIGZvciBzdGVuY2lsIGlmIGRlcHRoL3N0ZW5jaWwgcG9pbnQgdG8g
dGhlIHNhbWUgcmVzb3VyY2UuCi0gICAgY29uc3QgYm9vbCBjaGVja1N0ZW5jaWwgPQotICAgICAg
ICAoc3RlbmNpbCAmJiBzdGVuY2lsLT50eXBlKCkgPT0gR0xfVEVYVFVSRSkgJiYgKCFkZXB0aCB8
fCAqc3RlbmNpbCAhPSAqZGVwdGgpOwotCi0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVNYXNr
ICZhY3RpdmVUZXh0dXJlcyAgID0gcHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCk7Ci0g
ICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJnRleHR1cmVzID0gc3RhdGUu
Z2V0QWN0aXZlVGV4dHVyZXNDYWNoZSgpOwotCi0gICAgZm9yIChzaXplX3QgdGV4dHVyZVVuaXQg
OiBhY3RpdmVUZXh0dXJlcykKLSAgICB7Ci0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSB0ZXh0
dXJlc1t0ZXh0dXJlVW5pdF07Ci0KLSAgICAgICAgaWYgKHRleHR1cmUgPT0gbnVsbHB0cikKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBE
ZXB0aCBhbmQgc3RlbmNpbCBhdHRhY2htZW50IGZvcm0gZmVlZGJhY2sgbG9vcHMKLSAgICAgICAg
Ly8gUmVnYXJkbGVzcyBvZiBpZiBlbmFibGVkIG9yIG1hc2tlZC4KLSAgICAgICAgaWYgKGNoZWNr
RGVwdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRJZCgpID09IGRl
cHRoLT5pZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNoZWNrU3RlbmNpbCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHRleHR1cmUtPmdldElkKCkgPT0gc3RlbmNpbC0+aWQo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIENoZWNrIGlmIGFueSBjb2xvciBhdHRhY2ht
ZW50IGZvcm1zIGEgZmVlZGJhY2sgbG9vcC4KLSAgICAgICAgZm9yIChzaXplX3QgZHJhd0luZGV4
IDogbUNvbG9yQXR0YWNobWVudEJpdHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAmYXR0YWNobWVudCA9IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50
c1tkcmF3SW5kZXhdOwotICAgICAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnQuaXNBdHRhY2hlZCgp
KTsKLQotICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQuaXNUZXh0dXJlV2l0aElkKHRleHR1cmUt
PmlkKCkpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6
IENoZWNrIGZvciBhcHByb3ByaWF0ZSBvdmVybGFwLgotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBib29sIEZyYW1lYnVmZmVyOjpmb3Jtc0NvcHlpbmdGZWVkYmFja0xvb3BXaXRoKFRl
eHR1cmVJRCBjb3B5VGV4dHVyZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBjb3B5VGV4dHVyZUxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb3B5VGV4dHVyZUxheWVyKSBjb25z
dApAQCAtMjE5MSwxMSArMjE0NywxMCBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyOjplbnN1
cmVDbGVhckF0dGFjaG1lbnRzSW5pdGlhbGl6ZWQoY29uc3QgQ29udGV4dCAqY29udAogICAgICAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQogCi0gICAgY29uc3QgQmxl
bmRTdGF0ZSAmYmxlbmQgICAgICAgICAgICAgICA9IGdsU3RhdGUuZ2V0QmxlbmRTdGF0ZSgpOwog
ICAgIGNvbnN0IERlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWwgPSBnbFN0YXRlLmdldERl
cHRoU3RlbmNpbFN0YXRlKCk7CiAKLSAgICBib29sIGNvbG9yICAgPSAobWFzayAmIEdMX0NPTE9S
X0JVRkZFUl9CSVQpICE9IDAgJiYgIUlzQ29sb3JNYXNrZWRPdXQoYmxlbmQpOwotICAgIGJvb2wg
ZGVwdGggICA9IChtYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkgIT0gMCAmJiAhSXNEZXB0aE1h
c2tlZE91dChkZXB0aFN0ZW5jaWwpOworICAgIGJvb2wgY29sb3IgPSAobWFzayAmIEdMX0NPTE9S
X0JVRkZFUl9CSVQpICE9IDAgJiYgIWdsU3RhdGUuYWxsQWN0aXZlRHJhd0J1ZmZlckNoYW5uZWxz
TWFza2VkKCk7CisgICAgYm9vbCBkZXB0aCA9IChtYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkg
IT0gMCAmJiAhSXNEZXB0aE1hc2tlZE91dChkZXB0aFN0ZW5jaWwpOwogICAgIGJvb2wgc3RlbmNp
bCA9IChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAhPSAwICYmICFJc1N0ZW5jaWxNYXNr
ZWRPdXQoZGVwdGhTdGVuY2lsKTsKIAogICAgIGlmICghY29sb3IgJiYgIWRlcHRoICYmICFzdGVu
Y2lsKQpAQCAtMjIyMSw3ICsyMTc2LDggQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlcjo6ZW5z
dXJlQ2xlYXJCdWZmZXJBdHRhY2htZW50c0luaXRpYWxpemVkKGNvbnN0IENvbnRleHQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkcmF3YnVmZmVyKQogewogICAgIGlmICghY29udGV4dC0+aXNSb2J1c3RSZXNv
dXJjZUluaXRFbmFibGVkKCkgfHwKLSAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rl
cml6ZXJEaXNjYXJkRW5hYmxlZCgpIHx8IElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwg
YnVmZmVyKSkKKyAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5pc1Jhc3Rlcml6ZXJEaXNjYXJk
RW5hYmxlZCgpIHx8CisgICAgICAgIElzQ2xlYXJCdWZmZXJNYXNrZWRPdXQoY29udGV4dCwgYnVm
ZmVyLCBkcmF3YnVmZmVyKSkKICAgICB7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9GcmFtZWJ1ZmZlci5oCmluZGV4IGQ2ZjBhNzk5Mzk3ZGQwNDcwMDlhN2I1Yjc0N2Y1OGIy
MjViMzViNjYuLjdhMzA5OTdmNTk5OGMxZjZmZWJmZWFhNzM1NzQzYjkzMjkxZDJiM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5o
CkBAIC0xMjMsMTEgKzEyMywyMCBAQCBjbGFzcyBGcmFtZWJ1ZmZlclN0YXRlIGZpbmFsIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0OwogCisgICAgYm9v
bCBoYXNEZXB0aFN0ZW5jaWxGZWVkYmFja0xvb3AoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1EZXB0aEJ1ZmZlckZlZWRiYWNrTG9vcCB8fCBtU3RlbmNpbEJ1ZmZlckZlZWRiYWNrTG9v
cDsKKyAgICB9CisKICAgcHJpdmF0ZToKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmdldFdlYkdMRGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OwogICAgIGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudCAqZ2V0V2ViR0xEZXB0aEF0dGFjaG1lbnQoKSBjb25zdDsKICAgICBj
b25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFdlYkdMU3RlbmNpbEF0dGFjaG1lbnQoKSBj
b25zdDsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYSBjaGFuZ2UgaW4gdGhp
cyBhdHRhY2htZW50cyBmZWVkYmFjay1sb29wLW5lc3MuCisgICAgYm9vbCB1cGRhdGVBdHRhY2ht
ZW50RmVlZGJhY2tMb29wQW5kUmV0dXJuSWZDaGFuZ2VkKHNpemVfdCBkaXJ0eUJpdCk7CisgICAg
dm9pZCB1cGRhdGVIYXNSZW5kZXJpbmdGZWVkYmFja0xvb3AoKTsKKwogICAgIGZyaWVuZCBjbGFz
cyBGcmFtZWJ1ZmZlcjsKIAogICAgIEZyYW1lYnVmZmVySUQgbUlkOwpAQCAtMTU1LDYgKzE2NCwx
MiBAQCBjbGFzcyBGcmFtZWJ1ZmZlclN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAg
ICAgRnJhbWVidWZmZXJBdHRhY2htZW50IG1XZWJHTFN0ZW5jaWxBdHRhY2htZW50OwogICAgIGJv
b2wgbVdlYkdMRGVwdGhTdGVuY2lsQ29uc2lzdGVudDsKIAorICAgIC8vIFRyYWNrcyByZW5kZXJp
bmcgZmVlZGJhY2sgbG9vcHMuCisgICAgRHJhd0J1ZmZlck1hc2sgbURyYXdCdWZmZXJGZWVkYmFj
a0xvb3BzOworICAgIGJvb2wgbURlcHRoQnVmZmVyRmVlZGJhY2tMb29wOworICAgIGJvb2wgbVN0
ZW5jaWxCdWZmZXJGZWVkYmFja0xvb3A7CisgICAgYm9vbCBtSGFzUmVuZGVyaW5nRmVlZGJhY2tM
b29wOworCiAgICAgLy8gVHJhY2tzIGlmIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcmVzb3Vy
Y2VzIGZvciBlYWNoIGF0dGFjaG1lbnQuCiAgICAgYW5nbGU6OkJpdFNldDxJTVBMRU1FTlRBVElP
Tl9NQVhfRlJBTUVCVUZGRVJfQVRUQUNITUVOVFMgKyAyPiBtUmVzb3VyY2VOZWVkc0luaXQ7CiAK
QEAgLTI1MSw4ICsyNjYsOCBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBhbmds
ZTo6T2JzZXJ2ZXJJbnRlcmZhY2UsCiAgICAgYm9vbCB1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMo
KSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGNhbGxzIGNoZWNrU3RhdHVzLgotICAgIGlu
dCBnZXRTYW1wbGVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwotICAgIGludCBnZXRSZXNvdXJj
ZVNhbXBsZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCk7CisgICAgaW50IGdldFNhbXBsZXMoY29u
c3QgQ29udGV4dCAqY29udGV4dCkgY29uc3Q7CisgICAgaW50IGdldFJlc291cmNlU2FtcGxlcyhj
b25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKIAogICAgIGFuZ2xlOjpSZXN1bHQgZ2V0U2Ft
cGxlUG9zaXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwgc2l6ZV90IGluZGV4LCBHTGZsb2F0
ICp4eSkgY29uc3Q7CiAKQEAgLTI3MCw3ICsyODUsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5h
bCA6IHB1YmxpYyBhbmdsZTo6T2JzZXJ2ZXJJbnRlcmZhY2UsCiAgICAgdm9pZCBpbnZhbGlkYXRl
Q29tcGxldGVuZXNzQ2FjaGUoKTsKICAgICBBTkdMRV9JTkxJTkUgYm9vbCBjYWNoZWRTdGF0dXNW
YWxpZCgpIHsgcmV0dXJuIG1DYWNoZWRTdGF0dXMudmFsaWQoKTsgfQogCi0gICAgQU5HTEVfSU5M
SU5FIEdMZW51bSBjaGVja1N0YXR1cyhjb25zdCBDb250ZXh0ICpjb250ZXh0KQorICAgIEFOR0xF
X0lOTElORSBHTGVudW0gY2hlY2tTdGF0dXMoY29uc3QgQ29udGV4dCAqY29udGV4dCkgY29uc3QK
ICAgICB7CiAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGFsd2F5cyBjb21w
bGV0ZSBleGNlcHQgd2hlbiBpdCBpcyBzdXJmYWNlbGVzcyBpbiB3aGljaAogICAgICAgICAvLyBj
YXNlIGl0IGlzIGFsd2F5cyB1bnN1cHBvcnRlZC4KQEAgLTI4Nyw3ICszMDIsNyBAQCBjbGFzcyBG
cmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6T2JzZXJ2ZXJJbnRlcmZhY2UsCiAgICAg
aW50IGdldENhY2hlZFNhbXBsZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQXR0YWNobWVudFNh
bXBsZVR5cGUgc2FtcGxlVHlwZSkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIgZm9yIGNoZWNrU3Rh
dHVzID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLgotICAgIEFOR0xFX0lOTElORSBib29sIGlz
Q29tcGxldGUoY29uc3QgQ29udGV4dCAqY29udGV4dCkKKyAgICBBTkdMRV9JTkxJTkUgYm9vbCBp
c0NvbXBsZXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gKGNoZWNrU3RhdHVzKGNvbnRleHQpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKTsK
ICAgICB9CkBAIC0zNjMsMTkgKzM3OCwxOSBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1
YmxpYyBhbmdsZTo6T2JzZXJ2ZXJJbnRlcmZhY2UsCiAgICAgdXNpbmcgRGlydHlCaXRzID0gYW5n
bGU6OkJpdFNldDxESVJUWV9CSVRfTUFYPjsKICAgICBib29sIGhhc0FueURpcnR5Qml0KCkgY29u
c3QgeyByZXR1cm4gbURpcnR5Qml0cy5hbnkoKTsgfQogCi0gICAgYm9vbCBoYXNBY3RpdmVGbG9h
dDMyQ29sb3JBdHRhY2htZW50KCkgY29uc3QKKyAgICBEcmF3QnVmZmVyTWFzayBnZXRBY3RpdmVG
bG9hdDMyQ29sb3JBdHRhY2htZW50RHJhd0J1ZmZlck1hc2soKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIChtRmxvYXQzMkNvbG9yQXR0YWNobWVudEJpdHMgJiBnZXREcmF3QnVmZmVyTWFz
aygpKS5hbnkoKTsKKyAgICAgICAgcmV0dXJuIG1GbG9hdDMyQ29sb3JBdHRhY2htZW50Qml0cyAm
IGdldERyYXdCdWZmZXJNYXNrKCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNSZXNvdXJjZVRoYXRO
ZWVkc0luaXQoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubVJlc291cmNlTmVlZHNJbml0LmFueSgp
OyB9CiAKLSAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0
KTsKKyAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0KSBj
b25zdDsKIAogICAgIC8vIE9ic2VydmVyIGltcGxlbWVudGF0aW9uCiAgICAgdm9pZCBvblN1Ympl
Y3RTdGF0ZUNoYW5nZShhbmdsZTo6U3ViamVjdEluZGV4IGluZGV4LCBhbmdsZTo6U3ViamVjdE1l
c3NhZ2UgbWVzc2FnZSkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGZvcm1zUmVuZGVyaW5nRmVlZGJh
Y2tMb29wV2l0aChjb25zdCBDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKKyAgICBib29sIGhhc1Jl
bmRlcmluZ0ZlZWRiYWNrTG9vcCgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tSGFzUmVuZGVyaW5n
RmVlZGJhY2tMb29wOyB9CiAgICAgYm9vbCBmb3Jtc0NvcHlpbmdGZWVkYmFja0xvb3BXaXRoKFRl
eHR1cmVJRCBjb3B5VGV4dHVyZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBjb3B5VGV4dHVyZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBjb3B5VGV4dHVyZUxheWVyKSBjb25zdDsKQEAgLTQwMCw4ICs0MTUs
OCBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6T2JzZXJ2ZXJJbnRl
cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRh
Y2htZW50ICphdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtYXRjaFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hdGNoSWQpOwotICAgIEdMZW51bSBjaGVja1N0YXR1c1dpdGhHTEZyb250RW5kKGNvbnN0IENv
bnRleHQgKmNvbnRleHQpOwotICAgIEdMZW51bSBjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4
dCAqY29udGV4dCk7CisgICAgR0xlbnVtIGNoZWNrU3RhdHVzV2l0aEdMRnJvbnRFbmQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCkgY29uc3Q7CisgICAgR0xlbnVtIGNoZWNrU3RhdHVzSW1wbChjb25z
dCBDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKICAgICB2b2lkIHNldEF0dGFjaG1lbnQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLApAQCAtNDYzLDE4ICs0NzgsMTcg
QEAgY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok9ic2VydmVySW50ZXJm
YWNlLAogICAgIEZyYW1lYnVmZmVyU3RhdGUgbVN0YXRlOwogICAgIHJ4OjpGcmFtZWJ1ZmZlcklt
cGwgKm1JbXBsOwogCi0gICAgT3B0aW9uYWw8R0xlbnVtPiBtQ2FjaGVkU3RhdHVzOworICAgIG11
dGFibGUgT3B0aW9uYWw8R0xlbnVtPiBtQ2FjaGVkU3RhdHVzOwogICAgIHN0ZDo6dmVjdG9yPGFu
Z2xlOjpPYnNlcnZlckJpbmRpbmc+IG1EaXJ0eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzOwogICAg
IGFuZ2xlOjpPYnNlcnZlckJpbmRpbmcgbURpcnR5RGVwdGhBdHRhY2htZW50QmluZGluZzsKICAg
ICBhbmdsZTo6T2JzZXJ2ZXJCaW5kaW5nIG1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGluZzsK
IAotICAgIERpcnR5Qml0cyBtRGlydHlCaXRzOworICAgIG11dGFibGUgRGlydHlCaXRzIG1EaXJ0
eUJpdHM7CiAgICAgRHJhd0J1ZmZlck1hc2sgbUZsb2F0MzJDb2xvckF0dGFjaG1lbnRCaXRzOwot
ICAgIERyYXdCdWZmZXJNYXNrIG1Db2xvckF0dGFjaG1lbnRCaXRzOwogCiAgICAgLy8gVGhlIGRp
cnR5IGJpdHMgZ3VhcmQgaXMgY2hlY2tlZCB3aGVuIHdlIGdldCBhIGRlcGVuZGVudCBzdGF0ZSBj
aGFuZ2UgbWVzc2FnZS4gV2UgdmVyaWZ5IHRoYXQKICAgICAvLyB3ZSBkb24ndCBzZXQgYSBkaXJ0
eSBiaXQgdGhhdCBpc24ndCBhbHJlYWR5IHNldCwgd2hlbiBpbnNpZGUgdGhlIGRpcnR5IGJpdHMg
c3luY1N0YXRlLgotICAgIE9wdGlvbmFsPERpcnR5Qml0cz4gbURpcnR5Qml0c0d1YXJkOworICAg
IG11dGFibGUgT3B0aW9uYWw8RGlydHlCaXRzPiBtRGlydHlCaXRzR3VhcmQ7CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAKaW5kZXggNThmMDdmNzI2
MWY0MGJkNmYyMzQ3NGViODZlOGNhY2U2YTZiZjU1My4uMjg0ODAxOWJkNzA0NzRlYjM4YzYyYjY5
NDlmZTU4YTZlMzhmZjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAKQEAgLTI4MSw2
ICsyODEsMTcgQEAgdm9pZCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OnNldEluaXRTdGF0ZShJbml0
U3RhdGUgaW5pdFN0YXRlKSBjb25zdAogICAgIG1SZXNvdXJjZS0+c2V0SW5pdFN0YXRlKG1UYXJn
ZXQudGV4dHVyZUluZGV4KCksIGluaXRTdGF0ZSk7CiB9CiAKK2Jvb2wgRnJhbWVidWZmZXJBdHRh
Y2htZW50Ojppc0JvdW5kQXNTYW1wbGVyT3JJbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKG1UeXBl
ICE9IEdMX1RFWFRVUkUpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlID0gZ2V0VGV4dHVyZSgpLT5n
ZXRUZXh0dXJlU3RhdGUoKTsKKyAgICByZXR1cm4gdGV4dHVyZVN0YXRlLmlzQm91bmRBc0ltYWdl
VGV4dHVyZSgpIHx8IHRleHR1cmVTdGF0ZS5pc0JvdW5kQXNTYW1wbGVyVGV4dHVyZSgpOworfQor
CiAvLy8vLy8gRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0IEltcGxlbWVudGF0aW9uIC8vLy8v
LwogCiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3Q6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9i
amVjdCgpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgKaW5kZXggMTM3MGQxYjZlYzY3MTViNzBk
NGQzNDcwNzM4YTgxMGE2NTZhYjlkMS4uMjg4NzMwNTg5NDZiYzc2NjMwYTQ4ODJjZjQ1NzA0MzZi
ZmFlMzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaApAQCAtOTIsNiArOTIsOCBAQCBjbGFz
cyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgZmluYWwKICAgICBHTGVudW0gZ2V0Q29tcG9uZW50VHlw
ZSgpIGNvbnN0OwogICAgIEdMZW51bSBnZXRDb2xvckVuY29kaW5nKCkgY29uc3Q7CiAKKyAgICBi
b29sIGlzQm91bmRBc1NhbXBsZXJPckltYWdlKCkgY29uc3Q7CisKICAgICBib29sIGlzVGV4dHVy
ZVdpdGhJZChUZXh0dXJlSUQgdGV4dHVyZUlkKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1UeXBlID09IEdMX1RFWFRVUkUgJiYgaWQoKSA9PSB0ZXh0dXJlSWQudmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xFUzFSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xFUzFSZW5kZXJlci5j
cHAKaW5kZXggMzcwMjVhNTM0YzBjYzhmN2M5OTkzYTMwYjYxNTQ4ODU5ZDRmYmEwYS4uMzNlZGU3
N2U1YmM4MjNhOTY4MTM1NzI1M2UwMTE3MjM5ZWFjYWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0dMRVMxUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVJlbmRlcmVyLmNwcApAQCAtNTc2
LDkgKzU3Niw5IEBAIGFuZ2xlOjpSZXN1bHQgR0xFUzFSZW5kZXJlcjo6bGlua1Byb2dyYW0oQ29u
dGV4dCAqY29udGV4dCwKIAogICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKICAg
ICB7Ci0gICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGggPSBwcm9ncmFtT2JqZWN0LT5nZXRJbmZv
TG9nTGVuZ3RoKCk7CisgICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGggPSBwcm9ncmFtT2JqZWN0
LT5nZXRFeGVjdXRhYmxlKCkuZ2V0SW5mb0xvZ0xlbmd0aCgpOwogICAgICAgICBzdGQ6OnZlY3Rv
cjxjaGFyPiBpbmZvTG9nKGluZm9Mb2dMZW5ndGgsIDApOwotICAgICAgICBwcm9ncmFtT2JqZWN0
LT5nZXRJbmZvTG9nKGluZm9Mb2dMZW5ndGggLSAxLCBudWxscHRyLCBpbmZvTG9nLmRhdGEoKSk7
CisgICAgICAgIHByb2dyYW1PYmplY3QtPmdldEV4ZWN1dGFibGUoKS5nZXRJbmZvTG9nKGluZm9M
b2dMZW5ndGggLSAxLCBudWxscHRyLCBpbmZvTG9nLmRhdGEoKSk7CiAKICAgICAgICAgRVJSKCkg
PDwgIkludGVybmFsIEdMRVMgMSBzaGFkZXIgbGluayBmYWlsZWQuIEluZm8gbG9nOiAiIDw8IGlu
Zm9Mb2cuZGF0YSgpOwogICAgICAgICBBTkdMRV9DSEVDSyhjb250ZXh0LCBmYWxzZSwgIkdMRVMx
UmVuZGVyZXIgcHJvZ3JhbSBsaW5rIGZhaWxlZC4iLCBHTF9JTlZBTElEX09QRVJBVElPTik7CkBA
IC03NjEsODAgKzc2MSw4MyBAQCBhbmdsZTo6UmVzdWx0IEdMRVMxUmVuZGVyZXI6OmluaXRpYWxp
emVSZW5kZXJlclByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgU3RhdGUgKgogICAgIHJldHVybiBh
bmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBHTEVTMVJlbmRlcmVyOjpzZXRVbmlm
b3JtMWkoQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwgR0xpbnQgbG9j
LCBHTGludCB2YWx1ZSkKK3ZvaWQgR0xFUzFSZW5kZXJlcjo6c2V0VW5pZm9ybTFpKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtICpwcm9n
cmFtT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdmFs
dWUpCiB7Ci0gICAgaWYgKGxvYyA9PSAtMSkKKyAgICBpZiAobG9jYXRpb24udmFsdWUgPT0gLTEp
CiAgICAgICAgIHJldHVybjsKLSAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMWl2KGNvbnRl
eHQsIGxvYywgMSwgJnZhbHVlKTsKKyAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMWl2KGNv
bnRleHQsIGxvY2F0aW9uLCAxLCAmdmFsdWUpOwogfQogCiB2b2lkIEdMRVMxUmVuZGVyZXI6OnNl
dFVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnZhbHVlKQogewotICAgIGlmIChsb2MgPT0gLTEpCisgICAgaWYgKGxvY2F0aW9uLnZh
bHVlID09IC0xKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9y
bTFpdihjb250ZXh0LCBsb2MsIGNvdW50LCB2YWx1ZSk7CisgICAgcHJvZ3JhbU9iamVjdC0+c2V0
VW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KIAogdm9pZCBH
TEVTMVJlbmRlcmVyOjpzZXRVbmlmb3JtTWF0cml4NGZ2KFByb2dyYW0gKnByb2dyYW1PYmplY3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQogewotICAgIGlmIChsb2MgPT0gLTEpCisgICAgaWYgKGxvY2F0aW9uLnZh
bHVlID09IC0xKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9y
bU1hdHJpeDRmdihsb2MsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBwcm9ncmFtT2Jq
ZWN0LT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSk7CiB9CiAKIHZvaWQgR0xFUzFSZW5kZXJlcjo6c2V0VW5pZm9ybTRmdihQcm9ncmFtICpwcm9n
cmFtT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0g
ICAgaWYgKGxvYyA9PSAtMSkKKyAgICBpZiAobG9jYXRpb24udmFsdWUgPT0gLTEpCiAgICAgICAg
IHJldHVybjsKLSAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtNGZ2KGxvYywgY291bnQsIHZh
bHVlKTsKKyAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwg
dmFsdWUpOwogfQogCiB2b2lkIEdMRVMxUmVuZGVyZXI6OnNldFVuaWZvcm0zZnYoUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQog
ewotICAgIGlmIChsb2MgPT0gLTEpCisgICAgaWYgKGxvY2F0aW9uLnZhbHVlID09IC0xKQogICAg
ICAgICByZXR1cm47Ci0gICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTNmdihsb2MsIGNvdW50
LCB2YWx1ZSk7CisgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTNmdihsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKIH0KIAogdm9pZCBHTEVTMVJlbmRlcmVyOjpzZXRVbmlmb3JtMmZ2KFByb2dy
YW0gKnByb2dyYW1PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkKIHsKLSAgICBpZiAobG9jID09IC0xKQorICAgIGlmIChsb2NhdGlvbi52YWx1ZSA9PSAtMSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0yZnYobG9jLCBj
b3VudCwgdmFsdWUpOworICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0yZnYobG9jYXRpb24s
IGNvdW50LCB2YWx1ZSk7CiB9CiAKLXZvaWQgR0xFUzFSZW5kZXJlcjo6c2V0VW5pZm9ybTFmKFBy
b2dyYW0gKnByb2dyYW1PYmplY3QsIEdMaW50IGxvYywgR0xmbG9hdCB2YWx1ZSkKK3ZvaWQgR0xF
UzFSZW5kZXJlcjo6c2V0VW5pZm9ybTFmKFByb2dyYW0gKnByb2dyYW1PYmplY3QsIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgR0xmbG9hdCB2YWx1ZSkKIHsKLSAgICBpZiAobG9jID09IC0xKQor
ICAgIGlmIChsb2NhdGlvbi52YWx1ZSA9PSAtMSkKICAgICAgICAgcmV0dXJuOwotICAgIHByb2dy
YW1PYmplY3QtPnNldFVuaWZvcm0xZnYobG9jLCAxLCAmdmFsdWUpOworICAgIHByb2dyYW1PYmpl
Y3QtPnNldFVuaWZvcm0xZnYobG9jYXRpb24sIDEsICZ2YWx1ZSk7CiB9CiAKIHZvaWQgR0xFUzFS
ZW5kZXJlcjo6c2V0VW5pZm9ybTFmdihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgaWYgKGxvYyA9PSAtMSkKKyAg
ICBpZiAobG9jYXRpb24udmFsdWUgPT0gLTEpCiAgICAgICAgIHJldHVybjsKLSAgICBwcm9ncmFt
T2JqZWN0LT5zZXRVbmlmb3JtMWZ2KGxvYywgY291bnQsIHZhbHVlKTsKKyAgICBwcm9ncmFtT2Jq
ZWN0LT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQogCiB2b2lkIEdM
RVMxUmVuZGVyZXI6OnNldEF0dHJpYnV0ZXNFbmFibGVkKENvbnRleHQgKmNvbnRleHQsIFN0YXRl
ICpnbFN0YXRlLCBBdHRyaWJ1dGVzTWFzayBtYXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0dMRVMxUmVuZGVyZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVJlbmRlcmVyLmgKaW5kZXggZjdiNmE5OTg1MDVh
YjgxMWMzY2EzZDIxNjIyMTMzODVhYjI5Y2QyYS4uNWZlZjA3NTYxNjFkOTBjNTZlN2RhOWMxNGI5
ZDI2M2E3ODZmNjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0dMRVMxUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvR0xFUzFSZW5kZXJlci5oCkBAIC03MCwyMiArNzAsMzcgQEAgY2xhc3MgR0xFUzFS
ZW5kZXJlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEICpwcm9ncmFtT3V0KTsKICAgICBhbmdsZTo6UmVzdWx0
IGluaXRpYWxpemVSZW5kZXJlclByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgU3RhdGUgKmdsU3Rh
dGUpOwogCi0gICAgdm9pZCBzZXRVbmlmb3JtMWkoQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCwgR0xpbnQgbG9jLCBHTGludCB2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlm
b3JtMWkoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtICpw
cm9ncmFtT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBHTGludCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRV
bmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFByb2dy
YW0gKnByb2dyYW1PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnZhbHVlKTsKICAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0ZnYoUHJvZ3JhbSAqcHJv
Z3JhbU9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtNGZ2KFByb2dy
YW0gKnByb2dyYW1PYmplY3QsIEdMaW50IGxvYywgR0xpbnQgY291bnQsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm0zZnYoUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwg
R0xpbnQgbG9jLCBHTGludCBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIHZvaWQg
c2V0VW5pZm9ybTJmdihQcm9ncmFtICpwcm9ncmFtT2JqZWN0LCBHTGludCBsb2MsIEdMaW50IGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtMWYoUHJvZ3Jh
bSAqcHJvZ3JhbU9iamVjdCwgR0xpbnQgbG9jLCBHTGZsb2F0IHZhbHVlKTsKLSAgICB2b2lkIHNl
dFVuaWZvcm0xZnYoUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwgR0xpbnQgbG9jLCBHTGludCBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIHZvaWQgc2V0VW5pZm9ybTRmdihQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlmb3Jt
M2Z2KFByb2dyYW0gKnByb2dyYW1PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lk
IHNldFVuaWZvcm0yZnYoUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OworICAgIHZvaWQgc2V0VW5pZm9ybTFmKFByb2dyYW0gKnByb2dyYW1PYmplY3QsIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwgR0xmbG9hdCB2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlmb3JtMWZ2
KFByb2dyYW0gKnByb2dyYW1PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIAogICAgIHZvaWQg
c2V0QXR0cmlidXRlc0VuYWJsZWQoQ29udGV4dCAqY29udGV4dCwgU3RhdGUgKmdsU3RhdGUsIEF0
dHJpYnV0ZXNNYXNrIG1hc2spOwogCkBAIC0xMDUsOTcgKzEyMCw5NyBAQCBjbGFzcyBHTEVTMVJl
bmRlcmVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgewogICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbTsKIAotICAgICAgICBHTGludCBwcm9qTWF0cml4TG9jOwotICAgICAg
ICBHTGludCBtb2RlbHZpZXdNYXRyaXhMb2M7Ci0gICAgICAgIEdMaW50IHRleHR1cmVNYXRyaXhM
b2M7Ci0gICAgICAgIEdMaW50IG1vZGVsdmlld0ludlRyTG9jOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gcHJvak1hdHJpeExvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIG1vZGVsdmlld01h
dHJpeExvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHRleHR1cmVNYXRyaXhMb2M7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBtb2RlbHZpZXdJbnZUckxvYzsKIAogICAgICAgICAvLyBUZXh0
dXJpbmcKLSAgICAgICAgR0xpbnQgZW5hYmxlVGV4dHVyZTJETG9jOwotICAgICAgICBHTGludCBl
bmFibGVUZXh0dXJlQ3ViZU1hcExvYzsKLSAgICAgICAgc3RkOjphcnJheTxHTGludCwga1RleFVu
aXRDb3VudD4gdGV4MkRTYW1wbGVyTG9jczsKLSAgICAgICAgc3RkOjphcnJheTxHTGludCwga1Rl
eFVuaXRDb3VudD4gdGV4Q3ViZVNhbXBsZXJMb2NzOwotCi0gICAgICAgIEdMaW50IHRleHR1cmVG
b3JtYXRMb2M7Ci0KLSAgICAgICAgR0xpbnQgdGV4dHVyZUVudk1vZGVMb2M7Ci0gICAgICAgIEdM
aW50IGNvbWJpbmVSZ2JMb2M7Ci0gICAgICAgIEdMaW50IGNvbWJpbmVBbHBoYUxvYzsKLSAgICAg
ICAgR0xpbnQgc3JjMHJnYkxvYzsKLSAgICAgICAgR0xpbnQgc3JjMGFscGhhTG9jOwotICAgICAg
ICBHTGludCBzcmMxcmdiTG9jOwotICAgICAgICBHTGludCBzcmMxYWxwaGFMb2M7Ci0gICAgICAg
IEdMaW50IHNyYzJyZ2JMb2M7Ci0gICAgICAgIEdMaW50IHNyYzJhbHBoYUxvYzsKLSAgICAgICAg
R0xpbnQgb3AwcmdiTG9jOwotICAgICAgICBHTGludCBvcDBhbHBoYUxvYzsKLSAgICAgICAgR0xp
bnQgb3AxcmdiTG9jOwotICAgICAgICBHTGludCBvcDFhbHBoYUxvYzsKLSAgICAgICAgR0xpbnQg
b3AycmdiTG9jOwotICAgICAgICBHTGludCBvcDJhbHBoYUxvYzsKLSAgICAgICAgR0xpbnQgdGV4
dHVyZUVudkNvbG9yTG9jOwotICAgICAgICBHTGludCByZ2JTY2FsZUxvYzsKLSAgICAgICAgR0xp
bnQgYWxwaGFTY2FsZUxvYzsKLSAgICAgICAgR0xpbnQgcG9pbnRTcHJpdGVDb29yZFJlcGxhY2VM
b2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBlbmFibGVUZXh0dXJlMkRMb2M7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBlbmFibGVUZXh0dXJlQ3ViZU1hcExvYzsKKyAgICAgICAgc3RkOjph
cnJheTxVbmlmb3JtTG9jYXRpb24sIGtUZXhVbml0Q291bnQ+IHRleDJEU2FtcGxlckxvY3M7Cisg
ICAgICAgIHN0ZDo6YXJyYXk8VW5pZm9ybUxvY2F0aW9uLCBrVGV4VW5pdENvdW50PiB0ZXhDdWJl
U2FtcGxlckxvY3M7CisKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHRleHR1cmVGb3JtYXRMb2M7
CisKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHRleHR1cmVFbnZNb2RlTG9jOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gY29tYmluZVJnYkxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGNv
bWJpbmVBbHBoYUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHNyYzByZ2JMb2M7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBzcmMwYWxwaGFMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBzcmMxcmdiTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gc3JjMWFscGhhTG9jOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gc3JjMnJnYkxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IHNyYzJhbHBoYUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIG9wMHJnYkxvYzsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIG9wMGFscGhhTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
b3AxcmdiTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gb3AxYWxwaGFMb2M7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBvcDJyZ2JMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBvcDJh
bHBoYUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHRleHR1cmVFbnZDb2xvckxvYzsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIHJnYlNjYWxlTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gYWxwaGFTY2FsZUxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIHBvaW50U3ByaXRlQ29v
cmRSZXBsYWNlTG9jOwogCiAgICAgICAgIC8vIEFscGhhIHRlc3QKLSAgICAgICAgR0xpbnQgZW5h
YmxlQWxwaGFUZXN0TG9jOwotICAgICAgICBHTGludCBhbHBoYUZ1bmNMb2M7Ci0gICAgICAgIEdM
aW50IGFscGhhVGVzdFJlZkxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGVuYWJsZUFscGhh
VGVzdExvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGFscGhhRnVuY0xvYzsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGFscGhhVGVzdFJlZkxvYzsKIAogICAgICAgICAvLyBTaGFkaW5nLCBt
YXRlcmlhbHMsIGFuZCBsaWdodGluZwotICAgICAgICBHTGludCBzaGFkZU1vZGVsRmxhdExvYzsK
LSAgICAgICAgR0xpbnQgZW5hYmxlTGlnaHRpbmdMb2M7Ci0gICAgICAgIEdMaW50IGVuYWJsZVJl
c2NhbGVOb3JtYWxMb2M7Ci0gICAgICAgIEdMaW50IGVuYWJsZU5vcm1hbGl6ZUxvYzsKLSAgICAg
ICAgR0xpbnQgZW5hYmxlQ29sb3JNYXRlcmlhbExvYzsKLQotICAgICAgICBHTGludCBtYXRlcmlh
bEFtYmllbnRMb2M7Ci0gICAgICAgIEdMaW50IG1hdGVyaWFsRGlmZnVzZUxvYzsKLSAgICAgICAg
R0xpbnQgbWF0ZXJpYWxTcGVjdWxhckxvYzsKLSAgICAgICAgR0xpbnQgbWF0ZXJpYWxFbWlzc2l2
ZUxvYzsKLSAgICAgICAgR0xpbnQgbWF0ZXJpYWxTcGVjdWxhckV4cG9uZW50TG9jOwotCi0gICAg
ICAgIEdMaW50IGxpZ2h0TW9kZWxTY2VuZUFtYmllbnRMb2M7Ci0gICAgICAgIEdMaW50IGxpZ2h0
TW9kZWxUd29TaWRlZExvYzsKLQotICAgICAgICBHTGludCBsaWdodEVuYWJsZXNMb2M7Ci0gICAg
ICAgIEdMaW50IGxpZ2h0QW1iaWVudHNMb2M7Ci0gICAgICAgIEdMaW50IGxpZ2h0RGlmZnVzZXNM
b2M7Ci0gICAgICAgIEdMaW50IGxpZ2h0U3BlY3VsYXJzTG9jOwotICAgICAgICBHTGludCBsaWdo
dFBvc2l0aW9uc0xvYzsKLSAgICAgICAgR0xpbnQgbGlnaHREaXJlY3Rpb25zTG9jOwotICAgICAg
ICBHTGludCBsaWdodFNwb3RsaWdodEV4cG9uZW50c0xvYzsKLSAgICAgICAgR0xpbnQgbGlnaHRT
cG90bGlnaHRDdXRvZmZBbmdsZXNMb2M7Ci0gICAgICAgIEdMaW50IGxpZ2h0QXR0ZW51YXRpb25D
b25zdHNMb2M7Ci0gICAgICAgIEdMaW50IGxpZ2h0QXR0ZW51YXRpb25MaW5lYXJzTG9jOwotICAg
ICAgICBHTGludCBsaWdodEF0dGVudWF0aW9uUXVhZHJhdGljc0xvYzsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIHNoYWRlTW9kZWxGbGF0TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZW5h
YmxlTGlnaHRpbmdMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBlbmFibGVSZXNjYWxlTm9y
bWFsTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZW5hYmxlTm9ybWFsaXplTG9jOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gZW5hYmxlQ29sb3JNYXRlcmlhbExvYzsKKworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbWF0ZXJpYWxBbWJpZW50TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbWF0ZXJpYWxEaWZmdXNlTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbWF0ZXJpYWxT
cGVjdWxhckxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIG1hdGVyaWFsRW1pc3NpdmVMb2M7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBtYXRlcmlhbFNwZWN1bGFyRXhwb25lbnRMb2M7CisK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxpZ2h0TW9kZWxTY2VuZUFtYmllbnRMb2M7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodE1vZGVsVHdvU2lkZWRMb2M7CisKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxpZ2h0RW5hYmxlc0xvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxp
Z2h0QW1iaWVudHNMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodERpZmZ1c2VzTG9j
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbGlnaHRTcGVjdWxhcnNMb2M7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsaWdodFBvc2l0aW9uc0xvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxpZ2h0RGlyZWN0aW9uc0xvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxpZ2h0U3BvdGxp
Z2h0RXhwb25lbnRzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbGlnaHRTcG90bGlnaHRD
dXRvZmZBbmdsZXNMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodEF0dGVudWF0aW9u
Q29uc3RzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbGlnaHRBdHRlbnVhdGlvbkxpbmVh
cnNMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsaWdodEF0dGVudWF0aW9uUXVhZHJhdGlj
c0xvYzsKIAogICAgICAgICAvLyBGb2cKLSAgICAgICAgR0xpbnQgZm9nRW5hYmxlTG9jOwotICAg
ICAgICBHTGludCBmb2dNb2RlTG9jOwotICAgICAgICBHTGludCBmb2dEZW5zaXR5TG9jOwotICAg
ICAgICBHTGludCBmb2dTdGFydExvYzsKLSAgICAgICAgR0xpbnQgZm9nRW5kTG9jOwotICAgICAg
ICBHTGludCBmb2dDb2xvckxvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGZvZ0VuYWJsZUxv
YzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGZvZ01vZGVMb2M7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBmb2dEZW5zaXR5TG9jOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gZm9nU3RhcnRM
b2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBmb2dFbmRMb2M7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBmb2dDb2xvckxvYzsKIAogICAgICAgICAvLyBDbGlwIHBsYW5lcwotICAgICAgICBH
TGludCBlbmFibGVDbGlwUGxhbmVzTG9jOwotICAgICAgICBHTGludCBjbGlwUGxhbmVFbmFibGVz
TG9jOwotICAgICAgICBHTGludCBjbGlwUGxhbmVzTG9jOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gZW5hYmxlQ2xpcFBsYW5lc0xvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGNsaXBQbGFu
ZUVuYWJsZXNMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBjbGlwUGxhbmVzTG9jOwogCiAg
ICAgICAgIC8vIFBvaW50IHJhc3Rlcml6YXRpb24KLSAgICAgICAgR0xpbnQgcG9pbnRSYXN0ZXJp
emF0aW9uTG9jOwotICAgICAgICBHTGludCBwb2ludFNpemVNaW5Mb2M7Ci0gICAgICAgIEdMaW50
IHBvaW50U2l6ZU1heExvYzsKLSAgICAgICAgR0xpbnQgcG9pbnREaXN0YW5jZUF0dGVudWF0aW9u
TG9jOwotICAgICAgICBHTGludCBwb2ludFNwcml0ZUVuYWJsZWRMb2M7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBwb2ludFJhc3Rlcml6YXRpb25Mb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBwb2ludFNpemVNaW5Mb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBwb2ludFNpemVNYXhM
b2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBwb2ludERpc3RhbmNlQXR0ZW51YXRpb25Mb2M7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBwb2ludFNwcml0ZUVuYWJsZWRMb2M7CiAKICAgICAg
ICAgLy8gRHJhdyB0ZXh0dXJlCi0gICAgICAgIEdMaW50IGVuYWJsZURyYXdUZXh0dXJlTG9jOwot
ICAgICAgICBHTGludCBkcmF3VGV4dHVyZUNvb3Jkc0xvYzsKLSAgICAgICAgR0xpbnQgZHJhd1Rl
eHR1cmVEaW1zTG9jOwotICAgICAgICBHTGludCBkcmF3VGV4dHVyZU5vcm1hbGl6ZWRDcm9wUmVj
dExvYzsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGVuYWJsZURyYXdUZXh0dXJlTG9jOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gZHJhd1RleHR1cmVDb29yZHNMb2M7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBkcmF3VGV4dHVyZURpbXNMb2M7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBk
cmF3VGV4dHVyZU5vcm1hbGl6ZWRDcm9wUmVjdExvYzsKICAgICB9OwogCiAgICAgc3RydWN0IEdM
RVMxVW5pZm9ybUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9HTEVTMVN0YXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9HTEVTMVN0YXRlLmNwcAppbmRleCBmOGEzMDI0NzhkZDI0ZGY1ZjA0NzJiMTZlYTlj
YjQ4OWIyYjFmM2FjLi5mYTdlNDUyMjA2MTBlYmMxMzMwYjE2NmQ5YTQzMGJjMzBmODVhNGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvR0xFUzFTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0dMRVMxU3Rh
dGUuY3BwCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBHTEVTMVN0YXRlOjpzZXRIaW50KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBtb2RlKQogICAgIH0KIH0KIAotR0xlbnVtIEdMRVMxU3RhdGU6Omdl
dEhpbnQoR0xlbnVtIHRhcmdldCkKK0dMZW51bSBHTEVTMVN0YXRlOjpnZXRIaW50KEdMZW51bSB0
YXJnZXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0dMRVMxU3RhdGUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9HTEVTMVN0YXRlLmgKaW5kZXggOTViOWYx
Mzg0OTQ1NmFlZWZiOTY5OGJhM2Y0MTI1ZDAxNTdkZjAzYy4uMzFmZWQ2MjZhMjdhMTE4NDk5NTQ4
NzhjOThkNTM2YmRhNzM3MDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0dMRVMxU3RhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvR0xFUzFTdGF0ZS5oCkBAIC0yMTgsNyArMjE4LDcgQEAgY2xhc3MgR0xFUzFT
dGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEF0dHJpYnV0ZXNNYXNrIGdldEFj
dGl2ZUF0dHJpYnV0ZXNNYXNrKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhpbnQoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIG1vZGUpOwotICAgIEdMZW51bSBnZXRIaW50KEdMZW51bSB0YXJnZXQpOwor
ICAgIEdMZW51bSBnZXRIaW50KEdMZW51bSB0YXJnZXQpIGNvbnN0OwogCiAgIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMGQzZDQ5YjcyOTBiMDI0NDZlMGRmMmI5NzdmYWNmMzA1
Y2QzZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBIYW5kbGVS
YW5nZUFsbG9jYXRvci5jcHAgOiBJbXBsZW1lbnRhdGlvbiBmb3IgSGFuZGxlUmFuZ2VBbGxvY2F0
b3IuaAotCi0jaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCIKLQotI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8dXRpbGl0eT4K
LQotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCi0KLW5hbWVzcGFjZSBnbAotewotCi1jb25zdCBHTHVpbnQgSGFuZGxlUmFuZ2VBbGxvY2F0
b3I6OmtJbnZhbGlkSGFuZGxlID0gMDsKLQotSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OkhhbmRsZVJh
bmdlQWxsb2NhdG9yKCkKLXsKLSAgICAvLyBTaW1wbGlmeSB0aGUgY29kZSBieSBtYWtpbmcgc3Vy
ZSB0aGF0IGxvd2VyX2JvdW5kKGlkKSBuZXZlcgotICAgIC8vIHJldHVybnMgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgbWFwLCBpZiBpZCBpcyB2YWxpZCAoZWcgIT0ga0ludmFsaWRIYW5kbGUpLgotICAg
IG1Vc2VkLmluc2VydChzdGQ6Om1ha2VfcGFpcigwdSwgMHUpKTsKLX0KLQotSGFuZGxlUmFuZ2VB
bGxvY2F0b3I6On5IYW5kbGVSYW5nZUFsbG9jYXRvcigpIHt9Ci0KLUdMdWludCBIYW5kbGVSYW5n
ZUFsbG9jYXRvcjo6YWxsb2NhdGUoKQotewotICAgIHJldHVybiBhbGxvY2F0ZVJhbmdlKDF1KTsK
LX0KLQotR0x1aW50IEhhbmRsZVJhbmdlQWxsb2NhdG9yOjphbGxvY2F0ZUF0T3JBYm92ZShHTHVp
bnQgd2FudGVkKQotewotICAgIGlmICh3YW50ZWQgPT0gMHUgfHwgd2FudGVkID09IDF1KQotICAg
ICAgICByZXR1cm4gYWxsb2NhdGVSYW5nZSgxdSk7Ci0KLSAgICBhdXRvIGN1cnJlbnQgPSBtVXNl
ZC5sb3dlcl9ib3VuZCh3YW50ZWQpOwotICAgIGF1dG8gbmV4dCAgICA9IGN1cnJlbnQ7Ci0gICAg
aWYgKGN1cnJlbnQgPT0gbVVzZWQuZW5kKCkgfHwgY3VycmVudC0+Zmlyc3QgPiB3YW50ZWQpCi0g
ICAgewotICAgICAgICBjdXJyZW50LS07Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
IG5leHQrKzsKLSAgICB9Ci0KLSAgICBHTHVpbnQgZmlyc3RJZCA9IGN1cnJlbnQtPmZpcnN0Owot
ICAgIEdMdWludCBsYXN0SWQgID0gY3VycmVudC0+c2Vjb25kOwotICAgIEFTU0VSVCh3YW50ZWQg
Pj0gZmlyc3RJZCk7Ci0KLSAgICBpZiAod2FudGVkIC0gMXUgPD0gbGFzdElkKQotICAgIHsKLSAg
ICAgICAgLy8gQXBwZW5kIHRvIGN1cnJlbnQgcmFuZ2UuCi0gICAgICAgIGxhc3RJZCsrOwotICAg
ICAgICBpZiAobGFzdElkID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBpbmNy
ZW1lbnQgb3ZlcmZsb3dlZC4KLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0ZVJhbmdlKDF1KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGN1cnJlbnQtPnNlY29uZCA9IGxhc3RJZDsKLQotICAgICAg
ICBpZiAobmV4dCAhPSBtVXNlZC5lbmQoKSAmJiBuZXh0LT5maXJzdCAtIDF1ID09IGxhc3RJZCkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gTWVyZ2Ugd2l0aCBuZXh0IHJhbmdlLgotICAgICAg
ICAgICAgY3VycmVudC0+c2Vjb25kID0gbmV4dC0+c2Vjb25kOwotICAgICAgICAgICAgbVVzZWQu
ZXJhc2UobmV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGxhc3RJZDsKLSAgICB9Ci0g
ICAgZWxzZSBpZiAobmV4dCAhPSBtVXNlZC5lbmQoKSAmJiBuZXh0LT5maXJzdCAtIDF1ID09IHdh
bnRlZCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXBlbmQgdG8gbmV4dCByYW5nZS4KLSAgICAgICAg
R0x1aW50IGxhc3RFeGlzdGluZyA9IG5leHQtPnNlY29uZDsKLSAgICAgICAgbVVzZWQuZXJhc2Uo
bmV4dCk7Ci0gICAgICAgIG1Vc2VkLmluc2VydChzdGQ6Om1ha2VfcGFpcih3YW50ZWQsIGxhc3RF
eGlzdGluZykpOwotICAgICAgICByZXR1cm4gd2FudGVkOwotICAgIH0KLSAgICBtVXNlZC5pbnNl
cnQoc3RkOjptYWtlX3BhaXIod2FudGVkLCB3YW50ZWQpKTsKLSAgICByZXR1cm4gd2FudGVkOwot
fQotCi1HTHVpbnQgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmFsbG9jYXRlUmFuZ2UoR0x1aW50IHJh
bmdlKQotewotICAgIEFTU0VSVChyYW5nZSAhPSAwKTsKLQotICAgIGF1dG8gY3VycmVudCA9IG1V
c2VkLmJlZ2luKCk7Ci0gICAgYXV0byBuZXh0ICAgID0gY3VycmVudDsKLQotICAgIHdoaWxlICgr
K25leHQgIT0gbVVzZWQuZW5kKCkpCi0gICAgewotICAgICAgICBpZiAobmV4dC0+Zmlyc3QgLSBj
dXJyZW50LT5zZWNvbmQgPiByYW5nZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjdXJy
ZW50ID0gbmV4dDsKLSAgICB9Ci0gICAgY29uc3QgR0x1aW50IGZpcnN0SWQgPSBjdXJyZW50LT5z
ZWNvbmQgKyAxdTsKLSAgICBjb25zdCBHTHVpbnQgbGFzdElkICA9IGZpcnN0SWQgKyByYW5nZSAt
IDF1OwotCi0gICAgLy8gZGVhbCB3aXRoIHdyYXBhcm91bmQKLSAgICBpZiAoZmlyc3RJZCA9PSAw
dSB8fCBsYXN0SWQgPCBmaXJzdElkKQotICAgICAgICByZXR1cm4ga0ludmFsaWRIYW5kbGU7Ci0K
LSAgICBjdXJyZW50LT5zZWNvbmQgPSBsYXN0SWQ7Ci0KLSAgICBpZiAobmV4dCAhPSBtVXNlZC5l
bmQoKSAmJiBuZXh0LT5maXJzdCAtIDF1ID09IGxhc3RJZCkKLSAgICB7Ci0gICAgICAgIC8vIG1l
cmdlIHdpdGggbmV4dCByYW5nZQotICAgICAgICBjdXJyZW50LT5zZWNvbmQgPSBuZXh0LT5zZWNv
bmQ7Ci0gICAgICAgIG1Vc2VkLmVyYXNlKG5leHQpOwotICAgIH0KLSAgICByZXR1cm4gZmlyc3RJ
ZDsKLX0KLQotYm9vbCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6bWFya0FzVXNlZChHTHVpbnQgaGFu
ZGxlKQotewotICAgIEFTU0VSVChoYW5kbGUpOwotICAgIGF1dG8gY3VycmVudCA9IG1Vc2VkLmxv
d2VyX2JvdW5kKGhhbmRsZSk7Ci0gICAgaWYgKGN1cnJlbnQgIT0gbVVzZWQuZW5kKCkgJiYgY3Vy
cmVudC0+Zmlyc3QgPT0gaGFuZGxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRv
IG5leHQgPSBjdXJyZW50OwotICAgIC0tY3VycmVudDsKLQotICAgIGlmIChjdXJyZW50LT5zZWNv
bmQgPj0gaGFuZGxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoY3VycmVu
dC0+Zmlyc3QgPCBoYW5kbGUgJiYgY3VycmVudC0+c2Vjb25kIDwgaGFuZGxlKTsKLQotICAgIGlm
IChjdXJyZW50LT5zZWNvbmQgKyAxdSA9PSBoYW5kbGUpCi0gICAgewotICAgICAgICAvLyBBcHBl
bmQgdG8gY3VycmVudCByYW5nZS4KLSAgICAgICAgY3VycmVudC0+c2Vjb25kID0gaGFuZGxlOwot
ICAgICAgICBpZiAobmV4dCAhPSBtVXNlZC5lbmQoKSAmJiBuZXh0LT5maXJzdCAtIDF1ID09IGhh
bmRsZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gTWVyZ2Ugd2l0aCBuZXh0IHJhbmdlLgot
ICAgICAgICAgICAgY3VycmVudC0+c2Vjb25kID0gbmV4dC0+c2Vjb25kOwotICAgICAgICAgICAg
bVVzZWQuZXJhc2UobmV4dCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGVsc2UgaWYgKG5leHQgIT0gbVVzZWQuZW5kKCkgJiYgbmV4dC0+Zmlyc3QgLSAxdSA9
PSBoYW5kbGUpCi0gICAgewotICAgICAgICAvLyBQcmVwZW5kIHRvIG5leHQgcmFuZ2UuCi0gICAg
ICAgIEdMdWludCBsYXN0RXhpc3RpbmcgPSBuZXh0LT5zZWNvbmQ7Ci0gICAgICAgIG1Vc2VkLmVy
YXNlKG5leHQpOwotICAgICAgICBtVXNlZC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoaGFuZGxlLCBs
YXN0RXhpc3RpbmcpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgbVVzZWQu
aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGhhbmRsZSwgaGFuZGxlKSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OnJlbGVhc2UoR0x1aW50IGhhbmRsZSkK
LXsKLSAgICByZWxlYXNlUmFuZ2UoaGFuZGxlLCAxdSk7Ci19Ci0KLXZvaWQgSGFuZGxlUmFuZ2VB
bGxvY2F0b3I6OnJlbGVhc2VSYW5nZShHTHVpbnQgZmlyc3QsIEdMdWludCByYW5nZSkKLXsKLSAg
ICBpZiAocmFuZ2UgPT0gMHUgfHwgKGZpcnN0ID09IDB1ICYmIHJhbmdlID09IDF1KSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKGZpcnN0ID09IDB1KQotICAgIHsKLSAgICAgICAgZmlyc3Qr
KzsKLSAgICAgICAgcmFuZ2UtLTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbGFzdCA9IGZpcnN0ICsg
cmFuZ2UgLSAxdTsKLSAgICBpZiAobGFzdCA8IGZpcnN0KQotICAgICAgICBsYXN0ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKTsKLQotICAgIHdoaWxlICh0cnVlKQotICAgIHsK
LSAgICAgICAgYXV0byBjdXJyZW50ID0gbVVzZWQubG93ZXJfYm91bmQobGFzdCk7Ci0gICAgICAg
IGlmIChjdXJyZW50ID09IG1Vc2VkLmVuZCgpIHx8IGN1cnJlbnQtPmZpcnN0ID4gbGFzdCkKLSAg
ICAgICAgICAgIC0tY3VycmVudDsKLQotICAgICAgICBpZiAoY3VycmVudC0+c2Vjb25kIDwgZmly
c3QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGN1cnJlbnQtPmZpcnN0ID49
IGZpcnN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBHTHVpbnQgbGFzdEV4aXN0aW5n
ID0gY3VycmVudC0+c2Vjb25kOwotICAgICAgICAgICAgbVVzZWQuZXJhc2UoY3VycmVudCk7Ci0g
ICAgICAgICAgICBpZiAobGFzdCA8IGxhc3RFeGlzdGluZykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBtVXNlZC5pbnNlcnQoc3RkOjptYWtlX3BhaXIobGFzdCArIDF1LCBsYXN0RXhp
c3RpbmcpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjdXJy
ZW50LT5zZWNvbmQgPD0gbGFzdCkKLSAgICAgICAgewotICAgICAgICAgICAgY3VycmVudC0+c2Vj
b25kID0gZmlyc3QgLSAxdTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChjdXJyZW50LT5maXJzdCA8IGZpcnN0ICYmIGN1cnJlbnQtPnNlY29u
ZCA+IGxhc3QpOwotICAgICAgICAgICAgY29uc3QgR0x1aW50IGxhc3RFeGlzdGluZyA9IGN1cnJl
bnQtPnNlY29uZDsKLSAgICAgICAgICAgIGN1cnJlbnQtPnNlY29uZCAgICAgICAgICAgPSBmaXJz
dCAtIDF1OwotICAgICAgICAgICAgbVVzZWQuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGxhc3QgKyAx
dSwgbGFzdEV4aXN0aW5nKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgSGFuZGxlUmFu
Z2VBbGxvY2F0b3I6OmlzVXNlZChHTHVpbnQgaGFuZGxlKSBjb25zdAotewotICAgIGlmIChoYW5k
bGUgPT0ga0ludmFsaWRIYW5kbGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8g
Y3VycmVudCA9IG1Vc2VkLmxvd2VyX2JvdW5kKGhhbmRsZSk7Ci0gICAgaWYgKGN1cnJlbnQgIT0g
bVVzZWQuZW5kKCkpCi0gICAgewotICAgICAgICBpZiAoY3VycmVudC0+Zmlyc3QgPT0gaGFuZGxl
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIC0tY3VycmVudDsKLSAgICBy
ZXR1cm4gY3VycmVudC0+c2Vjb25kID49IGhhbmRsZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGds
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxl
UmFuZ2VBbGxvY2F0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9I
YW5kbGVSYW5nZUFsbG9jYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTQ5
YjE2NGQwNTU1MDUwZjExMDNmODEzZjcyM2E2YjQ0NWIwNWQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDAyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLQotLy8gSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaDogRGVmaW5lcyB0aGUg
Z2w6OkhhbmRsZVJhbmdlQWxsb2NhdG9yIGNsYXNzLCB3aGljaCBpcyB1c2VkIHRvCi0vLyBhbGxv
Y2F0ZSBjb250aWd1b3VzIHJhbmdlcyBvZiBHTCBwYXRoIGhhbmRsZXMuCi0KLSNpZm5kZWYgTElC
QU5HTEVfSEFORExFUkFOR0VBTExPQ0FUT1JfSF8KLSNkZWZpbmUgTElCQU5HTEVfSEFORExFUkFO
R0VBTExPQ0FUT1JfSF8KLQotI2luY2x1ZGUgPG1hcD4KLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgi
Ci0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci0KLS8v
IEFsbG9jYXRlcyBjb250aWd1b3VzIHJhbmdlcyBvZiBwYXRoIG9iamVjdCBoYW5kbGVzLgotY2xh
c3MgSGFuZGxlUmFuZ2VBbGxvY2F0b3IgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAg
cHVibGljOgotICAgIHN0YXRpYyBjb25zdCBHTHVpbnQga0ludmFsaWRIYW5kbGU7Ci0KLSAgICBI
YW5kbGVSYW5nZUFsbG9jYXRvcigpOwotICAgIH5IYW5kbGVSYW5nZUFsbG9jYXRvcigpOwotCi0g
ICAgLy8gQWxsb2NhdGVzIGEgbmV3IHBhdGggaGFuZGxlLgotICAgIEdMdWludCBhbGxvY2F0ZSgp
OwotCi0gICAgLy8gQWxsb2NhdGVzIGEgaGFuZGxlIHN0YXJ0aW5nIGF0IG9yIGFib3ZlIHRoZSB2
YWx1ZSBvZiB8d2FudGVkfC4KLSAgICAvLyBOb3RlOiBtYXkgd3JhcCBpZiBpdCBzdGFydHMgbmVh
ciBsaW1pdC4KLSAgICBHTHVpbnQgYWxsb2NhdGVBdE9yQWJvdmUoR0x1aW50IHdhbnRlZCk7Ci0K
LSAgICAvLyBBbGxvY2F0ZXMgfHJhbmdlfCBhbW91bnQgb2YgY29udGlndW91cyBwYXRocy4KLSAg
ICAvLyBSZXR1cm5zIHRoZSBmaXJzdCBpZCB0byB8Zmlyc3RfaWR8IG9yIHxrSW52YWxpZEhhbmRs
ZXwgaWYKLSAgICAvLyBhbGxvY2F0aW9uIGZhaWxlZC4KLSAgICBHTHVpbnQgYWxsb2NhdGVSYW5n
ZShHTHVpbnQgcmFuZ2UpOwotCi0gICAgLy8gTWFya3MgYW4gaWQgYXMgdXNlZC4gUmV0dXJucyBm
YWxzZSBpZiBoYW5kbGUgd2FzIGFscmVhZHkgdXNlZC4KLSAgICBib29sIG1hcmtBc1VzZWQoR0x1
aW50IGhhbmRsZSk7Ci0KLSAgICAvLyBSZWxlYXNlIGhhbmRsZS4KLSAgICB2b2lkIHJlbGVhc2Uo
R0x1aW50IGhhbmRsZSk7Ci0KLSAgICAvLyBSZWxlYXNlIGEgfHJhbmdlfCBhbW91bnQgb2YgY29u
dGlndW91cyBoYW5kbGVzLCBzdGFydGluZyBmcm9tIHxmaXJzdHwKLSAgICB2b2lkIHJlbGVhc2VS
YW5nZShHTHVpbnQgZmlyc3QsIEdMdWludCByYW5nZSk7Ci0KLSAgICAvLyBDaGVja3Mgd2hldGhl
ciBvciBub3QgYSByZXNvdXJjZSBJRCBpcyBpbiB1c2UuCi0gICAgYm9vbCBpc1VzZWQoR0x1aW50
IGhhbmRsZSkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdGQ6Om1hcDxHTHVpbnQsIEdMdWlu
dD4gbVVzZWQ7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgZ2wKLQotI2VuZGlmICAvLyBMSUJBTkdM
RV9IQU5ETEVSQU5HRUFMTE9DQVRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yX3VuaXR0ZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvcl91
bml0dGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYmQ1M2E0MTY1YzYy
ZTExNzc5OTIzNTY4YzllZjA3YTY2NzI4NWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hh
bmRsZVJhbmdlQWxsb2NhdG9yX3VuaXR0ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NSAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0vLwotLy8gVW5pdCB0ZXN0cyBmb3IgSGFuZGxlUmFuZ2VBbGxvY2F0b3Iu
Ci0vLwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi0jaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCIKLQotbmFtZXNw
YWNlCi17Ci0KLWNsYXNzIEhhbmRsZVJhbmdlQWxsb2NhdG9yVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBnbDo6SGFuZGxlUmFuZ2VBbGxvY2F0b3IgKmdl
dEFsbG9jYXRvcigpIHsgcmV0dXJuICZtQWxsb2NhdG9yOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBn
bDo6SGFuZGxlUmFuZ2VBbGxvY2F0b3IgbUFsbG9jYXRvcjsKLX07Ci0KLS8vIENoZWNrcyBiYXNp
YyBmdW5jdGlvbmFsaXR5OiBhbGxvY2F0ZSwgcmVsZWFzZSwgaXNVc2VkLgotVEVTVF9GKEhhbmRs
ZVJhbmdlQWxsb2NhdG9yVGVzdCwgVGVzdEJhc2ljKQotewotICAgIGF1dG8gKmFsbG9jYXRvciA9
IGdldEFsbG9jYXRvcigpOwotICAgIC8vIENoZWNrIHRoYXQgcmVzb3VyY2UgMSBpcyBub3QgaW4g
dXNlCi0gICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNVc2VkKDEpKTsKLQotICAgIC8vIEFs
bG9jYXRlIGFuIElELCBjaGVjayB0aGF0IGl0J3MgaW4gdXNlLgotICAgIEdMdWludCBpZDEgPSBh
bGxvY2F0b3ItPmFsbG9jYXRlKCk7Ci0gICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQo
aWQxKSk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBhbm90aGVyIElELCBjaGVjayB0aGF0IGl0J3MgaW4g
dXNlLCBhbmQgZGlmZmVyZW50IGZyb20gdGhlIGZpcnN0Ci0gICAgLy8gb25lLgotICAgIEdMdWlu
dCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKCk7Ci0gICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9y
LT5pc1VzZWQoaWQyKSk7Ci0gICAgRVhQRUNUX05FKGlkMSwgaWQyKTsKLQotICAgIC8vIEZyZWUg
b25lIG9mIHRoZSBJRHMsIGNoZWNrIHRoYXQgaXQncyBub3QgaW4gdXNlIGFueSBtb3JlLgotICAg
IGFsbG9jYXRvci0+cmVsZWFzZShpZDEpOwotICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlz
VXNlZChpZDEpKTsKLQotICAgIC8vIEZyZWVzIHRoZSBvdGhlciBJRCwgY2hlY2sgdGhhdCBpdCdz
IG5vdCBpbiB1c2UgYW55IG1vcmUuCi0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkMik7Ci0gICAg
RVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNVc2VkKGlkMikpOwotfQotCi0vLyBDaGVja3MgdGhh
dCB0aGUgcmVzb3VyY2UgaGFuZGxlcyBhcmUgcmUtdXNlZCBhZnRlciBiZWluZyBmcmVlZC4KLVRF
U1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3QsIFRlc3RBZHZhbmNlZCkKLXsKLSAgICBhdXRv
ICphbGxvY2F0b3IgPSBnZXRBbGxvY2F0b3IoKTsKLQotICAgIC8vIEFsbG9jYXRlIHRoZSBoaWdo
ZXN0IHBvc3NpYmxlIElELCB0byBtYWtlIGxpZmUgYXdrd2FyZC4KLSAgICBhbGxvY2F0b3ItPmFs
bG9jYXRlQXRPckFib3ZlKH5zdGF0aWNfY2FzdDxHTHVpbnQ+KDApKTsKLQotICAgIC8vIEFsbG9j
YXRlIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIHJlc291cmNlcy4KLSAgICBjb25zdCB1bnNpZ25l
ZCBpbnQga051bVJlc291cmNlcyA9IDEwMDsKLSAgICBHTHVpbnQgaWRzW2tOdW1SZXNvdXJjZXNd
OwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwga051bVJlc291cmNlczsgKytpKQot
ICAgIHsKLSAgICAgICAgaWRzW2ldID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgICAgICBF
WFBFQ1RfVFJVRShhbGxvY2F0b3ItPmlzVXNlZChpZHNbaV0pKTsKLSAgICB9Ci0KLSAgICAvLyBD
aGVjayB0aGF0IGEgbmV3IGFsbG9jYXRpb24gcmUtdXNlcyB0aGUgcmVzb3VyY2Ugd2UganVzdCBm
cmVlZC4KLSAgICBHTHVpbnQgaWQxID0gaWRzW2tOdW1SZXNvdXJjZXMgLyAyXTsKLSAgICBhbGxv
Y2F0b3ItPnJlbGVhc2UoaWQxKTsKLSAgICBFWFBFQ1RfRkFMU0UoYWxsb2NhdG9yLT5pc1VzZWQo
aWQxKSk7Ci0gICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICBFWFBF
Q1RfVFJVRShhbGxvY2F0b3ItPmlzVXNlZChpZDIpKTsKLSAgICBFWFBFQ1RfRVEoaWQxLCBpZDIp
OwotfQotCi0vLyBDaGVja3MgdGhhdCB3ZSBjYW4gY2hvb3NlIG91ciBvd24gaWRzIGFuZCB0aGV5
IHdvbid0IGJlIHJldXNlZC4KLVRFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3QsIE1hcmtB
c1VzZWQpCi17Ci0gICAgYXV0byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7Ci0gICAgR0x1
aW50IGlkICAgICAgID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgIGFsbG9jYXRvci0+cmVs
ZWFzZShpZCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGFsbG9jYXRvci0+aXNVc2VkKGlkKSk7Ci0gICAg
RVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5tYXJrQXNVc2VkKGlkKSk7Ci0gICAgRVhQRUNUX1RSVUUo
YWxsb2NhdG9yLT5pc1VzZWQoaWQpKTsKLSAgICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxv
Y2F0ZSgpOwotICAgIEVYUEVDVF9ORShpZCwgaWQyKTsKLSAgICBFWFBFQ1RfVFJVRShhbGxvY2F0
b3ItPm1hcmtBc1VzZWQoaWQyICsgMSkpOwotICAgIEdMdWludCBpZDMgPSBhbGxvY2F0b3ItPmFs
bG9jYXRlKCk7Ci0gICAgLy8gQ2hlY2tzIG91ciBhbGdvcml0aG0uIElmIHRoZSBhbGdvcml0aG0g
Y2hhbmdlcyB0aGlzIGNoZWNrIHNob3VsZCBiZQotICAgIC8vIGNoYW5nZWQuCi0gICAgRVhQRUNU
X0VRKGlkMywgaWQyICsgMik7Ci19Ci0KLS8vIENoZWNrcyBhbGxvY2F0ZUF0T3JBYm92ZS4KLVRF
U1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3QsIEFsbG9jYXRlQXRPckFib3ZlKQotewotICAg
IGNvbnN0IEdMdWludCBrT2Zmc2V0ID0gMTIzNDU2OwotICAgIGF1dG8gKmFsbG9jYXRvciAgICAg
ID0gZ2V0QWxsb2NhdG9yKCk7Ci0gICAgR0x1aW50IGlkMSAgICAgICAgICAgPSBhbGxvY2F0b3It
PmFsbG9jYXRlQXRPckFib3ZlKGtPZmZzZXQpOwotICAgIEVYUEVDVF9FUShrT2Zmc2V0LCBpZDEp
OwotICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtPZmZzZXQp
OwotICAgIEVYUEVDVF9HVChpZDIsIGtPZmZzZXQpOwotICAgIEdMdWludCBpZDMgPSBhbGxvY2F0
b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtPZmZzZXQpOwotICAgIEVYUEVDVF9HVChpZDMsIGtPZmZz
ZXQpOwotfQotCi0vLyBDaGVja3MgdGhhdCBhbGxvY2F0ZUF0T3JBYm92ZSB3cmFwcyBhcm91bmQg
YXQgdGhlIG1heGltdW0gdmFsdWUuCi1URVNUX0YoSGFuZGxlUmFuZ2VBbGxvY2F0b3JUZXN0LCBB
bGxvY2F0ZUlkQXRPckFib3ZlV3JhcHNBcm91bmQpCi17Ci0gICAgY29uc3QgR0x1aW50IGtNYXhQ
b3NzaWJsZU9mZnNldCA9IH5zdGF0aWNfY2FzdDxHTHVpbnQ+KDApOwotICAgIGF1dG8gKmFsbG9j
YXRvciAgICAgICAgICAgICAgICAgPSBnZXRBbGxvY2F0b3IoKTsKLSAgICBHTHVpbnQgaWQxICAg
ICAgICAgICAgICAgICAgICAgID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92ZShrTWF4UG9z
c2libGVPZmZzZXQpOwotICAgIEVYUEVDVF9FUShrTWF4UG9zc2libGVPZmZzZXQsIGlkMSk7Ci0g
ICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxl
T2Zmc2V0KTsKLSAgICBFWFBFQ1RfRVEoMXUsIGlkMik7Ci0gICAgR0x1aW50IGlkMyA9IGFsbG9j
YXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0KTsKLSAgICBFWFBFQ1Rf
RVEoMnUsIGlkMyk7Ci19Ci0KLS8vIENoZWNrcyB0aGF0IGZyZWVpbmcgYW4gYWxyZWFkeSBmcmVl
ZCByYW5nZSBjYXVzZXMgbm8gaGFybS4KLVRFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3Qs
IFJlZHVuZGFudEZyZWVJc0lnbm9yZWQpCi17Ci0gICAgYXV0byAqYWxsb2NhdG9yID0gZ2V0QWxs
b2NhdG9yKCk7Ci0gICAgR0x1aW50IGlkMSAgICAgID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwot
ICAgIGFsbG9jYXRvci0+cmVsZWFzZSgwKTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQxKTsK
LSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQxKTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoaWQx
ICsgMSk7Ci0gICAgR0x1aW50IGlkMiA9IGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICBHTHVp
bnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgIEVYUEVDVF9ORShpZDIsIGlkMyk7
Ci0gICAgRVhQRUNUX05FKGFsbG9jYXRvci0+a0ludmFsaWRIYW5kbGUsIGlkMik7Ci0gICAgRVhQ
RUNUX05FKGFsbG9jYXRvci0+a0ludmFsaWRIYW5kbGUsIGlkMyk7Ci19Ci0KLS8vIENoZWNrIGFs
bG9jYXRpbmcgYW5kIHJlbGVhc2luZyBtdWx0aXBsZSByYW5nZXMuCi1URVNUX0YoSGFuZGxlUmFu
Z2VBbGxvY2F0b3JUZXN0LCBhbGxvY2F0ZVJhbmdlKQotewotICAgIGNvbnN0IEdMdWludCBrTWF4
UG9zc2libGVPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpOwotCi0g
ICAgYXV0byAqYWxsb2NhdG9yID0gZ2V0QWxsb2NhdG9yKCk7Ci0KLSAgICBHTHVpbnQgaWQxID0g
YWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDEpOwotICAgIEVYUEVDVF9FUSgxdSwgaWQxKTsKLSAg
ICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDIpOwotICAgIEVYUEVDVF9F
USgydSwgaWQyKTsKLSAgICBHTHVpbnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDMp
OwotICAgIEVYUEVDVF9FUSg0dSwgaWQzKTsKLSAgICBHTHVpbnQgaWQ0ID0gYWxsb2NhdG9yLT5h
bGxvY2F0ZSgpOwotICAgIEVYUEVDVF9FUSg3dSwgaWQ0KTsKLSAgICBhbGxvY2F0b3ItPnJlbGVh
c2UoMyk7Ci0gICAgR0x1aW50IGlkNSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgxKTsKLSAg
ICBFWFBFQ1RfRVEoM3UsIGlkNSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKDUpOwotICAgIGFs
bG9jYXRvci0+cmVsZWFzZSgyKTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoNCk7Ci0gICAgR0x1
aW50IGlkNiA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgyKTsKLSAgICBFWFBFQ1RfRVEoNHUs
IGlkNik7Ci0gICAgR0x1aW50IGlkNyA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01h
eFBvc3NpYmxlT2Zmc2V0KTsKLSAgICBFWFBFQ1RfRVEoa01heFBvc3NpYmxlT2Zmc2V0LCBpZDcp
OwotICAgIEdMdWludCBpZDggPSBhbGxvY2F0b3ItPmFsbG9jYXRlQXRPckFib3ZlKGtNYXhQb3Nz
aWJsZU9mZnNldCk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBpZDgpOwotICAgIEdMdWludCBpZDkgPSBh
bGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoNTApOwotICAgIEVYUEVDVF9FUSg4dSwgaWQ5KTsKLSAg
ICBHTHVpbnQgaWQxMCA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSg1MCk7Ci0gICAgRVhQRUNU
X0VRKDU4dSwgaWQxMCk7Ci0gICAgLy8gUmVtb3ZlIGFsbCB0aGUgbG93LW51bWJlcmVkIGlkcy4K
LSAgICBhbGxvY2F0b3ItPnJlbGVhc2UoMSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKDE1KTsK
LSAgICBhbGxvY2F0b3ItPnJlbGVhc2VSYW5nZSgyLCAxMDcpOwotICAgIEdMdWludCBpZDExID0g
YWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDEwMCk7Ci0gICAgRVhQRUNUX0VRKDF1LCBpZDExKTsK
LSAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa01heFBvc3NpYmxlT2Zmc2V0KTsKLSAgICBHTHVpbnQg
aWQxMiA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZSgxMDApOwotICAgIEVYUEVDVF9FUSgxMDF1
LCBpZDEyKTsKLQotICAgIEdMdWludCBpZDEzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZUF0T3JBYm92
ZShrTWF4UG9zc2libGVPZmZzZXQgLSAydSk7Ci0gICAgRVhQRUNUX0VRKGtNYXhQb3NzaWJsZU9m
ZnNldCAtIDJ1LCBpZDEzKTsKLSAgICBHTHVpbnQgaWQxNCA9IGFsbG9jYXRvci0+YWxsb2NhdGVS
YW5nZSgzKTsKLSAgICBFWFBFQ1RfRVEoMjAxdSwgaWQxNCk7Ci19Ci0KLS8vIENoZWNrcyB0aGF0
IGhhdmluZyBhbGxvY2F0ZWQgYSBoaWdoIHJhbmdlIGRvZXNuJ3QgaW50ZXJmZXJlCi0vLyB3aXRo
IG5vcm1hbCBsb3cgcmFuZ2UgYWxsb2NhdGlvbi4KLVRFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRv
clRlc3QsIEFsbG9jYXRlUmFuZ2VFbmROb0VmZmVjdCkKLXsKLSAgICBjb25zdCBHTHVpbnQga01h
eFBvc3NpYmxlT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKTsKLQot
ICAgIGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigpOwotICAgIEdMdWludCBpZDEgICAg
ICA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoa01heFBvc3NpYmxlT2Zmc2V0IC0gMnUp
OwotICAgIEVYUEVDVF9FUShrTWF4UG9zc2libGVPZmZzZXQgLSAydSwgaWQxKTsKLSAgICBHTHVp
bnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDMpOwotICAgIEVYUEVDVF9FUSgxdSwg
aWQzKTsKLSAgICBHTHVpbnQgaWQyID0gYWxsb2NhdG9yLT5hbGxvY2F0ZVJhbmdlKDIpOwotICAg
IEVYUEVDVF9FUSg0dSwgaWQyKTsKLX0KLQotLy8gQ2hlY2tzIGFsbG9jYXRpbmcgYSByYW5nZSB0
aGF0IGNvbnN1bWVzIHRoZSB3aG9sZSB1aW50MzIgc3BhY2UuCi1URVNUX0YoSGFuZGxlUmFuZ2VB
bGxvY2F0b3JUZXN0LCBBbGxvY2F0ZU1heCkKLXsKLSAgICBjb25zdCB1aW50MzJfdCBrTWF4UG9z
c2libGVSYW5nZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLQotICAg
IGF1dG8gKmFsbG9jYXRvciA9IGdldEFsbG9jYXRvcigpOwotICAgIEdMdWludCBpZCAgICAgICA9
IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZShrTWF4UG9zc2libGVSYW5nZSk7Ci0gICAgRVhQRUNU
X0VRKDF1LCBpZCk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlUmFuZ2UoaWQsIGtNYXhQb3NzaWJs
ZVJhbmdlIC0gMXUpOwotICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uo
a01heFBvc3NpYmxlUmFuZ2UpOwotICAgIEVYUEVDVF9FUSgwdSwgaWQyKTsKLSAgICBhbGxvY2F0
b3ItPnJlbGVhc2VSYW5nZShpZCwga01heFBvc3NpYmxlUmFuZ2UpOwotICAgIEdMdWludCBpZDMg
PSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uoa01heFBvc3NpYmxlUmFuZ2UpOwotICAgIEVYUEVD
VF9FUSgxdSwgaWQzKTsKLX0KLQotLy8gQ2hlY2tzIGFsbG9jYXRpbmcgYSByYW5nZSB0aGF0IGNv
bnN1bWVzIHRoZSB3aG9sZSB1aW50MzIgc3BhY2UKLS8vIGNhdXNlcyBuZXh0IGFsbG9jYXRpb24g
dG8gZmFpbC4KLS8vIFN1YnNlcXVlbnRseSBjaGVja3MgdGhhdCBvbmNlIHRoZSBiaWcgcmFuZ2Ug
aXMgcmVkdWNlZCBuZXcgYWxsb2NhdGlvbnMKLS8vIGFyZSBwb3NzaWJsZS4KLVRFU1RfRihIYW5k
bGVSYW5nZUFsbG9jYXRvclRlc3QsIEFsbG9jYXRlRnVsbFJhbmdlKQotewotICAgIGNvbnN0IHVp
bnQzMl90IGtNYXhQb3NzaWJsZVJhbmdlID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpOwotICAgIGNvbnN0IEdMdWludCBrRnJlZWRJZCAgICAgICAgICAgID0gNTU1dTsKLSAg
ICBhdXRvICphbGxvY2F0b3IgICAgICAgICAgICAgICAgICA9IGdldEFsbG9jYXRvcigpOwotCi0g
ICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVSYW5nZShrTWF4UG9zc2libGVSYW5n
ZSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBpZDEpOwotICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3It
PmFsbG9jYXRlKCk7Ci0gICAgRVhQRUNUX0VRKGdsOjpIYW5kbGVSYW5nZUFsbG9jYXRvcjo6a0lu
dmFsaWRIYW5kbGUsIGlkMik7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGtGcmVlZElkKTsKLSAg
ICBHTHVpbnQgaWQzID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAgIEVYUEVDVF9FUShrRnJl
ZWRJZCwgaWQzKTsKLSAgICBHTHVpbnQgaWQ0ID0gYWxsb2NhdG9yLT5hbGxvY2F0ZSgpOwotICAg
IEVYUEVDVF9FUSgwdSwgaWQ0KTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVkSWQgKyAx
dSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGtGcmVlZElkICsgNHUpOwotICAgIGFsbG9jYXRv
ci0+cmVsZWFzZShrRnJlZWRJZCArIDN1KTsKLSAgICBhbGxvY2F0b3ItPnJlbGVhc2Uoa0ZyZWVk
SWQgKyA1dSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGtGcmVlZElkICsgMnUpOwotICAgIEdM
dWludCBpZDUgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2UoNSk7Ci0gICAgRVhQRUNUX0VRKGtG
cmVlZElkICsgMXUsIGlkNSk7Ci19Ci0KLS8vIENoZWNrcyB0aGF0IGFsbG9jYXRpbmcgYSByYW5n
ZSB0aGF0IGV4Y2VlZHMgdWludDMyCi0vLyBkb2VzIG5vdCB3cmFwIGluY29ycmVjdGx5IGFuZCBm
YWlscy4KLVRFU1RfRihIYW5kbGVSYW5nZUFsbG9jYXRvclRlc3QsIEFsbG9jYXRlUmFuZ2VOb1dy
YXBJblJhbmdlKQotewotICAgIGNvbnN0IHVpbnQzMl90IGtNYXhQb3NzaWJsZVJhbmdlID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOwotICAgIGNvbnN0IEdMdWludCBrQWxs
b2NJZCAgICAgICAgICAgID0gMTB1OwotICAgIGF1dG8gKmFsbG9jYXRvciAgICAgICAgICAgICAg
ICAgID0gZ2V0QWxsb2NhdG9yKCk7Ci0KLSAgICBHTHVpbnQgaWQxID0gYWxsb2NhdG9yLT5hbGxv
Y2F0ZUF0T3JBYm92ZShrQWxsb2NJZCk7Ci0gICAgRVhQRUNUX0VRKGtBbGxvY0lkLCBpZDEpOwot
ICAgIEdMdWludCBpZDIgPSBhbGxvY2F0b3ItPmFsbG9jYXRlUmFuZ2Uoa01heFBvc3NpYmxlUmFu
Z2UgLSA1dSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBpZDIpOwotICAgIEdMdWludCBpZDMgPSBhbGxv
Y2F0b3ItPmFsbG9jYXRlUmFuZ2Uoa01heFBvc3NpYmxlUmFuZ2UgLSBrQWxsb2NJZCk7Ci0gICAg
RVhQRUNUX0VRKGtBbGxvY0lkICsgMXUsIGlkMyk7Ci19Ci0KLS8vIENoZWNrIHNwZWNpYWwgY2Fz
ZXMgZm9yIDAgcmFuZ2UgYWxsb2NhdGlvbnMgYW5kIHplcm8gaGFuZGxlcy4KLVRFU1RfRihIYW5k
bGVSYW5nZUFsbG9jYXRvclRlc3QsIFplcm9JZENhc2VzKQotewotICAgIGF1dG8gKmFsbG9jYXRv
ciA9IGdldEFsbG9jYXRvcigpOwotICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNlZCgw
KSk7Ci0gICAgR0x1aW50IGlkMSA9IGFsbG9jYXRvci0+YWxsb2NhdGVBdE9yQWJvdmUoMCk7Ci0g
ICAgRVhQRUNUX05FKDB1LCBpZDEpOwotICAgIEVYUEVDVF9GQUxTRShhbGxvY2F0b3ItPmlzVXNl
ZCgwKSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKDApOwotICAgIEVYUEVDVF9GQUxTRShhbGxv
Y2F0b3ItPmlzVXNlZCgwKSk7Ci0gICAgRVhQRUNUX1RSVUUoYWxsb2NhdG9yLT5pc1VzZWQoaWQx
KSk7Ci0gICAgYWxsb2NhdG9yLT5yZWxlYXNlKGlkMSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGFsbG9j
YXRvci0+aXNVc2VkKGlkMSkpOwotfQotCi19ICAvLyBuYW1lc3BhY2UKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvSW5mb0xvZy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0lu
Zm9Mb2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZGFjZGNlYmQxYjAxNjg2ZjQzYWM0Y2Q1ZjFiNmU3NGU4MDYy
ZTUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0luZm9Mb2cuaApAQCAtMCwwICsxLDkwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gSW5mb0xvZy5oOiBE
ZWZpbmVzIHRoZSBnbDo6SW5mb0xvZyBjbGFzcyB0byBoYW5kbGUgdGhlIGxvZ3MgZ2VuZXJhdGVk
IHdoZW4KKy8vIGNvbXBpbGluZy9saW5raW5nIHNoYWRlcnMgc28gdXNlZnVsIGVycm9yIG1lc3Nh
Z2VzIGNhbiBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgorCisjaWZuZGVmIExJQkFOR0xFX0lO
Rk9MT0dfSF8KKyNkZWZpbmUgTElCQU5HTEVfSU5GT0xPR19IXworCituYW1lc3BhY2UgZ2wKK3sK
KworY2xhc3MgSW5mb0xvZyA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAg
SW5mb0xvZygpOworICAgIH5JbmZvTG9nKCk7CisKKyAgICBzaXplX3QgZ2V0TGVuZ3RoKCkgY29u
c3Q7CisgICAgdm9pZCBnZXRMb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNo
YXIgKmluZm9Mb2cpIGNvbnN0OworCisgICAgdm9pZCBhcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hh
ciAqbWVzc2FnZSk7CisgICAgdm9pZCByZXNldCgpOworCisgICAgLy8gVGhpcyBoZWxwZXIgY2xh
c3MgZW5zdXJlcyB3ZSBhcHBlbmQgYSBuZXdsaW5lIGFmdGVyIHdyaXRpbmcgYSBsaW5lLgorICAg
IGNsYXNzIFN0cmVhbUhlbHBlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQorICAgIHsKKyAgICAgIHB1
YmxpYzoKKyAgICAgICAgU3RyZWFtSGVscGVyKFN0cmVhbUhlbHBlciAmJnJocykgOiBtU3RyZWFt
KHJocy5tU3RyZWFtKSB7IHJocy5tU3RyZWFtID0gbnVsbHB0cjsgfQorCisgICAgICAgIFN0cmVh
bUhlbHBlciAmb3BlcmF0b3I9KFN0cmVhbUhlbHBlciAmJnJocykKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RkOjpzd2FwKG1TdHJlYW0sIHJocy5tU3RyZWFtKTsKKyAgICAgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIH5TdHJlYW1IZWxwZXIoKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBXcml0ZSBuZXdsaW5lIHdoZW4gZGVzdHJveWVkIG9uIHRoZSBzdGFj
aworICAgICAgICAgICAgaWYgKG1TdHJlYW0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgKCptU3RyZWFtKSA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgU3RyZWFtSGVscGVyICZvcGVy
YXRvcjw8KGNvbnN0IFQgJnZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICAoKm1TdHJlYW0p
IDw8IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBJbmZvTG9nOworCisgICAgICAgIFN0cmVh
bUhlbHBlcihzdGQ6OnN0cmluZ3N0cmVhbSAqc3RyZWFtKSA6IG1TdHJlYW0oc3RyZWFtKSB7IEFT
U0VSVChzdHJlYW0pOyB9CisKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gKm1TdHJlYW07Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIFN0cmVhbUhlbHBlciBvcGVy
YXRvcjw8KGNvbnN0IFQgJnZhbHVlKQorICAgIHsKKyAgICAgICAgZW5zdXJlSW5pdGlhbGl6ZWQo
KTsKKyAgICAgICAgU3RyZWFtSGVscGVyIGhlbHBlcihtTGF6eVN0cmVhbS5nZXQoKSk7CisgICAg
ICAgIGhlbHBlciA8PCB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGhlbHBlcjsKKyAgICB9CisKKyAg
ICBzdGQ6OnN0cmluZyBzdHIoKSBjb25zdCB7IHJldHVybiBtTGF6eVN0cmVhbSA/IG1MYXp5U3Ry
ZWFtLT5zdHIoKSA6ICIiOyB9CisKKyAgICBib29sIGVtcHR5KCkgY29uc3Q7CisKKyAgcHJpdmF0
ZToKKyAgICB2b2lkIGVuc3VyZUluaXRpYWxpemVkKCkKKyAgICB7CisgICAgICAgIGlmICghbUxh
enlTdHJlYW0pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1MYXp5U3RyZWFtLnJlc2V0KG5ldyBz
dGQ6OnN0cmluZ3N0cmVhbSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxzdGQ6OnN0cmluZ3N0cmVhbT4gbUxhenlTdHJlYW07Cit9OworCit9ICAvLyBuYW1lc3Bh
Y2UgZ2wKKworI2VuZGlmICAvLyBMSUJBTkdMRV9JTkZPTE9HX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9NZW1vcnlPYmplY3QuY3BwCmluZGV4IDVl
MTVmMTI4NzBlYzkzYTEzMGFjYjQxZTA1NmM3YWFmN2IyNjY1YWEuLmM4NTRmYWY4ZTJlMzFkZTYx
ZmVjYjBlYTM4NjVkNzQwN2QwMWNiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9NZW1vcnlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9NZW1vcnlPYmplY3QuY3BwCkBAIC0xNSw3ICsxNSwxMCBAQCBu
YW1lc3BhY2UgZ2wKIHsKIAogTWVtb3J5T2JqZWN0OjpNZW1vcnlPYmplY3Qocng6OkdMSW1wbEZh
Y3RvcnkgKmZhY3RvcnksIE1lbW9yeU9iamVjdElEIGlkKQotICAgIDogUmVmQ291bnRPYmplY3Qo
ZmFjdG9yeS0+Z2VuZXJhdGVTZXJpYWwoKSwgaWQpLCBtSW1wbGVtZW50YXRpb24oZmFjdG9yeS0+
Y3JlYXRlTWVtb3J5T2JqZWN0KCkpCisgICAgOiBSZWZDb3VudE9iamVjdChmYWN0b3J5LT5nZW5l
cmF0ZVNlcmlhbCgpLCBpZCksCisgICAgICBtSW1wbGVtZW50YXRpb24oZmFjdG9yeS0+Y3JlYXRl
TWVtb3J5T2JqZWN0KCkpLAorICAgICAgbUltbXV0YWJsZShmYWxzZSksCisgICAgICBtRGVkaWNh
dGVkTWVtb3J5KGZhbHNlKQoge30KIAogTWVtb3J5T2JqZWN0Ojp+TWVtb3J5T2JqZWN0KCkge30K
QEAgLTI1LDEyICsyOCwzMSBAQCB2b2lkIE1lbW9yeU9iamVjdDo6b25EZXN0cm95KGNvbnN0IENv
bnRleHQgKmNvbnRleHQpCiAgICAgbUltcGxlbWVudGF0aW9uLT5vbkRlc3Ryb3koY29udGV4dCk7
CiB9CiAKK2FuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0OjpzZXREZWRpY2F0ZWRNZW1vcnkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgYm9vbCBkZWRpY2F0ZWRNZW1vcnkpCit7CisgICAgQU5HTEVf
VFJZKG1JbXBsZW1lbnRhdGlvbi0+c2V0RGVkaWNhdGVkTWVtb3J5KGNvbnRleHQsIGRlZGljYXRl
ZE1lbW9yeSkpOworICAgIG1EZWRpY2F0ZWRNZW1vcnkgPSBkZWRpY2F0ZWRNZW1vcnk7CisgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCiBhbmdsZTo6UmVzdWx0IE1lbW9y
eU9iamVjdDo6aW1wb3J0RmQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBmZCkKIHsKLSAgICByZXR1cm4gbUltcGxlbWVudGF0aW9u
LT5pbXBvcnRGZChjb250ZXh0LCBzaXplLCBoYW5kbGVUeXBlLCBmZCk7CisgICAgQU5HTEVfVFJZ
KG1JbXBsZW1lbnRhdGlvbi0+aW1wb3J0RmQoY29udGV4dCwgc2l6ZSwgaGFuZGxlVHlwZSwgZmQp
KTsKKyAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7Cit9CisKK2FuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0OjppbXBvcnRaaXJjb25IYW5k
bGUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIEFO
R0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmltcG9ydFppcmNvbkhhbmRsZShjb250ZXh0LCBzaXpl
LCBoYW5kbGVUeXBlLCBoYW5kbGUpKTsKKyAgICBtSW1tdXRhYmxlID0gdHJ1ZTsKKyAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL01lbW9yeU9iamVj
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL01lbW9yeU9iamVjdC5o
CmluZGV4IDdjOWE4YTUyYjVkZjNjMDZhZTA2ODQ5ODgzMDE3NWJiNWFhN2QyMzQuLjNlMzYyNjJj
NTRmZDE3YWU3Y2NkZDEzNmE5MTY0MDhjZTQwNTg1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9NZW1vcnlPYmplY3QuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmgKQEAgLTM0LDEwICszNCwy
MiBAQCBjbGFzcyBNZW1vcnlPYmplY3QgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3Q8TWVt
b3J5T2JqZWN0SUQ+CiAKICAgICByeDo6TWVtb3J5T2JqZWN0SW1wbCAqZ2V0SW1wbGVtZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb24uZ2V0KCk7IH0KIAorICAgIGJvb2wg
aXNJbW11dGFibGUoKSBjb25zdCB7IHJldHVybiBtSW1tdXRhYmxlOyB9CisKKyAgICBhbmdsZTo6
UmVzdWx0IHNldERlZGljYXRlZE1lbW9yeShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBib29sIGRl
ZGljYXRlZE1lbW9yeSk7CisgICAgYm9vbCBpc0RlZGljYXRlZE1lbW9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1EZWRpY2F0ZWRNZW1vcnk7IH0KKwogICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0RmQoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50NjQgc2l6ZSwgSGFuZGxlVHlwZSBoYW5kbGVUeXBlLCBHTGlu
dCBmZCk7CisgICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRaaXJjb25IYW5kbGUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxl
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxl
KTsKIAogICBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxyeDo6TWVtb3J5T2JqZWN0SW1w
bD4gbUltcGxlbWVudGF0aW9uOworCisgICAgYm9vbCBtSW1tdXRhYmxlOworICAgIGJvb2wgbURl
ZGljYXRlZE1lbW9yeTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL01lbW9yeVByb2dyYW1DYWNoZS5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hl
LmNwcAppbmRleCBhYzFhYzUzY2YzZmU0ZWE4Zjk3NGFiMjg3NzM4OGE2Nzg1NGQxNDI2Li4yOTli
MmUzODY0NTI4ZGVmMDVjOWFkYzdkMzVhNGM3ZGFlZDIzYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hl
LmNwcApAQCAtMTE2LDcgKzExNiw2IEBAIHZvaWQgTWVtb3J5UHJvZ3JhbUNhY2hlOjpDb21wdXRl
SGFzaChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogCiAgICAgLy8gSGFzaCBwcmUtbGluayBwcm9n
cmFtIHByb3BlcnRpZXMuCiAgICAgaGFzaFN0cmVhbSA8PCBwcm9ncmFtLT5nZXRBdHRyaWJ1dGVC
aW5kaW5ncygpIDw8IHByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzKCkKLSAgICAg
ICAgICAgICAgIDw8IHByb2dyYW0tPmdldEZyYWdtZW50SW5wdXRCaW5kaW5ncygpCiAgICAgICAg
ICAgICAgICA8PCBwcm9ncmFtLT5nZXRTdGF0ZSgpLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z05hbWVzKCkKICAgICAgICAgICAgICAgIDw8IHByb2dyYW0tPmdldFN0YXRlKCkuZ2V0VHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkKICAgICAgICAgICAgICAgIDw8IHByb2dyYW0tPmdldFN0
YXRlKCkuZ2V0T3V0cHV0TG9jYXRpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvT1dORVJTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MWJjNzczY2Y3ZWU0Njg2NzUwMTJiNjdjZjdl
NTJmYTYzN2U3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvT1dORVJTCkBAIC0wLDAgKzEsMiBAQAorcGVyLWZpbGUgKmNhcHR1cmUqPWNu
b3J0aHJvcEBnb29nbGUuY29tCitwZXItZmlsZSAqQ2FwdHVyZSo9Y25vcnRocm9wQGdvb2dsZS5j
b20KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PYnNl
cnZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL09ic2VydmVyLmgK
aW5kZXggYjA2ZTcwNWI5MDAzNWQzODI1MmVkN2I0YzM0NTMyNDM3ZWFkODQwZS4uNTFjODIwM2E5
N2Q0YzBlODYxODhlYzBjY2JmYjBhMTk1ODI5ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL09ic2VydmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL09ic2VydmVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcg
U3ViamVjdEluZGV4ID0gc2l6ZV90OwogZW51bSBjbGFzcyBTdWJqZWN0TWVzc2FnZQogewogICAg
IC8vIFVzZWQgYnkgZ2w6OlZlcnRleEFycmF5IHRvIG5vdGlmeSBnbDo6Q29udGV4dCBvZiBhIGds
OjpCdWZmZXIgYmluZGluZyBjb3VudCBjaGFuZ2UuIFRyaWdnZXJzCi0gICAgLy8gYSB2YWxpZGF0
aW9uIGNhY2hlIHVwZGF0ZS4KKyAgICAvLyBhIHZhbGlkYXRpb24gY2FjaGUgdXBkYXRlLiBBbHNv
IHVzZWQgYnkgZ2w6OlRleHR1cmUgdG8gbm90aWZ5IGdsOjpGcmFtZWJ1ZmZlciBvZiBsb29wcy4K
ICAgICBCaW5kaW5nQ2hhbmdlZCwKIAogICAgIC8vIE9ubHkgdGhlIGNvbnRlbnRzIChwaXhlbHMs
IGJ5dGVzLCBldGMpIGNoYW5nZWQgaW4gdGhpcyBTdWJqZWN0LiBEaXN0aW5jdCBmcm9tIHRoZSBv
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9P
dmVybGF5LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5
LmNwcAppbmRleCAyZGU2NWQyODIxZWIzYjg4ZjQ4ODViZjM3NGQzODQ5OWZhNjIzOTgzLi41MmZj
NDcyYWExYWU4NTcxOWIwMjhmMTNkMjc2ZGU4ZDlkMzJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXkuY3BwCkBAIC05LDYgKzksNyBAQAog
CiAjaW5jbHVkZSAibGliQU5HTEUvT3ZlcmxheS5oIgogCisjaW5jbHVkZSAiY29tbW9uL3N0cmlu
Z191dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9zeXN0ZW1fdXRpbHMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvT3ZlcmxheV9mb250X2F1dG9n
ZW4uaCIKQEAgLTI1LDcgKzI2LDcgQEAgY29uc3RleHByIHN0ZDo6cGFpcjxjb25zdCBjaGFyICos
IFdpZGdldElkPiBrV2lkZ2V0TmFtZXNbXSA9IHsKICAgICB7IkZQUyIsIFdpZGdldElkOjpGUFN9
LAogICAgIHsiVnVsa2FuTGFzdFZhbGlkYXRpb25NZXNzYWdlIiwgV2lkZ2V0SWQ6OlZ1bGthbkxh
c3RWYWxpZGF0aW9uTWVzc2FnZX0sCiAgICAgeyJWdWxrYW5WYWxpZGF0aW9uTWVzc2FnZUNvdW50
IiwgV2lkZ2V0SWQ6OlZ1bGthblZhbGlkYXRpb25NZXNzYWdlQ291bnR9LAotICAgIHsiVnVsa2Fu
Q29tbWFuZEdyYXBoU2l6ZSIsIFdpZGdldElkOjpWdWxrYW5Db21tYW5kR3JhcGhTaXplfSwKKyAg
ICB7IlZ1bGthblJlbmRlclBhc3NDb3VudCIsIFdpZGdldElkOjpWdWxrYW5SZW5kZXJQYXNzQ291
bnR9LAogICAgIHsiVnVsa2FuU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBvb2xXYXN0ZSIsIFdpZGdl
dElkOjpWdWxrYW5TZWNvbmRhcnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlfSwKIH07CiB9ICAvLyBu
YW1lc3BhY2UKQEAgLTYwLDE4ICs2MSwxMyBAQCB2b2lkIE92ZXJsYXk6OmRlc3Ryb3koY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQpCiAKIHZvaWQgT3ZlcmxheTo6ZW5hYmxlT3ZlcmxheVdpZGdl
dHNGcm9tRW52aXJvbm1lbnQoKQogewotICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBhbmdsZU92ZXJs
YXlXaWRnZXRzKGFuZ2xlOjpHZXRFbnZpcm9ubWVudFZhcigiQU5HTEVfT1ZFUkxBWSIpKTsKLQot
ICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBlbmFibGVkV2lkZ2V0czsKLSAgICBzdGQ6OnN0cmlu
ZyB3aWRnZXQ7Ci0gICAgd2hpbGUgKGdldGxpbmUoYW5nbGVPdmVybGF5V2lkZ2V0cywgd2lkZ2V0
LCAnOicpKQotICAgIHsKLSAgICAgICAgZW5hYmxlZFdpZGdldHMuaW5zZXJ0KHdpZGdldCk7Ci0g
ICAgfQorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBlbmFibGVkV2lkZ2V0cyA9CisgICAg
ICAgIGFuZ2xlOjpHZXRTdHJpbmdzRnJvbUVudmlyb25tZW50VmFyKCJBTkdMRV9PVkVSTEFZIiwg
IjoiKTsKIAogICAgIGZvciAoY29uc3Qgc3RkOjpwYWlyPGNvbnN0IGNoYXIgKiwgV2lkZ2V0SWQ+
ICZ3aWRnZXROYW1lIDoga1dpZGdldE5hbWVzKQogICAgIHsKLSAgICAgICAgaWYgKGVuYWJsZWRX
aWRnZXRzLmNvdW50KHdpZGdldE5hbWUuZmlyc3QpID4gMCkKKyAgICAgICAgaWYgKHN0ZDo6Zmlu
ZChlbmFibGVkV2lkZ2V0cy5iZWdpbigpLCBlbmFibGVkV2lkZ2V0cy5lbmQoKSwgd2lkZ2V0TmFt
ZS5maXJzdCkgIT0KKyAgICAgICAgICAgIGVuYWJsZWRXaWRnZXRzLmVuZCgpKQogICAgICAgICB7
CiAgICAgICAgICAgICBtU3RhdGUubU92ZXJsYXlXaWRnZXRzW3dpZGdldE5hbWUuc2Vjb25kXS0+
ZW5hYmxlZCA9IHRydWU7CiAgICAgICAgICAgICArK21TdGF0ZS5tRW5hYmxlZFdpZGdldENvdW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJs
YXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5LmgKaW5k
ZXggNzY2MmNmNGIyOTkyMzk4MzEyMmYxZmFmYjZlYzIwOGM0MjE1NWYwOC4uMTVhZjZhMjY5MzE4
MTU2ODMzNDc1OGQ4MzgzM2QyNzA0NmZjY2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvT3ZlcmxheS5oCkBAIC0xMjcsOSArMTI3LDE5IEBAIGNsYXNzIER1
bW15T3ZlcmxheQogfTsKIAogI2lmIEFOR0xFX0VOQUJMRV9PVkVSTEFZCi11c2luZyBPdmVybGF5
VHlwZSA9IE92ZXJsYXk7Cit1c2luZyBPdmVybGF5VHlwZSAgICAgICAgICAgID0gT3ZlcmxheTsK
K3VzaW5nIENvdW50V2lkZ2V0ICAgICAgICAgICAgPSBvdmVybGF5OjpDb3VudDsKK3VzaW5nIFBl
clNlY29uZFdpZGdldCAgICAgICAgPSBvdmVybGF5OjpQZXJTZWNvbmQ7Cit1c2luZyBSdW5uaW5n
R3JhcGhXaWRnZXQgICAgID0gb3ZlcmxheTo6UnVubmluZ0dyYXBoOwordXNpbmcgUnVubmluZ0hp
c3RvZ3JhbVdpZGdldCA9IG92ZXJsYXk6OlJ1bm5pbmdIaXN0b2dyYW07Cit1c2luZyBUZXh0V2lk
Z2V0ICAgICAgICAgICAgID0gb3ZlcmxheTo6VGV4dDsKICNlbHNlICAgLy8gIUFOR0xFX0VOQUJM
RV9PVkVSTEFZCi11c2luZyBPdmVybGF5VHlwZSA9IER1bW15T3ZlcmxheTsKK3VzaW5nIE92ZXJs
YXlUeXBlICAgICAgICAgICAgPSBEdW1teU92ZXJsYXk7Cit1c2luZyBDb3VudFdpZGdldCAgICAg
ICAgICAgID0gY29uc3Qgb3ZlcmxheTo6RHVtbXk7Cit1c2luZyBQZXJTZWNvbmRXaWRnZXQgICAg
ICAgID0gY29uc3Qgb3ZlcmxheTo6RHVtbXk7Cit1c2luZyBSdW5uaW5nR3JhcGhXaWRnZXQgICAg
ID0gY29uc3Qgb3ZlcmxheTo6RHVtbXk7Cit1c2luZyBSdW5uaW5nSGlzdG9ncmFtV2lkZ2V0ID0g
Y29uc3Qgb3ZlcmxheTo6RHVtbXk7Cit1c2luZyBUZXh0V2lkZ2V0ICAgICAgICAgICAgID0gY29u
c3Qgb3ZlcmxheTo6RHVtbXk7CiAjZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9PVkVSTEFZCiAKIH0g
IC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL092ZXJsYXlXaWRnZXRzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9PdmVybGF5V2lkZ2V0cy5jcHAKaW5kZXggNTBjZmNjMWJlMTYyY2ZiNWFiNzgw
ZWM0MTA1YmQ1ODk3MzNiMmYwZS4uZTRjYTVhMTFmZTQ4MWM5NzEzYmFmNzkxN2Q2NmFkZWY2YWE5
NzE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092
ZXJsYXlXaWRnZXRzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvT3ZlcmxheVdpZGdldHMuY3BwCkBAIC0yMDUsNiArMjA1LDExIEBAIGNsYXNzIEFwcGVuZFdp
ZGdldERhdGFIZWxwZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHRXaWRnZXREYXRhICp0ZXh0V2lkZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR3JhcGhXaWRnZXREYXRhICpncmFwaFdpZGdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJsYXlXaWRnZXRDb3Vu
dHMgKndpZGdldENvdW50cyk7CisgICAgc3RhdGljIHZvaWQgQXBwZW5kVnVsa2FuUmVuZGVyUGFz
c0NvdW50KGNvbnN0IG92ZXJsYXk6OldpZGdldCAqd2lkZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmaW1hZ2VFeHRlbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRXaWRnZXRE
YXRhICp0ZXh0V2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHcmFwaFdpZGdldERhdGEgKmdyYXBoV2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPdmVybGF5V2lkZ2V0Q291bnRzICp3aWRnZXRDb3VudHMp
OwogICAgIHN0YXRpYyB2b2lkIEFwcGVuZFZ1bGthblNlY29uZGFyeUNvbW1hbmRCdWZmZXJQb29s
V2FzdGUoY29uc3Qgb3ZlcmxheTo6V2lkZ2V0ICp3aWRnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmaW1hZ2VFeHRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0V2lkZ2V0RGF0YSAqdGV4dFdpZGdldCwKQEAgLTMzNSw2
ICszNDAsMzMgQEAgdm9pZCBBcHBlbmRXaWRnZXREYXRhSGVscGVyOjpBcHBlbmRWdWxrYW5Db21t
YW5kR3JhcGhTaXplKGNvbnN0IG92ZXJsYXk6OldpZGdldAogICAgIH0KIH0KIAordm9pZCBBcHBl
bmRXaWRnZXREYXRhSGVscGVyOjpBcHBlbmRWdWxrYW5SZW5kZXJQYXNzQ291bnQoY29uc3Qgb3Zl
cmxheTo6V2lkZ2V0ICp3aWRnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmaW1hZ2VFeHRlbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0V2lkZ2V0RGF0YSAqdGV4dFdpZGdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoV2lkZ2V0RGF0YSAqZ3JhcGhXaWRnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBPdmVybGF5V2lkZ2V0Q291bnRzICp3aWRnZXRDb3VudHMpCit7CisgICAgY29uc3Qgb3Zlcmxh
eTo6UnVubmluZ0dyYXBoICpyZW5kZXJQYXNzQ291bnQgPQorICAgICAgICBzdGF0aWNfY2FzdDxj
b25zdCBvdmVybGF5OjpSdW5uaW5nR3JhcGggKj4od2lkZ2V0KTsKKworICAgIGNvbnN0IHNpemVf
dCBtYXhWYWx1ZSAgICAgPSAqc3RkOjptYXhfZWxlbWVudChyZW5kZXJQYXNzQ291bnQtPnJ1bm5p
bmdWYWx1ZXMuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZW5kZXJQYXNzQ291bnQtPnJ1bm5pbmdWYWx1ZXMuZW5kKCkpOworICAgIGNvbnN0
IGludDMyX3QgZ3JhcGhIZWlnaHQgPSBzdGQ6OmFicyh3aWRnZXQtPmNvb3Jkc1szXSAtIHdpZGdl
dC0+Y29vcmRzWzFdKTsKKyAgICBjb25zdCBmbG9hdCBncmFwaFNjYWxlICAgID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGdyYXBoSGVpZ2h0KSAvIG1heFZhbHVlOworCisgICAgQXBwZW5kR3JhcGhDb21t
b24od2lkZ2V0LCBpbWFnZUV4dGVudCwgcmVuZGVyUGFzc0NvdW50LT5ydW5uaW5nVmFsdWVzLAor
ICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3NDb3VudC0+bGFzdFZhbHVlSW5kZXggKyAx
LCBncmFwaFNjYWxlLCBncmFwaFdpZGdldCwgd2lkZ2V0Q291bnRzKTsKKworICAgIGlmICgoKndp
ZGdldENvdW50cylbV2lkZ2V0SW50ZXJuYWxUeXBlOjpUZXh0XSA8CisgICAgICAgIGtXaWRnZXRJ
bnRlcm5hbFR5cGVNYXhXaWRnZXRzW1dpZGdldEludGVybmFsVHlwZTo6VGV4dF0pCisgICAgewor
ICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gdGV4dDsKKyAgICAgICAgdGV4dCA8PCAiUmVuZGVy
UGFzcyBDb3VudCAoTWF4OiAiIDw8IG1heFZhbHVlIDw8ICIpIjsKKyAgICAgICAgQXBwZW5kVGV4
dENvbW1vbigmcmVuZGVyUGFzc0NvdW50LT5kZXNjcmlwdGlvbiwgaW1hZ2VFeHRlbnQsIHRleHQu
c3RyKCksIHRleHRXaWRnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0Q291bnRz
KTsKKyAgICB9Cit9CisKIHZvaWQgQXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6QXBwZW5kVnVsa2Fu
U2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBvb2xXYXN0ZSgKICAgICBjb25zdCBvdmVybGF5OjpXaWRn
ZXQgKndpZGdldCwKICAgICBjb25zdCBnbDo6RXh0ZW50cyAmaW1hZ2VFeHRlbnQsCkBAIC0zOTEs
OCArNDIzLDggQEAgY29uc3RleHByIGFuZ2xlOjpQYWNrZWRFbnVtTWFwPFdpZGdldElkLCBBcHBl
bmRXaWRnZXREYXRhRnVuYz4ga1dpZGdldElkVG9BcHBlbmQKICAgICAgb3ZlcmxheV9pbXBsOjpB
cHBlbmRXaWRnZXREYXRhSGVscGVyOjpBcHBlbmRWdWxrYW5MYXN0VmFsaWRhdGlvbk1lc3NhZ2V9
LAogICAgIHtXaWRnZXRJZDo6VnVsa2FuVmFsaWRhdGlvbk1lc3NhZ2VDb3VudCwKICAgICAgb3Zl
cmxheV9pbXBsOjpBcHBlbmRXaWRnZXREYXRhSGVscGVyOjpBcHBlbmRWdWxrYW5WYWxpZGF0aW9u
TWVzc2FnZUNvdW50fSwKLSAgICB7V2lkZ2V0SWQ6OlZ1bGthbkNvbW1hbmRHcmFwaFNpemUsCi0g
ICAgIG92ZXJsYXlfaW1wbDo6QXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6QXBwZW5kVnVsa2FuQ29t
bWFuZEdyYXBoU2l6ZX0sCisgICAge1dpZGdldElkOjpWdWxrYW5SZW5kZXJQYXNzQ291bnQsCisg
ICAgIG92ZXJsYXlfaW1wbDo6QXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6QXBwZW5kVnVsa2FuUmVu
ZGVyUGFzc0NvdW50fSwKICAgICB7V2lkZ2V0SWQ6OlZ1bGthblNlY29uZGFyeUNvbW1hbmRCdWZm
ZXJQb29sV2FzdGUsCiAgICAgIG92ZXJsYXlfaW1wbDo6QXBwZW5kV2lkZ2V0RGF0YUhlbHBlcjo6
QXBwZW5kVnVsa2FuU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlclBvb2xXYXN0ZX0sCiB9OwpAQCAtNDk1
LDYgKzUyNyw3IEBAIHZvaWQgT3ZlcmxheVN0YXRlOjpmaWxsV2lkZ2V0RGF0YShjb25zdCBnbDo6
RXh0ZW50cyAmaW1hZ2VFeHRlbnRzLAogICAgICAgICB9CiAKICAgICAgICAgQXBwZW5kV2lkZ2V0
RGF0YUZ1bmMgYXBwZW5kRnVuYyA9IGtXaWRnZXRJZFRvQXBwZW5kRGF0YUZ1bmNNYXBbaWRdOwor
ICAgICAgICBBU1NFUlQoYXBwZW5kRnVuYyk7CiAgICAgICAgIGFwcGVuZEZ1bmMod2lkZ2V0Lmdl
dCgpLCBpbWFnZUV4dGVudHMsCiAgICAgICAgICAgICAgICAgICAgJnRleHRXaWRnZXRzLT53aWRn
ZXRzW3dpZGdldENvdW50c1tXaWRnZXRJbnRlcm5hbFR5cGU6OlRleHRdXSwKICAgICAgICAgICAg
ICAgICAgICAmZ3JhcGhXaWRnZXRzLT53aWRnZXRzW3dpZGdldENvdW50c1tXaWRnZXRJbnRlcm5h
bFR5cGU6OkdyYXBoXV0sICZ3aWRnZXRDb3VudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXlXaWRnZXRzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvT3ZlcmxheVdpZGdldHMuaAppbmRleCAwODVmMmY0MTc4
NmQ2Mjk2NTc2NjBlNGJiNmVjYTllZmVkZWYyMzNkLi43MjIyYTMzZjk1MWNlMTU2M2RiYjY3MWQw
NjE4ODQxNTQ3YjVhNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvT3ZlcmxheVdpZGdldHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvT3ZlcmxheVdpZGdldHMuaApAQCAtNTcsOCArNTcsOCBAQCBlbnVtIGNsYXNz
IFdpZGdldElkCiAgICAgVnVsa2FuTGFzdFZhbGlkYXRpb25NZXNzYWdlLAogICAgIC8vIE51bWJl
ciBvZiB2YWxpZGF0aW9uIGVycm9ycyBhbmQgd2FybmluZ3MgKENvdW50KS4KICAgICBWdWxrYW5W
YWxpZGF0aW9uTWVzc2FnZUNvdW50LAotICAgIC8vIE51bWJlciBvZiBub2RlcyBpbiBjb21tYW5k
IGdyYXBoIChSdW5uaW5nR3JhcGgpLgotICAgIFZ1bGthbkNvbW1hbmRHcmFwaFNpemUsCisgICAg
Ly8gTnVtYmVyIG9mIFJlbmRlclBhc3NlcyBpbiBhIGZyYW1lIChSdW5uaW5nR3JhcGgpLgorICAg
IFZ1bGthblJlbmRlclBhc3NDb3VudCwKICAgICAvLyBTZWNvbmRhcnkgQ29tbWFuZCBCdWZmZXIg
cG9vbCBtZW1vcnkgd2FzdGUgKFJ1bm5pbmdIaXN0b2dyYW0pLgogICAgIFZ1bGthblNlY29uZGFy
eUNvbW1hbmRCdWZmZXJQb29sV2FzdGUsCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9PdmVybGF5X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL092ZXJsYXlfYXV0b2dlbi5jcHAKaW5kZXggZjIwMmQwZTYz
NzQ0Nzc1ZWI5YTU4Nzc1NDMyMThhNTZkN2U4MTE4NS4uZjE3ZmRiZWI3NTJjMmM1MjdlMDhlNWEz
Y2Y3YWVlMDRmMWE0NjVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL092ZXJsYXlfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL092ZXJsYXlfYXV0b2dlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvLyBH
RU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVkIGJ5IGdlbl9vdmVybGF5
X3dpZGdldHMucHkgdXNpbmcgZGF0YSBmcm9tIG92ZXJsYXlfd2lkZ2V0cy5qc29uLgogLy8KLS8v
IENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCkBAIC0xMjMsMTMgKzEyMywxMyBAQCB2b2lkIE92ZXJsYXk6OmluaXRPdmVy
bGF5V2lkZ2V0cygpCiAgICAgICAgICAgICB3aWRnZXQtPmNvbG9yWzJdICA9IDAuMDsKICAgICAg
ICAgICAgIHdpZGdldC0+Y29sb3JbM10gID0gMC43ODQzMTM3MjU0OTsKICAgICAgICAgfQotICAg
ICAgICBtU3RhdGUubU92ZXJsYXlXaWRnZXRzW1dpZGdldElkOjpWdWxrYW5Db21tYW5kR3JhcGhT
aXplXS5yZXNldCh3aWRnZXQpOworICAgICAgICBtU3RhdGUubU92ZXJsYXlXaWRnZXRzW1dpZGdl
dElkOjpWdWxrYW5SZW5kZXJQYXNzQ291bnRdLnJlc2V0KHdpZGdldCk7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnN0IGludDMyX3QgZm9udFNpemUgPSBHZXRGb250U2l6ZShrRm9udExheWVy
U21hbGwsIGtMYXJnZUZvbnQpOwogICAgICAgICAgICAgY29uc3QgaW50MzJfdCBvZmZzZXRYID0K
LSAgICAgICAgICAgICAgICBtU3RhdGUubU92ZXJsYXlXaWRnZXRzW1dpZGdldElkOjpWdWxrYW5D
b21tYW5kR3JhcGhTaXplXS0+Y29vcmRzWzBdOworICAgICAgICAgICAgICAgIG1TdGF0ZS5tT3Zl
cmxheVdpZGdldHNbV2lkZ2V0SWQ6OlZ1bGthblJlbmRlclBhc3NDb3VudF0tPmNvb3Jkc1swXTsK
ICAgICAgICAgICAgIGNvbnN0IGludDMyX3Qgb2Zmc2V0WSA9Ci0gICAgICAgICAgICAgICAgbVN0
YXRlLm1PdmVybGF5V2lkZ2V0c1tXaWRnZXRJZDo6VnVsa2FuQ29tbWFuZEdyYXBoU2l6ZV0tPmNv
b3Jkc1sxXTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubU92ZXJsYXlXaWRnZXRzW1dpZGdldElk
OjpWdWxrYW5SZW5kZXJQYXNzQ291bnRdLT5jb29yZHNbMV07CiAgICAgICAgICAgICBjb25zdCBp
bnQzMl90IHdpZHRoICA9IDQwICoga0ZvbnRHbHlwaFdpZHRoc1tmb250U2l6ZV07CiAgICAgICAg
ICAgICBjb25zdCBpbnQzMl90IGhlaWdodCA9IGtGb250R2x5cGhIZWlnaHRzW2ZvbnRTaXplXTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGgu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTRhZmM2MjMwNGQzNGJjZjRlZjI5ZjcxM2Q5NDYz
ODI2YTA5YjdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QYXRoLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDc3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAwMiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBhdGguaDogRGVmaW5lcyB0aGUg
Z2w6OlBhdGggY2xhc3MsIHJlcHJlc2VudGluZyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotLy8g
cGF0aCBvYmplY3QuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9QYXRoLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgot
I2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLQotUGF0aDo6
UGF0aChyeDo6UGF0aEltcGwgKmltcGwpCi0gICAgOiBtUGF0aChpbXBsKSwKLSAgICAgIG1IYXNE
YXRhKGZhbHNlKSwKLSAgICAgIG1FbmRDYXBzKEdMX0ZMQVRfQ0hST01JVU0pLAotICAgICAgbUpv
aW5TdHlsZShHTF9NSVRFUl9SRVZFUlRfQ0hST01JVU0pLAotICAgICAgbVN0cm9rZVdpZHRoKDEu
MGYpLAotICAgICAgbVN0cm9rZUJvdW5kKDAuMmYpLAotICAgICAgbU1pdGVyTGltaXQoNC4wZikK
LXt9Ci0KLVBhdGg6On5QYXRoKCkKLXsKLSAgICBkZWxldGUgbVBhdGg7Ci19Ci0KLWFuZ2xlOjpS
ZXN1bHQgUGF0aDo6c2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCi17Ci0gICAgQU5HTEVfVFJZKG1QYXRoLT5z
ZXRDb21tYW5kcyhudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBj
b29yZHMpKTsKLQotICAgIG1IYXNEYXRhID0gdHJ1ZTsKLQotICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpDb250aW51ZTsKLX0KLQotdm9pZCBQYXRoOjpzZXRTdHJva2VXaWR0aChHTGZsb2F0IHdp
ZHRoKQotewotICAgIG1TdHJva2VXaWR0aCA9IHdpZHRoOwotICAgIG1QYXRoLT5zZXRQYXRoUGFy
YW1ldGVyKEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCBtU3Ryb2tlV2lkdGgpOwotfQot
Ci12b2lkIFBhdGg6OnNldFN0cm9rZUJvdW5kKEdMZmxvYXQgYm91bmQpCi17Ci0gICAgbVN0cm9r
ZUJvdW5kID0gY2xhbXAoYm91bmQsIDAuMGYsIDEuMGYpOwotICAgIG1QYXRoLT5zZXRQYXRoUGFy
YW1ldGVyKEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNLCBtU3Ryb2tlQm91bmQpOwotfQot
Ci12b2lkIFBhdGg6OnNldEVuZENhcHMoR0xlbnVtIHR5cGUpCi17Ci0gICAgbUVuZENhcHMgPSB0
eXBlOwotICAgIG1QYXRoLT5zZXRQYXRoUGFyYW1ldGVyKEdMX1BBVEhfRU5EX0NBUFNfQ0hST01J
VU0sIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHR5cGUpKTsKLX0KLQotdm9pZCBQYXRoOjpzZXRKb2lu
U3R5bGUoR0xlbnVtIHR5cGUpCi17Ci0gICAgbUpvaW5TdHlsZSA9IHR5cGU7Ci0gICAgbVBhdGgt
PnNldFBhdGhQYXJhbWV0ZXIoR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBzdGF0aWNfY2Fz
dDxHTGZsb2F0Pih0eXBlKSk7Ci19Ci0KLXZvaWQgUGF0aDo6c2V0TWl0ZXJMaW1pdChHTGZsb2F0
IHZhbHVlKQotewotICAgIG1NaXRlckxpbWl0ID0gdmFsdWU7Ci0gICAgbVBhdGgtPnNldFBhdGhQ
YXJhbWV0ZXIoR0xfUEFUSF9NSVRFUl9MSU1JVF9DSFJPTUlVTSwgdmFsdWUpOwotfQotCi19ICAv
LyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9QYXRoLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGF0
aC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmIzZWEzOTU2ZjdjN2ViODJhM2M4
Nzk5MDcxZGU4ZTk1YmEyYmMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QYXRoLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMDIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBQYXRoLmg6IERlZmlu
ZXMgdGhlIGdsOjpQYXRoIGNsYXNzLCByZXByZXNlbnRpbmcgQ0hST01JVU1fcGF0aF9yZW5kZXJp
bmcKLS8vIHBhdGggb2JqZWN0LgotCi0jaWZuZGVmIExJQkFOR0xFX1BBVEhfSF8KLSNkZWZpbmUg
TElCQU5HTEVfUEFUSF9IXwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci1jbGFzcyBQYXRo
SW1wbDsKLX0KLQotbmFtZXNwYWNlIGdsCi17Ci1jbGFzcyBQYXRoIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBQYXRoKHJ4OjpQYXRoSW1wbCAqaW1wbCk7Ci0K
LSAgICB+UGF0aCgpOwotCi0gICAgYW5nbGU6OlJlc3VsdCBzZXRDb21tYW5kcyhHTHNpemVpIG51
bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAq
Y29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3Jk
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpOwotCi0gICAgdm9p
ZCBzZXRTdHJva2VXaWR0aChHTGZsb2F0IHdpZHRoKTsKLSAgICB2b2lkIHNldFN0cm9rZUJvdW5k
KEdMZmxvYXQgYm91bmQpOwotICAgIHZvaWQgc2V0RW5kQ2FwcyhHTGVudW0gdHlwZSk7Ci0gICAg
dm9pZCBzZXRKb2luU3R5bGUoR0xlbnVtIHR5cGUpOwotICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChH
TGZsb2F0IHZhbHVlKTsKLQotICAgIEdMZmxvYXQgZ2V0U3Ryb2tlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtU3Ryb2tlV2lkdGg7IH0KLSAgICBHTGZsb2F0IGdldFN0cm9rZUJvdW5kKCkgY29uc3Qg
eyByZXR1cm4gbVN0cm9rZUJvdW5kOyB9Ci0gICAgR0xmbG9hdCBnZXRNaXRlckxpbWl0KCkgY29u
c3QgeyByZXR1cm4gbU1pdGVyTGltaXQ7IH0KLSAgICBHTGVudW0gZ2V0RW5kQ2FwcygpIGNvbnN0
IHsgcmV0dXJuIG1FbmRDYXBzOyB9Ci0gICAgR0xlbnVtIGdldEpvaW5TdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1Kb2luU3R5bGU7IH0KLQotICAgIGJvb2wgaGFzUGF0aERhdGEoKSBjb25zdCB7IHJl
dHVybiBtSGFzRGF0YTsgfQotCi0gICAgcng6OlBhdGhJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1QYXRoOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICByeDo6UGF0aEltcGwg
Km1QYXRoOwotCi0gICAgLy8gYSBQYXRoIG9iamVjdCBpcyBub3QgYWN0dWFsbHkgY29uc2lkZXJl
ZCAiYSBwYXRoIgotICAgIC8vIHVudGlsbCBpdCBoYXMgYmVlbiBzcGVjaWZpZWQgd2l0aCBkYXRh
LiBTbyB3ZSdsbAotICAgIC8vIGtlZXAgdGhpcyBmbGFnIHRvIHN1cHBvcnQgdGhpcyBzZW1hbnRp
Y3MuCi0gICAgYm9vbCBtSGFzRGF0YTsKLQotICAgIEdMZW51bSBtRW5kQ2FwczsKLSAgICBHTGVu
dW0gbUpvaW5TdHlsZTsKLSAgICBHTGZsb2F0IG1TdHJva2VXaWR0aDsKLSAgICBHTGZsb2F0IG1T
dHJva2VCb3VuZDsKLSAgICBHTGZsb2F0IG1NaXRlckxpbWl0OwotfTsKLQotfSAgLy8gbmFtZXNw
YWNlIGdsCi0KLSNlbmRpZiAgLy8gTElCQU5HTEVfUEFUSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCmluZGV4IDhlNjNkYjJhNDUzNjEy
MjI4M2Q2NzZiY2Y1MDY4ZjU4NmE1ZmUzOGYuLmNiYzZhMzY4MTVlM2U5MjIxZDdiMDA0YmMyYzNk
MTA4MTYxMDFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Qcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvUHJvZ3JhbS5jcHAKQEAgLTQwNSwxMyArNDA1LDE5IEBAIHZvaWQgSW5pdFNoYWRlclN0b3Jh
Z2VCbG9ja0xpbmtlcihjb25zdCBQcm9ncmFtU3RhdGUgJnN0YXRlLCBTaGFkZXJTdG9yYWdlQmxv
Y2tMCiB9CiAKIC8vIEZpbmQgdGhlIG1hdGNoaW5nIHZhcnlpbmcgb3IgZmllbGQgYnkgbmFtZS4K
LWNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqRmluZFZhcnlpbmdPckZpZWxkKGNvbnN0IFByb2dy
YW1NZXJnZWRWYXJ5aW5ncyAmdmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKK2NvbnN0IHNoOjpTaGFk
ZXJWYXJpYWJsZSAqRmluZE91dHB1dFZhcnlpbmdPckZpZWxkKGNvbnN0IFByb2dyYW1NZXJnZWRW
YXJ5aW5ncyAmdmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJUeXBlIHN0YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCiB7CiAg
ICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXIgPSBudWxscHRyOwotICAgIGZvciAoY29u
c3QgYXV0byAmcmVmIDogdmFyeWluZ3MpCisgICAgZm9yIChjb25zdCBQcm9ncmFtVmFyeWluZ1Jl
ZiAmcmVmIDogdmFyeWluZ3MpCiAgICAgewotICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFi
bGUgKnZhcnlpbmcgPSByZWYuc2Vjb25kLmdldCgpOworICAgICAgICBpZiAocmVmLmZyb250U2hh
ZGVyU3RhZ2UgIT0gc3RhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXJ5aW5nID0gcmVm
LmdldChzdGFnZSk7CiAgICAgICAgIGlmICh2YXJ5aW5nLT5uYW1lID09IG5hbWUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHZhciA9IHZhcnlpbmc7CkBAIC02NDQsMzMgKzY1MCw2IEBAIGJvb2wg
VmFsaWRhdGVJbnRlcmZhY2VCbG9ja3NNYXRjaCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBXcml0ZVNoYWRlclZhcihCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSwgY29uc3Qgc2g6OlNo
YWRlclZhcmlhYmxlICZ2YXIpCi17Ci0gICAgc3RyZWFtLT53cml0ZUludCh2YXIudHlwZSk7Ci0g
ICAgc3RyZWFtLT53cml0ZUludCh2YXIucHJlY2lzaW9uKTsKLSAgICBzdHJlYW0tPndyaXRlU3Ry
aW5nKHZhci5uYW1lKTsKLSAgICBzdHJlYW0tPndyaXRlU3RyaW5nKHZhci5tYXBwZWROYW1lKTsK
LSAgICBzdHJlYW0tPndyaXRlSW50VmVjdG9yKHZhci5hcnJheVNpemVzKTsKLSAgICBzdHJlYW0t
PndyaXRlSW50KHZhci5zdGF0aWNVc2UpOwotICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLmFjdGl2
ZSk7Ci0gICAgc3RyZWFtLT53cml0ZVN0cmluZyh2YXIuc3RydWN0TmFtZSk7Ci0gICAgc3RyZWFt
LT53cml0ZUludCh2YXIuaGFzUGFyZW50QXJyYXlJbmRleCgpID8gdmFyLnBhcmVudEFycmF5SW5k
ZXgoKSA6IC0xKTsKLSAgICBBU1NFUlQodmFyLmZpZWxkcy5lbXB0eSgpKTsKLX0KLQotdm9pZCBM
b2FkU2hhZGVyVmFyKEJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0sIHNoOjpTaGFkZXJWYXJpYWJs
ZSAqdmFyKQotewotICAgIHZhci0+dHlwZSAgICAgICA9IHN0cmVhbS0+cmVhZEludDxHTGVudW0+
KCk7Ci0gICAgdmFyLT5wcmVjaXNpb24gID0gc3RyZWFtLT5yZWFkSW50PEdMZW51bT4oKTsKLSAg
ICB2YXItPm5hbWUgICAgICAgPSBzdHJlYW0tPnJlYWRTdHJpbmcoKTsKLSAgICB2YXItPm1hcHBl
ZE5hbWUgPSBzdHJlYW0tPnJlYWRTdHJpbmcoKTsKLSAgICBzdHJlYW0tPnJlYWRJbnRWZWN0b3I8
dW5zaWduZWQgaW50PigmdmFyLT5hcnJheVNpemVzKTsKLSAgICB2YXItPnN0YXRpY1VzZSAgPSBz
dHJlYW0tPnJlYWRCb29sKCk7Ci0gICAgdmFyLT5hY3RpdmUgICAgID0gc3RyZWFtLT5yZWFkQm9v
bCgpOwotICAgIHZhci0+c3RydWN0TmFtZSA9IHN0cmVhbS0+cmVhZFN0cmluZygpOwotICAgIHZh
ci0+c2V0UGFyZW50QXJyYXlJbmRleChzdHJlYW0tPnJlYWRJbnQ8aW50PigpKTsKLX0KLQogdm9p
ZCBXcml0ZVNoYWRlclZhcmlhYmxlQnVmZmVyKEJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtLCBj
b25zdCBTaGFkZXJWYXJpYWJsZUJ1ZmZlciAmdmFyKQogewogICAgIHN0cmVhbS0+d3JpdGVJbnQo
dmFyLmJpbmRpbmcpOwpAQCAtNzUzLDYgKzczMiw3IEBAIHZvaWQgTG9hZEludGVyZmFjZUJsb2Nr
KEJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0sIEludGVyZmFjZUJsb2NrICpibG9jaykKICAgICBM
b2FkU2hhZGVyVmFyaWFibGVCdWZmZXIoc3RyZWFtLCBibG9jayk7CiB9CiAKKy8vIFRPRE8odGlt
dnApOiBodHRwOi8vYW5nbGVidWcuY29tLzM1NzA6IFJlbW92ZSB3aGVuIFBQT3MgYXJlIHN1cHBv
cnRlZAogc2l6ZV90IENvdW50VW5pcXVlQmxvY2tzKGNvbnN0IHN0ZDo6dmVjdG9yPEludGVyZmFj
ZUJsb2NrPiAmYmxvY2tzKQogewogICAgIHNpemVfdCBjb3VudCA9IDA7CkBAIC05MDQsNiArODg0
LDQ2IEBAIHZvaWQgTG9hZEJsb2NrTWVtYmVySW5mbyhCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFt
LCBzaDo6QmxvY2tNZW1iZXJJbmZvICp2YXIpCiAgICAgdmFyLT50b3BMZXZlbEFycmF5U3RyaWRl
ID0gc3RyZWFtLT5yZWFkSW50PGludD4oKTsKIH0KIAordm9pZCBXcml0ZVNoYWRlclZhcihCaW5h
cnlPdXRwdXRTdHJlYW0gKnN0cmVhbSwgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpCit7
CisgICAgc3RyZWFtLT53cml0ZUludCh2YXIudHlwZSk7CisgICAgc3RyZWFtLT53cml0ZUludCh2
YXIucHJlY2lzaW9uKTsKKyAgICBzdHJlYW0tPndyaXRlU3RyaW5nKHZhci5uYW1lKTsKKyAgICBz
dHJlYW0tPndyaXRlU3RyaW5nKHZhci5tYXBwZWROYW1lKTsKKyAgICBzdHJlYW0tPndyaXRlSW50
VmVjdG9yKHZhci5hcnJheVNpemVzKTsKKyAgICBzdHJlYW0tPndyaXRlSW50KHZhci5zdGF0aWNV
c2UpOworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLmFjdGl2ZSk7CisgICAgc3RyZWFtLT53cml0
ZUludCh2YXIuYmluZGluZyk7CisgICAgc3RyZWFtLT53cml0ZVN0cmluZyh2YXIuc3RydWN0TmFt
ZSk7CisgICAgc3RyZWFtLT53cml0ZUludCh2YXIuaGFzUGFyZW50QXJyYXlJbmRleCgpID8gdmFy
LnBhcmVudEFycmF5SW5kZXgoKSA6IC0xKTsKKworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLmlt
YWdlVW5pdEZvcm1hdCk7CisgICAgc3RyZWFtLT53cml0ZUludCh2YXIub2Zmc2V0KTsKKyAgICBz
dHJlYW0tPndyaXRlSW50KHZhci5yZWFkb25seSk7CisgICAgc3RyZWFtLT53cml0ZUludCh2YXIu
d3JpdGVvbmx5KTsKKworICAgIEFTU0VSVCh2YXIuZmllbGRzLmVtcHR5KCkpOworfQorCit2b2lk
IExvYWRTaGFkZXJWYXIoQmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSwgc2g6OlNoYWRlclZhcmlh
YmxlICp2YXIpCit7CisgICAgdmFyLT50eXBlICAgICAgID0gc3RyZWFtLT5yZWFkSW50PEdMZW51
bT4oKTsKKyAgICB2YXItPnByZWNpc2lvbiAgPSBzdHJlYW0tPnJlYWRJbnQ8R0xlbnVtPigpOwor
ICAgIHZhci0+bmFtZSAgICAgICA9IHN0cmVhbS0+cmVhZFN0cmluZygpOworICAgIHZhci0+bWFw
cGVkTmFtZSA9IHN0cmVhbS0+cmVhZFN0cmluZygpOworICAgIHN0cmVhbS0+cmVhZEludFZlY3Rv
cjx1bnNpZ25lZCBpbnQ+KCZ2YXItPmFycmF5U2l6ZXMpOworICAgIHZhci0+c3RhdGljVXNlICA9
IHN0cmVhbS0+cmVhZEJvb2woKTsKKyAgICB2YXItPmFjdGl2ZSAgICAgPSBzdHJlYW0tPnJlYWRC
b29sKCk7CisgICAgdmFyLT5iaW5kaW5nICAgID0gc3RyZWFtLT5yZWFkSW50PGludD4oKTsKKyAg
ICB2YXItPnN0cnVjdE5hbWUgPSBzdHJlYW0tPnJlYWRTdHJpbmcoKTsKKyAgICB2YXItPnNldFBh
cmVudEFycmF5SW5kZXgoc3RyZWFtLT5yZWFkSW50PGludD4oKSk7CisKKyAgICB2YXItPmltYWdl
VW5pdEZvcm1hdCA9IHN0cmVhbS0+cmVhZEludDxHTGVudW0+KCk7CisgICAgdmFyLT5vZmZzZXQg
ICAgICAgICAgPSBzdHJlYW0tPnJlYWRJbnQ8aW50PigpOworICAgIHZhci0+cmVhZG9ubHkgICAg
ICAgID0gc3RyZWFtLT5yZWFkQm9vbCgpOworICAgIHZhci0+d3JpdGVvbmx5ICAgICAgID0gc3Ry
ZWFtLT5yZWFkQm9vbCgpOworfQorCiAvLyBWYXJpYWJsZUxvY2F0aW9uIGltcGxlbWVudGF0aW9u
LgogVmFyaWFibGVMb2NhdGlvbjo6VmFyaWFibGVMb2NhdGlvbigpIDogYXJyYXlJbmRleCgwKSwg
aW5kZXgoa1VudXNlZCksIGlnbm9yZWQoZmFsc2UpIHt9CiAKQEAgLTk5Myw2ICsxMDEzLDE4IEBA
IGludCBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzOjpnZXRCaW5kaW5nQnlOYW1lKGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKSBjb25zdAogICAgIHJldHVybiAoaXRlciAhPSBtQmluZGluZ3MuZW5kKCkp
ID8gaXRlci0+c2Vjb25kLmxvY2F0aW9uIDogLTE7CiB9CiAKK2ludCBQcm9ncmFtQWxpYXNlZEJp
bmRpbmdzOjpnZXRCaW5kaW5nQnlMb2NhdGlvbihHTHVpbnQgbG9jYXRpb24pIGNvbnN0Cit7Cisg
ICAgZm9yIChjb25zdCBhdXRvICZpdGVyIDogbUJpbmRpbmdzKQorICAgIHsKKyAgICAgICAgaWYg
KGl0ZXIuc2Vjb25kLmxvY2F0aW9uID09IGxvY2F0aW9uKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gaXRlci5zZWNvbmQubG9jYXRpb247CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIC0xOworfQorCiBpbnQgUHJvZ3JhbUFsaWFzZWRCaW5kaW5nczo6Z2V0QmluZGluZyhjb25z
dCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlKSBjb25zdAogewogICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lID0gdmFyaWFibGUubmFtZTsKQEAgLTEwNjAsNyArMTA5Miw2IEBAIFByb2dy
YW1TdGF0ZTo6UHJvZ3JhbVN0YXRlKCkKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUF0dGFjaGVk
U2hhZGVyc3t9LAogICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZShHTF9JTlRFUkxF
QVZFRF9BVFRSSUJTKSwKLSAgICAgIG1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbigwKSwKICAgICAg
IG1EZWZhdWx0VW5pZm9ybVJhbmdlKDAsIDApLAogICAgICAgbVNhbXBsZXJVbmlmb3JtUmFuZ2Uo
MCwgMCksCiAgICAgICBtSW1hZ2VVbmlmb3JtUmFuZ2UoMCwgMCksCkBAIC0xMDc3LDExICsxMTA4
LDEwIEBAIFByb2dyYW1TdGF0ZTo6UHJvZ3JhbVN0YXRlKCkKICAgICAgIG1CYXNlVmVydGV4TG9j
YXRpb24oLTEpLAogICAgICAgbUJhc2VJbnN0YW5jZUxvY2F0aW9uKC0xKSwKICAgICAgIG1DYWNo
ZWRCYXNlVmVydGV4KDApLAotICAgICAgbUNhY2hlZEJhc2VJbnN0YW5jZSgwKSwKLSAgICAgIG1B
Y3RpdmVTYW1wbGVyUmVmQ291bnRze30KKyAgICAgIG1DYWNoZWRCYXNlSW5zdGFuY2UoMCkKIHsK
ICAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZS5maWxsKDEpOwotICAgIG1BY3RpdmVTYW1wbGVy
VHlwZXMuZmlsbChUZXh0dXJlVHlwZTo6SW52YWxpZEVudW0pOworICAgIG1FeGVjdXRhYmxlLnNl
dFByb2dyYW1TdGF0ZSh0aGlzKTsKIH0KIAogUHJvZ3JhbVN0YXRlOjp+UHJvZ3JhbVN0YXRlKCkK
QEAgLTExMDAsNiArMTEzMCw3IEBAIFNoYWRlciAqUHJvZ3JhbVN0YXRlOjpnZXRBdHRhY2hlZFNo
YWRlcihTaGFkZXJUeXBlIHNoYWRlclR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1BdHRhY2hlZFNo
YWRlcnNbc2hhZGVyVHlwZV07CiB9CiAKKy8vIFRPRE8odGltdnApOiBodHRwOi8vYW5nbGVidWcu
Y29tLzM1NzA6IFJlbW92ZSB3aGVuIFBQT3MgYXJlIHN1cHBvcnRlZAogc2l6ZV90IFByb2dyYW1T
dGF0ZTo6Z2V0VW5pcXVlVW5pZm9ybUJsb2NrQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBD
b3VudFVuaXF1ZUJsb2NrcyhtVW5pZm9ybUJsb2Nrcyk7CkBAIC0xMTEwLDYgKzExNDEsMTEgQEAg
c2l6ZV90IFByb2dyYW1TdGF0ZTo6Z2V0VW5pcXVlU3RvcmFnZUJsb2NrQ291bnQoKSBjb25zdAog
ICAgIHJldHVybiBDb3VudFVuaXF1ZUJsb2NrcyhtU2hhZGVyU3RvcmFnZUJsb2Nrcyk7CiB9CiAK
K3NpemVfdCBQcm9ncmFtU3RhdGU6OmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKSBj
b25zdAoreworICAgIHJldHVybiBtVHJhbnNmb3JtRmVlZGJhY2tTdHJpZGVzLnNpemUoKTsKK30K
KwogR0x1aW50IFByb2dyYW1TdGF0ZTo6Z2V0VW5pZm9ybUluZGV4RnJvbU5hbWUoY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEdldFJlc291cmNlSW5kZXhGcm9t
TmFtZShtVW5pZm9ybXMsIG5hbWUpOwpAQCAtMTEyMCwxMyArMTE1NiwxMyBAQCBHTHVpbnQgUHJv
Z3JhbVN0YXRlOjpnZXRCdWZmZXJWYXJpYWJsZUluZGV4RnJvbU5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpIGNvbgogICAgIHJldHVybiBHZXRSZXNvdXJjZUluZGV4RnJvbU5hbWUobUJ1ZmZl
clZhcmlhYmxlcywgbmFtZSk7CiB9CiAKLUdMdWludCBQcm9ncmFtU3RhdGU6OmdldFVuaWZvcm1J
bmRleEZyb21Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKK0dMdWludCBQcm9ncmFtU3Rh
dGU6OmdldFVuaWZvcm1JbmRleEZyb21Mb2NhdGlvbihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGxvY2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihsb2NhdGlvbikgPCBtVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOwotICAgIHJldHVybiBtVW5p
Zm9ybUxvY2F0aW9uc1tsb2NhdGlvbl0uaW5kZXg7CisgICAgQVNTRVJUKGxvY2F0aW9uLnZhbHVl
ID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbi52YWx1ZSkgPCBtVW5pZm9ybUxv
Y2F0aW9ucy5zaXplKCkpOworICAgIHJldHVybiBtVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52
YWx1ZV0uaW5kZXg7CiB9CiAKLU9wdGlvbmFsPEdMdWludD4gUHJvZ3JhbVN0YXRlOjpnZXRTYW1w
bGVySW5kZXgoR0xpbnQgbG9jYXRpb24pIGNvbnN0CitPcHRpb25hbDxHTHVpbnQ+IFByb2dyYW1T
dGF0ZTo6Z2V0U2FtcGxlckluZGV4KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3QKIHsK
ICAgICBHTHVpbnQgaW5kZXggPSBnZXRVbmlmb3JtSW5kZXhGcm9tTG9jYXRpb24obG9jYXRpb24p
OwogICAgIGlmICghaXNTYW1wbGVyVW5pZm9ybUluZGV4KGluZGV4KSkKQEAgLTEyMDAsMTMgKzEy
MzYsMTMgQEAgU2hhZGVyVHlwZSBQcm9ncmFtU3RhdGU6OmdldEZpcnN0QXR0YWNoZWRTaGFkZXJT
dGFnZVR5cGUoKSBjb25zdAogewogICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVy
VHlwZSA6IGdsOjprQWxsR3JhcGhpY3NTaGFkZXJUeXBlcykKICAgICB7Ci0gICAgICAgIGlmICho
YXNMaW5rZWRTaGFkZXJTdGFnZShzaGFkZXJUeXBlKSkKKyAgICAgICAgaWYgKG1FeGVjdXRhYmxl
Lmhhc0xpbmtlZFNoYWRlclN0YWdlKHNoYWRlclR5cGUpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gc2hhZGVyVHlwZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChoYXNMaW5r
ZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpDb21wdXRlKSkKKyAgICBpZiAobUV4ZWN1dGFibGUu
aGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkpCiAgICAgewogICAgICAg
ICByZXR1cm4gU2hhZGVyVHlwZTo6Q29tcHV0ZTsKICAgICB9CkBAIC0xMjIwLDEzICsxMjU2LDEz
IEBAIFNoYWRlclR5cGUgUHJvZ3JhbVN0YXRlOjpnZXRMYXN0QXR0YWNoZWRTaGFkZXJTdGFnZVR5
cGUoKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlw
ZSA9IGdsOjprQWxsR3JhcGhpY3NTaGFkZXJUeXBlc1tpXTsKIAotICAgICAgICBpZiAoaGFzTGlu
a2VkU2hhZGVyU3RhZ2Uoc2hhZGVyVHlwZSkpCisgICAgICAgIGlmIChtRXhlY3V0YWJsZS5oYXNM
aW5rZWRTaGFkZXJTdGFnZShzaGFkZXJUeXBlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIHNoYWRlclR5cGU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoaGFzTGlua2VkU2hh
ZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkpCisgICAgaWYgKG1FeGVjdXRhYmxlLmhhc0xp
bmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1dGUpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIFNoYWRlclR5cGU6OkNvbXB1dGU7CiAgICAgfQpAQCAtMTM0MCwxNiArMTM3NiwxMCBAQCB2
b2lkIFByb2dyYW06OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNo
YXIgKm5hbWUpCiAgICAgbUF0dHJpYnV0ZUJpbmRpbmdzLmJpbmRMb2NhdGlvbihpbmRleCwgbmFt
ZSk7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6YmluZFVuaWZvcm1Mb2NhdGlvbihHTHVpbnQgaW5kZXgs
IGNvbnN0IGNoYXIgKm5hbWUpCit2b2lkIFByb2dyYW06OmJpbmRVbmlmb3JtTG9jYXRpb24oVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBjb25zdCBjaGFyICpuYW1lKQogewogICAgIEFTU0VSVCht
TGlua1Jlc29sdmVkKTsKLSAgICBtVW5pZm9ybUxvY2F0aW9uQmluZGluZ3MuYmluZExvY2F0aW9u
KGluZGV4LCBuYW1lKTsKLX0KLQotdm9pZCBQcm9ncmFtOjpiaW5kRnJhZ21lbnRJbnB1dExvY2F0
aW9uKEdMaW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQotewotICAgIEFTU0VSVChtTGlua1Jl
c29sdmVkKTsKLSAgICBtRnJhZ21lbnRJbnB1dEJpbmRpbmdzLmJpbmRMb2NhdGlvbihpbmRleCwg
bmFtZSk7CisgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25CaW5kaW5ncy5iaW5kTG9jYXRpb24o
bG9jYXRpb24udmFsdWUsIG5hbWUpOwogfQogCiB2b2lkIFByb2dyYW06OmJpbmRGcmFnbWVudE91
dHB1dExvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSkKQEAgLTEzNjIsODAg
KzEzOTIsNiBAQCB2b2lkIFByb2dyYW06OmJpbmRGcmFnbWVudE91dHB1dEluZGV4KEdMdWludCBp
bmRleCwgY29uc3QgY2hhciAqbmFtZSkKICAgICBtRnJhZ21lbnRPdXRwdXRJbmRleGVzLmJpbmRM
b2NhdGlvbihpbmRleCwgbmFtZSk7CiB9CiAKLUJpbmRpbmdJbmZvIFByb2dyYW06OmdldEZyYWdt
ZW50SW5wdXRCaW5kaW5nSW5mbyhHTGludCBpbmRleCkgY29uc3QKLXsKLSAgICBBU1NFUlQobUxp
bmtSZXNvbHZlZCk7Ci0gICAgQmluZGluZ0luZm8gcmV0OwotICAgIHJldC50eXBlICA9IEdMX05P
TkU7Ci0gICAgcmV0LnZhbGlkID0gZmFsc2U7Ci0KLSAgICBTaGFkZXIgKmZyYWdtZW50U2hhZGVy
ID0gbVN0YXRlLmdldEF0dGFjaGVkU2hhZGVyKFNoYWRlclR5cGU6OkZyYWdtZW50KTsKLSAgICBB
U1NFUlQoZnJhZ21lbnRTaGFkZXIpOwotCi0gICAgLy8gRmluZCB0aGUgYWN0dWFsIGZyYWdtZW50
IHNoYWRlciB2YXJ5aW5nIHdlJ3JlIGludGVyZXN0ZWQgaW4KLSAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzaDo6U2hhZGVyVmFyaWFibGU+ICZpbnB1dHMgPSBmcmFnbWVudFNoYWRlci0+Z2V0SW5wdXRW
YXJ5aW5ncygpOwotCi0gICAgZm9yIChjb25zdCBhdXRvICZiaW5kaW5nIDogbUZyYWdtZW50SW5w
dXRCaW5kaW5ncykKLSAgICB7Ci0gICAgICAgIGlmIChiaW5kaW5nLnNlY29uZCAhPSBzdGF0aWNf
Y2FzdDxHTHVpbnQ+KGluZGV4KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJl
dC52YWxpZCA9IHRydWU7Ci0KLSAgICAgICAgc2l6ZV90IG5hbWVMZW5ndGhXaXRob3V0QXJyYXlJ
bmRleDsKLSAgICAgICAgdW5zaWduZWQgaW50IGFycmF5SW5kZXggPSBQYXJzZUFycmF5SW5kZXgo
YmluZGluZy5maXJzdCwgJm5hbWVMZW5ndGhXaXRob3V0QXJyYXlJbmRleCk7Ci0KLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvICZpbiA6IGlucHV0cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGluLm5hbWUubGVuZ3RoKCkgPT0gbmFtZUxlbmd0aFdpdGhvdXRBcnJheUluZGV4ICYmCi0gICAg
ICAgICAgICAgICAgYW5nbGU6OkJlZ2luc1dpdGgoaW4ubmFtZSwgYmluZGluZy5maXJzdCwgbmFt
ZUxlbmd0aFdpdGhvdXRBcnJheUluZGV4KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpZiAoaW4uaXNBcnJheSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gVGhlIGNsaWVudCB3YW50cyB0byBiaW5kIGVpdGhlciAibmFtZSIgb3IgIm5hbWVbMF0i
LgotICAgICAgICAgICAgICAgICAgICAvLyBHTCBFUyAzLjEgc3BlYyByZWZlcnMgdG8gYWN0aXZl
IGFycmF5IG5hbWVzIHdpdGggbGFuZ3VhZ2Ugc3VjaCBhczoKLSAgICAgICAgICAgICAgICAgICAg
Ly8gImlmIHRoZSBzdHJpbmcgaWRlbnRpZmllcyB0aGUgYmFzZSBuYW1lIG9mIGFuIGFjdGl2ZSBh
cnJheSwgd2hlcmUgdGhlCi0gICAgICAgICAgICAgICAgICAgIC8vIHN0cmluZyB3b3VsZCBleGFj
dGx5IG1hdGNoIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpZiB0aGUgc3VmZml4ICJbMF0iCi0g
ICAgICAgICAgICAgICAgICAgIC8vIHdlcmUgYXBwZW5kZWQgdG8gdGhlIHN0cmluZyIuCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChhcnJheUluZGV4ID09IEdMX0lOVkFMSURfSU5ERVgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBhcnJheUluZGV4ID0gMDsKLQotICAgICAgICAgICAgICAgICAg
ICByZXQubmFtZSA9IGluLm1hcHBlZE5hbWUgKyAiWyIgKyBUb1N0cmluZyhhcnJheUluZGV4KSAr
ICJdIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWUgPSBpbi5tYXBwZWROYW1lOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXQudHlwZSA9IGluLnR5cGU7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiByZXQ7Ci19Ci0KLXZvaWQgUHJvZ3JhbTo6cGF0aEZyYWdtZW50SW5w
dXRHZW4oR0xpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBj
b21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpjb2VmZnMpCi17Ci0gICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIC8vIElmIHRo
ZSBsb2NhdGlvbiBpcyAtMSB0aGVuIHRoZSBjb21tYW5kIGlzIHNpbGVudGx5IGlnbm9yZWQKLSAg
ICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IGF1dG8gJmJp
bmRpbmcgPSBnZXRGcmFnbWVudElucHV0QmluZGluZ0luZm8oaW5kZXgpOwotCi0gICAgLy8gSWYg
dGhlIGlucHV0IGRvZXNuJ3QgZXhpc3QgdGhlbiB0aGVuIHRoZSBjb21tYW5kIGlzIHNpbGVudGx5
IGlnbm9yZWQKLSAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiB0aHJvdWdoIG9wdGltaXphdGlvbiBm
b3IgZXhhbXBsZSwgdGhlIHNoYWRlciB0cmFuc2xhdG9yCi0gICAgLy8gZGVjaWRlcyB0aGF0IGEg
dmFyaWFibGUgaXMgbm90IGFjdHVhbGx5IGJlaW5nIHVzZWQgYW5kIG9wdGltaXplcyBpdCBhd2F5
LgotICAgIGlmIChiaW5kaW5nLm5hbWUuZW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bVByb2dyYW0tPnNldFBhdGhGcmFnbWVudElucHV0R2VuKGJpbmRpbmcubmFtZSwgZ2VuTW9kZSwg
Y29tcG9uZW50cywgY29lZmZzKTsKLX0KLQogLy8gVGhlIGF0dGFjaGVkIHNoYWRlcnMgYXJlIGNo
ZWNrZWQgZm9yIGxpbmtpbmcgZXJyb3JzIGJ5IG1hdGNoaW5nIHVwIHRoZWlyIHZhcmlhYmxlcy4K
IC8vIFVuaWZvcm0sIGlucHV0IGFuZCBvdXRwdXQgdmFyaWFibGVzIGdldCBjb2xsZWN0ZWQuCiAv
LyBUaGUgY29kZSBnZXRzIGNvbXBpbGVkIGludG8gYmluYXJpZXMuCkBAIC0xNDQzLDE1ICsxMzk5
LDE2IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0
KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKICAgICBjb25zdCBhdXRvICZkYXRhID0g
Y29udGV4dC0+Z2V0U3RhdGUoKTsKKyAgICBJbmZvTG9nICZpbmZvTG9nID0gbVN0YXRlLm1FeGVj
dXRhYmxlLmdldEluZm9Mb2coKTsKIAogICAgIGF1dG8gKnBsYXRmb3JtICAgPSBBTkdMRVBsYXRm
b3JtQ3VycmVudCgpOwogICAgIGRvdWJsZSBzdGFydFRpbWUgPSBwbGF0Zm9ybS0+Y3VycmVudFRp
bWUocGxhdGZvcm0pOwogCiAgICAgdW5saW5rKCk7Ci0gICAgbUluZm9Mb2cucmVzZXQoKTsKKyAg
ICBpbmZvTG9nLnJlc2V0KCk7CiAKICAgICAvLyBWYWxpZGF0ZSB3ZSBoYXZlIHByb3Blcmx5IGF0
dGFjaGVkIHNoYWRlcnMgYmVmb3JlIGNoZWNraW5nIHRoZSBjYWNoZS4KLSAgICBpZiAoIWxpbmtW
YWxpZGF0ZVNoYWRlcnMobUluZm9Mb2cpKQorICAgIGlmICghbGlua1ZhbGlkYXRlU2hhZGVycyhp
bmZvTG9nKSkKICAgICB7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
ICAgICB9CkBAIC0xNDgwLDcgKzE0MzcsNyBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW06Omxpbmso
Y29uc3QgQ29udGV4dCAqY29udGV4dCkKICAgICB1bmxpbmsoKTsKIAogICAgIC8vIFJlLWxpbmsg
c2hhZGVycyBhZnRlciB0aGUgdW5saW5rIGNhbGwuCi0gICAgYm9vbCByZXN1bHQgPSBsaW5rVmFs
aWRhdGVTaGFkZXJzKG1JbmZvTG9nKTsKKyAgICBib29sIHJlc3VsdCA9IGxpbmtWYWxpZGF0ZVNo
YWRlcnMoaW5mb0xvZyk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJvZ3JhbUxpbmtlZFJlc291cmNlcz4gcmVzb3VyY2VzOwpAQCAtMTQ5MSw4ICsxNDQ4LDgg
QEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiAg
ICAgICAgICAgICAmbVN0YXRlLm1TaGFkZXJTdG9yYWdlQmxvY2tzLCAmbVN0YXRlLm1CdWZmZXJW
YXJpYWJsZXMsICZtU3RhdGUubUF0b21pY0NvdW50ZXJCdWZmZXJzKSk7CiAKICAgICAgICAgR0x1
aW50IGNvbWJpbmVkSW1hZ2VVbmlmb3JtcyA9IDB1OwotICAgICAgICBpZiAoIWxpbmtVbmlmb3Jt
cyhjb250ZXh0LT5nZXRDYXBzKCksIGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgbUluZm9M
b2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1Vbmlmb3JtTG9jYXRpb25CaW5kaW5ncywg
JmNvbWJpbmVkSW1hZ2VVbmlmb3JtcywKKyAgICAgICAgaWYgKCFsaW5rVW5pZm9ybXMoY29udGV4
dC0+Z2V0Q2FwcygpLCBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGluZm9Mb2csCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uQmluZGluZ3MsICZj
b21iaW5lZEltYWdlVW5pZm9ybXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNvdXJj
ZXMtPnVudXNlZFVuaWZvcm1zKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFuZ2xl
OjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMTUwMCw3ICsxNDU3LDcgQEAgYW5nbGU6OlJlc3VsdCBQ
cm9ncmFtOjpsaW5rKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiAKICAgICAgICAgR0x1aW50IGNv
bWJpbmVkU2hhZGVyU3RvcmFnZUJsb2NrcyA9IDB1OwogICAgICAgICBpZiAoIWxpbmtJbnRlcmZh
Y2VCbG9ja3MoY29udGV4dC0+Z2V0Q2FwcygpLCBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkud2ViZ2xDb21wYXRpYmlsaXR5LCBtSW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHksIGlu
Zm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tYmluZWRTaGFkZXJT
dG9yYWdlQmxvY2tzKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwpAQCAtMTUxNCw3ICsxNDcxLDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFt
OjpsaW5rKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiAgICAgICAgIGlmIChjb21iaW5lZEltYWdl
VW5pZm9ybXMgKyBjb21iaW5lZFNoYWRlclN0b3JhZ2VCbG9ja3MgPgogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCkubWF4Q29tYmluZWRTaGFkZXJPdXRw
dXRSZXNvdXJjZXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtSW5mb0xvZworICAgICAgICAg
ICAgaW5mb0xvZwogICAgICAgICAgICAgICAgIDw8ICJUaGUgc3VtIG9mIHRoZSBudW1iZXIgb2Yg
YWN0aXZlIGltYWdlIHVuaWZvcm1zLCBhY3RpdmUgc2hhZGVyIHN0b3JhZ2UgYmxvY2tzICIKICAg
ICAgICAgICAgICAgICAgICAiYW5kIGFjdGl2ZSBmcmFnbWVudCBzaGFkZXIgb3V0cHV0cyBleGNl
ZWRzICIKICAgICAgICAgICAgICAgICAgICAiTUFYX0NPTUJJTkVEX1NIQURFUl9PVVRQVVRfUkVT
T1VSQ0VTICgiCkBAIC0xNTQ1LDE5ICsxNTAyLDE5IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6
bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgICAgICAgICAgJm1TdGF0ZS5tVW5pZm9y
bXMsICZtU3RhdGUubVNoYWRlclN0b3JhZ2VCbG9ja3MsICZtU3RhdGUubUJ1ZmZlclZhcmlhYmxl
cywKICAgICAgICAgICAgICZtU3RhdGUubUF0b21pY0NvdW50ZXJCdWZmZXJzKSk7CiAKLSAgICAg
ICAgaWYgKCFsaW5rQXR0cmlidXRlcyhjb250ZXh0LCBtSW5mb0xvZykpCisgICAgICAgIGlmICgh
bGlua0F0dHJpYnV0ZXMoY29udGV4dCwgaW5mb0xvZykpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghbGlua1ZhcnlpbmdzKG1JbmZvTG9nKSkKKyAgICAgICAgaWYgKCFsaW5rVmFyeWluZ3MoaW5m
b0xvZykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIEdMdWludCBjb21iaW5lZEltYWdlVW5pZm9ybXMg
PSAwdTsKLSAgICAgICAgaWYgKCFsaW5rVW5pZm9ybXMoY29udGV4dC0+Z2V0Q2FwcygpLCBjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIG1JbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBtVW5pZm9ybUxvY2F0aW9uQmluZGluZ3MsICZjb21iaW5lZEltYWdlVW5pZm9ybXMsCisg
ICAgICAgIGlmICghbGlua1VuaWZvcm1zKGNvbnRleHQtPmdldENhcHMoKSwgY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpLCBpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtU3Rh
dGUubVVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzLCAmY29tYmluZWRJbWFnZVVuaWZvcm1zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAmcmVzb3VyY2VzLT51bnVzZWRVbmlmb3JtcykpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTE1
NjUsMTMgKzE1MjIsMTMgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpCiAKICAgICAgICAgR0x1aW50IGNvbWJpbmVkU2hhZGVyU3RvcmFnZUJsb2Nr
cyA9IDB1OwogICAgICAgICBpZiAoIWxpbmtJbnRlcmZhY2VCbG9ja3MoY29udGV4dC0+Z2V0Q2Fw
cygpLCBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5LCBt
SW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHksIGluZm9Mb2csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmY29tYmluZWRTaGFkZXJTdG9yYWdlQmxvY2tzKSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFsaW5rVmFsaWRhdGVHbG9iYWxOYW1lcyhtSW5mb0xvZykpCisgICAg
ICAgIGlmICghbGlua1ZhbGlkYXRlR2xvYmFsTmFtZXMoaW5mb0xvZykpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKICAgICAgICAgfQpAQCAt
MTU4Myw3ICsxNTQwLDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7
CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBhdXRvICZtZXJnZWRWYXJ5aW5ncyA9IGdldE1l
cmdlZFZhcnlpbmdzKCk7CisgICAgICAgIGNvbnN0IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyAmbWVy
Z2VkVmFyeWluZ3MgPSBnZXRNZXJnZWRWYXJ5aW5ncygpOwogCiAgICAgICAgIGdsOjpTaGFkZXIg
KnZlcnRleFNoYWRlciA9IG1TdGF0ZS5tQXR0YWNoZWRTaGFkZXJzW1NoYWRlclR5cGU6OlZlcnRl
eF07CiAgICAgICAgIGlmICh2ZXJ0ZXhTaGFkZXIpCkBAIC0xNTk0LDE5ICsxNTUxLDIyIEBAIGFu
Z2xlOjpSZXN1bHQgUHJvZ3JhbTo6bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgICAg
ICBJbml0VW5pZm9ybUJsb2NrTGlua2VyKG1TdGF0ZSwgJnJlc291cmNlcy0+dW5pZm9ybUJsb2Nr
TGlua2VyKTsKICAgICAgICAgSW5pdFNoYWRlclN0b3JhZ2VCbG9ja0xpbmtlcihtU3RhdGUsICZy
ZXNvdXJjZXMtPnNoYWRlclN0b3JhZ2VCbG9ja0xpbmtlcik7CiAKLSAgICAgICAgaWYgKCFsaW5r
VmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIG1J
bmZvTG9nLCBtZXJnZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5nZXRDYXBzKCkpKQorICAgICAgICBTaGFkZXJUeXBlIHRmU3Rh
Z2UgPSBtU3RhdGUubUF0dGFjaGVkU2hhZGVyc1tTaGFkZXJUeXBlOjpHZW9tZXRyeV0gPyBTaGFk
ZXJUeXBlOjpHZW9tZXRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTaGFkZXJUeXBlOjpWZXJ0ZXg7
CisKKyAgICAgICAgaWYgKCFsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCksIGluZm9Mb2csIG1lcmdlZFZhcnlpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmU3RhZ2UsIGNvbnRleHQtPmdldENhcHMo
KSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcmVzb3VyY2VzLT52YXJ5aW5nUGFja2luZy5j
b2xsZWN0QW5kUGFja1VzZXJWYXJ5aW5ncygKLSAgICAgICAgICAgICAgICBtSW5mb0xvZywgbWVy
Z2VkVmFyeWluZ3MsIG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcygpKSkK
KyAgICAgICAgICAgICAgICBpbmZvTG9nLCBtZXJnZWRWYXJ5aW5ncywgbVN0YXRlLmdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCksIGlzU2VwYXJhYmxlKCkpKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgICAgIH0KIAot
ICAgICAgICBnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKG1lcmdlZFZhcnlpbmdzKTsK
KyAgICAgICAgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhtZXJnZWRWYXJ5aW5ncywg
dGZTdGFnZSk7CiAgICAgICAgIG1TdGF0ZS51cGRhdGVUcmFuc2Zvcm1GZWVkYmFja1N0cmlkZXMo
KTsKICAgICB9CiAKQEAgLTE2MTUsNyArMTU3NSw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6
bGluayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgIG1MaW5raW5nU3RhdGUucmVzZXQobmV3
IExpbmtpbmdTdGF0ZSgpKTsKICAgICBtTGlua2luZ1N0YXRlLT5saW5raW5nRnJvbUJpbmFyeSA9
IGZhbHNlOwogICAgIG1MaW5raW5nU3RhdGUtPnByb2dyYW1IYXNoICAgICAgID0gcHJvZ3JhbUhh
c2g7Ci0gICAgbUxpbmtpbmdTdGF0ZS0+bGlua0V2ZW50ICAgICAgICAgPSBtUHJvZ3JhbS0+bGlu
ayhjb250ZXh0LCAqcmVzb3VyY2VzLCBtSW5mb0xvZyk7CisgICAgbUxpbmtpbmdTdGF0ZS0+bGlu
a0V2ZW50ICAgICAgICAgPSBtUHJvZ3JhbS0+bGluayhjb250ZXh0LCAqcmVzb3VyY2VzLCBpbmZv
TG9nKTsKICAgICBtTGlua2luZ1N0YXRlLT5yZXNvdXJjZXMgICAgICAgICA9IHN0ZDo6bW92ZShy
ZXNvdXJjZXMpOwogICAgIG1MaW5rUmVzb2x2ZWQgICAgICAgICAgICAgICAgICAgID0gZmFsc2U7
CiAKQEAgLTE2NjQsMTAgKzE2MjQsNiBAQCB2b2lkIFByb2dyYW06OnJlc29sdmVMaW5rSW1wbChj
b25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgIC8vIE11c3QgYmUgY2FsbGVkIGFmdGVyIG1hcmtV
bnVzZWRVbmlmb3JtTG9jYXRpb25zLgogICAgIHBvc3RSZXNvbHZlTGluayhjb250ZXh0KTsKIAot
ICAgIC8vIFRPRE8oc3lvdXNzZWZpKTogdGhpcyBtaWdodCBuZWVkIHRvIGJlIG1vdmVkIHRvIHBv
c3RSZXNvbHZlTGluaygpIHNvIGl0IHdpbGwgYmUgY2FsbGVkIGZyb20KLSAgICAvLyBkZXNlcmlh
bGl6ZSgpIGFzIHdlbGwuICBodHRwOi8vYW5nbGVidWcuY29tLzMwODkKLSAgICBzZXRVbmlmb3Jt
VmFsdWVzRnJvbUJpbmRpbmdRdWFsaWZpZXJzKCk7Ci0KICAgICAvLyBTYXZlIHRvIHRoZSBwcm9n
cmFtIGNhY2hlLgogICAgIE1lbW9yeVByb2dyYW1DYWNoZSAqY2FjaGUgPSBjb250ZXh0LT5nZXRN
ZW1vcnlQcm9ncmFtQ2FjaGUoKTsKICAgICBpZiAoY2FjaGUgJiYKQEAgLTE2ODUsMTMgKzE2NDEs
MTMgQEAgdm9pZCBQcm9ncmFtOjpyZXNvbHZlTGlua0ltcGwoY29uc3QgQ29udGV4dCAqY29udGV4
dCkKIAogdm9pZCBQcm9ncmFtOjp1cGRhdGVMaW5rZWRTaGFkZXJTdGFnZXMoKQogewotICAgIG1T
dGF0ZS5tTGlua2VkU2hhZGVyU3RhZ2VzLnJlc2V0KCk7CisgICAgbVN0YXRlLm1FeGVjdXRhYmxl
LmdldExpbmtlZFNoYWRlclN0YWdlcygpLnJlc2V0KCk7CiAKICAgICBmb3IgKGNvbnN0IFNoYWRl
ciAqc2hhZGVyIDogbVN0YXRlLm1BdHRhY2hlZFNoYWRlcnMpCiAgICAgewogICAgICAgICBpZiAo
c2hhZGVyKQogICAgICAgICB7Ci0gICAgICAgICAgICBtU3RhdGUubUxpbmtlZFNoYWRlclN0YWdl
cy5zZXQoc2hhZGVyLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgbVN0YXRlLm1FeGVjdXRhYmxl
LmdldExpbmtlZFNoYWRlclN0YWdlcygpLnNldChzaGFkZXItPmdldFR5cGUoKSk7CiAgICAgICAg
IH0KICAgICB9CiB9CkBAIC0xNzIyLDQ4ICsxNjc4LDEzIEBAIHZvaWQgUHJvZ3JhbVN0YXRlOjp1
cGRhdGVUcmFuc2Zvcm1GZWVkYmFja1N0cmlkZXMoKQogCiB2b2lkIFByb2dyYW1TdGF0ZTo6dXBk
YXRlQWN0aXZlU2FtcGxlcnMoKQogewotICAgIG1BY3RpdmVTYW1wbGVyUmVmQ291bnRzLmZpbGwo
MCk7Ci0KLSAgICBmb3IgKFNhbXBsZXJCaW5kaW5nICZzYW1wbGVyQmluZGluZyA6IG1TYW1wbGVy
QmluZGluZ3MpCi0gICAgewotICAgICAgICBpZiAoc2FtcGxlckJpbmRpbmcudW5yZWZlcmVuY2Vk
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZm9yIChHTGludCB0ZXh0dXJlVW5p
dCA6IHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoKyttQWN0aXZlU2FtcGxlclJlZkNvdW50c1t0ZXh0dXJlVW5pdF0gPT0gMSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtQWN0aXZlU2FtcGxlclR5cGVzW3RleHR1cmVV
bml0XSAgID0gc2FtcGxlckJpbmRpbmcudGV4dHVyZVR5cGU7Ci0gICAgICAgICAgICAgICAgbUFj
dGl2ZVNhbXBsZXJGb3JtYXRzW3RleHR1cmVVbml0XSA9IHNhbXBsZXJCaW5kaW5nLmZvcm1hdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpZiAobUFjdGl2ZVNhbXBsZXJUeXBlc1t0ZXh0dXJlVW5pdF0gIT0gc2FtcGxlckJp
bmRpbmcudGV4dHVyZVR5cGUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBtQWN0aXZlU2FtcGxlclR5cGVzW3RleHR1cmVVbml0XSA9IFRleHR1cmVUeXBlOjpJbnZhbGlk
RW51bTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1BY3RpdmVTYW1w
bGVyRm9ybWF0c1t0ZXh0dXJlVW5pdF0gIT0gc2FtcGxlckJpbmRpbmcuZm9ybWF0KQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZVNhbXBsZXJGb3JtYXRzW3Rl
eHR1cmVVbml0XSA9IFNhbXBsZXJGb3JtYXQ6OkludmFsaWRFbnVtOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1BY3RpdmVTYW1wbGVyc01hc2suc2V0KHRl
eHR1cmVVbml0KTsKLSAgICAgICAgfQotICAgIH0KKyAgICBtRXhlY3V0YWJsZS5tQWN0aXZlU2Ft
cGxlclJlZkNvdW50cy5maWxsKDApOworICAgIG1FeGVjdXRhYmxlLnVwZGF0ZUFjdGl2ZVNhbXBs
ZXJzKG1TYW1wbGVyQmluZGluZ3MpOwogfQogCiB2b2lkIFByb2dyYW1TdGF0ZTo6dXBkYXRlQWN0
aXZlSW1hZ2VzKCkKIHsKLSAgICBmb3IgKEltYWdlQmluZGluZyAmaW1hZ2VCaW5kaW5nIDogbUlt
YWdlQmluZGluZ3MpCi0gICAgewotICAgICAgICBpZiAoaW1hZ2VCaW5kaW5nLnVucmVmZXJlbmNl
ZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGZvciAoR0xpbnQgaW1hZ2VVbml0
IDogaW1hZ2VCaW5kaW5nLmJvdW5kSW1hZ2VVbml0cykKLSAgICAgICAgewotICAgICAgICAgICAg
bUFjdGl2ZUltYWdlc01hc2suc2V0KGltYWdlVW5pdCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
bUV4ZWN1dGFibGUudXBkYXRlQWN0aXZlSW1hZ2VzKG1JbWFnZUJpbmRpbmdzKTsKIH0KIAogdm9p
ZCBQcm9ncmFtU3RhdGU6OnVwZGF0ZVByb2dyYW1JbnRlcmZhY2VJbnB1dHMoKQpAQCAtMTg1OSwx
NCArMTc4MCwxMSBAQCB2b2lkIFByb2dyYW1TdGF0ZTo6dXBkYXRlUHJvZ3JhbUludGVyZmFjZU91
dHB1dHMoKQogdm9pZCBQcm9ncmFtOjp1bmxpbmsoKQogewogICAgIG1TdGF0ZS5tUHJvZ3JhbUlu
cHV0cy5jbGVhcigpOwotICAgIG1TdGF0ZS5tQXR0cmlidXRlc1R5cGVNYXNrLnJlc2V0KCk7Ci0g
ICAgbVN0YXRlLm1BdHRyaWJ1dGVzTWFzay5yZXNldCgpOwotICAgIG1TdGF0ZS5tQWN0aXZlQXR0
cmliTG9jYXRpb25zTWFzay5yZXNldCgpOwotICAgIG1TdGF0ZS5tTWF4QWN0aXZlQXR0cmliTG9j
YXRpb24gPSAwOwogICAgIG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5j
bGVhcigpOwogICAgIG1TdGF0ZS5tVW5pZm9ybXMuY2xlYXIoKTsKICAgICBtU3RhdGUubVVuaWZv
cm1Mb2NhdGlvbnMuY2xlYXIoKTsKICAgICBtU3RhdGUubVVuaWZvcm1CbG9ja3MuY2xlYXIoKTsK
KyAgICBtU3RhdGUubUJ1ZmZlclZhcmlhYmxlcy5jbGVhcigpOwogICAgIG1TdGF0ZS5tU2hhZGVy
U3RvcmFnZUJsb2Nrcy5jbGVhcigpOwogICAgIG1TdGF0ZS5tQWN0aXZlVW5pZm9ybUJsb2NrQmlu
ZGluZ3MucmVzZXQoKTsKICAgICBtU3RhdGUubUF0b21pY0NvdW50ZXJCdWZmZXJzLmNsZWFyKCk7
CkBAIC0xODc5LDcgKzE3OTcsNiBAQCB2b2lkIFByb2dyYW06OnVubGluaygpCiAgICAgbVN0YXRl
Lm1Db21wdXRlU2hhZGVyTG9jYWxTaXplLmZpbGwoMSk7CiAgICAgbVN0YXRlLm1TYW1wbGVyQmlu
ZGluZ3MuY2xlYXIoKTsKICAgICBtU3RhdGUubUltYWdlQmluZGluZ3MuY2xlYXIoKTsKLSAgICBt
U3RhdGUubUFjdGl2ZUltYWdlc01hc2sucmVzZXQoKTsKICAgICBtU3RhdGUubU51bVZpZXdzICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IC0xOwogICAgIG1TdGF0ZS5tR2VvbWV0cnlTaGFkZXJJ
bnB1dFByaW1pdGl2ZVR5cGUgID0gUHJpbWl0aXZlTW9kZTo6VHJpYW5nbGVzOwogICAgIG1TdGF0
ZS5tR2VvbWV0cnlTaGFkZXJPdXRwdXRQcmltaXRpdmVUeXBlID0gUHJpbWl0aXZlTW9kZTo6VHJp
YW5nbGVTdHJpcDsKQEAgLTE4OTQsNyArMTgxMSw4IEBAIHZvaWQgUHJvZ3JhbTo6dW5saW5rKCkK
ICAgICBtVmFsaWRhdGVkID0gZmFsc2U7CiAKICAgICBtTGlua2VkID0gZmFsc2U7Ci0gICAgbUlu
Zm9Mb2cucmVzZXQoKTsKKworICAgIG1TdGF0ZS5tRXhlY3V0YWJsZS5yZXNldCgpOwogfQogCiBh
bmdsZTo6UmVzdWx0IFByb2dyYW06OmxvYWRCaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
QEAgLTE5MDIsNiArMTgyMCw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6bG9hZEJpbmFyeShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmJpbmFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGxlbmd0aCkKIHsKKyAgICBJbmZvTG9nICZpbmZvTG9nID0gbVN0YXRlLm1FeGVjdXRh
YmxlLmdldEluZm9Mb2coKTsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CiAgICAgdW5saW5r
KCk7CiAKQEAgLTE5MTEsMTIgKzE4MzAsMTIgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpsb2Fk
QmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgQVNTRVJUKGJpbmFyeUZvcm1hdCA9
PSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSk7CiAgICAgaWYgKGJpbmFyeUZvcm1hdCAhPSBHTF9Q
Uk9HUkFNX0JJTkFSWV9BTkdMRSkKICAgICB7Ci0gICAgICAgIG1JbmZvTG9nIDw8ICJJbnZhbGlk
IHByb2dyYW0gYmluYXJ5IGZvcm1hdC4iOworICAgICAgICBpbmZvTG9nIDw8ICJJbnZhbGlkIHBy
b2dyYW0gYmluYXJ5IGZvcm1hdC4iOwogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiAgICAgfQogCiAgICAgQmluYXJ5SW5wdXRTdHJlYW0gc3RyZWFtKGJpbmFyeSwgbGVu
Z3RoKTsKLSAgICBBTkdMRV9UUlkoZGVzZXJpYWxpemUoY29udGV4dCwgc3RyZWFtLCBtSW5mb0xv
ZykpOworICAgIEFOR0xFX1RSWShkZXNlcmlhbGl6ZShjb250ZXh0LCBzdHJlYW0sIGluZm9Mb2cp
KTsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSByZXF1aXJlIHRoZSBmdWxsIHNoYWRlciB0ZXh0IHRv
IGNvbXB1dGUgdGhlIHByb2dyYW0gaGFzaC4KICAgICAvLyBXZSBjb3VsZCBhbHNvIHN0b3JlIHRo
ZSBiaW5hcnkgaW4gdGhlIGludGVybmFsIHByb2dyYW0gY2FjaGUuCkBAIC0xOTI5LDcgKzE4NDgs
NyBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW06OmxvYWRCaW5hcnkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKIAogICAgIG1MaW5raW5nU3RhdGUucmVzZXQobmV3IExpbmtpbmdTdGF0ZSgpKTsKICAg
ICBtTGlua2luZ1N0YXRlLT5saW5raW5nRnJvbUJpbmFyeSA9IHRydWU7Ci0gICAgbUxpbmtpbmdT
dGF0ZS0+bGlua0V2ZW50ICAgICAgICAgPSBtUHJvZ3JhbS0+bG9hZChjb250ZXh0LCAmc3RyZWFt
LCBtSW5mb0xvZyk7CisgICAgbUxpbmtpbmdTdGF0ZS0+bGlua0V2ZW50ICAgICAgICAgPSBtUHJv
Z3JhbS0+bG9hZChjb250ZXh0LCAmc3RyZWFtLCBpbmZvTG9nKTsKICAgICBtTGlua1Jlc29sdmVk
ICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwpAQCAtMjA0NiwxOCArMTk2NSw2IEBAIHVuc2lnbmVkIGludCBQcm9ncmFtOjpn
ZXRSZWZDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1SZWZDb3VudDsKIH0KIAotaW50IFByb2dy
YW06OmdldEluZm9Mb2dMZW5ndGgoKSBjb25zdAotewotICAgIEFTU0VSVChtTGlua1Jlc29sdmVk
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtSW5mb0xvZy5nZXRMZW5ndGgoKSk7Ci19
Ci0KLXZvaWQgUHJvZ3JhbTo6Z2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgY2hhciAqaW5mb0xvZykgY29uc3QKLXsKLSAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7
Ci0gICAgcmV0dXJuIG1JbmZvTG9nLmdldExvZyhidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpOwot
fQotCiB2b2lkIFByb2dyYW06OmdldEF0dGFjaGVkU2hhZGVycyhHTHNpemVpIG1heENvdW50LCBH
THNpemVpICpjb3VudCwgU2hhZGVyUHJvZ3JhbUlEICpzaGFkZXJzKSBjb25zdAogewogICAgIEFT
U0VSVChtTGlua1Jlc29sdmVkKTsKQEAgLTIwODQsMTMgKzE5OTEsNiBAQCBHTHVpbnQgUHJvZ3Jh
bTo6Z2V0QXR0cmlidXRlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiAg
ICAgcmV0dXJuIG1TdGF0ZS5nZXRBdHRyaWJ1dGVMb2NhdGlvbihuYW1lKTsKIH0KIAotYm9vbCBQ
cm9ncmFtOjppc0F0dHJpYkxvY2F0aW9uQWN0aXZlKHNpemVfdCBhdHRyaWJMb2NhdGlvbikgY29u
c3QKLXsKLSAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgQVNTRVJUKGF0dHJpYkxvY2F0
aW9uIDwgbVN0YXRlLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrLnNpemUoKSk7Ci0gICAgcmV0
dXJuIG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFza1thdHRyaWJMb2NhdGlvbl07Ci19
Ci0KIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKQEAgLTI0MzUsMTIgKzIzMzUs
NyBAQCBjb25zdCBQcm9ncmFtQmluZGluZ3MgJlByb2dyYW06OmdldEF0dHJpYnV0ZUJpbmRpbmdz
KCkgY29uc3QKIGNvbnN0IFByb2dyYW1BbGlhc2VkQmluZGluZ3MgJlByb2dyYW06OmdldFVuaWZv
cm1Mb2NhdGlvbkJpbmRpbmdzKCkgY29uc3QKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7
Ci0gICAgcmV0dXJuIG1Vbmlmb3JtTG9jYXRpb25CaW5kaW5nczsKLX0KLWNvbnN0IFByb2dyYW1C
aW5kaW5ncyAmUHJvZ3JhbTo6Z2V0RnJhZ21lbnRJbnB1dEJpbmRpbmdzKCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgcmV0dXJuIG1GcmFnbWVudElucHV0QmluZGlu
Z3M7CisgICAgcmV0dXJuIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uQmluZGluZ3M7CiB9CiAKIENv
bXBvbmVudFR5cGVNYXNrIFByb2dyYW06OmdldERyYXdCdWZmZXJUeXBlTWFzaygpIGNvbnN0CkBA
IC0yNDQ4LDE2ICsyMzQzLDYgQEAgQ29tcG9uZW50VHlwZU1hc2sgUHJvZ3JhbTo6Z2V0RHJhd0J1
ZmZlclR5cGVNYXNrKCkgY29uc3QKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CiAgICAgcmV0
dXJuIG1TdGF0ZS5tRHJhd0J1ZmZlclR5cGVNYXNrOwogfQotQ29tcG9uZW50VHlwZU1hc2sgUHJv
Z3JhbTo6Z2V0QXR0cmlidXRlc1R5cGVNYXNrKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobUxpbmtS
ZXNvbHZlZCk7Ci0gICAgcmV0dXJuIG1TdGF0ZS5tQXR0cmlidXRlc1R5cGVNYXNrOwotfQotQXR0
cmlidXRlc01hc2sgUHJvZ3JhbTo6Z2V0QXR0cmlidXRlc01hc2soKSBjb25zdAotewotICAgIEFT
U0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICByZXR1cm4gbVN0YXRlLm1BdHRyaWJ1dGVzTWFzazsK
LX0KIAogY29uc3Qgc3RkOjp2ZWN0b3I8R0xzaXplaT4gJlByb2dyYW06OmdldFRyYW5zZm9ybUZl
ZWRiYWNrU3RyaWRlcygpIGNvbnN0CiB7CkBAIC0yNTc0LDI2ICsyNDU5LDI5IEBAIEdMaW50IFBy
b2dyYW06OmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHTGludD4obWF4TGVuZ3RoKTsKIH0KIAotYm9vbCBQcm9ncmFtOjppc1ZhbGlkVW5p
Zm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdAorYm9vbCBQcm9ncmFtOjppc1ZhbGlk
VW5pZm9ybUxvY2F0aW9uKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3QKIHsKICAgICBB
U1NFUlQobUxpbmtSZXNvbHZlZCk7CiAgICAgQVNTRVJUKGFuZ2xlOjpJc1ZhbHVlSW5SYW5nZUZv
ck51bWVyaWNUeXBlPEdMaW50PihtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKSk7Ci0g
ICAgcmV0dXJuIChsb2NhdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24p
IDwgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSAmJgotICAgICAgICAgICAgbVN0YXRl
Lm1Vbmlmb3JtTG9jYXRpb25zW3N0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pXS51c2VkKCkp
OworICAgIHJldHVybiAobG9jYXRpb24udmFsdWUgPj0gMCAmJgorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbi52YWx1ZSkgPCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMu
c2l6ZSgpICYmCisgICAgICAgICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbc3RhdGljX2Nh
c3Q8c2l6ZV90Pihsb2NhdGlvbi52YWx1ZSldLnVzZWQoKSk7CiB9CiAKLWNvbnN0IExpbmtlZFVu
aWZvcm0gJlByb2dyYW06OmdldFVuaWZvcm1CeUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25z
dAorY29uc3QgTGlua2VkVW5pZm9ybSAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUJ5TG9jYXRpb24oVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uKSBjb25zdAogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVk
KTsKLSAgICBBU1NFUlQobG9jYXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0
aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOworICAgIEFTU0VSVChsb2Nh
dGlvbi52YWx1ZSA+PSAwICYmCisgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRp
b24udmFsdWUpIDwgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSk7CiAgICAgcmV0dXJu
IG1TdGF0ZS5tVW5pZm9ybXNbbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21Mb2NhdGlvbihsb2Nh
dGlvbildOwogfQogCi1jb25zdCBWYXJpYWJsZUxvY2F0aW9uICZQcm9ncmFtOjpnZXRVbmlmb3Jt
TG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0Citjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZQ
cm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uKSBjb25z
dAogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBBU1NFUlQobG9jYXRpb24gPj0g
MCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0
aW9ucy5zaXplKCkpOwotICAgIHJldHVybiBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRp
b25dOworICAgIEFTU0VSVChsb2NhdGlvbi52YWx1ZSA+PSAwICYmCisgICAgICAgICAgIHN0YXRp
Y19jYXN0PHNpemVfdD4obG9jYXRpb24udmFsdWUpIDwgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25z
LnNpemUoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52
YWx1ZV07CiB9CiAKIGNvbnN0IEJ1ZmZlclZhcmlhYmxlICZQcm9ncmFtOjpnZXRCdWZmZXJWYXJp
YWJsZUJ5SW5kZXgoR0x1aW50IGluZGV4KSBjb25zdApAQCAtMjYwMywxMCArMjQ5MSwxMCBAQCBj
b25zdCBCdWZmZXJWYXJpYWJsZSAmUHJvZ3JhbTo6Z2V0QnVmZmVyVmFyaWFibGVCeUluZGV4KEdM
dWludCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gbVN0YXRlLm1CdWZmZXJWYXJpYWJsZXNbaW5k
ZXhdOwogfQogCi1HTGludCBQcm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpIGNvbnN0CitVbmlmb3JtTG9jYXRpb24gUHJvZ3JhbTo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogewogICAgIEFTU0VSVChtTGlu
a1Jlc29sdmVkKTsKLSAgICByZXR1cm4gR2V0VmFyaWFibGVMb2NhdGlvbihtU3RhdGUubVVuaWZv
cm1zLCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMsIG5hbWUpOworICAgIHJldHVybiB7R2V0VmFy
aWFibGVMb2NhdGlvbihtU3RhdGUubVVuaWZvcm1zLCBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnMs
IG5hbWUpfTsKIH0KIAogR0x1aW50IFByb2dyYW06OmdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSkgY29uc3QKQEAgLTI2MTUsNDUgKzI1MDMsODggQEAgR0x1aW50IFByb2dy
YW06OmdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21OYW1lKG5hbWUpOwogfQogCi12b2lkIFBy
b2dyYW06OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpCitib29sIFByb2dyYW06OnNob3VsZElnbm9yZVVuaWZvcm0oVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uKSBjb25zdAoreworICAgIGlmIChsb2NhdGlvbi52YWx1ZSA9PSAtMSkK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChtU3RhdGUubVVu
aWZvcm1Mb2NhdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbi52YWx1ZSldLmlnbm9y
ZWQpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTFmdihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgQVNTRVJUKG1M
aW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9
IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgaWYgKHNob3VsZElnbm9y
ZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxv
Y2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgICAgICAg
ICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZvLCBjb3VudCwgMSwgdik7
Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0xZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7
CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0xZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3Vu
dCwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9y
bTJmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxl
TG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlv
bl07CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9u
SW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAgR0xz
aXplaSBjbGFtcGVkQ291bnQgICAgICAgICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQobG9j
YXRpb25JbmZvLCBjb3VudCwgMiwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9j
YXRpb24sIGNsYW1wZWRDb3VudCwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9j
YXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikK
K3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTNmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2
ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5t
VW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0o
bG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFZh
cmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1ts
b2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgICAgICAgICAgICAgICAg
ID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZvLCBjb3VudCwgMywgdik7Ci0gICAgbVBy
b2dyYW0tPnNldFVuaWZvcm0zZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7CisgICAgbVBy
b2dyYW0tPnNldFVuaWZvcm0zZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdik7CiB9
CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTRmdihVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7
CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24g
JmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAg
aWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1T
dGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFt
cGVkQ291bnQgICAgICAgICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZv
LCBjb3VudCwgNCwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm00ZnYobG9jYXRpb24sIGNs
YW1wZWRDb3VudCwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm00ZnYobG9jYXRpb24udmFs
dWUsIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTFpdihD
b250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnYpCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqdikKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7
Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlm
b3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBpZiAoc2hvdWxkSWdub3JlVW5pZm9ybShsb2Nh
dGlvbikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgVmFyaWFi
bGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0
aW9uLnZhbHVlXTsKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCAgICAgICAgICAgICAgICAgPSBj
bGFtcFVuaWZvcm1Db3VudChsb2NhdGlvbkluZm8sIGNvdW50LCAxLCB2KTsKIAotICAgIG1Qcm9n
cmFtLT5zZXRVbmlmb3JtMWl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9n
cmFtLT5zZXRVbmlmb3JtMWl2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogCiAg
ICAgaWYgKG1TdGF0ZS5pc1NhbXBsZXJVbmlmb3JtSW5kZXgobG9jYXRpb25JbmZvLmluZGV4KSkK
ICAgICB7CkBAIC0yNjYxLDE1MCArMjU5MiwyMzAgQEAgdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3Jt
MWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb24K
ICAgICB9CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0y
aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dikKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgY29uc3QgVmFyaWFibGVMb2Nh
dGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsK
KyAgICBpZiAoc2hvdWxkSWdub3JlVW5pZm9ybShsb2NhdGlvbikpCisgICAgeworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZv
ID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uLnZhbHVlXTsKICAgICBHTHNpemVp
IGNsYW1wZWRDb3VudCAgICAgICAgICAgICAgICAgPSBjbGFtcFVuaWZvcm1Db3VudChsb2NhdGlv
bkluZm8sIGNvdW50LCAyLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJpdihsb2NhdGlv
biwgY2xhbXBlZENvdW50LCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJpdihsb2NhdGlv
bi52YWx1ZSwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3Jt
M2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3ZvaWQg
UHJvZ3JhbTo6c2V0VW5pZm9ybTNpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAg
ICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1M
b2NhdGlvbnNbbG9jYXRpb25dOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9u
KSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxv
Y2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24u
dmFsdWVdOwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1w
VW5pZm9ybUNvdW50KGxvY2F0aW9uSW5mbywgY291bnQsIDMsIHYpOwotICAgIG1Qcm9ncmFtLT5z
ZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5z
ZXRVbmlmb3JtM2l2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCi12b2lk
IFByb2dyYW06OnNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50ICp2KQordm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtNGl2KFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgQVNTRVJU
KG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5m
byA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgaWYgKHNob3VsZEln
bm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9y
bUxvY2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgICAg
ICAgICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZvLCBjb3VudCwgNCwg
dik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm00aXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwg
dik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm00aXYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRD
b3VudCwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybTF1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlh
YmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2Nh
dGlvbl07CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0
aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbi52YWx1ZV07CiAgICAg
R0xzaXplaSBjbGFtcGVkQ291bnQgICAgICAgICAgICAgICAgID0gY2xhbXBVbmlmb3JtQ291bnQo
bG9jYXRpb25JbmZvLCBjb3VudCwgMSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0xdWl2
KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtMXVp
dihsb2NhdGlvbi52YWx1ZSwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpz
ZXRVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2KQordm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtMnVpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKICAgICBBU1NFUlQobUxpbmtS
ZXNvbHZlZCk7Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0
YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBpZiAoc2hvdWxkSWdub3JlVW5p
Zm9ybShsb2NhdGlvbikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29u
c3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRp
b25zW2xvY2F0aW9uLnZhbHVlXTsKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCAgICAgICAgICAg
ICAgICAgPSBjbGFtcFVuaWZvcm1Db3VudChsb2NhdGlvbkluZm8sIGNvdW50LCAyLCB2KTsKLSAg
ICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJ1aXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7Cisg
ICAgbVByb2dyYW0tPnNldFVuaWZvcm0ydWl2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQs
IHYpOwogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0z
dWl2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJsZUxv
Y2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25d
OworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbklu
Zm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFsdWVdOwogICAgIEdMc2l6
ZWkgY2xhbXBlZENvdW50ICAgICAgICAgICAgICAgICA9IGNsYW1wVW5pZm9ybUNvdW50KGxvY2F0
aW9uSW5mbywgY291bnQsIDMsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM3Vpdihsb2Nh
dGlvbiwgY2xhbXBlZENvdW50LCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTN1aXYobG9j
YXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybTR1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikK
K3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTR1aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2
ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5t
VW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0o
bG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFZh
cmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1ts
b2NhdGlvbi52YWx1ZV07CiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgICAgICAgICAgICAgICAg
ID0gY2xhbXBVbmlmb3JtQ291bnQobG9jYXRpb25JbmZvLCBjb3VudCwgNCwgdik7Ci0gICAgbVBy
b2dyYW0tPnNldFVuaWZvcm00dWl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOworICAgIG1Q
cm9ncmFtLT5zZXRVbmlmb3JtNHVpdihsb2NhdGlvbi52YWx1ZSwgY2xhbXBlZENvdW50LCB2KTsK
IH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLAor
dm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBB
U1NFUlQobUxpbmtSZXNvbHZlZCk7CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRp
b24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEdMc2l6ZWkgY2xhbXBl
ZENvdW50ID0gY2xhbXBNYXRyaXhVbmlmb3JtQ291bnQ8MiwgMj4obG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9u
LCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0K
IAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLAordm9p
ZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M2Z2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBBU1NF
UlQobUxpbmtSZXNvbHZlZCk7CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24p
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEdMc2l6ZWkgY2xhbXBlZENv
dW50ID0gY2xhbXBNYXRyaXhVbmlmb3JtQ291bnQ8MywgMz4obG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBj
bGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAot
dm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLAordm9pZCBQ
cm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4NGZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBBU1NFUlQo
bUxpbmtSZXNvbHZlZCk7CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50
ID0gY2xhbXBNYXRyaXhVbmlmb3JtQ291bnQ8NCwgND4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBjbGFt
cGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9p
ZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIFBy
b2dyYW06OnNldFVuaWZvcm1NYXRyaXgyeDNmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAg
QVNTRVJUKG1MaW5rUmVzb2x2ZWQpOworICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0
aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBHTHNpemVpIGNsYW1w
ZWRDb3VudCA9IGNsYW1wTWF0cml4VW5pZm9ybUNvdW50PDIsIDM+KGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0
aW9uLCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZv
cm1NYXRyaXgyeDNmdihsb2NhdGlvbi52YWx1ZSwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYp
OwogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgyeDRmdihHTGludCBsb2NhdGlv
biwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dikKIHsKICAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CisgICAgaWYgKHNob3VsZElnbm9yZVVu
aWZvcm0obG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEdM
c2l6ZWkgY2xhbXBlZENvdW50ID0gY2xhbXBNYXRyaXhVbmlmb3JtQ291bnQ8MiwgND4obG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4
Mng0ZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBtUHJvZ3Jh
bS0+c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHRy
YW5zcG9zZSwgdik7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KEdM
aW50IGxvY2F0aW9uLAordm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M3gyZnYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2KQogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKKyAgICBpZiAoc2hv
dWxkSWdub3JlVW5pZm9ybShsb2NhdGlvbikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBjbGFtcE1hdHJpeFVuaWZvcm1Db3VudDwz
LCAyPihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVu
aWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwor
ICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24udmFsdWUsIGNsYW1w
ZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0
cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCit2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgz
eDRmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgQVNTRVJUKG1MaW5rUmVzb2x2ZWQpOwor
ICAgIGlmIChzaG91bGRJZ25vcmVVbmlmb3JtKGxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IGNsYW1wTWF0cml4VW5p
Zm9ybUNvdW50PDMsIDQ+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJv
Z3JhbS0+c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHRyYW5z
cG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbi52
YWx1ZSwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwogfQogCi12b2lkIFByb2dyYW06OnNl
dFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwKK3ZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybU1hdHJpeDR4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBBU1NFUlQobUxpbmtS
ZXNvbHZlZCk7CisgICAgaWYgKHNob3VsZElnbm9yZVVuaWZvcm0obG9jYXRpb24pKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gY2xh
bXBNYXRyaXhVbmlmb3JtQ291bnQ8NCwgMj4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYp
OwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIGNsYW1wZWRD
b3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLnZhbHVlLCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKLXZvaWQg
UHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLAordm9pZCBQcm9n
cmFtOjpzZXRVbmlmb3JtTWF0cml4NHgzZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIEFT
U0VSVChtTGlua1Jlc29sdmVkKTsKKyAgICBpZiAoc2hvdWxkSWdub3JlVW5pZm9ybShsb2NhdGlv
bikpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgR0xzaXplaSBjbGFtcGVk
Q291bnQgPSBjbGFtcE1hdHJpeFVuaWZvcm1Db3VudDw0LCAzPihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlv
biwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3Jt
TWF0cml4NHgzZnYobG9jYXRpb24udmFsdWUsIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsK
IH0KIAogR0x1aW50IFByb2dyYW06OmdldFNhbXBsZXJVbmlmb3JtQmluZGluZyhjb25zdCBWYXJp
YWJsZUxvY2F0aW9uICZ1bmlmb3JtTG9jYXRpb24pIGNvbnN0CkBAIC0yODI0LDEwICsyODM1LDEw
IEBAIEdMdWludCBQcm9ncmFtOjpnZXRJbWFnZVVuaWZvcm1CaW5kaW5nKGNvbnN0IFZhcmlhYmxl
TG9jYXRpb24gJnVuaWZvcm1Mb2NhdGlvbikKICAgICByZXR1cm4gYm91bmRJbWFnZVVuaXRzW3Vu
aWZvcm1Mb2NhdGlvbi5hcnJheUluZGV4XTsKIH0KIAotdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3Jt
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgKnYpIGNv
bnN0Cit2b2lkIFByb2dyYW06OmdldFVuaWZvcm1mdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZmxvYXQgKnYpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG1MaW5rUmVzb2x2ZWQpOwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJnVuaWZvcm1Mb2Nh
dGlvbiA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dOworICAgIGNvbnN0
IFZhcmlhYmxlTG9jYXRpb24gJnVuaWZvcm1Mb2NhdGlvbiA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9j
YXRpb25zKClbbG9jYXRpb24udmFsdWVdOwogICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZv
cm0gICAgICAgICAgICA9IG1TdGF0ZS5nZXRVbmlmb3JtcygpW3VuaWZvcm1Mb2NhdGlvbi5pbmRl
eF07CiAKICAgICBpZiAodW5pZm9ybS5pc1NhbXBsZXIoKSkKQEAgLTI4NDQsNyArMjg1NSw3IEBA
IHZvaWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50
IGxvY2F0aW9uLCBHTGZsb2F0ICp2KSBjCiAgICAgY29uc3QgR0xlbnVtIG5hdGl2ZVR5cGUgPSBn
bDo6VmFyaWFibGVDb21wb25lbnRUeXBlKHVuaWZvcm0udHlwZSk7CiAgICAgaWYgKG5hdGl2ZVR5
cGUgPT0gR0xfRkxPQVQpCiAgICAgewotICAgICAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWZ2KGNv
bnRleHQsIGxvY2F0aW9uLCB2KTsKKyAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm1mdihjb250
ZXh0LCBsb2NhdGlvbi52YWx1ZSwgdik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0yODUy
LDEwICsyODYzLDEwIEBAIHZvaWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybWZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0ICp2KSBjCiAgICAgfQogfQogCi12b2lk
IFByb2dyYW06OmdldFVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2Nh
dGlvbiwgR0xpbnQgKnYpIGNvbnN0Cit2b2lkIFByb2dyYW06OmdldFVuaWZvcm1pdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMaW50ICp2KSBjb25z
dAogewogICAgIEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICBjb25zdCBWYXJpYWJsZUxvY2F0
aW9uICZ1bmlmb3JtTG9jYXRpb24gPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0
aW9uXTsKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZ1bmlmb3JtTG9jYXRpb24gPSBtU3Rh
dGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0aW9uLnZhbHVlXTsKICAgICBjb25zdCBMaW5r
ZWRVbmlmb3JtICZ1bmlmb3JtICAgICAgICAgICAgPSBtU3RhdGUuZ2V0VW5pZm9ybXMoKVt1bmlm
b3JtTG9jYXRpb24uaW5kZXhdOwogCiAgICAgaWYgKHVuaWZvcm0uaXNTYW1wbGVyKCkpCkBAIC0y
ODcyLDcgKzI4ODMsNyBAQCB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1pdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnYpIGNvbgogICAgIGNvbnN0IEdMZW51
bSBuYXRpdmVUeXBlID0gZ2w6OlZhcmlhYmxlQ29tcG9uZW50VHlwZSh1bmlmb3JtLnR5cGUpOwog
ICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCB8fCBuYXRpdmVUeXBlID09IEdMX0JPT0wpCiAg
ICAgewotICAgICAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWl2KGNvbnRleHQsIGxvY2F0aW9uLCB2
KTsKKyAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm1pdihjb250ZXh0LCBsb2NhdGlvbi52YWx1
ZSwgdik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0yODgwLDEwICsyODkxLDEwIEBAIHZv
aWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxv
Y2F0aW9uLCBHTGludCAqdikgY29uCiAgICAgfQogfQogCi12b2lkIFByb2dyYW06OmdldFVuaWZv
cm11aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqdikg
Y29uc3QKK3ZvaWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMdWludCAqdikgY29uc3QKIHsKICAgICBBU1NF
UlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmdW5pZm9ybUxv
Y2F0aW9uID0gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl07CisgICAgY29u
c3QgVmFyaWFibGVMb2NhdGlvbiAmdW5pZm9ybUxvY2F0aW9uID0gbVN0YXRlLmdldFVuaWZvcm1M
b2NhdGlvbnMoKVtsb2NhdGlvbi52YWx1ZV07CiAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5p
Zm9ybSAgICAgICAgICAgID0gbVN0YXRlLmdldFVuaWZvcm1zKClbdW5pZm9ybUxvY2F0aW9uLmlu
ZGV4XTsKIAogICAgIGlmICh1bmlmb3JtLmlzU2FtcGxlcigpKQpAQCAtMjkwMCw3ICsyOTExLDcg
QEAgdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
aW50IGxvY2F0aW9uLCBHTHVpbnQgKnYpIGMKICAgICBjb25zdCBHTGVudW0gbmF0aXZlVHlwZSA9
IFZhcmlhYmxlQ29tcG9uZW50VHlwZSh1bmlmb3JtLnR5cGUpOwogICAgIGlmIChuYXRpdmVUeXBl
ID09IEdMX1VOU0lHTkVEX0lOVCkKICAgICB7Ci0gICAgICAgIG1Qcm9ncmFtLT5nZXRVbmlmb3Jt
dWl2KGNvbnRleHQsIGxvY2F0aW9uLCB2KTsKKyAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm11
aXYoY29udGV4dCwgbG9jYXRpb24udmFsdWUsIHYpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpA
QCAtMjkyMywyOCArMjkzNCwzMCBAQCBib29sIFByb2dyYW06OmlzRmxhZ2dlZEZvckRlbGV0aW9u
KCkgY29uc3QKIHZvaWQgUHJvZ3JhbTo6dmFsaWRhdGUoY29uc3QgQ2FwcyAmY2FwcykKIHsKICAg
ICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7Ci0gICAgbUluZm9Mb2cucmVzZXQoKTsKKyAgICBtU3Rh
dGUubUV4ZWN1dGFibGUucmVzZXRJbmZvTG9nKCk7CisgICAgSW5mb0xvZyAmaW5mb0xvZyA9IG1T
dGF0ZS5tRXhlY3V0YWJsZS5nZXRJbmZvTG9nKCk7CiAKICAgICBpZiAobUxpbmtlZCkKICAgICB7
Ci0gICAgICAgIG1WYWxpZGF0ZWQgPSBDb252ZXJ0VG9Cb29sKG1Qcm9ncmFtLT52YWxpZGF0ZShj
YXBzLCAmbUluZm9Mb2cpKTsKKyAgICAgICAgbVZhbGlkYXRlZCA9IENvbnZlcnRUb0Jvb2wobVBy
b2dyYW0tPnZhbGlkYXRlKGNhcHMsICZpbmZvTG9nKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIG1JbmZvTG9nIDw8ICJQcm9ncmFtIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkg
bGlua2VkLiI7CisgICAgICAgIGluZm9Mb2cgPDwgIlByb2dyYW0gaGFzIG5vdCBiZWVuIHN1Y2Nl
c3NmdWxseSBsaW5rZWQuIjsKICAgICB9CiB9CiAKIGJvb2wgUHJvZ3JhbTo6dmFsaWRhdGVTYW1w
bGVyc0ltcGwoSW5mb0xvZyAqaW5mb0xvZywgY29uc3QgQ2FwcyAmY2FwcykKIHsKKyAgICBjb25z
dCBQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSA9IG1TdGF0ZS5tRXhlY3V0YWJsZTsKICAg
ICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CiAKICAgICAvLyBpZiBhbnkgdHdvIGFjdGl2ZSBzYW1w
bGVycyBpbiBhIHByb2dyYW0gYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYnV0IHJlZmVyIHRvIHRo
ZSBzYW1lCiAgICAgLy8gdGV4dHVyZSBpbWFnZSB1bml0LCBhbmQgdGhpcyBpcyB0aGUgY3VycmVu
dCBwcm9ncmFtLCB0aGVuIFZhbGlkYXRlUHJvZ3JhbSB3aWxsIGZhaWwsIGFuZAogICAgIC8vIERy
YXdBcnJheXMgYW5kIERyYXdFbGVtZW50cyB3aWxsIGlzc3VlIHRoZSBJTlZBTElEX09QRVJBVElP
TiBlcnJvci4KLSAgICBmb3IgKHNpemVfdCB0ZXh0dXJlVW5pdCA6IG1TdGF0ZS5tQWN0aXZlU2Ft
cGxlcnNNYXNrKQorICAgIGZvciAoc2l6ZV90IHRleHR1cmVVbml0IDogZXhlY3V0YWJsZS5tQWN0
aXZlU2FtcGxlcnNNYXNrKQogICAgIHsKLSAgICAgICAgaWYgKG1TdGF0ZS5tQWN0aXZlU2FtcGxl
clR5cGVzW3RleHR1cmVVbml0XSA9PSBUZXh0dXJlVHlwZTo6SW52YWxpZEVudW0pCisgICAgICAg
IGlmIChleGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyVHlwZXNbdGV4dHVyZVVuaXRdID09IFRleHR1
cmVUeXBlOjpJbnZhbGlkRW51bSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGluZm9Mb2cp
CiAgICAgICAgICAgICB7CkBAIC0zMjU5LDcgKzMyNzIsNyBAQCBib29sIFByb2dyYW06OmxpbmtW
YWxpZGF0ZVNoYWRlcnMoSW5mb0xvZyAmaW5mb0xvZykKICAgICAgICAgICAgIGlmICh2ZXJ0ZXhT
aGFkZXIgJiYKICAgICAgICAgICAgICAgICAoZ2VvbWV0cnlTaGFkZXItPmdldFNoYWRlclZlcnNp
b24oKSAhPSB2ZXJ0ZXhTaGFkZXItPmdldFNoYWRlclZlcnNpb24oKSkpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbUluZm9Mb2cgPDwgIkdlb21ldHJ5IHNoYWRlciB2ZXJzaW9uIGRv
ZXMgbm90IG1hdGNoIHZlcnRleCBzaGFkZXIgdmVyc2lvbi4iOworICAgICAgICAgICAgICAgIGlu
Zm9Mb2cgPDwgIkdlb21ldHJ5IHNoYWRlciB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHZlcnRleCBz
aGFkZXIgdmVyc2lvbi4iOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIEFTU0VSVChnZW9tZXRyeVNoYWRlci0+Z2V0VHlwZSgpID09IFNo
YWRlclR5cGU6Okdlb21ldHJ5KTsKQEAgLTMyNjgsNyArMzI4MSw3IEBAIGJvb2wgUHJvZ3JhbTo6
bGlua1ZhbGlkYXRlU2hhZGVycyhJbmZvTG9nICZpbmZvTG9nKQogICAgICAgICAgICAgICAgIGdl
b21ldHJ5U2hhZGVyLT5nZXRHZW9tZXRyeVNoYWRlcklucHV0UHJpbWl0aXZlVHlwZSgpOwogICAg
ICAgICAgICAgaWYgKCFpbnB1dFByaW1pdGl2ZS52YWxpZCgpKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIG1JbmZvTG9nIDw8ICJJbnB1dCBwcmltaXRpdmUgdHlwZSBpcyBub3Qgc3Bl
Y2lmaWVkIGluIHRoZSBnZW9tZXRyeSBzaGFkZXIuIjsKKyAgICAgICAgICAgICAgICBpbmZvTG9n
IDw8ICJJbnB1dCBwcmltaXRpdmUgdHlwZSBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBnZW9tZXRy
eSBzaGFkZXIuIjsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAKQEAgLTMyNzYsMTQgKzMyODksMTQgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVTaGFk
ZXJzKEluZm9Mb2cgJmluZm9Mb2cpCiAgICAgICAgICAgICAgICAgZ2VvbWV0cnlTaGFkZXItPmdl
dEdlb21ldHJ5U2hhZGVyT3V0cHV0UHJpbWl0aXZlVHlwZSgpOwogICAgICAgICAgICAgaWYgKCFv
dXRwdXRQcmltaXRpdmUudmFsaWQoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBt
SW5mb0xvZyA8PCAiT3V0cHV0IHByaW1pdGl2ZSB0eXBlIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhl
IGdlb21ldHJ5IHNoYWRlci4iOworICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIk91dHB1dCBw
cmltaXRpdmUgdHlwZSBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBnZW9tZXRyeSBzaGFkZXIuIjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIE9wdGlvbmFsPEdMaW50PiBtYXhWZXJ0aWNlcyA9IGdlb21ldHJ5U2hhZGVyLT5nZXRHZW9t
ZXRyeVNoYWRlck1heFZlcnRpY2VzKCk7CiAgICAgICAgICAgICBpZiAoIW1heFZlcnRpY2VzLnZh
bGlkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUluZm9Mb2cgPDwgIidtYXhf
dmVydGljZXMnIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGdlb21ldHJ5IHNoYWRlci4iOworICAg
ICAgICAgICAgICAgIGluZm9Mb2cgPDwgIidtYXhfdmVydGljZXMnIGlzIG5vdCBzcGVjaWZpZWQg
aW4gdGhlIGdlb21ldHJ5IHNoYWRlci4iOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KIApAQCAtMzM5NCwxMSArMzQwNyw2IEBAIGJvb2wgUHJvZ3JhbTo6bGlu
a1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWxpbmtWYWxpZGF0ZUZyYWdtZW50SW5wdXRCaW5kaW5ncyhpbmZv
TG9nKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMzQ3Myw0NCArMzQ4MSw2IEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlk
YXRlU2hhZGVySW50ZXJmYWNlTWF0Y2hpbmcoZ2w6OlNoYWRlciAqZ2VuZXJhdGluZ1NoYWRlciwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVGcmFnbWVu
dElucHV0QmluZGluZ3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0Ci17Ci0gICAgc3RkOjpt
YXA8R0x1aW50LCBzdGQ6OnN0cmluZz4gc3RhdGljRnJhZ21lbnRJbnB1dExvY2F0aW9uczsKLQot
ICAgIFNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUubUF0dGFjaGVkU2hhZGVyc1tTaGFk
ZXJUeXBlOjpGcmFnbWVudF07Ci0KLSAgICBpZiAoIWZyYWdtZW50U2hhZGVyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgZm9yIChjb25zdCBzaDo6U2hhZGVyVmFy
aWFibGUgJmlucHV0IDogZnJhZ21lbnRTaGFkZXItPmdldElucHV0VmFyeWluZ3MoKSkKLSAgICB7
Ci0gICAgICAgIGlmIChpbnB1dC5pc0J1aWx0SW4oKSB8fCAhaW5wdXQuc3RhdGljVXNlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0
IGF1dG8gaW5wdXRCaW5kaW5nID0gbUZyYWdtZW50SW5wdXRCaW5kaW5ncy5nZXRCaW5kaW5nKGlu
cHV0KTsKLSAgICAgICAgaWYgKGlucHV0QmluZGluZyA9PSAtMSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGNvbnN0IGF1dG8gaXQgPSBzdGF0aWNGcmFnbWVudElucHV0TG9jYXRp
b25zLmZpbmQoaW5wdXRCaW5kaW5nKTsKLSAgICAgICAgaWYgKGl0ID09IHN0ZDo6ZW5kKHN0YXRp
Y0ZyYWdtZW50SW5wdXRMb2NhdGlvbnMpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWNG
cmFnbWVudElucHV0TG9jYXRpb25zLmluc2VydChzdGQ6Om1ha2VfcGFpcihpbnB1dEJpbmRpbmcs
IGlucHV0Lm5hbWUpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGluZm9Mb2cgPDwgIkJpbmRpbmcgZm9yIGZyYWdtZW50IGlucHV0ICIgPDwgaW5wdXQu
bmFtZSA8PCAiIGNvbmZsaWN0cyB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgPDwgaXQtPnNl
Y29uZDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCiBib29sIFByb2dyYW06OmxpbmtVbmlmb3Jtcyhjb25zdCBDYXBz
ICZjYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVyc2lvbiAmdmVyc2lv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2csCkBAIC0zNzc2
LDggKzM3NDYsOCBAQCBib29sIFByb2dyYW06OmxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEluZm9Mb2cgJmluZm9Mb2cpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NF
UlQobVN0YXRlLm1BdHRyaWJ1dGVzVHlwZU1hc2subm9uZSgpKTsKLSAgICBBU1NFUlQobVN0YXRl
Lm1BdHRyaWJ1dGVzTWFzay5ub25lKCkpOworICAgIEFTU0VSVChtU3RhdGUubUV4ZWN1dGFibGUu
bUF0dHJpYnV0ZXNUeXBlTWFzay5ub25lKCkpOworICAgIEFTU0VSVChtU3RhdGUubUV4ZWN1dGFi
bGUubUF0dHJpYnV0ZXNNYXNrLm5vbmUoKSk7CiAKICAgICAvLyBQcnVuZSBpbmFjdGl2ZSBhdHRy
aWJ1dGVzLiBUaGlzIHN0ZXAgaXMgb25seSBuZWVkZWQgb24gc2hhZGVyVmVyc2lvbiA+PSAzMDAg
c2luY2Ugb24gZWFybGllcgogICAgIC8vIHNoYWRlciB2ZXJzaW9ucyB3ZSdyZSBvbmx5IHByb2Nl
c3NpbmcgYWN0aXZlIGF0dHJpYnV0ZXMgdG8gYmVnaW4gd2l0aC4KQEAgLTM4MDksMTUgKzM3Nzks
MTYgQEAgYm9vbCBQcm9ncmFtOjpsaW5rQXR0cmlidXRlcyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBJbmZvTG9nICZpbmZvTG9nKQogICAgICAgICAgICAgLy8gQnVpbHQtaW4gYWN0aXZlIHByb2dy
YW0gaW5wdXRzIGRvbid0IGhhdmUgYSBib3VuZCBhdHRyaWJ1dGUuCiAgICAgICAgICAgICBpZiAo
IWF0dHJpYnV0ZS5pc0J1aWx0SW4oKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBt
U3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2suc2V0KGxvY2F0aW9uKTsKLSAgICAgICAg
ICAgICAgICBtU3RhdGUubU1heEFjdGl2ZUF0dHJpYkxvY2F0aW9uID0KLSAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYXgobVN0YXRlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbiwgbG9jYXRpb24g
KyAxKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubUV4ZWN1dGFibGUubUFjdGl2ZUF0dHJpYkxv
Y2F0aW9uc01hc2suc2V0KGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubUV4ZWN1
dGFibGUubU1heEFjdGl2ZUF0dHJpYkxvY2F0aW9uID0KKyAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYXgobVN0YXRlLm1FeGVjdXRhYmxlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbiwgbG9jYXRp
b24gKyAxKTsKIAogICAgICAgICAgICAgICAgIENvbXBvbmVudFR5cGUgY29tcG9uZW50VHlwZSA9
CiAgICAgICAgICAgICAgICAgICAgIEdMZW51bVRvQ29tcG9uZW50VHlwZShWYXJpYWJsZUNvbXBv
bmVudFR5cGUoYXR0cmlidXRlLnR5cGUpKTsKIAotICAgICAgICAgICAgICAgIFNldENvbXBvbmVu
dFR5cGVNYXNrKGNvbXBvbmVudFR5cGUsIGxvY2F0aW9uLCAmbVN0YXRlLm1BdHRyaWJ1dGVzVHlw
ZU1hc2spOwotICAgICAgICAgICAgICAgIG1TdGF0ZS5tQXR0cmlidXRlc01hc2suc2V0KGxvY2F0
aW9uKTsKKyAgICAgICAgICAgICAgICBTZXRDb21wb25lbnRUeXBlTWFzayhjb21wb25lbnRUeXBl
LCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVN0YXRl
Lm1FeGVjdXRhYmxlLm1BdHRyaWJ1dGVzVHlwZU1hc2spOworICAgICAgICAgICAgICAgIG1TdGF0
ZS5tRXhlY3V0YWJsZS5tQXR0cmlidXRlc01hc2suc2V0KGxvY2F0aW9uKTsKIAogICAgICAgICAg
ICAgICAgIGxvY2F0aW9uKys7CiAgICAgICAgICAgICB9CkBAIC00MTA3LDYgKzQwNzgsNyBAQCBi
b29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZUJ1aWx0SW5WYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9n
KSBjb25zdAogYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb25z
dCBWZXJzaW9uICZ2ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJUeXBlIHN0YWdl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYXBz
ICZjYXBzKSBjb25zdAogewogCkBAIC00MTQ3LDcgKzQxMTksNyBAQCBib29sIFByb2dyYW06Omxp
bmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IFZlcnNpb24gJnZlcnNpb24sCiAgICAg
ICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gc3Vic2NyaXB0czsKICAgICAgICAgc3RkOjpz
dHJpbmcgYmFzZU5hbWUgPSBQYXJzZVJlc291cmNlTmFtZSh0ZlZhcnlpbmdOYW1lLCAmc3Vic2Ny
aXB0cyk7CiAKLSAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXIgPSBGaW5kVmFy
eWluZ09yRmllbGQodmFyeWluZ3MsIGJhc2VOYW1lKTsKKyAgICAgICAgY29uc3Qgc2g6OlNoYWRl
clZhcmlhYmxlICp2YXIgPSBGaW5kT3V0cHV0VmFyeWluZ09yRmllbGQodmFyeWluZ3MsIHN0YWdl
LCBiYXNlTmFtZSk7CiAgICAgICAgIGlmICh2YXIgPT0gbnVsbHB0cikKICAgICAgICAgewogICAg
ICAgICAgICAgaW5mb0xvZyA8PCAiVHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmcgIiA8PCB0ZlZh
cnlpbmdOYW1lCkBAIC00MzI4LDcgKzQzMDAsOCBAQCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0
ZUdsb2JhbE5hbWVzKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBQ
cm9ncmFtTWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzKQordm9pZCBQcm9ncmFtOjpnYXRoZXJUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyAmdmFyeWlu
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
VHlwZSBzdGFnZSkKIHsKICAgICAvLyBHYXRoZXIgdGhlIGxpbmtlZCB2YXJ5aW5ncyB0aGF0IGFy
ZSB1c2VkIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2ssIHRoZXkgc2hvdWxkIGFsbCBleGlzdC4KICAg
ICBtU3RhdGUubUxpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MuY2xlYXIoKTsKQEAgLTQz
NDEsOSArNDMxNCwxNCBAQCB2b2lkIFByb2dyYW06OmdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ3MoY29uc3QgUHJvZ3JhbU1lcmdlZFZhcnlpbmdzICZ2YXJ5aQogICAgICAgICB7CiAgICAg
ICAgICAgICBzdWJzY3JpcHQgPSBzdWJzY3JpcHRzLmJhY2soKTsKICAgICAgICAgfQotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8gJnJlZiA6IHZhcnlpbmdzKQorICAgICAgICBmb3IgKGNvbnN0IFBy
b2dyYW1WYXJ5aW5nUmVmICZyZWYgOiB2YXJ5aW5ncykKICAgICAgICAgewotICAgICAgICAgICAg
Y29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXJ5aW5nID0gcmVmLnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgICAgIGlmIChyZWYuZnJvbnRTaGFkZXJTdGFnZSAhPSBzdGFnZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICp2YXJ5aW5nID0gcmVmLmdldChzdGFnZSk7CiAg
ICAgICAgICAgICBpZiAoYmFzZU5hbWUgPT0gdmFyeWluZy0+bmFtZSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBtU3RhdGUubUxpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mu
ZW1wbGFjZV9iYWNrKApAQCAtNDM2NiwyNSArNDM0NCwxMTMgQEAgdm9pZCBQcm9ncmFtOjpnYXRo
ZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyAm
dmFyeWkKIAogUHJvZ3JhbU1lcmdlZFZhcnlpbmdzIFByb2dyYW06OmdldE1lcmdlZFZhcnlpbmdz
KCkgY29uc3QKIHsKKyAgICBBU1NFUlQobVN0YXRlLm1BdHRhY2hlZFNoYWRlcnNbU2hhZGVyVHlw
ZTo6Q29tcHV0ZV0gPT0gbnVsbHB0cik7CisKKyAgICAvLyBWYXJ5aW5ncyBhcmUgbWF0Y2hlZCBi
ZXR3ZWVuIHBhaXJzIG9mIGNvbnNlY3V0aXZlIHN0YWdlcywgYnkgbG9jYXRpb24gaWYgYXNzaWdu
ZWQgb3IKKyAgICAvLyBieSBuYW1lIG90aGVyd2lzZS4gIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxl
IGZvciBvbmUgc3RhZ2UgdG8gc3BlY2lmeSBsb2NhdGlvbiBhbmQgdGhlIG90aGVyCisgICAgLy8g
bm90OiBodHRwczovL2N2cy5raHJvbm9zLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTYy
NjEKKworICAgIC8vIE1hcCBzdGFnZXMgdG8gdGhlIHByZXZpb3VzIGFjdGl2ZSBzdGFnZSBpbiB0
aGUgcmVuZGVyaW5nIHBpcGVsaW5lLiAgV2hlbiBsb29raW5nIGF0IGlucHV0CisgICAgLy8gdmFy
eWluZ3Mgb2YgYSBzdGFnZSwgdGhpcyBpcyB1c2VkIHRvIGZpbmQgdGhlIHN0YWdlIHdob3NlIG91
dHB1dCB2YXJ5aW5ncyBhcmUgYmVpbmcgbGlua2VkCisgICAgLy8gd2l0aCB0aGVtLgorICAgIFNo
YWRlck1hcDxTaGFkZXJUeXBlPiBwcmV2aW91c0FjdGl2ZVN0YWdlOworCisgICAgLy8gTm90ZSB0
aGF0IGtBbGxHcmFwaGljc1NoYWRlclR5cGVzIGlzIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIHJl
bmRlcmluZyBwaXBlbGluZS4KKyAgICBTaGFkZXJUeXBlIGxhc3RBY3RpdmVTdGFnZSA9IFNoYWRl
clR5cGU6OkludmFsaWRFbnVtOworICAgIGZvciAoU2hhZGVyVHlwZSBzdGFnZSA6IGtBbGxHcmFw
aGljc1NoYWRlclR5cGVzKQorICAgIHsKKyAgICAgICAgcHJldmlvdXNBY3RpdmVTdGFnZVtzdGFn
ZV0gPSBsYXN0QWN0aXZlU3RhZ2U7CisgICAgICAgIGlmIChtU3RhdGUubUF0dGFjaGVkU2hhZGVy
c1tzdGFnZV0pCisgICAgICAgIHsKKyAgICAgICAgICAgIGxhc3RBY3RpdmVTdGFnZSA9IHN0YWdl
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRmlyc3QsIGdvIHRocm91Z2ggb3V0cHV0IHZh
cnlpbmdzIGFuZCBjcmVhdGUgdHdvIG1hcHMgKG9uZSBieSBuYW1lLCBvbmUgYnkgbG9jYXRpb24p
IGZvcgorICAgIC8vIGZhc3RlciBsb29rdXAgd2hlbiBtYXRjaGluZyBpbnB1dCB2YXJ5aW5ncy4K
KworICAgIFNoYWRlck1hcDxzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90Pj4gb3V0cHV0VmFy
eWluZ05hbWVUb0luZGV4OworICAgIFNoYWRlck1hcDxzdGQ6Om1hcDxpbnQsIHNpemVfdD4+IG91
dHB1dFZhcnlpbmdMb2NhdGlvblRvSW5kZXg7CisKICAgICBQcm9ncmFtTWVyZ2VkVmFyeWluZ3Mg
bWVyZ2VkOwogCisgICAgLy8gR2F0aGVyIG91dHB1dCB2YXJ5aW5ncy4KICAgICBmb3IgKFNoYWRl
ciAqc2hhZGVyIDogbVN0YXRlLm1BdHRhY2hlZFNoYWRlcnMpCiAgICAgewotICAgICAgICBpZiAo
c2hhZGVyKQorICAgICAgICBpZiAoIXNoYWRlcikKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgU2hhZGVyVHlwZSBzdGFnZSA9IHNoYWRlci0+Z2V0
VHlwZSgpOworCisgICAgICAgIGZvciAoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5n
IDogc2hhZGVyLT5nZXRPdXRwdXRWYXJ5aW5ncygpKQorICAgICAgICB7CisgICAgICAgICAgICBt
ZXJnZWQucHVzaF9iYWNrKHt9KTsKKyAgICAgICAgICAgIFByb2dyYW1WYXJ5aW5nUmVmICpyZWYg
PSAmbWVyZ2VkLmJhY2soKTsKKworICAgICAgICAgICAgcmVmLT5mcm9udFNoYWRlciAgICAgID0g
JnZhcnlpbmc7CisgICAgICAgICAgICByZWYtPmZyb250U2hhZGVyU3RhZ2UgPSBzdGFnZTsKKwor
ICAgICAgICAgICAgLy8gQWx3YXlzIG1hcCBieSBuYW1lLiAgRXZlbiBpZiBsb2NhdGlvbiBpcyBw
cm92aWRlZCBpbiB0aGlzIHN0YWdlLCBpdCBtYXkgbm90IGJlIGluIHRoZQorICAgICAgICAgICAg
Ly8gcGFpcmVkIHN0YWdlLgorICAgICAgICAgICAgb3V0cHV0VmFyeWluZ05hbWVUb0luZGV4W3N0
YWdlXVt2YXJ5aW5nLm5hbWVdID0gbWVyZ2VkLnNpemUoKSAtIDE7CisKKyAgICAgICAgICAgIC8v
IElmIGxvY2F0aW9uIGlzIHByb3ZpZGVkLCBhbHNvIGtlZXAgaXQgaW4gYSBtYXAgYnkgbG9jYXRp
b24uCisgICAgICAgICAgICBpZiAodmFyeWluZy5sb2NhdGlvbiAhPSAtMSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBvdXRwdXRWYXJ5aW5nTG9jYXRpb25Ub0luZGV4W3N0YWdlXVt2
YXJ5aW5nLmxvY2F0aW9uXSA9IG1lcmdlZC5zaXplKCkgLSAxOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gR2F0aGVyIGlucHV0IHZhcnlpbmdzLCBhbmQgbWF0Y2gg
dGhlbSB3aXRoIG91dHB1dCB2YXJ5aW5ncyBvZiB0aGUgcHJldmlvdXMgc3RhZ2UuCisgICAgZm9y
IChTaGFkZXIgKnNoYWRlciA6IG1TdGF0ZS5tQXR0YWNoZWRTaGFkZXJzKQorICAgIHsKKyAgICAg
ICAgaWYgKCFzaGFkZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNoYWRlclR5cGUgc2hhZGVy
VHlwZSA9IHNoYWRlci0+Z2V0VHlwZSgpOwotICAgICAgICAgICAgZm9yIChjb25zdCBzaDo6U2hh
ZGVyVmFyaWFibGUgJnZhcnlpbmcgOiBzaGFkZXItPmdldE91dHB1dFZhcnlpbmdzKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBTaGFkZXJUeXBlIHN0YWdlICAg
ICAgICAgPSBzaGFkZXItPmdldFR5cGUoKTsKKyAgICAgICAgU2hhZGVyVHlwZSBwcmV2aW91c1N0
YWdlID0gcHJldmlvdXNBY3RpdmVTdGFnZVtzdGFnZV07CisKKyAgICAgICAgZm9yIChjb25zdCBz
aDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmcgOiBzaGFkZXItPmdldElucHV0VmFyeWluZ3MoKSkK
KyAgICAgICAgeworICAgICAgICAgICAgc2l6ZV90IG1lcmdlZEluZGV4ID0gbWVyZ2VkLnNpemUo
KTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c1N0YWdlICE9IFNoYWRlclR5cGU6OkludmFsaWRF
bnVtKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFByb2dyYW1WYXJ5aW5nUmVmICpy
ZWYgPSAmbWVyZ2VkW3ZhcnlpbmcubmFtZV07Ci0gICAgICAgICAgICAgICAgcmVmLT5mcm9udFNo
YWRlciAgICAgICA9ICZ2YXJ5aW5nOwotICAgICAgICAgICAgICAgIHJlZi0+ZnJvbnRTaGFkZXJT
dGFnZSAgPSBzaGFkZXJUeXBlOworICAgICAgICAgICAgICAgIC8vIElmIGxvY2F0aW9uIGlzIHBy
b3ZpZGVkLCBzZWUgaWYgd2UgY2FuIG1hdGNoIGJ5IGxvY2F0aW9uLgorICAgICAgICAgICAgICAg
IGlmICh2YXJ5aW5nLmxvY2F0aW9uICE9IC0xKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBieUxvY2F0aW9uSXRlciA9CisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRWYXJ5aW5nTG9jYXRpb25Ub0luZGV4W3ByZXZpb3VzU3RhZ2VdLmZpbmQodmFyeWlu
Zy5sb2NhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGlmIChieUxvY2F0aW9uSXRlciAhPSBv
dXRwdXRWYXJ5aW5nTG9jYXRpb25Ub0luZGV4W3ByZXZpb3VzU3RhZ2VdLmVuZCgpKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRJbmRleCA9IGJ5
TG9jYXRpb25JdGVyLT5zZWNvbmQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBJZiBub3QgZm91bmQsIHRyeSB0byBtYXRjaCBi
eSBuYW1lLgorICAgICAgICAgICAgICAgIGlmIChtZXJnZWRJbmRleCA9PSBtZXJnZWQuc2l6ZSgp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBieU5hbWVJdGVy
ID0gb3V0cHV0VmFyeWluZ05hbWVUb0luZGV4W3ByZXZpb3VzU3RhZ2VdLmZpbmQodmFyeWluZy5u
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ5TmFtZUl0ZXIgIT0gb3V0cHV0VmFyeWlu
Z05hbWVUb0luZGV4W3ByZXZpb3VzU3RhZ2VdLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRJbmRleCA9IGJ5TmFtZUl0ZXItPnNlY29u
ZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nIDog
c2hhZGVyLT5nZXRJbnB1dFZhcnlpbmdzKCkpCisKKyAgICAgICAgICAgIC8vIElmIG5vIHByZXZp
b3VzIHN0YWdlLCBvciBub3QgbWF0Y2hlZCBieSBsb2NhdGlvbiBvciBuYW1lLCBjcmVhdGUgYSBu
ZXcgZW50cnkgZm9yIGl0LgorICAgICAgICAgICAgaWYgKG1lcmdlZEluZGV4ID09IG1lcmdlZC5z
aXplKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUHJvZ3JhbVZhcnlpbmdSZWYg
KnJlZiA9ICZtZXJnZWRbdmFyeWluZy5uYW1lXTsKLSAgICAgICAgICAgICAgICByZWYtPmJhY2tT
aGFkZXIgICAgICAgID0gJnZhcnlpbmc7Ci0gICAgICAgICAgICAgICAgcmVmLT5iYWNrU2hhZGVy
U3RhZ2UgICA9IHNoYWRlclR5cGU7CisgICAgICAgICAgICAgICAgbWVyZ2VkLnB1c2hfYmFjayh7
fSk7CisgICAgICAgICAgICAgICAgbWVyZ2VkSW5kZXggPSBtZXJnZWQuc2l6ZSgpIC0gMTsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgUHJvZ3JhbVZhcnlpbmdSZWYgKnJlZiA9ICZtZXJn
ZWRbbWVyZ2VkSW5kZXhdOworCisgICAgICAgICAgICByZWYtPmJhY2tTaGFkZXIgICAgICA9ICZ2
YXJ5aW5nOworICAgICAgICAgICAgcmVmLT5iYWNrU2hhZGVyU3RhZ2UgPSBzdGFnZTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNDQ5Miw2ICs0NTU4LDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rT3V0
cHV0VmFyaWFibGVzKGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGNvbWJpbmVkSW1hZ2VVbmlmb3Jtc0NvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb21iaW5lZFNoYWRlclN0b3JhZ2VCbG9ja3ND
b3VudCkKIHsKKyAgICBJbmZvTG9nICZpbmZvTG9nICAgICAgID0gbVN0YXRlLm1FeGVjdXRhYmxl
LmdldEluZm9Mb2coKTsKICAgICBTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRlLm1BdHRh
Y2hlZFNoYWRlcnNbU2hhZGVyVHlwZTo6RnJhZ21lbnRdOwogCiAgICAgQVNTRVJUKG1TdGF0ZS5t
T3V0cHV0VmFyaWFibGVUeXBlcy5lbXB0eSgpKTsKQEAgLTQ1NDksNyArNDYxNiw3IEBAIGJvb2wg
UHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcyhjb25zdCBDYXBzICZjYXBzLAogICAgICAgICAg
ICAgICAgIG1TdGF0ZS5tQWN0aXZlT3V0cHV0VmFyaWFibGVzLmNvdW50KCkgPgogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihjYXBzLm1heENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3Vy
Y2VzKSkKICAgICAgICAgewotICAgICAgICAgICAgbUluZm9Mb2cKKyAgICAgICAgICAgIGluZm9M
b2cKICAgICAgICAgICAgICAgICA8PCAiVGhlIHN1bSBvZiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBp
bWFnZSB1bmlmb3JtcywgYWN0aXZlIHNoYWRlciBzdG9yYWdlIGJsb2NrcyAiCiAgICAgICAgICAg
ICAgICAgICAgImFuZCBhY3RpdmUgZnJhZ21lbnQgc2hhZGVyIG91dHB1dHMgZXhjZWVkcyAiCiAg
ICAgICAgICAgICAgICAgICAgIk1BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVUX1JFU09VUkNFUyAo
IgpAQCAtNDYyMyw4ICs0NjkwLDggQEAgYm9vbCBQcm9ncmFtOjpsaW5rT3V0cHV0VmFyaWFibGVz
KGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAob3V0cHV0
TG9jYXRpb25zW2xvY2F0aW9uXS51c2VkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbUluZm9Mb2cgPDwgIkxvY2F0aW9uIG9mIHZhcmlhYmxlICIgPDwgb3V0cHV0VmFyaWFibGUu
bmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgY29uZmxpY3RzIHdpdGggYW5vdGhl
ciB2YXJpYWJsZS4iOworICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIkxvY2F0aW9uIG9mIHZh
cmlhYmxlICIgPDwgb3V0cHV0VmFyaWFibGUubmFtZQorICAgICAgICAgICAgICAgICAgICAgICAg
PDwgIiBjb25mbGljdHMgd2l0aCBhbm90aGVyIHZhcmlhYmxlLiI7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgb3V0cHV0TG9jYXRpb25z
W2xvY2F0aW9uXSA9IGxvY2F0aW9uSW5mbzsKQEAgLTQ2NjMsOCArNDczMCw4IEBAIGJvb2wgUHJv
Z3JhbTo6bGlua091dHB1dFZhcmlhYmxlcyhjb25zdCBDYXBzICZjYXBzLAogICAgICAgICBpZiAo
RmluZFVzZWRPdXRwdXRMb2NhdGlvbihvdXRwdXRMb2NhdGlvbnMsIGJhc2VMb2NhdGlvbiwgZWxl
bWVudENvdW50LCByZXNlcnZlZExvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0VmFyaWFibGVJbmRleCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1J
bmZvTG9nIDw8ICJMb2NhdGlvbiBvZiB2YXJpYWJsZSAiIDw8IG91dHB1dFZhcmlhYmxlLm5hbWUK
LSAgICAgICAgICAgICAgICAgICAgIDw8ICIgY29uZmxpY3RzIHdpdGggYW5vdGhlciB2YXJpYWJs
ZS4iOworICAgICAgICAgICAgaW5mb0xvZyA8PCAiTG9jYXRpb24gb2YgdmFyaWFibGUgIiA8PCBv
dXRwdXRWYXJpYWJsZS5uYW1lCisgICAgICAgICAgICAgICAgICAgIDw8ICIgY29uZmxpY3RzIHdp
dGggYW5vdGhlciB2YXJpYWJsZS4iOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIEFzc2lnbk91dHB1dExvY2F0aW9ucyhvdXRwdXRMb2NhdGlvbnMsIGJhc2VM
b2NhdGlvbiwgZWxlbWVudENvdW50LCByZXNlcnZlZExvY2F0aW9ucywKQEAgLTQ3MzEsOCArNDc5
OCw4IEBAIGJvb2wgUHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcyhjb25zdCBDYXBzICZjYXBz
LAogICAgICAgICAgICAgLy8gImlmIHRoZSBleHBsaWNpdCBiaW5kaW5nIGFzc2lnbm1lbnRzIGRv
IG5vdCBsZWF2ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBsaW5rZXIgdG8KICAgICAgICAgICAgIC8v
IGF1dG9tYXRpY2FsbHkgYXNzaWduIGEgbG9jYXRpb24gZm9yIGEgdmFyeWluZyBvdXQgYXJyYXks
IHdoaWNoIHJlcXVpcmVzIG11bHRpcGxlCiAgICAgICAgICAgICAvLyBjb250aWd1b3VzIGxvY2F0
aW9ucy4iCi0gICAgICAgICAgICBtSW5mb0xvZyA8PCAiQ291bGQgbm90IGZpdCBvdXRwdXQgdmFy
aWFibGUgaW50byBhdmFpbGFibGUgbG9jYXRpb25zOiAiCi0gICAgICAgICAgICAgICAgICAgICA8
PCBvdXRwdXRWYXJpYWJsZS5uYW1lOworICAgICAgICAgICAgaW5mb0xvZyA8PCAiQ291bGQgbm90
IGZpdCBvdXRwdXQgdmFyaWFibGUgaW50byBhdmFpbGFibGUgbG9jYXRpb25zOiAiCisgICAgICAg
ICAgICAgICAgICAgIDw8IG91dHB1dFZhcmlhYmxlLm5hbWU7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzQ3LDggKzQ4MTQsOCBAQCB2b2lkIFByb2dy
YW06OnNldFVuaWZvcm1WYWx1ZXNGcm9tQmluZGluZ1F1YWxpZmllcnMoKQogICAgICAgICBjb25z
dCBhdXRvICZzYW1wbGVyVW5pZm9ybSA9IG1TdGF0ZS5tVW5pZm9ybXNbc2FtcGxlckluZGV4XTsK
ICAgICAgICAgaWYgKHNhbXBsZXJVbmlmb3JtLmJpbmRpbmcgIT0gLTEpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2V0VW5pZm9ybUxvY2F0aW9uKHNhbXBsZXJVbmlm
b3JtLm5hbWUpOwotICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uICE9IC0xKTsKKyAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlvbihzYW1wbGVy
VW5pZm9ybS5uYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbi52YWx1ZSAhPSAtMSk7
CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTGludD4gYm91bmRUZXh0dXJlVW5pdHM7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVtZW50SW5kZXggPSAwOwogICAgICAgICAgICAg
ICAgICBlbGVtZW50SW5kZXggPCBzYW1wbGVyVW5pZm9ybS5nZXRCYXNpY1R5cGVFbGVtZW50Q291
bnQoKTsgKytlbGVtZW50SW5kZXgpCkBAIC00Nzk5LDI0ICs0ODY2LDI0IEBAIHZvaWQgUHJvZ3Jh
bTo6dXBkYXRlU2FtcGxlclVuaWZvcm0oQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgYm91bmRU
ZXh0dXJlVW5pdHNbYXJyYXlJbmRleCArIGxvY2F0aW9uSW5mby5hcnJheUluZGV4XSA9IG5ld1Rl
eHR1cmVVbml0OwogCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVmZXJlbmNlIGNvdW50cy4KLSAg
ICAgICAgdWludDMyX3QgJm9sZFJlZkNvdW50ID0gbVN0YXRlLm1BY3RpdmVTYW1wbGVyUmVmQ291
bnRzW29sZFRleHR1cmVVbml0XTsKLSAgICAgICAgdWludDMyX3QgJm5ld1JlZkNvdW50ID0gbVN0
YXRlLm1BY3RpdmVTYW1wbGVyUmVmQ291bnRzW25ld1RleHR1cmVVbml0XTsKKyAgICAgICAgdWlu
dDMyX3QgJm9sZFJlZkNvdW50ID0gbVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyUmVm
Q291bnRzW29sZFRleHR1cmVVbml0XTsKKyAgICAgICAgdWludDMyX3QgJm5ld1JlZkNvdW50ID0g
bVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyUmVmQ291bnRzW25ld1RleHR1cmVVbml0
XTsKICAgICAgICAgQVNTRVJUKG9sZFJlZkNvdW50ID4gMCk7CiAgICAgICAgIEFTU0VSVChuZXdS
ZWZDb3VudCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CiAgICAgICAg
IG9sZFJlZkNvdW50LS07CiAgICAgICAgIG5ld1JlZkNvdW50Kys7CiAKICAgICAgICAgLy8gQ2hl
Y2sgZm9yIGJpbmRpbmcgdHlwZSBjaGFuZ2UuCi0gICAgICAgIFRleHR1cmVUeXBlICZuZXdTYW1w
bGVyVHlwZSAgICAgPSBtU3RhdGUubUFjdGl2ZVNhbXBsZXJUeXBlc1tuZXdUZXh0dXJlVW5pdF07
Ci0gICAgICAgIFRleHR1cmVUeXBlICZvbGRTYW1wbGVyVHlwZSAgICAgPSBtU3RhdGUubUFjdGl2
ZVNhbXBsZXJUeXBlc1tvbGRUZXh0dXJlVW5pdF07Ci0gICAgICAgIFNhbXBsZXJGb3JtYXQgJm5l
d1NhbXBsZXJGb3JtYXQgPSBtU3RhdGUubUFjdGl2ZVNhbXBsZXJGb3JtYXRzW25ld1RleHR1cmVV
bml0XTsKLSAgICAgICAgU2FtcGxlckZvcm1hdCAmb2xkU2FtcGxlckZvcm1hdCA9IG1TdGF0ZS5t
QWN0aXZlU2FtcGxlckZvcm1hdHNbb2xkVGV4dHVyZVVuaXRdOworICAgICAgICBUZXh0dXJlVHlw
ZSAmbmV3U2FtcGxlclR5cGUgICAgID0gbVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVy
VHlwZXNbbmV3VGV4dHVyZVVuaXRdOworICAgICAgICBUZXh0dXJlVHlwZSAmb2xkU2FtcGxlclR5
cGUgICAgID0gbVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyVHlwZXNbb2xkVGV4dHVy
ZVVuaXRdOworICAgICAgICBTYW1wbGVyRm9ybWF0ICZuZXdTYW1wbGVyRm9ybWF0ID0gbVN0YXRl
Lm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyRm9ybWF0c1tuZXdUZXh0dXJlVW5pdF07CisgICAg
ICAgIFNhbXBsZXJGb3JtYXQgJm9sZFNhbXBsZXJGb3JtYXQgPSBtU3RhdGUubUV4ZWN1dGFibGUu
bUFjdGl2ZVNhbXBsZXJGb3JtYXRzW29sZFRleHR1cmVVbml0XTsKIAogICAgICAgICBpZiAobmV3
UmVmQ291bnQgPT0gMSkKICAgICAgICAgewogICAgICAgICAgICAgbmV3U2FtcGxlclR5cGUgICA9
IHNhbXBsZXJCaW5kaW5nLnRleHR1cmVUeXBlOwogICAgICAgICAgICAgbmV3U2FtcGxlckZvcm1h
dCA9IHNhbXBsZXJCaW5kaW5nLmZvcm1hdDsKLSAgICAgICAgICAgIG1TdGF0ZS5tQWN0aXZlU2Ft
cGxlcnNNYXNrLnNldChuZXdUZXh0dXJlVW5pdCk7CisgICAgICAgICAgICBtU3RhdGUubUV4ZWN1
dGFibGUubUFjdGl2ZVNhbXBsZXJzTWFzay5zZXQobmV3VGV4dHVyZVVuaXQpOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtNDgzNiw3ICs0OTAzLDcgQEAgdm9pZCBQcm9n
cmFtOjp1cGRhdGVTYW1wbGVyVW5pZm9ybShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICB7CiAg
ICAgICAgICAgICBvbGRTYW1wbGVyVHlwZSAgID0gVGV4dHVyZVR5cGU6OkludmFsaWRFbnVtOwog
ICAgICAgICAgICAgb2xkU2FtcGxlckZvcm1hdCA9IFNhbXBsZXJGb3JtYXQ6OkludmFsaWRFbnVt
OwotICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVTYW1wbGVyc01hc2sucmVzZXQob2xkVGV4dHVy
ZVVuaXQpOworICAgICAgICAgICAgbVN0YXRlLm1FeGVjdXRhYmxlLm1BY3RpdmVTYW1wbGVyc01h
c2sucmVzZXQob2xkVGV4dHVyZVVuaXQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewpAQCAtNDg2Miw0NCArNDkyOSw3IEBAIHZvaWQgUHJvZ3JhbTo6dXBkYXRlU2FtcGxlclVu
aWZvcm0oQ29udGV4dCAqY29udGV4dCwKIAogdm9pZCBQcm9ncmFtU3RhdGU6OnNldFNhbXBsZXJV
bmlmb3JtVGV4dHVyZVR5cGVBbmRGb3JtYXQoc2l6ZV90IHRleHR1cmVVbml0SW5kZXgpCiB7Ci0g
ICAgYm9vbCBmb3VuZEJpbmRpbmcgICAgICAgICA9IGZhbHNlOwotICAgIFRleHR1cmVUeXBlIGZv
dW5kVHlwZSAgICAgPSBUZXh0dXJlVHlwZTo6SW52YWxpZEVudW07Ci0gICAgU2FtcGxlckZvcm1h
dCBmb3VuZEZvcm1hdCA9IFNhbXBsZXJGb3JtYXQ6OkludmFsaWRFbnVtOwotCi0gICAgZm9yIChj
b25zdCBTYW1wbGVyQmluZGluZyAmYmluZGluZyA6IG1TYW1wbGVyQmluZGluZ3MpCi0gICAgewot
ICAgICAgICBpZiAoYmluZGluZy51bnJlZmVyZW5jZWQpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAvLyBBIGNvbmZsaWN0IGV4aXN0cyBpZiBzYW1wbGVycyBvZiBkaWZmZXJlbnQg
dHlwZXMgYXJlIHNvdXJjZWQgYnkgdGhlIHNhbWUgdGV4dHVyZSB1bml0LgotICAgICAgICAvLyBX
ZSBuZWVkIHRvIGNoZWNrIGFsbCBib3VuZCB0ZXh0dXJlcyB0byBkZXRlY3QgdGhpcyBlcnJvciBj
YXNlLgotICAgICAgICBmb3IgKEdMdWludCB0ZXh0dXJlVW5pdCA6IGJpbmRpbmcuYm91bmRUZXh0
dXJlVW5pdHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlVW5pdCA9PSB0ZXh0
dXJlVW5pdEluZGV4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghZm91bmRC
aW5kaW5nKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZm91bmRCaW5k
aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmRUeXBlICAgID0gYmluZGluZy50
ZXh0dXJlVHlwZTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmRGb3JtYXQgID0gYmluZGluZy5m
b3JtYXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZFR5cGUgIT0gYmluZGluZy50
ZXh0dXJlVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgZm91bmRUeXBlID0gVGV4dHVyZVR5cGU6OkludmFsaWRFbnVtOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZEZvcm1hdCAhPSBiaW5kaW5nLmZv
cm1hdCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZm91
bmRGb3JtYXQgPSBTYW1wbGVyRm9ybWF0OjpJbnZhbGlkRW51bTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIG1BY3RpdmVTYW1wbGVyVHlwZXNbdGV4dHVyZVVuaXRJbmRleF0gICA9IGZvdW5kVHlw
ZTsKLSAgICBtQWN0aXZlU2FtcGxlckZvcm1hdHNbdGV4dHVyZVVuaXRJbmRleF0gPSBmb3VuZEZv
cm1hdDsKKyAgICBtRXhlY3V0YWJsZS5zZXRTYW1wbGVyVW5pZm9ybVRleHR1cmVUeXBlQW5kRm9y
bWF0KHRleHR1cmVVbml0SW5kZXgsIG1TYW1wbGVyQmluZGluZ3MpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KQEAgLTQ5MjksMTIgKzQ5NTksMTIgQEAgR0xzaXplaSBQcm9ncmFtOjpjbGFt
cFVuaWZvcm1Db3VudChjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8sCiB9CiAK
IHRlbXBsYXRlIDxzaXplX3QgY29scywgc2l6ZV90IHJvd3MsIHR5cGVuYW1lIFQ+Ci1HTHNpemVp
IFByb2dyYW06OmNsYW1wTWF0cml4VW5pZm9ybUNvdW50KEdMaW50IGxvY2F0aW9uLAorR0xzaXpl
aSBQcm9ncmFtOjpjbGFtcE1hdHJpeFVuaWZvcm1Db3VudChVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFQgKnYpCiB7Ci0gICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0
YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXTsKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0
aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb24udmFs
dWVdOwogCiAgICAgaWYgKCF0cmFuc3Bvc2UpCiAgICAgewpAQCAtNDk1NSw3ICs0OTg1LDcgQEAg
R0xzaXplaSBQcm9ncmFtOjpjbGFtcE1hdHJpeFVuaWZvcm1Db3VudChHTGludCBsb2NhdGlvbiwK
IHRlbXBsYXRlIDx0eXBlbmFtZSBEZXN0VD4KIHZvaWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUludGVy
bmFsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEZXN0VCAqZGF0YU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG5hdGl2ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tcG9u
ZW50cykgY29uc3QKIHsKQEAgLTQ5NjQsNyArNDk5NCw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0VW5p
Zm9ybUludGVybmFsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNhc2UgR0xfQk9P
TDoKICAgICAgICAgewogICAgICAgICAgICAgR0xpbnQgdGVtcFZhbHVlWzE2XSA9IHswfTsKLSAg
ICAgICAgICAgIG1Qcm9ncmFtLT5nZXRVbmlmb3JtaXYoY29udGV4dCwgbG9jYXRpb24sIHRlbXBW
YWx1ZSk7CisgICAgICAgICAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWl2KGNvbnRleHQsIGxvY2F0
aW9uLnZhbHVlLCB0ZW1wVmFsdWUpOwogICAgICAgICAgICAgVW5pZm9ybVN0YXRlUXVlcnlDYXN0
TG9vcDxHTGJvb2xlYW4+KAogICAgICAgICAgICAgICAgIGRhdGFPdXQsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCAqPih0ZW1wVmFsdWUpLCBjb21wb25lbnRzKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNDk3Miw3ICs1MDAyLDcgQEAgdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtSW50
ZXJuYWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgY2FzZSBHTF9JTlQ6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIEdMaW50IHRlbXBWYWx1ZVsxNl0gPSB7MH07Ci0gICAgICAgICAg
ICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWl2KGNvbnRleHQsIGxvY2F0aW9uLCB0ZW1wVmFsdWUpOwor
ICAgICAgICAgICAgbVByb2dyYW0tPmdldFVuaWZvcm1pdihjb250ZXh0LCBsb2NhdGlvbi52YWx1
ZSwgdGVtcFZhbHVlKTsKICAgICAgICAgICAgIFVuaWZvcm1TdGF0ZVF1ZXJ5Q2FzdExvb3A8R0xp
bnQ+KGRhdGFPdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPih0ZW1wVmFsdWUp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50
cyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ5ODAsNyArNTAxMCw3IEBAIHZvaWQgUHJvZ3Jh
bTo6Z2V0VW5pZm9ybUludGVybmFsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UOgogICAgICAgICB7CiAgICAgICAgICAgICBHTHVpbnQgdGVtcFZh
bHVlWzE2XSA9IHswfTsKLSAgICAgICAgICAgIG1Qcm9ncmFtLT5nZXRVbmlmb3JtdWl2KGNvbnRl
eHQsIGxvY2F0aW9uLCB0ZW1wVmFsdWUpOworICAgICAgICAgICAgbVByb2dyYW0tPmdldFVuaWZv
cm11aXYoY29udGV4dCwgbG9jYXRpb24udmFsdWUsIHRlbXBWYWx1ZSk7CiAgICAgICAgICAgICBV
bmlmb3JtU3RhdGVRdWVyeUNhc3RMb29wPEdMdWludD4oZGF0YU91dCwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90ICo+KHRlbXBWYWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQ5ODgsNyArNTAxOCw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUludGVybmFsKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIEdMZmxvYXQgdGVtcFZhbHVlWzE2XSA9IHswfTsKLSAgICAgICAgICAgIG1Qcm9n
cmFtLT5nZXRVbmlmb3JtZnYoY29udGV4dCwgbG9jYXRpb24sIHRlbXBWYWx1ZSk7CisgICAgICAg
ICAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWZ2KGNvbnRleHQsIGxvY2F0aW9uLnZhbHVlLCB0ZW1w
VmFsdWUpOwogICAgICAgICAgICAgVW5pZm9ybVN0YXRlUXVlcnlDYXN0TG9vcDxHTGZsb2F0PigK
ICAgICAgICAgICAgICAgICBkYXRhT3V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qg
Kj4odGVtcFZhbHVlKSwgY29tcG9uZW50cyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUwNDQs
MTQgKzUwNzQsMTIgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpzZXJpYWxpemUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgYW5nbGU6Ok1lbW9yeUJ1ZmZlciAqYmkKIAogICAgIHN0cmVhbS53cml0
ZUludChtU3RhdGUubU51bVZpZXdzKTsKIAotICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubU1h
eEFjdGl2ZUF0dHJpYkxvY2F0aW9uKTsKLQogICAgIHN0YXRpY19hc3NlcnQoTUFYX1ZFUlRFWF9B
VFRSSUJTICogMiA8PSBzaXplb2YodWludDMyX3QpICogOCwKICAgICAgICAgICAgICAgICAgICJB
bGwgYml0cyBvZiBtQXR0cmlidXRlc1R5cGVNYXNrIHR5cGVzIGFuZCBtYXNrIGZpdCBpbnRvIDMy
IGJpdHMgZWFjaCIpOwotICAgIHN0cmVhbS53cml0ZUludChzdGF0aWNfY2FzdDxpbnQ+KG1TdGF0
ZS5tQXR0cmlidXRlc1R5cGVNYXNrLnRvX3Vsb25nKCkpKTsKLSAgICBzdHJlYW0ud3JpdGVJbnQo
c3RhdGljX2Nhc3Q8aW50PihtU3RhdGUubUF0dHJpYnV0ZXNNYXNrLnRvX3Vsb25nKCkpKTsKLQot
ICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygp
LnRvX3Vsb25nKCkpOworICAgIHN0cmVhbS53cml0ZUludChzdGF0aWNfY2FzdDxpbnQ+KG1TdGF0
ZS5tRXhlY3V0YWJsZS5tQXR0cmlidXRlc1R5cGVNYXNrLnRvX3Vsb25nKCkpKTsKKyAgICBzdHJl
YW0ud3JpdGVJbnQoc3RhdGljX2Nhc3Q8aW50PihtU3RhdGUubUV4ZWN1dGFibGUubUF0dHJpYnV0
ZXNNYXNrLnRvX3Vsb25nKCkpKTsKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1FeGVjdXRh
YmxlLmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKS50b191bG9uZygpKTsKKyAgICBzdHJl
YW0ud3JpdGVJbnQobVN0YXRlLm1FeGVjdXRhYmxlLm1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbik7
CiAKICAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLmdldFByb2dyYW1JbnB1dHMoKS5zaXplKCkp
OwogICAgIGZvciAoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZhdHRyaWIgOiBtU3RhdGUuZ2V0
UHJvZ3JhbUlucHV0cygpKQpAQCAtNTA3MCw2ICs1MDk4LDggQEAgYW5nbGU6OlJlc3VsdCBQcm9n
cmFtOjpzZXJpYWxpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgYW5nbGU6Ok1lbW9yeUJ1ZmZl
ciAqYmkKICAgICAgICAgc3RyZWFtLndyaXRlSW50KHVuaWZvcm0uYnVmZmVySW5kZXgpOwogICAg
ICAgICBXcml0ZUJsb2NrTWVtYmVySW5mbygmc3RyZWFtLCB1bmlmb3JtLmJsb2NrSW5mbyk7CiAK
KyAgICAgICAgc3RyZWFtLndyaXRlSW50VmVjdG9yKHVuaWZvcm0ub3V0ZXJBcnJheVNpemVzKTsK
KwogICAgICAgICAvLyBBY3RpdmUgc2hhZGVyIGluZm8KICAgICAgICAgZm9yIChTaGFkZXJUeXBl
IHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKICAgICAgICAgewpAQCAtNTE5Niw3
ICs1MjI2LDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtOjpzZXJpYWxpemUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgYW5nbGU6Ok1lbW9yeUJ1ZmZlciAqYmkKICAgICBzdHJlYW0ud3JpdGVJbnQo
bVN0YXRlLmdldEF0b21pY0NvdW50ZXJVbmlmb3JtUmFuZ2UoKS5sb3coKSk7CiAgICAgc3RyZWFt
LndyaXRlSW50KG1TdGF0ZS5nZXRBdG9taWNDb3VudGVyVW5pZm9ybVJhbmdlKCkuaGlnaCgpKTsK
IAotICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkudG9f
dWxvbmcoKSk7CisgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tRXhlY3V0YWJsZS5nZXRMaW5r
ZWRTaGFkZXJTdGFnZXMoKS50b191bG9uZygpKTsKIAogICAgIG1Qcm9ncmFtLT5zYXZlKGNvbnRl
eHQsICZzdHJlYW0pOwogCkBAIC01MjQ0LDE2ICs1Mjc0LDEzIEBAIGFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbTo6ZGVzZXJpYWxpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKIAogICAgIG1TdGF0ZS5t
TnVtVmlld3MgPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7CiAKLSAgICBtU3RhdGUubU1heEFjdGl2
ZUF0dHJpYkxvY2F0aW9uID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOwotCiAgICAg
c3RhdGljX2Fzc2VydChNQVhfVkVSVEVYX0FUVFJJQlMgKiAyIDw9IHNpemVvZih1aW50MzJfdCkg
KiA4LAotICAgICAgICAgICAgICAgICAgIkFsbCBiaXRzIG9mIG1BdHRyaWJ1dGVzVHlwZU1hc2sg
dHlwZXMgYW5kIG1hc2sgZml0IGludG8gMzIgYml0cyBlYWNoIik7Ci0gICAgbVN0YXRlLm1BdHRy
aWJ1dGVzVHlwZU1hc2sgPSBnbDo6Q29tcG9uZW50VHlwZU1hc2soc3RyZWFtLnJlYWRJbnQ8dWlu
dDMyX3Q+KCkpOwotICAgIG1TdGF0ZS5tQXR0cmlidXRlc01hc2sgICAgID0gc3RyZWFtLnJlYWRJ
bnQ8Z2w6OkF0dHJpYnV0ZXNNYXNrPigpOwotCi0gICAgc3RhdGljX2Fzc2VydChNQVhfVkVSVEVY
X0FUVFJJQlMgPD0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCwKLSAgICAgICAgICAgICAgICAg
ICJUb28gbWFueSB2ZXJ0ZXggYXR0cmlicyBmb3IgbWFzayIpOwotICAgIG1TdGF0ZS5tQWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzayA9IHN0cmVhbS5yZWFkSW50PGdsOjpBdHRyaWJ1dGVzTWFzaz4o
KTsKKyAgICAgICAgICAgICAgICAgICJUb28gbWFueSB2ZXJ0ZXggYXR0cmlicyBmb3IgbWFzazog
QWxsIGJpdHMgb2YgbUF0dHJpYnV0ZXNUeXBlTWFzayB0eXBlcyBhbmQgIgorICAgICAgICAgICAg
ICAgICAgIm1hc2sgZml0IGludG8gMzIgYml0cyBlYWNoIik7CisgICAgbVN0YXRlLm1FeGVjdXRh
YmxlLm1BdHRyaWJ1dGVzVHlwZU1hc2sgPSBnbDo6Q29tcG9uZW50VHlwZU1hc2soc3RyZWFtLnJl
YWRJbnQ8dWludDMyX3Q+KCkpOworICAgIG1TdGF0ZS5tRXhlY3V0YWJsZS5tQXR0cmlidXRlc01h
c2sgICAgID0gc3RyZWFtLnJlYWRJbnQ8Z2w6OkF0dHJpYnV0ZXNNYXNrPigpOworICAgIG1TdGF0
ZS5tRXhlY3V0YWJsZS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzayA9IHN0cmVhbS5yZWFkSW50
PGdsOjpBdHRyaWJ1dGVzTWFzaz4oKTsKKyAgICBtU3RhdGUubUV4ZWN1dGFibGUubU1heEFjdGl2
ZUF0dHJpYkxvY2F0aW9uICAgPSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAKICAg
ICB1bnNpZ25lZCBpbnQgYXR0cmliQ291bnQgPSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBpbnQ+
KCk7CiAgICAgQVNTRVJUKG1TdGF0ZS5tUHJvZ3JhbUlucHV0cy5lbXB0eSgpKTsKQEAgLTUyNzUs
NiArNTMwMiw4IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbTo6ZGVzZXJpYWxpemUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgdW5pZm9ybS5idWZmZXJJbmRleCA9IHN0cmVhbS5yZWFk
SW50PGludD4oKTsKICAgICAgICAgTG9hZEJsb2NrTWVtYmVySW5mbygmc3RyZWFtLCAmdW5pZm9y
bS5ibG9ja0luZm8pOwogCisgICAgICAgIHN0cmVhbS5yZWFkSW50VmVjdG9yPHVuc2lnbmVkIGlu
dD4oJnVuaWZvcm0ub3V0ZXJBcnJheVNpemVzKTsKKwogICAgICAgICB1bmlmb3JtLnR5cGVJbmZv
ID0gJkdldFVuaWZvcm1UeXBlSW5mbyh1bmlmb3JtLnR5cGUpOwogCiAgICAgICAgIC8vIEFjdGl2
ZSBzaGFkZXIgaW5mbwpAQCAtNTQ1MCw3ICs1NDc5LDcgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFt
OjpkZXNlcmlhbGl6ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogCiAgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihTaGFkZXJUeXBlOjpFbnVtQ291bnQpIDw9IHNp
emVvZih1bnNpZ25lZCBsb25nKSAqIDgsCiAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgc2hh
ZGVyIHR5cGVzIik7Ci0gICAgbVN0YXRlLm1MaW5rZWRTaGFkZXJTdGFnZXMgPSBTaGFkZXJCaXRT
ZXQoc3RyZWFtLnJlYWRJbnQ8dWludDhfdD4oKSk7CisgICAgbVN0YXRlLm1FeGVjdXRhYmxlLmdl
dExpbmtlZFNoYWRlclN0YWdlcygpID0gU2hhZGVyQml0U2V0KHN0cmVhbS5yZWFkSW50PHVpbnQ4
X3Q+KCkpOwogCiAgICAgaWYgKCFtU3RhdGUubUF0dGFjaGVkU2hhZGVyc1tTaGFkZXJUeXBlOjpD
b21wdXRlXSkKICAgICB7CkBAIC01NDY3LDE1ICs1NDk2LDE3IEBAIHZvaWQgUHJvZ3JhbTo6cG9z
dFJlc29sdmVMaW5rKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAgIG1TdGF0ZS51cGRh
dGVBY3RpdmVTYW1wbGVycygpOwogICAgIG1TdGF0ZS51cGRhdGVBY3RpdmVJbWFnZXMoKTsKIAor
ICAgIHNldFVuaWZvcm1WYWx1ZXNGcm9tQmluZGluZ1F1YWxpZmllcnMoKTsKKwogICAgIGlmIChj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkubXVsdGlEcmF3KQogICAgIHsKLSAgICAgICAgbVN0YXRl
Lm1EcmF3SURMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlvbigiZ2xfRHJhd0lEIik7CisgICAg
ICAgIG1TdGF0ZS5tRHJhd0lETG9jYXRpb24gPSBnZXRVbmlmb3JtTG9jYXRpb24oImdsX0RyYXdJ
RCIpLnZhbHVlOwogICAgIH0KIAogICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmFz
ZVZlcnRleEJhc2VJbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIG1TdGF0ZS5tQmFzZVZlcnRleExv
Y2F0aW9uICAgPSBnZXRVbmlmb3JtTG9jYXRpb24oImdsX0Jhc2VWZXJ0ZXgiKTsKLSAgICAgICAg
bVN0YXRlLm1CYXNlSW5zdGFuY2VMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlvbigiZ2xfQmFz
ZUluc3RhbmNlIik7CisgICAgICAgIG1TdGF0ZS5tQmFzZVZlcnRleExvY2F0aW9uICAgPSBnZXRV
bmlmb3JtTG9jYXRpb24oImdsX0Jhc2VWZXJ0ZXgiKS52YWx1ZTsKKyAgICAgICAgbVN0YXRlLm1C
YXNlSW5zdGFuY2VMb2NhdGlvbiA9IGdldFVuaWZvcm1Mb2NhdGlvbigiZ2xfQmFzZUluc3RhbmNl
IikudmFsdWU7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1Byb2dyYW0uaAppbmRleCBmOTYyZWZmYmExN2ZiNmZiMzFlNWFjZDBlYjcyN2EzM2I0
NTMzOTYxLi41YjY5ODA3MmEyZGJjMTg4ZTY0OTAxM2ZiZTc3NjBmMzU1YmUyMWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmgKQEAgLTI4LDYg
KzI4LDkgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9Db25zdGFudHMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9EZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvSW5mb0xvZy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbUxpbmtlZFJlc291cmNlcy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVW5pZm9ybS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKQEAgLTQ4LDcgKzUxLDYgQEAgc3Ry
dWN0IENhcHM7CiBjbGFzcyBDb250ZXh0Owogc3RydWN0IEV4dGVuc2lvbnM7CiBjbGFzcyBGcmFt
ZWJ1ZmZlcjsKLWNsYXNzIEluZm9Mb2c7CiBjbGFzcyBTaGFkZXI7CiBjbGFzcyBTaGFkZXJQcm9n
cmFtTWFuYWdlcjsKIGNsYXNzIFN0YXRlOwpAQCAtODQsNzkgKzg2LDYgQEAgZW51bSBjbGFzcyBM
aW5rTWlzbWF0Y2hFcnJvcgogICAgIE1BVFJJWF9QQUNLSU5HX01JU01BVENILAogfTsKIAotY2xh
c3MgSW5mb0xvZyA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgSW5mb0xv
ZygpOwotICAgIH5JbmZvTG9nKCk7Ci0KLSAgICBzaXplX3QgZ2V0TGVuZ3RoKCkgY29uc3Q7Ci0g
ICAgdm9pZCBnZXRMb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmlu
Zm9Mb2cpIGNvbnN0OwotCi0gICAgdm9pZCBhcHBlbmRTYW5pdGl6ZWQoY29uc3QgY2hhciAqbWVz
c2FnZSk7Ci0gICAgdm9pZCByZXNldCgpOwotCi0gICAgLy8gVGhpcyBoZWxwZXIgY2xhc3MgZW5z
dXJlcyB3ZSBhcHBlbmQgYSBuZXdsaW5lIGFmdGVyIHdyaXRpbmcgYSBsaW5lLgotICAgIGNsYXNz
IFN0cmVhbUhlbHBlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsKLSAgICAgIHB1YmxpYzoK
LSAgICAgICAgU3RyZWFtSGVscGVyKFN0cmVhbUhlbHBlciAmJnJocykgOiBtU3RyZWFtKHJocy5t
U3RyZWFtKSB7IHJocy5tU3RyZWFtID0gbnVsbHB0cjsgfQotCi0gICAgICAgIFN0cmVhbUhlbHBl
ciAmb3BlcmF0b3I9KFN0cmVhbUhlbHBlciAmJnJocykKLSAgICAgICAgewotICAgICAgICAgICAg
c3RkOjpzd2FwKG1TdHJlYW0sIHJocy5tU3RyZWFtKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhp
czsKLSAgICAgICAgfQotCi0gICAgICAgIH5TdHJlYW1IZWxwZXIoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBXcml0ZSBuZXdsaW5lIHdoZW4gZGVzdHJveWVkIG9uIHRoZSBzdGFjawotICAg
ICAgICAgICAgaWYgKG1TdHJlYW0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKCpt
U3RyZWFtKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgU3RyZWFtSGVscGVyICZvcGVyYXRvcjw8
KGNvbnN0IFQgJnZhbHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICAoKm1TdHJlYW0pIDw8IHZh
bHVlOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgIHByaXZh
dGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBJbmZvTG9nOwotCi0gICAgICAgIFN0cmVhbUhlbHBl
cihzdGQ6OnN0cmluZ3N0cmVhbSAqc3RyZWFtKSA6IG1TdHJlYW0oc3RyZWFtKSB7IEFTU0VSVChz
dHJlYW0pOyB9Ci0KLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gKm1TdHJlYW07Ci0gICAgfTsK
LQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIFN0cmVhbUhlbHBlciBvcGVyYXRvcjw8
KGNvbnN0IFQgJnZhbHVlKQotICAgIHsKLSAgICAgICAgZW5zdXJlSW5pdGlhbGl6ZWQoKTsKLSAg
ICAgICAgU3RyZWFtSGVscGVyIGhlbHBlcihtTGF6eVN0cmVhbS5nZXQoKSk7Ci0gICAgICAgIGhl
bHBlciA8PCB2YWx1ZTsKLSAgICAgICAgcmV0dXJuIGhlbHBlcjsKLSAgICB9Ci0KLSAgICBzdGQ6
OnN0cmluZyBzdHIoKSBjb25zdCB7IHJldHVybiBtTGF6eVN0cmVhbSA/IG1MYXp5U3RyZWFtLT5z
dHIoKSA6ICIiOyB9Ci0KLSAgICBib29sIGVtcHR5KCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAg
ICB2b2lkIGVuc3VyZUluaXRpYWxpemVkKCkKLSAgICB7Ci0gICAgICAgIGlmICghbUxhenlTdHJl
YW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1MYXp5U3RyZWFtLnJlc2V0KG5ldyBzdGQ6OnN0
cmluZ3N0cmVhbSgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxz
dGQ6OnN0cmluZ3N0cmVhbT4gbUxhenlTdHJlYW07Ci19OwotCiB2b2lkIExvZ0xpbmtNaXNtYXRj
aChJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnZhcmlhYmxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhcmlh
YmxlVHlwZSwKQEAgLTE3MCw2ICs5OSw5IEBAIGJvb2wgSXNBY3RpdmVJbnRlcmZhY2VCbG9jayhj
b25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrKTsKIHZvaWQgV3JpdGVCbG9j
a01lbWJlckluZm8oQmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0sIGNvbnN0IHNoOjpCbG9ja01l
bWJlckluZm8gJnZhcik7CiB2b2lkIExvYWRCbG9ja01lbWJlckluZm8oQmluYXJ5SW5wdXRTdHJl
YW0gKnN0cmVhbSwgc2g6OkJsb2NrTWVtYmVySW5mbyAqdmFyKTsKIAordm9pZCBXcml0ZVNoYWRl
clZhcihCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSwgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxl
ICZ2YXIpOwordm9pZCBMb2FkU2hhZGVyVmFyKEJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0sIHNo
OjpTaGFkZXJWYXJpYWJsZSAqdmFyKTsKKwogLy8gU3RydWN0IHVzZWQgZm9yIGNvcnJlbGF0aW5n
IHVuaWZvcm1zL2VsZW1lbnRzIG9mIHVuaWZvcm0gYXJyYXlzIHRvIGhhbmRsZXMKIHN0cnVjdCBW
YXJpYWJsZUxvY2F0aW9uCiB7CkBAIC0yMTksMjggKzE1MSw2IEBAIHN0cnVjdCBCaW5kaW5nSW5m
bwogICAgIGJvb2wgdmFsaWQ7CiB9OwogCi0vLyBUaGlzIHNtYWxsIHN0cnVjdHVyZSBlbmNhcHN1
bGF0ZXMgYmluZGluZyBzYW1wbGVyIHVuaWZvcm1zIHRvIGFjdGl2ZSBHTCB0ZXh0dXJlcy4KLXN0
cnVjdCBTYW1wbGVyQmluZGluZwotewotICAgIFNhbXBsZXJCaW5kaW5nKFRleHR1cmVUeXBlIHRl
eHR1cmVUeXBlSW4sCi0gICAgICAgICAgICAgICAgICAgU2FtcGxlckZvcm1hdCBmb3JtYXRJbiwK
LSAgICAgICAgICAgICAgICAgICBzaXplX3QgZWxlbWVudENvdW50LAotICAgICAgICAgICAgICAg
ICAgIGJvb2wgdW5yZWZlcmVuY2VkKTsKLSAgICBTYW1wbGVyQmluZGluZyhjb25zdCBTYW1wbGVy
QmluZGluZyAmb3RoZXIpOwotICAgIH5TYW1wbGVyQmluZGluZygpOwotCi0gICAgLy8gTmVjZXNz
YXJ5IGZvciByZXRyaWV2aW5nIGFjdGl2ZSB0ZXh0dXJlcyBmcm9tIHRoZSBHTCBzdGF0ZS4KLSAg
ICBUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZTsKLQotICAgIFNhbXBsZXJGb3JtYXQgZm9ybWF0Owot
Ci0gICAgLy8gTGlzdCBvZiBhbGwgdGV4dHVyZXMgYm91bmQgdG8gdGhpcyBzYW1wbGVyLCBvZiB0
eXBlIHRleHR1cmVUeXBlLgotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gYm91bmRUZXh0dXJlVW5p
dHM7Ci0KLSAgICAvLyBBIG5vdGUgaWYgdGhpcyBzYW1wbGVyIGlzIGFuIHVucmVmZXJlbmNlZCB1
bmlmb3JtLgotICAgIGJvb2wgdW5yZWZlcmVuY2VkOwotfTsKLQogLy8gQSB2YXJ5aW5nIHdpdGgg
dHJhbmZvcm0gZmVlZGJhY2sgZW5hYmxlZC4gSWYgaXQncyBhbiBhcnJheSwgZWl0aGVyIHRoZSB3
aG9sZSBhcnJheSBvciBvbmUgb2YgaXRzCiAvLyBlbGVtZW50cyBzcGVjaWZpZWQgYnkgJ2FycmF5
SW5kZXgnIGNhbiBzZXQgdG8gYmUgZW5hYmxlZC4KIHN0cnVjdCBUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcgOiBwdWJsaWMgc2g6OlNoYWRlclZhcmlhYmxlCkBAIC0yODAsMTcgKzE5MCw1MiBAQCBz
dHJ1Y3QgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nIDogcHVibGljIHNoOjpTaGFkZXJWYXJpYWJs
ZQogICAgIEdMdWludCBhcnJheUluZGV4OwogfTsKIAotc3RydWN0IEltYWdlQmluZGluZworc3Ry
dWN0IFByb2dyYW1CaW5kaW5nCiB7Ci0gICAgSW1hZ2VCaW5kaW5nKHNpemVfdCBjb3VudCk7Ci0g
ICAgSW1hZ2VCaW5kaW5nKEdMdWludCBpbWFnZVVuaXQsIHNpemVfdCBjb3VudCwgYm9vbCB1bnJl
ZmVyZW5jZWQpOwotICAgIEltYWdlQmluZGluZyhjb25zdCBJbWFnZUJpbmRpbmcgJm90aGVyKTsK
LSAgICB+SW1hZ2VCaW5kaW5nKCk7CisgICAgUHJvZ3JhbUJpbmRpbmcoKSA6IGxvY2F0aW9uKEdM
X0lOVkFMSURfSU5ERVgpLCBhbGlhc2VkKGZhbHNlKSB7fQorICAgIFByb2dyYW1CaW5kaW5nKEdM
dWludCBpbmRleCkgOiBsb2NhdGlvbihpbmRleCksIGFsaWFzZWQoZmFsc2UpIHt9CiAKLSAgICBz
dGQ6OnZlY3RvcjxHTHVpbnQ+IGJvdW5kSW1hZ2VVbml0czsKKyAgICBHTHVpbnQgbG9jYXRpb247
CisgICAgLy8gV2hldGhlciBhbm90aGVyIGJpbmRpbmcgd2FzIHNldCB0aGF0IG1heSBwb3RlbnRp
YWxseSBhbGlhcyB0aGlzLgorICAgIGJvb2wgYWxpYXNlZDsKK307CisKK2NsYXNzIFByb2dyYW1C
aW5kaW5ncyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgUHJv
Z3JhbUJpbmRpbmdzKCk7CisgICAgflByb2dyYW1CaW5kaW5ncygpOworCisgICAgdm9pZCBiaW5k
TG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSk7CisgICAgaW50
IGdldEJpbmRpbmdCeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIGlu
dCBnZXRCaW5kaW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUpIGNvbnN0Owor
CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJp
bmcsIEdMdWludD46OmNvbnN0X2l0ZXJhdG9yOworICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkg
Y29uc3Q7CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAKLSAgICAvLyBBIG5vdGUg
aWYgdGhpcyBpbWFnZSB1bml0IGlzIGFuIHVucmVmZXJlbmNlZCB1bmlmb3JtLgotICAgIGJvb2wg
dW5yZWZlcmVuY2VkOworICBwcml2YXRlOgorICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0
cmluZywgR0x1aW50PiBtQmluZGluZ3M7Cit9OworCisvLyBVbmlmb3JtcyBhbmQgRnJhZ21lbnQg
T3V0cHV0cyByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50IGR1ZSB0byBhcnJheSBub3RhdGlvbiAo
ZS5nLiwgIlswXSIpCitjbGFzcyBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzIGZpbmFsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBQcm9ncmFtQWxpYXNlZEJpbmRpbmdzKCk7
CisgICAgflByb2dyYW1BbGlhc2VkQmluZGluZ3MoKTsKKworICAgIHZvaWQgYmluZExvY2F0aW9u
KEdMdWludCBpbmRleCwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpOworICAgIGludCBnZXRCaW5k
aW5nQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKKyAgICBpbnQgZ2V0Qmlu
ZGluZ0J5TG9jYXRpb24oR0x1aW50IGxvY2F0aW9uKSBjb25zdDsKKyAgICBpbnQgZ2V0QmluZGlu
Zyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlKSBjb25zdDsKKworICAgIHVzaW5n
IGNvbnN0X2l0ZXJhdG9yID0gc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBQcm9ncmFt
QmluZGluZz46OmNvbnN0X2l0ZXJhdG9yOworICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3Q7CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBz
dGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFByb2dyYW1CaW5kaW5nPiBtQmluZGluZ3M7
CiB9OwogCiBjbGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKQEAg
LTMyMywxMiArMjY4LDYgQEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgICAgIHJldHVybiBtQWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3M7CiAgICAg
fQogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gJmdldFByb2dyYW1J
bnB1dHMoKSBjb25zdCB7IHJldHVybiBtUHJvZ3JhbUlucHV0czsgfQotICAgIGNvbnN0IEF0dHJp
YnV0ZXNNYXNrICZnZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsKLSAgICB9Ci0gICAgY29u
c3QgQXR0cmlidXRlc01hc2sgJmdldE5vbkJ1aWx0aW5BdHRyaWJMb2NhdGlvbnNNYXNrKCkgY29u
c3QgeyByZXR1cm4gbUF0dHJpYnV0ZXNNYXNrOyB9Ci0gICAgdW5zaWduZWQgaW50IGdldE1heEFj
dGl2ZUF0dHJpYkxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbU1heEFjdGl2ZUF0dHJpYkxvY2F0
aW9uOyB9CiAgICAgRHJhd0J1ZmZlck1hc2sgZ2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCkgY29u
c3QgeyByZXR1cm4gbUFjdGl2ZU91dHB1dFZhcmlhYmxlczsgfQogICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gJmdldE91dHB1dFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1PdXRwdXRWYXJpYWJsZXM7IH0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxv
Y2F0aW9uPiAmZ2V0T3V0cHV0TG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbU91dHB1dExvY2F0
aW9uczsgfQpAQCAtMzUxLDcgKzI5MCw2IEBAIGNsYXNzIFByb2dyYW1TdGF0ZSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgIGNvbnN0IFJhbmdlVUkgJmdldFNhbXBsZXJVbmlmb3JtUmFu
Z2UoKSBjb25zdCB7IHJldHVybiBtU2FtcGxlclVuaWZvcm1SYW5nZTsgfQogICAgIGNvbnN0IFJh
bmdlVUkgJmdldEltYWdlVW5pZm9ybVJhbmdlKCkgY29uc3QgeyByZXR1cm4gbUltYWdlVW5pZm9y
bVJhbmdlOyB9CiAgICAgY29uc3QgUmFuZ2VVSSAmZ2V0QXRvbWljQ291bnRlclVuaWZvcm1SYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuIG1BdG9taWNDb3VudGVyVW5pZm9ybVJhbmdlOyB9Ci0gICAgY29u
c3QgQ29tcG9uZW50VHlwZU1hc2sgJmdldEF0dHJpYnV0ZXNUeXBlTWFzaygpIGNvbnN0IHsgcmV0
dXJuIG1BdHRyaWJ1dGVzVHlwZU1hc2s7IH0KIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZz4gJmdldExpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
KSBjb25zdAogICAgIHsKQEAgLTM2MSw3ICsyOTksNiBAQCBjbGFzcyBQcm9ncmFtU3RhdGUgZmlu
YWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CiAgICAgICAgIHJldHVybiBtVHJhbnNmb3Jt
RmVlZGJhY2tTdHJpZGVzOwogICAgIH0KLSAgICBzaXplX3QgZ2V0VHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja1N0cmlkZXMuc2l6
ZSgpOyB9CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8QXRvbWljQ291bnRlckJ1ZmZlcj4gJmdldEF0
b21pY0NvdW50ZXJCdWZmZXJzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtQXRvbWlj
Q291bnRlckJ1ZmZlcnM7CkBAIC0zNzAsMTAgKzMwNywxMSBAQCBjbGFzcyBQcm9ncmFtU3RhdGUg
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHVu
aWZvcm0gYW5kIHN0b3JhZ2UgYnVmZmVyIGRlY2xhcmF0aW9ucywgY291bnRpbmcgYXJyYXlzIGFz
IG9uZS4KICAgICBzaXplX3QgZ2V0VW5pcXVlVW5pZm9ybUJsb2NrQ291bnQoKSBjb25zdDsKICAg
ICBzaXplX3QgZ2V0VW5pcXVlU3RvcmFnZUJsb2NrQ291bnQoKSBjb25zdDsKKyAgICBzaXplX3Qg
Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgpIGNvbnN0OwogCiAgICAgR0x1aW50IGdl
dFVuaWZvcm1JbmRleEZyb21OYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKLSAg
ICBHTHVpbnQgZ2V0VW5pZm9ybUluZGV4RnJvbUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25z
dDsKLSAgICBPcHRpb25hbDxHTHVpbnQ+IGdldFNhbXBsZXJJbmRleChHTGludCBsb2NhdGlvbikg
Y29uc3Q7CisgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleEZyb21Mb2NhdGlvbihVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24pIGNvbnN0OworICAgIE9wdGlvbmFsPEdMdWludD4gZ2V0U2FtcGxlcklu
ZGV4KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3Q7CiAgICAgYm9vbCBpc1NhbXBsZXJV
bmlmb3JtSW5kZXgoR0x1aW50IGluZGV4KSBjb25zdDsKICAgICBHTHVpbnQgZ2V0U2FtcGxlcklu
ZGV4RnJvbVVuaWZvcm1JbmRleChHTHVpbnQgdW5pZm9ybUluZGV4KSBjb25zdDsKICAgICBHTHVp
bnQgZ2V0VW5pZm9ybUluZGV4RnJvbVNhbXBsZXJJbmRleChHTHVpbnQgc2FtcGxlckluZGV4KSBj
b25zdDsKQEAgLTM4NywyMyArMzI1LDI5IEBAIGNsYXNzIFByb2dyYW1TdGF0ZSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgIGludCBnZXROdW1WaWV3cygpIGNvbnN0IHsgcmV0dXJuIG1O
dW1WaWV3czsgfQogICAgIGJvb2wgdXNlc011bHRpdmlldygpIGNvbnN0IHsgcmV0dXJuIG1OdW1W
aWV3cyAhPSAtMTsgfQogCi0gICAgY29uc3QgU2hhZGVyQml0U2V0ICZnZXRMaW5rZWRTaGFkZXJT
dGFnZXMoKSBjb25zdCB7IHJldHVybiBtTGlua2VkU2hhZGVyU3RhZ2VzOyB9Ci0gICAgYm9vbCBo
YXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlIHNoYWRlclR5cGUpIGNvbnN0CisgICAgYm9v
bCBoYXNBdHRhY2hlZFNoYWRlcigpIGNvbnN0OworCisgICAgU2hhZGVyVHlwZSBnZXRGaXJzdEF0
dGFjaGVkU2hhZGVyU3RhZ2VUeXBlKCkgY29uc3Q7CisgICAgU2hhZGVyVHlwZSBnZXRMYXN0QXR0
YWNoZWRTaGFkZXJTdGFnZVR5cGUoKSBjb25zdDsKKworICAgIGNvbnN0IFByb2dyYW1BbGlhc2Vk
QmluZGluZ3MgJmdldFVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtTGlua2VkU2hhZGVyU3RhZ2VzW3NoYWRlclR5cGVdOworICAgICAgICByZXR1
cm4gbVVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzOwogICAgIH0KLSAgICBzaXplX3QgZ2V0TGlua2Vk
U2hhZGVyU3RhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1MaW5rZWRTaGFkZXJTdGFnZXMuY291
bnQoKTsgfQotICAgIGJvb2wgaXNDb21wdXRlKCkgY29uc3QgeyByZXR1cm4gaGFzTGlua2VkU2hh
ZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSk7IH0KIAotICAgIGJvb2wgaGFzQXR0YWNoZWRT
aGFkZXIoKSBjb25zdDsKKyAgICBjb25zdCBQcm9ncmFtRXhlY3V0YWJsZSAmZ2V0UHJvZ3JhbUV4
ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtRXhlY3V0YWJsZTsgfQorICAgIFByb2dyYW1FeGVj
dXRhYmxlICZnZXRQcm9ncmFtRXhlY3V0YWJsZSgpIHsgcmV0dXJuIG1FeGVjdXRhYmxlOyB9CiAK
LSAgICBjb25zdCBBY3RpdmVUZXh0dXJlTWFzayAmZ2V0QWN0aXZlU2FtcGxlcnNNYXNrKCkgY29u
c3QgeyByZXR1cm4gbUFjdGl2ZVNhbXBsZXJzTWFzazsgfQotICAgIFNhbXBsZXJGb3JtYXQgZ2V0
U2FtcGxlckZvcm1hdEZvclRleHR1cmVVbml0SW5kZXgoc2l6ZV90IHRleHR1cmVVbml0SW5kZXgp
IGNvbnN0CisgICAgYm9vbCBoYXNEZWZhdWx0VW5pZm9ybXMoKSBjb25zdCB7IHJldHVybiAhZ2V0
RGVmYXVsdFVuaWZvcm1SYW5nZSgpLmVtcHR5KCk7IH0KKyAgICBib29sIGhhc1RleHR1cmVzKCkg
Y29uc3QgeyByZXR1cm4gIWdldFNhbXBsZXJCaW5kaW5ncygpLmVtcHR5KCk7IH0KKyAgICBib29s
IGhhc1VuaWZvcm1CdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gIWdldFVuaWZvcm1CbG9ja3MoKS5l
bXB0eSgpOyB9CisgICAgYm9vbCBoYXNTdG9yYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuICFn
ZXRTaGFkZXJTdG9yYWdlQmxvY2tzKCkuZW1wdHkoKTsgfQorICAgIGJvb2wgaGFzQXRvbWljQ291
bnRlckJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiAhZ2V0QXRvbWljQ291bnRlckJ1ZmZlcnMoKS5l
bXB0eSgpOyB9CisgICAgYm9vbCBoYXNJbWFnZXMoKSBjb25zdCB7IHJldHVybiAhZ2V0SW1hZ2VC
aW5kaW5ncygpLmVtcHR5KCk7IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtQWN0aXZlU2FtcGxlckZvcm1hdHNbdGV4
dHVyZVVuaXRJbmRleF07CisgICAgICAgIHJldHVybiAhZ2V0TGlua2VkVHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncygpLmVtcHR5KCk7CiAgICAgfQotICAgIFNoYWRlclR5cGUgZ2V0Rmlyc3RBdHRh
Y2hlZFNoYWRlclN0YWdlVHlwZSgpIGNvbnN0OwotICAgIFNoYWRlclR5cGUgZ2V0TGFzdEF0dGFj
aGVkU2hhZGVyU3RhZ2VUeXBlKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgTWVtb3J5UHJvZ3JhbUNhY2hlOwpAQCAtNDI0LDYgKzM2OCw3IEBAIGNsYXNzIFByb2dyYW1T
dGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgU2hhZGVyTWFwPFNoYWRlciAq
PiBtQXR0YWNoZWRTaGFkZXJzOwogCisgICAgdWludDMyX3QgbUxvY2F0aW9uc1VzZWRGb3JYZmJF
eHRlbnNpb247CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1UcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdOYW1lczsKICAgICBzdGQ6OnZlY3RvcjxUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc+
IG1MaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOwogICAgIEdMZW51bSBtVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJNb2RlOwpAQCAtNDMzLDExICszNzgsNiBAQCBjbGFzcyBQcm9ncmFtU3Rh
dGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIC8vIFZlcnRleCBhdHRyaWJ1dGVz
LCBGcmFnbWVudCBpbnB1dCB2YXJ5aW5ncywgZXRjLgogICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFk
ZXJWYXJpYWJsZT4gbVByb2dyYW1JbnB1dHM7Ci0gICAgYW5nbGU6OkJpdFNldDxNQVhfVkVSVEVY
X0FUVFJJQlM+IG1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOwotICAgIHVuc2lnbmVkIGludCBt
TWF4QWN0aXZlQXR0cmliTG9jYXRpb247Ci0gICAgQ29tcG9uZW50VHlwZU1hc2sgbUF0dHJpYnV0
ZXNUeXBlTWFzazsKLSAgICAvLyBtQXR0cmlidXRlc01hc2sgaXMgaWRlbnRpY2FsIHRvIG1BY3Rp
dmVBdHRyaWJMb2NhdGlvbnNNYXNrIHdpdGggYnVpbHQtaW4gYXR0cmlidXRlcyByZW1vdmVkLgot
ICAgIEF0dHJpYnV0ZXNNYXNrIG1BdHRyaWJ1dGVzTWFzazsKIAogICAgIC8vIFVuaWZvcm1zIGFy
ZSBzb3J0ZWQgaW4gb3JkZXI6CiAgICAgLy8gIDEuIE5vbi1vcGFxdWUgdW5pZm9ybXMKQEAgLTQ4
NCw3ICs0MjQsNiBAQCBjbGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKIAogICAgIGJvb2wgbUJpbmFyeVJldHJpZXZlYWJsZUhpbnQ7CiAgICAgYm9vbCBtU2VwYXJh
YmxlOwotICAgIFNoYWRlckJpdFNldCBtTGlua2VkU2hhZGVyU3RhZ2VzOwogCiAgICAgLy8gQU5H
TEVfbXVsdGl2aWV3LgogICAgIGludCBtTnVtVmlld3M7CkBAIC01MDksNjYgKzQ0OCwyMiBAQCBj
bGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAvLyBUaGUg
c2l6ZSBvZiB0aGUgZGF0YSB3cml0dGVuIHRvIGVhY2ggdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZl
ciBwZXIgdmVydGV4LgogICAgIHN0ZDo6dmVjdG9yPEdMc2l6ZWk+IG1UcmFuc2Zvcm1GZWVkYmFj
a1N0cmlkZXM7CiAKLSAgICAvLyBDYWNoZWQgbWFzayBvZiBhY3RpdmUgc2FtcGxlcnMgYW5kIHNh
bXBsZXIgdHlwZXMuCi0gICAgQWN0aXZlVGV4dHVyZU1hc2sgbUFjdGl2ZVNhbXBsZXJzTWFzazsK
LSAgICBBY3RpdmVUZXh0dXJlQXJyYXk8dWludDMyX3Q+IG1BY3RpdmVTYW1wbGVyUmVmQ291bnRz
OwotICAgIEFjdGl2ZVRleHR1cmVBcnJheTxUZXh0dXJlVHlwZT4gbUFjdGl2ZVNhbXBsZXJUeXBl
czsKLSAgICBBY3RpdmVUZXh0dXJlQXJyYXk8U2FtcGxlckZvcm1hdD4gbUFjdGl2ZVNhbXBsZXJG
b3JtYXRzOwotCi0gICAgLy8gQ2FjaGVkIG1hc2sgb2YgYWN0aXZlIGltYWdlcy4KLSAgICBBY3Rp
dmVUZXh0dXJlTWFzayBtQWN0aXZlSW1hZ2VzTWFzazsKLX07Ci0KLXN0cnVjdCBQcm9ncmFtQmlu
ZGluZwotewotICAgIFByb2dyYW1CaW5kaW5nKCkgOiBsb2NhdGlvbihHTF9JTlZBTElEX0lOREVY
KSwgYWxpYXNlZChmYWxzZSkge30KLSAgICBQcm9ncmFtQmluZGluZyhHTHVpbnQgaW5kZXgpIDog
bG9jYXRpb24oaW5kZXgpLCBhbGlhc2VkKGZhbHNlKSB7fQotCi0gICAgR0x1aW50IGxvY2F0aW9u
OwotICAgIC8vIFdoZXRoZXIgYW5vdGhlciBiaW5kaW5nIHdhcyBzZXQgdGhhdCBtYXkgcG90ZW50
aWFsbHkgYWxpYXMgdGhpcy4KLSAgICBib29sIGFsaWFzZWQ7Ci19OwotCi1jbGFzcyBQcm9ncmFt
QmluZGluZ3MgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGljOgotICAgIFBy
b2dyYW1CaW5kaW5ncygpOwotICAgIH5Qcm9ncmFtQmluZGluZ3MoKTsKLQotICAgIHZvaWQgYmlu
ZExvY2F0aW9uKEdMdWludCBpbmRleCwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpOwotICAgIGlu
dCBnZXRCaW5kaW5nQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKLSAgICBp
bnQgZ2V0QmluZGluZyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlKSBjb25zdDsK
LQotICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBHTHVpbnQ+Ojpjb25zdF9pdGVyYXRvcjsKLSAgICBjb25zdF9pdGVyYXRvciBiZWdpbigp
IGNvbnN0OwotICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwotCi0gIHByaXZhdGU6Ci0g
ICAgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBHTHVpbnQ+IG1CaW5kaW5nczsKLX07
Ci0KLS8vIFVuaWZvcm1zIGFuZCBGcmFnbWVudCBPdXRwdXRzIHJlcXVpcmUgc3BlY2lhbCB0cmVh
dG1lbnQgZHVlIHRvIGFycmF5IG5vdGF0aW9uIChlLmcuLCAiWzBdIikKLWNsYXNzIFByb2dyYW1B
bGlhc2VkQmluZGluZ3MgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGljOgot
ICAgIFByb2dyYW1BbGlhc2VkQmluZGluZ3MoKTsKLSAgICB+UHJvZ3JhbUFsaWFzZWRCaW5kaW5n
cygpOwotCi0gICAgdm9pZCBiaW5kTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSk7Ci0gICAgaW50IGdldEJpbmRpbmdCeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpIGNvbnN0OwotICAgIGludCBnZXRCaW5kaW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJs
ZSAmdmFyaWFibGUpIGNvbnN0OwotCi0gICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBzdGQ6OnVu
b3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFByb2dyYW1CaW5kaW5nPjo6Y29uc3RfaXRlcmF0b3I7
Ci0gICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKLSAgICBjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdDsKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRo
IGJpbmRpbmcgbGF5b3V0IHF1YWxpZmllcnMgdGhhdCBjYW4gYmUgc2V0IGZvciBzb21lCisgICAg
Ly8gdW5pZm9ybXMgaW4gR0xFUzMuMSsuIEl0IGlzIHVzZWQgdG8gcHJlLXNldCB0aGUgbG9jYXRp
b24gb2YgdW5pZm9ybXMuCisgICAgUHJvZ3JhbUFsaWFzZWRCaW5kaW5ncyBtVW5pZm9ybUxvY2F0
aW9uQmluZGluZ3M7CiAKLSAgcHJpdmF0ZToKLSAgICBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpz
dHJpbmcsIFByb2dyYW1CaW5kaW5nPiBtQmluZGluZ3M7CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUg
bUV4ZWN1dGFibGU7CiB9OwogCiBzdHJ1Y3QgUHJvZ3JhbVZhcnlpbmdSZWYKIHsKLSAgICBjb25z
dCBzaDo6U2hhZGVyVmFyaWFibGUgKmdldCgpIGNvbnN0IHsgcmV0dXJuIGZyb250U2hhZGVyID8g
ZnJvbnRTaGFkZXIgOiBiYWNrU2hhZGVyOyB9CisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxl
ICpnZXQoU2hhZGVyVHlwZSBzdGFnZSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGFn
ZSA9PSBmcm9udFNoYWRlclN0YWdlIHx8IHN0YWdlID09IGJhY2tTaGFkZXJTdGFnZSk7CisgICAg
ICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqcmVmID0gc3RhZ2UgPT0gZnJvbnRTaGFkZXJT
dGFnZSA/IGZyb250U2hhZGVyIDogYmFja1NoYWRlcjsKKyAgICAgICAgQVNTRVJUKHJlZik7Cisg
ICAgICAgIHJldHVybiByZWY7CisgICAgfQogCiAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxl
ICpmcm9udFNoYWRlciA9IG51bGxwdHI7CiAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICpi
YWNrU2hhZGVyICA9IG51bGxwdHI7CkBAIC01NzYsNyArNDcxLDcgQEAgc3RydWN0IFByb2dyYW1W
YXJ5aW5nUmVmCiAgICAgU2hhZGVyVHlwZSBiYWNrU2hhZGVyU3RhZ2UgICAgICAgICAgICA9IFNo
YWRlclR5cGU6OkludmFsaWRFbnVtOwogfTsKIAotdXNpbmcgUHJvZ3JhbU1lcmdlZFZhcnlpbmdz
ID0gc3RkOjptYXA8c3RkOjpzdHJpbmcsIFByb2dyYW1WYXJ5aW5nUmVmPjsKK3VzaW5nIFByb2dy
YW1NZXJnZWRWYXJ5aW5ncyA9IHN0ZDo6dmVjdG9yPFByb2dyYW1WYXJ5aW5nUmVmPjsKIAogY2xh
c3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmpl
Y3QKIHsKQEAgLTYwMiwxMiArNDk3LDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBjb25zdCBTaGFkZXIgKmdldEF0
dGFjaGVkU2hhZGVyKFNoYWRlclR5cGUgc2hhZGVyVHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIGJp
bmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOwotICAg
IHZvaWQgYmluZFVuaWZvcm1Mb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUp
OwotCi0gICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcKLSAgICBCaW5kaW5nSW5mbyBnZXRG
cmFnbWVudElucHV0QmluZGluZ0luZm8oR0xpbnQgaW5kZXgpIGNvbnN0OwotICAgIHZvaWQgYmlu
ZEZyYWdtZW50SW5wdXRMb2NhdGlvbihHTGludCBpbmRleCwgY29uc3QgY2hhciAqbmFtZSk7Ci0g
ICAgdm9pZCBwYXRoRnJhZ21lbnRJbnB1dEdlbihHTGludCBpbmRleCwgR0xlbnVtIGdlbk1vZGUs
IEdMaW50IGNvbXBvbmVudHMsIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7CisgICAgdm9pZCBiaW5k
VW5pZm9ybUxvY2F0aW9uKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgY29uc3QgY2hhciAqbmFt
ZSk7CiAKICAgICAvLyBFWFRfYmxlbmRfZnVuY19leHRlbmRlZAogICAgIHZvaWQgYmluZEZyYWdt
ZW50T3V0cHV0TG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKTsKQEAgLTYy
NywxMyArNTE3LDYgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwg
cHVibGljIExhYmVsZWRPYmplY3QKICAgICAgICAgcmV0dXJuIG1MaW5rZWQ7CiAgICAgfQogCi0g
ICAgYm9vbCBoYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlIHNoYWRlclR5cGUpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQoc2hhZGVyVHlwZSAhPSBTaGFkZXJUeXBlOjpJbnZhbGlk
RW51bSk7Ci0gICAgICAgIHJldHVybiBtU3RhdGUuaGFzTGlua2VkU2hhZGVyU3RhZ2Uoc2hhZGVy
VHlwZSk7Ci0gICAgfQotICAgIGJvb2wgaXNDb21wdXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRl
LmlzQ29tcHV0ZSgpOyB9Ci0KICAgICBhbmdsZTo6UmVzdWx0IGxvYWRCaW5hcnkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFy
eUZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5
LApAQCAtNjUwLDEyICs1MzMsOSBAQCBjbGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIHZvaWQgc2V0U2VwYXJhYmxlKGJvb2wg
c2VwYXJhYmxlKTsKICAgICBib29sIGlzU2VwYXJhYmxlKCkgY29uc3Q7CiAKLSAgICBpbnQgZ2V0
SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OwotICAgIHZvaWQgZ2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykgY29uc3Q7CiAgICAgdm9pZCBnZXRB
dHRhY2hlZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIFNoYWRlclBy
b2dyYW1JRCAqc2hhZGVycykgY29uc3Q7CiAKICAgICBHTHVpbnQgZ2V0QXR0cmlidXRlTG9jYXRp
b24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OwotICAgIGJvb2wgaXNBdHRyaWJMb2Nh
dGlvbkFjdGl2ZShzaXplX3QgYXR0cmliTG9jYXRpb24pIGNvbnN0OwogCiAgICAgdm9pZCBnZXRB
Y3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmc2l6ZSwKQEAgLTY4OCw5ICs1NjgsOSBAQCBjbGFzcyBQcm9ncmFtIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIEdMaW50IGdl
dEFjdGl2ZVVuaWZvcm1Db3VudCgpIGNvbnN0OwogICAgIHNpemVfdCBnZXRBY3RpdmVCdWZmZXJW
YXJpYWJsZUNvdW50KCkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybU1heExlbmd0
aCgpIGNvbnN0OwotICAgIGJvb2wgaXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlv
bikgY29uc3Q7Ci0gICAgY29uc3QgTGlua2VkVW5pZm9ybSAmZ2V0VW5pZm9ybUJ5TG9jYXRpb24o
R0xpbnQgbG9jYXRpb24pIGNvbnN0OwotICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmdldFVu
aWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkVW5p
Zm9ybUxvY2F0aW9uKFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbikgY29uc3Q7CisgICAgY29uc3Qg
TGlua2VkVW5pZm9ybSAmZ2V0VW5pZm9ybUJ5TG9jYXRpb24oVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uKSBjb25zdDsKKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZnZXRVbmlmb3JtTG9jYXRp
b24oVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uKSBjb25zdDsKIAogICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPFZhcmlhYmxlTG9jYXRpb24+ICZnZXRVbmlmb3JtTG9jYXRpb25zKCkgY29uc3QKICAgICB7
CkBAIC03MTMsNjAgKzU5Myw2MCBAQCBjbGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgICAgICBOb1NhbXBsZXJDaGFuZ2UsCiAg
ICAgfTsKIAotICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAm
bmFtZSkgY29uc3Q7CisgICAgVW5pZm9ybUxvY2F0aW9uIGdldFVuaWZvcm1Mb2NhdGlvbihjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7CiAgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleChj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVbmlmb3JtMWZ2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKLSAgICB2b2lk
IHNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnYpOwotICAgIHZvaWQgc2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdik7Ci0gICAgdm9pZCBzZXRVbmlmb3JtNGZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKLSAgICB2b2lkIHNldFVu
aWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2KTsKLSAgICB2b2lkIHNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKLSAgICB2b2lkIHNldFVuaWZvcm0zaXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKLSAgICB2b2lk
IHNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2KTsKLSAgICB2b2lkIHNldFVuaWZvcm0xdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnYpOwotICAgIHZvaWQgc2V0VW5pZm9ybTJ1aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdik7Ci0gICAgdm9pZCBzZXRVbmlm
b3JtM3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KTsK
LSAgICB2b2lkIHNldFVuaWZvcm00dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTHVpbnQgKnYpOwotICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2Nh
dGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm0xZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKKyAgICB2b2lkIHNldFVuaWZvcm0yZnYo
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
KTsKKyAgICB2b2lkIHNldFVuaWZvcm0zZnYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKKyAgICB2b2lkIHNldFVuaWZvcm00ZnYoVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsK
KyAgICB2b2lkIHNldFVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7CisgICAgdm9pZCBzZXRV
bmlmb3JtMml2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpOworICAgIHZvaWQgc2V0VW5pZm9ybTNpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKKyAgICB2b2lkIHNldFVuaWZvcm00
aXYoVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dik7CisgICAgdm9pZCBzZXRVbmlmb3JtMXVpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdik7CisgICAgdm9pZCBzZXRVbmlmb3JtMnVpdihV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdik7
CisgICAgdm9pZCBzZXRVbmlmb3JtM3VpdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdik7CisgICAgdm9pZCBzZXRVbmlmb3JtNHVpdihVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdik7Cisg
ICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MmZ2KFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJp
eDNmdihHTGludCBsb2NhdGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgzZnYoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0g
ICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAgIHZvaWQgc2V0
VW5pZm9ybU1hdHJpeDRmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgyeDNmdihHTGlu
dCBsb2NhdGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgyeDNmdihVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAg
ICB2b2lkIHNldFVuaWZvcm1NYXRyaXgzeDJmdihHTGludCBsb2NhdGlvbiwKKyAgICB2b2lkIHNl
dFVuaWZvcm1NYXRyaXgzeDJmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgy
eDRmdihHTGludCBsb2NhdGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgyeDRmdihVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwKKyAg
ICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0eDJmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZv
cm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgz
eDRmdihVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0eDNmdihHTGludCBsb2Nh
dGlvbiwKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXg0eDNmdihVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIAotICAgIHZv
aWQgZ2V0VW5pZm9ybWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBH
TGZsb2F0ICpwYXJhbXMpIGNvbnN0OwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKSBjb25zdDsKLSAgICB2
b2lkIGdldFVuaWZvcm11aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24s
IEdMdWludCAqcGFyYW1zKSBjb25zdDsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sIEdMZmxvYXQgKnBhcmFtcykg
Y29uc3Q7CisgICAgdm9pZCBnZXRVbmlmb3JtaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKSBjb25zdDsKKyAgICB2b2lkIGdl
dFVuaWZvcm11aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLCBHTHVpbnQgKnBhcmFtcykgY29uc3Q7CiAKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1C
bG9ja05hbWUoY29uc3QgR0x1aW50IGJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKQEAgLTg2OCwxMiArNzQ4LDYgQEAgY2xhc3Mg
UHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QK
IAogICAgIGJvb2wgaXNWYWxpZGF0ZWQoKSBjb25zdDsKIAotICAgIGNvbnN0IEF0dHJpYnV0ZXNN
YXNrICZnZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChtTGlua1Jlc29sdmVkKTsKLSAgICAgICAgcmV0dXJuIG1TdGF0ZS5tQWN0aXZlQXR0
cmliTG9jYXRpb25zTWFzazsKLSAgICB9Ci0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVy
QmluZGluZz4gJmdldFNhbXBsZXJCaW5kaW5ncygpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPEltYWdlQmluZGluZz4gJmdldEltYWdlQmluZGluZ3MoKSBjb25zdAogICAgIHsKQEAgLTky
MSw3ICs3OTUsNiBAQCBjbGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBw
dWJsaWMgTGFiZWxlZE9iamVjdAogICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZ2V0T3V0
cHV0UmVzb3VyY2Uoc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIGNvbnN0IFByb2dyYW1CaW5k
aW5ncyAmZ2V0QXR0cmlidXRlQmluZGluZ3MoKSBjb25zdDsKLSAgICBjb25zdCBQcm9ncmFtQmlu
ZGluZ3MgJmdldEZyYWdtZW50SW5wdXRCaW5kaW5ncygpIGNvbnN0OwogICAgIGNvbnN0IFByb2dy
YW1BbGlhc2VkQmluZGluZ3MgJmdldFVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzKCkgY29uc3Q7CiAK
ICAgICBpbnQgZ2V0TnVtVmlld3MoKSBjb25zdApAQCAtOTMzLDE5ICs4MDYsOSBAQCBjbGFzcyBQ
cm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAog
ICAgIGJvb2wgdXNlc011bHRpdmlldygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS51c2VzTXVsdGl2
aWV3KCk7IH0KIAogICAgIENvbXBvbmVudFR5cGVNYXNrIGdldERyYXdCdWZmZXJUeXBlTWFzaygp
IGNvbnN0OwotICAgIENvbXBvbmVudFR5cGVNYXNrIGdldEF0dHJpYnV0ZXNUeXBlTWFzaygpIGNv
bnN0OwotICAgIEF0dHJpYnV0ZXNNYXNrIGdldEF0dHJpYnV0ZXNNYXNrKCkgY29uc3Q7CiAKICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxHTHNpemVpPiAmZ2V0VHJhbnNmb3JtRmVlZGJhY2tTdHJpZGVz
KCkgY29uc3Q7CiAKLSAgICBjb25zdCBBY3RpdmVUZXh0dXJlTWFzayAmZ2V0QWN0aXZlU2FtcGxl
cnNNYXNrKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1BY3RpdmVTYW1wbGVyc01hc2s7IH0KLSAg
ICBjb25zdCBBY3RpdmVUZXh0dXJlTWFzayAmZ2V0QWN0aXZlSW1hZ2VzTWFzaygpIGNvbnN0IHsg
cmV0dXJuIG1TdGF0ZS5tQWN0aXZlSW1hZ2VzTWFzazsgfQotCi0gICAgY29uc3QgQWN0aXZlVGV4
dHVyZUFycmF5PFRleHR1cmVUeXBlPiAmZ2V0QWN0aXZlU2FtcGxlclR5cGVzKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtU3RhdGUubUFjdGl2ZVNhbXBsZXJUeXBlczsKLSAgICB9Ci0K
ICAgICAvLyBQcm9ncmFtIGRpcnR5IGJpdHMuCiAgICAgZW51bSBEaXJ0eUJpdFR5cGUKICAgICB7
CkBAIC05NzYsNiArODM5LDkgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKIAogICAgIHJ4OjpTZXJpYWwgc2VyaWFsKCkgY29u
c3QgeyByZXR1cm4gbVNlcmlhbDsgfQogCisgICAgY29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUgJmdl
dEV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsgfQorICAgIFByb2dyYW1FeGVjdXRhYmxlICZnZXRFeGVjdXRhYmxlKCkgeyByZXR1cm4gbVN0
YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7IH0KKwogICBwcml2YXRlOgogICAgIHN0cnVjdCBM
aW5raW5nU3RhdGU7CiAKQEAgLTEwMTcsMTggKzg4MywxNSBAQCBjbGFzcyBQcm9ncmFtIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyICpjb25zdW1pbmdTaGFkZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvTG9nICZp
bmZvTG9nKSBjb25zdDsKIAotICAgIC8vIENoZWNrIGZvciBhbGlhc2VkIHBhdGggcmVuZGVyaW5n
IGlucHV0IGJpbmRpbmdzIChpZiBhbnkpLgotICAgIC8vIElmIG1vcmUgdGhhbiBvbmUgYmluZGlu
ZyByZWZlciBzdGF0aWNhbGx5IHRvIHRoZSBzYW1lIGxvY2F0aW9uIHRoZSBsaW5rIG11c3QgZmFp
bC4KLSAgICBib29sIGxpbmtWYWxpZGF0ZUZyYWdtZW50SW5wdXRCaW5kaW5ncyhJbmZvTG9nICZp
bmZvTG9nKSBjb25zdDsKLQogICAgIGJvb2wgbGlua1ZhbGlkYXRlQnVpbHRJblZhcnlpbmdzKElu
Zm9Mb2cgJmluZm9Mb2cpIGNvbnN0OwogICAgIGJvb2wgbGlua1ZhbGlkYXRlVHJhbnNmb3JtRmVl
ZGJhY2soY29uc3QgVmVyc2lvbiAmdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgJmxpbmtlZFZhcnlpbmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSBzdGFn
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNh
cHMpIGNvbnN0OwogICAgIGJvb2wgbGlua1ZhbGlkYXRlR2xvYmFsTmFtZXMoSW5mb0xvZyAmaW5m
b0xvZykgY29uc3Q7CiAKLSAgICB2b2lkIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
Y29uc3QgUHJvZ3JhbU1lcmdlZFZhcnlpbmdzICZ2YXJ5aW5ncyk7CisgICAgdm9pZCBnYXRoZXJU
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFByb2dyYW1NZXJnZWRWYXJ5aW5ncyAmdmFy
eWluZ3MsIFNoYWRlclR5cGUgc3RhZ2UpOwogCiAgICAgUHJvZ3JhbU1lcmdlZFZhcnlpbmdzIGdl
dE1lcmdlZFZhcnlpbmdzKCkgY29uc3Q7CiAgICAgaW50IGdldE91dHB1dExvY2F0aW9uRm9yTGlu
ayhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJm91dHB1dFZhcmlhYmxlKSBjb25zdDsKQEAgLTEw
NDAsNiArOTAzLDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwg
cHVibGljIExhYmVsZWRPYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGNvbWJpbmVkU2hhZGVyU3RvcmFnZUJsb2Nrc0NvdW50KTsKIAogICAgIHZvaWQgc2V0VW5pZm9y
bVZhbHVlc0Zyb21CaW5kaW5nUXVhbGlmaWVycygpOworICAgIGJvb2wgc2hvdWxkSWdub3JlVW5p
Zm9ybShVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24pIGNvbnN0OwogCiAgICAgdm9pZCBpbml0SW50
ZXJmYWNlQmxvY2tCaW5kaW5ncygpOwogCkBAIC0xMDUxLDcgKzkxNSwxMCBAQCBjbGFzcyBQcm9n
cmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlY3RvclNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUICp2KTsKICAgICB0ZW1wbGF0ZSA8c2l6ZV90IGNvbHMs
IHNpemVfdCByb3dzLCB0eXBlbmFtZSBUPgotICAgIEdMc2l6ZWkgY2xhbXBNYXRyaXhVbmlmb3Jt
Q291bnQoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IFQgKnYpOworICAgIEdMc2l6ZWkgY2xhbXBNYXRyaXhVbmlmb3JtQ291bnQoVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUICp2KTsKIAogICAgIHZvaWQgdXBkYXRlU2FtcGxlclVuaWZvcm0oQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24g
JmxvY2F0aW9uSW5mbywKQEAgLTEwNjEsNyArOTI4LDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRGVzdFQ+CiAgICAgdm9pZCBnZXRVbmlmb3JtSW50ZXJuYWwoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXN0VCAqZGF0YU91dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNvbXBvbmVudHMpIGNvbnN0OwogCkBAIC0xMDkxLDEzICs5NTgsNiBAQCBjbGFz
cyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVj
dAogCiAgICAgUHJvZ3JhbUJpbmRpbmdzIG1BdHRyaWJ1dGVCaW5kaW5nczsKIAotICAgIC8vIE5v
dGUgdGhhdCB0aGlzIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggYmluZGluZyBsYXlvdXQgcXVhbGlm
aWVycyB0aGF0IGNhbiBiZSBzZXQgZm9yIHNvbWUKLSAgICAvLyB1bmlmb3JtcyBpbiBHTEVTMy4x
Ky4gSXQgaXMgdXNlZCB0byBwcmUtc2V0IHRoZSBsb2NhdGlvbiBvZiB1bmlmb3Jtcy4KLSAgICBQ
cm9ncmFtQWxpYXNlZEJpbmRpbmdzIG1Vbmlmb3JtTG9jYXRpb25CaW5kaW5nczsKLQotICAgIC8v
IENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0gICAgUHJvZ3JhbUJpbmRpbmdzIG1GcmFnbWVudElu
cHV0QmluZGluZ3M7Ci0KICAgICAvLyBFWFRfYmxlbmRfZnVuY19leHRlbmRlZAogICAgIFByb2dy
YW1BbGlhc2VkQmluZGluZ3MgbUZyYWdtZW50T3V0cHV0TG9jYXRpb25zOwogICAgIFByb2dyYW1B
bGlhc2VkQmluZGluZ3MgbUZyYWdtZW50T3V0cHV0SW5kZXhlczsKQEAgLTExMTIsOCArOTcyLDYg
QEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVs
ZWRPYmplY3QKICAgICBTaGFkZXJQcm9ncmFtTWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKICAg
ICBjb25zdCBTaGFkZXJQcm9ncmFtSUQgbUhhbmRsZTsKIAotICAgIEluZm9Mb2cgbUluZm9Mb2c7
Ci0KICAgICAvLyBDYWNoZSBmb3Igc2FtcGxlciB2YWxpZGF0aW9uCiAgICAgT3B0aW9uYWw8Ym9v
bD4gbUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYzYjlhY2ZiYjQwOGMxODA5MDVmZWUzNGI2ODA5NjYxYzgxNjc3NWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwCkBAIC0wLDAgKzEsMjcwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMjAg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwOiBDb2xsZWN0cyB0aGUgaW50ZXJmYWNlcyBjb21tb24gdG8gYm90aCBQcm9n
cmFtcyBhbmQKKy8vIFByb2dyYW1QaXBlbGluZXMgaW4gb3JkZXIgdG8gZXhlY3V0ZS9kcmF3IHdp
dGggZWl0aGVyLgorCisjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUuaCIKKwor
I2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK1Byb2dy
YW1FeGVjdXRhYmxlOjpQcm9ncmFtRXhlY3V0YWJsZSgpCisgICAgOiBtUHJvZ3JhbVN0YXRlKG51
bGxwdHIpLAorICAgICAgbVByb2dyYW1QaXBlbGluZVN0YXRlKG51bGxwdHIpLAorICAgICAgbU1h
eEFjdGl2ZUF0dHJpYkxvY2F0aW9uKDApLAorICAgICAgbUF0dHJpYnV0ZXNUeXBlTWFzaygwKSwK
KyAgICAgIG1BdHRyaWJ1dGVzTWFzaygwKSwKKyAgICAgIG1BY3RpdmVTYW1wbGVyc01hc2soMCks
CisgICAgICBtQWN0aXZlU2FtcGxlclJlZkNvdW50c3t9LAorICAgICAgbUFjdGl2ZUltYWdlc01h
c2soMCkKK3sKKyAgICBtQWN0aXZlU2FtcGxlclR5cGVzLmZpbGwoVGV4dHVyZVR5cGU6OkludmFs
aWRFbnVtKTsKKyAgICBtQWN0aXZlU2FtcGxlckZvcm1hdHMuZmlsbChTYW1wbGVyRm9ybWF0OjpJ
bnZhbGlkRW51bSk7Cit9CisKK1Byb2dyYW1FeGVjdXRhYmxlOjp+UHJvZ3JhbUV4ZWN1dGFibGUo
KSA9IGRlZmF1bHQ7CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnJlc2V0KCkKK3sKKyAgICBy
ZXNldEluZm9Mb2coKTsKKyAgICBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzay5yZXNldCgpOwor
ICAgIG1BdHRyaWJ1dGVzVHlwZU1hc2sucmVzZXQoKTsKKyAgICBtQXR0cmlidXRlc01hc2sucmVz
ZXQoKTsKKyAgICBtTWF4QWN0aXZlQXR0cmliTG9jYXRpb24gPSAwOworCisgICAgbUFjdGl2ZVNh
bXBsZXJzTWFzay5yZXNldCgpOworICAgIG1BY3RpdmVTYW1wbGVyUmVmQ291bnRzID0ge307Cisg
ICAgbUFjdGl2ZVNhbXBsZXJUeXBlcy5maWxsKFRleHR1cmVUeXBlOjpJbnZhbGlkRW51bSk7Cisg
ICAgbUFjdGl2ZVNhbXBsZXJGb3JtYXRzLmZpbGwoU2FtcGxlckZvcm1hdDo6SW52YWxpZEVudW0p
OworCisgICAgbUFjdGl2ZUltYWdlc01hc2sucmVzZXQoKTsKK30KKworaW50IFByb2dyYW1FeGVj
dXRhYmxlOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihtSW5mb0xvZy5nZXRMZW5ndGgoKSk7Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFi
bGU6OmdldEluZm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmlu
Zm9Mb2cpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmZvTG9nLmdldExvZyhidWZTaXplLCBsZW5n
dGgsIGluZm9Mb2cpOworfQorCitzdGQ6OnN0cmluZyBQcm9ncmFtRXhlY3V0YWJsZTo6Z2V0SW5m
b0xvZ1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbmZvTG9nLnN0cigpOworfQorCiti
b29sIFByb2dyYW1FeGVjdXRhYmxlOjppc0F0dHJpYkxvY2F0aW9uQWN0aXZlKHNpemVfdCBhdHRy
aWJMb2NhdGlvbikgY29uc3QKK3sKKyAgICAvLyBUT0RPKHRpbXZwKTogaHR0cDovL2FuZ2xlYnVn
LmNvbS8zNTcwOiBFbmFibGUgdGhpcyBhc3NlcnQgaGVyZSBzb21laG93LgorICAgIC8vICAgIEFT
U0VSVChtTGlua1Jlc29sdmVkKTsKKyAgICBBU1NFUlQoYXR0cmliTG9jYXRpb24gPCBtQWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzay5zaXplKCkpOworICAgIHJldHVybiBtQWN0aXZlQXR0cmliTG9j
YXRpb25zTWFza1thdHRyaWJMb2NhdGlvbl07Cit9CisKK0F0dHJpYnV0ZXNNYXNrIFByb2dyYW1F
eGVjdXRhYmxlOjpnZXRBdHRyaWJ1dGVzTWFzaygpIGNvbnN0Cit7CisgICAgLy8gVE9ETyh0aW12
cCk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzU3MDogRW5hYmxlIHRoaXMgYXNzZXJ0IGhlcmUgc29t
ZWhvdy4KKyAgICAvLyAgICBBU1NFUlQobUxpbmtSZXNvbHZlZCk7CisgICAgcmV0dXJuIG1BdHRy
aWJ1dGVzTWFzazsKK30KKworYm9vbCBQcm9ncmFtRXhlY3V0YWJsZTo6aGFzRGVmYXVsdFVuaWZv
cm1zKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobVByb2dy
YW1TdGF0ZSB8fCBtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgIGlmIChtUHJvZ3JhbVN0YXRl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1Qcm9ncmFtU3RhdGUtPmhhc0RlZmF1bHRVbmlmb3Jt
cygpOworICAgIH0KKworICAgIC8vIFRPRE8odGltdnApOiBodHRwOi8vYW5nbGVidWcuY29tLzM1
NzA6IFN1cHBvcnQgcHJvZ3JhbSBwaXBlbGluZXMKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBQcm9ncmFtRXhlY3V0YWJsZTo6aGFzVGV4dHVyZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0
YXRlKSBjb25zdAoreworICAgIEFTU0VSVChtUHJvZ3JhbVN0YXRlIHx8IG1Qcm9ncmFtUGlwZWxp
bmVTdGF0ZSk7CisgICAgaWYgKG1Qcm9ncmFtU3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4g
bVByb2dyYW1TdGF0ZS0+aGFzVGV4dHVyZXMoKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKHRpbXZw
KTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBTdXBwb3J0IHByb2dyYW0gcGlwZWxpbmVzCisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUHJvZ3JhbUV4ZWN1dGFibGU6Omhhc1VuaWZv
cm1CdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bVByb2dyYW1TdGF0ZSB8fCBtUHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgIGlmIChtUHJvZ3Jh
bVN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1Qcm9ncmFtU3RhdGUtPmhhc1VuaWZvcm1C
dWZmZXJzKCk7CisgICAgfQorCisgICAgLy8gVE9ETyh0aW12cCk6IGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMzU3MDogU3VwcG9ydCBwcm9ncmFtIHBpcGVsaW5lcworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFByb2dyYW1FeGVjdXRhYmxlOjpoYXNTdG9yYWdlQnVmZmVycyhjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1Qcm9ncmFtU3RhdGUgfHwgbVBy
b2dyYW1QaXBlbGluZVN0YXRlKTsKKyAgICBpZiAobVByb2dyYW1TdGF0ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtUHJvZ3JhbVN0YXRlLT5oYXNTdG9yYWdlQnVmZmVycygpOworICAgIH0KKwor
ICAgIC8vIFRPRE8odGltdnApOiBodHRwOi8vYW5nbGVidWcuY29tLzM1NzA6IFN1cHBvcnQgcHJv
Z3JhbSBwaXBlbGluZXMKKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBQcm9ncmFtRXhl
Y3V0YWJsZTo6aGFzQXRvbWljQ291bnRlckJ1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRl
KSBjb25zdAoreworICAgIEFTU0VSVChtUHJvZ3JhbVN0YXRlIHx8IG1Qcm9ncmFtUGlwZWxpbmVT
dGF0ZSk7CisgICAgaWYgKG1Qcm9ncmFtU3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gbVBy
b2dyYW1TdGF0ZS0+aGFzQXRvbWljQ291bnRlckJ1ZmZlcnMoKTsKKyAgICB9CisKKyAgICAvLyBU
T0RPKHRpbXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcwOiBTdXBwb3J0IHByb2dyYW0gcGlw
ZWxpbmVzCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUHJvZ3JhbUV4ZWN1dGFibGU6
Omhhc0ltYWdlcyhjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1Qcm9ncmFtU3RhdGUgfHwgbVByb2dyYW1QaXBlbGluZVN0YXRlKTsKKyAgICBpZiAobVByb2dy
YW1TdGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtUHJvZ3JhbVN0YXRlLT5oYXNJbWFnZXMo
KTsKKyAgICB9CisKKyAgICAvLyBUT0RPKHRpbXZwKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTcw
OiBTdXBwb3J0IHByb2dyYW0gcGlwZWxpbmVzCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgUHJvZ3JhbUV4ZWN1dGFibGU6Omhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KGNvbnN0IGds
OjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobVByb2dyYW1TdGF0ZSB8fCBt
UHJvZ3JhbVBpcGVsaW5lU3RhdGUpOworICAgIGlmIChtUHJvZ3JhbVN0YXRlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1Qcm9ncmFtU3RhdGUtPmhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KCk7
CisgICAgfQorCisgICAgLy8gVE9ETyh0aW12cCk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzU3MDog
U3VwcG9ydCBwcm9ncmFtIHBpcGVsaW5lcworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzaXpl
X3QgUHJvZ3JhbUV4ZWN1dGFibGU6OmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoY29u
c3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdAoreworICAgIEFTU0VSVChtUHJvZ3JhbVN0YXRl
IHx8IG1Qcm9ncmFtUGlwZWxpbmVTdGF0ZSk7CisgICAgaWYgKG1Qcm9ncmFtU3RhdGUpCisgICAg
eworICAgICAgICByZXR1cm4gbVByb2dyYW1TdGF0ZS0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJDb3VudCgpOworICAgIH0KKworICAgIC8vIFRPRE8odGltdnApOiBodHRwOi8vYW5nbGVidWcu
Y29tLzM1NzA6IFN1cHBvcnQgcHJvZ3JhbSBwaXBlbGluZXMKKworICAgIHJldHVybiAwOworfQor
Cit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp1cGRhdGVBY3RpdmVTYW1wbGVycyhjb25zdCBzdGQ6
OnZlY3RvcjxTYW1wbGVyQmluZGluZz4gJnNhbXBsZXJCaW5kaW5ncykKK3sKKyAgICBmb3IgKGNv
bnN0IFNhbXBsZXJCaW5kaW5nICZzYW1wbGVyQmluZGluZyA6IHNhbXBsZXJCaW5kaW5ncykKKyAg
ICB7CisgICAgICAgIGlmIChzYW1wbGVyQmluZGluZy51bnJlZmVyZW5jZWQpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVVbml0IDogc2FtcGxlckJp
bmRpbmcuYm91bmRUZXh0dXJlVW5pdHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21B
Y3RpdmVTYW1wbGVyUmVmQ291bnRzW3RleHR1cmVVbml0XSA9PSAxKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1BY3RpdmVTYW1wbGVyVHlwZXNbdGV4dHVyZVVuaXRdICAgPSBzYW1w
bGVyQmluZGluZy50ZXh0dXJlVHlwZTsKKyAgICAgICAgICAgICAgICBtQWN0aXZlU2FtcGxlckZv
cm1hdHNbdGV4dHVyZVVuaXRdID0gc2FtcGxlckJpbmRpbmcuZm9ybWF0OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICht
QWN0aXZlU2FtcGxlclR5cGVzW3RleHR1cmVVbml0XSAhPSBzYW1wbGVyQmluZGluZy50ZXh0dXJl
VHlwZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1BY3RpdmVTYW1w
bGVyVHlwZXNbdGV4dHVyZVVuaXRdID0gVGV4dHVyZVR5cGU6OkludmFsaWRFbnVtOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobUFjdGl2ZVNhbXBsZXJGb3JtYXRzW3Rl
eHR1cmVVbml0XSAhPSBzYW1wbGVyQmluZGluZy5mb3JtYXQpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtQWN0aXZlU2FtcGxlckZvcm1hdHNbdGV4dHVyZVVuaXRdID0g
U2FtcGxlckZvcm1hdDo6SW52YWxpZEVudW07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbUFjdGl2ZVNhbXBsZXJzTWFzay5zZXQodGV4dHVyZVVuaXQpOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjp1cGRhdGVBY3Rp
dmVJbWFnZXMoc3RkOjp2ZWN0b3I8SW1hZ2VCaW5kaW5nPiAmaW1hZ2VCaW5kaW5ncykKK3sKKyAg
ICBmb3IgKEltYWdlQmluZGluZyAmaW1hZ2VCaW5kaW5nIDogaW1hZ2VCaW5kaW5ncykKKyAgICB7
CisgICAgICAgIGlmIChpbWFnZUJpbmRpbmcudW5yZWZlcmVuY2VkKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgZm9yIChHTGludCBpbWFnZVVuaXQgOiBpbWFnZUJpbmRpbmcuYm91
bmRJbWFnZVVuaXRzKQorICAgICAgICB7CisgICAgICAgICAgICBtQWN0aXZlSW1hZ2VzTWFzay5z
ZXQoaW1hZ2VVbml0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBQcm9ncmFtRXhlY3V0
YWJsZTo6c2V0U2FtcGxlclVuaWZvcm1UZXh0dXJlVHlwZUFuZEZvcm1hdCgKKyAgICBzaXplX3Qg
dGV4dHVyZVVuaXRJbmRleCwKKyAgICBzdGQ6OnZlY3RvcjxTYW1wbGVyQmluZGluZz4gJnNhbXBs
ZXJCaW5kaW5ncykKK3sKKyAgICBib29sIGZvdW5kQmluZGluZyAgICAgICAgID0gZmFsc2U7Cisg
ICAgVGV4dHVyZVR5cGUgZm91bmRUeXBlICAgICA9IFRleHR1cmVUeXBlOjpJbnZhbGlkRW51bTsK
KyAgICBTYW1wbGVyRm9ybWF0IGZvdW5kRm9ybWF0ID0gU2FtcGxlckZvcm1hdDo6SW52YWxpZEVu
dW07CisKKyAgICBmb3IgKGNvbnN0IFNhbXBsZXJCaW5kaW5nICZiaW5kaW5nIDogc2FtcGxlckJp
bmRpbmdzKQorICAgIHsKKyAgICAgICAgaWYgKGJpbmRpbmcudW5yZWZlcmVuY2VkKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQSBjb25mbGljdCBleGlzdHMgaWYgc2FtcGxl
cnMgb2YgZGlmZmVyZW50IHR5cGVzIGFyZSBzb3VyY2VkIGJ5IHRoZSBzYW1lIHRleHR1cmUgdW5p
dC4KKyAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwgYm91bmQgdGV4dHVyZXMgdG8gZGV0
ZWN0IHRoaXMgZXJyb3IgY2FzZS4KKyAgICAgICAgZm9yIChHTHVpbnQgdGV4dHVyZVVuaXQgOiBi
aW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGV4
dHVyZVVuaXQgPT0gdGV4dHVyZVVuaXRJbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIWZvdW5kQmluZGluZykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGZvdW5kQmluZGluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGZvdW5kVHlw
ZSAgICA9IGJpbmRpbmcudGV4dHVyZVR5cGU7CisgICAgICAgICAgICAgICAgICAgIGZvdW5kRm9y
bWF0ICA9IGJpbmRpbmcuZm9ybWF0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRU
eXBlICE9IGJpbmRpbmcudGV4dHVyZVR5cGUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvdW5kVHlwZSA9IFRleHR1cmVUeXBlOjpJbnZhbGlkRW51bTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRGb3Jt
YXQgIT0gYmluZGluZy5mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZvdW5kRm9ybWF0ID0gU2FtcGxlckZvcm1hdDo6SW52YWxpZEVudW07Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBtQWN0aXZlU2FtcGxlclR5cGVzW3RleHR1cmVVbml0SW5k
ZXhdICAgPSBmb3VuZFR5cGU7CisgICAgbUFjdGl2ZVNhbXBsZXJGb3JtYXRzW3RleHR1cmVVbml0
SW5kZXhdID0gZm91bmRGb3JtYXQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW1FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFi
bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZDdlNzg1MzNlYWRjOThmY2EzYjUyMTdmOWU3MzMyM2ZiNDdlOWNl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1Byb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTAsMCArMSwxNjcgQEAKKy8vCisvLyBDb3B5cmlnaHQg
MjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcm9n
cmFtRXhlY3V0YWJsZS5oOiBDb2xsZWN0cyB0aGUgaW5mb3JtYXRpb24gYW5kIGludGVyZmFjZXMg
Y29tbW9uIHRvIGJvdGggUHJvZ3JhbXMgYW5kCisvLyBQcm9ncmFtUGlwZWxpbmVzIGluIG9yZGVy
IHRvIGV4ZWN1dGUvZHJhdyB3aXRoIGVpdGhlci4KKworI2lmbmRlZiBMSUJBTkdMRV9QUk9HUkFN
RVhFQ1VUQUJMRV9IXworI2RlZmluZSBMSUJBTkdMRV9QUk9HUkFNRVhFQ1VUQUJMRV9IXworCisj
aW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0luZm9Mb2cuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9WYXJ5aW5nUGFja2luZy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L2FuZ2xldHlwZXMuaCIKKworbmFtZXNwYWNlIGdsCit7CisKKy8vIFRoaXMgc21hbGwgc3RydWN0
dXJlIGVuY2Fwc3VsYXRlcyBiaW5kaW5nIHNhbXBsZXIgdW5pZm9ybXMgdG8gYWN0aXZlIEdMIHRl
eHR1cmVzLgorc3RydWN0IFNhbXBsZXJCaW5kaW5nCit7CisgICAgU2FtcGxlckJpbmRpbmcoVGV4
dHVyZVR5cGUgdGV4dHVyZVR5cGVJbiwKKyAgICAgICAgICAgICAgICAgICBTYW1wbGVyRm9ybWF0
IGZvcm1hdEluLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBlbGVtZW50Q291bnQsCisgICAg
ICAgICAgICAgICAgICAgYm9vbCB1bnJlZmVyZW5jZWQpOworICAgIFNhbXBsZXJCaW5kaW5nKGNv
bnN0IFNhbXBsZXJCaW5kaW5nICZvdGhlcik7CisgICAgflNhbXBsZXJCaW5kaW5nKCk7CisKKyAg
ICAvLyBOZWNlc3NhcnkgZm9yIHJldHJpZXZpbmcgYWN0aXZlIHRleHR1cmVzIGZyb20gdGhlIEdM
IHN0YXRlLgorICAgIFRleHR1cmVUeXBlIHRleHR1cmVUeXBlOworCisgICAgU2FtcGxlckZvcm1h
dCBmb3JtYXQ7CisKKyAgICAvLyBMaXN0IG9mIGFsbCB0ZXh0dXJlcyBib3VuZCB0byB0aGlzIHNh
bXBsZXIsIG9mIHR5cGUgdGV4dHVyZVR5cGUuCisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBib3Vu
ZFRleHR1cmVVbml0czsKKworICAgIC8vIEEgbm90ZSBpZiB0aGlzIHNhbXBsZXIgaXMgYW4gdW5y
ZWZlcmVuY2VkIHVuaWZvcm0uCisgICAgYm9vbCB1bnJlZmVyZW5jZWQ7Cit9OworCitzdHJ1Y3Qg
SW1hZ2VCaW5kaW5nCit7CisgICAgSW1hZ2VCaW5kaW5nKHNpemVfdCBjb3VudCk7CisgICAgSW1h
Z2VCaW5kaW5nKEdMdWludCBpbWFnZVVuaXQsIHNpemVfdCBjb3VudCwgYm9vbCB1bnJlZmVyZW5j
ZWQpOworICAgIEltYWdlQmluZGluZyhjb25zdCBJbWFnZUJpbmRpbmcgJm90aGVyKTsKKyAgICB+
SW1hZ2VCaW5kaW5nKCk7CisKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IGJvdW5kSW1hZ2VVbml0
czsKKworICAgIC8vIEEgbm90ZSBpZiB0aGlzIGltYWdlIHVuaXQgaXMgYW4gdW5yZWZlcmVuY2Vk
IHVuaWZvcm0uCisgICAgYm9vbCB1bnJlZmVyZW5jZWQ7Cit9OworCitjbGFzcyBQcm9ncmFtU3Rh
dGU7CitjbGFzcyBQcm9ncmFtUGlwZWxpbmVTdGF0ZTsKKworY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGUKK3sKKyAgcHVibGljOgorICAgIFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgdmlydHVhbCB+
UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIGludCBnZXRJ
bmZvTG9nTGVuZ3RoKCkgY29uc3Q7CisgICAgSW5mb0xvZyAmZ2V0SW5mb0xvZygpIHsgcmV0dXJu
IG1JbmZvTG9nOyB9CisgICAgdm9pZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKSBjb25zdDsKKyAgICBzdGQ6OnN0cmluZyBnZXRJbmZv
TG9nU3RyaW5nKCkgY29uc3Q7CisgICAgdm9pZCByZXNldEluZm9Mb2coKSB7IG1JbmZvTG9nLnJl
c2V0KCk7IH0KKworICAgIGNvbnN0IFNoYWRlckJpdFNldCAmZ2V0TGlua2VkU2hhZGVyU3RhZ2Vz
KCkgY29uc3QgeyByZXR1cm4gbUxpbmtlZFNoYWRlclN0YWdlczsgfQorICAgIFNoYWRlckJpdFNl
dCAmZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkgeyByZXR1cm4gbUxpbmtlZFNoYWRlclN0YWdlczsg
fQorICAgIGJvb2wgaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHNoYWRlclR5cGUgIT0gU2hhZGVyVHlwZTo6SW52
YWxpZEVudW0pOworICAgICAgICByZXR1cm4gbUxpbmtlZFNoYWRlclN0YWdlc1tzaGFkZXJUeXBl
XTsKKyAgICB9CisgICAgc2l6ZV90IGdldExpbmtlZFNoYWRlclN0YWdlQ291bnQoKSBjb25zdCB7
IHJldHVybiBtTGlua2VkU2hhZGVyU3RhZ2VzLmNvdW50KCk7IH0KKyAgICBib29sIGlzQ29tcHV0
ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1
dGUpOyB9CisKKyAgICBjb25zdCBBdHRyaWJ1dGVzTWFzayAmZ2V0QWN0aXZlQXR0cmliTG9jYXRp
b25zTWFzaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbUFjdGl2ZUF0dHJpYkxvY2F0
aW9uc01hc2s7CisgICAgfQorICAgIGJvb2wgaXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShzaXplX3Qg
YXR0cmliTG9jYXRpb24pIGNvbnN0OworICAgIGNvbnN0IEF0dHJpYnV0ZXNNYXNrICZnZXROb25C
dWlsdGluQXR0cmliTG9jYXRpb25zTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1BdHRyaWJ1dGVzTWFz
azsgfQorICAgIHVuc2lnbmVkIGludCBnZXRNYXhBY3RpdmVBdHRyaWJMb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1NYXhBY3RpdmVBdHRyaWJMb2NhdGlvbjsgfQorICAgIGNvbnN0IENvbXBvbmVu
dFR5cGVNYXNrICZnZXRBdHRyaWJ1dGVzVHlwZU1hc2soKSBjb25zdCB7IHJldHVybiBtQXR0cmli
dXRlc1R5cGVNYXNrOyB9CisgICAgQXR0cmlidXRlc01hc2sgZ2V0QXR0cmlidXRlc01hc2soKSBj
b25zdDsKKworICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVNYXNrICZnZXRBY3RpdmVTYW1wbGVyc01h
c2soKSBjb25zdCB7IHJldHVybiBtQWN0aXZlU2FtcGxlcnNNYXNrOyB9CisgICAgU2FtcGxlckZv
cm1hdCBnZXRTYW1wbGVyRm9ybWF0Rm9yVGV4dHVyZVVuaXRJbmRleChzaXplX3QgdGV4dHVyZVVu
aXRJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtQWN0aXZlU2FtcGxlckZvcm1h
dHNbdGV4dHVyZVVuaXRJbmRleF07CisgICAgfQorICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVNYXNr
ICZnZXRBY3RpdmVJbWFnZXNNYXNrKCkgY29uc3QgeyByZXR1cm4gbUFjdGl2ZUltYWdlc01hc2s7
IH0KKworICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVBcnJheTxUZXh0dXJlVHlwZT4gJmdldEFjdGl2
ZVNhbXBsZXJUeXBlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbUFjdGl2ZVNhbXBs
ZXJUeXBlczsKKyAgICB9CisKKyAgICBib29sIGhhc0RlZmF1bHRVbmlmb3Jtcyhjb25zdCBnbDo6
U3RhdGUgJmdsU3RhdGUpIGNvbnN0OworICAgIGJvb2wgaGFzVGV4dHVyZXMoY29uc3QgZ2w6OlN0
YXRlICZnbFN0YXRlKSBjb25zdDsKKyAgICBib29sIGhhc1VuaWZvcm1CdWZmZXJzKGNvbnN0IGds
OjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3Q7CisgICAgYm9vbCBoYXNTdG9yYWdlQnVmZmVycyhjb25z
dCBnbDo6U3RhdGUgJmdsU3RhdGUpIGNvbnN0OworICAgIGJvb2wgaGFzQXRvbWljQ291bnRlckJ1
ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdDsKKyAgICBib29sIGhhc0ltYWdl
cyhjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpIGNvbnN0OworICAgIGJvb2wgaGFzVHJhbnNmb3Jt
RmVlZGJhY2tPdXRwdXQoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKSBjb25zdDsKKworICAgIC8v
IENvdW50IHRoZSBudW1iZXIgb2YgdW5pZm9ybSBhbmQgc3RvcmFnZSBidWZmZXIgZGVjbGFyYXRp
b25zLCBjb3VudGluZyBhcnJheXMgYXMgb25lLgorICAgIHNpemVfdCBnZXRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckNvdW50KGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkgY29uc3Q7CisKKyAgICAv
LyBUT0RPOiBodHRwOi8vYW5nbGVidWcuY29tLzQ1MjA6IFJlbW92ZSBtUHJvZ3JhbVN0YXRlL21Q
cm9ncmFtUGlwZWxpbmVTdGF0ZQorICAgIHZvaWQgc2V0UHJvZ3JhbVN0YXRlKFByb2dyYW1TdGF0
ZSAqc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoIW1Qcm9ncmFtU3RhdGUgJiYgIW1Qcm9n
cmFtUGlwZWxpbmVTdGF0ZSk7CisgICAgICAgIG1Qcm9ncmFtU3RhdGUgPSBzdGF0ZTsKKyAgICB9
CisgICAgdm9pZCBzZXRQcm9ncmFtUGlwZWxpbmVTdGF0ZShQcm9ncmFtUGlwZWxpbmVTdGF0ZSAq
c3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoIW1Qcm9ncmFtU3RhdGUgJiYgIW1Qcm9ncmFt
UGlwZWxpbmVTdGF0ZSk7CisgICAgICAgIG1Qcm9ncmFtUGlwZWxpbmVTdGF0ZSA9IHN0YXRlOwor
ICAgIH0KKworICBwcml2YXRlOgorICAgIC8vIFRPRE8odGltdnApOiBodHRwOi8vYW5nbGVidWcu
Y29tLzM1NzA6IEludmVzdGlnYXRlIHJlbW92aW5nIHRoZXNlIGZyaWVuZAorICAgIC8vIGNsYXNz
IGRlY2xhcmF0aW9ucyBhbmQgYWNjZXNzaW5nIHRoZSBuZWNlc3NhcnkgbWVtYmVycyB3aXRoIGdl
dHRlcnMvc2V0dGVycy4KKyAgICBmcmllbmQgY2xhc3MgUHJvZ3JhbTsKKyAgICBmcmllbmQgY2xh
c3MgUHJvZ3JhbVBpcGVsaW5lOworICAgIGZyaWVuZCBjbGFzcyBQcm9ncmFtU3RhdGU7CisKKyAg
ICB2b2lkIHVwZGF0ZUFjdGl2ZVNhbXBsZXJzKGNvbnN0IHN0ZDo6dmVjdG9yPFNhbXBsZXJCaW5k
aW5nPiAmc2FtcGxlckJpbmRpbmdzKTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2ZUltYWdlcyhzdGQ6
OnZlY3RvcjxJbWFnZUJpbmRpbmc+ICZpbWFnZUJpbmRpbmdzKTsKKworICAgIC8vIFNjYW5zIHRo
ZSBzYW1wbGVyIGJpbmRpbmdzIGZvciB0eXBlIGNvbmZsaWN0cyB3aXRoIHNhbXBsZXIgJ3RleHR1
cmVVbml0SW5kZXgnLgorICAgIHZvaWQgc2V0U2FtcGxlclVuaWZvcm1UZXh0dXJlVHlwZUFuZEZv
cm1hdChzaXplX3QgdGV4dHVyZVVuaXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8U2FtcGxlckJpbmRpbmc+ICZzYW1wbGVy
QmluZGluZ3MpOworCisgICAgLy8gVE9ETzogaHR0cDovL2FuZ2xlYnVnLmNvbS80NTIwOiBSZW1v
dmUgbVByb2dyYW1TdGF0ZS9tUHJvZ3JhbVBpcGVsaW5lU3RhdGUKKyAgICBQcm9ncmFtU3RhdGUg
Km1Qcm9ncmFtU3RhdGU7CisgICAgUHJvZ3JhbVBpcGVsaW5lU3RhdGUgKm1Qcm9ncmFtUGlwZWxp
bmVTdGF0ZTsKKworICAgIEluZm9Mb2cgbUluZm9Mb2c7CisKKyAgICBTaGFkZXJCaXRTZXQgbUxp
bmtlZFNoYWRlclN0YWdlczsKKworICAgIGFuZ2xlOjpCaXRTZXQ8TUFYX1ZFUlRFWF9BVFRSSUJT
PiBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsKKyAgICB1bnNpZ25lZCBpbnQgbU1heEFjdGl2
ZUF0dHJpYkxvY2F0aW9uOworICAgIENvbXBvbmVudFR5cGVNYXNrIG1BdHRyaWJ1dGVzVHlwZU1h
c2s7CisgICAgLy8gbUF0dHJpYnV0ZXNNYXNrIGlzIGlkZW50aWNhbCB0byBtQWN0aXZlQXR0cmli
TG9jYXRpb25zTWFzayB3aXRoIGJ1aWx0LWluIGF0dHJpYnV0ZXMgcmVtb3ZlZC4KKyAgICBBdHRy
aWJ1dGVzTWFzayBtQXR0cmlidXRlc01hc2s7CisKKyAgICAvLyBDYWNoZWQgbWFzayBvZiBhY3Rp
dmUgc2FtcGxlcnMgYW5kIHNhbXBsZXIgdHlwZXMuCisgICAgQWN0aXZlVGV4dHVyZU1hc2sgbUFj
dGl2ZVNhbXBsZXJzTWFzazsKKyAgICBBY3RpdmVUZXh0dXJlQXJyYXk8dWludDMyX3Q+IG1BY3Rp
dmVTYW1wbGVyUmVmQ291bnRzOworICAgIEFjdGl2ZVRleHR1cmVBcnJheTxUZXh0dXJlVHlwZT4g
bUFjdGl2ZVNhbXBsZXJUeXBlczsKKyAgICBBY3RpdmVUZXh0dXJlQXJyYXk8U2FtcGxlckZvcm1h
dD4gbUFjdGl2ZVNhbXBsZXJGb3JtYXRzOworCisgICAgLy8gQ2FjaGVkIG1hc2sgb2YgYWN0aXZl
IGltYWdlcy4KKyAgICBBY3RpdmVUZXh0dXJlTWFzayBtQWN0aXZlSW1hZ2VzTWFzazsKK307CisK
K30gIC8vIG5hbWVzcGFjZSBnbAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1BST0dSQU1FWEVDVVRB
QkxFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
UHJvZ3JhbVBpcGVsaW5lLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Qcm9ncmFtUGlwZWxpbmUuY3BwCmluZGV4IGUxOTdlOTk4ZmQ5ZGMyOTAyZTAyZGNmZmNmMTQw
MDZiNWQ3NDhmOGUuLmQxNzUxYWQ3NDI3MzBlNGU3NGRmMTBmMGU3ZTM4NTM0OTdlZDNlM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtUGlw
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9n
cmFtUGlwZWxpbmUuY3BwCkBAIC0xNyw3ICsxNywxMCBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLVBy
b2dyYW1QaXBlbGluZVN0YXRlOjpQcm9ncmFtUGlwZWxpbmVTdGF0ZSgpIDogbUxhYmVsKCkge30K
K1Byb2dyYW1QaXBlbGluZVN0YXRlOjpQcm9ncmFtUGlwZWxpbmVTdGF0ZSgpIDogbUxhYmVsKCkK
K3sKKyAgICBtRXhlY3V0YWJsZS5zZXRQcm9ncmFtUGlwZWxpbmVTdGF0ZSh0aGlzKTsKK30KIAog
UHJvZ3JhbVBpcGVsaW5lU3RhdGU6On5Qcm9ncmFtUGlwZWxpbmVTdGF0ZSgpIHt9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtUGlwZWxp
bmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtUGlwZWxp
bmUuaAppbmRleCA2ZGE0MTAzZGRlNzBmMWU2MWQ3MDhhODYzZGJlNTA5NWUwZDU4MGI0Li45ODcz
MTUyNzgxM2UyYjIzNGQwMjE5YmY1MDE5YWE5ZTc2MGY4N2M0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5oCkBAIC0x
NSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL0RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgogCiBuYW1lc3BhY2UgcngK
QEAgLTM2LDEwICszNywxNSBAQCBjbGFzcyBQcm9ncmFtUGlwZWxpbmVTdGF0ZSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29u
c3Q7CiAKKyAgICBjb25zdCBQcm9ncmFtRXhlY3V0YWJsZSAmZ2V0RXhlY3V0YWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1FeGVjdXRhYmxlOyB9CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUgJmdldEV4ZWN1
dGFibGUoKSB7IHJldHVybiBtRXhlY3V0YWJsZTsgfQorCiAgIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFByb2dyYW1QaXBlbGluZTsKIAogICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKKworICAg
IFByb2dyYW1FeGVjdXRhYmxlIG1FeGVjdXRhYmxlOwogfTsKIAogY2xhc3MgUHJvZ3JhbVBpcGVs
aW5lIGZpbmFsIDogcHVibGljIFJlZkNvdW50T2JqZWN0PFByb2dyYW1QaXBlbGluZUlEPiwgcHVi
bGljIExhYmVsZWRPYmplY3QKQEAgLTUzLDYgKzU5LDExIEBAIGNsYXNzIFByb2dyYW1QaXBlbGlu
ZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9iamVjdDxQcm9ncmFtUGlwZWxpbmVJRD4sIHB1Ymxp
YyBMCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBzdGQ6
OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJl
bCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgY29uc3QgUHJvZ3JhbVBpcGVsaW5lU3RhdGUgJmdl
dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CisKKyAgICBjb25zdCBQcm9ncmFtRXhl
Y3V0YWJsZSAmZ2V0RXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRFeGVjdXRh
YmxlKCk7IH0KKyAgICBQcm9ncmFtRXhlY3V0YWJsZSAmZ2V0RXhlY3V0YWJsZSgpIHsgcmV0dXJu
IG1TdGF0ZS5nZXRFeGVjdXRhYmxlKCk7IH0KKwogICAgIHJ4OjpQcm9ncmFtUGlwZWxpbmVJbXBs
ICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0OwogCiAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuY3Bw
CmluZGV4IDE1ZjA0NWExYjdiN2EwN2Y2OThiMTNiYzRkYjliNzliODljYThhNDYuLjhmOTk1N2Fi
NjAwZGZhYWJmY2M1MWIxOWRkYTRkZjk1Mjg2MjY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuY3BwCkBAIC0x
Myw5ICsxMyw5IEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0ZlbmNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvTWVtb3J5T2JqZWN0LmgiCi0jaW5j
bHVkZSAibGliQU5HTEUvUGF0aC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9R
dWVyeS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL1NhbXBsZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TZW1hcGhvcmUuaCIKQEAgLTEw
Miw3ICsxMDIsNiBAQCB2b2lkIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFJlc291cmNlVHlwZSwgSGFu
ZGxlQWxsb2NhdG9yVHlwZSwgSW1wbFQsIElEVHlwZT46OmRlbAogfQogCiB0ZW1wbGF0ZSBjbGFz
cyBSZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRsZUFsbG9jYXRvcj47Ci10ZW1wbGF0ZSBjbGFzcyBS
ZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRsZVJhbmdlQWxsb2NhdG9yPjsKIHRlbXBsYXRlIGNsYXNz
IFR5cGVkUmVzb3VyY2VNYW5hZ2VyPEJ1ZmZlciwgSGFuZGxlQWxsb2NhdG9yLCBCdWZmZXJNYW5h
Z2VyLCBCdWZmZXJJRD47CiB0ZW1wbGF0ZSBjbGFzcyBUeXBlZFJlc291cmNlTWFuYWdlcjxUZXh0
dXJlLCBIYW5kbGVBbGxvY2F0b3IsIFRleHR1cmVNYW5hZ2VyLCBUZXh0dXJlSUQ+OwogdGVtcGxh
dGUgY2xhc3MgVHlwZWRSZXNvdXJjZU1hbmFnZXI8UmVuZGVyYnVmZmVyLApAQCAtMzQ2LDgwICsz
NDUsNiBAQCBTeW5jICpTeW5jTWFuYWdlcjo6Z2V0U3luYyhHTHVpbnQgaGFuZGxlKSBjb25zdAog
ICAgIHJldHVybiBtT2JqZWN0TWFwLnF1ZXJ5KGhhbmRsZSk7CiB9CiAKLS8vIFBhdGhNYW5hZ2Vy
IEltcGxlbWVudGF0aW9uLgotCi1QYXRoTWFuYWdlcjo6UGF0aE1hbmFnZXIoKSA9IGRlZmF1bHQ7
Ci0KLWFuZ2xlOjpSZXN1bHQgUGF0aE1hbmFnZXI6OmNyZWF0ZVBhdGhzKENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgcmFuZ2UsIFBhdGhJRCAqY3JlYXRlZE91dCkKLXsKLSAgICAqY3JlYXRlZE91
dCA9IHswfTsKLQotICAgIC8vIEFsbG9jYXRlIGNsaWVudCBzaWRlIGhhbmRsZXMuCi0gICAgY29u
c3QgR0x1aW50IGNsaWVudCA9IG1IYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGVSYW5nZShzdGF0aWNf
Y2FzdDxHTHVpbnQ+KHJhbmdlKSk7Ci0gICAgaWYgKGNsaWVudCA9PSBIYW5kbGVSYW5nZUFsbG9j
YXRvcjo6a0ludmFsaWRIYW5kbGUpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHBhdGggaGFuZGxlIHJhbmdl
LiIsIF9fRklMRV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GVU5DVElP
TiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6U3RvcDsKLSAgICB9
Ci0KLSAgICBjb25zdCBhdXRvICZwYXRocyA9IGNvbnRleHQtPmdldEltcGxlbWVudGF0aW9uKCkt
PmNyZWF0ZVBhdGhzKHJhbmdlKTsKLSAgICBpZiAocGF0aHMuZW1wdHkoKSkKLSAgICB7Ci0gICAg
ICAgIG1IYW5kbGVBbGxvY2F0b3IucmVsZWFzZVJhbmdlKGNsaWVudCwgcmFuZ2UpOwotICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9j
YXRlIHBhdGggb2JqZWN0cy4iLCBfX0ZJTEVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRlVOQ1RJT04sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OlN0b3A7Ci0gICAgfQotCi0gICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgcmFuZ2U7ICsr
aSkKLSAgICB7Ci0gICAgICAgIHJ4OjpQYXRoSW1wbCAqaW1wbCA9IHBhdGhzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihpKV07Ci0gICAgICAgIFBhdGhJRCBpZCAgICAgICAgICA9IFBhdGhJRHtjbGll
bnQgKyBpfTsKLSAgICAgICAgbVBhdGhzLmFzc2lnbihpZCwgbmV3IFBhdGgoaW1wbCkpOwotICAg
IH0KLSAgICAqY3JlYXRlZE91dCA9IFBhdGhJRHtjbGllbnR9OwotICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKLX0KLQotdm9pZCBQYXRoTWFuYWdlcjo6ZGVsZXRlUGF0aHMoUGF0
aElEIGZpcnN0LCBHTHNpemVpIHJhbmdlKQotewotICAgIEdMdWludCBmaXJzdEhhbmRsZSA9IGZp
cnN0LnZhbHVlOwotICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kpCi0gICAg
ewotICAgICAgICBHTHVpbnQgaWQgPSBmaXJzdEhhbmRsZSArIGk7Ci0gICAgICAgIFBhdGggKnAg
ICA9IG51bGxwdHI7Ci0gICAgICAgIGlmICghbVBhdGhzLmVyYXNlKHtpZH0sICZwKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkZWxldGUgcDsKLSAgICB9Ci0gICAgbUhhbmRsZUFs
bG9jYXRvci5yZWxlYXNlUmFuZ2UoZmlyc3RIYW5kbGUsIHN0YXRpY19jYXN0PEdMdWludD4ocmFu
Z2UpKTsKLX0KLQotUGF0aCAqUGF0aE1hbmFnZXI6OmdldFBhdGgoUGF0aElEIGhhbmRsZSkgY29u
c3QKLXsKLSAgICByZXR1cm4gbVBhdGhzLnF1ZXJ5KGhhbmRsZSk7Ci19Ci0KLWJvb2wgUGF0aE1h
bmFnZXI6Omhhc1BhdGgoUGF0aElEIGhhbmRsZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbUhhbmRs
ZUFsbG9jYXRvci5pc1VzZWQoR2V0SURWYWx1ZShoYW5kbGUpKTsKLX0KLQotUGF0aE1hbmFnZXI6
On5QYXRoTWFuYWdlcigpCi17Ci0gICAgQVNTRVJUKG1QYXRocy5lbXB0eSgpKTsKLX0KLQotdm9p
ZCBQYXRoTWFuYWdlcjo6cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBmb3Ig
KGF1dG8gcGF0aCA6IG1QYXRocykKLSAgICB7Ci0gICAgICAgIFNhZmVEZWxldGUocGF0aC5zZWNv
bmQpOwotICAgIH0KLSAgICBtUGF0aHMuY2xlYXIoKTsKLX0KLQogLy8gRnJhbWVidWZmZXJNYW5h
Z2VyIEltcGxlbWVudGF0aW9uLgogCiAvLyBzdGF0aWMKQEAgLTU5MCw1ICs1MTUsNCBAQCBTZW1h
cGhvcmUgKlNlbWFwaG9yZU1hbmFnZXI6OmdldFNlbWFwaG9yZShTZW1hcGhvcmVJRCBoYW5kbGUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1TZW1hcGhvcmVzLnF1ZXJ5KGhhbmRsZSk7CiB9Ci0KIH0g
IC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oCmluZGV4IDY2MjRhZTJiZWZhY2Q1MTY2NmNlMzE5
MGY2YWE4ZjNjZTRiOWIzOWQuLjUyYmUyMjc5OGJhOGUxMWI5MjQwNTFhMTY3MGFhYjUwNTU0Njk0
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNv
dXJjZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
UmVzb3VyY2VNYW5hZ2VyLmgKQEAgLTE0LDcgKzE0LDYgQEAKICNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvSGFuZGxlQWxsb2NhdG9yLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hcC5oIgogCiBuYW1lc3BhY2Ug
cngKQEAgLTI2NCwyNCArMjYzLDYgQEAgY2xhc3MgU3luY01hbmFnZXIgOiBwdWJsaWMgVHlwZWRS
ZXNvdXJjZU1hbmFnZXI8U3luYywgSGFuZGxlQWxsb2NhdG9yLCBTeW5jTWFuYWcKICAgICB+U3lu
Y01hbmFnZXIoKSBvdmVycmlkZSB7fQogfTsKIAotY2xhc3MgUGF0aE1hbmFnZXIgOiBwdWJsaWMg
UmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVSYW5nZUFsbG9jYXRvcj4KLXsKLSAgcHVibGljOgot
ICAgIFBhdGhNYW5hZ2VyKCk7Ci0KLSAgICBhbmdsZTo6UmVzdWx0IGNyZWF0ZVBhdGhzKENvbnRl
eHQgKmNvbnRleHQsIEdMc2l6ZWkgcmFuZ2UsIFBhdGhJRCAqbnVtQ3JlYXRlZCk7Ci0gICAgdm9p
ZCBkZWxldGVQYXRocyhQYXRoSUQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpOwotICAgIFBhdGggKmdl
dFBhdGgoUGF0aElEIGhhbmRsZSkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQYXRoKFBhdGhJRCBoYW5k
bGUpIGNvbnN0OwotCi0gIHByb3RlY3RlZDoKLSAgICB+UGF0aE1hbmFnZXIoKSBvdmVycmlkZTsK
LSAgICB2b2lkIHJlc2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwotCi0gIHBy
aXZhdGU6Ci0gICAgUmVzb3VyY2VNYXA8UGF0aCwgUGF0aElEPiBtUGF0aHM7Ci19OwotCiBjbGFz
cyBGcmFtZWJ1ZmZlck1hbmFnZXIKICAgICA6IHB1YmxpYyBUeXBlZFJlc291cmNlTWFuYWdlcjxG
cmFtZWJ1ZmZlciwgSGFuZGxlQWxsb2NhdG9yLCBGcmFtZWJ1ZmZlck1hbmFnZXIsIEZyYW1lYnVm
ZmVySUQ+CiB7CkBAIC0zNjUsNyArMzQ2LDYgQEAgY2xhc3MgU2VtYXBob3JlTWFuYWdlciA6IHB1
YmxpYyBSZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRsZUFsbG9jYXRvcj4KIAogICAgIFJlc291cmNl
TWFwPFNlbWFwaG9yZSwgU2VtYXBob3JlSUQ+IG1TZW1hcGhvcmVzOwogfTsKLQogfSAgLy8gbmFt
ZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfUkVTT1VSQ0VNQU5BR0VSX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYXAu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hcC5oCmlu
ZGV4IGFiZjM2OGRmYzcxMmFlMzBjMDYyODcxNjhkNGU1YWZjYWEwYjRjMzkuLmI0Y2VhODVjNGEy
OGZhMmNjMTQyODY0OTdhOWZlNDE5MGYyNThlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hcC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hcC5oCkBAIC02MiwxMyArNjIsMTUgQEAg
Y2xhc3MgUmVzb3VyY2VNYXAgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFJlc291cmNlTWFwOwogICAgICAgICBJdGVyYXRvcihjb25zdCBSZXNvdXJjZU1h
cCAmb3JpZ2luLAogICAgICAgICAgICAgICAgICBHTHVpbnQgZmxhdEluZGV4LAotICAgICAgICAg
ICAgICAgICB0eXBlbmFtZSBIYXNoTWFwOjpjb25zdF9pdGVyYXRvciBoYXNoSW5kZXgpOworICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBIYXNoTWFwOjpjb25zdF9pdGVyYXRvciBoYXNoSW5kZXgs
CisgICAgICAgICAgICAgICAgIGJvb2wgc2tpcE51bGxzKTsKICAgICAgICAgdm9pZCB1cGRhdGVW
YWx1ZSgpOwogCiAgICAgICAgIGNvbnN0IFJlc291cmNlTWFwICZtT3JpZ2luOwogICAgICAgICBH
THVpbnQgbUZsYXRJbmRleDsKICAgICAgICAgdHlwZW5hbWUgSGFzaE1hcDo6Y29uc3RfaXRlcmF0
b3IgbUhhc2hJbmRleDsKICAgICAgICAgSW5kZXhBbmRSZXNvdXJjZSBtVmFsdWU7CisgICAgICAg
IGJvb2wgbVNraXBOdWxsczsKICAgICB9OwogCiAgICAgLy8gbnVsbCB2YWx1ZXMgcmVwcmVzZW50
IHJlc2VydmVkIGhhbmRsZXMuCkBAIC03NiwxMyArNzgsMTYgQEAgY2xhc3MgUmVzb3VyY2VNYXAg
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsKICAg
ICBJdGVyYXRvciBmaW5kKElEVHlwZSBoYW5kbGUpIGNvbnN0OwogCisgICAgSXRlcmF0b3IgYmVn
aW5XaXRoTnVsbCgpIGNvbnN0OworICAgIEl0ZXJhdG9yIGVuZFdpdGhOdWxsKCkgY29uc3Q7CisK
ICAgICAvLyBOb3QgYSBjb25zdGFudC10aW1lIG9wZXJhdGlvbiwgc2hvdWxkIG9ubHkgYmUgdXNl
ZCBmb3IgdmVyaWZpY2F0aW9uLgogICAgIGJvb2wgZW1wdHkoKSBjb25zdDsKIAogICBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBJdGVyYXRvcjsKIAotICAgIEdMdWludCBuZXh0Tm9uTnVsbFJl
c291cmNlKHNpemVfdCBmbGF0SW5kZXgpIGNvbnN0OworICAgIEdMdWludCBuZXh0UmVzb3VyY2Uo
c2l6ZV90IGZsYXRJbmRleCwgYm9vbCBza2lwTnVsbHMpIGNvbnN0OwogCiAgICAgLy8gY29uc3Rl
eHByIG1ldGhvZHMgY2Fubm90IGNvbnRhaW4gcmVpbnRlcnByZXRfY2FzdCwgc28gd2UgbmVlZCBh
IHN0YXRpYyBtZXRob2QuCiAgICAgc3RhdGljIFJlc291cmNlVHlwZSAqSW52YWxpZFBvaW50ZXIo
KTsKQEAgLTE5NCwxMyArMTk5LDI3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUs
IHR5cGVuYW1lIElEVHlwZT4KIHR5cGVuYW1lIFJlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURU
eXBlPjo6SXRlcmF0b3IgUmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlLCBJRFR5cGU+OjpiZWdpbigp
CiAgICAgY29uc3QKIHsKLSAgICByZXR1cm4gSXRlcmF0b3IoKnRoaXMsIG5leHROb25OdWxsUmVz
b3VyY2UoMCksIG1IYXNoZWRSZXNvdXJjZXMuYmVnaW4oKSk7CisgICAgcmV0dXJuIEl0ZXJhdG9y
KCp0aGlzLCBuZXh0UmVzb3VyY2UoMCwgdHJ1ZSksIG1IYXNoZWRSZXNvdXJjZXMuYmVnaW4oKSwg
dHJ1ZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1lIElE
VHlwZT4KIHR5cGVuYW1lIFJlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBlPjo6SXRlcmF0
b3IgUmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlLCBJRFR5cGU+OjplbmQoKSBjb25zdAogewotICAg
IHJldHVybiBJdGVyYXRvcigqdGhpcywgc3RhdGljX2Nhc3Q8R0x1aW50PihtRmxhdFJlc291cmNl
c1NpemUpLCBtSGFzaGVkUmVzb3VyY2VzLmVuZCgpKTsKKyAgICByZXR1cm4gSXRlcmF0b3IoKnRo
aXMsIHN0YXRpY19jYXN0PEdMdWludD4obUZsYXRSZXNvdXJjZXNTaXplKSwgbUhhc2hlZFJlc291
cmNlcy5lbmQoKSwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUs
IHR5cGVuYW1lIElEVHlwZT4KK3R5cGVuYW1lIFJlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURU
eXBlPjo6SXRlcmF0b3IKK1Jlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBlPjo6YmVnaW5X
aXRoTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCBuZXh0UmVzb3Vy
Y2UoMCwgZmFsc2UpLCBtSGFzaGVkUmVzb3VyY2VzLmJlZ2luKCksIGZhbHNlKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIFJlc291cmNlVHlwZSwgdHlwZW5hbWUgSURUeXBlPgordHlwZW5hbWUg
UmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlLCBJRFR5cGU+OjpJdGVyYXRvcgorUmVzb3VyY2VNYXA8
UmVzb3VyY2VUeXBlLCBJRFR5cGU+OjplbmRXaXRoTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IEl0ZXJhdG9yKCp0aGlzLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1GbGF0UmVzb3VyY2VzU2l6ZSks
IG1IYXNoZWRSZXNvdXJjZXMuZW5kKCksIGZhbHNlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFJlc291cmNlVHlwZSwgdHlwZW5hbWUgSURUeXBlPgpAQCAtMjM0LDExICsyNTMsMTIgQEAgdm9p
ZCBSZXNvdXJjZU1hcDxSZXNvdXJjZVR5cGUsIElEVHlwZT46OmNsZWFyKCkKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFJlc291cmNlVHlwZSwgdHlwZW5hbWUgSURUeXBlPgotR0x1aW50IFJlc291
cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBlPjo6bmV4dE5vbk51bGxSZXNvdXJjZShzaXplX3Qg
ZmxhdEluZGV4KSBjb25zdAorR0x1aW50IFJlc291cmNlTWFwPFJlc291cmNlVHlwZSwgSURUeXBl
Pjo6bmV4dFJlc291cmNlKHNpemVfdCBmbGF0SW5kZXgsIGJvb2wgc2tpcE51bGxzKSBjb25zdAog
ewogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gZmxhdEluZGV4OyBpbmRleCA8IG1GbGF0UmVzb3Vy
Y2VzU2l6ZTsgaW5kZXgrKykKICAgICB7Ci0gICAgICAgIGlmIChtRmxhdFJlc291cmNlc1tpbmRl
eF0gIT0gbnVsbHB0ciAmJiBtRmxhdFJlc291cmNlc1tpbmRleF0gIT0gSW52YWxpZFBvaW50ZXIo
KSkKKyAgICAgICAgaWYgKChtRmxhdFJlc291cmNlc1tpbmRleF0gIT0gbnVsbHB0ciB8fCAhc2tp
cE51bGxzKSAmJgorICAgICAgICAgICAgbUZsYXRSZXNvdXJjZXNbaW5kZXhdICE9IEludmFsaWRQ
b2ludGVyKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHVp
bnQ+KGluZGV4KTsKICAgICAgICAgfQpAQCAtMjU3LDggKzI3Nyw5IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1lIElEVHlwZT4KIFJlc291cmNlTWFwPFJlc291cmNl
VHlwZSwgSURUeXBlPjo6SXRlcmF0b3I6Okl0ZXJhdG9yKAogICAgIGNvbnN0IFJlc291cmNlTWFw
ICZvcmlnaW4sCiAgICAgR0x1aW50IGZsYXRJbmRleCwKLSAgICB0eXBlbmFtZSBSZXNvdXJjZU1h
cDxSZXNvdXJjZVR5cGUsIElEVHlwZT46Okhhc2hNYXA6OmNvbnN0X2l0ZXJhdG9yIGhhc2hJbmRl
eCkKLSAgICA6IG1PcmlnaW4ob3JpZ2luKSwgbUZsYXRJbmRleChmbGF0SW5kZXgpLCBtSGFzaElu
ZGV4KGhhc2hJbmRleCkKKyAgICB0eXBlbmFtZSBSZXNvdXJjZU1hcDxSZXNvdXJjZVR5cGUsIElE
VHlwZT46Okhhc2hNYXA6OmNvbnN0X2l0ZXJhdG9yIGhhc2hJbmRleCwKKyAgICBib29sIHNraXBO
dWxscykKKyAgICA6IG1PcmlnaW4ob3JpZ2luKSwgbUZsYXRJbmRleChmbGF0SW5kZXgpLCBtSGFz
aEluZGV4KGhhc2hJbmRleCksIG1Ta2lwTnVsbHMoc2tpcE51bGxzKQogewogICAgIHVwZGF0ZVZh
bHVlKCk7CiB9CkBAIC0yODEsNyArMzAyLDcgQEAgb3BlcmF0b3IrKygpCiB7CiAgICAgaWYgKG1G
bGF0SW5kZXggPCBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1PcmlnaW4ubUZsYXRSZXNvdXJjZXNTaXpl
KSkKICAgICB7Ci0gICAgICAgIG1GbGF0SW5kZXggPSBtT3JpZ2luLm5leHROb25OdWxsUmVzb3Vy
Y2UobUZsYXRJbmRleCArIDEpOworICAgICAgICBtRmxhdEluZGV4ID0gbU9yaWdpbi5uZXh0UmVz
b3VyY2UobUZsYXRJbmRleCArIDEsIG1Ta2lwTnVsbHMpOwogICAgIH0KICAgICBlbHNlCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NlbWFw
aG9yZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2VtYXBob3Jl
LmNwcAppbmRleCBkZjYyZTIzMWNkNGE5ZGQ3YjJmMzVlMTk5MmExNTZiMzQ0YmQzYzgzLi40NTYy
MTY1M2UzMjFkMWViMDAxMmM4YWEyNDkxOTBhNjkyNDg4YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2VtYXBob3JlLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2VtYXBob3JlLmNwcApAQCAtMzAsNiArMzAs
MTEgQEAgYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmU6OmltcG9ydEZkKENvbnRleHQgKmNvbnRleHQs
IEhhbmRsZVR5cGUgaGFuZGxlVHlwZSwgR0xpbnQKICAgICByZXR1cm4gbUltcGxlbWVudGF0aW9u
LT5pbXBvcnRGZChjb250ZXh0LCBoYW5kbGVUeXBlLCBmZCk7CiB9CiAKK2FuZ2xlOjpSZXN1bHQg
U2VtYXBob3JlOjppbXBvcnRaaXJjb25IYW5kbGUoQ29udGV4dCAqY29udGV4dCwgSGFuZGxlVHlw
ZSBoYW5kbGVUeXBlLCBHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBtSW1wbGVtZW50YXRp
b24tPmltcG9ydFppcmNvbkhhbmRsZShjb250ZXh0LCBoYW5kbGVUeXBlLCBoYW5kbGUpOworfQor
CiBhbmdsZTo6UmVzdWx0IFNlbWFwaG9yZTo6d2FpdChDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVyQmFycmllclZlY3RvciAmYnVmZmVy
QmFycmllcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlQmFy
cmllclZlY3RvciAmdGV4dHVyZUJhcnJpZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NlbWFwaG9yZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1NlbWFwaG9yZS5oCmluZGV4IDYyMjMwYTNiODM4YTU0ZTBiMGZhNTUx
ODk1OTZkYzBkNjNlM2YwYzQuLjAyYmRhYmVkY2E5NGQ0ZTMxMzU4ZWZkYjA2MGY4M2RmYjk3OGMy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TZW1h
cGhvcmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2VtYXBo
b3JlLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgU2VtYXBob3JlIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50T2JqZWN0PFNlbWFwaG9yZUlEPgogICAgIHJ4OjpTZW1hcGhvcmVJbXBsICpnZXRJbXBs
ZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi5nZXQoKTsgfQogCiAg
ICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRGZChDb250ZXh0ICpjb250ZXh0LCBIYW5kbGVUeXBlIGhh
bmRsZVR5cGUsIEdMaW50IGZkKTsKKyAgICBhbmdsZTo6UmVzdWx0IGltcG9ydFppcmNvbkhhbmRs
ZShDb250ZXh0ICpjb250ZXh0LCBIYW5kbGVUeXBlIGhhbmRsZVR5cGUsIEdMdWludCBoYW5kbGUp
OwogCiAgICAgYW5nbGU6OlJlc3VsdCB3YWl0KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEJ1ZmZlckJhcnJpZXJWZWN0b3IgJmJ1ZmZlckJhcnJpZXJzLApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAKaW5kZXgg
ZmExYmQyZjE2NWJkM2ZjODk2ZWY2YzljNjVlMmYyNmE3YmRkMWZkOS4uMTBhYjVmYzE3ODdkNGJm
NzAzYWI3MjQxODhlMmRiYjBkNmMwNWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCkBAIC0yNTYsNiArMjU2LDU2IEBAIGNvbnN0IGFuZ2xl
OjpQYWNrZWRFbnVtTWFwPEJ1ZmZlckJpbmRpbmcsIFN0YXRlOjpCdWZmZXJCaW5kaW5nU2V0dGVy
PiBTdGF0ZTo6a0J1CiAgICAgR2V0QnVmZmVyQmluZGluZ1NldHRlcjxCdWZmZXJCaW5kaW5nOjpV
bmlmb3JtPigpLAogfX07CiAKK0FjdGl2ZVRleHR1cmVzQ2FjaGU6OkFjdGl2ZVRleHR1cmVzQ2Fj
aGUoKSA6IG1UZXh0dXJlc3t9IHt9CisKK0FjdGl2ZVRleHR1cmVzQ2FjaGU6On5BY3RpdmVUZXh0
dXJlc0NhY2hlKCkKK3sKKyAgICBBU1NFUlQoZW1wdHkoKSk7Cit9CisKK3ZvaWQgQWN0aXZlVGV4
dHVyZXNDYWNoZTo6Y2xlYXIoKQoreworICAgIGZvciAoc2l6ZV90IHRleHR1cmVJbmRleCA9IDA7
IHRleHR1cmVJbmRleCA8IG1UZXh0dXJlcy5zaXplKCk7ICsrdGV4dHVyZUluZGV4KQorICAgIHsK
KyAgICAgICAgcmVzZXQodGV4dHVyZUluZGV4KTsKKyAgICB9Cit9CisKK2Jvb2wgQWN0aXZlVGV4
dHVyZXNDYWNoZTo6ZW1wdHkoKSBjb25zdAoreworICAgIGZvciAoVGV4dHVyZSAqdGV4dHVyZSA6
IG1UZXh0dXJlcykKKyAgICB7CisgICAgICAgIGlmICh0ZXh0dXJlKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworQU5HTEVfSU5MSU5FIHZvaWQgQWN0aXZlVGV4dHVyZXNDYWNoZTo6cmVzZXQoc2l6
ZV90IHRleHR1cmVJbmRleCkKK3sKKyAgICBpZiAobVRleHR1cmVzW3RleHR1cmVJbmRleF0pCisg
ICAgeworICAgICAgICBtVGV4dHVyZXNbdGV4dHVyZUluZGV4XS0+b25VbmJpbmRBc1NhbXBsZXJU
ZXh0dXJlKCk7CisgICAgICAgIG1UZXh0dXJlc1t0ZXh0dXJlSW5kZXhdID0gbnVsbHB0cjsKKyAg
ICB9Cit9CisKK0FOR0xFX0lOTElORSB2b2lkIEFjdGl2ZVRleHR1cmVzQ2FjaGU6OnNldChzaXpl
X3QgdGV4dHVyZUluZGV4LCBUZXh0dXJlICp0ZXh0dXJlKQoreworICAgIC8vIFdlIGRvbid0IGNh
bGwgcmVzZXQoKSBoZXJlIHRvIGF2b2lkIHNldHRpbmcgbnVsbHB0ciBiZWZvcmUgcmViaW5kLgor
ICAgIGlmIChtVGV4dHVyZXNbdGV4dHVyZUluZGV4XSkKKyAgICB7CisgICAgICAgIG1UZXh0dXJl
c1t0ZXh0dXJlSW5kZXhdLT5vblVuYmluZEFzU2FtcGxlclRleHR1cmUoKTsKKyAgICB9CisKKyAg
ICBBU1NFUlQodGV4dHVyZSk7CisgICAgdGV4dHVyZS0+b25CaW5kQXNTYW1wbGVyVGV4dHVyZSgp
OworICAgIG1UZXh0dXJlc1t0ZXh0dXJlSW5kZXhdID0gdGV4dHVyZTsKK30KKwogU3RhdGU6OlN0
YXRlKENvbnRleHRJRCBjb250ZXh0SW4sCiAgICAgICAgICAgICAgY29uc3QgU3RhdGUgKnNoYXJl
Q29udGV4dFN0YXRlLAogICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVz
LApAQCAtMjg0LDcgKzMzNCw2IEBAIFN0YXRlOjpTdGF0ZShDb250ZXh0SUQgY29udGV4dEluLAog
ICAgICAgbVNhbXBsZXJNYW5hZ2VyKAogICAgICAgICAgIEFsbG9jYXRlT3JHZXRTaGFyZWRSZXNv
dXJjZU1hbmFnZXIoc2hhcmVDb250ZXh0U3RhdGUsICZTdGF0ZTo6bVNhbXBsZXJNYW5hZ2VyKSks
CiAgICAgICBtU3luY01hbmFnZXIoQWxsb2NhdGVPckdldFNoYXJlZFJlc291cmNlTWFuYWdlcihz
aGFyZUNvbnRleHRTdGF0ZSwgJlN0YXRlOjptU3luY01hbmFnZXIpKSwKLSAgICAgIG1QYXRoTWFu
YWdlcihBbGxvY2F0ZU9yR2V0U2hhcmVkUmVzb3VyY2VNYW5hZ2VyKHNoYXJlQ29udGV4dFN0YXRl
LCAmU3RhdGU6Om1QYXRoTWFuYWdlcikpLAogICAgICAgbUZyYW1lYnVmZmVyTWFuYWdlcihuZXcg
RnJhbWVidWZmZXJNYW5hZ2VyKCkpLAogICAgICAgbVByb2dyYW1QaXBlbGluZU1hbmFnZXIobmV3
IFByb2dyYW1QaXBlbGluZU1hbmFnZXIoKSksCiAgICAgICBtTWVtb3J5T2JqZWN0TWFuYWdlcigK
QEAgLTI5Niw2ICszNDUsNyBAQCBTdGF0ZTo6U3RhdGUoQ29udGV4dElEIGNvbnRleHRJbiwKICAg
ICAgIG1EZXB0aENsZWFyVmFsdWUoMCksCiAgICAgICBtU3RlbmNpbENsZWFyVmFsdWUoMCksCiAg
ICAgICBtU2Npc3NvclRlc3QoZmFsc2UpLAorICAgICAgbVNhbXBsZUFscGhhVG9Db3ZlcmFnZShm
YWxzZSksCiAgICAgICBtU2FtcGxlQ292ZXJhZ2UoZmFsc2UpLAogICAgICAgbVNhbXBsZUNvdmVy
YWdlVmFsdWUoMCksCiAgICAgICBtU2FtcGxlQ292ZXJhZ2VJbnZlcnQoZmFsc2UpLApAQCAtMzEz
LDEwICszNjMsMTAgQEAgU3RhdGU6OlN0YXRlKENvbnRleHRJRCBjb250ZXh0SW4sCiAgICAgICBt
UmVhZEZyYW1lYnVmZmVyKG51bGxwdHIpLAogICAgICAgbURyYXdGcmFtZWJ1ZmZlcihudWxscHRy
KSwKICAgICAgIG1Qcm9ncmFtKG51bGxwdHIpLAorICAgICAgbUV4ZWN1dGFibGUobnVsbHB0ciks
CiAgICAgICBtUHJvdm9raW5nVmVydGV4KGdsOjpQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uOjpM
YXN0VmVydGV4Q29udmVudGlvbiksCiAgICAgICBtVmVydGV4QXJyYXkobnVsbHB0ciksCiAgICAg
ICBtQWN0aXZlU2FtcGxlcigwKSwKLSAgICAgIG1BY3RpdmVUZXh0dXJlc0NhY2hle30sCiAgICAg
ICBtVGV4dHVyZXNJbmNvbXBhdGlibGVXaXRoU2FtcGxlcnMoMCksCiAgICAgICBtUHJpbWl0aXZl
UmVzdGFydChmYWxzZSksCiAgICAgICBtRGVidWcoZGVidWcpLApAQCAtMzI3LDcgKzM3Nyw4IEBA
IFN0YXRlOjpTdGF0ZShDb250ZXh0SUQgY29udGV4dEluLAogICAgICAgbVByb2dyYW1CaW5hcnlD
YWNoZUVuYWJsZWQocHJvZ3JhbUJpbmFyeUNhY2hlRW5hYmxlZCksCiAgICAgICBtVGV4dHVyZVJl
Y3RhbmdsZUVuYWJsZWQodHJ1ZSksCiAgICAgICBtTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzKHN0
ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkpLAotICAgICAgbU92ZXJsYXkob3Zlcmxh
eSkKKyAgICAgIG1PdmVybGF5KG92ZXJsYXkpLAorICAgICAgbU5vU2ltdWx0YW5lb3VzQ29uc3Rh
bnRDb2xvckFuZEFscGhhQmxlbmRGdW5jKGZhbHNlKQoge30KIAogU3RhdGU6On5TdGF0ZSgpIHt9
CkBAIC00NDEsNyArNDkyLDggQEAgdm9pZCBTdGF0ZTo6aW5pdGlhbGl6ZShDb250ZXh0ICpjb250
ZXh0KQogICAgICAgICBtQWN0aXZlUXVlcmllc1t0eXBlXS5zZXQoY29udGV4dCwgbnVsbHB0cik7
CiAgICAgfQogCi0gICAgbVByb2dyYW0gPSBudWxscHRyOworICAgIG1Qcm9ncmFtICAgID0gbnVs
bHB0cjsKKyAgICBtRXhlY3V0YWJsZSA9IG51bGxwdHI7CiAKICAgICBtUmVhZEZyYW1lYnVmZmVy
ID0gbnVsbHB0cjsKICAgICBtRHJhd0ZyYW1lYnVmZmVyID0gbnVsbHB0cjsKQEAgLTQ1NSwxMSAr
NTA3LDkgQEAgdm9pZCBTdGF0ZTo6aW5pdGlhbGl6ZShDb250ZXh0ICpjb250ZXh0KQogCiAgICAg
bUNvdmVyYWdlTW9kdWxhdGlvbiA9IEdMX05PTkU7CiAKLSAgICBhbmdsZTo6TWF0cml4PEdMZmxv
YXQ+OjpzZXRUb0lkZW50aXR5KG1QYXRoTWF0cml4UHJvaik7Ci0gICAgYW5nbGU6Ok1hdHJpeDxH
TGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0aE1hdHJpeE1WKTsKLSAgICBtUGF0aFN0ZW5jaWxG
dW5jID0gR0xfQUxXQVlTOwotICAgIG1QYXRoU3RlbmNpbFJlZiAgPSAwOwotICAgIG1QYXRoU3Rl
bmNpbE1hc2sgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpOworICAgIG1Ob1Np
bXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYyA9CisgICAgICAgIGNvbnRl
eHQtPmdldExpbWl0YXRpb25zKCkubm9TaW11bHRhbmVvdXNDb25zdGFudENvbG9yQW5kQWxwaGFC
bGVuZEZ1bmMgfHwKKyAgICAgICAgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0
aWJpbGl0eTsKIAogICAgIC8vIEdMRVMxIGVtdWxhdGlvbjogSW5pdGlhbGl6ZSBzdGF0ZSBmb3Ig
R0xFUzEgaWYgdmVyc2lvbiBhcHBsaWVzCiAgICAgLy8gVE9ETyhodHRwOi8vYW5nbGVidWcuY29t
LzM3NDUpOiBXaGVuIG9uIGRlc2t0b3AgY2xpZW50IG9ubHkgZG8gdGhpcyBpbiBjb21wYXRpYmls
aXR5IHByb2ZpbGUKQEAgLTUwNCw4ICs1NTQsOCBAQCB2b2lkIFN0YXRlOjpyZXNldChjb25zdCBD
b250ZXh0ICpjb250ZXh0KQogICAgIHsKICAgICAgICAgbVByb2dyYW0tPnJlbGVhc2UoY29udGV4
dCk7CiAgICAgfQotICAgIG1Qcm9ncmFtID0gbnVsbHB0cjsKLQorICAgIG1Qcm9ncmFtICAgID0g
bnVsbHB0cjsKKyAgICBtRXhlY3V0YWJsZSA9IG51bGxwdHI7CiAgICAgbVByb2dyYW1QaXBlbGlu
ZS5zZXQoY29udGV4dCwgbnVsbHB0cik7CiAKICAgICBpZiAobVRyYW5zZm9ybUZlZWRiYWNrLmdl
dCgpKQpAQCAtNTMyLDExICs1ODIsNyBAQCB2b2lkIFN0YXRlOjpyZXNldChjb25zdCBDb250ZXh0
ICpjb250ZXh0KQogICAgICAgICBVcGRhdGVJbmRleGVkQnVmZmVyQmluZGluZyhjb250ZXh0LCAm
YnVmLCBudWxscHRyLCBCdWZmZXJCaW5kaW5nOjpTaGFkZXJTdG9yYWdlLCAwLCAwKTsKICAgICB9
CiAKLSAgICBhbmdsZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KG1QYXRoTWF0cml4
UHJvaik7Ci0gICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0aE1h
dHJpeE1WKTsKLSAgICBtUGF0aFN0ZW5jaWxGdW5jID0gR0xfQUxXQVlTOwotICAgIG1QYXRoU3Rl
bmNpbFJlZiAgPSAwOwotICAgIG1QYXRoU3RlbmNpbE1hc2sgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PEdMdWludD46Om1heCgpOworICAgIG1BY3RpdmVUZXh0dXJlc0NhY2hlLmNsZWFyKCk7CiAKICAg
ICBzZXRBbGxEaXJ0eUJpdHMoKTsKIH0KQEAgLTU0NCw5ICs1OTAsOSBAQCB2b2lkIFN0YXRlOjpy
ZXNldChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogQU5HTEVfSU5MSU5FIHZvaWQgU3RhdGU6OnVu
c2V0QWN0aXZlVGV4dHVyZXMoQWN0aXZlVGV4dHVyZU1hc2sgdGV4dHVyZU1hc2spCiB7CiAgICAg
Ly8gVW5zZXQgYW55IHJlbGV2YW50IGJvdW5kIHRleHR1cmVzLgotICAgIGZvciAoc2l6ZV90IHRl
eHR1cmVJbmRleCA6IG1Qcm9ncmFtLT5nZXRBY3RpdmVTYW1wbGVyc01hc2soKSkKKyAgICBmb3Ig
KHNpemVfdCB0ZXh0dXJlSW5kZXggOiBtRXhlY3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNr
KCkpCiAgICAgewotICAgICAgICBtQWN0aXZlVGV4dHVyZXNDYWNoZVt0ZXh0dXJlSW5kZXhdID0g
bnVsbHB0cjsKKyAgICAgICAgbUFjdGl2ZVRleHR1cmVzQ2FjaGUucmVzZXQodGV4dHVyZUluZGV4
KTsKICAgICAgICAgbUNvbXBsZXRlVGV4dHVyZUJpbmRpbmdzW3RleHR1cmVJbmRleF0ucmVzZXQo
KTsKICAgICB9CiB9CkBAIC01NTgsMTEgKzYwNCwxMSBAQCBBTkdMRV9JTkxJTkUgdm9pZCBTdGF0
ZTo6dXBkYXRlQWN0aXZlVGV4dHVyZVN0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiB7CiAg
ICAgaWYgKCF0ZXh0dXJlLT5pc1NhbXBsZXJDb21wbGV0ZShjb250ZXh0LCBzYW1wbGVyKSkKICAg
ICB7Ci0gICAgICAgIG1BY3RpdmVUZXh0dXJlc0NhY2hlW3RleHR1cmVJbmRleF0gPSBudWxscHRy
OworICAgICAgICBtQWN0aXZlVGV4dHVyZXNDYWNoZS5yZXNldCh0ZXh0dXJlSW5kZXgpOwogICAg
IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBtQWN0aXZlVGV4dHVyZXNDYWNoZVt0ZXh0dXJl
SW5kZXhdID0gdGV4dHVyZTsKKyAgICAgICAgbUFjdGl2ZVRleHR1cmVzQ2FjaGUuc2V0KHRleHR1
cmVJbmRleCwgdGV4dHVyZSk7CiAKICAgICAgICAgaWYgKHRleHR1cmUtPmhhc0FueURpcnR5Qml0
KCkpCiAgICAgICAgIHsKQEAgLTU4MSw4ICs2MjcsNyBAQCBBTkdMRV9JTkxJTkUgdm9pZCBTdGF0
ZTo6dXBkYXRlQWN0aXZlVGV4dHVyZVN0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICBzYW1wbGVyID8gc2FtcGxlci0+Z2V0U2FtcGxlclN0YXRlKCkgOiB0ZXh0dXJlLT5n
ZXRTYW1wbGVyU3RhdGUoKTsKICAgICAgICAgbVRleHR1cmVzSW5jb21wYXRpYmxlV2l0aFNhbXBs
ZXJzW3RleHR1cmVJbmRleF0gPQogICAgICAgICAgICAgIXRleHR1cmUtPmdldFRleHR1cmVTdGF0
ZSgpLmNvbXBhdGlibGVXaXRoU2FtcGxlckZvcm1hdCgKLSAgICAgICAgICAgICAgICBtUHJvZ3Jh
bS0+Z2V0U3RhdGUoKS5nZXRTYW1wbGVyRm9ybWF0Rm9yVGV4dHVyZVVuaXRJbmRleCh0ZXh0dXJl
SW5kZXgpLAotICAgICAgICAgICAgICAgIHNhbXBsZXJTdGF0ZSk7CisgICAgICAgICAgICAgICAg
bUV4ZWN1dGFibGUtPmdldFNhbXBsZXJGb3JtYXRGb3JUZXh0dXJlVW5pdEluZGV4KHRleHR1cmVJ
bmRleCksIHNhbXBsZXJTdGF0ZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC02MDIsNyAr
NjQ3LDcgQEAgQU5HTEVfSU5MSU5FIHZvaWQgU3RhdGU6OnVwZGF0ZUFjdGl2ZVRleHR1cmUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKIAogICAgIGlmICghdGV4dHVyZSkKICAgICB7Ci0gICAgICAg
IG1BY3RpdmVUZXh0dXJlc0NhY2hlW3RleHR1cmVJbmRleF0gPSBudWxscHRyOworICAgICAgICBt
QWN0aXZlVGV4dHVyZXNDYWNoZS5yZXNldCh0ZXh0dXJlSW5kZXgpOwogICAgICAgICBtRGlydHlC
aXRzLnNldChESVJUWV9CSVRfVEVYVFVSRV9CSU5ESU5HUyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC02MTAsNiArNjU1LDE4IEBAIEFOR0xFX0lOTElORSB2b2lkIFN0YXRlOjp1cGRhdGVB
Y3RpdmVUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgdXBkYXRlQWN0aXZlVGV4
dHVyZVN0YXRlKGNvbnRleHQsIHRleHR1cmVJbmRleCwgc2FtcGxlciwgdGV4dHVyZSk7CiB9CiAK
K0FOR0xFX0lOTElORSBib29sIFN0YXRlOjpoYXNDb25zdGFudENvbG9yKEdMZW51bSBzb3VyY2VS
R0IsIEdMZW51bSBkZXN0UkdCKSBjb25zdAoreworICAgIHJldHVybiBzb3VyY2VSR0IgPT0gR0xf
Q09OU1RBTlRfQ09MT1IgfHwgc291cmNlUkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xP
UiB8fAorICAgICAgICAgICBkZXN0UkdCID09IEdMX0NPTlNUQU5UX0NPTE9SIHx8IGRlc3RSR0Ig
PT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOworfQorCitBTkdMRV9JTkxJTkUgYm9vbCBT
dGF0ZTo6aGFzQ29uc3RhbnRBbHBoYShHTGVudW0gc291cmNlUkdCLCBHTGVudW0gZGVzdFJHQikg
Y29uc3QKK3sKKyAgICByZXR1cm4gc291cmNlUkdCID09IEdMX0NPTlNUQU5UX0FMUEhBIHx8IHNv
dXJjZVJHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgfHwKKyAgICAgICAgICAgZGVz
dFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBkZXN0UkdCID09IEdMX09ORV9NSU5VU19DT05T
VEFOVF9BTFBIQTsKK30KKwogY29uc3QgUmFzdGVyaXplclN0YXRlICZTdGF0ZTo6Z2V0UmFzdGVy
aXplclN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVJhc3Rlcml6ZXI7CkBAIC02NDMsMTMg
KzcwMCw1NCBAQCB2b2lkIFN0YXRlOjpzZXRTdGVuY2lsQ2xlYXJWYWx1ZShpbnQgc3RlbmNpbCkK
IAogdm9pZCBTdGF0ZTo6c2V0Q29sb3JNYXNrKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJs
dWUsIGJvb2wgYWxwaGEpCiB7Ci0gICAgbUJsZW5kLmNvbG9yTWFza1JlZCAgID0gcmVkOwotICAg
IG1CbGVuZC5jb2xvck1hc2tHcmVlbiA9IGdyZWVuOwotICAgIG1CbGVuZC5jb2xvck1hc2tCbHVl
ICA9IGJsdWU7Ci0gICAgbUJsZW5kLmNvbG9yTWFza0FscGhhID0gYWxwaGE7CisgICAgZm9yIChC
bGVuZFN0YXRlICZibGVuZFN0YXRlIDogbUJsZW5kU3RhdGVBcnJheSkKKyAgICB7CisgICAgICAg
IGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICAgPSByZWQ7CisgICAgICAgIGJsZW5kU3RhdGUuY29s
b3JNYXNrR3JlZW4gPSBncmVlbjsKKyAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICA9
IGJsdWU7CisgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKKyAgICB9
CiAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX01BU0spOwogfQogCit2b2lkIFN0
YXRlOjpzZXRDb2xvck1hc2tJbmRleGVkKGJvb2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUs
IGJvb2wgYWxwaGEsIEdMdWludCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBtQmxlbmRT
dGF0ZUFycmF5LnNpemUoKSk7CisgICAgbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uY29sb3JNYXNr
UmVkICAgPSByZWQ7CisgICAgbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uY29sb3JNYXNrR3JlZW4g
PSBncmVlbjsKKyAgICBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5jb2xvck1hc2tCbHVlICA9IGJs
dWU7CisgICAgbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsK
KyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQ09MT1JfTUFTSyk7Cit9CisKK2Jvb2wgU3Rh
dGU6OmFsbEFjdGl2ZURyYXdCdWZmZXJDaGFubmVsc01hc2tlZCgpIGNvbnN0Cit7CisgICAgZm9y
IChzaXplX3QgZHJhd0J1ZmZlckluZGV4IDogbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RHJhd0J1ZmZl
ck1hc2soKSkKKyAgICB7CisgICAgICAgIGNvbnN0IEJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBt
QmxlbmRTdGF0ZUFycmF5W2RyYXdCdWZmZXJJbmRleF07CisgICAgICAgIGlmIChibGVuZFN0YXRl
LmNvbG9yTWFza1JlZCB8fCBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuIHx8IGJsZW5kU3RhdGUu
Y29sb3JNYXNrQmx1ZSB8fAorICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFN0YXRlOjphbnlBY3RpdmVEcmF3QnVmZmVyQ2hh
bm5lbE1hc2tlZCgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgZHJhd0J1ZmZlckluZGV4IDog
bURyYXdGcmFtZWJ1ZmZlci0+Z2V0RHJhd0J1ZmZlck1hc2soKSkKKyAgICB7CisgICAgICAgIGNv
bnN0IEJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBtQmxlbmRTdGF0ZUFycmF5W2RyYXdCdWZmZXJJ
bmRleF07CisgICAgICAgIGlmICghKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICYmIGJsZW5kU3Rh
dGUuY29sb3JNYXNrR3JlZW4gJiYgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICYmCisgICAgICAg
ICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgU3RhdGU6OnNldERlcHRoTWFzayhib29sIG1hc2spCiB7CiAgICAgaWYgKG1EZXB0aFN0
ZW5jaWwuZGVwdGhNYXNrICE9IG1hc2spCkBAIC03MTMsMjEgKzgxMSw5MSBAQCB2b2lkIFN0YXRl
OjpzZXREZXB0aFJhbmdlKGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyKQogCiB2b2lkIFN0YXRlOjpz
ZXRCbGVuZChib29sIGVuYWJsZWQpCiB7Ci0gICAgbUJsZW5kLmJsZW5kID0gZW5hYmxlZDsKKyAg
ICBmb3IgKEJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgOiBtQmxlbmRTdGF0ZUFycmF5KQorICAgIHsK
KyAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZCA9IGVuYWJsZWQ7CisgICAgfQorICAgIGVuYWJsZWQg
PyBtQmxlbmRFbmFibGVkRHJhd0J1ZmZlcnMuc2V0KCkgOiBtQmxlbmRFbmFibGVkRHJhd0J1ZmZl
cnMucmVzZXQoKTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfRU5BQkxFRCk7
Cit9CisKK3ZvaWQgU3RhdGU6OnNldEJsZW5kSW5kZXhlZChib29sIGVuYWJsZWQsIEdMdWludCBp
bmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBtQmxlbmRTdGF0ZUFycmF5LnNpemUoKSk7Cisg
ICAgbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uYmxlbmQgPSBlbmFibGVkOworICAgIG1CbGVuZEVu
YWJsZWREcmF3QnVmZmVycy5zZXQoaW5kZXgsIGVuYWJsZWQpOwogICAgIG1EaXJ0eUJpdHMuc2V0
KERJUlRZX0JJVF9CTEVORF9FTkFCTEVEKTsKIH0KIAogdm9pZCBTdGF0ZTo6c2V0QmxlbmRGYWN0
b3JzKEdMZW51bSBzb3VyY2VSR0IsIEdMZW51bSBkZXN0UkdCLCBHTGVudW0gc291cmNlQWxwaGEs
IEdMZW51bSBkZXN0QWxwaGEpCiB7Ci0gICAgbUJsZW5kLnNvdXJjZUJsZW5kUkdCICAgPSBzb3Vy
Y2VSR0I7Ci0gICAgbUJsZW5kLmRlc3RCbGVuZFJHQiAgICAgPSBkZXN0UkdCOwotICAgIG1CbGVu
ZC5zb3VyY2VCbGVuZEFscGhhID0gc291cmNlQWxwaGE7Ci0gICAgbUJsZW5kLmRlc3RCbGVuZEFs
cGhhICAgPSBkZXN0QWxwaGE7CisgICAgZm9yIChCbGVuZFN0YXRlICZibGVuZFN0YXRlIDogbUJs
ZW5kU3RhdGVBcnJheSkKKyAgICB7CisgICAgICAgIGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0Ig
ICA9IHNvdXJjZVJHQjsKKyAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgICAgID0gZGVz
dFJHQjsKKyAgICAgICAgYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhID0gc291cmNlQWxwaGE7
CisgICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEgICA9IGRlc3RBbHBoYTsKKyAgICB9
CisKKyAgICBpZiAobU5vU2ltdWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5j
KQorICAgIHsKKyAgICAgICAgaWYgKGhhc0NvbnN0YW50Q29sb3Ioc291cmNlUkdCLCBkZXN0UkdC
KSkKKyAgICAgICAgeworICAgICAgICAgICAgbUJsZW5kRnVuY0NvbnN0YW50Q29sb3JEcmF3QnVm
ZmVycy5zZXQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1CbGVuZEZ1bmNDb25zdGFudENvbG9yRHJhd0J1ZmZlcnMucmVzZXQoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChoYXNDb25zdGFudEFscGhhKHNvdXJjZVJHQiwgZGVzdFJHQikpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1CbGVuZEZ1bmNDb25zdGFudEFscGhhRHJhd0J1ZmZlcnMu
c2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBt
QmxlbmRGdW5jQ29uc3RhbnRBbHBoYURyYXdCdWZmZXJzLnJlc2V0KCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTKTsKK30KKwordm9p
ZCBTdGF0ZTo6c2V0QmxlbmRGYWN0b3JzSW5kZXhlZChHTGVudW0gc291cmNlUkdCLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFJHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZUFscGhhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEFscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4IDwg
bUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgIG1CbGVuZFN0YXRlQXJyYXlbaW5kZXhdLnNv
dXJjZUJsZW5kUkdCICAgPSBzb3VyY2VSR0I7CisgICAgbUJsZW5kU3RhdGVBcnJheVtpbmRleF0u
ZGVzdEJsZW5kUkdCICAgICA9IGRlc3RSR0I7CisgICAgbUJsZW5kU3RhdGVBcnJheVtpbmRleF0u
c291cmNlQmxlbmRBbHBoYSA9IHNvdXJjZUFscGhhOworICAgIG1CbGVuZFN0YXRlQXJyYXlbaW5k
ZXhdLmRlc3RCbGVuZEFscGhhICAgPSBkZXN0QWxwaGE7CisKKyAgICBpZiAobU5vU2ltdWx0YW5l
b3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jKQorICAgIHsKKyAgICAgICAgbUJsZW5k
RnVuY0NvbnN0YW50Q29sb3JEcmF3QnVmZmVycy5zZXQoaW5kZXgsIGhhc0NvbnN0YW50Q29sb3Io
c291cmNlUkdCLCBkZXN0UkdCKSk7CisgICAgICAgIG1CbGVuZEZ1bmNDb25zdGFudEFscGhhRHJh
d0J1ZmZlcnMuc2V0KGluZGV4LCBoYXNDb25zdGFudEFscGhhKHNvdXJjZVJHQiwgZGVzdFJHQikp
OworICAgIH0KICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfRlVOQ1MpOwogfQog
CiB2b2lkIFN0YXRlOjpzZXRCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0
IGJsdWUsIGZsb2F0IGFscGhhKQogeworICAgIC8vIEluIEVTMiB3aXRob3V0IHJlbmRlci10by1m
bG9hdCBleHRlbnNpb25zLCBCbGVuZENvbG9yIGNsYW1wcyB0byBbMCwxXSBvbiBzdG9yZS4KKyAg
ICAvLyBPbiBFUzMrLCBvciB3aXRoIHJlbmRlci10by1mbG9hdCBleHRzIGVuYWJsZWQsIGl0IGRv
ZXMgbm90IGNsYW1wIG9uIHN0b3JlLgorICAgIGNvbnN0IGJvb2wgaXNFUzIgPSBtQ2xpZW50VmVy
c2lvbi5tYWpvciA9PSAyOworICAgIGNvbnN0IGJvb2wgaGFzRmxvYXRCbGVuZGluZyA9CisgICAg
ICAgIG1FeHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQgfHwgbUV4dGVuc2lvbnMuY29sb3JCdWZm
ZXJIYWxmRmxvYXQgfHwKKyAgICAgICAgbUV4dGVuc2lvbnMuY29sb3JCdWZmZXJGbG9hdFJHQiB8
fCBtRXh0ZW5zaW9ucy5jb2xvckJ1ZmZlckZsb2F0UkdCQTsKKyAgICBpZiAoaXNFUzIgJiYgIWhh
c0Zsb2F0QmxlbmRpbmcpCisgICAgeworICAgICAgICByZWQgICA9IGNsYW1wMDEocmVkKTsKKyAg
ICAgICAgZ3JlZW4gPSBjbGFtcDAxKGdyZWVuKTsKKyAgICAgICAgYmx1ZSAgPSBjbGFtcDAxKGJs
dWUpOworICAgICAgICBhbHBoYSA9IGNsYW1wMDEoYWxwaGEpOworICAgIH0KKwogICAgIG1CbGVu
ZENvbG9yLnJlZCAgID0gcmVkOwogICAgIG1CbGVuZENvbG9yLmdyZWVuID0gZ3JlZW47CiAgICAg
bUJsZW5kQ29sb3IuYmx1ZSAgPSBibHVlOwpAQCAtNzM3LDggKzkwNSwxOSBAQCB2b2lkIFN0YXRl
OjpzZXRCbGVuZENvbG9yKGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0
IGFscGhhKQogCiB2b2lkIFN0YXRlOjpzZXRCbGVuZEVxdWF0aW9uKEdMZW51bSByZ2JFcXVhdGlv
biwgR0xlbnVtIGFscGhhRXF1YXRpb24pCiB7Ci0gICAgbUJsZW5kLmJsZW5kRXF1YXRpb25SR0Ig
ICA9IHJnYkVxdWF0aW9uOwotICAgIG1CbGVuZC5ibGVuZEVxdWF0aW9uQWxwaGEgPSBhbHBoYUVx
dWF0aW9uOworICAgIGZvciAoQmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA6IG1CbGVuZFN0YXRlQXJy
YXkpCisgICAgeworICAgICAgICBibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgICA9IHJnYkVx
dWF0aW9uOworICAgICAgICBibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSA9IGFscGhhRXF1
YXRpb247CisgICAgfQorICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9FUVVBVElP
TlMpOworfQorCit2b2lkIFN0YXRlOjpzZXRCbGVuZEVxdWF0aW9uSW5kZXhlZChHTGVudW0gcmdi
RXF1YXRpb24sIEdMZW51bSBhbHBoYUVxdWF0aW9uLCBHTHVpbnQgaW5kZXgpCit7CisgICAgQVNT
RVJUKGluZGV4IDwgbUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgIG1CbGVuZFN0YXRlQXJy
YXlbaW5kZXhdLmJsZW5kRXF1YXRpb25SR0IgICA9IHJnYkVxdWF0aW9uOworICAgIG1CbGVuZFN0
YXRlQXJyYXlbaW5kZXhdLmJsZW5kRXF1YXRpb25BbHBoYSA9IGFscGhhRXF1YXRpb247CiAgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0VRVUFUSU9OUyk7CiB9CiAKQEAgLTg0MSw3
ICsxMDIwLDcgQEAgdm9pZCBTdGF0ZTo6c2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0IGZh
Y3RvciwgR0xmbG9hdCB1bml0cykKIAogdm9pZCBTdGF0ZTo6c2V0U2FtcGxlQWxwaGFUb0NvdmVy
YWdlKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBtQmxlbmQuc2FtcGxlQWxwaGFUb0NvdmVyYWdlID0g
ZW5hYmxlZDsKKyAgICBtU2FtcGxlQWxwaGFUb0NvdmVyYWdlID0gZW5hYmxlZDsKICAgICBtRGly
dHlCaXRzLnNldChESVJUWV9CSVRfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFX0VOQUJMRUQpOwog
fQogCkBAIC04ODYsMjIgKzEwNjUsMjkgQEAgdm9pZCBTdGF0ZTo6c2V0TXVsdGlzYW1wbGluZyhi
b29sIGVuYWJsZWQpCiAKIHZvaWQgU3RhdGU6OnNldFNjaXNzb3JUZXN0KGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBtU2Npc3NvclRlc3QgPSBlbmFibGVkOwotICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZ
X0JJVF9TQ0lTU09SX1RFU1RfRU5BQkxFRCk7CisgICAgaWYgKG1TY2lzc29yVGVzdCAhPSBlbmFi
bGVkKQorICAgIHsKKyAgICAgICAgbVNjaXNzb3JUZXN0ID0gZW5hYmxlZDsKKyAgICAgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX1NDSVNTT1JfVEVTVF9FTkFCTEVEKTsKKyAgICB9CiB9CiAK
IHZvaWQgU3RhdGU6OnNldFNjaXNzb3JQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgbVNjaXNzb3IueCAgICAgID0geDsKLSAgICBt
U2Npc3Nvci55ICAgICAgPSB5OwotICAgIG1TY2lzc29yLndpZHRoICA9IHdpZHRoOwotICAgIG1T
Y2lzc29yLmhlaWdodCA9IGhlaWdodDsKLSAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0NJ
U1NPUik7CisgICAgLy8gU2tpcCBpZiBzYW1lIHNjaXNzb3IgaW5mbworICAgIGlmIChtU2Npc3Nv
ci54ICE9IHggfHwgbVNjaXNzb3IueSAhPSB5IHx8IG1TY2lzc29yLndpZHRoICE9IHdpZHRoIHx8
IG1TY2lzc29yLmhlaWdodCAhPSBoZWlnaHQpCisgICAgeworICAgICAgICBtU2Npc3Nvci54ICAg
ICAgPSB4OworICAgICAgICBtU2Npc3Nvci55ICAgICAgPSB5OworICAgICAgICBtU2Npc3Nvci53
aWR0aCAgPSB3aWR0aDsKKyAgICAgICAgbVNjaXNzb3IuaGVpZ2h0ID0gaGVpZ2h0OworICAgICAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0NJU1NPUik7CisgICAgfQogfQogCiB2b2lkIFN0
YXRlOjpzZXREaXRoZXIoYm9vbCBlbmFibGVkKQogewotICAgIG1CbGVuZC5kaXRoZXIgPSBlbmFi
bGVkOworICAgIG1SYXN0ZXJpemVyLmRpdGhlciA9IGVuYWJsZWQ7CiAgICAgbURpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX0RJVEhFUl9FTkFCTEVEKTsKIH0KIApAQCAtMTAzMCw2ICsxMjE2LDE4IEBA
IHZvaWQgU3RhdGU6OnNldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUsIGJvb2wgZW5hYmxl
ZCkKICAgICB9CiB9CiAKK3ZvaWQgU3RhdGU6OnNldEVuYWJsZUZlYXR1cmVJbmRleGVkKEdMZW51
bSBmZWF0dXJlLCBib29sIGVuYWJsZWQsIEdMdWludCBpbmRleCkKK3sKKyAgICBzd2l0Y2ggKGZl
YXR1cmUpCisgICAgeworICAgICAgICBjYXNlIEdMX0JMRU5EOgorICAgICAgICAgICAgc2V0Qmxl
bmRJbmRleGVkKGVuYWJsZWQsIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKIGJvb2wgU3Rh
dGU6OmdldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUpIGNvbnN0CiB7CiAgICAgc3dpdGNo
IChmZWF0dXJlKQpAQCAtMTEzNiw2ICsxMzM0LDE5IEBAIGJvb2wgU3RhdGU6OmdldEVuYWJsZUZl
YXR1cmUoR0xlbnVtIGZlYXR1cmUpIGNvbnN0CiAgICAgfQogfQogCitib29sIFN0YXRlOjpnZXRF
bmFibGVGZWF0dXJlSW5kZXhlZChHTGVudW0gZmVhdHVyZSwgR0x1aW50IGluZGV4KSBjb25zdAor
eworICAgIHN3aXRjaCAoZmVhdHVyZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQkxFTkQ6Cisg
ICAgICAgICAgICByZXR1cm4gaXNCbGVuZEVuYWJsZWRJbmRleGVkKGluZGV4KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIHZvaWQgU3RhdGU6OnNldExp
bmVXaWR0aChHTGZsb2F0IHdpZHRoKQogewogICAgIG1MaW5lV2lkdGggPSB3aWR0aDsKQEAgLTEx
NTksMTEgKzEzNzAsMTYgQEAgdm9pZCBTdGF0ZTo6c2V0RnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZl
SGludChHTGVudW0gaGludCkKIAogdm9pZCBTdGF0ZTo6c2V0Vmlld3BvcnRQYXJhbXMoR0xpbnQg
eCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgbVZpZXdw
b3J0LnggICAgICA9IHg7Ci0gICAgbVZpZXdwb3J0LnkgICAgICA9IHk7Ci0gICAgbVZpZXdwb3J0
LndpZHRoICA9IHdpZHRoOwotICAgIG1WaWV3cG9ydC5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX1ZJRVdQT1JUKTsKKyAgICAvLyBTa2lwIGlmIHNhbWUgdmll
d3BvcnQgaW5mbworICAgIGlmIChtVmlld3BvcnQueCAhPSB4IHx8IG1WaWV3cG9ydC55ICE9IHkg
fHwgbVZpZXdwb3J0LndpZHRoICE9IHdpZHRoIHx8CisgICAgICAgIG1WaWV3cG9ydC5oZWlnaHQg
IT0gaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbVZpZXdwb3J0LnggICAgICA9IHg7CisgICAgICAg
IG1WaWV3cG9ydC55ICAgICAgPSB5OworICAgICAgICBtVmlld3BvcnQud2lkdGggID0gd2lkdGg7
CisgICAgICAgIG1WaWV3cG9ydC5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9WSUVXUE9SVCk7CisgICAgfQogfQogCiB2b2lkIFN0YXRlOjpzZXRBY3Rp
dmVTYW1wbGVyKHVuc2lnbmVkIGludCBhY3RpdmUpCkBAIC0xMTc1LDggKzEzOTEsOCBAQCB2b2lk
IFN0YXRlOjpzZXRTYW1wbGVyVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJl
VHlwZSB0eXBlLCBUZXh0dXJlCiB7CiAgICAgbVNhbXBsZXJUZXh0dXJlc1t0eXBlXVttQWN0aXZl
U2FtcGxlcl0uc2V0KGNvbnRleHQsIHRleHR1cmUpOwogCi0gICAgaWYgKG1Qcm9ncmFtICYmIG1Q
cm9ncmFtLT5nZXRBY3RpdmVTYW1wbGVyc01hc2soKVttQWN0aXZlU2FtcGxlcl0gJiYKLSAgICAg
ICAgSXNUZXh0dXJlQ29tcGF0aWJsZVdpdGhTYW1wbGVyKHR5cGUsIG1Qcm9ncmFtLT5nZXRBY3Rp
dmVTYW1wbGVyVHlwZXMoKVttQWN0aXZlU2FtcGxlcl0pKQorICAgIGlmIChtRXhlY3V0YWJsZSAm
JiBtRXhlY3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKClbbUFjdGl2ZVNhbXBsZXJdICYm
CisgICAgICAgIElzVGV4dHVyZUNvbXBhdGlibGVXaXRoU2FtcGxlcih0eXBlLCBtRXhlY3V0YWJs
ZS0+Z2V0QWN0aXZlU2FtcGxlclR5cGVzKClbbUFjdGl2ZVNhbXBsZXJdKSkKICAgICB7CiAgICAg
ICAgIHVwZGF0ZUFjdGl2ZVRleHR1cmUoY29udGV4dCwgbUFjdGl2ZVNhbXBsZXIsIHRleHR1cmUp
OwogICAgIH0KQEAgLTEyNzQsNiArMTQ5MCw5IEBAIHZvaWQgU3RhdGU6OmludmFsaWRhdGVUZXh0
dXJlKFRleHR1cmVUeXBlIHR5cGUpCiAKIHZvaWQgU3RhdGU6OnNldFNhbXBsZXJCaW5kaW5nKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCB0ZXh0dXJlVW5pdCwgU2FtcGxlciAqc2FtcGxl
cikKIHsKKyAgICBpZiAobVNhbXBsZXJzW3RleHR1cmVVbml0XS5nZXQoKSA9PSBzYW1wbGVyKQor
ICAgICAgICByZXR1cm47CisKICAgICBtU2FtcGxlcnNbdGV4dHVyZVVuaXRdLnNldChjb250ZXh0
LCBzYW1wbGVyKTsKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0FNUExFUl9CSU5ESU5H
Uyk7CiAgICAgLy8gVGhpcyBpcyBvdmVybHkgY29uc2VydmF0aXZlIGFzIGl0IGFzc3VtZXMgdGhl
IHNhbXBsZXIgaGFzIG5ldmVyIGJlZW4gYm91bmQuCkBAIC0xNDgxLDE0ICsxNzAwLDE2IEBAIGFu
Z2xlOjpSZXN1bHQgU3RhdGU6OnNldFByb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJv
Z3JhbSAqbmV3UHJvZ3JhbSkKICAgICB7CiAgICAgICAgIGlmIChtUHJvZ3JhbSkKICAgICAgICAg
ewotICAgICAgICAgICAgdW5zZXRBY3RpdmVUZXh0dXJlcyhtUHJvZ3JhbS0+Z2V0QWN0aXZlU2Ft
cGxlcnNNYXNrKCkpOworICAgICAgICAgICAgdW5zZXRBY3RpdmVUZXh0dXJlcyhtRXhlY3V0YWJs
ZS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCkpOwogICAgICAgICAgICAgbVByb2dyYW0tPnJlbGVh
c2UoY29udGV4dCk7CiAgICAgICAgIH0KIAotICAgICAgICBtUHJvZ3JhbSA9IG5ld1Byb2dyYW07
CisgICAgICAgIG1Qcm9ncmFtICAgID0gbmV3UHJvZ3JhbTsKKyAgICAgICAgbUV4ZWN1dGFibGUg
PSBudWxscHRyOwogCiAgICAgICAgIGlmIChtUHJvZ3JhbSkKICAgICAgICAgeworICAgICAgICAg
ICAgbUV4ZWN1dGFibGUgPSAmbVByb2dyYW0tPmdldEV4ZWN1dGFibGUoKTsKICAgICAgICAgICAg
IG5ld1Byb2dyYW0tPmFkZFJlZigpOwogICAgICAgICAgICAgQU5HTEVfVFJZKG9uUHJvZ3JhbUV4
ZWN1dGFibGVDaGFuZ2UoY29udGV4dCwgbmV3UHJvZ3JhbSkpOwogICAgICAgICB9CkBAIC0xNTMy
LDExICsxNzUzLDI1IEBAIGJvb2wgU3RhdGU6OnJlbW92ZVRyYW5zZm9ybUZlZWRiYWNrQmluZGlu
Zyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogdm9pZCBTdGF0ZTo6c2V0UHJvZ3JhbVBpcGVsaW5l
QmluZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmUgKnBpcGVsaW5l
KQogewogICAgIG1Qcm9ncmFtUGlwZWxpbmUuc2V0KGNvbnRleHQsIHBpcGVsaW5lKTsKKworICAg
IC8vIEEgYm91bmQgUHJvZ3JhbSBhbHdheXMgb3ZlcnJpZGVzIHRoZSBQcm9ncmFtUGlwZWxpbmUs
IHNvIG9ubHkgdXBkYXRlIHRoZQorICAgIC8vIGN1cnJlbnQgUHJvZ3JhbUV4ZWN1dGFibGUgaWYg
dGhlcmUgaXNuJ3QgY3VycmVudGx5IGEgUHJvZ3JhbSBib3VuZC4KKyAgICBpZiAoIW1Qcm9ncmFt
ICYmIHBpcGVsaW5lKQorICAgIHsKKyAgICAgICAgbUV4ZWN1dGFibGUgPSAmbVByb2dyYW1QaXBl
bGluZS0+Z2V0RXhlY3V0YWJsZSgpOworICAgIH0KIH0KIAogdm9pZCBTdGF0ZTo6ZGV0YWNoUHJv
Z3JhbVBpcGVsaW5lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByb2dyYW1QaXBlbGluZUlEIHBp
cGVsaW5lKQogewogICAgIG1Qcm9ncmFtUGlwZWxpbmUuc2V0KGNvbnRleHQsIG51bGxwdHIpOwor
CisgICAgLy8gQSBib3VuZCBQcm9ncmFtIGFsd2F5cyBvdmVycmlkZXMgdGhlIFByb2dyYW1QaXBl
bGluZSwgc28gb25seSB1cGRhdGUgdGhlCisgICAgLy8gY3VycmVudCBQcm9ncmFtRXhlY3V0YWJs
ZSBpZiB0aGVyZSBpc24ndCBjdXJyZW50bHkgYSBQcm9ncmFtIGJvdW5kLgorICAgIGlmICghbVBy
b2dyYW0pCisgICAgeworICAgICAgICBtRXhlY3V0YWJsZSA9IG51bGxwdHI7CisgICAgfQogfQog
CiBib29sIFN0YXRlOjppc1F1ZXJ5QWN0aXZlKFF1ZXJ5VHlwZSB0eXBlKSBjb25zdApAQCAtMTgx
Myw0NyArMjA0OCw2IEBAIHZvaWQgU3RhdGU6OnNldENvdmVyYWdlTW9kdWxhdGlvbihHTGVudW0g
Y29tcG9uZW50cykKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQ09WRVJBR0VfTU9EVUxB
VElPTik7CiB9CiAKLXZvaWQgU3RhdGU6OmxvYWRQYXRoUmVuZGVyaW5nTWF0cml4KEdMZW51bSBt
YXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptYXRyaXgpCi17Ci0gICAgaWYgKG1hdHJpeE1vZGUg
PT0gR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0pCi0gICAgewotICAgICAgICBtZW1jcHkobVBh
dGhNYXRyaXhNViwgbWF0cml4LCAxNiAqIHNpemVvZihHTGZsb2F0KSk7Ci0gICAgICAgIG1EaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9QQVRIX1JFTkRFUklORyk7Ci0gICAgfQotICAgIGVsc2UgaWYg
KG1hdHJpeE1vZGUgPT0gR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNKQotICAgIHsKLSAgICAg
ICAgbWVtY3B5KG1QYXRoTWF0cml4UHJvaiwgbWF0cml4LCAxNiAqIHNpemVvZihHTGZsb2F0KSk7
Ci0gICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9QQVRIX1JFTkRFUklORyk7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotfQotCi1j
b25zdCBHTGZsb2F0ICpTdGF0ZTo6Z2V0UGF0aFJlbmRlcmluZ01hdHJpeChHTGVudW0gd2hpY2gp
IGNvbnN0Ci17Ci0gICAgaWYgKHdoaWNoID09IEdMX1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJP
TUlVTSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtUGF0aE1hdHJpeE1WOwotICAgIH0KLSAgICBl
bHNlIGlmICh3aGljaCA9PSBHTF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1QYXRoTWF0cml4UHJvajsKLSAgICB9Ci0KLSAgICBVTlJFQUNI
QUJMRSgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIFN0YXRlOjpzZXRQYXRoU3Rl
bmNpbEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCi17Ci0gICAgbVBh
dGhTdGVuY2lsRnVuYyA9IGZ1bmM7Ci0gICAgbVBhdGhTdGVuY2lsUmVmICA9IHJlZjsKLSAgICBt
UGF0aFN0ZW5jaWxNYXNrID0gbWFzazsKLSAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfUEFU
SF9SRU5ERVJJTkcpOwotfQotCiB2b2lkIFN0YXRlOjpzZXRGcmFtZWJ1ZmZlclNSR0IoYm9vbCBz
UkdCKQogewogICAgIG1GcmFtZWJ1ZmZlclNSR0IgPSBzUkdCOwpAQCAtMTg2NSw3ICsyMDU5LDcg
QEAgdm9pZCBTdGF0ZTo6c2V0TWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzKEdMdWludCBjb3VudCkK
ICAgICBtTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzID0gY291bnQ7CiB9CiAKLXZvaWQgU3RhdGU6
OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpCit2b2lkIFN0YXRl
OjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKSBjb25zdAogewog
ICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewpAQCAtMTg3NiwxMCArMjA3MCwxMSBAQCB2b2lkIFN0
YXRlOjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQogICAgICAg
ICAgICAgKnBhcmFtcyA9IG1EZXB0aFN0ZW5jaWwuZGVwdGhNYXNrOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVNQVNLOgotICAgICAgICAgICAgcGFyYW1z
WzBdID0gbUJsZW5kLmNvbG9yTWFza1JlZDsKLSAgICAgICAgICAgIHBhcmFtc1sxXSA9IG1CbGVu
ZC5jb2xvck1hc2tHcmVlbjsKLSAgICAgICAgICAgIHBhcmFtc1syXSA9IG1CbGVuZC5jb2xvck1h
c2tCbHVlOwotICAgICAgICAgICAgcGFyYW1zWzNdID0gbUJsZW5kLmNvbG9yTWFza0FscGhhOwor
ICAgICAgICAgICAgLy8gbm9uLWluZGV4ZWQgZ2V0IHJldHVybnMgdGhlIHN0YXRlIG9mIGRyYXcg
YnVmZmVyIHplcm8KKyAgICAgICAgICAgIHBhcmFtc1swXSA9IG1CbGVuZFN0YXRlQXJyYXlbMF0u
Y29sb3JNYXNrUmVkOworICAgICAgICAgICAgcGFyYW1zWzFdID0gbUJsZW5kU3RhdGVBcnJheVsw
XS5jb2xvck1hc2tHcmVlbjsKKyAgICAgICAgICAgIHBhcmFtc1syXSA9IG1CbGVuZFN0YXRlQXJy
YXlbMF0uY29sb3JNYXNrQmx1ZTsKKyAgICAgICAgICAgIHBhcmFtc1szXSA9IG1CbGVuZFN0YXRl
QXJyYXlbMF0uY29sb3JNYXNrQWxwaGE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBHTF9DVUxMX0ZBQ0U6CiAgICAgICAgICAgICAqcGFyYW1zID0gbVJhc3Rlcml6ZXIuY3VsbEZh
Y2U7CkBAIC0xODg4LDcgKzIwODMsNyBAQCB2b2lkIFN0YXRlOjpnZXRCb29sZWFudihHTGVudW0g
cG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQogICAgICAgICAgICAgKnBhcmFtcyA9IG1SYXN0ZXJp
emVyLnBvbHlnb25PZmZzZXRGaWxsOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
R0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOgotICAgICAgICAgICAgKnBhcmFtcyA9IG1CbGVu
ZC5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisgICAgICAgICAgICAqcGFyYW1zID0gbVNhbXBsZUFs
cGhhVG9Db3ZlcmFnZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1NBTVBM
RV9DT1ZFUkFHRToKICAgICAgICAgICAgICpwYXJhbXMgPSBtU2FtcGxlQ292ZXJhZ2U7CkBAIC0x
OTA2LDEwICsyMTAxLDExIEBAIHZvaWQgU3RhdGU6OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwg
R0xib29sZWFuICpwYXJhbXMpCiAgICAgICAgICAgICAqcGFyYW1zID0gbURlcHRoU3RlbmNpbC5k
ZXB0aFRlc3Q7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9CTEVORDoKLSAg
ICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmQuYmxlbmQ7CisgICAgICAgICAgICAvLyBub24taW5k
ZXhlZCBnZXQgcmV0dXJucyB0aGUgc3RhdGUgb2YgZHJhdyBidWZmZXIgemVybworICAgICAgICAg
ICAgKnBhcmFtcyA9IG1CbGVuZFN0YXRlQXJyYXlbMF0uYmxlbmQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBHTF9ESVRIRVI6Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5k
LmRpdGhlcjsKKyAgICAgICAgICAgICpwYXJhbXMgPSBtUmFzdGVyaXplci5kaXRoZXI7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZF
OgogICAgICAgICAgICAgKnBhcmFtcyA9IGdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5p
c0FjdGl2ZSgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOwpAQCAtMTk2Myw3ICsyMTU5LDcgQEAgdm9p
ZCBTdGF0ZTo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykKICAg
ICB9CiB9CiAKLXZvaWQgU3RhdGU6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBh
cmFtcykKK3ZvaWQgU3RhdGU6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFt
cykgY29uc3QKIHsKICAgICAvLyBQbGVhc2Ugbm90ZTogREVQVEhfQ0xFQVJfVkFMVUUgaXMgaW5j
bHVkZWQgaW4gb3VyIGludGVybmFsIGdldEZsb2F0diBpbXBsZW1lbnRhdGlvbgogICAgIC8vIGJl
Y2F1c2UgaXQgaXMgc3RvcmVkIGFzIGEgZmxvYXQsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUg
R0wgRVMgMi4wIHNwZWMgbmFtZXMKQEAgLTIwNDEsMTMgKzIyMzcsMTQgQEAgdm9pZCBTdGF0ZTo6
Z2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9NT0RFTFZJRVdfTUFUUklYOgotICAgICAg
ICAgICAgbWVtY3B5KHBhcmFtcywgbUdMRVMxU3RhdGUubU1vZGVsdmlld01hdHJpY2VzLmJhY2so
KS5kYXRhKCksIDE2ICogc2l6ZW9mKEdMZmxvYXQpKTsKKyAgICAgICAgICAgIG1lbWNweShwYXJh
bXMsIG1HTEVTMVN0YXRlLm1Nb2RlbHZpZXdNYXRyaWNlcy5iYWNrKCkuY29uc3REYXRhKCksIDE2
ICogc2l6ZW9mKEdMZmxvYXQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdM
X1BST0pFQ1RJT05fTUFUUklYOgotICAgICAgICAgICAgbWVtY3B5KHBhcmFtcywgbUdMRVMxU3Rh
dGUubVByb2plY3Rpb25NYXRyaWNlcy5iYWNrKCkuZGF0YSgpLCAxNiAqIHNpemVvZihHTGZsb2F0
KSk7CisgICAgICAgICAgICBtZW1jcHkocGFyYW1zLCBtR0xFUzFTdGF0ZS5tUHJvamVjdGlvbk1h
dHJpY2VzLmJhY2soKS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAxNiAqIHNpemVv
ZihHTGZsb2F0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X01BVFJJWDoKLSAgICAgICAgICAgIG1lbWNweShwYXJhbXMsIG1HTEVTMVN0YXRlLm1UZXh0dXJl
TWF0cmljZXNbbUFjdGl2ZVNhbXBsZXJdLmJhY2soKS5kYXRhKCksCisgICAgICAgICAgICBtZW1j
cHkocGFyYW1zLCBtR0xFUzFTdGF0ZS5tVGV4dHVyZU1hdHJpY2VzW21BY3RpdmVTYW1wbGVyXS5i
YWNrKCkuY29uc3REYXRhKCksCiAgICAgICAgICAgICAgICAgICAgMTYgKiBzaXplb2YoR0xmbG9h
dCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfTElHSFRfTU9ERUxfQU1C
SUVOVDoKQEAgLTIwNzUsNyArMjI3Miw3IEBAIHZvaWQgU3RhdGU6OmdldEZsb2F0dihHTGVudW0g
cG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKICAgICB9CiB9CiAKLWFuZ2xlOjpSZXN1bHQgU3RhdGU6
OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcykKK2FuZ2xlOjpSZXN1bHQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykgY29uc3QKIHsKICAgICBpZiAo
cG5hbWUgPj0gR0xfRFJBV19CVUZGRVIwX0VYVCAmJiBwbmFtZSA8PSBHTF9EUkFXX0JVRkZFUjE1
X0VYVCkKICAgICB7CkBAIC0yMjExLDIyICsyNDA4LDIzIEBAIGFuZ2xlOjpSZXN1bHQgU3RhdGU6
OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhCiAgICAgICAgICAgICAqcGFyYW1zID0gbURlcHRoU3RlbmNpbC5kZXB0aEZ1bmM7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9CTEVORF9TUkNfUkdCOgotICAgICAgICAg
ICAgKnBhcmFtcyA9IG1CbGVuZC5zb3VyY2VCbGVuZFJHQjsKKyAgICAgICAgICAgIC8vIG5vbi1p
bmRleGVkIGdldCByZXR1cm5zIHRoZSBzdGF0ZSBvZiBkcmF3IGJ1ZmZlciB6ZXJvCisgICAgICAg
ICAgICAqcGFyYW1zID0gbUJsZW5kU3RhdGVBcnJheVswXS5zb3VyY2VCbGVuZFJHQjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19BTFBIQToKLSAgICAgICAg
ICAgICpwYXJhbXMgPSBtQmxlbmQuc291cmNlQmxlbmRBbHBoYTsKKyAgICAgICAgICAgICpwYXJh
bXMgPSBtQmxlbmRTdGF0ZUFycmF5WzBdLnNvdXJjZUJsZW5kQWxwaGE7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHTF9CTEVORF9EU1RfUkdCOgotICAgICAgICAgICAgKnBhcmFt
cyA9IG1CbGVuZC5kZXN0QmxlbmRSR0I7CisgICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kU3Rh
dGVBcnJheVswXS5kZXN0QmxlbmRSR0I7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBHTF9CTEVORF9EU1RfQUxQSEE6Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kLmRlc3RC
bGVuZEFscGhhOworICAgICAgICAgICAgKnBhcmFtcyA9IG1CbGVuZFN0YXRlQXJyYXlbMF0uZGVz
dEJsZW5kQWxwaGE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9CTEVORF9F
UVVBVElPTl9SR0I6Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kLmJsZW5kRXF1YXRpb25S
R0I7CisgICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kU3RhdGVBcnJheVswXS5ibGVuZEVxdWF0
aW9uUkdCOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJ
T05fQUxQSEE6Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kLmJsZW5kRXF1YXRpb25BbHBo
YTsKKyAgICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmRTdGF0ZUFycmF5WzBdLmJsZW5kRXF1YXRp
b25BbHBoYTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJ
VEVNQVNLOgogICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RNYXNrVmFsdWUobURlcHRoU3RlbmNp
bC5zdGVuY2lsV3JpdGVtYXNrKTsKQEAgLTI0NzksMTAgKzI2NzcsMTEgQEAgYW5nbGU6OlJlc3Vs
dCBTdGF0ZTo6Z2V0SW50ZWdlcnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGEKICAgICAgICAgICAgICpwYXJhbXMgPSBUb0dMZW51bShtR0xFUzFTdGF0ZS5t
TG9naWNPcCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9CTEVORF9TUkM6
Ci0gICAgICAgICAgICAqcGFyYW1zID0gbUJsZW5kLnNvdXJjZUJsZW5kUkdCOworICAgICAgICAg
ICAgLy8gbm9uLWluZGV4ZWQgZ2V0IHJldHVybnMgdGhlIHN0YXRlIG9mIGRyYXcgYnVmZmVyIHpl
cm8KKyAgICAgICAgICAgICpwYXJhbXMgPSBtQmxlbmRTdGF0ZUFycmF5WzBdLnNvdXJjZUJsZW5k
UkdCOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUOgotICAg
ICAgICAgICAgKnBhcmFtcyA9IG1CbGVuZC5kZXN0QmxlbmRSR0I7CisgICAgICAgICAgICAqcGFy
YW1zID0gbUJsZW5kU3RhdGVBcnJheVswXS5kZXN0QmxlbmRSR0I7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBHTF9QRVJTUEVDVElWRV9DT1JSRUNUSU9OX0hJTlQ6CiAgICAgICAg
IGNhc2UgR0xfUE9JTlRfU01PT1RIX0hJTlQ6CkBAIC0yNTI5LDEwICsyNzI4LDM0IEBAIHZvaWQg
U3RhdGU6OmdldFBvaW50ZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
dm9pZCAqKnBhcmFtcykgY29uCiAgICAgfQogfQogCi12b2lkIFN0YXRlOjpnZXRJbnRlZ2VyaV92
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpCit2b2lkIFN0YXRlOjpn
ZXRJbnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpIGNv
bnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgeworICAgICAgICBjYXNlIEdMX0JMRU5E
X1NSQ19SR0I6CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkg
PCBtQmxlbmRTdGF0ZUFycmF5LnNpemUoKSk7CisgICAgICAgICAgICAqZGF0YSA9IG1CbGVuZFN0
YXRlQXJyYXlbaW5kZXhdLnNvdXJjZUJsZW5kUkdCOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOgorICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHNpemVfdD4oaW5kZXgpIDwgbUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgICAgICAg
ICAgKmRhdGEgPSBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5zb3VyY2VCbGVuZEFscGhhOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjoKKyAgICAgICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1CbGVuZFN0YXRlQXJyYXku
c2l6ZSgpKTsKKyAgICAgICAgICAgICpkYXRhID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uZGVz
dEJsZW5kUkdCOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNU
X0FMUEhBOgorICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwg
bUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgICAgICAgICAgKmRhdGEgPSBtQmxlbmRTdGF0
ZUFycmF5W2luZGV4XS5kZXN0QmxlbmRBbHBoYTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX1JHQjoKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA8IG1CbGVuZFN0YXRlQXJyYXkuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICpkYXRhID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uYmxlbmRFcXVhdGlvblJHQjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgor
ICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbUJsZW5kU3Rh
dGVBcnJheS5zaXplKCkpOworICAgICAgICAgICAgKmRhdGEgPSBtQmxlbmRTdGF0ZUFycmF5W2lu
ZGV4XS5ibGVuZEVxdWF0aW9uQWxwaGE7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVHJhbnNmb3JtRmVlZGJhY2stPmdldElu
ZGV4ZWRCdWZmZXJDb3VudCgpKTsKICAgICAgICAgICAgICpkYXRhID0gbVRyYW5zZm9ybUZlZWRi
YWNrLT5nZXRJbmRleGVkQnVmZmVyKGluZGV4KS5pZCgpLnZhbHVlOwpAQCAtMjU5NSw3ICsyODE4
LDcgQEAgdm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgsIEdMaW50ICpkYXRhKQogICAgIH0KIH0KIAotdm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcjY0aV92
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSkKK3ZvaWQgU3RhdGU6
OmdldEludGVnZXI2NGlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRh
dGEpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewpAQCAtMjYzNywxMCArMjg2
MCwxNyBAQCB2b2lkIFN0YXRlOjpnZXRJbnRlZ2VyNjRpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGludDY0ICpkYXRhKQogICAgIH0KIH0KIAotdm9pZCBTdGF0ZTo6Z2V0Qm9vbGVh
bmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSkKK3ZvaWQg
U3RhdGU6OmdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xl
YW4gKmRhdGEpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgeworICAgICAgICBj
YXNlIEdMX0NPTE9SX1dSSVRFTUFTSzoKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxz
aXplX3Q+KGluZGV4KSA8IG1CbGVuZFN0YXRlQXJyYXkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGRh
dGFbMF0gPSBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5jb2xvck1hc2tSZWQ7CisgICAgICAgICAg
ICBkYXRhWzFdID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uY29sb3JNYXNrR3JlZW47CisgICAg
ICAgICAgICBkYXRhWzJdID0gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uY29sb3JNYXNrQmx1ZTsK
KyAgICAgICAgICAgIGRhdGFbM10gPSBtQmxlbmRTdGF0ZUFycmF5W2luZGV4XS5jb2xvck1hc2tB
bHBoYTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX0lNQUdFX0JJTkRJTkdf
TEFZRVJFRDoKICAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8
IG1JbWFnZVVuaXRzLnNpemUoKSk7CiAgICAgICAgICAgICAqZGF0YSA9IG1JbWFnZVVuaXRzW2lu
ZGV4XS5sYXllcmVkOwpAQCAtMjY4MCw3ICsyOTEwLDcgQEAgYW5nbGU6OlJlc3VsdCBTdGF0ZTo6
c3luY1RleHR1cmVzSW5pdChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogICAgIGlmICghbVByb2dy
YW0pCiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIAotICAgIGZvciAo
c2l6ZV90IHRleHR1cmVVbml0SW5kZXggOiBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNr
KCkpCisgICAgZm9yIChzaXplX3QgdGV4dHVyZVVuaXRJbmRleCA6IG1FeGVjdXRhYmxlLT5nZXRB
Y3RpdmVTYW1wbGVyc01hc2soKSkKICAgICB7CiAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBt
QWN0aXZlVGV4dHVyZXNDYWNoZVt0ZXh0dXJlVW5pdEluZGV4XTsKICAgICAgICAgaWYgKHRleHR1
cmUpCkBAIC0yNjk1LDcgKzI5MjUsNyBAQCBhbmdsZTo6UmVzdWx0IFN0YXRlOjpzeW5jSW1hZ2Vz
SW5pdChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIEFTU0VSVChtUm9idXN0UmVzb3Vy
Y2VJbml0KTsKICAgICBBU1NFUlQobVByb2dyYW0pOwotICAgIGZvciAoc2l6ZV90IGltYWdlVW5p
dEluZGV4IDogbVByb2dyYW0tPmdldEFjdGl2ZUltYWdlc01hc2soKSkKKyAgICBmb3IgKHNpemVf
dCBpbWFnZVVuaXRJbmRleCA6IG1FeGVjdXRhYmxlLT5nZXRBY3RpdmVJbWFnZXNNYXNrKCkpCiAg
ICAgewogICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gbUltYWdlVW5pdHNbaW1hZ2VVbml0SW5k
ZXhdLnRleHR1cmUuZ2V0KCk7CiAgICAgICAgIGlmICh0ZXh0dXJlKQpAQCAtMjg3Miw4ICszMTAy
LDkgQEAgYW5nbGU6OlJlc3VsdCBTdGF0ZTo6b25Qcm9ncmFtRXhlY3V0YWJsZUNoYW5nZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtICoKICAgICB9CiAKICAgICAvLyBTZXQgYW55IGJv
dW5kIHRleHR1cmVzLgotICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVUeXBlQXJyYXkgJnRleHR1cmVU
eXBlcyA9IHByb2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpOwotICAgIGZvciAoc2l6ZV90
IHRleHR1cmVJbmRleCA6IHByb2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpKQorICAgIGNv
bnN0IFByb2dyYW1FeGVjdXRhYmxlICZleGVjdXRhYmxlICAgICAgICA9IHByb2dyYW0tPmdldEV4
ZWN1dGFibGUoKTsKKyAgICBjb25zdCBBY3RpdmVUZXh0dXJlVHlwZUFycmF5ICZ0ZXh0dXJlVHlw
ZXMgPSBleGVjdXRhYmxlLmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpOworICAgIGZvciAoc2l6ZV90
IHRleHR1cmVJbmRleCA6IGV4ZWN1dGFibGUuZ2V0QWN0aXZlU2FtcGxlcnNNYXNrKCkpCiAgICAg
ewogICAgICAgICBUZXh0dXJlVHlwZSB0eXBlID0gdGV4dHVyZVR5cGVzW3RleHR1cmVJbmRleF07
CiAKQEAgLTI4ODUsNyArMzExNiw3IEBAIGFuZ2xlOjpSZXN1bHQgU3RhdGU6Om9uUHJvZ3JhbUV4
ZWN1dGFibGVDaGFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbSAqCiAgICAgICAg
IHVwZGF0ZUFjdGl2ZVRleHR1cmUoY29udGV4dCwgdGV4dHVyZUluZGV4LCB0ZXh0dXJlKTsKICAg
ICB9CiAKLSAgICBmb3IgKHNpemVfdCBpbWFnZVVuaXRJbmRleCA6IHByb2dyYW0tPmdldEFjdGl2
ZUltYWdlc01hc2soKSkKKyAgICBmb3IgKHNpemVfdCBpbWFnZVVuaXRJbmRleCA6IGV4ZWN1dGFi
bGUuZ2V0QWN0aXZlSW1hZ2VzTWFzaygpKQogICAgIHsKICAgICAgICAgVGV4dHVyZSAqaW1hZ2Ug
PSBtSW1hZ2VVbml0c1tpbWFnZVVuaXRJbmRleF0udGV4dHVyZS5nZXQoKTsKICAgICAgICAgaWYg
KCFpbWFnZSkKQEAgLTI5MjYsMTggKzMxNTcsMjQgQEAgdm9pZCBTdGF0ZTo6c2V0SW1hZ2VVbml0
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGFjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0KQogewotICAg
IG1JbWFnZVVuaXRzW3VuaXRdLnRleHR1cmUuc2V0KGNvbnRleHQsIHRleHR1cmUpOwotICAgIG1J
bWFnZVVuaXRzW3VuaXRdLmxldmVsICAgPSBsZXZlbDsKLSAgICBtSW1hZ2VVbml0c1t1bml0XS5s
YXllcmVkID0gbGF5ZXJlZDsKLSAgICBtSW1hZ2VVbml0c1t1bml0XS5sYXllciAgID0gbGF5ZXI7
Ci0gICAgbUltYWdlVW5pdHNbdW5pdF0uYWNjZXNzICA9IGFjY2VzczsKLSAgICBtSW1hZ2VVbml0
c1t1bml0XS5mb3JtYXQgID0gZm9ybWF0OwotICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9J
TUFHRV9CSU5ESU5HUyk7CisgICAgSW1hZ2VVbml0ICZpbWFnZVVuaXQgPSBtSW1hZ2VVbml0c1t1
bml0XTsKIAorICAgIGlmIChpbWFnZVVuaXQudGV4dHVyZS5nZXQoKSkKKyAgICB7CisgICAgICAg
IGltYWdlVW5pdC50ZXh0dXJlLT5vblVuYmluZEFzSW1hZ2VUZXh0dXJlKCk7CisgICAgfQogICAg
IGlmICh0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgdGV4dHVyZS0+b25CaW5kSW1hZ2VUZXh0dXJl
KCk7CisgICAgICAgIHRleHR1cmUtPm9uQmluZEFzSW1hZ2VUZXh0dXJlKCk7CiAgICAgfQorICAg
IGltYWdlVW5pdC50ZXh0dXJlLnNldChjb250ZXh0LCB0ZXh0dXJlKTsKKyAgICBpbWFnZVVuaXQu
bGV2ZWwgICA9IGxldmVsOworICAgIGltYWdlVW5pdC5sYXllcmVkID0gbGF5ZXJlZDsKKyAgICBp
bWFnZVVuaXQubGF5ZXIgICA9IGxheWVyOworICAgIGltYWdlVW5pdC5hY2Nlc3MgID0gYWNjZXNz
OworICAgIGltYWdlVW5pdC5mb3JtYXQgID0gZm9ybWF0OworICAgIG1EaXJ0eUJpdHMuc2V0KERJ
UlRZX0JJVF9JTUFHRV9CSU5ESU5HUyk7CisKICAgICBvbkltYWdlU3RhdGVDaGFuZ2UoY29udGV4
dCwgdW5pdCk7CiB9CiAKQEAgLTI5NDYsNyArMzE4Myw3IEBAIHZvaWQgU3RhdGU6Om9uQWN0aXZl
VGV4dHVyZUNoYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBzaXplX3QgdGV4dHVyZVVuaXQp
CiB7CiAgICAgaWYgKG1Qcm9ncmFtKQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdHlwZSA9
IG1Qcm9ncmFtLT5nZXRBY3RpdmVTYW1wbGVyVHlwZXMoKVt0ZXh0dXJlVW5pdF07CisgICAgICAg
IFRleHR1cmVUeXBlIHR5cGUgPSBtRXhlY3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlclR5cGVzKClb
dGV4dHVyZVVuaXRdOwogICAgICAgICBpZiAodHlwZSAhPSBUZXh0dXJlVHlwZTo6SW52YWxpZEVu
dW0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFRleHR1cmUgKmFjdGl2ZVRleHR1cmUgPSBnZXRU
ZXh0dXJlRm9yQWN0aXZlU2FtcGxlcih0eXBlLCB0ZXh0dXJlVW5pdCk7CkBAIC0yOTU5LDcgKzMx
OTYsNyBAQCB2b2lkIFN0YXRlOjpvbkFjdGl2ZVRleHR1cmVTdGF0ZUNoYW5nZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBzaXplX3QgdGV4dHVyZVVuaQogewogICAgIGlmIChtUHJvZ3JhbSkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHR5cGUgPSBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxl
clR5cGVzKClbdGV4dHVyZVVuaXRdOworICAgICAgICBUZXh0dXJlVHlwZSB0eXBlID0gbUV4ZWN1
dGFibGUtPmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpW3RleHR1cmVVbml0XTsKICAgICAgICAgaWYg
KHR5cGUgIT0gVGV4dHVyZVR5cGU6OkludmFsaWRFbnVtKQogICAgICAgICB7CiAgICAgICAgICAg
ICBUZXh0dXJlICphY3RpdmVUZXh0dXJlID0gZ2V0VGV4dHVyZUZvckFjdGl2ZVNhbXBsZXIodHlw
ZSwgdGV4dHVyZVVuaXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
U3RhdGUuaAppbmRleCAzYWE3YTU0YTVlMjE5NGY2MjE4ZjFiNmI5NDBjN2VmZjlmZmE3MzcxLi41
OWE0YmZhOTZhNDliYWVjMDgxZDZjMTk5MjAwNjMzNzQxOGRmOWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuaApAQCAtMTksNiArMTksNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL0dMRVMxU3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9PdmVybGF5
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1By
b2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9SZW5kZXJidWZmZXIuaCIKQEAgLTM2LDcgKzM3LDYgQEAgc3RydWN0IENhcHM7CiBjbGFzcyBD
b250ZXh0OwogY2xhc3MgRnJhbWVidWZmZXJNYW5hZ2VyOwogY2xhc3MgTWVtb3J5T2JqZWN0TWFu
YWdlcjsKLWNsYXNzIFBhdGhNYW5hZ2VyOwogY2xhc3MgUHJvZ3JhbVBpcGVsaW5lTWFuYWdlcjsK
IGNsYXNzIFF1ZXJ5OwogY2xhc3MgUmVuZGVyYnVmZmVyTWFuYWdlcjsKQEAgLTU5LDggKzU5LDI3
IEBAIHVzaW5nIENvbnRleHRJRCA9IHVpbnRwdHJfdDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
dXNpbmcgQnVmZmVyQmluZGluZ01hcCAgICAgPSBhbmdsZTo6UGFja2VkRW51bU1hcDxCdWZmZXJC
aW5kaW5nLCBUPjsKIHVzaW5nIEJvdW5kQnVmZmVyTWFwICAgICAgID0gQnVmZmVyQmluZGluZ01h
cDxCaW5kaW5nUG9pbnRlcjxCdWZmZXI+PjsKK3VzaW5nIFNhbXBsZXJCaW5kaW5nVmVjdG9yID0g
c3RkOjp2ZWN0b3I8QmluZGluZ1BvaW50ZXI8U2FtcGxlcj4+OwogdXNpbmcgVGV4dHVyZUJpbmRp
bmdWZWN0b3IgPSBzdGQ6OnZlY3RvcjxCaW5kaW5nUG9pbnRlcjxUZXh0dXJlPj47CiB1c2luZyBU
ZXh0dXJlQmluZGluZ01hcCAgICA9IGFuZ2xlOjpQYWNrZWRFbnVtTWFwPFRleHR1cmVUeXBlLCBU
ZXh0dXJlQmluZGluZ1ZlY3Rvcj47Cit1c2luZyBBY3RpdmVRdWVyeU1hcCAgICAgICA9IGFuZ2xl
OjpQYWNrZWRFbnVtTWFwPFF1ZXJ5VHlwZSwgQmluZGluZ1BvaW50ZXI8UXVlcnk+PjsKKworY2xh
c3MgQWN0aXZlVGV4dHVyZXNDYWNoZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBw
dWJsaWM6CisgICAgQWN0aXZlVGV4dHVyZXNDYWNoZSgpOworICAgIH5BY3RpdmVUZXh0dXJlc0Nh
Y2hlKCk7CisKKyAgICBUZXh0dXJlICpvcGVyYXRvcltdKHNpemVfdCB0ZXh0dXJlSW5kZXgpIGNv
bnN0IHsgcmV0dXJuIG1UZXh0dXJlc1t0ZXh0dXJlSW5kZXhdOyB9CisKKyAgICB2b2lkIGNsZWFy
KCk7CisgICAgdm9pZCBzZXQoc2l6ZV90IHRleHR1cmVJbmRleCwgVGV4dHVyZSAqdGV4dHVyZSk7
CisgICAgdm9pZCByZXNldChzaXplX3QgdGV4dHVyZUluZGV4KTsKKyAgICBib29sIGVtcHR5KCkg
Y29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBBY3RpdmVUZXh0dXJlQXJyYXk8VGV4dHVyZSAqPiBt
VGV4dHVyZXM7Cit9OwogCiBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewpAQCAt
MTA2LDggKzEyNSwxMSBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIH0K
IAogICAgIC8vIFN0YXRlIGNodW5rIGdldHRlcnMKKyAgICBib29sIGFsbEFjdGl2ZURyYXdCdWZm
ZXJDaGFubmVsc01hc2tlZCgpIGNvbnN0OworICAgIGJvb2wgYW55QWN0aXZlRHJhd0J1ZmZlckNo
YW5uZWxNYXNrZWQoKSBjb25zdDsKICAgICBjb25zdCBSYXN0ZXJpemVyU3RhdGUgJmdldFJhc3Rl
cml6ZXJTdGF0ZSgpIGNvbnN0OwotICAgIGNvbnN0IEJsZW5kU3RhdGUgJmdldEJsZW5kU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtQmxlbmQ7IH0KKyAgICBjb25zdCBCbGVuZFN0YXRlICZnZXRCbGVu
ZFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbUJsZW5kU3RhdGVBcnJheVswXTsgfQorICAgIGNvbnN0
IEJsZW5kU3RhdGVBcnJheSAmZ2V0QmxlbmRTdGF0ZUFycmF5KCkgY29uc3QgeyByZXR1cm4gbUJs
ZW5kU3RhdGVBcnJheTsgfQogICAgIGNvbnN0IERlcHRoU3RlbmNpbFN0YXRlICZnZXREZXB0aFN0
ZW5jaWxTdGF0ZSgpIGNvbnN0OwogCiAgICAgLy8gQ2xlYXIgYmVoYXZpb3Igc2V0dGVycyAmIHN0
YXRlIHBhcmFtZXRlciBibG9jayBnZW5lcmF0aW9uIGZ1bmN0aW9uCkBAIC0xMjEsNiArMTQzLDcg
QEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIC8vIFdyaXRlIG1hc2sg
bWFuaXB1bGF0aW9uCiAgICAgdm9pZCBzZXRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4s
IGJvb2wgYmx1ZSwgYm9vbCBhbHBoYSk7CisgICAgdm9pZCBzZXRDb2xvck1hc2tJbmRleGVkKGJv
b2wgcmVkLCBib29sIGdyZWVuLCBib29sIGJsdWUsIGJvb2wgYWxwaGEsIEdMdWludCBpbmRleCk7
CiAgICAgdm9pZCBzZXREZXB0aE1hc2soYm9vbCBtYXNrKTsKIAogICAgIC8vIERpc2NhcmQgdG9n
Z2xlICYgcXVlcnkKQEAgLTE0NiwxMSArMTY5LDI0IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiAgICAgZmxvYXQgZ2V0RmFyUGxhbmUoKSBjb25zdCB7IHJldHVybiBtRmFyWjsg
fQogCiAgICAgLy8gQmxlbmQgc3RhdGUgbWFuaXB1bGF0aW9uCi0gICAgYm9vbCBpc0JsZW5kRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1CbGVuZC5ibGVuZDsgfQorICAgIGJvb2wgaXNCbGVuZEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtQmxlbmRTdGF0ZUFycmF5WzBdLmJsZW5kOyB9CisgICAg
Ym9vbCBpc0JsZW5kRW5hYmxlZEluZGV4ZWQoR0x1aW50IGluZGV4KSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGluZGV4IDwgbUJsZW5kU3RhdGVBcnJheS5zaXplKCkpOworICAgICAgICBy
ZXR1cm4gbUJsZW5kU3RhdGVBcnJheVtpbmRleF0uYmxlbmQ7CisgICAgfQorICAgIERyYXdCdWZm
ZXJNYXNrIGdldEJsZW5kRW5hYmxlZERyYXdCdWZmZXJNYXNrKCkgY29uc3QgeyByZXR1cm4gbUJs
ZW5kRW5hYmxlZERyYXdCdWZmZXJzOyB9CiAgICAgdm9pZCBzZXRCbGVuZChib29sIGVuYWJsZWQp
OworICAgIHZvaWQgc2V0QmxlbmRJbmRleGVkKGJvb2wgZW5hYmxlZCwgR0x1aW50IGluZGV4KTsK
ICAgICB2b2lkIHNldEJsZW5kRmFjdG9ycyhHTGVudW0gc291cmNlUkdCLCBHTGVudW0gZGVzdFJH
QiwgR0xlbnVtIHNvdXJjZUFscGhhLCBHTGVudW0gZGVzdEFscGhhKTsKKyAgICB2b2lkIHNldEJs
ZW5kRmFjdG9yc0luZGV4ZWQoR0xlbnVtIHNvdXJjZVJHQiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzb3VyY2VBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4KTsKICAgICB2b2lkIHNldEJsZW5kQ29sb3IoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwg
ZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpOwogICAgIHZvaWQgc2V0QmxlbmRFcXVhdGlvbihHTGVu
dW0gcmdiRXF1YXRpb24sIEdMZW51bSBhbHBoYUVxdWF0aW9uKTsKKyAgICB2b2lkIHNldEJsZW5k
RXF1YXRpb25JbmRleGVkKEdMZW51bSByZ2JFcXVhdGlvbiwgR0xlbnVtIGFscGhhRXF1YXRpb24s
IEdMdWludCBpbmRleCk7CiAgICAgY29uc3QgQ29sb3JGICZnZXRCbGVuZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbUJsZW5kQ29sb3I7IH0KIAogICAgIC8vIFN0ZW5jaWwgc3RhdGUgbWFuaXVwdWxh
dGlvbgpAQCAtMTc1LDcgKzIxMSw3IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiAgICAgdm9pZCBzZXRQb2x5Z29uT2Zmc2V0UGFyYW1zKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0
IHVuaXRzKTsKIAogICAgIC8vIE11bHRpc2FtcGxlIGNvdmVyYWdlIHN0YXRlIG1hbmlwdWxhdGlv
bgotICAgIGJvb2wgaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbUJsZW5kLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsgfQorICAgIGJvb2wgaXNTYW1wbGVBbHBo
YVRvQ292ZXJhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZUFscGhhVG9Db3ZlcmFn
ZTsgfQogICAgIHZvaWQgc2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlKGJvb2wgZW5hYmxlZCk7CiAg
ICAgYm9vbCBpc1NhbXBsZUNvdmVyYWdlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVD
b3ZlcmFnZTsgfQogICAgIHZvaWQgc2V0U2FtcGxlQ292ZXJhZ2UoYm9vbCBlbmFibGVkKTsKQEAg
LTIwNywxMiArMjQzLDE0IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAg
Y29uc3QgUmVjdGFuZ2xlICZnZXRTY2lzc29yKCkgY29uc3QgeyByZXR1cm4gbVNjaXNzb3I7IH0K
IAogICAgIC8vIERpdGhlciBzdGF0ZSB0b2dnbGUgJiBxdWVyeQotICAgIGJvb2wgaXNEaXRoZXJF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbUJsZW5kLmRpdGhlcjsgfQorICAgIGJvb2wgaXNEaXRo
ZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbVJhc3Rlcml6ZXIuZGl0aGVyOyB9CiAgICAgdm9p
ZCBzZXREaXRoZXIoYm9vbCBlbmFibGVkKTsKIAogICAgIC8vIEdlbmVyaWMgc3RhdGUgdG9nZ2xl
ICYgcXVlcnkKICAgICB2b2lkIHNldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUsIGJvb2wg
ZW5hYmxlZCk7CisgICAgdm9pZCBzZXRFbmFibGVGZWF0dXJlSW5kZXhlZChHTGVudW0gZmVhdHVy
ZSwgYm9vbCBlbmFibGVkLCBHTHVpbnQgaW5kZXgpOwogICAgIGJvb2wgZ2V0RW5hYmxlRmVhdHVy
ZShHTGVudW0gZmVhdHVyZSkgY29uc3Q7CisgICAgYm9vbCBnZXRFbmFibGVGZWF0dXJlSW5kZXhl
ZChHTGVudW0gZmVhdHVyZSwgR0x1aW50IGluZGV4KSBjb25zdDsKIAogICAgIC8vIExpbmUgd2lk
dGggc3RhdGUgc2V0dGVyCiAgICAgdm9pZCBzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCk7CkBA
IC0yNjEsNyArMjk5LDYgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAg
IFNhbXBsZXIgKmdldFNhbXBsZXIoR0x1aW50IHRleHR1cmVVbml0KSBjb25zdCB7IHJldHVybiBt
U2FtcGxlcnNbdGV4dHVyZVVuaXRdLmdldCgpOyB9CiAKLSAgICB1c2luZyBTYW1wbGVyQmluZGlu
Z1ZlY3RvciA9IHN0ZDo6dmVjdG9yPEJpbmRpbmdQb2ludGVyPFNhbXBsZXI+PjsKICAgICBjb25z
dCBTYW1wbGVyQmluZGluZ1ZlY3RvciAmZ2V0U2FtcGxlcnMoKSBjb25zdCB7IHJldHVybiBtU2Ft
cGxlcnM7IH0KIAogICAgIHZvaWQgZGV0YWNoU2FtcGxlcihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBTYW1wbGVySUQgc2FtcGxlcik7CkBAIC0yOTMsNiArMzMwLDEwIEBAIGNsYXNzIFN0YXRlIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIHJldHVybiBtVmVydGV4QXJyYXk7CiAgICAgfQog
CisgICAgLy8gSWYgYm90aCBhIFByb2dyYW0gYW5kIGEgUHJvZ3JhbVBpcGVsaW5lIGFyZSBib3Vu
ZCwgdGhlIFByb2dyYW0gd2lsbAorICAgIC8vIGFsd2F5cyBvdmVycmlkZSB0aGUgUHJvZ3JhbVBp
cGVsaW5lLgorICAgIGNvbnN0IFByb2dyYW1FeGVjdXRhYmxlICpnZXRQcm9ncmFtRXhlY3V0YWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1FeGVjdXRhYmxlOyB9CisKICAgICAvLyBQcm9ncmFtIGJpbmRp
bmcgbWFuaXB1bGF0aW9uCiAgICAgYW5nbGU6OlJlc3VsdCBzZXRQcm9ncmFtKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFByb2dyYW0gKm5ld1Byb2dyYW0pOwogCkBAIC00ODEsMTQgKzUyMiw2IEBA
IGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBzZXRDb3ZlcmFnZU1v
ZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpOwogICAgIEdMZW51bSBnZXRDb3ZlcmFnZU1vZHVs
YXRpb24oKSBjb25zdCB7IHJldHVybiBtQ292ZXJhZ2VNb2R1bGF0aW9uOyB9CiAKLSAgICAvLyBD
SFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIHZvaWQgbG9hZFBhdGhSZW5kZXJpbmdNYXRyaXgo
R0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCk7Ci0gICAgY29uc3QgR0xm
bG9hdCAqZ2V0UGF0aFJlbmRlcmluZ01hdHJpeChHTGVudW0gd2hpY2gpIGNvbnN0OwotICAgIHZv
aWQgc2V0UGF0aFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNr
KTsKLSAgICBHTGVudW0gZ2V0UGF0aFN0ZW5jaWxGdW5jKCkgY29uc3QgeyByZXR1cm4gbVBhdGhT
dGVuY2lsRnVuYzsgfQotICAgIEdMaW50IGdldFBhdGhTdGVuY2lsUmVmKCkgY29uc3QgeyByZXR1
cm4gbVBhdGhTdGVuY2lsUmVmOyB9Ci0gICAgR0x1aW50IGdldFBhdGhTdGVuY2lsTWFzaygpIGNv
bnN0IHsgcmV0dXJuIG1QYXRoU3RlbmNpbE1hc2s7IH0KLQogICAgIC8vIEdMX0VYVF9zUkdCX3dy
aXRlX2NvbnRyb2wKICAgICB2b2lkIHNldEZyYW1lYnVmZmVyU1JHQihib29sIHNSR0IpOwogICAg
IGJvb2wgZ2V0RnJhbWVidWZmZXJTUkdCKCkgY29uc3QgeyByZXR1cm4gbUZyYW1lYnVmZmVyU1JH
QjsgfQpAQCAtNDk4LDEzICs1MzEsMTMgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICBHTHVpbnQgZ2V0TWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzKCkgY29uc3QgeyByZXR1
cm4gbU1heFNoYWRlckNvbXBpbGVyVGhyZWFkczsgfQogCiAgICAgLy8gU3RhdGUgcXVlcnkgZnVu
Y3Rpb25zCi0gICAgdm9pZCBnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFy
YW1zKTsKLSAgICB2b2lkIGdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7
Ci0gICAgYW5nbGU6OlJlc3VsdCBnZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0xlbnVt
IHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykgY29uc3Q7CisgICAgdm9pZCBnZXRGbG9hdHYoR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpIGNvbnN0OworICAgIGFuZ2xlOjpSZXN1bHQgZ2V0
SW50ZWdlcnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKSBjb25zdDsKICAgICB2b2lkIGdldFBvaW50ZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykgY29uc3Q7Ci0gICAgdm9pZCBnZXRJbnRlZ2Vy
aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpOwotICAgIHZvaWQg
Z2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0
YSk7Ci0gICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xib29sZWFuICpkYXRhKTsKKyAgICB2b2lkIGdldEludGVnZXJpX3YoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4LCBHTGludCAqZGF0YSkgY29uc3Q7CisgICAgdm9pZCBnZXRJbnRlZ2VyNjRp
X3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRhKSBjb25zdDsKKyAg
ICB2b2lkIGdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xl
YW4gKmRhdGEpIGNvbnN0OwogCiAgICAgYm9vbCBpc1JvYnVzdFJlc291cmNlSW5pdEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtUm9idXN0UmVzb3VyY2VJbml0OyB9CiAKQEAgLTU3OCw4ICs2MTEs
NyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBESVJUWV9CSVRf
TVVMVElTQU1QTElORywKICAgICAgICAgRElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19PTkUsCiAg
ICAgICAgIERJUlRZX0JJVF9DT1ZFUkFHRV9NT0RVTEFUSU9OLCAgLy8gQ0hST01JVU1fZnJhbWVi
dWZmZXJfbWl4ZWRfc2FtcGxlcwotICAgICAgICBESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkcsCi0g
ICAgICAgIERJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCLCAgLy8gR0xfRVhUX3NSR0Jfd3JpdGVf
Y29udHJvbAorICAgICAgICBESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JHQiwgICAgIC8vIEdMX0VY
VF9zUkdCX3dyaXRlX2NvbnRyb2wKICAgICAgICAgRElSVFlfQklUX0NVUlJFTlRfVkFMVUVTLAog
ICAgICAgICBESVJUWV9CSVRfUFJPVk9LSU5HX1ZFUlRFWCwKICAgICAgICAgRElSVFlfQklUX0lO
VkFMSUQsCkBAIC02NTEsNyArNjgzLDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0KTsKIAogICAgIGNvbnN0IElt
YWdlVW5pdCAmZ2V0SW1hZ2VVbml0KHNpemVfdCB1bml0KSBjb25zdCB7IHJldHVybiBtSW1hZ2VV
bml0c1t1bml0XTsgfQotICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJmdldEFj
dGl2ZVRleHR1cmVzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtQWN0aXZlVGV4dHVyZXNDYWNoZTsg
fQorICAgIGNvbnN0IEFjdGl2ZVRleHR1cmVzQ2FjaGUgJmdldEFjdGl2ZVRleHR1cmVzQ2FjaGUo
KSBjb25zdCB7IHJldHVybiBtQWN0aXZlVGV4dHVyZXNDYWNoZTsgfQogICAgIENvbXBvbmVudFR5
cGVNYXNrIGdldEN1cnJlbnRWYWx1ZXNUeXBlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1DdXJyZW50
VmFsdWVzVHlwZU1hc2s7IH0KIAogICAgIC8vICJvbkFjdGl2ZVRleHR1cmVDaGFuZ2UiIGlzIGNh
bGxlZCB3aGVuIGEgdGV4dHVyZSBiaW5kaW5nIGNoYW5nZXMuCkBAIC02ODUsNyArNzE3LDcgQEAg
Y2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIEFOR0xFX0lOTElORSBib29s
IHZhbGlkYXRlU2FtcGxlckZvcm1hdHMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICht
VGV4dHVyZXNJbmNvbXBhdGlibGVXaXRoU2FtcGxlcnMgJiBtUHJvZ3JhbS0+Z2V0QWN0aXZlU2Ft
cGxlcnNNYXNrKCkpLm5vbmUoKTsKKyAgICAgICAgcmV0dXJuIChtVGV4dHVyZXNJbmNvbXBhdGli
bGVXaXRoU2FtcGxlcnMgJiBtRXhlY3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCkpLm5v
bmUoKTsKICAgICB9CiAKICAgICBQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uIGdldFByb3Zva2lu
Z1ZlcnRleCgpIGNvbnN0IHsgcmV0dXJuIG1Qcm92b2tpbmdWZXJ0ZXg7IH0KQEAgLTcxNCw2ICs3
NDYsMjcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CiAgICAgICAg
IHJldHVybiAqbVNoYWRlclByb2dyYW1NYW5hZ2VyOwogICAgIH0KKyAgICBjb25zdCBTeW5jTWFu
YWdlciAmZ2V0U3luY01hbmFnZXJGb3JDYXB0dXJlKCkgY29uc3QgeyByZXR1cm4gKm1TeW5jTWFu
YWdlcjsgfQorICAgIGNvbnN0IFNhbXBsZXJNYW5hZ2VyICZnZXRTYW1wbGVyTWFuYWdlckZvckNh
cHR1cmUoKSBjb25zdCB7IHJldHVybiAqbVNhbXBsZXJNYW5hZ2VyOyB9CisgICAgY29uc3QgU2Ft
cGxlckJpbmRpbmdWZWN0b3IgJmdldFNhbXBsZXJCaW5kaW5nc0ZvckNhcHR1cmUoKSBjb25zdCB7
IHJldHVybiBtU2FtcGxlcnM7IH0KKworICAgIGNvbnN0IEFjdGl2ZVF1ZXJ5TWFwICZnZXRBY3Rp
dmVRdWVyaWVzRm9yQ2FwdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVRdWVyaWVzOyB9CisK
KyAgICBib29sIGhhc0NvbnN0YW50QWxwaGFCbGVuZEZ1bmMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIChtQmxlbmRGdW5jQ29uc3RhbnRBbHBoYURyYXdCdWZmZXJzICYgbUJsZW5kRW5h
YmxlZERyYXdCdWZmZXJzKS5hbnkoKTsKKyAgICB9CisKKyAgICBib29sIGhhc1NpbXVsdGFuZW91
c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gKG1CbGVuZEZ1bmNDb25zdGFudENvbG9yRHJhd0J1ZmZlcnMgJiBtQmxlbmRFbmFibGVk
RHJhd0J1ZmZlcnMpLmFueSgpICYmCisgICAgICAgICAgICAgICBoYXNDb25zdGFudEFscGhhQmxl
bmRGdW5jKCk7CisgICAgfQorCisgICAgYm9vbCBub1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JB
bmRBbHBoYUJsZW5kRnVuYygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbU5vU2ltdWx0
YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jOworICAgIH0KIAogICBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBDb250ZXh0OwpAQCAtNzI2LDYgKzc3OSw5IEBAIGNsYXNzIFN0
YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZSAqdGV4dHVyZSk7CiAgICAgVGV4dHVyZSAqZ2V0VGV4dHVyZUZvckFjdGl2ZVNh
bXBsZXIoVGV4dHVyZVR5cGUgdHlwZSwgc2l6ZV90IGluZGV4KTsKIAorICAgIGJvb2wgaGFzQ29u
c3RhbnRDb2xvcihHTGVudW0gc291cmNlUkdCLCBHTGVudW0gZGVzdFJHQikgY29uc3Q7CisgICAg
Ym9vbCBoYXNDb25zdGFudEFscGhhKEdMZW51bSBzb3VyY2VSR0IsIEdMZW51bSBkZXN0UkdCKSBj
b25zdDsKKwogICAgIC8vIEZ1bmN0aW9ucyB0byBzeW5jaHJvbml6ZSBkaXJ0eSBzdGF0ZXMKICAg
ICBhbmdsZTo6UmVzdWx0IHN5bmNUZXh0dXJlc0luaXQoY29uc3QgQ29udGV4dCAqY29udGV4dCk7
CiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jSW1hZ2VzSW5pdChjb25zdCBDb250ZXh0ICpjb250ZXh0
KTsKQEAgLTc4OCw3ICs4NDQsNiBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIFJlbmRlcmJ1ZmZlck1hbmFnZXIgKm1SZW5kZXJidWZmZXJNYW5hZ2VyOwogICAgIFNhbXBs
ZXJNYW5hZ2VyICptU2FtcGxlck1hbmFnZXI7CiAgICAgU3luY01hbmFnZXIgKm1TeW5jTWFuYWdl
cjsKLSAgICBQYXRoTWFuYWdlciAqbVBhdGhNYW5hZ2VyOwogICAgIEZyYW1lYnVmZmVyTWFuYWdl
ciAqbUZyYW1lYnVmZmVyTWFuYWdlcjsKICAgICBQcm9ncmFtUGlwZWxpbmVNYW5hZ2VyICptUHJv
Z3JhbVBpcGVsaW5lTWFuYWdlcjsKICAgICBNZW1vcnlPYmplY3RNYW5hZ2VyICptTWVtb3J5T2Jq
ZWN0TWFuYWdlcjsKQEAgLTgwNiw4ICs4NjEsOSBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIGJvb2wgbVNjaXNzb3JUZXN0OwogICAgIFJlY3RhbmdsZSBtU2Npc3NvcjsK
IAotICAgIEJsZW5kU3RhdGUgbUJsZW5kOworICAgIEJsZW5kU3RhdGVBcnJheSBtQmxlbmRTdGF0
ZUFycmF5OwogICAgIENvbG9yRiBtQmxlbmRDb2xvcjsKKyAgICBib29sIG1TYW1wbGVBbHBoYVRv
Q292ZXJhZ2U7CiAgICAgYm9vbCBtU2FtcGxlQ292ZXJhZ2U7CiAgICAgR0xmbG9hdCBtU2FtcGxl
Q292ZXJhZ2VWYWx1ZTsKICAgICBib29sIG1TYW1wbGVDb3ZlcmFnZUludmVydDsKQEAgLTgzNiw2
ICs4OTIsNyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEJpbmRpbmdQ
b2ludGVyPFJlbmRlcmJ1ZmZlcj4gbVJlbmRlcmJ1ZmZlcjsKICAgICBQcm9ncmFtICptUHJvZ3Jh
bTsKICAgICBCaW5kaW5nUG9pbnRlcjxQcm9ncmFtUGlwZWxpbmU+IG1Qcm9ncmFtUGlwZWxpbmU7
CisgICAgUHJvZ3JhbUV4ZWN1dGFibGUgKm1FeGVjdXRhYmxlOwogCiAgICAgLy8gR0xfQU5HTEVf
cHJvdm9raW5nX3ZlcnRleAogICAgIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbVByb3Zva2lu
Z1ZlcnRleDsKQEAgLTg2NCw3ICs5MjEsNyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogICAgIC8vIEEgY2FjaGUgb2YgY29tcGxldGUgdGV4dHVyZXMuIG51bGxwdHIgaW5kaWNh
dGVzIHVuYm91bmQgb3IgaW5jb21wbGV0ZS4KICAgICAvLyBEb24ndCB1c2UgQmluZGluZ1BvaW50
ZXIgYmVjYXVzZSB0aGlzIGNhY2hlIGlzIG9ubHkgdmFsaWQgd2l0aGluIGEgZHJhdyBjYWxsLgog
ICAgIC8vIEFsc28gc3RvcmVzIGEgbm90aWZpY2F0aW9uIGNoYW5uZWwgdG8gdGhlIHRleHR1cmUg
aXRzZWxmIHRvIGhhbmRsZSB0ZXh0dXJlIGNoYW5nZSBldmVudHMuCi0gICAgQWN0aXZlVGV4dHVy
ZVBvaW50ZXJBcnJheSBtQWN0aXZlVGV4dHVyZXNDYWNoZTsKKyAgICBBY3RpdmVUZXh0dXJlc0Nh
Y2hlIG1BY3RpdmVUZXh0dXJlc0NhY2hlOwogICAgIHN0ZDo6dmVjdG9yPGFuZ2xlOjpPYnNlcnZl
ckJpbmRpbmc+IG1Db21wbGV0ZVRleHR1cmVCaW5kaW5nczsKIAogICAgIEFjdGl2ZVRleHR1cmVN
YXNrIG1UZXh0dXJlc0luY29tcGF0aWJsZVdpdGhTYW1wbGVyczsKQEAgLTg3NCw3ICs5MzEsNiBA
QCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIC8vIEl0IHdvdWxkIGJlIG5p
Y2UgdG8gbWVyZ2UgdGhlIGltYWdlIGFuZCBvYnNlcnZlciBiaW5kaW5nLiBTYW1lIGZvciB0ZXh0
dXJlcy4KICAgICBzdGQ6OnZlY3RvcjxJbWFnZVVuaXQ+IG1JbWFnZVVuaXRzOwogCi0gICAgdXNp
bmcgQWN0aXZlUXVlcnlNYXAgPSBhbmdsZTo6UGFja2VkRW51bU1hcDxRdWVyeVR5cGUsIEJpbmRp
bmdQb2ludGVyPFF1ZXJ5Pj47CiAgICAgQWN0aXZlUXVlcnlNYXAgbUFjdGl2ZVF1ZXJpZXM7CiAK
ICAgICAvLyBTdG9yZXMgdGhlIGN1cnJlbnRseSBib3VuZCBidWZmZXIgZm9yIGVhY2ggYmluZGlu
ZyBwb2ludC4gSXQgaGFzIGFuIGVudHJ5IGZvciB0aGUgZWxlbWVudApAQCAtOTAxLDEzICs5NTcs
NiBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgR0xlbnVtIG1Db3Zl
cmFnZU1vZHVsYXRpb247CiAKLSAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIEdM
ZmxvYXQgbVBhdGhNYXRyaXhNVlsxNl07Ci0gICAgR0xmbG9hdCBtUGF0aE1hdHJpeFByb2pbMTZd
OwotICAgIEdMZW51bSBtUGF0aFN0ZW5jaWxGdW5jOwotICAgIEdMaW50IG1QYXRoU3RlbmNpbFJl
ZjsKLSAgICBHTHVpbnQgbVBhdGhTdGVuY2lsTWFzazsKLQogICAgIC8vIEdMX0VYVF9zUkdCX3dy
aXRlX2NvbnRyb2wKICAgICBib29sIG1GcmFtZWJ1ZmZlclNSR0I7CiAKQEAgLTkzNSw2ICs5ODQs
MTIgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIC8vIFRoZSBPdmVy
bGF5IG9iamVjdCwgdXNlZCBieSB0aGUgYmFja2VuZCB0byByZW5kZXIgdGhlIG92ZXJsYXkuCiAg
ICAgY29uc3QgT3ZlcmxheVR5cGUgKm1PdmVybGF5OworCisgICAgLy8gT0VTX2RyYXdfYnVmZmVy
c19pbmRleGVkCisgICAgRHJhd0J1ZmZlck1hc2sgbUJsZW5kRW5hYmxlZERyYXdCdWZmZXJzOwor
ICAgIERyYXdCdWZmZXJNYXNrIG1CbGVuZEZ1bmNDb25zdGFudEFscGhhRHJhd0J1ZmZlcnM7Cisg
ICAgRHJhd0J1ZmZlck1hc2sgbUJsZW5kRnVuY0NvbnN0YW50Q29sb3JEcmF3QnVmZmVyczsKKyAg
ICBib29sIG1Ob1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYzsKIH07
CiAKIEFOR0xFX0lOTElORSBhbmdsZTo6UmVzdWx0IFN0YXRlOjpzeW5jRGlydHlPYmplY3RzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVGV4dHVyZS5jcHAKaW5kZXggNjA4N2IwNDQ4NzJlODIzNmNjMWVhMWI1NzVjZGYx
YTA3MGI4MmI4Mi4uYTJhOWYzYzg1MWI4MzE3MjQzNDNhMjhkODRmZWZlMzY1MzdhNzJkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmNwcApA
QCAtOTksNyArOTksOCBAQCBUZXh0dXJlU3RhdGU6OlRleHR1cmVTdGF0ZShUZXh0dXJlVHlwZSB0
eXBlKQogICAgICAgbUJhc2VMZXZlbCgwKSwKICAgICAgIG1NYXhMZXZlbCgxMDAwKSwKICAgICAg
IG1EZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZShHTF9ERVBUSF9DT01QT05FTlQpLAotICAgICAgbUJv
dW5kQXNJbWFnZVRleHR1cmUoZmFsc2UpLAorICAgICAgbVNhbXBsZXJCaW5kaW5nQ291bnQoMCks
CisgICAgICBtSW1hZ2VCaW5kaW5nQ291bnQoMCksCiAgICAgICBtSW1tdXRhYmxlRm9ybWF0KGZh
bHNlKSwKICAgICAgIG1JbW11dGFibGVMZXZlbHMoMCksCiAgICAgICBtVXNhZ2UoR0xfTk9ORSks
CkBAIC0yNzAsNyArMjcxLDcgQEAgU2FtcGxlckZvcm1hdCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVS
ZXF1aXJlZFNhbXBsZXJGb3JtYXQoY29uc3QgU2FtcGxlclN0YXRlICZzYW0KIH0KIAogYm9vbCBU
ZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0IFNhbXBsZXJTdGF0
ZSAmc2FtcGxlclN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0YXRlICZkYXRhKSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0YXRlICZzdGF0ZSkgY29uc3QKIHsKICAgICBp
ZiAobUJhc2VMZXZlbCA+IG1NYXhMZXZlbCkKICAgICB7CkBAIC0yOTcsMTIgKzI5OCwxMyBAQCBi
b29sIFRleHR1cmVTdGF0ZTo6Y29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxl
clN0YXRlICZzYW1wbGVyU3RhdGUsCiAgICAgLy8gZmlsdGVyIHN0YXRlIG9mIG11bHRpc2FtcGxl
IHRleHR1cmUgaXMgaWdub3JlZCgxMS4xLjMuMykuIFNvIGl0IHNob3VsZG4ndCBiZSBqdWRnZWQg
YXMKICAgICAvLyBpbmNvbXBsZXRlIHRleHR1cmUuIFNvLCB3ZSBpZ25vcmUgZmlsdGVyaW5nIGZv
ciBtdWx0aXNhbXBsZSB0ZXh0dXJlIGNvbXBsZXRlbmVzcyBoZXJlLgogICAgIGlmICghSXNNdWx0
aXNhbXBsZWQobVR5cGUpICYmCi0gICAgICAgICFiYXNlSW1hZ2VEZXNjLmZvcm1hdC5pbmZvLT5m
aWx0ZXJTdXBwb3J0KGRhdGEuZ2V0Q2xpZW50VmVyc2lvbigpLCBkYXRhLmdldEV4dGVuc2lvbnMo
KSkgJiYKKyAgICAgICAgIWJhc2VJbWFnZURlc2MuZm9ybWF0LmluZm8tPmZpbHRlclN1cHBvcnQo
c3RhdGUuZ2V0Q2xpZW50VmVyc2lvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRFeHRlbnNpb25zKCkpICYmCiAgICAgICAgICFJ
c1BvaW50U2FtcGxlZChzYW1wbGVyU3RhdGUpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICBib29sIG5wb3RTdXBwb3J0ID0gZGF0YS5nZXRFeHRlbnNpb25zKCkudGV4
dHVyZU5QT1RPRVMgfHwgZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzOworICAgIGJv
b2wgbnBvdFN1cHBvcnQgPSBzdGF0ZS5nZXRFeHRlbnNpb25zKCkudGV4dHVyZU5QT1RPRVMgfHwg
c3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMzsKICAgICBpZiAoIW5wb3RTdXBwb3J0
KQogICAgIHsKICAgICAgICAgaWYgKChzYW1wbGVyU3RhdGUuZ2V0V3JhcFMoKSAhPSBHTF9DTEFN
UF9UT19FREdFICYmCkBAIC0zNDIsMTUgKzM0NCwyMCBAQCBib29sIFRleHR1cmVTdGF0ZTo6Y29t
cHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUs
CiAgICAgLy8gdG8gdGhhdCB1bml0LCB0aGUgYmVoYXZpb3Igb2YgdGhlIGltcGxlbWVudGF0aW9u
IGlzIGFzIGlmIHRoZSB0ZXh0dXJlIHdlcmUgaW5jb21wbGV0ZS4gRm9yCiAgICAgLy8gZXhhbXBs
ZSwgaWYgVEVYVFVSRV9XUkFQX1Mgb3IgVEVYVFVSRV9XUkFQX1QgaXMgc2V0IHRvIGFueXRoaW5n
IGJ1dCBDTEFNUF9UT19FREdFIG9uIHRoZQogICAgIC8vIHNhbXBsZXIgb2JqZWN0IGJvdW5kIHRv
IGEgdGV4dHVyZSB1bml0IGFuZCB0aGUgdGV4dHVyZSBib3VuZCB0byB0aGF0IHVuaXQgaXMgYW4g
ZXh0ZXJuYWwKLSAgICAvLyB0ZXh0dXJlLCB0aGUgdGV4dHVyZSB3aWxsIGJlIGNvbnNpZGVyZWQg
aW5jb21wbGV0ZS4KLSAgICAvLyBTYW1wbGVyIG9iamVjdCBzdGF0ZSB3aGljaCBkb2VzIG5vdCBh
ZmZlY3Qgc2FtcGxpbmcgZm9yIHRoZSB0eXBlIG9mIHRleHR1cmUgYm91bmQgdG8gYQotICAgIC8v
IHRleHR1cmUgdW5pdCwgc3VjaCBhcyBURVhUVVJFX1dSQVBfUiBmb3IgYW4gZXh0ZXJuYWwgdGV4
dHVyZSwgZG9lcyBub3QgYWZmZWN0IGNvbXBsZXRlbmVzcy4KKyAgICAvLyB0ZXh0dXJlIGFuZCBF
WFRfRUdMX2ltYWdlX2V4dGVybmFsX3dyYXBfbW9kZXMgaXMgbm90IGVuYWJsZWQsIHRoZSB0ZXh0
dXJlIHdpbGwgYmUgY29uc2lkZXJlZAorICAgIC8vIGluY29tcGxldGUuCisgICAgLy8gU2FtcGxl
ciBvYmplY3Qgc3RhdGUgd2hpY2ggZG9lcyBub3QgYWZmZWN0IHNhbXBsaW5nIGZvciB0aGUgdHlw
ZSBvZiB0ZXh0dXJlIGJvdW5kCisgICAgLy8gdG8gYSB0ZXh0dXJlIHVuaXQsIHN1Y2ggYXMgVEVY
VFVSRV9XUkFQX1IgZm9yIGFuIGV4dGVybmFsIHRleHR1cmUsIGRvZXMgbm90IGFmZmVjdAorICAg
IC8vIGNvbXBsZXRlbmVzcy4KICAgICBpZiAobVR5cGUgPT0gVGV4dHVyZVR5cGU6OkV4dGVybmFs
KQogICAgIHsKLSAgICAgICAgaWYgKHNhbXBsZXJTdGF0ZS5nZXRXcmFwUygpICE9IEdMX0NMQU1Q
X1RPX0VER0UgfHwKLSAgICAgICAgICAgIHNhbXBsZXJTdGF0ZS5nZXRXcmFwVCgpICE9IEdMX0NM
QU1QX1RPX0VER0UpCisgICAgICAgIGlmICghc3RhdGUuZ2V0RXh0ZW5zaW9ucygpLmVnbEltYWdl
RXh0ZXJuYWxXcmFwTW9kZXNFWFQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmIChzYW1wbGVyU3RhdGUuZ2V0V3JhcFMoKSAhPSBHTF9DTEFNUF9U
T19FREdFIHx8CisgICAgICAgICAgICAgICAgc2FtcGxlclN0YXRlLmdldFdyYXBUKCkgIT0gR0xf
Q0xBTVBfVE9fRURHRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2FtcGxlclN0YXRl
LmdldE1pbkZpbHRlcigpICE9IEdMX0xJTkVBUiAmJiBzYW1wbGVyU3RhdGUuZ2V0TWluRmlsdGVy
KCkgIT0gR0xfTkVBUkVTVCkKQEAgLTM2NSw3ICszNzIsNyBAQCBib29sIFRleHR1cmVTdGF0ZTo6
Y29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3Rh
dGUsCiAgICAgLy8gTU9ERSBpcyBOT05FLCBhbmQgZWl0aGVyIHRoZSBtYWduaWZpY2F0aW9uIGZp
bHRlciBpcyBub3QgTkVBUkVTVCBvciB0aGUgbWluaS0KICAgICAvLyBmaWNhdGlvbiBmaWx0ZXIg
aXMgbmVpdGhlciBORUFSRVNUIG5vciBORUFSRVNUX01JUE1BUF9ORUFSRVNULgogICAgIGlmICgh
SXNNdWx0aXNhbXBsZWQobVR5cGUpICYmIGJhc2VJbWFnZURlc2MuZm9ybWF0LmluZm8tPmRlcHRo
Qml0cyA+IDAgJiYKLSAgICAgICAgZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQor
ICAgICAgICBzdGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQogICAgIHsKICAgICAg
ICAgLy8gTm90ZTogd2UgcmVzdHJpY3QgdGhpcyB2YWxpZGF0aW9uIHRvIHNpemVkIHR5cGVzLiBG
b3IgdGhlIE9FU19kZXB0aF90ZXh0dXJlcwogICAgICAgICAvLyBleHRlbnNpb24sIGR1ZSB0byBz
b21lIHVuZGVyc3BlY2lmaWNhdGlvbiBwcm9ibGVtcywgd2UgbXVzdCBhbGxvdyBsaW5lYXIgZmls
dGVyaW5nCkBAIC05MjksNiArOTM2LDEyIEBAIGNvbnN0IFRleHR1cmVTdGF0ZSAmVGV4dHVyZTo6
Z2V0VGV4dHVyZVN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbVN0YXRlOwogfQogCitjb25zdCBn
bDo6RXh0ZW50cyAmVGV4dHVyZTo6Z2V0RXh0ZW50cyhUZXh0dXJlVGFyZ2V0IHRhcmdldCwgc2l6
ZV90IGxldmVsKSBjb25zdAoreworICAgIEFTU0VSVChUZXh0dXJlVGFyZ2V0VG9UeXBlKHRhcmdl
dCkgPT0gbVN0YXRlLm1UeXBlKTsKKyAgICByZXR1cm4gbVN0YXRlLmdldEltYWdlRGVzYyh0YXJn
ZXQsIGxldmVsKS5zaXplOworfQorCiBzaXplX3QgVGV4dHVyZTo6Z2V0V2lkdGgoVGV4dHVyZVRh
cmdldCB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKIHsKICAgICBBU1NFUlQoVGV4dHVyZVRh
cmdldFRvVHlwZSh0YXJnZXQpID09IG1TdGF0ZS5tVHlwZSk7CkBAIC0xOTM2LDEzICsxOTQ5LDEz
IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZTo6Z2V0VGV4SW1hZ2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7CiB9CiAKLXZv
aWQgVGV4dHVyZTo6b25CaW5kSW1hZ2VUZXh0dXJlKCkKK3ZvaWQgVGV4dHVyZTo6b25CaW5kQXNJ
bWFnZVRleHR1cmUoKQogewotICAgIGlmICghbVN0YXRlLm1Cb3VuZEFzSW1hZ2VUZXh0dXJlKQor
ICAgIGlmICghbVN0YXRlLmlzQm91bmRBc0ltYWdlVGV4dHVyZSgpKQogICAgIHsKICAgICAgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JPVU5EX0FTX0lNQUdFKTsKLSAgICAgICAgbVN0YXRl
Lm1Cb3VuZEFzSW1hZ2VUZXh0dXJlID0gdHJ1ZTsKICAgICB9CisgICAgbVN0YXRlLm1JbWFnZUJp
bmRpbmdDb3VudCsrOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4dHVyZS5oCmluZGV4IGM0NDNmNmEyMGVjZTcyNDMw
N2YwN2FiYmU4ZmRiMWJlNzg3MzdiNzcuLmY1YWViZjE1Y2NiZWExNDQ3YzNkMDg1NmI3MzA5NDc3
ZDBhZTNkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Rl
eHR1cmUuaApAQCAtMTM1LDYgKzEzNSw4IEBAIGNsYXNzIFRleHR1cmVTdGF0ZSBmaW5hbCA6IHBy
aXZhdGUgYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgR0xlbnVtIGdldFVzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbVVzYWdlOyB9CiAgICAgR0xlbnVtIGdldERlcHRoU3RlbmNpbFRleHR1cmVNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbURlcHRoU3RlbmNpbFRleHR1cmVNb2RlOyB9CiAgICAgYm9vbCBpc1N0
ZW5jaWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbURlcHRoU3RlbmNpbFRleHR1cmVNb2RlID09IEdM
X1NURU5DSUxfSU5ERVg7IH0KKyAgICBib29sIGlzQm91bmRBc1NhbXBsZXJUZXh0dXJlKCkgY29u
c3QgeyByZXR1cm4gbVNhbXBsZXJCaW5kaW5nQ291bnQgPiAwOyB9CisgICAgYm9vbCBpc0JvdW5k
QXNJbWFnZVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtSW1hZ2VCaW5kaW5nQ291bnQgPiAwOyB9
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkZXNjIG9mIHRoZSBiYXNlIGxldmVsLiBPbmx5IHZhbGlk
IGZvciBjdWJlLWNvbXBsZXRlL21pcC1jb21wbGV0ZSB0ZXh0dXJlcy4KICAgICBjb25zdCBJbWFn
ZURlc2MgJmdldEJhc2VMZXZlbERlc2MoKSBjb25zdDsKQEAgLTE1Nyw3ICsxNTksNyBAQCBjbGFz
cyBUZXh0dXJlU3RhdGUgZmluYWwgOiBwcml2YXRlIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGZy
aWVuZCBjbGFzcyByeDo6VGV4dHVyZUdMOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpOwogCi0gICAgYm9vbCBj
b21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhjb25zdCBTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0
ZSwgY29uc3QgU3RhdGUgJmRhdGEpIGNvbnN0OworICAgIGJvb2wgY29tcHV0ZVNhbXBsZXJDb21w
bGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIGNvbnN0IFN0YXRlICZz
dGF0ZSkgY29uc3Q7CiAgICAgYm9vbCBjb21wdXRlTWlwbWFwQ29tcGxldGVuZXNzKCkgY29uc3Q7
CiAgICAgYm9vbCBjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3MoVGV4dHVyZVRhcmdldCB0YXJnZXQs
IHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgU2FtcGxlckZvcm1hdCBjb21wdXRlUmVxdWlyZWRT
YW1wbGVyRm9ybWF0KGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKSBjb25zdDsKQEAg
LTE5MCw3ICsxOTIsOCBAQCBjbGFzcyBUZXh0dXJlU3RhdGUgZmluYWwgOiBwcml2YXRlIGFuZ2xl
OjpOb25Db3B5YWJsZQogCiAgICAgR0xlbnVtIG1EZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZTsKIAot
ICAgIGJvb2wgbUJvdW5kQXNJbWFnZVRleHR1cmU7CisgICAgdWludDMyX3QgbVNhbXBsZXJCaW5k
aW5nQ291bnQ7CisgICAgdWludDMyX3QgbUltYWdlQmluZGluZ0NvdW50OwogICAgIGJvb2wgbUlt
bXV0YWJsZUZvcm1hdDsKICAgICBHTHVpbnQgbUltbXV0YWJsZUxldmVsczsKIApAQCAtMjk5LDYg
KzMwMiw3IEBAIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3Q8VGV4
dHVyZUlEPiwKIAogICAgIGNvbnN0IFRleHR1cmVTdGF0ZSAmZ2V0VGV4dHVyZVN0YXRlKCkgY29u
c3Q7CiAKKyAgICBjb25zdCBnbDo6RXh0ZW50cyAmZ2V0RXh0ZW50cyhUZXh0dXJlVGFyZ2V0IHRh
cmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKICAgICBzaXplX3QgZ2V0V2lkdGgoVGV4dHVyZVRh
cmdldCB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEhlaWdodChU
ZXh0dXJlVGFyZ2V0IHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKICAgICBzaXplX3QgZ2V0
RGVwdGgoVGV4dHVyZVRhcmdldCB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CkBAIC00MTMs
NyArNDE3LDM0IEBAIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3Q8
VGV4dHVyZUlEPiwKICAgICBhbmdsZTo6UmVzdWx0IHNldEVHTEltYWdlVGFyZ2V0KENvbnRleHQg
KmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUsIGVnbDo6SW1hZ2UgKmltYWdlVGFyZ2V0KTsKIAog
ICAgIGFuZ2xlOjpSZXN1bHQgZ2VuZXJhdGVNaXBtYXAoQ29udGV4dCAqY29udGV4dCk7Ci0gICAg
dm9pZCBvbkJpbmRJbWFnZVRleHR1cmUoKTsKKworICAgIHZvaWQgb25CaW5kQXNJbWFnZVRleHR1
cmUoKTsKKworICAgIEFOR0xFX0lOTElORSB2b2lkIG9uVW5iaW5kQXNJbWFnZVRleHR1cmUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1TdGF0ZS5pc0JvdW5kQXNJbWFnZVRleHR1cmUoKSk7Cisg
ICAgICAgIG1TdGF0ZS5tSW1hZ2VCaW5kaW5nQ291bnQtLTsKKyAgICB9CisKKyAgICBBTkdMRV9J
TkxJTkUgdm9pZCBvbkJpbmRBc1NhbXBsZXJUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtU3RhdGUubVNhbXBsZXJCaW5kaW5nQ291bnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCkpOworICAgICAgICBtU3RhdGUubVNhbXBsZXJCaW5kaW5nQ291bnQrKzsKKyAg
ICAgICAgaWYgKG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdDb3VudCA9PSAxKQorICAgICAgICB7Cisg
ICAgICAgICAgICBvblN0YXRlQ2hhbmdlKGFuZ2xlOjpTdWJqZWN0TWVzc2FnZTo6QmluZGluZ0No
YW5nZWQpOworICAgICAgICB9CisgICAgfQorCisgICAgQU5HTEVfSU5MSU5FIHZvaWQgb25VbmJp
bmRBc1NhbXBsZXJUZXh0dXJlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtU3RhdGUuaXNCb3Vu
ZEFzU2FtcGxlclRleHR1cmUoKSk7CisgICAgICAgIG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdDb3Vu
dC0tOworICAgICAgICBpZiAobVN0YXRlLm1TYW1wbGVyQmluZGluZ0NvdW50ID09IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2UoYW5nbGU6OlN1YmplY3RNZXNzYWdlOjpC
aW5kaW5nQ2hhbmdlZCk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBlZ2w6OlN1cmZhY2UgKmdl
dEJvdW5kU3VyZmFjZSgpIGNvbnN0OwogICAgIGVnbDo6U3RyZWFtICpnZXRCb3VuZFN0cmVhbSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1RyYW5zZm9ybUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHAKaW5kZXggN2Y1YmEzMzU0NjBkM2VkMDhhYzliMWQ3
NmJlZWFlZDE3MWU5NjY5MS4uY2RkYzI4OWY0MTQ5NmQ4OGQyOWFjMTI3NWYzMmRlZDBjOTdjYjgz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5z
Zm9ybUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwCkBAIC0zMjYsNCArMzI2LDkgQEAgdm9pZCBUcmFuc2Zv
cm1GZWVkYmFjazo6b25CaW5kaW5nQ2hhbmdlZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBib29s
IGJvdW5kKQogICAgICAgICB9CiAgICAgfQogfQorCitjb25zdCBzdGQ6OnZlY3RvcjxPZmZzZXRC
aW5kaW5nUG9pbnRlcjxCdWZmZXI+PiAmVHJhbnNmb3JtRmVlZGJhY2s6OmdldEluZGV4ZWRCdWZm
ZXJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLm1JbmRleGVkQnVmZmVyczsKK30KIH0g
IC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suaAppbmRleCBhNjQ2NDI3NDQ5Yjc2OGYxZGQz
ODI5YWZlYTM3OTgzZTRiODBjMjdmLi45YjZmOGEyNDZkM2ZjNTM4NmYxMTRmNWYxNmEyNWI2ODQ3
MjNhYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VHJhbnNmb3JtRmVlZGJhY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suaApAQCAtOTQsNiArOTQsNyBAQCBjbGFzcyBUcmFuc2Zv
cm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9iamVjdDxUcmFuc2Zvcm1GZWVkYmFj
a0lEPiwgcHVibAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNp
emUpOwogICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEluZGV4ZWRC
dWZmZXIoc2l6ZV90IGluZGV4KSBjb25zdDsKICAgICBzaXplX3QgZ2V0SW5kZXhlZEJ1ZmZlckNv
dW50KCkgY29uc3Q7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8T2Zmc2V0QmluZGluZ1BvaW50ZXI8
QnVmZmVyPj4gJmdldEluZGV4ZWRCdWZmZXJzKCkgY29uc3Q7CiAKICAgICBHTHNpemVpcHRyIGdl
dFZlcnRpY2VzRHJhd24oKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0VmVydGljZXNEcmF3bigp
OyB9CiAgICAgR0xzaXplaXB0ciBnZXRQcmltaXRpdmVzRHJhd24oKSBjb25zdCB7IHJldHVybiBt
U3RhdGUuZ2V0UHJpbWl0aXZlc0RyYXduKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuY3BwCmluZGV4IDRiZDY3MDYz
ODI3MTFiOTI1NTRkNTA0ZDc2YjdlMmEzMGNiODQ0ZTguLjQ5ZmU3YzI1ZWU0MDU1MDkwMDJmM2M1
ODg4YTEwMzdiYWFiN2YxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmNwcApAQCAtMjgsNDcgKzI4LDY1IEBAIGJv
b2wgQ29tcGFyZVBhY2tlZFZhcnlpbmcoY29uc3QgUGFja2VkVmFyeWluZyAmeCwgY29uc3QgUGFj
a2VkVmFyeWluZyAmeSkKICAgICAvLyBub24tYXJyYXkgc2hhZGVyIHZhcmlhYmxlICd2eCcgb3Ig
J3Z5JyBmb3IgYWN0dWFsIGNvbXBhcmlzb24gaW5zdGVhZC4KICAgICBzaDo6U2hhZGVyVmFyaWFi
bGUgdngsIHZ5OwogICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqcHgsICpweTsKKworICAg
IHB4ID0gJngudmFyeWluZygpOworICAgIHB5ID0gJnkudmFyeWluZygpOworCiAgICAgaWYgKHgu
aXNBcnJheUVsZW1lbnQoKSkKICAgICB7Ci0gICAgICAgIHZ4ID0gKngudmFyeWluZzsKKyAgICAg
ICAgdnggPSAqcHg7CiAgICAgICAgIHZ4LmFycmF5U2l6ZXMuY2xlYXIoKTsKICAgICAgICAgcHgg
PSAmdng7CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHB4ID0geC52YXJ5aW5nOwot
ICAgIH0KIAogICAgIGlmICh5LmlzQXJyYXlFbGVtZW50KCkpCiAgICAgewotICAgICAgICB2eSA9
ICp5LnZhcnlpbmc7CisgICAgICAgIHZ5ID0gKnB5OwogICAgICAgICB2eS5hcnJheVNpemVzLmNs
ZWFyKCk7CiAgICAgICAgIHB5ID0gJnZ5OwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBweSA9IHkudmFyeWluZzsKLSAgICB9CiAKICAgICByZXR1cm4gZ2w6OkNvbXBhcmVTaGFkZXJW
YXIoKnB4LCAqcHkpOwogfQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKKy8vIEltcGxl
bWVudGF0aW9uIG9mIFZhcnlpbmdJblNoYWRlclJlZgorVmFyeWluZ0luU2hhZGVyUmVmOjpWYXJ5
aW5nSW5TaGFkZXJSZWYoU2hhZGVyVHlwZSBzdGFnZUluLCBjb25zdCBzaDo6U2hhZGVyVmFyaWFi
bGUgKnZhcnlpbmdJbikKKyAgICA6IHZhcnlpbmcodmFyeWluZ0luKSwgc3RhZ2Uoc3RhZ2VJbikK
K3t9CisKK1ZhcnlpbmdJblNoYWRlclJlZjo6flZhcnlpbmdJblNoYWRlclJlZigpID0gZGVmYXVs
dDsKKworVmFyeWluZ0luU2hhZGVyUmVmOjpWYXJ5aW5nSW5TaGFkZXJSZWYoVmFyeWluZ0luU2hh
ZGVyUmVmICYmb3RoZXIpCit7CisgICAgKnRoaXMgPSBzdGQ6Om1vdmUob3RoZXIpOworfQorCitW
YXJ5aW5nSW5TaGFkZXJSZWYgJlZhcnlpbmdJblNoYWRlclJlZjo6b3BlcmF0b3I9KFZhcnlpbmdJ
blNoYWRlclJlZiAmJm90aGVyKQoreworICAgIHN0ZDo6c3dhcCh2YXJ5aW5nLCBvdGhlci52YXJ5
aW5nKTsKKyAgICBzdGQ6OnN3YXAoc3RhZ2UsIG90aGVyLnN0YWdlKTsKKyAgICBzdGQ6OnN3YXAo
cGFyZW50U3RydWN0TmFtZSwgb3RoZXIucGFyZW50U3RydWN0TmFtZSk7CisgICAgc3RkOjpzd2Fw
KHBhcmVudFN0cnVjdE1hcHBlZE5hbWUsIG90aGVyLnBhcmVudFN0cnVjdE1hcHBlZE5hbWUpOwor
CisgICAgcmV0dXJuICp0aGlzOworfQorCiAvLyBJbXBsZW1lbnRhdGlvbiBvZiBQYWNrZWRWYXJ5
aW5nCi1QYWNrZWRWYXJ5aW5nOjpQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJs
ZSAmdmFyeWluZ0luLAorUGFja2VkVmFyeWluZzo6UGFja2VkVmFyeWluZyhWYXJ5aW5nSW5TaGFk
ZXJSZWYgJiZmcm9udFZhcnlpbmdJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFy
eWluZ0luU2hhZGVyUmVmICYmYmFja1ZhcnlpbmdJbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2g6OkludGVycG9sYXRpb25UeXBlIGludGVycG9sYXRpb25JbikKLSAgICA6IFBhY2tl
ZFZhcnlpbmcodmFyeWluZ0luLCBpbnRlcnBvbGF0aW9uSW4sICIiLCAiIiwgZmFsc2UpCisgICAg
OiBQYWNrZWRWYXJ5aW5nKHN0ZDo6bW92ZShmcm9udFZhcnlpbmdJbiksIHN0ZDo6bW92ZShiYWNr
VmFyeWluZ0luKSwgaW50ZXJwb2xhdGlvbkluLCAwKQoge30KLVBhY2tlZFZhcnlpbmc6OlBhY2tl
ZFZhcnlpbmcoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nSW4sCisKK1BhY2tlZFZh
cnlpbmc6OlBhY2tlZFZhcnlpbmcoVmFyeWluZ0luU2hhZGVyUmVmICYmZnJvbnRWYXJ5aW5nSW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcnlpbmdJblNoYWRlclJlZiAmJmJhY2tW
YXJ5aW5nSW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpJbnRlcnBvbGF0aW9u
VHlwZSBpbnRlcnBvbGF0aW9uSW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZwYXJlbnRTdHJ1Y3ROYW1lSW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwYXJlbnRTdHJ1Y3RNYXBwZWROYW1lSW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaWVsZEluZGV4SW4pCi0gICAgOiB2YXJ5
aW5nKCZ2YXJ5aW5nSW4pLAorICAgIDogZnJvbnRWYXJ5aW5nKHN0ZDo6bW92ZShmcm9udFZhcnlp
bmdJbikpLAorICAgICAgYmFja1Zhcnlpbmcoc3RkOjptb3ZlKGJhY2tWYXJ5aW5nSW4pKSwKICAg
ICAgIGludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvbkluKSwKLSAgICAgIHBhcmVudFN0cnVjdE5h
bWUocGFyZW50U3RydWN0TmFtZUluKSwKLSAgICAgIHBhcmVudFN0cnVjdE1hcHBlZE5hbWUocGFy
ZW50U3RydWN0TWFwcGVkTmFtZUluKSwKICAgICAgIGFycmF5SW5kZXgoR0xfSU5WQUxJRF9JTkRF
WCksCiAgICAgICBmaWVsZEluZGV4KGZpZWxkSW5kZXhJbikKIHt9CkBAIC03NiwxNyArOTQsMTcg
QEAgUGFja2VkVmFyeWluZzo6UGFja2VkVmFyeWluZyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUg
JnZhcnlpbmdJbiwKIFBhY2tlZFZhcnlpbmc6On5QYWNrZWRWYXJ5aW5nKCkgPSBkZWZhdWx0Owog
CiBQYWNrZWRWYXJ5aW5nOjpQYWNrZWRWYXJ5aW5nKFBhY2tlZFZhcnlpbmcgJiZvdGhlcikKLSAg
ICA6IFBhY2tlZFZhcnlpbmcoKm90aGVyLnZhcnlpbmcsIG90aGVyLmludGVycG9sYXRpb24pCisg
ICAgOiBmcm9udFZhcnlpbmcob3RoZXIuZnJvbnRWYXJ5aW5nLnN0YWdlLCBvdGhlci5mcm9udFZh
cnlpbmcudmFyeWluZyksCisgICAgICBiYWNrVmFyeWluZyhvdGhlci5iYWNrVmFyeWluZy5zdGFn
ZSwgb3RoZXIuYmFja1ZhcnlpbmcudmFyeWluZykKIHsKICAgICAqdGhpcyA9IHN0ZDo6bW92ZShv
dGhlcik7CiB9CisKIFBhY2tlZFZhcnlpbmcgJlBhY2tlZFZhcnlpbmc6Om9wZXJhdG9yPShQYWNr
ZWRWYXJ5aW5nICYmb3RoZXIpCiB7Ci0gICAgc3RkOjpzd2FwKHZhcnlpbmcsIG90aGVyLnZhcnlp
bmcpOwotICAgIHN0ZDo6c3dhcChzaGFkZXJTdGFnZXMsIG90aGVyLnNoYWRlclN0YWdlcyk7Cisg
ICAgc3RkOjpzd2FwKGZyb250VmFyeWluZywgb3RoZXIuZnJvbnRWYXJ5aW5nKTsKKyAgICBzdGQ6
OnN3YXAoYmFja1ZhcnlpbmcsIG90aGVyLmJhY2tWYXJ5aW5nKTsKICAgICBzdGQ6OnN3YXAoaW50
ZXJwb2xhdGlvbiwgb3RoZXIuaW50ZXJwb2xhdGlvbik7Ci0gICAgc3RkOjpzd2FwKHBhcmVudFN0
cnVjdE5hbWUsIG90aGVyLnBhcmVudFN0cnVjdE5hbWUpOwotICAgIHN0ZDo6c3dhcChwYXJlbnRT
dHJ1Y3RNYXBwZWROYW1lLCBvdGhlci5wYXJlbnRTdHJ1Y3RNYXBwZWROYW1lKTsKICAgICBzdGQ6
OnN3YXAoYXJyYXlJbmRleCwgb3RoZXIuYXJyYXlJbmRleCk7CiAgICAgc3RkOjpzd2FwKGZpZWxk
SW5kZXgsIG90aGVyLmZpZWxkSW5kZXgpOwogCkBAIC0xMDYsNyArMTI0LDcgQEAgVmFyeWluZ1Bh
Y2tpbmc6On5WYXJ5aW5nUGFja2luZygpID0gZGVmYXVsdDsKIC8vIFJldHVybnMgZmFsc2UgaWYg
dW5zdWNjZXNzZnVsLgogYm9vbCBWYXJ5aW5nUGFja2luZzo6cGFja1ZhcnlpbmcoY29uc3QgUGFj
a2VkVmFyeWluZyAmcGFja2VkVmFyeWluZykKIHsKLSAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFi
bGUgJnZhcnlpbmcgPSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOworICAgIGNvbnN0IHNoOjpTaGFk
ZXJWYXJpYWJsZSAmdmFyeWluZyA9IHBhY2tlZFZhcnlpbmcudmFyeWluZygpOwogCiAgICAgLy8g
Ik5vbiAtIHNxdWFyZSBtYXRyaWNlcyBvZiB0eXBlIG1hdEN4UiBjb25zdW1lIHRoZSBzYW1lIHNw
YWNlIGFzIGEgc3F1YXJlIG1hdHJpeCBvZiB0eXBlIG1hdE4KICAgICAvLyB3aGVyZSBOIGlzIHRo
ZSBncmVhdGVyIG9mIEMgYW5kIFIuIgpAQCAtMjM0LDcgKzI1Miw3IEBAIGJvb2wgVmFyeWluZ1Bh
Y2tpbmc6OnBhY2tWYXJ5aW5nKGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcpCiAg
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW5mby52YXJ5aW5nUm93SW5kZXggPSAwOwogICAg
ICAgICAgICAgICAgICAgICAvLyBEbyBub3QgcmVjb3JkIHJlZ2lzdGVyIGluZm8gZm9yIGJ1aWx0
aW5zLgogICAgICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBDbGVhbiB0aGlzIHVw
LgotICAgICAgICAgICAgICAgICAgICBpZiAoIXBhY2tlZFZhcnlpbmcudmFyeWluZy0+aXNCdWls
dEluKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghdmFyeWluZy5pc0J1aWx0SW4oKSkKICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgbVJlZ2lzdGVyTGlz
dC5wdXNoX2JhY2socmVnaXN0ZXJJbmZvKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjc3
LDcgKzI5NSw3IEBAIHZvaWQgVmFyeWluZ1BhY2tpbmc6Omluc2VydCh1bnNpZ25lZCBpbnQgcmVn
aXN0ZXJSb3csCiAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dzICAgID0gMDsKICAgICB1bnNp
Z25lZCBpbnQgdmFyeWluZ0NvbHVtbnMgPSAwOwogCi0gICAgY29uc3QgYXV0byAmdmFyeWluZyA9
ICpwYWNrZWRWYXJ5aW5nLnZhcnlpbmc7CisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2
YXJ5aW5nID0gcGFja2VkVmFyeWluZy52YXJ5aW5nKCk7CiAgICAgQVNTRVJUKCF2YXJ5aW5nLmlz
U3RydWN0KCkpOwogICAgIEdMZW51bSB0cmFuc3Bvc2VkVHlwZSA9IGdsOjpUcmFuc3Bvc2VNYXRy
aXhUeXBlKHZhcnlpbmcudHlwZSk7CiAgICAgdmFyeWluZ1Jvd3MgICAgICAgICAgID0gZ2w6OlZh
cmlhYmxlUm93Q291bnQodHJhbnNwb3NlZFR5cGUpOwpAQCAtMzAzLDcgKzMyMSw3IEBAIHZvaWQg
VmFyeWluZ1BhY2tpbmc6Omluc2VydCh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJSb3csCiAgICAgICAg
ICAgICByZWdpc3RlckluZm8udmFyeWluZ0FycmF5SW5kZXggPSBhcnJheUVsZW1lbnQ7CiAgICAg
ICAgICAgICAvLyBEbyBub3QgcmVjb3JkIHJlZ2lzdGVyIGluZm8gZm9yIGJ1aWx0aW5zLgogICAg
ICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogQ2xlYW4gdGhpcyB1cC4KLSAgICAgICAgICAgIGlm
ICghcGFja2VkVmFyeWluZy52YXJ5aW5nLT5pc0J1aWx0SW4oKSkKKyAgICAgICAgICAgIGlmICgh
dmFyeWluZy5pc0J1aWx0SW4oKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtUmVn
aXN0ZXJMaXN0LnB1c2hfYmFjayhyZWdpc3RlckluZm8pOwogICAgICAgICAgICAgfQpAQCAtMzE2
LDI2ICszMzQsMTE1IEBAIHZvaWQgVmFyeWluZ1BhY2tpbmc6Omluc2VydCh1bnNpZ25lZCBpbnQg
cmVnaXN0ZXJSb3csCiAgICAgfQogfQogCit2b2lkIFZhcnlpbmdQYWNraW5nOjpwYWNrVXNlclZh
cnlpbmcoY29uc3QgUHJvZ3JhbVZhcnlpbmdSZWYgJnJlZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYXJ5aW5nVW5pcXVlRnVsbE5hbWVzICp1bmlxdWVGdWxsTmFtZXMp
Cit7CisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICppbnB1dCAgPSByZWYuZnJvbnRTaGFk
ZXI7CisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICpvdXRwdXQgPSByZWYuYmFja1NoYWRl
cjsKKworICAgIC8vIFdpbGwgZ2V0IHRoZSB2ZXJ0ZXggc2hhZGVyIGludGVycG9sYXRpb24gYnkg
ZGVmYXVsdC4KKyAgICBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbiA9IGlucHV0
ID8gaW5wdXQtPmludGVycG9sYXRpb24gOiBvdXRwdXQtPmludGVycG9sYXRpb247CisKKyAgICBW
YXJ5aW5nSW5TaGFkZXJSZWYgZnJvbnRWYXJ5aW5nKHJlZi5mcm9udFNoYWRlclN0YWdlLCBpbnB1
dCk7CisgICAgVmFyeWluZ0luU2hhZGVyUmVmIGJhY2tWYXJ5aW5nKHJlZi5iYWNrU2hhZGVyU3Rh
Z2UsIG91dHB1dCk7CisKKyAgICBtUGFja2VkVmFyeWluZ3MuZW1wbGFjZV9iYWNrKHN0ZDo6bW92
ZShmcm9udFZhcnlpbmcpLCBzdGQ6Om1vdmUoYmFja1ZhcnlpbmcpLCBpbnRlcnBvbGF0aW9uKTsK
KyAgICBpZiAoaW5wdXQpCisgICAgeworICAgICAgICAoKnVuaXF1ZUZ1bGxOYW1lcylbcmVmLmZy
b250U2hhZGVyU3RhZ2VdLmluc2VydCgKKyAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNr
KCkuZnVsbE5hbWUocmVmLmZyb250U2hhZGVyU3RhZ2UpKTsKKyAgICB9CisgICAgaWYgKG91dHB1
dCkKKyAgICB7CisgICAgICAgICgqdW5pcXVlRnVsbE5hbWVzKVtyZWYuYmFja1NoYWRlclN0YWdl
XS5pbnNlcnQoCisgICAgICAgICAgICBtUGFja2VkVmFyeWluZ3MuYmFjaygpLmZ1bGxOYW1lKHJl
Zi5iYWNrU2hhZGVyU3RhZ2UpKTsKKyAgICB9Cit9CisKK3ZvaWQgVmFyeWluZ1BhY2tpbmc6OnBh
Y2tVc2VyVmFyeWluZ0ZpZWxkKGNvbnN0IFByb2dyYW1WYXJ5aW5nUmVmICZyZWYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmllbGRJbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcnlpbmdVbmlxdWVGdWxs
TmFtZXMgKnVuaXF1ZUZ1bGxOYW1lcykKK3sKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUg
KmlucHV0ICA9IHJlZi5mcm9udFNoYWRlcjsKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUg
Km91dHB1dCA9IHJlZi5iYWNrU2hhZGVyOworCisgICAgLy8gV2lsbCBnZXQgdGhlIHZlcnRleCBz
aGFkZXIgaW50ZXJwb2xhdGlvbiBieSBkZWZhdWx0LgorICAgIHNoOjpJbnRlcnBvbGF0aW9uVHlw
ZSBpbnRlcnBvbGF0aW9uID0gaW5wdXQgPyBpbnB1dC0+aW50ZXJwb2xhdGlvbiA6IG91dHB1dC0+
aW50ZXJwb2xhdGlvbjsKKworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqZnJvbnRGaWVs
ZCA9IGlucHV0ID8gJmlucHV0LT5maWVsZHNbZmllbGRJbmRleF0gOiBudWxscHRyOworICAgIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqYmFja0ZpZWxkICA9IG91dHB1dCA/ICZvdXRwdXQtPmZp
ZWxkc1tmaWVsZEluZGV4XSA6IG51bGxwdHI7CisKKyAgICBWYXJ5aW5nSW5TaGFkZXJSZWYgZnJv
bnRWYXJ5aW5nKHJlZi5mcm9udFNoYWRlclN0YWdlLCBmcm9udEZpZWxkKTsKKyAgICBWYXJ5aW5n
SW5TaGFkZXJSZWYgYmFja1ZhcnlpbmcocmVmLmJhY2tTaGFkZXJTdGFnZSwgYmFja0ZpZWxkKTsK
KworICAgIGlmIChpbnB1dCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghZnJvbnRGaWVsZC0+aXNT
dHJ1Y3QoKSAmJiAhZnJvbnRGaWVsZC0+aXNBcnJheSgpKTsKKyAgICAgICAgZnJvbnRWYXJ5aW5n
LnBhcmVudFN0cnVjdE5hbWUgICAgICAgPSBpbnB1dC0+bmFtZTsKKyAgICAgICAgZnJvbnRWYXJ5
aW5nLnBhcmVudFN0cnVjdE1hcHBlZE5hbWUgPSBpbnB1dC0+bWFwcGVkTmFtZTsKKyAgICB9Cisg
ICAgaWYgKG91dHB1dCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYmFja0ZpZWxkLT5pc1N0cnVj
dCgpICYmICFiYWNrRmllbGQtPmlzQXJyYXkoKSk7CisgICAgICAgIGJhY2tWYXJ5aW5nLnBhcmVu
dFN0cnVjdE5hbWUgICAgICAgPSBvdXRwdXQtPm5hbWU7CisgICAgICAgIGJhY2tWYXJ5aW5nLnBh
cmVudFN0cnVjdE1hcHBlZE5hbWUgPSBvdXRwdXQtPm1hcHBlZE5hbWU7CisgICAgfQorCisgICAg
bVBhY2tlZFZhcnlpbmdzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZnJvbnRWYXJ5aW5nKSwgc3Rk
Ojptb3ZlKGJhY2tWYXJ5aW5nKSwgaW50ZXJwb2xhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpZWxkSW5kZXgpOworCisgICAgaWYgKGlucHV0KQorICAgIHsKKyAgICAg
ICAgKCp1bmlxdWVGdWxsTmFtZXMpW3JlZi5mcm9udFNoYWRlclN0YWdlXS5pbnNlcnQoCisgICAg
ICAgICAgICBtUGFja2VkVmFyeWluZ3MuYmFjaygpLmZ1bGxOYW1lKHJlZi5mcm9udFNoYWRlclN0
YWdlKSk7CisgICAgfQorICAgIGlmIChvdXRwdXQpCisgICAgeworICAgICAgICAoKnVuaXF1ZUZ1
bGxOYW1lcylbcmVmLmJhY2tTaGFkZXJTdGFnZV0uaW5zZXJ0KAorICAgICAgICAgICAgbVBhY2tl
ZFZhcnlpbmdzLmJhY2soKS5mdWxsTmFtZShyZWYuYmFja1NoYWRlclN0YWdlKSk7CisgICAgfQor
fQorCit2b2lkIFZhcnlpbmdQYWNraW5nOjpwYWNrVXNlclZhcnlpbmdURihjb25zdCBQcm9ncmFt
VmFyeWluZ1JlZiAmcmVmLCBzaXplX3Qgc3Vic2NyaXB0KQoreworICAgIGNvbnN0IHNoOjpTaGFk
ZXJWYXJpYWJsZSAqaW5wdXQgPSByZWYuZnJvbnRTaGFkZXI7CisKKyAgICBWYXJ5aW5nSW5TaGFk
ZXJSZWYgZnJvbnRWYXJ5aW5nKHJlZi5mcm9udFNoYWRlclN0YWdlLCBpbnB1dCk7CisgICAgVmFy
eWluZ0luU2hhZGVyUmVmIGJhY2tWYXJ5aW5nKHJlZi5iYWNrU2hhZGVyU3RhZ2UsIG51bGxwdHIp
OworCisgICAgbVBhY2tlZFZhcnlpbmdzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZnJvbnRWYXJ5
aW5nKSwgc3RkOjptb3ZlKGJhY2tWYXJ5aW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlucHV0LT5pbnRlcnBvbGF0aW9uKTsKKyAgICBtUGFja2VkVmFyeWluZ3MuYmFjaygp
LmFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHN1YnNjcmlwdCk7Cit9CisKK3ZvaWQg
VmFyeWluZ1BhY2tpbmc6OnBhY2tVc2VyVmFyeWluZ0ZpZWxkVEYoY29uc3QgUHJvZ3JhbVZhcnlp
bmdSZWYgJnJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpZWxkSW5kZXgpCit7CisgICAgY29uc3Qgc2g6
OlNoYWRlclZhcmlhYmxlICppbnB1dCA9IHJlZi5mcm9udFNoYWRlcjsKKworICAgIFZhcnlpbmdJ
blNoYWRlclJlZiBmcm9udFZhcnlpbmcocmVmLmZyb250U2hhZGVyU3RhZ2UsICZmaWVsZCk7Cisg
ICAgVmFyeWluZ0luU2hhZGVyUmVmIGJhY2tWYXJ5aW5nKHJlZi5iYWNrU2hhZGVyU3RhZ2UsIG51
bGxwdHIpOworCisgICAgZnJvbnRWYXJ5aW5nLnBhcmVudFN0cnVjdE5hbWUgICAgICAgPSBpbnB1
dC0+bmFtZTsKKyAgICBmcm9udFZhcnlpbmcucGFyZW50U3RydWN0TWFwcGVkTmFtZSA9IGlucHV0
LT5tYXBwZWROYW1lOworCisgICAgbVBhY2tlZFZhcnlpbmdzLmVtcGxhY2VfYmFjayhzdGQ6Om1v
dmUoZnJvbnRWYXJ5aW5nKSwgc3RkOjptb3ZlKGJhY2tWYXJ5aW5nKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucHV0LT5pbnRlcnBvbGF0aW9uLCBmaWVsZEluZGV4KTsKK30K
KwogYm9vbCBWYXJ5aW5nUGFja2luZzo6Y29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3MoZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgJm1lcmdlZFZhcnlpbmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0ZlZhcnlpbmdzKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0
ZlZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYm9vbCBpc1NlcGFyYWJsZVByb2dyYW0pCiB7Ci0gICAgc3RkOjpzZXQ8c3RkOjpz
dHJpbmc+IHVuaXF1ZUZ1bGxOYW1lczsKKyAgICBWYXJ5aW5nVW5pcXVlRnVsbE5hbWVzIHVuaXF1
ZUZ1bGxOYW1lczsKICAgICBtUGFja2VkVmFyeWluZ3MuY2xlYXIoKTsKLSAgICBtSW5wdXRWYXJ5
aW5ncy5jbGVhcigpOwogCi0gICAgZm9yIChjb25zdCBhdXRvICZyZWYgOiBtZXJnZWRWYXJ5aW5n
cykKKyAgICBmb3IgKGNvbnN0IFByb2dyYW1WYXJ5aW5nUmVmICZyZWYgOiBtZXJnZWRWYXJ5aW5n
cykKICAgICB7Ci0gICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqaW5wdXQgID0gcmVm
LnNlY29uZC5mcm9udFNoYWRlcjsKLSAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICpv
dXRwdXQgPSByZWYuc2Vjb25kLmJhY2tTaGFkZXI7Ci0gICAgICAgIGlmIChpbnB1dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbUlucHV0VmFyeWluZ3MuZW1wbGFjZV9iYWNrKCppbnB1dCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBTaGFkZXJCaXRTZXQgc2hhZGVyU3RhZ2VzOwotICAgICAgICBz
aGFkZXJTdGFnZXMuc2V0KHJlZi5zZWNvbmQuZnJvbnRTaGFkZXJTdGFnZSk7Ci0gICAgICAgIHNo
YWRlclN0YWdlcy5zZXQocmVmLnNlY29uZC5iYWNrU2hhZGVyU3RhZ2UpOworICAgICAgICBjb25z
dCBzaDo6U2hhZGVyVmFyaWFibGUgKmlucHV0ICA9IHJlZi5mcm9udFNoYWRlcjsKKyAgICAgICAg
Y29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICpvdXRwdXQgPSByZWYuYmFja1NoYWRlcjsKIAogICAg
ICAgICAvLyBPbmx5IHBhY2sgc3RhdGljYWxseSB1c2VkIHZhcnlpbmdzIHRoYXQgaGF2ZSBhIG1h
dGNoZWQgaW5wdXQgb3Igb3V0cHV0LCBwbHVzIHNwZWNpYWwKICAgICAgICAgLy8gYnVpbHRpbnMu
IE5vdGUgdGhhdCB3ZSBwYWNrIGFsbCBzdGF0aWNhbGx5IHVzZWQgdXNlci1kZWZpbmVkIHZhcnlp
bmdzIGV2ZW4gaWYgdGhleSBhcmUKQEAgLTM0NCw3ICs0NTEsOCBAQCBib29sIFZhcnlpbmdQYWNr
aW5nOjpjb2xsZWN0QW5kUGFja1VzZXJWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAg
ICAgICAgLy8gb3B0aW1pemF0aW9ucyIgbWF5IGJlIHVzZWQgdG8gbWFrZSB2ZXJ0ZXggc2hhZGVy
IG91dHB1dHMgZml0LgogICAgICAgICBpZiAoKGlucHV0ICYmIG91dHB1dCAmJiBvdXRwdXQtPnN0
YXRpY1VzZSkgfHwKICAgICAgICAgICAgIChpbnB1dCAmJiBpbnB1dC0+aXNCdWlsdEluKCkgJiYg
aW5wdXQtPmFjdGl2ZSkgfHwKLSAgICAgICAgICAgIChvdXRwdXQgJiYgb3V0cHV0LT5pc0J1aWx0
SW4oKSAmJiBvdXRwdXQtPmFjdGl2ZSkpCisgICAgICAgICAgICAob3V0cHV0ICYmIG91dHB1dC0+
aXNCdWlsdEluKCkgJiYgb3V0cHV0LT5hY3RpdmUpIHx8CisgICAgICAgICAgICAoaXNTZXBhcmFi
bGVQcm9ncmFtICYmICgoaW5wdXQgJiYgaW5wdXQtPmFjdGl2ZSkgfHwgKG91dHB1dCAmJiBvdXRw
dXQtPmFjdGl2ZSkpKSkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZh
cmlhYmxlICp2YXJ5aW5nID0gb3V0cHV0ID8gb3V0cHV0IDogaW5wdXQ7CiAKQEAgLTM1Myw0MCAr
NDYxLDM1IEBAIGJvb2wgVmFyeWluZ1BhY2tpbmc6OmNvbGxlY3RBbmRQYWNrVXNlclZhcnlpbmdz
KGdsOjpJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICEodmFyeWluZy0+bmFtZSA9
PSAiZ2xfUG9pbnRTaXplIiAmJgogICAgICAgICAgICAgICAgICAgbVBhY2tNb2RlID09IFBhY2tN
b2RlOjpBTkdMRV9OT05fQ09ORk9STUFOVF9EM0Q5KSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAvLyBXaWxsIGdldCB0aGUgdmVydGV4IHNoYWRlciBpbnRlcnBvbGF0aW9uIGJ5IGRl
ZmF1bHQuCi0gICAgICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gcmVmLnNlY29uZC5n
ZXQoKS0+aW50ZXJwb2xhdGlvbjsKLQotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBs
b3NlIHRoZSB2ZXJ0ZXggc2hhZGVyIHN0YXRpYyB1c2UgaW5mb3JtYXRpb24gaGVyZS4gVGhlIGRh
dGEgZm9yIHRoZQotICAgICAgICAgICAgICAgIC8vIHZhcmlhYmxlIGlzIHRha2VuIGZyb20gdGhl
IGZyYWdtZW50IHNoYWRlci4KICAgICAgICAgICAgICAgICBpZiAodmFyeWluZy0+aXNTdHJ1Y3Qo
KSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghKHZhcnlp
bmctPmlzQXJyYXkoKSAmJiB2YXJ5aW5nID09IGlucHV0KSk7CisKICAgICAgICAgICAgICAgICAg
ICAgZm9yIChHTHVpbnQgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXggPCB2YXJ5aW5nLT5maWVs
ZHMuc2l6ZSgpOyArK2ZpZWxkSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZmllbGQgPSB2YXJ5aW5n
LT5maWVsZHNbZmllbGRJbmRleF07Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
ZmllbGQuaXNTdHJ1Y3QoKSAmJiAhZmllbGQuaXNBcnJheSgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5lbXBsYWNlX2JhY2soZmllbGQsIGludGVycG9sYXRpb24s
IHZhcnlpbmctPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcnlpbmctPm1hcHBlZE5hbWUsIGZpZWxkSW5kZXgpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbVBhY2tlZFZhcnlpbmdzLmJhY2soKS5zaGFkZXJTdGFnZXMgPSBzaGFk
ZXJTdGFnZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWVGdWxsTmFtZXMuaW5zZXJ0
KG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCkuZnVsbE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwYWNrVXNlclZhcnlpbmdGaWVsZChyZWYsIGZpZWxkSW5kZXgsICZ1bmlxdWVGdWxsTmFt
ZXMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1
dCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVl
RnVsbE5hbWVzW3JlZi5mcm9udFNoYWRlclN0YWdlXS5pbnNlcnQoaW5wdXQtPm5hbWUpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXQpCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1l
c1tyZWYuYmFja1NoYWRlclN0YWdlXS5pbnNlcnQob3V0cHV0LT5uYW1lKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB1bmlxdWVGdWxsTmFtZXMuaW5zZXJ0KHZh
cnlpbmctPm5hbWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtUGFja2VkVmFyeWluZ3MuZW1w
bGFjZV9iYWNrKCp2YXJ5aW5nLCBpbnRlcnBvbGF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
bVBhY2tlZFZhcnlpbmdzLmJhY2soKS5zaGFkZXJTdGFnZXMgPSBzaGFkZXJTdGFnZXM7Ci0gICAg
ICAgICAgICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1lcy5pbnNlcnQobVBhY2tlZFZhcnlpbmdzLmJh
Y2soKS5mdWxsTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFja1VzZXJWYXJ5aW5nKHJl
ZiwgJnVuaXF1ZUZ1bGxOYW1lcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhl
IHZhcnlpbmcgaXMgbm90IHVzZWQgaW4gdGhlIGlucHV0LCB3ZSBrbm93IGl0IGlzIGluYWN0aXZl
LgotICAgICAgICBpZiAoIWlucHV0KQorICAgICAgICBpZiAoIWlucHV0ICYmICFpc1NlcGFyYWJs
ZVByb2dyYW0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1JbmFjdGl2ZVZhcnlpbmdNYXBwZWRO
YW1lcy5wdXNoX2JhY2sob3V0cHV0LT5tYXBwZWROYW1lKTsKKyAgICAgICAgICAgIG1JbmFjdGl2
ZVZhcnlpbmdNYXBwZWROYW1lc1tyZWYuYmFja1NoYWRlclN0YWdlXS5wdXNoX2JhY2sob3V0cHV0
LT5tYXBwZWROYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQw
MSw3ICs1MDQsOCBAQCBib29sIFZhcnlpbmdQYWNraW5nOjpjb2xsZWN0QW5kUGFja1VzZXJWYXJ5
aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICBzdWJzY3JpcHQgPSBz
dWJzY3JpcHRzLmJhY2soKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEFscmVhZHkg
cGFja2VkIGZvciBmcmFnbWVudCBzaGFkZXIuCi0gICAgICAgICAgICBpZiAodW5pcXVlRnVsbE5h
bWVzLmNvdW50KHRmVmFyeWluZykgPiAwIHx8IHVuaXF1ZUZ1bGxOYW1lcy5jb3VudChiYXNlTmFt
ZSkgPiAwKQorICAgICAgICAgICAgaWYgKHVuaXF1ZUZ1bGxOYW1lc1tyZWYuZnJvbnRTaGFkZXJT
dGFnZV0uY291bnQodGZWYXJ5aW5nKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB1bmlxdWVGdWxs
TmFtZXNbcmVmLmZyb250U2hhZGVyU3RhZ2VdLmNvdW50KGJhc2VOYW1lKSA+IDApCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC00MTMs
MTMgKzUxNywxMSBAQCBib29sIFZhcnlpbmdQYWNraW5nOjpjb2xsZWN0QW5kUGFja1VzZXJWYXJ5
aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICBpZiAoZmllbGQgIT0g
bnVsbHB0cikKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
ZmllbGQtPmlzU3RydWN0KCkgJiYgIWZpZWxkLT5pc0FycmF5KCkpOwotICAgICAgICAgICAgICAg
ICAgICBtUGFja2VkVmFyeWluZ3MuZW1wbGFjZV9iYWNrKCpmaWVsZCwgaW5wdXQtPmludGVycG9s
YXRpb24sIGlucHV0LT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0LT5tYXBwZWROYW1lLCBmaWVsZEluZGV4KTsKLSAgICAgICAgICAg
ICAgICAgICAgbVBhY2tlZFZhcnlpbmdzLmJhY2soKS5zaGFkZXJTdGFnZXMuc2V0KFNoYWRlclR5
cGU6OlZlcnRleCk7Ci0gICAgICAgICAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCku
YXJyYXlJbmRleCA9IEdMX0lOVkFMSURfSU5ERVg7Ci0gICAgICAgICAgICAgICAgICAgIHVuaXF1
ZUZ1bGxOYW1lcy5pbnNlcnQodGZWYXJ5aW5nKTsKKworICAgICAgICAgICAgICAgICAgICBwYWNr
VXNlclZhcnlpbmdGaWVsZFRGKHJlZiwgKmZpZWxkLCBmaWVsZEluZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5pcXVlRnVsbE5hbWVzW3JlZi5mcm9udFNoYWRlclN0YWdlXS5pbnNlcnQodGZW
YXJ5aW5nKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdW5pcXVlRnVsbE5h
bWVzLmluc2VydChpbnB1dC0+bmFtZSk7CisgICAgICAgICAgICAgICAgdW5pcXVlRnVsbE5hbWVz
W3JlZi5mcm9udFNoYWRlclN0YWdlXS5pbnNlcnQoaW5wdXQtPm5hbWUpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgLy8gQXJyYXkgYXMgYSB3aG9sZSBhbmQgYXJyYXkgZWxlbWVudCBjb25m
bGljdCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgaW4KICAgICAgICAgICAgIC8vIGxpbmtWYWxp
ZGF0ZVRyYW5zZm9ybUZlZWRiYWNrLgpAQCAtNDI4LDEwICs1MzAsOCBAQCBib29sIFZhcnlpbmdQ
YWNraW5nOjpjb2xsZWN0QW5kUGFja1VzZXJWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywK
ICAgICAgICAgICAgICAgICAvLyBvbmx5IHBhY2sgdmFyeWluZ3MgdGhhdCBhcmUgbm90IGJ1aWx0
aW5zLgogICAgICAgICAgICAgICAgIGlmICh0ZlZhcnlpbmcuY29tcGFyZSgwLCAzLCAiZ2xfIikg
IT0gMCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1QYWNrZWRWYXJ5
aW5ncy5lbXBsYWNlX2JhY2soKmlucHV0LCBpbnB1dC0+aW50ZXJwb2xhdGlvbik7Ci0gICAgICAg
ICAgICAgICAgICAgIG1QYWNrZWRWYXJ5aW5ncy5iYWNrKCkuc2hhZGVyU3RhZ2VzLnNldChTaGFk
ZXJUeXBlOjpWZXJ0ZXgpOwotICAgICAgICAgICAgICAgICAgICBtUGFja2VkVmFyeWluZ3MuYmFj
aygpLmFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHN1YnNjcmlwdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1lcy5pbnNlcnQodGZWYXJ5aW5nKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGFja1VzZXJWYXJ5aW5nVEYocmVmLCBzdWJzY3JpcHQpOworICAgICAgICAg
ICAgICAgICAgICB1bmlxdWVGdWxsTmFtZXNbcmVmLmZyb250U2hhZGVyU3RhZ2VdLmluc2VydCh0
ZlZhcnlpbmcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBDb250aW51
ZSB0byBtYXRjaCBuZXh0IGFycmF5IGVsZW1lbnQgZm9yICdpbnB1dCcgaWYgdGhlIGN1cnJlbnQg
bWF0Y2ggaXMgYXJyYXkKICAgICAgICAgICAgICAgICAvLyBlbGVtZW50LgpAQCAtNDQyLDkgKzU0
MiwxMyBAQCBib29sIFZhcnlpbmdQYWNraW5nOjpjb2xsZWN0QW5kUGFja1VzZXJWYXJ5aW5ncyhn
bDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IGlmICh1bmlxdWVGdWxsTmFtZXMuY291bnQocmVmLmZpcnN0KSA9PSAwKQorICAgICAgICBpZiAo
aW5wdXQgJiYgdW5pcXVlRnVsbE5hbWVzW3JlZi5mcm9udFNoYWRlclN0YWdlXS5jb3VudChpbnB1
dC0+bmFtZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbUluYWN0aXZlVmFyeWluZ01h
cHBlZE5hbWVzW3JlZi5mcm9udFNoYWRlclN0YWdlXS5wdXNoX2JhY2soaW5wdXQtPm1hcHBlZE5h
bWUpOworICAgICAgICB9CisgICAgICAgIGlmIChvdXRwdXQgJiYgdW5pcXVlRnVsbE5hbWVzW3Jl
Zi5iYWNrU2hhZGVyU3RhZ2VdLmNvdW50KG91dHB1dC0+bmFtZSkgPT0gMCkKICAgICAgICAgewot
ICAgICAgICAgICAgbUluYWN0aXZlVmFyeWluZ01hcHBlZE5hbWVzLnB1c2hfYmFjayhpbnB1dC0+
bWFwcGVkTmFtZSk7CisgICAgICAgICAgICBtSW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXNbcmVm
LmJhY2tTaGFkZXJTdGFnZV0ucHVzaF9iYWNrKG91dHB1dC0+bWFwcGVkTmFtZSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTQ2Myw3ICs1NjcsMTAgQEAgYm9vbCBWYXJ5aW5nUGFja2luZzo6cGFj
a1VzZXJWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICB7CiAgICAgICAgIGlmICgh
cGFja1ZhcnlpbmcocGFja2VkVmFyeWluZykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluZm9M
b2cgPDwgIkNvdWxkIG5vdCBwYWNrIHZhcnlpbmcgIiA8PCBwYWNrZWRWYXJ5aW5nLmZ1bGxOYW1l
KCk7CisgICAgICAgICAgICBTaGFkZXJUeXBlIGVpdGhlclN0YWdlID0gcGFja2VkVmFyeWluZy5m
cm9udFZhcnlpbmcudmFyeWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA/IHBhY2tlZFZhcnlpbmcuZnJvbnRWYXJ5aW5nLnN0YWdlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogcGFja2VkVmFyeWluZy5iYWNrVmFyeWluZy5zdGFn
ZTsKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBwYWNrIHZhcnlpbmcgIiA8PCBw
YWNrZWRWYXJ5aW5nLmZ1bGxOYW1lKGVpdGhlclN0YWdlKTsKIAogICAgICAgICAgICAgLy8gVE9E
TyhqbWFkaWxsKTogSW1wbGVtZW50IG1vcmUgc29waGlzdGljYXRlZCBjb21wb25lbnQgcGFja2lu
ZyBpbiBEM0Q5LgogICAgICAgICAgICAgaWYgKG1QYWNrTW9kZSA9PSBQYWNrTW9kZTo6QU5HTEVf
Tk9OX0NPTkZPUk1BTlRfRDNEOSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmgKaW5kZXggMDhlNmRkYTI1MWMwYmU4NjYzNWMy
MjFmNGM1MDY3NjRiOTQxNjAzMS4uYzQ4NzRkOWI1ZDk0NjJkMTQyODJkZWU5MjJlOWZjOTQxZTVh
NTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Zh
cnlpbmdQYWNraW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1ZhcnlpbmdQYWNraW5nLmgKQEAgLTI1LDM0ICsyNSw4MSBAQCBuYW1lc3BhY2UgZ2wKIGNsYXNz
IEluZm9Mb2c7CiBzdHJ1Y3QgUHJvZ3JhbVZhcnlpbmdSZWY7CiAKLXVzaW5nIFByb2dyYW1NZXJn
ZWRWYXJ5aW5ncyA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBQcm9ncmFtVmFyeWluZ1JlZj47Cit1
c2luZyBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgPSBzdGQ6OnZlY3RvcjxQcm9ncmFtVmFyeWluZ1Jl
Zj47CisKKy8vIEEgdmFyeWluZyBjYW4gaGF2ZSBkaWZmZXJlbnQgbmFtZXMgYmV0d2VlbiBzdGFn
ZXMgaWYgbWF0Y2hlZCBieSB0aGUgbG9jYXRpb24gbGF5b3V0IHF1YWxpZmllci4KKy8vIEFkZGl0
aW9uYWxseSwgc2FtZSBuYW1lIHZhcnlpbmdzIGNvdWxkIHN0aWxsIGJlIG9mIHR3byBpZGVudGlj
YWwgc3RydWN0IHR5cGVzIHdpdGggZGlmZmVyZW50CisvLyBuYW1lcy4gIFRoaXMgc3RydWN0IGNv
bnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSB2YXJ5aW5nIGluIG9uZSBvZiB0aGUgdHdvIHN0YWdl
cy4gIFBhY2tlZFZhcnlpbmcKKy8vIHdpbGwgdGh1cyBjb250YWluIHR3byBjb3BpZXMgb2YgdGhp
cyBhbG9uZyB3aXRoIGNvbW1vbiBpbmZvcm1hdGlvbiwgc3VjaCBhcyBpbnRlcnBvbGF0aW9uIG9y
CisvLyBmaWVsZCBpbmRleC4KK3N0cnVjdCBWYXJ5aW5nSW5TaGFkZXJSZWYgOiBhbmdsZTo6Tm9u
Q29weWFibGUKK3sKKyAgICBWYXJ5aW5nSW5TaGFkZXJSZWYoU2hhZGVyVHlwZSBzdGFnZUluLCBj
b25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKnZhcnlpbmdJbik7CisgICAgVmFyeWluZ0luU2hhZGVy
UmVmKFZhcnlpbmdJblNoYWRlclJlZiAmJm90aGVyKTsKKyAgICB+VmFyeWluZ0luU2hhZGVyUmVm
KCk7CisKKyAgICBWYXJ5aW5nSW5TaGFkZXJSZWYgJm9wZXJhdG9yPShWYXJ5aW5nSW5TaGFkZXJS
ZWYgJiZvdGhlcik7CisKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKnZhcnlpbmc7CisK
KyAgICBTaGFkZXJUeXBlIHN0YWdlOworCisgICAgLy8gU3RydWN0IG5hbWUKKyAgICBzdGQ6OnN0
cmluZyBwYXJlbnRTdHJ1Y3ROYW1lOworICAgIHN0ZDo6c3RyaW5nIHBhcmVudFN0cnVjdE1hcHBl
ZE5hbWU7Cit9OwogCiBzdHJ1Y3QgUGFja2VkVmFyeWluZyA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ewotICAgIFBhY2tlZFZhcnlpbmcoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nSW4s
IHNoOjpJbnRlcnBvbGF0aW9uVHlwZSBpbnRlcnBvbGF0aW9uSW4pOwotICAgIFBhY2tlZFZhcnlp
bmcoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nSW4sCisgICAgLy8gVGhyb3VnaG91
dCB0aGlzIGZpbGUsIHRoZSAiZnJvbnQiIHN0YWdlIHJlZmVycyB0byB0aGUgc3RhZ2UgdGhhdCBv
dXRwdXRzIHRoZSB2YXJ5aW5nLCBhbmQgdGhlCisgICAgLy8gImJhY2siIHN0YWdlIHJlZmVycyB0
byB0aGUgc3RhZ2UgdGhhdCB0YWtlcyB0aGUgdmFyeWluZyBhcyBpbnB1dC4gIE5vdGUgdGhhdCB0
aGlzIHN0cnVjdAorICAgIC8vIGNvbnRhaW5zIGxpbmtlZCB2YXJ5aW5ncywgd2hpY2ggbWVhbnMg
Ym90aCBmcm9udCBhbmQgYmFjayBzdGFnZSB2YXJ5aW5ncyBhcmUgdmFsaWQsIGV4Y2VwdAorICAg
IC8vIGZvciB0aGUgZm9sbG93aW5nIHdoaWNoIG1heSBoYXZlIG9ubHkgb25lIHZhbGlkIHN0YWdl
LgorICAgIC8vCisgICAgLy8gIC0gdHJhbnNmb3JtLWZlZWRiYWNrLWNhcHR1cmVkIHZhcnlpbmdz
CisgICAgLy8gIC0gYnVpbHRpbnMKKyAgICAvLyAgLSBzZXBhcmFibGUgcHJvZ3JhbSBzdGFnZXMs
CisgICAgLy8KKyAgICBQYWNrZWRWYXJ5aW5nKFZhcnlpbmdJblNoYWRlclJlZiAmJmZyb250VmFy
eWluZ0luLAorICAgICAgICAgICAgICAgICAgVmFyeWluZ0luU2hhZGVyUmVmICYmYmFja1Zhcnlp
bmdJbiwKKyAgICAgICAgICAgICAgICAgIHNoOjpJbnRlcnBvbGF0aW9uVHlwZSBpbnRlcnBvbGF0
aW9uSW4pOworICAgIFBhY2tlZFZhcnlpbmcoVmFyeWluZ0luU2hhZGVyUmVmICYmZnJvbnRWYXJ5
aW5nSW4sCisgICAgICAgICAgICAgICAgICBWYXJ5aW5nSW5TaGFkZXJSZWYgJiZiYWNrVmFyeWlu
Z0luLAogICAgICAgICAgICAgICAgICAgc2g6OkludGVycG9sYXRpb25UeXBlIGludGVycG9sYXRp
b25JbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwYXJlbnRTdHJ1Y3RO
YW1lSW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcGFyZW50U3RydWN0
TWFwcGVkTmFtZUluLAogICAgICAgICAgICAgICAgICAgR0x1aW50IGZpZWxkSW5kZXhJbik7CiAg
ICAgUGFja2VkVmFyeWluZyhQYWNrZWRWYXJ5aW5nICYmb3RoZXIpOwogICAgIH5QYWNrZWRWYXJ5
aW5nKCk7CiAKICAgICBQYWNrZWRWYXJ5aW5nICZvcGVyYXRvcj0oUGFja2VkVmFyeWluZyAmJm90
aGVyKTsKIAotICAgIGJvb2wgaXNTdHJ1Y3RGaWVsZCgpIGNvbnN0IHsgcmV0dXJuICFwYXJlbnRT
dHJ1Y3ROYW1lLmVtcHR5KCk7IH0KKyAgICBib29sIGlzU3RydWN0RmllbGQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZyb250VmFyeWluZy52YXJ5aW5nID8gIWZyb250VmFyeWluZy5w
YXJlbnRTdHJ1Y3ROYW1lLmVtcHR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogIWJhY2tWYXJ5aW5nLnBhcmVudFN0cnVjdE5hbWUuZW1wdHkoKTsKKyAgICB9CiAKICAg
ICBib29sIGlzQXJyYXlFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gYXJyYXlJbmRleCAhPSBHTF9J
TlZBTElEX0lOREVYOyB9CiAKLSAgICBzdGQ6OnN0cmluZyBmdWxsTmFtZSgpIGNvbnN0CisgICAg
Ly8gUmV0dXJuIGVpdGhlciBmcm9udCBvciBiYWNrIHZhcnlpbmcsIHdoaWNoZXZlciBpcyBhdmFp
bGFibGUuICBPbmx5IHVzZWQgd2hlbiB0aGUgbmFtZSBvZiB0aGUKKyAgICAvLyB2YXJ5aW5nIGlz
IG5vdCBpbXBvcnRhbnQsIGJ1dCBvbmx5IHRoZSB0eXBlIGlzIGludGVyZXN0aW5nLgorICAgIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyeWluZygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZnJvbnRWYXJ5aW5nLnZhcnlpbmcgPyAqZnJvbnRWYXJ5aW5nLnZhcnlpbmcgOiAqYmFj
a1ZhcnlpbmcudmFyeWluZzsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBmdWxsTmFtZShTaGFk
ZXJUeXBlIHN0YWdlKSBjb25zdAogICAgIHsKKyAgICAgICAgQVNTRVJUKHN0YWdlID09IGZyb250
VmFyeWluZy5zdGFnZSB8fCBzdGFnZSA9PSBiYWNrVmFyeWluZy5zdGFnZSk7CisgICAgICAgIGNv
bnN0IFZhcnlpbmdJblNoYWRlclJlZiAmdmFyeWluZyA9CisgICAgICAgICAgICBzdGFnZSA9PSBm
cm9udFZhcnlpbmcuc3RhZ2UgPyBmcm9udFZhcnlpbmcgOiBiYWNrVmFyeWluZzsKKwogICAgICAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSBmdWxsTmFtZVN0cjsKICAgICAgICAgaWYgKGlzU3RydWN0Rmll
bGQoKSkKICAgICAgICAgewotICAgICAgICAgICAgZnVsbE5hbWVTdHIgPDwgcGFyZW50U3RydWN0
TmFtZSA8PCAiLiI7CisgICAgICAgICAgICBmdWxsTmFtZVN0ciA8PCB2YXJ5aW5nLnBhcmVudFN0
cnVjdE5hbWUgPDwgIi4iOwogICAgICAgICB9CiAKLSAgICAgICAgZnVsbE5hbWVTdHIgPDwgdmFy
eWluZy0+bmFtZTsKKyAgICAgICAgZnVsbE5hbWVTdHIgPDwgdmFyeWluZy52YXJ5aW5nLT5uYW1l
OwogICAgICAgICBpZiAoYXJyYXlJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKQogICAgICAgICB7
CiAgICAgICAgICAgICBmdWxsTmFtZVN0ciA8PCAiWyIgPDwgYXJyYXlJbmRleCA8PCAiXSI7CkBA
IC02MywyMiArMTEwLDE1IEBAIHN0cnVjdCBQYWNrZWRWYXJ5aW5nIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIGNhbiBiZSBvbmx5IHJlZmVy
ZW5jZWQgaW4gdGhlIFZTLgogICAgIGJvb2wgdmVydGV4T25seSgpIGNvbnN0CiAgICAgewotICAg
ICAgICBTaGFkZXJCaXRTZXQgdmVydGV4OwotICAgICAgICB2ZXJ0ZXguc2V0KFNoYWRlclR5cGU6
OlZlcnRleCk7Ci0gICAgICAgIHJldHVybiBzaGFkZXJTdGFnZXMgPT0gdmVydGV4OworICAgICAg
ICByZXR1cm4gZnJvbnRWYXJ5aW5nLnN0YWdlID09IFNoYWRlclR5cGU6OlZlcnRleCAmJiBiYWNr
VmFyeWluZy52YXJ5aW5nID09IG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3Qgc2g6OlNoYWRl
clZhcmlhYmxlICp2YXJ5aW5nOwotCi0gICAgU2hhZGVyQml0U2V0IHNoYWRlclN0YWdlczsKKyAg
ICBWYXJ5aW5nSW5TaGFkZXJSZWYgZnJvbnRWYXJ5aW5nOworICAgIFZhcnlpbmdJblNoYWRlclJl
ZiBiYWNrVmFyeWluZzsKIAogICAgIC8vIENhY2hlZCBzbyB3ZSBjYW4gc3RvcmUgc2g6OlNoYWRl
clZhcmlhYmxlIHRvIHBvaW50IHRvIHZhcnlpbmcgZmllbGRzLgogICAgIHNoOjpJbnRlcnBvbGF0
aW9uVHlwZSBpbnRlcnBvbGF0aW9uOwogCi0gICAgLy8gU3RydWN0IG5hbWUKLSAgICBzdGQ6OnN0
cmluZyBwYXJlbnRTdHJ1Y3ROYW1lOwotICAgIHN0ZDo6c3RyaW5nIHBhcmVudFN0cnVjdE1hcHBl
ZE5hbWU7Ci0KICAgICBHTHVpbnQgYXJyYXlJbmRleDsKIAogICAgIC8vIEZpZWxkIGluZGV4IGlu
IHRoZSBzdHJ1Y3QuICBJbiBWdWxrYW4sIHRoaXMgaXMgdXNlZCB0byBhc3NpZ24gYQpAQCAtMTEy
LDE0ICsxNTIsNyBAQCBzdHJ1Y3QgUGFja2VkVmFyeWluZ1JlZ2lzdGVyIGZpbmFsCiAKICAgICBz
dGQ6OnN0cmluZyB0ZlZhcnlpbmdOYW1lKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChwYWNr
ZWRWYXJ5aW5nLT5pc0FycmF5RWxlbWVudCgpIHx8IHBhY2tlZFZhcnlpbmctPmlzU3RydWN0Rmll
bGQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBhY2tlZFZhcnlpbmctPmZ1bGxO
YW1lKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gcGFja2VkVmFyeWluZy0+dmFyeWluZy0+bmFtZTsKLSAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gcGFja2VkVmFyeWluZy0+ZnVsbE5hbWUocGFja2VkVmFyeWluZy0+ZnJvbnRWYXJ5aW5n
LnN0YWdlKTsKICAgICB9CiAKICAgICAvLyBJbmRleCB0byB0aGUgYXJyYXkgb2YgdmFyeWluZ3Mu
CkBAIC0xNjEsNyArMTk0LDggQEAgY2xhc3MgVmFyeWluZ1BhY2tpbmcgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKIAogICAgIGJvb2wgY29sbGVjdEFuZFBhY2tVc2VyVmFyeWluZ3MoZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQcm9ncmFtTWVyZ2VkVmFyeWluZ3MgJm1lcmdlZFZhcnlpbmdzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0ZlZh
cnlpbmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdGZWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNTZXBhcmFibGVQcm9ncmFtKTsKIAogICAgIHN0cnVj
dCBSZWdpc3RlcgogICAgIHsKQEAgLTE4MiwxMyArMjE2LDExIEBAIGNsYXNzIFZhcnlpbmdQYWNr
aW5nIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KG1SZWdpc3Rlckxpc3Quc2l6ZSgpKTsKICAgICB9CiAKLSAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJmdldEluYWN0aXZlVmFyeWluZ01hcHBlZE5hbWVz
KCkgY29uc3QKKyAgICBjb25zdCBTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+PiAm
Z2V0SW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1JbmFjdGl2ZVZhcnlpbmdNYXBwZWROYW1lczsKICAgICB9CiAKLSAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+ICZnZXRJbnB1dFZhcnlpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbUlucHV0VmFyeWluZ3M7IH0KLQogICBwcml2YXRlOgogICAgIGJvb2wgcGFja1Zhcnlp
bmcoY29uc3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZyk7CiAgICAgYm9vbCBpc0ZyZWUo
dW5zaWduZWQgaW50IHJlZ2lzdGVyUm93LApAQCAtMTk5LDExICsyMzEsMjAgQEAgY2xhc3MgVmFy
eWluZ1BhY2tpbmcgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgY29uc3QgUGFja2Vk
VmFyeWluZyAmcGFja2VkVmFyeWluZyk7CiAKKyAgICB1c2luZyBWYXJ5aW5nVW5pcXVlRnVsbE5h
bWVzID0gU2hhZGVyTWFwPHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPj47CisgICAgdm9pZCBwYWNrVXNl
clZhcnlpbmcoY29uc3QgUHJvZ3JhbVZhcnlpbmdSZWYgJnJlZiwgVmFyeWluZ1VuaXF1ZUZ1bGxO
YW1lcyAqdW5pcXVlRnVsbE5hbWVzKTsKKyAgICB2b2lkIHBhY2tVc2VyVmFyeWluZ0ZpZWxkKGNv
bnN0IFByb2dyYW1WYXJ5aW5nUmVmICZyZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgZmllbGRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcnlp
bmdVbmlxdWVGdWxsTmFtZXMgKnVuaXF1ZUZ1bGxOYW1lcyk7CisgICAgdm9pZCBwYWNrVXNlclZh
cnlpbmdURihjb25zdCBQcm9ncmFtVmFyeWluZ1JlZiAmcmVmLCBzaXplX3Qgc3Vic2NyaXB0KTsK
KyAgICB2b2lkIHBhY2tVc2VyVmFyeWluZ0ZpZWxkVEYoY29uc3QgUHJvZ3JhbVZhcnlpbmdSZWYg
JnJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZh
cmlhYmxlICZmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZp
ZWxkSW5kZXgpOworCiAgICAgc3RkOjp2ZWN0b3I8UmVnaXN0ZXI+IG1SZWdpc3Rlck1hcDsKICAg
ICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nUmVnaXN0ZXI+IG1SZWdpc3Rlckxpc3Q7Ci0gICAg
c3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiBtSW5wdXRWYXJ5aW5nczsKICAgICBzdGQ6
OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBtUGFja2VkVmFyeWluZ3M7Ci0gICAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IG1JbmFjdGl2ZVZhcnlpbmdNYXBwZWROYW1lczsKKyAgICBTaGFkZXJNYXA8
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+PiBtSW5hY3RpdmVWYXJ5aW5nTWFwcGVkTmFtZXM7CiAK
ICAgICBQYWNrTW9kZSBtUGFja01vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nX3VuaXR0ZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZ191bml0dGVzdC5j
cHAKaW5kZXggMTRhNDY4ZTIzNjA2NWNhNTI1MWI1ODNmYzNhNDU4ODAwYTMwNThhMS4uZGNhZTcz
MjFhZWNiNTQ1ZGRhZDE0ODczNzU2M2E0ZGJkYzMwMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nX3VuaXR0ZXN0LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmdf
dW5pdHRlc3QuY3BwCkBAIC0zMCw5ICszMCwxMSBAQCBjbGFzcyBWYXJ5aW5nUGFja2luZ1Rlc3Qg
OiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPEdMdWludD4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYXJ5aW5nUGFja2luZyAqdmFyeWluZ1BhY2tpbmcpCiAgICAgewogICAg
ICAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBwYWNrZWRWYXJ5aW5nczsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvICZzaFZhcnlpbmcgOiBzaFZhcnlpbmdzKQorICAgICAgICBmb3IgKGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmc2hWYXJ5aW5nIDogc2hWYXJ5aW5ncykKICAgICAgICAg
ewotICAgICAgICAgICAgcGFja2VkVmFyeWluZ3MucHVzaF9iYWNrKFBhY2tlZFZhcnlpbmcoc2hW
YXJ5aW5nLCBzaFZhcnlpbmcuaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgcGFja2VkVmFy
eWluZ3MucHVzaF9iYWNrKFBhY2tlZFZhcnlpbmcoCisgICAgICAgICAgICAgICAgVmFyeWluZ0lu
U2hhZGVyUmVmKFNoYWRlclR5cGU6OlZlcnRleCwgJnNoVmFyeWluZyksCisgICAgICAgICAgICAg
ICAgVmFyeWluZ0luU2hhZGVyUmVmKFNoYWRlclR5cGU6OkZyYWdtZW50LCAmc2hWYXJ5aW5nKSwg
c2hWYXJ5aW5nLmludGVycG9sYXRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIEluZm9Mb2cg
aW5mb0xvZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9hbmdsZXR5cGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9h
bmdsZXR5cGVzLmNwcAppbmRleCA0YTFjM2IxNWQ2MmZjYTM1MzVlMjdlYTI3Mjg4OTMxMzNmNTQz
N2Y4Li42NTRjOWYxZDIzZjQxZmEzOTc5NjU0ZDNlMWI4OGUyM2VmZTZiYjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuY3BwCkBA
IC0yNyw2ICsyNywxMiBAQCBSYXN0ZXJpemVyU3RhdGU6OlJhc3Rlcml6ZXJTdGF0ZSgpCiAgICAg
cG9seWdvbk9mZnNldFVuaXRzICA9IDAuMGY7CiAgICAgcG9pbnREcmF3TW9kZSAgICAgICA9IGZh
bHNlOwogICAgIG11bHRpU2FtcGxlICAgICAgICAgPSBmYWxzZTsKKyAgICBkaXRoZXIgICAgICAg
ICAgICAgID0gdHJ1ZTsKK30KKworUmFzdGVyaXplclN0YXRlOjpSYXN0ZXJpemVyU3RhdGUoY29u
c3QgUmFzdGVyaXplclN0YXRlICZvdGhlcikKK3sKKyAgICBtZW1jcHkodGhpcywgJm90aGVyLCBz
aXplb2YoUmFzdGVyaXplclN0YXRlKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYXN0
ZXJpemVyU3RhdGUgJmEsIGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZSAmYikKQEAgLTQzLDE5ICs0OSwx
NyBAQCBCbGVuZFN0YXRlOjpCbGVuZFN0YXRlKCkKIHsKICAgICBtZW1zZXQodGhpcywgMCwgc2l6
ZW9mKEJsZW5kU3RhdGUpKTsKIAotICAgIGJsZW5kICAgICAgICAgICAgICAgICA9IGZhbHNlOwot
ICAgIHNvdXJjZUJsZW5kUkdCICAgICAgICA9IEdMX09ORTsKLSAgICBzb3VyY2VCbGVuZEFscGhh
ICAgICAgPSBHTF9PTkU7Ci0gICAgZGVzdEJsZW5kUkdCICAgICAgICAgID0gR0xfWkVSTzsKLSAg
ICBkZXN0QmxlbmRBbHBoYSAgICAgICAgPSBHTF9aRVJPOwotICAgIGJsZW5kRXF1YXRpb25SR0Ig
ICAgICA9IEdMX0ZVTkNfQUREOwotICAgIGJsZW5kRXF1YXRpb25BbHBoYSAgICA9IEdMX0ZVTkNf
QUREOwotICAgIHNhbXBsZUFscGhhVG9Db3ZlcmFnZSA9IGZhbHNlOwotICAgIGRpdGhlciAgICAg
ICAgICAgICAgICA9IHRydWU7Ci0gICAgY29sb3JNYXNrUmVkICAgICAgICAgID0gdHJ1ZTsKLSAg
ICBjb2xvck1hc2tHcmVlbiAgICAgICAgPSB0cnVlOwotICAgIGNvbG9yTWFza0JsdWUgICAgICAg
ICA9IHRydWU7Ci0gICAgY29sb3JNYXNrQWxwaGEgICAgICAgID0gdHJ1ZTsKKyAgICBibGVuZCAg
ICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBzb3VyY2VCbGVuZFJHQiAgICAgPSBHTF9PTkU7Cisg
ICAgc291cmNlQmxlbmRBbHBoYSAgID0gR0xfT05FOworICAgIGRlc3RCbGVuZFJHQiAgICAgICA9
IEdMX1pFUk87CisgICAgZGVzdEJsZW5kQWxwaGEgICAgID0gR0xfWkVSTzsKKyAgICBibGVuZEVx
dWF0aW9uUkdCICAgPSBHTF9GVU5DX0FERDsKKyAgICBibGVuZEVxdWF0aW9uQWxwaGEgPSBHTF9G
VU5DX0FERDsKKyAgICBjb2xvck1hc2tSZWQgICAgICAgPSB0cnVlOworICAgIGNvbG9yTWFza0dy
ZWVuICAgICA9IHRydWU7CisgICAgY29sb3JNYXNrQmx1ZSAgICAgID0gdHJ1ZTsKKyAgICBjb2xv
ck1hc2tBbHBoYSAgICAgPSB0cnVlOwogfQogCiBCbGVuZFN0YXRlOjpCbGVuZFN0YXRlKGNvbnN0
IEJsZW5kU3RhdGUgJm90aGVyKQpAQCAtNjMsMTEgKzY3LDYgQEAgQmxlbmRTdGF0ZTo6QmxlbmRT
dGF0ZShjb25zdCBCbGVuZFN0YXRlICZvdGhlcikKICAgICBtZW1jcHkodGhpcywgJm90aGVyLCBz
aXplb2YoQmxlbmRTdGF0ZSkpOwogfQogCi1ib29sIEJsZW5kU3RhdGU6OmFsbENoYW5uZWxzTWFz
a2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWNvbG9yTWFza1JlZCAmJiAhY29sb3JNYXNrR3Jl
ZW4gJiYgIWNvbG9yTWFza0JsdWUgJiYgIWNvbG9yTWFza0FscGhhOwotfQotCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgQmxlbmRTdGF0ZSAmYSwgY29uc3QgQmxlbmRTdGF0ZSAmYikKIHsKICAgICBy
ZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKEJsZW5kU3RhdGUpKSA9PSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmgKaW5kZXggZDI0
NDMwZGU3YTcwZmUzMTZkNDM0MDBhZDFhODdiMTFmNWFkNThhNi4uNTRkNmRkN2YyZWY1NWUxYjdh
NjEyZDU0MDllNTE1NjMyNjYwYTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5oCkBAIC0xMjcsNiArMTI3LDcgQEAgc3RydWN0IFJh
c3Rlcml6ZXJTdGF0ZSBmaW5hbAogewogICAgIC8vIFRoaXMgd2lsbCB6ZXJvLWluaXRpYWxpemUg
dGhlIHN0cnVjdCwgaW5jbHVkaW5nIHBhZGRpbmcuCiAgICAgUmFzdGVyaXplclN0YXRlKCk7Cisg
ICAgUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZSAmb3RoZXIpOwogCiAgICAg
Ym9vbCBjdWxsRmFjZTsKICAgICBDdWxsRmFjZU1vZGUgY3VsbE1vZGU7CkBAIC0xNDAsNiArMTQx
LDggQEAgc3RydWN0IFJhc3Rlcml6ZXJTdGF0ZSBmaW5hbAogICAgIGJvb2wgbXVsdGlTYW1wbGU7
CiAKICAgICBib29sIHJhc3Rlcml6ZXJEaXNjYXJkOworCisgICAgYm9vbCBkaXRoZXI7CiB9Owog
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFzdGVyaXplclN0YXRlICZhLCBjb25zdCBSYXN0ZXJp
emVyU3RhdGUgJmIpOwpAQCAtMTUxLDggKzE1NCw2IEBAIHN0cnVjdCBCbGVuZFN0YXRlIGZpbmFs
CiAgICAgQmxlbmRTdGF0ZSgpOwogICAgIEJsZW5kU3RhdGUoY29uc3QgQmxlbmRTdGF0ZSAmb3Ro
ZXIpOwogCi0gICAgYm9vbCBhbGxDaGFubmVsc01hc2tlZCgpIGNvbnN0OwotCiAgICAgYm9vbCBi
bGVuZDsKICAgICBHTGVudW0gc291cmNlQmxlbmRSR0I7CiAgICAgR0xlbnVtIGRlc3RCbGVuZFJH
QjsKQEAgLTE2NSwxNSArMTY2LDEzIEBAIHN0cnVjdCBCbGVuZFN0YXRlIGZpbmFsCiAgICAgYm9v
bCBjb2xvck1hc2tHcmVlbjsKICAgICBib29sIGNvbG9yTWFza0JsdWU7CiAgICAgYm9vbCBjb2xv
ck1hc2tBbHBoYTsKLQotICAgIGJvb2wgc2FtcGxlQWxwaGFUb0NvdmVyYWdlOwotCi0gICAgYm9v
bCBkaXRoZXI7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmxlbmRTdGF0ZSAmYSwgY29u
c3QgQmxlbmRTdGF0ZSAmYik7CiBib29sIG9wZXJhdG9yIT0oY29uc3QgQmxlbmRTdGF0ZSAmYSwg
Y29uc3QgQmxlbmRTdGF0ZSAmYik7CiAKK3VzaW5nIEJsZW5kU3RhdGVBcnJheSA9IHN0ZDo6YXJy
YXk8QmxlbmRTdGF0ZSwgSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUz47CisKIHN0cnVj
dCBEZXB0aFN0ZW5jaWxTdGF0ZSBmaW5hbAogewogICAgIC8vIFRoaXMgd2lsbCB6ZXJvLWluaXRp
YWxpemUgdGhlIHN0cnVjdCwgaW5jbHVkaW5nIHBhZGRpbmcuCkBAIC00ODgsOCArNDg3LDcgQEAg
dXNpbmcgQWN0aXZlVGV4dHVyZU1hc2sgPSBhbmdsZTo6Qml0U2V0PElNUExFTUVOVEFUSU9OX01B
WF9BQ1RJVkVfVEVYVFVSRVM+OwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB1c2luZyBBY3RpdmVU
ZXh0dXJlQXJyYXkgPSBzdGQ6OmFycmF5PFQsIElNUExFTUVOVEFUSU9OX01BWF9BQ1RJVkVfVEVY
VFVSRVM+OwogCi11c2luZyBBY3RpdmVUZXh0dXJlUG9pbnRlckFycmF5ID0gQWN0aXZlVGV4dHVy
ZUFycmF5PFRleHR1cmUgKj47Ci11c2luZyBBY3RpdmVUZXh0dXJlVHlwZUFycmF5ICAgID0gQWN0
aXZlVGV4dHVyZUFycmF5PFRleHR1cmVUeXBlPjsKK3VzaW5nIEFjdGl2ZVRleHR1cmVUeXBlQXJy
YXkgPSBBY3RpdmVUZXh0dXJlQXJyYXk8VGV4dHVyZVR5cGU+OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KIHVzaW5nIFVuaWZvcm1CdWZmZXJzQXJyYXkgPSBzdGQ6OmFycmF5PFQsIElNUExFTUVO
VEFUSU9OX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUz47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9hdXRvZ2VuLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8w
X2F1dG9nZW4uY3BwCmluZGV4IDFjMzBhOGExZDNhOTUxYjc2YzRhYmQyZTQ1YTUzMjE1NzA0OTg2
MWYuLmI4NDJiODlhYTgxNGFmOGVkY2MxZWM1MWViYjYxNWQ2ZGQxNTA2MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0
dXJlX2dsZXNfMl8wX2F1dG9nZW4uY3BwCkBAIC0xMzA1LDE3ICsxMzA1LDE4IEBAIENhbGxDYXB0
dXJlIENhcHR1cmVHZXRVbmlmb3JtTG9jYXRpb24oY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxs
Q2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIFBhcmFt
QnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJv
Z3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7
Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9u
UGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAK
ICAgICBQYXJhbUNhcHR1cmUgcGFyYW1zUGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMZmxv
YXRQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRl
ciwgcGFyYW1zLCAmcGFyYW1zUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRVbmlmb3JtZnZf
cGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFy
YW1zLCAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1cmVHZXRVbmlmb3JtZnZfcGFyYW1zKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJhbXNQYXJhbSk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhcmFtc1BhcmFtKSk7CiAKICAgICByZXR1cm4gQ2Fs
bENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdldFVuaWZvcm1mdiwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7CkBAIC0xMzI0LDE3ICsxMzI1LDE4IEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlm
b3JtZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9y
bWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZv
cm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1Bh
cmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGludFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZh
bHVlKFBhcmFtVHlwZTo6VEdMaW50UG9pbnRlciwgcGFyYW1zLCAmcGFyYW1zUGFyYW0udmFsdWUp
OwotICAgIENhcHR1cmVHZXRVbmlmb3JtaXZfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOworICAgIENhcHR1
cmVHZXRVbmlmb3JtaXZfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZwYXJhbXNQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhcmFt
c1BhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdldFVu
aWZvcm1pdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xOTI0LDExICsxOTI2LDE0IEBA
IENhbGxDYXB0dXJlIENhcHR1cmVUZXhTdWJJbWFnZTJEKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VGV4U3ViSW1hZ2UyRCwgc3Rk
Ojptb3ZlKHBhcmFtQnVmZmVyKSk7CiB9CiAKLUNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMWYo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMaW50IGxvY2F0aW9uLCBH
TGZsb2F0IHYwKQorQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xZihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwKQogewogICAgIFBhcmFt
QnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9j
YXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
LCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAiLCBQ
YXJhbVR5cGU6OlRHTGZsb2F0LCB2MCk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVu
dHJ5UG9pbnQ6OlVuaWZvcm0xZiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xOTM2LDI4
ICsxOTQxLDMxIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMWYoY29uc3QgU3RhdGUgJmds
U3RhdGUsIGJvb2wgaXNDYWxsVmFsaWQsIEdMaW50IGxvY2F0CiAKIENhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtMWZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24p
OworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAg
ICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29u
c3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQ
b2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtMWZ2
X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFs
dWVQYXJhbSk7CisgICAgQ2FwdHVyZVVuaWZvcm0xZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFs
aWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJh
bUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENh
bGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMWZ2LCBzdGQ6Om1vdmUocGFyYW1CdWZm
ZXIpKTsKIH0KIAotQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xaShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwgYm9vbCBpc0NhbGxWYWxpZCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQorQ2FsbENh
cHR1cmUgQ2FwdHVyZVVuaWZvcm0xaShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB2MCkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYw
KTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTFpLCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTE5NjUsMTggKzE5NzMsMTggQEAgQ2FsbENhcHR1
cmUgQ2FwdHVyZVVuaWZvcm0xaShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwgYm9vbCBpc0NhbGxWYWxp
ZCwgR0xpbnQgbG9jYXQKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xaXYoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVm
ZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBs
b2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQ
YXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJh
bSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFt
VmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52
YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm0xaXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQs
IGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlVW5pZm9y
bTFpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2
YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlVu
aWZvcm0xaXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTk4NCwxMyArMTk5MiwxMyBA
QCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTFpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAog
Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB2MSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjApOwogICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjEpOwogCkBAIC0x
OTk5LDE4ICsyMDA3LDE4IEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMmYoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMmZ2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIFBhcmFtQnVm
ZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBs
b2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQ
YXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJh
bSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFy
YW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFy
YW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtMmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZh
bGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVVu
aWZvcm0yZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1v
dmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpVbmlmb3JtMmZ2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTIwMTgsMTMgKzIwMjYs
MTMgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMmkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB2MSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMaW50LCB2MSk7CiAKQEAgLTIwMzMs
MTggKzIwNDEsMTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yaShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yaXYoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBh
cmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQ
YXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlv
blBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5
cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFs
dWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUo
UGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7
Ci0gICAgQ2FwdHVyZVVuaWZvcm0yaXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlVW5pZm9ybTJpdl92
YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSwg
JnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBh
cmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0y
aXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMjA1MiwxNCArMjA2MCwxNCBAQCBDYWxs
Q2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENh
cHR1cmUgQ2FwdHVyZVVuaWZvcm0zZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MikKIHsKICAgICBQYXJhbUJ1
ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0
aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwg
bG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFy
YW1UeXBlOjpUR0xmbG9hdCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYx
IiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjEpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oInYyIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjIpOwpAQCAtMjA2OSwxOCArMjA3NywxOCBA
QCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTNmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBD
YWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXpl
aSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1U
eXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
OjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlVW5pZm9ybTNmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtM2Z2X3ZhbHVlKGds
U3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQ
YXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsK
IAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTNmdiwgc3Rk
Ojptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0yMDg4LDE0ICsyMDk2LDE0IEBAIENhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtM2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBD
YXB0dXJlVW5pZm9ybTNpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHYyKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5
cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxv
Y2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tl
ZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGlu
dCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIHYxKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCB2Mik7CkBAIC0yMTA1LDE4ICsyMTEzLDE4IEBAIENhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtM2koY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtM2l2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1
ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6
VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFy
YW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50
ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMaW50Q29uc3RQb2ludGVyLCB2
YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtM2l2X3ZhbHVlKGds
U3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7
CisgICAgQ2FwdHVyZVVuaWZvcm0zaXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5h
ZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJl
KGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtM2l2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAg
LTIxMjQsNyArMjEzMiw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM2l2KGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTRmKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHYyLApAQCAtMjEzMiw3ICsyMTQwLDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00
Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwg
djApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xm
bG9hdCwgdjEpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYyIiwgUGFyYW1UeXBl
OjpUR0xmbG9hdCwgdjIpOwpAQCAtMjE0MywxOCArMjE1MSwxOCBAQCBDYWxsQ2FwdHVyZSBDYXB0
dXJlVW5pZm9ybTRmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybTRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAg
UGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0
UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9p
bnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybTRmdl92
YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwgJnZhbHVl
UGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtNGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxs
Q2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTRmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVy
KSk7CkBAIC0yMTYyLDcgKzIxNzAsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTRmdihj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00aShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB2MiwKQEAgLTIxNzAsNyArMjE3OCw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3Jt
NGkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCB2
MCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGlu
dCwgdjEpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYyIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIHYyKTsKQEAgLTIxODEsMTggKzIxODksMTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVu
aWZvcm00aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZv
cm00aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQog
ewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5p
Zm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNh
cHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlcik7
CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIHZhbHVl
LCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm00aXZfdmFsdWUoZ2xTdGF0
ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAg
ICBDYXB0dXJlVW5pZm9ybTRpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBh
cmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6
OkVudHJ5UG9pbnQ6OlVuaWZvcm00aXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMjIw
MCwyMCArMjIwOCwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTRpdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyZnYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0g
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFj
a2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBj
b3VudCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1U
eXBlOjpUR0xib29sZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFy
YW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBh
cmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBh
cmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDJmdl92YWx1ZShnbFN0YXRlLCBp
c0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAorICAgIENhcHR1
cmVVbmlmb3JtTWF0cml4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92
ZSh2YWx1ZVBhcmFtKSk7CiAKQEAgLTIyMjIsMjAgKzIyMzAsMjAgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZVVuaWZvcm1NYXRyaXgyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtTWF0cml4M2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAg
ICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3Nl
KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdM
ZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxv
YXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVu
aWZvcm1NYXRyaXgzZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSwKKyAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShn
bFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0yMjQ0
LDIwICsyMjUyLDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4M2Z2KGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDRmdihj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6
ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQ
YXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFs
dWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJ
bml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZh
bHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtTWF0cml4NGZ2X3ZhbHVlKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCisgICAg
Q2FwdHVyZVVuaWZvcm1NYXRyaXg0ZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3Rk
Ojptb3ZlKHZhbHVlUGFyYW0pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18yXzBfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18yXzBfYXV0b2dlbi5oCmluZGV4
IGNiZjY5NzA3YTJjMTUxYTBiYTNkODQ3Zjc2NGIzMzI1ZjQ5ZjNiNDkuLjJlOGJiMzEwMmY2NjA0
NjU1ODA0Y2VkMjhhMDE2NmQ4NGFlYzEwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX2F1dG9nZW4uaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9hdXRvZ2Vu
LmgKQEAgLTM0NCwxMiArMzQ0LDEyIEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5p
Zm9ybUxvY2F0aW9uKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVHZXRVbmlmb3JtZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFVuaWZvcm1pdihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CiBhbmdsZTo6Q2Fs
bENhcHR1cmUgQ2FwdHVyZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLApAQCAtNTE3LDEwMyArNTE3LDEwMyBAQCBhbmdsZTo6Q2FsbENhcHR1
cmUgQ2FwdHVyZVRleFN1YkltYWdlMkQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKIGFuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTFmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCk7CiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xaShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHYwKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTFpdihjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yZihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHYxKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJmdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTJp
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB2MSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0yaXYoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM2Yo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
djIpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM2Z2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM2koY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIpOwogYW5n
bGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtM2l2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZh
bHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTRmKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2Myk7CiBhbmdsZTo6Q2FsbENhcHR1
cmUgQ2FwdHVyZVVuaWZvcm00ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB2MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHYzKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTRp
dihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVy
ZVVuaWZvcm1NYXRyaXgyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybU1hdHJpeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtTWF0cml4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CkBAIC05ODksMTMgKzk4OSwxMyBAQCB2b2lkIENh
cHR1cmVHZXRVbmlmb3JtTG9jYXRpb25fbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQg
Q2FwdHVyZUdldFVuaWZvcm1mdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2
b2lkIENhcHR1cmVHZXRVbmlmb3JtaXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsK
IHZvaWQgQ2FwdHVyZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2X3BvaW50ZXIoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCkBAIC0xMDk0LDY5ICsxMDk0LDY5IEBAIHZvaWQgQ2FwdHVyZVRleFN1YkltYWdl
MkRfcGl4ZWxzKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVy
ZVVuaWZvcm0xZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJl
ICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybTFpdl92YWx1ZShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJl
VW5pZm9ybTJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUg
KnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtMml2X3ZhbHVlKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVV
bmlmb3JtM2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAq
cGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm0zaXZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVu
aWZvcm00ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpw
YXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybTRpdl92YWx1ZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5p
Zm9ybU1hdHJpeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2
b2lkIENhcHR1cmVVbmlmb3JtTWF0cml4M2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFy
YW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXg0ZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2NhcHR1cmVfZ2xlc18yXzBfcGFyYW1zLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfMl8wX3BhcmFtcy5jcHAKaW5kZXggOTE4MDU2ODVj
NjJkYWI2ZDlkZDliZTgwNGQ3MzRhODAzMDUyNWQ2Mi4uMGQxYTI2NTk4NjAyNjVkMDFiZTlmOWI0
NjYwODE5YTZiNzdkM2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18yXzBfcGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzJfMF9wYXJhbXMuY3BwCkBAIC0y
NDAsNyArMjQwLDcgQEAgdm9pZCBDYXB0dXJlR2V0QWN0aXZlQXR0cmliX25hbWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFt
Q2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQ2FwdHVyZVN0cmluZ0xpbWl0
KG5hbWUsIGJ1ZlNpemUsIHBhcmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2FwdHVyZUdldEFjdGl2
ZVVuaWZvcm1fbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjU0LDcgKzI1NCw3IEBA
IHZvaWQgQ2FwdHVyZUdldEFjdGl2ZVVuaWZvcm1fbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1
cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHBhcmFtQ2FwdHVyZS0+cmVhZEJ1ZmZl
clNpemVCeXRlcyA9IHNpemVvZihHTHNpemVpKTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0QWN0aXZl
VW5pZm9ybV9zaXplKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjY4LDcgKzI2OCw3IEBAIHZv
aWQgQ2FwdHVyZUdldEFjdGl2ZVVuaWZvcm1fc2l6ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHBhcmFtQ2FwdHVyZS0+cmVhZEJ1ZmZlclNpemVCeXRl
cyA9IHNpemVvZihHTGludCk7CiB9CiAKIHZvaWQgQ2FwdHVyZUdldEFjdGl2ZVVuaWZvcm1fdHlw
ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIENhcHR1cmVH
ZXRBY3RpdmVVbmlmb3JtX3R5cGUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICBwYXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBzaXplb2Yo
R0xlbnVtKTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0QWN0aXZlVW5pZm9ybV9uYW1lKGNvbnN0IFN0
YXRlICZnbFN0YXRlLApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgQ2FwdHVyZUdldEFjdGl2ZVVu
aWZvcm1fbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIENhcHR1cmVTdHJpbmdMaW1pdChuYW1lLCBidWZTaXplLCBwYXJhbUNhcHR1cmUpOwogfQog
CiB2b2lkIENhcHR1cmVHZXRBdHRhY2hlZFNoYWRlcnNfY291bnQoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBDYXB0dXJlR2V0UHJvZ3JhbUluZm9Mb2dfaW5m
b0xvZyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHsKICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9i
aiA9IEdldExpbmtlZFByb2dyYW1Gb3JDYXB0dXJlKGdsU3RhdGUsIHByb2dyYW0pOwogICAgIEFT
U0VSVChwcm9ncmFtT2JqKTsKLSAgICBwYXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMg
PSBwcm9ncmFtT2JqLT5nZXRJbmZvTG9nTGVuZ3RoKCkgKyAxOworICAgIHBhcmFtQ2FwdHVyZS0+
cmVhZEJ1ZmZlclNpemVCeXRlcyA9IHByb2dyYW1PYmotPmdldEV4ZWN1dGFibGUoKS5nZXRJbmZv
TG9nTGVuZ3RoKCkgKyAxOwogfQogCiB2b2lkIENhcHR1cmVHZXRQcm9ncmFtaXZfcGFyYW1zKGNv
bnN0IFN0YXRlICZnbFN0YXRlLApAQCAtNDU4LDcgKzQ1OCw4IEBAIHZvaWQgQ2FwdHVyZUdldFNo
YWRlclByZWNpc2lvbkZvcm1hdF9yYW5nZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcHJlY2lzaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFy
YW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAvLyByYW5nZSBzcGVjaWZp
ZXMgYSBwb2ludGVyIHRvIHR3by1lbGVtZW50IGFycmF5IGNvbnRhaW5pbmcgbG9nMiBvZiBtaW4g
YW5kIG1heAorICAgIHBhcmFtQ2FwdHVyZS0+cmVhZEJ1ZmZlclNpemVCeXRlcyA9IDIgKiBzaXpl
b2YoR0xpbnQpOwogfQogCiB2b2lkIENhcHR1cmVHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXRfcHJl
Y2lzaW9uKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtNDY5LDcgKzQ3MCw3IEBAIHZvaWQgQ2Fw
dHVyZUdldFNoYWRlclByZWNpc2lvbkZvcm1hdF9wcmVjaXNpb24oY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICBwYXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBzaXplb2YoR0xpbnQpOwog
fQogCiB2b2lkIENhcHR1cmVHZXRTaGFkZXJTb3VyY2VfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0
YXRlLApAQCAtNTM5LDcgKzU0MCw3IEBAIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1Mb2NhdGlvbl9u
YW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWZ2X3BhcmFt
cyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJh
bUNhcHR1cmUpCiB7CkBAIC01NDksNyArNTUwLDcgQEAgdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWZ2
X3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1pdl9w
YXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBh
cmFtQ2FwdHVyZSkKIHsKQEAgLTc0Miw3ICs3NDMsNyBAQCB2b2lkIENhcHR1cmVUZXhTdWJJbWFn
ZTJEX3BpeGVscyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybTFm
dl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtNzUy
LDcgKzc1Myw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0xZnZfdmFsdWUoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm0xaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1D
YXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC03NjIsNyArNzYzLDcgQEAgdm9pZCBDYXB0dXJlVW5p
Zm9ybTFpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9y
bTJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAt
NzcyLDcgKzc3Myw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0yZnZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm0yaXZfdmFsdWUoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFy
YW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC03ODIsNyArNzgzLDcgQEAgdm9pZCBDYXB0dXJl
VW5pZm9ybTJpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5p
Zm9ybTNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpA
QCAtNzkyLDcgKzc5Myw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm0zZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm0zaXZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC04MDIsNyArODAzLDcgQEAgdm9pZCBDYXB0
dXJlVW5pZm9ybTNpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJl
VW5pZm9ybTRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJl
KQpAQCAtODEyLDcgKzgxMyw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm00ZnZfdmFsdWUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm00aXZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC04MjIsNyArODIzLDcgQEAgdm9pZCBD
YXB0dXJlVW5pZm9ybTRpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0
dXJlVW5pZm9ybU1hdHJpeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC04MzMsNyArODM0LDcg
QEAgdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBA
IC04NDQsNyArODQ1LDcgQEAgdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDRmdl92YWx1ZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUsCkBAIC04NTksNyArODYwLDcgQEAgdm9pZCBDYXB0dXJlVmVydGV4QXR0cmli
MWZ2X3YoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1D
YXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIENhcHR1
cmVNZW1vcnkodiwgc2l6ZW9mKEdMZmxvYXQpLCBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lkIENh
cHR1cmVWZXJ0ZXhBdHRyaWIyZnZfdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTg2OCw3ICs4
NjksNyBAQCB2b2lkIENhcHR1cmVWZXJ0ZXhBdHRyaWIyZnZfdihjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQ2FwdHVyZU1lbW9yeSh2LCBzaXplb2YoR0xmbG9h
dCkgKiAyLCBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lkIENhcHR1cmVWZXJ0ZXhBdHRyaWIzZnZf
dihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTg3Nyw3ICs4NzgsNyBAQCB2b2lkIENhcHR1cmVW
ZXJ0ZXhBdHRyaWIzZnZfdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgQ2FwdHVyZU1lbW9yeSh2LCBzaXplb2YoR0xmbG9hdCkgKiAzLCBwYXJhbUNhcHR1cmUp
OwogfQogCiB2b2lkIENhcHR1cmVWZXJ0ZXhBdHRyaWI0ZnZfdihjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKQEAgLTg4Niw3ICs4ODcsNyBAQCB2b2lkIENhcHR1cmVWZXJ0ZXhBdHRyaWI0ZnZfdihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBh
cmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQ2FwdHVyZU1lbW9yeSh2
LCBzaXplb2YoR0xmbG9hdCkgKiA0LCBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lkIENhcHR1cmVW
ZXJ0ZXhBdHRyaWJQb2ludGVyX3BvaW50ZXIoY29uc3QgU3RhdGUgJmdsU3RhdGUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNf
MF9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0
dXJlX2dsZXNfM18wX2F1dG9nZW4uY3BwCmluZGV4IGQ5YmY5NjlmZTgwY2JlMWE1N2NlMDIzOWJl
NGZjZTkwOGNkOGUzZDUuLjY2ZmYyMWYxZWU3MTcwYTNhM2EzMDgxOTdjNjUxMTE5MTUxMWFkNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJl
X2dsZXNfM18wX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX2F1dG9nZW4uY3BwCkBAIC0xMTM3LDE3ICsxMTM3LDE3
IEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtSW5kaWNlcyhjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtdWl2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQs
IHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9u
IiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9j
YXRpb25QYWNrZWQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFtKCJwYXJhbXMiLCBQ
YXJhbVR5cGU6OlRHTHVpbnRQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6
OlRHTHVpbnRQb2ludGVyLCBwYXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVy
ZUdldFVuaWZvcm11aXZfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgcGFyYW1zLAorICAgIENhcHR1cmVHZXRVbmlmb3JtdWl2X3BhcmFtcyhnbFN0
YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtc1BhcmFtKTsKICAgICBwYXJh
bUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUocGFyYW1zUGFyYW0pKTsKIApAQCAtMTYzMiwxMSAr
MTYzMiwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9p
bnQ6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwog
fQogCi1DYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTF1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwg
Ym9vbCBpc0NhbGxWYWxpZCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKK0NhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtMXVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB2MCkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2
MCk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0xdWks
IHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTY0NCwxOCArMTY0NywxOCBAQCBDYWxsQ2Fw
dHVyZSBDYXB0dXJlVW5pZm9ybTF1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwgYm9vbCBpc0NhbGxW
YWxpZCwgR0xpbnQgbG9jYQogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTF1aXYoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAg
IFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxv
Y2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
Y291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUg
dmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIpOwogICAg
IEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgdmFsdWUsICZ2
YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybTF1aXZfdmFsdWUoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBD
YXB0dXJlVW5pZm9ybTF1aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJh
bShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpVbmlmb3JtMXVpdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xNjYz
LDEzICsxNjY2LDEzIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtMXVpdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0ydWkoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgdjEpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMdWludCwg
djApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0x1
aW50LCB2MSk7CiAKQEAgLTE2NzgsMTggKzE2ODEsMTggQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVu
aWZvcm0ydWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtMnVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
dmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7
CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5
cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAg
IFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0
UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2lu
dGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVVbmlmb3JtMnVpdl92
YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwgJnZhbHVl
UGFyYW0pOworICAgIENhcHR1cmVVbmlmb3JtMnVpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxp
ZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2Fs
bENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0ydWl2LCBzdGQ6Om1vdmUocGFyYW1CdWZm
ZXIpKTsKQEAgLTE2OTcsMTQgKzE3MDAsMTQgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0y
dWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTN1
aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB2MikKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2
MCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTHVp
bnQsIHYxKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6
VEdMdWludCwgdjIpOwpAQCAtMTcxNCwxOCArMTcxNywxOCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybTN1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVu
aWZvcm0zdWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9u
KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAg
ICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1aW50Q29u
c3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBv
aW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm0zdWl2
X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLCAmdmFs
dWVQYXJhbSk7CisgICAgQ2FwdHVyZVVuaWZvcm0zdWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZh
bGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBD
YWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6VW5pZm9ybTN1aXYsIHN0ZDo6bW92ZShwYXJhbUJ1
ZmZlcikpOwpAQCAtMTczMyw3ICsxNzM2LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0z
dWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTR1
aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB2MiwKQEAgLTE3NDEsNyArMTc0NCw3IEBAIENhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtNHVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogewogICAgIFBhcmFtQnVm
ZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBs
b2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAiLCBQYXJh
bVR5cGU6OlRHTHVpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIs
IFBhcmFtVHlwZTo6VEdMdWludCwgdjEpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InYyIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2Mik7CkBAIC0xNzUyLDE4ICsxNzU1LDE4IEBAIENh
bGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtNHVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxs
Q2FwdHVyZSBDYXB0dXJlVW5pZm9ybTR1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVy
OwogCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6
OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNp
emVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJh
bVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlw
ZTo6VEdMdWludENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlVW5pZm9ybTR1aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlVW5pZm9ybTR1aXZfdmFsdWUo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUsICZ2YWx1
ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkp
OwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtNHVpdiwg
c3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xNzg2LDIwICsxNzg5LDIwIEBAIENhbGxDYXB0
dXJlIENhcHR1cmVVbmlmb3JtQmxvY2tCaW5kaW5nKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBD
YWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4M2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291
bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlw
ZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFt
KCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJh
bVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJh
bS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyeDNmdl92YWx1ZShnbFN0YXRlLCBp
c0NhbGxWYWxpZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAorICAgIENhcHR1
cmVVbmlmb3JtTWF0cml4MngzZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6
Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0xODA4LDIwICsxODExLDIwIEBAIENhbGxDYXB0dXJl
IENhcHR1cmVVbmlmb3JtTWF0cml4MngzZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxD
YXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9j
YXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwg
UGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpU
R0xib29sZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZh
bHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFs
dWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZh
bHVlKTsKLSAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4NGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2Fs
bFZhbGlkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCisgICAgQ2FwdHVyZVVu
aWZvcm1NYXRyaXgyeDRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92
ZSh2YWx1ZVBhcmFtKSk7CiAKQEAgLTE4MzAsMjAgKzE4MzMsMjAgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZVVuaWZvcm1NYXRyaXgyeDRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1
cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlv
bik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJh
bVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJv
b2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUi
LCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQ
YXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUp
OwotICAgIENhcHR1cmVVbmlmb3JtTWF0cml4M3gyZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFs
aWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKKyAgICBDYXB0dXJlVW5pZm9y
bU1hdHJpeDN4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZh
bHVlUGFyYW0pKTsKIApAQCAtMTg1MiwyMCArMTg1NSwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJl
VW5pZm9ybU1hdHJpeDN4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiBDYWxsQ2FwdHVyZSBD
YXB0dXJlVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVh
biwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBh
cmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFt
VHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0g
ICAgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwg
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLAorICAgIENhcHR1cmVVbmlmb3JtTWF0
cml4M3g0ZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQ
YXJhbSkpOwogCkBAIC0xODc0LDIwICsxODc3LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtTWF0cml4M3g0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIENhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtTWF0cml4NHgyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCi0gICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpU
VW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0
cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1U
eXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
OjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlVW5pZm9ybU1hdHJpeDR4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsCisgICAgQ2FwdHVyZVVuaWZvcm1NYXRyaXg0
eDJmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZh
bHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFt
KSk7CiAKQEAgLTE4OTYsMjAgKzE4OTksMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1N
YXRyaXg0eDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogQ2FsbENhcHR1cmUgQ2FwdHVyZVVu
aWZvcm1NYXRyaXg0eDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7
CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5z
cG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6
OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRH
TGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1
cmVVbmlmb3JtTWF0cml4NHgzZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwKKyAgICBDYXB0dXJlVW5pZm9ybU1hdHJpeDR4M2Z2
X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQ
YXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1
cmVfZ2xlc18zXzBfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2NhcHR1cmVfZ2xlc18zXzBfYXV0b2dlbi5oCmluZGV4IGFiOTliYmMzMmYwOTViOWJjNDJj
YWM2YWU4NWNkMDg0MTMxM2RmZGEuLmRhMGZmM2IxOTIxODFhYWE0YTZmYmViZDQ3Y2U1NmU3ZWNi
NTNlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9j
YXB0dXJlX2dsZXNfM18wX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9hdXRvZ2VuLmgKQEAgLTMyNSw3ICszMjUsNyBA
QCBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFVuaWZvcm1JbmRpY2VzKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtdWl2KGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKIGFuZ2xl
OjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VmVydGV4QXR0cmliSWl2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKQEAgLTQ2Nyw0NCArNDY3LDQ0IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVm
ZmVyTW9kZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0xdWkoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYwKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybTF1aXYoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1
cmVVbmlmb3JtMnVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgdjEpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVV
bmlmb3JtMnVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2Fs
bENhcHR1cmUgQ2FwdHVyZVVuaWZvcm0zdWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVVbmlmb3JtM3Vpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7CiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm00dWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYzKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlVW5pZm9ybTR1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwogYW5nbGU6
OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtQmxvY2tCaW5kaW5nKGNvbnN0IFN0YXRlICZnbFN0
YXRlLApAQCAtNTE0LDM3ICs1MTQsMzcgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtQmxvY2tCaW5kaW5nKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsK
IGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4M2Z2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXgyeDRm
dihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlm
b3JtTWF0cml4M3gyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVy
ZSBDYXB0dXJlVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVVuaWZvcm1NYXRyaXg0eDJmdihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVVbmlmb3JtTWF0cml4NHgzZnYoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIENhcHR1cmVHZXRV
bmlmb3JtSW5kaWNlc191bmlmb3JtSW5kaWNlcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQg
Q2FwdHVyZUdldFVuaWZvcm11aXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVy
ZSk7CiB2b2lkIENhcHR1cmVHZXRWZXJ0ZXhBdHRyaWJJaXZfcGFyYW1zKGNvbnN0IFN0YXRlICZn
bFN0YXRlLApAQCAtOTkyLDY2ICs5OTIsNjYgQEAgdm9pZCBDYXB0dXJlVHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nc192YXJ5aW5ncyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFy
YW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm0xdWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0
dXJlVW5pZm9ybTJ1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJh
bUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVVbmlmb3JtM3Vpdl92YWx1ZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJl
KTsKIHZvaWQgQ2FwdHVyZVVuaWZvcm00dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9y
bU1hdHJpeDJ4M2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJh
bUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4NGZ2X3ZhbHVlKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5p
Zm9ybU1hdHJpeDN4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpw
YXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDN4NGZ2X3ZhbHVlKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJl
VW5pZm9ybU1hdHJpeDR4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJl
ICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDR4M2Z2X3ZhbHVlKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX3BhcmFtcy5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMF9wYXJhbXMu
Y3BwCmluZGV4IGExOTFkMjZkMzVhMjc2MmEzOGI2OGNkZWYyZDk0ZDk5MDExOGJjOTQuLmUwZDI5
M2M4N2ViOTEyMjVkYjE0NWI3NTI2NGFmZjgyNTIwMzM5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18wX3BhcmFtcy5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18z
XzBfcGFyYW1zLmNwcApAQCAtMTU2LDcgKzE1Niw4IEBAIHZvaWQgQ2FwdHVyZURyYXdSYW5nZUVs
ZW1lbnRzX2luZGljZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJlRHJhd0VsZW1lbnRzX2luZGljZXMoZ2xTdGF0
ZSwgaXNDYWxsVmFsaWQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lk
IENhcHR1cmVHZW5RdWVyaWVzX2lkc1BhY2tlZChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTMy
MSw3ICszMjIsMzMgQEAgdm9pZCBDYXB0dXJlR2V0SW50ZXJuYWxmb3JtYXRpdl9wYXJhbXMoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAg
IC8vIEZyb20gdGhlIE9wZW5HTCBFUyAzLjAgc3BlYzoKKyAgICAvLworICAgIC8vIFRoZSBpbmZv
cm1hdGlvbiByZXRyaWV2ZWQgd2lsbCBiZSB3cml0dGVuIHRvIG1lbW9yeSBhZGRyZXNzZWQgYnkg
dGhlIHBvaW50ZXIgc3BlY2lmaWVkIGluCisgICAgLy8gcGFyYW1zLgorICAgIC8vCisgICAgLy8g
Tm8gbW9yZSB0aGFuIGJ1ZlNpemUgaW50ZWdlcnMgd2lsbCBiZSB3cml0dGVuIHRvIHRoaXMgbWVt
b3J5LgorICAgIC8vCisgICAgLy8gSWYgcG5hbWUgaXMgR0xfTlVNX1NBTVBMRV9DT1VOVFMsIHRo
ZSBudW1iZXIgb2Ygc2FtcGxlIGNvdW50cyB0aGF0IHdvdWxkIGJlIHJldHVybmVkIGJ5CisgICAg
Ly8gcXVlcnlpbmcgR0xfU0FNUExFUyB3aWxsIGJlIHJldHVybmVkIGluIHBhcmFtcy4KKyAgICAv
LworICAgIC8vIElmIHBuYW1lIGlzIEdMX1NBTVBMRVMsIHRoZSBzYW1wbGUgY291bnRzIHN1cHBv
cnRlZCBmb3IgaW50ZXJuYWxmb3JtYXQgYW5kIHRhcmdldCBhcmUgd3JpdHRlbgorICAgIC8vIGlu
dG8gcGFyYW1zIGluIGRlc2NlbmRpbmcgbnVtZXJpYyBvcmRlci4gT25seSBwb3NpdGl2ZSB2YWx1
ZXMgYXJlIHJldHVybmVkLgorICAgIC8vCisgICAgLy8gUXVlcnlpbmcgR0xfU0FNUExFUyB3aXRo
IGJ1ZlNpemUgb2Ygb25lIHdpbGwgcmV0dXJuIGp1c3QgdGhlIG1heGltdW0gc3VwcG9ydGVkIG51
bWJlciBvZgorICAgIC8vIHNhbXBsZXMgZm9yIHRoaXMgZm9ybWF0LgorCisgICAgaWYgKGJ1ZlNp
emUgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBhcmFtcykKKyAgICB7CisgICAg
ICAgIC8vIEZvciBHTF9OVU1fU0FNUExFX0NPVU5UUywgb25seSBvbmUgdmFsdWUgaXMgcmV0dXJu
ZWQKKyAgICAgICAgLy8gRm9yIEdMX1NBTVBMRVMsIHR3byB2YWx1ZXMgd2lsbCBiZSByZXR1cm5l
ZCwgdW5sZXNzIGJ1ZlNpemUgbGltaXRzIGl0IHRvIG9uZQorICAgICAgICB1aW50MzJfdCBwYXJh
bUNvdW50ID0gKHBuYW1lID09IEdMX1NBTVBMRVMgJiYgYnVmU2l6ZSA+IDEpID8gMiA6IDE7CisK
KyAgICAgICAgcGFyYW1DYXB0dXJlLT5yZWFkQnVmZmVyU2l6ZUJ5dGVzID0gc2l6ZW9mKEdMaW50
KSAqIHBhcmFtQ291bnQ7CisgICAgfQogfQogCiB2b2lkIENhcHR1cmVHZXRQcm9ncmFtQmluYXJ5
X2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTMzMyw3ICszNjAsMTAgQEAgdm9pZCBD
YXB0dXJlR2V0UHJvZ3JhbUJpbmFyeV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgIHBh
cmFtQ2FwdHVyZS0+cmVhZEJ1ZmZlclNpemVCeXRlcyA9IHNpemVvZihHTHNpemVpKTsKKyAgICB9
CiB9CiAKIHZvaWQgQ2FwdHVyZUdldFByb2dyYW1CaW5hcnlfYmluYXJ5Rm9ybWF0KGNvbnN0IFN0
YXRlICZnbFN0YXRlLApAQCAtMzQ1LDcgKzM3NSw3IEBAIHZvaWQgQ2FwdHVyZUdldFByb2dyYW1C
aW5hcnlfYmluYXJ5Rm9ybWF0KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmluYXJ5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHBhcmFtQ2FwdHVyZS0+cmVhZEJ1ZmZlclNpemVC
eXRlcyA9IHNpemVvZihHTGVudW0pOwogfQogCiB2b2lkIENhcHR1cmVHZXRQcm9ncmFtQmluYXJ5
X2JpbmFyeShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTM1Nyw3ICszODcsMjIgQEAgdm9pZCBD
YXB0dXJlR2V0UHJvZ3JhbUJpbmFyeV9iaW5hcnkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgLy8gSWYgd2UgaGF2ZSBsZW5ndGgsIHRoZW4gYWN0
dWFsIGJpbmFyeVNpemUgd2FzIHdyaXR0ZW4gdGhlcmUKKyAgICAvLyBPdGhlcndpc2UsIHdlIGRv
bid0IGtub3cgaG93IG1hbnkgYnl0ZXMgd2VyZSB3cml0dGVuCisgICAgaWYgKCFsZW5ndGgpCisg
ICAgeworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBHTHNpemVpIGJpbmFyeVNpemUgPSAqbGVuZ3RoOworICAgIGlmIChiaW5hcnlTaXplID4g
YnVmU2l6ZSkKKyAgICB7CisgICAgICAgIC8vIFRoaXMgaXMgYSBHTCBlcnJvciwgYnV0IGNsYW1w
IGl0IGFueXdheQorICAgICAgICBiaW5hcnlTaXplID0gYnVmU2l6ZTsKKyAgICB9CisKKyAgICBw
YXJhbUNhcHR1cmUtPnJlYWRCdWZmZXJTaXplQnl0ZXMgPSBiaW5hcnlTaXplOwogfQogCiB2b2lk
IENhcHR1cmVHZXRRdWVyeU9iamVjdHVpdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBA
IC01MTUsNyArNTYwLDcgQEAgdm9pZCBDYXB0dXJlR2V0VW5pZm9ybUluZGljZXNfdW5pZm9ybUlu
ZGljZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtdWl2X3Bh
cmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1
cmUgKnBhcmFtQ2FwdHVyZSkKIHsKQEAgLTY2OSw3ICs3MTQsNyBAQCB2b2lkIENhcHR1cmVUcmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzX3ZhcnlpbmdzKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2
b2lkIENhcHR1cmVVbmlmb3JtMXVpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpCkBAIC02NzksNyArNzI0LDcgQEAgdm9pZCBDYXB0dXJlVW5pZm9y
bTF1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm0y
dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkK
QEAgLTY4OSw3ICs3MzQsNyBAQCB2b2lkIENhcHR1cmVVbmlmb3JtMnVpdl92YWx1ZShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybTN1aXZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtNjk5LDcgKzc0NCw3IEBA
IHZvaWQgQ2FwdHVyZVVuaWZvcm0zdWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2
b2lkIENhcHR1cmVVbmlmb3JtNHVpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpCkBAIC03MDksNyArNzU0LDcgQEAgdm9pZCBDYXB0dXJlVW5pZm9y
bTR1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm1N
YXRyaXgyeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC03MjAsNyArNzY1
LDcgQEAgdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDJ4M2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogCiB2b2lkIENhcHR1cmVVbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlLApAQCAtNzMxLDcgKzc3Niw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm1N
YXRyaXgyeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5p
Zm9ybU1hdHJpeDN4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTc0Miw3
ICs3ODcsNyBAQCB2b2lkIENhcHR1cmVVbmlmb3JtTWF0cml4M3gyZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAKIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXgzeDRmdl92YWx1ZShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUsCkBAIC03NTMsNyArNzk4LDcgQEAgdm9pZCBDYXB0dXJlVW5p
Zm9ybU1hdHJpeDN4NGZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogCiB2b2lkIENhcHR1
cmVVbmlmb3JtTWF0cml4NHgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAt
NzY0LDcgKzgwOSw3IEBAIHZvaWQgQ2FwdHVyZVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogdm9pZCBDYXB0dXJlVW5pZm9ybU1hdHJpeDR4M2Z2X3ZhbHVl
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4uY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzFfYXV0b2dlbi5j
cHAKaW5kZXggNjJjYmE2NmY4NDkzNGJjNDk1ZDI3MTgyYzI0YjJhN2IwYmE2M2YwZi4uNTYwYzU5
YTU1NDU1ZmJhYjhjYmJlMGY5YTc0ZWY3N2M3M2MzY2VjYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzFfYXV0b2dlbi5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18z
XzFfYXV0b2dlbi5jcHAKQEAgLTU2OCwxMyArNTY4LDEzIEBAIENhbGxDYXB0dXJlIENhcHR1cmVN
ZW1vcnlCYXJyaWVyQnlSZWdpb24oY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0xZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCkKIHsK
ICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dy
YW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25Q
YWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpU
R0xmbG9hdCwgdjApOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQ
cm9ncmFtVW5pZm9ybTFmLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTU4MywyMCArNTgz
LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFmKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWZ2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1C
dWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwg
UGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlv
bik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJh
bVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAog
ICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRD
b25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25z
dFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1V
bmlmb3JtMWZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
dmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWZ2X3ZhbHVlKGdsU3RhdGUs
IGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVy
biBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xZnYsIHN0ZDo6bW92
ZShwYXJhbUJ1ZmZlcikpOwpAQCAtNjA1LDEzICs2MDUsMTMgQEAgQ2FsbENhcHR1cmUgQ2FwdHVy
ZVByb2dyYW1Vbmlmb3JtMWZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtMWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwKQogewogICAg
IFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBh
Y2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5
cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxv
Y2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tl
ZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGlu
dCwgdjApOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFt
VW5pZm9ybTFpLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTYyMCwyMCArNjIwLDIwIEBA
IENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFpKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWl2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwog
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpU
VW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJh
bUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRl
cik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIHZh
bHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWl2X3Zh
bHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7
CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVy
ZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xaXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZl
cikpOwpAQCAtNjQyLDEzICs2NDIsMTMgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtMWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1V
bmlmb3JtMXVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCkKIHsKICAgICBQYXJh
bUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBy
b2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQp
OwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2
MCk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlm
b3JtMXVpLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTY1NywyMCArNjU3LDIwIEBAIENh
bGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTF1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTF1aXYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBh
cmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24p
OworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAg
ICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTHVpbnRDb25z
dFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9p
bnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm0xdWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZh
bHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTF1aXZfdmFsdWUoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAg
cGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVy
biBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xdWl2LCBzdGQ6Om1v
dmUocGFyYW1CdWZmZXIpKTsKQEAgLTY3OSwxNCArNjc5LDE0IEBAIENhbGxDYXB0dXJlIENhcHR1
cmVQcm9ncmFtVW5pZm9ybTF1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0yZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEpCiB7CiAgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJw
cm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2Vk
KTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxvYXQs
IHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdM
ZmxvYXQsIHYxKTsKIApAQCAtNjk2LDIwICs2OTYsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtMmYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm0yZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQs
IHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9u
IiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9j
YXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0o
InZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFt
VmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFt
LnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yZnZfdmFsdWUoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm0yZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1v
dmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpQcm9ncmFtVW5pZm9ybTJmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC03MTgsMTQg
KzcxOCwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yZnYoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yaShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB2MSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQ
cm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYw
IiwgUGFyYW1UeXBlOjpUR0xpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJ2MSIsIFBhcmFtVHlwZTo6VEdMaW50LCB2MSk7CiAKQEAgLTczNSwyMCArNzM1LDIwIEBAIENh
bGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2KGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAg
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5p
Zm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNh
cHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlcik7
CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIHZhbHVl
LCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2X3ZhbHVl
KGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7Cisg
ICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRk
UGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShn
bDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0yaXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikp
OwpAQCAtNzU3LDE0ICs3NTcsMTQgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
Mml2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtMnVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFy
YW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2Vk
IiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2Nh
dGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMdWludCwgdjApOwogICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2MSk7CiAK
QEAgLTc3NCwyMCArNzc0LDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJ1
aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9y
bTJ1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewog
ICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3Jh
bVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJh
bVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBh
Y2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6
OlRHTHNpemVpLCBjb3VudCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUi
LCBQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBh
cmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsK
LSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTJ1aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZh
bHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6UHJv
Z3JhbVVuaWZvcm0ydWl2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTc5Niw3ICs3OTYs
NyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWl2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2YoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2
MikKQEAgLTgwNCw3ICs4MDQsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0z
Zihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAog
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6
OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVu
aWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjEpOwogICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgdjIpOwpAQCAtODE1
LDIwICs4MTUsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2YoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zZnYoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZl
ciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291
bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpU
R0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xm
bG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm0zZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zZnZfdmFsdWUo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsICZ2YWx1ZVBhcmFt
KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAg
ICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybTNmdiwg
c3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC04MzcsNyArODM3LDcgQEAgQ2FsbENhcHR1cmUg
Q2FwdHVyZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1
cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2koY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MikKQEAgLTg0NSw3ICs4NDUsNyBAQCBD
YWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zaShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dy
YW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25Q
YWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIHYwKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MSIsIFBhcmFtVHlw
ZTo6VEdMaW50LCB2MSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjIiLCBQYXJh
bVR5cGU6OlRHTGludCwgdjIpOwpAQCAtODU2LDIwICs4NTYsMjAgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtM2koY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0zaXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
dmFsdWUpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3Jh
bUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2Nh
dGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIs
IFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBh
cmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMaW50Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFy
YW1WYWx1ZShQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFt
LnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zaXZfdmFsdWUoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm0zaXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1v
dmUodmFsdWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpQcm9ncmFtVW5pZm9ybTNpdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC04NzgsNyAr
ODc4LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2l2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM3VpKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHYyKQpAQCAtODg2LDcgKzg4Niw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTN1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1
ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9u
KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2MCk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIHYxKTsKICAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMdWludCwgdjIpOwpA
QCAtODk3LDIwICs4OTcsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM3Vp
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
M3Vpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAg
ICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFt
UGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFt
VHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
bG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFj
a2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6
VEdMc2l6ZWksIGNvdW50KTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIs
IFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFy
YW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwot
ICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aXZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtM3Vpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFs
dWVQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9n
cmFtVW5pZm9ybTN1aXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtOTE5LDcgKzkxOSw3
IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTN1aXYoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00Zihjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYy
LApAQCAtOTI4LDcgKzkyOCw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRm
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAg
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5p
Zm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCB2MCk7CiAgICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCB2MSk7CiAgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgidjIiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCB2Mik7CkBAIC05NDAs
MjAgKzk0MCwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00Zihjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRmdihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIFBhcmFtQnVmZmVy
IHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
bG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2Vk
IiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3Vu
dCk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRH
TGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZs
b2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybTRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRmdl92YWx1ZShn
bFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgJnZhbHVlUGFyYW0p
OwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAg
ICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtNGZ2LCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTk2Miw3ICs5NjIsNyBAQCBDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm00ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVy
ZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyLApAQCAtOTcxLDcgKzk3MSw3IEBAIENh
bGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3Jh
bVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJh
bVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
ImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBh
Y2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRH
TGludCwgdjApOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInYxIiwgUGFyYW1UeXBl
OjpUR0xpbnQsIHYxKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFt
VHlwZTo6VEdMaW50LCB2Mik7CkBAIC05ODMsMjAgKzk4MywyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm00aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENh
cHR1cmVQcm9ncmFtVW5pZm9ybTRpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2
YWx1ZSkKIHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFt
SUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0
aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwg
bG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50Iiwg
UGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFy
YW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJh
bVZhbHVlKFBhcmFtVHlwZTo6VEdMaW50Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0u
dmFsdWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRpdl92YWx1ZShnbFN0YXRlLCBpc0Nh
bGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9n
cmFtVW5pZm9ybTRpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92
ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6
OlByb2dyYW1Vbmlmb3JtNGl2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTEwMDUsNyAr
MTAwNSw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRpdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1aShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCB2MiwKQEAgLTEwMTQsNyArMTAxNCw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9n
cmFtVW5pZm9ybTR1aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJh
bUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQi
LCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0
aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBh
cmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCB2MCk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIHYxKTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMdWludCwgdjIp
OwpAQCAtMTAyNiwyMCArMTAyNiwyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm00dWkoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVu
aWZvcm00dWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkK
IHsKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHBy
b2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRp
b25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1U
eXBlOjpUR0xzaXplaSwgY291bnQpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZh
bHVlIiwgUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1
ZShQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1
ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtNHVpdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxW
YWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0dXJlUHJvZ3Jh
bVVuaWZvcm00dWl2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92
ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6
OlByb2dyYW1Vbmlmb3JtNHVpdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0xMDQ4LDcg
KzEwNDgsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00dWl2KGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTEwNTYsMTMgKzEwNTYsMTMgQEAgQ2Fs
bENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwg
cHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24i
LCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2Nh
dGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiY291bnQiLCBQYXJh
bVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
dHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0cmFuc3Bvc2UpOwogCiAgICAgUGFy
YW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9p
bnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRl
ciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgyZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBjb3VudCwKKyAgICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZfdmFsdWUoZ2xT
dGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1
ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1
ZVBhcmFtKSk7CiAKQEAgLTEwNzIsNyArMTA3Miw3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9n
cmFtVW5pZm9ybU1hdHJpeDJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENh
cHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKQpAQCAtMTA4MCwxNCArMTA4MCwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQ
YXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNr
ZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBl
OjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2Nh
dGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQp
OwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xz
aXplaSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIs
IFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2
YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAg
IEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAm
dmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnZf
dmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2Us
IHZhbHVlLCAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mngz
ZnZfdmFsdWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0o
c3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50
cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVy
KSk7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQpAQCAtMTEwNCwxNCArMTEwNCwxNCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1
ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dy
YW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwot
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xp
bnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwg
Y291bnQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFt
VHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNwb3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBh
cmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQ
YXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQ
YXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVl
LCAmdmFsdWVQYXJhbSk7CisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZfdmFs
dWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjpt
b3ZlKHZhbHVlUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2lu
dDo6UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBA
IC0xMTIwLDcgKzExMjAsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0xMTI4LDEz
ICsxMTI4LDEzIEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZv
cm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgY291bnQpOwogICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgdHJhbnNw
b3NlKTsKIAogICAgIFBhcmFtQ2FwdHVyZSB2YWx1ZVBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6
VEdMZmxvYXRDb25zdFBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdM
ZmxvYXRDb25zdFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVy
ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0
cml4M2Z2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJh
bShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBDYWxsQ2Fw
dHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTExNTIsMTQgKzExNTIsMTQgQEAg
Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3Jh
bUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2Nh
dGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIs
IFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAg
ICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29u
c3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQ
b2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybU1hdHJpeDN4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4MmZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2Fs
bENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYsIHN0ZDo6
bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxs
Q2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTExNzYsMTQgKzExNzYsMTQgQEAgQ2FsbENh
cHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBw
cm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIs
IFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0
aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFt
VHlwZTo6VEdMc2l6ZWksIGNvdW50KTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0
cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJh
bUNhcHR1cmUgdmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2lu
dGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVy
LCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1h
dHJpeDN4NGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOworICAgIENhcHR1cmVQcm9ncmFtVW5pZm9y
bU1hdHJpeDN4NGZ2X3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwgJnZhbHVlUGFyYW0pOwogICAgIHBhcmFtQnVmZmVy
LmFkZFBhcmFtKHN0ZDo6bW92ZSh2YWx1ZVBhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1
cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYsIHN0ZDo6bW92ZShw
YXJhbUJ1ZmZlcikpOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVy
ZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKQpAQCAtMTIwMCwxMyArMTIwMCwxMyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVu
aWZvcm1NYXRyaXg0ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1CdWZmZXIgcGFy
YW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2Vk
IiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2Nh
dGlvbik7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGNvdW50KTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRH
TGJvb2xlYW4sIHRyYW5zcG9zZSk7CiAKICAgICBQYXJhbUNhcHR1cmUgdmFsdWVQYXJhbSgidmFs
dWUiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1
ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFs
dWUpOwotICAgIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdl92YWx1ZShnbFN0YXRlLCBp
c0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDRmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlLCAmdmFsdWVQYXJhbSk7CiAgICAgcGFy
YW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHZhbHVlUGFyYW0pKTsKIApAQCAtMTIxNiw3ICsx
MjE2LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4
NHgyZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0xMjI0
LDE0ICsxMjI0LDE0IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwog
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpU
VW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFs
dWVQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0
cmFuc3Bvc2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1U
eXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
OjpUR0xmbG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxp
ZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAg
ICBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxW
YWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBh
cmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwog
CiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybU1h
dHJpeDR4MmZ2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBA
IENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0xMjQ4LDE0ICsx
MjQ4LDE0IEBAIENhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9y
bUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBjb3VudCk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCB0cmFuc3Bv
c2UpOwogCiAgICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpU
R0xmbG9hdENvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xm
bG9hdENvbnN0UG9pbnRlciwgdmFsdWUsICZ2YWx1ZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJl
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsKKyAgICBDYXB0
dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdl92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsICZ2YWx1ZVBhcmFtKTsK
ICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUodmFsdWVQYXJhbSkpOwogCiAgICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
M2Z2LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4uaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18xX2F1dG9nZW4u
aAppbmRleCBmYWI0ZTY0NmEwOGNmMjA2MWYyN2M1M2E3NzUzZjEyMWY2MGM3YWQ3Li4yMmM1NGUy
MzRkNTk1MGFhMzM3ZjJlNTNlN2Q4ZTllYzI0OTE3NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMV9hdXRvZ2VuLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzFf
YXV0b2dlbi5oCkBAIC0xNjQsMTE1ICsxNjQsMTE1IEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlTWVtb3J5QmFycmllckJ5UmVnaW9uKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNh
bGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjApOwogYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xaShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCk7CiBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWl2KGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjApOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTF1
aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0yZihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1
cmVQcm9ncmFtVW5pZm9ybTJmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yaShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSk7CiBhbmdsZTo6Q2FsbENhcHR1
cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKIGFu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWkoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSk7CiBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMnVpdihjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTNmKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHYyKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0z
ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVy
ZVByb2dyYW1Vbmlmb3JtM2koY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdjIpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTNpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtM3VpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2Mik7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtM3Vpdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwog
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRmKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyLApAQCAtMjgw
LDEzICsyODAsMTMgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRm
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTRmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVy
ZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB2MiwKQEAgLTI5NCwxMyArMjk0LDEzIEBAIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00aXYoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1
aShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjIsCkBAIC0zMDgsNjkgKzMwOCw2OSBAQCBhbmdsZTo6Q2FsbENhcHR1cmUgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtNHVpKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgy
ZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtTWF0cml4MngzZnYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
IGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1
cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1h
dHJpeDR4MmZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBhbmdsZTo6Q2Fs
bENhcHR1cmUgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKQEAgLTU3MCw5MSArNTcwLDkxIEBAIHZvaWQgQ2FwdHVyZUdl
dFRleExldmVsUGFyYW1ldGVyaXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0xZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJh
bUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFpdl92
YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2
b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTF1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFy
YW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2X3ZhbHVlKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtMnVpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
dmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFt
Q2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtM2Z2X3Zh
bHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwog
dm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zaXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0z
dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJh
bUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00ZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybTRpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUg
KnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1aXZfdmFsdWUoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2
b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSwKQEAgLTY2Miw3ICs2NjIsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlm
b3JtTWF0cml4MngzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwK
QEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2
X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgyeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAt
Njc4LDcgKzY3OCw3IEBAIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZfdmFs
dWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lk
IENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnZfdmFsdWUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIENhcHR1
cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
dm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgQ2FwdHVyZVBy
b2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lk
IENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSwKQEAgLTcxMCw3ICs3MTAsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDRm
dl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
TWF0cml4NHgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAg
LTcxOCw3ICs3MTgsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2X3Zh
bHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18z
XzFfcGFyYW1zLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0
dXJlX2dsZXNfM18xX3BhcmFtcy5jcHAKaW5kZXggMWRhMDNlYjQzMjg5OWY3NjZiYmVlMmFhODMy
ZGUwMjJkZWM3ZWIzZC4uMzJmYWY3OWY4OGU2OTI3MDUxMjk3NzQxZDRjMmIzNmRhN2E3MTU5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVf
Z2xlc18zXzFfcGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvY2FwdHVyZV9nbGVzXzNfMV9wYXJhbXMuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9p
ZCBDYXB0dXJlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTFmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJl
ICpwYXJhbUNhcHR1cmUpCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVu
aWZvcm0xZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFt
VW5pZm9ybTFpdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMjcxLDcg
KzI3MSw3IEBAIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMWl2X3ZhbHVlKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0xdWl2X3ZhbHVlKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIENh
cHR1cmVQcm9ncmFtVW5pZm9ybTF1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lk
IENhcHR1cmVQcm9ncmFtVW5pZm9ybTJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNh
cHR1cmUpCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0yZnZf
dmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTJp
dl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMzA0LDcgKzMwNCw3IEBA
IHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtMml2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0ydWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNh
cHR1cmUgKnBhcmFtQ2FwdHVyZSkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIENhcHR1cmVQcm9n
cmFtVW5pZm9ybTJ1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQ
cm9ncmFtVW5pZm9ybTNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBA
IC0zMjYsNyArMzI2LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm0zZnZfdmFsdWUoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTNpdl92YWx1ZShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtM2l2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlUHJvZ3JhbVVuaWZvcm0zdWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBh
cmFtQ2FwdHVyZSkKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9y
bTN1aXZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5p
Zm9ybTRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCkBAIC0zNTksNyAr
MzU5LDcgQEAgdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm00ZnZfdmFsdWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTRpdl92YWx1ZShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKQpAQCAtMzcwLDcgKzM3MCw3IEBAIHZvaWQgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtNGl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJv
Z3JhbVVuaWZvcm00dWl2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVy
ZSkKQEAgLTM4MSw3ICszODEsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybTR1aXZfdmFs
dWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJp
eDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIENhcHR1cmVQcm9n
cmFtVW5pZm9ybU1hdHJpeDJmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2Fw
dHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSwKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4
M2Z2X3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAtNDE3LDcgKzQx
Nyw3IEBAIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZfdmFsdWUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdl92YWx1
ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSwKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9y
bU1hdHJpeDNmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dy
YW1Vbmlmb3JtTWF0cml4M3gyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTQ0
MSw3ICs0NDEsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2X3ZhbHVl
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXgz
eDRmdl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZv
aWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnZfdmFsdWUoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdl92YWx1ZShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSwKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDRm
dl92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZVByb2dyYW1Vbmlmb3Jt
TWF0cml4NHgyZnZfdmFsdWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSwKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCB2b2lkIENhcHR1cmVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2X3ZhbHVlKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdl92YWx1
ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJfYXV0b2dlbi5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9hdXRvZ2VuLmNw
cAppbmRleCBjNGRlZjkzYjVmMWZjNmNjZjhiNTQwZThiODE0ZjZlZGUyNGUwMTRmLi4yMGE1ZmIy
NTI5ZGVmZmMzNmE3YmNiOWE0YWI5M2VkMDI1MjAyNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9hdXRvZ2VuLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNf
Ml9hdXRvZ2VuLmNwcApAQCAtNTY5LDIwICs1NjksMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdl
dFRleFBhcmFtZXRlckl1aXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0
dXJlR2V0blVuaWZvcm1mdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFt
QnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIs
IFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRp
b24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFy
YW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgiYnVmU2l6ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGJ1ZlNpemUp
OwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRH
TGZsb2F0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdFBv
aW50ZXIsIHBhcmFtcywgJnBhcmFtc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZv
cm1mdl9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBidWZTaXplLCBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJh
bXNQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlmb3JtZnZfcGFyYW1zKGdsU3RhdGUsIGlzQ2Fs
bFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENh
bGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZXRuVW5pZm9ybWZ2LCBzdGQ6Om1vdmUocGFyYW1C
dWZmZXIpKTsKQEAgLTU5MSwyMCArNTkxLDIwIEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRuVW5p
Zm9ybWZ2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlm
b3JtaXYoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpU
U2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJidWZTaXplIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgYnVmU2l6ZSk7CiAKICAgICBQYXJh
bUNhcHR1cmUgcGFyYW1zUGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMaW50UG9pbnRlcik7
CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyLCBwYXJhbXMsICZw
YXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3JtaXZfcGFyYW1zKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1z
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyYW1zUGFyYW0pOworICAgIENh
cHR1cmVHZXRuVW5pZm9ybWl2X3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShz
dGQ6Om1vdmUocGFyYW1zUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50
cnlQb2ludDo6R2V0blVuaWZvcm1pdiwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC02MTMs
MjAgKzYxMywyMCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1pdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVHZXRuVW5pZm9ybXVpdihjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpwYXJhbXMpCiB7CiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CiAKICAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJv
Z3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7CisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWZT
aXplIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgYnVmU2l6ZSk7CiAKICAgICBQYXJhbUNhcHR1cmUg
cGFyYW1zUGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMdWludFBvaW50ZXIpOwogICAgIElu
aXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMdWludFBvaW50ZXIsIHBhcmFtcywgJnBhcmFtc1Bh
cmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZvcm11aXZfcGFyYW1zKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtc1BhcmFtKTsKKyAgICBDYXB0dXJl
R2V0blVuaWZvcm11aXZfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6
Om1vdmUocGFyYW1zUGFyYW0pKTsKIAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQ
b2ludDo6R2V0blVuaWZvcm11aXYsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJf
YXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVf
Z2xlc18zXzJfYXV0b2dlbi5oCmluZGV4IDM4ODg1NmIwZWJkZWJiYzc1MzRkYTQxNDE4NTBiYTVi
ODc1MjIxNzcuLmYwMTRhY2E3MjFhOGFmNzM4NzBlZmNiMTBiYmM2NzZkYzVhODQzNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNf
M18yX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Y2FwdHVyZV9nbGVzXzNfMl9hdXRvZ2VuLmgKQEAgLTE3NywxOSArMTc3LDE5IEBAIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlR2V0VGV4UGFyYW1ldGVySXVpdihjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1mdihjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKIGFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1pdihjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdl
dG5Vbmlmb3JtdWl2KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUlzRW5hYmxlZGko
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC00NjksMjEgKzQ2OSwyMSBAQCB2b2lkIENhcHR1cmVH
ZXRUZXhQYXJhbWV0ZXJJdWl2X3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2Fw
dHVyZUdldG5Vbmlmb3JtZnZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwogdm9p
ZCBDYXB0dXJlR2V0blVuaWZvcm1pdl9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwog
dm9pZCBDYXB0dXJlR2V0blVuaWZvcm11aXZfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJh
bUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2NhcHR1cmVfZ2xlc18zXzJfcGFyYW1zLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfM18yX3BhcmFtcy5jcHAKaW5kZXggY2JkODg3NzUw
ZjFjODJhMmRjNGZmYjE0ZmM0MmZhZDlkOGFmYjg5ZC4uNmEzOTFhNzJjNzkzMjkzMGVmM2RjNmZi
ZjYyNWZkMGVkNmM2MDExMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzJfcGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzXzNfMl9wYXJhbXMuY3BwCkBAIC0y
ODYsNyArMjg2LDcgQEAgdm9pZCBDYXB0dXJlR2V0VGV4UGFyYW1ldGVySXVpdl9wYXJhbXMoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2X3BhcmFtcyhjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbXNQYXJh
bSkKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2X3BhcmFtcyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtaXZfcGFyYW1zKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbXNQYXJh
bSkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWl2X3BhcmFtcyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2X3BhcmFtcyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpw
YXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpw
YXJhbXNQYXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5jcHAKaW5kZXggNzYxZWU1
ZmU1MmRhYmUxNzNiOGFkODk1MjZhNjY2Nzg3Yjg3MTRhYS4uMmVlNTI3YmY5Zjc0Njk3OTBjNjRi
NzIzY2E4M2NkOTRhZjMzOGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5jcHAK
QEAgLTQwNCw2ICs0MDQsMjMgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZVZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6
OkVudHJ5UG9pbnQ6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7CiB9CiAKK0NhbGxDYXB0dXJlIENhcHR1cmVJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVB
TkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIFBhcmFtQnVm
ZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibWVtb3J5
UGFja2VkIiwgUGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SUQsIG1lbW9yeVBhY2tlZCk7CisgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgic2l6ZSIsIFBhcmFtVHlwZTo6VEdMdWludDY0LCBz
aXplKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJoYW5kbGVUeXBlUGFja2VkIiwg
UGFyYW1UeXBlOjpUSGFuZGxlVHlwZSwgaGFuZGxlVHlwZVBhY2tlZCk7CisgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgiaGFuZGxlIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBoYW5kbGUpOwor
CisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpJbXBvcnRNZW1vcnlaaXJj
b25IYW5kbGVBTkdMRSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKIENhbGxDYXB0dXJl
IENhcHR1cmVNdWx0aURyYXdBcnJheXNBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBh
Y2tlZCwKQEAgLTg2Nyw3ICs4ODQsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VGV4UGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1
cmVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKQEAgLTg3NSwx
OSArODkyLDE5IEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVl
UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZv
cm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBidWZTaXplKTsKIAogICAgIFBhcmFt
Q2FwdHVyZSBsZW5ndGhQYXJhbSgibGVuZ3RoIiwgUGFyYW1UeXBlOjpUR0xzaXplaVBvaW50ZXIp
OwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyLCBsZW5ndGgs
ICZsZW5ndGhQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xF
X2xlbmd0aChnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgs
IHBhcmFtcywgJmxlbmd0aFBhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5H
TEVfbGVuZ3RoKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFt
KHN0ZDo6bW92ZShsZW5ndGhQYXJhbSkpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBhcmFtc1BhcmFt
KCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFs
dWUoUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIsIHBhcmFtcywgJnBhcmFtc1BhcmFtLnZhbHVl
KTsKLSAgICBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGdsU3RhdGUsIGlz
Q2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFy
YW0pOworICAgIENhcHR1cmVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMsICZw
YXJhbXNQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhcmFtc1Bh
cmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdldFVuaWZv
cm1mdlJvYnVzdEFOR0xFLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTg5Niw3ICs5MTMs
NyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKQpAQCAtOTA0LDE5ICs5MjEsMTkgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
cHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tl
ZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6
OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7
CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiYnVmU2l6ZSIsIFBhcmFtVHlwZTo6VEdM
c2l6ZWksIGJ1ZlNpemUpOwogCiAgICAgUGFyYW1DYXB0dXJlIGxlbmd0aFBhcmFtKCJsZW5ndGgi
LCBQYXJhbVR5cGU6OlRHTHNpemVpUG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1U
eXBlOjpUR0xzaXplaVBvaW50ZXIsIGxlbmd0aCwgJmxlbmd0aFBhcmFtLnZhbHVlKTsKLSAgICBD
YXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGdsU3RhdGUsIGlzQ2FsbFZhbGlk
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOworICAg
IENhcHR1cmVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxsVmFs
aWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMsICZsZW5ndGhQYXJh
bSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKGxlbmd0aFBhcmFtKSk7CiAK
ICAgICBQYXJhbUNhcHR1cmUgcGFyYW1zUGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMaW50
UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyLCBw
YXJhbXMsICZwYXJhbXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldFVuaWZvcm1pdlJvYnVz
dEFOR0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
ZW5ndGgsIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybWl2Um9i
dXN0QU5HTEVfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFk
ZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJl
KGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSwgc3RkOjptb3ZlKHBhcmFt
QnVmZmVyKSk7CkBAIC0xNjAzLDcgKzE2MjAsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VmVy
dGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1
cmUgQ2FwdHVyZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBh
cmFtcykKQEAgLTE2MTEsMTkgKzE2MjgsMTkgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldFVuaWZv
cm11aXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBw
YXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxv
Y2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIs
IFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBidWZT
aXplKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBsZW5ndGhQYXJhbSgibGVuZ3RoIiwgUGFyYW1UeXBl
OjpUR0xzaXplaVBvaW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMc2l6
ZWlQb2ludGVyLCBsZW5ndGgsICZsZW5ndGhQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldFVu
aWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOworICAgIENhcHR1cmVH
ZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVfbGVuZ3RoKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJmxlbmd0aFBhcmFtKTsKICAg
ICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUobGVuZ3RoUGFyYW0pKTsKIAogICAgIFBh
cmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0x1aW50UG9pbnRl
cik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0x1aW50UG9pbnRlciwgcGFyYW1z
LCAmcGFyYW1zUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5H
TEVfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGgsIHBhcmFtcywgJnBhcmFtc1BhcmFtKTsKKyAgICBDYXB0dXJlR2V0VW5pZm9ybXVpdlJvYnVz
dEFOR0xFX3BhcmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm
U2l6ZSwgbGVuZ3RoLCBwYXJhbXMsICZwYXJhbXNQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRk
UGFyYW0oc3RkOjptb3ZlKHBhcmFtc1BhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUo
Z2w6OkVudHJ5UG9pbnQ6OkdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSwgc3RkOjptb3ZlKHBhcmFt
QnVmZmVyKSk7CkBAIC0yMTE0LDcgKzIxMzEsNyBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlUmVhZG5Q
aXhlbHNSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1
cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQpA
QCAtMjEyMiwxOSArMjEzOSwxOSBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVm
ZmVyOwogCiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBh
cmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24p
OworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiYnVmU2l6ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGJ1ZlNpemUpOwog
CiAgICAgUGFyYW1DYXB0dXJlIGxlbmd0aFBhcmFtKCJsZW5ndGgiLCBQYXJhbVR5cGU6OlRHTHNp
emVpUG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xzaXplaVBvaW50
ZXIsIGxlbmd0aCwgJmxlbmd0aFBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZvcm1m
dlJvYnVzdEFOR0xFX2xlbmd0aChnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoLCBwYXJhbXMsICZsZW5ndGhQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlm
b3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOwogICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShsZW5ndGhQYXJhbSkpOwogCiAgICAgUGFyYW1DYXB0
dXJlIHBhcmFtc1BhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlcik7CiAg
ICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIsIHBhcmFtcywgJnBh
cmFtc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFX3Bh
cmFtcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBw
YXJhbXMsICZwYXJhbXNQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdM
RV9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUs
IGxlbmd0aCwgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFt
KHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZl
cikpOwpAQCAtMjE0Myw3ICsyMTYwLDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3Jt
ZnZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVH
ZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKQEAgLTIx
NTEsMTkgKzIxNjgsMTkgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
IAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6
VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBidWZTaXplKTsKIAogICAg
IFBhcmFtQ2FwdHVyZSBsZW5ndGhQYXJhbSgibGVuZ3RoIiwgUGFyYW1UeXBlOjpUR0xzaXplaVBv
aW50ZXIpOwogICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyLCBs
ZW5ndGgsICZsZW5ndGhQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRV9sZW5ndGgoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOworICAgIENhcHR1cmVHZXRuVW5pZm9ybWl2
Um9idXN0QU5HTEVfbGVuZ3RoKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcywgJmxlbmd0aFBhcmFtKTsKICAgICBwYXJhbUJ1ZmZl
ci5hZGRQYXJhbShzdGQ6Om1vdmUobGVuZ3RoUGFyYW0pKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBw
YXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyKTsKICAgICBJbml0
UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGludFBvaW50ZXIsIHBhcmFtcywgJnBhcmFtc1BhcmFt
LnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFX3BhcmFtcyhnbFN0
YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBwYXJhbXMsICZw
YXJhbXNQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRV9wYXJhbXMo
Z2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zLCAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92
ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50
OjpHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwpAQCAt
MjE3Miw3ICsyMTg5LDcgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIENhbGxDYXB0dXJlIENhcHR1cmVHZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKQEAgLTIx
ODAsMTkgKzIxOTcsMTkgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9idXN0
QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CiAKICAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1U
eXBlOjpUU2hhZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7Cisg
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIGxvY2F0aW9uUGFja2VkKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJidWZTaXplIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgYnVmU2l6ZSk7CiAKICAg
ICBQYXJhbUNhcHR1cmUgbGVuZ3RoUGFyYW0oImxlbmd0aCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWlQ
b2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHNpemVpUG9pbnRlciwg
bGVuZ3RoLCAmbGVuZ3RoUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVHZXRuVW5pZm9ybXVpdlJv
YnVzdEFOR0xFX2xlbmd0aChnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOworICAgIENhcHR1cmVHZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFX2xlbmd0aChnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zLCAmbGVuZ3RoUGFyYW0pOwogICAgIHBhcmFt
QnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShsZW5ndGhQYXJhbSkpOwogCiAgICAgUGFyYW1DYXB0
dXJlIHBhcmFtc1BhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTHVpbnRQb2ludGVyKTsKICAg
ICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnRQb2ludGVyLCBwYXJhbXMsICZwYXJh
bXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVfcGFy
YW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBw
YXJhbXMsICZwYXJhbXNQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5H
TEVfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMsICZwYXJhbXNQYXJhbSk7CiAgICAgcGFyYW1CdWZmZXIuYWRkUGFy
YW0oc3RkOjptb3ZlKHBhcmFtc1BhcmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6
OkVudHJ5UG9pbnQ6OkdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUsIHN0ZDo6bW92ZShwYXJhbUJ1
ZmZlcikpOwpAQCAtMjQ4OSw2ICsyNTA2LDIxIEBAIENhbGxDYXB0dXJlIENhcHR1cmVHZXRRdWVy
eU9iamVjdHVpNjR2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgcmV0dXJu
IENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5H
TEUsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwogfQogCitDYWxsQ2FwdHVyZSBDYXB0dXJlSW1w
b3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBoYW5kbGUpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJh
bUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJzZW1hcGhvcmVQYWNrZWQiLCBQYXJhbVR5cGU6OlRTZW1h
cGhvcmVJRCwgc2VtYXBob3JlUGFja2VkKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFt
KCJoYW5kbGVUeXBlUGFja2VkIiwgUGFyYW1UeXBlOjpUSGFuZGxlVHlwZSwgaGFuZGxlVHlwZVBh
Y2tlZCk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiaGFuZGxlIiwgUGFyYW1UeXBl
OjpUR0x1aW50LCBoYW5kbGUpOworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBv
aW50OjpJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRSwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7Cit9CisKIENhbGxDYXB0dXJlIENhcHR1cmVUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLApAQCAtMjY1MywxOCArMjY4
NSwxOCBAQCBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogQ2FsbENhcHR1cmUgQ2FwdHVyZUJpbmRVbmlmb3JtTG9j
YXRpb25DSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAg
ICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFy
YW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1Q
YWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1U
eXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNr
ZWQpOwogCiAgICAgUGFyYW1DYXB0dXJlIG5hbWVQYXJhbSgibmFtZSIsIFBhcmFtVHlwZTo6VEdM
Y2hhckNvbnN0UG9pbnRlcik7CiAgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xjaGFy
Q29uc3RQb2ludGVyLCBuYW1lLCAmbmFtZVBhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlQmluZFVu
aWZvcm1Mb2NhdGlvbkNIUk9NSVVNX25hbWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbmFtZVBhcmFtKTsKKyAgICBDYXB0dXJlQmluZFVuaWZvcm1Mb2NhdGlvbkNI
Uk9NSVVNX25hbWUoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1l
LCAmbmFtZVBhcmFtKTsKICAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUobmFtZVBh
cmFtKSk7CiAKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkJpbmRVbmlm
b3JtTG9jYXRpb25DSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CkBAIC0yNzY1LDM2
ICsyNzk3LDYgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVN
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQ
b2ludDo6Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikp
OwogfQogCi1DYWxsQ2FwdHVyZSBDYXB0dXJlTWF0cml4TG9hZGZDSFJPTUlVTShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbWF0cml4TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKm1hdHJpeCkKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQot
ICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgibWF0cml4TW9kZSIsIEdMZW51bUdyb3VwOjpE
ZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0cml4TW9kZSk7Ci0KLSAgICBQYXJhbUNhcHR1cmUgbWF0cml4UGFyYW0oIm1hdHJp
eCIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVl
KFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIG1hdHJpeCwgJm1hdHJpeFBhcmFtLnZh
bHVlKTsKLSAgICBDYXB0dXJlTWF0cml4TG9hZGZDSFJPTUlVTV9tYXRyaXgoZ2xTdGF0ZSwgaXND
YWxsVmFsaWQsIG1hdHJpeE1vZGUsIG1hdHJpeCwgJm1hdHJpeFBhcmFtKTsKLSAgICBwYXJhbUJ1
ZmZlci5hZGRQYXJhbShzdGQ6Om1vdmUobWF0cml4UGFyYW0pKTsKLQotICAgIHJldHVybiBDYWxs
Q2FwdHVyZShnbDo6RW50cnlQb2ludDo6TWF0cml4TG9hZGZDSFJPTUlVTSwgc3RkOjptb3ZlKHBh
cmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVNYXRyaXhMb2FkSWRlbnRpdHlD
SFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXRyaXhNb2RlKQotewotICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJt
YXRyaXhNb2RlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRyaXhNb2RlKTsKLQotICAgIHJldHVy
biBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0s
IHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCiBDYWxsQ2FwdHVyZSBDYXB0dXJlTG9zZUNv
bnRleHRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHcmFwaGljc1Jlc2V0U3RhdHVzIGN1cnJlbnRQYWNrZWQsCkBA
IC0yODA4LDU0NCArMjgxMCw2IEBAIENhbGxDYXB0dXJlIENhcHR1cmVMb3NlQ29udGV4dENIUk9N
SVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50
cnlQb2ludDo6TG9zZUNvbnRleHRDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7CiB9
CiAKLUNhbGxDYXB0dXJlIENhcHR1cmVHZW5QYXRoc0NIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcmFuZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmV0dXJuVmFsdWUpCi17
Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJyYW5nZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIHJhbmdlKTsKLQotICAgIFBhcmFt
Q2FwdHVyZSByZXR1cm5WYWx1ZUNhcHR1cmUoInJldHVyblZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1
aW50KTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVpbnQsIHJldHVyblZhbHVl
LCAmcmV0dXJuVmFsdWVDYXB0dXJlLnZhbHVlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRSZXR1cm5W
YWx1ZShzdGQ6Om1vdmUocmV0dXJuVmFsdWVDYXB0dXJlKSk7Ci0KLSAgICByZXR1cm4gQ2FsbENh
cHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1
ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlRGVsZXRlUGF0aHNDSFJPTUlVTShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXRoSUQgZmlyc3RQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHJhbmdlKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0g
ICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiZmlyc3RQYWNrZWQiLCBQYXJhbVR5cGU6OlRQ
YXRoSUQsIGZpcnN0UGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJyYW5n
ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIHJhbmdlKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVy
ZShnbDo6RW50cnlQb2ludDo6RGVsZXRlUGF0aHNDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVJc1BhdGhDSFJPTUlVTShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByZXR1cm5W
YWx1ZSkKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVy
LmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNr
ZWQpOwotCi0gICAgUGFyYW1DYXB0dXJlIHJldHVyblZhbHVlQ2FwdHVyZSgicmV0dXJuVmFsdWUi
LCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4pOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6
VEdMYm9vbGVhbiwgcmV0dXJuVmFsdWUsICZyZXR1cm5WYWx1ZUNhcHR1cmUudmFsdWUpOwotICAg
IHBhcmFtQnVmZmVyLmFkZFJldHVyblZhbHVlKHN0ZDo6bW92ZShyZXR1cm5WYWx1ZUNhcHR1cmUp
KTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6SXNQYXRoQ0hST01J
VU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlUGF0
aENvbW1hbmRzQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29v
cmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29y
ZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqY29vcmRzKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aFBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0
aFBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibnVtQ29tbWFuZHMiLCBQ
YXJhbVR5cGU6OlRHTHNpemVpLCBudW1Db21tYW5kcyk7Ci0KLSAgICBQYXJhbUNhcHR1cmUgY29t
bWFuZHNQYXJhbSgiY29tbWFuZHMiLCBQYXJhbVR5cGU6OlRHTHVieXRlQ29uc3RQb2ludGVyKTsK
LSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTHVieXRlQ29uc3RQb2ludGVyLCBjb21t
YW5kcywgJmNvbW1hbmRzUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVQYXRoQ29tbWFuZHNDSFJP
TUlVTV9jb21tYW5kcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcGF0aFBhY2tlZCwgbnVtQ29tbWFu
ZHMsIGNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzLCAmY29tbWFuZHNQYXJhbSk7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKGNvbW1hbmRzUGFyYW0pKTsKLQotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oIm51bUNvb3JkcyIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIG51bUNv
b3Jkcyk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJjb29yZFR5cGUiLCBHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGNvb3JkVHlwZSk7Ci0KLSAg
ICBQYXJhbUNhcHR1cmUgY29vcmRzUGFyYW0oImNvb3JkcyIsIFBhcmFtVHlwZTo6VHZvaWRDb25z
dFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50
ZXIsIGNvb3JkcywgJmNvb3Jkc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlUGF0aENvbW1hbmRz
Q0hST01JVU1fY29vcmRzKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwYXRoUGFja2VkLCBudW1Db21t
YW5kcywgY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzLCAmY29vcmRzUGFyYW0pOwotICAgIHBhcmFtQnVm
ZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShjb29yZHNQYXJhbSkpOwotCi0gICAgcmV0dXJuIENhbGxD
YXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQYXRoQ29tbWFuZHNDSFJPTUlVTSwgc3RkOjptb3ZlKHBh
cmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVQYXRoUGFyYW1ldGVyZkNIUk9N
SVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2YWx1ZSkKLXsKLSAgICBQYXJhbUJ1ZmZlciBw
YXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQi
LCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVu
dW1QYXJhbSgicG5hbWUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRH
TGVudW0sIHBuYW1lKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJ2YWx1ZSIsIFBh
cmFtVHlwZTo6VEdMZmxvYXQsIHZhbHVlKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6
RW50cnlQb2ludDo6UGF0aFBhcmFtZXRlcmZDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVy
KSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgdmFsdWUpCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoUGFja2VkIiwgUGFyYW1UeXBl
OjpUUGF0aElELCBwYXRoUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInBu
YW1lIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBwbmFt
ZSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRH
TGludCwgdmFsdWUpOwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpQ
YXRoUGFyYW1ldGVyaUNIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2Fs
bENhcHR1cmUgQ2FwdHVyZUdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbHVlKQotewotICAgIFBhcmFtQnVmZmVyIHBh
cmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aFBhY2tlZCIs
IFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkRW51
bVBhcmFtKCJwbmFtZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdM
ZW51bSwgcG5hbWUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVlIiwgUGFy
YW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6
VEdMZmxvYXRQb2ludGVyLCB2YWx1ZSwgJnZhbHVlUGFyYW0udmFsdWUpOwotICAgIENhcHR1cmVH
ZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTV92YWx1ZShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcGF0
aFBhY2tlZCwgcG5hbWUsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmdmFsdWVQYXJhbSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjpt
b3ZlKHZhbHVlUGFyYW0pKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2lu
dDo6R2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwot
fQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0oY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlKQotewotICAgIFBhcmFtQnVm
ZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aFBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIu
YWRkRW51bVBhcmFtKCJwbmFtZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlw
ZTo6VEdMZW51bSwgcG5hbWUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHZhbHVlUGFyYW0oInZhbHVl
IiwgUGFyYW1UeXBlOjpUR0xpbnRQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5
cGU6OlRHTGludFBvaW50ZXIsIHZhbHVlLCAmdmFsdWVQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVy
ZUdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNX3ZhbHVlKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBw
YXRoUGFja2VkLCBwbmFtZSwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ2YWx1ZVBhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJhbShzdGQ6
Om1vdmUodmFsdWVQYXJhbSkpOwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBv
aW50OjpHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7
Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHJlZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAg
IHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiZnVuYyIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgZnVuYyk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgicmVmIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHJlZik7Ci0gICAgcGFyYW1CdWZmZXIuYWRk
VmFsdWVQYXJhbSgibWFzayIsIFBhcmFtVHlwZTo6VEdMdWludCwgbWFzayk7Ci0KLSAgICByZXR1
cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNLCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxG
aWxsUGF0aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQotewot
ICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgicGF0aFBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAg
cGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJmaWxsTW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0
R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgZmlsbE1vZGUpOwotICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oIm1hc2siLCBQYXJhbVR5cGU6OlRHTHVpbnQsIG1hc2spOwotCi0gICAgcmV0
dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTSwg
c3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVTdGVuY2ls
U3Ryb2tlUGF0aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJl
bmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2spCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJwYXRoUGFja2VkIiwgUGFyYW1UeXBlOjpUUGF0aElELCBwYXRoUGFj
a2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJyZWZlcmVuY2UiLCBQYXJhbVR5
cGU6OlRHTGludCwgcmVmZXJlbmNlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJt
YXNrIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBtYXNrKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVy
ZShnbDo6RW50cnlQb2ludDo6U3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTSwgc3RkOjptb3ZlKHBh
cmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVDb3ZlckZpbGxQYXRoQ0hST01J
VU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQotewotICAgIFBhcmFtQnVmZmVyIHBh
cmFtQnVmZmVyOwotCi0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgicGF0aFBhY2tlZCIs
IFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aFBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkRW51
bVBhcmFtKCJjb3Zlck1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6
OlRHTGVudW0sIGNvdmVyTW9kZSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5
UG9pbnQ6OkNvdmVyRmlsbFBhdGhDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19
Ci0KLUNhbGxDYXB0dXJlIENhcHR1cmVDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoUGFja2VkIiwgUGFyYW1U
eXBlOjpUUGF0aElELCBwYXRoUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0o
ImNvdmVyTW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51
bSwgY292ZXJNb2RlKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6
Q292ZXJTdHJva2VQYXRoQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1D
YWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0oY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
LQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQiLCBQYXJhbVR5cGU6
OlRQYXRoSUQsIHBhdGhQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiZmls
bE1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGZp
bGxNb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJtYXNrIiwgUGFyYW1UeXBl
OjpUR0x1aW50LCBtYXNrKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImNvdmVyTW9k
ZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgY292ZXJN
b2RlKTsKLQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6U3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0sIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1D
YWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTShjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJl
ZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBQYXJhbUJ1ZmZlciBw
YXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBhdGhQYWNrZWQi
LCBQYXJhbVR5cGU6OlRQYXRoSUQsIHBhdGhQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZh
bHVlUGFyYW0oInJlZmVyZW5jZSIsIFBhcmFtVHlwZTo6VEdMaW50LCByZWZlcmVuY2UpOwotICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm1hc2siLCBQYXJhbVR5cGU6OlRHTHVpbnQsIG1h
c2spOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiY292ZXJNb2RlIiwgR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBjb3Zlck1vZGUpOwotCi0gICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpTdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aENIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUg
Q2FwdHVyZUNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBh
dGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgibnVtUGF0aCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIG51bVBh
dGgpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicGF0aE5hbWVUeXBlIiwgR0xlbnVt
R3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHBhdGhzUGFy
YW0oInBhdGhzIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcik7Ci0gICAgSW5pdFBhcmFt
VmFsdWUoUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlciwgcGF0aHMsICZwYXRoc1BhcmFtLnZh
bHVlKTsKLSAgICBDYXB0dXJlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNX3BhdGhzKGds
U3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJhc2VQYWNrZWQs
IGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcywgJnBhdGhzUGFyYW0pOwotICAgIHBh
cmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXRoc1BhcmFtKSk7Ci0KLSAgICBwYXJhbUJ1
ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoQmFzZVBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwg
cGF0aEJhc2VQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiY292ZXJNb2Rl
IiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBjb3Zlck1v
ZGUpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgidHJhbnNmb3JtVHlwZSIsIEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSk7Ci0KLSAgICBQYXJhbUNhcHR1cmUgdHJhbnNm
b3JtVmFsdWVzUGFyYW0oInRyYW5zZm9ybVZhbHVlcyIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25z
dFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBv
aW50ZXIsIHRyYW5zZm9ybVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1BhcmFtLnZhbHVlKTsKLSAg
ICBDYXB0dXJlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNX3RyYW5zZm9ybVZhbHVlcygK
LSAgICAgICAgZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0
aHMsIHBhdGhCYXNlUGFja2VkLCBjb3Zlck1vZGUsCi0gICAgICAgIHRyYW5zZm9ybVR5cGUsIHRy
YW5zZm9ybVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRQYXJhbShzdGQ6Om1vdmUodHJhbnNmb3JtVmFsdWVzUGFyYW0pKTsKLQotICAgIHJldHVybiBD
YWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVN
LCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENhcHR1cmUgQ2FwdHVyZUNvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBh
dGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKQotewotICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwotCi0gICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibnVtUGF0aCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IG51bVBhdGgpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicGF0aE5hbWVUeXBlIiwg
R0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHBh
dGhzUGFyYW0oInBhdGhzIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcik7Ci0gICAgSW5p
dFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlciwgcGF0aHMsICZwYXRoc1Bh
cmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1f
cGF0aHMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMsIHBhdGhC
YXNlUGFja2VkLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcywgJnBhdGhzUGFy
YW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXRoc1BhcmFtKSk7Ci0K
LSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoQmFzZVBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFBhdGhJRCwgcGF0aEJhc2VQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJh
bSgiY292ZXJNb2RlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xl
bnVtLCBjb3Zlck1vZGUpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgidHJhbnNmb3Jt
VHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdMZW51bSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSk7Ci0KLSAgICBQYXJhbUNh
cHR1cmUgdHJhbnNmb3JtVmFsdWVzUGFyYW0oInRyYW5zZm9ybVZhbHVlcyIsIFBhcmFtVHlwZTo6
VEdMZmxvYXRDb25zdFBvaW50ZXIpOwotICAgIEluaXRQYXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdM
ZmxvYXRDb25zdFBvaW50ZXIsIHRyYW5zZm9ybVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1BhcmFt
LnZhbHVlKTsKLSAgICBDYXB0dXJlQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fdHJh
bnNmb3JtVmFsdWVzKAotICAgICAgICBnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbnVtUGF0aCwgcGF0
aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGNvdmVyTW9kZSwKLSAgICAgICAgdHJh
bnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzLCAmdHJhbnNmb3JtVmFsdWVzUGFyYW0pOwotICAg
IHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZSh0cmFuc2Zvcm1WYWx1ZXNQYXJhbSkpOwot
Ci0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpDb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0
dXJlIENhcHR1cmVTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJudW1QYXRoIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgbnVtUGF0aCk7Ci0g
ICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJwYXRoTmFtZVR5cGUiLCBHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGhOYW1lVHlwZSk7Ci0KLSAgICBQYXJhbUNhcHR1cmUgcGF0aHNQYXJhbSgicGF0
aHMiLCBQYXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQ
YXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyLCBwYXRocywgJnBhdGhzUGFyYW0udmFsdWUpOwot
ICAgIENhcHR1cmVTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNX3BhdGhzKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMsIHBhdGhCYXNlUGFja2Vk
LCByZWZlcmVuY2UsIG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzLCAmcGF0aHNQYXJh
bSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHBhdGhzUGFyYW0pKTsKLQot
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInBhdGhCYXNlUGFja2VkIiwgUGFyYW1UeXBl
OjpUUGF0aElELCBwYXRoQmFzZVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJh
bSgicmVmZXJlbmNlIiwgUGFyYW1UeXBlOjpUR0xpbnQsIHJlZmVyZW5jZSk7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkVmFsdWVQYXJhbSgibWFzayIsIFBhcmFtVHlwZTo6VEdMdWludCwgbWFzayk7Ci0g
ICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJ0cmFuc2Zvcm1UeXBlIiwgR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2Zvcm1UeXBlKTsKLQotICAgIFBhcmFtQ2FwdHVyZSB0cmFuc2Zvcm1WYWx1
ZXNQYXJhbSgidHJhbnNmb3JtVmFsdWVzIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRl
cik7Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwg
dHJhbnNmb3JtVmFsdWVzLCAmdHJhbnNmb3JtVmFsdWVzUGFyYW0udmFsdWUpOwotICAgIENhcHR1
cmVTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNX3RyYW5zZm9ybVZhbHVlcygKLSAg
ICAgICAgZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMs
IHBhdGhCYXNlUGFja2VkLCByZWZlcmVuY2UsIG1hc2ssCi0gICAgICAgIHRyYW5zZm9ybVR5cGUs
IHRyYW5zZm9ybVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZl
ci5hZGRQYXJhbShzdGQ6Om1vdmUodHJhbnNmb3JtVmFsdWVzUGFyYW0pKTsKLQotICAgIHJldHVy
biBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6U3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTSwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxDYXB0dXJlIENhcHR1
cmVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJh
bUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm51bVBhdGhzIiwgUGFy
YW1UeXBlOjpUR0xzaXplaSwgbnVtUGF0aHMpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJh
bSgicGF0aE5hbWVUeXBlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpU
R0xlbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUpOwotCi0g
ICAgUGFyYW1DYXB0dXJlIHBhdGhzUGFyYW0oInBhdGhzIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0
UG9pbnRlcik7Ci0gICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRl
ciwgcGF0aHMsICZwYXRoc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlU3RlbmNpbEZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU1fcGF0aHMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG51bVBhdGhzLCBw
YXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgZmlsbE1vZGUsIG1hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRy
YW5zZm9ybVZhbHVlcywgJnBhdGhzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0
ZDo6bW92ZShwYXRoc1BhcmFtKSk7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJw
YXRoQmFzZVBhY2tlZCIsIFBhcmFtVHlwZTo6VFBhdGhJRCwgcGF0aEJhc2VQYWNrZWQpOwotICAg
IHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiZmlsbE1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sIGZpbGxNb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5h
ZGRWYWx1ZVBhcmFtKCJtYXNrIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBtYXNrKTsKLSAgICBwYXJh
bUJ1ZmZlci5hZGRFbnVtUGFyYW0oInRyYW5zZm9ybVR5cGUiLCBHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zZm9ybVR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHRyYW5zZm9ybVZhbHVlc1BhcmFt
KCJ0cmFuc2Zvcm1WYWx1ZXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKLSAg
ICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyLCB0cmFuc2Zv
cm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVN0ZW5j
aWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNX3RyYW5zZm9ybVZhbHVlcygKLSAgICAgICAgZ2xT
dGF0ZSwgaXNDYWxsVmFsaWQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFz
ZVBhY2tlZCwgZmlsbE1vZGUsIG1hc2ssCi0gICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9y
bVZhbHVlcywgJnRyYW5zZm9ybVZhbHVlc1BhcmFtKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRQYXJh
bShzdGQ6Om1vdmUodHJhbnNmb3JtVmFsdWVzUGFyYW0pKTsKLQotICAgIHJldHVybiBDYWxsQ2Fw
dHVyZShnbDo6RW50cnlQb2ludDo6U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0sIHN0
ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNl
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQot
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oIm51bVBhdGhzIiwgUGFyYW1UeXBlOjpUR0xz
aXplaSwgbnVtUGF0aHMpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicGF0aE5hbWVU
eXBlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUpOwotCi0gICAgUGFyYW1DYXB0
dXJlIHBhdGhzUGFyYW0oInBhdGhzIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcik7Ci0g
ICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlciwgcGF0aHMsICZw
YXRoc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU1fcGF0aHMoCi0gICAgICAgIGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1Q
YXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNr
LAotICAgICAgICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcywgJnBh
dGhzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXRoc1BhcmFt
KSk7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoQmFzZVBhY2tlZCIsIFBh
cmFtVHlwZTo6VFBhdGhJRCwgcGF0aEJhc2VQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVu
dW1QYXJhbSgiZmlsbE1vZGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6
OlRHTGVudW0sIGZpbGxNb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJtYXNr
IiwgUGFyYW1UeXBlOjpUR0x1aW50LCBtYXNrKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFy
YW0oImNvdmVyTW9kZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIFBhcmFtVHlwZTo6VEdM
ZW51bSwgY292ZXJNb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInRyYW5zZm9y
bVR5cGUiLCBHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBQYXJhbVR5cGU6OlRHTGVudW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUpOwotCi0gICAgUGFyYW1D
YXB0dXJlIHRyYW5zZm9ybVZhbHVlc1BhcmFtKCJ0cmFuc2Zvcm1WYWx1ZXMiLCBQYXJhbVR5cGU6
OlRHTGZsb2F0Q29uc3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRH
TGZsb2F0Q29uc3RQb2ludGVyLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQYXJh
bS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNX3RyYW5zZm9ybVZhbHVlcygKLSAgICAgICAgZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG51
bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgZmlsbE1vZGUsIG1h
c2ssCi0gICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzLCAm
dHJhbnNmb3JtVmFsdWVzUGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92
ZSh0cmFuc2Zvcm1WYWx1ZXNQYXJhbSkpOwotCi0gICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Ci19Ci0KLUNhbGxD
YXB0dXJlIENhcHR1cmVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
KGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBy
ZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcykKLXsKLSAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKLQotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oIm51bVBhdGhzIiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgbnVtUGF0
aHMpOwotICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgicGF0aE5hbWVUeXBlIiwgR0xlbnVt
R3JvdXA6OkRlZmF1bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXRoTmFtZVR5cGUpOwotCi0gICAgUGFyYW1DYXB0dXJlIHBhdGhzUGFy
YW0oInBhdGhzIiwgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcik7Ci0gICAgSW5pdFBhcmFt
VmFsdWUoUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlciwgcGF0aHMsICZwYXRoc1BhcmFtLnZh
bHVlKTsKLSAgICBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJP
TUlVTV9wYXRocygKLSAgICAgICAgZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIG51bVBhdGhzLCBwYXRo
TmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAg
ICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcywgJnBhdGhzUGFyYW0p
OwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXRoc1BhcmFtKSk7Ci0KLSAg
ICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwYXRoQmFzZVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFBhdGhJRCwgcGF0aEJhc2VQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0o
InJlZmVyZW5jZSIsIFBhcmFtVHlwZTo6VEdMaW50LCByZWZlcmVuY2UpOwotICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oIm1hc2siLCBQYXJhbVR5cGU6OlRHTHVpbnQsIG1hc2spOwotICAg
IHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgiY292ZXJNb2RlIiwgR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgUGFyYW1UeXBlOjpUR0xlbnVtLCBjb3Zlck1vZGUpOwotICAgIHBhcmFtQnVmZmVy
LmFkZEVudW1QYXJhbSgidHJhbnNmb3JtVHlwZSIsIEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAs
IFBhcmFtVHlwZTo6VEdMZW51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNm
b3JtVHlwZSk7Ci0KLSAgICBQYXJhbUNhcHR1cmUgdHJhbnNmb3JtVmFsdWVzUGFyYW0oInRyYW5z
Zm9ybVZhbHVlcyIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIpOwotICAgIEluaXRQ
YXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIHRyYW5zZm9ybVZhbHVl
cywgJnRyYW5zZm9ybVZhbHVlc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlU3RlbmNpbFRoZW5D
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTV90cmFuc2Zvcm1WYWx1ZXMoCi0gICAgICAg
IGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2VQYWNrZWQsIHJlZmVyZW5jZSwgbWFzaywKLSAgICAgICAgY292ZXJNb2RlLCB0cmFuc2Zv
cm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMsICZ0cmFuc2Zvcm1WYWx1ZXNQYXJhbSk7Ci0gICAgcGFy
YW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKHRyYW5zZm9ybVZhbHVlc1BhcmFtKSk7Ci0KLSAg
ICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlN0ZW5jaWxUaGVuQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92
ZShwYXJhbUJ1ZmZlcikpOwotfQotCi1DYWxsQ2FwdHVyZSBDYXB0dXJlQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbXNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUp
Ci17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBwYXJhbUJ1ZmZlci5hZGRW
YWx1ZVBhcmFtKCJwcm9ncmFtc1BhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwg
cHJvZ3JhbXNQYWNrZWQpOwotICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9u
IiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxvY2F0aW9uKTsKLQotICAgIFBhcmFtQ2FwdHVyZSBuYW1l
UGFyYW0oIm5hbWUiLCBQYXJhbVR5cGU6OlRHTGNoYXJDb25zdFBvaW50ZXIpOwotICAgIEluaXRQ
YXJhbVZhbHVlKFBhcmFtVHlwZTo6VEdMY2hhckNvbnN0UG9pbnRlciwgbmFtZSwgJm5hbWVQYXJh
bS52YWx1ZSk7Ci0gICAgQ2FwdHVyZUJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTV9u
YW1lKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtc1BhY2tlZCwgbG9jYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsICZuYW1l
UGFyYW0pOwotICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShuYW1lUGFyYW0pKTsK
LQotICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6QmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQotQ2FsbENh
cHR1cmUgQ2FwdHVyZVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpjb2VmZnMpCi17Ci0gICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7Ci0KLSAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hh
ZGVyUHJvZ3JhbUlELCBwcm9ncmFtUGFja2VkKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCBsb2NhdGlvbik7Ci0gICAgcGFyYW1C
dWZmZXIuYWRkRW51bVBhcmFtKCJnZW5Nb2RlIiwgR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
UGFyYW1UeXBlOjpUR0xlbnVtLCBnZW5Nb2RlKTsKLSAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBh
cmFtKCJjb21wb25lbnRzIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGNvbXBvbmVudHMpOwotCi0gICAg
UGFyYW1DYXB0dXJlIGNvZWZmc1BhcmFtKCJjb2VmZnMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0Q29u
c3RQb2ludGVyKTsKLSAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGZsb2F0Q29uc3RQ
b2ludGVyLCBjb2VmZnMsICZjb2VmZnNQYXJhbS52YWx1ZSk7Ci0gICAgQ2FwdHVyZVByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNX2NvZWZmcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMsICZjb2Vm
ZnNQYXJhbSk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkUGFyYW0oc3RkOjptb3ZlKGNvZWZmc1BhcmFt
KSk7Ci0KLSAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OlByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKLX0KLQog
Q2FsbENhcHR1cmUgQ2FwdHVyZUJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCkBAIC0zNTUzLDYgKzMwMTcsMjMgQEAgQ2Fs
bENhcHR1cmUgQ2FwdHVyZUdlblF1ZXJpZXNFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZW5RdWVyaWVzRVhULCBzdGQ6Om1v
dmUocGFyYW1CdWZmZXIpKTsKIH0KIAorQ2FsbENhcHR1cmUgQ2FwdHVyZUdldEludGVnZXI2NHZF
WFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQ2NCAqZGF0YSkKK3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFt
QnVmZmVyLmFkZEVudW1QYXJhbSgicG5hbWUiLCBHTGVudW1Hcm91cDo6R2V0UE5hbWUsIFBhcmFt
VHlwZTo6VEdMZW51bSwgcG5hbWUpOworCisgICAgUGFyYW1DYXB0dXJlIGRhdGFQYXJhbSgiZGF0
YSIsIFBhcmFtVHlwZTo6VEdMaW50NjRQb2ludGVyKTsKKyAgICBJbml0UGFyYW1WYWx1ZShQYXJh
bVR5cGU6OlRHTGludDY0UG9pbnRlciwgZGF0YSwgJmRhdGFQYXJhbS52YWx1ZSk7CisgICAgQ2Fw
dHVyZUdldEludGVnZXI2NHZFWFRfZGF0YShnbFN0YXRlLCBpc0NhbGxWYWxpZCwgcG5hbWUsIGRh
dGEsICZkYXRhUGFyYW0pOworICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShkYXRh
UGFyYW0pKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6R2V0SW50
ZWdlcjY0dkVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKIENhbGxDYXB0dXJlIENh
cHR1cmVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCkBA
IC0zNzAwLDYgKzMxODEsMTI3IEBAIENhbGxDYXB0dXJlIENhcHR1cmVEcmF3QnVmZmVyc0VYVChj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9p
bnQ6OkRyYXdCdWZmZXJzRVhULCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKIH0KIAorQ2FsbENh
cHR1cmUgQ2FwdHVyZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
KworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZiIsIFBhcmFtVHlwZTo6VEdMdWlu
dCwgYnVmKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oIm1vZGVSR0IiLCBHTGVudW1H
cm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIFBhcmFtVHlwZTo6VEdMZW51bSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9kZVJHQik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBh
cmFtKCJtb2RlQWxwaGEiLCBHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIFBhcmFt
VHlwZTo6VEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZUFscGhhKTsK
KworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6QmxlbmRFcXVhdGlvblNl
cGFyYXRlaUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENh
cHR1cmVCbGVuZEVxdWF0aW9uaUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1C
dWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWYiLCBQYXJhbVR5cGU6
OlRHTHVpbnQsIGJ1Zik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJtb2RlIiwgR0xl
bnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBQYXJhbVR5cGU6OlRHTGVudW0sIG1vZGUp
OworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpCbGVuZEVxdWF0aW9u
aUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVC
bGVuZEZ1bmNTZXBhcmF0ZWlFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKQoreworICAgIFBh
cmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgi
YnVmIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBidWYpOworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1Q
YXJhbSgic3JjUkdCIiwgR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRH
TGVudW0sIHNyY1JHQik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJkc3RSR0IiLCBH
TGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIFBhcmFtVHlwZTo6VEdMZW51bSwgZHN0UkdCKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInNyY0FscGhhIiwgR0xlbnVtR3JvdXA6OkJs
ZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRHTGVudW0sIHNyY0FscGhhKTsKKyAgICBwYXJhbUJ1
ZmZlci5hZGRFbnVtUGFyYW0oImRzdEFscGhhIiwgR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9y
LCBQYXJhbVR5cGU6OlRHTGVudW0sIGRzdEFscGhhKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVy
ZShnbDo6RW50cnlQb2ludDo6QmxlbmRGdW5jU2VwYXJhdGVpRVhULCBzdGQ6Om1vdmUocGFyYW1C
dWZmZXIpKTsKK30KKworQ2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5kRnVuY2lFWFQoY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0KQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFt
QnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiYnVmIiwgUGFyYW1UeXBl
OjpUR0x1aW50LCBidWYpOworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgic3JjIiwgR0xl
bnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBQYXJhbVR5cGU6OlRHTGVudW0sIHNyYyk7CisgICAg
cGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJkc3QiLCBHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0
b3IsIFBhcmFtVHlwZTo6VEdMZW51bSwgZHN0KTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShn
bDo6RW50cnlQb2ludDo6QmxlbmRGdW5jaUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9
CisKK0NhbGxDYXB0dXJlIENhcHR1cmVDb2xvck1hc2tpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biBhKQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIu
YWRkVmFsdWVQYXJhbSgiaW5kZXgiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGluZGV4KTsKKyAgICBw
YXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJyIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCByKTsK
KyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJnIiwgUGFyYW1UeXBlOjpUR0xib29sZWFu
LCBnKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJiIiwgUGFyYW1UeXBlOjpUR0xi
b29sZWFuLCBiKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJhIiwgUGFyYW1UeXBl
OjpUR0xib29sZWFuLCBhKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2lu
dDo6Q29sb3JNYXNraUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0
dXJlIENhcHR1cmVEaXNhYmxlaUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwgYm9vbCBpc0NhbGxW
YWxpZCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIFBhcmFtQnVmZmVyIHBh
cmFtQnVmZmVyOworCisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJ0YXJnZXQiLCBHTGVu
dW1Hcm91cDo6RW5hYmxlQ2FwLCBQYXJhbVR5cGU6OlRHTGVudW0sIHRhcmdldCk7CisgICAgcGFy
YW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiaW5kZXgiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGluZGV4
KTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6RGlzYWJsZWlFWFQs
IHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOworfQorCitDYWxsQ2FwdHVyZSBDYXB0dXJlRW5hYmxl
aUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwgYm9vbCBpc0NhbGxWYWxpZCwgR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGluZGV4KQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAg
cGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJ0YXJnZXQiLCBHTGVudW1Hcm91cDo6RW5hYmxlQ2Fw
LCBQYXJhbVR5cGU6OlRHTGVudW0sIHRhcmdldCk7CisgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQ
YXJhbSgiaW5kZXgiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIGluZGV4KTsKKworICAgIHJldHVybiBD
YWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6RW5hYmxlaUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVm
ZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVJc0VuYWJsZWRpRVhUKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWUpCit7CisgICAgUGFy
YW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInRh
cmdldCIsIEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgdGFyZ2V0
KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJpbmRleCIsIFBhcmFtVHlwZTo6VEdM
dWludCwgaW5kZXgpOworCisgICAgUGFyYW1DYXB0dXJlIHJldHVyblZhbHVlQ2FwdHVyZSgicmV0
dXJuVmFsdWUiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4pOworICAgIEluaXRQYXJhbVZhbHVlKFBh
cmFtVHlwZTo6VEdMYm9vbGVhbiwgcmV0dXJuVmFsdWUsICZyZXR1cm5WYWx1ZUNhcHR1cmUudmFs
dWUpOworICAgIHBhcmFtQnVmZmVyLmFkZFJldHVyblZhbHVlKHN0ZDo6bW92ZShyZXR1cm5WYWx1
ZUNhcHR1cmUpKTsKKworICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6SXNF
bmFibGVkaUVYVCwgc3RkOjptb3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKIENhbGxDYXB0dXJlIENh
cHR1cmVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCwKQEAgLTQyNjQsMjAgKzM4NjYsMjAgQEAgQ2FsbENhcHR1cmUgQ2Fw
dHVyZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxs
Q2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1mdkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq
cGFyYW1zKQogewogICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOwogCiAgICAgcGFyYW1CdWZm
ZXIuYWRkVmFsdWVQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dy
YW1JRCwgcHJvZ3JhbVBhY2tlZCk7Ci0gICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgibG9j
YXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgbG9jYXRpb24pOworICAgIHBhcmFtQnVmZmVyLmFk
ZFZhbHVlUGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
LCBsb2NhdGlvblBhY2tlZCk7CiAgICAgcGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiYnVmU2l6
ZSIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIGJ1ZlNpemUpOwogCiAgICAgUGFyYW1DYXB0dXJlIHBh
cmFtc1BhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlcik7CiAgICAgSW5p
dFBhcmFtVmFsdWUoUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIsIHBhcmFtcywgJnBhcmFtc1Bh
cmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZvcm1mdkVYVF9wYXJhbXMoZ2xTdGF0ZSwg
aXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJhbXNQYXJhbSk7CisgICAgQ2Fw
dHVyZUdldG5Vbmlmb3JtZnZFWFRfcGFyYW1zKGdsU3RhdGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLCAmcGFyYW1zUGFyYW0pOwogICAgIHBhcmFtQnVmZmVyLmFkZFBh
cmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAgICAgcmV0dXJuIENhbGxDYXB0dXJlKGds
OjpFbnRyeVBvaW50OjpHZXRuVW5pZm9ybWZ2RVhULCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsK
QEAgLTQyODYsMjAgKzM4ODgsMjAgQEAgQ2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtZnZF
WFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm1p
dkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBQYXJhbUJ1ZmZlciBw
YXJhbUJ1ZmZlcjsKIAogICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oInByb2dyYW1QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIHByb2dyYW1QYWNrZWQpOwotICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIGxv
Y2F0aW9uKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJsb2NhdGlvblBhY2tlZCIs
IFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgbG9jYXRpb25QYWNrZWQpOwogICAgIHBhcmFt
QnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCBidWZT
aXplKTsKIAogICAgIFBhcmFtQ2FwdHVyZSBwYXJhbXNQYXJhbSgicGFyYW1zIiwgUGFyYW1UeXBl
OjpUR0xpbnRQb2ludGVyKTsKICAgICBJbml0UGFyYW1WYWx1ZShQYXJhbVR5cGU6OlRHTGludFBv
aW50ZXIsIHBhcmFtcywgJnBhcmFtc1BhcmFtLnZhbHVlKTsKLSAgICBDYXB0dXJlR2V0blVuaWZv
cm1pdkVYVF9wYXJhbXMoZ2xTdGF0ZSwgaXNDYWxsVmFsaWQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBidWZTaXplLCBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZwYXJhbXNQYXJhbSk7CisgICAgQ2FwdHVyZUdldG5Vbmlmb3JtaXZFWFRfcGFyYW1zKGdsU3Rh
dGUsIGlzQ2FsbFZhbGlkLCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCAmcGFyYW1zUGFyYW0p
OwogICAgIHBhcmFtQnVmZmVyLmFkZFBhcmFtKHN0ZDo6bW92ZShwYXJhbXNQYXJhbSkpOwogCiAg
ICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpHZXRuVW5pZm9ybWl2RVhULCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKQEAgLTUwMTEsNiArNDYxMywxMjcgQEAgQ2FsbENhcHR1
cmUgQ2FwdHVyZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgIHJldHVybiBDYWxsQ2FwdHVyZShnbDo6RW50cnlQb2ludDo6RUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikpOwogfQogCitDYWxsQ2FwdHVyZSBD
YXB0dXJlQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZUFscGhhKQoreworICAgIFBhcmFtQnVmZmVyIHBhcmFtQnVmZmVyOworCisgICAg
cGFyYW1CdWZmZXIuYWRkVmFsdWVQYXJhbSgiYnVmIiwgUGFyYW1UeXBlOjpUR0x1aW50LCBidWYp
OworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgibW9kZVJHQiIsIEdMZW51bUdyb3VwOjpC
bGVuZEVxdWF0aW9uTW9kZUVYVCwgUGFyYW1UeXBlOjpUR0xlbnVtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RlUkdCKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oIm1v
ZGVBbHBoYSIsIEdMZW51bUdyb3VwOjpCbGVuZEVxdWF0aW9uTW9kZUVYVCwgUGFyYW1UeXBlOjpU
R0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlQWxwaGEpOworCisgICAg
cmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVp
T0VTLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKworQ2FsbENhcHR1cmUgQ2FwdHVyZUJs
ZW5kRXF1YXRpb25pT0VTKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSkKK3sKKyAgICBQYXJhbUJ1ZmZlciBwYXJhbUJ1ZmZlcjsK
KworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImJ1ZiIsIFBhcmFtVHlwZTo6VEdMdWlu
dCwgYnVmKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oIm1vZGUiLCBHTGVudW1Hcm91
cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIFBhcmFtVHlwZTo6VEdMZW51bSwgbW9kZSk7CisKKyAg
ICByZXR1cm4gQ2FsbENhcHR1cmUoZ2w6OkVudHJ5UG9pbnQ6OkJsZW5kRXF1YXRpb25pT0VTLCBz
dGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKworQ2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5kRnVu
Y1NlcGFyYXRlaU9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFJHQiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0FscGhhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpCit7CisgICAgUGFyYW1CdWZm
ZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWYiLCBQ
YXJhbVR5cGU6OlRHTHVpbnQsIGJ1Zik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJz
cmNSR0IiLCBHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIFBhcmFtVHlwZTo6VEdMZW51bSwg
c3JjUkdCKTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oImRzdFJHQiIsIEdMZW51bUdy
b3VwOjpCbGVuZGluZ0ZhY3RvciwgUGFyYW1UeXBlOjpUR0xlbnVtLCBkc3RSR0IpOworICAgIHBh
cmFtQnVmZmVyLmFkZEVudW1QYXJhbSgic3JjQWxwaGEiLCBHTGVudW1Hcm91cDo6QmxlbmRpbmdG
YWN0b3IsIFBhcmFtVHlwZTo6VEdMZW51bSwgc3JjQWxwaGEpOworICAgIHBhcmFtQnVmZmVyLmFk
ZEVudW1QYXJhbSgiZHN0QWxwaGEiLCBHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIFBhcmFt
VHlwZTo6VEdMZW51bSwgZHN0QWxwaGEpOworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpF
bnRyeVBvaW50OjpCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMsIHN0ZDo6bW92ZShwYXJhbUJ1ZmZlcikp
OworfQorCitDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRGdW5jaU9FUyhjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkc3QpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7
CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJidWYiLCBQYXJhbVR5cGU6OlRHTHVp
bnQsIGJ1Zik7CisgICAgcGFyYW1CdWZmZXIuYWRkRW51bVBhcmFtKCJzcmMiLCBHTGVudW1Hcm91
cDo6QmxlbmRpbmdGYWN0b3IsIFBhcmFtVHlwZTo6VEdMZW51bSwgc3JjKTsKKyAgICBwYXJhbUJ1
ZmZlci5hZGRFbnVtUGFyYW0oImRzdCIsIEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgUGFy
YW1UeXBlOjpUR0xlbnVtLCBkc3QpOworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRy
eVBvaW50OjpCbGVuZEZ1bmNpT0VTLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKworQ2Fs
bENhcHR1cmUgQ2FwdHVyZUNvbG9yTWFza2lPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGEpCit7
CisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1
ZVBhcmFtKCJpbmRleCIsIFBhcmFtVHlwZTo6VEdMdWludCwgaW5kZXgpOworICAgIHBhcmFtQnVm
ZmVyLmFkZFZhbHVlUGFyYW0oInIiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIHIpOworICAgIHBh
cmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImciLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIGcpOwor
ICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImIiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4s
IGIpOworICAgIHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImEiLCBQYXJhbVR5cGU6OlRHTGJv
b2xlYW4sIGEpOworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpDb2xv
ck1hc2tpT0VTLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKworQ2FsbENhcHR1cmUgQ2Fw
dHVyZURpc2FibGVpT0VTKGNvbnN0IFN0YXRlICZnbFN0YXRlLCBib29sIGlzQ2FsbFZhbGlkLCBH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZm
ZXI7CisKKyAgICBwYXJhbUJ1ZmZlci5hZGRFbnVtUGFyYW0oInRhcmdldCIsIEdMZW51bUdyb3Vw
OjpFbmFibGVDYXAsIFBhcmFtVHlwZTo6VEdMZW51bSwgdGFyZ2V0KTsKKyAgICBwYXJhbUJ1ZmZl
ci5hZGRWYWx1ZVBhcmFtKCJpbmRleCIsIFBhcmFtVHlwZTo6VEdMdWludCwgaW5kZXgpOworCisg
ICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpEaXNhYmxlaU9FUywgc3RkOjpt
b3ZlKHBhcmFtQnVmZmVyKSk7Cit9CisKK0NhbGxDYXB0dXJlIENhcHR1cmVFbmFibGVpT0VTKGNv
bnN0IFN0YXRlICZnbFN0YXRlLCBib29sIGlzQ2FsbFZhbGlkLCBHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgpCit7CisgICAgUGFyYW1CdWZmZXIgcGFyYW1CdWZmZXI7CisKKyAgICBwYXJhbUJ1
ZmZlci5hZGRFbnVtUGFyYW0oInRhcmdldCIsIEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIFBhcmFt
VHlwZTo6VEdMZW51bSwgdGFyZ2V0KTsKKyAgICBwYXJhbUJ1ZmZlci5hZGRWYWx1ZVBhcmFtKCJp
bmRleCIsIFBhcmFtVHlwZTo6VEdMdWludCwgaW5kZXgpOworCisgICAgcmV0dXJuIENhbGxDYXB0
dXJlKGdsOjpFbnRyeVBvaW50OjpFbmFibGVpT0VTLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsK
K30KKworQ2FsbENhcHR1cmUgQ2FwdHVyZUlzRW5hYmxlZGlPRVMoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZSkKK3sKKyAgICBQYXJhbUJ1ZmZl
ciBwYXJhbUJ1ZmZlcjsKKworICAgIHBhcmFtQnVmZmVyLmFkZEVudW1QYXJhbSgidGFyZ2V0Iiwg
R0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgUGFyYW1UeXBlOjpUR0xlbnVtLCB0YXJnZXQpOworICAg
IHBhcmFtQnVmZmVyLmFkZFZhbHVlUGFyYW0oImluZGV4IiwgUGFyYW1UeXBlOjpUR0x1aW50LCBp
bmRleCk7CisKKyAgICBQYXJhbUNhcHR1cmUgcmV0dXJuVmFsdWVDYXB0dXJlKCJyZXR1cm5WYWx1
ZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbik7CisgICAgSW5pdFBhcmFtVmFsdWUoUGFyYW1UeXBl
OjpUR0xib29sZWFuLCByZXR1cm5WYWx1ZSwgJnJldHVyblZhbHVlQ2FwdHVyZS52YWx1ZSk7Cisg
ICAgcGFyYW1CdWZmZXIuYWRkUmV0dXJuVmFsdWUoc3RkOjptb3ZlKHJldHVyblZhbHVlQ2FwdHVy
ZSkpOworCisgICAgcmV0dXJuIENhbGxDYXB0dXJlKGdsOjpFbnRyeVBvaW50OjpJc0VuYWJsZWRp
T0VTLCBzdGQ6Om1vdmUocGFyYW1CdWZmZXIpKTsKK30KKwogQ2FsbENhcHR1cmUgQ2FwdHVyZURy
YXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfYXV0b2dlbi5oCmluZGV4IGFhNWI0MTNmMGQ1
M2UzZjU3YTQ1OGFjNmM5MzljYjFjNWExYjk2MTEuLjE1MDZiYWJhZmYwNzQ5M2Q3MDEzYjA0ODI3
ZjNjZmQzNDIxYzkyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvY2FwdHVyZV9nbGVzX2V4dF9hdXRvZ2VuLmgKQEAgLTE0Nyw2
ICsxNDcsMTQgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGl2aXNvcik7CiAKKy8vIEdM
X0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYQorYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVJ
bXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI
YW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOworCiAvLyBHTF9BTkdM
RV9tdWx0aV9kcmF3CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZU11bHRpRHJhd0FycmF5c0FO
R0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLApAQCAtMjY0LDE0ICsyNzIsMTQgQEAg
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVH
ZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKQEAgLTQ3NCw3ICs0ODIsNyBAQCBh
bmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7CkBAIC01OTksMjEgKzYwNywyMSBA
QCBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldG5Vbmlmb3JtZnZS
b2J1c3RBTkdMRShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKIGFuZ2xlOjpD
YWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKTsKQEAgLTY5MSw2ICs2OTksMTMgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENh
cHR1cmVHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKTsKIAorLy8gR0xfQU5HTEVfc2Vt
YXBob3JlX2Z1Y2hzaWEKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlSW1wb3J0U2VtYXBob3Jl
WmlyY29uSGFuZGxlQU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVU
eXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKTsKKwogLy8gR0xfQU5HTEVfdGV4dHVyZV9leHRl
cm5hbF91cGRhdGUKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlVGV4SW1hZ2UyREV4dGVybmFs
QU5HTEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCkBAIC03NDksNyArNzY0LDcg
QEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUJpbmRV
bmlmb3JtTG9jYXRpb25DSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKIAogLy8gR0xfQ0hST01JVU1f
Y29weV9jb21wcmVzc2VkX3RleHR1cmUKQEAgLTc5MiwxMyArODA3LDYgQEAgYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvbXBvbmVudHMpOwotYW5n
bGU6OkNhbGxDYXB0dXJlIENhcHR1cmVNYXRyaXhMb2FkZkNIUk9NSVVNKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1hdHJpeE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqbWF0cml4KTsKLWFuZ2xlOjpDYWxsQ2FwdHVy
ZSBDYXB0dXJlTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtYXRyaXhNb2RlKTsKIAogLy8gR0xfQ0hST01JVU1fbG9zZV9j
b250ZXh0CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUxvc2VDb250ZXh0Q0hST01JVU0oY29u
c3QgU3RhdGUgJmdsU3RhdGUsCkBAIC04MDYsMTU2ICs4MTQsNiBAQCBhbmdsZTo6Q2FsbENhcHR1
cmUgQ2FwdHVyZUxvc2VDb250ZXh0Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NSZXNldFN0
YXR1cyBjdXJyZW50UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgb3RoZXJQYWNrZWQpOwogCi0vLyBHTF9DSFJP
TUlVTV9wYXRoX3JlbmRlcmluZwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVHZW5QYXRoc0NI
Uk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSByYW5nZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmV0dXJuVmFsdWUpOwotYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVEZWxldGVQYXRoc0NIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0
aElEIGZpcnN0UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgcmFuZ2UpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVJc1BhdGhD
SFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZSk7Ci1hbmdsZTo6Q2Fs
bENhcHR1cmUgQ2FwdHVyZVBhdGhDb21tYW5kc0NIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpjb29yZHMpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdmFsdWUpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVQYXRoUGFyYW1l
dGVyaUNIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHZhbHVlKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0UGF0aFBhcmFtZXRl
cmZ2Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRo
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbHVlKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0
dXJlR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZSk7Ci1hbmdsZTo6
Q2FsbENhcHR1cmUgQ2FwdHVyZVBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Ci1hbmdsZTo6Q2FsbENhcHR1
cmUgQ2FwdHVyZVN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Ci1hbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZVN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spOwot
YW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVDb3ZlckZpbGxQYXRoQ0hST01JVU0oY29uc3QgU3Rh
dGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLWFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLWFuZ2xlOjpDYWxsQ2Fw
dHVyZSBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0oY29uc3QgU3RhdGUg
JmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLWFu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlV
TShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJ
RCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQ292ZXJGaWxs
UGF0aEluc3RhbmNlZENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1hbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBh
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRo
SUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpOwotYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVTdGVuY2lsRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1hbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZVN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKGNvbnN0IFN0YXRlICZnbFN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBD
YXB0dXJlU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICBj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgIEdMc2l6ZWkg
bnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgR0xpbnQgcmVmZXJlbmNlLAotICAg
IEdMdWludCBtYXNrLAotICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLWFuZ2xlOjpDYWxs
Q2FwdHVyZSBDYXB0dXJlQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtc1BhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KTsKLWFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2Vu
Q0hST01JVU0oY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKmNvZWZmcyk7Ci0KIC8vIEdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkCiBhbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLApAQCAtMTAxNCw2ICs4NzIsMTAgQEAgYW5nbGU6OkNhbGxD
YXB0dXJlIENhcHR1cmVHZW5RdWVyaWVzRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgKmlkc1BhY2tlZCk7Cithbmds
ZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldEludGVnZXI2NHZFWFQoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQ2NCAqZGF0YSk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUdldFF1ZXJ5T2JqZWN0aTY0
dkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkUGFja2VkLApAQCAtMTA1NCw2
ICs5MTYsNDkgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVEcmF3QnVmZmVyc0VYVChjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGVudW0gKmJ1ZnMpOwogCisvLyBHTF9FWFRfZHJhd19idWZmZXJzX2luZGV4ZWQKK2Fu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVChjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVB
bHBoYSk7CithbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5kRXF1YXRpb25pRVhUKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSk7CithbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUJsZW5k
RnVuY1NlcGFyYXRlaUVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVC
bGVuZEZ1bmNpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkc3QpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVDb2xv
ck1hc2tpRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBhKTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlRGlzYWJsZWlF
WFQoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCk7CithbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUVuYWJsZWlFWFQo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCk7CithbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZUlzRW5hYmxlZGlFWFQoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gcmV0dXJuVmFsdWUpOworCiAvLyBHTF9FWFRfZHJhd19lbGVtZW50c19iYXNl
X3ZlcnRleAogYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVEcmF3RWxlbWVudHNCYXNlVmVydGV4
RVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCkBAIC0xMjQ0LDEzICsxMTQ5
LDEzIEBAIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VY
VChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlR2V0blVu
aWZvcm1mdkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKIGFuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJl
R2V0blVuaWZvcm1pdkVYVChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CiBhbmdsZTo6Q2FsbENhcHR1cmUgQ2Fw
dHVyZVJlYWRuUGl4ZWxzRVhUKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMTMxNyw2ICsxMjIy
LDggQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVJbXBvcnRTZW1hcGhvcmVGZEVYVChjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKIAogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQog
CisvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisKIC8vIEdMX0VYVF90ZXh0dXJl
X2NvbXByZXNzaW9uX3MzdGMKIAogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiCkBAIC0xNDY1LDYgKzEzNzIsNDkgQEAgYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIAogLy8gR0xfT0VT
X2RlcHRoMzIKIAorLy8gR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkCithbmdsZTo6Q2FsbENh
cHR1cmUgQ2FwdHVyZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpOworYW5n
bGU6OkNhbGxDYXB0dXJlIENhcHR1cmVCbGVuZEVxdWF0aW9uaU9FUyhjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVCbGVuZEZ1bmNTZXBhcmF0
ZWlPRVMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNy
Y0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRzdEFscGhhKTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQmxlbmRGdW5jaU9F
Uyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZHN0KTsKK2FuZ2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlQ29sb3JNYXNraU9FUyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gYSk7CithbmdsZTo6Q2FsbENhcHR1cmUgQ2FwdHVyZURpc2FibGVpT0VTKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgpOworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVFbmFibGVpT0VTKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgp
OworYW5nbGU6OkNhbGxDYXB0dXJlIENhcHR1cmVJc0VuYWJsZWRpT0VTKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHJldHVyblZhbHVlKTsKKwogLy8gR0xfT0VTX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKIGFu
Z2xlOjpDYWxsQ2FwdHVyZSBDYXB0dXJlRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyhjb25zdCBT
dGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLApAQCAtMjI1MCw3ICsyMjAwLDcgQEAgdm9pZCBD
YXB0dXJlR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0ICpwYXJhbXMsCkBAIC0yMjU4LDcgKzIyMDgsNyBAQCB2b2lkIENhcHR1cmVHZXRVbmlm
b3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1
cmVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCkBA
IC0yMjY2LDcgKzIyMTYsNyBAQCB2b2lkIENhcHR1cmVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRV9w
YXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtaXZSb2J1
c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zLApAQCAtMjI3NCw3ICsyMjI0LDcgQEAg
dm9pZCBDYXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZn
bFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0
IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcywKQEAgLTI2MjIsNyArMjU3Miw3IEBAIHZvaWQgQ2FwdHVyZUdldFZlcnRl
eEF0dHJpYkl1aXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lk
IENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqcGFyYW1zLApAQCAtMjYzMCw3ICsyNTgwLDcgQEAgdm9pZCBDYXB0dXJlR2V0VW5pZm9ybXVp
dlJvYnVzdEFOR0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMs
CkBAIC0yOTIwLDcgKzI4NzAsNyBAQCB2b2lkIENhcHR1cmVSZWFkblBpeGVsc1JvYnVzdEFOR0xF
X2RhdGEoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9i
dXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcywKQEAgLTI5MjgsNyAr
Mjg3OCw3IEBAIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEVf
cGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcywKQEAgLTI5MzYsNyArMjg4Niw3IEBA
IHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNv
bnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMsCkBAIC0yOTQ0LDcgKzI4OTQsNyBAQCB2b2lkIENhcHR1
cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
dm9pZCBDYXB0dXJlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zLApAQCAtMjk1Miw3ICsyOTAyLDcgQEAgdm9pZCBDYXB0dXJlR2V0blVuaWZv
cm1pdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVy
ZUdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgKnBhcmFtcywKQEAgLTI5NjAsNyArMjkxMCw3IEBAIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJl
R2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqcGFyYW1zLApAQCAtMzE0MiwxOTIgKzMwOTIsOSBAQCB2b2lkIENhcHR1cmVHZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEVfc291cmNlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBD
YXB0dXJlQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNX25hbWUoY29uc3QgU3RhdGUgJmdsU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVNYXRyaXhMb2Fk
ZkNIUk9NSVVNX21hdHJpeChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWF0cml4TW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFt
Q2FwdHVyZSk7Ci12b2lkIENhcHR1cmVQYXRoQ29tbWFuZHNDSFJPTUlVTV9jb21tYW5kcyhjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jk
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJh
bUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVQYXRoQ29tbWFuZHNDSFJPTUlV
TV9jb29yZHMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNh
cHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVHZXRQYXRoUGFyYW1ldGVyZnZDSFJP
TUlVTV92YWx1ZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFt
Q2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZUdldFBhdGhQYXJhbWV0ZXJpdkNI
Uk9NSVVNX3ZhbHVlKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFt
Q2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZUNvdmVyRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTV9wYXRocyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJh
bUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNX3Ry
YW5zZm9ybVZhbHVlcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlQ292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fcGF0aHMoY29uc3QgU3RhdGUgJmdsU3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElE
IHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2Fw
dHVyZUNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNX3RyYW5zZm9ybVZhbHVlcyhjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVt
UGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTV9wYXRocyhjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0
dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTV90cmFuc2Zvcm1WYWx1ZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhC
YXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lk
IENhcHR1cmVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTV9wYXRocyhjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNm
b3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFt
Q2FwdHVyZSk7Ci12b2lkIENhcHR1cmVTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTV90
cmFuc2Zvcm1WYWx1ZXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNX3BhdGhzKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7Ci12b2lkIENhcHR1cmVT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTV90cmFuc2Zvcm1WYWx1ZXMo
Ci0gICAgY29uc3QgU3RhdGUgJmdsU3RhdGUsCi0gICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICBH
THNpemVpIG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9p
ZCAqcGF0aHMsCi0gICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgIEdMZW51bSBmaWxsTW9k
ZSwKLSAgICBHTHVpbnQgbWFzaywKLSAgICBHTGVudW0gY292ZXJNb2RlLAotICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywKLSAgICBh
bmdsZTo6UGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpOwotdm9pZCBDYXB0dXJlU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTV9wYXRocyhjb25zdCBTdGF0ZSAmZ2xT
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
dGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFt
Q2FwdHVyZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZVN0ZW5jaWxUaGVuQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU1fdHJhbnNmb3JtVmFsdWVzKAotICAgIGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAotICAgIGJvb2wgaXNDYWxsVmFsaWQsCi0gICAgR0xzaXplaSBudW1QYXRocywK
LSAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIFBh
dGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICBHTGludCByZWZlcmVuY2UsCi0gICAgR0x1aW50IG1h
c2ssCi0gICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMsCi0gICAgYW5nbGU6OlBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZUJpbmRGcmFnbWVudElucHV0TG9jYXRpb25D
SFJPTUlVTV9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtc1BhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OlBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKTsKLXZvaWQgQ2FwdHVyZVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNX2NvZWZmcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1
cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVF9u
YW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKQEAgLTMzNzgsNiAr
MzE0NSwxMSBAQCB2b2lkIENhcHR1cmVHZW5RdWVyaWVzRVhUX2lkc1BhY2tlZChjb25zdCBTdGF0
ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgKmlkc1BhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1
cmUgKnBhcmFtQ2FwdHVyZSk7Cit2b2lkIENhcHR1cmVHZXRJbnRlZ2VyNjR2RVhUX2RhdGEoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UGFyYW1DYXB0dXJlICpw
YXJhbUNhcHR1cmUpOwogdm9pZCBDYXB0dXJlR2V0UXVlcnlPYmplY3RpNjR2RVhUX3BhcmFtcyhj
b25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCwKQEAgLTM1MTEsMTQgKzMyODMsMTQgQEAgdm9pZCBD
YXB0dXJlTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFRfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0
YXRlLAogdm9pZCBDYXB0dXJlR2V0blVuaWZvcm1mdkVYVF9wYXJhbXMoY29uc3QgU3RhdGUgJmds
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZh
bGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgKnBhcmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVyZSk7CiB2b2lkIENhcHR1cmVHZXRuVW5pZm9y
bWl2RVhUX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNhcHR1cmUgKnBhcmFtQ2FwdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvY2Fw
dHVyZV9nbGVzX2V4dF9wYXJhbXMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2NhcHR1cmVfZ2xlc19leHRfcGFyYW1zLmNwcAppbmRleCBhMjI0MzE1N2EzNTVlMDFj
YjJhOTJmMjU1MDVlZmU0OWM4ZDYzNjhiLi5kODE0MjBmYjkxOTc3NzMxMWRhMGJlYWY5ZTRiMDdm
OTZkMzVlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvY2FwdHVyZV9nbGVzX2V4dF9wYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X3BhcmFtcy5jcHAKQEAgLTgsNiArOCw4
IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9jYXB0dXJlX2dsZXNfZXh0X2F1dG9nZW4uaCIKIAor
I2luY2x1ZGUgImxpYkFOR0xFL2NhcHR1cmVfZ2xlc18zXzBfYXV0b2dlbi5oIgorCiB1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CiAKIG5hbWVzcGFjZSBnbApAQCAtNDE2LDcgKzQxOCw3IEBAIHZvaWQg
Q2FwdHVyZVJlcXVlc3RFeHRlbnNpb25BTkdMRV9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpw
YXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIENhcHR1cmVTdHJpbmco
bmFtZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJlRGlzYWJsZUV4dGVuc2lvbkFO
R0xFX25hbWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC00MjQsNyArNDI2LDcgQEAgdm9pZCBD
YXB0dXJlRGlzYWJsZUV4dGVuc2lvbkFOR0xFX25hbWUoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBh
cmFtQ2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQ2FwdHVyZVN0cmluZyhu
YW1lLCBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lkIENhcHR1cmVHZXRCb29sZWFudlJvYnVzdEFO
R0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTY2Niw3ICs2NjgsNyBAQCB2b2lk
IENhcHR1cmVHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFX2xlbmd0aChjb25z
dCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcywKQEAgLTY3OCw3ICs2ODAsNyBAQCB2b2lkIENhcHR1cmVHZXRVbmlmb3JtZnZSb2J1c3RB
TkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMsCkBAIC02OTAsNyArNjkyLDcgQEAgdm9pZCBD
YXB0dXJlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogdm9pZCBDYXB0dXJlR2V0VW5pZm9ybWl2Um9idXN0QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKQEAg
LTcwMiw3ICs3MDQsNyBAQCB2b2lkIENhcHR1cmVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRV9sZW5n
dGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRVbmlmb3JtaXZSb2J1c3RB
TkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zLApAQCAtMTE5MCw3ICsxMTkyLDcgQEAgdm9pZCBDYXB0dXJlR2V0
VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
IHZvaWQgQ2FwdHVyZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMsCkBAIC0xMjAyLDcgKzEyMDQsNyBAQCB2b2lkIENhcHR1cmVHZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEVfbGVuZ3RoKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcywKQEAgLTE2MjQsNyArMTYyNiw3
IEBAIHZvaWQgQ2FwdHVyZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEVfZGF0YShjb25zdCBTdGF0ZSAm
Z2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRV9sZW5ndGgoY29u
c3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqcGFyYW1zLApAQCAtMTYzNiw3ICsxNjM4LDcgQEAgdm9pZCBDYXB0dXJlR2V0blVuaWZv
cm1mdlJvYnVzdEFOR0xFX2xlbmd0aChjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVy
ZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRV9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zLApAQCAtMTY0
OCw3ICsxNjUwLDcgQEAgdm9pZCBDYXB0dXJlR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFX3BhcmFt
cyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RB
TkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcywKQEAgLTE2NjAsNyArMTY2Miw3IEBAIHZvaWQgQ2Fw
dHVyZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUs
CiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEVfcGFyYW1zKGNvbnN0IFN0YXRl
ICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMsCkBAIC0xNjcyLDcgKzE2NzQsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWl2Um9idXN0
QU5HTEVfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogdm9pZCBDYXB0dXJlR2V0blVuaWZv
cm11aXZSb2J1c3RBTkdMRV9sZW5ndGgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2FsbFZhbGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zLApAQCAtMTY4NCw3
ICsxNjg2LDcgQEAgdm9pZCBDYXB0dXJlR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRV9sZW5ndGgo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybXVpdlJvYnVzdEFO
R0xFX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMsCkBAIC0xOTYyLDExICsxOTY0LDExIEBA
IHZvaWQgQ2FwdHVyZUdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRV9zb3VyY2UoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCiB2b2lkIENhcHR1cmVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU1f
bmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIENhcHR1cmVTdHJpbmcobmFtZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBD
YXB0dXJlTWF0cml4TG9hZGZDSFJPTUlVTV9tYXRyaXgoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBA
IC0yMjEzLDcgKzIyMTUsNyBAQCB2b2lkIENhcHR1cmVCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9u
Q0hST01JVU1fbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVy
ZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJlU3Ry
aW5nKG5hbWUsIHBhcmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2FwdHVyZVByb2dyYW1QYXRoRnJh
Z21lbnRJbnB1dEdlbkNIUk9NSVVNX2NvZWZmcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTIy
MzUsNyArMjIzNyw3IEBAIHZvaWQgQ2FwdHVyZUJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUX25hbWUo
Y29uc3QgU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIENhcHR1cmVTdHJpbmcobmFtZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9p
ZCBDYXB0dXJlQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUX25hbWUoY29uc3QgU3RhdGUg
JmdsU3RhdGUsCkBAIC0yMjQ2LDcgKzIyNDgsNyBAQCB2b2lkIENhcHR1cmVCaW5kRnJhZ0RhdGFM
b2NhdGlvbkluZGV4ZWRFWFRfbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2Fw
dHVyZSAqcGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJl
U3RyaW5nKG5hbWUsIHBhcmFtQ2FwdHVyZSk7CiB9CiAKIHZvaWQgQ2FwdHVyZUdldEZyYWdEYXRh
SW5kZXhFWFRfbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKQEAgLTIyNTUsNyArMjI1Nyw3IEBA
IHZvaWQgQ2FwdHVyZUdldEZyYWdEYXRhSW5kZXhFWFRfbmFtZShjb25zdCBTdGF0ZSAmZ2xTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpw
YXJhbUNhcHR1cmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIENhcHR1cmVTdHJpbmco
bmFtZSwgcGFyYW1DYXB0dXJlKTsKIH0KIAogdm9pZCBDYXB0dXJlR2V0UHJvZ3JhbVJlc291cmNl
TG9jYXRpb25JbmRleEVYVF9uYW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLApAQCAtMjI2NSw3ICsy
MjY3LDcgQEAgdm9pZCBDYXB0dXJlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVF9u
YW1lKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbUNhcHR1cmUgKnBhcmFt
Q2FwdHVyZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQ2FwdHVyZVN0cmluZyhuYW1l
LCBwYXJhbUNhcHR1cmUpOwogfQogCiB2b2lkIENhcHR1cmVJbnNlcnRFdmVudE1hcmtlckVYVF9t
YXJrZXIoY29uc3QgU3RhdGUgJmdsU3RhdGUsCkBAIC0yMzI0LDYgKzIzMjYsMTUgQEAgdm9pZCBD
YXB0dXJlR2V0UXVlcnlPYmplY3RpNjR2RVhUX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwK
ICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKK3ZvaWQgQ2FwdHVyZUdldEludGVnZXI2NHZFWFRf
ZGF0YShjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0
ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpQYXJhbUNh
cHR1cmUgKnBhcmFtQ2FwdHVyZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKIHZvaWQg
Q2FwdHVyZUdldFF1ZXJ5T2JqZWN0aXZFWFRfcGFyYW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCkBAIC0y
MzcwLDcgKzIzODEsNyBAQCB2b2lkIENhcHR1cmVEcmF3QnVmZmVyc0VYVF9idWZzKGNvbnN0IFN0
YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVu
dW0gKmJ1ZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtQ2FwdHVyZSAq
cGFyYW1DYXB0dXJlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBDYXB0dXJlRHJhd0J1
ZmZlcnNfYnVmcyhnbFN0YXRlLCBpc0NhbGxWYWxpZCwgbiwgYnVmcywgcGFyYW1DYXB0dXJlKTsK
IH0KIAogdm9pZCBDYXB0dXJlRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUX2luZGljZXMoY29uc3Qg
U3RhdGUgJmdsU3RhdGUsCkBAIC0yNDQ1LDcgKzI0NTYsNyBAQCB2b2lkIENhcHR1cmVNZW1vcnlP
YmplY3RQYXJhbWV0ZXJpdkVYVF9wYXJhbXMoY29uc3QgU3RhdGUgJmdsU3RhdGUsCiB2b2lkIENh
cHR1cmVHZXRuVW5pZm9ybWZ2RVhUX3BhcmFtcyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUp
CkBAIC0yNDU2LDcgKzI0NjcsNyBAQCB2b2lkIENhcHR1cmVHZXRuVW5pZm9ybWZ2RVhUX3BhcmFt
cyhjb25zdCBTdGF0ZSAmZ2xTdGF0ZSwKIHZvaWQgQ2FwdHVyZUdldG5Vbmlmb3JtaXZFWFRfcGFy
YW1zKGNvbnN0IFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFyYW1DYXB0dXJlICpwYXJhbUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZW50cnlfcG9pbnRzX2VudW1fYXV0b2dlbi5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZW50cnlfcG9pbnRzX2VudW1fYXV0
b2dlbi5jcHAKaW5kZXggZTEzMmEyOGMyYTc0OTYxMmVmYTU3YmJjMTM0YzBlMGEzODVjMjRhZC4u
ZTJhMjI2MmExYjFjMjAxYjc4ZTRmZWU1ZGFlNWM0MzRjMDkwM2IzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VudHJ5X3BvaW50c19lbnVtX2F1dG9n
ZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9lbnRyeV9w
b2ludHNfZW51bV9hdXRvZ2VuLmNwcApAQCAtNjYsOCArNjYsNiBAQCBjb25zdCBjaGFyICpHZXRF
bnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbEJpbmRG
cmFnRGF0YUxvY2F0aW9uSW5kZXhlZCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmluZEZy
YWdEYXRhTG9jYXRpb25JbmRleGVkRVhUOgogICAgICAgICAgICAgcmV0dXJuICJnbEJpbmRGcmFn
RGF0YUxvY2F0aW9uSW5kZXhlZEVYVCI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmluZEZy
YWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbEJpbmRG
cmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6
QmluZEZyYW1lYnVmZmVyOgogICAgICAgICAgICAgcmV0dXJuICJnbEJpbmRGcmFtZWJ1ZmZlciI7
CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmluZEZyYW1lYnVmZmVyT0VTOgpAQCAtMTE2LDE2
ICsxMTQsMzIgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkK
ICAgICAgICAgICAgIHJldHVybiAiZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUiOwogICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWk6CiAgICAgICAgICAgICByZXR1
cm4gImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaSI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6
QmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVDoKKyAgICAgICAgICAgIHJldHVybiAiZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGVpRVhUIjsKKyAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVuZEVxdWF0
aW9uU2VwYXJhdGVpT0VTOgorICAgICAgICAgICAgcmV0dXJuICJnbEJsZW5kRXF1YXRpb25TZXBh
cmF0ZWlPRVMiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkJsZW5kRXF1YXRpb25pOgogICAg
ICAgICAgICAgcmV0dXJuICJnbEJsZW5kRXF1YXRpb25pIjsKKyAgICAgICAgY2FzZSBFbnRyeVBv
aW50OjpCbGVuZEVxdWF0aW9uaUVYVDoKKyAgICAgICAgICAgIHJldHVybiAiZ2xCbGVuZEVxdWF0
aW9uaUVYVCI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmxlbmRFcXVhdGlvbmlPRVM6Cisg
ICAgICAgICAgICByZXR1cm4gImdsQmxlbmRFcXVhdGlvbmlPRVMiOwogICAgICAgICBjYXNlIEVu
dHJ5UG9pbnQ6OkJsZW5kRnVuYzoKICAgICAgICAgICAgIHJldHVybiAiZ2xCbGVuZEZ1bmMiOwog
ICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkJsZW5kRnVuY1NlcGFyYXRlOgogICAgICAgICAgICAg
cmV0dXJuICJnbEJsZW5kRnVuY1NlcGFyYXRlIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpC
bGVuZEZ1bmNTZXBhcmF0ZWk6CiAgICAgICAgICAgICByZXR1cm4gImdsQmxlbmRGdW5jU2VwYXJh
dGVpIjsKKyAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQ6Cisg
ICAgICAgICAgICByZXR1cm4gImdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUIjsKKyAgICAgICAgY2Fz
ZSBFbnRyeVBvaW50OjpCbGVuZEZ1bmNTZXBhcmF0ZWlPRVM6CisgICAgICAgICAgICByZXR1cm4g
ImdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGVu
ZEZ1bmNpOgogICAgICAgICAgICAgcmV0dXJuICJnbEJsZW5kRnVuY2kiOworICAgICAgICBjYXNl
IEVudHJ5UG9pbnQ6OkJsZW5kRnVuY2lFWFQ6CisgICAgICAgICAgICByZXR1cm4gImdsQmxlbmRG
dW5jaUVYVCI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6QmxlbmRGdW5jaU9FUzoKKyAgICAg
ICAgICAgIHJldHVybiAiZ2xCbGVuZEZ1bmNpT0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50
OjpCbGl0RnJhbWVidWZmZXI6CiAgICAgICAgICAgICByZXR1cm4gImdsQmxpdEZyYW1lYnVmZmVy
IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpCbGl0RnJhbWVidWZmZXJBTkdMRToKQEAgLTI4
MCw2ICsyOTQsMTAgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBl
cCkKICAgICAgICAgICAgIHJldHVybiAiZ2xDb2xvck1hc2siOwogICAgICAgICBjYXNlIEVudHJ5
UG9pbnQ6OkNvbG9yTWFza2k6CiAgICAgICAgICAgICByZXR1cm4gImdsQ29sb3JNYXNraSI7Cisg
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6Q29sb3JNYXNraUVYVDoKKyAgICAgICAgICAgIHJldHVy
biAiZ2xDb2xvck1hc2tpRVhUIjsKKyAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpDb2xvck1hc2tp
T0VTOgorICAgICAgICAgICAgcmV0dXJuICJnbENvbG9yTWFza2lPRVMiOwogICAgICAgICBjYXNl
IEVudHJ5UG9pbnQ6OkNvbG9yTWF0ZXJpYWw6CiAgICAgICAgICAgICByZXR1cm4gImdsQ29sb3JN
YXRlcmlhbCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6Q29sb3JQM3VpOgpAQCAtMzYwLDE0
ICszNzgsNiBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQog
ICAgICAgICAgICAgcmV0dXJuICJnbENvcHlUZXh0dXJlU3ViSW1hZ2UyRCI7CiAgICAgICAgIGNh
c2UgRW50cnlQb2ludDo6Q29weVRleHR1cmVTdWJJbWFnZTNEOgogICAgICAgICAgICAgcmV0dXJu
ICJnbENvcHlUZXh0dXJlU3ViSW1hZ2UzRCI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6Q292
ZXJGaWxsUGF0aENIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbENvdmVyRmlsbFBhdGhD
SFJPTUlVTSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6Q292ZXJGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRD
SFJPTUlVTSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6Q292ZXJTdHJva2VQYXRoQ0hST01J
VU06Ci0gICAgICAgICAgICByZXR1cm4gImdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0iOwotICAg
ICAgICBjYXNlIEVudHJ5UG9pbnQ6OkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNOgot
ICAgICAgICAgICAgcmV0dXJuICJnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIjsK
ICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTToKICAg
ICAgICAgICAgIHJldHVybiAiZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSI7CiAgICAgICAg
IGNhc2UgRW50cnlQb2ludDo6Q3JlYXRlQnVmZmVyczoKQEAgLTQyNCw4ICs0MzQsNiBAQCBjb25z
dCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0
dXJuICJnbERlbGV0ZUxpc3RzIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpEZWxldGVNZW1v
cnlPYmplY3RzRVhUOgogICAgICAgICAgICAgcmV0dXJuICJnbERlbGV0ZU1lbW9yeU9iamVjdHNF
WFQiOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkRlbGV0ZVBhdGhzQ0hST01JVU06Ci0gICAg
ICAgICAgICByZXR1cm4gImdsRGVsZXRlUGF0aHNDSFJPTUlVTSI7CiAgICAgICAgIGNhc2UgRW50
cnlQb2ludDo6RGVsZXRlUHJvZ3JhbToKICAgICAgICAgICAgIHJldHVybiAiZ2xEZWxldGVQcm9n
cmFtIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpEZWxldGVQcm9ncmFtUGlwZWxpbmVzOgpA
QCAtNDgyLDYgKzQ5MCwxMCBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShFbnRyeVBv
aW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSI7
CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6RGlzYWJsZWk6CiAgICAgICAgICAgICByZXR1cm4g
ImdsRGlzYWJsZWkiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkRpc2FibGVpRVhUOgorICAg
ICAgICAgICAgcmV0dXJuICJnbERpc2FibGVpRVhUIjsKKyAgICAgICAgY2FzZSBFbnRyeVBvaW50
OjpEaXNhYmxlaU9FUzoKKyAgICAgICAgICAgIHJldHVybiAiZ2xEaXNhYmxlaU9FUyI7CiAgICAg
ICAgIGNhc2UgRW50cnlQb2ludDo6RGlzY2FyZEZyYW1lYnVmZmVyRVhUOgogICAgICAgICAgICAg
cmV0dXJuICJnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2lu
dDo6RGlzcGF0Y2hDb21wdXRlOgpAQCAtNTkwLDYgKzYwMiwxMCBAQCBjb25zdCBjaGFyICpHZXRF
bnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpFbmFibGVpOgog
ICAgICAgICAgICAgcmV0dXJuICJnbEVuYWJsZWkiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OkVuYWJsZWlFWFQ6CisgICAgICAgICAgICByZXR1cm4gImdsRW5hYmxlaUVYVCI7CisgICAgICAg
IGNhc2UgRW50cnlQb2ludDo6RW5hYmxlaU9FUzoKKyAgICAgICAgICAgIHJldHVybiAiZ2xFbmFi
bGVpT0VTIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpFbmQ6CiAgICAgICAgICAgICByZXR1
cm4gImdsRW5kIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpFbmRDb25kaXRpb25hbFJlbmRl
cjoKQEAgLTcxMCw4ICs3MjYsNiBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShFbnRy
eVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbEdlbkZyYW1lYnVmZmVyc09FUyI7CiAg
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6R2VuTGlzdHM6CiAgICAgICAgICAgICByZXR1cm4gImds
R2VuTGlzdHMiOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01JVU06Ci0g
ICAgICAgICAgICByZXR1cm4gImdsR2VuUGF0aHNDSFJPTUlVTSI7CiAgICAgICAgIGNhc2UgRW50
cnlQb2ludDo6R2VuUHJvZ3JhbVBpcGVsaW5lczoKICAgICAgICAgICAgIHJldHVybiAiZ2xHZW5Q
cm9ncmFtUGlwZWxpbmVzIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpHZW5RdWVyaWVzOgpA
QCAtODQ4LDYgKzg2Miw4IEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5UG9pbnROYW1lKEVudHJ5UG9p
bnQgZXApCiAgICAgICAgICAgICByZXR1cm4gImdsR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUi
OwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkdldEludGVnZXI2NHY6CiAgICAgICAgICAgICBy
ZXR1cm4gImdsR2V0SW50ZWdlcjY0diI7CisgICAgICAgIGNhc2UgRW50cnlQb2ludDo6R2V0SW50
ZWdlcjY0dkVYVDoKKyAgICAgICAgICAgIHJldHVybiAiZ2xHZXRJbnRlZ2VyNjR2RVhUIjsKICAg
ICAgICAgY2FzZSBFbnRyeVBvaW50OjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEU6CiAgICAgICAg
ICAgICByZXR1cm4gImdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFIjsKICAgICAgICAgY2FzZSBF
bnRyeVBvaW50OjpHZXRJbnRlZ2VyaV92OgpAQCAtOTEyLDEwICs5MjgsNiBAQCBjb25zdCBjaGFy
ICpHZXRFbnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJn
bEdldE9iamVjdFB0ckxhYmVsIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpHZXRPYmplY3RQ
dHJMYWJlbEtIUjoKICAgICAgICAgICAgIHJldHVybiAiZ2xHZXRPYmplY3RQdHJMYWJlbEtIUiI7
Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6R2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU06Ci0g
ICAgICAgICAgICByZXR1cm4gImdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0iOwotICAgICAg
ICBjYXNlIEVudHJ5UG9pbnQ6OkdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNOgotICAgICAgICAg
ICAgcmV0dXJuICJnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNIjsKICAgICAgICAgY2FzZSBF
bnRyeVBvaW50OjpHZXRQaXhlbE1hcGZ2OgogICAgICAgICAgICAgcmV0dXJuICJnbEdldFBpeGVs
TWFwZnYiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkdldFBpeGVsTWFwdWl2OgpAQCAtMTI0
MCw4ICsxMjUyLDEyIEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5UG9pbnROYW1lKEVudHJ5UG9pbnQg
ZXApCiAgICAgICAgICAgICByZXR1cm4gImdsSGludCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2lu
dDo6SW1wb3J0TWVtb3J5RmRFWFQ6CiAgICAgICAgICAgICByZXR1cm4gImdsSW1wb3J0TWVtb3J5
RmRFWFQiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkltcG9ydE1lbW9yeVppcmNvbkhhbmRs
ZUFOR0xFOgorICAgICAgICAgICAgcmV0dXJuICJnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFO
R0xFIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpJbXBvcnRTZW1hcGhvcmVGZEVYVDoKICAg
ICAgICAgICAgIHJldHVybiAiZ2xJbXBvcnRTZW1hcGhvcmVGZEVYVCI7CisgICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEU6CisgICAgICAgICAg
ICByZXR1cm4gImdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUiOwogICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6OkluZGV4TWFzazoKICAgICAgICAgICAgIHJldHVybiAiZ2xJbmRleE1h
c2siOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OkluZGV4UG9pbnRlcjoKQEAgLTEyOTgsNiAr
MTMxNCwxMCBAQCBjb25zdCBjaGFyICpHZXRFbnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQog
ICAgICAgICAgICAgcmV0dXJuICJnbElzRW5hYmxlZCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2lu
dDo6SXNFbmFibGVkaToKICAgICAgICAgICAgIHJldHVybiAiZ2xJc0VuYWJsZWRpIjsKKyAgICAg
ICAgY2FzZSBFbnRyeVBvaW50OjpJc0VuYWJsZWRpRVhUOgorICAgICAgICAgICAgcmV0dXJuICJn
bElzRW5hYmxlZGlFWFQiOworICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OklzRW5hYmxlZGlPRVM6
CisgICAgICAgICAgICByZXR1cm4gImdsSXNFbmFibGVkaU9FUyI7CiAgICAgICAgIGNhc2UgRW50
cnlQb2ludDo6SXNGZW5jZU5WOgogICAgICAgICAgICAgcmV0dXJuICJnbElzRmVuY2VOViI7CiAg
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6SXNGcmFtZWJ1ZmZlcjoKQEAgLTEzMDgsOCArMTMyOCw2
IEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5UG9pbnROYW1lKEVudHJ5UG9pbnQgZXApCiAgICAgICAg
ICAgICByZXR1cm4gImdsSXNMaXN0IjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpJc01lbW9y
eU9iamVjdEVYVDoKICAgICAgICAgICAgIHJldHVybiAiZ2xJc01lbW9yeU9iamVjdEVYVCI7Ci0g
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6SXNQYXRoQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1
cm4gImdsSXNQYXRoQ0hST01JVU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OklzUHJvZ3Jh
bToKICAgICAgICAgICAgIHJldHVybiAiZ2xJc1Byb2dyYW0iOwogICAgICAgICBjYXNlIEVudHJ5
UG9pbnQ6OklzUHJvZ3JhbVBpcGVsaW5lOgpAQCAtMTQzNCwxMCArMTQ1Miw2IEBAIGNvbnN0IGNo
YXIgKkdldEVudHJ5UG9pbnROYW1lKEVudHJ5UG9pbnQgZXApCiAgICAgICAgICAgICByZXR1cm4g
ImdsTWF0ZXJpYWx4diI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6TWF0cml4SW5kZXhQb2lu
dGVyT0VTOgogICAgICAgICAgICAgcmV0dXJuICJnbE1hdHJpeEluZGV4UG9pbnRlck9FUyI7Ci0g
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU06Ci0gICAg
ICAgICAgICByZXR1cm4gImdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0iOwotICAgICAgICBj
YXNlIEVudHJ5UG9pbnQ6Ok1hdHJpeExvYWRmQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1cm4g
ImdsTWF0cml4TG9hZGZDSFJPTUlVTSI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6TWF0cml4
TW9kZToKICAgICAgICAgICAgIHJldHVybiAiZ2xNYXRyaXhNb2RlIjsKICAgICAgICAgY2FzZSBF
bnRyeVBvaW50OjpNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFI6CkBAIC0xNjQ0LDE0ICsxNjU4
LDYgQEAgY29uc3QgY2hhciAqR2V0RW50cnlQb2ludE5hbWUoRW50cnlQb2ludCBlcCkKICAgICAg
ICAgICAgIHJldHVybiAiZ2xQYXRjaFBhcmFtZXRlcmZ2IjsKICAgICAgICAgY2FzZSBFbnRyeVBv
aW50OjpQYXRjaFBhcmFtZXRlcmk6CiAgICAgICAgICAgICByZXR1cm4gImdsUGF0Y2hQYXJhbWV0
ZXJpIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpQYXRoQ29tbWFuZHNDSFJPTUlVTToKLSAg
ICAgICAgICAgIHJldHVybiAiZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTSI7Ci0gICAgICAgIGNhc2Ug
RW50cnlQb2ludDo6UGF0aFBhcmFtZXRlcmZDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAi
Z2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpQYXRo
UGFyYW1ldGVyaUNIUk9NSVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbFBhdGhQYXJhbWV0ZXJp
Q0hST01JVU0iOwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlBhdGhTdGVuY2lsRnVuY0NIUk9N
SVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNIjsKICAg
ICAgICAgY2FzZSBFbnRyeVBvaW50OjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrOgogICAgICAgICAg
ICAgcmV0dXJuICJnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2siOwogICAgICAgICBjYXNlIEVudHJ5
UG9pbnQ6OlBpeGVsTWFwZnY6CkBAIC0xNzI0LDggKzE3MzAsNiBAQCBjb25zdCBjaGFyICpHZXRF
bnRyeVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbFByb2dy
YW1CaW5hcnlPRVMiOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlByb2dyYW1QYXJhbWV0ZXJp
OgogICAgICAgICAgICAgcmV0dXJuICJnbFByb2dyYW1QYXJhbWV0ZXJpIjsKLSAgICAgICAgY2Fz
ZSBFbnRyeVBvaW50OjpQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTToKLSAgICAg
ICAgICAgIHJldHVybiAiZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSI7CiAg
ICAgICAgIGNhc2UgRW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xZDoKICAgICAgICAgICAgIHJl
dHVybiAiZ2xQcm9ncmFtVW5pZm9ybTFkIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpQcm9n
cmFtVW5pZm9ybTFkdjoKQEAgLTIwNTIsMTAgKzIwNTYsNiBAQCBjb25zdCBjaGFyICpHZXRFbnRy
eVBvaW50TmFtZShFbnRyeVBvaW50IGVwKQogICAgICAgICAgICAgcmV0dXJuICJnbFNpZ25hbFNl
bWFwaG9yZUVYVCI7CiAgICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3BlY2lhbGl6ZVNoYWRlcjoK
ICAgICAgICAgICAgIHJldHVybiAiZ2xTcGVjaWFsaXplU2hhZGVyIjsKLSAgICAgICAgY2FzZSBF
bnRyeVBvaW50OjpTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAi
Z2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3Rl
bmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU06Ci0gICAgICAgICAgICByZXR1cm4gImdsU3Rl
bmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6
OlN0ZW5jaWxGdW5jOgogICAgICAgICAgICAgcmV0dXJuICJnbFN0ZW5jaWxGdW5jIjsKICAgICAg
ICAgY2FzZSBFbnRyeVBvaW50OjpTdGVuY2lsRnVuY1NlcGFyYXRlOgpAQCAtMjA2OCwxOCArMjA2
OCw2IEBAIGNvbnN0IGNoYXIgKkdldEVudHJ5UG9pbnROYW1lKEVudHJ5UG9pbnQgZXApCiAgICAg
ICAgICAgICByZXR1cm4gImdsU3RlbmNpbE9wIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpT
dGVuY2lsT3BTZXBhcmF0ZToKICAgICAgICAgICAgIHJldHVybiAiZ2xTdGVuY2lsT3BTZXBhcmF0
ZSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTToK
LSAgICAgICAgICAgIHJldHVybiAiZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNIjsKLSAgICAg
ICAgY2FzZSBFbnRyeVBvaW50OjpTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNOgot
ICAgICAgICAgICAgcmV0dXJuICJnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0i
OwotICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9N
SVVNOgotICAgICAgICAgICAgcmV0dXJuICJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9N
SVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xTdGVuY2lsVGhlbkNvdmVy
RmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSI7Ci0gICAgICAgIGNhc2UgRW50cnlQb2ludDo6U3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTToKLSAgICAgICAgICAgIHJldHVybiAiZ2xT
dGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNIjsKLSAgICAgICAgY2FzZSBFbnRyeVBv
aW50OjpTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNOgotICAgICAg
ICAgICAgcmV0dXJuICJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0iOwogICAgICAgICBjYXNlIEVudHJ5UG9pbnQ6OlRlc3RGZW5jZU5WOgogICAgICAgICAgICAg
cmV0dXJuICJnbFRlc3RGZW5jZU5WIjsKICAgICAgICAgY2FzZSBFbnRyeVBvaW50OjpUZXhCdWZm
ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZW50
cnlfcG9pbnRzX2VudW1fYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2VudHJ5X3BvaW50c19lbnVtX2F1dG9nZW4uaAppbmRleCA5OTU5YzA4ODRjNjUyOWM5
NzkxM2UwZjRjMzRkOTcwM2ZiYzAwNjFmLi4wMWRjM2YyNjM3MWVkYzMzNGNmYTY3Y2M3YzAwZDdm
Mjg3Nzc5YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvZW50cnlfcG9pbnRzX2VudW1fYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9lbnRyeV9wb2ludHNfZW51bV9hdXRvZ2VuLmgKQEAgLTM5LDcgKzM5
LDYgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgQmluZEZyYWdEYXRhTG9jYXRpb25FWFQs
CiAgICAgQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkLAogICAgIEJpbmRGcmFnRGF0YUxvY2F0
aW9uSW5kZXhlZEVYVCwKLSAgICBCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0sCiAg
ICAgQmluZEZyYW1lYnVmZmVyLAogICAgIEJpbmRGcmFtZWJ1ZmZlck9FUywKICAgICBCaW5kSW1h
Z2VUZXh0dXJlLApAQCAtNjQsMTEgKzYzLDE5IEBAIGVudW0gY2xhc3MgRW50cnlQb2ludAogICAg
IEJsZW5kRXF1YXRpb24sCiAgICAgQmxlbmRFcXVhdGlvblNlcGFyYXRlLAogICAgIEJsZW5kRXF1
YXRpb25TZXBhcmF0ZWksCisgICAgQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCwKKyAgICBCbGVu
ZEVxdWF0aW9uU2VwYXJhdGVpT0VTLAogICAgIEJsZW5kRXF1YXRpb25pLAorICAgIEJsZW5kRXF1
YXRpb25pRVhULAorICAgIEJsZW5kRXF1YXRpb25pT0VTLAogICAgIEJsZW5kRnVuYywKICAgICBC
bGVuZEZ1bmNTZXBhcmF0ZSwKICAgICBCbGVuZEZ1bmNTZXBhcmF0ZWksCisgICAgQmxlbmRGdW5j
U2VwYXJhdGVpRVhULAorICAgIEJsZW5kRnVuY1NlcGFyYXRlaU9FUywKICAgICBCbGVuZEZ1bmNp
LAorICAgIEJsZW5kRnVuY2lFWFQsCisgICAgQmxlbmRGdW5jaU9FUywKICAgICBCbGl0RnJhbWVi
dWZmZXIsCiAgICAgQmxpdEZyYW1lYnVmZmVyQU5HTEUsCiAgICAgQmxpdE5hbWVkRnJhbWVidWZm
ZXIsCkBAIC0xNDYsNiArMTUzLDggQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgQ29sb3I0
eCwKICAgICBDb2xvck1hc2ssCiAgICAgQ29sb3JNYXNraSwKKyAgICBDb2xvck1hc2tpRVhULAor
ICAgIENvbG9yTWFza2lPRVMsCiAgICAgQ29sb3JNYXRlcmlhbCwKICAgICBDb2xvclAzdWksCiAg
ICAgQ29sb3JQM3VpdiwKQEAgLTE4NiwxMCArMTk1LDYgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50
CiAgICAgQ29weVRleHR1cmVTdWJJbWFnZTFELAogICAgIENvcHlUZXh0dXJlU3ViSW1hZ2UyRCwK
ICAgICBDb3B5VGV4dHVyZVN1YkltYWdlM0QsCi0gICAgQ292ZXJGaWxsUGF0aENIUk9NSVVNLAot
ICAgIENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwKLSAgICBDb3ZlclN0cm9rZVBhdGhD
SFJPTUlVTSwKLSAgICBDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSwKICAgICBDb3Zl
cmFnZU1vZHVsYXRpb25DSFJPTUlVTSwKICAgICBDcmVhdGVCdWZmZXJzLAogICAgIENyZWF0ZUZy
YW1lYnVmZmVycywKQEAgLTIxOCw3ICsyMjMsNiBAQCBlbnVtIGNsYXNzIEVudHJ5UG9pbnQKICAg
ICBEZWxldGVGcmFtZWJ1ZmZlcnNPRVMsCiAgICAgRGVsZXRlTGlzdHMsCiAgICAgRGVsZXRlTWVt
b3J5T2JqZWN0c0VYVCwKLSAgICBEZWxldGVQYXRoc0NIUk9NSVVNLAogICAgIERlbGV0ZVByb2dy
YW0sCiAgICAgRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcywKICAgICBEZWxldGVRdWVyaWVzLApAQCAt
MjQ3LDYgKzI1MSw4IEBAIGVudW0gY2xhc3MgRW50cnlQb2ludAogICAgIERpc2FibGVWZXJ0ZXhB
cnJheUF0dHJpYiwKICAgICBEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksCiAgICAgRGlzYWJsZWks
CisgICAgRGlzYWJsZWlFWFQsCisgICAgRGlzYWJsZWlPRVMsCiAgICAgRGlzY2FyZEZyYW1lYnVm
ZmVyRVhULAogICAgIERpc3BhdGNoQ29tcHV0ZSwKICAgICBEaXNwYXRjaENvbXB1dGVJbmRpcmVj
dCwKQEAgLTMwMSw2ICszMDcsOCBAQCBlbnVtIGNsYXNzIEVudHJ5UG9pbnQKICAgICBFbmFibGVW
ZXJ0ZXhBcnJheUF0dHJpYiwKICAgICBFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwKICAgICBFbmFi
bGVpLAorICAgIEVuYWJsZWlFWFQsCisgICAgRW5hYmxlaU9FUywKICAgICBFbmQsCiAgICAgRW5k
Q29uZGl0aW9uYWxSZW5kZXIsCiAgICAgRW5kTGlzdCwKQEAgLTM2MSw3ICszNjksNiBAQCBlbnVt
IGNsYXNzIEVudHJ5UG9pbnQKICAgICBHZW5GcmFtZWJ1ZmZlcnMsCiAgICAgR2VuRnJhbWVidWZm
ZXJzT0VTLAogICAgIEdlbkxpc3RzLAotICAgIEdlblBhdGhzQ0hST01JVU0sCiAgICAgR2VuUHJv
Z3JhbVBpcGVsaW5lcywKICAgICBHZW5RdWVyaWVzLAogICAgIEdlblF1ZXJpZXNFWFQsCkBAIC00
MzAsNiArNDM3LDcgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgR2V0SW50ZWdlcjY0aV92
LAogICAgIEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFLAogICAgIEdldEludGVnZXI2NHYsCisg
ICAgR2V0SW50ZWdlcjY0dkVYVCwKICAgICBHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUsCiAgICAg
R2V0SW50ZWdlcmlfdiwKICAgICBHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUsCkBAIC00NjIsOCAr
NDcwLDYgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgR2V0T2JqZWN0TGFiZWxLSFIsCiAg
ICAgR2V0T2JqZWN0UHRyTGFiZWwsCiAgICAgR2V0T2JqZWN0UHRyTGFiZWxLSFIsCi0gICAgR2V0
UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0sCi0gICAgR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0s
CiAgICAgR2V0UGl4ZWxNYXBmdiwKICAgICBHZXRQaXhlbE1hcHVpdiwKICAgICBHZXRQaXhlbE1h
cHVzdiwKQEAgLTYyNiw3ICs2MzIsOSBAQCBlbnVtIGNsYXNzIEVudHJ5UG9pbnQKICAgICBHZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFLAogICAgIEhpbnQsCiAgICAgSW1wb3J0TWVtb3J5RmRFWFQs
CisgICAgSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUsCiAgICAgSW1wb3J0U2VtYXBob3Jl
RmRFWFQsCisgICAgSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUsCiAgICAgSW5kZXhN
YXNrLAogICAgIEluZGV4UG9pbnRlciwKICAgICBJbmRleGQsCkBAIC02NTUsMTIgKzY2MywxMyBA
QCBlbnVtIGNsYXNzIEVudHJ5UG9pbnQKICAgICBJc0J1ZmZlciwKICAgICBJc0VuYWJsZWQsCiAg
ICAgSXNFbmFibGVkaSwKKyAgICBJc0VuYWJsZWRpRVhULAorICAgIElzRW5hYmxlZGlPRVMsCiAg
ICAgSXNGZW5jZU5WLAogICAgIElzRnJhbWVidWZmZXIsCiAgICAgSXNGcmFtZWJ1ZmZlck9FUywK
ICAgICBJc0xpc3QsCiAgICAgSXNNZW1vcnlPYmplY3RFWFQsCi0gICAgSXNQYXRoQ0hST01JVU0s
CiAgICAgSXNQcm9ncmFtLAogICAgIElzUHJvZ3JhbVBpcGVsaW5lLAogICAgIElzUXVlcnksCkBA
IC03MjMsOCArNzMyLDYgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgTWF0ZXJpYWx4LAog
ICAgIE1hdGVyaWFseHYsCiAgICAgTWF0cml4SW5kZXhQb2ludGVyT0VTLAotICAgIE1hdHJpeExv
YWRJZGVudGl0eUNIUk9NSVVNLAotICAgIE1hdHJpeExvYWRmQ0hST01JVU0sCiAgICAgTWF0cml4
TW9kZSwKICAgICBNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIsCiAgICAgTWVtb3J5QmFycmll
ciwKQEAgLTgyOCwxMCArODM1LDYgQEAgZW51bSBjbGFzcyBFbnRyeVBvaW50CiAgICAgUGFzc1Ro
cm91Z2gsCiAgICAgUGF0Y2hQYXJhbWV0ZXJmdiwKICAgICBQYXRjaFBhcmFtZXRlcmksCi0gICAg
UGF0aENvbW1hbmRzQ0hST01JVU0sCi0gICAgUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSwKLSAgICBQ
YXRoUGFyYW1ldGVyaUNIUk9NSVVNLAotICAgIFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNLAogICAg
IFBhdXNlVHJhbnNmb3JtRmVlZGJhY2ssCiAgICAgUGl4ZWxNYXBmdiwKICAgICBQaXhlbE1hcHVp
diwKQEAgLTg2OCw3ICs4NzEsNiBAQCBlbnVtIGNsYXNzIEVudHJ5UG9pbnQKICAgICBQcm9ncmFt
QmluYXJ5LAogICAgIFByb2dyYW1CaW5hcnlPRVMsCiAgICAgUHJvZ3JhbVBhcmFtZXRlcmksCi0g
ICAgUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0sCiAgICAgUHJvZ3JhbVVuaWZv
cm0xZCwKICAgICBQcm9ncmFtVW5pZm9ybTFkdiwKICAgICBQcm9ncmFtVW5pZm9ybTFmLApAQCAt
MTAzMiwyMCArMTAzNCwxMiBAQCBlbnVtIGNsYXNzIEVudHJ5UG9pbnQKICAgICBTaGFkZXJTdG9y
YWdlQmxvY2tCaW5kaW5nLAogICAgIFNpZ25hbFNlbWFwaG9yZUVYVCwKICAgICBTcGVjaWFsaXpl
U2hhZGVyLAotICAgIFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNLAotICAgIFN0ZW5jaWxGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNLAogICAgIFN0ZW5jaWxGdW5jLAogICAgIFN0ZW5jaWxGdW5jU2Vw
YXJhdGUsCiAgICAgU3RlbmNpbE1hc2ssCiAgICAgU3RlbmNpbE1hc2tTZXBhcmF0ZSwKICAgICBT
dGVuY2lsT3AsCiAgICAgU3RlbmNpbE9wU2VwYXJhdGUsCi0gICAgU3RlbmNpbFN0cm9rZVBhdGhD
SFJPTUlVTSwKLSAgICBTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNLAotICAgIFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNLAotICAgIFN0ZW5jaWxUaGVuQ292ZXJGaWxs
UGF0aEluc3RhbmNlZENIUk9NSVVNLAotICAgIFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hS
T01JVU0sCi0gICAgU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSwK
ICAgICBUZXN0RmVuY2VOViwKICAgICBUZXhCdWZmZXIsCiAgICAgVGV4QnVmZmVyUmFuZ2UsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21h
cF9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3Jt
YXRfbWFwX2F1dG9nZW4uY3BwCmluZGV4IDhhYjk3OTQzMDQxNjc5NGEyZjdlNTg2OTQ5NDU2OTYy
ODUwYTJlOTQuLjAyNDhmYWI1OGU2NTJiMTVjNjc1NWY2N2VjOWJmYjVmOTlhOGI5NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3Jt
YXRfbWFwX2F1dG9nZW4uY3BwCkBAIC0yLDcgKzIsNyBAQAogLy8gR2VuZXJhdGVkIGJ5IGdlbl9m
b3JtYXRfbWFwLnB5IHVzaW5nIGRhdGEgZnJvbSBmb3JtYXRfbWFwX2RhdGEuanNvbi4KIC8vIEVT
MyBmb3JtYXQgaW5mbyBmcm9tIGVzM19mb3JtYXRfdHlwZV9jb21iaW5hdGlvbnMuanNvbi4KIC8v
Ci0vLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAvLwpAQCAtNTIsNiArNTIsMjYgQEAgR0xlbnVtIEdldFNpemVkRm9ybWF0
SW50ZXJuYWwoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JH
VEMyX0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQ7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VY
VDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBH
TF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVDoKICAg
ICAgICAgICAgIHN3aXRjaCAodHlwZSkKICAgICAgICAgICAgIHsKQEAgLTE2Miw2ICsxODIsMjYg
QEAgR0xlbnVtIEdldFNpemVkRm9ybWF0SW50ZXJuYWwoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgICAgICBzd2l0
Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9TSUdORURf
UkVEX0dSRUVOX1JHVEMyX0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAg
ICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9DT01QUkVTU0VE
X1NJR05FRF9SRURfUkdUQzFfRVhUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfQlBUQ19VTk9STV9FWFQ6CiAg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9kYXRhLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0X21hcF9kYXRhLmpzb24K
aW5kZXggNjM0OGE0YWIzM2ExOWE5MTYwODFiZDhmZTZmZDVhYTkzODA3NDNkOS4uZDMwMTg3YmY3
YzZjNGE0NjY2OGUyYWE1YmY5Nzc0ODVhYzIxMjc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfZGF0YS5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2RhdGEuanNvbgpAQCAt
MTI4LDYgKzEyOCwxOCBAQAogICAgICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVCI6IHsKICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUNV9FWFQiCiAgICAgfSwKKyAgICAiR0xfQ09NUFJFU1NFRF9SRURfUkdU
QzFfRVhUIjogeworICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9DT01QUkVTU0VEX1JF
RF9SR1RDMV9FWFQiCisgICAgfSwKKyAgICAiR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMx
X0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9TSUdO
RURfUkVEX1JHVEMxX0VYVCIKKyAgICB9LAorICAgICJHTF9DT01QUkVTU0VEX1JFRF9HUkVFTl9S
R1RDMl9FWFQiOiB7CisgICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX0NPTVBSRVNTRURf
UkVEX0dSRUVOX1JHVEMyX0VYVCIKKyAgICB9LAorICAgICJHTF9DT01QUkVTU0VEX1NJR05FRF9S
RURfR1JFRU5fUkdUQzJfRVhUIjogeworICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9D
T01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhUIgorICAgIH0sCiAgICAgIkdMX0NP
TVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVCI6IHsKICAgICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5PUk1fRVhUIgogICAgIH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcApp
bmRleCA4NjJlNGE3ZWM0OTdhNWE3MmQzYzk0ZTQ1YzQwMzdmOTU1YzE5NTE2Li5lYjgyNzQ5ODUx
M2Y5ZTI0ZTFlZTU4YWViZTYyZTllMDIyZTU1YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKQEAgLTk1NSw2ICs5NTUs
MTMgQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5m
b01hcCgpCiAgICAgQWRkQ29tcHJlc3NlZEZvcm1hdCgmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzZ4Nng1X09FUywgIDYsICA2LCA1LCAxMjgsIDQsIHRydWUsICBSZXF1aXJl
RXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDT0VTPiwgICAgQWx3YXlzU3Vw
cG9ydGVkLCBOZXZlclN1cHBvcnRlZCwgICAgICBOZXZlclN1cHBvcnRlZCwgTmV2ZXJTdXBwb3J0
ZWQpOwogICAgIEFkZENvbXByZXNzZWRGb3JtYXQoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ182eDZ4Nl9PRVMsICA2LCAgNiwgNiwgMTI4LCA0LCB0cnVlLCAgUmVxdWlyZUV4
dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ09FUz4sICAgIEFsd2F5c1N1cHBv
cnRlZCwgTmV2ZXJTdXBwb3J0ZWQsICAgICAgTmV2ZXJTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVk
KTsKIAorICAgIC8vIEZyb20gRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAg
ICAgIHwgVyB8IEggfEQgfCBCUyB8Q0N8IFNSR0IgfCBUZXh0dXJlIHN1cHBvcnRlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICAgfCBUZXh0dXJlIGF0dGFjaG1l
bnQgfCBSZW5kZXJidWZmZXIgIHwgQmxlbmQKKyAgICBBZGRDb21wcmVzc2VkRm9ybWF0KCZtYXAs
IEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwgICAgICAgICAgICAgIDQsICA0LCAxLCAgNjQs
IDEsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25SR1RD
PiwgQWx3YXlzU3VwcG9ydGVkLCBOZXZlclN1cHBvcnRlZCwgICAgICBOZXZlclN1cHBvcnRlZCwg
TmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZENvbXByZXNzZWRGb3JtYXQoJm1hcCwgR0xfQ09NUFJF
U1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVCwgICAgICAgNCwgIDQsIDEsICA2NCwgMSwgZmFsc2Us
IFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblJHVEM+LCBBbHdheXNT
dXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkLCAgICAgIE5ldmVyU3VwcG9ydGVkLCBOZXZlclN1cHBv
cnRlZCk7CisgICAgQWRkQ29tcHJlc3NlZEZvcm1hdCgmbWFwLCBHTF9DT01QUkVTU0VEX1JFRF9H
UkVFTl9SR1RDMl9FWFQsICAgICAgICA0LCAgNCwgMSwgMTI4LCAyLCBmYWxzZSwgUmVxdWlyZUV4
dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uUkdUQz4sIEFsd2F5c1N1cHBvcnRlZCwg
TmV2ZXJTdXBwb3J0ZWQsICAgICAgTmV2ZXJTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVkKTsKKyAg
ICBBZGRDb21wcmVzc2VkRm9ybWF0KCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVF
Tl9SR1RDMl9FWFQsIDQsICA0LCAxLCAxMjgsIDIsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNp
b25zOjp0ZXh0dXJlQ29tcHJlc3Npb25SR1RDPiwgQWx3YXlzU3VwcG9ydGVkLCBOZXZlclN1cHBv
cnRlZCwgICAgICBOZXZlclN1cHBvcnRlZCwgTmV2ZXJTdXBwb3J0ZWQpOworCiAgICAgLy8gRnJv
bSBFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjCiAgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgVyB8IEggfEQg
fCBCUyB8Q0N8IFNSR0IgfCBUZXh0dXJlIHN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgRmlsdGVyYWJsZSAgICAgfCBUZXh0dXJlIGF0dGFjaG1lbnQgfCBSZW5kZXJidWZm
ZXIgIHwgQmxlbmQKICAgICBBZGRDb21wcmVzc2VkRm9ybWF0KCZtYXAsIEdMX0NPTVBSRVNTRURf
UkdCQV9CUFRDX1VOT1JNX0VYVCwgICAgICAgICA0LCAgNCwgMSwgMTI4LCA0LCBmYWxzZSwgUmVx
dWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQlBUQz4sIEFsd2F5c1N1cHBv
cnRlZCwgTmV2ZXJTdXBwb3J0ZWQsICAgICAgTmV2ZXJTdXBwb3J0ZWQsIE5ldmVyU3VwcG9ydGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3Jt
YXR1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0
aWxzLmgKaW5kZXggZDRhYmQxZDMxODBlZGI3ZjhjNGM1MmFhNTVlNzFiZTBiOWUyZmM2YS4uZmEx
NzdmMDA1YTA2ZmI3ZGJhMmI5YTE5YmFlNjg5NjcyODQ4OTI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmgKQEAgLTE0LDYgKzE0
LDcgQEAKICNpbmNsdWRlIDxvc3RyZWFtPgogCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNs
dWRlICJjb21tb24vYW5kcm9pZF91dGlsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lvbi5o
IgpAQCAtMjcxLDYgKzI3MiwxNiBAQCB0eXBlZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxHTGVudW0s
IHN0ZDo6dW5vcmRlcmVkX21hcDxHTGVudW0sIEludGVybmFsRm9ybWF0Pj4KICAgICBJbnRlcm5h
bEZvcm1hdEluZm9NYXA7CiBjb25zdCBJbnRlcm5hbEZvcm1hdEluZm9NYXAgJkdldEludGVybmFs
Rm9ybWF0TWFwKCk7CiAKK0FOR0xFX0lOTElORSBpbnQgR2V0TmF0aXZlVmlzdWFsSUQoY29uc3Qg
SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0KQoreworICAgIGludCBuYXRpdmVWaXN1YWxJ
ZCA9IDA7CisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQorICAgIG5hdGl2ZVZp
c3VhbElkID0KKyAgICAgICAgYW5nbGU6OmFuZHJvaWQ6OkdMSW50ZXJuYWxGb3JtYXRUb05hdGl2
ZVBpeGVsRm9ybWF0KGludGVybmFsRm9ybWF0LmludGVybmFsRm9ybWF0KTsKKyNlbmRpZgorICAg
IHJldHVybiBuYXRpdmVWaXN1YWxJZDsKK30KKwogLy8gRnJvbSB0aGUgRVNTTCAzLjAwLjQgc3Bl
YzoKIC8vIFZlcnRleCBzaGFkZXIgaW5wdXRzIGNhbiBvbmx5IGJlIGZsb2F0LCBmbG9hdGluZy1w
b2ludCB2ZWN0b3JzLCBtYXRyaWNlcywgc2lnbmVkIGFuZCB1bnNpZ25lZAogLy8gaW50ZWdlcnMg
YW5kIGludGVnZXIgdmVjdG9ycy4gVmVydGV4IHNoYWRlciBpbnB1dHMgY2Fubm90IGJlIGFycmF5
cyBvciBzdHJ1Y3R1cmVzLgpAQCAtMzI0LDYgKzMzNSw3NCBAQCBhbmdsZTo6Rm9ybWF0SUQgR2V0
Q3VycmVudFZhbHVlRm9ybWF0SUQoVmVydGV4QXR0cmliVHlwZSBjdXJyZW50VmFsdWVUeXBlKTsK
IGNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0RnJvbUlEKGFuZ2xlOjpGb3JtYXRJ
RCB2ZXJ0ZXhGb3JtYXRJRCk7CiBzaXplX3QgR2V0VmVydGV4Rm9ybWF0U2l6ZShhbmdsZTo6Rm9y
bWF0SUQgdmVydGV4Rm9ybWF0SUQpOwogCitBTkdMRV9JTkxJTkUgYm9vbCBJc1MzVENGb3JtYXQo
Y29uc3QgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0VYVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQx
X0VYVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VY
VDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoK
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitBTkdMRV9JTkxJTkUgYm9vbCBJc1JHVENGb3JtYXQo
Y29uc3QgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhUOgorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworQU5HTEVf
SU5MSU5FIGJvb2wgSXNBU1RDMkRGb3JtYXQoY29uc3QgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBp
ZiAoKGZvcm1hdCA+PSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSICYmCisgICAgICAg
ICBmb3JtYXQgPD0gR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSKSB8fAorICAgICAg
ICAoZm9ybWF0ID49IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiAmJgor
ICAgICAgICAgZm9ybWF0IDw9IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJf
S0hSKSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0FOR0xFX0lOTElORSBib29sIElzRVRDMkVBQ0Zvcm1hdChjb25zdCBHTGVudW0g
Zm9ybWF0KQoreworICAgIC8vIEVTIDMuMSwgVGFibGUgOC4xOQorICAgIHN3aXRjaCAoZm9ybWF0
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1IxMV9FQUM6CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHMTFfRUFDOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFD
OgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyOgorICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfU1JHQjhfRVRDMjoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JH
QjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQThfRVRDMl9FQUM6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
RVRDMl9FQUM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogLy8gQ2hlY2sgaWYgYW4gaW50
ZXJuYWwgZm9ybWF0IGlzIGV2ZXIgdmFsaWQgaW4gRVMzLiAgTWFrZXMgbm8gY2hlY2tzIGFib3V0
IHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMKIC8vIGNvbnRleHQuCiBib29sIFZhbGlkRVMzSW50ZXJu
YWxGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3JlcGxheV9hdXRvZ2VuLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3Jl
cGxheV9hdXRvZ2VuLmNwcAppbmRleCBmNmU0YzUxMmFkZjVhYjhmODI2YTVlNmYxZTRmMzc0ZjJi
ODdkMWVmLi4xZmM4NDY5OWI3ZWQ2MGUyYzBmYzVjYWIxZjQ0OTYzYzFhNDQwZjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV9y
ZXBsYXlfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2ZyYW1lX2NhcHR1cmVfcmVwbGF5X2F1dG9nZW4uY3BwCkBAIC0xNjA5LDIxICsxNjA5LDI0
IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3JtZnY6CiAgICAgICAgICAgICBj
b250ZXh0LT5nZXRVbmlmb3JtZnYocGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFy
YW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl
LlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsYXlDb250ZXh0LT5nZXRSZWFkQnVmZmVyUG9pbnRlcjxHTGZsb2F0ICo+KAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInBhcmFtcyIsIFBh
cmFtVHlwZTo6VEdMZmxvYXRQb2ludGVyLCAyKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OkdldFVuaWZvcm1pdjoKICAgICAgICAgICAgIGNvbnRl
eHQtPmdldFVuaWZvcm1pdihwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5
cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50
LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5p
Zm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxh
eUNvbnRleHQtPmdldFJlYWRCdWZmZXJQb2ludGVyPEdMaW50ICo+KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInBhcmFtcyIsIFBhcmFtVHlw
ZTo6VEdMaW50UG9pbnRlciwgMikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IGdsOjpFbnRyeVBvaW50OjpHZXRVbmlmb3JtdWl2OgogICAgICAgICAgICAgY29udGV4dC0+Z2V0
VW5pZm9ybXVpdihwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEp
LnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
LCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZv
cm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5
Q29udGV4dC0+Z2V0UmVhZEJ1ZmZlclBvaW50ZXI8R0x1aW50ICo+KAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwYXJhbXMiLCBQYXJhbVR5
cGU6OlRHTHVpbnRQb2ludGVyLCAyKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjY2LDcg
KzE2NjksOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnYoCiAgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJv
Z3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFs
LAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6
OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAg
ICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52
YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldFJlYWRC
dWZmZXJQb2ludGVyPEdMZmxvYXQgKj4oCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgicGFyYW1zIiwgUGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50ZXIsIDMpKSk7CkBAIC0xNjc1
LDcgKzE2NzksOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtaXYoCiAgICAgICAgICAg
ICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVy
UHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlE
VmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5
cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkK
KyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAy
KS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldFJl
YWRCdWZmZXJQb2ludGVyPEdMaW50ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInBhcmFtcyIsIFBhcmFtVHlwZTo6VEdMaW50UG9pbnRlciwgMykpKTsKQEAgLTE2ODQs
NyArMTY4OSw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm11aXYoCiAgICAgICAgICAg
ICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVy
UHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlE
VmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5
cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkK
KyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImJ1ZlNpemUiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAy
KS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldFJl
YWRCdWZmZXJQb2ludGVyPEdMdWludCAqPigKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJwYXJhbXMiLCBQYXJhbVR5cGU6OlRHTHVpbnRQb2ludGVyLCAzKSkpOwpAQCAtMjA5
NCwxNCArMjEwMCwxNiBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWYoCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpU
U2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJv
Z3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQ
YXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlv
biwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAg
ICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwg
MikudmFsdWUuR0xmbG9hdFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBn
bDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xZnY6CiAgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTFmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dy
YW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZh
bCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFy
YW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUu
VW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291
bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAg
ICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4o
CiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6
OlRHTGZsb2F0Q29uc3RQb2ludGVyLCAzKSkpOwpAQCAtMjExMCwxNCArMjExOCwxNiBAQCB2b2lk
IEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWkoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQog
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSku
dmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAg
ICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDIpLnZhbHVlLkdMaW50VmFsKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpQcm9ncmFtVW5p
Zm9ybTFpdjoKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWl2KAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0
QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlciwgMykpKTsK
QEAgLTIxMjYsMTQgKzIxMzYsMTYgQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTF1
aSgKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJh
bVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5T
aGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2Nh
dGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9y
bUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9u
VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRH
THVpbnQsIDIpLnZhbHVlLkdMdWludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBnbDo6RW50cnlQb2ludDo6UHJvZ3JhbVVuaWZvcm0xdWl2OgogICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWl2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAg
ICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVl
LkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAg
IC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAg
ICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0x1
aW50ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFy
YW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCAzKSkpOwpAQCAtMjE0Miw3ICsyMTU0LDggQEAg
dm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJmKAogICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwg
MCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAg
ICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMZmxvYXQsIDIpLnZhbHVlLkdMZmxvYXRW
YWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdM
ZmxvYXQsIDMpLnZhbHVlLkdMZmxvYXRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTUw
LDcgKzIxNjMsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmZ2KAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0
QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIDMp
KSk7CkBAIC0yMTU5LDcgKzIxNzMsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChn
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
MmkoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFy
YW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUu
U2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9j
YXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAg
ICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZv
cm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlv
blZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpU
R0xpbnQsIDIpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgidjEiLCBQYXJhbVR5cGU6OlRHTGludCwgMykudmFsdWUuR0xpbnRWYWwpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMTY3LDcgKzIxODIsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5
Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtMml2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAg
LnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3Jt
TG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBh
cmFtVHlwZTo6VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAg
cmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xpbnQgKj4oCiAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGludENv
bnN0UG9pbnRlciwgMykpKTsKQEAgLTIxNzYsNyArMjE5Miw4IEBAIHZvaWQgRnJhbWVDYXB0dXJl
OjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm0ydWkoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9n
cmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAg
ICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRW
YWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBh
cmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVl
LlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYw
IiwgUGFyYW1UeXBlOjpUR0x1aW50LCAyKS52YWx1ZS5HTHVpbnRWYWwsCiAgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMdWludCwgMykudmFsdWUuR0x1
aW50VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4NCw3ICsyMjAxLDggQEAgdm9pZCBG
cmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aXYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQog
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSku
dmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAg
ICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZh
bCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25z
dCBHTHVpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUi
LCBQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBvaW50ZXIsIDMpKSk7CkBAIC0yMTkzLDcgKzIyMTEs
OCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2YoCiAgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3Jh
bUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAot
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRH
TGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAg
ICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMikudmFsdWUuR0xm
bG9hdFZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBl
OjpUR0xmbG9hdCwgMykudmFsdWUuR0xmbG9hdFZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oInYyIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgNCkudmFsdWUuR0xmbG9hdFZhbCk7
CkBAIC0yMjAyLDcgKzIyMjEsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2Z2
KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFt
VHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNo
YWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3Jt
TG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25W
YWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6
VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29u
dGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBv
aW50ZXIsIDMpKSk7CkBAIC0yMjExLDcgKzIyMzEsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVw
bGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtM2koCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFj
a2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAg
ICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlw
ZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZv
cm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDIpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGludCwgMykudmFsdWUuR0xpbnRWYWwsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMaW50LCA0
KS52YWx1ZS5HTGludFZhbCk7CkBAIC0yMjIwLDcgKzIyNDEsOCBAQCB2b2lkIEZyYW1lQ2FwdHVy
ZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtM2l2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJv
Z3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAg
ICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50
VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1
ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJj
b3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAg
ICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xpbnQgKj4o
CiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6
OlRHTGludENvbnN0UG9pbnRlciwgMykpKTsKQEAgLTIyMjksNyArMjI1MSw4IEBAIHZvaWQgRnJh
bWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWkoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFs
dWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAg
ICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCAyKS52YWx1ZS5HTHVpbnRWYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMdWludCwgMyku
dmFsdWUuR0x1aW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjIiLCBQ
YXJhbVR5cGU6OlRHTHVpbnQsIDQpLnZhbHVlLkdMdWludFZhbCk7CkBAIC0yMjM4LDcgKzIyNjEs
OCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM3VpdigKICAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9n
cmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWws
Ci0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6
VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1
ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQ
b2ludGVyPGNvbnN0IEdMdWludCAqPigKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgMykpKTsKQEAgLTIy
NDcsNyArMjI3MSw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZigKICAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRT
aGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9n
cmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBh
cmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
LCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCAy
KS52YWx1ZS5HTGZsb2F0VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEi
LCBQYXJhbVR5cGU6OlRHTGZsb2F0LCAzKS52YWx1ZS5HTGZsb2F0VmFsLAogICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgidjIiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCA0KS52YWx1ZS5H
TGZsb2F0VmFsLApAQCAtMjI1Nyw3ICsyMjgyLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxh
eUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTRmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNr
ZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAg
IC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAg
ICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBl
OjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9y
bUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQ
YXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAg
IHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCiAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTGZs
b2F0Q29uc3RQb2ludGVyLCAzKSkpOwpAQCAtMjI2Niw3ICsyMjkyLDggQEAgdm9pZCBGcmFtZUNh
cHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybTRpKAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgi
cHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAg
ICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdM
aW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQi
LCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52
YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJ2MCIsIFBhcmFtVHlwZTo6VEdMaW50LCAyKS52YWx1ZS5HTGludFZhbCwKICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDMpLnZhbHVlLkdM
aW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjIiLCBQYXJhbVR5cGU6
OlRHTGludCwgNCkudmFsdWUuR0xpbnRWYWwsCkBAIC0yMjc2LDcgKzIzMDMsOCBAQCB2b2lkIEZy
YW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGl2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAg
ICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZh
bHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25Q
YWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAg
ICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWws
CiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3Qg
R0xpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQ
YXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlciwgMykpKTsKQEAgLTIyODUsNyArMjMxMyw4IEBA
IHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00dWkoCiAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlE
LCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJs
b2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAg
ICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpUR0x1aW50LCAyKS52YWx1ZS5HTHVpbnRW
YWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdM
dWludCwgMykudmFsdWUuR0x1aW50VmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJh
bSgidjIiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIDQpLnZhbHVlLkdMdWludFZhbCwKQEAgLTIyOTUs
NyArMjMyNCw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00dWl2KAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0
QXNDb25zdFBvaW50ZXI8Y29uc3QgR0x1aW50ICo+KAogICAgICAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyLCAzKSkp
OwpAQCAtMjMwNCw3ICsyMzM0LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1h
dHJpeDJmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQi
LCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52
YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpU
VW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxv
Y2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJh
bVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAzKS52YWx1
ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25z
dFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAgLTIzMTQsNyArMjM0NSw4IEBAIHZvaWQgRnJh
bWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdigKICAgICAgICAgICAgICAgICBwYXJh
bXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQs
IDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50
LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxv
Y2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAg
ICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNp
emVpVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFy
YW1UeXBlOjpUR0xib29sZWFuLCAzKS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAg
ICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAg
LTIzMjQsNyArMjM1Niw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDRmdigKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInByb2dyYW1QYWNrZWQiLCBQ
YXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQsIDApCiAgICAgICAgICAgICAgICAgICAgIC52YWx1
ZS5TaGFkZXJQcm9ncmFtSURWYWwsCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJs
b2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAxKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5p
Zm9ybUxvY2F0aW9uLCAxKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0
aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5
cGU6OlRHTHNpemVpLCAyKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAzKS52YWx1ZS5H
TGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBv
aW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAgLTIzMzQsNyArMjM2Nyw4IEBAIHZvaWQgRnJhbWVD
YXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQog
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSku
dmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAg
ICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZh
bCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlw
ZTo6VEdMYm9vbGVhbiwgMykudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAgIHJl
cGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0yMzQ0
LDcgKzIzNzgsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYo
CiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1U
eXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAgICAgICAgICAgICAgICAgICAudmFsdWUuU2hh
ZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRp
b24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1M
b2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZh
bCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpU
R0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgMykudmFsdWUuR0xib29s
ZWFuVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVy
PGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0yMzU0LDcgKzIzODksOCBAQCB2b2lkIEZyYW1lQ2FwdHVy
ZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJwcm9ncmFtUGFja2VkIiwgUGFyYW1UeXBlOjpUU2hhZGVyUHJvZ3JhbUlELCAwKQogICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsLAotICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFs
dWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMSkKKyAgICAgICAgICAgICAgICAg
ICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMikudmFsdWUuR0xzaXplaVZhbCwK
ICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6
VEdMYm9vbGVhbiwgMykudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAgIHJlcGxh
eUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0yMzY0LDcg
KzI0MDAsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KAogICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6
VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclBy
b2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAg
ICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6
ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIDMpLnZhbHVlLkdMYm9vbGVhblZh
bCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25z
dCBHTGZsb2F0ICo+KApAQCAtMjM3NCw3ICsyNDExLDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJl
cGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybU1hdHJpeDR4MmZ2KAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgi
cHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRCwgMCkKICAgICAgICAg
ICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dyYW1JRFZhbCwKLSAgICAgICAgICAgICAgICBw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdM
aW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQi
LCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDEpCisgICAgICAgICAgICAgICAgICAgIC52
YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJv
b2xlYW4sIDMpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250
ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAtMjM4NCw3ICsyNDIy
LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KAogICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgicHJvZ3JhbVBhY2tlZCIsIFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRCwgMCkKICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlNoYWRlclByb2dy
YW1JRFZhbCwKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFy
YW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDEpCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAg
ICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWks
IDIpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0
cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIDMpLnZhbHVlLkdMYm9vbGVhblZhbCwK
ICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBH
TGZsb2F0ICo+KApAQCAtMjg3MiwxMzkgKzI5MTEsMTYzIEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpS
ZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInoiLCBQYXJhbVR5cGU6OlRHTGZpeGVkLCAyKS52YWx1
ZS5HTGZpeGVkVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRy
eVBvaW50OjpVbmlmb3JtMWY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYocGFyYW1z
LmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZh
bCwKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6
OlRHTGZsb2F0LCAxKS52YWx1ZS5HTGZsb2F0VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMWZ2OgotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTFmdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xp
bnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFmdihw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0
aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZv
cm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29u
c3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0
UG9pbnRlciwgMikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRy
eVBvaW50OjpVbmlmb3JtMWk6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWkocGFyYW1z
LmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZh
bCwKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6
OlRHTGludCwgMSkudmFsdWUuR0xpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0xaXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtMWl2KHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwg
MCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWl2KHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxv
Y2F0aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBv
aW50ZXI8Y29uc3QgR0xpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIs
IDIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6
VW5pZm9ybTF1aToKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWkocGFyYW1zLmdldFBh
cmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBh
Y2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRH
THVpbnQsIDEpLnZhbHVlLkdMdWludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTF1aXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtMXVpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aXYocGFy
YW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlv
biwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9y
bUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0Nv
bnN0UG9pbnRlcjxjb25zdCBHTHVpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0
UG9pbnRlciwgMikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRy
eVBvaW50OjpVbmlmb3JtMmY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmYocGFyYW1z
LmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZh
bCwKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yZihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0
aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6
OlRHTGZsb2F0LCAxKS52YWx1ZS5HTGZsb2F0VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCAyKS52YWx1
ZS5HTGZsb2F0VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRy
eVBvaW50OjpVbmlmb3JtMmZ2OgotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmdihwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdMaW50
VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmdihwYXJhbXMuZ2V0UGFyYW0oImxv
Y2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBh
cmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdM
ZmxvYXQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9pbnRlciwgMikpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMmk6
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0yaShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGludCwgMSkudmFsdWUu
R0xpbnRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJ2MSIsIFBhcmFtVHlwZTo6VEdMaW50LCAyKS52YWx1ZS5HTGludFZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTJpdjoKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBh
cmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0yaXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6
VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1
ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlDb250
ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGludCAqPigKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRH
TGludENvbnN0UG9pbnRlciwgMikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtMnVpOgotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTJ1aShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZh
bHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJ1aShwYXJhbXMuZ2V0
UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlv
blZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2
MCIsIFBhcmFtVHlwZTo6VEdMdWludCwgMSkudmFsdWUuR0x1aW50VmFsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0x1
aW50LCAyKS52YWx1ZS5HTHVpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm0ydWl2OgotICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTJ1aXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAw
KS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWl2KHBhcmFt
cy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24s
IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1M
b2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQ
YXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25z
dFBvaW50ZXI8Y29uc3QgR0x1aW50ICo+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUiLCBQYXJhbVR5cGU6OlRHTHVpbnRDb25zdFBv
aW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQ
b2ludDo6VW5pZm9ybTNmOgotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKHBhcmFtcy5n
ZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xpbnRWYWws
CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2YocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
blBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYwIiwgUGFyYW1UeXBlOjpU
R0xmbG9hdCwgMSkudmFsdWUuR0xmbG9hdFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMikudmFsdWUu
R0xmbG9hdFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYyIiwgUGFyYW1UeXBlOjpUR0xmbG9hdCwgMykudmFsdWUuR0xmbG9hdFZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTNmdjoK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0zZnYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAx
KS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBs
YXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFt
VHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTNpOgotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTNpKHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGlu
dCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2kocGFy
YW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlv
biwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1M
b2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInYwIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDEpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRH
TGludCwgMikudmFsdWUuR0xpbnRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJ2MiIsIFBhcmFtVHlwZTo6VEdMaW50LCAzKS52YWx1ZS5HTGludFZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5p
Zm9ybTNpdjoKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYocGFyYW1zLmdldFBhcmFt
KCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tl
ZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRH
THNpemVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGludCAqPigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidmFsdWUi
LCBQYXJhbVR5cGU6OlRHTGludENvbnN0UG9pbnRlciwgMikpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtM3VpOgotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTN1aShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBl
OjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTN1aShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9y
bUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVl
LlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJ2MCIsIFBhcmFtVHlwZTo6VEdMdWludCwgMSkudmFsdWUuR0x1aW50VmFs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYxIiwg
UGFyYW1UeXBlOjpUR0x1aW50LCAyKS52YWx1ZS5HTHVpbnRWYWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjIiLCBQYXJhbVR5cGU6OlRHTHVpbnQs
IDMpLnZhbHVlLkdMdWludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBn
bDo6RW50cnlQb2ludDo6VW5pZm9ybTN1aXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
M3VpdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZh
bHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTN1aXYocGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0
aW9uVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFt
KCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9p
bnRlcjxjb25zdCBHTHVpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRl
ciwgMikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50
OjpVbmlmb3JtNGY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGYocGFyYW1zLmdldFBh
cmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFj
a2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTGZs
b2F0LCAxKS52YWx1ZS5HTGZsb2F0VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy5nZXRQYXJhbSgidjEiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCAyKS52YWx1ZS5HTGZs
b2F0VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgi
djIiLCBQYXJhbVR5cGU6OlRHTGZsb2F0LCAzKS52YWx1ZS5HTGZsb2F0VmFsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjMiLCBQYXJhbVR5cGU6OlRH
TGZsb2F0LCA0KS52YWx1ZS5HTGZsb2F0VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtNGZ2OgotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTRmdihwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRmdihwYXJh
bXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9u
LCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1M
b2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQ
b2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMuZ2V0UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xmbG9hdENvbnN0UG9p
bnRlciwgMikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBv
aW50OjpVbmlmb3JtNGk6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGkocGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwK
KyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aShwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9u
UGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRH
TGludCwgMSkudmFsdWUuR0xpbnRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMaW50LCAyKS52YWx1ZS5HTGludFZh
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYyIiwg
UGFyYW1UeXBlOjpUR0xpbnQsIDMpLnZhbHVlLkdMaW50VmFsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjMiLCBQYXJhbVR5cGU6OlRHTGludCwgNCku
dmFsdWUuR0xpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVu
dHJ5UG9pbnQ6OlVuaWZvcm00aXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGl2KHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xp
bnRWYWwsCisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGl2KHBhcmFtcy5nZXRQYXJhbSgi
bG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50Iiwg
UGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3Qg
R0xpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oInZhbHVlIiwgUGFyYW1UeXBlOjpUR0xpbnRDb25zdFBvaW50ZXIsIDIpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybTR1aToK
LSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlv
biIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm00dWkocGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFt
VHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjAiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIDEpLnZh
bHVlLkdMdWludFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJ2MSIsIFBhcmFtVHlwZTo6VEdMdWludCwgMikudmFsdWUuR0x1aW50VmFsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInYyIiwgUGFyYW1U
eXBlOjpUR0x1aW50LCAzKS52YWx1ZS5HTHVpbnRWYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidjMiLCBQYXJhbVR5cGU6OlRHTHVpbnQsIDQpLnZh
bHVlLkdMdWludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50
cnlQb2ludDo6VW5pZm9ybTR1aXY6Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVpdihw
YXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdM
aW50VmFsLAorICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTR1aXYocGFyYW1zLmdldFBhcmFt
KCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3Vu
dCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxj
b25zdCBHTHVpbnQgKj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJ2YWx1ZSIsIFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlciwgMikp
KTsKQEAgLTMwMTgsNyArMzA4MSw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6
OkVudHJ5UG9pbnQ6OlVuaWZvcm1NYXRyaXgyZnY6CiAgICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtTWF0cml4MmZ2KAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24i
LCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAg
cGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2Nh
dGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwK
ICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xz
aXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFy
YW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgMikudmFsdWUuR0xib29sZWFu
VmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNv
bnN0IEdMZmxvYXQgKj4oCkBAIC0zMDI2LDcgKzMwOTAsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6
UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtTWF0cml4MngzZnY6CiAgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYoCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdl
dFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwK
KyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1U
eXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5p
Zm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQi
LCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAg
ICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAy
KS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0
QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKQEAgLTMwMzQsNyArMzA5OSw4IEBAIHZv
aWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxsKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZ2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm1NYXRyaXgy
eDRmdjoKICAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdigKLSAgICAgICAg
ICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDAp
LnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRp
b25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAg
ICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlW
YWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5
cGU6OlRHTGJvb2xlYW4sIDIpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAgICAgICAgICAgICBy
ZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAtMzA0
Miw3ICszMTA4LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2lu
dDo6VW5pZm9ybU1hdHJpeDNmdjoKICAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgz
ZnYoCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlw
ZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0
UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBlOjpUVW5pZm9ybUxvY2F0aW9uLCAwKQor
ICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsLAogICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQYXJhbVR5cGU6OlRHTHNpemVpLCAxKS52
YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgidHJhbnNw
b3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAyKS52YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAg
ICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXNDb25zdFBvaW50ZXI8Y29uc3QgR0xmbG9h
dCAqPigKQEAgLTMwNTAsNyArMzExNyw4IEBAIHZvaWQgRnJhbWVDYXB0dXJlOjpSZXBsYXlDYWxs
KGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Z2w6OkVudHJ5UG9pbnQ6OlVuaWZvcm1NYXRyaXgzeDJmdjoKICAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm1NYXRyaXgzeDJmdigKLSAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxv
Y2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQsIDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAg
ICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlm
b3JtTG9jYXRpb24sIDApCisgICAgICAgICAgICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRp
b25WYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlw
ZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1z
LmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJhbVR5cGU6OlRHTGJvb2xlYW4sIDIpLnZhbHVlLkdM
Ym9vbGVhblZhbCwKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9p
bnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAtMzA1OCw3ICszMTI2LDggQEAgdm9pZCBGcmFtZUNh
cHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQb2ludDo6VW5pZm9ybU1hdHJpeDN4NGZ2OgogICAg
ICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4NGZ2KAotICAgICAgICAgICAgICAgIHBh
cmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQYXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xp
bnRWYWwsCisgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIs
IFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbiwgMCkKKyAgICAgICAgICAgICAgICAgICAgLnZh
bHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
ImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXplaSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oInRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9v
bGVhbiwgMikudmFsdWUuR0xib29sZWFuVmFsLAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRl
eHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0IEdMZmxvYXQgKj4oCkBAIC0zMDY2LDcgKzMxMzUs
OCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVwbGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3Jt
TWF0cml4NGZ2OgogICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdigKLSAgICAg
ICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uIiwgUGFyYW1UeXBlOjpUR0xpbnQs
IDApLnZhbHVlLkdMaW50VmFsLAorICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9j
YXRpb25QYWNrZWQiLCBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24sIDApCisgICAgICAgICAg
ICAgICAgICAgIC52YWx1ZS5Vbmlmb3JtTG9jYXRpb25WYWwsCiAgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJjb3VudCIsIFBhcmFtVHlwZTo6VEdMc2l6ZWksIDEpLnZhbHVlLkdMc2l6
ZWlWYWwsCiAgICAgICAgICAgICAgICAgcGFyYW1zLmdldFBhcmFtKCJ0cmFuc3Bvc2UiLCBQYXJh
bVR5cGU6OlRHTGJvb2xlYW4sIDIpLnZhbHVlLkdMYm9vbGVhblZhbCwKICAgICAgICAgICAgICAg
ICByZXBsYXlDb250ZXh0LT5nZXRBc0NvbnN0UG9pbnRlcjxjb25zdCBHTGZsb2F0ICo+KApAQCAt
MzA3NCw3ICszMTQ0LDggQEAgdm9pZCBGcmFtZUNhcHR1cmU6OlJlcGxheUNhbGwoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBnbDo6RW50cnlQ
b2ludDo6VW5pZm9ybU1hdHJpeDR4MmZ2OgogICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1h
dHJpeDR4MmZ2KAotICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgibG9jYXRpb24iLCBQ
YXJhbVR5cGU6OlRHTGludCwgMCkudmFsdWUuR0xpbnRWYWwsCisgICAgICAgICAgICAgICAgcGFy
YW1zLmdldFBhcmFtKCJsb2NhdGlvblBhY2tlZCIsIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlv
biwgMCkKKyAgICAgICAgICAgICAgICAgICAgLnZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbCwKICAg
ICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImNvdW50IiwgUGFyYW1UeXBlOjpUR0xzaXpl
aSwgMSkudmFsdWUuR0xzaXplaVZhbCwKICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0o
InRyYW5zcG9zZSIsIFBhcmFtVHlwZTo6VEdMYm9vbGVhbiwgMikudmFsdWUuR0xib29sZWFuVmFs
LAogICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQtPmdldEFzQ29uc3RQb2ludGVyPGNvbnN0
IEdMZmxvYXQgKj4oCkBAIC0zMDgyLDcgKzMxNTMsOCBAQCB2b2lkIEZyYW1lQ2FwdHVyZTo6UmVw
bGF5Q2FsbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIGdsOjpFbnRyeVBvaW50OjpVbmlmb3JtTWF0cml4NHgzZnY6CiAgICAgICAgICAgICBj
b250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYoCi0gICAgICAgICAgICAgICAgcGFyYW1zLmdldFBh
cmFtKCJsb2NhdGlvbiIsIFBhcmFtVHlwZTo6VEdMaW50LCAwKS52YWx1ZS5HTGludFZhbCwKKyAg
ICAgICAgICAgICAgICBwYXJhbXMuZ2V0UGFyYW0oImxvY2F0aW9uUGFja2VkIiwgUGFyYW1UeXBl
OjpUVW5pZm9ybUxvY2F0aW9uLCAwKQorICAgICAgICAgICAgICAgICAgICAudmFsdWUuVW5pZm9y
bUxvY2F0aW9uVmFsLAogICAgICAgICAgICAgICAgIHBhcmFtcy5nZXRQYXJhbSgiY291bnQiLCBQ
YXJhbVR5cGU6OlRHTHNpemVpLCAxKS52YWx1ZS5HTHNpemVpVmFsLAogICAgICAgICAgICAgICAg
IHBhcmFtcy5nZXRQYXJhbSgidHJhbnNwb3NlIiwgUGFyYW1UeXBlOjpUR0xib29sZWFuLCAyKS52
YWx1ZS5HTGJvb2xlYW5WYWwsCiAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dC0+Z2V0QXND
b25zdFBvaW50ZXI8Y29uc3QgR0xmbG9hdCAqPigKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2ZyYW1lX2NhcHR1cmVfdXRpbHNf
YXV0b2dlbi5jcHAKaW5kZXggZTIyMzQxZmVmZTI2MmI2NDY3MDFjZmQ2YjBkZWJlN2I3YzMwYjll
Zi4uOTYyNTBhMDBiMzk0ZmViOTRiODhlYzIxMTg0YzczOWFlYmFlYzM3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2ZyYW1lX2NhcHR1cmVfdXRpbHNf
YXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zy
YW1lX2NhcHR1cmVfdXRpbHNfYXV0b2dlbi5jcHAKQEAgLTE0LDQyNyArMTQsNDU0IEBACiAKIG5h
bWVzcGFjZSBhbmdsZQogewotdm9pZCBXcml0ZVBhcmFtVHlwZVRvU3RyZWFtKHN0ZDo6b3N0cmVh
bSAmb3MsIFBhcmFtVHlwZSBwYXJhbVR5cGUsIGNvbnN0IFBhcmFtVmFsdWUgJnBhcmFtVmFsdWUp
Cit2b2lkIFdyaXRlUGFyYW1DYXB0dXJlUmVwbGF5KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IENh
bGxDYXB0dXJlICZjYWxsLCBjb25zdCBQYXJhbUNhcHR1cmUgJnBhcmFtKQogewotICAgIHN3aXRj
aCAocGFyYW1UeXBlKQorICAgIHN3aXRjaCAocGFyYW0udHlwZSkKICAgICB7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUQWxwaGFUZXN0RnVuYzoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEFscGhhVGVzdEZ1bmM+KG9zLCBwYXJhbVZhbHVlLkFscGhh
VGVzdEZ1bmNWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VEFscGhhVGVzdEZ1bmM+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkFscGhhVGVzdEZ1
bmNWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUQnVm
ZmVyQmluZGluZzoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VEJ1ZmZlckJpbmRpbmc+KG9zLCBwYXJhbVZhbHVlLkJ1ZmZlckJpbmRpbmdWYWwpOworICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEJ1ZmZlckJpbmRpbmc+
KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkJ1ZmZlckJpbmRpbmdWYWwpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUQnVmZmVySUQ6Ci0gICAgICAgICAg
ICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRCdWZmZXJJRD4ob3MsIHBhcmFt
VmFsdWUuQnVmZmVySURWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBh
cmFtVHlwZTo6VEJ1ZmZlcklEPihvcywgY2FsbCwgcGFyYW0udmFsdWUuQnVmZmVySURWYWwpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUQnVmZmVySURDb25z
dFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6
OlRCdWZmZXJJRENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUu
QnVmZmVySURDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVw
bGF5PFBhcmFtVHlwZTo6VEJ1ZmZlcklEQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBv
cywgY2FsbCwgcGFyYW0udmFsdWUuQnVmZmVySURDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUQnVmZmVySURQb2ludGVyOgotICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUQnVmZmVySURQb2lu
dGVyPihvcywgcGFyYW1WYWx1ZS5CdWZmZXJJRFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEJ1ZmZlcklEUG9pbnRlcj4ob3MsIGNhbGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbS52YWx1ZS5CdWZmZXJJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUQnVmZmVyVXNhZ2U6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRCdWZmZXJVc2FnZT4ob3MsIHBhcmFt
VmFsdWUuQnVmZmVyVXNhZ2VWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5
PFBhcmFtVHlwZTo6VEJ1ZmZlclVzYWdlPihvcywgY2FsbCwgcGFyYW0udmFsdWUuQnVmZmVyVXNh
Z2VWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUQ2xp
ZW50VmVydGV4QXJyYXlUeXBlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUQ2xpZW50VmVydGV4QXJyYXlUeXBlPigKLSAgICAgICAgICAgICAgICBvcywg
cGFyYW1WYWx1ZS5DbGllbnRWZXJ0ZXhBcnJheVR5cGVWYWwpOworICAgICAgICAgICAgV3JpdGVQ
YXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VENsaWVudFZlcnRleEFycmF5VHlwZT4oCisgICAg
ICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkNsaWVudFZlcnRleEFycmF5VHlwZVZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRDdWxsRmFj
ZU1vZGU6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRD
dWxsRmFjZU1vZGU+KG9zLCBwYXJhbVZhbHVlLkN1bGxGYWNlTW9kZVZhbCk7CisgICAgICAgICAg
ICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUQ3VsbEZhY2VNb2RlPihvcywgY2Fs
bCwgcGFyYW0udmFsdWUuQ3VsbEZhY2VNb2RlVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFBhcmFtVHlwZTo6VERyYXdFbGVtZW50c1R5cGU6Ci0gICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlREcmF3RWxlbWVudHNUeXBlPihvcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtVmFsdWUuRHJhd0VsZW1lbnRzVHlwZVZhbCk7CisgICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpURHJhd0VsZW1lbnRzVHlwZT4ob3MsIGNhbGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW0udmFsdWUuRHJhd0VsZW1lbnRzVHlwZVZhbCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRGZW5jZU5WSUQ6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGZW5jZU5WSUQ+KG9zLCBwYXJhbVZh
bHVlLkZlbmNlTlZJRFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpURmVuY2VOVklEPihvcywgY2FsbCwgcGFyYW0udmFsdWUuRmVuY2VOVklEVmFsKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEZlbmNlTlZJRENv
bnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VEZlbmNlTlZJRENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFs
dWUuRmVuY2VOVklEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRGZW5jZU5WSURDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAg
ICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5GZW5jZU5WSURDb25zdFBvaW50ZXJWYWwpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpURmVuY2VOVklEUG9pbnRl
cjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEZlbmNl
TlZJRFBvaW50ZXI+KG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1WYWx1ZS5GZW5jZU5WSURQb2ludGVyVmFs
KTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRGZW5jZU5W
SURQb2ludGVyPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5GZW5jZU5WSURQb2ludGVy
VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEZyYW1l
YnVmZmVySUQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6
OlRGcmFtZWJ1ZmZlcklEPihvcywgcGFyYW1WYWx1ZS5GcmFtZWJ1ZmZlcklEVmFsKTsKKyAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEPihv
cywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5GcmFtZWJ1ZmZlcklEVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEZyYW1lYnVmZmVySURDb25zdFBvaW50
ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRGcmFt
ZWJ1ZmZlcklEQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5G
cmFtZWJ1ZmZlcklEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRGcmFtZWJ1ZmZlcklEQ29uc3RQb2ludGVyPigKKyAgICAgICAg
ICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuRnJhbWVidWZmZXJJRENvbnN0UG9pbnRlclZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRGcmFtZWJ1
ZmZlcklEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFt
VHlwZTo6VEZyYW1lYnVmZmVySURQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1W
YWx1ZS5GcmFtZWJ1ZmZlcklEUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFs
dWVSZXBsYXk8UGFyYW1UeXBlOjpURnJhbWVidWZmZXJJRFBvaW50ZXI+KAorICAgICAgICAgICAg
ICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5GcmFtZWJ1ZmZlcklEUG9pbnRlclZhbCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTERFQlVHUFJPQzoKLSAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMREVCVUdQUk9D
PihvcywgcGFyYW1WYWx1ZS5HTERFQlVHUFJPQ1ZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xERUJVR1BST0M+KG9zLCBjYWxsLCBwYXJhbS52YWx1
ZS5HTERFQlVHUFJPQ1ZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJh
bVR5cGU6OlRHTERFQlVHUFJPQ0tIUjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3Ry
ZWFtPFBhcmFtVHlwZTo6VEdMREVCVUdQUk9DS0hSPihvcywgcGFyYW1WYWx1ZS5HTERFQlVHUFJP
Q0tIUlZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
R0xERUJVR1BST0NLSFI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5HTERFQlVHUFJPQ0tI
UlZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGJp
dGZpZWxkOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
R0xiaXRmaWVsZD4ob3MsIHBhcmFtVmFsdWUuR0xiaXRmaWVsZFZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xiaXRmaWVsZD4ob3MsIGNhbGwsIHBh
cmFtLnZhbHVlLkdMYml0ZmllbGRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUR0xib29sZWFuOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUR0xib29sZWFuPihvcywgcGFyYW1WYWx1ZS5HTGJvb2xlYW5WYWwp
OworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMYm9vbGVh
bj4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMYm9vbGVhblZhbCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGJvb2xlYW5Db25zdFBvaW50ZXI6Ci0gICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGJvb2xlYW5Db25z
dFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMYm9vbGVhbkNvbnN0
UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUR0xib29sZWFuQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFy
YW0udmFsdWUuR0xib29sZWFuQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMYm9vbGVhblBvaW50ZXI6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGJvb2xlYW5Qb2ludGVyPihvcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtVmFsdWUuR0xib29sZWFuUG9pbnRlclZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xib29sZWFuUG9pbnRlcj4ob3MsIGNh
bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW0udmFsdWUuR0xib29sZWFuUG9pbnRlclZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGJ5dGU6Ci0gICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGJ5dGU+KG9zLCBwYXJhbVZhbHVl
LkdMYnl0ZVZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUR0xieXRlPihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xieXRlVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMYnl0ZUNvbnN0UG9pbnRlcjoKLSAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMYnl0ZUNvbnN0
UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0xieXRlQ29uc3RQb2lu
dGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRH
TGJ5dGVDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1
ZS5HTGJ5dGVDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGFyYW1UeXBlOjpUR0xjaGFyQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xjaGFyQ29uc3RQb2ludGVyPigKLSAgICAgICAg
ICAgICAgICBvcywgcGFyYW1WYWx1ZS5HTGNoYXJDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAg
ICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMY2hhckNvbnN0UG9pbnRlcj4o
CisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMY2hhckNvbnN0UG9pbnRl
clZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGNo
YXJDb25zdFBvaW50ZXJQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJl
YW08UGFyYW1UeXBlOjpUR0xjaGFyQ29uc3RQb2ludGVyUG9pbnRlcj4oCi0gICAgICAgICAgICAg
ICAgb3MsIHBhcmFtVmFsdWUuR0xjaGFyQ29uc3RQb2ludGVyUG9pbnRlclZhbCk7CisgICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xjaGFyQ29uc3RQb2ludGVy
UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMY2hhckNv
bnN0UG9pbnRlclBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFyYW1UeXBlOjpUR0xjaGFyUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VEdMY2hhclBvaW50ZXI+KG9zLCBwYXJhbVZhbHVlLkdMY2hhclBv
aW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6
VEdMY2hhclBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdMY2hhclBvaW50ZXJW
YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xjbGFt
cHg6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGNs
YW1weD4ob3MsIHBhcmFtVmFsdWUuR0xjbGFtcHhWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMY2xhbXB4PihvcywgY2FsbCwgcGFyYW0udmFsdWUu
R0xjbGFtcHhWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUR0xkb3VibGU6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5
cGU6OlRHTGRvdWJsZT4ob3MsIHBhcmFtVmFsdWUuR0xkb3VibGVWYWwpOworICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZG91YmxlPihvcywgY2FsbCwgcGFy
YW0udmFsdWUuR0xkb3VibGVWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFyYW1UeXBlOjpUR0xkb3VibGVDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGRvdWJsZUNvbnN0UG9pbnRlcj4oCi0gICAgICAg
ICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0xkb3VibGVDb25zdFBvaW50ZXJWYWwpOworICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZG91YmxlQ29uc3RQb2lu
dGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xkb3VibGVDb25z
dFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUR0xkb3VibGVQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUR0xkb3VibGVQb2ludGVyPihvcywgcGFyYW1WYWx1ZS5HTGRvdWJsZVBvaW50
ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
ZG91YmxlUG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5HTGRvdWJsZVBvaW50
ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xl
Z2xJbWFnZU9FUzoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VEdMZWdsSW1hZ2VPRVM+KG9zLCBwYXJhbVZhbHVlLkdMZWdsSW1hZ2VPRVNWYWwpOworICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZWdsSW1hZ2VPRVM+
KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdMZWdsSW1hZ2VPRVNWYWwpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xlbnVtOgotICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xlbnVtPihvcywgcGFyYW1WYWx1
ZS5HTGVudW1WYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VEdMZW51bT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMZW51bVZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGVudW1Db25zdFBvaW50ZXI6Ci0g
ICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGVudW1Db25z
dFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMZW51bUNvbnN0UG9p
bnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
R0xlbnVtQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFs
dWUuR0xlbnVtQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBhcmFtVHlwZTo6VEdMZW51bVBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFs
dWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGVudW1Qb2ludGVyPihvcywgcGFyYW1WYWx1ZS5HTGVu
dW1Qb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRHTGVudW1Qb2ludGVyPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5HTGVudW1Qb2lu
dGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdM
Zml4ZWQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRH
TGZpeGVkPihvcywgcGFyYW1WYWx1ZS5HTGZpeGVkVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGZpeGVkPihvcywgY2FsbCwgcGFyYW0udmFsdWUu
R0xmaXhlZFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6
OlRHTGZpeGVkQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJl
YW08UGFyYW1UeXBlOjpUR0xmaXhlZENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3Ms
IHBhcmFtVmFsdWUuR0xmaXhlZENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xmaXhlZENvbnN0UG9pbnRlcj4oCisgICAgICAg
ICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMZml4ZWRDb25zdFBvaW50ZXJWYWwpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xmaXhlZFBvaW50
ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGZp
eGVkUG9pbnRlcj4ob3MsIHBhcmFtVmFsdWUuR0xmaXhlZFBvaW50ZXJWYWwpOworICAgICAgICAg
ICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMZml4ZWRQb2ludGVyPihvcywg
Y2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW0udmFsdWUuR0xmaXhlZFBvaW50ZXJWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xmbG9hdDoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMZmxvYXQ+KG9zLCBwYXJhbVZhbHVl
LkdMZmxvYXRWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VEdMZmxvYXQ+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTGZsb2F0VmFsKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMZmxvYXRDb25zdFBvaW50ZXI6
Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGZsb2F0
Q29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5HTGZsb2F0Q29u
c3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRHTGZsb2F0Q29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFy
YW0udmFsdWUuR0xmbG9hdENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGZsb2F0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRl
UGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMZmxvYXRQb2ludGVyPihvcywgcGFyYW1W
YWx1ZS5HTGZsb2F0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBs
YXk8UGFyYW1UeXBlOjpUR0xmbG9hdFBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1
ZS5HTGZsb2F0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlRHTGludDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBh
cmFtVHlwZTo6VEdMaW50PihvcywgcGFyYW1WYWx1ZS5HTGludFZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xpbnQ+KG9zLCBjYWxsLCBwYXJhbS52
YWx1ZS5HTGludFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5
cGU6OlRHTGludDY0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VEdMaW50NjRQb2ludGVyPihvcywgcGFyYW1WYWx1ZS5HTGludDY0UG9pbnRl
clZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0xp
bnQ2NFBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5HTGludDY0UG9pbnRlclZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTGludENv
bnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VEdMaW50Q29uc3RQb2ludGVyPihvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlLkdMaW50Q29u
c3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRHTGludENvbnN0UG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdM
aW50Q29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBh
cmFtVHlwZTo6VEdMaW50UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3Ry
ZWFtPFBhcmFtVHlwZTo6VEdMaW50UG9pbnRlcj4ob3MsIHBhcmFtVmFsdWUuR0xpbnRQb2ludGVy
VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTGlu
dFBvaW50ZXI+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTGludFBvaW50ZXJWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xpbnRwdHI6Ci0gICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTGludHB0cj4ob3MsIHBh
cmFtVmFsdWUuR0xpbnRwdHJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5
PFBhcmFtVHlwZTo6VEdMaW50cHRyPihvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xpbnRwdHJWYWwp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xpbnRwdHJD
b25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5
cGU6OlRHTGludHB0ckNvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFs
dWUuR0xpbnRwdHJDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VEdMaW50cHRyQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAg
ICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0xpbnRwdHJDb25zdFBvaW50ZXJWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xzaG9ydDoKLSAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMc2hvcnQ+KG9zLCBwYXJh
bVZhbHVlLkdMc2hvcnRWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBh
cmFtVHlwZTo6VEdMc2hvcnQ+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHNob3J0VmFsKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMc2hvcnRDb25zdFBv
aW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRH
THNob3J0Q29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5HTHNo
b3J0Q29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRHTHNob3J0Q29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2Fs
bCwgcGFyYW0udmFsdWUuR0xzaG9ydENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHNpemVpOgotICAgICAgICAgICAgV3JpdGVQ
YXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xzaXplaT4ob3MsIHBhcmFtVmFsdWUuR0xz
aXplaVZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
R0xzaXplaT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMc2l6ZWlWYWwpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xzaXplaUNvbnN0UG9pbnRlcjoKLSAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMc2l6ZWlDb25z
dFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMc2l6ZWlDb25zdFBv
aW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6
VEdMc2l6ZWlDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52
YWx1ZS5HTHNpemVpQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VEdMc2l6ZWlQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xzaXplaVBvaW50ZXI+KG9zLCBwYXJhbVZhbHVl
LkdMc2l6ZWlQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRHTHNpemVpUG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdM
c2l6ZWlQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFt
VHlwZTo6VEdMc2l6ZWlwdHI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRHTHNpemVpcHRyPihvcywgcGFyYW1WYWx1ZS5HTHNpemVpcHRyVmFsKTsKKyAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHNpemVpcHRyPihv
cywgY2FsbCwgcGFyYW0udmFsdWUuR0xzaXplaXB0clZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHNpemVpcHRyQ29uc3RQb2ludGVyOgotICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xzaXplaXB0ckNvbnN0
UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0xzaXplaXB0ckNvbnN0
UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBl
OjpUR0xzaXplaXB0ckNvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBh
cmFtLnZhbHVlLkdMc2l6ZWlwdHJDb25zdFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0xzeW5jOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0xzeW5jPihvcywgcGFyYW1WYWx1ZS5HTHN5bmNW
YWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMc3lu
Yz4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMc3luY1ZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHVieXRlOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x1Ynl0ZT4ob3MsIHBhcmFtVmFsdWUuR0x1Ynl0
ZVZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x1
Ynl0ZT4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMdWJ5dGVWYWwpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x1Ynl0ZUNvbnN0UG9pbnRlcjoKLSAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMdWJ5dGVDb25zdFBv
aW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLkdMdWJ5dGVDb25zdFBvaW50
ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
dWJ5dGVDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1
ZS5HTHVieXRlQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBhcmFtVHlwZTo6VEdMdWJ5dGVQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZh
bHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x1Ynl0ZVBvaW50ZXI+KG9zLCBwYXJhbVZhbHVlLkdM
dWJ5dGVQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlRHTHVieXRlUG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkdMdWJ5
dGVQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlw
ZTo6VEdMdWludDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlw
ZTo6VEdMdWludD4ob3MsIHBhcmFtVmFsdWUuR0x1aW50VmFsKTsKKyAgICAgICAgICAgIFdyaXRl
UGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHVpbnQ+KG9zLCBjYWxsLCBwYXJhbS52YWx1
ZS5HTHVpbnRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUR0x1aW50NjQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5
cGU6OlRHTHVpbnQ2ND4ob3MsIHBhcmFtVmFsdWUuR0x1aW50NjRWYWwpOworICAgICAgICAgICAg
V3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMdWludDY0PihvcywgY2FsbCwgcGFy
YW0udmFsdWUuR0x1aW50NjRWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFyYW1UeXBlOjpUR0x1aW50NjRDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTHVpbnQ2NENvbnN0UG9pbnRlcj4oCi0gICAgICAg
ICAgICAgICAgb3MsIHBhcmFtVmFsdWUuR0x1aW50NjRDb25zdFBvaW50ZXJWYWwpOworICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdMdWludDY0Q29uc3RQb2lu
dGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x1aW50NjRDb25z
dFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUR0x1aW50NjRQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUR0x1aW50NjRQb2ludGVyPihvcywgcGFyYW1WYWx1ZS5HTHVpbnQ2NFBvaW50
ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEdM
dWludDY0UG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5HTHVpbnQ2NFBvaW50
ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUR0x1
aW50Q29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFy
YW1UeXBlOjpUR0x1aW50Q29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1W
YWx1ZS5HTHVpbnRDb25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
UmVwbGF5PFBhcmFtVHlwZTo6VEdMdWludENvbnN0UG9pbnRlcj4oCisgICAgICAgICAgICAgICAg
b3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdMdWludENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHVpbnRQb2ludGVyOgotICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUR0x1aW50UG9pbnRlcj4o
b3MsIHBhcmFtVmFsdWUuR0x1aW50UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x1aW50UG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW0udmFsdWUuR0x1aW50UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRHTHVzaG9ydDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VEdMdXNob3J0PihvcywgcGFyYW1WYWx1ZS5HTHVzaG9ydFZhbCk7
CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x1c2hvcnQ+
KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5HTHVzaG9ydFZhbCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRHTHVzaG9ydENvbnN0UG9pbnRlcjoKLSAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEdMdXNob3J0Q29uc3RQb2lu
dGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5HTHVzaG9ydENvbnN0UG9pbnRl
clZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x1
c2hvcnRDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1
ZS5HTHVzaG9ydENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRHTHVzaG9ydFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTHVzaG9ydFBvaW50ZXI+KG9zLCBwYXJhbVZhbHVl
LkdMdXNob3J0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8
UGFyYW1UeXBlOjpUR0x1c2hvcnRQb2ludGVyPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVl
LkdMdXNob3J0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlRHTHZvaWRDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFs
dWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRHTHZvaWRDb25zdFBvaW50ZXI+KAotICAgICAgICAgICAg
ICAgIG9zLCBwYXJhbVZhbHVlLkdMdm9pZENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR0x2b2lkQ29uc3RQb2ludGVyPigKKyAg
ICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x2b2lkQ29uc3RQb2ludGVyVmFs
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VEdMdm9pZENv
bnN0UG9pbnRlclBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRHTHZvaWRDb25zdFBvaW50ZXJQb2ludGVyPigKLSAgICAgICAgICAgICAgICBv
cywgcGFyYW1WYWx1ZS5HTHZvaWRDb25zdFBvaW50ZXJQb2ludGVyVmFsKTsKKyAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRHTHZvaWRDb25zdFBvaW50ZXJQb2lu
dGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuR0x2b2lkQ29uc3RQ
b2ludGVyUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJh
bVR5cGU6OlRHcmFwaGljc1Jlc2V0U3RhdHVzOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
VG9TdHJlYW08UGFyYW1UeXBlOjpUR3JhcGhpY3NSZXNldFN0YXR1cz4oCi0gICAgICAgICAgICAg
ICAgb3MsIHBhcmFtVmFsdWUuR3JhcGhpY3NSZXNldFN0YXR1c1ZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUR3JhcGhpY3NSZXNldFN0YXR1cz4oCisg
ICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLkdyYXBoaWNzUmVzZXRTdGF0dXNW
YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUSGFuZGxl
VHlwZToKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VEhh
bmRsZVR5cGU+KG9zLCBwYXJhbVZhbHVlLkhhbmRsZVR5cGVWYWwpOworICAgICAgICAgICAgV3Jp
dGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VEhhbmRsZVR5cGU+KG9zLCBjYWxsLCBwYXJh
bS52YWx1ZS5IYW5kbGVUeXBlVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFBhcmFtVHlwZTo6VExpZ2h0UGFyYW1ldGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVl
VG9TdHJlYW08UGFyYW1UeXBlOjpUTGlnaHRQYXJhbWV0ZXI+KG9zLCBwYXJhbVZhbHVlLkxpZ2h0
UGFyYW1ldGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5
cGU6OlRMaWdodFBhcmFtZXRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLkxpZ2h0UGFy
YW1ldGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VExvZ2ljYWxPcGVyYXRpb246Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRMb2dpY2FsT3BlcmF0aW9uPihvcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUuTG9n
aWNhbE9wZXJhdGlvblZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUTG9naWNhbE9wZXJhdGlvbj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUu
TG9naWNhbE9wZXJhdGlvblZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlRNYXRlcmlhbFBhcmFtZXRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VE1hdGVyaWFsUGFyYW1ldGVyPihvcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJhbVZhbHVlLk1hdGVyaWFsUGFyYW1ldGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRNYXRlcmlhbFBhcmFtZXRlcj4ob3MsIGNhbGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtLnZhbHVlLk1hdGVyaWFsUGFyYW1ldGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VE1hdHJpeFR5cGU6Ci0gICAgICAgICAgICBXcml0
ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRNYXRyaXhUeXBlPihvcywgcGFyYW1WYWx1
ZS5NYXRyaXhUeXBlVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlRNYXRyaXhUeXBlPihvcywgY2FsbCwgcGFyYW0udmFsdWUuTWF0cml4VHlwZVZhbCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRNZW1vcnlPYmpl
Y3RJRDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VE1l
bW9yeU9iamVjdElEPihvcywgcGFyYW1WYWx1ZS5NZW1vcnlPYmplY3RJRFZhbCk7CisgICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SUQ+KG9z
LCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5NZW1vcnlPYmplY3RJRFZhbCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRENvbnN0UG9p
bnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VE1l
bW9yeU9iamVjdElEQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1
ZS5NZW1vcnlPYmplY3RJRENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SURDb25zdFBvaW50ZXI+KAorICAg
ICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5NZW1vcnlPYmplY3RJRENvbnN0UG9p
bnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRN
ZW1vcnlPYmplY3RJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVh
bTxQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9z
LCBwYXJhbVZhbHVlLk1lbW9yeU9iamVjdElEUG9pbnRlclZhbCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQYXRoSUQ6Ci0gICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRQYXRoSUQ+KG9zLCBwYXJhbVZhbHVlLlBhdGhJ
RFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUTWVt
b3J5T2JqZWN0SURQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFs
dWUuTWVtb3J5T2JqZWN0SURQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VFBvaW50UGFyYW1ldGVyOgotICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUUG9pbnRQYXJhbWV0ZXI+KG9zLCBwYXJhbVZhbHVl
LlBvaW50UGFyYW1ldGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQ
YXJhbVR5cGU6OlRQb2ludFBhcmFtZXRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLlBv
aW50UGFyYW1ldGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFt
VHlwZTo6VFByaW1pdGl2ZU1vZGU6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVh
bTxQYXJhbVR5cGU6OlRQcmltaXRpdmVNb2RlPihvcywgcGFyYW1WYWx1ZS5QcmltaXRpdmVNb2Rl
VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRQcmlt
aXRpdmVNb2RlPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5QcmltaXRpdmVNb2RlVmFsKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFByb2dyYW1QaXBl
bGluZUlEOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpU
UHJvZ3JhbVBpcGVsaW5lSUQ+KG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUuUHJvZ3JhbVBpcGVs
aW5lSURWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6
VFByb2dyYW1QaXBlbGluZUlEPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUuUHJvZ3Jh
bVBpcGVsaW5lSURWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1U
eXBlOjpUUHJvZ3JhbVBpcGVsaW5lSURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRQcm9ncmFtUGlwZWxpbmVJRENvbnN0UG9pbnRl
cj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuUHJvZ3JhbVBpcGVsaW5lSURDb25z
dFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlw
ZTo6VFByb2dyYW1QaXBlbGluZUlEQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywg
Y2FsbCwgcGFyYW0udmFsdWUuUHJvZ3JhbVBpcGVsaW5lSURDb25zdFBvaW50ZXJWYWwpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUHJvZ3JhbVBpcGVsaW5l
SURQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBl
OjpUUHJvZ3JhbVBpcGVsaW5lSURQb2ludGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1W
YWx1ZS5Qcm9ncmFtUGlwZWxpbmVJRFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFByb2dyYW1QaXBlbGluZUlEUG9pbnRlcj4oCisgICAg
ICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlByb2dyYW1QaXBlbGluZUlEUG9pbnRl
clZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQcm92
b2tpbmdWZXJ0ZXhDb252ZW50aW9uOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJl
YW08UGFyYW1UeXBlOjpUUHJvdm9raW5nVmVydGV4Q29udmVudGlvbj4oCi0gICAgICAgICAgICAg
ICAgb3MsIHBhcmFtVmFsdWUuUHJvdm9raW5nVmVydGV4Q29udmVudGlvblZhbCk7CisgICAgICAg
ICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUUHJvdm9raW5nVmVydGV4Q29u
dmVudGlvbj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlByb3Zva2lu
Z1ZlcnRleENvbnZlbnRpb25WYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UGFyYW1UeXBlOjpUUXVlcnlJRDoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VFF1ZXJ5SUQ+KG9zLCBwYXJhbVZhbHVlLlF1ZXJ5SURWYWwpOworICAgICAg
ICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFF1ZXJ5SUQ+KG9zLCBjYWxs
LCBwYXJhbS52YWx1ZS5RdWVyeUlEVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBhcmFtVHlwZTo6VFF1ZXJ5SURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRRdWVyeUlEQ29uc3RQb2ludGVyPigKLSAgICAg
ICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5RdWVyeUlEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRRdWVyeUlEQ29uc3RQb2lu
dGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuUXVlcnlJRENvbnN0
UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6
OlRRdWVyeUlEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBh
cmFtVHlwZTo6VFF1ZXJ5SURQb2ludGVyPihvcywgcGFyYW1WYWx1ZS5RdWVyeUlEUG9pbnRlclZh
bCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUUXVlcnlJ
RFBvaW50ZXI+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5RdWVyeUlEUG9pbnRlclZhbCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRRdWVyeVR5cGU6
Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRRdWVyeVR5
cGU+KG9zLCBwYXJhbVZhbHVlLlF1ZXJ5VHlwZVZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUUXVlcnlUeXBlPihvcywgY2FsbCwgcGFyYW0udmFsdWUu
UXVlcnlUeXBlVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlw
ZTo6VFJlbmRlcmJ1ZmZlcklEOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUUmVuZGVyYnVmZmVySUQ+KG9zLCBwYXJhbVZhbHVlLlJlbmRlcmJ1ZmZlcklE
VmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRSZW5k
ZXJidWZmZXJJRD4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLlJlbmRlcmJ1ZmZlcklEVmFs
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFJlbmRlcmJ1
ZmZlcklEQ29uc3RQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUUmVuZGVyYnVmZmVySURDb25zdFBvaW50ZXI+KAotICAgICAgICAgICAgICAg
IG9zLCBwYXJhbVZhbHVlLlJlbmRlcmJ1ZmZlcklEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRSZW5kZXJidWZmZXJJRENvbnN0
UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlJlbmRlcmJ1
ZmZlcklEQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFJlbmRlcmJ1ZmZlcklEUG9pbnRlcj4oCi0gICAg
ICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuUmVuZGVyYnVmZmVySURQb2ludGVyVmFsKTsKKyAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRSZW5kZXJidWZmZXJJ
RFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5SZW5kZXJi
dWZmZXJJRFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFy
YW1UeXBlOjpUU2FtcGxlcklEOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUU2FtcGxlcklEPihvcywgcGFyYW1WYWx1ZS5TYW1wbGVySURWYWwpOworICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNhbXBsZXJJRD4ob3Ms
IGNhbGwsIHBhcmFtLnZhbHVlLlNhbXBsZXJJRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlRTYW1wbGVySURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAg
ICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTYW1wbGVySURDb25zdFBvaW50
ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLlNhbXBsZXJJRENvbnN0UG9pbnRl
clZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2Ft
cGxlcklEQ29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFs
dWUuU2FtcGxlcklEQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VFNhbXBsZXJJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTYW1wbGVySURQb2ludGVyPihvcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtVmFsdWUuU2FtcGxlcklEUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2FtcGxlcklEUG9pbnRlcj4ob3MsIGNhbGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW0udmFsdWUuU2FtcGxlcklEUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRTZW1hcGhvcmVJRDoKLSAgICAgICAgICAgIFdy
aXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNlbWFwaG9yZUlEPihvcywgcGFyYW1W
YWx1ZS5TZW1hcGhvcmVJRFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8
UGFyYW1UeXBlOjpUU2VtYXBob3JlSUQ+KG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5TZW1hcGhvcmVJ
RFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRTZW1h
cGhvcmVJRENvbnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VFNlbWFwaG9yZUlEQ29uc3RQb2ludGVyPigKLSAgICAgICAgICAgICAgICBv
cywgcGFyYW1WYWx1ZS5TZW1hcGhvcmVJRENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2VtYXBob3JlSURDb25zdFBvaW50ZXI+
KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5TZW1hcGhvcmVJRENvbnN0
UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6
OlRTZW1hcGhvcmVJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVh
bTxQYXJhbVR5cGU6OlRTZW1hcGhvcmVJRFBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBw
YXJhbVZhbHVlLlNlbWFwaG9yZUlEUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUU2VtYXBob3JlSURQb2ludGVyPigKKyAgICAgICAgICAg
ICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuU2VtYXBob3JlSURQb2ludGVyVmFsKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRDoK
LSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNoYWRlclBy
b2dyYW1JRD4ob3MsIHBhcmFtVmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsKTsKKyAgICAgICAgICAg
IFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSUQ+KG9zLCBj
YWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFyYW0udmFsdWUuU2hhZGVyUHJvZ3JhbUlEVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRENvbnN0UG9p
bnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFNo
YWRlclByb2dyYW1JRENvbnN0UG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBhcmFtVmFs
dWUuU2hhZGVyUHJvZ3JhbUlEQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRTaGFkZXJQcm9ncmFtSURDb25zdFBvaW50ZXI+KAor
ICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5TaGFkZXJQcm9ncmFtSURDb25z
dFBvaW50ZXJWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUU2hhZGVyUHJvZ3JhbUlEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRv
U3RyZWFtPFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRFBvaW50ZXI+KAotICAgICAgICAgICAg
ICAgIG9zLCBwYXJhbVZhbHVlLlNoYWRlclByb2dyYW1JRFBvaW50ZXJWYWwpOworICAgICAgICAg
ICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFNoYWRlclByb2dyYW1JRFBvaW50
ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5TaGFkZXJQcm9ncmFt
SURQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlw
ZTo6VFNoYWRlclR5cGU6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlRTaGFkZXJUeXBlPihvcywgcGFyYW1WYWx1ZS5TaGFkZXJUeXBlVmFsKTsKKyAgICAg
ICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRTaGFkZXJUeXBlPihvcywg
Y2FsbCwgcGFyYW0udmFsdWUuU2hhZGVyVHlwZVZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYXJhbVR5cGU6OlRTaGFkaW5nTW9kZWw6Ci0gICAgICAgICAgICBXcml0ZVBh
cmFtVmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRTaGFkaW5nTW9kZWw+KG9zLCBwYXJhbVZhbHVl
LlNoYWRpbmdNb2RlbFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUU2hhZGluZ01vZGVsPihvcywgY2FsbCwgcGFyYW0udmFsdWUuU2hhZGluZ01vZGVs
VmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFRleHR1
cmVFbnZQYXJhbWV0ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQYXJh
bVR5cGU6OlRUZXh0dXJlRW52UGFyYW1ldGVyPigKLSAgICAgICAgICAgICAgICBvcywgcGFyYW1W
YWx1ZS5UZXh0dXJlRW52UGFyYW1ldGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRUZXh0dXJlRW52UGFyYW1ldGVyPigKKyAgICAgICAgICAgICAg
ICBvcywgY2FsbCwgcGFyYW0udmFsdWUuVGV4dHVyZUVudlBhcmFtZXRlclZhbCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRUZXh0dXJlRW52VGFyZ2V0Ogot
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZUVu
dlRhcmdldD4ob3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZhbHVlLlRleHR1cmVFbnZUYXJnZXRWYWwpOwor
ICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRleHR1cmVFbnZU
YXJnZXQ+KG9zLCBjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLnZhbHVlLlRleHR1cmVFbnZUYXJnZXRWYWwp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVGV4dHVyZUlE
OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVGV4dHVy
ZUlEPihvcywgcGFyYW1WYWx1ZS5UZXh0dXJlSURWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJh
bVZhbHVlUmVwbGF5PFBhcmFtVHlwZTo6VFRleHR1cmVJRD4ob3MsIGNhbGwsIHBhcmFtLnZhbHVl
LlRleHR1cmVJRFZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5
cGU6OlRUZXh0dXJlSURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRUZXh0dXJlSURDb25zdFBvaW50ZXI+KAotICAgICAgICAgICAg
ICAgIG9zLCBwYXJhbVZhbHVlLlRleHR1cmVJRENvbnN0UG9pbnRlclZhbCk7CisgICAgICAgICAg
ICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVGV4dHVyZUlEQ29uc3RQb2ludGVy
PigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuVGV4dHVyZUlEQ29uc3RQ
b2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VFRleHR1cmVJRFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVUb1N0cmVhbTxQ
YXJhbVR5cGU6OlRUZXh0dXJlSURQb2ludGVyPihvcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWUuVGV4
dHVyZUlEUG9pbnRlclZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFy
YW1UeXBlOjpUVGV4dHVyZUlEUG9pbnRlcj4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUu
VGV4dHVyZUlEUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQ
YXJhbVR5cGU6OlRUZXh0dXJlVGFyZ2V0OgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUVGV4dHVyZVRhcmdldD4ob3MsIHBhcmFtVmFsdWUuVGV4dHVyZVRh
cmdldFZhbCk7CisgICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpU
VGV4dHVyZVRhcmdldD4ob3MsIGNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0udmFsdWUuVGV4dHVyZVRhcmdldFZh
bCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRUZXh0dXJl
VHlwZToKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRl
eHR1cmVUeXBlPihvcywgcGFyYW1WYWx1ZS5UZXh0dXJlVHlwZVZhbCk7CisgICAgICAgICAgICBX
cml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVGV4dHVyZVR5cGU+KG9zLCBjYWxsLCBw
YXJhbS52YWx1ZS5UZXh0dXJlVHlwZVZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lEOgotICAgICAgICAgICAgV3JpdGVQ
YXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRD4oCi0gICAg
ICAgICAgICAgICAgb3MsIHBhcmFtVmFsdWUuVHJhbnNmb3JtRmVlZGJhY2tJRFZhbCk7CisgICAg
ICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJh
Y2tJRD4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlRyYW5zZm9ybUZl
ZWRiYWNrSURWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBl
OjpUVHJhbnNmb3JtRmVlZGJhY2tJRENvbnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURDb25zdFBvaW50
ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLlRyYW5zZm9ybUZlZWRiYWNrSURD
b25zdFBvaW50ZXJWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVwbGF5PFBhcmFt
VHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURDb25zdFBvaW50ZXI+KAorICAgICAgICAgICAgICAg
IG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5UcmFuc2Zvcm1GZWVkYmFja0lEQ29uc3RQb2ludGVyVmFs
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFRyYW5zZm9y
bUZlZWRiYWNrSURQb2ludGVyOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08
UGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50ZXI+KAotICAgICAgICAgICAgICAg
IG9zLCBwYXJhbVZhbHVlLlRyYW5zZm9ybUZlZWRiYWNrSURQb2ludGVyVmFsKTsKKyAgICAgICAg
ICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lE
UG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNhbGwsIHBhcmFtLnZhbHVlLlRyYW5zZm9y
bUZlZWRiYWNrSURQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbjoKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1
ZVJlcGxheTxQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRpb24+KG9zLCBjYWxsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW0udmFsdWUuVW5pZm9ybUxvY2F0aW9uVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFBhcmFtVHlwZTo6VFZlcnRleEFycmF5SUQ6Ci0gICAgICAgICAgICBXcml0ZVBhcmFt
VmFsdWVUb1N0cmVhbTxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEPihvcywgcGFyYW1WYWx1ZS5W
ZXJ0ZXhBcnJheUlEVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlRWZXJ0ZXhBcnJheUlEPihvcywgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS52YWx1ZS5WZXJ0ZXhB
cnJheUlEVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VFZlcnRleEFycmF5SURDb25zdFBvaW50ZXI6Ci0gICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVU
b1N0cmVhbTxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEQ29uc3RQb2ludGVyPigKLSAgICAgICAg
ICAgICAgICBvcywgcGFyYW1WYWx1ZS5WZXJ0ZXhBcnJheUlEQ29uc3RQb2ludGVyVmFsKTsKKyAg
ICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlE
Q29uc3RQb2ludGVyPigKKyAgICAgICAgICAgICAgICBvcywgY2FsbCwgcGFyYW0udmFsdWUuVmVy
dGV4QXJyYXlJRENvbnN0UG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRl
UGFyYW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VFZlcnRleEFycmF5SURQb2ludGVyPigKLSAg
ICAgICAgICAgICAgICBvcywgcGFyYW1WYWx1ZS5WZXJ0ZXhBcnJheUlEUG9pbnRlclZhbCk7Cisg
ICAgICAgICAgICBXcml0ZVBhcmFtVmFsdWVSZXBsYXk8UGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJ
RFBvaW50ZXI+KAorICAgICAgICAgICAgICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS5WZXJ0ZXhB
cnJheUlEUG9pbnRlclZhbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYXJh
bVR5cGU6OlRWZXJ0ZXhBdHRyaWJUeXBlOgotICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9T
dHJlYW08UGFyYW1UeXBlOjpUVmVydGV4QXR0cmliVHlwZT4ob3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVZh
bHVlLlZlcnRleEF0dHJpYlR5cGVWYWwpOworICAgICAgICAgICAgV3JpdGVQYXJhbVZhbHVlUmVw
bGF5PFBhcmFtVHlwZTo6VFZlcnRleEF0dHJpYlR5cGU+KG9zLCBjYWxsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
LnZhbHVlLlZlcnRleEF0dHJpYlR5cGVWYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUGFyYW1UeXBlOjpUdm9pZENvbnN0UG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVRvU3RyZWFtPFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXI+KG9zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1WYWx1ZS52b2lkQ29uc3RQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFy
YW1WYWx1ZVJlcGxheTxQYXJhbVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyPihvcywgY2FsbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbS52YWx1ZS52b2lkQ29uc3RQb2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VHZvaWRDb25zdFBvaW50ZXJQb2ludGVyOgotICAg
ICAgICAgICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUdm9pZENvbnN0UG9p
bnRlclBvaW50ZXI+KAotICAgICAgICAgICAgICAgIG9zLCBwYXJhbVZhbHVlLnZvaWRDb25zdFBv
aW50ZXJQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJlcGxheTxQYXJh
bVR5cGU6OlR2b2lkQ29uc3RQb2ludGVyUG9pbnRlcj4oCisgICAgICAgICAgICAgICAgb3MsIGNh
bGwsIHBhcmFtLnZhbHVlLnZvaWRDb25zdFBvaW50ZXJQb2ludGVyVmFsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VHZvaWRQb2ludGVyOgotICAgICAgICAg
ICAgV3JpdGVQYXJhbVZhbHVlVG9TdHJlYW08UGFyYW1UeXBlOjpUdm9pZFBvaW50ZXI+KG9zLCBw
YXJhbVZhbHVlLnZvaWRQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVJl
cGxheTxQYXJhbVR5cGU6OlR2b2lkUG9pbnRlcj4ob3MsIGNhbGwsIHBhcmFtLnZhbHVlLnZvaWRQ
b2ludGVyVmFsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6
VHZvaWRQb2ludGVyUG9pbnRlcjoKLSAgICAgICAgICAgIFdyaXRlUGFyYW1WYWx1ZVRvU3RyZWFt
PFBhcmFtVHlwZTo6VHZvaWRQb2ludGVyUG9pbnRlcj4oCi0gICAgICAgICAgICAgICAgb3MsIHBh
cmFtVmFsdWUudm9pZFBvaW50ZXJQb2ludGVyVmFsKTsKKyAgICAgICAgICAgIFdyaXRlUGFyYW1W
YWx1ZVJlcGxheTxQYXJhbVR5cGU6OlR2b2lkUG9pbnRlclBvaW50ZXI+KAorICAgICAgICAgICAg
ICAgIG9zLCBjYWxsLCBwYXJhbS52YWx1ZS52b2lkUG9pbnRlclBvaW50ZXJWYWwpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBvcyA8PCAidW5rbm93
biI7CkBAIC02MDAsOCArNjI3LDYgQEAgY29uc3QgY2hhciAqUGFyYW1UeXBlVG9TdHJpbmcoUGFy
YW1UeXBlIHBhcmFtVHlwZSkKICAgICAgICAgICAgIHJldHVybiAiY29uc3QgR0x1aW50ICoiOwog
ICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEUG9pbnRlcjoKICAgICAgICAg
ICAgIHJldHVybiAiR0x1aW50ICoiOwotICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFBhdGhJRDoK
LSAgICAgICAgICAgIHJldHVybiAiR0x1aW50IjsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQ
b2ludFBhcmFtZXRlcjoKICAgICAgICAgICAgIHJldHVybiAiR0xlbnVtIjsKICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRQcmltaXRpdmVNb2RlOgpAQCAtNjcwLDYgKzY5NSw4IEBAIGNvbnN0IGNo
YXIgKlBhcmFtVHlwZVRvU3RyaW5nKFBhcmFtVHlwZSBwYXJhbVR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gImNvbnN0IEdMdWludCAqIjsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRUcmFuc2Zv
cm1GZWVkYmFja0lEUG9pbnRlcjoKICAgICAgICAgICAgIHJldHVybiAiR0x1aW50ICoiOworICAg
ICAgICBjYXNlIFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbjoKKyAgICAgICAgICAgIHJldHVy
biAiR0xlbnVtIjsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEOgogICAg
ICAgICAgICAgcmV0dXJuICJHTHVpbnQiOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFZlcnRl
eEFycmF5SURDb25zdFBvaW50ZXI6CkBAIC03MjAsOCArNzQ3LDYgQEAgUmVzb3VyY2VJRFR5cGUg
R2V0UmVzb3VyY2VJRFR5cGVGcm9tUGFyYW1UeXBlKFBhcmFtVHlwZSBwYXJhbVR5cGUpCiAgICAg
ICAgICAgICByZXR1cm4gUmVzb3VyY2VJRFR5cGU6Ok1lbW9yeU9iamVjdDsKICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRFBvaW50ZXI6CiAgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VJRFR5cGU6Ok1lbW9yeU9iamVjdDsKLSAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRQ
YXRoSUQ6Ci0gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VJRFR5cGU6OlBhdGg7CiAgICAgICAg
IGNhc2UgUGFyYW1UeXBlOjpUUHJvZ3JhbVBpcGVsaW5lSUQ6CiAgICAgICAgICAgICByZXR1cm4g
UmVzb3VyY2VJRFR5cGU6OlByb2dyYW1QaXBlbGluZTsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6
OlRQcm9ncmFtUGlwZWxpbmVJRENvbnN0UG9pbnRlcjoKQEAgLTc5Myw4ICs4MTgsNiBAQCBjb25z
dCBjaGFyICpHZXRSZXNvdXJjZUlEVHlwZU5hbWUoUmVzb3VyY2VJRFR5cGUgcmVzb3VyY2VJRFR5
cGUpCiAgICAgICAgICAgICByZXR1cm4gIkZyYW1lYnVmZmVyIjsKICAgICAgICAgY2FzZSBSZXNv
dXJjZUlEVHlwZTo6TWVtb3J5T2JqZWN0OgogICAgICAgICAgICAgcmV0dXJuICJNZW1vcnlPYmpl
Y3QiOwotICAgICAgICBjYXNlIFJlc291cmNlSURUeXBlOjpQYXRoOgotICAgICAgICAgICAgcmV0
dXJuICJQYXRoIjsKICAgICAgICAgY2FzZSBSZXNvdXJjZUlEVHlwZTo6UHJvZ3JhbVBpcGVsaW5l
OgogICAgICAgICAgICAgcmV0dXJuICJQcm9ncmFtUGlwZWxpbmUiOwogICAgICAgICBjYXNlIFJl
c291cmNlSURUeXBlOjpRdWVyeToKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mcmFtZV9jYXB0dXJlX3V0aWxzX2F1dG9nZW4uaApp
bmRleCA2Nzk4OTUyZmUzNjdhMjQxM2UxYWU2NWYxOGE4OWUxNTU5MDUxYzkxLi43NDEwZTBiZDI2
NTBhOWRiMzc3NjhlOTdmM2NiZGFmOTY2OTcwMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZnJhbWVfY2FwdHVyZV91dGlsc19hdXRvZ2VuLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2ZyYW1lX2NhcHR1cmVfdXRp
bHNfYXV0b2dlbi5oCkBAIC05NCw3ICs5NCw2IEBAIGVudW0gY2xhc3MgUGFyYW1UeXBlCiAgICAg
VE1lbW9yeU9iamVjdElELAogICAgIFRNZW1vcnlPYmplY3RJRENvbnN0UG9pbnRlciwKICAgICBU
TWVtb3J5T2JqZWN0SURQb2ludGVyLAotICAgIFRQYXRoSUQsCiAgICAgVFBvaW50UGFyYW1ldGVy
LAogICAgIFRQcmltaXRpdmVNb2RlLAogICAgIFRQcm9ncmFtUGlwZWxpbmVJRCwKQEAgLTEyOSw2
ICsxMjgsNyBAQCBlbnVtIGNsYXNzIFBhcmFtVHlwZQogICAgIFRUcmFuc2Zvcm1GZWVkYmFja0lE
LAogICAgIFRUcmFuc2Zvcm1GZWVkYmFja0lEQ29uc3RQb2ludGVyLAogICAgIFRUcmFuc2Zvcm1G
ZWVkYmFja0lEUG9pbnRlciwKKyAgICBUVW5pZm9ybUxvY2F0aW9uLAogICAgIFRWZXJ0ZXhBcnJh
eUlELAogICAgIFRWZXJ0ZXhBcnJheUlEQ29uc3RQb2ludGVyLAogICAgIFRWZXJ0ZXhBcnJheUlE
UG9pbnRlciwKQEAgLTIyMCw3ICsyMjAsNiBAQCB1bmlvbiBQYXJhbVZhbHVlCiAgICAgZ2w6Ok1l
bW9yeU9iamVjdElEIE1lbW9yeU9iamVjdElEVmFsOwogICAgIGNvbnN0IGdsOjpNZW1vcnlPYmpl
Y3RJRCAqTWVtb3J5T2JqZWN0SURDb25zdFBvaW50ZXJWYWw7CiAgICAgZ2w6Ok1lbW9yeU9iamVj
dElEICpNZW1vcnlPYmplY3RJRFBvaW50ZXJWYWw7Ci0gICAgZ2w6OlBhdGhJRCBQYXRoSURWYWw7
CiAgICAgZ2w6OlBvaW50UGFyYW1ldGVyIFBvaW50UGFyYW1ldGVyVmFsOwogICAgIGdsOjpQcmlt
aXRpdmVNb2RlIFByaW1pdGl2ZU1vZGVWYWw7CiAgICAgZ2w6OlByb2dyYW1QaXBlbGluZUlEIFBy
b2dyYW1QaXBlbGluZUlEVmFsOwpAQCAtMjU1LDYgKzI1NCw3IEBAIHVuaW9uIFBhcmFtVmFsdWUK
ICAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tJRCBUcmFuc2Zvcm1GZWVkYmFja0lEVmFsOwogICAg
IGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja0lEICpUcmFuc2Zvcm1GZWVkYmFja0lEQ29uc3RQ
b2ludGVyVmFsOwogICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFja0lEICpUcmFuc2Zvcm1GZWVkYmFj
a0lEUG9pbnRlclZhbDsKKyAgICBnbDo6VW5pZm9ybUxvY2F0aW9uIFVuaWZvcm1Mb2NhdGlvblZh
bDsKICAgICBnbDo6VmVydGV4QXJyYXlJRCBWZXJ0ZXhBcnJheUlEVmFsOwogICAgIGNvbnN0IGds
OjpWZXJ0ZXhBcnJheUlEICpWZXJ0ZXhBcnJheUlEQ29uc3RQb2ludGVyVmFsOwogICAgIGdsOjpW
ZXJ0ZXhBcnJheUlEICpWZXJ0ZXhBcnJheUlEUG9pbnRlclZhbDsKQEAgLTc3MCwxMiArNzcwLDYg
QEAgaW5saW5lIGdsOjpNZW1vcnlPYmplY3RJRCAqR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUTWVt
b3J5T2JqZWN0SURQb2ludGVyLCBnbDo6TWUKICAgICByZXR1cm4gdmFsdWUuTWVtb3J5T2JqZWN0
SURQb2ludGVyVmFsOwogfQogCi10ZW1wbGF0ZSA8PgotaW5saW5lIGdsOjpQYXRoSUQgR2V0UGFy
YW1WYWw8UGFyYW1UeXBlOjpUUGF0aElELCBnbDo6UGF0aElEPihjb25zdCBQYXJhbVZhbHVlICZ2
YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUuUGF0aElEVmFsOwotfQotCiB0ZW1wbGF0ZSA8Pgog
aW5saW5lIGdsOjpQb2ludFBhcmFtZXRlciBHZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRQb2ludFBh
cmFtZXRlciwgZ2w6OlBvaW50UGFyYW1ldGVyPigKICAgICBjb25zdCBQYXJhbVZhbHVlICZ2YWx1
ZSkKQEAgLTEwMTEsNiArMTAwNSwxMyBAQCBpbmxpbmUgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrSUQg
KkdldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURQb2ludAogICAgIHJl
dHVybiB2YWx1ZS5UcmFuc2Zvcm1GZWVkYmFja0lEUG9pbnRlclZhbDsKIH0KIAordGVtcGxhdGUg
PD4KK2lubGluZSBnbDo6VW5pZm9ybUxvY2F0aW9uIEdldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFVu
aWZvcm1Mb2NhdGlvbiwgZ2w6OlVuaWZvcm1Mb2NhdGlvbj4oCisgICAgY29uc3QgUGFyYW1WYWx1
ZSAmdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlLlVuaWZvcm1Mb2NhdGlvblZhbDsKK30KKwog
dGVtcGxhdGUgPD4KIGlubGluZSBnbDo6VmVydGV4QXJyYXlJRCBHZXRQYXJhbVZhbDxQYXJhbVR5
cGU6OlRWZXJ0ZXhBcnJheUlELCBnbDo6VmVydGV4QXJyYXlJRD4oCiAgICAgY29uc3QgUGFyYW1W
YWx1ZSAmdmFsdWUpCkBAIC0xMjMwLDggKzEyMzEsNiBAQCBUIEFjY2Vzc1BhcmFtVmFsdWUoUGFy
YW1UeXBlIHBhcmFtVHlwZSwgY29uc3QgUGFyYW1WYWx1ZSAmdmFsdWUpCiAgICAgICAgICAgICBy
ZXR1cm4gR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUTWVtb3J5T2JqZWN0SURDb25zdFBvaW50ZXIs
IFQ+KHZhbHVlKTsKICAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRFBvaW50
ZXI6CiAgICAgICAgICAgICByZXR1cm4gR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUTWVtb3J5T2Jq
ZWN0SURQb2ludGVyLCBUPih2YWx1ZSk7Ci0gICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUGF0aElE
OgotICAgICAgICAgICAgcmV0dXJuIEdldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFBhdGhJRCwgVD4o
dmFsdWUpOwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFBvaW50UGFyYW1ldGVyOgogICAgICAg
ICAgICAgcmV0dXJuIEdldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFBvaW50UGFyYW1ldGVyLCBUPih2
YWx1ZSk7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUUHJpbWl0aXZlTW9kZToKQEAgLTEzMDAs
NiArMTI5OSw4IEBAIFQgQWNjZXNzUGFyYW1WYWx1ZShQYXJhbVR5cGUgcGFyYW1UeXBlLCBjb25z
dCBQYXJhbVZhbHVlICZ2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBHZXRQYXJhbVZhbDxQYXJh
bVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lEQ29uc3RQb2ludGVyLCBUPih2YWx1ZSk7CiAgICAg
ICAgIGNhc2UgUGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRFBvaW50ZXI6CiAgICAgICAg
ICAgICByZXR1cm4gR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUVHJhbnNmb3JtRmVlZGJhY2tJRFBv
aW50ZXIsIFQ+KHZhbHVlKTsKKyAgICAgICAgY2FzZSBQYXJhbVR5cGU6OlRVbmlmb3JtTG9jYXRp
b246CisgICAgICAgICAgICByZXR1cm4gR2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUVW5pZm9ybUxv
Y2F0aW9uLCBUPih2YWx1ZSk7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJ
RDoKICAgICAgICAgICAgIHJldHVybiBHZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJh
eUlELCBUPih2YWx1ZSk7CiAgICAgICAgIGNhc2UgUGFyYW1UeXBlOjpUVmVydGV4QXJyYXlJRENv
bnN0UG9pbnRlcjoKQEAgLTE4MTAsMTIgKzE4MTEsNiBAQCBpbmxpbmUgdm9pZCBTZXRQYXJhbVZh
bDxQYXJhbVR5cGU6OlRNZW1vcnlPYmplY3RJRFBvaW50ZXI+KGdsOjpNZW1vcnlPYmplY3RJRCAq
dgogICAgIHZhbHVlT3V0LT5NZW1vcnlPYmplY3RJRFBvaW50ZXJWYWwgPSB2YWx1ZUluOwogfQog
Ci10ZW1wbGF0ZSA8PgotaW5saW5lIHZvaWQgU2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUUGF0aElE
PihnbDo6UGF0aElEIHZhbHVlSW4sIFBhcmFtVmFsdWUgKnZhbHVlT3V0KQotewotICAgIHZhbHVl
T3V0LT5QYXRoSURWYWwgPSB2YWx1ZUluOwotfQotCiB0ZW1wbGF0ZSA8PgogaW5saW5lIHZvaWQg
U2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUUG9pbnRQYXJhbWV0ZXI+KGdsOjpQb2ludFBhcmFtZXRl
ciB2YWx1ZUluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhcmFtVmFsdWUgKnZhbHVlT3V0KQpAQCAtMjA0NCw2ICsyMDM5LDEzIEBAIGlubGlu
ZSB2b2lkIFNldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURQb2ludGVy
PihnbDo6VHJhbnNmb3JtRmVlCiAgICAgdmFsdWVPdXQtPlRyYW5zZm9ybUZlZWRiYWNrSURQb2lu
dGVyVmFsID0gdmFsdWVJbjsKIH0KIAordGVtcGxhdGUgPD4KK2lubGluZSB2b2lkIFNldFBhcmFt
VmFsPFBhcmFtVHlwZTo6VFVuaWZvcm1Mb2NhdGlvbj4oZ2w6OlVuaWZvcm1Mb2NhdGlvbiB2YWx1
ZUluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXJhbVZhbHVlICp2YWx1ZU91dCkKK3sKKyAgICB2YWx1ZU91dC0+VW5pZm9ybUxvY2F0aW9u
VmFsID0gdmFsdWVJbjsKK30KKwogdGVtcGxhdGUgPD4KIGlubGluZSB2b2lkIFNldFBhcmFtVmFs
PFBhcmFtVHlwZTo6VFZlcnRleEFycmF5SUQ+KGdsOjpWZXJ0ZXhBcnJheUlEIHZhbHVlSW4sIFBh
cmFtVmFsdWUgKnZhbHVlT3V0KQogewpAQCAtMjMzOCw5ICsyMzQwLDYgQEAgdm9pZCBJbml0UGFy
YW1WYWx1ZShQYXJhbVR5cGUgcGFyYW1UeXBlLCBUIHZhbHVlSW4sIFBhcmFtVmFsdWUgKnZhbHVl
T3V0KQogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEUG9pbnRlcjoKICAg
ICAgICAgICAgIFNldFBhcmFtVmFsPFBhcmFtVHlwZTo6VE1lbW9yeU9iamVjdElEUG9pbnRlcj4o
dmFsdWVJbiwgdmFsdWVPdXQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFy
YW1UeXBlOjpUUGF0aElEOgotICAgICAgICAgICAgU2V0UGFyYW1WYWw8UGFyYW1UeXBlOjpUUGF0
aElEPih2YWx1ZUluLCB2YWx1ZU91dCk7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQYXJhbVR5cGU6OlRQb2ludFBhcmFtZXRlcjoKICAgICAgICAgICAgIFNldFBhcmFtVmFsPFBh
cmFtVHlwZTo6VFBvaW50UGFyYW1ldGVyPih2YWx1ZUluLCB2YWx1ZU91dCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTI0NDMsNiArMjQ0Miw5IEBAIHZvaWQgSW5pdFBhcmFtVmFsdWUoUGFyYW1U
eXBlIHBhcmFtVHlwZSwgVCB2YWx1ZUluLCBQYXJhbVZhbHVlICp2YWx1ZU91dCkKICAgICAgICAg
Y2FzZSBQYXJhbVR5cGU6OlRUcmFuc2Zvcm1GZWVkYmFja0lEUG9pbnRlcjoKICAgICAgICAgICAg
IFNldFBhcmFtVmFsPFBhcmFtVHlwZTo6VFRyYW5zZm9ybUZlZWRiYWNrSURQb2ludGVyPih2YWx1
ZUluLCB2YWx1ZU91dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXJhbVR5
cGU6OlRVbmlmb3JtTG9jYXRpb246CisgICAgICAgICAgICBTZXRQYXJhbVZhbDxQYXJhbVR5cGU6
OlRVbmlmb3JtTG9jYXRpb24+KHZhbHVlSW4sIHZhbHVlT3V0KTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFBhcmFtVHlwZTo6VFZlcnRleEFycmF5SUQ6CiAgICAgICAgICAgICBT
ZXRQYXJhbVZhbDxQYXJhbVR5cGU6OlRWZXJ0ZXhBcnJheUlEPih2YWx1ZUluLCB2YWx1ZU91dCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0NzAsNyArMjQ3MiwxMCBAQCB2b2lkIEluaXRQYXJh
bVZhbHVlKFBhcmFtVHlwZSBwYXJhbVR5cGUsIFQgdmFsdWVJbiwgUGFyYW1WYWx1ZSAqdmFsdWVP
dXQpCiAgICAgfQogfQogCi12b2lkIFdyaXRlUGFyYW1UeXBlVG9TdHJlYW0oc3RkOjpvc3RyZWFt
ICZvcywgUGFyYW1UeXBlIHBhcmFtVHlwZSwgY29uc3QgUGFyYW1WYWx1ZSAmcGFyYW1WYWx1ZSk7
CitzdHJ1Y3QgQ2FsbENhcHR1cmU7CitzdHJ1Y3QgUGFyYW1DYXB0dXJlOworCit2b2lkIFdyaXRl
UGFyYW1DYXB0dXJlUmVwbGF5KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IENhbGxDYXB0dXJlICZj
YWxsLCBjb25zdCBQYXJhbUNhcHR1cmUgJnBhcmFtKTsKIGNvbnN0IGNoYXIgKlBhcmFtVHlwZVRv
U3RyaW5nKFBhcmFtVHlwZSBwYXJhbVR5cGUpOwogCiBlbnVtIGNsYXNzIFJlc291cmNlSURUeXBl
CkBAIC0yNDc5LDcgKzI0ODQsNiBAQCBlbnVtIGNsYXNzIFJlc291cmNlSURUeXBlCiAgICAgRmVu
Y2VOViwKICAgICBGcmFtZWJ1ZmZlciwKICAgICBNZW1vcnlPYmplY3QsCi0gICAgUGF0aCwKICAg
ICBQcm9ncmFtUGlwZWxpbmUsCiAgICAgUXVlcnksCiAgICAgUmVuZGVyYnVmZmVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dsX2VudW1fdXRpbHNf
YXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZ2xfZW51
bV91dGlsc19hdXRvZ2VuLmNwcAppbmRleCBjNjczMGNjOWMzZjhmNjEzMzUyZjYzODU5NTA2NWZm
ZThmYzA4ZTZmLi5mNzRmNTNjYzExMGZjMmI4MzNkMWVjZDQzODYxMjRkNGFiODM5MjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZ2xfZW51bV91dGls
c19hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Z2xfZW51bV91dGlsc19hdXRvZ2VuLmNwcApAQCAtMTcxMiw2ICsxNzEyLDEwIEBAIGNvbnN0IGNo
YXIgKkdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwIGVudW1Hcm91cCwgdW5zaWduZWQgaW50IHZh
bHVlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkdMX0JHUkE4X0VYVCI7CiAgICAgICAg
ICAgICAgICAgY2FzZSAweDkzQTY6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiR0xfUFJP
R1JBTV9CSU5BUllfQU5HTEUiOworICAgICAgICAgICAgICAgIGNhc2UgMHg5M0FFOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gIkdMX0hBTkRMRV9UWVBFX1pJUkNPTl9WTU9fQU5HTEUiOwor
ICAgICAgICAgICAgICAgIGNhc2UgMHg5M0FGOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
IkdMX0hBTkRMRV9UWVBFX1pJUkNPTl9FVkVOVF9BTkdMRSI7CiAgICAgICAgICAgICAgICAgY2Fz
ZSAweDkzQjA6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfNHg0IjsKICAgICAgICAgICAgICAgICBjYXNlIDB4OTNCMToKQEAgLTI1MjksNiArMjUz
MywxNCBAQCBjb25zdCBjaGFyICpHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cCBlbnVtR3JvdXAs
IHVuc2lnbmVkIGludCB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJHTF9SR0JB
OEkiOwogICAgICAgICAgICAgICAgIGNhc2UgMHg4RDhGOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gIkdMX1JHQjhJIjsKKyAgICAgICAgICAgICAgICBjYXNlIDB4OERCQjoKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQiOworICAgICAg
ICAgICAgICAgIGNhc2UgMHg4REJDOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkdMX0NP
TVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQiOworICAgICAgICAgICAgICAgIGNhc2UgMHg4
REJEOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkdMX0NPTVBSRVNTRURfUkVEX0dSRUVO
X1JHVEMyX0VYVCI7CisgICAgICAgICAgICAgICAgY2FzZSAweDhEQkU6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAiR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCI7
CiAgICAgICAgICAgICAgICAgY2FzZSAweDhFOEM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAiR0xfQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5PUk1fRVhUIjsKICAgICAgICAgICAgICAgICBj
YXNlIDB4OEU4RDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9vdmVybGF5X3dpZGdldHMuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9vdmVybGF5X3dpZGdldHMuanNvbgppbmRleCAwZjY1Zjc1MzUxYTA2NDg2Y2ZkZTI3
N2VjMDZmZDJlYWJmYzUxZTc1Li40YWViZmMxZmJmMDI4MWM1YjY3MmEwMGY4NjFmNzMwYTBjMDdi
MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvb3Zl
cmxheV93aWRnZXRzLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL292ZXJsYXlfd2lkZ2V0cy5qc29uCkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAgICAgICAi
bGVuZ3RoIjogMjUKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgIm5hbWUiOiAi
VnVsa2FuQ29tbWFuZEdyYXBoU2l6ZSIsCisgICAgICAgICAgICAibmFtZSI6ICJWdWxrYW5SZW5k
ZXJQYXNzQ291bnQiLAogICAgICAgICAgICAgInR5cGUiOiAiUnVubmluZ0dyYXBoKDYwKSIsCiAg
ICAgICAgICAgICAiY29sb3IiOiBbNzUsIDIwMCwgMCwgMjAwXSwKICAgICAgICAgICAgICJjb29y
ZHMiOiBbMTAsIDEwMF0sCkBAIC02MSw3ICs2MSw3IEBACiAgICAgICAgICAgICAiaGVpZ2h0Ijog
MTAwLAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogewogICAgICAgICAgICAgICAgICJjb2xv
ciI6IFs3NSwgMjAwLCAwLCAyNTVdLAotICAgICAgICAgICAgICAgICJjb29yZHMiOiBbIlZ1bGth
bkNvbW1hbmRHcmFwaFNpemUubGVmdC5hbGlnbiIsICJWdWxrYW5Db21tYW5kR3JhcGhTaXplLnRv
cC5hZGphY2VudCJdLAorICAgICAgICAgICAgICAgICJjb29yZHMiOiBbIlZ1bGthblJlbmRlclBh
c3NDb3VudC5sZWZ0LmFsaWduIiwgIlZ1bGthblJlbmRlclBhc3NDb3VudC50b3AuYWRqYWNlbnQi
XSwKICAgICAgICAgICAgICAgICAiZm9udCI6ICJzbWFsbCIsCiAgICAgICAgICAgICAgICAgImxl
bmd0aCI6IDQwCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAKaW5kZXggZmM0YTJjNmMz
ZjEzNGI3NTE2YmUyZTc5Yzg4NDIxMTNiMTgxNTUyMS4uZmUyOGI0YTJjNzhmOTAyMDhhZWY4YTM2
NmVmZGFhYjQ4NzNhMTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBA
IHRlbXBsYXRlIEdMdWludCBDYXN0UXVlcnlWYWx1ZVRvPEdMdWludCwgR0x1aW50PihHTGVudW0g
cG5hbWUsIEdMdWludCB2YWx1ZSk7CiB0ZW1wbGF0ZSBHTHVpbnQgQ2FzdFF1ZXJ5VmFsdWVUbzxH
THVpbnQsIEdMZmxvYXQ+KEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSk7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBRdWVyeVQ+Ci12b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0
LAordm9pZCBDYXN0U3RhdGVWYWx1ZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBuYXRpdmVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcywK
QEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0
LAogICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfSU5UXzY0X0FOR0xFWCkKICAgICB7CiAg
ICAgICAgIHN0ZDo6dmVjdG9yPEdMaW50NjQ+IGludDY0UGFyYW1zKG51bVBhcmFtcywgMCk7Ci0g
ICAgICAgIGNvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsIGludDY0UGFyYW1zLmRhdGEoKSk7
CisgICAgICAgIGNvbnRleHQtPmdldEludGVnZXI2NHZJbXBsKHBuYW1lLCBpbnQ2NFBhcmFtcy5k
YXRhKCkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1z
OyArK2kpCiAgICAgICAgIHsKQEAgLTIyNywxMSArMjI3LDE1IEBAIHZvaWQgQ2FzdFN0YXRlVmFs
dWVzKENvbnRleHQgKmNvbnRleHQsCiAvLyBUaGUgY2FsbHMgYmVsb3cgd2lsbCBtYWtlIENhc3RT
dGF0ZVZhbHVlcyBzdWNjZXNzZnVsbHkgbGluayB3aXRoIHRoZSBHTCBzdGF0ZSBxdWVyeSB0eXBl
cwogLy8gVGhlIEdMIHN0YXRlIHF1ZXJ5IEFQSSB0eXBlcyBhcmU6IGJvb2wsIGludCwgdWludCwg
ZmxvYXQsIGludDY0LCB1aW50NjQKIAotdGVtcGxhdGUgdm9pZCBDYXN0U3RhdGVWYWx1ZXM8R0xi
b29sZWFuPihDb250ZXh0ICosIEdMZW51bSwgR0xlbnVtLCB1bnNpZ25lZCBpbnQsIEdMYm9vbGVh
biAqKTsKLXRlbXBsYXRlIHZvaWQgQ2FzdFN0YXRlVmFsdWVzPEdMaW50PihDb250ZXh0ICosIEdM
ZW51bSwgR0xlbnVtLCB1bnNpZ25lZCBpbnQsIEdMaW50ICopOwotdGVtcGxhdGUgdm9pZCBDYXN0
U3RhdGVWYWx1ZXM8R0x1aW50PihDb250ZXh0ICosIEdMZW51bSwgR0xlbnVtLCB1bnNpZ25lZCBp
bnQsIEdMdWludCAqKTsKLXRlbXBsYXRlIHZvaWQgQ2FzdFN0YXRlVmFsdWVzPEdMZmxvYXQ+KENv
bnRleHQgKiwgR0xlbnVtLCBHTGVudW0sIHVuc2lnbmVkIGludCwgR0xmbG9hdCAqKTsKLXRlbXBs
YXRlIHZvaWQgQ2FzdFN0YXRlVmFsdWVzPEdMaW50NjQ+KENvbnRleHQgKiwgR0xlbnVtLCBHTGVu
dW0sIHVuc2lnbmVkIGludCwgR0xpbnQ2NCAqKTsKK3RlbXBsYXRlIHZvaWQgQ2FzdFN0YXRlVmFs
dWVzPEdMYm9vbGVhbj4oY29uc3QgQ29udGV4dCAqLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RTdGF0ZVZhbHVlczxHTGludD4oY29u
c3QgQ29udGV4dCAqLCBHTGVudW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTGludCAqKTsKK3Rl
bXBsYXRlIHZvaWQgQ2FzdFN0YXRlVmFsdWVzPEdMdWludD4oY29uc3QgQ29udGV4dCAqLCBHTGVu
dW0sIEdMZW51bSwgdW5zaWduZWQgaW50LCBHTHVpbnQgKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RT
dGF0ZVZhbHVlczxHTGZsb2F0Pihjb25zdCBDb250ZXh0ICosIEdMZW51bSwgR0xlbnVtLCB1bnNp
Z25lZCBpbnQsIEdMZmxvYXQgKik7Cit0ZW1wbGF0ZSB2b2lkIENhc3RTdGF0ZVZhbHVlczxHTGlu
dDY0Pihjb25zdCBDb250ZXh0ICosIEdMZW51bSwgR0xlbnVtLCB1bnNpZ25lZCBpbnQsIEdMaW50
NjQgKik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBRdWVyeVQ+CiB2b2lkIENhc3RJbmRleGVkU3Rh
dGVWYWx1ZXMoQ29udGV4dCAqY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oCmluZGV4IDFjZTNmNmY0OWVl
OWVmODRlMzJmYmM4NDExZDQ3NWYzZDk2Y2EwYTAuLjc3ODRjMzNlNzM5ODIzNzQwYzk0NzY4ZDFj
ODUwOTNjNTA2ODBjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaApAQCAtMTE5LDcgKzExOSw3IEBAIEdMYm9v
bGVhbiBDb252ZXJ0VG9HTEJvb2xlYW4oUGFyYW1UeXBlIHBhcmFtKQogCiAvLyBUaGUgR0wgc3Rh
dGUgcXVlcnkgQVBJIHR5cGVzIGFyZTogYm9vbCwgaW50LCB1aW50LCBmbG9hdCwgaW50NjQsIHVp
bnQ2NAogdGVtcGxhdGUgPHR5cGVuYW1lIFF1ZXJ5VD4KLXZvaWQgQ2FzdFN0YXRlVmFsdWVzKENv
bnRleHQgKmNvbnRleHQsCit2b2lkIENhc3RTdGF0ZVZhbHVlcyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG5hdGl2ZVR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbnVtUGFyYW1zLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3F1ZXJ5dXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3F1ZXJ5dXRpbHMuY3BwCmluZGV4IDgzMWUyOGNkYjBkZmY2ZGEwNzA0NDJmNzM3YzVmZTc0
ODFhODYzYzQuLjRlNmYxMTIyNWJmNTEyMjkwNzY5ZDFjNmRjZTk1Y2Q1YTNkYjFiMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5j
cHAKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9GZW5jZS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvR0xFUzFTdGF0
ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL01lbW9yeU9iamVjdC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJidWZmZXIuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9TYW1wbGVyLmgiCkBAIC0yMTcsNyArMjE4LDIyIEBAIHZvaWQgUXVlcnlU
ZXhMZXZlbFBhcmFtZXRlckJhc2UoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwKICAgICB9CiB9CiAK
LXRlbXBsYXRlIDxib29sIGlzUHVyZUludGVnZXIsIHR5cGVuYW1lIFBhcmFtVHlwZT4KKy8vIFRo
aXMgZnVuY3Rpb24gaXMgbmVlZGVkIHRvIGhhbmRsZSBmaXhlZF9wb2ludCBkYXRhLgorLy8gSXQg
Y2FuIGJlIHVzZWQgd2hlbiBzb21lIHBuYW1lIG5lZWQgc3BlY2lhbCBjb252ZXJzaW9uIGZyb20g
aW50L2Zsb2F0L2Jvb2wgdG8gZml4ZWRfcG9pbnQuCit0ZW1wbGF0ZSA8Ym9vbCBpc0dMZml4ZWQs
IHR5cGVuYW1lIFF1ZXJ5VCwgdHlwZW5hbWUgUGFyYW1UeXBlPgorUXVlcnlUIENhc3RGcm9tU3Bl
Y2lhbFZhbHVlKEdMZW51bSBwbmFtZSwgY29uc3QgUGFyYW1UeXBlIHBhcmFtKQoreworICAgIGlm
IChpc0dMZml4ZWQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UXVlcnlUPihD
b252ZXJ0RmxvYXRUb0ZpeGVkKENhc3RGcm9tU3RhdGVWYWx1ZTxHTGZsb2F0PihwbmFtZSwgcGFy
YW0pKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBDYXN0RnJvbVN0
YXRlVmFsdWU8UXVlcnlUPihwbmFtZSwgcGFyYW0pOworICAgIH0KK30KKwordGVtcGxhdGUgPGJv
b2wgaXNQdXJlSW50ZWdlciwgYm9vbCBpc0dMZml4ZWQsIHR5cGVuYW1lIFBhcmFtVHlwZT4KIHZv
aWQgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICp0ZXh0dXJlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLApAQCAtMjUyLDcgKzI2OCw4IEBAIHZvaWQgUXVl
cnlUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAq
cGFyYW1zID0gQ2FzdEZyb21HTGludFN0YXRlVmFsdWU8UGFyYW1UeXBlPihwbmFtZSwgdGV4dHVy
ZS0+Z2V0VXNhZ2UoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX01BWF9BTklTT1RST1BZX0VYVDoKLSAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0RnJvbVN0
YXRlVmFsdWU8UGFyYW1UeXBlPihwbmFtZSwgdGV4dHVyZS0+Z2V0TWF4QW5pc290cm9weSgpKTsK
KyAgICAgICAgICAgICpwYXJhbXMgPQorICAgICAgICAgICAgICAgIENhc3RGcm9tU3BlY2lhbFZh
bHVlPGlzR0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwgdGV4dHVyZS0+Z2V0TWF4QW5pc290cm9w
eSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpM
RV9SOgogICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVlPFBhcmFt
VHlwZT4ocG5hbWUsIHRleHR1cmUtPmdldFN3aXp6bGVSZWQoKSk7CkBAIC0yNzMsMTAgKzI5MCwx
MCBAQCB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVlPFBhcmFtVHlwZT4o
cG5hbWUsIHRleHR1cmUtPmdldE1heExldmVsKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOgotICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RG
cm9tU3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRNaW5Mb2QoKSk7Cisg
ICAgICAgICAgICAqcGFyYW1zID0gQ2FzdEZyb21TcGVjaWFsVmFsdWU8aXNHTGZpeGVkLCBQYXJh
bVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRNaW5Mb2QoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6Ci0gICAgICAgICAgICAqcGFyYW1zID0g
Q2FzdEZyb21TdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUsIHRleHR1cmUtPmdldE1heExvZCgp
KTsKKyAgICAgICAgICAgICpwYXJhbXMgPSBDYXN0RnJvbVNwZWNpYWxWYWx1ZTxpc0dMZml4ZWQs
IFBhcmFtVHlwZT4ocG5hbWUsIHRleHR1cmUtPmdldE1heExvZCgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOgogICAgICAgICAgICAg
KnBhcmFtcyA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUsIHRleHR1
cmUtPmdldENvbXBhcmVNb2RlKCkpOwpAQCAtMjk0LDIzICszMTEsMjMgQEAgdm9pZCBRdWVyeVRl
eFBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NST1BfUkVDVF9PRVM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJmNyb3AgPSB0ZXh0dXJlLT5nZXRDcm9wKCk7Ci0gICAgICAgICAgICBwYXJhbXNb
MF0gICAgICAgICAgICAgICAgID0gQ2FzdEZyb21HTGludFN0YXRlVmFsdWU8UGFyYW1UeXBlPihw
bmFtZSwgY3JvcC54KTsKLSAgICAgICAgICAgIHBhcmFtc1sxXSAgICAgICAgICAgICAgICAgPSBD
YXN0RnJvbUdMaW50U3RhdGVWYWx1ZTxQYXJhbVR5cGU+KHBuYW1lLCBjcm9wLnkpOwotICAgICAg
ICAgICAgcGFyYW1zWzJdICAgICAgICAgICAgICAgICA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVl
PFBhcmFtVHlwZT4ocG5hbWUsIGNyb3Aud2lkdGgpOwotICAgICAgICAgICAgcGFyYW1zWzNdICAg
ICAgICAgICAgICAgICA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUs
IGNyb3AuaGVpZ2h0KTsKKyAgICAgICAgICAgIHBhcmFtc1swXSAgICAgICAgICAgICAgICAgPSBD
YXN0RnJvbVNwZWNpYWxWYWx1ZTxpc0dMZml4ZWQsIFBhcmFtVHlwZT4ocG5hbWUsIGNyb3AueCk7
CisgICAgICAgICAgICBwYXJhbXNbMV0gICAgICAgICAgICAgICAgID0gQ2FzdEZyb21TcGVjaWFs
VmFsdWU8aXNHTGZpeGVkLCBQYXJhbVR5cGU+KHBuYW1lLCBjcm9wLnkpOworICAgICAgICAgICAg
cGFyYW1zWzJdID0gQ2FzdEZyb21TcGVjaWFsVmFsdWU8aXNHTGZpeGVkLCBQYXJhbVR5cGU+KHBu
YW1lLCBjcm9wLndpZHRoKTsKKyAgICAgICAgICAgIHBhcmFtc1szXSA9IENhc3RGcm9tU3BlY2lh
bFZhbHVlPGlzR0xmaXhlZCwgUGFyYW1UeXBlPihwbmFtZSwgY3JvcC5oZWlnaHQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9HRU5FUkFURV9NSVBNQVA6
CiAgICAgICAgICAgICAqcGFyYW1zID0gQ2FzdEZyb21HTGludFN0YXRlVmFsdWU8UGFyYW1UeXBl
PihwbmFtZSwgdGV4dHVyZS0+Z2V0R2VuZXJhdGVNaXBtYXBIaW50KCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR0xfTUVNT1JZX1NJWkVfQU5HTEU6Ci0gICAgICAgICAgICAq
cGFyYW1zID0gQ2FzdEZyb21TdGF0ZVZhbHVlPFBhcmFtVHlwZT4ocG5hbWUsIHRleHR1cmUtPmdl
dE1lbW9yeVNpemUoKSk7CisgICAgICAgICAgICAqcGFyYW1zID0gQ2FzdEZyb21TcGVjaWFsVmFs
dWU8aXNHTGZpeGVkLCBQYXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXRNZW1vcnlTaXplKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CT1JERVJfQ09M
T1I6CiAgICAgICAgICAgICBDb252ZXJ0RnJvbUNvbG9yPGlzUHVyZUludGVnZXI+KHRleHR1cmUt
PmdldEJvcmRlckNvbG9yKCksIHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX05BVElWRV9JRF9BTkdMRToKLSAgICAgICAgICAgICpwYXJhbXMgPSBD
YXN0RnJvbVN0YXRlVmFsdWU8UGFyYW1UeXBlPihwbmFtZSwgdGV4dHVyZS0+Z2V0TmF0aXZlSUQo
KSk7CisgICAgICAgICAgICAqcGFyYW1zID0gQ2FzdEZyb21TcGVjaWFsVmFsdWU8aXNHTGZpeGVk
LCBQYXJhbVR5cGU+KHBuYW1lLCB0ZXh0dXJlLT5nZXROYXRpdmVJRCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFU
OgogICAgICAgICAgICAgKnBhcmFtcyA9IENhc3RGcm9tR0xpbnRTdGF0ZVZhbHVlPFBhcmFtVHlw
ZT4oCkBAIC0zMjEsNyArMzM4LDggQEAgdm9pZCBRdWVyeVRleFBhcmFtZXRlckJhc2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBwbmFtZSwgdGV4dHVyZS0+Z2V0SW1w
bGVtZW50YXRpb25Db2xvclJlYWRUeXBlKGNvbnRleHQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEU6Ci0gICAgICAg
ICAgICAqcGFyYW1zID0gR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfQllfU0laRTsKKyAg
ICAgICAgICAgICpwYXJhbXMgPQorICAgICAgICAgICAgICAgIENhc3RGcm9tR0xpbnRTdGF0ZVZh
bHVlPFBhcmFtVHlwZT4ocG5hbWUsIEdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX0JZX1NJ
WkUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwpAQCAtMzI5LDcgKzM0NywyMyBAQCB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVy
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgIH0KIH0KIAotdGVtcGxhdGUgPGJvb2wg
aXNQdXJlSW50ZWdlciwgdHlwZW5hbWUgUGFyYW1UeXBlPgorLy8gdGhpcyBmdW5jdGlvbiBpcyBu
ZWVkZWQgdG8gaGFuZGxlIE9FU19GSVhFRF9QT0lOVC4KKy8vIFNvbWUgcG5hbWUgdmFsdWVzIGNh
biB0YWtlIGluIEdMZml4ZWQgdmFsdWVzIGFuZCBtYXkgbmVlZCB0byBiZSBjb252ZXJ0ZWQKK3Rl
bXBsYXRlIDxib29sIGlzR0xmaXhlZCwgdHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUgUGFy
YW1UeXBlPgorUmV0dXJuVHlwZSBDb252ZXJ0VGV4UGFyYW0oR0xlbnVtIHBuYW1lLCBjb25zdCBQ
YXJhbVR5cGUgcGFyYW0pCit7CisgICAgaWYgKGlzR0xmaXhlZCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBDYXN0UXVlcnlWYWx1ZVRvPFJldHVyblR5cGU+KHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0Rml4ZWRUb0Zsb2F0KHN0YXRpY19j
YXN0PEdMZml4ZWQ+KHBhcmFtKSkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm4gQ2FzdFF1ZXJ5VmFsdWVUbzxSZXR1cm5UeXBlPihwbmFtZSwgcGFyYW0pOworICAgIH0K
K30KKwordGVtcGxhdGUgPGJvb2wgaXNQdXJlSW50ZWdlciwgYm9vbCBpc0dMZml4ZWQsIHR5cGVu
YW1lIFBhcmFtVHlwZT4KIHZvaWQgU2V0VGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0
LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1z
KQogewogICAgIEFTU0VSVCh0ZXh0dXJlICE9IG51bGxwdHIpOwpAQCAtMzU1LDcgKzM4OSw4IEBA
IHZvaWQgU2V0VGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0
dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0CiAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRVc2FnZShj
b250ZXh0LCBDb252ZXJ0VG9HTGVudW0ocG5hbWUsIHBhcmFtc1swXSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6Ci0gICAg
ICAgICAgICB0ZXh0dXJlLT5zZXRNYXhBbmlzb3Ryb3B5KGNvbnRleHQsIENhc3RRdWVyeVZhbHVl
VG88R0xmbG9hdD4ocG5hbWUsIHBhcmFtc1swXSkpOworICAgICAgICAgICAgdGV4dHVyZS0+c2V0
TWF4QW5pc290cm9weShjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb252ZXJ0VGV4UGFyYW08aXNHTGZpeGVkLCBHTGZsb2F0PihwbmFtZSwgcGFyYW1zWzBd
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVf
TU9ERToKICAgICAgICAgICAgIHRleHR1cmUtPnNldENvbXBhcmVNb2RlKGNvbnRleHQsIENvbnZl
cnRUb0dMZW51bShwbmFtZSwgcGFyYW1zWzBdKSk7CkBAIC0zOTgsMTAgKzQzMywxMCBAQCB2b2lk
IFNldFRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwg
R0xlbnVtIHBuYW1lLCBjb25zdAogICAgICAgICAgICAgdGV4dHVyZS0+c2V0U1JHQkRlY29kZShj
b250ZXh0LCBDb252ZXJ0VG9HTGVudW0ocG5hbWUsIHBhcmFtc1swXSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTOgotICAgICAgICAg
ICAgdGV4dHVyZS0+c2V0Q3JvcChnbDo6UmVjdGFuZ2xlKENhc3RRdWVyeVZhbHVlVG88R0xpbnQ+
KHBuYW1lLCBwYXJhbXNbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENhc3RRdWVyeVZhbHVlVG88R0xpbnQ+KHBuYW1lLCBwYXJhbXNbMV0pLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhc3RRdWVyeVZhbHVlVG88R0xp
bnQ+KHBuYW1lLCBwYXJhbXNbMl0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENhc3RRdWVyeVZhbHVlVG88R0xpbnQ+KHBuYW1lLCBwYXJhbXNbM10pKSk7Cisg
ICAgICAgICAgICB0ZXh0dXJlLT5zZXRDcm9wKGdsOjpSZWN0YW5nbGUoQ29udmVydFRleFBhcmFt
PGlzR0xmaXhlZCwgR0xpbnQ+KHBuYW1lLCBwYXJhbXNbMF0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnRUZXhQYXJhbTxpc0dMZml4ZWQsIEdMaW50
PihwbmFtZSwgcGFyYW1zWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb252ZXJ0VGV4UGFyYW08aXNHTGZpeGVkLCBHTGludD4ocG5hbWUsIHBhcmFtc1sy
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydFRl
eFBhcmFtPGlzR0xmaXhlZCwgR0xpbnQ+KHBuYW1lLCBwYXJhbXNbM10pKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBHTF9HRU5FUkFURV9NSVBNQVA6CiAgICAgICAgICAgICB0
ZXh0dXJlLT5zZXRHZW5lcmF0ZU1pcG1hcEhpbnQoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkp
OwpAQCAtMTE5NCw3ICsxMjI5LDcgQEAgdm9pZCBRdWVyeVByb2dyYW1pdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBQcm9ncmFtICpwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW4KICAgICAgICAg
ICAgICpwYXJhbXMgPSBwcm9ncmFtLT5pc1ZhbGlkYXRlZCgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIEdMX0lORk9fTE9HX0xFTkdUSDoKLSAgICAgICAgICAgICpwYXJhbXMg
PSBwcm9ncmFtLT5nZXRJbmZvTG9nTGVuZ3RoKCk7CisgICAgICAgICAgICAqcGFyYW1zID0gcHJv
Z3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmdldEluZm9Mb2dMZW5ndGgoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBHTF9BVFRBQ0hFRF9TSEFERVJTOgogICAgICAgICAgICAgKnBh
cmFtcyA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyc0NvdW50KCk7CkBAIC0xMzkyLDcgKzE0
MjcsMTUgQEAgdm9pZCBRdWVyeVRleFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKIHsKLSAgICBRdWVyeVRleFBhcmFtZXRlckJhc2U8
ZmFsc2U+KGNvbnRleHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworICAgIFF1ZXJ5VGV4UGFy
YW1ldGVyQmFzZTxmYWxzZSwgZmFsc2U+KGNvbnRleHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMp
OworfQorCit2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyeHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICp0ZXh0dXJlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZpeGVkICpwYXJhbXMpCit7CisgICAgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlPGZhbHNlLCB0
cnVlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBRdWVyeVRl
eFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCkBAIC0xNDAwLDcgKzE0NDMsNyBA
QCB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBRdWVyeVRleFBhcmFtZXRlckJhc2U8ZmFsc2U+KGNv
bnRleHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworICAgIFF1ZXJ5VGV4UGFyYW1ldGVyQmFz
ZTxmYWxzZSwgZmFsc2U+KGNvbnRleHQsIHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOwogfQogCiB2
b2lkIFF1ZXJ5VGV4UGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCkBAIC0xNDA4
LDcgKzE0NTEsNyBAQCB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBRdWVyeVRleFBhcmFtZXRl
ckJhc2U8dHJ1ZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgUXVlcnlU
ZXhQYXJhbWV0ZXJCYXNlPHRydWUsIGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFy
YW1zKTsKIH0KIAogdm9pZCBRdWVyeVRleFBhcmFtZXRlckl1aXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKQEAgLTE0MTYsNyArMTQ1OSw3IEBAIHZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJJdWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKIHsKLSAg
ICBRdWVyeVRleFBhcmFtZXRlckJhc2U8dHJ1ZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBh
cmFtcyk7CisgICAgUXVlcnlUZXhQYXJhbWV0ZXJCYXNlPHRydWUsIGZhbHNlPihjb250ZXh0LCB0
ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBRdWVyeVNhbXBsZXJQYXJhbWV0ZXJm
dihjb25zdCBTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykK
QEAgLTE2MDksMzQgKzE2NTIsNDQgQEAgYW5nbGU6OlJlc3VsdCBRdWVyeVN5bmNpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
IAordm9pZCBTZXRUZXhQYXJhbWV0ZXJ4KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRleHR1
cmUsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKK3sKKyAgICBTZXRUZXhQYXJhbWV0ZXJC
YXNlPGZhbHNlLCB0cnVlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgJnBhcmFtKTsKK30KKwor
dm9pZCBTZXRUZXhQYXJhbWV0ZXJ4dihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJl
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKK3sKKyAgICBTZXRUZXhQYXJh
bWV0ZXJCYXNlPGZhbHNlLCB0cnVlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsK
K30KKwogdm9pZCBTZXRUZXhQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRl
eHR1cmUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBTZXRUZXhQYXJhbWV0
ZXJCYXNlPGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgJnBhcmFtKTsKKyAgICBTZXRU
ZXhQYXJhbWV0ZXJCYXNlPGZhbHNlLCBmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsICZw
YXJhbSk7CiB9CiAKIHZvaWQgU2V0VGV4UGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwgVGV4
dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7Ci0g
ICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBh
cmFtcyk7CisgICAgU2V0VGV4UGFyYW1ldGVyQmFzZTxmYWxzZSwgZmFsc2U+KGNvbnRleHQsIHRl
eHR1cmUsIHBuYW1lLCBwYXJhbXMpOwogfQogCiB2b2lkIFNldFRleFBhcmFtZXRlcmkoQ29udGV4
dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkK
IHsKLSAgICBTZXRUZXhQYXJhbWV0ZXJCYXNlPGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFt
ZSwgJnBhcmFtKTsKKyAgICBTZXRUZXhQYXJhbWV0ZXJCYXNlPGZhbHNlLCBmYWxzZT4oY29udGV4
dCwgdGV4dHVyZSwgcG5hbWUsICZwYXJhbSk7CiB9CiAKIHZvaWQgU2V0VGV4UGFyYW1ldGVyaXYo
Q29udGV4dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGludCAqcGFyYW1zKQogewotICAgIFNldFRleFBhcmFtZXRlckJhc2U8ZmFsc2U+KGNvbnRleHQs
IHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworICAgIFNldFRleFBhcmFtZXRlckJhc2U8ZmFsc2Us
IGZhbHNlPihjb250ZXh0LCB0ZXh0dXJlLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBTZXRU
ZXhQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewotICAgIFNldFRleFBhcmFtZXRlckJhc2U8
dHJ1ZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgU2V0VGV4UGFyYW1l
dGVyQmFzZTx0cnVlLCBmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CiB9
CiAKIHZvaWQgU2V0VGV4UGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0
ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewotICAgIFNldFRl
eFBhcmFtZXRlckJhc2U8dHJ1ZT4oY29udGV4dCwgdGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7Cisg
ICAgU2V0VGV4UGFyYW1ldGVyQmFzZTx0cnVlLCBmYWxzZT4oY29udGV4dCwgdGV4dHVyZSwgcG5h
bWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmYoQ29udGV4dCAqY29u
dGV4dCwgU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQpAQCAt
MTcyOSw3ICsxNzgyLDcgQEAgR0xpbnQgR2V0VW5pZm9ybVJlc291cmNlUHJvcGVydHkoY29uc3Qg
UHJvZ3JhbSAqcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGUKICAgICAgICAgICAgIHJl
dHVybiBHZXRDb21tb25WYXJpYWJsZVByb3BlcnR5KHVuaWZvcm0sIHJlc291cmNlUHJvcCk7CiAK
ICAgICAgICAgY2FzZSBHTF9MT0NBVElPTjoKLSAgICAgICAgICAgIHJldHVybiBwcm9ncmFtLT5n
ZXRVbmlmb3JtTG9jYXRpb24odW5pZm9ybS5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBwcm9n
cmFtLT5nZXRVbmlmb3JtTG9jYXRpb24odW5pZm9ybS5uYW1lKS52YWx1ZTsKIAogICAgICAgICBj
YXNlIEdMX0JMT0NLX0lOREVYOgogICAgICAgICAgICAgcmV0dXJuICh1bmlmb3JtLmlzQXRvbWlj
Q291bnRlcigpID8gLTEgOiB1bmlmb3JtLmJ1ZmZlckluZGV4KTsKQEAgLTE5MDQsNyArMTk1Nyw3
IEBAIEdMaW50IFF1ZXJ5UHJvZ3JhbVJlc291cmNlTG9jYXRpb24oY29uc3QgUHJvZ3JhbSAqcHJv
Z3JhbSwKICAgICAgICAgICAgIHJldHVybiBwcm9ncmFtLT5nZXRPdXRwdXRSZXNvdXJjZUxvY2F0
aW9uKG5hbWUpOwogCiAgICAgICAgIGNhc2UgR0xfVU5JRk9STToKLSAgICAgICAgICAgIHJldHVy
biBwcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24obmFtZSk7CisgICAgICAgICAgICByZXR1cm4g
cHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpLnZhbHVlOwogCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMjAyMyw2ICsyMDc2LDM3IEBAIHZv
aWQgUXVlcnlQcm9ncmFtSW50ZXJmYWNlaXYoY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSwKICAgICB9
CiB9CiAKK2FuZ2xlOjpSZXN1bHQgU2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWVtb3J5T2JqZWN0ICptZW1vcnlPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9ERURJQ0FURURfTUVNT1JZX09CSkVDVF9FWFQ6CisgICAg
ICAgICAgICBBTkdMRV9UUlkobWVtb3J5T2JqZWN0LT5zZXREZWRpY2F0ZWRNZW1vcnkoY29udGV4
dCwgQ29udmVydFRvQm9vbChwYXJhbXNbMF0pKSk7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK3ZvaWQgUXVlcnlNZW1vcnlPYmpl
Y3RQYXJhbWV0ZXJpdihjb25zdCBNZW1vcnlPYmplY3QgKm1lbW9yeU9iamVjdCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAg
ICBjYXNlIEdMX0RFRElDQVRFRF9NRU1PUllfT0JKRUNUX0VYVDoKKyAgICAgICAgICAgICpwYXJh
bXMgPSBtZW1vcnlPYmplY3QtPmlzRGVkaWNhdGVkTWVtb3J5KCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9
Cit9CisKIENsaWVudFZlcnRleEFycmF5VHlwZSBQYXJhbVRvVmVydGV4QXJyYXlUeXBlKEdMZW51
bSBwYXJhbSkKIHsKICAgICBzd2l0Y2ggKHBhcmFtKQpAQCAtMjc5Miw3ICsyODc2LDcgQEAgdm9p
ZCBTZXRQb2ludFNpemUoR0xFUzFTdGF0ZSAqc3RhdGUsIEdMZmxvYXQgc2l6ZSkKICAgICBwYXJh
bXMucG9pbnRTaXplICAgICAgICA9IHNpemU7CiB9CiAKLXZvaWQgR2V0UG9pbnRTaXplKEdMRVMx
U3RhdGUgKnN0YXRlLCBHTGZsb2F0ICpzaXplT3V0KQordm9pZCBHZXRQb2ludFNpemUoY29uc3Qg
R0xFUzFTdGF0ZSAqc3RhdGUsIEdMZmxvYXQgKnNpemVPdXQpCiB7CiAgICAgY29uc3QgUG9pbnRQ
YXJhbWV0ZXJzICZwYXJhbXMgPSBzdGF0ZS0+cG9pbnRQYXJhbWV0ZXJzKCk7CiAgICAgKnNpemVP
dXQgICAgICAgICAgICAgICAgICAgICAgPSBwYXJhbXMucG9pbnRTaXplOwpAQCAtMzExNSwxOCAr
MzE5OSw2IEBAIGJvb2wgR2V0UXVlcnlQYXJhbWV0ZXJJbmZvKGNvbnN0IFN0YXRlICZnbFN0YXRl
LAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGV4dGVuc2lvbnMucGF0aFJlbmRlcmluZykK
LSAgICB7Ci0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNh
c2UgR0xfUEFUSF9NT0RFTFZJRVdfTUFUUklYX0NIUk9NSVVNOgotICAgICAgICAgICAgY2FzZSBH
TF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNOgotICAgICAgICAgICAgICAgICp0eXBl
ICAgICAgPSBHTF9GTE9BVDsKLSAgICAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTY7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoZXh0
ZW5zaW9ucy5iaW5kR2VuZXJhdGVzUmVzb3VyY2UpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHBu
YW1lKQpAQCAtMzY1NCw2ICszNzI2LDkgQEAgdm9pZCBRdWVyeUNvbmZpZ0F0dHJpYihjb25zdCBD
b25maWcgKmNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSkKICAgICAgICAg
Y2FzZSBFR0xfU1VSRkFDRV9UWVBFOgogICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5zdXJm
YWNlVHlwZTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RF
WFRVUkVfVEFSR0VUX0FOR0xFOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5iaW5kVG9U
ZXh0dXJlVGFyZ2V0OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRUdMX1RSQU5T
UEFSRU5UX1RZUEU6CiAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPnRyYW5zcGFyZW50VHlw
ZTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9xdWVyeXV0aWxzLmgKaW5kZXggNDhhNmQ5ZDYzZWY1ODUwNzEzNGY5N2Q1NTdm
OGRhNmI2NzJmYmRhOS4uYzA3YTY3NzUyNzczMjgwM2Q3MzFkM2YwNWI2MGNiY2U4NmNmZTU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRp
bHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGls
cy5oCkBAIC02Myw2ICs2MywxMCBAQCB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICp0
ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwordm9pZCBRdWVyeVRleFBhcmFtZXRl
cnh2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKTsKIHZvaWQgUXVl
cnlUZXhQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRleHR1cmUgKnRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLApAQCAtMTMwLDYgKzEzNCw4IEBAIHZvaWQgU2V0VGV4UGFyYW1ldGVy
aShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMaW50
IHBhCiB2b2lkIFNldFRleFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRl
eHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CiB2b2lkIFNldFRleFBh
cmFtZXRlcklpdihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwogdm9pZCBTZXRUZXhQYXJhbWV0ZXJJdWl2KENvbnRl
eHQgKmNvbnRleHQsIFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50
ICpwYXJhbXMpOwordm9pZCBTZXRUZXhQYXJhbWV0ZXJ4KENvbnRleHQgKmNvbnRleHQsIFRleHR1
cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSk7Cit2b2lkIFNldFRleFBh
cmFtZXRlcnh2KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsKIAogdm9pZCBTZXRTYW1wbGVyUGFyYW1ldGVyZihD
b250ZXh0ICpjb250ZXh0LCBTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOwogdm9pZCBTZXRTYW1wbGVyUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwgU2Ft
cGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwpAQCAt
MTc3LDYgKzE4MywxMyBAQCB2b2lkIFF1ZXJ5UHJvZ3JhbUludGVyZmFjZWl2KGNvbnN0IFByb2dy
YW0gKnByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworCithbmdsZTo6UmVz
dWx0IFNldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdCAqbWVt
b3J5T2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpOwordm9pZCBRdWVyeU1lbW9yeU9iamVjdFBhcmFtZXRlcml2KGNvbnN0
IE1lbW9yeU9iamVjdCAqbWVtb3J5T2JqZWN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
OworCiAvLyBHTEVTMSBlbXVsYXRpb24KIAogQ2xpZW50VmVydGV4QXJyYXlUeXBlIFBhcmFtVG9W
ZXJ0ZXhBcnJheVR5cGUoR0xlbnVtIHBhcmFtKTsKQEAgLTIzNSw3ICsyNDgsNyBAQCB2b2lkIFNl
dFBvaW50UGFyYW1ldGVyKEdMRVMxU3RhdGUgKnN0YXRlLCBQb2ludFBhcmFtZXRlciBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcAogdm9pZCBHZXRQb2ludFBhcmFtZXRlcihjb25zdCBHTEVTMVN0YXRl
ICpzdGF0ZSwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiAKIHZvaWQg
U2V0UG9pbnRTaXplKEdMRVMxU3RhdGUgKnN0YXRlLCBHTGZsb2F0IHNpemUpOwotdm9pZCBHZXRQ
b2ludFNpemUoR0xFUzFTdGF0ZSAqc3RhdGUsIEdMZmxvYXQgKnNpemVPdXQpOwordm9pZCBHZXRQ
b2ludFNpemUoY29uc3QgR0xFUzFTdGF0ZSAqc3RhdGUsIEdMZmxvYXQgKnNpemVPdXQpOwogCiB1
bnNpZ25lZCBpbnQgR2V0VGV4UGFyYW1ldGVyQ291bnQoR0xlbnVtIHBuYW1lKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRl
eHRJbXBsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Db250ZXh0SW1wbC5jcHAKaW5kZXggMzIwMDRhMWFmMzQzNjg5NTI0MzE3NzlkZmUyNDdkZWU2
OTgzMzVlMi4uYTJmY2UwNzFlNjhjYmQ1YzM5NzY1MDg0NTcyMjU4ODUzMDcwY2ZmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRl
eHRJbXBsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvQ29udGV4dEltcGwuY3BwCkBAIC0xOSw5NiArMTksNiBAQCBDb250ZXh0SW1wbDo6Q29u
dGV4dEltcGwoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgZ2w6OkVycm9yU2V0ICplcnJvclNldCkK
IAogQ29udGV4dEltcGw6On5Db250ZXh0SW1wbCgpIHt9CiAKLXZvaWQgQ29udGV4dEltcGw6OnN0
ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVp
bnQgbWFzaykKLXsKLSAgICBVTlJFQUNIQUJMRSgpOwotfQotCi12b2lkIENvbnRleHRJbXBsOjpz
dGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBH
THVpbnQgbWFzaykKLXsKLSAgICBVTlJFQUNIQUJMRSgpOwotfQotCi12b2lkIENvbnRleHRJbXBs
Ojpjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKQot
ewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0KLXZvaWQgQ29udGV4dEltcGw6OmNvdmVyU3Ryb2tl
UGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBVTlJF
QUNIQUJMRSgpOwotfQotCi12b2lkIENvbnRleHRJbXBsOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsK
LX0KLQotdm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgoY29uc3Qg
Z2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0K
LQotdm9pZCBDb250ZXh0SW1wbDo6Y292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZl
Y3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0g
ICAgVU5SRUFDSEFCTEUoKTsKLX0KLQotdm9pZCBDb250ZXh0SW1wbDo6Y292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBVTlJFQUNIQUJMRSgpOwotfQotCi12b2lk
IENvbnRleHRJbXBsOjpzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8
Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0g
ICAgVU5SRUFDSEFCTEUoKTsKLX0KLQotdm9pZCBDb250ZXh0SW1wbDo6c3RlbmNpbFN0cm9rZVBh
dGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJh
bnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBVTlJFQUNIQUJMRSgpOwot
fQotCi12b2lkIENvbnRleHRJbXBsOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQo
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykKLXsKLSAgICBVTlJFQUNIQUJMRSgpOwotfQotCi12b2lkIENvbnRleHRJbXBsOjpzdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0
aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBV
TlJFQUNIQUJMRSgpOwotfQotCiB2b2lkIENvbnRleHRJbXBsOjppbnZhbGlkYXRlVGV4dHVyZShn
bDo6VGV4dHVyZVR5cGUgdGFyZ2V0KQogewogICAgIFVOUkVBQ0hBQkxFKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dElt
cGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Db250
ZXh0SW1wbC5oCmluZGV4IDgxMmZjOWI1ODk1YTliOGYyMjMzM2YyZGYwOTg2YWVkYmI0MmQ0NjQu
LjkzZGYyYjhmYzA5ZWFmNzNmYjgxYWY4N2Y1NWY2NWMyYzZkMWYxMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Db250
ZXh0SW1wbC5oCkBAIC0xMTUsNTIgKzExNSw2IEBAIGNsYXNzIENvbnRleHRJbXBsIDogcHVibGlj
IEdMSW1wbEZhY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QpID0gMDsKIAotICAg
IC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggZHJhd2luZyBtZXRob2RzLgotICAgIHZp
cnR1YWwgdm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBm
aWxsTW9kZSwgR0x1aW50IG1hc2spOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0
aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzayk7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51
bSBjb3Zlck1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBjb3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6
OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotCi0gICAgdmly
dHVhbCB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjb3ZlckZpbGxQYXRoSW5zdGFuY2Vk
KGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7
Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6
dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcyk7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNl
ZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cyk7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
KGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7Ci0KICAgICAvLyBEZXZpY2UgbG9zcwogICAgIHZpcnR1YWwgZ2w6OkdyYXBo
aWNzUmVzZXRTdGF0dXMgZ2V0UmVzZXRTdGF0dXMoKSA9IDA7CiAKQEAgLTE2OSwxMyArMTIzLDE2
IEBAIGNsYXNzIENvbnRleHRJbXBsIDogcHVibGljIEdMSW1wbEZhY3RvcnkKICAgICB2aXJ0dWFs
IHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CiAKICAgICAv
LyBFWFRfZGVidWdfbWFya2VyCi0gICAgdmlydHVhbCB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpICAgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlcigpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDA7CisgICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IGluc2VydEV2
ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpID0gMDsKKyAgICB2
aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBjaGFyICptYXJrZXIpICAgPSAwOworICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCBwb3BHcm91
cE1hcmtlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CiAKICAg
ICAvLyBLSFJfZGVidWcKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaERlYnVnR3JvdXAoR0xlbnVtIHNv
dXJjZSwgR0x1aW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwb3BEZWJ1Z0dyb3VwKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IHB1
c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSA9IDA7Cisg
ICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IHBvcERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQpICA9IDA7CiAKICAgICAvLyBLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzKEdMdWludCBjb3VudCkg
e30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9Gb3JtYXRJRF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvRm9ybWF0SURfYXV0b2dlbi5oCmluZGV4IDc3NjYyM2U5NTFlMTQwNWRh
NGJjOWJkNmQ3OWQ0NGQ5MDQ5YzJiYzIuLmJlNWZhZTIyMDc2NDQyYWExMzBjNTIxNzk3YWM5ZTM2
MWFiZDYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9Gb3JtYXRJRF9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdElEX2F1dG9nZW4uaApAQCAtMSw3ICsxLDcg
QEAKIC8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCiAvLyBHZW5lcmF0ZWQgYnkgZ2Vu
X2FuZ2xlX2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gYW5nbGVfZm9ybWF0X2RhdGEu
anNvbgogLy8KLS8vIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC05Miw2ICs5MiwxMCBAQCBlbnVtIGNsYXNzIEZv
cm1hdElECiAgICAgQkMyX1JHQkFfVU5PUk1fU1JHQl9CTE9DSywKICAgICBCQzNfUkdCQV9VTk9S
TV9CTE9DSywKICAgICBCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NLLAorICAgIEJDNF9SRURfU05P
Uk1fQkxPQ0ssCisgICAgQkM0X1JFRF9VTk9STV9CTE9DSywKKyAgICBCQzVfUkdfU05PUk1fQkxP
Q0ssCisgICAgQkM1X1JHX1VOT1JNX0JMT0NLLAogICAgIEJQVENfUkdCQV9VTk9STV9CTE9DSywK
ICAgICBCUFRDX1JHQl9TSUdORURfRkxPQVRfQkxPQ0ssCiAgICAgQlBUQ19SR0JfVU5TSUdORURf
RkxPQVRfQkxPQ0ssCkBAIC0yMzcsNyArMjQxLDcgQEAgZW51bSBjbGFzcyBGb3JtYXRJRAogICAg
IFgyUjEwRzEwQjEwX1VTQ0FMRURfVkVSVEVYCiB9OwogCi1jb25zdGV4cHIgdWludDMyX3Qga051
bUFOR0xFRm9ybWF0cyA9IDIxODsKK2NvbnN0ZXhwciB1aW50MzJfdCBrTnVtQU5HTEVGb3JtYXRz
ID0gMjIyOwogCiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF90YWJsZV9hdXRvZ2Vu
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3Jt
YXRfdGFibGVfYXV0b2dlbi5jcHAKaW5kZXggNTAyOWE3YWY2MzFmODk4YjcwYzQ2NDE3MWNlZWY0
Y2E3NWQ0NDJjNS4uZWFlMGYwMWQ0MGM2MWU1Njk3YzcwZTUzMzkwODBhZjk0YTdmODhkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zv
cm1hdF90YWJsZV9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCkBAIC0xLDcgKzEsNyBA
QAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRlZCBieSBnZW5f
YW5nbGVfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSBhbmdsZV9mb3JtYXRfZGF0YS5q
c29uCiAvLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTk5LDYgKzk5LDEwIEBAIGNvbnN0IEZvcm1hdCBn
Rm9ybWF0SW5mb1RhYmxlW10gPSB7CiAgICAgeyBGb3JtYXRJRDo6QkMyX1JHQkFfVU5PUk1fU1JH
Ql9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQsIEdMX0NPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMs
IG51bGxwdHIsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDE2LCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpLCB0cnVlLCBmYWxz
ZSwgZmFsc2UsIGdsOjpWZXJ0ZXhBdHRyaWJUeXBlOjpJbnZhbGlkRW51bSB9LAogICAgIHsgRm9y
bWF0SUQ6OkJDM19SR0JBX1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0FOR0xFLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBudWxscHRyLCBOb0Nv
cHlGdW5jdGlvbnMsIG51bGxwdHIsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDE2LCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgp
LCB0cnVlLCBmYWxzZSwgZmFsc2UsIGdsOjpWZXJ0ZXhBdHRyaWJUeXBlOjpJbnZhbGlkRW51bSB9
LAogICAgIHsgRm9ybWF0SUQ6OkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhULCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQ1X0VYVCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNiwgc3RkOjpudW1l
cmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBnbDo6VmVydGV4
QXR0cmliVHlwZTo6SW52YWxpZEVudW0gfSwKKyAgICB7IEZvcm1hdElEOjpCQzRfUkVEX1NOT1JN
X0JMT0NLLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhULCBHTF9DT01QUkVTU0VE
X1NJR05FRF9SRURfUkdUQzFfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIs
IG51bGxwdHIsIEdMX1NJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4LCBz
dGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGds
OjpWZXJ0ZXhBdHRyaWJUeXBlOjpJbnZhbGlkRW51bSB9LAorICAgIHsgRm9ybWF0SUQ6OkJDNF9S
RURfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwgR0xfQ09NUFJFU1NF
RF9SRURfUkdUQzFfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIG51bGxw
dHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgsIHN0ZDo6
bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCksIHRydWUsIGZhbHNlLCBmYWxzZSwgZ2w6OlZl
cnRleEF0dHJpYlR5cGU6OkludmFsaWRFbnVtIH0sCisgICAgeyBGb3JtYXRJRDo6QkM1X1JHX1NO
T1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhULCBHTF9D
T01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhULCBudWxscHRyLCBOb0NvcHlGdW5j
dGlvbnMsIG51bGxwdHIsIG51bGxwdHIsIEdMX1NJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAxNiwgc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSwgdHJ1ZSwg
ZmFsc2UsIGZhbHNlLCBnbDo6VmVydGV4QXR0cmliVHlwZTo6SW52YWxpZEVudW0gfSwKKyAgICB7
IEZvcm1hdElEOjpCQzVfUkdfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JH
VEMyX0VYVCwgR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhULCBudWxscHRyLCBOb0Nv
cHlGdW5jdGlvbnMsIG51bGxwdHIsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDE2LCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgp
LCB0cnVlLCBmYWxzZSwgZmFsc2UsIGdsOjpWZXJ0ZXhBdHRyaWJUeXBlOjpJbnZhbGlkRW51bSB9
LAogICAgIHsgRm9ybWF0SUQ6OkJQVENfUkdCQV9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9S
R0JBX0JQVENfVU5PUk1fRVhULCBHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQsIG51
bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1
aW50Pjo6bWF4KCksIHRydWUsIGZhbHNlLCBmYWxzZSwgZ2w6OlZlcnRleEF0dHJpYlR5cGU6Oklu
dmFsaWRFbnVtIH0sCiAgICAgeyBGb3JtYXRJRDo6QlBUQ19SR0JfU0lHTkVEX0ZMT0FUX0JMT0NL
LCBHTF9DT01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVF9FWFQsIEdMX0NPTVBSRVNTRURf
UkdCX0JQVENfU0lHTkVEX0ZMT0FUX0VYVCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxs
cHRyLCBudWxscHRyLCBHTF9GTE9BVCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCksIHRydWUsIGZhbHNlLCBmYWxzZSwgZ2w6OlZlcnRl
eEF0dHJpYlR5cGU6OkZsb2F0IH0sCiAgICAgeyBGb3JtYXRJRDo6QlBUQ19SR0JfVU5TSUdORURf
RkxPQVRfQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCX0JQVENfVU5TSUdORURfRkxPQVRfRVhULCBH
TF9DT01QUkVTU0VEX1JHQl9CUFRDX1VOU0lHTkVEX0ZMT0FUX0VYVCwgbnVsbHB0ciwgTm9Db3B5
RnVuY3Rpb25zLCBudWxscHRyLCBudWxscHRyLCBHTF9GTE9BVCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMTYsIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCksIHRydWUsIGZhbHNlLCBm
YWxzZSwgZ2w6OlZlcnRleEF0dHJpYlR5cGU6OkZsb2F0IH0sCkBAIC0yODQsNiArMjg4LDEwIEBA
IEZvcm1hdElEIEZvcm1hdDo6SW50ZXJuYWxGb3JtYXRUb0lEKEdMZW51bSBpbnRlcm5hbEZvcm1h
dCkKICAgICAgICAgICAgIHJldHVybiBGb3JtYXRJRDo6QjhHOFI4WDhfVU5PUk07CiAgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SMTFfRUFDOgogICAgICAgICAgICAgcmV0dXJuIEZvcm1hdElE
OjpFQUNfUjExX1VOT1JNX0JMT0NLOworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXRJRDo6QkM1X1JHX1VOT1JN
X0JMT0NLOworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAgICAg
ICAgICAgIHJldHVybiBGb3JtYXRJRDo6QkM0X1JFRF9VTk9STV9CTE9DSzsKICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHMTFfRUFDOgogICAgICAgICAgICAgcmV0dXJuIEZvcm1hdElEOjpF
QUNfUjExRzExX1VOT1JNX0JMT0NLOwogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9F
VEMyOgpAQCAtMzY0LDYgKzM3MiwxMCBAQCBGb3JtYXRJRCBGb3JtYXQ6OkludGVybmFsRm9ybWF0
VG9JRChHTGVudW0gaW50ZXJuYWxGb3JtYXQpCiAgICAgICAgICAgICByZXR1cm4gRm9ybWF0SUQ6
OkJDMV9SR0JfVU5PUk1fQkxPQ0s7CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURf
UjExX0VBQzoKICAgICAgICAgICAgIHJldHVybiBGb3JtYXRJRDo6RUFDX1IxMV9TTk9STV9CTE9D
SzsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JFRU5fUkdUQzJfRVhU
OgorICAgICAgICAgICAgcmV0dXJuIEZvcm1hdElEOjpCQzVfUkdfU05PUk1fQkxPQ0s7CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgICAg
IHJldHVybiBGb3JtYXRJRDo6QkM0X1JFRF9TTk9STV9CTE9DSzsKICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKICAgICAgICAgICAgIHJldHVybiBGb3JtYXRJRDo6
RUFDX1IxMUcxMV9TTk9STV9CTE9DSzsKICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oCmluZGV4IDlh
MDU0ZjZhNGJmMTUyMmJmNzdmNmIwMWIwZjIyNTE0MDk4NDZkOTYuLjE5OTUxOTdiMDZiOTE0YzBh
NjJmYjVhZGFiY2RiNzUzMjVjMGQ1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaApAQCAt
OTIsOCArOTIsNiBAQCBjbGFzcyBHTEltcGxGYWN0b3J5IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAg
ICAgLy8gUHJvZ3JhbSBQaXBlbGluZSBvYmplY3QgY3JlYXRpb24KICAgICB2aXJ0dWFsIFByb2dy
YW1QaXBlbGluZUltcGwgKmNyZWF0ZVByb2dyYW1QaXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBp
cGVsaW5lU3RhdGUgJmRhdGEpID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp2ZWN0b3I8UGF0aElt
cGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkgPSAwOwotCiAgICAgLy8gTWVtb3J5IG9i
amVjdCBjcmVhdGlvbgogICAgIHZpcnR1YWwgTWVtb3J5T2JqZWN0SW1wbCAqY3JlYXRlTWVtb3J5
T2JqZWN0KCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvTWVtb3J5T2JqZWN0SW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL01lbW9yeU9iamVjdEltcGwuaAppbmRleCBlZGVj
MTE4NDUzODQ1ZmRhNDU4YmQ5MTcxYzYzODY5NTQyNDExZmI5Li45YmI0MTU0NjA3NDIwYmExMzg0
NmEwYjA5MDg2ZmZiMjkyNzQ4NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvTWVtb3J5T2JqZWN0SW1wbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9NZW1vcnlPYmplY3RJbXBsLmgK
QEAgLTI5LDEwICsyOSwxNiBAQCBjbGFzcyBNZW1vcnlPYmplY3RJbXBsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAKICAgICB2aXJ0dWFsIHZvaWQgb25EZXN0cm95KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgc2V0RGVkaWNhdGVkTWVt
b3J5KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBib29sIGRlZGljYXRlZE1lbW9yeSkgPSAw
OworCiAgICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IGltcG9ydEZkKGdsOjpDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmZCkgPSAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmZCkgICAgICAgICAgICAg
ICAgPSAwOworICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCBpbXBvcnRaaXJjb25IYW5kbGUoZ2w6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpID0gMDsKIH07CiAKIH0g
IC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjA3Y2JjNTc0YzY2Njk3M2IzYjVkMTEwNGI0M2Y2ZjllZTZlNGMyNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAwMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBhdGhJbXBsLmg6IERlZmluZXMgdGhlIFBhdGgg
aW1wbGVtZW50YXRpb24gaW50ZXJmYWNlIGZvcgotLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcg
cGF0aCBvYmplY3RzLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1BBVEhJTVBMX0hfCi0j
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1BBVEhJTVBMX0hfCi0KLSNpbmNsdWRlICJhbmdsZV9n
bC5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
RXJyb3IuaCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLWNsYXNzIFBhdGhJbXBsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QYXRoSW1wbCgpIHt9Ci0KLSAg
ICB2aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgc2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29t
bWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVt
Q29vcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29v
cmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpjb29yZHMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRQYXRoUGFyYW1ldGVyKEdMZW51
bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSkgPSAwOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ4Ci0K
LSNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfUEFUSElNUExfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1J
bXBsLmgKaW5kZXggMmJjMDcwNDAwMTQ0M2I1YjE5ZWEzNjc2NmQwOGQ3YzE2NjhkNTBhOS4uY2Y2
ZWU2NmUxMWRlYWM1MmZhOTgxZmMwMzBmOWU4MjdjOGQwZjMxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1J
bXBsLmgKQEAgLTE0NSwxMyArMTQ1LDYgQEAgY2xhc3MgUHJvZ3JhbUltcGwgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykgY29uc3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwogCi0gICAgLy8gQ0hS
T01JVU1fcGF0aF9yZW5kZXJpbmcKLSAgICAvLyBTZXQgcGFyYW1ldGVycyB0byBjb250cm9sIGZy
YWdtZW50IHNoYWRlciBpbnB1dCB2YXJpYWJsZSBpbnRlcnBvbGF0aW9uCi0gICAgdmlydHVhbCB2
b2lkIHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpjb2VmZnMpID0gMDsKLQogICAgIC8vIEltcGxlbWVudGF0aW9uLXNwZWNpZmljIG1ldGhv
ZCBmb3IgaWdub3JpbmcgdW5yZWZlcmVuY2VkIHVuaWZvcm1zLiBTb21lIGltcGxlbWVudGF0aW9u
cyBtYXkKICAgICAvLyBwZXJmb3JtIG1vcmUgZXh0ZW5zaXZlIGFuYWx5c2lzIGFuZCBpZ25vcmUg
c29tZSBsb2NhdGlvbnMgdGhhdCBBTkdMRSBkb2Vzbid0IGRldGVjdCBhcwogICAgIC8vIHVucmVm
ZXJlbmNlZC4gVGhpcyBtZXRob2QgaXMgbm90IHJlcXVpcmVkIHRvIGJlIG92ZXJyaWRlbiBieSBh
IGJhY2stZW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL1JlbmRlclRhcmdldENhY2hlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0Q2FjaGUuaAppbmRleCA1Mjc0OTYz
MmM4YWQzNjQ0MzEzZGVkODcwNDU1NTNlZDVjNzFlN2FkLi40OWE0YWUxNDdlMjNhOTA5ZDFkYjhh
NGQzYTRmODc3MmI3ZjdiZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0Q2FjaGUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyVGFyZ2V0Q2FjaGUuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBSZW5kZXJUYXJnZXRDYWNoZSBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgIHVzaW5nIFJlbmRlclRhcmdldEFycmF5ID0gZ2w6OkF0dGFjaG1lbnRB
cnJheTxSZW5kZXJUYXJnZXRUICo+OwogCiAgICAgY29uc3QgUmVuZGVyVGFyZ2V0QXJyYXkgJmdl
dENvbG9ycygpIGNvbnN0OwotICAgIFJlbmRlclRhcmdldFQgKmdldERlcHRoU3RlbmNpbCgpIGNv
bnN0OworICAgIFJlbmRlclRhcmdldFQgKmdldERlcHRoU3RlbmNpbChib29sIGFsbG93RmVlZGJh
Y2tMb29wKSBjb25zdDsKIAogICAgIFJlbmRlclRhcmdldFQgKmdldENvbG9yRHJhdyhjb25zdCBn
bDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsIHNpemVfdCBjb2xvckluZGV4KSBjb25zdDsKICAg
ICBSZW5kZXJUYXJnZXRUICpnZXRDb2xvclJlYWQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUg
JnN0YXRlKSBjb25zdDsKQEAgLTUzLDIwICs1MywxOCBAQCBjbGFzcyBSZW5kZXJUYXJnZXRDYWNo
ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGFy
Z2V0VCAqKmNhY2hlZFJlbmRlclRhcmdldCk7CiAKLSAgICBSZW5kZXJUYXJnZXRUICptUmVhZFJl
bmRlclRhcmdldDsKLSAgICBnbDo6QXR0YWNobWVudEFycmF5PFJlbmRlclRhcmdldFQgKj4gbUNv
bG9yUmVuZGVyVGFyZ2V0czsKKyAgICBSZW5kZXJUYXJnZXRUICptUmVhZFJlbmRlclRhcmdldCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgZ2w6OkF0dGFjaG1lbnRBcnJh
eTxSZW5kZXJUYXJnZXRUICo+IG1Db2xvclJlbmRlclRhcmdldHMgPSB7fTsKICAgICAvLyBXZSBv
bmx5IHN1cHBvcnQgYSBzaW5nbGUgRGVwdGgvU3RlbmNpbCBSZW5kZXJUYXJnZXQgY3VycmVudGx5
LgotICAgIFJlbmRlclRhcmdldFQgKm1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQ7CisgICAgYm9v
bCBtRGVwdGhTdGVuY2lsRmVlZGJhY2tMb29wICAgICAgICAgICA9IGZhbHNlOworICAgIFJlbmRl
clRhcmdldFQgKm1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBudWxscHRyOwogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFJlbmRlclRhcmdldFQ+Ci1SZW5kZXJUYXJnZXRDYWNoZTxSZW5kZXJU
YXJnZXRUPjo6UmVuZGVyVGFyZ2V0Q2FjaGUoKQotICAgIDogbVJlYWRSZW5kZXJUYXJnZXR7bnVs
bHB0cn0sIG1Db2xvclJlbmRlclRhcmdldHN7e251bGxwdHJ9fSwgbURlcHRoU3RlbmNpbFJlbmRl
clRhcmdldChudWxscHRyKQote30KK1JlbmRlclRhcmdldENhY2hlPFJlbmRlclRhcmdldFQ+OjpS
ZW5kZXJUYXJnZXRDYWNoZSgpID0gZGVmYXVsdDsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFJlbmRl
clRhcmdldFQ+Ci1SZW5kZXJUYXJnZXRDYWNoZTxSZW5kZXJUYXJnZXRUPjo6flJlbmRlclRhcmdl
dENhY2hlKCkKLXt9CitSZW5kZXJUYXJnZXRDYWNoZTxSZW5kZXJUYXJnZXRUPjo6flJlbmRlclRh
cmdldENhY2hlKCkgPSBkZWZhdWx0OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVuZGVyVGFyZ2V0
VD4KIGFuZ2xlOjpSZXN1bHQgUmVuZGVyVGFyZ2V0Q2FjaGU8UmVuZGVyVGFyZ2V0VD46OnVwZGF0
ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKQEAgLTExNCw5ICsxMTIsOSBAQCBjb25zdCBn
bDo6QXR0YWNobWVudEFycmF5PFJlbmRlclRhcmdldFQgKj4gJlJlbmRlclRhcmdldENhY2hlPFJl
bmRlclRhcmdldFQ+OjpnZQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVuZGVyVGFyZ2V0VD4K
LVJlbmRlclRhcmdldFQgKlJlbmRlclRhcmdldENhY2hlPFJlbmRlclRhcmdldFQ+OjpnZXREZXB0
aFN0ZW5jaWwoKSBjb25zdAorUmVuZGVyVGFyZ2V0VCAqUmVuZGVyVGFyZ2V0Q2FjaGU8UmVuZGVy
VGFyZ2V0VD46OmdldERlcHRoU3RlbmNpbChib29sIGFsbG93RmVlZGJhY2tMb29wKSBjb25zdAog
ewotICAgIHJldHVybiBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0OworICAgIHJldHVybiAoYWxs
b3dGZWVkYmFja0xvb3AgfHwgIW1EZXB0aFN0ZW5jaWxGZWVkYmFja0xvb3ApID8gbURlcHRoU3Rl
bmNpbFJlbmRlclRhcmdldCA6IG51bGxwdHI7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBSZW5k
ZXJUYXJnZXRUPgpAQCAtMTQ5LDYgKzE0Nyw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyVGFyZ2V0
Q2FjaGU8UmVuZGVyVGFyZ2V0VD46OnVwZGF0ZURlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgKICAg
ICBjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJT
dGF0ZSAmc3RhdGUpCiB7CisgICAgbURlcHRoU3RlbmNpbEZlZWRiYWNrTG9vcCA9IHN0YXRlLmhh
c0RlcHRoU3RlbmNpbEZlZWRiYWNrTG9vcCgpOwogICAgIHJldHVybiB1cGRhdGVDYWNoZWRSZW5k
ZXJUYXJnZXQoY29udGV4dCwgc3RhdGUuZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURlcHRoU3RlbmNpbFJlbmRlclRh
cmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvU2VtYXBob3JlSW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1NlbWFwaG9yZUltcGwuaAppbmRleCAwNTllYTE1N2I3NTBiN2Ez
ZTg2YmFmOTdiOTA0YzA2NGZhN2Y1OTBlLi41YmVlYmEwZDBhNTY0ODBlN2M3Y2Y2MTZlOGYyYzFk
ZDdkMzhlMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvU2VtYXBob3JlSW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9TZW1hcGhvcmVJbXBsLmgKQEAgLTMyLDYgKzMyLDEwIEBA
IGNsYXNzIFNlbWFwaG9yZUltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIHZpcnR1YWwg
YW5nbGU6OlJlc3VsdCBpbXBvcnRGZChnbDo6Q29udGV4dCAqY29udGV4dCwgZ2w6OkhhbmRsZVR5
cGUgaGFuZGxlVHlwZSwgR0xpbnQgZmQpID0gMDsKIAorICAgIHZpcnR1YWwgYW5nbGU6OlJlc3Vs
dCBpbXBvcnRaaXJjb25IYW5kbGUoZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhh
bmRsZSkgPSAwOworCiAgICAgdmlydHVhbCBhbmdsZTo6UmVzdWx0IHdhaXQoZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJ1ZmZl
ckJhcnJpZXJWZWN0b3IgJmJ1ZmZlckJhcnJpZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlQmFycmllclZlY3RvciAmdGV4dHVyZUJhcnJpZXJzKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvYW5nbGVfZm9ybWF0X2RhdGEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfZGF0YS5qc29uCmluZGV4IDQxNDkyNzcx
Yjc0MGYzMWIyNTU1YjdiMjY2NDE3ZjIzOGMzMGFkYjguLjcxNjdhMmFkMjUzMTA5ZDY4YTBjM2Rm
Mzg4YTIzNjQyYTFkNDU3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfZGF0YS5qc29uCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfZGF0YS5q
c29uCkBAIC0yMDEsNiArMjAxLDE4IEBACiAgICJCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NLIjog
ewogICAgICJibG9ja1BpeGVsQnl0ZXMiOiAiMTYiCiAgIH0sCisgICJCQzRfUkVEX1VOT1JNX0JM
T0NLIjogeworICAgICJibG9ja1BpeGVsQnl0ZXMiOiAiOCIKKyAgfSwKKyAgIkJDNF9SRURfU05P
Uk1fQkxPQ0siOiB7CisgICAgImJsb2NrUGl4ZWxCeXRlcyI6ICI4IgorICB9LAorICAiQkM1X1JH
X1VOT1JNX0JMT0NLIjogeworICAgICJibG9ja1BpeGVsQnl0ZXMiOiAiMTYiCisgIH0sCisgICJC
QzVfUkdfU05PUk1fQkxPQ0siOiB7CisgICAgImJsb2NrUGl4ZWxCeXRlcyI6ICIxNiIKKyAgfSwK
ICAgIkJQVENfU1JHQl9BTFBIQV9VTk9STV9CTE9DSyI6IHsKICAgICAiYmxvY2tQaXhlbEJ5dGVz
IjogIjE2IgogICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpzb24KaW5kZXgg
OTY4YzU3YTc0OTIwMTg0ZTMzMDRlZDkxNjkzYjlhYTljZTI1YmRiZi4uMzE4YmEzODc1NjJkNTZh
Mzc0NTRlOGUzYmFiNGJhNGE2YzQ4OWM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbgorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0
X21hcC5qc29uCkBAIC03NCw2ICs3NCwxMCBAQAogICBbICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQzX0VYVCIsICJCQzJfUkdCQV9VTk9STV9TUkdCX0JMT0NLIiBdLAogICBbICJH
TF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCIsICJCQzNfUkdCQV9VTk9STV9T
UkdCX0JMT0NLIiBdLAogICBbICJHTF9DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCIsICJC
QzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBSRVNTRURfUkVEX1JHVEMx
X0VYVCIsICJCQzRfUkVEX1VOT1JNX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NJR05F
RF9SRURfUkdUQzFfRVhUIiwgIkJDNF9SRURfU05PUk1fQkxPQ0siIF0sCisgIFsgIkdMX0NPTVBS
RVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCIsICJCQzVfUkdfVU5PUk1fQkxPQ0siIF0sCisgIFsg
IkdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQiLCAiQkM1X1JHX1NOT1JN
X0JMT0NLIiBdLAogICBbICJHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFQiLCAiQlBU
Q19SR0JBX1VOT1JNX0JMT0NLIiBdLAogICBbICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfQlBU
Q19VTk9STV9FWFQiLCAiQlBUQ19TUkdCX0FMUEhBX1VOT1JNX0JMT0NLIiBdLAogICBbICJHTF9D
T01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVF9FWFQiLCAiQlBUQ19SR0JfU0lHTkVEX0ZM
T0FUX0JMT0NLIiBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNwcAppbmRleCAyN2I0
NGNlMzRiOGM1NzkxNmYwYmQ5ODJmNzM5MzlhNTAyMGQ4MWE3Li42NjgyMjcyYjQ0M2M1ZTRiZTYy
NDJiNGU0NGMxOWY2MzYyNGU0YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNw
cApAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgRHluYW1pY0hMU0w6OmdlbmVyYXRlVmFyeWluZ0xp
bmtITFNMKGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKICAgICBmb3IgKEdM
dWludCByZWdpc3RlckluZGV4ID0gMHU7IHJlZ2lzdGVySW5kZXggPCByZWdpc3RlckluZm9zLnNp
emUoKTsgKytyZWdpc3RlckluZGV4KQogICAgIHsKICAgICAgICAgY29uc3QgUGFja2VkVmFyeWlu
Z1JlZ2lzdGVyICZyZWdpc3RlckluZm8gPSByZWdpc3RlckluZm9zW3JlZ2lzdGVySW5kZXhdOwot
ICAgICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nICAgICAgICAgICAgICAgICAgICAgICA9ICpyZWdp
c3RlckluZm8ucGFja2VkVmFyeWluZy0+dmFyeWluZzsKKyAgICAgICAgY29uc3QgYXV0byAmdmFy
eWluZyAgICAgICAgICAgICAgICAgICAgICAgPSByZWdpc3RlckluZm8ucGFja2VkVmFyeWluZy0+
dmFyeWluZygpOwogICAgICAgICBBU1NFUlQoIXZhcnlpbmcuaXNTdHJ1Y3QoKSk7CiAKICAgICAg
ICAgLy8gVE9ETzogQWRkIGNoZWNrcyB0byBlbnN1cmUgRDNEIGludGVycG9sYXRpb24gbW9kaWZp
ZXJzIGRvbid0IHJlc3VsdCBpbiB0b28gbWFueQpAQCAtNTk5LDE0ICs1OTksMTUgQEAgdm9pZCBE
eW5hbWljSExTTDo6Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6Q2FwcyAmY2FwcywK
ICAgICB7CiAgICAgICAgIGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmcmVnaXN0ZXJJbmZv
ID0gcmVnaXN0ZXJJbmZvc1tyZWdpc3RlckluZGV4XTsKICAgICAgICAgY29uc3QgYXV0byAmcGFj
a2VkVmFyeWluZyAgICAgICAgICAgICAgICAgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmc7
Ci0gICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgICAgICAgICAgICAgICAgICAgICAgID0gKnBh
Y2tlZFZhcnlpbmcudmFyeWluZzsKKyAgICAgICAgY29uc3QgYXV0byAmdmFyeWluZyAgICAgICAg
ICAgICAgICAgICAgICAgPSAqcGFja2VkVmFyeWluZy5mcm9udFZhcnlpbmcudmFyeWluZzsKICAg
ICAgICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkpOwogCiAgICAgICAgIHZlcnRleEdlbmVy
YXRlT3V0cHV0IDw8ICIgICAgb3V0cHV0LnYiIDw8IHJlZ2lzdGVySW5kZXggPDwgIiA9ICI7CiAK
ICAgICAgICAgaWYgKHBhY2tlZFZhcnlpbmcuaXNTdHJ1Y3RGaWVsZCgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICB2ZXJ0ZXhHZW5lcmF0ZU91dHB1dCA8PCBEZWNvcmF0ZVZhcmlhYmxlKHBhY2tl
ZFZhcnlpbmcucGFyZW50U3RydWN0TmFtZSkgPDwgIi4iOworICAgICAgICAgICAgdmVydGV4R2Vu
ZXJhdGVPdXRwdXQgPDwgRGVjb3JhdGVWYXJpYWJsZShwYWNrZWRWYXJ5aW5nLmZyb250VmFyeWlu
Zy5wYXJlbnRTdHJ1Y3ROYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
Ii4iOwogICAgICAgICB9CiAKICAgICAgICAgdmVydGV4R2VuZXJhdGVPdXRwdXQgPDwgRGVjb3Jh
dGVWYXJpYWJsZSh2YXJ5aW5nLm5hbWUpOwpAQCAtNzk4LDE5ICs3OTksMjggQEAgdm9pZCBEeW5h
bWljSExTTDo6Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6Q2FwcyAmY2FwcywKICAg
ICB7CiAgICAgICAgIGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmcmVnaXN0ZXJJbmZvID0g
cmVnaXN0ZXJJbmZvc1tyZWdpc3RlckluZGV4XTsKICAgICAgICAgY29uc3QgYXV0byAmcGFja2Vk
VmFyeWluZyAgICAgICAgICAgICAgICAgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmc7Ci0g
ICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgICAgICAgICAgICAgICAgICAgICAgID0gKnBhY2tl
ZFZhcnlpbmcudmFyeWluZzsKKworICAgICAgICAvLyBEb24ndCByZWZlcmVuY2UgVlMtb25seSB0
cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgaW4gdGhlIFBTLgorICAgICAgICBpZiAocGFja2Vk
VmFyeWluZy52ZXJ0ZXhPbmx5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgY29uc3QgYXV0byAmdmFyeWluZyA9ICpwYWNrZWRWYXJ5aW5n
LmJhY2tWYXJ5aW5nLnZhcnlpbmc7CiAgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc0J1aWx0SW4o
KSAmJiAhdmFyeWluZy5pc1N0cnVjdCgpKTsKIAotICAgICAgICAvLyBEb24ndCByZWZlcmVuY2Ug
VlMtb25seSB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgaW4gdGhlIFBTLiBOb3RlIHRoYXQg
d2UncmUgcmVseWluZyBvbgotICAgICAgICAvLyB0aGF0IHRoZSBhY3RpdmUgZmxhZyBpcyBzZXQg
YWNjb3JkaW5nIHRvIHVzYWdlIGluIHRoZSBmcmFnbWVudCBzaGFkZXIuCi0gICAgICAgIGlmIChw
YWNrZWRWYXJ5aW5nLnZlcnRleE9ubHkoKSB8fCAhdmFyeWluZy5hY3RpdmUpCisgICAgICAgIC8v
IE5vdGUgdGhhdCB3ZSdyZSByZWx5aW5nIG9uIHRoYXQgdGhlIGFjdGl2ZSBmbGFnIGlzIHNldCBh
Y2NvcmRpbmcgdG8gdXNhZ2UgaW4gdGhlIGZyYWdtZW50CisgICAgICAgIC8vIHNoYWRlci4KKyAg
ICAgICAgaWYgKCF2YXJ5aW5nLmFjdGl2ZSkKKyAgICAgICAgewogICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KIAogICAgICAgICBwaXhlbFByb2xvZ3VlIDw8ICIgICAgIjsKIAogICAg
ICAgICBpZiAocGFja2VkVmFyeWluZy5pc1N0cnVjdEZpZWxkKCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHBpeGVsUHJvbG9ndWUgPDwgRGVjb3JhdGVWYXJpYWJsZShwYWNrZWRWYXJ5aW5nLnBh
cmVudFN0cnVjdE5hbWUpIDw8ICIuIjsKKyAgICAgICAgICAgIHBpeGVsUHJvbG9ndWUgPDwgRGVj
b3JhdGVWYXJpYWJsZShwYWNrZWRWYXJ5aW5nLmJhY2tWYXJ5aW5nLnBhcmVudFN0cnVjdE5hbWUp
IDw8ICIuIjsKICAgICAgICAgfQogCiAgICAgICAgIHBpeGVsUHJvbG9ndWUgPDwgRGVjb3JhdGVW
YXJpYWJsZSh2YXJ5aW5nLm5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNE
LmNwcAppbmRleCBmNWE5MDMyNTYxZjMwNmNkODQxY2RlZmQwMTMzMTMyNTNkNmJhOGRiLi5iNzgy
ZmE3YzdmZjI3ODY5ZjJlNWUyMGQ0MjIzOWU5OWJiZjU4NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNE
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0ZyYW1lYnVmZmVyRDNELmNwcApAQCAtMzQsMTggKzM0LDEwIEBAIENsZWFyUGFyYW1ldGVy
cyBHZXRDbGVhclBhcmFtZXRlcnMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xiaXRmaWVsZCBt
YXNrKQogICAgIENsZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtczsKICAgICBtZW1zZXQoJmNsZWFy
UGFyYW1zLCAwLCBzaXplb2YoQ2xlYXJQYXJhbWV0ZXJzKSk7CiAKLSAgICBjb25zdCBhdXRvICZi
bGVuZFN0YXRlID0gc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpOworICAgIGNvbnN0IGF1dG8gJmJsZW5k
U3RhdGVBcnJheSA9IHN0YXRlLmdldEJsZW5kU3RhdGVBcnJheSgpOwogCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoY2xlYXJQYXJhbXMuY2xlYXJDb2xvcik7IGkr
KykKLSAgICB7Ci0gICAgICAgIGNsZWFyUGFyYW1zLmNsZWFyQ29sb3JbaV0gPSBmYWxzZTsKLSAg
ICB9CiAgICAgY2xlYXJQYXJhbXMuY29sb3JGICAgICAgICAgICA9IHN0YXRlLmdldENvbG9yQ2xl
YXJWYWx1ZSgpOwogICAgIGNsZWFyUGFyYW1zLmNvbG9yVHlwZSAgICAgICAgPSBHTF9GTE9BVDsK
LSAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQgICAgID0gYmxlbmRTdGF0ZS5jb2xvck1hc2tS
ZWQ7Ci0gICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4gICA9IGJsZW5kU3RhdGUuY29sb3JN
YXNrR3JlZW47Ci0gICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSAgICA9IGJsZW5kU3RhdGUu
Y29sb3JNYXNrQmx1ZTsKLSAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYSAgID0gYmxlbmRT
dGF0ZS5jb2xvck1hc2tBbHBoYTsKICAgICBjbGVhclBhcmFtcy5jbGVhckRlcHRoICAgICAgID0g
ZmFsc2U7CiAgICAgY2xlYXJQYXJhbXMuZGVwdGhWYWx1ZSAgICAgICA9IHN0YXRlLmdldERlcHRo
Q2xlYXJWYWx1ZSgpOwogICAgIGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbCAgICAgPSBmYWxzZTsK
QEAgLTU1LDE1ICs0NywxNiBAQCBDbGVhclBhcmFtZXRlcnMgR2V0Q2xlYXJQYXJhbWV0ZXJzKGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMYml0ZmllbGQgbWFzaykKICAgICBjbGVhclBhcmFtcy5z
Y2lzc29yICAgICAgICAgID0gc3RhdGUuZ2V0U2Npc3NvcigpOwogCiAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IHN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigp
OwotICAgIGlmIChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkKKyAgICBjb25zdCBib29sIGNs
ZWFyQ29sb3IgPQorICAgICAgICAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpICYmIGZyYW1l
YnVmZmVyT2JqZWN0LT5oYXNFbmFibGVkRHJhd0J1ZmZlcigpOworICAgIEFTU0VSVChibGVuZFN0
YXRlQXJyYXkuc2l6ZSgpID09IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kU3RhdGVBcnJheS5zaXplKCk7IGkrKykK
ICAgICB7Ci0gICAgICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdC0+aGFzRW5hYmxlZERyYXdCdWZm
ZXIoKSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBBcnJheVNpemUoY2xlYXJQYXJhbXMuY2xlYXJDb2xvcik7IGkrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jbGVhckNvbG9yW2ldID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBjbGVhclBhcmFtcy5jbGVhckNvbG9yW2ldICAg
ICA9IGNsZWFyQ29sb3I7CisgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZFtpXSAgID0g
YmxlbmRTdGF0ZUFycmF5W2ldLmNvbG9yTWFza1JlZDsKKyAgICAgICAgY2xlYXJQYXJhbXMuY29s
b3JNYXNrR3JlZW5baV0gPSBibGVuZFN0YXRlQXJyYXlbaV0uY29sb3JNYXNrR3JlZW47CisgICAg
ICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWVbaV0gID0gYmxlbmRTdGF0ZUFycmF5W2ldLmNv
bG9yTWFza0JsdWU7CisgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhW2ldID0gYmxl
bmRTdGF0ZUFycmF5W2ldLmNvbG9yTWFza0FscGhhOwogICAgIH0KIAogICAgIGlmIChtYXNrICYg
R0xfREVQVEhfQlVGRkVSX0JJVCkKQEAgLTExNCw3ICsxMDcsNyBAQCBhbmdsZTo6UmVzdWx0IEZy
YW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcmZ2KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAog
CiAgICAgaWYgKGJ1ZmZlciA9PSBHTF9DT0xPUikKICAgICB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgQXJyYXlTaXplKGNsZWFyUGFyYW1zLmNsZWFyQ29sb3IpOyBpKysp
CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY2xlYXJQYXJhbXMuY2xlYXJD
b2xvci5zaXplKCk7IGkrKykKICAgICAgICAgewogICAgICAgICAgICAgY2xlYXJQYXJhbXMuY2xl
YXJDb2xvcltpXSA9IChkcmF3YnVmZmVyID09IHN0YXRpY19jYXN0PGludD4oaSkpOwogICAgICAg
ICB9CkBAIC0xMzgsNyArMTMxLDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlckQzRDo6Y2xl
YXJCdWZmZXJ1aXYoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiB7CiAgICAgLy8gZ2xDbGVh
ckJ1ZmZlcnVpdiBjYW4gb25seSBiZSBjYWxsZWQgdG8gY2xlYXIgYSBjb2xvciBidWZmZXIKICAg
ICBDbGVhclBhcmFtZXRlcnMgY2xlYXJQYXJhbXMgPSBHZXRDbGVhclBhcmFtZXRlcnMoY29udGV4
dC0+Z2V0U3RhdGUoKSwgMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJh
eVNpemUoY2xlYXJQYXJhbXMuY2xlYXJDb2xvcik7IGkrKykKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IGNsZWFyUGFyYW1zLmNsZWFyQ29sb3Iuc2l6ZSgpOyBpKyspCiAgICAgewog
ICAgICAgICBjbGVhclBhcmFtcy5jbGVhckNvbG9yW2ldID0gKGRyYXdidWZmZXIgPT0gc3RhdGlj
X2Nhc3Q8aW50PihpKSk7CiAgICAgfQpAQCAtMTU4LDcgKzE1MSw3IEBAIGFuZ2xlOjpSZXN1bHQg
RnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CiAKICAgICBpZiAoYnVmZmVyID09IEdMX0NPTE9SKQogICAgIHsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoY2xlYXJQYXJhbXMuY2xlYXJDb2xvcik7IGkr
KykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjbGVhclBhcmFtcy5jbGVh
ckNvbG9yLnNpemUoKTsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAgICBjbGVhclBhcmFtcy5j
bGVhckNvbG9yW2ldID0gKGRyYXdidWZmZXIgPT0gc3RhdGljX2Nhc3Q8aW50PihpKSk7CiAgICAg
ICAgIH0KQEAgLTM1NSw2ICszNDgsNyBAQCBjb25zdCBnbDo6QXR0YWNobWVudExpc3QgJkZyYW1l
YnVmZmVyRDNEOjpnZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKGNvbnN0IGdsOgogCiAgICAg
Ly8gRG9lcyBub3QgYWN0dWFsbHkgZnJlZSBtZW1vcnkKICAgICBnbDo6QXR0YWNobWVudExpc3Qg
Y29sb3JBdHRhY2htZW50c0ZvclJlbmRlcjsKKyAgICBtQ29sb3JBdHRhY2htZW50c0ZvclJlbmRl
ck1hc2sucmVzZXQoKTsKIAogICAgIGNvbnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudHMgPSBtU3Rh
dGUuZ2V0Q29sb3JBdHRhY2htZW50cygpOwogICAgIGNvbnN0IGF1dG8gJmRyYXdCdWZmZXJTdGF0
ZXMgPSBtU3RhdGUuZ2V0RHJhd0J1ZmZlclN0YXRlcygpOwpAQCAtMzcxLDEwICszNjUsMTIgQEAg
Y29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZGcmFtZWJ1ZmZlckQzRDo6Z2V0Q29sb3JBdHRhY2ht
ZW50c0ZvclJlbmRlcihjb25zdCBnbDoKICAgICAgICAgICAgIEFTU0VSVChkcmF3QnVmZmVyU3Rh
dGUgPT0gR0xfQkFDSyB8fAogICAgICAgICAgICAgICAgICAgIGRyYXdCdWZmZXJTdGF0ZSA9PSAo
R0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICsgYXR0YWNobWVudEluZGV4KSk7CiAgICAgICAgICAg
ICBjb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyLnB1c2hfYmFjaygmY29sb3JBdHRhY2htZW50KTsK
KyAgICAgICAgICAgIG1Db2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyTWFzay5zZXQoYXR0YWNobWVu
dEluZGV4KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghZmVhdHVyZXMubXJ0UGVyZldv
cmthcm91bmQuZW5hYmxlZCkKICAgICAgICAgewogICAgICAgICAgICAgY29sb3JBdHRhY2htZW50
c0ZvclJlbmRlci5wdXNoX2JhY2sobnVsbHB0cik7CisgICAgICAgICAgICBtQ29sb3JBdHRhY2ht
ZW50c0ZvclJlbmRlck1hc2suc2V0KGF0dGFjaG1lbnRJbmRleCk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaAppbmRleCA2ZTAyNGFjNzAwMzFi
ZTA4MWFiNGFlMDFkNDdjNjI3Yjk0OGRiYTNlLi45Zjk4ZWRmNjA3ZDMwMzBkMzMwNWZmZjVhMTlm
NmY5ZDZlZWEyODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oCkBAIC0z
NSwxNSArMzUsMTUgQEAgc3RydWN0IENsZWFyUGFyYW1ldGVycwogICAgIENsZWFyUGFyYW1ldGVy
cygpOwogICAgIENsZWFyUGFyYW1ldGVycyhjb25zdCBDbGVhclBhcmFtZXRlcnMgJm90aGVyKTsK
IAotICAgIGJvb2wgY2xlYXJDb2xvcltnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVS
U107CisgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGNsZWFyQ29sb3I7CiAgICAgZ2w6OkNvbG9yRiBj
b2xvckY7CiAgICAgZ2w6OkNvbG9ySSBjb2xvckk7CiAgICAgZ2w6OkNvbG9yVUkgY29sb3JVSTsK
ICAgICBHTGVudW0gY29sb3JUeXBlOwotICAgIGJvb2wgY29sb3JNYXNrUmVkOwotICAgIGJvb2wg
Y29sb3JNYXNrR3JlZW47Ci0gICAgYm9vbCBjb2xvck1hc2tCbHVlOwotICAgIGJvb2wgY29sb3JN
YXNrQWxwaGE7CisgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGNvbG9yTWFza1JlZDsKKyAgICBnbDo6
RHJhd0J1ZmZlck1hc2sgY29sb3JNYXNrR3JlZW47CisgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGNv
bG9yTWFza0JsdWU7CisgICAgZ2w6OkRyYXdCdWZmZXJNYXNrIGNvbG9yTWFza0FscGhhOwogCiAg
ICAgYm9vbCBjbGVhckRlcHRoOwogICAgIGZsb2F0IGRlcHRoVmFsdWU7CkBAIC0xMDIsNiArMTAy
LDExIEBAIGNsYXNzIEZyYW1lYnVmZmVyRDNEIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogCiAg
ICAgY29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZnZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVy
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAorICAgIGNvbnN0IGdsOjpEcmF3QnVmZmVy
TWFzayBnZXRMYXN0Q29sb3JBdHRhY2htZW50c0ZvclJlbmRlck1hc2soKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1Db2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyTWFzazsKKyAgICB9CisK
ICAgICB2b2lkIGRlc3Ryb3koY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwog
CiAgIHByaXZhdGU6CkBAIC0xMzEsNiArMTM2LDcgQEAgY2xhc3MgRnJhbWVidWZmZXJEM0QgOiBw
dWJsaWMgRnJhbWVidWZmZXJJbXBsCiAgICAgUmVuZGVyZXJEM0QgKm1SZW5kZXJlcjsKICAgICBP
cHRpb25hbDxnbDo6QXR0YWNobWVudExpc3Q+IG1Db2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyOwog
ICAgIGdsOjpEcmF3QnVmZmVyTWFzayBtQ3VycmVudEFjdGl2ZVByb2dyYW1PdXRwdXRzOworICAg
IGdsOjpEcmF3QnVmZmVyTWFzayBtQ29sb3JBdHRhY2htZW50c0ZvclJlbmRlck1hc2s7CiAKICAg
ICBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50IG1EdW1teUF0dGFjaG1lbnQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9P
V05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L09XTkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YTE3MzZlOTA0ZWM2MjE5NWQyNzY0YjZjYzNlYWViODNhODBj
YmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9PV05FUlMKQEAgLTAsMCArMSwyIEBACitnZW9mZmxhbmdAY2hyb21p
dW0ub3JnCitqbWFkaWxsQGNocm9taXVtLm9yZwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5j
cHAKaW5kZXggYjIyOWQ2YmU5ZTEwMzJlNWZjMjFlMWFmMzVmM2Y4MDg4ZDlmNjViNS4uZWUxOGMx
Njc5MjRkMmUwYjVkMjcxMTlhZGNiNzc4MzAyM2RiOTI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1By
b2dyYW1EM0QuY3BwCkBAIC0xMDQ3LDYgKzEwNDcsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPHJ4OjpM
aW5rRXZlbnQ+IFByb2dyYW1EM0Q6OmxvYWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgIG1EM0RTaGFkZXJTdG9yYWdlQmxvY2tzLnB1c2hfYmFjayhzaGFkZXJTdG9yYWdlQmxv
Y2spOwogICAgIH0KIAorICAgIGNvbnN0IHVuc2lnbmVkIGludCBpbWFnZTJEVW5pZm9ybUNvdW50
ID0gc3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKKyAgICBpZiAoc3RyZWFtLT5lcnJv
cigpKQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8PCAiSW52YWxpZCBwcm9ncmFtIGJpbmFyeS4i
OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rRXZlbnREb25lPihhbmdsZTo6
UmVzdWx0OjpJbmNvbXBsZXRlKTsKKyAgICB9CisKKyAgICBBU1NFUlQobUltYWdlMkRVbmlmb3Jt
cy5lbXB0eSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpbWFnZTJEVW5pZm9ybUluZGV4ID0g
MDsgaW1hZ2UyRFVuaWZvcm1JbmRleCA8IGltYWdlMkRVbmlmb3JtQ291bnQ7CisgICAgICAgICAr
K2ltYWdlMkRVbmlmb3JtSW5kZXgpCisgICAgeworICAgICAgICBzaDo6U2hhZGVyVmFyaWFibGUg
aW1hZ2UyRHVuaWZvcm07CisgICAgICAgIGdsOjpMb2FkU2hhZGVyVmFyKHN0cmVhbSwgJmltYWdl
MkR1bmlmb3JtKTsKKyAgICAgICAgbUltYWdlMkRVbmlmb3Jtcy5wdXNoX2JhY2soaW1hZ2UyRHVu
aWZvcm0pOworICAgIH0KKwogICAgIGZvciAodW5zaWduZWQgaW50IGlpID0gMDsgaWkgPCBnbDo6
SU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlM7ICsraWkpCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
c3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKQEAgLTEyOTEsNyArMTMwNyw3IEBAIGFu
Z2xlOjpSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZEJpbmFyeVNoYWRlckV4ZWN1dGFibGVzKGQzZDo6
Q29udGV4dCAqY29udGV4dEQzRCwKICAgICAgICAgICAgIHN0cmVhbS0+cmVhZEludDx1bnNpZ25l
ZCBpbnQ+KCksIGdsOjpUZXh0dXJlVHlwZTo6XzJEKSk7CiAgICAgfQogCi0gICAgaW5pdGlhbGl6
ZVVuaWZvcm1TdG9yYWdlKG1TdGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSk7CisgICAgaW5p
dGlhbGl6ZVVuaWZvcm1TdG9yYWdlKG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmdldExp
bmtlZFNoYWRlclN0YWdlcygpKTsKIAogICAgIGRpcnR5QWxsVW5pZm9ybXMoKTsKIApAQCAtMTM1
OCw2ICsxMzc0LDEyIEBAIHZvaWQgUHJvZ3JhbUQzRDo6c2F2ZShjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwgZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtCiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBzdHJlYW0tPndyaXRlSW50KG1JbWFnZTJEVW5pZm9ybXMuc2l6ZSgpKTsKKyAgICBm
b3IgKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmaW1hZ2UyRFVuaWZvcm0gOiBtSW1hZ2UyRFVu
aWZvcm1zKQorICAgIHsKKyAgICAgICAgZ2w6OldyaXRlU2hhZGVyVmFyKHN0cmVhbSwgaW1hZ2Uy
RFVuaWZvcm0pOworICAgIH0KKwogICAgIGZvciAodW5zaWduZWQgaW50IGlpID0gMDsgaWkgPCBn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlM7ICsraWkpCiAgICAg
ewogICAgICAgICBzdHJlYW0tPndyaXRlSW50KG1Db21wdXRlQXRvbWljQ291bnRlckJ1ZmZlclJl
Z2lzdGVySW5kaWNlc1tpaV0pOwpAQCAtMjMzMSw3ICsyMzUzLDcgQEAgY29uc3Qgc3RkOjp2ZWN0
b3I8RDNEVUJPQ2FjaGVVc2VTQj4gJlByb2dyYW1EM0Q6OmdldFNoYWRlclVuaWZvcm1CdWZmZXJD
YWNoZVVzZVMKIAogdm9pZCBQcm9ncmFtRDNEOjpkaXJ0eUFsbFVuaWZvcm1zKCkKIHsKLSAgICBt
U2hhZGVyVW5pZm9ybXNEaXJ0eSA9IG1TdGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKTsKKyAg
ICBtU2hhZGVyVW5pZm9ybXNEaXJ0eSA9IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmdl
dExpbmtlZFNoYWRlclN0YWdlcygpOwogfQogCiB2b2lkIFByb2dyYW1EM0Q6Om1hcmtVbmlmb3Jt
c0NsZWFuKCkKQEAgLTMwMjYsOCArMzA0OCwxMCBAQCB2b2lkIFByb2dyYW1EM0Q6OnVwZGF0ZUNh
Y2hlZElucHV0TGF5b3V0KFNlcmlhbCBhc3NvY2lhdGVkU2VyaWFsLCBjb25zdCBnbDo6U3RhdAog
ICAgIG1DYWNoZWRJbnB1dExheW91dC5jbGVhcigpOwogCiAgICAgY29uc3QgYXV0byAmdmVydGV4
QXR0cmlidXRlcyA9IHN0YXRlLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZXMo
KTsKKyAgICBjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmF0dHJpYnV0ZXNNYXNrID0KKyAgICAg
ICAgbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCkuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzaygpOwogCi0gICAgZm9yIChzaXplX3QgbG9jYXRpb25JbmRleCA6IG1TdGF0ZS5nZXRBY3Rp
dmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkpCisgICAgZm9yIChzaXplX3QgbG9jYXRpb25JbmRleCA6
IGF0dHJpYnV0ZXNNYXNrKQogICAgIHsKICAgICAgICAgaW50IGQzZFNlbWFudGljID0gbUF0dHJp
YkxvY2F0aW9uVG9EM0RTZW1hbnRpY1tsb2NhdGlvbkluZGV4XTsKIApAQCAtMzE0MSw3ICszMTY1
LDcgQEAgdm9pZCBQcm9ncmFtRDNEOjpnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNv
bnN0IGdsOjpWYXJ5aW5nUGFja2luZyAmdmFyeWkKICAgICAgICAgICAgIGZvciAoR0x1aW50IHJl
Z2lzdGVySW5kZXggPSAwdTsgcmVnaXN0ZXJJbmRleCA8IHJlZ2lzdGVySW5mb3Muc2l6ZSgpOyAr
K3JlZ2lzdGVySW5kZXgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3QgYXV0
byAmcmVnaXN0ZXJJbmZvID0gcmVnaXN0ZXJJbmZvc1tyZWdpc3RlckluZGV4XTsKLSAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nICAgICAgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZh
cnlpbmctPnZhcnlpbmc7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmdmFyeWluZyAgICAg
ID0gcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZhcnlpbmcoKTsKICAgICAgICAgICAgICAg
ICBHTGVudW0gdHJhbnNwb3NlZFR5cGUgICAgPSBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZSh2YXJ5
aW5nLnR5cGUpOwogICAgICAgICAgICAgICAgIGludCBjb21wb25lbnRDb3VudCAgICAgICA9IGds
OjpWYXJpYWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQoIXZhcnlpbmcuaXNCdWlsdEluKCkgJiYgIXZhcnlpbmcuaXNTdHJ1Y3QoKSk7CkBAIC0z
MTY4LDE0ICszMTkyLDYgQEAgY29uc3QgRDNEVW5pZm9ybSAqUHJvZ3JhbUQzRDo6Z2V0RDNEVW5p
Zm9ybUZyb21Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKICAgICByZXR1cm4gbUQzRFVu
aWZvcm1zW21TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dLmluZGV4XTsKIH0K
IAotdm9pZCBQcm9ncmFtRDNEOjpzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0
cmluZyAmaW5wdXROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKQotewotICAgIFVOUkVBQ0hBQkxFKCk7Ci19Ci0K
IGJvb2wgUHJvZ3JhbUQzRDo6aGFzVmVydGV4RXhlY3V0YWJsZUZvckNhY2hlZElucHV0TGF5b3V0
KCkKIHsKICAgICByZXR1cm4gbUNhY2hlZFZlcnRleEV4ZWN1dGFibGVJbmRleC52YWxpZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9Qcm9ncmFtRDNELmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaAppbmRleCAxZGUwZWYwY2E5MDhlYTk1NjRjZDA5MmZj
NGQ2ZWM5ZmNkYzEwNzgzLi40ZmNhMTlkYTFhZTc2ZGZmZmE1OTU0Y2JmNTg1YjZjZmZiNjhjNjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1Byb2dyYW1EM0QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaApAQCAtMjM2LDExICsyMzYsNiBAQCBjbGFz
cyBQcm9ncmFtRDNEIDogcHVibGljIFByb2dyYW1JbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CiAgICAgR0xib29s
ZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNldFBhdGhGcmFnbWVudElucHV0R2VuKGNvbnN0IHN0ZDo6
c3RyaW5nICZpbnB1dE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBv
bmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpj
b2VmZnMpIG92ZXJyaWRlOwotCiAgICAgdm9pZCB1cGRhdGVVbmlmb3JtQnVmZmVyQ2FjaGUoY29u
c3QgZ2w6OkNhcHMgJmNhcHMpOwogCiAgICAgdW5zaWduZWQgaW50IGdldEF0b21pY0NvdW50ZXJC
dWZmZXJSZWdpc3RlckluZGV4KEdMdWludCBiaW5kaW5nLApAQCAtMzQ0LDcgKzMzOSw3IEBAIGNs
YXNzIFByb2dyYW1EM0QgOiBwdWJsaWMgUHJvZ3JhbUltcGwKIAogICAgIGJvb2wgaGFzU2hhZGVy
U3RhZ2UoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKClbc2hhZGVyVHlwZV07CisgICAgICAg
IHJldHVybiBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS5nZXRMaW5rZWRTaGFkZXJTdGFn
ZXMoKVtzaGFkZXJUeXBlXTsKICAgICB9CiAKICAgICB2b2lkIGFzc2lnbkltYWdlMkRSZWdpc3Rl
cnModW5zaWduZWQgaW50IHN0YXJ0SW1hZ2VJbmRleCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9W
ZXJ0ZXhEYXRhTWFuYWdlci5jcHAKaW5kZXggYzFmZmMxY2JlNGYzZTViMmQ5YTIzYWQ3ZTg4ZmQx
ZjMyNGM4NTE4Zi4uYjQxOGI1ZGNjM2Y1M2NiMTEwNmNlYTg1NDhhZWIwZTQzNTgzODdlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKQEAgLTI0OCwyMCAr
MjQ4LDIwIEBAIGFuZ2xlOjpSZXN1bHQgVmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhE
YXRhKAogICAgIHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICp0cmFuc2xhdGVkQXR0
cmlicywKICAgICBHTHNpemVpIGluc3RhbmNlcykKIHsKLSAgICBjb25zdCBnbDo6U3RhdGUgJnN0
YXRlICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKLSAgICBjb25zdCBnbDo6VmVy
dGV4QXJyYXkgKnZlcnRleEFycmF5ID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKLSAgICBjb25z
dCBhdXRvICZ2ZXJ0ZXhBdHRyaWJ1dGVzICAgICAgID0gdmVydGV4QXJyYXktPmdldFZlcnRleEF0
dHJpYnV0ZXMoKTsKLSAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhCaW5kaW5ncyAgICAgICAgID0gdmVy
dGV4QXJyYXktPmdldFZlcnRleEJpbmRpbmdzKCk7CisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSAgICAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBnbDo6
UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBzdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJs
ZSgpOworICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgICAgICA9IHN0YXRl
LmdldFZlcnRleEFycmF5KCk7CisgICAgY29uc3QgYXV0byAmdmVydGV4QXR0cmlidXRlcyAgICAg
ICAgICAgID0gdmVydGV4QXJyYXktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBh
dXRvICZ2ZXJ0ZXhCaW5kaW5ncyAgICAgICAgICAgICAgPSB2ZXJ0ZXhBcnJheS0+Z2V0VmVydGV4
QmluZGluZ3MoKTsKIAogICAgIG1EeW5hbWljQXR0cmlic01hc2tDYWNoZS5yZXNldCgpOwotICAg
IGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOwogCiAgICAg
dHJhbnNsYXRlZEF0dHJpYnMtPmNsZWFyKCk7CiAKICAgICBmb3IgKHNpemVfdCBhdHRyaWJJbmRl
eCA9IDA7IGF0dHJpYkluZGV4IDwgdmVydGV4QXR0cmlidXRlcy5zaXplKCk7ICsrYXR0cmliSW5k
ZXgpCiAgICAgewogICAgICAgICAvLyBTa2lwIGF0dHJpYiBsb2NhdGlvbnMgdGhlIHByb2dyYW0g
ZG9lc24ndCB1c2UuCi0gICAgICAgIGlmICghcHJvZ3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFjdGl2
ZShhdHRyaWJJbmRleCkpCisgICAgICAgIGlmICghZXhlY3V0YWJsZS0+aXNBdHRyaWJMb2NhdGlv
bkFjdGl2ZShhdHRyaWJJbmRleCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBj
b25zdCBhdXRvICZhdHRyaWIgID0gdmVydGV4QXR0cmlidXRlc1thdHRyaWJJbmRleF07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0NsZWFyMTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcAppbmRleCAwZWY3MTMyZDM5YmU4NDUxOWNh
M2I4MWU3MjljMThiNGQ4Mzk1ZDQzLi45M2Q0YWY2ZTdhZGYzMWQ2YjkxZmMwMDVjNjkwYmJmN2Yw
MmE0NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAKQEAgLTI4Nywx
NSArMjg3LDE2IEBAIGFuZ2xlOjpSZXN1bHQgQ2xlYXIxMTo6ZW5zdXJlUmVzb3VyY2VzSW5pdGlh
bGl6ZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAgICAgbURlcHRoU3RlbmNpbFN0YXRl
S2V5LnN0ZW5jaWxCYWNrRnVuYyAgICAgICAgICA9IEdMX0FMV0FZUzsKIAogICAgIC8vIEluaXRp
YWxpemUgQmxlbmRTdGF0ZUtleSB3aXRoIGRlZmF1bHRzCi0gICAgbUJsZW5kU3RhdGVLZXkuYmxl
bmRTdGF0ZS5ibGVuZCAgICAgICAgICAgICAgICAgPSBmYWxzZTsKLSAgICBtQmxlbmRTdGF0ZUtl
eS5ibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICAgICAgICA9IEdMX09ORTsKLSAgICBtQmxlbmRT
dGF0ZUtleS5ibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgICAgICA9IEdMX09ORTsKLSAgICBt
QmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAgICAgICAgICA9IEdMX1pFUk87
Ci0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSAgICAgICAgPSBH
TF9aRVJPOwotICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJHQiAg
ICAgID0gR0xfRlVOQ19BREQ7Ci0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5ibGVuZEVx
dWF0aW9uQWxwaGEgICAgPSBHTF9GVU5DX0FERDsKLSAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0
YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSA9IGZhbHNlOwotICAgIG1CbGVuZFN0YXRlS2V5LmJs
ZW5kU3RhdGUuZGl0aGVyICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBmb3IgKGdsOjpCbGVu
ZFN0YXRlICZibGVuZFN0YXRlIDogbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZUFycmF5KQorICAg
IHsKKyAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZCAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICAg
ICAgYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAgICAgPSBHTF9PTkU7CisgICAgICAgIGJsZW5k
U3RhdGUuc291cmNlQmxlbmRBbHBoYSAgID0gR0xfT05FOworICAgICAgICBibGVuZFN0YXRlLmRl
c3RCbGVuZFJHQiAgICAgICA9IEdMX1pFUk87CisgICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5k
QWxwaGEgICAgID0gR0xfWkVSTzsKKyAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdC
ICAgPSBHTF9GVU5DX0FERDsKKyAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEg
PSBHTF9GVU5DX0FERDsKKyAgICB9CiAKICAgICBtUmVzb3VyY2VzSW5pdGlhbGl6ZWQgPSB0cnVl
OwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTQ2MSwxNCArNDYyLDIw
IEBAIGFuZ2xlOjpSZXN1bHQgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICBzdGQ6OmFycmF5PElEM0QxMVJlbmRlclRhcmdldFZpZXcgKiwg
RDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ+IHJ0dnM7CiAgICAgc3RkOjph
cnJheTx1aW50OF90LCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVD4gcnR2
TWFza3MgPSB7fTsKIAotICAgIHVpbnQzMl90IG51bVJ0dnMgPSAwOwotICAgIGNvbnN0IHVpbnQ4
X3QgY29sb3JNYXNrID0KLSAgICAgICAgZ2xfZDNkMTE6OkNvbnZlcnRDb2xvck1hc2soY2xlYXJQ
YXJhbXMuY29sb3JNYXNrUmVkLCBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSwgY2xl
YXJQYXJhbXMuY29sb3JNYXNrQWxwaGEpOworICAgIHVpbnQzMl90IG51bVJ0dnMgICAgICAgID0g
MDsKKyAgICB1aW50OF90IGNvbW1vbkNvbG9yTWFzayA9IDA7CiAKICAgICBjb25zdCBhdXRvICZj
b2xvckF0dGFjaG1lbnRzID0gZmJvRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCk7CiAgICAgZm9y
IChhdXRvIGNvbG9yQXR0YWNobWVudEluZGV4IDogZmJvRGF0YS5nZXRFbmFibGVkRHJhd0J1ZmZl
cnMoKSkKICAgICB7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgY29sb3JNYXNrID0KKyAgICAgICAg
ICAgIGdsX2QzZDExOjpDb252ZXJ0Q29sb3JNYXNrKGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZFtj
b2xvckF0dGFjaG1lbnRJbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbltjb2xvckF0dGFjaG1lbnRJbmRleF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1h
c2tCbHVlW2NvbG9yQXR0YWNobWVudEluZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhW2NvbG9yQXR0YWNobWVudElu
ZGV4XSk7CisKKyAgICAgICAgY29tbW9uQ29sb3JNYXNrIHw9IGNvbG9yTWFzazsKKwogICAgICAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZhdHRhY2htZW50ID0gY29sb3JBdHRh
Y2htZW50c1tjb2xvckF0dGFjaG1lbnRJbmRleF07CiAKICAgICAgICAgaWYgKCFjbGVhclBhcmFt
cy5jbGVhckNvbG9yW2NvbG9yQXR0YWNobWVudEluZGV4XSkKQEAgLTQ5NCwxMCArNTAxLDEwIEBA
IGFuZ2xlOjpSZXN1bHQgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICA8PCAiKS4iOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKChmb3JtYXRJbmZvLnJlZEJpdHMgPT0gMCB8fCAhY2xlYXJQYXJhbXMuY29sb3JN
YXNrUmVkKSAmJgotICAgICAgICAgICAgKGZvcm1hdEluZm8uZ3JlZW5CaXRzID09IDAgfHwgIWNs
ZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuKSAmJgotICAgICAgICAgICAgKGZvcm1hdEluZm8uYmx1
ZUJpdHMgPT0gMCB8fCAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSkgJiYKLSAgICAgICAgICAg
IChmb3JtYXRJbmZvLmFscGhhQml0cyA9PSAwIHx8ICFjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBo
YSkpCisgICAgICAgIGlmICgoZm9ybWF0SW5mby5yZWRCaXRzID09IDAgfHwgIWNsZWFyUGFyYW1z
LmNvbG9yTWFza1JlZFtjb2xvckF0dGFjaG1lbnRJbmRleF0pICYmCisgICAgICAgICAgICAoZm9y
bWF0SW5mby5ncmVlbkJpdHMgPT0gMCB8fCAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW5bY29s
b3JBdHRhY2htZW50SW5kZXhdKSAmJgorICAgICAgICAgICAgKGZvcm1hdEluZm8uYmx1ZUJpdHMg
PT0gMCB8fCAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZVtjb2xvckF0dGFjaG1lbnRJbmRleF0p
ICYmCisgICAgICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPT0gMCB8fCAhY2xlYXJQYXJh
bXMuY29sb3JNYXNrQWxwaGFbY29sb3JBdHRhY2htZW50SW5kZXhdKSkKICAgICAgICAgewogICAg
ICAgICAgICAgLy8gRXZlcnkgY2hhbm5lbCBlaXRoZXIgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJl
bmRlciB0YXJnZXQgb3IgaXMgbWFza2VkIG91dAogICAgICAgICAgICAgY29udGludWU7CkBAIC01
MDgsMTAgKzUxNSwxMCBAQCBhbmdsZTo6UmVzdWx0IENsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICAgICAgaWYgKCghKG1SZW5kZXJlci0+
Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5zdXBwb3J0c0NsZWFyVmlldykgJiYgbmVlZFNjaXNz
b3JlZENsZWFyKSB8fAogICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JUeXBlICE9IEdMX0ZM
T0FUIHx8Ci0gICAgICAgICAgICAoZm9ybWF0SW5mby5yZWRCaXRzID4gMCAmJiAhY2xlYXJQYXJh
bXMuY29sb3JNYXNrUmVkKSB8fAotICAgICAgICAgICAgKGZvcm1hdEluZm8uZ3JlZW5CaXRzID4g
MCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4pIHx8Ci0gICAgICAgICAgICAoZm9ybWF0
SW5mby5ibHVlQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUpIHx8Ci0gICAg
ICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1h
c2tBbHBoYSkpCisgICAgICAgICAgICAoZm9ybWF0SW5mby5yZWRCaXRzID4gMCAmJiAhY2xlYXJQ
YXJhbXMuY29sb3JNYXNrUmVkW2NvbG9yQXR0YWNobWVudEluZGV4XSkgfHwKKyAgICAgICAgICAg
IChmb3JtYXRJbmZvLmdyZWVuQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVu
W2NvbG9yQXR0YWNobWVudEluZGV4XSkgfHwKKyAgICAgICAgICAgIChmb3JtYXRJbmZvLmJsdWVC
aXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZVtjb2xvckF0dGFjaG1lbnRJbmRl
eF0pIHx8CisgICAgICAgICAgICAoZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwICYmICFjbGVhclBh
cmFtcy5jb2xvck1hc2tBbHBoYVtjb2xvckF0dGFjaG1lbnRJbmRleF0pKQogICAgICAgICB7CiAg
ICAgICAgICAgICBydHZzW251bVJ0dnNdICAgICA9IGZyYW1lYnVmZmVyUlRWLmdldCgpOwogICAg
ICAgICAgICAgcnR2TWFza3NbbnVtUnR2c10gPSBnbF9kM2QxMTo6R2V0Q29sb3JNYXNrKGZvcm1h
dEluZm8pICYgY29sb3JNYXNrOwpAQCAtNjQzLDExICs2NTAsMTYgQEAgYW5nbGU6OlJlc3VsdCBD
bGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
IEFTU0VSVChudW1SdHZzIDw9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtUmVuZGVyZXItPmdldE5h
dGl2ZUNhcHMoKS5tYXhEcmF3QnVmZmVycykpOwogCiAgICAgLy8gU2V0dXAgQmxlbmRTdGF0ZUtl
eSBwYXJhbWV0ZXJzCi0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQg
ICA9IGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZDsKLSAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0
YXRlLmNvbG9yTWFza0dyZWVuID0gY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW47Ci0gICAgbUJs
ZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICA9IGNsZWFyUGFyYW1zLmNvbG9y
TWFza0JsdWU7Ci0gICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSA9
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhOwotICAgIG1CbGVuZFN0YXRlS2V5LnJ0dk1heCAg
ICAgICAgICAgICAgICAgICAgPSBudW1SdHZzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZUFycmF5LnNpemUoKTsgaSsrKQorICAgIHsKKyAgICAg
ICAgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRl
QXJyYXlbaV07CisgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICAgID0gY2xlYXJQYXJh
bXMuY29sb3JNYXNrUmVkW2ldOworICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuICA9
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuW2ldOworICAgICAgICBibGVuZFN0YXRlLmNvbG9y
TWFza0JsdWUgICA9IGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWVbaV07CisgICAgICAgIGJsZW5k
U3RhdGUuY29sb3JNYXNrQWxwaGEgID0gY2xlYXJQYXJhbXMuY29sb3JNYXNrQWxwaGFbaV07Cisg
ICAgfQorCisgICAgbUJsZW5kU3RhdGVLZXkucnR2TWF4ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KG51bVJ0dnMpOwogICAgIG1lbWNweShtQmxlbmRTdGF0ZUtleS5ydHZNYXNrcywgJnJ0dk1hc2tz
WzBdLCBzaXplb2YobUJsZW5kU3RhdGVLZXkucnR2TWFza3MpKTsKIAogICAgIC8vIEdldCBCbGVu
ZFN0YXRlCkBAIC02NzYsMTUgKzY4OCwxNiBAQCBhbmdsZTo6UmVzdWx0IENsZWFyMTE6OmNsZWFy
RnJhbWVidWZmZXIoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgc3dpdGNoIChjbGVh
clBhcmFtcy5jb2xvclR5cGUpCiAgICAgewogICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAg
ICAgICAgZGlydHlDYiA9IFVwZGF0ZURhdGFDYWNoZSgmbVNoYWRlckRhdGEsIGNsZWFyUGFyYW1z
LmNvbG9yRiwgelZhbHVlLCBudW1SdHZzLCBjb2xvck1hc2spOworICAgICAgICAgICAgZGlydHlD
YiA9CisgICAgICAgICAgICAgICAgVXBkYXRlRGF0YUNhY2hlKCZtU2hhZGVyRGF0YSwgY2xlYXJQ
YXJhbXMuY29sb3JGLCB6VmFsdWUsIG51bVJ0dnMsIGNvbW1vbkNvbG9yTWFzayk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CiAgICAgICAgICAgICBk
aXJ0eUNiID0gVXBkYXRlRGF0YUNhY2hlKHJlaW50ZXJwcmV0X2Nhc3Q8UnR2RHN2Q2xlYXJJbmZv
PHVpbnQzMl90PiAqPigmbVNoYWRlckRhdGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvclVJLCB6VmFsdWUsIG51bVJ0dnMsIGNvbG9yTWFz
ayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNv
bG9yVUksIHpWYWx1ZSwgbnVtUnR2cywgY29tbW9uQ29sb3JNYXNrKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEdMX0lOVDoKICAgICAgICAgICAgIGRpcnR5Q2IgPSBVcGRhdGVE
YXRhQ2FjaGUocmVpbnRlcnByZXRfY2FzdDxSdHZEc3ZDbGVhckluZm88aW50PiAqPigmbVNoYWRl
ckRhdGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFt
cy5jb2xvckksIHpWYWx1ZSwgbnVtUnR2cywgY29sb3JNYXNrKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JJLCB6VmFsdWUsIG51bVJ0dnMs
IGNvbW1vbkNvbG9yTWFzayk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0Nv
bnRleHQxMS5jcHAKaW5kZXggOTA2ZGY5NWQwNWEwYzcwMDQ5N2MwYzc3NTJkM2UyMTNkYzUyOGUx
YS4uZmZkMjBmYjEwOGQ4ZGYyMDZlMzZiZTc4MWU0OGNlZDJlNTc3ZjQxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9D
b250ZXh0MTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmNwcApAQCAtMjI5LDExICsyMjksNiBAQCBQcm9n
cmFtUGlwZWxpbmVJbXBsICpDb250ZXh0MTE6OmNyZWF0ZVByb2dyYW1QaXBlbGluZShjb25zdCBn
bDo6UHJvZ3JhbVBpcGVsaW5lUwogICAgIHJldHVybiBuZXcgUHJvZ3JhbVBpcGVsaW5lMTEoZGF0
YSk7CiB9CiAKLXN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRleHQxMTo6Y3JlYXRlUGF0aHMo
R0xzaXplaSkKLXsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4oKTsKLX0KLQog
TWVtb3J5T2JqZWN0SW1wbCAqQ29udGV4dDExOjpjcmVhdGVNZW1vcnlPYmplY3QoKQogewogICAg
IFVOUkVBQ0hBQkxFKCk7CkBAIC00OTAsMTggKzQ4NSwyMCBAQCBzdGQ6OnN0cmluZyBDb250ZXh0
MTE6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHJldHVybiBtUmVuZGVyZXIt
PmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKTsKIH0KIAotdm9pZCBDb250ZXh0MTE6Omluc2VydEV2
ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCithbmdsZTo6UmVz
dWx0IENvbnRleHQxMTo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNo
YXIgKm1hcmtlcikKIHsKICAgICBtUmVuZGVyZXItPmdldEFubm90YXRvcigpLT5zZXRNYXJrZXIo
bWFya2VyKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQg
Q29udGV4dDExOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dDExOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKIHsKICAgICBtUmVuZGVyZXItPmdldEFubm90YXRv
cigpLT5iZWdpbkV2ZW50KG1hcmtlciwgbWFya2VyKTsKICAgICBtTWFya2VyU3RhY2sucHVzaChz
dGQ6OnN0cmluZyhtYXJrZXIpKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7
CiB9CiAKLXZvaWQgQ29udGV4dDExOjpwb3BHcm91cE1hcmtlcigpCithbmdsZTo6UmVzdWx0IENv
bnRleHQxMTo6cG9wR3JvdXBNYXJrZXIoKQogewogICAgIGNvbnN0IGNoYXIgKm1hcmtlciA9IG51
bGxwdHI7CiAgICAgaWYgKCFtTWFya2VyU3RhY2suZW1wdHkoKSkKQEAgLTUxMCwxOCArNTA3LDIy
IEBAIHZvaWQgQ29udGV4dDExOjpwb3BHcm91cE1hcmtlcigpCiAgICAgICAgIG1NYXJrZXJTdGFj
ay5wb3AoKTsKICAgICAgICAgbVJlbmRlcmVyLT5nZXRBbm5vdGF0b3IoKS0+ZW5kRXZlbnQobWFy
a2VyKTsKICAgICB9CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12
b2lkIENvbnRleHQxMTo6cHVzaERlYnVnR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBj
b25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dDExOjpwdXNo
RGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKIHsKICAgICAvLyBG
YWxsIHRocm91Z2ggdG8gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZnVuY3Rpb25zCi0gICAgcHVzaEdy
b3VwTWFya2VyKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1lc3NhZ2Uuc2l6ZSgpKSwgbWVzc2FnZS5j
X3N0cigpKTsKKyAgICByZXR1cm4gcHVzaEdyb3VwTWFya2VyKHN0YXRpY19jYXN0PEdMc2l6ZWk+
KG1lc3NhZ2Uuc2l6ZSgpKSwgbWVzc2FnZS5jX3N0cigpKTsKIH0KIAotdm9pZCBDb250ZXh0MTE6
OnBvcERlYnVnR3JvdXAoKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0MTE6OnBvcERlYnVnR3JvdXAo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIHRo
ZSBFWFRfZGVidWdfbWFya2VyIGZ1bmN0aW9ucwotICAgIHBvcEdyb3VwTWFya2VyKCk7CisgICAg
cmV0dXJuIHBvcEdyb3VwTWFya2VyKCk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dDExOjpz
eW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQx
MS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9Db250ZXh0MTEuaAppbmRleCAzM2Q5Zjg4ZTEwZTY4ZmI2NTJjZDUxMThiYjFkMzJkZTQ1
ZjNiNzYzLi5hYzQ3N2NiNTM4MDgyZDU2OWVkYmUxYWM4NmQwNDM1YTZjZDRlNjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0NvbnRleHQxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgKQEAgLTYyLDkgKzYyLDYgQEAgY2xhc3Mg
Q29udGV4dDExIDogcHVibGljIENvbnRleHREM0QsIHB1YmxpYyBNdWx0aXNhbXBsZVRleHR1cmVJ
bml0aWFsaXplcgogICAgIC8vIFByb2dyYW0gUGlwZWxpbmUgb2JqZWN0IGNyZWF0aW9uCiAgICAg
UHJvZ3JhbVBpcGVsaW5lSW1wbCAqY3JlYXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnN0IGdsOjpQcm9n
cmFtUGlwZWxpbmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CiAKLSAgICAvLyBQYXRoIG9iamVjdCBj
cmVhdGlvbi4KLSAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVp
KSBvdmVycmlkZTsKLQogICAgIC8vIE1lbW9yeSBvYmplY3QgY3JlYXRpb24uCiAgICAgTWVtb3J5
T2JqZWN0SW1wbCAqY3JlYXRlTWVtb3J5T2JqZWN0KCkgb3ZlcnJpZGU7CiAKQEAgLTE1OCwxMyAr
MTU1LDE2IEBAIGNsYXNzIENvbnRleHQxMSA6IHB1YmxpYyBDb250ZXh0RDNELCBwdWJsaWMgTXVs
dGlzYW1wbGVUZXh0dXJlSW5pdGlhbGl6ZXIKICAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFRfZGVidWdfbWFya2VyCi0g
ICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFy
a2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwg
Y29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCkg
b3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxl
bmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHB1
c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlk
ZTsKKyAgICBhbmdsZTo6UmVzdWx0IHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CiAKICAgICAv
LyBLSFJfZGVidWcKLSAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdMdWlu
dCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgcG9w
RGVidWdHcm91cCgpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcHVzaERlYnVnR3JvdXAo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJm1lc3NhZ2UpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wRGVidWdHcm91cChj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdGF0ZSBzeW5j
IHdpdGggZGlydHkgYml0cy4KICAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZShjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVm
ZmVyMTEuY3BwCmluZGV4IDEzOGVhYjM4ODYzZmZhNjY0YWU2YWQ3Y2VmY2Q1N2MyZWY4YTI1YzIu
LmVmMDA1YTgxMDUzYjA5YzBlNmFjOGJmZTY4OWYxODhlMzYwZTdmYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJh
bWVidWZmZXIxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBA
IFJlbmRlclRhcmdldDExICpGcmFtZWJ1ZmZlcjExOjpnZXRGaXJzdFJlbmRlclRhcmdldCgpIGNv
bnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbVJlbmRlclRhcmdldENhY2hlLmdl
dERlcHRoU3RlbmNpbCgpOworICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhT
dGVuY2lsKHRydWUpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVi
dWZmZXIxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgKaW5kZXggODUxNmQ3ZGNmMjkwYjdhMmQ0YzBjZTQx
OTgyZGNjMTU2ZjhiMDQzZS4uOGQ1N2U1ZTYxNzUyNmM2N2Y1OTAyZTI0NzJiMmE4ZDJhZTI4OTM3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgY2xhc3MgRnJhbWVidWZmZXIxMSA6IHB1YmxpYyBGcmFtZWJ1ZmZlckQzRAog
ICAgIH0KICAgICBjb25zdCBSZW5kZXJUYXJnZXQxMSAqZ2V0Q2FjaGVkRGVwdGhTdGVuY2lsUmVu
ZGVyVGFyZ2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0Q2Fj
aGUuZ2V0RGVwdGhTdGVuY2lsKCk7CisgICAgICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0Q2FjaGUu
Z2V0RGVwdGhTdGVuY2lsKHRydWUpOwogICAgIH0KIAogICAgIFJlbmRlclRhcmdldDExICpnZXRG
aXJzdFJlbmRlclRhcmdldCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAKaW5kZXggYzE4NGQ3YzZiYTIyZTY5ZjUzZWY3YzFjYjc2
OWZhNTcxYWJhZTczZS4uMzkwMmIwZmIyYTM5MzIyNDk1YmUxOTYwMzFhYmUzMDE4MzY5ZjMyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3Bw
CkBAIC0xNDksNyArMTQ5LDcgQEAgYW5nbGU6OlJlc3VsdCBJbnB1dExheW91dENhY2hlOjpnZXRJ
bnB1dExheW91dCgKICAgICBjb25zdCBhdXRvICZsb2NhdGlvblRvU2VtYW50aWMgPSBwcm9ncmFt
RDNELT5nZXRBdHRyaWJMb2NhdGlvblRvRDNEU2VtYW50aWNzKCk7CiAgICAgaW50IGRpdmlzb3JN
dWx0aXBsaWVyICAgICAgICAgID0gcHJvZ3JhbS0+dXNlc011bHRpdmlldygpID8gcHJvZ3JhbS0+
Z2V0TnVtVmlld3MoKSA6IDE7CiAKLSAgICBmb3IgKHNpemVfdCBhdHRyaWJJbmRleCA6IHByb2dy
YW0tPmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSkKKyAgICBmb3IgKHNpemVfdCBhdHRy
aWJJbmRleCA6IHN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCktPmdldEFjdGl2ZUF0dHJpYkxv
Y2F0aW9uc01hc2soKSkKICAgICB7CiAgICAgICAgIC8vIFJlY29yZCB0aGUgdHlwZSBvZiB0aGUg
YXNzb2NpYXRlZCB2ZXJ0ZXggc2hhZGVyIHZlY3RvciBpbiBvdXIga2V5CiAgICAgICAgIC8vIFRo
aXMgd2lsbCBwcmV2ZW50IG1pc21hdGNoZWQgdmVydGV4IHNoYWRlcnMgZnJvbSB1c2luZyB0aGUg
c2FtZSBpbnB1dCBsYXlvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRl
clN0YXRlQ2FjaGUuY3BwCmluZGV4IDUyY2MxYjViNzkwNGM4MzYxNTJhYTliZDMwYWEyYzJmOTZj
ZDExYjAuLmQyNDQyMGQ0NjhhOTgyYjEzODE4ZGRhMDY3ZWVlYmM3ZmYwNTdjNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmNwcApAQCAtNDUs
MjggKzQ1LDcxIEBAIHZvaWQgUmVuZGVyU3RhdGVDYWNoZTo6Y2xlYXIoKQogLy8gc3RhdGljCiBk
M2QxMTo6QmxlbmRTdGF0ZUtleSBSZW5kZXJTdGF0ZUNhY2hlOjpHZXRCbGVuZFN0YXRlS2V5KGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcjExICpmcmFtZWJ1ZmZlcjExLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGVBcnJh
eSAmYmxlbmRTdGF0ZUFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHNhbXBsZUFscGhhVG9Db3ZlcmFnZSkKIHsKICAgICBk
M2QxMTo6QmxlbmRTdGF0ZUtleSBrZXk7CisgICAgLy8gQWxsIGVsZW1lbnRzIG9mIHRoZSBCbGVu
ZFN0YXRlQXJyYXkgaW5zaWRlIHRoZSBrZXkgc2hvdWxkIGJlIGluaXRpYWxpemVkIGZvciB0aGUg
Y2FjaGluZyB0bworICAgIC8vIHdvcmsgY29ycmVjdGx5LiBEdWUgdG8gbXJ0X3BlcmZfd29ya2Fy
b3VuZCwgdGhlIGFjdHVhbCBpbmRpY2VzIG9mIGFjdGl2ZSBkcmF3IGJ1ZmZlcnMgbWF5IGJlCisg
ICAgLy8gZGlmZmVyZW50LCBzbyBib3RoIGFycmF5cyBzaG91bGQgYmUgdHJhY2tlZC4KICAgICBj
b25zdCBnbDo6QXR0YWNobWVudExpc3QgJmNvbG9yYnVmZmVycyA9IGZyYW1lYnVmZmVyMTEtPmdl
dENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIoY29udGV4dCk7Ci0gICAgY29uc3QgVUlOVDggYmxl
bmRTdGF0ZU1hc2sgPQotICAgICAgICBnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayhibGVuZFN0
YXRlLmNvbG9yTWFza1JlZCwgYmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlLCBibGVuZFN0
YXRlLmNvbG9yTWFza0FscGhhKTsKKyAgICBjb25zdCBnbDo6RHJhd0J1ZmZlck1hc2sgY29sb3JB
dHRhY2htZW50c0ZvclJlbmRlck1hc2sgPQorICAgICAgICBmcmFtZWJ1ZmZlcjExLT5nZXRMYXN0
Q29sb3JBdHRhY2htZW50c0ZvclJlbmRlck1hc2soKTsKIAotICAgIGtleS5ibGVuZFN0YXRlID0g
YmxlbmRTdGF0ZTsKKyAgICBBU1NFUlQoYmxlbmRTdGF0ZUFycmF5LnNpemUoKSA9PSBjb2xvckF0
dGFjaG1lbnRzRm9yUmVuZGVyTWFzay5zaXplKCkpOworICAgIEFTU0VSVChjb2xvcmJ1ZmZlcnMu
c2l6ZSgpID09IGNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXJNYXNrLmNvdW50KCkpOwogCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2xvcmJ1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgc2l6
ZV90IGtleUJsZW5kSW5kZXggPSAwOworICAgIGZvciAoc2l6ZV90IHNvdXJjZUluZGV4IDogY29s
b3JBdHRhY2htZW50c0ZvclJlbmRlck1hc2spCiAgICAgewotICAgICAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gY29sb3JidWZmZXJzW2ldOworICAgICAg
ICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGVBcnJheVtzb3Vy
Y2VJbmRleF07CisgICAgICAgIGdsOjpCbGVuZFN0YXRlICZrZXlCbGVuZFN0YXRlICAgID0ga2V5
LmJsZW5kU3RhdGVBcnJheVtrZXlCbGVuZEluZGV4XTsKIAotICAgICAgICBpZiAoYXR0YWNobWVu
dCkKKyAgICAgICAgLy8gV2l0aCBibGVuZGluZyBkaXNhYmxlZCwgZmFjdG9ycyBhbmQgZXF1YXRp
b25zIGFyZSBpZ25vcmVkIHdoZW4gYnVpbGRpbmcKKyAgICAgICAgLy8gRDNEMTFfUkVOREVSX1RB
UkdFVF9CTEVORF9ERVNDLCBzbyB3ZSBjYW4gcmVkdWNlIHRoZSBhbW91bnQgb2YgdW5pcXVlIGtl
eXMgYnkKKyAgICAgICAgLy8gZW5mb3JjaW5nIGRlZmF1bHQgdmFsdWVzLgorICAgICAgICBrZXlC
bGVuZFN0YXRlID0gZ2w6OkJsZW5kU3RhdGUoKTsKKworICAgICAgICBpZiAoYmxlbmRTdGF0ZS5i
bGVuZCkKICAgICAgICAgewotICAgICAgICAgICAga2V5LnJ0dk1heCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihpKSArIDE7Ci0gICAgICAgICAgICBrZXkucnR2TWFza3NbaV0gPQotICAgICAgICAg
ICAgICAgIChnbF9kM2QxMTo6R2V0Q29sb3JNYXNrKCphdHRhY2htZW50LT5nZXRGb3JtYXQoKS5p
bmZvKSkgJiBibGVuZFN0YXRlTWFzazsKKyAgICAgICAgICAgIGtleUJsZW5kU3RhdGUuYmxlbmQg
ICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgIGtleUJsZW5kU3RhdGUuc291cmNlQmxl
bmRSR0IgICAgID0gYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQjsKKyAgICAgICAgICAgIGtleUJs
ZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSAgID0gYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhh
OworICAgICAgICAgICAga2V5QmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgICAgICAgPSBibGVuZFN0
YXRlLmRlc3RCbGVuZFJHQjsKKyAgICAgICAgICAgIGtleUJsZW5kU3RhdGUuZGVzdEJsZW5kQWxw
aGEgICAgID0gYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYTsKKyAgICAgICAgICAgIGtleUJsZW5k
U3RhdGUuYmxlbmRFcXVhdGlvblJHQiAgID0gYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCOwor
ICAgICAgICAgICAga2V5QmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEgPSBibGVuZFN0YXRl
LmJsZW5kRXF1YXRpb25BbHBoYTsKICAgICAgICAgfQorCisgICAgICAgIC8vIFRoZXNlIHZhbHVl
cyBhcmUgdXNlZCBvbmx5IGZvciBjYWNoaW5nIChoYXNoIGNhbGN1bGF0aW9uKSBwdXJwb3Nlcy4K
KyAgICAgICAgLy8gQWN0dWFsIHdyaXRlIGNvbG9yIG1hc2sgdmFsdWUgaXMgZGVyaXZlZCBiZWxv
dy4KKyAgICAgICAga2V5QmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQgICA9IGJsZW5kU3RhdGUuY29s
b3JNYXNrUmVkOworICAgICAgICBrZXlCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuID0gYmxlbmRT
dGF0ZS5jb2xvck1hc2tHcmVlbjsKKyAgICAgICAga2V5QmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVl
ICA9IGJsZW5kU3RhdGUuY29sb3JNYXNrQmx1ZTsKKyAgICAgICAga2V5QmxlbmRTdGF0ZS5jb2xv
ck1hc2tBbHBoYSA9IGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGE7CisKKyAgICAgICAgQVNTRVJU
KGtleUJsZW5kSW5kZXggPCBjb2xvcmJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICAgICAgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCA9IGNvbG9yYnVmZmVyc1trZXlCbGVu
ZEluZGV4XTsKKworICAgICAgICBpZiAoYXR0YWNobWVudCkgIC8vIHdoZW4gbXJ0X3BlcmZfd29y
a2Fyb3VuZCBpcyBkaXNhYmxlZCwgbnVsbHB0ciBhdHRhY2htZW50cyBtYXkgZXhpc3QKKyAgICAg
ICAgeworICAgICAgICAgICAga2V5LnJ0dk1heCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihrZXlC
bGVuZEluZGV4KSArIDE7CisgICAgICAgICAgICBrZXkucnR2TWFza3Nba2V5QmxlbmRJbmRleF0g
PQorICAgICAgICAgICAgICAgIChnbF9kM2QxMTo6R2V0Q29sb3JNYXNrKCphdHRhY2htZW50LT5n
ZXRGb3JtYXQoKS5pbmZvKSkgJgorICAgICAgICAgICAgICAgIGdsX2QzZDExOjpDb252ZXJ0Q29s
b3JNYXNrKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkLCBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUu
Y29sb3JNYXNrQmx1ZSwgYmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSk7CisgICAgICAgIH0KKyAg
ICAgICAga2V5QmxlbmRJbmRleCsrOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgcmVtYWlu
aW5nIHNsb3RzIGluIGtleS5ibGVuZFN0YXRlQXJyYXkKKyAgICBpZiAoa2V5QmxlbmRJbmRleCA8
IGtleS5ibGVuZFN0YXRlQXJyYXkuc2l6ZSgpKQorICAgIHsKKyAgICAgICAgc3RkOjpmaWxsKGtl
eS5ibGVuZFN0YXRlQXJyYXkuYmVnaW4oKSArIGtleUJsZW5kSW5kZXgsIGtleS5ibGVuZFN0YXRl
QXJyYXkuZW5kKCksCisgICAgICAgICAgICAgICAgICBnbDo6QmxlbmRTdGF0ZSgpKTsKICAgICB9
CiAKKyAgICBrZXkuc2FtcGxlQWxwaGFUb0NvdmVyYWdlID0gc2FtcGxlQWxwaGFUb0NvdmVyYWdl
ID8gMSA6IDA7CiAgICAgcmV0dXJuIGtleTsKIH0KIApAQCAtODYsMzEgKzEyOSwzNSBAQCBhbmds
ZTo6UmVzdWx0IFJlbmRlclN0YXRlQ2FjaGU6OmdldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYmxlbmQgc3RhdGUgYW5kIGluc2Vy
dCBpdCBpbnRvIHRoZSBjYWNoZQogICAgIEQzRDExX0JMRU5EX0RFU0MgYmxlbmREZXNjOwotICAg
IEQzRDExX1JFTkRFUl9UQVJHRVRfQkxFTkRfREVTQyAmcnREZXNjMCA9IGJsZW5kRGVzYy5SZW5k
ZXJUYXJnZXRbMF07Ci0gICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgICAgICAg
ID0ga2V5LmJsZW5kU3RhdGU7CisgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGVBcnJheSAmYmxlbmRT
dGF0ZUFycmF5ID0ga2V5LmJsZW5kU3RhdGVBcnJheTsKIAotICAgIGJsZW5kRGVzYy5BbHBoYVRv
Q292ZXJhZ2VFbmFibGUgID0gYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisgICAg
YmxlbmREZXNjLkFscGhhVG9Db3ZlcmFnZUVuYWJsZSAgPSBrZXkuc2FtcGxlQWxwaGFUb0NvdmVy
YWdlICE9IDAgPyBUUlVFIDogRkFMU0U7CiAgICAgYmxlbmREZXNjLkluZGVwZW5kZW50QmxlbmRF
bmFibGUgPSBrZXkucnR2TWF4ID4gMSA/IFRSVUUgOiBGQUxTRTsKIAotICAgIHJ0RGVzYzAgPSB7
fTsKKyAgICAvLyBEM0QxMSBBUEkgYWx3YXlzIGFjY2VwdHMgYW4gYXJyYXkgb2YgYmxlbmQgc3Rh
dGVzLiBJdHMgdmFsaWRpdHkgZGVwZW5kcyBvbiB0aGUgaGFyZHdhcmUKKyAgICAvLyBmZWF0dXJl
IGxldmVsLiBHaXZlbiB0aGF0IHdlIGRvIG5vdCBleHBvc2UgR0wgZW50cnlwb2ludHMgdGhhdCBz
ZXQgcGVyLWJ1ZmZlciBibGVuZCBzdGF0ZXMgb24KKyAgICAvLyBzeXN0ZW1zIGxvd2VyIHRoYW4g
RkwxMF8xLCB0aGlzIGFycmF5IHdpbGwgYmUgYWx3YXlzIHZhbGlkLgogCi0gICAgaWYgKGJsZW5k
U3RhdGUuYmxlbmQpCisgICAgQVNTRVJUKGJsZW5kU3RhdGVBcnJheS5zaXplKCkgPj0gRDNEMTFf
U0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7IGkrKykKICAgICB7
Ci0gICAgICAgIHJ0RGVzYzAuQmxlbmRFbmFibGUgICAgPSB0cnVlOwotICAgICAgICBydERlc2Mw
LlNyY0JsZW5kICAgICAgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5z
b3VyY2VCbGVuZFJHQiwgZmFsc2UpOwotICAgICAgICBydERlc2MwLkRlc3RCbGVuZCAgICAgID0g
Z2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IsIGZhbHNl
KTsKLSAgICAgICAgcnREZXNjMC5CbGVuZE9wICAgICAgICA9IGdsX2QzZDExOjpDb252ZXJ0Qmxl
bmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IpOwotICAgICAgICBydERlc2MwLlNyY0Js
ZW5kQWxwaGEgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZEFscGhhLCB0cnVlKTsKLSAgICAgICAgcnREZXNjMC5EZXN0QmxlbmRBbHBoYSA9IGdsX2Qz
ZDExOjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEsIHRydWUpOwot
ICAgICAgICBydERlc2MwLkJsZW5kT3BBbHBoYSAgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZE9w
KGJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKTsKLSAgICB9CisgICAgICAgIEQzRDExX1JF
TkRFUl9UQVJHRVRfQkxFTkRfREVTQyAmcnREZXNjID0gYmxlbmREZXNjLlJlbmRlclRhcmdldFtp
XTsKIAotICAgIHJ0RGVzYzAuUmVuZGVyVGFyZ2V0V3JpdGVNYXNrID0ga2V5LnJ0dk1hc2tzWzBd
OworICAgICAgICBydERlc2MgPSB7fTsgIC8vIG90aGVyd2lzZSBpdHMgY29udGVudCBtYXkgYmUg
dW5kZWZpbmVkCiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMTsgaSA8IEQzRDExX1NJTVVM
VEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyBpKyspCi0gICAgewotICAgICAgICBibGVuZERl
c2MuUmVuZGVyVGFyZ2V0W2ldICAgICAgICAgICAgICAgICAgICAgICA9IHJ0RGVzYzA7Ci0gICAg
ICAgIGJsZW5kRGVzYy5SZW5kZXJUYXJnZXRbaV0uUmVuZGVyVGFyZ2V0V3JpdGVNYXNrID0ga2V5
LnJ0dk1hc2tzW2ldOworICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9
IGJsZW5kU3RhdGVBcnJheVtpXTsKKyAgICAgICAgaWYgKGJsZW5kU3RhdGUuYmxlbmQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJ0RGVzYy5CbGVuZEVuYWJsZSAgICA9IHRydWU7CisgICAgICAg
ICAgICBydERlc2MuU3JjQmxlbmQgICAgICAgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhi
bGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCLCBmYWxzZSk7CisgICAgICAgICAgICBydERlc2MuRGVz
dEJsZW5kICAgICAgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RC
bGVuZFJHQiwgZmFsc2UpOworICAgICAgICAgICAgcnREZXNjLkJsZW5kT3AgICAgICAgID0gZ2xf
ZDNkMTE6OkNvbnZlcnRCbGVuZE9wKGJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvblJHQik7CisgICAg
ICAgICAgICBydERlc2MuU3JjQmxlbmRBbHBoYSAgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVu
YyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEsIHRydWUpOworICAgICAgICAgICAgcnREZXNj
LkRlc3RCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5k
ZXN0QmxlbmRBbHBoYSwgdHJ1ZSk7CisgICAgICAgICAgICBydERlc2MuQmxlbmRPcEFscGhhICAg
PSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEp
OworICAgICAgICB9CisKKyAgICAgICAgcnREZXNjLlJlbmRlclRhcmdldFdyaXRlTWFzayA9IGtl
eS5ydHZNYXNrc1tpXTsKICAgICB9CiAKICAgICBkM2QxMTo6QmxlbmRTdGF0ZSBkM2RCbGVuZFN0
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaApp
bmRleCA1Zjg5MWZkOWQ3OGRjZjdjOWFlYjljNTFiZTQ4Y2U1OGViODI0M2FlLi41YmZjNTkzMTNl
YjFiYzEyZGYwZTlhZmRjODViMDBlNDgxNWNkNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaApAQCAtNjksNyArNjksOCBAQCBjbGFzcyBSZW5k
ZXJTdGF0ZUNhY2hlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBzdGF0aWMgZDNkMTE6OkJs
ZW5kU3RhdGVLZXkgR2V0QmxlbmRTdGF0ZUtleShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1
ZmZlcjExICpmcmFtZWJ1ZmZlcjExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qmxl
bmRTdGF0ZUFycmF5ICZibGVuZFN0YXRlQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzYW1wbGVBbHBoYVRvQ292ZXJhZ2UpOwogICAg
IGFuZ2xlOjpSZXN1bHQgZ2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXIxMSAqcmVuZGVyZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5
ICZrZXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAppbmRleCAw
Y2U0OGRhNTg3YTFmMDkyYjkzYTA4Y2UyMGJmODQ3YjZkM2RhZDU1Li5hN2NlMGU5NTRiOWNiNDIy
ZWM1ZmRhYTIyNDQ1NDg0MWQ5OTZmZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
UmVuZGVyZXIxMS5jcHAKQEAgLTM4NjQsNyArMzg2NCw3IEBAIHZvaWQgUmVuZGVyZXIxMTo6aW5p
dGlhbGl6ZUZlYXR1cmVzKGFuZ2xlOjpGZWF0dXJlc0QzRCAqZmVhdHVyZXMpIGNvbnN0CiAgICAg
ewogICAgICAgICBkM2QxMTo6SW5pdGlhbGl6ZUZlYXR1cmVzKG1SZW5kZXJlcjExRGV2aWNlQ2Fw
cywgbUFkYXB0ZXJEZXNjcmlwdGlvbiwgZmVhdHVyZXMpOwogICAgIH0KLSAgICBPdmVycmlkZUZl
YXR1cmVzV2l0aERpc3BsYXlTdGF0ZShmZWF0dXJlcywgbURpc3BsYXktPmdldFN0YXRlKCkpOwor
ICAgIEFwcGx5RmVhdHVyZU92ZXJyaWRlcyhmZWF0dXJlcywgbURpc3BsYXktPmdldFN0YXRlKCkp
OwogfQogCiBEZXZpY2VJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVFR0xEZXZpY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcAppbmRleCBiMjNlODMx
MjRmZjU1NmY5YTQ3NjU2NWVjZmRlMDMzNWQ5YThiNWMxLi43ZWI3ZjE4OTY3MGI0YjU5NTZmZTI1
MWY4YzEyODRmYjYzNTZhMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0
YXRlTWFuYWdlcjExLmNwcApAQCAtMTkzLDggKzE5Myw5IEBAIHZvaWQgU29ydEF0dHJpYnV0ZXNC
eUxheW91dChjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgIHNvcnRlZEF0dHJpYnV0
ZXNPdXQtPmNsZWFyKCk7CiAKICAgICBjb25zdCBBdHRyaWJJbmRleEFycmF5ICZsb2NhdGlvblRv
U2VtYW50aWMgPSBwcm9ncmFtRDNELmdldEF0dHJpYkxvY2F0aW9uVG9EM0RTZW1hbnRpY3MoKTsK
KyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgJmV4ZWN1dGFibGUgICAgPSBwcm9ncmFt
RDNELmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIAotICAgIGZvciAoYXV0byBs
b2NhdGlvbkluZGV4IDogcHJvZ3JhbUQzRC5nZXRTdGF0ZSgpLmdldEFjdGl2ZUF0dHJpYkxvY2F0
aW9uc01hc2soKSkKKyAgICBmb3IgKGF1dG8gbG9jYXRpb25JbmRleCA6IGV4ZWN1dGFibGUuZ2V0
QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKQogICAgIHsKICAgICAgICAgaW50IGQzZFNlbWFu
dGljID0gbG9jYXRpb25Ub1NlbWFudGljW2xvY2F0aW9uSW5kZXhdOwogICAgICAgICBpZiAoc29y
dGVkQXR0cmlidXRlc091dC0+c2l6ZSgpIDw9IHN0YXRpY19jYXN0PHNpemVfdD4oZDNkU2VtYW50
aWMpKQpAQCAtNjY1LDYgKzY2Niw4IEBAIGFuZ2xlOjpSZXN1bHQgU2hhZGVyQ29uc3RhbnRzMTE6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIFN0YXRlTWFuYWdlcjEx
OjpTdGF0ZU1hbmFnZXIxMShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICA6IG1SZW5kZXJlcihy
ZW5kZXJlciksCiAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMoKSwKKyAgICAgIG1DdXJTYW1wbGVB
bHBoYVRvQ292ZXJhZ2UoZmFsc2UpLAorICAgICAgbUN1ckJsZW5kU3RhdGVBcnJheSgpLAogICAg
ICAgbUN1ckJsZW5kQ29sb3IoMCwgMCwgMCwgMCksCiAgICAgICBtQ3VyU2FtcGxlTWFzaygwKSwK
ICAgICAgIG1DdXJTdGVuY2lsUmVmKDApLApAQCAtNjk0LDI1ICs2OTcsMTIgQEAgU3RhdGVNYW5h
Z2VyMTE6OlN0YXRlTWFuYWdlcjExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogICAgICAgbVZlcnRl
eERhdGFNYW5hZ2VyKHJlbmRlcmVyKSwKICAgICAgIG1JbmRleERhdGFNYW5hZ2VyKHJlbmRlcmVy
KSwKICAgICAgIG1Jc011bHRpdmlld0VuYWJsZWQoZmFsc2UpLAorICAgICAgbUluZGVwZW5kZW50
QmxlbmRTdGF0ZXMoZmFsc2UpLAogICAgICAgbUVtcHR5U2VyaWFsKG1SZW5kZXJlci0+Z2VuZXJh
dGVTZXJpYWwoKSksCiAgICAgICBtUHJvZ3JhbUQzRChudWxscHRyKSwKICAgICAgIG1WZXJ0ZXhB
cnJheTExKG51bGxwdHIpLAogICAgICAgbUZyYW1lYnVmZmVyMTEobnVsbHB0cikKIHsKLSAgICBt
Q3VyQmxlbmRTdGF0ZS5ibGVuZCAgICAgICAgICAgICAgICAgPSBmYWxzZTsKLSAgICBtQ3VyQmxl
bmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAgICAgICAgPSBHTF9PTkU7Ci0gICAgbUN1ckJsZW5kU3Rh
dGUuZGVzdEJsZW5kUkdCICAgICAgICAgID0gR0xfWkVSTzsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5z
b3VyY2VCbGVuZEFscGhhICAgICAgPSBHTF9PTkU7Ci0gICAgbUN1ckJsZW5kU3RhdGUuZGVzdEJs
ZW5kQWxwaGEgICAgICAgID0gR0xfWkVSTzsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5ibGVuZEVxdWF0
aW9uUkdCICAgICAgPSBHTF9GVU5DX0FERDsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5ibGVuZEVxdWF0
aW9uQWxwaGEgICAgPSBHTF9GVU5DX0FERDsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tS
ZWQgICAgICAgICAgPSB0cnVlOwotICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgICAg
ICAgICA9IHRydWU7Ci0gICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4gICAgICAgID0g
dHJ1ZTsKLSAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSAgICAgICAgPSB0cnVlOwot
ICAgIG1DdXJCbGVuZFN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSA9IGZhbHNlOwotICAgIG1D
dXJCbGVuZFN0YXRlLmRpdGhlciAgICAgICAgICAgICAgICA9IGZhbHNlOwotCiAgICAgbUN1ckRl
cHRoU3RlbmNpbFN0YXRlLmRlcHRoVGVzdCAgICAgICAgICAgICAgICA9IGZhbHNlOwogICAgIG1D
dXJEZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEZ1bmMgICAgICAgICAgICAgICAgPSBHTF9MRVNTOwog
ICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aE1hc2sgICAgICAgICAgICAgICAgPSB0cnVl
OwpAQCAtNzM4LDYgKzcyOCw3IEBAIFN0YXRlTWFuYWdlcjExOjpTdGF0ZU1hbmFnZXIxMShSZW5k
ZXJlcjExICpyZW5kZXJlcikKICAgICBtQ3VyUmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRz
ICA9IDAuMGY7CiAgICAgbUN1clJhc3RlclN0YXRlLnBvaW50RHJhd01vZGUgICAgICAgPSBmYWxz
ZTsKICAgICBtQ3VyUmFzdGVyU3RhdGUubXVsdGlTYW1wbGUgICAgICAgICA9IGZhbHNlOworICAg
IG1DdXJSYXN0ZXJTdGF0ZS5kaXRoZXIgICAgICAgICAgICAgID0gZmFsc2U7CiAKICAgICAvLyBT
dGFydCB3aXRoIGFsbCBpbnRlcm5hbCBkaXJ0eSBiaXRzIHNldCBleGNlcHQgRElSVFlfQklUX0NP
TVBVVEVfU1JWVUFWX1NUQVRFIGFuZAogICAgIC8vIERJUlRZX0JJVF9HUkFQSElDU19TUlZVQVZf
U1RBVEUuCkBAIC05NTksNTQgKzk1MCw5NCBAQCB2b2lkIFN0YXRlTWFuYWdlcjExOjpzeW5jU3Rh
dGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydAogICAg
ICAgICB7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0VRVUFU
SU9OUzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0
ZSAmYmxlbmRTdGF0ZSA9IHN0YXRlLmdldEJsZW5kU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCICE9IG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1
YXRpb25SR0IgfHwKLSAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9u
QWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKQorICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlQXJyYXkgJmJsZW5kU3RhdGVBcnJheSA9IHN0YXRlLmdl
dEJsZW5kU3RhdGVBcnJheSgpOworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzdGF0ZXND
b3VudCA9IG1JbmRlcGVuZGVudEJsZW5kU3RhdGVzID8gYmxlbmRTdGF0ZUFycmF5LnNpemUoKSA6
IDE7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZXNDb3VudDsg
aSsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUludGVybmFsRGly
dHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfU1RBVEUpOworICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGVBcnJheVtpXTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFibGVuZFN0YXRlLmJsZW5kKQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWJzZXF1ZW50IHN5bmMgc3RhZ2Vz
IGVuZm9yY2UgZGVmYXVsdCB2YWx1ZXMgZm9yIGJ1ZmZlcnMgd2l0aCBkaXNhYmxlZAorICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYmxlbmRpbmcgYW55d2F5LCBubyBuZWVkIHRvIHRvdWNoIGlu
dGVybmFsIGRpcnR5IGJpdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRT
dGF0ZSAmY3VyQmxlbmRTdGF0ZSA9IG1DdXJCbGVuZFN0YXRlQXJyYXlbaV07CisgICAgICAgICAg
ICAgICAgICAgIGlmIChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgIT0gY3VyQmxlbmRTdGF0
ZS5ibGVuZEVxdWF0aW9uUkdCIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRl
LmJsZW5kRXF1YXRpb25BbHBoYSAhPSBjdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSkK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbUludGVybmFs
RGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfU1RBVEUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0ZVTkNTOgogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlID0gc3RhdGUuZ2V0QmxlbmRT
dGF0ZSgpOwotICAgICAgICAgICAgICAgIGlmIChibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9
IG1DdXJCbGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCIHx8Ci0gICAgICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IG1DdXJCbGVuZFN0YXRlLmRlc3RCbGVuZFJHQiB8fAot
ICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgIT0gbUN1ckJs
ZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSB8fAotICAgICAgICAgICAgICAgICAgICBibGVuZFN0
YXRlLmRlc3RCbGVuZEFscGhhICE9IG1DdXJCbGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhKQorICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlQXJyYXkgJmJsZW5kU3RhdGVBcnJheSA9
IHN0YXRlLmdldEJsZW5kU3RhdGVBcnJheSgpOworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBzdGF0ZXNDb3VudCA9IG1JbmRlcGVuZGVudEJsZW5kU3RhdGVzID8gYmxlbmRTdGF0ZUFycmF5
LnNpemUoKSA6IDE7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0
ZXNDb3VudDsgaSsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbUlu
dGVybmFsRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfU1RBVEUpOworICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGVBcnJh
eVtpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFibGVuZFN0YXRlLmJsZW5kKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWJzZXF1ZW50IHN5
bmMgc3RhZ2VzIGVuZm9yY2UgZGVmYXVsdCB2YWx1ZXMgZm9yIGJ1ZmZlcnMgd2l0aCBkaXNhYmxl
ZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmxlbmRpbmcgYW55d2F5LCBubyBuZWVkIHRv
IHRvdWNoIGludGVybmFsIGRpcnR5IGJpdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6QmxlbmRTdGF0ZSAmY3VyQmxlbmRTdGF0ZSA9IG1DdXJCbGVuZFN0YXRlQXJyYXlbaV07Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IGN1ckJs
ZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5k
U3RhdGUuZGVzdEJsZW5kUkdCICE9IGN1ckJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgIT0gY3VyQmxl
bmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBibGVu
ZFN0YXRlLmRlc3RCbGVuZEFscGhhICE9IGN1ckJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnRlcm5hbERp
cnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX1NUQVRFKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBnbDo6
U3RhdGU6OkRJUlRZX0JJVF9CTEVORF9FTkFCTEVEOgotICAgICAgICAgICAgICAgIGlmIChzdGF0
ZS5nZXRCbGVuZFN0YXRlKCkuYmxlbmQgIT0gbUN1ckJsZW5kU3RhdGUuYmxlbmQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGVBcnJheSAmYmxlbmRT
dGF0ZUFycmF5ID0gc3RhdGUuZ2V0QmxlbmRTdGF0ZUFycmF5KCk7CisgICAgICAgICAgICAgICAg
Y29uc3Qgc2l6ZV90IHN0YXRlc0NvdW50ID0gbUluZGVwZW5kZW50QmxlbmRTdGF0ZXMgPyBibGVu
ZFN0YXRlQXJyYXkuc2l6ZSgpIDogMTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlc0NvdW50OyBpKyspCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBtSW50ZXJuYWxEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9TVEFURSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChibGVuZFN0YXRlQXJyYXlbaV0uYmxlbmQgIT0gbUN1ckJs
ZW5kU3RhdGVBcnJheVtpXS5ibGVuZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbUludGVybmFsRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfU1RB
VEUpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NBTVBMRV9BTFBIQV9U
T19DT1ZFUkFHRV9FTkFCTEVEOgotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRCbGVuZFN0
YXRlKCkuc2FtcGxlQWxwaGFUb0NvdmVyYWdlICE9Ci0gICAgICAgICAgICAgICAgICAgIG1DdXJC
bGVuZFN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSkKKyAgICAgICAgICAgICAgICBpZiAoc3Rh
dGUuaXNTYW1wbGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKCkgIT0gbUN1clNhbXBsZUFscGhhVG9D
b3ZlcmFnZSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1JbnRlcm5h
bERpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX1NUQVRFKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElS
VFlfQklUX0RJVEhFUl9FTkFCTEVEOgotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRCbGVu
ZFN0YXRlKCkuZGl0aGVyICE9IG1DdXJCbGVuZFN0YXRlLmRpdGhlcikKKyAgICAgICAgICAgICAg
ICBpZiAoc3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkuZGl0aGVyICE9IG1DdXJSYXN0ZXJTdGF0
ZS5kaXRoZXIpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtSW50ZXJu
YWxEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9TVEFURSk7CisgICAgICAgICAgICAgICAg
ICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX1JBU1RFUklaRVJfU1RBVEUpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ09MT1JfTUFTSzoKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9IHN0YXRlLmdldEJs
ZW5kU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQg
IT0gbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrUmVkIHx8Ci0gICAgICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4gIT0gbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4g
fHwKLSAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICE9IG1DdXJC
bGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgfHwKLSAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0
ZS5jb2xvck1hc2tBbHBoYSAhPSBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSkKKyAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZUFycmF5ICZibGVuZFN0YXRlQXJyYXkgPSBz
dGF0ZS5nZXRCbGVuZFN0YXRlQXJyYXkoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qg
c3RhdGVzQ291bnQgPSBtSW5kZXBlbmRlbnRCbGVuZFN0YXRlcyA/IGJsZW5kU3RhdGVBcnJheS5z
aXplKCkgOiAxOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGVz
Q291bnQ7IGkrKykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1JbnRl
cm5hbERpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX1NUQVRFKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgICAgPSBibGVuZFN0YXRlQXJy
YXlbaV07CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZjdXJCbGVu
ZFN0YXRlID0gbUN1ckJsZW5kU3RhdGVBcnJheVtpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICE9IGN1ckJsZW5kU3RhdGUuY29sb3JNYXNrUmVkIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuICE9IGN1
ckJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSAhPSBjdXJCbGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgIT0gY3Vy
QmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbUludGVybmFsRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRf
U1RBVEUpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CkBAIC0xMTc1LDggKzEyMDYsOCBAQCB2b2lkIFN0YXRlTWFuYWdlcjExOjpzeW5jU3Rh
dGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydAogICAg
ICAgICAgICAgICAgIGludmFsaWRhdGVQcm9ncmFtQXRvbWljQ291bnRlckJ1ZmZlcnMoKTsKICAg
ICAgICAgICAgICAgICBpbnZhbGlkYXRlUHJvZ3JhbVNoYWRlclN0b3JhZ2VCdWZmZXJzKCk7CiAg
ICAgICAgICAgICAgICAgaW52YWxpZGF0ZURyaXZlclVuaWZvcm1zKCk7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFwcm9ncmFtIHx8ICFwcm9ncmFtLT5oYXNMaW5rZWRTaGFkZXJTdGFn
ZShnbDo6U2hhZGVyVHlwZTo6Q29tcHV0ZSkpCisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBy
b2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gc3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4ZWN1dGFibGUgfHwgIWV4ZWN1dGFibGUtPmlzQ29t
cHV0ZSgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbUludGVybmFs
RGlydHlCaXRzLnNldChESVJUWV9CSVRfUFJJTUlUSVZFX1RPUE9MT0dZKTsKICAgICAgICAgICAg
ICAgICAgICAgaW52YWxpZGF0ZVZlcnRleEJ1ZmZlcigpOwpAQCAtMTIzMCw0MiArMTI2MSwzNiBA
QCB2b2lkIFN0YXRlTWFuYWdlcjExOjpoYW5kbGVNdWx0aXZpZXdEcmF3RnJhbWVidWZmZXJDaGFu
Z2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbgogfQogCiBhbmdsZTo6UmVzdWx0IFN0YXRlTWFuYWdl
cjExOjpzeW5jQmxlbmRTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRl
ICZibGVuZFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkJsZW5kU3RhdGVBcnJheSAmYmxlbmRTdGF0ZUFycmF5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbG9yRiAmYmxl
bmRDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBzYW1wbGVNYXNrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZU1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNhbXBsZUFscGhhVG9Db3ZlcmFnZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW11bGF0ZUNv
bnN0YW50QWxwaGEpCiB7CiAgICAgY29uc3QgZDNkMTE6OkJsZW5kU3RhdGUgKmR4QmxlbmRTdGF0
ZSA9IG51bGxwdHI7Ci0gICAgY29uc3QgZDNkMTE6OkJsZW5kU3RhdGVLZXkgJmtleSA9Ci0gICAg
ICAgIFJlbmRlclN0YXRlQ2FjaGU6OkdldEJsZW5kU3RhdGVLZXkoY29udGV4dCwgbUZyYW1lYnVm
ZmVyMTEsIGJsZW5kU3RhdGUpOworICAgIGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZrZXkg
ICAgICAgPSBSZW5kZXJTdGF0ZUNhY2hlOjpHZXRCbGVuZFN0YXRlS2V5KAorICAgICAgICBjb250
ZXh0LCBtRnJhbWVidWZmZXIxMSwgYmxlbmRTdGF0ZUFycmF5LCBzYW1wbGVBbHBoYVRvQ292ZXJh
Z2UpOwogCiAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0QmxlbmRTdGF0ZShjb250ZXh0LCBr
ZXksICZkeEJsZW5kU3RhdGUpKTsKIAogICAgIEFTU0VSVChkeEJsZW5kU3RhdGUgIT0gbnVsbHB0
cik7CiAKKyAgICAvLyBEM0QxMSBkb2VzIG5vdCBzdXBwb3J0IENPTlNUQU5UX0FMUEhBIGFzIHNv
dXJjZSBvciBkZXN0aW5hdGlvbiBjb2xvciBmYWN0b3IsIHNvIEFOR0xFIHNldHMKKyAgICAvLyB0
aGUgZmFjdG9yIHRvIENPTlNUQU5UX0NPTE9SIGFuZCBzd2l6emxlcyB0aGUgY29sb3IgdmFsdWUg
dG8gYWFhYS4gRm9yIHRoaXMgcmVhc29uLCBpdCdzCisgICAgLy8gaW1wb3NzaWJsZSB0byBzaW11
bHRhbmVvdXNseSB1c2UgQ09OU1RBTlRfQUxQSEEgYW5kIENPTlNUQU5UX0NPTE9SIGFzIHNvdXJj
ZSBvciBkZXN0aW5hdGlvbgorICAgIC8vIGNvbG9yIGZhY3RvcnMgaW4gdGhlIHNhbWUgYmxlbmQg
c3RhdGUuIFRoaXMgaXMgZW5mb3JjZWQgaW4gdGhlIHZhbGlkYXRpb24gbGF5ZXIuCiAgICAgZmxv
YXQgYmxlbmRDb2xvcnNbNF0gPSB7MC4wZn07Ci0gICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxl
bmRSR0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEgJiYKLSAgICAgICAgYmxlbmRTdGF0ZS5zb3VyY2VC
bGVuZFJHQiAhPSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgJiYKLSAgICAgICAgYmxlbmRT
dGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEgJiYKLSAgICAgICAgYmxlbmRT
dGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKQotICAgIHsK
LSAgICAgICAgYmxlbmRDb2xvcnNbMF0gPSBibGVuZENvbG9yLnJlZDsKLSAgICAgICAgYmxlbmRD
b2xvcnNbMV0gPSBibGVuZENvbG9yLmdyZWVuOwotICAgICAgICBibGVuZENvbG9yc1syXSA9IGJs
ZW5kQ29sb3IuYmx1ZTsKLSAgICAgICAgYmxlbmRDb2xvcnNbM10gPSBibGVuZENvbG9yLmFscGhh
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBibGVuZENvbG9yc1swXSA9IGJsZW5k
Q29sb3IuYWxwaGE7Ci0gICAgICAgIGJsZW5kQ29sb3JzWzFdID0gYmxlbmRDb2xvci5hbHBoYTsK
LSAgICAgICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENvbG9yLmFscGhhOwotICAgICAgICBibGVu
ZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7Ci0gICAgfQorICAgIGJsZW5kQ29sb3JzWzBd
ICAgICAgID0gZW11bGF0ZUNvbnN0YW50QWxwaGEgPyBibGVuZENvbG9yLmFscGhhIDogYmxlbmRD
b2xvci5yZWQ7CisgICAgYmxlbmRDb2xvcnNbMV0gICAgICAgPSBlbXVsYXRlQ29uc3RhbnRBbHBo
YSA/IGJsZW5kQ29sb3IuYWxwaGEgOiBibGVuZENvbG9yLmdyZWVuOworICAgIGJsZW5kQ29sb3Jz
WzJdICAgICAgID0gZW11bGF0ZUNvbnN0YW50QWxwaGEgPyBibGVuZENvbG9yLmFscGhhIDogYmxl
bmRDb2xvci5ibHVlOworICAgIGJsZW5kQ29sb3JzWzNdICAgICAgID0gYmxlbmRDb2xvci5hbHBo
YTsKIAogICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5PTVNldEJsZW5kU3RhdGUo
ZHhCbGVuZFN0YXRlLT5nZXQoKSwgYmxlbmRDb2xvcnMsIHNhbXBsZU1hc2spOwogCi0gICAgbUN1
ckJsZW5kU3RhdGUgPSBibGVuZFN0YXRlOwotICAgIG1DdXJCbGVuZENvbG9yID0gYmxlbmRDb2xv
cjsKLSAgICBtQ3VyU2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7CisgICAgbUN1ckJsZW5kU3RhdGVB
cnJheSAgICAgICA9IGJsZW5kU3RhdGVBcnJheTsKKyAgICBtQ3VyQmxlbmRDb2xvciAgICAgICAg
ICAgID0gYmxlbmRDb2xvcjsKKyAgICBtQ3VyU2FtcGxlTWFzayAgICAgICAgICAgID0gc2FtcGxl
TWFzazsKKyAgICBtQ3VyU2FtcGxlQWxwaGFUb0NvdmVyYWdlID0gc2FtcGxlQWxwaGFUb0NvdmVy
YWdlOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQpAQCAtMTUzMSw3
ICsxNTU2LDcgQEAgdm9pZCBTdGF0ZU1hbmFnZXIxMTo6cHJvY2Vzc0ZyYW1lYnVmZmVySW52YWxp
ZGF0aW9uKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAgICAgICBtQ3VyRGlzYWJsZVN0
ZW5jaWwgPSBkaXNhYmxlU3RlbmNpbDsKICAgICB9CiAKLSAgICBib29sIG11bHRpU2FtcGxlID0g
KGZiby0+Z2V0Q2FjaGVkU2FtcGxlcyhjb250ZXh0LCBnbDo6QXR0YWNobWVudFNhbXBsZVR5cGU6
OkVtdWxhdGVkKSAhPSAwKTsKKyAgICBib29sIG11bHRpU2FtcGxlID0gKGZiby0+Z2V0U2FtcGxl
cyhjb250ZXh0KSAhPSAwKTsKICAgICBpZiAobXVsdGlTYW1wbGUgIT0gbUN1clJhc3RlclN0YXRl
Lm11bHRpU2FtcGxlKQogICAgIHsKICAgICAgICAgbUludGVybmFsRGlydHlCaXRzLnNldChESVJU
WV9CSVRfUkFTVEVSSVpFUl9TVEFURSk7CkBAIC0xOTA5LDYgKzE5MzQsOCBAQCBhbmdsZTo6UmVz
dWx0IFN0YXRlTWFuYWdlcjExOjplbnN1cmVJbml0aWFsaXplZChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCkKIAogICAgIG1Jc011bHRpdmlld0VuYWJsZWQgPSBleHRlbnNpb25zLm11bHRpdmll
dyB8fCBleHRlbnNpb25zLm11bHRpdmlldzI7CiAKKyAgICBtSW5kZXBlbmRlbnRCbGVuZFN0YXRl
cyA9IGV4dGVuc2lvbnMuZHJhd0J1ZmZlcnNJbmRleGVkQW55KCk7ICAvLyByZXF1aXJlcyBGTDEw
XzEKKwogICAgIEFOR0xFX1RSWShtVmVydGV4RGF0YU1hbmFnZXIuaW5pdGlhbGl6ZShjb250ZXh0
KSk7CiAKICAgICBtQ3VycmVudEF0dHJpYnV0ZXMucmVzZXJ2ZShnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTKTsKQEAgLTIwMjYsOCArMjA1Myw5IEBAIGFuZ2xlOjpSZXN1bHQgU3RhdGVNYW5hZ2VyMTE6
OnN5bmNDdXJyZW50VmFsdWVBdHRyaWJzKAogICAgIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRh
PiAmY3VycmVudFZhbHVlcykKIHsKLSAgICBjb25zdCBhdXRvICZhY3RpdmVBdHRyaWJzTWFzayAg
PSBtUHJvZ3JhbUQzRC0+Z2V0U3RhdGUoKS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7
Ci0gICAgY29uc3QgYXV0byAmZGlydHlBY3RpdmVBdHRyaWJzID0gKGFjdGl2ZUF0dHJpYnNNYXNr
ICYgbURpcnR5Q3VycmVudFZhbHVlQXR0cmlicyk7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVj
dXRhYmxlICZleGVjdXRhYmxlID0gbVByb2dyYW1EM0QtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4
ZWN1dGFibGUoKTsKKyAgICBjb25zdCBhdXRvICZhY3RpdmVBdHRyaWJzTWFzayAgICAgICAgICAg
PSBleGVjdXRhYmxlLmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKTsKKyAgICBjb25zdCBh
dXRvICZkaXJ0eUFjdGl2ZUF0dHJpYnMgICAgICAgICAgPSAoYWN0aXZlQXR0cmlic01hc2sgJiBt
RGlydHlDdXJyZW50VmFsdWVBdHRyaWJzKTsKIAogICAgIGlmICghZGlydHlBY3RpdmVBdHRyaWJz
LmFueSgpKQogICAgIHsKQEAgLTIyNDcsOCArMjI3NSw5IEBAIGFuZ2xlOjpSZXN1bHQgU3RhdGVN
YW5hZ2VyMTE6OnVwZGF0ZVN0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgIEFOR0xFX1RSWShzeW5jUmFzdGVyaXplclN0YXRlKGNvbnRleHQsIG1vZGUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRElSVFlfQklUX0JMRU5E
X1NUQVRFOgotICAgICAgICAgICAgICAgIEFOR0xFX1RSWShzeW5jQmxlbmRTdGF0ZShjb250ZXh0
LCBnbFN0YXRlLmdldEJsZW5kU3RhdGUoKSwgZ2xTdGF0ZS5nZXRCbGVuZENvbG9yKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZU1hc2spKTsKKyAgICAg
ICAgICAgICAgICBBTkdMRV9UUlkoc3luY0JsZW5kU3RhdGUoCisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIGdsU3RhdGUuZ2V0QmxlbmRTdGF0ZUFycmF5KCksIGdsU3RhdGUuZ2V0QmxlbmRD
b2xvcigpLCBzYW1wbGVNYXNrLAorICAgICAgICAgICAgICAgICAgICBnbFN0YXRlLmlzU2FtcGxl
QWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpLCBnbFN0YXRlLmhhc0NvbnN0YW50QWxwaGFCbGVuZEZ1
bmMoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBESVJUWV9C
SVRfREVQVEhfU1RFTkNJTF9TVEFURToKICAgICAgICAgICAgICAgICBBTkdMRV9UUlkoc3luY0Rl
cHRoU3RlbmNpbFN0YXRlKGNvbnRleHQpKTsKQEAgLTI3MDIsNyArMjczMSw3IEBAIGFuZ2xlOjpS
ZXN1bHQgU3RhdGVNYW5hZ2VyMTE6OmFwcGx5VGV4dHVyZXNGb3JTUlZzKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAogICAgIEFTU0VSVCghbVByb2dyYW1EM0QtPmlzU2FtcGxlck1hcHBpbmdE
aXJ0eSgpKTsKIAogICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSB0aGUgUHJvZ3JhbSdzIHNhbXBs
ZXIgYmluZGluZ3MuCi0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJmNv
bXBsZXRlVGV4dHVyZXMgPSBnbFN0YXRlLmdldEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsKKyAgICBj
b25zdCBnbDo6QWN0aXZlVGV4dHVyZXNDYWNoZSAmY29tcGxldGVUZXh0dXJlcyA9IGdsU3RhdGUu
Z2V0QWN0aXZlVGV4dHVyZXNDYWNoZSgpOwogCiAgICAgY29uc3QgZ2w6OlJhbmdlVUkgc2FtcGxl
clJhbmdlID0gbVByb2dyYW1EM0QtPmdldFVzZWRTYW1wbGVyUmFuZ2Uoc2hhZGVyVHlwZSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gc2FtcGxlclJhbmdlLmxvdygpOyBz
YW1wbGVySW5kZXggPCBzYW1wbGVyUmFuZ2UuaGlnaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFn
ZXIxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oCmluZGV4IGQyOGNkZjMxMTQ2MDQ3NTMzOTc5NzVjNWIw
OGJiYmU1YzlhZGUyZmUuLjE4OTlkOWYxMmY0MGYzZmM5YjcwNDQ2NjI0NWQyMTZjMDk3YTQ0YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgKQEAgLTMx
Myw5ICszMTMsMTEgQEAgY2xhc3MgU3RhdGVNYW5hZ2VyMTEgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0Qx
MVJlc291cmNlICpyZXNvdXJjZSk7CiAKICAgICBhbmdsZTo6UmVzdWx0IHN5bmNCbGVuZFN0YXRl
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZUFycmF5ICZibGVuZFN0YXRlQXJy
YXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q29sb3JGICZi
bGVuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IHNhbXBsZU1hc2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHNhbXBsZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNh
bXBsZUFscGhhVG9Db3ZlcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgZW11bGF0ZUNvbnN0YW50QWxwaGEpOwogCiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jRGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwogCkBAIC00NjEsOCArNDYz
LDEwIEBAIGNsYXNzIFN0YXRlTWFuYWdlcjExIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAg
ICAgRGlydHlCaXRzIG1HcmFwaGljc0RpcnR5Qml0c01hc2s7CiAgICAgRGlydHlCaXRzIG1Db21w
dXRlRGlydHlCaXRzTWFzazsKIAorICAgIGJvb2wgbUN1clNhbXBsZUFscGhhVG9Db3ZlcmFnZTsK
KwogICAgIC8vIEJsZW5kIFN0YXRlCi0gICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5kU3RhdGU7
CisgICAgZ2w6OkJsZW5kU3RhdGVBcnJheSBtQ3VyQmxlbmRTdGF0ZUFycmF5OwogICAgIGdsOjpD
b2xvckYgbUN1ckJsZW5kQ29sb3I7CiAgICAgdW5zaWduZWQgaW50IG1DdXJTYW1wbGVNYXNrOwog
CkBAIC01OTIsNiArNTk2LDggQEAgY2xhc3MgU3RhdGVNYW5hZ2VyMTEgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICAvLyBBTkdMRV9tdWx0aXZpZXcuCiAgICAgYm9vbCBtSXNNdWx0aXZp
ZXdFbmFibGVkOwogCisgICAgYm9vbCBtSW5kZXBlbmRlbnRCbGVuZFN0YXRlczsKKwogICAgIC8v
IERyaXZlciBDb25zdGFudHMuCiAgICAgZ2w6OlNoYWRlck1hcDxkM2QxMTo6QnVmZmVyPiBtU2hh
ZGVyRHJpdmVyQ29uc3RhbnRCdWZmZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNE
VGV4dHVyZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZS5jcHAKaW5kZXggOTk4Y2NmMGJl
ZjhkY2UxNWJlNjRjOTFhMTM4ZjUxMmIwMzExZWQ4MS4uN2FmY2NiYmVkYmMxMWYwN2I0ZGIwZjk2
YzUxYzlkNTM2MGIzYTA1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW1Qcm9kdWNlckQzRFRleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmNwcApAQCAtNzEsNiArNzEsOSBAQCBlZ2w6
OkVycm9yIEdldEdMRGVzY0Zyb21UZXgoSUQzRDExVGV4dHVyZTJEICpjb25zdCB0ZXgsCiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgogICAgICAgICAgICAgcGxh
bmVGb3JtYXRzWzBdID0gR0xfUkdCQTE2X0VYVDsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgICAgIHBsYW5l
Rm9ybWF0c1swXSA9IEdMX1JHQkExNkY7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGVnbDo6RWdsQmFkUGFyYW1ldGVyKCkgPDwgIlVu
c3VwcG9ydGVkIGZvcm1hdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhB
cnJheTExLmNwcAppbmRleCA4ZmJiNzdhMzA4MjI1NDUxODAzNGMxZmNlMjhlM2EwOTQ0Mjc0N2Uy
Li41ZjgzNGI1YzhkYmM2M2QzYmNjMzc0ZWNhMTVhMTdlZTQ0MmQ3N2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Zl
cnRleEFycmF5MTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAKQEAgLTEzNSwxMyArMTM1LDE0
IEBAIGFuZ2xlOjpSZXN1bHQgVmVydGV4QXJyYXkxMTo6c3luY1N0YXRlRm9yRHJhdyhjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICA9IGNv
bnRleHQtPmdldFN0YXRlKCk7CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0
YXRlLmdldFByb2dyYW0oKTsKICAgICBBU1NFUlQocHJvZ3JhbSk7CisgICAgY29uc3QgZ2w6OlBy
b2dyYW1FeGVjdXRhYmxlICZleGVjdXRhYmxlID0gcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpOwor
CiAgICAgbUFwcGxpZWROdW1WaWV3c1RvRGl2aXNvciA9IChwcm9ncmFtLT51c2VzTXVsdGl2aWV3
KCkgPyBwcm9ncmFtLT5nZXROdW1WaWV3cygpIDogMSk7CiAKICAgICBpZiAobUF0dHJpYnNUb1Ry
YW5zbGF0ZS5hbnkoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAm
YWN0aXZlTG9jYXRpb25zID0KLSAgICAgICAgICAgIGdsU3RhdGUuZ2V0UHJvZ3JhbSgpLT5nZXRB
Y3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7Ci0gICAgICAgIGdsOjpBdHRyaWJ1dGVzTWFzayBh
Y3RpdmVEaXJ0eUF0dHJpYnMgPSAobUF0dHJpYnNUb1RyYW5zbGF0ZSAmIGFjdGl2ZUxvY2F0aW9u
cyk7CisgICAgICAgIGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlTG9jYXRpb25zID0g
ZXhlY3V0YWJsZS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7CisgICAgICAgIGdsOjpB
dHRyaWJ1dGVzTWFzayBhY3RpdmVEaXJ0eUF0dHJpYnMgICAgID0gKG1BdHRyaWJzVG9UcmFuc2xh
dGUgJiBhY3RpdmVMb2NhdGlvbnMpOwogICAgICAgICBpZiAoYWN0aXZlRGlydHlBdHRyaWJzLmFu
eSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBBTkdMRV9UUlkodXBkYXRlRGlydHlBdHRyaWJz
KGNvbnRleHQsIGFjdGl2ZURpcnR5QXR0cmlicykpOwpAQCAtMTUxLDkgKzE1Miw4IEBAIGFuZ2xl
OjpSZXN1bHQgVmVydGV4QXJyYXkxMTo6c3luY1N0YXRlRm9yRHJhdyhjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKIAogICAgIGlmIChtRHluYW1pY0F0dHJpYnNNYXNrLmFueSgpKQogICAgIHsK
LSAgICAgICAgY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVMb2NhdGlvbnMgPQotICAg
ICAgICAgICAgZ2xTdGF0ZS5nZXRQcm9ncmFtKCktPmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01h
c2soKTsKLSAgICAgICAgZ2w6OkF0dHJpYnV0ZXNNYXNrIGFjdGl2ZUR5bmFtaWNBdHRyaWJzID0g
KG1EeW5hbWljQXR0cmlic01hc2sgJiBhY3RpdmVMb2NhdGlvbnMpOworICAgICAgICBjb25zdCBn
bDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUxvY2F0aW9ucyA9IGV4ZWN1dGFibGUuZ2V0QWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzaygpOworICAgICAgICBnbDo6QXR0cmlidXRlc01hc2sgYWN0aXZl
RHluYW1pY0F0dHJpYnMgICA9IChtRHluYW1pY0F0dHJpYnNNYXNrICYgYWN0aXZlTG9jYXRpb25z
KTsKIAogICAgICAgICBpZiAoYWN0aXZlRHluYW1pY0F0dHJpYnMuYW55KCkpCiAgICAgICAgIHsK
QEAgLTIzNSw3ICsyMzUsOCBAQCB2b2lkIFZlcnRleEFycmF5MTE6OnVwZGF0ZVZlcnRleEF0dHJp
YlN0b3JhZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAKIGJvb2wgVmVydGV4QXJyYXkx
MTo6aGFzQWN0aXZlRHluYW1pY0F0dHJpYihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsK
LSAgICBjb25zdCBhdXRvICZhY3RpdmVMb2NhdGlvbnMgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dFByb2dyYW0oKS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOworICAgIGNvbnN0IGF1
dG8gJmFjdGl2ZUxvY2F0aW9ucyA9CisgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJv
Z3JhbUV4ZWN1dGFibGUoKS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOwogICAgIGds
OjpBdHRyaWJ1dGVzTWFzayBhY3RpdmVEeW5hbWljQXR0cmlicyA9IChtRHluYW1pY0F0dHJpYnNN
YXNrICYgYWN0aXZlTG9jYXRpb25zKTsKICAgICByZXR1cm4gYWN0aXZlRHluYW1pY0F0dHJpYnMu
YW55KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbiBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRf
ZGF0YS5qc29uCmluZGV4IDg5MWQzMGQyNTI5ZTY5YjU2ZWY3NTliNzhkOGZhNzc5ZDBiOGFjYTUu
LjdjZDVkN2RlNzFjY2Q3NWUzZGIyYTFkZDM4YzdiMWY5NThiNmY3ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhn
aV9mb3JtYXRfZGF0YS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfZGF0YS5qc29uCkBAIC03OSwxMSAr
NzksMTEgQEAKICAgICAiQkMzX1VOT1JNIjogIkJDM19SR0JBX1VOT1JNX0JMT0NLIiwKICAgICAi
QkMzX1VOT1JNX1NSR0IiOiAiQkMzX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyIsCiAgICAgIkJDNF9U
WVBFTEVTUyI6ICIiLAotICAgICJCQzRfVU5PUk0iOiAiIiwKLSAgICAiQkM0X1NOT1JNIjogIiIs
CisgICAgIkJDNF9VTk9STSI6ICJCQzRfUkVEX1VOT1JNX0JMT0NLIiwKKyAgICAiQkM0X1NOT1JN
IjogIkJDNF9SRURfU05PUk1fQkxPQ0siLAogICAgICJCQzVfVFlQRUxFU1MiOiAiIiwKLSAgICAi
QkM1X1VOT1JNIjogIiIsCi0gICAgIkJDNV9TTk9STSI6ICIiLAorICAgICJCQzVfVU5PUk0iOiAi
QkM1X1JHX1VOT1JNX0JMT0NLIiwKKyAgICAiQkM1X1NOT1JNIjogIkJDNV9SR19TTk9STV9CTE9D
SyIsCiAgICAgIkI1RzZSNV9VTk9STSI6ICIiLAogICAgICJCNUc1UjVBMV9VTk9STSI6ICIiLAog
ICAgICJCOEc4UjhBOF9VTk9STSI6ICIiLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0
b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAppbmRleCBiZmNmMDU1MGIyYjgw
NDkyZTRjMGVkNDEwMjY1ZDY2OGY5NDA1Mjk5Li5hNDY1NjdhZTBkNmQ1NjQzMTBkNzVlMTc0M2Fk
OWRhZWNmZGUwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVSQVRF
RCBGSUxFIC0gRE8gTk9UIEVESVQuCiAvLyBHZW5lcmF0ZWQgYnkgZ2VuX2R4Z2lfZm9ybWF0X3Rh
YmxlLnB5IHVzaW5nIGRhdGEgZnJvbSBkeGdpX2Zvcm1hdF9kYXRhLmpzb24uCiAvLwotLy8gQ29w
eXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgogLy8KQEAgLTMxOCwxNyArMzE4LDE3IEBAIGNvbnN0IEZvcm1hdCAmR2V0Rm9ybWF0KERY
R0lfRk9STUFUIGR4Z2lGb3JtYXQpCiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JN
X1NSR0I6CiAgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0SUQ6OkJDM19SR0JB
X1VOT1JNX1NSR0JfQkxPQ0spOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToK
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1h
dElEOjpCQzRfUkVEX1NOT1JNX0JMT0NLKTsKICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRf
VFlQRUxFU1M6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzRfVU5PUk06Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6
OkdldChGb3JtYXRJRDo6QkM0X1JFRF9VTk9STV9CTE9DSyk7CiAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfQkM1X1NOT1JNOgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4g
Rm9ybWF0OjpHZXQoRm9ybWF0SUQ6OkJDNV9SR19TTk9STV9CTE9DSyk7CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM1X1RZUEVMRVNTOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQkM1X1VOT1JNOgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0SUQ6OkJDNV9SR19VTk9STV9CTE9DSyk7CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9TRjE2OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBw
b3J0X2RhdGEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X2RhdGEuanNvbgppbmRleCBkNzA1YjllYzQwOWY5
NGI5YjFhNDlkYjJjMzI3ZWQwNzQwMzJjZTU5Li4yMzRlYzA0NWNhZTIzODU2NjIyM2I2Y2E1MmI3
MWFkMDYxNjcxYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24KKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdp
X3N1cHBvcnRfZGF0YS5qc29uCkBAIC04NzAsOSArODcwLDkgQEAKICAgICB9LAogICAgICJEWEdJ
X0ZPUk1BVF9CQzRfVFlQRUxFU1MiOgogICAgIHsKLSAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlz
IiwKLSAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKLSAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJh
bHdheXMiLAorICAgICAgInRleHR1cmUyRCI6ICIxMF8wIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAi
MTBfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTBfMCIsCiAgICAgICAic2hhZGVyU2FtcGxl
IjogIm5ldmVyIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRp
c2FtcGxlUlQiOiAibmV2ZXIiLApAQCAtODgxLDkgKzg4MSw5IEBACiAgICAgfSwKICAgICAiRFhH
SV9GT1JNQVRfQkM0X1VOT1JNIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIs
Ci0gICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3
YXlzIiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEw
XzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6
ICIxMF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAibmV2ZXIiLApAQCAtODkyLDkgKzg5Miw5IEBACiAgICAgfSwKICAgICAiRFhHSV9G
T1JNQVRfQkM0X1NOT1JNIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0g
ICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlz
IiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAi
LAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICIx
MF8wIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLApAQCAtOTAzLDkgKzkwMyw5IEBACiAgICAgfSwKICAgICAiRFhHSV9GT1JN
QVRfQkM1X1RZUEVMRVNTIjoKICAgICB7Ci0gICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCi0g
ICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCi0gICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlz
IiwKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTBfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEwXzAi
LAorICAgICAgInRleHR1cmVDdWJlIjogIjEwXzAiLAogICAgICAgInNoYWRlclNhbXBsZSI6ICJu
ZXZlciIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBs
ZVJUIjogIm5ldmVyIiwKQEAgLTkxNCw5ICs5MTQsOSBAQAogICAgIH0sCiAgICAgIkRYR0lfRk9S
TUFUX0JDNV9VTk9STSI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAg
ICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIs
CisgICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwK
KyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBf
MCIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJU
IjogIm5ldmVyIiwKQEAgLTkyNSw5ICs5MjUsOSBAQAogICAgIH0sCiAgICAgIkRYR0lfRk9STUFU
X0JDNV9TTk9STSI6CiAgICAgewotICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAotICAgICAg
InRleHR1cmUzRCI6ICJhbHdheXMiLAotICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisg
ICAgICAidGV4dHVyZTJEIjogIjEwXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMF8wIiwKKyAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMF8wIiwKICAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIs
CiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjog
Im5ldmVyIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlX2F1dG9nZW4uY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdp
X3N1cHBvcnRfdGFibGVfYXV0b2dlbi5jcHAKaW5kZXggNTE2NjhhYmJlOWJlOGFjMmQxZmFjMWZk
ZmFlNWQ2YmRkMDBiMDgyMS4uNjBiYTdjZWJlMjI0NDlkNjE5YTA3MjVmNGMyZDJlMDFiMmYzYzIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1
cHBvcnRfdGFibGVfYXV0b2dlbi5jcHAKQEAgLTE2NCwzMiArMTY0LDMyIEBAIGNvbnN0IERYR0lT
dXBwb3J0ICZHZXREWEdJU3VwcG9ydF85XzMoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKICAgICAg
ICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9TTk9STToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JU
LCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM0X1RZUEVMRVNTOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQ
R0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkM0X1VOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTUlQR0VOIHwgRl9NUyB8IEZfUlQsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzVfU05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9S
VCwgMCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RT
IHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9UWVBFTEVTUzoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZf
TUlQR0VOIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01JUEdFTiB8
IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9TRjE2OgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjEx
X3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAKaW5kZXggMjlhNDU0NDU4NDc3NTliN2Rj
ZTk3ZGJkNjM1ZmMzNDcwMTM0MTgwZi4uZGM2NzI2ZThiOWUyZmQyNTg2ZTliYzlmMjRjZGJmZWZl
ZTBhNzAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFf
dXRpbHMuY3BwCkBAIC0xNTcwLDE1ICsxNTcwLDE4IEBAIHZvaWQgR2VuZXJhdGVDYXBzKElEM0Qx
MURldmljZSAqZGV2aWNlLAogICAgIC8vIGJlY29tZXMgY29yZS4gV2ViR0wgZG9lc24ndCB3YW50
IHRvIGV4cG9zZSBpdCB1bmxlc3MgdGhlcmUgaXMgbmF0aXZlIHN1cHBvcnQuCiAgICAgZXh0ZW5z
aW9ucy0+Y29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZU9FUyA9IGZhbHNlOwogCi0gICAgZXh0ZW5z
aW9ucy0+ZWxlbWVudEluZGV4VWludE9FUyAgICAgICAgID0gdHJ1ZTsKLSAgICBleHRlbnNpb25z
LT5nZXRQcm9ncmFtQmluYXJ5T0VTICAgICAgICAgPSB0cnVlOwotICAgIGV4dGVuc2lvbnMtPnJn
YjhyZ2JhOE9FUyAgICAgICAgICAgICAgICA9IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+cmVhZEZv
cm1hdEJHUkEgICAgICAgICAgICAgID0gdHJ1ZTsKLSAgICBleHRlbnNpb25zLT5waXhlbEJ1ZmZl
ck9iamVjdE5WICAgICAgICAgPSB0cnVlOwotICAgIGV4dGVuc2lvbnMtPm1hcEJ1ZmZlck9FUyAg
ICAgICAgICAgICAgICA9IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+bWFwQnVmZmVyUmFuZ2UgICAg
ICAgICAgICAgID0gdHJ1ZTsKLSAgICBleHRlbnNpb25zLT50ZXh0dXJlTlBPVE9FUyAgICAgICAg
ICAgICAgPSBHZXROUE9UVGV4dHVyZVN1cHBvcnQoZmVhdHVyZUxldmVsKTsKLSAgICBleHRlbnNp
b25zLT5kcmF3QnVmZmVycyAgICAgICAgICAgICAgICAgPSBHZXRNYXhpbXVtU2ltdWx0YW5lb3Vz
UmVuZGVyVGFyZ2V0cyhmZWF0dXJlTGV2ZWwpID4gMTsKKyAgICBleHRlbnNpb25zLT5lbGVtZW50
SW5kZXhVaW50T0VTID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5nZXRQcm9ncmFtQmluYXJ5T0VT
ID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5yZ2I4cmdiYThPRVMgICAgICAgID0gdHJ1ZTsKKyAg
ICBleHRlbnNpb25zLT5yZWFkRm9ybWF0QkdSQSAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25z
LT5waXhlbEJ1ZmZlck9iamVjdE5WID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5tYXBCdWZmZXJP
RVMgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT5tYXBCdWZmZXJSYW5nZSAgICAgID0g
dHJ1ZTsKKyAgICBleHRlbnNpb25zLT50ZXh0dXJlTlBPVE9FUyAgICAgID0gR2V0TlBPVFRleHR1
cmVTdXBwb3J0KGZlYXR1cmVMZXZlbCk7CisgICAgZXh0ZW5zaW9ucy0+ZHJhd0J1ZmZlcnMgICAg
ICAgICA9IEdldE1heGltdW1TaW11bHRhbmVvdXNSZW5kZXJUYXJnZXRzKGZlYXR1cmVMZXZlbCkg
PiAxOworICAgIGV4dGVuc2lvbnMtPmRyYXdCdWZmZXJzSW5kZXhlZEVYVCA9CisgICAgICAgIChy
ZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MSk7CisgICAgZXh0ZW5zaW9ucy0+ZHJhd0J1ZmZlcnNJbmRleGVkT0VTICAgICAgID0gZXh0ZW5z
aW9ucy0+ZHJhd0J1ZmZlcnNJbmRleGVkRVhUOwogICAgIGV4dGVuc2lvbnMtPnRleHR1cmVTdG9y
YWdlICAgICAgICAgICAgICA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5tYXhUZXh0dXJlQW5pc290cm9w
eSAgICAgICAgPSBHZXRNYXhpbXVtQW5pc290cm9weShmZWF0dXJlTGV2ZWwpOwpAQCAtMTYyMCw2
ICsxNjIzLDcgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoSUQzRDExRGV2aWNlICpkZXZpY2UsCiAgICAg
ZXh0ZW5zaW9ucy0+ZGVidWdNYXJrZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOwog
ICAgIGV4dGVuc2lvbnMtPmVnbEltYWdlT0VTICAgICAgICAgICAgICAgICAgICAgICAgID0gdHJ1
ZTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFnZUV4dGVybmFsT0VTICAgICAgICAgICAgICAgICA9
IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2VFeHRlcm5hbFdyYXBNb2Rlc0VYVCAgICAg
ICAgPSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPmVnbEltYWdlRXh0ZXJuYWxFc3NsM09FUyAgICAg
ICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5lZ2xTdHJlYW1Db25zdW1lckV4dGVybmFs
TlYgICAgICAgICA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+dW5wYWNrU3ViaW1hZ2UgICAgICAg
ICAgICAgICAgICAgICAgPSB0cnVlOwpAQCAtMjIxMyw2ICsyMjE3LDExIEBAIEJsZW5kU3RhdGVL
ZXk6OkJsZW5kU3RhdGVLZXkoKQogICAgIG1lbXNldCh0aGlzLCAwLCBzaXplb2YoQmxlbmRTdGF0
ZUtleSkpOwogfQogCitCbGVuZFN0YXRlS2V5OjpCbGVuZFN0YXRlS2V5KGNvbnN0IEJsZW5kU3Rh
dGVLZXkgJm90aGVyKQoreworICAgIG1lbWNweSh0aGlzLCAmb3RoZXIsIHNpemVvZihCbGVuZFN0
YXRlS2V5KSk7Cit9CisKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCbGVuZFN0YXRlS2V5ICZhLCBj
b25zdCBCbGVuZFN0YXRlS2V5ICZiKQogewogICAgIHJldHVybiBtZW1jbXAoJmEsICZiLCBzaXpl
b2YoQmxlbmRTdGF0ZUtleSkpID09IDA7CkBAIC0yNDQ4LDggKzI0NTcsOSBAQCB2b2lkIEluaXRp
YWxpemVGZWF0dXJlcyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywKICAg
ICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgc2VsZWN0Vmlld0luR2VvbWV0cnlT
aGFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRldmljZUNhcHMuc3VwcG9ydHNW
cFJ0SW5kZXhXcml0ZUZyb21WZXJ0ZXhTaGFkZXIpOwogCi0gICAgLy8gTmV2ZXIgY2xlYXIgZm9y
IHJvYnVzdCByZXNvdXJjZSBpbml0LiAgVGhpcyBtYXRjaGVzIENocm9tZSdzIHRleHR1cmUgY2xl
YXJuaW5nIGJlaGF2aW91ci4KLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywg
YWxsb3dDbGVhckZvclJvYnVzdFJlc291cmNlSW5pdCwgZmFsc2UpOworICAgIC8vIEludGVsIGFu
ZCBBTUQgZHJpdmVycyBoYXZlIHRyb3VibGUgY2xlYXJpbmcgdGV4dHVyZXMgd2l0aG91dCBjYXVz
aW5nIGNvcnJ1cHRpb24uIE5WaWRpYSwKKyAgICAvLyBvbiB0aGUgb3RoZXIgaGFuZCwgY2FuIGhh
bmRsZS4KKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgYWxsb3dDbGVhckZv
clJvYnVzdFJlc291cmNlSW5pdCwgaXNOdmlkaWEpOwogCiAgICAgLy8gRG9uJ3QgdHJhbnNsYXRl
IHVuaWZvcm0gYmxvY2sgdG8gU3RydWN0dXJlZEJ1ZmZlciBvbiBXaW5kb3dzIDcgYW5kIGVhcmxp
ZXIuIFRoaXMgaXMgdGFyZ2V0ZWQKICAgICAvLyB0byB3b3JrIGFyb3VuZCBhIGJ1ZyB0aGF0IGZh
aWxzIHRvIGFsbG9jYXRlIFNoYWRlclJlc291cmNlVmlldyBmb3IgU3RydWN0dXJlZEJ1ZmZlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgKaW5kZXgg
ZDRmZjkxOTljN2VjY2VlNjgwZGM1YjJmYzM3NzVmZTk2NDdjN2M1NS4uMzljZTM3OWVkZmEwNzYz
YzMwMDdiOWZhYzJmZWM2MzY0OTI3NzNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9yZW5kZXJlcjExX3V0aWxzLmgKQEAgLTE0NiwxMyArMTQ2LDE1IEBAIHN0cnVjdCBCbGVu
ZFN0YXRlS2V5IGZpbmFsCiB7CiAgICAgLy8gVGhpcyB3aWxsIHplcm8taW5pdGlhbGl6ZSB0aGUg
c3RydWN0LCBpbmNsdWRpbmcgcGFkZGluZy4KICAgICBCbGVuZFN0YXRlS2V5KCk7CisgICAgQmxl
bmRTdGF0ZUtleShjb25zdCBCbGVuZFN0YXRlS2V5ICZvdGhlcik7CiAKLSAgICBnbDo6QmxlbmRT
dGF0ZSBibGVuZFN0YXRlOwotCi0gICAgLy8gQW4gaW50IHNvIHN0cnVjdCBzaXplIHJvdW5kcyBu
aWNlbHkuCi0gICAgdWludDMyX3QgcnR2TWF4OworICAgIGdsOjpCbGVuZFN0YXRlQXJyYXkgYmxl
bmRTdGF0ZUFycmF5OwogCiAgICAgdWludDhfdCBydHZNYXNrc1tEM0QxMV9TSU1VTFRBTkVPVVNf
UkVOREVSX1RBUkdFVF9DT1VOVF07CisKKyAgICAvLyBVc2UgdHdvIDE2LWJpdCBpbnRzIHRvIHJv
dW5kIHRoZSBzdHJ1Y3QgbmljZWx5LgorICAgIHVpbnQxNl90IHJ0dk1heDsKKyAgICB1aW50MTZf
dCBzYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQmxl
bmRTdGF0ZUtleSAmYSwgY29uc3QgQmxlbmRTdGF0ZUtleSAmYik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1
cmVfZm9ybWF0X2RhdGEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uCmluZGV4IGEwODJk
YzJjYWE1OWNiOTQxMjMzZjNhZDU3YTgzYWU5NzM5NTg3YzAuLjlkYTk0YjNhY2I5OTE2ZjJkMDYw
ZjI3ODIzNzRjMTdjNDkyMmQ0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfZGF0YS5qc29u
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvdGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uCkBAIC0xNzEsNiArMTcxLDM0IEBACiAgICAg
ImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAogICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4
IgogICB9LAorICAiQkM0X1JFRF9VTk9STV9CTE9DSyI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0JDNF9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzRf
VU5PUk0iLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9y
bSIsCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQTgiCisgIH0sCisgICJCQzRfUkVEX1NO
T1JNX0JMT0NLIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkM0X1NOT1JNIiwK
KyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDNF9TTk9STSIsCisgICAgImNoYW5uZWxz
IjogInIiLAorICAgICJjb21wb25lbnRUeXBlIjogInNub3JtIiwKKyAgICAic3dpenpsZUZvcm1h
dCI6ICJHTF9SR0JBOF9TTk9STSIKKyAgfSwKKyAgIkJDNV9SR19VTk9STV9CTE9DSyI6IHsKKyAg
ICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDNV9VTk9STSIsCisgICAgInNydkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9CQzVfVU5PUk0iLAorICAgICJjaGFubmVscyI6ICJyZyIsCisgICAgImNv
bXBvbmVudFR5cGUiOiAidW5vcm0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4Igor
ICB9LAorICAiQkM1X1JHX1NOT1JNX0JMT0NLIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfQkM1X1NOT1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDNV9TTk9S
TSIsCisgICAgImNoYW5uZWxzIjogInJnIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJzbm9ybSIs
CisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQThfU05PUk0iCisgIH0sCiAgICJCUFRDX1JH
QkFfVU5PUk1fQkxPQ0siOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzdfVU5P
Uk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkM3X1VOT1JNIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxl
X2F1dG9nZW4uY3BwCmluZGV4IDdiNDNhMjU0MDBjMjViOWE0YTExZWViMjM1MmY0ZDE2NTlmMWUw
OWYuLmEzNjkxZjQwM2I4ZTY5NDA0MDAyOWE4NDdiOTEwODY4M2M5MzMyZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
dGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJs
ZV9hdXRvZ2VuLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9U
IEVESVQuCiAvLyBHZW5lcmF0ZWQgYnkgZ2VuX3RleHR1cmVfZm9ybWF0X3RhYmxlLnB5IHVzaW5n
IGRhdGEgZnJvbSB0ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24KIC8vCi0vLyBDb3B5cmlnaHQgMjAx
OSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpA
QCAtMjI0LDYgKzIyNCwzNCBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0KEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5f
UkdUQzJfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdElEOjpCQzVfUkdfVU5PUk1f
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0JDNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfQkM1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzVfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRURfUkdUQzFf
RVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1VOT1JNX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzRfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0JDNF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkM0X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkcxMV9FQUM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9S
RzExX0VBQywKQEAgLTgxMiw2ICs4NDAsMzQgQEAgY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
U0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JH
VEMyX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdElEOjpCQzVfUkdfU05PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDNV9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkM1X1NOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CQzVfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NJR05F
RF9SRURfUkdUQzFfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfU05PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDNF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkM0X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9CQzRfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9T
SUdORURfUkcxMV9FQUMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmNwcAppbmRl
eCBjOThmN2E3MjJlOGUxYTI3OTAzNzU3ODRmMWU0MWI4MWVkNTBkZTA0Li4yOWQ0MDkxYzcxZmIw
MDY5NGYzZWU2Y2UzMGYwNWEwODk4ZmYwMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9D
b250ZXh0OS5jcHAKQEAgLTEzMSwxMSArMTMxLDYgQEAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqQ29u
dGV4dDk6OmNyZWF0ZVByb2dyYW1QaXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBpcGVsaW5lU3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4
dDk6OmNyZWF0ZVBhdGhzKEdMc2l6ZWkpCi17Ci0gICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFBhdGhJ
bXBsICo+KCk7Ci19Ci0KIE1lbW9yeU9iamVjdEltcGwgKkNvbnRleHQ5OjpjcmVhdGVNZW1vcnlP
YmplY3QoKQogewogICAgIFVOUkVBQ0hBQkxFKCk7CkBAIC0zMDMsMTggKzI5OCwyMCBAQCBzdGQ6
OnN0cmluZyBDb250ZXh0OTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpOwogfQogCi12b2lkIENvbnRl
eHQ5OjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2Vy
KQorYW5nbGU6OlJlc3VsdCBDb250ZXh0OTo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5n
dGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKIHsKICAgICBtUmVuZGVyZXItPmdldEFubm90YXRvcigp
LT5zZXRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7
CiB9CiAKLXZvaWQgQ29udGV4dDk6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29u
c3QgY2hhciAqbWFya2VyKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0OTo6cHVzaEdyb3VwTWFya2Vy
KEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7CiAgICAgbVJlbmRlcmVyLT5n
ZXRBbm5vdGF0b3IoKS0+YmVnaW5FdmVudChtYXJrZXIsIG1hcmtlcik7CiAgICAgbU1hcmtlclN0
YWNrLnB1c2goc3RkOjpzdHJpbmcobWFya2VyKSk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHQ5Ojpwb3BHcm91cE1hcmtlcigpCithbmdsZTo6
UmVzdWx0IENvbnRleHQ5Ojpwb3BHcm91cE1hcmtlcigpCiB7CiAgICAgY29uc3QgY2hhciAqbWFy
a2VyID0gbnVsbHB0cjsKICAgICBpZiAoIW1NYXJrZXJTdGFjay5lbXB0eSgpKQpAQCAtMzIzLDE4
ICszMjAsMjIgQEAgdm9pZCBDb250ZXh0OTo6cG9wR3JvdXBNYXJrZXIoKQogICAgICAgICBtTWFy
a2VyU3RhY2sucG9wKCk7CiAgICAgICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmVuZEV2
ZW50KG1hcmtlcik7CiAgICAgfQorICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
IH0KIAotdm9pZCBDb250ZXh0OTo6cHVzaERlYnVnR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50
IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dDk6
OnB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKQogewogICAgIC8v
IEZhbGwgdGhyb3VnaCB0byB0aGUgRVhUX2RlYnVnX21hcmtlciBmdW5jdGlvbnMKLSAgICBwdXNo
R3JvdXBNYXJrZXIoc3RhdGljX2Nhc3Q8R0xzaXplaT4obWVzc2FnZS5zaXplKCkpLCBtZXNzYWdl
LmNfc3RyKCkpOworICAgIHJldHVybiBwdXNoR3JvdXBNYXJrZXIoc3RhdGljX2Nhc3Q8R0xzaXpl
aT4obWVzc2FnZS5zaXplKCkpLCBtZXNzYWdlLmNfc3RyKCkpOwogfQogCi12b2lkIENvbnRleHQ5
Ojpwb3BEZWJ1Z0dyb3VwKCkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dDk6OnBvcERlYnVnR3JvdXAo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIHRo
ZSBFWFRfZGVidWdfbWFya2VyIGZ1bmN0aW9ucwotICAgIHBvcEdyb3VwTWFya2VyKCk7CisgICAg
cmV0dXJuIHBvcEdyb3VwTWFya2VyKCk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dDk6OnN5
bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0NvbnRleHQ5LmgKaW5kZXggOWY3MjNhM2E0ZjI1NGU2ZGJjODI3NzliY2MzNzE4MzI3ZTAxYjEx
OC4uZjZmMzk0Zjg0ZjAxMTQxMzMwNDAyMWZhN2RjNGEyMjZhYjU5YzE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Nv
bnRleHQ5LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmgKQEAgLTYxLDkgKzYxLDYgQEAgY2xhc3MgQ29udGV4dDkg
OiBwdWJsaWMgQ29udGV4dEQzRAogICAgIC8vIFByb2dyYW0gUGlwZWxpbmUgb2JqZWN0IGNyZWF0
aW9uCiAgICAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqY3JlYXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnN0
IGdsOjpQcm9ncmFtUGlwZWxpbmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CiAKLSAgICAvLyBQYXRo
IG9iamVjdCBjcmVhdGlvbgotICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhz
KEdMc2l6ZWkpIG92ZXJyaWRlOwotCiAgICAgLy8gTWVtb3J5IG9iamVjdCBjcmVhdGlvbi4KICAg
ICBNZW1vcnlPYmplY3RJbXBsICpjcmVhdGVNZW1vcnlPYmplY3QoKSBvdmVycmlkZTsKIApAQCAt
MTU3LDEzICsxNTQsMTYgQEAgY2xhc3MgQ29udGV4dDkgOiBwdWJsaWMgQ29udGV4dEQzRAogICAg
IHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIEVYVF9kZWJ1Z19tYXJrZXIKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdy
b3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IGlu
c2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJy
aWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBj
b25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wR3JvdXBN
YXJrZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIEtIUl9kZWJ1ZwotICAgIHZvaWQgcHVzaERlYnVn
R3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2Fn
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCkgb3ZlcnJpZGU7CisgICAgYW5n
bGU6OlJlc3VsdCBwdXNoRGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgYW5n
bGU6OlJlc3VsdCBwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVy
cmlkZTsKIAogICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgogICAgIGFuZ2xlOjpS
ZXN1bHQgc3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Zy
YW1lYnVmZmVyOS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcAppbmRleCA4N2ZlNzQ0ZmY2NTFhNjM3MmYy
NTA0ZGY2OWMwMTY4MDEwMWZlMzk0Li5iNGNmMjBjM2E5OGNhODhiZDM2ZTJkNzQ5OTU3ZDQ3MTM1
NmIwMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyOTo6Y2xlYXJJbXBsKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKQogewogICAgIEFOR0xF
X1RSWShtUmVuZGVyZXItPmFwcGx5UmVuZGVyVGFyZ2V0KGNvbnRleHQsIG1SZW5kZXJUYXJnZXRD
YWNoZS5nZXRDb2xvcnMoKVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0
RGVwdGhTdGVuY2lsKHRydWUpKSk7CiAKICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgPSBj
b250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIGZsb2F0IG5lYXJaICAgICAgICAgICAgICA9IGdsU3Rh
dGUuZ2V0TmVhclBsYW5lKCk7CkBAIC03Miw3ICs3Miw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVi
dWZmZXI5OjpjbGVhckltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgbVJlbmRl
cmVyLT5zZXRTY2lzc29yUmVjdGFuZ2xlKGdsU3RhdGUuZ2V0U2Npc3NvcigpLCBnbFN0YXRlLmlz
U2Npc3NvclRlc3RFbmFibGVkKCkpOwogCiAgICAgbVJlbmRlcmVyLT5jbGVhcihjbGVhclBhcmFt
cywgbVJlbmRlclRhcmdldENhY2hlLmdldENvbG9ycygpWzBdLAotICAgICAgICAgICAgICAgICAg
ICAgbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgIG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwodHJ1ZSkpOwogICAgIHJl
dHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVy
OS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZyYW1lYnVmZmVyOS5oCmluZGV4IGQ5YzRkN2I3NWRjODAyZmJlYjE0YjYzM2RlNWM4YmVl
OTFhYzVjNmEuLjhmYmQwNzFhZDA1MTQwMDAyNWYwODM4YzExNGJiMDJlYmJiNjFlYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9GcmFtZWJ1ZmZlcjkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
Y2xhc3MgRnJhbWVidWZmZXI5IDogcHVibGljIEZyYW1lYnVmZmVyRDNECiAKICAgICBjb25zdCBS
ZW5kZXJUYXJnZXQ5ICpnZXRDYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwo
KTsKKyAgICAgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5jaWwodHJ1
ZSk7CiAgICAgfQogCiAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJl
cjkuY3BwCmluZGV4IDNkMjNhZTZjNGYxNmVkYzQzNzc2MDRkMWM4NTc1OWIwOTBlMzhhZjcuLjg0
OTliNjBlNGM0ZmI0N2M4YWViNWI2YzIzMTkxZDk4MjE3YTBjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJl
cjkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwCkBAIC0xODk4LDcgKzE4OTgsNyBAQCB2b2lkIFJlbmRl
cmVyOTo6Y2xlYXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywKIAogICAgIC8v
IENsZWFyaW5nIGluZGl2aWR1YWwgYnVmZmVycyBvdGhlciB0aGFuIGJ1ZmZlciB6ZXJvIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgUmVuZGVyZXI5IGFuZCBFUyAyLjAKICAgICBib29sIGNsZWFyQ29sb3Ig
PSBjbGVhclBhcmFtcy5jbGVhckNvbG9yWzBdOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgQXJyYXlTaXplKGNsZWFyUGFyYW1zLmNsZWFyQ29sb3IpOyBpKyspCisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjbGVhclBhcmFtcy5jbGVhckNvbG9yLnNpemUoKTsgaSsr
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNsZWFyUGFyYW1zLmNsZWFyQ29sb3JbaV0gPT0gY2xl
YXJDb2xvcik7CiAgICAgfQpAQCAtMTk0OCwxMCArMTk0OCwxMCBAQCB2b2lkIFJlbmRlcmVyOTo6
Y2xlYXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAuMGYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IGNsZWFyUGFyYW1zLmNvbG9yRi5ibHVlKSk7CiAKLSAg
ICAgICAgaWYgKChmb3JtYXRJbmZvLnJlZEJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1h
c2tSZWQpIHx8Ci0gICAgICAgICAgICAoZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYmICFjbGVh
clBhcmFtcy5jb2xvck1hc2tHcmVlbikgfHwKLSAgICAgICAgICAgIChmb3JtYXRJbmZvLmJsdWVC
aXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSkgfHwKLSAgICAgICAgICAgIChm
b3JtYXRJbmZvLmFscGhhQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhKSkK
KyAgICAgICAgaWYgKChmb3JtYXRJbmZvLnJlZEJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xv
ck1hc2tSZWRbMF0pIHx8CisgICAgICAgICAgICAoZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYm
ICFjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlblswXSkgfHwKKyAgICAgICAgICAgIChmb3JtYXRJ
bmZvLmJsdWVCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZVswXSkgfHwKKyAg
ICAgICAgICAgIChmb3JtYXRJbmZvLmFscGhhQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9y
TWFza0FscGhhWzBdKSkKICAgICAgICAgewogICAgICAgICAgICAgbmVlZE1hc2tlZENvbG9yQ2xl
YXIgPSB0cnVlOwogICAgICAgICB9CkBAIC0yMDE4LDEwICsyMDE4LDExIEBAIHZvaWQgUmVuZGVy
ZXI5OjpjbGVhcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogCiAgICAgICAg
IGlmIChjbGVhckNvbG9yKQogICAgICAgICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZSgKLSAgICAgICAgICAgICAgICBEM0RSU19DT0xPUldSSVRFRU5BQkxFLAotICAgICAg
ICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2soY2xlYXJQYXJhbXMuY29sb3JNYXNr
UmVkLCBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUsIGNsZWFyUGFyYW1z
LmNvbG9yTWFza0FscGhhKSk7CisgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19DT0xPUldSSVRFRU5BQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xfZDNkOTo6Q29udmVydENvbG9yTWFzayhjbGVhclBhcmFtcy5jb2xvck1hc2tSZWRbMF0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuWzBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5j
b2xvck1hc2tCbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYVswXSkpOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMzAyMCw3ICszMDIxLDcgQEAg
dm9pZCBSZW5kZXJlcjk6OmluaXRpYWxpemVGZWF0dXJlcyhhbmdsZTo6RmVhdHVyZXNEM0QgKmZl
YXR1cmVzKSBjb25zdAogICAgIHsKICAgICAgICAgZDNkOTo6SW5pdGlhbGl6ZUZlYXR1cmVzKGZl
YXR1cmVzKTsKICAgICB9Ci0gICAgT3ZlcnJpZGVGZWF0dXJlc1dpdGhEaXNwbGF5U3RhdGUoZmVh
dHVyZXMsIG1EaXNwbGF5LT5nZXRTdGF0ZSgpKTsKKyAgICBBcHBseUZlYXR1cmVPdmVycmlkZXMo
ZmVhdHVyZXMsIG1EaXNwbGF5LT5nZXRTdGF0ZSgpKTsKIH0KIAogRGV2aWNlSW1wbCAqUmVuZGVy
ZXI5OjpjcmVhdGVFR0xEZXZpY2UoKQpAQCAtMzE4Myw3ICszMTg0LDcgQEAgYW5nbGU6OlJlc3Vs
dCBSZW5kZXJlcjk6OmFwcGx5VGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGds
OjpTaGFkZXJUeXAKICAgICBBU1NFUlQoIXByb2dyYW1EM0QtPmlzU2FtcGxlck1hcHBpbmdEaXJ0
eSgpKTsKIAogICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSB0aGUgUHJvZ3JhbSdzIHNhbXBsZXIg
YmluZGluZ3MuCi0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJmFjdGl2
ZVRleHR1cmVzID0gZ2xTdGF0ZS5nZXRBY3RpdmVUZXh0dXJlc0NhY2hlKCk7CisgICAgY29uc3Qg
Z2w6OkFjdGl2ZVRleHR1cmVzQ2FjaGUgJmFjdGl2ZVRleHR1cmVzID0gZ2xTdGF0ZS5nZXRBY3Rp
dmVUZXh0dXJlc0NhY2hlKCk7CiAKICAgICBjb25zdCBnbDo6UmFuZ2VVSSBzYW1wbGVyUmFuZ2Ug
PSBwcm9ncmFtRDNELT5nZXRVc2VkU2FtcGxlclJhbmdlKHNoYWRlclR5cGUpOwogICAgIGZvciAo
dW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IHNhbXBsZXJSYW5nZS5sb3coKTsgc2FtcGxlcklu
ZGV4IDwgc2FtcGxlclJhbmdlLmhpZ2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9T
dGF0ZU1hbmFnZXI5LmNwcAppbmRleCA0NWZkM2I2MmFjNTU0OTFkMjI2YTAzM2I2YzBjMzYyNzFj
MDg4MTllLi5jYWQwMTFiMjVhOGUxNGRkNWYzYWFmNzA0Zjc2ODMzNTY1OWM1N2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvU3RhdGVNYW5hZ2VyOS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuY3BwCkBAIC0xOSw2ICsxOSw3
IEBAIG5hbWVzcGFjZSByeAogCiBTdGF0ZU1hbmFnZXI5OjpTdGF0ZU1hbmFnZXI5KFJlbmRlcmVy
OSAqcmVuZGVyZXI5KQogICAgIDogbVVzaW5nWmVyb0NvbG9yTWFza1dvcmthcm91bmQoZmFsc2Up
LAorICAgICAgbUN1clNhbXBsZUFscGhhVG9Db3ZlcmFnZShmYWxzZSksCiAgICAgICBtQ3VyQmxl
bmRTdGF0ZSgpLAogICAgICAgbUN1ckJsZW5kQ29sb3IoMCwgMCwgMCwgMCksCiAgICAgICBtQ3Vy
U2FtcGxlTWFzaygwKSwKQEAgLTE3NCw4ICsxNzUsNyBAQCB2b2lkIFN0YXRlTWFuYWdlcjk6OnN5
bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0
cwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2Fz
ZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfRU5BQkxFRDoK
LSAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpLnNhbXBsZUFscGhhVG9D
b3ZlcmFnZSAhPQotICAgICAgICAgICAgICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5zYW1wbGVBbHBo
YVRvQ292ZXJhZ2UpCisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmlzU2FtcGxlQWxwaGFUb0Nv
dmVyYWdlRW5hYmxlZCgpICE9IG1DdXJTYW1wbGVBbHBoYVRvQ292ZXJhZ2UpCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0FN
UExFX0FMUEhBX1RPX0NPVkVSQUdFKTsKICAgICAgICAgICAgICAgICB9CkBAIC0yMDEsNyArMjAx
LDcgQEAgdm9pZCBTdGF0ZU1hbmFnZXI5OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfRElUSEVS
X0VOQUJMRUQ6Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldEJsZW5kU3RhdGUoKS5kaXRo
ZXIgIT0gbUN1ckJsZW5kU3RhdGUuZGl0aGVyKQorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5n
ZXRSYXN0ZXJpemVyU3RhdGUoKS5kaXRoZXIgIT0gbUN1clJhc3RlclN0YXRlLmRpdGhlcikKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZ
X0JJVF9ESVRIRVIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM1NCwxNCArMzU0LDE0IEBAIHZv
aWQgU3RhdGVNYW5hZ2VyOTo6c2V0QmxlbmREZXB0aFJhc3RlclN0YXRlcyhjb25zdCBnbDo6U3Rh
dGUgJmdsU3RhdGUsIHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgc2V0QmxlbmRGdW5jc0VxdWF0
aW9ucyhibGVuZFN0YXRlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgRElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRToKLSAgICAgICAgICAgICAgICBz
ZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UoYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2Up
OworICAgICAgICAgICAgICAgIHNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShnbFN0YXRlLmlzU2Ft
cGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgRElSVFlfQklUX0NPTE9SX01BU0s6CiAgICAgICAgICAgICAgICAgc2V0
Q29sb3JNYXNrKGZyYW1lYnVmZmVyLCBibGVuZFN0YXRlLmNvbG9yTWFza1JlZCwgYmxlbmRTdGF0
ZS5jb2xvck1hc2tCbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRl
LmNvbG9yTWFza0dyZWVuLCBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhhKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRElSVFlfQklUX0RJVEhFUjoKLSAgICAgICAg
ICAgICAgICBzZXREaXRoZXIoYmxlbmRTdGF0ZS5kaXRoZXIpOworICAgICAgICAgICAgICAgIHNl
dERpdGhlcihyYXN0ZXJTdGF0ZS5kaXRoZXIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBESVJUWV9CSVRfQ1VMTF9NT0RFOgogICAgICAgICAgICAgICAgIHNldEN1
bGxNb2RlKHJhc3RlclN0YXRlLmN1bGxGYWNlLCByYXN0ZXJTdGF0ZS5jdWxsTW9kZSwgcmFzdGVy
U3RhdGUuZnJvbnRGYWNlKTsKQEAgLTY5Miw3ICs2OTIsOCBAQCB2b2lkIFN0YXRlTWFuYWdlcjk6
OnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZShib29sIGVuYWJsZWQpCiB7CiAgICAgaWYgKGVuYWJs
ZWQpCiAgICAgewotICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAvLyBEM0Q5IHN1cHBv
cnQgZm9yIGFscGhhLXRvLWNvdmVyYWdlIGlzIHZlbmRvci1zcGVjaWZpYy4KKyAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOwogICAgIH0KIH0KIApAQCAtNzYzLDcgKzc2NCw3IEBAIHZvaWQgU3RhdGVN
YW5hZ2VyOTo6c2V0QmxlbmRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHZvaWQgU3RhdGVNYW5hZ2Vy
OTo6c2V0RGl0aGVyKGJvb2wgZGl0aGVyKQogewogICAgIG1SZW5kZXJlcjktPmdldERldmljZSgp
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ESVRIRVJFTkFCTEUsIGRpdGhlciA/IFRSVUUgOiBGQUxT
RSk7Ci0gICAgbUN1ckJsZW5kU3RhdGUuZGl0aGVyID0gZGl0aGVyOworICAgIG1DdXJSYXN0ZXJT
dGF0ZS5kaXRoZXIgPSBkaXRoZXI7CiB9CiAKIC8vIFRPRE8oZGlhbngpIG9uZSBiaXQgZm9yIGNv
bG9yIG1hc2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5oCmluZGV4
IDA1YWI4YmNlM2QzOWM0NmQ0NzYwYjU2NDVlYWMxNGRiYmZiMmQ3YjkuLmIwNDdiNjljZGRlMjgw
YWVkNzlhYzYwZWQ4Y2JhNjYwMTg4YmNiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1N0YXRlTWFuYWdlcjkuaApAQCAtMTU5LDYgKzE1OSw4IEBAIGNsYXNzIFN0YXRlTWFuYWdlcjkg
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIGJvb2wgbVVzaW5nWmVyb0NvbG9yTWFz
a1dvcmthcm91bmQ7CiAKKyAgICBib29sIG1DdXJTYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisKICAg
ICAvLyBDdXJyZW50bHkgYXBwbGllZCBibGVuZCBzdGF0ZQogICAgIGdsOjpCbGVuZFN0YXRlIG1D
dXJCbGVuZFN0YXRlOwogICAgIGdsOjpDb2xvckYgbUN1ckJsZW5kQ29sb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0
aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
cml2ZXJfdXRpbHMuY3BwCmluZGV4IGU2MTVhZGU3M2MyNTEyZmU5MDk1MjIzMTA2MjllZWFhN2E3
OTA2NmQuLjEyOTg0YzI0ZjRmOTdkOTk0NzNiZDMyYWU1MTZhZDlkZTJiNTg5MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJf
dXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kcml2ZXJfdXRpbHMuY3BwCkBAIC0xNiw2ICsxNiwxMCBAQAogIyAgICBpbmNsdWRlIDxz
eXMvc3lzdGVtX3Byb3BlcnRpZXMuaD4KICNlbmRpZgogCisjaWYgZGVmaW5lZChBTkdMRV9QTEFU
Rk9STV9MSU5VWCkKKyMgICAgaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgcngKIHsKIC8vIEludGVsCkBAIC0yMDIsNCArMjA2LDUwIEBAIE9TVmVyc2lvbiBHZXRN
YWNPU1ZlcnNpb24oKQogfQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0xJ
TlVYKQorYm9vbCBQYXJzZUxpbnV4T1NWZXJzaW9uKGNvbnN0IGNoYXIgKnZlcnNpb24sIGludCAq
bWFqb3IsIGludCAqbWlub3IsIGludCAqcGF0Y2gpCit7CisgICAgZXJybm8gPSAwOyAgLy8gcmVz
ZXQgZ2xvYmFsIGVycm9yIGZsYWcuCisgICAgY2hhciAqbmV4dDsKKyAgICAqbWFqb3IgPSBzdGF0
aWNfY2FzdDxpbnQ+KHN0cnRvbCh2ZXJzaW9uLCAmbmV4dCwgMTApKTsKKyAgICBpZiAobmV4dCA9
PSBudWxscHRyIHx8ICpuZXh0ICE9ICcuJyB8fCBlcnJubyAhPSAwKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICptaW5vciA9IHN0YXRpY19jYXN0PGludD4oc3Ry
dG9sKG5leHQgKyAxLCAmbmV4dCwgMTApKTsKKyAgICBpZiAobmV4dCA9PSBudWxscHRyIHx8ICpu
ZXh0ICE9ICcuJyB8fCBlcnJubyAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgICpwYXRjaCA9IHN0YXRpY19jYXN0PGludD4oc3RydG9sKG5leHQgKyAxLCAm
bmV4dCwgMTApKTsKKyAgICBpZiAoZXJybm8gIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCitPU1ZlcnNpb24g
R2V0TGludXhPU1ZlcnNpb24oKQoreworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgp
CisgICAgc3RydWN0IHV0c25hbWUgdW5hbWVfaW5mbzsKKyAgICBpZiAodW5hbWUoJnVuYW1lX2lu
Zm8pICE9IDApCisgICAgeworICAgICAgICByZXR1cm4gT1NWZXJzaW9uKDAsIDAsIDApOworICAg
IH0KKworICAgIGludCBtYWpvclZlcnNpb24gPSAwLCBtaW5vclZlcnNpb24gPSAwLCBwYXRjaFZl
cnNpb24gPSAwOworICAgIGlmIChQYXJzZUxpbnV4T1NWZXJzaW9uKHVuYW1lX2luZm8ucmVsZWFz
ZSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbiwgJnBhdGNoVmVyc2lvbikpCisgICAgewor
ICAgICAgICByZXR1cm4gT1NWZXJzaW9uKG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCBwYXRj
aFZlcnNpb24pOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIE9TVmVyc2lvbigwLCAwLCAw
KTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmgKaW5kZXgg
YTc5MjVkMjA4ZDVmMjYxMTdhYTQzNGFmMTUxMjlmMmVmYzdjZDc1Yi4uZGE0MWViODdmYzVkMjEy
ZDU0NmNkNjQwZTE5YWNhYTllMGY0YzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuaApAQCAt
MzIsMTAgKzMyLDExIEBAIGVudW0gVmVuZG9ySUQgOiB1aW50MzJfdAogCiBlbnVtIEFuZHJvaWRE
ZXZpY2VJRCA6IHVpbnQzMl90CiB7Ci0gICAgQU5EUk9JRF9ERVZJQ0VfSURfVU5LTk9XTiAgPSAw
eDAsCi0gICAgQU5EUk9JRF9ERVZJQ0VfSURfTkVYVVM1WCAgPSAweDQwMTA4MDAsCi0gICAgQU5E
Uk9JRF9ERVZJQ0VfSURfUElYRUwxWEwgPSAweDUwNDAwMDEsCi0gICAgQU5EUk9JRF9ERVZJQ0Vf
SURfUElYRUwyICAgPSAweDUwMzAwMDQsCisgICAgQU5EUk9JRF9ERVZJQ0VfSURfVU5LTk9XTiAg
ICAgPSAweDAsCisgICAgQU5EUk9JRF9ERVZJQ0VfSURfTkVYVVM1WCAgICAgPSAweDQwMTA4MDAs
CisgICAgQU5EUk9JRF9ERVZJQ0VfSURfUElYRUwxWEwgICAgPSAweDUwNDAwMDEsCisgICAgQU5E
Uk9JRF9ERVZJQ0VfSURfUElYRUwyICAgICAgPSAweDUwMzAwMDQsCisgICAgQU5EUk9JRF9ERVZJ
Q0VfSURfU1dJRlRTSEFERVIgPSAweEMwREUsCiB9OwogCiBpbmxpbmUgYm9vbCBJc0FNRCh1aW50
MzJfdCB2ZW5kb3JJZCkKQEAgLTU4LDYgKzU5LDExIEBAIGlubGluZSBib29sIElzSW50ZWwodWlu
dDMyX3QgdmVuZG9ySWQpCiAgICAgcmV0dXJuIHZlbmRvcklkID09IFZFTkRPUl9JRF9JTlRFTDsK
IH0KIAoraW5saW5lIGJvb2wgSXNHb29nbGUodWludDMyX3QgdmVuZG9ySWQpCit7CisgICAgcmV0
dXJuIHZlbmRvcklkID09IFZFTkRPUl9JRF9HT09HTEU7Cit9CisKIGlubGluZSBib29sIElzTnZp
ZGlhKHVpbnQzMl90IHZlbmRvcklkKQogewogICAgIHJldHVybiB2ZW5kb3JJZCA9PSBWRU5ET1Jf
SURfTlZJRElBOwpAQCAtODMsNiArODksMTEgQEAgaW5saW5lIGJvb2wgSXNQaXhlbDIodWludDMy
X3QgdmVuZG9ySWQsIHVpbnQzMl90IGRldmljZUlkKQogICAgIHJldHVybiBJc1F1YWxjb21tKHZl
bmRvcklkKSAmJiBkZXZpY2VJZCA9PSBBTkRST0lEX0RFVklDRV9JRF9QSVhFTDI7CiB9CiAKK2lu
bGluZSBib29sIElzU3dpZnRzaGFkZXIodWludDMyX3QgdmVuZG9ySWQsIHVpbnQzMl90IGRldmlj
ZUlkKQoreworICAgIHJldHVybiBJc0dvb2dsZSh2ZW5kb3JJZCkgJiYgZGV2aWNlSWQgPT0gQU5E
Uk9JRF9ERVZJQ0VfSURfU1dJRlRTSEFERVI7Cit9CisKIGNvbnN0IGNoYXIgKkdldFZlbmRvclN0
cmluZyh1aW50MzJfdCB2ZW5kb3JJZCk7CiAKIC8vIEludGVsCkBAIC0xNjMsNiArMTc0LDggQEAg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IE9TVmVyc2lvbiAmYSwgY29uc3QgT1NWZXJzaW9uICZiKTsK
IAogT1NWZXJzaW9uIEdldE1hY09TVmVyc2lvbigpOwogCitPU1ZlcnNpb24gR2V0TGludXhPU1Zl
cnNpb24oKTsKKwogaW5saW5lIGJvb2wgSXNBbmRyb2lkKCkKIHsKICNpZiBkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX0FORFJPSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCmluZGV4IDFjMzY1
ZGEwZTY5NjRjYWU0YzMxZDVlNmZjNmI4YjhiNWExM2M0MzkuLjJhNWJiZGQwMTBhZDhhNTFhMzIz
ZmRkZDI4OGMwMjVhOTA4YzM3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCkBAIC0x
Nyw3ICsxNyw2IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0R0wuaCIKLSNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9Qcm9ncmFtR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFt
UGlwZWxpbmVHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaCIK
QEAgLTYzLDggKzYyLDcgQEAgU2hhZGVySW1wbCAqQ29udGV4dEdMOjpjcmVhdGVTaGFkZXIoY29u
c3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKQogCiBQcm9ncmFtSW1wbCAqQ29udGV4dEdMOjpjcmVh
dGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCiB7Ci0gICAgcmV0dXJuIG5l
dyBQcm9ncmFtR0woZGF0YSwgZ2V0RnVuY3Rpb25zKCksIGdldEZlYXR1cmVzR0woKSwgZ2V0U3Rh
dGVNYW5hZ2VyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXh0ZW5zaW9ucygpLnBh
dGhSZW5kZXJpbmcsIG1SZW5kZXJlcik7CisgICAgcmV0dXJuIG5ldyBQcm9ncmFtR0woZGF0YSwg
Z2V0RnVuY3Rpb25zKCksIGdldEZlYXR1cmVzR0woKSwgZ2V0U3RhdGVNYW5hZ2VyKCksIG1SZW5k
ZXJlcik7CiB9CiAKIEZyYW1lYnVmZmVySW1wbCAqQ29udGV4dEdMOjpjcmVhdGVGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkKQEAgLTE1NywyNiArMTU1LDYgQEAg
UHJvZ3JhbVBpcGVsaW5lSW1wbCAqQ29udGV4dEdMOjpjcmVhdGVQcm9ncmFtUGlwZWxpbmUoY29u
c3QgZ2w6OlByb2dyYW1QaXBlbGluZVMKICAgICByZXR1cm4gbmV3IFByb2dyYW1QaXBlbGluZUdM
KGRhdGEsIGdldEZ1bmN0aW9ucygpKTsKIH0KIAotc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29u
dGV4dEdMOjpjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKQotewotICAgIGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jcyA9IGdldEZ1bmN0aW9ucygpOwotCi0gICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwg
Kj4gcmV0OwotICAgIHJldC5yZXNlcnZlKHJhbmdlKTsKLQotICAgIGNvbnN0IEdMdWludCBmaXJz
dCA9IGZ1bmNzLT5nZW5QYXRoc05WKHJhbmdlKTsKLSAgICBpZiAoZmlyc3QgPT0gMCkKLSAgICAg
ICAgcmV0dXJuIHJldDsKLQotICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kp
Ci0gICAgewotICAgICAgICBjb25zdCBhdXRvIGlkID0gZmlyc3QgKyBpOwotICAgICAgICByZXQu
cHVzaF9iYWNrKG5ldyBQYXRoR0woZnVuY3MsIGlkKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJl
dDsKLX0KLQogTWVtb3J5T2JqZWN0SW1wbCAqQ29udGV4dEdMOjpjcmVhdGVNZW1vcnlPYmplY3Qo
KQogewogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMgPSBnZXRGdW5jdGlvbnMoKTsK
QEAgLTIyMCwxMyArMTk4LDEzIEBAIEFOR0xFX0lOTElORSBhbmdsZTo6UmVzdWx0IENvbnRleHRH
TDo6c2V0RHJhd0FycmF5c1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250CiB7CiAgICAgaWYg
KGNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5oYXNBbnlBY3RpdmVDbGllbnRBdHRyaWIoKSkKICAg
ICB7Ci0gICAgICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgID0gY29udGV4dC0+Z2V0U3Rh
dGUoKTsKLSAgICAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFBy
b2dyYW0oKTsKLSAgICAgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2YW8gPSBnbFN0YXRlLmdl
dFZlcnRleEFycmF5KCk7Ci0gICAgICAgIGNvbnN0IFZlcnRleEFycmF5R0wgKnZhb0dMID0gR2V0
SW1wbEFzPFZlcnRleEFycmF5R0w+KHZhbyk7CisgICAgICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xT
dGF0ZSAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7CisgICAgICAgIGNvbnN0
IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IGdldFN0YXRlKCkuZ2V0UHJvZ3Jh
bUV4ZWN1dGFibGUoKTsKKyAgICAgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAg
ICAgICAgID0gZ2xTdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOworICAgICAgICBjb25zdCBWZXJ0ZXhB
cnJheUdMICp2YW9HTCAgICAgICAgICAgICAgPSBHZXRJbXBsQXM8VmVydGV4QXJyYXlHTD4odmFv
KTsKIAotICAgICAgICBBTkdMRV9UUlkodmFvR0wtPnN5bmNDbGllbnRTaWRlRGF0YShjb250ZXh0
LCBwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCksIGZpcnN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgaW5zdGFuY2VDb3Vu
dCkpOworICAgICAgICBBTkdMRV9UUlkodmFvR0wtPnN5bmNDbGllbnRTaWRlRGF0YShjb250ZXh0
LCBleGVjdXRhYmxlLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VD
b3VudCkpOwogCiAjaWYgZGVmaW5lZChBTkdMRV9TVEFURV9WQUxJREFUSU9OX0VOQUJMRUQpCiAg
ICAgICAgIHZhb0dMLT52YWxpZGF0ZVN0YXRlKCk7CkBAIC0yNDMsMTcgKzIyMSwxNSBAQCBBTkdM
RV9JTkxJTkUgYW5nbGU6OlJlc3VsdCBDb250ZXh0R0w6OnNldERyYXdFbGVtZW50c1N0YXRlKGNv
bnN0IGdsOjpDb250ZXh0ICpjbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKipvdXRJbmRpY2VzKQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRl
eHQtPmdldFN0YXRlKCk7CisgICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlICAgICAgICAgICAg
ICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFi
bGUgKmV4ZWN1dGFibGUgPSBnZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAg
Y29uc3QgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAgICAgICAgID0gZ2xTdGF0ZS5nZXRWZXJ0
ZXhBcnJheSgpOworICAgIGNvbnN0IGdsOjpTdGF0ZUNhY2hlICZzdGF0ZUNhY2hlICAgICAgICA9
IGNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKTsKIAotICAgIGNvbnN0IGdsOjpQcm9ncmFtICpwcm9n
cmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7Ci0KLSAgICBjb25zdCBnbDo6VmVydGV4QXJyYXkg
KnZhbyA9IGdsU3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKLQotICAgIGNvbnN0IGdsOjpTdGF0ZUNh
Y2hlICZzdGF0ZUNhY2hlID0gY29udGV4dC0+Z2V0U3RhdGVDYWNoZSgpOwogICAgIGlmIChzdGF0
ZUNhY2hlLmhhc0FueUFjdGl2ZUNsaWVudEF0dHJpYigpIHx8IHZhby0+Z2V0RWxlbWVudEFycmF5
QnVmZmVyKCkgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGNvbnN0IFZlcnRleEFycmF5R0wg
KnZhb0dMID0gR2V0SW1wbEFzPFZlcnRleEFycmF5R0w+KHZhbyk7Ci0gICAgICAgIEFOR0xFX1RS
WSh2YW9HTC0+c3luY0RyYXdFbGVtZW50c1N0YXRlKGNvbnRleHQsIHByb2dyYW0tPmdldEFjdGl2
ZUF0dHJpYkxvY2F0aW9uc01hc2soKSwKKyAgICAgICAgQU5HTEVfVFJZKHZhb0dMLT5zeW5jRHJh
d0VsZW1lbnRzU3RhdGUoY29udGV4dCwgZXhlY3V0YWJsZS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRp
b25zTWFzaygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VDb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xTdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRF
bmFibGVkKCksIG91dEluZGljZXMpKTsKICAgICB9CkBAIC0zMjUsNiArMzAxLDcgQEAgYW5nbGU6
OlJlc3VsdCBDb250ZXh0R0w6OmRyYXdBcnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiBnbDo6QXR0cmlidXRlc01hc2sgQ29udGV4dEdMOjp1cGRhdGVBdHRyaWJ1dGVz
Rm9yQmFzZUluc3RhbmNlKGNvbnN0IGdsOjpQcm9ncmFtICpwcm9ncmFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YmFzZUluc3RhbmNlKQogeworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0
YWJsZSA9IGdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKICAgICBnbDo6QXR0cmli
dXRlc01hc2sgYXR0cmliVG9VcGRhdGVNYXNrOwogCiAgICAgaWYgKGJhc2VJbnN0YW5jZSAhPSAw
KQpAQCAtMzM2LDcgKzMxMyw3IEBAIGdsOjpBdHRyaWJ1dGVzTWFzayBDb250ZXh0R0w6OnVwZGF0
ZUF0dHJpYnV0ZXNGb3JCYXNlSW5zdGFuY2UoY29uc3QgZ2w6OlByb2dyYW0KICAgICAgICAgewog
ICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gYXR0cmlic1th
dHRyaWJJbmRleF07CiAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGlu
ZyAgPSBiaW5kaW5nc1thdHRyaWIuYmluZGluZ0luZGV4XTsKLSAgICAgICAgICAgIGlmIChwcm9n
cmFtLT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZlKGF0dHJpYkluZGV4KSAmJiBiaW5kaW5nLmdldERp
dmlzb3IoKSAhPSAwKQorICAgICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQXR0cmliTG9jYXRp
b25BY3RpdmUoYXR0cmliSW5kZXgpICYmIGJpbmRpbmcuZ2V0RGl2aXNvcigpICE9IDApCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgYXR0cmliVG9VcGRhdGVNYXNrLnNldChhdHRyaWJJ
bmRleCk7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCAgICAgICAgICAgICA9IHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIgKj4oYXR0cmliLnBvaW50ZXIpOwpAQCAtNjY1LDEwMCArNjQyLDYg
QEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0R0w6OmRyYXdFbGVtZW50c0luZGlyZWN0KGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
IH0KIAotdm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0
aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKLXsKLSAgICBtUmVuZGVyZXItPnN0ZW5j
aWxGaWxsUGF0aChtU3RhdGUsIHBhdGgsIGZpbGxNb2RlLCBtYXNrKTsKLX0KLQotdm9pZCBDb250
ZXh0R0w6OnN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGludCByZWZl
cmVuY2UsIEdMdWludCBtYXNrKQotewotICAgIG1SZW5kZXJlci0+c3RlbmNpbFN0cm9rZVBhdGgo
bVN0YXRlLCBwYXRoLCByZWZlcmVuY2UsIG1hc2spOwotfQotCi12b2lkIENvbnRleHRHTDo6Y292
ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAg
ICBtUmVuZGVyZXItPmNvdmVyRmlsbFBhdGgobVN0YXRlLCBwYXRoLCBjb3Zlck1vZGUpOwotfQot
Ci12b2lkIENvbnRleHRHTDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBH
TGVudW0gY292ZXJNb2RlKQotewotICAgIG1SZW5kZXJlci0+Y292ZXJTdHJva2VQYXRoKG1TdGF0
ZSwgcGF0aCwgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxUaGVuQ292
ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICBtUmVuZGVyZXItPnN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChtU3RhdGUsIHBhdGgsIGZpbGxNb2RlLCBtYXNrLCBjb3Zl
ck1vZGUpOwotfQotCi12b2lkIENvbnRleHRHTDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgo
Y29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgbVJlbmRlcmVyLT5zdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aChtU3RhdGUsIHBhdGgsIHJlZmVyZW5jZSwgbWFzaywgY292ZXJN
b2RlKTsKLX0KLQotdm9pZCBDb250ZXh0R0w6OmNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qg
c3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewot
ICAgIG1SZW5kZXJlci0+Y292ZXJGaWxsUGF0aEluc3RhbmNlZChtU3RhdGUsIHBhdGhzLCBjb3Zl
ck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgQ29udGV4
dEdMOjpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGgg
Kj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIG1SZW5kZXJlci0+
Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKG1TdGF0ZSwgcGF0aHMsIGNvdmVyTW9kZSwgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxG
aWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgbVJlbmRlcmVyLT5zdGVuY2lsRmlsbFBhdGhJ
bnN0YW5jZWQobVN0YXRlLCBwYXRocywgZmlsbE1vZGUsIG1hc2ssIHRyYW5zZm9ybVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsK
LX0KLQotdm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0
ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKQotewotICAgIG1SZW5kZXJlci0+c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQobVN0YXRl
LCBwYXRocywgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBD
b250ZXh0R0w6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZl
Y3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgbVJlbmRlcmVy
LT5zdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQobVN0YXRlLCBwYXRocywgY292ZXJN
b2RlLCBmaWxsTW9kZSwgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lk
IENvbnRleHRHTDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsK
LSAgICBtUmVuZGVyZXItPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKG1TdGF0
ZSwgcGF0aHMsIGNvdmVyTW9kZSwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3Jt
VmFsdWVzKTsKLX0KLQogZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXMgQ29udGV4dEdMOjpnZXRSZXNl
dFN0YXR1cygpCiB7CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0UmVzZXRTdGF0dXMoKTsKQEAg
LTc3NCwyOSArNjU3LDM3IEBAIHN0ZDo6c3RyaW5nIENvbnRleHRHTDo6Z2V0UmVuZGVyZXJEZXNj
cmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJEZXNjcmlw
dGlvbigpOwogfQogCi12b2lkIENvbnRleHRHTDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjppbnNl
cnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQogewogICAg
IG1SZW5kZXJlci0+aW5zZXJ0RXZlbnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOworICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBDb250ZXh0R0w6OnB1c2hHcm91
cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQorYW5nbGU6OlJlc3Vs
dCBDb250ZXh0R0w6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
bWFya2VyKQogewogICAgIG1SZW5kZXJlci0+cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgbWFya2Vy
KTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgQ29udGV4
dEdMOjpwb3BHcm91cE1hcmtlcigpCithbmdsZTo6UmVzdWx0IENvbnRleHRHTDo6cG9wR3JvdXBN
YXJrZXIoKQogewogICAgIG1SZW5kZXJlci0+cG9wR3JvdXBNYXJrZXIoKTsKKyAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgQ29udGV4dEdMOjpwdXNoRGVidWdH
cm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdl
KQorYW5nbGU6OlJlc3VsdCBDb250ZXh0R0w6OnB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZtZXNzYWdlKQogewogICAgIG1SZW5kZXJlci0+cHVzaERlYnVnR3JvdXAoc291
cmNlLCBpZCwgbWVzc2FnZSk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
fQogCi12b2lkIENvbnRleHRHTDo6cG9wRGVidWdHcm91cCgpCithbmdsZTo6UmVzdWx0IENvbnRl
eHRHTDo6cG9wRGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKICAgICBt
UmVuZGVyZXItPnBvcERlYnVnR3JvdXAoKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dEdMOjpzeW5jU3RhdGUoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCkBAIC05MTEsNSArODAyLDQgQEAgdm9pZCBDb250ZXh0R0w6OmZs
dXNoSWZOZWNlc3NhcnlCZWZvcmVEZWxldGVUZXh0dXJlcygpCiAgICAgbVJlbmRlcmVyLT5mbHVz
aElmTmVjZXNzYXJ5QmVmb3JlRGVsZXRlVGV4dHVyZXMoKTsKIH0KIAotCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9Db250ZXh0R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaAppbmRleCAyNjQ1YmUwNTIwYmExNTNhOWJmOWRi
YTY0MDg2ZTg0YTU3MmM2YmI1Li5iMTRhNGMxZDk2NDJiNmY3MzVjYmI4ODEwYzY3MWE0ZTk3YmEz
ODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oCkBAIC03Niw5ICs3Niw2IEBAIGNsYXNzIENv
bnRleHRHTCA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIC8vIFByb2dyYW0gUGlwZWxpbmUgb2Jq
ZWN0IGNyZWF0aW9uCiAgICAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqY3JlYXRlUHJvZ3JhbVBpcGVs
aW5lKGNvbnN0IGdsOjpQcm9ncmFtUGlwZWxpbmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CiAKLSAg
ICAvLyBQYXRoIG9iamVjdCBjcmVhdGlvbgotICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNy
ZWF0ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpIG92ZXJyaWRlOwotCiAgICAgLy8gTWVtb3J5IG9iamVj
dCBjcmVhdGlvbi4KICAgICBNZW1vcnlPYmplY3RJbXBsICpjcmVhdGVNZW1vcnlPYmplY3QoKSBv
dmVycmlkZTsKIApAQCAtMTY0LDUwICsxNjEsNiBAQCBjbGFzcyBDb250ZXh0R0wgOiBwdWJsaWMg
Q29udGV4dEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpE
cmF3RWxlbWVudHNUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICppbmRpcmVjdCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBDSFJPTUlVTV9w
YXRoX3JlbmRlcmluZyBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgc3RlbmNpbEZpbGxQYXRoKGNv
bnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGlu
dCByZWZlcmVuY2UsIEdMdWludCBtYXNrKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvdmVyRmlsbFBh
dGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwotICAg
IHZvaWQgY292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292ZXJN
b2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBn
bDo6UGF0aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0
aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVy
ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRy
YW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rv
cjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aElu
c3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6
OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKLQogICAgIC8vIERl
dmljZSBsb3NzCiAgICAgZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXMgZ2V0UmVzZXRTdGF0dXMoKSBv
dmVycmlkZTsKIApAQCAtMjE2LDEzICsxNjksMTYgQEAgY2xhc3MgQ29udGV4dEdMIDogcHVibGlj
IENvbnRleHRJbXBsCiAgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRVhUX2RlYnVnX21hcmtlcgotICAgIHZvaWQgaW5zZXJ0
RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOworICAg
IGFuZ2xlOjpSZXN1bHQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNo
YXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBwdXNoR3JvdXBNYXJrZXIo
R0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJpZGU7CisgICAgYW5nbGU6
OlJlc3VsdCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gS0hSX2RlYnVnCi0g
ICAgdm9pZCBwdXNoRGVidWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0IHN0
ZDo6c3RyaW5nICZtZXNzYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcERlYnVnR3JvdXAoKSBv
dmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSBv
dmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHBvcERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQpIG92ZXJyaWRlOwogCiAgICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJp
dHMuCiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BhdGNoVGFibGVHTF9hdXRvZ2VuLmNw
cAppbmRleCBmNzcwMWY3NzA1MjMwODMzNzQ0Yzk4NTI4OTI0NjM0M2EzNzkxNzllLi5lZjQ0MDU0
NjhjODZjZGE1NmY0ZmUwYjBjYzFjNGRmOTRmYWY5ODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGF0Y2hUYWJsZUdMX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9EaXNwYXRjaFRhYmxlR0xfYXV0b2dlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvLyBH
RU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2ds
X2Rpc3BhdGNoX3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSBnbF9iaW5kaW5nc19kYXRhLmpzb24g
YW5kIGdsLnhtbC4KIC8vCi0vLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjM0MSw2ICsyMzQxLDcgQEAgdm9p
ZCBEaXNwYXRjaFRhYmxlR0w6OmluaXRQcm9jc0dMRVMoY29uc3QgZ2w6OlZlcnNpb24gJnZlcnNp
b24sCiAgICAgICAgIEFTU0lHTigiZ2xEZWxldGVRdWVyaWVzRVhUIiwgZGVsZXRlUXVlcmllcyk7
CiAgICAgICAgIEFTU0lHTigiZ2xFbmRRdWVyeUVYVCIsIGVuZFF1ZXJ5KTsKICAgICAgICAgQVNT
SUdOKCJnbEdlblF1ZXJpZXNFWFQiLCBnZW5RdWVyaWVzKTsKKyAgICAgICAgQVNTSUdOKCJnbEdl
dEludGVnZXI2NHZFWFQiLCBnZXRJbnRlZ2VyNjR2KTsKICAgICAgICAgQVNTSUdOKCJnbEdldFF1
ZXJ5T2JqZWN0aTY0dkVYVCIsIGdldFF1ZXJ5T2JqZWN0aTY0dik7CiAgICAgICAgIEFTU0lHTigi
Z2xHZXRRdWVyeU9iamVjdGl2RVhUIiwgZ2V0UXVlcnlPYmplY3Rpdik7CiAgICAgICAgIEFTU0lH
TigiZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUIiwgZ2V0UXVlcnlPYmplY3R1aTY0dik7CkBAIC0y
Nzg2LDMzICsyNzg3LDYgQEAgdm9pZCBEaXNwYXRjaFRhYmxlR0w6OmluaXRQcm9jc1NoYXJlZEV4
dGVuc2lvbnMoY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ICZleHQKICAgICAgICAgQVNTSUdO
KCJnbEdldEludGVybmFsZm9ybWF0U2FtcGxlaXZOViIsIGdldEludGVybmFsZm9ybWF0U2FtcGxl
aXZOVik7CiAgICAgfQogCi0gICAgaWYgKGV4dGVuc2lvbnMuY291bnQoIkdMX05WX3BhdGhfcmVu
ZGVyaW5nIikgIT0gMCkKLSAgICB7Ci0gICAgICAgIEFTU0lHTigiZ2xDb3ZlckZpbGxQYXRoSW5z
dGFuY2VkTlYiLCBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYpOwotICAgICAgICBBU1NJR04oImds
Q292ZXJGaWxsUGF0aE5WIiwgY292ZXJGaWxsUGF0aE5WKTsKLSAgICAgICAgQVNTSUdOKCJnbENv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WIiwgY292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYpOwot
ICAgICAgICBBU1NJR04oImdsQ292ZXJTdHJva2VQYXRoTlYiLCBjb3ZlclN0cm9rZVBhdGhOVik7
Ci0gICAgICAgIEFTU0lHTigiZ2xEZWxldGVQYXRoc05WIiwgZGVsZXRlUGF0aHNOVik7Ci0gICAg
ICAgIEFTU0lHTigiZ2xHZW5QYXRoc05WIiwgZ2VuUGF0aHNOVik7Ci0gICAgICAgIEFTU0lHTigi
Z2xHZXRQYXRoUGFyYW1ldGVyZnZOViIsIGdldFBhdGhQYXJhbWV0ZXJmdk5WKTsKLSAgICAgICAg
QVNTSUdOKCJnbEdldFBhdGhQYXJhbWV0ZXJpdk5WIiwgZ2V0UGF0aFBhcmFtZXRlcml2TlYpOwot
ICAgICAgICBBU1NJR04oImdsSXNQYXRoTlYiLCBpc1BhdGhOVik7Ci0gICAgICAgIEFTU0lHTigi
Z2xNYXRyaXhMb2FkZkVYVCIsIG1hdHJpeExvYWRmRVhUKTsKLSAgICAgICAgQVNTSUdOKCJnbFBh
dGhDb21tYW5kc05WIiwgcGF0aENvbW1hbmRzTlYpOwotICAgICAgICBBU1NJR04oImdsUGF0aFBh
cmFtZXRlcmZOViIsIHBhdGhQYXJhbWV0ZXJmTlYpOwotICAgICAgICBBU1NJR04oImdsUGF0aFBh
cmFtZXRlcmlOViIsIHBhdGhQYXJhbWV0ZXJpTlYpOwotICAgICAgICBBU1NJR04oImdsUGF0aFN0
ZW5jaWxGdW5jTlYiLCBwYXRoU3RlbmNpbEZ1bmNOVik7Ci0gICAgICAgIEFTU0lHTigiZ2xQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5OViIsIHByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5W
KTsKLSAgICAgICAgQVNTSUdOKCJnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZE5WIiwgc3RlbmNp
bEZpbGxQYXRoSW5zdGFuY2VkTlYpOwotICAgICAgICBBU1NJR04oImdsU3RlbmNpbEZpbGxQYXRo
TlYiLCBzdGVuY2lsRmlsbFBhdGhOVik7Ci0gICAgICAgIEFTU0lHTigiZ2xTdGVuY2lsU3Ryb2tl
UGF0aEluc3RhbmNlZE5WIiwgc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROVik7Ci0gICAgICAg
IEFTU0lHTigiZ2xTdGVuY2lsU3Ryb2tlUGF0aE5WIiwgc3RlbmNpbFN0cm9rZVBhdGhOVik7Ci0g
ICAgICAgIEFTU0lHTigiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROViIsIHN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WKTsKLSAgICAgICAgQVNTSUdOKCJnbFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aE5WIiwgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlYpOwot
ICAgICAgICBBU1NJR04oImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROViIs
IHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYpOwotICAgICAgICBBU1NJR04o
ImdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhOViIsIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQ
YXRoTlYpOwotICAgIH0KLQogICAgIGlmIChleHRlbnNpb25zLmNvdW50KCJHTF9PVlJfbXVsdGl2
aWV3IikgIT0gMCkKICAgICB7CiAgICAgICAgIEFTU0lHTigiZ2xGcmFtZWJ1ZmZlclRleHR1cmVN
dWx0aXZpZXdPVlIiLCBmcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIpOwpAQCAtNTEzMiw2
ICs1MTA2LDcgQEAgdm9pZCBEaXNwYXRjaFRhYmxlR0w6OmluaXRQcm9jc0dMRVNOVUxMKGNvbnN0
IGdsOjpWZXJzaW9uICZ2ZXJzaW9uLAogICAgICAgICBkZWxldGVRdWVyaWVzICAgICAgID0gJmds
RGVsZXRlUXVlcmllc05VTEw7CiAgICAgICAgIGVuZFF1ZXJ5ICAgICAgICAgICAgPSAmZ2xFbmRR
dWVyeU5VTEw7CiAgICAgICAgIGdlblF1ZXJpZXMgICAgICAgICAgPSAmZ2xHZW5RdWVyaWVzTlVM
TDsKKyAgICAgICAgZ2V0SW50ZWdlcjY0diAgICAgICA9ICZnbEdldEludGVnZXI2NHZOVUxMOwog
ICAgICAgICBnZXRRdWVyeU9iamVjdGk2NHYgID0gJmdsR2V0UXVlcnlPYmplY3RpNjR2TlVMTDsK
ICAgICAgICAgZ2V0UXVlcnlPYmplY3RpdiAgICA9ICZnbEdldFF1ZXJ5T2JqZWN0aXZOVUxMOwog
ICAgICAgICBnZXRRdWVyeU9iamVjdHVpNjR2ID0gJmdsR2V0UXVlcnlPYmplY3R1aTY0dk5VTEw7
CkBAIC01NTc3LDMzICs1NTUyLDYgQEAgdm9pZCBEaXNwYXRjaFRhYmxlR0w6OmluaXRQcm9jc1No
YXJlZEV4dGVuc2lvbnNOVUxMKGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPgogICAgICAgICBn
ZXRJbnRlcm5hbGZvcm1hdFNhbXBsZWl2TlYgPSAmZ2xHZXRJbnRlcm5hbGZvcm1hdFNhbXBsZWl2
TlZOVUxMOwogICAgIH0KIAotICAgIGlmIChleHRlbnNpb25zLmNvdW50KCJHTF9OVl9wYXRoX3Jl
bmRlcmluZyIpICE9IDApCi0gICAgewotICAgICAgICBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlYg
ICAgICAgICAgICAgID0gJmdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WTlVMTDsKLSAgICAgICAg
Y292ZXJGaWxsUGF0aE5WICAgICAgICAgICAgICAgICAgICAgICA9ICZnbENvdmVyRmlsbFBhdGhO
Vk5VTEw7Ci0gICAgICAgIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WICAgICAgICAgICAgPSAm
Z2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVk5VTEw7Ci0gICAgICAgIGNvdmVyU3Ryb2tlUGF0
aE5WICAgICAgICAgICAgICAgICAgICAgPSAmZ2xDb3ZlclN0cm9rZVBhdGhOVk5VTEw7Ci0gICAg
ICAgIGRlbGV0ZVBhdGhzTlYgICAgICAgICAgICAgICAgICAgICAgICAgPSAmZ2xEZWxldGVQYXRo
c05WTlVMTDsKLSAgICAgICAgZ2VuUGF0aHNOViAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
ICZnbEdlblBhdGhzTlZOVUxMOwotICAgICAgICBnZXRQYXRoUGFyYW1ldGVyZnZOViAgICAgICAg
ICAgICAgICAgID0gJmdsR2V0UGF0aFBhcmFtZXRlcmZ2TlZOVUxMOwotICAgICAgICBnZXRQYXRo
UGFyYW1ldGVyaXZOViAgICAgICAgICAgICAgICAgID0gJmdsR2V0UGF0aFBhcmFtZXRlcml2TlZO
VUxMOwotICAgICAgICBpc1BhdGhOViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJmds
SXNQYXRoTlZOVUxMOwotICAgICAgICBtYXRyaXhMb2FkZkVYVCAgICAgICAgICAgICAgICAgICAg
ICAgID0gJmdsTWF0cml4TG9hZGZFWFROVUxMOwotICAgICAgICBwYXRoQ29tbWFuZHNOViAgICAg
ICAgICAgICAgICAgICAgICAgID0gJmdsUGF0aENvbW1hbmRzTlZOVUxMOwotICAgICAgICBwYXRo
UGFyYW1ldGVyZk5WICAgICAgICAgICAgICAgICAgICAgID0gJmdsUGF0aFBhcmFtZXRlcmZOVk5V
TEw7Ci0gICAgICAgIHBhdGhQYXJhbWV0ZXJpTlYgICAgICAgICAgICAgICAgICAgICAgPSAmZ2xQ
YXRoUGFyYW1ldGVyaU5WTlVMTDsKLSAgICAgICAgcGF0aFN0ZW5jaWxGdW5jTlYgICAgICAgICAg
ICAgICAgICAgICA9ICZnbFBhdGhTdGVuY2lsRnVuY05WTlVMTDsKLSAgICAgICAgcHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuTlYgICAgICAgICA9ICZnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbk5WTlVMTDsKLSAgICAgICAgc3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlYgICAgICAgICAg
ICA9ICZnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZE5WTlVMTDsKLSAgICAgICAgc3RlbmNpbEZp
bGxQYXRoTlYgICAgICAgICAgICAgICAgICAgICA9ICZnbFN0ZW5jaWxGaWxsUGF0aE5WTlVMTDsK
LSAgICAgICAgc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViAgICAgICAgICA9ICZnbFN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkTlZOVUxMOwotICAgICAgICBzdGVuY2lsU3Ryb2tlUGF0aE5W
ICAgICAgICAgICAgICAgICAgID0gJmdsU3RlbmNpbFN0cm9rZVBhdGhOVk5VTEw7Ci0gICAgICAg
IHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WICAgPSAmZ2xTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWROVk5VTEw7Ci0gICAgICAgIHN0ZW5jaWxUaGVuQ292ZXJGaWxs
UGF0aE5WICAgICAgICAgICAgPSAmZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhOVk5VTEw7Ci0g
ICAgICAgIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYgPSAmZ2xTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WTlVMTDsKLSAgICAgICAgc3RlbmNpbFRoZW5D
b3ZlclN0cm9rZVBhdGhOViAgICAgICAgICA9ICZnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
TlZOVUxMOwotICAgIH0KLQogICAgIGlmIChleHRlbnNpb25zLmNvdW50KCJHTF9PVlJfbXVsdGl2
aWV3IikgIT0gMCkKICAgICB7CiAgICAgICAgIGZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09W
UiA9ICZnbEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUk5VTEw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGF0Y2hU
YWJsZUdMX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9EaXNwYXRjaFRhYmxlR0xfYXV0b2dlbi5oCmluZGV4IDhmNjU3N2YyMWRiOWJl
NGI0NWVlNDk0ODI1ZTc5YmMyZmY5NTNiMGEuLjQ0NTFlOWM4MWQyZmFlYmVlYWQyZjMwNGFlN2Zj
MjIwZjQ1Y2ViMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9EaXNwYXRjaFRhYmxlR0xfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwYXRjaFRhYmxlR0xf
YXV0b2dlbi5oCkBAIC0xLDcgKzEsNyBAQAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJ
VC4KIC8vIEdlbmVyYXRlZCBieSBnZW5lcmF0ZV9nbF9kaXNwYXRjaF90YWJsZS5weSB1c2luZyBk
YXRhIGZyb20gZ2xfYmluZGluZ3NfZGF0YS5qc29uIGFuZCBnbC54bWwuCiAvLwotLy8gQ29weXJp
Z2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgogLy8KQEAgLTc5NSwzMSArNzk1LDYgQEAgY2xhc3MgRGlzcGF0Y2hUYWJsZUdMIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAKICAgICAvLyBHTF9PVlJfbXVsdGl2aWV3MgogICAgIFBGTkdMRlJBTUVC
VUZGRVJURVhUVVJFTVVMVElWSUVXT1ZSUFJPQyBmcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdP
VlIgPSBudWxscHRyOwotCi0gICAgLy8gTlZfcGF0aF9yZW5kZXJpbmcgKG9yaWdpbmFsbHkgd3Jp
dHRlbiBhZ2FpbnN0IDMuMiBjb21wYXRpYmlsaXR5IHByb2ZpbGUpCi0gICAgUEZOR0xDT1ZFUkZJ
TExQQVRISU5TVEFOQ0VETlZQUk9DIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWROViA9IG51bGxwdHI7
Ci0gICAgUEZOR0xDT1ZFUkZJTExQQVRITlZQUk9DIGNvdmVyRmlsbFBhdGhOViA9IG51bGxwdHI7
Ci0gICAgUEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRUROVlBST0MgY292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkTlYgPSBudWxscHRyOwotICAgIFBGTkdMQ09WRVJTVFJPS0VQQVRITlZQUk9DIGNv
dmVyU3Ryb2tlUGF0aE5WID0gbnVsbHB0cjsKLSAgICBQRk5HTERFTEVURVBBVEhTTlZQUk9DIGRl
bGV0ZVBhdGhzTlYgPSBudWxscHRyOwotICAgIFBGTkdMR0VOUEFUSFNOVlBST0MgZ2VuUGF0aHNO
ViA9IG51bGxwdHI7Ci0gICAgUEZOR0xHRVRQQVRIUEFSQU1FVEVSRlZOVlBST0MgZ2V0UGF0aFBh
cmFtZXRlcmZ2TlYgPSBudWxscHRyOwotICAgIFBGTkdMR0VUUEFUSFBBUkFNRVRFUklWTlZQUk9D
IGdldFBhdGhQYXJhbWV0ZXJpdk5WID0gbnVsbHB0cjsKLSAgICBQRk5HTElTUEFUSE5WUFJPQyBp
c1BhdGhOViA9IG51bGxwdHI7Ci0gICAgUEZOR0xNQVRSSVhMT0FERkVYVFBST0MgbWF0cml4TG9h
ZGZFWFQgPSBudWxscHRyOwotICAgIFBGTkdMUEFUSENPTU1BTkRTTlZQUk9DIHBhdGhDb21tYW5k
c05WID0gbnVsbHB0cjsKLSAgICBQRk5HTFBBVEhQQVJBTUVURVJGTlZQUk9DIHBhdGhQYXJhbWV0
ZXJmTlYgPSBudWxscHRyOwotICAgIFBGTkdMUEFUSFBBUkFNRVRFUklOVlBST0MgcGF0aFBhcmFt
ZXRlcmlOViA9IG51bGxwdHI7Ci0gICAgUEZOR0xQQVRIU1RFTkNJTEZVTkNOVlBST0MgcGF0aFN0
ZW5jaWxGdW5jTlYgPSBudWxscHRyOwotICAgIFBGTkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVU
R0VOTlZQUk9DIHByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5WID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTFNURU5DSUxGSUxMUEFUSElOU1RBTkNFRE5WUFJPQyBzdGVuY2lsRmlsbFBhdGhJbnN0YW5j
ZWROViA9IG51bGxwdHI7Ci0gICAgUEZOR0xTVEVOQ0lMRklMTFBBVEhOVlBST0Mgc3RlbmNpbEZp
bGxQYXRoTlYgPSBudWxscHRyOwotICAgIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhJTlNUQU5DRURO
VlBST0Mgc3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViA9IG51bGxwdHI7Ci0gICAgUEZOR0xT
VEVOQ0lMU1RST0tFUEFUSE5WUFJPQyBzdGVuY2lsU3Ryb2tlUGF0aE5WID0gbnVsbHB0cjsKLSAg
ICBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRE5WUFJPQyBzdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROViA9IG51bGxwdHI7Ci0gICAgUEZOR0xTVEVOQ0lMVEhF
TkNPVkVSRklMTFBBVEhOVlBST0Mgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlYgPSBudWxscHRy
OwotICAgIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRUROVlBST0Mgc3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROViA9IG51bGxwdHI7Ci0gICAgUEZOR0xT
VEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSE5WUFJPQyBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0
aE5WID0gbnVsbHB0cjsKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAogICAgIERpc3BhdGNoVGFi
bGVHTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmplY3RHTC5jcHAKaW5kZXggMTI4ZDYy
MmNkNDdiMWQyMGNlMWI0N2E3ZDE4MTNiZTBkZjE3MjNmOS4uNzgwNzg2MDVlMGNmZTJiYzQzMzBk
YTE0ZTY0MjNhMjNmODFjODFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0R0wu
Y3BwCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9y
eU9iamVjdEdMLmgiCiAKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL0NvbnRleHRHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9u
c0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5o
IgpAQCAtMjksMTYgKzMwLDM2IEBAIHZvaWQgTWVtb3J5T2JqZWN0R0w6Om9uRGVzdHJveShjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICBtTWVtb3J5T2JqZWN0ID0gMDsKIH0KIAorYW5n
bGU6OlJlc3VsdCBNZW1vcnlPYmplY3RHTDo6c2V0RGVkaWNhdGVkTWVtb3J5KGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LCBib29sIGRlZGljYXRlZE1lbW9yeSkKK3sKKyAgICBjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zID0gR2V0RnVuY3Rpb25zR0woY29udGV4dCk7CisKKyAgICBHTGlu
dCBwYXJhbXMgPSBnbDo6Q29udmVydFRvR0xCb29sZWFuKGRlZGljYXRlZE1lbW9yeSk7CisgICAg
QU5HTEVfR0xfVFJZKGNvbnRleHQsIGZ1bmN0aW9ucy0+bWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZF
WFQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWVtb3J5T2JqZWN0LCBHTF9ERURJ
Q0FURURfTUVNT1JZX09CSkVDVF9FWFQsICZwYXJhbXMpKTsKKyAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7Cit9CisKIGFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0R0w6OmltcG9y
dEZkKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50NjQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBmZCkKIHsKICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVu
Y3Rpb25zID0gR2V0RnVuY3Rpb25zR0woY29udGV4dCk7Ci0gICAgZnVuY3Rpb25zLT5pbXBvcnRN
ZW1vcnlGZEVYVChtTWVtb3J5T2JqZWN0LCBzaXplLCBUb0dMZW51bShoYW5kbGVUeXBlKSwgZmQp
OworICAgIEFOR0xFX0dMX1RSWShjb250ZXh0LAorICAgICAgICAgICAgICAgICBmdW5jdGlvbnMt
PmltcG9ydE1lbW9yeUZkRVhUKG1NZW1vcnlPYmplY3QsIHNpemUsIFRvR0xlbnVtKGhhbmRsZVR5
cGUpLCBmZCkpOwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAorYW5n
bGU6OlJlc3VsdCBNZW1vcnlPYmplY3RHTDo6aW1wb3J0WmlyY29uSGFuZGxlKGdsOjpDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7Cit9CisKIEdMdWlu
dCBNZW1vcnlPYmplY3RHTDo6Z2V0TWVtb3J5T2JqZWN0SUQoKSBjb25zdAogewogICAgIHJldHVy
biBtTWVtb3J5T2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL01lbW9yeU9iamVjdEdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0R0wuaAppbmRleCBk
ZWEwZDI4ZjgzMDkzZDMyZTRlZjZlMzkxZjExYzhjMTVkZGJjMDM1Li41YzM2NDc4MDllMmY0OTFj
YWYzYTNjZDAwZDkwNmI1NzkwMmEwMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0R0wuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0
R0wuaApAQCAtMjEsMTEgKzIxLDE4IEBAIGNsYXNzIE1lbW9yeU9iamVjdEdMIDogcHVibGljIE1l
bW9yeU9iamVjdEltcGwKIAogICAgIHZvaWQgb25EZXN0cm95KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KSBvdmVycmlkZTsKIAorICAgIGFuZ2xlOjpSZXN1bHQgc2V0RGVkaWNhdGVkTWVtb3J5
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBib29sIGRlZGljYXRlZE1lbW9yeSkgb3ZlcnJp
ZGU7CisKICAgICBhbmdsZTo6UmVzdWx0IGltcG9ydEZkKGdsOjpDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmZCkgb3ZlcnJpZGU7CiAKKyAgICBhbmdsZTo6UmVzdWx0IGltcG9y
dFppcmNvbkhhbmRsZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkgb3ZlcnJpZGU7CisKICAgICBHTHVp
bnQgZ2V0TWVtb3J5T2JqZWN0SUQoKSBjb25zdDsKIAogICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL09XTkVSUyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9PV05FUlMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjIyMGE3YTg5MGIwMjA4ZjkxYzFjMjU2ZjJkMWZlNzk2MGE1MzdhYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9PV05FUlMKQEAgLTAsMCArMSwyIEBACitnZW9mZmxhbmdAY2hyb21pdW0ub3JnCitq
b25haHJAZ29vZ2xlLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzIwMzQzNzA0MDA1MTNlZWZiZGMxMmM5YjMyYTQyZTUxYWUzMjAwNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBhdGhHTC5jcHA6IEltcGxlbWVu
dGF0aW9uIGZvciBQYXRoR0wgY2xhc3MuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9QYXRoR0wuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5o
IgotCi1uYW1lc3BhY2UgcngKLXsKLVBhdGhHTDo6UGF0aEdMKGNvbnN0IEZ1bmN0aW9uc0dMICpm
dW5jdGlvbnMsIEdMdWludCBwYXRoKSA6IG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwgbVBhdGhJRChw
YXRoKSB7fQotCi1QYXRoR0w6On5QYXRoR0woKSB7fQotCi1hbmdsZTo6UmVzdWx0IFBhdGhHTDo6
c2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmNvb3JkcykKLXsKLSAgICBtRnVuY3Rpb25zLT5wYXRoQ29tbWFu
ZHNOVihtUGF0aElELCBudW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRUeXBl
LCBjb29yZHMpOwotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotdm9p
ZCBQYXRoR0w6OnNldFBhdGhQYXJhbWV0ZXIoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQot
ewotICAgIG1GdW5jdGlvbnMtPnBhdGhQYXJhbWV0ZXJmTlYobVBhdGhJRCwgcG5hbWUsIHZhbHVl
KTsKLX0KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmZTJmZWExMDY5NjJmNzY1NGYzNTcyZGM5Mzg5OTNkMzE5ZDg3MGFi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFBhdGhHTC5oOiBDbGFzcyBk
ZWZpbml0aW9uIGZvciBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRoIG9iamVjdCBmb3IgdGhl
Ci0vLyBHTCBiYWNrZW5kLgotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX1BBVEhJTVBM
X0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX1BBVEhJTVBMX0hfCi0KLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotY2xh
c3MgRnVuY3Rpb25zR0w7Ci0KLWNsYXNzIFBhdGhHTCA6IHB1YmxpYyBQYXRoSW1wbAotewotICBw
dWJsaWM6Ci0gICAgUGF0aEdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMdWludCBw
YXRoKTsKLSAgICB+UGF0aEdMKCkgb3ZlcnJpZGU7Ci0KLSAgICBhbmdsZTo6UmVzdWx0IHNldENv
bW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNv
b3Jkcykgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldFBhdGhQYXJhbWV0ZXIoR0xlbnVtIHBuYW1l
LCBHTGZsb2F0IHZhbHVlKSBvdmVycmlkZTsKLQotICAgIEdMdWludCBnZXRQYXRoSUQoKSBjb25z
dCB7IHJldHVybiBtUGF0aElEOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBjb25zdCBGdW5jdGlvbnNH
TCAqbUZ1bmN0aW9uczsKLQotICAgIEdMdWludCBtUGF0aElEOwotfTsKLQotfSAgLy8gbmFtZXNw
YWNlIHJ4Ci0KLSNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfUEFUSElNUExfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9Qcm9ncmFtR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAKaW5kZXggZTM4MjJlYTM4NGNhMWUyZTQ1YzVmZWM5Zjll
ZTI3MTE1NmJhZjU4Yy4uNWU4Y2NhZjE4NTI3NjY1Y2RjYWI0ZTkxMjI1YTkzZmY5YzcwYTcwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1Byb2dyYW1HTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAKQEAgLTMzLDEzICszMywxMSBAQCBQcm9ncmFt
R0w6OlByb2dyYW1HTChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGFuZ2xlOjpGZWF0dXJlc0dMICZmZWF0dXJlcywKICAgICAgICAgICAgICAgICAg
ICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICBi
b29sIGVuYWJsZVBhdGhSZW5kZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnNoYXJlZF9wdHI8UmVuZGVyZXJHTD4gJnJlbmRlcmVyKQogICAgIDogUHJvZ3JhbUltcGwoZGF0
YSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCiAgICAgICBtRmVhdHVyZXMoZmVhdHVy
ZXMpLAogICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAotICAgICAgbUVuYWJsZVBh
dGhSZW5kZXJpbmcoZW5hYmxlUGF0aFJlbmRlcmluZyksCiAgICAgICBtTXVsdGl2aWV3QmFzZVZp
ZXdMYXllckluZGV4VW5pZm9ybUxvY2F0aW9uKC0xKSwKICAgICAgIG1Qcm9ncmFtSUQoMCksCiAg
ICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLApAQCAtMjI5LDkgKzIyNywxMCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGlua0V2ZW50PiBQcm9ncmFtR0w6OmxpbmsoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdNYXBwZWROYW1lczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvICZ0ZlZhcnlpbmcgOiBt
U3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgZ2w6OlNoYWRlclR5cGUgdGZTaGFkZXJUeXBlID0gbVN0YXRlLmhhc0xpbmtlZFNo
YWRlclN0YWdlKGdsOjpTaGFkZXJUeXBlOjpHZW9tZXRyeSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdsOjpTaGFkZXJUeXBlOjpHZW9tZXRyeQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2w6OlNoYWRlclR5
cGU6OlZlcnRleDsKKyAgICAgICAgICAgIGdsOjpTaGFkZXJUeXBlIHRmU2hhZGVyVHlwZSA9Cisg
ICAgICAgICAgICAgICAgbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCkuaGFzTGlua2VkU2hh
ZGVyU3RhZ2UoZ2w6OlNoYWRlclR5cGU6Okdlb21ldHJ5KQorICAgICAgICAgICAgICAgICAgICA/
IGdsOjpTaGFkZXJUeXBlOjpHZW9tZXRyeQorICAgICAgICAgICAgICAgICAgICA6IGdsOjpTaGFk
ZXJUeXBlOjpWZXJ0ZXg7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0ZlZhcnlpbmdNYXBwZWRO
YW1lID0KICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0QXR0YWNoZWRTaGFkZXIodGZTaGFkZXJU
eXBlKQogICAgICAgICAgICAgICAgICAgICAtPmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ01h
cHBlZE5hbWUodGZWYXJ5aW5nKTsKQEAgLTk0MCwzMSArOTM5LDExIEBAIHZvaWQgUHJvZ3JhbUdM
OjpnZXRBdG9taWNDb3VudGVyQnVmZmVyU2l6ZU1hcChzdGQ6Om1hcDxpbnQsIHVuc2lnbmVkIGlu
dD4gKnNpemVNCiAgICAgfQogfQogCi12b2lkIFByb2dyYW1HTDo6c2V0UGF0aEZyYWdtZW50SW5w
dXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXsKLSAgICBBU1NF
UlQobUVuYWJsZVBhdGhSZW5kZXJpbmcpOwotCi0gICAgZm9yIChjb25zdCBhdXRvICZpbnB1dCA6
IG1QYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dHMpCi0gICAgewotICAgICAgICBpZiAoaW5wdXQu
bWFwcGVkTmFtZSA9PSBpbnB1dE5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1GdW5jdGlv
bnMtPnByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5WKG1Qcm9ncmFtSUQsIGlucHV0LmxvY2F0
aW9uLCBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcG9uZW50cywgY29lZmZzKTsKLSAgICAgICAgICAgIEFTU0VSVChtRnVu
Y3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBQcm9ncmFtR0w6OnByZUxpbmsoKQogewogICAg
IC8vIFJlc2V0IHRoZSBwcm9ncmFtIHN0YXRlCiAgICAgbVVuaWZvcm1SZWFsTG9jYXRpb25NYXAu
Y2xlYXIoKTsKICAgICBtVW5pZm9ybUJsb2NrUmVhbExvY2F0aW9uTWFwLmNsZWFyKCk7Ci0gICAg
bVBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0cy5jbGVhcigpOwogCiAgICAgbU11bHRpdmlld0Jh
c2VWaWV3TGF5ZXJJbmRleFVuaWZvcm1Mb2NhdGlvbiA9IC0xOwogfQpAQCAtMTA0NSw3MSArMTAy
NCw2IEBAIHZvaWQgUHJvZ3JhbUdMOjpwb3N0TGluaygpCiAgICAgICAgICAgICBtRnVuY3Rpb25z
LT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW1JRCwgIm11bHRpdmlld0Jhc2VWaWV3TGF5ZXJJ
bmRleCIpOwogICAgICAgICBBU1NFUlQobU11bHRpdmlld0Jhc2VWaWV3TGF5ZXJJbmRleFVuaWZv
cm1Mb2NhdGlvbiAhPSAtMSk7CiAgICAgfQotCi0gICAgLy8gRGlzY292ZXIgQ0hST01JVU1fcGF0
aF9yZW5kZXJpbmcgZnJhZ21lbnQgaW5wdXRzIGlmIGVuYWJsZWQuCi0gICAgaWYgKCFtRW5hYmxl
UGF0aFJlbmRlcmluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xpbnQgbnVtRnJhZ21lbnRJ
bnB1dHMgPSAwOwotICAgIG1GdW5jdGlvbnMtPmdldFByb2dyYW1JbnRlcmZhY2VpdihtUHJvZ3Jh
bUlELCBHTF9GUkFHTUVOVF9JTlBVVF9OViwgR0xfQUNUSVZFX1JFU09VUkNFUywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm51bUZyYWdtZW50SW5wdXRzKTsKLSAgICBp
ZiAobnVtRnJhZ21lbnRJbnB1dHMgPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xpbnQg
bWF4TmFtZUxlbmd0aCA9IDA7Ci0gICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbUludGVyZmFjZWl2
KG1Qcm9ncmFtSUQsIEdMX0ZSQUdNRU5UX0lOUFVUX05WLCBHTF9NQVhfTkFNRV9MRU5HVEgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhOYW1lTGVuZ3RoKTsKLSAg
ICBBU1NFUlQobWF4TmFtZUxlbmd0aCk7Ci0KLSAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbnVt
RnJhZ21lbnRJbnB1dHM7ICsraSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG1hcHBlZE5h
bWU7Ci0gICAgICAgIG1hcHBlZE5hbWUucmVzaXplKG1heE5hbWVMZW5ndGgpOwotCi0gICAgICAg
IEdMc2l6ZWkgbmFtZUxlbiA9IDA7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmdldFByb2dyYW1SZXNv
dXJjZU5hbWUobVByb2dyYW1JRCwgR0xfRlJBR01FTlRfSU5QVVRfTlYsIGksIG1heE5hbWVMZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVMZW4s
ICZtYXBwZWROYW1lWzBdKTsKLSAgICAgICAgbWFwcGVkTmFtZS5yZXNpemUobmFtZUxlbik7Ci0K
LSAgICAgICAgLy8gSWdub3JlIGJ1aWx0LWlucwotICAgICAgICBpZiAoYW5nbGU6OkJlZ2luc1dp
dGgobWFwcGVkTmFtZSwgImdsXyIpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Y29uc3QgR0xlbnVtIGtRdWVyeVByb3BlcnRpZXNbXSA9IHtHTF9MT0NBVElPTiwgR0xfQVJSQVlf
U0laRX07Ci0gICAgICAgIEdMaW50IHF1ZXJ5UmVzdWx0c1tBcnJheVNpemUoa1F1ZXJ5UHJvcGVy
dGllcyldOwotICAgICAgICBHTHNpemVpIHF1ZXJ5TGVuZ3RoID0gMDsKLQotICAgICAgICBtRnVu
Y3Rpb25zLT5nZXRQcm9ncmFtUmVzb3VyY2VpdigKLSAgICAgICAgICAgIG1Qcm9ncmFtSUQsIEdM
X0ZSQUdNRU5UX0lOUFVUX05WLCBpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUoa1F1
ZXJ5UHJvcGVydGllcykpLAotICAgICAgICAgICAga1F1ZXJ5UHJvcGVydGllcywgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oQXJyYXlTaXplKHF1ZXJ5UmVzdWx0cykpLCAmcXVlcnlMZW5ndGgsCi0gICAg
ICAgICAgICBxdWVyeVJlc3VsdHMpOwotCi0gICAgICAgIEFTU0VSVChxdWVyeUxlbmd0aCA9PSBz
dGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUoa1F1ZXJ5UHJvcGVydGllcykpKTsKLQotICAg
ICAgICBQYXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dCBiYXNlRWxlbWVudElucHV0OwotICAgICAg
ICBiYXNlRWxlbWVudElucHV0Lm1hcHBlZE5hbWUgPSBtYXBwZWROYW1lOwotICAgICAgICBiYXNl
RWxlbWVudElucHV0LmxvY2F0aW9uICAgPSBxdWVyeVJlc3VsdHNbMF07Ci0gICAgICAgIG1QYXRo
UmVuZGVyaW5nRnJhZ21lbnRJbnB1dHMucHVzaF9iYWNrKHN0ZDo6bW92ZShiYXNlRWxlbWVudElu
cHV0KSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IGl0J3MgZGVub3Rl
ZCBieSBbMF0gc3VmZml4IG9uIHRoZSB2YXJpYWJsZQotICAgICAgICAvLyBuYW1lLiBXZSdsbCB0
aGVuIGNyZWF0ZSBhbiBlbnRyeSBwZXIgZWFjaCBhcnJheSBpbmRleCB3aGVyZSBpbmRleCA+IDAK
LSAgICAgICAgaWYgKGFuZ2xlOjpFbmRzV2l0aChtYXBwZWROYW1lLCAiWzBdIikpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIGRyb3AgdGhlIHN1ZmZpeAotICAgICAgICAgICAgbWFwcGVkTmFt
ZS5yZXNpemUobWFwcGVkTmFtZS5zaXplKCkgLSAzKTsKLQotICAgICAgICAgICAgY29uc3QgYXV0
byBhcnJheVNpemUgICAgPSBxdWVyeVJlc3VsdHNbMV07Ci0gICAgICAgICAgICBjb25zdCBhdXRv
IGJhc2VMb2NhdGlvbiA9IHF1ZXJ5UmVzdWx0c1swXTsKLQotICAgICAgICAgICAgZm9yIChHTGlu
dCBhcnJheUluZGV4ID0gMTsgYXJyYXlJbmRleCA8IGFycmF5U2l6ZTsgKythcnJheUluZGV4KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0
IGFycmF5RWxlbWVudElucHV0OwotICAgICAgICAgICAgICAgIGFycmF5RWxlbWVudElucHV0Lm1h
cHBlZE5hbWUgPSBtYXBwZWROYW1lICsgIlsiICsgVG9TdHJpbmcoYXJyYXlJbmRleCkgKyAiXSI7
Ci0gICAgICAgICAgICAgICAgYXJyYXlFbGVtZW50SW5wdXQubG9jYXRpb24gICA9IGJhc2VMb2Nh
dGlvbiArIGFycmF5SW5kZXg7Ci0gICAgICAgICAgICAgICAgbVBhdGhSZW5kZXJpbmdGcmFnbWVu
dElucHV0cy5wdXNoX2JhY2soc3RkOjptb3ZlKGFycmF5RWxlbWVudElucHV0KSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjplbmFibGVTaWRl
QnlTaWRlUmVuZGVyaW5nUGF0aCgpIGNvbnN0CkBAIC0xMTY2LDcgKzEwODAsMTYgQEAgdm9pZCBQ
cm9ncmFtR0w6Om1hcmtVbnVzZWRVbmlmb3JtTG9jYXRpb25zKHN0ZDo6dmVjdG9yPGdsOjpWYXJp
YWJsZUxvY2F0aW9uPiAqdW4KICAgICAgICAgICAgICAgICBHTHVpbnQgaW1hZ2VJbmRleCA9IG1T
dGF0ZS5nZXRJbWFnZUluZGV4RnJvbVVuaWZvcm1JbmRleChsb2NhdGlvblJlZi5pbmRleCk7CiAg
ICAgICAgICAgICAgICAgKCppbWFnZUJpbmRpbmdzKVtpbWFnZUluZGV4XS51bnJlZmVyZW5jZWQg
PSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbG9jYXRpb25SZWYubWFya1VudXNl
ZCgpOworICAgICAgICAgICAgLy8gSWYgdGhlIGxvY2F0aW9uIGhhcyBiZWVuIHByZXZpb3VzbHkg
Ym91bmQgYnkgYSBnbEJpbmRVbmlmb3JtTG9jYXRpb24gY2FsbCwgaXQgc2hvdWxkCisgICAgICAg
ICAgICAvLyBiZSBtYXJrZWQgYXMgaWdub3JlZC4gT3RoZXJ3aXNlIGl0J3MgdW51c2VkLgorICAg
ICAgICAgICAgaWYgKG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25CaW5kaW5ncygpLmdldEJpbmRp
bmdCeUxvY2F0aW9uKGxvY2F0aW9uKSAhPSAtMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBsb2NhdGlvblJlZi5tYXJrSWdub3JlZCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvY2F0aW9uUmVmLm1hcmtV
bnVzZWQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFt
R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Q
cm9ncmFtR0wuaAppbmRleCBlNGEwMDA5OTc3YmE4M2MwY2RmM2YxOGExMWU0ZTRkOGY1YjVlMmI0
Li4zMGU3Njk5NjZmZWQzMzAxMjQzMzkxYzcwNDk0ZmRkZGQ0ZTZjNzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdM
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1Byb2dyYW1HTC5oCkBAIC0zMyw3ICszMyw2IEBAIGNsYXNzIFByb2dyYW1HTCA6IHB1YmxpYyBQ
cm9ncmFtSW1wbAogICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAog
ICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6RmVhdHVyZXNHTCAmZmVhdHVyZXMsCiAgICAgICAg
ICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCi0gICAgICAgICAgICAgIGJvb2wg
ZW5hYmxlUGF0aFJlbmRlcmluZywKICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzaGFyZWRfcHRy
PFJlbmRlcmVyR0w+ICZyZW5kZXJlcik7CiAgICAgflByb2dyYW1HTCgpIG92ZXJyaWRlOwogCkBA
IC0xMDIsMTEgKzEwMSw2IEBAIGNsYXNzIFByb2dyYW1HTCA6IHB1YmxpYyBQcm9ncmFtSW1wbAog
ICAgIHZvaWQgZ2V0VW5pZm9ybWl2KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGludCBs
b2NhdGlvbiwgR0xpbnQgKnBhcmFtcykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlm
b3JtdWl2KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0x1aW50
ICpwYXJhbXMpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRQYXRoRnJhZ21lbnRJbnB1
dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlkZTsKLQogICAgIHZvaWQgbWFya1VudXNlZFVu
aWZvcm1Mb2NhdGlvbnMoc3RkOjp2ZWN0b3I8Z2w6OlZhcmlhYmxlTG9jYXRpb24+ICp1bmlmb3Jt
TG9jYXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8Z2w6OlNhbXBsZXJCaW5kaW5nPiAqc2FtcGxlckJpbmRpbmdzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Z2w6OkltYWdlQmluZGluZz4gKmltYWdl
QmluZGluZ3MpIG92ZXJyaWRlOwpAQCAtMTU3LDE0ICsxNTEsNiBAQCBjbGFzcyBQcm9ncmFtR0wg
OiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICBzdGQ6OnZlY3RvcjxHTGludD4gbVVuaWZvcm1SZWFs
TG9jYXRpb25NYXA7CiAgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVW5pZm9ybUJsb2NrUmVhbExv
Y2F0aW9uTWFwOwogCi0gICAgc3RydWN0IFBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0Ci0gICAg
ewotICAgICAgICBzdGQ6OnN0cmluZyBtYXBwZWROYW1lOwotICAgICAgICBHTGludCBsb2NhdGlv
bjsKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPFBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0PiBt
UGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXRzOwotCi0gICAgYm9vbCBtRW5hYmxlUGF0aFJlbmRl
cmluZzsKICAgICBHTGludCBtTXVsdGl2aWV3QmFzZVZpZXdMYXllckluZGV4VW5pZm9ybUxvY2F0
aW9uOwogCiAgICAgR0x1aW50IG1Qcm9ncmFtSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5j
cHAKaW5kZXggNjQ4NTBhNzJmOGNmYmJmNmQ5N2RjM2ZhNDQ2MTA0ZjVjNTUzMDkxZS4uMDk3ODli
NTFhZTc5NWE0MzM1YjgxYmE3Njc3MjExODNlNWU4N2EyMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5k
ZXJlckdMLmNwcApAQCAtMTQsNyArMTQsNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0
ZU1hcC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9EaXNwbGF5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvUGF0aC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1N0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oIgpAQCAtMjYsNyArMjUsNiBAQAogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlTlZHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9GdW5jdGlvbnNHTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9SZW5kZXJidWZmZXJHTC5oIgpAQCAtNDQsMTkgKzQyLDYgQEAKIG5hbWVzcGFjZQog
ewogCi1zdGQ6OnZlY3RvcjxHTHVpbnQ+IEdhdGhlclBhdGhzKGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpQYXRoICo+ICZwYXRocykKLXsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IHJldDsKLSAgICBy
ZXQucmVzZXJ2ZShwYXRocy5zaXplKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvICpwIDogcGF0
aHMpCi0gICAgewotICAgICAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gcng6OkdldEltcGxBczxy
eDo6UGF0aEdMPihwKTsKLSAgICAgICAgcmV0LnB1c2hfYmFjayhwYXRoT2JqLT5nZXRQYXRoSUQo
KSk7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KIHZvaWQgU2V0TWF4U2hhZGVyQ29tcGls
ZXJUaHJlYWRzKGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTHVpbnQgY291bnQp
CiB7CiAgICAgaWYgKGZ1bmN0aW9ucy0+bWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSICE9IG51
bGxwdHIpCkBAIC04OCw4MCArNzMsOSBAQCBzdGF0aWMgdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRS
WSBMb2dHTERlYnVnTWVzc2FnZShHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqdXNlclBhcmFtKQogewotICAgIHN0ZDo6c3RyaW5nIHNvdXJjZVRleHQ7Ci0gICAgc3dpdGNo
IChzb3VyY2UpCi0gICAgewotICAgICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9BUEk6Ci0gICAg
ICAgICAgICBzb3VyY2VUZXh0ID0gIk9wZW5HTCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTToKLSAgICAgICAgICAgIHNvdXJj
ZVRleHQgPSAiV2luZG93cyI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9E
RUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSOgotICAgICAgICAgICAgc291cmNlVGV4dCA9ICJT
aGFkZXIgQ29tcGlsZXIiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfREVC
VUdfU09VUkNFX1RISVJEX1BBUlRZOgotICAgICAgICAgICAgc291cmNlVGV4dCA9ICJUaGlyZCBQ
YXJ0eSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0Vf
QVBQTElDQVRJT046Ci0gICAgICAgICAgICBzb3VyY2VUZXh0ID0gIkFwcGxpY2F0aW9uIjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9PVEhFUjoKLSAg
ICAgICAgICAgIHNvdXJjZVRleHQgPSAiT3RoZXIiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzb3VyY2VUZXh0ID0gIlVOS05PV04iOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgdHlwZVRleHQ7Ci0gICAgc3dp
dGNoICh0eXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9ERUJVR19UWVBFX0VSUk9SOgotICAg
ICAgICAgICAgdHlwZVRleHQgPSAiRXJyb3IiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SOgotICAgICAgICAgICAgdHlw
ZVRleHQgPSAiRGVwcmVjYXRlZCBiZWhhdmlvciI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUjoKLSAgICAgICAgICAgIHR5
cGVUZXh0ID0gIlVuZGVmaW5lZCBiZWhhdmlvciI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZOgotICAgICAgICAgICAgdHlwZVRleHQg
PSAiUG9ydGFiaWxpdHkiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfREVC
VUdfVFlQRV9QRVJGT1JNQU5DRToKLSAgICAgICAgICAgIHR5cGVUZXh0ID0gIlBlcmZvcm1hbmNl
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfT1RIRVI6
Ci0gICAgICAgICAgICB0eXBlVGV4dCA9ICJPdGhlciI7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBHTF9ERUJVR19UWVBFX01BUktFUjoKLSAgICAgICAgICAgIHR5cGVUZXh0ID0g
Ik1hcmtlciI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHR5cGVUZXh0ID0gIlVOS05PV04iOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgc3RkOjpzdHJpbmcgc2V2ZXJpdHlUZXh0OwotICAgIHN3aXRjaCAoc2V2ZXJpdHkpCi0gICAg
ewotICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0g6Ci0gICAgICAgICAgICBzZXZl
cml0eVRleHQgPSAiSGlnaCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9E
RUJVR19TRVZFUklUWV9NRURJVU06Ci0gICAgICAgICAgICBzZXZlcml0eVRleHQgPSAiTWVkaXVt
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0xP
VzoKLSAgICAgICAgICAgIHNldmVyaXR5VGV4dCA9ICJMb3ciOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OOgotICAgICAgICAg
ICAgc2V2ZXJpdHlUZXh0ID0gIk5vdGlmaWNhdGlvbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHNldmVyaXR5VGV4dCA9ICJVTktOT1dOIjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VUZXh0ICAgPSBn
bDo6R2V0RGVidWdNZXNzYWdlU291cmNlU3RyaW5nKHNvdXJjZSk7CisgICAgc3RkOjpzdHJpbmcg
dHlwZVRleHQgICAgID0gZ2w6OkdldERlYnVnTWVzc2FnZVR5cGVTdHJpbmcodHlwZSk7CisgICAg
c3RkOjpzdHJpbmcgc2V2ZXJpdHlUZXh0ID0gZ2w6OkdldERlYnVnTWVzc2FnZVNldmVyaXR5U3Ry
aW5nKHNldmVyaXR5KTsKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKICAg
ICBpZiAodHlwZSA9PSBHTF9ERUJVR19UWVBFX0VSUk9SKQpAQCAtMjI0LDcgKzEzOCw3IEBAIFJl
bmRlcmVyR0w6OlJlbmRlcmVyR0woc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uc0dMPiBmdW5jdGlv
bnMsCiAgICAgewogICAgICAgICBuYXRpdmVnbF9nbDo6SW5pdGlhbGl6ZUZlYXR1cmVzKG1GdW5j
dGlvbnMuZ2V0KCksICZtRmVhdHVyZXMpOwogICAgIH0KLSAgICBPdmVycmlkZUZlYXR1cmVzV2l0
aERpc3BsYXlTdGF0ZSgmbUZlYXR1cmVzLCBkaXNwbGF5LT5nZXRTdGF0ZSgpKTsKKyAgICBBcHBs
eUZlYXR1cmVPdmVycmlkZXMoJm1GZWF0dXJlcywgZGlzcGxheS0+Z2V0U3RhdGUoKSk7CiAgICAg
bVN0YXRlTWFuYWdlciA9CiAgICAgICAgIG5ldyBTdGF0ZU1hbmFnZXJHTChtRnVuY3Rpb25zLmdl
dCgpLCBnZXROYXRpdmVDYXBzKCksIGdldE5hdGl2ZUV4dGVuc2lvbnMoKSwgbUZlYXR1cmVzKTsK
ICAgICBtQmxpdHRlciAgICAgICAgICA9IG5ldyBCbGl0R0wobUZ1bmN0aW9ucy5nZXQoKSwgbUZl
YXR1cmVzLCBtU3RhdGVNYW5hZ2VyKTsKQEAgLTMwNywxNjUgKzIyMSw2IEBAIGFuZ2xlOjpSZXN1
bHQgUmVuZGVyZXJHTDo6ZmluaXNoKCkKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7CiB9CiAKLXZvaWQgUmVuZGVyZXJHTDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0
aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQotewotICAg
IGNvbnN0IGF1dG8gKnBhdGhPYmogPSBHZXRJbXBsQXM8UGF0aEdMPihwYXRoKTsKLQotICAgIG1G
dW5jdGlvbnMtPnN0ZW5jaWxGaWxsUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgpLCBmaWxsTW9k
ZSwgbWFzayk7Ci0KLSAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19F
UlJPUik7Ci19Ci0KLXZvaWQgUmVuZGVyZXJHTDo6c3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6
OlN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1h
c2spCi17Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IEdldEltcGxBczxQYXRoR0w+KHBhdGgp
OwotCi0gICAgbUZ1bmN0aW9ucy0+c3RlbmNpbFN0cm9rZVBhdGhOVihwYXRoT2JqLT5nZXRQYXRo
SUQoKSwgcmVmZXJlbmNlLCBtYXNrKTsKLQotICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJv
cigpID09IEdMX05PX0VSUk9SKTsKLX0KLQotdm9pZCBSZW5kZXJlckdMOjpjb3ZlckZpbGxQYXRo
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gY292
ZXJNb2RlKQotewotCi0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IEdldEltcGxBczxQYXRoR0w+
KHBhdGgpOwotICAgIG1GdW5jdGlvbnMtPmNvdmVyRmlsbFBhdGhOVihwYXRoT2JqLT5nZXRQYXRo
SUQoKSwgY292ZXJNb2RlKTsKLQotICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRFcnJvcigpID09
IEdMX05PX0VSUk9SKTsKLX0KLQotdm9pZCBSZW5kZXJlckdMOjpjb3ZlclN0cm9rZVBhdGgoY29u
c3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1v
ZGUpCi17Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IEdldEltcGxBczxQYXRoR0w+KHBhdGgp
OwotICAgIG1GdW5jdGlvbnMtPmNvdmVyU3Ryb2tlUGF0aE5WKHBhdGhPYmotPmdldFBhdGhJRCgp
LCBjb3Zlck1vZGUpOwotCi0gICAgQVNTRVJUKG1GdW5jdGlvbnMtPmdldEVycm9yKCkgPT0gR0xf
Tk9fRVJST1IpOwotfQotCi12b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0KLSAgICBjb25zdCBh
dXRvICpwYXRoT2JqID0gR2V0SW1wbEFzPFBhdGhHTD4ocGF0aCk7Ci0gICAgbUZ1bmN0aW9ucy0+
c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlYocGF0aE9iai0+Z2V0UGF0aElEKCksIGZpbGxNb2Rl
LCBtYXNrLCBjb3Zlck1vZGUpOwotCi0gICAgQVNTRVJUKG1GdW5jdGlvbnMtPmdldEVycm9yKCkg
PT0gR0xfTk9fRVJST1IpOwotfQotCi12b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQot
ewotCi0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IEdldEltcGxBczxQYXRoR0w+KHBhdGgpOwot
ICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoTlYocGF0aE9iai0+Z2V0
UGF0aElEKCksIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlKTsKLQotICAgIEFTU0VSVChtRnVu
Y3Rpb25zLT5nZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLX0KLQotdm9pZCBSZW5kZXJlckdM
Ojpjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBh
dGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIGNvbnN0IGF1dG8g
JnBhdGhPYmpzID0gR2F0aGVyUGF0aHMocGF0aHMpOwotCi0gICAgbUZ1bmN0aW9ucy0+Y292ZXJG
aWxsUGF0aEluc3RhbmNlZE5WKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSks
IEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnBhdGhPYmpzWzBdLCAwLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Ci0KLSAgICBB
U1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci19Ci12b2lkIFJl
bmRlcmVyR0w6OmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQot
ewotICAgIGNvbnN0IGF1dG8gJnBhdGhPYmpzID0gR2F0aGVyUGF0aHMocGF0aHMpOwotCi0gICAg
bUZ1bmN0aW9ucy0+Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYoc3RhdGljX2Nhc3Q8R0xzaXpl
aT4ocGF0aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoT2Jqc1swXSwgMCwgY292ZXJNb2RlLCB0cmFu
c2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybVZhbHVlcyk7Ci0KLSAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBH
TF9OT19FUlJPUik7Ci19Ci12b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdhdGhl
clBhdGhzKHBhdGhzKTsKLQotICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZE5WKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdMX1VOU0lHTkVEX0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aE9ianNb
MF0sIDAsIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7Ci0KLSAgICBBU1NFUlQo
bUZ1bmN0aW9ucy0+Z2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci19Ci12b2lkIFJlbmRlcmVy
R0w6OnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVl
cykKLXsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdhdGhlclBhdGhzKHBhdGhzKTsKLQot
ICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkTlYoc3RhdGljX2Nhc3Q8
R0xzaXplaT4ocGF0aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGhPYmpzWzBdLCAwLCByZWZlcmVu
Y2UsIG1hc2ssIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOwotCi0gICAgQVNTRVJUKG1GdW5jdGlvbnMt
PmdldEVycm9yKCkgPT0gR0xfTk9fRVJST1IpOwotfQotCi12b2lkIFJlbmRlcmVyR0w6OnN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBt
YXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAg
Y29uc3QgYXV0byAmcGF0aE9ianMgPSBHYXRoZXJQYXRocyhwYXRocyk7Ci0KLSAgICBtRnVuY3Rp
b25zLT5zdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWROVigKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8R0xzaXplaT4ocGF0aE9ianMuc2l6ZSgpKSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aE9i
anNbMF0sIDAsIGZpbGxNb2RlLCBtYXNrLAotICAgICAgICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5
cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci0KLSAgICBBU1NFUlQobUZ1bmN0aW9ucy0+Z2V0RXJyb3Io
KSA9PSBHTF9OT19FUlJPUik7Ci19Ci12b2lkIFJlbmRlcmVyR0w6OnN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAg
ICBjb25zdCBhdXRvICZwYXRoT2JqcyA9IEdhdGhlclBhdGhzKHBhdGhzKTsKLQotICAgIG1GdW5j
dGlvbnMtPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYoCi0gICAgICAgIHN0
YXRpY19jYXN0PEdMc2l6ZWk+KHBhdGhPYmpzLnNpemUoKSksIEdMX1VOU0lHTkVEX0lOVCwgJnBh
dGhPYmpzWzBdLCAwLCByZWZlcmVuY2UsIG1hc2ssCi0gICAgICAgIGNvdmVyTW9kZSwgdHJhbnNm
b3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKLQotICAgIEFTU0VSVChtRnVuY3Rpb25zLT5nZXRF
cnJvcigpID09IEdMX05PX0VSUk9SKTsKLX0KLQogZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXMgUmVu
ZGVyZXJHTDo6Z2V0UmVzZXRTdGF0dXMoKQogewogICAgIHJldHVybiBnbDo6RnJvbUdMZW51bTxn
bDo6R3JhcGhpY3NSZXNldFN0YXR1cz4obUZ1bmN0aW9ucy0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9SZW5kZXJlckdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oCmluZGV4IDk4ZDU5NDJjNTlhZWVmMWUxMTMw
N2Q1N2RlZDU4ZjIyNDUxMGYwMTAuLjFjMzZjODIzMjE2MmU4YWI4YjAwOWEyMGMzMjJjNGZlZDBj
Yzk4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9SZW5kZXJlckdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaApAQCAtODYsNjUgKzg2LDYgQEAgY2xh
c3MgUmVuZGVyZXJHTCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGFuZ2xlOjpSZXN1bHQgZmx1
c2goKTsKICAgICBhbmdsZTo6UmVzdWx0IGZpbmlzaCgpOwogCi0gICAgLy8gQ0hST01JVU1fcGF0
aF9yZW5kZXJpbmcgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aChjb25z
dCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
YXRoICpwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Ci0gICAgdm9pZCBzdGVuY2lsU3Ry
b2tlUGF0aChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Ci0g
ICAgdm9pZCBjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpQ
YXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLSAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aChj
b25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVy
TW9kZSk7Ci0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGF0
aCAqcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci0gICAgdm9p
ZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotICAgIHZvaWQgY292
ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
OwotICAgIHZvaWQgY292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLSAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3Rh
bmNlZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLSAgICB2b2lkIHN0ZW5j
aWxTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAm
cGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVu
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKTsKLQotICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci0gICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBh
dGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpOwotCiAgICAgZ2w6OkdyYXBoaWNzUmVzZXRTdGF0dXMgZ2V0UmVzZXRTdGF0dXMoKTsKIAog
ICAgIC8vIEVYVF9kZWJ1Z19tYXJrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TZW1hcGhvcmVHTC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2VtYXBob3JlR0wuY3BwCmlu
ZGV4IDEwMzNmN2FkOWQ4ODk2ZmI2NTQ3ZjIzMjY4MGMzMGMzYTFiMzZmZTAuLjI3OWIwMjg3Zjlm
NGU4ZWQyMjUzZWUxZjhjOWEzZWRjNDE4OTk3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TZW1hcGhvcmVHTC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NlbWFwaG9y
ZUdMLmNwcApAQCAtNjcsNiArNjcsMTQgQEAgYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmVHTDo6aW1w
b3J0RmQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVQKICAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKK2FuZ2xlOjpSZXN1bHQgU2VtYXBo
b3JlR0w6OmltcG9ydFppcmNvbkhhbmRsZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5k
bGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBoYW5kbGUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6U3RvcDsKK30KKwogYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmVHTDo6d2FpdChnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkJ1ZmZlckJhcnJpZXJWZWN0b3IgJmJ1ZmZlckJhcnJpZXJzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUJhcnJpZXJWZWN0b3IgJnRleHR1cmVCYXJy
aWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9TZW1hcGhvcmVHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1NlbWFwaG9yZUdMLmgKaW5kZXggYjU0MjkyZWVjZmE5ZmQ5OWFj
ZDBjOTI4NGMzMmU0NmQxMzYxZmE2Mi4uM2M5MzhjZDY2YTYxYjgwZjlmZGM5MDhjZTdlYjQ3Zjcw
NGM4N2QyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1NlbWFwaG9yZUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NlbWFwaG9yZUdMLmgKQEAgLTIzLDYgKzIzLDEwIEBA
IGNsYXNzIFNlbWFwaG9yZUdMIDogcHVibGljIFNlbWFwaG9yZUltcGwKIAogICAgIGFuZ2xlOjpS
ZXN1bHQgaW1wb3J0RmQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIGdsOjpIYW5kbGVUeXBlIGhhbmRs
ZVR5cGUsIEdMaW50IGZkKSBvdmVycmlkZTsKIAorICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0Wmly
Y29uSGFuZGxlKGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkgb3ZlcnJpZGU7CisKICAgICBhbmds
ZTo6UmVzdWx0IHdhaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpCdWZmZXJCYXJyaWVyVmVjdG9yICZidWZmZXJCYXJyaWVycywKICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVCYXJyaWVyVmVjdG9yICZ0ZXh0dXJl
QmFycmllcnMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAK
aW5kZXggNjg5NzI2NjFmZjIzNDAyYzdkZTdlMjE5NWFjNTAxZjFmYWY0Nzg4OC4uM2Y5YmMwMTY2
Y2ZmZDg0ZDQwYzU2ZGVlYjc1YjI2MDRhOWI0YTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3Rh
dGVNYW5hZ2VyR0wuY3BwCkBAIC0xNDgsOSArMTQ4LDYgQEAgU3RhdGVNYW5hZ2VyR0w6OlN0YXRl
TWFuYWdlckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICBtTXVsdGlzYW1w
bGluZ0VuYWJsZWQodHJ1ZSksCiAgICAgICBtU2FtcGxlQWxwaGFUb09uZUVuYWJsZWQoZmFsc2Up
LAogICAgICAgbUNvdmVyYWdlTW9kdWxhdGlvbihHTF9OT05FKSwKLSAgICAgIG1QYXRoU3RlbmNp
bEZ1bmMoR0xfQUxXQVlTKSwKLSAgICAgIG1QYXRoU3RlbmNpbFJlZigwKSwKLSAgICAgIG1QYXRo
U3RlbmNpbE1hc2soc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSksCiAgICAgICBt
SXNNdWx0aXZpZXdFbmFibGVkKGV4dGVuc2lvbnMubXVsdGl2aWV3IHx8IGV4dGVuc2lvbnMubXVs
dGl2aWV3MiksCiAgICAgICBtUHJvdm9raW5nVmVydGV4KEdMX0xBU1RfVkVSVEVYX0NPTlZFTlRJ
T04pLAogICAgICAgbUxvY2FsRGlydHlCaXRzKCkKQEAgLTE4Miw5ICsxNzksNiBAQCBTdGF0ZU1h
bmFnZXJHTDo6U3RhdGVNYW5hZ2VyR0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKICAg
ICAgICAgICAgIG1GdW5jdGlvbnMtPmVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwogICAgICAgICB9
CiAgICAgfQotCi0gICAgYW5nbGU6Ok1hdHJpeDxHTGZsb2F0Pjo6c2V0VG9JZGVudGl0eShtUGF0
aE1hdHJpeFByb2opOwotICAgIGFuZ2xlOjpNYXRyaXg8R0xmbG9hdD46OnNldFRvSWRlbnRpdHko
bVBhdGhNYXRyaXhNVik7CiB9CiAKIFN0YXRlTWFuYWdlckdMOjp+U3RhdGVNYW5hZ2VyR0woKSB7
fQpAQCAtODIzLDE2ICs4MTcsMTYgQEAgYW5nbGU6OlJlc3VsdCBTdGF0ZU1hbmFnZXJHTDo6b25N
YWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIAogdm9pZCBTdGF0ZU1hbmFn
ZXJHTDo6dXBkYXRlUHJvZ3JhbVRleHR1cmVCaW5kaW5ncyhjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCkKIHsKLSAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICA9IGNvbnRleHQtPmdldFN0
YXRlKCk7Ci0gICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFByb2dy
YW0oKTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICAgICAgICAgICAgICAgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0
YWJsZSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIAogICAgIC8vIEl0IGlzIHBv
c3NpYmxlIHRoZXJlIGlzIG5vIGFjdGl2ZSBwcm9ncmFtIGR1cmluZyBhIHBhdGggb3BlcmF0aW9u
LgotICAgIGlmICghcHJvZ3JhbSkKKyAgICBpZiAoIWV4ZWN1dGFibGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlUG9pbnRlckFycmF5ICZ0ZXh0dXJlcyAg
PSBnbFN0YXRlLmdldEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsKLSAgICBjb25zdCBnbDo6QWN0aXZl
VGV4dHVyZU1hc2sgJmFjdGl2ZVRleHR1cmVzICAgID0gcHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxl
cnNNYXNrKCk7Ci0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVUeXBlQXJyYXkgJnRleHR1cmVU
eXBlcyA9IHByb2dyYW0tPmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpOworICAgIGNvbnN0IGdsOjpB
Y3RpdmVUZXh0dXJlc0NhY2hlICZ0ZXh0dXJlcyAgICAgICAgPSBnbFN0YXRlLmdldEFjdGl2ZVRl
eHR1cmVzQ2FjaGUoKTsKKyAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZU1hc2sgJmFjdGl2ZVRl
eHR1cmVzICAgID0gZXhlY3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlcnNNYXNrKCk7CisgICAgY29u
c3QgZ2w6OkFjdGl2ZVRleHR1cmVUeXBlQXJyYXkgJnRleHR1cmVUeXBlcyA9IGV4ZWN1dGFibGUt
PmdldEFjdGl2ZVNhbXBsZXJUeXBlcygpOwogCiAgICAgZm9yIChzaXplX3QgdGV4dHVyZVVuaXRJ
bmRleCA6IGFjdGl2ZVRleHR1cmVzKQogICAgIHsKQEAgLTg2MiwxMCArODU2LDYgQEAgdm9pZCBT
dGF0ZU1hbmFnZXJHTDo6dXBkYXRlUHJvZ3JhbVN0b3JhZ2VCdWZmZXJCaW5kaW5ncyhjb25zdCBn
bDo6Q29udGV4dCAqY29udGUKICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICA9IGNvbnRl
eHQtPmdldFN0YXRlKCk7CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0YXRl
LmdldFByb2dyYW0oKTsKIAotICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoZXJlIGlzIG5vIGFjdGl2
ZSBwcm9ncmFtIGR1cmluZyBhIHBhdGggb3BlcmF0aW9uLgotICAgIGlmICghcHJvZ3JhbSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBwcm9ncmFtLT5nZXRBY3RpdmVTaGFkZXJTdG9yYWdlQmxvY2tDb3VudCgpOwogICAgICAg
ICAgYmxvY2tJbmRleCsrKQogICAgIHsKQEAgLTg5NSwxMCArODg1LDYgQEAgdm9pZCBTdGF0ZU1h
bmFnZXJHTDo6dXBkYXRlUHJvZ3JhbVVuaWZvcm1CdWZmZXJCaW5kaW5ncyhjb25zdCBnbDo6Q29u
dGV4dCAqY29udGUKICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICA9IGNvbnRleHQtPmdl
dFN0YXRlKCk7CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0YXRlLmdldFBy
b2dyYW0oKTsKIAotICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoZXJlIGlzIG5vIGFjdGl2ZSBwcm9n
cmFtIGR1cmluZyBhIHBhdGggb3BlcmF0aW9uLgotICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgZm9yIChzaXplX3QgdW5pZm9ybUJsb2NrSW5kZXggPSAwOyB1bmlmb3Jt
QmxvY2tJbmRleCA8IHByb2dyYW0tPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50KCk7CiAgICAg
ICAgICB1bmlmb3JtQmxvY2tJbmRleCsrKQogICAgIHsKQEAgLTkyNywxMCArOTEzLDYgQEAgdm9p
ZCBTdGF0ZU1hbmFnZXJHTDo6dXBkYXRlUHJvZ3JhbUF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5n
cyhjb25zdCBnbDo6Q29udGV4dAogICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgID0gY29u
dGV4dC0+Z2V0U3RhdGUoKTsKICAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3Rh
dGUuZ2V0UHJvZ3JhbSgpOwogCi0gICAgLy8gSXQgaXMgcG9zc2libGUgdGhlcmUgaXMgbm8gYWN0
aXZlIHByb2dyYW0gZHVyaW5nIGEgcGF0aCBvcGVyYXRpb24uCi0gICAgaWYgKCFwcm9ncmFtKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8gJmF0b21pY0NvdW50ZXJCdWZm
ZXIgOiBwcm9ncmFtLT5nZXRTdGF0ZSgpLmdldEF0b21pY0NvdW50ZXJCdWZmZXJzKCkpCiAgICAg
ewogICAgICAgICBHTHVpbnQgYmluZGluZyAgICAgPSBhdG9taWNDb3VudGVyQnVmZmVyLmJpbmRp
bmc7CkBAIC05NTUsMTUgKzkzNywxNiBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjp1cGRhdGVQcm9n
cmFtQXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzKGNvbnN0IGdsOjpDb250ZXh0CiAKIHZvaWQg
U3RhdGVNYW5hZ2VyR0w6OnVwZGF0ZVByb2dyYW1JbWFnZUJpbmRpbmdzKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgID0gY29udGV4
dC0+Z2V0U3RhdGUoKTsKLSAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUu
Z2V0UHJvZ3JhbSgpOworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAg
ICA9IGNvbnRleHQtPmdldFN0YXRlKCk7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxl
ICpleGVjdXRhYmxlID0gZ2xTdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIGNvbnN0
IGdsOjpQcm9ncmFtICpwcm9ncmFtICAgICAgICAgICAgICA9IGdsU3RhdGUuZ2V0UHJvZ3JhbSgp
OwogCiAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhlcmUgaXMgbm8gYWN0aXZlIHByb2dyYW0gZHVy
aW5nIGEgcGF0aCBvcGVyYXRpb24uCi0gICAgaWYgKCFwcm9ncmFtKQorICAgIGlmICghZXhlY3V0
YWJsZSB8fCAhcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA+PSBnbDo6RVNfM18xIHx8IHByb2dyYW0tPmdldEltYWdlQmlu
ZGluZ3MoKS5zaXplKCkgPT0gMCk7Ci0gICAgZm9yIChzaXplX3QgaW1hZ2VVbml0SW5kZXggOiBw
cm9ncmFtLT5nZXRBY3RpdmVJbWFnZXNNYXNrKCkpCisgICAgQVNTRVJUKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA+PSBnbDo6RVNfM18xIHx8IHByb2dyYW0tPmdldEltYWdlQmluZGluZ3Mo
KS5lbXB0eSgpKTsKKyAgICBmb3IgKHNpemVfdCBpbWFnZVVuaXRJbmRleCA6IGV4ZWN1dGFibGUt
PmdldEFjdGl2ZUltYWdlc01hc2soKSkKICAgICB7CiAgICAgICAgIGNvbnN0IGdsOjpJbWFnZVVu
aXQgJmltYWdlVW5pdCA9IGdsU3RhdGUuZ2V0SW1hZ2VVbml0KGltYWdlVW5pdEluZGV4KTsKICAg
ICAgICAgY29uc3QgVGV4dHVyZUdMICp0ZXh0dXJlR0wgICAgID0gU2FmZUdldEltcGxBczxUZXh0
dXJlR0w+KGltYWdlVW5pdC50ZXh0dXJlLmdldCgpKTsKQEAgLTE3ODQsMTIgKzE3NjcsMTQgQEAg
dm9pZCBTdGF0ZU1hbmFnZXJHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9Q
Uk9HUkFNX0VYRUNVVEFCTEU6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHByb2dyYW0pCisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dy
YW0gICAgICAgICAgICAgID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IHN0YXRlLmdldFByb2dyYW1F
eGVjdXRhYmxlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbSAmJiBleGVjdXRhYmxl
KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaXRlci5zZXRMYXRlckJp
dChnbDo6U3RhdGU6OkRJUlRZX0JJVF9URVhUVVJFX0JJTkRJTkdTKTsKIAotICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvZ3JhbS0+Z2V0QWN0aXZlSW1hZ2VzTWFzaygpLmFueSgpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+Z2V0QWN0aXZlSW1hZ2VzTWFzaygpLmFueSgp
KQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyLnNl
dExhdGVyQml0KGdsOjpTdGF0ZTo6RElSVFlfQklUX0lNQUdFX0JJTkRJTkdTKTsKICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtMTgxNiw3ICsxODAxLDggQEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6
c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKCFwcm9ncmFtIHx8
ICFwcm9ncmFtLT5oYXNMaW5rZWRTaGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6Q29tcHV0ZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFwcm9ncmFtIHx8CisgICAgICAgICAgICAgICAgICAgICFw
cm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkuaGFzTGlua2VkU2hhZGVyU3RhZ2UoZ2w6OlNoYWRlclR5
cGU6OkNvbXB1dGUpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcHJv
cGFnYXRlUHJvZ3JhbVRvVkFPKHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZXRJbXBsQXM8VmVydGV4QXJyYXlHTD4oc3RhdGUuZ2V0VmVydGV4QXJy
YXkoKSkpOwpAQCAtMTg1MywxNCArMTgzOSw2IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNT
dGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0
YXRlOjpESVJUWV9CSVRfQ09WRVJBR0VfTU9EVUxBVElPTjoKICAgICAgICAgICAgICAgICBzZXRD
b3ZlcmFnZU1vZHVsYXRpb24oc3RhdGUuZ2V0Q292ZXJhZ2VNb2R1bGF0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9Q
QVRIX1JFTkRFUklORzoKLSAgICAgICAgICAgICAgICBzZXRQYXRoUmVuZGVyaW5nTW9kZWxWaWV3
TWF0cml4KAotICAgICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRQYXRoUmVuZGVyaW5nTWF0cml4
KEdMX1BBVEhfTU9ERUxWSUVXX01BVFJJWF9DSFJPTUlVTSkpOwotICAgICAgICAgICAgICAgIHNl
dFBhdGhSZW5kZXJpbmdQcm9qZWN0aW9uTWF0cml4KAotICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5nZXRQYXRoUmVuZGVyaW5nTWF0cml4KEdMX1BBVEhfUFJPSkVDVElPTl9NQVRSSVhfQ0hST01J
VU0pKTsKLSAgICAgICAgICAgICAgICBzZXRQYXRoUmVuZGVyaW5nU3RlbmNpbFN0YXRlKHN0YXRl
LmdldFBhdGhTdGVuY2lsRnVuYygpLCBzdGF0ZS5nZXRQYXRoU3RlbmNpbFJlZigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0UGF0aFN0ZW5j
aWxNYXNrKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6
U3RhdGU6OkRJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCOgogICAgICAgICAgICAgICAgIHNldEZy
YW1lYnVmZmVyU1JHQkVuYWJsZWRGb3JGcmFtZWJ1ZmZlcigKICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgc3RhdGUuZ2V0RnJhbWVidWZmZXJTUkdCKCksCkBAIC0yMDE5LDQxICsxOTk3LDYg
QEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0Q292ZXJhZ2VNb2R1bGF0aW9uKEdMZW51bSBjb21w
b25lbnRzKQogICAgIH0KIH0KIAotdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0UGF0aFJlbmRlcmlu
Z01vZGVsVmlld01hdHJpeChjb25zdCBHTGZsb2F0ICptKQotewotICAgIGlmIChtZW1jbXAobVBh
dGhNYXRyaXhNViwgbSwgc2l6ZW9mKG1QYXRoTWF0cml4TVYpKSAhPSAwKQotICAgIHsKLSAgICAg
ICAgbWVtY3B5KG1QYXRoTWF0cml4TVYsIG0sIHNpemVvZihtUGF0aE1hdHJpeE1WKSk7Ci0gICAg
ICAgIG1GdW5jdGlvbnMtPm1hdHJpeExvYWRmRVhUKEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVN
LCBtKTsKLQotICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklU
X1BBVEhfUkVOREVSSU5HKTsKLSAgICB9Ci19Ci0KLXZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFBh
dGhSZW5kZXJpbmdQcm9qZWN0aW9uTWF0cml4KGNvbnN0IEdMZmxvYXQgKm0pCi17Ci0gICAgaWYg
KG1lbWNtcChtUGF0aE1hdHJpeFByb2osIG0sIHNpemVvZihtUGF0aE1hdHJpeFByb2opKSAhPSAw
KQotICAgIHsKLSAgICAgICAgbWVtY3B5KG1QYXRoTWF0cml4UHJvaiwgbSwgc2l6ZW9mKG1QYXRo
TWF0cml4UHJvaikpOwotICAgICAgICBtRnVuY3Rpb25zLT5tYXRyaXhMb2FkZkVYVChHTF9QQVRI
X1BST0pFQ1RJT05fQ0hST01JVU0sIG0pOwotCi0gICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQo
Z2w6OlN0YXRlOjpESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkcpOwotICAgIH0KLX0KLQotdm9pZCBT
dGF0ZU1hbmFnZXJHTDo6c2V0UGF0aFJlbmRlcmluZ1N0ZW5jaWxTdGF0ZShHTGVudW0gZnVuYywg
R0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKLXsKLSAgICBpZiAoZnVuYyAhPSBtUGF0aFN0ZW5jaWxG
dW5jIHx8IHJlZiAhPSBtUGF0aFN0ZW5jaWxSZWYgfHwgbWFzayAhPSBtUGF0aFN0ZW5jaWxNYXNr
KQotICAgIHsKLSAgICAgICAgbVBhdGhTdGVuY2lsRnVuYyA9IGZ1bmM7Ci0gICAgICAgIG1QYXRo
U3RlbmNpbFJlZiAgPSByZWY7Ci0gICAgICAgIG1QYXRoU3RlbmNpbE1hc2sgPSBtYXNrOwotICAg
ICAgICBtRnVuY3Rpb25zLT5wYXRoU3RlbmNpbEZ1bmNOVihmdW5jLCByZWYsIG1hc2spOwotCi0g
ICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfUEFUSF9SRU5E
RVJJTkcpOwotICAgIH0KLX0KLQogdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0UHJvdm9raW5nVmVy
dGV4KEdMZW51bSBtb2RlKQogewogICAgIGlmIChtb2RlICE9IG1Qcm92b2tpbmdWZXJ0ZXgpCkBA
IC0yMTA4LDcgKzIwNTEsOCBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjpwcm9wYWdhdGVQcm9ncmFt
VG9WQU8oY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0sIFZlcnRleEFycgogICAgIC8vIEF0dHJp
YnV0ZSBlbmFibGVkIG1hc2s6CiAgICAgaWYgKHByb2dyYW0pCiAgICAgewotICAgICAgICB2YW8t
PmFwcGx5QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzayhwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJM
b2NhdGlvbnNNYXNrKCkpOworICAgICAgICB2YW8tPmFwcGx5QWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzaygKKyAgICAgICAgICAgIHByb2dyYW0tPmdldEV4ZWN1dGFibGUoKS5nZXRBY3RpdmVBdHRy
aWJMb2NhdGlvbnNNYXNrKCkpOwogICAgIH0KIH0KIApAQCAtMjEyNiw3ICsyMDcwLDcgQEAgdm9p
ZCBTdGF0ZU1hbmFnZXJHTDo6dXBkYXRlTXVsdGl2aWV3QmFzZVZpZXdMYXllckluZGV4VW5pZm9y
bUltcGwoCiAKIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTYW1wbGVyc1N0YXRlKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0KQogewotICAgIGNvbnN0IGdsOjpTdGF0ZTo6U2FtcGxlckJpbmRp
bmdWZWN0b3IgJnNhbXBsZXJzID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRTYW1wbGVycygpOwor
ICAgIGNvbnN0IGdsOjpTYW1wbGVyQmluZGluZ1ZlY3RvciAmc2FtcGxlcnMgPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldFNhbXBsZXJzKCk7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIG9wdGltaXpl
ZCBieSB1c2luZyBhIHNlcGFyYXRlIGJpbmRpbmcgZGlydHkgYml0IHBlciBzYW1wbGVyLgogICAg
IGZvciAoc2l6ZV90IHNhbXBsZXJJbmRleCA9IDA7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJzLnNp
emUoKTsgKytzYW1wbGVySW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oCmlu
ZGV4IDk3YTY4YjEzNzM3NDY3OTRmOGJjZWVhYTQyNmQ0MGJkZWFhNDE1OTkuLmY2ZDE3NDQ0NDdj
MGRiOGYyOTY5MGIyMzVmZDhiNTQ1ZWEyZTI3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1h
bmFnZXJHTC5oCkBAIC0xNTAsMTAgKzE1MCw2IEBAIGNsYXNzIFN0YXRlTWFuYWdlckdMIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICB2b2lkIHNldENvdmVyYWdlTW9kdWxhdGlvbihH
TGVudW0gY29tcG9uZW50cyk7CiAKLSAgICB2b2lkIHNldFBhdGhSZW5kZXJpbmdNb2RlbFZpZXdN
YXRyaXgoY29uc3QgR0xmbG9hdCAqbSk7Ci0gICAgdm9pZCBzZXRQYXRoUmVuZGVyaW5nUHJvamVj
dGlvbk1hdHJpeChjb25zdCBHTGZsb2F0ICptKTsKLSAgICB2b2lkIHNldFBhdGhSZW5kZXJpbmdT
dGVuY2lsU3RhdGUoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotCiAgICAg
dm9pZCBzZXRQcm92b2tpbmdWZXJ0ZXgoR0xlbnVtIG1vZGUpOwogCiAgICAgdm9pZCBwYXVzZVRy
YW5zZm9ybUZlZWRiYWNrKCk7CkBAIC0zNDQsMTIgKzM0MCw2IEBAIGNsYXNzIFN0YXRlTWFuYWdl
ckdMIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBHTGVudW0gbUNvdmVyYWdlTW9k
dWxhdGlvbjsKIAotICAgIEdMZmxvYXQgbVBhdGhNYXRyaXhNVlsxNl07Ci0gICAgR0xmbG9hdCBt
UGF0aE1hdHJpeFByb2pbMTZdOwotICAgIEdMZW51bSBtUGF0aFN0ZW5jaWxGdW5jOwotICAgIEdM
aW50IG1QYXRoU3RlbmNpbFJlZjsKLSAgICBHTHVpbnQgbVBhdGhTdGVuY2lsTWFzazsKLQogICAg
IGNvbnN0IGJvb2wgbUlzTXVsdGl2aWV3RW5hYmxlZDsKIAogICAgIEdMZW51bSBtUHJvdm9raW5n
VmVydGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcAppbmRleCBjNTYyODk2MTkwNTAwNGI4
ODA1YTZmYTVjNTIxZGExYjQ3MzJjMDE4Li4wMTY1MmY5MzliYmI1MmEyNjJmZmQ3ZGU3MjVjYzNk
ZjI3ODhlZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcApAQCAtNzQ5LDggKzc0OSw4
IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZUdMOjpjb3B5U3ViSW1hZ2UoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQogewotICAgIGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMgPSBHZXRGdW5jdGlvbnNHTChjb250ZXh0KTsKLSAgICBTdGF0ZU1hbmFn
ZXJHTCAqc3RhdGVNYW5hZ2VyID0gR2V0U3RhdGVNYW5hZ2VyR0woY29udGV4dCk7CisgICAgY29u
c3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyAgICAgID0gR2V0RnVuY3Rpb25zR0woY29udGV4dCk7
CisgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciAgICAgID0gR2V0U3RhdGVNYW5hZ2Vy
R0woY29udGV4dCk7CiAgICAgY29uc3QgYW5nbGU6OkZlYXR1cmVzR0wgJmZlYXR1cmVzID0gR2V0
RmVhdHVyZXNHTChjb250ZXh0KTsKIAogICAgIGdsOjpUZXh0dXJlVGFyZ2V0IHRhcmdldCAgICAg
ICAgICAgICAgICAgPSBpbmRleC5nZXRUYXJnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlz
cGxheUNHTC5tbQppbmRleCBjZDhhNmNhNmIyOGNjM2I3ZmM0NjkyZDllNGExZjg5ZTJjYjRiMzgy
Li5hZTkwNzc2ZGE1ODQ1YzlkMGZhMzE5YzQwNTNmNzE0NDU5YWY1MjVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3Bs
YXlDR0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCkBAIC0yNTksNiArMjU5LDggQEAgZWdsOjpDb25maWdT
ZXQgRGlzcGxheUNHTDo6Z2VuZXJhdGVDb25maWdzKCkKICAgICBjb25maWcuYmluZFRvVGV4dHVy
ZVJHQiAgPSBFR0xfRkFMU0U7CiAgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gRUdMX0ZB
TFNFOwogCisgICAgY29uZmlnLmJpbmRUb1RleHR1cmVUYXJnZXQgPSBFR0xfVEVYVFVSRV9SRUNU
QU5HTEVfQU5HTEU7CisKICAgICBjb25maWcuc3VyZmFjZVR5cGUgPSBFR0xfV0lORE9XX0JJVCB8
IEVHTF9QQlVGRkVSX0JJVDsKIAogICAgIGNvbmZpZy5taW5Td2FwSW50ZXJ2YWwgPSAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VhZ2wvRGlzcGxheUVBR0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWFnbC9EaXNwbGF5RUFHTC5tbQppbmRleCA3OTdkM2I3NWM1MmY3Yzc1
ZWZjMjI5ZTQ0MzM1Zjg1ODBmZGQ3MDBjLi44NTgwNDQxMWQ1MzhjNGIzYWZiMDNmNzllZTg0ZjIw
ZDMyMTMzYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWFnbC9EaXNwbGF5RUFHTC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWFnbC9EaXNwbGF5RUFHTC5tbQpAQCAt
MjA1LDYgKzIwNSwxMiBAQCBlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5RUFHTDo6Z2VuZXJhdGVDb25m
aWdzKCkKICAgICBjb25maWcuYmluZFRvVGV4dHVyZVJHQiAgPSBFR0xfRkFMU0U7CiAgICAgY29u
ZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gRUdMX0ZBTFNFOwogCisjICAgIGlmICFBTkdMRV9QTEFU
Rk9STV9NQUNDQVRBTFlTVAorICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlVGFyZ2V0ID0gRUdMX1RF
WFRVUkVfMkQ7CisjICAgIGVsc2UKKyAgICBjb25maWcuYmluZFRvVGV4dHVyZVRhcmdldCA9IEVH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKKyMgICAgZW5kaWYKKwogICAgIGNvbmZpZy5zdXJm
YWNlVHlwZSA9IEVHTF9XSU5ET1dfQklUIHwgRUdMX1BCVUZGRVJfQklUOwogCiAgICAgY29uZmln
Lm1pblN3YXBJbnRlcnZhbCA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmNw
cAppbmRleCA1MWU1YmIyNTEzZDU5NzM1NGFkN2RmNDA2ZDc0MjUxN2IwNzkyYmUyLi4zYmY1MzJj
MWQzYmFkMGVjNWM1MGEyNzQ0ZmIzYTlmN2ZjNjdhMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9l
Z2wvRGlzcGxheUVHTC5jcHAKQEAgLTgsMTYgKzgsMTAxIEBACiAKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oIgogCisjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Rp
c3BsYXkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvUmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9Db250
ZXh0RUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VH
TERMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0ltYWdlRUdMLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1JlbmRlcmVyRUdMLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N5bmNFR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKIAotbmFtZXNwYWNlIHJ4CituYW1lc3Bh
Y2UKK3sKKworRUdMaW50IEVTQml0RnJvbVBsYXRmb3JtQXR0cmliKGNvbnN0IHJ4OjpGdW5jdGlv
bnNFR0wgKmVnbCwgY29uc3QgRUdMQXR0cmliIHBsYXRmb3JtQXR0cmliKQogeworICAgIEVHTGlu
dCBlc0JpdCA9IEVHTF9OT05FOworICAgIHN3aXRjaCAocGxhdGZvcm1BdHRyaWIpCisgICAgewor
ICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRToKKyAgICAg
ICAgeworICAgICAgICAgICAgZXNCaXQgPSBFR0xfT1BFTkdMX0JJVDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xFU19BTkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChFR0xf
T1BFTkdMX0VTM19CSVQgPT0gRUdMX09QRU5HTF9FUzNfQklUX0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkV4dGVuc2lvbiBkZWZpbmUgbXVzdCBtYXRjaCBjb3JlIik7CisKKyAgICAg
ICAgICAgIGdsOjpWZXJzaW9uIGVnbFZlcnNpb24oZWdsLT5tYWpvclZlcnNpb24sIGVnbC0+bWlu
b3JWZXJzaW9uKTsKKyAgICAgICAgICAgIGVzQml0ID0gKGVnbFZlcnNpb24gPj0gZ2w6OlZlcnNp
b24oMSwgNSkgfHwgZWdsLT5oYXNFeHRlbnNpb24oIkVHTF9LSFJfY3JlYXRlX2NvbnRleHQiKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgID8gRUdMX09QRU5HTF9FUzNfQklUCisgICAgICAgICAg
ICAgICAgICAgICAgICA6IEVHTF9PUEVOR0xfRVMyX0JJVDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAKLSNkZWZpbmUgRUdMX05PX0NPTkZJRyAoKEVHTENvbmZpZykwKQorICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBlc0JpdDsK
K30KKworY2xhc3MgV29ya2VyQ29udGV4dEVHTCBmaW5hbCA6IHB1YmxpYyByeDo6V29ya2VyQ29u
dGV4dAoreworICBwdWJsaWM6CisgICAgV29ya2VyQ29udGV4dEVHTChFR0xDb250ZXh0IGNvbnRl
eHQsIHJ4OjpGdW5jdGlvbnNFR0wgKmZ1bmN0aW9ucywgRUdMU3VyZmFjZSBwYnVmZmVyKTsKKyAg
ICB+V29ya2VyQ29udGV4dEVHTCgpIG92ZXJyaWRlOworCisgICAgYm9vbCBtYWtlQ3VycmVudCgp
IG92ZXJyaWRlOworICAgIHZvaWQgdW5tYWtlQ3VycmVudCgpIG92ZXJyaWRlOworCisgIHByaXZh
dGU6CisgICAgRUdMQ29udGV4dCBtQ29udGV4dDsKKyAgICByeDo6RnVuY3Rpb25zRUdMICptRnVu
Y3Rpb25zOworICAgIEVHTFN1cmZhY2UgbVBidWZmZXI7Cit9OworCitXb3JrZXJDb250ZXh0RUdM
OjpXb3JrZXJDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcng6OkZ1bmN0aW9uc0VHTCAqZnVuY3Rpb25zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHBidWZmZXIpCisgICAgOiBtQ29u
dGV4dChjb250ZXh0KSwgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBtUGJ1ZmZlcihwYnVmZmVyKQor
e30KKworV29ya2VyQ29udGV4dEVHTDo6fldvcmtlckNvbnRleHRFR0woKQoreworICAgIG1GdW5j
dGlvbnMtPmRlc3Ryb3lDb250ZXh0KG1Db250ZXh0KTsKK30KKworYm9vbCBXb3JrZXJDb250ZXh0
RUdMOjptYWtlQ3VycmVudCgpCit7CisgICAgaWYgKG1GdW5jdGlvbnMtPm1ha2VDdXJyZW50KG1Q
YnVmZmVyLCBtQ29udGV4dCkgPT0gRUdMX0ZBTFNFKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwg
IlVuYWJsZSB0byBtYWtlIHRoZSBFR0wgY29udGV4dCBjdXJyZW50LiI7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29ya2VyQ29udGV4
dEVHTDo6dW5tYWtlQ3VycmVudCgpCit7CisgICAgbUZ1bmN0aW9ucy0+bWFrZUN1cnJlbnQoRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKK25h
bWVzcGFjZSByeAorewogCiBEaXNwbGF5RUdMOjpEaXNwbGF5RUdMKGNvbnN0IGVnbDo6RGlzcGxh
eVN0YXRlICZzdGF0ZSkKLSAgICA6IERpc3BsYXlHTChzdGF0ZSksIG1FR0wobnVsbHB0ciksIG1D
b25maWcoRUdMX05PX0NPTkZJRykKKyAgICA6IERpc3BsYXlHTChzdGF0ZSksIG1SZW5kZXJlcihu
dWxscHRyKSwgbUVHTChudWxscHRyKSwgbUNvbmZpZyhFR0xfTk9fQ09ORklHX0tIUikKIHt9CiAK
IERpc3BsYXlFR0w6On5EaXNwbGF5RUdMKCkge30KQEAgLTExMSw2ICsxOTYsMzkyIEBAIGVnbDo6
RXJyb3IgRGlzcGxheUVHTDo6aW5pdGlhbGl6ZUNvbnRleHQoRUdMQ29udGV4dCBzaGFyZUNvbnRl
eHQsCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IobUVHTC0+Z2V0RXJyb3IoKSwgImVnbENyZWF0ZUNv
bnRleHQgZmFpbGVkIik7CiB9CiAKK2VnbDo6RXJyb3IgRGlzcGxheUVHTDo6aW5pdGlhbGl6ZShl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7CisgICAgbURpc3BsYXlBdHRyaWJ1dGVzID0gZGlzcGxh
eS0+Z2V0QXR0cmlidXRlTWFwKCk7CisgICAgbUVHTCAgICAgICAgICAgICAgID0gbmV3IEZ1bmN0
aW9uc0VHTERMKCk7CisKKyAgICB2b2lkICplZ2xIYW5kbGUgPQorICAgICAgICByZWludGVycHJl
dF9jYXN0PHZvaWQgKj4obURpc3BsYXlBdHRyaWJ1dGVzLmdldChFR0xfUExBVEZPUk1fQU5HTEVf
RUdMX0hBTkRMRV9BTkdMRSwgMCkpOworICAgIEFOR0xFX1RSWShtRUdMLT5pbml0aWFsaXplKGRp
c3BsYXktPmdldE5hdGl2ZURpc3BsYXlJZCgpLCAibGliRUdMLnNvLjEiLCBlZ2xIYW5kbGUpKTsK
KworICAgIGdsOjpWZXJzaW9uIGVnbFZlcnNpb24obUVHTC0+bWFqb3JWZXJzaW9uLCBtRUdMLT5t
aW5vclZlcnNpb24pOworICAgIGlmIChlZ2xWZXJzaW9uIDwgZ2w6OlZlcnNpb24oMSwgNCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZWdsOjpFZ2xOb3RJbml0aWFsaXplZCgpIDw8ICJFR0wgPj0g
MS40IGlzIHJlcXVpcmVkIjsKKyAgICB9CisKKyAgICAvLyBPbmx5IHN1cHBvcnQgbW9kZXJuIEVH
TCBpbXBsZW1lbnRhdGlvbiB0byBrZWVwIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAvLyBz
aW1wbGUuCisgICAgY29uc3QgY2hhciAqbmVjZXNzYXJ5RXh0ZW5zaW9uc1tdID0geworICAgICAg
ICAiRUdMX0tIUl9ub19jb25maWdfY29udGV4dCIsCisgICAgICAgICJFR0xfS0hSX3N1cmZhY2Vs
ZXNzX2NvbnRleHQiLAorICAgIH07CisKKyAgICBmb3IgKGNvbnN0IGNoYXIgKmV4dCA6IG5lY2Vz
c2FyeUV4dGVuc2lvbnMpCisgICAgeworICAgICAgICBpZiAoIW1FR0wtPmhhc0V4dGVuc2lvbihl
eHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpFZ2xOb3RJbml0aWFsaXpl
ZCgpIDw8ICJuZWVkICIgPDwgZXh0OworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgRUdM
QXR0cmliIHBsYXRmb3JtQXR0cmliID0gbURpc3BsYXlBdHRyaWJ1dGVzLmdldChFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9BTkdMRSwgMCk7CisgICAgRUdMaW50IGVzQml0ICAgICAgICAgICAgICAg
ICAgID0gRVNCaXRGcm9tUGxhdGZvcm1BdHRyaWIobUVHTCwgcGxhdGZvcm1BdHRyaWIpOworICAg
IGlmIChlc0JpdCA9PSBFR0xfTk9ORSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVnbE5v
dEluaXRpYWxpemVkKCkgPDwgIk5vIG1hdGNoaW5nIEVTIEJpdCI7CisgICAgfQorCisgICAgc3Rk
Ojp2ZWN0b3I8RUdMaW50PiBjb25maWdBdHRyaWJMaXN0QmFzZSA9IHsKKyAgICAgICAgRUdMX0NP
TE9SX0JVRkZFUl9UWVBFLCBFR0xfUkdCX0JVRkZFUiwgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX1dJ
TkRPV19CSVQgfCBFR0xfUEJVRkZFUl9CSVQsCisgICAgICAgIEVHTF9DT05GSUdfQ0FWRUFULCAg
ICAgRUdMX05PTkUsICAgICAgIEVHTF9DT05GT1JNQU5ULCAgIGVzQml0LAorICAgICAgICBFR0xf
UkVOREVSQUJMRV9UWVBFLCAgIGVzQml0LCAgICAgICAgICBFR0xfTk9ORX07CisKKyAgICBtQ29u
ZmlnQXR0cmliTGlzdCA9IGNvbmZpZ0F0dHJpYkxpc3RCYXNlOworCisgICAgRUdMQ29udGV4dCBj
b250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7CisgICAgbmF0aXZlX2VnbDo6QXR0cmlidXRlVmVjdG9y
IGF0dHJpYnM7CisgICAgQU5HTEVfVFJZKGluaXRpYWxpemVDb250ZXh0KEVHTF9OT19DT05URVhU
LCBtRGlzcGxheUF0dHJpYnV0ZXMsICZjb250ZXh0LCAmYXR0cmlicykpOworCisgICAgaWYgKCFt
RUdMLT5tYWtlQ3VycmVudChFR0xfTk9fU1VSRkFDRSwgY29udGV4dCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZWdsOjpFZ2xOb3RJbml0aWFsaXplZCgpIDw8ICJDb3VsZCBub3QgbWFrZSBjb250
ZXh0IGN1cnJlbnQuIjsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25zR0w+
IGZ1bmN0aW9uc0dMKG1FR0wtPm1ha2VGdW5jdGlvbnNHTCgpKTsKKyAgICBmdW5jdGlvbnNHTC0+
aW5pdGlhbGl6ZShtRGlzcGxheUF0dHJpYnV0ZXMpOworCisgICAgbVJlbmRlcmVyLnJlc2V0KAor
ICAgICAgICBuZXcgUmVuZGVyZXJFR0woc3RkOjptb3ZlKGZ1bmN0aW9uc0dMKSwgbURpc3BsYXlB
dHRyaWJ1dGVzLCB0aGlzLCBjb250ZXh0LCBhdHRyaWJzKSk7CisgICAgY29uc3QgZ2w6OlZlcnNp
b24gJm1heFZlcnNpb24gPSBtUmVuZGVyZXItPmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpOwor
ICAgIGlmIChtYXhWZXJzaW9uIDwgZ2w6OlZlcnNpb24oMiwgMCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZWdsOjpFZ2xOb3RJbml0aWFsaXplZCgpIDw8ICJPcGVuR0wgRVMgMi4wIGlzIG5vdCBz
dXBwb3J0YWJsZS4iOworICAgIH0KKworICAgIEFOR0xFX1RSWShEaXNwbGF5R0w6OmluaXRpYWxp
emUoZGlzcGxheSkpOworCisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCit2b2lkIERp
c3BsYXlFR0w6OnRlcm1pbmF0ZSgpCit7CisgICAgRGlzcGxheUdMOjp0ZXJtaW5hdGUoKTsKKwor
ICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPm1ha2VDdXJyZW50KEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fQ09OVEVYVCk7CisgICAgaWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQorICAgIHsK
KyAgICAgICAgRVJSKCkgPDwgImVnbE1ha2VDdXJyZW50IGVycm9yICIgPDwgZWdsOjpFcnJvciht
RUdMLT5nZXRFcnJvcigpKTsKKyAgICB9CisKKyAgICBtUmVuZGVyZXIucmVzZXQoKTsKKworICAg
IGVnbDo6RXJyb3IgcmVzdWx0ID0gbUVHTC0+dGVybWluYXRlKCk7CisgICAgaWYgKHJlc3VsdC5p
c0Vycm9yKCkpCisgICAgeworICAgICAgICBFUlIoKSA8PCAiZWdsVGVybWluYXRlIGVycm9yICIg
PDwgcmVzdWx0OworICAgIH0KKworICAgIFNhZmVEZWxldGUobUVHTCk7Cit9CisKK1N1cmZhY2VJ
bXBsICpEaXNwbGF5RUdMOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7Cisg
ICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBFR0xpbnQgbnVtQ29uZmlnOworICAgIEVHTEJvb2xl
YW4gc3VjY2VzczsKKworICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJMaXN0W10gPSB7RUdM
X0NPTkZJR19JRCwgbUNvbmZpZ0lkc1tzdGF0ZS5jb25maWctPmNvbmZpZ0lEXSwgRUdMX05PTkV9
OworICAgIHN1Y2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgPSBtRUdMLT5jaG9vc2VDb25m
aWcoY29uZmlnQXR0cmliTGlzdCwgJmNvbmZpZywgMSwgJm51bUNvbmZpZyk7CisgICAgQVNTRVJU
KHN1Y2Nlc3MgJiYgbnVtQ29uZmlnID09IDEpOworCisgICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJm
YWNlRUdMKHN0YXRlLCBtRUdMLCBjb25maWcsIHdpbmRvdyk7Cit9CisKK1N1cmZhY2VJbXBsICpE
aXNwbGF5RUdMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgRUdMQ29uZmlnIGNvbmZpZzsK
KyAgICBFR0xpbnQgbnVtQ29uZmlnOworICAgIEVHTEJvb2xlYW4gc3VjY2VzczsKKworICAgIGNv
bnN0IEVHTGludCBjb25maWdBdHRyaWJMaXN0W10gPSB7RUdMX0NPTkZJR19JRCwgbUNvbmZpZ0lk
c1tzdGF0ZS5jb25maWctPmNvbmZpZ0lEXSwgRUdMX05PTkV9OworICAgIHN1Y2Nlc3MgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBtRUdMLT5jaG9vc2VDb25maWcoY29uZmlnQXR0cmliTGlzdCwg
JmNvbmZpZywgMSwgJm51bUNvbmZpZyk7CisgICAgQVNTRVJUKHN1Y2Nlc3MgJiYgbnVtQ29uZmln
ID09IDEpOworCisgICAgcmV0dXJuIG5ldyBQYnVmZmVyU3VyZmFjZUVHTChzdGF0ZSwgbUVHTCwg
Y29uZmlnKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlFR0w6OmNyZWF0ZVBidWZmZXJGcm9t
Q2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5RUdMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVn
bDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitDb250ZXh0SW1wbCAqRGlzcGxheUVHTDo6Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkVy
cm9yU2V0ICplcnJvclNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzKQoreworICAgIHN0ZDo6c2hhcmVkX3B0cjxSZW5kZXJlckVHTD4gcmVuZGVyZXI7
CisgICAgRUdMQ29udGV4dCBuYXRpdmVTaGFyZUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKKyAg
ICBpZiAoc2hhcmVDb250ZXh0KQorICAgIHsKKyAgICAgICAgQ29udGV4dEVHTCAqc2hhcmVDb250
ZXh0RUdMID0gR2V0SW1wbEFzPENvbnRleHRFR0w+KHNoYXJlQ29udGV4dCk7CisgICAgICAgIG5h
dGl2ZVNoYXJlQ29udGV4dCAgICAgICAgICA9IHNoYXJlQ29udGV4dEVHTC0+Z2V0Q29udGV4dCgp
OworICAgIH0KKworICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVSZW5kZXJlcihuYXRpdmVT
aGFyZUNvbnRleHQsICZyZW5kZXJlcik7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7
CisgICAgICAgIEVSUigpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGEgc2hhcmVkIHJlbmRlcmVyOiAi
IDw8IGVycm9yLmdldE1lc3NhZ2UoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgcmV0dXJuIG5ldyBDb250ZXh0RUdMKHN0YXRlLCBlcnJvclNldCwgcmVuZGVyZXIpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgRGlzcGxheUVHTDo6Z2V0Q29uZmlnQXR0
cmliKEVHTENvbmZpZyBjb25maWcsIEVHTGludCBhdHRyaWJ1dGUsIFQgKnZhbHVlKSBjb25zdAor
eworICAgIEVHTGludCB0bXA7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+Z2V0Q29u
ZmlnQXR0cmliKGNvbmZpZywgYXR0cmlidXRlLCAmdG1wKTsKKyAgICBBU1NFUlQoc3VjY2VzcyA9
PSBFR0xfVFJVRSk7CisgICAgKnZhbHVlID0gdG1wOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KK3ZvaWQgRGlzcGxheUVHTDo6Z2V0Q29uZmlnQXR0cmliSWZFeHRlbnNp
b24oRUdMQ29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVSAmZGVmYXVsdFZhbHVlKSBjb25zdAorewor
ICAgIGlmIChtRUdMLT5oYXNFeHRlbnNpb24oZXh0ZW5zaW9uKSkKKyAgICB7CisgICAgICAgIGdl
dENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxUPihkZWZhdWx0VmFsdWUpOwor
ICAgIH0KK30KKworZWdsOjpDb25maWdTZXQgRGlzcGxheUVHTDo6Z2VuZXJhdGVDb25maWdzKCkK
K3sKKyAgICBlZ2w6OkNvbmZpZ1NldCBjb25maWdTZXQ7CisgICAgbUNvbmZpZ0lkcy5jbGVhcigp
OworCisgICAgRUdMaW50IG51bUNvbmZpZ3M7CisgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVH
TC0+Y2hvb3NlQ29uZmlnKG1Db25maWdBdHRyaWJMaXN0LmRhdGEoKSwgbnVsbHB0ciwgMCwgJm51
bUNvbmZpZ3MpOworICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFICYmIG51bUNvbmZpZ3Mg
PiAwKTsKKworICAgIHN0ZDo6dmVjdG9yPEVHTENvbmZpZz4gY29uZmlncyhudW1Db25maWdzKTsK
KyAgICBFR0xpbnQgbnVtQ29uZmlnczI7CisgICAgc3VjY2VzcyA9CisgICAgICAgIG1FR0wtPmNo
b29zZUNvbmZpZyhtQ29uZmlnQXR0cmliTGlzdC5kYXRhKCksIGNvbmZpZ3MuZGF0YSgpLCBudW1D
b25maWdzLCAmbnVtQ29uZmlnczIpOworICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFICYm
IG51bUNvbmZpZ3MyID09IG51bUNvbmZpZ3MpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1Db25maWdzOyBpKyspCisgICAgeworICAgICAgICBlZ2w6OkNvbmZpZyBjb25maWc7CisKKyAg
ICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9CVUZGRVJfU0laRSwgJmNvbmZp
Zy5idWZmZXJTaXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9S
RURfU0laRSwgJmNvbmZpZy5yZWRTaXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZp
Z3NbaV0sIEVHTF9HUkVFTl9TSVpFLCAmY29uZmlnLmdyZWVuU2l6ZSk7CisgICAgICAgIGdldENv
bmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfQkxVRV9TSVpFLCAmY29uZmlnLmJsdWVTaXplKTsK
KyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9MVU1JTkFOQ0VfU0laRSwg
JmNvbmZpZy5sdW1pbmFuY2VTaXplKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3Nb
aV0sIEVHTF9BTFBIQV9TSVpFLCAmY29uZmlnLmFscGhhU2l6ZSk7CisgICAgICAgIGdldENvbmZp
Z0F0dHJpYihjb25maWdzW2ldLCBFR0xfQUxQSEFfTUFTS19TSVpFLCAmY29uZmlnLmFscGhhTWFz
a1NpemUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0JJTkRfVE9f
VEVYVFVSRV9SR0IsICZjb25maWcuYmluZFRvVGV4dHVyZVJHQik7CisgICAgICAgIGdldENvbmZp
Z0F0dHJpYihjb25maWdzW2ldLCBFR0xfQklORF9UT19URVhUVVJFX1JHQkEsICZjb25maWcuYmlu
ZFRvVGV4dHVyZVJHQkEpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdM
X0NPTE9SX0JVRkZFUl9UWVBFLCAmY29uZmlnLmNvbG9yQnVmZmVyVHlwZSk7CisgICAgICAgIGdl
dENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfQ09ORklHX0NBVkVBVCwgJmNvbmZpZy5jb25m
aWdDYXZlYXQpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0NPTkZJ
R19JRCwgJmNvbmZpZy5jb25maWdJRCk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfQ09ORk9STUFOVCwgJmNvbmZpZy5jb25mb3JtYW50KTsKKyAgICAgICAgZ2V0Q29u
ZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9ERVBUSF9TSVpFLCAmY29uZmlnLmRlcHRoU2l6ZSk7
CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTEVWRUwsICZjb25maWcu
bGV2ZWwpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01BWF9QQlVG
RkVSX1dJRFRILCAmY29uZmlnLm1heFBCdWZmZXJXaWR0aCk7CisgICAgICAgIGdldENvbmZpZ0F0
dHJpYihjb25maWdzW2ldLCBFR0xfTUFYX1BCVUZGRVJfSEVJR0hULCAmY29uZmlnLm1heFBCdWZm
ZXJIZWlnaHQpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01BWF9Q
QlVGRkVSX1BJWEVMUywgJmNvbmZpZy5tYXhQQnVmZmVyUGl4ZWxzKTsKKyAgICAgICAgZ2V0Q29u
ZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NQVhfU1dBUF9JTlRFUlZBTCwgJmNvbmZpZy5tYXhT
d2FwSW50ZXJ2YWwpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01J
Tl9TV0FQX0lOVEVSVkFMLCAmY29uZmlnLm1pblN3YXBJbnRlcnZhbCk7CisgICAgICAgIGdldENv
bmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTkFUSVZFX1JFTkRFUkFCTEUsICZjb25maWcubmF0
aXZlUmVuZGVyYWJsZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xf
TkFUSVZFX1ZJU1VBTF9JRCwgJmNvbmZpZy5uYXRpdmVWaXN1YWxJRCk7CisgICAgICAgIGdldENv
bmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFLCAmY29uZmlnLm5h
dGl2ZVZpc3VhbFR5cGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdM
X1JFTkRFUkFCTEVfVFlQRSwgJmNvbmZpZy5yZW5kZXJhYmxlVHlwZSk7CisgICAgICAgIGdldENv
bmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfU0FNUExFX0JVRkZFUlMsICZjb25maWcuc2FtcGxl
QnVmZmVycyk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfU0FNUExF
UywgJmNvbmZpZy5zYW1wbGVzKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0s
IEVHTF9TVEVOQ0lMX1NJWkUsICZjb25maWcuc3RlbmNpbFNpemUpOworICAgICAgICBnZXRDb25m
aWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1NVUkZBQ0VfVFlQRSwgJmNvbmZpZy5zdXJmYWNlVHlw
ZSk7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJFTlRf
VFlQRSwgJmNvbmZpZy50cmFuc3BhcmVudFR5cGUpOworICAgICAgICBnZXRDb25maWdBdHRyaWIo
Y29uZmlnc1tpXSwgRUdMX1RSQU5TUEFSRU5UX1JFRF9WQUxVRSwgJmNvbmZpZy50cmFuc3BhcmVu
dFJlZFZhbHVlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFO
U1BBUkVOVF9HUkVFTl9WQUxVRSwgJmNvbmZpZy50cmFuc3BhcmVudEdyZWVuVmFsdWUpOworICAg
ICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFM
VUUsICZjb25maWcudHJhbnNwYXJlbnRCbHVlVmFsdWUpOworICAgICAgICBnZXRDb25maWdBdHRy
aWJJZkV4dGVuc2lvbihjb25maWdzW2ldLCBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29uZmlnLmNvbG9yQ29tcG9uZW50
VHlwZSwgIkVHTF9FWFRfcGl4ZWxfZm9ybWF0X2Zsb2F0IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZJWEVEX0VYVCk7CisKKyAg
ICAgICAgaWYgKGNvbmZpZy5jb2xvckJ1ZmZlclR5cGUgPT0gRUdMX1JHQl9CVUZGRVIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjb25maWcuY29sb3JDb21wb25lbnRUeXBlID09IEVH
TF9DT0xPUl9DT01QT05FTlRfVFlQRV9GSVhFRF9FWFQpOworICAgICAgICAgICAgaWYgKGNvbmZp
Zy5yZWRTaXplID09IDggJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5ibHVlU2l6
ZSA9PSA4ICYmCisgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSA4KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9S
R0JBODsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5yZWRTaXpl
ID09IDggJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA4ICYmIGNvbmZpZy5ibHVlU2l6ZSA9PSA4ICYm
CisgICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFTaXplID09IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9IEdMX1JHQjg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjb25maWcucmVkU2l6ZSA9PSA1
ICYmIGNvbmZpZy5ncmVlblNpemUgPT0gNiAmJiBjb25maWcuYmx1ZVNpemUgPT0gNSAmJgorICAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSAwKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0I1NjU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjb25maWcucmVkU2l6ZSA9PSA1ICYm
IGNvbmZpZy5ncmVlblNpemUgPT0gNSAmJiBjb25maWcuYmx1ZVNpemUgPT0gNSAmJgorICAgICAg
ICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSAxKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0I1X0ExOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY29uZmlnLnJlZFNpemUgPT0gNCAmJiBj
b25maWcuZ3JlZW5TaXplID09IDQgJiYgY29uZmlnLmJsdWVTaXplID09IDQgJiYKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUgPT0gNCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb25maWcucmVuZGVyVGFyZ2V0Rm9ybWF0ID0gR0xfUkdCQTQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
RVJSKCkgPDwgIlJHQkEoIiA8PCBjb25maWcucmVkU2l6ZSA8PCAiLCIgPDwgY29uZmlnLmdyZWVu
U2l6ZSA8PCAiLCIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBjb25maWcuYmx1ZVNpemUgPDwg
IiwiIDw8IGNvbmZpZy5hbHBoYVNpemUgPDwgIikgbm90IGhhbmRsZWQiOworICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGNvbmZpZy5kZXB0aFNpemUgPT0gMCAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdM
X1pFUk87CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAx
NiAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
ZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDE2OworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKGNvbmZpZy5kZXB0aFNpemUgPT0gMjQgJiYgY29uZmlnLnN0ZW5j
aWxTaXplID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxG
b3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQyNDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChjb25maWcuZGVwdGhTaXplID09IDI0ICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSA4KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgy
NF9TVEVOQ0lMODsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjb25maWcuZGVwdGhTaXpl
ID09IDAgJiYgY29uZmlnLnN0ZW5jaWxTaXplID09IDgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9TVEVOQ0lMX0lOREVYODsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBjb25maWcubWF0Y2hOYXRpdmVQaXhtYXAgID0gRUdMX05PTkU7
CisgICAgICAgIGNvbmZpZy5vcHRpbWFsT3JpZW50YXRpb24gPSAwOworCisgICAgICAgIGludCBp
bnRlcm5hbElkICAgICAgICAgPSBjb25maWdTZXQuYWRkKGNvbmZpZyk7CisgICAgICAgIG1Db25m
aWdJZHNbaW50ZXJuYWxJZF0gPSBjb25maWcuY29uZmlnSUQ7CisgICAgfQorCisgICAgcmV0dXJu
IGNvbmZpZ1NldDsKK30KKworYm9vbCBEaXNwbGF5RUdMOjp0ZXN0RGV2aWNlTG9zdCgpCit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitlZ2w6OkVycm9yIERpc3BsYXlFR0w6OnJlc3RvcmVMb3N0
RGV2aWNlKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitib29sIERpc3BsYXlFR0w6Omlz
VmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK0RldmljZUltcGwgKkRpc3BsYXlFR0w6OmNyZWF0ZURldmlj
ZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitl
Z2w6OkVycm9yIERpc3BsYXlFR0w6OndhaXRDbGllbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsK
K30KKworZWdsOjpFcnJvciBEaXNwbGF5RUdMOjp3YWl0TmF0aXZlKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LCBFR0xpbnQgZW5naW5lKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheUVHTDo6bWFrZUN1
cnJlbnQoZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgRUdMU3VyZmFj
ZSBuZXdTdXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7CisgICAgaWYgKGRyYXdTdXJmYWNlKQorICAg
IHsKKyAgICAgICAgU3VyZmFjZUVHTCAqZHJhd1N1cmZhY2VFR0wgPSBHZXRJbXBsQXM8U3VyZmFj
ZUVHTD4oZHJhd1N1cmZhY2UpOworICAgICAgICBuZXdTdXJmYWNlICAgICAgICAgICAgICAgICA9
IGRyYXdTdXJmYWNlRUdMLT5nZXRTdXJmYWNlKCk7CisgICAgfQorCisgICAgRUdMQ29udGV4dCBu
ZXdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAg
ICAgICBDb250ZXh0RUdMICpjb250ZXh0RUdMID0gR2V0SW1wbEFzPENvbnRleHRFR0w+KGNvbnRl
eHQpOworICAgICAgICBuZXdDb250ZXh0ICAgICAgICAgICAgID0gY29udGV4dEVHTC0+Z2V0Q29u
dGV4dCgpOworICAgIH0KKworICAgIGlmIChtRUdMLT5tYWtlQ3VycmVudChuZXdTdXJmYWNlLCBu
ZXdDb250ZXh0KSA9PSBFR0xfRkFMU0UpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihtRUdMLT5nZXRFcnJvcigpLCAiZWdsTWFrZUN1cnJlbnQgZmFpbGVkIik7CisgICAgfQorCisg
ICAgcmV0dXJuIERpc3BsYXlHTDo6bWFrZUN1cnJlbnQoZHJhd1N1cmZhY2UsIHJlYWRTdXJmYWNl
LCBjb250ZXh0KTsKK30KKworZ2w6OlZlcnNpb24gRGlzcGxheUVHTDo6Z2V0TWF4U3VwcG9ydGVk
RVNWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0
ZWRFU1ZlcnNpb24oKTsKK30KKwordm9pZCBEaXNwbGF5RUdMOjpkZXN0cm95TmF0aXZlQ29udGV4
dChFR0xDb250ZXh0IGNvbnRleHQpCit7CisgICAgbUVHTC0+ZGVzdHJveUNvbnRleHQoY29udGV4
dCk7Cit9CisKIHZvaWQgRGlzcGxheUVHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxh
eUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7CiAgICAgZ2w6OlZlcnNpb24gZWds
VmVyc2lvbihtRUdMLT5tYWpvclZlcnNpb24sIG1FR0wtPm1pbm9yVmVyc2lvbik7CkBAIC0xNjgs
NiArNjM5LDggQEAgdm9pZCBEaXNwbGF5RUdMOjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNw
bGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKIAogICAgIG91dEV4dGVuc2lvbnMt
Pm5vQ29uZmlnQ29udGV4dCA9IG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX0tIUl9ub19jb25maWdf
Y29udGV4dCIpOwogCisgICAgb3V0RXh0ZW5zaW9ucy0+c3VyZmFjZWxlc3NDb250ZXh0ID0gbUVH
TC0+aGFzRXh0ZW5zaW9uKCJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQiKTsKKwogICAgIG91
dEV4dGVuc2lvbnMtPmZyYW1lYnVmZmVyVGFyZ2V0QU5EUk9JRCA9IG1FR0wtPmhhc0V4dGVuc2lv
bigiRUdMX0FORFJPSURfZnJhbWVidWZmZXJfdGFyZ2V0Iik7CiAKICAgICBEaXNwbGF5R0w6Omdl
bmVyYXRlRXh0ZW5zaW9ucyhvdXRFeHRlbnNpb25zKTsKQEAgLTE4Niw0ICs2NTksNTYgQEAgdm9p
ZCBEaXNwbGF5RUdMOjpzZXRCbG9iQ2FjaGVGdW5jcyhFR0xTZXRCbG9iRnVuY0FORFJPSUQgc2V0
LCBFR0xHZXRCbG9iRnVuY0FORFIKICAgICB9CiB9CiAKK2VnbDo6RXJyb3IgRGlzcGxheUVHTDo6
bWFrZUN1cnJlbnRTdXJmYWNlbGVzcyhnbDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICAvLyBO
b3RoaW5nIHRvIGRvIGJlY2F1c2UgRUdMIGFsd2F5cyB1c2VzIHRoZSBzYW1lIGNvbnRleHQgYW5k
IHRoZSBwcmV2aW91cyBzdXJmYWNlIGNhbiBiZSBsZWZ0CisgICAgLy8gY3VycmVudC4KKyAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheUVHTDo6Y3JlYXRl
UmVuZGVyZXIoRUdMQ29udGV4dCBzaGFyZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxSZW5kZXJlckVHTD4gKm91dFJlbmRlcmVy
KQoreworICAgIEVHTENvbnRleHQgY29udGV4dCA9IEVHTF9OT19DT05URVhUOworICAgIG5hdGl2
ZV9lZ2w6OkF0dHJpYnV0ZVZlY3RvciBhdHRyaWJzOworICAgIEFOR0xFX1RSWShpbml0aWFsaXpl
Q29udGV4dChzaGFyZUNvbnRleHQsIG1EaXNwbGF5QXR0cmlidXRlcywgJmNvbnRleHQsICZhdHRy
aWJzKSk7CisKKyAgICBpZiAobUVHTC0+bWFrZUN1cnJlbnQoRUdMX05PX1NVUkZBQ0UsIGNvbnRl
eHQpID09IEVHTF9GQUxTRSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVnbE5vdEluaXRp
YWxpemVkKCkKKyAgICAgICAgICAgICAgIDw8ICJlZ2xNYWtlQ3VycmVudCBmYWlsZWQgd2l0aCAi
IDw8IGVnbDo6RXJyb3IobUVHTC0+Z2V0RXJyb3IoKSk7CisgICAgfQorCisgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uc0dMPiBmdW5jdGlvbnNHTChtRUdMLT5tYWtlRnVuY3Rpb25zR0woKSk7
CisgICAgZnVuY3Rpb25zR0wtPmluaXRpYWxpemUobURpc3BsYXlBdHRyaWJ1dGVzKTsKKworICAg
IG91dFJlbmRlcmVyLT5yZXNldCgKKyAgICAgICAgbmV3IFJlbmRlcmVyRUdMKHN0ZDo6bW92ZShm
dW5jdGlvbnNHTCksIG1EaXNwbGF5QXR0cmlidXRlcywgdGhpcywgY29udGV4dCwgYXR0cmlicykp
OworCisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitXb3JrZXJDb250ZXh0ICpEaXNw
bGF5RUdMOjpjcmVhdGVXb3JrZXJDb250ZXh0KHN0ZDo6c3RyaW5nICppbmZvTG9nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDb250ZXh0IHNoYXJl
ZENvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG5hdGl2ZV9lZ2w6OkF0dHJpYnV0ZVZlY3RvciB3b3JrZXJBdHRyaWJzKQoreworICAg
IEVHTENvbnRleHQgY29udGV4dCA9IG1FR0wtPmNyZWF0ZUNvbnRleHQobUNvbmZpZywgc2hhcmVk
Q29udGV4dCwgd29ya2VyQXR0cmlicy5kYXRhKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9O
T19DT05URVhUKQorICAgIHsKKyAgICAgICAgKmluZm9Mb2cgKz0gIlVuYWJsZSB0byBjcmVhdGUg
dGhlIEVHTCBjb250ZXh0LiI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBy
ZXR1cm4gbmV3IFdvcmtlckNvbnRleHRFR0woY29udGV4dCwgbUVHTCwgRUdMX05PX1NVUkZBQ0Up
OworfQorCit2b2lkIERpc3BsYXlFR0w6OmluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKGFuZ2xl
OjpGcm9udGVuZEZlYXR1cmVzICpmZWF0dXJlcykgY29uc3QKK3sKKyAgICBtUmVuZGVyZXItPmlu
aXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKGZlYXR1cmVzKTsKK30KKwordm9pZCBEaXNwbGF5RUdM
Ojpwb3B1bGF0ZUZlYXR1cmVMaXN0KGFuZ2xlOjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpCit7Cisg
ICAgbVJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLnBvcHVsYXRlRmVhdHVyZUxpc3QoZmVhdHVyZXMp
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdM
LmgKaW5kZXggYmM1OTdiNjIyZGQ1ZjFmODNjNjA0YzY4NGQ1OWU5NjlmZmRmMDI2OC4uNDVlNTAy
MGJiMjY0N2MyODI2ZGEwODI4NWU4MjY0MDM2NGMyMDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9EaXNwbGF5RUdMLmgKQEAgLTksMTMgKzksMTggQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVS
RVJfR0xfRUdMX0RJU1BMQVlFR0xfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfRUdM
X0RJU1BMQVlFR0xfSF8KIAorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5j
bHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdM
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9lZ2xfdXRpbHMuaCIKIAogbmFtZXNw
YWNlIHJ4CiB7CiAKK2NsYXNzIEZ1bmN0aW9uc0VHTERMOworY2xhc3MgUmVuZGVyZXJFR0w7CiBj
bGFzcyBXb3JrZXJDb250ZXh0OwogCiBjbGFzcyBEaXNwbGF5RUdMIDogcHVibGljIERpc3BsYXlH
TApAQCAtMzUsMTEgKzQwLDU1IEBAIGNsYXNzIERpc3BsYXlFR0wgOiBwdWJsaWMgRGlzcGxheUdM
CiAKICAgICB2b2lkIHNldEJsb2JDYWNoZUZ1bmNzKEVHTFNldEJsb2JGdW5jQU5EUk9JRCBzZXQs
IEVHTEdldEJsb2JGdW5jQU5EUk9JRCBnZXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3lOYXRpdmVDb250ZXh0KEVHTENvbnRleHQgY29udGV4dCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkZXN0cm95TmF0aXZlQ29udGV4dChFR0xDb250ZXh0IGNvbnRleHQpOwogCiAgICAg
dmlydHVhbCBXb3JrZXJDb250ZXh0ICpjcmVhdGVXb3JrZXJDb250ZXh0KHN0ZDo6c3RyaW5nICpp
bmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDb250ZXh0IHNoYXJlZENvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG5hdGl2ZV9lZ2w6OkF0dHJpYnV0ZVZlY3RvciB3b3JrZXJB
dHRyaWJzKSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IG5hdGl2ZV9lZ2w6OkF0dHJpYnV0ZVZlY3RvciB3b3JrZXJBdHRyaWJzKTsKKwor
ICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRl
OworICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CisKKyAgICBTdXJmYWNlSW1wbCAqY3Jl
YXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVy
U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBv
dmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIo
Y29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAq
Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQ
aXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCisgICAgQ29udGV4dEltcGwgKmNyZWF0
ZUNvbnRleHQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6RXJyb3JTZXQgKmVycm9yU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
IG92ZXJyaWRlOworCisgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgb3ZlcnJp
ZGU7CisKKyAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJv
ciByZXN0b3JlTG9zdERldmljZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRl
OworCisgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93KSBjb25zdCBvdmVycmlkZTsKKworICAgIERldmljZUltcGwgKmNyZWF0ZURldmljZSgpIG92
ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHdhaXROYXRpdmUoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEVHTGludCBlbmdpbmUpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJv
ciBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKKworICAgIGdsOjpWZXJz
aW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9p
ZCBpbml0aWFsaXplRnJvbnRlbmRGZWF0dXJlcyhhbmdsZTo6RnJvbnRlbmRGZWF0dXJlcyAqZmVh
dHVyZXMpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBwb3B1bGF0ZUZlYXR1cmVMaXN0KGFu
Z2xlOjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpIG92ZXJyaWRlOwogCiAgIHByb3RlY3RlZDoKICAg
ICBlZ2w6OkVycm9yIGluaXRpYWxpemVDb250ZXh0KEVHTENvbnRleHQgc2hhcmVDb250ZXh0LApA
QCAtNDksMTMgKzk4LDMyIEBAIGNsYXNzIERpc3BsYXlFR0wgOiBwdWJsaWMgRGlzcGxheUdMCiAK
ICAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRF
eHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEZ1bmN0aW9uc0VHTCAqbUVHTDsKKyAg
ICBlZ2w6OkVycm9yIGNyZWF0ZVJlbmRlcmVyKEVHTENvbnRleHQgc2hhcmVDb250ZXh0LCBzdGQ6
OnNoYXJlZF9wdHI8UmVuZGVyZXJFR0w+ICpvdXRSZW5kZXJlcik7CisKKyAgICBlZ2w6OkVycm9y
IG1ha2VDdXJyZW50U3VyZmFjZWxlc3MoZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBnZXRDb25maWdBdHRyaWIoRUdM
Q29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwgVCAqdmFsdWUpIGNvbnN0OworCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBnZXRDb25maWdBdHRy
aWJJZkV4dGVuc2lvbihFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFQgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVSAmZGVmYXVsdFZhbHVlKSBjb25zdDsKKworICAgIHN0ZDo6c2hhcmVkX3B0cjxS
ZW5kZXJlckVHTD4gbVJlbmRlcmVyOworICAgIEZ1bmN0aW9uc0VHTERMICptRUdMOwogICAgIEVH
TENvbmZpZyBtQ29uZmlnOworICAgIGVnbDo6QXR0cmlidXRlTWFwIG1EaXNwbGF5QXR0cmlidXRl
czsKKyAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IG1Db25maWdBdHRyaWJMaXN0OwogCiAgIHByaXZh
dGU6CiAgICAgdm9pZCBnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIHN0ZDo6bWFwPEVHTGludCwgRUdMaW50PiBtQ29uZmlnSWRzOwogfTsKIAog
fSAgLy8gbmFtZXNwYWNlIHJ4CiAKLSNlbmRpZiAvKiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xf
RElTUExBWUVHTF9IXyAqLworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9FR0xfRElT
UExBWUVHTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNw
bGF5QW5kcm9pZC5jcHAKaW5kZXggNzhiZmFjY2MwZWU0NjI2N2Q2NWQ5MjhjOGM0MDE1NTY1NDE0
YTBhZS4uNmRjM2VjZmU0Mzg5NTZhOWQxOTIwODJmZTMwOTk4YjcxZDA2NmRlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9h
bmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwCkBA
IC0xOSw5ICsxOSw4IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9Db250ZXh0RUdMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmgiCi0jaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1JlbmRlcmVyRUdMLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL05hdGl2ZUJ1ZmZlckltYWdlU2libGluZ0FuZHJvaWQu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgiCiAK
QEAgLTIwMCw1MiArMTk5LDYgQEAgdm9pZCBEaXNwbGF5QW5kcm9pZDo6dGVybWluYXRlKCkKICAg
ICBTYWZlRGVsZXRlKG1FR0wpOwogfQogCi1TdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNy
ZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIEVHTENvbmZp
ZyBjb25maWc7Ci0gICAgRUdMaW50IG51bUNvbmZpZzsKLSAgICBFR0xCb29sZWFuIHN1Y2Nlc3M7
Ci0KLSAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmliTGlzdFtdID0ge0VHTF9DT05GSUdfSUQs
IG1Db25maWdJZHNbc3RhdGUuY29uZmlnLT5jb25maWdJRF0sIEVHTF9OT05FfTsKLSAgICBzdWNj
ZXNzICAgICAgICAgICAgICAgICAgICAgICAgID0gbUVHTC0+Y2hvb3NlQ29uZmlnKGNvbmZpZ0F0
dHJpYkxpc3QsICZjb25maWcsIDEsICZudW1Db25maWcpOwotICAgIEFTU0VSVChzdWNjZXNzICYm
IG51bUNvbmZpZyA9PSAxKTsKLQotICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZUVHTChzdGF0
ZSwgbUVHTCwgY29uZmlnLCB3aW5kb3cpOwotfQotCi1TdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJv
aWQ6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi17Ci0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAg
ICBFR0xpbnQgbnVtQ29uZmlnOwotICAgIEVHTEJvb2xlYW4gc3VjY2VzczsKLQotICAgIGNvbnN0
IEVHTGludCBjb25maWdBdHRyaWJMaXN0W10gPSB7RUdMX0NPTkZJR19JRCwgbUNvbmZpZ0lkc1tz
dGF0ZS5jb25maWctPmNvbmZpZ0lEXSwgRUdMX05PTkV9OwotICAgIHN1Y2Nlc3MgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBtRUdMLT5jaG9vc2VDb25maWcoY29uZmlnQXR0cmliTGlzdCwgJmNv
bmZpZywgMSwgJm51bUNvbmZpZyk7Ci0gICAgQVNTRVJUKHN1Y2Nlc3MgJiYgbnVtQ29uZmlnID09
IDEpOwotCi0gICAgcmV0dXJuIG5ldyBQYnVmZmVyU3VyZmFjZUVHTChzdGF0ZSwgbUVHTCwgY29u
ZmlnKTsKLX0KLQotU3VyZmFjZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVyRnJv
bUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0g
YnVmdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBudWxscHRyOwotfQotCi1TdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVBpeG1h
cFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZl
UGl4bWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogQ29udGV4dEltcGwgKkRpc3BsYXlBbmRyb2lk
OjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkVycm9yU2V0ICplcnJvclNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKQEAgLTI4MCwxNzMgKzIzMyw2IEBAIENvbnRleHRJbXBsICpEaXNwbGF5
QW5kcm9pZDo6Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgIHJldHVy
biBuZXcgQ29udGV4dEVHTChzdGF0ZSwgZXJyb3JTZXQsIHJlbmRlcmVyKTsKIH0KIAotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci12b2lkIERpc3BsYXlBbmRyb2lkOjpnZXRDb25maWdBdHRyaWIoRUdM
Q29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwgVCAqdmFsdWUpIGNvbnN0Ci17Ci0gICAg
RUdMaW50IHRtcDsKLSAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5nZXRDb25maWdBdHRy
aWIoY29uZmlnLCBhdHRyaWJ1dGUsICZ0bXApOwotICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9U
UlVFKTsKLSAgICAqdmFsdWUgPSB0bXA7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotdm9pZCBEaXNwbGF5QW5kcm9pZDo6Z2V0Q29uZmlnQXR0cmliSWZFeHRlbnNpb24o
RUdMQ29uZmlnIGNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFUgJmRlZmF1bHRWYWx1
ZSkgY29uc3QKLXsKLSAgICBpZiAobUVHTC0+aGFzRXh0ZW5zaW9uKGV4dGVuc2lvbikpCi0gICAg
ewotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnLCBhdHRyaWJ1dGUsIHZhbHVlKTsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8VD4oZGVm
YXVsdFZhbHVlKTsKLSAgICB9Ci19Ci0KLWVnbDo6Q29uZmlnU2V0IERpc3BsYXlBbmRyb2lkOjpn
ZW5lcmF0ZUNvbmZpZ3MoKQotewotICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ1NldDsKLSAgICBt
Q29uZmlnSWRzLmNsZWFyKCk7Ci0KLSAgICBFR0xpbnQgbnVtQ29uZmlnczsKLSAgICBFR0xCb29s
ZWFuIHN1Y2Nlc3MgPSBtRUdMLT5jaG9vc2VDb25maWcobUNvbmZpZ0F0dHJpYkxpc3QuZGF0YSgp
LCBudWxscHRyLCAwLCAmbnVtQ29uZmlncyk7Ci0gICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RS
VUUgJiYgbnVtQ29uZmlncyA+IDApOwotCi0gICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBjb25m
aWdzKG51bUNvbmZpZ3MpOwotICAgIEVHTGludCBudW1Db25maWdzMjsKLSAgICBzdWNjZXNzID0K
LSAgICAgICAgbUVHTC0+Y2hvb3NlQ29uZmlnKG1Db25maWdBdHRyaWJMaXN0LmRhdGEoKSwgY29u
Zmlncy5kYXRhKCksIG51bUNvbmZpZ3MsICZudW1Db25maWdzMik7Ci0gICAgQVNTRVJUKHN1Y2Nl
c3MgPT0gRUdMX1RSVUUgJiYgbnVtQ29uZmlnczIgPT0gbnVtQ29uZmlncyk7Ci0KLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bUNvbmZpZ3M7IGkrKykKLSAgICB7Ci0gICAgICAgIGVnbDo6Q29u
ZmlnIGNvbmZpZzsKLQotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0JV
RkZFUl9TSVpFLCAmY29uZmlnLmJ1ZmZlclNpemUpOwotICAgICAgICBnZXRDb25maWdBdHRyaWIo
Y29uZmlnc1tpXSwgRUdMX1JFRF9TSVpFLCAmY29uZmlnLnJlZFNpemUpOwotICAgICAgICBnZXRD
b25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0dSRUVOX1NJWkUsICZjb25maWcuZ3JlZW5TaXpl
KTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9CTFVFX1NJWkUsICZj
b25maWcuYmx1ZVNpemUpOwotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdM
X0xVTUlOQU5DRV9TSVpFLCAmY29uZmlnLmx1bWluYW5jZVNpemUpOwotICAgICAgICBnZXRDb25m
aWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0FMUEhBX1NJWkUsICZjb25maWcuYWxwaGFTaXplKTsK
LSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9BTFBIQV9NQVNLX1NJWkUs
ICZjb25maWcuYWxwaGFNYXNrU2l6ZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfQklORF9UT19URVhUVVJFX1JHQiwgJmNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCKTsK
LSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9CSU5EX1RPX1RFWFRVUkVf
UkdCQSwgJmNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCQSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJp
Yihjb25maWdzW2ldLCBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsICZjb25maWcuY29sb3JCdWZmZXJU
eXBlKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT05GSUdfQ0FW
RUFULCAmY29uZmlnLmNvbmZpZ0NhdmVhdCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25m
aWdzW2ldLCBFR0xfQ09ORklHX0lELCAmY29uZmlnLmNvbmZpZ0lEKTsKLSAgICAgICAgZ2V0Q29u
ZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9DT05GT1JNQU5ULCAmY29uZmlnLmNvbmZvcm1hbnQp
OwotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX0RFUFRIX1NJWkUsICZj
b25maWcuZGVwdGhTaXplKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVH
TF9MRVZFTCwgJmNvbmZpZy5sZXZlbCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfTUFYX1BCVUZGRVJfV0lEVEgsICZjb25maWcubWF4UEJ1ZmZlcldpZHRoKTsKLSAg
ICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9NQVhfUEJVRkZFUl9IRUlHSFQs
ICZjb25maWcubWF4UEJ1ZmZlckhlaWdodCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25m
aWdzW2ldLCBFR0xfTUFYX1BCVUZGRVJfUElYRUxTLCAmY29uZmlnLm1heFBCdWZmZXJQaXhlbHMp
OwotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29uZmlnc1tpXSwgRUdMX01BWF9TV0FQX0lOVEVS
VkFMLCAmY29uZmlnLm1heFN3YXBJbnRlcnZhbCk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihj
b25maWdzW2ldLCBFR0xfTUlOX1NXQVBfSU5URVJWQUwsICZjb25maWcubWluU3dhcEludGVydmFs
KTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9OQVRJVkVfUkVOREVS
QUJMRSwgJmNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmli
KGNvbmZpZ3NbaV0sIEVHTF9OQVRJVkVfVklTVUFMX0lELCAmY29uZmlnLm5hdGl2ZVZpc3VhbElE
KTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9OQVRJVkVfVklTVUFM
X1RZUEUsICZjb25maWcubmF0aXZlVmlzdWFsVHlwZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJp
Yihjb25maWdzW2ldLCBFR0xfUkVOREVSQUJMRV9UWVBFLCAmY29uZmlnLnJlbmRlcmFibGVUeXBl
KTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9TQU1QTEVfQlVGRkVS
UywgJmNvbmZpZy5zYW1wbGVCdWZmZXJzKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZp
Z3NbaV0sIEVHTF9TQU1QTEVTLCAmY29uZmlnLnNhbXBsZXMpOwotICAgICAgICBnZXRDb25maWdB
dHRyaWIoY29uZmlnc1tpXSwgRUdMX1NURU5DSUxfU0laRSwgJmNvbmZpZy5zdGVuY2lsU2l6ZSk7
Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfU1VSRkFDRV9UWVBFLCAm
Y29uZmlnLnN1cmZhY2VUeXBlKTsKLSAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0s
IEVHTF9UUkFOU1BBUkVOVF9UWVBFLCAmY29uZmlnLnRyYW5zcGFyZW50VHlwZSk7Ci0gICAgICAg
IGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJFTlRfUkVEX1ZBTFVFLCAm
Y29uZmlnLnRyYW5zcGFyZW50UmVkVmFsdWUpOwotICAgICAgICBnZXRDb25maWdBdHRyaWIoY29u
Zmlnc1tpXSwgRUdMX1RSQU5TUEFSRU5UX0dSRUVOX1ZBTFVFLCAmY29uZmlnLnRyYW5zcGFyZW50
R3JlZW5WYWx1ZSk7Ci0gICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJB
TlNQQVJFTlRfQkxVRV9WQUxVRSwgJmNvbmZpZy50cmFuc3BhcmVudEJsdWVWYWx1ZSk7Ci0gICAg
ICAgIGdldENvbmZpZ0F0dHJpYklmRXh0ZW5zaW9uKGNvbmZpZ3NbaV0sIEVHTF9DT0xPUl9DT01Q
T05FTlRfVFlQRV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25m
aWcuY29sb3JDb21wb25lbnRUeXBlLCAiRUdMX0VYVF9waXhlbF9mb3JtYXRfZmxvYXQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVf
RklYRURfRVhUKTsKLQotICAgICAgICBpZiAoY29uZmlnLmNvbG9yQnVmZmVyVHlwZSA9PSBFR0xf
UkdCX0JVRkZFUikKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGNvbmZpZy5jb2xvckNv
bXBvbmVudFR5cGUgPT0gRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZJWEVEX0VYVCk7Ci0gICAg
ICAgICAgICBpZiAoY29uZmlnLnJlZFNpemUgPT0gOCAmJiBjb25maWcuZ3JlZW5TaXplID09IDgg
JiYgY29uZmlnLmJsdWVTaXplID09IDggJiYKLSAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFT
aXplID09IDgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRh
cmdldEZvcm1hdCA9IEdMX1JHQkE4OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAoY29uZmlnLnJlZFNpemUgPT0gOCAmJiBjb25maWcuZ3JlZW5TaXplID09IDggJiYgY29uZmln
LmJsdWVTaXplID09IDggJiYKLSAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUg
PT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25maWcucmVuZGVyVGFyZ2V0
Rm9ybWF0ID0gR0xfUkdCODsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNv
bmZpZy5yZWRTaXplID09IDUgJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA2ICYmIGNvbmZpZy5ibHVl
U2l6ZSA9PSA1ICYmCi0gICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFTaXplID09IDAp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1h
dCA9IEdMX1JHQjU2NTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZp
Zy5yZWRTaXplID09IDUgJiYgY29uZmlnLmdyZWVuU2l6ZSA9PSA1ICYmIGNvbmZpZy5ibHVlU2l6
ZSA9PSA1ICYmCi0gICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFTaXplID09IDEpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9
IEdMX1JHQjVfQTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjb25maWcu
cmVkU2l6ZSA9PSA0ICYmIGNvbmZpZy5ncmVlblNpemUgPT0gNCAmJiBjb25maWcuYmx1ZVNpemUg
PT0gNCAmJgotICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmFscGhhU2l6ZSA9PSA0KQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBH
TF9SR0JBNDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBFUlIoKSA8PCAiUkdCQSgiIDw8IGNvbmZpZy5yZWRTaXplIDw8ICIs
IiA8PCBjb25maWcuZ3JlZW5TaXplIDw8ICIsIgotICAgICAgICAgICAgICAgICAgICAgIDw8IGNv
bmZpZy5ibHVlU2l6ZSA8PCAiLCIgPDwgY29uZmlnLmFscGhhU2l6ZSA8PCAiKSBub3QgaGFuZGxl
ZCI7Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAwICYmIGNvbmZp
Zy5zdGVuY2lsU2l6ZSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25maWcuZGVwdGhT
dGVuY2lsRm9ybWF0ID0gR0xfWkVSTzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjb25m
aWcuZGVwdGhTaXplID09IDE2ICYmIGNvbmZpZy5zdGVuY2lsU2l6ZSA9PSAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9O
RU5UMTY7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY29uZmlnLmRlcHRoU2l6ZSA9PSAy
NCAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
ZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDI0OwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGNvbmZpZy5kZXB0aFNpemUgPT0gMjQgJiYgY29uZmlnLnN0ZW5j
aWxTaXplID09IDgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxG
b3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGNvbmZpZy5kZXB0aFNpemUgPT0gMCAmJiBjb25maWcuc3RlbmNpbFNpemUgPT0gOCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX1NURU5DSUxf
SU5ERVg4OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBp
eG1hcCAgPSBFR0xfTk9ORTsKLSAgICAgICAgY29uZmlnLm9wdGltYWxPcmllbnRhdGlvbiA9IDA7
Ci0KLSAgICAgICAgaW50IGludGVybmFsSWQgICAgICAgICA9IGNvbmZpZ1NldC5hZGQoY29uZmln
KTsKLSAgICAgICAgbUNvbmZpZ0lkc1tpbnRlcm5hbElkXSA9IGNvbmZpZy5jb25maWdJRDsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gY29uZmlnU2V0OwotfQotCi1ib29sIERpc3BsYXlBbmRyb2lkOjp0
ZXN0RGV2aWNlTG9zdCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1lZ2w6OkVycm9yIERp
c3BsYXlBbmRyb2lkOjpyZXN0b3JlTG9zdERldmljZShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXkpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsK
LX0KLQogYm9vbCBEaXNwbGF5QW5kcm9pZDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdykgY29uc3QKIHsKICAgICByZXR1cm4gQU5hdGl2ZVdpbmRvd19nZXRG
b3JtYXQod2luZG93KSA+PSAwOwpAQCAtNDgzLDI0ICsyNjksNiBAQCBFeHRlcm5hbEltYWdlU2li
bGluZ0ltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVFeHRlcm5hbEltYWdlU2libGluZygKICAg
ICB9CiB9CiAKLURldmljZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVEZXZpY2UoKQotewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotZWdsOjpFcnJv
ciBEaXNwbGF5QW5kcm9pZDo6d2FpdENsaWVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkK
LXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwotfQot
Ci1lZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjp3YWl0TmF0aXZlKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LCBFR0xpbnQgZW5naW5lKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KIGVnbDo6RXJyb3IgRGlzcGxheUFuZHJvaWQ6Om1h
a2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQpCkBAIC01
NjAsMTQgKzMyOCw5IEBAIGVnbDo6RXJyb3IgRGlzcGxheUFuZHJvaWQ6Om1ha2VDdXJyZW50KGVn
bDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCiAgICAgcmV0dXJuIERpc3BsYXlHTDo6bWFrZUN1cnJl
bnQoZHJhd1N1cmZhY2UsIHJlYWRTdXJmYWNlLCBjb250ZXh0KTsKIH0KIAotZ2w6OlZlcnNpb24g
RGlzcGxheUFuZHJvaWQ6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCk7Ci19Ci0KIHZvaWQg
RGlzcGxheUFuZHJvaWQ6OmRlc3Ryb3lOYXRpdmVDb250ZXh0KEVHTENvbnRleHQgY29udGV4dCkK
IHsKLSAgICBtRUdMLT5kZXN0cm95Q29udGV4dChjb250ZXh0KTsKKyAgICBEaXNwbGF5RUdMOjpk
ZXN0cm95TmF0aXZlQ29udGV4dChjb250ZXh0KTsKIAogICAgIC8vIElmIHRoaXMgY29udGV4dCBp
cyBjdXJyZW50LCByZW1vdmUgaXQgZnJvbSB0aGUgdHJhY2tpbmcgb2YgY3VycmVudCBjb250ZXh0
cyB0byBtYWtlIHN1cmUgd2UKICAgICAvLyBkb24ndCB0cnkgdG8gbWFrZSBpdCBjdXJyZW50IGFn
YWluLgpAQCAtNTgzLDE4ICszNDYsMTEgQEAgdm9pZCBEaXNwbGF5QW5kcm9pZDo6ZGVzdHJveU5h
dGl2ZUNvbnRleHQoRUdMQ29udGV4dCBjb250ZXh0KQogCiB2b2lkIERpc3BsYXlBbmRyb2lkOjpn
ZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykg
Y29uc3QKIHsKKyAgICBEaXNwbGF5RUdMOjpnZW5lcmF0ZUV4dGVuc2lvbnMob3V0RXh0ZW5zaW9u
cyk7CisKICAgICAvLyBTdXJmYWNlbGVzcyBjYW4gYmUgc3VwcG9ydCBpZiB0aGUgbmF0aXZlIGRy
aXZlciBzdXBwb3J0cyBpdCBvciB3ZSBrbm93IHRoYXQgd2UgYXJlIHJ1bm5pbmcgb24KICAgICAv
LyBhIHNpbmdsZSB0aHJlYWQgKG1WaXJ0dWFsaXplZENvbnRleHRzID09IHRydWUpCiAgICAgb3V0
RXh0ZW5zaW9ucy0+c3VyZmFjZWxlc3NDb250ZXh0ID0gbVN1cHBvcnRzU3VyZmFjZWxlc3MgfHwg
bVZpcnR1YWxpemVkQ29udGV4dHM7Ci0KLSAgICBEaXNwbGF5RUdMOjpnZW5lcmF0ZUV4dGVuc2lv
bnMob3V0RXh0ZW5zaW9ucyk7Ci19Ci0KLWVnbDo6RXJyb3IgRGlzcGxheUFuZHJvaWQ6Om1ha2VD
dXJyZW50U3VyZmFjZWxlc3MoZ2w6OkNvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgLy8gTm90aGlu
ZyB0byBkbyBiZWNhdXNlIEVHTCBhbHdheXMgdXNlcyB0aGUgc2FtZSBjb250ZXh0IGFuZCB0aGUg
cHJldmlvdXMgc3VyZmFjZSBjYW4gYmUgbGVmdAotICAgIC8vIGN1cnJlbnQuCi0gICAgcmV0dXJu
IGVnbDo6Tm9FcnJvcigpOwogfQogCiBlZ2w6OkVycm9yIERpc3BsYXlBbmRyb2lkOjpjcmVhdGVS
ZW5kZXJlcihFR0xDb250ZXh0IHNoYXJlQ29udGV4dCwKQEAgLTY5MCwxNCArNDQ2LDQgQEAgV29y
a2VyQ29udGV4dCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVdvcmtlckNvbnRleHQoc3RkOjpzdHJp
bmcgKmluZm9Mb2csCiAgICAgcmV0dXJuIG5ldyBXb3JrZXJDb250ZXh0QW5kcm9pZChjb250ZXh0
LCBtRUdMLCBtRHVtbXlQYnVmZmVyKTsKIH0KIAotdm9pZCBEaXNwbGF5QW5kcm9pZDo6aW5pdGlh
bGl6ZUZyb250ZW5kRmVhdHVyZXMoYW5nbGU6OkZyb250ZW5kRmVhdHVyZXMgKmZlYXR1cmVzKSBj
b25zdAotewotICAgIG1SZW5kZXJlci0+aW5pdGlhbGl6ZUZyb250ZW5kRmVhdHVyZXMoZmVhdHVy
ZXMpOwotfQotCi12b2lkIERpc3BsYXlBbmRyb2lkOjpwb3B1bGF0ZUZlYXR1cmVMaXN0KGFuZ2xl
OjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpCi17Ci0gICAgbVJlbmRlcmVyLT5nZXRGZWF0dXJlcygp
LnBvcHVsYXRlRmVhdHVyZUxpc3QoZmVhdHVyZXMpOwotfQotCiB9ICAvLyBuYW1lc3BhY2UgcngK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgK
aW5kZXggOGRmYjc1ZWViMTdiYWQyMGQxMjZkNzY0MWU5ZTNjMzM5NWM5OGY4My4uOTZjMWFlMTgx
MTQ4MmVmZmIxNDJiOGUzNWYzODY4ZTQ3MGU2MzJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlB
bmRyb2lkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgKQEAgLTMwLDMwICszMCwxMiBAQCBj
bGFzcyBEaXNwbGF5QW5kcm9pZCA6IHB1YmxpYyBEaXNwbGF5RUdMCiAgICAgZWdsOjpFcnJvciBp
bml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXJt
aW5hdGUoKSBvdmVycmlkZTsKIAotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
b3ZlcnJpZGU7Ci0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVn
bDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1
cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGVudW0gYnVmdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpIG92ZXJyaWRlOwotICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJm
YWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykgb3ZlcnJpZGU7Ci0KICAgICBDb250ZXh0SW1wbCAqY3JlYXRlQ29udGV4dChjb25zdCBn
bDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFcnJv
clNldCAqZXJyb3JTZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKLSAg
ICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBvdmVycmlkZTsKLQotICAgIGJvb2wg
dGVzdERldmljZUxvc3QoKSBvdmVycmlkZTsKLSAgICBlZ2w6OkVycm9yIHJlc3RvcmVMb3N0RGV2
aWNlKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7Ci0KICAgICBib29sIGlz
VmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGVnbDo6RXJyb3IgdmFsaWRhdGVJbWFnZUNsaWVudEJ1ZmZlcihjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMZW51bSB0YXJnZXQsCkBAIC02NSwyNyArNDcsMTYgQEAgY2xhc3MgRGlzcGxheUFuZHJv
aWQgOiBwdWJsaWMgRGlzcGxheUVHTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIAotICAgIERldmljZUltcGwgKmNy
ZWF0ZURldmljZSgpIG92ZXJyaWRlOwotCi0gICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLSAgICBlZ2w6OkVycm9yIHdhaXROYXRp
dmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEVHTGludCBlbmdpbmUpIG92ZXJyaWRlOwot
CiAgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsK
IAotICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0IG92ZXJy
aWRlOwotCiAgICAgdm9pZCBkZXN0cm95TmF0aXZlQ29udGV4dChFR0xDb250ZXh0IGNvbnRleHQp
IG92ZXJyaWRlOwogCiAgICAgV29ya2VyQ29udGV4dCAqY3JlYXRlV29ya2VyQ29udGV4dChzdGQ6
OnN0cmluZyAqaW5mb0xvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENvbnRleHQgc2hhcmVkQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IG5hdGl2ZV9lZ2w6OkF0dHJpYnV0ZVZlY3RvciB3b3JrZXJBdHRyaWJz
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUZyb250ZW5kRmVhdHVyZXMoYW5nbGU6
OkZyb250ZW5kRmVhdHVyZXMgKmZlYXR1cmVzKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQg
cG9wdWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVyZUxpc3QgKmZlYXR1cmVzKSBvdmVycmlk
ZTsKLQogICBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxh
eUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC05MywyNyAr
NjQsMTAgQEAgY2xhc3MgRGlzcGxheUFuZHJvaWQgOiBwdWJsaWMgRGlzcGxheUVHTAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYWtlTmV3Q29udGV4dEN1cnJlbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNoYXJlZF9wdHI8UmVuZGVyZXJFR0w+ICpv
dXRSZW5kZXJlcik7CiAKLSAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50U3VyZmFjZWxlc3MoZ2w6
OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
Ci0gICAgdm9pZCBnZXRDb25maWdBdHRyaWIoRUdMQ29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJp
YnV0ZSwgVCAqdmFsdWUpIGNvbnN0OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Ci0gICAgdm9pZCBnZXRDb25maWdBdHRyaWJJZkV4dGVuc2lvbihFR0xDb25maWcgY29u
ZmlnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgKnZhbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVSAmZGVmYXVsdFZhbHVlKSBj
b25zdDsKLQogICAgIGJvb2wgbVZpcnR1YWxpemVkQ29udGV4dHM7Ci0gICAgc3RkOjpzaGFyZWRf
cHRyPFJlbmRlcmVyRUdMPiBtUmVuZGVyZXI7Ci0KLSAgICBlZ2w6OkF0dHJpYnV0ZU1hcCBtRGlz
cGxheUF0dHJpYnV0ZXM7CiAKICAgICBib29sIG1TdXBwb3J0c1N1cmZhY2VsZXNzOwogCi0gICAg
c3RkOjp2ZWN0b3I8RUdMaW50PiBtQ29uZmlnQXR0cmliTGlzdDsKLSAgICBzdGQ6Om1hcDxFR0xp
bnQsIEVHTGludD4gbUNvbmZpZ0lkczsKICAgICBFR0xTdXJmYWNlIG1EdW1teVBidWZmZXI7CiAK
ICAgICBzdHJ1Y3QgQ3VycmVudE5hdGl2ZUNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96
b25lLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmNwcAppbmRleCA0NmU2YjNlMDIxYmM1NzdjMDIyMDc4
NzE3MWRlMDI1ZWM2OWFmMGJhLi41Yzg2MWI0OTIyOTE0N2U2N2ExNmQ4OWQ4NzY2ZmYxMDVkZGI1
YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUu
Y3BwCkBAIC0zNTEsNyArMzUxLDYgQEAgYm9vbCBEaXNwbGF5T3pvbmU6OkJ1ZmZlcjo6Y3JlYXRl
UmVuZGVyYnVmZmVycygpCiAKIERpc3BsYXlPem9uZTo6RGlzcGxheU96b25lKGNvbnN0IGVnbDo6
RGlzcGxheVN0YXRlICZzdGF0ZSkKICAgICA6IERpc3BsYXlFR0woc3RhdGUpLAotICAgICAgbVJl
bmRlcmVyKG51bGxwdHIpLAogICAgICAgbUdCTShudWxscHRyKSwKICAgICAgIG1Db25uZWN0b3Io
bnVsbHB0ciksCiAgICAgICBtTW9kZShudWxscHRyKSwKQEAgLTkxMSwyMyArOTEwLDYgQEAgU3Vy
ZmFjZUltcGwgKkRpc3BsYXlPem9uZTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAogICAgIHJldHVybiBuZXcgU3VyZmFjZU96b25lKHN0YXRlLCBi
dWZmZXIpOwogfQogCi1TdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVQYnVmZmVyRnJv
bUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1
ZnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCi17Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBudWxs
cHRyOwotfQotCi1TdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVQaXhtYXBTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
QXR0cmlidXRlTWFwICZhdHRyaWJzKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQogQ29udGV4dEltcGwgKkRpc3BsYXlPem9uZTo6Y3JlYXRlQ29udGV4
dChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6RXJyb3JTZXQgKmVycm9yU2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKQEAg
LTkzOCwxMCArOTIwLDExIEBAIENvbnRleHRJbXBsICpEaXNwbGF5T3pvbmU6OmNyZWF0ZUNvbnRl
eHQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKICAgICByZXR1cm4gbmV3IENvbnRleHRFR0woc3Rh
dGUsIGVycm9yU2V0LCBtUmVuZGVyZXIpOwogfQogCi1EZXZpY2VJbXBsICpEaXNwbGF5T3pvbmU6
OmNyZWF0ZURldmljZSgpCitlZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6bWFrZUN1cnJlbnQoZWds
OjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gRGlzcGxheUdMOjptYWtlQ3VycmVu
dChkcmF3U3VyZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQpOwogfQogCiBlZ2w6OkNvbmZpZ1Nl
dCBEaXNwbGF5T3pvbmU6OmdlbmVyYXRlQ29uZmlncygpCkBAIC05NjUsNDQgKzk0OCwxMSBAQCBl
Z2w6OkNvbmZpZ1NldCBEaXNwbGF5T3pvbmU6OmdlbmVyYXRlQ29uZmlncygpCiAgICAgcmV0dXJu
IGNvbmZpZ3M7CiB9CiAKLWJvb2wgRGlzcGxheU96b25lOjp0ZXN0RGV2aWNlTG9zdCgpCi17Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1lZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6cmVzdG9yZUxv
c3REZXZpY2UoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQotewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gZWdsOjpFZ2xCYWREaXNwbGF5KCk7Ci19Ci0KIGJvb2wgRGlzcGxh
eU96b25lOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBj
b25zdAogewogICAgIHJldHVybiB0cnVlOwogfQogCi1lZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6
d2FpdENsaWVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICAvLyBUT0RPKGZq
aGVuaWdtYW4pIEltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKLX0K
LQotZWdsOjpFcnJvciBEaXNwbGF5T3pvbmU6OndhaXROYXRpdmUoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsIEVHTGludCBlbmdpbmUpCi17Ci0gICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBs
ZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Ci19Ci0KLWdsOjpWZXJzaW9u
IERpc3BsYXlPem9uZTo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbVJlbmRlcmVyLT5nZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKTsKLX0KLQotdm9pZCBE
aXNwbGF5T3pvbmU6OmRlc3Ryb3lOYXRpdmVDb250ZXh0KEVHTENvbnRleHQgY29udGV4dCkKLXsK
LSAgICBtRUdMLT5kZXN0cm95Q29udGV4dChjb250ZXh0KTsKLX0KLQogdm9pZCBEaXNwbGF5T3pv
bmU6OnNldFN3YXBJbnRlcnZhbChFR0xTdXJmYWNlIGRyYXdhYmxlLCBTd2FwQ29udHJvbERhdGEg
KmRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGEgIT0gbnVsbHB0cik7CkBAIC0xMDEwLDE2ICs5NjAs
MTAgQEAgdm9pZCBEaXNwbGF5T3pvbmU6OnNldFN3YXBJbnRlcnZhbChFR0xTdXJmYWNlIGRyYXdh
YmxlLCBTd2FwQ29udHJvbERhdGEgKmRhdGEpCiAKIHZvaWQgRGlzcGxheU96b25lOjpnZW5lcmF0
ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QK
IHsKLSAgICAvLyBTdXJmYWNlbGVzcyBjb250ZXh0cyBhcmUgZW11bGF0ZWQgZXZlbiBpZiB0aGVy
ZSBpcyBubyBuYXRpdmUgc3VwcG9ydC4KLSAgICBvdXRFeHRlbnNpb25zLT5zdXJmYWNlbGVzc0Nv
bnRleHQgPSB0cnVlOwotCiAgICAgRGlzcGxheUVHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKG91dEV4
dGVuc2lvbnMpOwotfQogCi1lZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6bWFrZUN1cnJlbnRTdXJm
YWNlbGVzcyhnbDo6Q29udGV4dCAqY29udGV4dCkKLXsKLSAgICAvLyBOb3RoaW5nIHRvIGRvLCBo
YW5kbGVkIGluIHRoZSBHTCBsYXllcnMKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CisgICAg
Ly8gU3VyZmFjZWxlc3MgY29udGV4dHMgYXJlIGVtdWxhdGVkIGV2ZW4gaWYgdGhlcmUgaXMgbm8g
bmF0aXZlIHN1cHBvcnQuCisgICAgb3V0RXh0ZW5zaW9ucy0+c3VyZmFjZWxlc3NDb250ZXh0ID0g
dHJ1ZTsKIH0KIAogY2xhc3MgV29ya2VyQ29udGV4dE96b25lIGZpbmFsIDogcHVibGljIFdvcmtl
ckNvbnRleHQKQEAgLTEwNzMsMTQgKzEwMTcsNCBAQCBXb3JrZXJDb250ZXh0ICpEaXNwbGF5T3pv
bmU6OmNyZWF0ZVdvcmtlckNvbnRleHQoc3RkOjpzdHJpbmcgKmluZm9Mb2csCiAgICAgcmV0dXJu
IG5ldyBXb3JrZXJDb250ZXh0T3pvbmUoY29udGV4dCwgbUVHTCk7CiB9CiAKLXZvaWQgRGlzcGxh
eU96b25lOjppbml0aWFsaXplRnJvbnRlbmRGZWF0dXJlcyhhbmdsZTo6RnJvbnRlbmRGZWF0dXJl
cyAqZmVhdHVyZXMpIGNvbnN0Ci17Ci0gICAgbVJlbmRlcmVyLT5pbml0aWFsaXplRnJvbnRlbmRG
ZWF0dXJlcyhmZWF0dXJlcyk7Ci19Ci0KLXZvaWQgRGlzcGxheU96b25lOjpwb3B1bGF0ZUZlYXR1
cmVMaXN0KGFuZ2xlOjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpCi17Ci0gICAgbVJlbmRlcmVyLT5n
ZXRGZWF0dXJlcygpLnBvcHVsYXRlRmVhdHVyZUxpc3QoZmVhdHVyZXMpOwotfQotCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9u
ZS5oCmluZGV4IGRkZjEzM2E1YmU1NjI4MzBhMWFlODQ5MDdhMzgyNDIxY2I1YmVhN2UuLjYxOWIx
MjE1MWE3NmM1MzJmMmZhMTNiZDBmMzQ0Mzc4MjhjZDNmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxh
eU96b25lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaApAQCAtMTIwLDEzICsxMjAsNiBAQCBjbGFz
cyBEaXNwbGF5T3pvbmUgZmluYWwgOiBwdWJsaWMgRGlzcGxheUVHTAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBv
dmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7Ci0gICAgU3Vy
ZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMZW51bSBidWZ0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7Ci0gICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKIAogICAgIENvbnRleHRJbXBsICpjcmVhdGVDb250ZXh0KGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkVycm9y
U2V0ICplcnJvclNldCwKQEAgLTEzNCwyMiArMTI3LDE0IEBAIGNsYXNzIERpc3BsYXlPem9uZSBm
aW5hbCA6IHB1YmxpYyBEaXNwbGF5RUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKLSAg
ICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVy
cm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwogCi0gICAgYm9vbCB0
ZXN0RGV2aWNlTG9zdCgpIG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgcmVzdG9yZUxvc3REZXZp
Y2UoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICBlZ2w6OkNvbmZp
Z1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNWYWxpZE5hdGl2
ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBEZXZpY2VJbXBsICpjcmVhdGVEZXZpY2UoKSBvdmVycmlkZTsKLQotICAgIGVnbDo6RXJyb3Ig
d2FpdENsaWVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgZWds
OjpFcnJvciB3YWl0TmF0aXZlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBFR0xpbnQgZW5n
aW5lKSBvdmVycmlkZTsKLQotICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lv
bigpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBkZXN0cm95TmF0aXZlQ29udGV4dChFR0xD
b250ZXh0IGNvbnRleHQpIG92ZXJyaWRlOwotCiAgICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBs
ZW1lbnQgdGhpcy4KICAgICAvLyBTd2FwIGludGVydmFsIGNhbiBiZSBzZXQgZ2xvYmFsbHkgb3Ig
cGVyIGRyYXdhYmxlLgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBtYWtlIHN1cmUgdGhlIGRy
YXdhYmxlJ3Mgc3dhcCBpbnRlcnZhbCBpcyB0aGUKQEAgLTE2MCwxNSArMTQ1LDkgQEAgY2xhc3Mg
RGlzcGxheU96b25lIGZpbmFsIDogcHVibGljIERpc3BsYXlFR0wKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQgc2hhcmVkQ29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hdGl2ZV9lZ2w6OkF0dHJpYnV0
ZVZlY3RvciB3b3JrZXJBdHRyaWJzKSBvdmVycmlkZTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUZy
b250ZW5kRmVhdHVyZXMoYW5nbGU6OkZyb250ZW5kRmVhdHVyZXMgKmZlYXR1cmVzKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIHZvaWQgcG9wdWxhdGVGZWF0dXJlTGlzdChhbmdsZTo6RmVhdHVyZUxp
c3QgKmZlYXR1cmVzKSBvdmVycmlkZTsKLQogICBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVF
eHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudFN1cmZhY2VsZXNzKGdsOjpDb250
ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKLQogICAgIEdMdWludCBtYWtlU2hhZGVyKEdMdWludCB0
eXBlLCBjb25zdCBjaGFyICpzcmMpOwogICAgIHZvaWQgZHJhd0J1ZmZlcihjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwgQnVmZmVyICpidWZmZXIpOwogICAgIHZvaWQgZHJhd1dpdGhUZXh0dXJl
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBCdWZmZXIgKmJ1ZmZlcik7CkBAIC0xODIsOCAr
MTYxLDYgQEAgY2xhc3MgRGlzcGxheU96b25lIGZpbmFsIDogcHVibGljIERpc3BsYXlFR0wKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CiAgICAgdm9pZCBwYWdl
RmxpcEhhbmRsZXIodW5zaWduZWQgaW50IHNlcXVlbmNlLCB1aW50NjRfdCB0dik7CiAKLSAgICBz
dGQ6OnNoYXJlZF9wdHI8UmVuZGVyZXJFR0w+IG1SZW5kZXJlcjsKLQogICAgIGdibV9kZXZpY2Ug
Km1HQk07CiAgICAgZHJtTW9kZUNvbm5lY3RvclB0ciBtQ29ubmVjdG9yOwogICAgIGRybU1vZGVN
b2RlSW5mb1B0ciBtTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNwcAppbmRl
eCBkNDM1MjI4MzY2MTJkMzdjOTIxN2MwZGVhYzBkNjVhMGJmODg4YmQxLi41NzBiYTQ5NTM1MWJj
NWYzZWQ3ZTZlZjc4MGE3OThiNjEyZDBkNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0
aWxzZ2wuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01h
cCBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpCiAgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgIHwgRm9ybWF0ICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgT3BlbkdMIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICB8IEZp
bHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0
dXJlIGF0dGFjaG1lbnQgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBPcGVuR0wgRVMgcmVuZGVyYnVmZmVyIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhf
Q09NUE9ORU5UMTYsICAgICBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwg
VmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNp
b25Pbmx5KDIsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDIsIDApLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgy
LCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQyNCwg
ICAgIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgx
LCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2Rl
cHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDIsIDApICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywgVmVyc2lvbk9u
bHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MSwgNSwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRzT25seSgiR0xfT0VTX2RlcHRoX3RleHR1cmUi
KSwgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFeHRzT25seSgiR0xfT0VTX2RlcHRoMzIiKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXh0c09ubHkoIkdMX09FU19kZXB0aDMyIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCBWZXJzaW9uT25seSgxLCA1KSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJC
X2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCAgICAgICAgICAg
IEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJH
TF9PRVNfZGVwdGhfdGV4dHVyZSIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFeHRzT25seSgiR0xfT0VTX2RlcHRoMzIiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9E
RVBUSF9DT01QT05FTlQzMkYsICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF9i
dWZmZXJfZmxvYXQiKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfZGVwdGhfYnVmZmVyX2Zsb2F0IiksICAg
VmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25P
bmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKTsKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NURU5DSUxfSU5ERVg4
LCAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IiksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpLCBWZXJzaW9uT25seSgy
LCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgyLCAwKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfZnJhbWVidWZmZXJfb2JqZWN0IiksICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX2ZyYW1lYnVmZmVyX29iamVjdCIpLCAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09F
U19kZXB0aF90ZXh0dXJlIiksIEFsd2F5c1N1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIEdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhf
dGV4dHVyZSBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSk7CkBAIC0yODYsNiArMjg2LDEz
IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJbnRlcm5hbEZvcm1hdEluZm9N
YXAoKQogICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFMzJGX0VYVCwg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9PRVNfdGV4dHVyZV9m
bG9hdCIpLCAgICAgIEV4dHNPbmx5KCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSwgICAg
ICBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgp
ICAgICAgICAgICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1J
TkFOQ0VfQUxQSEEzMkZfRVhULCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9m
bG9hdCIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdM
X09FU190ZXh0dXJlX2Zsb2F0IiksICAgICAgRXh0c09ubHkoIkdMX09FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciIpLCAgICAgIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgKTsKIAorICAgIC8vIEVYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3JndGMgZm9ybWF0cworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8IEZv
cm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1
cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICAgICAgICAgICB8
IFJlbmRlciAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAg
ICAgICB8IEZpbHRlciAgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBhdHRhY2htZW50IHN1
cHBvcnQgfCBPcGVuR0wgRVMgcmVuZGVyYnVmZmVyIHN1cHBvcnQgfAorICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SRURfUkdUQzFfRVhULCAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpLCBB
bHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JF
RF9SR1RDMV9FWFQsICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Nv
bXByZXNzaW9uX3JndGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4
dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiksIEFsd2F5c1N1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRl
ZCgpICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9D
T01QUkVTU0VEX1JFRF9HUkVFTl9SR1RDMl9FWFQsICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBO
ZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YyIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVCwg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YyIpLCBB
bHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3JndGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
KTsKKwogICAgIC8vIEVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2JwdGMgZm9ybWF0cwogICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgfCBPcGVuR0wgRVMg
dGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgT3Bl
bkdMIEVTIHRleHR1cmUgYXR0YWNobWVudCBzdXBwb3J0IHwgT3BlbkdMIEVTIHJlbmRlcmJ1ZmZl
ciBzdXBwb3J0IHwKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
UkdCQV9CUFRDX1VOT1JNX0VYVCwgICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDIsICJHTF9BUkJf
dGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOwpAQCAtMzA3LDQ5ICszMTQsNTYgQEAgc3Rh
dGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpCiAg
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9F
VEMyX0VBQywgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRp
YmlsaXR5IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBWZXJzaW9uT3JF
eHRzKDMsIDAsICJPRVNfY29tcHJlc3NlZF9FVEMyX3NSR0I4X2FscGhhOF90ZXh0dXJlIiksICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOwogCiAgICAgLy8g
RnJvbSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIHRl
eHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAg
fCBSZW5kZXIgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAg
ICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBhdHRhY2htZW50
IHN1cHBvcnQgfCBPcGVuR0wgRVMgcmVuZGVyYnVmZmVyIHN1cHBvcnQgfAotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgICAgRXh0
c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSIpLCAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3
YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxIiksICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
KTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgRmlsdGVyICAgICAgICAgICB8IFJlbmRlciAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0
dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgYXR0YWNobWVu
dCBzdXBwb3J0IHwgT3BlbkdMIEVTIHJlbmRlcmJ1ZmZlciBzdXBwb3J0IHwKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsICAgIEV4
dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiksICAgICBBbHdheXNTdXBw
b3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEiLCAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgICBFeHRzT25seSgiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIiwg
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAg
ICAgICAgICAgICAgICApOwogCiAgICAgLy8gRnJvbSBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfQU5HTEUsIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9z
M3RjIiksICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHko
IkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSAg
ICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIiwgIkdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
KTsKIAogICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAgQWx3
YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9BTkdMRV90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDUiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAg
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfQU5HTEUsIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIiks
ICAgICBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0FO
R0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIsICJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9zM3RjIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAgICAgICAgICk7CisKKyAgICAvLyBG
cm9tIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgorICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBP
cGVuR0wgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IEZpbHRlciAgICAgICAgICAgfCBSZW5kZXIgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4
dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAgICAgICAgICAgfCBPcGVu
R0wgRVMgdGV4dHVyZSBhdHRhY2htZW50IHN1cHBvcnQgfCBPcGVuR0wgRVMgcmVuZGVyYnVmZmVy
IHN1cHBvcnQgfAorICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9T
UkdCX1MzVENfRFhUMV9FWFQsICAgICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjIEdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3Ny
Z2IiLCAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyBHTF9OVl9zUkdCX2Zvcm1hdHMi
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhULCBFeHRz
T25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyBHTF9FWFRfdGV4dHVyZV9zUkdC
IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIiwgIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3MzdGMgR0xfTlZfc1JHQl9mb3JtYXRzIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpLCAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpICAgICAgICAg
ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NS
R0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNz
aW9uX3MzdGMgR0xfRVhUX3RleHR1cmVfc1JHQiIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJT
dXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3Jn
YiIsICJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIEdMX05WX3NSR0JfZm9ybWF0cyIp
LCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQoKSAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQsIEV4dHNP
bmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIEdMX0VYVF90ZXh0dXJlX3NSR0Ii
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IiLCAiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fczN0YyBHTF9OVl9zUkdCX2Zvcm1hdHMiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCkgICAgICAgICAg
ICAgICAgKTsKIAogICAgIC8vIEZyb20gR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1
cmUKICAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0VUQzFfUkdCOF9PRVMsICAgICAg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0
eSIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiKSwgICAgICAgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkKCkgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIEZyb20gR0xfT0VTX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0YwotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1h
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlICAgfCBG
aWx0ZXIgICAgICAgICB8IFJlbmRlciAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJlIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgRVMgYXR0YWNobWVu
dCAgIHwgRVMgcmVuZGVyYnVmZmVyIHwKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUiwgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9L
SFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSLCAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHko
IkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRz
T25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiwgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSLCAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9L
SFIsICAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIi
KSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
OHg4X0tIUiwgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg1X0tIUiwgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDZfS0hSLCAgICAgICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfMTB4OF9LSFIsICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9j
b21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIsICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiwgICAgICAgICBOZXZlclN1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSLCAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIsICAgTmV2
ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09u
bHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUiwg
ICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVf
S0hSLCAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzZ4NV9LSFIsICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsK
LSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0FTVENfNng2X0tIUiwgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19s
ZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDVfS0hSLCAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9h
c3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsICAgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiwgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29t
cHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiwgIE5ldmVyU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSLCAgTmV2ZXJTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90
ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIsICBOZXZlclN1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xf
S0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5
KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Ci0gICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiwg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0
c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKLSAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJf
S0hSLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
LCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBPcGVuR0wgdGV4dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgRmlsdGVyICAgICAgICAgICB8IFJlbmRlciAgICAgICAgICB8IE9wZW5HTCBFUyB0ZXh0dXJl
IHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgIHwgRVMgYXR0
YWNobWVudCAgIHwgRVMgcmVuZGVyYnVmZmVyIHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsICAgICAgICAgICBFeHRzT25seSgi
R0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9h
c3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBw
b3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ181eDRfS0hSLCAgICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBF
eHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiwgICAg
ICAgICAgIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBB
bHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsICAgICAgICAgICBFeHRzT25seSgiR0xf
S0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3Rj
X2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0
ZWQoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ182eDZfS0hSLCAgICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRz
T25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiwgICAgICAg
ICAgIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJl
X2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsICAgICAgICAgICBFeHRzT25seSgiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xk
ciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQo
KSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q184eDhfS0hSLCAgICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25s
eSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVk
KCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsICAgICAgICAg
IEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2Nv
bXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
LCBOZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSLCAgICAgICAgICBFeHRzT25seSgiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIp
LCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18x
MHg4X0tIUiwgICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgi
R0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCks
IE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLCAgICAgICAgIEV4
dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBw
b3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBO
ZXZlclN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiwgICAgICAgICBFeHRzT25seSgiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBB
bHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7Cisg
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngx
Ml9LSFIsICAgICAgICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
bGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xf
S0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5l
dmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLCAgIEV4dHNP
bmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZl
clN1cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUiwgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksIEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdh
eXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzV4NV9LSFIsICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRy
IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hS
X3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVy
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLCAgIEV4dHNPbmx5
KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1
cHBvcnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiwgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29t
cHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCks
IEV4dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNT
dXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4
NV9LSFIsICAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiks
IEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3Rl
eHR1cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3Vw
cG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLCAgIEV4dHNPbmx5KCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwg
TmV2ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2Fz
dGNfbGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBv
cnRlZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfOHg4X0tIUiwgICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJl
c3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4
dHNPbmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBw
b3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVf
S0hSLCAgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFs
d2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUiwgIEV4dHNPbmx5KCJHTF9L
SFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2
ZXJTdXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
bGRyIiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRl
ZCgpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIsICBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNP
bmx5KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0
ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CisgICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tI
UiwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiksIEFsd2F5
c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVf
Y29tcHJlc3Npb25fYXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVk
KCksIE5ldmVyU3VwcG9ydGVkKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIsIEV4dHNPbmx5KCJHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJT
dXBwb3J0ZWQoKSwgRXh0c09ubHkoIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRy
IiksIEFsd2F5c1N1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTJfS0hSLCBFeHRzT25seSgiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19sZHIiKSwgQWx3YXlzU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIEV4dHNPbmx5
KCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciIpLCBBbHdheXNTdXBwb3J0ZWQo
KSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CiAgICAgSW5zZXJ0Rm9ybWF0
TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18zeDN4M19PRVMsICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgRXh0
c09ubHkoIkdMX09FU190ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGMiKSwgICAgIEFsd2F5c1N1cHBv
cnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpKTsKICAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4M3gzX09FUywgICAg
ICAgICBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgpLCBOZXZlclN1cHBvcnRlZCgp
LCBFeHRzT25seSgiR0xfT0VTX3RleHR1cmVfY29tcHJlc3Npb25fYXN0YyIpLCAgICAgQWx3YXlz
U3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCkpOwogICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0eDNfT0VT
LCAgICAgICAgIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9ydGVkKCksIE5ldmVyU3VwcG9y
dGVkKCksIEV4dHNPbmx5KCJHTF9PRVNfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjIiksICAgICBB
bHdheXNTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSwgTmV2ZXJTdXBwb3J0ZWQoKSk7CkBA
IC01ODMsNiArNTk3LDE1IEBAIHN0YXRpYyBHTGVudW0gR2V0TmF0aXZlQ29tcHJlc3NlZEZvcm1h
dChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgICB9CiAgICAgfQogCisgICAg
aWYgKGZlYXR1cmVzLmF2b2lkRFhUMXNSR0JUZXh0dXJlRm9ybWF0LmVuYWJsZWQpCisgICAgewor
ICAgICAgICBpZiAoZm9ybWF0ID09IEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUKQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBQYXNzIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDFfRVhUIGluc3RlYWQgdG8gd29ya2Fyb3VuZCBkcml2ZXIgYnVnLgorICAgICAgICAg
ICAgcmVzdWx0ID0gR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03MjgsOCArNzUxLDE4
IEBAIFRleFN0b3JhZ2VGb3JtYXQgR2V0VGV4U3RvcmFnZUZvcm1hdChjb25zdCBGdW5jdGlvbnNH
TCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICBUZXhTdG9yYWdlRm9ybWF0IHJlc3VsdDsKLSAgICBy
ZXN1bHQuaW50ZXJuYWxGb3JtYXQgPSBHZXROYXRpdmVJbnRlcm5hbEZvcm1hdChmdW5jdGlvbnMs
IGZlYXR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCkpOwor
ICAgIC8vIFRleFN0b3JhZ2UgZW50cnlwb2ludHMgYWNjZXB0IGJvdGggY29tcHJlc3NlZCBhbmQg
dW5jb21wcmVzc2VkIGZvcm1hdHMuCisgICAgLy8gQWxsIGNvbXByZXNzZWQgZm9ybWF0cyBhcmUg
c2l6ZWQuCisgICAgZ2w6OkludGVybmFsRm9ybWF0IHNpemVkRm9ybWF0SW5mbyA9IGdsOjpHZXRT
aXplZEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7CisgICAgaWYgKHNpemVkRm9y
bWF0SW5mby5jb21wcmVzc2VkKQorICAgIHsKKyAgICAgICAgcmVzdWx0LmludGVybmFsRm9ybWF0
ID0gR2V0TmF0aXZlQ29tcHJlc3NlZEZvcm1hdChmdW5jdGlvbnMsIGZlYXR1cmVzLCBpbnRlcm5h
bEZvcm1hdCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJlc3VsdC5pbnRlcm5h
bEZvcm1hdCA9IEdldE5hdGl2ZUludGVybmFsRm9ybWF0KGZ1bmN0aW9ucywgZmVhdHVyZXMsIHNp
emVkRm9ybWF0SW5mbyk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1
bmN0aW9uc2dsX3R5cGVkZWZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaAppbmRleCAyYTg2Yjc3Nzg0OGZi
OGM0YmNhZWE2OTNkNmNmOTJhMWIwODU4OTQwLi41ZjJjMTM4OWI5N2U3YTBlMmFkYWUwY2NkMGFj
ZTQ1ZDM3MGQ3YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRl
ZnMuaApAQCAtMTcyNiwxMTIgKzE3MjYsNiBAQCB0eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJ
RU5UUlkgKlBGTkdMRUdMSU1BR0VUQVJHRVRSRU5ERVJCVUZGRVJTVE9SQUdFT0VTUFJPQwogICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7CiAKLS8vIE5WX3BhdGhf
cmVuZGVyaW5nIChvcmlnaW5hbGx5IHdyaXR0ZW4gYWdhaW5zdCAzLjIgY29tcGF0aWJpbGl0eSBw
cm9maWxlKQotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTE1BVFJJWExP
QURGRVhUUFJPQykoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOwotdHlwZWRl
ZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTE1BVFJJWExPQURGTlZQUk9DKShHTGVu
dW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbSk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxf
R0xfQVBJRU5UUlkgKlBGTkdMTUFUUklYTE9BRElERU5USVRZTlZQUk9DKShHTGVudW0gbWF0cml4
TW9kZSk7Ci10eXBlZGVmIEdMdWludChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xHRU5QQVRI
U05WUFJPQykoR0xzaXplaSByYW5nZSk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJRU5U
UlkgKlBGTkdMREVMRVRFUEFUSFNOVlBST0MpKEdMdWludCBwYXRoLCBHTHNpemVpIHJhbmdlKTsK
LXR5cGVkZWYgR0xib29sZWFuKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTElTUEFUSE5WUFJP
QykoR0x1aW50IHBhdGgpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5H
TFBBVEhDT01NQU5EU05WUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpOwotdHlwZWRlZiB2b2lk
KElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTFBBVEhQQVJBTUVURVJJTlZQUk9DKShHTHVpbnQg
cGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2YWx1ZSk7Ci10eXBlZGVmIHZv
aWQoSU5URVJOQUxfR0xfQVBJRU5UUlkgKlBGTkdMUEFUSFBBUkFNRVRFUkZOVlBST0MpKEdMdWlu
dCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdmFsdWUpOwotdHlwZWRl
ZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEdFVFBBVEhQQVJBTUVURVJJVk5WUFJP
QykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
dmFsdWUpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEdFVFBBVEhQ
QVJBTUVURVJGVk5WUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICp2YWx1ZSk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJRU5U
UlkgKlBGTkdMUEFUSFNURU5DSUxGVU5DTlZQUk9DKShHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBH
THVpbnQgbWFzayk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJRU5UUlkgKlBGTkdMU1RF
TkNJTEZJTExQQVRITlZQUk9DKShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAq
UEZOR0xTVEVOQ0lMU1RST0tFUEFUSE5WUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spOwotdHlwZWRlZiB2b2lkKElOVEVSTkFM
X0dMX0FQSUVOVFJZICpQRk5HTENPVkVSRklMTFBBVEhOVlBST0MpKEdMdWludCBwYXRoLCBHTGVu
dW0gY292ZXJNb2RlKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xD
T1ZFUlNUUk9LRVBBVEhOVlBST0MpKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKTsKLXR5
cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklM
TFBBVEhOVlBST0MpKEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlKTsKLXR5cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xTVEVOQ0lM
VEhFTkNPVkVSU1RST0tFUEFUSE5WUFJPQykoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQ
SUVOVFJZICpQRk5HTENPVkVSRklMTFBBVEhJTlNUQU5DRUROVlBST0MpKAotICAgIEdMc2l6ZWkg
bnVtUGF0aHMsCi0gICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwot
dHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTENPVkVSU1RST0tFUEFUSElO
U1RBTkNFRE5WUFJPQykoCi0gICAgR0xzaXplaSBudW1QYXRocywKLSAgICBHTGVudW0gcGF0aE5h
bWVUeXBlLAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIEdMdWludCBwYXRoQmFzZSwKLSAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci10eXBlZGVmIHZvaWQoSU5URVJOQUxfR0xfQVBJ
RU5UUlkgKlBGTkdMU1RFTkNJTEZJTExQQVRISU5TVEFOQ0VETlZQUk9DKSgKLSAgICBHTHNpemVp
IG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0
aHMsCi0gICAgR0x1aW50IHBhdGhCYXNlLAotICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICBHTHVp
bnQgbWFzaywKLSAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0
cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5H
TFNURU5DSUxTVFJPS0VQQVRISU5TVEFOQ0VETlZQUk9DKSgKLSAgICBHTHNpemVpIG51bVBhdGhz
LAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAg
R0x1aW50IHBhdGhCYXNlLAotICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICBHTHVpbnQgbWFzaywK
LSAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1W
YWx1ZXMpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTFNURU5DSUxU
SEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRE5WUFJPQykoCi0gICAgR0xzaXplaSBudW1QYXRocywK
LSAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgIEdM
dWludCBwYXRoQmFzZSwKLSAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgR0x1aW50IG1hc2ssCi0g
ICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICBjb25z
dCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQ
SUVOVFJZICpQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VETlZQUk9DKSgK
LSAgICBHTHNpemVpIG51bVBhdGhzLAotICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgY29u
c3Qgdm9pZCAqcGF0aHMsCi0gICAgR0x1aW50IHBhdGhCYXNlLAotICAgIEdMaW50IHJlZmVyZW5j
ZSwKLSAgICBHTHVpbnQgbWFzaywKLSAgICBHTGVudW0gY292ZXJNb2RlLAotICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci0KLXR5
cGVkZWYgdm9pZChJTlRFUk5BTF9HTF9BUElFTlRSWSAqUEZOR0xCSU5ERlJBR01FTlRJTlBVVExP
Q0FUSU9OTlZQUk9DKShHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotdHlwZWRlZiB2b2lk
KElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTk5W
UFJPQykoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7
Ci0KIC8vIEVTIDMuMgogdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEJM
RU5EQkFSUklFUlBST0MpKHZvaWQpOwogdHlwZWRlZiB2b2lkKElOVEVSTkFMX0dMX0FQSUVOVFJZ
ICpQRk5HTFBSSU1JVElWRUJPVU5ESU5HQk9YUFJPQykoR0xmbG9hdCBtaW5YLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dsX2Jp
bmRpbmdzX2RhdGEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9nbF9iaW5kaW5nc19kYXRhLmpzb24KaW5kZXggNGFlMDRhZDRkY2ZhNjljNTYz
YmFiZDM0YjkxNmViMDU3Yzk1YzNhZC4uOTA1MzE2NDJkZjA1NjY3MGE5NGVkNDg5MjIwZWFlNTli
MmZlNzQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2dsX2JpbmRpbmdzX2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2xfYmluZGluZ3NfZGF0YS5qc29uCkBA
IC0zNzAsMzMgKzM3MCw2IEBACiAgICAgICAgICJXYWl0U3luYyIKICAgICBdLAogCi0gICAgIk5W
X3BhdGhfcmVuZGVyaW5nIChvcmlnaW5hbGx5IHdyaXR0ZW4gYWdhaW5zdCAzLjIgY29tcGF0aWJp
bGl0eSBwcm9maWxlKSI6Ci0gICAgWwotICAgICAgICAiTWF0cml4TG9hZGZFWFQiLAotICAgICAg
ICAiR2VuUGF0aHNOViIsCi0gICAgICAgICJEZWxldGVQYXRoc05WIiwKLSAgICAgICAgIlBhdGhD
b21tYW5kc05WIiwKLSAgICAgICAgIklzUGF0aE5WIiwKLSAgICAgICAgIlBhdGhQYXJhbWV0ZXJm
TlYiLAotICAgICAgICAiUGF0aFBhcmFtZXRlcmlOViIsCi0gICAgICAgICJHZXRQYXRoUGFyYW1l
dGVyZnZOViIsCi0gICAgICAgICJHZXRQYXRoUGFyYW1ldGVyaXZOViIsCi0gICAgICAgICJQYXRo
U3RlbmNpbEZ1bmNOViIsCi0gICAgICAgICJTdGVuY2lsRmlsbFBhdGhOViIsCi0gICAgICAgICJT
dGVuY2lsU3Ryb2tlUGF0aE5WIiwKLSAgICAgICAgIkNvdmVyRmlsbFBhdGhOViIsCi0gICAgICAg
ICJDb3ZlclN0cm9rZVBhdGhOViIsCi0gICAgICAgICJTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhO
ViIsCi0gICAgICAgICJTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WIiwKLSAgICAgICAgIkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWROViIsCi0gICAgICAgICJDb3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWROViIsCi0gICAgICAgICJTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWROViIsCi0gICAgICAgICJT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZE5WIiwKLSAgICAgICAgIlN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aEluc3RhbmNlZE5WIiwKLSAgICAgICAgIlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkTlYiLAotICAgICAgICAiUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuTlYiCi0g
ICAgXSwKLQogICAgICIzLjMiOgogICAgIFsKICAgICAgICAgIkJpbmRGcmFnRGF0YUxvY2F0aW9u
SW5kZXhlZCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvbnVsbF9mdW5jdGlvbnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL251bGxfZnVuY3Rpb25zLmNwcAppbmRleCA4NDQ1
OWNjZTZjMjQ3NTZiMmFmNjdkZDUwZmFiMmU1NzY3ZDhmMzA4Li42ZGJmNmZhNWZiNTEzMDg0OTY2
ZTg1MTk3MzU5Y2E2OGJjMGNmYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvbnVsbF9mdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9udWxsX2Z1bmN0aW9u
cy5jcHAKQEAgLTEsNyArMSw3IEBACiAvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgog
Ly8gR2VuZXJhdGVkIGJ5IGdlbmVyYXRlX2dsX2Rpc3BhdGNoX3RhYmxlLnB5IHVzaW5nIGRhdGEg
ZnJvbSBnbF9iaW5kaW5nc19kYXRhLmpzb24gYW5kIGdsLnhtbC4KIC8vCi0vLyBDb3B5cmlnaHQg
MjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAv
LwpAQCAtNTE4LDI4ICs1MTgsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ29weVRl
eHR1cmVTdWJJbWFnZTNETlVMTChHTHVpbnQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQoge30KIAot
dm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWROVk5VTEwo
R0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQYXRoTlZOVUxMKEdMdWludCBwYXRoLCBHTGVudW0g
Y292ZXJNb2RlKSB7fQotCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkTlZOVUxMKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpCi17fQotCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ292ZXJTdHJv
a2VQYXRoTlZOVUxMKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKSB7fQotCiB2b2lkIElO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNb2R1bGF0aW9uTlZOVUxMKEdMZW51bSBjb21w
b25lbnRzKSB7fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsQ3JlYXRlQnVmZmVyc05V
TEwoR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZlcnMpIHt9CkBAIC02MDcsOCArNTg1LDYgQEAgdm9p
ZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbERlbGV0ZUZyYW1lYnVmZmVyc05VTEwoR0xzaXplaSBu
LCBjb25zdCBHTHVpbnQgKmZyYW0KIAogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbERlbGV0
ZU1lbW9yeU9iamVjdHNFWFROVUxMKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICptZW1vcnlPYmpl
Y3RzKSB7fQogCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsRGVsZXRlUGF0aHNOVk5VTEwo
R0x1aW50IHBhdGgsIEdMc2l6ZWkgcmFuZ2UpIHt9Ci0KIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xEZWxldGVQcm9ncmFtTlVMTChHTHVpbnQgcHJvZ3JhbSkge30KIAogdm9pZCBJTlRFUk5B
TF9HTF9BUElFTlRSWSBnbERlbGV0ZVByb2dyYW1QaXBlbGluZXNOVUxMKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICpwaXBlbGluZXMpIHt9CkBAIC04NjksMTEgKzg0NSw2IEBAIHZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xHZW5GZW5jZXNOVk5VTEwoR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNl
cykge30KIAogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlbkZyYW1lYnVmZmVyc05VTEwo
R0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycykge30KIAotR0x1aW50IElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsR2VuUGF0aHNOVk5VTEwoR0xzaXplaSByYW5nZSkKLXsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0x1aW50PigwKTsKLX0KLQogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBn
bEdlblByb2dyYW1QaXBlbGluZXNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpIHt9
CiAKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xHZW5RdWVyaWVzTlVMTChHTHNpemVpIG4s
IEdMdWludCAqaWRzKSB7fQpAQCAtMTE1NCwxMCArMTEyNSw2IEBAIHZvaWQgSU5URVJOQUxfR0xf
QVBJRU5UUlkgZ2xHZXRPYmplY3RQdHJMYWJlbE5VTEwoY29uc3Qgdm9pZCAqcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVs
KQoge30KIAotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJmdk5W
TlVMTChHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSkge30KLQotdm9p
ZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJpdk5WTlVMTChHTHVpbnQg
cGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFsdWUpIHt9Ci0KIHZvaWQgSU5URVJOQUxfR0xf
QVBJRU5UUlkgZ2xHZXRQb2ludGVydk5VTEwoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKSB7
fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUJpbmFyeU5VTEwoR0x1
aW50IHByb2dyYW0sCkBAIC0xNjU1LDExICsxNjIyLDYgQEAgR0xib29sZWFuIElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsSXNNZW1vcnlPYmplY3RFWFROVUxMKEdMdWludCBtZW1vcnlPYmplY3QpCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMYm9vbGVhbj4oMCk7CiB9CiAKLUdMYm9vbGVhbiBJTlRF
Uk5BTF9HTF9BUElFTlRSWSBnbElzUGF0aE5WTlVMTChHTHVpbnQgcGF0aCkKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xib29sZWFuPigwKTsKLX0KLQogR0xib29sZWFuIElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsSXNQcm9ncmFtTlVMTChHTHVpbnQgcHJvZ3JhbSkKIHsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0xib29sZWFuPigwKTsKQEAgLTE3NDcsOCArMTcwOSw2IEBAIHZvaWQgKklO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsTWFwTmFtZWRCdWZmZXJSYW5nZU5VTEwoR0x1aW50IGJ1ZmZl
ciwKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dm9pZCAqPigwKTsKIH0KIAotdm9pZCBJTlRFUk5B
TF9HTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmRVhUTlVMTChHTGVudW0gbW9kZSwgY29uc3QgR0xm
bG9hdCAqbSkge30KLQogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbE1heFNoYWRlckNvbXBp
bGVyVGhyZWFkc0FSQk5VTEwoR0x1aW50IGNvdW50KSB7fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQ
SUVOVFJZIGdsTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSTlVMTChHTHVpbnQgY291bnQpIHt9
CkBAIC0xODgxLDIwICsxODQxLDYgQEAgdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGNo
UGFyYW1ldGVyZnZOVUxMKEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqdmEKIAogdm9pZCBJ
TlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGNoUGFyYW1ldGVyaU5VTEwoR0xlbnVtIHBuYW1lLCBH
TGludCB2YWx1ZSkge30KIAotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhDb21tYW5k
c05WTlVMTChHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Y29vcmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpjb29yZHMpCi17fQotCi12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGds
UGF0aFBhcmFtZXRlcmZOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCB2
YWx1ZSkge30KLQotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpTlZO
VUxMKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKSB7fQotCi12b2lkIElO
VEVSTkFMX0dMX0FQSUVOVFJZIGdsUGF0aFN0ZW5jaWxGdW5jTlZOVUxMKEdMZW51bSBmdW5jLCBH
TGludCByZWYsIEdMdWludCBtYXNrKSB7fQotCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGds
UGF1c2VUcmFuc2Zvcm1GZWVkYmFja05VTEwoKSB7fQogCiB2b2lkIElOVEVSTkFMX0dMX0FQSUVO
VFJZIGdsUGl4ZWxTdG9yZWZOVUxMKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkge30KQEAg
LTE5MzksMTMgKzE4ODUsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUHJvZ3JhbUJp
bmFyeU5VTEwoR0x1aW50IHByb2dyYW0sCiAKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtUGFyYW1ldGVyaU5VTEwoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQg
dmFsdWUpIHt9CiAKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5OVk5VTEwoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqY29lZmZzKQote30KLQogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFByb2dy
YW1Vbmlmb3JtMWROVUxMKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUg
djApIHt9CiAKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFkdk5V
TEwoR0x1aW50IHByb2dyYW0sCkBAIC0yMzU2LDE4ICsyMjk1LDYgQEAgdm9pZCBJTlRFUk5BTF9H
TF9BUElFTlRSWSBnbFNpZ25hbFNlbWFwaG9yZUVYVE5VTEwoR0x1aW50IHNlbWFwaG9yZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZW51bSAqZHN0TGF5b3V0cykKIHt9CiAKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWROVk5VTEwoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgSU5URVJOQUxf
R0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51bSBm
aWxsTW9kZSwgR0x1aW50IG1hc2spIHt9Ci0KIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xT
dGVuY2lsRnVuY05VTEwoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spIHt9CiAK
IHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlTlVMTChHTGVu
dW0gZmFjZSwKQEAgLTIzODgsNTMgKzIzMTUsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZ
IGdsU3RlbmNpbE9wU2VwYXJhdGVOVUxMKEdMZW51bSBmYWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHBwYXNzKQoge30KIAotdm9p
ZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkTlZOVUxM
KEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkg
Z2xTdGVuY2lsU3Ryb2tlUGF0aE5WTlVMTChHTHVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBH
THVpbnQgbWFzaykge30KLQotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZE5WTlVMTChHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dHJhbnNmb3JtVmFsdWVzKQote30KLQotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aE5WTlVMTChHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXt9Ci0KLXZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkKLWdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWROVk5V
TEwoR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXt9Ci0KLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WTlVMTChHTHVpbnQgcGF0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkK
LXt9Ci0KIEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFRlc3RGZW5jZU5WTlVMTChH
THVpbnQgZmVuY2UpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMYm9vbGVhbj4oMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvbnVsbF9mdW5jdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9udWxsX2Z1bmN0aW9ucy5oCmluZGV4IGY1OTdlZDI3MWI4MDE2OThkYTQz
MWQzYzlhODc5MjhkYjUzN2FmNzEuLjg0ZTk4NTZlZGIyZTlmZDdmNDJmNTI4ZGUzNTkxODA4MTRi
NDMwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9udWxsX2Z1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9udWxsX2Z1bmN0aW9ucy5oCkBAIC0xLDcgKzEsNyBA
QAogLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRlZCBieSBnZW5l
cmF0ZV9nbF9kaXNwYXRjaF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gZ2xfYmluZGluZ3NfZGF0
YS5qc29uIGFuZCBnbC54bWwuCiAvLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTM3NCwyMiArMzc0LDYg
QEAgdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENvcHlUZXh0dXJlU3ViSW1hZ2UzRE5VTEwo
R0x1aW50IHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLXZvaWQg
SU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkTlZOVUxMKEdMc2l6
ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotdm9pZCBJTlRFUk5BTF9HTF9BUElF
TlRSWSBnbENvdmVyRmlsbFBhdGhOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUp
Owotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5W
TlVMTChHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsK
LXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhOVk5VTEwoR0x1aW50
IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENv
dmVyYWdlTW9kdWxhdGlvbk5WTlVMTChHTGVudW0gY29tcG9uZW50cyk7CiB2b2lkIElOVEVSTkFM
X0dMX0FQSUVOVFJZIGdsQ3JlYXRlQnVmZmVyc05VTEwoR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZl
cnMpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbENyZWF0ZUZyYW1lYnVmZmVyc05VTEwo
R0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7CkBAIC00MjQsNyArNDA4LDYgQEAgdm9p
ZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbERlbGV0ZUJ1ZmZlcnNOVUxMKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50ICpidWZmZXJzKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVG
ZW5jZXNOVk5VTEwoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcyk7CiB2b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsRGVsZXRlRnJhbWVidWZmZXJzTlVMTChHTHNpemVpIG4sIGNvbnN0
IEdMdWludCAqZnJhbWVidWZmZXJzKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxl
dGVNZW1vcnlPYmplY3RzRVhUTlVMTChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqbWVtb3J5T2Jq
ZWN0cyk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsRGVsZXRlUGF0aHNOVk5VTEwoR0x1
aW50IHBhdGgsIEdMc2l6ZWkgcmFuZ2UpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbERl
bGV0ZVByb2dyYW1OVUxMKEdMdWludCBwcm9ncmFtKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5U
UlkgZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzTlVMTChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAq
cGlwZWxpbmVzKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xEZWxldGVRdWVyaWVzTlVM
TChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKTsKQEAgLTU4Niw3ICs1NjksNiBAQCB2b2lk
IElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsRnJvbnRGYWNlTlVMTChHTGVudW0gbW9kZSk7CiB2b2lk
IElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2VuQnVmZmVyc05VTEwoR0xzaXplaSBuLCBHTHVpbnQg
KmJ1ZmZlcnMpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbEdlbkZlbmNlc05WTlVMTChH
THNpemVpIG4sIEdMdWludCAqZmVuY2VzKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xH
ZW5GcmFtZWJ1ZmZlcnNOVUxMKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOwotR0x1
aW50IElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2VuUGF0aHNOVk5VTEwoR0xzaXplaSByYW5nZSk7
CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2VuUHJvZ3JhbVBpcGVsaW5lc05VTEwoR0xz
aXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcyk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGds
R2VuUXVlcmllc05VTEwoR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7CiB2b2lkIElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsR2VuUmVuZGVyYnVmZmVyc05VTEwoR0xzaXplaSBuLCBHTHVpbnQgKnJlbmRl
cmJ1ZmZlcnMpOwpAQCAtNzYwLDggKzc0Miw2IEBAIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkg
Z2xHZXRPYmplY3RQdHJMYWJlbE5VTEwoY29uc3Qgdm9pZCAqcHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xjaGFyICpsYWJlbCk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFt
ZXRlcmZ2TlZOVUxMKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnZhbHVlKTsK
LXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xHZXRQYXRoUGFyYW1ldGVyaXZOVk5VTEwoR0x1
aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKTsKIHZvaWQgSU5URVJOQUxfR0xf
QVBJRU5UUlkgZ2xHZXRQb2ludGVydk5VTEwoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsK
IHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtQmluYXJ5TlVMTChHTHVpbnQg
cHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCkBAIC0xMDUzLDcgKzEwMzMsNiBAQCBHTGJvb2xlYW4gSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xJc0VuYWJsZWRpTlVMTChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpOwogR0xib29sZWFuIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsSXNGZW5jZU5WTlVMTChHTHVp
bnQgZmVuY2UpOwogR0xib29sZWFuIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsSXNGcmFtZWJ1ZmZl
ck5VTEwoR0x1aW50IGZyYW1lYnVmZmVyKTsKIEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9BUElFTlRS
WSBnbElzTWVtb3J5T2JqZWN0RVhUTlVMTChHTHVpbnQgbWVtb3J5T2JqZWN0KTsKLUdMYm9vbGVh
biBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbElzUGF0aE5WTlVMTChHTHVpbnQgcGF0aCk7CiBHTGJv
b2xlYW4gSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xJc1Byb2dyYW1OVUxMKEdMdWludCBwcm9ncmFt
KTsKIEdMYm9vbGVhbiBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbElzUHJvZ3JhbVBpcGVsaW5lTlVM
TChHTHVpbnQgcGlwZWxpbmUpOwogR0xib29sZWFuIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsSXNR
dWVyeU5VTEwoR0x1aW50IGlkKTsKQEAgLTEwNzgsNyArMTA1Nyw2IEBAIHZvaWQgKklOVEVSTkFM
X0dMX0FQSUVOVFJZIGdsTWFwTmFtZWRCdWZmZXJSYW5nZU5VTEwoR0x1aW50IGJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpOwotdm9pZCBJTlRFUk5B
TF9HTF9BUElFTlRSWSBnbE1hdHJpeExvYWRmRVhUTlVMTChHTGVudW0gbW9kZSwgY29uc3QgR0xm
bG9hdCAqbSk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsTWF4U2hhZGVyQ29tcGlsZXJU
aHJlYWRzQVJCTlVMTChHTHVpbnQgY291bnQpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBn
bE1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0tIUk5VTEwoR0x1aW50IGNvdW50KTsKIHZvaWQgSU5U
RVJOQUxfR0xfQVBJRU5UUlkgZ2xNZW1vcnlCYXJyaWVyTlVMTChHTGJpdGZpZWxkIGJhcnJpZXJz
KTsKQEAgLTExNjYsMTUgKzExNDQsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsT2Jq
ZWN0UHRyTGFiZWxOVUxMKGNvbnN0IHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCk7CiB2b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsUGF0Y2hQYXJhbWV0ZXJmdk5VTEwoR0xlbnVtIHBuYW1lLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpOwogdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGNoUGFy
YW1ldGVyaU5VTEwoR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Ci12b2lkIElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsUGF0aENvbW1hbmRzTlZOVUxMKEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvbW1hbmRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVi
eXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBudW1Db29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7Ci12b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIGdsUGF0aFBhcmFtZXRlcmZOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUGF0
aFBhcmFtZXRlcmlOVk5VTEwoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUp
Owotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFBhdGhTdGVuY2lsRnVuY05WTlVMTChHTGVu
dW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVO
VFJZIGdsUGF1c2VUcmFuc2Zvcm1GZWVkYmFja05VTEwoKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJ
RU5UUlkgZ2xQaXhlbFN0b3JlZk5VTEwoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKIHZv
aWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQaXhlbFN0b3JlaU5VTEwoR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7CkBAIC0xMjAxLDExICsxMTcwLDYgQEAgdm9pZCBJTlRFUk5BTF9HTF9BUElF
TlRSWSBnbFByb2dyYW1CaW5hcnlOVUxMKEdMdWludCBwcm9ncmFtLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCk7
CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsUHJvZ3JhbVBhcmFtZXRlcmlOVUxMKEdMdWlu
dCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKLXZvaWQgSU5URVJOQUxfR0xf
QVBJRU5UUlkgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5OVk5VTEwoR0x1aW50IHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsKIHZvaWQgSU5URVJO
QUxfR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFkTlVMTChHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMZG91YmxlIHYwKTsKIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtVW5pZm9ybTFkdk5VTEwoR0x1aW50IHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLApAQCAtMTQ4MSwx
NSArMTQ0NSw2IEBAIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTaWduYWxTZW1hcGhvcmVF
WFROVUxMKEdMdWludCBzZW1hcGhvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtVGV4dHVyZUJhcnJpZXJzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0
ZXh0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZW51bSAqZHN0TGF5b3V0cyk7Ci12b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZ
IGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlZOVUxMKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJh
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotdm9pZCBJTlRFUk5B
TF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxGaWxsUGF0aE5WTlVMTChHTHVpbnQgcGF0aCwgR0xlbnVt
IGZpbGxNb2RlLCBHTHVpbnQgbWFzayk7CiB2b2lkIElOVEVSTkFMX0dMX0FQSUVOVFJZIGdsU3Rl
bmNpbEZ1bmNOVUxMKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKIHZvaWQg
SU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlTlVMTChHTGVudW0gZmFj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZnVuYywKQEAgLTE1MDIsNDIgKzE0NTcsNiBAQCB2b2lkIElOVEVSTkFMX0dMX0FQSUVO
VFJZIGdsU3RlbmNpbE9wU2VwYXJhdGVOVUxMKEdMZW51bSBmYWNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2ZhaWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcGZhaWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkcHBhc3MpOwotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5jaWxTdHJva2VQYXRo
SW5zdGFuY2VkTlZOVUxMKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci12b2lkIElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhOVk5VTEwoR0x1aW50IHBhdGgsIEdMaW50IHJl
ZmVyZW5jZSwgR0x1aW50IG1hc2spOwotdm9pZCBJTlRFUk5BTF9HTF9BUElFTlRSWSBnbFN0ZW5j
aWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZE5WTlVMTChHTHNpemVpIG51bVBhdGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsVGhlbkNvdmVyRmlsbFBhdGhOVk5VTEwoR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotdm9pZCBJTlRFUk5BTF9H
TF9BUElFTlRSWQotZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZE5WTlVMTChH
THNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLXZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsVGhlbkNvdmVyU3Ryb2tlUGF0aE5WTlVMTChHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7CiBHTGJvb2xl
YW4gSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xUZXN0RmVuY2VOVk5VTEwoR0x1aW50IGZlbmNlKTsK
IHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkgZ2xUZXhCdWZmZXJOVUxMKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlcik7CiB2b2lkIElOVEVSTkFMX0dM
X0FQSUVOVFJZIGdsVGV4QnVmZmVyUmFuZ2VOVUxMKEdMZW51bSB0YXJnZXQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVy
ZXJnbF91dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5jcHAKaW5kZXggYTFhZjE3MDQ1ZTA3YjNjNTM3MTI1
YTc1Nzg3YjkyODE5NTBlZTVmMy4uNmEyNTBkYjg1NDgxMGM2YTg0MTg0YWY2YTExYTQ1NDAyZDc0
ZTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcApAQCAtOSw2
ICs5LDcgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRp
bHMuaCIKIAorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGxpbWl0cz4KIAogI2luY2x1ZGUg
ImNvbW1vbi9tYXRodXRpbC5oIgpAQCAtODYsNiArODcsMzAgQEAgdWludDMyX3QgR2V0RGV2aWNl
SUQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucykKICAgICByZXR1cm4gMDsKIH0KIAorYm9v
bCBJc01lc2EoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgc3RkOjphcnJheTxpbnQsIDM+
ICp2ZXJzaW9uKQoreworICAgIEFTU0VSVCh2ZXJzaW9uKTsKKworICAgIGlmIChmdW5jdGlvbnMt
PnN0YW5kYXJkICE9IFNUQU5EQVJEX0dMX0RFU0tUT1ApCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgbmF0aXZlVmVyc2lvblN0cmluZygKKyAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGZ1bmN0aW9ucy0+Z2V0U3RyaW5n
KEdMX1ZFUlNJT04pKSk7CisgICAgc2l6ZV90IHBvcyA9IG5hdGl2ZVZlcnNpb25TdHJpbmcuZmlu
ZCgiTWVzYSIpOworICAgIGlmIChwb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaW50ICpkYXRhID0gdmVyc2lvbi0+ZGF0
YSgpOworICAgIGRhdGFbMF0gPSBkYXRhWzFdID0gZGF0YVsyXSA9IDA7CisgICAgc3RkOjpzc2Nh
bmYobmF0aXZlVmVyc2lvblN0cmluZy5jX3N0cigpICsgcG9zLCAiTWVzYSAlZC4lZC4lZCIsIGRh
dGEsIGRhdGEgKyAxLCBkYXRhICsgMik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogbmFtZXNw
YWNlIG5hdGl2ZWdsX2dsCiB7CiAKQEAgLTExMDUsNyArMTEzMCwxMSBAQCB2b2lkIEdlbmVyYXRl
Q2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgIGV4dGVuc2lvbnMtPnNldFRl
eHR1cmVFeHRlbnNpb25TdXBwb3J0KCp0ZXh0dXJlQ2Fwc01hcCk7CiAgICAgZXh0ZW5zaW9ucy0+
dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUktIUiA9CiAgICAgICAgIGV4dGVuc2lvbnMtPnRleHR1
cmVDb21wcmVzc2lvbkFTVENMRFJLSFIgJiYKLSAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0
ZW5zaW9uKCJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciIpOworICAgICAgICBm
dW5jdGlvbnMtPmhhc0V4dGVuc2lvbigiR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19o
ZHIiKTsKKyAgICBleHRlbnNpb25zLT50ZXh0dXJlQ29tcHJlc3Npb25TbGljZWQzZEFTVENLSFIg
PQorICAgICAgICAoZXh0ZW5zaW9ucy0+dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUktIUiAmJgor
ICAgICAgICAgZnVuY3Rpb25zLT5oYXNFeHRlbnNpb24oIkdMX0tIUl90ZXh0dXJlX2NvbXByZXNz
aW9uX2FzdGNfc2xpY2VkXzNkIikpIHx8CisgICAgICAgIGV4dGVuc2lvbnMtPnRleHR1cmVDb21w
cmVzc2lvbkFTVENIRFJLSFI7CiAgICAgZXh0ZW5zaW9ucy0+ZWxlbWVudEluZGV4VWludE9FUyA9
IGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6
OlZlcnNpb24oMywgMCkpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIp
OwpAQCAtMTIxMiw2ICsxMjQxLDggQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25z
R0wgKmZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX2RlYnVnX21hcmtlciIpOwogICAgIGV4dGVuc2lvbnMt
PmVnbEltYWdlT0VTICAgICAgICAgPSBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX09F
U19FR0xfaW1hZ2UiKTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFnZUV4dGVybmFsT0VTID0gZnVu
Y3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIik7Cisg
ICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2VFeHRlcm5hbFdyYXBNb2Rlc0VYVCA9CisgICAgICAgIGZ1
bmN0aW9ucy0+aGFzRXh0ZW5zaW9uKCJHTF9FWFRfRUdMX2ltYWdlX2V4dGVybmFsX3dyYXBfbW9k
ZXMiKTsKICAgICBleHRlbnNpb25zLT5lZ2xJbWFnZUV4dGVybmFsRXNzbDNPRVMgPQogICAgICAg
ICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxf
ZXNzbDMiKTsKIApAQCAtMTI3MCwxOSArMTMwMSw2IEBAIHZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0
IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZU11bHRpc2Ft
cGxlID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAyKSkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9u
KCJHTF9BUkJfdGV4dHVyZV9tdWx0aXNhbXBsZSIpOwogCi0gICAgLy8gTlZfcGF0aF9yZW5kZXJp
bmcKLSAgICAvLyBXZSBhbHNvIG5lZWQgaW50ZXJmYWNlIHF1ZXJ5IHdoaWNoIGlzIGF2YWlsYWJs
ZSBpbgotICAgIC8vID49IDQuMyBjb3JlIG9yIEFSQl9pbnRlcmZhY2VfcXVlcnkgb3IgPj0gR0xF
UyAzLjEKLSAgICBjb25zdCBib29sIGNhbkVuYWJsZUdMUGF0aFJlbmRlcmluZyA9Ci0gICAgICAg
IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX05WX3BhdGhfcmVuZGVyaW5nIikgJiYKLSAg
ICAgICAgKGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9wcm9ncmFtX2ludGVyZmFj
ZV9xdWVyeSIpIHx8Ci0gICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9u
KDQsIDMpKSk7Ci0KLSAgICBjb25zdCBib29sIGNhbkVuYWJsZUVTUGF0aFJlbmRlcmluZyA9IGZ1
bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfTlZfcGF0aF9yZW5kZXJpbmciKSAmJgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVh
c3RHTEVTKGdsOjpWZXJzaW9uKDMsIDEpKTsKLQotICAgIGV4dGVuc2lvbnMtPnBhdGhSZW5kZXJp
bmcgPSBjYW5FbmFibGVHTFBhdGhSZW5kZXJpbmcgfHwgY2FuRW5hYmxlRVNQYXRoUmVuZGVyaW5n
OwotCiAgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZVNSR0JEZWNvZGUgPSBmdW5jdGlvbnMtPmhhc0dM
RXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9zUkdCX2RlY29kZSIpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0VY
VF90ZXh0dXJlX3NSR0JfZGVjb2RlIik7CiAKQEAgLTE0NzEsOCArMTQ4OSw5IEBAIHZvaWQgR2Vu
ZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfc2VtYXBob3Jl
Iik7CiAgICAgZXh0ZW5zaW9ucy0+bWVtb3J5T2JqZWN0RmQgPSBmdW5jdGlvbnMtPmhhc0dMRXh0
ZW5zaW9uKCJHTF9FWFRfbWVtb3J5X29iamVjdF9mZCIpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0VYVF9tZW1vcnlf
b2JqZWN0X2ZkIik7Ci0gICAgZXh0ZW5zaW9ucy0+c2VtYXBob3JlRmQgPSBmdW5jdGlvbnMtPmhh
c0dMRXh0ZW5zaW9uKCJHTF9FWFRfc2VtYXBob3JlX2ZkIikgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX3NlbWFwaG9y
ZV9mZCIpOworICAgIGV4dGVuc2lvbnMtPnNlbWFwaG9yZUZkID0gIWZlYXR1cmVzLmRpc2FibGVT
ZW1hcGhvcmVGZC5lbmFibGVkICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVu
Y3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX3NlbWFwaG9yZV9mZCIpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9F
WFRfc2VtYXBob3JlX2ZkIikpOwogICAgIGV4dGVuc2lvbnMtPmdwdVNoYWRlcjVFWFQgPSBmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDApKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywg
MikpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xF
eHRlbnNpb24oIkdMX0FSQl9ncHVfc2hhZGVyNSIpIHx8CkBAIC0xNDg4LDYgKzE1MDcsOSBAQCB2
b2lkIEluaXRpYWxpemVGZWF0dXJlcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBhbmds
ZTo6RmVhdHVyZXNHTCAqZmVhdHVyZQogICAgIGJvb2wgaXNOdmlkaWEgICA9IElzTnZpZGlhKHZl
bmRvcik7CiAgICAgYm9vbCBpc1F1YWxjb21tID0gSXNRdWFsY29tbSh2ZW5kb3IpOwogCisgICAg
c3RkOjphcnJheTxpbnQsIDM+IG1lc2FWZXJzaW9uID0gezAsIDAsIDB9OworICAgIGJvb2wgaXNN
ZXNhICAgICAgICAgICAgICAgICAgICA9IElzTWVzYShmdW5jdGlvbnMsICZtZXNhVmVyc2lvbik7
CisKICAgICAvLyBEb24ndCB1c2UgMS1iaXQgYWxwaGEgZm9ybWF0cyBvbiBkZXNrdG9wIEdMIHdp
dGggQU1EIGRyaXZlcnMuCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGF2
b2lkMUJpdEFscGhhVGV4dHVyZUZvcm1hdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIGlzQU1EKTsKQEAg
LTE1OTAsMTIgKzE2MTIsMTMgQEAgdm9pZCBJbml0aWFsaXplRmVhdHVyZXMoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywgYW5nbGU6OkZlYXR1cmVzR0wgKmZlYXR1cmUKICAgICBBTkdMRV9G
RUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgZGlzYWJsZVdvcmtlckNvbnRleHRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChJc1dpbmRvd3MoKSAmJiAoaXNJbnRlbCB8fCBpc0FNRCkp
IHx8IChJc0xpbnV4KCkgJiYgaXNOdmlkaWEpKTsKIAorICAgIGJvb2wgbGltaXRNYXhUZXh0dXJl
U2l6ZSA9IGlzSW50ZWwgJiYgSXNMaW51eCgpICYmIEdldExpbnV4T1NWZXJzaW9uKCkgPCBPU1Zl
cnNpb24oNSwgMCwgMCk7CiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGxp
bWl0TWF4VGV4dHVyZVNpemVUbzQwOTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNB
bmRyb2lkKCkgfHwgKGlzSW50ZWwgJiYgSXNMaW51eCgpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSXNBbmRyb2lkKCkgfHwgbGltaXRNYXhUZXh0dXJlU2l6ZSk7CiAgICAgLy8gT24g
QXBwbGUgc3dpdGNoYWJsZSBncmFwaGljcywgR0xfTUFYX1NBTVBMRVMgbWF5IGRpZmZlciBiZXR3
ZWVuIHRoZSBHUFVzLgogICAgIC8vIDQgaXMgYSBsb3dlc3QgY29tbW9uIGRlbm9taW5hdG9yIHRo
YXQgaXMgYWx3YXlzIHN1cHBvcnRlZC4KICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0
dXJlcywgbGltaXRNYXhNU0FBU2FtcGxlc1RvNCwgSXNBbmRyb2lkKCkgfHwgKElzQXBwbGUoKSAm
JiAoaXNJbnRlbCB8fCBpc0FNRCB8fCBpc052aWRpYSkpKTsKLSAgICBBTkdMRV9GRUFUVVJFX0NP
TkRJVElPTihmZWF0dXJlcywgbGltaXRNYXgzZEFycmF5VGV4dHVyZVNpemVUbzEwMjQsIGlzSW50
ZWwgJiYgSXNMaW51eCgpKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywg
bGltaXRNYXgzZEFycmF5VGV4dHVyZVNpemVUbzEwMjQsIGxpbWl0TWF4VGV4dHVyZVNpemUpOwog
CiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oZmVhdHVyZXMsIGFsbG93Q2xlYXJGb3JSb2J1
c3RSZXNvdXJjZUluaXQsIElzQXBwbGUoKSk7CiAKQEAgLTE2NTQsNiArMTY3NywxMyBAQCB2b2lk
IEluaXRpYWxpemVGZWF0dXJlcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBhbmdsZTo6
RmVhdHVyZXNHTCAqZmVhdHVyZQogCiAgICAgLy8gYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY2MjUKICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihmZWF0dXJlcywgZmx1c2hC
ZWZvcmVCaW5kRnJhbWVidWZmZXIsIElzQXBwbGUoKSAmJiBpc0ludGVsKTsKKworICAgIC8vIFdv
cmthcm91bmQgZm9yIGluY29ycmVjdCBzYW1wbGluZyBmcm9tIERYVDEgc1JHQiB0ZXh0dXJlcyBp
biBJbnRlbCBPcGVuR0wgb24gV2luZG93cy4KKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTihm
ZWF0dXJlcywgYXZvaWREWFQxc1JHQlRleHR1cmVGb3JtYXQsIElzV2luZG93cygpICYmIGlzSW50
ZWwpOworCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCisgICAgICAgIGZlYXR1cmVzLCBk
aXNhYmxlU2VtYXBob3JlRmQsCisgICAgICAgIElzTGludXgoKSAmJiBpc0FNRCAmJiBpc01lc2Eg
JiYgbWVzYVZlcnNpb24gPCAoc3RkOjphcnJheTxpbnQsIDM+ezE5LCAzLCA1fSkpOwogfQogCiB2
b2lkIEluaXRpYWxpemVGcm9udGVuZEZlYXR1cmVzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlv
bnMsIGFuZ2xlOjpGcm9udGVuZEZlYXR1cmVzICpmZWF0dXJlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJf
dXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsc2xhbmdfd3JhcHBlcl91dGlscy5jcHAKaW5kZXggN2EwZDQwN2QyODkyNzIxNjIzZjExYTU3
OGQ5NDllNTEzZDNkOGYwMS4uNGU2ODkzOTI2OGViMWQ1ZDRjYmViN2NhMjI3MTcyYTNkYjY2MzE4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsc2xhbmdfd3JhcHBlcl91dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdfd3JhcHBlcl91dGlscy5jcHAKQEAgLTU1
LDEzICs1NSw2IEBAIGNvbnN0ZXhwciBjaGFyIGtYZmJEZWNsTWFya2VyW10gICAgPSAiQEAgWEZC
LURFQ0wgQEAiOwogY29uc3RleHByIGNoYXIga1hmYk91dE1hcmtlcltdICAgICA9ICJAQCBYRkIt
T1VUIEBAOyI7CiBjb25zdGV4cHIgY2hhciBrWGZiQnVpbHRJblByZWZpeFtdID0gInhmYkFOR0xF
IjsKIAotY29uc3RleHByIGdsOjpTaGFkZXJNYXA8Y29uc3QgY2hhciAqPiBrRGVmYXVsdFVuaWZv
cm1OYW1lcyA9IHsKLSAgICB7Z2w6OlNoYWRlclR5cGU6OlZlcnRleCwgc2g6OnZrOjprRGVmYXVs
dFVuaWZvcm1zTmFtZVZTfSwKLSAgICB7Z2w6OlNoYWRlclR5cGU6Okdlb21ldHJ5LCBzaDo6dms6
OmtEZWZhdWx0VW5pZm9ybXNOYW1lR1N9LAotICAgIHtnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQs
IHNoOjp2azo6a0RlZmF1bHRVbmlmb3Jtc05hbWVGU30sCi0gICAge2dsOjpTaGFkZXJUeXBlOjpD
b21wdXRlLCBzaDo6dms6OmtEZWZhdWx0VW5pZm9ybXNOYW1lQ1N9LAotfTsKLQogdGVtcGxhdGUg
PHNpemVfdCBOPgogY29uc3RleHByIHNpemVfdCBDb25zdFN0ckxlbihjb25zdCBjaGFyICgmKVtO
XSkKIHsKQEAgLTE0Niw0OSArMTM5LDExIEBAIGJvb2wgVW5pZm9ybU5hbWVJc0luZGV4WmVybyhj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgYm9vbCBleGNsdWRlQ2hlY2tGb3JPd25pbmdTCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLS8vIFN0cmlwIGluZGljZXMgZnJvbSB0aGUgbmFtZS4gIElmIHRo
ZXJlIGFyZSBub24temVybyBpbmRpY2VzLCByZXR1cm4gZmFsc2UgdG8gaW5kaWNhdGUgdGhhdCB0
aGlzCi0vLyBpbWFnZSB1bmlmb3JtIGRvZXNuJ3QgcmVxdWlyZSBzZXQvYmluZGluZy4gIFRoYXQg
aXMgZG9uZSBvbiBpbmRleCAwLgotYm9vbCBHZXRJbWFnZU5hbWVXaXRob3V0SW5kaWNlcyhzdGQ6
OnN0cmluZyAqbmFtZSkKLXsKLSAgICBpZiAobmFtZS0+YmFjaygpICE9ICddJykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmICghVW5pZm9ybU5hbWVJc0luZGV4
WmVybygqbmFtZSwgZmFsc2UpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIC8vIFN0cmlwIGFsbCBpbmRpY2VzCi0gICAgKm5hbWUgPSBuYW1lLT5zdWJzdHIoMCwg
bmFtZS0+ZmluZCgnWycpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBNYXBwZWRTYW1w
bGVyTmFtZU5lZWRzVXNlckRlZmluZWRQcmVmaXgoY29uc3Qgc3RkOjpzdHJpbmcgJm9yaWdpbmFs
TmFtZSkKIHsKICAgICByZXR1cm4gb3JpZ2luYWxOYW1lLmZpbmQoJy4nKSA9PSBzdGQ6OnN0cmlu
Zzo6bnBvczsKIH0KIAotc3RkOjpzdHJpbmcgR2V0TWFwcGVkU2FtcGxlck5hbWVPbGQoY29uc3Qg
c3RkOjpzdHJpbmcgJm9yaWdpbmFsTmFtZSkKLXsKLSAgICBzdGQ6OnN0cmluZyBzYW1wbGVyTmFt
ZSA9IGdsOjpQYXJzZVJlc291cmNlTmFtZShvcmlnaW5hbE5hbWUsIG51bGxwdHIpOwotCi0gICAg
Ly8gU2FtcGxlcnMgaW4gc3RydWN0cyBhcmUgZXh0cmFjdGVkLgotICAgIHN0ZDo6cmVwbGFjZShz
YW1wbGVyTmFtZS5iZWdpbigpLCBzYW1wbGVyTmFtZS5lbmQoKSwgJy4nLCAnXycpOwotCi0gICAg
Ly8gU2FtcGxlcnMgaW4gYXJyYXlzIG9mIHN0cnVjdHMgYXJlIGFsc28gZXh0cmFjdGVkLgotICAg
IHN0ZDo6cmVwbGFjZShzYW1wbGVyTmFtZS5iZWdpbigpLCBzYW1wbGVyTmFtZS5lbmQoKSwgJ1sn
LCAnXycpOwotICAgIHNhbXBsZXJOYW1lLmVyYXNlKHN0ZDo6cmVtb3ZlKHNhbXBsZXJOYW1lLmJl
Z2luKCksIHNhbXBsZXJOYW1lLmVuZCgpLCAnXScpLCBzYW1wbGVyTmFtZS5lbmQoKSk7Ci0KLSAg
ICBpZiAoTWFwcGVkU2FtcGxlck5hbWVOZWVkc1VzZXJEZWZpbmVkUHJlZml4KG9yaWdpbmFsTmFt
ZSkpCi0gICAgewotICAgICAgICBzYW1wbGVyTmFtZSA9IHNoOjprVXNlckRlZmluZWROYW1lUHJl
Zml4ICsgc2FtcGxlck5hbWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNhbXBsZXJOYW1lOwotfQot
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0SXRlciwgdHlwZW5hbWUgSW1wbGljaXRJdGVyPgog
dWludDMyX3QgQ291bnRFeHBsaWNpdE91dHB1dHMoT3V0cHV0SXRlciBvdXRwdXRzQmVnaW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXRJdGVyIG91dHB1dHNFbmQsCkBAIC0y
MTcsMTAgKzE3MiwxMCBAQCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gKkdldFNoYWRlcklu
dGVyZmFjZVZhcmlhYmxlKFNoYWRlckludGVyZmFjZVZhcmlhYmxlSQogICAgIHJldHVybiAmKCpp
bmZvTWFwKVt2YXJOYW1lXTsKIH0KIAotU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICpBZGRS
ZXNvdXJjZUluZm8oU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICppbmZvTWFwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnZhck5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50MzJfdCBkZXNjcmlwdG9yU2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgYmluZGluZykKK1NoYWRlckludGVyZmFjZVZhcmlhYmxl
SW5mbyAqQWRkUmVzb3VyY2VJbmZvVG9BbGxTdGFnZXMoU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJ
bmZvTWFwICppbmZvTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGVz
Y3JpcHRvclNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgYmluZGluZykKIHsKICAgICBnbDo6U2hhZGVyQml0U2V0IGFs
bFN0YWdlczsKICAgICBhbGxTdGFnZXMuc2V0KCk7CkBAIC0yMzIsMjggKzE4Nyw0MSBAQCBTaGFk
ZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gKkFkZFJlc291cmNlSW5mbyhTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm9NYXAgKmluZgogICAgIHJldHVybiBpbmZvOwogfQogCitTaGFkZXJJbnRlcmZh
Y2VWYXJpYWJsZUluZm8gKkFkZFJlc291cmNlSW5mbyhTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUlu
Zm9NYXAgKmluZm9NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRlc2NyaXB0b3JTZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaW5kaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRl
clR5cGUgc2hhZGVyVHlwZSkKK3sKKyAgICBnbDo6U2hhZGVyQml0U2V0IHN0YWdlczsKKyAgICBz
dGFnZXMuc2V0KHNoYWRlclR5cGUpOworCisgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZv
ICppbmZvID0gQWRkU2hhZGVySW50ZXJmYWNlVmFyaWFibGUoaW5mb01hcCwgdmFyTmFtZSk7Cisg
ICAgaW5mby0+ZGVzY3JpcHRvclNldCAgICAgICAgICAgICAgID0gZGVzY3JpcHRvclNldDsKKyAg
ICBpbmZvLT5iaW5kaW5nICAgICAgICAgICAgICAgICAgICAgPSBiaW5kaW5nOworICAgIGluZm8t
PmFjdGl2ZVN0YWdlcyAgICAgICAgICAgICAgICA9IHN0YWdlczsKKyAgICByZXR1cm4gaW5mbzsK
K30KKwogLy8gQWRkIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZvciBhbiBpbi9vdXQgdmFyaWFibGUu
CiBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gKkFkZExvY2F0aW9uSW5mbyhTaGFkZXJJbnRl
cmZhY2VWYXJpYWJsZUluZm9NYXAgKmluZm9NYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyTmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY29t
cG9uZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OlNoYWRlckJpdFNldCBhY3RpdmVTdGFnZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyVHlwZSBzdGFnZSkKIHsKICAgICAvLyBUaGUgaW5m
byBtYXAgZm9yIHRoaXMgbmFtZSBtYXkgb3IgbWF5IG5vdCBleGlzdCBhbHJlYWR5LiAgVGhpcyBm
dW5jdGlvbiBtZXJnZXMgdGhlCiAgICAgLy8gbG9jYXRpb24vY29tcG9uZW50IGluZm9ybWF0aW9u
LgogICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAqaW5mbyA9ICYoKmluZm9NYXApW3Zh
ck5hbWVdOwogCi0gICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogYWN0
aXZlU3RhZ2VzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZm8tPmRlc2NyaXB0b3JTZXQgPT0g
U2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCk7Ci0gICAgICAgIEFTU0VSVChp
bmZvLT5iaW5kaW5nID09IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQpOwot
ICAgICAgICBBU1NFUlQoaW5mby0+bG9jYXRpb25bc2hhZGVyVHlwZV0gPT0gU2hhZGVySW50ZXJm
YWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCk7Ci0gICAgICAgIEFTU0VSVChpbmZvLT5jb21wb25l
bnRbc2hhZGVyVHlwZV0gPT0gU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCk7
CisgICAgQVNTRVJUKGluZm8tPmRlc2NyaXB0b3JTZXQgPT0gU2hhZGVySW50ZXJmYWNlVmFyaWFi
bGVJbmZvOjprSW52YWxpZCk7CisgICAgQVNTRVJUKGluZm8tPmJpbmRpbmcgPT0gU2hhZGVySW50
ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCk7CisgICAgQVNTRVJUKGluZm8tPmxvY2F0aW9u
ID09IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQpOworICAgIEFTU0VSVChp
bmZvLT5jb21wb25lbnQgPT0gU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCk7
CiAKLSAgICAgICAgaW5mby0+bG9jYXRpb25bc2hhZGVyVHlwZV0gID0gbG9jYXRpb247Ci0gICAg
ICAgIGluZm8tPmNvbXBvbmVudFtzaGFkZXJUeXBlXSA9IGNvbXBvbmVudDsKLSAgICB9Ci0gICAg
aW5mby0+YWN0aXZlU3RhZ2VzIHw9IGFjdGl2ZVN0YWdlczsKKyAgICBpbmZvLT5sb2NhdGlvbiAg
PSBsb2NhdGlvbjsKKyAgICBpbmZvLT5jb21wb25lbnQgPSBjb21wb25lbnQ7CisgICAgaW5mby0+
YWN0aXZlU3RhZ2VzLnNldChzdGFnZSk7CiAKICAgICByZXR1cm4gaW5mbzsKIH0KQEAgLTM1OSw4
ICszMjcsOSBAQCBzdGQ6OnN0cmluZyBHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ091
dHB1dChjb25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYQogICAgIHJldHVybiByZXN1bHQuc3Ry
KCk7CiB9CiAKLXZvaWQgR2VuZXJhdGVUcmFuc2Zvcm1GZWVkYmFja0VtdWxhdGlvbk91dHB1dHMo
Y29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCit2b2lkIEdlbmVyYXRlVHJhbnNm
b3JtRmVlZGJhY2tFbXVsYXRpb25PdXRwdXRzKEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAqcHJvZ3Jh
bUludGVyZmFjZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nICp2ZXJ0ZXhTaGFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAq
dmFyaWFibGVJbmZvTWFwT3V0KQogewpAQCAtMzcxLDI1ICszNDAsMjcgQEAgdm9pZCBHZW5lcmF0
ZVRyYW5zZm9ybUZlZWRiYWNrRW11bGF0aW9uT3V0cHV0cyhjb25zdCBHbHNsYW5nU291cmNlT3B0
aW9ucyAmb3B0aW8KICAgICAgICAgcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyTW9kZSgpID09IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlM7CiAgICAgY29uc3Qgc2l6ZV90IGJ1
ZmZlckNvdW50ID0gaXNJbnRlcmxlYXZlZCA/IDEgOiB2YXJ5aW5ncy5zaXplKCk7CiAKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyB4ZmJTZXQgPSBTdHIob3B0aW9ucy51bmlmb3Jtc0FuZFhmYkRlc2Ny
aXB0b3JTZXRJbmRleCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgeGZiU2V0ID0gU3RyKHByb2dy
YW1JbnRlcmZhY2VJbmZvLT51bmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleCk7CiAgICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHhmYkluZGljZXMoYnVmZmVyQ291bnQpOwogCiAgICAg
c3RkOjpzdHJpbmcgeGZiRGVjbDsKIAogICAgIGZvciAodWludDMyX3QgYnVmZmVySW5kZXggPSAw
OyBidWZmZXJJbmRleCA8IGJ1ZmZlckNvdW50OyArK2J1ZmZlckluZGV4KQogICAgIHsKLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgeGZiQmluZGluZyA9IFN0cihvcHRpb25zLnhmYkJpbmRpbmdJ
bmRleFN0YXJ0ICsgYnVmZmVySW5kZXgpOworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB4ZmJC
aW5kaW5nID0gU3RyKHByb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50VW5pZm9ybUJpbmRpbmdJ
bmRleCk7CiAgICAgICAgIHhmYkluZGljZXNbYnVmZmVySW5kZXhdICAgICAgPSBTdHIoYnVmZmVy
SW5kZXgpOwogCi0gICAgICAgIHN0ZDo6c3RyaW5nIGJ1ZmZlck5hbWUgPSAieGZiQnVmZmVyIiAr
IHhmYkluZGljZXNbYnVmZmVySW5kZXhdOworICAgICAgICBzdGQ6OnN0cmluZyBidWZmZXJOYW1l
ID0gR2V0WGZiQnVmZmVyTmFtZShidWZmZXJJbmRleCk7CiAKICAgICAgICAgeGZiRGVjbCArPSAi
bGF5b3V0KHNldCA9ICIgKyB4ZmJTZXQgKyAiLCBiaW5kaW5nID0gIiArIHhmYkJpbmRpbmcgKyAi
KSBidWZmZXIgIiArCi0gICAgICAgICAgICAgICAgICAgYnVmZmVyTmFtZSArICIgeyBmbG9hdCB4
ZmJPdXQiICsgeGZiSW5kaWNlc1tidWZmZXJJbmRleF0gKyAiW107IH07XG4iOworICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlck5hbWUgKyAiIHsgZmxvYXQgeGZiT3V0IiArIFN0cihidWZmZXJJbmRl
eCkgKyAiW107IH07XG4iOwogCiAgICAgICAgIC8vIEFkZCB0aGlzIGVudHJ5IHRvIHRoZSBpbmZv
IG1hcCwgc28gd2UgY2FuIGVhc2lseSBhc3NlcnQgdGhhdCBldmVyeSByZXNvdXJjZSBoYXMgYW4g
ZW50cnkKICAgICAgICAgLy8gaW4gdGhpcyBtYXAuCi0gICAgICAgIEFkZFJlc291cmNlSW5mbyh2
YXJpYWJsZUluZm9NYXBPdXQsIGJ1ZmZlck5hbWUsIG9wdGlvbnMudW5pZm9ybXNBbmRYZmJEZXNj
cmlwdG9yU2V0SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnhmYkJpbmRp
bmdJbmRleFN0YXJ0ICsgYnVmZmVySW5kZXgpOworICAgICAgICBBZGRSZXNvdXJjZUluZm8odmFy
aWFibGVJbmZvTWFwT3V0LCBidWZmZXJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJv
Z3JhbUludGVyZmFjZUluZm8tPnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRVbmlmb3Jt
QmluZGluZ0luZGV4LCBnbDo6U2hhZGVyVHlwZTo6VmVydGV4KTsKKyAgICAgICAgKytwcm9ncmFt
SW50ZXJmYWNlSW5mby0+Y3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXg7CiAgICAgfQogCiAgICAg
c3RkOjpzdHJpbmcgeGZiT3V0ID0KQEAgLTQ0Nyw3ICs0MTgsNiBAQCBib29sIElzRmlyc3RSZWdp
c3Rlck9mVmFyeWluZyhjb25zdCBnbDo6UGFja2VkVmFyeWluZ1JlZ2lzdGVyICZ2YXJ5aW5nUmVn
KQogdm9pZCBHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uT3V0cHV0cyhjb25zdCBn
bDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZy
ZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nICp2ZXJ0ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFi
bGVJbmZvTWFwT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCAqbG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbk91dCkKIHsKICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxnbDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nPiAmdGZWYXJ5aW5n
cyA9CkBAIC00ODcsMzQgKzQ1NywzMSBAQCB2b2lkIEdlbmVyYXRlVHJhbnNmb3JtRmVlZGJhY2tF
eHRlbnNpb25PdXRwdXRzKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdAogfQogCiB2
b2lkIEFzc2lnbkF0dHJpYnV0ZUxvY2F0aW9ucyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9n
cmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyVHlwZSBz
dGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlh
YmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewotICAgIGdsOjpTaGFkZXJCaXRTZXQg
dmVydGV4T25seTsKLSAgICB2ZXJ0ZXhPbmx5LnNldChnbDo6U2hhZGVyVHlwZTo6VmVydGV4KTsK
LQogICAgIC8vIEFzc2lnbiBhdHRyaWJ1dGUgbG9jYXRpb25zIGZvciB0aGUgdmVydGV4IHNoYWRl
ci4KICAgICBmb3IgKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmYXR0cmlidXRlIDogcHJvZ3Jh
bVN0YXRlLmdldFByb2dyYW1JbnB1dHMoKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChhdHRyaWJ1
dGUuYWN0aXZlKTsKIAogICAgICAgICBBZGRMb2NhdGlvbkluZm8odmFyaWFibGVJbmZvTWFwT3V0
LCBhdHRyaWJ1dGUubWFwcGVkTmFtZSwgYXR0cmlidXRlLmxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCwgdmVydGV4
T25seSk7CisgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUlu
Zm86OmtJbnZhbGlkLCBzdGFnZSk7CiAgICAgfQogfQogCiB2b2lkIEFzc2lnbk91dHB1dExvY2F0
aW9ucyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJs
ZUluZm9NYXBPdXQpCiB7CiAgICAgLy8gQXNzaWduIG91dHB1dCBsb2NhdGlvbnMgZm9yIHRoZSBm
cmFnbWVudCBzaGFkZXIuCisgICAgQVNTRVJUKHNoYWRlclR5cGUgPT0gZ2w6OlNoYWRlclR5cGU6
OkZyYWdtZW50KTsKICAgICAvLyBUT0RPKHN5b3Vzc2VmaSk6IEFkZCBzdXBwb3J0IGZvciBFWFRf
YmxlbmRfZnVuY19leHRlbmRlZC4gIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzM4NQogICAgIGNvbnN0
IGF1dG8gJm91dHB1dExvY2F0aW9ucyAgICAgICAgICAgICAgICAgICAgICA9IHByb2dyYW1TdGF0
ZS5nZXRPdXRwdXRMb2NhdGlvbnMoKTsKICAgICBjb25zdCBhdXRvICZvdXRwdXRWYXJpYWJsZXMg
ICAgICAgICAgICAgICAgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0T3V0cHV0VmFyaWFibGVzKCk7
CiAgICAgY29uc3Qgc3RkOjphcnJheTxzdGQ6OnN0cmluZywgMz4gaW1wbGljaXRPdXRwdXRzID0g
eyJnbF9GcmFnRGVwdGgiLCAiZ2xfU2FtcGxlTWFzayIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbF9GcmFnU3RlbmNpbFJlZkFSQiJ9
OwogCi0gICAgZ2w6OlNoYWRlckJpdFNldCBmcmFnbWVudE9ubHk7Ci0gICAgZnJhZ21lbnRPbmx5
LnNldChnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQpOwotCiAgICAgZm9yIChjb25zdCBnbDo6VmFy
aWFibGVMb2NhdGlvbiAmb3V0cHV0TG9jYXRpb24gOiBvdXRwdXRMb2NhdGlvbnMpCiAgICAgewog
ICAgICAgICBpZiAob3V0cHV0TG9jYXRpb24uYXJyYXlJbmRleCA9PSAwICYmIG91dHB1dExvY2F0
aW9uLnVzZWQoKSAmJiAhb3V0cHV0TG9jYXRpb24uaWdub3JlZCkKQEAgLTUzNiw3ICs1MDMsNyBA
QCB2b2lkIEFzc2lnbk91dHB1dExvY2F0aW9ucyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9n
cmFtU3RhdGUsCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEFkZExvY2F0aW9uSW5mbyh2
YXJpYWJsZUluZm9NYXBPdXQsIG91dHB1dFZhci5tYXBwZWROYW1lLCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZh
bGlkLCBmcmFnbWVudE9ubHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlcklu
dGVyZmFjZVZhcmlhYmxlSW5mbzo6a0ludmFsaWQsIHNoYWRlclR5cGUpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC01NDUsMTcgKzUxMiwxOCBAQCB2b2lkIEFzc2lnbk91dHB1dExvY2F0aW9ucyhj
b25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCiAgICAgLy8gbG9jYXRpb24gMCB0
byB0aGVzZSBlbnRyaWVzLCBhZGRpbmcgYW4gZW50cnkgZm9yIHRoZW0gaGVyZSBhbGxvd3MgdXMg
dG8gQVNTRVJUIHRoYXQgZXZlcnkKICAgICAvLyBzaGFkZXIgaW50ZXJmYWNlIHZhcmlhYmxlIGlz
IHByb2Nlc3NlZCBkdXJpbmcgdGhlIFNQSVItViB0cmFuc2Zvcm1hdGlvbi4gIFRoaXMgaXMgZG9u
ZSB3aGVuCiAgICAgLy8gaXRlcmF0aW5nIHRoZSBpZHMgcHJvdmlkZWQgYnkgT3BFbnRyeVBvaW50
LgotICAgIEFkZExvY2F0aW9uSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsICJ3ZWJnbF9GcmFnQ29s
b3IiLCAwLCAwLCBmcmFnbWVudE9ubHkpOwotICAgIEFkZExvY2F0aW9uSW5mbyh2YXJpYWJsZUlu
Zm9NYXBPdXQsICJ3ZWJnbF9GcmFnRGF0YSIsIDAsIDAsIGZyYWdtZW50T25seSk7CisgICAgQWRk
TG9jYXRpb25JbmZvKHZhcmlhYmxlSW5mb01hcE91dCwgIndlYmdsX0ZyYWdDb2xvciIsIDAsIDAs
IHNoYWRlclR5cGUpOworICAgIEFkZExvY2F0aW9uSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsICJ3
ZWJnbF9GcmFnRGF0YSIsIDAsIDAsIHNoYWRlclR5cGUpOwogfQogCiB2b2lkIEFzc2lnblZhcnlp
bmdMb2NhdGlvbnMoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVz
b3VyY2VzICZyZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8gKnBy
b2dyYW1JbnRlcmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlck1h
cEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewotICAgIHVp
bnQzMl90IGxvY2F0aW9uc1VzZWRGb3JFbXVsYXRpb24gPSBsb2NhdGlvbnNVc2VkRm9yWGZiRXh0
ZW5zaW9uOworICAgIHVpbnQzMl90IGxvY2F0aW9uc1VzZWRGb3JFbXVsYXRpb24gICAgICAgID0g
cHJvZ3JhbUludGVyZmFjZUluZm8tPmxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb247CisgICAg
Y29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZnbEV4ZWN1dGFibGUgPSBwcm9ncmFtU3RhdGUu
Z2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIAogICAgIC8vIFN1YnN0aXR1dGUgbGF5b3V0IGFuZCBx
dWFsaWZpZXIgc3RyaW5ncyBmb3IgdGhlIHBvc2l0aW9uIHZhcnlpbmcgYWRkZWQgZm9yIGxpbmUg
cmFzdGVyCiAgICAgLy8gZW11bGF0aW9uLgpAQCAtNTYzLDEyICs1MzEsMTMgQEAgdm9pZCBBc3Np
Z25WYXJ5aW5nTG9jYXRpb25zKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAog
ICAgIHsKICAgICAgICAgdWludDMyX3QgbGluZVJhc3RlckVtdWxhdGlvblBvc2l0aW9uTG9jYXRp
b24gPSBsb2NhdGlvbnNVc2VkRm9yRW11bGF0aW9uKys7CiAKLSAgICAgICAgZ2w6OlNoYWRlckJp
dFNldCBhbGxBY3RpdmVTdGFnZXM7Ci0gICAgICAgIGFsbEFjdGl2ZVN0YWdlcy5zZXQoKTsKLQot
ICAgICAgICBBZGRMb2NhdGlvbkluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBzaDo6dms6OmtMaW5l
UmFzdGVyRW11bGF0aW9uUG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lUmFz
dGVyRW11bGF0aW9uUG9zaXRpb25Mb2NhdGlvbiwgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZv
OjprSW52YWxpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbEFjdGl2ZVN0YWdlcyk7Cisg
ICAgICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsRXhlY3V0YWJs
ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgQWRkTG9j
YXRpb25JbmZvKCYoKnZhcmlhYmxlSW5mb01hcE91dClbc2hhZGVyVHlwZV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2g6OnZrOjprTGluZVJhc3RlckVtdWxhdGlvblBvc2l0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVSYXN0ZXJFbXVsYXRpb25Qb3NpdGlvbkxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlh
YmxlSW5mbzo6a0ludmFsaWQsIHNoYWRlclR5cGUpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gQXNzaWduIHZhcnlpbmcgbG9jYXRpb25zLgpAQCAtNTgxLDYgKzU1MCwxNSBAQCB2b2lkIEFz
c2lnblZhcnlpbmdMb2NhdGlvbnMoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMs
CiAKICAgICAgICAgY29uc3QgZ2w6OlBhY2tlZFZhcnlpbmcgJnZhcnlpbmcgPSAqdmFyeWluZ1Jl
Zy5wYWNrZWRWYXJ5aW5nOwogCisgICAgICAgIHVpbnQzMl90IGxvY2F0aW9uICA9IHZhcnlpbmdS
ZWcucmVnaXN0ZXJSb3cgKyBsb2NhdGlvbnNVc2VkRm9yRW11bGF0aW9uOworICAgICAgICB1aW50
MzJfdCBjb21wb25lbnQgPSBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZhbGlkOwor
ICAgICAgICBpZiAodmFyeWluZ1JlZy5yZWdpc3RlckNvbHVtbiA+IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghdmFyeWluZy52YXJ5aW5nKCkuaXNTdHJ1Y3QoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoIWdsOjpJc01hdHJpeFR5cGUodmFyeWluZy52YXJ5aW5nKCkudHlwZSkpOwor
ICAgICAgICAgICAgY29tcG9uZW50ID0gdmFyeWluZ1JlZy5yZWdpc3RlckNvbHVtbjsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIEluIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgIC8vCiAgICAgICAg
IC8vICAgICBzdHJ1Y3QgUyB7IHZlYzQgZmllbGQ7IH07CkBAIC01ODgsNDEgKzU2Niw0OSBAQCB2
b2lkIEFzc2lnblZhcnlpbmdMb2NhdGlvbnMoY29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9w
dGlvbnMsCiAgICAgICAgIC8vCiAgICAgICAgIC8vICJfdXZhclN0cnVjdCIgaXMgZm91bmQgdGhy
b3VnaCB8cGFyZW50U3RydWN0TWFwcGVkTmFtZXwsIHdpdGggfHZhcnlpbmctPm1hcHBlZE5hbWV8
CiAgICAgICAgIC8vIGJlaW5nICJfdWZpZWxkIi4gIEluIHN1Y2ggYSBjYXNlLCB1c2UgfHBhcmVu
dFN0cnVjdE1hcHBlZE5hbWV8LgotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSA9Ci0g
ICAgICAgICAgICB2YXJ5aW5nLmlzU3RydWN0RmllbGQoKSA/IHZhcnlpbmcucGFyZW50U3RydWN0
TWFwcGVkTmFtZSA6IHZhcnlpbmcudmFyeWluZy0+bWFwcGVkTmFtZTsKLQotICAgICAgICB1aW50
MzJfdCBsb2NhdGlvbiAgPSB2YXJ5aW5nUmVnLnJlZ2lzdGVyUm93ICsgbG9jYXRpb25zVXNlZEZv
ckVtdWxhdGlvbjsKLSAgICAgICAgdWludDMyX3QgY29tcG9uZW50ID0gU2hhZGVySW50ZXJmYWNl
VmFyaWFibGVJbmZvOjprSW52YWxpZDsKLSAgICAgICAgaWYgKHZhcnlpbmdSZWcucmVnaXN0ZXJD
b2x1bW4gPiAwKQorICAgICAgICBpZiAodmFyeWluZy5mcm9udFZhcnlpbmcudmFyeWluZykKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCF2YXJ5aW5nLnZhcnlpbmctPmlzU3RydWN0KCkp
OwotICAgICAgICAgICAgQVNTRVJUKCFnbDo6SXNNYXRyaXhUeXBlKHZhcnlpbmcudmFyeWluZy0+
dHlwZSkpOwotICAgICAgICAgICAgY29tcG9uZW50ID0gdmFyeWluZ1JlZy5yZWdpc3RlckNvbHVt
bjsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lID0gdmFyeWluZy5pc1N0cnVj
dEZpZWxkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdmFy
eWluZy5mcm9udFZhcnlpbmcucGFyZW50U3RydWN0TWFwcGVkTmFtZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2YXJ5aW5nLmZyb250VmFyeWluZy52YXJ5aW5n
LT5tYXBwZWROYW1lOworICAgICAgICAgICAgQWRkTG9jYXRpb25JbmZvKCYoKnZhcmlhYmxlSW5m
b01hcE91dClbdmFyeWluZy5mcm9udFZhcnlpbmcuc3RhZ2VdLCBuYW1lLCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQsIHZhcnlpbmcuZnJvbnRWYXJ5aW5n
LnN0YWdlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFyeWluZy5iYWNrVmFyeWluZy52YXJ5
aW5nKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSA9IHZh
cnlpbmcuaXNTdHJ1Y3RGaWVsZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/IHZhcnlpbmcuYmFja1ZhcnlpbmcucGFyZW50U3RydWN0TWFwcGVkTmFtZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB2YXJ5aW5nLmJhY2tWYXJ5
aW5nLnZhcnlpbmctPm1hcHBlZE5hbWU7CisgICAgICAgICAgICBBZGRMb2NhdGlvbkluZm8oJigq
dmFyaWFibGVJbmZvTWFwT3V0KVt2YXJ5aW5nLmJhY2tWYXJ5aW5nLnN0YWdlXSwgbmFtZSwgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LCB2YXJ5aW5nLmJh
Y2tWYXJ5aW5nLnN0YWdlKTsKICAgICAgICAgfQotCi0gICAgICAgIEFkZExvY2F0aW9uSW5mbyh2
YXJpYWJsZUluZm9NYXBPdXQsIG5hbWUsIGxvY2F0aW9uLCBjb21wb25lbnQsIHZhcnlpbmcuc2hh
ZGVyU3RhZ2VzKTsKICAgICB9CiAKICAgICAvLyBBZGQgYW4gZW50cnkgZm9yIGluYWN0aXZlIHZh
cnlpbmdzLgotICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdOYW1lIDogcmVzb3Vy
Y2VzLnZhcnlpbmdQYWNraW5nLmdldEluYWN0aXZlVmFyeWluZ01hcHBlZE5hbWVzKCkpCisgICAg
Y29uc3QgZ2w6OlNoYWRlck1hcDxzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4+ICZpbmFjdGl2ZVZh
cnlpbmdNYXBwZWROYW1lcyA9CisgICAgICAgIHJlc291cmNlcy52YXJ5aW5nUGFja2luZy5nZXRJ
bmFjdGl2ZVZhcnlpbmdNYXBwZWROYW1lcygpOworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5
cGUgc2hhZGVyVHlwZSA6IGdsRXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKICAg
ICB7Ci0gICAgICAgIGJvb2wgaXNCdWlsdGluID0gYW5nbGU6OkJlZ2luc1dpdGgodmFyeWluZ05h
bWUsICJnbF8iKTsKLSAgICAgICAgaWYgKGlzQnVpbHRpbikKKyAgICAgICAgZm9yIChjb25zdCBz
dGQ6OnN0cmluZyAmdmFyeWluZ05hbWUgOiBpbmFjdGl2ZVZhcnlpbmdNYXBwZWROYW1lc1tzaGFk
ZXJUeXBlXSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAg
ICAgICAgICAgIGJvb2wgaXNCdWlsdGluID0gYW5nbGU6OkJlZ2luc1dpdGgodmFyeWluZ05hbWUs
ICJnbF8iKTsKKyAgICAgICAgICAgIGlmIChpc0J1aWx0aW4pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgLy8gVE9ETyhz
eW91c3NlZmkpOiBpbmFjdGl2ZSB2YXJ5aW5nIG5hbWVzIHNob3VsZCBiZSB1bmlxdWUuICBIb3dl
dmVyLCBkdWUgdG8gbWlzaGFuZGxpbmcgb2YKLSAgICAgICAgLy8gcGFydGlhbGx5IGNhcHR1cmVk
IGFycmF5cywgYSB2YXJ5aW5nIG5hbWUgY2FuIGVuZCB1cCBpbiBib3RoIHRoZSBhY3RpdmUgYW5k
IGluYWN0aXZlCi0gICAgICAgIC8vIGxpc3RzLiAgVGhlIHRlc3QgYmVsb3cgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSB0aGF0IGlzc3VlIGlzIHJlc29sdmVkLgotICAgICAgICAvLyBodHRwOi8vYW5n
bGVidWcuY29tLzQxNDAKLSAgICAgICAgaWYgKHZhcmlhYmxlSW5mb01hcE91dC0+ZmluZCh2YXJ5
aW5nTmFtZSkgIT0gdmFyaWFibGVJbmZvTWFwT3V0LT5lbmQoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8vIElmIG5hbWUgaXMgYWxy
ZWFkeSBpbiB0aGUgbWFwLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgaGF2ZSBtYXJrZWQgYWxsIG90
aGVyIHN0YWdlcworICAgICAgICAgICAgLy8gaW5hY3RpdmUuCisgICAgICAgICAgICBpZiAoKCp2
YXJpYWJsZUluZm9NYXBPdXQpW3NoYWRlclR5cGVdLmZpbmQodmFyeWluZ05hbWUpICE9CisgICAg
ICAgICAgICAgICAgKCp2YXJpYWJsZUluZm9NYXBPdXQpW3NoYWRlclR5cGVdLmVuZCgpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogCi0g
ICAgICAgIEFkZExvY2F0aW9uSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsIHZhcnlpbmdOYW1lLCBT
aGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZhbGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCwgZ2w6OlNoYWRlckJp
dFNldCgpKTsKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgYWRkIGFuIGVudHJ5IGZvciBpdCB3
aXRoIGFsbCBsb2NhdGlvbnMgaW5hY3RpdmUuCisgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm8gKmluZm8gPSAmKCp2YXJpYWJsZUluZm9NYXBPdXQpW3NoYWRlclR5cGVdW3Zh
cnlpbmdOYW1lXTsKKyAgICAgICAgICAgIEFTU0VSVChpbmZvLT5sb2NhdGlvbiA9PSBTaGFkZXJJ
bnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZhbGlkKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtNjMxLDYgKzYxNyw3IEBAIHZvaWQgQXNzaWduVmFyeWluZ0xvY2F0aW9ucyhjb25zdCBHbHNs
YW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKIHZvaWQgQXNzaWduVHJhbnNmb3JtRmVlZGJhY2tF
eHRlbnNpb25RdWFsaWZpZXJzKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsb2NhdGlvbnNVc2VkRm9yWGZi
RXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01h
cCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpUcmFu
c2Zvcm1GZWVkYmFja1Zhcnlpbmc+ICZ0ZlZhcnlpbmdzID0KQEAgLTY3NSwxMSArNjYyLDggQEAg
dm9pZCBBc3NpZ25UcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvblF1YWxpZmllcnMoY29uc3QgZ2w6
OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVMKIAogICAgICAgICAgICAgQVNTRVJUKHhmYlZhcnlpbmdM
b2NhdGlvbiA8IGxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb24pOwogCi0gICAgICAgICAgICBn
bDo6U2hhZGVyQml0U2V0IHZlcnRleE9ubHk7Ci0gICAgICAgICAgICB2ZXJ0ZXhPbmx5LnNldChn
bDo6U2hhZGVyVHlwZTo6VmVydGV4KTsKLQogICAgICAgICAgICAgQWRkTG9jYXRpb25JbmZvKHZh
cmlhYmxlSW5mb01hcE91dCwgeGZiVmFyeWluZ05hbWUsIHhmYlZhcnlpbmdMb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OmtJ
bnZhbGlkLCB2ZXJ0ZXhPbmx5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJ
bnRlcmZhY2VWYXJpYWJsZUluZm86OmtJbnZhbGlkLCBzaGFkZXJUeXBlKTsKICAgICAgICAgICAg
IFNldFhmYkluZm8odmFyaWFibGVJbmZvTWFwT3V0LCB4ZmJWYXJ5aW5nTmFtZSwgYnVmZmVySW5k
ZXgsIGN1cnJlbnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHJpZGUp
OwogICAgICAgICB9CkBAIC03MDMsNyArNjg3LDcgQEAgdm9pZCBBc3NpZ25UcmFuc2Zvcm1GZWVk
YmFja0V4dGVuc2lvblF1YWxpZmllcnMoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVMK
IAogICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQYWNrZWRWYXJ5aW5nICp2YXJ5aW5nID0gdmFy
eWluZ1JlZy5wYWNrZWRWYXJ5aW5nOwogCi0gICAgICAgICAgICAgICAgaWYgKHZhcnlpbmctPnZh
cnlpbmctPm5hbWUgPT0gdGZWYXJ5aW5nLm5hbWUpCisgICAgICAgICAgICAgICAgaWYgKHZhcnlp
bmctPmZyb250VmFyeWluZy52YXJ5aW5nLT5uYW1lID09IHRmVmFyeWluZy5uYW1lKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxWYXJ5aW5nID0gdmFyeWlu
ZzsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03MTIsOSArNjk2LDEwIEBAIHZvaWQg
QXNzaWduVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb25RdWFsaWZpZXJzKGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJnByb2dyYW1TCiAKICAgICAgICAgICAgIGlmIChvcmlnaW5hbFZhcnlpbmcpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1hcHBlZE5h
bWUgPSBvcmlnaW5hbFZhcnlpbmctPmlzU3RydWN0RmllbGQoKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb3JpZ2luYWxWYXJ5aW5nLT5wYXJl
bnRTdHJ1Y3RNYXBwZWROYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBvcmlnaW5hbFZhcnlpbmctPnZhcnlpbmctPm1hcHBlZE5hbWU7Cisg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1hcHBlZE5hbWUgPQorICAgICAgICAg
ICAgICAgICAgICBvcmlnaW5hbFZhcnlpbmctPmlzU3RydWN0RmllbGQoKQorICAgICAgICAgICAg
ICAgICAgICAgICAgPyBvcmlnaW5hbFZhcnlpbmctPmZyb250VmFyeWluZy5wYXJlbnRTdHJ1Y3RN
YXBwZWROYW1lCisgICAgICAgICAgICAgICAgICAgICAgICA6IG9yaWdpbmFsVmFyeWluZy0+ZnJv
bnRWYXJ5aW5nLnZhcnlpbmctPm1hcHBlZE5hbWU7CiAKICAgICAgICAgICAgICAgICAvLyBTZXQg
eGZiIGluZm8gZm9yIHRoaXMgdmFyeWluZy4gIEFzc2lnblZhcnlpbmdMb2NhdGlvbnMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBhZGRlZAogICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIGluZm9ybWF0
aW9uIGZvciB0aGVzZSB2YXJ5aW5ncy4KQEAgLTcyNSw3MCArNzEwLDkyIEBAIHZvaWQgQXNzaWdu
VHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb25RdWFsaWZpZXJzKGNvbnN0IGdsOjpQcm9ncmFtU3Rh
dGUgJnByb2dyYW1TCiAgICAgfQogfQogCi12b2lkIEFzc2lnblVuaWZvcm1CaW5kaW5ncyhjb25z
dCBHbHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICpzaGFkZXJTb3VyY2VzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJs
ZUluZm9NYXBPdXQpCit2b2lkIEFzc2lnblVuaWZvcm1CaW5kaW5ncyhHbHNsYW5nU291cmNlT3B0
aW9ucyAmb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsc2xh
bmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAqcHJvZ3JhbUludGVyZmFjZUluZm8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlh
YmxlSW5mb01hcE91dCkKIHsKLSAgICAvLyBBc3NpZ24gYmluZGluZyB0byB0aGUgZGVmYXVsdCB1
bmlmb3JtcyBibG9jayBvZiBlYWNoIHNoYWRlciBzdGFnZS4KLSAgICB1aW50MzJfdCBiaW5kaW5n
SW5kZXggPSAwOwogICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGds
OjpBbGxTaGFkZXJUeXBlcygpKQogICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclNvdXJjZSA9ICgqc2hhZGVyU291cmNlcylbc2hhZGVyVHlwZV07Ci0gICAgICAgIGlmICgh
c2hhZGVyU291cmNlLmVtcHR5KCkpCisgICAgICAgIGlmIChwcm9ncmFtU3RhdGUuZ2V0QXR0YWNo
ZWRTaGFkZXIoc2hhZGVyVHlwZSkgfHwKKyAgICAgICAgICAgIHByb2dyYW1TdGF0ZS5nZXRQcm9n
cmFtRXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdlKHNoYWRlclR5cGUpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBZGRSZXNvdXJjZUluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBrRGVm
YXVsdFVuaWZvcm1OYW1lc1tzaGFkZXJUeXBlXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4LCBiaW5kaW5nSW5kZXgp
OwotICAgICAgICAgICAgKytiaW5kaW5nSW5kZXg7CisgICAgICAgICAgICBBZGRSZXNvdXJjZUlu
Zm8oJigqdmFyaWFibGVJbmZvTWFwT3V0KVtzaGFkZXJUeXBlXSwga0RlZmF1bHRVbmlmb3JtTmFt
ZXNbc2hhZGVyVHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVy
ZmFjZUluZm8tPnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50VW5pZm9ybUJpbmRp
bmdJbmRleCwgc2hhZGVyVHlwZSk7CisgICAgICAgICAgICArK3Byb2dyYW1JbnRlcmZhY2VJbmZv
LT5jdXJyZW50VW5pZm9ybUJpbmRpbmdJbmRleDsKKworICAgICAgICAgICAgLy8gQXNzaWduIGJp
bmRpbmcgdG8gdGhlIGRyaXZlciB1bmlmb3JtcyBibG9jaworICAgICAgICAgICAgQWRkUmVzb3Vy
Y2VJbmZvVG9BbGxTdGFnZXMoJigqdmFyaWFibGVJbmZvTWFwT3V0KVtzaGFkZXJUeXBlXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjp2azo6a0RyaXZlclVuaWZv
cm1zQmxvY2tOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv
Z3JhbUludGVyZmFjZUluZm8tPmRyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4LCAwKTsK
ICAgICAgICAgfQogICAgIH0KLQotICAgIC8vIEFzc2lnbiBiaW5kaW5nIHRvIHRoZSBkcml2ZXIg
dW5pZm9ybXMgYmxvY2sKLSAgICBBZGRSZXNvdXJjZUluZm8odmFyaWFibGVJbmZvTWFwT3V0LCBz
aDo6dms6OmtEcml2ZXJVbmlmb3Jtc1Zhck5hbWUsCi0gICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMuZHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXgsIDApOwogfQogCi11aW50MzJfdCBB
c3NpZ25JbnRlcmZhY2VCbG9ja0JpbmRpbmdzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZv
cHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJpbmRpbmdTdGFydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2
YXJpYWJsZUluZm9NYXBPdXQpCisvLyBUT0RPOiBodHRwOi8vYW5nbGVidWcuY29tLzQ1MTI6IE5l
ZWQgdG8gY29tYmluZSBkZXNjcmlwdG9yIHNldCBiaW5kaW5ncyBhY3Jvc3MKKy8vIHNoYWRlciBz
dGFnZXMuCit2b2lkIEFzc2lnbkludGVyZmFjZUJsb2NrQmluZGluZ3MoR2xzbGFuZ1NvdXJjZU9w
dGlvbnMgJm9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbnRlcmZhY2VCbG9jaz4gJmJsb2NrcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFj
ZUluZm8gKnByb2dyYW1JbnRlcmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFw
T3V0KQogewotICAgIHVpbnQzMl90IGJpbmRpbmdJbmRleCA9IGJpbmRpbmdTdGFydDsKICAgICBm
b3IgKGNvbnN0IGdsOjpJbnRlcmZhY2VCbG9jayAmYmxvY2sgOiBibG9ja3MpCiAgICAgewogICAg
ICAgICBpZiAoIWJsb2NrLmlzQXJyYXkgfHwgYmxvY2suYXJyYXlFbGVtZW50ID09IDApCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFkZFJlc291cmNlSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsIGJs
b2NrLm1hcHBlZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaGFk
ZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleCwgYmluZGluZ0luZGV4KTsKLSAgICAgICAgICAg
ICsrYmluZGluZ0luZGV4OworICAgICAgICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBz
aGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRlclR5cGVzKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gVE9ETzogaHR0cDovL2FuZ2xlYnVnLmNvbS80NTIzOiBBbGwgYmxvY2tzIHNo
b3VsZCBiZSBhY3RpdmUKKyAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbVN0YXRlLmdldFByb2dy
YW1FeGVjdXRhYmxlKCkuaGFzTGlua2VkU2hhZGVyU3RhZ2Uoc2hhZGVyVHlwZSkgJiYKKyAgICAg
ICAgICAgICAgICAgICAgYmxvY2suaXNBY3RpdmUoc2hhZGVyVHlwZSkpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBBZGRSZXNvdXJjZUluZm8oJigqdmFyaWFibGVJbmZv
TWFwT3V0KVtzaGFkZXJUeXBlXSwgYmxvY2subWFwcGVkTmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5zaGFkZXJSZXNvdXJjZURl
c2NyaXB0b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50U2hhZGVyUmVzb3VyY2VCaW5kaW5nSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlKTsKKyAgICAgICAg
ICAgICAgICAgICAgKytwcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFNoYWRlclJlc291cmNl
QmluZGluZ0luZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KLQotICAgIHJldHVybiBiaW5kaW5nSW5kZXg7CiB9CiAKLXVpbnQzMl90IEFzc2ln
bkF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5ncyhjb25zdCBHbHNsYW5nU291cmNlT3B0aW9ucyAm
b3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6QXRvbWljQ291bnRlckJ1ZmZlcj4gJmJ1ZmZlcnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmluZGluZ1N0YXJ0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckludGVy
ZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQorLy8gVE9ETzogaHR0cDov
L2FuZ2xlYnVnLmNvbS80NTEyOiBOZWVkIHRvIGNvbWJpbmUgZGVzY3JpcHRvciBzZXQgYmluZGlu
Z3MgYWNyb3NzCisvLyBzaGFkZXIgc3RhZ2VzLgordm9pZCBBc3NpZ25BdG9taWNDb3VudGVyQnVm
ZmVyQmluZGluZ3MoR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFt
U3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxnbDo6QXRvbWljQ291bnRlckJ1ZmZlcj4gJmJ1ZmZlcnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8gKnBy
b2dyYW1JbnRlcmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQp
CiB7CiAgICAgaWYgKGJ1ZmZlcnMuc2l6ZSgpID09IDApCiAgICAgewotICAgICAgICByZXR1cm4g
YmluZGluZ1N0YXJ0OworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQWRkUmVzb3VyY2VJ
bmZvKHZhcmlhYmxlSW5mb01hcE91dCwgc2g6OnZrOjprQXRvbWljQ291bnRlcnNWYXJOYW1lLAot
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNoYWRlclJlc291cmNlRGVzY3JpcHRvclNldElu
ZGV4LCBiaW5kaW5nU3RhcnQpOwotCi0gICAgcmV0dXJuIGJpbmRpbmdTdGFydCArIDE7CisgICAg
Zm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRlclR5cGVz
KCkpCisgICAgeworICAgICAgICBpZiAocHJvZ3JhbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxl
KCkuaGFzTGlua2VkU2hhZGVyU3RhZ2Uoc2hhZGVyVHlwZSkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFkZFJlc291cmNlSW5mbygmKCp2YXJpYWJsZUluZm9NYXBPdXQpW3NoYWRlclR5cGVdLCBz
aDo6dms6OmtBdG9taWNDb3VudGVyc0Jsb2NrTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+c2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1
cnJlbnRTaGFkZXJSZXNvdXJjZUJpbmRpbmdJbmRleCwgc2hhZGVyVHlwZSk7CisgICAgICAgICAg
ICArK3Byb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50U2hhZGVyUmVzb3VyY2VCaW5kaW5nSW5k
ZXg7CisgICAgICAgIH0KKyAgICB9CiB9CiAKLXVpbnQzMl90IEFzc2lnbkltYWdlQmluZGluZ3Mo
Y29uc3QgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3JtPiAmdW5pZm9ybXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSYW5nZVVJICZpbWFnZVVu
aWZvcm1SYW5nZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmluZGlu
Z1N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJp
YWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKKy8vIFRPRE86IGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vNDUxMjogTmVlZCB0byBjb21iaW5lIGRlc2NyaXB0b3Igc2V0IGJpbmRpbmdzIGFjcm9z
cworLy8gc2hhZGVyIHN0YWdlcy4KK3ZvaWQgQXNzaWduSW1hZ2VCaW5kaW5ncyhHbHNsYW5nU291
cmNlT3B0aW9ucyAmb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlmb3JtcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UmFuZ2VVSSAmaW1hZ2VVbmlmb3JtUmFuZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFt
SW50ZXJmYWNlSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZh
Y2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKIHsKLSAgICB1aW50MzJfdCBi
aW5kaW5nSW5kZXggPSBiaW5kaW5nU3RhcnQ7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9y
bUluZGV4IDogaW1hZ2VVbmlmb3JtUmFuZ2UpCiAgICAgewogICAgICAgICBjb25zdCBnbDo6TGlu
a2VkVW5pZm9ybSAmaW1hZ2VVbmlmb3JtID0gdW5pZm9ybXNbdW5pZm9ybUluZGV4XTsKQEAgLTc5
Niw0NiArODAzLDUzIEBAIHVpbnQzMl90IEFzc2lnbkltYWdlQmluZGluZ3MoY29uc3QgR2xzbGFu
Z1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCiAgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBpbWFn
ZVVuaWZvcm0ubWFwcGVkTmFtZTsKICAgICAgICAgaWYgKEdldEltYWdlTmFtZVdpdGhvdXRJbmRp
Y2VzKCZuYW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgQWRkUmVzb3VyY2VJbmZvKHZhcmlh
YmxlSW5mb01hcE91dCwgbmFtZSwgb3B0aW9ucy5zaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nSW5kZXgpOworICAgICAg
ICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbFNoYWRl
clR5cGVzKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHByb2dyYW1TdGF0
ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdlKHNoYWRlclR5cGUp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQWRkUmVzb3VyY2VJbmZv
KCYoKnZhcmlhYmxlSW5mb01hcE91dClbc2hhZGVyVHlwZV0sIG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+c2hhZGVyUmVzb3Vy
Y2VEZXNjcmlwdG9yU2V0SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFNoYWRlclJlc291cmNlQmluZGluZ0luZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSk7CisgICAg
ICAgICAgICAgICAgICAgICsrcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRTaGFkZXJSZXNv
dXJjZUJpbmRpbmdJbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgKytiaW5kaW5nSW5kZXg7CiAgICAgfQotCi0gICAgcmV0dXJuIGJpbmRp
bmdJbmRleDsKIH0KIAotdm9pZCBBc3NpZ25Ob25UZXh0dXJlQmluZGluZ3MoY29uc3QgR2xzbGFu
Z1NvdXJjZU9wdGlvbnMgJm9wdGlvbnMsCit2b2lkIEFzc2lnbk5vblRleHR1cmVCaW5kaW5ncyhH
bHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJ
bmZvTWFwT3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xzbGFuZ1Byb2dyYW1J
bnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5mbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZv
TWFwT3V0KQogewotICAgIHVpbnQzMl90IGJpbmRpbmdTdGFydCA9IDA7Ci0KICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZ1bmlmb3JtQmxvY2tzID0gcHJvZ3JhbVN0
YXRlLmdldFVuaWZvcm1CbG9ja3MoKTsKLSAgICBiaW5kaW5nU3RhcnQgPQotICAgICAgICBBc3Np
Z25JbnRlcmZhY2VCbG9ja0JpbmRpbmdzKG9wdGlvbnMsIHVuaWZvcm1CbG9ja3MsIGJpbmRpbmdT
dGFydCwgdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICBBc3NpZ25JbnRlcmZhY2VCbG9ja0JpbmRp
bmdzKG9wdGlvbnMsIHByb2dyYW1TdGF0ZSwgdW5pZm9ybUJsb2NrcywgcHJvZ3JhbUludGVyZmFj
ZUluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUluZm9NYXBP
dXQpOwogCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmc3RvcmFn
ZUJsb2NrcyA9IHByb2dyYW1TdGF0ZS5nZXRTaGFkZXJTdG9yYWdlQmxvY2tzKCk7Ci0gICAgYmlu
ZGluZ1N0YXJ0ID0KLSAgICAgICAgQXNzaWduSW50ZXJmYWNlQmxvY2tCaW5kaW5ncyhvcHRpb25z
LCBzdG9yYWdlQmxvY2tzLCBiaW5kaW5nU3RhcnQsIHZhcmlhYmxlSW5mb01hcE91dCk7CisgICAg
QXNzaWduSW50ZXJmYWNlQmxvY2tCaW5kaW5ncyhvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHN0b3Jh
Z2VCbG9ja3MsIHByb2dyYW1JbnRlcmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsKIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpBdG9taWNDb3VudGVyQnVmZmVyPiAmYXRvbWljQ291bnRlckJ1ZmZlcnMgPQogICAgICAgICBw
cm9ncmFtU3RhdGUuZ2V0QXRvbWljQ291bnRlckJ1ZmZlcnMoKTsKLSAgICBiaW5kaW5nU3RhcnQg
PSBBc3NpZ25BdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3Mob3B0aW9ucywgYXRvbWljQ291bnRl
ckJ1ZmZlcnMsIGJpbmRpbmdTdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICBBc3NpZ25BdG9t
aWNDb3VudGVyQnVmZmVyQmluZGluZ3Mob3B0aW9ucywgcHJvZ3JhbVN0YXRlLCBhdG9taWNDb3Vu
dGVyQnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bUludGVyZmFjZUluZm8sIHZhcmlhYmxlSW5mb01hcE91dCk7CiAKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxnbDo6TGlua2VkVW5pZm9ybT4gJnVuaWZvcm1zID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZv
cm1zKCk7CiAgICAgY29uc3QgZ2w6OlJhbmdlVUkgJmltYWdlVW5pZm9ybVJhbmdlICAgICAgICAg
ICA9IHByb2dyYW1TdGF0ZS5nZXRJbWFnZVVuaWZvcm1SYW5nZSgpOwotICAgIGJpbmRpbmdTdGFy
dCA9Ci0gICAgICAgIEFzc2lnbkltYWdlQmluZGluZ3Mob3B0aW9ucywgdW5pZm9ybXMsIGltYWdl
VW5pZm9ybVJhbmdlLCBiaW5kaW5nU3RhcnQsIHZhcmlhYmxlSW5mb01hcE91dCk7CisgICAgQXNz
aWduSW1hZ2VCaW5kaW5ncyhvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHVuaWZvcm1zLCBpbWFnZVVu
aWZvcm1SYW5nZSwgcHJvZ3JhbUludGVyZmFjZUluZm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZUluZm9NYXBPdXQpOwogfQogCi12b2lkIEFzc2lnblRleHR1cmVCaW5kaW5ncyhj
b25zdCBHbHNsYW5nU291cmNlT3B0aW9ucyAmb3B0aW9ucywKKy8vIFRPRE86IGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vNDUxMjogTmVlZCB0byBjb21iaW5lIGRlc2NyaXB0b3Igc2V0IGJpbmRpbmdzIGFj
cm9zcworLy8gc2hhZGVyIHN0YWdlcy4KK3ZvaWQgQXNzaWduVGV4dHVyZUJpbmRpbmdzKEdsc2xh
bmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8g
KnByb2dyYW1JbnRlcmZhY2VJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
TWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpCiB7CiAgICAg
Ly8gQXNzaWduIHRleHR1cmVzIHRvIGEgZGVzY3JpcHRvciBzZXQgYW5kIGJpbmRpbmcuCi0gICAg
dWludDMyX3QgYmluZGluZ0luZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CiAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlmb3JtcyA9IHByb2dyYW1T
dGF0ZS5nZXRVbmlmb3JtcygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4
IDogcHJvZ3JhbVN0YXRlLmdldFNhbXBsZXJVbmlmb3JtUmFuZ2UoKSkKQEAgLTg1NSwxMSArODY5
LDE5IEBAIHZvaWQgQXNzaWduVGV4dHVyZUJpbmRpbmdzKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRp
b25zICZvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBHZXRNYXBwZWRTYW1wbGVyTmFtZU9sZChzYW1wbGVyVW5pZm9ybS5uYW1lKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBHbHNsYW5nR2V0
TWFwcGVkU2FtcGxlck5hbWUoc2FtcGxlclVuaWZvcm0ubmFtZSk7CiAKLSAgICAgICAgICAgIEFk
ZFJlc291cmNlSW5mbyh2YXJpYWJsZUluZm9NYXBPdXQsIHNhbXBsZXJOYW1lLCBvcHRpb25zLnRl
eHR1cmVEZXNjcmlwdG9yU2V0SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
ZGluZ0luZGV4KTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVy
VHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIC8vIFRPRE86IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDUyMzogQWxsIHVuaWZvcm1zIHNob3Vs
ZCBiZSBhY3RpdmUKKyAgICAgICAgICAgICAgICBpZiAocHJvZ3JhbVN0YXRlLmdldFByb2dyYW1F
eGVjdXRhYmxlKCkuaGFzTGlua2VkU2hhZGVyU3RhZ2Uoc2hhZGVyVHlwZSkgJiYKKyAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlclVuaWZvcm0uaXNBY3RpdmUoc2hhZGVyVHlwZSkpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBBZGRSZXNvdXJjZUluZm8oJigqdmFyaWFi
bGVJbmZvTWFwT3V0KVtzaGFkZXJUeXBlXSwgc2FtcGxlck5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+dGV4dHVyZURlc2NyaXB0
b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1J
bnRlcmZhY2VJbmZvLT5jdXJyZW50VGV4dHVyZUJpbmRpbmdJbmRleCwgc2hhZGVyVHlwZSk7Cisg
ICAgICAgICAgICAgICAgICAgICsrcHJvZ3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRUZXh0dXJl
QmluZGluZ0luZGV4OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAg
fQotCi0gICAgICAgICsrYmluZGluZ0luZGV4OwogICAgIH0KIH0KIApAQCAtOTU5LDggKzk4MSw3
IEBAIGJvb2wgVmFsaWRhdGVTcGlydihjb25zdCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gJnNwaXJ2
QmxvYikKICAgICBpZiAoIXJlc3VsdCkKICAgICB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIHJlYWRh
YmxlU3BpcnY7Ci0gICAgICAgIHJlc3VsdCA9IHNwaXJ2VG9vbHMuRGlzYXNzZW1ibGUoc3BpcnZC
bG9iLCAmcmVhZGFibGVTcGlydiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTUFZfQklOQVJZX1RPX1RFWFRfT1BUSU9OX0ZSSUVORExZX05BTUVTKTsKKyAgICAgICAg
c3BpcnZUb29scy5EaXNhc3NlbWJsZShzcGlydkJsb2IsICZyZWFkYWJsZVNwaXJ2LCBTUFZfQklO
QVJZX1RPX1RFWFRfT1BUSU9OX0ZSSUVORExZX05BTUVTKTsKICAgICAgICAgV0FSTigpIDw8ICJJ
bnZhbGlkIFNQSVItVjpcbiIgPDwgcmVhZGFibGVTcGlydjsKICAgICB9CiAKQEAgLTEwNDYsNiAr
MTA2NywxMiBAQCBjbGFzcyBTcGlydlRyYW5zZm9ybWVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAKICAgICAvLyBUcmFuc2Zvcm1hdGlvbiBzdGF0ZToKIAorICAgIC8vIE5hbWVzIGFzc29j
aWF0ZWQgd2l0aCBpZHMgdGhyb3VnaCBPcE5hbWUuICBUaGUgc2FtZSBuYW1lIG1heSBiZSBhc3Np
Z25lZCB0byBtdWx0aXBsZSBpZHMsIGJ1dAorICAgIC8vIG5vdCBhbGwgbmFtZXMgYXJlIGludGVy
ZXN0aW5nIChmb3IgZXhhbXBsZSBmdW5jdGlvbiBhcmd1bWVudHMpLiAgV2hlbiB0aGUgdmFyaWFi
bGUKKyAgICAvLyBkZWNsYXJhdGlvbiBpcyBtZXQgKE9wVmFyaWFibGUpLCB0aGUgdmFyaWFibGUg
aW5mbyBpcyBtYXRjaGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgaWQncworICAgIC8vIG5hbWUg
YmFzZWQgb24gdGhlIFN0b3JhZ2UgQ2xhc3MuCisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAq
PiBtTmFtZXNCeUlkOworCiAgICAgLy8gU2hhZGVyIHZhcmlhYmxlIGluZm8gcGVyIGlkLCBpZiBp
ZCBpcyBhIHNoYWRlciB2YXJpYWJsZS4KICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBTaGFkZXJJbnRl
cmZhY2VWYXJpYWJsZUluZm8gKj4gbVZhcmlhYmxlSW5mb0J5SWQ7CiAKQEAgLTExMTksNiArMTE0
NiwxMSBAQCB2b2lkIFNwaXJ2VHJhbnNmb3JtZXI6OnJlc29sdmVWYXJpYWJsZUlkcygpCiB7CiAg
ICAgc2l6ZV90IGluZGV4Qm91bmQgPSBtU3BpcnZCbG9iSW5ba0hlYWRlckluZGV4SW5kZXhCb3Vu
ZF07CiAKKyAgICAvLyBBbGxvY2F0ZSBzdG9yYWdlIGZvciBpZC10by1uYW1lIG1hcC4gIFVzZWQg
dG8gYXNzb2NpYXRlIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyB3aXRoIGlkcworICAgIC8v
IGJhc2VkIG9uIG5hbWUsIGJ1dCBvbmx5IHdoZW4gaXQncyBkZXRlcm1pbmVkIHRoYXQgdGhlIG5h
bWUgY29ycmVzcG9uZHMgdG8gYSBzaGFkZXIgaW50ZXJmYWNlCisgICAgLy8gdmFyaWFibGUuCisg
ICAgbU5hbWVzQnlJZC5yZXNpemUoaW5kZXhCb3VuZCArIDEsIG51bGxwdHIpOworCiAgICAgLy8g
QWxsb2NhdGUgc3RvcmFnZSBmb3IgaWQtdG8taW5mbyBtYXAuICBJZiAlaSBpcyB0aGUgaWQgb2Yg
YSBuYW1lIGluIG1WYXJpYWJsZUluZm9NYXAsIGluZGV4IGkKICAgICAvLyBpbiB0aGlzIHZlY3Rv
ciB3aWxsIGhvbGQgYSBwb2ludGVyIHRvIHRoZSBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8g
b2JqZWN0IGFzc29jaWF0ZWQgd2l0aAogICAgIC8vIHRoYXQgbmFtZSBpbiBtVmFyaWFibGVJbmZv
TWFwLgpAQCAtMTI1MSwzNyArMTI4MywxMCBAQCB2b2lkIFNwaXJ2VHJhbnNmb3JtZXI6OnZpc2l0
TmFtZShjb25zdCB1aW50MzJfdCAqaW5zdHJ1Y3Rpb24pCiAgICAgY29uc3QgY2hhciAqbmFtZSAg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oJmluc3RydWN0aW9uW2tOYW1lSW5kZXhd
KTsKIAogICAgIC8vIFRoZSBuYW1lcyBhbmQgaWRzIGFyZSB1bmlxdWUKLSAgICBBU1NFUlQoaWQg
PCBtVmFyaWFibGVJbmZvQnlJZC5zaXplKCkpOwotICAgIEFTU0VSVChtVmFyaWFibGVJbmZvQnlJ
ZFtpZF0gPT0gbnVsbHB0cik7Ci0KLSAgICBib29sIGlzQnVpbHRpbiA9IGFuZ2xlOjpCZWdpbnNX
aXRoKG5hbWUsICJnbF8iKTsKLSAgICBpZiAoaXNCdWlsdGluKQotICAgIHsKLSAgICAgICAgLy8g
TWFrZSBhbGwgYnVpbHRpbnMgcG9pbnQgdG8gdGhpcyBuby1vcCBpbmZvLiAgQWRkaW5nIHRoaXMg
ZW50cnkgYWxsb3dzIHVzIHRvIEFTU0VSVCB0aGF0Ci0gICAgICAgIC8vIGV2ZXJ5IHNoYWRlciBp
bnRlcmZhY2UgdmFyaWFibGUgaXMgcHJvY2Vzc2VkIGR1cmluZyB0aGUgU1BJUi1WIHRyYW5zZm9y
bWF0aW9uLiAgVGhpcyBpcwotICAgICAgICAvLyBkb25lIHdoZW4gaXRlcmF0aW5nIHRoZSBpZHMg
cHJvdmlkZWQgYnkgT3BFbnRyeVBvaW50LgotICAgICAgICBtVmFyaWFibGVJbmZvQnlJZFtpZF0g
PSAmbUJ1aWx0aW5WYXJpYWJsZUluZm87Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBh
dXRvIGluZm9JdGVyID0gbVZhcmlhYmxlSW5mb01hcC5maW5kKG5hbWUpOwotICAgIGlmIChpbmZv
SXRlciA9PSBtVmFyaWFibGVJbmZvTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAqaW5mbyA9ICZp
bmZvSXRlci0+c2Vjb25kOwotCi0gICAgLy8gQXNzb2NpYXRlIHRoZSBpZCBvZiB0aGlzIG5hbWUg
d2l0aCBpdHMgaW5mby4KLSAgICBtVmFyaWFibGVJbmZvQnlJZFtpZF0gPSBpbmZvOworICAgIEFT
U0VSVChpZCA8IG1OYW1lc0J5SWQuc2l6ZSgpKTsKKyAgICBBU1NFUlQobU5hbWVzQnlJZFtpZF0g
PT0gbnVsbHB0cik7CiAKLSAgICAvLyBOb3RlIGlmIHRoZSB2YXJpYWJsZSBpcyBjYXB0dXJlZCBi
eSB0cmFuc2Zvcm0gZmVlZGJhY2suICBJbiB0aGF0IGNhc2UsIHRoZSBUcmFuc2Zvcm1GZWVkYmFj
awotICAgIC8vIGNhcGFiaWxpdHkgbmVlZHMgdG8gYmUgYWRkZWQuCi0gICAgaWYgKG1TaGFkZXJU
eXBlICE9IGdsOjpTaGFkZXJUeXBlOjpGcmFnbWVudCAmJgotICAgICAgICBpbmZvLT54ZmJCdWZm
ZXIgIT0gU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCAmJiBpbmZvLT5hY3Rp
dmVTdGFnZXNbbVNoYWRlclR5cGVdKQotICAgIHsKLSAgICAgICAgbUhhc1RyYW5zZm9ybUZlZWRi
YWNrT3V0cHV0ID0gdHJ1ZTsKLSAgICB9CisgICAgbU5hbWVzQnlJZFtpZF0gPSBuYW1lOwogfQog
CiB2b2lkIFNwaXJ2VHJhbnNmb3JtZXI6OnZpc2l0VHlwZUhlbHBlcihjb25zdCB1aW50MzJfdCAq
aW5zdHJ1Y3Rpb24sCkBAIC0xMjkyLDE5ICsxMjk3LDE3IEBAIHZvaWQgU3BpcnZUcmFuc2Zvcm1l
cjo6dmlzaXRUeXBlSGVscGVyKGNvbnN0IHVpbnQzMl90ICppbnN0cnVjdGlvbiwKICAgICBjb25z
dCB1aW50MzJfdCB0eXBlSWQgPSBpbnN0cnVjdGlvblt0eXBlSWRJbmRleF07CiAKICAgICAvLyBF
dmVyeSB0eXBlIGlkIGlzIGRlY2xhcmVkIG9ubHkgb25jZS4KLSAgICBBU1NFUlQodHlwZUlkIDwg
bVZhcmlhYmxlSW5mb0J5SWQuc2l6ZSgpKTsKKyAgICBBU1NFUlQoaWQgPCBtTmFtZXNCeUlkLnNp
emUoKSk7CisgICAgQVNTRVJUKG1OYW1lc0J5SWRbaWRdID09IG51bGxwdHIpOwogCi0gICAgaWYg
KG1WYXJpYWJsZUluZm9CeUlkW3R5cGVJZF0gIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIC8v
IENhcnJ5IHRoZSBpbmZvIGZvcndhcmQgZnJvbSB0aGUgYmFzZSB0eXBlLiAgVGhpcyBpcyBvbmx5
IG5lY2Vzc2FyeSBmb3IgaW50ZXJmYWNlIGJsb2NrcywKLSAgICAgICAgLy8gYXMgdGhlIHZhcmlh
YmxlIGluZm8gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBibG9jayBuYW1lIGluc3RlYWQgb2YgdGhl
IHZhcmlhYmxlIG5hbWUgKHRvCi0gICAgICAgIC8vIHN1cHBvcnQgbmFtZWxlc3MgaW50ZXJmYWNl
IGJsb2NrcykuICBJbiB0aGF0IGNhc2UsIHRoZSB2YXJpYWJsZSBpdHNlbGYgZG9lc24ndCB5ZXQg
aGF2ZQotICAgICAgICAvLyBhbiBhc3NvY2lhdGVkIGluZm8uCi0gICAgICAgIEFTU0VSVChpZCA8
IG1WYXJpYWJsZUluZm9CeUlkLnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVChtVmFyaWFibGVJbmZv
QnlJZFtpZF0gPT0gbnVsbHB0cik7CisgICAgLy8gQ2FycnkgdGhlIG5hbWUgZm9yd2FyZCBmcm9t
IHRoZSBiYXNlIHR5cGUuICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBpbnRlcmZhY2UgYmxv
Y2tzLAorICAgIC8vIGFzIHRoZSB2YXJpYWJsZSBpbmZvIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
YmxvY2sgbmFtZSBpbnN0ZWFkIG9mIHRoZSB2YXJpYWJsZSBuYW1lICh0bworICAgIC8vIHN1cHBv
cnQgbmFtZWxlc3MgaW50ZXJmYWNlIGJsb2NrcykuICBXaGVuIHRoZSB2YXJpYWJsZSBkZWNsYXJh
dGlvbiBpcyBtZXQsIGVpdGhlciB0aGUKKyAgICAvLyB0eXBlIG5hbWUgb3IgdGhlIHZhcmlhYmxl
IG5hbWUgaXMgdXNlZCB0byBhc3NvY2lhdGUgd2l0aCBpbmZvIGJhc2VkIG9uIHRoZSB2YXJpYWJs
ZSdzCisgICAgLy8gc3RvcmFnZSBjbGFzcy4KKyAgICBBU1NFUlQodHlwZUlkIDwgbU5hbWVzQnlJ
ZC5zaXplKCkpOwogCi0gICAgICAgIG1WYXJpYWJsZUluZm9CeUlkW2lkXSA9IG1WYXJpYWJsZUlu
Zm9CeUlkW3R5cGVJZF07Ci0gICAgfQorICAgIG1OYW1lc0J5SWRbaWRdID0gbU5hbWVzQnlJZFt0
eXBlSWRdOwogfQogCiB2b2lkIFNwaXJ2VHJhbnNmb3JtZXI6OnZpc2l0VHlwZUFycmF5KGNvbnN0
IHVpbnQzMl90ICppbnN0cnVjdGlvbikKQEAgLTEzMzIsMTUgKzEzMzUsNjYgQEAgdm9pZCBTcGly
dlRyYW5zZm9ybWVyOjp2aXNpdFZhcmlhYmxlKGNvbnN0IHVpbnQzMl90ICppbnN0cnVjdGlvbikK
ICAgICBjb25zdGV4cHIgc2l6ZV90IGtJZEluZGV4ICAgICAgICAgICA9IDI7CiAgICAgY29uc3Rl
eHByIHNpemVfdCBrU3RvcmFnZUNsYXNzSW5kZXggPSAzOwogCi0gICAgdmlzaXRUeXBlSGVscGVy
KGluc3RydWN0aW9uLCBrSWRJbmRleCwga1R5cGVJZEluZGV4KTsKLQogICAgIC8vIEFsbCByZXNv
dXJjZXMgdGhhdCB0YWtlIHNldC9iaW5kaW5nIHNob3VsZCBiZSB0cmFuc2Zvcm1lZC4KKyAgICBj
b25zdCB1aW50MzJfdCB0eXBlSWQgICAgICAgPSBpbnN0cnVjdGlvbltrVHlwZUlkSW5kZXhdOwog
ICAgIGNvbnN0IHVpbnQzMl90IGlkICAgICAgICAgICA9IGluc3RydWN0aW9uW2tJZEluZGV4XTsK
ICAgICBjb25zdCB1aW50MzJfdCBzdG9yYWdlQ2xhc3MgPSBpbnN0cnVjdGlvbltrU3RvcmFnZUNs
YXNzSW5kZXhdOwogCi0gICAgQVNTRVJUKChzdG9yYWdlQ2xhc3MgIT0gc3B2OjpTdG9yYWdlQ2xh
c3NVbmlmb3JtICYmIHN0b3JhZ2VDbGFzcyAhPSBzcHY6OlN0b3JhZ2VDbGFzc0ltYWdlICYmCi0g
ICAgICAgICAgICBzdG9yYWdlQ2xhc3MgIT0gc3B2OjpTdG9yYWdlQ2xhc3NTdG9yYWdlQnVmZmVy
KSB8fAotICAgICAgICAgICBtVmFyaWFibGVJbmZvQnlJZFtpZF0gIT0gbnVsbHB0cik7CisgICAg
QVNTRVJUKHR5cGVJZCA8IG1OYW1lc0J5SWQuc2l6ZSgpKTsKKyAgICBBU1NFUlQoaWQgPCBtTmFt
ZXNCeUlkLnNpemUoKSk7CisKKyAgICAvLyBJZiBzdG9yYWdlIGNsYXNzIGluZGljYXRlcyB0aGF0
IHRoaXMgaXMgbm90IGEgc2hhZGVyIGludGVyZmFjZSB2YXJpYWJsZSwgaWdub3JlIGl0LgorICAg
IGNvbnN0IGJvb2wgaXNJbnRlcmZhY2VCbG9ja1ZhcmlhYmxlID0KKyAgICAgICAgc3RvcmFnZUNs
YXNzID09IHNwdjo6U3RvcmFnZUNsYXNzVW5pZm9ybSB8fCBzdG9yYWdlQ2xhc3MgPT0gc3B2OjpT
dG9yYWdlQ2xhc3NTdG9yYWdlQnVmZmVyOworICAgIGNvbnN0IGJvb2wgaXNPcGFxdWVVbmlmb3Jt
ID0gc3RvcmFnZUNsYXNzID09IHNwdjo6U3RvcmFnZUNsYXNzVW5pZm9ybUNvbnN0YW50OworICAg
IGNvbnN0IGJvb2wgaXNJbk91dCA9CisgICAgICAgIHN0b3JhZ2VDbGFzcyA9PSBzcHY6OlN0b3Jh
Z2VDbGFzc0lucHV0IHx8IHN0b3JhZ2VDbGFzcyA9PSBzcHY6OlN0b3JhZ2VDbGFzc091dHB1dDsK
KworICAgIGlmICghaXNJbnRlcmZhY2VCbG9ja1ZhcmlhYmxlICYmICFpc09wYXF1ZVVuaWZvcm0g
JiYgIWlzSW5PdXQpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhl
IGlkcyBhcmUgdW5pcXVlLgorICAgIEFTU0VSVChpZCA8IG1WYXJpYWJsZUluZm9CeUlkLnNpemUo
KSk7CisgICAgQVNTRVJUKG1WYXJpYWJsZUluZm9CeUlkW2lkXSA9PSBudWxscHRyKTsKKworICAg
IC8vIEZvciBpbnRlcmZhY2UgYmxvY2sgdmFyaWFibGVzLCB0aGUgbmFtZSB0aGF0J3MgdXNlZCB0
byBhc3NvY2lhdGUgaW5mbyBpcyB0aGUgYmxvY2sgbmFtZQorICAgIC8vIHJhdGhlciB0aGFuIHRo
ZSB2YXJpYWJsZSBuYW1lLgorICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBtTmFtZXNCeUlkW2lzSW50
ZXJmYWNlQmxvY2tWYXJpYWJsZSA/IHR5cGVJZCA6IGlkXTsKKyAgICBBU1NFUlQobmFtZSAhPSBu
dWxscHRyKTsKKworICAgIC8vIEhhbmRsZSBidWlsdGlucywgd2hpY2ggYWxsIHN0YXJ0IHdpdGgg
ImdsXyIuICBFaXRoZXIgdGhlIHZhcmlhYmxlIG5hbWUgY291bGQgYmUgYW4gaW5kaWNhdGlvbgor
ICAgIC8vIG9mIGEgYnVpbHRpbiB2YXJpYWJsZSAoc3VjaCBhcyB3aXRoIGdsX0ZyYWdDb29yZCkg
b3IgdGhlIHR5cGUgbmFtZSAoc3VjaCBhcyB3aXRoCisgICAgLy8gZ2xfUGVyVmVydGV4KS4KKyAg
ICBjb25zdCBib29sIGlzTmFtZUJ1aWx0aW4gPSBpc0luT3V0ICYmIGFuZ2xlOjpCZWdpbnNXaXRo
KG5hbWUsICJnbF8iKTsKKyAgICBjb25zdCBib29sIGlzVHlwZUJ1aWx0aW4gPQorICAgICAgICBp
c0luT3V0ICYmIG1OYW1lc0J5SWRbdHlwZUlkXSAhPSBudWxscHRyICYmIGFuZ2xlOjpCZWdpbnNX
aXRoKG1OYW1lc0J5SWRbdHlwZUlkXSwgImdsXyIpOworICAgIGlmIChpc05hbWVCdWlsdGluIHx8
IGlzVHlwZUJ1aWx0aW4pCisgICAgeworICAgICAgICAvLyBNYWtlIGFsbCBidWlsdGlucyBwb2lu
dCB0byB0aGlzIG5vLW9wIGluZm8uICBBZGRpbmcgdGhpcyBlbnRyeSBhbGxvd3MgdXMgdG8gQVNT
RVJUIHRoYXQKKyAgICAgICAgLy8gZXZlcnkgc2hhZGVyIGludGVyZmFjZSB2YXJpYWJsZSBpcyBw
cm9jZXNzZWQgZHVyaW5nIHRoZSBTUElSLVYgdHJhbnNmb3JtYXRpb24uICBUaGlzIGlzCisgICAg
ICAgIC8vIGRvbmUgd2hlbiBpdGVyYXRpbmcgdGhlIGlkcyBwcm92aWRlZCBieSBPcEVudHJ5UG9p
bnQuCisgICAgICAgIG1WYXJpYWJsZUluZm9CeUlkW2lkXSA9ICZtQnVpbHRpblZhcmlhYmxlSW5m
bzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEV2ZXJ5IHNoYWRlciBpbnRlcmZh
Y2UgdmFyaWFibGUgc2hvdWxkIGhhdmUgYW4gYXNzb2NpYXRlZCBkYXRhLgorICAgIGF1dG8gaW5m
b0l0ZXIgPSBtVmFyaWFibGVJbmZvTWFwLmZpbmQobmFtZSk7CisgICAgQVNTRVJUKGluZm9JdGVy
ICE9IG1WYXJpYWJsZUluZm9NYXAuZW5kKCkpOworCisgICAgY29uc3QgU2hhZGVySW50ZXJmYWNl
VmFyaWFibGVJbmZvICppbmZvID0gJmluZm9JdGVyLT5zZWNvbmQ7CisKKyAgICAvLyBBc3NvY2lh
dGUgdGhlIGlkIG9mIHRoaXMgbmFtZSB3aXRoIGl0cyBpbmZvLgorICAgIG1WYXJpYWJsZUluZm9C
eUlkW2lkXSA9IGluZm87CisKKyAgICAvLyBOb3RlIGlmIHRoZSB2YXJpYWJsZSBpcyBjYXB0dXJl
ZCBieSB0cmFuc2Zvcm0gZmVlZGJhY2suICBJbiB0aGF0IGNhc2UsIHRoZSBUcmFuc2Zvcm1GZWVk
YmFjaworICAgIC8vIGNhcGFiaWxpdHkgbmVlZHMgdG8gYmUgYWRkZWQuCisgICAgaWYgKG1TaGFk
ZXJUeXBlICE9IGdsOjpTaGFkZXJUeXBlOjpGcmFnbWVudCAmJgorICAgICAgICBpbmZvLT54ZmJC
dWZmZXIgIT0gU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvOjprSW52YWxpZCAmJiBpbmZvLT5h
Y3RpdmVTdGFnZXNbbVNoYWRlclR5cGVdKQorICAgIHsKKyAgICAgICAgbUhhc1RyYW5zZm9ybUZl
ZWRiYWNrT3V0cHV0ID0gdHJ1ZTsKKyAgICB9CiB9CiAKIGJvb2wgU3BpcnZUcmFuc2Zvcm1lcjo6
dHJhbnNmb3JtRGVjb3JhdGUoY29uc3QgdWludDMyX3QgKmluc3RydWN0aW9uLCBzaXplX3Qgd29y
ZENvdW50KQpAQCAtMTM3Myw3ICsxNDI3LDcgQEAgYm9vbCBTcGlydlRyYW5zZm9ybWVyOjp0cmFu
c2Zvcm1EZWNvcmF0ZShjb25zdCB1aW50MzJfdCAqaW5zdHJ1Y3Rpb24sIHNpemVfdCB3b3IKICAg
ICBzd2l0Y2ggKGRlY29yYXRpb24pCiAgICAgewogICAgICAgICBjYXNlIHNwdjo6RGVjb3JhdGlv
bkxvY2F0aW9uOgotICAgICAgICAgICAgbmV3RGVjb3JhdGlvblZhbHVlID0gaW5mby0+bG9jYXRp
b25bbVNoYWRlclR5cGVdOworICAgICAgICAgICAgbmV3RGVjb3JhdGlvblZhbHVlID0gaW5mby0+
bG9jYXRpb247CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBzcHY6OkRlY29yYXRp
b25CaW5kaW5nOgogICAgICAgICAgICAgbmV3RGVjb3JhdGlvblZhbHVlID0gaW5mby0+YmluZGlu
ZzsKQEAgLTE0MDMsMTMgKzE0NTcsMTMgQEAgYm9vbCBTcGlydlRyYW5zZm9ybWVyOjp0cmFuc2Zv
cm1EZWNvcmF0ZShjb25zdCB1aW50MzJfdCAqaW5zdHJ1Y3Rpb24sIHNpemVfdCB3b3IKICAgICB9
CiAKICAgICAvLyBBZGQgY29tcG9uZW50IGRlY29yYXRpb24sIGlmIGFueS4KLSAgICBpZiAoaW5m
by0+Y29tcG9uZW50W21TaGFkZXJUeXBlXSAhPSBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86
OmtJbnZhbGlkKQorICAgIGlmIChpbmZvLT5jb21wb25lbnQgIT0gU2hhZGVySW50ZXJmYWNlVmFy
aWFibGVJbmZvOjprSW52YWxpZCkKICAgICB7CiAgICAgICAgIC8vIENvcHkgdGhlIGxvY2F0aW9u
IGRlY29yYXRpb24gZGVjbGFyYXRpb24gYW5kIG1vZGlmeSBpdCB0byBjb250YWluIHRoZSBDb21w
b25lbnQKICAgICAgICAgLy8gZGVjb3JhdGlvbi4KICAgICAgICAgY29uc3Qgc2l6ZV90IGluc3RP
ZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBjb3B5SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rp
b24sIHdvcmRDb3VudCk7CiAgICAgICAgICgqbVNwaXJ2QmxvYk91dClbaW5zdE9mZnNldCArIGtE
ZWNvcmF0aW9uSW5kZXhdID0gc3B2OjpEZWNvcmF0aW9uQ29tcG9uZW50OwotICAgICAgICAoKm1T
cGlydkJsb2JPdXQpW2luc3RPZmZzZXQgKyBrRGVjb3JhdGlvblZhbHVlSW5kZXhdID0gaW5mby0+
Y29tcG9uZW50W21TaGFkZXJUeXBlXTsKKyAgICAgICAgKCptU3BpcnZCbG9iT3V0KVtpbnN0T2Zm
c2V0ICsga0RlY29yYXRpb25WYWx1ZUluZGV4XSA9IGluZm8tPmNvbXBvbmVudDsKICAgICB9CiAK
ICAgICAvLyBBZGQgWGZiIGRlY29yYXRpb25zLCBpZiBhbnkuCkBAIC0xNTYyLDkgKzE2MTYsMTEg
QEAgYm9vbCBTcGlydlRyYW5zZm9ybWVyOjp0cmFuc2Zvcm1UeXBlUG9pbnRlcihjb25zdCB1aW50
MzJfdCAqaW5zdHJ1Y3Rpb24sIHNpemVfdAogICAgIC8vIFNQSVItViAxLjAgU2VjdGlvbiAzLjMy
IEluc3RydWN0aW9ucywgT3BUeXBlUG9pbnRlcgogICAgIGNvbnN0ZXhwciBzaXplX3Qga0lkSW5k
ZXggICAgICAgICAgID0gMTsKICAgICBjb25zdGV4cHIgc2l6ZV90IGtTdG9yYWdlQ2xhc3NJbmRl
eCA9IDI7CisgICAgY29uc3RleHByIHNpemVfdCBrVHlwZUlkSW5kZXggICAgICAgPSAzOwogCiAg
ICAgY29uc3QgdWludDMyX3QgaWQgICAgICAgICAgID0gaW5zdHJ1Y3Rpb25ba0lkSW5kZXhdOwog
ICAgIGNvbnN0IHVpbnQzMl90IHN0b3JhZ2VDbGFzcyA9IGluc3RydWN0aW9uW2tTdG9yYWdlQ2xh
c3NJbmRleF07CisgICAgY29uc3QgdWludDMyX3QgdHlwZUlkICAgICAgID0gaW5zdHJ1Y3Rpb25b
a1R5cGVJZEluZGV4XTsKIAogICAgIC8vIElmIHRoZSBzdG9yYWdlIGNsYXNzIGlzIG91dHB1dCwg
dGhpcyBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYSB2YXJpYWJsZSBjb3JyZXNwb25kaW5nIHRvIGFu
CiAgICAgLy8gaW5hY3RpdmUgdmFyeWluZywgb3IgaWYgdGhhdCB2YXJ5aW5nIGlzIGEgc3RydWN0
LCBhbiBPcCpBY2Nlc3NDaGFpbiByZXRyaWV2aW5nIGEgZmllbGQgb2YKQEAgLTE1ODAsMTQgKzE2
MzYsOSBAQCBib29sIFNwaXJ2VHJhbnNmb3JtZXI6OnRyYW5zZm9ybVR5cGVQb2ludGVyKGNvbnN0
IHVpbnQzMl90ICppbnN0cnVjdGlvbiwgc2l6ZV90CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICAvLyBDYW5ub3QgY3JlYXRlIGEgUHJpdmF0ZSB0eXBlIGRlY2xhcmF0aW9uIGZy
b20gdGhlIGJ1aWx0aW4gZ2xfUGVyVmVydGV4LiAgTm90ZSB0aGF0Ci0gICAgLy8gbVZhcmlhYmxl
SW5mb0J5SWQgaXMgb25seSBldmVyIHNldCBmb3IgdmFyaWFibGVzLCBleGNlcHQgZm9yIG5hbWVs
ZXNzIGludGVyZmFjZSBibG9ja3MgYW5kCi0gICAgLy8gdGhlIGJ1aWx0aW4gZ2xfUGVyVmVydGV4
LiAgU2luY2UgdGhlIHN0b3JhZ2UgY2xhc3MgaXMgT3V0cHV0LCBpZiBtVmFyaWFibGVJbmZvQnlJ
ZCBmb3IgdGhpcwotICAgIC8vIHR5cGUgaXMgbm90IG51bGxwdHIsIHRoaXMgbXVzdCBiZSBhIGJ1
aWx0aW4uCi0gICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICppbmZvID0gbVZh
cmlhYmxlSW5mb0J5SWRbaWRdOwotICAgIGlmIChpbmZvKQorICAgIC8vIENhbm5vdCBjcmVhdGUg
YSBQcml2YXRlIHR5cGUgZGVjbGFyYXRpb24gZnJvbSBidWlsdGlucyBzdWNoIGFzIGdsX1BlclZl
cnRleC4KKyAgICBpZiAobU5hbWVzQnlJZFt0eXBlSWRdICE9IG51bGxwdHIgJiYgYW5nbGU6OkJl
Z2luc1dpdGgobU5hbWVzQnlJZFt0eXBlSWRdLCAiZ2xfIikpCiAgICAgewotICAgICAgICBBU1NF
UlQoaW5mbyA9PSAmbUJ1aWx0aW5WYXJpYWJsZUluZm8pOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0xNjk0LDExICsxNzQ1LDcgQEAgdWludDMyX3QgU3BpcnZUcmFuc2Zvcm1l
cjo6Z2V0TmV3SWQoKQogCiBjb25zdCB1aW50MzJfdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUlu
Zm86OmtJbnZhbGlkOwogCi1TaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm86OlNoYWRlckludGVy
ZmFjZVZhcmlhYmxlSW5mbygpCi17Ci0gICAgbG9jYXRpb24uZmlsbChrSW52YWxpZCk7Ci0gICAg
Y29tcG9uZW50LmZpbGwoa0ludmFsaWQpOwotfQorU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZv
OjpTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8oKSB7fQogCiB2b2lkIEdsc2xhbmdJbml0aWFs
aXplKCkKIHsKQEAgLTE3MTIsNiArMTc1OSw0NCBAQCB2b2lkIEdsc2xhbmdSZWxlYXNlKCkKICAg
ICBBU1NFUlQocmVzdWx0ICE9IDApOwogfQogCisvLyBTdHJpcCBpbmRpY2VzIGZyb20gdGhlIG5h
bWUuICBJZiB0aGVyZSBhcmUgbm9uLXplcm8gaW5kaWNlcywgcmV0dXJuIGZhbHNlIHRvIGluZGlj
YXRlIHRoYXQgdGhpcworLy8gaW1hZ2UgdW5pZm9ybSBkb2Vzbid0IHJlcXVpcmUgc2V0L2JpbmRp
bmcuICBUaGF0IGlzIGRvbmUgb24gaW5kZXggMC4KK2Jvb2wgR2V0SW1hZ2VOYW1lV2l0aG91dElu
ZGljZXMoc3RkOjpzdHJpbmcgKm5hbWUpCit7CisgICAgaWYgKG5hbWUtPmJhY2soKSAhPSAnXScp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIVVuaWZvcm1O
YW1lSXNJbmRleFplcm8oKm5hbWUsIGZhbHNlKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICAvLyBTdHJpcCBhbGwgaW5kaWNlcworICAgICpuYW1lID0gbmFtZS0+
c3Vic3RyKDAsIG5hbWUtPmZpbmQoJ1snKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0ZDo6
c3RyaW5nIEdldE1hcHBlZFNhbXBsZXJOYW1lT2xkKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5h
bE5hbWUpCit7CisgICAgc3RkOjpzdHJpbmcgc2FtcGxlck5hbWUgPSBnbDo6UGFyc2VSZXNvdXJj
ZU5hbWUob3JpZ2luYWxOYW1lLCBudWxscHRyKTsKKworICAgIC8vIFNhbXBsZXJzIGluIHN0cnVj
dHMgYXJlIGV4dHJhY3RlZC4KKyAgICBzdGQ6OnJlcGxhY2Uoc2FtcGxlck5hbWUuYmVnaW4oKSwg
c2FtcGxlck5hbWUuZW5kKCksICcuJywgJ18nKTsKKworICAgIC8vIFNhbXBsZXJzIGluIGFycmF5
cyBvZiBzdHJ1Y3RzIGFyZSBhbHNvIGV4dHJhY3RlZC4KKyAgICBzdGQ6OnJlcGxhY2Uoc2FtcGxl
ck5hbWUuYmVnaW4oKSwgc2FtcGxlck5hbWUuZW5kKCksICdbJywgJ18nKTsKKyAgICBzYW1wbGVy
TmFtZS5lcmFzZShzdGQ6OnJlbW92ZShzYW1wbGVyTmFtZS5iZWdpbigpLCBzYW1wbGVyTmFtZS5l
bmQoKSwgJ10nKSwgc2FtcGxlck5hbWUuZW5kKCkpOworCisgICAgaWYgKE1hcHBlZFNhbXBsZXJO
YW1lTmVlZHNVc2VyRGVmaW5lZFByZWZpeChvcmlnaW5hbE5hbWUpKQorICAgIHsKKyAgICAgICAg
c2FtcGxlck5hbWUgPSBzaDo6a1VzZXJEZWZpbmVkTmFtZVByZWZpeCArIHNhbXBsZXJOYW1lOwor
ICAgIH0KKworICAgIHJldHVybiBzYW1wbGVyTmFtZTsKK30KKwogc3RkOjpzdHJpbmcgR2xzbGFu
Z0dldE1hcHBlZFNhbXBsZXJOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZvcmlnaW5hbE5hbWUpCiB7
CiAgICAgc3RkOjpzdHJpbmcgc2FtcGxlck5hbWUgPSBvcmlnaW5hbE5hbWU7CkBAIC0xNzQ3LDI1
ICsxODMyLDI1IEBAIHN0ZDo6c3RyaW5nIEdsc2xhbmdHZXRNYXBwZWRTYW1wbGVyTmFtZShjb25z
dCBzdGQ6OnN0cmluZyAmb3JpZ2luYWxOYW1lKQogICAgIHJldHVybiBzYW1wbGVyTmFtZTsKIH0K
IAotdm9pZCBHbHNsYW5nR2V0U2hhZGVyU291cmNlKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25z
ICZvcHRpb25zLAorc3RkOjpzdHJpbmcgR2V0WGZiQnVmZmVyTmFtZShjb25zdCB1aW50MzJfdCBi
dWZmZXJJbmRleCkKK3sKKyAgICByZXR1cm4gInhmYkJ1ZmZlciIgKyBTdHIoYnVmZmVySW5kZXgp
OworfQorCit2b2lkIEdsc2xhbmdHZXRTaGFkZXJTb3VyY2UoR2xzbGFuZ1NvdXJjZU9wdGlvbnMg
Jm9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1T
dGF0ZSAmcHJvZ3JhbVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvICpwcm9ncmFtSW50ZXJmYWNlSW5m
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5n
PiAqc2hhZGVyU291cmNlc091dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJ
bnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlh
YmxlSW5mb01hcE91dCkKIHsKLSAgICB2YXJpYWJsZUluZm9NYXBPdXQtPmNsZWFyKCk7Ci0KLSAg
ICB1aW50MzJfdCBsb2NhdGlvbnNVc2VkRm9yWGZiRXh0ZW5zaW9uID0gMDsKLQogICAgIGZvciAo
Y29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQog
ICAgIHsKICAgICAgICAgZ2w6OlNoYWRlciAqZ2xTaGFkZXIgICAgICAgICAgICA9IHByb2dyYW1T
dGF0ZS5nZXRBdHRhY2hlZFNoYWRlcihzaGFkZXJUeXBlKTsKICAgICAgICAgKCpzaGFkZXJTb3Vy
Y2VzT3V0KVtzaGFkZXJUeXBlXSA9IGdsU2hhZGVyID8gZ2xTaGFkZXItPmdldFRyYW5zbGF0ZWRT
b3VyY2UoKSA6ICIiOwogICAgIH0KIAotICAgIHN0ZDo6c3RyaW5nICp2ZXJ0ZXhTb3VyY2UgICAg
ICAgICA9ICYoKnNoYWRlclNvdXJjZXNPdXQpW2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXhdOwotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNvdXJjZSA9ICgqc2hhZGVyU291cmNlc091dClb
Z2w6OlNoYWRlclR5cGU6OkZyYWdtZW50XTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmY29tcHV0
ZVNvdXJjZSAgPSAoKnNoYWRlclNvdXJjZXNPdXQpW2dsOjpTaGFkZXJUeXBlOjpDb21wdXRlXTsK
KyAgICBzdGQ6OnN0cmluZyAqdmVydGV4U291cmNlID0gJigqc2hhZGVyU291cmNlc091dClbZ2w6
OlNoYWRlclR5cGU6OlZlcnRleF07CiAKICAgICAvLyBXcml0ZSB0cmFuc2Zvcm0gZmVlZGJhY2sg
b3V0cHV0IGNvZGUuCiAgICAgaWYgKCF2ZXJ0ZXhTb3VyY2UtPmVtcHR5KCkpCkBAIC0xNzc4LDc0
ICsxODYzLDk2IEBAIHZvaWQgR2xzbGFuZ0dldFNoYWRlclNvdXJjZShjb25zdCBHbHNsYW5nU291
cmNlT3B0aW9ucyAmb3B0aW9ucywKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG9wdGlvbnMu
c3VwcG9ydHNUcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvbikKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBHZW5lcmF0ZVRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uT3V0cHV0cyhwcm9n
cmFtU3RhdGUsIHJlc291cmNlcywgdmVydGV4U291cmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5mb01hcE91dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgR2VuZXJh
dGVUcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvbk91dHB1dHMoCisgICAgICAgICAgICAgICAgICAg
IHByb2dyYW1TdGF0ZSwgcmVzb3VyY2VzLCB2ZXJ0ZXhTb3VyY2UsCisgICAgICAgICAgICAgICAg
ICAgICZwcm9ncmFtSW50ZXJmYWNlSW5mby0+bG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lvbik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLmVtdWxhdGVUcmFu
c2Zvcm1GZWVkYmFjaykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZVRy
YW5zZm9ybUZlZWRiYWNrRW11bGF0aW9uT3V0cHV0cyhvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHZl
cnRleFNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZUluZm9NYXBPdXQpOworICAgICAgICAgICAgICAgIEdlbmVy
YXRlVHJhbnNmb3JtRmVlZGJhY2tFbXVsYXRpb25PdXRwdXRzKAorICAgICAgICAgICAgICAgICAg
ICBvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHByb2dyYW1JbnRlcmZhY2VJbmZvLCB2ZXJ0ZXhTb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICYoKnZhcmlhYmxlSW5mb01hcE91dClbZ2w6OlNoYWRl
clR5cGU6OlZlcnRleF0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAg
Y29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZleGVjdXRhYmxlID0gcHJvZ3JhbVN0YXRlLmdl
dFByb2dyYW1FeGVjdXRhYmxlKCk7CisKICAgICAvLyBBc3NpZ24gb3V0cHV0cyB0byB0aGUgZnJh
Z21lbnQgc2hhZGVyLCBpZiBhbnkuCi0gICAgaWYgKCFmcmFnbWVudFNvdXJjZS5lbXB0eSgpKQor
ICAgIGlmIChwcm9ncmFtU3RhdGUuZ2V0QXR0YWNoZWRTaGFkZXIoZ2w6OlNoYWRlclR5cGU6OkZy
YWdtZW50KSB8fAorICAgICAgICBleGVjdXRhYmxlLmhhc0xpbmtlZFNoYWRlclN0YWdlKGdsOjpT
aGFkZXJUeXBlOjpGcmFnbWVudCkpCiAgICAgewotICAgICAgICBBc3NpZ25PdXRwdXRMb2NhdGlv
bnMocHJvZ3JhbVN0YXRlLCB2YXJpYWJsZUluZm9NYXBPdXQpOworICAgICAgICBBc3NpZ25PdXRw
dXRMb2NhdGlvbnMocHJvZ3JhbVN0YXRlLCBnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmKCp2YXJpYWJsZUluZm9NYXBPdXQpW2dsOjpTaGFk
ZXJUeXBlOjpGcmFnbWVudF0pOwogICAgIH0KIAogICAgIC8vIEFzc2lnbiBhdHRyaWJ1dGVzIHRv
IHRoZSB2ZXJ0ZXggc2hhZGVyLCBpZiBhbnkuCi0gICAgaWYgKCF2ZXJ0ZXhTb3VyY2UtPmVtcHR5
KCkpCisgICAgaWYgKHByb2dyYW1TdGF0ZS5nZXRBdHRhY2hlZFNoYWRlcihnbDo6U2hhZGVyVHlw
ZTo6VmVydGV4KSB8fAorICAgICAgICBleGVjdXRhYmxlLmhhc0xpbmtlZFNoYWRlclN0YWdlKGds
OjpTaGFkZXJUeXBlOjpWZXJ0ZXgpKQogICAgIHsKLSAgICAgICAgQXNzaWduQXR0cmlidXRlTG9j
YXRpb25zKHByb2dyYW1TdGF0ZSwgdmFyaWFibGVJbmZvTWFwT3V0KTsKKyAgICAgICAgQXNzaWdu
QXR0cmlidXRlTG9jYXRpb25zKHByb2dyYW1TdGF0ZSwgZ2w6OlNoYWRlclR5cGU6OlZlcnRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKnZhcmlhYmxlSW5mb01hcE91dClb
Z2w6OlNoYWRlclR5cGU6OlZlcnRleF0pOwogICAgIH0KIAotICAgIGlmIChjb21wdXRlU291cmNl
LmVtcHR5KCkpCisgICAgaWYgKCFwcm9ncmFtU3RhdGUuZ2V0QXR0YWNoZWRTaGFkZXIoZ2w6OlNo
YWRlclR5cGU6OkNvbXB1dGUpICYmCisgICAgICAgICFleGVjdXRhYmxlLmhhc0xpbmtlZFNoYWRl
clN0YWdlKGdsOjpTaGFkZXJUeXBlOjpDb21wdXRlKSkKICAgICB7CiAgICAgICAgIC8vIEFzc2ln
biB2YXJ5aW5nIGxvY2F0aW9ucy4KLSAgICAgICAgQXNzaWduVmFyeWluZ0xvY2F0aW9ucyhvcHRp
b25zLCBwcm9ncmFtU3RhdGUsIHJlc291cmNlcywgbG9jYXRpb25zVXNlZEZvclhmYkV4dGVuc2lv
biwKKyAgICAgICAgQXNzaWduVmFyeWluZ0xvY2F0aW9ucyhvcHRpb25zLCBwcm9ncmFtU3RhdGUs
IHJlc291cmNlcywgcHJvZ3JhbUludGVyZmFjZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGVJbmZvTWFwT3V0KTsKIAogICAgICAgICBpZiAoIXByb2dyYW1TdGF0
ZS5nZXRMaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCkuZW1wdHkoKSAmJgogICAgICAg
ICAgICAgb3B0aW9ucy5zdXBwb3J0c1RyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBc3NpZ25UcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvblF1YWxpZmll
cnMoCi0gICAgICAgICAgICAgICAgcHJvZ3JhbVN0YXRlLCByZXNvdXJjZXMsIGxvY2F0aW9uc1Vz
ZWRGb3JYZmJFeHRlbnNpb24sIHZhcmlhYmxlSW5mb01hcE91dCk7CisgICAgICAgICAgICAgICAg
cHJvZ3JhbVN0YXRlLCByZXNvdXJjZXMsIHByb2dyYW1JbnRlcmZhY2VJbmZvLT5sb2NhdGlvbnNV
c2VkRm9yWGZiRXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJUeXBlOjpWZXJ0
ZXgsICYoKnZhcmlhYmxlSW5mb01hcE91dClbZ2w6OlNoYWRlclR5cGU6OlZlcnRleF0pOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgQXNzaWduVW5pZm9ybUJpbmRpbmdzKG9wdGlvbnMsIHNoYWRl
clNvdXJjZXNPdXQsIHZhcmlhYmxlSW5mb01hcE91dCk7Ci0gICAgQXNzaWduVGV4dHVyZUJpbmRp
bmdzKG9wdGlvbnMsIHByb2dyYW1TdGF0ZSwgdmFyaWFibGVJbmZvTWFwT3V0KTsKLSAgICBBc3Np
Z25Ob25UZXh0dXJlQmluZGluZ3Mob3B0aW9ucywgcHJvZ3JhbVN0YXRlLCB2YXJpYWJsZUluZm9N
YXBPdXQpOworICAgIEFzc2lnblVuaWZvcm1CaW5kaW5ncyhvcHRpb25zLCBwcm9ncmFtU3RhdGUs
IHByb2dyYW1JbnRlcmZhY2VJbmZvLCB2YXJpYWJsZUluZm9NYXBPdXQpOworICAgIEFzc2lnblRl
eHR1cmVCaW5kaW5ncyhvcHRpb25zLCBwcm9ncmFtU3RhdGUsIHByb2dyYW1JbnRlcmZhY2VJbmZv
LCB2YXJpYWJsZUluZm9NYXBPdXQpOworICAgIEFzc2lnbk5vblRleHR1cmVCaW5kaW5ncyhvcHRp
b25zLCBwcm9ncmFtU3RhdGUsIHByb2dyYW1JbnRlcmZhY2VJbmZvLCB2YXJpYWJsZUluZm9NYXBP
dXQpOworfQorCithbmdsZTo6UmVzdWx0IFRyYW5zZm9ybVNwaXJ2Q29kZShjb25zdCBHbHNsYW5n
RXJyb3JDYWxsYmFjayAmY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJs
ZUluZm9NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGlydkJs
b2IgJmluaXRpYWxTcGlydkJsb2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
cGlydkJsb2IgKnNwaXJ2QmxvYk91dCkKK3sKKyAgICBpZiAoaW5pdGlhbFNwaXJ2QmxvYi5lbXB0
eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAg
IH0KKworICAgIC8vIFRyYW5zZm9ybSB0aGUgU1BJUi1WIGNvZGUgYnkgYXNzaWduaW5nIGxvY2F0
aW9uL3NldC9iaW5kaW5nIHZhbHVlcy4KKyAgICBTcGlydlRyYW5zZm9ybWVyIHRyYW5zZm9ybWVy
KGluaXRpYWxTcGlydkJsb2IsIHZhcmlhYmxlSW5mb01hcCwgc2hhZGVyVHlwZSwgc3BpcnZCbG9i
T3V0KTsKKyAgICBBTkdMRV9HTFNMQU5HX0NIRUNLKGNhbGxiYWNrLCB0cmFuc2Zvcm1lci50cmFu
c2Zvcm0oKSwgR2xzbGFuZ0Vycm9yOjpJbnZhbGlkU3BpcnYpOworCisgICAgQVNTRVJUKFZhbGlk
YXRlU3BpcnYoKnNwaXJ2QmxvYk91dCkpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwogfQogCi1hbmdsZTo6UmVzdWx0IEdsc2xhbmdHZXRTaGFkZXJTcGlydkNvZGUoR2xz
bGFuZ0Vycm9yQ2FsbGJhY2sgY2FsbGJhY2ssCithbmdsZTo6UmVzdWx0IEdsc2xhbmdHZXRTaGFk
ZXJTcGlydkNvZGUoY29uc3QgR2xzbGFuZ0Vycm9yQ2FsbGJhY2sgJmNhbGxiYWNrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZnbENhcHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRl
ck1hcDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2
YXJpYWJsZUluZm9NYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxT
cGlydkJsb2I+ICpzcGlydkJsb2JzT3V0KQogewotICAgIGdsOjpTaGFkZXJNYXA8c3RkOjp2ZWN0
b3I8dWludDMyX3Q+PiBpbml0aWFsU3BpcnZCbG9iczsKKyAgICBnbDo6U2hhZGVyTWFwPFNwaXJ2
QmxvYj4gaW5pdGlhbFNwaXJ2QmxvYnM7CiAgICAgQU5HTEVfVFJZKEdldFNoYWRlclNwaXJ2Q29k
ZShjYWxsYmFjaywgZ2xDYXBzLCBzaGFkZXJTb3VyY2VzLCAmaW5pdGlhbFNwaXJ2QmxvYnMpKTsK
IAotICAgIC8vIFRyYW5zZm9ybSB0aGUgU1BJUi1WIGNvZGUgYnkgYXNzaWduaW5nIGxvY2F0aW9u
L3NldC9iaW5kaW5nIHZhbHVlcy4KICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRl
clR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiBpbml0aWFsU3BpcnZCbG9iID0gaW5pdGlhbFNwaXJ2QmxvYnNbc2hh
ZGVyVHlwZV07Ci0KLSAgICAgICAgaWYgKGluaXRpYWxTcGlydkJsb2IuZW1wdHkoKSkKKyAgICAg
ICAgYW5nbGU6OlJlc3VsdCBzdGF0dXMgPQorICAgICAgICAgICAgVHJhbnNmb3JtU3BpcnZDb2Rl
KGNhbGxiYWNrLCBzaGFkZXJUeXBlLCB2YXJpYWJsZUluZm9NYXBbc2hhZGVyVHlwZV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFNwaXJ2QmxvYnNbc2hhZGVyVHlwZV0s
ICYoKnNwaXJ2QmxvYnNPdXQpW3NoYWRlclR5cGVdKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBh
bmdsZTo6UmVzdWx0OjpDb250aW51ZSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgICAgICB9Ci0KLSAgICAgICAgU3BpcnZC
bG9iICpzcGlydkJsb2IgPSAmKCpzcGlydkJsb2JzT3V0KVtzaGFkZXJUeXBlXTsKLQotICAgICAg
ICBTcGlydlRyYW5zZm9ybWVyIHRyYW5zZm9ybWVyKGluaXRpYWxTcGlydkJsb2IsIHZhcmlhYmxl
SW5mb01hcCwgc2hhZGVyVHlwZSwgc3BpcnZCbG9iKTsKLSAgICAgICAgQU5HTEVfR0xTTEFOR19D
SEVDSyhjYWxsYmFjaywgdHJhbnNmb3JtZXIudHJhbnNmb3JtKCksIEdsc2xhbmdFcnJvcjo6SW52
YWxpZFNwaXJ2KTsKLQotICAgICAgICBBU1NFUlQoVmFsaWRhdGVTcGlydigqc3BpcnZCbG9iKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdf
d3JhcHBlcl91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsc2xhbmdfd3JhcHBlcl91dGlscy5oCmluZGV4IDNmODE3YjAyMjY1ZjIzNTZhMzZl
ZmVkYTA2YjY3MTc0MWEzMmRiOWYuLmVhYTlmZmY5YzI4MzgxMDE5OGRhMzQzZWU4N2YzODQ1Zjlk
ZDllZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2xzbGFuZ193cmFwcGVyX3V0aWxzLmgKQEAgLTIx
LDIwICsyMSwzMiBAQCBlbnVtIGNsYXNzIEdsc2xhbmdFcnJvcgogICAgIEludmFsaWRTcGlydiwK
IH07CiAKLXN0cnVjdCBHbHNsYW5nU291cmNlT3B0aW9ucworY29uc3RleHByIGdsOjpTaGFkZXJN
YXA8Y29uc3QgY2hhciAqPiBrRGVmYXVsdFVuaWZvcm1OYW1lcyA9IHsKKyAgICB7Z2w6OlNoYWRl
clR5cGU6OlZlcnRleCwgc2g6OnZrOjprRGVmYXVsdFVuaWZvcm1zTmFtZVZTfSwKKyAgICB7Z2w6
OlNoYWRlclR5cGU6Okdlb21ldHJ5LCBzaDo6dms6OmtEZWZhdWx0VW5pZm9ybXNOYW1lR1N9LAor
ICAgIHtnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQsIHNoOjp2azo6a0RlZmF1bHRVbmlmb3Jtc05h
bWVGU30sCisgICAge2dsOjpTaGFkZXJUeXBlOjpDb21wdXRlLCBzaDo6dms6OmtEZWZhdWx0VW5p
Zm9ybXNOYW1lQ1N9LAorfTsKKworc3RydWN0IEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbwog
ewogICAgIC8vIFVuaWZvcm1zIHNldCBpbmRleDoKLSAgICB1aW50MzJfdCB1bmlmb3Jtc0FuZFhm
YkRlc2NyaXB0b3JTZXRJbmRleCA9IDA7CisgICAgdWludDMyX3QgdW5pZm9ybXNBbmRYZmJEZXNj
cmlwdG9yU2V0SW5kZXg7CisgICAgdWludDMyX3QgY3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXg7
CiAgICAgLy8gVGV4dHVyZXMgc2V0IGluZGV4OgotICAgIHVpbnQzMl90IHRleHR1cmVEZXNjcmlw
dG9yU2V0SW5kZXggPSAxOworICAgIHVpbnQzMl90IHRleHR1cmVEZXNjcmlwdG9yU2V0SW5kZXg7
CisgICAgdWludDMyX3QgY3VycmVudFRleHR1cmVCaW5kaW5nSW5kZXg7CiAgICAgLy8gT3RoZXIg
c2hhZGVyIHJlc291cmNlcyBzZXQgaW5kZXg6Ci0gICAgdWludDMyX3Qgc2hhZGVyUmVzb3VyY2VE
ZXNjcmlwdG9yU2V0SW5kZXggPSAyOworICAgIHVpbnQzMl90IHNoYWRlclJlc291cmNlRGVzY3Jp
cHRvclNldEluZGV4OworICAgIHVpbnQzMl90IGN1cnJlbnRTaGFkZXJSZXNvdXJjZUJpbmRpbmdJ
bmRleDsKICAgICAvLyBBTkdMRSBkcml2ZXIgdW5pZm9ybXMgc2V0IGluZGV4OgotICAgIHVpbnQz
Ml90IGRyaXZlclVuaWZvcm1zRGVzY3JpcHRvclNldEluZGV4ID0gMzsKKyAgICB1aW50MzJfdCBk
cml2ZXJVbmlmb3Jtc0Rlc2NyaXB0b3JTZXRJbmRleDsKIAotICAgIC8vIEJpbmRpbmcgaW5kZXgg
c3RhcnQgZm9yIHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXJzOgotICAgIHVpbnQzMl90IHhmYkJp
bmRpbmdJbmRleFN0YXJ0ID0gMTY7CisgICAgdWludDMyX3QgbG9jYXRpb25zVXNlZEZvclhmYkV4
dGVuc2lvbjsKK307CiAKK3N0cnVjdCBHbHNsYW5nU291cmNlT3B0aW9ucworewogICAgIGJvb2wg
dXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzICAgICAgICA9IGZhbHNlOwogICAgIGJvb2wgc3Vw
cG9ydHNUcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvbiA9IGZhbHNlOwogICAgIGJvb2wgZW11bGF0
ZVRyYW5zZm9ybUZlZWRiYWNrICAgICAgICAgICA9IGZhbHNlOwpAQCAtNjEsOCArNzMsOCBAQCBz
dHJ1Y3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvCiAgICAgLy8gdmFyaWFibGVzIHRoYXQg
c2hhcmUgdGhlIHNhbWUgbmFtZSwgc3VjaCBhcyBhIHZlcnRleCBhdHRyaWJ1dGUgYW5kIGEgZnJh
Z21lbnQgb3V0cHV0LiAgVGhleQogICAgIC8vIHdpbGwgc2hhcmUgdGhpcyBvYmplY3Qgc2luY2Ug
dGhleSBoYXZlIHRoZSBzYW1lIG5hbWUsIGJ1dCB3aWxsIGZpbmQgcG9zc2libHkgZGlmZmVyZW50
CiAgICAgLy8gbG9jYXRpb25zIGluIHRoZWlyIHJlc3BlY3RpdmUgc2xvdHMuCi0gICAgZ2w6OlNo
YWRlck1hcDx1aW50MzJfdD4gbG9jYXRpb247Ci0gICAgZ2w6OlNoYWRlck1hcDx1aW50MzJfdD4g
Y29tcG9uZW50OworICAgIHVpbnQzMl90IGxvY2F0aW9uICA9IGtJbnZhbGlkOworICAgIHVpbnQz
Ml90IGNvbXBvbmVudCA9IGtJbnZhbGlkOwogICAgIC8vIFRoZSBzdGFnZXMgdGhpcyBzaGFkZXIg
aW50ZXJmYWNlIHZhcmlhYmxlIGlzIGFjdGl2ZS4KICAgICBnbDo6U2hhZGVyQml0U2V0IGFjdGl2
ZVN0YWdlczsKICAgICAvLyBVc2VkIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgZXh0ZW5zaW9uIHRv
IGRlY29yYXRlIHZlcnRleCBzaGFkZXIgb3V0cHV0LgpAQCAtNzEsMjggKzgzLDQyIEBAIHN0cnVj
dCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8KICAgICB1aW50MzJfdCB4ZmJTdHJpZGUgPSBr
SW52YWxpZDsKIH07CiAKKy8vIFRPRE86IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDUyNDogTmVlZCBh
IGRpZmZlcmVudCBoYXNoIGtleSB0aGFuIGEgc3RyaW5nLCBzaW5jZQorLy8gdGhhdCdzIHNsb3cg
dG8gY2FsY3VsYXRlLgogdXNpbmcgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwID0gc3Rk
Ojp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8+
OwordXNpbmcgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwID0gZ2w6OlNoYWRlck1h
cDxTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXA+OwogCiB2b2lkIEdsc2xhbmdJbml0aWFs
aXplKCk7CiB2b2lkIEdsc2xhbmdSZWxlYXNlKCk7CiAKK2Jvb2wgR2V0SW1hZ2VOYW1lV2l0aG91
dEluZGljZXMoc3RkOjpzdHJpbmcgKm5hbWUpOworCiAvLyBHZXQgdGhlIG1hcHBlZCBzYW1wbGVy
IG5hbWUgYWZ0ZXIgdGhlIHNvdXJlIGlzIHRyYW5zZm9ybWVkIGJ5IEdsc2xhbmdHZXRTaGFkZXJT
b3VyY2UoKQorc3RkOjpzdHJpbmcgR2V0TWFwcGVkU2FtcGxlck5hbWVPbGQoY29uc3Qgc3RkOjpz
dHJpbmcgJm9yaWdpbmFsTmFtZSk7CiBzdGQ6OnN0cmluZyBHbHNsYW5nR2V0TWFwcGVkU2FtcGxl
ck5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm9yaWdpbmFsTmFtZSk7CitzdGQ6OnN0cmluZyBHZXRY
ZmJCdWZmZXJOYW1lKGNvbnN0IHVpbnQzMl90IGJ1ZmZlckluZGV4KTsKIAogLy8gVHJhbnNmb3Jt
IHRoZSBzb3VyY2UgdG8gaW5jbHVkZSBhY3R1YWwgYmluZGluZyBwb2ludHMgZm9yIHZhcmlvdXMg
c2hhZGVyIHJlc291cmNlcyAodGV4dHVyZXMsCiAvLyBidWZmZXJzLCB4ZmIsIGV0YykuICBGb3Ig
c29tZSB2YXJpYWJsZXMsIHRoZXNlIHZhbHVlcyBhcmUgaW5zdGVhZCBvdXRwdXQgdG8gdGhlIHZh
cmlhYmxlSW5mb01hcAogLy8gdG8gYmUgc2V0IGR1cmluZyBhIFNQSVItViB0cmFuc2Zvcm1hdGlv
bi4gIFRoaXMgaXMgYSB0cmFuc2l0b3J5IHN0ZXAgdG93YXJkcyBtb3ZpbmcgYWxsIHZhcmlhYmxl
cwogLy8gdG8gdGhpcyBtYXAsIGF0IHdoaWNoIHBvaW50IEdsc2xhbmdHZXRTaGFkZXJTcGlydkNv
ZGUgd2lsbCBhbHNvIGJlIGNhbGxlZCBieSB0aGlzIGZ1bmN0aW9uLgotdm9pZCBHbHNsYW5nR2V0
U2hhZGVyU291cmNlKGNvbnN0IEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAordm9pZCBH
bHNsYW5nR2V0U2hhZGVyU291cmNlKEdsc2xhbmdTb3VyY2VPcHRpb25zICZvcHRpb25zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1T
dGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbUxpbmtl
ZFJlc291cmNlcyAmcmVzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsc2xh
bmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAqcHJvZ3JhbUludGVyZmFjZUluZm8sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gKnNoYWRlclNvdXJj
ZXNPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFi
bGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0
KTsKKworYW5nbGU6OlJlc3VsdCBUcmFuc2Zvcm1TcGlydkNvZGUoY29uc3QgR2xzbGFuZ0Vycm9y
Q2FsbGJhY2sgJmNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZv
TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
dWludDMyX3Q+ICZpbml0aWFsU3BpcnZCbG9iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3BpcnZCbG9iICpzcGlydkJsb2JPdXQpOwogCi1hbmdsZTo6UmVzdWx0IEdsc2xhbmdH
ZXRTaGFkZXJTcGlydkNvZGUoR2xzbGFuZ0Vycm9yQ2FsbGJhY2sgY2FsbGJhY2ssCithbmdsZTo6
UmVzdWx0IEdsc2xhbmdHZXRTaGFkZXJTcGlydkNvZGUoY29uc3QgR2xzbGFuZ0Vycm9yQ2FsbGJh
Y2sgJmNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpDYXBzICZnbENhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVySW50ZXJm
YWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZv
TWFwICZ2YXJpYWJsZUluZm9NYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OlNoYWRlck1hcDxTcGlydkJsb2I+ICpzcGlydkJsb2JzT3V0KTsKIAogfSAgLy8g
bmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgpp
bmRleCAxN2RiMGEyYjI1YzI4ZmE3ZTFhN2M3ZTgwOTZjNzY5YTUzYzE3NDU2Li5iZDU1NzAwOWZk
NTNjZTQ2ZDBmNTJiYmU2MGY1MGRlMWNiNGM5NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29u
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2Fk
X2Z1bmN0aW9uc19kYXRhLmpzb24KQEAgLTY1MCw2ICs2NTAsOSBAQAogICAgIH0KICAgfSwKICAg
IkdMX0RFUFRIX0NPTVBPTkVOVDI0IjogeworICAgICJEMjRfVU5PUk1fWDhfVUlOVCI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9JTlQiOiAiTG9hZFIzMlRvUjI0RzgiCisgICAgfSwKICAgICAiRDI0
X1VOT1JNX1M4X1VJTlQiOiB7CiAgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkxvYWRSMzJUb1Iy
NEc4IgogICAgIH0sCkBAIC04NzUsNiArODc4LDI2IEBACiAgICAgICAiR0xfVU5TSUdORURfQllU
RSI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDEsIDE2PiIKICAgICB9CiAgIH0sCisg
ICJHTF9DT01QUkVTU0VEX1JFRF9SR1RDMV9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAi
R0xfVU5TSUdORURfQllURSI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDEsIDg+Igor
ICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQiOiB7Cisg
ICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkQ29tcHJlc3NlZFRv
TmF0aXZlPDQsIDQsIDEsIDg+IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRF
IjogIkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgMSwgMTY+IgorICAgIH0KKyAgfSwKKyAg
IkdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQiOiB7CisgICAgIk5PTkUi
OiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQs
IDQsIDEsIDE2PiIKKyAgICB9CisgIH0sCiAgICJHTF9DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9S
TV9FWFQiOiB7CiAgICAgIk5PTkUiOiB7CiAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2Fk
Q29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDEsIDE2PiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9h
dXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcAppbmRleCAwMzQ0MDA3ZmMzMDBkMWVl
YWI1MTYxZWJiNmI1NzcxMDUyZjMwZDk4Li5mNTc3YmI4MTU4MDcwYTUwYTM3M2E2ZDRhOTdhODE4
MmE3ZWQyMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3Rh
YmxlX2F1dG9nZW4uY3BwCkBAIC0zMzgsNiArMzM4LDMwIEBAIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byBDT01QUkVTU0VEX1IxMV9FQUNfdG9fUjE2X1VOT1JNKEdMZW51bSB0eXBlKQogICAgIH0KIH0K
IAorTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVF90
b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxLCAxNj4sIHRydWUpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRy
dWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkVEX1JH
VEMxX0VYVF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxLCA4Piwg
dHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5j
dGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NF
RF9SRzExX0VBQ190b19FQUNfUjExRzExX1VOT1JNX0JMT0NLKEdMZW51bSB0eXBlKQogewogICAg
IHN3aXRjaCAodHlwZSkKQEAgLTg4MCw2ICs5MDQsMzAgQEAgTG9hZEltYWdlRnVuY3Rpb25JbmZv
IENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUNfdG9fUjE2X1NOT1JNKEdMZW51bSB0eXBlKQogICAg
IH0KIH0KIAorTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU0lHTkVEX1JFRF9HUkVF
Tl9SR1RDMl9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
CisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1
cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgMSwg
MTY+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01Q
UkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRv
TmF0aXZlPDQsIDQsIDEsIDg+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZv
KFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyBDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQ190b19FQUNfUjExRzExX1NOT1JN
X0JMT0NLKEdMZW51bSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkKQEAgLTE0MzgsNiArMTQ4
NiwxOCBAQCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gREVQVEhfQ09NUE9ORU5UMjRfdG9fRDI0X1VO
T1JNX1M4X1VJTlQoR0xlbnVtIHR5cGUpCiAgICAgfQogfQogCitMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gREVQVEhfQ09NUE9ORU5UMjRfdG9fRDI0X1VOT1JNX1g4X1VJTlQoR0xlbnVtIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1IyNEc4
LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1
bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBERVBUSF9D
T01QT05FTlQyNF90b19EMzJfRkxPQVRfUzhYMjRfVUlOVChHTGVudW0gdHlwZSkKIHsKICAgICBz
d2l0Y2ggKHR5cGUpCkBAIC0zMTc3LDYgKzMyMzcsMTAgQEAgTG9hZEZ1bmN0aW9uTWFwIEdldExv
YWRGdW5jdGlvbnNNYXAoR0xlbnVtIGludGVybmFsRm9ybWF0LCBGb3JtYXRJRCBhbmdsZUZvcm1h
dCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhUOgorICAgICAgICAgICAgcmV0
dXJuIENPTVBSRVNTRURfUkVEX0dSRUVOX1JHVEMyX0VYVF90b19kZWZhdWx0OworICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgICAgIHJldHVybiBDT01Q
UkVTU0VEX1JFRF9SR1RDMV9FWFRfdG9fZGVmYXVsdDsKICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHMTFfRUFDOgogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0
KQpAQCAtMzMzMCw2ICszMzk0LDEwIEBAIExvYWRGdW5jdGlvbk1hcCBHZXRMb2FkRnVuY3Rpb25z
TWFwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgRm9ybWF0SUQgYW5nbGVGb3JtYXQpCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfU0lHTkVEX1JFRF9HUkVFTl9SR1RDMl9FWFQ6CisgICAgICAgICAgICByZXR1cm4g
Q09NUFJFU1NFRF9TSUdORURfUkVEX0dSRUVOX1JHVEMyX0VYVF90b19kZWZhdWx0OworICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JFRF9SR1RDMV9FWFQ6CisgICAgICAgICAgICBy
ZXR1cm4gQ09NUFJFU1NFRF9TSUdORURfUkVEX1JHVEMxX0VYVF90b19kZWZhdWx0OwogICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgogICAgICAgICB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQpAQCAtMzUwNyw2ICszNTc1LDggQEAgTG9hZEZ1bmN0
aW9uTWFwIEdldExvYWRGdW5jdGlvbnNNYXAoR0xlbnVtIGludGVybmFsRm9ybWF0LCBGb3JtYXRJ
RCBhbmdsZUZvcm1hdCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjYXNlIEZvcm1h
dElEOjpEMjRfVU5PUk1fUzhfVUlOVDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFUFRI
X0NPTVBPTkVOVDI0X3RvX0QyNF9VTk9STV9TOF9VSU5UOworICAgICAgICAgICAgICAgIGNhc2Ug
Rm9ybWF0SUQ6OkQyNF9VTk9STV9YOF9VSU5UOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
REVQVEhfQ09NUE9ORU5UMjRfdG9fRDI0X1VOT1JNX1g4X1VJTlQ7CiAgICAgICAgICAgICAgICAg
Y2FzZSBGb3JtYXRJRDo6RDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBERVBUSF9DT01QT05FTlQyNF90b19EMzJfRkxPQVRfUzhYMjRfVUlOVDsKICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0JVSUxELmduCmluZGV4IDljMmY3N2Vl
ZTk1NTBlMDBhMTUyMmEyMjI3OTFiYjMwOGRhNjY5Y2YuLmM4Y2UyMjhhNmQ3MGUzMzQ0MDYwYjJh
MTQyNTBmYzZlZDJlYTE1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQlVJTEQuZ24KQEAgLTE3LDggKzE3
LDggQEAgX21ldGFsX2JhY2tlbmRfc291cmNlcyA9IFsKICAgIkNvbnRleHRNdGwuaCIsCiAgICJD
b250ZXh0TXRsLm1tIiwKICAgIkRpc3BsYXlNdGwuaCIsCi0gICJEaXNwbGF5TXRsX2FwaS5oIiwK
ICAgIkRpc3BsYXlNdGwubW0iLAorICAiRGlzcGxheU10bF9hcGkuaCIsCiAgICJGcmFtZUJ1ZmZl
ck10bC5oIiwKICAgIkZyYW1lQnVmZmVyTXRsLm1tIiwKICAgIlByb2dyYW1NdGwuaCIsCkBAIC01
NCw4ICs1NCw4IEBAIF9tZXRhbF9iYWNrZW5kX3NvdXJjZXMgPSBbCiAgICJtdGxfc3RhdGVfY2Fj
aGUubW0iLAogICAibXRsX3V0aWxzLmgiLAogICAibXRsX3V0aWxzLm1tIiwKLSAgInNoYWRlcnMv
bXRsX2RlZmF1bHRfc2hhZGVyc19zcmNfYXV0b2dlbi5pbmMiLAogICAic2hhZGVycy9jb21waWxl
ZC9tdGxfZGVmYXVsdF9zaGFkZXJzLmluYyIsCisgICJzaGFkZXJzL210bF9kZWZhdWx0X3NoYWRl
cnNfc3JjX2F1dG9nZW4uaW5jIiwKIF0KIAogY29uZmlnKCJhbmdsZV9tZXRhbF9iYWNrZW5kX2Nv
bmZpZyIpIHsKQEAgLTgzLDkgKzgzLDcgQEAgYW5nbGVfc291cmNlX3NldCgiYW5nbGVfbWV0YWxf
YmFja2VuZCIpIHsKICAgICAiJHthbmdsZV9yb290fTpsaWJBTkdMRV9oZWFkZXJzIiwKICAgXQog
Ci0gIGRlcHMgPSBbCi0gICAgIiR7YW5nbGVfc3BpcnZfY3Jvc3NfZGlyfS9nbjpzcGlydl9jcm9z
c19zb3VyY2VzIiwKLSAgXQorICBkZXBzID0gWyAiJHthbmdsZV9zcGlydl9jcm9zc19kaXJ9L2du
OnNwaXJ2X2Nyb3NzX3NvdXJjZXMiIF0KIAogICBvYmpjX2ZsYWdzID0gWwogICAgICItV25vLW51
bGxhYmlsaXR5LWNvbXBsZXRlbmVzcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwuaApp
bmRleCBiNDNkYjNlOGVkMGUwNWUyNjE0Y2QzYTk2NDg1NzMwYmNhNTU2NDg5Li4wMzg3MmE4NjI3
MjRmNGFiZGVlNzg5Y2MyMjAyMWU1NGRmMmNiMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250
ZXh0TXRsLmgKQEAgLTEyMiwxMyArMTIyLDE2IEBAIGNsYXNzIENvbnRleHRNdGwgOiBwdWJsaWMg
Q29udGV4dEltcGwsIHB1YmxpYyBtdGw6OkNvbnRleHQKICAgICBzdGQ6OnN0cmluZyBnZXRSZW5k
ZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBFWFRfZGVidWdfbWFy
a2VyCi0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxl
bmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHBvcEdyb3VwTWFy
a2VyKCkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBpbnNlcnRFdmVudE1hcmtlcihHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVz
dWx0IHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBv
dmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBLSFJfZGVidWcKLSAgICB2b2lkIHB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2Us
IEdMdWludCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpIG92ZXJyaWRlOwotICAgIHZv
aWQgcG9wRGVidWdHcm91cCgpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcHVzaERlYnVn
R3JvdXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJm1lc3NhZ2UpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wRGVidWdH
cm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdGF0
ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KICAgICBhbmdsZTo6UmVzdWx0IHN5bmNTdGF0ZShjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKQEAgLTE4NCw5ICsxODcsNiBAQCBjbGFzcyBDb250ZXh0
TXRsIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgbXRsOjpDb250ZXh0CiAgICAgLy8gUHJv
Z3JhbSBQaXBlbGluZSBvYmplY3QgY3JlYXRpb24KICAgICBQcm9ncmFtUGlwZWxpbmVJbXBsICpj
cmVhdGVQcm9ncmFtUGlwZWxpbmUoY29uc3QgZ2w6OlByb2dyYW1QaXBlbGluZVN0YXRlICZkYXRh
KSBvdmVycmlkZTsKIAotICAgIC8vIFBhdGggb2JqZWN0IGNyZWF0aW9uCi0gICAgc3RkOjp2ZWN0
b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSkgb3ZlcnJpZGU7Ci0KICAgICAvLyBN
ZW1vcnkgb2JqZWN0IGNyZWF0aW9uLgogICAgIE1lbW9yeU9iamVjdEltcGwgKmNyZWF0ZU1lbW9y
eU9iamVjdCgpIG92ZXJyaWRlOwogCkBAIC0zOTAsNiArMzkwLDEwIEBAIGNsYXNzIENvbnRleHRN
dGwgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyBtdGw6OkNvbnRleHQKIAogICAgICAgICAv
LyBXZSdsbCB1c2UgeCwgeSwgeiwgdyBmb3IgbmVhciAvIGZhciAvIGRpZmYgLyB6c2NhbGUgcmVz
cGVjdGl2ZWx5LgogICAgICAgICBmbG9hdCBkZXB0aFJhbmdlWzRdOworCisgICAgICAgIC8vIFVz
ZWQgdG8gcHJlLXJvdGF0ZSBnbF9Qb3NpdGlvbiBmb3IgVnVsa2FuIHN3YXBjaGFpbiBpbWFnZXMg
b24gQW5kcm9pZCAoYSBtYXQyLCB3aGljaCBpcworICAgICAgICAvLyBwYWRkZWQgdG8gdGhlIHNp
emUgb2YgdHdvIHZlYzQncykuCisgICAgICAgIGZsb2F0IHByZVJvdGF0aW9uWzhdOwogICAgIH07
CiAKICAgICBzdHJ1Y3QgRGVmYXVsdEF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwubW0gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4
dE10bC5tbQppbmRleCBlNDhjNmRlZDRhMDllZDljZmNmYmYxMzVjZWE4ZjI2OGMwZTU2MDg3Li44
MGRlZTU3NzgyMzIzZjRiNGFhMGU2MTMzOWQzNmFjZDg3MjkwOWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10
bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQ29udGV4dE10bC5tbQpAQCAtNDgzLDE2ICs0ODMsMzQgQEAgc3RkOjpzdHJpbmcgQ29u
dGV4dE10bDo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0CiB9CiAKIC8vIEVYVF9kZWJ1
Z19tYXJrZXIKLXZvaWQgQ29udGV4dE10bDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5n
dGgsIGNvbnN0IGNoYXIgKm1hcmtlcikge30KLXZvaWQgQ29udGV4dE10bDo6cHVzaEdyb3VwTWFy
a2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIHt9Ci12b2lkIENvbnRleHRN
dGw6OnBvcEdyb3VwTWFya2VyKCkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6aW5zZXJ0RXZl
bnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKIHsKLSAgICAvLyBU
T0RPKGhxbGUKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK2FuZ2xl
OjpSZXN1bHQgQ29udGV4dE10bDo6cHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBjaGFyICptYXJrZXIpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwor
fQorCithbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OnBvcEdyb3VwTWFya2VyKCkKK3sKKyAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIC8vIEtIUl9kZWJ1Zwotdm9pZCBD
b250ZXh0TXRsOjpwdXNoRGVidWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0
IHN0ZDo6c3RyaW5nICZtZXNzYWdlKSB7fQotdm9pZCBDb250ZXh0TXRsOjpwb3BEZWJ1Z0dyb3Vw
KCkge30KK2FuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6cHVzaERlYnVnR3JvdXAoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOworfQorCithbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OnBvcERlYnVnR3JvdXAo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOworfQogCiAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KIGFuZ2xlOjpS
ZXN1bHQgQ29udGV4dE10bDo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApA
QCAtNzAwLDggKzcxOCw2IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6c3luY1N0YXRlKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9DT1ZFUkFHRV9NT0RVTEFUSU9OOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9QQVRIX1JFTkRFUklORzoKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JHQjoKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVOVF9W
QUxVRVM6CkBAIC04NDgsMTMgKzg2NCw2IEBAIFByb2dyYW1QaXBlbGluZUltcGwgKkNvbnRleHRN
dGw6OmNyZWF0ZVByb2dyYW1QaXBlbGluZShjb25zdCBnbDo6UHJvZ3JhbVBpcGVsaW5lCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLS8vIFBhdGggb2JqZWN0IGNyZWF0aW9uCi1zdGQ6OnZlY3Rv
cjxQYXRoSW1wbCAqPiBDb250ZXh0TXRsOjpjcmVhdGVQYXRocyhHTHNpemVpKQotewotICAgIFVO
SU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4oKTsKLX0K
LQogLy8gTWVtb3J5IG9iamVjdCBjcmVhdGlvbi4KIE1lbW9yeU9iamVjdEltcGwgKkNvbnRleHRN
dGw6OmNyZWF0ZU1lbW9yeU9iamVjdCgpCiB7CkBAIC0xNDM1LDggKzE0NDQsNyBAQCBhbmdsZTo6
UmVzdWx0IENvbnRleHRNdGw6OnNldHVwRHJhdyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICBBTkdMRV9UUlkoaGFuZGxlRGlydHlEZXB0aEJpYXMoY29udGV4dCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBESVJUWV9CSVRfU1RF
TkNJTF9SRUY6Ci0gICAgICAgICAgICAgICAgbVJlbmRlckVuY29kZXIuc2V0U3RlbmNpbFJlZlZh
bHMobVN0ZW5jaWxSZWZGcm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtU3RlbmNpbFJlZkJhY2spOworICAgICAgICAgICAgICAgIG1SZW5kZXJF
bmNvZGVyLnNldFN0ZW5jaWxSZWZWYWxzKG1TdGVuY2lsUmVmRnJvbnQsIG1TdGVuY2lsUmVmQmFj
ayk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZX0JJVF9C
TEVORF9DT0xPUjoKICAgICAgICAgICAgICAgICBtUmVuZGVyRW5jb2Rlci5zZXRCbGVuZENvbG9y
KApAQCAtMTUyOSw4ICsxNTM3LDggQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRsOjpoYW5kbGVE
aXJ0eUFjdGl2ZVRleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAgIGNvbnN0
IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgID0gbVN0YXRlOwogICAgIGNvbnN0IGdsOjpQcm9ncmFtICpw
cm9ncmFtID0gZ2xTdGF0ZS5nZXRQcm9ncmFtKCk7CiAKLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4
dHVyZVBvaW50ZXJBcnJheSAmdGV4dHVyZXMgPSBnbFN0YXRlLmdldEFjdGl2ZVRleHR1cmVzQ2Fj
aGUoKTsKLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZU1hc2sgJmFjdGl2ZVRleHR1cmVzICAg
PSBwcm9ncmFtLT5nZXRBY3RpdmVTYW1wbGVyc01hc2soKTsKKyAgICBjb25zdCBnbDo6QWN0aXZl
VGV4dHVyZXNDYWNoZSAmdGV4dHVyZXMgICAgID0gZ2xTdGF0ZS5nZXRBY3RpdmVUZXh0dXJlc0Nh
Y2hlKCk7CisgICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVNYXNrICZhY3RpdmVUZXh0dXJlcyA9
IHByb2dyYW0tPmdldEV4ZWN1dGFibGUoKS5nZXRBY3RpdmVTYW1wbGVyc01hc2soKTsKIAogICAg
IGZvciAoc2l6ZV90IHRleHR1cmVVbml0IDogYWN0aXZlVGV4dHVyZXMpCiAgICAgewpAQCAtMTU5
MCw2ICsxNTk4LDE2IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6aGFuZGxlRGlydHlEcml2
ZXJVbmlmb3Jtcyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICBtRHJpdmVyVW5pZm9y
bXMuZGVwdGhSYW5nZVsyXSA9IGRlcHRoUmFuZ2VEaWZmOwogICAgIG1Ecml2ZXJVbmlmb3Jtcy5k
ZXB0aFJhbmdlWzNdID0gTmVlZFRvSW52ZXJ0RGVwdGhSYW5nZShkZXB0aFJhbmdlTmVhciwgZGVw
dGhSYW5nZUZhcikgPyAtMSA6IDE7CiAKKyAgICAvLyBGaWxsIGluIGEgbWF0MiBpZGVudGl0eSBt
YXRyaXgsIHBsdXMgcGFkZGluZworICAgIG1Ecml2ZXJVbmlmb3Jtcy5wcmVSb3RhdGlvblswXSA9
IDEuMGY7CisgICAgbURyaXZlclVuaWZvcm1zLnByZVJvdGF0aW9uWzFdID0gMC4wZjsKKyAgICBt
RHJpdmVyVW5pZm9ybXMucHJlUm90YXRpb25bMl0gPSAwLjBmOworICAgIG1Ecml2ZXJVbmlmb3Jt
cy5wcmVSb3RhdGlvblszXSA9IDAuMGY7CisgICAgbURyaXZlclVuaWZvcm1zLnByZVJvdGF0aW9u
WzRdID0gMC4wZjsKKyAgICBtRHJpdmVyVW5pZm9ybXMucHJlUm90YXRpb25bNV0gPSAxLjBmOwor
ICAgIG1Ecml2ZXJVbmlmb3Jtcy5wcmVSb3RhdGlvbls2XSA9IDAuMGY7CisgICAgbURyaXZlclVu
aWZvcm1zLnByZVJvdGF0aW9uWzddID0gMC4wZjsKKwogICAgIEFTU0VSVChtUmVuZGVyRW5jb2Rl
ci52YWxpZCgpKTsKICAgICBtUmVuZGVyRW5jb2Rlci5zZXRGcmFnbWVudERhdGEobURyaXZlclVu
aWZvcm1zLCBtdGw6OmtEcml2ZXJVbmlmb3Jtc0JpbmRpbmdJbmRleCk7CiAgICAgbVJlbmRlckVu
Y29kZXIuc2V0VmVydGV4RGF0YShtRHJpdmVyVW5pZm9ybXMsIG10bDo6a0RyaXZlclVuaWZvcm1z
QmluZGluZ0luZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5oCmluZGV4IDgxOTAw
NDIwN2NhNmIxOTVjYmEzOWQxYmY3N2E1NWU4ODRlMmEwNDMuLmYwOTM3NTA3MTc4ZTE0OTc3MTRh
ZjM4NzQwYjliMDJjM2M1NGY2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlNdGwuaApA
QCAtMTU2LDYgKzE1Niw5IEBAIGNsYXNzIERpc3BsYXlNdGwgOiBwdWJsaWMgRGlzcGxheUltcGwK
ICAgICBtdXRhYmxlIGdsOjpMaW1pdGF0aW9ucyBtTmF0aXZlTGltaXRhdGlvbnM7CiAKICAgICBh
bmdsZTo6RmVhdHVyZXNNdGwgbUZlYXR1cmVzOworCisgICAgLy8gdHJhY2sgd2hldGhlciB3ZSBp
bml0aWFsaXplZCAob3IgcmVsZWFzZWQpIGdsc2xhbmcKKyAgICBib29sIG1HbHNsYW5nSW5pdGlh
bGl6ZWQ7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9EaXNwbGF5TXRsLm1tIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3Bs
YXlNdGwubW0KaW5kZXggOGRhOTcwMGVmNjgxYzA1OTA0YTJiZjQ0N2Q2ZGM1YjI2M2FiMzk5Ni4u
MGM4YzI4MTI2YWEyNGQ4MTY3Zjk4Y2ZkMmI3ZjYxNjIxNWEwNzRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Rpc3BsYXlN
dGwubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L21ldGFsL0Rpc3BsYXlNdGwubW0KQEAgLTM3LDcgKzM3LDkgQEAgRGlzcGxheUltcGwgKkNyZWF0
ZU1ldGFsRGlzcGxheShjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCiAgICAgcmV0dXJu
IG5ldyBEaXNwbGF5TXRsKHN0YXRlKTsKIH0KIAotRGlzcGxheU10bDo6RGlzcGxheU10bChjb25z
dCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpIDogRGlzcGxheUltcGwoc3RhdGUpLCBtVXRpbHMo
dGhpcykge30KK0Rpc3BsYXlNdGw6OkRpc3BsYXlNdGwoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUg
JnN0YXRlKQorICAgIDogRGlzcGxheUltcGwoc3RhdGUpLCBtVXRpbHModGhpcyksIG1HbHNsYW5n
SW5pdGlhbGl6ZWQoZmFsc2UpCit7fQogCiBEaXNwbGF5TXRsOjp+RGlzcGxheU10bCgpIHt9CiAK
QEAgLTY3LDcgKzY5LDExIEBAIGFuZ2xlOjpSZXN1bHQgRGlzcGxheU10bDo6aW5pdGlhbGl6ZUlt
cGwoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQogCiAgICAgICAgIG1DYXBzSW5pdGlhbGl6ZWQgPSBm
YWxzZTsKIAotICAgICAgICBHbHNsYW5nSW5pdGlhbGl6ZSgpOworICAgICAgICBpZiAoIW1HbHNs
YW5nSW5pdGlhbGl6ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEdsc2xhbmdJbml0aWFsaXpl
KCk7CisgICAgICAgICAgICBtR2xzbGFuZ0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgfQog
CiAgICAgICAgIGlmICghbVN0YXRlLmZlYXR1cmVzQWxsRGlzYWJsZWQpCiAgICAgICAgIHsKQEAg
LTkxLDcgKzk3LDExIEBAIHZvaWQgRGlzcGxheU10bDo6dGVybWluYXRlKCkKICAgICBtTWV0YWxE
ZXZpY2UgICAgID0gbmlsOwogICAgIG1DYXBzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAotICAgIEds
c2xhbmdSZWxlYXNlKCk7CisgICAgaWYgKG1HbHNsYW5nSW5pdGlhbGl6ZWQpCisgICAgeworICAg
ICAgICBHbHNsYW5nUmVsZWFzZSgpOworICAgICAgICBtR2xzbGFuZ0luaXRpYWxpemVkID0gZmFs
c2U7CisgICAgfQogfQogCiBib29sIERpc3BsYXlNdGw6OnRlc3REZXZpY2VMb3N0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9Qcm9ncmFtTXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5oCmluZGV4IGY5ZjVlOWRmYjQxZmEwMWMyNGI3MGM5MDA1
YjlhNmRiZWYzMmU4MDUuLmUyODYyNTQ3YTIwNTZjYjQ0ZDY5OWUyNTE2YjVhY2IwOGFkYjk1Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9Qcm9ncmFtTXRsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1NdGwuaApAQCAtOTksMTEgKzk5LDYgQEAgY2xh
c3MgUHJvZ3JhbU10bCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIHZvaWQgZ2V0VW5pZm9ybWl2
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFt
cykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2KGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdm9pZCBzZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmlu
ZyAmaW5wdXROYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdl
bk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZz
KSBvdmVycmlkZTsKLQogICAgIC8vIENhbGxzIHRoaXMgYmVmb3JlIGRyYXdpbmcsIGNoYW5nZWRQ
aXBlbGluZURlc2MgaXMgcGFzc2VkIHdoZW4gdmVydGV4IGF0dHJpYnV0ZXMgZGVzYyBhbmQvb3IK
ICAgICAvLyBzaGFkZXIgcHJvZ3JhbSBjaGFuZ2VkLgogICAgIGFuZ2xlOjpSZXN1bHQgc2V0dXBE
cmF3KGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCkBAIC0xMzIsNyArMTI3LDkgQEAgY2xh
c3MgUHJvZ3JhbU10bCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogCiAgICAgdm9pZCByZXNldChDb250
ZXh0TXRsICpjb250ZXh0KTsKICAgICB2b2lkIGxpbmtSZXNvdXJjZXMoY29uc3QgZ2w6OlByb2dy
YW1MaW5rZWRSZXNvdXJjZXMgJnJlc291cmNlcyk7Ci0gICAgYW5nbGU6OlJlc3VsdCBsaW5rSW1w
bChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LCBnbDo6SW5mb0xvZyAmaW5mb0xvZyk7Cisg
ICAgYW5nbGU6OlJlc3VsdCBsaW5rSW1wbChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1MaW5rZWRSZXNvdXJj
ZXMgJnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZp
bmZvTG9nKTsKICAgICBhbmdsZTo6UmVzdWx0IGNvbnZlcnRUb01zbChjb25zdCBnbDo6Q29udGV4
dCAqZ2xDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJU
eXBlIHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9M
b2cgJmluZm9Mb2csCkBAIC0xNjEsMTAgKzE1OCw2IEBAIGNsYXNzIFByb2dyYW1NdGwgOiBwdWJs
aWMgUHJvZ3JhbUltcGwKICAgICBnbDo6U2hhZGVyQml0U2V0IG1TYW1wbGVyQmluZGluZ3NEaXJ0
eTsKICAgICBnbDo6U2hhZGVyTWFwPERlZmF1bHRVbmlmb3JtQmxvY2s+IG1EZWZhdWx0VW5pZm9y
bUJsb2NrczsKIAotICAgIC8vIFdlIGtlZXAgdGhlIHRyYW5zbGF0ZWQgbGlua2VkIHNoYWRlciBz
b3VyY2VzIHRvIHVzZSB3aXRoIHNoYWRlciBkcmF3IGNhbGwgcGF0Y2hpbmcuCi0gICAgZ2w6OlNo
YWRlck1hcDxzdGQ6OnN0cmluZz4gbVNoYWRlclNvdXJjZTsKLSAgICBTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm9NYXAgbVZhcmlhYmxlSW5mb01hcDsKLQogICAgIG10bDo6UmVuZGVyUGlwZWxp
bmVDYWNoZSBtTWV0YWxSZW5kZXJQaXBlbGluZUNhY2hlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1Byb2dyYW1N
dGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvUHJvZ3JhbU10bC5tbQppbmRleCBlZDQ3YThhOWI4YzAwZDYwNmJkODNlZTk2MTAwYjlhMGI3
NjQzNzVlLi45NzlkYWNmOTcxZDk1NmI4MWM1YjljOGM1ODc0YmYzNmJiNjZkMjdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwv
UHJvZ3JhbU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvUHJvZ3JhbU10bC5tbQpAQCAtMjk1LDEzICsyOTUsMTMgQEAgc3RkOjp1
bmlxdWVfcHRyPExpbmtFdmVudD4gUHJvZ3JhbU10bDo6bGluayhjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAvLyBhc3NpZ25tZW50IGRvbmUgaW4gdGhhdCBmdW5jdGlvbi4KICAgICBs
aW5rUmVzb3VyY2VzKHJlc291cmNlcyk7CiAKLSAgICBtdGw6Okdsc2xhbmdHZXRTaGFkZXJTb3Vy
Y2UobVN0YXRlLCByZXNvdXJjZXMsICZtU2hhZGVyU291cmNlLCAmbVZhcmlhYmxlSW5mb01hcCk7
Ci0KICAgICAvLyBOT1RFKGhxbGUpOiBQYXJhbGxlbGl6ZSBsaW5raW5nLgotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+KGxpbmtJbXBsKGNvbnRleHQsIGluZm9Mb2cp
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rRXZlbnREb25lPihsaW5rSW1wbChj
b250ZXh0LCByZXNvdXJjZXMsIGluZm9Mb2cpKTsKIH0KIAotYW5nbGU6OlJlc3VsdCBQcm9ncmFt
TXRsOjpsaW5rSW1wbChjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250ZXh0LCBnbDo6SW5mb0xvZyAm
aW5mb0xvZykKK2FuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6bGlua0ltcGwoY29uc3QgZ2w6OkNv
bnRleHQgKmdsQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlByb2dyYW1MaW5rZWRSZXNvdXJjZXMgJnJlc291cmNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCiB7CiAgICAgQ29udGV4
dE10bCAqY29udGV4dE10bCA9IG10bDo6R2V0SW1wbChnbENvbnRleHQpOwogICAgIC8vIE5PVEUo
aHFsZSk6IE5vIHRyYW5zZm9ybSBmZWVkYmFja3MgZm9yIG5vdywgc2luY2Ugd2Ugb25seSBzdXBw
b3J0IEVTIDIuMCBhdG0KQEAgLTMxMCwxMCArMzEwLDE1IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3Jh
bU10bDo6bGlua0ltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwgZ2w6OkluZm9Mb2cg
JmluCiAKICAgICBBTkdMRV9UUlkoaW5pdERlZmF1bHRVbmlmb3JtQmxvY2tzKGdsQ29udGV4dCkp
OwogCisgICAgLy8gR2F0aGVyIHZhcmlhYmxlIGluZm8gYW5kIHRyYW5zZm9ybSBzb3VyY2VzLgor
ICAgIGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+IHNoYWRlclNvdXJjZXM7CisgICAgU2hhZGVy
TWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwIHZhcmlhYmxlSW5mb01hcDsKKyAgICBtdGw6Okds
c2xhbmdHZXRTaGFkZXJTb3VyY2UobVN0YXRlLCByZXNvdXJjZXMsICZzaGFkZXJTb3VyY2VzLCAm
dmFyaWFibGVJbmZvTWFwKTsKKwogICAgIC8vIENvbnZlcnQgR0xTTCB0byBzcGlydiBjb2RlCiAg
ICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnZlY3Rvcjx1aW50MzJfdD4+IHNoYWRlckNvZGVzOwotICAg
IEFOR0xFX1RSWShtdGw6Okdsc2xhbmdHZXRTaGFkZXJTcGlydkNvZGUoY29udGV4dE10bCwgY29u
dGV4dE10bC0+Z2V0Q2FwcygpLCBtU2hhZGVyU291cmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVZhcmlhYmxlSW5mb01hcCwgJnNoYWRlckNvZGVzKSk7
CisgICAgQU5HTEVfVFJZKG10bDo6R2xzbGFuZ0dldFNoYWRlclNwaXJ2Q29kZShjb250ZXh0TXRs
LCBjb250ZXh0TXRsLT5nZXRDYXBzKCksIHNoYWRlclNvdXJjZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUluZm9NYXAsICZzaGFkZXJDb2Rl
cykpOwogCiAgICAgLy8gQ29udmVydCBzcGlydiBjb2RlIHRvIE1TTAogICAgIEFOR0xFX1RSWShj
b252ZXJ0VG9Nc2woZ2xDb250ZXh0LCBnbDo6U2hhZGVyVHlwZTo6VmVydGV4LCBpbmZvTG9nLApA
QCAtNzc3LDE0ICs3ODIsNiBAQCB2b2lkIFByb2dyYW1NdGw6OnNldFVuaWZvcm1NYXRyaXg0eDNm
dihHTGludCBsb2NhdGlvbiwKICAgICBzZXRVbmlmb3JtTWF0cml4ZnY8NCwgMz4obG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAotdm9pZCBQcm9ncmFtTXRsOjpzZXRQYXRo
RnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZz
KQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLX0KLQogdm9pZCBQcm9ncmFtTXRsOjpnZXRVbmlm
b3JtZnYoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
ICpwYXJhbXMpIGNvbnN0CiB7CiAgICAgZ2V0VW5pZm9ybUltcGwobG9jYXRpb24sIHBhcmFtcywg
R0xfRkxPQVQpOwpAQCAtODcyLDcgKzg2OSw3IEBAIGFuZ2xlOjpSZXN1bHQgUHJvZ3JhbU10bDo6
dXBkYXRlVGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwKIHsKICAgICBjb25z
dCBhdXRvICZnbFN0YXRlID0gZ2xDb250ZXh0LT5nZXRTdGF0ZSgpOwogCi0gICAgY29uc3QgZ2w6
OkFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJmNvbXBsZXRlVGV4dHVyZXMgPSBnbFN0YXRlLmdl
dEFjdGl2ZVRleHR1cmVzQ2FjaGUoKTsKKyAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZXNDYWNo
ZSAmY29tcGxldGVUZXh0dXJlcyA9IGdsU3RhdGUuZ2V0QWN0aXZlVGV4dHVyZXNDYWNoZSgpOwog
CiAgICAgZm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFsbEdMRVMyU2hhZGVy
VHlwZXMoKSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1tCmluZGV4IGI5
ODM0NzRhNmYyYmU4ZjMyZGI3NzUwN2I1MjFmODE0ZWMyZjVmYTUuLmEyYmNmZTU1NThlMTA1OGE4
NWZkYWQ3NWNiODI2MjNkZDZkMzZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1tCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRs
Lm1tCkBAIC0yMjYsNyArMjI2LDEzIEBAIHZvaWQgU3VyZmFjZU10bDo6ZGVzdHJveShjb25zdCBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgbURlcHRoVGV4dHVyZSAgICA9IG51bGxwdHI7CiAg
ICAgbVN0ZW5jaWxUZXh0dXJlICA9IG51bGxwdHI7CiAgICAgbUN1cnJlbnREcmF3YWJsZSA9IG5p
bDsKLSAgICBtTWV0YWxMYXllciAgICAgID0gbmlsOworICAgIGlmIChtTWV0YWxMYXllciAmJiBt
TWV0YWxMYXllci5nZXQoKSAhPSBtTGF5ZXIpCisgICAgeworICAgICAgICAvLyBJZiB3ZSBjcmVh
dGVkIG1ldGFsIGxheWVyIGluIFN1cmZhY2VNdGw6OmluaXRpYWxpemUoKSwKKyAgICAgICAgLy8g
d2UgbmVlZCB0byBkZXRhY2ggaXQgZnJvbSBzdXBlciBsYXllciBub3cuCisgICAgICAgIFttTWV0
YWxMYXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgfQorICAgIG1NZXRhbExh
eWVyID0gbmlsOwogfQogCiBlZ2w6OkVycm9yIFN1cmZhY2VNdGw6OmluaXRpYWxpemUoY29uc3Qg
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfbWFwLmpzb24gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1h
dF9tYXAuanNvbgppbmRleCAwNWI5OWIxMDNjNWU0YmMyNzNiNTljYmQ3NWVmNWIyYTZhOGNjZjYx
Li5iZDU4ZjEyMjZhMWQ0YmZmNDQyNzZjOTU1ZTFjYmZmYzA4NzZlY2YzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2Zv
cm1hdF9tYXAuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2Zvcm1hdF9tYXAuanNvbgpAQCAtNTQsNyArNTQsMTEgQEAKICAg
ICAgICAgICAgICJCQzJfUkdCQV9VTk9STV9CTE9DSyI6ICJNVExQaXhlbEZvcm1hdEJDMl9SR0JB
IiwKICAgICAgICAgICAgICJCQzJfUkdCQV9VTk9STV9TUkdCX0JMT0NLIjogIk1UTFBpeGVsRm9y
bWF0QkMyX1JHQkFfc1JHQiIsCiAgICAgICAgICAgICAiQkMzX1JHQkFfVU5PUk1fQkxPQ0siOiAi
TVRMUGl4ZWxGb3JtYXRCQzNfUkdCQSIsCi0gICAgICAgICAgICAiQkMzX1JHQkFfVU5PUk1fU1JH
Ql9CTE9DSyI6ICJNVExQaXhlbEZvcm1hdEJDM19SR0JBX3NSR0IiCisgICAgICAgICAgICAiQkMz
X1JHQkFfVU5PUk1fU1JHQl9CTE9DSyI6ICJNVExQaXhlbEZvcm1hdEJDM19SR0JBX3NSR0IiLAor
ICAgICAgICAgICAgIkJDNF9SRURfVU5PUk1fQkxPQ0siOiAiTVRMUGl4ZWxGb3JtYXRCQzRfUlVu
b3JtIiwKKyAgICAgICAgICAgICJCQzRfUkVEX1NOT1JNX0JMT0NLIjogIk1UTFBpeGVsRm9ybWF0
QkM0X1JTbm9ybSIsCisgICAgICAgICAgICAiQkM1X1JHX1VOT1JNX0JMT0NLIjogIk1UTFBpeGVs
Rm9ybWF0QkM1X1JHVW5vcm0iLAorICAgICAgICAgICAgIkJDNV9SR19TTk9STV9CTE9DSyI6ICJN
VExQaXhlbEZvcm1hdEJDNV9SR1Nub3JtIgogICAgICAgICB9LAogICAgICAgICAib3ZlcnJpZGUi
OiB7CiAgICAgICAgICAgICAiTDhfVU5PUk0iOiAiUjhHOEI4QThfVU5PUk0iLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210
bF9mb3JtYXRfdGFibGVfYXV0b2dlbi5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZm9ybWF0X3RhYmxlX2F1dG9nZW4ubW0KaW5kZXgg
YmFhNTc4Mjc4N2MwNjQ5NjdjMjQ0NzQ1Yzc5NzI0OGNlNzUxZjMwMy4uZWQ3Y2I0YWI4MDkxNjZj
MzY4MDQxMDFmZTM1OTQ2OWY0Y2QxYTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9mb3JtYXRfdGFibGVfYXV0b2dl
bi5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvbXRsX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLm1tCkBAIC0xLDcgKzEsNyBAQAogLy8gR0VO
RVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KIC8vIEdlbmVyYXRlZCBieSBnZW5fbXRsX2Zvcm1h
dF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gbXRsX2Zvcm1hdF9tYXAuanNvbgogLy8KLS8vIENv
cHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIC8vCkBAIC00NTQsNiArNDU0LDI2IEBAIHZvaWQgRm9ybWF0Ojppbml0KGNvbnN0IERp
c3BsYXlNdGwgKmRpc3BsYXksIGFuZ2xlOjpGb3JtYXRJRCBpbnRlbmRlZEZvcm1hdElkXykKICAg
ICAgICAgICAgIHRoaXMtPmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElEOjpCQzNfUkdC
QV9VTk9STV9TUkdCX0JMT0NLOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBh
bmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfU05PUk1fQkxPQ0s6CisgICAgICAgICAgICB0aGlzLT5t
ZXRhbEZvcm1hdCAgICA9IE1UTFBpeGVsRm9ybWF0QkM0X1JTbm9ybTsKKyAgICAgICAgICAgIHRo
aXMtPmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1NOT1JNX0JMT0NL
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkJD
NF9SRURfVU5PUk1fQkxPQ0s6CisgICAgICAgICAgICB0aGlzLT5tZXRhbEZvcm1hdCAgICA9IE1U
TFBpeGVsRm9ybWF0QkM0X1JVbm9ybTsKKyAgICAgICAgICAgIHRoaXMtPmFjdHVhbEZvcm1hdElk
ID0gYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1VOT1JNX0JMT0NLOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9SR19TTk9STV9CTE9DSzoK
KyAgICAgICAgICAgIHRoaXMtPm1ldGFsRm9ybWF0ICAgID0gTVRMUGl4ZWxGb3JtYXRCQzVfUkdT
bm9ybTsKKyAgICAgICAgICAgIHRoaXMtPmFjdHVhbEZvcm1hdElkID0gYW5nbGU6OkZvcm1hdElE
OjpCQzVfUkdfU05PUk1fQkxPQ0s7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1VOT1JNX0JMT0NLOgorICAgICAgICAgICAgdGhpcy0+
bWV0YWxGb3JtYXQgICAgPSBNVExQaXhlbEZvcm1hdEJDNV9SR1Vub3JtOworICAgICAgICAgICAg
dGhpcy0+YWN0dWFsRm9ybWF0SWQgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9SR19VTk9STV9CTE9D
SzsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgYW5nbGU6OkZvcm1hdElEOjpE
MTZfVU5PUk06CiAgICAgICAgICAgICB0aGlzLT5tZXRhbEZvcm1hdCAgICA9IE1UTFBpeGVsRm9y
bWF0RGVwdGgxNlVub3JtOwogICAgICAgICAgICAgdGhpcy0+YWN0dWFsRm9ybWF0SWQgPSBhbmds
ZTo6Rm9ybWF0SUQ6OkQxNl9VTk9STTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ191dGlscy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNs
YW5nX3V0aWxzLmgKaW5kZXggOTJiZDFjYjQ2ZDg3ZmFlODc0NTFmMTRjMmFmNDNiMzRlNWZhYjMw
MS4uNGUzNTFlYWQ3NDhjN2VkZTFiZWU0OTI5YmI5YTM1NzMwYjJhMGM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9n
bHNsYW5nX3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX3V0aWxzLmgKQEAgLTIyLDEyICsyMiwxMiBAQCBu
YW1lc3BhY2UgbXRsCiB2b2lkIEdsc2xhbmdHZXRTaGFkZXJTb3VyY2UoY29uc3QgZ2w6OlByb2dy
YW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gKnNoYWRlclNvdXJjZXNPdXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZv
TWFwICp2YXJpYWJsZUluZm9NYXBPdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KTsKIAog
YW5nbGU6OlJlc3VsdCBHbHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlKEVycm9ySGFuZGxlciAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
Q2FwcyAmZ2xDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJTb3VyY2VzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlh
YmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFy
aWFibGVJbmZvTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpTaGFkZXJNYXA8c3RkOjp2ZWN0b3I8dWludDMyX3Q+PiAqc2hhZGVyQ29kZU91dCk7CiB9ICAv
LyBuYW1lc3BhY2UgbXRsCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfZ2xzbGFuZ191
dGlscy5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfZ2xzbGFuZ191dGlscy5tbQppbmRleCAzY2VjYjg1YjY2NDMyY2I2ZjQ4NWFkYzUy
MTk2MDQ2MmFjYzM5YjM1Li41MDhmYzc5OGQwOTMxNzA1NzA1OTFkNDQ1ZWY4MDAwZTNiYjkzZjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvbXRsX2dsc2xhbmdfdXRpbHMubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9nbHNsYW5nX3V0aWxzLm1tCkBAIC0y
MiwyMSArMjIsMjcgQEAgYW5nbGU6OlJlc3VsdCBIYW5kbGVFcnJvcihFcnJvckhhbmRsZXIgKmNv
bnRleHQsIEdsc2xhbmdFcnJvcikKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6U3RvcDsKIH0K
IAotR2xzbGFuZ1NvdXJjZU9wdGlvbnMgQ3JlYXRlU291cmNlT3B0aW9ucygpCit2b2lkIFJlc2V0
R2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvKEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAq
cHJvZ3JhbUludGVyZmFjZUluZm8pCiB7Ci0gICAgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgb3B0aW9u
czsKICAgICAvLyBXZSBkb24ndCBhY3R1YWxseSB1c2UgZGVzY3JpcHRvciBzZXQgZm9yIG5vdywg
dGhlIGFjdHVhbCBiaW5kaW5nIHdpbGwgYmUgZG9uZSBpbnNpZGUKICAgICAvLyBQcm9ncmFtTXRs
IHVzaW5nIHNwaXJ2LWNyb3NzLgotICAgIG9wdGlvbnMudW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9y
U2V0SW5kZXggPSBrRGVmYXVsdFVuaWZvcm1zQmluZGluZ0luZGV4OwotICAgIG9wdGlvbnMudGV4
dHVyZURlc2NyaXB0b3JTZXRJbmRleCAgICAgICAgPSAwOwotICAgIG9wdGlvbnMuZHJpdmVyVW5p
Zm9ybXNEZXNjcmlwdG9yU2V0SW5kZXggPSBrRHJpdmVyVW5pZm9ybXNCaW5kaW5nSW5kZXg7Cisg
ICAgcHJvZ3JhbUludGVyZmFjZUluZm8tPnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4
ID0ga0RlZmF1bHRVbmlmb3Jtc0JpbmRpbmdJbmRleDsKKyAgICBwcm9ncmFtSW50ZXJmYWNlSW5m
by0+Y3VycmVudFVuaWZvcm1CaW5kaW5nSW5kZXggICAgICAgPSAwOworICAgIHByb2dyYW1JbnRl
cmZhY2VJbmZvLT50ZXh0dXJlRGVzY3JpcHRvclNldEluZGV4ICAgICAgICA9IDA7CisgICAgcHJv
Z3JhbUludGVyZmFjZUluZm8tPmN1cnJlbnRUZXh0dXJlQmluZGluZ0luZGV4ICAgICAgID0gMDsK
KyAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+ZHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5k
ZXggPSBrRHJpdmVyVW5pZm9ybXNCaW5kaW5nSW5kZXg7CiAgICAgLy8gTk9URShocWxlKTogVW51
c2VkIGZvciBub3csIHVudGlsIHdlIHN1cHBvcnQgRVMgMy4wCi0gICAgb3B0aW9ucy5zaGFkZXJS
ZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleCA9IC0xOwotICAgIG9wdGlvbnMueGZiQmluZGluZ0lu
ZGV4U3RhcnQgICAgICAgICAgICAgPSAtMTsKKyAgICBwcm9ncmFtSW50ZXJmYWNlSW5mby0+c2hh
ZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXggID0gLTE7CisgICAgcHJvZ3JhbUludGVyZmFj
ZUluZm8tPmN1cnJlbnRTaGFkZXJSZXNvdXJjZUJpbmRpbmdJbmRleCA9IDA7CisgICAgcHJvZ3Jh
bUludGVyZmFjZUluZm8tPmxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb24gICAgICA9IDA7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KGtEZWZhdWx0VW5pZm9ybXNCaW5kaW5nSW5kZXggIT0gMCwgImtE
ZWZhdWx0VW5pZm9ybXNCaW5kaW5nSW5kZXggbXVzdCBub3QgYmUgMCIpOwogICAgIHN0YXRpY19h
c3NlcnQoa0RyaXZlclVuaWZvcm1zQmluZGluZ0luZGV4ICE9IDAsICJrRHJpdmVyVW5pZm9ybXNC
aW5kaW5nSW5kZXggbXVzdCBub3QgYmUgMCIpOworfQogCitHbHNsYW5nU291cmNlT3B0aW9ucyBD
cmVhdGVTb3VyY2VPcHRpb25zKCkKK3sKKyAgICBHbHNsYW5nU291cmNlT3B0aW9ucyBvcHRpb25z
OwogICAgIHJldHVybiBvcHRpb25zOwogfQogfSAgLy8gbmFtZXNwYWNlCkBAIC00NCwxNiArNTAs
MjAgQEAgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgQ3JlYXRlU291cmNlT3B0aW9ucygpCiB2b2lkIEds
c2xhbmdHZXRTaGFkZXJTb3VyY2UoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVz
b3VyY2VzICZyZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRl
ck1hcDxzdGQ6OnN0cmluZz4gKnNoYWRlclNvdXJjZXNPdXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBP
dXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFi
bGVJbmZvTWFwICp2YXJpYWJsZUluZm9NYXBPdXQpCiB7Ci0gICAgcng6Okdsc2xhbmdHZXRTaGFk
ZXJTb3VyY2UoQ3JlYXRlU291cmNlT3B0aW9ucygpLCBwcm9ncmFtU3RhdGUsIHJlc291cmNlcywg
c2hhZGVyU291cmNlc091dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZUluZm9NYXBPdXQpOworICAgIEdsc2xhbmdTb3VyY2VPcHRpb25zIG9wdGlvbnMgPSBDcmVhdGVT
b3VyY2VPcHRpb25zKCk7CisgICAgR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvIHByb2dyYW1J
bnRlcmZhY2VJbmZvOworICAgIFJlc2V0R2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvKCZwcm9n
cmFtSW50ZXJmYWNlSW5mbyk7CisKKyAgICByeDo6R2xzbGFuZ0dldFNoYWRlclNvdXJjZShvcHRp
b25zLCBwcm9ncmFtU3RhdGUsIHJlc291cmNlcywgJnByb2dyYW1JbnRlcmZhY2VJbmZvLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclNvdXJjZXNPdXQsIHZhcmlhYmxlSW5m
b01hcE91dCk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgR2xzbGFuZ0dldFNoYWRlclNwaXJ2Q29kZShF
cnJvckhhbmRsZXIgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkNhcHMgJmdsQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyTWFwPHN0ZDo6c3RyaW5nPiAmc2hhZGVyU291
cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFk
ZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJNYXBJbnRlcmZhY2VWYXJp
YWJsZUluZm9NYXAgJnZhcmlhYmxlSW5mb01hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHN0ZDo6dmVjdG9yPHVpbnQzMl90Pj4gKnNoYWRl
ckNvZGVPdXQpCiB7CiAgICAgcmV0dXJuIHJ4OjpHbHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlKApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvQ29udGV4dE5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuY3BwCmluZGV4IDc4NjI2NTZiYWMyOWEzMzNj
NmUxOTJjNTM5N2NlZjg1NDAwYTJjYzkuLmM2NjJmYjliNTA1ZDIxNjUwMTQ1NDQ0YmExMDc5YzM4
OThkMDRiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAKQEAgLTE5LDcg
KzE5LDYgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlTlZOVUxMLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9udWxsL1Byb2dyYW1OVUxMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9Qcm9ncmFtUGlwZWxpbmVOVUxMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9RdWVyeU5VTEwuaCIKQEAgLTI0MSw2OCArMjQwLDYgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0
TlVMTDo6ZHJhd0VsZW1lbnRzSW5kaXJlY3QoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIENvbnRleHROVUxM
OjpzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBmaWxsTW9kZSwg
R0x1aW50IG1hc2spIHt9Ci0KLXZvaWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxTdHJva2VQYXRoKGNv
bnN0IGdsOjpQYXRoICpwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKSB7fQotCi12
b2lkIENvbnRleHROVUxMOjpjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLCBHTGVu
dW0gY292ZXJNb2RlKSB7fQotCi12b2lkIENvbnRleHROVUxMOjpjb3ZlclN0cm9rZVBhdGgoY29u
c3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpIHt9Ci0KLXZvaWQgQ29udGV4dE5V
TEw6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9k
ZSkKLXt9Ci0KLXZvaWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKGNv
bnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQote30KLQotdm9pZCBDb250ZXh0TlVM
TDo6Y292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAm
cGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17fQotCi12b2lkIENvbnRleHROVUxM
Ojpjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4g
JnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQote30KLQotdm9pZCBDb250
ZXh0TlVMTDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQ
YXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQote30KLQotdm9p
ZCBDb250ZXh0TlVMTDo6c3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0
b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykKLXt9Ci0KLXZvaWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aElu
c3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQote30KLQotdm9pZCBDb250ZXh0TlVMTDo6c3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17fQotCiBnbDo6R3JhcGhpY3NSZXNl
dFN0YXR1cyBDb250ZXh0TlVMTDo6Z2V0UmVzZXRTdGF0dXMoKQogewogICAgIHJldHVybiBnbDo6
R3JhcGhpY3NSZXNldFN0YXR1czo6Tm9FcnJvcjsKQEAgLTMxOCwxNSArMjU1LDMzIEBAIHN0ZDo6
c3RyaW5nIENvbnRleHROVUxMOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gIk5VTEwiOwogfQogCi12b2lkIENvbnRleHROVUxMOjppbnNlcnRFdmVudE1hcmtlcihH
THNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSB7fQorYW5nbGU6OlJlc3VsdCBDb250
ZXh0TlVMTDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikKK3sKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CiAKLXZvaWQg
Q29udGV4dE5VTEw6OnB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
bWFya2VyKSB7fQorYW5nbGU6OlJlc3VsdCBDb250ZXh0TlVMTDo6cHVzaEdyb3VwTWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOworfQogCi12b2lkIENvbnRleHROVUxMOjpwb3BHcm91cE1hcmtlcigp
IHt9CithbmdsZTo6UmVzdWx0IENvbnRleHROVUxMOjpwb3BHcm91cE1hcmtlcigpCit7CisgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQogCi12b2lkIENvbnRleHROVUxMOjpw
dXNoRGVidWdHcm91cChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIGNvbnN0IHN0ZDo6c3RyaW5n
ICZtZXNzYWdlKSB7fQorYW5nbGU6OlJlc3VsdCBDb250ZXh0TlVMTDo6cHVzaERlYnVnR3JvdXAo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpCit7CisgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQogCi12b2lkIENvbnRleHROVUxMOjpwb3BEZWJ1Z0dy
b3VwKCkge30KK2FuZ2xlOjpSZXN1bHQgQ29udGV4dE5VTEw6OnBvcERlYnVnR3JvdXAoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOworfQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHROVUxMOjpzeW5jU3RhdGUoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cywKQEAgLTQ0MCwxNiArMzk1LDYg
QEAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVByb2dyYW1QaXBlbGlu
ZShjb25zdCBnbDo6UHJvZ3JhbVBpcGVsaW4KICAgICByZXR1cm4gbmV3IFByb2dyYW1QaXBlbGlu
ZU5VTEwoc3RhdGUpOwogfQogCi1zdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBDb250ZXh0TlVMTDo6
Y3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkKLXsKLSAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAq
PiByZXN1bHQocmFuZ2UpOwotICAgIGZvciAoR0xzaXplaSBpZHggPSAwOyBpZHggPCByYW5nZTsg
aWR4KyspCi0gICAgewotICAgICAgICByZXN1bHRbaWR4XSA9IG5ldyBQYXRoTlVMTCgpOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBNZW1vcnlPYmplY3RJbXBsICpDb250ZXh0TlVM
TDo6Y3JlYXRlTWVtb3J5T2JqZWN0KCkKIHsKICAgICBVTlJFQUNIQUJMRSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29u
dGV4dE5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL0NvbnRleHROVUxMLmgKaW5kZXggNTcyNTBiZGNjODE1MDc1NmM2NjUwMTJjMmIwNjNi
YjRlY2JhMmY1Ni4uYWQ5ODA1NTIxMDc3OTE4MDNkODc4MDllOTA2N2IyNjM5MmQ3OGNhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvQ29udGV4dE5VTEwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5oCkBAIC0xMTYsNTIgKzExNiw2IEBAIGNsYXNz
IENvbnRleHROVUxMIDogcHVibGljIENvbnRleHRJbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6RHJhd0VsZW1lbnRzVHlwZSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRl
OwogCi0gICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgcGF0aCBkcmF3aW5nIG1ldGhvZHMu
Ci0gICAgdm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBm
aWxsTW9kZSwgR0x1aW50IG1hc2spIG92ZXJyaWRlOwotICAgIHZvaWQgc3RlbmNpbFN0cm9rZVBh
dGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spIG92
ZXJyaWRlOwotICAgIHZvaWQgY292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xl
bnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb3ZlclN0cm9rZVBhdGgoY29uc3Qg
Z2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlKSBvdmVycmlkZTsKLQotICAgIHZvaWQgc3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBjb3ZlckZp
bGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0
b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxG
aWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rv
cjxnbDo6UGF0aCAqPiAmcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKLSAgICB2
b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpQYXRoICo+ICZwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKSBvdmVycmlkZTsKLQogICAgIC8vIERldmljZSBsb3NzCiAgICAgZ2w6OkdyYXBo
aWNzUmVzZXRTdGF0dXMgZ2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKIApAQCAtMTcwLDEzICsx
MjQsMTYgQEAgY2xhc3MgQ29udGV4dE5VTEwgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICBzdGQ6
OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAv
LyBFWFRfZGVidWdfbWFya2VyCi0gICAgdm9pZCBpbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxl
bmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2b2lkIHB1c2hHcm91cE1h
cmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsKLSAgICB2
b2lkIHBvcEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCBpbnNlcnRF
dmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKSBvdmVycmlkZTsK
KyAgICBhbmdsZTo6UmVzdWx0IHB1c2hHcm91cE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3Qg
Y2hhciAqbWFya2VyKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IHBvcEdyb3VwTWFya2Vy
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBLSFJfZGVidWcKLSAgICB2b2lkIHB1c2hEZWJ1Z0dyb3Vw
KEdMZW51bSBzb3VyY2UsIEdMdWludCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpIG92
ZXJyaWRlOwotICAgIHZvaWQgcG9wRGVidWdHcm91cCgpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpS
ZXN1bHQgcHVzaERlYnVnR3JvdXAoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpS
ZXN1bHQgcG9wRGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkgYml0cy4KICAgICBhbmdsZTo6UmVzdWx0
IHN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKQEAgLTIzMSw4ICsxODgsNiBA
QCBjbGFzcyBDb250ZXh0TlVMTCA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIC8vIFByb2dyYW0g
UGlwZWxpbmUgb2JqZWN0IGNyZWF0aW9uCiAgICAgUHJvZ3JhbVBpcGVsaW5lSW1wbCAqY3JlYXRl
UHJvZ3JhbVBpcGVsaW5lKGNvbnN0IGdsOjpQcm9ncmFtUGlwZWxpbmVTdGF0ZSAmZGF0YSkgb3Zl
cnJpZGU7CiAKLSAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVp
IHJhbmdlKSBvdmVycmlkZTsKLQogICAgIC8vIE1lbW9yeSBvYmplY3QgY3JlYXRpb24uCiAgICAg
TWVtb3J5T2JqZWN0SW1wbCAqY3JlYXRlTWVtb3J5T2JqZWN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1BhdGhOVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9udWxsL1BhdGhOVUxMLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQw
OGU0ZjljZjJlNmQ0N2M3YzZhMTUxYjM2N2Q0OGQ0NzgxNzc2MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUGF0aE5VTEwuY3BwOgotLy8gICAgSW1wbGVtZW50cyB0
aGUgY2xhc3MgbWV0aG9kcyBmb3IgUGF0aE5VTEwuCi0vLwotCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0K
LW5hbWVzcGFjZSByeAotewotUGF0aE5VTEw6OlBhdGhOVUxMKCkgOiBQYXRoSW1wbCgpIHt9Ci0K
LVBhdGhOVUxMOjp+UGF0aE5VTEwoKSB7fQotCi1hbmdsZTo6UmVzdWx0IFBhdGhOVUxMOjpzZXRD
b21tYW5kcyhHTHNpemVpIG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCi17Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwotfQotCi12b2lkIFBhdGhOVUxMOjpzZXRQYXRoUGFyYW1ldGVyKEdMZW51
bSBwbmFtZSwgR0xmbG9hdCB2YWx1ZSkge30KLX0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0
aE5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL1BhdGhOVUxMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwN2E4MGJjYzYz
YTAxZDIwOTE0MmQ5OTdhZDg1MmY3MDQ3NDVkZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0vLyBQYXRoTlVMTC5oOgotLy8gICAgRGVmaW5lcyB0aGUgY2xhc3MgaW50ZXJm
YWNlIGZvciBQYXRoTlVMTCwgaW1wbGVtZW50aW5nIFBhdGhJbXBsLgotLy8KLQotI2lmbmRlZiBM
SUJBTkdMRV9SRU5ERVJFUl9OVUxMX1BBVEhOVUxMX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRF
UkVSX05VTExfUEFUSE5VTExfSF8KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1BhdGhJ
bXBsLmgiCi0KLW5hbWVzcGFjZSByeAotewotCi1jbGFzcyBQYXRoTlVMTCA6IHB1YmxpYyBQYXRo
SW1wbAotewotICBwdWJsaWM6Ci0gICAgUGF0aE5VTEwoKTsKLSAgICB+UGF0aE5VTEwoKSBvdmVy
cmlkZTsKLQotICAgIGFuZ2xlOjpSZXN1bHQgc2V0Q29tbWFuZHMoR0xzaXplaSBudW1Db21tYW5k
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db29yZHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKSBvdmVycmlkZTsKLQotICAgIHZv
aWQgc2V0UGF0aFBhcmFtZXRlcihHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpIG92ZXJyaWRl
OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIHJ4Ci0KLSNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVS
RVJfTlVMTF9QQVRITlVMTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwCmlu
ZGV4IDc3YjJlMWU4NDI3OTE4YjM0OGFlNDI0ZDYwYTdjNDJkNmViZTgxZjkuLjYxMzlkZTM5YjMz
OTczYmFkNWIyMjlmODA2NGE5OTYyYTM2ZWQ4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9n
cmFtTlVMTC5jcHAKQEAgLTEzNiwxMCArMTM2LDQgQEAgdm9pZCBQcm9ncmFtTlVMTDo6Z2V0VW5p
Zm9ybXVpdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWkK
ICAgICAvLyBUT0RPKGptYWRpbGwpOiBXcml0ZSBzb21lIHZhbHVlcy4KIH0KIAotdm9pZCBQcm9n
cmFtTlVMTDo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0
TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBn
ZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Y29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKmNvZWZmcykKLXt9Ci0KIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJv
Z3JhbU5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1Byb2dyYW1OVUxMLmgKaW5kZXggODI2MDU3N2RmYmMwMGFlMGQ2NjBmNGU2MDZkMTAz
NzU3ZWQ1NDMwNC4uMmUxNWY4NTgxN2E3NDg4ODc0MWFkNGY0MTkwZjk3YmFkOTA5YTYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvUHJvZ3JhbU5VTEwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oCkBAIC04NSwxMyArODUsNiBAQCBjbGFzcyBQ
cm9ncmFtTlVMTCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1z
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGdldFVuaWZvcm1pdihjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpwYXJhbXMpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VW5pZm9ybXVpdihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xp
bnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKSBjb25zdCBvdmVycmlkZTsKLQotICAgIC8vIENI
Uk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0gICAgLy8gU2V0IHBhcmFtZXRlcnMgdG8gY29udHJvbCBm
cmFnbWVudCBzaGFkZXIgaW5wdXQgdmFyaWFibGUgaW50ZXJwb2xhdGlvbgotICAgIHZvaWQgc2V0
UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykgb3ZlcnJpZGU7CiB9OwogCiB9
ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwCmluZGV4IDhi
MjZjOWRjOWRhNThmMjJjMzRhNmZiMzdhZTczYTFjODhhMDQ5M2UuLjllNmY3NWQyMmQ0ZGQ5ZWE5
MDBjNmNkYWRlZDIwOGFiOTRiNWU2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmNw
cApAQCAtOSwyMCArOSwyMCBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvcmVuZGVy
ZXJfdXRpbHMuaCIKIAorI2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKKyNpbmNsdWRl
ICJjb21tb24vc3lzdGVtX3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgog
I2luY2x1ZGUgImltYWdlX3V0aWwvY29weWltYWdlLmgiCiAjaW5jbHVkZSAiaW1hZ2VfdXRpbC9p
bWFnZWZvcm1hdHMuaCIKLQogI2luY2x1ZGUgImxpYkFOR0xFL0F0dHJpYnV0ZU1hcC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5Lmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9Db250ZXh0SW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1h
dC5oIgotCiAjaW5jbHVkZSAicGxhdGZvcm0vRmVhdHVyZS5oIgogCiAjaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAg
LTc5NCwxMSArNzk0LDE4IEBAIGdsOjpSZWN0YW5nbGUgQ2xpcFJlY3RUb1NjaXNzb3IoY29uc3Qg
Z2w6OlN0YXRlICZnbFN0YXRlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZyCiAgICAgcmV0dXJuIHJl
Y3Q7CiB9CiAKLXZvaWQgT3ZlcnJpZGVGZWF0dXJlc1dpdGhEaXNwbGF5U3RhdGUoYW5nbGU6OkZl
YXR1cmVTZXRCYXNlICpmZWF0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKQordm9pZCBBcHBseUZlYXR1cmVP
dmVycmlkZXMoYW5nbGU6OkZlYXR1cmVTZXRCYXNlICpmZWF0dXJlcywgY29uc3QgZWdsOjpEaXNw
bGF5U3RhdGUgJnN0YXRlKQogewogICAgIGZlYXR1cmVzLT5vdmVycmlkZUZlYXR1cmVzKHN0YXRl
LmZlYXR1cmVPdmVycmlkZXNFbmFibGVkLCB0cnVlKTsKICAgICBmZWF0dXJlcy0+b3ZlcnJpZGVG
ZWF0dXJlcyhzdGF0ZS5mZWF0dXJlT3ZlcnJpZGVzRGlzYWJsZWQsIGZhbHNlKTsKKworICAgIC8v
IE92ZXJyaWRlIHdpdGggZW52aXJvbm1lbnQgYXMgd2VsbC4KKyAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gb3ZlcnJpZGVzRW5hYmxlZCA9CisgICAgICAgIGFuZ2xlOjpHZXRTdHJpbmdzRnJv
bUVudmlyb25tZW50VmFyKCJBTkdMRV9GRUFUVVJFX09WRVJSSURFU19FTkFCTEVEIiwgIjoiKTsK
KyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gb3ZlcnJpZGVzRGlzYWJsZWQgPQorICAgICAg
ICBhbmdsZTo6R2V0U3RyaW5nc0Zyb21FbnZpcm9ubWVudFZhcigiQU5HTEVfRkVBVFVSRV9PVkVS
UklERVNfRElTQUJMRUQiLCAiOiIpOworICAgIGZlYXR1cmVzLT5vdmVycmlkZUZlYXR1cmVzKG92
ZXJyaWRlc0VuYWJsZWQsIHRydWUpOworICAgIGZlYXR1cmVzLT5vdmVycmlkZUZlYXR1cmVzKG92
ZXJyaWRlc0Rpc2FibGVkLCBmYWxzZSk7CiB9CiAKIHZvaWQgR2V0U2FtcGxlUG9zaXRpb24oR0xz
aXplaSBzYW1wbGVDb3VudCwgc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91
dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Jl
bmRlcmVyX3V0aWxzLmgKaW5kZXggYzhiNzY3OGE1YjcxNjNkMDY0ZDJkMDVmYjUxMzI1NzU5YjBl
MThlNi4uZmVlMDI0YmJmYTFkZjI5MjNiMjE4ODBmMTAwMzYwMjJkYjliMGY0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVy
X3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3JlbmRlcmVyX3V0aWxzLmgKQEAgLTIzNSw4ICsyMzUsNyBAQCBhbmdsZTo6UmVzdWx0IEdl
dFZlcnRleFJhbmdlSW5mbyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIGdsOjpSZWN0YW5n
bGUgQ2xpcFJlY3RUb1NjaXNzb3IoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlLCBjb25zdCBnbDo6
UmVjdGFuZ2xlICZyZWN0LCBib29sIGludmVydFkpOwogCiAvLyBIZWxwZXIgbWV0aG9kIHRvIGlu
dGlhbGl6ZSBhIEZlYXR1cmVTZXQgd2l0aCBvdmVycmlkZXMgZnJvbSB0aGUgRGlzcGxheVN0YXRl
Ci12b2lkIE92ZXJyaWRlRmVhdHVyZXNXaXRoRGlzcGxheVN0YXRlKGFuZ2xlOjpGZWF0dXJlU2V0
QmFzZSAqZmVhdHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7Cit2b2lkIEFwcGx5RmVhdHVyZU92ZXJyaWRl
cyhhbmdsZTo6RmVhdHVyZVNldEJhc2UgKmZlYXR1cmVzLCBjb25zdCBlZ2w6OkRpc3BsYXlTdGF0
ZSAmc3RhdGUpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW4+CiB1aW50MzJfdCBMaW5lTG9vcFJl
c3RhcnRJbmRleENvdW50SGVscGVyKEdMc2l6ZWkgaW5kZXhDb3VudCwgY29uc3QgdWludDhfdCAq
c3JjUHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3NlcmlhbF91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3NlcmlhbF91dGlscy5oCmluZGV4IGM5YTAyZjQ4MmZhM2Y0ZjQyM2M2
ZWU2MGM3NWEzODIxNDljYTg4NTIuLmJlNzAxNWQ4Mzc2ODc2NDVmMDU0YzlmZGJiMjA2ZWQ3MzU5
ZTk4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9zZXJpYWxfdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvc2VyaWFsX3V0aWxzLmgKQEAgLTExLDYgKzExLDcgQEAKICNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfU0VSSUFMX1VUSUxTX0hfCiAKICNpbmNsdWRlIDxhdG9taWM+
CisjaW5jbHVkZSA8bGltaXRzPgogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNp
bmNsdWRlICJjb21tb24vZGVidWcuaCIKQEAgLTQ1LDYgKzQ2LDggQEAgY2xhc3MgU2VyaWFsIGZp
bmFsCiAgICAgY29uc3RleHByIFNlcmlhbChjb25zdCBTZXJpYWwgJm90aGVyKSA9IGRlZmF1bHQ7
CiAgICAgU2VyaWFsICZvcGVyYXRvcj0oY29uc3QgU2VyaWFsICZvdGhlcikgPSBkZWZhdWx0Owog
CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZXJpYWwgSW5maW5pdGUoKSB7IHJldHVybiBTZXJpYWwo
c3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsgfQorCiAgICAgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJpYWwgJm90aGVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1WYWx1ZSAhPSBrSW52YWxpZCAmJiBtVmFsdWUgPT0gb3RoZXIubVZhbHVlOwpA
QCAtNzUsNiArNzgsOSBAQCBjbGFzcyBTZXJpYWwgZmluYWwKICAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQ2NF90IGtJbnZhbGlkID0gMDsKIH07CiAKKy8vIFVzZWQgYXMgZGVmYXVsdC9pbml0aWFs
IHNlcmlhbAorc3RhdGljIGNvbnN0ZXhwciBTZXJpYWwga1plcm9TZXJpYWwgPSBTZXJpYWwoKTsK
KwogdGVtcGxhdGUgPHR5cGVuYW1lIFNlcmlhbEJhc2VUeXBlPgogY2xhc3MgU2VyaWFsRmFjdG9y
eUJhc2UgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQlVJTEQuZ24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0JVSUxE
LmduCmluZGV4IGMyY2JhMDBmNzg4OGNjYTI0NTgxMGUzZTc0ZGYzNzlkZWFmMDA3ZDcuLjM4NzVj
YWQwNWVlYmJkOTBjMWY2NDhjNGY2NWE1NzIwZGRkNjg4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQlVJTEQuZ24KKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9C
VUlMRC5nbgpAQCAtMjAsOCArMjAsNiBAQCBkZWNsYXJlX2FyZ3MoKSB7CiBfdnVsa2FuX2JhY2tl
bmRfc291cmNlcyA9IFsKICAgIkJ1ZmZlclZrLmNwcCIsCiAgICJCdWZmZXJWay5oIiwKLSAgIkNv
bW1hbmRHcmFwaC5jcHAiLAotICAiQ29tbWFuZEdyYXBoLmgiLAogICAiQ29tcGlsZXJWay5jcHAi
LAogICAiQ29tcGlsZXJWay5oIiwKICAgIkNvbnRleHRWay5jcHAiLApAQCAtNDUsMTggKzQzLDIy
IEBAIF92dWxrYW5fYmFja2VuZF9zb3VyY2VzID0gWwogICAiT3ZlcmxheVZrLmgiLAogICAiUGVy
c2lzdGVudENvbW1hbmRQb29sLmNwcCIsCiAgICJQZXJzaXN0ZW50Q29tbWFuZFBvb2wuaCIsCi0g
ICJQcm9ncmFtVmsuY3BwIiwKLSAgIlByb2dyYW1Way5oIiwKKyAgIlByb2dyYW1FeGVjdXRhYmxl
VmsuY3BwIiwKKyAgIlByb2dyYW1FeGVjdXRhYmxlVmsuaCIsCiAgICJQcm9ncmFtUGlwZWxpbmVW
ay5jcHAiLAogICAiUHJvZ3JhbVBpcGVsaW5lVmsuaCIsCisgICJQcm9ncmFtVmsuY3BwIiwKKyAg
IlByb2dyYW1Way5oIiwKICAgIlF1ZXJ5VmsuY3BwIiwKICAgIlF1ZXJ5VmsuaCIsCisgICJSZW5k
ZXJUYXJnZXRWay5jcHAiLAorICAiUmVuZGVyVGFyZ2V0VmsuaCIsCiAgICJSZW5kZXJidWZmZXJW
ay5jcHAiLAogICAiUmVuZGVyYnVmZmVyVmsuaCIsCiAgICJSZW5kZXJlclZrLmNwcCIsCiAgICJS
ZW5kZXJlclZrLmgiLAotICAiUmVuZGVyVGFyZ2V0VmsuY3BwIiwKLSAgIlJlbmRlclRhcmdldFZr
LmgiLAorICAiUmVzb3VyY2VWay5jcHAiLAorICAiUmVzb3VyY2VWay5oIiwKICAgIlNhbXBsZXJW
ay5jcHAiLAogICAiU2FtcGxlclZrLmgiLAogICAiU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5jcHAi
LApAQCAtODMsMTIgKzg1LDEyIEBAIF92dWxrYW5fYmFja2VuZF9zb3VyY2VzID0gWwogICAidmtf
Y2Fwc191dGlscy5oIiwKICAgInZrX2V4dF9wcm92b2tpbmdfdmVydGV4LmgiLAogICAidmtfZm9y
bWF0X3RhYmxlX2F1dG9nZW4uY3BwIiwKLSAgInZrX2Zvcm1hdF91dGlscy5oIiwKICAgInZrX2Zv
cm1hdF91dGlscy5jcHAiLAorICAidmtfZm9ybWF0X3V0aWxzLmgiLAogICAidmtfaGVscGVycy5j
cHAiLAogICAidmtfaGVscGVycy5oIiwKLSAgInZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5o
IiwKICAgInZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5jcHAiLAorICAidmtfaW50ZXJuYWxf
c2hhZGVyc19hdXRvZ2VuLmgiLAogICAidmtfbWFuZGF0b3J5X2Zvcm1hdF9zdXBwb3J0X3RhYmxl
X2F1dG9nZW4uY3BwIiwKICAgInZrX3V0aWxzLmNwcCIsCiAgICJ2a191dGlscy5oIiwKQEAgLTE0
NCwxMCArMTQ2LDEyIEBAIGlmIChpc19nZ3ApIHsKIAogaWYgKGlzX21hYykgewogICBfdnVsa2Fu
X2JhY2tlbmRfc291cmNlcyArPSBbCi0gICAgIm1hYy9EaXNwbGF5VmtNYWMubW0iLAogICAgICJt
YWMvRGlzcGxheVZrTWFjLmgiLAotICAgICJtYWMvV2luZG93U3VyZmFjZVZrTWFjLm1tIiwKKyAg
ICAibWFjL0Rpc3BsYXlWa01hYy5tbSIsCisgICAgIm1hYy9JT1N1cmZhY2VTdXJmYWNlVmtNYWMu
aCIsCisgICAgIm1hYy9JT1N1cmZhY2VTdXJmYWNlVmtNYWMubW0iLAogICAgICJtYWMvV2luZG93
U3VyZmFjZVZrTWFjLmgiLAorICAgICJtYWMvV2luZG93U3VyZmFjZVZrTWFjLm1tIiwKICAgXQog
fQogCkBAIC0xNjcsMTIgKzE3MSwxMCBAQCBncm91cCgiYW5nbGVfdnVsa2FuX2VudHJ5X3BvaW50
cyIpIHsKICAgICBwdWJsaWNfZGVwcyArPSBbCiAgICAgICAiJGFuZ2xlX3Jvb3Qvc3JjL2NvbW1v
bi9mdWNoc2lhX2VnbCIsCiAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkazp2dWxrYW5f
YmFzZSIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6dnVsa2FuIiwKKyAg
ICAgICIvL3RoaXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3Nkay9wa2cvdnVsa2FuIiwKICAgICBdCiAg
IH0gZWxzZSBpZiAoIWlzX2FuZHJvaWQgJiYgIWlzX2dncCkgewotICAgIGRhdGFfZGVwcyA9IFsK
LSAgICAgICIkYW5nbGVfcm9vdC90aGlyZF9wYXJ0eS92dWxrYW4tbG9hZGVyL3NyYzpsaWJ2dWxr
YW4iLAotICAgIF0KKyAgICBkYXRhX2RlcHMgPSBbICIkYW5nbGVfcm9vdC90aGlyZF9wYXJ0eS92
dWxrYW4tbG9hZGVyL3NyYzpsaWJ2dWxrYW4iIF0KICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZr
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vQnVmZmVyVmsuY3BwCmluZGV4IDljMTI5ZTMwZTdkZjEzZGI1MWY4MTFjNTBhNWZhOTYzN2U1
M2UwZjguLmEwMjE2N2NmNmRiYjk0NWYyYjEyZGY1NDc3NWUzNjJkMGViZTI4M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
QnVmZmVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuY3BwCkBAIC01OCwxNiArNTgsNDkgQEAgc2l6ZV90IENh
bGN1bGF0ZVN0YWdpbmdCdWZmZXJTaXplKGdsOjpCdWZmZXJCaW5kaW5nIHRhcmdldCwgc2l6ZV90
IHNpemUsIHNpemVfdAogICAgICAgICAgICAgcmV0dXJuIGtTdGFnaW5nQnVmZmVyQmFzZVNpemU7
CiAgICAgfQogfQorCisvLyBCdWZmZXJzIHRoYXQgaGF2ZSBhIHN0YXRpYyB1c2FnZSBwYXR0ZXJu
IHdpbGwgYmUgYWxsb2NhdGVkIGluCisvLyBkZXZpY2UgbG9jYWwgbWVtb3J5IHRvIHNwZWVkIHVw
IGFjY2VzcyB0byBhbmQgZnJvbSB0aGUgR1BVLgorLy8gRHluYW1pYyB1c2FnZSBwYXR0ZXJucyBv
ciB0aGF0IGFyZSBmcmVxdWVudGx5IG1hcHBlZAorLy8gd2lsbCBub3cgcmVxdWVzdCBob3N0IGNh
Y2hlZCBtZW1vcnkgdG8gc3BlZWQgdXAgYWNjZXNzIGZyb20gdGhlIENQVS4KK0FOR0xFX0lOTElO
RSBWa01lbW9yeVByb3BlcnR5RmxhZ3MgR2V0UHJlZmVycmVkTWVtb3J5VHlwZShnbDo6QnVmZmVy
QmluZGluZyB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkJ1ZmZlclVzYWdlIHVzYWdlKQoreworICAgIGNvbnN0ZXhw
ciBWa01lbW9yeVByb3BlcnR5RmxhZ3Mga0RldmljZUxvY2FsRmxhZ3MgPQorICAgICAgICAoVktf
TUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJMRV9CSVQgfCBWS19NRU1PUllfUFJPUEVSVFlfSE9T
VF9DT0hFUkVOVF9CSVQgfAorICAgICAgICAgVktfTUVNT1JZX1BST1BFUlRZX0RFVklDRV9MT0NB
TF9CSVQpOworICAgIGNvbnN0ZXhwciBWa01lbW9yeVByb3BlcnR5RmxhZ3Mga0hvc3RDYWNoZWRG
bGFncyA9CisgICAgICAgIChWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCB8IFZL
X01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJVCB8CisgICAgICAgICBWS19NRU1PUllf
UFJPUEVSVFlfSE9TVF9DQUNIRURfQklUKTsKKworICAgIGlmICh0YXJnZXQgPT0gZ2w6OkJ1ZmZl
ckJpbmRpbmc6OlBpeGVsVW5wYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGtIb3N0Q2FjaGVk
RmxhZ3M7CisgICAgfQorCisgICAgc3dpdGNoICh1c2FnZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
Z2w6OkJ1ZmZlclVzYWdlOjpTdGF0aWNDb3B5OgorICAgICAgICBjYXNlIGdsOjpCdWZmZXJVc2Fn
ZTo6U3RhdGljRHJhdzoKKyAgICAgICAgY2FzZSBnbDo6QnVmZmVyVXNhZ2U6OlN0YXRpY1JlYWQ6
CisgICAgICAgICAgICAvLyBGb3Igc3RhdGljIHVzYWdlLCByZXF1ZXN0IGEgZGV2aWNlIGxvY2Fs
IG1lbW9yeQorICAgICAgICAgICAgcmV0dXJuIGtEZXZpY2VMb2NhbEZsYWdzOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgLy8gRm9yIG5vbi1zdGF0aWMgdXNhZ2UsIHJlcXVlc3QgYSBo
b3N0IGNhY2hlZCBtZW1vcnkKKyAgICAgICAgICAgIHJldHVybiBrSG9zdENhY2hlZEZsYWdzOwor
ICAgIH0KK30KIH0gIC8vIG5hbWVzcGFjZQogCiAvLyBDb252ZXJzaW9uQnVmZmVyIGltcGxlbWVu
dGF0aW9uLgogQ29udmVyc2lvbkJ1ZmZlcjo6Q29udmVyc2lvbkJ1ZmZlcihSZW5kZXJlclZrICpy
ZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtCdWZmZXJVc2Fn
ZUZsYWdzIHVzYWdlRmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbml0aWFsU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGFsaWdubWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBob3N0
VmlzaWJsZSkKICAgICA6IGRpcnR5KHRydWUpLCBsYXN0QWxsb2NhdGlvbk9mZnNldCgwKQogewot
ICAgIGRhdGEuaW5pdChyZW5kZXJlciwgdXNhZ2VGbGFncywgYWxpZ25tZW50LCBpbml0aWFsU2l6
ZSwgdHJ1ZSk7CisgICAgZGF0YS5pbml0KHJlbmRlcmVyLCB1c2FnZUZsYWdzLCBhbGlnbm1lbnQs
IGluaXRpYWxTaXplLCBob3N0VmlzaWJsZSk7CiB9CiAKIENvbnZlcnNpb25CdWZmZXI6On5Db252
ZXJzaW9uQnVmZmVyKCkgPSBkZWZhdWx0OwpAQCAtNzgsMTEgKzExMSwxMyBAQCBDb252ZXJzaW9u
QnVmZmVyOjpDb252ZXJzaW9uQnVmZmVyKENvbnZlcnNpb25CdWZmZXIgJiZvdGhlcikgPSBkZWZh
dWx0OwogQnVmZmVyVms6OlZlcnRleENvbnZlcnNpb25CdWZmZXI6OlZlcnRleENvbnZlcnNpb25C
dWZmZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0SUQgZm9ybWF0SURJbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBzdHJpZGVJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXRJbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaG9zdFZpc2libGUpCiAgICAgOiBDb252ZXJzaW9uQnVmZmVyKHJlbmRlcmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICB2azo6a1ZlcnRleEJ1ZmZlclVzYWdlRmxhZ3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGtDb252ZXJ0ZWRBcnJheUJ1ZmZlckluaXRpYWxTaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICB2azo6a1ZlcnRleEJ1ZmZlckFsaWdubWVudCksCisgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjprVmVydGV4QnVmZmVyQWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICBob3N0VmlzaWJsZSksCiAgICAgICBmb3JtYXRJRChmb3JtYXRJREluKSwKICAgICAgIHN0
cmlkZShzdHJpZGVJbiksCiAgICAgICBvZmZzZXQob2Zmc2V0SW4pCkBAIC0xNjQsOCArMTk5LDcg
QEAgYW5nbGU6OlJlc3VsdCBCdWZmZXJWazo6c2V0RGF0YShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgY3JlYXRlSW5mby5wUXVldWVGYW1pbHlJbmRpY2VzICAgPSBudWxscHRy
OwogCiAgICAgICAgIC8vIEFzc3VtZSBob3N0IHZpc2libGUvY29oZXJlbnQgbWVtb3J5IGF2YWls
YWJsZS4KLSAgICAgICAgY29uc3QgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbW9yeVByb3BlcnR5
RmxhZ3MgPQotICAgICAgICAgICAgKFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklU
IHwgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfQ09IRVJFTlRfQklUKTsKKyAgICAgICAgVmtNZW1v
cnlQcm9wZXJ0eUZsYWdzIG1lbW9yeVByb3BlcnR5RmxhZ3MgPSBHZXRQcmVmZXJyZWRNZW1vcnlU
eXBlKHRhcmdldCwgdXNhZ2UpOwogCiAgICAgICAgIEFOR0xFX1RSWShtQnVmZmVyLmluaXQoY29u
dGV4dFZrLCBjcmVhdGVJbmZvLCBtZW1vcnlQcm9wZXJ0eUZsYWdzKSk7CiAKQEAgLTIwOCwzMSAr
MjQyLDkgQEAgYW5nbGU6OlJlc3VsdCBCdWZmZXJWazo6Y29weVN1YkRhdGEoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsCiAKICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9
IG51bGxwdHI7CiAKLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCi0g
ICAgewotICAgICAgICAvLyBIYW5kbGUgc2VsZi1kZXBlbmRlbmN5IGVzcGVjaWFsbHkuCi0gICAg
ICAgIGlmIChzb3VyY2VCdWZmZXItPm1CdWZmZXIuZ2V0QnVmZmVyKCkuZ2V0SGFuZGxlKCkgPT0g
bUJ1ZmZlci5nZXRCdWZmZXIoKS5nZXRIYW5kbGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gV2Ugc2V0IHRoZSBUUkFOU0ZFUl9SRUFEX0JJVCB0byBiZSBjb25zZXJ2YXRpdmUuCi0gICAg
ICAgICAgICBtQnVmZmVyLm9uU2VsZlJlYWRXcml0ZShjb250ZXh0VmssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQgfCBWS19B
Q0NFU1NfVFJBTlNGRVJfV1JJVEVfQklUKTsKLQotICAgICAgICAgICAgQU5HTEVfVFJZKG1CdWZm
ZXIucmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgQU5HTEVfVFJZKG1CdWZmZXIu
cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgICAgICAg
ICBzb3VyY2VCdWZmZXItPm1CdWZmZXIub25SZWFkQnlCdWZmZXIoY29udGV4dFZrLCAmbUJ1ZmZl
ciwgVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnRleHRWay0+b25C
dWZmZXJSZWFkKFZLX0FDQ0VTU19UUkFOU0ZFUl9SRUFEX0JJVCwgJnNvdXJjZUJ1ZmZlci0+Z2V0
QnVmZmVyKCkpOwotICAgICAgICBjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1RS
QU5TRkVSX1dSSVRFX0JJVCwgJm1CdWZmZXIpOwotICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZr
LT5nZXRPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKLSAg
ICB9CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19UUkFO
U0ZFUl9SRUFEX0JJVCwgJnNvdXJjZUJ1ZmZlci0+Z2V0QnVmZmVyKCkpKTsKKyAgICBBTkdMRV9U
UlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQs
ICZtQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdl
dENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgIC8vIEVucXVldWUgYSBjb3B5
IGNvbW1hbmQgb24gdGhlIEdQVS4KICAgICBjb25zdCBWa0J1ZmZlckNvcHkgY29weVJlZ2lvbiA9
IHtzdGF0aWNfY2FzdDxWa0RldmljZVNpemU+KHNvdXJjZU9mZnNldCksCkBAIC0yODAsMTMgKzI5
MiwxMyBAQCBhbmdsZTo6UmVzdWx0IEJ1ZmZlclZrOjptYXBSYW5nZUltcGwoQ29udGV4dFZrICpj
b250ZXh0VmssCiAgICAgaWYgKChhY2Nlc3MgJiBHTF9NQVBfVU5TWU5DSFJPTklaRURfQklUKSA9
PSAwKQogICAgIHsKICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHBlbmRpbmcgY29tbWFuZHMgZm9y
IHRoZSBidWZmZXIsIGZsdXNoIHRoZW0uCi0gICAgICAgIGlmIChtQnVmZmVyLmhhc1JlY29yZGVk
Q29tbWFuZHMoKSkKKyAgICAgICAgaWYgKG1CdWZmZXIudXNlZEluUmVjb3JkZWRDb21tYW5kcygp
KQogICAgICAgICB7CiAgICAgICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5mbHVzaEltcGwo
bnVsbHB0cikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBkcml2ZXIg
aXMgZG9uZSB3aXRoIHRoZSBidWZmZXIuCi0gICAgICAgIGlmIChtQnVmZmVyLmhhc1J1bm5pbmdD
b21tYW5kcyhjb250ZXh0VmstPmdldExhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCgpKSkKKyAgICAg
ICAgaWYgKG1CdWZmZXIudXNlZEluUnVubmluZ0NvbW1hbmRzKGNvbnRleHRWay0+Z2V0TGFzdENv
bXBsZXRlZFF1ZXVlU2VyaWFsKCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBBTkdMRV9UUlko
bUJ1ZmZlci5maW5pc2hSdW5uaW5nQ29tbWFuZHMoY29udGV4dFZrKSk7CiAgICAgICAgIH0KQEAg
LTM4Niw5ICszOTgsOSBAQCBhbmdsZTo6UmVzdWx0IEJ1ZmZlclZrOjpzZXREYXRhSW1wbChDb250
ZXh0VmsgKmNvbnRleHRWaywKIAogICAgICAgICAvLyBFbnF1ZXVlIGEgY29weSBjb21tYW5kIG9u
IHRoZSBHUFUuCiAgICAgICAgIFZrQnVmZmVyQ29weSBjb3B5UmVnaW9uID0ge3N0YWdpbmdCdWZm
ZXJPZmZzZXQsIG9mZnNldCwgc2l6ZX07Ci0gICAgICAgIEFOR0xFX1RSWShtQnVmZmVyLmNvcHlG
cm9tQnVmZmVyKGNvbnRleHRWaywgbVN0YWdpbmdCdWZmZXIuZ2V0Q3VycmVudEJ1ZmZlcigpLT5n
ZXRCdWZmZXIoKSwKKyAgICAgICAgQU5HTEVfVFJZKG1CdWZmZXIuY29weUZyb21CdWZmZXIoY29u
dGV4dFZrLCBtU3RhZ2luZ0J1ZmZlci5nZXRDdXJyZW50QnVmZmVyKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0FDQ0VTU19IT1NUX1dSSVRFX0JJVCwgY29w
eVJlZ2lvbikpOwotICAgICAgICBtU3RhZ2luZ0J1ZmZlci5nZXRDdXJyZW50QnVmZmVyKCktPm9u
UmVzb3VyY2VBY2Nlc3MoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworICAgICAg
ICBtU3RhZ2luZ0J1ZmZlci5nZXRDdXJyZW50QnVmZmVyKCktPnJldGFpbigmY29udGV4dFZrLT5n
ZXRSZXNvdXJjZVVzZUxpc3QoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC00MTUsMzEg
KzQyNywyMCBAQCBhbmdsZTo6UmVzdWx0IEJ1ZmZlclZrOjpjb3B5VG9CdWZmZXIoQ29udGV4dFZr
ICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmtCdWZmZXJDb3B5ICpjb3BpZXMpCiB7CiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRC
dWZmZXI7Ci0gICAgaWYgKGNvbnRleHRWay0+Y29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsK
LSAgICAgICAgQU5HTEVfVFJZKGRlc3RCdWZmZXItPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywg
JmNvbW1hbmRCdWZmZXIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgY29udGV4
dFZrLT5vbkJ1ZmZlcldyaXRlKFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQsIGRlc3RCdWZm
ZXIpOwotICAgICAgICBjb250ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1NfVFJBTlNGRVJf
UkVBRF9CSVQsICZtQnVmZmVyKTsKLSAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Z2V0T3V0
c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQorICAg
IEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1RSQU5TRkVSX1dS
SVRFX0JJVCwgZGVzdEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVy
UmVhZChWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsICZtQnVmZmVyKSk7CisgICAgQU5HTEVf
VFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRC
dWZmZXIpKTsKIAogICAgIGNvbW1hbmRCdWZmZXItPmNvcHlCdWZmZXIobUJ1ZmZlci5nZXRCdWZm
ZXIoKSwgZGVzdEJ1ZmZlci0+Z2V0QnVmZmVyKCksIGNvcHlDb3VudCwgY29waWVzKTsKIAotICAg
IGlmIChjb250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIG1C
dWZmZXIub25SZWFkQnlCdWZmZXIoY29udGV4dFZrLCBkZXN0QnVmZmVyLCBWS19BQ0NFU1NfVFJB
TlNGRVJfUkVBRF9CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUNDRVNT
X1RSQU5TRkVSX1dSSVRFX0JJVCk7Ci0gICAgfQogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKIH0KIAogQ29udmVyc2lvbkJ1ZmZlciAqQnVmZmVyVms6OmdldFZlcnRleENvbnZl
cnNpb25CdWZmZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0SUQgZm9ybWF0SUQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhvc3RWaXNpYmxlKQog
ewogICAgIGZvciAoVmVydGV4Q29udmVyc2lvbkJ1ZmZlciAmYnVmZmVyIDogbVZlcnRleENvbnZl
cnNpb25CdWZmZXJzKQogICAgIHsKQEAgLTQ0OSw3ICs0NTAsNyBAQCBDb252ZXJzaW9uQnVmZmVy
ICpCdWZmZXJWazo6Z2V0VmVydGV4Q29udmVyc2lvbkJ1ZmZlcihSZW5kZXJlclZrICpyZW5kZXJl
ciwKICAgICAgICAgfQogICAgIH0KIAotICAgIG1WZXJ0ZXhDb252ZXJzaW9uQnVmZmVycy5lbXBs
YWNlX2JhY2socmVuZGVyZXIsIGZvcm1hdElELCBzdHJpZGUsIG9mZnNldCk7CisgICAgbVZlcnRl
eENvbnZlcnNpb25CdWZmZXJzLmVtcGxhY2VfYmFjayhyZW5kZXJlciwgZm9ybWF0SUQsIHN0cmlk
ZSwgb2Zmc2V0LCBob3N0VmlzaWJsZSk7CiAgICAgcmV0dXJuICZtVmVydGV4Q29udmVyc2lvbkJ1
ZmZlcnMuYmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgKaW5kZXggY2Vi
ZTYyODE4MTQ2YTM5YjE5MWU4MjNmOWQ1NDBhMWUwZWRlNjE2Ny4uNWJhNTA3OGQ5N2QxYmY2YWM0
ZWFlMDNiYTA2YjljNGE3M2I3ODRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaApA
QCAtMjUsNyArMjUsOCBAQCBzdHJ1Y3QgQ29udmVyc2lvbkJ1ZmZlcgogICAgIENvbnZlcnNpb25C
dWZmZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICBWa0J1ZmZl
clVzYWdlRmxhZ3MgdXNhZ2VGbGFncywKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbml0
aWFsU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhbGlnbm1lbnQpOworICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaG9zdFZpc2libGUpOwogICAgIH5Db252ZXJzaW9uQnVmZmVyKCk7CiAKICAgICBDb252ZXJz
aW9uQnVmZmVyKENvbnZlcnNpb25CdWZmZXIgJiZvdGhlcik7CkBAIC0xMTAsNyArMTExLDggQEAg
Y2xhc3MgQnVmZmVyVmsgOiBwdWJsaWMgQnVmZmVySW1wbAogICAgIENvbnZlcnNpb25CdWZmZXIg
KmdldFZlcnRleENvbnZlcnNpb25CdWZmZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0SUQg
Zm9ybWF0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBob3N0VmlzaWJsZSk7CiAKICAgcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVTdGFnaW5nQnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLCBn
bDo6QnVmZmVyQmluZGluZyB0YXJnZXQsIHNpemVfdCBzaXplKTsKQEAgLTEyNiw3ICsxMjgsOCBA
QCBjbGFzcyBCdWZmZXJWayA6IHB1YmxpYyBCdWZmZXJJbXBsCiAgICAgICAgIFZlcnRleENvbnZl
cnNpb25CdWZmZXIoUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdElEIGZvcm1hdElESW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHN0cmlkZUluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvZmZzZXRJbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG9mZnNldEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaG9zdFZp
c2libGUpOwogICAgICAgICB+VmVydGV4Q29udmVyc2lvbkJ1ZmZlcigpOwogCiAgICAgICAgIFZl
cnRleENvbnZlcnNpb25CdWZmZXIoVmVydGV4Q29udmVyc2lvbkJ1ZmZlciAmJm90aGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vQ29tbWFuZEdyYXBoLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vQ29tbWFuZEdyYXBoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzlhMmMxNjQ2NDRlZDk2NzI1YWZmOTNmYThlZGQxOTliNWY1YWEwYi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzc4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBDb21tYW5kR3Jh
cGg6Ci0vLyAgICBEZWZlcnJlZCB3b3JrIGNvbnN0cnVjdGVkIGJ5IEdMIGNhbGxzLCB0aGF0IHdp
bGwgbGF0ZXIgYmUgZmx1c2hlZCB0byBWdWxrYW4uCi0vLwotCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5oIgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0K
LSNpbmNsdWRlICJsaWJBTkdMRS9PdmVybGF5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0NvbnRleHRWay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9SZW5kZXJUYXJnZXRWay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9S
ZW5kZXJlclZrLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1h
dF91dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJz
LmgiCi0KLSNpbmNsdWRlICJsaWJBTkdMRS90cmFjZS5oIgotCi1uYW1lc3BhY2UgcngKLXsKLW5h
bWVzcGFjZSB2awotewotbmFtZXNwYWNlCi17Ci1BTkdMRV9NQVlCRV9VTlVTRUQKLWFuZ2xlOjpS
ZXN1bHQgSW5pdEFuZEJlZ2luQ29tbWFuZEJ1ZmZlcihDb250ZXh0VmsgKmNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29tbWFuZFBvb2wgJmNv
bW1hbmRQb29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZrQ29tbWFuZEJ1ZmZlckluaGVyaXRhbmNlSW5mbyAmaW5oZXJpdGFuY2VJbmZvLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQ29tbWFuZEJ1ZmZlclVzYWdlRmxh
Z3MgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OlBvb2xBbGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpdjo6U2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZl
cikKLXsKLSAgICBBU1NFUlQoIWNvbW1hbmRCdWZmZXItPnZhbGlkKCkpOwotICAgIGNvbW1hbmRC
dWZmZXItPmluaXRpYWxpemUocG9vbEFsbG9jYXRvcik7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwotfQotCi1BTkdMRV9NQVlCRV9VTlVTRUQKLWFuZ2xlOjpSZXN1bHQgSW5p
dEFuZEJlZ2luQ29tbWFuZEJ1ZmZlcih2azo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb21tYW5kUG9vbCAmY29tbWFuZFBv
b2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtDb21t
YW5kQnVmZmVySW5oZXJpdGFuY2VJbmZvICZpbmhlcml0YW5jZUluZm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtDb21tYW5kQnVmZmVyVXNhZ2VGbGFncyBmbGFn
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6UG9vbEFs
bG9jYXRvciAqcG9vbEFsbG9jYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcml2OjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKQotewotICAgIEFTU0VS
VCghY29tbWFuZEJ1ZmZlci0+dmFsaWQoKSk7Ci0gICAgQVNTRVJUKGNvbW1hbmRQb29sLnZhbGlk
KCkpOwotICAgIFZrQ29tbWFuZEJ1ZmZlckFsbG9jYXRlSW5mbyBjcmVhdGVJbmZvID0ge307Ci0g
ICAgY3JlYXRlSW5mby5zVHlwZSAgICAgICAgICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVf
VFlQRV9DT01NQU5EX0JVRkZFUl9BTExPQ0FURV9JTkZPOwotICAgIGNyZWF0ZUluZm8uY29tbWFu
ZFBvb2wgICAgICAgICAgICAgICAgID0gY29tbWFuZFBvb2wuZ2V0SGFuZGxlKCk7Ci0gICAgY3Jl
YXRlSW5mby5sZXZlbCAgICAgICAgICAgICAgICAgICAgICAgPSBWS19DT01NQU5EX0JVRkZFUl9M
RVZFTF9TRUNPTkRBUlk7Ci0gICAgY3JlYXRlSW5mby5jb21tYW5kQnVmZmVyQ291bnQgICAgICAg
ICAgPSAxOwotCi0gICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIGNvbW1hbmRCdWZmZXItPmluaXQo
Y29udGV4dC0+Z2V0RGV2aWNlKCksIGNyZWF0ZUluZm8pKTsKLQotICAgIFZrQ29tbWFuZEJ1ZmZl
ckJlZ2luSW5mbyBiZWdpbkluZm8gPSB7fTsKLSAgICBiZWdpbkluZm8uc1R5cGUgICAgICAgICAg
ICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQkVHSU5fSU5GTzsK
LSAgICBiZWdpbkluZm8uZmxhZ3MgICAgICAgICAgICAgICAgICAgID0gZmxhZ3MgfCBWS19DT01N
QU5EX0JVRkZFUl9VU0FHRV9PTkVfVElNRV9TVUJNSVRfQklUOwotICAgIGJlZ2luSW5mby5wSW5o
ZXJpdGFuY2VJbmZvICAgICAgICAgPSAmaW5oZXJpdGFuY2VJbmZvOwotCi0gICAgQU5HTEVfVktf
VFJZKGNvbnRleHQsIGNvbW1hbmRCdWZmZXItPmJlZ2luKGJlZ2luSW5mbykpOwotICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotY29uc3QgY2hhciAqR2V0UmVzb3VyY2VU
eXBlTmFtZShDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb24gZnVuY3Rpb24p
Ci17Ci0gICAgc3dpdGNoIChyZXNvdXJjZVR5cGUpCi0gICAgewotICAgICAgICBjYXNlIENvbW1h
bmRHcmFwaFJlc291cmNlVHlwZTo6QnVmZmVyOgotICAgICAgICAgICAgcmV0dXJuICJCdWZmZXIi
OwotICAgICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RnJhbWVidWZmZXI6Ci0g
ICAgICAgICAgICByZXR1cm4gIkZyYW1lYnVmZmVyIjsKLSAgICAgICAgY2FzZSBDb21tYW5kR3Jh
cGhSZXNvdXJjZVR5cGU6OkltYWdlOgotICAgICAgICAgICAgcmV0dXJuICJJbWFnZSI7Ci0gICAg
ICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpRdWVyeToKLSAgICAgICAgICAgIHN3
aXRjaCAoZnVuY3Rpb24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21t
YW5kR3JhcGhOb2RlRnVuY3Rpb246OkJlZ2luUXVlcnk6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiAiQmVnaW5RdWVyeSI7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2Rl
RnVuY3Rpb246OkVuZFF1ZXJ5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkVuZFF1ZXJ5
IjsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6V3JpdGVU
aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiV3JpdGVUaW1lc3RhbXAiOwot
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiUXVlcnkiOwotICAgICAgICAgICAgfQot
ICAgICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RGlzcGF0Y2hlcjoKLSAgICAg
ICAgICAgIHJldHVybiAiRGlzcGF0Y2hlciI7Ci0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoUmVz
b3VyY2VUeXBlOjpFbXVsYXRlZFF1ZXJ5OgotICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbikK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5j
dGlvbjo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFja1F1ZXJ5OgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gIkJlZ2luVHJhbnNmb3JtRmVlZGJhY2tRdWVyeSI7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkVuZFRyYW5zZm9ybUZlZWRiYWNrUXVlcnk6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiAiRW5kVHJhbnNmb3JtRmVlZGJhY2tRdWVyeSI7Ci0g
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJFbXVsYXRlZFF1ZXJ5IjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkZlbmNlU3luYzoK
LSAgICAgICAgICAgIHN3aXRjaCAoZnVuY3Rpb24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OlNldEZlbmNlU3luYzoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJTZXRGZW5jZVN5bmMiOwotICAgICAgICAgICAgICAgIGNh
c2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpXYWl0RmVuY2VTeW5jOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gIldhaXRGZW5jZVN5bmMiOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAiRmVuY2VTeW5jIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tYW5k
R3JhcGhSZXNvdXJjZVR5cGU6OkdyYXBoQmFycmllcjoKLSAgICAgICAgICAgIHJldHVybiAiR3Jh
cGhCYXJyaWVyIjsKLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkRlYnVn
TWFya2VyOgotICAgICAgICAgICAgc3dpdGNoIChmdW5jdGlvbikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6SW5zZXJ0RGVidWdN
YXJrZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0RGVidWdNYXJrZXIiOwot
ICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpQdXNoRGVidWdN
YXJrZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiUHVzaERlYnVnTWFya2VyIjsKLSAg
ICAgICAgICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6UG9wRGVidWdNYXJr
ZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiUG9wRGVidWdNYXJrZXIiOwotICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiAiRGVidWdNYXJrZXIiOwotICAgICAgICAgICAgfQot
ICAgICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6SG9zdEF2YWlsYWJpbGl0eU9w
ZXJhdGlvbjoKLSAgICAgICAgICAgIHN3aXRjaCAoZnVuY3Rpb24pCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246Okhvc3RBdmFpbGFi
aWxpdHlPcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiSG9zdEF2YWlsYWJp
bGl0eU9wZXJhdGlvbiI7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJIb3N0QXZh
aWxhYmlsaXR5T3BlcmF0aW9uIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgfQot
fQotCi1jb25zdCBjaGFyICpHZXRMb2FkT3BTaG9ydGhhbmQodWludDMyX3QgbG9hZE9wKQotewot
ICAgIHN3aXRjaCAobG9hZE9wKQotICAgIHsKLSAgICAgICAgY2FzZSBWS19BVFRBQ0hNRU5UX0xP
QURfT1BfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1cm4gIkMiOwotICAgICAgICBjYXNlIFZLX0FU
VEFDSE1FTlRfTE9BRF9PUF9MT0FEOgotICAgICAgICAgICAgcmV0dXJuICJMIjsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAiRCI7Ci0gICAgfQotfQotCi1jb25zdCBjaGFy
ICpHZXRTdG9yZU9wU2hvcnRoYW5kKHVpbnQzMl90IHN0b3JlT3ApCi17Ci0gICAgc3dpdGNoIChz
dG9yZU9wKQotICAgIHsKLSAgICAgICAgY2FzZSBWS19BVFRBQ0hNRU5UX1NUT1JFX09QX1NUT1JF
OgotICAgICAgICAgICAgcmV0dXJuICJTIjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHJldHVybiAiRCI7Ci0gICAgfQotfQotCi12b2lkIE1ha2VEZWJ1Z1V0aWxzTGFiZWwoR0xlbnVt
IHNvdXJjZSwgY29uc3QgY2hhciAqbWFya2VyLCBWa0RlYnVnVXRpbHNMYWJlbEVYVCAqbGFiZWwp
Ci17Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhbmdsZTo6Q29sb3JGIGtMYWJlbENvbG9yc1s2XSA9
IHsKLSAgICAgICAgYW5nbGU6OkNvbG9yRigxLjBmLCAwLjVmLCAwLjVmLCAxLjBmKSwgIC8vIERF
QlVHX1NPVVJDRV9BUEkKLSAgICAgICAgYW5nbGU6OkNvbG9yRigwLjVmLCAxLjBmLCAwLjVmLCAx
LjBmKSwgIC8vIERFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNCi0gICAgICAgIGFuZ2xlOjpDb2xv
ckYoMC41ZiwgMC41ZiwgMS4wZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJ
TEVSCi0gICAgICAgIGFuZ2xlOjpDb2xvckYoMC43ZiwgMC43ZiwgMC43ZiwgMS4wZiksICAvLyBE
RUJVR19TT1VSQ0VfVEhJUkRfUEFSVFkKLSAgICAgICAgYW5nbGU6OkNvbG9yRigwLjVmLCAwLjhm
LCAwLjlmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJDRV9BUFBMSUNBVElPTgotICAgICAgICBhbmds
ZTo6Q29sb3JGKDAuOWYsIDAuOGYsIDAuNWYsIDEuMGYpLCAgLy8gREVCVUdfU09VUkNFX09USEVS
Ci0gICAgfTsKLQotICAgIGludCBjb2xvckluZGV4ID0gc291cmNlIC0gR0xfREVCVUdfU09VUkNF
X0FQSTsKLSAgICBBU1NFUlQoY29sb3JJbmRleCA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4o
Y29sb3JJbmRleCkgPCBBcnJheVNpemUoa0xhYmVsQ29sb3JzKSk7Ci0KLSAgICBsYWJlbC0+c1R5
cGUgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0RFQlVHX1VUSUxTX0xBQkVMX0VYVDsKLSAgICBs
YWJlbC0+cE5leHQgICAgICA9IG51bGxwdHI7Ci0gICAgbGFiZWwtPnBMYWJlbE5hbWUgPSBtYXJr
ZXI7Ci0gICAga0xhYmVsQ29sb3JzW2NvbG9ySW5kZXhdLndyaXRlRGF0YShsYWJlbC0+Y29sb3Ip
OwotfQotCi1jb25zdGV4cHIgVmtTdWJwYXNzQ29udGVudHMga1JlbmRlclBhc3NDb250ZW50cyA9
Ci0gICAgQ29tbWFuZEJ1ZmZlcjo6RXhlY3V0ZXNJbmxpbmUoKSA/IFZLX1NVQlBBU1NfQ09OVEVO
VFNfSU5MSU5FCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZLX1NVQlBB
U1NfQ09OVEVOVFNfU0VDT05EQVJZX0NPTU1BTkRfQlVGRkVSUzsKLQotLy8gSGVscGVycyB0byB1
bmlmeSBleGVjdXRlQ29tbWFuZHMgY2FsbCBiYXNlZCBvbiB1bmRlcmx5aW5nIGNtZCBidWZmZXIg
dHlwZQotQU5HTEVfTUFZQkVfVU5VU0VECi12b2lkIEV4ZWN1dGVDb21tYW5kcyhQcmltYXJ5Q29t
bWFuZEJ1ZmZlciAqcHJpbUNtZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgIHByaXY6OlNl
Y29uZGFyeUNvbW1hbmRCdWZmZXIgKnNlY0NtZEJ1ZmZlcikKLXsKLSAgICBzZWNDbWRCdWZmZXIt
PmV4ZWN1dGVDb21tYW5kcyhwcmltQ21kQnVmZmVyLT5nZXRIYW5kbGUoKSk7Ci19Ci0KLUFOR0xF
X01BWUJFX1VOVVNFRAotdm9pZCBFeGVjdXRlQ29tbWFuZHMoUHJpbWFyeUNvbW1hbmRCdWZmZXIg
KnByaW1DbWRCdWZmZXIsIHByaXY6OkNvbW1hbmRCdWZmZXIgKnNlY0NtZEJ1ZmZlcikKLXsKLSAg
ICBwcmltQ21kQnVmZmVyLT5leGVjdXRlQ29tbWFuZHMoMSwgc2VjQ21kQnVmZmVyKTsKLX0KLQot
QU5HTEVfTUFZQkVfVU5VU0VECi12b2lkIEluc2VydEJlZ2luVHJhbnNmb3JtRmVlZGJhY2soUHJp
bWFyeUNvbW1hbmRCdWZmZXIgKnByaW1DbWRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpdjo6U2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWxpZEJ1ZmZlckNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyICpj
b3VudGVyQnVmZmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJl
YmluZEJ1ZmZlcikKLXsKLSAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzQXJyYXk8VmtE
ZXZpY2VTaXplPiBvZmZzZXRzID0gezAsIDAsIDAsIDB9OwotICAgIHVpbnQzMl90IGNvdW50ZXJC
dWZmZXJTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAocmViaW5kQnVmZmVyKSA/
IDAgOiB2YWxpZEJ1ZmZlckNvdW50OwotCi0gICAgdmtDbWRCZWdpblRyYW5zZm9ybUZlZWRiYWNr
RVhUKHByaW1DbWRCdWZmZXItPmdldEhhbmRsZSgpLCAwLCBjb3VudGVyQnVmZmVyU2l6ZSwgY291
bnRlckJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHMu
ZGF0YSgpKTsKLX0KLQotQU5HTEVfTUFZQkVfVU5VU0VECi12b2lkIEluc2VydEVuZFRyYW5zZm9y
bUZlZWRiYWNrKFByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltQ21kQnVmZmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcml2OjpTZWNvbmRhcnlDb21tYW5kQnVmZmVyICZjb21t
YW5kQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWxp
ZEJ1ZmZlckNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1
ZmZlciAqY291bnRlckJ1ZmZlcnMpCi17Ci0gICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
c0FycmF5PFZrRGV2aWNlU2l6ZT4gb2Zmc2V0cyA9IHswLCAwLCAwLCAwfTsKLQotICAgIHZrQ21k
RW5kVHJhbnNmb3JtRmVlZGJhY2tFWFQocHJpbUNtZEJ1ZmZlci0+Z2V0SGFuZGxlKCksIDAsIHZh
bGlkQnVmZmVyQ291bnQsIGNvdW50ZXJCdWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0cy5kYXRhKCkpOwotfQotCi1BTkdMRV9NQVlCRV9VTlVTRUQKLXZvaWQg
SW5zZXJ0Q291bnRlckJ1ZmZlclBpcGVsaW5lQmFycmllcihQcmltYXJ5Q29tbWFuZEJ1ZmZlciAq
cHJpbUNtZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cml2OjpTZWNvbmRhcnlDb21tYW5kQnVmZmVyICZjb21tYW5kQnVmZmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyICpjb3VudGVyQnVmZmVy
cykKLXsKLSAgICBWa0J1ZmZlck1lbW9yeUJhcnJpZXIgYnVmZmVyQmFycmllciA9IHt9OwotICAg
IGJ1ZmZlckJhcnJpZXIuc1R5cGUgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVf
QlVGRkVSX01FTU9SWV9CQVJSSUVSOwotICAgIGJ1ZmZlckJhcnJpZXIucE5leHQgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBidWZmZXJCYXJyaWVyLnNyY0FjY2Vzc01hc2sgICAgICAg
ICA9IFZLX0FDQ0VTU19UUkFOU0ZPUk1fRkVFREJBQ0tfQ09VTlRFUl9XUklURV9CSVRfRVhUOwot
ICAgIGJ1ZmZlckJhcnJpZXIuZHN0QWNjZXNzTWFzayAgICAgICAgID0gVktfQUNDRVNTX1RSQU5T
Rk9STV9GRUVEQkFDS19DT1VOVEVSX1JFQURfQklUX0VYVDsKLSAgICBidWZmZXJCYXJyaWVyLnNy
Y1F1ZXVlRmFtaWx5SW5kZXggICA9IFZLX1FVRVVFX0ZBTUlMWV9JR05PUkVEOwotICAgIGJ1ZmZl
ckJhcnJpZXIuZHN0UXVldWVGYW1pbHlJbmRleCAgID0gVktfUVVFVUVfRkFNSUxZX0lHTk9SRUQ7
Ci0gICAgYnVmZmVyQmFycmllci5idWZmZXIgICAgICAgICAgICAgICAgPSBjb3VudGVyQnVmZmVy
c1swXTsKLSAgICBidWZmZXJCYXJyaWVyLm9mZnNldCAgICAgICAgICAgICAgICA9IDA7Ci0gICAg
YnVmZmVyQmFycmllci5zaXplICAgICAgICAgICAgICAgICAgPSBWS19XSE9MRV9TSVpFOwotCi0g
ICAgdmtDbWRQaXBlbGluZUJhcnJpZXIocHJpbUNtZEJ1ZmZlci0+Z2V0SGFuZGxlKCksIFZLX1BJ
UEVMSU5FX1NUQUdFX1RSQU5TRk9STV9GRUVEQkFDS19CSVRfRVhULAotICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0RSQVdfSU5ESVJFQ1RfQklULCAwdSwgMHUsIG51
bGxwdHIsIDF1LCAmYnVmZmVyQmFycmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAwdSwg
bnVsbHB0cik7Ci19Ci0KLUFOR0xFX01BWUJFX1VOVVNFRAotc3RkOjpzdHJpbmcgRHVtcENvbW1h
bmRzKGNvbnN0IHByaXY6OlNlY29uZGFyeUNvbW1hbmRCdWZmZXIgJmNvbW1hbmRCdWZmZXIsIGNv
bnN0IGNoYXIgKnNlcGFyYXRvcikKLXsKLSAgICByZXR1cm4gY29tbWFuZEJ1ZmZlci5kdW1wQ29t
bWFuZHMoc2VwYXJhdG9yKTsKLX0KLQotQU5HTEVfTUFZQkVfVU5VU0VECi1zdGQ6OnN0cmluZyBE
dW1wQ29tbWFuZHMoY29uc3QgcHJpdjo6Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlciwgY29u
c3QgY2hhciAqc2VwYXJhdG9yKQotewotICAgIHJldHVybiAiLS1ibG9iLS0iOwotfQotCi1mbG9h
dCBDYWxjdWxhdGVTZWNvbmRhcnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlKGNvbnN0IHN0ZDo6dmVj
dG9yPENvbW1hbmRHcmFwaE5vZGUgKj4gbm9kZXMpCi17Ci0gICAgc2l6ZV90IHVzZWQgICAgICA9
IDA7Ci0gICAgc2l6ZV90IGFsbG9jYXRlZCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IENvbW1hbmRH
cmFwaE5vZGUgKm5vZGUgOiBub2RlcykKLSAgICB7Ci0gICAgICAgIHNpemVfdCBub2RlVXNlZDsK
LSAgICAgICAgc2l6ZV90IG5vZGVBbGxvY2F0ZWQ7Ci0gICAgICAgIG5vZGUtPmdldE1lbW9yeVVz
YWdlU3RhdHNGb3JEaWFnbm9zdGljcygmbm9kZVVzZWQsICZub2RlQWxsb2NhdGVkKTsKLSAgICAg
ICAgdXNlZCArPSBub2RlVXNlZDsKLSAgICAgICAgYWxsb2NhdGVkICs9IG5vZGVBbGxvY2F0ZWQ7
Ci0gICAgfQotCi0gICAgYWxsb2NhdGVkID0gc3RkOjptYXg8c2l6ZV90PihhbGxvY2F0ZWQsIDEp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odXNlZCkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4oYWxsb2NhdGVkKTsKLX0KLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi0vLyBDb21t
YW5kR3JhcGhSZXNvdXJjZSBpbXBsZW1lbnRhdGlvbi4KLUNvbW1hbmRHcmFwaFJlc291cmNlOjpD
b21tYW5kR3JhcGhSZXNvdXJjZShDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KQotICAgIDogbUN1cnJlbnRXcml0aW5nTm9kZShudWxscHRyKSwgbVJlc291cmNlVHlwZShyZXNv
dXJjZVR5cGUpCi17Ci0gICAgbVVzZS5pbml0KCk7Ci19Ci0KLUNvbW1hbmRHcmFwaFJlc291cmNl
Ojp+Q29tbWFuZEdyYXBoUmVzb3VyY2UoKQotewotICAgIG1Vc2UucmVsZWFzZSgpOwotfQotCi1h
bmdsZTo6UmVzdWx0IENvbW1hbmRHcmFwaFJlc291cmNlOjpmaW5pc2hSdW5uaW5nQ29tbWFuZHMo
Q29udGV4dFZrICpjb250ZXh0VmspCi17Ci0gICAgcmV0dXJuIGNvbnRleHRWay0+ZmluaXNoVG9T
ZXJpYWwobVVzZS5nZXRTZXJpYWwoKSk7Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgQ29tbWFuZEdyYXBo
UmVzb3VyY2U6OnJlY29yZENvbW1hbmRzKENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAq
KmNvbW1hbmRCdWZmZXJPdXQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHRWay0+Y29tbWFuZEdyYXBo
RW5hYmxlZCgpKTsKLQotICAgIHVwZGF0ZUN1cnJlbnRBY2Nlc3NOb2RlcygpOwotCi0gICAgaWYg
KCFoYXNDaGlsZGxlc3NXcml0aW5nTm9kZSgpIHx8IGhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpCi0g
ICAgewotICAgICAgICBzdGFydE5ld0NvbW1hbmRzKGNvbnRleHRWayk7Ci0gICAgICAgIHJldHVy
biBtQ3VycmVudFdyaXRpbmdOb2RlLT5iZWdpbk91dHNpZGVSZW5kZXJQYXNzUmVjb3JkaW5nKAot
ICAgICAgICAgICAgY29udGV4dFZrLCBjb250ZXh0VmstPmdldENvbW1hbmRQb29sKCksIGNvbW1h
bmRCdWZmZXJPdXQpOwotICAgIH0KLQotICAgIENvbW1hbmRCdWZmZXIgKm91dHNpZGVSZW5kZXJQ
YXNzQ29tbWFuZHMgPSBtQ3VycmVudFdyaXRpbmdOb2RlLT5nZXRPdXRzaWRlUmVuZGVyUGFzc0Nv
bW1hbmRzKCk7Ci0gICAgaWYgKCFvdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLT52YWxpZCgpKQot
ICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKG1DdXJyZW50V3JpdGluZ05vZGUtPmJlZ2luT3V0c2lk
ZVJlbmRlclBhc3NSZWNvcmRpbmcoCi0gICAgICAgICAgICBjb250ZXh0VmssIGNvbnRleHRWay0+
Z2V0Q29tbWFuZFBvb2woKSwgY29tbWFuZEJ1ZmZlck91dCkpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICAqY29tbWFuZEJ1ZmZlck91dCA9IG91dHNpZGVSZW5kZXJQYXNzQ29tbWFu
ZHM7Ci0gICAgfQotCi0gICAgLy8gU3RvcmUgcmVmZXJlbmNlIHRvIHVzYWdlIGluIGdyYXBoLgot
ICAgIGNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkuYWRkKG1Vc2UpOwotCi0gICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotfQotCi1hbmdsZTo6UmVzdWx0IENvbW1hbmRH
cmFwaFJlc291cmNlOjpiZWdpblJlbmRlclBhc3MoCi0gICAgQ29udGV4dFZrICpjb250ZXh0Vmss
Ci0gICAgY29uc3QgRnJhbWVidWZmZXIgJmZyYW1lYnVmZmVyLAotICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnJlbmRlckFyZWEsCi0gICAgY29uc3QgUmVuZGVyUGFzc0Rlc2MgJnJlbmRlclBhc3NE
ZXNjLAotICAgIGNvbnN0IEF0dGFjaG1lbnRPcHNBcnJheSAmcmVuZGVyUGFzc0F0dGFjaG1lbnRP
cHMsCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmtDbGVhclZhbHVlPiAmY2xlYXJWYWx1ZXMsCi0g
ICAgQ29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpCi17Ci0gICAgLy8gSWYgYSBiYXJy
aWVyIGhhcyBiZWVuIGluc2VydGVkIGluIHRoZSBtZWFudGltZSwgc3RvcCB0aGUgY29tbWFuZCBi
dWZmZXIuCi0gICAgaWYgKCFoYXNDaGlsZGxlc3NXcml0aW5nTm9kZSgpKQotICAgIHsKLSAgICAg
ICAgc3RhcnROZXdDb21tYW5kcyhjb250ZXh0VmspOwotICAgIH0KLQotICAgIG1DdXJyZW50V3Jp
dGluZ05vZGUtPnN0b3JlUmVuZGVyUGFzc0luZm8oZnJhbWVidWZmZXIsIHJlbmRlckFyZWEsIHJl
bmRlclBhc3NEZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMsIGNsZWFyVmFsdWVzKTsKLQotICAgIG1DdXJyZW50
V3JpdGluZ05vZGUtPnNldFJlbmRlclBhc3NPd25lcihjb250ZXh0VmspOwotCi0gICAgcmV0dXJu
IG1DdXJyZW50V3JpdGluZ05vZGUtPmJlZ2luSW5zaWRlUmVuZGVyUGFzc1JlY29yZGluZyhjb250
ZXh0VmssIGNvbW1hbmRCdWZmZXJPdXQpOwotfQotCi12b2lkIENvbW1hbmRHcmFwaFJlc291cmNl
OjphZGRXcml0ZURlcGVuZGVuY3koQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoUmVzb3VyY2UgKndy
aXRpbmdSZXNvdXJjZSkKLXsKLSAgICBBU1NFUlQoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFi
bGVkKCkpOwotCi0gICAgQ29tbWFuZEdyYXBoTm9kZSAqd3JpdGluZ05vZGUgPSB3cml0aW5nUmVz
b3VyY2UtPm1DdXJyZW50V3JpdGluZ05vZGU7Ci0gICAgQVNTRVJUKHdyaXRpbmdOb2RlKTsKLQot
ICAgIG9uV3JpdGVJbXBsKGNvbnRleHRWaywgd3JpdGluZ05vZGUpOwotfQotCi12b2lkIENvbW1h
bmRHcmFwaFJlc291cmNlOjphZGRSZWFkRGVwZW5kZW5jeShDb250ZXh0VmsgKmNvbnRleHRWaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFw
aFJlc291cmNlICpyZWFkaW5nUmVzb3VyY2UpCi17Ci0gICAgQVNTRVJUKGNvbnRleHRWay0+Y29t
bWFuZEdyYXBoRW5hYmxlZCgpKTsKLQotICAgIG9uUmVzb3VyY2VBY2Nlc3MoJmNvbnRleHRWay0+
Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwotCi0gICAgQ29tbWFuZEdyYXBoTm9kZSAqcmVhZGluZ05v
ZGUgPSByZWFkaW5nUmVzb3VyY2UtPm1DdXJyZW50V3JpdGluZ05vZGU7Ci0gICAgQVNTRVJUKHJl
YWRpbmdOb2RlKTsKLQotICAgIGlmIChtQ3VycmVudFdyaXRpbmdOb2RlKQotICAgIHsKLSAgICAg
ICAgLy8gRW5zdXJlICdyZWFkaW5nTm9kZScgaGFwcGVucyBhZnRlciB0aGUgY3VycmVudCB3cml0
aW5nIG5vZGUuCi0gICAgICAgIENvbW1hbmRHcmFwaE5vZGU6OlNldEhhcHBlbnNCZWZvcmVEZXBl
bmRlbmN5KG1DdXJyZW50V3JpdGluZ05vZGUsIHJlYWRpbmdOb2RlKTsKLSAgICB9Ci0KLSAgICAv
LyBBZGQgdGhlIHJlYWQgbm9kZSB0byB0aGUgbGlzdCBvZiBub2RlcyBjdXJyZW50bHkgcmVhZGlu
ZyB0aGlzIHJlc291cmNlLgotICAgIG1DdXJyZW50UmVhZGluZ05vZGVzLnB1c2hfYmFjayhyZWFk
aW5nTm9kZSk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OmZpbmlzaEN1cnJlbnRD
b21tYW5kcyhDb250ZXh0VmsgKmNvbnRleHRWaykKLXsKLSAgICBBU1NFUlQoY29udGV4dFZrLT5j
b21tYW5kR3JhcGhFbmFibGVkKCkpOwotICAgIHN0YXJ0TmV3Q29tbWFuZHMoY29udGV4dFZrKTsK
LX0KLQotdm9pZCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6c3RhcnROZXdDb21tYW5kcyhDb250ZXh0
VmsgKmNvbnRleHRWaykKLXsKLSAgICBBU1NFUlQoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFi
bGVkKCkpOwotICAgIENvbW1hbmRHcmFwaE5vZGUgKm5ld0NvbW1hbmRzID0KLSAgICAgICAgY29u
dGV4dFZrLT5nZXRDb21tYW5kR3JhcGgoKS0+YWxsb2NhdGVOb2RlKENvbW1hbmRHcmFwaE5vZGVG
dW5jdGlvbjo6R2VuZXJpYyk7Ci0gICAgbmV3Q29tbWFuZHMtPnNldERpYWdub3N0aWNJbmZvKG1S
ZXNvdXJjZVR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSk7Ci0gICAgb25X
cml0ZUltcGwoY29udGV4dFZrLCBuZXdDb21tYW5kcyk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBo
UmVzb3VyY2U6Om9uV3JpdGVJbXBsKENvbnRleHRWayAqY29udGV4dFZrLCBDb21tYW5kR3JhcGhO
b2RlICp3cml0aW5nTm9kZSkKLXsKLSAgICBvblJlc291cmNlQWNjZXNzKCZjb250ZXh0VmstPmdl
dFJlc291cmNlVXNlTGlzdCgpKTsKLQotICAgIC8vIE1ha2Ugc3VyZSBhbnkgb3BlbiByZWFkcyBh
bmQgd3JpdGVzIGZpbmlzaCBiZWZvcmUgd2UgZXhlY3V0ZSAnd3JpdGluZ05vZGUnLgotICAgIGlm
ICghbUN1cnJlbnRSZWFkaW5nTm9kZXMuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIENvbW1hbmRH
cmFwaE5vZGU6OlNldEhhcHBlbnNCZWZvcmVEZXBlbmRlbmNpZXMobUN1cnJlbnRSZWFkaW5nTm9k
ZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1DdXJyZW50UmVhZGluZ05vZGVzLnNpemUoKSwgd3JpdGluZ05vZGUpOwotICAg
ICAgICBtQ3VycmVudFJlYWRpbmdOb2Rlcy5jbGVhcigpOwotICAgIH0KLQotICAgIGlmIChtQ3Vy
cmVudFdyaXRpbmdOb2RlICYmIG1DdXJyZW50V3JpdGluZ05vZGUgIT0gd3JpdGluZ05vZGUpCi0g
ICAgewotICAgICAgICBDb21tYW5kR3JhcGhOb2RlOjpTZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5j
eShtQ3VycmVudFdyaXRpbmdOb2RlLCB3cml0aW5nTm9kZSk7Ci0gICAgfQotCi0gICAgbUN1cnJl
bnRXcml0aW5nTm9kZSA9IHdyaXRpbmdOb2RlOwotfQotCi0vLyBDb21tYW5kR3JhcGhOb2RlIGlt
cGxlbWVudGF0aW9uLgotQ29tbWFuZEdyYXBoTm9kZTo6Q29tbWFuZEdyYXBoTm9kZShDb21tYW5k
R3JhcGhOb2RlRnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpQb29sQWxsb2NhdG9yICpwb29sQWxsb2NhdG9yKQotICAgIDogbVJlbmRl
clBhc3NDbGVhclZhbHVlc3t9LAotICAgICAgbUZ1bmN0aW9uKGZ1bmN0aW9uKSwKLSAgICAgIG1Q
b29sQWxsb2NhdG9yKHBvb2xBbGxvY2F0b3IpLAotICAgICAgbVF1ZXJ5UG9vbChWS19OVUxMX0hB
TkRMRSksCi0gICAgICBtUXVlcnlJbmRleCgwKSwKLSAgICAgIG1GZW5jZVN5bmNFdmVudChWS19O
VUxMX0hBTkRMRSksCi0gICAgICBtSGFzQ2hpbGRyZW4oZmFsc2UpLAotICAgICAgbVZpc2l0ZWRT
dGF0ZShWaXNpdGVkU3RhdGU6OlVudmlzaXRlZCksCi0gICAgICBtR2xvYmFsTWVtb3J5QmFycmll
clNyY0FjY2VzcygwKSwKLSAgICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzKDApLAot
ICAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXMoMCksCi0gICAgICBtUmVuZGVyUGFzc093
bmVyKG51bGxwdHIpLAotICAgICAgbVZhbGlkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgw
KQote30KLQotQ29tbWFuZEdyYXBoTm9kZTo6fkNvbW1hbmRHcmFwaE5vZGUoKQotewotICAgIG1S
ZW5kZXJQYXNzRnJhbWVidWZmZXIuc2V0SGFuZGxlKFZLX05VTExfSEFORExFKTsKLSAgICAvLyBD
b21tYW5kIGJ1ZmZlcnMgYXJlIG1hbmFnZWQgYnkgdGhlIGNvbW1hbmQgcG9vbCwgc28gZG9uJ3Qg
bmVlZCB0byBiZSBmcmVlZC4KLSAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5yZWxlYXNl
SGFuZGxlKCk7Ci0gICAgbUluc2lkZVJlbmRlclBhc3NDb21tYW5kcy5yZWxlYXNlSGFuZGxlKCk7
Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgQ29tbWFuZEdyYXBoTm9kZTo6YmVnaW5PdXRzaWRlUmVuZGVy
UGFzc1JlY29yZGluZyhDb250ZXh0VmsgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29tbWFuZFBv
b2wgJmNvbW1hbmRQb29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgKipjb21tYW5kc091dCkKLXsK
LSAgICBBU1NFUlQoIW1IYXNDaGlsZHJlbik7Ci0KLSAgICBWa0NvbW1hbmRCdWZmZXJJbmhlcml0
YW5jZUluZm8gaW5oZXJpdGFuY2VJbmZvID0ge307Ci0gICAgaW5oZXJpdGFuY2VJbmZvLnNUeXBl
ICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfSU5IRVJJVEFOQ0VfSU5G
TzsKLSAgICBpbmhlcml0YW5jZUluZm8ucmVuZGVyUGFzcyAgPSBWS19OVUxMX0hBTkRMRTsKLSAg
ICBpbmhlcml0YW5jZUluZm8uc3VicGFzcyAgICAgPSAwOwotICAgIGluaGVyaXRhbmNlSW5mby5m
cmFtZWJ1ZmZlciA9IFZLX05VTExfSEFORExFOwotICAgIGluaGVyaXRhbmNlSW5mby5vY2NsdXNp
b25RdWVyeUVuYWJsZSA9Ci0gICAgICAgIENvbW1hbmRCdWZmZXI6OlN1cHBvcnRzUXVlcmllcyhj
b250ZXh0LT5nZXRSZW5kZXJlcigpLT5nZXRQaHlzaWNhbERldmljZUZlYXR1cmVzKCkpOwotICAg
IGluaGVyaXRhbmNlSW5mby5xdWVyeUZsYWdzICAgICAgICAgPSAwOwotICAgIGluaGVyaXRhbmNl
SW5mby5waXBlbGluZVN0YXRpc3RpY3MgPSAwOwotCi0gICAgQU5HTEVfVFJZKEluaXRBbmRCZWdp
bkNvbW1hbmRCdWZmZXIoY29udGV4dCwgY29tbWFuZFBvb2wsIGluaGVyaXRhbmNlSW5mbywgMCwg
bVBvb2xBbGxvY2F0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzKSk7Ci0KLSAgICAqY29tbWFuZHNPdXQgPSAmbU91
dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHM7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwotfQotCi1hbmdsZTo6UmVzdWx0IENvbW1hbmRHcmFwaE5vZGU6OmJlZ2luSW5zaWRlUmVu
ZGVyUGFzc1JlY29yZGluZyhDb250ZXh0VmsgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVy
ICoqY29tbWFuZHNPdXQpCi17Ci0gICAgQVNTRVJUKCFtSGFzQ2hpbGRyZW4pOwotCi0gICAgLy8g
R2V0IGEgY29tcGF0aWJsZSBSZW5kZXJQYXNzIGZyb20gdGhlIGNhY2hlIHNvIHdlIGNhbiBpbml0
aWFsaXplIHRoZSBpbmhlcml0YW5jZSBpbmZvLgotICAgIC8vIFRPRE8oam1hZGlsbCk6IFN1cHBv
cnQgcXVlcnkgZm9yIGNvbXBhdGlibGUvY29uZm9ybWFudCByZW5kZXIgcGFzcy4gaHR0cDovL2Fu
Z2xlYnVnLmNvbS8yMzYxCi0gICAgUmVuZGVyUGFzcyAqY29tcGF0aWJsZVJlbmRlclBhc3M7Ci0g
ICAgQU5HTEVfVFJZKGNvbnRleHQtPmdldENvbXBhdGlibGVSZW5kZXJQYXNzKG1SZW5kZXJQYXNz
RGVzYywgJmNvbXBhdGlibGVSZW5kZXJQYXNzKSk7Ci0KLSAgICBWa0NvbW1hbmRCdWZmZXJJbmhl
cml0YW5jZUluZm8gaW5oZXJpdGFuY2VJbmZvID0ge307Ci0gICAgaW5oZXJpdGFuY2VJbmZvLnNU
eXBlICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfSU5IRVJJVEFOQ0Vf
SU5GTzsKLSAgICBpbmhlcml0YW5jZUluZm8ucmVuZGVyUGFzcyAgPSBjb21wYXRpYmxlUmVuZGVy
UGFzcy0+Z2V0SGFuZGxlKCk7Ci0gICAgaW5oZXJpdGFuY2VJbmZvLnN1YnBhc3MgICAgID0gMDsK
LSAgICBpbmhlcml0YW5jZUluZm8uZnJhbWVidWZmZXIgPSBtUmVuZGVyUGFzc0ZyYW1lYnVmZmVy
LmdldEhhbmRsZSgpOwotICAgIGluaGVyaXRhbmNlSW5mby5vY2NsdXNpb25RdWVyeUVuYWJsZSA9
Ci0gICAgICAgIENvbW1hbmRCdWZmZXI6OlN1cHBvcnRzUXVlcmllcyhjb250ZXh0LT5nZXRSZW5k
ZXJlcigpLT5nZXRQaHlzaWNhbERldmljZUZlYXR1cmVzKCkpOwotICAgIGluaGVyaXRhbmNlSW5m
by5xdWVyeUZsYWdzICAgICAgICAgPSAwOwotICAgIGluaGVyaXRhbmNlSW5mby5waXBlbGluZVN0
YXRpc3RpY3MgPSAwOwotCi0gICAgQU5HTEVfVFJZKEluaXRBbmRCZWdpbkNvbW1hbmRCdWZmZXIo
Y29udGV4dCwgY29udGV4dC0+Z2V0Q29tbWFuZFBvb2woKSwgaW5oZXJpdGFuY2VJbmZvLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0NPTU1BTkRfQlVGRkVSX1VT
QUdFX1JFTkRFUl9QQVNTX0NPTlRJTlVFX0JJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtUG9vbEFsbG9jYXRvciwgJm1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMp
KTsKLQotICAgICpjb21tYW5kc091dCA9ICZtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzOwotICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGhO
b2RlOjpzdG9yZVJlbmRlclBhc3NJbmZvKGNvbnN0IEZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlIHJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdms6OlJlbmRlclBhc3NEZXNjICZyZW5kZXJQYXNzRGVzYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRhY2htZW50T3BzQXJy
YXkgJnJlbmRlclBhc3NBdHRhY2htZW50T3BzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gJmNsZWFyVmFs
dWVzKQotewotICAgIG1SZW5kZXJQYXNzRGVzYyAgICAgICAgICA9IHJlbmRlclBhc3NEZXNjOwot
ICAgIG1SZW5kZXJQYXNzQXR0YWNobWVudE9wcyA9IHJlbmRlclBhc3NBdHRhY2htZW50T3BzOwot
ICAgIG1SZW5kZXJQYXNzRnJhbWVidWZmZXIuc2V0SGFuZGxlKGZyYW1lYnVmZmVyLmdldEhhbmRs
ZSgpKTsKLSAgICBtUmVuZGVyUGFzc1JlbmRlckFyZWEgPSByZW5kZXJBcmVhOwotICAgIHN0ZDo6
Y29weShjbGVhclZhbHVlcy5iZWdpbigpLCBjbGVhclZhbHVlcy5lbmQoKSwgbVJlbmRlclBhc3ND
bGVhclZhbHVlcy5iZWdpbigpKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIENvbW1hbmRHcmFwaE5v
ZGU6OlNldEhhcHBlbnNCZWZvcmVEZXBlbmRlbmNpZXMoQ29tbWFuZEdyYXBoTm9kZSAqKmJlZm9y
ZU5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBiZWZvcmVOb2Rlc0NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaE5vZGUgKmFmdGVyTm9kZSkKLXsK
LSAgICBhZnRlck5vZGUtPm1QYXJlbnRzLmluc2VydChhZnRlck5vZGUtPm1QYXJlbnRzLmVuZCgp
LCBiZWZvcmVOb2RlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmVOb2Rl
cyArIGJlZm9yZU5vZGVzQ291bnQpOwotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogaXMgdGhlcmUg
YSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXM/Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiZWZv
cmVOb2Rlc0NvdW50OyArK2kpCi0gICAgewotICAgICAgICBiZWZvcmVOb2Rlc1tpXS0+c2V0SGFz
Q2hpbGRyZW4oKTsKLQotICAgICAgICBBU1NFUlQoYmVmb3JlTm9kZXNbaV0gIT0gYWZ0ZXJOb2Rl
ICYmICFiZWZvcmVOb2Rlc1tpXS0+aXNDaGlsZE9mKGFmdGVyTm9kZSkpOwotICAgIH0KLX0KLQot
dm9pZCBDb21tYW5kR3JhcGhOb2RlOjpTZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5jaWVzKENvbW1h
bmRHcmFwaE5vZGUgKmJlZm9yZU5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoTm9kZSAqKmFmdGVyTm9kZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFm
dGVyTm9kZXNDb3VudCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFmdGVyTm9kZXND
b3VudDsgKytpKQotICAgIHsKLSAgICAgICAgU2V0SGFwcGVuc0JlZm9yZURlcGVuZGVuY3koYmVm
b3JlTm9kZSwgYWZ0ZXJOb2Rlc1tpXSk7Ci0gICAgfQotfQotCi1ib29sIENvbW1hbmRHcmFwaE5v
ZGU6Omhhc1BhcmVudHMoKSBjb25zdAotewotICAgIHJldHVybiAhbVBhcmVudHMuZW1wdHkoKTsK
LX0KLQotdm9pZCBDb21tYW5kR3JhcGhOb2RlOjpzZXRRdWVyeVBvb2woY29uc3QgUXVlcnlQb29s
ICpxdWVyeVBvb2wsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17Ci0gICAgQVNTRVJUKG1GdW5jdGlv
biA9PSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkJlZ2luUXVlcnkgfHwKLSAgICAgICAgICAg
bUZ1bmN0aW9uID09IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6RW5kUXVlcnkgfHwKLSAgICAg
ICAgICAgbUZ1bmN0aW9uID09IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6V3JpdGVUaW1lc3Rh
bXAgfHwKLSAgICAgICAgICAgbUZ1bmN0aW9uID09IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6
QmVnaW5UcmFuc2Zvcm1GZWVkYmFja1F1ZXJ5IHx8Ci0gICAgICAgICAgIG1GdW5jdGlvbiA9PSBD
b21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkVuZFRyYW5zZm9ybUZlZWRiYWNrUXVlcnkpOwotICAg
IG1RdWVyeVBvb2wgID0gcXVlcnlQb29sLT5nZXRIYW5kbGUoKTsKLSAgICBtUXVlcnlJbmRleCA9
IHF1ZXJ5SW5kZXg7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoTm9kZTo6c2V0RmVuY2VTeW5jKGNv
bnN0IHZrOjpFdmVudCAmZXZlbnQpCi17Ci0gICAgQVNTRVJUKG1GdW5jdGlvbiA9PSBDb21tYW5k
R3JhcGhOb2RlRnVuY3Rpb246OlNldEZlbmNlU3luYyB8fAotICAgICAgICAgICBtRnVuY3Rpb24g
PT0gQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpXYWl0RmVuY2VTeW5jKTsKLSAgICBtRmVuY2VT
eW5jRXZlbnQgPSBldmVudC5nZXRIYW5kbGUoKTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGhOb2Rl
OjpzZXREZWJ1Z01hcmtlcihHTGVudW0gc291cmNlLCBzdGQ6OnN0cmluZyAmJm1hcmtlcikKLXsK
LSAgICBBU1NFUlQobUZ1bmN0aW9uID09IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6SW5zZXJ0
RGVidWdNYXJrZXIgfHwKLSAgICAgICAgICAgbUZ1bmN0aW9uID09IENvbW1hbmRHcmFwaE5vZGVG
dW5jdGlvbjo6UHVzaERlYnVnTWFya2VyKTsKLSAgICBtRGVidWdNYXJrZXJTb3VyY2UgPSBzb3Vy
Y2U7Ci0gICAgbURlYnVnTWFya2VyICAgICAgID0gc3RkOjptb3ZlKG1hcmtlcik7Ci19Ci0KLS8v
IERvIG5vdCBjYWxsIHRoaXMgaW4gYW55dGhpbmcgYnV0IHRlc3RpbmcgY29kZSwgc2luY2UgaXQn
cyBzbG93LgotYm9vbCBDb21tYW5kR3JhcGhOb2RlOjppc0NoaWxkT2YoQ29tbWFuZEdyYXBoTm9k
ZSAqcGFyZW50KQotewotICAgIHN0ZDo6c2V0PENvbW1hbmRHcmFwaE5vZGUgKj4gdmlzaXRlZExp
c3Q7Ci0gICAgc3RkOjp2ZWN0b3I8Q29tbWFuZEdyYXBoTm9kZSAqPiBvcGVuTGlzdDsKLSAgICBv
cGVuTGlzdC5pbnNlcnQob3Blbkxpc3QuYmVnaW4oKSwgbVBhcmVudHMuYmVnaW4oKSwgbVBhcmVu
dHMuZW5kKCkpOwotICAgIHdoaWxlICghb3Blbkxpc3QuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAg
IENvbW1hbmRHcmFwaE5vZGUgKmN1cnJlbnQgPSBvcGVuTGlzdC5iYWNrKCk7Ci0gICAgICAgIG9w
ZW5MaXN0LnBvcF9iYWNrKCk7Ci0gICAgICAgIGlmICh2aXNpdGVkTGlzdC5jb3VudChjdXJyZW50
KSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBwYXJlbnQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB2aXNpdGVkTGlzdC5pbnNlcnQoY3VycmVudCk7Ci0gICAgICAgICAgICBv
cGVuTGlzdC5pbnNlcnQob3Blbkxpc3QuZW5kKCksIGN1cnJlbnQtPm1QYXJlbnRzLmJlZ2luKCks
IGN1cnJlbnQtPm1QYXJlbnRzLmVuZCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotVmlzaXRlZFN0YXRlIENvbW1hbmRHcmFwaE5vZGU6OnZpc2l0ZWRTdGF0
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1WaXNpdGVkU3RhdGU7Ci19Ci0KLXZvaWQgQ29tbWFu
ZEdyYXBoTm9kZTo6dmlzaXRQYXJlbnRzKHN0ZDo6dmVjdG9yPENvbW1hbmRHcmFwaE5vZGUgKj4g
KnN0YWNrKQotewotICAgIEFTU0VSVChtVmlzaXRlZFN0YXRlID09IFZpc2l0ZWRTdGF0ZTo6VW52
aXNpdGVkKTsKLSAgICBzdGFjay0+aW5zZXJ0KHN0YWNrLT5lbmQoKSwgbVBhcmVudHMuYmVnaW4o
KSwgbVBhcmVudHMuZW5kKCkpOwotICAgIG1WaXNpdGVkU3RhdGUgPSBWaXNpdGVkU3RhdGU6OlJl
YWR5OwotfQotCi1hbmdsZTo6UmVzdWx0IENvbW1hbmRHcmFwaE5vZGU6OnZpc2l0QW5kRXhlY3V0
ZSh2azo6Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNlcmlhbCBzZXJpYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJQYXNzQ2FjaGUgKnJlbmRlclBhc3NDYWNoZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1hcnlD
b21tYW5kQnVmZmVyICpwcmltYXJ5Q29tbWFuZEJ1ZmZlcikKLXsKLSAgICAvLyBSZWNvcmQgdGhl
IGRlZmVycmVkIHBpcGVsaW5lIGJhcnJpZXIgaWYgbmVjZXNzYXJ5LgotICAgIEFTU0VSVCgobUds
b2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MgPT0gMCkgPT0gKG1HbG9iYWxNZW1vcnlCYXJyaWVy
U3JjQWNjZXNzID09IDApKTsKLSAgICBpZiAobUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3Mp
Ci0gICAgewotICAgICAgICBWa01lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllciA9IHt9OwotICAg
ICAgICBtZW1vcnlCYXJyaWVyLnNUeXBlICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01F
TU9SWV9CQVJSSUVSOwotICAgICAgICBtZW1vcnlCYXJyaWVyLnNyY0FjY2Vzc01hc2sgICA9IG1H
bG9iYWxNZW1vcnlCYXJyaWVyU3JjQWNjZXNzOwotICAgICAgICBtZW1vcnlCYXJyaWVyLmRzdEFj
Y2Vzc01hc2sgICA9IG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzOwotCi0gICAgICAgIHBy
aW1hcnlDb21tYW5kQnVmZmVyLT5tZW1vcnlCYXJyaWVyKG1HbG9iYWxNZW1vcnlCYXJyaWVyU3Rh
Z2VzLCBtR2xvYmFsTWVtb3J5QmFycmllclN0YWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm1lbW9yeUJhcnJpZXIpOwotICAgIH0KLQotICAgIHN3aXRj
aCAobUZ1bmN0aW9uKQotICAgIHsKLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rp
b246OkdlbmVyaWM6Ci0gICAgICAgICAgICBBU1NFUlQobVF1ZXJ5UG9vbCA9PSBWS19OVUxMX0hB
TkRMRSAmJiBtRmVuY2VTeW5jRXZlbnQgPT0gVktfTlVMTF9IQU5ETEUpOwotCi0gICAgICAgICAg
ICBpZiAobU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBBTkdMRV9WS19UUlkoY29udGV4dCwgbU91dHNpZGVSZW5kZXJQYXNz
Q29tbWFuZHMuZW5kKCkpOwotICAgICAgICAgICAgICAgIEV4ZWN1dGVDb21tYW5kcyhwcmltYXJ5
Q29tbWFuZEJ1ZmZlciwgJm1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzKTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKG1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBQdWxsIGEgUmVuZGVyUGFzcyBmcm9t
IHRoZSBjYWNoZS4KLSAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnNlcnQgbGF5
b3V0IHRyYW5zaXRpb25zLgotICAgICAgICAgICAgICAgIFJlbmRlclBhc3MgKnJlbmRlclBhc3Mg
PSBudWxscHRyOwotICAgICAgICAgICAgICAgIEFOR0xFX1RSWShyZW5kZXJQYXNzQ2FjaGUtPmdl
dFJlbmRlclBhc3NXaXRoT3BzKAotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzZXJpYWws
IG1SZW5kZXJQYXNzRGVzYywgbVJlbmRlclBhc3NBdHRhY2htZW50T3BzLCAmcmVuZGVyUGFzcykp
OwotCi0gICAgICAgICAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIG1JbnNpZGVSZW5kZXJQ
YXNzQ29tbWFuZHMuZW5kKCkpOwotCi0gICAgICAgICAgICAgICAgVmtSZW5kZXJQYXNzQmVnaW5J
bmZvIGJlZ2luSW5mbyA9IHt9OwotICAgICAgICAgICAgICAgIGJlZ2luSW5mby5zVHlwZSAgICAg
ICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9SRU5ERVJfUEFTU19CRUdJTl9JTkZPOwot
ICAgICAgICAgICAgICAgIGJlZ2luSW5mby5yZW5kZXJQYXNzICAgICAgICAgICAgPSByZW5kZXJQ
YXNzLT5nZXRIYW5kbGUoKTsKLSAgICAgICAgICAgICAgICBiZWdpbkluZm8uZnJhbWVidWZmZXIg
ICAgICAgICAgID0gbVJlbmRlclBhc3NGcmFtZWJ1ZmZlci5nZXRIYW5kbGUoKTsKLSAgICAgICAg
ICAgICAgICBiZWdpbkluZm8ucmVuZGVyQXJlYS5vZmZzZXQueCAgID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1SZW5kZXJQYXNzUmVuZGVyQXJlYS54KTsKLSAgICAgICAgICAgICAgICBiZWdpbklu
Zm8ucmVuZGVyQXJlYS5vZmZzZXQueSAgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1SZW5kZXJQ
YXNzUmVuZGVyQXJlYS55KTsKLSAgICAgICAgICAgICAgICBiZWdpbkluZm8ucmVuZGVyQXJlYS5l
eHRlbnQud2lkdGggPQotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bVJlbmRlclBhc3NSZW5kZXJBcmVhLndpZHRoKTsKLSAgICAgICAgICAgICAgICBiZWdpbkluZm8u
cmVuZGVyQXJlYS5leHRlbnQuaGVpZ2h0ID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG1SZW5kZXJQYXNzUmVuZGVyQXJlYS5oZWlnaHQpOwotICAgICAgICAgICAg
ICAgIGJlZ2luSW5mby5jbGVhclZhbHVlQ291bnQgPQotICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDx1aW50MzJfdD4obVJlbmRlclBhc3NEZXNjLmF0dGFjaG1lbnRDb3VudCgpKTsKLSAg
ICAgICAgICAgICAgICBiZWdpbkluZm8ucENsZWFyVmFsdWVzID0gbVJlbmRlclBhc3NDbGVhclZh
bHVlcy5kYXRhKCk7Ci0KLSAgICAgICAgICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+YmVn
aW5SZW5kZXJQYXNzKGJlZ2luSW5mbywga1JlbmRlclBhc3NDb250ZW50cyk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQgPT0gMCkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEV4ZWN1dGVDb21tYW5kcyhwcmltYXJ5
Q29tbWFuZEJ1ZmZlciwgJm1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMpOwotICAgICAgICAgICAg
ICAgICAgICBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+ZW5kUmVuZGVyUGFzcygpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBJbnNlcnRCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1hcnlDb21tYW5k
QnVmZmVyLCBtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVRyYW5zZm9ybUZlZWRiYWNrQ291bnRlckJ1ZmZlcnMuZGF0YSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZWJpbmRUcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlcnMpOwotICAgICAgICAgICAgICAgICAgICBFeGVjdXRlQ29tbWFuZHMocHJpbWFyeUNv
bW1hbmRCdWZmZXIsICZtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzKTsKLSAgICAgICAgICAgICAg
ICAgICAgSW5zZXJ0RW5kVHJhbnNmb3JtRmVlZGJhY2socHJpbWFyeUNvbW1hbmRCdWZmZXIsIG1J
bnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UcmFuc2Zvcm1GZWVk
YmFja0NvdW50ZXJCdWZmZXJzLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHByaW1hcnlD
b21tYW5kQnVmZmVyLT5lbmRSZW5kZXJQYXNzKCk7Ci0gICAgICAgICAgICAgICAgICAgIEluc2Vy
dENvdW50ZXJCdWZmZXJQaXBlbGluZUJhcnJpZXIocHJpbWFyeUNvbW1hbmRCdWZmZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUluc2lk
ZVJlbmRlclBhc3NDb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tDb3VudGVyQnVmZmVycy5kYXRh
KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpCZWdpblF1ZXJ5Ogot
ICAgICAgICAgICAgQVNTRVJUKCFtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpICYm
ICFtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZhbGlkKCkpOwotICAgICAgICAgICAgQVNTRVJU
KG1RdWVyeVBvb2wgIT0gVktfTlVMTF9IQU5ETEUpOwotCi0gICAgICAgICAgICBwcmltYXJ5Q29t
bWFuZEJ1ZmZlci0+cmVzZXRRdWVyeVBvb2wobVF1ZXJ5UG9vbCwgbVF1ZXJ5SW5kZXgsIDEpOwot
ICAgICAgICAgICAgcHJpbWFyeUNvbW1hbmRCdWZmZXItPmJlZ2luUXVlcnkobVF1ZXJ5UG9vbCwg
bVF1ZXJ5SW5kZXgsIDApOwotCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENv
bW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6RW5kUXVlcnk6Ci0gICAgICAgICAgICBBU1NFUlQoIW1P
dXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZhbGlkKCkgJiYgIW1JbnNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMudmFsaWQoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobVF1ZXJ5UG9vbCAhPSBWS19OVUxM
X0hBTkRMRSk7Ci0KLSAgICAgICAgICAgIHByaW1hcnlDb21tYW5kQnVmZmVyLT5lbmRRdWVyeSht
UXVlcnlQb29sLCBtUXVlcnlJbmRleCk7Ci0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpXcml0ZVRpbWVzdGFtcDoKLSAgICAgICAg
ICAgIEFTU0VSVCghbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSAmJiAhbUluc2lk
ZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChtUXVlcnlQ
b29sICE9IFZLX05VTExfSEFORExFKTsKLQotICAgICAgICAgICAgcHJpbWFyeUNvbW1hbmRCdWZm
ZXItPnJlc2V0UXVlcnlQb29sKG1RdWVyeVBvb2wsIG1RdWVyeUluZGV4LCAxKTsKLSAgICAgICAg
ICAgIHByaW1hcnlDb21tYW5kQnVmZmVyLT53cml0ZVRpbWVzdGFtcChWS19QSVBFTElORV9TVEFH
RV9CT1RUT01fT0ZfUElQRV9CSVQsIG1RdWVyeVBvb2wsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1ZXJ5SW5kZXgpOwotCi0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6QmVnaW5UcmFu
c2Zvcm1GZWVkYmFja1F1ZXJ5OgotICAgICAgICAgICAgLy8gVW5sZXNzIHVzaW5nIFZLX0VYVF90
cmFuc2Zvcm1fZmVlZGJhY2sgKG5vdCBpbXBsZW1lbnRlZCBjdXJyZW50bHkpLCB0aGVyZSdzIG5v
dGhpbmcKLSAgICAgICAgICAgIC8vIHRvIGRvLgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkVuZFRyYW5zZm9ybUZlZWRiYWNrUXVl
cnk6Ci0gICAgICAgICAgICAvLyBTYW1lIGFzIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tRdWVyeS4K
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0
aW9uOjpTZXRGZW5jZVN5bmM6Ci0gICAgICAgICAgICBBU1NFUlQoIW1PdXRzaWRlUmVuZGVyUGFz
c0NvbW1hbmRzLnZhbGlkKCkgJiYgIW1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSk7
Ci0gICAgICAgICAgICBBU1NFUlQobUZlbmNlU3luY0V2ZW50ICE9IFZLX05VTExfSEFORExFKTsK
LQotICAgICAgICAgICAgcHJpbWFyeUNvbW1hbmRCdWZmZXItPnNldEV2ZW50KG1GZW5jZVN5bmNF
dmVudCwgVktfUElQRUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklUKTsKLQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OldhaXRG
ZW5jZVN5bmM6Ci0gICAgICAgICAgICBBU1NFUlQoIW1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRz
LnZhbGlkKCkgJiYgIW1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobUZlbmNlU3luY0V2ZW50ICE9IFZLX05VTExfSEFORExFKTsKLQotICAgICAg
ICAgICAgLy8gRmVuY2UgU3luY3MgYXJlIHB1cmVseSBleGVjdXRpb24gYmFycmllcnMsIHNvIHRo
ZXJlIGFyZSBubyBtZW1vcnkgYmFycmllcnMgYXR0YWNoZWQuCi0gICAgICAgICAgICBwcmltYXJ5
Q29tbWFuZEJ1ZmZlci0+d2FpdEV2ZW50cygKLSAgICAgICAgICAgICAgICAxLCAmbUZlbmNlU3lu
Y0V2ZW50LCBWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0ZfUElQRV9CSVQsCi0gICAgICAgICAg
ICAgICAgVktfUElQRUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklULCAwLCBudWxscHRyLCAw
LCBudWxscHRyLCAwLCBudWxscHRyKTsKLQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OkdyYXBoQmFycmllcjoKLSAgICAgICAgICAg
IC8vIE5vdGhpbmcgdG8gZG8uICBUaGUgbWVtb3J5IGJhcnJpZXIsIGlmIGFueSwgaXMgYWxyZWFk
eSBoYW5kbGVkIGFib3ZlIHRocm91Z2ggZ2xvYmFsCi0gICAgICAgICAgICAvLyBtZW1vcnkgYmFy
cmllciBmbGFncy4KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdy
YXBoTm9kZUZ1bmN0aW9uOjpJbnNlcnREZWJ1Z01hcmtlcjoKLSAgICAgICAgICAgIEFTU0VSVCgh
bU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSAmJiAhbUluc2lkZVJlbmRlclBhc3ND
b21tYW5kcy52YWxpZCgpKTsKLQotICAgICAgICAgICAgaWYgKHZrQ21kSW5zZXJ0RGVidWdVdGls
c0xhYmVsRVhUKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFZrRGVidWdVdGlsc0xh
YmVsRVhUIGxhYmVsOwotICAgICAgICAgICAgICAgIE1ha2VEZWJ1Z1V0aWxzTGFiZWwobURlYnVn
TWFya2VyU291cmNlLCBtRGVidWdNYXJrZXIuY19zdHIoKSwgJmxhYmVsKTsKLQotICAgICAgICAg
ICAgICAgIHZrQ21kSW5zZXJ0RGVidWdVdGlsc0xhYmVsRVhUKHByaW1hcnlDb21tYW5kQnVmZmVy
LT5nZXRIYW5kbGUoKSwgJmxhYmVsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpQdXNoRGVidWdNYXJr
ZXI6Ci0gICAgICAgICAgICBBU1NFUlQoIW1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZhbGlk
KCkgJiYgIW1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMudmFsaWQoKSk7Ci0KLSAgICAgICAgICAg
IGlmICh2a0NtZEJlZ2luRGVidWdVdGlsc0xhYmVsRVhUKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIFZrRGVidWdVdGlsc0xhYmVsRVhUIGxhYmVsOwotICAgICAgICAgICAgICAgIE1h
a2VEZWJ1Z1V0aWxzTGFiZWwobURlYnVnTWFya2VyU291cmNlLCBtRGVidWdNYXJrZXIuY19zdHIo
KSwgJmxhYmVsKTsKLQotICAgICAgICAgICAgICAgIHZrQ21kQmVnaW5EZWJ1Z1V0aWxzTGFiZWxF
WFQocHJpbWFyeUNvbW1hbmRCdWZmZXItPmdldEhhbmRsZSgpLCAmbGFiZWwpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhOb2Rl
RnVuY3Rpb246OlBvcERlYnVnTWFya2VyOgotICAgICAgICAgICAgQVNTRVJUKCFtT3V0c2lkZVJl
bmRlclBhc3NDb21tYW5kcy52YWxpZCgpICYmICFtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZh
bGlkKCkpOwotCi0gICAgICAgICAgICBpZiAodmtDbWRFbmREZWJ1Z1V0aWxzTGFiZWxFWFQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmtDbWRFbmREZWJ1Z1V0aWxzTGFiZWxFWFQo
cHJpbWFyeUNvbW1hbmRCdWZmZXItPmdldEhhbmRsZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpI
b3N0QXZhaWxhYmlsaXR5T3BlcmF0aW9uOgotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGFsbCB3
cml0ZXMgdG8gaG9zdC12aXNpYmxlIGJ1ZmZlcnMgYXJlIGZsdXNoZWQuICBXZSBoYXZlIG5vIHdh
eSBvZiBrbm93aW5nCi0gICAgICAgICAgICAvLyB3aGV0aGVyIGFueSBidWZmZXIgd2lsbCBiZSBt
YXBwZWQgZm9yIHJlYWRiYWNrIGluIHRoZSBmdXR1cmUsIGFuZCB3ZSBjYW4ndCBhZmZvcmQgdG8K
LSAgICAgICAgICAgIC8vIGZsdXNoIGFuZCB3YWl0IG9uIGEgb25lLXBpcGVsaW5lLWJhcnJpZXIg
Y29tbWFuZCBidWZmZXIgb24gZXZlcnkgbWFwKCkuCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgVmtNZW1vcnlCYXJyaWVyIG1lbW9yeUJhcnJpZXIgPSB7fTsKLSAgICAgICAgICAgICAg
ICBtZW1vcnlCYXJyaWVyLnNUeXBlICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01FTU9S
WV9CQVJSSUVSOwotICAgICAgICAgICAgICAgIG1lbW9yeUJhcnJpZXIuc3JjQWNjZXNzTWFzayAg
ID0gVktfQUNDRVNTX01FTU9SWV9XUklURV9CSVQ7Ci0gICAgICAgICAgICAgICAgbWVtb3J5QmFy
cmllci5kc3RBY2Nlc3NNYXNrICAgPSBWS19BQ0NFU1NfSE9TVF9SRUFEX0JJVDsKLQotICAgICAg
ICAgICAgICAgIHByaW1hcnlDb21tYW5kQnVmZmVyLT5tZW1vcnlCYXJyaWVyKFZLX1BJUEVMSU5F
X1NUQUdFX0FMTF9DT01NQU5EU19CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVktfUElQRUxJTkVfU1RBR0VfSE9TVF9CSVQsICZtZW1vcnlC
YXJyaWVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIG1WaXNpdGVk
U3RhdGUgPSBWaXNpdGVkU3RhdGU6OlZpc2l0ZWQ7Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwotfQotCi1jb25zdCBzdGQ6OnZlY3RvcjxDb21tYW5kR3JhcGhOb2RlICo+ICZD
b21tYW5kR3JhcGhOb2RlOjpnZXRQYXJlbnRzRm9yRGlhZ25vc3RpY3MoKSBjb25zdAotewotICAg
IHJldHVybiBtUGFyZW50czsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGhOb2RlOjpzZXREaWFnbm9z
dGljSW5mbyhDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgcmVzb3VyY2VJRCkKLXsK
LSAgICBtUmVzb3VyY2VUeXBlID0gcmVzb3VyY2VUeXBlOwotICAgIG1SZXNvdXJjZUlEICAgPSBy
ZXNvdXJjZUlEOwotfQotCi1ib29sIENvbW1hbmRHcmFwaE5vZGU6Omhhc0RpYWdub3N0aWNJRCgp
IGNvbnN0Ci17Ci0gICAgLy8gQWxsIG5vZGVzIGhhdmUgZGlhZ25vc3RpYyBJRHMgdG8gZGlmZmVy
ZW50aWF0ZSB0aGVtIGV4Y2VwdCB0aGUgZm9sbG93aW5nIHNlbGVjdCBmZXcuCi0gICAgcmV0dXJu
IG1SZXNvdXJjZVR5cGUgIT0gQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpIb3N0QXZhaWxhYmls
aXR5T3BlcmF0aW9uICYmCi0gICAgICAgICAgIG1SZXNvdXJjZVR5cGUgIT0gQ29tbWFuZEdyYXBo
UmVzb3VyY2VUeXBlOjpHcmFwaEJhcnJpZXI7Ci19Ci0KLXN0ZDo6c3RyaW5nIENvbW1hbmRHcmFw
aE5vZGU6OmR1bXBDb21tYW5kc0ZvckRpYWdub3N0aWNzKGNvbnN0IGNoYXIgKnNlcGFyYXRvcikg
Y29uc3QKLXsKLSAgICBzdGQ6OnN0cmluZyByZXN1bHQ7Ci0gICAgaWYgKG1HbG9iYWxNZW1vcnlC
YXJyaWVyU3JjQWNjZXNzICE9IDAgfHwgbUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MgIT0g
MCkKLSAgICB7Ci0gICAgICAgIHJlc3VsdCArPSBzZXBhcmF0b3I7Ci0KLSAgICAgICAgc3RkOjpv
c3RyaW5nc3RyZWFtIG91dDsKLSAgICAgICAgb3V0IDw8ICJNZW1vcnkgQmFycmllciBTcmM6IDB4
IiA8PCBzdGQ6OmhleCA8PCBtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcwotICAgICAgICAg
ICAgPDwgIiAmcmFycjsgRHN0OiAweCIgPDwgc3RkOjpoZXggPDwgbUdsb2JhbE1lbW9yeUJhcnJp
ZXJEc3RBY2Nlc3M7Ci0gICAgICAgIHJlc3VsdCArPSBvdXQuc3RyKCk7Ci0gICAgfQotICAgIGlm
IChtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy52YWxpZCgpKQotICAgIHsKLSAgICAgICAgcmVz
dWx0ICs9IHNlcGFyYXRvcjsKLSAgICAgICAgcmVzdWx0ICs9ICJPdXRzaWRlIFJQOiI7Ci0gICAg
ICAgIHJlc3VsdCArPSBEdW1wQ29tbWFuZHMobU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMsIHNl
cGFyYXRvcik7Ci0gICAgfQotICAgIGlmIChtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzLnZhbGlk
KCkpCi0gICAgewotICAgICAgICByZXN1bHQgKz0gc2VwYXJhdG9yOwotICAgICAgICByZXN1bHQg
Kz0gIkluc2lkZSBSUDoiOwotCi0gICAgICAgIHNpemVfdCBhdHRhY2htZW50Q291bnQgICAgICAg
ICAgICAgPSBtUmVuZGVyUGFzc0Rlc2MuYXR0YWNobWVudENvdW50KCk7Ci0gICAgICAgIHNpemVf
dCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50Q291bnQgPSBtUmVuZGVyUGFzc0Rlc2MuaGFzRGVwdGhT
dGVuY2lsQXR0YWNobWVudCgpOwotICAgICAgICBzaXplX3QgY29sb3JBdHRhY2htZW50Q291bnQg
ICAgICAgID0gYXR0YWNobWVudENvdW50IC0gZGVwdGhTdGVuY2lsQXR0YWNobWVudENvdW50Owot
Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxvYWRPcHMsIHN0b3JlT3BzOwotCi0gICAgICAgIGlmIChj
b2xvckF0dGFjaG1lbnRDb3VudCA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxvYWRPcHMg
Kz0gIiBDb2xvcjogIjsKLSAgICAgICAgICAgIHN0b3JlT3BzICs9ICIgQ29sb3I6ICI7Ci0KLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sb3JBdHRhY2htZW50Q291bnQ7ICsr
aSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsb2FkT3BzICs9IEdldExvYWRPcFNo
b3J0aGFuZChtUmVuZGVyUGFzc0F0dGFjaG1lbnRPcHNbaV0ubG9hZE9wKTsKLSAgICAgICAgICAg
ICAgICBzdG9yZU9wcyArPSBHZXRTdG9yZU9wU2hvcnRoYW5kKG1SZW5kZXJQYXNzQXR0YWNobWVu
dE9wc1tpXS5zdG9yZU9wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChkZXB0aFN0ZW5jaWxBdHRhY2htZW50Q291bnQgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoZGVwdGhTdGVuY2lsQXR0YWNobWVudENvdW50ID09IDEpOwotCi0gICAgICAgICAg
ICBsb2FkT3BzICs9ICIgRGVwdGgvU3RlbmNpbDogIjsKLSAgICAgICAgICAgIHN0b3JlT3BzICs9
ICIgRGVwdGgvU3RlbmNpbDogIjsKLSAgICAgICAgICAgIHNpemVfdCBkc0luZGV4ID0gY29sb3JB
dHRhY2htZW50Q291bnQ7Ci0KLSAgICAgICAgICAgIGxvYWRPcHMgKz0gR2V0TG9hZE9wU2hvcnRo
YW5kKG1SZW5kZXJQYXNzQXR0YWNobWVudE9wc1tkc0luZGV4XS5sb2FkT3ApOwotICAgICAgICAg
ICAgbG9hZE9wcyArPSBHZXRMb2FkT3BTaG9ydGhhbmQobVJlbmRlclBhc3NBdHRhY2htZW50T3Bz
W2RzSW5kZXhdLnN0ZW5jaWxMb2FkT3ApOwotCi0gICAgICAgICAgICBzdG9yZU9wcyArPSBHZXRT
dG9yZU9wU2hvcnRoYW5kKG1SZW5kZXJQYXNzQXR0YWNobWVudE9wc1tkc0luZGV4XS5zdG9yZU9w
KTsKLSAgICAgICAgICAgIHN0b3JlT3BzICs9IEdldFN0b3JlT3BTaG9ydGhhbmQobVJlbmRlclBh
c3NBdHRhY2htZW50T3BzW2RzSW5kZXhdLnN0ZW5jaWxTdG9yZU9wKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChhdHRhY2htZW50Q291bnQgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXN1bHQgKz0gIiBMb2FkT3A6ICIgKyBsb2FkT3BzOwotICAgICAgICAgICAgcmVzdWx0ICs9IHNl
cGFyYXRvcjsKLSAgICAgICAgICAgIHJlc3VsdCArPSAiLS0tLS0tLS0tLS0tIFN0b3JlT3A6ICIg
KyBzdG9yZU9wczsKLSAgICAgICAgfQotCi0gICAgICAgIHJlc3VsdCArPSBEdW1wQ29tbWFuZHMo
bUluc2lkZVJlbmRlclBhc3NDb21tYW5kcywgc2VwYXJhdG9yKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGhOb2RlOjpnZXRNZW1vcnlVc2FnZVN0YXRz
Rm9yRGlhZ25vc3RpY3Moc2l6ZV90ICp1c2VkTWVtb3J5T3V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICphbGxvY2F0ZWRN
ZW1vcnlPdXQpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IGNvbW1hbmRCdWZmZXJVc2VkOwotICAgIHNp
emVfdCBjb21tYW5kQnVmZmVyQWxsb2NhdGVkOwotCi0gICAgbU91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMuZ2V0TWVtb3J5VXNhZ2VTdGF0cyh1c2VkTWVtb3J5T3V0LCBhbGxvY2F0ZWRNZW1vcnlP
dXQpOwotICAgIG1JbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuZ2V0TWVtb3J5VXNhZ2VTdGF0cygm
Y29tbWFuZEJ1ZmZlclVzZWQsICZjb21tYW5kQnVmZmVyQWxsb2NhdGVkKTsKLQotICAgICp1c2Vk
TWVtb3J5T3V0ICs9IGNvbW1hbmRCdWZmZXJVc2VkOwotICAgICphbGxvY2F0ZWRNZW1vcnlPdXQg
Kz0gY29tbWFuZEJ1ZmZlckFsbG9jYXRlZDsKLX0KLQotLy8gU2hhcmVkR2FyYmFnZSBpbXBsZW1l
bnRhdGlvbi4KLVNoYXJlZEdhcmJhZ2U6OlNoYXJlZEdhcmJhZ2UoKSA9IGRlZmF1bHQ7Ci0KLVNo
YXJlZEdhcmJhZ2U6OlNoYXJlZEdhcmJhZ2UoU2hhcmVkR2FyYmFnZSAmJm90aGVyKQotewotICAg
ICp0aGlzID0gc3RkOjptb3ZlKG90aGVyKTsKLX0KLQotU2hhcmVkR2FyYmFnZTo6U2hhcmVkR2Fy
YmFnZShTaGFyZWRSZXNvdXJjZVVzZSAmJnVzZSwgc3RkOjp2ZWN0b3I8R2FyYmFnZU9iamVjdD4g
JiZnYXJiYWdlKQotICAgIDogbUxpZmV0aW1lKHN0ZDo6bW92ZSh1c2UpKSwgbUdhcmJhZ2Uoc3Rk
Ojptb3ZlKGdhcmJhZ2UpKQote30KLQotU2hhcmVkR2FyYmFnZTo6flNoYXJlZEdhcmJhZ2UoKSA9
IGRlZmF1bHQ7Ci0KLVNoYXJlZEdhcmJhZ2UgJlNoYXJlZEdhcmJhZ2U6Om9wZXJhdG9yPShTaGFy
ZWRHYXJiYWdlICYmcmhzKQotewotICAgIHN0ZDo6c3dhcChtTGlmZXRpbWUsIHJocy5tTGlmZXRp
bWUpOwotICAgIHN0ZDo6c3dhcChtR2FyYmFnZSwgcmhzLm1HYXJiYWdlKTsKLSAgICByZXR1cm4g
KnRoaXM7Ci19Ci0KLWJvb2wgU2hhcmVkR2FyYmFnZTo6ZGVzdHJveUlmQ29tcGxldGUoVmtEZXZp
Y2UgZGV2aWNlLCBTZXJpYWwgY29tcGxldGVkU2VyaWFsKQotewotICAgIGlmIChtTGlmZXRpbWUu
aXNDdXJyZW50bHlJblVzZShjb21wbGV0ZWRTZXJpYWwpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBtTGlmZXRpbWUucmVsZWFzZSgpOwotCi0gICAgZm9yIChHYXJiYWdlT2JqZWN0ICZv
YmplY3QgOiBtR2FyYmFnZSkKLSAgICB7Ci0gICAgICAgIG9iamVjdC5kZXN0cm95KGRldmljZSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIENvbW1hbmRHcmFwaCBpbXBsZW1l
bnRhdGlvbi4KLUNvbW1hbmRHcmFwaDo6Q29tbWFuZEdyYXBoKGJvb2wgZW5hYmxlR3JhcGhEaWFn
bm9zdGljcywgYW5nbGU6OlBvb2xBbGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IpCi0gICAgOiBtRW5h
YmxlR3JhcGhEaWFnbm9zdGljcyhlbmFibGVHcmFwaERpYWdub3N0aWNzKSwKLSAgICAgIG1Qb29s
QWxsb2NhdG9yKHBvb2xBbGxvY2F0b3IpLAotICAgICAgbUxhc3RCYXJyaWVySW5kZXgoa0ludmFs
aWROb2RlSW5kZXgpCi17Ci0gICAgLy8gUHVzaCBzbyB0aGF0IGFsbG9jYXRpb25zIG1hZGUgZnJv
bSBoZXJlIHdpbGwgYmUgcmVjeWNsZWQgaW4gY2xlYXIoKSBiZWxvdy4KLSAgICBtUG9vbEFsbG9j
YXRvci0+cHVzaCgpOwotfQotCi1Db21tYW5kR3JhcGg6On5Db21tYW5kR3JhcGgoKQotewotICAg
IEFTU0VSVChlbXB0eSgpKTsKLX0KLQotQ29tbWFuZEdyYXBoTm9kZSAqQ29tbWFuZEdyYXBoOjph
bGxvY2F0ZU5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uIGZ1bmN0aW9uKQotewotICAgIC8v
IFRPRE8oam1hZGlsbCk6IFVzZSBhIHBvb2wgYWxsb2NhdG9yIGZvciB0aGUgQ1BVIG5vZGUgYWxs
b2NhdGlvbnMuCi0gICAgQ29tbWFuZEdyYXBoTm9kZSAqbmV3Q29tbWFuZHMgPSBuZXcgQ29tbWFu
ZEdyYXBoTm9kZShmdW5jdGlvbiwgbVBvb2xBbGxvY2F0b3IpOwotICAgIG1Ob2Rlcy5lbXBsYWNl
X2JhY2sobmV3Q29tbWFuZHMpOwotICAgIHJldHVybiBuZXdDb21tYW5kczsKLX0KLQotQ29tbWFu
ZEdyYXBoTm9kZSAqQ29tbWFuZEdyYXBoOjphbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1hbmRHcmFw
aE5vZGVGdW5jdGlvbiBmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnRwdHJfdCByZXNvdXJjZUlEKQotewotICAgIENvbW1hbmRHcmFwaE5vZGUgKm5ld05vZGUgPSBh
bGxvY2F0ZU5vZGUoZnVuY3Rpb24pOwotICAgIG5ld05vZGUtPnNldERpYWdub3N0aWNJbmZvKHJl
c291cmNlVHlwZSwgcmVzb3VyY2VJRCk7Ci0gICAgc2V0TmV3QmFycmllcihuZXdOb2RlKTsKLQot
ICAgIHJldHVybiBuZXdOb2RlOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6c2V0TmV3QmFycmll
cihDb21tYW5kR3JhcGhOb2RlICpuZXdCYXJyaWVyKQotewotICAgIHNpemVfdCBwcmV2aW91c0Jh
cnJpZXJJbmRleCAgICAgICA9IDA7Ci0gICAgQ29tbWFuZEdyYXBoTm9kZSAqcHJldmlvdXNCYXJy
aWVyID0gZ2V0TGFzdEJhcnJpZXJOb2RlKCZwcmV2aW91c0JhcnJpZXJJbmRleCk7Ci0KLSAgICAv
LyBBZGQgYSBkZXBlbmRlbmN5IGZyb20gcHJldmlvdXNCYXJyaWVyIHRvIGFsbCBub2RlcyBpbiAo
cHJldmlvdXNCYXJyaWVyLCBuZXdCYXJyaWVyKS4KLSAgICBpZiAocHJldmlvdXNCYXJyaWVyICYm
IHByZXZpb3VzQmFycmllckluZGV4ICsgMSA8IG1Ob2Rlcy5zaXplKCkpCi0gICAgewotICAgICAg
ICBzaXplX3QgYWZ0ZXJOb2Rlc0NvdW50ID0gbU5vZGVzLnNpemUoKSAtIChwcmV2aW91c0JhcnJp
ZXJJbmRleCArIDIpOwotICAgICAgICBDb21tYW5kR3JhcGhOb2RlOjpTZXRIYXBwZW5zQmVmb3Jl
RGVwZW5kZW5jaWVzKAotICAgICAgICAgICAgcHJldmlvdXNCYXJyaWVyLCAmbU5vZGVzW3ByZXZp
b3VzQmFycmllckluZGV4ICsgMV0sIGFmdGVyTm9kZXNDb3VudCk7Ci0gICAgfQotCi0gICAgLy8g
QWRkIGEgZGVwZW5kZW5jeSBmcm9tIGFsbCBub2RlcyBpbiBbcHJldmlvdXNCYXJyaWVyLCBuZXdC
YXJyaWVyKSB0byBuZXdCYXJyaWVyLgotICAgIGFkZERlcGVuZGVuY2llc1RvTmV4dEJhcnJpZXIo
cHJldmlvdXNCYXJyaWVySW5kZXgsIG1Ob2Rlcy5zaXplKCkgLSAxLCBuZXdCYXJyaWVyKTsKLQot
ICAgIG1MYXN0QmFycmllckluZGV4ID0gbU5vZGVzLnNpemUoKSAtIDE7Ci19Ci0KLWFuZ2xlOjpS
ZXN1bHQgQ29tbWFuZEdyYXBoOjpzdWJtaXRDb21tYW5kcyhDb250ZXh0VmsgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsIHNlcmlhbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJQYXNzQ2Fj
aGUgKnJlbmRlclBhc3NDYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeUNvbW1hbmRCdWZmZXIpCi17Ci0g
ICAgLy8gVGhlcmUgaXMgbm8gcG9pbnQgaW4gc3VibWl0dGluZyBhbiBlbXB0eSBjb21tYW5kIGJ1
ZmZlciwgc28gbWFrZSBzdXJlIG5vdCB0byBjYWxsIHRoaXMKLSAgICAvLyBmdW5jdGlvbiBpZiB0
aGVyZSdzIG5vdGhpbmcgdG8gZG8uCi0gICAgQVNTRVJUKCFtTm9kZXMuZW1wdHkoKSk7Ci0KLSAg
ICB1cGRhdGVPdmVybGF5KGNvbnRleHQpOwotCi0gICAgc2l6ZV90IHByZXZpb3VzQmFycmllcklu
ZGV4ICAgICAgID0gMDsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpwcmV2aW91c0JhcnJpZXIgPSBn
ZXRMYXN0QmFycmllck5vZGUoJnByZXZpb3VzQmFycmllckluZGV4KTsKLQotICAgIC8vIEFkZCBh
IGRlcGVuZGVuY3kgZnJvbSBwcmV2aW91c0JhcnJpZXIgdG8gYWxsIG5vZGVzIGluIChwcmV2aW91
c0JhcnJpZXIsIGVuZF0uCi0gICAgaWYgKHByZXZpb3VzQmFycmllciAmJiBwcmV2aW91c0JhcnJp
ZXJJbmRleCArIDEgPCBtTm9kZXMuc2l6ZSgpKQotICAgIHsKLSAgICAgICAgc2l6ZV90IGFmdGVy
Tm9kZXNDb3VudCA9IG1Ob2Rlcy5zaXplKCkgLSAocHJldmlvdXNCYXJyaWVySW5kZXggKyAxKTsK
LSAgICAgICAgQ29tbWFuZEdyYXBoTm9kZTo6U2V0SGFwcGVuc0JlZm9yZURlcGVuZGVuY2llcygK
LSAgICAgICAgICAgIHByZXZpb3VzQmFycmllciwgJm1Ob2Rlc1twcmV2aW91c0JhcnJpZXJJbmRl
eCArIDFdLCBhZnRlck5vZGVzQ291bnQpOwotICAgIH0KLQotICAgIGlmIChtRW5hYmxlR3JhcGhE
aWFnbm9zdGljcykKLSAgICB7Ci0gICAgICAgIGR1bXBHcmFwaERvdEZpbGUoc3RkOjpjb3V0KTsK
LSAgICB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxDb21tYW5kR3JhcGhOb2RlICo+IG5vZGVTdGFjazsK
LQotICAgIFZrQ29tbWFuZEJ1ZmZlckJlZ2luSW5mbyBiZWdpbkluZm8gPSB7fTsKLSAgICBiZWdp
bkluZm8uc1R5cGUgICAgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFO
RF9CVUZGRVJfQkVHSU5fSU5GTzsKLSAgICBiZWdpbkluZm8uZmxhZ3MgICAgICAgICAgICAgICAg
ICAgID0gVktfQ09NTUFORF9CVUZGRVJfVVNBR0VfT05FX1RJTUVfU1VCTUlUX0JJVDsKLSAgICBi
ZWdpbkluZm8ucEluaGVyaXRhbmNlSW5mbyAgICAgICAgID0gbnVsbHB0cjsKLQotICAgIEFOR0xF
X1ZLX1RSWShjb250ZXh0LCBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+YmVnaW4oYmVnaW5JbmZvKSk7
Ci0KLSAgICBBTkdMRV9UUlkoY29udGV4dC0+dHJhY2VHcHVFdmVudChwcmltYXJ5Q29tbWFuZEJ1
ZmZlciwgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlByaW1hcnkgQ29tbWFuZCBCdWZmZXIiKSk7Ci0KLSAgICBmb3IgKENvbW1h
bmRHcmFwaE5vZGUgKnRvcExldmVsTm9kZSA6IG1Ob2RlcykKLSAgICB7Ci0gICAgICAgIC8vIE9u
bHkgcHJvY2VzcyBjb21tYW5kcyB0aGF0IGRvbid0IGhhdmUgY2hpbGQgY29tbWFuZHMuIFRoZSBv
dGhlcnMgd2lsbCBiZSBwdWxsZWQgaW4KLSAgICAgICAgLy8gYXV0b21hdGljYWxseS4gQWxzbyBz
a2lwIGNvbW1hbmRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gdmlzaXRlZC4KLSAgICAgICAgaWYg
KHRvcExldmVsTm9kZS0+aGFzQ2hpbGRyZW4oKSB8fCB0b3BMZXZlbE5vZGUtPnZpc2l0ZWRTdGF0
ZSgpICE9IFZpc2l0ZWRTdGF0ZTo6VW52aXNpdGVkKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgbm9kZVN0YWNrLnB1c2hfYmFjayh0b3BMZXZlbE5vZGUpOwotCi0gICAgICAgIHdo
aWxlICghbm9kZVN0YWNrLmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbW1hbmRH
cmFwaE5vZGUgKm5vZGUgPSBub2RlU3RhY2suYmFjaygpOwotCi0gICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPnZpc2l0ZWRTdGF0ZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNh
c2UgVmlzaXRlZFN0YXRlOjpVbnZpc2l0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPnZp
c2l0UGFyZW50cygmbm9kZVN0YWNrKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBWaXNpdGVkU3RhdGU6OlJlYWR5OgotICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9UUlkobm9kZS0+dmlzaXRBbmRFeGVjdXRlKGNvbnRleHQsIHNlcmlhbCwgcmVuZGVy
UGFzc0NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW1hcnlDb21tYW5kQnVmZmVyKSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVT
dGFjay5wb3BfYmFjaygpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIFZpc2l0ZWRTdGF0ZTo6VmlzaXRlZDoKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZVN0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgQU5HTEVfVFJZKGNvbnRleHQtPnRyYWNlR3B1RXZlbnQocHJpbWFyeUNvbW1hbmRCdWZm
ZXIsIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiUHJpbWFyeSBDb21tYW5kIEJ1ZmZlciIpKTsKLQotICAgIEFOR0xFX1ZLX1RSWShj
b250ZXh0LCBwcmltYXJ5Q29tbWFuZEJ1ZmZlci0+ZW5kKCkpOwotCi0gICAgY2xlYXIoKTsKLQot
ICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotYm9vbCBDb21tYW5kR3Jh
cGg6OmVtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbU5vZGVzLmVtcHR5KCk7Ci19Ci0KLXZv
aWQgQ29tbWFuZEdyYXBoOjpjbGVhcigpCi17Ci0gICAgbUxhc3RCYXJyaWVySW5kZXggPSBrSW52
YWxpZE5vZGVJbmRleDsKLSAgICAvLyBSZWxlYXNlIGNtZCBncmFwaCBwb29sIG1lbW9yeSBub3cg
dGhhdCBjbWRzIGFyZSBzdWJtaXR0ZWQKLSAgICAvLyBOT1RFOiBUaGlzIGZyZWVzIGFsbCBtZW1v
cnkgc2luY2UgbGFzdCBwdXNoLiBSaWdodCBub3cgb25seSB0aGUgQ29tbWFuZEdyYXBoCi0gICAg
Ly8gIHdpbGwgcHVzaCB0aGUgYWxsb2NhdG9yIChhdCBjcmVhdGlvbiBhbmQgYmVsb3cpLiBJZiBv
dGhlciBwZW9wbGUgc3RhcnQKLSAgICAvLyAgcHVzaGluZyB0aGUgYWxsb2NhdG9yIHRoaXMgKGFu
ZC9vciB0aGUgYWxsb2NhdG9yKSB3aWxsIG5lZWQgdG8gYmUgdXBkYXRlZC4KLSAgICBtUG9vbEFs
bG9jYXRvci0+cG9wKCk7Ci0gICAgbVBvb2xBbGxvY2F0b3ItPnB1c2goKTsKLQotICAgIC8vIFRP
RE8oam1hZGlsbCk6IFVzZSBwb29sIGFsbG9jYXRvciBmb3IgcGVyZm9ybWFuY2UuIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMjk1MQotICAgIGZvciAoQ29tbWFuZEdyYXBoTm9kZSAqbm9kZSA6IG1Ob2Rl
cykKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBub2RlOwotICAgIH0KLSAgICBtTm9kZXMuY2xlYXIo
KTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6OmJlZ2luUXVlcnkoY29uc3QgUXVlcnlQb29sICpx
dWVyeVBvb2wsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17Ci0gICAgQ29tbWFuZEdyYXBoTm9kZSAq
bmV3Tm9kZSA9IGFsbG9jYXRlQmFycmllck5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpC
ZWdpblF1ZXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6UXVlcnksIDApOwotICAgIG5ld05vZGUt
PnNldFF1ZXJ5UG9vbChxdWVyeVBvb2wsIHF1ZXJ5SW5kZXgpOwotfQotCi12b2lkIENvbW1hbmRH
cmFwaDo6ZW5kUXVlcnkoY29uc3QgUXVlcnlQb29sICpxdWVyeVBvb2wsIHVpbnQzMl90IHF1ZXJ5
SW5kZXgpCi17Ci0gICAgQ29tbWFuZEdyYXBoTm9kZSAqbmV3Tm9kZSA9Ci0gICAgICAgIGFsbG9j
YXRlQmFycmllck5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1bmN0aW9uOjpFbmRRdWVyeSwgQ29tbWFu
ZEdyYXBoUmVzb3VyY2VUeXBlOjpRdWVyeSwgMCk7Ci0gICAgbmV3Tm9kZS0+c2V0UXVlcnlQb29s
KHF1ZXJ5UG9vbCwgcXVlcnlJbmRleCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoOjp3cml0ZVRp
bWVzdGFtcChjb25zdCBRdWVyeVBvb2wgKnF1ZXJ5UG9vbCwgdWludDMyX3QgcXVlcnlJbmRleCkK
LXsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpuZXdOb2RlID0gYWxsb2NhdGVCYXJyaWVyTm9kZShD
b21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OldyaXRlVGltZXN0YW1wLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaFJlc291cmNl
VHlwZTo6UXVlcnksIDApOwotICAgIG5ld05vZGUtPnNldFF1ZXJ5UG9vbChxdWVyeVBvb2wsIHF1
ZXJ5SW5kZXgpOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFj
a0VtdWxhdGVkUXVlcnkoKQotewotICAgIGFsbG9jYXRlQmFycmllck5vZGUoQ29tbWFuZEdyYXBo
Tm9kZUZ1bmN0aW9uOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrUXVlcnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkVtdWxhdGVkUXVlcnksIDApOwot
fQotCi12b2lkIENvbW1hbmRHcmFwaDo6ZW5kVHJhbnNmb3JtRmVlZGJhY2tFbXVsYXRlZFF1ZXJ5
KCkKLXsKLSAgICBhbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6
RW5kVHJhbnNmb3JtRmVlZGJhY2tRdWVyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbW1h
bmRHcmFwaFJlc291cmNlVHlwZTo6RW11bGF0ZWRRdWVyeSwgMCk7Ci19Ci0KLXZvaWQgQ29tbWFu
ZEdyYXBoOjpzZXRGZW5jZVN5bmMoY29uc3Qgdms6OkV2ZW50ICZldmVudCkKLXsKLSAgICBDb21t
YW5kR3JhcGhOb2RlICpuZXdOb2RlID0gYWxsb2NhdGVCYXJyaWVyTm9kZShDb21tYW5kR3JhcGhO
b2RlRnVuY3Rpb246OlNldEZlbmNlU3luYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkZlbmNlU3lu
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJmV2ZW50KSk7Ci0gICAgbmV3Tm9kZS0+c2V0RmVu
Y2VTeW5jKGV2ZW50KTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6OndhaXRGZW5jZVN5bmMoY29u
c3Qgdms6OkV2ZW50ICZldmVudCkKLXsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpuZXdOb2RlID0g
YWxsb2NhdGVCYXJyaWVyTm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OldhaXRGZW5jZVN5
bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpGZW5jZVN5bmMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KCZldmVudCkpOwotICAgIG5ld05vZGUtPnNldEZlbmNlU3luYyhldmVudCk7Ci19Ci0KLXZv
aWQgQ29tbWFuZEdyYXBoOjptZW1vcnlCYXJyaWVyKFZrRmxhZ3Mgc3JjQWNjZXNzLCBWa0ZsYWdz
IGRzdEFjY2VzcywgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3RhZ2VzKQotewotICAgIENvbW1hbmRH
cmFwaE5vZGUgKm5ld05vZGUgPSBhbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVG
dW5jdGlvbjo6R3JhcGhCYXJyaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6R3JhcGhCYXJyaWVy
LCAwKTsKLSAgICBuZXdOb2RlLT5hZGRHbG9iYWxNZW1vcnlCYXJyaWVyKHNyY0FjY2VzcywgZHN0
QWNjZXNzLCBzdGFnZXMpOwotfQotCi12b2lkIENvbW1hbmRHcmFwaDo6aW5zZXJ0RGVidWdNYXJr
ZXIoR0xlbnVtIHNvdXJjZSwgc3RkOjpzdHJpbmcgJiZtYXJrZXIpCi17Ci0gICAgQ29tbWFuZEdy
YXBoTm9kZSAqbmV3Tm9kZSA9IGFsbG9jYXRlQmFycmllck5vZGUoQ29tbWFuZEdyYXBoTm9kZUZ1
bmN0aW9uOjpJbnNlcnREZWJ1Z01hcmtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkRlYnVnTWFy
a2VyLCAwKTsKLSAgICBuZXdOb2RlLT5zZXREZWJ1Z01hcmtlcihzb3VyY2UsIHN0ZDo6bW92ZSht
YXJrZXIpKTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6OnB1c2hEZWJ1Z01hcmtlcihHTGVudW0g
c291cmNlLCBzdGQ6OnN0cmluZyAmJm1hcmtlcikKLXsKLSAgICBDb21tYW5kR3JhcGhOb2RlICpu
ZXdOb2RlID0gYWxsb2NhdGVCYXJyaWVyTm9kZShDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb246OlB1
c2hEZWJ1Z01hcmtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkRlYnVnTWFya2VyLCAwKTsKLSAg
ICBuZXdOb2RlLT5zZXREZWJ1Z01hcmtlcihzb3VyY2UsIHN0ZDo6bW92ZShtYXJrZXIpKTsKLX0K
LQotdm9pZCBDb21tYW5kR3JhcGg6OnBvcERlYnVnTWFya2VyKCkKLXsKLSAgICBhbGxvY2F0ZUJh
cnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6UG9wRGVidWdNYXJrZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkRlYnVnTWFya2Vy
LCAwKTsKLX0KLQotdm9pZCBDb21tYW5kR3JhcGg6Om1ha2VIb3N0VmlzaWJsZUJ1ZmZlcldyaXRl
QXZhaWxhYmxlKCkKLXsKLSAgICBhbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVG
dW5jdGlvbjo6SG9zdEF2YWlsYWJpbGl0eU9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6SG9zdEF2YWlsYWJpbGl0eU9wZXJhdGlvbiwg
MCk7Ci19Ci0KLXZvaWQgQ29tbWFuZEdyYXBoOjpzeW5jRXh0ZXJuYWxNZW1vcnkoKQotewotICAg
IC8vIEFkZCBhbiBhbGwtaW5jbHVzaXZlIG1lbW9yeSBiYXJyaWVyLgotICAgIG1lbW9yeUJhcnJp
ZXIoVktfQUNDRVNTX01FTU9SWV9XUklURV9CSVQsCi0gICAgICAgICAgICAgICAgICBWS19BQ0NF
U1NfTUVNT1JZX1JFQURfQklUIHwgVktfQUNDRVNTX01FTU9SWV9XUklURV9CSVQsCi0gICAgICAg
ICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklUKTsKLX0KLQotLy8g
RHVtcHMgdGhlIGNvbW1hbmQgZ3JhcGggaW50byBhIGRvdCBmaWxlIHRoYXQgd29ya3Mgd2l0aCBn
cmFwaHZpei4KLXZvaWQgQ29tbWFuZEdyYXBoOjpkdW1wR3JhcGhEb3RGaWxlKHN0ZDo6b3N0cmVh
bSAmb3V0KSBjb25zdAotewotICAgIC8vIFRoaXMgSUQgbWFwcyBhIG5vZGUgcG9pbnRlciB0byBh
IG1vbm90b25pYyBJRC4gSXQgYWxsb3dzIHVzIHRvIGxvb2sgdXAgcGFyZW50IG5vZGUgSURzLgot
ICAgIHN0ZDo6bWFwPGNvbnN0IENvbW1hbmRHcmFwaE5vZGUgKiwgaW50PiBub2RlSURNYXA7Ci0g
ICAgc3RkOjptYXA8dWludHB0cl90LCBpbnQ+IG9iamVjdElETWFwOwotICAgIHN0ZDo6bWFwPHN0
ZDo6cGFpcjxWa1F1ZXJ5UG9vbCwgdWludDMyX3Q+LCBpbnQ+IHF1ZXJ5SURNYXA7Ci0KLSAgICAv
LyBNYXAgbm9kZXMgdG8gaWRzLgotICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJ
bmRleCA8IG1Ob2Rlcy5zaXplKCk7ICsrbm9kZUluZGV4KQotICAgIHsKLSAgICAgICAgY29uc3Qg
Q29tbWFuZEdyYXBoTm9kZSAqbm9kZSA9IG1Ob2Rlc1tub2RlSW5kZXhdOwotICAgICAgICBub2Rl
SURNYXBbbm9kZV0gICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8aW50Pihub2RlSW5kZXgpICsg
MTsKLSAgICB9Ci0KLSAgICBpbnQgYnVmZmVySURDb3VudGVyICAgICAgPSAxOwotICAgIGludCBm
cmFtZWJ1ZmZlcklEQ291bnRlciA9IDE7Ci0gICAgaW50IGltYWdlSURDb3VudGVyICAgICAgID0g
MTsKLSAgICBpbnQgcXVlcnlJRENvdW50ZXIgICAgICAgPSAxOwotICAgIGludCBkaXNwYXRjaGVy
SURDb3VudGVyICA9IDE7Ci0gICAgaW50IGZlbmNlSURDb3VudGVyICAgICAgID0gMTsKLSAgICBp
bnQgeGZiSURDb3VudGVyICAgICAgICAgPSAxOwotCi0gICAgb3V0IDw8ICJkaWdyYXBoIHsiIDw8
IHN0ZDo6ZW5kbDsKLQotICAgIGZvciAoY29uc3QgQ29tbWFuZEdyYXBoTm9kZSAqbm9kZSA6IG1O
b2RlcykKLSAgICB7Ci0gICAgICAgIGludCBub2RlSUQgPSBub2RlSURNYXBbbm9kZV07Ci0KLSAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwotICAgICAgICBzdHJzdHIgPDwgR2V0UmVz
b3VyY2VUeXBlTmFtZShub2RlLT5nZXRSZXNvdXJjZVR5cGVGb3JEaWFnbm9zdGljcygpLCBub2Rl
LT5nZXRGdW5jdGlvbigpKTsKLQotICAgICAgICBpZiAobm9kZS0+Z2V0UmVzb3VyY2VUeXBlRm9y
RGlhZ25vc3RpY3MoKSA9PSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkRlYnVnTWFya2VyKQot
ICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGb3IgZGVidWcgbWFya2VycywgdXNlIHRoZSBzdHJp
bmcgZnJvbSB0aGUgZGVidWcgbWFya2VyIGl0c2VsZi4KLSAgICAgICAgICAgIGlmIChub2RlLT5n
ZXRGdW5jdGlvbigpICE9IENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbjo6UG9wRGVidWdNYXJrZXIp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICIgIiA8PCBub2RlLT5n
ZXREZWJ1Z01hcmtlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKG5vZGUtPmdldFJlc291cmNlVHlwZUZvckRpYWdub3N0aWNzKCkgPT0gQ29tbWFuZEdyYXBo
UmVzb3VyY2VUeXBlOjpRdWVyeSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gU3BlY2lhbCBj
YXNlIGZvciBxdWVyaWVzIGFzIHRoZXkgY2Fubm90IGdlbmVyYXRlIGEgcmVzb3VyY2UgSUQgYXQg
Y3JlYXRpb24gdGltZSB0aGF0Ci0gICAgICAgICAgICAvLyB3b3VsZCByZWxpYWJseSBmaXQgaW4g
YSB1aW50cHRyX3QuCi0gICAgICAgICAgICBzdHJzdHIgPDwgIiAiOwotCi0gICAgICAgICAgICBB
U1NFUlQobm9kZS0+Z2V0UmVzb3VyY2VJREZvckRpYWdub3N0aWNzKCkgPT0gMCk7Ci0KLSAgICAg
ICAgICAgIGF1dG8gcXVlcnlJRCA9IHN0ZDo6bWFrZV9wYWlyKG5vZGUtPmdldFF1ZXJ5UG9vbCgp
LCBub2RlLT5nZXRRdWVyeUluZGV4KCkpOwotCi0gICAgICAgICAgICBhdXRvIGl0ID0gcXVlcnlJ
RE1hcC5maW5kKHF1ZXJ5SUQpOwotICAgICAgICAgICAgaWYgKGl0ICE9IHF1ZXJ5SURNYXAuZW5k
KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3Ryc3RyIDw8IGl0LT5zZWNvbmQ7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaW50IGlkID0gcXVlcnlJRENvdW50ZXIrKzsKLQotICAgICAgICAgICAgICAgIHF1
ZXJ5SURNYXBbcXVlcnlJRF0gPSBpZDsKLSAgICAgICAgICAgICAgICBzdHJzdHIgPDwgaWQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIW5vZGUtPmhhc0RpYWdu
b3N0aWNJRCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGFwcGVuZCBm
b3IgdGhlc2Ugc3BlY2lhbCBub2Rlcy4gIFRoZSBuYW1lIGlzIHN1ZmZpY2llbnQuCi0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJzdHIgPDwgIiAiOwot
Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UgYXNzaWduIGVhY2ggb2JqZWN0IGFuIElELCBzbyBh
bGwgdGhlIG5vZGVzIG9mIHRoZSBzYW1lIG9iamVjdCBoYXZlIHRoZSBzYW1lCi0gICAgICAgICAg
ICAvLyBsYWJlbC4KLSAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRSZXNvdXJjZUlERm9yRGlh
Z25vc3RpY3MoKSAhPSAwKTsKLSAgICAgICAgICAgIGF1dG8gaXQgPSBvYmplY3RJRE1hcC5maW5k
KG5vZGUtPmdldFJlc291cmNlSURGb3JEaWFnbm9zdGljcygpKTsKLSAgICAgICAgICAgIGlmIChp
dCAhPSBvYmplY3RJRE1hcC5lbmQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
dHJzdHIgPDwgaXQtPnNlY29uZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgaWQgPSAwOwotCi0gICAgICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5nZXRSZXNvdXJjZVR5cGVGb3JEaWFnbm9zdGljcygpKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJj
ZVR5cGU6OkJ1ZmZlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gYnVmZmVySURDb3Vu
dGVyKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkZyYW1lYnVmZmVyOgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWQgPSBmcmFtZWJ1ZmZlcklEQ291bnRlcisrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdyYXBo
UmVzb3VyY2VUeXBlOjpJbWFnZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gaW1hZ2VJ
RENvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RGlzcGF0Y2hlcjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlkID0gZGlzcGF0Y2hlcklEQ291bnRlcisrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZEdy
YXBoUmVzb3VyY2VUeXBlOjpGZW5jZVN5bmM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZCA9
IGZlbmNlSURDb3VudGVyKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkVtdWxhdGVkUXVl
cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZCA9IHhmYklEQ291bnRlcisrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgb2JqZWN0
SURNYXBbbm9kZS0+Z2V0UmVzb3VyY2VJREZvckRpYWdub3N0aWNzKCldID0gaWQ7Ci0gICAgICAg
ICAgICAgICAgc3Ryc3RyIDw8IGlkOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsID0gc3Ryc3RyLnN0cigpOwotICAgICAgICBvdXQg
PDwgIiAgIiA8PCBub2RlSUQgPDwgIltsYWJlbCA9PCIgPDwgbGFiZWwgPDwgIjxCUi8+PEZPTlQg
UE9JTlQtU0laRT1cIjEwXCI+Tm9kZSBJRCAiCi0gICAgICAgICAgICA8PCBub2RlSUQgPDwgbm9k
ZS0+ZHVtcENvbW1hbmRzRm9yRGlhZ25vc3RpY3MoIjxCUi8+IikgPDwgIjwvRk9OVD4+XTsiIDw8
IHN0ZDo6ZW5kbDsKLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IENvbW1hbmRHcmFwaE5vZGUgKm5v
ZGUgOiBtTm9kZXMpCi0gICAgewotICAgICAgICBpbnQgbm9kZUlEID0gbm9kZUlETWFwW25vZGVd
OwotCi0gICAgICAgIGZvciAoY29uc3QgQ29tbWFuZEdyYXBoTm9kZSAqcGFyZW50IDogbm9kZS0+
Z2V0UGFyZW50c0ZvckRpYWdub3N0aWNzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBw
YXJlbnRJRCA9IG5vZGVJRE1hcFtwYXJlbnRdOwotICAgICAgICAgICAgb3V0IDw8ICIgICIgPDwg
cGFyZW50SUQgPDwgIiAtPiAiIDw8IG5vZGVJRCA8PCAiOyIgPDwgc3RkOjplbmRsOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgb3V0IDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci19Ci0KLXZvaWQgQ29t
bWFuZEdyYXBoOjp1cGRhdGVPdmVybGF5KENvbnRleHRWayAqY29udGV4dFZrKSBjb25zdAotewot
ICAgIGNvbnN0IGdsOjpPdmVybGF5VHlwZSAqb3ZlcmxheSA9IGNvbnRleHRWay0+Z2V0T3Zlcmxh
eSgpOwotCi0gICAgb3ZlcmxheS0+Z2V0UnVubmluZ0dyYXBoV2lkZ2V0KGdsOjpXaWRnZXRJZDo6
VnVsa2FuQ29tbWFuZEdyYXBoU2l6ZSktPmFkZChtTm9kZXMuc2l6ZSgpKTsKLQotICAgIG92ZXJs
YXktPmdldFJ1bm5pbmdIaXN0b2dyYW1XaWRnZXQoZ2w6OldpZGdldElkOjpWdWxrYW5TZWNvbmRh
cnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlKQotICAgICAgICAtPnNldChDYWxjdWxhdGVTZWNvbmRh
cnlDb21tYW5kQnVmZmVyUG9vbFdhc3RlKG1Ob2RlcykpOwotICAgIG92ZXJsYXktPmdldFJ1bm5p
bmdIaXN0b2dyYW1XaWRnZXQoZ2w6OldpZGdldElkOjpWdWxrYW5TZWNvbmRhcnlDb21tYW5kQnVm
ZmVyUG9vbFdhc3RlKS0+bmV4dCgpOwotfQotCi1Db21tYW5kR3JhcGhOb2RlICpDb21tYW5kR3Jh
cGg6OmdldExhc3RCYXJyaWVyTm9kZShzaXplX3QgKmluZGV4T3V0KQotewotICAgICppbmRleE91
dCA9IG1MYXN0QmFycmllckluZGV4ID09IGtJbnZhbGlkTm9kZUluZGV4ID8gMCA6IG1MYXN0QmFy
cmllckluZGV4OwotICAgIHJldHVybiBtTGFzdEJhcnJpZXJJbmRleCA9PSBrSW52YWxpZE5vZGVJ
bmRleCA/IG51bGxwdHIgOiBtTm9kZXNbbUxhc3RCYXJyaWVySW5kZXhdOwotfQotCi12b2lkIENv
bW1hbmRHcmFwaDo6YWRkRGVwZW5kZW5jaWVzVG9OZXh0QmFycmllcihzaXplX3QgYmVnaW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFu
ZEdyYXBoTm9kZSAqbmV4dEJhcnJpZXIpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IGJlZ2luOyBp
IDwgZW5kOyArK2kpCi0gICAgewotICAgICAgICAvLyBBcyBhIHNtYWxsIG9wdGltaXphdGlvbiwg
b25seSBhZGQgZWRnZXMgdG8gY2hpbGRsZXNzIG5vZGVzLiAgVGhlIG90aGVycyBoYXZlIGFuCi0g
ICAgICAgIC8vIGluZGlyZWN0IGRlcGVuZGVuY3kuCi0gICAgICAgIGlmICghbU5vZGVzW2ldLT5o
YXNDaGlsZHJlbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBDb21tYW5kR3JhcGhOb2RlOjpT
ZXRIYXBwZW5zQmVmb3JlRGVwZW5kZW5jeShtTm9kZXNbaV0sIG5leHRCYXJyaWVyKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotLy8gUmVzb3VyY2VVc2VMaXN0IGltcGxlbWVudGF0aW9uLgotUmVz
b3VyY2VVc2VMaXN0OjpSZXNvdXJjZVVzZUxpc3QoKSA9IGRlZmF1bHQ7Ci0KLVJlc291cmNlVXNl
TGlzdDo6flJlc291cmNlVXNlTGlzdCgpCi17Ci0gICAgQVNTRVJUKG1SZXNvdXJjZVVzZXMuZW1w
dHkoKSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VVc2VMaXN0OjpyZWxlYXNlUmVzb3VyY2VVc2VzKCkK
LXsKLSAgICBmb3IgKFNoYXJlZFJlc291cmNlVXNlICZ1c2UgOiBtUmVzb3VyY2VVc2VzKQotICAg
IHsKLSAgICAgICAgdXNlLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBtUmVzb3VyY2VVc2VzLmNs
ZWFyKCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VVc2VMaXN0OjpyZWxlYXNlUmVzb3VyY2VVc2VzQW5k
VXBkYXRlU2VyaWFscyhTZXJpYWwgc2VyaWFsKQotewotICAgIGZvciAoU2hhcmVkUmVzb3VyY2VV
c2UgJnVzZSA6IG1SZXNvdXJjZVVzZXMpCi0gICAgewotICAgICAgICB1c2UucmVsZWFzZUFuZFVw
ZGF0ZVNlcmlhbChzZXJpYWwpOwotICAgIH0KLQotICAgIG1SZXNvdXJjZVVzZXMuY2xlYXIoKTsK
LX0KLX0gIC8vIG5hbWVzcGFjZSB2awotfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1h
bmRHcmFwaC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9Db21tYW5kR3JhcGguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E2
NzljYmEwN2U3MTMwNDBjYWY0NTgyOGU3Y2EwOGJkMDhhYmFhMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5oCisrKyAvZGV2L251bGwKQEAg
LTEsODEzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBDb21tYW5kR3JhcGg6Ci0vLyAgICBEZWZlcnJl
ZCB3b3JrIGNvbnN0cnVjdGVkIGJ5IEdMIGNhbGxzLCB0aGF0IHdpbGwgbGF0ZXIgYmUgZmx1c2hl
ZCB0byBWdWxrYW4uCi0vLwotCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9DT01N
QU5EX0dSQVBIX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9DT01NQU5EX0dS
QVBIX0hfCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29t
bWFuZEJ1ZmZlci5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYWNo
ZV91dGlscy5oIgotCi1uYW1lc3BhY2UgcngKLXsKLQotbmFtZXNwYWNlIHZrCi17Ci1jbGFzcyBD
b21tYW5kR3JhcGg7Ci0KLWVudW0gY2xhc3MgVmlzaXRlZFN0YXRlCi17Ci0gICAgVW52aXNpdGVk
LAotICAgIFJlYWR5LAotICAgIFZpc2l0ZWQsCi19OwotCi1lbnVtIGNsYXNzIENvbW1hbmRHcmFw
aFJlc291cmNlVHlwZQotewotICAgIEJ1ZmZlciwKLSAgICBGcmFtZWJ1ZmZlciwKLSAgICBJbWFn
ZSwKLSAgICBRdWVyeSwKLSAgICBEaXNwYXRjaGVyLAotICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFj
ayBxdWVyaWVzIGNvdWxkIGJlIGhhbmRsZWQgZW50aXJlbHkgb24gdGhlIENQVSAoaWYgbm90IHVz
aW5nCi0gICAgLy8gVktfRVhUX3RyYW5zZm9ybV9mZWVkYmFjayksIGJ1dCBzdGlsbCBuZWVkIHRv
IGdlbmVyYXRlIGEgY29tbWFuZCBncmFwaCBiYXJyaWVyIG5vZGUuCi0gICAgRW11bGF0ZWRRdWVy
eSwKLSAgICBGZW5jZVN5bmMsCi0gICAgR3JhcGhCYXJyaWVyLAotICAgIERlYnVnTWFya2VyLAot
ICAgIEhvc3RBdmFpbGFiaWxpdHlPcGVyYXRpb24sCi19OwotCi0vLyBDZXJ0YWluIGZ1bmN0aW9u
YWxpdHkgY2Fubm90IGJlIHB1dCBpbiBzZWNvbmRhcnkgY29tbWFuZCBidWZmZXJzLCBzbyB0aGV5
IGFyZSBzcGVjaWFsLWNhc2VkIGluCi0vLyB0aGUgbm9kZS4KLWVudW0gY2xhc3MgQ29tbWFuZEdy
YXBoTm9kZUZ1bmN0aW9uCi17Ci0gICAgR2VuZXJpYywKLSAgICBCZWdpblF1ZXJ5LAotICAgIEVu
ZFF1ZXJ5LAotICAgIFdyaXRlVGltZXN0YW1wLAotICAgIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tR
dWVyeSwKLSAgICBFbmRUcmFuc2Zvcm1GZWVkYmFja1F1ZXJ5LAotICAgIFNldEZlbmNlU3luYywK
LSAgICBXYWl0RmVuY2VTeW5jLAotICAgIEdyYXBoQmFycmllciwKLSAgICBJbnNlcnREZWJ1Z01h
cmtlciwKLSAgICBQdXNoRGVidWdNYXJrZXIsCi0gICAgUG9wRGVidWdNYXJrZXIsCi0gICAgSG9z
dEF2YWlsYWJpbGl0eU9wZXJhdGlvbiwKLX07Ci0KLS8vIFJlY2VpdmVzIG5vdGlmaWNhdGlvbnMg
d2hlbiBhIHJlbmRlciBwYXNzIGNvbW1hbmQgYnVmZmVyIGlzIG5vIGxvbmdlciBhYmxlIHRvIHJl
Y29yZC4gQ2FuIGJlCi0vLyB1c2VkIHdpdGggaW5oZXJpdGFuY2UuIEZhc3RlciB0aGFuIHVzaW5n
IGFuIGludGVyZmFjZSBjbGFzcyBzaW5jZSBpdCBoYXMgaW5saW5lZCBtZXRob2RzLiBDb3VsZAot
Ly8gYmUgdXNlZCB3aXRoIGNvbXBvc2l0aW9uIGJ5IGFkZGluZyBhIGdldENvbW1hbmRCdWZmZXIg
bWV0aG9kLgotY2xhc3MgUmVuZGVyUGFzc093bmVyCi17Ci0gIHB1YmxpYzoKLSAgICBSZW5kZXJQ
YXNzT3duZXIoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB+UmVuZGVyUGFzc093bmVyKCkge30K
LQotICAgIEFOR0xFX0lOTElORSB2b2lkIG9uUmVuZGVyUGFzc0ZpbmlzaGVkKCkgeyBtUmVuZGVy
UGFzc0NvbW1hbmRCdWZmZXIgPSBudWxscHRyOyB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIENvbW1h
bmRCdWZmZXIgKm1SZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7Ci19OwotCi0vLyBP
bmx5IHVzZWQgaW50ZXJuYWxseSBpbiB0aGUgY29tbWFuZCBncmFwaC4gS2VwdCBpbiB0aGUgaGVh
ZGVyIGZvciBiZXR0ZXIgaW5saW5pbmcgcGVyZm9ybWFuY2UuCi1jbGFzcyBDb21tYW5kR3JhcGhO
b2RlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBDb21tYW5k
R3JhcGhOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlvbiBmdW5jdGlvbiwgYW5nbGU6OlBvb2xB
bGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IpOwotICAgIH5Db21tYW5kR3JhcGhOb2RlKCk7Ci0KLSAg
ICAvLyBJbW11dGFibGUgcXVlcmllcyBmb3Igd2hlbiB3ZSdyZSB3YWxraW5nIHRoZSBjb21tYW5k
cyB0cmVlLgotICAgIENvbW1hbmRCdWZmZXIgKmdldE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMo
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtSGFzQ2hpbGRyZW4pOwotICAgICAgICByZXR1cm4g
Jm1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzOwotICAgIH0KLQotICAgIENvbW1hbmRCdWZmZXIg
KmdldEluc2lkZVJlbmRlclBhc3NDb21tYW5kcygpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1I
YXNDaGlsZHJlbik7Ci0gICAgICAgIHJldHVybiAmbUluc2lkZVJlbmRlclBhc3NDb21tYW5kczsK
LSAgICB9Ci0KLSAgICAvLyBGb3Igb3V0c2lkZSB0aGUgcmVuZGVyIHBhc3MgKGNvcGllcywgdHJh
bnNpdGlvbnMsIGV0YykuCi0gICAgYW5nbGU6OlJlc3VsdCBiZWdpbk91dHNpZGVSZW5kZXJQYXNz
UmVjb3JkaW5nKENvbnRleHRWayAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29tbWFuZFBvb2wgJmNvbW1hbmRQb29sLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5k
QnVmZmVyICoqY29tbWFuZHNPdXQpOwotCi0gICAgLy8gRm9yIHJlbmRlcmluZyBjb21tYW5kcyAo
ZHJhd3MpLgotICAgIGFuZ2xlOjpSZXN1bHQgYmVnaW5JbnNpZGVSZW5kZXJQYXNzUmVjb3JkaW5n
KENvbnRleHRWayAqY29udGV4dCwgQ29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRzT3V0KTsKLQotICAg
IC8vIHN0b3JlUmVuZGVyUGFzc0luZm8gYW5kIGFwcGVuZCpSZW5kZXJUYXJnZXQgc3RvcmUgaW5m
byByZWxldmFudCB0byB0aGUgUmVuZGVyUGFzcy4KLSAgICB2b2lkIHN0b3JlUmVuZGVyUGFzc0lu
Zm8oY29uc3QgRnJhbWVidWZmZXIgJmZyYW1lYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlIHJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZrOjpSZW5kZXJQYXNzRGVzYyAmcmVuZGVyUGFzc0Rlc2MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dGFjaG1lbnRPcHNBcnJheSAmcmVu
ZGVyUGFzc0F0dGFjaG1lbnRPcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gJmNsZWFyVmFsdWVzKTsKLQotICAgIHZvaWQgY2xl
YXJSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgsIGNvbnN0
IFZrQ2xlYXJDb2xvclZhbHVlICZjbGVhclZhbHVlKQotICAgIHsKLSAgICAgICAgbVJlbmRlclBh
c3NBdHRhY2htZW50T3BzW2F0dGFjaG1lbnRJbmRleF0ubG9hZE9wID0gVktfQVRUQUNITUVOVF9M
T0FEX09QX0NMRUFSOwotICAgICAgICBtUmVuZGVyUGFzc0NsZWFyVmFsdWVzW2F0dGFjaG1lbnRJ
bmRleF0uY29sb3IgICAgPSBjbGVhclZhbHVlOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgsIGZsb2F0IGRlcHRo
KQotICAgIHsKLSAgICAgICAgbVJlbmRlclBhc3NBdHRhY2htZW50T3BzW2F0dGFjaG1lbnRJbmRl
eF0ubG9hZE9wICAgICAgICAgICA9IFZLX0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVBUjsKLSAgICAg
ICAgbVJlbmRlclBhc3NDbGVhclZhbHVlc1thdHRhY2htZW50SW5kZXhdLmRlcHRoU3RlbmNpbC5k
ZXB0aCA9IGRlcHRoOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnQoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCwgdWludDMyX3Qgc3RlbmNpbCkKLSAgICB7
Ci0gICAgICAgIG1SZW5kZXJQYXNzQXR0YWNobWVudE9wc1thdHRhY2htZW50SW5kZXhdLnN0ZW5j
aWxMb2FkT3AgICAgICA9IFZLX0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVBUjsKLSAgICAgICAgbVJl
bmRlclBhc3NDbGVhclZhbHVlc1thdHRhY2htZW50SW5kZXhdLmRlcHRoU3RlbmNpbC5zdGVuY2ls
ID0gc3RlbmNpbDsKLSAgICB9Ci0KLSAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgpCi0gICAgewotICAgICAgICBtUmVuZGVy
UGFzc0F0dGFjaG1lbnRPcHNbYXR0YWNobWVudEluZGV4XS5zdG9yZU9wID0gVktfQVRUQUNITUVO
VF9TVE9SRV9PUF9ET05UX0NBUkU7Ci0gICAgfQotCi0gICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4KQotICAgIHsKLSAgICAg
ICAgbVJlbmRlclBhc3NBdHRhY2htZW50T3BzW2F0dGFjaG1lbnRJbmRleF0uc3RvcmVPcCA9IFZL
X0FUVEFDSE1FTlRfU1RPUkVfT1BfRE9OVF9DQVJFOwotICAgIH0KLQotICAgIHZvaWQgaW52YWxp
ZGF0ZVJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4KQot
ICAgIHsKLSAgICAgICAgbVJlbmRlclBhc3NBdHRhY2htZW50T3BzW2F0dGFjaG1lbnRJbmRleF0u
c3RlbmNpbFN0b3JlT3AgPSBWS19BVFRBQ0hNRU5UX1NUT1JFX09QX0RPTlRfQ0FSRTsKLSAgICB9
Ci0KLSAgICAvLyBEZXBlbmRlbmN5IGNvbW1hbmRzIG9yZGVyIG5vZGUgZXhlY3V0aW9uIGluIHRo
ZSBjb21tYW5kIGdyYXBoLgotICAgIC8vIE9uY2UgYSBub2RlIGhhcyBjb21tYW5kcyB0aGF0IG11
c3QgaGFwcGVuIGFmdGVyIGl0LCByZWNvcmRpbmcgaXMgc3RvcHBlZCBhbmQgdGhlIG5vZGUgaXMK
LSAgICAvLyBmcm96ZW4gZm9yZXZlci4KLSAgICBzdGF0aWMgdm9pZCBTZXRIYXBwZW5zQmVmb3Jl
RGVwZW5kZW5jeShDb21tYW5kR3JhcGhOb2RlICpiZWZvcmVOb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaE5vZGUgKmFmdGVyTm9kZSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChiZWZvcmVOb2RlICE9IGFmdGVyTm9kZSAmJiAhYmVmb3Jl
Tm9kZS0+aXNDaGlsZE9mKGFmdGVyTm9kZSkpOwotICAgICAgICBhZnRlck5vZGUtPm1QYXJlbnRz
LmVtcGxhY2VfYmFjayhiZWZvcmVOb2RlKTsKLSAgICAgICAgYmVmb3JlTm9kZS0+c2V0SGFzQ2hp
bGRyZW4oKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBTZXRIYXBwZW5zQmVmb3JlRGVwZW5k
ZW5jaWVzKENvbW1hbmRHcmFwaE5vZGUgKipiZWZvcmVOb2RlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBiZWZvcmVOb2Rlc0NvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEdyYXBoTm9k
ZSAqYWZ0ZXJOb2RlKTsKLQotICAgIHN0YXRpYyB2b2lkIFNldEhhcHBlbnNCZWZvcmVEZXBlbmRl
bmNpZXMoQ29tbWFuZEdyYXBoTm9kZSAqYmVmb3JlTm9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRHcmFwaE5vZGUgKiphZnRlck5vZGVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGFmdGVy
Tm9kZXNDb3VudCk7Ci0KLSAgICBib29sIGhhc1BhcmVudHMoKSBjb25zdDsKLSAgICBib29sIGhh
c0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbUhhc0NoaWxkcmVuOyB9Ci0KLSAgICAvLyBDb21t
YW5kcyBmb3IgdHJhdmVyc2luZyB0aGUgbm9kZSBvbiBhIGZsdXNoIG9wZXJhdGlvbi4KLSAgICBW
aXNpdGVkU3RhdGUgdmlzaXRlZFN0YXRlKCkgY29uc3Q7Ci0gICAgdm9pZCB2aXNpdFBhcmVudHMo
c3RkOjp2ZWN0b3I8Q29tbWFuZEdyYXBoTm9kZSAqPiAqc3RhY2spOwotICAgIGFuZ2xlOjpSZXN1
bHQgdmlzaXRBbmRFeGVjdXRlKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2VyaWFsIHNlcmlhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJQYXNzQ2FjaGUgKnJlbmRlclBhc3NDYWNoZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeUNvbW1hbmRC
dWZmZXIpOwotCi0gICAgLy8gT25seSB1c2VkIGluIHRoZSBjb21tYW5kIGdyYXBoIGRpYWdub3N0
aWNzLgotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPENvbW1hbmRHcmFwaE5vZGUgKj4gJmdldFBhcmVu
dHNGb3JEaWFnbm9zdGljcygpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlhZ25vc3RpY0luZm8oQ29t
bWFuZEdyYXBoUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSwgdWludHB0cl90IHJlc291cmNlSUQp
OwotCi0gICAgQ29tbWFuZEdyYXBoUmVzb3VyY2VUeXBlIGdldFJlc291cmNlVHlwZUZvckRpYWdu
b3N0aWNzKCkgY29uc3QgeyByZXR1cm4gbVJlc291cmNlVHlwZTsgfQotICAgIHVpbnRwdHJfdCBn
ZXRSZXNvdXJjZUlERm9yRGlhZ25vc3RpY3MoKSBjb25zdCB7IHJldHVybiBtUmVzb3VyY2VJRDsg
fQotICAgIGJvb2wgaGFzRGlhZ25vc3RpY0lEKCkgY29uc3Q7Ci0gICAgc3RkOjpzdHJpbmcgZHVt
cENvbW1hbmRzRm9yRGlhZ25vc3RpY3MoY29uc3QgY2hhciAqc2VwYXJhdG9yKSBjb25zdDsKLSAg
ICB2b2lkIGdldE1lbW9yeVVzYWdlU3RhdHNGb3JEaWFnbm9zdGljcyhzaXplX3QgKnVzZWRNZW1v
cnlPdXQsIHNpemVfdCAqYWxsb2NhdGVkTWVtb3J5T3V0KSBjb25zdDsKLQotICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJmdldFJlbmRlclBhc3NSZW5kZXJBcmVhKCkgY29uc3QgeyByZXR1cm4gbVJl
bmRlclBhc3NSZW5kZXJBcmVhOyB9Ci0KLSAgICBDb21tYW5kR3JhcGhOb2RlRnVuY3Rpb24gZ2V0
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtRnVuY3Rpb247IH0KLQotICAgIHZvaWQgc2V0UXVl
cnlQb29sKGNvbnN0IFF1ZXJ5UG9vbCAqcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeUluZGV4KTsK
LSAgICBWa1F1ZXJ5UG9vbCBnZXRRdWVyeVBvb2woKSBjb25zdCB7IHJldHVybiBtUXVlcnlQb29s
OyB9Ci0gICAgdWludDMyX3QgZ2V0UXVlcnlJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1RdWVyeUlu
ZGV4OyB9Ci0gICAgdm9pZCBzZXRGZW5jZVN5bmMoY29uc3Qgdms6OkV2ZW50ICZldmVudCk7Ci0g
ICAgdm9pZCBzZXREZWJ1Z01hcmtlcihHTGVudW0gc291cmNlLCBzdGQ6OnN0cmluZyAmJm1hcmtl
cik7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldERlYnVnTWFya2VyKCkgY29uc3QgeyByZXR1
cm4gbURlYnVnTWFya2VyOyB9Ci0KLSAgICBBTkdMRV9JTkxJTkUgdm9pZCBhZGRHbG9iYWxNZW1v
cnlCYXJyaWVyKFZrRmxhZ3Mgc3JjQWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmtGbGFncyBkc3RBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzdGFnZXMpCi0g
ICAgewotICAgICAgICBtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcyB8PSBzcmNBY2Nlc3M7
Ci0gICAgICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyRHN0QWNjZXNzIHw9IGRzdEFjY2VzczsKLSAg
ICAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXMgfD0gc3RhZ2VzOwotICAgIH0KLQotICAg
IEFOR0xFX0lOTElORSB2b2lkIHNldEFjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrSW5mbyhzaXplX3Qg
dmFsaWRCdWZmZXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmtCdWZmZXIgKmNvdW50ZXJCdWZmZXJzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYmluZEJ1
ZmZlcikKLSAgICB7Ci0gICAgICAgIG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsaWRCdWZmZXJDb3VudCk7Ci0gICAgICAgIG1SZWJp
bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMgICAgPSByZWJpbmRCdWZmZXI7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHZhbGlkQnVmZmVyQ291bnQ7IGluZGV4Kysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja0NvdW50ZXJCdWZmZXJz
W2luZGV4XSA9IGNvdW50ZXJCdWZmZXJzW2luZGV4XTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIFRoaXMgY2FuIG9ubHkgYmUgc2V0IGZvciBSZW5kZXJQYXNzIG5vZGVzLiBFYWNoIFJlbmRl
clBhc3Mgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSBvd25lci4KLSAgICB2b2lkIHNldFJlbmRl
clBhc3NPd25lcihSZW5kZXJQYXNzT3duZXIgKm93bmVyKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1SZW5kZXJQYXNzT3duZXIgPT0gbnVsbHB0cik7Ci0gICAgICAgIG1SZW5kZXJQYXNzT3duZXIg
PSBvd25lcjsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBBTkdMRV9JTkxJTkUgdm9pZCBzZXRI
YXNDaGlsZHJlbigpCi0gICAgewotICAgICAgICBtSGFzQ2hpbGRyZW4gPSB0cnVlOwotICAgICAg
ICBpZiAobVJlbmRlclBhc3NPd25lcikKLSAgICAgICAgewotICAgICAgICAgICAgbVJlbmRlclBh
c3NPd25lci0+b25SZW5kZXJQYXNzRmluaXNoZWQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIFVzZWQgZm9yIHRlc3Rpbmcgb25seS4KLSAgICBib29sIGlzQ2hpbGRPZihDb21tYW5kR3Jh
cGhOb2RlICpwYXJlbnQpOwotCi0gICAgLy8gT25seSB1c2VkIGlmIHdlIG5lZWQgYSBSZW5kZXJQ
YXNzIGZvciB0aGVzZSBjb21tYW5kcy4KLSAgICBSZW5kZXJQYXNzRGVzYyBtUmVuZGVyUGFzc0Rl
c2M7Ci0gICAgQXR0YWNobWVudE9wc0FycmF5IG1SZW5kZXJQYXNzQXR0YWNobWVudE9wczsKLSAg
ICBGcmFtZWJ1ZmZlciBtUmVuZGVyUGFzc0ZyYW1lYnVmZmVyOwotICAgIGdsOjpSZWN0YW5nbGUg
bVJlbmRlclBhc3NSZW5kZXJBcmVhOwotICAgIGdsOjpBdHRhY2htZW50QXJyYXk8VmtDbGVhclZh
bHVlPiBtUmVuZGVyUGFzc0NsZWFyVmFsdWVzOwotCi0gICAgQ29tbWFuZEdyYXBoTm9kZUZ1bmN0
aW9uIG1GdW5jdGlvbjsKLSAgICBhbmdsZTo6UG9vbEFsbG9jYXRvciAqbVBvb2xBbGxvY2F0b3I7
Ci0gICAgLy8gS2VlcCBzZXBhcmF0ZSBidWZmZXJzIGZvciBjb21tYW5kcyBpbnNpZGUgYW5kIG91
dHNpZGUgYSBSZW5kZXJQYXNzLgotICAgIC8vIFRPRE8oam1hZGlsbCk6IFdlIG1pZ2h0IG5vdCBu
ZWVkIGluc2lkZSBhbmQgb3V0c2lkZSBSZW5kZXJQYXNzIGNvbW1hbmRzIHNlcGFyYXRlLgotICAg
IENvbW1hbmRCdWZmZXIgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHM7Ci0gICAgQ29tbWFuZEJ1
ZmZlciBtSW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzOwotCi0gICAgLy8gU3BlY2lhbC1mdW5jdGlv
biBhZGRpdGlvbmFsIGRhdGE6Ci0gICAgLy8gUXVlcmllczoKLSAgICBWa1F1ZXJ5UG9vbCBtUXVl
cnlQb29sOwotICAgIHVpbnQzMl90IG1RdWVyeUluZGV4OwotICAgIC8vIEdMc3luYyBhbmQgRUdM
U3luYzoKLSAgICBWa0V2ZW50IG1GZW5jZVN5bmNFdmVudDsKLSAgICAvLyBEZWJ1ZyBtYXJrZXJz
OgotICAgIEdMZW51bSBtRGVidWdNYXJrZXJTb3VyY2U7Ci0gICAgc3RkOjpzdHJpbmcgbURlYnVn
TWFya2VyOwotCi0gICAgLy8gUGFyZW50cyBhcmUgY29tbWFuZHMgdGhhdCBtdXN0IGJlIHN1Ym1p
dHRlZCBiZWZvcmUgJ3RoaXMnIENvbW1hbmROb2RlIGNhbiBiZSBzdWJtaXR0ZWQuCi0gICAgc3Rk
Ojp2ZWN0b3I8Q29tbWFuZEdyYXBoTm9kZSAqPiBtUGFyZW50czsKLQotICAgIC8vIElmIHRoaXMg
aXMgdHJ1ZSwgb3RoZXIgY29tbWFuZHMgZXhpc3QgdGhhdCBtdXN0IGJlIHN1Ym1pdHRlZCBhZnRl
ciAndGhpcycgY29tbWFuZC4KLSAgICBib29sIG1IYXNDaGlsZHJlbjsKLQotICAgIC8vIFVzZWQg
d2hlbiB0cmF2ZXJzaW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoLgotICAgIFZpc2l0ZWRTdGF0ZSBt
VmlzaXRlZFN0YXRlOwotCi0gICAgLy8gQWRkaXRpb25hbCBkaWFnbm9zdGljIGluZm9ybWF0aW9u
LgotICAgIENvbW1hbmRHcmFwaFJlc291cmNlVHlwZSBtUmVzb3VyY2VUeXBlOwotICAgIHVpbnRw
dHJfdCBtUmVzb3VyY2VJRDsKLQotICAgIC8vIEZvciBnbG9iYWwgbWVtb3J5IGJhcnJpZXJzLgot
ICAgIFZrRmxhZ3MgbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3M7Ci0gICAgVmtGbGFncyBt
R2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzczsKLSAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBt
R2xvYmFsTWVtb3J5QmFycmllclN0YWdlczsKLQotICAgIC8vIFJlbmRlciBwYXNzIGNvbW1hbmQg
YnVmZmVyIG5vdGlmaWNhdGlvbnMuCi0gICAgUmVuZGVyUGFzc093bmVyICptUmVuZGVyUGFzc093
bmVyOwotCi0gICAgLy8gQWN0aXZlIHRyYW5zZm9ybSBmZWVkYmFjayBzdGF0ZQotICAgIGdsOjpU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNBcnJheTxWa0J1ZmZlcj4gbVRyYW5zZm9ybUZlZWRiYWNr
Q291bnRlckJ1ZmZlcnM7Ci0gICAgdWludDMyX3QgbVZhbGlkVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJDb3VudDsKLSAgICBib29sIG1SZWJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnM7Ci19Owot
Ci0vLyBUcmFja3MgaG93IGEgcmVzb3VyY2UgaXMgdXNlZCBpbiBhIGNvbW1hbmQgZ3JhcGggYW5k
IGluIGEgVmtRdWV1ZS4gVGhlIHJlZmVyZW5jZSBjb3VudCBpbmRpY2F0ZXMKLS8vIHRoZSBudW1i
ZXIgb2YgdGltZXMgYSByZXNvdXJjZSBpcyB1c2VkIGluIHRoZSBncmFwaC4gVGhlIHNlcmlhbCBp
bmRpY2F0ZXMgdGhlIGxhc3QgY3VycmVudCB1c2UKLS8vIG9mIGEgcmVzb3VyY2UgaW4gdGhlIFZr
UXVldWUuIFRoZSByZWZlcmVuY2UgY291bnQgYW5kIHNlcmlhbCB0b2dldGhlciBjYW4gZGV0ZXJt
aW5lIGlmIGEKLS8vIHJlc291cmNlIGlzIGluIHVzZS4KLXN0cnVjdCBSZXNvdXJjZVVzZQotewot
ICAgIFJlc291cmNlVXNlKCkgPSBkZWZhdWx0OwotCi0gICAgdWludDMyX3QgY291bnRlciA9IDA7
Ci0gICAgU2VyaWFsIHNlcmlhbDsKLX07Ci0KLWNsYXNzIFNoYXJlZFJlc291cmNlVXNlIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBTaGFyZWRSZXNvdXJjZVVz
ZSgpIDogbVVzZShudWxscHRyKSB7fQotICAgIH5TaGFyZWRSZXNvdXJjZVVzZSgpIHsgQVNTRVJU
KCF2YWxpZCgpKTsgfQotICAgIFNoYXJlZFJlc291cmNlVXNlKFNoYXJlZFJlc291cmNlVXNlICYm
cmhzKSA6IG1Vc2UocmhzLm1Vc2UpIHsgcmhzLm1Vc2UgPSBudWxscHRyOyB9Ci0gICAgU2hhcmVk
UmVzb3VyY2VVc2UgJm9wZXJhdG9yPShTaGFyZWRSZXNvdXJjZVVzZSAmJnJocykKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6c3dhcChtVXNlLCByaHMubVVzZSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBBTkdMRV9JTkxJTkUgYm9vbCB2YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1V
c2UgIT0gbnVsbHB0cjsgfQotCi0gICAgdm9pZCBpbml0KCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VCghbVVzZSk7Ci0gICAgICAgIG1Vc2UgPSBuZXcgUmVzb3VyY2VVc2U7Ci0gICAgICAgIG1Vc2Ut
PmNvdW50ZXIrKzsKLSAgICB9Ci0KLSAgICBBTkdMRV9JTkxJTkUgdm9pZCByZWxlYXNlKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2YWxpZCgpKTsKLSAgICAgICAgQVNTRVJUKG1Vc2UtPmNvdW50
ZXIgPiAwKTsKLSAgICAgICAgaWYgKC0tbVVzZS0+Y291bnRlciA9PSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBkZWxldGUgbVVzZTsKLSAgICAgICAgfQotICAgICAgICBtVXNlID0gbnVsbHB0
cjsKLSAgICB9Ci0KLSAgICBBTkdMRV9JTkxJTkUgdm9pZCByZWxlYXNlQW5kVXBkYXRlU2VyaWFs
KFNlcmlhbCBzZXJpYWwpCi0gICAgewotICAgICAgICBBU1NFUlQodmFsaWQoKSk7Ci0gICAgICAg
IEFTU0VSVChtVXNlLT5jb3VudGVyID4gMCk7Ci0gICAgICAgIEFTU0VSVChtVXNlLT5zZXJpYWwg
PD0gc2VyaWFsKTsKLSAgICAgICAgbVVzZS0+c2VyaWFsID0gc2VyaWFsOwotICAgICAgICByZWxl
YXNlKCk7Ci0gICAgfQotCi0gICAgQU5HTEVfSU5MSU5FIHZvaWQgc2V0KGNvbnN0IFNoYXJlZFJl
c291cmNlVXNlICZyaHMpCi0gICAgewotICAgICAgICBBU1NFUlQocmhzLnZhbGlkKCkpOwotICAg
ICAgICBBU1NFUlQoIXZhbGlkKCkpOwotICAgICAgICBBU1NFUlQocmhzLm1Vc2UtPmNvdW50ZXIg
PCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOwotICAgICAgICBtVXNlID0g
cmhzLm1Vc2U7Ci0gICAgICAgIG1Vc2UtPmNvdW50ZXIrKzsKLSAgICB9Ci0KLSAgICAvLyBUaGUg
YmFzZSBjb3VudGVyIHZhbHVlIGZvciBhIGxpdmUgcmVzb3VyY2UgaXMgIjEiLiBBbnkgdmFsdWUg
Z3JlYXRlciB0aGFuIG9uZSBpbmRpY2F0ZXMKLSAgICAvLyB0aGUgcmVzb3VyY2UgaXMgaW4gdXNl
IGJ5IGEgdms6OkNvbW1hbmRHcmFwaC4KLSAgICBBTkdMRV9JTkxJTkUgYm9vbCBoYXNSZWNvcmRl
ZENvbW1hbmRzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWxpZCgpKTsKLSAgICAg
ICAgcmV0dXJuIG1Vc2UtPmNvdW50ZXIgPiAxOwotICAgIH0KLQotICAgIEFOR0xFX0lOTElORSBi
b29sIGhhc1J1bm5pbmdDb21tYW5kcyhTZXJpYWwgbGFzdENvbXBsZXRlZFNlcmlhbCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWxpZCgpKTsKLSAgICAgICAgcmV0dXJuIG1Vc2UtPnNl
cmlhbCA+IGxhc3RDb21wbGV0ZWRTZXJpYWw7Ci0gICAgfQotCi0gICAgQU5HTEVfSU5MSU5FIGJv
b2wgaXNDdXJyZW50bHlJblVzZShTZXJpYWwgbGFzdENvbXBsZXRlZFNlcmlhbCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBoYXNSZWNvcmRlZENvbW1hbmRzKCkgfHwgaGFzUnVubmluZ0Nv
bW1hbmRzKGxhc3RDb21wbGV0ZWRTZXJpYWwpOwotICAgIH0KLQotICAgIEFOR0xFX0lOTElORSBT
ZXJpYWwgZ2V0U2VyaWFsKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2YWxpZCgpKTsK
LSAgICAgICAgcmV0dXJuIG1Vc2UtPnNlcmlhbDsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBS
ZXNvdXJjZVVzZSAqbVVzZTsKLX07Ci0KLWNsYXNzIFNoYXJlZEdhcmJhZ2UKLXsKLSAgcHVibGlj
OgotICAgIFNoYXJlZEdhcmJhZ2UoKTsKLSAgICBTaGFyZWRHYXJiYWdlKFNoYXJlZEdhcmJhZ2Ug
JiZvdGhlcik7Ci0gICAgU2hhcmVkR2FyYmFnZShTaGFyZWRSZXNvdXJjZVVzZSAmJnVzZSwgc3Rk
Ojp2ZWN0b3I8R2FyYmFnZU9iamVjdD4gJiZnYXJiYWdlKTsKLSAgICB+U2hhcmVkR2FyYmFnZSgp
OwotICAgIFNoYXJlZEdhcmJhZ2UgJm9wZXJhdG9yPShTaGFyZWRHYXJiYWdlICYmcmhzKTsKLQot
ICAgIGJvb2wgZGVzdHJveUlmQ29tcGxldGUoVmtEZXZpY2UgZGV2aWNlLCBTZXJpYWwgY29tcGxl
dGVkU2VyaWFsKTsKLQotICBwcml2YXRlOgotICAgIFNoYXJlZFJlc291cmNlVXNlIG1MaWZldGlt
ZTsKLSAgICBzdGQ6OnZlY3RvcjxHYXJiYWdlT2JqZWN0PiBtR2FyYmFnZTsKLX07Ci0KLXVzaW5n
IFNoYXJlZEdhcmJhZ2VMaXN0ID0gc3RkOjp2ZWN0b3I8U2hhcmVkR2FyYmFnZT47Ci0KLS8vIE1p
eGluIHRvIGFic3RyYWN0IGF3YXkgdGhlIHJlc291cmNlIHVzZSB0cmFja2luZy4KLWNsYXNzIFJl
c291cmNlVXNlTGlzdCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0g
ICAgUmVzb3VyY2VVc2VMaXN0KCk7Ci0gICAgdmlydHVhbCB+UmVzb3VyY2VVc2VMaXN0KCk7Ci0K
LSAgICB2b2lkIGFkZChjb25zdCBTaGFyZWRSZXNvdXJjZVVzZSAmcmVzb3VyY2VVc2UpOwotCi0g
ICAgdm9pZCByZWxlYXNlUmVzb3VyY2VVc2VzKCk7Ci0gICAgdm9pZCByZWxlYXNlUmVzb3VyY2VV
c2VzQW5kVXBkYXRlU2VyaWFscyhTZXJpYWwgc2VyaWFsKTsKLQotICBwcml2YXRlOgotICAgIHN0
ZDo6dmVjdG9yPFNoYXJlZFJlc291cmNlVXNlPiBtUmVzb3VyY2VVc2VzOwotfTsKLQotLy8gUmVz
b3VyY2VVc2VyIGlubGluZXMuCi1BTkdMRV9JTkxJTkUgdm9pZCBSZXNvdXJjZVVzZUxpc3Q6OmFk
ZChjb25zdCBTaGFyZWRSZXNvdXJjZVVzZSAmcmVzb3VyY2VVc2UpCi17Ci0gICAgLy8gRGlzYWJs
ZWQgdGhlIGFzc2VydCBiZWNhdXNlIG9mIGRpZmZpY3VsdGllcyB3aXRoIEltYWdlVmlldyByZWZl
cmVuY2VzLgotICAgIC8vIFRPRE8oam1hZGlsbCk6IENsZWFuIHVwIHdpdGggZ3JhcGggcmVkZXNp
Z24uIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDAyOQotICAgIC8vIEFTU0VSVCghZW1wdHkoKSk7Ci0g
ICAgU2hhcmVkUmVzb3VyY2VVc2UgbmV3VXNlOwotICAgIG5ld1VzZS5zZXQocmVzb3VyY2VVc2Up
OwotICAgIG1SZXNvdXJjZVVzZXMuZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZShuZXdVc2UpKTsKLX0K
LQotLy8gVGhpcyBpcyBhIGhlbHBlciBjbGFzcyBmb3IgYmFjay1lbmQgb2JqZWN0cyB1c2VkIGlu
IFZrIGNvbW1hbmQgYnVmZmVycy4gSXQgcmVjb3JkcyBhIHNlcmlhbAotLy8gYXQgY29tbWFuZCBy
ZWNvcmRpbmcgdGltZXMgaW5kaWNhdGluZyBhbiBvcmRlciBpbiB0aGUgcXVldWUuIFdlIHVzZSBG
ZW5jZXMgdG8gZGV0ZWN0IHdoZW4KLS8vIGNvbW1hbmRzIGZpbmlzaCwgYW5kIHRoZW4gcmVsZWFz
ZSBhbnkgdW5yZWZlcmVuY2VkIGFuZCBkZWxldGVkIHJlc291cmNlcyBiYXNlZCBvbiB0aGUgc3Rv
cmVkCi0vLyBxdWV1ZSBzZXJpYWwgaW4gYSBzcGVjaWFsICdnYXJiYWdlJyBxdWV1ZS4gUmVzb3Vy
Y2VzIGFsc28gdHJhY2sgY3VycmVudCByZWFkIGFuZCB3cml0ZQotLy8gZGVwZW5kZW5jaWVzLiBP
bmx5IG9uZSBjb21tYW5kIGJ1ZmZlciBub2RlIGNhbiBiZSB3cml0aW5nIHRvIHRoZSBSZXNvdXJj
ZSBhdCBhIHRpbWUsIGJ1dCBtYW55Ci0vLyBjYW4gYmUgcmVhZGluZyBmcm9tIGl0LiBUb2dldGhl
ciB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgZm9ybSBhIGNvbW1hbmQgZ3JhcGggYXQgc3VibWlzc2lv
biB0aW1lLgotY2xhc3MgQ29tbWFuZEdyYXBoUmVzb3VyY2UgOiBhbmdsZTo6Tm9uQ29weWFibGUK
LXsKLSAgcHVibGljOgotICAgIHZpcnR1YWwgfkNvbW1hbmRHcmFwaFJlc291cmNlKCk7Ci0KLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlc291cmNlIGhhcyBjb21tYW5kcyBpbiB0aGUgZ3Jh
cGguICBUaGlzIGlzIHVzZWQgdG8ga25vdyBpZiBhIGZsdXNoCi0gICAgLy8gc2hvdWxkIGJlIHBl
cmZvcm1lZCwgZS5nLiBpZiB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBHUFUgdG8gZmluaXNoIHdp
dGggdGhlIHJlc291cmNlLgotICAgIGJvb2wgaGFzUmVjb3JkZWRDb21tYW5kcygpIGNvbnN0IHsg
cmV0dXJuIG1Vc2UuaGFzUmVjb3JkZWRDb21tYW5kcygpOyB9Ci0KLSAgICAvLyBEZXRlcm1pbmUg
aWYgdGhlIGRyaXZlciBoYXMgZmluaXNoZWQgZXhlY3V0aW9uIHdpdGggdGhpcyByZXNvdXJjZS4K
LSAgICBib29sIGhhc1J1bm5pbmdDb21tYW5kcyhTZXJpYWwgbGFzdENvbXBsZXRlZFNlcmlhbCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtVXNlLmhhc1J1bm5pbmdDb21tYW5kcyhsYXN0
Q29tcGxldGVkU2VyaWFsKTsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJl
c291cmNlIGlzIGluIHVzZSBieSBBTkdMRSBvciB0aGUgZHJpdmVyLgotICAgIGJvb2wgaXNDdXJy
ZW50bHlJblVzZShTZXJpYWwgbGFzdENvbXBsZXRlZFNlcmlhbCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtVXNlLmlzQ3VycmVudGx5SW5Vc2UobGFzdENvbXBsZXRlZFNlcmlhbCk7Ci0g
ICAgfQotCi0gICAgLy8gRW5zdXJlcyB0aGUgZHJpdmVyIGlzIGNhdWdodCB1cCB0byB0aGlzIHJl
c291cmNlIGFuZCBpdCBpcyBvbmx5IGluIHVzZSBieSBBTkdMRS4KLSAgICBhbmdsZTo6UmVzdWx0
IGZpbmlzaFJ1bm5pbmdDb21tYW5kcyhDb250ZXh0VmsgKmNvbnRleHRWayk7Ci0KLSAgICAvLyBT
ZXRzIHVwIGRlcGVuZGVuY3kgcmVsYXRpb25zLiAndGhpcycgcmVzb3VyY2UgaXMgdGhlIHJlc291
cmNlIGJlaW5nIHdyaXR0ZW4gdG8uCi0gICAgdm9pZCBhZGRXcml0ZURlcGVuZGVuY3koQ29udGV4
dFZrICpjb250ZXh0VmssIENvbW1hbmRHcmFwaFJlc291cmNlICp3cml0aW5nUmVzb3VyY2UpOwot
Ci0gICAgLy8gU2V0cyB1cCBkZXBlbmRlbmN5IHJlbGF0aW9ucy4gJ3RoaXMnIHJlc291cmNlIGlz
IHRoZSByZXNvdXJjZSBiZWluZyByZWFkLgotICAgIHZvaWQgYWRkUmVhZERlcGVuZGVuY3koQ29u
dGV4dFZrICpjb250ZXh0VmssIENvbW1hbmRHcmFwaFJlc291cmNlICpyZWFkaW5nUmVzb3VyY2Up
OwotCi0gICAgLy8gVXBkYXRlcyB0aGUgaW4tdXNlIHNlcmlhbCB0cmFja2VkIGZvciB0aGlzIHJl
c291cmNlLiBXaWxsIGNsZWFyIGRlcGVuZGVuY2llcyBpZiB0aGUgcmVzb3VyY2UKLSAgICAvLyB3
YXMgbm90IHVzZWQgaW4gdGhpcyBzZXQgb2YgY29tbWFuZCBub2Rlcy4KLSAgICB2b2lkIG9uUmVz
b3VyY2VBY2Nlc3MoUmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QpOwotICAgIHZvaWQg
dXBkYXRlQ3VycmVudEFjY2Vzc05vZGVzKCk7Ci0KLSAgICAvLyBJZiBhIHJlc291cmNlIGlzIHJl
Y3JlYXRlZCwgYXMgaW4gcmVsZWFzZWQgYW5kIHJlaW5pdGlhbGl6ZWQsIHRoZSBuZXh0IGFjY2Vz
cyB0byB0aGUKLSAgICAvLyByZXNvdXJjZSB3aWxsIG5vdCBjcmVhdGUgYW4gZWRnZSBmcm9tIGl0
cyBsYXN0IG5vZGUgYW5kIHdpbGwgY3JlYXRlIGEgbmV3IGluZGVwZW5kZW50IG5vZGUuCi0gICAg
Ly8gVGhpcyBpcyBiZWNhdXNlIG1Vc2UgaXMgcmVzZXQgYW5kIHRoZSBncmFwaCBiZWxpZXZlcyBp
dCdzIGFuIGVudGlyZWx5IG5ldyByZXNvdXJjZS4gIEluIHZlcnkKLSAgICAvLyBwYXJ0aWN1bGFy
IGNhc2VzLCBzdWNoIGFzIHJlY3JlYXRpbmcgYW4gaW1hZ2Ugd2l0aCBmdWxsIG1pcGNoYWluIG9y
IGFkZGluZyBTVE9SQUdFX0lNQUdFIGZsYWcKLSAgICAvLyB0byBpdHMgdXNlcywgdGhpcyBmdW5j
dGlvbiBpcyB1c2VkIHRvIHByZXNlcnZlIHRoZSBsaW5rIGJldHdlZW4gdGhlIHByZXZpb3VzIGFu
ZCBuZXcKLSAgICAvLyBub2RlcyBhbGxvY2F0ZWQgZm9yIHRoaXMgcmVzb3VyY2UuCi0gICAgdm9p
ZCBvblJlc291cmNlUmVjcmVhdGVkKFJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KTsK
LQotICAgIC8vIEFsbG9jYXRlcyBhIHdyaXRlIG5vZGUgdmlhIGdldE5ld1dyaXRlTm9kZSBhbmQg
cmV0dXJucyBhIHN0YXJ0ZWQgY29tbWFuZCBidWZmZXIuCi0gICAgLy8gVGhlIHN0YXJ0ZWQgY29t
bWFuZCBidWZmZXIgd2lsbCByZW5kZXIgb3V0c2lkZSBvZiBhIFJlbmRlclBhc3MuCi0gICAgLy8g
V2lsbCBhcHBlbmQgdG8gYW4gZXhpc3RpbmcgY29tbWFuZCBidWZmZXIvZ3JhcGggbm9kZSBpZiBw
b3NzaWJsZS4KLSAgICBhbmdsZTo6UmVzdWx0IHJlY29yZENvbW1hbmRzKENvbnRleHRWayAqY29u
dGV4dCwgQ29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpOwotCi0gICAgLy8gQmVnaW5z
IGEgY29tbWFuZCBidWZmZXIgb24gdGhlIGN1cnJlbnQgZ3JhcGggbm9kZSBmb3IgaW4tUmVuZGVy
UGFzcyByZW5kZXJpbmcuCi0gICAgLy8gQ2FsbGVkIGZyb20gRnJhbWVidWZmZXJWazo6c3RhcnRO
ZXdSZW5kZXJQYXNzIGFuZCBVdGlsc1ZrIGZ1bmN0aW9ucy4KLSAgICBhbmdsZTo6UmVzdWx0IGJl
Z2luUmVuZGVyUGFzcyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAmZnJhbWVidWZmZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVuZGVyQXJlYSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJQYXNzRGVzYyAm
cmVuZGVyUGFzc0Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXR0YWNobWVudE9wc0FycmF5ICZyZW5kZXJQYXNzQXR0YWNobWVudE9wcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWa0NsZWFyVmFsdWU+ICZj
bGVhclZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVm
ZmVyICoqY29tbWFuZEJ1ZmZlck91dCk7Ci0KLSAgICAvLyBDaGVja3MgaWYgd2UncmUgaW4gYSBS
ZW5kZXJQYXNzIHdpdGhvdXQgY2hpbGRyZW4uCi0gICAgYm9vbCBoYXNTdGFydGVkUmVuZGVyUGFz
cygpIGNvbnN0OwotCi0gICAgLy8gQ2hlY2tzIGlmIHdlJ3JlIGluIGEgUmVuZGVyUGFzcyB0aGF0
IGVuY29tcGFzc2VzIHJlbmRlckFyZWEsIHJldHVybmluZyB0cnVlIGlmIHNvLiBVcGRhdGVzCi0g
ICAgLy8gc2VyaWFsIGludGVybmFsbHkuIFJldHVybnMgdGhlIHN0YXJ0ZWQgY29tbWFuZCBidWZm
ZXIgaW4gY29tbWFuZEJ1ZmZlck91dC4KLSAgICBib29sIGFwcGVuZFRvU3RhcnRlZFJlbmRlclBh
c3MoUmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlbmRlckFyZWEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVy
T3V0KTsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcmVuZGVyIHBhc3MgaXMgc3RhcnRl
ZCwgYnV0IHRoZXJlIGFyZSBubyBjb21tYW5kcyB5ZXQgcmVjb3JkZWQgaW4gaXQuCi0gICAgLy8g
VGhpcyBpcyB1c2VmdWwgdG8ga25vdyBpZiB0aGUgcmVuZGVyIHBhc3Mgb3BzIGNhbiBiZSBtb2Rp
ZmllZC4KLSAgICBib29sIHJlbmRlclBhc3NTdGFydGVkQnV0RW1wdHkoKSBjb25zdDsKLQotICAg
IHZvaWQgY2xlYXJSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5k
ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtDbGVh
ckNvbG9yVmFsdWUgJmNsZWFyVmFsdWUpOwotICAgIHZvaWQgY2xlYXJSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgsIGZsb2F0IGRlcHRoKTsKLSAgICB2b2lk
IGNsZWFyUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgs
IHVpbnQzMl90IHN0ZW5jaWwpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4KTsKLSAgICB2b2lkIGludmFsaWRhdGVS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50KHNpemVfdCBhdHRhY2htZW50SW5kZXgpOwotICAgIHZv
aWQgaW52YWxpZGF0ZVJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudChzaXplX3QgYXR0YWNobWVu
dEluZGV4KTsKLQotICAgIC8vIEFjY2Vzc29yIGZvciBSZW5kZXJQYXNzIFJlbmRlckFyZWEuCi0g
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZ2V0UmVuZGVyUGFzc1JlbmRlckFyZWEoKSBjb25zdDsK
LQotICAgIC8vIENhbGxlZCB3aGVuICd0aGlzJyBvYmplY3QgY2hhbmdlcywgYnV0IHdlJ2QgbGlr
ZSB0byBzdGFydCBhIG5ldyBjb21tYW5kIGJ1ZmZlciBsYXRlci4KLSAgICB2b2lkIGZpbmlzaEN1
cnJlbnRDb21tYW5kcyhDb250ZXh0VmsgKmNvbnRleHRWayk7Ci0KLSAgICAvLyBTdG9yZSBhIGRl
ZmVycmVkIG1lbW9yeSBiYXJyaWVyLiBXaWxsIGJlIHJlY29yZGVkIGludG8gYSBwcmltYXJ5IGNv
bW1hbmQgYnVmZmVyIGF0IHN1Ym1pdC4KLSAgICB2b2lkIGFkZEdsb2JhbE1lbW9yeUJhcnJpZXIo
VmtGbGFncyBzcmNBY2Nlc3MsIFZrRmxhZ3MgZHN0QWNjZXNzLCBWa1BpcGVsaW5lU3RhZ2VGbGFn
cyBzdGFnZXMpOwotCi0gICAgLy8gU2V0cyBhY3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrIGluZm9y
bWF0aW9uIHRvIGN1cnJlbnQgd3JpdGluZyBub2RlLgotICAgIHZvaWQgc2V0QWN0aXZlVHJhbnNm
b3JtRmVlZGJhY2tJbmZvKHNpemVfdCB2YWxpZEJ1ZmZlckNvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyICpjb3VudGVyQnVmZmVycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYmluZEJ1ZmZl
cik7Ci0KLSAgcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IENvbW1hbmRHcmFwaFJlc291cmNlKENv
bW1hbmRHcmFwaFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUpOwotCi0gICAgLy8gQ3VycmVudCBy
ZXNvdXJjZSBsaWZldGltZS4KLSAgICBTaGFyZWRSZXNvdXJjZVVzZSBtVXNlOwotCi0gIHByaXZh
dGU6Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBoYXMgYSBjdXJyZW50IHdyaXRp
bmcgbm9kZSB3aXRoIG5vIGNoaWxkcmVuLgotICAgIEFOR0xFX0lOTElORSBib29sIGhhc0NoaWxk
bGVzc1dyaXRpbmdOb2RlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHN0YXJ0TmV3Q29tbWFuZHMoQ29u
dGV4dFZrICpjb250ZXh0VmspOwotCi0gICAgdm9pZCBvbldyaXRlSW1wbChDb250ZXh0VmsgKmNv
bnRleHRWaywgQ29tbWFuZEdyYXBoTm9kZSAqd3JpdGluZ05vZGUpOwotCi0gICAgc3RkOjp2ZWN0
b3I8Q29tbWFuZEdyYXBoTm9kZSAqPiBtQ3VycmVudFJlYWRpbmdOb2RlczsKLQotICAgIC8vIEN1
cnJlbnQgY29tbWFuZCBncmFwaCB3cml0aW5nIG5vZGUuCi0gICAgQ29tbWFuZEdyYXBoTm9kZSAq
bUN1cnJlbnRXcml0aW5nTm9kZTsKLQotICAgIC8vIEFkZGl0aW9uYWwgZGlhZ25vc3RpYyBpbmZv
cm1hdGlvbi4KLSAgICBDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGUgbVJlc291cmNlVHlwZTsKLX07
Ci0KLS8vIFRyYW5zbGF0aW5nIE9wZW5HTCBjb21tYW5kcyBpbnRvIFZ1bGthbiBhbmQgc3VibWl0
dGluZyB0aGVtIGltbWVkaWF0ZWx5IGxvc2VzIG91dCBvbiBzb21lCi0vLyBvZiB0aGUgcG93ZXJm
dWwgZmxleGlibGl0eSBWdWxrYW4gb2ZmZXJzIGluIFJlbmRlclBhc3Nlcy4gTG9hZC9TdG9yZSBv
cHMgY2FuIGF1dG9tYXRpY2FsbHkKLS8vIGNsZWFyIFJlbmRlclBhc3MgYXR0YWNobWVudHMsIG9y
IHByZXNlcnZlIHRoZSBjb250ZW50cy4gUmVuZGVyUGFzcyBhdXRvbWF0aWMgbGF5b3V0IHRyYW5z
aXRpb25zCi0vLyBjYW4gaW1wcm92ZSBjZXJ0YWluIHBlcmZvcm1hbmNlIGNhc2VzLiBBbHNvLCB3
ZSBjYW4gcmVtb3ZlIHJlZHVuZGFudCBSZW5kZXJQYXNzIEJlZ2luIGFuZCBFbmRzCi0vLyB3aGVu
IHByb2Nlc3NpbmcgaW50ZXJsZWF2ZWQgZHJhdyBvcGVyYXRpb25zIG9uIGluZGVwZW5kZW50IEZy
YW1lYnVmZmVycy4KLS8vCi0vLyBBTkdMRSdzIENvbW1hbmRHcmFwaCAoYW5kIENvbW1hbmRHcmFw
aE5vZGUpIGF0dGVtcHQgdG8gc29sdmUgdGhlc2UgcHJvYmxlbXMgdXNpbmcgZGVmZXJyZWQKLS8v
IGNvbW1hbmQgc3VibWlzc2lvbi4gV2UgYWxzbyBzb21ldGltZXMgY2FsbCB0aGlzIGNvbW1hbmQg
cmUtb3JkZXJpbmcuIEEgYnJpZWYgc3VtbWFyeToKLS8vCi0vLyBEdXJpbmcgR0wgY29tbWFuZCBw
cm9jZXNzaW5nLCB3ZSByZWNvcmQgVnVsa2FuIGNvbW1hbmRzIGludG8gU2Vjb25kYXJ5Q29tbWFu
ZEJ1ZmZlcnMsIHdoaWNoCi0vLyBhcmUgc3RvcmVkIGluIENvbW1hbmRHcmFwaE5vZGVzLCBhbmQg
dGhlc2Ugbm9kZXMgYXJlIGNoYWluZWQgdG9nZXRoZXIgdmlhIGRlcGVuZGVuY2llcyB0bwotLy8g
Zm9ybSBhIGRpcmVjdGVkIGFjeWNsaWMgQ29tbWFuZEdyYXBoLiBXaGVuIHdlIG5lZWQgdG8gc3Vi
bWl0IHRoZSBDb21tYW5kR3JhcGgsIHNheSBkdXJpbmcgYQotLy8gU3dhcEJ1ZmZlcnMgb3IgUmVh
ZFBpeGVscyBjYWxsLCB3ZSBiZWdpbiBhIHByaW1hcnkgVnVsa2FuIENvbW1hbmRCdWZmZXIsIGFu
ZCB3YWxrIHRoZQotLy8gQ29tbWFuZEdyYXBoLCBzdGFydGluZyBhdCB0aGUgbW9zdCBzZW5pb3Ig
bm9kZXMsIHJlY29yZGluZyBTZWNvbmRhcnlDb21tYW5kQnVmZmVycyBpbnNpZGUKLS8vIGFuZCBv
dXRzaWRlIFJlbmRlclBhc3NlcyBhcyBuZWNlc3NhcnksIGZpbGxlZCB3aXRoIHRoZSByaWdodCBs
b2FkL3N0b3JlIG9wZXJhdGlvbnMuIE9uY2UKLS8vIHRoZSBwcmltYXJ5IENvbW1hbmRCdWZmZXIg
aGFzIHJlY29yZGVkIGFsbCBvZiB0aGUgU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlcnMgZnJvbSBhbGwg
dGhlIG9wZW4KLS8vIENvbW1hbmRHcmFwaE5vZGVzLCB3ZSBzdWJtaXQgdGhlIHByaW1hcnkgQ29t
bWFuZEJ1ZmZlciB0byB0aGUgVmtRdWV1ZSBvbiB0aGUgZGV2aWNlLgotLy8KLS8vIFRoZSBDb21t
YW5kIEdyYXBoIGNvbnNpc3RzIG9mIGFuIGFycmF5IG9mIG9wZW4gQ29tbWFuZCBHcmFwaCBOb2Rl
cy4gSXQgc3VwcG9ydHMgYWxsb2NhdGluZyBuZXcKLS8vIG5vZGVzIGZvciB0aGUgZ3JhcGgsIHdo
aWNoIGFyZSBsaW5rZWQgdmlhIGRlcGVuZGVuY3kgcmVsYXRpb24gY2FsbHMgaW4gQ29tbWFuZEdy
YXBoTm9kZSwgYW5kCi0vLyBhbHNvIHN1Ym1pdHRpbmcgdGhlIHdob2xlIGNvbW1hbmQgZ3JhcGgg
dmlhIHN1Ym1pdENvbW1hbmRzLgotY2xhc3MgQ29tbWFuZEdyYXBoIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDb21tYW5kR3JhcGgoYm9vbCBl
bmFibGVHcmFwaERpYWdub3N0aWNzLCBhbmdsZTo6UG9vbEFsbG9jYXRvciAqcG9vbEFsbG9jYXRv
cik7Ci0gICAgfkNvbW1hbmRHcmFwaCgpOwotCi0gICAgLy8gQWxsb2NhdGVzIGEgbmV3IENvbW1h
bmRHcmFwaE5vZGUgYW5kIGFkZHMgaXQgdG8gdGhlIGxpc3Qgb2YgY3VycmVudCBvcGVuIG5vZGVz
LiBObyBvcmRlcmluZwotICAgIC8vIHJlbGF0aW9ucyBleGlzdCBpbiB0aGUgbm9kZSBieSBkZWZh
dWx0LiBDYWxsIENvbW1hbmRHcmFwaE5vZGU6OlNldEhhcHBlbnNCZWZvcmVEZXBlbmRlbmN5Ci0g
ICAgLy8gdG8gc2V0IHVwIGRlcGVuZGVuY3kgcmVsYXRpb25zLiBJZiB0aGUgbm9kZSBpcyBhIGJh
cnJpZXIsIGl0IHdpbGwgYXV0b21hdGljYWxseSBhZGQKLSAgICAvLyBkZXBlbmRlbmNpZXMgYmV0
d2VlbiB0aGUgcHJldmlvdXMgYmFycmllciwgdGhlIG5ldyBiYXJyaWVyIGFuZCBhbGwgbm9kZXMg
aW4gYmV0d2Vlbi4KLSAgICBDb21tYW5kR3JhcGhOb2RlICphbGxvY2F0ZU5vZGUoQ29tbWFuZEdy
YXBoTm9kZUZ1bmN0aW9uIGZ1bmN0aW9uKTsKLQotICAgIGFuZ2xlOjpSZXN1bHQgc3VibWl0Q29t
bWFuZHMoQ29udGV4dFZrICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2VyaWFsIHNlcmlhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRl
clBhc3NDYWNoZSAqcmVuZGVyUGFzc0NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJpbWFyeUNvbW1hbmRCdWZmZXIgKnByaW1hcnlDb21tYW5kQnVmZmVyKTsKLSAgICBi
b29sIGVtcHR5KCkgY29uc3Q7Ci0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgLy8gVGhlIGZvbGxv
d2luZyBjcmVhdGUgc3BlY2lhbC1mdW5jdGlvbiBub2RlcyB0aGF0IGRvbid0IHJlcXVpcmUgYSBn
cmFwaCByZXNvdXJjZS4KLSAgICAvLyBRdWVyaWVzOgotICAgIHZvaWQgYmVnaW5RdWVyeShjb25z
dCBRdWVyeVBvb2wgKnF1ZXJ5UG9vbCwgdWludDMyX3QgcXVlcnlJbmRleCk7Ci0gICAgdm9pZCBl
bmRRdWVyeShjb25zdCBRdWVyeVBvb2wgKnF1ZXJ5UG9vbCwgdWludDMyX3QgcXVlcnlJbmRleCk7
Ci0gICAgdm9pZCB3cml0ZVRpbWVzdGFtcChjb25zdCBRdWVyeVBvb2wgKnF1ZXJ5UG9vbCwgdWlu
dDMyX3QgcXVlcnlJbmRleCk7Ci0gICAgdm9pZCBiZWdpblRyYW5zZm9ybUZlZWRiYWNrRW11bGF0
ZWRRdWVyeSgpOwotICAgIHZvaWQgZW5kVHJhbnNmb3JtRmVlZGJhY2tFbXVsYXRlZFF1ZXJ5KCk7
Ci0gICAgLy8gR0xzeW5jIGFuZCBFR0xTeW5jOgotICAgIHZvaWQgc2V0RmVuY2VTeW5jKGNvbnN0
IHZrOjpFdmVudCAmZXZlbnQpOwotICAgIHZvaWQgd2FpdEZlbmNlU3luYyhjb25zdCB2azo6RXZl
bnQgJmV2ZW50KTsKLSAgICAvLyBNZW1vcnkgYmFycmllcnM6Ci0gICAgdm9pZCBtZW1vcnlCYXJy
aWVyKFZrRmxhZ3Mgc3JjQWNjZXNzLCBWa0ZsYWdzIGRzdEFjY2VzcywgVmtQaXBlbGluZVN0YWdl
RmxhZ3Mgc3RhZ2VzKTsKLSAgICAvLyBEZWJ1ZyBtYXJrZXJzOgotICAgIHZvaWQgaW5zZXJ0RGVi
dWdNYXJrZXIoR0xlbnVtIHNvdXJjZSwgc3RkOjpzdHJpbmcgJiZtYXJrZXIpOwotICAgIHZvaWQg
cHVzaERlYnVnTWFya2VyKEdMZW51bSBzb3VyY2UsIHN0ZDo6c3RyaW5nICYmbWFya2VyKTsKLSAg
ICB2b2lkIHBvcERlYnVnTWFya2VyKCk7Ci0gICAgLy8gSG9zdC12aXNpYmxlIGJ1ZmZlciB3cml0
ZSBhdmFpbGFiaWxpdHkgb3BlcmF0aW9uOgotICAgIHZvaWQgbWFrZUhvc3RWaXNpYmxlQnVmZmVy
V3JpdGVBdmFpbGFibGUoKTsKLSAgICAvLyBFeHRlcm5hbCBtZW1vcnkgc3luY2hyb25pemF0aW9u
OgotICAgIHZvaWQgc3luY0V4dGVybmFsTWVtb3J5KCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBDb21t
YW5kR3JhcGhOb2RlICphbGxvY2F0ZUJhcnJpZXJOb2RlKENvbW1hbmRHcmFwaE5vZGVGdW5jdGlv
biBmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bW1hbmRHcmFwaFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3QgcmVzb3VyY2VJRCk7Ci0gICAgdm9pZCBz
ZXROZXdCYXJyaWVyKENvbW1hbmRHcmFwaE5vZGUgKm5ld0JhcnJpZXIpOwotICAgIENvbW1hbmRH
cmFwaE5vZGUgKmdldExhc3RCYXJyaWVyTm9kZShzaXplX3QgKmluZGV4T3V0KTsKLSAgICB2b2lk
IGFkZERlcGVuZGVuY2llc1RvTmV4dEJhcnJpZXIoc2l6ZV90IGJlZ2luLCBzaXplX3QgZW5kLCBD
b21tYW5kR3JhcGhOb2RlICpuZXh0QmFycmllcik7Ci0KLSAgICB2b2lkIGR1bXBHcmFwaERvdEZp
bGUoc3RkOjpvc3RyZWFtICZvdXQpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlT3ZlcmxheShDb250
ZXh0VmsgKmNvbnRleHRWaykgY29uc3Q7Ci0KLSAgICBzdGQ6OnZlY3RvcjxDb21tYW5kR3JhcGhO
b2RlICo+IG1Ob2RlczsKLSAgICBib29sIG1FbmFibGVHcmFwaERpYWdub3N0aWNzOwotICAgIGFu
Z2xlOjpQb29sQWxsb2NhdG9yICptUG9vbEFsbG9jYXRvcjsKLQotICAgIC8vIEEgc2V0IG9mIG5v
ZGVzIChldmVudHVhbGx5KSBleGlzdCB0aGF0IGFjdCBhcyBiYXJyaWVycyB0byBndWFyYW50ZWUg
c3VibWlzc2lvbiBvcmRlci4gIEZvcgotICAgIC8vIGV4YW1wbGUsIGEgZ2xNZW1vcnlCYXJyaWVy
KCkgY2FsbHMgd291bGQgbGVhZCB0byBzdWNoIGEgYmFycmllciBvciBiZWdpbm5pbmcgYW5kIGVu
ZGluZyBhCi0gICAgLy8gcXVlcnkuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZ3JhcGggY2FuIHJlb3Jk
ZXIgb3BlcmF0aW9ucyBpZiBpdCBzZWVzIGZpdC4gIExldCdzIGNhbGwgYSBiYXJyaWVyCi0gICAg
Ly8gbm9kZSBCaSwgYW5kIHRoZSBvdGhlciBub2RlcyBOaS4gVGhlIGVkZ2VzIGJldHdlZW4gTmkg
ZG9uJ3QgaW50ZXJlc3QgdXMuICBCZWZvcmUgYSBiYXJyaWVyIGlzCi0gICAgLy8gaW5zZXJ0ZWQs
IHdlIGhhdmU6Ci0gICAgLy8KLSAgICAvLyBOMCBOMSAuLi4gTmEKLSAgICAvLyBcX19fXF9fL18v
ICAgICAoZGVwZW5kZW5jeSBlZ2Rlcywgd2hpY2ggd2UgZG9uJ3QgY2FyZSBhYm91dCBzbyBJJ2xs
IHN0b3AgZHJhd2luZyB0aGVtLgotICAgIC8vICAgICAgXC8KLSAgICAvLwotICAgIC8vIFdoZW4g
dGhlIGZpcnN0IGJhcnJpZXIgaXMgaW5zZXJ0ZWQsIHdlIHdpbGwgaGF2ZToKLSAgICAvLwotICAg
IC8vICAgICBfX19fX18KLSAgICAvLyAgICAvICBfX19fXAotICAgIC8vICAgLyAgLyAgICAgXAot
ICAgIC8vICAvICAvICAgICAgL1wKLSAgICAvLyBOMCBOMSAuLi4gTmEgQjAKLSAgICAvLwotICAg
IC8vIFRoaXMgbWFrZXMgc3VyZSBhbGwgTjAuLk5hIGFyZSBjYWxsZWQgYmVmb3JlIEIwLiAgRnJv
bSB0aGVuIG9uLCBCMCB3aWxsIGJlIHRoZSBjdXJyZW50Ci0gICAgLy8gImJhcnJpZXIgcG9pbnQi
IHdoaWNoIGV4dGVuZHMgYW4gZWRnZSB0byBldmVyeSBuZXh0IG5vZGU6Ci0gICAgLy8KLSAgICAv
LyAgICAgX19fX19fCi0gICAgLy8gICAgLyAgX19fX1wKLSAgICAvLyAgIC8gIC8gICAgIFwKLSAg
ICAvLyAgLyAgLyAgICAgIC9cCi0gICAgLy8gTjAgTjEgLi4uIE5hIEIwIE5hKzEgLi4uIE5iCi0g
ICAgLy8gICAgICAgICAgICAgICAgXC8gICAgICAgLwotICAgIC8vICAgICAgICAgICAgICAgICBc
X19fX19fLwotICAgIC8vCi0gICAgLy8KLSAgICAvLyBXaGVuIHRoZSBuZXh0IGJhcnJpZXIgQjEg
aXMgbWV0LCBhbGwgbm9kZXMgYmV0d2VlbiBCMCBhbmQgQjEgd2lsbCBhZGQgYSBkZXBlbmVuY3kg
b24gQjEgYXMKLSAgICAvLyB3ZWxsLCBhbmQgdGhlICJiYXJyaWVyIHBvaW50IiBpcyB1cGRhdGVk
LgotICAgIC8vCi0gICAgLy8gICAgIF9fX19fXwotICAgIC8vICAgIC8gIF9fX19cICAgICAgICAg
X19fX19fICAgICAgICAgX19fX19fCi0gICAgLy8gICAvICAvICAgICBcICAgICAgIC8gICAgICBc
ICAgICAgIC8gICAgICBcCi0gICAgLy8gIC8gIC8gICAgICAvXCAgICAgLyAgICAgICAvXCAgICAg
LyAgICAgICAvXAotICAgIC8vIE4wIE4xIC4uLiBOYSBCMCBOYSsxIC4uLiBOYiBCMSBOYisxIC4u
LiBOYyBCMiAuLi4KLSAgICAvLyAgICAgICAgICAgICAgICBcLyAgICAgICAvICAvICBcLyAgICAg
ICAvICAvCi0gICAgLy8gICAgICAgICAgICAgICAgIFxfX19fX18vICAvICAgIFxfX19fX18vICAv
Ci0gICAgLy8gICAgICAgICAgICAgICAgICBcX19fX19fXy8gICAgICBcX19fX19fXy8KLSAgICAv
LwotICAgIC8vCi0gICAgLy8gV2hlbiBiYXJyaWVyIEJpIGlzIGludHJvZHVjZWQsIGFsbCBub2Rl
cyBhZGRlZCBzaW5jZSBCaS0xIG5lZWQgdG8gYWRkIGEgZGVwZW5kZW5jeSB0byBCaQotICAgIC8v
IChpbmNsdWRpbmcgQmktMSkuIFdlIHRoZXJlZm9yZSBrZWVwIHRyYWNrIG9mIHRoZSBub2RlIGlu
ZGV4IG9mIHRoZSBsYXN0IGJhcnJpZXIgdGhhdCB3YXMKLSAgICAvLyBpc3N1ZWQuCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qga0ludmFsaWROb2RlSW5kZXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KCk7Ci0gICAgc2l6ZV90IG1MYXN0QmFycmllckluZGV4Owot
fTsKLQotLy8gQ29tbWFuZEdyYXBoUmVzb3VyY2UgaW5saW5lcy4KLUFOR0xFX0lOTElORSBib29s
IENvbW1hbmRHcmFwaFJlc291cmNlOjpoYXNTdGFydGVkUmVuZGVyUGFzcygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGhhc0NoaWxkbGVzc1dyaXRpbmdOb2RlKCkgJiYgbUN1cnJlbnRXcml0aW5nTm9k
ZS0+Z2V0SW5zaWRlUmVuZGVyUGFzc0NvbW1hbmRzKCktPnZhbGlkKCk7Ci19Ci0KLUFOR0xFX0lO
TElORSB2b2lkIENvbW1hbmRHcmFwaFJlc291cmNlOjp1cGRhdGVDdXJyZW50QWNjZXNzTm9kZXMo
KQotewotICAgIC8vIENsZWFyIGRlcGVuZGVuY2llcyBpZiB0aGlzIGlzIGEgbmV3IGFjY2Vzcy4K
LSAgICBpZiAoIW1Vc2UuaGFzUmVjb3JkZWRDb21tYW5kcygpKQotICAgIHsKLSAgICAgICAgbUN1
cnJlbnRXcml0aW5nTm9kZSA9IG51bGxwdHI7Ci0gICAgICAgIG1DdXJyZW50UmVhZGluZ05vZGVz
LmNsZWFyKCk7Ci0gICAgfQotfQotCi1BTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kR3JhcGhSZXNv
dXJjZTo6b25SZXNvdXJjZVJlY3JlYXRlZChSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlz
dCkKLXsKLSAgICAvLyBTdG9yZSByZWZlcmVuY2UgaW4gcmVzb3VyY2UgbGlzdC4KLSAgICByZXNv
dXJjZVVzZUxpc3QtPmFkZChtVXNlKTsKLX0KLQotQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEdy
YXBoUmVzb3VyY2U6Om9uUmVzb3VyY2VBY2Nlc3MoUmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVz
ZUxpc3QpCi17Ci0gICAgdXBkYXRlQ3VycmVudEFjY2Vzc05vZGVzKCk7Ci0KLSAgICAvLyBTdG9y
ZSByZWZlcmVuY2UgaW4gcmVzb3VyY2UgbGlzdC4KLSAgICByZXNvdXJjZVVzZUxpc3QtPmFkZCht
VXNlKTsKLX0KLQotQU5HTEVfSU5MSU5FIGJvb2wgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OmFwcGVu
ZFRvU3RhcnRlZFJlbmRlclBhc3MoUmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFu
ZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJPdXQpCi17Ci0gICAgdXBkYXRlQ3VycmVudEFjY2Vzc05v
ZGVzKCk7Ci0KLSAgICBpZiAoaGFzU3RhcnRlZFJlbmRlclBhc3MoKSkKLSAgICB7Ci0gICAgICAg
IC8vIFN0b3JlIHJlZmVyZW5jZSBpbiByZXNvdXJjZSBsaXN0LgotICAgICAgICByZXNvdXJjZVVz
ZUxpc3QtPmFkZChtVXNlKTsKLQotICAgICAgICBpZiAobUN1cnJlbnRXcml0aW5nTm9kZS0+Z2V0
UmVuZGVyUGFzc1JlbmRlckFyZWEoKS5lbmNsb3NlcyhyZW5kZXJBcmVhKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgKmNvbW1hbmRCdWZmZXJPdXQgPSBtQ3VycmVudFdyaXRpbmdOb2RlLT5nZXRJ
bnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1BTkdMRV9JTkxJTkUgYm9v
bCBDb21tYW5kR3JhcGhSZXNvdXJjZTo6cmVuZGVyUGFzc1N0YXJ0ZWRCdXRFbXB0eSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkgJiYgKCF2azo6Q29tbWFuZEJ1
ZmZlcjo6Q2FuS25vd0lmRW1wdHkoKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5nZXRJbnNpZGVSZW5kZXJQYXNzQ29tbWFuZHMo
KS0+ZW1wdHkoKSk7Ci19Ci0KLUFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRHcmFwaFJlc291cmNl
OjpjbGVhclJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQoCi0gICAgc2l6ZV90IGF0dGFjaG1lbnRJ
bmRleCwKLSAgICBjb25zdCBWa0NsZWFyQ29sb3JWYWx1ZSAmY2xlYXJWYWx1ZSkKLXsKLSAgICBB
U1NFUlQocmVuZGVyUGFzc1N0YXJ0ZWRCdXRFbXB0eSgpKTsKLSAgICBtQ3VycmVudFdyaXRpbmdO
b2RlLT5jbGVhclJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQoYXR0YWNobWVudEluZGV4LCBjbGVh
clZhbHVlKTsKLX0KLQotQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OmNs
ZWFyUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChzaXplX3QgYXR0YWNobWVudEluZGV4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBkZXB0aCkKLXsKLSAgICBBU1NFUlQocmVuZGVyUGFzc1N0YXJ0ZWRC
dXRFbXB0eSgpKTsKLSAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5jbGVhclJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnQoYXR0YWNobWVudEluZGV4LCBkZXB0aCk7Ci19Ci0KLUFOR0xFX0lOTElORSB2
b2lkIENvbW1hbmRHcmFwaFJlc291cmNlOjpjbGVhclJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVu
dChzaXplX3QgYXR0YWNobWVudEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0ZW5j
aWwpCi17Ci0gICAgQVNTRVJUKHJlbmRlclBhc3NTdGFydGVkQnV0RW1wdHkoKSk7Ci0gICAgbUN1
cnJlbnRXcml0aW5nTm9kZS0+Y2xlYXJSZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnQoYXR0YWNo
bWVudEluZGV4LCBzdGVuY2lsKTsKLX0KLQotQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEdyYXBo
UmVzb3VyY2U6OmludmFsaWRhdGVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KHNpemVfdCBhdHRh
Y2htZW50SW5kZXgpCi17Ci0gICAgQVNTRVJUKGhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpOwotICAg
IG1DdXJyZW50V3JpdGluZ05vZGUtPmludmFsaWRhdGVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
KGF0dGFjaG1lbnRJbmRleCk7Ci19Ci0KLUFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRHcmFwaFJl
c291cmNlOjppbnZhbGlkYXRlUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChzaXplX3QgYXR0YWNo
bWVudEluZGV4KQotewotICAgIEFTU0VSVChoYXNTdGFydGVkUmVuZGVyUGFzcygpKTsKLSAgICBt
Q3VycmVudFdyaXRpbmdOb2RlLT5pbnZhbGlkYXRlUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChh
dHRhY2htZW50SW5kZXgpOwotfQotCi1BTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kR3JhcGhSZXNv
dXJjZTo6aW52YWxpZGF0ZVJlbmRlclBhc3NTdGVuY2lsQXR0YWNobWVudCgKLSAgICBzaXplX3Qg
YXR0YWNobWVudEluZGV4KQotewotICAgIEFTU0VSVChoYXNTdGFydGVkUmVuZGVyUGFzcygpKTsK
LSAgICBtQ3VycmVudFdyaXRpbmdOb2RlLT5pbnZhbGlkYXRlUmVuZGVyUGFzc1N0ZW5jaWxBdHRh
Y2htZW50KGF0dGFjaG1lbnRJbmRleCk7Ci19Ci0KLUFOR0xFX0lOTElORSBjb25zdCBnbDo6UmVj
dGFuZ2xlICZDb21tYW5kR3JhcGhSZXNvdXJjZTo6Z2V0UmVuZGVyUGFzc1JlbmRlckFyZWEoKSBj
b25zdAotewotICAgIEFTU0VSVChoYXNTdGFydGVkUmVuZGVyUGFzcygpKTsKLSAgICByZXR1cm4g
bUN1cnJlbnRXcml0aW5nTm9kZS0+Z2V0UmVuZGVyUGFzc1JlbmRlckFyZWEoKTsKLX0KLQotQU5H
TEVfSU5MSU5FIHZvaWQgQ29tbWFuZEdyYXBoUmVzb3VyY2U6OmFkZEdsb2JhbE1lbW9yeUJhcnJp
ZXIoVmtGbGFncyBzcmNBY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ZsYWdzIGRzdEFjY2VzcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZr
UGlwZWxpbmVTdGFnZUZsYWdzIHN0YWdlcykKLXsKLSAgICBBU1NFUlQobUN1cnJlbnRXcml0aW5n
Tm9kZSk7Ci0gICAgbUN1cnJlbnRXcml0aW5nTm9kZS0+YWRkR2xvYmFsTWVtb3J5QmFycmllcihz
cmNBY2Nlc3MsIGRzdEFjY2Vzcywgc3RhZ2VzKTsKLX0KLQotQU5HTEVfSU5MSU5FIHZvaWQgQ29t
bWFuZEdyYXBoUmVzb3VyY2U6OnNldEFjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrSW5mbygKLSAgICBz
aXplX3QgdmFsaWRCdWZmZXJDb3VudCwKLSAgICBjb25zdCBWa0J1ZmZlciAqY291bnRlckJ1ZmZl
cnMsCi0gICAgYm9vbCByZWJpbmRCdWZmZXIpCi17Ci0gICAgQVNTRVJUKG1DdXJyZW50V3JpdGlu
Z05vZGUpOwotICAgIG1DdXJyZW50V3JpdGluZ05vZGUtPnNldEFjdGl2ZVRyYW5zZm9ybUZlZWRi
YWNrSW5mbyh2YWxpZEJ1ZmZlckNvdW50LCBjb3VudGVyQnVmZmVycywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViaW5kQnVmZmVyKTsK
LX0KLQotQU5HTEVfSU5MSU5FIGJvb2wgQ29tbWFuZEdyYXBoUmVzb3VyY2U6Omhhc0NoaWxkbGVz
c1dyaXRpbmdOb2RlKCkgY29uc3QKLXsKLSAgICAvLyBOb3RlOiBjdXJyZW50bHksIHdlIGRvbid0
IGhhdmUgYSByZXNvdXJjZSB0aGF0IGNhbiBpc3N1ZSBib3RoIGdlbmVyaWMgYW5kIHNwZWNpYWwK
LSAgICAvLyBjb21tYW5kcy4gIFdlIGRvbid0IGNyZWF0ZSByZWFkL3dyaXRlIGRlcGVuZGVuY2ll
cyBiZXR3ZWVuIG1peGVkIGdlbmVyaWMvc3BlY2lhbAotICAgIC8vIHJlc291cmNlcyBlaXRoZXIu
ICBBcyBzdWNoLCB3ZSBleHBlY3QgdGhlIGZ1bmN0aW9uIHRvIGFsd2F5cyBiZSBnZW5lcmljIGhl
cmUuICBJZiBzdWNoIGEKLSAgICAvLyByZXNvdXJjZSBpcyBhZGRlZCBpbiB0aGUgZnV0dXJlLCB0
aGlzIGNhbiBhZGQgYSBjaGVjayBmb3IgZnVuY3Rpb24gPT0gZ2VuZXJpYyBhbmQgZmFpbCBpZgot
ICAgIC8vIGZhbHNlLgotICAgIEFTU0VSVChtQ3VycmVudFdyaXRpbmdOb2RlID09IG51bGxwdHIg
fHwKLSAgICAgICAgICAgbUN1cnJlbnRXcml0aW5nTm9kZS0+Z2V0RnVuY3Rpb24oKSA9PSBDb21t
YW5kR3JhcGhOb2RlRnVuY3Rpb246OkdlbmVyaWMpOwotICAgIHJldHVybiAobUN1cnJlbnRXcml0
aW5nTm9kZSAhPSBudWxscHRyICYmICFtQ3VycmVudFdyaXRpbmdOb2RlLT5oYXNDaGlsZHJlbigp
KTsKLX0KLX0gIC8vIG5hbWVzcGFjZSB2awotfSAgLy8gbmFtZXNwYWNlIHJ4Ci0KLSNlbmRpZiAg
Ly8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NPTU1BTkRfR1JBUEhfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29u
dGV4dFZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29udGV4dFZrLmNwcAppbmRleCBlODIwZjQ3OGEwZjY4OGEwMGUzOGFlOTZjZWIy
MTU4MGU3OTY3NjI4Li4yZTViZjIzMDZiNjE5MzQ4YzhiNjZhNDcxNjIxNGUzNzdkNzcwMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0NvbnRleHRWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuY3BwCkBAIC0xOSw3ICsxOSw2IEBACiAj
aW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3JlbmRlcmVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0J1ZmZlclZrLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbW1hbmRH
cmFwaC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNlTlZWay5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmgiCkBAIC00MSwxMSAr
NDAsMTcgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3RyYWNlLmgiCiAKKyNpbmNsdWRlIDxpb3N0
cmVhbT4KKwogbmFtZXNwYWNlIHJ4CiB7CiAKIG5hbWVzcGFjZQogeworLy8gVGhlIHZhbHVlIHRv
IGFzc2lnbiBhbiBhbHBoYSBjaGFubmVsIHRoYXQncyBlbXVsYXRlZC4gIFRoZSB0eXBlIGlzIHVu
c2lnbmVkIGludCwgdGhvdWdoIGl0IHdpbGwKKy8vIGF1dG9tYXRpY2FsbHkgY29udmVydCB0byB0
aGUgYWN0dWFsIGRhdGEgdHlwZS4KK2NvbnN0ZXhwciB1bnNpZ25lZCBpbnQga0VtdWxhdGVkQWxw
aGFWYWx1ZSA9IDE7CisKIC8vIEZvciBzaGFkZXIgdW5pZm9ybXMgc3VjaCBhcyBnbF9EZXB0aFJh
bmdlIGFuZCB0aGUgdmlld3BvcnQgc2l6ZS4KIHN0cnVjdCBHcmFwaGljc0RyaXZlclVuaWZvcm1z
CiB7CkBAIC03MCw2ICs3NSwxMCBAQCBzdHJ1Y3QgR3JhcGhpY3NEcml2ZXJVbmlmb3JtcwogCiAg
ICAgLy8gV2UnbGwgdXNlIHgsIHksIHogZm9yIG5lYXIgLyBmYXIgLyBkaWZmIHJlc3BlY3RpdmVs
eS4KICAgICBzdGQ6OmFycmF5PGZsb2F0LCA0PiBkZXB0aFJhbmdlOworCisgICAgLy8gVXNlZCB0
byBwcmUtcm90YXRlIGdsX1Bvc2l0aW9uIGZvciBzd2FwY2hhaW4gaW1hZ2VzIG9uIEFuZHJvaWQg
KGEgbWF0Miwgd2hpY2ggaXMgcGFkZGVkIHRvCisgICAgLy8gdGhlIHNpemUgb2YgdHdvIHZlYzQn
cykuCisgICAgc3RkOjphcnJheTxmbG9hdCwgOD4gcHJlUm90YXRpb247CiB9OwogCiBzdHJ1Y3Qg
Q29tcHV0ZURyaXZlclVuaWZvcm1zCkBAIC0xMDMsMTEgKzExMiw4IEBAIGNvbnN0ZXhwciBzaXpl
X3Qga0RyaXZlclVuaWZvcm1zQWxsb2NhdG9yUGFnZVNpemUgPSA0ICogMTAyNDsKIAogY29uc3Rl
eHByIHNpemVfdCBrSW5GbGlnaHRDb21tYW5kc0xpbWl0ID0gMTAwdTsKIAotLy8gSW5pdGlhbGx5
IGR1bXBpbmcgdGhlIGNvbW1hbmQgZ3JhcGhzIGlzIGRpc2FibGVkLgotY29uc3RleHByIGJvb2wg
a0VuYWJsZUNvbW1hbmRHcmFwaERpYWdub3N0aWNzID0gZmFsc2U7Ci0KLS8vIFVzZWQgYXMgZmFs
bGJhY2sgc2VyaWFsIGZvciBudWxsIHNhbXBsZXIgb2JqZWN0cwotY29uc3RleHByIFNlcmlhbCBr
WmVyb1NlcmlhbCA9IFNlcmlhbCgpOworLy8gRHVtcGluZyB0aGUgY29tbWFuZCBzdHJlYW0gaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4KK2NvbnN0ZXhwciBib29sIGtFbmFibGVDb21tYW5kU3RyZWFt
RGlhZ25vc3RpY3MgPSBmYWxzZTsKIAogdm9pZCBJbml0aWFsaXplU3VibWl0SW5mbyhWa1N1Ym1p
dEluZm8gKnN1Ym1pdEluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpQ
cmltYXJ5Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlciwKQEAgLTEyNCw4ICsxMzAsNyBAQCB2
b2lkIEluaXRpYWxpemVTdWJtaXRJbmZvKFZrU3VibWl0SW5mbyAqc3VibWl0SW5mbywKIAogICAg
IGlmICh3YWl0U2VtYXBob3JlU3RhZ2VNYXNrcy0+c2l6ZSgpIDwgd2FpdFNlbWFwaG9yZXMuc2l6
ZSgpKQogICAgIHsKLSAgICAgICAgd2FpdFNlbWFwaG9yZVN0YWdlTWFza3MtPnJlc2l6ZSh3YWl0
U2VtYXBob3Jlcy5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVktfUElQRUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklUKTsKKyAgICAgICAgd2FpdFNl
bWFwaG9yZVN0YWdlTWFza3MtPnJlc2l6ZSh3YWl0U2VtYXBob3Jlcy5zaXplKCksIFZLX1BJUEVM
SU5FX1NUQUdFX0FMTF9DT01NQU5EU19CSVQpOwogICAgIH0KIAogICAgIHN1Ym1pdEluZm8tPndh
aXRTZW1hcGhvcmVDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih3YWl0U2VtYXBob3Jlcy5z
aXplKCkpOwpAQCAtMTc0LDYgKzE3OSwxMDEgQEAgdm9pZCBBcHBseVNhbXBsZUNvdmVyYWdlKGNv
bnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSwKICAgICAqbWFza091dCAmPSBjb3ZlcmFnZU1hc2s7CiB9
CiAKK2NoYXIgR2V0TG9hZE9wU2hvcnRoYW5kKHVpbnQzMl90IGxvYWRPcCkKK3sKKyAgICBzd2l0
Y2ggKGxvYWRPcCkKKyAgICB7CisgICAgICAgIGNhc2UgVktfQVRUQUNITUVOVF9MT0FEX09QX0NM
RUFSOgorICAgICAgICAgICAgcmV0dXJuICdDJzsKKyAgICAgICAgY2FzZSBWS19BVFRBQ0hNRU5U
X0xPQURfT1BfTE9BRDoKKyAgICAgICAgICAgIHJldHVybiAnTCc7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gJ0QnOworICAgIH0KK30KKworY2hhciBHZXRTdG9yZU9wU2hv
cnRoYW5kKHVpbnQzMl90IHN0b3JlT3ApCit7CisgICAgc3dpdGNoIChzdG9yZU9wKQorICAgIHsK
KyAgICAgICAgY2FzZSBWS19BVFRBQ0hNRU5UX1NUT1JFX09QX1NUT1JFOgorICAgICAgICAgICAg
cmV0dXJuICdTJzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAnRCc7Cisg
ICAgfQorfQorCisvLyBXaGVuIGFuIEFuZHJvaWQgc3VyZmFjZSBpcyByb3RhdGVkIGRpZmZlcmVu
dGx5IHRoYW4gdGhlIGRldmljZSdzIG5hdGl2ZSBvcmllbnRhdGlvbiwgQU5HTEUgbXVzdAorLy8g
cm90YXRlIGdsX1Bvc2l0aW9uIGluIHRoZSB2ZXJ0ZXggc2hhZGVyLiAgVGhlIGZvbGxvd2luZyBh
cmUgdGhlIHJvdGF0aW9uIG1hdHJpY2VzIHVzZWQuCisvLworLy8gTm90ZTogdGhlc2UgYXJlIG1h
dDIncyB0aGF0IGFyZSBhcHByb3ByaWF0ZWx5IHBhZGRlZCAoNCBmbG9hdHMgcGVyIHJvdykuCit1
c2luZyBQcmVSb3RhdGlvbk1hdHJpeFZhbHVlcyA9IHN0ZDo6YXJyYXk8ZmxvYXQsIDg+OworY29u
c3RleHByIGFuZ2xlOjpQYWNrZWRFbnVtTWFwPHJ4OjpTdXJmYWNlUm90YXRpb25UeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZVJvdGF0aW9uTWF0cml4VmFsdWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpFbnVtU2l6ZTxyeDo6U3VyZmFjZVJv
dGF0aW9uVHlwZT4oKT4KKyAgICBrUHJlUm90YXRpb25NYXRyaWNlcyA9IHsKKyAgICAgICAge3ty
eDo6U3VyZmFjZVJvdGF0aW9uVHlwZTo6SWRlbnRpdHksIHt7MS4wZiwgMC4wZiwgMC4wZiwgMC4w
ZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZn19fSwKKyAgICAgICAgIHtyeDo6U3VyZmFjZVJvdGF0
aW9uVHlwZTo6Um90YXRlZDkwRGVncmVlcywKKyAgICAgICAgICB7ezAuMGYsIC0xLjBmLCAwLjBm
LCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmfX19LAorICAgICAgICAge3J4OjpTdXJmYWNl
Um90YXRpb25UeXBlOjpSb3RhdGVkMTgwRGVncmVlcywKKyAgICAgICAgICB7ey0xLjBmLCAwLjBm
LCAwLjBmLCAwLjBmLCAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZn19fSwKKyAgICAgICAgIHtyeDo6
U3VyZmFjZVJvdGF0aW9uVHlwZTo6Um90YXRlZDI3MERlZ3JlZXMsCisgICAgICAgICAge3swLjBm
LCAxLjBmLCAwLjBmLCAwLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwgMC4wZn19fSwKKyAgICAgICAg
IHtyeDo6U3VyZmFjZVJvdGF0aW9uVHlwZTo6RmxpcHBlZElkZW50aXR5LAorICAgICAgICAgIHt7
MS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGZ9fX0sCisgICAg
ICAgICB7cng6OlN1cmZhY2VSb3RhdGlvblR5cGU6OkZsaXBwZWRSb3RhdGVkOTBEZWdyZWVzLAor
ICAgICAgICAgIHt7MC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLCAw
LjBmfX19LAorICAgICAgICAge3J4OjpTdXJmYWNlUm90YXRpb25UeXBlOjpGbGlwcGVkUm90YXRl
ZDE4MERlZ3JlZXMsCisgICAgICAgICAge3stMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwg
MS4wZiwgMC4wZiwgMC4wZn19fSwKKyAgICAgICAgIHtyeDo6U3VyZmFjZVJvdGF0aW9uVHlwZTo6
RmxpcHBlZFJvdGF0ZWQyNzBEZWdyZWVzLAorICAgICAgICAgIHt7MC4wZiwgMS4wZiwgMC4wZiwg
MC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZn19fX19OworCitib29sIElzUm90YXRlZEFzcGVj
dFJhdGlvKFN1cmZhY2VSb3RhdGlvblR5cGUgcm90YXRpb24pCit7CisgICAgcmV0dXJuICgocm90
YXRpb24gPT0gU3VyZmFjZVJvdGF0aW9uVHlwZTo6Um90YXRlZDkwRGVncmVlcykgfHwKKyAgICAg
ICAgICAgIChyb3RhdGlvbiA9PSBTdXJmYWNlUm90YXRpb25UeXBlOjpSb3RhdGVkMjcwRGVncmVl
cykgfHwKKyAgICAgICAgICAgIChyb3RhdGlvbiA9PSBTdXJmYWNlUm90YXRpb25UeXBlOjpGbGlw
cGVkUm90YXRlZDkwRGVncmVlcykgfHwKKyAgICAgICAgICAgIChyb3RhdGlvbiA9PSBTdXJmYWNl
Um90YXRpb25UeXBlOjpGbGlwcGVkUm90YXRlZDI3MERlZ3JlZXMpKTsKK30KKworU3VyZmFjZVJv
dGF0aW9uVHlwZSBEZXRlcm1pbmVTdXJmYWNlUm90YXRpb24oZ2w6OkZyYW1lYnVmZmVyICpmcmFt
ZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdp
bmRvd1N1cmZhY2VWayAqd2luZG93U3VyZmFjZSkKK3sKKyAgICBpZiAod2luZG93U3VyZmFjZSAm
JiBmcmFtZWJ1ZmZlci0+aXNEZWZhdWx0KCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKHdpbmRv
d1N1cmZhY2UtPmdldFByZVRyYW5zZm9ybSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNl
IFZLX1NVUkZBQ0VfVFJBTlNGT1JNX0lERU5USVRZX0JJVF9LSFI6CisgICAgICAgICAgICAgICAg
Ly8gRG8gbm90IHJvdGF0ZSBnbF9Qb3NpdGlvbiAoc3VyZmFjZSBtYXRjaGVzIHRoZSBkZXZpY2Un
cyBvcmllbnRhdGlvbik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN1cmZhY2VSb3RhdGlvblR5
cGU6OklkZW50aXR5OworICAgICAgICAgICAgY2FzZSBWS19TVVJGQUNFX1RSQU5TRk9STV9ST1RB
VEVfOTBfQklUX0tIUjoKKyAgICAgICAgICAgICAgICAvLyBSb3RhdGUgZ2xfUG9zaXRpb24gOTAg
ZGVncmVlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3VyZmFjZVJvdGF0aW9uVHlwZTo6Um90
YXRlZDkwRGVncmVlczsKKyAgICAgICAgICAgIGNhc2UgVktfU1VSRkFDRV9UUkFOU0ZPUk1fUk9U
QVRFXzE4MF9CSVRfS0hSOgorICAgICAgICAgICAgICAgIC8vIFJvdGF0ZSBnbF9Qb3NpdGlvbiAx
ODAgZGVncmVlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3VyZmFjZVJvdGF0aW9uVHlwZTo6
Um90YXRlZDE4MERlZ3JlZXM7CisgICAgICAgICAgICBjYXNlIFZLX1NVUkZBQ0VfVFJBTlNGT1JN
X1JPVEFURV8yNzBfQklUX0tIUjoKKyAgICAgICAgICAgICAgICAvLyBSb3RhdGUgZ2xfUG9zaXRp
b24gMjcwIGRlZ3JlZXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN1cmZhY2VSb3RhdGlvblR5
cGU6OlJvdGF0ZWQxODBEZWdyZWVzOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIHJldHVybiBTdXJmYWNlUm90YXRp
b25UeXBlOjpJZGVudGl0eTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICAvLyBEbyBub3Qgcm90YXRlIGdsX1Bvc2l0aW9uIChvZmZzY3JlZW4gZnJhbWVidWZmZXIp
OgorICAgICAgICByZXR1cm4gU3VyZmFjZVJvdGF0aW9uVHlwZTo6SWRlbnRpdHk7CisgICAgfQor
fQorCisvLyBTaG91bGQgbm90IGdlbmVyYXRlIGEgY29weSB3aXRoIG1vZGVybiBDKysuCitFdmVu
dE5hbWUgR2V0VHJhY2VFdmVudE5hbWUoY29uc3QgY2hhciAqdGl0bGUsIHVpbnQzMl90IGNvdW50
ZXIpCit7CisgICAgRXZlbnROYW1lIGJ1ZjsKKyAgICBzbnByaW50ZihidWYuZGF0YSgpLCBrTWF4
R3B1RXZlbnROYW1lTGVuIC0gMSwgIiVzICV1IiwgdGl0bGUsIGNvdW50ZXIpOworICAgIHJldHVy
biBidWY7Cit9CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIENvbnRleHRWazo6RHJpdmVy
VW5pZm9ybXNEZXNjcmlwdG9yU2V0OjpEcml2ZXJVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQoKQpAQCAt
NDQyLDcgKzU0Miw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29tbWFuZFF1ZXVlOjpzdWJtaXRGcmFtZSh2
azo6Q29udGV4dCAqY29udGV4dCwKICAgICBiYXRjaC5mZW5jZS5jb3B5KGRldmljZSwgc2hhcmVk
RmVuY2UpOwogCiAgICAgQU5HTEVfVFJZKAotICAgICAgICByZW5kZXJlci0+cXVldWVTdWJtaXQo
Y29udGV4dCwgcHJpb3JpdHksIHN1Ym1pdEluZm8sIGJhdGNoLmZlbmNlLmdldCgpLCAmYmF0Y2gu
c2VyaWFsKSk7CisgICAgICAgIHJlbmRlcmVyLT5xdWV1ZVN1Ym1pdChjb250ZXh0LCBwcmlvcml0
eSwgc3VibWl0SW5mbywgJmJhdGNoLmZlbmNlLmdldCgpLCAmYmF0Y2guc2VyaWFsKSk7CiAKICAg
ICBpZiAoIWN1cnJlbnRHYXJiYWdlLT5lbXB0eSgpKQogICAgIHsKQEAgLTQ1NSwxNCArNTU1LDE2
IEBAIGFuZ2xlOjpSZXN1bHQgQ29tbWFuZFF1ZXVlOjpzdWJtaXRGcmFtZSh2azo6Q29udGV4dCAq
Y29udGV4dCwKIAogICAgIG1JbkZsaWdodENvbW1hbmRzLmVtcGxhY2VfYmFjayhzY29wZWRCYXRj
aC5yZWxlYXNlKCkpOwogCi0gICAgLy8gQ1BVIHNob3VsZCBiZSB0aHJvdHRsZWQgdG8gYXZvaWQg
bUluRmxpZ2h0Q29tbWFuZHMgZnJvbSBncm93aW5nIHRvbyBmYXN0LiAgVGhhdCBpcyBkb25lCi0g
ICAgLy8gb24gc3dhcCgpIHRob3VnaCwgYW5kIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHN1Ym1p
c3Npb25zIGluIGJldHdlZW4gKHRocm91Z2ggZ2xGbHVzaCgpCi0gICAgLy8gY2FsbHMpLCBzbyB0
aGUgbGltaXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGV4cGVjdGVkIG51bWJlciBvZiBpbWFnZXMuICBU
aGUKLSAgICAvLyBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcmsgcGVyZiB0ZXN0IGZv
ciBleGFtcGxlIGlzc3VlcyBhIGxhcmdlIG51bWJlciBvZiBmbHVzaGVzLgotICAgIEFTU0VSVCht
SW5GbGlnaHRDb21tYW5kcy5zaXplKCkgPD0ga0luRmxpZ2h0Q29tbWFuZHNMaW1pdCk7Ci0KICAg
ICBBTkdMRV9UUlkoY2hlY2tDb21wbGV0ZWRDb21tYW5kcyhjb250ZXh0KSk7CiAKKyAgICAvLyBD
UFUgc2hvdWxkIGJlIHRocm90dGxlZCB0byBhdm9pZCBtSW5GbGlnaHRDb21tYW5kcyBmcm9tIGdy
b3dpbmcgdG9vIGZhc3QuIEltcG9ydGFudCBmb3IKKyAgICAvLyBvZmYtc2NyZWVuIHNjZW5hcmlv
cy4KKyAgICB3aGlsZSAobUluRmxpZ2h0Q29tbWFuZHMuc2l6ZSgpID4ga0luRmxpZ2h0Q29tbWFu
ZHNMaW1pdCkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShmaW5pc2hUb1NlcmlhbChjb250ZXh0
LCBtSW5GbGlnaHRDb21tYW5kc1swXS5zZXJpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZW5kZXJlci0+Z2V0TWF4RmVuY2VXYWl0VGltZU5zKCkpKTsKKyAgICB9CisKICAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAgLTQ4NiwxMyArNTg4LDE3
IEBAIGVnbDo6Q29udGV4dFByaW9yaXR5IEdldENvbnRleHRQcmlvcml0eShjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlKQogQ29udGV4dFZrOjpDb250ZXh0VmsoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwg
Z2w6OkVycm9yU2V0ICplcnJvclNldCwgUmVuZGVyZXJWayAqcmVuZGVyZXIpCiAgICAgOiBDb250
ZXh0SW1wbChzdGF0ZSwgZXJyb3JTZXQpLAogICAgICAgdms6OkNvbnRleHQocmVuZGVyZXIpLAor
ICAgICAgbVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKG51bGxwdHIpLAogICAgICAgbUN1cnJlbnRH
cmFwaGljc1BpcGVsaW5lKG51bGxwdHIpLAogICAgICAgbUN1cnJlbnRDb21wdXRlUGlwZWxpbmUo
bnVsbHB0ciksCiAgICAgICBtQ3VycmVudERyYXdNb2RlKGdsOjpQcmltaXRpdmVNb2RlOjpJbnZh
bGlkRW51bSksCiAgICAgICBtQ3VycmVudFdpbmRvd1N1cmZhY2UobnVsbHB0ciksCisgICAgICBt
Q3VycmVudFJvdGF0aW9uRHJhd0ZyYW1lYnVmZmVyKFN1cmZhY2VSb3RhdGlvblR5cGU6OklkZW50
aXR5KSwKKyAgICAgIG1DdXJyZW50Um90YXRpb25SZWFkRnJhbWVidWZmZXIoU3VyZmFjZVJvdGF0
aW9uVHlwZTo6SWRlbnRpdHkpLAogICAgICAgbVZlcnRleEFycmF5KG51bGxwdHIpLAogICAgICAg
bURyYXdGcmFtZWJ1ZmZlcihudWxscHRyKSwKICAgICAgIG1Qcm9ncmFtKG51bGxwdHIpLAorICAg
ICAgbUV4ZWN1dGFibGUobnVsbHB0ciksCiAgICAgICBtTGFzdEluZGV4QnVmZmVyT2Zmc2V0KDAp
LAogICAgICAgbUN1cnJlbnREcmF3RWxlbWVudHNUeXBlKGdsOjpEcmF3RWxlbWVudHNUeXBlOjpJ
bnZhbGlkRW51bSksCiAgICAgICBtWGZiQmFzZVZlcnRleCgwKSwKQEAgLTUwMywxMCArNjA5LDEy
IEBAIENvbnRleHRWazo6Q29udGV4dFZrKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGdsOjpFcnJv
clNldCAqZXJyb3JTZXQsIFJlbmRlcmVyVmsKICAgICAgIG1FbXVsYXRlU2VhbWZ1bEN1YmVNYXBT
YW1wbGluZyhmYWxzZSksCiAgICAgICBtVXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzKGZhbHNl
KSwKICAgICAgIG1Qb29sQWxsb2NhdG9yKGtEZWZhdWx0UG9vbEFsbG9jYXRvclBhZ2VTaXplLCAx
KSwKLSAgICAgIG1Db21tYW5kR3JhcGgoa0VuYWJsZUNvbW1hbmRHcmFwaERpYWdub3N0aWNzLCAm
bVBvb2xBbGxvY2F0b3IpLAorICAgICAgbUhhc1ByaW1hcnlDb21tYW5kcyhmYWxzZSksCiAgICAg
ICBtR3B1RXZlbnRzRW5hYmxlZChmYWxzZSksCiAgICAgICBtR3B1Q2xvY2tTeW5je3N0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bWF4KCl9LAogICAgICAgbUdwdUV2ZW50VGltZXN0YW1wT3JpZ2luKDApLAorICAgICAgbVByaW1h
cnlCdWZmZXJDb3VudGVyKDApLAorICAgICAgbVJlbmRlclBhc3NDb3VudGVyKDApLAogICAgICAg
bUNvbnRleHRQcmlvcml0eShyZW5kZXJlci0+Z2V0RHJpdmVyUHJpb3JpdHkoR2V0Q29udGV4dFBy
aW9yaXR5KHN0YXRlKSkpCiB7CiAgICAgQU5HTEVfVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAi
Q29udGV4dFZrOjpDb250ZXh0VmsiKTsKQEAgLTY2NCw2ICs3NzIsOSBAQCBhbmdsZTo6UmVzdWx0
IENvbnRleHRWazo6aW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6a0RlZmF1bHRUaW1lc3RhbXBRdWVy
eVBvb2xTaXplKSk7CiAgICAgfQogCisgICAgLy8gSW5pdCBnbGVzIHRvIHZ1bGthbiBpbmRleCB0
eXBlIG1hcAorICAgIGluaXRJbmRleFR5cGVNYXAoKTsKKwogICAgIC8vIEluaXQgZHJpdmVyIHVu
aWZvcm1zIGFuZCBnZXQgdGhlIGRlc2NyaXB0b3Igc2V0IGxheW91dHMuCiAgICAgY29uc3RleHBy
IGFuZ2xlOjpQYWNrZWRFbnVtTWFwPFBpcGVsaW5lVHlwZSwgVmtTaGFkZXJTdGFnZUZsYWdzPiBr
UGlwZWxpbmVTdGFnZXMgPSB7CiAgICAgICAgIHtQaXBlbGluZVR5cGU6OkdyYXBoaWNzLCBWS19T
SEFERVJfU1RBR0VfQUxMX0dSQVBISUNTfSwKQEAgLTcwMSw2ICs4MTIsMTYgQEAgYW5nbGU6OlJl
c3VsdCBDb250ZXh0Vms6OmluaXRpYWxpemUoKQogICAgIG1HcHVFdmVudHNFbmFibGVkID0gZ3B1
RXZlbnRzRW5hYmxlZCAmJiAqZ3B1RXZlbnRzRW5hYmxlZDsKICNlbmRpZgogCisgICAgbUVtdWxh
dGVTZWFtZnVsQ3ViZU1hcFNhbXBsaW5nID0gc2hvdWxkRW11bGF0ZVNlYW1mdWxDdWJlTWFwU2Ft
cGxpbmcoKTsKKworICAgIG1Vc2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMgPSBzaG91bGRVc2VP
bGRSZXdyaXRlU3RydWN0U2FtcGxlcnMoKTsKKworICAgIC8vIFB1c2ggYSBzY29wZSBpbiB0aGUg
cG9vbCBhbGxvY2F0b3Igc28gd2UgY2FuIGVhc2lseSByZWluaXRpYWxpemUgb24gZmx1c2guCisg
ICAgbVBvb2xBbGxvY2F0b3IucHVzaCgpOworICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRz
LmdldENvbW1hbmRCdWZmZXIoKS5pbml0aWFsaXplKCZtUG9vbEFsbG9jYXRvcik7CisgICAgbVJl
bmRlclBhc3NDb21tYW5kcy5pbml0aWFsaXplKCZtUG9vbEFsbG9jYXRvcik7CisgICAgQU5HTEVf
VFJZKHN0YXJ0UHJpbWFyeUNvbW1hbmRCdWZmZXIoKSk7CisKICAgICBpZiAobUdwdUV2ZW50c0Vu
YWJsZWQpCiAgICAgewogICAgICAgICAvLyBHUFUgZXZlbnRzIHNob3VsZCBvbmx5IGJlIGF2YWls
YWJsZSBpZiB0aW1lc3RhbXAgcXVlcmllcyBhcmUgYXZhaWxhYmxlLgpAQCAtNzA5LDE3ICs4MzAs
MTEgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmluaXRpYWxpemUoKQogICAgICAgICBBTkdM
RV9UUlkobUdwdUV2ZW50UXVlcnlQb29sLmluaXQodGhpcywgVktfUVVFUllfVFlQRV9USU1FU1RB
TVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6a0RlZmF1
bHRUaW1lc3RhbXBRdWVyeVBvb2xTaXplKSk7CiAgICAgICAgIEFOR0xFX1RSWShzeW5jaHJvbml6
ZUNwdUdwdVRpbWUoKSk7Ci0gICAgfQogCi0gICAgbUVtdWxhdGVTZWFtZnVsQ3ViZU1hcFNhbXBs
aW5nID0gc2hvdWxkRW11bGF0ZVNlYW1mdWxDdWJlTWFwU2FtcGxpbmcoKTsKLQotICAgIG1Vc2VP
bGRSZXdyaXRlU3RydWN0U2FtcGxlcnMgPSBzaG91bGRVc2VPbGRSZXdyaXRlU3RydWN0U2FtcGxl
cnMoKTsKKyAgICAgICAgbVByaW1hcnlCdWZmZXJDb3VudGVyKys7CiAKLSAgICBpZiAoIWNvbW1h
bmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1h
bmRzLmdldENvbW1hbmRCdWZmZXIoKS5pbml0aWFsaXplKCZtUG9vbEFsbG9jYXRvcik7Ci0gICAg
ICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuaW5pdGlhbGl6ZSgmbVBvb2xBbGxvY2F0b3IpOwotICAg
ICAgICBBTkdMRV9UUlkoc3RhcnRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigpKTsKKyAgICAgICAgRXZl
bnROYW1lIGV2ZW50TmFtZSA9IEdldFRyYWNlRXZlbnROYW1lKCJQcmltYXJ5IiwgbVByaW1hcnlC
dWZmZXJDb3VudGVyKTsKKyAgICAgICAgQU5HTEVfVFJZKHRyYWNlR3B1RXZlbnQoJm1QcmltYXJ5
Q29tbWFuZHMsIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBldmVudE5hbWUpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CkBAIC03MjcsMTQgKzg0MiwxNSBA
QCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aW5pdGlhbGl6ZSgpCiAKIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjpzdGFydFByaW1hcnlDb21tYW5kQnVmZmVyKCkKIHsKLSAgICBBU1NFUlQoIWNv
bW1hbmRHcmFwaEVuYWJsZWQoKSk7CiAgICAgQU5HTEVfVFJZKG1Db21tYW5kUXVldWUuYWxsb2Nh
dGVQcmltYXJ5Q29tbWFuZEJ1ZmZlcih0aGlzLCBtQ29tbWFuZFBvb2wsICZtUHJpbWFyeUNvbW1h
bmRzKSk7CiAKICAgICBWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8gYmVnaW5JbmZvID0ge307CiAg
ICAgYmVnaW5JbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBF
X0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lORk87Ci0gICAgYmVnaW5JbmZvLmZsYWdzICAgICAgICAg
ICAgICAgICAgICA9IDA7CisgICAgYmVnaW5JbmZvLmZsYWdzICAgICAgICAgICAgICAgICAgICA9
IFZLX0NPTU1BTkRfQlVGRkVSX1VTQUdFX09ORV9USU1FX1NVQk1JVF9CSVQ7CiAgICAgYmVnaW5J
bmZvLnBJbmhlcml0YW5jZUluZm8gICAgICAgICA9IG51bGxwdHI7CiAgICAgQU5HTEVfVktfVFJZ
KHRoaXMsIG1QcmltYXJ5Q29tbWFuZHMuYmVnaW4oYmVnaW5JbmZvKSk7CisKKyAgICBtSGFzUHJp
bWFyeUNvbW1hbmRzID0gZmFsc2U7CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OwogfQogCkBAIC03ODYsMTIgKzkwMiw4IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzZXR1
cERyYXcoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIG1HcmFwaGljc0RpcnR5
Qml0cyB8PSBtTmV3R3JhcGhpY3NDb21tYW5kQnVmZmVyRGlydHlCaXRzOwogCiAgICAgICAgIGds
OjpSZWN0YW5nbGUgc2Npc3NvcmVkUmVuZGVyQXJlYSA9IG1EcmF3RnJhbWVidWZmZXItPmdldFNj
aXNzb3JlZFJlbmRlckFyZWEodGhpcyk7Ci0gICAgICAgIGlmICghbURyYXdGcmFtZWJ1ZmZlci0+
YXBwZW5kVG9TdGFydGVkUmVuZGVyUGFzcygmbVJlc291cmNlVXNlTGlzdCwgc2Npc3NvcmVkUmVu
ZGVyQXJlYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBTkdMRV9UUlkobURyYXdGcmFtZWJ1ZmZlci0+c3RhcnROZXdSZW5kZXJQYXNzKHRoaXMs
IHNjaXNzb3JlZFJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZtUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIpKTsKLSAg
ICAgICAgfQorICAgICAgICBBTkdMRV9UUlkobURyYXdGcmFtZWJ1ZmZlci0+c3RhcnROZXdSZW5k
ZXJQYXNzKHRoaXMsIHNjaXNzb3JlZFJlbmRlckFyZWEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1SZW5kZXJQYXNzQ29tbWFuZEJ1ZmZl
cikpOwogICAgIH0KIAogICAgIC8vIFdlIGtlZXAgYSBsb2NhbCBjb3B5IG9mIHRoZSBjb21tYW5k
IGJ1ZmZlci4gSXQncyBwb3NzaWJsZSB0aGF0IHNvbWUgc3RhdGUgY2hhbmdlcyBjb3VsZApAQCAt
ODYzLDEyICs5NzUsMjYgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnNldHVwSW5kZXhlZERy
YXcoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICBtTGFzdEluZGV4QnVm
ZmVyT2Zmc2V0ID0gaW5kaWNlczsKICAgICAgICAgICAgIG1WZXJ0ZXhBcnJheS0+dXBkYXRlQ3Vy
cmVudEVsZW1lbnRBcnJheUJ1ZmZlck9mZnNldChtTGFzdEluZGV4QnVmZmVyT2Zmc2V0KTsKICAg
ICAgICAgfQotCi0gICAgICAgIGlmIChpbmRleFR5cGUgPT0gZ2w6OkRyYXdFbGVtZW50c1R5cGU6
OlVuc2lnbmVkQnl0ZSAmJgotICAgICAgICAgICAgbUdyYXBoaWNzRGlydHlCaXRzW0RJUlRZX0JJ
VF9JTkRFWF9CVUZGRVJdKQorICAgICAgICBpZiAoc2hvdWxkQ29udmVydFVpbnQ4VmtJbmRleFR5
cGUoaW5kZXhUeXBlKSAmJiBtR3JhcGhpY3NEaXJ0eUJpdHNbRElSVFlfQklUX0lOREVYX0JVRkZF
Ul0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEJ1ZmZlclZrICpidWZmZXJWayA9IHZrOjpHZXRJ
bXBsKGVsZW1lbnRBcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBBTkdMRV9UUlkobVZlcnRleEFy
cmF5LT5jb252ZXJ0SW5kZXhCdWZmZXJHUFUodGhpcywgYnVmZmVyVmssIGluZGljZXMpKTsKKyAg
ICAgICAgICAgIEJ1ZmZlclZrICpidWZmZXJWayAgICAgICAgICAgICA9IHZrOjpHZXRJbXBsKGVs
ZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICZidWZmZXJI
ZWxwZXIgPSBidWZmZXJWay0+Z2V0QnVmZmVyKCk7CisKKyAgICAgICAgICAgIGlmIChidWZmZXJI
ZWxwZXIuaXNIb3N0VmlzaWJsZSgpICYmCisgICAgICAgICAgICAgICAgIWJ1ZmZlckhlbHBlci5p
c0N1cnJlbnRseUluVXNlKGdldExhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCgpKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpzcmMgPSBudWxscHRyOworICAgICAgICAg
ICAgICAgIEFOR0xFX1RSWShidWZmZXJWay0+bWFwSW1wbCh0aGlzLCByZWludGVycHJldF9jYXN0
PHZvaWQgKio+KCZzcmMpKSk7CisgICAgICAgICAgICAgICAgc3JjICs9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgYnl0
ZUNvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihlbGVtZW50QXJyYXlCdWZmZXItPmdldFNpemUo
KSkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1W
ZXJ0ZXhBcnJheS0+Y29udmVydEluZGV4QnVmZmVyQ1BVKHRoaXMsIGluZGV4VHlwZSwgYnl0ZUNv
dW50LCBzcmMpKTsKKyAgICAgICAgICAgICAgICBidWZmZXJWay0+dW5tYXBJbXBsKHRoaXMpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEFOR0xFX1RSWShtVmVydGV4QXJyYXktPmNvbnZlcnRJbmRleEJ1ZmZlckdQVSh0aGlz
LCBidWZmZXJWaywgaW5kaWNlcykpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CkBAIC04ODcsOCArMTAxMyw4IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzZXR1cEluZGly
ZWN0RHJhdyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBHTHNpemVpIHZlcnRleENv
dW50ICAgPSAwOwogICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCA9IDE7CiAKLSAgICB2azo6RnJh
bWVidWZmZXJIZWxwZXIgKmZyYW1lYnVmZmVyID0gbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RnJhbWVi
dWZmZXIoKTsKLSAgICBpbmRpcmVjdEJ1ZmZlci0+b25SZWFkKHRoaXMsIGZyYW1lYnVmZmVyLCBW
S19BQ0NFU1NfSU5ESVJFQ1RfQ09NTUFORF9SRUFEX0JJVCk7CisgICAgbVJlbmRlclBhc3NDb21t
YW5kcy5idWZmZXJSZWFkKCZtUmVzb3VyY2VVc2VMaXN0LCBWS19BQ0NFU1NfSU5ESVJFQ1RfQ09N
TUFORF9SRUFEX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXJl
Y3RCdWZmZXIpOwogCiAgICAgQU5HTEVfVFJZKHNldHVwRHJhdyhjb250ZXh0LCBtb2RlLCBmaXJz
dFZlcnRleCwgdmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6SW52YWxpZEVudW0sIG51bGxwdHIsIGRpcnR5Qml0
TWFzaywKQEAgLTk5Nyw3ICsxMTIzLDEyIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzZXR1
cExpbmVMb29wRHJhdyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjpzZXR1cERpc3BhdGNoKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKipj
b21tYW5kQnVmZmVyT3V0KQogewotICAgIEFOR0xFX1RSWShtRGlzcGF0Y2hlci5yZWNvcmRDb21t
YW5kcyh0aGlzLCBjb21tYW5kQnVmZmVyT3V0KSk7CisgICAgLy8gfHNldHVwRGlzcGF0Y2h8IGFu
ZCB8c2V0dXBEcmF3fCBhcmUgc3BlY2lhbCBpbiB0aGF0IHRoZXkgZmx1c2ggZGlydHkgYml0cy4g
VGhlcmVmb3JlIHRoZXkKKyAgICAvLyBkb24ndCB1c2UgdGhlIHNhbWUgQVBJcyB0byByZWNvcmQg
Y29tbWFuZHMgYXMgdGhlIGZ1bmN0aW9ucyBvdXRzaWRlIENvbnRleHRWay4KKyAgICAvLyBUaGUg
Zm9sbG93aW5nIGVuc3VyZXMgcHJpb3IgY29tbWFuZHMgYXJlIGZsdXNoZWQgYmVmb3JlIHdlIHN0
YXJ0IHByb2Nlc3NpbmcgZGlydHkgYml0cy4KKyAgICBmbHVzaE91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMoKTsKKyAgICBBTkdMRV9UUlkoZW5kUmVuZGVyUGFzcygpKTsKKyAgICAqY29tbWFuZEJ1
ZmZlck91dCA9ICZtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5nZXRDb21tYW5kQnVmZmVyKCk7
CiAKICAgICBpZiAobVByb2dyYW0tPmRpcnR5VW5pZm9ybXMoKSkKICAgICB7CkBAIC0xMDQxLDEw
ICsxMTcyLDEwIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNz
UGlwZWxpbmUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNvbnN0IHZrOjpH
cmFwaGljc1BpcGVsaW5lRGVzYyAqZGVzY1B0cjsKIAogICAgICAgICAvLyBEcmF3IGNhbGwgc2hh
ZGVyIHBhdGNoaW5nLCBzaGFkZXIgY29tcGlsYXRpb24sIGFuZCBwaXBlbGluZSBjYWNoZSBxdWVy
eS4KLSAgICAgICAgQU5HTEVfVFJZKAotICAgICAgICAgICAgbVByb2dyYW0tPmdldEdyYXBoaWNz
UGlwZWxpbmUodGhpcywgbUN1cnJlbnREcmF3TW9kZSwgKm1HcmFwaGljc1BpcGVsaW5lRGVzYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Qcm9ncmFtLT5nZXRT
dGF0ZSgpLmdldE5vbkJ1aWx0aW5BdHRyaWJMb2NhdGlvbnNNYXNrKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzY1B0ciwgJm1DdXJyZW50R3JhcGhpY3NQ
aXBlbGluZSkpOworICAgICAgICBBTkdMRV9UUlkobVByb2dyYW0tPmdldEdyYXBoaWNzUGlwZWxp
bmUoCisgICAgICAgICAgICB0aGlzLCBtQ3VycmVudERyYXdNb2RlLCAqbUdyYXBoaWNzUGlwZWxp
bmVEZXNjLAorICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtRXhlY3V0
YWJsZSgpLT5nZXROb25CdWlsdGluQXR0cmliTG9jYXRpb25zTWFzaygpLAorICAgICAgICAgICAg
JmRlc2NQdHIsICZtQ3VycmVudEdyYXBoaWNzUGlwZWxpbmUpKTsKICAgICAgICAgbUdyYXBoaWNz
UGlwZWxpbmVUcmFuc2l0aW9uLnJlc2V0KCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG1HcmFwaGlj
c1BpcGVsaW5lVHJhbnNpdGlvbi5hbnkoKSkKQEAgLTEwNTgsOCArMTE4OSw4IEBAIGFuZ2xlOjpS
ZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzUGlwZWxpbmUoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsCiAKICAgICAgICAgICAgIEFOR0xFX1RSWShtUHJvZ3JhbS0+Z2V0R3Jh
cGhpY3NQaXBlbGluZSgKICAgICAgICAgICAgICAgICB0aGlzLCBtQ3VycmVudERyYXdNb2RlLCAq
bUdyYXBoaWNzUGlwZWxpbmVEZXNjLAotICAgICAgICAgICAgICAgIG1Qcm9ncmFtLT5nZXRTdGF0
ZSgpLmdldE5vbkJ1aWx0aW5BdHRyaWJMb2NhdGlvbnNNYXNrKCksICZkZXNjUHRyLAotICAgICAg
ICAgICAgICAgICZtQ3VycmVudEdyYXBoaWNzUGlwZWxpbmUpKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldFByb2dyYW1FeGVjdXRhYmxlKCktPmdldE5vbkJ1aWx0aW5B
dHRyaWJMb2NhdGlvbnNNYXNrKCksCisgICAgICAgICAgICAgICAgJmRlc2NQdHIsICZtQ3VycmVu
dEdyYXBoaWNzUGlwZWxpbmUpKTsKIAogICAgICAgICAgICAgb2xkUGlwZWxpbmUtPmFkZFRyYW5z
aXRpb24obUdyYXBoaWNzUGlwZWxpbmVUcmFuc2l0aW9uLCBkZXNjUHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRHcmFwaGljc1BpcGVsaW5lKTsKQEAg
LTEwODgsMjggKzEyMTksNTcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURpcnR5
Q29tcHV0ZVBpcGVsaW5lKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBh
bmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotQU5HTEVfSU5MSU5FIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjpoYW5kbGVEaXJ0eVRleHR1cmVzSW1wbChjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpD
b21tYW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIpCitBTkdMRV9JTkxJTkUgYW5nbGU6OlJlc3Vs
dCBDb250ZXh0Vms6OmhhbmRsZURpcnR5VGV4dHVyZXNJbXBsKAorICAgIGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAorICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyLAorICAg
IENvbW1hbmRCdWZmZXJIZWxwZXIgKmNvbW1hbmRCdWZmZXJIZWxwZXIpCiB7Ci0gICAgaWYgKGNv
bW1hbmRHcmFwaEVuYWJsZWQoKSkKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4
ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBBU1NFUlQoZXhl
Y3V0YWJsZSk7CisgICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVNYXNrICZhY3RpdmVUZXh0dXJl
cyA9IGV4ZWN1dGFibGUtPmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpOworCisgICAgZm9yIChzaXpl
X3QgdGV4dHVyZVVuaXQgOiBhY3RpdmVUZXh0dXJlcykKICAgICB7Ci0gICAgICAgIEFOR0xFX1RS
WSh1cGRhdGVBY3RpdmVUZXh0dXJlcyhjb250ZXh0KSk7CisgICAgICAgIGNvbnN0IHZrOjpUZXh0
dXJlVW5pdCAmdW5pdCA9IG1BY3RpdmVUZXh0dXJlc1t0ZXh0dXJlVW5pdF07CisgICAgICAgIFRl
eHR1cmVWayAqdGV4dHVyZVZrICAgICAgICA9IHVuaXQudGV4dHVyZTsKKyAgICAgICAgdms6Oklt
YWdlSGVscGVyICZpbWFnZSAgICAgID0gdGV4dHVyZVZrLT5nZXRJbWFnZSgpOworCisgICAgICAg
IC8vIFRoZSBpbWFnZSBzaG91bGQgYmUgZmx1c2hlZCBhbmQgcmVhZHkgdG8gdXNlIGF0IHRoaXMg
cG9pbnQuIFRoZXJlIG1heSBzdGlsbCBiZQorICAgICAgICAvLyBsaW5nZXJpbmcgc3RhZ2VkIHVw
ZGF0ZXMgaW4gaXRzIHN0YWdpbmcgYnVmZmVyIGZvciB1bnVzZWQgdGV4dHVyZSBtaXAgbGV2ZWxz
IG9yCisgICAgICAgIC8vIGxheWVycy4gVGhlcmVmb3JlIHdlIGNhbid0IHZlcmlmeSBpdCBoYXMg
bm8gc3RhZ2VkIHVwZGF0ZXMgcmlnaHQgaGVyZS4KKworICAgICAgICAvLyBTZWxlY3QgdGhlIGFw
cHJvcHJpYXRlIHZrOjpJbWFnZUxheW91dCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdGV4dHVy
ZSBpcyBhbHNvIGJvdW5kIGFzCisgICAgICAgIC8vIGEgR0wgaW1hZ2UsIGFuZCB3aGV0aGVyIHRo
ZSBwcm9ncmFtIGlzIGEgY29tcHV0ZSBvciBncmFwaGljcyBzaGFkZXIuCisgICAgICAgIHZrOjpJ
bWFnZUxheW91dCB0ZXh0dXJlTGF5b3V0OworICAgICAgICBpZiAodGV4dHVyZVZrLT5pc0JvdW5k
QXNJbWFnZVRleHR1cmUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dHVyZUxheW91dCA9
IGV4ZWN1dGFibGUtPmlzQ29tcHV0ZSgpID8gdms6OkltYWdlTGF5b3V0OjpDb21wdXRlU2hhZGVy
V3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzV3JpdGU7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0dXJlTGF5b3V0ID0gZXhl
Y3V0YWJsZS0+aXNDb21wdXRlKCkgPyB2azo6SW1hZ2VMYXlvdXQ6OkNvbXB1dGVTaGFkZXJSZWFk
T25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogdms6OkltYWdlTGF5b3V0OjpBbGxHcmFwaGljc1NoYWRlcnNSZWFkT25seTsKKyAgICAgICAg
fQorICAgICAgICBjb21tYW5kQnVmZmVySGVscGVyLT5pbWFnZVJlYWQoJm1SZXNvdXJjZVVzZUxp
c3QsIGltYWdlLmdldEFzcGVjdEZsYWdzKCksIHRleHR1cmVMYXlvdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2UpOworCisgICAgICAgIHRleHR1cmVWay0+
cmV0YWluSW1hZ2VWaWV3cygmbVJlc291cmNlVXNlTGlzdCk7CiAKLSAgICAgICAgY29uc3QgZ2w6
OkFjdGl2ZVRleHR1cmVNYXNrICZhY3RpdmVUZXh0dXJlcyA9IG1Qcm9ncmFtLT5nZXRTdGF0ZSgp
LmdldEFjdGl2ZVNhbXBsZXJzTWFzaygpOwotICAgICAgICBmb3IgKHNpemVfdCB0ZXh0dXJlVW5p
dCA6IGFjdGl2ZVRleHR1cmVzKQorICAgICAgICBpZiAodW5pdC5zYW1wbGVyKQogICAgICAgICB7
Ci0gICAgICAgICAgICB2azo6VGV4dHVyZVVuaXQgJnVuaXQgPSBtQWN0aXZlVGV4dHVyZXNbdGV4
dHVyZVVuaXRdOwotICAgICAgICAgICAgVGV4dHVyZVZrICp0ZXh0dXJlVmsgID0gdW5pdC50ZXh0
dXJlOwotICAgICAgICAgICAgQVNTRVJUKHRleHR1cmVWayk7Ci0gICAgICAgICAgICB2azo6SW1h
Z2VIZWxwZXIgJmltYWdlID0gdGV4dHVyZVZrLT5nZXRJbWFnZSgpOwotICAgICAgICAgICAgaW1h
Z2UuYWRkUmVhZERlcGVuZGVuY3kodGhpcywgcmVjb3JkZXIpOworICAgICAgICAgICAgdW5pdC5z
YW1wbGVyLT5yZXRhaW4oJm1SZXNvdXJjZVVzZUxpc3QpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dHVyZVZrLT5yZXRhaW5TYW1wbGVyKCZtUmVz
b3VyY2VVc2VMaXN0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtUHJvZ3JhbS0+aGFz
VGV4dHVyZXMoKSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+aGFzVGV4dHVyZXMobVN0YXRlKSkKICAg
ICB7Ci0gICAgICAgIEFOR0xFX1RSWShtUHJvZ3JhbS0+dXBkYXRlVGV4dHVyZXNEZXNjcmlwdG9y
U2V0KHRoaXMpKTsKKyAgICAgICAgQU5HTEVfVFJZKAorICAgICAgICAgICAgbVByb2dyYW0tPmdl
dEV4ZWN1dGFibGUoKS51cGRhdGVUZXh0dXJlc0Rlc2NyaXB0b3JTZXQobVByb2dyYW0tPmdldFN0
YXRlKCksIHRoaXMpKTsKICAgICB9CiAKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7CkBAIC0xMTE4LDE5ICsxMjc4LDE5IEBAIEFOR0xFX0lOTElORSBhbmdsZTo6UmVzdWx0IENv
bnRleHRWazo6aGFuZGxlRGlydHlUZXh0dXJlc0ltcGwoY29uc3QgZ2w6OkNvbnRleHQKIGFuZ2xl
OjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVGV4dHVyZXMoY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKQogewotICAg
IHJldHVybiBoYW5kbGVEaXJ0eVRleHR1cmVzSW1wbChjb250ZXh0LCBjb21tYW5kQnVmZmVyLCBt
RHJhd0ZyYW1lYnVmZmVyLT5nZXRGcmFtZWJ1ZmZlcigpKTsKKyAgICByZXR1cm4gaGFuZGxlRGly
dHlUZXh0dXJlc0ltcGwoY29udGV4dCwgY29tbWFuZEJ1ZmZlciwgJm1SZW5kZXJQYXNzQ29tbWFu
ZHMpOwogfQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlDb21wdXRlVGV4
dHVyZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRC
dWZmZXIpCiB7Ci0gICAgcmV0dXJuIGhhbmRsZURpcnR5VGV4dHVyZXNJbXBsKGNvbnRleHQsIGNv
bW1hbmRCdWZmZXIsICZtRGlzcGF0Y2hlcik7CisgICAgcmV0dXJuIGhhbmRsZURpcnR5VGV4dHVy
ZXNJbXBsKGNvbnRleHQsIGNvbW1hbmRCdWZmZXIsICZtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5k
cyk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVmVy
dGV4QnVmZmVycyhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcikKIHsKLSAgICB1aW50MzJfdCBtYXhBdHRyaWIgPSBtUHJvZ3JhbS0+
Z2V0U3RhdGUoKS5nZXRNYXhBY3RpdmVBdHRyaWJMb2NhdGlvbigpOworICAgIHVpbnQzMl90IG1h
eEF0dHJpYiA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKS0+Z2V0
TWF4QWN0aXZlQXR0cmliTG9jYXRpb24oKTsKICAgICBjb25zdCBnbDo6QXR0cmliQXJyYXk8VmtC
dWZmZXI+ICZidWZmZXJIYW5kbGVzID0gbVZlcnRleEFycmF5LT5nZXRDdXJyZW50QXJyYXlCdWZm
ZXJIYW5kbGVzKCk7CiAgICAgY29uc3QgZ2w6OkF0dHJpYkFycmF5PFZrRGV2aWNlU2l6ZT4gJmJ1
ZmZlck9mZnNldHMgPQogICAgICAgICBtVmVydGV4QXJyYXktPmdldEN1cnJlbnRBcnJheUJ1ZmZl
ck9mZnNldHMoKTsKQEAgLTExMzksMjMgKzEyOTksMTcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0
Vms6OmhhbmRsZURpcnR5R3JhcGhpY3NWZXJ0ZXhCdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0ICpj
b24KIAogICAgIGNvbnN0IGdsOjpBdHRyaWJBcnJheTx2azo6QnVmZmVySGVscGVyICo+ICZhcnJh
eUJ1ZmZlclJlc291cmNlcyA9CiAgICAgICAgIG1WZXJ0ZXhBcnJheS0+Z2V0Q3VycmVudEFycmF5
QnVmZmVycygpOwotICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXIgPSBtRHJh
d0ZyYW1lYnVmZmVyLT5nZXRGcmFtZWJ1ZmZlcigpOwogCi0gICAgLy8gTWFyayBhbGwgYWN0aXZl
IHZlcnRleCBidWZmZXJzIGFzIGFjY2Vzc2VkIGJ5IHRoZSBncmFwaC4KLSAgICBnbDo6QXR0cmli
dXRlc01hc2sgYXR0cmlic01hc2sgPSBtUHJvZ3JhbS0+Z2V0U3RhdGUoKS5nZXRBY3RpdmVBdHRy
aWJMb2NhdGlvbnNNYXNrKCk7CisgICAgLy8gTWFyayBhbGwgYWN0aXZlIHZlcnRleCBidWZmZXJz
IGFzIGFjY2Vzc2VkLgorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJs
ZSA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBnbDo6
QXR0cmlidXRlc01hc2sgYXR0cmlic01hc2sgICAgICAgICAgPSBleGVjdXRhYmxlLT5nZXRBY3Rp
dmVBdHRyaWJMb2NhdGlvbnNNYXNrKCk7CiAgICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggOiBh
dHRyaWJzTWFzaykKICAgICB7CiAgICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgKmFycmF5QnVmZmVy
ID0gYXJyYXlCdWZmZXJSZXNvdXJjZXNbYXR0cmliSW5kZXhdOwogICAgICAgICBpZiAoYXJyYXlC
dWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXJyYXlCdWZmZXItPm9uUmVhZCh0aGlz
LCBmcmFtZWJ1ZmZlciwgVktfQUNDRVNTX1ZFUlRFWF9BVFRSSUJVVEVfUkVBRF9CSVQpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG9uQnVmZmVyUmVhZChWS19BQ0NFU1NfVkVSVEVYX0FUVFJJQlVURV9SRUFEX0JJVCwgYXJy
YXlCdWZmZXIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgbVJlbmRlclBhc3NDb21tYW5k
cy5idWZmZXJSZWFkKCZtUmVzb3VyY2VVc2VMaXN0LCBWS19BQ0NFU1NfVkVSVEVYX0FUVFJJQlVU
RV9SRUFEX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cnJheUJ1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNzAsMTcgKzEzMjQsOSBAQCBh
bmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlHcmFwaGljc0luZGV4QnVmZmVyKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZQogCiAgICAgY29tbWFuZEJ1ZmZlci0+YmluZEluZGV4QnVm
ZmVyKGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0QnVmZmVyKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1WZXJ0ZXhBcnJheS0+Z2V0Q3VycmVudEVsZW1lbnRBcnJheUJ1ZmZl
ck9mZnNldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF92azo6a0lu
ZGV4VHlwZU1hcFttQ3VycmVudERyYXdFbGVtZW50c1R5cGVdKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0VmtJbmRleFR5cGUobUN1cnJlbnREcmF3RWxlbWVudHNUeXBl
KSk7CiAKLSAgICBpZiAoY29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgdms6
OkZyYW1lYnVmZmVySGVscGVyICpmcmFtZWJ1ZmZlciA9IG1EcmF3RnJhbWVidWZmZXItPmdldEZy
YW1lYnVmZmVyKCk7Ci0gICAgICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+b25SZWFkKHRoaXMsIGZy
YW1lYnVmZmVyLCBWS19BQ0NFU1NfSU5ERVhfUkVBRF9CSVQpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICBvbkJ1ZmZlclJlYWQoVktfQUNDRVNTX0lOREVYX1JFQURfQklULCBlbGVt
ZW50QXJyYXlCdWZmZXIpOwotICAgIH0KKyAgICBtUmVuZGVyUGFzc0NvbW1hbmRzLmJ1ZmZlclJl
YWQoJm1SZXNvdXJjZVVzZUxpc3QsIFZLX0FDQ0VTU19JTkRFWF9SRUFEX0JJVCwgZWxlbWVudEFy
cmF5QnVmZmVyKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KQEAg
LTExODgsMTcgKzEzMzQsMjEgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURpcnR5
R3JhcGhpY3NJbmRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dCAqY29udGUKIEFOR0xFX0lOTElO
RSBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlTaGFkZXJSZXNvdXJjZXNJbXBs
KAogICAgIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIHZrOjpDb21tYW5kQnVmZmVy
ICpjb21tYW5kQnVmZmVyLAotICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIp
CisgICAgQ29tbWFuZEJ1ZmZlckhlbHBlciAqY29tbWFuZEJ1ZmZlckhlbHBlcikKIHsKLSAgICBp
ZiAobVByb2dyYW0tPmhhc0ltYWdlcygpKQorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJs
ZSAqZXhlY3V0YWJsZSA9IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VS
VChleGVjdXRhYmxlKTsKKworICAgIGlmIChleGVjdXRhYmxlLT5oYXNJbWFnZXMobVN0YXRlKSkK
ICAgICB7Ci0gICAgICAgIEFOR0xFX1RSWSh1cGRhdGVBY3RpdmVJbWFnZXMoY29udGV4dCwgcmVj
b3JkZXIpKTsKKyAgICAgICAgQU5HTEVfVFJZKHVwZGF0ZUFjdGl2ZUltYWdlcyhjb250ZXh0LCBj
b21tYW5kQnVmZmVySGVscGVyKSk7CiAgICAgfQogCi0gICAgaWYgKG1Qcm9ncmFtLT5oYXNVbmlm
b3JtQnVmZmVycygpIHx8IG1Qcm9ncmFtLT5oYXNTdG9yYWdlQnVmZmVycygpIHx8Ci0gICAgICAg
IG1Qcm9ncmFtLT5oYXNBdG9taWNDb3VudGVyQnVmZmVycygpIHx8IG1Qcm9ncmFtLT5oYXNJbWFn
ZXMoKSkKKyAgICBpZiAoZXhlY3V0YWJsZS0+aGFzVW5pZm9ybUJ1ZmZlcnMobVN0YXRlKSB8fCBl
eGVjdXRhYmxlLT5oYXNTdG9yYWdlQnVmZmVycyhtU3RhdGUpIHx8CisgICAgICAgIGV4ZWN1dGFi
bGUtPmhhc0F0b21pY0NvdW50ZXJCdWZmZXJzKG1TdGF0ZSkgfHwgZXhlY3V0YWJsZS0+aGFzSW1h
Z2VzKG1TdGF0ZSkpCiAgICAgewotICAgICAgICBBTkdMRV9UUlkobVByb2dyYW0tPnVwZGF0ZVNo
YWRlclJlc291cmNlc0Rlc2NyaXB0b3JTZXQodGhpcywgcmVjb3JkZXIpKTsKKyAgICAgICAgQU5H
TEVfVFJZKG1Qcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkudXBkYXRlU2hhZGVyUmVzb3VyY2VzRGVz
Y3JpcHRvclNldCgKKyAgICAgICAgICAgIG1Qcm9ncmFtLT5nZXRTdGF0ZSgpLCB0aGlzLCAmbVJl
c291cmNlVXNlTGlzdCwgY29tbWFuZEJ1ZmZlckhlbHBlcikpOwogICAgIH0KICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CkBAIC0xMjA2LDI0ICsxMzU2LDQyIEBAIEFOR0xF
X0lOTElORSBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlTaGFkZXJSZXNvdXJj
ZXNJbXBsKAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURpcnR5R3JhcGhpY3NTaGFk
ZXJSZXNvdXJjZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1
ZmZlciAqY29tbWFuZEJ1ZmZlcikKIHsKLSAgICByZXR1cm4gaGFuZGxlRGlydHlTaGFkZXJSZXNv
dXJjZXNJbXBsKGNvbnRleHQsIGNvbW1hbmRCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtRHJhd0ZyYW1lYnVmZmVyLT5nZXRGcmFtZWJ1ZmZlcigpKTsK
KyAgICByZXR1cm4gaGFuZGxlRGlydHlTaGFkZXJSZXNvdXJjZXNJbXBsKGNvbnRleHQsIGNvbW1h
bmRCdWZmZXIsICZtUmVuZGVyUGFzc0NvbW1hbmRzKTsKIH0KIAogYW5nbGU6OlJlc3VsdCBDb250
ZXh0Vms6OmhhbmRsZURpcnR5Q29tcHV0ZVNoYWRlclJlc291cmNlcyhjb25zdCBnbDo6Q29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCiB7Ci0gICAg
cmV0dXJuIGhhbmRsZURpcnR5U2hhZGVyUmVzb3VyY2VzSW1wbChjb250ZXh0LCBjb21tYW5kQnVm
ZmVyLCAmbURpc3BhdGNoZXIpOworICAgIHJldHVybiBoYW5kbGVEaXJ0eVNoYWRlclJlc291cmNl
c0ltcGwoY29udGV4dCwgY29tbWFuZEJ1ZmZlciwgJm1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRz
KTsKIH0KIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRsZURpcnR5R3JhcGhpY3NUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlcnNFbXVsYXRpb24oCiAgICAgY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCiB7Ci0gICAgaWYg
KG1Qcm9ncmFtLT5oYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dCgpICYmIG1TdGF0ZS5pc1RyYW5z
Zm9ybUZlZWRiYWNrQWN0aXZlKCkpCisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICpl
eGVjdXRhYmxlID0gbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgQVNTRVJUKGV4
ZWN1dGFibGUpOworCisgICAgaWYgKGV4ZWN1dGFibGUtPmhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0
cHV0KG1TdGF0ZSkgJiYgbVN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmUoKSkKICAgICB7
Ci0gICAgICAgIEFOR0xFX1RSWShtUHJvZ3JhbS0+dXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tEZXNj
cmlwdG9yU2V0KAotICAgICAgICAgICAgdGhpcywgbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RnJhbWVi
dWZmZXIoKSkpOworICAgICAgICBzaXplX3QgYnVmZmVyQ291bnQgPSBleGVjdXRhYmxlLT5nZXRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50KG1TdGF0ZSk7CisgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPj4gJnhmYkJ1ZmZlcnMg
PQorICAgICAgICAgICAgbVN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5nZXRJ
bmRleGVkQnVmZmVycygpOworCisgICAgICAgIGZvciAoc2l6ZV90IGJ1ZmZlckluZGV4ID0gMDsg
YnVmZmVySW5kZXggPCBidWZmZXJDb3VudDsgKytidWZmZXJJbmRleCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZ4ZmJC
dWZmZXIgPSB4ZmJCdWZmZXJzW2J1ZmZlckluZGV4XTsKKyAgICAgICAgICAgIGdsOjpCdWZmZXIg
KmJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0geGZiQnVmZmVyLmdl
dCgpOworICAgICAgICAgICAgQVNTRVJUKGJ1ZmZlciAhPSBudWxscHRyKTsKKyAgICAgICAgICAg
IEJ1ZmZlclZrICpidWZmZXJWayAgICAgICAgICAgICA9IHZrOjpHZXRJbXBsKGJ1ZmZlcik7Cisg
ICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICZidWZmZXJIZWxwZXIgPSBidWZmZXJWay0+Z2V0
QnVmZmVyKCk7CisKKyAgICAgICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuYnVmZmVyV3JpdGUo
CisgICAgICAgICAgICAgICAgJm1SZXNvdXJjZVVzZUxpc3QsIFZLX0FDQ0VTU19UUkFOU0ZPUk1f
RkVFREJBQ0tfV1JJVEVfQklUX0VYVCwgJmJ1ZmZlckhlbHBlcik7CisgICAgICAgIH0KKworICAg
ICAgICBBTkdMRV9UUlkobVByb2dyYW0tPmdldEV4ZWN1dGFibGUoKS51cGRhdGVUcmFuc2Zvcm1G
ZWVkYmFja0Rlc2NyaXB0b3JTZXQoCisgICAgICAgICAgICBtUHJvZ3JhbS0+Z2V0U3RhdGUoKSwg
bVByb2dyYW0tPmdldERlZmF1bHRVbmlmb3JtQmxvY2tzKCksIHRoaXMpKTsKICAgICB9CiAgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQpAQCAtMTIzMiwzNSArMTQwMCw0MSBA
QCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6aGFuZGxlRGlydHlHcmFwaGljc1RyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyc0V4dGVuc2lvbigKICAgICBjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKIHsKLSAgICBpZiAoIW1Qcm9n
cmFtLT5oYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dCgpIHx8ICFtU3RhdGUuaXNUcmFuc2Zvcm1G
ZWVkYmFja0FjdGl2ZSgpKQorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0
YWJsZSA9IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRh
YmxlKTsKKworICAgIGlmICghZXhlY3V0YWJsZS0+aGFzVHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQo
bVN0YXRlKSB8fCAhbVN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmUoKSkKICAgICAgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogCiAgICAgc2l6ZV90IGJ1ZmZlckluZGV4
ICAgICAgICAgICAgICAgICAgICAgICA9IDA7CiAgICAgVHJhbnNmb3JtRmVlZGJhY2tWayAqdHJh
bnNmb3JtRmVlZGJhY2tWayA9IHZrOjpHZXRJbXBsKG1TdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3Jt
RmVlZGJhY2soKSk7CiAKLSAgICBzaXplX3QgYnVmZmVyQ291bnQgPSBtUHJvZ3JhbS0+Z2V0U3Rh
dGUoKS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50KCk7CisgICAgc2l6ZV90IGJ1ZmZl
ckNvdW50ID0gZXhlY3V0YWJsZS0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudChtU3Rh
dGUpOwogICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNBcnJheTxWa0J1ZmZlcj4gYnVm
ZmVySGFuZGxlczsKIAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpPZmZzZXRCaW5kaW5nUG9p
bnRlcjxnbDo6QnVmZmVyPj4gJnhmYkJ1ZmZlcnMgPQorICAgICAgICBtU3RhdGUuZ2V0Q3VycmVu
dFRyYW5zZm9ybUZlZWRiYWNrKCktPmdldEluZGV4ZWRCdWZmZXJzKCk7CisKICAgICBmb3IgKGJ1
ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBidWZmZXJDb3VudDsgKytidWZmZXJJbmRleCkK
ICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVy
PiAmYnVmZmVyQmluZGluZyA9Ci0gICAgICAgICAgICBtU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9y
bUZlZWRiYWNrKCktPmdldEluZGV4ZWRCdWZmZXIoYnVmZmVySW5kZXgpOwotICAgICAgICBnbDo6
QnVmZmVyICpidWZmZXIgPSBidWZmZXJCaW5kaW5nLmdldCgpOworICAgICAgICBjb25zdCBnbDo6
T2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJ1ZmZlckJpbmRpbmcgPSB4ZmJCdWZm
ZXJzW2J1ZmZlckluZGV4XTsKKyAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYnVmZmVyQmluZGluZy5nZXQoKTsKICAgICAg
ICAgQVNTRVJUKGJ1ZmZlciAhPSBudWxscHRyKTsKKyAgICAgICAgQnVmZmVyVmsgKmJ1ZmZlclZr
ID0gdms6OkdldEltcGwoYnVmZmVyKTsKIAotICAgICAgICB2azo6QnVmZmVySGVscGVyICZidWZm
ZXJIZWxwZXIgPSB2azo6R2V0SW1wbChidWZmZXIpLT5nZXRCdWZmZXIoKTsKKyAgICAgICAgdms6
OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOwogICAg
ICAgICBidWZmZXJIYW5kbGVzW2J1ZmZlckluZGV4XSAgICAgPSBidWZmZXJIZWxwZXIuZ2V0QnVm
ZmVyKCkuZ2V0SGFuZGxlKCk7CisKKyAgICAgICAgbVJlbmRlclBhc3NDb21tYW5kcy5idWZmZXJX
cml0ZSgmbVJlc291cmNlVXNlTGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19BQ0NFU1NfVFJBTlNGT1JNX0ZFRURCQUNLX1dSSVRFX0JJVF9FWFQsICZidWZm
ZXJIZWxwZXIpOwogICAgIH0KIAogICAgIGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyUmFu
Z2UgJnhmYkJ1ZmZlclJhbmdlRXh0ZW5zaW9uID0KICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tW
ay0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJSYW5nZSgpOwogCi0gICAgY29tbWFuZEJ1ZmZl
ci0+YmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhidWZmZXJDb3VudCwgYnVmZmVySGFuZGxl
cy5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4ZmJCdWZmZXJSYW5nZUV4dGVuc2lvbi5vZmZzZXRzLmRhdGEoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmYkJ1ZmZlclJhbmdlRXh0ZW5zaW9u
LnNpemVzLmRhdGEoKSk7Ci0KLSAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKmZyYW1lYnVmZmVy
ID0gbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZmZXIoKTsKLSAgICB0cmFuc2Zvcm1GZWVk
YmFja1ZrLT5hZGRGcmFtZWJ1ZmZlckRlcGVuZGVuY3kodGhpcywgbVByb2dyYW0tPmdldFN0YXRl
KCksIGZyYW1lYnVmZmVyKTsKKyAgICBjb21tYW5kQnVmZmVyLT5iaW5kVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJzKAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYnVmZmVyQ291bnQpLCBi
dWZmZXJIYW5kbGVzLmRhdGEoKSwKKyAgICAgICAgeGZiQnVmZmVyUmFuZ2VFeHRlbnNpb24ub2Zm
c2V0cy5kYXRhKCksIHhmYkJ1ZmZlclJhbmdlRXh0ZW5zaW9uLnNpemVzLmRhdGEoKSk7CiAKICAg
ICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CkBAIC0xMjY4LDIwICsxNDQyLDI0
IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJzRXh0ZW5zaW9uKAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmhhbmRs
ZURpcnR5R3JhcGhpY3NUcmFuc2Zvcm1GZWVkYmFja1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKQogewot
ICAgIGlmICghbVByb2dyYW0tPmhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KCkgfHwgIW1TdGF0
ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKKyAgICBjb25zdCBnbDo6UHJv
Z3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUo
KTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CisKKyAgICBpZiAoIWV4ZWN1dGFibGUtPmhhc1Ry
YW5zZm9ybUZlZWRiYWNrT3V0cHV0KG1TdGF0ZSkgfHwKKyAgICAgICAgIW1TdGF0ZS5pc1RyYW5z
Zm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwogCiAgICAgVHJhbnNmb3JtRmVlZGJhY2tWayAqdHJhbnNmb3JtRmVlZGJh
Y2tWayA9IHZrOjpHZXRJbXBsKG1TdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSk7
CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBzYW1lIG51bWJlciBvZiBjb3VudGVyIGJ1ZmZlcnMg
YXMgeGZiIGJ1ZmZlcnMgaGF2ZQotICAgIHNpemVfdCBidWZmZXJDb3VudCA9IG1Qcm9ncmFtLT5n
ZXRTdGF0ZSgpLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQoKTsKKyAgICBzaXplX3Qg
YnVmZmVyQ291bnQgPSBleGVjdXRhYmxlLT5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50
KG1TdGF0ZSk7CiAgICAgY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0FycmF5PFZr
QnVmZmVyPiAmY291bnRlckJ1ZmZlckhhbmRsZXMgPQogICAgICAgICB0cmFuc2Zvcm1GZWVkYmFj
a1ZrLT5nZXRDb3VudGVyQnVmZmVySGFuZGxlcygpOwogCi0gICAgdms6OkZyYW1lYnVmZmVySGVs
cGVyICpmcmFtZWJ1ZmZlciA9IG1EcmF3RnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVyKCk7CiAg
ICAgYm9vbCByZWJpbmRCdWZmZXIgPSB0cmFuc2Zvcm1GZWVkYmFja1ZrLT5nZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlclJlYmluZFN0YXRlKCk7Ci0gICAgZnJhbWVidWZmZXItPnNldEFjdGl2ZVRy
YW5zZm9ybUZlZWRiYWNrSW5mbyhidWZmZXJDb3VudCwgY291bnRlckJ1ZmZlckhhbmRsZXMuZGF0
YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVi
aW5kQnVmZmVyKTsKKworICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuYmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhidWZmZXJDb3VudCwgY291bnRlckJ1ZmZlckhhbmRsZXMuZGF0YSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJpbmRCdWZmZXIpOwogCiAg
ICAgdHJhbnNmb3JtRmVlZGJhY2tWay0+dW5zZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclJlYmlu
ZFN0YXRlKCk7CiAKQEAgLTEyOTEsMTMgKzE0NjksMjQgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0
Vms6OmhhbmRsZURpcnR5R3JhcGhpY3NUcmFuc2Zvcm1GZWVkYmFja1N0YXRlKGNvbnN0IGdsOjpD
b24KIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eURlc2NyaXB0b3JTZXRzKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCiB7
Ci0gICAgQU5HTEVfVFJZKG1Qcm9ncmFtLT51cGRhdGVEZXNjcmlwdG9yU2V0cyh0aGlzLCBjb21t
YW5kQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKG1Qcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkudXBk
YXRlRGVzY3JpcHRvclNldHModGhpcywgY29tbWFuZEJ1ZmZlcikpOwogICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN1Ym1p
dEZyYW1lKGNvbnN0IFZrU3VibWl0SW5mbyAmc3VibWl0SW5mbywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgJiZjb21tYW5kQnVm
ZmVyKQogeworICAgIC8vIFVwZGF0ZSBvdmVybGF5IGlmIGFjdGl2ZS4KKyAgICBnbDo6UnVubmlu
Z0dyYXBoV2lkZ2V0ICpyZW5kZXJQYXNzQ291bnQgPQorICAgICAgICBtU3RhdGUuZ2V0T3Zlcmxh
eSgpLT5nZXRSdW5uaW5nR3JhcGhXaWRnZXQoZ2w6OldpZGdldElkOjpWdWxrYW5SZW5kZXJQYXNz
Q291bnQpOworICAgIHJlbmRlclBhc3NDb3VudC0+YWRkKG1SZW5kZXJQYXNzQ29tbWFuZHMuZ2V0
QW5kUmVzZXRDb3VudGVyKCkpOworICAgIHJlbmRlclBhc3NDb3VudC0+bmV4dCgpOworCisgICAg
aWYgKGtFbmFibGVDb21tYW5kU3RyZWFtRGlhZ25vc3RpY3MpCisgICAgeworICAgICAgICBkdW1w
Q29tbWFuZFN0cmVhbURpYWdub3N0aWNzKCk7CisgICAgfQorCiAgICAgQU5HTEVfVFJZKGVuc3Vy
ZVN1Ym1pdEZlbmNlSW5pdGlhbGl6ZWQoKSk7CiAgICAgQU5HTEVfVFJZKG1Db21tYW5kUXVldWUu
c3VibWl0RnJhbWUodGhpcywgbUNvbnRleHRQcmlvcml0eSwgc3VibWl0SW5mbywgbVN1Ym1pdEZl
bmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQ3VycmVudEdh
cmJhZ2UsICZtQ29tbWFuZFBvb2wsIHN0ZDo6bW92ZShjb21tYW5kQnVmZmVyKSkpOwpAQCAtMTMx
OCwyMiArMTUwNyw2IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzdWJtaXRGcmFtZShjb25z
dCBWa1N1Ym1pdEluZm8gJnN1Ym1pdEluZm8sCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOwogfQogCi1hbmdsZTo6UmVzdWx0IENvbnRleHRWazo6Zmx1c2hDb21tYW5kR3JhcGgo
dms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpjb21tYW5kQmF0Y2gpCi17Ci0gICAgQVNTRVJUKGNv
bW1hbmRHcmFwaEVuYWJsZWQoKSk7Ci0KLSAgICBpZiAobUlzQW55SG9zdFZpc2libGVCdWZmZXJX
cml0dGVuKQotICAgIHsKLSAgICAgICAgbUNvbW1hbmRHcmFwaC5tYWtlSG9zdFZpc2libGVCdWZm
ZXJXcml0ZUF2YWlsYWJsZSgpOwotICAgIH0KLSAgICBtSXNBbnlIb3N0VmlzaWJsZUJ1ZmZlcldy
aXR0ZW4gPSBmYWxzZTsKLQotICAgIFNlcmlhbCBzZXJpYWwgPSBnZXRDdXJyZW50UXVldWVTZXJp
YWwoKTsKLSAgICBtUmVzb3VyY2VVc2VMaXN0LnJlbGVhc2VSZXNvdXJjZVVzZXNBbmRVcGRhdGVT
ZXJpYWxzKHNlcmlhbCk7Ci0KLSAgICByZXR1cm4gbUNvbW1hbmRHcmFwaC5zdWJtaXRDb21tYW5k
cyh0aGlzLCBzZXJpYWwsICZtUmVuZGVyUGFzc0NhY2hlLCBjb21tYW5kQmF0Y2gpOwotfQotCiBh
bmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3luY2hyb25pemVDcHVHcHVUaW1lKCkKIHsKICAgICBB
U1NFUlQobUdwdUV2ZW50c0VuYWJsZWQpOwpAQCAtMTQwNyw3ICsxNTgwLDcgQEAgYW5nbGU6OlJl
c3VsdCBDb250ZXh0Vms6OnN5bmNocm9uaXplQ3B1R3B1VGltZSgpCiAgICAgLy8gTm90ZTogT25j
ZSBWS19FWFRfY2FsaWJyYXRlZF90aW1lc3RhbXBzIGlzIHViaXF1aXRvdXMsIHRoaXMgc2hvdWxk
IGJlIHJlZG9uZS4KIAogICAgIC8vIE1ha2Ugc3VyZSBub3RoaW5nIGlzIHJ1bm5pbmcKLSAgICBB
U1NFUlQobUNvbW1hbmRHcmFwaC5lbXB0eSgpKTsKKyAgICBBU1NFUlQoIWhhc1JlY29yZGVkQ29t
bWFuZHMoKSk7CiAKICAgICBBTkdMRV9UUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJSZW5kZXJl
clZrOjpzeW5jaHJvbml6ZUNwdUdwdVRpbWUiKTsKIApAQCAtMTQ0Nyw3ICsxNjIwLDcgQEAgYW5n
bGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5bmNocm9uaXplQ3B1R3B1VGltZSgpCiAKICAgICAgICAg
VmtDb21tYW5kQnVmZmVyQmVnaW5JbmZvIGJlZ2luSW5mbyA9IHt9OwogICAgICAgICBiZWdpbklu
Zm8uc1R5cGUgICAgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9C
VUZGRVJfQkVHSU5fSU5GTzsKLSAgICAgICAgYmVnaW5JbmZvLmZsYWdzICAgICAgICAgICAgICAg
ICAgICA9IDA7CisgICAgICAgIGJlZ2luSW5mby5mbGFncyAgICAgICAgICAgICAgICAgICAgPSBW
S19DT01NQU5EX0JVRkZFUl9VU0FHRV9PTkVfVElNRV9TVUJNSVRfQklUOwogICAgICAgICBiZWdp
bkluZm8ucEluaGVyaXRhbmNlSW5mbyAgICAgICAgID0gbnVsbHB0cjsKIAogICAgICAgICBBTkdM
RV9WS19UUlkodGhpcywgY29tbWFuZEJ1ZmZlci5iZWdpbihiZWdpbkluZm8pKTsKQEAgLTE0NTYs
MTMgKzE2MjksNyBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3luY2hyb25pemVDcHVHcHVU
aW1lKCkKICAgICAgICAgY29tbWFuZEJ1ZmZlci53YWl0RXZlbnRzKDEsIGNwdVJlYWR5LmdldCgp
LnB0cigpLCBWS19QSVBFTElORV9TVEFHRV9IT1NUX0JJVCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0FMTF9HUkFQSElDU19CSVQsIDAsIG51bGxw
dHIsIDAsIG51bGxwdHIsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKLQotICAgICAgICBjb21tYW5kQnVmZmVyLnJlc2V0UXVlcnlQb29sKHRpbWVzdGFtcFF1
ZXJ5LmdldFF1ZXJ5UG9vbCgpLT5nZXRIYW5kbGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lc3RhbXBRdWVyeS5nZXRRdWVyeSgpLCAxKTsKLSAgICAgICAgY29t
bWFuZEJ1ZmZlci53cml0ZVRpbWVzdGFtcChWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0ZfUElQ
RV9CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wUXVl
cnkuZ2V0UXVlcnlQb29sKCktPmdldEhhbmRsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVzdGFtcFF1ZXJ5LmdldFF1ZXJ5KCkpOwotCisgICAgICAgIHRpbWVz
dGFtcFF1ZXJ5LndyaXRlVGltZXN0YW1wKCZjb21tYW5kQnVmZmVyKTsKICAgICAgICAgY29tbWFu
ZEJ1ZmZlci5zZXRFdmVudChncHVEb25lLmdldCgpLmdldEhhbmRsZSgpLCBWS19QSVBFTElORV9T
VEFHRV9BTExfR1JBUEhJQ1NfQklUKTsKIAogICAgICAgICBBTkdMRV9WS19UUlkodGhpcywgY29t
bWFuZEJ1ZmZlci5lbmQoKSk7CkBAIC0xNTA2LDEyICsxNjczLDggQEAgYW5nbGU6OlJlc3VsdCBD
b250ZXh0Vms6OnN5bmNocm9uaXplQ3B1R3B1VGltZSgpCiAgICAgICAgIC8vIEdldCB0aGUgcXVl
cnkgcmVzdWx0cwogICAgICAgICBBTkdMRV9UUlkoZmluaXNoVG9TZXJpYWwoZ2V0TGFzdFN1Ym1p
dHRlZFF1ZXVlU2VyaWFsKCkpKTsKIAotICAgICAgICBjb25zdGV4cHIgVmtRdWVyeVJlc3VsdEZs
YWdzIHF1ZXJ5RmxhZ3MgPSBWS19RVUVSWV9SRVNVTFRfV0FJVF9CSVQgfCBWS19RVUVSWV9SRVNV
TFRfNjRfQklUOwotCiAgICAgICAgIHVpbnQ2NF90IGdwdVRpbWVzdGFtcEN5Y2xlcyA9IDA7Ci0g
ICAgICAgIEFOR0xFX1ZLX1RSWSh0aGlzLCB0aW1lc3RhbXBRdWVyeS5nZXRRdWVyeVBvb2woKS0+
Z2V0UmVzdWx0cygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UsIHRpbWVz
dGFtcFF1ZXJ5LmdldFF1ZXJ5KCksIDEsIHNpemVvZihncHVUaW1lc3RhbXBDeWNsZXMpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZncHVUaW1lc3RhbXBDeWNsZXMsIHNpemVvZihn
cHVUaW1lc3RhbXBDeWNsZXMpLCBxdWVyeUZsYWdzKSk7CisgICAgICAgIEFOR0xFX1RSWSh0aW1l
c3RhbXBRdWVyeS5nZXRVaW50NjRSZXN1bHQodGhpcywgJmdwdVRpbWVzdGFtcEN5Y2xlcykpOwog
CiAgICAgICAgIC8vIFVzZSB0aGUgZmlyc3QgdGltZXN0YW1wIHF1ZXJpZWQgYXMgb3JpZ2luLgog
ICAgICAgICBpZiAobUdwdUV2ZW50VGltZXN0YW1wT3JpZ2luID09IDApCkBAIC0xNTQ3LDI2ICsx
NzEwLDE4IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jaHJvbml6ZUNwdUdwdVRpbWUo
KQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6dHJhY2VHcHVFdmVudEltcGwodms6OlByaW1h
cnlDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgcGhhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFdmVudE5hbWUgJm5hbWUpCiB7CiAgICAgQVNT
RVJUKG1HcHVFdmVudHNFbmFibGVkKTsKIAotICAgIEdwdUV2ZW50UXVlcnkgZXZlbnQ7CisgICAg
R3B1RXZlbnRRdWVyeSBncHVFdmVudDsKKyAgICBncHVFdmVudC5uYW1lICA9IG5hbWU7CisgICAg
Z3B1RXZlbnQucGhhc2UgPSBwaGFzZTsKKyAgICBBTkdMRV9UUlkobUdwdUV2ZW50UXVlcnlQb29s
LmFsbG9jYXRlUXVlcnkodGhpcywgJmdwdUV2ZW50LnF1ZXJ5SGVscGVyKSk7CiAKLSAgICBldmVu
dC5uYW1lICAgPSBuYW1lOwotICAgIGV2ZW50LnBoYXNlICA9IHBoYXNlOwotICAgIGV2ZW50LnNl
cmlhbCA9IGdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpOwotCi0gICAgQU5HTEVfVFJZKG1HcHVFdmVu
dFF1ZXJ5UG9vbC5hbGxvY2F0ZVF1ZXJ5KHRoaXMsICZldmVudC5xdWVyeVBvb2xJbmRleCwgJmV2
ZW50LnF1ZXJ5SW5kZXgpKTsKLQotICAgIGNvbW1hbmRCdWZmZXItPnJlc2V0UXVlcnlQb29sKAot
ICAgICAgICBtR3B1RXZlbnRRdWVyeVBvb2wuZ2V0UXVlcnlQb29sKGV2ZW50LnF1ZXJ5UG9vbElu
ZGV4KS0+Z2V0SGFuZGxlKCksIGV2ZW50LnF1ZXJ5SW5kZXgsIDEpOwotICAgIGNvbW1hbmRCdWZm
ZXItPndyaXRlVGltZXN0YW1wKAotICAgICAgICBWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0Zf
UElQRV9CSVQsCi0gICAgICAgIG1HcHVFdmVudFF1ZXJ5UG9vbC5nZXRRdWVyeVBvb2woZXZlbnQu
cXVlcnlQb29sSW5kZXgpLT5nZXRIYW5kbGUoKSwgZXZlbnQucXVlcnlJbmRleCk7Ci0KLSAgICBt
SW5GbGlnaHRHcHVFdmVudFF1ZXJpZXMucHVzaF9iYWNrKHN0ZDo6bW92ZShldmVudCkpOworICAg
IGdwdUV2ZW50LnF1ZXJ5SGVscGVyLndyaXRlVGltZXN0YW1wKGNvbW1hbmRCdWZmZXIpOwogCisg
ICAgbUluRmxpZ2h0R3B1RXZlbnRRdWVyaWVzLnB1c2hfYmFjayhzdGQ6Om1vdmUoZ3B1RXZlbnQp
KTsKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAgLTE1ODQsMzEg
KzE3MzksMjkgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmNoZWNrQ29tcGxldGVkR3B1RXZl
bnRzKCkKICAgICBmb3IgKEdwdUV2ZW50UXVlcnkgJmV2ZW50UXVlcnkgOiBtSW5GbGlnaHRHcHVF
dmVudFF1ZXJpZXMpCiAgICAgewogICAgICAgICAvLyBPbmx5IGNoZWNrIHRoZSB0aW1lc3RhbXAg
cXVlcnkgaWYgdGhlIHN1Ym1pc3Npb24gaGFzIGZpbmlzaGVkLgotICAgICAgICBpZiAoZXZlbnRR
dWVyeS5zZXJpYWwgPiBsYXN0Q29tcGxldGVkU2VyaWFsKQorICAgICAgICBpZiAoZXZlbnRRdWVy
eS5xdWVyeUhlbHBlci5nZXRTdG9yZWRRdWV1ZVNlcmlhbCgpID4gbGFzdENvbXBsZXRlZFNlcmlh
bCkKICAgICAgICAgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBTZWUgaWYgdGhlIHJlc3VsdHMgYXJlIGF2YWlsYWJsZS4KICAgICAgICAgdWludDY0X3QgZ3B1
VGltZXN0YW1wQ3ljbGVzID0gMDsKLSAgICAgICAgVmtSZXN1bHQgcmVzdWx0ICAgICAgICAgICAg
ID0gbUdwdUV2ZW50UXVlcnlQb29sLmdldFF1ZXJ5UG9vbChldmVudFF1ZXJ5LnF1ZXJ5UG9vbElu
ZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRSZXN1bHRzKGdldERldmlj
ZSgpLCBldmVudFF1ZXJ5LnF1ZXJ5SW5kZXgsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdwdVRpbWVzdGFtcEN5Y2xlcyksICZncHVUaW1lc3Rh
bXBDeWNsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKGdwdVRpbWVzdGFtcEN5Y2xlcyksIFZLX1FVRVJZX1JFU1VMVF82NF9CSVQpOwotICAgICAg
ICBpZiAocmVzdWx0ID09IFZLX05PVF9SRUFEWSkKKyAgICAgICAgYm9vbCBhdmFpbGFibGUgICAg
ICAgICAgICAgID0gZmFsc2U7CisgICAgICAgIEFOR0xFX1RSWShldmVudFF1ZXJ5LnF1ZXJ5SGVs
cGVyLmdldFVpbnQ2NFJlc3VsdE5vbkJsb2NraW5nKHRoaXMsICZncHVUaW1lc3RhbXBDeWNsZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZhdmFpbGFibGUpKTsKKyAgICAgICAgaWYgKCFhdmFpbGFibGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX1ZLX1RS
WSh0aGlzLCByZXN1bHQpOwogCi0gICAgICAgIG1HcHVFdmVudFF1ZXJ5UG9vbC5mcmVlUXVlcnko
dGhpcywgZXZlbnRRdWVyeS5xdWVyeVBvb2xJbmRleCwgZXZlbnRRdWVyeS5xdWVyeUluZGV4KTsK
KyAgICAgICAgbUdwdUV2ZW50UXVlcnlQb29sLmZyZWVRdWVyeSh0aGlzLCAmZXZlbnRRdWVyeS5x
dWVyeUhlbHBlcik7CiAKLSAgICAgICAgR3B1RXZlbnQgZXZlbnQ7Ci0gICAgICAgIGV2ZW50Lmdw
dVRpbWVzdGFtcEN5Y2xlcyA9IGdwdVRpbWVzdGFtcEN5Y2xlczsKLSAgICAgICAgZXZlbnQubmFt
ZSAgICAgICAgICAgICAgID0gZXZlbnRRdWVyeS5uYW1lOwotICAgICAgICBldmVudC5waGFzZSAg
ICAgICAgICAgICAgPSBldmVudFF1ZXJ5LnBoYXNlOworICAgICAgICBHcHVFdmVudCBncHVFdmVu
dDsKKyAgICAgICAgZ3B1RXZlbnQuZ3B1VGltZXN0YW1wQ3ljbGVzID0gZ3B1VGltZXN0YW1wQ3lj
bGVzOworICAgICAgICBncHVFdmVudC5uYW1lICAgICAgICAgICAgICAgPSBldmVudFF1ZXJ5Lm5h
bWU7CisgICAgICAgIGdwdUV2ZW50LnBoYXNlICAgICAgICAgICAgICA9IGV2ZW50UXVlcnkucGhh
c2U7CiAKLSAgICAgICAgbUdwdUV2ZW50cy5lbXBsYWNlX2JhY2soZXZlbnQpOworICAgICAgICBt
R3B1RXZlbnRzLmVtcGxhY2VfYmFjayhncHVFdmVudCk7CiAKICAgICAgICAgKytmaW5pc2hlZENv
dW50OwogICAgIH0KQEAgLTE2MjEsNyArMTc3NCw3IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZr
OjpjaGVja0NvbXBsZXRlZEdwdUV2ZW50cygpCiAKIHZvaWQgQ29udGV4dFZrOjpmbHVzaEdwdUV2
ZW50cyhkb3VibGUgbmV4dFN5bmNHcHVUaW1lc3RhbXBTLCBkb3VibGUgbmV4dFN5bmNDcHVUaW1l
c3RhbXBTKQogewotICAgIGlmIChtR3B1RXZlbnRzLnNpemUoKSA9PSAwKQorICAgIGlmIChtR3B1
RXZlbnRzLmVtcHR5KCkpCiAgICAgewogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTY0Niwx
MCArMTc5OSwxMCBAQCB2b2lkIENvbnRleHRWazo6Zmx1c2hHcHVFdmVudHMoZG91YmxlIG5leHRT
eW5jR3B1VGltZXN0YW1wUywgZG91YmxlIG5leHRTeW5jQ3B1VAogICAgIGdwdVN5bmNEcmlmdFNs
b3BlID0KICAgICAgICAgKG5leHRHcHVTeW5jRGlmZlMgLSBsYXN0R3B1U3luY0RpZmZTKSAvIChu
ZXh0R3B1U3luY1RpbWVTIC0gbGFzdEdwdVN5bmNUaW1lUyk7CiAKLSAgICBmb3IgKGNvbnN0IEdw
dUV2ZW50ICZldmVudCA6IG1HcHVFdmVudHMpCisgICAgZm9yIChjb25zdCBHcHVFdmVudCAmZ3B1
RXZlbnQgOiBtR3B1RXZlbnRzKQogICAgIHsKICAgICAgICAgZG91YmxlIGdwdVRpbWVzdGFtcFMg
PQotICAgICAgICAgICAgKGV2ZW50LmdwdVRpbWVzdGFtcEN5Y2xlcyAtIG1HcHVFdmVudFRpbWVz
dGFtcE9yaWdpbikgKgorICAgICAgICAgICAgKGdwdUV2ZW50LmdwdVRpbWVzdGFtcEN5Y2xlcyAt
IG1HcHVFdmVudFRpbWVzdGFtcE9yaWdpbikgKgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91
YmxlPigKICAgICAgICAgICAgICAgICBnZXRSZW5kZXJlcigpLT5nZXRQaHlzaWNhbERldmljZVBy
b3BlcnRpZXMoKS5saW1pdHMudGltZXN0YW1wUGVyaW9kKSAqCiAgICAgICAgICAgICAxZS05OwpA
QCAtMTY2Miw4ICsxODE1LDkgQEAgdm9pZCBDb250ZXh0Vms6OmZsdXNoR3B1RXZlbnRzKGRvdWJs
ZSBuZXh0U3luY0dwdVRpbWVzdGFtcFMsIGRvdWJsZSBuZXh0U3luY0NwdVQKICAgICAgICAgc3Rh
dGljIGxvbmcgbG9uZyBldmVudElkID0gMTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmNhdGVnb3J5RW5hYmxlZCA9CiAgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfR0VU
X0NBVEVHT1JZX0VOQUJMRUQocGxhdGZvcm0sICJncHUuYW5nbGUuZ3B1Iik7Ci0gICAgICAgIHBs
YXRmb3JtLT5hZGRUcmFjZUV2ZW50KHBsYXRmb3JtLCBldmVudC5waGFzZSwgY2F0ZWdvcnlFbmFi
bGVkLCBldmVudC5uYW1lLCBldmVudElkKyssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdwdVRpbWVzdGFtcFMsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFRSQUNFX0VW
RU5UX0ZMQUdfTk9ORSk7CisgICAgICAgIHBsYXRmb3JtLT5hZGRUcmFjZUV2ZW50KHBsYXRmb3Jt
LCBncHVFdmVudC5waGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBncHVFdmVudC5uYW1lLmRhdGEoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRJZCsrLCBncHVUaW1lc3RhbXBT
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUpOwogICAgIH0KIAogICAgIG1HcHVFdmVudHMu
Y2xlYXIoKTsKQEAgLTE2ODIsMTUgKzE4MzYsOCBAQCB2b2lkIENvbnRleHRWazo6Y2xlYXJBbGxH
YXJiYWdlKCkKIAogdm9pZCBDb250ZXh0Vms6OmhhbmRsZURldmljZUxvc3QoKQogewotICAgIGlm
IChjb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewotICAgICAgICBtQ29tbWFuZEdyYXBoLmNs
ZWFyKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIG1PdXRzaWRlUmVuZGVyUGFz
c0NvbW1hbmRzLnJlc2V0KCk7Ci0gICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMucmVzZXQoKTsK
LSAgICB9CisgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMucmVzZXQoKTsKKyAgICBtUmVu
ZGVyUGFzc0NvbW1hbmRzLnJlc2V0KCk7CiAKICAgICBtQ29tbWFuZFF1ZXVlLmhhbmRsZURldmlj
ZUxvc3QobVJlbmRlcmVyKTsKICAgICBjbGVhckFsbEdhcmJhZ2UoKTsKQEAgLTE5MzksOCArMjA4
Niw4IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpkcmF3QXJyYXlzSW5kaXJlY3QoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAobVZlcnRleEFycmF5LT5nZXRTdHJlYW1p
bmdWZXJ0ZXhBdHRyaWJzTWFzaygpLmFueSgpKQogICAgIHsKLSAgICAgICAgdms6OkZyYW1lYnVm
ZmVySGVscGVyICpmcmFtZWJ1ZmZlciA9IG1EcmF3RnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVy
KCk7Ci0gICAgICAgIGN1cnJlbnRJbmRpcmVjdEJ1Zi0+b25SZWFkKHRoaXMsIGZyYW1lYnVmZmVy
LCBWS19BQ0NFU1NfSU5ESVJFQ1RfQ09NTUFORF9SRUFEX0JJVCk7CisgICAgICAgIG1SZW5kZXJQ
YXNzQ29tbWFuZHMuYnVmZmVyUmVhZCgmbVJlc291cmNlVXNlTGlzdCwgVktfQUNDRVNTX0lORElS
RUNUX0NPTU1BTkRfUkVBRF9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50SW5kaXJlY3RCdWYpOwogCiAgICAgICAgIC8vIFdlIGhhdmUgaW5zdGFuY2Vk
IHZlcnRleCBhdHRyaWJ1dGVzIHRoYXQgbmVlZCB0byBiZSBlbXVsYXRlZCBmb3IgVnVsa2FuLgog
ICAgICAgICAvLyBpbnZhbGlkYXRlIGFueSBjYWNoZSBhbmQgbWFwIHRoZSBidWZmZXIgc28gdGhh
dCB3ZSBjYW4gcmVhZCB0aGUgaW5kaXJlY3QgZGF0YS4KQEAgLTE5OTMsOCArMjE0MCw4IEBAIGFu
Z2xlOjpSZXN1bHQgQ29udGV4dFZrOjpkcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKIAogICAgIGlmIChtVmVydGV4QXJyYXktPmdldFN0cmVhbWluZ1ZlcnRl
eEF0dHJpYnNNYXNrKCkuYW55KCkpCiAgICAgewotICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxw
ZXIgKmZyYW1lYnVmZmVyID0gbURyYXdGcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZmZXIoKTsKLSAg
ICAgICAgY3VycmVudEluZGlyZWN0QnVmLT5vblJlYWQodGhpcywgZnJhbWVidWZmZXIsIFZLX0FD
Q0VTU19JTkRJUkVDVF9DT01NQU5EX1JFQURfQklUKTsKKyAgICAgICAgbVJlbmRlclBhc3NDb21t
YW5kcy5idWZmZXJSZWFkKCZtUmVzb3VyY2VVc2VMaXN0LCBWS19BQ0NFU1NfSU5ESVJFQ1RfQ09N
TUFORF9SRUFEX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRJbmRpcmVjdEJ1Zik7CiAKICAgICAgICAgLy8gV2UgaGF2ZSBpbnN0YW5jZWQgdmVydGV4
IGF0dHJpYnV0ZXMgdGhhdCBuZWVkIHRvIGJlIGVtdWxhdGVkIGZvciBWdWxrYW4uCiAgICAgICAg
IC8vIGludmFsaWRhdGUgYW55IGNhY2hlIGFuZCBtYXAgdGhlIGJ1ZmZlciBzbyB0aGF0IHdlIGNh
biByZWFkIHRoZSBpbmRpcmVjdCBkYXRhLgpAQCAtMjAxMiw3ICsyMTU5LDcgQEAgYW5nbGU6OlJl
c3VsdCBDb250ZXh0Vms6OmRyYXdFbGVtZW50c0luZGlyZWN0KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQog
Ci0gICAgaWYgKHR5cGUgPT0gZ2w6OkRyYXdFbGVtZW50c1R5cGU6OlVuc2lnbmVkQnl0ZSAmJiBt
R3JhcGhpY3NEaXJ0eUJpdHNbRElSVFlfQklUX0lOREVYX0JVRkZFUl0pCisgICAgaWYgKHNob3Vs
ZENvbnZlcnRVaW50OFZrSW5kZXhUeXBlKHR5cGUpICYmIG1HcmFwaGljc0RpcnR5Qml0c1tESVJU
WV9CSVRfSU5ERVhfQlVGRkVSXSkKICAgICB7CiAgICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgKmRz
dEluZGlyZWN0QnVmOwogICAgICAgICBWa0RldmljZVNpemUgZHN0SW5kaXJlY3RCdWZPZmZzZXQ7
CkBAIC0yMDUwLDYgKzIxOTcsMTEzIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpkcmF3RWxl
bWVudHNJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpjbGVh
cldpdGhSZW5kZXJQYXNzT3AoCisgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmY2xlYXJBcmVhLAor
ICAgIGdsOjpEcmF3QnVmZmVyTWFzayBjbGVhckNvbG9yQnVmZmVycywKKyAgICBib29sIGNsZWFy
RGVwdGgsCisgICAgYm9vbCBjbGVhclN0ZW5jaWwsCisgICAgY29uc3QgVmtDbGVhckNvbG9yVmFs
dWUgJmNsZWFyQ29sb3JWYWx1ZSwKKyAgICBjb25zdCBWa0NsZWFyRGVwdGhTdGVuY2lsVmFsdWUg
JmNsZWFyRGVwdGhTdGVuY2lsVmFsdWUpCit7CisgICAgLy8gVmFsaWRhdGUgY2FjaGUgdmFyaWFi
bGUgaXMgaW4gc3luYy4KKyAgICBBU1NFUlQobURyYXdGcmFtZWJ1ZmZlciA9PSB2azo6R2V0SW1w
bChtU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkpKTsKKworICAgIC8vIFN0YXJ0IGEgbmV3IHJl
bmRlciBwYXNzIGlmOgorICAgIC8vCisgICAgLy8gLSBubyByZW5kZXIgcGFzcyBoYXMgc3RhcnRl
ZCwKKyAgICAvLyAtIHRoZXJlIGlzIGEgcmVuZGVyIHBhc3Mgc3RhcnRlZCBidXQgaXQgY29udGFp
bnMgY29tbWFuZHM7IHdlIGNhbm5vdCBtb2RpZnkgaXRzIG9wcywgc28gbmV3CisgICAgLy8gcmVu
ZGVyIHBhc3MgaXMgbmVlZGVkLAorICAgIC8vIC0gdGhlIGN1cnJlbnQgcmVuZGVyIGFyZWEgZG9l
c24ndCBtYXRjaCB0aGUgY2xlYXIgYXJlYS4gIFdlIG5lZWQgdGhlIHJlbmRlciBhcmVhIHRvIGJl
CisgICAgLy8gZXhhY3RseSBhcyBzcGVjaWZpZWQgYnkgdGhlIHNjaXNzb3IgZm9yIHRoZSBsb2Fk
T3AgdG8gY2xlYXIgb25seSB0aGF0IGFyZWEuICBTZWUKKyAgICAvLyBDb250ZXh0Vms6OnVwZGF0
ZVNjaXNzb3IgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgaWYgKCFtUmVuZGVyUGFzc0NvbW1h
bmRzLnN0YXJ0ZWQoKSB8fAorICAgICAgICAobVJlbmRlclBhc3NDb21tYW5kcy5zdGFydGVkKCkg
JiYgIW1SZW5kZXJQYXNzQ29tbWFuZHMuZW1wdHkoKSkgfHwKKyAgICAgICAgbVJlbmRlclBhc3ND
b21tYW5kcy5nZXRSZW5kZXJBcmVhKCkgIT0gY2xlYXJBcmVhKQorICAgIHsKKyAgICAgICAgbUdy
YXBoaWNzRGlydHlCaXRzIHw9IG1OZXdHcmFwaGljc0NvbW1hbmRCdWZmZXJEaXJ0eUJpdHM7Cisg
ICAgICAgIEFOR0xFX1RSWShtRHJhd0ZyYW1lYnVmZmVyLT5zdGFydE5ld1JlbmRlclBhc3ModGhp
cywgY2xlYXJBcmVhLCAmbVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIGZsdXNoT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcygpOworICAg
IH0KKworICAgIHNpemVfdCBhdHRhY2htZW50SW5kZXhWayA9IDA7CisKKyAgICAvLyBHbyB0aHJv
dWdoIGNsZWFyQ29sb3JCdWZmZXJzIGFuZCBzZXQgdGhlIGFwcHJvcHJpYXRlIGxvYWRPcCBhbmQg
Y2xlYXIgdmFsdWVzLgorICAgIGZvciAoc2l6ZV90IGNvbG9ySW5kZXhHTCA6IG1EcmF3RnJhbWVi
dWZmZXItPmdldFN0YXRlKCkuZ2V0RW5hYmxlZERyYXdCdWZmZXJzKCkpCisgICAgeworICAgICAg
ICBpZiAoY2xlYXJDb2xvckJ1ZmZlcnMudGVzdChjb2xvckluZGV4R0wpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0ID0gbURyYXdGcmFtZWJ1ZmZl
ci0+Z2V0Q29sb3JEcmF3UmVuZGVyVGFyZ2V0KGNvbG9ySW5kZXhHTCk7CisKKyAgICAgICAgICAg
IC8vIElmIHRoZSByZW5kZXIgdGFyZ2V0IGRvZXNuJ3QgaGF2ZSBhbHBoYSwgYnV0IGl0cyBlbXVs
YXRlZCBmb3JtYXQgaGFzIGl0LCBjbGVhciB0aGUKKyAgICAgICAgICAgIC8vIGFscGhhIHRvIDEu
CisgICAgICAgICAgICBWa0NsZWFyQ29sb3JWYWx1ZSB2YWx1ZSA9IGNsZWFyQ29sb3JWYWx1ZTsK
KyAgICAgICAgICAgIGlmIChtRHJhd0ZyYW1lYnVmZmVyLT5nZXRFbXVsYXRlZEFscGhhQXR0YWNo
bWVudE1hc2soKVtjb2xvckluZGV4R0xdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnN0IHZrOjpGb3JtYXQgJmZvcm1hdCA9IHJlbmRlclRhcmdldC0+Z2V0SW1hZ2VGb3JtYXQo
KTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0LnZrRm9ybWF0SXNJbnQpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0LnZrRm9ybWF0SXNVbnNpZ25l
ZCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUu
dWludDMyWzNdID0ga0VtdWxhdGVkQWxwaGFWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLmludDMyWzNdID0ga0VtdWxhdGVkQWxwaGFWYWx1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mbG9hdDMy
WzNdID0ga0VtdWxhdGVkQWxwaGFWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuY2xlYXJSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRleFZrLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAg
ICAgKythdHRhY2htZW50SW5kZXhWazsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGFwcHJvcHJp
YXRlIGxvYWRPcCBhbmQgY2xlYXIgdmFsdWVzIGZvciBkZXB0aCBhbmQgc3RlbmNpbC4KKyAgICBS
ZW5kZXJUYXJnZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gbURyYXdGcmFtZWJ1ZmZl
ci0+Z2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCk7CisgICAgaWYgKGRlcHRoU3RlbmNpbFJl
bmRlclRhcmdldCkKKyAgICB7CisgICAgICAgIGNvbnN0IHZrOjpGb3JtYXQgJmZvcm1hdCA9IGRl
cHRoU3RlbmNpbFJlbmRlclRhcmdldC0+Z2V0SW1hZ2VGb3JtYXQoKTsKKyAgICAgICAgaWYgKGZv
cm1hdC5oYXNFbXVsYXRlZEltYWdlQ2hhbm5lbHMoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGZvcm1hdC5pbnRlbmRlZEZvcm1hdCgpLnN0ZW5jaWxCaXRzID09IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZvcm1hdCB3ZSBwaWNrZWQgaGFzIHN0ZW5j
aWwgYnV0IHVzZXIgZGlkIG5vdCBhc2sgZm9yCisgICAgICAgICAgICAgICAgLy8gaXQgZHVlIHRv
IGhhcmR3YXJlIGxpbWl0YXRpb24sIGZvcmNlIGNsZWFyIHRoZSBzdGVuY2lsIHNvCisgICAgICAg
ICAgICAgICAgLy8gdGhhdCBubyBsb2FkIHdpbGwgaGFwcGVuLiBBbHNvIGRvbid0IHRyeSB0byBz
dG9yZSBzdGVuY2lsCisgICAgICAgICAgICAgICAgLy8gdmFsdWUgYXMgd2VsbC4gU2FtZSBsb2dp
YyBmb3IgZGVwdGggYml0cyBiZWxsb3cuCisgICAgICAgICAgICAgICAgbVJlbmRlclBhc3NDb21t
YW5kcy5pbnZhbGlkYXRlUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRl
eFZrKTsKKyAgICAgICAgICAgICAgICBjbGVhclN0ZW5jaWwgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGZvcm1hdC5pbnRlbmRlZEZvcm1hdCgpLmRlcHRoQml0cyA9PSAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuaW52
YWxpZGF0ZVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnQoYXR0YWNobWVudEluZGV4VmspOworICAg
ICAgICAgICAgICAgIGNsZWFyRGVwdGggPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaWYgKGNsZWFyRGVwdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1SZW5k
ZXJQYXNzQ29tbWFuZHMuY2xlYXJSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50KGF0dGFjaG1lbnRJ
bmRleFZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJEZXB0aFN0ZW5jaWxWYWx1ZS5kZXB0aCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoY2xlYXJTdGVuY2lsKQorICAgICAgICB7CisgICAgICAgICAgICBtUmVu
ZGVyUGFzc0NvbW1hbmRzLmNsZWFyUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KGF0dGFjaG1l
bnRJbmRleFZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhckRlcHRoU3RlbmNpbFZhbHVlLnN0ZW5jaWwpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQor
CiBnbDo6R3JhcGhpY3NSZXNldFN0YXR1cyBDb250ZXh0Vms6OmdldFJlc2V0U3RhdHVzKCkKIHsK
ICAgICBpZiAobVJlbmRlcmVyLT5pc0RldmljZUxvc3QoKSkKQEAgLTIwNzQsNzEgKzIzMjgsNzYg
QEAgc3RkOjpzdHJpbmcgQ29udGV4dFZrOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRSZW5kZXJlckRlc2NyaXB0aW9uKCk7CiB9CiAKLXZv
aWQgQ29udGV4dFZrOjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKQorYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6Omluc2VydEV2ZW50TWFya2VyKEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7Ci0gICAgaWYgKGNvbW1hbmRHcmFw
aEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG1hcmtlclN0cihtYXJrZXIs
IGxlbmd0aCA8PSAwID8gc3RybGVuKG1hcmtlcikgOiBsZW5ndGgpOwotICAgICAgICBtQ29tbWFu
ZEdyYXBoLmluc2VydERlYnVnTWFya2VyKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgc3Rk
Ojptb3ZlKG1hcmtlcikpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBUT0RP
KGptYWRpbGwpOiBodHRwOi8vYW5nbGVidWcuY29tLzQwMjkKLSAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIH0KKyAgICBpZiAoIW1SZW5kZXJlci0+ZW5hYmxlRGVidWdVdGlscygpKQorICAg
ICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisKKyAgICB2azo6UHJpbWFyeUNv
bW1hbmRCdWZmZXIgKnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGZsdXNoQW5kR2V0UHJpbWFyeUNv
bW1hbmRCdWZmZXIoJnByaW1hcnkpKTsKKworICAgIFZrRGVidWdVdGlsc0xhYmVsRVhUIGxhYmVs
OworICAgIHZrOjpNYWtlRGVidWdVdGlsc0xhYmVsKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElP
TiwgbWFya2VyLCAmbGFiZWwpOworICAgIHByaW1hcnktPmluc2VydERlYnVnVXRpbHNMYWJlbEVY
VChsYWJlbCk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZv
aWQgQ29udGV4dFZrOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXpl
aSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKIHsKLSAgICBpZiAoY29tbWFuZEdyYXBoRW5h
YmxlZCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbWFya2VyU3RyKG1hcmtlciwgbGVu
Z3RoIDw9IDAgPyBzdHJsZW4obWFya2VyKSA6IGxlbmd0aCk7Ci0gICAgICAgIG1Db21tYW5kR3Jh
cGgucHVzaERlYnVnTWFya2VyKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgc3RkOjptb3Zl
KG1hcmtlcikpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRp
bGwpOiBodHRwOi8vYW5nbGVidWcuY29tLzQwMjkKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIH0KKyAgICBpZiAoIW1SZW5kZXJlci0+ZW5hYmxlRGVidWdVdGlscygpKQorICAgICAgICBy
ZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisKKyAgICB2azo6UHJpbWFyeUNvbW1hbmRC
dWZmZXIgKnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGZsdXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRC
dWZmZXIoJnByaW1hcnkpKTsKKworICAgIFZrRGVidWdVdGlsc0xhYmVsRVhUIGxhYmVsOworICAg
IHZrOjpNYWtlRGVidWdVdGlsc0xhYmVsKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgbWFy
a2VyLCAmbGFiZWwpOworICAgIHByaW1hcnktPmJlZ2luRGVidWdVdGlsc0xhYmVsRVhUKGxhYmVs
KTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBDb250
ZXh0Vms6OnBvcEdyb3VwTWFya2VyKCkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpwb3BHcm91
cE1hcmtlcigpCiB7Ci0gICAgaWYgKGNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAg
ICAgIG1Db21tYW5kR3JhcGgucG9wRGVidWdNYXJrZXIoKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogaHR0cDovL2FuZ2xlYnVnLmNvbS80MDI5Ci0g
ICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9CisgICAgaWYgKCFtUmVuZGVyZXItPmVuYWJs
ZURlYnVnVXRpbHMoKSkKKyAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwor
CisgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5OworICAgIEFOR0xFX1RSWShm
bHVzaEFuZEdldFByaW1hcnlDb21tYW5kQnVmZmVyKCZwcmltYXJ5KSk7CisgICAgcHJpbWFyeS0+
ZW5kRGVidWdVdGlsc0xhYmVsRVhUKCk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29u
dGludWU7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpwdXNoRGVidWdHcm91cChHTGVudW0gc291cmNl
LCBHTHVpbnQgaWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdlKQorYW5nbGU6OlJlc3VsdCBD
b250ZXh0Vms6OnB1c2hEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZXNzYWdl
KQogewotICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewotICAgICAgICBtQ29t
bWFuZEdyYXBoLmluc2VydERlYnVnTWFya2VyKHNvdXJjZSwgc3RkOjpzdHJpbmcobWVzc2FnZSkp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBodHRw
Oi8vYW5nbGVidWcuY29tLzQwMjkKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KKyAg
ICBpZiAoIW1SZW5kZXJlci0+ZW5hYmxlRGVidWdVdGlscygpKQorICAgICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CisKKyAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgKnBy
aW1hcnk7CisgICAgQU5HTEVfVFJZKGZsdXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRCdWZmZXIoJnBy
aW1hcnkpKTsKKworICAgIFZrRGVidWdVdGlsc0xhYmVsRVhUIGxhYmVsOworICAgIHZrOjpNYWtl
RGVidWdVdGlsc0xhYmVsKHNvdXJjZSwgbWVzc2FnZS5jX3N0cigpLCAmbGFiZWwpOworICAgIHBy
aW1hcnktPmluc2VydERlYnVnVXRpbHNMYWJlbEVYVChsYWJlbCk7CisKKyAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpwb3BEZWJ1Z0dyb3Vw
KCkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KQogewotICAgIGlmIChjb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewot
ICAgICAgICBtQ29tbWFuZEdyYXBoLnBvcERlYnVnTWFya2VyKCk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDAy
OQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIGlmICghbVJlbmRlcmVyLT5l
bmFibGVEZWJ1Z1V0aWxzKCkpCisgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51
ZTsKKworICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeTsKKyAgICBBTkdMRV9U
UlkoZmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigmcHJpbWFyeSkpOworICAgIHByaW1h
cnktPmVuZERlYnVnVXRpbHNMYWJlbEVYVCgpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOwogfQogCiBib29sIENvbnRleHRWazo6aXNWaWV3cG9ydEZsaXBFbmFibGVkRm9y
RHJhd0ZCTygpIGNvbnN0CkBAIC0yMTUxLDYgKzI0MTAsMTUgQEAgYm9vbCBDb250ZXh0Vms6Omlz
Vmlld3BvcnRGbGlwRW5hYmxlZEZvclJlYWRGQk8oKSBjb25zdAogICAgIHJldHVybiBtRmxpcFZp
ZXdwb3J0Rm9yUmVhZEZyYW1lYnVmZmVyOwogfQogCitib29sIENvbnRleHRWazo6aXNSb3RhdGVk
QXNwZWN0UmF0aW9Gb3JEcmF3RkJPKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSXNSb3RhdGVkQXNw
ZWN0UmF0aW8obUN1cnJlbnRSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlcik7Cit9Citib29sIENvbnRl
eHRWazo6aXNSb3RhdGVkQXNwZWN0UmF0aW9Gb3JSZWFkRkJPKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gSXNSb3RhdGVkQXNwZWN0UmF0aW8obUN1cnJlbnRSb3RhdGlvblJlYWRGcmFtZWJ1ZmZlcik7
Cit9CisKIHZvaWQgQ29udGV4dFZrOjp1cGRhdGVDb2xvck1hc2soY29uc3QgZ2w6OkJsZW5kU3Rh
dGUgJmJsZW5kU3RhdGUpCiB7CiAgICAgbUNsZWFyQ29sb3JNYXNrID0KQEAgLTIyMTgsMTEgKzI0
ODYsMjEgQEAgdm9pZCBDb250ZXh0Vms6OnVwZGF0ZVZpZXdwb3J0KEZyYW1lYnVmZmVyVmsgKmZy
YW1lYnVmZmVyVmssCiAgICAgICAgIGNvcnJlY3RlZEhlaWdodCA9IHZpZXdwb3J0Qm91bmRzUmFu
Z2VIaWdoIC0gY29ycmVjdGVkWTsKICAgICB9CiAKKyAgICBnbDo6Qm94IGZyYW1lYnVmZmVyRGlt
ZW5zaW9ucyA9IGZyYW1lYnVmZmVyVmstPmdldFN0YXRlKCkuZ2V0RGltZW5zaW9ucygpOworICAg
IGlmIChpc1JvdGF0ZWRBc3BlY3RSYXRpb0ZvckRyYXdGQk8oKSkKKyAgICB7CisgICAgICAgIC8v
IFRoZSBzdXJmYWNlIGlzIHJvdGF0ZWQgOTAvMjcwIGRlZ3JlZXMuICBUaGlzIGNoYW5nZXMgdGhl
IGFzcGVjdCByYXRpbyBvZiB0aGUgc3VyZmFjZS4KKyAgICAgICAgLy8gU3dhcCB0aGUgd2lkdGgg
YW5kIGhlaWdodCBvZiB0aGUgdmlld3BvcnQgd2UgY2FsY3VsYXRlLCBhbmQgdGhlIGZyYW1lYnVm
ZmVyIGhlaWdodCB0aGF0CisgICAgICAgIC8vIHdlIHVzZSB0byBjYWxjdWxhdGUgaXQgd2l0aC4K
KyAgICAgICAgLy8gVE9ETyhpYW5lbGxpb3R0KTogaGFuZGxlIHNtYWxsIHZpZXdwb3J0L3NjaXNz
b3IgY2FzZXMuICBodHRwOi8vYW5nbGVidWcuY29tLzQ0MzEKKyAgICAgICAgc3RkOjpzd2FwKGNv
cnJlY3RlZFdpZHRoLCBjb3JyZWN0ZWRIZWlnaHQpOworICAgICAgICBzdGQ6OnN3YXAoZnJhbWVi
dWZmZXJEaW1lbnNpb25zLndpZHRoLCBmcmFtZWJ1ZmZlckRpbWVuc2lvbnMuaGVpZ2h0KTsKKyAg
ICB9CiAgICAgZ2w6OlJlY3RhbmdsZSBjb3JyZWN0ZWRSZWN0ID0KICAgICAgICAgZ2w6OlJlY3Rh
bmdsZShjb3JyZWN0ZWRYLCBjb3JyZWN0ZWRZLCBjb3JyZWN0ZWRXaWR0aCwgY29ycmVjdGVkSGVp
Z2h0KTsKIAogICAgIGdsX3ZrOjpHZXRWaWV3cG9ydChjb3JyZWN0ZWRSZWN0LCBuZWFyUGxhbmUs
IGZhclBsYW5lLCBpbnZlcnRWaWV3cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVi
dWZmZXJWay0+Z2V0U3RhdGUoKS5nZXREaW1lbnNpb25zKCkuaGVpZ2h0LCAmdmtWaWV3cG9ydCk7
CisgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyRGltZW5zaW9ucy5oZWlnaHQsICZ2
a1ZpZXdwb3J0KTsKICAgICBtR3JhcGhpY3NQaXBlbGluZURlc2MtPnVwZGF0ZVZpZXdwb3J0KCZt
R3JhcGhpY3NQaXBlbGluZVRyYW5zaXRpb24sIHZrVmlld3BvcnQpOwogICAgIGludmFsaWRhdGVH
cmFwaGljc0RyaXZlclVuaWZvcm1zKCk7CiB9CkBAIC0yMjMzLDcgKzI1MTEsNyBAQCB2b2lkIENv
bnRleHRWazo6dXBkYXRlRGVwdGhSYW5nZShmbG9hdCBuZWFyUGxhbmUsIGZsb2F0IGZhclBsYW5l
KQogICAgIG1HcmFwaGljc1BpcGVsaW5lRGVzYy0+dXBkYXRlRGVwdGhSYW5nZSgmbUdyYXBoaWNz
UGlwZWxpbmVUcmFuc2l0aW9uLCBuZWFyUGxhbmUsIGZhclBsYW5lKTsKIH0KIAotdm9pZCBDb250
ZXh0Vms6OnVwZGF0ZVNjaXNzb3IoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKQorYW5nbGU6OlJl
c3VsdCBDb250ZXh0Vms6OnVwZGF0ZVNjaXNzb3IoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKQog
ewogICAgIEZyYW1lYnVmZmVyVmsgKmZyYW1lYnVmZmVyVmsgPSB2azo6R2V0SW1wbChnbFN0YXRl
LmdldERyYXdGcmFtZWJ1ZmZlcigpKTsKICAgICBnbDo6UmVjdGFuZ2xlIHJlbmRlckFyZWEgICAg
ID0gZnJhbWVidWZmZXJWay0+Z2V0Q29tcGxldGVSZW5kZXJBcmVhKCk7CkBAIC0yMjQ3LDIxICsy
NTI1LDQ4IEBAIHZvaWQgQ29udGV4dFZrOjp1cGRhdGVTY2lzc29yKGNvbnN0IGdsOjpTdGF0ZSAm
Z2xTdGF0ZSkKICAgICB7CiAgICAgICAgIHNjaXNzb3JlZEFyZWEueSA9IHJlbmRlckFyZWEuaGVp
Z2h0IC0gc2Npc3NvcmVkQXJlYS55IC0gc2Npc3NvcmVkQXJlYS5oZWlnaHQ7CiAgICAgfQorICAg
IGlmIChpc1JvdGF0ZWRBc3BlY3RSYXRpb0ZvckRyYXdGQk8oKSkKKyAgICB7CisgICAgICAgIC8v
IFRoZSBzdXJmYWNlIGlzIHJvdGF0ZWQgOTAvMjcwIGRlZ3JlZXMuICBUaGlzIGNoYW5nZXMgdGhl
IGFzcGVjdCByYXRpbyBvZiB0aGUgc3VyZmFjZS4KKyAgICAgICAgLy8gU3dhcCB0aGUgd2lkdGgg
YW5kIGhlaWdodCBvZiB0aGUgc2Npc3NvciB3ZSB1c2UuCisgICAgICAgIC8vIFRPRE8oaWFuZWxs
aW90dCk6IGhhbmRsZSBzbWFsbCB2aWV3cG9ydC9zY2lzc29yIGNhc2VzLiAgaHR0cDovL2FuZ2xl
YnVnLmNvbS80NDMxCisgICAgICAgIHN0ZDo6c3dhcChzY2lzc29yZWRBcmVhLndpZHRoLCBzY2lz
c29yZWRBcmVhLmhlaWdodCk7CisgICAgfQogCiAgICAgbUdyYXBoaWNzUGlwZWxpbmVEZXNjLT51
cGRhdGVTY2lzc29yKCZtR3JhcGhpY3NQaXBlbGluZVRyYW5zaXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX3ZrOjpHZXRSZWN0KHNjaXNzb3JlZEFyZWEp
KTsKIAotICAgIGZyYW1lYnVmZmVyVmstPm9uU2Npc3NvckNoYW5nZSh0aGlzKTsKKyAgICAvLyBJ
ZiB0aGUgc2Npc3NvciBoYXMgZ3Jvd24gYmV5b25kIHRoZSBwcmV2aW91cyBzY2lzc29yZWRSZW5k
ZXJBcmVhLCBtYWtlIHN1cmUgdGhlIHJlbmRlciBwYXNzCisgICAgLy8gaXMgcmVzdGFydGVkLiAg
T3RoZXJ3aXNlLCB3ZSBjYW4gY29udGludWUgdXNpbmcgdGhlIHNhbWUgcmVuZGVycGFzcyBhcmVh
LgorICAgIC8vCisgICAgLy8gV2l0aG91dCBhIHNjaXNzb3IsIHRoZSByZW5kZXIgcGFzcyBhcmVh
IGNvdmVycyB0aGUgd2hvbGUgb2YgdGhlIGZyYW1lYnVmZmVyLiAgV2l0aCBhCisgICAgLy8gc2Np
c3NvcmVkIGNsZWFyLCB0aGUgcmVuZGVyIHBhc3MgYXJlYSBjb3VsZCBiZSBzbWFsbGVyIHRoYW4g
dGhlIGZyYW1lYnVmZmVyIHNpemUuICBXaGVuIHRoZQorICAgIC8vIHNjaXNzb3IgY2hhbmdlcywg
aWYgdGhlIHNjaXNzb3IgYXJlYSBpcyBjb21wbGV0ZWx5IGVuY29tcGFzc2VkIGJ5IHRoZSByZW5k
ZXIgcGFzcyBhcmVhLCBpdCdzCisgICAgLy8gcG9zc2libGUgdG8gY29udGludWUgdXNpbmcgdGhl
IHNhbWUgcmVuZGVyIHBhc3MuICBIb3dldmVyLCBpZiB0aGUgY3VycmVudCByZW5kZXIgcGFzcyBh
cmVhCisgICAgLy8gaXMgdG9vIHNtYWxsLCB3ZSBuZWVkIHRvIHN0YXJ0IGEgbmV3IG9uZS4gIFRo
ZSBsYXR0ZXIgY2FuIGhhcHBlbiBpZiBhIHNjaXNzb3JlZCBjbGVhciBzdGFydHMKKyAgICAvLyBh
IHJlbmRlciBwYXNzLCB0aGUgc2Npc3NvciBpcyBkaXNhYmxlZCBhbmQgYSBkcmF3IGNhbGwgaXMg
aXNzdWVkIHRvIGFmZmVjdCB0aGUgd2hvbGUKKyAgICAvLyBmcmFtZWJ1ZmZlci4KKyAgICBnbDo6
UmVjdGFuZ2xlIHNjaXNzb3JlZFJlbmRlckFyZWEgPSBmcmFtZWJ1ZmZlclZrLT5nZXRTY2lzc29y
ZWRSZW5kZXJBcmVhKHRoaXMpOworICAgIGlmICghbVJlbmRlclBhc3NDb21tYW5kcy5lbXB0eSgp
KQorICAgIHsKKyAgICAgICAgaWYgKCFtUmVuZGVyUGFzc0NvbW1hbmRzLmdldFJlbmRlckFyZWEo
KS5lbmNsb3NlcyhzY2lzc29yZWRSZW5kZXJBcmVhKSkKKyAgICAgICAgeworICAgICAgICAgICAg
QU5HTEVfVFJZKGVuZFJlbmRlclBhc3MoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZr
OjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTdGF0ZTo6RGly
dHlCaXRzICZiaXRNYXNrKQogewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRl
eHQtPmdldFN0YXRlKCk7CisgICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlICAgICAgICAgICAg
ICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7CisgICAgY29uc3QgZ2w6OlByb2dyYW1F
eGVjdXRhYmxlICpwcm9ncmFtRXhlY3V0YWJsZSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFi
bGUoKTsKIAogICAgIGlmICgoZGlydHlCaXRzICYgbVBpcGVsaW5lRGlydHlCaXRzTWFzaykuYW55
KCkgJiYKLSAgICAgICAgKGdsU3RhdGUuZ2V0UHJvZ3JhbSgpID09IG51bGxwdHIgfHwgIWdsU3Rh
dGUuZ2V0UHJvZ3JhbSgpLT5pc0NvbXB1dGUoKSkpCisgICAgICAgIChwcm9ncmFtRXhlY3V0YWJs
ZSA9PSBudWxscHRyIHx8ICFwcm9ncmFtRXhlY3V0YWJsZS0+aXNDb21wdXRlKCkpKQogICAgIHsK
ICAgICAgICAgaW52YWxpZGF0ZUN1cnJlbnRHcmFwaGljc1BpcGVsaW5lKCk7CiAgICAgfQpAQCAt
MjI3Myw3ICsyNTc4LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5bmNTdGF0ZShjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBnbDo6
U3RhdGU6OkRJUlRZX0JJVF9TQ0lTU09SX1RFU1RfRU5BQkxFRDoKICAgICAgICAgICAgIGNhc2Ug
Z2w6OlN0YXRlOjpESVJUWV9CSVRfU0NJU1NPUjoKLSAgICAgICAgICAgICAgICB1cGRhdGVTY2lz
c29yKGdsU3RhdGUpOworICAgICAgICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVTY2lzc29yKGds
U3RhdGUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0
YXRlOjpESVJUWV9CSVRfVklFV1BPUlQ6CiAgICAgICAgICAgICB7CkBAIC0yMjgxLDcgKzI1ODYs
NyBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0KGZyYW1lYnVmZmVyVmss
IGdsU3RhdGUuZ2V0Vmlld3BvcnQoKSwgZ2xTdGF0ZS5nZXROZWFyUGxhbmUoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbFN0YXRlLmdldEZhclBsYW5lKCksIGlzVmlld3BvcnRG
bGlwRW5hYmxlZEZvckRyYXdGQk8oKSk7CiAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBz
Y2lzc29yLCB3aGljaCB3aWxsIGJlIGNvbnN0cmFpbmVkIHRvIHRoZSB2aWV3cG9ydAotICAgICAg
ICAgICAgICAgIHVwZGF0ZVNjaXNzb3IoZ2xTdGF0ZSk7CisgICAgICAgICAgICAgICAgQU5HTEVf
VFJZKHVwZGF0ZVNjaXNzb3IoZ2xTdGF0ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9ERVBUSF9S
QU5HRToKQEAgLTI0MzMsMjAgKzI3MzgsMjEgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5
bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUkVBRF9GUkFNRUJVRkZF
Ul9CSU5ESU5HOgogICAgICAgICAgICAgICAgIHVwZGF0ZUZsaXBWaWV3cG9ydFJlYWRGcmFtZWJ1
ZmZlcihjb250ZXh0LT5nZXRTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVTdXJmYWNl
Um90YXRpb25SZWFkRnJhbWVidWZmZXIoZ2xTdGF0ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0RSQVdfRlJBTUVCVUZGRVJf
QklORElORzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBGcmFtZWJ1ZmZlclZr
OjpzeW5jU3RhdGUgc2lnbmFscyB0aGF0IHdlIHNob3VsZCBzdGFydCBhIG5ldyBjb21tYW5kIGJ1
ZmZlci4KICAgICAgICAgICAgICAgICAvLyBCdXQgY2hhbmdpbmcgdGhlIGJpbmRpbmcgY2FuIHNr
aXAgRnJhbWVidWZmZXJWazo6c3luY1N0YXRlIGlmIHRoZSBGcmFtZWJ1ZmZlcgogICAgICAgICAg
ICAgICAgIC8vIGhhcyBubyBkaXJ0eSBiaXRzLiBUaHVzIHdlIG5lZWQgdG8gZXhwbGljaXRseSBj
bGVhciB0aGUgY3VycmVudCBjb21tYW5kCi0gICAgICAgICAgICAgICAgLy8gYnVmZmVyIHRvIGVu
c3VyZSB3ZSBzdGFydCBhIG5ldyBvbmUuIE5vdGUgdGhhdCB3ZSBuZWVkIGEgbmV3IGNvbW1hbmQg
YnVmZmVyCi0gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBhIGNvbW1hbmQgZ3JhcGggbm9kZSBj
YW4gb25seSBzdXBwb3J0IG9uZSBSZW5kZXJQYXNzIGNvbmZpZ3VyYXRpb24gYXQKLSAgICAgICAg
ICAgICAgICAvLyBhIHRpbWUuCisgICAgICAgICAgICAgICAgLy8gYnVmZmVyIHRvIGVuc3VyZSB3
ZSBzdGFydCBhIG5ldyBvbmUuIE5vdGUgdGhhdCB3ZSBhbHdheXMgc3RhcnQgYSBuZXcgY29tbWFu
ZAorICAgICAgICAgICAgICAgIC8vIGJ1ZmZlciBiZWNhdXNlIHdlIGN1cnJlbnRseSBjYW4gb25s
eSBzdXBwb3J0IG9uZSBvcGVuIFJlbmRlclBhc3MgYXQgYSB0aW1lLgogICAgICAgICAgICAgICAg
IG9uUmVuZGVyUGFzc0ZpbmlzaGVkKCk7CiAKICAgICAgICAgICAgICAgICBnbDo6RnJhbWVidWZm
ZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAg
ICAgICAgICAgICAgbURyYXdGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgPSB2azo6R2V0SW1w
bChkcmF3RnJhbWVidWZmZXIpOwogICAgICAgICAgICAgICAgIHVwZGF0ZUZsaXBWaWV3cG9ydERy
YXdGcmFtZWJ1ZmZlcihnbFN0YXRlKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVTdXJmYWNlUm90
YXRpb25EcmF3RnJhbWVidWZmZXIoZ2xTdGF0ZSk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVmll
d3BvcnQobURyYXdGcmFtZWJ1ZmZlciwgZ2xTdGF0ZS5nZXRWaWV3cG9ydCgpLCBnbFN0YXRlLmdl
dE5lYXJQbGFuZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3RhdGUuZ2V0
RmFyUGxhbmUoKSwgaXNWaWV3cG9ydEZsaXBFbmFibGVkRm9yRHJhd0ZCTygpKTsKICAgICAgICAg
ICAgICAgICB1cGRhdGVDb2xvck1hc2soZ2xTdGF0ZS5nZXRCbGVuZFN0YXRlKCkpOwpAQCAtMjQ1
Niw3ICsyNzYyLDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5bmNTdGF0ZShjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBtR3JhcGhpY3NQaXBlbGluZURl
c2MtPnVwZGF0ZUZyb250RmFjZSgmbUdyYXBoaWNzUGlwZWxpbmVUcmFuc2l0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3RhdGUu
Z2V0UmFzdGVyaXplclN0YXRlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaXNWaWV3cG9ydEZsaXBFbmFibGVkRm9yRHJhd0ZCTygpKTsK
LSAgICAgICAgICAgICAgICB1cGRhdGVTY2lzc29yKGdsU3RhdGUpOworICAgICAgICAgICAgICAg
IEFOR0xFX1RSWSh1cGRhdGVTY2lzc29yKGdsU3RhdGUpKTsKICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgZGVwdGhTdGVuY2lsU3RhdGUgPSBnbFN0YXRlLmdldERl
cHRoU3RlbmNpbFN0YXRlKCk7CiAgICAgICAgICAgICAgICAgbUdyYXBoaWNzUGlwZWxpbmVEZXNj
LT51cGRhdGVEZXB0aFRlc3RFbmFibGVkKCZtR3JhcGhpY3NQaXBlbGluZVRyYW5zaXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlcHRoU3RlbmNpbFN0YXRlLCBkcmF3RnJhbWVidWZmZXIpOwpAQCAtMjQ4NywxNiArMjc5
MywxOCBAQCBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9ESVNQ
QVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORzoKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUFJPR1JBTV9CSU5ESU5HOgotICAg
ICAgICAgICAgICAgIG1Qcm9ncmFtID0gdms6OkdldEltcGwoZ2xTdGF0ZS5nZXRQcm9ncmFtKCkp
OworICAgICAgICAgICAgICAgIG1Qcm9ncmFtICAgID0gdms6OkdldEltcGwoZ2xTdGF0ZS5nZXRQ
cm9ncmFtKCkpOworICAgICAgICAgICAgICAgIG1FeGVjdXRhYmxlID0gJm1Qcm9ncmFtLT5nZXRF
eGVjdXRhYmxlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX1BST0dSQU1fRVhFQ1VUQUJMRToKICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQocHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAg
IGludmFsaWRhdGVDdXJyZW50RGVmYXVsdFVuaWZvcm1zKCk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGdsOjpTdGF0ZTo6RElSVFlfQklUX1RFWFRVUkVfQklORElOR1MgPgogICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QUk9HUkFNX0VYRUNVVEFCTEUpOwogICAg
ICAgICAgICAgICAgIGl0ZXIuc2V0TGF0ZXJCaXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVEVYVFVS
RV9CSU5ESU5HUyk7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZUN1cnJlbnRTaGFkZXJSZXNv
dXJjZXMoKTsKLSAgICAgICAgICAgICAgICBpZiAoZ2xTdGF0ZS5nZXRQcm9ncmFtKCktPmlzQ29t
cHV0ZSgpKQorICAgICAgICAgICAgICAgIGlmIChwcm9ncmFtRXhlY3V0YWJsZS0+aXNDb21wdXRl
KCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlQ3Vy
cmVudENvbXB1dGVQaXBlbGluZSgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1MDcsNyArMjgx
NSw5IEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVEZWZhdWx0QXR0cmli
dXRlcygKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5n
ZXRBY3RpdmVEZWZhdWx0QXR0cmlic01hc2soKSk7CiAgICAgICAgICAgICAgICAgICAgIGludmFs
aWRhdGVWZXJ0ZXhBbmRJbmRleEJ1ZmZlcnMoKTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCB1
c2VWZXJ0ZXhCdWZmZXIgPSAobVByb2dyYW0tPmdldFN0YXRlKCkuZ2V0TWF4QWN0aXZlQXR0cmli
TG9jYXRpb24oKSA+IDApOworICAgICAgICAgICAgICAgICAgICBib29sIHVzZVZlcnRleEJ1ZmZl
ciA9CisgICAgICAgICAgICAgICAgICAgICAgICAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRQcm9n
cmFtRXhlY3V0YWJsZSgpLT5nZXRNYXhBY3RpdmVBdHRyaWJMb2NhdGlvbigpID4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAwKTsKICAgICAgICAgICAgICAgICAgICAgbU5vbkluZGV4ZWREaXJ0
eUJpdHNNYXNrLnNldChESVJUWV9CSVRfVkVSVEVYX0JVRkZFUlMsIHVzZVZlcnRleEJ1ZmZlcik7
CiAgICAgICAgICAgICAgICAgICAgIG1JbmRleGVkRGlydHlCaXRzTWFzay5zZXQoRElSVFlfQklU
X1ZFUlRFWF9CVUZGRVJTLCB1c2VWZXJ0ZXhCdWZmZXIpOwogICAgICAgICAgICAgICAgICAgICBt
Q3VycmVudEdyYXBoaWNzUGlwZWxpbmUgPSBudWxscHRyOwpAQCAtMjU1NSw4ICsyODY1LDYgQEAg
YW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRl
OjpESVJUWV9CSVRfQ09WRVJBR0VfTU9EVUxBVElPTjoKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkc6Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlf
QklUX0ZSQU1FQlVGRkVSX1NSR0I6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NVUlJFTlRfVkFMVUVTOgpAQCAtMjU5Niw3ICsy
OTA0LDYgQEAgR0xpbnQ2NCBDb250ZXh0Vms6OmdldFRpbWVzdGFtcCgpCiBhbmdsZTo6UmVzdWx0
IENvbnRleHRWazo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsK
ICAgICBtUmVuZGVyZXItPnJlbG9hZFZvbGtJZk5lZWRlZCgpOwotICAgIEFTU0VSVChtQ29tbWFu
ZEdyYXBoLmVtcHR5KCkpOwogCiAgICAgLy8gRmxpcCB2aWV3cG9ydHMgaWYgRmVhdHVyZXNWazo6
ZmxpcFZpZXdwb3J0WSBpcyBlbmFibGVkIGFuZCB0aGUgdXNlciBkaWQgbm90IHJlcXVlc3QgdGhh
dAogICAgIC8vIHRoZSBzdXJmYWNlIGlzIGZsaXBwZWQuCkBAIC0yNjE3LDYgKzI5MjQsOCBAQCBh
bmdsZTo6UmVzdWx0IENvbnRleHRWazo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCkKICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0
ZSgpOwogICAgIHVwZGF0ZUZsaXBWaWV3cG9ydERyYXdGcmFtZWJ1ZmZlcihnbFN0YXRlKTsKICAg
ICB1cGRhdGVGbGlwVmlld3BvcnRSZWFkRnJhbWVidWZmZXIoZ2xTdGF0ZSk7CisgICAgdXBkYXRl
U3VyZmFjZVJvdGF0aW9uRHJhd0ZyYW1lYnVmZmVyKGdsU3RhdGUpOworICAgIHVwZGF0ZVN1cmZh
Y2VSb3RhdGlvblJlYWRGcmFtZWJ1ZmZlcihnbFN0YXRlKTsKICAgICBpbnZhbGlkYXRlRHJpdmVy
VW5pZm9ybXMoKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKQEAgLTI2
NDMsNiArMjk1MiwyMCBAQCB2b2lkIENvbnRleHRWazo6dXBkYXRlRmxpcFZpZXdwb3J0UmVhZEZy
YW1lYnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkKICAgICAgICAgcmVhZEZyYW1lYnVm
ZmVyLT5pc0RlZmF1bHQoKSAmJiBtUmVuZGVyZXItPmdldEZlYXR1cmVzKCkuZmxpcFZpZXdwb3J0
WS5lbmFibGVkOwogfQogCit2b2lkIENvbnRleHRWazo6dXBkYXRlU3VyZmFjZVJvdGF0aW9uRHJh
d0ZyYW1lYnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSkKK3sKKyAgICBnbDo6RnJhbWVi
dWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Cisg
ICAgbUN1cnJlbnRSb3RhdGlvbkRyYXdGcmFtZWJ1ZmZlciA9CisgICAgICAgIERldGVybWluZVN1
cmZhY2VSb3RhdGlvbihkcmF3RnJhbWVidWZmZXIsIG1DdXJyZW50V2luZG93U3VyZmFjZSk7Cit9
CisKK3ZvaWQgQ29udGV4dFZrOjp1cGRhdGVTdXJmYWNlUm90YXRpb25SZWFkRnJhbWVidWZmZXIo
Y29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKQoreworICAgIGdsOjpGcmFtZWJ1ZmZlciAqcmVhZEZy
YW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBtQ3VycmVudFJv
dGF0aW9uRHJhd0ZyYW1lYnVmZmVyID0KKyAgICAgICAgRGV0ZXJtaW5lU3VyZmFjZVJvdGF0aW9u
KHJlYWRGcmFtZWJ1ZmZlciwgbUN1cnJlbnRXaW5kb3dTdXJmYWNlKTsKK30KKwogZ2w6OkNhcHMg
Q29udGV4dFZrOjpnZXROYXRpdmVDYXBzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVJlbmRlcmVy
LT5nZXROYXRpdmVDYXBzKCk7CkBAIC0yNzMzLDExICszMDU2LDYgQEAgUHJvZ3JhbVBpcGVsaW5l
SW1wbCAqQ29udGV4dFZrOjpjcmVhdGVQcm9ncmFtUGlwZWxpbmUoY29uc3QgZ2w6OlByb2dyYW1Q
aXBlbGluZVMKICAgICByZXR1cm4gbmV3IFByb2dyYW1QaXBlbGluZVZrKHN0YXRlKTsKIH0KIAot
c3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gQ29udGV4dFZrOjpjcmVhdGVQYXRocyhHTHNpemVpKQot
ewotICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPigpOwotfQotCiBNZW1vcnlPYmpl
Y3RJbXBsICpDb250ZXh0Vms6OmNyZWF0ZU1lbW9yeU9iamVjdCgpCiB7CiAgICAgcmV0dXJuIG5l
dyBNZW1vcnlPYmplY3RWaygpOwpAQCAtMjc1NSw4ICszMDczLDEwIEBAIE92ZXJsYXlJbXBsICpD
b250ZXh0Vms6OmNyZWF0ZU92ZXJsYXkoY29uc3QgZ2w6Ok92ZXJsYXlTdGF0ZSAmc3RhdGUpCiAK
IHZvaWQgQ29udGV4dFZrOjppbnZhbGlkYXRlQ3VycmVudERlZmF1bHRVbmlmb3JtcygpCiB7Ci0g
ICAgQVNTRVJUKG1Qcm9ncmFtKTsKLSAgICBpZiAobVByb2dyYW0tPmhhc0RlZmF1bHRVbmlmb3Jt
cygpKQorICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IG1TdGF0
ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRhYmxlKTsKKworICAg
IGlmIChleGVjdXRhYmxlLT5oYXNEZWZhdWx0VW5pZm9ybXMobVN0YXRlKSkKICAgICB7CiAgICAg
ICAgIG1HcmFwaGljc0RpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFU0NSSVBUT1JfU0VUUyk7CiAg
ICAgICAgIG1Db21wdXRlRGlydHlCaXRzLnNldChESVJUWV9CSVRfREVTQ1JJUFRPUl9TRVRTKTsK
QEAgLTI3NjUsMTcgKzMwODUsMTYgQEAgdm9pZCBDb250ZXh0Vms6OmludmFsaWRhdGVDdXJyZW50
RGVmYXVsdFVuaWZvcm1zKCkKIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmludmFsaWRhdGVD
dXJyZW50VGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgQVNTRVJU
KG1Qcm9ncmFtKTsKLSAgICBpZiAobVByb2dyYW0tPmhhc1RleHR1cmVzKCkpCisgICAgY29uc3Qg
Z2w6OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRhYmxlID0gbVN0YXRlLmdldFByb2dyYW1FeGVj
dXRhYmxlKCk7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUpOworCisgICAgaWYgKGV4ZWN1dGFibGUt
Pmhhc1RleHR1cmVzKG1TdGF0ZSkpCiAgICAgewogICAgICAgICBtR3JhcGhpY3NEaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9URVhUVVJFUyk7CiAgICAgICAgIG1HcmFwaGljc0RpcnR5Qml0cy5zZXQo
RElSVFlfQklUX0RFU0NSSVBUT1JfU0VUUyk7CiAgICAgICAgIG1Db21wdXRlRGlydHlCaXRzLnNl
dChESVJUWV9CSVRfVEVYVFVSRVMpOwogICAgICAgICBtQ29tcHV0ZURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX0RFU0NSSVBUT1JfU0VUUyk7Ci0gICAgfQogCi0gICAgaWYgKCFjb21tYW5kR3JhcGhF
bmFibGVkKCkpCi0gICAgewogICAgICAgICBBTkdMRV9UUlkodXBkYXRlQWN0aXZlVGV4dHVyZXMo
Y29udGV4dCkpOwogICAgIH0KIApAQCAtMjc4NCw5ICszMTAzLDExIEBAIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjppbnZhbGlkYXRlQ3VycmVudFRleHR1cmVzKGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0KQogCiB2b2lkIENvbnRleHRWazo6aW52YWxpZGF0ZUN1cnJlbnRTaGFkZXJSZXNvdXJj
ZXMoKQogewotICAgIEFTU0VSVChtUHJvZ3JhbSk7Ci0gICAgaWYgKG1Qcm9ncmFtLT5oYXNVbmlm
b3JtQnVmZmVycygpIHx8IG1Qcm9ncmFtLT5oYXNTdG9yYWdlQnVmZmVycygpIHx8Ci0gICAgICAg
IG1Qcm9ncmFtLT5oYXNBdG9taWNDb3VudGVyQnVmZmVycygpIHx8IG1Qcm9ncmFtLT5oYXNJbWFn
ZXMoKSkKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBtU3Rh
dGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CisKKyAg
ICBpZiAoZXhlY3V0YWJsZS0+aGFzVW5pZm9ybUJ1ZmZlcnMobVN0YXRlKSB8fCBleGVjdXRhYmxl
LT5oYXNTdG9yYWdlQnVmZmVycyhtU3RhdGUpIHx8CisgICAgICAgIGV4ZWN1dGFibGUtPmhhc0F0
b21pY0NvdW50ZXJCdWZmZXJzKG1TdGF0ZSkgfHwgZXhlY3V0YWJsZS0+aGFzSW1hZ2VzKG1TdGF0
ZSkpCiAgICAgewogICAgICAgICBtR3JhcGhpY3NEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TSEFE
RVJfUkVTT1VSQ0VTKTsKICAgICAgICAgbUdyYXBoaWNzRGlydHlCaXRzLnNldChESVJUWV9CSVRf
REVTQ1JJUFRPUl9TRVRTKTsKQEAgLTI4OTMsNyArMzIxNCw4IEBAIGFuZ2xlOjpSZXN1bHQgQ29u
dGV4dFZrOjpkaXNwYXRjaENvbXB1dGVJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwgR0xpCiAKICAgICBnbDo6QnVmZmVyICpnbEJ1ZmZlciAgICAgPSBnZXRTdGF0ZSgpLmdldFRh
cmdldEJ1ZmZlcihnbDo6QnVmZmVyQmluZGluZzo6RGlzcGF0Y2hJbmRpcmVjdCk7CiAgICAgdms6
OkJ1ZmZlckhlbHBlciAmYnVmZmVyID0gdms6OkdldEltcGwoZ2xCdWZmZXIpLT5nZXRCdWZmZXIo
KTsKLSAgICBidWZmZXIub25SZWFkKHRoaXMsICZtRGlzcGF0Y2hlciwgVktfQUNDRVNTX0lORElS
RUNUX0NPTU1BTkRfUkVBRF9CSVQpOworICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmJ1
ZmZlclJlYWQoJm1SZXNvdXJjZVVzZUxpc3QsIFZLX0FDQ0VTU19JTkRJUkVDVF9DT01NQU5EX1JF
QURfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZl
cik7CiAKICAgICBjb21tYW5kQnVmZmVyLT5kaXNwYXRjaEluZGlyZWN0KGJ1ZmZlci5nZXRCdWZm
ZXIoKSwgaW5kaXJlY3QpOwogCkBAIC0yOTAyLDggKzMyMjQsNyBAQCBhbmdsZTo6UmVzdWx0IENv
bnRleHRWazo6ZGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsIEdMaQogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRWazo6bWVtb3J5QmFycmllcihjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBiYXJyaWVycykKIHsKLSAgICBtZW1vcnlC
YXJyaWVySW1wbChiYXJyaWVycywgVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCk7
Ci0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAgIHJldHVybiBtZW1vcnlC
YXJyaWVySW1wbChiYXJyaWVycywgVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCk7
CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjptZW1vcnlCYXJyaWVyQnlSZWdpb24oY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpCkBAIC0yOTExLDE3
ICszMjMyLDEyIEBAIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjptZW1vcnlCYXJyaWVyQnlSZWdp
b24oY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMYml0CiAgICAgLy8gTm90ZTogbWVtb3J5
QmFycmllckJ5UmVnaW9uIGlzIGV4cGVjdGVkIHRvIGFmZmVjdCBvbmx5IHRoZSBmcmFnbWVudCBw
aXBlbGluZSwgYnV0IGlzCiAgICAgLy8gb3RoZXJ3aXNlIHNpbWlsYXIgdG8gbWVtb3J5QmFycmll
ci4KIAotICAgIG1lbW9yeUJhcnJpZXJJbXBsKGJhcnJpZXJzLCBWS19QSVBFTElORV9TVEFHRV9G
UkFHTUVOVF9TSEFERVJfQklUKTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7
CisgICAgcmV0dXJuIG1lbW9yeUJhcnJpZXJJbXBsKGJhcnJpZXJzLCBWS19QSVBFTElORV9TVEFH
RV9GUkFHTUVOVF9TSEFERVJfQklUKTsKIH0KIAotdm9pZCBDb250ZXh0Vms6Om1lbW9yeUJhcnJp
ZXJJbXBsKEdMYml0ZmllbGQgYmFycmllcnMsIFZrUGlwZWxpbmVTdGFnZUZsYWdzIHN0YWdlTWFz
aykKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjptZW1vcnlCYXJyaWVySW1wbChHTGJpdGZpZWxk
IGJhcnJpZXJzLCBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzdGFnZU1hc2spCiB7Ci0gICAgLy8gTm90
ZTogbW9zdCBvZiB0aGUgYmFycmllcnMgc3BlY2lmaWVkIGhlcmUgZG9uJ3QgcmVxdWlyZSB1cyB0
byBpc3N1ZSBhIG1lbW9yeSBiYXJyaWVyLCBhcwotICAgIC8vIHRoZSByZWxldmFudCByZXNvdXJj
ZXMgYWxyZWFkeSBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIGJhcnJpZXJzLiAgVGhleSBkbyBob3dl
dmVyIHJlcXVpcmUKLSAgICAvLyB0aGUgcmVzb3VyY2Ugd3JpdGluZyBub2RlcyB0byBmaW5pc2gg
c28gZnV0dXJlIGJ1ZmZlciBiYXJyaWVycyBhcmUgcGxhY2VkIGNvcnJlY3RseSwgYXMKLSAgICAv
LyB3ZWxsIGFzIHJlc291cmNlIGRlcGVuZGVuY2llcyBub3QgY3JlYXRpbmcgYSBncmFwaCBsb29w
LiAgVGhpcyBpcyBkb25lIGJ5IGluc2VydGluZyBhCi0gICAgLy8gY29tbWFuZCBncmFwaCBiYXJy
aWVyIHRoYXQgZG9lcyBub3RoaW5nIQorICAgIC8vIE5vdGU6IG1hbnkgb2YgdGhlIGJhcnJpZXJz
IHNwZWNpZmllZCBoZXJlIGFyZSBhbHJlYWR5IGNvdmVyZWQgYXV0b21hdGljYWxseS4KICAgICAv
LwogICAgIC8vIFRoZSBiYXJyaWVycyB0aGF0IGFyZSBuZWNlc3NhcnkgYWxsIGhhdmUgU0hBREVS
X1dSSVRFIGFzIHNyYyBhY2Nlc3MgYW5kIHRoZSBkc3QgYWNjZXNzIGlzCiAgICAgLy8gZGV0ZXJt
aW5lZCBieSB0aGUgZ2l2ZW4gYml0ZmllbGQuICBDdXJyZW50bHksIGFsbCBpbWFnZS1yZWxhdGVk
IGJhcnJpZXJzIHRoYXQgcmVxdWlyZSB0aGUKQEAgLTI5NDMsMTUgKzMyNTksMTcgQEAgdm9pZCBD
b250ZXh0Vms6Om1lbW9yeUJhcnJpZXJJbXBsKEdMYml0ZmllbGQgYmFycmllcnMsIFZrUGlwZWxp
bmVTdGFnZUZsYWdzIHN0YWcKICAgICAgICAgZHN0QWNjZXNzIHw9IFZLX0FDQ0VTU19TSEFERVJf
V1JJVEVfQklUIHwgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVDsKICAgICB9CiAKLSAgICBpZiAo
Y29tbWFuZEdyYXBoRW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgbUNvbW1hbmRHcmFwaC5tZW1v
cnlCYXJyaWVyKHNyY0FjY2VzcywgZHN0QWNjZXNzLCBzdGFnZU1hc2spOwotICAgIH0KLSAgICBl
bHNlCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBodHRwOi8vYW5nbGVidWcuY29t
LzQwMjkKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KKyAgICB2azo6Q29tbWFuZEJ1
ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICBBTkdMRV9UUlkoZW5kUmVuZGVyUGFzc0FuZEdldENv
bW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKKworICAgIFZrTWVtb3J5QmFycmllciBtZW1v
cnlCYXJyaWVyID0ge307CisgICAgbWVtb3J5QmFycmllci5zVHlwZSAgICAgICAgICAgPSBWS19T
VFJVQ1RVUkVfVFlQRV9NRU1PUllfQkFSUklFUjsKKyAgICBtZW1vcnlCYXJyaWVyLnNyY0FjY2Vz
c01hc2sgICA9IHNyY0FjY2VzczsKKyAgICBtZW1vcnlCYXJyaWVyLmRzdEFjY2Vzc01hc2sgICA9
IGRzdEFjY2VzczsKKworICAgIGNvbW1hbmRCdWZmZXItPm1lbW9yeUJhcnJpZXIoc3RhZ2VNYXNr
LCBzdGFnZU1hc2ssICZtZW1vcnlCYXJyaWVyKTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKIH0KIAogdms6OkR5bmFtaWNRdWVyeVBvb2wgKkNvbnRleHRWazo6Z2V0UXVl
cnlQb29sKGdsOjpRdWVyeVR5cGUgcXVlcnlUeXBlKQpAQCAtMzAzMCw5ICszMzQ4LDE3IEBAIGFu
Z2xlOjpSZXN1bHQgQ29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzRHJpdmVyVW5pZm9ybXMo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm1Ecml2ZXJVbmlmb3Jtc1tQaXBlbGluZVR5cGU6OkdyYXBoaWNzXSwgJmJ1ZmZlciwgJnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3QnVmZmVyKSk7CiAK
LSAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZnbFZpZXdwb3J0ID0gbVN0YXRlLmdldFZpZXdwb3J0
KCk7CisgICAgZ2w6OlJlY3RhbmdsZSBnbFZpZXdwb3J0ID0gbVN0YXRlLmdldFZpZXdwb3J0KCk7
CiAgICAgZmxvYXQgaGFsZlJlbmRlckFyZWFIZWlnaHQgPQogICAgICAgICBzdGF0aWNfY2FzdDxm
bG9hdD4obURyYXdGcmFtZWJ1ZmZlci0+Z2V0U3RhdGUoKS5nZXREaW1lbnNpb25zKCkuaGVpZ2h0
KSAqIDAuNWY7CisgICAgaWYgKGlzUm90YXRlZEFzcGVjdFJhdGlvRm9yRHJhd0ZCTygpKQorICAg
IHsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2UgaXMgcm90YXRlZCA5MC8yNzAgZGVncmVlcy4gIFRo
aXMgY2hhbmdlcyB0aGUgYXNwZWN0IHJhdGlvIG9mIHRoZSBzdXJmYWNlLgorICAgICAgICAvLyBU
T0RPKGlhbmVsbGlvdHQpOiBoYW5kbGUgc21hbGwgdmlld3BvcnQvc2Npc3NvciBjYXNlcy4gIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vNDQzMQorICAgICAgICBzdGQ6OnN3YXAoZ2xWaWV3cG9ydC53aWR0
aCwgZ2xWaWV3cG9ydC5oZWlnaHQpOworICAgICAgICBoYWxmUmVuZGVyQXJlYUhlaWdodCA9Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obURyYXdGcmFtZWJ1ZmZlci0+Z2V0U3RhdGUo
KS5nZXREaW1lbnNpb25zKCkud2lkdGgpICogMC41ZjsKKyAgICB9CiAgICAgZmxvYXQgc2NhbGVZ
ID0gaXNWaWV3cG9ydEZsaXBFbmFibGVkRm9yRHJhd0ZCTygpID8gLTEuMGYgOiAxLjBmOwogCiAg
ICAgdWludDMyX3QgeGZiQWN0aXZlVW5wYXVzZWQgPSBtU3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFj
a0FjdGl2ZVVucGF1c2VkKCk7CkBAIC0zMDU0LDEzICszMzgwLDE2IEBAIGFuZ2xlOjpSZXN1bHQg
Q29udGV4dFZrOjpoYW5kbGVEaXJ0eUdyYXBoaWNzRHJpdmVyVW5pZm9ybXMoY29uc3QgZ2w6OkNv
bnRleHQgKmNvCiAgICAgICAgIHt9LAogICAgICAgICB7fSwKICAgICAgICAge30sCi0gICAgICAg
IHtkZXB0aFJhbmdlTmVhciwgZGVwdGhSYW5nZUZhciwgZGVwdGhSYW5nZURpZmYsIDAuMGZ9fTsK
KyAgICAgICAge2RlcHRoUmFuZ2VOZWFyLCBkZXB0aFJhbmdlRmFyLCBkZXB0aFJhbmdlRGlmZiwg
MC4wZn0sCisgICAgICAgIHt9fTsKKyAgICBtZW1jcHkoJmRyaXZlclVuaWZvcm1zLT5wcmVSb3Rh
dGlvbiwgJmtQcmVSb3RhdGlvbk1hdHJpY2VzW21DdXJyZW50Um90YXRpb25EcmF3RnJhbWVidWZm
ZXJdLAorICAgICAgICAgICBzaXplb2YoUHJlUm90YXRpb25NYXRyaXhWYWx1ZXMpKTsKIAogICAg
IGlmICh4ZmJBY3RpdmVVbnBhdXNlZCkKICAgICB7CiAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNr
VmsgKnRyYW5zZm9ybUZlZWRiYWNrVmsgPQogICAgICAgICAgICAgdms6OkdldEltcGwobVN0YXRl
LmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpKTsKLSAgICAgICAgdHJhbnNmb3JtRmVlZGJh
Y2tWay0+Z2V0QnVmZmVyT2Zmc2V0cyh0aGlzLCBtU3RhdGUuZ2V0UHJvZ3JhbSgpLT5nZXRTdGF0
ZSgpLCBtWGZiQmFzZVZlcnRleCwKKyAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tWay0+Z2V0QnVm
ZmVyT2Zmc2V0cyh0aGlzLCBtWGZiQmFzZVZlcnRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJVbmlmb3Jtcy0+eGZiQnVmZmVyT2Zmc2V0cy5k
YXRhKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJp
dmVyVW5pZm9ybXMtPnhmYkJ1ZmZlck9mZnNldHMuc2l6ZSgpKTsKICAgICB9CkBAIC0zMjA0LDE2
ICszNTMzLDE3IEBAIHZvaWQgQ29udGV4dFZrOjpoYW5kbGVFcnJvcihWa1Jlc3VsdCBlcnJvckNv
ZGUsCiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjp1cGRhdGVBY3RpdmVUZXh0dXJlcyhjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUg
ICA9IG1TdGF0ZTsKLSAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUuZ2V0
UHJvZ3JhbSgpOworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICA9
IG1TdGF0ZTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBn
bFN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCk7CisgICAgQVNTRVJUKGV4ZWN1dGFibGUpOwog
CiAgICAgdWludDMyX3QgcHJldk1heEluZGV4ID0gbUFjdGl2ZVRleHR1cmVzRGVzYy5nZXRNYXhJ
bmRleCgpOwogICAgIG1lbXNldChtQWN0aXZlVGV4dHVyZXMuZGF0YSgpLCAwLCBzaXplb2YobUFj
dGl2ZVRleHR1cmVzWzBdKSAqIHByZXZNYXhJbmRleCk7CiAgICAgbUFjdGl2ZVRleHR1cmVzRGVz
Yy5yZXNldCgpOwogCi0gICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1cmVQb2ludGVyQXJyYXkgJnRl
eHR1cmVzICA9IGdsU3RhdGUuZ2V0QWN0aXZlVGV4dHVyZXNDYWNoZSgpOwotICAgIGNvbnN0IGds
OjpBY3RpdmVUZXh0dXJlTWFzayAmYWN0aXZlVGV4dHVyZXMgICAgPSBwcm9ncmFtLT5nZXRBY3Rp
dmVTYW1wbGVyc01hc2soKTsKLSAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZVR5cGVBcnJheSAm
dGV4dHVyZVR5cGVzID0gcHJvZ3JhbS0+Z2V0QWN0aXZlU2FtcGxlclR5cGVzKCk7CisgICAgY29u
c3QgZ2w6OkFjdGl2ZVRleHR1cmVzQ2FjaGUgJnRleHR1cmVzICAgICAgICA9IGdsU3RhdGUuZ2V0
QWN0aXZlVGV4dHVyZXNDYWNoZSgpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlTWFzayAm
YWN0aXZlVGV4dHVyZXMgICAgPSBleGVjdXRhYmxlLT5nZXRBY3RpdmVTYW1wbGVyc01hc2soKTsK
KyAgICBjb25zdCBnbDo6QWN0aXZlVGV4dHVyZVR5cGVBcnJheSAmdGV4dHVyZVR5cGVzID0gZXhl
Y3V0YWJsZS0+Z2V0QWN0aXZlU2FtcGxlclR5cGVzKCk7CiAKICAgICBmb3IgKHNpemVfdCB0ZXh0
dXJlVW5pdCA6IGFjdGl2ZVRleHR1cmVzKQogICAgIHsKQEAgLTMyMzQsNDggKzM1NjQsMTQgQEAg
YW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OnVwZGF0ZUFjdGl2ZVRleHR1cmVzKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KQogICAgICAgICBpZiAoc2FtcGxlciA9PSBudWxscHRyKQogICAgICAg
ICB7CiAgICAgICAgICAgICBzYW1wbGVyVmsgICAgID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHNh
bXBsZXJTZXJpYWwgPSBrWmVyb1NlcmlhbDsKLSAgICAgICAgICAgIHRleHR1cmVWay0+b25TYW1w
bGVyVXNlKCZtUmVzb3VyY2VVc2VMaXN0KTsKKyAgICAgICAgICAgIHNhbXBsZXJTZXJpYWwgPSBy
eDo6a1plcm9TZXJpYWw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAg
ICAgICAgICBzYW1wbGVyVmsgICAgID0gdms6OkdldEltcGwoc2FtcGxlcik7CiAgICAgICAgICAg
ICBzYW1wbGVyU2VyaWFsID0gc2FtcGxlclZrLT5nZXRTZXJpYWwoKTsKLSAgICAgICAgICAgIHNh
bXBsZXJWay0+b25TYW1wbGVyQWNjZXNzKCZtUmVzb3VyY2VVc2VMaXN0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZrOjpJbWFnZUhlbHBlciAmaW1hZ2UgPSB0ZXh0dXJlVmstPmdldEltYWdlKCk7
Ci0KLSAgICAgICAgLy8gVGhlIGltYWdlIHNob3VsZCBiZSBmbHVzaGVkIGFuZCByZWFkeSB0byB1
c2UgYXQgdGhpcyBwb2ludC4gVGhlcmUgbWF5IHN0aWxsIGJlCi0gICAgICAgIC8vIGxpbmdlcmlu
ZyBzdGFnZWQgdXBkYXRlcyBpbiBpdHMgc3RhZ2luZyBidWZmZXIgZm9yIHVudXNlZCB0ZXh0dXJl
IG1pcCBsZXZlbHMgb3IKLSAgICAgICAgLy8gbGF5ZXJzLiBUaGVyZWZvcmUgd2UgY2FuJ3QgdmVy
aWZ5IGl0IGhhcyBubyBzdGFnZWQgdXBkYXRlcyByaWdodCBoZXJlLgotCi0gICAgICAgIHZrOjpJ
bWFnZUxheW91dCB0ZXh0dXJlTGF5b3V0ID0gdms6OkltYWdlTGF5b3V0OjpBbGxHcmFwaGljc1No
YWRlcnNSZWFkT25seTsKLSAgICAgICAgaWYgKHByb2dyYW0tPmlzQ29tcHV0ZSgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB0ZXh0dXJlTGF5b3V0ID0gdms6OkltYWdlTGF5b3V0OjpDb21wdXRl
U2hhZGVyUmVhZE9ubHk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbnN1cmUgdGhlIGltYWdl
IGlzIGluIHJlYWQtb25seSBsYXlvdXQKLSAgICAgICAgaWYgKGltYWdlLmlzTGF5b3V0Q2hhbmdl
TmVjZXNzYXJ5KHRleHR1cmVMYXlvdXQpKQotICAgICAgICB7Ci0gICAgICAgICAgICB2azo6Q29t
bWFuZEJ1ZmZlciAqc3JjTGF5b3V0Q2hhbmdlOwotICAgICAgICAgICAgaWYgKGNvbW1hbmRHcmFw
aEVuYWJsZWQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBTkdMRV9UUlkoaW1h
Z2UucmVjb3JkQ29tbWFuZHModGhpcywgJnNyY0xheW91dENoYW5nZSkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFOR0xF
X1RSWShnZXRPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoJnNyY0xheW91dENoYW5nZSkp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0
RmxhZ3MgPSBpbWFnZS5nZXRBc3BlY3RGbGFncygpOwotICAgICAgICAgICAgQVNTRVJUKGFzcGVj
dEZsYWdzICE9IDApOwotICAgICAgICAgICAgaW1hZ2UuY2hhbmdlTGF5b3V0KGFzcGVjdEZsYWdz
LCB0ZXh0dXJlTGF5b3V0LCBzcmNMYXlvdXRDaGFuZ2UpOwogICAgICAgICB9CiAKLSAgICAgICAg
dGV4dHVyZVZrLT5vbkltYWdlVmlld1VzZSgmbVJlc291cmNlVXNlTGlzdCk7Ci0KICAgICAgICAg
bUFjdGl2ZVRleHR1cmVzW3RleHR1cmVVbml0XS50ZXh0dXJlID0gdGV4dHVyZVZrOwogICAgICAg
ICBtQWN0aXZlVGV4dHVyZXNbdGV4dHVyZVVuaXRdLnNhbXBsZXIgPSBzYW1wbGVyVms7CiAgICAg
ICAgIC8vIENhY2hlIHNlcmlhbHMgZnJvbSBzYW1wbGVyIGFuZCB0ZXh0dXJlLCBidXQgcmUtdXNl
IHRleHR1cmUgaWYgbm8gc2FtcGxlciBib3VuZApAQCAtMzI4NywxNCArMzU4MywxNSBAQCBhbmds
ZTo6UmVzdWx0IENvbnRleHRWazo6dXBkYXRlQWN0aXZlVGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQpCiB9CiAKIGFuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjp1cGRhdGVBY3RpdmVJ
bWFnZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZm
ZXJIZWxwZXIgKmNvbW1hbmRCdWZmZXJIZWxwZXIpCiB7Ci0gICAgY29uc3QgZ2w6OlN0YXRlICZn
bFN0YXRlICAgPSBtU3RhdGU7Ci0gICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBnbFN0
YXRlLmdldFByb2dyYW0oKTsKKyAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICAgICAgICAg
ICAgICAgPSBtU3RhdGU7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICpleGVjdXRh
YmxlID0gZ2xTdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRh
YmxlKTsKIAogICAgIG1BY3RpdmVJbWFnZXMuZmlsbChudWxscHRyKTsKIAotICAgIGNvbnN0IGds
OjpBY3RpdmVUZXh0dXJlTWFzayAmYWN0aXZlSW1hZ2VzID0gcHJvZ3JhbS0+Z2V0QWN0aXZlSW1h
Z2VzTWFzaygpOworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlTWFzayAmYWN0aXZlSW1hZ2Vz
ID0gZXhlY3V0YWJsZS0+Z2V0QWN0aXZlSW1hZ2VzTWFzaygpOwogCiAgICAgLy8gTm90ZTogY3Vy
cmVudGx5LCB0aGUgaW1hZ2UgbGF5b3V0IGlzIHRyYW5zaXRpb25lZCBlbnRpcmVseSBldmVuIGlm
IG9ubHkgb25lIGxldmVsIG9yIGxheWVyIGlzCiAgICAgLy8gdXNlZC4gIFRoaXMgaXMgYW4gaXNz
dWUgaWYgb25lIHN1YnJlc291cmNlIG9mIHRoZSBpbWFnZSBpcyB1c2VkIGFzIGZyYW1lYnVmZmVy
IGF0dGFjaG1lbnQgYW5kCkBAIC0zMzI4LDI5ICszNjI1LDE1IEBAIGFuZ2xlOjpSZXN1bHQgQ29u
dGV4dFZrOjp1cGRhdGVBY3RpdmVJbWFnZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgIC8vIGxpbmdlcmluZyBzdGFnZWQgdXBkYXRlcyBpbiBpdHMgc3RhZ2luZyBidWZmZXIg
Zm9yIHVudXNlZCB0ZXh0dXJlIG1pcCBsZXZlbHMgb3IKICAgICAgICAgLy8gbGF5ZXJzLiBUaGVy
ZWZvcmUgd2UgY2FuJ3QgdmVyaWZ5IGl0IGhhcyBubyBzdGFnZWQgdXBkYXRlcyByaWdodCBoZXJl
LgogCi0gICAgICAgIC8vIFRPRE8oc3lvdXNzZWZpKTogbWFrZSBzdXJlIGZyb250LWVuZCBzeW5j
cyB0ZXh0dXJlcyB0aGF0IGFyZSB1c2VkIGFzIGltYWdlcyAodGhleSBhcmUKLSAgICAgICAgLy8g
YWxyZWFkeSBub3RpZmllZCBvZiBjb250ZW50IGNoYW5nZSkuCi0gICAgICAgIC8vIFRlc3Q6IFNp
bXBsZVN0YXRlQ2hhbmdlVGVzdEVTMzEuRGlzcGF0Y2hXaXRoSW1hZ2VUZXh0dXJlVGV4U3ViSW1h
Z2VUaGVuRGlzcGF0Y2hBZ2FpbgotICAgICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzM1MzkK
LSAgICAgICAgQU5HTEVfVFJZKHRleHR1cmVWay0+ZW5zdXJlSW1hZ2VJbml0aWFsaXplZCh0aGlz
LCBJbWFnZU1pcExldmVsczo6RW5hYmxlZExldmVscykpOwotCiAgICAgICAgIHZrOjpJbWFnZUxh
eW91dCBpbWFnZUxheW91dCA9IHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzV3Jp
dGU7Ci0gICAgICAgIGlmIChwcm9ncmFtLT5pc0NvbXB1dGUoKSkKKyAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzQ29tcHV0ZSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBpbWFnZUxheW91dCA9
IHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlcldyaXRlOwogICAgICAgICB9CiAKLSAgICAg
ICAgLy8gRW5zdXJlIHRoZSBpbWFnZSBpcyBpbiB0aGUgY29ycmVjdCBsYXlvdXQKLSAgICAgICAg
aWYgKGltYWdlLT5pc0xheW91dENoYW5nZU5lY2Vzc2FyeShpbWFnZUxheW91dCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpsYXlvdXRDaGFuZ2U7Ci0gICAgICAg
ICAgICBBTkdMRV9UUlkoaW1hZ2UtPnJlY29yZENvbW1hbmRzKHRoaXMsICZsYXlvdXRDaGFuZ2Up
KTsKKyAgICAgICAgVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzID0gaW1hZ2UtPmdldEFz
cGVjdEZsYWdzKCk7CiAKLSAgICAgICAgICAgIFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RGbGFn
cyA9IGltYWdlLT5nZXRBc3BlY3RGbGFncygpOwotICAgICAgICAgICAgaW1hZ2UtPmNoYW5nZUxh
eW91dChhc3BlY3RGbGFncywgaW1hZ2VMYXlvdXQsIGxheW91dENoYW5nZSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpbWFnZS0+YWRkV3JpdGVEZXBlbmRlbmN5KHRoaXMsIHJlY29yZGVyKTsKKyAg
ICAgICAgY29tbWFuZEJ1ZmZlckhlbHBlci0+aW1hZ2VXcml0ZSgmbVJlc291cmNlVXNlTGlzdCwg
YXNwZWN0RmxhZ3MsIGltYWdlTGF5b3V0LCBpbWFnZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMzM2OSw2OCArMzY1Miw3NiBAQCBib29sIENvbnRl
eHRWazo6c2hvdWxkRmx1c2goKQogCiBib29sIENvbnRleHRWazo6aGFzUmVjb3JkZWRDb21tYW5k
cygpCiB7Ci0gICAgaWYgKGNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhbUNvbW1hbmRHcmFwaC5lbXB0eSgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICByZXR1cm4gIW1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmVtcHR5KCkgfHwgIW1SZW5k
ZXJQYXNzQ29tbWFuZHMuZW1wdHkoKSB8fAotICAgICAgICAgICAgICAgIW1QcmltYXJ5Q29tbWFu
ZHMuZW1wdHkoKTsKLSAgICB9CisgICAgcmV0dXJuICFtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5k
cy5lbXB0eSgpIHx8ICFtUmVuZGVyUGFzc0NvbW1hbmRzLmVtcHR5KCkgfHwKKyAgICAgICAgICAg
bUhhc1ByaW1hcnlDb21tYW5kczsKIH0KIAogYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmZsdXNo
SW1wbChjb25zdCB2azo6U2VtYXBob3JlICpzaWduYWxTZW1hcGhvcmUpCiB7CiAgICAgYm9vbCBo
YXNQZW5kaW5nU2VtYXBob3JlID0gc2lnbmFsU2VtYXBob3JlIHx8ICFtV2FpdFNlbWFwaG9yZXMu
ZW1wdHkoKTsKLSAgICBpZiAoIWhhc1JlY29yZGVkQ29tbWFuZHMoKSAmJiAhaGFzUGVuZGluZ1Nl
bWFwaG9yZSkKKyAgICBpZiAoIWhhc1JlY29yZGVkQ29tbWFuZHMoKSAmJiAhaGFzUGVuZGluZ1Nl
bWFwaG9yZSAmJiAhbUdwdUV2ZW50c0VuYWJsZWQpCiAgICAgewogICAgICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQogCiAgICAgQU5HTEVfVFJBQ0VfRVZFTlQwKCJn
cHUuYW5nbGUiLCAiQ29udGV4dFZrOjpmbHVzaCIpOwogCi0gICAgaWYgKGNvbW1hbmRHcmFwaEVu
YWJsZWQoKSkKKyAgICBmbHVzaE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMoKTsKKyAgICBBTkdM
RV9UUlkoZW5kUmVuZGVyUGFzcygpKTsKKworICAgIGlmIChtSXNBbnlIb3N0VmlzaWJsZUJ1ZmZl
cldyaXR0ZW4pCiAgICAgewotICAgICAgICB2azo6RGV2aWNlU2NvcGVkPHZrOjpQcmltYXJ5Q29t
bWFuZEJ1ZmZlcj4gcHJpbWFyeUNvbW1hbmRzKGdldERldmljZSgpKTsKLSAgICAgICAgQU5HTEVf
VFJZKAotICAgICAgICAgICAgbUNvbW1hbmRRdWV1ZS5hbGxvY2F0ZVByaW1hcnlDb21tYW5kQnVm
ZmVyKHRoaXMsIG1Db21tYW5kUG9vbCwgJnByaW1hcnlDb21tYW5kcy5nZXQoKSkpOworICAgICAg
ICAvLyBNYWtlIHN1cmUgYWxsIHdyaXRlcyB0byBob3N0LXZpc2libGUgYnVmZmVycyBhcmUgZmx1
c2hlZC4gIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcKKyAgICAgICAgLy8gd2hldGhlciBhbnkg
YnVmZmVyIHdpbGwgYmUgbWFwcGVkIGZvciByZWFkYmFjayBpbiB0aGUgZnV0dXJlLCBhbmQgd2Ug
Y2FuJ3QgYWZmb3JkIHRvCisgICAgICAgIC8vIGZsdXNoIGFuZCB3YWl0IG9uIGEgb25lLXBpcGVs
aW5lLWJhcnJpZXIgY29tbWFuZCBidWZmZXIgb24gZXZlcnkgbWFwKCkuCisgICAgICAgIFZrTWVt
b3J5QmFycmllciBtZW1vcnlCYXJyaWVyID0ge307CisgICAgICAgIG1lbW9yeUJhcnJpZXIuc1R5
cGUgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0JBUlJJRVI7CisgICAgICAg
IG1lbW9yeUJhcnJpZXIuc3JjQWNjZXNzTWFzayAgID0gVktfQUNDRVNTX01FTU9SWV9XUklURV9C
SVQ7CisgICAgICAgIG1lbW9yeUJhcnJpZXIuZHN0QWNjZXNzTWFzayAgID0gVktfQUNDRVNTX0hP
U1RfUkVBRF9CSVQ7CiAKLSAgICAgICAgaWYgKCFtQ29tbWFuZEdyYXBoLmVtcHR5KCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEFOR0xFX1RSWShmbHVzaENvbW1hbmRHcmFwaCgmcHJpbWFyeUNv
bW1hbmRzLmdldCgpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgbVByaW1hcnlDb21tYW5kcy5tZW1v
cnlCYXJyaWVyKFZLX1BJUEVMSU5FX1NUQUdFX0FMTF9DT01NQU5EU19CSVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9IT1NUX0JJVCwg
Jm1lbW9yeUJhcnJpZXIpOworICAgICAgICBtSXNBbnlIb3N0VmlzaWJsZUJ1ZmZlcldyaXR0ZW4g
PSBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgd2FpdEZvclN3YXBjaGFpbkltYWdlSWZOZWNlc3Nh
cnkoKTsKKyAgICBpZiAobUdwdUV2ZW50c0VuYWJsZWQpCisgICAgeworICAgICAgICBFdmVudE5h
bWUgZXZlbnROYW1lID0gR2V0VHJhY2VFdmVudE5hbWUoIlByaW1hcnkiLCBtUHJpbWFyeUJ1ZmZl
ckNvdW50ZXIpOworICAgICAgICBBTkdMRV9UUlkodHJhY2VHcHVFdmVudCgmbVByaW1hcnlDb21t
YW5kcywgVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBldmVudE5hbWUpKTsKKyAgICB9CiAKLSAgICAg
ICAgVmtTdWJtaXRJbmZvIHN1Ym1pdEluZm8gPSB7fTsKLSAgICAgICAgSW5pdGlhbGl6ZVN1Ym1p
dEluZm8oJnN1Ym1pdEluZm8sIHByaW1hcnlDb21tYW5kcy5nZXQoKSwgbVdhaXRTZW1hcGhvcmVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVdhaXRTZW1hcGhvcmVTdGFnZU1hc2tz
LCBzaWduYWxTZW1hcGhvcmUpOworICAgIEFOR0xFX1ZLX1RSWSh0aGlzLCBtUHJpbWFyeUNvbW1h
bmRzLmVuZCgpKTsKIAotICAgICAgICBBTkdMRV9UUlkoc3VibWl0RnJhbWUoc3VibWl0SW5mbywg
cHJpbWFyeUNvbW1hbmRzLnJlbGVhc2UoKSkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5mbHVzaFRvUHJpbWFyeSgmbVByaW1hcnlD
b21tYW5kcyk7Ci0gICAgICAgIEFOR0xFX1RSWShtUmVuZGVyUGFzc0NvbW1hbmRzLmZsdXNoVG9Q
cmltYXJ5KHRoaXMsICZtUHJpbWFyeUNvbW1hbmRzKSk7Ci0gICAgICAgIEFOR0xFX1ZLX1RSWSh0
aGlzLCBtUHJpbWFyeUNvbW1hbmRzLmVuZCgpKTsKKyAgICAvLyBGcmVlIHNlY29uZGFyeSBjb21t
YW5kIHBvb2wgYWxsb2NhdGlvbnMgYW5kIHJlc3RhcnQgY29tbWFuZCBidWZmZXJzIHdpdGggdGhl
IG5ldyBwYWdlLgorICAgIG1Qb29sQWxsb2NhdG9yLnBvcCgpOworICAgIG1Qb29sQWxsb2NhdG9y
LnB1c2goKTsKKyAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5yZXNldCgpOworICAgIG1S
ZW5kZXJQYXNzQ29tbWFuZHMucmVzZXQoKTsKIAotICAgICAgICBTZXJpYWwgc2VyaWFsID0gZ2V0
Q3VycmVudFF1ZXVlU2VyaWFsKCk7Ci0gICAgICAgIG1SZXNvdXJjZVVzZUxpc3QucmVsZWFzZVJl
c291cmNlVXNlc0FuZFVwZGF0ZVNlcmlhbHMoc2VyaWFsKTsKKyAgICBTZXJpYWwgc2VyaWFsID0g
Z2V0Q3VycmVudFF1ZXVlU2VyaWFsKCk7CisgICAgbVJlc291cmNlVXNlTGlzdC5yZWxlYXNlUmVz
b3VyY2VVc2VzQW5kVXBkYXRlU2VyaWFscyhzZXJpYWwpOwogCi0gICAgICAgIHdhaXRGb3JTd2Fw
Y2hhaW5JbWFnZUlmTmVjZXNzYXJ5KCk7CisgICAgd2FpdEZvclN3YXBjaGFpbkltYWdlSWZOZWNl
c3NhcnkoKTsKIAotICAgICAgICBWa1N1Ym1pdEluZm8gc3VibWl0SW5mbyA9IHt9OwotICAgICAg
ICBJbml0aWFsaXplU3VibWl0SW5mbygmc3VibWl0SW5mbywgbVByaW1hcnlDb21tYW5kcywgbVdh
aXRTZW1hcGhvcmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVdhaXRTZW1hcGhv
cmVTdGFnZU1hc2tzLCBzaWduYWxTZW1hcGhvcmUpOworICAgIFZrU3VibWl0SW5mbyBzdWJtaXRJ
bmZvID0ge307CisgICAgSW5pdGlhbGl6ZVN1Ym1pdEluZm8oJnN1Ym1pdEluZm8sIG1QcmltYXJ5
Q29tbWFuZHMsIG1XYWl0U2VtYXBob3JlcywgJm1XYWl0U2VtYXBob3JlU3RhZ2VNYXNrcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxTZW1hcGhvcmUpOwogCi0gICAgICAgIEFOR0xF
X1RSWShzdWJtaXRGcmFtZShzdWJtaXRJbmZvLCBzdGQ6Om1vdmUobVByaW1hcnlDb21tYW5kcykp
KTsKKyAgICBBTkdMRV9UUlkoc3VibWl0RnJhbWUoc3VibWl0SW5mbywgc3RkOjptb3ZlKG1Qcmlt
YXJ5Q29tbWFuZHMpKSk7CiAKLSAgICAgICAgQU5HTEVfVFJZKHN0YXJ0UHJpbWFyeUNvbW1hbmRC
dWZmZXIoKSk7Ci0gICAgfQorICAgIEFOR0xFX1RSWShzdGFydFByaW1hcnlDb21tYW5kQnVmZmVy
KCkpOwogCisgICAgbVJlbmRlclBhc3NDb3VudGVyID0gMDsKICAgICBtV2FpdFNlbWFwaG9yZXMu
Y2xlYXIoKTsKIAorICAgIG1QcmltYXJ5QnVmZmVyQ291bnRlcisrOworCisgICAgaWYgKG1HcHVF
dmVudHNFbmFibGVkKQorICAgIHsKKyAgICAgICAgRXZlbnROYW1lIGV2ZW50TmFtZSA9IEdldFRy
YWNlRXZlbnROYW1lKCJQcmltYXJ5IiwgbVByaW1hcnlCdWZmZXJDb3VudGVyKTsKKyAgICAgICAg
QU5HTEVfVFJZKHRyYWNlR3B1RXZlbnQoJm1QcmltYXJ5Q29tbWFuZHMsIFRSQUNFX0VWRU5UX1BI
QVNFX0JFR0lOLCBldmVudE5hbWUpKTsKKyAgICB9CisKICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7CiB9CiAKQEAgLTM1MzcsOSArMzgyOCw4IEBAIGFuZ2xlOjpSZXN1bHQgQ29u
dGV4dFZrOjpnZXRUaW1lc3RhbXAodWludDY0X3QgKnRpbWVzdGFtcE91dCkKICAgICAvLyA+IFRo
aXMgd2lsbCByZXR1cm4gdGhlIEdMIHRpbWUgYWZ0ZXIgYWxsIHByZXZpb3VzIGNvbW1hbmRzIGhh
dmUgcmVhY2hlZCB0aGUgR0wgc2VydmVyIGJ1dAogICAgIC8vIGhhdmUgbm90IHlldCBuZWNlc3Nh
cmlseSBleGVjdXRlZC4KICAgICAvLwotICAgIC8vIFRoZSBwcmV2aW91cyBjb21tYW5kcyBhcmUg
c3RvcmVkIGluIHRoZSBjb21tYW5kIGdyYXBoIGF0IHRoZSBtb21lbnQgYW5kIGFyZSBub3QgeWV0
Ci0gICAgLy8gZmx1c2hlZC4gVGhlIHdvcmRpbmcgYWxsb3dzIHVzIHRvIG1ha2UgYSBzdWJtaXNz
aW9uIHRvIGdldCB0aGUgdGltZXN0YW1wIHdpdGhvdXQKLSAgICAvLyBwZXJmb3JtaW5nIGEgZmx1
c2guCisgICAgLy8gVGhlIHByZXZpb3VzIGNvbW1hbmRzIG1heSBiZSBkZWZlcnJlZCBhdCB0aGUg
bW9tZW50IGFuZCBub3QgeWV0IGZsdXNoZWQuIFRoZSB3b3JkaW5nIGFsbG93cworICAgIC8vIHVz
IHRvIG1ha2UgYSBzdWJtaXNzaW9uIHRvIGdldCB0aGUgdGltZXN0YW1wIHdpdGhvdXQgZmx1c2hp
bmcuCiAgICAgLy8KICAgICAvLyBTZWNvbmQ6CiAgICAgLy8KQEAgLTM1NjcsMTcgKzM4NTcsMTEg
QEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0Vms6OmdldFRpbWVzdGFtcCh1aW50NjRfdCAqdGltZXN0
YW1wT3V0KQogCiAgICAgVmtDb21tYW5kQnVmZmVyQmVnaW5JbmZvIGJlZ2luSW5mbyA9IHt9Owog
ICAgIGJlZ2luSW5mby5zVHlwZSAgICAgICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQ
RV9DT01NQU5EX0JVRkZFUl9CRUdJTl9JTkZPOwotICAgIGJlZ2luSW5mby5mbGFncyAgICAgICAg
ICAgICAgICAgICAgPSAwOworICAgIGJlZ2luSW5mby5mbGFncyAgICAgICAgICAgICAgICAgICAg
PSBWS19DT01NQU5EX0JVRkZFUl9VU0FHRV9PTkVfVElNRV9TVUJNSVRfQklUOwogICAgIGJlZ2lu
SW5mby5wSW5oZXJpdGFuY2VJbmZvICAgICAgICAgPSBudWxscHRyOwogCiAgICAgQU5HTEVfVktf
VFJZKHRoaXMsIGNvbW1hbmRCdWZmZXIuYmVnaW4oYmVnaW5JbmZvKSk7Ci0KLSAgICBjb21tYW5k
QnVmZmVyLnJlc2V0UXVlcnlQb29sKHRpbWVzdGFtcFF1ZXJ5LmdldFF1ZXJ5UG9vbCgpLT5nZXRI
YW5kbGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcFF1ZXJ5
LmdldFF1ZXJ5KCksIDEpOwotICAgIGNvbW1hbmRCdWZmZXIud3JpdGVUaW1lc3RhbXAoVktfUElQ
RUxJTkVfU1RBR0VfQk9UVE9NX09GX1BJUEVfQklULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZXN0YW1wUXVlcnkuZ2V0UXVlcnlQb29sKCktPmdldEhhbmRsZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wUXVlcnkuZ2V0UXVlcnkoKSk7
Ci0KKyAgICB0aW1lc3RhbXBRdWVyeS53cml0ZVRpbWVzdGFtcCgmY29tbWFuZEJ1ZmZlcik7CiAg
ICAgQU5HTEVfVktfVFJZKHRoaXMsIGNvbW1hbmRCdWZmZXIuZW5kKCkpOwogCiAgICAgLy8gQ3Jl
YXRlIGZlbmNlIGZvciB0aGUgc3VibWlzc2lvbgpAQCAtMzYwMSwxOSArMzg4NSwxNCBAQCBhbmds
ZTo6UmVzdWx0IENvbnRleHRWazo6Z2V0VGltZXN0YW1wKHVpbnQ2NF90ICp0aW1lc3RhbXBPdXQp
CiAKICAgICBTZXJpYWwgdGhyb3dBd2F5U2VyaWFsOwogICAgIEFOR0xFX1RSWSgKLSAgICAgICAg
bVJlbmRlcmVyLT5xdWV1ZVN1Ym1pdCh0aGlzLCBtQ29udGV4dFByaW9yaXR5LCBzdWJtaXRJbmZv
LCBmZW5jZS5nZXQoKSwgJnRocm93QXdheVNlcmlhbCkpOworICAgICAgICBtUmVuZGVyZXItPnF1
ZXVlU3VibWl0KHRoaXMsIG1Db250ZXh0UHJpb3JpdHksIHN1Ym1pdEluZm8sICZmZW5jZS5nZXQo
KSwgJnRocm93QXdheVNlcmlhbCkpOwogCiAgICAgLy8gV2FpdCBmb3IgdGhlIHN1Ym1pc3Npb24g
dG8gZmluaXNoLiAgR2l2ZW4gbm8gc2VtYXBob3JlcywgdGhlcmUgaXMgaG9wZSB0aGF0IGl0IHdv
dWxkIGV4ZWN1dGUKICAgICAvLyBpbiBwYXJhbGxlbCB3aXRoIHdoYXQncyBhbHJlYWR5IHJ1bm5p
bmcgb24gdGhlIEdQVS4KICAgICBBTkdMRV9WS19UUlkodGhpcywgZmVuY2UuZ2V0KCkud2FpdChk
ZXZpY2UsIG1SZW5kZXJlci0+Z2V0TWF4RmVuY2VXYWl0VGltZU5zKCkpKTsKIAogICAgIC8vIEdl
dCB0aGUgcXVlcnkgcmVzdWx0cwotICAgIGNvbnN0ZXhwciBWa1F1ZXJ5UmVzdWx0RmxhZ3MgcXVl
cnlGbGFncyA9IFZLX1FVRVJZX1JFU1VMVF9XQUlUX0JJVCB8IFZLX1FVRVJZX1JFU1VMVF82NF9C
SVQ7Ci0KLSAgICBBTkdMRV9WS19UUlkodGhpcywgdGltZXN0YW1wUXVlcnkuZ2V0UXVlcnlQb29s
KCktPmdldFJlc3VsdHMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UsIHRpbWVz
dGFtcFF1ZXJ5LmdldFF1ZXJ5KCksIDEsIHNpemVvZigqdGltZXN0YW1wT3V0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcE91dCwgc2l6ZW9mKCp0aW1lc3RhbXBPdXQpLCBx
dWVyeUZsYWdzKSk7Ci0KKyAgICBBTkdMRV9UUlkodGltZXN0YW1wUXVlcnkuZ2V0VWludDY0UmVz
dWx0KHRoaXMsIHRpbWVzdGFtcE91dCkpOwogICAgIHRpbWVzdGFtcFF1ZXJ5UG9vbC5nZXQoKS5m
cmVlUXVlcnkodGhpcywgJnRpbWVzdGFtcFF1ZXJ5KTsKIAogICAgIC8vIENvbnZlcnQgcmVzdWx0
cyB0byBuYW5vc2Vjb25kcy4KQEAgLTM3MDYsOTggKzM5ODUsMzU2IEBAIGJvb2wgQ29udGV4dFZr
OjpzaG91bGRVc2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMoKSBjb25zdAogICAgIHJldHVybiBt
UmVuZGVyZXItPmdldEZlYXR1cmVzKCkuZm9yY2VPbGRSZXdyaXRlU3RydWN0U2FtcGxlcnMuZW5h
YmxlZDsKIH0KIAotdm9pZCBDb250ZXh0Vms6Om9uQnVmZmVyUmVhZChWa0FjY2Vzc0ZsYWdzIHJl
YWRBY2Nlc3NUeXBlLCB2azo6QnVmZmVySGVscGVyICpidWZmZXIpCithbmdsZTo6UmVzdWx0IENv
bnRleHRWazo6b25CdWZmZXJSZWFkKFZrQWNjZXNzRmxhZ3MgcmVhZEFjY2Vzc1R5cGUsIHZrOjpC
dWZmZXJIZWxwZXIgKmJ1ZmZlcikKIHsKKyAgICBBTkdMRV9UUlkoZW5kUmVuZGVyUGFzcygpKTsK
KwogICAgIGlmICghYnVmZmVyLT5jYW5BY2N1bXVsYXRlUmVhZCh0aGlzLCByZWFkQWNjZXNzVHlw
ZSkpCiAgICAgewotICAgICAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5mbHVzaFRvUHJp
bWFyeSgmbVByaW1hcnlDb21tYW5kcyk7CisgICAgICAgIGZsdXNoT3V0c2lkZVJlbmRlclBhc3ND
b21tYW5kcygpOwogICAgIH0KIAotICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmJ1ZmZl
clJlYWQocmVhZEFjY2Vzc1R5cGUsIGJ1ZmZlcik7CisgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZHMuYnVmZmVyUmVhZCgmbVJlc291cmNlVXNlTGlzdCwgcmVhZEFjY2Vzc1R5cGUsIGJ1ZmZl
cik7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgQ29u
dGV4dFZrOjpvbkJ1ZmZlcldyaXRlKFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NUeXBlLCB2azo6
QnVmZmVySGVscGVyICpidWZmZXIpCithbmdsZTo6UmVzdWx0IENvbnRleHRWazo6b25CdWZmZXJX
cml0ZShWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSwgdms6OkJ1ZmZlckhlbHBlciAqYnVm
ZmVyKQogeworICAgIEFOR0xFX1RSWShlbmRSZW5kZXJQYXNzKCkpOworCiAgICAgaWYgKCFidWZm
ZXItPmNhbkFjY3VtdWxhdGVXcml0ZSh0aGlzLCB3cml0ZUFjY2Vzc1R5cGUpKQogICAgIHsKLSAg
ICAgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuZmx1c2hUb1ByaW1hcnkoJm1QcmltYXJ5
Q29tbWFuZHMpOworICAgICAgICBmbHVzaE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMoKTsKICAg
ICB9CiAKLSAgICBtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5idWZmZXJXcml0ZSh3cml0ZUFj
Y2Vzc1R5cGUsIGJ1ZmZlcik7CisgICAgbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuYnVmZmVy
V3JpdGUoJm1SZXNvdXJjZVVzZUxpc3QsIHdyaXRlQWNjZXNzVHlwZSwgYnVmZmVyKTsKKworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBDb250ZXh0Vms6OmJl
Z2luUmVuZGVyUGFzcyhjb25zdCB2azo6RnJhbWVidWZmZXIgJmZyYW1lYnVmZmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6UmVuZGVyUGFzc0Rl
c2MgJnJlbmRlclBhc3NEZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2azo6QXR0YWNobWVudE9wc0FycmF5ICZyZW5kZXJQYXNzQXR0YWNobWVudE9wcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmtDbGVhclZhbHVl
PiAmY2xlYXJWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21t
YW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCkKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjpv
bkltYWdlUmVhZChWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0RmxhZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0IGltYWdlTGF5b3V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUhlbHBlciAqaW1hZ2Up
CiB7Ci0gICAgaWYgKCFtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5lbXB0eSgpKQorICAgIEFO
R0xFX1RSWShlbmRSZW5kZXJQYXNzKCkpOworCisgICAgaWYgKGltYWdlLT5pc0xheW91dENoYW5n
ZU5lY2Vzc2FyeShpbWFnZUxheW91dCkpCiAgICAgewotICAgICAgICBtT3V0c2lkZVJlbmRlclBh
c3NDb21tYW5kcy5mbHVzaFRvUHJpbWFyeSgmbVByaW1hcnlDb21tYW5kcyk7CisgICAgICAgIHZr
OjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOworICAgICAgICBBTkdMRV9UUlkoZW5kUmVu
ZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKKyAgICAgICAgaW1h
Z2UtPmNoYW5nZUxheW91dChhc3BlY3RGbGFncywgaW1hZ2VMYXlvdXQsIGNvbW1hbmRCdWZmZXIp
OwogICAgIH0KKyAgICBpbWFnZS0+cmV0YWluKCZtUmVzb3VyY2VVc2VMaXN0KTsKKyAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZr
OjpvbkltYWdlV3JpdGUoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUhlbHBlciAq
aW1hZ2UpCit7CisgICAgQU5HTEVfVFJZKGVuZFJlbmRlclBhc3MoKSk7CisKKyAgICAvLyBCYXJy
aWVycyBhcmUgYWx3YXlzIHJlcXVpcmVkIGZvciBpbWFnZSB3cml0ZXMuCisgICAgQVNTRVJUKGlt
YWdlLT5pc0xheW91dENoYW5nZU5lY2Vzc2FyeShpbWFnZUxheW91dCkpOwogCi0gICAgbVJlbmRl
clBhc3NDb21tYW5kcy5iZWdpblJlbmRlclBhc3MoZnJhbWVidWZmZXIsIHJlbmRlckFyZWEsIHJl
bmRlclBhc3NEZXNjLAorICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOworICAg
IEFOR0xFX1RSWShlbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZl
cikpOworCisgICAgaW1hZ2UtPmNoYW5nZUxheW91dChhc3BlY3RGbGFncywgaW1hZ2VMYXlvdXQs
IGNvbW1hbmRCdWZmZXIpOworICAgIGltYWdlLT5yZXRhaW4oJm1SZXNvdXJjZVVzZUxpc3QpOwor
CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCithbmdsZTo6UmVzdWx0
IENvbnRleHRWazo6Zmx1c2hBbmRCZWdpblJlbmRlclBhc3MoCisgICAgY29uc3Qgdms6OkZyYW1l
YnVmZmVyICZmcmFtZWJ1ZmZlciwKKyAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVh
LAorICAgIGNvbnN0IHZrOjpSZW5kZXJQYXNzRGVzYyAmcmVuZGVyUGFzc0Rlc2MsCisgICAgY29u
c3Qgdms6OkF0dGFjaG1lbnRPcHNBcnJheSAmcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMsCisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8VmtDbGVhclZhbHVlPiAmY2xlYXJWYWx1ZXMsCisgICAgdms6OkNv
bW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVyT3V0KQoreworICAgIHZrOjpQcmltYXJ5Q29tbWFu
ZEJ1ZmZlciAqcHJpbWFyeTsKKyAgICBBTkdMRV9UUlkoZmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFu
ZEJ1ZmZlcigmcHJpbWFyeSkpOworCisgICAgZ2w6OlJlY3RhbmdsZSByb3RhdGVkUmVuZGVyQXJl
YSA9IHJlbmRlckFyZWE7CisgICAgaWYgKGlzUm90YXRlZEFzcGVjdFJhdGlvRm9yRHJhd0ZCTygp
KQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2UgaXMgcm90YXRlZCA5MC8yNzAgZGVncmVl
cy4gIFRoaXMgY2hhbmdlcyB0aGUgYXNwZWN0IHJhdGlvIG9mCisgICAgICAgIC8vIHRoZSBzdXJm
YWNlLiAgU3dhcCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgcmVuZGVyQXJlYS4KKyAgICAg
ICAgLy8gVE9ETyhpYW5lbGxpb3R0KTogaGFuZGxlIHNtYWxsIHZpZXdwb3J0L3NjaXNzb3IgY2Fz
ZXMuICBodHRwOi8vYW5nbGVidWcuY29tLzQ0MzEKKyAgICAgICAgc3RkOjpzd2FwKHJvdGF0ZWRS
ZW5kZXJBcmVhLndpZHRoLCByb3RhdGVkUmVuZGVyQXJlYS5oZWlnaHQpOworICAgIH0KKworICAg
IG1SZW5kZXJQYXNzQ29tbWFuZHMuYmVnaW5SZW5kZXJQYXNzKGZyYW1lYnVmZmVyLCByb3RhdGVk
UmVuZGVyQXJlYSwgcmVuZGVyUGFzc0Rlc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMsIGNsZWFyVmFsdWVzLCBjb21tYW5k
QnVmZmVyT3V0KTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLU91
dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVm
ZmVyKCkKLSAgICA6IG1HbG9iYWxNZW1vcnlCYXJyaWVyU3JjQWNjZXNzKDApLAotICAgICAgbUds
b2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MoMCksCi0gICAgICBtR2xvYmFsTWVtb3J5QmFycmll
clN0YWdlcygwKQote30KK2FuZ2xlOjpSZXN1bHQgQ29udGV4dFZrOjplbmRSZW5kZXJQYXNzKCkK
K3sKKyAgICBvblJlbmRlclBhc3NGaW5pc2hlZCgpOworICAgIGlmIChtUmVuZGVyUGFzc0NvbW1h
bmRzLmVtcHR5KCkpCisgICAgeworICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7CisgICAgfQogCi1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6On5PdXRzaWRlUmVu
ZGVyUGFzc0NvbW1hbmRCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgaWYgKG1HcHVFdmVudHNFbmFi
bGVkKQorICAgIHsKKyAgICAgICAgbVJlbmRlclBhc3NDb3VudGVyKys7CiAKLXZvaWQgT3V0c2lk
ZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjpmbHVzaFRvUHJpbWFyeSh2azo6UHJpbWFyeUNvbW1h
bmRCdWZmZXIgKnByaW1hcnkpCisgICAgICAgIEV2ZW50TmFtZSBldmVudE5hbWUgPSBHZXRUcmFj
ZUV2ZW50TmFtZSgiUlAiLCBtUmVuZGVyUGFzc0NvdW50ZXIpOworICAgICAgICBBTkdMRV9UUlko
dHJhY2VHcHVFdmVudCgmbVByaW1hcnlDb21tYW5kcywgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4s
IGV2ZW50TmFtZSkpOworICAgIH0KKworICAgIEFOR0xFX1RSWShtUmVuZGVyUGFzc0NvbW1hbmRz
LmZsdXNoVG9QcmltYXJ5KHRoaXMsICZtUHJpbWFyeUNvbW1hbmRzKSk7CisKKyAgICBpZiAobUdw
dUV2ZW50c0VuYWJsZWQpCisgICAgeworICAgICAgICBFdmVudE5hbWUgZXZlbnROYW1lID0gR2V0
VHJhY2VFdmVudE5hbWUoIlJQIiwgbVJlbmRlclBhc3NDb3VudGVyKTsKKyAgICAgICAgQU5HTEVf
VFJZKHRyYWNlR3B1RXZlbnQoJm1QcmltYXJ5Q29tbWFuZHMsIFRSQUNFX0VWRU5UX1BIQVNFX0VO
RCwgZXZlbnROYW1lKSk7CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOworfQorCit2b2lkIENvbnRleHRWazo6b25SZW5kZXJQYXNzSW1hZ2VXcml0ZShWa0ltYWdl
QXNwZWN0RmxhZ3MgYXNwZWN0RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgKmltYWdlKQogewotICAgIGlmIChl
bXB0eSgpKQorICAgIG1SZW5kZXJQYXNzQ29tbWFuZHMuaW1hZ2VXcml0ZSgmbVJlc291cmNlVXNl
TGlzdCwgYXNwZWN0RmxhZ3MsIGltYWdlTGF5b3V0LCBpbWFnZSk7Cit9CisKK2FuZ2xlOjpSZXN1
bHQgQ29udGV4dFZrOjpzeW5jRXh0ZXJuYWxNZW1vcnkoKQoreworICAgIHZrOjpDb21tYW5kQnVm
ZmVyICpjb21tYW5kQnVmZmVyOworICAgIEFOR0xFX1RSWShlbmRSZW5kZXJQYXNzQW5kR2V0Q29t
bWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOworCisgICAgVmtNZW1vcnlCYXJyaWVyIG1lbW9y
eUJhcnJpZXIgPSB7fTsKKyAgICBtZW1vcnlCYXJyaWVyLnNUeXBlICAgICAgICAgICA9IFZLX1NU
UlVDVFVSRV9UWVBFX01FTU9SWV9CQVJSSUVSOworICAgIG1lbW9yeUJhcnJpZXIuc3JjQWNjZXNz
TWFzayAgID0gVktfQUNDRVNTX01FTU9SWV9XUklURV9CSVQ7CisgICAgbWVtb3J5QmFycmllci5k
c3RBY2Nlc3NNYXNrICAgPSBWS19BQ0NFU1NfTUVNT1JZX1JFQURfQklUIHwgVktfQUNDRVNTX01F
TU9SWV9XUklURV9CSVQ7CisKKyAgICBjb21tYW5kQnVmZmVyLT5tZW1vcnlCYXJyaWVyKFZLX1BJ
UEVMSU5FX1NUQUdFX0FMTF9DT01NQU5EU19CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklULCAmbWVtb3J5QmFycmll
cik7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCit2b2lkIENvbnRl
eHRWazo6YWRkQ29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzKGNvbnN0IHN0ZDo6c3RyaW5nICZjb21t
YW5kQnVmZmVyRGlhZ25vc3RpY3MpCit7CisgICAgbUNvbW1hbmRCdWZmZXJEaWFnbm9zdGljcy5w
dXNoX2JhY2soY29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzKTsKK30KKwordm9pZCBDb250ZXh0Vms6
OmR1bXBDb21tYW5kU3RyZWFtRGlhZ25vc3RpY3MoKQoreworICAgIHN0ZDo6b3N0cmVhbSAmb3V0
ID0gc3RkOjpjb3V0OworCisgICAgaWYgKG1Db21tYW5kQnVmZmVyRGlhZ25vc3RpY3MuZW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1HbG9iYWxNZW1vcnlCYXJyaWVyU3JjQWNj
ZXNzKQorICAgIG91dCA8PCAiZGlncmFwaCB7XG4iCisgICAgICAgIDw8ICIgIG5vZGUgW3NoYXBl
PXBsYWludGV4dCBmb250bmFtZT1cIkNvbnNvbGFzXCJdXG4iOworCisgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1Db21tYW5kQnVmZmVyRGlhZ25vc3RpY3Muc2l6ZSgpOyArK2lu
ZGV4KQogICAgIHsKLSAgICAgICAgVmtNZW1vcnlCYXJyaWVyIG1lbW9yeUJhcnJpZXIgPSB7fTsK
LSAgICAgICAgbWVtb3J5QmFycmllci5zVHlwZSAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQ
RV9NRU1PUllfQkFSUklFUjsKLSAgICAgICAgbWVtb3J5QmFycmllci5zcmNBY2Nlc3NNYXNrICAg
PSBtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzczsKLSAgICAgICAgbWVtb3J5QmFycmllci5k
c3RBY2Nlc3NNYXNrICAgPSBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzczsKKyAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnBheWxvYWQgPSBtQ29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzW2lu
ZGV4XTsKKyAgICAgICAgb3V0IDw8ICIgIGNiIiA8PCBpbmRleCA8PCAiIFtsYWJlbCA9XCIiIDw8
IHBheWxvYWQgPDwgIlwiXTtcbiI7CisgICAgfQogCi0gICAgICAgIHByaW1hcnktPm1lbW9yeUJh
cnJpZXIobUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXMsIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3Rh
Z2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1vcnlCYXJyaWVyKTsKKyAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbUNvbW1hbmRCdWZmZXJEaWFnbm9zdGlj
cy5zaXplKCkgLSAxOyArK2luZGV4KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIgIGNiIiA8PCBp
bmRleCA8PCAiIC0+IGNiIiA8PCBpbmRleCArIDEgPDwgIlxuIjsKICAgICB9CiAKLSAgICBtQ29t
bWFuZEJ1ZmZlci5leGVjdXRlQ29tbWFuZHMocHJpbWFyeS0+Z2V0SGFuZGxlKCkpOworICAgIG1D
b21tYW5kQnVmZmVyRGlhZ25vc3RpY3MuY2xlYXIoKTsKIAotICAgIC8vIFJlc3RhcnQgc2Vjb25k
YXJ5IGJ1ZmZlci4KLSAgICByZXNldCgpOworICAgIG91dCA8PCAifVxuIjsKK30KKwordm9pZCBD
b250ZXh0Vms6OmluaXRJbmRleFR5cGVNYXAoKQoreworICAgIC8vIEluaXQgZ2xlcy12dWxrYW4g
aW5kZXggdHlwZSBtYXAKKyAgICBtSW5kZXhUeXBlTWFwW2dsOjpEcmF3RWxlbWVudHNUeXBlOjpV
bnNpZ25lZEJ5dGVdID0KKyAgICAgICAgbVJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLnN1cHBvcnRz
SW5kZXhUeXBlVWludDguZW5hYmxlZCA/IFZLX0lOREVYX1RZUEVfVUlOVDhfRVhUCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBWS19JTkRFWF9UWVBFX1VJTlQxNjsKKyAgICBtSW5kZXhUeXBlTWFwW2dsOjpEcmF3RWxlbWVu
dHNUeXBlOjpVbnNpZ25lZFNob3J0XSA9IFZLX0lOREVYX1RZUEVfVUlOVDE2OworICAgIG1JbmRl
eFR5cGVNYXBbZ2w6OkRyYXdFbGVtZW50c1R5cGU6OlVuc2lnbmVkSW50XSAgID0gVktfSU5ERVhf
VFlQRV9VSU5UMzI7Cit9CisKK1ZrSW5kZXhUeXBlIENvbnRleHRWazo6Z2V0VmtJbmRleFR5cGUo
Z2w6OkRyYXdFbGVtZW50c1R5cGUgZ2xJbmRleFR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1J
bmRleFR5cGVNYXBbZ2xJbmRleFR5cGVdOwogfQogCi12b2lkIE91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZEJ1ZmZlcjo6YnVmZmVyUmVhZChWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkJ1ZmZlckhl
bHBlciAqYnVmZmVyKQorc2l6ZV90IENvbnRleHRWazo6Z2V0VmtJbmRleFR5cGVTaXplKGdsOjpE
cmF3RWxlbWVudHNUeXBlIGdsSW5kZXhUeXBlKSBjb25zdAogeworICAgIGdsOjpEcmF3RWxlbWVu
dHNUeXBlIGVsZW1lbnRzVHlwZSA9IHNob3VsZENvbnZlcnRVaW50OFZrSW5kZXhUeXBlKGdsSW5k
ZXhUeXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGds
OjpEcmF3RWxlbWVudHNUeXBlOjpVbnNpZ25lZFNob3J0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogZ2xJbmRleFR5cGU7CisgICAgQVNTRVJUKGVsZW1lbnRz
VHlwZSA8IGdsOjpEcmF3RWxlbWVudHNUeXBlOjpFbnVtQ291bnQpOworCisgICAgLy8gVXNlIEdl
dERyYXdFbGVtZW50c1R5cGVTaXplKCkgdG8gZ2V0IHRoZSBzaXplCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4oZ2w6OkdldERyYXdFbGVtZW50c1R5cGVTaXplKGVsZW1lbnRzVHlwZSkp
OworfQorCitib29sIENvbnRleHRWazo6c2hvdWxkQ29udmVydFVpbnQ4VmtJbmRleFR5cGUoZ2w6
OkRyYXdFbGVtZW50c1R5cGUgZ2xJbmRleFR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIChnbElu
ZGV4VHlwZSA9PSBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRCeXRlICYmCisgICAgICAg
ICAgICAhbVJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLnN1cHBvcnRzSW5kZXhUeXBlVWludDguZW5h
YmxlZCk7Cit9CisKK3ZvaWQgQ29udGV4dFZrOjpmbHVzaE91dHNpZGVSZW5kZXJQYXNzQ29tbWFu
ZHMoKQoreworICAgIGlmICghbU91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMuZW1wdHkoKSkKKyAg
ICB7CisgICAgICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmZsdXNoVG9QcmltYXJ5KHRo
aXMsICZtUHJpbWFyeUNvbW1hbmRzKTsKKyAgICAgICAgbUhhc1ByaW1hcnlDb21tYW5kcyA9IHRy
dWU7CisgICAgfQorfQorCitDb21tYW5kQnVmZmVySGVscGVyOjpDb21tYW5kQnVmZmVySGVscGVy
KCkKKyAgICA6IG1JbWFnZUJhcnJpZXJTcmNTdGFnZU1hc2soMCksCisgICAgICBtSW1hZ2VCYXJy
aWVyRHN0U3RhZ2VNYXNrKDApLAorICAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3Mo
MCksCisgICAgICBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzcygwKSwKKyAgICAgIG1HbG9i
YWxNZW1vcnlCYXJyaWVyU3RhZ2VzKDApCit7fQorCitDb21tYW5kQnVmZmVySGVscGVyOjp+Q29t
bWFuZEJ1ZmZlckhlbHBlcigpID0gZGVmYXVsdDsKKwordm9pZCBDb21tYW5kQnVmZmVySGVscGVy
OjpidWZmZXJSZWFkKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpCdWZmZXJIZWxw
ZXIgKmJ1ZmZlcikKK3sKKyAgICBidWZmZXItPnJldGFpbihyZXNvdXJjZVVzZUxpc3QpOwogICAg
IGJ1ZmZlci0+dXBkYXRlUmVhZEJhcnJpZXIocmVhZEFjY2Vzc1R5cGUsICZtR2xvYmFsTWVtb3J5
QmFycmllclNyY0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtR2xvYmFs
TWVtb3J5QmFycmllckRzdEFjY2Vzcyk7CiAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTdGFnZXMg
PSBWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklUOwogfQogCi12b2lkIE91dHNpZGVS
ZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjo6YnVmZmVyV3JpdGUoVmtBY2Nlc3NGbGFncyB3cml0ZUFj
Y2Vzc1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdms6OkJ1ZmZlckhlbHBlciAqYnVmZmVyKQordm9pZCBDb21tYW5kQnVmZmVySGVscGVyOjpi
dWZmZXJXcml0ZSh2azo6UmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3Mgd3JpdGVBY2Nlc3NU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6QnVmZmVySGVs
cGVyICpidWZmZXIpCiB7CisgICAgYnVmZmVyLT5yZXRhaW4ocmVzb3VyY2VVc2VMaXN0KTsKICAg
ICBidWZmZXItPnVwZGF0ZVdyaXRlQmFycmllcih3cml0ZUFjY2Vzc1R5cGUsICZtR2xvYmFsTWVt
b3J5QmFycmllclNyY0FjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUds
b2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MpOwogICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3Rh
Z2VzID0gVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVDsKIH0KIAotdm9pZCBPdXRz
aWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OnJlc2V0KCkKK3ZvaWQgQ29tbWFuZEJ1ZmZlckhl
bHBlcjo6aW1hZ2VCYXJyaWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdz
IGRzdFN0YWdlTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZrSW1hZ2VNZW1vcnlCYXJyaWVyICZpbWFnZU1lbW9yeUJhcnJpZXIpCit7CisgICAgQVNT
RVJUKGltYWdlTWVtb3J5QmFycmllci5wTmV4dCA9PSBudWxscHRyKTsKKyAgICBtSW1hZ2VCYXJy
aWVyU3JjU3RhZ2VNYXNrIHw9IHNyY1N0YWdlTWFzazsKKyAgICBtSW1hZ2VCYXJyaWVyRHN0U3Rh
Z2VNYXNrIHw9IGRzdFN0YWdlTWFzazsKKyAgICBtSW1hZ2VNZW1vcnlCYXJyaWVycy5wdXNoX2Jh
Y2soaW1hZ2VNZW1vcnlCYXJyaWVyKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVySGVscGVyOjpp
bWFnZVJlYWQodms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0IGlt
YWdlTGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdl
SGVscGVyICppbWFnZSkKK3sKKyAgICBpbWFnZS0+cmV0YWluKHJlc291cmNlVXNlTGlzdCk7Cisg
ICAgaWYgKGltYWdlLT5pc0xheW91dENoYW5nZU5lY2Vzc2FyeShpbWFnZUxheW91dCkpCisgICAg
eworICAgICAgICBpbWFnZS0+Y2hhbmdlTGF5b3V0KGFzcGVjdEZsYWdzLCBpbWFnZUxheW91dCwg
dGhpcyk7CisgICAgfQorfQorCit2b2lkIENvbW1hbmRCdWZmZXJIZWxwZXI6OmltYWdlV3JpdGUo
dms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RGbGFncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlv
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlSGVscGVy
ICppbWFnZSkKIHsKLSAgICBtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcyA9IDA7Ci0gICAg
bUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MgPSAwOwotICAgIG1HbG9iYWxNZW1vcnlCYXJy
aWVyU3RhZ2VzICAgID0gMDsKKyAgICBpbWFnZS0+cmV0YWluKHJlc291cmNlVXNlTGlzdCk7Cisg
ICAgaW1hZ2UtPmNoYW5nZUxheW91dChhc3BlY3RGbGFncywgaW1hZ2VMYXlvdXQsIHRoaXMpOwor
fQogCit2b2lkIENvbW1hbmRCdWZmZXJIZWxwZXI6OmV4ZWN1dGVCYXJyaWVycyh2azo6UHJpbWFy
eUNvbW1hbmRCdWZmZXIgKnByaW1hcnkpCit7CisgICAgaWYgKG1JbWFnZU1lbW9yeUJhcnJpZXJz
LmVtcHR5KCkgJiYgbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3MgPT0gMCkKKyAgICB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNTdGFn
ZXMgPSAwOworICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIGRzdFN0YWdlcyA9IDA7CisKKyAgICBW
a01lbW9yeUJhcnJpZXIgbWVtb3J5QmFycmllciA9IHt9OworICAgIHVpbnQzMl90IG1lbW9yeUJh
cnJpZXJDb3VudCAgID0gMDsKKworICAgIGlmIChtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2Vz
cyAhPSAwKQorICAgIHsKKyAgICAgICAgbWVtb3J5QmFycmllci5zVHlwZSAgICAgICAgID0gVktf
U1RSVUNUVVJFX1RZUEVfTUVNT1JZX0JBUlJJRVI7CisgICAgICAgIG1lbW9yeUJhcnJpZXIuc3Jj
QWNjZXNzTWFzayA9IG1HbG9iYWxNZW1vcnlCYXJyaWVyU3JjQWNjZXNzOworICAgICAgICBtZW1v
cnlCYXJyaWVyLmRzdEFjY2Vzc01hc2sgPSBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzczsK
KworICAgICAgICBtZW1vcnlCYXJyaWVyQ291bnQrKzsKKyAgICAgICAgc3JjU3RhZ2VzIHw9IG1H
bG9iYWxNZW1vcnlCYXJyaWVyU3RhZ2VzOworICAgICAgICBkc3RTdGFnZXMgfD0gbUdsb2JhbE1l
bW9yeUJhcnJpZXJTdGFnZXM7CisKKyAgICAgICAgbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nl
c3MgPSAwOworICAgICAgICBtR2xvYmFsTWVtb3J5QmFycmllckRzdEFjY2VzcyA9IDA7CisgICAg
ICAgIG1HbG9iYWxNZW1vcnlCYXJyaWVyU3RhZ2VzICAgID0gMDsKKyAgICB9CisKKyAgICBzcmNT
dGFnZXMgfD0gbUltYWdlQmFycmllclNyY1N0YWdlTWFzazsKKyAgICBkc3RTdGFnZXMgfD0gbUlt
YWdlQmFycmllckRzdFN0YWdlTWFzazsKKyAgICBwcmltYXJ5LT5waXBlbGluZUJhcnJpZXIoc3Jj
U3RhZ2VzLCBkc3RTdGFnZXMsIDAsIG1lbW9yeUJhcnJpZXJDb3VudCwgJm1lbW9yeUJhcnJpZXIs
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihtSW1hZ2VNZW1vcnlCYXJyaWVycy5zaXplKCkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtSW1hZ2VNZW1vcnlCYXJyaWVycy5kYXRhKCkpOworICAgIG1JbWFnZU1lbW9y
eUJhcnJpZXJzLmNsZWFyKCk7CisgICAgbUltYWdlQmFycmllclNyY1N0YWdlTWFzayA9IDA7Cisg
ICAgbUltYWdlQmFycmllckRzdFN0YWdlTWFzayA9IDA7Cit9CisKK091dHNpZGVSZW5kZXJQYXNz
Q29tbWFuZEJ1ZmZlcjo6T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCkgPSBkZWZhdWx0
OworCitPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6On5PdXRzaWRlUmVuZGVyUGFzc0Nv
bW1hbmRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgT3V0c2lkZVJlbmRlclBhc3NDb21tYW5k
QnVmZmVyOjpmbHVzaFRvUHJpbWFyeShDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6UHJpbWFyeUNvbW1h
bmRCdWZmZXIgKnByaW1hcnkpCit7CisgICAgaWYgKGVtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChrRW5hYmxlQ29tbWFuZFN0cmVhbURpYWdub3N0aWNzKQorICAgIHsKKyAgICAg
ICAgc3RkOjpvc3RyaW5nc3RyZWFtIG91dDsKKyAgICAgICAgaWYgKG1HbG9iYWxNZW1vcnlCYXJy
aWVyU3JjQWNjZXNzICE9IDAgfHwgbUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nlc3MgIT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJNZW1vcnkgQmFycmllciBTcmM6IDB4IiA8
PCBzdGQ6OmhleCA8PCBtR2xvYmFsTWVtb3J5QmFycmllclNyY0FjY2VzcworICAgICAgICAgICAg
ICAgIDw8ICIgJnJhcnI7IERzdDogMHgiIDw8IHN0ZDo6aGV4IDw8IG1HbG9iYWxNZW1vcnlCYXJy
aWVyRHN0QWNjZXNzIDw8ICJcXGwiOworICAgICAgICB9CisKKyAgICAgICAgb3V0IDw8IG1Db21t
YW5kQnVmZmVyLmR1bXBDb21tYW5kcygiXFxsIik7CisgICAgICAgIGNvbnRleHRWay0+YWRkQ29t
bWFuZEJ1ZmZlckRpYWdub3N0aWNzKG91dC5zdHIoKSk7CisgICAgfQorCisgICAgZXhlY3V0ZUJh
cnJpZXJzKHByaW1hcnkpOworICAgIG1Db21tYW5kQnVmZmVyLmV4ZWN1dGVDb21tYW5kcyhwcmlt
YXJ5LT5nZXRIYW5kbGUoKSk7CisKKyAgICAvLyBSZXN0YXJ0IHNlY29uZGFyeSBidWZmZXIuCisg
ICAgcmVzZXQoKTsKK30KKwordm9pZCBPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXI6OnJl
c2V0KCkKK3sKICAgICBtQ29tbWFuZEJ1ZmZlci5yZXNldCgpOwogfQogCi1SZW5kZXJQYXNzQ29t
bWFuZEJ1ZmZlcjo6UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoKSA9IGRlZmF1bHQ7CitSZW5kZXJQ
YXNzQ29tbWFuZEJ1ZmZlcjo6UmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIoKQorICAgIDogbUNvdW50
ZXIoMCksCisgICAgICBtQ2xlYXJWYWx1ZXN7fSwKKyAgICAgIG1SZW5kZXJQYXNzU3RhcnRlZChm
YWxzZSksCisgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tDb3VudGVyQnVmZmVyc3t9LAorICAgICAg
bVZhbGlkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgwKSwKKyAgICAgIG1SZWJpbmRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlcnMoZmFsc2UpCit7fQogCiBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZl
cjo6flJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCkKIHsKQEAgLTM4MjUsNiArNDM2MiwyMiBAQCB2
b2lkIFJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MoY29uc3Qgdms6OkZy
YW1lYnVmZmVyICZmcmFtZWJ1ZmZlcgogICAgIHN0ZDo6Y29weShjbGVhclZhbHVlcy5iZWdpbigp
LCBjbGVhclZhbHVlcy5lbmQoKSwgbUNsZWFyVmFsdWVzLmJlZ2luKCkpOwogCiAgICAgKmNvbW1h
bmRCdWZmZXJPdXQgPSAmbUNvbW1hbmRCdWZmZXI7CisKKyAgICBtUmVuZGVyUGFzc1N0YXJ0ZWQg
PSB0cnVlOworICAgIG1Db3VudGVyKys7Cit9CisKK3ZvaWQgUmVuZGVyUGFzc0NvbW1hbmRCdWZm
ZXI6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soc2l6ZV90IHZhbGlkQnVmZmVyQ291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZr
QnVmZmVyICpjb3VudGVyQnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWJpbmRCdWZmZXIpCit7CisgICAgbVZhbGlkVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWxpZEJ1
ZmZlckNvdW50KTsKKyAgICBtUmViaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzICAgID0gcmVi
aW5kQnVmZmVyOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHZhbGlkQnVm
ZmVyQ291bnQ7IGluZGV4KyspCisgICAgeworICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tDb3Vu
dGVyQnVmZmVyc1tpbmRleF0gPSBjb3VudGVyQnVmZmVyc1tpbmRleF07CisgICAgfQogfQogCiBh
bmdsZTo6UmVzdWx0IFJlbmRlclBhc3NDb21tYW5kQnVmZmVyOjpmbHVzaFRvUHJpbWFyeShDb250
ZXh0VmsgKmNvbnRleHRWaywKQEAgLTM4MzMsNiArNDM4NiwxMyBAQCBhbmdsZTo6UmVzdWx0IFJl
bmRlclBhc3NDb21tYW5kQnVmZmVyOjpmbHVzaFRvUHJpbWFyeShDb250ZXh0VmsgKmNvbnRleHRW
aywKICAgICBpZiAoZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwogCisgICAgaWYgKGtFbmFibGVDb21tYW5kU3RyZWFtRGlhZ25vc3RpY3MpCisgICAgewor
ICAgICAgICBhZGRSZW5kZXJQYXNzQ29tbWFuZERpYWdub3N0aWNzKGNvbnRleHRWayk7CisgICAg
fQorCisgICAgZXhlY3V0ZUJhcnJpZXJzKHByaW1hcnkpOworCiAgICAgLy8gUHVsbCBhIFJlbmRl
clBhc3MgZnJvbSB0aGUgY2FjaGUuCiAgICAgUmVuZGVyUGFzc0NhY2hlICZyZW5kZXJQYXNzQ2Fj
aGUgPSBjb250ZXh0VmstPmdldFJlbmRlclBhc3NDYWNoZSgpOwogICAgIFNlcmlhbCBzZXJpYWwg
ICAgICAgICAgICAgICAgICAgID0gY29udGV4dFZrLT5nZXRDdXJyZW50UXVldWVTZXJpYWwoKTsK
QEAgLTM4NTQsOCArNDQxNCw0MiBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlclBhc3NDb21tYW5kQnVm
ZmVyOjpmbHVzaFRvUHJpbWFyeShDb250ZXh0VmsgKmNvbnRleHRWaywKIAogICAgIC8vIFJ1biBj
b21tYW5kcyBpbnNpZGUgdGhlIFJlbmRlclBhc3MuCiAgICAgcHJpbWFyeS0+YmVnaW5SZW5kZXJQ
YXNzKGJlZ2luSW5mbywgVktfU1VCUEFTU19DT05URU5UU19JTkxJTkUpOwotICAgIG1Db21tYW5k
QnVmZmVyLmV4ZWN1dGVDb21tYW5kcyhwcmltYXJ5LT5nZXRIYW5kbGUoKSk7Ci0gICAgcHJpbWFy
eS0+ZW5kUmVuZGVyUGFzcygpOworCisgICAgaWYgKG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyQ291bnQgPT0gMCkKKyAgICB7CisgICAgICAgIG1Db21tYW5kQnVmZmVyLmV4ZWN1dGVDb21t
YW5kcyhwcmltYXJ5LT5nZXRIYW5kbGUoKSk7CisgICAgICAgIHByaW1hcnktPmVuZFJlbmRlclBh
c3MoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdWludDMyX3QgbnVtQ291bnRl
ckJ1ZmZlcnMgPQorICAgICAgICAgICAgKG1SZWJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMp
ID8gMCA6IG1WYWxpZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQ291bnQ7CisKKyAgICAgICAgcHJp
bWFyeS0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVCgwLCBudW1Db3VudGVyQnVmZmVycywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJh
Y2tDb3VudGVyQnVmZmVycy5kYXRhKCksIG51bGxwdHIpOworICAgICAgICBtQ29tbWFuZEJ1ZmZl
ci5leGVjdXRlQ29tbWFuZHMocHJpbWFyeS0+Z2V0SGFuZGxlKCkpOworICAgICAgICBwcmltYXJ5
LT5lbmRUcmFuc2Zvcm1GZWVkYmFja0VYVCgwLCBtVmFsaWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVHJhbnNm
b3JtRmVlZGJhY2tDb3VudGVyQnVmZmVycy5kYXRhKCksIG51bGxwdHIpOworCisgICAgICAgIHBy
aW1hcnktPmVuZFJlbmRlclBhc3MoKTsKKworICAgICAgICAvLyBXb3VsZCBiZSBiZXR0ZXIgdG8g
YWNjdW11bGF0ZSB0aGlzIGJhcnJpZXIgdXNpbmcgdGhlIGNvbW1hbmQgQVBJcy4KKyAgICAgICAg
Ly8gVE9ETzogQ2xlYW4gdGh1cyB1cCBiZWZvcmUgd2UgY2xvc2UgaHR0cDovL2FuZ2xlYnVnLmNv
bS8zMjA2CisgICAgICAgIFZrQnVmZmVyTWVtb3J5QmFycmllciBidWZmZXJCYXJyaWVyID0ge307
CisgICAgICAgIGJ1ZmZlckJhcnJpZXIuc1R5cGUgICAgICAgICAgICAgICAgID0gVktfU1RSVUNU
VVJFX1RZUEVfQlVGRkVSX01FTU9SWV9CQVJSSUVSOworICAgICAgICBidWZmZXJCYXJyaWVyLnBO
ZXh0ICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAgIGJ1ZmZlckJhcnJpZXIuc3Jj
QWNjZXNzTWFzayAgICAgICAgID0gVktfQUNDRVNTX1RSQU5TRk9STV9GRUVEQkFDS19DT1VOVEVS
X1dSSVRFX0JJVF9FWFQ7CisgICAgICAgIGJ1ZmZlckJhcnJpZXIuZHN0QWNjZXNzTWFzayAgICAg
ICAgID0gVktfQUNDRVNTX1RSQU5TRk9STV9GRUVEQkFDS19DT1VOVEVSX1JFQURfQklUX0VYVDsK
KyAgICAgICAgYnVmZmVyQmFycmllci5zcmNRdWV1ZUZhbWlseUluZGV4ICAgPSBWS19RVUVVRV9G
QU1JTFlfSUdOT1JFRDsKKyAgICAgICAgYnVmZmVyQmFycmllci5kc3RRdWV1ZUZhbWlseUluZGV4
ICAgPSBWS19RVUVVRV9GQU1JTFlfSUdOT1JFRDsKKyAgICAgICAgYnVmZmVyQmFycmllci5idWZm
ZXIgICAgICAgICAgICAgICAgPSBtVHJhbnNmb3JtRmVlZGJhY2tDb3VudGVyQnVmZmVyc1swXTsK
KyAgICAgICAgYnVmZmVyQmFycmllci5vZmZzZXQgICAgICAgICAgICAgICAgPSAwOworICAgICAg
ICBidWZmZXJCYXJyaWVyLnNpemUgICAgICAgICAgICAgICAgICA9IFZLX1dIT0xFX1NJWkU7CisK
KyAgICAgICAgcHJpbWFyeS0+cGlwZWxpbmVCYXJyaWVyKFZLX1BJUEVMSU5FX1NUQUdFX1RSQU5T
Rk9STV9GRUVEQkFDS19CSVRfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VktfUElQRUxJTkVfU1RBR0VfRFJBV19JTkRJUkVDVF9CSVQsIDB1LCAwdSwgbnVsbHB0ciwgMXUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyQmFycmllciwgMHUsIG51
bGxwdHIpOworICAgIH0KIAogICAgIC8vIFJlc3RhcnQgdGhlIGNvbW1hbmQgYnVmZmVyLgogICAg
IHJlc2V0KCk7CkBAIC0zODYzLDggKzQ0NTcsNjMgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJQYXNz
Q29tbWFuZEJ1ZmZlcjo6Zmx1c2hUb1ByaW1hcnkoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCit2b2lkIFJlbmRlclBhc3NDb21t
YW5kQnVmZmVyOjphZGRSZW5kZXJQYXNzQ29tbWFuZERpYWdub3N0aWNzKENvbnRleHRWayAqY29u
dGV4dFZrKQoreworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvdXQ7CisgICAgaWYgKG1HbG9iYWxN
ZW1vcnlCYXJyaWVyU3JjQWNjZXNzICE9IDAgfHwgbUdsb2JhbE1lbW9yeUJhcnJpZXJEc3RBY2Nl
c3MgIT0gMCkKKyAgICB7CisgICAgICAgIG91dCA8PCAiTWVtb3J5IEJhcnJpZXIgU3JjOiAweCIg
PDwgc3RkOjpoZXggPDwgbUdsb2JhbE1lbW9yeUJhcnJpZXJTcmNBY2Nlc3MKKyAgICAgICAgICAg
IDw8ICIgJnJhcnI7IERzdDogMHgiIDw8IHN0ZDo6aGV4IDw8IG1HbG9iYWxNZW1vcnlCYXJyaWVy
RHN0QWNjZXNzIDw8ICJcXGwiOworICAgIH0KKworICAgIHNpemVfdCBhdHRhY2htZW50Q291bnQg
ICAgICAgICAgICAgPSBtUmVuZGVyUGFzc0Rlc2MuYXR0YWNobWVudENvdW50KCk7CisgICAgc2l6
ZV90IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnRDb3VudCA9IG1SZW5kZXJQYXNzRGVzYy5oYXNEZXB0
aFN0ZW5jaWxBdHRhY2htZW50KCk7CisgICAgc2l6ZV90IGNvbG9yQXR0YWNobWVudENvdW50ICAg
ICAgICA9IGF0dGFjaG1lbnRDb3VudCAtIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnRDb3VudDsKKwor
ICAgIHN0ZDo6c3RyaW5nIGxvYWRPcHMsIHN0b3JlT3BzOworCisgICAgaWYgKGNvbG9yQXR0YWNo
bWVudENvdW50ID4gMCkKKyAgICB7CisgICAgICAgIGxvYWRPcHMgKz0gIiBDb2xvcjogIjsKKyAg
ICAgICAgc3RvcmVPcHMgKz0gIiBDb2xvcjogIjsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvbG9yQXR0YWNobWVudENvdW50OyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGxvYWRPcHMgKz0gR2V0TG9hZE9wU2hvcnRoYW5kKG1BdHRhY2htZW50T3BzW2ldLmxvYWRPcCk7
CisgICAgICAgICAgICBzdG9yZU9wcyArPSBHZXRTdG9yZU9wU2hvcnRoYW5kKG1BdHRhY2htZW50
T3BzW2ldLnN0b3JlT3ApOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnRDb3VudCA+IDApCisgICAgeworICAgICAgICBBU1NFUlQoZGVwdGhTdGVuY2ls
QXR0YWNobWVudENvdW50ID09IDEpOworCisgICAgICAgIGxvYWRPcHMgKz0gIiBEZXB0aC9TdGVu
Y2lsOiAiOworICAgICAgICBzdG9yZU9wcyArPSAiIERlcHRoL1N0ZW5jaWw6ICI7CisgICAgICAg
IHNpemVfdCBkc0luZGV4ID0gY29sb3JBdHRhY2htZW50Q291bnQ7CisKKyAgICAgICAgbG9hZE9w
cyArPSBHZXRMb2FkT3BTaG9ydGhhbmQobUF0dGFjaG1lbnRPcHNbZHNJbmRleF0ubG9hZE9wKTsK
KyAgICAgICAgbG9hZE9wcyArPSBHZXRMb2FkT3BTaG9ydGhhbmQobUF0dGFjaG1lbnRPcHNbZHNJ
bmRleF0uc3RlbmNpbExvYWRPcCk7CisKKyAgICAgICAgc3RvcmVPcHMgKz0gR2V0U3RvcmVPcFNo
b3J0aGFuZChtQXR0YWNobWVudE9wc1tkc0luZGV4XS5zdG9yZU9wKTsKKyAgICAgICAgc3RvcmVP
cHMgKz0gR2V0U3RvcmVPcFNob3J0aGFuZChtQXR0YWNobWVudE9wc1tkc0luZGV4XS5zdGVuY2ls
U3RvcmVPcCk7CisgICAgfQorCisgICAgaWYgKGF0dGFjaG1lbnRDb3VudCA+IDApCisgICAgewor
ICAgICAgICBvdXQgPDwgIkxvYWRPcDogICIgPDwgbG9hZE9wcyA8PCAiXFxsIjsKKyAgICAgICAg
b3V0IDw8ICJTdG9yZU9wOiAiIDw8IHN0b3JlT3BzIDw8ICJcXGwiOworICAgIH0KKworICAgIG91
dCA8PCBtQ29tbWFuZEJ1ZmZlci5kdW1wQ29tbWFuZHMoIlxcbCIpOworICAgIGNvbnRleHRWay0+
YWRkQ29tbWFuZEJ1ZmZlckRpYWdub3N0aWNzKG91dC5zdHIoKSk7Cit9CisKIHZvaWQgUmVuZGVy
UGFzc0NvbW1hbmRCdWZmZXI6OnJlc2V0KCkKIHsKICAgICBtQ29tbWFuZEJ1ZmZlci5yZXNldCgp
OworICAgIG1SZW5kZXJQYXNzU3RhcnRlZCAgICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBt
VmFsaWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50ID0gMDsKKyAgICBtUmViaW5kVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJzICAgID0gZmFsc2U7CiB9CiB9ICAvLyBuYW1lc3BhY2UgcngKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vQ29udGV4dFZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oCmluZGV4IGJhOGJmMmRmNTQ0YmZmZDBjNWM2ZWZk
MzRhNTlmZTA5YzE3NzI3ZmMuLmMyMzM0OWVlNjE2NzE4Y2QwMTUwNDU2YzQzMzY5ZmIxNDc4NDEx
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vQ29udGV4dFZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaApAQCAtMjYsOSArMjYsMjcgQEAg
c3RydWN0IEZlYXR1cmVzVms7CiAKIG5hbWVzcGFjZSByeAogeworY2xhc3MgUHJvZ3JhbUV4ZWN1
dGFibGVWazsKIGNsYXNzIFJlbmRlcmVyVms7CiBjbGFzcyBXaW5kb3dTdXJmYWNlVms7CiAKKy8v
IFRoZSBwb3NzaWJsZSByb3RhdGlvbnMgb2YgdGhlIHN1cmZhY2UvZHJhdyBmcmFtZWJ1ZmZlciwg
dXNlZCBmb3IgcHJlLXJvdGF0aW5nIGdsX1Bvc2l0aW9uCisvLyBpbiB0aGUgdmVydGV4IHNoYWRl
ci4KK2VudW0gY2xhc3MgU3VyZmFjZVJvdGF0aW9uVHlwZQoreworICAgIElkZW50aXR5LAorICAg
IFJvdGF0ZWQ5MERlZ3JlZXMsCisgICAgUm90YXRlZDE4MERlZ3JlZXMsCisgICAgUm90YXRlZDI3
MERlZ3JlZXMsCisgICAgRmxpcHBlZElkZW50aXR5LAorICAgIEZsaXBwZWRSb3RhdGVkOTBEZWdy
ZWVzLAorICAgIEZsaXBwZWRSb3RhdGVkMTgwRGVncmVlcywKKyAgICBGbGlwcGVkUm90YXRlZDI3
MERlZ3JlZXMsCisKKyAgICBJbnZhbGlkRW51bSwKKyAgICBFbnVtQ291bnQgPSBJbnZhbGlkRW51
bSwKK307CisKIHN0cnVjdCBDb21tYW5kQmF0Y2ggZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUK
IHsKICAgICBDb21tYW5kQmF0Y2goKTsKQEAgLTk1LDMxICsxMTMsNjAgQEAgY2xhc3MgQ29tbWFu
ZFF1ZXVlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdms6OlBlcnNpc3RlbnRDb21t
YW5kUG9vbCBtUHJpbWFyeUNvbW1hbmRQb29sOwogfTsKIAotY2xhc3MgT3V0c2lkZVJlbmRlclBh
c3NDb21tYW5kQnVmZmVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCitzdHJ1Y3QgQ29tbWFu
ZEJ1ZmZlckhlbHBlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgT3V0
c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCk7Ci0gICAgfk91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZEJ1ZmZlcigpOwotCi0gICAgdm9pZCBidWZmZXJSZWFkKFZrQWNjZXNzRmxhZ3MgcmVhZEFj
Y2Vzc1R5cGUsIHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlcik7Ci0gICAgdm9pZCBidWZmZXJXcml0
ZShWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSwgdms6OkJ1ZmZlckhlbHBlciAqYnVmZmVy
KTsKLQotICAgIHZvaWQgZmx1c2hUb1ByaW1hcnkodms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpw
cmltYXJ5KTsKKyAgICB2b2lkIGJ1ZmZlclJlYWQodms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3Vy
Y2VVc2VMaXN0LAorICAgICAgICAgICAgICAgICAgICBWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NU
eXBlLAorICAgICAgICAgICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICpidWZmZXIpOworICAg
IHZvaWQgYnVmZmVyV3JpdGUodms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAor
ICAgICAgICAgICAgICAgICAgICAgVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICpidWZmZXIpOworCisgICAgdm9pZCBp
bWFnZVJlYWQodms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAgICAgICAg
ICAgICAgICAgIFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RGbGFncywKKyAgICAgICAgICAgICAg
ICAgICB2azo6SW1hZ2VMYXlvdXQgaW1hZ2VMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgdms6
OkltYWdlSGVscGVyICppbWFnZSk7CisKKyAgICB2b2lkIGltYWdlV3JpdGUodms6OlJlc291cmNl
VXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAgICAgICAgICAgICAgICAgICBWa0ltYWdlQXNw
ZWN0RmxhZ3MgYXNwZWN0RmxhZ3MsCisgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91
dCBpbWFnZUxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlSGVscGVyICppbWFn
ZSk7CisKKyAgICB2b2lkIGltYWdlQmFycmllcihWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNTdGFn
ZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZHN0U3Rh
Z2VNYXNrLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrSW1hZ2VNZW1vcnlCYXJyaWVy
ICZpbWFnZU1lbW9yeUJhcnJpZXIpOwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgJmdldENvbW1h
bmRCdWZmZXIoKSB7IHJldHVybiBtQ29tbWFuZEJ1ZmZlcjsgfQogCi0gICAgYm9vbCBlbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1Db21tYW5kQnVmZmVyLmVtcHR5KCk7IH0KLSAgICB2b2lkIHJlc2V0
KCk7CisgIHByb3RlY3RlZDoKKyAgICBDb21tYW5kQnVmZmVySGVscGVyKCk7CisgICAgfkNvbW1h
bmRCdWZmZXJIZWxwZXIoKTsKIAotICBwcml2YXRlOgorICAgIHZvaWQgZXhlY3V0ZUJhcnJpZXJz
KHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeSk7CisKKyAgICBWa1BpcGVsaW5lU3Rh
Z2VGbGFncyBtSW1hZ2VCYXJyaWVyU3JjU3RhZ2VNYXNrOworICAgIFZrUGlwZWxpbmVTdGFnZUZs
YWdzIG1JbWFnZUJhcnJpZXJEc3RTdGFnZU1hc2s7CisgICAgc3RkOjp2ZWN0b3I8VmtJbWFnZU1l
bW9yeUJhcnJpZXI+IG1JbWFnZU1lbW9yeUJhcnJpZXJzOwogICAgIFZrRmxhZ3MgbUdsb2JhbE1l
bW9yeUJhcnJpZXJTcmNBY2Nlc3M7CiAgICAgVmtGbGFncyBtR2xvYmFsTWVtb3J5QmFycmllckRz
dEFjY2VzczsKICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBtR2xvYmFsTWVtb3J5QmFycmllclN0
YWdlczsKLQogICAgIHZrOjpDb21tYW5kQnVmZmVyIG1Db21tYW5kQnVmZmVyOwogfTsKIAotY2xh
c3MgUmVuZGVyUGFzc0NvbW1hbmRCdWZmZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK2Ns
YXNzIE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBDb21tYW5k
QnVmZmVySGVscGVyCit7CisgIHB1YmxpYzoKKyAgICBPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRC
dWZmZXIoKTsKKyAgICB+T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCk7CisKKyAgICB2
b2lkIGZsdXNoVG9QcmltYXJ5KENvbnRleHRWayAqY29udGV4dFZrLCB2azo6UHJpbWFyeUNvbW1h
bmRCdWZmZXIgKnByaW1hcnkpOworCisgICAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1D
b21tYW5kQnVmZmVyLmVtcHR5KCk7IH0KKyAgICB2b2lkIHJlc2V0KCk7Cit9OworCitjbGFzcyBS
ZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBDb21tYW5kQnVmZmVySGVscGVy
CiB7CiAgIHB1YmxpYzoKICAgICBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigpOwpAQCAtMTM0LDYg
KzE4MSwxMCBAQCBjbGFzcyBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZr
Q2xlYXJWYWx1ZT4gJmNsZWFyVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpD
b21tYW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCk7CiAKKyAgICB2b2lkIGJlZ2luVHJhbnNm
b3JtRmVlZGJhY2soc2l6ZV90IHZhbGlkQnVmZmVyQ291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyICpjb3VudGVyQnVmZmVycywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWJpbmRCdWZmZXIpOworCiAgICAgdm9pZCBjbGVh
clJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCwgY29uc3Qg
VmtDbGVhckNvbG9yVmFsdWUgJmNsZWFyVmFsdWUpCiAgICAgewogICAgICAgICBtQXR0YWNobWVu
dE9wc1thdHRhY2htZW50SW5kZXhdLmxvYWRPcCA9IFZLX0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVB
UjsKQEAgLTE2NywyMSArMjE4LDQyIEBAIGNsYXNzIFJlbmRlclBhc3NDb21tYW5kQnVmZmVyIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIG1BdHRhY2htZW50T3BzW2F0dGFjaG1l
bnRJbmRleF0uc3RlbmNpbFN0b3JlT3AgPSBWS19BVFRBQ0hNRU5UX1NUT1JFX09QX0RPTlRfQ0FS
RTsKICAgICB9CiAKKyAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZnZXRSZW5kZXJBcmVhKCkgY29u
c3QgeyByZXR1cm4gbVJlbmRlckFyZWE7IH0KKwogICAgIGFuZ2xlOjpSZXN1bHQgZmx1c2hUb1By
aW1hcnkoQ29udGV4dFZrICpjb250ZXh0VmssIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJp
bWFyeSk7CiAKLSAgICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gbUNvbW1hbmRCdWZmZXIu
ZW1wdHkoKTsgfQorICAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAhc3RhcnRlZCgpICYm
IG1Db21tYW5kQnVmZmVyLmVtcHR5KCk7IH0KKyAgICBib29sIHN0YXJ0ZWQoKSBjb25zdCB7IHJl
dHVybiBtUmVuZGVyUGFzc1N0YXJ0ZWQ7IH0KICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICB1aW50
MzJfdCBnZXRBbmRSZXNldENvdW50ZXIoKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgY291bnQg
PSBtQ291bnRlcjsKKyAgICAgICAgbUNvdW50ZXIgICAgICAgPSAwOworICAgICAgICByZXR1cm4g
Y291bnQ7CisgICAgfQorCiAgIHByaXZhdGU6CisgICAgdm9pZCBhZGRSZW5kZXJQYXNzQ29tbWFu
ZERpYWdub3N0aWNzKENvbnRleHRWayAqY29udGV4dFZrKTsKKworICAgIHVpbnQzMl90IG1Db3Vu
dGVyOwogICAgIHZrOjpSZW5kZXJQYXNzRGVzYyBtUmVuZGVyUGFzc0Rlc2M7CiAgICAgdms6OkF0
dGFjaG1lbnRPcHNBcnJheSBtQXR0YWNobWVudE9wczsKICAgICB2azo6RnJhbWVidWZmZXIgbUZy
YW1lYnVmZmVyOwogICAgIGdsOjpSZWN0YW5nbGUgbVJlbmRlckFyZWE7CiAgICAgZ2w6OkF0dGFj
aG1lbnRBcnJheTxWa0NsZWFyVmFsdWU+IG1DbGVhclZhbHVlczsKLSAgICB2azo6Q29tbWFuZEJ1
ZmZlciBtQ29tbWFuZEJ1ZmZlcjsKKyAgICBib29sIG1SZW5kZXJQYXNzU3RhcnRlZDsKKworICAg
IC8vIFRyYW5zZm9ybSBmZWVkYmFjayBzdGF0ZQorICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlcnNBcnJheTxWa0J1ZmZlcj4gbVRyYW5zZm9ybUZlZWRiYWNrQ291bnRlckJ1ZmZlcnM7Cisg
ICAgdWludDMyX3QgbVZhbGlkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudDsKKyAgICBib29s
IG1SZWJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnM7CiB9OwogCi1jbGFzcyBDb250ZXh0Vmsg
OiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5k
ZXJQYXNzT3duZXIKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qga01heEdwdUV2ZW50TmFtZUxl
biA9IDMyOwordXNpbmcgRXZlbnROYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
c3RkOjphcnJheTxjaGFyLCBrTWF4R3B1RXZlbnROYW1lTGVuPjsKKworY2xhc3MgQ29udGV4dFZr
IDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQKIHsKICAgcHVibGljOgog
ICAgIENvbnRleHRWayhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBnbDo6RXJyb3JTZXQgKmVycm9y
U2V0LCBSZW5kZXJlclZrICpyZW5kZXJlcik7CkBAIC0yNjYsNiArMzM4LDEyIEBAIGNsYXNzIENv
bnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMg
dms6OlJlbmRlclBhc3NPCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6UHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OkRyYXdFbGVtZW50c1R5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlyZWN0KSBvdmVycmlkZTsKKyAgICBhbmds
ZTo6UmVzdWx0IGNsZWFyV2l0aFJlbmRlclBhc3NPcChjb25zdCBnbDo6UmVjdGFuZ2xlICZjbGVh
ckFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkRyYXdC
dWZmZXJNYXNrIGNsZWFyQ29sb3JCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY2xlYXJEZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGNsZWFyU3RlbmNpbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWa0NsZWFyQ29sb3JWYWx1ZSAmY2xlYXJDb2xvclZhbHVl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQ2xlYXJE
ZXB0aFN0ZW5jaWxWYWx1ZSAmY2xlYXJEZXB0aFN0ZW5jaWxWYWx1ZSk7CiAKICAgICAvLyBEZXZp
Y2UgbG9zcwogICAgIGdsOjpHcmFwaGljc1Jlc2V0U3RhdHVzIGdldFJlc2V0U3RhdHVzKCkgb3Zl
cnJpZGU7CkBAIC0yNzUsMTYgKzM1MywyNCBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29u
dGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAg
IHN0ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIEVYVF9kZWJ1Z19tYXJrZXIKLSAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOwotICAgIHZvaWQgcHVzaEdy
b3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVycmlkZTsKKyAgICBhbmdsZTo6UmVzdWx0IGlu
c2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJy
aWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBj
b25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIGFuZ2xlOjpSZXN1bHQgcG9wR3JvdXBN
YXJrZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIEtIUl9kZWJ1ZwotICAgIHZvaWQgcHVzaERlYnVn
R3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2Fn
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwb3BEZWJ1Z0dyb3VwKCkgb3ZlcnJpZGU7CisgICAgYW5n
bGU6OlJlc3VsdCBwdXNoRGVidWdHcm91cChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgYW5n
bGU6OlJlc3VsdCBwb3BEZWJ1Z0dyb3VwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgaXNWaWV3cG9ydEZsaXBFbmFibGVkRm9yRHJhd0ZCTygpIGNvbnN0
OwogICAgIGJvb2wgaXNWaWV3cG9ydEZsaXBFbmFibGVkRm9yUmVhZEZCTygpIGNvbnN0OworICAg
IC8vIFdoZW4gdGhlIGRldmljZS9zdXJmYWNlIGlzIHJvdGF0ZWQgc3VjaCB0aGF0IHRoZSBzdXJm
YWNlJ3MgYXNwZWN0IHJhdGlvIGlzIGRpZmZlcmVudCB0aGFuCisgICAgLy8gdGhlIG5hdGl2ZSBk
ZXZpY2UgKGUuZy4gOTAgZGVncmVlcyksIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB2aWV3
cG9ydCwgc2Npc3NvciwgYW5kCisgICAgLy8gcmVuZGVyIGFyZWEgbXVzdCBiZSBzd2FwcGVkLgor
ICAgIGJvb2wgaXNSb3RhdGVkQXNwZWN0UmF0aW9Gb3JEcmF3RkJPKCkgY29uc3Q7CisgICAgYm9v
bCBpc1JvdGF0ZWRBc3BlY3RSYXRpb0ZvclJlYWRGQk8oKSBjb25zdDsKIAogICAgIC8vIFN0YXRl
IHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgogICAgIGFuZ2xlOjpSZXN1bHQgc3luY1N0YXRlKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LApAQCAtMzQwLDkgKzQyNiw2IEBAIGNsYXNzIENvbnRleHRW
ayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMgdms6OlJl
bmRlclBhc3NPCiAgICAgLy8gUHJvZ3JhbSBQaXBlbGluZSBvYmplY3QgY3JlYXRpb24KICAgICBQ
cm9ncmFtUGlwZWxpbmVJbXBsICpjcmVhdGVQcm9ncmFtUGlwZWxpbmUoY29uc3QgZ2w6OlByb2dy
YW1QaXBlbGluZVN0YXRlICZkYXRhKSBvdmVycmlkZTsKIAotICAgIC8vIFBhdGggb2JqZWN0IGNy
ZWF0aW9uCi0gICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSkg
b3ZlcnJpZGU7Ci0KICAgICAvLyBNZW1vcnkgb2JqZWN0IGNyZWF0aW9uLgogICAgIE1lbW9yeU9i
amVjdEltcGwgKmNyZWF0ZU1lbW9yeU9iamVjdCgpIG92ZXJyaWRlOwogCkBAIC0zNjUsNyArNDQ4
LDYgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNv
bnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc08KICAgICBlZ2w6OkNvbnRleHRQcmlvcml0eSBn
ZXRQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1Db250ZXh0UHJpb3JpdHk7IH0KIAogICAgIEFO
R0xFX0lOTElORSBjb25zdCBhbmdsZTo6RmVhdHVyZXNWayAmZ2V0RmVhdHVyZXMoKSBjb25zdCB7
IHJldHVybiBtUmVuZGVyZXItPmdldEZlYXR1cmVzKCk7IH0KLSAgICBBTkdMRV9JTkxJTkUgYm9v
bCBjb21tYW5kR3JhcGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZ2V0RmVhdHVyZXMoKS5jb21t
YW5kR3JhcGguZW5hYmxlZDsgfQogCiAgICAgQU5HTEVfSU5MSU5FIHZvaWQgaW52YWxpZGF0ZVZl
cnRleEFuZEluZGV4QnVmZmVycygpCiAgICAgewpAQCAtNDc3LDkgKzU1OSw2IEBAIGNsYXNzIENv
bnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMg
dms6OlJlbmRlclBhc3NPCiAgICAgYW5nbGU6OlJlc3VsdCBnZXROZXh0U3VibWl0RmVuY2Uodms6
OlNoYXJlZDx2azo6RmVuY2U+ICpzaGFyZWRGZW5jZU91dCk7CiAgICAgdms6OlNoYXJlZDx2azo6
RmVuY2U+IGdldExhc3RTdWJtaXR0ZWRGZW5jZSgpIGNvbnN0OwogCi0gICAgLy8gVGhpcyBzaG91
bGQgb25seSBiZSBjYWxsZWQgZnJvbSBSZXNvdXJjZVZrLgotICAgIHZrOjpDb21tYW5kR3JhcGgg
KmdldENvbW1hbmRHcmFwaCgpIHsgcmV0dXJuICZtQ29tbWFuZEdyYXBoOyB9Ci0KICAgICB2azo6
U2hhZGVyTGlicmFyeSAmZ2V0U2hhZGVyTGlicmFyeSgpIHsgcmV0dXJuIG1TaGFkZXJMaWJyYXJ5
OyB9CiAgICAgVXRpbHNWayAmZ2V0VXRpbHMoKSB7IHJldHVybiBtVXRpbHM7IH0KIApAQCAtNDkw
LDcgKzU2OSw3IEBAIGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGlj
IHZrOjpDb250ZXh0LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAgLy8gYXJlIFRSQUNFX0VW
RU5UX1BIQVNFXyoKICAgICBBTkdMRV9JTkxJTkUgYW5nbGU6OlJlc3VsdCB0cmFjZUdwdUV2ZW50
KHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgcGhhc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXZlbnROYW1lICZu
YW1lKQogICAgIHsKICAgICAgICAgaWYgKG1HcHVFdmVudHNFbmFibGVkKQogICAgICAgICAgICAg
cmV0dXJuIHRyYWNlR3B1RXZlbnRJbXBsKGNvbW1hbmRCdWZmZXIsIHBoYXNlLCBuYW1lKTsKQEAg
LTUwOCw4ICs1ODcsOSBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1
YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAgIC8vIGF2b2lkIGNh
bGxpbmcgdmtBbGxvY2F0ZURlc2N0aXBvclNldHMgZWFjaCB0ZXh0dXJlIHVwZGF0ZS4KICAgICBT
ZXJpYWwgZ2VuZXJhdGVUZXh0dXJlU2VyaWFsKCkgeyByZXR1cm4gbVRleHR1cmVTZXJpYWxGYWN0
b3J5LmdlbmVyYXRlKCk7IH0KICAgICBjb25zdCB2azo6VGV4dHVyZURlc2NyaXB0b3JEZXNjICZn
ZXRBY3RpdmVUZXh0dXJlc0Rlc2MoKSBjb25zdCB7IHJldHVybiBtQWN0aXZlVGV4dHVyZXNEZXNj
OyB9CisgICAgU2VyaWFsIGdlbmVyYXRlQXR0YWNobWVudEltYWdlU2VyaWFsKCkgeyByZXR1cm4g
bUF0dGFjaG1lbnRJbWFnZVNlcmlhbEZhY3RvcnkuZ2VuZXJhdGUoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVTY2lzc29yKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSk7CisgICAgYW5nbGU6OlJlc3Vs
dCB1cGRhdGVTY2lzc29yKGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSk7CiAKICAgICBib29sIGVt
dWxhdGVTZWFtZnVsQ3ViZU1hcFNhbXBsaW5nKCkgY29uc3QgeyByZXR1cm4gbUVtdWxhdGVTZWFt
ZnVsQ3ViZU1hcFNhbXBsaW5nOyB9CiAKQEAgLTUxOSwzNSArNTk5LDY5IEBAIGNsYXNzIENvbnRl
eHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMgdms6
OlJlbmRlclBhc3NPCiAKICAgICB2azo6UmVzb3VyY2VVc2VMaXN0ICZnZXRSZXNvdXJjZVVzZUxp
c3QoKSB7IHJldHVybiBtUmVzb3VyY2VVc2VMaXN0OyB9CiAKLSAgICB2b2lkIG9uQnVmZmVyUmVh
ZChWa0FjY2Vzc0ZsYWdzIHJlYWRBY2Nlc3NUeXBlLCB2azo6QnVmZmVySGVscGVyICpidWZmZXIp
OwotICAgIHZvaWQgb25CdWZmZXJXcml0ZShWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSwg
dms6OkJ1ZmZlckhlbHBlciAqYnVmZmVyKTsKLSAgICBhbmdsZTo6UmVzdWx0IGdldE91dHNpZGVS
ZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcih2azo6Q29tbWFuZEJ1ZmZlciAqKmNvbW1hbmRCdWZmZXJP
dXQpCisgICAgYW5nbGU6OlJlc3VsdCBvbkJ1ZmZlclJlYWQoVmtBY2Nlc3NGbGFncyByZWFkQWNj
ZXNzVHlwZSwgdms6OkJ1ZmZlckhlbHBlciAqYnVmZmVyKTsKKyAgICBhbmdsZTo6UmVzdWx0IG9u
QnVmZmVyV3JpdGUoVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUsIHZrOjpCdWZmZXJIZWxw
ZXIgKmJ1ZmZlcik7CisKKyAgICBhbmdsZTo6UmVzdWx0IG9uSW1hZ2VSZWFkKFZrSW1hZ2VBc3Bl
Y3RGbGFncyBhc3BlY3RGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJ
bWFnZUxheW91dCBpbWFnZUxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjpJbWFnZUhlbHBlciAqaW1hZ2UpOworCisgICAgYW5nbGU6OlJlc3VsdCBvbkltYWdlV3JpdGUo
VmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdEZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpJbWFnZUxheW91dCBpbWFnZUxheW91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgKmltYWdlKTsKKworICAgIHZvaWQgb25SZW5kZXJQ
YXNzSW1hZ2VXcml0ZShWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0RmxhZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUxheW91dCBpbWFnZUxheW91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlSGVscGVyICppbWFnZSk7CisKKyAg
ICBhbmdsZTo6UmVzdWx0IGVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKHZrOjpDb21t
YW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCkKICAgICB7Ci0gICAgICAgIGlmICghbVJlbmRl
clBhc3NDb21tYW5kcy5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBBTkdMRV9UUlko
bVJlbmRlclBhc3NDb21tYW5kcy5mbHVzaFRvUHJpbWFyeSh0aGlzLCAmbVByaW1hcnlDb21tYW5k
cykpOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShlbmRSZW5kZXJQYXNzKCkpOwogICAg
ICAgICAqY29tbWFuZEJ1ZmZlck91dCA9ICZtT3V0c2lkZVJlbmRlclBhc3NDb21tYW5kcy5nZXRD
b21tYW5kQnVmZmVyKCk7CiAgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsK
ICAgICB9CiAKLSAgICB2b2lkIGJlZ2luUmVuZGVyUGFzcyhjb25zdCB2azo6RnJhbWVidWZmZXIg
JmZyYW1lYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OlJlbmRl
clBhc3NEZXNjICZyZW5kZXJQYXNzRGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2azo6QXR0YWNobWVudE9wc0FycmF5ICZyZW5kZXJQYXNzQXR0YWNobWVudE9wcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWa0NsZWFyVmFsdWU+ICZjbGVh
clZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqKmNv
bW1hbmRCdWZmZXJPdXQpOworICAgIGFuZ2xlOjpSZXN1bHQgZmx1c2hBbmRCZWdpblJlbmRlclBh
c3MoY29uc3Qgdms6OkZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlbmRlckFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6UmVu
ZGVyUGFzc0Rlc2MgJnJlbmRlclBhc3NEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdms6OkF0dGFjaG1lbnRPcHNBcnJheSAmcmVuZGVyUGFzc0F0
dGFjaG1lbnRPcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxWa0NsZWFyVmFsdWU+ICZjbGVhclZhbHVlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICoqY29tbWFu
ZEJ1ZmZlck91dCk7CisKKyAgICBib29sIGhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkgY29uc3QgeyBy
ZXR1cm4gIW1SZW5kZXJQYXNzQ29tbWFuZHMuZW1wdHkoKTsgfQogCi0gICAgUmVuZGVyUGFzc0Nv
bW1hbmRCdWZmZXIgJmdldFJlbmRlclBhc3NDb21tYW5kQnVmZmVyKCkKKyAgICBSZW5kZXJQYXNz
Q29tbWFuZEJ1ZmZlciAmZ2V0U3RhcnRlZFJlbmRlclBhc3NDb21tYW5kcygpCiAgICAgewotICAg
ICAgICBpZiAoIW1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmVtcHR5KCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIG1PdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzLmZsdXNoVG9QcmltYXJ5KCZt
UHJpbWFyeUNvbW1hbmRzKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoaGFzU3RhcnRlZFJl
bmRlclBhc3MoKSk7CiAgICAgICAgIHJldHVybiBtUmVuZGVyUGFzc0NvbW1hbmRzOwogICAgIH0K
IAorICAgIGFuZ2xlOjpSZXN1bHQgZmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcih2azo6
UHJpbWFyeUNvbW1hbmRCdWZmZXIgKipwcmltYXJ5Q29tbWFuZHMpCisgICAgeworICAgICAgICBm
bHVzaE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZHMoKTsKKyAgICAgICAgQU5HTEVfVFJZKGVuZFJl
bmRlclBhc3MoKSk7CisgICAgICAgICpwcmltYXJ5Q29tbWFuZHMgPSAmbVByaW1hcnlDb21tYW5k
czsKKworICAgICAgICAvLyBXZSBhc3N1bWUgYW55IGNhbGxpbmcgY29kZSBpcyBnb2luZyB0byBy
ZWNvcmQgcHJpbWFyeSBjb21tYW5kcy4KKyAgICAgICAgbUhhc1ByaW1hcnlDb21tYW5kcyA9IHRy
dWU7CisgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKKyAgICB9CisKICAg
ICBlZ2w6OkNvbnRleHRQcmlvcml0eSBnZXRDb250ZXh0UHJpb3JpdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtQ29udGV4dFByaW9yaXR5OyB9CisgICAgYW5nbGU6OlJlc3VsdCBlbmRSZW5k
ZXJQYXNzKCk7CisKKyAgICBhbmdsZTo6UmVzdWx0IHN5bmNFeHRlcm5hbE1lbW9yeSgpOworCisg
ICAgdm9pZCBhZGRDb21tYW5kQnVmZmVyRGlhZ25vc3RpY3MoY29uc3Qgc3RkOjpzdHJpbmcgJmNv
bW1hbmRCdWZmZXJEaWFnbm9zdGljcyk7CisKKyAgICBWa0luZGV4VHlwZSBnZXRWa0luZGV4VHlw
ZShnbDo6RHJhd0VsZW1lbnRzVHlwZSBnbEluZGV4VHlwZSkgY29uc3Q7CisgICAgc2l6ZV90IGdl
dFZrSW5kZXhUeXBlU2l6ZShnbDo6RHJhd0VsZW1lbnRzVHlwZSBnbEluZGV4VHlwZSkgY29uc3Q7
CisgICAgYm9vbCBzaG91bGRDb252ZXJ0VWludDhWa0luZGV4VHlwZShnbDo6RHJhd0VsZW1lbnRz
VHlwZSBnbEluZGV4VHlwZSkgY29uc3Q7CisKKyAgICBjb25zdCBQcm9ncmFtRXhlY3V0YWJsZVZr
ICpnZXRFeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbUV4ZWN1dGFibGU7IH0KKyAgICBQcm9n
cmFtRXhlY3V0YWJsZVZrICpnZXRFeGVjdXRhYmxlKCkgeyByZXR1cm4gbUV4ZWN1dGFibGU7IH0K
KworICAgIFByb2dyYW1WayAqZ2V0U2hhZGVyUHJvZ3JhbShjb25zdCBnbDo6U3RhdGUgJmdsU3Rh
dGUsIGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUpIGNvbnN0OwogCiAgIHByaXZhdGU6CiAgICAg
Ly8gRGlydHkgYml0cy4KQEAgLTYwOCwxMyArNzIyLDkgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVi
bGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFz
c08KICAgICAvLyAgIHN1Ym1pdHRlZCwgdGhlIHF1ZXJ5IGlzIG5vdCBjaGVja2VkIHRvIGF2b2lk
IGluY3VyaW5nIGEgZmx1c2guCiAgICAgc3RydWN0IEdwdUV2ZW50UXVlcnkgZmluYWwKICAgICB7
Ci0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgICAgIEV2ZW50TmFtZSBuYW1lOwogICAg
ICAgICBjaGFyIHBoYXNlOwotCi0gICAgICAgIHVpbnQzMl90IHF1ZXJ5SW5kZXg7Ci0gICAgICAg
IHNpemVfdCBxdWVyeVBvb2xJbmRleDsKLQotICAgICAgICBTZXJpYWwgc2VyaWFsOworICAgICAg
ICB2azo6UXVlcnlIZWxwZXIgcXVlcnlIZWxwZXI7CiAgICAgfTsKIAogICAgIC8vIE9uY2UgYSBx
dWVyeSByZXN1bHQgaXMgYXZhaWxhYmxlLCB0aGUgdGltZXN0YW1wIGlzIHJlYWQgYW5kIGEgR3B1
RXZlbnQgb2JqZWN0IGlzIGtlcHQgdW50aWwKQEAgLTYyMyw3ICs3MzMsNyBAQCBjbGFzcyBDb250
ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZr
OjpSZW5kZXJQYXNzTwogICAgIHN0cnVjdCBHcHVFdmVudCBmaW5hbAogICAgIHsKICAgICAgICAg
dWludDY0X3QgZ3B1VGltZXN0YW1wQ3ljbGVzOwotICAgICAgICBjb25zdCBjaGFyICpuYW1lOwor
ICAgICAgICBzdGQ6OmFycmF5PGNoYXIsIGtNYXhHcHVFdmVudE5hbWVMZW4+IG5hbWU7CiAgICAg
ICAgIGNoYXIgcGhhc2U7CiAgICAgfTsKIApAQCAtNjk2LDEwICs4MDYsMTIgQEAgY2xhc3MgQ29u
dGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2
azo6UmVuZGVyUGFzc08KICAgICB2b2lkIHVwZGF0ZURlcHRoUmFuZ2UoZmxvYXQgbmVhclBsYW5l
LCBmbG9hdCBmYXJQbGFuZSk7CiAgICAgdm9pZCB1cGRhdGVGbGlwVmlld3BvcnREcmF3RnJhbWVi
dWZmZXIoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKTsKICAgICB2b2lkIHVwZGF0ZUZsaXBWaWV3
cG9ydFJlYWRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpOworICAgIHZvaWQg
dXBkYXRlU3VyZmFjZVJvdGF0aW9uRHJhd0ZyYW1lYnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmZ2xT
dGF0ZSk7CisgICAgdm9pZCB1cGRhdGVTdXJmYWNlUm90YXRpb25SZWFkRnJhbWVidWZmZXIoY29u
c3QgZ2w6OlN0YXRlICZnbFN0YXRlKTsKIAogICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlQWN0aXZl
VGV4dHVyZXMoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwogICAgIGFuZ2xlOjpSZXN1bHQg
dXBkYXRlQWN0aXZlSW1hZ2VzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVj
b3JkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZm
ZXJIZWxwZXIgKmNvbW1hbmRCdWZmZXJIZWxwZXIpOwogICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRl
RGVmYXVsdEF0dHJpYnV0ZShzaXplX3QgYXR0cmliSW5kZXgpOwogCiAgICAgQU5HTEVfSU5MSU5F
IHZvaWQgaW52YWxpZGF0ZUN1cnJlbnRHcmFwaGljc1BpcGVsaW5lKCkKQEAgLTc1OSwxMCArODcx
LDEwIEBAIGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpD
b250ZXh0LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAgLy8gQ29tbW9uIHBhcnRzIG9mIHRo
ZSBjb21tb24gZGlydHkgYml0IGhhbmRsZXJzLgogICAgIGFuZ2xlOjpSZXN1bHQgaGFuZGxlRGly
dHlUZXh0dXJlc0ltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1
ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21t
YW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlckhlbHBlciAqY29tbWFuZEJ1ZmZlckhlbHBlcik7
CiAgICAgYW5nbGU6OlJlc3VsdCBoYW5kbGVEaXJ0eVNoYWRlclJlc291cmNlc0ltcGwoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFw
aFJlc291cmNlICpyZWNvcmRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlckhlbHBlciAqY29tbWFuZEJ1ZmZlckhlbHBlcik7
CiAgICAgdm9pZCBoYW5kbGVEaXJ0eURyaXZlclVuaWZvcm1zQmluZGluZ0ltcGwodms6OkNvbW1h
bmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmtQaXBlbGluZUJpbmRQb2ludCBiaW5kUG9pbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRHJpdmVyVW5pZm9ybXNE
ZXNjcmlwdG9yU2V0ICZkcml2ZXJVbmlmb3Jtcyk7CkBAIC03ODIsMTMgKzg5NCwxMiBAQCBjbGFz
cyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVi
bGljIHZrOjpSZW5kZXJQYXNzTwogCiAgICAgYW5nbGU6OlJlc3VsdCBzdWJtaXRGcmFtZShjb25z
dCBWa1N1Ym1pdEluZm8gJnN1Ym1pdEluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgJiZjb21tYW5kQnVmZmVyKTsKLSAgICBhbmdsZTo6
UmVzdWx0IGZsdXNoQ29tbWFuZEdyYXBoKHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqY29tbWFu
ZEJhdGNoKTsKLSAgICB2b2lkIG1lbW9yeUJhcnJpZXJJbXBsKEdMYml0ZmllbGQgYmFycmllcnMs
IFZrUGlwZWxpbmVTdGFnZUZsYWdzIHN0YWdlTWFzayk7CisgICAgYW5nbGU6OlJlc3VsdCBtZW1v
cnlCYXJyaWVySW1wbChHTGJpdGZpZWxkIGJhcnJpZXJzLCBWa1BpcGVsaW5lU3RhZ2VGbGFncyBz
dGFnZU1hc2spOwogCiAgICAgYW5nbGU6OlJlc3VsdCBzeW5jaHJvbml6ZUNwdUdwdVRpbWUoKTsK
ICAgICBhbmdsZTo6UmVzdWx0IHRyYWNlR3B1RXZlbnRJbXBsKHZrOjpQcmltYXJ5Q29tbWFuZEJ1
ZmZlciAqY29tbWFuZEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgcGhhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV2
ZW50TmFtZSAmbmFtZSk7CiAgICAgYW5nbGU6OlJlc3VsdCBjaGVja0NvbXBsZXRlZEdwdUV2ZW50
cygpOwogICAgIHZvaWQgZmx1c2hHcHVFdmVudHMoZG91YmxlIG5leHRTeW5jR3B1VGltZXN0YW1w
UywgZG91YmxlIG5leHRTeW5jQ3B1VGltZXN0YW1wUyk7CiAgICAgdm9pZCBoYW5kbGVEZXZpY2VM
b3N0KCk7CkBAIC03OTksMTUgKzkxMCwyNyBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29u
dGV4dEltcGwsIHB1YmxpYyB2azo6Q29udGV4dCwgcHVibGljIHZrOjpSZW5kZXJQYXNzTwogICAg
IGFuZ2xlOjpSZXN1bHQgZW5zdXJlU3VibWl0RmVuY2VJbml0aWFsaXplZCgpOwogICAgIGFuZ2xl
OjpSZXN1bHQgc3RhcnRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigpOwogICAgIGJvb2wgaGFzUmVjb3Jk
ZWRDb21tYW5kcygpOworICAgIHZvaWQgZHVtcENvbW1hbmRTdHJlYW1EaWFnbm9zdGljcygpOwor
ICAgIHZvaWQgZmx1c2hPdXRzaWRlUmVuZGVyUGFzc0NvbW1hbmRzKCk7CisKKyAgICBBTkdMRV9J
TkxJTkUgdm9pZCBvblJlbmRlclBhc3NGaW5pc2hlZCgpIHsgbVJlbmRlclBhc3NDb21tYW5kQnVm
ZmVyID0gbnVsbHB0cjsgfQorCisgICAgdm9pZCBpbml0SW5kZXhUeXBlTWFwKCk7CiAKICAgICBz
dGQ6OmFycmF5PERpcnR5Qml0SGFuZGxlciwgRElSVFlfQklUX01BWD4gbUdyYXBoaWNzRGlydHlC
aXRIYW5kbGVyczsKICAgICBzdGQ6OmFycmF5PERpcnR5Qml0SGFuZGxlciwgRElSVFlfQklUX01B
WD4gbUNvbXB1dGVEaXJ0eUJpdEhhbmRsZXJzOwogCisgICAgdms6OkNvbW1hbmRCdWZmZXIgKm1S
ZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcjsKKwogICAgIHZrOjpQaXBlbGluZUhlbHBlciAqbUN1cnJl
bnRHcmFwaGljc1BpcGVsaW5lOwogICAgIHZrOjpQaXBlbGluZUFuZFNlcmlhbCAqbUN1cnJlbnRD
b21wdXRlUGlwZWxpbmU7CiAgICAgZ2w6OlByaW1pdGl2ZU1vZGUgbUN1cnJlbnREcmF3TW9kZTsK
IAogICAgIFdpbmRvd1N1cmZhY2VWayAqbUN1cnJlbnRXaW5kb3dTdXJmYWNlOworICAgIC8vIFJl
Y29yZHMgdGhlIGN1cnJlbnQgcm90YXRpb24gb2YgdGhlIHN1cmZhY2UgKGRyYXcvcmVhZCkgZnJh
bWVidWZmZXIsIGRlcml2ZWQgZnJvbQorICAgIC8vIG1DdXJyZW50V2luZG93U3VyZmFjZS0+Z2V0
UHJlVHJhbnNmb3JtKCkuCisgICAgU3VyZmFjZVJvdGF0aW9uVHlwZSBtQ3VycmVudFJvdGF0aW9u
RHJhd0ZyYW1lYnVmZmVyOworICAgIFN1cmZhY2VSb3RhdGlvblR5cGUgbUN1cnJlbnRSb3RhdGlv
blJlYWRGcmFtZWJ1ZmZlcjsKIAogICAgIC8vIEtlZXAgYSBjYWNoZWQgcGlwZWxpbmUgZGVzY3Jp
cHRpb24gc3RydWN0dXJlIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVlcnkgdGhlIHBpcGVsaW5lIGNh
Y2hlLgogICAgIC8vIEtlcHQgaW4gYSBwb2ludGVyIHNvIGFsbG9jYXRpb25zIGNhbiBiZSBhbGln
bmVkLCBhbmQgc3RydWN0cyBjYW4gYmUgcG9ydGFibHkgcGFja2VkLgpAQCAtODMzLDYgKzk1Niw3
IEBAIGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGljIHZrOjpDb250
ZXh0LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAgVmVydGV4QXJyYXlWayAqbVZlcnRleEFy
cmF5OwogICAgIEZyYW1lYnVmZmVyVmsgKm1EcmF3RnJhbWVidWZmZXI7CiAgICAgUHJvZ3JhbVZr
ICptUHJvZ3JhbTsKKyAgICBQcm9ncmFtRXhlY3V0YWJsZVZrICptRXhlY3V0YWJsZTsKIAogICAg
IC8vIEdyYXBoIHJlc291cmNlIHVzZWQgdG8gcmVjb3JkIGRpc3BhdGNoIGNvbW1hbmRzIGFuZCBo
b2xkIHJlc291cmNlIGRlcGVuZGVuY2llcy4KICAgICB2azo6RGlzcGF0Y2hIZWxwZXIgbURpc3Bh
dGNoZXI7CkBAIC04NDAsNiArOTY0LDcgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRl
eHRJbXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc08KICAgICAv
LyBUaGUgb2Zmc2V0IHdlIGhhZCB0aGUgbGFzdCB0aW1lIHdlIGJvdW5kIHRoZSBpbmRleCBidWZm
ZXIuCiAgICAgY29uc3QgR0x2b2lkICptTGFzdEluZGV4QnVmZmVyT2Zmc2V0OwogICAgIGdsOjpE
cmF3RWxlbWVudHNUeXBlIG1DdXJyZW50RHJhd0VsZW1lbnRzVHlwZTsKKyAgICBhbmdsZTo6UGFj
a2VkRW51bU1hcDxnbDo6RHJhd0VsZW1lbnRzVHlwZSwgVmtJbmRleFR5cGU+IG1JbmRleFR5cGVN
YXA7CiAKICAgICAvLyBDYWNoZSB0aGUgY3VycmVudCBkcmF3IGNhbGwncyBmaXJzdFZlcnRleCB0
byBiZSBwYXNzZWQgdG8KICAgICAvLyBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpnZXRCdWZmZXJPZmZz
ZXRzLiAgVW5mb3J0dW5hdGVseSwgZ2xfQmFzZVZlcnRleCBzdXBwb3J0IGluIFZ1bGthbiBpcwpA
QCAtOTA1LDE0ICsxMDMwLDEyIEBAIGNsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1w
bCwgcHVibGljIHZrOjpDb250ZXh0LCBwdWJsaWMgdms6OlJlbmRlclBhc3NPCiAgICAgLy8gUG9v
bCBhbGxvY2F0b3IgdXNlZCBmb3IgY29tbWFuZCBncmFwaCBidXQgbWF5IGJlIGV4cGFuZGVkIHRv
IG90aGVyIGFsbG9jYXRpb25zCiAgICAgYW5nbGU6OlBvb2xBbGxvY2F0b3IgbVBvb2xBbGxvY2F0
b3I7CiAKLSAgICAvLyBTZWUgQ29tbWFuZEdyYXBoLmggZm9yIGEgZGVzcmlwdGlvbiBvZiB0aGUg
Q29tbWFuZCBHcmFwaC4KLSAgICB2azo6Q29tbWFuZEdyYXBoIG1Db21tYW5kR3JhcGg7Ci0KICAg
ICAvLyBXaGVuIHRoZSBjb21tYW5kIGdyYXBoIGlzIGRpc2FibGVkIHdlIHJlY29yZCBjb21tYW5k
cyBjb21wbGV0ZWx5IGxpbmVhcmx5LiBXZSBoYXZlIHBsYW5zIHRvCiAgICAgLy8gcmVvcmRlciBp
bmRlcGVuZGVudCBkcmF3cyBzbyB0aGF0IHdlIGNhbiBjcmVhdGUgZmV3ZXIgUmVuZGVyUGFzc2Vz
IGluIHNvbWUgc2NlbmFyaW9zLgogICAgIE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciBt
T3V0c2lkZVJlbmRlclBhc3NDb21tYW5kczsKICAgICBSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlciBt
UmVuZGVyUGFzc0NvbW1hbmRzOwogICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciBtUHJpbWFy
eUNvbW1hbmRzOworICAgIGJvb2wgbUhhc1ByaW1hcnlDb21tYW5kczsKIAogICAgIC8vIEludGVy
bmFsIHNoYWRlciBsaWJyYXJ5LgogICAgIHZrOjpTaGFkZXJMaWJyYXJ5IG1TaGFkZXJMaWJyYXJ5
OwpAQCAtOTM4LDggKzEwNjEsMTMgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJ
bXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc08KICAgICAvLyBk
b3VibGUuCiAgICAgdWludDY0X3QgbUdwdUV2ZW50VGltZXN0YW1wT3JpZ2luOwogCi0gICAgLy8g
R2VuZXJhdG9yIGZvciB0ZXh1cmUgc2VyaWFscy4KKyAgICAvLyBVc2VkIHRvIGNvdW50IGV2ZW50
cyBmb3IgdHJhY2luZy4KKyAgICB1aW50MzJfdCBtUHJpbWFyeUJ1ZmZlckNvdW50ZXI7CisgICAg
dWludDMyX3QgbVJlbmRlclBhc3NDb3VudGVyOworCisgICAgLy8gR2VuZXJhdG9ycyBmb3IgdGV4
dHVyZSAmIGZyYW1lYnVmZmVyIHNlcmlhbHMuCiAgICAgU2VyaWFsRmFjdG9yeSBtVGV4dHVyZVNl
cmlhbEZhY3Rvcnk7CisgICAgU2VyaWFsRmFjdG9yeSBtQXR0YWNobWVudEltYWdlU2VyaWFsRmFj
dG9yeTsKIAogICAgIGdsOjpTdGF0ZTo6RGlydHlCaXRzIG1QaXBlbGluZURpcnR5Qml0c01hc2s7
CiAKQEAgLTk0Nyw2ICsxMDc1LDggQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJ
bXBsLCBwdWJsaWMgdms6OkNvbnRleHQsIHB1YmxpYyB2azo6UmVuZGVyUGFzc08KICAgICB2azo6
UmVzb3VyY2VVc2VMaXN0IG1SZXNvdXJjZVVzZUxpc3Q7CiAKICAgICBlZ2w6OkNvbnRleHRQcmlv
cml0eSBtQ29udGV4dFByaW9yaXR5OworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1D
b21tYW5kQnVmZmVyRGlhZ25vc3RpY3M7CiB9OwogfSAgLy8gbmFtZXNwYWNlIHJ4CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRGlzcGxheVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmNwcAppbmRleCBiN2M3ZjUyYjAyYjViMzQ0OTcyY2Qz
MGJhZThjNzBkZmRhNTk0MTRhLi4yOTRhYTcyODc5NDlhOThlYmUyODU2ZTZkZmM0OGJiOWE4MWI4
NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuY3BwCkBAIC05Miw4ICs5Miwx
MyBAQCBlZ2w6OkVycm9yIERpc3BsYXlWazo6d2FpdENsaWVudChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCkKIAogZWdsOjpFcnJvciBEaXNwbGF5Vms6OndhaXROYXRpdmUoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEVHTGludCBlbmdpbmUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBlZ2w6OkVnbEJhZEFjY2VzcygpOworICAgIEFOR0xFX1RSQUNFX0VWRU5UMCgi
Z3B1LmFuZ2xlIiwgIkRpc3BsYXlWazo6d2FpdE5hdGl2ZSIpOworICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0VG9FR0wod2FpdE5hdGl2ZUltcGwoKSk7Cit9CisKK2FuZ2xlOjpSZXN1bHQgRGlzcGxh
eVZrOjp3YWl0TmF0aXZlSW1wbCgpCit7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheVZrOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKQEAgLTE2OSw3ICsxNzQsNyBAQCBnbDo6VmVy
c2lvbiBEaXNwbGF5Vms6OmdldE1heENvbmZvcm1hbnRFU1ZlcnNpb24oKSBjb25zdAogCiB2b2lk
IERpc3BsYXlWazo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91
dEV4dGVuc2lvbnMpIGNvbnN0CiB7Ci0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJv
YnVzdG5lc3MgICAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJv
YnVzdG5lc3MgICAgICA9IGdldFJlbmRlcmVyKCktPmdldE5hdGl2ZUV4dGVuc2lvbnMoKS5yb2J1
c3RuZXNzOwogICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VPcmllbnRhdGlvbiAgICAgICAgICAg
PSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPmRpc3BsYXlUZXh0dXJlU2hhcmVHcm91cCAgICAg
PSB0cnVlOwogICAgIG91dEV4dGVuc2lvbnMtPnJvYnVzdFJlc291cmNlSW5pdGlhbGl6YXRpb24g
PSB0cnVlOwpAQCAtMTk4LDcgKzIwMyw4IEBAIHZvaWQgRGlzcGxheVZrOjpnZW5lcmF0ZUV4dGVu
c2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKICAgICBv
dXRFeHRlbnNpb25zLT5mcmFtZWJ1ZmZlclRhcmdldEFORFJPSUQgPSB0cnVlOwogI2VuZGlmICAv
LyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCiAKLSAgICBvdXRFeHRlbnNpb25zLT5j
b250ZXh0UHJpb3JpdHkgPSB0cnVlOworICAgIC8vIERpc2FibGUgY29udGV4dCBwcmlvcml0eSB3
aGVuIG5vbi16ZXJvIG1lbW9yeSBpbml0IGlzIGVuYWJsZWQuIFRoaXMgZW5mb3JjZXMgYSBxdWV1
ZSBvcmRlci4KKyAgICBvdXRFeHRlbnNpb25zLT5jb250ZXh0UHJpb3JpdHkgPSAhZ2V0UmVuZGVy
ZXIoKS0+Z2V0RmVhdHVyZXMoKS5hbGxvY2F0ZU5vblplcm9NZW1vcnkuZW5hYmxlZDsKICAgICBv
dXRFeHRlbnNpb25zLT5ub0NvbmZpZ0NvbnRleHQgPSB0cnVlOwogCiAjaWYgZGVmaW5lZChBTkdM
RV9QTEFURk9STV9HR1ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaAppbmRleCBlZjU4
NjM4NDg4NmRhZjVmOTAzNWE1Y2Y5MDc2ZmJkNjMyYzk0NzYyLi4zOTJlYjFhMTZjZTY2YmJmNmNk
M2NlMzM1NTdjMTY4YWMzZmQ5N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmgK
QEAgLTk1LDEyICs5NSwxNiBAQCBjbGFzcyBEaXNwbGF5VmsgOiBwdWJsaWMgRGlzcGxheUltcGws
IHB1YmxpYyB2azo6Q29udGV4dAogCiAgICAgdm9pZCBwb3B1bGF0ZUZlYXR1cmVMaXN0KGFuZ2xl
OjpGZWF0dXJlTGlzdCAqZmVhdHVyZXMpIG92ZXJyaWRlOwogCisgIHByb3RlY3RlZDoKKyAgICB2
b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNp
b25zKSBjb25zdCBvdmVycmlkZTsKKwogICBwcml2YXRlOgogICAgIHZpcnR1YWwgU3VyZmFjZUlt
cGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2VWayhjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93KSA9IDA7Ci0gICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWds
OjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdCBvdmVycmlkZTsKIAor
ICAgIHZpcnR1YWwgYW5nbGU6OlJlc3VsdCB3YWl0TmF0aXZlSW1wbCgpOworCiAgICAgbXV0YWJs
ZSBhbmdsZTo6U2NyYXRjaEJ1ZmZlciBtU2NyYXRjaEJ1ZmZlcjsKIAogICAgIHN0ZDo6c3RyaW5n
IG1TdG9yZWRFcnJvclN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVy
VmsuY3BwCmluZGV4IGM0NGM4YzY1ZTZhMzI2YTY1MDNlNGRlNDdlZTgyNjllOTM3YTYxMjYuLmRj
MjkyZDM5Mzc3ZmY3ODk3ZDdmNGM4MThiODI4NzFjNzE1NDFlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZm
ZXJWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmNwcApAQCAtMTcsMTEgKzE3LDExIEBACiAjaW5jbHVk
ZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tbWFuZEdyYXBoLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vUmVuZGVyZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNv
dXJjZVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfdXRpbHMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS90cmFjZS5oIgpAQCAtMzEsMTAgKzMxLDYgQEAgbmFtZXNwYWNl
IHJ4CiAKIG5hbWVzcGFjZQogewotLy8gVGhlIHZhbHVlIHRvIGFzc2lnbiBhbiBhbHBoYSBjaGFu
bmVsIHRoYXQncyBlbXVsYXRlZC4gIFRoZSB0eXBlIGlzIHVuc2lnbmVkIGludCwgdGhvdWdoIGl0
IHdpbGwKLS8vIGF1dG9tYXRpY2FsbHkgY29udmVydCB0byB0aGUgYWN0dWFsIGRhdGEgdHlwZS4K
LWNvbnN0ZXhwciB1bnNpZ25lZCBpbnQga0VtdWxhdGVkQWxwaGFWYWx1ZSA9IDE7Ci0KIGNvbnN0
ZXhwciBzaXplX3Qga01pblJlYWRQaXhlbHNCdWZmZXJTaXplID0gMTI4MDAwOwogCiAvLyBBbGln
bm1lbnQgdmFsdWUgdG8gYWNjb21tb2RhdGUgdGhlIGxhcmdlc3Qga25vd24sIGZvciBub3csIHVu
Y29tcHJlc3NlZCBWdWxrYW4gZm9ybWF0CkBAIC02OSw3ICs2NSw3IEBAIGJvb2wgSGFzRHN0Qmxp
dEZlYXR1cmUoUmVuZGVyZXJWayAqcmVuZGVyZXIsIFJlbmRlclRhcmdldFZrICpkc3RSZW5kZXJU
YXJnZXQpCiAKIC8vIFJldHVybnMgZmFsc2UgaWYgZGVzdGluYXRpb24gaGFzIGFueSBjaGFubmVs
IHRoZSBzb3VyY2UgZG9lc24ndC4gIFRoaXMgbWVhbnMgdGhhdCBjaGFubmVsIHdhcwogLy8gZW11
bGF0ZWQgYW5kIHVzaW5nIHRoZSBWdWxrYW4gYmxpdCBjb21tYW5kIHdvdWxkIG92ZXJ3cml0ZSB0
aGF0IGVtdWxhdGVkIGNoYW5uZWwuCi1ib29sIGFyZVNyY0FuZERzdENvbG9yQ2hhbm5lbHNCbGl0
Q29tcGF0aWJsZShSZW5kZXJUYXJnZXRWayAqc3JjUmVuZGVyVGFyZ2V0LAorYm9vbCBBcmVTcmNB
bmREc3RDb2xvckNoYW5uZWxzQmxpdENvbXBhdGlibGUoUmVuZGVyVGFyZ2V0VmsgKnNyY1JlbmRl
clRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlclRhcmdldFZrICpkc3RSZW5kZXJUYXJnZXQpCiB7CiAgICAgY29uc3QgYW5nbGU6OkZvcm1h
dCAmc3JjRm9ybWF0ID0gc3JjUmVuZGVyVGFyZ2V0LT5nZXRJbWFnZUZvcm1hdCgpLmludGVuZGVk
Rm9ybWF0KCk7CkBAIC04Nyw3ICs4Myw3IEBAIGJvb2wgYXJlU3JjQW5kRHN0Q29sb3JDaGFubmVs
c0JsaXRDb21wYXRpYmxlKFJlbmRlclRhcmdldFZrICpzcmNSZW5kZXJUYXJnZXQsCiAgICAgICAg
ICAgIChkc3RGb3JtYXQuYWxwaGFCaXRzID4gMCB8fCBzcmNGb3JtYXQuYWxwaGFCaXRzID09IDAp
OwogfQogCi1ib29sIGFyZVNyY0FuZERzdERlcHRoU3RlbmNpbENoYW5uZWxzQmxpdENvbXBhdGli
bGUoUmVuZGVyVGFyZ2V0VmsgKnNyY1JlbmRlclRhcmdldCwKK2Jvb2wgQXJlU3JjQW5kRHN0RGVw
dGhTdGVuY2lsQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZShSZW5kZXJUYXJnZXRWayAqc3JjUmVuZGVy
VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlclRhcmdldFZrICpkc3RSZW5kZXJUYXJnZXQpCiB7CiAgICAgY29uc3QgYW5nbGU6
OkZvcm1hdCAmc3JjRm9ybWF0ID0gc3JjUmVuZGVyVGFyZ2V0LT5nZXRJbWFnZUZvcm1hdCgpLmlu
dGVuZGVkRm9ybWF0KCk7CkBAIC05NiwyNSArOTIsNiBAQCBib29sIGFyZVNyY0FuZERzdERlcHRo
U3RlbmNpbENoYW5uZWxzQmxpdENvbXBhdGlibGUoUmVuZGVyVGFyZ2V0VmsgKnNyY1JlbmRlclRh
cgogICAgIHJldHVybiAoZHN0Rm9ybWF0LmRlcHRoQml0cyA+IDAgfHwgc3JjRm9ybWF0LmRlcHRo
Qml0cyA9PSAwKSAmJgogICAgICAgICAgICAoZHN0Rm9ybWF0LnN0ZW5jaWxCaXRzID4gMCB8fCBz
cmNGb3JtYXQuc3RlbmNpbEJpdHMgPT0gMCk7CiB9Ci0KLXZvaWQgU2V0RW11bGF0ZWRBbHBoYVZh
bHVlKGNvbnN0IHZrOjpGb3JtYXQgJmZvcm1hdCwgVmtDbGVhckNvbG9yVmFsdWUgKnZhbHVlKQot
ewotICAgIGlmIChmb3JtYXQudmtGb3JtYXRJc0ludCkKLSAgICB7Ci0gICAgICAgIGlmIChmb3Jt
YXQudmtGb3JtYXRJc1Vuc2lnbmVkKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YWx1ZS0+dWlu
dDMyWzNdID0ga0VtdWxhdGVkQWxwaGFWYWx1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhbHVlLT5pbnQzMlszXSA9IGtFbXVsYXRlZEFscGhhVmFs
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgdmFsdWUtPmZs
b2F0MzJbM10gPSBrRW11bGF0ZWRBbHBoYVZhbHVlOwotICAgIH0KLX0KIH0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAogLy8gc3RhdGljCkBAIC0xMzQsNyArMTExLDEyIEBAIEZyYW1lYnVmZmVy
VmsgKkZyYW1lYnVmZmVyVms6OkNyZWF0ZURlZmF1bHRGQk8oUmVuZGVyZXJWayAqcmVuZGVyZXIs
CiBGcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKFJlbmRlcmVyVmsgKnJlbmRlcmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd1N1cmZhY2VWayAqYmFja2J1
ZmZlcikKLSAgICA6IEZyYW1lYnVmZmVySW1wbChzdGF0ZSksIG1CYWNrYnVmZmVyKGJhY2tidWZm
ZXIpLCBtQWN0aXZlQ29sb3JDb21wb25lbnRzKDApCisgICAgOiBGcmFtZWJ1ZmZlckltcGwoc3Rh
dGUpLAorICAgICAgbUJhY2tidWZmZXIoYmFja2J1ZmZlciksCisgICAgICBtRnJhbWVidWZmZXIo
bnVsbHB0ciksCisgICAgICBtQWN0aXZlQ29sb3JDb21wb25lbnRzKDApLAorICAgICAgbVN1cHBv
cnREZXB0aFN0ZW5jaWxGZWVkYmFja0xvb3BzKAorICAgICAgICAgIHJlbmRlcmVyLT5nZXRGZWF0
dXJlcygpLnN1cHBvcnREZXB0aFN0ZW5jaWxSZW5kZXJpbmdGZWVkYmFja0xvb3BzLmVuYWJsZWQp
CiB7CiAgICAgbVJlYWRQaXhlbEJ1ZmZlci5pbml0KHJlbmRlcmVyLCBWS19CVUZGRVJfVVNBR0Vf
VFJBTlNGRVJfRFNUX0JJVCwga1JlYWRQaXhlbHNCdWZmZXJBbGlnbm1lbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtNaW5SZWFkUGl4ZWxzQnVmZmVyU2l6ZSwgdHJ1ZSk7CkBAIC0xNDIs
MTIgKzEyNCwyMiBAQCBGcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKFJlbmRlcmVyVmsgKnJl
bmRlcmVyLAogCiBGcmFtZWJ1ZmZlclZrOjp+RnJhbWVidWZmZXJWaygpID0gZGVmYXVsdDsKIAor
dm9pZCBGcmFtZWJ1ZmZlclZrOjpjbGVhckNhY2hlKENvbnRleHRWayAqY29udGV4dFZrKQorewor
ICAgIGZvciAoYXV0byAmZW50cnkgOiBtRnJhbWVidWZmZXJDYWNoZSkKKyAgICB7CisgICAgICAg
IHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAmdG1wRkIgPSBlbnRyeS5zZWNvbmQ7CisgICAgICAgIHRt
cEZCLnJlbGVhc2UoY29udGV4dFZrKTsKKyAgICB9CisgICAgbUZyYW1lYnVmZmVyQ2FjaGUuY2xl
YXIoKTsKK30KKwogdm9pZCBGcmFtZWJ1ZmZlclZrOjpkZXN0cm95KGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0KQogewogICAgIENvbnRleHRWayAqY29udGV4dFZrID0gdms6OkdldEltcGwoY29u
dGV4dCk7Ci0gICAgbUZyYW1lYnVmZmVyLnJlbGVhc2UoY29udGV4dFZrKTsKIAogICAgIG1SZWFk
UGl4ZWxCdWZmZXIucmVsZWFzZShjb250ZXh0VmstPmdldFJlbmRlcmVyKCkpOworICAgIGNsZWFy
Q2FjaGUoY29udGV4dFZrKTsKIH0KIAogYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpkaXNj
YXJkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApAQCAtMTYxLDE0ICsxNTMsNyBAQCBhbmds
ZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmludmFsaWRhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51
bSAqYXR0YWNobWVudHMpCiB7Ci0gICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1w
bChjb250ZXh0KTsKLSAgICBtRnJhbWVidWZmZXIub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZr
LT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7Ci0KLSAgICBpZiAobUZyYW1lYnVmZmVyLnZhbGlkKCkg
JiYgbUZyYW1lYnVmZmVyLmhhc1N0YXJ0ZWRSZW5kZXJQYXNzKCkpCi0gICAgewotICAgICAgICBp
bnZhbGlkYXRlSW1wbChjb250ZXh0VmssIGNvdW50LCBhdHRhY2htZW50cyk7Ci0gICAgfQotCisg
ICAgLy8gVE9ETyhqbWFkaWxsKTogUmUtZW5hYmxlLiBTZWUgaHR0cDovL2FuZ2xlYnVnLmNvbS80
NDQ0CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC0xNzcsMTcg
KzE2Miw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6aW52YWxpZGF0ZVN1Yihjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEpCiB7Ci0g
ICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsKLSAgICBtRnJh
bWVidWZmZXIub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3Qo
KSk7Ci0KLSAgICAvLyBSZW5kZXJQYXNzJyBzdG9yZU9wIGNhbm5vdCBiZSBtYWRlIGNvbmRpdGlv
bmFsIHRvIGEgc3BlY2lmaWMgcmVnaW9uLCBzbyB3ZSBvbmx5IGFwcGx5IHRoaXMKLSAgICAvLyBo
aW50IGlmIHRoZSByZXF1ZXN0ZWQgYXJlYSBlbmNvbXBhc3NlcyB0aGUgcmVuZGVyIGFyZWEuCi0g
ICAgaWYgKG1GcmFtZWJ1ZmZlci52YWxpZCgpICYmIG1GcmFtZWJ1ZmZlci5oYXNTdGFydGVkUmVu
ZGVyUGFzcygpICYmCi0gICAgICAgIGFyZWEuZW5jbG9zZXMobUZyYW1lYnVmZmVyLmdldFJlbmRl
clBhc3NSZW5kZXJBcmVhKCkpKQotICAgIHsKLSAgICAgICAgaW52YWxpZGF0ZUltcGwoY29udGV4
dFZrLCBjb3VudCwgYXR0YWNobWVudHMpOwotICAgIH0KLQorICAgIC8vIFRPRE8oam1hZGlsbCk6
IFJlLWVuYWJsZS4gU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ0NAogICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApAQCAtMjI5LDggKzIwNCw2IEBAIGFuZ2xlOjpSZXN1
bHQgRnJhbWVidWZmZXJWazo6Y2xlYXJJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAgICAgfQogCi0gICAgbUZy
YW1lYnVmZmVyLnVwZGF0ZUN1cnJlbnRBY2Nlc3NOb2RlcygpOwotCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBhc3N1bWVzIHRoYXQgb25seSBlbmFibGVkIGF0dGFjaG1lbnRzIGFyZSBhc2tlZCB0byBi
ZSBjbGVhcmVkLgogICAgIEFTU0VSVCgoY2xlYXJDb2xvckJ1ZmZlcnMgJiBtU3RhdGUuZ2V0RW5h
YmxlZERyYXdCdWZmZXJzKCkpID09IGNsZWFyQ29sb3JCdWZmZXJzKTsKIApAQCAtMjU4LDYgKzIz
MSwzNiBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmNsZWFySW1wbChjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKICAgICAvLyBUaGUgZnJvbnQtZW5kIHNob3VsZCBlbnN1cmUgd2Ug
ZG9uJ3QgYXR0ZW1wdCB0byBjbGVhciBzdGVuY2lsIGlmIGFsbCBiaXRzIGFyZSBtYXNrZWQuCiAg
ICAgQVNTRVJUKCFjbGVhclN0ZW5jaWwgfHwgc3RlbmNpbE1hc2sgIT0gMCk7CiAKKyAgICAvLyBT
cGVjaWFsIGNhc2UgZm9yIHJlbmRlcmluZyBmZWVkYmFjayBsb29wczogY2xlYXJzIGFyZSBhbHdh
eXMgdmFsaWQgaW4gR0wgc2luY2UgdGhleSBkb24ndAorICAgIC8vIHNhbXBsZSBmcm9tIGFueSB0
ZXh0dXJlcy4KKyAgICBpZiAoKGNsZWFyRGVwdGggfHwgY2xlYXJTdGVuY2lsKSAmJiBtU3RhdGUu
aGFzRGVwdGhTdGVuY2lsRmVlZGJhY2tMb29wKCkpCisgICAgeworICAgICAgICAvLyBXZSBjdXJy
ZW50bHkgZG9uJ3QgaGFuZGxlIHNjaXNzb3JlZCBjbGVhcnMgd2l0aCByZW5kZXJpbmcgZmVlZGJh
Y2sgbG9vcHMuCisgICAgICAgIEFOR0xFX1ZLX0NIRUNLKGNvbnRleHRWaywgc2Npc3NvcmVkUmVu
ZGVyQXJlYSA9PSBnZXRDb21wbGV0ZVJlbmRlckFyZWEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgVktfRVJST1JfSU5DT01QQVRJQkxFX0RSSVZFUik7CisKKyAgICAgICAgUmVuZGVyVGFyZ2V0
VmsgKmRlcHRoU3RlbmNpbFJUID0gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCh0
cnVlKTsKKyAgICAgICAgdms6OkltYWdlSGVscGVyICZpbWFnZSAgICAgICAgID0gZGVwdGhTdGVu
Y2lsUlQtPmdldEltYWdlKCk7CisKKyAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRC
dWZmZXI7CisgICAgICAgIEFOR0xFX1RSWSgKKyAgICAgICAgICAgIGNvbnRleHRWay0+b25JbWFn
ZVdyaXRlKGltYWdlLmdldEFzcGVjdEZsYWdzKCksIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJE
c3QsICZpbWFnZSkpOworICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNz
QW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOworCisgICAgICAgIFZrSW1hZ2VT
dWJyZXNvdXJjZVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5hc3BlY3RNYXNrICAgICA9IGlt
YWdlLmdldEFzcGVjdEZsYWdzKCk7CisgICAgICAgIHJhbmdlLmJhc2VNaXBMZXZlbCAgID0gZGVw
dGhTdGVuY2lsUlQtPmdldExldmVsSW5kZXgoKTsKKyAgICAgICAgcmFuZ2UubGV2ZWxDb3VudCAg
ICAgPSAxOworICAgICAgICByYW5nZS5iYXNlQXJyYXlMYXllciA9IGRlcHRoU3RlbmNpbFJULT5n
ZXRMYXllckluZGV4KCk7CisgICAgICAgIHJhbmdlLmxheWVyQ291bnQgICAgID0gMTsKKworICAg
ICAgICBjb21tYW5kQnVmZmVyLT5jbGVhckRlcHRoU3RlbmNpbEltYWdlKGltYWdlLmdldEltYWdl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfSU1B
R0VfTEFZT1VUX1RSQU5TRkVSX0RTVF9PUFRJTUFMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRGVwdGhTdGVuY2lsVmFsdWUsIDEsICZyYW5nZSk7
CisgICAgICAgIGNsZWFyRGVwdGggICA9IGZhbHNlOworICAgICAgICBjbGVhclN0ZW5jaWwgPSBm
YWxzZTsKKyAgICB9CisKICAgICAvLyBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIGNsZWFyLCByZXR1
cm4gcmlnaHQgYXdheSAoZm9yIGV4YW1wbGUsIGlmIGFza2VkIHRvIGNsZWFyIGRlcHRoLCBidXQK
ICAgICAvLyB0aGVyZSBpcyBubyBkZXB0aCBhdHRhY2htZW50KS4KICAgICBpZiAoIWNsZWFyQ29s
b3IgJiYgIWNsZWFyRGVwdGggJiYgIWNsZWFyU3RlbmNpbCkKQEAgLTI5Miw4ICsyOTUsOSBAQCBh
bmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmNsZWFySW1wbChjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgewogICAgICAgICAgICAgY2xlYXJCdWZmZXJzV2l0aFJlbmRlclBh
c3NMb2FkT3AgPSBjbGVhckNvbG9yQnVmZmVyczsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9U
UlkoY2xlYXJXaXRoUmVuZGVyUGFzc09wKAotICAgICAgICAgICAgY29udGV4dFZrLCBzY2lzc29y
ZWRSZW5kZXJBcmVhLCBjbGVhckJ1ZmZlcnNXaXRoUmVuZGVyUGFzc0xvYWRPcCwgY2xlYXJEZXB0
aCwKKworICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5jbGVhcldpdGhSZW5kZXJQYXNzT3Ao
CisgICAgICAgICAgICBzY2lzc29yZWRSZW5kZXJBcmVhLCBjbGVhckJ1ZmZlcnNXaXRoUmVuZGVy
UGFzc0xvYWRPcCwgY2xlYXJEZXB0aCwKICAgICAgICAgICAgIGNsZWFyU3RlbmNpbFdpdGhSZW5k
ZXJQYXNzTG9hZE9wLCBjbGVhckNvbG9yVmFsdWUsIG1vZGlmaWVkRGVwdGhTdGVuY2lsVmFsdWUp
KTsKIAogICAgICAgICAvLyBGYWxsYmFjayB0byBvdGhlciBtZXRob2RzIGZvciB3aGF0ZXZlciBp
c24ndCBjbGVhcmVkIGhlcmUuCkBAIC00NzUsNyArNDc5LDkgQEAgYW5nbGU6OlJlc3VsdCBGcmFt
ZWJ1ZmZlclZrOjpyZWFkUGl4ZWxzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiBSZW5k
ZXJUYXJnZXRWayAqRnJhbWVidWZmZXJWazo6Z2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCgp
OworICAgIC8vIElmIHdlIG1hc2sgb3V0IGRlcHRoL3N0ZW5jaWwgZmVlZGJhY2sgbG9vcHMsIGRv
IG5vdCBhbGxvdyB0aGUgdXNlciB0byBhY2Nlc3MgdGhlIGxvb3BlZCBEUworICAgIC8vIHJlbmRl
ciB0YXJnZXQuIFBhc3NpbmcgImZhbHNlIiB0byBnZXREZXB0aFN0ZW5jaWwgZm9yY2VzIGEgcmV0
dXJuIG9mICJudWxscHRyIiBmb3IgbG9vcHMuCisgICAgcmV0dXJuIG1SZW5kZXJUYXJnZXRDYWNo
ZS5nZXREZXB0aFN0ZW5jaWwoIW1TdXBwb3J0RGVwdGhTdGVuY2lsRmVlZGJhY2tMb29wcyk7CiB9
CiAKIFJlbmRlclRhcmdldFZrICpGcmFtZWJ1ZmZlclZrOjpnZXRDb2xvckRyYXdSZW5kZXJUYXJn
ZXQoc2l6ZV90IGNvbG9ySW5kZXgpIGNvbnN0CkBAIC01MTAsNyArNTE2LDcgQEAgYW5nbGU6OlJl
c3VsdCBGcmFtZWJ1ZmZlclZrOjpibGl0V2l0aENvbW1hbmQoQ29udGV4dFZrICpjb250ZXh0Vmss
CiAgICAgQVNTRVJUKGNvbG9yQmxpdCAhPSAoZGVwdGhCbGl0IHx8IHN0ZW5jaWxCbGl0KSk7CiAK
ICAgICB2azo6SW1hZ2VIZWxwZXIgKnNyY0ltYWdlID0gJnJlYWRSZW5kZXJUYXJnZXQtPmdldElt
YWdlKCk7Ci0gICAgdms6OkltYWdlSGVscGVyICpkc3RJbWFnZSA9IGRyYXdSZW5kZXJUYXJnZXQt
PmdldEltYWdlRm9yV3JpdGUoY29udGV4dFZrLCAmbUZyYW1lYnVmZmVyKTsKKyAgICB2azo6SW1h
Z2VIZWxwZXIgKmRzdEltYWdlID0gZHJhd1JlbmRlclRhcmdldC0+Z2V0SW1hZ2VGb3JXcml0ZShj
b250ZXh0VmspOwogCiAgICAgVmtJbWFnZUFzcGVjdEZsYWdzIGltYWdlQXNwZWN0TWFzayA9IHNy
Y0ltYWdlLT5nZXRBc3BlY3RGbGFncygpOwogICAgIFZrSW1hZ2VBc3BlY3RGbGFncyBibGl0QXNw
ZWN0TWFzayAgPSBpbWFnZUFzcGVjdE1hc2s7CkBAIC01MjUsMTcgKzUzMSwxMCBAQCBhbmdsZTo6
UmVzdWx0IEZyYW1lYnVmZmVyVms6OmJsaXRXaXRoQ29tbWFuZChDb250ZXh0VmsgKmNvbnRleHRW
aywKICAgICAgICAgYmxpdEFzcGVjdE1hc2sgJj0gflZLX0lNQUdFX0FTUEVDVF9TVEVOQ0lMX0JJ
VDsKICAgICB9CiAKLSAgICBpZiAoc3JjSW1hZ2UtPmlzTGF5b3V0Q2hhbmdlTmVjZXNzYXJ5KHZr
OjpJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMpKQotICAgIHsKLSAgICAgICAgdms6OkNvbW1hbmRC
dWZmZXIgKnNyY0xheW91dENoYW5nZTsKLSAgICAgICAgQU5HTEVfVFJZKHNyY0ltYWdlLT5yZWNv
cmRDb21tYW5kcyhjb250ZXh0VmssICZzcmNMYXlvdXRDaGFuZ2UpKTsKLSAgICAgICAgc3JjSW1h
Z2UtPmNoYW5nZUxheW91dChpbWFnZUFzcGVjdE1hc2ssIHZrOjpJbWFnZUxheW91dDo6VHJhbnNm
ZXJTcmMsIHNyY0xheW91dENoYW5nZSk7Ci0gICAgfQotCiAgICAgdms6OkNvbW1hbmRCdWZmZXIg
KmNvbW1hbmRCdWZmZXIgPSBudWxscHRyOwotICAgIEFOR0xFX1RSWShtRnJhbWVidWZmZXIucmVj
b3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgc3JjSW1hZ2Ut
PmFkZFJlYWREZXBlbmRlbmN5KGNvbnRleHRWaywgJm1GcmFtZWJ1ZmZlcik7CisgICAgQU5HTEVf
VFJZKGNvbnRleHRWay0+b25JbWFnZVJlYWQoaW1hZ2VBc3BlY3RNYXNrLCB2azo6SW1hZ2VMYXlv
dXQ6OlRyYW5zZmVyU3JjLCBzcmNJbWFnZSkpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9u
SW1hZ2VXcml0ZShpbWFnZUFzcGVjdE1hc2ssIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3Qs
IGRzdEltYWdlKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdl
dENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgIFZrSW1hZ2VCbGl0IGJsaXQg
ICAgICAgICAgICAgICAgICAgPSB7fTsKICAgICBibGl0LnNyY1N1YnJlc291cmNlLmFzcGVjdE1h
c2sgICAgID0gYmxpdEFzcGVjdE1hc2s7CkBAIC01NTEsMTAgKzU1MCw2IEBAIGFuZ2xlOjpSZXN1
bHQgRnJhbWVidWZmZXJWazo6YmxpdFdpdGhDb21tYW5kKENvbnRleHRWayAqY29udGV4dFZrLAog
ICAgIGJsaXQuZHN0T2Zmc2V0c1swXSAgICAgICAgICAgICAgICAgPSB7ZGVzdEFyZWEueDAoKSwg
ZGVzdEFyZWEueTAoKSwgMH07CiAgICAgYmxpdC5kc3RPZmZzZXRzWzFdICAgICAgICAgICAgICAg
ICA9IHtkZXN0QXJlYS54MSgpLCBkZXN0QXJlYS55MSgpLCAxfTsKIAotICAgIC8vIFJlcXVpcmVt
ZW50IG9mIHRoZSBjb3B5SW1hZ2VUb0J1ZmZlciwgdGhlIGRzdCBpbWFnZSBtdXN0IGJlIGluCi0g
ICAgLy8gVktfSU1BR0VfTEFZT1VUX1RSQU5TRkVSX0RTVF9PUFRJTUFMIGxheW91dC4KLSAgICBk
c3RJbWFnZS0+Y2hhbmdlTGF5b3V0KGltYWdlQXNwZWN0TWFzaywgdms6OkltYWdlTGF5b3V0OjpU
cmFuc2ZlckRzdCwgY29tbWFuZEJ1ZmZlcik7Ci0KICAgICBjb21tYW5kQnVmZmVyLT5ibGl0SW1h
Z2Uoc3JjSW1hZ2UtPmdldEltYWdlKCksIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9TUkNfT1BU
SU1BTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0SW1hZ2UtPmdldEltYWdlKCks
IFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCwgMSwgJmJsaXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsX3ZrOjpHZXRGaWx0ZXIoZmlsdGVyKSk7CkBAIC03NDQs
NyArNzM5LDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpibGl0KGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgIGNhbkJsaXRXaXRoQ29tbWFuZCAmJiBI
YXNEc3RCbGl0RmVhdHVyZShyZW5kZXJlciwgZHJhd1JlbmRlclRhcmdldCk7CiAgICAgICAgICAg
ICBhcmVDaGFubmVsc0JsaXRDb21wYXRpYmxlID0KICAgICAgICAgICAgICAgICBhcmVDaGFubmVs
c0JsaXRDb21wYXRpYmxlICYmCi0gICAgICAgICAgICAgICAgYXJlU3JjQW5kRHN0Q29sb3JDaGFu
bmVsc0JsaXRDb21wYXRpYmxlKHJlYWRSZW5kZXJUYXJnZXQsIGRyYXdSZW5kZXJUYXJnZXQpOwor
ICAgICAgICAgICAgICAgIEFyZVNyY0FuZERzdENvbG9yQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZShy
ZWFkUmVuZGVyVGFyZ2V0LCBkcmF3UmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChjYW5CbGl0V2l0aENvbW1hbmQgJiYgYXJlQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZSkKQEAg
LTc2Nyw3ICs3NjIsNyBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OmJsaXQoY29uc3Qg
Z2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IHZrOjpJ
bWFnZVZpZXcgKnJlYWRJbWFnZVZpZXcgPSBudWxscHRyOwogICAgICAgICAgICAgQU5HTEVfVFJZ
KHJlYWRSZW5kZXJUYXJnZXQtPmdldEltYWdlVmlldyhjb250ZXh0VmssICZyZWFkSW1hZ2VWaWV3
KSk7Ci0gICAgICAgICAgICByZWFkUmVuZGVyVGFyZ2V0LT5vbkltYWdlVmlld0FjY2Vzcyhjb250
ZXh0VmspOworICAgICAgICAgICAgcmVhZFJlbmRlclRhcmdldC0+cmV0YWluSW1hZ2VWaWV3cyhj
b250ZXh0VmspOwogICAgICAgICAgICAgQU5HTEVfVFJZKHV0aWxzVmsuY29sb3JCbGl0UmVzb2x2
ZShjb250ZXh0VmssIHRoaXMsICZyZWFkUmVuZGVyVGFyZ2V0LT5nZXRJbWFnZSgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkSW1hZ2VWaWV3LCBw
YXJhbXMpKTsKICAgICAgICAgfQpAQCAtNzc2LDcgKzc3MSw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJh
bWVidWZmZXJWazo6YmxpdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBpZiAoYmxp
dERlcHRoQnVmZmVyIHx8IGJsaXRTdGVuY2lsQnVmZmVyKQogICAgIHsKICAgICAgICAgUmVuZGVy
VGFyZ2V0VmsgKnJlYWRSZW5kZXJUYXJnZXQgPSBzcmNGcmFtZWJ1ZmZlclZrLT5nZXREZXB0aFN0
ZW5jaWxSZW5kZXJUYXJnZXQoKTsKLSAgICAgICAgUmVuZGVyVGFyZ2V0VmsgKmRyYXdSZW5kZXJU
YXJnZXQgPSBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCk7CisgICAgICAgIFJl
bmRlclRhcmdldFZrICpkcmF3UmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldENhY2hlLmdldERl
cHRoU3RlbmNpbCh0cnVlKTsKICAgICAgICAgcGFyYW1zLnNyY0xheWVyICAgICAgICAgICAgICAg
ICAgPSByZWFkUmVuZGVyVGFyZ2V0LT5nZXRMYXllckluZGV4KCk7CiAKICAgICAgICAgLy8gTXVs
dGlzYW1wbGVkIGltYWdlcyBhcmUgbm90IGFsbG93ZWQgdG8gaGF2ZSBtaXBzLgpAQCAtNzg4LDcg
Kzc4Myw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6YmxpdChjb25zdCBnbDo6Q29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNTcmNC
bGl0RmVhdHVyZShyZW5kZXJlciwgcmVhZFJlbmRlclRhcmdldCkgJiYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBIYXNEc3RCbGl0RmVhdHVyZShyZW5kZXJlciwgZHJhd1JlbmRl
clRhcmdldCk7CiAgICAgICAgIGJvb2wgYXJlQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZSA9Ci0gICAg
ICAgICAgICBhcmVTcmNBbmREc3REZXB0aFN0ZW5jaWxDaGFubmVsc0JsaXRDb21wYXRpYmxlKHJl
YWRSZW5kZXJUYXJnZXQsIGRyYXdSZW5kZXJUYXJnZXQpOworICAgICAgICAgICAgQXJlU3JjQW5k
RHN0RGVwdGhTdGVuY2lsQ2hhbm5lbHNCbGl0Q29tcGF0aWJsZShyZWFkUmVuZGVyVGFyZ2V0LCBk
cmF3UmVuZGVyVGFyZ2V0KTsKIAogICAgICAgICBpZiAoY2FuQmxpdFdpdGhDb21tYW5kICYmIGFy
ZUNoYW5uZWxzQmxpdENvbXBhdGlibGUpCiAgICAgICAgIHsKQEAgLTg1OSwxOSArODU0LDkgQEAg
YW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpyZXNvbHZlQ29sb3JXaXRoQ29tbWFuZChDb250
ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVXRpbHNWazo6QmxpdFJlc29sdmVQYXJhbWV0ZXJzICZwYXJh
bXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZrOjpJbWFnZUhlbHBlciAqc3JjSW1hZ2UpCiB7Ci0gICAgaWYgKHNyY0ltYWdlLT5pc0xheW91
dENoYW5nZU5lY2Vzc2FyeSh2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjKSkKLSAgICB7Ci0g
ICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpzcmNMYXlvdXRDaGFuZ2U7Ci0gICAgICAgIEFOR0xF
X1RSWShzcmNJbWFnZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmc3JjTGF5b3V0Q2hhbmdl
KSk7Ci0gICAgICAgIHNyY0ltYWdlLT5jaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9S
X0JJVCwgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcmNMYXlvdXRDaGFuZ2UpOwotICAgIH0KLQogICAgIHZrOjpDb21tYW5kQnVm
ZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICBBTkdMRV9UUlkobUZyYW1lYnVmZmVy
LnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIC8vIFNv
dXJjZSdzIGxheW91dCBjaGFuZ2Ugc2hvdWxkIGhhcHBlbiBiZWZvcmUgcmVuZGVyaW5nCi0gICAg
c3JjSW1hZ2UtPmFkZFJlYWREZXBlbmRlbmN5KGNvbnRleHRWaywgJm1GcmFtZWJ1ZmZlcik7Cisg
ICAgQU5HTEVfVFJZKAorICAgICAgICBjb250ZXh0VmstPm9uSW1hZ2VSZWFkKFZLX0lNQUdFX0FT
UEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMsIHNyY0ltYWdlKSk7
CiAKICAgICBWa0ltYWdlUmVzb2x2ZSByZXNvbHZlUmVnaW9uICAgICAgICAgICAgICAgID0ge307
CiAgICAgcmVzb2x2ZVJlZ2lvbi5zcmNTdWJyZXNvdXJjZS5hc3BlY3RNYXNrICAgICA9IFZLX0lN
QUdFX0FTUEVDVF9DT0xPUl9CSVQ7CkBAIC04OTMsOSArODc4LDkgQEAgYW5nbGU6OlJlc3VsdCBG
cmFtZWJ1ZmZlclZrOjpyZXNvbHZlQ29sb3JXaXRoQ29tbWFuZChDb250ZXh0VmsgKmNvbnRleHRW
aywKICAgICBmb3IgKHNpemVfdCBjb2xvckluZGV4R0wgOiBtU3RhdGUuZ2V0RW5hYmxlZERyYXdC
dWZmZXJzKCkpCiAgICAgewogICAgICAgICBSZW5kZXJUYXJnZXRWayAqZHJhd1JlbmRlclRhcmdl
dCA9IG1SZW5kZXJUYXJnZXRDYWNoZS5nZXRDb2xvcnMoKVtjb2xvckluZGV4R0xdOwotICAgICAg
ICB2azo6SW1hZ2VIZWxwZXIgKmRyYXdJbWFnZSA9IGRyYXdSZW5kZXJUYXJnZXQtPmdldEltYWdl
Rm9yV3JpdGUoY29udGV4dFZrLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgZHJhd0ltYWdlLT5j
aGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpU
cmFuc2ZlckRzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZl
cik7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShWS19JTUFHRV9B
U1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRyYXdSZW5kZXJUYXJnZXQtPmdldElt
YWdlKCkpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdl
dENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgICAgICByZXNvbHZlUmVnaW9u
LmRzdFN1YnJlc291cmNlLm1pcExldmVsICAgICAgID0gZHJhd1JlbmRlclRhcmdldC0+Z2V0TGV2
ZWxJbmRleCgpOwogICAgICAgICByZXNvbHZlUmVnaW9uLmRzdFN1YnJlc291cmNlLmJhc2VBcnJh
eUxheWVyID0gZHJhd1JlbmRlclRhcmdldC0+Z2V0TGF5ZXJJbmRleCgpOwpAQCAtOTQ2LDkgKzkz
MSwxMSBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OnVwZGF0ZUNvbG9yQXR0YWNobWVu
dChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgcwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlclZrOjppbnZhbGlkYXRlSW1wbChDb250
ZXh0VmsgKmNvbnRleHRWaywgc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRz
KQorYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjppbnZhbGlkYXRlSW1wbChDb250ZXh0Vmsg
KmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewotICAgIEFTU0VSVChtRnJhbWVidWZmZXIu
aGFzU3RhcnRlZFJlbmRlclBhc3MoKSk7CisgICAgQVNTRVJUKGNvbnRleHRWay0+aGFzU3RhcnRl
ZFJlbmRlclBhc3MoKSk7CiAKICAgICBnbDo6RHJhd0J1ZmZlck1hc2sgaW52YWxpZGF0ZUNvbG9y
QnVmZmVyczsKICAgICBib29sIGludmFsaWRhdGVEZXB0aEJ1ZmZlciAgID0gZmFsc2U7CkBAIC05
ODgsMjIgKzk3NSwyNSBAQCB2b2lkIEZyYW1lYnVmZmVyVms6OmludmFsaWRhdGVJbXBsKENvbnRl
eHRWayAqY29udGV4dFZrLCBzaXplX3QgY291bnQsIGNvbnN0IEdMZQogICAgIHsKICAgICAgICAg
aWYgKGludmFsaWRhdGVDb2xvckJ1ZmZlcnMudGVzdChjb2xvckluZGV4R0wpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtRnJhbWVidWZmZXIuaW52YWxpZGF0ZVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnQoYXR0YWNobWVudEluZGV4VmspOworICAgICAgICAgICAgY29udGV4dFZrLT5nZXRTdGFy
dGVkUmVuZGVyUGFzc0NvbW1hbmRzKCkuaW52YWxpZGF0ZVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnQoCisgICAgICAgICAgICAgICAgYXR0YWNobWVudEluZGV4VmspOwogICAgICAgICB9CiAgICAg
ICAgICsrYXR0YWNobWVudEluZGV4Vms7CiAgICAgfQogCi0gICAgUmVuZGVyVGFyZ2V0VmsgKmRl
cHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IG1SZW5kZXJUYXJnZXRDYWNoZS5nZXREZXB0aFN0ZW5j
aWwoKTsKKyAgICBSZW5kZXJUYXJnZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gbVJl
bmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCh0cnVlKTsKICAgICBpZiAoZGVwdGhTdGVu
Y2lsUmVuZGVyVGFyZ2V0KQogICAgIHsKICAgICAgICAgaWYgKGludmFsaWRhdGVEZXB0aEJ1ZmZl
cikKICAgICAgICAgewotICAgICAgICAgICAgbUZyYW1lYnVmZmVyLmludmFsaWRhdGVSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50KGF0dGFjaG1lbnRJbmRleFZrKTsKKyAgICAgICAgICAgIGNvbnRl
eHRWay0+Z2V0U3RhcnRlZFJlbmRlclBhc3NDb21tYW5kcygpLmludmFsaWRhdGVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50KAorICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJbmRleFZrKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChpbnZhbGlkYXRlU3RlbmNpbEJ1ZmZlcikKICAgICAgICAg
ewotICAgICAgICAgICAgbUZyYW1lYnVmZmVyLmludmFsaWRhdGVSZW5kZXJQYXNzU3RlbmNpbEF0
dGFjaG1lbnQoYXR0YWNobWVudEluZGV4VmspOworICAgICAgICAgICAgY29udGV4dFZrLT5nZXRT
dGFydGVkUmVuZGVyUGFzc0NvbW1hbmRzKCkuaW52YWxpZGF0ZVJlbmRlclBhc3NTdGVuY2lsQXR0
YWNobWVudCgKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50SW5kZXhWayk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTEwMjAsNyArMTAxMCwyNSBAQCB2b2lkIEZyYW1lYnVmZmVyVms6OmludmFs
aWRhdGVJbXBsKENvbnRleHRWayAqY29udGV4dFZrLCBzaXplX3QgY291bnQsIGNvbnN0IEdMZQog
ICAgIC8vIHRoaXMgcGF0dGVybiwgdGhpcyBvcHRpbWl6YXRpb24gbWF5IG5vdCBiZSBuZWNlc3Nh
cnkgaWYgbm8gYXBwbGljYXRpb24gZG9lcyB0aGlzLiAgSXQgaXMKICAgICAvLyBleHBlY3RlZCB0
aGF0IGFuIGFwcGxpY2F0aW9uIHdvdWxkIGludmFsaWRhdGUoKSB3aGVuIGl0J3MgZG9uZSB3aXRo
IHRoZSBmcmFtZWJ1ZmZlciwgc28gdGhlCiAgICAgLy8gcmVuZGVyIHBhc3Mgd291bGQgaGF2ZSBj
bG9zZWQgZWl0aGVyIHdheS4KLSAgICBtRnJhbWVidWZmZXIuZmluaXNoQ3VycmVudENvbW1hbmRz
KGNvbnRleHRWayk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzcygpKTsK
KworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwordm9pZCBGcmFtZWJ1
ZmZlclZrOjp1cGRhdGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50U2VyaWFsKENvbnRleHRWayAqY29u
dGV4dFZrKQoreworICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSVCA9IGdldERlcHRo
U3RlbmNpbFJlbmRlclRhcmdldCgpOworCisgICAgaWYgKGRlcHRoU3RlbmNpbFJUICE9IG51bGxw
dHIpCisgICAgeworICAgICAgICBtQ3VycmVudEZyYW1lYnVmZmVyRGVzYy51cGRhdGUodms6OmtG
cmFtZWJ1ZmZlckRlc2NEZXB0aFN0ZW5jaWxJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFJULT5nZXRBc3NpZ25TZXJpYWwoY29udGV4dFZr
KSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1DdXJyZW50RnJhbWVidWZmZXJE
ZXNjLnVwZGF0ZSh2azo6a0ZyYW1lYnVmZmVyRGVzY0RlcHRoU3RlbmNpbEluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OmtaZXJvQXR0YWNobWVudFNlcmlh
bCk7CisgICAgfQogfQogCiBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OnN5bmNTdGF0ZShj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKQEAgLTEwMjgsMjcgKzEwMzYsNTMgQEAgYW5nbGU6
OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCiB7CiAgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsK
IAorICAgIHZrOjpGcmFtZWJ1ZmZlckRlc2MgcHJpb3JGcmFtZWJ1ZmZlckRlc2MgPSBtQ3VycmVu
dEZyYW1lYnVmZmVyRGVzYzsKKworICAgIC8vIEZvciBhbnkgdXBkYXRlZCBhdHRhY2htZW50cyB3
ZSdsbCB1cGRhdGUgdGhlaXIgU2VyaWFscyBiZWxvdwogICAgIEFTU0VSVChkaXJ0eUJpdHMuYW55
KCkpOwogICAgIGZvciAoc2l6ZV90IGRpcnR5Qml0IDogZGlydHlCaXRzKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChkaXJ0eUJpdCkKICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBnbDo6RnJh
bWVidWZmZXI6OkRJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgIEFO
R0xFX1RSWShtUmVuZGVyVGFyZ2V0Q2FjaGUudXBkYXRlRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
KGNvbnRleHQsIG1TdGF0ZSkpOworICAgICAgICAgICAgICAgIHVwZGF0ZURlcHRoU3RlbmNpbEF0
dGFjaG1lbnRTZXJpYWwoY29udGV4dFZrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5U
OgogICAgICAgICAgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyVGFyZ2V0Q2FjaGUudXBkYXRlRGVw
dGhTdGVuY2lsUmVuZGVyVGFyZ2V0KGNvbnRleHQsIG1TdGF0ZSkpOworICAgICAgICAgICAgICAg
IHVwZGF0ZURlcHRoU3RlbmNpbEF0dGFjaG1lbnRTZXJpYWwoY29udGV4dFZrKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9C
SVRfREVQVEhfQlVGRkVSX0NPTlRFTlRTOgogICAgICAgICAgICAgY2FzZSBnbDo6RnJhbWVidWZm
ZXI6OkRJUlRZX0JJVF9TVEVOQ0lMX0JVRkZFUl9DT05URU5UUzoKLSAgICAgICAgICAgICAgICBB
TkdMRV9UUlkobVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCgpLT5mbHVzaFN0YWdl
ZFVwZGF0ZXMoY29udGV4dFZrKSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUmVu
ZGVyVGFyZ2V0VmsgKmRlcHRoU3RlbmNpbFJUID0gZ2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRlcHRoU3RlbmNpbFJUICE9IG51bGxwdHIpOwor
ICAgICAgICAgICAgICAgIEFOR0xFX1RSWShkZXB0aFN0ZW5jaWxSVC0+Zmx1c2hTdGFnZWRVcGRh
dGVzKGNvbnRleHRWaykpOworICAgICAgICAgICAgICAgIG1DdXJyZW50RnJhbWVidWZmZXJEZXNj
LnVwZGF0ZSh2azo6a0ZyYW1lYnVmZmVyRGVzY0RlcHRoU3RlbmNpbEluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxSVC0+Z2V0
QXNzaWduU2VyaWFsKGNvbnRleHRWaykpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FzZSBnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9SRUFE
X0JVRkZFUjoKICAgICAgICAgICAgICAgICBBTkdMRV9UUlkobVJlbmRlclRhcmdldENhY2hlLnVw
ZGF0ZShjb250ZXh0LCBtU3RhdGUsIGRpcnR5Qml0cykpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9EUkFXX0JVRkZF
UlM6CisgICAgICAgICAgICAgICAgLy8gRm9yY2UgdXBkYXRlIG9mIHNlcmlhbCBmb3IgZW5hYmxl
ZCBkcmF3IGJ1ZmZlcnMKKyAgICAgICAgICAgICAgICBtQ3VycmVudEZyYW1lYnVmZmVyRGVzYy5y
ZXNldCgpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGNvbG9ySW5kZXhHTCA6IG1TdGF0
ZS5nZXRFbmFibGVkRHJhd0J1ZmZlcnMoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG1DdXJyZW50RnJhbWVidWZmZXJEZXNjLnVwZGF0ZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvckluZGV4R0wpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldENhY2hlLmdldENvbG9ycygpW2NvbG9ySW5kZXhH
TF0tPmdldEFzc2lnblNlcmlhbChjb250ZXh0VmspKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgdXBkYXRlRGVwdGhTdGVuY2lsQXR0YWNobWVudFNlcmlhbChjb250ZXh0Vmsp
OworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6RnJhbWVidWZm
ZXI6OkRJUlRZX0JJVF9ERUZBVUxUX1dJRFRIOgogICAgICAgICAgICAgY2FzZSBnbDo6RnJhbWVi
dWZmZXI6OkRJUlRZX0JJVF9ERUZBVUxUX0hFSUdIVDoKICAgICAgICAgICAgIGNhc2UgZ2w6OkZy
YW1lYnVmZmVyOjpESVJUWV9CSVRfREVGQVVMVF9TQU1QTEVTOgogICAgICAgICAgICAgY2FzZSBn
bDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlM6
CisgICAgICAgICAgICAgICAgLy8gSW52YWxpZGF0ZSB0aGUgY2FjaGUuIElmIHdlIGhhdmUgcGVy
Zm9ybWFuY2UgY3JpdGljYWwgY29kZSBoaXR0aW5nIHRoaXMgcGF0aCB3ZQorICAgICAgICAgICAg
ICAgIC8vIGNhbiBhZGQgcmVsYXRlZCBkYXRhIChzdWNoIGFzIHdpZHRoL2hlaWdodCkgdG8gdGhl
IGNhY2hlCisgICAgICAgICAgICAgICAgY2xlYXJDYWNoZShjb250ZXh0VmspOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHsKQEAgLTEw
NTgsNiArMTA5MiwxOSBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVmZmVyVms6OnN5bmNTdGF0ZShj
b25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNv
bG9ySW5kZXhHTCA9IHN0YXRpY19jYXN0PHNpemVfdD4oCiAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJ0eUJpdCAtIGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRf
MCk7CiAgICAgICAgICAgICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVDb2xvckF0dGFjaG1lbnQo
Y29udGV4dCwgY29sb3JJbmRleEdMKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtUmVuZGVy
VGFyZ2V0Q2FjaGUuZ2V0Q29sb3JzKClbY29sb3JJbmRleEdMXSAhPSBudWxscHRyICYmCisgICAg
ICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0RW5hYmxlZERyYXdCdWZmZXJzKClbY29sb3JJ
bmRleEdMXSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
bUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2MudXBkYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvckluZGV4R0wpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRDYWNoZS5nZXRDb2xvcnMoKVtjb2xvckluZGV4R0xd
LT5nZXRBc3NpZ25TZXJpYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHRWaykpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRG
cmFtZWJ1ZmZlckRlc2MudXBkYXRlKHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvckluZGV4R0wp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZrOjprWmVyb0F0dGFjaG1lbnRTZXJpYWwpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7CkBA
IC0xMDY3LDI3ICsxMTE0LDMwIEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6c3luY1N0
YXRlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ZGlydHlCaXQgLSBnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xPUl9CVUZGRVJfQ09OVEVO
VFNfMCk7CiAgICAgICAgICAgICAgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyVGFyZ2V0Q2FjaGUu
Z2V0Q29sb3JzKClbY29sb3JJbmRleEdMXS0+Zmx1c2hTdGFnZWRVcGRhdGVzKAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dFZrKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
UmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0Q29sb3JzKClbY29sb3JJbmRleEdMXSAhPSBudWxscHRyKTsK
KyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2MudXBkYXRlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbG9ySW5kZXhHTCks
CisgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0Q29sb3JzKClb
Y29sb3JJbmRleEdMXS0+Z2V0QXNzaWduU2VyaWFsKGNvbnRleHRWaykpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFRoZSBGQk9z
IG5ldyBhdHRhY2htZW50IG1heSBoYXZlIGNoYW5nZWQgdGhlIHJlbmRlcmFibGUgYXJlYQorICAg
IC8vIE5vLW9wIHJlZHVuZGFudCBjaGFuZ2VzIHRvIHByZXZlbnQgY2xvc2luZyB0aGUgUmVuZGVy
UGFzcy4KKyAgICBpZiAobUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2MgPT0gcHJpb3JGcmFtZWJ1ZmZl
ckRlc2MpCisgICAgeworICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cisg
ICAgfQorCisgICAgLy8gVGhlIEZCTydzIG5ldyBhdHRhY2htZW50IG1heSBoYXZlIGNoYW5nZWQg
dGhlIHJlbmRlcmFibGUgYXJlYQogICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRl
eHQtPmdldFN0YXRlKCk7Ci0gICAgY29udGV4dFZrLT51cGRhdGVTY2lzc29yKGdsU3RhdGUpOwor
ICAgIEFOR0xFX1RSWShjb250ZXh0VmstPnVwZGF0ZVNjaXNzb3IoZ2xTdGF0ZSkpOwogCiAgICAg
bUFjdGl2ZUNvbG9yQ29tcG9uZW50cyA9IGdsX3ZrOjpHZXRDb2xvckNvbXBvbmVudEZsYWdzKAog
ICAgICAgICBtQWN0aXZlQ29sb3JDb21wb25lbnRNYXNrc0ZvckNsZWFyWzBdLmFueSgpLCBtQWN0
aXZlQ29sb3JDb21wb25lbnRNYXNrc0ZvckNsZWFyWzFdLmFueSgpLAogICAgICAgICBtQWN0aXZl
Q29sb3JDb21wb25lbnRNYXNrc0ZvckNsZWFyWzJdLmFueSgpLCBtQWN0aXZlQ29sb3JDb21wb25l
bnRNYXNrc0ZvckNsZWFyWzNdLmFueSgpKTsKIAotICAgIG1GcmFtZWJ1ZmZlci5yZWxlYXNlKGNv
bnRleHRWayk7Ci0KLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCi0g
ICAgewotICAgICAgICAvLyBXaWxsIGZyZWV6ZSB0aGUgY3VycmVudCBzZXQgb2YgZGVwZW5kZW5j
aWVzIG9uIHRoaXMgRkJPLiBUaGUgbmV4dCB0aW1lIHdlIHJlbmRlciB3ZSB3aWxsCi0gICAgICAg
IC8vIGNyZWF0ZSBhIG5ldyBlbnRyeSBpbiB0aGUgY29tbWFuZCBncmFwaC4KLSAgICAgICAgbUZy
YW1lYnVmZmVyLmZpbmlzaEN1cnJlbnRDb21tYW5kcyhjb250ZXh0VmspOwotICAgIH0KKyAgICBB
TkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzKCkpOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBDb250ZXh0VmsgdG8gdXBkYXRlIHRoZSBwaXBlbGluZSBkZXNjLgogICAgIHVwZGF0ZVJlbmRl
clBhc3NEZXNjKCk7CkBAIC0xMDk3LDYgKzExNDcsOCBAQCBhbmdsZTo6UmVzdWx0IEZyYW1lYnVm
ZmVyVms6OnN5bmNTdGF0ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICB7CiAgICAg
ICAgIGNvbnRleHRWay0+b25EcmF3RnJhbWVidWZmZXJDaGFuZ2UodGhpcyk7CiAgICAgfQorICAg
IC8vIERlYWN0aXZhdGUgRnJhbWVidWZmZXIKKyAgICBtRnJhbWVidWZmZXIgPSBudWxscHRyOwog
CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQpAQCAtMTEyMyw3ICsxMTc1
LDcgQEAgdm9pZCBGcmFtZWJ1ZmZlclZrOjp1cGRhdGVSZW5kZXJQYXNzRGVzYygpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBSZW5kZXJUYXJnZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
ID0gbVJlbmRlclRhcmdldENhY2hlLmdldERlcHRoU3RlbmNpbCgpOworICAgIFJlbmRlclRhcmdl
dFZrICpkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBnZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJn
ZXQoKTsKICAgICBpZiAoZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KQogICAgIHsKICAgICAgICAg
bVJlbmRlclBhc3NEZXNjLnBhY2tEZXB0aFN0ZW5jaWxBdHRhY2htZW50KApAQCAtMTEzMywxMyAr
MTE4NSwyNyBAQCB2b2lkIEZyYW1lYnVmZmVyVms6OnVwZGF0ZVJlbmRlclBhc3NEZXNjKCkKIAog
YW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpnZXRGcmFtZWJ1ZmZlcihDb250ZXh0VmsgKmNv
bnRleHRWaywgdms6OkZyYW1lYnVmZmVyICoqZnJhbWVidWZmZXJPdXQpCiB7Ci0gICAgLy8gSWYg
d2UndmUgYWxyZWFkeSBjcmVhdGVkIG91ciBjYWNoZWQgRnJhbWVidWZmZXIsIHJldHVybiBpdC4K
LSAgICBpZiAobUZyYW1lYnVmZmVyLnZhbGlkKCkpCisgICAgLy8gRmlyc3QgcmV0dXJuIGEgcHJl
c2VudGx5IHZhbGlkIEZyYW1lYnVmZmVyCisgICAgaWYgKG1GcmFtZWJ1ZmZlciAhPSBudWxscHRy
KQogICAgIHsKLSAgICAgICAgKmZyYW1lYnVmZmVyT3V0ID0gJm1GcmFtZWJ1ZmZlci5nZXRGcmFt
ZWJ1ZmZlcigpOworICAgICAgICAqZnJhbWVidWZmZXJPdXQgPSAmbUZyYW1lYnVmZmVyLT5nZXRG
cmFtZWJ1ZmZlcigpOwogICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiAg
ICAgfQotCisgICAgLy8gTm8gY3VycmVudCBGQiwgc28gbm93IGNoZWNrIGZvciBwcmV2aW91c2x5
IGNhY2hlZCBGcmFtZWJ1ZmZlcgorICAgIGF1dG8gaXRlciA9IG1GcmFtZWJ1ZmZlckNhY2hlLmZp
bmQobUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2MpOworICAgIGlmIChpdGVyICE9IG1GcmFtZWJ1ZmZl
ckNhY2hlLmVuZCgpKQorICAgIHsKKyAgICAgICAgaWYgKGNvbnRleHRWay0+Z2V0UmVuZGVyZXIo
KS0+Z2V0RmVhdHVyZXMoKS5lbmFibGVGcmFtZWJ1ZmZlclZrQ2FjaGUuZW5hYmxlZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgKmZyYW1lYnVmZmVyT3V0ID0gJml0ZXItPnNlY29uZC5nZXRGcmFt
ZWJ1ZmZlcigpOworICAgICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gV2hlbiBj
YWNoZSBpcyBvZmYganVzdCByZWxlYXNlIHByZXZpb3VzIGVudHJ5LCBpdCB3aWxsIGJlIHJlY3Jl
YXRlZCBiZWxvdworICAgICAgICAgICAgaXRlci0+c2Vjb25kLnJlbGVhc2UoY29udGV4dFZrKTsK
KyAgICAgICAgfQorICAgIH0KICAgICB2azo6UmVuZGVyUGFzcyAqY29tcGF0aWJsZVJlbmRlclBh
c3MgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmdldENvbXBhdGlibGVSZW5k
ZXJQYXNzKG1SZW5kZXJQYXNzRGVzYywgJmNvbXBhdGlibGVSZW5kZXJQYXNzKSk7CiAKQEAgLTEx
NjgsNyArMTIzNCw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6Z2V0RnJhbWVidWZm
ZXIoQ29udGV4dFZrICpjb250ZXh0VmssIHZrOjpGcmFtZWJ1ZmZlCiAgICAgICAgIGF0dGFjaG1l
bnRzU2l6ZSA9IGNvbG9yUmVuZGVyVGFyZ2V0LT5nZXRFeHRlbnRzKCk7CiAgICAgfQogCi0gICAg
UmVuZGVyVGFyZ2V0VmsgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IG1SZW5kZXJUYXJnZXRD
YWNoZS5nZXREZXB0aFN0ZW5jaWwoKTsKKyAgICBSZW5kZXJUYXJnZXRWayAqZGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0ID0gZ2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCk7CiAgICAgaWYgKGRl
cHRoU3RlbmNpbFJlbmRlclRhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnN0IHZrOjpJbWFnZVZp
ZXcgKmltYWdlVmlldyA9IG51bGxwdHI7CkBAIC0xMTg4LDcgKzEyNTQsNiBAQCBhbmdsZTo6UmVz
dWx0IEZyYW1lYnVmZmVyVms6OmdldEZyYW1lYnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLCB2
azo6RnJhbWVidWZmZQogICAgICAgICBhdHRhY2htZW50c1NpemUud2lkdGggID0gbVN0YXRlLmdl
dERlZmF1bHRXaWR0aCgpOwogICAgICAgICBhdHRhY2htZW50c1NpemUuZGVwdGggID0gMDsKICAg
ICB9Ci0KICAgICBWa0ZyYW1lYnVmZmVyQ3JlYXRlSW5mbyBmcmFtZWJ1ZmZlckluZm8gPSB7fTsK
IAogICAgIGZyYW1lYnVmZmVySW5mby5zVHlwZSAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQ
RV9GUkFNRUJVRkZFUl9DUkVBVEVfSU5GTzsKQEAgLTEyMDAsMTAwICsxMjY1LDEyIEBAIGFuZ2xl
OjpSZXN1bHQgRnJhbWVidWZmZXJWazo6Z2V0RnJhbWVidWZmZXIoQ29udGV4dFZrICpjb250ZXh0
VmssIHZrOjpGcmFtZWJ1ZmZlCiAgICAgZnJhbWVidWZmZXJJbmZvLmhlaWdodCAgICAgICAgICA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRhY2htZW50c1NpemUuaGVpZ2h0KTsKICAgICBmcmFt
ZWJ1ZmZlckluZm8ubGF5ZXJzICAgICAgICAgID0gMTsKIAotICAgIEFOR0xFX1RSWShtRnJhbWVi
dWZmZXIuaW5pdChjb250ZXh0VmssIGZyYW1lYnVmZmVySW5mbykpOwotCi0gICAgKmZyYW1lYnVm
ZmVyT3V0ID0gJm1GcmFtZWJ1ZmZlci5nZXRGcmFtZWJ1ZmZlcigpOwotICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpj
bGVhcldpdGhSZW5kZXJQYXNzT3AoCi0gICAgQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmY2xlYXJBcmVhLAotICAgIGdsOjpEcmF3QnVmZmVyTWFzayBjbGVh
ckNvbG9yQnVmZmVycywKLSAgICBib29sIGNsZWFyRGVwdGgsCi0gICAgYm9vbCBjbGVhclN0ZW5j
aWwsCi0gICAgY29uc3QgVmtDbGVhckNvbG9yVmFsdWUgJmNsZWFyQ29sb3JWYWx1ZSwKLSAgICBj
b25zdCBWa0NsZWFyRGVwdGhTdGVuY2lsVmFsdWUgJmNsZWFyRGVwdGhTdGVuY2lsVmFsdWUpCi17
Ci0gICAgLy8gU3RhcnQgYSBuZXcgcmVuZGVyIHBhc3MgaWY6Ci0gICAgLy8KLSAgICAvLyAtIG5v
IHJlbmRlciBwYXNzIGhhcyBzdGFydGVkLAotICAgIC8vIC0gdGhlcmUgaXMgYSByZW5kZXIgcGFz
cyBzdGFydGVkIGJ1dCBpdCBjb250YWlucyBjb21tYW5kczsgd2UgY2Fubm90IG1vZGlmeSBpdHMg
b3BzLCBzbyBuZXcKLSAgICAvLyByZW5kZXIgcGFzcyBpcyBuZWVkZWQsCi0gICAgLy8gLSB0aGUg
Y3VycmVudCByZW5kZXIgYXJlYSBkb2Vzbid0IG1hdGNoIHRoZSBjbGVhciBhcmVhLiAgV2UgbmVl
ZCB0aGUgcmVuZGVyIGFyZWEgdG8gYmUKLSAgICAvLyBleGFjdGx5IGFzIHNwZWNpZmllZCBieSB0
aGUgc2Npc3NvciBmb3IgdGhlIGxvYWRPcCB0byBjbGVhciBvbmx5IHRoYXQgYXJlYS4gIFNlZQot
ICAgIC8vIG9uU2Npc3NvckNoYW5nZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotICAgIGlmICgh
bUZyYW1lYnVmZmVyLnZhbGlkKCkgfHwgIW1GcmFtZWJ1ZmZlci5yZW5kZXJQYXNzU3RhcnRlZEJ1
dEVtcHR5KCkgfHwKLSAgICAgICAgbUZyYW1lYnVmZmVyLmdldFJlbmRlclBhc3NSZW5kZXJBcmVh
KCkgIT0gY2xlYXJBcmVhKQotICAgIHsKLSAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1h
bmRCdWZmZXI7Ci0gICAgICAgIEFOR0xFX1RSWShzdGFydE5ld1JlbmRlclBhc3MoY29udGV4dFZr
LCBjbGVhckFyZWEsICZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQotCi0gICAgc2l6ZV90IGF0dGFj
aG1lbnRJbmRleFZrID0gMDsKLQotICAgIC8vIEdvIHRocm91Z2ggY2xlYXJDb2xvckJ1ZmZlcnMg
YW5kIHNldCB0aGUgYXBwcm9wcmlhdGUgbG9hZE9wIGFuZCBjbGVhciB2YWx1ZXMuCi0gICAgZm9y
IChzaXplX3QgY29sb3JJbmRleEdMIDogbVN0YXRlLmdldEVuYWJsZWREcmF3QnVmZmVycygpKQot
ICAgIHsKLSAgICAgICAgaWYgKGNsZWFyQ29sb3JCdWZmZXJzLnRlc3QoY29sb3JJbmRleEdMKSkK
LSAgICAgICAgewotICAgICAgICAgICAgUmVuZGVyVGFyZ2V0VmsgKnJlbmRlclRhcmdldCA9IGdl
dENvbG9yRHJhd1JlbmRlclRhcmdldChjb2xvckluZGV4R0wpOwotCi0gICAgICAgICAgICAvLyBJ
ZiB0aGUgcmVuZGVyIHRhcmdldCBkb2Vzbid0IGhhdmUgYWxwaGEsIGJ1dCBpdHMgZW11bGF0ZWQg
Zm9ybWF0IGhhcyBpdCwgY2xlYXIgdGhlCi0gICAgICAgICAgICAvLyBhbHBoYSB0byAxLgotICAg
ICAgICAgICAgVmtDbGVhckNvbG9yVmFsdWUgdmFsdWUgPSBjbGVhckNvbG9yVmFsdWU7Ci0gICAg
ICAgICAgICBpZiAobUVtdWxhdGVkQWxwaGFBdHRhY2htZW50TWFza1tjb2xvckluZGV4R0xdKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNldEVtdWxhdGVkQWxwaGFWYWx1ZShyZW5k
ZXJUYXJnZXQtPmdldEltYWdlRm9ybWF0KCksICZ2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChjb250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBtRnJhbWVidWZmZXIuY2xlYXJSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50KGF0dGFjaG1lbnRJbmRleFZrLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dFZrLT5n
ZXRSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigpLmNsZWFyUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dCgKLSAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudEluZGV4VmssIHZhbHVlKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICArK2F0dGFjaG1lbnRJbmRleFZrOwotICAgIH0K
LQotICAgIC8vIFNldCB0aGUgYXBwcm9wcmlhdGUgbG9hZE9wIGFuZCBjbGVhciB2YWx1ZXMgZm9y
IGRlcHRoIGFuZCBzdGVuY2lsLgotICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSZW5k
ZXJUYXJnZXQgPSBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCk7Ci0gICAgaWYg
KGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCkKLSAgICB7Ci0gICAgICAgIGlmIChjbGVhckRlcHRo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFi
bGVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUZyYW1lYnVmZmVyLmNsZWFy
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudChhdHRhY2htZW50SW5kZXhWaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyRGVw
dGhTdGVuY2lsVmFsdWUuZGVwdGgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHRWay0+Z2V0UmVuZGVyUGFzc0Nv
bW1hbmRCdWZmZXIoKS5jbGVhclJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnQoCi0gICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRJbmRleFZrLCBjbGVhckRlcHRoU3RlbmNpbFZhbHVlLmRlcHRo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjbGVhclN0ZW5jaWwp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJs
ZWQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRnJhbWVidWZmZXIuY2xlYXJS
ZW5kZXJQYXNzU3RlbmNpbEF0dGFjaG1lbnQoYXR0YWNobWVudEluZGV4VmssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFy
RGVwdGhTdGVuY2lsVmFsdWUuc3RlbmNpbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dFZrLT5nZXRSZW5kZXJQ
YXNzQ29tbWFuZEJ1ZmZlcigpLmNsZWFyUmVuZGVyUGFzc1N0ZW5jaWxBdHRhY2htZW50KAotICAg
ICAgICAgICAgICAgICAgICBhdHRhY2htZW50SW5kZXhWaywgY2xlYXJEZXB0aFN0ZW5jaWxWYWx1
ZS5zdGVuY2lsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICB2azo6RnJh
bWVidWZmZXJIZWxwZXIgbmV3RnJhbWVidWZmZXI7CisgICAgQU5HTEVfVFJZKG5ld0ZyYW1lYnVm
ZmVyLmluaXQoY29udGV4dFZrLCBmcmFtZWJ1ZmZlckluZm8pKTsKIAorICAgIG1GcmFtZWJ1ZmZl
ckNhY2hlW21DdXJyZW50RnJhbWVidWZmZXJEZXNjXSA9IHN0ZDo6bW92ZShuZXdGcmFtZWJ1ZmZl
cik7CisgICAgbUZyYW1lYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJm1G
cmFtZWJ1ZmZlckNhY2hlW21DdXJyZW50RnJhbWVidWZmZXJEZXNjXTsKKyAgICAqZnJhbWVidWZm
ZXJPdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAmbUZyYW1lYnVmZmVyLT5nZXRGcmFt
ZWJ1ZmZlcigpOwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApAQCAt
MTM2NCwxNSArMTM0MSw3IEBAIGFuZ2xlOjpSZXN1bHQgRnJhbWVidWZmZXJWazo6c3RhcnROZXdS
ZW5kZXJQYXNzKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIHZrOjpBdHRhY2htZW50T3BzQXJy
YXkgcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHM7CiAgICAgc3RkOjp2ZWN0b3I8VmtDbGVhclZhbHVl
PiBhdHRhY2htZW50Q2xlYXJWYWx1ZXM7CiAKLSAgICB2azo6Q29tbWFuZEJ1ZmZlciAqd3JpdGVD
b21tYW5kcyA9IG51bGxwdHI7Ci0gICAgaWYgKGNvbnRleHRWay0+Y29tbWFuZEdyYXBoRW5hYmxl
ZCgpKQotICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKG1GcmFtZWJ1ZmZlci5yZWNvcmRDb21tYW5k
cyhjb250ZXh0VmssICZ3cml0ZUNvbW1hbmRzKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmdldE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1
ZmZlcigmd3JpdGVDb21tYW5kcykpOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5l
bmRSZW5kZXJQYXNzKCkpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBSZW5kZXJQYXNzIGluZm8uCiAg
ICAgY29uc3QgYXV0byAmY29sb3JSZW5kZXJUYXJnZXRzID0gbVJlbmRlclRhcmdldENhY2hlLmdl
dENvbG9ycygpOwpAQCAtMTM4MSw3ICsxMzUwLDcgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZl
clZrOjpzdGFydE5ld1JlbmRlclBhc3MoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIFJl
bmRlclRhcmdldFZrICpjb2xvclJlbmRlclRhcmdldCA9IGNvbG9yUmVuZGVyVGFyZ2V0c1tjb2xv
ckluZGV4R0xdOwogICAgICAgICBBU1NFUlQoY29sb3JSZW5kZXJUYXJnZXQpOwogCi0gICAgICAg
IEFOR0xFX1RSWShjb2xvclJlbmRlclRhcmdldC0+b25Db2xvckRyYXcoY29udGV4dFZrLCAmbUZy
YW1lYnVmZmVyLCB3cml0ZUNvbW1hbmRzKSk7CisgICAgICAgIEFOR0xFX1RSWShjb2xvclJlbmRl
clRhcmdldC0+b25Db2xvckRyYXcoY29udGV4dFZrKSk7CiAKICAgICAgICAgcmVuZGVyUGFzc0F0
dGFjaG1lbnRPcHMuaW5pdFdpdGhMb2FkU3RvcmUoYXR0YWNobWVudENsZWFyVmFsdWVzLnNpemUo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktf
SU1BR0VfTEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTCwKQEAgLTEzODksMTEgKzEzNTgs
MTAgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpzdGFydE5ld1JlbmRlclBhc3MoQ29u
dGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIGF0dGFjaG1lbnRDbGVhclZhbHVlcy5lbXBsYWNl
X2JhY2soa1VuaW5pdGlhbGl6ZWRDbGVhclZhbHVlKTsKICAgICB9CiAKLSAgICBSZW5kZXJUYXJn
ZXRWayAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gbVJlbmRlclRhcmdldENhY2hlLmdldERl
cHRoU3RlbmNpbCgpOworICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxSZW5kZXJUYXJn
ZXQgPSBnZXREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKTsKICAgICBpZiAoZGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKAotICAgICAgICAgICAgZGVw
dGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5vbkRlcHRoU3RlbmNpbERyYXcoY29udGV4dFZrLCAmbUZy
YW1lYnVmZmVyLCB3cml0ZUNvbW1hbmRzKSk7CisgICAgICAgIEFOR0xFX1RSWShkZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXQtPm9uRGVwdGhTdGVuY2lsRHJhdyhjb250ZXh0VmspKTsKIAogICAgICAg
ICByZW5kZXJQYXNzQXR0YWNobWVudE9wcy5pbml0V2l0aExvYWRTdG9yZShhdHRhY2htZW50Q2xl
YXJWYWx1ZXMuc2l6ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWS19JTUFHRV9MQVlPVVRfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UX09QVElN
QUwsCkBAIC0xNDAxLDE5ICsxMzY5LDkgQEAgYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlclZrOjpz
dGFydE5ld1JlbmRlclBhc3MoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgIGF0dGFjaG1l
bnRDbGVhclZhbHVlcy5lbXBsYWNlX2JhY2soa1VuaW5pdGlhbGl6ZWRDbGVhclZhbHVlKTsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gbUZyYW1lYnVmZmVyLmJlZ2luUmVuZGVyUGFzcyhjb250ZXh0VmssICpm
cmFtZWJ1ZmZlciwgcmVuZGVyQXJlYSwgbVJlbmRlclBhc3NEZXNjLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJQYXNzQXR0YWNobWVudE9wcywgYXR0
YWNobWVudENsZWFyVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kQnVmZmVyT3V0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgY29udGV4dFZrLT5iZWdpblJlbmRlclBhc3MoKmZyYW1lYnVmZmVyLCByZW5kZXJBcmVhLCBt
UmVuZGVyUGFzc0Rlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRl
clBhc3NBdHRhY2htZW50T3BzLCBhdHRhY2htZW50Q2xlYXJWYWx1ZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXJPdXQpOwotICAgICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci0gICAgfQorICAgIHJldHVybiBjb250ZXh0VmstPmZs
dXNoQW5kQmVnaW5SZW5kZXJQYXNzKCpmcmFtZWJ1ZmZlciwgcmVuZGVyQXJlYSwgbVJlbmRlclBh
c3NEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bmRlclBhc3NBdHRhY2htZW50T3BzLCBhdHRhY2htZW50Q2xlYXJWYWx1ZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlck91dCk7CiB9
CiAKIHZvaWQgRnJhbWVidWZmZXJWazo6dXBkYXRlQWN0aXZlQ29sb3JNYXNrcyhzaXplX3QgY29s
b3JJbmRleEdMLCBib29sIHIsIGJvb2wgZywgYm9vbCBiLCBib29sIGEpCkBAIC0xNDY4LDI4ICsx
NDI2LDYgQEAgZ2w6OlJlY3RhbmdsZSBGcmFtZWJ1ZmZlclZrOjpnZXRTY2lzc29yZWRSZW5kZXJB
cmVhKENvbnRleHRWayAqY29udGV4dFZrKSBjb25zdAogICAgIHJldHVybiBDbGlwUmVjdFRvU2Np
c3Nvcihjb250ZXh0VmstPmdldFN0YXRlKCksIHJlbmRlckFyZWEsIGludmVydFZpZXdwb3J0KTsK
IH0KIAotdm9pZCBGcmFtZWJ1ZmZlclZrOjpvblNjaXNzb3JDaGFuZ2UoQ29udGV4dFZrICpjb250
ZXh0VmspCi17Ci0gICAgZ2w6OlJlY3RhbmdsZSBzY2lzc29yZWRSZW5kZXJBcmVhID0gZ2V0U2Np
c3NvcmVkUmVuZGVyQXJlYShjb250ZXh0VmspOwotCi0gICAgLy8gSWYgdGhlIHNjaXNzb3IgaGFz
IGdyb3duIGJleW9uZCB0aGUgcHJldmlvdXMgc2Npc3NvcmVkUmVuZGVyQXJlYSwgbWFrZSBzdXJl
IHRoZSByZW5kZXIgcGFzcwotICAgIC8vIGlzIHJlc3RhcnRlZC4gIE90aGVyd2lzZSwgd2UgY2Fu
IGNvbnRpbnVlIHVzaW5nIHRoZSBzYW1lIHJlbmRlcnBhc3MgYXJlYS4KLSAgICAvLwotICAgIC8v
IFdpdGhvdXQgYSBzY2lzc29yLCB0aGUgcmVuZGVyIHBhc3MgYXJlYSBjb3ZlcnMgdGhlIHdob2xl
IG9mIHRoZSBmcmFtZWJ1ZmZlci4gIFdpdGggYQotICAgIC8vIHNjaXNzb3JlZCBjbGVhciwgdGhl
IHJlbmRlciBwYXNzIGFyZWEgY291bGQgYmUgc21hbGxlciB0aGFuIHRoZSBmcmFtZWJ1ZmZlciBz
aXplLiAgV2hlbiB0aGUKLSAgICAvLyBzY2lzc29yIGNoYW5nZXMsIGlmIHRoZSBzY2lzc29yIGFy
ZWEgaXMgY29tcGxldGVseSBlbmNvbXBhc3NlZCBieSB0aGUgcmVuZGVyIHBhc3MgYXJlYSwgaXQn
cwotICAgIC8vIHBvc3NpYmxlIHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzYW1lIHJlbmRlciBwYXNz
LiAgSG93ZXZlciwgaWYgdGhlIGN1cnJlbnQgcmVuZGVyIHBhc3MgYXJlYQotICAgIC8vIGlzIHRv
byBzbWFsbCwgd2UgbmVlZCB0byBzdGFydCBhIG5ldyBvbmUuICBUaGUgbGF0dGVyIGNhbiBoYXBw
ZW4gaWYgYSBzY2lzc29yZWQgY2xlYXIgc3RhcnRzCi0gICAgLy8gYSByZW5kZXIgcGFzcywgdGhl
IHNjaXNzb3IgaXMgZGlzYWJsZWQgYW5kIGEgZHJhdyBjYWxsIGlzIGlzc3VlZCB0byBhZmZlY3Qg
dGhlIHdob2xlCi0gICAgLy8gZnJhbWVidWZmZXIuCi0gICAgbUZyYW1lYnVmZmVyLnVwZGF0ZUN1
cnJlbnRBY2Nlc3NOb2RlcygpOwotICAgIGlmIChtRnJhbWVidWZmZXIuaGFzU3RhcnRlZFJlbmRl
clBhc3MoKSAmJgotICAgICAgICAhbUZyYW1lYnVmZmVyLmdldFJlbmRlclBhc3NSZW5kZXJBcmVh
KCkuZW5jbG9zZXMoc2Npc3NvcmVkUmVuZGVyQXJlYSkpCi0gICAgewotICAgICAgICBtRnJhbWVi
dWZmZXIuZmluaXNoQ3VycmVudENvbW1hbmRzKGNvbnRleHRWayk7Ci0gICAgfQotfQotCiBSZW5k
ZXJUYXJnZXRWayAqRnJhbWVidWZmZXJWazo6Z2V0Rmlyc3RSZW5kZXJUYXJnZXQoKSBjb25zdAog
ewogICAgIGZvciAoYXV0byAqcmVuZGVyVGFyZ2V0IDogbVJlbmRlclRhcmdldENhY2hlLmdldENv
bG9ycygpKQpAQCAtMTUwMCw3ICsxNDM2LDcgQEAgUmVuZGVyVGFyZ2V0VmsgKkZyYW1lYnVmZmVy
Vms6OmdldEZpcnN0UmVuZGVyVGFyZ2V0KCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBtUmVuZGVyVGFyZ2V0Q2FjaGUuZ2V0RGVwdGhTdGVuY2lsKCk7CisgICAgcmV0dXJu
IGdldERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgpOwogfQogCiBHTGludCBGcmFtZWJ1ZmZlclZr
OjpnZXRTYW1wbGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZr
LmgKaW5kZXggNGExNGY0YWE2M2I0YThiZGE3ZWVkZmM4MmU2YjA5NWZiNGM3ZGEwZS4uMGM0YTcw
OWYwZjRhNjFiMjU3ZGMxYmY5YTliN2JkNGRmMWM3NDdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZr
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9GcmFtZWJ1ZmZlclZrLmgKQEAgLTEzLDcgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9SZW5kZXJUYXJnZXRDYWNoZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9CdWZmZXJWay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5k
R3JhcGguaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9VdGlsc1ZrLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmgiCiAKQEAgLTEwNSwy
MyArMTA1LDEwIEBAIGNsYXNzIEZyYW1lYnVmZmVyVmsgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBs
CiAgICAgZ2w6OlJlY3RhbmdsZSBnZXRDb21wbGV0ZVJlbmRlckFyZWEoKSBjb25zdDsKICAgICBn
bDo6UmVjdGFuZ2xlIGdldFNjaXNzb3JlZFJlbmRlckFyZWEoQ29udGV4dFZrICpjb250ZXh0Vmsp
IGNvbnN0OwogCi0gICAgdm9pZCBvblNjaXNzb3JDaGFuZ2UoQ29udGV4dFZrICpjb250ZXh0Vmsp
OwotCiAgICAgY29uc3QgZ2w6OkRyYXdCdWZmZXJNYXNrICZnZXRFbXVsYXRlZEFscGhhQXR0YWNo
bWVudE1hc2soKSBjb25zdDsKICAgICBSZW5kZXJUYXJnZXRWayAqZ2V0Q29sb3JEcmF3UmVuZGVy
VGFyZ2V0KHNpemVfdCBjb2xvckluZGV4KSBjb25zdDsKICAgICBSZW5kZXJUYXJnZXRWayAqZ2V0
Q29sb3JSZWFkUmVuZGVyVGFyZ2V0KCkgY29uc3Q7CiAKLSAgICAvLyBUaGlzIHdpbGwgY2xlYXIg
dGhlIGN1cnJlbnQgd3JpdGUgb3BlcmF0aW9uIGlmIGl0IGlzIGNvbXBsZXRlLgotICAgIGJvb2wg
YXBwZW5kVG9TdGFydGVkUmVuZGVyUGFzcyh2azo6UmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVz
ZUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjpDb21tYW5kQnVmZmVyICoqY29tbWFuZEJ1ZmZlck91dCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtRnJhbWVidWZmZXIuYXBwZW5kVG9TdGFydGVkUmVuZGVyUGFzcyhyZXNvdXJjZVVzZUxpc3Qs
IHJlbmRlckFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kQnVmZmVyT3V0KTsKLSAgICB9Ci0KLSAgICB2azo6RnJhbWVidWZm
ZXJIZWxwZXIgKmdldEZyYW1lYnVmZmVyKCkgeyByZXR1cm4gJm1GcmFtZWJ1ZmZlcjsgfQotCiAg
ICAgYW5nbGU6OlJlc3VsdCBzdGFydE5ld1JlbmRlclBhc3MoQ29udGV4dFZrICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnJlbmRlckFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNv
bW1hbmRCdWZmZXIgKipjb21tYW5kQnVmZmVyT3V0KTsKQEAgLTEzMCw2ICsxMTcsNyBAQCBjbGFz
cyBGcmFtZWJ1ZmZlclZrIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogICAgIEdMaW50IGdldFNh
bXBsZXMoKSBjb25zdDsKIAogICAgIGNvbnN0IHZrOjpSZW5kZXJQYXNzRGVzYyAmZ2V0UmVuZGVy
UGFzc0Rlc2MoKSBjb25zdCB7IHJldHVybiBtUmVuZGVyUGFzc0Rlc2M7IH0KKyAgICBjb25zdCB2
azo6RnJhbWVidWZmZXJEZXNjICZnZXRGcmFtZWJ1ZmZlckRlc2MoKSBjb25zdCB7IHJldHVybiBt
Q3VycmVudEZyYW1lYnVmZmVyRGVzYzsgfQogCiAgIHByaXZhdGU6CiAgICAgRnJhbWVidWZmZXJW
ayhSZW5kZXJlclZrICpyZW5kZXJlciwKQEAgLTE2MiwxMyArMTUwLDYgQEAgY2xhc3MgRnJhbWVi
dWZmZXJWayA6IHB1YmxpYyBGcmFtZWJ1ZmZlckltcGwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGNsZWFyU3RlbmNpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWa0NsZWFyQ29sb3JWYWx1ZSAmY2xlYXJDb2xvclZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZrQ2xlYXJEZXB0aFN0ZW5jaWxWYWx1ZSAmY2xlYXJEZXB0aFN0ZW5j
aWxWYWx1ZSk7Ci0gICAgYW5nbGU6OlJlc3VsdCBjbGVhcldpdGhSZW5kZXJQYXNzT3AoQ29udGV4
dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmY2xlYXJBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpEcmF3QnVmZmVyTWFzayBjbGVhckNvbG9yQnVmZmVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNsZWFyRGVwdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjbGVhclN0ZW5jaWws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtDbGVhckNv
bG9yVmFsdWUgJmNsZWFyQ29sb3JWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBWa0NsZWFyRGVwdGhTdGVuY2lsVmFsdWUgJmNsZWFyRGVwdGhTdGVu
Y2lsVmFsdWUpOwogICAgIGFuZ2xlOjpSZXN1bHQgY2xlYXJXaXRoRHJhdyhDb250ZXh0VmsgKmNv
bnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmY2xlYXJBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RHJh
d0J1ZmZlck1hc2sgY2xlYXJDb2xvckJ1ZmZlcnMsCkBAIC0xODAsMTIgKzE2MSwxNSBAQCBjbGFz
cyBGcmFtZWJ1ZmZlclZrIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogICAgIHZvaWQgdXBkYXRl
QWN0aXZlQ29sb3JNYXNrcyhzaXplX3QgY29sb3JJbmRleCwgYm9vbCByLCBib29sIGcsIGJvb2wg
YiwgYm9vbCBhKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlclBhc3NEZXNjKCk7CiAgICAgYW5nbGU6
OlJlc3VsdCB1cGRhdGVDb2xvckF0dGFjaG1lbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
IHNpemVfdCBjb2xvckluZGV4KTsKLSAgICB2b2lkIGludmFsaWRhdGVJbXBsKENvbnRleHRWayAq
Y29udGV4dFZrLCBzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworICAg
IGFuZ2xlOjpSZXN1bHQgaW52YWxpZGF0ZUltcGwoQ29udGV4dFZrICpjb250ZXh0VmssIHNpemVf
dCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CisgICAgLy8gUmVsZWFzZSBhbGwg
RnJhbWVidWZmZXJWayBvYmplY3RzIGluIHRoZSBjYWNoZSBhbmQgY2xlYXIgY2FjaGUKKyAgICB2
b2lkIGNsZWFyQ2FjaGUoQ29udGV4dFZrICpjb250ZXh0VmspOworICAgIHZvaWQgdXBkYXRlRGVw
dGhTdGVuY2lsQXR0YWNobWVudFNlcmlhbChDb250ZXh0VmsgKmNvbnRleHRWayk7CiAKICAgICBX
aW5kb3dTdXJmYWNlVmsgKm1CYWNrYnVmZmVyOwogCiAgICAgdms6OlJlbmRlclBhc3NEZXNjIG1S
ZW5kZXJQYXNzRGVzYzsKLSAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgbUZyYW1lYnVmZmVyOwor
ICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqbUZyYW1lYnVmZmVyOwogICAgIFJlbmRlclRhcmdl
dENhY2hlPFJlbmRlclRhcmdldFZrPiBtUmVuZGVyVGFyZ2V0Q2FjaGU7CiAKICAgICAvLyBUaGVz
ZSB0d28gdmFyaWFibGVzIGFyZSB1c2VkIHRvIHF1aWNrbHkgY29tcHV0ZSBpZiB3ZSBuZWVkIHRv
IGRvIGEgbWFza2VkIGNsZWFyLiBJZiBhIGNvbG9yCkBAIC0xOTksNiArMTgzLDEwIEBAIGNsYXNz
IEZyYW1lYnVmZmVyVmsgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiAgICAgLy8gdGhlIGZyYW1l
YnVmZmVyIGRvZXMgbm90LCB3ZSBuZWVkIHRvIG1hc2sgb3V0IHRoZSBhbHBoYSBjaGFubmVsLiBU
aGlzIERyYXdCdWZmZXJNYXNrIHdpbGwKICAgICAvLyBjb250YWluIHRoZSBtYXNrIHRvIGFwcGx5
IHRvIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4gZHJhd2luZy4KICAgICBnbDo6RHJhd0J1ZmZlck1h
c2sgbUVtdWxhdGVkQWxwaGFBdHRhY2htZW50TWFzazsKKworICAgIHZrOjpGcmFtZWJ1ZmZlckRl
c2MgbUN1cnJlbnRGcmFtZWJ1ZmZlckRlc2M7CisgICAgc3RkOjp1bm9yZGVyZWRfbWFwPHZrOjpG
cmFtZWJ1ZmZlckRlc2MsIHZrOjpGcmFtZWJ1ZmZlckhlbHBlcj4gbUZyYW1lYnVmZmVyQ2FjaGU7
CisgICAgYm9vbCBtU3VwcG9ydERlcHRoU3RlbmNpbEZlZWRiYWNrTG9vcHM7CiB9OwogfSAgLy8g
bmFtZXNwYWNlIHJ4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXJWay5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVy
VmsuY3BwCmluZGV4IDliYzkzZGQyNGZmMDRkMWY4OTMwOWU2ZDY4N2RkMzQ4NjQ1OWRmZGEuLjJl
MzJjMjZmM2IyMDQ4MjhiZTU5NGFiNTViMDMwMzAwODY1NTgwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dy
YXBwZXJWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBlclZrLmNwcApAQCAtMjEsNDMgKzIxLDc2IEBAIGFu
Z2xlOjpSZXN1bHQgRXJyb3JIYW5kbGVyKHZrOjpDb250ZXh0ICpjb250ZXh0LCBHbHNsYW5nRXJy
b3IpCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OlN0b3A7CiB9CiAKLUdsc2xhbmdTb3VyY2VP
cHRpb25zIENyZWF0ZVNvdXJjZU9wdGlvbnMoY29uc3QgYW5nbGU6OkZlYXR1cmVzVmsgJmZlYXR1
cmVzKQorfSAgLy8gbmFtZXNwYWNlCisKKy8vIHN0YXRpYworR2xzbGFuZ1NvdXJjZU9wdGlvbnMg
R2xzbGFuZ1dyYXBwZXJWazo6Q3JlYXRlU291cmNlT3B0aW9ucyhjb25zdCBhbmdsZTo6RmVhdHVy
ZXNWayAmZmVhdHVyZXMpCiB7CiAgICAgR2xzbGFuZ1NvdXJjZU9wdGlvbnMgb3B0aW9uczsKLSAg
ICBvcHRpb25zLnVuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4ID0ga1VuaWZvcm1zQW5k
WGZiRGVzY3JpcHRvclNldEluZGV4OwotICAgIG9wdGlvbnMudGV4dHVyZURlc2NyaXB0b3JTZXRJ
bmRleCAgICAgICAgPSBrVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleDsKLSAgICBvcHRpb25zLnNo
YWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4ID0ga1NoYWRlclJlc291cmNlRGVzY3JpcHRv
clNldEluZGV4OwotICAgIG9wdGlvbnMuZHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXgg
PSBrRHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXg7Ci0gICAgb3B0aW9ucy54ZmJCaW5k
aW5nSW5kZXhTdGFydCAgICAgICAgICAgICA9IGtYZmJCaW5kaW5nSW5kZXhTdGFydDsKLSAgICBv
cHRpb25zLnVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycyAgICAgID0gZmVhdHVyZXMuZm9yY2VP
bGRSZXdyaXRlU3RydWN0U2FtcGxlcnMuZW5hYmxlZDsKKworICAgIG9wdGlvbnMudXNlT2xkUmV3
cml0ZVN0cnVjdFNhbXBsZXJzID0gZmVhdHVyZXMuZm9yY2VPbGRSZXdyaXRlU3RydWN0U2FtcGxl
cnMuZW5hYmxlZDsKICAgICBvcHRpb25zLnN1cHBvcnRzVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNp
b24gPQogICAgICAgICBmZWF0dXJlcy5zdXBwb3J0c1RyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9u
LmVuYWJsZWQ7CiAgICAgb3B0aW9ucy5lbXVsYXRlVHJhbnNmb3JtRmVlZGJhY2sgPSBmZWF0dXJl
cy5lbXVsYXRlVHJhbnNmb3JtRmVlZGJhY2suZW5hYmxlZDsKICAgICBvcHRpb25zLmVtdWxhdGVC
cmVzZW5oYW1MaW5lcyAgICA9IGZlYXR1cmVzLmJhc2ljR0xMaW5lUmFzdGVyaXphdGlvbi5lbmFi
bGVkOworCiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9Ci19ICAvLyBuYW1lc3BhY2UKKworLy8gc3Rh
dGljCit2b2lkIEdsc2xhbmdXcmFwcGVyVms6OlJlc2V0R2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJ
bmZvKAorICAgIEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAqZ2xzbGFuZ1Byb2dyYW1JbnRl
cmZhY2VJbmZvKQoreworICAgIGdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mby0+dW5pZm9ybXNB
bmRYZmJEZXNjcmlwdG9yU2V0SW5kZXggPQorICAgICAgICBrVW5pZm9ybXNBbmRYZmJEZXNjcmlw
dG9yU2V0SW5kZXg7CisgICAgZ2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50VW5p
Zm9ybUJpbmRpbmdJbmRleCA9IDA7CisgICAgZ2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvLT50
ZXh0dXJlRGVzY3JpcHRvclNldEluZGV4ICA9IGtUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4Owor
ICAgIGdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mby0+Y3VycmVudFRleHR1cmVCaW5kaW5nSW5k
ZXggPSAwOworICAgIGdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mby0+c2hhZGVyUmVzb3VyY2VE
ZXNjcmlwdG9yU2V0SW5kZXggPQorICAgICAgICBrU2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0
SW5kZXg7CisgICAgZ2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvLT5jdXJyZW50U2hhZGVyUmVz
b3VyY2VCaW5kaW5nSW5kZXggPSAwOworICAgIGdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mby0+
ZHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXggPQorICAgICAgICBrRHJpdmVyVW5pZm9y
bXNEZXNjcmlwdG9yU2V0SW5kZXg7CisKKyAgICBnbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8t
PmxvY2F0aW9uc1VzZWRGb3JYZmJFeHRlbnNpb24gPSAwOworfQogCiAvLyBzdGF0aWMKIHZvaWQg
R2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyU291cmNlKGNvbnN0IGFuZ2xlOjpGZWF0dXJlc1Zr
ICZmZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJj
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHbHNsYW5nUHJvZ3Jh
bUludGVyZmFjZUluZm8gKnByb2dyYW1JbnRlcmZhY2VJbmZvLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gKnNoYWRlclNv
dXJjZXNPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJ
bnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxlSW5mb01hcE91dCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5m
b01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KQogewotICAgIEdsc2xhbmdHZXRTaGFkZXJTb3VyY2Uo
Q3JlYXRlU291cmNlT3B0aW9ucyhmZWF0dXJlcyksIHByb2dyYW1TdGF0ZSwgcmVzb3VyY2VzLCBz
aGFkZXJTb3VyY2VzT3V0LAorICAgIEdsc2xhbmdTb3VyY2VPcHRpb25zIG9wdGlvbnMgPSBDcmVh
dGVTb3VyY2VPcHRpb25zKGZlYXR1cmVzKTsKKyAgICBHbHNsYW5nR2V0U2hhZGVyU291cmNlKG9w
dGlvbnMsIHByb2dyYW1TdGF0ZSwgcmVzb3VyY2VzLCBwcm9ncmFtSW50ZXJmYWNlSW5mbywgc2hh
ZGVyU291cmNlc091dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5mb01h
cE91dCk7CiB9CiAKIC8vIHN0YXRpYwotYW5nbGU6OlJlc3VsdCBHbHNsYW5nV3JhcHBlclZrOjpH
ZXRTaGFkZXJDb2RlKHZrOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZnbENhcHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlck1h
cDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFw
ICZ2YXJpYWJsZUluZm9NYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnZlY3Rvcjx1aW50MzJfdD4+ICpzaGFkZXJDb2Rl
T3V0KQorYW5nbGU6OlJlc3VsdCBHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJDb2RlKAorICAg
IHZrOjpDb250ZXh0ICpjb250ZXh0LAorICAgIGNvbnN0IGdsOjpDYXBzICZnbENhcHMsCisgICAg
Y29uc3QgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCisgICAgY29u
c3QgU2hhZGVyTWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXAsCisg
ICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnZlY3Rvcjx1aW50MzJfdD4+ICpzaGFkZXJDb2RlT3V0KQog
ewogICAgIHJldHVybiBHbHNsYW5nR2V0U2hhZGVyU3BpcnZDb2RlKAogICAgICAgICBbY29udGV4
dF0oR2xzbGFuZ0Vycm9yIGVycm9yKSB7IHJldHVybiBFcnJvckhhbmRsZXIoY29udGV4dCwgZXJy
b3IpOyB9LCBnbENhcHMsCiAgICAgICAgIHNoYWRlclNvdXJjZXMsIHZhcmlhYmxlSW5mb01hcCwg
c2hhZGVyQ29kZU91dCk7CiB9CisKKy8vIHN0YXRpYworYW5nbGU6OlJlc3VsdCBHbHNsYW5nV3Jh
cHBlclZrOjpUcmFuc2Zvcm1TcGlyVigKKyAgICB2azo6Q29udGV4dCAqY29udGV4dCwKKyAgICBj
b25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgIGNvbnN0IFNoYWRlckludGVyZmFj
ZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAorICAgIHN0ZDo6dmVjdG9yPHVpbnQz
Ml90PiAmaW5pdGlhbFNwaXJ2QmxvYiwKKyAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gKnNoYWRl
ckNvZGVPdXQpCit7CisgICAgcmV0dXJuIFRyYW5zZm9ybVNwaXJ2Q29kZSgKKyAgICAgICAgW2Nv
bnRleHRdKEdsc2xhbmdFcnJvciBlcnJvcikgeyByZXR1cm4gRXJyb3JIYW5kbGVyKGNvbnRleHQs
IGVycm9yKTsgfSwgc2hhZGVyVHlwZSwKKyAgICAgICAgdmFyaWFibGVJbmZvTWFwLCBpbml0aWFs
U3BpcnZCbG9iLCBzaGFkZXJDb2RlT3V0KTsKK30KIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9HbHNsYW5nV3JhcHBlclZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyVmsuaAppbmRleCBmYTQ4NjZjZmExOTRj
OTkwYzAyMzBmNjQ3YzMwMTNmNmIwMTg3OTQ0Li5jNWIzM2MyMWI3NmQ3YmU5YTUzYzU3ODg1NjYy
NTI5YWIyMWI4Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyVmsuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVy
VmsuaApAQCAtMjUsMTcgKzI1LDI5IEBAIG5hbWVzcGFjZSByeAogY2xhc3MgR2xzbGFuZ1dyYXBw
ZXJWawogewogICBwdWJsaWM6CisgICAgc3RhdGljIEdsc2xhbmdTb3VyY2VPcHRpb25zIENyZWF0
ZVNvdXJjZU9wdGlvbnMoY29uc3QgYW5nbGU6OkZlYXR1cmVzVmsgJmZlYXR1cmVzKTsKKworICAg
IHN0YXRpYyB2b2lkIFJlc2V0R2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvKAorICAgICAgICBH
bHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8gKmdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyk7
CisKICAgICBzdGF0aWMgdm9pZCBHZXRTaGFkZXJTb3VyY2UoY29uc3QgYW5nbGU6OkZlYXR1cmVz
VmsgJmZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQcm9ncmFtTGlua2VkUmVzb3VyY2VzICZyZXNvdXJjZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyAqcHJv
Z3JhbUludGVyZmFjZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpT
aGFkZXJNYXA8c3RkOjpzdHJpbmc+ICpzaGFkZXJTb3VyY2VzT3V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgKnZhcmlhYmxl
SW5mb01hcE91dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlck1hcElu
dGVyZmFjZVZhcmlhYmxlSW5mb01hcCAqdmFyaWFibGVJbmZvTWFwT3V0KTsKIAogICAgIHN0YXRp
YyBhbmdsZTo6UmVzdWx0IEdldFNoYWRlckNvZGUodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Q2FwcyAmZ2xDYXBz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRl
ck1hcDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZh
cmlhYmxlSW5mb01hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNoYWRlck1hcDxzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4+ICpzaGFkZXJDb2Rlc091dCk7CisKKyAgICBzdGF0aWMgYW5nbGU6
OlJlc3VsdCBUcmFuc2Zvcm1TcGlyVih2azo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRl
ckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiAmaW5pdGlh
bFNwaXJ2QmxvYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3Rvcjx1aW50MzJfdD4gKnNoYWRlckNvZGVPdXQpOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBy
eAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL01lbW9yeU9iamVjdFZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vTWVtb3J5T2JqZWN0VmsuY3BwCmluZGV4IDk2
Y2E4MzU1ZmMwODc4MjFlMmM2OWIwOTUxNWNlYTRmOWViNTczMzYuLjk0OGUwOTI4YTQwZmQ5MzU1
ZDJiZGJhMGNjNGUyMTQzZTU0NzFjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vTWVtb3J5T2JqZWN0VmsuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vTWVt
b3J5T2JqZWN0VmsuY3BwCkBAIC03LDEyICs3LDEyIEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vTWVtb3J5T2JqZWN0VmsuaCIKIAotI2luY2x1ZGUgInZvbGsuaCIKLQog
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCIKKyNpbmNsdWRlICJ2b2xr
LmgiCisjaW5jbHVkZSAidnVsa2FuL3Z1bGthbl9mdWNoc2lhX2V4dC5oIgogCiAjaWYgIWRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKICMgICAgaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0y
MCwxNCArMjAsMTcgQEAKICMgICAgaW5jbHVkZSA8aW8uaD4KICNlbmRpZgogCisjaWYgZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9GVUNIU0lBKQorIyAgICBpbmNsdWRlIDx6aXJjb24vc3RhdHVzLmg+
CisjICAgIGluY2x1ZGUgPHppcmNvbi9zeXNjYWxscy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBy
eAogewogCiBuYW1lc3BhY2UKIHsKIAotY29uc3RleHByIGludCBrSW52YWxpZEZkID0gLTE7Ci0K
ICNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCiBpbnQgY2xvc2UoaW50IGZkKQog
ewpAQCAtMzUsOSArMzgsNDUgQEAgaW50IGNsb3NlKGludCBmZCkKIH0KICNlbmRpZgogCit2b2lk
IENsb3NlWmlyY29uVm1vKHp4X2hhbmRsZV90IGhhbmRsZSkKK3sKKyNpZiBkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX0ZVQ0hTSUEpCisgICAgenhfaGFuZGxlX2Nsb3NlKGhhbmRsZSk7CisjZWxzZQor
ICAgIFVOUkVBQ0hBQkxFKCk7CisjZW5kaWYKK30KKworYW5nbGU6OlJlc3VsdCBEdXBsaWNhdGVa
aXJjb25WbW8oQ29udGV4dFZrICpjb250ZXh0VmssIHp4X2hhbmRsZV90IGhhbmRsZSwgenhfaGFu
ZGxlX3QgKmR1cGxpY2F0ZSkKK3sKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0ZVQ0hTSUEp
CisgICAgenhfc3RhdHVzX3Qgc3RhdHVzID0genhfaGFuZGxlX2R1cGxpY2F0ZShoYW5kbGUsIFpY
X1JJR0hUX1NBTUVfUklHSFRTLCBkdXBsaWNhdGUpOworICAgIEFOR0xFX1ZLX0NIRUNLKGNvbnRl
eHRWaywgc3RhdHVzID09IFpYX09LLCBWS19FUlJPUl9JTlZBTElEX0VYVEVSTkFMX0hBTkRMRSk7
CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworI2Vsc2UKKyAgICBVTlJFQUNI
QUJMRSgpOworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpTdG9wOworI2VuZGlmCit9CisKK1Zr
RXh0ZXJuYWxNZW1vcnlIYW5kbGVUeXBlRmxhZ0JpdHMgVG9WdWxrYW5IYW5kbGVUeXBlKGdsOjpI
YW5kbGVUeXBlIGhhbmRsZVR5cGUpCit7CisgICAgc3dpdGNoIChoYW5kbGVUeXBlKQorICAgIHsK
KyAgICAgICAgY2FzZSBnbDo6SGFuZGxlVHlwZTo6T3BhcXVlRmQ6CisgICAgICAgICAgICByZXR1
cm4gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVQ7CisgICAgICAg
IGNhc2UgZ2w6OkhhbmRsZVR5cGU6OlppcmNvblZtbzoKKyAgICAgICAgICAgIHJldHVybiBWS19F
WFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfVEVNUF9aSVJDT05fVk1PX0JJVF9GVUNIU0lBOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gTm90IGEgbWVtb3J5IGhhbmRsZSB0eXBl
LgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19FWFRF
Uk5BTF9NRU1PUllfSEFORExFX1RZUEVfRkxBR19CSVRTX01BWF9FTlVNOworICAgIH0KK30KKwog
fSAgLy8gbmFtZXNwYWNlCiAKLU1lbW9yeU9iamVjdFZrOjpNZW1vcnlPYmplY3RWaygpIDogbVNp
emUoMCksIG1GZChrSW52YWxpZEZkKSB7fQorTWVtb3J5T2JqZWN0Vms6Ok1lbW9yeU9iamVjdFZr
KCkge30KIAogTWVtb3J5T2JqZWN0Vms6On5NZW1vcnlPYmplY3RWaygpID0gZGVmYXVsdDsKIApA
QCAtNDgsNiArODcsMTggQEAgdm9pZCBNZW1vcnlPYmplY3RWazo6b25EZXN0cm95KGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0KQogICAgICAgICBjbG9zZShtRmQpOwogICAgICAgICBtRmQgPSBr
SW52YWxpZEZkOwogICAgIH0KKworICAgIGlmIChtWmlyY29uSGFuZGxlICE9IFpYX0hBTkRMRV9J
TlZBTElEKQorICAgIHsKKyAgICAgICAgQ2xvc2VaaXJjb25WbW8obVppcmNvbkhhbmRsZSk7Cisg
ICAgICAgIG1aaXJjb25IYW5kbGUgPSBaWF9IQU5ETEVfSU5WQUxJRDsKKyAgICB9Cit9CisKK2Fu
Z2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OnNldERlZGljYXRlZE1lbW9yeShjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwgYm9vbCBkZWRpY2F0ZWRNZW1vcnkpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAogYW5nbGU6
OlJlc3VsdCBNZW1vcnlPYmplY3RWazo6aW1wb3J0RmQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCkBA
IC01NSwxMCArMTA2LDMwIEBAIGFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmltcG9ydEZk
KGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGZkKQogeworICAgIENvbnRleHRWayAqY29udGV4dFZrID0g
dms6OkdldEltcGwoY29udGV4dCk7CisKICAgICBzd2l0Y2ggKGhhbmRsZVR5cGUpCiAgICAgewog
ICAgICAgICBjYXNlIGdsOjpIYW5kbGVUeXBlOjpPcGFxdWVGZDoKLSAgICAgICAgICAgIHJldHVy
biBpbXBvcnRPcGFxdWVGZChjb250ZXh0LCBzaXplLCBmZCk7CisgICAgICAgICAgICByZXR1cm4g
aW1wb3J0T3BhcXVlRmQoY29udGV4dFZrLCBzaXplLCBmZCk7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6U3RvcDsKKyAgICB9Cit9CisKK2FuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6Omlt
cG9ydFppcmNvbkhhbmRsZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBlIGhh
bmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBDb250ZXh0VmsgKmNvbnRleHRWayA9IHZrOjpHZXRJ
bXBsKGNvbnRleHQpOworCisgICAgc3dpdGNoIChoYW5kbGVUeXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBnbDo6SGFuZGxlVHlwZTo6WmlyY29uVm1vOgorICAgICAgICAgICAgcmV0dXJuIGltcG9y
dFppcmNvblZtbyhjb250ZXh0VmssIHNpemUsIGhhbmRsZSk7CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBAIC02NiwxNSArMTM3LDI5IEBAIGFuZ2xlOjpS
ZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmltcG9ydEZkKGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
IH0KIH0KIAotYW5nbGU6OlJlc3VsdCBNZW1vcnlPYmplY3RWazo6aW1wb3J0T3BhcXVlRmQoZ2w6
OkNvbnRleHQgKmNvbnRleHQsIEdMdWludDY0IHNpemUsIEdMaW50IGZkKQorYW5nbGU6OlJlc3Vs
dCBNZW1vcnlPYmplY3RWazo6aW1wb3J0T3BhcXVlRmQoQ29udGV4dFZrICpjb250ZXh0VmssIEdM
dWludDY0IHNpemUsIEdMaW50IGZkKQogeworICAgIEFTU0VSVChtSGFuZGxlVHlwZSA9PSBnbDo6
SGFuZGxlVHlwZTo6SW52YWxpZEVudW0pOwogICAgIEFTU0VSVChtRmQgPT0ga0ludmFsaWRGZCk7
Ci0gICAgbUZkICAgPSBmZDsKLSAgICBtU2l6ZSA9IHNpemU7CisgICAgQVNTRVJUKGZkICE9IGtJ
bnZhbGlkRmQpOworICAgIG1IYW5kbGVUeXBlID0gZ2w6OkhhbmRsZVR5cGU6Ok9wYXF1ZUZkOwor
ICAgIG1GZCAgICAgICAgID0gZmQ7CisgICAgbVNpemUgICAgICAgPSBzaXplOworICAgIHJldHVy
biBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBNZW1vcnlPYmpl
Y3RWazo6aW1wb3J0WmlyY29uVm1vKENvbnRleHRWayAqY29udGV4dFZrLCBHTHVpbnQ2NCBzaXpl
LCBHTHVpbnQgaGFuZGxlKQoreworICAgIEFTU0VSVChtSGFuZGxlVHlwZSA9PSBnbDo6SGFuZGxl
VHlwZTo6SW52YWxpZEVudW0pOworICAgIEFTU0VSVChtWmlyY29uSGFuZGxlID09IFpYX0hBTkRM
RV9JTlZBTElEKTsKKyAgICBBU1NFUlQoaGFuZGxlICE9IFpYX0hBTkRMRV9JTlZBTElEKTsKKyAg
ICBtSGFuZGxlVHlwZSAgID0gZ2w6OkhhbmRsZVR5cGU6OlppcmNvblZtbzsKKyAgICBtWmlyY29u
SGFuZGxlID0gaGFuZGxlOworICAgIG1TaXplICAgICAgICAgPSBzaXplOwogICAgIHJldHVybiBh
bmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAotYW5nbGU6OlJlc3VsdCBNZW1vcnlPYmplY3RW
azo6Y3JlYXRlSW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCithbmdsZTo6UmVzdWx0
IE1lbW9yeU9iamVjdFZrOjpjcmVhdGVJbWFnZShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlVHlwZSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKQEAgLTgyLDcgKzE2Nyw2IEBAIGFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0
Vms6OmNyZWF0ZUltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdlSGVscGVyICppbWFnZSkK
IHsKLSAgICBDb250ZXh0VmsgKmNvbnRleHRWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOwogICAg
IFJlbmRlcmVyVmsgKnJlbmRlcmVyID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpOwogCiAgICAg
Y29uc3Qgdms6OkZvcm1hdCAmdmtGb3JtYXQgPSByZW5kZXJlci0+Z2V0Rm9ybWF0KGludGVybmFs
Rm9ybWF0KTsKQEAgLTk0LDcgKzE3OCw3IEBAIGFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6
OmNyZWF0ZUltYWdlKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogCiAgICAgVmtFeHRlcm5h
bE1lbW9yeUltYWdlQ3JlYXRlSW5mbyBleHRlcm5hbE1lbW9yeUltYWdlQ3JlYXRlSW5mbyA9IHt9
OwogICAgIGV4dGVybmFsTWVtb3J5SW1hZ2VDcmVhdGVJbmZvLnNUeXBlICAgICAgID0gVktfU1RS
VUNUVVJFX1RZUEVfRVhURVJOQUxfTUVNT1JZX0lNQUdFX0NSRUFURV9JTkZPOwotICAgIGV4dGVy
bmFsTWVtb3J5SW1hZ2VDcmVhdGVJbmZvLmhhbmRsZVR5cGVzID0gVktfRVhURVJOQUxfTUVNT1JZ
X0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVQ7CisgICAgZXh0ZXJuYWxNZW1vcnlJbWFnZUNyZWF0
ZUluZm8uaGFuZGxlVHlwZXMgPSBUb1Z1bGthbkhhbmRsZVR5cGUobUhhbmRsZVR5cGUpOwogCiAg
ICAgVmtFeHRlbnQzRCB2a0V4dGVudHM7CiAgICAgdWludDMyX3QgbGF5ZXJDb3VudDsKQEAgLTEw
OCwxMSArMTkyLDMwIEBAIGFuZ2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmNyZWF0ZUltYWdl
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIFZrTWVtb3J5UmVxdWlyZW1lbnRzIGV4
dGVybmFsTWVtb3J5UmVxdWlyZW1lbnRzOwogICAgIGltYWdlLT5nZXRJbWFnZSgpLmdldE1lbW9y
eVJlcXVpcmVtZW50cyhyZW5kZXJlci0+Z2V0RGV2aWNlKCksICZleHRlcm5hbE1lbW9yeVJlcXVp
cmVtZW50cyk7CiAKLSAgICBBU1NFUlQobUZkICE9IC0xKTsKLSAgICBWa0ltcG9ydE1lbW9yeUZk
SW5mb0tIUiBpbXBvcnRNZW1vcnlGZEluZm8gPSB7fTsKLSAgICBpbXBvcnRNZW1vcnlGZEluZm8u
c1R5cGUgICAgICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9JTVBPUlRfTUVNT1JZ
X0ZEX0lORk9fS0hSOwotICAgIGltcG9ydE1lbW9yeUZkSW5mby5oYW5kbGVUeXBlICAgICAgICAg
ICAgICA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUOwotICAg
IGltcG9ydE1lbW9yeUZkSW5mby5mZCAgICAgICAgICAgICAgICAgICAgICA9IGR1cChtRmQpOwor
ICAgIHZvaWQgKmltcG9ydE1lbW9yeUluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgVmtJbXBvcnRNZW1vcnlGZEluZm9LSFIgaW1w
b3J0TWVtb3J5RmRJbmZvICAgICAgICAgICAgICAgICAgICAgICAgID0ge307CisgICAgVmtJbXBv
cnRNZW1vcnlaaXJjb25IYW5kbGVJbmZvRlVDSFNJQSBpbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVJ
bmZvID0ge307CisgICAgc3dpdGNoIChtSGFuZGxlVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
Z2w6OkhhbmRsZVR5cGU6Ok9wYXF1ZUZkOgorICAgICAgICAgICAgQVNTRVJUKG1GZCAhPSBrSW52
YWxpZEZkKTsKKyAgICAgICAgICAgIGltcG9ydE1lbW9yeUZkSW5mby5zVHlwZSAgICAgID0gVktf
U1RSVUNUVVJFX1RZUEVfSU1QT1JUX01FTU9SWV9GRF9JTkZPX0tIUjsKKyAgICAgICAgICAgIGlt
cG9ydE1lbW9yeUZkSW5mby5oYW5kbGVUeXBlID0gVG9WdWxrYW5IYW5kbGVUeXBlKG1IYW5kbGVU
eXBlKTsKKyAgICAgICAgICAgIGltcG9ydE1lbW9yeUZkSW5mby5mZCAgICAgICAgID0gZHVwKG1G
ZCk7CisgICAgICAgICAgICBpbXBvcnRNZW1vcnlJbmZvICAgICAgICAgICAgICA9ICZpbXBvcnRN
ZW1vcnlGZEluZm87CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBnbDo6SGFuZGxl
VHlwZTo6WmlyY29uVm1vOgorICAgICAgICAgICAgQVNTRVJUKG1aaXJjb25IYW5kbGUgIT0gWlhf
SEFORExFX0lOVkFMSUQpOworICAgICAgICAgICAgaW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlSW5m
by5zVHlwZSA9CisgICAgICAgICAgICAgICAgVktfU1RSVUNUVVJFX1RZUEVfVEVNUF9JTVBPUlRf
TUVNT1JZX1pJUkNPTl9IQU5ETEVfSU5GT19GVUNIU0lBOworICAgICAgICAgICAgaW1wb3J0TWVt
b3J5WmlyY29uSGFuZGxlSW5mby5oYW5kbGVUeXBlID0gVG9WdWxrYW5IYW5kbGVUeXBlKG1IYW5k
bGVUeXBlKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWSgKKyAgICAgICAgICAgICAgICBEdXBsaWNh
dGVaaXJjb25WbW8oY29udGV4dFZrLCBtWmlyY29uSGFuZGxlLCAmaW1wb3J0TWVtb3J5WmlyY29u
SGFuZGxlSW5mby5oYW5kbGUpKTsKKyAgICAgICAgICAgIGltcG9ydE1lbW9yeUluZm8gPSAmaW1w
b3J0TWVtb3J5WmlyY29uSGFuZGxlSW5mbzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CiAKICAgICAvLyBUT0RP
KGptYWRpbGwsIHNwYW5nKTogTWVtb3J5IHN1Yi1hbGxvY2F0aW9uLiBodHRwOi8vYW5nbGVidWcu
Y29tLzIxNjIKICAgICBBU1NFUlQob2Zmc2V0ID09IDApOwpAQCAtMTIwLDcgKzIyMyw3IEBAIGFu
Z2xlOjpSZXN1bHQgTWVtb3J5T2JqZWN0Vms6OmNyZWF0ZUltYWdlKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LAogCiAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIGZsYWdzID0gMDsKICAgICBB
TkdMRV9UUlkoaW1hZ2UtPmluaXRFeHRlcm5hbE1lbW9yeShjb250ZXh0VmssIHJlbmRlcmVyLT5n
ZXRNZW1vcnlQcm9wZXJ0aWVzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0ZXJuYWxNZW1vcnlSZXF1aXJlbWVudHMsICZpbXBvcnRNZW1vcnlGZEluZm8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxNZW1vcnlSZXF1
aXJlbWVudHMsIGltcG9ydE1lbW9yeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfUVVFVUVfRkFNSUxZX0VYVEVSTkFMLCBmbGFncykpOwogCiAgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9NZW1vcnlPYmplY3RWay5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9NZW1v
cnlPYmplY3RWay5oCmluZGV4IDk5NjNmM2Q3ODIwNGVmY2JmOGI4NDM4MmFmZjlhYWZkZjExMjc0
MzQuLmI1NTdmYmYwNTNjZWU2MTk1ODIxNmE3NDYwNTllY2IwZjhiMGJjMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vTWVt
b3J5T2JqZWN0VmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL01lbW9yeU9iamVjdFZrLmgKQEAgLTIzLDEyICsyMywxOSBAQCBjbGFz
cyBNZW1vcnlPYmplY3RWayA6IHB1YmxpYyBNZW1vcnlPYmplY3RJbXBsCiAKICAgICB2b2lkIG9u
RGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKKyAgICBhbmds
ZTo6UmVzdWx0IHNldERlZGljYXRlZE1lbW9yeShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwg
Ym9vbCBkZWRpY2F0ZWRNZW1vcnkpIG92ZXJyaWRlOworCiAgICAgYW5nbGU6OlJlc3VsdCBpbXBv
cnRGZChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludDY0IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBo
YW5kbGVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpIG92ZXJyaWRl
OwogCi0gICAgYW5nbGU6OlJlc3VsdCBjcmVhdGVJbWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCwKKyAgICBhbmdsZTo6UmVzdWx0IGltcG9ydFppcmNvbkhhbmRsZShnbDo6Q29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpIYW5kbGVUeXBl
IGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGhhbmRsZSkgb3ZlcnJpZGU7CisKKyAgICBhbmdsZTo6UmVzdWx0IGNyZWF0ZUltYWdlKENvbnRl
eHRWayAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJl
VHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKQEAg
LTM3LDEwICs0NCwxNSBAQCBjbGFzcyBNZW1vcnlPYmplY3RWayA6IHB1YmxpYyBNZW1vcnlPYmpl
Y3RJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgKmlt
YWdlKTsKIAogICBwcml2YXRlOgotICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0T3BhcXVlRmQoZ2w6
OkNvbnRleHQgKmNvbnRleHQsIEdMdWludDY0IHNpemUsIEdMaW50IGZkKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGludCBrSW52YWxpZEZkID0gLTE7CisgICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRP
cGFxdWVGZChDb250ZXh0VmsgKmNvbnRleHRWaywgR0x1aW50NjQgc2l6ZSwgR0xpbnQgZmQpOwor
ICAgIGFuZ2xlOjpSZXN1bHQgaW1wb3J0WmlyY29uVm1vKENvbnRleHRWayAqY29udGV4dFZrLCBH
THVpbnQ2NCBzaXplLCBHTHVpbnQgaGFuZGxlKTsKKworICAgIEdMdWludDY0IG1TaXplICAgICAg
ICAgICAgID0gMDsKKyAgICBnbDo6SGFuZGxlVHlwZSBtSGFuZGxlVHlwZSA9IGdsOjpIYW5kbGVU
eXBlOjpJbnZhbGlkRW51bTsKKyAgICBpbnQgbUZkICAgICAgICAgICAgICAgICAgICA9IGtJbnZh
bGlkRmQ7CiAKLSAgICBHTHVpbnQ2NCBtU2l6ZTsKLSAgICBpbnQgbUZkOworICAgIHp4X2hhbmRs
ZV90IG1aaXJjb25IYW5kbGUgPSBaWF9IQU5ETEVfSU5WQUxJRDsKIH07CiAKIH0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9PV05FUlMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL09XTkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmJiZWE2ZmFmMWY5YmNj
YzdjMTdhODJiMDg0MWY1NzBjMjM0YTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9PV05FUlMKQEAgLTAsMCAr
MSwyIEBACitqbWFkaWxsQGNocm9taXVtLm9yZworc3lvdXNzZWZpQGNocm9taXVtLm9yZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9PdmVybGF5VmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9PdmVybGF5VmsuY3BwCmluZGV4IDgwNzUzMzE3NWEzMDgzZDhmMDYy
NTY4OGRlOTIwNmYyYzJhZDg2YmEuLjFjODJlNWY2ODgzMzJlZDA1MTE3NWMyZjM0ZGQyNDRlNGJi
ZTM4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vT3ZlcmxheVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL092ZXJsYXlWay5jcHAKQEAgLTEyMSwxMiAr
MTIxLDEwIEBAIGFuZ2xlOjpSZXN1bHQgT3ZlcmxheVZrOjpjcmVhdGVGb250KENvbnRleHRWayAq
Y29udGV4dFZrKQogCiAgICAgLy8gQ29weSBmb250IGRhdGEgZnJvbSBzdGFnaW5nIGJ1ZmZlci4K
ICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqZm9udERhdGFVcGxvYWQ7Ci0gICAgQU5HTEVfVFJZKG1G
b250SW1hZ2UucmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmZm9udERhdGFVcGxvYWQpKTsKLQot
ICAgIGZvbnREYXRhQnVmZmVyLmdldCgpLm9uUmVhZChjb250ZXh0VmssICZtRm9udEltYWdlLCBW
S19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQpOwotCi0gICAgbUZvbnRJbWFnZS5jaGFuZ2VMYXlv
dXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlckRz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGF0YVVwbG9hZCk7CisgICAgQU5H
TEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19UUkFOU0ZFUl9SRUFEX0JJ
VCwgJmZvbnREYXRhQnVmZmVyLmdldCgpKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25J
bWFnZVdyaXRlKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJh
bnNmZXJEc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRm9udElt
YWdlKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1h
bmRCdWZmZXIoJmZvbnREYXRhVXBsb2FkKSk7CiAKICAgICBWa0J1ZmZlckltYWdlQ29weSBjb3B5
ICAgICAgICAgICA9IHt9OwogICAgIGNvcHkuYnVmZmVyUm93TGVuZ3RoICAgICAgICAgICAgID0g
Z2w6Om92ZXJsYXk6OmtGb250SW1hZ2VXaWR0aDsKQEAgLTE0MSw5ICsxMzksNiBAQCBhbmdsZTo6
UmVzdWx0IE92ZXJsYXlWazo6Y3JlYXRlRm9udChDb250ZXh0VmsgKmNvbnRleHRWaykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZvbnRJbWFnZS5nZXRJbWFnZSgpLCBW
S19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEsICZjb3B5KTsKIAotICAgIG1Gb250SW1hZ2UuY2hhbmdlTGF5
b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNo
YWRlclJlYWRPbmx5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREYXRhVXBsb2Fk
KTsKLQogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Q
cm9ncmFtRXhlY3V0YWJsZVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1dGFibGVWay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODUzNmFiMDBmOTc3MDkyNDc4NDU3OGI4Zjk0MDQ5NWM0MWNmMTFmZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
UHJvZ3JhbUV4ZWN1dGFibGVWay5jcHAKQEAgLTAsMCArMSwxMjY3IEBACisvLworLy8gQ29weXJp
Z2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
UHJvZ3JhbUV4ZWN1dGFibGVWay5jcHA6IENvbGxlY3RzIHRoZSBpbmZvcm1hdGlvbiBhbmQgaW50
ZXJmYWNlcyBjb21tb24gdG8gYm90aCBQcm9ncmFtVmtzIGFuZAorLy8gUHJvZ3JhbVBpcGVsaW5l
VmtzIGluIG9yZGVyIHRvIGV4ZWN1dGUvZHJhdyB3aXRoIGVpdGhlci4KKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtRXhlY3V0YWJsZVZrLmgiCisKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi92a19oZWxwZXJzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3ZrX3V0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCitEZWZhdWx0VW5pZm9ybUJsb2NrOjpE
ZWZhdWx0VW5pZm9ybUJsb2NrKCkgPSBkZWZhdWx0OworCitEZWZhdWx0VW5pZm9ybUJsb2NrOjp+
RGVmYXVsdFVuaWZvcm1CbG9jaygpID0gZGVmYXVsdDsKKworLy8gU2hhZGVySW5mbyBpbXBsZW1l
bnRhdGlvbi4KK1NoYWRlckluZm86OlNoYWRlckluZm8oKSB7fQorCitTaGFkZXJJbmZvOjp+U2hh
ZGVySW5mbygpID0gZGVmYXVsdDsKKworYW5nbGU6OlJlc3VsdCBTaGFkZXJJbmZvOjppbml0U2hh
ZGVycyhDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlck1hcElu
dGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFibGVJbmZvTWFwKQoreworICAgIEFTU0VSVCgh
dmFsaWQoKSk7CisKKyAgICBBTkdMRV9UUlkoR2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyQ29k
ZShjb250ZXh0VmssIGNvbnRleHRWay0+Z2V0Q2FwcygpLCBzaGFkZXJTb3VyY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlSW5mb01hcCwg
Jm1TcGlydkJsb2JzKSk7CisKKyAgICBtSXNJbml0aWFsaXplZCA9IHRydWU7CisgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCit2b2lkIFNoYWRlckluZm86OnJlbGVhc2Uo
Q29udGV4dFZrICpjb250ZXh0VmspCit7CisgICAgZm9yIChTcGlydkJsb2IgJnNwaXJ2QmxvYiA6
IG1TcGlydkJsb2JzKQorICAgIHsKKyAgICAgICAgc3BpcnZCbG9iLmNsZWFyKCk7CisgICAgfQor
ICAgIG1Jc0luaXRpYWxpemVkID0gZmFsc2U7Cit9CisKK3ZvaWQgU2hhZGVySW5mbzo6bG9hZChn
bDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKK3sKKyAgICAvLyBSZWFkIGluIHNoYWRlciBj
b2RlcyBmb3IgYWxsIHNoYWRlciB0eXBlcworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUg
c2hhZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQorICAgIHsKKyAgICAgICAgU3BpcnZC
bG9iICpzcGlydkJsb2IgPSAmbVNwaXJ2QmxvYnNbc2hhZGVyVHlwZV07CisKKyAgICAgICAgLy8g
UmVhZCB0aGUgU1BJUi1WCisgICAgICAgIHN0cmVhbS0+cmVhZEludFZlY3Rvcjx1aW50MzJfdD4o
c3BpcnZCbG9iKTsKKyAgICB9CisKKyAgICBtSXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3Zv
aWQgU2hhZGVySW5mbzo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCit7Cisg
ICAgQVNTRVJUKHZhbGlkKCkpOworCisgICAgLy8gV3JpdGUgb3V0IHNoYWRlciBjb2RlcyBmb3Ig
YWxsIHNoYWRlciB0eXBlcworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlw
ZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQorICAgIHsKKyAgICAgICAgY29uc3QgU3BpcnZCbG9i
ICZzcGlydkJsb2IgPSBtU3BpcnZCbG9ic1tzaGFkZXJUeXBlXTsKKworICAgICAgICAvLyBXcml0
ZSB0aGUgU1BJUi1WCisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRWZWN0b3Ioc3BpcnZCbG9iKTsK
KyAgICB9Cit9CisKKy8vIFByb2dyYW1JbmZvIGltcGxlbWVudGF0aW9uLgorUHJvZ3JhbUluZm86
OlByb2dyYW1JbmZvKCkge30KKworUHJvZ3JhbUluZm86On5Qcm9ncmFtSW5mbygpID0gZGVmYXVs
dDsKKworYW5nbGU6OlJlc3VsdCBQcm9ncmFtSW5mbzo6aW5pdFByb2dyYW0oQ29udGV4dFZrICpj
b250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
aGFkZXJJbmZvICZzaGFkZXJJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBlbmFibGVMaW5lUmFzdGVyRW11bGF0aW9uKQoreworICAgIGNvbnN0IGdsOjpT
aGFkZXJNYXA8U3BpcnZCbG9iPiAmc3BpcnZCbG9icyA9IHNoYWRlckluZm8uZ2V0U3BpcnZCbG9i
cygpOworCisgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6OkFs
bFNoYWRlclR5cGVzKCkpCisgICAgeworICAgICAgICBjb25zdCBTcGlydkJsb2IgJnNwaXJ2Qmxv
YiA9IHNwaXJ2QmxvYnNbc2hhZGVyVHlwZV07CisKKyAgICAgICAgaWYgKCFzcGlydkJsb2IuZW1w
dHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgQU5HTEVfVFJZKHZrOjpJbml0U2hhZGVyQW5k
U2VyaWFsKGNvbnRleHRWaywgJm1TaGFkZXJzW3NoYWRlclR5cGVdLmdldCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaXJ2QmxvYi5kYXRhKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BpcnZCbG9iLnNp
emUoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKKworICAgICAgICAgICAgbVByb2dyYW1IZWxwZXIu
c2V0U2hhZGVyKHNoYWRlclR5cGUsICZtU2hhZGVyc1tzaGFkZXJUeXBlXSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoZW5hYmxlTGluZVJhc3RlckVtdWxhdGlvbikKKyAgICB7CisgICAg
ICAgIG1Qcm9ncmFtSGVscGVyLmVuYWJsZVNwZWNpYWxpemF0aW9uQ29uc3RhbnQoCisgICAgICAg
ICAgICBzaDo6dms6OlNwZWNpYWxpemF0aW9uQ29uc3RhbnRJZDo6TGluZVJhc3RlckVtdWxhdGlv
bik7CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCit2
b2lkIFByb2dyYW1JbmZvOjpyZWxlYXNlKENvbnRleHRWayAqY29udGV4dFZrKQoreworICAgIG1Q
cm9ncmFtSGVscGVyLnJlbGVhc2UoY29udGV4dFZrKTsKKworICAgIGZvciAodms6OlJlZkNvdW50
ZWQ8dms6OlNoYWRlckFuZFNlcmlhbD4gJnNoYWRlciA6IG1TaGFkZXJzKQorICAgIHsKKyAgICAg
ICAgc2hhZGVyLmdldCgpLmRlc3Ryb3koY29udGV4dFZrLT5nZXREZXZpY2UoKSk7CisgICAgfQor
fQorCitQcm9ncmFtRXhlY3V0YWJsZVZrOjpQcm9ncmFtRXhlY3V0YWJsZVZrKCkKKyAgICA6IG1F
bXB0eURlc2NyaXB0b3JTZXRze30sIG1OdW1EZWZhdWx0VW5pZm9ybURlc2NyaXB0b3JzKDApLCBt
RHluYW1pY0J1ZmZlck9mZnNldHN7fQore30KKworUHJvZ3JhbUV4ZWN1dGFibGVWazo6flByb2dy
YW1FeGVjdXRhYmxlVmsoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6
cmVzZXQoQ29udGV4dFZrICpjb250ZXh0VmspCit7CisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIg
PSBjb250ZXh0VmstPmdldFJlbmRlcmVyKCk7CisKKyAgICBmb3IgKGF1dG8gJmRlc2NyaXB0b3JT
ZXRMYXlvdXQgOiBtRGVzY3JpcHRvclNldExheW91dHMpCisgICAgeworICAgICAgICBkZXNjcmlw
dG9yU2V0TGF5b3V0LnJlc2V0KCk7CisgICAgfQorICAgIG1QaXBlbGluZUxheW91dC5yZXNldCgp
OworCisgICAgbUVtcHR5QnVmZmVyLnJlbGVhc2UocmVuZGVyZXIpOworCisgICAgbURlc2NyaXB0
b3JTZXRzLmNsZWFyKCk7CisgICAgbUVtcHR5RGVzY3JpcHRvclNldHMuZmlsbChWS19OVUxMX0hB
TkRMRSk7CisgICAgbU51bURlZmF1bHRVbmlmb3JtRGVzY3JpcHRvcnMgPSAwOworCisgICAgZm9y
ICh2azo6UmVmQ291bnRlZERlc2NyaXB0b3JQb29sQmluZGluZyAmYmluZGluZyA6IG1EZXNjcmlw
dG9yUG9vbEJpbmRpbmdzKQorICAgIHsKKyAgICAgICAgYmluZGluZy5yZXNldCgpOworICAgIH0K
KworICAgIGZvciAodms6OkR5bmFtaWNEZXNjcmlwdG9yUG9vbCAmZGVzY3JpcHRvclBvb2wgOiBt
RHluYW1pY0Rlc2NyaXB0b3JQb29scykKKyAgICB7CisgICAgICAgIGRlc2NyaXB0b3JQb29sLnJl
bGVhc2UoY29udGV4dFZrKTsKKyAgICB9CisKKyAgICBtVGV4dHVyZURlc2NyaXB0b3JzQ2FjaGUu
Y2xlYXIoKTsKKyAgICBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNoZS5jbGVhcigpOworCisgICAgbURl
ZmF1bHRQcm9ncmFtSW5mby5yZWxlYXNlKGNvbnRleHRWayk7CisgICAgbUxpbmVSYXN0ZXJQcm9n
cmFtSW5mby5yZWxlYXNlKGNvbnRleHRWayk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxyeDo6TGlu
a0V2ZW50PiBQcm9ncmFtRXhlY3V0YWJsZVZrOjpsb2FkKGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAq
c3RyZWFtKQoreworICAgIGNsZWFyVmFyaWFibGVJbmZvTWFwKCk7CisKKyAgICBmb3IgKGdsOjpT
aGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKKyAgICB7CisgICAg
ICAgIHNpemVfdCB2YXJpYWJsZUluZm9NYXBTaXplID0gc3RyZWFtLT5yZWFkSW50PHNpemVfdD4o
KTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhcmlhYmxlSW5mb01hcFNpemU7
ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmFyaWFibGVO
YW1lICAgID0gc3RyZWFtLT5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBTaGFkZXJJbnRlcmZh
Y2VWYXJpYWJsZUluZm8gKmluZm8gPSAmbVZhcmlhYmxlSW5mb01hcFtzaGFkZXJUeXBlXVt2YXJp
YWJsZU5hbWVdOworCisgICAgICAgICAgICBpbmZvLT5kZXNjcmlwdG9yU2V0ID0gc3RyZWFtLT5y
ZWFkSW50PHVpbnQzMl90PigpOworICAgICAgICAgICAgaW5mby0+YmluZGluZyAgICAgICA9IHN0
cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKKyAgICAgICAgICAgIGluZm8tPmxvY2F0aW9uICAg
ICAgPSBzdHJlYW0tPnJlYWRJbnQ8dWludDMyX3Q+KCk7CisgICAgICAgICAgICBpbmZvLT5jb21w
b25lbnQgICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90PigpOworICAgICAgICAgICAgLy8g
UGFja2VkRW51bUJpdFNldCB1c2VzIHVpbnQ4X3QKKyAgICAgICAgICAgIGluZm8tPmFjdGl2ZVN0
YWdlcyA9IGdsOjpTaGFkZXJCaXRTZXQoc3RyZWFtLT5yZWFkSW50PHVpbnQ4X3Q+KCkpOworICAg
ICAgICAgICAgaW5mby0+eGZiQnVmZmVyICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90Pigp
OworICAgICAgICAgICAgaW5mby0+eGZiT2Zmc2V0ICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQz
Ml90PigpOworICAgICAgICAgICAgaW5mby0+eGZiU3RyaWRlICAgID0gc3RyZWFtLT5yZWFkSW50
PHVpbnQzMl90PigpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TGlua0V2ZW50RG9uZT4oYW5nbGU6OlJlc3VsdDo6Q29udGludWUpOworfQorCit2b2lk
IFByb2dyYW1FeGVjdXRhYmxlVms6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFt
KQoreworICAgIGZvciAoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsOjpBbGxTaGFkZXJU
eXBlcygpKQorICAgIHsKKyAgICAgICAgc3RyZWFtLT53cml0ZUludDxzaXplX3Q+KG1WYXJpYWJs
ZUluZm9NYXBbc2hhZGVyVHlwZV0uc2l6ZSgpKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZp
dCA6IG1WYXJpYWJsZUluZm9NYXBbc2hhZGVyVHlwZV0pCisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0cmVhbS0+d3JpdGVTdHJpbmcoaXQuZmlyc3QpOworICAgICAgICAgICAgc3RyZWFtLT53cml0
ZUludDx1aW50MzJfdD4oaXQuc2Vjb25kLmRlc2NyaXB0b3JTZXQpOworICAgICAgICAgICAgc3Ry
ZWFtLT53cml0ZUludDx1aW50MzJfdD4oaXQuc2Vjb25kLmJpbmRpbmcpOworICAgICAgICAgICAg
c3RyZWFtLT53cml0ZUludDx1aW50MzJfdD4oaXQuc2Vjb25kLmxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIHN0cmVhbS0+d3JpdGVJbnQ8dWludDMyX3Q+KGl0LnNlY29uZC5jb21wb25lbnQpOworICAg
ICAgICAgICAgLy8gUGFja2VkRW51bUJpdFNldCB1c2VzIHVpbnQ4X3QKKyAgICAgICAgICAgIHN0
cmVhbS0+d3JpdGVJbnQ8dWludDhfdD4oaXQuc2Vjb25kLmFjdGl2ZVN0YWdlcy5iaXRzKCkpOwor
ICAgICAgICAgICAgc3RyZWFtLT53cml0ZUludDx1aW50MzJfdD4oaXQuc2Vjb25kLnhmYkJ1ZmZl
cik7CisgICAgICAgICAgICBzdHJlYW0tPndyaXRlSW50PHVpbnQzMl90PihpdC5zZWNvbmQueGZi
T2Zmc2V0KTsKKyAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQ8dWludDMyX3Q+KGl0LnNlY29u
ZC54ZmJTdHJpZGUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlVms6OmNsZWFyVmFyaWFibGVJbmZvTWFwKCkKK3sKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFk
ZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKKyAgICB7CisgICAgICAg
IG1WYXJpYWJsZUluZm9NYXBbc2hhZGVyVHlwZV0uY2xlYXIoKTsKKyAgICB9Cit9CisKK3VpbnQz
Ml90IEdldEludGVyZmFjZUJsb2NrQXJyYXlTaXplKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbnRl
cmZhY2VCbG9jaz4gJmJsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGJ1ZmZlckluZGV4KQoreworICAgIGNvbnN0IGdsOjpJbnRlcmZhY2VCbG9jayAm
YmxvY2sgPSBibG9ja3NbYnVmZmVySW5kZXhdOworCisgICAgaWYgKCFibG9jay5pc0FycmF5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgQVNTRVJUKGJsb2NrLmFycmF5
RWxlbWVudCA9PSAwKTsKKworICAgIC8vIFNlYXJjaCBjb25zZWN1dGl2ZWx5IHVudGlsIGFsbCBh
cnJheSBpbmRpY2VzIG9mIHRoaXMgYmxvY2sgYXJlIHZpc2l0ZWQuCisgICAgdWludDMyX3QgYXJy
YXlTaXplOworICAgIGZvciAoYXJyYXlTaXplID0gMTsgYnVmZmVySW5kZXggKyBhcnJheVNpemUg
PCBibG9ja3Muc2l6ZSgpOyArK2FycmF5U2l6ZSkKKyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpJ
bnRlcmZhY2VCbG9jayAmbmV4dEJsb2NrID0gYmxvY2tzW2J1ZmZlckluZGV4ICsgYXJyYXlTaXpl
XTsKKworICAgICAgICBpZiAobmV4dEJsb2NrLmFycmF5RWxlbWVudCAhPSBhcnJheVNpemUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gSXQn
cyB1bmV4cGVjdGVkIGZvciBhbiBhcnJheSB0byBzdGFydCBhdCBhIG5vbi16ZXJvIGFycmF5IHNp
emUsIHNvIHdlIGNhbiBhbHdheXMgcmVseSBvbgorICAgICAgICAvLyB0aGUgc2VxdWVudGlhbCBg
YXJyYXlFbGVtZW50YHMgdG8gYmVsb25nIHRvIHRoZSBzYW1lIGJsb2NrLgorICAgICAgICBBU1NF
UlQobmV4dEJsb2NrLm5hbWUgPT0gYmxvY2submFtZSk7CisgICAgICAgIEFTU0VSVChuZXh0Qmxv
Y2suaXNBcnJheSk7CisgICAgfQorCisgICAgcmV0dXJuIGFycmF5U2l6ZTsKK30KKworYW5nbGU6
OlJlc3VsdCBQcm9ncmFtRXhlY3V0YWJsZVZrOjphbGxvY2F0ZURlc2NyaXB0b3JTZXQoQ29udGV4
dFZrICpjb250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXNjcmlwdG9yU2V0SW5kZXgpCit7CisgICAgYm9v
bCBpZ25vcmVOZXdQb29sQWxsb2NhdGVkOworICAgIHJldHVybiBhbGxvY2F0ZURlc2NyaXB0b3JT
ZXRBbmRHZXRJbmZvKGNvbnRleHRWaywgZGVzY3JpcHRvclNldEluZGV4LCAmaWdub3JlTmV3UG9v
bEFsbG9jYXRlZCk7Cit9CisKK2FuZ2xlOjpSZXN1bHQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6YWxs
b2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyhDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50MzJfdCBkZXNjcmlwdG9yU2V0SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqbmV3UG9v
bEFsbG9jYXRlZE91dCkKK3sKKyAgICB2azo6RHluYW1pY0Rlc2NyaXB0b3JQb29sICZkeW5hbWlj
RGVzY3JpcHRvclBvb2wgPSBtRHluYW1pY0Rlc2NyaXB0b3JQb29sc1tkZXNjcmlwdG9yU2V0SW5k
ZXhdOworCisgICAgdWludDMyX3QgcG90ZW50aWFsTmV3Q291bnQgPSBkZXNjcmlwdG9yU2V0SW5k
ZXggKyAxOworICAgIGlmIChwb3RlbnRpYWxOZXdDb3VudCA+IG1EZXNjcmlwdG9yU2V0cy5zaXpl
KCkpCisgICAgeworICAgICAgICBtRGVzY3JpcHRvclNldHMucmVzaXplKHBvdGVudGlhbE5ld0Nv
dW50LCBWS19OVUxMX0hBTkRMRSk7CisgICAgfQorCisgICAgY29uc3Qgdms6OkRlc2NyaXB0b3JT
ZXRMYXlvdXQgJmRlc2NyaXB0b3JTZXRMYXlvdXQgPQorICAgICAgICBtRGVzY3JpcHRvclNldExh
eW91dHNbZGVzY3JpcHRvclNldEluZGV4XS5nZXQoKTsKKyAgICBBTkdMRV9UUlkoZHluYW1pY0Rl
c2NyaXB0b3JQb29sLmFsbG9jYXRlU2V0c0FuZEdldEluZm8oCisgICAgICAgIGNvbnRleHRWaywg
ZGVzY3JpcHRvclNldExheW91dC5wdHIoKSwgMSwgJm1EZXNjcmlwdG9yUG9vbEJpbmRpbmdzW2Rl
c2NyaXB0b3JTZXRJbmRleF0sCisgICAgICAgICZtRGVzY3JpcHRvclNldHNbZGVzY3JpcHRvclNl
dEluZGV4XSwgbmV3UG9vbEFsbG9jYXRlZE91dCkpOworICAgIG1FbXB0eURlc2NyaXB0b3JTZXRz
W2Rlc2NyaXB0b3JTZXRJbmRleF0gPSBWS19OVUxMX0hBTkRMRTsKKworICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwordm9pZCBQcm9ncmFtRXhlY3V0YWJsZVZrOjphZGRJ
bnRlcmZhY2VCbG9ja0Rlc2NyaXB0b3JTZXREZXNjKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpJbnRlcmZhY2VCbG9jaz4gJmJsb2NrcywKKyAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFk
ZXJUeXBlLAorICAgIFZrRGVzY3JpcHRvclR5cGUgZGVzY1R5cGUsCisgICAgdms6OkRlc2NyaXB0
b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0KQoreworICAgIGZvciAodWludDMyX3QgYnVmZmVySW5k
ZXggPSAwOyBidWZmZXJJbmRleCA8IGJsb2Nrcy5zaXplKCk7KQorICAgIHsKKyAgICAgICAgZ2w6
OkludGVyZmFjZUJsb2NrIGJsb2NrID0gYmxvY2tzW2J1ZmZlckluZGV4XTsKKyAgICAgICAgY29u
c3QgdWludDMyX3QgYXJyYXlTaXplID0gR2V0SW50ZXJmYWNlQmxvY2tBcnJheVNpemUoYmxvY2tz
LCBidWZmZXJJbmRleCk7CisgICAgICAgIGJ1ZmZlckluZGV4ICs9IGFycmF5U2l6ZTsKKworICAg
ICAgICBpZiAoIWJsb2NrLmlzQWN0aXZlKHNoYWRlclR5cGUpKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGJs
b2NrTmFtZSAgICAgICAgICAgICA9IGJsb2NrLm1hcHBlZE5hbWU7CisgICAgICAgIGNvbnN0IFNo
YWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAmaW5mbyA9IG1WYXJpYWJsZUluZm9NYXBbc2hhZGVy
VHlwZV1bYmxvY2tOYW1lXTsKKworICAgICAgICBkZXNjT3V0LT51cGRhdGUoaW5mby5iaW5kaW5n
LCBkZXNjVHlwZSwgYXJyYXlTaXplLCBnbF92azo6a1NoYWRlclN0YWdlTWFwW3NoYWRlclR5cGVd
KTsKKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6YWRkQXRvbWljQ291bnRl
ckJ1ZmZlckRlc2NyaXB0b3JTZXREZXNjKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpBdG9t
aWNDb3VudGVyQnVmZmVyPiAmYXRvbWljQ291bnRlckJ1ZmZlcnMsCisgICAgY29uc3QgZ2w6OlNo
YWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2MgKmRl
c2NPdXQpCit7CisgICAgaWYgKGF0b21pY0NvdW50ZXJCdWZmZXJzLmVtcHR5KCkpCisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgYmxvY2tOYW1lKHNoOjp2
azo6a0F0b21pY0NvdW50ZXJzQmxvY2tOYW1lKTsKKyAgICBjb25zdCBTaGFkZXJJbnRlcmZhY2VW
YXJpYWJsZUluZm8gJmluZm8gPSBtVmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdW2Jsb2NrTmFt
ZV07CisKKyAgICBpZiAoIWluZm8uYWN0aXZlU3RhZ2VzW3NoYWRlclR5cGVdKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEEgc2luZ2xlIHN0b3JhZ2UgYnVmZmVyIGFy
cmF5IGlzIHVzZWQgZm9yIGFsbCBzdGFnZXMgZm9yIHNpbXBsaWNpdHkuCisgICAgZGVzY091dC0+
dXBkYXRlKGluZm8uYmluZGluZywgVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSLAor
ICAgICAgICAgICAgICAgICAgICBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVS
X0JVRkZFUlMsCisgICAgICAgICAgICAgICAgICAgIGdsX3ZrOjprU2hhZGVyU3RhZ2VNYXBbc2hh
ZGVyVHlwZV0pOworfQorCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlVms6OmFkZEltYWdlRGVzY3Jp
cHRvclNldERlc2MoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpEZXNjcmlw
dG9yU2V0TGF5b3V0RGVzYyAqZGVzY091dCkKK3sKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6
SW1hZ2VCaW5kaW5nPiAmaW1hZ2VCaW5kaW5ncyA9IHByb2dyYW1TdGF0ZS5nZXRJbWFnZUJpbmRp
bmdzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlmb3Jt
cyAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKKworICAgIGZvciAodWludDMyX3Qg
aW1hZ2VJbmRleCA9IDA7IGltYWdlSW5kZXggPCBpbWFnZUJpbmRpbmdzLnNpemUoKTsgKytpbWFn
ZUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OkltYWdlQmluZGluZyAmaW1hZ2VCaW5k
aW5nID0gaW1hZ2VCaW5kaW5nc1tpbWFnZUluZGV4XTsKKworICAgICAgICB1aW50MzJfdCB1bmlm
b3JtSW5kZXggPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybUluZGV4RnJvbUltYWdlSW5kZXgoaW1h
Z2VJbmRleCk7CisgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZpbWFnZVVuaWZvcm0g
PSB1bmlmb3Jtc1t1bmlmb3JtSW5kZXhdOworCisgICAgICAgIC8vIFRoZSBmcm9udC1lbmQgYWx3
YXlzIGJpbmRzIGFycmF5IGltYWdlIHVuaXRzIHNlcXVlbnRpYWxseS4KKyAgICAgICAgdWludDMy
X3QgYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGltYWdlQmluZGluZy5ib3VuZElt
YWdlVW5pdHMuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNo
YWRlclR5cGUgOgorICAgICAgICAgICAgIHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJs
ZSgpLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IWltYWdlVW5pZm9ybS5pc0FjdGl2ZShzaGFkZXJUeXBlKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RkOjpz
dHJpbmcgbmFtZSA9IGltYWdlVW5pZm9ybS5tYXBwZWROYW1lOworICAgICAgICAgICAgR2V0SW1h
Z2VOYW1lV2l0aG91dEluZGljZXMoJm5hbWUpOworICAgICAgICAgICAgU2hhZGVySW50ZXJmYWNl
VmFyaWFibGVJbmZvICZpbmZvID0gbVZhcmlhYmxlSW5mb01hcFtzaGFkZXJUeXBlXVtuYW1lXTsK
KyAgICAgICAgICAgIFZrU2hhZGVyU3RhZ2VGbGFncyBhY3RpdmVTdGFnZXMgICA9IGdsX3ZrOjpr
U2hhZGVyU3RhZ2VNYXBbc2hhZGVyVHlwZV07CisgICAgICAgICAgICBkZXNjT3V0LT51cGRhdGUo
aW5mby5iaW5kaW5nLCBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRSwgYXJyYXlTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVN0YWdlcyk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6YWRkVGV4dHVyZURlc2NyaXB0
b3JTZXREZXNjKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlT2xk
UmV3cml0ZVN0cnVjdFNhbXBsZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0
KQoreworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpTYW1wbGVyQmluZGluZz4gJnNhbXBsZXJC
aW5kaW5ncyA9IHByb2dyYW1TdGF0ZS5nZXRTYW1wbGVyQmluZGluZ3MoKTsKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybT4gJnVuaWZvcm1zICAgICAgICAgPSBwcm9ncmFt
U3RhdGUuZ2V0VW5pZm9ybXMoKTsKKworICAgIGZvciAodWludDMyX3QgdGV4dHVyZUluZGV4ID0g
MDsgdGV4dHVyZUluZGV4IDwgc2FtcGxlckJpbmRpbmdzLnNpemUoKTsgKyt0ZXh0dXJlSW5kZXgp
CisgICAgeworICAgICAgICBjb25zdCBnbDo6U2FtcGxlckJpbmRpbmcgJnNhbXBsZXJCaW5kaW5n
ID0gc2FtcGxlckJpbmRpbmdzW3RleHR1cmVJbmRleF07CisKKyAgICAgICAgdWludDMyX3QgdW5p
Zm9ybUluZGV4ID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21TYW1wbGVySW5kZXgo
dGV4dHVyZUluZGV4KTsKKyAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJnNhbXBsZXJV
bmlmb3JtID0gdW5pZm9ybXNbdW5pZm9ybUluZGV4XTsKKworICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyBzYW1wbGVyTmFtZSA9IHVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEdldE1hcHBlZFNhbXBsZXJOYW1l
T2xkKHNhbXBsZXJVbmlmb3JtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogR2xzbGFuZ0dldE1hcHBlZFNhbXBsZXJOYW1lKHNhbXBsZXJVbmlmb3Jt
Lm5hbWUpOworCisgICAgICAgIC8vIFRoZSBmcm9udC1lbmQgYWx3YXlzIGJpbmRzIGFycmF5IHNh
bXBsZXIgdW5pdHMgc2VxdWVudGlhbGx5LgorICAgICAgICB1aW50MzJfdCBhcnJheVNpemUgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oc2FtcGxlckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHMuc2l6
ZSgpKTsKKworICAgICAgICBpZiAoIXVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycykKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gMkQgYXJyYXlzIGFyZSBzcGxpdCBpbnRvIG11bHRpcGxlIDFE
IGFycmF5cyB3aGVuIGdlbmVyYXRpbmcKKyAgICAgICAgICAgIC8vIExpbmtlZFVuaWZvcm1zLiBT
aW5jZSB0aGV5IGFyZSBmbGF0dGVuZWQgaW50byBvbmUgYXJyYXksIGlnbm9yZSB0aGUKKyAgICAg
ICAgICAgIC8vIG5vbnplcm8gZWxlbWVudHMgYW5kIGV4cGFuZCB0aGUgYXJyYXkgdG8gdGhlIHRv
dGFsIGFycmF5IHNpemUuCisgICAgICAgICAgICBpZiAoZ2w6OlNhbXBsZXJOYW1lQ29udGFpbnNO
b25aZXJvQXJyYXlFbGVtZW50KHNhbXBsZXJVbmlmb3JtLm5hbWUpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBvdXRlckFycmF5U2l6ZSA6IHNhbXBsZXJVbmlmb3JtLm91dGVyQXJy
YXlTaXplcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhcnJheVNpemUgKj0gb3V0
ZXJBcnJheVNpemU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNv
bnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOgorICAgICAgICAgICAgIHByb2dyYW1TdGF0
ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIXNhbXBsZXJVbmlmb3JtLmlzQWN0aXZlKHNoYWRlclR5cGUp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmluZm8gPSBtVmFy
aWFibGVJbmZvTWFwW3NoYWRlclR5cGVdW3NhbXBsZXJOYW1lXTsKKyAgICAgICAgICAgIFZrU2hh
ZGVyU3RhZ2VGbGFncyBhY3RpdmVTdGFnZXMgICA9IGdsX3ZrOjprU2hhZGVyU3RhZ2VNYXBbc2hh
ZGVyVHlwZV07CisKKyAgICAgICAgICAgIGRlc2NPdXQtPnVwZGF0ZShpbmZvLmJpbmRpbmcsIFZL
X0RFU0NSSVBUT1JfVFlQRV9DT01CSU5FRF9JTUFHRV9TQU1QTEVSLCBhcnJheVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlU3RhZ2VzKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBXcml0ZUJ1ZmZlckRlc2NyaXB0b3JTZXRCaW5kaW5nKGNvbnN0IGdsOjpPZmZz
ZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYnVmZmVyQmluZGluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNpemUgbWF4U2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY1NldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJpbmRp
bmdJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBh
cnJheUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZp
Y2VTaXplIHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZrRGVzY3JpcHRvckJ1ZmZlckluZm8gKmJ1ZmZlckluZm9PdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtXcml0ZURlc2NyaXB0b3JTZXQgKndy
aXRlSW5mb091dCkKK3sKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBidWZmZXJCaW5kaW5nLmdl
dCgpOworICAgIEFTU0VSVChidWZmZXIgIT0gbnVsbHB0cik7CisKKyAgICAvLyBNYWtlIHN1cmUg
dGhlcmUncyBubyBwb3NzaWJsZSB1bmRlci9vdmVyZmxvdyB3aXRoIGJpbmRpbmcgc2l6ZS4KKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihWa0RldmljZVNpemUpID49IHNpemVvZihidWZmZXJCaW5k
aW5nLmdldFNpemUoKSksCisgICAgICAgICAgICAgICAgICAiVmtEZXZpY2VTaXplIHRvbyBzbWFs
bCIpOworICAgIEFTU0VSVChidWZmZXJCaW5kaW5nLmdldFNpemUoKSA+PSAwKTsKKworICAgIEJ1
ZmZlclZrICpidWZmZXJWayAgICAgICAgICAgICA9IHZrOjpHZXRJbXBsKGJ1ZmZlcik7CisgICAg
VmtEZXZpY2VTaXplIG9mZnNldCAgICAgICAgICAgID0gYnVmZmVyQmluZGluZy5nZXRPZmZzZXQo
KTsKKyAgICBWa0RldmljZVNpemUgc2l6ZSAgICAgICAgICAgICAgPSBidWZmZXJCaW5kaW5nLmdl
dFNpemUoKTsKKyAgICB2azo6QnVmZmVySGVscGVyICZidWZmZXJIZWxwZXIgPSBidWZmZXJWay0+
Z2V0QnVmZmVyKCk7CisKKyAgICAvLyBJZiBzaXplIGlzIDAsIHdlIGNhbid0IGFsd2F5cyB1c2Ug
VktfV0hPTEVfU0laRSAob3IgYnVmZmVySGVscGVyLmdldFNpemUoKSksIGFzIHRoZQorICAgIC8v
IGJhY2tpbmcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBtYXgqQnVmZmVyUmFuZ2UuICBJbiB0
aGF0IGNhc2UsIHdlIHVzZSB0aGUgbWluaW11bSBvZgorICAgIC8vIHRoZSBiYWNraW5nIGJ1ZmZl
ciBzaXplICh3aGF0J3MgbGVmdCBhZnRlciBvZmZzZXQpIGFuZCB0aGUgYnVmZmVyIHNpemUgYXMg
ZGVmaW5lZCBieSB0aGUKKyAgICAvLyBzaGFkZXIuICBUaGF0IGxhdHRlciBpcyBvbmx5IHZhbGlk
IGZvciBVQk9zLCBhcyBTU0JPcyBtYXkgaGF2ZSB2YXJpYWJsZSBsZW5ndGggYXJyYXlzLgorICAg
IHNpemUgPSBzaXplID4gMCA/IHNpemUgOiAoYnVmZmVySGVscGVyLmdldFNpemUoKSAtIG9mZnNl
dCk7CisgICAgaWYgKG1heFNpemUgPiAwKQorICAgIHsKKyAgICAgICAgc2l6ZSA9IHN0ZDo6bWlu
KHNpemUsIG1heFNpemUpOworICAgIH0KKworICAgIC8vIElmIHJlcXVpcmVkT2Zmc2V0QWxpZ25t
ZW50IGlzIDAsIHRoZSBidWZmZXIgb2Zmc2V0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSB0aGUgbmVj
ZXNzYXJ5CisgICAgLy8gYWxpZ25tZW50IHRocm91Z2ggb3RoZXIgbWVhbnMgKHRoZSBiYWNrZW5k
IHNwZWNpZnlpbmcgdGhlIGFsaWdubWVudCB0aHJvdWdoIGEgR0xFUyBsaW1pdCB0aGF0CisgICAg
Ly8gdGhlIGZyb250ZW5kIHRoZW4gZW5mb3JjZXMpLiAgSWYgaXQncyBub3QgMCwgd2UgbmVlZCB0
byBiaW5kIHRoZSBidWZmZXIgYXQgYW4gb2Zmc2V0IHRoYXQncworICAgIC8vIGFsaWduZWQuICBU
aGUgZGlmZmVyZW5jZSBpbiBvZmZzZXRzIGlzIGNvbW11bmljYXRlZCB0byB0aGUgc2hhZGVyIHZp
YSBkcml2ZXIgdW5pZm9ybXMuCisgICAgaWYgKHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50KQorICAg
IHsKKyAgICAgICAgVmtEZXZpY2VTaXplIGFsaWduZWRPZmZzZXQgPSAob2Zmc2V0IC8gcmVxdWly
ZWRPZmZzZXRBbGlnbm1lbnQpICogcmVxdWlyZWRPZmZzZXRBbGlnbm1lbnQ7CisgICAgICAgIFZr
RGV2aWNlU2l6ZSBvZmZzZXREaWZmICAgID0gb2Zmc2V0IC0gYWxpZ25lZE9mZnNldDsKKworICAg
ICAgICBvZmZzZXQgPSBhbGlnbmVkT2Zmc2V0OworICAgICAgICBzaXplICs9IG9mZnNldERpZmY7
CisgICAgfQorCisgICAgYnVmZmVySW5mb091dC0+YnVmZmVyID0gYnVmZmVySGVscGVyLmdldEJ1
ZmZlcigpLmdldEhhbmRsZSgpOworICAgIGJ1ZmZlckluZm9PdXQtPm9mZnNldCA9IG9mZnNldDsK
KyAgICBidWZmZXJJbmZvT3V0LT5yYW5nZSAgPSBzaXplOworCisgICAgd3JpdGVJbmZvT3V0LT5z
VHlwZSAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfV1JJVEVfREVTQ1JJUFRPUl9TRVQ7
CisgICAgd3JpdGVJbmZvT3V0LT5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICB3cml0
ZUluZm9PdXQtPmRzdFNldCAgICAgICAgICAgPSBkZXNjU2V0OworICAgIHdyaXRlSW5mb091dC0+
ZHN0QmluZGluZyAgICAgICA9IGJpbmRpbmdJbmRleDsKKyAgICB3cml0ZUluZm9PdXQtPmRzdEFy
cmF5RWxlbWVudCAgPSBhcnJheUVsZW1lbnQ7CisgICAgd3JpdGVJbmZvT3V0LT5kZXNjcmlwdG9y
Q291bnQgID0gMTsKKyAgICB3cml0ZUluZm9PdXQtPmRlc2NyaXB0b3JUeXBlICAgPSBkZXNjVHlw
ZTsKKyAgICB3cml0ZUluZm9PdXQtPnBJbWFnZUluZm8gICAgICAgPSBudWxscHRyOworICAgIHdy
aXRlSW5mb091dC0+cEJ1ZmZlckluZm8gICAgICA9IGJ1ZmZlckluZm9PdXQ7CisgICAgd3JpdGVJ
bmZvT3V0LT5wVGV4ZWxCdWZmZXJWaWV3ID0gbnVsbHB0cjsKKyAgICBBU1NFUlQod3JpdGVJbmZv
T3V0LT5wQnVmZmVySW5mb1swXS5idWZmZXIgIT0gVktfTlVMTF9IQU5ETEUpOworfQorCithbmds
ZTo6UmVzdWx0IFByb2dyYW1FeGVjdXRhYmxlVms6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0
IGdsOjpDb250ZXh0ICpnbENvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZ2xF
eGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUpCit7CisgICAg
Y29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlICAgICAgICAgICAgICAgICAgID0gZ2xDb250ZXh0LT5n
ZXRTdGF0ZSgpOworICAgIENvbnRleHRWayAqY29udGV4dFZrICAgICAgICAgICAgICAgICAgICAg
ICA9IHZrOjpHZXRJbXBsKGdsQ29udGV4dCk7CisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgICAg
ICAgICAgICAgICAgICAgICAgID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpOworICAgIGdsOjpU
cmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgICA9IGdsU3RhdGUuZ2V0Q3VycmVu
dFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgY29uc3QgZ2w6OlNoYWRlckJpdFNldCAmbGlua2Vk
U2hhZGVyU3RhZ2VzID0gZ2xFeGVjdXRhYmxlLmdldExpbmtlZFNoYWRlclN0YWdlcygpOworCisg
ICAgcmVzZXQoY29udGV4dFZrKTsKKworICAgIC8vIFN0b3JlIGEgcmVmZXJlbmNlIHRvIHRoZSBw
aXBlbGluZSBhbmQgZGVzY3JpcHRvciBzZXQgbGF5b3V0cy4gVGhpcyB3aWxsIGNyZWF0ZSB0aGVt
IGlmIHRoZXkKKyAgICAvLyBkb24ndCBhbHJlYWR5IGV4aXN0IGluIHRoZSBjYWNoZS4KKworICAg
IC8vIERlZmF1bHQgdW5pZm9ybXMgYW5kIHRyYW5zZm9ybSBmZWVkYmFjazoKKyAgICB2azo6RGVz
Y3JpcHRvclNldExheW91dERlc2MgdW5pZm9ybXNBbmRYZmJTZXREZXNjOworICAgIGZvciAoY29u
c3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGxpbmtlZFNoYWRlclN0YWdlcykKKyAgICB7
CisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHVuaWZvcm1CbG9ja05hbWUgPSBrRGVmYXVsdFVu
aWZvcm1OYW1lc1tzaGFkZXJUeXBlXTsKKyAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJ
bmZvICZpbmZvICA9IG1WYXJpYWJsZUluZm9NYXBbc2hhZGVyVHlwZV1bdW5pZm9ybUJsb2NrTmFt
ZV07CisgICAgICAgIGlmICghaW5mby5hY3RpdmVTdGFnZXNbc2hhZGVyVHlwZV0pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgdW5pZm9ybXNB
bmRYZmJTZXREZXNjLnVwZGF0ZShpbmZvLmJpbmRpbmcsIFZLX0RFU0NSSVBUT1JfVFlQRV9VTklG
T1JNX0JVRkZFUl9EWU5BTUlDLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsX3ZrOjprU2hhZGVyU3RhZ2VNYXBbc2hhZGVyVHlwZV0pOworICAgICAgICBtTnVtRGVm
YXVsdFVuaWZvcm1EZXNjcmlwdG9ycysrOworICAgIH0KKyAgICBib29sIGhhc1ZlcnRleFNoYWRl
ciA9IGdsRXhlY3V0YWJsZS5oYXNMaW5rZWRTaGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6VmVy
dGV4KTsKKyAgICBib29sIGhhc1hmYlZhcnlpbmdzICA9ICFwcm9ncmFtU3RhdGUuZ2V0TGlua2Vk
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncygpLmVtcHR5KCk7CisgICAgaWYgKGhhc1ZlcnRleFNo
YWRlciAmJiB0cmFuc2Zvcm1GZWVkYmFjayAmJiBoYXNYZmJWYXJ5aW5ncykKKyAgICB7CisgICAg
ICAgIHNpemVfdCB4ZmJCdWZmZXJDb3VudCAgICAgICAgICAgICAgICAgICAgPSBwcm9ncmFtU3Rh
dGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgpOworICAgICAgICBUcmFuc2Zvcm1G
ZWVkYmFja1ZrICp0cmFuc2Zvcm1GZWVkYmFja1ZrID0gdms6OkdldEltcGwodHJhbnNmb3JtRmVl
ZGJhY2spOworICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja1ZrLT51cGRhdGVEZXNjcmlwdG9yU2V0
TGF5b3V0KGNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtVmFyaWFibGVJbmZvTWFwW2dsOjpTaGFkZXJUeXBlOjpWZXJ0ZXhd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhmYkJ1ZmZlckNvdW50LCAmdW5pZm9ybXNBbmRYZmJTZXREZXNjKTsKKyAgICB9CisKKyAgICBB
TkdMRV9UUlkocmVuZGVyZXItPmdldERlc2NyaXB0b3JTZXRMYXlvdXQoCisgICAgICAgIGNvbnRl
eHRWaywgdW5pZm9ybXNBbmRYZmJTZXREZXNjLAorICAgICAgICAmbURlc2NyaXB0b3JTZXRMYXlv
dXRzW2tVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleF0pKTsKKworICAgIC8vIFVuaWZv
cm0gYW5kIHN0b3JhZ2UgYnVmZmVycywgYXRvbWljIGNvdW50ZXIgYnVmZmVycyBhbmQgaW1hZ2Vz
OgorICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyByZXNvdXJjZXNTZXREZXNjOworCisg
ICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogbGlua2VkU2hhZGVyU3Rh
Z2VzKQorICAgIHsKKyAgICAgICAgYWRkSW50ZXJmYWNlQmxvY2tEZXNjcmlwdG9yU2V0RGVzYyhw
cm9ncmFtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrcygpLCBzaGFkZXJUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JN
X0JVRkZFUiwgJnJlc291cmNlc1NldERlc2MpOworICAgICAgICBhZGRJbnRlcmZhY2VCbG9ja0Rl
c2NyaXB0b3JTZXREZXNjKHByb2dyYW1TdGF0ZS5nZXRTaGFkZXJTdG9yYWdlQmxvY2tzKCksIHNo
YWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktf
REVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSLCAmcmVzb3VyY2VzU2V0RGVzYyk7CisgICAg
ICAgIGFkZEF0b21pY0NvdW50ZXJCdWZmZXJEZXNjcmlwdG9yU2V0RGVzYyhwcm9ncmFtU3RhdGUu
Z2V0QXRvbWljQ291bnRlckJ1ZmZlcnMoKSwgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXNvdXJjZXNTZXREZXNjKTsKKyAgICB9
CisKKyAgICBhZGRJbWFnZURlc2NyaXB0b3JTZXREZXNjKHByb2dyYW1TdGF0ZSwgJnJlc291cmNl
c1NldERlc2MpOworCisgICAgQU5HTEVfVFJZKHJlbmRlcmVyLT5nZXREZXNjcmlwdG9yU2V0TGF5
b3V0KAorICAgICAgICBjb250ZXh0VmssIHJlc291cmNlc1NldERlc2MsICZtRGVzY3JpcHRvclNl
dExheW91dHNba1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4XSkpOworCisgICAgLy8g
VGV4dHVyZXM6CisgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjIHRleHR1cmVzU2V0RGVz
YzsKKworICAgIGFkZFRleHR1cmVEZXNjcmlwdG9yU2V0RGVzYyhwcm9ncmFtU3RhdGUsIGNvbnRl
eHRWay0+dXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ0ZXh0dXJlc1NldERlc2MpOworCisgICAgQU5HTEVfVFJZKHJlbmRlcmVy
LT5nZXREZXNjcmlwdG9yU2V0TGF5b3V0KGNvbnRleHRWaywgdGV4dHVyZXNTZXREZXNjLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURlc2NyaXB0b3JT
ZXRMYXlvdXRzW2tUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4XSkpOworCisgICAgLy8gRHJpdmVy
IHVuaWZvcm1zOgorICAgIFZrU2hhZGVyU3RhZ2VGbGFncyBkcml2ZXJVbmlmb3Jtc1N0YWdlcyA9
CisgICAgICAgIGdsRXhlY3V0YWJsZS5pc0NvbXB1dGUoKSA/IFZLX1NIQURFUl9TVEFHRV9DT01Q
VVRFX0JJVCA6IFZLX1NIQURFUl9TVEFHRV9BTExfR1JBUEhJQ1M7CisgICAgdms6OkRlc2NyaXB0
b3JTZXRMYXlvdXREZXNjIGRyaXZlclVuaWZvcm1zU2V0RGVzYyA9CisgICAgICAgIGNvbnRleHRW
ay0+Z2V0RHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0RGVzYyhkcml2ZXJVbmlmb3Jtc1N0YWdl
cyk7CisgICAgQU5HTEVfVFJZKHJlbmRlcmVyLT5nZXREZXNjcmlwdG9yU2V0TGF5b3V0KAorICAg
ICAgICBjb250ZXh0VmssIGRyaXZlclVuaWZvcm1zU2V0RGVzYywKKyAgICAgICAgJm1EZXNjcmlw
dG9yU2V0TGF5b3V0c1trRHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXhdKSk7CisKKyAg
ICAvLyBDcmVhdGUgcGlwZWxpbmUgbGF5b3V0IHdpdGggdGhlc2UgNCBkZXNjcmlwdG9yIHNldHMu
CisgICAgdms6OlBpcGVsaW5lTGF5b3V0RGVzYyBwaXBlbGluZUxheW91dERlc2M7CisgICAgcGlw
ZWxpbmVMYXlvdXREZXNjLnVwZGF0ZURlc2NyaXB0b3JTZXRMYXlvdXQoa1VuaWZvcm1zQW5kWGZi
RGVzY3JpcHRvclNldEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaWZvcm1zQW5kWGZiU2V0RGVzYyk7CisgICAgcGlwZWxpbmVMYXlvdXRE
ZXNjLnVwZGF0ZURlc2NyaXB0b3JTZXRMYXlvdXQoa1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNl
dEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc291cmNlc1NldERlc2MpOworICAgIHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlw
dG9yU2V0TGF5b3V0KGtUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4LCB0ZXh0dXJlc1NldERlc2Mp
OworICAgIHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KGtEcml2
ZXJVbmlmb3Jtc0Rlc2NyaXB0b3JTZXRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJVbmlmb3Jtc1NldERlc2MpOworCisgICAgQU5H
TEVfVFJZKHJlbmRlcmVyLT5nZXRQaXBlbGluZUxheW91dChjb250ZXh0VmssIHBpcGVsaW5lTGF5
b3V0RGVzYywgbURlc2NyaXB0b3JTZXRMYXlvdXRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJm1QaXBlbGluZUxheW91dCkpOworCisgICAgLy8gSW5pdGlhbGl6
ZSBkZXNjcmlwdG9yIHBvb2xzLgorICAgIHN0ZDo6YXJyYXk8VmtEZXNjcmlwdG9yUG9vbFNpemUs
IDI+IHVuaWZvcm1BbmRYZmJTZXRTaXplID0geworICAgICAgICB7e1ZLX0RFU0NSSVBUT1JfVFlQ
RV9VTklGT1JNX0JVRkZFUl9EWU5BTUlDLAorICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90
PihtTnVtRGVmYXVsdFVuaWZvcm1EZXNjcmlwdG9ycyl9LAorICAgICAgICAge1ZLX0RFU0NSSVBU
T1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSU319fTsKKworICAgIHVpbnQzMl90IHVuaWZvcm1CbG9ja0NvdW50ID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb2dyYW1TdGF0ZS5nZXRVbmlmb3JtQmxvY2tzKCkuc2l6
ZSgpKTsKKyAgICB1aW50MzJfdCBzdG9yYWdlQmxvY2tDb3VudCA9CisgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQzMl90Pihwcm9ncmFtU3RhdGUuZ2V0U2hhZGVyU3RvcmFnZUJsb2NrcygpLnNpemUo
KSk7CisgICAgdWludDMyX3QgYXRvbWljQ291bnRlckJ1ZmZlckNvdW50ID0KKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHByb2dyYW1TdGF0ZS5nZXRBdG9taWNDb3VudGVyQnVmZmVycygp
LnNpemUoKSk7CisgICAgdWludDMyX3QgaW1hZ2VDb3VudCAgID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHByb2dyYW1TdGF0ZS5nZXRJbWFnZUJpbmRpbmdzKCkuc2l6ZSgpKTsKKyAgICB1aW50MzJf
dCB0ZXh0dXJlQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvZ3JhbVN0YXRlLmdldFNh
bXBsZXJCaW5kaW5ncygpLnNpemUoKSk7CisKKyAgICBpZiAocmVuZGVyZXItPmdldEZlYXR1cmVz
KCkuYmluZEVtcHR5Rm9yVW51c2VkRGVzY3JpcHRvclNldHMuZW5hYmxlZCkKKyAgICB7CisgICAg
ICAgIC8vIEZvciB0aGlzIHdvcmthcm91bmQsIHdlIGhhdmUgdG8gY3JlYXRlIGFuIGVtcHR5IGRl
c2NyaXB0b3Igc2V0IGZvciBlYWNoIGRlc2NyaXB0b3Igc2V0CisgICAgICAgIC8vIGluZGV4LCBz
byBtYWtlIHN1cmUgdGhlaXIgcG9vbHMgYXJlIGluaXRpYWxpemVkLgorICAgICAgICB1bmlmb3Jt
QmxvY2tDb3VudCA9IHN0ZDo6bWF4KHVuaWZvcm1CbG9ja0NvdW50LCAxdSk7CisgICAgICAgIHRl
eHR1cmVDb3VudCAgICAgID0gc3RkOjptYXgodGV4dHVyZUNvdW50LCAxdSk7CisgICAgfQorCisg
ICAgY29uc3RleHByIHNpemVfdCBrUmVzb3VyY2VUeXBlc0luUmVzb3VyY2VzU2V0ID0gMzsKKyAg
ICBhbmdsZTo6Rml4ZWRWZWN0b3I8VmtEZXNjcmlwdG9yUG9vbFNpemUsIGtSZXNvdXJjZVR5cGVz
SW5SZXNvdXJjZXNTZXQ+IHJlc291cmNlU2V0U2l6ZTsKKyAgICBpZiAodW5pZm9ybUJsb2NrQ291
bnQgPiAwKQorICAgIHsKKyAgICAgICAgcmVzb3VyY2VTZXRTaXplLmVtcGxhY2VfYmFjayhWS19E
RVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVIsIHVuaWZvcm1CbG9ja0NvdW50KTsKKyAgICB9
CisgICAgaWYgKHN0b3JhZ2VCbG9ja0NvdW50ID4gMCB8fCBhdG9taWNDb3VudGVyQnVmZmVyQ291
bnQgPiAwKQorICAgIHsKKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYW4gYXJy
YXkgb2YgSU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgc3RvcmFnZQor
ICAgICAgICAvLyBidWZmZXJzIGZvciBlbXVsYXRpbmcgYXRvbWljIGNvdW50ZXJzLCBzbyBpZiB0
aGVyZSBhcmUgYW55IGF0b21pYyBjb3VudGVyIGJ1ZmZlcnMsIHdlCisgICAgICAgIC8vIG5lZWQg
dG8gYWxsb2NhdGUgSU1QTEVNRU5UQVRJT05fTUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgZGVz
Y3JpcHRvcnMuCisgICAgICAgIGNvbnN0IHVpbnQzMl90IGF0b21pY0NvdW50ZXJTdG9yYWdlQnVm
ZmVyQ291bnQgPQorICAgICAgICAgICAgYXRvbWljQ291bnRlckJ1ZmZlckNvdW50ID4gMCA/IGds
OjpJTVBMRU1FTlRBVElPTl9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyA6IDA7CisgICAgICAg
IGNvbnN0IHVpbnQzMl90IHN0b3JhZ2VCdWZmZXJEZXNjQ291bnQgPSBzdG9yYWdlQmxvY2tDb3Vu
dCArIGF0b21pY0NvdW50ZXJTdG9yYWdlQnVmZmVyQ291bnQ7CisgICAgICAgIHJlc291cmNlU2V0
U2l6ZS5lbXBsYWNlX2JhY2soVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSLCBzdG9y
YWdlQnVmZmVyRGVzY0NvdW50KTsKKyAgICB9CisgICAgaWYgKGltYWdlQ291bnQgPiAwKQorICAg
IHsKKyAgICAgICAgcmVzb3VyY2VTZXRTaXplLmVtcGxhY2VfYmFjayhWS19ERVNDUklQVE9SX1RZ
UEVfU1RPUkFHRV9JTUFHRSwgaW1hZ2VDb3VudCk7CisgICAgfQorCisgICAgVmtEZXNjcmlwdG9y
UG9vbFNpemUgdGV4dHVyZVNldFNpemUgPSB7VktfREVTQ1JJUFRPUl9UWVBFX0NPTUJJTkVEX0lN
QUdFX1NBTVBMRVIsIHRleHR1cmVDb3VudH07CisKKyAgICBBTkdMRV9UUlkobUR5bmFtaWNEZXNj
cmlwdG9yUG9vbHNba1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XS5pbml0KAorICAg
ICAgICBjb250ZXh0VmssIHVuaWZvcm1BbmRYZmJTZXRTaXplLmRhdGEoKSwgdW5pZm9ybUFuZFhm
YlNldFNpemUuc2l6ZSgpKSk7CisgICAgaWYgKHJlc291cmNlU2V0U2l6ZS5zaXplKCkgPiAwKQor
ICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKG1EeW5hbWljRGVzY3JpcHRvclBvb2xzW2tTaGFkZXJS
ZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleF0uaW5pdCgKKyAgICAgICAgICAgIGNvbnRleHRWaywg
cmVzb3VyY2VTZXRTaXplLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc291cmNlU2V0
U2l6ZS5zaXplKCkpKSk7CisgICAgfQorICAgIGlmICh0ZXh0dXJlQ291bnQgPiAwKQorICAgIHsK
KyAgICAgICAgQU5HTEVfVFJZKG1EeW5hbWljRGVzY3JpcHRvclBvb2xzW2tUZXh0dXJlRGVzY3Jp
cHRvclNldEluZGV4XS5pbml0KGNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJl
U2V0U2l6ZSwgMSkpOworICAgIH0KKworICAgIG1EeW5hbWljQnVmZmVyT2Zmc2V0cy5yZXNpemUo
Z2xFeGVjdXRhYmxlLmdldExpbmtlZFNoYWRlclN0YWdlQ291bnQoKSk7CisKKyAgICAvLyBJbml0
aWFsaXplIGFuICJlbXB0eSIgYnVmZmVyIGZvciB1c2Ugd2l0aCBkZWZhdWx0IHVuaWZvcm0gYmxv
Y2tzIHdoZXJlIHRoZXJlIGFyZSBubyB1bmlmb3JtcywKKyAgICAvLyBvciBhdG9taWMgY291bnRl
ciBidWZmZXIgYXJyYXkgaW5kaWNlcyB0aGF0IGFyZSB1bnVzZWQuCisgICAgY29uc3RleHByIFZr
QnVmZmVyVXNhZ2VGbGFncyBrRW1wdHlCdWZmZXJVc2FnZSA9CisgICAgICAgIFZLX0JVRkZFUl9V
U0FHRV9VTklGT1JNX0JVRkZFUl9CSVQgfCBWS19CVUZGRVJfVVNBR0VfU1RPUkFHRV9CVUZGRVJf
QklUOworCisgICAgVmtCdWZmZXJDcmVhdGVJbmZvIGVtcHR5QnVmZmVySW5mbyAgICA9IHt9Owor
ICAgIGVtcHR5QnVmZmVySW5mby5zVHlwZSAgICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVf
VFlQRV9CVUZGRVJfQ1JFQVRFX0lORk87CisgICAgZW1wdHlCdWZmZXJJbmZvLmZsYWdzICAgICAg
ICAgICAgICAgICA9IDA7CisgICAgZW1wdHlCdWZmZXJJbmZvLnNpemUgICAgICAgICAgICAgICAg
ICA9IDQ7CisgICAgZW1wdHlCdWZmZXJJbmZvLnVzYWdlICAgICAgICAgICAgICAgICA9IGtFbXB0
eUJ1ZmZlclVzYWdlOworICAgIGVtcHR5QnVmZmVySW5mby5zaGFyaW5nTW9kZSAgICAgICAgICAg
PSBWS19TSEFSSU5HX01PREVfRVhDTFVTSVZFOworICAgIGVtcHR5QnVmZmVySW5mby5xdWV1ZUZh
bWlseUluZGV4Q291bnQgPSAwOworICAgIGVtcHR5QnVmZmVySW5mby5wUXVldWVGYW1pbHlJbmRp
Y2VzICAgPSBudWxscHRyOworCisgICAgY29uc3RleHByIFZrTWVtb3J5UHJvcGVydHlGbGFncyBr
TWVtb3J5VHlwZSA9IFZLX01FTU9SWV9QUk9QRVJUWV9ERVZJQ0VfTE9DQUxfQklUOworICAgIHJl
dHVybiBtRW1wdHlCdWZmZXIuaW5pdChjb250ZXh0VmssIGVtcHR5QnVmZmVySW5mbywga01lbW9y
eVR5cGUpOworfQorCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlVms6OnVwZGF0ZURlZmF1bHRVbmlm
b3Jtc0Rlc2NyaXB0b3JTZXQoCisgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0
YXRlLAorICAgIGdsOjpTaGFkZXJNYXA8RGVmYXVsdFVuaWZvcm1CbG9jaz4gJmRlZmF1bHRVbmlm
b3JtQmxvY2tzLAorICAgIENvbnRleHRWayAqY29udGV4dFZrKQoreworICAgIHVpbnQzMl90IHNo
YWRlclN0YWdlQ291bnQgPQorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocHJvZ3JhbVN0
YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCkuZ2V0TGlua2VkU2hhZGVyU3RhZ2VDb3VudCgpKTsK
KworICAgIGdsOjpTaGFkZXJWZWN0b3I8VmtEZXNjcmlwdG9yQnVmZmVySW5mbz4gZGVzY3JpcHRv
ckJ1ZmZlckluZm8oc2hhZGVyU3RhZ2VDb3VudCk7CisgICAgZ2w6OlNoYWRlclZlY3RvcjxWa1dy
aXRlRGVzY3JpcHRvclNldD4gd3JpdGVEZXNjcmlwdG9ySW5mbyhzaGFkZXJTdGFnZUNvdW50KTsK
KworICAgIG1EZXNjcmlwdG9yQnVmZmVyc0NhY2hlLmNsZWFyKCk7CisKKyAgICAvLyBXcml0ZSBk
ZWZhdWx0IHVuaWZvcm1zIGZvciBlYWNoIHNoYWRlciB0eXBlLgorICAgIHVpbnQzMl90IHdyaXRl
SW5mb0NvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUg
OgorICAgICAgICAgcHJvZ3JhbVN0YXRlLmdldFByb2dyYW1FeGVjdXRhYmxlKCkuZ2V0TGlua2Vk
U2hhZGVyU3RhZ2VzKCkpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB1bmlmb3Jt
QmxvY2tOYW1lID0ga0RlZmF1bHRVbmlmb3JtTmFtZXNbc2hhZGVyVHlwZV07CisgICAgICAgIFNo
YWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAmaW5mbyAgPSBtVmFyaWFibGVJbmZvTWFwW3NoYWRl
clR5cGVdW3VuaWZvcm1CbG9ja05hbWVdOworICAgICAgICBpZiAoIWluZm8uYWN0aXZlU3RhZ2Vz
W3NoYWRlclR5cGVdKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBEZWZhdWx0VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgID0gZGVmYXVsdFVu
aWZvcm1CbG9ja3Nbc2hhZGVyVHlwZV07CisgICAgICAgIFZrRGVzY3JpcHRvckJ1ZmZlckluZm8g
JmJ1ZmZlckluZm8gPSBkZXNjcmlwdG9yQnVmZmVySW5mb1t3cml0ZUluZm9Db3VudF07CisgICAg
ICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0ICZ3cml0ZUluZm8gICAgPSB3cml0ZURlc2NyaXB0b3JJ
bmZvW3dyaXRlSW5mb0NvdW50XTsKKworICAgICAgICBpZiAoIXVuaWZvcm1CbG9jay51bmlmb3Jt
RGF0YS5lbXB0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICpi
dWZmZXJIZWxwZXIgPSB1bmlmb3JtQmxvY2suc3RvcmFnZS5nZXRDdXJyZW50QnVmZmVyKCk7Cisg
ICAgICAgICAgICBidWZmZXJJbmZvLmJ1ZmZlciAgICAgICAgICAgICAgPSBidWZmZXJIZWxwZXIt
PmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOworICAgICAgICAgICAgbURlc2NyaXB0b3JCdWZmZXJz
Q2FjaGUuZW1wbGFjZV9iYWNrKGJ1ZmZlckhlbHBlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBtRW1wdHlCdWZmZXIucmV0YWluKCZjb250ZXh0Vmst
PmdldFJlc291cmNlVXNlTGlzdCgpKTsKKyAgICAgICAgICAgIGJ1ZmZlckluZm8uYnVmZmVyID0g
bUVtcHR5QnVmZmVyLmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOworICAgICAgICAgICAgbURlc2Ny
aXB0b3JCdWZmZXJzQ2FjaGUuZW1wbGFjZV9iYWNrKCZtRW1wdHlCdWZmZXIpOworICAgICAgICB9
CisKKyAgICAgICAgYnVmZmVySW5mby5vZmZzZXQgPSAwOworICAgICAgICBidWZmZXJJbmZvLnJh
bmdlICA9IFZLX1dIT0xFX1NJWkU7CisKKyAgICAgICAgd3JpdGVJbmZvLnNUeXBlICAgICAgICAg
ICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9XUklURV9ERVNDUklQVE9SX1NFVDsKKyAgICAgICAgd3Jp
dGVJbmZvLnBOZXh0ICAgICAgICAgICAgPSBudWxscHRyOworICAgICAgICB3cml0ZUluZm8uZHN0
U2V0ICAgICAgICAgICA9IG1EZXNjcmlwdG9yU2V0c1trVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9y
U2V0SW5kZXhdOworICAgICAgICB3cml0ZUluZm8uZHN0QmluZGluZyAgICAgICA9IGluZm8uYmlu
ZGluZzsKKyAgICAgICAgd3JpdGVJbmZvLmRzdEFycmF5RWxlbWVudCAgPSAwOworICAgICAgICB3
cml0ZUluZm8uZGVzY3JpcHRvckNvdW50ICA9IDE7CisgICAgICAgIHdyaXRlSW5mby5kZXNjcmlw
dG9yVHlwZSAgID0gVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fQlVGRkVSX0RZTkFNSUM7Cisg
ICAgICAgIHdyaXRlSW5mby5wSW1hZ2VJbmZvICAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgd3Jp
dGVJbmZvLnBCdWZmZXJJbmZvICAgICAgPSAmYnVmZmVySW5mbzsKKyAgICAgICAgd3JpdGVJbmZv
LnBUZXhlbEJ1ZmZlclZpZXcgPSBudWxscHRyOworCisgICAgICAgICsrd3JpdGVJbmZvQ291bnQ7
CisgICAgfQorCisgICAgVmtEZXZpY2UgZGV2aWNlID0gY29udGV4dFZrLT5nZXREZXZpY2UoKTsK
KworICAgIEFTU0VSVCh3cml0ZUluZm9Db3VudCA8PSBrUmVzZXJ2ZWREZWZhdWx0VW5pZm9ybUJp
bmRpbmdDb3VudCk7CisKKyAgICB2a1VwZGF0ZURlc2NyaXB0b3JTZXRzKGRldmljZSwgd3JpdGVJ
bmZvQ291bnQsIHdyaXRlRGVzY3JpcHRvckluZm8uZGF0YSgpLCAwLCBudWxscHRyKTsKK30KKwor
dm9pZCBQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVCdWZmZXJzRGVzY3JpcHRvclNldChDb250
ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlJlc291cmNl
VXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVy
SGVscGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6SW50ZXJmYWNlQmxvY2s+ICZibG9ja3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGVzY3Jp
cHRvclR5cGUgZGVzY3JpcHRvclR5cGUpCit7CisgICAgaWYgKGJsb2Nrcy5lbXB0eSgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZrRGVzY3JpcHRvclNldCBkZXNjcmlw
dG9yU2V0ID0gbURlc2NyaXB0b3JTZXRzW2tTaGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRl
eF07CisKKyAgICBBU1NFUlQoZGVzY3JpcHRvclR5cGUgPT0gVktfREVTQ1JJUFRPUl9UWVBFX1VO
SUZPUk1fQlVGRkVSIHx8CisgICAgICAgICAgIGRlc2NyaXB0b3JUeXBlID09IFZLX0RFU0NSSVBU
T1JfVFlQRV9TVE9SQUdFX0JVRkZFUik7CisgICAgY29uc3QgYm9vbCBpc1N0b3JhZ2VCdWZmZXIg
PSBkZXNjcmlwdG9yVHlwZSA9PSBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVI7CisK
KyAgICBzdGF0aWNfYXNzZXJ0KAorICAgICAgICBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1NIQURF
Ul9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUyA+PQorICAgICAgICAgICAgZ2w6OklNUExFTUVOVEFU
SU9OX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUywKKyAgICAgICAgIlRoZSBkZXNjcmlwdG9y
IGFycmF5cyBoZXJlIHdvdWxkIGhhdmUgaW5hZGVxdWF0ZSBzaXplIGZvciB1bmlmb3JtIGJ1ZmZl
ciBvYmplY3RzIik7CisKKyAgICBnbDo6U3RvcmFnZUJ1ZmZlcnNBcnJheTxWa0Rlc2NyaXB0b3JC
dWZmZXJJbmZvPiBkZXNjcmlwdG9yQnVmZmVySW5mbzsKKyAgICBnbDo6U3RvcmFnZUJ1ZmZlcnNB
cnJheTxWa1dyaXRlRGVzY3JpcHRvclNldD4gd3JpdGVEZXNjcmlwdG9ySW5mbzsKKyAgICB1aW50
MzJfdCB3cml0ZUNvdW50ID0gMDsKKworICAgIC8vIFdyaXRlIHVuaWZvcm0gb3Igc3RvcmFnZSBi
dWZmZXJzLgorICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRleHRWay0+Z2V0U3Rh
dGUoKTsKKyAgICBmb3IgKHVpbnQzMl90IGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBi
bG9ja3Muc2l6ZSgpOyArK2J1ZmZlckluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6Oklu
dGVyZmFjZUJsb2NrICZibG9jayA9IGJsb2Nrc1tidWZmZXJJbmRleF07CisgICAgICAgIGNvbnN0
IGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYnVmZmVyQmluZGluZyA9Cisg
ICAgICAgICAgICBpc1N0b3JhZ2VCdWZmZXIgPyBnbFN0YXRlLmdldEluZGV4ZWRTaGFkZXJTdG9y
YWdlQnVmZmVyKGJsb2NrLmJpbmRpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBn
bFN0YXRlLmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJsb2NrLmJpbmRpbmcpOworCisgICAgICAg
IGlmICghYmxvY2suaXNBY3RpdmUoc2hhZGVyVHlwZSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ1ZmZlckJpbmRpbmcuZ2V0KCkg
PT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gaW5mbyA9IG1WYXJpYWJsZUlu
Zm9NYXBbc2hhZGVyVHlwZV1bYmxvY2subWFwcGVkTmFtZV07CisgICAgICAgIHVpbnQzMl90IGJp
bmRpbmcgICAgICAgICAgICAgICAgID0gaW5mby5iaW5kaW5nOworICAgICAgICB1aW50MzJfdCBh
cnJheUVsZW1lbnQgICAgICAgICAgICA9IGJsb2NrLmlzQXJyYXkgPyBibG9jay5hcnJheUVsZW1l
bnQgOiAwOworICAgICAgICBWa0RldmljZVNpemUgbWF4QmxvY2tTaXplICAgICAgICA9IGlzU3Rv
cmFnZUJ1ZmZlciA/IDAgOiBibG9jay5kYXRhU2l6ZTsKKworICAgICAgICBWa0Rlc2NyaXB0b3JC
dWZmZXJJbmZvICZidWZmZXJJbmZvID0gZGVzY3JpcHRvckJ1ZmZlckluZm9bd3JpdGVDb3VudF07
CisgICAgICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0ICZ3cml0ZUluZm8gICAgPSB3cml0ZURlc2Ny
aXB0b3JJbmZvW3dyaXRlQ291bnRdOworCisgICAgICAgIFdyaXRlQnVmZmVyRGVzY3JpcHRvclNl
dEJpbmRpbmcoYnVmZmVyQmluZGluZywgbWF4QmxvY2tTaXplLCBkZXNjcmlwdG9yU2V0LCBkZXNj
cmlwdG9yVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5k
aW5nLCBhcnJheUVsZW1lbnQsIDAsICZidWZmZXJJbmZvLCAmd3JpdGVJbmZvKTsKKworICAgICAg
ICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAgICAgICAgPSB2azo6R2V0SW1wbChidWZmZXJCaW5k
aW5nLmdldCgpKTsKKyAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVscGVyID0gYnVm
ZmVyVmstPmdldEJ1ZmZlcigpOworCisgICAgICAgIGlmIChpc1N0b3JhZ2VCdWZmZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIFdlIHNldCB0aGUgU0hBREVSX1JFQURfQklUIHRvIGJlIGNv
bnNlcnZhdGl2ZS4KKyAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3MgYWNjZXNzRmxhZ3MgPSBWS19B
Q0NFU1NfU0hBREVSX1JFQURfQklUIHwgVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQ7CisgICAg
ICAgICAgICBjb21tYW5kQnVmZmVySGVscGVyLT5idWZmZXJXcml0ZShyZXNvdXJjZVVzZUxpc3Qs
IGFjY2Vzc0ZsYWdzLCAmYnVmZmVySGVscGVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbW1hbmRCdWZmZXJIZWxwZXItPmJ1ZmZlclJlYWQocmVz
b3VyY2VVc2VMaXN0LCBWS19BQ0NFU1NfVU5JRk9STV9SRUFEX0JJVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlckhlbHBlcik7CisgICAgICAgIH0K
KworICAgICAgICArK3dyaXRlQ291bnQ7CisgICAgfQorCisgICAgVmtEZXZpY2UgZGV2aWNlID0g
Y29udGV4dFZrLT5nZXREZXZpY2UoKTsKKworICAgIHZrVXBkYXRlRGVzY3JpcHRvclNldHMoZGV2
aWNlLCB3cml0ZUNvdW50LCB3cml0ZURlc2NyaXB0b3JJbmZvLmRhdGEoKSwgMCwgbnVsbHB0cik7
Cit9CisKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6dXBkYXRlQXRvbWljQ291bnRlckJ1ZmZl
cnNEZXNjcmlwdG9yU2V0KAorICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0
ZSwKKyAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgIENvbnRleHRWayAq
Y29udGV4dFZrLAorICAgIHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAg
ICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVySGVscGVyKQoreworICAgIGNvbnN0
IGdsOjpTdGF0ZSAmZ2xTdGF0ZSA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6QXRvbWljQ291bnRlckJ1ZmZlcj4gJmF0b21pY0NvdW50ZXJCdWZmZXJz
ID0KKyAgICAgICAgcHJvZ3JhbVN0YXRlLmdldEF0b21pY0NvdW50ZXJCdWZmZXJzKCk7CisKKyAg
ICBpZiAoYXRvbWljQ291bnRlckJ1ZmZlcnMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY3JpcHRvclNldCA9IG1EZXNjcmlw
dG9yU2V0c1trU2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXhdOworCisgICAgc3RkOjpz
dHJpbmcgYmxvY2tOYW1lKHNoOjp2azo6a0F0b21pY0NvdW50ZXJzQmxvY2tOYW1lKTsKKyAgICBj
b25zdCBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm8gJmluZm8gPSBtVmFyaWFibGVJbmZvTWFw
W3NoYWRlclR5cGVdW2Jsb2NrTmFtZV07CisKKyAgICBpZiAoIWluZm8uYWN0aXZlU3RhZ2VzW3No
YWRlclR5cGVdKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsOjpBdG9t
aWNDb3VudGVyQnVmZmVyc0FycmF5PFZrRGVzY3JpcHRvckJ1ZmZlckluZm8+IGRlc2NyaXB0b3JC
dWZmZXJJbmZvOworICAgIGdsOjpBdG9taWNDb3VudGVyQnVmZmVyc0FycmF5PFZrV3JpdGVEZXNj
cmlwdG9yU2V0PiB3cml0ZURlc2NyaXB0b3JJbmZvOworICAgIGdsOjpBdG9taWNDb3VudGVyQnVm
ZmVyTWFzayB3cml0dGVuQmluZGluZ3M7CisKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlclZrID0g
Y29udGV4dFZrLT5nZXRSZW5kZXJlcigpOworICAgIGNvbnN0IFZrRGV2aWNlU2l6ZSByZXF1aXJl
ZE9mZnNldEFsaWdubWVudCA9CisgICAgICAgIHJlbmRlcmVyVmstPmdldFBoeXNpY2FsRGV2aWNl
UHJvcGVydGllcygpLmxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50OworCisg
ICAgLy8gV3JpdGUgYXRvbWljIGNvdW50ZXIgYnVmZmVycy4KKyAgICBmb3IgKHVpbnQzMl90IGJ1
ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBhdG9taWNDb3VudGVyQnVmZmVycy5zaXplKCk7
ICsrYnVmZmVySW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBnbDo6QXRvbWljQ291bnRlckJ1
ZmZlciAmYXRvbWljQ291bnRlckJ1ZmZlciA9IGF0b21pY0NvdW50ZXJCdWZmZXJzW2J1ZmZlcklu
ZGV4XTsKKyAgICAgICAgdWludDMyX3QgYmluZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBhdG9taWNDb3VudGVyQnVmZmVyLmJpbmRpbmc7CisgICAgICAgIGNvbnN0IGds
OjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYnVmZmVyQmluZGluZyA9CisgICAg
ICAgICAgICBnbFN0YXRlLmdldEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyKGJpbmRpbmcpOwor
CisgICAgICAgIGlmIChidWZmZXJCaW5kaW5nLmdldCgpID09IG51bGxwdHIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgVmtEZXNjcmlwdG9y
QnVmZmVySW5mbyAmYnVmZmVySW5mbyA9IGRlc2NyaXB0b3JCdWZmZXJJbmZvW2JpbmRpbmddOwor
ICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICAgID0gd3JpdGVEZXNjcmlw
dG9ySW5mb1tiaW5kaW5nXTsKKworICAgICAgICBXcml0ZUJ1ZmZlckRlc2NyaXB0b3JTZXRCaW5k
aW5nKGJ1ZmZlckJpbmRpbmcsIDAsIGRlc2NyaXB0b3JTZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSLCBp
bmZvLmJpbmRpbmcsIGJpbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWlyZWRPZmZzZXRBbGlnbm1lbnQsICZidWZmZXJJbmZvLCAmd3JpdGVJbmZvKTsK
KworICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAgICAgICAgPSB2azo6R2V0SW1wbChi
dWZmZXJCaW5kaW5nLmdldCgpKTsKKyAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAmYnVmZmVySGVs
cGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOworCisgICAgICAgIC8vIFdlIHNldCBTSEFERVJf
UkVBRF9CSVQgdG8gYmUgY29uc2VydmF0aXZlLgorICAgICAgICBjb21tYW5kQnVmZmVySGVscGVy
LT5idWZmZXJXcml0ZSgKKyAgICAgICAgICAgIHJlc291cmNlVXNlTGlzdCwgVktfQUNDRVNTX1NI
QURFUl9SRUFEX0JJVCB8IFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklULCAmYnVmZmVySGVscGVy
KTsKKworICAgICAgICB3cml0dGVuQmluZGluZ3Muc2V0KGJpbmRpbmcpOworICAgIH0KKworICAg
IC8vIEJpbmQgdGhlIGVtcHR5IGJ1ZmZlciB0byBldmVyeSBhcnJheSBzbG90IHRoYXQncyB1bnVz
ZWQuCisgICAgbUVtcHR5QnVmZmVyLnJldGFpbigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxp
c3QoKSk7CisgICAgZm9yIChzaXplX3QgYmluZGluZyA6IH53cml0dGVuQmluZGluZ3MpCisgICAg
eworICAgICAgICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZvICZidWZmZXJJbmZvID0gZGVzY3JpcHRv
ckJ1ZmZlckluZm9bYmluZGluZ107CisgICAgICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0ICZ3cml0
ZUluZm8gICAgPSB3cml0ZURlc2NyaXB0b3JJbmZvW2JpbmRpbmddOworCisgICAgICAgIGJ1ZmZl
ckluZm8uYnVmZmVyID0gbUVtcHR5QnVmZmVyLmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOworICAg
ICAgICBidWZmZXJJbmZvLm9mZnNldCA9IDA7CisgICAgICAgIGJ1ZmZlckluZm8ucmFuZ2UgID0g
VktfV0hPTEVfU0laRTsKKworICAgICAgICB3cml0ZUluZm8uc1R5cGUgICAgICAgICAgICA9IFZL
X1NUUlVDVFVSRV9UWVBFX1dSSVRFX0RFU0NSSVBUT1JfU0VUOworICAgICAgICB3cml0ZUluZm8u
cE5leHQgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAgIHdyaXRlSW5mby5kc3RTZXQgICAg
ICAgICAgID0gZGVzY3JpcHRvclNldDsKKyAgICAgICAgd3JpdGVJbmZvLmRzdEJpbmRpbmcgICAg
ICAgPSBpbmZvLmJpbmRpbmc7CisgICAgICAgIHdyaXRlSW5mby5kc3RBcnJheUVsZW1lbnQgID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpbmRpbmcpOworICAgICAgICB3cml0ZUluZm8uZGVzY3Jp
cHRvckNvdW50ICA9IDE7CisgICAgICAgIHdyaXRlSW5mby5kZXNjcmlwdG9yVHlwZSAgID0gVktf
REVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSOworICAgICAgICB3cml0ZUluZm8ucEltYWdl
SW5mbyAgICAgICA9IG51bGxwdHI7CisgICAgICAgIHdyaXRlSW5mby5wQnVmZmVySW5mbyAgICAg
ID0gJmJ1ZmZlckluZm87CisgICAgICAgIHdyaXRlSW5mby5wVGV4ZWxCdWZmZXJWaWV3ID0gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBWa0RldmljZSBkZXZpY2UgPSBjb250ZXh0VmstPmdldERldmlj
ZSgpOworCisgICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyhkZXZpY2UsIGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdyaXRlRGVzY3JpcHRvckluZm8uZGF0YSgpLCAwLCBudWxscHRyKTsKK30KKworYW5nbGU6
OlJlc3VsdCBQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVJbWFnZXNEZXNjcmlwdG9yU2V0KGNv
bnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVy
VHlwZSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRWayAqY29udGV4dFZrKQoreworICAgIGNvbnN0
IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY29udGV4dFZr
LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbWFnZUJpbmRpbmc+ICZp
bWFnZUJpbmRpbmdzID0gcHJvZ3JhbVN0YXRlLmdldEltYWdlQmluZGluZ3MoKTsKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybT4gJnVuaWZvcm1zICAgICA9IHByb2dyYW1T
dGF0ZS5nZXRVbmlmb3JtcygpOworCisgICAgaWYgKGltYWdlQmluZGluZ3MuZW1wdHkoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKKyAgICB9CisKKyAg
ICBWa0Rlc2NyaXB0b3JTZXQgZGVzY3JpcHRvclNldCA9IG1EZXNjcmlwdG9yU2V0c1trU2hhZGVy
UmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXhdOworCisgICAgY29uc3QgZ2w6OkFjdGl2ZVRleHR1
cmVBcnJheTxUZXh0dXJlVmsgKj4gJmFjdGl2ZUltYWdlcyA9IGNvbnRleHRWay0+Z2V0QWN0aXZl
SW1hZ2VzKCk7CisKKyAgICBnbDo6SW1hZ2VzQXJyYXk8VmtEZXNjcmlwdG9ySW1hZ2VJbmZvPiBk
ZXNjcmlwdG9ySW1hZ2VJbmZvOworICAgIGdsOjpJbWFnZXNBcnJheTxWa1dyaXRlRGVzY3JpcHRv
clNldD4gd3JpdGVEZXNjcmlwdG9ySW5mbzsKKyAgICB1aW50MzJfdCB3cml0ZUNvdW50ID0gMDsK
KworICAgIC8vIFdyaXRlIGltYWdlcy4KKyAgICBmb3IgKHVpbnQzMl90IGltYWdlSW5kZXggPSAw
OyBpbWFnZUluZGV4IDwgaW1hZ2VCaW5kaW5ncy5zaXplKCk7ICsraW1hZ2VJbmRleCkKKyAgICB7
CisgICAgICAgIGNvbnN0IGdsOjpJbWFnZUJpbmRpbmcgJmltYWdlQmluZGluZyA9IGltYWdlQmlu
ZGluZ3NbaW1hZ2VJbmRleF07CisgICAgICAgIHVpbnQzMl90IHVuaWZvcm1JbmRleCA9IHByb2dy
YW1TdGF0ZS5nZXRVbmlmb3JtSW5kZXhGcm9tSW1hZ2VJbmRleChpbWFnZUluZGV4KTsKKyAgICAg
ICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJmltYWdlVW5pZm9ybSA9IHVuaWZvcm1zW3VuaWZv
cm1JbmRleF07CisKKyAgICAgICAgaWYgKCFpbWFnZVVuaWZvcm0uaXNBY3RpdmUoc2hhZGVyVHlw
ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgc3RkOjpzdHJpbmcgbmFtZSA9IGltYWdlVW5pZm9ybS5tYXBwZWROYW1lOworICAgICAgICBH
ZXRJbWFnZU5hbWVXaXRob3V0SW5kaWNlcygmbmFtZSk7CisgICAgICAgIFNoYWRlckludGVyZmFj
ZVZhcmlhYmxlSW5mbyAmaW5mbyA9IG1WYXJpYWJsZUluZm9NYXBbc2hhZGVyVHlwZV1bbmFtZV07
CisKKyAgICAgICAgQVNTRVJUKCFpbWFnZUJpbmRpbmcudW5yZWZlcmVuY2VkKTsKKworICAgICAg
ICBmb3IgKHVpbnQzMl90IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IGltYWdlQmlu
ZGluZy5ib3VuZEltYWdlVW5pdHMuc2l6ZSgpOworICAgICAgICAgICAgICsrYXJyYXlFbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICBHTHVpbnQgaW1hZ2VVbml0ICAgICAgICAgICAgID0g
aW1hZ2VCaW5kaW5nLmJvdW5kSW1hZ2VVbml0c1thcnJheUVsZW1lbnRdOworICAgICAgICAgICAg
Y29uc3QgZ2w6OkltYWdlVW5pdCAmYmluZGluZyA9IGdsU3RhdGUuZ2V0SW1hZ2VVbml0KGltYWdl
VW5pdCk7CisgICAgICAgICAgICBUZXh0dXJlVmsgKnRleHR1cmVWayAgICAgICAgID0gYWN0aXZl
SW1hZ2VzW2ltYWdlVW5pdF07CisKKyAgICAgICAgICAgIHZrOjpJbWFnZUhlbHBlciAqaW1hZ2Ug
ICAgICAgICA9ICZ0ZXh0dXJlVmstPmdldEltYWdlKCk7CisgICAgICAgICAgICBjb25zdCB2azo6
SW1hZ2VWaWV3ICppbWFnZVZpZXcgPSBudWxscHRyOworCisgICAgICAgICAgICBBTkdMRV9UUlko
dGV4dHVyZVZrLT5nZXRTdG9yYWdlSW1hZ2VWaWV3KGNvbnRleHRWaywgKGJpbmRpbmcubGF5ZXJl
ZCA9PSBHTF9UUlVFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmluZGluZy5sZXZlbCwgYmluZGluZy5sYXllciwgJmltYWdlVmlldykpOwor
CisgICAgICAgICAgICAvLyBOb3RlOiBiaW5kaW5nLmFjY2VzcyBpcyB1bnVzZWQgYmVjYXVzZSBp
dCBpcyBpbXBsaWVkIGJ5IHRoZSBzaGFkZXIuCisKKyAgICAgICAgICAgIC8vIFRPRE8oc3lvdXNz
ZWZpKTogU3VwcG9ydCBpbWFnZSBkYXRhIHJlaW50ZXJwcmV0YXRpb24gYnkgdXNpbmcgYmluZGlu
Zy5mb3JtYXQuCisgICAgICAgICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzM1NjMKKworICAg
ICAgICAgICAgVmtEZXNjcmlwdG9ySW1hZ2VJbmZvICZpbWFnZUluZm8gPSBkZXNjcmlwdG9ySW1h
Z2VJbmZvW3dyaXRlQ291bnRdOworICAgICAgICAgICAgVmtXcml0ZURlc2NyaXB0b3JTZXQgJndy
aXRlSW5mbyAgPSB3cml0ZURlc2NyaXB0b3JJbmZvW3dyaXRlQ291bnRdOworCisgICAgICAgICAg
ICBpbWFnZUluZm8uc2FtcGxlciAgICAgPSBWS19OVUxMX0hBTkRMRTsKKyAgICAgICAgICAgIGlt
YWdlSW5mby5pbWFnZVZpZXcgICA9IGltYWdlVmlldy0+Z2V0SGFuZGxlKCk7CisgICAgICAgICAg
ICBpbWFnZUluZm8uaW1hZ2VMYXlvdXQgPSBpbWFnZS0+Z2V0Q3VycmVudExheW91dCgpOworCisg
ICAgICAgICAgICB3cml0ZUluZm8uc1R5cGUgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBF
X1dSSVRFX0RFU0NSSVBUT1JfU0VUOworICAgICAgICAgICAgd3JpdGVJbmZvLnBOZXh0ICAgICAg
ICAgICAgPSBudWxscHRyOworICAgICAgICAgICAgd3JpdGVJbmZvLmRzdFNldCAgICAgICAgICAg
PSBkZXNjcmlwdG9yU2V0OworICAgICAgICAgICAgd3JpdGVJbmZvLmRzdEJpbmRpbmcgICAgICAg
PSBpbmZvLmJpbmRpbmc7CisgICAgICAgICAgICB3cml0ZUluZm8uZHN0QXJyYXlFbGVtZW50ICA9
IGFycmF5RWxlbWVudDsKKyAgICAgICAgICAgIHdyaXRlSW5mby5kZXNjcmlwdG9yQ291bnQgID0g
MTsKKyAgICAgICAgICAgIHdyaXRlSW5mby5kZXNjcmlwdG9yVHlwZSAgID0gVktfREVTQ1JJUFRP
Ul9UWVBFX1NUT1JBR0VfSU1BR0U7CisgICAgICAgICAgICB3cml0ZUluZm8ucEltYWdlSW5mbyAg
ICAgICA9ICZpbWFnZUluZm87CisgICAgICAgICAgICB3cml0ZUluZm8ucEJ1ZmZlckluZm8gICAg
ICA9IG51bGxwdHI7CisgICAgICAgICAgICB3cml0ZUluZm8ucFRleGVsQnVmZmVyVmlldyA9IG51
bGxwdHI7CisKKyAgICAgICAgICAgICsrd3JpdGVDb3VudDsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFZrRGV2aWNlIGRldmljZSA9IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7CisKKyAgICB2a1Vw
ZGF0ZURlc2NyaXB0b3JTZXRzKGRldmljZSwgd3JpdGVDb3VudCwgd3JpdGVEZXNjcmlwdG9ySW5m
by5kYXRhKCksIDAsIG51bGxwdHIpOworCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOworfQorCithbmdsZTo6UmVzdWx0IFByb2dyYW1FeGVjdXRhYmxlVms6OnVwZGF0ZVNoYWRl
clJlc291cmNlc0Rlc2NyaXB0b3JTZXQoCisgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJv
Z3JhbVN0YXRlLAorICAgIENvbnRleHRWayAqY29udGV4dFZrLAorICAgIHZrOjpSZXNvdXJjZVVz
ZUxpc3QgKnJlc291cmNlVXNlTGlzdCwKKyAgICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5k
QnVmZmVySGVscGVyKQoreworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0
YWJsZSA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAg
IEFTU0VSVChleGVjdXRhYmxlKTsKKworICAgIEFOR0xFX1RSWShhbGxvY2F0ZURlc2NyaXB0b3JT
ZXQoY29udGV4dFZrLCBrU2hhZGVyUmVzb3VyY2VEZXNjcmlwdG9yU2V0SW5kZXgpKTsKKworICAg
IGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGV4ZWN1dGFibGUtPmdldExp
bmtlZFNoYWRlclN0YWdlcygpKQorICAgIHsKKyAgICAgICAgdXBkYXRlQnVmZmVyc0Rlc2NyaXB0
b3JTZXQoY29udGV4dFZrLCBzaGFkZXJUeXBlLCByZXNvdXJjZVVzZUxpc3QsIGNvbW1hbmRCdWZm
ZXJIZWxwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1TdGF0
ZS5nZXRVbmlmb3JtQmxvY2tzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUik7CisgICAgICAgIHVwZGF0ZUJ1ZmZl
cnNEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywgc2hhZGVyVHlwZSwgcmVzb3VyY2VVc2VMaXN0LCBj
b21tYW5kQnVmZmVySGVscGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm9ncmFtU3RhdGUuZ2V0U2hhZGVyU3RvcmFnZUJsb2NrcygpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIpOworICAg
ICAgICB1cGRhdGVBdG9taWNDb3VudGVyQnVmZmVyc0Rlc2NyaXB0b3JTZXQocHJvZ3JhbVN0YXRl
LCBzaGFkZXJUeXBlLCBjb250ZXh0VmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNvdXJjZVVzZUxpc3QsIGNvbW1hbmRCdWZmZXJIZWxwZXIpOwor
ICAgICAgICBhbmdsZTo6UmVzdWx0IHN0YXR1cyA9IHVwZGF0ZUltYWdlc0Rlc2NyaXB0b3JTZXQo
cHJvZ3JhbVN0YXRlLCBzaGFkZXJUeXBlLCBjb250ZXh0VmspOworICAgICAgICBpZiAoc3RhdHVz
ICE9IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gc3RhdHVzOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6
OkNvbnRpbnVlOworfQorCithbmdsZTo6UmVzdWx0IFByb2dyYW1FeGVjdXRhYmxlVms6OnVwZGF0
ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldCgKKyAgICBjb25zdCBnbDo6UHJvZ3JhbVN0
YXRlICZwcm9ncmFtU3RhdGUsCisgICAgZ2w6OlNoYWRlck1hcDxEZWZhdWx0VW5pZm9ybUJsb2Nr
PiAmZGVmYXVsdFVuaWZvcm1CbG9ja3MsCisgICAgQ29udGV4dFZrICpjb250ZXh0VmspCit7Cisg
ICAgY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlICAgICAgICAgICAgICAgID0gY29udGV4dFZrLT5n
ZXRTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSA9
IHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRh
YmxlLmhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KGdsU3RhdGUpKTsKKworICAgIEFOR0xFX1RS
WShhbGxvY2F0ZURlc2NyaXB0b3JTZXQoY29udGV4dFZrLCBrVW5pZm9ybXNBbmRYZmJEZXNjcmlw
dG9yU2V0SW5kZXgpKTsKKworICAgIHVwZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQo
cHJvZ3JhbVN0YXRlLCBkZWZhdWx0VW5pZm9ybUJsb2NrcywgY29udGV4dFZrKTsKKyAgICB1cGRh
dGVUcmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXRJbXBsKHByb2dyYW1TdGF0ZSwgY29udGV4
dFZrKTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwordm9pZCBQ
cm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVUcmFuc2Zvcm1GZWVkYmFja0Rlc2NyaXB0b3JTZXRJ
bXBsKAorICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICBDb250
ZXh0VmsgKmNvbnRleHRWaykKK3sKKyAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgICAgICAg
ICAgICAgICAgID0gY29udGV4dFZrLT5nZXRTdGF0ZSgpOworICAgIGdsOjpUcmFuc2Zvcm1GZWVk
YmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBnbFN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVk
YmFjaygpOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSAgPSBw
cm9ncmFtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKKworICAgIGlmICghZXhlY3V0YWJs
ZS5oYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dChnbFN0YXRlKSkKKyAgICB7CisgICAgICAgIC8v
IElmIHhmYiBoYXMgbm8gb3V0cHV0IHRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIGRlc2NyaXB0
b3Igc2V0LgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZ2xTdGF0ZS5pc1RyYW5z
Zm9ybUZlZWRiYWNrQWN0aXZlKCkpCisgICAgeworICAgICAgICAvLyBXZSBzZXQgZW1wdHkgQnVm
ZmVyIHRvIHhmYiBkZXNjcmlwdG9yIHNldCBiZWNhdXNlIHhmYiBkZXNjcmlwdG9yIHNldAorICAg
ICAgICAvLyByZXF1aXJlcyB2YWxpZCBidWZmZXIgYmluZGluZ3MsIGV2ZW4gaWYgdGhleSBhcmUg
ZW1wdHkgYnVmZmVyLAorICAgICAgICAvLyBvdGhlcndpc2UgVnVsa2FuIHZhbGlkYXRpb24gbGF5
ZXIgZ2VuZXJhdGVzIGVycm9ycy4KKyAgICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrKQorICAg
ICAgICB7CisgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja1ZrICp0cmFuc2Zvcm1GZWVkYmFj
a1ZrID0gdms6OkdldEltcGwodHJhbnNmb3JtRmVlZGJhY2spOworICAgICAgICAgICAgdHJhbnNm
b3JtRmVlZGJhY2tWay0+aW5pdERlc2NyaXB0b3JTZXQoCisgICAgICAgICAgICAgICAgY29udGV4
dFZrLCBwcm9ncmFtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgpLCAmbUVt
cHR5QnVmZmVyLAorICAgICAgICAgICAgICAgIG1EZXNjcmlwdG9yU2V0c1trVW5pZm9ybXNBbmRY
ZmJEZXNjcmlwdG9yU2V0SW5kZXhdKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgVHJhbnNmb3JtRmVlZGJhY2tWayAqdHJhbnNmb3JtRmVlZGJhY2tWayA9IHZrOjpH
ZXRJbXBsKGdsU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOworICAgIHRyYW5z
Zm9ybUZlZWRiYWNrVmstPnVwZGF0ZURlc2NyaXB0b3JTZXQoY29udGV4dFZrLCBwcm9ncmFtU3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGVzY3Jp
cHRvclNldHNba1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNldEluZGV4XSk7Cit9CisKK2FuZ2xl
OjpSZXN1bHQgUHJvZ3JhbUV4ZWN1dGFibGVWazo6dXBkYXRlVGV4dHVyZXNEZXNjcmlwdG9yU2V0
KGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRWayAq
Y29udGV4dFZrKQoreworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAg
ICAgICAgICA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsKKyAgICBjb25zdCB2azo6VGV4dHVyZURl
c2NyaXB0b3JEZXNjICZ0ZXh0dXJlc0Rlc2MgPSBjb250ZXh0VmstPmdldEFjdGl2ZVRleHR1cmVz
RGVzYygpOworICAgIGNvbnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZXhlY3V0YWJsZSAgICAg
ICA9IHByb2dyYW1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworCisgICAgYXV0byBpdGVy
ID0gbVRleHR1cmVEZXNjcmlwdG9yc0NhY2hlLmZpbmQodGV4dHVyZXNEZXNjKTsKKyAgICBpZiAo
aXRlciAhPSBtVGV4dHVyZURlc2NyaXB0b3JzQ2FjaGUuZW5kKCkpCisgICAgeworICAgICAgICBt
RGVzY3JpcHRvclNldHNba1RleHR1cmVEZXNjcmlwdG9yU2V0SW5kZXhdID0gaXRlci0+c2Vjb25k
OworICAgICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAgfQorCisgICAg
QVNTRVJUKGV4ZWN1dGFibGUuaGFzVGV4dHVyZXMoZ2xTdGF0ZSkpOworICAgIGJvb2wgbmV3UG9v
bEFsbG9jYXRlZDsKKyAgICBBTkdMRV9UUlkoCisgICAgICAgIGFsbG9jYXRlRGVzY3JpcHRvclNl
dEFuZEdldEluZm8oY29udGV4dFZrLCBrVGV4dHVyZURlc2NyaXB0b3JTZXRJbmRleCwgJm5ld1Bv
b2xBbGxvY2F0ZWQpKTsKKworICAgIC8vIENsZWFyIGRlc2NyaXB0b3Igc2V0IGNhY2hlLiBJdCBt
YXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgorICAgIGlmIChuZXdQb29sQWxsb2NhdGVkKQorICAgIHsK
KyAgICAgICAgbVRleHR1cmVEZXNjcmlwdG9yc0NhY2hlLmNsZWFyKCk7CisgICAgfQorCisgICAg
VmtEZXNjcmlwdG9yU2V0IGRlc2NyaXB0b3JTZXQgPSBtRGVzY3JpcHRvclNldHNba1RleHR1cmVE
ZXNjcmlwdG9yU2V0SW5kZXhdOworCisgICAgZ2w6OkFjdGl2ZVRleHR1cmVBcnJheTxWa0Rlc2Ny
aXB0b3JJbWFnZUluZm8+IGRlc2NyaXB0b3JJbWFnZUluZm87CisgICAgZ2w6OkFjdGl2ZVRleHR1
cmVBcnJheTxWa1dyaXRlRGVzY3JpcHRvclNldD4gd3JpdGVEZXNjcmlwdG9ySW5mbzsKKyAgICB1
aW50MzJfdCB3cml0ZUNvdW50ID0gMDsKKworICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlQXJy
YXk8dms6OlRleHR1cmVVbml0PiAmYWN0aXZlVGV4dHVyZXMgPSBjb250ZXh0VmstPmdldEFjdGl2
ZVRleHR1cmVzKCk7CisKKyAgICBib29sIGVtdWxhdGVTZWFtZnVsQ3ViZU1hcFNhbXBsaW5nID0g
Y29udGV4dFZrLT5lbXVsYXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZygpOworICAgIGJvb2wgdXNl
T2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzICAgPSBjb250ZXh0VmstPnVzZU9sZFJld3JpdGVTdHJ1
Y3RTYW1wbGVycygpOworCisgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBl
IDogZXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICB7CisgICAgICAgIHN0
ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMyX3Q+IG1hcHBlZFNhbXBsZXJOYW1l
VG9BcnJheU9mZnNldDsKKyAgICAgICAgZm9yICh1aW50MzJfdCB0ZXh0dXJlSW5kZXggPSAwOyB0
ZXh0dXJlSW5kZXggPCBwcm9ncmFtU3RhdGUuZ2V0U2FtcGxlckJpbmRpbmdzKCkuc2l6ZSgpOwor
ICAgICAgICAgICAgICsrdGV4dHVyZUluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBjb25z
dCBnbDo6U2FtcGxlckJpbmRpbmcgJnNhbXBsZXJCaW5kaW5nID0KKyAgICAgICAgICAgICAgICBw
cm9ncmFtU3RhdGUuZ2V0U2FtcGxlckJpbmRpbmdzKClbdGV4dHVyZUluZGV4XTsKKworICAgICAg
ICAgICAgQVNTRVJUKCFzYW1wbGVyQmluZGluZy51bnJlZmVyZW5jZWQpOworCisgICAgICAgICAg
ICB1aW50MzJfdCB1bmlmb3JtSW5kZXggPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9ybUluZGV4RnJv
bVNhbXBsZXJJbmRleCh0ZXh0dXJlSW5kZXgpOworICAgICAgICAgICAgY29uc3QgZ2w6Okxpbmtl
ZFVuaWZvcm0gJnNhbXBsZXJVbmlmb3JtID0gcHJvZ3JhbVN0YXRlLmdldFVuaWZvcm1zKClbdW5p
Zm9ybUluZGV4XTsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1hcHBlZFNhbXBsZXJOYW1lID0g
R2xzbGFuZ0dldE1hcHBlZFNhbXBsZXJOYW1lKHNhbXBsZXJVbmlmb3JtLm5hbWUpOworCisgICAg
ICAgICAgICBpZiAoIXNhbXBsZXJVbmlmb3JtLmlzQWN0aXZlKHNoYWRlclR5cGUpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB1aW50MzJfdCBhcnJheU9mZnNldCA9IDA7CisgICAgICAgICAgICB1aW50MzJfdCBh
cnJheVNpemUgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzYW1wbGVyQmluZGluZy5ib3VuZFRl
eHR1cmVVbml0cy5zaXplKCkpOworCisgICAgICAgICAgICBpZiAoIXVzZU9sZFJld3JpdGVTdHJ1
Y3RTYW1wbGVycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhcnJheU9mZnNldCA9
IG1hcHBlZFNhbXBsZXJOYW1lVG9BcnJheU9mZnNldFttYXBwZWRTYW1wbGVyTmFtZV07CisgICAg
ICAgICAgICAgICAgLy8gRnJvbnQtZW5kIGdlbmVyYXRlcyBhcnJheSBlbGVtZW50cyBpbiBvcmRl
ciwgc28gd2UgY2FuIGp1c3QgaW5jcmVtZW50CisgICAgICAgICAgICAgICAgLy8gdGhlIG9mZnNl
dCBlYWNoIHRpbWUgd2UgcHJvY2VzcyBhIG5lc3RlZCBhcnJheS4KKyAgICAgICAgICAgICAgICBt
YXBwZWRTYW1wbGVyTmFtZVRvQXJyYXlPZmZzZXRbbWFwcGVkU2FtcGxlck5hbWVdICs9IGFycmF5
U2l6ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh1aW50MzJfdCBhcnJheUVs
ZW1lbnQgPSAwOyBhcnJheUVsZW1lbnQgPCBhcnJheVNpemU7ICsrYXJyYXlFbGVtZW50KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlVW5pdCAgID0gc2FtcGxl
ckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHNbYXJyYXlFbGVtZW50XTsKKyAgICAgICAgICAgICAg
ICBUZXh0dXJlVmsgKnRleHR1cmVWayA9IGFjdGl2ZVRleHR1cmVzW3RleHR1cmVVbml0XS50ZXh0
dXJlOworICAgICAgICAgICAgICAgIFNhbXBsZXJWayAqc2FtcGxlclZrID0gYWN0aXZlVGV4dHVy
ZXNbdGV4dHVyZVVuaXRdLnNhbXBsZXI7CisKKyAgICAgICAgICAgICAgICB2azo6SW1hZ2VIZWxw
ZXIgJmltYWdlID0gdGV4dHVyZVZrLT5nZXRJbWFnZSgpOworCisgICAgICAgICAgICAgICAgVmtE
ZXNjcmlwdG9ySW1hZ2VJbmZvICZpbWFnZUluZm8gPSBkZXNjcmlwdG9ySW1hZ2VJbmZvW3dyaXRl
Q291bnRdOworCisgICAgICAgICAgICAgICAgLy8gVXNlIGJvdW5kIHNhbXBsZXIgb2JqZWN0IGlm
IG9uZSBwcmVzZW50LCBvdGhlcndpc2UgdXNlIHRleHR1cmUncyBzYW1wbGVyCisgICAgICAgICAg
ICAgICAgY29uc3Qgdms6OlNhbXBsZXIgJnNhbXBsZXIgPQorICAgICAgICAgICAgICAgICAgICAo
c2FtcGxlclZrICE9IG51bGxwdHIpID8gc2FtcGxlclZrLT5nZXRTYW1wbGVyKCkgOiB0ZXh0dXJl
VmstPmdldFNhbXBsZXIoKTsKKworICAgICAgICAgICAgICAgIGltYWdlSW5mby5zYW1wbGVyICAg
ICA9IHNhbXBsZXIuZ2V0SGFuZGxlKCk7CisgICAgICAgICAgICAgICAgaW1hZ2VJbmZvLmltYWdl
TGF5b3V0ID0gaW1hZ2UuZ2V0Q3VycmVudExheW91dCgpOworCisgICAgICAgICAgICAgICAgaWYg
KGVtdWxhdGVTZWFtZnVsQ3ViZU1hcFNhbXBsaW5nKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgZW11bGF0aW5nIHNlYW1mdWwgY3ViZW1hcHBpbmcsIHVzZSB0
aGUgZmV0Y2ggaW1hZ2Ugdmlldy4gIFRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmFz
aWNhbGx5IHRoZSBzYW1lIGltYWdlIHZpZXcgYXMgcmVhZCwgZXhjZXB0IGl0J3MgYSAyREFycmF5
IHZpZXcgZm9yCisgICAgICAgICAgICAgICAgICAgIC8vIGN1YmUgbWFwcy4KKyAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VJbmZvLmltYWdlVmlldyA9CisgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlVmstPmdldEZldGNoSW1hZ2VWaWV3QW5kUmVjb3JkVXNlKGNvbnRleHRWaykuZ2V0SGFu
ZGxlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGltYWdlSW5mby5pbWFnZVZpZXcgPQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVZrLT5nZXRSZWFkSW1hZ2VWaWV3QW5kUmVjb3Jk
VXNlKGNvbnRleHRWaykuZ2V0SGFuZGxlKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2YXJpYWJsZUluZm9NYXAg
PSBtVmFyaWFibGVJbmZvTWFwW3NoYWRlclR5cGVdOworICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHNhbXBsZXJOYW1lID0KKyAgICAgICAgICAgICAgICAgICAgY29udGV4dFZrLT5n
ZXRSZW5kZXJlcigpLT5nZXRGZWF0dXJlcygpLmZvcmNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJz
LmVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgID8gR2V0TWFwcGVkU2FtcGxlck5hbWVP
bGQoc2FtcGxlclVuaWZvcm0ubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogR2xzbGFu
Z0dldE1hcHBlZFNhbXBsZXJOYW1lKHNhbXBsZXJVbmlmb3JtLm5hbWUpOworICAgICAgICAgICAg
ICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAmaW5mbyA9IHZhcmlhYmxlSW5mb01hcFtz
YW1wbGVyTmFtZV07CisKKyAgICAgICAgICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3Jp
dGVJbmZvID0gd3JpdGVEZXNjcmlwdG9ySW5mb1t3cml0ZUNvdW50XTsKKworICAgICAgICAgICAg
ICAgIHdyaXRlSW5mby5zVHlwZSAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfV1JJVEVf
REVTQ1JJUFRPUl9TRVQ7CisgICAgICAgICAgICAgICAgd3JpdGVJbmZvLnBOZXh0ICAgICAgICAg
ICAgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHdyaXRlSW5mby5kc3RTZXQgICAgICAgICAg
ID0gZGVzY3JpcHRvclNldDsKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8uZHN0QmluZGluZyAg
ICAgICA9IGluZm8uYmluZGluZzsKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8uZHN0QXJyYXlF
bGVtZW50ICA9IGFycmF5T2Zmc2V0ICsgYXJyYXlFbGVtZW50OworICAgICAgICAgICAgICAgIHdy
aXRlSW5mby5kZXNjcmlwdG9yQ291bnQgID0gMTsKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8u
ZGVzY3JpcHRvclR5cGUgICA9IFZLX0RFU0NSSVBUT1JfVFlQRV9DT01CSU5FRF9JTUFHRV9TQU1Q
TEVSOworICAgICAgICAgICAgICAgIHdyaXRlSW5mby5wSW1hZ2VJbmZvICAgICAgID0gJmltYWdl
SW5mbzsKKyAgICAgICAgICAgICAgICB3cml0ZUluZm8ucEJ1ZmZlckluZm8gICAgICA9IG51bGxw
dHI7CisgICAgICAgICAgICAgICAgd3JpdGVJbmZvLnBUZXhlbEJ1ZmZlclZpZXcgPSBudWxscHRy
OworCisgICAgICAgICAgICAgICAgKyt3cml0ZUNvdW50OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgVmtEZXZpY2UgZGV2aWNlID0gY29udGV4dFZrLT5nZXREZXZpY2Uo
KTsKKworICAgIEFTU0VSVCh3cml0ZUNvdW50ID4gMCk7CisKKyAgICB2a1VwZGF0ZURlc2NyaXB0
b3JTZXRzKGRldmljZSwgd3JpdGVDb3VudCwgd3JpdGVEZXNjcmlwdG9ySW5mby5kYXRhKCksIDAs
IG51bGxwdHIpOworCisgICAgbVRleHR1cmVEZXNjcmlwdG9yc0NhY2hlLmVtcGxhY2UodGV4dHVy
ZXNEZXNjLCBkZXNjcmlwdG9yU2V0KTsKKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBQcm9ncmFtRXhlY3V0YWJsZVZrOjp1cGRhdGVEZXNj
cmlwdG9yU2V0cyhDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1h
bmRCdWZmZXIpCit7CisgICAgLy8gQ2FuIHByb2JhYmx5IHVzZSBiZXR0ZXIgZGlydHkgYml0cyBo
ZXJlLgorCisgICAgaWYgKG1EZXNjcmlwdG9yU2V0cy5lbXB0eSgpKQorICAgICAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisKKyAgICAvLyBGaW5kIHRoZSBtYXhpbXVtIG5vbi1u
dWxsIGRlc2NyaXB0b3Igc2V0LiAgVGhpcyBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBk
cml2ZXIKKyAgICAvLyB3b3JrYXJvdW5kIHRvIGJpbmQgZW1wdHkgZGVzY3JpcHRvciBzZXRzIG9u
bHkgZm9yIGdhcHMgaW4gYmV0d2VlbiAwIGFuZCBtYXggYW5kIGF2b2lkCisgICAgLy8gYmluZGlu
ZyB1bm5lY2Vzc2FyeSBlbXB0eSBkZXNjcmlwdG9yIHNldHMgZm9yIHRoZSBzZXRzIGJleW9uZCBt
YXguCisgICAgY29uc3Qgc2l6ZV90IGRlc2NyaXB0b3JTZXRTdGFydCA9IGtVbmlmb3Jtc0FuZFhm
YkRlc2NyaXB0b3JTZXRJbmRleDsKKyAgICBzaXplX3QgZGVzY3JpcHRvclNldFJhbmdlICAgICAg
ID0gMDsKKyAgICBmb3IgKHNpemVfdCBkZXNjcmlwdG9yU2V0SW5kZXggPSBkZXNjcmlwdG9yU2V0
U3RhcnQ7CisgICAgICAgICBkZXNjcmlwdG9yU2V0SW5kZXggPCBtRGVzY3JpcHRvclNldHMuc2l6
ZSgpOyArK2Rlc2NyaXB0b3JTZXRJbmRleCkKKyAgICB7CisgICAgICAgIGlmIChtRGVzY3JpcHRv
clNldHNbZGVzY3JpcHRvclNldEluZGV4XSAhPSBWS19OVUxMX0hBTkRMRSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVzY3JpcHRvclNldFJhbmdlID0gZGVzY3JpcHRvclNldEluZGV4ICsgMTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAg
ICAgICAgICAgICAgPSBjb250ZXh0VmstPmdldFN0YXRlKCk7CisgICAgY29uc3QgVmtQaXBlbGlu
ZUJpbmRQb2ludCBwaXBlbGluZUJpbmRQb2ludCA9IGdsU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFi
bGUoKS0+aXNDb21wdXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8gVktfUElQRUxJTkVfQklORF9QT0lOVF9DT01QVVRFCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZLX1BJUEVM
SU5FX0JJTkRfUE9JTlRfR1JBUEhJQ1M7CisKKyAgICBmb3IgKHVpbnQzMl90IGRlc2NyaXB0b3JT
ZXRJbmRleCA9IGRlc2NyaXB0b3JTZXRTdGFydDsgZGVzY3JpcHRvclNldEluZGV4IDwgZGVzY3Jp
cHRvclNldFJhbmdlOworICAgICAgICAgKytkZXNjcmlwdG9yU2V0SW5kZXgpCisgICAgeworICAg
ICAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY1NldCA9IG1EZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9y
U2V0SW5kZXhdOworICAgICAgICBpZiAoZGVzY1NldCA9PSBWS19OVUxMX0hBTkRMRSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0VmstPmdldFJlbmRlcmVyKCktPmdldEZlYXR1
cmVzKCkuYmluZEVtcHR5Rm9yVW51c2VkRGVzY3JpcHRvclNldHMuZW5hYmxlZCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gV29ya2Fyb3VuZCBhIGRyaXZlciBidWcgd2hlcmUgbWlzc2luZyAodGhvdWdoIHVu
dXNlZCkgZGVzY3JpcHRvciBzZXRzIGluZGljZXMgY2F1c2UKKyAgICAgICAgICAgIC8vIGxhdGVy
IHNldHMgdG8gbWlzYmVoYXZlLgorICAgICAgICAgICAgaWYgKG1FbXB0eURlc2NyaXB0b3JTZXRz
W2Rlc2NyaXB0b3JTZXRJbmRleF0gPT0gVktfTlVMTF9IQU5ETEUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29uc3Qgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXQgJmRlc2NyaXB0b3JT
ZXRMYXlvdXQgPQorICAgICAgICAgICAgICAgICAgICBtRGVzY3JpcHRvclNldExheW91dHNbZGVz
Y3JpcHRvclNldEluZGV4XS5nZXQoKTsKKworICAgICAgICAgICAgICAgIEFOR0xFX1RSWShtRHlu
YW1pY0Rlc2NyaXB0b3JQb29sc1tkZXNjcmlwdG9yU2V0SW5kZXhdLmFsbG9jYXRlU2V0cygKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dFZrLCBkZXNjcmlwdG9yU2V0TGF5b3V0LnB0cigpLCAx
LAorICAgICAgICAgICAgICAgICAgICAmbURlc2NyaXB0b3JQb29sQmluZGluZ3NbZGVzY3JpcHRv
clNldEluZGV4XSwKKyAgICAgICAgICAgICAgICAgICAgJm1FbXB0eURlc2NyaXB0b3JTZXRzW2Rl
c2NyaXB0b3JTZXRJbmRleF0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlc2NTZXQg
PSBtRW1wdHlEZXNjcmlwdG9yU2V0c1tkZXNjcmlwdG9yU2V0SW5kZXhdOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRGVmYXVsdCB1bmlmb3JtcyBhcmUgZW5jb21wYXNzZWQgaW4gYSBibG9jayBw
ZXIgc2hhZGVyIHN0YWdlLCBhbmQgdGhleSBhcmUgYXNzaWduZWQKKyAgICAgICAgLy8gdGhyb3Vn
aCBkeW5hbWljIHVuaWZvcm0gYnVmZmVycyAocmVxdWlyaW5nIGR5bmFtaWMgb2Zmc2V0cykuICBO
byBvdGhlciBkZXNjcmlwdG9yCisgICAgICAgIC8vIHJlcXVpcmVzIGEgZHluYW1pYyBvZmZzZXQu
CisgICAgICAgIGNvbnN0IHVpbnQzMl90IHVuaWZvcm1CbG9ja09mZnNldENvdW50ID0KKyAgICAg
ICAgICAgIGRlc2NyaXB0b3JTZXRJbmRleCA9PSBrVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0
SW5kZXgKKyAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihtTnVtRGVmYXVs
dFVuaWZvcm1EZXNjcmlwdG9ycykKKyAgICAgICAgICAgICAgICA6IDA7CisKKyAgICAgICAgY29t
bWFuZEJ1ZmZlci0+YmluZERlc2NyaXB0b3JTZXRzKGdldFBpcGVsaW5lTGF5b3V0KCksIHBpcGVs
aW5lQmluZFBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVzY3JpcHRvclNldEluZGV4LCAxLCAmZGVzY1NldCwgdW5pZm9ybUJsb2NrT2Zmc2V0Q291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRHluYW1pY0J1ZmZl
ck9mZnNldHMuZGF0YSgpKTsKKyAgICB9CisKKyAgICBmb3IgKHZrOjpCdWZmZXJIZWxwZXIgKmJ1
ZmZlciA6IG1EZXNjcmlwdG9yQnVmZmVyc0NhY2hlKQorICAgIHsKKyAgICAgICAgYnVmZmVyLT5y
ZXRhaW4oJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworICAgIH0KKworICAgIHJl
dHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1Byb2dyYW1FeGVjdXRhYmxlVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbUV4ZWN1dGFibGVWay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRiYTc3ZmI4YzM4MWQxMGNiOGMyMDc0NTMyMTI5NDY4MWY4ZWY0NmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1Byb2dyYW1FeGVjdXRhYmxlVmsuaApAQCAtMCwwICsxLDIwMiBAQAorLy8KKy8vIENvcHly
aWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gUHJvZ3JhbUV4ZWN1dGFibGVWay5oOiBDb2xsZWN0cyB0aGUgaW5mb3JtYXRpb24gYW5kIGlu
dGVyZmFjZXMgY29tbW9uIHRvIGJvdGggUHJvZ3JhbVZrcyBhbmQKKy8vIFByb2dyYW1QaXBlbGlu
ZVZrcyBpbiBvcmRlciB0byBleGVjdXRlL2RyYXcgd2l0aCBlaXRoZXIuCisKKyNpZm5kZWYgTElC
QU5HTEVfUkVOREVSRVJfVlVMS0FOX1BST0dSQU1FWEVDVVRBQkxFVktfSF8KKyNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfVlVMS0FOX1BST0dSQU1FWEVDVVRBQkxFVktfSF8KKworI2luY2x1ZGUg
ImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCisjaW5j
bHVkZSAibGliQU5HTEUvSW5mb0xvZy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
c2xhbmdfd3JhcHBlcl91dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9Db250ZXh0VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaGVs
cGVycy5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgU2hhZGVySW5mbyBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgU2hhZGVySW5mbygpOworICAgIH5T
aGFkZXJJbmZvKCk7CisKKyAgICBhbmdsZTo6UmVzdWx0IGluaXRTaGFkZXJzKENvbnRleHRWayAq
Y29udGV4dFZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRl
ck1hcDxzdGQ6OnN0cmluZz4gJnNoYWRlclNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTaGFkZXJNYXBJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgJnZhcmlhYmxl
SW5mb01hcCk7CisgICAgdm9pZCByZWxlYXNlKENvbnRleHRWayAqY29udGV4dFZrKTsKKworICAg
IEFOR0xFX0lOTElORSBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4gbUlzSW5pdGlhbGl6ZWQ7
IH0KKworICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8U3BpcnZCbG9iPiAmZ2V0U3BpcnZCbG9icygp
IGNvbnN0IHsgcmV0dXJuIG1TcGlydkJsb2JzOyB9CisKKyAgICAvLyBTYXZlIGFuZCBsb2FkIGlt
cGxlbWVudGF0aW9uIGZvciBHTEVTIFByb2dyYW0gQmluYXJ5IHN1cHBvcnQuCisgICAgdm9pZCBs
b2FkKGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKTsKKyAgICB2b2lkIHNhdmUoZ2w6OkJp
bmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKTsKKworICBwcml2YXRlOgorICAgIGdsOjpTaGFkZXJN
YXA8U3BpcnZCbG9iPiBtU3BpcnZCbG9iczsKKyAgICBib29sIG1Jc0luaXRpYWxpemVkID0gZmFs
c2U7Cit9OworCitjbGFzcyBQcm9ncmFtSW5mbyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQor
eworICBwdWJsaWM6CisgICAgUHJvZ3JhbUluZm8oKTsKKyAgICB+UHJvZ3JhbUluZm8oKTsKKwor
ICAgIGFuZ2xlOjpSZXN1bHQgaW5pdFByb2dyYW0oQ29udGV4dFZrICpjb250ZXh0VmssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJJbmZvICZzaGFkZXJJbmZvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVMaW5lUmFzdGVyRW11bGF0
aW9uKTsKKyAgICB2b2lkIHJlbGVhc2UoQ29udGV4dFZrICpjb250ZXh0VmspOworCisgICAgQU5H
TEVfSU5MSU5FIGJvb2wgdmFsaWQoKSBjb25zdCB7IHJldHVybiBtUHJvZ3JhbUhlbHBlci52YWxp
ZCgpOyB9CisKKyAgICB2azo6U2hhZGVyUHJvZ3JhbUhlbHBlciAqZ2V0U2hhZGVyUHJvZ3JhbSgp
IHsgcmV0dXJuICZtUHJvZ3JhbUhlbHBlcjsgfQorCisgIHByaXZhdGU6CisgICAgdms6OlNoYWRl
clByb2dyYW1IZWxwZXIgbVByb2dyYW1IZWxwZXI7CisgICAgZ2w6OlNoYWRlck1hcDx2azo6UmVm
Q291bnRlZDx2azo6U2hhZGVyQW5kU2VyaWFsPj4gbVNoYWRlcnM7Cit9OworCisvLyBTdGF0ZSBm
b3IgdGhlIGRlZmF1bHQgdW5pZm9ybSBibG9ja3MuCitzdHJ1Y3QgRGVmYXVsdFVuaWZvcm1CbG9j
ayBmaW5hbCA6IHByaXZhdGUgYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgICAgRGVmYXVsdFVuaWZv
cm1CbG9jaygpOworICAgIH5EZWZhdWx0VW5pZm9ybUJsb2NrKCk7CisKKyAgICB2azo6RHluYW1p
Y0J1ZmZlciBzdG9yYWdlOworCisgICAgLy8gU2hhZG93IGNvcGllcyBvZiB0aGUgc2hhZGVyIHVu
aWZvcm0gZGF0YS4KKyAgICBhbmdsZTo6TWVtb3J5QnVmZmVyIHVuaWZvcm1EYXRhOworCisgICAg
Ly8gU2luY2UgdGhlIGRlZmF1bHQgYmxvY2tzIGFyZSBsYWlkIG91dCBpbiBzdGQxNDAsIHRoaXMg
dGVsbHMgdXMgd2hlcmUgdG8gd3JpdGUgb24gYSBjYWxsCisgICAgLy8gdG8gYSBzZXRVbmlmb3Jt
IG1ldGhvZC4gVGhleSBhcmUgYXJyYW5nZWQgaW4gdW5pZm9ybSBsb2NhdGlvbiBvcmRlci4KKyAg
ICBzdGQ6OnZlY3RvcjxzaDo6QmxvY2tNZW1iZXJJbmZvPiB1bmlmb3JtTGF5b3V0OworfTsKKwor
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGVWaworeworICBwdWJsaWM6CisgICAgUHJvZ3JhbUV4ZWN1
dGFibGVWaygpOworICAgIHZpcnR1YWwgflByb2dyYW1FeGVjdXRhYmxlVmsoKTsKKworICAgIHZv
aWQgcmVzZXQoQ29udGV4dFZrICpjb250ZXh0VmspOworCisgICAgdm9pZCBzYXZlKGdsOjpCaW5h
cnlPdXRwdXRTdHJlYW0gKnN0cmVhbSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPHJ4OjpMaW5rRXZl
bnQ+IGxvYWQoZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pOworCisgICAgdm9pZCBjbGVh
clZhcmlhYmxlSW5mb01hcCgpOworICAgIFNoYWRlck1hcEludGVyZmFjZVZhcmlhYmxlSW5mb01h
cCAmZ2V0U2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtVmFyaWFibGVJbmZvTWFwOworICAgIH0KKworICAgIGNvbnN0IHZrOjpQaXBlbGluZUxh
eW91dCAmZ2V0UGlwZWxpbmVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtUGlwZWxpbmVMYXlvdXQu
Z2V0KCk7IH0KKyAgICBhbmdsZTo6UmVzdWx0IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IGds
OjpDb250ZXh0ICpnbENvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgJmdsRXhlY3V0YWJsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnBy
b2dyYW1TdGF0ZSk7CisKKyAgICBhbmdsZTo6UmVzdWx0IHVwZGF0ZVRleHR1cmVzRGVzY3JpcHRv
clNldChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dFZrICpjb250ZXh0VmspOwor
ICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlU2hhZGVyUmVzb3VyY2VzRGVzY3JpcHRvclNldChjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRWayAqY29udGV4dFZrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6UmVz
b3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJIZWxwZXIgKmNvbW1hbmRC
dWZmZXJIZWxwZXIpOworICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tE
ZXNjcmlwdG9yU2V0KAorICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3Rh
dGUsCisgICAgICAgIGdsOjpTaGFkZXJNYXA8RGVmYXVsdFVuaWZvcm1CbG9jaz4gJmRlZmF1bHRV
bmlmb3JtQmxvY2tzLAorICAgICAgICBDb250ZXh0VmsgKmNvbnRleHRWayk7CisKKyAgICBhbmds
ZTo6UmVzdWx0IHVwZGF0ZURlc2NyaXB0b3JTZXRzKENvbnRleHRWayAqY29udGV4dFZrLCB2azo6
Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcik7CisKKyAgcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgUHJvZ3JhbVZrOworICAgIGZyaWVuZCBjbGFzcyBQcm9ncmFtUGlwZWxpbmVWazsKKwor
ICAgIGFuZ2xlOjpSZXN1bHQgYWxsb2NhdGVEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4
dFZrLCB1aW50MzJfdCBkZXNjcmlwdG9yU2V0SW5kZXgpOworICAgIGFuZ2xlOjpSZXN1bHQgYWxs
b2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyhDb250ZXh0VmsgKmNvbnRleHRWaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGVz
Y3JpcHRvclNldEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sICpuZXdQb29sQWxsb2NhdGVkT3V0KTsKKyAgICB2b2lkIGFkZEludGVy
ZmFjZUJsb2NrRGVzY3JpcHRvclNldERlc2MoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFj
ZUJsb2NrPiAmYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RGVzY3JpcHRvclNl
dExheW91dERlc2MgKmRlc2NPdXQpOworICAgIHZvaWQgYWRkQXRvbWljQ291bnRlckJ1ZmZlckRl
c2NyaXB0b3JTZXREZXNjKAorICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6QXRvbWljQ291
bnRlckJ1ZmZlcj4gJmF0b21pY0NvdW50ZXJCdWZmZXJzLAorICAgICAgICBjb25zdCBnbDo6U2hh
ZGVyVHlwZSBzaGFkZXJUeXBlLAorICAgICAgICB2azo6RGVzY3JpcHRvclNldExheW91dERlc2Mg
KmRlc2NPdXQpOworICAgIHZvaWQgYWRkSW1hZ2VEZXNjcmlwdG9yU2V0RGVzYyhjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyAqZGVzY091dCk7CisgICAgdm9pZCBh
ZGRUZXh0dXJlRGVzY3JpcHRvclNldERlc2MoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3Jh
bVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlT2xk
UmV3cml0ZVN0cnVjdFNhbXBsZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyAqZGVzY091dCk7CisKKyAgICB2b2lkIHVw
ZGF0ZURlZmF1bHRVbmlmb3Jtc0Rlc2NyaXB0b3JTZXQoCisgICAgICAgIGNvbnN0IGdsOjpQcm9n
cmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgZ2w6OlNoYWRlck1hcDxEZWZhdWx0VW5p
Zm9ybUJsb2NrPiAmZGVmYXVsdFVuaWZvcm1CbG9ja3MsCisgICAgICAgIENvbnRleHRWayAqY29u
dGV4dFZrKTsKKyAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldElt
cGwoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0VmsgKmNvbnRleHRWayk7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXJzRGVzY3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRW
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJU
eXBlIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6
UmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb21tYW5kQnVmZmVySGVscGVyICpjb21tYW5kQnVmZmVySGVscGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6
OkludGVyZmFjZUJsb2NrPiAmYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtEZXNjcmlwdG9yVHlwZSBkZXNjcmlwdG9yVHlwZSk7CisgICAgdm9pZCB1cGRhdGVB
dG9taWNDb3VudGVyQnVmZmVyc0Rlc2NyaXB0b3JTZXQoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAm
cHJvZ3JhbVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dFZrICpjb250ZXh0VmssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlJlc291
cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJIZWxwZXIgKmNvbW1hbmRCdWZmZXJI
ZWxwZXIpOworICAgIGFuZ2xlOjpSZXN1bHQgdXBkYXRlSW1hZ2VzRGVzY3JpcHRvclNldChjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRWayAqY29u
dGV4dFZrKTsKKworICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsICJlbXB0eSIgcGxhY2Vob2xkZXIg
YnVmZmVyIGZvciB3aGVuIGEgc2hhZGVyIGhhcyBubyB1bmlmb3JtcyBvciBkb2Vzbid0CisgICAg
Ly8gdXNlIGFsbCBzbG90cyBpbiB0aGUgYXRvbWljIGNvdW50ZXIgYnVmZmVyIGFycmF5LgorICAg
IC8vCisgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2Ugd2FudCB0byBrZWVwIGEgY29t
cGF0aWJsZSBwaXBlbGluZSBsYXlvdXQgaW4gYWxsIGNhc2VzLAorICAgIC8vIGFuZCBWdWxrYW4g
ZG9lcyBub3QgdG9sZXJhdGUgaGF2aW5nIG51bGwgaGFuZGxlcyBpbiBhIGRlc2NyaXB0b3Igc2V0
LgorICAgIHZrOjpCdWZmZXJIZWxwZXIgbUVtcHR5QnVmZmVyOworCisgICAgLy8gRGVzY3JpcHRv
ciBzZXRzIGZvciB1bmlmb3JtIGJsb2NrcyBhbmQgdGV4dHVyZXMgZm9yIHRoaXMgcHJvZ3JhbS4K
KyAgICBzdGQ6OnZlY3RvcjxWa0Rlc2NyaXB0b3JTZXQ+IG1EZXNjcmlwdG9yU2V0czsKKyAgICB2
azo6RGVzY3JpcHRvclNldExheW91dEFycmF5PFZrRGVzY3JpcHRvclNldD4gbUVtcHR5RGVzY3Jp
cHRvclNldHM7CisgICAgc3RkOjp2ZWN0b3I8dms6OkJ1ZmZlckhlbHBlciAqPiBtRGVzY3JpcHRv
ckJ1ZmZlcnNDYWNoZTsKKyAgICBzaXplX3QgbU51bURlZmF1bHRVbmlmb3JtRGVzY3JpcHRvcnM7
CisKKyAgICBzdGQ6OnVub3JkZXJlZF9tYXA8dms6OlRleHR1cmVEZXNjcmlwdG9yRGVzYywgVmtE
ZXNjcmlwdG9yU2V0PiBtVGV4dHVyZURlc2NyaXB0b3JzQ2FjaGU7CisKKyAgICAvLyBXZSBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBwaXBlbGluZSBhbmQgZGVzY3JpcHRvciBzZXQgbGF5b3V0cy4g
VGhpcyBlbnN1cmVzIHRoZXkgZG9uJ3QgZ2V0CisgICAgLy8gZGVsZXRlZCB3aGlsZSB0aGlzIHBy
b2dyYW0gaXMgaW4gdXNlLgorICAgIHZrOjpCaW5kaW5nUG9pbnRlcjx2azo6UGlwZWxpbmVMYXlv
dXQ+IG1QaXBlbGluZUxheW91dDsKKyAgICB2azo6RGVzY3JpcHRvclNldExheW91dFBvaW50ZXJB
cnJheSBtRGVzY3JpcHRvclNldExheW91dHM7CisKKyAgICAvLyBLZWVwIGJpbmRpbmdzIHRvIHRo
ZSBkZXNjcmlwdG9yIHBvb2xzLiBUaGlzIGVuc3VyZXMgdGhlIHBvb2xzIHN0YXkgdmFsaWQgd2hp
bGUgdGhlIFByb2dyYW0KKyAgICAvLyBpcyBpbiB1c2UuCisgICAgdms6OkRlc2NyaXB0b3JTZXRM
YXlvdXRBcnJheTx2azo6UmVmQ291bnRlZERlc2NyaXB0b3JQb29sQmluZGluZz4gbURlc2NyaXB0
b3JQb29sQmluZGluZ3M7CisKKyAgICAvLyBTdG9yZSBkZXNjcmlwdG9yIHBvb2xzIGhlcmUuIFdl
IHN0b3JlIHRoZSBkZXNjcmlwdG9ycyBpbiB0aGUgUHJvZ3JhbSB0byBmYWNpbGl0YXRlIGRlc2Ny
aXB0b3IKKyAgICAvLyBjYWNoZSBtYW5hZ2VtZW50LiBJdCBjYW4gYWxzbyBhbGxvdyBmZXdlciBk
ZXNjcmlwdG9ycyBmb3Igc2hhZGVycyB3aGljaCB1c2UgZmV3ZXIKKyAgICAvLyB0ZXh0dXJlcy9i
dWZmZXJzLgorICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0QXJyYXk8dms6OkR5bmFtaWNEZXNj
cmlwdG9yUG9vbD4gbUR5bmFtaWNEZXNjcmlwdG9yUG9vbHM7CisKKyAgICBnbDo6U2hhZGVyVmVj
dG9yPHVpbnQzMl90PiBtRHluYW1pY0J1ZmZlck9mZnNldHM7CisKKyAgICAvLyBUT0RPOiBodHRw
Oi8vYW5nbGVidWcuY29tLzQ1MjQ6IE5lZWQgYSBkaWZmZXJlbnQgaGFzaCBrZXkgdGhhbiBhIHN0
cmluZywKKyAgICAvLyBzaW5jZSB0aGF0J3Mgc2xvdyB0byBjYWxjdWxhdGUuCisgICAgU2hhZGVy
TWFwSW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwIG1WYXJpYWJsZUluZm9NYXA7CisKKyAgICBQcm9n
cmFtSW5mbyBtRGVmYXVsdFByb2dyYW1JbmZvOworICAgIFByb2dyYW1JbmZvIG1MaW5lUmFzdGVy
UHJvZ3JhbUluZm87Cit9OworCit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fUFJPR1JBTUVYRUNVVEFCTEVWS19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9n
cmFtVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9Qcm9ncmFtVmsuY3BwCmluZGV4IDEzOTU2MmVhNGIyNDMwM2I4MjM1ZDliYjUxM2Q2
YmE4NTZlMWY2NzMuLjNlYTAyNzQzODU3NTI2MTVmNTViZDE5Mjg0NmQwYjJjMzM5ZjYxOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vUHJvZ3JhbVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5jcHAKQEAgLTE1MywyMDUgKzE1Myw2IEBA
IGFuZ2xlOjpSZXN1bHQgU3luY0RlZmF1bHRVbmlmb3JtQmxvY2soQ29udGV4dFZrICpjb250ZXh0
VmssCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi11aW50MzJfdCBH
ZXRJbnRlcmZhY2VCbG9ja0FycmF5U2l6ZShjb25zdCBzdGQ6OnZlY3RvcjxnbDo6SW50ZXJmYWNl
QmxvY2s+ICZibG9ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBidWZmZXJJbmRleCkKLXsKLSAgICBjb25zdCBnbDo6SW50ZXJmYWNlQmxvY2sgJmJsb2Nr
ID0gYmxvY2tzW2J1ZmZlckluZGV4XTsKLQotICAgIGlmICghYmxvY2suaXNBcnJheSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIEFTU0VSVChibG9jay5hcnJheUVsZW1l
bnQgPT0gMCk7Ci0KLSAgICAvLyBTZWFyY2ggY29uc2VjdXRpdmVseSB1bnRpbCBhbGwgYXJyYXkg
aW5kaWNlcyBvZiB0aGlzIGJsb2NrIGFyZSB2aXNpdGVkLgotICAgIHVpbnQzMl90IGFycmF5U2l6
ZTsKLSAgICBmb3IgKGFycmF5U2l6ZSA9IDE7IGJ1ZmZlckluZGV4ICsgYXJyYXlTaXplIDwgYmxv
Y2tzLnNpemUoKTsgKythcnJheVNpemUpCi0gICAgewotICAgICAgICBjb25zdCBnbDo6SW50ZXJm
YWNlQmxvY2sgJm5leHRCbG9jayA9IGJsb2Nrc1tidWZmZXJJbmRleCArIGFycmF5U2l6ZV07Ci0K
LSAgICAgICAgaWYgKG5leHRCbG9jay5hcnJheUVsZW1lbnQgIT0gYXJyYXlTaXplKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEl0J3MgdW5l
eHBlY3RlZCBmb3IgYW4gYXJyYXkgdG8gc3RhcnQgYXQgYSBub24temVybyBhcnJheSBzaXplLCBz
byB3ZSBjYW4gYWx3YXlzIHJlbHkgb24KLSAgICAgICAgLy8gdGhlIHNlcXVlbnRpYWwgYGFycmF5
RWxlbWVudGBzIHRvIGJlbG9uZyB0byB0aGUgc2FtZSBibG9jay4KLSAgICAgICAgQVNTRVJUKG5l
eHRCbG9jay5uYW1lID09IGJsb2NrLm5hbWUpOwotICAgICAgICBBU1NFUlQobmV4dEJsb2NrLmlz
QXJyYXkpOwotICAgIH0KLQotICAgIHJldHVybiBhcnJheVNpemU7Ci19Ci0KLXZvaWQgQWRkSW50
ZXJmYWNlQmxvY2tEZXNjcmlwdG9yU2V0RGVzYyhjb25zdCBzdGQ6OnZlY3RvcjxnbDo6SW50ZXJm
YWNlQmxvY2s+ICZibG9ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgYmluZGluZ1N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrRGVzY3JpcHRvclR5cGUgZGVzY1R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0
KQotewotICAgIHVpbnQzMl90IGJpbmRpbmdJbmRleCA9IDA7Ci0gICAgZm9yICh1aW50MzJfdCBi
dWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYmxvY2tzLnNpemUoKTspCi0gICAgewotICAg
ICAgICBjb25zdCB1aW50MzJfdCBhcnJheVNpemUgPSBHZXRJbnRlcmZhY2VCbG9ja0FycmF5U2l6
ZShibG9ja3MsIGJ1ZmZlckluZGV4KTsKLSAgICAgICAgVmtTaGFkZXJTdGFnZUZsYWdzIGFjdGl2
ZVN0YWdlcyA9Ci0gICAgICAgICAgICBnbF92azo6R2V0U2hhZGVyU3RhZ2VGbGFncyhibG9ja3Nb
YnVmZmVySW5kZXhdLmFjdGl2ZVNoYWRlcnMoKSk7Ci0KLSAgICAgICAgZGVzY091dC0+dXBkYXRl
KGJpbmRpbmdTdGFydCArIGJpbmRpbmdJbmRleCwgZGVzY1R5cGUsIGFycmF5U2l6ZSwgYWN0aXZl
U3RhZ2VzKTsKLQotICAgICAgICBidWZmZXJJbmRleCArPSBhcnJheVNpemU7Ci0gICAgICAgICsr
YmluZGluZ0luZGV4OwotICAgIH0KLX0KLQotdm9pZCBBZGRBdG9taWNDb3VudGVyQnVmZmVyRGVz
Y3JpcHRvclNldERlc2MoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkF0b21pY0NvdW50ZXJC
dWZmZXI+ICZhdG9taWNDb3VudGVyQnVmZmVycywKLSAgICB1aW50MzJfdCBiaW5kaW5nU3RhcnQs
Ci0gICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjICpkZXNjT3V0KQotewotICAgIGlmIChh
dG9taWNDb3VudGVyQnVmZmVycy5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFZrU2hhZGVyU3RhZ2VGbGFncyBhY3RpdmVTdGFnZXMgPSAwOwotICAgIGZvciAo
Y29uc3QgZ2w6OkF0b21pY0NvdW50ZXJCdWZmZXIgJmJ1ZmZlciA6IGF0b21pY0NvdW50ZXJCdWZm
ZXJzKQotICAgIHsKLSAgICAgICAgYWN0aXZlU3RhZ2VzIHw9IGdsX3ZrOjpHZXRTaGFkZXJTdGFn
ZUZsYWdzKGJ1ZmZlci5hY3RpdmVTaGFkZXJzKCkpOwotICAgIH0KLQotICAgIC8vIEEgc2luZ2xl
IHN0b3JhZ2UgYnVmZmVyIGFycmF5IGlzIHVzZWQgZm9yIGFsbCBzdGFnZXMgZm9yIHNpbXBsaWNp
dHkuCi0gICAgZGVzY091dC0+dXBkYXRlKGJpbmRpbmdTdGFydCwgVktfREVTQ1JJUFRPUl9UWVBF
X1NUT1JBR0VfQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICBnbDo6SU1QTEVNRU5UQVRJT05f
TUFYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMsIGFjdGl2ZVN0YWdlcyk7Ci19Ci0KLXZvaWQgQWRk
SW1hZ2VEZXNjcmlwdG9yU2V0RGVzYyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmluZGluZ1N0YXJ0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0
RGVzYyAqZGVzY091dCkKLXsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6SW1hZ2VCaW5kaW5n
PiAmaW1hZ2VCaW5kaW5ncyA9IHByb2dyYW1TdGF0ZS5nZXRJbWFnZUJpbmRpbmdzKCk7Ci0gICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICZ1bmlmb3JtcyAgICAgPSBwcm9n
cmFtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKLQotICAgIGZvciAodWludDMyX3QgaW1hZ2VJbmRleCA9
IDA7IGltYWdlSW5kZXggPCBpbWFnZUJpbmRpbmdzLnNpemUoKTsgKytpbWFnZUluZGV4KQotICAg
IHsKLSAgICAgICAgY29uc3QgZ2w6OkltYWdlQmluZGluZyAmaW1hZ2VCaW5kaW5nID0gaW1hZ2VC
aW5kaW5nc1tpbWFnZUluZGV4XTsKLQotICAgICAgICB1aW50MzJfdCB1bmlmb3JtSW5kZXggPSBw
cm9ncmFtU3RhdGUuZ2V0VW5pZm9ybUluZGV4RnJvbUltYWdlSW5kZXgoaW1hZ2VJbmRleCk7Ci0g
ICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZpbWFnZVVuaWZvcm0gPSB1bmlmb3Jtc1t1
bmlmb3JtSW5kZXhdOwotCi0gICAgICAgIC8vIFRoZSBmcm9udC1lbmQgYWx3YXlzIGJpbmRzIGFy
cmF5IGltYWdlIHVuaXRzIHNlcXVlbnRpYWxseS4KLSAgICAgICAgdWludDMyX3QgYXJyYXlTaXpl
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGltYWdlQmluZGluZy5ib3VuZEltYWdlVW5pdHMuc2l6
ZSgpKTsKLSAgICAgICAgVmtTaGFkZXJTdGFnZUZsYWdzIGFjdGl2ZVN0YWdlcyA9IGdsX3ZrOjpH
ZXRTaGFkZXJTdGFnZUZsYWdzKGltYWdlVW5pZm9ybS5hY3RpdmVTaGFkZXJzKCkpOwotCi0gICAg
ICAgIHVpbnQzMl90IGJpbmRpbmdJbmRleCA9IGJpbmRpbmdTdGFydCArIGltYWdlSW5kZXg7Ci0g
ICAgICAgIGRlc2NPdXQtPnVwZGF0ZShiaW5kaW5nSW5kZXgsIFZLX0RFU0NSSVBUT1JfVFlQRV9T
VE9SQUdFX0lNQUdFLCBhcnJheVNpemUsIGFjdGl2ZVN0YWdlcyk7Ci0gICAgfQotfQotCi12b2lk
IEFkZFRleHR1cmVEZXNjcmlwdG9yU2V0RGVzYyhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9n
cmFtU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZU9sZFJl
d3JpdGVTdHJ1Y3RTYW1wbGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZr
OjpEZXNjcmlwdG9yU2V0TGF5b3V0RGVzYyAqZGVzY091dCkKLXsKLSAgICB1aW50MzJfdCBiaW5k
aW5nSW5kZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPGdsOjpTYW1wbGVyQmluZGluZz4gJnNhbXBsZXJCaW5kaW5ncyA9IHByb2dy
YW1TdGF0ZS5nZXRTYW1wbGVyQmluZGluZ3MoKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6
TGlua2VkVW5pZm9ybT4gJnVuaWZvcm1zICAgICAgICAgPSBwcm9ncmFtU3RhdGUuZ2V0VW5pZm9y
bXMoKTsKLQotICAgIGZvciAodWludDMyX3QgdGV4dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4
IDwgc2FtcGxlckJpbmRpbmdzLnNpemUoKTsgKyt0ZXh0dXJlSW5kZXgpCi0gICAgewotICAgICAg
ICBjb25zdCBnbDo6U2FtcGxlckJpbmRpbmcgJnNhbXBsZXJCaW5kaW5nID0gc2FtcGxlckJpbmRp
bmdzW3RleHR1cmVJbmRleF07Ci0KLSAgICAgICAgdWludDMyX3QgdW5pZm9ybUluZGV4ID0gcHJv
Z3JhbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21TYW1wbGVySW5kZXgodGV4dHVyZUluZGV4KTsK
LSAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJnNhbXBsZXJVbmlmb3JtID0gdW5pZm9y
bXNbdW5pZm9ybUluZGV4XTsKLQotICAgICAgICAvLyBUaGUgZnJvbnQtZW5kIGFsd2F5cyBiaW5k
cyBhcnJheSBzYW1wbGVyIHVuaXRzIHNlcXVlbnRpYWxseS4KLSAgICAgICAgdWludDMyX3QgYXJy
YXlTaXplID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVy
ZVVuaXRzLnNpemUoKSk7Ci0gICAgICAgIFZrU2hhZGVyU3RhZ2VGbGFncyBhY3RpdmVTdGFnZXMg
PQotICAgICAgICAgICAgZ2xfdms6OkdldFNoYWRlclN0YWdlRmxhZ3Moc2FtcGxlclVuaWZvcm0u
YWN0aXZlU2hhZGVycygpKTsKLQotICAgICAgICBpZiAoIXVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1w
bGVycykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gMkQgYXJyYXlzIGFyZSBzcGxpdCBpbnRv
IG11bHRpcGxlIDFEIGFycmF5cyB3aGVuIGdlbmVyYXRpbmcKLSAgICAgICAgICAgIC8vIExpbmtl
ZFVuaWZvcm1zLiBTaW5jZSB0aGV5IGFyZSBmbGF0dGVuZWQgaW50byBvbmUgYXJyYXksIGlnbm9y
ZSB0aGUKLSAgICAgICAgICAgIC8vIG5vbnplcm8gZWxlbWVudHMgYW5kIGV4cGFuZCB0aGUgYXJy
YXkgdG8gdGhlIHRvdGFsIGFycmF5IHNpemUuCi0gICAgICAgICAgICBpZiAoZ2w6OlNhbXBsZXJO
YW1lQ29udGFpbnNOb25aZXJvQXJyYXlFbGVtZW50KHNhbXBsZXJVbmlmb3JtLm5hbWUpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBvdXRlckFycmF5U2l6ZSA6IHNhbXBsZXJVbmlm
b3JtLm91dGVyQXJyYXlTaXplcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhcnJh
eVNpemUgKj0gb3V0ZXJBcnJheVNpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICBkZXNjT3V0LT51cGRhdGUoYmluZGluZ0luZGV4KyssIFZLX0RFU0NSSVBUT1JfVFlQRV9D
T01CSU5FRF9JTUFHRV9TQU1QTEVSLCBhcnJheVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBhY3RpdmVTdGFnZXMpOwotICAgIH0KLX0KLQotdm9pZCBXcml0ZUJ1ZmZlckRlc2NyaXB0b3JT
ZXRCaW5kaW5nKGNvbnN0IGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYnVm
ZmVyQmluZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rldmlj
ZVNpemUgbWF4U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rl
c2NyaXB0b3JTZXQgZGVzY1NldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGJpbmRpbmdJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBhcnJheUVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmtEZXZpY2VTaXplIHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGVzY3JpcHRvckJ1ZmZlcklu
Zm8gKmJ1ZmZlckluZm9PdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmtXcml0ZURlc2NyaXB0b3JTZXQgKndyaXRlSW5mb091dCkKLXsKLSAgICBnbDo6QnVmZmVyICpi
dWZmZXIgPSBidWZmZXJCaW5kaW5nLmdldCgpOwotICAgIEFTU0VSVChidWZmZXIgIT0gbnVsbHB0
cik7Ci0KLSAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBubyBwb3NzaWJsZSB1bmRlci9vdmVyZmxv
dyB3aXRoIGJpbmRpbmcgc2l6ZS4KLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihWa0RldmljZVNp
emUpID49IHNpemVvZihidWZmZXJCaW5kaW5nLmdldFNpemUoKSksCi0gICAgICAgICAgICAgICAg
ICAiVmtEZXZpY2VTaXplIHRvbyBzbWFsbCIpOwotICAgIEFTU0VSVChidWZmZXJCaW5kaW5nLmdl
dFNpemUoKSA+PSAwKTsKLQotICAgIEJ1ZmZlclZrICpidWZmZXJWayAgICAgICAgICAgICA9IHZr
OjpHZXRJbXBsKGJ1ZmZlcik7Ci0gICAgVmtEZXZpY2VTaXplIG9mZnNldCAgICAgICAgICAgID0g
YnVmZmVyQmluZGluZy5nZXRPZmZzZXQoKTsKLSAgICBWa0RldmljZVNpemUgc2l6ZSAgICAgICAg
ICAgICAgPSBidWZmZXJCaW5kaW5nLmdldFNpemUoKTsKLSAgICB2azo6QnVmZmVySGVscGVyICZi
dWZmZXJIZWxwZXIgPSBidWZmZXJWay0+Z2V0QnVmZmVyKCk7Ci0KLSAgICAvLyBJZiBzaXplIGlz
IDAsIHdlIGNhbid0IGFsd2F5cyB1c2UgVktfV0hPTEVfU0laRSAob3IgYnVmZmVySGVscGVyLmdl
dFNpemUoKSksIGFzIHRoZQotICAgIC8vIGJhY2tpbmcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhh
biBtYXgqQnVmZmVyUmFuZ2UuICBJbiB0aGF0IGNhc2UsIHdlIHVzZSB0aGUgbWluaW11bSBvZgot
ICAgIC8vIHRoZSBiYWNraW5nIGJ1ZmZlciBzaXplICh3aGF0J3MgbGVmdCBhZnRlciBvZmZzZXQp
IGFuZCB0aGUgYnVmZmVyIHNpemUgYXMgZGVmaW5lZCBieSB0aGUKLSAgICAvLyBzaGFkZXIuICBU
aGF0IGxhdHRlciBpcyBvbmx5IHZhbGlkIGZvciBVQk9zLCBhcyBTU0JPcyBtYXkgaGF2ZSB2YXJp
YWJsZSBsZW5ndGggYXJyYXlzLgotICAgIHNpemUgPSBzaXplID4gMCA/IHNpemUgOiAoYnVmZmVy
SGVscGVyLmdldFNpemUoKSAtIG9mZnNldCk7Ci0gICAgaWYgKG1heFNpemUgPiAwKQotICAgIHsK
LSAgICAgICAgc2l6ZSA9IHN0ZDo6bWluKHNpemUsIG1heFNpemUpOwotICAgIH0KLQotICAgIC8v
IElmIHJlcXVpcmVkT2Zmc2V0QWxpZ25tZW50IGlzIDAsIHRoZSBidWZmZXIgb2Zmc2V0IGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSB0aGUgbmVjZXNzYXJ5Ci0gICAgLy8gYWxpZ25tZW50IHRocm91Z2gg
b3RoZXIgbWVhbnMgKHRoZSBiYWNrZW5kIHNwZWNpZnlpbmcgdGhlIGFsaWdubWVudCB0aHJvdWdo
IGEgR0xFUyBsaW1pdCB0aGF0Ci0gICAgLy8gdGhlIGZyb250ZW5kIHRoZW4gZW5mb3JjZXMpLiAg
SWYgaXQncyBub3QgMCwgd2UgbmVlZCB0byBiaW5kIHRoZSBidWZmZXIgYXQgYW4gb2Zmc2V0IHRo
YXQncwotICAgIC8vIGFsaWduZWQuICBUaGUgZGlmZmVyZW5jZSBpbiBvZmZzZXRzIGlzIGNvbW11
bmljYXRlZCB0byB0aGUgc2hhZGVyIHZpYSBkcml2ZXIgdW5pZm9ybXMuCi0gICAgaWYgKHJlcXVp
cmVkT2Zmc2V0QWxpZ25tZW50KQotICAgIHsKLSAgICAgICAgVmtEZXZpY2VTaXplIGFsaWduZWRP
ZmZzZXQgPSAob2Zmc2V0IC8gcmVxdWlyZWRPZmZzZXRBbGlnbm1lbnQpICogcmVxdWlyZWRPZmZz
ZXRBbGlnbm1lbnQ7Ci0gICAgICAgIFZrRGV2aWNlU2l6ZSBvZmZzZXREaWZmICAgID0gb2Zmc2V0
IC0gYWxpZ25lZE9mZnNldDsKLQotICAgICAgICBvZmZzZXQgPSBhbGlnbmVkT2Zmc2V0OwotICAg
ICAgICBzaXplICs9IG9mZnNldERpZmY7Ci0gICAgfQotCi0gICAgYnVmZmVySW5mb091dC0+YnVm
ZmVyID0gYnVmZmVySGVscGVyLmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOwotICAgIGJ1ZmZlcklu
Zm9PdXQtPm9mZnNldCA9IG9mZnNldDsKLSAgICBidWZmZXJJbmZvT3V0LT5yYW5nZSAgPSBzaXpl
OwotCi0gICAgd3JpdGVJbmZvT3V0LT5zVHlwZSAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZ
UEVfV1JJVEVfREVTQ1JJUFRPUl9TRVQ7Ci0gICAgd3JpdGVJbmZvT3V0LT5wTmV4dCAgICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICB3cml0ZUluZm9PdXQtPmRzdFNldCAgICAgICAgICAgPSBkZXNj
U2V0OwotICAgIHdyaXRlSW5mb091dC0+ZHN0QmluZGluZyAgICAgICA9IGJpbmRpbmdJbmRleDsK
LSAgICB3cml0ZUluZm9PdXQtPmRzdEFycmF5RWxlbWVudCAgPSBhcnJheUVsZW1lbnQ7Ci0gICAg
d3JpdGVJbmZvT3V0LT5kZXNjcmlwdG9yQ291bnQgID0gMTsKLSAgICB3cml0ZUluZm9PdXQtPmRl
c2NyaXB0b3JUeXBlICAgPSBkZXNjVHlwZTsKLSAgICB3cml0ZUluZm9PdXQtPnBJbWFnZUluZm8g
ICAgICAgPSBudWxscHRyOwotICAgIHdyaXRlSW5mb091dC0+cEJ1ZmZlckluZm8gICAgICA9IGJ1
ZmZlckluZm9PdXQ7Ci0gICAgd3JpdGVJbmZvT3V0LT5wVGV4ZWxCdWZmZXJWaWV3ID0gbnVsbHB0
cjsKLSAgICBBU1NFUlQod3JpdGVJbmZvT3V0LT5wQnVmZmVySW5mb1swXS5idWZmZXIgIT0gVktf
TlVMTF9IQU5ETEUpOwotfQotCiBjbGFzcyBTdGQxNDBCbG9ja0xheW91dEVuY29kZXJGYWN0b3J5
IDogcHVibGljIGdsOjpDdXN0b21CbG9ja0xheW91dEVuY29kZXJGYWN0b3J5CiB7CiAgIHB1Ymxp
YzoKQEAgLTM1OSwxNjQgKzE2MCwxMiBAQCBjbGFzcyBTdGQxNDBCbG9ja0xheW91dEVuY29kZXJG
YWN0b3J5IDogcHVibGljIGdsOjpDdXN0b21CbG9ja0xheW91dEVuY29kZXJGYWN0bwogfTsKIH0g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotLy8gUHJvZ3JhbVZrOjpTaGFkZXJJbmZvIGltcGxl
bWVudGF0aW9uLgotUHJvZ3JhbVZrOjpTaGFkZXJJbmZvOjpTaGFkZXJJbmZvKCkge30KLQotUHJv
Z3JhbVZrOjpTaGFkZXJJbmZvOjp+U2hhZGVySW5mbygpID0gZGVmYXVsdDsKLQotYW5nbGU6OlJl
c3VsdCBQcm9ncmFtVms6OlNoYWRlckluZm86OmluaXRTaGFkZXJzKAotICAgIENvbnRleHRWayAq
Y29udGV4dFZrLAotICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJT
b3VyY2VzLAotICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAmdmFyaWFi
bGVJbmZvTWFwLAotICAgIGdsOjpTaGFkZXJNYXA8U3BpcnZCbG9iPiAqc3BpcnZCbG9ic091dCkK
LXsKLSAgICBBU1NFUlQoIXZhbGlkKCkpOwotCi0gICAgQU5HTEVfVFJZKEdsc2xhbmdXcmFwcGVy
Vms6OkdldFNoYWRlckNvZGUoY29udGV4dFZrLCBjb250ZXh0VmstPmdldENhcHMoKSwgc2hhZGVy
U291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZUluZm9NYXAsIHNwaXJ2QmxvYnNPdXQpKTsKLQotICAgIG1Jc0luaXRpYWxpemVkID0g
dHJ1ZTsKLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLXZvaWQgUHJv
Z3JhbVZrOjpTaGFkZXJJbmZvOjpyZWxlYXNlKENvbnRleHRWayAqY29udGV4dFZrKQotewotICAg
IGZvciAoU3BpcnZCbG9iICZzcGlydkJsb2IgOiBtU3BpcnZCbG9icykKLSAgICB7Ci0gICAgICAg
IHNwaXJ2QmxvYi5jbGVhcigpOwotICAgIH0KLSAgICBtSXNJbml0aWFsaXplZCA9IGZhbHNlOwot
fQotCi0vLyBQcm9ncmFtVms6OlByb2dyYW1JbmZvIGltcGxlbWVudGF0aW9uLgotUHJvZ3JhbVZr
OjpQcm9ncmFtSW5mbzo6UHJvZ3JhbUluZm8oKSB7fQotCi1Qcm9ncmFtVms6OlByb2dyYW1JbmZv
Ojp+UHJvZ3JhbUluZm8oKSA9IGRlZmF1bHQ7Ci0KLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjpQ
cm9ncmFtSW5mbzo6aW5pdFByb2dyYW0oQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckluZm8g
JnNoYWRlckluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZW5hYmxlTGluZVJhc3RlckVtdWxhdGlvbikKLXsKLSAgICBjb25zdCBnbDo6
U2hhZGVyTWFwPFNwaXJ2QmxvYj4gJnNwaXJ2QmxvYnMgPSBzaGFkZXJJbmZvLmdldFNwaXJ2Qmxv
YnMoKTsKLQotICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsOjpB
bGxTaGFkZXJUeXBlcygpKQotICAgIHsKLSAgICAgICAgY29uc3QgU3BpcnZCbG9iICZzcGlydkJs
b2IgPSBzcGlydkJsb2JzW3NoYWRlclR5cGVdOwotCi0gICAgICAgIGlmICghc3BpcnZCbG9iLmVt
cHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFOR0xFX1RSWSh2azo6SW5pdFNoYWRlckFu
ZFNlcmlhbChjb250ZXh0VmssICZtU2hhZGVyc1tzaGFkZXJUeXBlXS5nZXQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGlydkJsb2IuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaXJ2QmxvYi5z
aXplKCkgKiBzaXplb2YodWludDMyX3QpKSk7Ci0KLSAgICAgICAgICAgIG1Qcm9ncmFtSGVscGVy
LnNldFNoYWRlcihzaGFkZXJUeXBlLCAmbVNoYWRlcnNbc2hhZGVyVHlwZV0pOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKGVuYWJsZUxpbmVSYXN0ZXJFbXVsYXRpb24pCi0gICAgewotICAg
ICAgICBtUHJvZ3JhbUhlbHBlci5lbmFibGVTcGVjaWFsaXphdGlvbkNvbnN0YW50KAotICAgICAg
ICAgICAgc2g6OnZrOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50SWQ6OkxpbmVSYXN0ZXJFbXVsYXRp
b24pOwotICAgIH0KLQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQot
dm9pZCBQcm9ncmFtVms6OlByb2dyYW1JbmZvOjpyZWxlYXNlKENvbnRleHRWayAqY29udGV4dFZr
KQotewotICAgIG1Qcm9ncmFtSGVscGVyLnJlbGVhc2UoY29udGV4dFZrKTsKLQotICAgIGZvciAo
dms6OlJlZkNvdW50ZWQ8dms6OlNoYWRlckFuZFNlcmlhbD4gJnNoYWRlciA6IG1TaGFkZXJzKQot
ICAgIHsKLSAgICAgICAgc2hhZGVyLmdldCgpLmRlc3Ryb3koY29udGV4dFZrLT5nZXREZXZpY2Uo
KSk7Ci0gICAgfQotfQotCi1hbmdsZTo6UmVzdWx0IFByb2dyYW1Wazo6bG9hZFNwaXJ2QmxvYihD
b250ZXh0VmsgKmNvbnRleHRWaywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCi17Ci0g
ICAgLy8gUmVhZCBpbiBzaGFkZXIgY29kZXMgZm9yIGFsbCBzaGFkZXIgdHlwZXMKLSAgICBmb3Ig
KGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkK
LSAgICB7Ci0gICAgICAgIC8vIFJlYWQgdGhlIHNoYWRlciBzb3VyY2UKLSAgICAgICAgbVNoYWRl
clNvdXJjZXNbc2hhZGVyVHlwZV0gPSBzdHJlYW0tPnJlYWRTdHJpbmcoKTsKLQotICAgICAgICBT
cGlydkJsb2IgKnNwaXJ2QmxvYiA9ICZtU2hhZGVySW5mby5nZXRTcGlydkJsb2JzKClbc2hhZGVy
VHlwZV07Ci0KLSAgICAgICAgLy8gUmVhZCB0aGUgU1BJUi1WCi0gICAgICAgIHN0cmVhbS0+cmVh
ZEludFZlY3Rvcjx1aW50MzJfdD4oc3BpcnZCbG9iKTsKLSAgICB9Ci0KLSAgICAvLyBSZWFkIHRo
ZSBleHBlY3RlZCBiaW5kaW5ncwotICAgIHNpemVfdCBpbmZvQ291bnQgPSBzdHJlYW0tPnJlYWRJ
bnQ8c2l6ZV90PigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5mb0NvdW50OyArK2kp
Ci0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyB2YXJOYW1lID0gc3RyZWFtLT5yZWFkU3RyaW5n
KCk7Ci0gICAgICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyBpbmZvOwotCi0gICAgICAg
IGluZm8uZGVzY3JpcHRvclNldCA9IHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKLSAgICAg
ICAgaW5mby5iaW5kaW5nICAgICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90PigpOwotICAg
ICAgICBpbmZvLmFjdGl2ZVN0YWdlcyAgPSBnbDo6U2hhZGVyQml0U2V0KHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKSkpOwotICAgICAgICBpbmZvLnhmYkJ1
ZmZlciAgICAgPSBzdHJlYW0tPnJlYWRJbnQ8dWludDMyX3Q+KCk7Ci0gICAgICAgIGluZm8ueGZi
T2Zmc2V0ICAgICA9IHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKLSAgICAgICAgaW5mby54
ZmJTdHJpZGUgICAgID0gc3RyZWFtLT5yZWFkSW50PHVpbnQzMl90PigpOwotICAgICAgICBmb3Ig
KGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbDo6QWxsU2hhZGVyVHlwZXMoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaW5mby5sb2NhdGlvbltzaGFkZXJUeXBlXSAgPSBzdHJlYW0tPnJl
YWRJbnQ8dWludDMyX3Q+KCk7Ci0gICAgICAgICAgICBpbmZvLmNvbXBvbmVudFtzaGFkZXJUeXBl
XSA9IHN0cmVhbS0+cmVhZEludDx1aW50MzJfdD4oKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1W
YXJpYWJsZUluZm9NYXBbdmFyTmFtZV0gPSBpbmZvOwotICAgIH0KLQotICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotdm9pZCBQcm9ncmFtVms6OnNhdmVTcGlydkJsb2Io
Z2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQorLy8gUHJvZ3JhbVZrIGltcGxlbWVudGF0
aW9uLgorUHJvZ3JhbVZrOjpQcm9ncmFtVmsoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUp
IDogUHJvZ3JhbUltcGwoc3RhdGUpCiB7Ci0gICAgLy8gV3JpdGUgb3V0IHNoYWRlciBjb2RlcyBm
b3IgYWxsIHNoYWRlciB0eXBlcwotICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVy
VHlwZSA6IGdsOjpBbGxTaGFkZXJUeXBlcygpKQotICAgIHsKLSAgICAgICAgLy8gV3JpdGUgdGhl
IHNoYWRlciBzb3VyY2UKLSAgICAgICAgc3RyZWFtLT53cml0ZVN0cmluZyhtU2hhZGVyU291cmNl
c1tzaGFkZXJUeXBlXSk7Ci0KLSAgICAgICAgY29uc3QgU3BpcnZCbG9iICZzcGlydkJsb2IgPSBt
U2hhZGVySW5mby5nZXRTcGlydkJsb2JzKClbc2hhZGVyVHlwZV07Ci0KLSAgICAgICAgLy8gV3Jp
dGUgdGhlIFNQSVItVgotICAgICAgICBzdHJlYW0tPndyaXRlSW50VmVjdG9yKHNwaXJ2QmxvYik7
Ci0gICAgfQotCi0gICAgLy8gV3JpdGUgdGhlIGV4cGVjdGVkIGJpbmRpbmdzCi0gICAgc3RyZWFt
LT53cml0ZUludChtVmFyaWFibGVJbmZvTWFwLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRv
ICZuYW1lSW5mbyA6IG1WYXJpYWJsZUluZm9NYXApCi0gICAgewotICAgICAgICBzdHJlYW0tPndy
aXRlU3RyaW5nKG5hbWVJbmZvLmZpcnN0KTsKLSAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVn
T25lKG5hbWVJbmZvLnNlY29uZC5kZXNjcmlwdG9yU2V0KTsKLSAgICAgICAgc3RyZWFtLT53cml0
ZUludE9yTmVnT25lKG5hbWVJbmZvLnNlY29uZC5iaW5kaW5nKTsKLSAgICAgICAgc3RyZWFtLT53
cml0ZUludE9yTmVnT25lKG5hbWVJbmZvLnNlY29uZC5hY3RpdmVTdGFnZXMuYml0cygpKTsKLSAg
ICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25lKG5hbWVJbmZvLnNlY29uZC54ZmJCdWZmZXIp
OwotICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUobmFtZUluZm8uc2Vjb25kLnhmYk9m
ZnNldCk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZShuYW1lSW5mby5zZWNvbmQu
eGZiU3RyaWRlKTsKLSAgICAgICAgZm9yIChnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2w6
OkFsbFNoYWRlclR5cGVzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJ
bnRPck5lZ09uZShuYW1lSW5mby5zZWNvbmQubG9jYXRpb25bc2hhZGVyVHlwZV0pOwotICAgICAg
ICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25lKG5hbWVJbmZvLnNlY29uZC5jb21wb25lbnRb
c2hhZGVyVHlwZV0pOwotICAgICAgICB9Ci0gICAgfQorICAgIEdsc2xhbmdXcmFwcGVyVms6OlJl
c2V0R2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJbmZvKCZtR2xzbGFuZ1Byb2dyYW1JbnRlcmZhY2VJ
bmZvKTsKIH0KIAotLy8gUHJvZ3JhbVZrIGltcGxlbWVudGF0aW9uLgotUHJvZ3JhbVZrOjpEZWZh
dWx0VW5pZm9ybUJsb2NrOjpEZWZhdWx0VW5pZm9ybUJsb2NrKCkge30KLQotUHJvZ3JhbVZrOjpE
ZWZhdWx0VW5pZm9ybUJsb2NrOjp+RGVmYXVsdFVuaWZvcm1CbG9jaygpID0gZGVmYXVsdDsKLQot
UHJvZ3JhbVZrOjpQcm9ncmFtVmsoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpCi0gICAg
OiBQcm9ncmFtSW1wbChzdGF0ZSksCi0gICAgICBtRHluYW1pY0J1ZmZlck9mZnNldHN7fSwKLSAg
ICAgIG1TdG9yYWdlQmxvY2tCaW5kaW5nc09mZnNldCgwKSwKLSAgICAgIG1BdG9taWNDb3VudGVy
QnVmZmVyQmluZGluZ3NPZmZzZXQoMCksCi0gICAgICBtSW1hZ2VCaW5kaW5nc09mZnNldCgwKQot
e30KLQogUHJvZ3JhbVZrOjp+UHJvZ3JhbVZrKCkgPSBkZWZhdWx0OwogCiB2b2lkIFByb2dyYW1W
azo6ZGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKQEAgLTUyNyw0MCArMTc2LDE4
IEBAIHZvaWQgUHJvZ3JhbVZrOjpkZXN0cm95KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQog
CiB2b2lkIFByb2dyYW1Wazo6cmVzZXQoQ29udGV4dFZrICpjb250ZXh0VmspCiB7Ci0gICAgZm9y
IChhdXRvICZkZXNjcmlwdG9yU2V0TGF5b3V0IDogbURlc2NyaXB0b3JTZXRMYXlvdXRzKQotICAg
IHsKLSAgICAgICAgZGVzY3JpcHRvclNldExheW91dC5yZXNldCgpOwotICAgIH0KLSAgICBtUGlw
ZWxpbmVMYXlvdXQucmVzZXQoKTsKLQogICAgIFJlbmRlcmVyVmsgKnJlbmRlcmVyID0gY29udGV4
dFZrLT5nZXRSZW5kZXJlcigpOwogCi0gICAgZm9yIChhdXRvICZ1bmlmb3JtQmxvY2sgOiBtRGVm
YXVsdFVuaWZvcm1CbG9ja3MpCi0gICAgewotICAgICAgICB1bmlmb3JtQmxvY2suc3RvcmFnZS5y
ZWxlYXNlKHJlbmRlcmVyKTsKLSAgICB9Ci0KICAgICBtU2hhZGVySW5mby5yZWxlYXNlKGNvbnRl
eHRWayk7Ci0gICAgbURlZmF1bHRQcm9ncmFtSW5mby5yZWxlYXNlKGNvbnRleHRWayk7Ci0gICAg
bUxpbmVSYXN0ZXJQcm9ncmFtSW5mby5yZWxlYXNlKGNvbnRleHRWayk7CiAKLSAgICBtRW1wdHlC
dWZmZXIucmVsZWFzZShyZW5kZXJlcik7Ci0KLSAgICBtRGVzY3JpcHRvclNldHMuY2xlYXIoKTsK
LSAgICBtRW1wdHlEZXNjcmlwdG9yU2V0cy5maWxsKFZLX05VTExfSEFORExFKTsKLQotICAgIGZv
ciAodms6OlJlZkNvdW50ZWREZXNjcmlwdG9yUG9vbEJpbmRpbmcgJmJpbmRpbmcgOiBtRGVzY3Jp
cHRvclBvb2xCaW5kaW5ncykKKyAgICBmb3IgKGF1dG8gJnVuaWZvcm1CbG9jayA6IG1EZWZhdWx0
VW5pZm9ybUJsb2NrcykKICAgICB7Ci0gICAgICAgIGJpbmRpbmcucmVzZXQoKTsKKyAgICAgICAg
dW5pZm9ybUJsb2NrLnN0b3JhZ2UucmVsZWFzZShyZW5kZXJlcik7CiAgICAgfQogCi0gICAgZm9y
ICh2azo6RHluYW1pY0Rlc2NyaXB0b3JQb29sICZkZXNjcmlwdG9yUG9vbCA6IG1EeW5hbWljRGVz
Y3JpcHRvclBvb2xzKQotICAgIHsKLSAgICAgICAgZGVzY3JpcHRvclBvb2wucmVsZWFzZShjb250
ZXh0VmspOwotICAgIH0KKyAgICBHbHNsYW5nV3JhcHBlclZrOjpSZXNldEdsc2xhbmdQcm9ncmFt
SW50ZXJmYWNlSW5mbygmbUdsc2xhbmdQcm9ncmFtSW50ZXJmYWNlSW5mbyk7CiAKLSAgICBtVGV4
dHVyZURlc2NyaXB0b3JzQ2FjaGUuY2xlYXIoKTsKLSAgICBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNo
ZS5jbGVhcigpOworICAgIG1FeGVjdXRhYmxlLnJlc2V0KGNvbnRleHRWayk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxyeDo6TGlua0V2ZW50PiBQcm9ncmFtVms6OmxvYWQoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCkBAIC01NzEsMTEgKzE5OCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8cng6Okxp
bmtFdmVudD4gUHJvZ3JhbVZrOjpsb2FkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAg
IGdsOjpTaGFkZXJNYXA8c2l6ZV90PiByZXF1aXJlZEJ1ZmZlclNpemU7CiAgICAgcmVxdWlyZWRC
dWZmZXJTaXplLmZpbGwoMCk7CiAKLSAgICBhbmdsZTo6UmVzdWx0IHN0YXR1cyA9IGxvYWRTcGly
dkJsb2IoY29udGV4dFZrLCBzdHJlYW0pOwotICAgIGlmIChzdGF0dXMgIT0gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWUpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5r
RXZlbnREb25lPihzdGF0dXMpOwotICAgIH0KKyAgICByZXNldChjb250ZXh0VmspOworCisgICAg
bVNoYWRlckluZm8ubG9hZChzdHJlYW0pOworICAgIG1FeGVjdXRhYmxlLmxvYWQoc3RyZWFtKTsK
IAogICAgIC8vIERlc2VyaWFsaXplcyB0aGUgdW5pZm9ybUxheW91dCBkYXRhIG9mIG1EZWZhdWx0
VW5pZm9ybUJsb2NrcwogICAgIGZvciAoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsOjpB
bGxTaGFkZXJUeXBlcygpKQpAQCAtNTk1LDIzICsyMjEsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPHJ4
OjpMaW5rRXZlbnQ+IFByb2dyYW1Wazo6bG9hZChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgcmVxdWlyZWRCdWZmZXJTaXplW3NoYWRlclR5cGVdID0gc3RyZWFtLT5yZWFkSW50
PHNpemVfdD4oKTsKICAgICB9CiAKLSAgICByZXNldChjb250ZXh0VmspOwotCiAgICAgLy8gSW5p
dGlhbGl6ZSBhbmQgcmVzaXplIHRoZSBtRGVmYXVsdFVuaWZvcm1CbG9ja3MnIG1lbW9yeQotICAg
IHN0YXR1cyA9IHJlc2l6ZVVuaWZvcm1CbG9ja01lbW9yeShjb250ZXh0VmssIHJlcXVpcmVkQnVm
ZmVyU2l6ZSk7CisgICAgYW5nbGU6OlJlc3VsdCBzdGF0dXMgPSByZXNpemVVbmlmb3JtQmxvY2tN
ZW1vcnkoY29udGV4dFZrLCByZXF1aXJlZEJ1ZmZlclNpemUpOwogICAgIGlmIChzdGF0dXMgIT0g
YW5nbGU6OlJlc3VsdDo6Q29udGludWUpCiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMaW5rRXZlbnREb25lPihzdGF0dXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+KGxpbmtJbXBsKGNvbnRleHQsIGluZm9Mb2cpKTsK
KyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgJmdsRXhlY3V0YWJsZSA9IG1TdGF0ZS5n
ZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworICAgIHN0YXR1cyA9IG1FeGVjdXRhYmxlLmNyZWF0ZVBp
cGVsaW5lTGF5b3V0KGNvbnRleHQsIGdsRXhlY3V0YWJsZSwgbVN0YXRlKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMaW5rRXZlbnREb25lPihzdGF0dXMpOwogfQogCiB2b2lkIFByb2dy
YW1Wazo6c2F2ZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgZ2w6OkJpbmFyeU91dHB1dFN0
cmVhbSAqc3RyZWFtKQogewotICAgIC8vIChnZW9mZmxhbmcpOiBMb29rIGludG8gc2F2aW5nIHNo
YWRlciBtb2R1bGVzIGluIFNoYWRlckluZm8gb2JqZWN0cyAoa2VlcCBpbiBtaW5kIHRoYXQgd2UK
LSAgICAvLyBjb21waWxlIHNoYWRlcnMgbGF6aWx5KQotICAgIHNhdmVTcGlydkJsb2Ioc3RyZWFt
KTsKKyAgICBtU2hhZGVySW5mby5zYXZlKHN0cmVhbSk7CisgICAgbUV4ZWN1dGFibGUuc2F2ZShz
dHJlYW0pOwogCiAgICAgLy8gU2VyaWFsaXplcyB0aGUgdW5pZm9ybUxheW91dCBkYXRhIG9mIG1E
ZWZhdWx0VW5pZm9ybUJsb2NrcwogICAgIGZvciAoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6
IGdsOjpBbGxTaGFkZXJUeXBlcygpKQpAQCAtNjUyLDE4NiArMjc3LDM0IEBAIHN0ZDo6dW5pcXVl
X3B0cjxMaW5rRXZlbnQ+IFByb2dyYW1Wazo6bGluayhjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCwKICAgICAvLyBhc3NpZ25tZW50IGRvbmUgaW4gdGhhdCBmdW5jdGlvbi4KICAgICBsaW5rUmVz
b3VyY2VzKHJlc291cmNlcyk7CiAKLSAgICBHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJTb3Vy
Y2UoY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLT5nZXRGZWF0dXJlcygpLCBtU3RhdGUsIHJlc291
cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1TaGFkZXJTb3Vy
Y2VzLCAmbVZhcmlhYmxlSW5mb01hcCk7Ci0KICAgICByZXNldChjb250ZXh0VmspOworICAgIG1F
eGVjdXRhYmxlLmNsZWFyVmFyaWFibGVJbmZvTWFwKCk7CisKKyAgICAvLyBHYXRoZXIgdmFyaWFi
bGUgaW5mbyBhbmQgdHJhbnNmb3JtIHNvdXJjZXMuCisgICAgZ2w6OlNoYWRlck1hcDxzdGQ6OnN0
cmluZz4gc2hhZGVyU291cmNlczsKKyAgICBHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJTb3Vy
Y2UoY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLT5nZXRGZWF0dXJlcygpLCBtU3RhdGUsIHJlc291
cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1HbHNsYW5nUHJv
Z3JhbUludGVyZmFjZUluZm8sICZzaGFkZXJTb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbUV4ZWN1dGFibGUubVZhcmlhYmxlSW5mb01hcCk7CiAKLSAgICBh
bmdsZTo6UmVzdWx0IHN0YXR1cyA9IGluaXREZWZhdWx0VW5pZm9ybUJsb2Nrcyhjb250ZXh0KTsK
KyAgICAvLyBDb21waWxlIHRoZSBzaGFkZXJzLgorICAgIGFuZ2xlOjpSZXN1bHQgc3RhdHVzID0K
KyAgICAgICAgbVNoYWRlckluZm8uaW5pdFNoYWRlcnMoY29udGV4dFZrLCBzaGFkZXJTb3VyY2Vz
LCBtRXhlY3V0YWJsZS5tVmFyaWFibGVJbmZvTWFwKTsKICAgICBpZiAoc3RhdHVzICE9IGFuZ2xl
OjpSZXN1bHQ6OkNvbnRpbnVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGlua0V2ZW50RG9uZT4oc3RhdHVzKTsKICAgICB9CiAKLSAgICAvLyBUT0RPKGppZS5hLmNo
ZW5AaW50ZWwuY29tKTogUGFyYWxsZWxpemUgbGlua2luZy4KLSAgICAvLyBodHRwOi8vY3JidWcu
Y29tLzg0OTU3NgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+KGxp
bmtJbXBsKGNvbnRleHQsIGluZm9Mb2cpKTsKLX0KLQotYW5nbGU6OlJlc3VsdCBQcm9ncmFtVms6
OmxpbmtJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQsIGdsOjpJbmZvTG9nICZpbmZv
TG9nKQotewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICAgPSBn
bENvbnRleHQtPmdldFN0YXRlKCk7Ci0gICAgQ29udGV4dFZrICpjb250ZXh0VmsgICAgICAgICAg
ICAgICAgICAgICA9IHZrOjpHZXRJbXBsKGdsQ29udGV4dCk7Ci0gICAgUmVuZGVyZXJWayAqcmVu
ZGVyZXIgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKTsKLSAg
ICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gZ2xTdGF0ZS5nZXRD
dXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKLQotICAgIHVwZGF0ZUJpbmRpbmdPZmZzZXRzKCk7
Ci0KLSAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgcGlwZWxpbmUgYW5kIGRlc2NyaXB0
b3Igc2V0IGxheW91dHMuIFRoaXMgd2lsbCBjcmVhdGUgdGhlbSBpZiB0aGV5Ci0gICAgLy8gZG9u
J3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgY2FjaGUuCi0KLSAgICAvLyBEZWZhdWx0IHVuaWZvcm1z
IGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2s6Ci0gICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNj
IHVuaWZvcm1zQW5kWGZiU2V0RGVzYzsKLSAgICB1aW50MzJfdCB1bmlmb3JtQmluZGluZ0luZGV4
ID0gMDsKLSAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBtU3RhdGUu
Z2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCi0gICAgewotICAgICAgICB1bmlmb3Jtc0FuZFhmYlNl
dERlc2MudXBkYXRlKHVuaWZvcm1CaW5kaW5nSW5kZXgrKywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfVU5JRk9STV9CVUZGRVJfRFlOQU1J
QywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF92azo6a1NoYWRl
clN0YWdlTWFwW3NoYWRlclR5cGVdKTsKLSAgICB9Ci0gICAgaWYgKG1TdGF0ZS5oYXNMaW5rZWRT
aGFkZXJTdGFnZShnbDo6U2hhZGVyVHlwZTo6VmVydGV4KSAmJiB0cmFuc2Zvcm1GZWVkYmFjayAm
JgotICAgICAgICAhbVN0YXRlLmdldExpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoKS5l
bXB0eSgpKQotICAgIHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tWayAqdHJhbnNmb3JtRmVl
ZGJhY2tWayA9IHZrOjpHZXRJbXBsKHRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAgICAgdHJhbnNm
b3JtRmVlZGJhY2tWay0+dXBkYXRlRGVzY3JpcHRvclNldExheW91dChjb250ZXh0VmssIG1TdGF0
ZSwgJnVuaWZvcm1zQW5kWGZiU2V0RGVzYyk7Ci0gICAgfQotCi0gICAgQU5HTEVfVFJZKHJlbmRl
cmVyLT5nZXREZXNjcmlwdG9yU2V0TGF5b3V0KAotICAgICAgICBjb250ZXh0VmssIHVuaWZvcm1z
QW5kWGZiU2V0RGVzYywKLSAgICAgICAgJm1EZXNjcmlwdG9yU2V0TGF5b3V0c1trVW5pZm9ybXNB
bmRYZmJEZXNjcmlwdG9yU2V0SW5kZXhdKSk7Ci0KLSAgICAvLyBVbmlmb3JtIGFuZCBzdG9yYWdl
IGJ1ZmZlcnMsIGF0b21pYyBjb3VudGVyIGJ1ZmZlcnMgYW5kIGltYWdlczoKLSAgICB2azo6RGVz
Y3JpcHRvclNldExheW91dERlc2MgcmVzb3VyY2VzU2V0RGVzYzsKLQotICAgIEFkZEludGVyZmFj
ZUJsb2NrRGVzY3JpcHRvclNldERlc2MobVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKSwgZ2V0VW5p
Zm9ybUJsb2NrQmluZGluZ3NPZmZzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUiwgJnJlc291cmNlc1Nl
dERlc2MpOwotICAgIEFkZEludGVyZmFjZUJsb2NrRGVzY3JpcHRvclNldERlc2MobVN0YXRlLmdl
dFNoYWRlclN0b3JhZ2VCbG9ja3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldFN0b3JhZ2VCbG9ja0JpbmRpbmdzT2Zmc2V0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIs
ICZyZXNvdXJjZXNTZXREZXNjKTsKLSAgICBBZGRBdG9taWNDb3VudGVyQnVmZmVyRGVzY3JpcHRv
clNldERlc2MobVN0YXRlLmdldEF0b21pY0NvdW50ZXJCdWZmZXJzKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEF0b21pY0NvdW50ZXJCdWZmZXJCaW5k
aW5nc09mZnNldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmcmVzb3VyY2VzU2V0RGVzYyk7Ci0gICAgQWRkSW1hZ2VEZXNjcmlwdG9yU2V0RGVzYyhtU3Rh
dGUsIGdldEltYWdlQmluZGluZ3NPZmZzZXQoKSwgJnJlc291cmNlc1NldERlc2MpOwotCi0gICAg
QU5HTEVfVFJZKHJlbmRlcmVyLT5nZXREZXNjcmlwdG9yU2V0TGF5b3V0KAotICAgICAgICBjb250
ZXh0VmssIHJlc291cmNlc1NldERlc2MsICZtRGVzY3JpcHRvclNldExheW91dHNba1NoYWRlclJl
c291cmNlRGVzY3JpcHRvclNldEluZGV4XSkpOwotCi0gICAgLy8gVGV4dHVyZXM6Ci0gICAgdms6
OkRlc2NyaXB0b3JTZXRMYXlvdXREZXNjIHRleHR1cmVzU2V0RGVzYzsKLQotICAgIEFkZFRleHR1
cmVEZXNjcmlwdG9yU2V0RGVzYyhtU3RhdGUsIGNvbnRleHRWay0+dXNlT2xkUmV3cml0ZVN0cnVj
dFNhbXBsZXJzKCksICZ0ZXh0dXJlc1NldERlc2MpOwotCi0gICAgQU5HTEVfVFJZKHJlbmRlcmVy
LT5nZXREZXNjcmlwdG9yU2V0TGF5b3V0KGNvbnRleHRWaywgdGV4dHVyZXNTZXREZXNjLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURlc2NyaXB0b3JT
ZXRMYXlvdXRzW2tUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4XSkpOwotCi0gICAgLy8gRHJpdmVy
IHVuaWZvcm1zOgotICAgIFZrU2hhZGVyU3RhZ2VGbGFncyBkcml2ZXJVbmlmb3Jtc1N0YWdlcyA9
Ci0gICAgICAgIG1TdGF0ZS5pc0NvbXB1dGUoKSA/IFZLX1NIQURFUl9TVEFHRV9DT01QVVRFX0JJ
VCA6IFZLX1NIQURFUl9TVEFHRV9BTExfR1JBUEhJQ1M7Ci0gICAgdms6OkRlc2NyaXB0b3JTZXRM
YXlvdXREZXNjIGRyaXZlclVuaWZvcm1zU2V0RGVzYyA9Ci0gICAgICAgIGNvbnRleHRWay0+Z2V0
RHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0RGVzYyhkcml2ZXJVbmlmb3Jtc1N0YWdlcyk7Ci0g
ICAgQU5HTEVfVFJZKHJlbmRlcmVyLT5nZXREZXNjcmlwdG9yU2V0TGF5b3V0KAotICAgICAgICBj
b250ZXh0VmssIGRyaXZlclVuaWZvcm1zU2V0RGVzYywKLSAgICAgICAgJm1EZXNjcmlwdG9yU2V0
TGF5b3V0c1trRHJpdmVyVW5pZm9ybXNEZXNjcmlwdG9yU2V0SW5kZXhdKSk7Ci0KLSAgICAvLyBD
cmVhdGUgcGlwZWxpbmUgbGF5b3V0IHdpdGggdGhlc2UgNCBkZXNjcmlwdG9yIHNldHMuCi0gICAg
dms6OlBpcGVsaW5lTGF5b3V0RGVzYyBwaXBlbGluZUxheW91dERlc2M7Ci0gICAgcGlwZWxpbmVM
YXlvdXREZXNjLnVwZGF0ZURlc2NyaXB0b3JTZXRMYXlvdXQoa1VuaWZvcm1zQW5kWGZiRGVzY3Jp
cHRvclNldEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaWZvcm1zQW5kWGZiU2V0RGVzYyk7Ci0gICAgcGlwZWxpbmVMYXlvdXREZXNjLnVw
ZGF0ZURlc2NyaXB0b3JTZXRMYXlvdXQoa1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291
cmNlc1NldERlc2MpOwotICAgIHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0
TGF5b3V0KGtUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4LCB0ZXh0dXJlc1NldERlc2MpOwotICAg
IHBpcGVsaW5lTGF5b3V0RGVzYy51cGRhdGVEZXNjcmlwdG9yU2V0TGF5b3V0KGtEcml2ZXJVbmlm
b3Jtc0Rlc2NyaXB0b3JTZXRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkcml2ZXJVbmlmb3Jtc1NldERlc2MpOwotCi0gICAgQU5HTEVfVFJZ
KHJlbmRlcmVyLT5nZXRQaXBlbGluZUxheW91dChjb250ZXh0VmssIHBpcGVsaW5lTGF5b3V0RGVz
YywgbURlc2NyaXB0b3JTZXRMYXlvdXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm1QaXBlbGluZUxheW91dCkpOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBkZXNj
cmlwdG9yIHBvb2xzLgotICAgIHN0ZDo6YXJyYXk8VmtEZXNjcmlwdG9yUG9vbFNpemUsIDI+IHVu
aWZvcm1BbmRYZmJTZXRTaXplID0gewotICAgICAgICB7e1ZLX0RFU0NSSVBUT1JfVFlQRV9VTklG
T1JNX0JVRkZFUl9EWU5BTUlDLAotICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihtU3Rh
dGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VDb3VudCgpKX0sCi0gICAgICAgICB7VktfREVTQ1JJUFRP
Ul9UWVBFX1NUT1JBR0VfQlVGRkVSLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVJTfX19OwotCi0gICAgdWludDMyX3QgdW5pZm9ybUJsb2NrQ291bnQgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4obVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKS5zaXplKCkpOwot
ICAgIHVpbnQzMl90IHN0b3JhZ2VCbG9ja0NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1T
dGF0ZS5nZXRTaGFkZXJTdG9yYWdlQmxvY2tzKCkuc2l6ZSgpKTsKLSAgICB1aW50MzJfdCBhdG9t
aWNDb3VudGVyQnVmZmVyQ291bnQgPQotICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4obVN0
YXRlLmdldEF0b21pY0NvdW50ZXJCdWZmZXJzKCkuc2l6ZSgpKTsKLSAgICB1aW50MzJfdCBpbWFn
ZUNvdW50ICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obVN0YXRlLmdldEltYWdlQmluZGluZ3Mo
KS5zaXplKCkpOwotICAgIHVpbnQzMl90IHRleHR1cmVDb3VudCA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtU3RhdGUuZ2V0U2FtcGxlckJpbmRpbmdzKCkuc2l6ZSgpKTsKLQotICAgIGlmIChyZW5k
ZXJlci0+Z2V0RmVhdHVyZXMoKS5iaW5kRW1wdHlGb3JVbnVzZWREZXNjcmlwdG9yU2V0cy5lbmFi
bGVkKQotICAgIHsKLSAgICAgICAgLy8gRm9yIHRoaXMgd29ya2Fyb3VuZCwgd2UgaGF2ZSB0byBj
cmVhdGUgYW4gZW1wdHkgZGVzY3JpcHRvciBzZXQgZm9yIGVhY2ggZGVzY3JpcHRvciBzZXQKLSAg
ICAgICAgLy8gaW5kZXgsIHNvIG1ha2Ugc3VyZSB0aGVpciBwb29scyBhcmUgaW5pdGlhbGl6ZWQu
Ci0gICAgICAgIHVuaWZvcm1CbG9ja0NvdW50ID0gc3RkOjptYXgodW5pZm9ybUJsb2NrQ291bnQs
IDF1KTsKLSAgICAgICAgdGV4dHVyZUNvdW50ICAgICAgPSBzdGQ6Om1heCh0ZXh0dXJlQ291bnQs
IDF1KTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgc2l6ZV90IGtSZXNvdXJjZVR5cGVzSW5SZXNv
dXJjZXNTZXQgPSAzOwotICAgIGFuZ2xlOjpGaXhlZFZlY3RvcjxWa0Rlc2NyaXB0b3JQb29sU2l6
ZSwga1Jlc291cmNlVHlwZXNJblJlc291cmNlc1NldD4gcmVzb3VyY2VTZXRTaXplOwotICAgIGlm
ICh1bmlmb3JtQmxvY2tDb3VudCA+IDApCi0gICAgewotICAgICAgICByZXNvdXJjZVNldFNpemUu
ZW1wbGFjZV9iYWNrKFZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUiwgdW5pZm9ybUJs
b2NrQ291bnQpOwotICAgIH0KLSAgICBpZiAoc3RvcmFnZUJsb2NrQ291bnQgPiAwIHx8IGF0b21p
Y0NvdW50ZXJCdWZmZXJDb3VudCA+IDApCi0gICAgewotICAgICAgICAvLyBOb3RlIHRoYXQgd2Ug
YWx3YXlzIHVzZSBhbiBhcnJheSBvZiBJTVBMRU1FTlRBVElPTl9NQVhfQVRPTUlDX0NPVU5URVJf
QlVGRkVSUyBzdG9yYWdlCi0gICAgICAgIC8vIGJ1ZmZlcnMgZm9yIGVtdWxhdGluZyBhdG9taWMg
Y291bnRlcnMsIHNvIGlmIHRoZXJlIGFyZSBhbnkgYXRvbWljIGNvdW50ZXIgYnVmZmVycywgd2UK
LSAgICAgICAgLy8gbmVlZCB0byBhbGxvY2F0ZSBJTVBMRU1FTlRBVElPTl9NQVhfQVRPTUlDX0NP
VU5URVJfQlVGRkVSUyBkZXNjcmlwdG9ycy4KLSAgICAgICAgY29uc3QgdWludDMyX3QgYXRvbWlj
Q291bnRlclN0b3JhZ2VCdWZmZXJDb3VudCA9Ci0gICAgICAgICAgICBhdG9taWNDb3VudGVyQnVm
ZmVyQ291bnQgPiAwID8gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9BVE9NSUNfQ09VTlRFUl9CVUZG
RVJTIDogMDsKLSAgICAgICAgY29uc3QgdWludDMyX3Qgc3RvcmFnZUJ1ZmZlckRlc2NDb3VudCA9
IHN0b3JhZ2VCbG9ja0NvdW50ICsgYXRvbWljQ291bnRlclN0b3JhZ2VCdWZmZXJDb3VudDsKLSAg
ICAgICAgcmVzb3VyY2VTZXRTaXplLmVtcGxhY2VfYmFjayhWS19ERVNDUklQVE9SX1RZUEVfU1RP
UkFHRV9CVUZGRVIsIHN0b3JhZ2VCdWZmZXJEZXNjQ291bnQpOwotICAgIH0KLSAgICBpZiAoaW1h
Z2VDb3VudCA+IDApCi0gICAgewotICAgICAgICByZXNvdXJjZVNldFNpemUuZW1wbGFjZV9iYWNr
KFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0lNQUdFLCBpbWFnZUNvdW50KTsKLSAgICB9Ci0K
LSAgICBWa0Rlc2NyaXB0b3JQb29sU2l6ZSB0ZXh0dXJlU2V0U2l6ZSA9IHtWS19ERVNDUklQVE9S
X1RZUEVfQ09NQklORURfSU1BR0VfU0FNUExFUiwgdGV4dHVyZUNvdW50fTsKLQotICAgIEFOR0xF
X1RSWShtRHluYW1pY0Rlc2NyaXB0b3JQb29sc1trVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0
SW5kZXhdLmluaXQoCi0gICAgICAgIGNvbnRleHRWaywgdW5pZm9ybUFuZFhmYlNldFNpemUuZGF0
YSgpLCB1bmlmb3JtQW5kWGZiU2V0U2l6ZS5zaXplKCkpKTsKLSAgICBpZiAocmVzb3VyY2VTZXRT
aXplLnNpemUoKSA+IDApCi0gICAgewotICAgICAgICBBTkdMRV9UUlkobUR5bmFtaWNEZXNjcmlw
dG9yUG9vbHNba1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldEluZGV4XS5pbml0KAotICAgICAg
ICAgICAgY29udGV4dFZrLCByZXNvdXJjZVNldFNpemUuZGF0YSgpLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4ocmVzb3VyY2VTZXRTaXplLnNpemUoKSkpKTsKLSAgICB9Ci0gICAgaWYgKHRleHR1cmVD
b3VudCA+IDApCisgICAgc3RhdHVzID0gaW5pdERlZmF1bHRVbmlmb3JtQmxvY2tzKGNvbnRleHQp
OworICAgIGlmIChzdGF0dXMgIT0gYW5nbGU6OlJlc3VsdDo6Q29udGludWUpCiAgICAgewotICAg
ICAgICBBTkdMRV9UUlkobUR5bmFtaWNEZXNjcmlwdG9yUG9vbHNba1RleHR1cmVEZXNjcmlwdG9y
U2V0SW5kZXhdLmluaXQoY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRleHR1cmVTZXRT
aXplLCAxKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtFdmVudERvbmU+
KHN0YXR1cyk7CiAgICAgfQogCi0gICAgbUR5bmFtaWNCdWZmZXJPZmZzZXRzLnJlc2l6ZShtU3Rh
dGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VDb3VudCgpKTsKLQotICAgIC8vIEluaXRpYWxpemUgYW4g
ImVtcHR5IiBidWZmZXIgZm9yIHVzZSB3aXRoIGRlZmF1bHQgdW5pZm9ybSBibG9ja3Mgd2hlcmUg
dGhlcmUgYXJlIG5vIHVuaWZvcm1zLAotICAgIC8vIG9yIGF0b21pYyBjb3VudGVyIGJ1ZmZlciBh
cnJheSBpbmRpY2VzIHRoYXQgYXJlIHVudXNlZC4KLSAgICBjb25zdGV4cHIgVmtCdWZmZXJVc2Fn
ZUZsYWdzIGtFbXB0eUJ1ZmZlclVzYWdlID0KLSAgICAgICAgVktfQlVGRkVSX1VTQUdFX1VOSUZP
Uk1fQlVGRkVSX0JJVCB8IFZLX0JVRkZFUl9VU0FHRV9TVE9SQUdFX0JVRkZFUl9CSVQ7Ci0KLSAg
ICBWa0J1ZmZlckNyZWF0ZUluZm8gZW1wdHlCdWZmZXJJbmZvICAgID0ge307Ci0gICAgZW1wdHlC
dWZmZXJJbmZvLnNUeXBlICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZF
Ul9DUkVBVEVfSU5GTzsKLSAgICBlbXB0eUJ1ZmZlckluZm8uZmxhZ3MgICAgICAgICAgICAgICAg
ID0gMDsKLSAgICBlbXB0eUJ1ZmZlckluZm8uc2l6ZSAgICAgICAgICAgICAgICAgID0gNDsKLSAg
ICBlbXB0eUJ1ZmZlckluZm8udXNhZ2UgICAgICAgICAgICAgICAgID0ga0VtcHR5QnVmZmVyVXNh
Z2U7Ci0gICAgZW1wdHlCdWZmZXJJbmZvLnNoYXJpbmdNb2RlICAgICAgICAgICA9IFZLX1NIQVJJ
TkdfTU9ERV9FWENMVVNJVkU7Ci0gICAgZW1wdHlCdWZmZXJJbmZvLnF1ZXVlRmFtaWx5SW5kZXhD
b3VudCA9IDA7Ci0gICAgZW1wdHlCdWZmZXJJbmZvLnBRdWV1ZUZhbWlseUluZGljZXMgICA9IG51
bGxwdHI7Ci0KLSAgICBjb25zdGV4cHIgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIGtNZW1vcnlUeXBl
ID0gVktfTUVNT1JZX1BST1BFUlRZX0RFVklDRV9MT0NBTF9CSVQ7Ci0gICAgcmV0dXJuIG1FbXB0
eUJ1ZmZlci5pbml0KGNvbnRleHRWaywgZW1wdHlCdWZmZXJJbmZvLCBrTWVtb3J5VHlwZSk7Ci19
Ci0KLXZvaWQgUHJvZ3JhbVZrOjp1cGRhdGVCaW5kaW5nT2Zmc2V0cygpCi17Ci0gICAgbVN0b3Jh
Z2VCbG9ja0JpbmRpbmdzT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1TdGF0ZS5nZXRV
bmlxdWVVbmlmb3JtQmxvY2tDb3VudCgpKTsKLQotICAgIG1BdG9taWNDb3VudGVyQnVmZmVyQmlu
ZGluZ3NPZmZzZXQgPQotICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4obVN0b3JhZ2VCbG9j
a0JpbmRpbmdzT2Zmc2V0ICsgbVN0YXRlLmdldFVuaXF1ZVN0b3JhZ2VCbG9ja0NvdW50KCkpOwot
Ci0gICAgdWludDMyX3QgYXRvbWljQ291bnRlckJpbmRpbmdDb3VudCA9IG1TdGF0ZS5nZXRBdG9t
aWNDb3VudGVyQnVmZmVycygpLmVtcHR5KCkgPyAwIDogMTsKLSAgICBtSW1hZ2VCaW5kaW5nc09m
ZnNldCA9IG1BdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3NPZmZzZXQgKyBhdG9taWNDb3VudGVy
QmluZGluZ0NvdW50OworICAgIC8vIFRPRE8oamllLmEuY2hlbkBpbnRlbC5jb20pOiBQYXJhbGxl
bGl6ZSBsaW5raW5nLgorICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vODQ5NTc2CisgICAgY29uc3Qg
Z2w6OlByb2dyYW1FeGVjdXRhYmxlICZnbEV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4
ZWN1dGFibGUoKTsKKyAgICBzdGF0dXMgPSBtRXhlY3V0YWJsZS5jcmVhdGVQaXBlbGluZUxheW91
dChjb250ZXh0LCBnbEV4ZWN1dGFibGUsIG1TdGF0ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TGlua0V2ZW50RG9uZT4oc3RhdHVzKTsKIH0KIAogdm9pZCBQcm9ncmFtVms6OmxpbmtS
ZXNvdXJjZXMoY29uc3QgZ2w6OlByb2dyYW1MaW5rZWRSZXNvdXJjZXMgJnJlc291cmNlcykKQEAg
LTg2MSw3ICszMzQsOSBAQCBhbmdsZTo6UmVzdWx0IFByb2dyYW1Wazo6aW5pdERlZmF1bHRVbmlm
b3JtQmxvY2tzKGNvbnN0IGdsOjpDb250ZXh0ICpnbENvbnRleHQpCiB2b2lkIFByb2dyYW1Wazo6
Z2VuZXJhdGVVbmlmb3JtTGF5b3V0TWFwcGluZyhnbDo6U2hhZGVyTWFwPHNoOjpCbG9ja0xheW91
dE1hcD4gJmxheW91dE1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpTaGFkZXJNYXA8c2l6ZV90PiAmcmVxdWlyZWRCdWZmZXJTaXplKQogewotICAg
IGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IG1TdGF0ZS5nZXRMaW5rZWRT
aGFkZXJTdGFnZXMoKSkKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgJmdsRXhlY3V0
YWJsZSA9IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpOworCisgICAgZm9yIChjb25zdCBn
bDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2xFeGVjdXRhYmxlLmdldExpbmtlZFNoYWRlclN0
YWdlcygpKQogICAgIHsKICAgICAgICAgZ2w6OlNoYWRlciAqc2hhZGVyID0gbVN0YXRlLmdldEF0
dGFjaGVkU2hhZGVyKHNoYWRlclR5cGUpOwogCkBAIC04NzcsNyArMzUyLDkgQEAgdm9pZCBQcm9n
cmFtVms6OmdlbmVyYXRlVW5pZm9ybUxheW91dE1hcHBpbmcoZ2w6OlNoYWRlck1hcDxzaDo6Qmxv
Y2tMYXlvdXRNYXA+ICYKIHZvaWQgUHJvZ3JhbVZrOjppbml0RGVmYXVsdFVuaWZvcm1MYXlvdXRN
YXBwaW5nKGdsOjpTaGFkZXJNYXA8c2g6OkJsb2NrTGF5b3V0TWFwPiAmbGF5b3V0TWFwKQogewog
ICAgIC8vIEluaXQgdGhlIGRlZmF1bHQgYmxvY2sgbGF5b3V0IGluZm8uCi0gICAgY29uc3QgYXV0
byAmdW5pZm9ybXMgPSBtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKKyAgICBjb25zdCBhdXRvICZ1bmlm
b3JtcyAgICAgICAgICAgICAgICAgICAgICA9IG1TdGF0ZS5nZXRVbmlmb3JtcygpOworICAgIGNv
bnN0IGdsOjpQcm9ncmFtRXhlY3V0YWJsZSAmZ2xFeGVjdXRhYmxlID0gbVN0YXRlLmdldFByb2dy
YW1FeGVjdXRhYmxlKCk7CisKICAgICBmb3IgKGNvbnN0IGdsOjpWYXJpYWJsZUxvY2F0aW9uICZs
b2NhdGlvbiA6IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKCkpCiAgICAgewogICAgICAgICBn
bDo6U2hhZGVyTWFwPHNoOjpCbG9ja01lbWJlckluZm8+IGxheW91dEluZm87CkBAIC04OTcsNyAr
Mzc0LDcgQEAgdm9pZCBQcm9ncmFtVms6OmluaXREZWZhdWx0VW5pZm9ybUxheW91dE1hcHBpbmco
Z2w6OlNoYWRlck1hcDxzaDo6QmxvY2tMYXlvdXRNYXAKIAogICAgICAgICAgICAgICAgIGJvb2wg
Zm91bmQgPSBmYWxzZTsKIAotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5
cGUgc2hhZGVyVHlwZSA6IG1TdGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbEV4ZWN1dGFi
bGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIGl0ID0gbGF5b3V0TWFwW3NoYWRlclR5cGVdLmZpbmQodW5pZm9ybU5h
bWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoaXQgIT0gbGF5b3V0TWFwW3NoYWRlclR5cGVd
LmVuZCgpKQpAQCAtOTExLDcgKzM4OCw3IEBAIHZvaWQgUHJvZ3JhbVZrOjppbml0RGVmYXVsdFVu
aWZvcm1MYXlvdXRNYXBwaW5nKGdsOjpTaGFkZXJNYXA8c2g6OkJsb2NrTGF5b3V0TWFwCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBl
IHNoYWRlclR5cGUgOiBtU3RhdGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAgICAgIGZv
ciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGdsRXhlY3V0YWJsZS5nZXRMaW5r
ZWRTaGFkZXJTdGFnZXMoKSkKICAgICAgICAgewogICAgICAgICAgICAgbURlZmF1bHRVbmlmb3Jt
QmxvY2tzW3NoYWRlclR5cGVdLnVuaWZvcm1MYXlvdXQucHVzaF9iYWNrKGxheW91dEluZm9bc2hh
ZGVyVHlwZV0pOwogICAgICAgICB9CkBAIC05MjEsOCArMzk4LDEwIEBAIHZvaWQgUHJvZ3JhbVZr
Ojppbml0RGVmYXVsdFVuaWZvcm1MYXlvdXRNYXBwaW5nKGdsOjpTaGFkZXJNYXA8c2g6OkJsb2Nr
TGF5b3V0TWFwCiBhbmdsZTo6UmVzdWx0IFByb2dyYW1Wazo6cmVzaXplVW5pZm9ybUJsb2NrTWVt
b3J5KENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyTWFwPHNpemVfdD4gJnJlcXVpcmVkQnVmZmVy
U2l6ZSkKIHsKLSAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRleHRWay0+Z2V0UmVuZGVy
ZXIoKTsKLSAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBtU3RhdGUu
Z2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgICAgICAg
ICAgICAgICAgICAgICAgPSBjb250ZXh0VmstPmdldFJlbmRlcmVyKCk7CisgICAgY29uc3QgZ2w6
OlByb2dyYW1FeGVjdXRhYmxlICZnbEV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1
dGFibGUoKTsKKworICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IGds
RXhlY3V0YWJsZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKICAgICB7CiAgICAgICAgIGlmIChy
ZXF1aXJlZEJ1ZmZlclNpemVbc2hhZGVyVHlwZV0gPiAwKQogICAgICAgICB7CkBAIC05NTYsMTQg
KzQzNSwxNSBAQCBHTGJvb2xlYW4gUHJvZ3JhbVZrOjp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAm
Y2FwcywgZ2w6OkluZm9Mb2cgKmluZm9Mb2cpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHZvaWQg
UHJvZ3JhbVZrOjpzZXRVbmlmb3JtSW1wbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgVCAqdiwgR0xlbnVtIGVudHJ5UG9pbnRUeXBlKQogewotICAgIGNvbnN0IGdsOjpWYXJp
YWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygp
W2xvY2F0aW9uXTsKLSAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmbGlua2VkVW5pZm9ybSAg
ID0gbVN0YXRlLmdldFVuaWZvcm1zKClbbG9jYXRpb25JbmZvLmluZGV4XTsKKyAgICBjb25zdCBn
bDo6VmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvICA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9j
YXRpb25zKClbbG9jYXRpb25dOworICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZsaW5rZWRV
bmlmb3JtICAgID0gbVN0YXRlLmdldFVuaWZvcm1zKClbbG9jYXRpb25JbmZvLmluZGV4XTsKKyAg
ICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgJmdsRXhlY3V0YWJsZSA9IG1TdGF0ZS5nZXRQ
cm9ncmFtRXhlY3V0YWJsZSgpOwogCiAgICAgQVNTRVJUKCFsaW5rZWRVbmlmb3JtLmlzU2FtcGxl
cigpKTsKIAogICAgIGlmIChsaW5rZWRVbmlmb3JtLnR5cGVJbmZvLT50eXBlID09IGVudHJ5UG9p
bnRUeXBlKQogICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJU
eXBlIDogbVN0YXRlLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQorICAgICAgICBmb3IgKGNvbnN0
IGdsOjpTaGFkZXJUeXBlIHNoYWRlclR5cGUgOiBnbEV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVy
U3RhZ2VzKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIERlZmF1bHRVbmlmb3JtQmxvY2sgJnVu
aWZvcm1CbG9jayAgICAgPSBtRGVmYXVsdFVuaWZvcm1CbG9ja3Nbc2hhZGVyVHlwZV07CiAgICAg
ICAgICAgICBjb25zdCBzaDo6QmxvY2tNZW1iZXJJbmZvICZsYXlvdXRJbmZvID0gdW5pZm9ybUJs
b2NrLnVuaWZvcm1MYXlvdXRbbG9jYXRpb25dOwpAQCAtOTgyLDcgKzQ2Miw3IEBAIHZvaWQgUHJv
Z3JhbVZrOjpzZXRVbmlmb3JtSW1wbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgVCAqdiwgR0xlbnVtCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGZvciAoY29u
c3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IG1TdGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFn
ZXMoKSkKKyAgICAgICAgZm9yIChjb25zdCBnbDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlIDogZ2xF
eGVjdXRhYmxlLmdldExpbmtlZFNoYWRlclN0YWdlcygpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBEZWZhdWx0VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgICAgID0gbURlZmF1bHRVbmlmb3Jt
QmxvY2tzW3NoYWRlclR5cGVdOwogICAgICAgICAgICAgY29uc3Qgc2g6OkJsb2NrTWVtYmVySW5m
byAmbGF5b3V0SW5mbyA9IHVuaWZvcm1CbG9jay51bmlmb3JtTGF5b3V0W2xvY2F0aW9uXTsKQEAg
LTExMjIsMTAgKzYwMiwxMSBAQCB2b2lkIFByb2dyYW1Wazo6c2V0VW5pZm9ybU1hdHJpeGZ2KEdM
aW50IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBjb25zdCBnbDo6VmFyaWFibGVMb2NhdGlvbiAmbG9jYXRp
b25JbmZvID0gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlvbnMoKVtsb2NhdGlvbl07Ci0gICAgY29u
c3QgZ2w6OkxpbmtlZFVuaWZvcm0gJmxpbmtlZFVuaWZvcm0gICA9IG1TdGF0ZS5nZXRVbmlmb3Jt
cygpW2xvY2F0aW9uSW5mby5pbmRleF07CisgICAgY29uc3QgZ2w6OlZhcmlhYmxlTG9jYXRpb24g
JmxvY2F0aW9uSW5mbyAgPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0aW9uXTsK
KyAgICBjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmbGlua2VkVW5pZm9ybSAgICA9IG1TdGF0ZS5n
ZXRVbmlmb3JtcygpW2xvY2F0aW9uSW5mby5pbmRleF07CisgICAgY29uc3QgZ2w6OlByb2dyYW1F
eGVjdXRhYmxlICZnbEV4ZWN1dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsK
IAotICAgIGZvciAoY29uc3QgZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IG1TdGF0ZS5nZXRM
aW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJUeXBlIHNoYWRl
clR5cGUgOiBnbEV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCiAgICAgewogICAg
ICAgICBEZWZhdWx0VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgICAgID0gbURlZmF1bHRVbmlm
b3JtQmxvY2tzW3NoYWRlclR5cGVdOwogICAgICAgICBjb25zdCBzaDo6QmxvY2tNZW1iZXJJbmZv
ICZsYXlvdXRJbmZvID0gdW5pZm9ybUJsb2NrLnVuaWZvcm1MYXlvdXRbbG9jYXRpb25dOwpAQCAt
MTIxNiw0MiArNjk3LDYgQEAgdm9pZCBQcm9ncmFtVms6OnNldFVuaWZvcm1NYXRyaXg0eDNmdihH
TGludCBsb2NhdGlvbiwKICAgICBzZXRVbmlmb3JtTWF0cml4ZnY8NCwgMz4obG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAotdm9pZCBQcm9ncmFtVms6OnNldFBhdGhGcmFn
bWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCi17Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOwotfQotCi1hbmdsZTo6UmVzdWx0IFByb2dyYW1Wazo6YWxsb2Nh
dGVEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLCB1aW50MzJfdCBkZXNjcmlwdG9y
U2V0SW5kZXgpCi17Ci0gICAgYm9vbCBpZ25vcmVOZXdQb29sQWxsb2NhdGVkOwotICAgIHJldHVy
biBhbGxvY2F0ZURlc2NyaXB0b3JTZXRBbmRHZXRJbmZvKGNvbnRleHRWaywgZGVzY3JpcHRvclNl
dEluZGV4LCAmaWdub3JlTmV3UG9vbEFsbG9jYXRlZCk7Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgUHJv
Z3JhbVZrOjphbGxvY2F0ZURlc2NyaXB0b3JTZXRBbmRHZXRJbmZvKENvbnRleHRWayAqY29udGV4
dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgZGVzY3JpcHRvclNldEluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqbmV3UG9vbEFsbG9jYXRl
ZE91dCkKLXsKLSAgICB2azo6RHluYW1pY0Rlc2NyaXB0b3JQb29sICZkeW5hbWljRGVzY3JpcHRv
clBvb2wgPSBtRHluYW1pY0Rlc2NyaXB0b3JQb29sc1tkZXNjcmlwdG9yU2V0SW5kZXhdOwotCi0g
ICAgdWludDMyX3QgcG90ZW50aWFsTmV3Q291bnQgPSBkZXNjcmlwdG9yU2V0SW5kZXggKyAxOwot
ICAgIGlmIChwb3RlbnRpYWxOZXdDb3VudCA+IG1EZXNjcmlwdG9yU2V0cy5zaXplKCkpCi0gICAg
ewotICAgICAgICBtRGVzY3JpcHRvclNldHMucmVzaXplKHBvdGVudGlhbE5ld0NvdW50LCBWS19O
VUxMX0hBTkRMRSk7Ci0gICAgfQotCi0gICAgY29uc3Qgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXQg
JmRlc2NyaXB0b3JTZXRMYXlvdXQgPQotICAgICAgICBtRGVzY3JpcHRvclNldExheW91dHNbZGVz
Y3JpcHRvclNldEluZGV4XS5nZXQoKTsKLSAgICBBTkdMRV9UUlkoZHluYW1pY0Rlc2NyaXB0b3JQ
b29sLmFsbG9jYXRlU2V0c0FuZEdldEluZm8oCi0gICAgICAgIGNvbnRleHRWaywgZGVzY3JpcHRv
clNldExheW91dC5wdHIoKSwgMSwgJm1EZXNjcmlwdG9yUG9vbEJpbmRpbmdzW2Rlc2NyaXB0b3JT
ZXRJbmRleF0sCi0gICAgICAgICZtRGVzY3JpcHRvclNldHNbZGVzY3JpcHRvclNldEluZGV4XSwg
bmV3UG9vbEFsbG9jYXRlZE91dCkpOwotICAgIG1FbXB0eURlc2NyaXB0b3JTZXRzW2Rlc2NyaXB0
b3JTZXRJbmRleF0gPSBWS19OVUxMX0hBTkRMRTsKLQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKLX0KLQogdm9pZCBQcm9ncmFtVms6OmdldFVuaWZvcm1mdihjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgKnBhcmFtcykgY29uc3QK
IHsKICAgICBnZXRVbmlmb3JtSW1wbChsb2NhdGlvbiwgcGFyYW1zLCBHTF9GTE9BVCk7CkBAIC0x
MjcxLDIwICs3MTYsMjEgQEAgYW5nbGU6OlJlc3VsdCBQcm9ncmFtVms6OnVwZGF0ZVVuaWZvcm1z
KENvbnRleHRWayAqY29udGV4dFZrKQogewogICAgIEFTU0VSVChkaXJ0eVVuaWZvcm1zKCkpOwog
Ci0gICAgYm9vbCBhbnlOZXdCdWZmZXJBbGxvY2F0ZWQgPSBmYWxzZTsKLSAgICB1aW50MzJfdCBv
ZmZzZXRJbmRleCAgICAgICA9IDA7CisgICAgYm9vbCBhbnlOZXdCdWZmZXJBbGxvY2F0ZWQgICAg
ICAgICAgICAgICAgPSBmYWxzZTsKKyAgICB1aW50MzJfdCBvZmZzZXRJbmRleCAgICAgICAgICAg
ICAgICAgICAgICA9IDA7CisgICAgY29uc3QgZ2w6OlByb2dyYW1FeGVjdXRhYmxlICZnbEV4ZWN1
dGFibGUgPSBtU3RhdGUuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsKIAogICAgIC8vIFVwZGF0ZSBi
dWZmZXIgbWVtb3J5IGJ5IGltbWVkaWF0ZSBtYXBwaW5nLiBUaGlzIGltbWVkaWF0ZSB1cGRhdGUg
b25seSB3b3JrcyBvbmNlLgotICAgIGZvciAoZ2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IG1T
dGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMoKSkKKyAgICBmb3IgKGNvbnN0IGdsOjpTaGFkZXJU
eXBlIHNoYWRlclR5cGUgOiBnbEV4ZWN1dGFibGUuZ2V0TGlua2VkU2hhZGVyU3RhZ2VzKCkpCiAg
ICAgewogICAgICAgICBEZWZhdWx0VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSBtRGVmYXVs
dFVuaWZvcm1CbG9ja3Nbc2hhZGVyVHlwZV07CiAKICAgICAgICAgaWYgKG1EZWZhdWx0VW5pZm9y
bUJsb2Nrc0RpcnR5W3NoYWRlclR5cGVdKQogICAgICAgICB7CiAgICAgICAgICAgICBib29sIGJ1
ZmZlck1vZGlmaWVkID0gZmFsc2U7Ci0gICAgICAgICAgICBBTkdMRV9UUlkoCi0gICAgICAgICAg
ICAgICAgU3luY0RlZmF1bHRVbmlmb3JtQmxvY2soY29udGV4dFZrLCAmdW5pZm9ybUJsb2NrLnN0
b3JhZ2UsIHVuaWZvcm1CbG9jay51bmlmb3JtRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbUR5bmFtaWNCdWZmZXJPZmZzZXRzW29mZnNldEluZGV4XSwgJmJ1
ZmZlck1vZGlmaWVkKSk7CisgICAgICAgICAgICBBTkdMRV9UUlkoU3luY0RlZmF1bHRVbmlmb3Jt
QmxvY2soCisgICAgICAgICAgICAgICAgY29udGV4dFZrLCAmdW5pZm9ybUJsb2NrLnN0b3JhZ2Us
IHVuaWZvcm1CbG9jay51bmlmb3JtRGF0YSwKKyAgICAgICAgICAgICAgICAmbUV4ZWN1dGFibGUu
bUR5bmFtaWNCdWZmZXJPZmZzZXRzW29mZnNldEluZGV4XSwgJmJ1ZmZlck1vZGlmaWVkKSk7CiAg
ICAgICAgICAgICBtRGVmYXVsdFVuaWZvcm1CbG9ja3NEaXJ0eS5yZXNldChzaGFkZXJUeXBlKTsK
IAogICAgICAgICAgICAgaWYgKGJ1ZmZlck1vZGlmaWVkKQpAQCAtMTMwMCw1MTEgKzc0NiwxNCBA
QCBhbmdsZTo6UmVzdWx0IFByb2dyYW1Wazo6dXBkYXRlVW5pZm9ybXMoQ29udGV4dFZrICpjb250
ZXh0VmspCiAgICAgewogICAgICAgICAvLyBXZSBuZWVkIHRvIHJlaW5pdGlhbGl6ZSB0aGUgZGVz
Y3JpcHRvciBzZXRzIGlmIHdlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXJzIHNpbmNlIHdlIGNhbid0
CiAgICAgICAgIC8vIG1vZGlmeSB0aGUgZGVzY3JpcHRvciBzZXRzIG9uY2UgaW5pdGlhbGl6ZWQu
Ci0gICAgICAgIEFOR0xFX1RSWShhbGxvY2F0ZURlc2NyaXB0b3JTZXQoY29udGV4dFZrLCBrVW5p
Zm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXgpKTsKLSAgICAgICAgdXBkYXRlRGVmYXVsdFVu
aWZvcm1zRGVzY3JpcHRvclNldChjb250ZXh0VmspOwotICAgICAgICB1cGRhdGVUcmFuc2Zvcm1G
ZWVkYmFja0Rlc2NyaXB0b3JTZXRJbXBsKGNvbnRleHRWayk7CisgICAgICAgIEFOR0xFX1RSWSht
RXhlY3V0YWJsZS5hbGxvY2F0ZURlc2NyaXB0b3JTZXQoY29udGV4dFZrLCBrVW5pZm9ybXNBbmRY
ZmJEZXNjcmlwdG9yU2V0SW5kZXgpKTsKKyAgICAgICAgbUV4ZWN1dGFibGUudXBkYXRlRGVmYXVs
dFVuaWZvcm1zRGVzY3JpcHRvclNldChtU3RhdGUsIG1EZWZhdWx0VW5pZm9ybUJsb2NrcywgY29u
dGV4dFZrKTsKKyAgICAgICAgbUV4ZWN1dGFibGUudXBkYXRlVHJhbnNmb3JtRmVlZGJhY2tEZXNj
cmlwdG9yU2V0SW1wbChtU3RhdGUsIGNvbnRleHRWayk7CiAgICAgfQogCiAgICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIFByb2dyYW1Wazo6dXBkYXRlRGVmYXVs
dFVuaWZvcm1zRGVzY3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaykKLXsKLSAgICB1aW50
MzJfdCBzaGFkZXJTdGFnZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1TdGF0ZS5nZXRM
aW5rZWRTaGFkZXJTdGFnZUNvdW50KCkpOwotCi0gICAgZ2w6OlNoYWRlclZlY3RvcjxWa0Rlc2Ny
aXB0b3JCdWZmZXJJbmZvPiBkZXNjcmlwdG9yQnVmZmVySW5mbyhzaGFkZXJTdGFnZUNvdW50KTsK
LSAgICBnbDo6U2hhZGVyVmVjdG9yPFZrV3JpdGVEZXNjcmlwdG9yU2V0PiB3cml0ZURlc2NyaXB0
b3JJbmZvKHNoYWRlclN0YWdlQ291bnQpOwotCi0gICAgdWludDMyX3QgYmluZGluZ0luZGV4ID0g
MDsKLQotICAgIG1EZXNjcmlwdG9yQnVmZmVyc0NhY2hlLmNsZWFyKCk7Ci0KLSAgICAvLyBXcml0
ZSBkZWZhdWx0IHVuaWZvcm1zIGZvciBlYWNoIHNoYWRlciB0eXBlLgotICAgIGZvciAoY29uc3Qg
Z2w6OlNoYWRlclR5cGUgc2hhZGVyVHlwZSA6IG1TdGF0ZS5nZXRMaW5rZWRTaGFkZXJTdGFnZXMo
KSkKLSAgICB7Ci0gICAgICAgIERlZmF1bHRVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayAgPSBt
RGVmYXVsdFVuaWZvcm1CbG9ja3Nbc2hhZGVyVHlwZV07Ci0gICAgICAgIFZrRGVzY3JpcHRvckJ1
ZmZlckluZm8gJmJ1ZmZlckluZm8gPSBkZXNjcmlwdG9yQnVmZmVySW5mb1tiaW5kaW5nSW5kZXhd
OwotICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICAgID0gd3JpdGVEZXNj
cmlwdG9ySW5mb1tiaW5kaW5nSW5kZXhdOwotCi0gICAgICAgIGlmICghdW5pZm9ybUJsb2NrLnVu
aWZvcm1EYXRhLmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZrOjpCdWZmZXJIZWxw
ZXIgKmJ1ZmZlckhlbHBlciA9IHVuaWZvcm1CbG9jay5zdG9yYWdlLmdldEN1cnJlbnRCdWZmZXIo
KTsKLSAgICAgICAgICAgIGJ1ZmZlckluZm8uYnVmZmVyICAgICAgICAgICAgICA9IGJ1ZmZlckhl
bHBlci0+Z2V0QnVmZmVyKCkuZ2V0SGFuZGxlKCk7Ci0gICAgICAgICAgICBtRGVzY3JpcHRvckJ1
ZmZlcnNDYWNoZS5lbXBsYWNlX2JhY2soYnVmZmVySGVscGVyKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1FbXB0eUJ1ZmZlci5vblJlc291cmNlQWNj
ZXNzKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKLSAgICAgICAgICAgIGJ1ZmZl
ckluZm8uYnVmZmVyID0gbUVtcHR5QnVmZmVyLmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOwotICAg
ICAgICAgICAgbURlc2NyaXB0b3JCdWZmZXJzQ2FjaGUuZW1wbGFjZV9iYWNrKCZtRW1wdHlCdWZm
ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVySW5mby5vZmZzZXQgPSAwOwotICAgICAg
ICBidWZmZXJJbmZvLnJhbmdlICA9IFZLX1dIT0xFX1NJWkU7Ci0KLSAgICAgICAgd3JpdGVJbmZv
LnNUeXBlICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9XUklURV9ERVNDUklQVE9SX1NF
VDsKLSAgICAgICAgd3JpdGVJbmZvLnBOZXh0ICAgICAgICAgICAgPSBudWxscHRyOwotICAgICAg
ICB3cml0ZUluZm8uZHN0U2V0ICAgICAgICAgICA9IG1EZXNjcmlwdG9yU2V0c1trVW5pZm9ybXNB
bmRYZmJEZXNjcmlwdG9yU2V0SW5kZXhdOwotICAgICAgICB3cml0ZUluZm8uZHN0QmluZGluZyAg
ICAgICA9IGJpbmRpbmdJbmRleDsKLSAgICAgICAgd3JpdGVJbmZvLmRzdEFycmF5RWxlbWVudCAg
PSAwOwotICAgICAgICB3cml0ZUluZm8uZGVzY3JpcHRvckNvdW50ICA9IDE7Ci0gICAgICAgIHdy
aXRlSW5mby5kZXNjcmlwdG9yVHlwZSAgID0gVktfREVTQ1JJUFRPUl9UWVBFX1VOSUZPUk1fQlVG
RkVSX0RZTkFNSUM7Ci0gICAgICAgIHdyaXRlSW5mby5wSW1hZ2VJbmZvICAgICAgID0gbnVsbHB0
cjsKLSAgICAgICAgd3JpdGVJbmZvLnBCdWZmZXJJbmZvICAgICAgPSAmYnVmZmVySW5mbzsKLSAg
ICAgICAgd3JpdGVJbmZvLnBUZXhlbEJ1ZmZlclZpZXcgPSBudWxscHRyOwotCi0gICAgICAgICsr
YmluZGluZ0luZGV4OwotICAgIH0KLQotICAgIFZrRGV2aWNlIGRldmljZSA9IGNvbnRleHRWay0+
Z2V0RGV2aWNlKCk7Ci0KLSAgICBBU1NFUlQoYmluZGluZ0luZGV4ID09IHNoYWRlclN0YWdlQ291
bnQpOwotICAgIEFTU0VSVChzaGFkZXJTdGFnZUNvdW50IDw9IGtSZXNlcnZlZERlZmF1bHRVbmlm
b3JtQmluZGluZ0NvdW50KTsKLQotICAgIHZrVXBkYXRlRGVzY3JpcHRvclNldHMoZGV2aWNlLCBz
aGFkZXJTdGFnZUNvdW50LCB3cml0ZURlc2NyaXB0b3JJbmZvLmRhdGEoKSwgMCwgbnVsbHB0cik7
Ci19Ci0KLXZvaWQgUHJvZ3JhbVZrOjp1cGRhdGVCdWZmZXJzRGVzY3JpcHRvclNldChDb250ZXh0
VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbnRlcmZhY2VC
bG9jaz4gJmJsb2NrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWa0Rlc2NyaXB0b3JUeXBlIGRlc2NyaXB0b3JUeXBlKQotewotICAgIGlmIChibG9ja3MuZW1w
dHkoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBWa0Rlc2NyaXB0b3JT
ZXQgZGVzY3JpcHRvclNldCA9IG1EZXNjcmlwdG9yU2V0c1trU2hhZGVyUmVzb3VyY2VEZXNjcmlw
dG9yU2V0SW5kZXhdOwotCi0gICAgQVNTRVJUKGRlc2NyaXB0b3JUeXBlID09IFZLX0RFU0NSSVBU
T1JfVFlQRV9VTklGT1JNX0JVRkZFUiB8fAotICAgICAgICAgICBkZXNjcmlwdG9yVHlwZSA9PSBW
S19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIpOwotICAgIGNvbnN0IGJvb2wgaXNTdG9y
YWdlQnVmZmVyID0gZGVzY3JpcHRvclR5cGUgPT0gVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0Vf
QlVGRkVSOwotICAgIGNvbnN0IHVpbnQzMl90IGJpbmRpbmdTdGFydCA9Ci0gICAgICAgIGlzU3Rv
cmFnZUJ1ZmZlciA/IGdldFN0b3JhZ2VCbG9ja0JpbmRpbmdzT2Zmc2V0KCkgOiBnZXRVbmlmb3Jt
QmxvY2tCaW5kaW5nc09mZnNldCgpOwotCi0gICAgc3RhdGljX2Fzc2VydCgKLSAgICAgICAgZ2w6
OklNUExFTUVOVEFUSU9OX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElOR1MgPj0KLSAg
ICAgICAgICAgIGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1Ms
Ci0gICAgICAgICJUaGUgZGVzY3JpcHRvciBhcnJheXMgaGVyZSB3b3VsZCBoYXZlIGluYWRlcXVh
dGUgc2l6ZSBmb3IgdW5pZm9ybSBidWZmZXIgb2JqZWN0cyIpOwotCi0gICAgZ2w6OlN0b3JhZ2VC
dWZmZXJzQXJyYXk8VmtEZXNjcmlwdG9yQnVmZmVySW5mbz4gZGVzY3JpcHRvckJ1ZmZlckluZm87
Ci0gICAgZ2w6OlN0b3JhZ2VCdWZmZXJzQXJyYXk8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRl
RGVzY3JpcHRvckluZm87Ci0gICAgdWludDMyX3Qgd3JpdGVDb3VudCA9IDA7Ci0gICAgLy8gVGhl
IGJpbmRpbmcgaXMgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSBhcnJheUVsZW1lbnQgMCBpcyBlbmNv
dW50ZXJlZCwgd2hpY2ggbWVhbnMgdGhlcmUgd2lsbAotICAgIC8vIGJlIGFuIGluY3JlbWVudCBy
aWdodCBhdCB0aGUgc3RhcnQuICBTdGFydCBmcm9tIC0xIHRvIGdldCAwIGFzIHRoZSBmaXJzdCBi
aW5kaW5nLgotICAgIGludDMyX3QgY3VycmVudEJpbmRpbmcgPSAtMTsKLQotICAgIC8vIFdyaXRl
IHVuaWZvcm0gb3Igc3RvcmFnZSBidWZmZXJzLgotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0
ZSA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsKLSAgICBmb3IgKHVpbnQzMl90IGJ1ZmZlckluZGV4
ID0gMDsgYnVmZmVySW5kZXggPCBibG9ja3Muc2l6ZSgpOyArK2J1ZmZlckluZGV4KQotICAgIHsK
LSAgICAgICAgY29uc3QgZ2w6OkludGVyZmFjZUJsb2NrICZibG9jayA9IGJsb2Nrc1tidWZmZXJJ
bmRleF07Ci0gICAgICAgIGNvbnN0IGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVy
PiAmYnVmZmVyQmluZGluZyA9Ci0gICAgICAgICAgICBpc1N0b3JhZ2VCdWZmZXIgPyBnbFN0YXRl
LmdldEluZGV4ZWRTaGFkZXJTdG9yYWdlQnVmZmVyKGJsb2NrLmJpbmRpbmcpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiBnbFN0YXRlLmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJsb2Nr
LmJpbmRpbmcpOwotCi0gICAgICAgIGlmICghYmxvY2suaXNBcnJheSB8fCBibG9jay5hcnJheUVs
ZW1lbnQgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQXJyYXkgaW5kaWNlcyBvZiB0
aGUgc2FtZSBidWZmZXIgYmluZGluZyBhcmUgcGxhY2VkIHNlcXVlbnRpYWxseSBpbiBgYmxvY2tz
YC4KLSAgICAgICAgICAgIC8vIFRodXMsIHRoZSBibG9jayBiaW5kaW5nIGlzIHVwZGF0ZWQgb25s
eSB3aGVuIGFycmF5IGluZGV4IDAgaXMgZW5jb3VudGVyZWQuCi0gICAgICAgICAgICArK2N1cnJl
bnRCaW5kaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJ1ZmZlckJpbmRpbmcuZ2V0KCkg
PT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LQotICAgICAgICB1aW50MzJfdCBiaW5kaW5nICAgICAgICAgID0gYmluZGluZ1N0YXJ0ICsgY3Vy
cmVudEJpbmRpbmc7Ci0gICAgICAgIHVpbnQzMl90IGFycmF5RWxlbWVudCAgICAgPSBibG9jay5p
c0FycmF5ID8gYmxvY2suYXJyYXlFbGVtZW50IDogMDsKLSAgICAgICAgVmtEZXZpY2VTaXplIG1h
eEJsb2NrU2l6ZSA9IGlzU3RvcmFnZUJ1ZmZlciA/IDAgOiBibG9jay5kYXRhU2l6ZTsKLQotICAg
ICAgICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZvICZidWZmZXJJbmZvID0gZGVzY3JpcHRvckJ1ZmZl
ckluZm9bd3JpdGVDb3VudF07Ci0gICAgICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0ICZ3cml0ZUlu
Zm8gICAgPSB3cml0ZURlc2NyaXB0b3JJbmZvW3dyaXRlQ291bnRdOwotCi0gICAgICAgIFdyaXRl
QnVmZmVyRGVzY3JpcHRvclNldEJpbmRpbmcoYnVmZmVyQmluZGluZywgbWF4QmxvY2tTaXplLCBk
ZXNjcmlwdG9yU2V0LCBkZXNjcmlwdG9yVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiaW5kaW5nLCBhcnJheUVsZW1lbnQsIDAsICZidWZmZXJJbmZvLCAmd3Jp
dGVJbmZvKTsKLQotICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAgICAgICAgPSB2azo6
R2V0SW1wbChidWZmZXJCaW5kaW5nLmdldCgpKTsKLSAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAm
YnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOwotCi0gICAgICAgIGlmIChpc1N0
b3JhZ2VCdWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFdlIHNldCB0aGUgU0hBREVS
X1JFQURfQklUIHRvIGJlIGNvbnNlcnZhdGl2ZS4KLSAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3Mg
YWNjZXNzRmxhZ3MgPSBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklUIHwgVktfQUNDRVNTX1NIQURF
Ul9XUklURV9CSVQ7Ci0gICAgICAgICAgICBpZiAoY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLmNv
bW1hbmRHcmFwaC5lbmFibGVkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJ1ZmZl
ckhlbHBlci5vbldyaXRlKGNvbnRleHRWaywgcmVjb3JkZXIsIGFjY2Vzc0ZsYWdzKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoYWNjZXNzRmxhZ3MsICZidWZmZXJIZWxwZXIpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGNvbnRleHRWay0+Z2V0RmVhdHVyZXMoKS5jb21tYW5kR3JhcGguZW5hYmxlZCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBidWZmZXJIZWxwZXIub25SZWFkKGNvbnRl
eHRWaywgcmVjb3JkZXIsIFZLX0FDQ0VTU19VTklGT1JNX1JFQURfQklUKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1NfVU5JRk9STV9SRUFEX0JJVCwgJmJ1ZmZlckhl
bHBlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICArK3dyaXRlQ291bnQ7
Ci0gICAgfQotCi0gICAgVmtEZXZpY2UgZGV2aWNlID0gY29udGV4dFZrLT5nZXREZXZpY2UoKTsK
LQotICAgIHZrVXBkYXRlRGVzY3JpcHRvclNldHMoZGV2aWNlLCB3cml0ZUNvdW50LCB3cml0ZURl
c2NyaXB0b3JJbmZvLmRhdGEoKSwgMCwgbnVsbHB0cik7Ci19Ci0KLXZvaWQgUHJvZ3JhbVZrOjp1
cGRhdGVBdG9taWNDb3VudGVyQnVmZmVyc0Rlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0
VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqcmVjb3JkZXIpCi17Ci0gICAgY29uc3QgZ2w6
OlN0YXRlICZnbFN0YXRlID0gY29udGV4dFZrLT5nZXRTdGF0ZSgpOwotICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPGdsOjpBdG9taWNDb3VudGVyQnVmZmVyPiAmYXRvbWljQ291bnRlckJ1ZmZlcnMgPQot
ICAgICAgICBtU3RhdGUuZ2V0QXRvbWljQ291bnRlckJ1ZmZlcnMoKTsKLQotICAgIGlmIChhdG9t
aWNDb3VudGVyQnVmZmVycy5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFZrRGVzY3JpcHRvclNldCBkZXNjcmlwdG9yU2V0ID0gbURlc2NyaXB0b3JTZXRzW2tT
aGFkZXJSZXNvdXJjZURlc2NyaXB0b3JTZXRJbmRleF07Ci0KLSAgICBjb25zdCB1aW50MzJfdCBi
aW5kaW5nU3RhcnQgPSBnZXRBdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3NPZmZzZXQoKTsKLQot
ICAgIGdsOjpBdG9taWNDb3VudGVyQnVmZmVyc0FycmF5PFZrRGVzY3JpcHRvckJ1ZmZlckluZm8+
IGRlc2NyaXB0b3JCdWZmZXJJbmZvOwotICAgIGdsOjpBdG9taWNDb3VudGVyQnVmZmVyc0FycmF5
PFZrV3JpdGVEZXNjcmlwdG9yU2V0PiB3cml0ZURlc2NyaXB0b3JJbmZvOwotICAgIGdsOjpBdG9t
aWNDb3VudGVyQnVmZmVyTWFzayB3cml0dGVuQmluZGluZ3M7Ci0KLSAgICBSZW5kZXJlclZrICpy
ZW5kZXJlclZrID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpOwotICAgIGNvbnN0IFZrRGV2aWNl
U2l6ZSByZXF1aXJlZE9mZnNldEFsaWdubWVudCA9Ci0gICAgICAgIHJlbmRlcmVyVmstPmdldFBo
eXNpY2FsRGV2aWNlUHJvcGVydGllcygpLmxpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxp
Z25tZW50OwotCi0gICAgLy8gV3JpdGUgYXRvbWljIGNvdW50ZXIgYnVmZmVycy4KLSAgICBmb3Ig
KHVpbnQzMl90IGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBhdG9taWNDb3VudGVyQnVm
ZmVycy5zaXplKCk7ICsrYnVmZmVySW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCBnbDo6QXRv
bWljQ291bnRlckJ1ZmZlciAmYXRvbWljQ291bnRlckJ1ZmZlciA9IGF0b21pY0NvdW50ZXJCdWZm
ZXJzW2J1ZmZlckluZGV4XTsKLSAgICAgICAgdWludDMyX3QgYmluZGluZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBhdG9taWNDb3VudGVyQnVmZmVyLmJpbmRpbmc7Ci0gICAg
ICAgIGNvbnN0IGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYnVmZmVyQmlu
ZGluZyA9Ci0gICAgICAgICAgICBnbFN0YXRlLmdldEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVy
KGJpbmRpbmcpOwotCi0gICAgICAgIGlmIChidWZmZXJCaW5kaW5nLmdldCgpID09IG51bGxwdHIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAg
VmtEZXNjcmlwdG9yQnVmZmVySW5mbyAmYnVmZmVySW5mbyA9IGRlc2NyaXB0b3JCdWZmZXJJbmZv
W2JpbmRpbmddOwotICAgICAgICBWa1dyaXRlRGVzY3JpcHRvclNldCAmd3JpdGVJbmZvICAgID0g
d3JpdGVEZXNjcmlwdG9ySW5mb1tiaW5kaW5nXTsKLQotICAgICAgICBXcml0ZUJ1ZmZlckRlc2Ny
aXB0b3JTZXRCaW5kaW5nKGJ1ZmZlckJpbmRpbmcsIDAsIGRlc2NyaXB0b3JTZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JB
R0VfQlVGRkVSLCBiaW5kaW5nU3RhcnQsIGJpbmRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWlyZWRPZmZzZXRBbGlnbm1lbnQsICZidWZmZXJJbmZvLCAm
d3JpdGVJbmZvKTsKLQotICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgICAgICAgICAgICAgPSB2
azo6R2V0SW1wbChidWZmZXJCaW5kaW5nLmdldCgpKTsKLSAgICAgICAgdms6OkJ1ZmZlckhlbHBl
ciAmYnVmZmVySGVscGVyID0gYnVmZmVyVmstPmdldEJ1ZmZlcigpOwotCi0gICAgICAgIC8vIFdl
IHNldCBTSEFERVJfUkVBRF9CSVQgdG8gYmUgY29uc2VydmF0aXZlLgotICAgICAgICBidWZmZXJI
ZWxwZXIub25Xcml0ZShjb250ZXh0VmssIHJlY29yZGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklUIHwgVktfQUNDRVNTX1NIQURFUl9XUklU
RV9CSVQpOwotCi0gICAgICAgIHdyaXR0ZW5CaW5kaW5ncy5zZXQoYmluZGluZyk7Ci0gICAgfQot
Ci0gICAgLy8gQmluZCB0aGUgZW1wdHkgYnVmZmVyIHRvIGV2ZXJ5IGFycmF5IHNsb3QgdGhhdCdz
IHVudXNlZC4KLSAgICBtRW1wdHlCdWZmZXIub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5n
ZXRSZXNvdXJjZVVzZUxpc3QoKSk7Ci0gICAgZm9yIChzaXplX3QgYmluZGluZyA6IH53cml0dGVu
QmluZGluZ3MpCi0gICAgewotICAgICAgICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZvICZidWZmZXJJ
bmZvID0gZGVzY3JpcHRvckJ1ZmZlckluZm9bYmluZGluZ107Ci0gICAgICAgIFZrV3JpdGVEZXNj
cmlwdG9yU2V0ICZ3cml0ZUluZm8gICAgPSB3cml0ZURlc2NyaXB0b3JJbmZvW2JpbmRpbmddOwot
Ci0gICAgICAgIGJ1ZmZlckluZm8uYnVmZmVyID0gbUVtcHR5QnVmZmVyLmdldEJ1ZmZlcigpLmdl
dEhhbmRsZSgpOwotICAgICAgICBidWZmZXJJbmZvLm9mZnNldCA9IDA7Ci0gICAgICAgIGJ1ZmZl
ckluZm8ucmFuZ2UgID0gVktfV0hPTEVfU0laRTsKLQotICAgICAgICB3cml0ZUluZm8uc1R5cGUg
ICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1dSSVRFX0RFU0NSSVBUT1JfU0VUOwotICAg
ICAgICB3cml0ZUluZm8ucE5leHQgICAgICAgICAgICA9IG51bGxwdHI7Ci0gICAgICAgIHdyaXRl
SW5mby5kc3RTZXQgICAgICAgICAgID0gZGVzY3JpcHRvclNldDsKLSAgICAgICAgd3JpdGVJbmZv
LmRzdEJpbmRpbmcgICAgICAgPSBiaW5kaW5nU3RhcnQ7Ci0gICAgICAgIHdyaXRlSW5mby5kc3RB
cnJheUVsZW1lbnQgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpbmRpbmcpOwotICAgICAgICB3
cml0ZUluZm8uZGVzY3JpcHRvckNvdW50ICA9IDE7Ci0gICAgICAgIHdyaXRlSW5mby5kZXNjcmlw
dG9yVHlwZSAgID0gVktfREVTQ1JJUFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSOwotICAgICAgICB3
cml0ZUluZm8ucEltYWdlSW5mbyAgICAgICA9IG51bGxwdHI7Ci0gICAgICAgIHdyaXRlSW5mby5w
QnVmZmVySW5mbyAgICAgID0gJmJ1ZmZlckluZm87Ci0gICAgICAgIHdyaXRlSW5mby5wVGV4ZWxC
dWZmZXJWaWV3ID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBWa0RldmljZSBkZXZpY2UgPSBjb250
ZXh0VmstPmdldERldmljZSgpOwotCi0gICAgdmtVcGRhdGVEZXNjcmlwdG9yU2V0cyhkZXZpY2Us
IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSUywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlRGVzY3JpcHRvckluZm8uZGF0YSgpLCAwLCBudWxscHRy
KTsKLX0KLQotYW5nbGU6OlJlc3VsdCBQcm9ncmFtVms6OnVwZGF0ZUltYWdlc0Rlc2NyaXB0b3JT
ZXQoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyKQot
ewotICAgIGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gY29udGV4dFZrLT5nZXRTdGF0ZSgpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpJbWFn
ZUJpbmRpbmc+ICZpbWFnZUJpbmRpbmdzID0gbVN0YXRlLmdldEltYWdlQmluZGluZ3MoKTsKLQot
ICAgIGlmIChpbWFnZUJpbmRpbmdzLmVtcHR5KCkpCi0gICAgewotICAgICAgICByZXR1cm4gYW5n
bGU6OlJlc3VsdDo6Q29udGludWU7Ci0gICAgfQotCi0gICAgVmtEZXNjcmlwdG9yU2V0IGRlc2Ny
aXB0b3JTZXQgPSBtRGVzY3JpcHRvclNldHNba1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldElu
ZGV4XTsKLQotICAgIGNvbnN0IGdsOjpBY3RpdmVUZXh0dXJlQXJyYXk8VGV4dHVyZVZrICo+ICZh
Y3RpdmVJbWFnZXMgPSBjb250ZXh0VmstPmdldEFjdGl2ZUltYWdlcygpOwotCi0gICAgY29uc3Qg
dWludDMyX3QgYmluZGluZ1N0YXJ0ID0gZ2V0SW1hZ2VCaW5kaW5nc09mZnNldCgpOwotCi0gICAg
Z2w6OkltYWdlc0FycmF5PFZrRGVzY3JpcHRvckltYWdlSW5mbz4gZGVzY3JpcHRvckltYWdlSW5m
bzsKLSAgICBnbDo6SW1hZ2VzQXJyYXk8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRlRGVzY3Jp
cHRvckluZm87Ci0gICAgdWludDMyX3Qgd3JpdGVDb3VudCA9IDA7Ci0KLSAgICAvLyBXcml0ZSBp
bWFnZXMuCi0gICAgZm9yICh1aW50MzJfdCBpbWFnZUluZGV4ID0gMDsgaW1hZ2VJbmRleCA8IGlt
YWdlQmluZGluZ3Muc2l6ZSgpOyArK2ltYWdlSW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCBn
bDo6SW1hZ2VCaW5kaW5nICZpbWFnZUJpbmRpbmcgPSBpbWFnZUJpbmRpbmdzW2ltYWdlSW5kZXhd
OwotCi0gICAgICAgIEFTU0VSVCghaW1hZ2VCaW5kaW5nLnVucmVmZXJlbmNlZCk7Ci0KLSAgICAg
ICAgZm9yICh1aW50MzJfdCBhcnJheUVsZW1lbnQgPSAwOyBhcnJheUVsZW1lbnQgPCBpbWFnZUJp
bmRpbmcuYm91bmRJbWFnZVVuaXRzLnNpemUoKTsKLSAgICAgICAgICAgICArK2FycmF5RWxlbWVu
dCkKLSAgICAgICAgewotICAgICAgICAgICAgR0x1aW50IGltYWdlVW5pdCAgICAgICAgICAgICA9
IGltYWdlQmluZGluZy5ib3VuZEltYWdlVW5pdHNbYXJyYXlFbGVtZW50XTsKLSAgICAgICAgICAg
IGNvbnN0IGdsOjpJbWFnZVVuaXQgJmJpbmRpbmcgPSBnbFN0YXRlLmdldEltYWdlVW5pdChpbWFn
ZVVuaXQpOwotICAgICAgICAgICAgVGV4dHVyZVZrICp0ZXh0dXJlVmsgICAgICAgICA9IGFjdGl2
ZUltYWdlc1tpbWFnZVVuaXRdOwotCi0gICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgKmltYWdl
ICAgICAgICAgPSAmdGV4dHVyZVZrLT5nZXRJbWFnZSgpOwotICAgICAgICAgICAgY29uc3Qgdms6
OkltYWdlVmlldyAqaW1hZ2VWaWV3ID0gbnVsbHB0cjsKLQotICAgICAgICAgICAgQU5HTEVfVFJZ
KHRleHR1cmVWay0+Z2V0U3RvcmFnZUltYWdlVmlldyhjb250ZXh0VmssIChiaW5kaW5nLmxheWVy
ZWQgPT0gR0xfVFJVRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJpbmRpbmcubGV2ZWwsIGJpbmRpbmcubGF5ZXIsICZpbWFnZVZpZXcpKTsK
LQotICAgICAgICAgICAgLy8gTm90ZTogYmluZGluZy5hY2Nlc3MgaXMgdW51c2VkIGJlY2F1c2Ug
aXQgaXMgaW1wbGllZCBieSB0aGUgc2hhZGVyLgotCi0gICAgICAgICAgICAvLyBUT0RPKHN5b3Vz
c2VmaSk6IFN1cHBvcnQgaW1hZ2UgZGF0YSByZWludGVycHJldGF0aW9uIGJ5IHVzaW5nIGJpbmRp
bmcuZm9ybWF0LgotICAgICAgICAgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNTYzCi0KLSAg
ICAgICAgICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyAmaW1hZ2VJbmZvID0gZGVzY3JpcHRvcklt
YWdlSW5mb1t3cml0ZUNvdW50XTsKLSAgICAgICAgICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0ICZ3
cml0ZUluZm8gID0gd3JpdGVEZXNjcmlwdG9ySW5mb1t3cml0ZUNvdW50XTsKLQotICAgICAgICAg
ICAgaW1hZ2VJbmZvLnNhbXBsZXIgICAgID0gVktfTlVMTF9IQU5ETEU7Ci0gICAgICAgICAgICBp
bWFnZUluZm8uaW1hZ2VWaWV3ICAgPSBpbWFnZVZpZXctPmdldEhhbmRsZSgpOwotICAgICAgICAg
ICAgaW1hZ2VJbmZvLmltYWdlTGF5b3V0ID0gaW1hZ2UtPmdldEN1cnJlbnRMYXlvdXQoKTsKLQot
ICAgICAgICAgICAgd3JpdGVJbmZvLnNUeXBlICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQ
RV9XUklURV9ERVNDUklQVE9SX1NFVDsKLSAgICAgICAgICAgIHdyaXRlSW5mby5wTmV4dCAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHdyaXRlSW5mby5kc3RTZXQgICAgICAgICAg
ID0gZGVzY3JpcHRvclNldDsKLSAgICAgICAgICAgIHdyaXRlSW5mby5kc3RCaW5kaW5nICAgICAg
ID0gYmluZGluZ1N0YXJ0ICsgaW1hZ2VJbmRleDsKLSAgICAgICAgICAgIHdyaXRlSW5mby5kc3RB
cnJheUVsZW1lbnQgID0gYXJyYXlFbGVtZW50OwotICAgICAgICAgICAgd3JpdGVJbmZvLmRlc2Ny
aXB0b3JDb3VudCAgPSAxOwotICAgICAgICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JUeXBlICAg
PSBWS19ERVNDUklQVE9SX1RZUEVfU1RPUkFHRV9JTUFHRTsKLSAgICAgICAgICAgIHdyaXRlSW5m
by5wSW1hZ2VJbmZvICAgICAgID0gJmltYWdlSW5mbzsKLSAgICAgICAgICAgIHdyaXRlSW5mby5w
QnVmZmVySW5mbyAgICAgID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHdyaXRlSW5mby5wVGV4ZWxC
dWZmZXJWaWV3ID0gbnVsbHB0cjsKLQotICAgICAgICAgICAgKyt3cml0ZUNvdW50OwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgVmtEZXZpY2UgZGV2aWNlID0gY29udGV4dFZrLT5nZXREZXZpY2Uo
KTsKLQotICAgIHZrVXBkYXRlRGVzY3JpcHRvclNldHMoZGV2aWNlLCB3cml0ZUNvdW50LCB3cml0
ZURlc2NyaXB0b3JJbmZvLmRhdGEoKSwgMCwgbnVsbHB0cik7Ci0KLSAgICByZXR1cm4gYW5nbGU6
OlJlc3VsdDo6Q29udGludWU7Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjp1cGRhdGVT
aGFkZXJSZXNvdXJjZXNEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6
OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWNvcmRlcikKLXsKLSAgICBBTkdMRV9UUlkoYWxsb2Nh
dGVEZXNjcmlwdG9yU2V0KGNvbnRleHRWaywga1NoYWRlclJlc291cmNlRGVzY3JpcHRvclNldElu
ZGV4KSk7Ci0KLSAgICB1cGRhdGVCdWZmZXJzRGVzY3JpcHRvclNldChjb250ZXh0VmssIHJlY29y
ZGVyLCBtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrcygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZLX0RFU0NSSVBUT1JfVFlQRV9VTklGT1JNX0JVRkZFUik7Ci0gICAgdXBkYXRlQnVm
ZmVyc0Rlc2NyaXB0b3JTZXQoY29udGV4dFZrLCByZWNvcmRlciwgbVN0YXRlLmdldFNoYWRlclN0
b3JhZ2VCbG9ja3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19ERVNDUklQ
VE9SX1RZUEVfU1RPUkFHRV9CVUZGRVIpOwotICAgIHVwZGF0ZUF0b21pY0NvdW50ZXJCdWZmZXJz
RGVzY3JpcHRvclNldChjb250ZXh0VmssIHJlY29yZGVyKTsKLSAgICByZXR1cm4gdXBkYXRlSW1h
Z2VzRGVzY3JpcHRvclNldChjb250ZXh0VmssIHJlY29yZGVyKTsKLX0KLQotYW5nbGU6OlJlc3Vs
dCBQcm9ncmFtVms6OnVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldChDb250ZXh0
VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpmcmFtZWJ1ZmZlcikK
LXsKLSAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUgPSBjb250ZXh0VmstPmdldFN0YXRlKCk7
Ci0gICAgQVNTRVJUKGhhc1RyYW5zZm9ybUZlZWRiYWNrT3V0cHV0KCkpOwotCi0gICAgVHJhbnNm
b3JtRmVlZGJhY2tWayAqdHJhbnNmb3JtRmVlZGJhY2tWayA9IHZrOjpHZXRJbXBsKGdsU3RhdGUu
Z2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOwotICAgIHRyYW5zZm9ybUZlZWRiYWNrVmst
PmFkZEZyYW1lYnVmZmVyRGVwZW5kZW5jeShjb250ZXh0VmssIG1TdGF0ZSwgZnJhbWVidWZmZXIp
OwotCi0gICAgQU5HTEVfVFJZKGFsbG9jYXRlRGVzY3JpcHRvclNldChjb250ZXh0VmssIGtVbmlm
b3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleCkpOwotCi0gICAgdXBkYXRlRGVmYXVsdFVuaWZv
cm1zRGVzY3JpcHRvclNldChjb250ZXh0VmspOwotICAgIHVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNr
RGVzY3JpcHRvclNldEltcGwoY29udGV4dFZrKTsKLQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKLX0KLQotdm9pZCBQcm9ncmFtVms6OnVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNr
RGVzY3JpcHRvclNldEltcGwoQ29udGV4dFZrICpjb250ZXh0VmspCi17Ci0gICAgY29uc3QgZ2w6
OlN0YXRlICZnbFN0YXRlICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKTsK
LSAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gZ2xTdGF0ZS5n
ZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKLQotICAgIGlmICghaGFzVHJhbnNmb3JtRmVl
ZGJhY2tPdXRwdXQoKSkKLSAgICB7Ci0gICAgICAgIC8vIElmIHhmYiBoYXMgbm8gb3V0cHV0IHRo
ZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIGRlc2NyaXB0b3Igc2V0LgotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmICghZ2xTdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlKCkpCi0g
ICAgewotICAgICAgICAvLyBXZSBzZXQgZW1wdHkgQnVmZmVyIHRvIHhmYiBkZXNjcmlwdG9yIHNl
dCBiZWNhdXNlIHhmYiBkZXNjcmlwdG9yIHNldAotICAgICAgICAvLyByZXF1aXJlcyB2YWxpZCBi
dWZmZXIgYmluZGluZ3MsIGV2ZW4gaWYgdGhleSBhcmUgZW1wdHkgYnVmZmVyLAotICAgICAgICAv
LyBvdGhlcndpc2UgVnVsa2FuIHZhbGlkYXRpb24gbGF5ZXIgZ2VuZXJhdGVzIGVycm9ycy4KLSAg
ICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICBUcmFu
c2Zvcm1GZWVkYmFja1ZrICp0cmFuc2Zvcm1GZWVkYmFja1ZrID0gdms6OkdldEltcGwodHJhbnNm
b3JtRmVlZGJhY2spOwotICAgICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tWay0+aW5pdERlc2Ny
aXB0b3JTZXQoCi0gICAgICAgICAgICAgICAgY29udGV4dFZrLCBtU3RhdGUuZ2V0VHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJDb3VudCgpLCAmbUVtcHR5QnVmZmVyLAotICAgICAgICAgICAgICAgIG1E
ZXNjcmlwdG9yU2V0c1trVW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXhdKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVHJhbnNmb3JtRmVlZGJhY2tWayAq
dHJhbnNmb3JtRmVlZGJhY2tWayA9IHZrOjpHZXRJbXBsKGdsU3RhdGUuZ2V0Q3VycmVudFRyYW5z
Zm9ybUZlZWRiYWNrKCkpOwotICAgIHRyYW5zZm9ybUZlZWRiYWNrVmstPnVwZGF0ZURlc2NyaXB0
b3JTZXQoY29udGV4dFZrLCBtU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtRGVzY3JpcHRvclNldHNba1VuaWZvcm1zQW5kWGZiRGVzY3JpcHRvclNl
dEluZGV4XSk7Ci19Ci0KLWFuZ2xlOjpSZXN1bHQgUHJvZ3JhbVZrOjp1cGRhdGVUZXh0dXJlc0Rl
c2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmspCi17Ci0gICAgY29uc3Qgdms6OlRleHR1
cmVEZXNjcmlwdG9yRGVzYyAmdGV4dHVyZXNEZXNjID0gY29udGV4dFZrLT5nZXRBY3RpdmVUZXh0
dXJlc0Rlc2MoKTsKLQotICAgIGF1dG8gaXRlciA9IG1UZXh0dXJlRGVzY3JpcHRvcnNDYWNoZS5m
aW5kKHRleHR1cmVzRGVzYyk7Ci0gICAgaWYgKGl0ZXIgIT0gbVRleHR1cmVEZXNjcmlwdG9yc0Nh
Y2hlLmVuZCgpKQotICAgIHsKLSAgICAgICAgbURlc2NyaXB0b3JTZXRzW2tUZXh0dXJlRGVzY3Jp
cHRvclNldEluZGV4XSA9IGl0ZXItPnNlY29uZDsKLSAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwotICAgIH0KLQotICAgIEFTU0VSVChoYXNUZXh0dXJlcygpKTsKLSAgICBi
b29sIG5ld1Bvb2xBbGxvY2F0ZWQ7Ci0gICAgQU5HTEVfVFJZKAotICAgICAgICBhbGxvY2F0ZURl
c2NyaXB0b3JTZXRBbmRHZXRJbmZvKGNvbnRleHRWaywga1RleHR1cmVEZXNjcmlwdG9yU2V0SW5k
ZXgsICZuZXdQb29sQWxsb2NhdGVkKSk7Ci0KLSAgICAvLyBDbGVhciBkZXNjcmlwdG9yIHNldCBj
YWNoZS4gSXQgbWF5IG5vIGxvbmdlciBiZSB2YWxpZC4KLSAgICBpZiAobmV3UG9vbEFsbG9jYXRl
ZCkKLSAgICB7Ci0gICAgICAgIG1UZXh0dXJlRGVzY3JpcHRvcnNDYWNoZS5jbGVhcigpOwotICAg
IH0KLQotICAgIFZrRGVzY3JpcHRvclNldCBkZXNjcmlwdG9yU2V0ID0gbURlc2NyaXB0b3JTZXRz
W2tUZXh0dXJlRGVzY3JpcHRvclNldEluZGV4XTsKLQotICAgIGdsOjpBY3RpdmVUZXh0dXJlQXJy
YXk8VmtEZXNjcmlwdG9ySW1hZ2VJbmZvPiBkZXNjcmlwdG9ySW1hZ2VJbmZvOwotICAgIGdsOjpB
Y3RpdmVUZXh0dXJlQXJyYXk8VmtXcml0ZURlc2NyaXB0b3JTZXQ+IHdyaXRlRGVzY3JpcHRvcklu
Zm87Ci0gICAgdWludDMyX3Qgd3JpdGVDb3VudCA9IDA7Ci0KLSAgICBjb25zdCBnbDo6QWN0aXZl
VGV4dHVyZUFycmF5PHZrOjpUZXh0dXJlVW5pdD4gJmFjdGl2ZVRleHR1cmVzID0gY29udGV4dFZr
LT5nZXRBY3RpdmVUZXh0dXJlcygpOwotCi0gICAgYm9vbCBlbXVsYXRlU2VhbWZ1bEN1YmVNYXBT
YW1wbGluZyA9IGNvbnRleHRWay0+ZW11bGF0ZVNlYW1mdWxDdWJlTWFwU2FtcGxpbmcoKTsKLSAg
ICBib29sIHVzZU9sZFJld3JpdGVTdHJ1Y3RTYW1wbGVycyAgID0gY29udGV4dFZrLT51c2VPbGRS
ZXdyaXRlU3RydWN0U2FtcGxlcnMoKTsKLQotICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0
cmluZywgdWludDMyX3Q+IG1hcHBlZFNhbXBsZXJOYW1lVG9CaW5kaW5nSW5kZXg7Ci0gICAgc3Rk
Ojp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4gbWFwcGVkU2FtcGxlck5hbWVU
b0FycmF5T2Zmc2V0OwotCi0gICAgdWludDMyX3QgY3VycmVudEJpbmRpbmdJbmRleCA9IDA7Ci0K
LSAgICBmb3IgKHVpbnQzMl90IHRleHR1cmVJbmRleCA9IDA7IHRleHR1cmVJbmRleCA8IG1TdGF0
ZS5nZXRTYW1wbGVyQmluZGluZ3MoKS5zaXplKCk7Ci0gICAgICAgICArK3RleHR1cmVJbmRleCkK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpTYW1wbGVyQmluZGluZyAmc2FtcGxlckJpbmRpbmcg
PSBtU3RhdGUuZ2V0U2FtcGxlckJpbmRpbmdzKClbdGV4dHVyZUluZGV4XTsKLQotICAgICAgICBB
U1NFUlQoIXNhbXBsZXJCaW5kaW5nLnVucmVmZXJlbmNlZCk7Ci0KLSAgICAgICAgdWludDMyX3Qg
dW5pZm9ybUluZGV4ID0gbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21TYW1wbGVySW5kZXgodGV4
dHVyZUluZGV4KTsKLSAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJnNhbXBsZXJVbmlm
b3JtID0gbVN0YXRlLmdldFVuaWZvcm1zKClbdW5pZm9ybUluZGV4XTsKLSAgICAgICAgc3RkOjpz
dHJpbmcgbWFwcGVkU2FtcGxlck5hbWUgICAgICAgICAgID0gR2xzbGFuZ0dldE1hcHBlZFNhbXBs
ZXJOYW1lKHNhbXBsZXJVbmlmb3JtLm5hbWUpOwotCi0gICAgICAgIGlmICh1c2VPbGRSZXdyaXRl
U3RydWN0U2FtcGxlcnMgfHwKLSAgICAgICAgICAgIG1hcHBlZFNhbXBsZXJOYW1lVG9CaW5kaW5n
SW5kZXguZW1wbGFjZShtYXBwZWRTYW1wbGVyTmFtZSwgY3VycmVudEJpbmRpbmdJbmRleCkuc2Vj
b25kKQotICAgICAgICB7Ci0gICAgICAgICAgICBjdXJyZW50QmluZGluZ0luZGV4Kys7Ci0gICAg
ICAgIH0KLQotICAgICAgICB1aW50MzJfdCBiaW5kaW5nSW5kZXggPSB0ZXh0dXJlSW5kZXg7Ci0g
ICAgICAgIHVpbnQzMl90IGFycmF5T2Zmc2V0ICA9IDA7Ci0gICAgICAgIHVpbnQzMl90IGFycmF5
U2l6ZSAgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzYW1wbGVyQmluZGluZy5ib3VuZFRleHR1
cmVVbml0cy5zaXplKCkpOwotCi0gICAgICAgIGlmICghdXNlT2xkUmV3cml0ZVN0cnVjdFNhbXBs
ZXJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBiaW5kaW5nSW5kZXggPSBtYXBwZWRTYW1wbGVy
TmFtZVRvQmluZGluZ0luZGV4W21hcHBlZFNhbXBsZXJOYW1lXTsKLSAgICAgICAgICAgIGFycmF5
T2Zmc2V0ICA9IG1hcHBlZFNhbXBsZXJOYW1lVG9BcnJheU9mZnNldFttYXBwZWRTYW1wbGVyTmFt
ZV07Ci0gICAgICAgICAgICAvLyBGcm9udC1lbmQgZ2VuZXJhdGVzIGFycmF5IGVsZW1lbnRzIGlu
IG9yZGVyLCBzbyB3ZSBjYW4ganVzdCBpbmNyZW1lbnQKLSAgICAgICAgICAgIC8vIHRoZSBvZmZz
ZXQgZWFjaCB0aW1lIHdlIHByb2Nlc3MgYSBuZXN0ZWQgYXJyYXkuCi0gICAgICAgICAgICBtYXBw
ZWRTYW1wbGVyTmFtZVRvQXJyYXlPZmZzZXRbbWFwcGVkU2FtcGxlck5hbWVdICs9IGFycmF5U2l6
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodWludDMyX3QgYXJyYXlFbGVtZW50ID0gMDsg
YXJyYXlFbGVtZW50IDwgYXJyYXlTaXplOyArK2FycmF5RWxlbWVudCkKLSAgICAgICAgewotICAg
ICAgICAgICAgR0x1aW50IHRleHR1cmVVbml0ICAgPSBzYW1wbGVyQmluZGluZy5ib3VuZFRleHR1
cmVVbml0c1thcnJheUVsZW1lbnRdOwotICAgICAgICAgICAgVGV4dHVyZVZrICp0ZXh0dXJlVmsg
PSBhY3RpdmVUZXh0dXJlc1t0ZXh0dXJlVW5pdF0udGV4dHVyZTsKLSAgICAgICAgICAgIFNhbXBs
ZXJWayAqc2FtcGxlclZrID0gYWN0aXZlVGV4dHVyZXNbdGV4dHVyZVVuaXRdLnNhbXBsZXI7Ci0K
LSAgICAgICAgICAgIHZrOjpJbWFnZUhlbHBlciAmaW1hZ2UgPSB0ZXh0dXJlVmstPmdldEltYWdl
KCk7Ci0KLSAgICAgICAgICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyAmaW1hZ2VJbmZvID0gZGVz
Y3JpcHRvckltYWdlSW5mb1t3cml0ZUNvdW50XTsKLQotICAgICAgICAgICAgLy8gVXNlIGJvdW5k
IHNhbXBsZXIgb2JqZWN0IGlmIG9uZSBwcmVzZW50LCBvdGhlcndpc2UgdXNlIHRleHR1cmUncyBz
YW1wbGVyCi0gICAgICAgICAgICBjb25zdCB2azo6U2FtcGxlciAmc2FtcGxlciA9Ci0gICAgICAg
ICAgICAgICAgKHNhbXBsZXJWayAhPSBudWxscHRyKSA/IHNhbXBsZXJWay0+Z2V0U2FtcGxlcigp
IDogdGV4dHVyZVZrLT5nZXRTYW1wbGVyKCk7Ci0KLSAgICAgICAgICAgIGltYWdlSW5mby5zYW1w
bGVyICAgICA9IHNhbXBsZXIuZ2V0SGFuZGxlKCk7Ci0gICAgICAgICAgICBpbWFnZUluZm8uaW1h
Z2VMYXlvdXQgPSBpbWFnZS5nZXRDdXJyZW50TGF5b3V0KCk7Ci0KLSAgICAgICAgICAgIGlmIChl
bXVsYXRlU2VhbWZ1bEN1YmVNYXBTYW1wbGluZykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAvLyBJZiBlbXVsYXRpbmcgc2VhbWZ1bCBjdWJlbWFwcGluZywgdXNlIHRoZSBmZXRjaCBp
bWFnZSB2aWV3LiAgVGhpcyBpcyBiYXNpY2FsbHkKLSAgICAgICAgICAgICAgICAvLyB0aGUgc2Ft
ZSBpbWFnZSB2aWV3IGFzIHJlYWQsIGV4Y2VwdCBpdCdzIGEgMkRBcnJheSB2aWV3IGZvciBjdWJl
IG1hcHMuCi0gICAgICAgICAgICAgICAgaW1hZ2VJbmZvLmltYWdlVmlldyA9Ci0gICAgICAgICAg
ICAgICAgICAgIHRleHR1cmVWay0+Z2V0RmV0Y2hJbWFnZVZpZXdBbmRSZWNvcmRVc2UoY29udGV4
dFZrKS5nZXRIYW5kbGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbWFnZUluZm8uaW1hZ2VWaWV3ID0KLSAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZVZrLT5nZXRSZWFkSW1hZ2VWaWV3QW5kUmVjb3JkVXNlKGNvbnRl
eHRWaykuZ2V0SGFuZGxlKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFZrV3JpdGVE
ZXNjcmlwdG9yU2V0ICZ3cml0ZUluZm8gPSB3cml0ZURlc2NyaXB0b3JJbmZvW3dyaXRlQ291bnRd
OwotCi0gICAgICAgICAgICB3cml0ZUluZm8uc1R5cGUgICAgICAgICAgICA9IFZLX1NUUlVDVFVS
RV9UWVBFX1dSSVRFX0RFU0NSSVBUT1JfU0VUOwotICAgICAgICAgICAgd3JpdGVJbmZvLnBOZXh0
ICAgICAgICAgICAgPSBudWxscHRyOwotICAgICAgICAgICAgd3JpdGVJbmZvLmRzdFNldCAgICAg
ICAgICAgPSBkZXNjcmlwdG9yU2V0OwotICAgICAgICAgICAgd3JpdGVJbmZvLmRzdEJpbmRpbmcg
ICAgICAgPSBiaW5kaW5nSW5kZXg7Ci0gICAgICAgICAgICB3cml0ZUluZm8uZHN0QXJyYXlFbGVt
ZW50ICA9IGFycmF5T2Zmc2V0ICsgYXJyYXlFbGVtZW50OwotICAgICAgICAgICAgd3JpdGVJbmZv
LmRlc2NyaXB0b3JDb3VudCAgPSAxOwotICAgICAgICAgICAgd3JpdGVJbmZvLmRlc2NyaXB0b3JU
eXBlICAgPSBWS19ERVNDUklQVE9SX1RZUEVfQ09NQklORURfSU1BR0VfU0FNUExFUjsKLSAgICAg
ICAgICAgIHdyaXRlSW5mby5wSW1hZ2VJbmZvICAgICAgID0gJmltYWdlSW5mbzsKLSAgICAgICAg
ICAgIHdyaXRlSW5mby5wQnVmZmVySW5mbyAgICAgID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHdy
aXRlSW5mby5wVGV4ZWxCdWZmZXJWaWV3ID0gbnVsbHB0cjsKLQotICAgICAgICAgICAgKyt3cml0
ZUNvdW50OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgVmtEZXZpY2UgZGV2aWNlID0gY29udGV4
dFZrLT5nZXREZXZpY2UoKTsKLQotICAgIEFTU0VSVCh3cml0ZUNvdW50ID4gMCk7Ci0KLSAgICB2
a1VwZGF0ZURlc2NyaXB0b3JTZXRzKGRldmljZSwgd3JpdGVDb3VudCwgd3JpdGVEZXNjcmlwdG9y
SW5mby5kYXRhKCksIDAsIG51bGxwdHIpOwotCi0gICAgbVRleHR1cmVEZXNjcmlwdG9yc0NhY2hl
LmVtcGxhY2UodGV4dHVyZXNEZXNjLCBkZXNjcmlwdG9yU2V0KTsKLQotICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQogdm9pZCBQcm9ncmFtVms6OnNldERlZmF1bHRVbmlm
b3JtQmxvY2tzTWluU2l6ZUZvclRlc3Rpbmcoc2l6ZV90IG1pblNpemUpCiB7CiAgICAgZm9yIChE
ZWZhdWx0VW5pZm9ybUJsb2NrICZibG9jayA6IG1EZWZhdWx0VW5pZm9ybUJsb2NrcykKQEAgLTE4
MTMsNzUgKzc2Miw0IEBAIHZvaWQgUHJvZ3JhbVZrOjpzZXREZWZhdWx0VW5pZm9ybUJsb2Nrc01p
blNpemVGb3JUZXN0aW5nKHNpemVfdCBtaW5TaXplKQogICAgIH0KIH0KIAotYW5nbGU6OlJlc3Vs
dCBQcm9ncmFtVms6OnVwZGF0ZURlc2NyaXB0b3JTZXRzKENvbnRleHRWayAqY29udGV4dFZrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyKQotewotICAgIC8vIENhbiBwcm9iYWJseSB1c2UgYmV0dGVy
IGRpcnR5IGJpdHMgaGVyZS4KLQotICAgIGlmIChtRGVzY3JpcHRvclNldHMuZW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwotCi0gICAgLy8gRmluZCB0aGUg
bWF4aW11bSBub24tbnVsbCBkZXNjcmlwdG9yIHNldC4gIFRoaXMgaXMgdXNlZCBpbiBjb25qdW5j
dGlvbiB3aXRoIGEgZHJpdmVyCi0gICAgLy8gd29ya2Fyb3VuZCB0byBiaW5kIGVtcHR5IGRlc2Ny
aXB0b3Igc2V0cyBvbmx5IGZvciBnYXBzIGluIGJldHdlZW4gMCBhbmQgbWF4IGFuZCBhdm9pZAot
ICAgIC8vIGJpbmRpbmcgdW5uZWNlc3NhcnkgZW1wdHkgZGVzY3JpcHRvciBzZXRzIGZvciB0aGUg
c2V0cyBiZXlvbmQgbWF4LgotICAgIGNvbnN0IHNpemVfdCBkZXNjcmlwdG9yU2V0U3RhcnQgPSBr
VW5pZm9ybXNBbmRYZmJEZXNjcmlwdG9yU2V0SW5kZXg7Ci0gICAgc2l6ZV90IGRlc2NyaXB0b3JT
ZXRSYW5nZSAgICAgICA9IDA7Ci0gICAgZm9yIChzaXplX3QgZGVzY3JpcHRvclNldEluZGV4ID0g
ZGVzY3JpcHRvclNldFN0YXJ0OwotICAgICAgICAgZGVzY3JpcHRvclNldEluZGV4IDwgbURlc2Ny
aXB0b3JTZXRzLnNpemUoKTsgKytkZXNjcmlwdG9yU2V0SW5kZXgpCi0gICAgewotICAgICAgICBp
ZiAobURlc2NyaXB0b3JTZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF0gIT0gVktfTlVMTF9IQU5ETEUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JTZXRSYW5nZSA9IGRlc2NyaXB0b3JT
ZXRJbmRleCArIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb25zdCBWa1BpcGVsaW5lQmlu
ZFBvaW50IHBpcGVsaW5lQmluZFBvaW50ID0KLSAgICAgICAgbVN0YXRlLmlzQ29tcHV0ZSgpID8g
VktfUElQRUxJTkVfQklORF9QT0lOVF9DT01QVVRFIDogVktfUElQRUxJTkVfQklORF9QT0lOVF9H
UkFQSElDUzsKLQotICAgIGZvciAodWludDMyX3QgZGVzY3JpcHRvclNldEluZGV4ID0gZGVzY3Jp
cHRvclNldFN0YXJ0OyBkZXNjcmlwdG9yU2V0SW5kZXggPCBkZXNjcmlwdG9yU2V0UmFuZ2U7Ci0g
ICAgICAgICArK2Rlc2NyaXB0b3JTZXRJbmRleCkKLSAgICB7Ci0gICAgICAgIFZrRGVzY3JpcHRv
clNldCBkZXNjU2V0ID0gbURlc2NyaXB0b3JTZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF07Ci0gICAg
ICAgIGlmIChkZXNjU2V0ID09IFZLX05VTExfSEFORExFKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKS0+Z2V0RmVhdHVyZXMoKS5iaW5kRW1wdHlG
b3JVbnVzZWREZXNjcmlwdG9yU2V0cy5lbmFibGVkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXb3JrYXJv
dW5kIGEgZHJpdmVyIGJ1ZyB3aGVyZSBtaXNzaW5nICh0aG91Z2ggdW51c2VkKSBkZXNjcmlwdG9y
IHNldHMgaW5kaWNlcyBjYXVzZQotICAgICAgICAgICAgLy8gbGF0ZXIgc2V0cyB0byBtaXNiZWhh
dmUuCi0gICAgICAgICAgICBpZiAobUVtcHR5RGVzY3JpcHRvclNldHNbZGVzY3JpcHRvclNldElu
ZGV4XSA9PSBWS19OVUxMX0hBTkRMRSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b25zdCB2azo6RGVzY3JpcHRvclNldExheW91dCAmZGVzY3JpcHRvclNldExheW91dCA9Ci0gICAg
ICAgICAgICAgICAgICAgIG1EZXNjcmlwdG9yU2V0TGF5b3V0c1tkZXNjcmlwdG9yU2V0SW5kZXhd
LmdldCgpOwotCi0gICAgICAgICAgICAgICAgQU5HTEVfVFJZKG1EeW5hbWljRGVzY3JpcHRvclBv
b2xzW2Rlc2NyaXB0b3JTZXRJbmRleF0uYWxsb2NhdGVTZXRzKAotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0VmssIGRlc2NyaXB0b3JTZXRMYXlvdXQucHRyKCksIDEsCi0gICAgICAgICAgICAg
ICAgICAgICZtRGVzY3JpcHRvclBvb2xCaW5kaW5nc1tkZXNjcmlwdG9yU2V0SW5kZXhdLAotICAg
ICAgICAgICAgICAgICAgICAmbUVtcHR5RGVzY3JpcHRvclNldHNbZGVzY3JpcHRvclNldEluZGV4
XSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVzY1NldCA9IG1FbXB0eURlc2NyaXB0
b3JTZXRzW2Rlc2NyaXB0b3JTZXRJbmRleF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEZWZh
dWx0IHVuaWZvcm1zIGFyZSBlbmNvbXBhc3NlZCBpbiBhIGJsb2NrIHBlciBzaGFkZXIgc3RhZ2Us
IGFuZCB0aGV5IGFyZSBhc3NpZ25lZAotICAgICAgICAvLyB0aHJvdWdoIGR5bmFtaWMgdW5pZm9y
bSBidWZmZXJzIChyZXF1aXJpbmcgZHluYW1pYyBvZmZzZXRzKS4gIE5vIG90aGVyIGRlc2NyaXB0
b3IKLSAgICAgICAgLy8gcmVxdWlyZXMgYSBkeW5hbWljIG9mZnNldC4KLSAgICAgICAgY29uc3Qg
dWludDMyX3QgdW5pZm9ybUJsb2NrT2Zmc2V0Q291bnQgPQotICAgICAgICAgICAgZGVzY3JpcHRv
clNldEluZGV4ID09IGtVbmlmb3Jtc0FuZFhmYkRlc2NyaXB0b3JTZXRJbmRleAotICAgICAgICAg
ICAgICAgID8gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1EeW5hbWljQnVmZmVyT2Zmc2V0cy5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgOiAwOwotCi0gICAgICAgIGNvbW1hbmRCdWZmZXItPmJpbmRE
ZXNjcmlwdG9yU2V0cyhtUGlwZWxpbmVMYXlvdXQuZ2V0KCksIHBpcGVsaW5lQmluZFBvaW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvclNldElu
ZGV4LCAxLCAmZGVzY1NldCwgdW5pZm9ybUJsb2NrT2Zmc2V0Q291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRHluYW1pY0J1ZmZlck9mZnNldHMuZGF0YSgp
KTsKLSAgICB9Ci0KLSAgICBmb3IgKHZrOjpCdWZmZXJIZWxwZXIgKmJ1ZmZlciA6IG1EZXNjcmlw
dG9yQnVmZmVyc0NhY2hlKQotICAgIHsKLSAgICAgICAgYnVmZmVyLT5vblJlc291cmNlQWNjZXNz
KCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
YW5nbGU6OlJlc3VsdDo6Q29udGludWU7Ci19CiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
UHJvZ3JhbVZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1Byb2dyYW1Way5oCmluZGV4IDYxMTE5ZDBjOWRlYzZmNWY3OGYyNzVkNWJmNDAz
YTkzMTkyZTZmMGIuLmJjZWYyOTBlN2UyODFkYzZkOGFiM2ZhMDIyNGMwODFlNDEzYTBiYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vUHJvZ3JhbVZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2xzbGFuZ193cmFwcGVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9Qcm9ncmFtRXhlY3V0YWJsZVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1JlbmRlcmVyVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
VHJhbnNmb3JtRmVlZGJhY2tWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi92a19oZWxwZXJzLmgiCkBAIC05OSwzNiArMTAwLDE0IEBAIGNsYXNzIFByb2dyYW1WayA6IHB1
YmxpYyBQcm9ncmFtSW1wbAogICAgIHZvaWQgZ2V0VW5pZm9ybWl2KGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcykgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRVbmlmb3JtdWl2KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCBsb2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBz
ZXRQYXRoRnJhZ21lbnRJbnB1dEdlbihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlkZTsKLQotICAg
IC8vIEFsc28gaW5pdGlhbGl6ZXMgdGhlIHBpcGVsaW5lIGxheW91dCwgZGVzY3JpcHRvciBzZXQg
bGF5b3V0cywgYW5kIHVzZWQgZGVzY3JpcHRvciByYW5nZXMuCi0KICAgICBhbmdsZTo6UmVzdWx0
IHVwZGF0ZVVuaWZvcm1zKENvbnRleHRWayAqY29udGV4dFZrKTsKLSAgICBhbmdsZTo6UmVzdWx0
IHVwZGF0ZVRleHR1cmVzRGVzY3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWayk7Ci0gICAg
YW5nbGU6OlJlc3VsdCB1cGRhdGVTaGFkZXJSZXNvdXJjZXNEZXNjcmlwdG9yU2V0KENvbnRleHRW
ayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyKTsKLSAgICBhbmds
ZTo6UmVzdWx0IHVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldChDb250ZXh0Vmsg
KmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKmZyYW1lYnVmZmVyKTsKLQotICAgIGFu
Z2xlOjpSZXN1bHQgdXBkYXRlRGVzY3JpcHRvclNldHMoQ29udGV4dFZrICpjb250ZXh0VmssIHZr
OjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKTsKIAogICAgIC8vIEZvciB0ZXN0aW5nIG9u
bHkuCiAgICAgdm9pZCBzZXREZWZhdWx0VW5pZm9ybUJsb2Nrc01pblNpemVGb3JUZXN0aW5nKHNp
emVfdCBtaW5TaXplKTsKIAotICAgIGNvbnN0IHZrOjpQaXBlbGluZUxheW91dCAmZ2V0UGlwZWxp
bmVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtUGlwZWxpbmVMYXlvdXQuZ2V0KCk7IH0KLQotICAg
IGJvb2wgaGFzRGVmYXVsdFVuaWZvcm1zKCkgY29uc3QgeyByZXR1cm4gIW1TdGF0ZS5nZXREZWZh
dWx0VW5pZm9ybVJhbmdlKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzVGV4dHVyZXMoKSBjb25z
dCB7IHJldHVybiAhbVN0YXRlLmdldFNhbXBsZXJCaW5kaW5ncygpLmVtcHR5KCk7IH0KLSAgICBi
b29sIGhhc1VuaWZvcm1CdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gIW1TdGF0ZS5nZXRVbmlmb3Jt
QmxvY2tzKCkuZW1wdHkoKTsgfQotICAgIGJvb2wgaGFzU3RvcmFnZUJ1ZmZlcnMoKSBjb25zdCB7
IHJldHVybiAhbVN0YXRlLmdldFNoYWRlclN0b3JhZ2VCbG9ja3MoKS5lbXB0eSgpOyB9Ci0gICAg
Ym9vbCBoYXNBdG9taWNDb3VudGVyQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuICFtU3RhdGUuZ2V0
QXRvbWljQ291bnRlckJ1ZmZlcnMoKS5lbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNJbWFnZXMoKSBj
b25zdCB7IHJldHVybiAhbVN0YXRlLmdldEltYWdlQmluZGluZ3MoKS5lbXB0eSgpOyB9Ci0gICAg
Ym9vbCBoYXNUcmFuc2Zvcm1GZWVkYmFja091dHB1dCgpIGNvbnN0CisgICAgY29uc3Qgdms6OlBp
cGVsaW5lTGF5b3V0ICZnZXRQaXBlbGluZUxheW91dCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gIW1TdGF0ZS5nZXRMaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKCkuZW1wdHko
KTsKKyAgICAgICAgcmV0dXJuIG1FeGVjdXRhYmxlLm1QaXBlbGluZUxheW91dC5nZXQoKTsKICAg
ICB9CiAKICAgICBib29sIGRpcnR5VW5pZm9ybXMoKSBjb25zdCB7IHJldHVybiBtRGVmYXVsdFVu
aWZvcm1CbG9ja3NEaXJ0eS5hbnkoKTsgfQpAQCAtMTQ4LDggKzEyNyw5IEBAIGNsYXNzIFByb2dy
YW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgICAgICBBTkdMRV9UUlkocmVuZGVyZXItPmdl
dFBpcGVsaW5lQ2FjaGUoJnBpcGVsaW5lQ2FjaGUpKTsKICAgICAgICAgcmV0dXJuIHNoYWRlclBy
b2dyYW0tPmdldEdyYXBoaWNzUGlwZWxpbmUoCiAgICAgICAgICAgICBjb250ZXh0VmssICZjb250
ZXh0VmstPmdldFJlbmRlclBhc3NDYWNoZSgpLCAqcGlwZWxpbmVDYWNoZSwKLSAgICAgICAgICAg
IGNvbnRleHRWay0+Z2V0Q3VycmVudFF1ZXVlU2VyaWFsKCksIG1QaXBlbGluZUxheW91dC5nZXQo
KSwgZGVzYywgYWN0aXZlQXR0cmliTG9jYXRpb25zLAotICAgICAgICAgICAgbVN0YXRlLmdldEF0
dHJpYnV0ZXNUeXBlTWFzaygpLCBkZXNjUHRyT3V0LCBwaXBlbGluZU91dCk7CisgICAgICAgICAg
ICBjb250ZXh0VmstPmdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpLCBtRXhlY3V0YWJsZS5tUGlwZWxp
bmVMYXlvdXQuZ2V0KCksIGRlc2MsCisgICAgICAgICAgICBhY3RpdmVBdHRyaWJMb2NhdGlvbnMs
IG1TdGF0ZS5nZXRQcm9ncmFtRXhlY3V0YWJsZSgpLmdldEF0dHJpYnV0ZXNUeXBlTWFzaygpLAor
ICAgICAgICAgICAgZGVzY1B0ck91dCwgcGlwZWxpbmVPdXQpOwogICAgIH0KIAogICAgIGFuZ2xl
OjpSZXN1bHQgZ2V0Q29tcHV0ZVBpcGVsaW5lKENvbnRleHRWayAqY29udGV4dFZrLCB2azo6UGlw
ZWxpbmVBbmRTZXJpYWwgKipwaXBlbGluZU91dCkKQEAgLTE1NywxNSArMTM3LDIxIEBAIGNsYXNz
IFByb2dyYW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgICAgICB2azo6U2hhZGVyUHJvZ3Jh
bUhlbHBlciAqc2hhZGVyUHJvZ3JhbTsKICAgICAgICAgQU5HTEVfVFJZKGluaXRDb21wdXRlUHJv
Z3JhbShjb250ZXh0VmssICZzaGFkZXJQcm9ncmFtKSk7CiAgICAgICAgIEFTU0VSVCghc2hhZGVy
UHJvZ3JhbS0+aXNHcmFwaGljc1Byb2dyYW0oKSk7Ci0gICAgICAgIHJldHVybiBzaGFkZXJQcm9n
cmFtLT5nZXRDb21wdXRlUGlwZWxpbmUoY29udGV4dFZrLCBtUGlwZWxpbmVMYXlvdXQuZ2V0KCks
IHBpcGVsaW5lT3V0KTsKKyAgICAgICAgcmV0dXJuIHNoYWRlclByb2dyYW0tPmdldENvbXB1dGVQ
aXBlbGluZShjb250ZXh0VmssIG1FeGVjdXRhYmxlLm1QaXBlbGluZUxheW91dC5nZXQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXBlbGluZU91
dCk7CiAgICAgfQogCiAgICAgLy8gVXNlZCBpbiB0ZXN0aW5nIG9ubHkuCiAgICAgdms6OkR5bmFt
aWNEZXNjcmlwdG9yUG9vbCAqZ2V0RHluYW1pY0Rlc2NyaXB0b3JQb29sKHVpbnQzMl90IHBvb2xJ
bmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiAmbUR5bmFtaWNEZXNjcmlwdG9yUG9vbHNbcG9v
bEluZGV4XTsKKyAgICAgICAgcmV0dXJuICZtRXhlY3V0YWJsZS5tRHluYW1pY0Rlc2NyaXB0b3JQ
b29sc1twb29sSW5kZXhdOwogICAgIH0KIAorICAgIGNvbnN0IFByb2dyYW1FeGVjdXRhYmxlVmsg
JmdldEV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtRXhlY3V0YWJsZTsgfQorICAgIFByb2dy
YW1FeGVjdXRhYmxlVmsgJmdldEV4ZWN1dGFibGUoKSB7IHJldHVybiBtRXhlY3V0YWJsZTsgfQor
CisgICAgZ2w6OlNoYWRlck1hcDxEZWZhdWx0VW5pZm9ybUJsb2NrPiAmZ2V0RGVmYXVsdFVuaWZv
cm1CbG9ja3MoKSB7IHJldHVybiBtRGVmYXVsdFVuaWZvcm1CbG9ja3M7IH0KKwogICBwcml2YXRl
OgogICAgIHRlbXBsYXRlIDxpbnQgY29scywgaW50IHJvd3M+CiAgICAgdm9pZCBzZXRVbmlmb3Jt
TWF0cml4ZnYoR0xpbnQgbG9jYXRpb24sCkBAIC0xNzQsMTAgKzE2MCw2IEBAIGNsYXNzIFByb2dy
YW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKIAogICAgIHZvaWQgcmVzZXQoQ29udGV4dFZrICpjb250ZXh0
VmspOwotICAgIGFuZ2xlOjpSZXN1bHQgYWxsb2NhdGVEZXNjcmlwdG9yU2V0KENvbnRleHRWayAq
Y29udGV4dFZrLCB1aW50MzJfdCBkZXNjcmlwdG9yU2V0SW5kZXgpOwotICAgIGFuZ2xlOjpSZXN1
bHQgYWxsb2NhdGVEZXNjcmlwdG9yU2V0QW5kR2V0SW5mbyhDb250ZXh0VmsgKmNvbnRleHRWaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgZGVzY3JpcHRvclNldEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sICpuZXdQb29sQWxsb2NhdGVkT3V0KTsKICAgICBhbmdsZTo6
UmVzdWx0IGluaXREZWZhdWx0VW5pZm9ybUJsb2Nrcyhjb25zdCBnbDo6Q29udGV4dCAqZ2xDb250
ZXh0KTsKICAgICB2b2lkIGdlbmVyYXRlVW5pZm9ybUxheW91dE1hcHBpbmcoZ2w6OlNoYWRlck1h
cDxzaDo6QmxvY2tMYXlvdXRNYXA+ICZsYXlvdXRNYXAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpTaGFkZXJNYXA8c2l6ZV90PiAmcmVxdWlyZWRCdWZmZXJTaXpl
KTsKQEAgLTE4NSwxNyArMTY3LDYgQEAgY2xhc3MgUHJvZ3JhbVZrIDogcHVibGljIFByb2dyYW1J
bXBsCiAgICAgYW5nbGU6OlJlc3VsdCByZXNpemVVbmlmb3JtQmxvY2tNZW1vcnkoQ29udGV4dFZr
ICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OlNoYWRlck1hcDxzaXplX3Q+ICZyZXF1aXJlZEJ1ZmZlclNpemUpOwogCi0gICAgdm9pZCB1
cGRhdGVEZWZhdWx0VW5pZm9ybXNEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29udGV4dFZrKTsK
LSAgICB2b2lkIHVwZGF0ZVRyYW5zZm9ybUZlZWRiYWNrRGVzY3JpcHRvclNldEltcGwoQ29udGV4
dFZrICpjb250ZXh0VmspOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyc0Rlc2NyaXB0b3JTZXQoQ29u
dGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkludGVyZmFjZUJsb2NrPiAmYmxv
Y2tzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXNjcmlwdG9yVHlw
ZSBkZXNjcmlwdG9yVHlwZSk7Ci0gICAgdm9pZCB1cGRhdGVBdG9taWNDb3VudGVyQnVmZmVyc0Rl
c2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWNv
cmRlcik7Ci0gICAgYW5nbGU6OlJlc3VsdCB1cGRhdGVJbWFnZXNEZXNjcmlwdG9yU2V0KENvbnRl
eHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3VyY2UgKnJlY29yZGVyKTsKLQogICAgIHRlbXBsYXRl
IDxjbGFzcyBUPgogICAgIHZvaWQgZ2V0VW5pZm9ybUltcGwoR0xpbnQgbG9jYXRpb24sIFQgKnYs
IEdMZW51bSBlbnRyeVBvaW50VHlwZSkgY29uc3Q7CiAKQEAgLTIwNCwyOCArMTc1LDExIEBAIGNs
YXNzIFByb2dyYW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIGFuZ2xlOjpSZXN1bHQgbGlu
a0ltcGwoY29uc3QgZ2w6OkNvbnRleHQgKmdsQ29udGV4dCwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cp
OwogICAgIHZvaWQgbGlua1Jlc291cmNlcyhjb25zdCBnbDo6UHJvZ3JhbUxpbmtlZFJlc291cmNl
cyAmcmVzb3VyY2VzKTsKIAotICAgIHZvaWQgdXBkYXRlQmluZGluZ09mZnNldHMoKTsKLSAgICB1
aW50MzJfdCBnZXRVbmlmb3JtQmxvY2tCaW5kaW5nc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0KLSAgICB1aW50MzJfdCBnZXRTdG9yYWdlQmxvY2tCaW5kaW5nc09mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1TdG9yYWdlQmxvY2tCaW5kaW5nc09mZnNldDsgfQotICAgIHVpbnQzMl90IGdldEF0
b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nc09mZnNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbUF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nc09mZnNldDsKLSAgICB9Ci0gICAgdWlu
dDMyX3QgZ2V0SW1hZ2VCaW5kaW5nc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1JbWFnZUJpbmRp
bmdzT2Zmc2V0OyB9Ci0KLSAgICBjbGFzcyBQcm9ncmFtSW5mbzsKICAgICBBTkdMRV9JTkxJTkUg
YW5nbGU6OlJlc3VsdCBpbml0UHJvZ3JhbShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZUxpbmVSYXN0ZXJF
bXVsYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJv
Z3JhbUluZm8gKnByb2dyYW1JbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjpTaGFkZXJQcm9ncmFtSGVscGVyICoqc2hhZGVyUHJvZ3JhbU91dCkKICAg
ICB7Ci0gICAgICAgIC8vIENvbXBpbGUgc2hhZGVycyBpZiBub3QgYWxyZWFkeS4gIFRoaXMgaXMg
ZG9uZSBvbmx5IG9uY2UgcmVnYXJkbGVzcyBvZiBzcGVjaWFsaXphdGlvbgotICAgICAgICAvLyBj
b25zdGFudHMuCi0gICAgICAgIGlmICghbVNoYWRlckluZm8udmFsaWQoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgQU5HTEVfVFJZKG1TaGFkZXJJbmZvLmluaXRTaGFkZXJzKGNvbnRleHRWaywg
bVNoYWRlclNvdXJjZXMsIG1WYXJpYWJsZUluZm9NYXAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJm1TaGFkZXJJbmZvLmdldFNwaXJ2QmxvYnMoKSkpOwot
ICAgICAgICB9CiAgICAgICAgIEFTU0VSVChtU2hhZGVySW5mby52YWxpZCgpKTsKIAogICAgICAg
ICAvLyBDcmVhdGUgdGhlIHByb2dyYW0gcGlwZWxpbmUuICBUaGlzIGlzIGRvbmUgbGF6aWx5IGFu
ZCBvbmNlIHBlciBjb21iaW5hdGlvbiBvZgpAQCAtMjQ2LDggKzIwMCw4IEBAIGNsYXNzIFByb2dy
YW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIHsKICAgICAgICAgYm9vbCBlbmFibGVMaW5l
UmFzdGVyRW11bGF0aW9uID0gVXNlTGluZVJhc3Rlcihjb250ZXh0VmssIG1vZGUpOwogCi0gICAg
ICAgIFByb2dyYW1JbmZvICZwcm9ncmFtSW5mbyA9Ci0gICAgICAgICAgICBlbmFibGVMaW5lUmFz
dGVyRW11bGF0aW9uID8gbUxpbmVSYXN0ZXJQcm9ncmFtSW5mbyA6IG1EZWZhdWx0UHJvZ3JhbUlu
Zm87CisgICAgICAgIFByb2dyYW1JbmZvICZwcm9ncmFtSW5mbyA9IGVuYWJsZUxpbmVSYXN0ZXJF
bXVsYXRpb24gPyBtRXhlY3V0YWJsZS5tTGluZVJhc3RlclByb2dyYW1JbmZvCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtRXhl
Y3V0YWJsZS5tRGVmYXVsdFByb2dyYW1JbmZvOwogCiAgICAgICAgIHJldHVybiBpbml0UHJvZ3Jh
bShjb250ZXh0VmssIGVuYWJsZUxpbmVSYXN0ZXJFbXVsYXRpb24sICZwcm9ncmFtSW5mbywgc2hh
ZGVyUHJvZ3JhbU91dCk7CiAgICAgfQpAQCAtMjU1LDEyMiArMjA5LDE4IEBAIGNsYXNzIFByb2dy
YW1WayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIEFOR0xFX0lOTElORSBhbmdsZTo6UmVzdWx0
IGluaXRDb21wdXRlUHJvZ3JhbShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlNoYWRlclByb2dyYW1IZWxw
ZXIgKipzaGFkZXJQcm9ncmFtT3V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGluaXRQcm9ncmFt
KGNvbnRleHRWaywgZmFsc2UsICZtRGVmYXVsdFByb2dyYW1JbmZvLCBzaGFkZXJQcm9ncmFtT3V0
KTsKKyAgICAgICAgcmV0dXJuIGluaXRQcm9ncmFtKGNvbnRleHRWaywgZmFsc2UsICZtRXhlY3V0
YWJsZS5tRGVmYXVsdFByb2dyYW1JbmZvLCBzaGFkZXJQcm9ncmFtT3V0KTsKICAgICB9CiAKLSAg
ICAvLyBTYXZlIGFuZCBsb2FkIGltcGxlbWVudGF0aW9uIGZvciBHTEVTIFByb2dyYW0gQmluYXJ5
IHN1cHBvcnQuCi0gICAgYW5nbGU6OlJlc3VsdCBsb2FkU3BpcnZCbG9iKENvbnRleHRWayAqY29u
dGV4dFZrLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSk7Ci0gICAgdm9pZCBzYXZlU3Bp
cnZCbG9iKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSk7Ci0KLSAgICAvLyBTdGF0ZSBm
b3IgdGhlIGRlZmF1bHQgdW5pZm9ybSBibG9ja3MuCi0gICAgc3RydWN0IERlZmF1bHRVbmlmb3Jt
QmxvY2sgZmluYWwgOiBwcml2YXRlIGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsKLSAgICAgICAg
RGVmYXVsdFVuaWZvcm1CbG9jaygpOwotICAgICAgICB+RGVmYXVsdFVuaWZvcm1CbG9jaygpOwot
Ci0gICAgICAgIHZrOjpEeW5hbWljQnVmZmVyIHN0b3JhZ2U7Ci0KLSAgICAgICAgLy8gU2hhZG93
IGNvcGllcyBvZiB0aGUgc2hhZGVyIHVuaWZvcm0gZGF0YS4KLSAgICAgICAgYW5nbGU6Ok1lbW9y
eUJ1ZmZlciB1bmlmb3JtRGF0YTsKLQotICAgICAgICAvLyBTaW5jZSB0aGUgZGVmYXVsdCBibG9j
a3MgYXJlIGxhaWQgb3V0IGluIHN0ZDE0MCwgdGhpcyB0ZWxscyB1cyB3aGVyZSB0byB3cml0ZSBv
biBhIGNhbGwKLSAgICAgICAgLy8gdG8gYSBzZXRVbmlmb3JtIG1ldGhvZC4gVGhleSBhcmUgYXJy
YW5nZWQgaW4gdW5pZm9ybSBsb2NhdGlvbiBvcmRlci4KLSAgICAgICAgc3RkOjp2ZWN0b3I8c2g6
OkJsb2NrTWVtYmVySW5mbz4gdW5pZm9ybUxheW91dDsKLSAgICB9OwotCiAgICAgZ2w6OlNoYWRl
ck1hcDxEZWZhdWx0VW5pZm9ybUJsb2NrPiBtRGVmYXVsdFVuaWZvcm1CbG9ja3M7CiAgICAgZ2w6
OlNoYWRlckJpdFNldCBtRGVmYXVsdFVuaWZvcm1CbG9ja3NEaXJ0eTsKIAotICAgIGdsOjpTaGFk
ZXJWZWN0b3I8dWludDMyX3Q+IG1EeW5hbWljQnVmZmVyT2Zmc2V0czsKLQotICAgIC8vIFRoaXMg
aXMgYSBzcGVjaWFsICJlbXB0eSIgcGxhY2Vob2xkZXIgYnVmZmVyIGZvciB3aGVuIGEgc2hhZGVy
IGhhcyBubyB1bmlmb3JtcyBvciBkb2Vzbid0Ci0gICAgLy8gdXNlIGFsbCBzbG90cyBpbiB0aGUg
YXRvbWljIGNvdW50ZXIgYnVmZmVyIGFycmF5LgotICAgIC8vCi0gICAgLy8gSXQgaXMgbmVjZXNz
YXJ5IGJlY2F1c2Ugd2Ugd2FudCB0byBrZWVwIGEgY29tcGF0aWJsZSBwaXBlbGluZSBsYXlvdXQg
aW4gYWxsIGNhc2VzLAotICAgIC8vIGFuZCBWdWxrYW4gZG9lcyBub3QgdG9sZXJhdGUgaGF2aW5n
IG51bGwgaGFuZGxlcyBpbiBhIGRlc2NyaXB0b3Igc2V0LgotICAgIHZrOjpCdWZmZXJIZWxwZXIg
bUVtcHR5QnVmZmVyOwotCi0gICAgLy8gRGVzY3JpcHRvciBzZXRzIGZvciB1bmlmb3JtIGJsb2Nr
cyBhbmQgdGV4dHVyZXMgZm9yIHRoaXMgcHJvZ3JhbS4KLSAgICBzdGQ6OnZlY3RvcjxWa0Rlc2Ny
aXB0b3JTZXQ+IG1EZXNjcmlwdG9yU2V0czsKLSAgICB2azo6RGVzY3JpcHRvclNldExheW91dEFy
cmF5PFZrRGVzY3JpcHRvclNldD4gbUVtcHR5RGVzY3JpcHRvclNldHM7Ci0gICAgc3RkOjp2ZWN0
b3I8dms6OkJ1ZmZlckhlbHBlciAqPiBtRGVzY3JpcHRvckJ1ZmZlcnNDYWNoZTsKLQotICAgIHN0
ZDo6dW5vcmRlcmVkX21hcDx2azo6VGV4dHVyZURlc2NyaXB0b3JEZXNjLCBWa0Rlc2NyaXB0b3JT
ZXQ+IG1UZXh0dXJlRGVzY3JpcHRvcnNDYWNoZTsKLQotICAgIC8vIFdlIGtlZXAgYSByZWZlcmVu
Y2UgdG8gdGhlIHBpcGVsaW5lIGFuZCBkZXNjcmlwdG9yIHNldCBsYXlvdXRzLiBUaGlzIGVuc3Vy
ZXMgdGhleSBkb24ndCBnZXQKLSAgICAvLyBkZWxldGVkIHdoaWxlIHRoaXMgcHJvZ3JhbSBpcyBp
biB1c2UuCi0gICAgdms6OkJpbmRpbmdQb2ludGVyPHZrOjpQaXBlbGluZUxheW91dD4gbVBpcGVs
aW5lTGF5b3V0OwotICAgIHZrOjpEZXNjcmlwdG9yU2V0TGF5b3V0UG9pbnRlckFycmF5IG1EZXNj
cmlwdG9yU2V0TGF5b3V0czsKLQotICAgIC8vIEtlZXAgYmluZGluZ3MgdG8gdGhlIGRlc2NyaXB0
b3IgcG9vbHMuIFRoaXMgZW5zdXJlcyB0aGUgcG9vbHMgc3RheSB2YWxpZCB3aGlsZSB0aGUgUHJv
Z3JhbQotICAgIC8vIGlzIGluIHVzZS4KLSAgICB2azo6RGVzY3JpcHRvclNldExheW91dEFycmF5
PHZrOjpSZWZDb3VudGVkRGVzY3JpcHRvclBvb2xCaW5kaW5nPiBtRGVzY3JpcHRvclBvb2xCaW5k
aW5nczsKLQotICAgIGNsYXNzIFNoYWRlckluZm8gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUK
LSAgICB7Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIFNoYWRlckluZm8oKTsKLSAgICAgICAgflNo
YWRlckluZm8oKTsKLQotICAgICAgICBhbmdsZTo6UmVzdWx0IGluaXRTaGFkZXJzKENvbnRleHRW
ayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+ICZzaGFkZXJTb3VyY2VzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCAm
dmFyaWFibGVJbmZvTWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpT
aGFkZXJNYXA8U3BpcnZCbG9iPiAqc3BpcnZCbG9ic091dCk7Ci0gICAgICAgIHZvaWQgcmVsZWFz
ZShDb250ZXh0VmsgKmNvbnRleHRWayk7Ci0KLSAgICAgICAgQU5HTEVfSU5MSU5FIGJvb2wgdmFs
aWQoKSBjb25zdCB7IHJldHVybiBtSXNJbml0aWFsaXplZDsgfQotCi0gICAgICAgIGdsOjpTaGFk
ZXJNYXA8U3BpcnZCbG9iPiAmZ2V0U3BpcnZCbG9icygpIHsgcmV0dXJuIG1TcGlydkJsb2JzOyB9
Ci0gICAgICAgIGNvbnN0IGdsOjpTaGFkZXJNYXA8U3BpcnZCbG9iPiAmZ2V0U3BpcnZCbG9icygp
IGNvbnN0IHsgcmV0dXJuIG1TcGlydkJsb2JzOyB9Ci0KLSAgICAgIHByaXZhdGU6Ci0gICAgICAg
IGdsOjpTaGFkZXJNYXA8U3BpcnZCbG9iPiBtU3BpcnZCbG9iczsKLSAgICAgICAgYm9vbCBtSXNJ
bml0aWFsaXplZCA9IGZhbHNlOwotICAgIH07Ci0KLSAgICBjbGFzcyBQcm9ncmFtSW5mbyBmaW5h
bCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsKLSAgICAgIHB1YmxpYzoKLSAgICAgICAgUHJv
Z3JhbUluZm8oKTsKLSAgICAgICAgflByb2dyYW1JbmZvKCk7Ci0KLSAgICAgICAgYW5nbGU6OlJl
c3VsdCBpbml0UHJvZ3JhbShDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXJJbmZvICZzaGFkZXJJbmZvLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlTGluZVJhc3RlckVtdWxhdGlvbik7
Ci0gICAgICAgIHZvaWQgcmVsZWFzZShDb250ZXh0VmsgKmNvbnRleHRWayk7Ci0KLSAgICAgICAg
QU5HTEVfSU5MSU5FIGJvb2wgdmFsaWQoKSBjb25zdCB7IHJldHVybiBtUHJvZ3JhbUhlbHBlci52
YWxpZCgpOyB9Ci0KLSAgICAgICAgdms6OlNoYWRlclByb2dyYW1IZWxwZXIgKmdldFNoYWRlclBy
b2dyYW0oKSB7IHJldHVybiAmbVByb2dyYW1IZWxwZXI7IH0KLQotICAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdms6OlNoYWRlclByb2dyYW1IZWxwZXIgbVByb2dyYW1IZWxwZXI7Ci0gICAgICAgIGds
OjpTaGFkZXJNYXA8dms6OlJlZkNvdW50ZWQ8dms6OlNoYWRlckFuZFNlcmlhbD4+IG1TaGFkZXJz
OwotICAgIH07Ci0KLSAgICBQcm9ncmFtSW5mbyBtRGVmYXVsdFByb2dyYW1JbmZvOwotICAgIFBy
b2dyYW1JbmZvIG1MaW5lUmFzdGVyUHJvZ3JhbUluZm87Ci0KLSAgICAvLyBXZSBrZWVwIHRoZSB0
cmFuc2xhdGVkIGxpbmtlZCBzaGFkZXIgc291cmNlcyBhbmQgdGhlIGV4cGVjdGVkIGxvY2F0aW9u
L3NldC9iaW5kaW5nIG1hcHBpbmcgdG8KLSAgICAvLyB1c2Ugd2l0aCBzaGFkZXIgZHJhdyBjYWxs
IGNvbXBpbGF0aW9uLgotICAgIC8vIFRPRE8oc3lvdXNzZWZpKTogUmVtb3ZlIHdoZW4gc2hhZGVy
IGNvbXBpbGF0aW9uIGlzIGRvbmUgYXQgbGluayB0aW1lLgotICAgIC8vIGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMzM5NAotICAgIGdsOjpTaGFkZXJNYXA8c3RkOjpzdHJpbmc+IG1TaGFkZXJTb3VyY2Vz
OwotICAgIFNoYWRlckludGVyZmFjZVZhcmlhYmxlSW5mb01hcCBtVmFyaWFibGVJbmZvTWFwOwog
ICAgIC8vIFdlIGtlZXAgdGhlIFNQSVItViBjb2RlIHRvIHVzZSBmb3IgZHJhdyBjYWxsIHBpcGVs
aW5lIGNyZWF0aW9uLgogICAgIFNoYWRlckluZm8gbVNoYWRlckluZm87CiAKLSAgICAvLyBJbiB0
aGVpciBkZXNjcmlwdG9yIHNldCwgdW5pZm9ybSBidWZmZXJzIGFyZSBwbGFjZWQgZmlyc3QsIHRo
ZW4gc3RvcmFnZSBidWZmZXJzLCB0aGVuIGF0b21pYwotICAgIC8vIGNvdW50ZXIgYnVmZmVycyBh
bmQgdGhlbiBpbWFnZXMuICBUaGVzZSBjYWNoZWQgdmFsdWVzIGNvbnRhaW4gdGhlIG9mZnNldHMg
d2hlcmUgc3RvcmFnZQotICAgIC8vIGJ1ZmZlciwgYXRvbWljIGNvdW50ZXIgYnVmZmVyIGFuZCBp
bWFnZSBiaW5kaW5ncyBzdGFydC4KLSAgICB1aW50MzJfdCBtU3RvcmFnZUJsb2NrQmluZGluZ3NP
ZmZzZXQ7Ci0gICAgdWludDMyX3QgbUF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nc09mZnNldDsK
LSAgICB1aW50MzJfdCBtSW1hZ2VCaW5kaW5nc09mZnNldDsKLQotICAgIC8vIFN0b3JlIGRlc2Ny
aXB0b3IgcG9vbHMgaGVyZS4gV2Ugc3RvcmUgdGhlIGRlc2NyaXB0b3JzIGluIHRoZSBQcm9ncmFt
IHRvIGZhY2lsaXRhdGUgZGVzY3JpcHRvcgotICAgIC8vIGNhY2hlIG1hbmFnZW1lbnQuIEl0IGNh
biBhbHNvIGFsbG93IGZld2VyIGRlc2NyaXB0b3JzIGZvciBzaGFkZXJzIHdoaWNoIHVzZSBmZXdl
cgotICAgIC8vIHRleHR1cmVzL2J1ZmZlcnMuCi0gICAgdms6OkRlc2NyaXB0b3JTZXRMYXlvdXRB
cnJheTx2azo6RHluYW1pY0Rlc2NyaXB0b3JQb29sPiBtRHluYW1pY0Rlc2NyaXB0b3JQb29sczsK
KyAgICBHbHNsYW5nUHJvZ3JhbUludGVyZmFjZUluZm8gbUdsc2xhbmdQcm9ncmFtSW50ZXJmYWNl
SW5mbzsKKworICAgIFByb2dyYW1FeGVjdXRhYmxlVmsgbUV4ZWN1dGFibGU7CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuY3BwCmluZGV4IGM1Mzdj
NmVmZWJkZjI2NzI0MzA1ZDMyNGFlOTQ1OGVjM2NmZGIzZGYuLmMyZTQ3YTg1MjcwZTI0YTVmYTU0
NWE4ZDBiNTA1ZTY5OGYzMTY1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmNwcApA
QCAtNDksMTEgKzQ5LDExIEBAIGFuZ2xlOjpSZXN1bHQgUXVlcnlWazo6YmVnaW4oY29uc3QgZ2w6
OkNvbnRleHQgKmNvbnRleHQpCiAgICAgaWYgKGdldFR5cGUoKSA9PSBnbDo6UXVlcnlUeXBlOjpU
cmFuc2Zvcm1GZWVkYmFja1ByaW1pdGl2ZXNXcml0dGVuKQogICAgIHsKICAgICAgICAgbVRyYW5z
Zm9ybUZlZWRiYWNrUHJpbWl0aXZlc0RyYXduID0gMDsKLSAgICAgICAgY29udGV4dFZrLT5nZXRD
b21tYW5kR3JhcGgoKS0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VtdWxhdGVkUXVlcnkoKTsKKyAg
ICAgICAgLy8gV2UgY291bGQgY29uc2lkZXIgdXNpbmcgVktfUVVFUllfVFlQRV9UUkFOU0ZPUk1f
RkVFREJBQ0tfU1RSRUFNX0VYVC4KICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRp
bnVlOwogICAgIH0KIAotICAgIGlmICghbVF1ZXJ5SGVscGVyLmdldFF1ZXJ5UG9vbCgpKQorICAg
IGlmICghbVF1ZXJ5SGVscGVyLnZhbGlkKCkpCiAgICAgewogICAgICAgICBBTkdMRV9UUlkoY29u
dGV4dFZrLT5nZXRRdWVyeVBvb2woZ2V0VHlwZSgpKS0+YWxsb2NhdGVRdWVyeShjb250ZXh0Vmss
ICZtUXVlcnlIZWxwZXIpKTsKICAgICB9CkBAIC02MSwxNyArNjEsMTcgQEAgYW5nbGU6OlJlc3Vs
dCBRdWVyeVZrOjpiZWdpbihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKICAgICAvLyBOb3Rl
OiBUaW1lRWxhcHNlZCBpcyBpbXBsZW1lbnRlZCBieSB1c2luZyB0d28gVGltZXN0YW1wIHF1ZXJp
ZXMgYW5kIHRha2luZyB0aGUgZGlmZi4KICAgICBpZiAoZ2V0VHlwZSgpID09IGdsOjpRdWVyeVR5
cGU6OlRpbWVFbGFwc2VkKQogICAgIHsKLSAgICAgICAgaWYgKCFtUXVlcnlIZWxwZXJUaW1lRWxh
cHNlZEJlZ2luLmdldFF1ZXJ5UG9vbCgpKQorICAgICAgICBpZiAoIW1RdWVyeUhlbHBlclRpbWVF
bGFwc2VkQmVnaW4udmFsaWQoKSkKICAgICAgICAgewogICAgICAgICAgICAgQU5HTEVfVFJZKGNv
bnRleHRWay0+Z2V0UXVlcnlQb29sKGdldFR5cGUoKSktPmFsbG9jYXRlUXVlcnkoCiAgICAgICAg
ICAgICAgICAgY29udGV4dFZrLCAmbVF1ZXJ5SGVscGVyVGltZUVsYXBzZWRCZWdpbikpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbVF1ZXJ5SGVscGVyVGltZUVsYXBzZWRCZWdpbi53cml0ZVRpbWVz
dGFtcChjb250ZXh0VmspOworICAgICAgICBBTkdMRV9UUlkobVF1ZXJ5SGVscGVyVGltZUVsYXBz
ZWRCZWdpbi5mbHVzaEFuZFdyaXRlVGltZXN0YW1wKGNvbnRleHRWaykpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICBtUXVlcnlIZWxwZXIuYmVnaW5RdWVyeShjb250ZXh0VmspOwor
ICAgICAgICBBTkdMRV9UUlkobVF1ZXJ5SGVscGVyLmJlZ2luUXVlcnkoY29udGV4dFZrKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtOTQsMTUgKzk0
LDE1IEBAIGFuZ2xlOjpSZXN1bHQgUXVlcnlWazo6ZW5kKGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0KQogICAgICAgICAgICAgbUNhY2hlZFJlc3VsdCArPSB0cmFuc2Zvcm1GZWVkYmFjay0+Z2V0
UHJpbWl0aXZlc0RyYXduKCk7CiAgICAgICAgIH0KICAgICAgICAgbUNhY2hlZFJlc3VsdFZhbGlk
ID0gdHJ1ZTsKLSAgICAgICAgY29udGV4dFZrLT5nZXRDb21tYW5kR3JhcGgoKS0+ZW5kVHJhbnNm
b3JtRmVlZGJhY2tFbXVsYXRlZFF1ZXJ5KCk7CisgICAgICAgIC8vIFdlIGNvdWxkIGNvbnNpZGVy
IHVzaW5nIFZLX1FVRVJZX1RZUEVfVFJBTlNGT1JNX0ZFRURCQUNLX1NUUkVBTV9FWFQuCiAgICAg
fQogICAgIGVsc2UgaWYgKGdldFR5cGUoKSA9PSBnbDo6UXVlcnlUeXBlOjpUaW1lRWxhcHNlZCkK
ICAgICB7Ci0gICAgICAgIG1RdWVyeUhlbHBlci53cml0ZVRpbWVzdGFtcChjb250ZXh0VmspOwor
ICAgICAgICBBTkdMRV9UUlkobVF1ZXJ5SGVscGVyLmZsdXNoQW5kV3JpdGVUaW1lc3RhbXAoY29u
dGV4dFZrKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1RdWVyeUhlbHBlci5l
bmRRdWVyeShjb250ZXh0VmspOworICAgICAgICBBTkdMRV9UUlkobVF1ZXJ5SGVscGVyLmVuZFF1
ZXJ5KGNvbnRleHRWaykpOwogICAgIH0KIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKQEAgLTExNCwxNiArMTE0LDE0IEBAIGFuZ2xlOjpSZXN1bHQgUXVlcnlWazo6cXVlcnlD
b3VudGVyKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogCiAgICAgbUNhY2hlZFJlc3VsdFZh
bGlkID0gZmFsc2U7CiAKLSAgICBpZiAoIW1RdWVyeUhlbHBlci5nZXRRdWVyeVBvb2woKSkKKyAg
ICBpZiAoIW1RdWVyeUhlbHBlci52YWxpZCgpKQogICAgIHsKICAgICAgICAgQU5HTEVfVFJZKGNv
bnRleHRWay0+Z2V0UXVlcnlQb29sKGdldFR5cGUoKSktPmFsbG9jYXRlUXVlcnkoY29udGV4dFZr
LCAmbVF1ZXJ5SGVscGVyKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBnbDo6
UXVlcnlUeXBlOjpUaW1lc3RhbXApOwogCi0gICAgbVF1ZXJ5SGVscGVyLndyaXRlVGltZXN0YW1w
KGNvbnRleHRWayk7Ci0KLSAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAg
cmV0dXJuIG1RdWVyeUhlbHBlci5mbHVzaEFuZFdyaXRlVGltZXN0YW1wKGNvbnRleHRWayk7CiB9
CiAKIGFuZ2xlOjpSZXN1bHQgUXVlcnlWazo6Z2V0UmVzdWx0KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LCBib29sIHdhaXQpCkBAIC0xNjEsMTkgKzE1OSwyMCBAQCBhbmdsZTo6UmVzdWx0IFF1
ZXJ5Vms6OmdldFJlc3VsdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgYm9vbCB3YWl0KQog
ICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5maW5pc2hUb1NlcmlhbChtUXVlcnlIZWxwZXIu
Z2V0U3RvcmVkUXVldWVTZXJpYWwoKSkpOwogICAgIH0KIAotICAgIFZrUXVlcnlSZXN1bHRGbGFn
cyBmbGFncyA9ICh3YWl0ID8gVktfUVVFUllfUkVTVUxUX1dBSVRfQklUIDogMCkgfCBWS19RVUVS
WV9SRVNVTFRfNjRfQklUOwotCi0gICAgVmtSZXN1bHQgcmVzdWx0ID0gbVF1ZXJ5SGVscGVyLmdl
dFF1ZXJ5UG9vbCgpLT5nZXRSZXN1bHRzKAotICAgICAgICBjb250ZXh0VmstPmdldERldmljZSgp
LCBtUXVlcnlIZWxwZXIuZ2V0UXVlcnkoKSwgMSwgc2l6ZW9mKG1DYWNoZWRSZXN1bHQpLCAmbUNh
Y2hlZFJlc3VsdCwKLSAgICAgICAgc2l6ZW9mKG1DYWNoZWRSZXN1bHQpLCBmbGFncyk7Ci0gICAg
Ly8gSWYgdGhlIHJlc3VsdHMgYXJlIG5vdCByZWFkeSwgZG8gbm90aGluZy4gIG1DYWNoZWRSZXN1
bHRWYWxpZCByZW1haW5zIGZhbHNlLgotICAgIGlmIChyZXN1bHQgPT0gVktfTk9UX1JFQURZKQor
ICAgIGlmICh3YWl0KQogICAgIHsKLSAgICAgICAgLy8gSWYgVktfUVVFUllfUkVTVUxUX1dBSVRf
QklUIHdhcyBnaXZlbiwgVktfTk9UX1JFQURZIGNhbm5vdCBoYXZlIGJlZW4gcmV0dXJuZWQuCi0g
ICAgICAgIEFTU0VSVCghd2FpdCk7Ci0gICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKKyAgICAgICAgQU5HTEVfVFJZKG1RdWVyeUhlbHBlci5nZXRVaW50NjRSZXN1bHQoY29u
dGV4dFZrLCAmbUNhY2hlZFJlc3VsdCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBib29sIGF2YWlsYWJsZSA9IGZhbHNlOworICAgICAgICBBTkdMRV9UUlkobVF1ZXJ5SGVscGVy
LmdldFVpbnQ2NFJlc3VsdE5vbkJsb2NraW5nKGNvbnRleHRWaywgJm1DYWNoZWRSZXN1bHQsICZh
dmFpbGFibGUpKTsKKyAgICAgICAgaWYgKCFhdmFpbGFibGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIElmIHRoZSByZXN1bHRzIGFyZSBub3QgcmVhZHksIGRvIG5vdGhpbmcuICBtQ2FjaGVk
UmVzdWx0VmFsaWQgcmVtYWlucyBmYWxzZS4KKyAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpDb250aW51ZTsKKyAgICAgICAgfQogICAgIH0KLSAgICBBTkdMRV9WS19UUlkoY29udGV4
dFZrLCByZXN1bHQpOwogCiAgICAgZG91YmxlIHRpbWVzdGFtcFBlcmlvZCA9IHJlbmRlcmVyLT5n
ZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMoKS5saW1pdHMudGltZXN0YW1wUGVyaW9kOwogCkBA
IC0xOTIsMTMgKzE5MSw5IEBAIGFuZ2xlOjpSZXN1bHQgUXVlcnlWazo6Z2V0UmVzdWx0KGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LCBib29sIHdhaXQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHVpbnQ2NF90IHRpbWVFbGFwc2VkRW5kID0gbUNhY2hlZFJlc3VsdDsKIAotICAgICAgICAgICAg
cmVzdWx0ID0gbVF1ZXJ5SGVscGVyVGltZUVsYXBzZWRCZWdpbi5nZXRRdWVyeVBvb2woKS0+Z2V0
UmVzdWx0cygKLSAgICAgICAgICAgICAgICBjb250ZXh0VmstPmdldERldmljZSgpLCBtUXVlcnlI
ZWxwZXJUaW1lRWxhcHNlZEJlZ2luLmdldFF1ZXJ5KCksIDEsCi0gICAgICAgICAgICAgICAgc2l6
ZW9mKG1DYWNoZWRSZXN1bHQpLCAmbUNhY2hlZFJlc3VsdCwgc2l6ZW9mKG1DYWNoZWRSZXN1bHQp
LCBmbGFncyk7CiAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgcmVzdWx0IG9mIHRoZSBlbmQgcXVl
cnkgb2YgdGltZS1lbGFwc2VkIGlzIGFscmVhZHkgYXZhaWxhYmxlLCB0aGUKICAgICAgICAgICAg
IC8vIHJlc3VsdCBvZiBiZWdpbiBxdWVyeSBtdXN0IGJlIGF2YWlsYWJsZSB0b28uCi0gICAgICAg
ICAgICBBU1NFUlQocmVzdWx0ICE9IFZLX05PVF9SRUFEWSk7Ci0gICAgICAgICAgICBBTkdMRV9W
S19UUlkoY29udGV4dFZrLCByZXN1bHQpOworICAgICAgICAgICAgQU5HTEVfVFJZKG1RdWVyeUhl
bHBlclRpbWVFbGFwc2VkQmVnaW4uZ2V0VWludDY0UmVzdWx0KGNvbnRleHRWaywgJm1DYWNoZWRS
ZXN1bHQpKTsKIAogICAgICAgICAgICAgbUNhY2hlZFJlc3VsdCA9IHRpbWVFbGFwc2VkRW5kIC0g
bUNhY2hlZFJlc3VsdDsKICAgICAgICAgICAgIG1DYWNoZWRSZXN1bHQgPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obUNhY2hlZFJlc3VsdCAqIHRpbWVzdGFtcFBlcmlvZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JFQURN
RS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vUkVBRE1FLm1kCmluZGV4IGRlMzNiYTk3MTI0NGI5YzFhN2NlOTJjYmYzMjkwNWZhMmZmMDhm
MzEuLjA5Nzk3NjM2ZjRkMTkwZmRiMWEyMTdiNzEwZWZiNzU3NDhkZTQ4MWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUkVB
RE1FLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vUkVBRE1FLm1kCkBAIC0yMiw3ICsyMiw1NSBAQCBhbmQgW2ludGVybmFsIFZ1bGth
biBzaGFkZXJzXShzaGFkZXJzKS4gVGhlIFtDb250ZXh0VmtdKENvbnRleHRWay5jcHApIGNsYXNz
IGltcAogb2YgYSBmcm9udC1lbmQgT3BlbkdMIENvbnRleHQuIENvbnRleHRWayBwcm9jZXNzZXMg
c3RhdGUgY2hhbmdlcyBhbmQgaGFuZGxlcyBhY3Rpb24gY29tbWFuZHMgbGlrZQogYGdsRHJhd0Fy
cmF5c2AgYW5kIGBnbERyYXdFbGVtZW50c2AuCiAKLUltcGxlbWVudGF0aW9uIGRldGFpbHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBgZG9jYCBkaXJlY3RvcnkuCisjIyBDb21tYW5kIHJlY29yZGluZwor
CitUaGUgYmFjay1lbmQgcmVjb3JkcyBjb21tYW5kcyBpbnRvIGNvbW1hbmQgYnVmZmVycyB2aWEg
dGhlIHRoZSBmb2xsb3dpbmcgYENvbnRleHRWa2AgQVBJczoKKworICogYGVuZFJlbmRlclBhc3NB
bmRHZXRDb21tYW5kQnVmZmVyYDogcmV0dXJucyBhIHNlY29uZGFyeSBjb21tYW5kIGJ1ZmZlciAq
b3V0c2lkZSogYSBSZW5kZXJQYXNzIGluc3RhbmNlLgorICogYGZsdXNoQW5kQmVnaW5SZW5kZXJQ
YXNzYDogcmV0dXJucyBhIHNlY29uZGFyeSBjb21tYW5kIGJ1ZmZlciAqaW5zaWRlKiBhIFJlbmRl
clBhc3MgaW5zdGFuY2UuCisgKiBgZmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcmA6IHJl
dHVybnMgdGhlIHByaW1hcnkgY29tbWFuZCBidWZmZXIuIFlvdSBzaG91bGQgcmFyZWx5IG5lZWQg
dGhpcyBBUEkuCisKKypOb3RlKjogQWxsIG9mIHRoZXNlIGNvbW1hbmRzIG1heSB3cml0ZSBvdXQg
KGFrYSBmbHVzaCkgcHJpb3IgcGVuZGluZyBjb21tYW5kcyBpbnRvIGEgcHJpbWFyeQorY29tbWFu
ZCBidWZmZXIuIFdoZW4gYSBSZW5kZXJQYXNzIGlzIG9wZW4gYGVuZFJlbmRlclBhc3NBbmRHZXRD
b21tYW5kQnVmZmVyYCB3aWxsIGZsdXNoIHRoZQorcGVuZGluZyBSZW5kZXJQYXNzIGNvbW1hbmRz
LiBgZmx1c2hBbmRCZWdpblJlbmRlclBhc3NgIHdpbGwgZmx1c2ggb3V0IHBlbmRpbmcgY29tbWFu
ZHMgb3V0c2lkZSBhCitSZW5kZXJQYXNzIHRvIGEgcHJpbWFyeSBidWZmZXIuIE9uIHN1Ym1pdCBB
TkdMRSBzdWJtaXRzIHRoZSBwcmltYXJ5IGNvbW1hbmQgYnVmZmVyIHRvIGEgYFZrUXVldWVgLgor
CitJZiB5b3UgbmVlZCB0byByZWNvcmQgaW5zaWRlIGEgUmVuZGVyUGFzcywgdXNlIGBmbHVzaEFu
ZEJlZ2luUmVuZGVyUGFzc2AuIE90aGVyd2lzZSwgdXNlCitgZW5kUmVuZGVyUGFzc0FuZEdldENv
bW1hbmRCdWZmZXJgLiBZb3Ugc2hvdWxkIHJhcmVseSBuZWVkIHRvIGNhbGwgYGZsdXNoQW5kR2V0
UHJpbWFyeUNvbW1hbmRCdWZmZXJgLgorSXQncyB0aGVyZSBmb3IgY29tbWFuZHMgbGlrZSBkZWJ1
ZyBsYWJlbHMsIGJhcnJpZXJzIGFuZCBxdWVyaWVzIHRoYXQgbmVlZCB0byBiZSByZWNvcmRlZCBz
ZXJpYWxseSBvbgordGhlIHByaW1hcnkgY29tbWFuZCBidWZmZXIuCisKK1RoZSBiYWNrLWVuZCB1
c3VhbGx5IHJlY29yZHMgSW1hZ2UgYW5kIEJ1ZmZlciBiYXJyaWVycyB0aHJvdWdoIGFkZGl0aW9u
YWwgYENvbnRleHRWa2AgQVBJczoKKworICogYG9uQnVmZmVyUmVhZGAgYW5kIGBvbkJ1ZmZlcldy
aXRlYCBhY2N1bXVsYXRlIGBWa0J1ZmZlcmAgYmFycmllcnMuCisgKiBgb25JbWFnZVJlYWRgIGFu
ZCBgb25JbWFnZVdyaXRlYCBhY2N1bXVsYXRlIGBWa0ltYWdlYCBiYXJyaWVycy4KKyAqIGBvblJl
bmRlclBhc3NJbWFnZVdyaXRlYCBpcyBhIHNwZWNpYWwgQVBJIGZvciB3cml0ZSBiYXJyaWVycyBp
bnNpZGUgYSBSZW5kZXJQYXNzIGluc3RhbmNlLgorCitBZnRlciB0aGUgYmFjay1lbmQgcmVjb3Jk
cyBjb21tYW5kcyB0byB0aGUgcHJpbWFyeSBidWZmZXIgd2UgZmx1c2ggKGUuZy4gb24gc3dhcCkg
b3Igd2hlbiB3ZSBjYWxsCitgQ29udGV4dFZrOjpmaW5pc2hUb1NlcmlhbGAuCisKK1NlZSB0aGUg
W2NvZGVdW0NvbW1hbmRBUElzXSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIyMgU2ltcGxlIGNvbW1h
bmQgcmVjb3JkaW5nIGV4YW1wbGUKKworSW4gdGhpcyBleGFtcGxlIHdlJ2xsIGJlIHJlY29yZGlu
ZyBhIGJ1ZmZlciBjb3B5IGNvbW1hbmQ6CisKK2BgYAorICAgICMgRW5zdXJlIHRoYXQgQU5HTEUg
c2V0cyBwcm9wZXIgcmVhZCBhbmQgd3JpdGUgYmFycmllcnMgZm9yIHRoZSBCdWZmZXJzLgorICAg
IEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1RSQU5TRkVSX1dS
SVRFX0JJVCwgZGVzdEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVy
UmVhZChWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsIHNyY0J1ZmZlcikpOworCisgICAgIyBH
ZXQgYSBwb2ludGVyIHRvIGEgc2Vjb25kYXJ5IGNvbW1hbmQgYnVmZmVyIGZvciBjb21tYW5kIHJl
Y29yZGluZy4gTWF5ICJmbHVzaCIgdGhlIFJQLgorICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRD
b21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CisKKyAgICAjIFJlY29yZCB0aGUgY29weSBj
b21tYW5kIGludG8gdGhlIHNlY29uZGFyeSBidWZmZXIuIFdlJ3JlIGRvbmUhCisgICAgY29tbWFu
ZEJ1ZmZlci0+Y29weUJ1ZmZlcihzcmNCdWZmZXItPmdldEJ1ZmZlcigpLCBkZXN0QnVmZmVyLT5n
ZXRCdWZmZXIoKSwgY29weUNvdW50LCBjb3BpZXMpOworYGBgCisKKyMjIEFkZGl0aW9uYWwgUmVh
ZGluZworCitNb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBg
ZG9jYCBkaXJlY3Rvcnk6CiAKIC0gW0Zhc3QgT3BlbkdMIFN0YXRlIFRyYW5zaXRpb25zXShkb2Mv
RmFzdE9wZW5HTFN0YXRlVHJhbnNpdGlvbnMubWQpCiAtIFtTaGFkZXIgTW9kdWxlIENvbXBpbGF0
aW9uXShkb2MvU2hhZGVyTW9kdWxlQ29tcGlsYXRpb24ubWQpCkBAIC0zMSwzICs3OSw1IEBAIElt
cGxlbWVudGF0aW9uIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBgZG9jYCBkaXJlY3Rvcnku
CiAKIFtWa0RldmljZV06IGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3Z1bGthbi9z
cGVjcy8xLjEtZXh0ZW5zaW9ucy9tYW4vaHRtbC9Wa0RldmljZS5odG1sCiBbVmtRdWV1ZV06IGh0
dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3Z1bGthbi9zcGVjcy8xLjEtZXh0ZW5zaW9u
cy9tYW4vaHRtbC9Wa1F1ZXVlLmh0bWwKK1tDb21tYW5kQVBJc106IGh0dHBzOi8vY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZS8rL2FhMDljYTY5ZTQxNzNjYjE0MjYxZTM5YmUz
YjdiZGY1NmJiZDM4NDAvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCM1
NzkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJnZXRWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmNwcAppbmRleCA3
NzUxZTJmYTY5NTE1ODA5OGU0NzI1YzViODFkOTYyNjE1YmVkNWVkLi5kYTZhZGVjN2VjZWMxMmFj
YTc4YjdhNzBlMjc5ZDM1ZGZhNWFhMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jl
bmRlclRhcmdldFZrLmNwcApAQCAtOSw4ICs5LDggQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJnZXRWay5oIgogCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9Db250ZXh0VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
UmVzb3VyY2VWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJl
VmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfZm9ybWF0X3V0aWxz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2hlbHBlcnMuaCIKQEAg
LTU0LDQ1ICs1NCw0MCBAQCB2b2lkIFJlbmRlclRhcmdldFZrOjpyZXNldCgpCiAgICAgbUxheWVy
SW5kZXggPSAwOwogfQogCi1hbmdsZTo6UmVzdWx0IFJlbmRlclRhcmdldFZrOjpvbkNvbG9yRHJh
dyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXJWaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyKQordms6OkF0dGFjaG1lbnRTZXJpYWwgUmVuZGVyVGFyZ2V0Vms6OmdldEFzc2ln
blNlcmlhbChDb250ZXh0VmsgKmNvbnRleHRWaykKIHsKLSAgICBBU1NFUlQoY29tbWFuZEJ1ZmZl
ci0+dmFsaWQoKSk7Ci0gICAgQVNTRVJUKCFtSW1hZ2UtPmdldEZvcm1hdCgpLmFjdHVhbEltYWdl
Rm9ybWF0KCkuaGFzRGVwdGhPclN0ZW5jaWxCaXRzKCkpOwotCi0gICAgLy8gVE9ETyhqbWFkaWxs
KTogVXNlIGF1dG9tYXRpYyBsYXlvdXQgdHJhbnNpdGlvbi4gaHR0cDovL2FuZ2xlYnVnLmNvbS8y
MzYxCi0gICAgbUltYWdlLT5jaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwg
dms6OkltYWdlTGF5b3V0OjpDb2xvckF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZEJ1ZmZlcik7CisgICAgQVNTRVJUKG1JbWFnZSAmJiBtSW1hZ2UtPnZhbGlkKCkp
OworICAgIHZrOjpBdHRhY2htZW50U2VyaWFsIGF0dGFjaG1lbnRTZXJpYWw7CisgICAgQVNTRVJU
KG1MYXllckluZGV4IDwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKTsKKyAg
ICBBU1NFUlQobUxldmVsSW5kZXggPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4
KCkpOworICAgIFNlcmlhbCBpbWFnZVNlcmlhbCA9IG1JbWFnZS0+Z2V0QXNzaWduU2VyaWFsKGNv
bnRleHRWayk7CisgICAgQVNTRVJUKGltYWdlU2VyaWFsLmdldFZhbHVlKCkgPCBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpOworICAgIFNldEJpdEZpZWxkKGF0dGFjaG1lbnRT
ZXJpYWwubGF5ZXIsIG1MYXllckluZGV4KTsKKyAgICBTZXRCaXRGaWVsZChhdHRhY2htZW50U2Vy
aWFsLmxldmVsLCBtTGV2ZWxJbmRleCk7CisgICAgU2V0Qml0RmllbGQoYXR0YWNobWVudFNlcmlh
bC5pbWFnZVNlcmlhbCwgaW1hZ2VTZXJpYWwuZ2V0VmFsdWUoKSk7CisgICAgcmV0dXJuIGF0dGFj
aG1lbnRTZXJpYWw7Cit9CiAKLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVk
KCkpCi0gICAgewotICAgICAgICAvLyBTZXQgdXAgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIFJU
IHJlc291cmNlIGFuZCB0aGUgRnJhbWVidWZmZXIuCi0gICAgICAgIG1JbWFnZS0+YWRkV3JpdGVE
ZXBlbmRlbmN5KGNvbnRleHRWaywgZnJhbWVidWZmZXJWayk7Ci0gICAgfQorYW5nbGU6OlJlc3Vs
dCBSZW5kZXJUYXJnZXRWazo6b25Db2xvckRyYXcoQ29udGV4dFZrICpjb250ZXh0VmspCit7Cisg
ICAgQVNTRVJUKCFtSW1hZ2UtPmdldEZvcm1hdCgpLmFjdHVhbEltYWdlRm9ybWF0KCkuaGFzRGVw
dGhPclN0ZW5jaWxCaXRzKCkpOwogCi0gICAgb25JbWFnZVZpZXdBY2Nlc3MoY29udGV4dFZrKTsK
KyAgICBjb250ZXh0VmstPm9uUmVuZGVyUGFzc0ltYWdlV3JpdGUoVktfSU1BR0VfQVNQRUNUX0NP
TE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpDb2xvckF0dGFjaG1lbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1JbWFnZSk7CisgICAgcmV0YWluSW1hZ2VWaWV3cyhj
b250ZXh0VmspOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi1h
bmdsZTo6UmVzdWx0IFJlbmRlclRhcmdldFZrOjpvbkRlcHRoU3RlbmNpbERyYXcoQ29udGV4dFZr
ICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpmcmFtZWJ1ZmZlclZrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpj
b21tYW5kQnVmZmVyKQorYW5nbGU6OlJlc3VsdCBSZW5kZXJUYXJnZXRWazo6b25EZXB0aFN0ZW5j
aWxEcmF3KENvbnRleHRWayAqY29udGV4dFZrKQogewotICAgIEFTU0VSVChjb21tYW5kQnVmZmVy
LT52YWxpZCgpKTsKICAgICBBU1NFUlQobUltYWdlLT5nZXRGb3JtYXQoKS5hY3R1YWxJbWFnZUZv
cm1hdCgpLmhhc0RlcHRoT3JTdGVuY2lsQml0cygpKTsKIAotICAgIC8vIFRPRE8oam1hZGlsbCk6
IFVzZSBhdXRvbWF0aWMgbGF5b3V0IHRyYW5zaXRpb24uIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjM2
MQogICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmZvcm1hdCAgICA9IG1JbWFnZS0+Z2V0Rm9ybWF0
KCkuYWN0dWFsSW1hZ2VGb3JtYXQoKTsKICAgICBWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0Rmxh
Z3MgPSB2azo6R2V0RGVwdGhTdGVuY2lsQXNwZWN0RmxhZ3MoZm9ybWF0KTsKIAotICAgIG1JbWFn
ZS0+Y2hhbmdlTGF5b3V0KGFzcGVjdEZsYWdzLCB2azo6SW1hZ2VMYXlvdXQ6OkRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQsIGNvbW1hbmRCdWZmZXIpOwotCi0gICAgLy8gU2V0IHVwIGRlcGVuZGVuY2ll
cyBiZXR3ZWVuIHRoZSBSVCByZXNvdXJjZSBhbmQgdGhlIEZyYW1lYnVmZmVyLgotICAgIG1JbWFn
ZS0+YWRkV3JpdGVEZXBlbmRlbmN5KGNvbnRleHRWaywgZnJhbWVidWZmZXJWayk7Ci0KLSAgICBv
bkltYWdlVmlld0FjY2Vzcyhjb250ZXh0VmspOworICAgIGNvbnRleHRWay0+b25SZW5kZXJQYXNz
SW1hZ2VXcml0ZShhc3BlY3RGbGFncywgdms6OkltYWdlTGF5b3V0OjpEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LCBtSW1hZ2UpOworICAgIHJldGFpbkltYWdlVmlld3MoY29udGV4dFZrKTsKIAogICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KQEAgLTEzNiw0MCArMTMxLDEwIEBA
IHZvaWQgUmVuZGVyVGFyZ2V0Vms6OnVwZGF0ZVN3YXBjaGFpbkltYWdlKHZrOjpJbWFnZUhlbHBl
ciAqaW1hZ2UsIHZrOjpJbWFnZVZpZXdICiAgICAgbUltYWdlVmlld3MgPSBpbWFnZVZpZXdzOwog
fQogCi12azo6SW1hZ2VIZWxwZXIgKlJlbmRlclRhcmdldFZrOjpnZXRJbWFnZUZvclJlYWQoQ29u
dGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdms6OkNvbW1hbmRHcmFwaFJlc291cmNlICpyZWFkaW5nUmVzb3VyY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdl
TGF5b3V0IGxheW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQo
bUltYWdlICYmIG1JbWFnZS0+dmFsaWQoKSk7Ci0KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBCZXR0
ZXIgc2ltdWx0YW5lb3VzIHJlc291cmNlIGFjY2Vzcy4gaHR0cDovL2FuZ2xlYnVnLmNvbS8yNjc5
Ci0gICAgLy8KLSAgICAvLyBBIGJldHRlciBhbHRlcm5hdGl2ZSB3b3VsZCBiZToKLSAgICAvLwot
ICAgIC8vIGlmIChtSW1hZ2UtPmlzTGF5b3V0Q2hhbmdlTmVjZXNzYXJ5KGxheW91dCkKLSAgICAv
LyB7Ci0gICAgLy8gICAgIHZrOjpDb21tYW5kQnVmZmVyICpzcmNMYXlvdXRDaGFuZ2U7Ci0gICAg
Ly8gICAgIEFOR0xFX1RSWShtSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJnNyY0xh
eW91dENoYW5nZSkpOwotICAgIC8vICAgICBtSW1hZ2UtPmNoYW5nZUxheW91dChtSW1hZ2UtPmdl
dEFzcGVjdEZsYWdzKCksIGxheW91dCwgc3JjTGF5b3V0Q2hhbmdlKTsKLSAgICAvLyB9Ci0gICAg
Ly8gbUltYWdlLT5hZGRSZWFkRGVwZW5kZW5jeShyZWFkaW5nUmVzb3VyY2UpOwotICAgIC8vCi0g
ICAgLy8gSS5lLiB0aGUgdHJhbnNpdGlvbiBzaG91bGQgaGFwcGVuIG9uIGEgbm9kZSBnZW5lcmF0
ZWQgZnJvbSBtSW1hZ2UgaXRzZWxmLgotICAgIC8vIEhvd2V2ZXIsIHRoaXMgbmVlZHMgY29udGV4
dCB0byBiZSBhdmFpbGFibGUgaGVyZSwgb3IgYWxsIGNhbGwgc2l0ZXMgY2hhbmdlZAotICAgIC8v
IHRvIHBlcmZvcm0gdGhlIGxheW91dCB0cmFuc2l0aW9uIGFuZCBzZXQgdGhlIGRlcGVuZGVuY3ku
Ci0gICAgbUltYWdlLT5hZGRXcml0ZURlcGVuZGVuY3koY29udGV4dFZrLCByZWFkaW5nUmVzb3Vy
Y2UpOwotICAgIG1JbWFnZS0+Y2hhbmdlTGF5b3V0KG1JbWFnZS0+Z2V0QXNwZWN0RmxhZ3MoKSwg
bGF5b3V0LCBjb21tYW5kQnVmZmVyKTsKLSAgICBvbkltYWdlVmlld0FjY2Vzcyhjb250ZXh0Vmsp
OwotICAgIHJldHVybiBtSW1hZ2U7Ci19Ci0KLXZrOjpJbWFnZUhlbHBlciAqUmVuZGVyVGFyZ2V0
Vms6OmdldEltYWdlRm9yV3JpdGUoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNv
dXJjZSAqd3JpdGluZ1Jlc291cmNlKSBjb25zdAordms6OkltYWdlSGVscGVyICpSZW5kZXJUYXJn
ZXRWazo6Z2V0SW1hZ2VGb3JXcml0ZShDb250ZXh0VmsgKmNvbnRleHRWaykgY29uc3QKIHsKICAg
ICBBU1NFUlQobUltYWdlICYmIG1JbWFnZS0+dmFsaWQoKSk7Ci0gICAgbUltYWdlLT5hZGRXcml0
ZURlcGVuZGVuY3koY29udGV4dFZrLCB3cml0aW5nUmVzb3VyY2UpOwotICAgIG9uSW1hZ2VWaWV3
QWNjZXNzKGNvbnRleHRWayk7CisgICAgcmV0YWluSW1hZ2VWaWV3cyhjb250ZXh0VmspOwogICAg
IHJldHVybiBtSW1hZ2U7CiB9CiAKQEAgLTE4MCwxMyArMTQ1LDEzIEBAIGFuZ2xlOjpSZXN1bHQg
UmVuZGVyVGFyZ2V0Vms6OmZsdXNoU3RhZ2VkVXBkYXRlcyhDb250ZXh0VmsgKmNvbnRleHRWaykK
ICAgICAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogCiAgICAgdms6OkNvbW1h
bmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZKG1JbWFnZS0+cmVjb3JkQ29t
bWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAg
ICAgcmV0dXJuIG1JbWFnZS0+Zmx1c2hTdGFnZWRVcGRhdGVzKGNvbnRleHRWaywgbUxldmVsSW5k
ZXgsIG1MZXZlbEluZGV4ICsgMSwgbUxheWVySW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1MYXllckluZGV4ICsgMSwgY29tbWFuZEJ1ZmZlcik7CiB9CiAKLXZv
aWQgUmVuZGVyVGFyZ2V0Vms6Om9uSW1hZ2VWaWV3QWNjZXNzKENvbnRleHRWayAqY29udGV4dFZr
KSBjb25zdAordm9pZCBSZW5kZXJUYXJnZXRWazo6cmV0YWluSW1hZ2VWaWV3cyhDb250ZXh0Vmsg
KmNvbnRleHRWaykgY29uc3QKIHsKLSAgICBtSW1hZ2VWaWV3cy0+b25SZXNvdXJjZUFjY2Vzcygm
Y29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CisgICAgbUltYWdlVmlld3MtPnJldGFp
bigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CiB9CiB9ICAvLyBuYW1lc3BhY2Ug
cngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaAppbmRleCBiMWVlNjcx
M2U5MDVjZTczNjcwNDg5M2Q4MWYwMzE2MzZhODJhMjE3Li4xM2I3MjJhOGUyNThhMWM5MTI4NmQ2
ZTM0NjFkZWRiYmM5ZjViZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJn
ZXRWay5oCkBAIC0yNCw3ICsyNCw3IEBAIHN0cnVjdCBGb3JtYXQ7CiBjbGFzcyBGcmFtZWJ1ZmZl
ckhlbHBlcjsKIGNsYXNzIEltYWdlSGVscGVyOwogY2xhc3MgSW1hZ2VWaWV3OwotY2xhc3MgQ29t
bWFuZEdyYXBoUmVzb3VyY2U7CitjbGFzcyBSZXNvdXJjZTsKIGNsYXNzIFJlbmRlclBhc3NEZXNj
OwogfSAgLy8gbmFtZXNwYWNlIHZrCiAKQEAgLTQ4LDI1ICs0OCwxOCBAQCBjbGFzcyBSZW5kZXJU
YXJnZXRWayBmaW5hbCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQK
ICAgICAgICAgICAgICAgdWludDMyX3QgbGV2ZWxJbmRleCwKICAgICAgICAgICAgICAgdWludDMy
X3QgbGF5ZXJJbmRleCk7CiAgICAgdm9pZCByZXNldCgpOworICAgIC8vIFRoaXMgcmV0dXJucyB0
aGUgc2VyaWFsIGZyb20gdW5kZXJseWluZyBJbWFnZUhlbHBlciwgZmlyc3QgYXNzaWduaW5nIG9u
ZSBpZiByZXF1aXJlZAorICAgIHZrOjpBdHRhY2htZW50U2VyaWFsIGdldEFzc2lnblNlcmlhbChD
b250ZXh0VmsgKmNvbnRleHRWayk7CiAKICAgICAvLyBOb3RlOiBSZW5kZXJUYXJnZXRzIHNob3Vs
ZCBiZSBjYWxsZWQgaW4gb3JkZXIsIHdpdGggdGhlIGRlcHRoL3N0ZW5jaWwgb25SZW5kZXIgbGFz
dC4KLSAgICBhbmdsZTo6UmVzdWx0IG9uQ29sb3JEcmF3KENvbnRleHRWayAqY29udGV4dFZrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkZyYW1lYnVmZmVySGVscGVyICpmcmFt
ZWJ1ZmZlclZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZm
ZXIgKmNvbW1hbmRCdWZmZXIpOwotICAgIGFuZ2xlOjpSZXN1bHQgb25EZXB0aFN0ZW5jaWxEcmF3
KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXJWaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcik7
CisgICAgYW5nbGU6OlJlc3VsdCBvbkNvbG9yRHJhdyhDb250ZXh0VmsgKmNvbnRleHRWayk7Cisg
ICAgYW5nbGU6OlJlc3VsdCBvbkRlcHRoU3RlbmNpbERyYXcoQ29udGV4dFZrICpjb250ZXh0Vmsp
OwogCiAgICAgdms6OkltYWdlSGVscGVyICZnZXRJbWFnZSgpOwogICAgIGNvbnN0IHZrOjpJbWFn
ZUhlbHBlciAmZ2V0SW1hZ2UoKSBjb25zdDsKIAogICAgIC8vIGdldEltYWdlRm9yUmVhZCB3aWxs
IGFsc28gdHJhbnNpdGlvbiB0aGUgcmVzb3VyY2UgdG8gdGhlIGdpdmVuIGxheW91dC4KLSAgICB2
azo6SW1hZ2VIZWxwZXIgKmdldEltYWdlRm9yUmVhZChDb250ZXh0VmsgKmNvbnRleHRWaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6Q29tbWFuZEdyYXBoUmVzb3Vy
Y2UgKnJlYWRpbmdSZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2azo6SW1hZ2VMYXlvdXQgbGF5b3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKTsKLSAgICB2azo6SW1hZ2VI
ZWxwZXIgKmdldEltYWdlRm9yV3JpdGUoQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpDb21tYW5kR3JhcGhSZXNvdXJjZSAqd3Jp
dGluZ1Jlc291cmNlKSBjb25zdDsKKyAgICB2azo6SW1hZ2VIZWxwZXIgKmdldEltYWdlRm9yV3Jp
dGUoQ29udGV4dFZrICpjb250ZXh0VmspIGNvbnN0OwogCiAgICAgLy8gRm9yIGN1YmUgbWFwcyB3
ZSB1c2Ugc2luZ2xlLWxldmVsIHNpbmdsZS1sYXllciAyRCBhcnJheSB2aWV3cy4KICAgICBhbmds
ZTo6UmVzdWx0IGdldEltYWdlVmlldyhDb250ZXh0VmsgKmNvbnRleHRWaywgY29uc3Qgdms6Oklt
YWdlVmlldyAqKmltYWdlVmlld091dCkgY29uc3Q7CkBAIC04Miw3ICs3NSw3IEBAIGNsYXNzIFJl
bmRlclRhcmdldFZrIGZpbmFsIDogcHVibGljIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRh
cmdldAogCiAgICAgYW5nbGU6OlJlc3VsdCBmbHVzaFN0YWdlZFVwZGF0ZXMoQ29udGV4dFZrICpj
b250ZXh0VmspOwogCi0gICAgdm9pZCBvbkltYWdlVmlld0FjY2VzcyhDb250ZXh0VmsgKmNvbnRl
eHRWaykgY29uc3Q7CisgICAgdm9pZCByZXRhaW5JbWFnZVZpZXdzKENvbnRleHRWayAqY29udGV4
dFZrKSBjb25zdDsKIAogICBwcml2YXRlOgogICAgIHZrOjpJbWFnZUhlbHBlciAqbUltYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmJ1ZmZlclZrLmNwcAppbmRleCA3ZjM3OTE1
MDUwN2RjM2VhZDg5N2FkODNmZDEwMjVlZWVhY2M2YWJmLi43Y2FiMjcyYjk1OTA4NjUxNTMzY2Ri
NTAzMGM0N2VjYTczZjZhNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmJ1ZmZlclZrLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmJ1
ZmZlclZrLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyYnVmZmVy
Vms6OnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4CiAg
ICAgaWYgKG1JbWFnZS0+aXNRdWV1ZUNoYW5nZU5lY2Nlc2FyeShyZW5kZXJlclF1ZXVlRmFtaWx5
SW5kZXgpKQogICAgIHsKICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIg
PSBudWxscHRyOwotICAgICAgICBBTkdMRV9UUlkobUltYWdlLT5yZWNvcmRDb21tYW5kcyhjb250
ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVu
ZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAgICAgICAg
IG1JbWFnZS0+Y2hhbmdlTGF5b3V0QW5kUXVldWUoYXNwZWN0LCB2azo6SW1hZ2VMYXlvdXQ6OkNv
bG9yQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5k
ZXJlclF1ZXVlRmFtaWx5SW5kZXgsIGNvbW1hbmRCdWZmZXIpOwogICAgIH0KQEAgLTE2MCw3ICsx
NjAsNyBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlcmJ1ZmZlclZrOjppbml0aWFsaXplQ29udGVudHMo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdlSW5kZXgpCiB7
CiAgICAgLy8gTm90ZTogc3RhZ2VTdWJyZXNvdXJjZVJvYnVzdENsZWFyIG9ubHkgdXNlcyB0aGUg
aW50ZW5kZWQgZm9ybWF0IHRvIGNvdW50IGNoYW5uZWxzLgotICAgIG1JbWFnZS0+c3RhZ2VTdWJy
ZXNvdXJjZVJvYnVzdENsZWFyKGltYWdlSW5kZXgsIG1JbWFnZS0+Z2V0Rm9ybWF0KCkuaW50ZW5k
ZWRGb3JtYXQoKSk7CisgICAgbUltYWdlLT5zdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoaW1h
Z2VJbmRleCwgbUltYWdlLT5nZXRGb3JtYXQoKSk7CiAgICAgcmV0dXJuIG1JbWFnZS0+Zmx1c2hB
bGxTdGFnZWRVcGRhdGVzKHZrOjpHZXRJbXBsKGNvbnRleHQpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5k
ZXJlclZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vUmVuZGVyZXJWay5jcHAKaW5kZXggYWQ3OWUzODczODA3YWFlOWRiYTQzN2NkN2Fk
OGFiY2Q0ZGJhMjlhZC4uOGRkNGI5M2Q5Zjc2YjBjM2EwMzVmMGI5NjEwODIwZWNhMDU1MDgzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJlclZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuY3BwCkBAIC0yMiwxMiArMjIsMTIg
QEAKICNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZHJpdmVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2xzbGFu
Z193cmFwcGVyX3V0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Nv
bW1hbmRHcmFwaC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxl
clZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3ZrX2NhcHNfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
dmtfZm9ybWF0X3V0aWxzLmgiCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZQogY29uc3QgdWlu
dDMyX3Qga01vY2tWZW5kb3JJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHhiYTVl
YmExMTsKIGNvbnN0IHVpbnQzMl90IGtNb2NrRGV2aWNlSUQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDB4ZjAwNWJhMTE7CiBjb25zdGV4cHIgY2hhciBrTW9ja0RldmljZU5hbWVbXSAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAiVnVsa2FuIE1vY2sgRGV2aWNlIjsKLWNvbnN0IHVp
bnQzMl90IGtTd2lmdFNoYWRlckRldmljZUlEICAgICAgICAgICAgICAgICAgICAgICA9IDB4QzBE
RTsKIGNvbnN0ZXhwciBjaGFyIGtTd2lmdFNoYWRlckRldmljZU5hbWVbXSAgICAgICAgICAgICAg
ICAgICA9ICJTd2lmdFNoYWRlciBEZXZpY2UiOwogY29uc3RleHByIFZrRm9ybWF0RmVhdHVyZUZs
YWdzIGtJbnZhbGlkRm9ybWF0RmVhdHVyZUZsYWdzID0gc3RhdGljX2Nhc3Q8VmtGb3JtYXRGZWF0
dXJlRmxhZ3M+KC0xKTsKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKQEAgLTEyNiw2ICsxMjUs
MTAgQEAgY29uc3RleHByIGNvbnN0IGNoYXIgKmtTa2lwcGVkTWVzc2FnZXNbXSA9IHsKICAgICAi
VlVJRC1Wa0RldmljZUNyZWF0ZUluZm8tcE5leHQtcE5leHQiLAogICAgICJWVUlELVZrUGlwZWxp
bmVSYXN0ZXJpemF0aW9uU3RhdGVDcmVhdGVJbmZvLXBOZXh0LXBOZXh0IiwKICAgICAiVlVJRF9V
bmRlZmluZWQiLAorICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzA3OAorICAgICJVTkFTU0lH
TkVELUNvcmVWYWxpZGF0aW9uLVNoYWRlci1JbnRlcmZhY2VUeXBlTWlzbWF0Y2giLAorICAgIC8v
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDUxMAorICAgICJWVUlELXZrUXVldWVQcmVzZW50S0hSLXBX
YWl0U2VtYXBob3Jlcy0wMzI2OCIsCiB9OwogCiAvLyBTdXBwcmVzcyB2YWxpZGF0aW9uIGVycm9y
cyB0aGF0IGFyZSBrbm93bgpAQCAtMjE2LDkgKzIxOSw3IEBAIGNvbnN0IGNoYXIgKkdldFZrT2Jq
ZWN0VHlwZU5hbWUoVmtPYmplY3RUeXBlIHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gIkRpc3Bs
YXkgTW9kZSI7CiAgICAgICAgIGNhc2UgVktfT0JKRUNUX1RZUEVfREVCVUdfUkVQT1JUX0NBTExC
QUNLX0VYVDoKICAgICAgICAgICAgIHJldHVybiAiRGVidWcgUmVwb3J0IENhbGxiYWNrIjsKLSAg
ICAgICAgY2FzZSBWS19PQkpFQ1RfVFlQRV9PQkpFQ1RfVEFCTEVfTlZYOgotICAgICAgICAgICAg
cmV0dXJuICJPYmplY3QgVGFibGUiOwotICAgICAgICBjYXNlIFZLX09CSkVDVF9UWVBFX0lORElS
RUNUX0NPTU1BTkRTX0xBWU9VVF9OVlg6CisgICAgICAgIGNhc2UgVktfT0JKRUNUX1RZUEVfSU5E
SVJFQ1RfQ09NTUFORFNfTEFZT1VUX05WOgogICAgICAgICAgICAgcmV0dXJuICJJbmRpcmVjdCBD
b21tYW5kcyBMYXlvdXQiOwogICAgICAgICBjYXNlIFZLX09CSkVDVF9UWVBFX0RFQlVHX1VUSUxT
X01FU1NFTkdFUl9FWFQ6CiAgICAgICAgICAgICByZXR1cm4gIkRlYnVnIFV0aWxzIE1lc3Nlbmdl
ciI7CkBAIC0yMzEsNiArMjMyLDIxIEBAIGNvbnN0IGNoYXIgKkdldFZrT2JqZWN0VHlwZU5hbWUo
VmtPYmplY3RUeXBlIHR5cGUpCiAgICAgfQogfQogCisvLyBUaGlzIGZ1bmN0aW9uIGlzIHVudXNl
ZCBvbiBBbmRyb2lkL0Z1c2NoaWEvR0dQCisjaWYgIWRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5E
Uk9JRCkgJiYgIWRlZmluZWQoQU5HTEVfUExBVEZPUk1fRlVDSFNJQSkgJiYgXAorICAgICFkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX0dHUCkKK2NvbnN0IHN0ZDo6c3RyaW5nIFdyYXBJQ0RFbnZpcm9u
bWVudChjb25zdCBjaGFyICppY2RFbnZpcm9ubWVudCkKK3sKKyMgICAgaWYgZGVmaW5lZChBTkdM
RV9QTEFURk9STV9BUFBMRSkKKyAgICAvLyBPbiBNYWNPUyB0aGUgbGlicmFyaWVzIGFyZSBidW5k
bGVkIGludG8gdGhlIGFwcGxpY2F0aW9uIGRpcmVjdG9yeQorICAgIHN0ZDo6c3RyaW5nIHJldCA9
IGFuZ2xlOjpHZXRIZWxwZXJFeGVjdXRhYmxlRGlyKCkgKyBpY2RFbnZpcm9ubWVudDsKKyAgICBy
ZXR1cm4gcmV0OworIyAgICBlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkK
KyAgICByZXR1cm4gaWNkRW52aXJvbm1lbnQ7Cit9CisjZW5kaWYgIC8vICFkZWZpbmVkKEFOR0xF
X1BMQVRGT1JNX0FORFJPSUQpICYmICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0ZVQ0hTSUEpICYm
CisgICAgICAgIC8vICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0dHUCkKKwogVktBUElfQVRUUiBW
a0Jvb2wzMiBWS0FQSV9DQUxMCiBEZWJ1Z1V0aWxzTWVzc2VuZ2VyKFZrRGVidWdVdGlsc01lc3Nh
Z2VTZXZlcml0eUZsYWdCaXRzRVhUIG1lc3NhZ2VTZXZlcml0eSwKICAgICAgICAgICAgICAgICAg
ICAgVmtEZWJ1Z1V0aWxzTWVzc2FnZVR5cGVGbGFnc0VYVCBtZXNzYWdlVHlwZXMsCkBAIC0zNzAs
NyArMzg2LDcgQEAgY2xhc3MgU2NvcGVkVmtMb2FkZXJFbnZpcm9ubWVudCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgICFkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0dHUCkKICAgICAgICAgaWYgKGlj
ZCA9PSB2azo6SUNEOjpNb2NrKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNldElDREVu
dmlyb25tZW50KEFOR0xFX1ZLX01PQ0tfSUNEX0pTT04pKQorICAgICAgICAgICAgaWYgKCFzZXRJ
Q0RFbnZpcm9ubWVudChXcmFwSUNERW52aXJvbm1lbnQoQU5HTEVfVktfTU9DS19JQ0RfSlNPTiku
Y19zdHIoKSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgRVJSKCkgPDwgIkVycm9y
IHNldHRpbmcgZW52aXJvbm1lbnQgZm9yIE1vY2svTnVsbCBEcml2ZXIuIjsKICAgICAgICAgICAg
IH0KQEAgLTM3OCw3ICszOTQsNyBAQCBjbGFzcyBTY29wZWRWa0xvYWRlckVudmlyb25tZW50IDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAjICAgIGlmIGRlZmluZWQoQU5HTEVfVktfU1dJRlRTSEFERVJf
SUNEX0pTT04pCiAgICAgICAgIGVsc2UgaWYgKGljZCA9PSB2azo6SUNEOjpTd2lmdFNoYWRlcikK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFzZXRJQ0RFbnZpcm9ubWVudChBTkdMRV9WS19T
V0lGVFNIQURFUl9JQ0RfSlNPTikpCisgICAgICAgICAgICBpZiAoIXNldElDREVudmlyb25tZW50
KFdyYXBJQ0RFbnZpcm9ubWVudChBTkdMRV9WS19TV0lGVFNIQURFUl9JQ0RfSlNPTikuY19zdHIo
KSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgRVJSKCkgPDwgIkVycm9yIHNldHRp
bmcgZW52aXJvbm1lbnQgZm9yIFN3aWZ0U2hhZGVyLiI7CiAgICAgICAgICAgICB9CkBAIC00ODIs
OCArNDk4LDcgQEAgSUNERmlsdGVyRnVuYyBHZXRGaWx0ZXJGb3JJQ0Qodms6OklDRCBwcmVmZXJy
ZWRJQ0QpCiAgICAgICAgICAgICB9OwogICAgICAgICBjYXNlIHZrOjpJQ0Q6OlN3aWZ0U2hhZGVy
OgogICAgICAgICAgICAgcmV0dXJuIFtdKGNvbnN0IFZrUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVz
ICZkZXZpY2VQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgoZGV2aWNlUHJv
cGVydGllcy52ZW5kb3JJRCA9PSBWRU5ET1JfSURfR09PR0xFKSAmJgotICAgICAgICAgICAgICAg
ICAgICAgICAgKGRldmljZVByb3BlcnRpZXMuZGV2aWNlSUQgPT0ga1N3aWZ0U2hhZGVyRGV2aWNl
SUQpICYmCisgICAgICAgICAgICAgICAgcmV0dXJuIChJc1N3aWZ0c2hhZGVyKGRldmljZVByb3Bl
cnRpZXMudmVuZG9ySUQsIGRldmljZVByb3BlcnRpZXMuZGV2aWNlSUQpICYmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RybmNtcChkZXZpY2VQcm9wZXJ0aWVzLmRldmljZU5hbWUsIGtTd2lm
dFNoYWRlckRldmljZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJs
ZW4oa1N3aWZ0U2hhZGVyRGV2aWNlTmFtZSkpID09IDApKTsKICAgICAgICAgICAgIH07CkBAIC01
NDMsOSArNTU4LDkgQEAgZ2w6OlZlcnNpb24gTGltaXRWZXJzaW9uVG8oY29uc3QgZ2w6OlZlcnNp
b24gJmN1cnJlbnQsIGNvbnN0IGdsOjpWZXJzaW9uICZsb3dlcikKIFJlbmRlcmVyVms6OlJlbmRl
cmVyVmsoKQogICAgIDogbURpc3BsYXkobnVsbHB0ciksCiAgICAgICBtQ2Fwc0luaXRpYWxpemVk
KGZhbHNlKSwKLSAgICAgIG1GZWF0dXJlc0luaXRpYWxpemVkKGZhbHNlKSwKICAgICAgIG1JbnN0
YW5jZShWS19OVUxMX0hBTkRMRSksCiAgICAgICBtRW5hYmxlVmFsaWRhdGlvbkxheWVycyhmYWxz
ZSksCisgICAgICBtRW5hYmxlRGVidWdVdGlscyhmYWxzZSksCiAgICAgICBtRW5hYmxlZElDRCh2
azo6SUNEOjpEZWZhdWx0KSwKICAgICAgIG1EZWJ1Z1V0aWxzTWVzc2VuZ2VyKFZLX05VTExfSEFO
RExFKSwKICAgICAgIG1EZWJ1Z1JlcG9ydENhbGxiYWNrKFZLX05VTExfSEFORExFKSwKQEAgLTU1
MywxMyArNTY4LDE1IEBAIFJlbmRlcmVyVms6OlJlbmRlcmVyVmsoKQogICAgICAgbUN1cnJlbnRR
dWV1ZUZhbWlseUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSksCiAg
ICAgICBtTWF4VmVydGV4QXR0cmliRGl2aXNvcigxKSwKICAgICAgIG1NYXhWZXJ0ZXhBdHRyaWJT
dHJpZGUoMCksCisgICAgICBtTWluSW1wb3J0ZWRIb3N0UG9pbnRlckFsaWdubWVudCgxKSwKICAg
ICAgIG1EZXZpY2UoVktfTlVMTF9IQU5ETEUpLAogICAgICAgbUxhc3RDb21wbGV0ZWRRdWV1ZVNl
cmlhbChtUXVldWVTZXJpYWxGYWN0b3J5LmdlbmVyYXRlKCkpLAogICAgICAgbUN1cnJlbnRRdWV1
ZVNlcmlhbChtUXVldWVTZXJpYWxGYWN0b3J5LmdlbmVyYXRlKCkpLAogICAgICAgbURldmljZUxv
c3QoZmFsc2UpLAogICAgICAgbVBpcGVsaW5lQ2FjaGVWa1VwZGF0ZVRpbWVvdXQoa1BpcGVsaW5l
Q2FjaGVWa1VwZGF0ZVBlcmlvZCksCiAgICAgICBtUGlwZWxpbmVDYWNoZURpcnR5KGZhbHNlKSwK
LSAgICAgIG1QaXBlbGluZUNhY2hlSW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgICBtUGlwZWxpbmVD
YWNoZUluaXRpYWxpemVkKGZhbHNlKSwKKyAgICAgIG1HbHNsYW5nSW5pdGlhbGl6ZWQoZmFsc2Up
CiB7CiAgICAgVmtGb3JtYXRQcm9wZXJ0aWVzIGludmFsaWQgPSB7MCwgMCwga0ludmFsaWRGb3Jt
YXRGZWF0dXJlRmxhZ3N9OwogICAgIG1Gb3JtYXRQcm9wZXJ0aWVzLmZpbGwoaW52YWxpZCk7CkBA
IC01NzcsOSArNTk0LDI3IEBAIFJlbmRlcmVyVms6On5SZW5kZXJlclZrKCkKIAogdm9pZCBSZW5k
ZXJlclZrOjpvbkRlc3Ryb3kodms6OkNvbnRleHQgKmNvbnRleHQpCiB7CisgICAgLy8gRm9yY2Ug
YWxsIGNvbW1hbmRzIHRvIGZpbmlzaCBieSBmbHVzaGluZyBhbGwgcXVldWVzLgorICAgIGZvciAo
VmtRdWV1ZSBxdWV1ZSA6IG1RdWV1ZXMpCisgICAgeworICAgICAgICBpZiAocXVldWUgIT0gVktf
TlVMTF9IQU5ETEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZrUXVldWVXYWl0SWRsZShxdWV1
ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGVuIGFzc2lnbiBhbiBpbmZpbml0ZSAi
bGFzdCBjb21wbGV0ZWQiIHNlcmlhbCB0byBmb3JjZSBnYXJiYWdlIHRvIGRlbGV0ZS4KKyAgICBt
TGFzdENvbXBsZXRlZFF1ZXVlU2VyaWFsID0gU2VyaWFsOjpJbmZpbml0ZSgpOwogICAgICh2b2lk
KWNsZWFudXBHYXJiYWdlKGNvbnRleHQsIHRydWUpOwogICAgIEFTU0VSVChtU2hhcmVkR2FyYmFn
ZS5lbXB0eSgpKTsKIAorICAgIGZvciAoUGVuZGluZ09uZU9mZkNvbW1hbmRzICZwZW5kaW5nIDog
bVBlbmRpbmdPbmVPZmZDb21tYW5kcykKKyAgICB7CisgICAgICAgIHBlbmRpbmcuY29tbWFuZEJ1
ZmZlci5yZWxlYXNlSGFuZGxlKCk7CisgICAgfQorCisgICAgbU9uZU9mZkNvbW1hbmRQb29sLmRl
c3Ryb3kobURldmljZSk7CisKICAgICBtRmVuY2VSZWN5Y2xlci5kZXN0cm95KG1EZXZpY2UpOwog
CiAgICAgbVBpcGVsaW5lTGF5b3V0Q2FjaGUuZGVzdHJveShtRGV2aWNlKTsKQEAgLTU4Nyw3ICs2
MjIsMTEgQEAgdm9pZCBSZW5kZXJlclZrOjpvbkRlc3Ryb3kodms6OkNvbnRleHQgKmNvbnRleHQp
CiAKICAgICBtUGlwZWxpbmVDYWNoZS5kZXN0cm95KG1EZXZpY2UpOwogCi0gICAgR2xzbGFuZ1Jl
bGVhc2UoKTsKKyAgICBpZiAobUdsc2xhbmdJbml0aWFsaXplZCkKKyAgICB7CisgICAgICAgIEds
c2xhbmdSZWxlYXNlKCk7CisgICAgICAgIG1HbHNsYW5nSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAg
ICB9CiAKICAgICBpZiAobURldmljZSkKICAgICB7CkBAIC03MDksMTUgKzc0OCwxNCBAQCBhbmds
ZTo6UmVzdWx0IFJlbmRlcmVyVms6OmluaXRpYWxpemUoRGlzcGxheVZrICpkaXNwbGF5VmssCiAg
ICAgRXh0ZW5zaW9uTmFtZUxpc3QgZW5hYmxlZEluc3RhbmNlRXh0ZW5zaW9uczsKICAgICBlbmFi
bGVkSW5zdGFuY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19LSFJfU1VSRkFDRV9FWFRFTlNJT05f
TkFNRSk7CiAgICAgZW5hYmxlZEluc3RhbmNlRXh0ZW5zaW9ucy5wdXNoX2JhY2sod3NpRXh0ZW5z
aW9uKTsKLSAgICBib29sIGVuYWJsZURlYnVnVXRpbHMgPQotICAgICAgICBtRW5hYmxlVmFsaWRh
dGlvbkxheWVycyAmJgotICAgICAgICBFeHRlbnNpb25Gb3VuZChWS19FWFRfREVCVUdfVVRJTFNf
RVhURU5TSU9OX05BTUUsIGluc3RhbmNlRXh0ZW5zaW9uTmFtZXMpOworICAgIG1FbmFibGVEZWJ1
Z1V0aWxzID0gbUVuYWJsZVZhbGlkYXRpb25MYXllcnMgJiYKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEV4dGVuc2lvbkZvdW5kKFZLX0VYVF9ERUJVR19VVElMU19FWFRFTlNJT05fTkFNRSwgaW5z
dGFuY2VFeHRlbnNpb25OYW1lcyk7CiAKICAgICBib29sIGVuYWJsZURlYnVnUmVwb3J0ID0KLSAg
ICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMgJiYgIWVuYWJsZURlYnVnVXRpbHMgJiYKKyAg
ICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMgJiYgIW1FbmFibGVEZWJ1Z1V0aWxzICYmCiAg
ICAgICAgIEV4dGVuc2lvbkZvdW5kKFZLX0VYVF9ERUJVR19SRVBPUlRfRVhURU5TSU9OX05BTUUs
IGluc3RhbmNlRXh0ZW5zaW9uTmFtZXMpOwogCi0gICAgaWYgKGVuYWJsZURlYnVnVXRpbHMpCisg
ICAgaWYgKG1FbmFibGVEZWJ1Z1V0aWxzKQogICAgIHsKICAgICAgICAgZW5hYmxlZEluc3RhbmNl
RXh0ZW5zaW9ucy5wdXNoX2JhY2soVktfRVhUX0RFQlVHX1VUSUxTX0VYVEVOU0lPTl9OQU1FKTsK
ICAgICB9CkBAIC03MjksNyArNzY3LDcgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJlclZrOjppbml0
aWFsaXplKERpc3BsYXlWayAqZGlzcGxheVZrLAogICAgIGlmIChFeHRlbnNpb25Gb3VuZChWS19F
WFRfU1dBUENIQUlOX0NPTE9SX1NQQUNFX0VYVEVOU0lPTl9OQU1FLCBpbnN0YW5jZUV4dGVuc2lv
bk5hbWVzKSkKICAgICB7CiAgICAgICAgIGVuYWJsZWRJbnN0YW5jZUV4dGVuc2lvbnMucHVzaF9i
YWNrKFZLX0VYVF9TV0FQQ0hBSU5fQ09MT1JfU1BBQ0VfRVhURU5TSU9OX05BTUUpOwotICAgICAg
ICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIHN1cHBvcnRzU3dhcGNoYWlu
Q29sb3JzcGFjZSwgdHJ1ZSk7CisgICAgICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCZtRmVh
dHVyZXMsIHN1cHBvcnRzU3dhcGNoYWluQ29sb3JzcGFjZSwgdHJ1ZSk7CiAgICAgfQogCiAgICAg
Ly8gVmVyaWZ5IHRoZSByZXF1aXJlZCBleHRlbnNpb25zIGFyZSBpbiB0aGUgZXh0ZW5zaW9uIG5h
bWVzIHNldC4gRmFpbCBpZiBub3QuCkBAIC03ODcsNyArODI1LDcgQEAgYW5nbGU6OlJlc3VsdCBS
ZW5kZXJlclZrOjppbml0aWFsaXplKERpc3BsYXlWayAqZGlzcGxheVZrLAogICAgIEFOR0xFX1ZL
X1RSWShkaXNwbGF5VmssIHZrQ3JlYXRlSW5zdGFuY2UoJmluc3RhbmNlSW5mbywgbnVsbHB0ciwg
Jm1JbnN0YW5jZSkpOwogICAgIHZvbGtMb2FkSW5zdGFuY2UobUluc3RhbmNlKTsKIAotICAgIGlm
IChlbmFibGVEZWJ1Z1V0aWxzKQorICAgIGlmIChtRW5hYmxlRGVidWdVdGlscykKICAgICB7CiAg
ICAgICAgIC8vIFVzZSB0aGUgbmV3ZXIgRVhUX2RlYnVnX3V0aWxzIGlmIGl0IGV4aXN0cy4KICAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBtZXNzZW5nZXIgY2FsbGJhY2suCkBAIC04ODksNyArOTI3LDEx
IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZShEaXNwbGF5VmsgKmRpc3Bs
YXlWaywKICAgICAvLyBTdG9yZSB0aGUgcGh5c2ljYWwgZGV2aWNlIG1lbW9yeSBwcm9wZXJ0aWVz
IHNvIHdlIGNhbiBmaW5kIHRoZSByaWdodCBtZW1vcnkgcG9vbHMuCiAgICAgbU1lbW9yeVByb3Bl
cnRpZXMuaW5pdChtUGh5c2ljYWxEZXZpY2UpOwogCi0gICAgR2xzbGFuZ0luaXRpYWxpemUoKTsK
KyAgICBpZiAoIW1HbHNsYW5nSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAgICBHbHNsYW5nSW5p
dGlhbGl6ZSgpOworICAgICAgICBtR2xzbGFuZ0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CiAK
ICAgICAvLyBJbml0aWFsaXplIHRoZSBmb3JtYXQgdGFibGUuCiAgICAgbUZvcm1hdFRhYmxlLmlu
aXRpYWxpemUodGhpcywgJm1OYXRpdmVUZXh0dXJlQ2FwcywgJm1OYXRpdmVDYXBzLmNvbXByZXNz
ZWRUZXh0dXJlRm9ybWF0cyk7CkBAIC05MjAsOSArOTYyLDE2IEBAIHZvaWQgUmVuZGVyZXJWazo6
cXVlcnlEZXZpY2VFeHRlbnNpb25GZWF0dXJlcyhjb25zdCBFeHRlbnNpb25OYW1lTGlzdCAmZGV2
aWNlRXh0CiAgICAgbVRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZXMuc1R5cGUgPQogICAgICAgICBW
S19TVFJVQ1RVUkVfVFlQRV9QSFlTSUNBTF9ERVZJQ0VfVFJBTlNGT1JNX0ZFRURCQUNLX0ZFQVRV
UkVTX0VYVDsKIAorICAgIG1JbmRleFR5cGVVaW50OEZlYXR1cmVzICAgICAgID0ge307CisgICAg
bUluZGV4VHlwZVVpbnQ4RmVhdHVyZXMuc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9QSFlTSUNB
TF9ERVZJQ0VfSU5ERVhfVFlQRV9VSU5UOF9GRUFUVVJFU19FWFQ7CisKICAgICBtUGh5c2ljYWxE
ZXZpY2VTdWJncm91cFByb3BlcnRpZXMgICAgICAgPSB7fTsKICAgICBtUGh5c2ljYWxEZXZpY2VT
dWJncm91cFByb3BlcnRpZXMuc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9QSFlTSUNBTF9ERVZJ
Q0VfU1VCR1JPVVBfUFJPUEVSVElFUzsKIAorICAgIG1QaHlzaWNhbERldmljZUV4dGVybmFsTWVt
b3J5SG9zdFByb3BlcnRpZXMgPSB7fTsKKyAgICBtUGh5c2ljYWxEZXZpY2VFeHRlcm5hbE1lbW9y
eUhvc3RQcm9wZXJ0aWVzLnNUeXBlID0KKyAgICAgICAgVktfU1RSVUNUVVJFX1RZUEVfUEhZU0lD
QUxfREVWSUNFX0VYVEVSTkFMX01FTU9SWV9IT1NUX1BST1BFUlRJRVNfRVhUOworCiAgICAgaWYg
KCF2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllczJLSFIgfHwgIXZrR2V0UGh5c2ljYWxEZXZp
Y2VGZWF0dXJlczJLSFIpCiAgICAgewogICAgICAgICByZXR1cm47CkBAIC05NjAsNiArMTAwOSwx
OCBAQCB2b2lkIFJlbmRlcmVyVms6OnF1ZXJ5RGV2aWNlRXh0ZW5zaW9uRmVhdHVyZXMoY29uc3Qg
RXh0ZW5zaW9uTmFtZUxpc3QgJmRldmljZUV4dAogICAgICAgICB2azo6QWRkVG9QTmV4dENoYWlu
KCZkZXZpY2VGZWF0dXJlcywgJm1UcmFuc2Zvcm1GZWVkYmFja0ZlYXR1cmVzKTsKICAgICB9CiAK
KyAgICAvLyBRdWVyeSB1aW50OCBpbmRleCB0eXBlIGZlYXR1cmVzCisgICAgaWYgKEV4dGVuc2lv
bkZvdW5kKFZLX0VYVF9JTkRFWF9UWVBFX1VJTlQ4X0VYVEVOU0lPTl9OQU1FLCBkZXZpY2VFeHRl
bnNpb25OYW1lcykpCisgICAgeworICAgICAgICB2azo6QWRkVG9QTmV4dENoYWluKCZkZXZpY2VG
ZWF0dXJlcywgJm1JbmRleFR5cGVVaW50OEZlYXR1cmVzKTsKKyAgICB9CisKKyAgICAvLyBRdWVy
eSBleHRlcm5hbCBtZW1vcnkgaG9zdCBwcm9wZXJ0aWVzCisgICAgaWYgKEV4dGVuc2lvbkZvdW5k
KFZLX0VYVF9FWFRFUk5BTF9NRU1PUllfSE9TVF9FWFRFTlNJT05fTkFNRSwgZGV2aWNlRXh0ZW5z
aW9uTmFtZXMpKQorICAgIHsKKyAgICAgICAgdms6OkFkZFRvUE5leHRDaGFpbigmZGV2aWNlUHJv
cGVydGllcywgJm1QaHlzaWNhbERldmljZUV4dGVybmFsTWVtb3J5SG9zdFByb3BlcnRpZXMpOwor
ICAgIH0KKwogICAgIC8vIFF1ZXJ5IHN1Ymdyb3VwIHByb3BlcnRpZXMKICAgICB2azo6QWRkVG9Q
TmV4dENoYWluKCZkZXZpY2VQcm9wZXJ0aWVzLCAmbVBoeXNpY2FsRGV2aWNlU3ViZ3JvdXBQcm9w
ZXJ0aWVzKTsKIApAQCAtOTY3LDEyICsxMDI4LDE0IEBAIHZvaWQgUmVuZGVyZXJWazo6cXVlcnlE
ZXZpY2VFeHRlbnNpb25GZWF0dXJlcyhjb25zdCBFeHRlbnNpb25OYW1lTGlzdCAmZGV2aWNlRXh0
CiAgICAgdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMyS0hSKG1QaHlzaWNhbERldmljZSwg
JmRldmljZVByb3BlcnRpZXMpOwogCiAgICAgLy8gQ2xlYW4gdXAgcE5leHQgY2hhaW5zCi0gICAg
bUxpbmVSYXN0ZXJpemF0aW9uRmVhdHVyZXMucE5leHQgICAgICAgID0gbnVsbHB0cjsKLSAgICBt
UHJvdm9raW5nVmVydGV4RmVhdHVyZXMucE5leHQgICAgICAgICAgPSBudWxscHRyOwotICAgIG1W
ZXJ0ZXhBdHRyaWJ1dGVEaXZpc29yRmVhdHVyZXMucE5leHQgICA9IG51bGxwdHI7Ci0gICAgbVZl
cnRleEF0dHJpYnV0ZURpdmlzb3JQcm9wZXJ0aWVzLnBOZXh0ID0gbnVsbHB0cjsKLSAgICBtVHJh
bnNmb3JtRmVlZGJhY2tGZWF0dXJlcy5wTmV4dCAgICAgICAgPSBudWxscHRyOwotICAgIG1QaHlz
aWNhbERldmljZVN1Ymdyb3VwUHJvcGVydGllcy5wTmV4dCA9IG51bGxwdHI7CisgICAgbUxpbmVS
YXN0ZXJpemF0aW9uRmVhdHVyZXMucE5leHQgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7Cisg
ICAgbVByb3Zva2luZ1ZlcnRleEZlYXR1cmVzLnBOZXh0ICAgICAgICAgICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgbVZlcnRleEF0dHJpYnV0ZURpdmlzb3JGZWF0dXJlcy5wTmV4dCAgICAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgbVZlcnRleEF0dHJpYnV0ZURpdmlzb3JQcm9wZXJ0aWVzLnBO
ZXh0ICAgICAgICAgICA9IG51bGxwdHI7CisgICAgbVRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZXMu
cE5leHQgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgbUluZGV4VHlwZVVpbnQ4RmVh
dHVyZXMucE5leHQgICAgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgbVBoeXNpY2Fs
RGV2aWNlU3ViZ3JvdXBQcm9wZXJ0aWVzLnBOZXh0ICAgICAgICAgICA9IG51bGxwdHI7CisgICAg
bVBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxNZW1vcnlIb3N0UHJvcGVydGllcy5wTmV4dCA9IG51bGxw
dHI7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZURldmljZShEaXNw
bGF5VmsgKmRpc3BsYXlWaywgdWludDMyX3QgcXVldWVGYW1pbHlJbmRleCkKQEAgLTEwNzEsMTIg
KzExMzQsNyBAQCBhbmdsZTo6UmVzdWx0IFJlbmRlcmVyVms6OmluaXRpYWxpemVEZXZpY2UoRGlz
cGxheVZrICpkaXNwbGF5VmssIHVpbnQzMl90IHF1ZXVlRgogICAgIHF1ZXJ5RGV2aWNlRXh0ZW5z
aW9uRmVhdHVyZXMoZGV2aWNlRXh0ZW5zaW9uTmFtZXMpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBm
ZWF0dXJlcyBhbmQgd29ya2Fyb3VuZHMuCi0gICAgaWYgKCFkaXNwbGF5VmstPmdldFN0YXRlKCku
ZmVhdHVyZXNBbGxEaXNhYmxlZCkKLSAgICB7Ci0gICAgICAgIGluaXRGZWF0dXJlcyhkZXZpY2VF
eHRlbnNpb25OYW1lcyk7Ci0gICAgfQotICAgIE92ZXJyaWRlRmVhdHVyZXNXaXRoRGlzcGxheVN0
YXRlKCZtRmVhdHVyZXMsIGRpc3BsYXlWay0+Z2V0U3RhdGUoKSk7Ci0gICAgbUZlYXR1cmVzSW5p
dGlhbGl6ZWQgPSB0cnVlOworICAgIGluaXRGZWF0dXJlcyhkaXNwbGF5VmssIGRldmljZUV4dGVu
c2lvbk5hbWVzKTsKIAogICAgIC8vIFNlbGVjdGl2ZWx5IGVuYWJsZSBLSFJfTUFJTlRFTkFOQ0Ux
IHRvIHN1cHBvcnQgdmlld3BvcnQgZmxpcHBpbmcuCiAgICAgaWYgKChnZXRGZWF0dXJlcygpLmZs
aXBWaWV3cG9ydFkuZW5hYmxlZCkgJiYKQEAgLTEwODksMTIgKzExNDcsNiBAQCBhbmdsZTo6UmVz
dWx0IFJlbmRlcmVyVms6OmluaXRpYWxpemVEZXZpY2UoRGlzcGxheVZrICpkaXNwbGF5VmssIHVp
bnQzMl90IHF1ZXVlRgogICAgICAgICBlbmFibGVkRGV2aWNlRXh0ZW5zaW9ucy5wdXNoX2JhY2so
VktfS0hSX0lOQ1JFTUVOVEFMX1BSRVNFTlRfRVhURU5TSU9OX05BTUUpOwogICAgIH0KIAotICAg
IGlmIChnZXRGZWF0dXJlcygpLnN1cHBvcnRzQW5kcm9pZEhhcmR3YXJlQnVmZmVyLmVuYWJsZWQg
fHwKLSAgICAgICAgZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsTWVtb3J5RmQuZW5hYmxl
ZCkKLSAgICB7Ci0gICAgICAgIGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19L
SFJfRVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FKTsKLSAgICB9Ci0KICNpZiBkZWZpbmVk
KEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCiAgICAgaWYgKGdldEZlYXR1cmVzKCkuc3VwcG9ydHNB
bmRyb2lkSGFyZHdhcmVCdWZmZXIuZW5hYmxlZCkKICAgICB7CkBAIC0xMTA2LDEyICsxMTU4LDI1
IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZURldmljZShEaXNwbGF5Vmsg
KmRpc3BsYXlWaywgdWludDMyX3QgcXVldWVGCiAgICAgQVNTRVJUKCFnZXRGZWF0dXJlcygpLnN1
cHBvcnRzQW5kcm9pZEhhcmR3YXJlQnVmZmVyLmVuYWJsZWQpOwogI2VuZGlmCiAKKyAgICBpZiAo
Z2V0RmVhdHVyZXMoKS5zdXBwb3J0c0FuZHJvaWRIYXJkd2FyZUJ1ZmZlci5lbmFibGVkIHx8Cisg
ICAgICAgIGdldEZlYXR1cmVzKCkuc3VwcG9ydHNFeHRlcm5hbE1lbW9yeUZkLmVuYWJsZWQgfHwK
KyAgICAgICAgZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsTWVtb3J5RnVjaHNpYS5lbmFi
bGVkKQorICAgIHsKKyAgICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZL
X0tIUl9FWFRFUk5BTF9NRU1PUllfRVhURU5TSU9OX05BTUUpOworICAgIH0KKwogICAgIGlmIChn
ZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJuYWxNZW1vcnlGZC5lbmFibGVkKQogICAgIHsKICAg
ICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0tIUl9FWFRFUk5BTF9N
RU1PUllfRkRfRVhURU5TSU9OX05BTUUpOwogICAgIH0KIAotICAgIGlmIChnZXRGZWF0dXJlcygp
LnN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGZC5lbmFibGVkKQorICAgIGlmIChnZXRGZWF0dXJl
cygpLnN1cHBvcnRzRXh0ZXJuYWxNZW1vcnlGdWNoc2lhLmVuYWJsZWQpCisgICAgeworICAgICAg
ICBlbmFibGVkRGV2aWNlRXh0ZW5zaW9ucy5wdXNoX2JhY2soVktfRlVDSFNJQV9FWFRFUk5BTF9N
RU1PUllfRVhURU5TSU9OX05BTUUpOworICAgIH0KKworICAgIGlmIChnZXRGZWF0dXJlcygpLnN1
cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGZC5lbmFibGVkIHx8CisgICAgICAgIGdldEZlYXR1cmVz
KCkuc3VwcG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZ1Y2hzaWEuZW5hYmxlZCkKICAgICB7CiAgICAg
ICAgIGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19LSFJfRVhURVJOQUxfU0VN
QVBIT1JFX0VYVEVOU0lPTl9OQU1FKTsKICAgICB9CkBAIC0xMTIxLDYgKzExODYsMTEgQEAgYW5n
bGU6OlJlc3VsdCBSZW5kZXJlclZrOjppbml0aWFsaXplRGV2aWNlKERpc3BsYXlWayAqZGlzcGxh
eVZrLCB1aW50MzJfdCBxdWV1ZUYKICAgICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVz
aF9iYWNrKFZLX0tIUl9FWFRFUk5BTF9TRU1BUEhPUkVfRkRfRVhURU5TSU9OX05BTUUpOwogICAg
IH0KIAorICAgIGlmIChnZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGdWNo
c2lhLmVuYWJsZWQpCisgICAgeworICAgICAgICBlbmFibGVkRGV2aWNlRXh0ZW5zaW9ucy5wdXNo
X2JhY2soVktfRlVDSFNJQV9FWFRFUk5BTF9TRU1BUEhPUkVfRVhURU5TSU9OX05BTUUpOworICAg
IH0KKwogICAgIGlmIChnZXRGZWF0dXJlcygpLnN1cHBvcnRzU2hhZGVyU3RlbmNpbEV4cG9ydC5l
bmFibGVkKQogICAgIHsKICAgICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNr
KFZLX0VYVF9TSEFERVJfU1RFTkNJTF9FWFBPUlRfRVhURU5TSU9OX05BTUUpOwpAQCAtMTE5OSw2
ICsxMjY5LDE5IEBAIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZURldmljZShE
aXNwbGF5VmsgKmRpc3BsYXlWaywgdWludDMyX3QgcXVldWVGCiAgICAgICAgIHZrOjpBZGRUb1BO
ZXh0Q2hhaW4oJmNyZWF0ZUluZm8sICZtVHJhbnNmb3JtRmVlZGJhY2tGZWF0dXJlcyk7CiAgICAg
fQogCisgICAgaWYgKGdldEZlYXR1cmVzKCkuc3VwcG9ydHNJbmRleFR5cGVVaW50OC5lbmFibGVk
KQorICAgIHsKKyAgICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0VY
VF9JTkRFWF9UWVBFX1VJTlQ4X0VYVEVOU0lPTl9OQU1FKTsKKyAgICAgICAgdms6OkFkZFRvUE5l
eHRDaGFpbigmY3JlYXRlSW5mbywgJm1JbmRleFR5cGVVaW50OEZlYXR1cmVzKTsKKyAgICB9CisK
KyAgICBpZiAoZ2V0RmVhdHVyZXMoKS5zdXBwb3J0c0V4dGVybmFsTWVtb3J5SG9zdC5lbmFibGVk
KQorICAgIHsKKyAgICAgICAgZW5hYmxlZERldmljZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0VY
VF9FWFRFUk5BTF9NRU1PUllfSE9TVF9FWFRFTlNJT05fTkFNRSk7CisgICAgICAgIG1NaW5JbXBv
cnRlZEhvc3RQb2ludGVyQWxpZ25tZW50ID0KKyAgICAgICAgICAgIG1QaHlzaWNhbERldmljZUV4
dGVybmFsTWVtb3J5SG9zdFByb3BlcnRpZXMubWluSW1wb3J0ZWRIb3N0UG9pbnRlckFsaWdubWVu
dDsKKyAgICB9CisKICAgICBjcmVhdGVJbmZvLnNUeXBlICAgICAgICAgICAgICAgICA9IFZLX1NU
UlVDVFVSRV9UWVBFX0RFVklDRV9DUkVBVEVfSU5GTzsKICAgICBjcmVhdGVJbmZvLmZsYWdzICAg
ICAgICAgICAgICAgICA9IDA7CiAgICAgY3JlYXRlSW5mby5xdWV1ZUNyZWF0ZUluZm9Db3VudCAg
PSAxOwpAQCAtMTQ0MSw0NiArMTUyNCw1NCBAQCBnbDo6VmVyc2lvbiBSZW5kZXJlclZrOjpnZXRN
YXhDb25mb3JtYW50RVNWZXJzaW9uKCkgY29uc3QKICAgICByZXR1cm4gTGltaXRWZXJzaW9uVG8o
Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCksIHszLCAwfSk7CiB9CiAKLXZvaWQgUmVuZGVyZXJW
azo6aW5pdEZlYXR1cmVzKGNvbnN0IEV4dGVuc2lvbk5hbWVMaXN0ICZkZXZpY2VFeHRlbnNpb25O
YW1lcykKK3ZvaWQgUmVuZGVyZXJWazo6aW5pdEZlYXR1cmVzKERpc3BsYXlWayAqZGlzcGxheVZr
LCBjb25zdCBFeHRlbnNpb25OYW1lTGlzdCAmZGV2aWNlRXh0ZW5zaW9uTmFtZXMpCiB7CisgICAg
aWYgKGRpc3BsYXlWay0+Z2V0U3RhdGUoKS5mZWF0dXJlc0FsbERpc2FibGVkKQorICAgIHsKKyAg
ICAgICAgQXBwbHlGZWF0dXJlT3ZlcnJpZGVzKCZtRmVhdHVyZXMsIGRpc3BsYXlWay0+Z2V0U3Rh
dGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBib29sIGlzQU1EICAgICAgPSBJ
c0FNRChtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLnZlbmRvcklEKTsKICAgICBib29sIGlzSW50
ZWwgICAgPSBJc0ludGVsKG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMudmVuZG9ySUQpOwogICAg
IGJvb2wgaXNOdmlkaWEgICA9IElzTnZpZGlhKG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMudmVu
ZG9ySUQpOwogICAgIGJvb2wgaXNRdWFsY29tbSA9IElzUXVhbGNvbW0obVBoeXNpY2FsRGV2aWNl
UHJvcGVydGllcy52ZW5kb3JJRCk7CisgICAgYm9vbCBpc1N3UyA9CisgICAgICAgIElzU3dpZnRz
aGFkZXIobVBoeXNpY2FsRGV2aWNlUHJvcGVydGllcy52ZW5kb3JJRCwgbVBoeXNpY2FsRGV2aWNl
UHJvcGVydGllcy5kZXZpY2VJRCk7CiAKICAgICBpZiAobUxpbmVSYXN0ZXJpemF0aW9uRmVhdHVy
ZXMuYnJlc2VuaGFtTGluZXMgPT0gVktfVFJVRSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtTGlu
ZVJhc3Rlcml6YXRpb25GZWF0dXJlcy5zVHlwZSA9PQogICAgICAgICAgICAgICAgVktfU1RSVUNU
VVJFX1RZUEVfUEhZU0lDQUxfREVWSUNFX0xJTkVfUkFTVEVSSVpBVElPTl9GRUFUVVJFU19FWFQp
OwotICAgICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGJyZXNlbmhh
bUxpbmVSYXN0ZXJpemF0aW9uLCB0cnVlKTsKKyAgICAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJ
T04oJm1GZWF0dXJlcywgYnJlc2VuaGFtTGluZVJhc3Rlcml6YXRpb24sIHRydWUpOwogICAgIH0K
ICAgICBlbHNlCiAgICAgewogICAgICAgICAvLyBVc2UgT3BlbkdMIGxpbmUgcmFzdGVyaXphdGlv
biBydWxlcyBpZiBleHRlbnNpb24gbm90IGF2YWlsYWJsZSBieSBkZWZhdWx0LgogICAgICAgICAv
LyBUT0RPKGptYWRpbGwpOiBGaXggQW5kcm9pZCBzdXBwb3J0LiBodHRwOi8vYW5nbGVidWcuY29t
LzI4MzAKLSAgICAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCBiYXNp
Y0dMTGluZVJhc3Rlcml6YXRpb24sICFJc0FuZHJvaWQoKSk7CisgICAgICAgIEFOR0xFX0ZFQVRV
UkVfQ09ORElUSU9OKCZtRmVhdHVyZXMsIGJhc2ljR0xMaW5lUmFzdGVyaXphdGlvbiwgIUlzQW5k
cm9pZCgpKTsKICAgICB9CiAKICAgICBpZiAobVByb3Zva2luZ1ZlcnRleEZlYXR1cmVzLnByb3Zv
a2luZ1ZlcnRleExhc3QgPT0gVktfVFJVRSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtUHJvdm9r
aW5nVmVydGV4RmVhdHVyZXMuc1R5cGUgPT0KICAgICAgICAgICAgICAgIFZLX1NUUlVDVFVSRV9U
WVBFX1BIWVNJQ0FMX0RFVklDRV9QUk9WT0tJTkdfVkVSVEVYX0ZFQVRVUkVTX0VYVCk7Ci0gICAg
ICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgcHJvdm9raW5nVmVydGV4
LCB0cnVlKTsKKyAgICAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgcHJv
dm9raW5nVmVydGV4LCB0cnVlKTsKICAgICB9CiAKICAgICAvLyBUT0RPKGx1Y2ZlcnJvbik6IEN1
cnJlbnRseSBkaXNhYmxlZCBvbiBJbnRlbCBvbmx5IHNpbmNlIG1hbnkgdGVzdHMgYXJlIGZhaWxp
bmcgYW5kIG5lZWQKICAgICAvLyBpbnZlc3RpZ2F0aW9uLiBodHRwOi8vYW5nbGVidWcuY29tLzI3
MjgKICAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigKLSAgICAgICAgKCZtRmVhdHVyZXMpLCBm
bGlwVmlld3BvcnRZLAorICAgICAgICAmbUZlYXR1cmVzLCBmbGlwVmlld3BvcnRZLAogICAgICAg
ICAhSXNJbnRlbChtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLnZlbmRvcklEKSAmJgogICAgICAg
ICAgICAgICAgIChtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLmFwaVZlcnNpb24gPj0gVktfTUFL
RV9WRVJTSU9OKDEsIDEsIDApKSB8fAogICAgICAgICAgICAgRXh0ZW5zaW9uRm91bmQoVktfS0hS
X01BSU5URU5BTkNFMV9FWFRFTlNJT05fTkFNRSwgZGV2aWNlRXh0ZW5zaW9uTmFtZXMpKTsKIAog
ICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjgzOAotICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElU
SU9OKCgmbUZlYXR1cmVzKSwgZXh0cmFDb3B5QnVmZmVyUmVnaW9uLCBJc1dpbmRvd3MoKSAmJiBp
c0ludGVsKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBleHRyYUNv
cHlCdWZmZXJSZWdpb24sIElzV2luZG93cygpICYmIGlzSW50ZWwpOwogCiAgICAgLy8gaHR0cDov
L2FuZ2xlYnVnLmNvbS8zMDU1Ci0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVy
ZXMpLCBmb3JjZUNQVVBhdGhGb3JDdWJlTWFwQ29weSwgSXNXaW5kb3dzKCkgJiYgaXNJbnRlbCk7
CisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0dXJlcywgZm9yY2VDUFVQYXRoRm9y
Q3ViZU1hcENvcHksIElzV2luZG93cygpICYmIGlzSW50ZWwpOwogCiAgICAgLy8gV29yayBhcm91
bmQgaW5jb3JyZWN0IE5WSURJQSBwb2ludCBzaXplIHJhbmdlIGNsYW1waW5nLgogICAgIC8vIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMjk3MCNjMTAKQEAgLTE0OTMsMjMgKzE1ODQsMjMgQEAgdm9pZCBS
ZW5kZXJlclZrOjppbml0RmVhdHVyZXMoY29uc3QgRXh0ZW5zaW9uTmFtZUxpc3QgJmRldmljZUV4
dGVuc2lvbk5hbWVzKQogICAgICAgICBudmlkaWFWZXJzaW9uID0KICAgICAgICAgICAgIGFuZ2xl
OjpQYXJzZU52aWRpYURyaXZlclZlcnNpb24odGhpcy0+bVBoeXNpY2FsRGV2aWNlUHJvcGVydGll
cy5kcml2ZXJWZXJzaW9uKTsKICAgICB9Ci0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZt
RmVhdHVyZXMpLCBjbGFtcFBvaW50U2l6ZSwKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigm
bUZlYXR1cmVzLCBjbGFtcFBvaW50U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
c052aWRpYSAmJiBudmlkaWFWZXJzaW9uLm1ham9yIDwgdWludDMyX3QoSXNXaW5kb3dzKCkgPyA0
MzAgOiA0MjEpKTsKIAogICAgIC8vIFdvcmsgYXJvdW5kIGluZWZmZWN0aXZlIGNvbXB1dGUtZ3Jh
cGhpY3MgYmFycmllcnMgb24gTmV4dXMgNVguCiAgICAgLy8gVE9ETyhzeW91c3NlZmkpOiBGaWd1
cmUgb3V0IHdoaWNoIG90aGVyIHZlbmRvcnMgYW5kIGRyaXZlciB2ZXJzaW9ucyBhcmUgYWZmZWN0
ZWQuCiAgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8zMDE5Ci0gICAgQU5HTEVfRkVBVFVSRV9D
T05ESVRJT04oKCZtRmVhdHVyZXMpLCBmbHVzaEFmdGVyVmVydGV4Q29udmVyc2lvbiwKKyAgICBB
TkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBmbHVzaEFmdGVyVmVydGV4Q29udmVy
c2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0FuZHJvaWQoKSAmJiBJc05leHVz
NVgobVBoeXNpY2FsRGV2aWNlUHJvcGVydGllcy52ZW5kb3JJRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBoeXNpY2FsRGV2aWNlUHJvcGVy
dGllcy5kZXZpY2VJRCkpOwogCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCi0gICAgICAg
ICgmbUZlYXR1cmVzKSwgc3VwcG9ydHNJbmNyZW1lbnRhbFByZXNlbnQsCisgICAgICAgICZtRmVh
dHVyZXMsIHN1cHBvcnRzSW5jcmVtZW50YWxQcmVzZW50LAogICAgICAgICBFeHRlbnNpb25Gb3Vu
ZChWS19LSFJfSU5DUkVNRU5UQUxfUFJFU0VOVF9FWFRFTlNJT05fTkFNRSwgZGV2aWNlRXh0ZW5z
aW9uTmFtZXMpKTsKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKICAgICBB
TkdMRV9GRUFUVVJFX0NPTkRJVElPTigKLSAgICAgICAgKCZtRmVhdHVyZXMpLCBzdXBwb3J0c0Fu
ZHJvaWRIYXJkd2FyZUJ1ZmZlciwKKyAgICAgICAgJm1GZWF0dXJlcywgc3VwcG9ydHNBbmRyb2lk
SGFyZHdhcmVCdWZmZXIsCiAgICAgICAgIElzQW5kcm9pZCgpICYmCiAgICAgICAgICAgICBFeHRl
bnNpb25Gb3VuZChWS19BTkRST0lEX0VYVEVSTkFMX01FTU9SWV9BTkRST0lEX0hBUkRXQVJFX0JV
RkZFUl9FWFRFTlNJT05fTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUV4
dGVuc2lvbk5hbWVzKSAmJgpAQCAtMTUxNyw1NCArMTYwOCw3OSBAQCB2b2lkIFJlbmRlcmVyVms6
OmluaXRGZWF0dXJlcyhjb25zdCBFeHRlbnNpb25OYW1lTGlzdCAmZGV2aWNlRXh0ZW5zaW9uTmFt
ZXMpCiAjZW5kaWYKIAogICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKAotICAgICAgICAoJm1G
ZWF0dXJlcyksIHN1cHBvcnRzRXh0ZXJuYWxNZW1vcnlGZCwKKyAgICAgICAgJm1GZWF0dXJlcywg
c3VwcG9ydHNFeHRlcm5hbE1lbW9yeUZkLAogICAgICAgICBFeHRlbnNpb25Gb3VuZChWS19LSFJf
RVhURVJOQUxfTUVNT1JZX0ZEX0VYVEVOU0lPTl9OQU1FLCBkZXZpY2VFeHRlbnNpb25OYW1lcykp
OwogCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCi0gICAgICAgICgmbUZlYXR1cmVzKSwg
c3VwcG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZkLAorICAgICAgICAmbUZlYXR1cmVzLCBzdXBwb3J0
c0V4dGVybmFsTWVtb3J5RnVjaHNpYSwKKyAgICAgICAgRXh0ZW5zaW9uRm91bmQoVktfRlVDSFNJ
QV9FWFRFUk5BTF9NRU1PUllfRVhURU5TSU9OX05BTUUsIGRldmljZUV4dGVuc2lvbk5hbWVzKSk7
CisKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigKKyAgICAgICAgJm1GZWF0dXJlcywgc3Vw
cG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZkLAogICAgICAgICBFeHRlbnNpb25Gb3VuZChWS19LSFJf
RVhURVJOQUxfU0VNQVBIT1JFX0ZEX0VYVEVOU0lPTl9OQU1FLCBkZXZpY2VFeHRlbnNpb25OYW1l
cykpOwogCiAgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oCi0gICAgICAgICgmbUZlYXR1cmVz
KSwgc3VwcG9ydHNTaGFkZXJTdGVuY2lsRXhwb3J0LAorICAgICAgICAmbUZlYXR1cmVzLCBzdXBw
b3J0c0V4dGVybmFsU2VtYXBob3JlRnVjaHNpYSwKKyAgICAgICAgRXh0ZW5zaW9uRm91bmQoVktf
RlVDSFNJQV9FWFRFUk5BTF9TRU1BUEhPUkVfRVhURU5TSU9OX05BTUUsIGRldmljZUV4dGVuc2lv
bk5hbWVzKSk7CisKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigKKyAgICAgICAgJm1GZWF0
dXJlcywgc3VwcG9ydHNTaGFkZXJTdGVuY2lsRXhwb3J0LAogICAgICAgICBFeHRlbnNpb25Gb3Vu
ZChWS19FWFRfU0hBREVSX1NURU5DSUxfRVhQT1JUX0VYVEVOU0lPTl9OQU1FLCBkZXZpY2VFeHRl
bnNpb25OYW1lcykpOwogCi0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMp
LCBzdXBwb3J0c1RyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uLAorICAgIEFOR0xFX0ZFQVRVUkVf
Q09ORElUSU9OKCZtRmVhdHVyZXMsIHN1cHBvcnRzVHJhbnNmb3JtRmVlZGJhY2tFeHRlbnNpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZXMu
dHJhbnNmb3JtRmVlZGJhY2sgPT0gVktfVFJVRSk7CiAKLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJ
VElPTigoJm1GZWF0dXJlcyksIGVtdWxhdGVUcmFuc2Zvcm1GZWVkYmFjaywKKyAgICBBTkdMRV9G
RUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBzdXBwb3J0c0luZGV4VHlwZVVpbnQ4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1JbmRleFR5cGVVaW50OEZlYXR1cmVzLmluZGV4VHlw
ZVVpbnQ4ID09IFZLX1RSVUUpOworCisgICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oJm1GZWF0
dXJlcywgZW11bGF0ZVRyYW5zZm9ybUZlZWRiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChtRmVhdHVyZXMuc3VwcG9ydHNUcmFuc2Zvcm1GZWVkYmFja0V4dGVuc2lvbi5lbmFibGVk
ID09IFZLX0ZBTFNFICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1QaHlzaWNhbERl
dmljZUZlYXR1cmVzLnZlcnRleFBpcGVsaW5lU3RvcmVzQW5kQXRvbWljcyA9PSBWS19UUlVFKSk7
CiAKLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGRpc2FibGVGaWZv
UHJlc2VudE1vZGUsIElzTGludXgoKSAmJiBpc0ludGVsKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NP
TkRJVElPTigmbUZlYXR1cmVzLCBkaXNhYmxlRmlmb1ByZXNlbnRNb2RlLCBJc0xpbnV4KCkgJiYg
aXNJbnRlbCk7CiAKLSAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGJp
bmRFbXB0eUZvclVudXNlZERlc2NyaXB0b3JTZXRzLAorICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElU
SU9OKCZtRmVhdHVyZXMsIGJpbmRFbXB0eUZvclVudXNlZERlc2NyaXB0b3JTZXRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElzQW5kcm9pZCgpICYmIGlzUXVhbGNvbW0pOwogCi0gICAg
QU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCBmb3JjZU9sZFJld3JpdGVTdHJ1
Y3RTYW1wbGVycywgSXNBbmRyb2lkKCkpOworICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCZt
RmVhdHVyZXMsIGZvcmNlT2xkUmV3cml0ZVN0cnVjdFNhbXBsZXJzLCBJc0FuZHJvaWQoKSAmJiAh
aXNTd1MpOwogCi0gICAgQU5HTEVfRkVBVFVSRV9DT05ESVRJT04oKCZtRmVhdHVyZXMpLCBwZXJG
cmFtZVdpbmRvd1NpemVRdWVyeSwKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1
cmVzLCBwZXJGcmFtZVdpbmRvd1NpemVRdWVyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpc0ludGVsIHx8IChJc1dpbmRvd3MoKSAmJiBpc0FNRCkgfHwgSXNGdWNoc2lhKCkpOwogCiAg
ICAgLy8gRGlzYWJsZWQgb24gQU1EL3dpbmRvd3MgZHVlIHRvIGJ1Z2d5IGJlaGF2aW9yLgotICAg
IEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgZGlzYWxsb3dTZWFtZnVsQ3Vi
ZU1hcEVtdWxhdGlvbiwgSXNXaW5kb3dzKCkgJiYgaXNBTUQpOworICAgIEFOR0xFX0ZFQVRVUkVf
Q09ORElUSU9OKCZtRmVhdHVyZXMsIGRpc2FsbG93U2VhbWZ1bEN1YmVNYXBFbXVsYXRpb24sIElz
V2luZG93cygpICYmIGlzQU1EKTsKIAotICAgIC8vIFJvdW5kIHVwIGJ1ZmZlciBzaXplcyBpbiB0
aGUgcHJlc2VuY2Ugb2Ygcm9idXN0QnVmZmVyQWNjZXNzIHRvIGVtdWxhdGUgR0xFUyBiZWhhdmlv
ciB3aGVuCi0gICAgLy8gdmVydGV4IGF0dHJpYnV0ZXMgYXJlIGZldGNoZWQgZnJvbSBiZXlvbmQg
dGhlIGxhc3QgbXVsdGlwbGUgb2YgdGhlIHN0cmlkZS4gIEN1cnJlbnRseSwgb25seQotICAgIC8v
IEFNRCBpcyBrbm93biB0byByZWZ1c2UgcmVhZGluZyB0aGVzZSBhdHRyaWJ1dGVzLgotICAgIEFO
R0xFX0ZFQVRVUkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgcm91bmRVcEJ1ZmZlcnNUb01heFZl
cnRleEF0dHJpYlN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FNRCAmJiBt
UGh5c2ljYWxEZXZpY2VGZWF0dXJlcy5yb2J1c3RCdWZmZXJBY2Nlc3MpOworICAgIEFOR0xFX0ZF
QVRVUkVfQ09ORElUSU9OKCZtRmVhdHVyZXMsIHBhZEJ1ZmZlcnNUb01heFZlcnRleEF0dHJpYlN0
cmlkZSwgaXNBTUQpOwogICAgIG1NYXhWZXJ0ZXhBdHRyaWJTdHJpZGUgPSBzdGQ6Om1pbihzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZ2w6OmxpbWl0czo6a01heFZlcnRleEF0dHJpYlN0cmlkZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1QaHlzaWNhbERldmljZVByb3Bl
cnRpZXMubGltaXRzLm1heFZlcnRleElucHV0QmluZGluZ1N0cmlkZSk7CiAKLSAgICBBTkdMRV9G
RUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGZvcmNlRDE2VGV4RmlsdGVyLCBJc0FuZHJv
aWQoKSAmJiBpc1F1YWxjb21tKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1
cmVzLCBmb3JjZUQxNlRleEZpbHRlciwgSXNBbmRyb2lkKCkgJiYgaXNRdWFsY29tbSk7CiAKLSAg
ICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigoJm1GZWF0dXJlcyksIGRpc2FibGVGbGlwcGluZ0Js
aXRXaXRoQ29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0FuZHJvaWQoKSAm
JiBpc1F1YWxjb21tKTsKKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBk
aXNhYmxlRmxpcHBpbmdCbGl0V2l0aENvbW1hbmQsIElzQW5kcm9pZCgpICYmIGlzUXVhbGNvbW0p
OworCisgICAgLy8gQWxsb2NhdGlvbiBzYW5pdGl6YXRpb24gZGlzYWJsZWQgYnkgZGVmYXVsdCBi
ZWNhdXNlIG9mIGEgaGVhdmV5d2VpZ2h0IGltcGxlbWVudGF0aW9uCisgICAgLy8gdGhhdCBjYW4g
Y2F1c2UgT09NIGFuZCB0aW1lb3V0cy4KKyAgICBBTkdMRV9GRUFUVVJFX0NPTkRJVElPTigmbUZl
YXR1cmVzLCBhbGxvY2F0ZU5vblplcm9NZW1vcnksIGZhbHNlKTsKIAotICAgIEFOR0xFX0ZFQVRV
UkVfQ09ORElUSU9OKCgmbUZlYXR1cmVzKSwgY29tbWFuZEdyYXBoLCB0cnVlKTsKKyAgICBBTkdM
RV9GRUFUVVJFX0NPTkRJVElPTigKKyAgICAgICAgJm1GZWF0dXJlcywgc3VwcG9ydHNFeHRlcm5h
bE1lbW9yeUhvc3QsCisgICAgICAgIEV4dGVuc2lvbkZvdW5kKFZLX0VYVF9FWFRFUk5BTF9NRU1P
UllfSE9TVF9FWFRFTlNJT05fTkFNRSwgZGV2aWNlRXh0ZW5zaW9uTmFtZXMpKTsKKworICAgIC8v
IFByZS1yb3RhdGlvbiBzdXBwb3J0IGlzIG5vdCBmdWxseSByZWFkeSB0byBiZSBlbmFibGVkLgor
ICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCZtRmVhdHVyZXMsIGVuYWJsZVByZVJvdGF0ZVN1
cmZhY2VzLCBmYWxzZSk7CisKKyAgICAvLyBDdXJyZW50bHkgZGlzYWJsZSBGcmFtZWJ1ZmZlclZr
IGNhY2hlIG9uIEFwcGxlOiBodHRwOi8vYW5nbGVidWcuY29tLzQ0NDIKKyAgICBBTkdMRV9GRUFU
VVJFX0NPTkRJVElPTigmbUZlYXR1cmVzLCBlbmFibGVGcmFtZWJ1ZmZlclZrQ2FjaGUsICFJc0Fw
cGxlKCkpOworCisgICAgLy8gQ3VycmVudGx5IGRpc2FibGVkIGJ5IGRlZmF1bHQ6IGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMzA3OAorICAgIEFOR0xFX0ZFQVRVUkVfQ09ORElUSU9OKCZtRmVhdHVyZXMs
IGVuYWJsZVByZWNpc2lvblF1YWxpZmllcnMsIGZhbHNlKTsKKworICAgIEFOR0xFX0ZFQVRVUkVf
Q09ORElUSU9OKCZtRmVhdHVyZXMsIHN1cHBvcnREZXB0aFN0ZW5jaWxSZW5kZXJpbmdGZWVkYmFj
a0xvb3BzLCB0cnVlKTsKIAogICAgIGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtID0g
QU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKICAgICBwbGF0Zm9ybS0+b3ZlcnJpZGVGZWF0dXJlc1Zr
KHBsYXRmb3JtLCAmbUZlYXR1cmVzKTsKKworICAgIEFwcGx5RmVhdHVyZU92ZXJyaWRlcygmbUZl
YXR1cmVzLCBkaXNwbGF5VmstPmdldFN0YXRlKCkpOwogfQogCiB2b2lkIFJlbmRlcmVyVms6Omlu
aXRQaXBlbGluZUNhY2hlVmtLZXkoKQpAQCAtMTc4OCwxMiArMTkwNCwxMyBAQCBib29sIFJlbmRl
cmVyVms6Omhhc0J1ZmZlckZvcm1hdEZlYXR1cmVCaXRzKFZrRm9ybWF0IGZvcm1hdCwgY29uc3Qg
VmtGb3JtYXRGZWF0dQogYW5nbGU6OlJlc3VsdCBSZW5kZXJlclZrOjpxdWV1ZVN1Ym1pdCh2azo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWdsOjpDb250ZXh0UHJpb3JpdHkgcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZrU3VibWl0SW5mbyAmc3VibWl0SW5mbywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OkZlbmNlICZmZW5jZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OkZlbmNlICpmZW5jZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsICpzZXJpYWxPdXQp
CiB7CiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8ZGVjbHR5cGUobVF1ZXVlTXV0ZXgp
PiBsb2NrKG1RdWV1ZU11dGV4KTsKLSAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIHZrUXVl
dWVTdWJtaXQobVF1ZXVlc1twcmlvcml0eV0sIDEsICZzdWJtaXRJbmZvLCBmZW5jZS5nZXRIYW5k
bGUoKSkpOworICAgICAgICBWa0ZlbmNlIGhhbmRsZSA9IGZlbmNlID8gZmVuY2UtPmdldEhhbmRs
ZSgpIDogVktfTlVMTF9IQU5ETEU7CisgICAgICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0LCB2a1F1
ZXVlU3VibWl0KG1RdWV1ZXNbcHJpb3JpdHldLCAxLCAmc3VibWl0SW5mbywgaGFuZGxlKSk7CiAg
ICAgfQogCiAgICAgQU5HTEVfVFJZKGNsZWFudXBHYXJiYWdlKGNvbnRleHQsIGZhbHNlKSk7CkBA
IC0xODA1LDYgKzE5MjIsMjMgQEAgYW5nbGU6OlJlc3VsdCBSZW5kZXJlclZrOjpxdWV1ZVN1Ym1p
dCh2azo6Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGlu
dWU7CiB9CiAKK2FuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6cXVldWVTdWJtaXRPbmVPZmYodms6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAmJnByaW1hcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6Q29udGV4dFByaW9yaXR5IHByaW9y
aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWwg
KnNlcmlhbE91dCkKK3sKKyAgICBWa1N1Ym1pdEluZm8gc3VibWl0SW5mbyAgICAgICA9IHt9Owor
ICAgIHN1Ym1pdEluZm8uc1R5cGUgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfU1VC
TUlUX0lORk87CisgICAgc3VibWl0SW5mby5jb21tYW5kQnVmZmVyQ291bnQgPSAxOworICAgIHN1
Ym1pdEluZm8ucENvbW1hbmRCdWZmZXJzICAgID0gcHJpbWFyeS5wdHIoKTsKKworICAgIEFOR0xF
X1RSWShxdWV1ZVN1Ym1pdChjb250ZXh0LCBwcmlvcml0eSwgc3VibWl0SW5mbywgbnVsbHB0ciwg
c2VyaWFsT3V0KSk7CisKKyAgICBtUGVuZGluZ09uZU9mZkNvbW1hbmRzLnB1c2hfYmFjayh7KnNl
cmlhbE91dCwgc3RkOjptb3ZlKHByaW1hcnkpfSk7CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7Cit9CisKIGFuZ2xlOjpSZXN1bHQgUmVuZGVyZXJWazo6cXVldWVXYWl0SWRs
ZSh2azo6Q29udGV4dCAqY29udGV4dCwgZWdsOjpDb250ZXh0UHJpb3JpdHkgcHJpb3JpdHkpCiB7
CiAgICAgewpAQCAtMTk1MCwxNCArMjA4NCw1MiBAQCB2b2lkIFJlbmRlcmVyVms6Om9uQ29tcGxl
dGVkU2VyaWFsKFNlcmlhbCBzZXJpYWwpCiAKIHZvaWQgUmVuZGVyZXJWazo6cmVsb2FkVm9sa0lm
TmVlZGVkKCkgY29uc3QKIHsKLSAgICBpZiAodm9sa0dldExvYWRlZEluc3RhbmNlKCkgIT0gbUlu
c3RhbmNlKQorICAgIGlmICgobUluc3RhbmNlICE9IFZLX05VTExfSEFORExFKSAmJiAodm9sa0dl
dExvYWRlZEluc3RhbmNlKCkgIT0gbUluc3RhbmNlKSkKICAgICB7CiAgICAgICAgIHZvbGtMb2Fk
SW5zdGFuY2UobUluc3RhbmNlKTsKICAgICB9CiAKLSAgICBpZiAodm9sa0dldExvYWRlZERldmlj
ZSgpICE9IG1EZXZpY2UpCisgICAgaWYgKChtRGV2aWNlICE9IFZLX05VTExfSEFORExFKSAmJiAo
dm9sa0dldExvYWRlZERldmljZSgpICE9IG1EZXZpY2UpKQogICAgIHsKICAgICAgICAgdm9sa0xv
YWREZXZpY2UobURldmljZSk7CiAgICAgfQogfQorCithbmdsZTo6UmVzdWx0IFJlbmRlcmVyVms6
OmdldENvbW1hbmRCdWZmZXJPbmVPZmYodms6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlByaW1hcnlDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyT3V0KQoreworICAgIGlmICghbU9uZU9mZkNvbW1hbmRQb29s
LnZhbGlkKCkpCisgICAgeworICAgICAgICBWa0NvbW1hbmRQb29sQ3JlYXRlSW5mbyBjcmVhdGVJ
bmZvID0ge307CisgICAgICAgIGNyZWF0ZUluZm8uc1R5cGUgICAgICAgICAgICAgICAgICAgPSBW
S19TVFJVQ1RVUkVfVFlQRV9DT01NQU5EX1BPT0xfQ1JFQVRFX0lORk87CisgICAgICAgIGNyZWF0
ZUluZm8uZmxhZ3MgICAgICAgICAgICAgICAgICAgPSBWS19DT01NQU5EX1BPT0xfQ1JFQVRFX1JF
U0VUX0NPTU1BTkRfQlVGRkVSX0JJVDsKKyAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIG1P
bmVPZmZDb21tYW5kUG9vbC5pbml0KG1EZXZpY2UsIGNyZWF0ZUluZm8pKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1QZW5kaW5nT25lT2ZmQ29tbWFuZHMuZW1wdHkoKSAmJgorICAgICAgICBtUGVuZGlu
Z09uZU9mZkNvbW1hbmRzLmZyb250KCkuc2VyaWFsIDwgbUxhc3RDb21wbGV0ZWRRdWV1ZVNlcmlh
bCkKKyAgICB7CisgICAgICAgICpjb21tYW5kQnVmZmVyT3V0ID0gc3RkOjptb3ZlKG1QZW5kaW5n
T25lT2ZmQ29tbWFuZHMuZnJvbnQoKS5jb21tYW5kQnVmZmVyKTsKKyAgICAgICAgbVBlbmRpbmdP
bmVPZmZDb21tYW5kcy5wb3BfZnJvbnQoKTsKKyAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHQs
IGNvbW1hbmRCdWZmZXJPdXQtPnJlc2V0KCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBWa0NvbW1hbmRCdWZmZXJBbGxvY2F0ZUluZm8gYWxsb2NJbmZvID0ge307CisgICAgICAg
IGFsbG9jSW5mby5zVHlwZSAgICAgICAgICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQ
RV9DT01NQU5EX0JVRkZFUl9BTExPQ0FURV9JTkZPOworICAgICAgICBhbGxvY0luZm8ubGV2ZWwg
ICAgICAgICAgICAgICAgICAgICAgID0gVktfQ09NTUFORF9CVUZGRVJfTEVWRUxfUFJJTUFSWTsK
KyAgICAgICAgYWxsb2NJbmZvLmNvbW1hbmRCdWZmZXJDb3VudCAgICAgICAgICA9IDE7CisgICAg
ICAgIGFsbG9jSW5mby5jb21tYW5kUG9vbCAgICAgICAgICAgICAgICAgPSBtT25lT2ZmQ29tbWFu
ZFBvb2wuZ2V0SGFuZGxlKCk7CisKKyAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIGNvbW1h
bmRCdWZmZXJPdXQtPmluaXQoY29udGV4dC0+Z2V0RGV2aWNlKCksIGFsbG9jSW5mbykpOworICAg
IH0KKworICAgIFZrQ29tbWFuZEJ1ZmZlckJlZ2luSW5mbyBiZWdpbkluZm8gPSB7fTsKKyAgICBi
ZWdpbkluZm8uc1R5cGUgICAgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfQ09N
TUFORF9CVUZGRVJfQkVHSU5fSU5GTzsKKyAgICBiZWdpbkluZm8uZmxhZ3MgICAgICAgICAgICAg
ICAgICAgID0gVktfQ09NTUFORF9CVUZGRVJfVVNBR0VfT05FX1RJTUVfU1VCTUlUX0JJVDsKKyAg
ICBiZWdpbkluZm8ucEluaGVyaXRhbmNlSW5mbyAgICAgICAgID0gbnVsbHB0cjsKKyAgICBBTkdM
RV9WS19UUlkoY29udGV4dCwgY29tbWFuZEJ1ZmZlck91dC0+YmVnaW4oYmVnaW5JbmZvKSk7CisK
KyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CiB9ICAvLyBuYW1lc3BhY2Ug
cngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgKaW5kZXggNGU3OWFiYzQ3NWViNzVh
MDBjYWJmYjA4YmEzZjExYThkZWZhNzljOS4uZDIzZWY4ODg3N2EzMjU5Y2FiZDliODA1OTIyNTk2
ZDgxYmQ2ZTBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgKQEAgLTEwLDgg
KzEwLDEwIEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9SRU5ERVJFUlZLX0hf
CiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9SRU5ERVJFUlZLX0hfCiAKKyNpbmNs
dWRlIDxkZXF1ZT4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8bXV0ZXg+CisKICNpbmNs
dWRlICJ2a19leHRfcHJvdm9raW5nX3ZlcnRleC5oIgogI2luY2x1ZGUgInZvbGsuaCIKIApAQCAt
MjAsOCArMjIsOCBAQAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvQmxvYkNhY2hlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgotI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1V0aWxzVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
Zm9ybWF0X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2hl
bHBlcnMuaCIKQEAgLTE0MSwxNCArMTQzLDE1IEBAIGNsYXNzIFJlbmRlcmVyVmsgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICAvLyBJc3N1ZXMgYSBuZXcgc2VyaWFsIGZvciBsaW5rZWQgc2hhZGVy
IG1vZHVsZXMuIFVzZWQgaW4gdGhlIHBpcGVsaW5lIGNhY2hlLgogICAgIFNlcmlhbCBpc3N1ZVNo
YWRlclNlcmlhbCgpOwogCi0gICAgY29uc3QgYW5nbGU6OkZlYXR1cmVzVmsgJmdldEZlYXR1cmVz
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtRmVhdHVyZXNJbml0aWFsaXplZCk7Ci0g
ICAgICAgIHJldHVybiBtRmVhdHVyZXM7Ci0gICAgfQorICAgIGNvbnN0IGFuZ2xlOjpGZWF0dXJl
c1ZrICZnZXRGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1GZWF0dXJlczsgfQogICAgIHVpbnQz
Ml90IGdldE1heFZlcnRleEF0dHJpYkRpdmlzb3IoKSBjb25zdCB7IHJldHVybiBtTWF4VmVydGV4
QXR0cmliRGl2aXNvcjsgfQogICAgIFZrRGV2aWNlU2l6ZSBnZXRNYXhWZXJ0ZXhBdHRyaWJTdHJp
ZGUoKSBjb25zdCB7IHJldHVybiBtTWF4VmVydGV4QXR0cmliU3RyaWRlOyB9CiAKKyAgICBWa0Rl
dmljZVNpemUgZ2V0TWluSW1wb3J0ZWRIb3N0UG9pbnRlckFsaWdubWVudCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbU1pbkltcG9ydGVkSG9zdFBvaW50ZXJBbGlnbm1lbnQ7CisgICAg
fQorCiAgICAgYm9vbCBpc01vY2tJQ0RFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbUVuYWJsZWRJ
Q0QgPT0gdms6OklDRDo6TW9jazsgfQogCiAgICAgLy8gUXVlcnkgdGhlIGZvcm1hdCBwcm9wZXJ0
aWVzIGZvciBzZWxlY3QgYml0cyAobGluZWFyVGlsaW5nRmVhdHVyZXMsIG9wdGltYWxUaWxpbmdG
ZWF0dXJlcyBhbmQKQEAgLTE2OCwxMiArMTcxLDIzIEBAIGNsYXNzIFJlbmRlcmVyVmsgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICBhbmdsZTo6UmVzdWx0IHF1ZXVlU3VibWl0KHZrOjpDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpDb250ZXh0UHJp
b3JpdHkgcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa1N1
Ym1pdEluZm8gJnN1Ym1pdEluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2azo6RmVuY2UgJmZlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dms6OkZlbmNlICpmZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbCAq
c2VyaWFsT3V0KTsKICAgICBhbmdsZTo6UmVzdWx0IHF1ZXVlV2FpdElkbGUodms6OkNvbnRleHQg
KmNvbnRleHQsIGVnbDo6Q29udGV4dFByaW9yaXR5IHByaW9yaXR5KTsKICAgICBhbmdsZTo6UmVz
dWx0IGRldmljZVdhaXRJZGxlKHZrOjpDb250ZXh0ICpjb250ZXh0KTsKICAgICBWa1Jlc3VsdCBx
dWV1ZVByZXNlbnQoZWdsOjpDb250ZXh0UHJpb3JpdHkgcHJpb3JpdHksIGNvbnN0IFZrUHJlc2Vu
dEluZm9LSFIgJnByZXNlbnRJbmZvKTsKIAorICAgIC8vIFRoaXMgY29tbWFuZCBidWZmZXIgc2hv
dWxkIGJlIHN1Ym1pdHRlZCBpbW1lZGlhdGVseSB2aWEgcXVldWVTdWJtaXRPbmVPZmYuCisgICAg
YW5nbGU6OlJlc3VsdCBnZXRDb21tYW5kQnVmZmVyT25lT2ZmKHZrOjpDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6UHJpbWFyeUNv
bW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXJPdXQpOworCisgICAgLy8gRmlyZSBvZmYgYSBzaW5n
bGUgY29tbWFuZCBidWZmZXIgaW1tZWRpYXRlbHkgd2l0aCBkZWZhdWx0IHByaW9yaXR5LgorICAg
IC8vIENvbW1hbmQgYnVmZmVyIG11c3QgYmUgYWxsb2NhdGVkIHdpdGggZ2V0Q29tbWFuZEJ1ZmZl
ck9uZU9mZiBhbmQgaXMgcmVjbGFpbWVkLgorICAgIGFuZ2xlOjpSZXN1bHQgcXVldWVTdWJtaXRP
bmVPZmYodms6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2azo6UHJpbWFyeUNvbW1hbmRCdWZmZXIgJiZwcmltYXJ5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpDb250ZXh0UHJpb3JpdHkgcHJpb3JpdHksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWwgKnNlcmlhbE91dCk7CisK
ICAgICBhbmdsZTo6UmVzdWx0IG5ld1NoYXJlZEZlbmNlKHZrOjpDb250ZXh0ICpjb250ZXh0LCB2
azo6U2hhcmVkPHZrOjpGZW5jZT4gKnNoYXJlZEZlbmNlT3V0KTsKICAgICBpbmxpbmUgdm9pZCBy
ZXNldFNoYXJlZEZlbmNlKHZrOjpTaGFyZWQ8dms6OkZlbmNlPiAqc2hhcmVkRmVuY2VJbikKICAg
ICB7CkBAIC0yMDAsNyArMjE0LDEwIEBAIGNsYXNzIFJlbmRlcmVyVmsgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKIAogICAgIHZvaWQgY29sbGVjdEdhcmJhZ2Uodms6OlNoYXJlZFJlc291cmNlVXNlICYm
dXNlLCBzdGQ6OnZlY3Rvcjx2azo6R2FyYmFnZU9iamVjdD4gJiZzaGFyZWRHYXJiYWdlKQogICAg
IHsKLSAgICAgICAgbVNoYXJlZEdhcmJhZ2UuZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZSh1c2UpLCBz
dGQ6Om1vdmUoc2hhcmVkR2FyYmFnZSkpOworICAgICAgICBpZiAoIXNoYXJlZEdhcmJhZ2UuZW1w
dHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgbVNoYXJlZEdhcmJhZ2UuZW1wbGFjZV9iYWNr
KHN0ZDo6bW92ZSh1c2UpLCBzdGQ6Om1vdmUoc2hhcmVkR2FyYmFnZSkpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga01heEV4dGVuc2lvbk5hbWVzID0g
MjAwOwpAQCAtMjI0LDEzICsyNDEsMTUgQEAgY2xhc3MgUmVuZGVyZXJWayA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgICAgICByZXR1cm4gKG1TaGFyZWRHYXJiYWdlLnNpemUoKSA+IG1HYXJiYWdl
Q29sbGVjdGlvbkZsdXNoVGhyZXNob2xkKTsKICAgICB9CiAKKyAgICBib29sIGVuYWJsZURlYnVn
VXRpbHMoKSBjb25zdCB7IHJldHVybiBtRW5hYmxlRGVidWdVdGlsczsgfQorCiAgIHByaXZhdGU6
CiAgICAgYW5nbGU6OlJlc3VsdCBpbml0aWFsaXplRGV2aWNlKERpc3BsYXlWayAqZGlzcGxheVZr
LCB1aW50MzJfdCBxdWV1ZUZhbWlseUluZGV4KTsKICAgICB2b2lkIGVuc3VyZUNhcHNJbml0aWFs
aXplZCgpIGNvbnN0OwogCiAgICAgdm9pZCBxdWVyeURldmljZUV4dGVuc2lvbkZlYXR1cmVzKGNv
bnN0IEV4dGVuc2lvbk5hbWVMaXN0ICZkZXZpY2VFeHRlbnNpb25OYW1lcyk7CiAKLSAgICB2b2lk
IGluaXRGZWF0dXJlcyhjb25zdCBFeHRlbnNpb25OYW1lTGlzdCAmZXh0ZW5zaW9ucyk7CisgICAg
dm9pZCBpbml0RmVhdHVyZXMoRGlzcGxheVZrICpkaXNwbGF5LCBjb25zdCBFeHRlbnNpb25OYW1l
TGlzdCAmZXh0ZW5zaW9ucyk7CiAgICAgdm9pZCBpbml0UGlwZWxpbmVDYWNoZVZrS2V5KCk7CiAg
ICAgYW5nbGU6OlJlc3VsdCBpbml0UGlwZWxpbmVDYWNoZShEaXNwbGF5VmsgKmRpc3BsYXksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6UGlwZWxpbmVDYWNoZSAqcGlw
ZWxpbmVDYWNoZSwKQEAgLTI1MiwxMSArMjcxLDExIEBAIGNsYXNzIFJlbmRlcmVyVmsgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICBtdXRhYmxlIGdsOjpUZXh0dXJlQ2Fwc01hcCBtTmF0aXZlVGV4
dHVyZUNhcHM7CiAgICAgbXV0YWJsZSBnbDo6RXh0ZW5zaW9ucyBtTmF0aXZlRXh0ZW5zaW9uczsK
ICAgICBtdXRhYmxlIGdsOjpMaW1pdGF0aW9ucyBtTmF0aXZlTGltaXRhdGlvbnM7Ci0gICAgbXV0
YWJsZSBib29sIG1GZWF0dXJlc0luaXRpYWxpemVkOwogICAgIG11dGFibGUgYW5nbGU6OkZlYXR1
cmVzVmsgbUZlYXR1cmVzOwogCiAgICAgVmtJbnN0YW5jZSBtSW5zdGFuY2U7CiAgICAgYm9vbCBt
RW5hYmxlVmFsaWRhdGlvbkxheWVyczsKKyAgICBib29sIG1FbmFibGVEZWJ1Z1V0aWxzOwogICAg
IHZrOjpJQ0QgbUVuYWJsZWRJQ0Q7CiAgICAgVmtEZWJ1Z1V0aWxzTWVzc2VuZ2VyRVhUIG1EZWJ1
Z1V0aWxzTWVzc2VuZ2VyOwogICAgIFZrRGVidWdSZXBvcnRDYWxsYmFja0VYVCBtRGVidWdSZXBv
cnRDYWxsYmFjazsKQEAgLTI2OCw3ICsyODcsOSBAQCBjbGFzcyBSZW5kZXJlclZrIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAgICAgVmtQaHlzaWNhbERldmljZVZlcnRleEF0dHJpYnV0ZURpdmlzb3JG
ZWF0dXJlc0VYVCBtVmVydGV4QXR0cmlidXRlRGl2aXNvckZlYXR1cmVzOwogICAgIFZrUGh5c2lj
YWxEZXZpY2VWZXJ0ZXhBdHRyaWJ1dGVEaXZpc29yUHJvcGVydGllc0VYVCBtVmVydGV4QXR0cmli
dXRlRGl2aXNvclByb3BlcnRpZXM7CiAgICAgVmtQaHlzaWNhbERldmljZVRyYW5zZm9ybUZlZWRi
YWNrRmVhdHVyZXNFWFQgbVRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZXM7CisgICAgVmtQaHlzaWNh
bERldmljZUluZGV4VHlwZVVpbnQ4RmVhdHVyZXNFWFQgbUluZGV4VHlwZVVpbnQ4RmVhdHVyZXM7
CiAgICAgVmtQaHlzaWNhbERldmljZVN1Ymdyb3VwUHJvcGVydGllcyBtUGh5c2ljYWxEZXZpY2VT
dWJncm91cFByb3BlcnRpZXM7CisgICAgVmtQaHlzaWNhbERldmljZUV4dGVybmFsTWVtb3J5SG9z
dFByb3BlcnRpZXNFWFQgbVBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxNZW1vcnlIb3N0UHJvcGVydGll
czsKICAgICBzdGQ6OnZlY3RvcjxWa1F1ZXVlRmFtaWx5UHJvcGVydGllcz4gbVF1ZXVlRmFtaWx5
UHJvcGVydGllczsKICAgICBzdGQ6Om11dGV4IG1RdWV1ZU11dGV4OwogICAgIGFuZ2xlOjpQYWNr
ZWRFbnVtTWFwPGVnbDo6Q29udGV4dFByaW9yaXR5LCBWa1F1ZXVlPiBtUXVldWVzOwpAQCAtMjc2
LDYgKzI5Nyw3IEBAIGNsYXNzIFJlbmRlcmVyVmsgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB1
aW50MzJfdCBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXg7CiAgICAgdWludDMyX3QgbU1heFZlcnRl
eEF0dHJpYkRpdmlzb3I7CiAgICAgVmtEZXZpY2VTaXplIG1NYXhWZXJ0ZXhBdHRyaWJTdHJpZGU7
CisgICAgVmtEZXZpY2VTaXplIG1NaW5JbXBvcnRlZEhvc3RQb2ludGVyQWxpZ25tZW50OwogICAg
IFZrRGV2aWNlIG1EZXZpY2U7CiAgICAgQXRvbWljU2VyaWFsRmFjdG9yeSBtUXVldWVTZXJpYWxG
YWN0b3J5OwogICAgIEF0b21pY1NlcmlhbEZhY3RvcnkgbVNoYWRlclNlcmlhbEZhY3Rvcnk7CkBA
IC0zMjEsNiArMzQzLDE5IEBAIGNsYXNzIFJlbmRlcmVyVmsgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBrUGVyY2VudE1heE1lbW9yeUFsbG9jYXRpb25D
b3VudCA9IDAuMzsKICAgICAvLyBIb3cgbWFueSBvYmplY3RzIHRvIGdhcmJhZ2UgY29sbGVjdCBi
ZWZvcmUgaXNzdWluZyBhIGZsdXNoKCkKICAgICB1aW50MzJfdCBtR2FyYmFnZUNvbGxlY3Rpb25G
bHVzaFRocmVzaG9sZDsKKworICAgIC8vIE9ubHkgdXNlZCBmb3IgIm9uZSBvZmYiIGNvbW1hbmQg
YnVmZmVycy4KKyAgICB2azo6Q29tbWFuZFBvb2wgbU9uZU9mZkNvbW1hbmRQb29sOworCisgICAg
c3RydWN0IFBlbmRpbmdPbmVPZmZDb21tYW5kcworICAgIHsKKyAgICAgICAgU2VyaWFsIHNlcmlh
bDsKKyAgICAgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXI7CisgICAg
fTsKKyAgICBzdGQ6OmRlcXVlPFBlbmRpbmdPbmVPZmZDb21tYW5kcz4gbVBlbmRpbmdPbmVPZmZD
b21tYW5kczsKKworICAgIC8vIHRyYWNrIHdoZXRoZXIgd2UgaW5pdGlhbGl6ZWQgKG9yIHJlbGVh
c2VkKSBnbHNsYW5nCisgICAgYm9vbCBtR2xzbGFuZ0luaXRpYWxpemVkOwogfTsKIAogfSAgLy8g
bmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jlc291cmNlVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNDBmZjI4NjFlMDNkNDQ2YjcyMGIyOTBjNzdkYWVjNGZmNjVkZTAxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9SZXNvdXJjZVZrLmNwcApAQCAtMCwwICsxLDk4IEBACisvLworLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVzb3Vy
Y2U6CisvLyAgICBSZXNvdXJjZSBsaWZldGltZSB0cmFja2luZyBpbiB0aGUgVnVsa2FuIGJhY2st
ZW5kLgorLy8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZr
LmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCisK
K25hbWVzcGFjZSByeAoreworbmFtZXNwYWNlIHZrCit7CisvLyBSZXNvdXJjZSBpbXBsZW1lbnRh
dGlvbi4KK1Jlc291cmNlOjpSZXNvdXJjZSgpCit7CisgICAgbVVzZS5pbml0KCk7Cit9CisKK1Jl
c291cmNlOjp+UmVzb3VyY2UoKQoreworICAgIG1Vc2UucmVsZWFzZSgpOworfQorCithbmdsZTo6
UmVzdWx0IFJlc291cmNlOjpmaW5pc2hSdW5uaW5nQ29tbWFuZHMoQ29udGV4dFZrICpjb250ZXh0
VmspCit7CisgICAgcmV0dXJuIGNvbnRleHRWay0+ZmluaXNoVG9TZXJpYWwobVVzZS5nZXRTZXJp
YWwoKSk7Cit9CisKKy8vIFNoYXJlZEdhcmJhZ2UgaW1wbGVtZW50YXRpb24uCitTaGFyZWRHYXJi
YWdlOjpTaGFyZWRHYXJiYWdlKCkgPSBkZWZhdWx0OworCitTaGFyZWRHYXJiYWdlOjpTaGFyZWRH
YXJiYWdlKFNoYXJlZEdhcmJhZ2UgJiZvdGhlcikKK3sKKyAgICAqdGhpcyA9IHN0ZDo6bW92ZShv
dGhlcik7Cit9CisKK1NoYXJlZEdhcmJhZ2U6OlNoYXJlZEdhcmJhZ2UoU2hhcmVkUmVzb3VyY2VV
c2UgJiZ1c2UsIHN0ZDo6dmVjdG9yPEdhcmJhZ2VPYmplY3Q+ICYmZ2FyYmFnZSkKKyAgICA6IG1M
aWZldGltZShzdGQ6Om1vdmUodXNlKSksIG1HYXJiYWdlKHN0ZDo6bW92ZShnYXJiYWdlKSkKK3t9
CisKK1NoYXJlZEdhcmJhZ2U6On5TaGFyZWRHYXJiYWdlKCkgPSBkZWZhdWx0OworCitTaGFyZWRH
YXJiYWdlICZTaGFyZWRHYXJiYWdlOjpvcGVyYXRvcj0oU2hhcmVkR2FyYmFnZSAmJnJocykKK3sK
KyAgICBzdGQ6OnN3YXAobUxpZmV0aW1lLCByaHMubUxpZmV0aW1lKTsKKyAgICBzdGQ6OnN3YXAo
bUdhcmJhZ2UsIHJocy5tR2FyYmFnZSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitib29sIFNo
YXJlZEdhcmJhZ2U6OmRlc3Ryb3lJZkNvbXBsZXRlKFZrRGV2aWNlIGRldmljZSwgU2VyaWFsIGNv
bXBsZXRlZFNlcmlhbCkKK3sKKyAgICBpZiAobUxpZmV0aW1lLmlzQ3VycmVudGx5SW5Vc2UoY29t
cGxldGVkU2VyaWFsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbUxpZmV0aW1lLnJl
bGVhc2UoKTsKKworICAgIGZvciAoR2FyYmFnZU9iamVjdCAmb2JqZWN0IDogbUdhcmJhZ2UpCisg
ICAgeworICAgICAgICBvYmplY3QuZGVzdHJveShkZXZpY2UpOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCisvLyBSZXNvdXJjZVVzZUxpc3QgaW1wbGVtZW50YXRpb24uCitSZXNvdXJj
ZVVzZUxpc3Q6OlJlc291cmNlVXNlTGlzdCgpID0gZGVmYXVsdDsKKworUmVzb3VyY2VVc2VMaXN0
Ojp+UmVzb3VyY2VVc2VMaXN0KCkKK3sKKyAgICBBU1NFUlQobVJlc291cmNlVXNlcy5lbXB0eSgp
KTsKK30KKwordm9pZCBSZXNvdXJjZVVzZUxpc3Q6OnJlbGVhc2VSZXNvdXJjZVVzZXMoKQorewor
ICAgIGZvciAoU2hhcmVkUmVzb3VyY2VVc2UgJnVzZSA6IG1SZXNvdXJjZVVzZXMpCisgICAgewor
ICAgICAgICB1c2UucmVsZWFzZSgpOworICAgIH0KKworICAgIG1SZXNvdXJjZVVzZXMuY2xlYXIo
KTsKK30KKwordm9pZCBSZXNvdXJjZVVzZUxpc3Q6OnJlbGVhc2VSZXNvdXJjZVVzZXNBbmRVcGRh
dGVTZXJpYWxzKFNlcmlhbCBzZXJpYWwpCit7CisgICAgZm9yIChTaGFyZWRSZXNvdXJjZVVzZSAm
dXNlIDogbVJlc291cmNlVXNlcykKKyAgICB7CisgICAgICAgIHVzZS5yZWxlYXNlQW5kVXBkYXRl
U2VyaWFsKHNlcmlhbCk7CisgICAgfQorCisgICAgbVJlc291cmNlVXNlcy5jbGVhcigpOworfQor
fSAgLy8gbmFtZXNwYWNlIHZrCit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VW
ay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9SZXNvdXJjZVZrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiN2IyZmMwM2I4NjY4ODEyMWM1YjQzYmYyMDU0
MGY1YzhjYzkwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVzb3VyY2VWay5oCkBAIC0wLDAgKzEsMjAwIEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gUmVzb3VyY2VWazoKKy8vICAgIFJlc291cmNlIGxpZmV0aW1lIHRyYWNr
aW5nIGluIHRoZSBWdWxrYW4gYmFjay1lbmQuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRF
UkVSX1ZVTEtBTl9SRVNPVVJDRVZLX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtB
Tl9SRVNPVVJDRVZLX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
dXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CituYW1lc3BhY2UgdmsKK3sKKy8vIFRyYWNrcyBo
b3cgYSByZXNvdXJjZSBpcyB1c2VkIGJ5IEFOR0xFIGFuZCBieSBhIFZrUXVldWUuIFRoZSByZWZl
cmVuY2UgY291bnQgaW5kaWNhdGVzIHRoZSBudW1iZXIKKy8vIG9mIHRpbWVzIGEgcmVzb3VyY2Ug
aXMgcmV0YWluZWQgYnkgQU5HTEUuIFRoZSBzZXJpYWwgaW5kaWNhdGVzIHRoZSBtb3N0IHJlY2Vu
dCB1c2Ugb2YgYSByZXNvdXJjZQorLy8gaW4gdGhlIFZrUXVldWUuIFRoZSByZWZlcmVuY2UgY291
bnQgYW5kIHNlcmlhbCB0b2dldGhlciBjYW4gZGV0ZXJtaW5lIGlmIGEgcmVzb3VyY2UgaXMgY3Vy
cmVudGx5CisvLyBpbiB1c2UuCitzdHJ1Y3QgUmVzb3VyY2VVc2UKK3sKKyAgICBSZXNvdXJjZVVz
ZSgpID0gZGVmYXVsdDsKKworICAgIC8vIFRoZSBudW1iZXIgb2YgdGltZXMgYSByZXNvdXJjZSBp
cyByZXRhaW5lZCBieSBBTkdMRS4KKyAgICB1aW50MzJfdCBjb3VudGVyID0gMDsKKworICAgIC8v
IFRoZSBtb3N0IHJlY2VudCB0aW1lIG9mIHVzZSBpbiBhIFZrUXVldWUuCisgICAgU2VyaWFsIHNl
cmlhbDsKK307CisKK2NsYXNzIFNoYXJlZFJlc291cmNlVXNlIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBTaGFyZWRSZXNvdXJjZVVzZSgpIDogbVVzZShudWxs
cHRyKSB7fQorICAgIH5TaGFyZWRSZXNvdXJjZVVzZSgpIHsgQVNTRVJUKCF2YWxpZCgpKTsgfQor
ICAgIFNoYXJlZFJlc291cmNlVXNlKFNoYXJlZFJlc291cmNlVXNlICYmcmhzKSA6IG1Vc2Uocmhz
Lm1Vc2UpIHsgcmhzLm1Vc2UgPSBudWxscHRyOyB9CisgICAgU2hhcmVkUmVzb3VyY2VVc2UgJm9w
ZXJhdG9yPShTaGFyZWRSZXNvdXJjZVVzZSAmJnJocykKKyAgICB7CisgICAgICAgIHN0ZDo6c3dh
cChtVXNlLCByaHMubVVzZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBB
TkdMRV9JTkxJTkUgYm9vbCB2YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1Vc2UgIT0gbnVsbHB0cjsg
fQorCisgICAgdm9pZCBpbml0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbVVzZSk7CisgICAg
ICAgIG1Vc2UgPSBuZXcgUmVzb3VyY2VVc2U7CisgICAgICAgIG1Vc2UtPmNvdW50ZXIrKzsKKyAg
ICB9CisKKyAgICAvLyBTcGVjaWZpY2FsbHkgZm9yIHVzZSB3aXRoIGNvbW1hbmQgYnVmZmVycyB0
aGF0IGFyZSB1c2VkIGFzIG9uZS1vZmZzLgorICAgIHZvaWQgdXBkYXRlU2VyaWFsT25lT2ZmKFNl
cmlhbCBzZXJpYWwpIHsgbVVzZS0+c2VyaWFsID0gc2VyaWFsOyB9CisKKyAgICBBTkdMRV9JTkxJ
TkUgdm9pZCByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICAg
ICAgQVNTRVJUKG1Vc2UtPmNvdW50ZXIgPiAwKTsKKyAgICAgICAgaWYgKC0tbVVzZS0+Y291bnRl
ciA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbVVzZTsKKyAgICAgICAgfQor
ICAgICAgICBtVXNlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBBTkdMRV9JTkxJTkUgdm9pZCBy
ZWxlYXNlQW5kVXBkYXRlU2VyaWFsKFNlcmlhbCBzZXJpYWwpCisgICAgeworICAgICAgICBBU1NF
UlQodmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChtVXNlLT5jb3VudGVyID4gMCk7CisgICAgICAg
IEFTU0VSVChtVXNlLT5zZXJpYWwgPD0gc2VyaWFsKTsKKyAgICAgICAgbVVzZS0+c2VyaWFsID0g
c2VyaWFsOworICAgICAgICByZWxlYXNlKCk7CisgICAgfQorCisgICAgQU5HTEVfSU5MSU5FIHZv
aWQgc2V0KGNvbnN0IFNoYXJlZFJlc291cmNlVXNlICZyaHMpCisgICAgeworICAgICAgICBBU1NF
UlQocmhzLnZhbGlkKCkpOworICAgICAgICBBU1NFUlQoIXZhbGlkKCkpOworICAgICAgICBBU1NF
UlQocmhzLm1Vc2UtPmNvdW50ZXIgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkpOworICAgICAgICBtVXNlID0gcmhzLm1Vc2U7CisgICAgICAgIG1Vc2UtPmNvdW50ZXIrKzsK
KyAgICB9CisKKyAgICAvLyBUaGUgYmFzZSBjb3VudGVyIHZhbHVlIGZvciBhIGxpdmUgcmVzb3Vy
Y2UgaXMgIjEiLiBBbnkgdmFsdWUgZ3JlYXRlciB0aGFuIG9uZSBpbmRpY2F0ZXMKKyAgICAvLyB0
aGUgcmVzb3VyY2UgaXMgaW4gdXNlIGJ5IGEgY29tbWFuZCBidWZmZXIuCisgICAgQU5HTEVfSU5M
SU5FIGJvb2wgdXNlZEluUmVjb3JkZWRDb21tYW5kcygpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQodmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtVXNlLT5jb3VudGVyID4gMTsKKyAgICB9
CisKKyAgICBBTkdMRV9JTkxJTkUgYm9vbCB1c2VkSW5SdW5uaW5nQ29tbWFuZHMoU2VyaWFsIGxh
c3RDb21wbGV0ZWRTZXJpYWwpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodmFsaWQoKSk7
CisgICAgICAgIHJldHVybiBtVXNlLT5zZXJpYWwgPiBsYXN0Q29tcGxldGVkU2VyaWFsOworICAg
IH0KKworICAgIEFOR0xFX0lOTElORSBib29sIGlzQ3VycmVudGx5SW5Vc2UoU2VyaWFsIGxhc3RD
b21wbGV0ZWRTZXJpYWwpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdXNlZEluUmVjb3Jk
ZWRDb21tYW5kcygpIHx8IHVzZWRJblJ1bm5pbmdDb21tYW5kcyhsYXN0Q29tcGxldGVkU2VyaWFs
KTsKKyAgICB9CisKKyAgICBBTkdMRV9JTkxJTkUgU2VyaWFsIGdldFNlcmlhbCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgICAgIHJldHVybiBtVXNlLT5zZXJp
YWw7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgUmVzb3VyY2VVc2UgKm1Vc2U7Cit9OworCitj
bGFzcyBTaGFyZWRHYXJiYWdlCit7CisgIHB1YmxpYzoKKyAgICBTaGFyZWRHYXJiYWdlKCk7Cisg
ICAgU2hhcmVkR2FyYmFnZShTaGFyZWRHYXJiYWdlICYmb3RoZXIpOworICAgIFNoYXJlZEdhcmJh
Z2UoU2hhcmVkUmVzb3VyY2VVc2UgJiZ1c2UsIHN0ZDo6dmVjdG9yPEdhcmJhZ2VPYmplY3Q+ICYm
Z2FyYmFnZSk7CisgICAgflNoYXJlZEdhcmJhZ2UoKTsKKyAgICBTaGFyZWRHYXJiYWdlICZvcGVy
YXRvcj0oU2hhcmVkR2FyYmFnZSAmJnJocyk7CisKKyAgICBib29sIGRlc3Ryb3lJZkNvbXBsZXRl
KFZrRGV2aWNlIGRldmljZSwgU2VyaWFsIGNvbXBsZXRlZFNlcmlhbCk7CisKKyAgcHJpdmF0ZToK
KyAgICBTaGFyZWRSZXNvdXJjZVVzZSBtTGlmZXRpbWU7CisgICAgc3RkOjp2ZWN0b3I8R2FyYmFn
ZU9iamVjdD4gbUdhcmJhZ2U7Cit9OworCit1c2luZyBTaGFyZWRHYXJiYWdlTGlzdCA9IHN0ZDo6
dmVjdG9yPFNoYXJlZEdhcmJhZ2U+OworCisvLyBNaXhpbiB0byBhYnN0cmFjdCBhd2F5IHRoZSBy
ZXNvdXJjZSB1c2UgdHJhY2tpbmcuCitjbGFzcyBSZXNvdXJjZVVzZUxpc3QgZmluYWwgOiBhbmds
ZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIFJlc291cmNlVXNlTGlzdCgpOworICAg
IHZpcnR1YWwgflJlc291cmNlVXNlTGlzdCgpOworCisgICAgdm9pZCBhZGQoY29uc3QgU2hhcmVk
UmVzb3VyY2VVc2UgJnJlc291cmNlVXNlKTsKKworICAgIHZvaWQgcmVsZWFzZVJlc291cmNlVXNl
cygpOworICAgIHZvaWQgcmVsZWFzZVJlc291cmNlVXNlc0FuZFVwZGF0ZVNlcmlhbHMoU2VyaWFs
IHNlcmlhbCk7CisKKyAgcHJpdmF0ZToKKyAgICBzdGQ6OnZlY3RvcjxTaGFyZWRSZXNvdXJjZVVz
ZT4gbVJlc291cmNlVXNlczsKK307CisKK0FOR0xFX0lOTElORSB2b2lkIFJlc291cmNlVXNlTGlz
dDo6YWRkKGNvbnN0IFNoYXJlZFJlc291cmNlVXNlICZyZXNvdXJjZVVzZSkKK3sKKyAgICBTaGFy
ZWRSZXNvdXJjZVVzZSBuZXdVc2U7CisgICAgbmV3VXNlLnNldChyZXNvdXJjZVVzZSk7CisgICAg
bVJlc291cmNlVXNlcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG5ld1VzZSkpOworfQorCisvLyBU
aGlzIGlzIGEgaGVscGVyIGNsYXNzIGZvciBiYWNrLWVuZCBvYmplY3RzIHVzZWQgaW4gVmsgY29t
bWFuZCBidWZmZXJzLiBUaGV5IGtlZXAgYSByZWNvcmQKKy8vIG9mIHRoZWlyIHVzZSBpbiBBTkdM
RSBhbmQgVmtRdWV1ZXMgdmlhIFNoYXJlZFJlc291cmNlVXNlLgorY2xhc3MgUmVzb3VyY2UgOiBh
bmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgflJlc291cmNlKCk7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlc291cmNlIGlzIHVzZWQgYnkgQU5HTEUg
aW4gYW4gdW5mbHVzaGVkIGNvbW1hbmQgYnVmZmVyLgorICAgIGJvb2wgdXNlZEluUmVjb3JkZWRD
b21tYW5kcygpIGNvbnN0IHsgcmV0dXJuIG1Vc2UudXNlZEluUmVjb3JkZWRDb21tYW5kcygpOyB9
CisKKyAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGRyaXZlciBoYXMgZmluaXNoZWQgZXhlY3V0aW9u
IHdpdGggdGhpcyByZXNvdXJjZS4KKyAgICBib29sIHVzZWRJblJ1bm5pbmdDb21tYW5kcyhTZXJp
YWwgbGFzdENvbXBsZXRlZFNlcmlhbCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtVXNl
LnVzZWRJblJ1bm5pbmdDb21tYW5kcyhsYXN0Q29tcGxldGVkU2VyaWFsKTsKKyAgICB9CisKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHJlc291cmNlIGlzIGluIHVzZSBieSBBTkdMRSBvciB0
aGUgZHJpdmVyLgorICAgIGJvb2wgaXNDdXJyZW50bHlJblVzZShTZXJpYWwgbGFzdENvbXBsZXRl
ZFNlcmlhbCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtVXNlLmlzQ3VycmVudGx5SW5V
c2UobGFzdENvbXBsZXRlZFNlcmlhbCk7CisgICAgfQorCisgICAgLy8gRW5zdXJlcyB0aGUgZHJp
dmVyIGlzIGNhdWdodCB1cCB0byB0aGlzIHJlc291cmNlIGFuZCBpdCBpcyBvbmx5IGluIHVzZSBi
eSBBTkdMRS4KKyAgICBhbmdsZTo6UmVzdWx0IGZpbmlzaFJ1bm5pbmdDb21tYW5kcyhDb250ZXh0
VmsgKmNvbnRleHRWayk7CisKKyAgICAvLyBBZGRzIHRoZSByZXNvdXJjZSB0byBhIHJlc291cmNl
IHVzZSBsaXN0LgorICAgIHZvaWQgcmV0YWluKFJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VM
aXN0KTsKKworICBwcm90ZWN0ZWQ6CisgICAgUmVzb3VyY2UoKTsKKworICAgIC8vIEN1cnJlbnQg
cmVzb3VyY2UgbGlmZXRpbWUuCisgICAgU2hhcmVkUmVzb3VyY2VVc2UgbVVzZTsKK307CisKK0FO
R0xFX0lOTElORSB2b2lkIFJlc291cmNlOjpyZXRhaW4oUmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJj
ZVVzZUxpc3QpCit7CisgICAgLy8gU3RvcmUgcmVmZXJlbmNlIGluIHJlc291cmNlIGxpc3QuCisg
ICAgcmVzb3VyY2VVc2VMaXN0LT5hZGQobVVzZSk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgdmsKK30g
IC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9S
RVNPVVJDRVZLX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaAppbmRleCBmZDkyYzNm
MDZiNjk0NTI1YTI5ZDg3M2MyMDAxYWMzNTA2YmUyNmE1Li4yOGM5MTFmNjRmZTgzYjMxZmY1OGNj
MTc1NDFlNGM2OWI0NDI3NWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2FtcGxlclZrLmgKQEAg
LTM0LDEwICszNCw3IEBAIGNsYXNzIFNhbXBsZXJWayA6IHB1YmxpYyBTYW1wbGVySW1wbAogCiAg
ICAgU2VyaWFsIGdldFNlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1TZXJpYWw7IH0KIAotICAgIHZv
aWQgb25TYW1wbGVyQWNjZXNzKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCkK
LSAgICB7Ci0gICAgICAgIG1TYW1wbGVyLm9uUmVzb3VyY2VBY2Nlc3MocmVzb3VyY2VVc2VMaXN0
KTsKLSAgICB9CisgICAgdm9pZCByZXRhaW4odms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VV
c2VMaXN0KSB7IG1TYW1wbGVyLnJldGFpbihyZXNvdXJjZVVzZUxpc3QpOyB9CiAKICAgcHJpdmF0
ZToKICAgICB2azo6U2FtcGxlckhlbHBlciBtU2FtcGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29t
bWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1NlY29uZGFyeUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IDgwMjU3YTAwNzhm
ZDg1YjQzOTJhNzYyNWM5ZGQ3MmZjZWQ0NWM0NWMuLmNjYmIzNDMzM2FjMjAxYTY3ZDAyOTk5YTU4
MTY1YWM3OTc5OGZmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZWNv
bmRhcnlDb21tYW5kQnVmZmVyLmNwcApAQCAtMTcsNiArMTcsMTAzIEBAIG5hbWVzcGFjZSB2awog
ewogbmFtZXNwYWNlIHByaXYKIHsKK25hbWVzcGFjZQoreworY29uc3QgY2hhciAqR2V0Q29tbWFu
ZFN0cmluZyhDb21tYW5kSUQgaWQpCit7CisgICAgc3dpdGNoIChpZCkKKyAgICB7CisgICAgICAg
IGNhc2UgQ29tbWFuZElEOjpJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuICItLUludmFsaWQt
LSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCZWdpblF1ZXJ5OgorICAgICAgICAgICAgcmV0
dXJuICJCZWdpblF1ZXJ5IjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmRDb21wdXRlUGlw
ZWxpbmU6CisgICAgICAgICAgICByZXR1cm4gIkJpbmRDb21wdXRlUGlwZWxpbmUiOworICAgICAg
ICBjYXNlIENvbW1hbmRJRDo6QmluZERlc2NyaXB0b3JTZXRzOgorICAgICAgICAgICAgcmV0dXJu
ICJCaW5kRGVzY3JpcHRvclNldHMiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6QmluZEdyYXBo
aWNzUGlwZWxpbmU6CisgICAgICAgICAgICByZXR1cm4gIkJpbmRHcmFwaGljc1BpcGVsaW5lIjsK
KyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmRJbmRleEJ1ZmZlcjoKKyAgICAgICAgICAgIHJl
dHVybiAiQmluZEluZGV4QnVmZmVyIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmRWZXJ0
ZXhCdWZmZXJzOgorICAgICAgICAgICAgcmV0dXJuICJCaW5kVmVydGV4QnVmZmVycyI7CisgICAg
ICAgIGNhc2UgQ29tbWFuZElEOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzOgorICAgICAg
ICAgICAgcmV0dXJuICJCaW5kVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzIjsKKyAgICAgICAgY2Fz
ZSBDb21tYW5kSUQ6OkJsaXRJbWFnZToKKyAgICAgICAgICAgIHJldHVybiAiQmxpdEltYWdlIjsK
KyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJ1ZmZlckJhcnJpZXI6CisgICAgICAgICAgICByZXR1
cm4gIkJ1ZmZlckJhcnJpZXIiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6Q2xlYXJBdHRhY2ht
ZW50czoKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXJBdHRhY2htZW50cyI7CisgICAgICAgIGNh
c2UgQ29tbWFuZElEOjpDbGVhckNvbG9ySW1hZ2U6CisgICAgICAgICAgICByZXR1cm4gIkNsZWFy
Q29sb3JJbWFnZSI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDbGVhckRlcHRoU3RlbmNpbElt
YWdlOgorICAgICAgICAgICAgcmV0dXJuICJDbGVhckRlcHRoU3RlbmNpbEltYWdlIjsKKyAgICAg
ICAgY2FzZSBDb21tYW5kSUQ6OkNvcHlCdWZmZXI6CisgICAgICAgICAgICByZXR1cm4gIkNvcHlC
dWZmZXIiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6Q29weUJ1ZmZlclRvSW1hZ2U6CisgICAg
ICAgICAgICByZXR1cm4gIkNvcHlCdWZmZXJUb0ltYWdlIjsKKyAgICAgICAgY2FzZSBDb21tYW5k
SUQ6OkNvcHlJbWFnZToKKyAgICAgICAgICAgIHJldHVybiAiQ29weUltYWdlIjsKKyAgICAgICAg
Y2FzZSBDb21tYW5kSUQ6OkNvcHlJbWFnZVRvQnVmZmVyOgorICAgICAgICAgICAgcmV0dXJuICJD
b3B5SW1hZ2VUb0J1ZmZlciI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEaXNwYXRjaDoKKyAg
ICAgICAgICAgIHJldHVybiAiRGlzcGF0Y2giOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RGlz
cGF0Y2hJbmRpcmVjdDoKKyAgICAgICAgICAgIHJldHVybiAiRGlzcGF0Y2hJbmRpcmVjdCI7Cisg
ICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3OgorICAgICAgICAgICAgcmV0dXJuICJEcmF3IjsK
KyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkRyYXdJbmRleGVkOgorICAgICAgICAgICAgcmV0dXJu
ICJEcmF3SW5kZXhlZCI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5kZXhlZEJhc2VW
ZXJ0ZXg6CisgICAgICAgICAgICByZXR1cm4gIkRyYXdJbmRleGVkQmFzZVZlcnRleCI7CisgICAg
ICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5kZXhlZEluc3RhbmNlZDoKKyAgICAgICAgICAgIHJl
dHVybiAiRHJhd0luZGV4ZWRJbnN0YW5jZWQiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJh
d0luZGV4ZWRJbnN0YW5jZWRCYXNlVmVydGV4OgorICAgICAgICAgICAgcmV0dXJuICJEcmF3SW5k
ZXhlZEluc3RhbmNlZEJhc2VWZXJ0ZXgiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJhd0lu
ZGV4ZWRJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlOgorICAgICAgICAgICAgcmV0dXJu
ICJEcmF3SW5kZXhlZEluc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UiOworICAgICAgICBj
YXNlIENvbW1hbmRJRDo6RHJhd0luc3RhbmNlZDoKKyAgICAgICAgICAgIHJldHVybiAiRHJhd0lu
c3RhbmNlZCI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5zdGFuY2VkQmFzZUluc3Rh
bmNlOgorICAgICAgICAgICAgcmV0dXJuICJEcmF3SW5zdGFuY2VkQmFzZUluc3RhbmNlIjsKKyAg
ICAgICAgY2FzZSBDb21tYW5kSUQ6OkRyYXdJbmRleGVkSW5kaXJlY3Q6CisgICAgICAgICAgICBy
ZXR1cm4gIkRyYXdJbmRleGVkSW5kaXJlY3QiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJh
d0luZGlyZWN0OgorICAgICAgICAgICAgcmV0dXJuICJEcmF3SW5kaXJlY3QiOworICAgICAgICBj
YXNlIENvbW1hbmRJRDo6RW5kUXVlcnk6CisgICAgICAgICAgICByZXR1cm4gIkVuZFF1ZXJ5IjsK
KyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkV4ZWN1dGlvbkJhcnJpZXI6CisgICAgICAgICAgICBy
ZXR1cm4gIkV4ZWN1dGlvbkJhcnJpZXIiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6RmlsbEJ1
ZmZlcjoKKyAgICAgICAgICAgIHJldHVybiAiRmlsbEJ1ZmZlciI7CisgICAgICAgIGNhc2UgQ29t
bWFuZElEOjpJbWFnZUJhcnJpZXI6CisgICAgICAgICAgICByZXR1cm4gIkltYWdlQmFycmllciI7
CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpNZW1vcnlCYXJyaWVyOgorICAgICAgICAgICAgcmV0
dXJuICJNZW1vcnlCYXJyaWVyIjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlBpcGVsaW5lQmFy
cmllcjoKKyAgICAgICAgICAgIHJldHVybiAiUGlwZWxpbmVCYXJyaWVyIjsKKyAgICAgICAgY2Fz
ZSBDb21tYW5kSUQ6OlB1c2hDb25zdGFudHM6CisgICAgICAgICAgICByZXR1cm4gIlB1c2hDb25z
dGFudHMiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6UmVzZXRFdmVudDoKKyAgICAgICAgICAg
IHJldHVybiAiUmVzZXRFdmVudCI7CisgICAgICAgIGNhc2UgQ29tbWFuZElEOjpSZXNldFF1ZXJ5
UG9vbDoKKyAgICAgICAgICAgIHJldHVybiAiUmVzZXRRdWVyeVBvb2wiOworICAgICAgICBjYXNl
IENvbW1hbmRJRDo6UmVzb2x2ZUltYWdlOgorICAgICAgICAgICAgcmV0dXJuICJSZXNvbHZlSW1h
Z2UiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6U2V0RXZlbnQ6CisgICAgICAgICAgICByZXR1
cm4gIlNldEV2ZW50IjsKKyAgICAgICAgY2FzZSBDb21tYW5kSUQ6OldhaXRFdmVudHM6CisgICAg
ICAgICAgICByZXR1cm4gIldhaXRFdmVudHMiOworICAgICAgICBjYXNlIENvbW1hbmRJRDo6V3Jp
dGVUaW1lc3RhbXA6CisgICAgICAgICAgICByZXR1cm4gIldyaXRlVGltZXN0YW1wIjsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIE5lZWQgdGhpcyB0byB3b3JrIGFyb3VuZCBNU1ZD
IHdhcm5pbmcgNDcxNS4KKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gIi0tdW5yZWFjaGFibGUtLSI7CisgICAgfQorfQorfSAgLy8gbmFtZXNwYWNlCiAKIEFO
R0xFX0lOTElORSBjb25zdCBDb21tYW5kSGVhZGVyICpOZXh0Q29tbWFuZChjb25zdCBDb21tYW5k
SGVhZGVyICpjb21tYW5kKQogewpAQCAtNDE5LDEzOSArNTE2LDE2IEBAIHZvaWQgU2Vjb25kYXJ5
Q29tbWFuZEJ1ZmZlcjo6Z2V0TWVtb3J5VXNhZ2VTdGF0cyhzaXplX3QgKnVzZWRNZW1vcnlPdXQs
CiAKIHN0ZDo6c3RyaW5nIFNlY29uZGFyeUNvbW1hbmRCdWZmZXI6OmR1bXBDb21tYW5kcyhjb25z
dCBjaGFyICpzZXBhcmF0b3IpIGNvbnN0CiB7Ci0gICAgc3RkOjpzdHJpbmcgcmVzdWx0OworICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IENvbW1hbmRIZWFkZXIg
KmNvbW1hbmQgOiBtQ29tbWFuZHMpCiAgICAgewogICAgICAgICBmb3IgKGNvbnN0IENvbW1hbmRI
ZWFkZXIgKmN1cnJlbnRDb21tYW5kICAgICAgICAgICAgICAgICAgICAgID0gY29tbWFuZDsKICAg
ICAgICAgICAgICBjdXJyZW50Q29tbWFuZC0+aWQgIT0gQ29tbWFuZElEOjpJbnZhbGlkOyBjdXJy
ZW50Q29tbWFuZCA9IE5leHRDb21tYW5kKGN1cnJlbnRDb21tYW5kKSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmVzdWx0ICs9IHNlcGFyYXRvcjsKLSAgICAgICAgICAgIHN3aXRjaCAoY3VycmVu
dENvbW1hbmQtPmlkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFu
ZElEOjpCZWdpblF1ZXJ5OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkJlZ2luUXVl
cnkiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENv
bW1hbmRJRDo6QmluZENvbXB1dGVQaXBlbGluZToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ICs9ICJCaW5kQ29tcHV0ZVBpcGVsaW5lIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkJpbmREZXNjcmlwdG9yU2V0czoKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJCaW5kRGVzY3JpcHRvclNldHMiOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6QmluZEdy
YXBoaWNzUGlwZWxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQmluZEdyYXBo
aWNzUGlwZWxpbmUiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIENvbW1hbmRJRDo6QmluZEluZGV4QnVmZmVyOgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gIkJpbmRJbmRleEJ1ZmZlciI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCaW5kVmVydGV4QnVmZmVyczoKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJCaW5kVmVydGV4QnVmZmVycyI7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCaW5kVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkJp
bmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6QmxpdEltYWdlOgotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgKz0gIkJsaXRJbWFnZSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpCdWZmZXJCYXJyaWVyOgotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgKz0gIkJ1ZmZlckJhcnJpZXIiOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6Q2xlYXJBdHRhY2ht
ZW50czoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJDbGVhckF0dGFjaG1lbnRzIjsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5k
SUQ6OkNsZWFyQ29sb3JJbWFnZToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJDbGVh
ckNvbG9ySW1hZ2UiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIENvbW1hbmRJRDo6Q2xlYXJEZXB0aFN0ZW5jaWxJbWFnZToKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ICs9ICJDbGVhckRlcHRoU3RlbmNpbEltYWdlIjsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkNvcHlCdWZmZXI6
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQ29weUJ1ZmZlciI7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpDb3B5QnVm
ZmVyVG9JbWFnZToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJDb3B5QnVmZmVyVG9J
bWFnZSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q29tbWFuZElEOjpDb3B5SW1hZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiQ29w
eUltYWdlIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDb21tYW5kSUQ6OkNvcHlJbWFnZVRvQnVmZmVyOgotICAgICAgICAgICAgICAgICAgICByZXN1
bHQgKz0gIkNvcHlJbWFnZVRvQnVmZmVyIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkRpc3BhdGNoOgotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gIkRpc3BhdGNoIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkRpc3BhdGNoSW5kaXJlY3Q6Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCArPSAiRGlzcGF0Y2hJbmRpcmVjdCI7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3OgotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkRyYXciOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJhd0luZGV4ZWQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRHJhd0luZGV4ZWQiOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6RHJhd0luZGV4ZWRC
YXNlVmVydGV4OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkRyYXdJbmRleGVkQmFz
ZVZlcnRleCI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ29tbWFuZElEOjpEcmF3SW5kZXhlZEluc3RhbmNlZDoKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ICs9ICJEcmF3SW5kZXhlZEluc3RhbmNlZCI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5kZXhlZEluc3RhbmNl
ZEJhc2VWZXJ0ZXg6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRHJhd0luZGV4ZWRJ
bnN0YW5jZWRCYXNlVmVydGV4IjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OkRyYXdJbnN0YW5jZWQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCArPSAiRHJhd0luc3RhbmNlZCI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpEcmF3SW5kZXhlZEluZGlyZWN0Ogot
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIkRyYXdJbmRleGVkSW5kaXJlY3QiOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6
RW5kUXVlcnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiRW5kUXVlcnkiOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6
RXhlY3V0aW9uQmFycmllcjoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJFeGVjdXRp
b25CYXJyaWVyIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDb21tYW5kSUQ6OkZpbGxCdWZmZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCAr
PSAiRmlsbEJ1ZmZlciI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ29tbWFuZElEOjpJbWFnZUJhcnJpZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPSAiSW1hZ2VCYXJyaWVyIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6Ok1lbW9yeUJhcnJpZXI6Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSAiTWVtb3J5QmFycmllciI7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpQaXBlbGluZUJhcnJpZXI6Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiUGlwZWxpbmVCYXJyaWVyIjsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kSUQ6OlB1c2hD
b25zdGFudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiUHVzaENvbnN0YW50cyI7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFu
ZElEOjpSZXNldEV2ZW50OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlJlc2V0RXZl
bnQiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENv
bW1hbmRJRDo6UmVzZXRRdWVyeVBvb2w6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAi
UmVzZXRRdWVyeVBvb2wiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENvbW1hbmRJRDo6UmVzb2x2ZUltYWdlOgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gIlJlc29sdmVJbWFnZSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpTZXRFdmVudDoKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ICs9ICJTZXRFdmVudCI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ29tbWFuZElEOjpXYWl0RXZlbnRzOgotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gIldhaXRFdmVudHMiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRJRDo6V3JpdGVUaW1lc3RhbXA6Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCArPSAiV3JpdGVUaW1lc3RhbXAiOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ICs9ICItLWludmFsaWQtLSI7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA8PCBHZXRD
b21tYW5kU3RyaW5nKGN1cnJlbnRDb21tYW5kLT5pZCkgPDwgc2VwYXJhdG9yOwogICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5zdHIoKTsKIH0K
IAogfSAgLy8gbmFtZXNwYWNlIHByaXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9T
ZWNvbmRhcnlDb21tYW5kQnVmZmVyLmgKaW5kZXggNDM4MGJjMzcxZmRmZWM1ZjE4ZjdiMTMxZmE2
OTY2ZDMyMTdmNDQ2ZC4uNDM5ODM5NzUyMzJhOTIxOThjYjEwYjQwNWNjMDU0YWEyMGQxYjI4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9TZWNvbmRhcnlDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZWNvbmRhcnlDb21tYW5kQnVmZmVy
LmgKQEAgLTQ1MSw3ICs0NTEsNyBAQCBjbGFzcyBTZWNvbmRhcnlDb21tYW5kQnVmZmVyIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICB2b2lkIGJpbmRJbmRleEJ1ZmZlcihjb25zdCBC
dWZmZXIgJmJ1ZmZlciwgVmtEZXZpY2VTaXplIG9mZnNldCwgVmtJbmRleFR5cGUgaW5kZXhUeXBl
KTsKIAotICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhzaXplX3QgYmluZGlu
Z0NvdW50LAorICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyh1aW50MzJfdCBi
aW5kaW5nQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZrQnVmZmVyICpidWZmZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWa0RldmljZVNpemUgKm9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZrRGV2aWNlU2l6ZSAqc2l6ZXMpOwpAQCAtNTU5LDcgKzU1OSw3
IEBAIGNsYXNzIFNlY29uZGFyeUNvbW1hbmRCdWZmZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKIAogICAgIHZvaWQgaW1hZ2VCYXJyaWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdl
TWFzaywKICAgICAgICAgICAgICAgICAgICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFn
ZU1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIg
KmltYWdlTWVtb3J5QmFycmllcik7CisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFn
ZU1lbW9yeUJhcnJpZXIgJmltYWdlTWVtb3J5QmFycmllcik7CiAKICAgICB2b2lkIG1lbW9yeUJh
cnJpZXIoVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3JjU3RhZ2VNYXNrLAogICAgICAgICAgICAgICAg
ICAgICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCkBAIC03OTYsNyArNzk2
LDcgQEAgQU5HTEVfSU5MSU5FIHZvaWQgU2Vjb25kYXJ5Q29tbWFuZEJ1ZmZlcjo6YmluZEluZGV4
QnVmZmVyKGNvbnN0IEJ1ZmZlciAmYnVmZmVyLAogICAgIHBhcmFtU3RydWN0LT5pbmRleFR5cGUg
PSBpbmRleFR5cGU7CiB9CiAKLUFOR0xFX0lOTElORSB2b2lkIFNlY29uZGFyeUNvbW1hbmRCdWZm
ZXI6OmJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoc2l6ZV90IGJpbmRpbmdDb3VudCwKK0FO
R0xFX0lOTElORSB2b2lkIFNlY29uZGFyeUNvbW1hbmRCdWZmZXI6OmJpbmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnModWludDMyX3QgYmluZGluZ0NvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
a0J1ZmZlciAqYnVmZmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtEZXZpY2VTaXplICpvZmZz
ZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZVNpemUgKnNpemVzKQpAQCAtODEwLDcg
KzgxMCw3IEBAIEFOR0xFX0lOTElORSB2b2lkIFNlY29uZGFyeUNvbW1hbmRCdWZmZXI6OmJpbmRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoc2l6ZV90IGJpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNTaXplICsgb2Zmc2V0c1Np
emUgKyBzaXplc1NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZ3cml0ZVB0cik7CiAgICAgLy8gQ29weSBwYXJhbXMKLSAgICBwYXJh
bVN0cnVjdC0+YmluZGluZ0NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpbmRpbmdDb3Vu
dCk7CisgICAgcGFyYW1TdHJ1Y3QtPmJpbmRpbmdDb3VudCA9IGJpbmRpbmdDb3VudDsKICAgICB3
cml0ZVB0ciAgICAgICAgICAgICAgICAgID0gc3RvcmVQb2ludGVyUGFyYW1ldGVyKHdyaXRlUHRy
LCBidWZmZXJzLCBidWZmZXJzU2l6ZSk7CiAgICAgd3JpdGVQdHIgICAgICAgICAgICAgICAgICA9
IHN0b3JlUG9pbnRlclBhcmFtZXRlcih3cml0ZVB0ciwgb2Zmc2V0cywgb2Zmc2V0c1NpemUpOwog
ICAgIHN0b3JlUG9pbnRlclBhcmFtZXRlcih3cml0ZVB0ciwgc2l6ZXMsIHNpemVzU2l6ZSk7CkBA
IC0xMTI5LDEyICsxMTI5LDEzIEBAIEFOR0xFX0lOTElORSB2b2lkIFNlY29uZGFyeUNvbW1hbmRC
dWZmZXI6OmZpbGxCdWZmZXIoY29uc3QgQnVmZmVyICZkc3RCdWZmZXIsCiBBTkdMRV9JTkxJTkUg
dm9pZCBTZWNvbmRhcnlDb21tYW5kQnVmZmVyOjppbWFnZUJhcnJpZXIoCiAgICAgVmtQaXBlbGlu
ZVN0YWdlRmxhZ3Mgc3JjU3RhZ2VNYXNrLAogICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIGRzdFN0
YWdlTWFzaywKLSAgICBjb25zdCBWa0ltYWdlTWVtb3J5QmFycmllciAqaW1hZ2VNZW1vcnlCYXJy
aWVyKQorICAgIGNvbnN0IFZrSW1hZ2VNZW1vcnlCYXJyaWVyICZpbWFnZU1lbW9yeUJhcnJpZXIp
CiB7CiAgICAgSW1hZ2VCYXJyaWVyUGFyYW1zICpwYXJhbVN0cnVjdCA9IGluaXRDb21tYW5kPElt
YWdlQmFycmllclBhcmFtcz4oQ29tbWFuZElEOjpJbWFnZUJhcnJpZXIpOworICAgIEFTU0VSVChp
bWFnZU1lbW9yeUJhcnJpZXIucE5leHQgPT0gbnVsbHB0cik7CiAgICAgcGFyYW1TdHJ1Y3QtPnNy
Y1N0YWdlTWFzayAgICAgICA9IHNyY1N0YWdlTWFzazsKICAgICBwYXJhbVN0cnVjdC0+ZHN0U3Rh
Z2VNYXNrICAgICAgID0gZHN0U3RhZ2VNYXNrOwotICAgIHBhcmFtU3RydWN0LT5pbWFnZU1lbW9y
eUJhcnJpZXIgPSAqaW1hZ2VNZW1vcnlCYXJyaWVyOworICAgIHBhcmFtU3RydWN0LT5pbWFnZU1l
bW9yeUJhcnJpZXIgPSBpbWFnZU1lbW9yeUJhcnJpZXI7CiB9CiAKIEFOR0xFX0lOTElORSB2b2lk
IFNlY29uZGFyeUNvbW1hbmRCdWZmZXI6Om1lbW9yeUJhcnJpZXIoVmtQaXBlbGluZVN0YWdlRmxh
Z3Mgc3JjU3RhZ2VNYXNrLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TZW1hcGhvcmVWay5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NlbWFwaG9yZVZrLmNwcApp
bmRleCA2ZWQ4MjIwYmY4Yzc0OGFjYjM4NmU0ZDU0YzdmZmZiYzFlZTFmOGQ5Li4wMTUwZmZlN2Iw
ZmY4Yzc5M2Q3ODM5ZDU4MGY4NTMyYTZjNWQ1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NlbWFwaG9yZVZrLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1NlbWFwaG9yZVZrLmNwcApAQCAtNjUsMTMgKzY1LDMyIEBAIHZvaWQgU2VtYXBob3JlVms6Om9u
RGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIAogYW5nbGU6OlJlc3VsdCBTZW1h
cGhvcmVWazo6aW1wb3J0RmQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIGdsOjpIYW5kbGVUeXBlIGhh
bmRsZVR5cGUsIEdMaW50IGZkKQogeworICAgIENvbnRleHRWayAqY29udGV4dFZrID0gdms6Okdl
dEltcGwoY29udGV4dCk7CisKICAgICBzd2l0Y2ggKGhhbmRsZVR5cGUpCiAgICAgewogICAgICAg
ICBjYXNlIGdsOjpIYW5kbGVUeXBlOjpPcGFxdWVGZDoKLSAgICAgICAgICAgIHJldHVybiBpbXBv
cnRPcGFxdWVGZChjb250ZXh0LCBmZCk7CisgICAgICAgICAgICByZXR1cm4gaW1wb3J0T3BhcXVl
RmQoY29udGV4dFZrLCBmZCk7CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFOR0xF
X1ZLX1VOUkVBQ0hBQkxFKHZrOjpHZXRJbXBsKGNvbnRleHQpKTsKKyAgICAgICAgICAgIEFOR0xF
X1ZLX1VOUkVBQ0hBQkxFKGNvbnRleHRWayk7CisgICAgICAgICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6U3RvcDsKKyAgICB9Cit9CisKK2FuZ2xlOjpSZXN1bHQgU2VtYXBob3JlVms6OmltcG9y
dFppcmNvbkhhbmRsZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SGFuZGxlVHlwZSBoYW5kbGVUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUp
Cit7CisgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsKKwor
ICAgIHN3aXRjaCAoaGFuZGxlVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgZ2w6OkhhbmRsZVR5
cGU6OlppcmNvbkV2ZW50OgorICAgICAgICAgICAgcmV0dXJuIGltcG9ydFppcmNvbkV2ZW50KGNv
bnRleHRWaywgaGFuZGxlKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQU5HTEVf
VktfVU5SRUFDSEFCTEUoY29udGV4dFZrKTsKICAgICAgICAgICAgIHJldHVybiBhbmdsZTo6UmVz
dWx0OjpTdG9wOwogICAgIH0KIH0KQEAgLTg1LDcgKzEwNCw3IEBAIGFuZ2xlOjpSZXN1bHQgU2Vt
YXBob3JlVms6OndhaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgaWYgKCFidWZmZXJCYXJy
aWVycy5lbXB0eSgpIHx8ICF0ZXh0dXJlQmFycmllcnMuZW1wdHkoKSkKICAgICB7CiAgICAgICAg
IC8vIENyZWF0ZSBvbmUgZ2xvYmFsIG1lbW9yeSBiYXJyaWVyIHRvIGNvdmVyIGFsbCBiYXJyaWVy
cy4KLSAgICAgICAgY29udGV4dFZrLT5nZXRDb21tYW5kR3JhcGgoKS0+c3luY0V4dGVybmFsTWVt
b3J5KCk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPnN5bmNFeHRlcm5hbE1lbW9yeSgp
KTsKICAgICB9CiAKICAgICB1aW50MzJfdCByZW5kZXJlclF1ZXVlRmFtaWx5SW5kZXggPSBjb250
ZXh0VmstPmdldFJlbmRlcmVyKCktPmdldFF1ZXVlRmFtaWx5SW5kZXgoKTsKQEAgLTk4LDE1ICsx
MTcsMTEgQEAgYW5nbGU6OlJlc3VsdCBTZW1hcGhvcmVWazo6d2FpdChnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgIEJ1ZmZlclZrICpidWZmZXJWayAgICAgICAgICAgICA9IHZrOjpH
ZXRJbXBsKGJ1ZmZlcik7CiAgICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICZidWZmZXJIZWxw
ZXIgPSBidWZmZXJWay0+Z2V0QnVmZmVyKCk7CiAKLSAgICAgICAgICAgIC8vIElmIHRoZXJlIHdl
cmUgR0wgY29tbWFuZHMgdXNpbmcgdGhpcyBidWZmZXIgcHJpb3IgdG8gdGhpcyBjYWxsLCB0aGF0
J3MgYQotICAgICAgICAgICAgLy8gc3luY2hyb25pemF0aW9uIGVycm9yIG9uIGJlaGFsZiBvZiB0
aGUgcHJvZ3JhbS4KLSAgICAgICAgICAgIEFTU0VSVCghYnVmZmVySGVscGVyLmhhc1JlY29yZGVk
Q29tbWFuZHMoKSk7Ci0KLSAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpxdWV1ZUNoYW5n
ZTsKLSAgICAgICAgICAgIEFOR0xFX1RSWShidWZmZXJIZWxwZXIucmVjb3JkQ29tbWFuZHMoY29u
dGV4dFZrLCAmcXVldWVDaGFuZ2UpKTsKKyAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpj
b21tYW5kQnVmZmVyOworICAgICAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVy
UGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgICAgICAgICAg
Ly8gUXVldWUgb3duZXJzaGlwIHRyYW5zZmVyLgotICAgICAgICAgICAgYnVmZmVySGVscGVyLmNo
YW5nZVF1ZXVlKHJlbmRlcmVyUXVldWVGYW1pbHlJbmRleCwgcXVldWVDaGFuZ2UpOworICAgICAg
ICAgICAgYnVmZmVySGVscGVyLmNoYW5nZVF1ZXVlKHJlbmRlcmVyUXVldWVGYW1pbHlJbmRleCwg
Y29tbWFuZEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMSwxOSArMTM2LDE1IEBA
IGFuZ2xlOjpSZXN1bHQgU2VtYXBob3JlVms6OndhaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICB2azo6SW1hZ2VIZWxwZXIgJmltYWdlID0gdGV4dHVyZVZrLT5nZXRJbWFnZSgp
OwogICAgICAgICAgICAgdms6OkltYWdlTGF5b3V0IGxheW91dCA9IEdldFZ1bGthbkltYWdlTGF5
b3V0KHRleHR1cmVBbmRMYXlvdXQubGF5b3V0KTsKIAotICAgICAgICAgICAgLy8gSWYgdGhlcmUg
d2VyZSBHTCBjb21tYW5kcyB1c2luZyB0aGlzIGltYWdlIHByaW9yIHRvIHRoaXMgY2FsbCwgdGhh
dCdzIGEKLSAgICAgICAgICAgIC8vIHN5bmNocm9uaXphdGlvbiBlcnJvciBvbiBiZWhhbGYgb2Yg
dGhlIHByb2dyYW0uCi0gICAgICAgICAgICBBU1NFUlQoIWltYWdlLmhhc1JlY29yZGVkQ29tbWFu
ZHMoKSk7Ci0KICAgICAgICAgICAgIC8vIEluZm9ybSB0aGUgaW1hZ2UgdGhhdCB0aGUgbGF5b3V0
IGhhcyBiZWVuIGV4dGVybmFsbHkgY2hhbmdlZC4KICAgICAgICAgICAgIGltYWdlLm9uRXh0ZXJu
YWxMYXlvdXRDaGFuZ2UobGF5b3V0KTsKIAotICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIg
KnF1ZXVlQ2hhbmdlOwotICAgICAgICAgICAgQU5HTEVfVFJZKGltYWdlLnJlY29yZENvbW1hbmRz
KGNvbnRleHRWaywgJnF1ZXVlQ2hhbmdlKSk7CisgICAgICAgICAgICB2azo6Q29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcjsKKyAgICAgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJl
bmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICAgICAg
ICAgIC8vIFF1ZXVlIG93bmVyc2hpcCB0cmFuc2Zlci4KICAgICAgICAgICAgIGltYWdlLmNoYW5n
ZUxheW91dEFuZFF1ZXVlKGltYWdlLmdldEFzcGVjdEZsYWdzKCksIGxheW91dCwgcmVuZGVyZXJR
dWV1ZUZhbWlseUluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cXVldWVDaGFuZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NSwxMSArMTY2LDExIEBAIGFu
Z2xlOjpSZXN1bHQgU2VtYXBob3JlVms6OnNpZ25hbChnbDo6Q29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgIEJ1ZmZlclZrICpidWZmZXJWayAgICAgICAgICAgICA9IHZrOjpHZXRJbXBsKGJ1
ZmZlcik7CiAgICAgICAgICAgICB2azo6QnVmZmVySGVscGVyICZidWZmZXJIZWxwZXIgPSBidWZm
ZXJWay0+Z2V0QnVmZmVyKCk7CiAKLSAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpxdWV1
ZUNoYW5nZTsKLSAgICAgICAgICAgIEFOR0xFX1RSWShidWZmZXJIZWxwZXIucmVjb3JkQ29tbWFu
ZHMoY29udGV4dFZrLCAmcXVldWVDaGFuZ2UpKTsKKyAgICAgICAgICAgIHZrOjpDb21tYW5kQnVm
ZmVyICpjb21tYW5kQnVmZmVyOworICAgICAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5k
UmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgICAg
ICAgICAgLy8gUXVldWUgb3duZXJzaGlwIHRyYW5zZmVyLgotICAgICAgICAgICAgYnVmZmVySGVs
cGVyLmNoYW5nZVF1ZXVlKFZLX1FVRVVFX0ZBTUlMWV9FWFRFUk5BTCwgcXVldWVDaGFuZ2UpOwor
ICAgICAgICAgICAgYnVmZmVySGVscGVyLmNoYW5nZVF1ZXVlKFZLX1FVRVVFX0ZBTUlMWV9FWFRF
Uk5BTCwgY29tbWFuZEJ1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4MSwyNyArMTky
LDI2IEBAIGFuZ2xlOjpSZXN1bHQgU2VtYXBob3JlVms6OnNpZ25hbChnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICBsYXlvdXQgPSBpbWFnZS5nZXRDdXJyZW50SW1hZ2VMYXlv
dXQoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmxh
eW91dENoYW5nZTsKLSAgICAgICAgICAgIEFOR0xFX1RSWShpbWFnZS5yZWNvcmRDb21tYW5kcyhj
b250ZXh0VmssICZsYXlvdXRDaGFuZ2UpKTsKKyAgICAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVy
ICpjb21tYW5kQnVmZmVyOworICAgICAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVu
ZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgICAgICAg
ICAgLy8gUXVldWUgb3duZXJzaGlwIHRyYW5zZmVyIGFuZCBsYXlvdXQgdHJhbnNpdGlvbi4KICAg
ICAgICAgICAgIGltYWdlLmNoYW5nZUxheW91dEFuZFF1ZXVlKGltYWdlLmdldEFzcGVjdEZsYWdz
KCksIGxheW91dCwgVktfUVVFVUVfRkFNSUxZX0VYVEVSTkFMLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGF5b3V0Q2hhbmdlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKCFidWZmZXJCYXJyaWVycy5lbXB0eSgpIHx8ICF0ZXh0dXJlQmFycmllcnMuZW1wdHko
KSkKICAgICB7CiAgICAgICAgIC8vIENyZWF0ZSBvbmUgZ2xvYmFsIG1lbW9yeSBiYXJyaWVyIHRv
IGNvdmVyIGFsbCBiYXJyaWVycy4KLSAgICAgICAgY29udGV4dFZrLT5nZXRDb21tYW5kR3JhcGgo
KS0+c3luY0V4dGVybmFsTWVtb3J5KCk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPnN5
bmNFeHRlcm5hbE1lbW9yeSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gY29udGV4dFZrLT5mbHVz
aEltcGwoJm1TZW1hcGhvcmUpOwogfQogCi1hbmdsZTo6UmVzdWx0IFNlbWFwaG9yZVZrOjppbXBv
cnRPcGFxdWVGZChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xpbnQgZmQpCithbmdsZTo6UmVzdWx0
IFNlbWFwaG9yZVZrOjppbXBvcnRPcGFxdWVGZChDb250ZXh0VmsgKmNvbnRleHRWaywgR0xpbnQg
ZmQpCiB7Ci0gICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsK
ICAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKTsKIAog
ICAgIGlmICghbVNlbWFwaG9yZS52YWxpZCgpKQpAQCAtMjIzLDQgKzIzMywzNSBAQCBhbmdsZTo6
UmVzdWx0IFNlbWFwaG9yZVZrOjppbXBvcnRPcGFxdWVGZChnbDo6Q29udGV4dCAqY29udGV4dCwg
R0xpbnQgZmQpCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCithbmds
ZTo6UmVzdWx0IFNlbWFwaG9yZVZrOjppbXBvcnRaaXJjb25FdmVudChDb250ZXh0VmsgKmNvbnRl
eHRWaywgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRl
eHRWay0+Z2V0UmVuZGVyZXIoKTsKKworICAgIGlmICghbVNlbWFwaG9yZS52YWxpZCgpKQorICAg
IHsKKyAgICAgICAgbVNlbWFwaG9yZS5pbml0KHJlbmRlcmVyLT5nZXREZXZpY2UoKSk7CisgICAg
fQorCisgICAgQVNTRVJUKG1TZW1hcGhvcmUudmFsaWQoKSk7CisKKyAgICBWa0ltcG9ydFNlbWFw
aG9yZVppcmNvbkhhbmRsZUluZm9GVUNIU0lBIGltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUlu
Zm8gPSB7fTsKKyAgICBpbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVJbmZvLnNUeXBlID0KKyAg
ICAgICAgVktfU1RSVUNUVVJFX1RZUEVfVEVNUF9JTVBPUlRfU0VNQVBIT1JFX1pJUkNPTl9IQU5E
TEVfSU5GT19GVUNIU0lBOworICAgIGltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUluZm8uc2Vt
YXBob3JlID0gbVNlbWFwaG9yZS5nZXRIYW5kbGUoKTsKKyAgICBpbXBvcnRTZW1hcGhvcmVaaXJj
b25IYW5kbGVJbmZvLmZsYWdzICAgICA9IDA7CisgICAgaW1wb3J0U2VtYXBob3JlWmlyY29uSGFu
ZGxlSW5mby5oYW5kbGVUeXBlID0KKyAgICAgICAgVktfRVhURVJOQUxfU0VNQVBIT1JFX0hBTkRM
RV9UWVBFX1RFTVBfWklSQ09OX0VWRU5UX0JJVF9GVUNIU0lBOworICAgIGltcG9ydFNlbWFwaG9y
ZVppcmNvbkhhbmRsZUluZm8uaGFuZGxlID0gaGFuZGxlOworCisgICAgLy8gVE9ETyhzcGFuZyk6
IEFkZCB2a0ltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUZVQ0hTSUEgdG8gdm9say4KKyAgICBz
dGF0aWMgUEZOX3ZrSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlRlVDSFNJQSB2a0ltcG9ydFNl
bWFwaG9yZVppcmNvbkhhbmRsZUZVQ0hTSUEgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBG
Tl92a0ltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUZVQ0hTSUE+KAorICAgICAgICAgICAgdmtH
ZXRJbnN0YW5jZVByb2NBZGRyKHJlbmRlcmVyLT5nZXRJbnN0YW5jZSgpLCAidmtJbXBvcnRTZW1h
cGhvcmVaaXJjb25IYW5kbGVGVUNIU0lBIikpOworCisgICAgQU5HTEVfVktfVFJZKGNvbnRleHRW
aywgdmtJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVGVUNIU0lBKHJlbmRlcmVyLT5nZXREZXZp
Y2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUluZm8pKTsKKworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1NlbWFwaG9yZVZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NlbWFwaG9yZVZrLmgKaW5kZXggNDg2MTkzMDVmNjI4MTBi
ZTEyOTgyNjY2NDA1NjkzYTFlMDUwYjk3YS4uYWY4MzhjMzczYjYyNTUzNjM1MWM2NGI0NGY4MDRk
ZDdjMzc2M2Q2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9TZW1hcGhvcmVWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2VtYXBob3JlVmsuaApAQCAtMjUs
NiArMjUsMTAgQEAgY2xhc3MgU2VtYXBob3JlVmsgOiBwdWJsaWMgU2VtYXBob3JlSW1wbAogCiAg
ICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRGZChnbDo6Q29udGV4dCAqY29udGV4dCwgZ2w6OkhhbmRs
ZVR5cGUgaGFuZGxlVHlwZSwgR0xpbnQgZmQpIG92ZXJyaWRlOwogCisgICAgYW5nbGU6OlJlc3Vs
dCBpbXBvcnRaaXJjb25IYW5kbGUoZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkhhbmRsZVR5cGUgaGFuZGxlVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKSBvdmVycmlkZTsK
KwogICAgIGFuZ2xlOjpSZXN1bHQgd2FpdChnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJ1ZmZlckJhcnJpZXJWZWN0b3IgJmJ1ZmZlckJhcnJp
ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUJhcnJpZXJWZWN0
b3IgJnRleHR1cmVCYXJyaWVycykgb3ZlcnJpZGU7CkBAIC0zNCw3ICszOCw4IEBAIGNsYXNzIFNl
bWFwaG9yZVZrIDogcHVibGljIFNlbWFwaG9yZUltcGwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6VGV4dHVyZUJhcnJpZXJWZWN0b3IgJnRleHR1cmVCYXJyaWVycykgb3ZlcnJp
ZGU7CiAKICAgcHJpdmF0ZToKLSAgICBhbmdsZTo6UmVzdWx0IGltcG9ydE9wYXF1ZUZkKGdsOjpD
b250ZXh0ICpjb250ZXh0LCBHTGludCBmZCk7CisgICAgYW5nbGU6OlJlc3VsdCBpbXBvcnRPcGFx
dWVGZChDb250ZXh0VmsgKmNvbnRleHRWaywgR0xpbnQgZmQpOworICAgIGFuZ2xlOjpSZXN1bHQg
aW1wb3J0WmlyY29uRXZlbnQoQ29udGV4dFZrICpjb250ZXh0VmssIEdMdWludCBoYW5kbGUpOwog
CiAgICAgdms6OlNlbWFwaG9yZSBtU2VtYXBob3JlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9T
aGFkZXJWay5jcHAKaW5kZXggZDc3N2NkMWY1OTM2M2E3ZjExNDlmMzc5Y2ZjMTkzNGFmNzFlZGVl
Ni4uNmU4MTQ1Nzg3NWU2MDI3MmI3NDkzZjQyNjJhNmQ1YTg3ZTM0OGMzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFk
ZXJWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9TaGFkZXJWay5jcHAKQEAgLTU1LDYgKzU1LDExIEBAIHN0ZDo6c2hhcmVkX3B0
cjxXYWl0YWJsZUNvbXBpbGVFdmVudD4gU2hhZGVyVms6OmNvbXBpbGUoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRlCiAgICAgICAgIGNvbXBpbGVPcHRpb25zIHw9IFNIX1VTRV9PTERfUkVXUklURV9T
VFJVQ1RfU0FNUExFUlM7CiAgICAgfQogCisgICAgaWYgKCFjb250ZXh0VmstPmdldEZlYXR1cmVz
KCkuZW5hYmxlUHJlY2lzaW9uUXVhbGlmaWVycy5lbmFibGVkKQorICAgIHsKKyAgICAgICAgY29t
cGlsZU9wdGlvbnMgfD0gU0hfSUdOT1JFX1BSRUNJU0lPTl9RVUFMSUZJRVJTOworICAgIH0KKwog
ICAgIHJldHVybiBjb21waWxlSW1wbChjb250ZXh0LCBjb21waWxlckluc3RhbmNlLCBtRGF0YS5n
ZXRTb3VyY2UoKSwgY29tcGlsZU9wdGlvbnMgfCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJm
YWNlVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9TdXJmYWNlVmsuY3BwCmluZGV4IDM4ZWI2YTQwNTIxYzI0YTJhN2Q2NTRmZTI3OTJk
OTk3NWExZWVmNGMuLjIzZjE2ZDYwNzYyY2NiNTViMzJhOGExZmRiYTZmZTJmM2U5ODFmMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vU3VyZmFjZVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5jcHAKQEAgLTk1LDYgKzk1LDE5IEBAIGNv
bnN0ZXhwciBWa0ltYWdlVXNhZ2VGbGFncyBrU3VyZmFjZVZLQ29sb3JJbWFnZVVzYWdlRmxhZ3Mg
PQogY29uc3RleHByIFZrSW1hZ2VVc2FnZUZsYWdzIGtTdXJmYWNlVktEZXB0aFN0ZW5jaWxJbWFn
ZVVzYWdlRmxhZ3MgPQogICAgIGtTdXJmYWNlVktJbWFnZVVzYWdlRmxhZ3MgfCBWS19JTUFHRV9V
U0FHRV9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfQklUOwogCisvLyBJZiB0aGUgZGV2aWNlIGlz
IHJvdGF0ZWQgd2l0aCBhbnkgb2YgdGhlIGZvbGxvd2luZyB0cmFuc2Zvcm0gZmxhZ3MsIHRoZSBz
d2FwY2hhaW4gd2lkdGggYW5kCisvLyBoZWlnaHQgbXVzdCBiZSBzd2FwcGVkIChlLmcuIG1ha2Ug
YSBsYW5kc2NhcGUgd2luZG93IHBvcnRyYWl0KS4gIFRoaXMgbXVzdCBhbHNvIGJlIGRvbmUgZm9y
IGFsbAorLy8gYXR0YWNobWVudHMgdXNlZCB3aXRoIHRoZSBzd2FwY2hhaW4gKGkuZS4gZGVwdGgs
IHN0ZW5jaWwsIGFuZCBtdWx0aXNhbXBsZSBidWZmZXJzKS4KK2NvbnN0ZXhwciBWa1N1cmZhY2VU
cmFuc2Zvcm1GbGFnc0tIUiBrOTBEZWdyZWVSb3RhdGlvblZhcmlhbnRzID0KKyAgICBWS19TVVJG
QUNFX1RSQU5TRk9STV9ST1RBVEVfOTBfQklUX0tIUiB8IFZLX1NVUkZBQ0VfVFJBTlNGT1JNX1JP
VEFURV8yNzBfQklUX0tIUiB8CisgICAgVktfU1VSRkFDRV9UUkFOU0ZPUk1fSE9SSVpPTlRBTF9N
SVJST1JfUk9UQVRFXzkwX0JJVF9LSFIgfAorICAgIFZLX1NVUkZBQ0VfVFJBTlNGT1JNX0hPUkla
T05UQUxfTUlSUk9SX1JPVEFURV8yNzBfQklUX0tIUjsKKworYm9vbCBJczkwRGVncmVlUm90YXRp
b24oVmtTdXJmYWNlVHJhbnNmb3JtRmxhZ3NLSFIgdHJhbnNmb3JtKQoreworICAgIHJldHVybiAo
KHRyYW5zZm9ybSAmIGs5MERlZ3JlZVJvdGF0aW9uVmFyaWFudHMpICE9IDApOworfQorCiB9ICAv
LyBuYW1lc3BhY2UKIAogU3VyZmFjZVZrOjpTdXJmYWNlVmsoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN1cmZhY2VTdGF0ZSkgOiBTdXJmYWNlSW1wbChzdXJmYWNlU3RhdGUpIHt9CkBAIC0xNTUs
MTYgKzE2OCw1NiBAQCBhbmdsZTo6UmVzdWx0IE9mZnNjcmVlblN1cmZhY2VWazo6QXR0YWNobWVu
dEltYWdlOjppbml0aWFsaXplKERpc3BsYXlWayAqZGlzcGxheQogICAgIHJldHVybiBhbmdsZTo6
UmVzdWx0OjpDb250aW51ZTsKIH0KIAorYW5nbGU6OlJlc3VsdCBPZmZzY3JlZW5TdXJmYWNlVms6
OkF0dGFjaG1lbnRJbWFnZTo6aW5pdGlhbGl6ZVdpdGhFeHRlcm5hbE1lbW9yeSgKKyAgICBEaXNw
bGF5VmsgKmRpc3BsYXlWaywKKyAgICBFR0xpbnQgd2lkdGgsCisgICAgRUdMaW50IGhlaWdodCwK
KyAgICBjb25zdCB2azo6Rm9ybWF0ICZ2a0Zvcm1hdCwKKyAgICBHTGludCBzYW1wbGVzLAorICAg
IHZvaWQgKmJ1ZmZlcikKK3sKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGRpc3BsYXlWay0+
Z2V0UmVuZGVyZXIoKTsKKworICAgIEFTU0VSVChyZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5zdXBw
b3J0c0V4dGVybmFsTWVtb3J5SG9zdC5lbmFibGVkKTsKKworICAgIGNvbnN0IGFuZ2xlOjpGb3Jt
YXQgJnRleHR1cmVGb3JtYXQgPSB2a0Zvcm1hdC5hY3R1YWxJbWFnZUZvcm1hdCgpOworICAgIGJv
b2wgaXNEZXB0aE9yU3RlbmNpbEZvcm1hdCAgID0gdGV4dHVyZUZvcm1hdC5kZXB0aEJpdHMgPiAw
IHx8IHRleHR1cmVGb3JtYXQuc3RlbmNpbEJpdHMgPiAwOworICAgIGNvbnN0IFZrSW1hZ2VVc2Fn
ZUZsYWdzIHVzYWdlID0gaXNEZXB0aE9yU3RlbmNpbEZvcm1hdCA/IGtTdXJmYWNlVktEZXB0aFN0
ZW5jaWxJbWFnZVVzYWdlRmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBrU3VyZmFjZVZLQ29sb3JJbWFnZVVzYWdlRmxhZ3M7
CisKKyAgICBWa0V4dGVudDNEIGV4dGVudHMgPSB7c3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHdpZHRoKSwgMXUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaGVpZ2h0KSwgMXUpLCAxdX07CisgICAgQU5HTEVfVFJZKAorICAg
ICAgICBpbWFnZS5pbml0KGRpc3BsYXlWaywgZ2w6OlRleHR1cmVUeXBlOjpfMkQsIGV4dGVudHMs
IHZrRm9ybWF0LCBzYW1wbGVzLCB1c2FnZSwgMCwgMCwgMSwgMSkpOworCisgICAgVmtJbXBvcnRN
ZW1vcnlIb3N0UG9pbnRlckluZm9FWFQgaW1wb3J0TWVtb3J5SG9zdFBvaW50ZXJJbmZvID0ge307
CisgICAgaW1wb3J0TWVtb3J5SG9zdFBvaW50ZXJJbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZ
UEVfSU1QT1JUX01FTU9SWV9IT1NUX1BPSU5URVJfSU5GT19FWFQ7CisgICAgaW1wb3J0TWVtb3J5
SG9zdFBvaW50ZXJJbmZvLnBOZXh0ID0gbnVsbHB0cjsKKyAgICBpbXBvcnRNZW1vcnlIb3N0UG9p
bnRlckluZm8uaGFuZGxlVHlwZSA9CisgICAgICAgIFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVf
VFlQRV9IT1NUX01BUFBFRF9GT1JFSUdOX01FTU9SWV9CSVRfRVhUOworICAgIGltcG9ydE1lbW9y
eUhvc3RQb2ludGVySW5mby5wSG9zdFBvaW50ZXIgPSBidWZmZXI7CisKKyAgICBWa01lbW9yeVJl
cXVpcmVtZW50cyBleHRlcm5hbE1lbW9yeVJlcXVpcmVtZW50czsKKyAgICBpbWFnZS5nZXRJbWFn
ZSgpLmdldE1lbW9yeVJlcXVpcmVtZW50cyhyZW5kZXJlci0+Z2V0RGV2aWNlKCksICZleHRlcm5h
bE1lbW9yeVJlcXVpcmVtZW50cyk7CisKKyAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgZmxhZ3Mg
PSAwOworICAgIEFOR0xFX1RSWShpbWFnZS5pbml0RXh0ZXJuYWxNZW1vcnkoZGlzcGxheVZrLCBy
ZW5kZXJlci0+Z2V0TWVtb3J5UHJvcGVydGllcygpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0ZXJuYWxNZW1vcnlSZXF1aXJlbWVudHMsICZpbXBvcnRNZW1vcnlI
b3N0UG9pbnRlckluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
S19RVUVVRV9GQU1JTFlfRVhURVJOQUwsIGZsYWdzKSk7CisKKyAgICAvLyBDbGVhciB0aGUgaW1h
Z2UgaWYgaXQgaGFzIGVtdWxhdGVkIGNoYW5uZWxzLgorICAgIGltYWdlLnN0YWdlQ2xlYXJJZkVt
dWxhdGVkRm9ybWF0KGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoMCksIHZrRm9ybWF0KTsKKworICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwogdm9pZCBPZmZzY3JlZW5TdXJm
YWNlVms6OkF0dGFjaG1lbnRJbWFnZTo6ZGVzdHJveShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXkpCiB7CiAgICAgRGlzcGxheVZrICpkaXNwbGF5VmsgPSB2azo6R2V0SW1wbChkaXNwbGF5KTsK
LSAgICBWa0RldmljZSBkZXZpY2UgICAgICA9IGRpc3BsYXlWay0+Z2V0RGV2aWNlKCk7Ci0KLSAg
ICAvLyBJdCBzaG91bGQgYmUgc2FmZSB0byBpbW1lZGlhdGVseSBkZXN0cm95IHRoZSBiYWNraW5n
IGltYWdlcyBvZiBhIHN1cmZhY2Ugb24gc3VyZmFjZQotICAgIC8vIGRlc3RydWN0aW9uLiBJZiB0
aGlzIGFzc3VtcHRpb24gaXMgaW5jb3JyZWN0LCB3ZSBjb3VsZCB1c2UgdGhlIGxhc3Qgc3VibWl0
IHNlcmlhbAotICAgIC8vIHRvIGRldGVybWluZSB3aGVuIHRvIGRlc3Ryb3kgdGhlIHN1cmZhY2Uu
Ci0gICAgaW1hZ2UuZGVzdHJveShkZXZpY2UpOwotICAgIGltYWdlVmlld3MuZGVzdHJveShkZXZp
Y2UpOworICAgIFJlbmRlcmVyVmsgKnJlbmRlcmVyID0gZGlzcGxheVZrLT5nZXRSZW5kZXJlcigp
OworICAgIGltYWdlLnJlbGVhc2VJbWFnZShyZW5kZXJlcik7CisgICAgaW1hZ2UucmVsZWFzZVN0
YWdpbmdCdWZmZXIocmVuZGVyZXIpOworICAgIGltYWdlVmlld3MucmVsZWFzZShyZW5kZXJlcik7
CiB9CiAKIE9mZnNjcmVlblN1cmZhY2VWazo6T2Zmc2NyZWVuU3VyZmFjZVZrKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUpCkBAIC0zMDQsMTUgKzM1NywxNSBAQCBhbmdsZTo6
UmVzdWx0IE9mZnNjcmVlblN1cmZhY2VWazo6aW5pdGlhbGl6ZUNvbnRlbnRzKGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0LAogCiAgICAgaWYgKG1Db2xvckF0dGFjaG1lbnQuaW1hZ2UudmFsaWQo
KSkKICAgICB7Ci0gICAgICAgIG1Db2xvckF0dGFjaG1lbnQuaW1hZ2Uuc3RhZ2VTdWJyZXNvdXJj
ZVJvYnVzdENsZWFyKAotICAgICAgICAgICAgaW1hZ2VJbmRleCwgbUNvbG9yQXR0YWNobWVudC5p
bWFnZS5nZXRGb3JtYXQoKS5pbnRlbmRlZEZvcm1hdCgpKTsKKyAgICAgICAgbUNvbG9yQXR0YWNo
bWVudC5pbWFnZS5zdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoaW1hZ2VJbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNv
bG9yQXR0YWNobWVudC5pbWFnZS5nZXRGb3JtYXQoKSk7CiAgICAgICAgIEFOR0xFX1RSWShtQ29s
b3JBdHRhY2htZW50LmltYWdlLmZsdXNoQWxsU3RhZ2VkVXBkYXRlcyhjb250ZXh0VmspKTsKICAg
ICB9CiAKICAgICBpZiAobURlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaW1hZ2UudmFsaWQoKSkKICAg
ICB7CiAgICAgICAgIG1EZXB0aFN0ZW5jaWxBdHRhY2htZW50LmltYWdlLnN0YWdlU3VicmVzb3Vy
Y2VSb2J1c3RDbGVhcigKLSAgICAgICAgICAgIGltYWdlSW5kZXgsIG1EZXB0aFN0ZW5jaWxBdHRh
Y2htZW50LmltYWdlLmdldEZvcm1hdCgpLmludGVuZGVkRm9ybWF0KCkpOworICAgICAgICAgICAg
aW1hZ2VJbmRleCwgbURlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaW1hZ2UuZ2V0Rm9ybWF0KCkpOwog
ICAgICAgICBBTkdMRV9UUlkobURlcHRoU3RlbmNpbEF0dGFjaG1lbnQuaW1hZ2UuZmx1c2hBbGxT
dGFnZWRVcGRhdGVzKGNvbnRleHRWaykpOwogICAgIH0KICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7CkBAIC01MTQsNiArNTY3LDI3IEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3Vy
ZmFjZVZrOjppbml0aWFsaXplSW1wbChEaXNwbGF5VmsgKmRpc3BsYXlWaykKIAogICAgIGdsOjpF
eHRlbnRzIGV4dGVudHMoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIHN0YXRpY19jYXN0PGludD4o
aGVpZ2h0KSwgMSk7CiAKKyAgICBpZiAocmVuZGVyZXItPmdldEZlYXR1cmVzKCkuZW5hYmxlUHJl
Um90YXRlU3VyZmFjZXMuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIC8vIFVzZSB0aGUgc3VyZmFj
ZSdzIHRyYW5zZm9ybS4gIEZvciBtYW55IHBsYXRmb3JtcywgdGhpcyB3aWxsIGFsd2F5cyBiZSBp
ZGVudGl0eSAoQU5HTEUKKyAgICAgICAgLy8gZG9lcyBub3QgbmVlZCB0byBkbyBhbnkgcHJlLXJv
dGF0aW9uKS4gIEhvd2V2ZXIsIHdoZW4gbVN1cmZhY2VDYXBzLmN1cnJlbnRUcmFuc2Zvcm0gaXMK
KyAgICAgICAgLy8gbm90IGlkZW50aXR5LCB0aGUgZGV2aWNlIGhhcyBiZWVuIHJvdGF0ZWQgYXdh
eSBmcm9tIGl0cyBuYXR1cmFsIG9yaWVudGF0aW9uLiAgSW4gc3VjaCBhCisgICAgICAgIC8vIGNh
c2UsIEFOR0xFIG11c3Qgcm90YXRlIGFsbCByZW5kZXJpbmcgaW4gb3JkZXIgdG8gYXZvaWQgdGhl
IGNvbXBvc2l0b3IKKyAgICAgICAgLy8gKGUuZy4gU3VyZmFjZUZsaW5nZXIgb24gQW5kcm9pZCkg
cGVyZm9ybWluZyBhbiBhZGRpdGlvbmFsIHJvdGF0aW9uIGJsaXQuICBJbiBhZGRpdGlvbiwKKyAg
ICAgICAgLy8gQU5HTEUgbXVzdCBjcmVhdGUgdGhlIHN3YXBjaGFpbiB3aXRoIFZrU3dhcGNoYWlu
Q3JlYXRlSW5mb0tIUjo6cHJlVHJhbnNmb3JtIHNldCB0byB0aGUKKyAgICAgICAgLy8gdmFsdWUg
b2YgbVN1cmZhY2VDYXBzLmN1cnJlbnRUcmFuc2Zvcm0uCisgICAgICAgIG1QcmVUcmFuc2Zvcm0g
PSBtU3VyZmFjZUNhcHMuY3VycmVudFRyYW5zZm9ybTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgLy8gRGVmYXVsdCB0byBpZGVudGl0eSB0cmFuc2Zvcm0uCisgICAgICAgIG1QcmVU
cmFuc2Zvcm0gPSBWS19TVVJGQUNFX1RSQU5TRk9STV9JREVOVElUWV9CSVRfS0hSOworICAgICAg
ICBpZiAoKG1TdXJmYWNlQ2Fwcy5zdXBwb3J0ZWRUcmFuc2Zvcm1zICYgbVByZVRyYW5zZm9ybSkg
PT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbVByZVRyYW5zZm9ybSA9IG1TdXJmYWNlQ2Fw
cy5jdXJyZW50VHJhbnNmb3JtOworICAgICAgICB9CisgICAgfQorCiAgICAgdWludDMyX3QgcHJl
c2VudE1vZGVDb3VudCA9IDA7CiAgICAgQU5HTEVfVktfVFJZKGRpc3BsYXlWaywgdmtHZXRQaHlz
aWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIocGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZwcmVzZW50TW9kZUNvdW50LCBudWxscHRyKSk7CkBAIC01MjcsMTMg
KzYwMSw2IEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3VyZmFjZVZrOjppbml0aWFsaXplSW1wbChE
aXNwbGF5VmsgKmRpc3BsYXlWaykKICAgICAvLyB3aWxsIGdldCBjbGFtcGVkIHRvIHRoZSBtaW4v
bWF4IHZhbHVlcyBzcGVjaWZpZWQgYXQgZGlzcGxheSBjcmVhdGlvbiB0aW1lLgogICAgIHNldFN3
YXBJbnRlcnZhbChyZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5kaXNhYmxlRmlmb1ByZXNlbnRNb2Rl
LmVuYWJsZWQgPyAwIDogMSk7CiAKLSAgICAvLyBEZWZhdWx0IHRvIGlkZW50aXR5IHRyYW5zZm9y
bS4KLSAgICBtUHJlVHJhbnNmb3JtID0gVktfU1VSRkFDRV9UUkFOU0ZPUk1fSURFTlRJVFlfQklU
X0tIUjsKLSAgICBpZiAoKG1TdXJmYWNlQ2Fwcy5zdXBwb3J0ZWRUcmFuc2Zvcm1zICYgbVByZVRy
YW5zZm9ybSkgPT0gMCkKLSAgICB7Ci0gICAgICAgIG1QcmVUcmFuc2Zvcm0gPSBtU3VyZmFjZUNh
cHMuY3VycmVudFRyYW5zZm9ybTsKLSAgICB9Ci0KICAgICB1aW50MzJfdCBzdXJmYWNlRm9ybWF0
Q291bnQgPSAwOwogICAgIEFOR0xFX1ZLX1RSWShkaXNwbGF5VmssIHZrR2V0UGh5c2ljYWxEZXZp
Y2VTdXJmYWNlRm9ybWF0c0tIUihwaHlzaWNhbERldmljZSwgbVN1cmZhY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
dXJmYWNlRm9ybWF0Q291bnQsIG51bGxwdHIpKTsKQEAgLTc1Myw2ICs4MjAsMTkgQEAgYW5nbGU6
OlJlc3VsdCBXaW5kb3dTdXJmYWNlVms6OmNyZWF0ZVN3YXBDaGFpbih2azo6Q29udGV4dCAqY29u
dGV4dCwKICAgICBjb25zdCB2azo6Rm9ybWF0ICZmb3JtYXQgPSByZW5kZXJlci0+Z2V0Rm9ybWF0
KG1TdGF0ZS5jb25maWctPnJlbmRlclRhcmdldEZvcm1hdCk7CiAgICAgVmtGb3JtYXQgbmF0aXZl
Rm9ybWF0ICAgID0gZm9ybWF0LnZrSW1hZ2VGb3JtYXQ7CiAKKyAgICBnbDo6RXh0ZW50cyByb3Rh
dGVkRXh0ZW50cyA9IGV4dGVudHM7CisgICAgaWYgKElzOTBEZWdyZWVSb3RhdGlvbihtUHJlVHJh
bnNmb3JtKSkKKyAgICB7CisgICAgICAgIC8vIFRoZSBTdXJmYWNlIGlzIG9yaWVudGVkIHN1Y2gg
dGhhdCBpdHMgYXNwZWN0IHJhdGlvIG5vIGxvbmdlciBtYXRjaGVzIHRoYXQgb2YgdGhlCisgICAg
ICAgIC8vIGRldmljZS4gIEluIHRoaXMgY2FzZSwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhl
IHN3YXBjaGFpbiBpbWFnZXMgbXVzdCBiZSBzd2FwcGVkIHRvCisgICAgICAgIC8vIG1hdGNoIHRo
ZSBkZXZpY2UncyBuYXRpdmUgb3JpZW50YXRpb24uICBUaGlzIG11c3QgYWxzbyBiZSBkb25lIGZv
ciBvdGhlciBhdHRhY2htZW50cworICAgICAgICAvLyB1c2VkIHdpdGggdGhlIHN3YXBjaGFpbiAo
ZS5nLiBkZXB0aCBidWZmZXIpLiAgVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0
LAorICAgICAgICAvLyBzY2lzc29yLCBhbmQgcmVuZGVyLXBhc3MgcmVuZGVyIGFyZWEgbXVzdCBh
bHNvIGJlIHN3YXBwZWQuICBUaGVuLCB3aGVuIEFOR0xFIHJvdGF0ZXMKKyAgICAgICAgLy8gZ2xf
UG9zaXRpb24gaW4gdGhlIHZlcnRleCBzaGFkZXIsIHRoZSByZW5kZXJpbmcgd2lsbCBsb29rIHRo
ZSBzYW1lIGFzIGlmIG5vCisgICAgICAgIC8vIHByZS1yb3RhdGlvbiBoYWQgYmVlbiBkb25lLgor
ICAgICAgICBzdGQ6OnN3YXAocm90YXRlZEV4dGVudHMud2lkdGgsIHJvdGF0ZWRFeHRlbnRzLmhl
aWdodCk7CisgICAgfQorCiAgICAgLy8gV2UgbmVlZCB0cmFuc2ZlciBzcmMgZm9yIHJlYWRpbmcg
YmFjayBmcm9tIHRoZSBiYWNrYnVmZmVyLgogICAgIFZrSW1hZ2VVc2FnZUZsYWdzIGltYWdlVXNh
Z2VGbGFncyA9IGtTdXJmYWNlVktDb2xvckltYWdlVXNhZ2VGbGFnczsKIApAQCAtNzczLDggKzg1
Myw4IEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3VyZmFjZVZrOjpjcmVhdGVTd2FwQ2hhaW4odms6
OkNvbnRleHQgKmNvbnRleHQsCiAgICAgc3dhcGNoYWluSW5mby5pbWFnZUNvbG9yU3BhY2UgICAg
ICAgICAgPSBNYXBFZ2xDb2xvclNwYWNlVG9Wa0NvbG9yU3BhY2UoCiAgICAgICAgIHN0YXRpY19j
YXN0PEVHTGVudW0+KG1TdGF0ZS5hdHRyaWJ1dGVzLmdldChFR0xfR0xfQ09MT1JTUEFDRSwgRUdM
X05PTkUpKSk7CiAgICAgLy8gTm90ZTogVnVsa2FuIGRvZXNuJ3QgYWxsb3cgMC13aWR0aC9oZWln
aHQgc3dhcGNoYWlucy4KLSAgICBzd2FwY2hhaW5JbmZvLmltYWdlRXh0ZW50LndpZHRoICAgICA9
IHN0ZDo6bWF4KGV4dGVudHMud2lkdGgsIDEpOwotICAgIHN3YXBjaGFpbkluZm8uaW1hZ2VFeHRl
bnQuaGVpZ2h0ICAgID0gc3RkOjptYXgoZXh0ZW50cy5oZWlnaHQsIDEpOworICAgIHN3YXBjaGFp
bkluZm8uaW1hZ2VFeHRlbnQud2lkdGggICAgID0gc3RkOjptYXgocm90YXRlZEV4dGVudHMud2lk
dGgsIDEpOworICAgIHN3YXBjaGFpbkluZm8uaW1hZ2VFeHRlbnQuaGVpZ2h0ICAgID0gc3RkOjpt
YXgocm90YXRlZEV4dGVudHMuaGVpZ2h0LCAxKTsKICAgICBzd2FwY2hhaW5JbmZvLmltYWdlQXJy
YXlMYXllcnMgICAgICA9IDE7CiAgICAgc3dhcGNoYWluSW5mby5pbWFnZVVzYWdlICAgICAgICAg
ICAgPSBpbWFnZVVzYWdlRmxhZ3M7CiAgICAgc3dhcGNoYWluSW5mby5pbWFnZVNoYXJpbmdNb2Rl
ICAgICAgPSBWS19TSEFSSU5HX01PREVfRVhDTFVTSVZFOwpAQCAtODA1LDcgKzg4NSw3IEBAIGFu
Z2xlOjpSZXN1bHQgV2luZG93U3VyZmFjZVZrOjpjcmVhdGVTd2FwQ2hhaW4odms6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgQU5HTEVfVktfQ0hFQ0soY29udGV4dCwgc2FtcGxlcyA+IDAsIFZLX0VS
Uk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCk7CiAKICAgICBWa0V4dGVudDNEIHZrRXh0ZW50czsK
LSAgICBnbF92azo6R2V0RXh0ZW50KGV4dGVudHMsICZ2a0V4dGVudHMpOworICAgIGdsX3ZrOjpH
ZXRFeHRlbnQocm90YXRlZEV4dGVudHMsICZ2a0V4dGVudHMpOwogCiAgICAgaWYgKHNhbXBsZXMg
PiAxKQogICAgIHsKQEAgLTg4NiwxMiArOTY2LDE3IEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3Vy
ZmFjZVZrOjpjaGVja0Zvck91dE9mRGF0ZVN3YXBjaGFpbihDb250ZXh0VmsgKmNvbnRleHRWaywK
ICAgICAgICAgLy8gSWYgd2luZG93IHNpemUgaGFzIGNoYW5nZWQsIGNoZWNrIHdpdGggc3VyZmFj
ZSBjYXBhYmlsaXRpZXMuICBJdCBoYXMgYmVlbiBvYnNlcnZlZCBvbgogICAgICAgICAvLyBBbmRy
b2lkIHRoYXQgYGdldEN1cnJlbnRXaW5kb3dTaXplKClgIHJldHVybnMgMTkyMHgxMDgwIGZvciBl
eGFtcGxlLCB3aGlsZSBzdXJmYWNlCiAgICAgICAgIC8vIGNhcGFiaWxpdGllcyByZXR1cm5zIHRo
ZSBzaXplIHRoZSBzdXJmYWNlIHdhcyBjcmVhdGVkIHdpdGguCi0gICAgICAgIGlmIChjdXJyZW50
RXh0ZW50cyAhPSBzd2FwY2hhaW5FeHRlbnRzKQorICAgICAgICBjb25zdCBWa1BoeXNpY2FsRGV2
aWNlICZwaHlzaWNhbERldmljZSA9IGNvbnRleHRWay0+Z2V0UmVuZGVyZXIoKS0+Z2V0UGh5c2lj
YWxEZXZpY2UoKTsKKyAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRleHRWaywgdmtHZXRQaHlzaWNh
bERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIocGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbVN1cmZhY2VDYXBzKSk7CisgICAgICAgIGlmIChjb250ZXh0Vmst
PmdldEZlYXR1cmVzKCkuZW5hYmxlUHJlUm90YXRlU3VyZmFjZXMuZW5hYmxlZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29uc3QgVmtQaHlzaWNhbERldmljZSAmcGh5c2ljYWxEZXZpY2UgPSBj
b250ZXh0VmstPmdldFJlbmRlcmVyKCktPmdldFBoeXNpY2FsRGV2aWNlKCk7Ci0gICAgICAgICAg
ICBBTkdMRV9WS19UUlkoY29udGV4dFZrLCB2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFi
aWxpdGllc0tIUigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlz
aWNhbERldmljZSwgbVN1cmZhY2UsICZtU3VyZmFjZUNhcHMpKTsKKyAgICAgICAgICAgIC8vIFVw
ZGF0ZSB0aGUgc3VyZmFjZSdzIHRyYW5zZm9ybSwgd2hpY2ggY2FuIGNoYW5nZSBldmVuIGlmIHRo
ZSB3aW5kb3cgc2l6ZSBkb2VzIG5vdC4KKyAgICAgICAgICAgIG1QcmVUcmFuc2Zvcm0gPSBtU3Vy
ZmFjZUNhcHMuY3VycmVudFRyYW5zZm9ybTsKKyAgICAgICAgfQogCisgICAgICAgIGlmIChjdXJy
ZW50RXh0ZW50cyAhPSBzd2FwY2hhaW5FeHRlbnRzKQorICAgICAgICB7CiAgICAgICAgICAgICB1
aW50MzJfdCB3aWR0aCAgPSBtU3VyZmFjZUNhcHMuY3VycmVudEV4dGVudC53aWR0aDsKICAgICAg
ICAgICAgIHVpbnQzMl90IGhlaWdodCA9IG1TdXJmYWNlQ2Fwcy5jdXJyZW50RXh0ZW50LmhlaWdo
dDsKIApAQCAtMTAzMiwyNCArMTExNywxNiBAQCBhbmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZhY2VW
azo6cHJlc2VudChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICBTd2FwY2hhaW5JbWFnZSAmaW1h
Z2UgPSBtU3dhcGNoYWluSW1hZ2VzW21DdXJyZW50U3dhcGNoYWluSW1hZ2VJbmRleF07CiAKICAg
ICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgaWYgKCFj
b250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICB7Ci0gICAgICAgIEFOR0xFX1RS
WShjb250ZXh0VmstPmdldE91dHNpZGVSZW5kZXJQYXNzQ29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1
ZmZlcikpOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5k
R2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgaWYgKG1Db2xvckltYWdl
TVMudmFsaWQoKSkKICAgICB7CiAgICAgICAgIC8vIFRyYW5zaXRpb24gdGhlIG11bHRpc2FtcGxl
ZCBpbWFnZSB0byBUUkFOU0ZFUl9TUkMgZm9yIHJlc29sdmUuCi0gICAgICAgIGlmIChjb250ZXh0
VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgQU5HTEVf
VFJZKG1Db2xvckltYWdlTVMucmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZl
cikpOwotICAgICAgICB9Ci0KLSAgICAgICAgbUNvbG9ySW1hZ2VNUy5jaGFuZ2VMYXlvdXQoVktf
SU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlcik7Ci0KLSAgICAg
ICAgLy8gU2V0dXAgZ3JhcGggZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSBzd2FwY2hhaW4gaW1hZ2Ug
YW5kIHRoZSBtdWx0aXNhbXBsZWQgb25lLgotICAgICAgICBpbWFnZS5pbWFnZS5hZGRSZWFkRGVw
ZW5kZW5jeShjb250ZXh0VmssICZtQ29sb3JJbWFnZU1TKTsKKyAgICAgICAgQU5HTEVfVFJZKGNv
bnRleHRWay0+b25JbWFnZVJlYWQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdl
TGF5b3V0OjpUcmFuc2ZlclNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm1Db2xvckltYWdlTVMpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25J
bWFnZVdyaXRlKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJh
bnNmZXJEc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1h
Z2UuaW1hZ2UpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0Fu
ZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgICAgICBWa0ltYWdlUmVz
b2x2ZSByZXNvbHZlUmVnaW9uICAgICAgICAgICAgICAgID0ge307CiAgICAgICAgIHJlc29sdmVS
ZWdpb24uc3JjU3VicmVzb3VyY2UuYXNwZWN0TWFzayAgICAgPSBWS19JTUFHRV9BU1BFQ1RfQ09M
T1JfQklUOwpAQCAtMTA2MSwxOSArMTEzOCwxMSBAQCBhbmdsZTo6UmVzdWx0IFdpbmRvd1N1cmZh
Y2VWazo6cHJlc2VudChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgcmVzb2x2ZVJlZ2lv
bi5kc3RPZmZzZXQgICAgICAgICAgICAgICAgICAgICA9IHt9OwogICAgICAgICByZXNvbHZlUmVn
aW9uLmV4dGVudCAgICAgICAgICAgICAgICAgICAgICAgID0gaW1hZ2UuaW1hZ2UuZ2V0RXh0ZW50
cygpOwogCi0gICAgICAgIGlmIChjb250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgQU5HTEVfVFJZKGltYWdlLmltYWdlLnJlY29yZENvbW1hbmRz
KGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLSAgICAgICAgfQogICAgICAgICBtQ29sb3JJ
bWFnZU1TLnJlc29sdmUoJmltYWdlLmltYWdlLCByZXNvbHZlUmVnaW9uLCBjb21tYW5kQnVmZmVy
KTsKICAgICB9CiAKICAgICBBTkdMRV9UUlkodXBkYXRlQW5kRHJhd092ZXJsYXkoY29udGV4dFZr
LCAmaW1hZ2UpKTsKIAotICAgIGlmIChjb250ZXh0VmstPmNvbW1hbmRHcmFwaEVuYWJsZWQoKSkK
LSAgICB7Ci0gICAgICAgIEFOR0xFX1RSWShpbWFnZS5pbWFnZS5yZWNvcmRDb21tYW5kcyhjb250
ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQogICAgIGltYWdlLmltYWdlLmNoYW5nZUxh
eW91dChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlvdXQ6OlByZXNlbnQs
IGNvbW1hbmRCdWZmZXIpOwogCiAgICAgLy8gS25vd2luZyB0aGF0IHRoZSBrU3dhcEhpc3RvcnlT
aXplJ3RoIHN1Ym1pc3Npb24gYWdvIGhhcyBmaW5pc2hlZCwgd2UgY2FuIGtub3cgdGhhdCB0aGUK
QEAgLTExNTUsMTMgKzEyMjQsMjQgQEAgYW5nbGU6OlJlc3VsdCBXaW5kb3dTdXJmYWNlVms6OnBy
ZXNlbnQoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgLy8gSWYgT1VUX09GX0RBVEUgaXMgcmV0
dXJuZWQsIGl0J3Mgb2ssIHdlIGp1c3QgbmVlZCB0byByZWNyZWF0ZSB0aGUgc3dhcGNoYWluIGJl
Zm9yZQogICAgIC8vIGNvbnRpbnVpbmcuCiAgICAgLy8gSWYgVktfU1VCT1BUSU1BTF9LSFIgaXMg
cmV0dXJuZWQgaXQncyBiZWNhdXNlIHRoZSBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlZCBhbmQg
d2Ugc2hvdWxkCi0gICAgLy8gcmVjcmVhdGUgdGhlIHN3YXBjaGFpbiB3aXRoIGEgbmV3IHdpbmRv
dyBvcmllbnRhdGlvbi4gV2UgYXJlbid0IHF1aXRlIHJlYWR5IGZvciB0aGF0IHNvIGp1c3QKLSAg
ICAvLyBpZ25vcmUgZm9yIG5vdy4KLSAgICAvLyBUT0RPOiBDaGVjayBmb3IgcHJlUm90YXRpb246
IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzUwMgotICAgICpwcmVzZW50T3V0T2ZEYXRlID0gcmVzdWx0
ID09IFZLX0VSUk9SX09VVF9PRl9EQVRFX0tIUjsKLSAgICBpZiAoISpwcmVzZW50T3V0T2ZEYXRl
ICYmIHJlc3VsdCAhPSBWS19TVUJPUFRJTUFMX0tIUikKKyAgICAvLyByZWNyZWF0ZSB0aGUgc3dh
cGNoYWluIHdpdGggYSBuZXcgd2luZG93IG9yaWVudGF0aW9uLgorICAgIGlmIChjb250ZXh0Vmst
PmdldEZlYXR1cmVzKCkuZW5hYmxlUHJlUm90YXRlU3VyZmFjZXMuZW5hYmxlZCkKICAgICB7Ci0g
ICAgICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0VmssIHJlc3VsdCk7CisgICAgICAgIC8vIEFsc28g
Y2hlY2sgZm9yIFZLX1NVQk9QVElNQUxfS0hSLgorICAgICAgICAqcHJlc2VudE91dE9mRGF0ZSA9
ICgocmVzdWx0ID09IFZLX0VSUk9SX09VVF9PRl9EQVRFX0tIUikgfHwgKHJlc3VsdCA9PSBWS19T
VUJPUFRJTUFMX0tIUikpOworICAgICAgICBpZiAoISpwcmVzZW50T3V0T2ZEYXRlKQorICAgICAg
ICB7CisgICAgICAgICAgICBBTkdMRV9WS19UUlkoY29udGV4dFZrLCByZXN1bHQpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIFdlIGFyZW4ndCBxdWl0ZSBy
ZWFkeSBmb3IgdGhhdCBzbyBqdXN0IGlnbm9yZSBmb3Igbm93LgorICAgICAgICAqcHJlc2VudE91
dE9mRGF0ZSA9IHJlc3VsdCA9PSBWS19FUlJPUl9PVVRfT0ZfREFURV9LSFI7CisgICAgICAgIGlm
ICghKnByZXNlbnRPdXRPZkRhdGUgJiYgcmVzdWx0ICE9IFZLX1NVQk9QVElNQUxfS0hSKQorICAg
ICAgICB7CisgICAgICAgICAgICBBTkdMRV9WS19UUlkoY29udGV4dFZrLCByZXN1bHQpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAt
MTM3NSw3ICsxNDU1LDExIEBAIGFuZ2xlOjpSZXN1bHQgV2luZG93U3VyZmFjZVZrOjpnZXRDdXJy
ZW50RnJhbWVidWZmZXIoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgZnJhbWVidWZmZXJJbmZv
LnBBdHRhY2htZW50cyAgICA9IGltYWdlVmlld3MuZGF0YSgpOwogICAgIGZyYW1lYnVmZmVySW5m
by53aWR0aCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXh0ZW50cy53aWR0aCk7
CiAgICAgZnJhbWVidWZmZXJJbmZvLmhlaWdodCAgICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90PihleHRlbnRzLmhlaWdodCk7Ci0gICAgZnJhbWVidWZmZXJJbmZvLmxheWVycyAgICAgICAg
ICA9IDE7CisgICAgaWYgKElzOTBEZWdyZWVSb3RhdGlvbihtUHJlVHJhbnNmb3JtKSkKKyAgICB7
CisgICAgICAgIHN0ZDo6c3dhcChmcmFtZWJ1ZmZlckluZm8ud2lkdGgsIGZyYW1lYnVmZmVySW5m
by5oZWlnaHQpOworICAgIH0KKyAgICBmcmFtZWJ1ZmZlckluZm8ubGF5ZXJzID0gMTsKIAogICAg
IGlmIChpc011bHRpU2FtcGxlZCgpKQogICAgIHsKQEAgLTE0MTksMTMgKzE1MDMsMTMgQEAgYW5n
bGU6OlJlc3VsdCBXaW5kb3dTdXJmYWNlVms6OmluaXRpYWxpemVDb250ZW50cyhjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCwKIAogICAgIHZrOjpJbWFnZUhlbHBlciAqaW1hZ2UgPQogICAgICAg
ICBpc011bHRpU2FtcGxlZCgpID8gJm1Db2xvckltYWdlTVMgOiAmbVN3YXBjaGFpbkltYWdlc1tt
Q3VycmVudFN3YXBjaGFpbkltYWdlSW5kZXhdLmltYWdlOwotICAgIGltYWdlLT5zdGFnZVN1YnJl
c291cmNlUm9idXN0Q2xlYXIoaW1hZ2VJbmRleCwgaW1hZ2UtPmdldEZvcm1hdCgpLmludGVuZGVk
Rm9ybWF0KCkpOworICAgIGltYWdlLT5zdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoaW1hZ2VJ
bmRleCwgaW1hZ2UtPmdldEZvcm1hdCgpKTsKICAgICBBTkdMRV9UUlkoaW1hZ2UtPmZsdXNoQWxs
U3RhZ2VkVXBkYXRlcyhjb250ZXh0VmspKTsKIAogICAgIGlmIChtRGVwdGhTdGVuY2lsSW1hZ2Uu
dmFsaWQoKSkKICAgICB7Ci0gICAgICAgIG1EZXB0aFN0ZW5jaWxJbWFnZS5zdGFnZVN1YnJlc291
cmNlUm9idXN0Q2xlYXIoCi0gICAgICAgICAgICBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKDApLCBt
RGVwdGhTdGVuY2lsSW1hZ2UuZ2V0Rm9ybWF0KCkuaW50ZW5kZWRGb3JtYXQoKSk7CisgICAgICAg
IG1EZXB0aFN0ZW5jaWxJbWFnZS5zdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoZ2w6OkltYWdl
SW5kZXg6Ok1ha2UyRCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2lsSW1hZ2UuZ2V0Rm9ybWF0KCkpOwogICAgICAg
ICBBTkdMRV9UUlkobURlcHRoU3RlbmNpbEltYWdlLmZsdXNoQWxsU3RhZ2VkVXBkYXRlcyhjb250
ZXh0VmspKTsKICAgICB9CiAKQEAgLTE0NjMsOCArMTU0Nyw2IEBAIGFuZ2xlOjpSZXN1bHQgV2lu
ZG93U3VyZmFjZVZrOjp1cGRhdGVBbmREcmF3T3ZlcmxheShDb250ZXh0VmsgKmNvbnRleHRWaywK
ICAgICAgICAgaW1hZ2UtPmltYWdlVmlld3MuZ2V0TGV2ZWxMYXllckRyYXdJbWFnZVZpZXcoY29u
dGV4dFZrLCBpbWFnZS0+aW1hZ2UsIDAsIDAsICZpbWFnZVZpZXcpKTsKICAgICBBTkdMRV9UUlko
b3ZlcmxheVZrLT5vblByZXNlbnQoY29udGV4dFZrLCAmaW1hZ2UtPmltYWdlLCBpbWFnZVZpZXcp
KTsKIAotICAgIG92ZXJsYXktPmdldFJ1bm5pbmdHcmFwaFdpZGdldChnbDo6V2lkZ2V0SWQ6OlZ1
bGthbkNvbW1hbmRHcmFwaFNpemUpLT5uZXh0KCk7Ci0KICAgICByZXR1cm4gYW5nbGU6OlJlc3Vs
dDo6Q29udGludWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5oCmluZGV4IDlk
MWZhZjljMTJhNGRmNmM4NTBmMDZhMTFmZmRmNGU0YzZjZTI3NjguLmUwNjlhMDMyNjNmZjlhMjk4
YTAyYzFkYmU4YzVlZjNhZjYwZTljY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsu
aApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBPZmZzY3JlZW5TdXJmYWNlVmsgOiBwdWJsaWMgU3Vy
ZmFjZVZrCiAKICAgICB2azo6SW1hZ2VIZWxwZXIgKmdldENvbG9yQXR0YWNobWVudEltYWdlKCk7
CiAKLSAgcHJpdmF0ZToKKyAgcHJvdGVjdGVkOgogICAgIHN0cnVjdCBBdHRhY2htZW50SW1hZ2Ug
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CiAgICAgICAgIEF0dGFjaG1lbnRJbWFn
ZSgpOwpAQCAtODYsMTMgKzg2LDIxIEBAIGNsYXNzIE9mZnNjcmVlblN1cmZhY2VWayA6IHB1Ymxp
YyBTdXJmYWNlVmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWln
aHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6Rm9ybWF0ICZ2
a0Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNhbXBsZXMp
OworCisgICAgICAgIGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZVdpdGhFeHRlcm5hbE1lbW9yeShE
aXNwbGF5VmsgKmRpc3BsYXlWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6Rm9ybWF0ICZ2a0Zv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpidWZmZXIpOworCiAgICAgICAgIHZvaWQgZGVzdHJveShjb25zdCBl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpOwogCiAgICAgICAgIHZrOjpJbWFnZUhlbHBlciBpbWFnZTsK
ICAgICAgICAgdms6OkltYWdlVmlld0hlbHBlciBpbWFnZVZpZXdzOwogICAgIH07CiAKLSAgICBh
bmdsZTo6UmVzdWx0IGluaXRpYWxpemVJbXBsKERpc3BsYXlWayAqZGlzcGxheVZrKTsKKyAgICB2
aXJ0dWFsIGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZUltcGwoRGlzcGxheVZrICpkaXNwbGF5Vmsp
OwogCiAgICAgRUdMaW50IG1XaWR0aDsKICAgICBFR0xpbnQgbUhlaWdodDsKQEAgLTIxNiw2ICsy
MjQsOCBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlVmsgOiBwdWJsaWMgU3VyZmFjZVZrCiAKICAgICB2
azo6U2VtYXBob3JlIGdldEFjcXVpcmVJbWFnZVNlbWFwaG9yZSgpOwogCisgICAgVmtTdXJmYWNl
VHJhbnNmb3JtRmxhZ0JpdHNLSFIgZ2V0UHJlVHJhbnNmb3JtKCkgeyByZXR1cm4gbVByZVRyYW5z
Zm9ybTsgfQorCiAgIHByb3RlY3RlZDoKICAgICBhbmdsZTo6UmVzdWx0IHN3YXBJbXBsKGNvbnN0
IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
ICpyZWN0cywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vU3luY1ZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3luY1ZrLmNwcAppbmRleCAzMmNmZDUyNDJjNDcw
ZDAzNzE4ZjkyZGJjZWU0NzM5OWNlNmM4YjE0Li4wNDljN2Q2ZDQ1NTlmYmNhNWYxODBmMDBkMDIx
Y2QzMjRmNDY0ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N5bmNWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TeW5jVmsuY3BwCkBAIC01Miw4ICs1
Miw5IEBAIGFuZ2xlOjpSZXN1bHQgU3luY0hlbHBlcjo6aW5pdGlhbGl6ZShDb250ZXh0VmsgKmNv
bnRleHRWaykKIAogICAgIG1FdmVudCA9IGV2ZW50LnJlbGVhc2UoKTsKIAotICAgIENvbW1hbmRH
cmFwaCAqY29tbWFuZEdyYXBoID0gY29udGV4dFZrLT5nZXRDb21tYW5kR3JhcGgoKTsKLSAgICBj
b21tYW5kR3JhcGgtPnNldEZlbmNlU3luYyhtRXZlbnQpOworICAgIHZrOjpQcmltYXJ5Q29tbWFu
ZEJ1ZmZlciAqcHJpbWFyeTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5mbHVzaEFuZEdldFBy
aW1hcnlDb21tYW5kQnVmZmVyKCZwcmltYXJ5KSk7CisgICAgcHJpbWFyeS0+c2V0RXZlbnQobUV2
ZW50LmdldEhhbmRsZSgpLCBWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0ZfUElQRV9CSVQpOwog
ICAgIGNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkuYWRkKG1Vc2UpOwogCiAgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMTAzLDExICsxMDQsMTQgQEAgYW5nbGU6
OlJlc3VsdCBTeW5jSGVscGVyOjpjbGllbnRXYWl0KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi12b2lkIFN5bmNIZWxwZXI6OnNlcnZl
cldhaXQoQ29udGV4dFZrICpjb250ZXh0VmspCithbmdsZTo6UmVzdWx0IFN5bmNIZWxwZXI6OnNl
cnZlcldhaXQoQ29udGV4dFZrICpjb250ZXh0VmspCiB7Ci0gICAgQ29tbWFuZEdyYXBoICpjb21t
YW5kR3JhcGggPSBjb250ZXh0VmstPmdldENvbW1hbmRHcmFwaCgpOwotICAgIGNvbW1hbmRHcmFw
aC0+d2FpdEZlbmNlU3luYyhtRXZlbnQpOworICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAq
cHJpbWFyeTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5mbHVzaEFuZEdldFByaW1hcnlDb21t
YW5kQnVmZmVyKCZwcmltYXJ5KSk7CisgICAgcHJpbWFyeS0+d2FpdEV2ZW50cygxLCBtRXZlbnQu
cHRyKCksIFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9QSVBFX0JJVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9QSVBFX0JJVCwgMCwgbnVs
bHB0ciwgMCwgbnVsbHB0ciwgMCwgbnVsbHB0cik7CiAgICAgY29udGV4dFZrLT5nZXRSZXNvdXJj
ZVVzZUxpc3QoKS5hZGQobVVzZSk7CisgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVl
OwogfQogCiBhbmdsZTo6UmVzdWx0IFN5bmNIZWxwZXI6OmdldFN0YXR1cyhDb250ZXh0ICpjb250
ZXh0LCBib29sICpzaWduYWxlZCkKQEAgLTE4MSw4ICsxODUsNyBAQCBhbmdsZTo6UmVzdWx0IFN5
bmNWazo6c2VydmVyV2FpdChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBm
bGFncywgRwogICAgIEFTU0VSVCh0aW1lb3V0ID09IEdMX1RJTUVPVVRfSUdOT1JFRCk7CiAKICAg
ICBDb250ZXh0VmsgKmNvbnRleHRWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOwotICAgIG1GZW5j
ZVN5bmMuc2VydmVyV2FpdChjb250ZXh0VmspOwotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpD
b250aW51ZTsKKyAgICByZXR1cm4gbUZlbmNlU3luYy5zZXJ2ZXJXYWl0KGNvbnRleHRWayk7CiB9
CiAKIGFuZ2xlOjpSZXN1bHQgU3luY1ZrOjpnZXRTdGF0dXMoY29uc3QgZ2w6OkNvbnRleHQgKmNv
bnRleHQsIEdMaW50ICpvdXRSZXN1bHQpCkBAIC0yNjksOSArMjcyLDEwIEBAIGVnbDo6RXJyb3Ig
RUdMU3luY1ZrOjpzZXJ2ZXJXYWl0KGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSwKICAgICAv
LyBObyBmbGFncyBhcmUgY3VycmVudGx5IGltcGxlbWVudGVkLgogICAgIEFTU0VSVChmbGFncyA9
PSAwKTsKIAorICAgIERpc3BsYXlWayAqZGlzcGxheVZrID0gdms6OkdldEltcGwoZGlzcGxheSk7
CiAgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsKLSAgICBt
RmVuY2VTeW5jLnNlcnZlcldhaXQoY29udGV4dFZrKTsKLSAgICByZXR1cm4gZWdsOjpOb0Vycm9y
KCk7CisKKyAgICByZXR1cm4gYW5nbGU6OlRvRUdMKG1GZW5jZVN5bmMuc2VydmVyV2FpdChjb250
ZXh0VmspLCBkaXNwbGF5VmssIEVHTF9CQURfQUxMT0MpOwogfQogCiBlZ2w6OkVycm9yIEVHTFN5
bmNWazo6Z2V0U3RhdHVzKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSwgRUdMaW50ICpvdXRT
dGF0dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1N5bmNWay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TeW5jVmsuaAppbmRleCAwYTk3YzExNTU0MGViNjU4M2U1
OWFjODNjNjU1ZDVjMzhiZWVkMDZiLi5kZTdjY2NjYmZkZjczZjdlN2VhZGM4Y2M4ZjFiYmU1YWUy
M2VhOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1N5bmNWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3luY1ZrLmgKQEAgLTEyLDcgKzEyLDcgQEAKIAog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0VHTFN5bmNJbXBsLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvU3luY0ltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vQ29tbWFuZEdyYXBoLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1Jlc291cmNlVmsuaCIKIAogbmFtZXNwYWNlIGVnbAogewpAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBTeW5jSGVscGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmx1c2hDb21t
YW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdGltZW91dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtSZXN1bHQgKm91dFJlc3VsdCk7Ci0gICAgdm9p
ZCBzZXJ2ZXJXYWl0KENvbnRleHRWayAqY29udGV4dFZrKTsKKyAgICBhbmdsZTo6UmVzdWx0IHNl
cnZlcldhaXQoQ29udGV4dFZrICpjb250ZXh0VmspOwogICAgIGFuZ2xlOjpSZXN1bHQgZ2V0U3Rh
dHVzKENvbnRleHQgKmNvbnRleHQsIGJvb2wgKnNpZ25hbGVkKTsKIAogICBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9UZXh0dXJlVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuY3BwCmluZGV4IDg1OTBkYjMyOTQ1NzU2ZTc1ZGYy
NTQwNjc0NDMyMjFhZDJmYmRmNDYuLmZmNDJjMWY4YzIwZGUzMzZlY2EzYjFhNmEzOWE2YmZkZWQ5
MzAwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5jcHAKQEAgLTI5LDggKzI5
LDkgQEAgbmFtZXNwYWNlIHJ4CiB7CiBuYW1lc3BhY2UKIHsKLWNvbnN0ZXhwciBWa0ltYWdlVXNh
Z2VGbGFncyBrRHJhd1N0YWdpbmdJbWFnZUZsYWdzID0KLSAgICBWS19JTUFHRV9VU0FHRV9UUkFO
U0ZFUl9TUkNfQklUIHwgVktfSU1BR0VfVVNBR0VfQ09MT1JfQVRUQUNITUVOVF9CSVQ7Citjb25z
dGV4cHIgVmtJbWFnZVVzYWdlRmxhZ3Mga0RyYXdTdGFnaW5nSW1hZ2VGbGFncyA9IFZLX0lNQUdF
X1VTQUdFX1RSQU5TRkVSX1NSQ19CSVQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRBQ0hNRU5UX0JJ
VCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQ7CiAKIGNvbnN0ZXhwciBWa0ltYWdlVXNh
Z2VGbGFncyBrVHJhbnNmZXJTdGFnaW5nSW1hZ2VGbGFncyA9CiAgICAgVktfSU1BR0VfVVNBR0Vf
VFJBTlNGRVJfU1JDX0JJVCB8IFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQ7CkBAIC00
NDcsNyArNDQ4LDcgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmNvcHlTdWJJbWFnZUltcGwo
Y29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAKICAgICAgICAgY29uc3Qgdms6OkltYWdlVmll
dyAqcmVhZEltYWdlVmlldyA9IG51bGxwdHI7CiAgICAgICAgIEFOR0xFX1RSWShjb2xvclJlYWRS
VC0+Z2V0SW1hZ2VWaWV3KGNvbnRleHRWaywgJnJlYWRJbWFnZVZpZXcpKTsKLSAgICAgICAgY29s
b3JSZWFkUlQtPm9uSW1hZ2VWaWV3QWNjZXNzKGNvbnRleHRWayk7CisgICAgICAgIGNvbG9yUmVh
ZFJULT5yZXRhaW5JbWFnZVZpZXdzKGNvbnRleHRWayk7CiAKICAgICAgICAgcmV0dXJuIGNvcHlT
dWJJbWFnZUltcGxXaXRoRHJhdyhjb250ZXh0VmssIG9mZnNldEltYWdlSW5kZXgsIG1vZGlmaWVk
RGVzdE9mZnNldCwgZGVzdEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCBjbGlwcGVkU291cmNlQXJlYSwgaXNWaWV3cG9ydEZsaXBZLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLApAQCAtNTExLDggKzUxMiw5IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpj
b3B5U3ViVGV4dHVyZUltcGwoQ29udGV4dFZrICpjb250ZXh0VmssCiAKICAgICAvLyBSZWFkIGJh
Y2sgdGhlIHJlcXVlc3RlZCByZWdpb24gb2YgdGhlIHNvdXJjZSB0ZXh0dXJlCiAgICAgdWludDhf
dCAqc291cmNlRGF0YSA9IG51bGxwdHI7Ci0gICAgQU5HTEVfVFJZKHNvdXJjZS0+Y29weUltYWdl
RGF0YVRvQnVmZmVyQW5kR2V0RGF0YShjb250ZXh0VmssIHNvdXJjZUxldmVsLCAxLCBzb3VyY2VB
cmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNvdXJjZURhdGEpKTsKKyAgICBnbDo6Qm94IGFyZWEoMCwgMCwgMCwgc291cmNlQXJlYS53
aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEpOworICAgIEFOR0xFX1RSWSgKKyAgICAgICAgc291
cmNlLT5jb3B5SW1hZ2VEYXRhVG9CdWZmZXJBbmRHZXREYXRhKGNvbnRleHRWaywgc291cmNlTGV2
ZWwsIDEsIGFyZWEsICZzb3VyY2VEYXRhKSk7CiAKICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZz
b3VyY2VUZXh0dXJlRm9ybWF0ID0gc291cmNlVmtGb3JtYXQuYWN0dWFsSW1hZ2VGb3JtYXQoKTsK
ICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZkZXN0VGV4dHVyZUZvcm1hdCAgID0gZGVzdFZrRm9y
bWF0LmFjdHVhbEltYWdlRm9ybWF0KCk7CkBAIC01NzIsMTMgKzU3NCw4IEBAIGFuZ2xlOjpSZXN1
bHQgVGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2VJbXBsV2l0aFRyYW5zZmVyKENvbnRleHRWayAqY29u
dGV4dFZrLAogICAgIGdsOjpFeHRlbnRzIGV4dGVudHMgID0ge3NvdXJjZUFyZWEud2lkdGgsIHNv
dXJjZUFyZWEuaGVpZ2h0LCAxfTsKIAogICAgIC8vIENoYW5nZSBzb3VyY2UgbGF5b3V0IGlmIG5l
Y2Vzc2FyeQotICAgIGlmIChzcmNJbWFnZS0+aXNMYXlvdXRDaGFuZ2VOZWNlc3Nhcnkodms6Oklt
YWdlTGF5b3V0OjpUcmFuc2ZlclNyYykpCi0gICAgewotICAgICAgICB2azo6Q29tbWFuZEJ1ZmZl
ciAqc3JjTGF5b3V0Q2hhbmdlOwotICAgICAgICBBTkdMRV9UUlkoc3JjSW1hZ2UtPnJlY29yZENv
bW1hbmRzKGNvbnRleHRWaywgJnNyY0xheW91dENoYW5nZSkpOwotICAgICAgICBzcmNJbWFnZS0+
Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6
VHJhbnNmZXJTcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTGF5b3V0Q2hh
bmdlKTsKLSAgICB9CisgICAgQU5HTEVfVFJZKAorICAgICAgICBjb250ZXh0VmstPm9uSW1hZ2VS
ZWFkKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJT
cmMsIHNyY0ltYWdlKSk7CiAKICAgICBWa0ltYWdlU3VicmVzb3VyY2VMYXllcnMgc3JjU3VicmVz
b3VyY2UgPSB7fTsKICAgICBzcmNTdWJyZXNvdXJjZS5hc3BlY3RNYXNrICAgICAgICAgICAgICAg
PSBWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklUOwpAQCAtNTkzLDE0ICs1OTAsOSBAQCBhbmdsZTo6
UmVzdWx0IFRleHR1cmVWazo6Y29weVN1YkltYWdlSW1wbFdpdGhUcmFuc2ZlcihDb250ZXh0Vmsg
KmNvbnRleHRWaywKICAgICAgICAgQU5HTEVfVFJZKGVuc3VyZUltYWdlSW5pdGlhbGl6ZWQoY29u
dGV4dFZrLCBJbWFnZU1pcExldmVsczo6RW5hYmxlZExldmVscykpOwogCiAgICAgICAgIHZrOjpD
b21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOwotICAgICAgICBBTkdMRV9UUlkobUltYWdlLT5y
ZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0KLSAgICAgICAgLy8g
Q2hhbmdlIHRoZSBpbWFnZSBsYXlvdXQgYmVmb3JlIHRoZSB0cmFuc2ZlcgotICAgICAgICBtSW1h
Z2UtPmNoYW5nZUxheW91dChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlv
dXQ6OlRyYW5zZmVyRHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kQnVm
ZmVyKTsKLQotICAgICAgICAvLyBTb3VyY2UncyBsYXlvdXQgY2hhbmdlIHNob3VsZCBoYXBwZW4g
YmVmb3JlIHRoZSBjb3B5Ci0gICAgICAgIHNyY0ltYWdlLT5hZGRSZWFkRGVwZW5kZW5jeShjb250
ZXh0VmssIG1JbWFnZSk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0
ZShWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCB2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUltYWdlKSk7Cisg
ICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVm
ZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICAgICAgVmtJbWFnZVN1YnJlc291cmNlTGF5ZXJz
IGRlc3RTdWJyZXNvdXJjZSA9IHNyY1N1YnJlc291cmNlOwogICAgICAgICBkZXN0U3VicmVzb3Vy
Y2UubWlwTGV2ZWwgICAgICAgICAgICAgICAgID0gbGV2ZWw7CkBAIC02MjgsMTQgKzYyMCw5IEBA
IGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2VJbXBsV2l0aFRyYW5zZmVyKENv
bnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RGb3JtYXQsIGtUcmFuc2ZlclN0YWdpbmdJbWFnZUZsYWdzLCBsYXllckNv
dW50KSk7CiAKICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAg
ICAgIEFOR0xFX1RSWShzdGFnaW5nSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNv
bW1hbmRCdWZmZXIpKTsKLQotICAgICAgICAvLyBDaGFuZ2UgdGhlIGltYWdlIGxheW91dCBiZWZv
cmUgdGhlIHRyYW5zZmVyCi0gICAgICAgIHN0YWdpbmdJbWFnZS0+Y2hhbmdlTGF5b3V0KFZLX0lN
QUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOwotCi0gICAgICAg
IC8vIFNvdXJjZSdzIGxheW91dCBjaGFuZ2Ugc2hvdWxkIGhhcHBlbiBiZWZvcmUgdGhlIGNvcHkK
LSAgICAgICAgc3JjSW1hZ2UtPmFkZFJlYWREZXBlbmRlbmN5KGNvbnRleHRWaywgc3RhZ2luZ0lt
YWdlLmdldCgpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25JbWFnZVdyaXRlKFZL
X0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6VHJhbnNmZXJEc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnaW5nSW1hZ2UuZ2V0
KCkpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENv
bW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgICAgICBWa0ltYWdlU3VicmVzb3Vy
Y2VMYXllcnMgZGVzdFN1YnJlc291cmNlID0gc3JjU3VicmVzb3VyY2U7CiAgICAgICAgIGRlc3RT
dWJyZXNvdXJjZS5taXBMZXZlbCAgICAgICAgICAgICAgICAgPSAwOwpAQCAtODAzLDcgKzc5MCw3
IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpzZXRTdG9yYWdlRXh0ZXJuYWxNZW1vcnkoY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgc2V0SW1hZ2VIZWxwZXIoY29udGV4dFZrLCBu
ZXcgdms6OkltYWdlSGVscGVyKCksIG1TdGF0ZS5nZXRUeXBlKCksIGZvcm1hdCwgMCwgMCwgMCwg
dHJ1ZSk7CiAKICAgICBBTkdMRV9UUlkoCi0gICAgICAgIG1lbW9yeU9iamVjdFZrLT5jcmVhdGVJ
bWFnZShjb250ZXh0LCB0eXBlLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCBzaXplLCBvZmZzZXQs
IG1JbWFnZSkpOworICAgICAgICBtZW1vcnlPYmplY3RWay0+Y3JlYXRlSW1hZ2UoY29udGV4dFZr
LCB0eXBlLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCBzaXplLCBvZmZzZXQsIG1JbWFnZSkpOwog
CiAgICAgZ2w6OkZvcm1hdCBnbEZvcm1hdChpbnRlcm5hbEZvcm1hdCk7CiAgICAgQU5HTEVfVFJZ
KGluaXRJbWFnZVZpZXdzKGNvbnRleHRWaywgZm9ybWF0LCBnbEZvcm1hdC5pbmZvLT5zaXplZCwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxldmVscyksCkBAIC04MzYsNyArODIzLDcgQEAgYW5nbGU6
OlJlc3VsdCBUZXh0dXJlVms6OnNldEVHTEltYWdlVGFyZ2V0KGNvbnN0IGdsOjpDb250ZXh0ICpj
b250ZXh0LAogICAgIGlmIChtSW1hZ2UtPmlzUXVldWVDaGFuZ2VOZWNjZXNhcnkocmVuZGVyZXJR
dWV1ZUZhbWlseUluZGV4KSkKICAgICB7CiAgICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgQU5HTEVfVFJZKG1JbWFnZS0+cmVjb3JkQ29t
bWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOworICAgICAgICBBTkdMRV9UUlkoY29u
dGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikp
OwogICAgICAgICBtSW1hZ2UtPmNoYW5nZUxheW91dEFuZFF1ZXVlKFZLX0lNQUdFX0FTUEVDVF9D
T0xPUl9CSVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkltYWdl
TGF5b3V0OjpBbGxHcmFwaGljc1NoYWRlcnNSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZW5kZXJlclF1ZXVlRmFtaWx5SW5kZXgsIGNvbW1hbmRCdWZmZXIp
OwpAQCAtMTAwMCw3ICs5ODcsNyBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6cmVkZWZpbmVJ
bWFnZShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZr
Ojpjb3B5SW1hZ2VEYXRhVG9CdWZmZXJBbmRHZXREYXRhKENvbnRleHRWayAqY29udGV4dFZrLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGF5ZXJDb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq
Km91dERhdGFQdHIpCiB7CiAgICAgQU5HTEVfVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiVGV4
dHVyZVZrOjpjb3B5SW1hZ2VEYXRhVG9CdWZmZXJBbmRHZXREYXRhIik7CkBAIC0xMDA4LDEzICs5
OTUsMTEgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmNvcHlJbWFnZURhdGFUb0J1ZmZlckFu
ZEdldERhdGEoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzb3Vy
Y2UgaXMgaW5pdGlhbGl6ZWQgYW5kIGl0J3MgaW1hZ2VzIGFyZSBmbHVzaGVkLgogICAgIEFOR0xF
X1RSWShlbnN1cmVJbWFnZUluaXRpYWxpemVkKGNvbnRleHRWaywgSW1hZ2VNaXBMZXZlbHM6OkVu
YWJsZWRMZXZlbHMpKTsKIAotICAgIGdsOjpCb3ggYXJlYSgwLCAwLCAwLCBzb3VyY2VBcmVhLndp
ZHRoLCBzb3VyY2VBcmVhLmhlaWdodCwgMSk7Ci0KICAgICB2azo6QnVmZmVySGVscGVyICpjb3B5
QnVmZmVyICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKICAgICB2azo6U3RhZ2luZ0J1ZmZl
ck9mZnNldEFycmF5IHNvdXJjZUNvcHlPZmZzZXRzID0gezAsIDB9OwogICAgIHNpemVfdCBidWZm
ZXJTaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwogCi0gICAgQU5HTEVfVFJZ
KG1JbWFnZS0+Y29weUltYWdlRGF0YVRvQnVmZmVyKGNvbnRleHRWaywgc291cmNlTGV2ZWwsIGxh
eWVyQ291bnQsIDAsIGFyZWEsCisgICAgQU5HTEVfVFJZKG1JbWFnZS0+Y29weUltYWdlRGF0YVRv
QnVmZmVyKGNvbnRleHRWaywgc291cmNlTGV2ZWwsIGxheWVyQ291bnQsIDAsIHNvdXJjZUFyZWEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3B5QnVmZmVy
LCAmYnVmZmVyU2l6ZSwgJnNvdXJjZUNvcHlPZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXREYXRhUHRyKSk7CiAKQEAgLTEwNDUsMTMgKzEwMzAs
MTAgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmNvcHlCdWZmZXJEYXRhVG9JbWFnZShDb250
ZXh0VmsgKmNvbnRleHRWaywKICAgICBBTkdMRV9UUlkoZW5zdXJlSW1hZ2VJbml0aWFsaXplZChj
b250ZXh0VmssIEltYWdlTWlwTGV2ZWxzOjpFbmFibGVkTGV2ZWxzKSk7CiAKICAgICB2azo6Q29t
bWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgQU5HTEVfVFJZKG1JbWFn
ZS0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgbUlt
YWdlLT5jaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5
b3V0OjpUcmFuc2ZlckRzdCwgY29tbWFuZEJ1ZmZlcik7Ci0KLSAgICAvLyBTb3VyY2UncyBsYXlv
dXQgY2hhbmdlIHNob3VsZCBoYXBwZW4gYmVmb3JlIHRoZSBjb3B5Ci0gICAgLy8gQWxzbyB1cGRh
dGVzIHRoZSBzZXJpYWwgb2YgdGhlIHNyY0J1ZmZlcgotICAgIHNyY0J1ZmZlci0+YWRkUmVhZERl
cGVuZGVuY3koY29udGV4dFZrLCBtSW1hZ2UpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9u
QnVmZmVyUmVhZChWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsIHNyY0J1ZmZlcikpOworICAg
IEFOR0xFX1RSWSgKKyAgICAgICAgY29udGV4dFZrLT5vbkltYWdlV3JpdGUoVktfSU1BR0VfQVNQ
RUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgbUltYWdlKSk7Cisg
ICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIo
JmNvbW1hbmRCdWZmZXIpKTsKIAogICAgIFZrQnVmZmVySW1hZ2VDb3B5IHJlZ2lvbiAgICAgICAg
ICAgICAgID0ge307CiAgICAgcmVnaW9uLmJ1ZmZlck9mZnNldCAgICAgICAgICAgICAgICAgICAg
PSBvZmZzZXQ7CkBAIC0xMDg4LDE0ICsxMDcwLDE2IEBAIGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZr
OjpnZW5lcmF0ZU1pcG1hcHNXaXRoQ1BVKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAg
IHVpbnQzMl90IGltYWdlTGF5ZXJDb3VudCAgICAgICAgICA9IG1JbWFnZS0+Z2V0TGF5ZXJDb3Vu
dCgpOwogCiAgICAgdWludDhfdCAqaW1hZ2VEYXRhID0gbnVsbHB0cjsKLSAgICBnbDo6UmVjdGFu
Z2xlIGltYWdlQXJlYSgwLCAwLCBiYXNlTGV2ZWxFeHRlbnRzLndpZHRoLCBiYXNlTGV2ZWxFeHRl
bnRzLmhlaWdodCk7CisgICAgZ2w6OkJveCBpbWFnZUFyZWEoMCwgMCwgMCwgYmFzZUxldmVsRXh0
ZW50cy53aWR0aCwgYmFzZUxldmVsRXh0ZW50cy5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgYmFzZUxldmVsRXh0ZW50cy5kZXB0aCk7CiAKICAgICBBTkdMRV9UUlkoY29weUltYWdlRGF0
YVRvQnVmZmVyQW5kR2V0RGF0YShjb250ZXh0VmssIG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2
ZWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFn
ZUxheWVyQ291bnQsIGltYWdlQXJlYSwgJmltYWdlRGF0YSkpOwogCiAgICAgY29uc3QgYW5nbGU6
OkZvcm1hdCAmYW5nbGVGb3JtYXQgPSBtSW1hZ2UtPmdldEZvcm1hdCgpLmFjdHVhbEltYWdlRm9y
bWF0KCk7CiAgICAgR0x1aW50IHNvdXJjZVJvd1BpdGNoICAgICAgICAgICAgPSBiYXNlTGV2ZWxF
eHRlbnRzLndpZHRoICogYW5nbGVGb3JtYXQucGl4ZWxCeXRlczsKLSAgICBzaXplX3QgYmFzZUxl
dmVsQWxsb2NhdGlvblNpemUgICA9IHNvdXJjZVJvd1BpdGNoICogYmFzZUxldmVsRXh0ZW50cy5o
ZWlnaHQ7CisgICAgR0x1aW50IHNvdXJjZURlcHRoUGl0Y2ggICAgICAgICAgPSBzb3VyY2VSb3dQ
aXRjaCAqIGJhc2VMZXZlbEV4dGVudHMuaGVpZ2h0OworICAgIHNpemVfdCBiYXNlTGV2ZWxBbGxv
Y2F0aW9uU2l6ZSAgID0gc291cmNlRGVwdGhQaXRjaCAqIGJhc2VMZXZlbEV4dGVudHMuZGVwdGg7
CiAKICAgICAvLyBXZSBub3cgaGF2ZSB0aGUgYmFzZSBsZXZlbCBhdmFpbGFibGUgdG8gYmUgbWFu
aXB1bGF0ZWQgaW4gdGhlIGltYWdlRGF0YSBwb2ludGVyLiBHZW5lcmF0ZSBhbGwKICAgICAvLyB0
aGUgbWlzc2luZyBtaXBtYXBzIHdpdGggdGhlIHNsb3cgcGF0aC4gRm9yIGVhY2ggbGF5ZXIsIHVz
ZSB0aGUgY29waWVkIGRhdGEgdG8gZ2VuZXJhdGUgYWxsCkBAIC0xMTA3LDExICsxMDkxLDExIEBA
IGFuZ2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1hcHNXaXRoQ1BVKGNvbnN0IGds
OjpDb250ZXh0ICpjb250ZXh0KQogICAgICAgICBBTkdMRV9UUlkoZ2VuZXJhdGVNaXBtYXBMZXZl
bHNXaXRoQ1BVKAogICAgICAgICAgICAgY29udGV4dFZrLCBhbmdsZUZvcm1hdCwgbGF5ZXIsIG1T
dGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSArIDEsCiAgICAgICAgICAgICBtU3RhdGUuZ2V0
TWlwbWFwTWF4TGV2ZWwoKSwgYmFzZUxldmVsRXh0ZW50cy53aWR0aCwgYmFzZUxldmVsRXh0ZW50
cy5oZWlnaHQsCi0gICAgICAgICAgICBzb3VyY2VSb3dQaXRjaCwgaW1hZ2VEYXRhICsgYnVmZmVy
T2Zmc2V0KSk7CisgICAgICAgICAgICBiYXNlTGV2ZWxFeHRlbnRzLmRlcHRoLCBzb3VyY2VSb3dQ
aXRjaCwgc291cmNlRGVwdGhQaXRjaCwgaW1hZ2VEYXRhICsgYnVmZmVyT2Zmc2V0KSk7CiAgICAg
fQogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBudWxscHRyOwotICAg
IEFOR0xFX1RSWShtSW1hZ2UtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZm
ZXIpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFu
ZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogICAgIHJldHVybiBtSW1hZ2UtPmZsdXNoU3RhZ2Vk
VXBkYXRlcyhjb250ZXh0VmssIGdldE5hdGl2ZUltYWdlTGV2ZWwoMCksIG1JbWFnZS0+Z2V0TGV2
ZWxDb3VudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROYXRp
dmVJbWFnZUxheWVyKDApLCBtSW1hZ2UtPmdldExheWVyQ291bnQoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlcik7CkBAIC0xMTU1LDcgKzExMzks
OCBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVWazo6Z2VuZXJhdGVNaXBtYXAoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQpCiAgICAgICAgIGlmIChtSW1hZ2UtPmhhc1N0YWdlZFVwZGF0ZXMoKSkK
ICAgICAgICAgewogICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIg
PSBudWxscHRyOwotICAgICAgICAgICAgQU5HTEVfVFJZKG1JbWFnZS0+cmVjb3JkQ29tbWFuZHMo
Y29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOworICAgICAgICAgICAgbUltYWdlLT5yZXRhaW4o
JmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworICAgICAgICAgICAgQU5HTEVfVFJZ
KGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZm
ZXIpKTsKICAgICAgICAgICAgIEFOR0xFX1RSWShtSW1hZ2UtPmZsdXNoU3RhZ2VkVXBkYXRlcyhj
b250ZXh0VmssIGdldE5hdGl2ZUltYWdlTGV2ZWwoMCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUltYWdlLT5nZXRMZXZlbENvdW50KCksIGdldE5h
dGl2ZUltYWdlTGF5ZXIoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbUltYWdlLT5nZXRMYXllckNvdW50KCksIGNvbW1hbmRCdWZmZXIpKTsKQEAg
LTExNjYsMTcgKzExNTEsMTEgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmdlbmVyYXRlTWlw
bWFwKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogICAgICAgICBBTkdMRV9UUlkoY29weUFu
ZFN0YWdlSW1hZ2VTdWJyZXNvdXJjZShjb250ZXh0VmssIGJhc2VMZXZlbERlc2MsIGZhbHNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROYXRpdmVJ
bWFnZUxheWVyKDApLCAwLCBtSW1hZ2UtPmdldEJhc2VMZXZlbCgpKSk7CiAKLSAgICAgICAgLy8g
Q3JlYXRlIGEgbmV3IG5vZGUgZm9yIHRoZSBpbWFnZSBhbmQgYWRkIGEgZ2xvYmFsIG1lbW9yeSBi
YXJyaWVyIGZvciB0aGUgc3RhZ2luZyBidWZmZXIuCi0gICAgICAgIC8vIEl0J3Mgd3JpdHRlbiB0
byBhbmQgc3RhZ2VkIHRvIGJlIHJlYWQgZnJvbSB3aGVuIGVuc3VyZUltYWdlSW5pdGlhbGl6ZWQo
KSBpcyBjYWxsZWQuCi0gICAgICAgIG1JbWFnZS0+ZmluaXNoQ3VycmVudENvbW1hbmRzKGNvbnRl
eHRWayk7Ci0gICAgICAgIG1JbWFnZS0+YWRkR2xvYmFsTWVtb3J5QmFycmllcihWS19BQ0NFU1Nf
VFJBTlNGRVJfV1JJVEVfQklULCBWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBFTElORV9TVEFHRV9BTExfQ09N
TUFORFNfQklUKTsKLQogICAgICAgICBvblN0YWdpbmdCdWZmZXJDaGFuZ2UoKTsKICAgICAgICAg
Ly8gUmVsZWFzZSB0aGUgb3JpZ2luIGltYWdlIGFuZCByZWNyZWF0ZSBpdCB3aXRoIG5ldyBtaXBt
YXAgY291bnRzLgogICAgICAgICByZWxlYXNlSW1hZ2UoY29udGV4dFZrKTsKIAotICAgICAgICBt
SW1hZ2UtPm9uUmVzb3VyY2VSZWNyZWF0ZWQoJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0
KCkpOworICAgICAgICBtSW1hZ2UtPnJldGFpbigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxp
c3QoKSk7CiAKICAgICAgICAgQU5HTEVfVFJZKGVuc3VyZUltYWdlSW5pdGlhbGl6ZWQoY29udGV4
dFZrLCBJbWFnZU1pcExldmVsczo6RnVsbE1pcENoYWluKSk7CiAgICAgfQpAQCAtMTI4Myw3ICsx
MjYyLDcgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmNoYW5nZUxldmVscyhDb250ZXh0Vmsg
KmNvbnRleHRWaywKICAgICBpZiAobUltYWdlLT52YWxpZCgpICYmIG1JbWFnZS0+aGFzU3RhZ2Vk
VXBkYXRlcygpKQogICAgIHsKICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZm
ZXIgPSBudWxscHRyOwotICAgICAgICBBTkdMRV9UUlkobUltYWdlLT5yZWNvcmRDb21tYW5kcyhj
b250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7CisgICAgICAgIEFOR0xFX1RSWShjb250ZXh0Vmst
PmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAgICAg
ICAgIEFOR0xFX1RSWShtSW1hZ2UtPmZsdXNoU3RhZ2VkVXBkYXRlcyhjb250ZXh0VmssIGdldE5h
dGl2ZUltYWdlTGV2ZWwoMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtSW1hZ2UtPmdldExldmVsQ291bnQoKSwgZ2V0TmF0aXZlSW1hZ2VMYXllcigwKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbWFnZS0+Z2V0
TGF5ZXJDb3VudCgpLCBjb21tYW5kQnVmZmVyKSk7CkBAIC0xMzMzLDE5ICsxMzEyLDEzIEBAIGFu
Z2xlOjpSZXN1bHQgVGV4dHVyZVZrOjpjaGFuZ2VMZXZlbHMoQ29udGV4dFZrICpjb250ZXh0Vmss
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBDcmVhdGUgYSBuZXcgbm9kZSBmb3IgdGhlIGlt
YWdlIGFuZCBhZGQgYSBnbG9iYWwgbWVtb3J5IGJhcnJpZXIgZm9yIHRoZSBzdGFnaW5nIGJ1ZmZl
cnMuCi0gICAgLy8gVGhleSBhcmUgd3JpdHRlbiB0byBhbmQgc3RhZ2VkIHRvIGJlIHJlYWQgZnJv
bSB3aGVuIGVuc3VyZUltYWdlSW5pdGlhbGl6ZWQoKSBpcyBjYWxsZWQuCi0gICAgbUltYWdlLT5m
aW5pc2hDdXJyZW50Q29tbWFuZHMoY29udGV4dFZrKTsKLSAgICBtSW1hZ2UtPmFkZEdsb2JhbE1l
bW9yeUJhcnJpZXIoVktfQUNDRVNTX1RSQU5TRkVSX1dSSVRFX0JJVCwgVktfQUNDRVNTX1RSQU5T
RkVSX1JFQURfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19QSVBF
TElORV9TVEFHRV9BTExfQ09NTUFORFNfQklUKTsKLQogICAgIC8vIEluZm9ybSB0aGUgZnJvbnQg
ZW5kIHRoYXQgd2UndmUgdXBkYXRlZCB0aGUgc3RhZ2luZyBidWZmZXIKICAgICBvblN0YWdpbmdC
dWZmZXJDaGFuZ2UoKTsKICAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBzdGFnZWQgYWxsIHRoZSB1cGRh
dGVzLCByZWxlYXNlIHRoZSBjdXJyZW50IGltYWdlIHNvIHRoYXQgaXQgd2lsbCBiZQogICAgIC8v
IHJlY3JlYXRlZCB3aXRoIHRoZSBjb3JyZWN0IG51bWJlciBvZiBtaXAgbGV2ZWxzLCBiYXNlIGxl
dmVsLCBhbmQgbWF4IGxldmVsLgogICAgIHJlbGVhc2VJbWFnZShjb250ZXh0VmspOwogCi0gICAg
bUltYWdlLT5vblJlc291cmNlUmVjcmVhdGVkKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlz
dCgpKTsKKyAgICBtSW1hZ2UtPnJldGFpbigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3Qo
KSk7CiAKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CkBAIC0xNDI5LDE0
ICsxNDAyLDcgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmVuc3VyZUltYWdlSW5pdGlhbGl6
ZWRJbXBsKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIH0KIAogICAgIHZrOjpDb21tYW5kQnVm
ZmVyICpjb21tYW5kQnVmZmVyID0gbnVsbHB0cjsKLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5k
R3JhcGhFbmFibGVkKCkpCi0gICAgewotICAgICAgICBBTkdMRV9UUlkobUltYWdlLT5yZWNvcmRD
b21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmdldE91dHNpZGVSZW5kZXJQYXNzQ29t
bWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwotICAgIH0KKyAgICBBTkdMRV9UUlkoY29udGV4
dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwog
ICAgIHJldHVybiBtSW1hZ2UtPmZsdXNoU3RhZ2VkVXBkYXRlcyhjb250ZXh0VmssIGdldE5hdGl2
ZUltYWdlTGV2ZWwoMCksIG1JbWFnZS0+Z2V0TGV2ZWxDb3VudCgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZXROYXRpdmVJbWFnZUxheWVyKDApLCBtSW1hZ2UtPmdl
dExheWVyQ291bnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZEJ1ZmZlcik7CkBAIC0xNTg1LDcgKzE1NTEsOCBAQCBhbmdsZTo6UmVzdWx0IFRleHR1cmVW
azo6aW5pdGlhbGl6ZUNvbnRlbnRzKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAogICAgIGNv
bnN0IHZrOjpGb3JtYXQgJmZvcm1hdCA9CiAgICAgICAgIHZrOjpHZXRJbXBsKGNvbnRleHQpLT5n
ZXRSZW5kZXJlcigpLT5nZXRGb3JtYXQoZGVzYy5mb3JtYXQuaW5mby0+c2l6ZWRJbnRlcm5hbEZv
cm1hdCk7CiAKLSAgICBtSW1hZ2UtPnN0YWdlU3VicmVzb3VyY2VSb2J1c3RDbGVhcihpbWFnZUlu
ZGV4LCBmb3JtYXQuaW50ZW5kZWRGb3JtYXQoKSk7CisgICAgbUltYWdlLT5zdGFnZVN1YnJlc291
cmNlUm9idXN0Q2xlYXIoaW1hZ2VJbmRleCwgZm9ybWF0KTsKKyAgICBvblN0YWdpbmdCdWZmZXJD
aGFuZ2UoKTsKIAogICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgZW5zdXJlIHRoZSBpbWFnZSBp
cyBpbml0aWFsaXplZCBiZWNhdXNlIHdlIG1pZ2h0IGJlIGNhbGxpbmcgc3ViSW1hZ2UKICAgICAv
LyBvbiBhIG5vbi1jb21wbGV0ZSBjdWJlIG1hcC4KQEAgLTE2MDQsNyArMTU3MSw3IEBAIGNvbnN0
IHZrOjpJbWFnZVZpZXcgJlRleHR1cmVWazo6Z2V0UmVhZEltYWdlVmlld0FuZFJlY29yZFVzZShD
b250ZXh0VmsgKmNvbnRleHRWCiB7CiAgICAgQVNTRVJUKG1JbWFnZS0+dmFsaWQoKSk7CiAKLSAg
ICBtSW1hZ2VWaWV3cy5vblJlc291cmNlQWNjZXNzKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNl
TGlzdCgpKTsKKyAgICBtSW1hZ2VWaWV3cy5yZXRhaW4oJmNvbnRleHRWay0+Z2V0UmVzb3VyY2VV
c2VMaXN0KCkpOwogCiAgICAgaWYgKG1TdGF0ZS5pc1N0ZW5jaWxNb2RlKCkgJiYgbUltYWdlVmll
d3MuaGFzU3RlbmNpbFJlYWRJbWFnZVZpZXcoKSkKICAgICB7CkBAIC0xNjE4LDcgKzE1ODUsNyBA
QCBjb25zdCB2azo6SW1hZ2VWaWV3ICZUZXh0dXJlVms6OmdldEZldGNoSW1hZ2VWaWV3QW5kUmVj
b3JkVXNlKENvbnRleHRWayAqY29udGV4dAogewogICAgIEFTU0VSVChtSW1hZ2UtPnZhbGlkKCkp
OwogCi0gICAgbUltYWdlVmlld3Mub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRSZXNv
dXJjZVVzZUxpc3QoKSk7CisgICAgbUltYWdlVmlld3MucmV0YWluKCZjb250ZXh0VmstPmdldFJl
c291cmNlVXNlTGlzdCgpKTsKIAogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGZl
dGNoIGZvciBkZXB0aC9zdGVuY2lsIGN1YmUgbWFwIHRleHR1cmVzLgogICAgIEFTU0VSVCghbUlt
YWdlVmlld3MuaGFzU3RlbmNpbFJlYWRJbWFnZVZpZXcoKSB8fCAhbUltYWdlVmlld3MuaGFzRmV0
Y2hJbWFnZVZpZXcoKSk7CkBAIC0xNjgwLDE2ICsxNjQ3LDE3IEBAIGFuZ2xlOjpSZXN1bHQgVGV4
dHVyZVZrOjppbml0SW1hZ2UoQ29udGV4dFZrICpjb250ZXh0VmssCiAKICAgICBBTkdMRV9UUlko
aW5pdEltYWdlVmlld3MoY29udGV4dFZrLCBmb3JtYXQsIHNpemVkLCBsZXZlbENvdW50LCBsYXll
ckNvdW50KSk7CiAKLSAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGFuIGVtdWxhdGVkIGNoYW5uZWws
IGFsd2F5cyBjbGVhciBpdC4gIFRoZXNlIGNoYW5uZWxzIHdpbGwgYmUgbWFza2VkIG91dCBpbgot
ICAgIC8vIGZ1dHVyZSB3cml0ZXMsIGFuZCBzaG91bGRuJ3QgY29udGFpbiB1bmluaXRpYWxpemVk
IHZhbHVlcy4KLSAgICBpZiAoZm9ybWF0Lmhhc0VtdWxhdGVkSW1hZ2VDaGFubmVscygpKQorICAg
IC8vIElmIHRoZSBpbWFnZSBoYXMgYW4gZW11bGF0ZWQgY2hhbm5lbCBvciByb2J1c3QgcmVzb3Vy
Y2UgaW5pdCBpcyBlbmFibGVkLCBhbHdheXMgY2xlYXIgaXQuCisgICAgLy8gVGhlc2UgY2hhbm5l
bHMgd2lsbCBiZSBtYXNrZWQgb3V0IGluIGZ1dHVyZSB3cml0ZXMsIGFuZCBzaG91bGRuJ3QgY29u
dGFpbiB1bmluaXRpYWxpemVkCisgICAgLy8gdmFsdWVzLgorICAgIGlmIChjb250ZXh0VmstPmdl
dFN0YXRlKCkuaXNSb2J1c3RSZXNvdXJjZUluaXRFbmFibGVkKCkgfHwgZm9ybWF0Lmhhc0VtdWxh
dGVkSW1hZ2VDaGFubmVscygpKQogICAgIHsKICAgICAgICAgdWludDMyX3QgbGV2ZWxDb3VudCA9
IG1JbWFnZS0+Z2V0TGV2ZWxDb3VudCgpOwogCiAgICAgICAgIGZvciAodWludDMyX3QgbGV2ZWwg
PSAwOyBsZXZlbCA8IGxldmVsQ291bnQ7ICsrbGV2ZWwpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFycmF5UmFuZ2Uo
bGV2ZWwsIDAsIGxheWVyQ291bnQpOwotICAgICAgICAgICAgbUltYWdlLT5zdGFnZVN1YnJlc291
cmNlRW11bGF0ZWRDbGVhcihpbmRleCwgZm9ybWF0LmludGVuZGVkRm9ybWF0KCkpOworICAgICAg
ICAgICAgbUltYWdlLT5zdGFnZVN1YnJlc291cmNlUm9idXN0Q2xlYXIoaW5kZXgsIGZvcm1hdCk7
CiAgICAgICAgICAgICBvblN0YWdpbmdCdWZmZXJDaGFuZ2UoKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTE3ODMsMjYgKzE3NTEsMzMgQEAgYW5nbGU6OlJlc3VsdCBUZXh0dXJlVms6OmdlbmVyYXRl
TWlwbWFwTGV2ZWxzV2l0aENQVShDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1heE1pcExldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzaXplX3Qgc291cmNlV2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzb3VyY2VIZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBzb3VyY2VEZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNvdXJjZVJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNl
RGVwdGhQaXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqc291cmNlRGF0YSkKIHsKLSAgICBzaXplX3QgcHJldmlvdXNMZXZl
bFdpZHRoICAgID0gc291cmNlV2lkdGg7Ci0gICAgc2l6ZV90IHByZXZpb3VzTGV2ZWxIZWlnaHQg
ICA9IHNvdXJjZUhlaWdodDsKLSAgICB1aW50OF90ICpwcmV2aW91c0xldmVsRGF0YSAgID0gc291
cmNlRGF0YTsKLSAgICBzaXplX3QgcHJldmlvdXNMZXZlbFJvd1BpdGNoID0gc291cmNlUm93UGl0
Y2g7CisgICAgc2l6ZV90IHByZXZpb3VzTGV2ZWxXaWR0aCAgICAgID0gc291cmNlV2lkdGg7Cisg
ICAgc2l6ZV90IHByZXZpb3VzTGV2ZWxIZWlnaHQgICAgID0gc291cmNlSGVpZ2h0OworICAgIHNp
emVfdCBwcmV2aW91c0xldmVsRGVwdGggICAgICA9IHNvdXJjZURlcHRoOworICAgIHVpbnQ4X3Qg
KnByZXZpb3VzTGV2ZWxEYXRhICAgICA9IHNvdXJjZURhdGE7CisgICAgc2l6ZV90IHByZXZpb3Vz
TGV2ZWxSb3dQaXRjaCAgID0gc291cmNlUm93UGl0Y2g7CisgICAgc2l6ZV90IHByZXZpb3VzTGV2
ZWxEZXB0aFBpdGNoID0gc291cmNlRGVwdGhQaXRjaDsKIAogICAgIGZvciAoR0x1aW50IGN1cnJl
bnRNaXBMZXZlbCA9IGZpcnN0TWlwTGV2ZWw7IGN1cnJlbnRNaXBMZXZlbCA8PSBtYXhNaXBMZXZl
bDsgY3VycmVudE1pcExldmVsKyspCiAgICAgewogICAgICAgICAvLyBDb21wdXRlIG5leHQgbGV2
ZWwgd2lkdGggYW5kIGhlaWdodC4KICAgICAgICAgc2l6ZV90IG1pcFdpZHRoICA9IHN0ZDo6bWF4
PHNpemVfdD4oMSwgcHJldmlvdXNMZXZlbFdpZHRoID4+IDEpOwogICAgICAgICBzaXplX3QgbWlw
SGVpZ2h0ID0gc3RkOjptYXg8c2l6ZV90PigxLCBwcmV2aW91c0xldmVsSGVpZ2h0ID4+IDEpOwor
ICAgICAgICBzaXplX3QgbWlwRGVwdGggID0gc3RkOjptYXg8c2l6ZV90PigxLCBwcmV2aW91c0xl
dmVsRGVwdGggPj4gMSk7CiAKICAgICAgICAgLy8gV2l0aCB0aGUgd2lkdGggYW5kIGhlaWdodCBv
ZiB0aGUgbmV4dCBtaXAsIHdlIGNhbiBhbGxvY2F0ZSB0aGUgbmV4dCBidWZmZXIgd2UgbmVlZC4K
LSAgICAgICAgdWludDhfdCAqZGVzdERhdGEgICA9IG51bGxwdHI7Ci0gICAgICAgIHNpemVfdCBk
ZXN0Um93UGl0Y2ggPSBtaXBXaWR0aCAqIHNvdXJjZUZvcm1hdC5waXhlbEJ5dGVzOworICAgICAg
ICB1aW50OF90ICpkZXN0RGF0YSAgICAgPSBudWxscHRyOworICAgICAgICBzaXplX3QgZGVzdFJv
d1BpdGNoICAgPSBtaXBXaWR0aCAqIHNvdXJjZUZvcm1hdC5waXhlbEJ5dGVzOworICAgICAgICBz
aXplX3QgZGVzdERlcHRoUGl0Y2ggPSBkZXN0Um93UGl0Y2ggKiBtaXBIZWlnaHQ7CiAKLSAgICAg
ICAgc2l6ZV90IG1pcEFsbG9jYXRpb25TaXplID0gZGVzdFJvd1BpdGNoICogbWlwSGVpZ2h0Owot
ICAgICAgICBnbDo6RXh0ZW50cyBtaXBMZXZlbEV4dGVudHMoc3RhdGljX2Nhc3Q8aW50PihtaXBX
aWR0aCksIHN0YXRpY19jYXN0PGludD4obWlwSGVpZ2h0KSwgMSk7CisgICAgICAgIHNpemVfdCBt
aXBBbGxvY2F0aW9uU2l6ZSA9IGRlc3REZXB0aFBpdGNoICogbWlwRGVwdGg7CisgICAgICAgIGds
OjpFeHRlbnRzIG1pcExldmVsRXh0ZW50cyhzdGF0aWNfY2FzdDxpbnQ+KG1pcFdpZHRoKSwgc3Rh
dGljX2Nhc3Q8aW50PihtaXBIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihtaXBEZXB0aCkpOwogCiAgICAgICAgIEFOR0xFX1RSWSht
SW1hZ2UtPnN0YWdlU3VicmVzb3VyY2VVcGRhdGVBbmRHZXREYXRhKAogICAgICAgICAgICAgY29u
dGV4dFZrLCBtaXBBbGxvY2F0aW9uU2l6ZSwKQEAgLTE4MTEsMTUgKzE3ODYsMTcgQEAgYW5nbGU6
OlJlc3VsdCBUZXh0dXJlVms6OmdlbmVyYXRlTWlwbWFwTGV2ZWxzV2l0aENQVShDb250ZXh0Vmsg
KmNvbnRleHRWaywKICAgICAgICAgb25TdGFnaW5nQnVmZmVyQ2hhbmdlKCk7CiAKICAgICAgICAg
Ly8gR2VuZXJhdGUgdGhlIG1pcG1hcCBpbnRvIHRoYXQgbmV3IGJ1ZmZlcgotICAgICAgICBzb3Vy
Y2VGb3JtYXQubWlwR2VuZXJhdGlvbkZ1bmN0aW9uKHByZXZpb3VzTGV2ZWxXaWR0aCwgcHJldmlv
dXNMZXZlbEhlaWdodCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmV2aW91c0xldmVsRGF0YSwgcHJldmlvdXNMZXZlbFJvd1BpdGNoLCAwLCBkZXN0RGF0
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Um93UGl0
Y2gsIDApOworICAgICAgICBzb3VyY2VGb3JtYXQubWlwR2VuZXJhdGlvbkZ1bmN0aW9uKAorICAg
ICAgICAgICAgcHJldmlvdXNMZXZlbFdpZHRoLCBwcmV2aW91c0xldmVsSGVpZ2h0LCBwcmV2aW91
c0xldmVsRGVwdGgsIHByZXZpb3VzTGV2ZWxEYXRhLAorICAgICAgICAgICAgcHJldmlvdXNMZXZl
bFJvd1BpdGNoLCBwcmV2aW91c0xldmVsRGVwdGhQaXRjaCwgZGVzdERhdGEsIGRlc3RSb3dQaXRj
aCwgZGVzdERlcHRoUGl0Y2gpOwogCiAgICAgICAgIC8vIFN3YXAgZm9yIHRoZSBuZXh0IGl0ZXJh
dGlvbgotICAgICAgICBwcmV2aW91c0xldmVsV2lkdGggICAgPSBtaXBXaWR0aDsKLSAgICAgICAg
cHJldmlvdXNMZXZlbEhlaWdodCAgID0gbWlwSGVpZ2h0OwotICAgICAgICBwcmV2aW91c0xldmVs
RGF0YSAgICAgPSBkZXN0RGF0YTsKLSAgICAgICAgcHJldmlvdXNMZXZlbFJvd1BpdGNoID0gZGVz
dFJvd1BpdGNoOworICAgICAgICBwcmV2aW91c0xldmVsV2lkdGggICAgICA9IG1pcFdpZHRoOwor
ICAgICAgICBwcmV2aW91c0xldmVsSGVpZ2h0ICAgICA9IG1pcEhlaWdodDsKKyAgICAgICAgcHJl
dmlvdXNMZXZlbERlcHRoICAgICAgPSBtaXBEZXB0aDsKKyAgICAgICAgcHJldmlvdXNMZXZlbERh
dGEgICAgICAgPSBkZXN0RGF0YTsKKyAgICAgICAgcHJldmlvdXNMZXZlbFJvd1BpdGNoICAgPSBk
ZXN0Um93UGl0Y2g7CisgICAgICAgIHByZXZpb3VzTGV2ZWxEZXB0aFBpdGNoID0gZGVzdERlcHRo
UGl0Y2g7CiAgICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9UZXh0dXJlVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgKaW5kZXggZGVjMmI5ZWNhNzExYzE0MDhhNzViNzg0
MTU5ODE1Y2IyZDhkYWZhZi4uMDcxYzJmNjRhMTg0ZTQwNzQ4NjgxOGQ0YTE3MjkxN2M5NDVkNzMx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9UZXh0dXJlVmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oCkBAIC0xMSw4ICsxMSw4IEBACiAj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9URVhUVVJFVktfSF8KIAogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0NvbW1hbmRHcmFwaC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJUYXJnZXRWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9SZXNvdXJjZVZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Nh
bXBsZXJWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJz
LmgiCiAKQEAgLTE3OSwxNSArMTc5LDEyIEBAIGNsYXNzIFRleHR1cmVWayA6IHB1YmxpYyBUZXh0
dXJlSW1wbAogICAgICAgICByZXR1cm4gKm1JbWFnZTsKICAgICB9CiAKLSAgICB2b2lkIG9uSW1h
Z2VWaWV3VXNlKHZrOjpSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCkKKyAgICB2b2lk
IHJldGFpbkltYWdlVmlld3Modms6OlJlc291cmNlVXNlTGlzdCAqcmVzb3VyY2VVc2VMaXN0KQog
ICAgIHsKLSAgICAgICAgbUltYWdlVmlld3Mub25SZXNvdXJjZUFjY2VzcyhyZXNvdXJjZVVzZUxp
c3QpOworICAgICAgICBtSW1hZ2VWaWV3cy5yZXRhaW4ocmVzb3VyY2VVc2VMaXN0KTsKICAgICB9
CiAKLSAgICB2b2lkIG9uU2FtcGxlclVzZSh2azo6UmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVz
ZUxpc3QpCi0gICAgewotICAgICAgICBtU2FtcGxlci5vblJlc291cmNlQWNjZXNzKHJlc291cmNl
VXNlTGlzdCk7Ci0gICAgfQorICAgIHZvaWQgcmV0YWluU2FtcGxlcih2azo6UmVzb3VyY2VVc2VM
aXN0ICpyZXNvdXJjZVVzZUxpc3QpIHsgbVNhbXBsZXIucmV0YWluKHJlc291cmNlVXNlTGlzdCk7
IH0KIAogICAgIHZvaWQgcmVsZWFzZU93bmVyc2hpcE9mSW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQpOwogCkBAIC0yMjksNiArMjI2LDggQEAgY2xhc3MgVGV4dHVyZVZrIDogcHVibGlj
IFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykgb3ZlcnJpZGU7CiAK
KyAgICBBTkdMRV9JTkxJTkUgYm9vbCBpc0JvdW5kQXNJbWFnZVRleHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtU3RhdGUuaXNCb3VuZEFzSW1hZ2VUZXh0dXJlKCk7IH0KKwogICBwcml2YXRlOgogICAg
IC8vIFRyYW5zZm9ybSBhbiBpbWFnZSBpbmRleCBmcm9tIHRoZSBmcm9udGVuZCBpbnRvIG9uZSB0
aGF0IGNhbiBiZSB1c2VkIG9uIHRoZSBiYWNraW5nCiAgICAgLy8gSW1hZ2VIZWxwZXIsIHRha2lu
ZyBpbnRvIGFjY291bnQgbWlwbWFwIG9yIGN1YmUgZmFjZSBvZmZzZXRzCkBAIC0yNzMsNyArMjcy
LDcgQEAgY2xhc3MgVGV4dHVyZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgYW5nbGU6OlJl
c3VsdCBjb3B5SW1hZ2VEYXRhVG9CdWZmZXJBbmRHZXREYXRhKENvbnRleHRWayAqY29udGV4dFZr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGxheWVyQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpCb3ggJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipvdXREYXRhUHRyKTsKIAogICAgIGFuZ2xlOjpSZXN1
bHQgY29weUJ1ZmZlckRhdGFUb0ltYWdlKENvbnRleHRWayAqY29udGV4dFZrLApAQCAtMjkxLDkg
KzI5MCwxMSBAQCBjbGFzcyBUZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbGF5ZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpcnN0TWlw
TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1heE1pcExldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBzb3VyY2VXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlSGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qgc291
cmNlV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc2l6ZV90IHNvdXJjZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNlRGVwdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNvdXJjZVJvd1Bp
dGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHNpemVfdCBzb3VyY2VEZXB0aFBpdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnNvdXJjZURhdGEpOwogCiAgICAgYW5nbGU6OlJlc3Vs
dCBjb3B5U3ViSW1hZ2VJbXBsKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9U
cmFuc2Zvcm1GZWVkYmFja1ZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5jcHAKaW5kZXggODA2NWUy
NmEwOThmMjZkZDY2NDhjMGRmMzBmZWNhNTM4OTRlMGI4ZC4uYTdhMTMwNzVhZTUwYzQ5MDI2MTU4
ZjEwMjI5YTM3MTA2YTYwOTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Ry
YW5zZm9ybUZlZWRiYWNrVmsuY3BwCkBAIC0xMSw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJsaWJB
TkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbHNsYW5nX3dyYXBwZXJfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0ZyYW1lYnVmZmVyVmsuaCIKQEAgLTUyLDkgKzUzLDcgQEAgYW5nbGU6OlJlc3VsdCBUcmFu
c2Zvcm1GZWVkYmFja1ZrOjpiZWdpbihjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgbVJlYmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyID0gdHJ1ZTsKICAgICB9CiAKLSAgICBv
blRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNvbnRleHQpOwotCi0gICAgcmV0dXJuIGFu
Z2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworICAgIHJldHVybiBvblRyYW5zZm9ybUZlZWRiYWNrU3Rh
dGVDaGFuZ2VkKGNvbnRleHRWayk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtRmVlZGJh
Y2tWazo6ZW5kKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQpAQCAtNjksMTEgKzY4LDEwIEBA
IGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtRmVlZGJhY2tWazo6ZW5kKGNvbnN0IGdsOjpDb250ZXh0
ICpjb250ZXh0KQogICAgICAgICB2azo6R2V0SW1wbCh0cmFuc2Zvcm1GZWVkYmFja1F1ZXJ5KS0+
b25UcmFuc2Zvcm1GZWVkYmFja0VuZChjb250ZXh0KTsKICAgICB9CiAKLSAgICB2azo6R2V0SW1w
bChjb250ZXh0KS0+b25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZCgpOwotCi0gICAgb25U
cmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZChjb250ZXh0KTsKKyAgICBDb250ZXh0VmsgKmNv
bnRleHRWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQpOworICAgIGNvbnRleHRWay0+b25UcmFuc2Zv
cm1GZWVkYmFja1N0YXRlQ2hhbmdlZCgpOwogCi0gICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNv
bnRpbnVlOworICAgIHJldHVybiBvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNvbnRl
eHRWayk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgVHJhbnNmb3JtRmVlZGJhY2tWazo6cGF1c2UoY29u
c3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCkBAIC04NCw5ICs4Miw5IEBAIGFuZ2xlOjpSZXN1bHQg
VHJhbnNmb3JtRmVlZGJhY2tWazo6cGF1c2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCiAK
ICAgICBpZiAoY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLnN1cHBvcnRzVHJhbnNmb3JtRmVlZGJh
Y2tFeHRlbnNpb24uZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gY3JlYXRl
IG5ldyBjb21tYW5kR3JhcGhOb2RlIHRvIHBlcmZvcm0gdHJhbnNmb3JtIGZlZWRiYWNrIHBhdXNl
L3Jlc3VtZQotICAgICAgICAvLyBiZWNhc3VlIHZrQ21kQmVnaW4vRW5kVHJhbnNmb3JtRmVlZGJh
Y2sgY2FuIGJlIHBsYWNlZCBvbmNlIHBlciBjb21tYW5kR3JhcGhOb2RlLgotICAgICAgICBvblRy
YW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNvbnRleHQpOworICAgICAgICAvLyBXZSBuZWVk
IHRvIGVuZCB0aGUgUmVuZGVyUGFzcyB0byBwZXJmb3JtIHRyYW5zZm9ybSBmZWVkYmFjayBwYXVz
ZS9yZXN1bWUKKyAgICAgICAgLy8gYmVjYXN1ZSB2a0NtZEJlZ2luL0VuZFRyYW5zZm9ybUZlZWRi
YWNrIGNhbiBiZSBwbGFjZWQgb25jZSBwZXIgUmVuZGVyUGFzcy4KKyAgICAgICAgQU5HTEVfVFJZ
KG9uVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZUNoYW5nZWQoY29udGV4dFZrKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMTAwLDkgKzk4LDkgQEAgYW5n
bGU6OlJlc3VsdCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpyZXN1bWUoY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQpCiAKICAgICBpZiAoY29udGV4dFZrLT5nZXRGZWF0dXJlcygpLnN1cHBvcnRzVHJh
bnNmb3JtRmVlZGJhY2tFeHRlbnNpb24uZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIC8vIFdlIG5l
ZWQgdG8gY3JlYXRlIG5ldyBjb21tYW5kR3JhcGhOb2RlIHRvIHBlcmZvcm0gdHJhbnNmb3JtIGZl
ZWRiYWNrIHBhdXNlL3Jlc3VtZQotICAgICAgICAvLyBiZWNhc3VlIHZrQ21kQmVnaW4vRW5kVHJh
bnNmb3JtRmVlZGJhY2sgY2FuIGJlIHBsYWNlZCBvbmNlIHBlciBjb21tYW5kR3JhcGhOb2RlLgot
ICAgICAgICBvblRyYW5zZm9ybUZlZWRiYWNrU3RhdGVDaGFuZ2VkKGNvbnRleHQpOworICAgICAg
ICAvLyBXZSBuZWVkIHRvIGVuZCB0aGUgUmVuZGVyUGFzcyB0byBwZXJmb3JtIHRyYW5zZm9ybSBm
ZWVkYmFjayBwYXVzZS9yZXN1bWUKKyAgICAgICAgLy8gYmVjYXN1ZSB2a0NtZEJlZ2luL0VuZFRy
YW5zZm9ybUZlZWRiYWNrIGNhbiBiZSBwbGFjZWQgb25jZSBwZXIgUmVuZGVyUGFzcy4KKyAgICAg
ICAgQU5HTEVfVFJZKG9uVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZUNoYW5nZWQoY29udGV4dFZrKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwpAQCAtMTY0LDUx
ICsxNjIsMjAgQEAgYW5nbGU6OlJlc3VsdCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjpiaW5kSW5kZXhl
ZEJ1ZmZlcigKIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjp1cGRhdGVEZXNjcmlwdG9yU2V0
TGF5b3V0KAogICAgIENvbnRleHRWayAqY29udGV4dFZrLAotICAgIGNvbnN0IGdsOjpQcm9ncmFt
U3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICBTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAg
JnZzVmFyaWFibGVJbmZvTWFwLAorICAgIHNpemVfdCB4ZmJCdWZmZXJDb3VudCwKICAgICB2azo6
RGVzY3JpcHRvclNldExheW91dERlc2MgKmRlc2NTZXRMYXlvdXRPdXQpIGNvbnN0CiB7CiAgICAg
aWYgKCFjb250ZXh0VmstPmdldEZlYXR1cmVzKCkuZW11bGF0ZVRyYW5zZm9ybUZlZWRiYWNrLmVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNpemVfdCB4ZmJCdWZmZXJDb3VudCA9IHBy
b2dyYW1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNvdW50KCk7Ci0KICAgICBmb3Ig
KHVpbnQzMl90IGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCB4ZmJCdWZmZXJDb3VudDsg
KytidWZmZXJJbmRleCkKICAgICB7Ci0gICAgICAgIGRlc2NTZXRMYXlvdXRPdXQtPnVwZGF0ZShr
WGZiQmluZGluZ0luZGV4U3RhcnQgKyBidWZmZXJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZLX0RFU0NSSVBUT1JfVFlQRV9TVE9SQUdFX0JVRkZFUiwgMSwgVktfU0hB
REVSX1NUQUdFX1ZFUlRFWF9CSVQpOwotICAgIH0KLX0KLQotdm9pZCBUcmFuc2Zvcm1GZWVkYmFj
a1ZrOjphZGRGcmFtZWJ1ZmZlckRlcGVuZGVuY3koQ29udGV4dFZrICpjb250ZXh0VmssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKmZyYW1lYnVmZmVy
KSBjb25zdAotewotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRl
cjxnbDo6QnVmZmVyPj4gJnhmYkJ1ZmZlcnMgPQotICAgICAgICBtU3RhdGUuZ2V0SW5kZXhlZEJ1
ZmZlcnMoKTsKLSAgICBzaXplX3QgeGZiQnVmZmVyQ291bnQgPSBwcm9ncmFtU3RhdGUuZ2V0VHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgpOworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBi
dWZmZXJOYW1lICAgICAgICAgICAgPSBHZXRYZmJCdWZmZXJOYW1lKGJ1ZmZlckluZGV4KTsKKyAg
ICAgICAgY29uc3QgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvICZpbmZvID0gdnNWYXJpYWJs
ZUluZm9NYXBbYnVmZmVyTmFtZV07CiAKLSAgICBBU1NFUlQoeGZiQnVmZmVyQ291bnQgPiAwKTsK
LSAgICBBU1NFUlQocHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgp
ICE9IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMgfHwKLSAgICAgICAgICAgeGZiQnVmZmVyQ291bnQg
PT0gMSk7Ci0KLSAgICBWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSA9IFZLX0FDQ0VTU19U
UkFOU0ZPUk1fRkVFREJBQ0tfV1JJVEVfQklUX0VYVDsKLSAgICBpZiAoIWNvbnRleHRWay0+Z2V0
RmVhdHVyZXMoKS5zdXBwb3J0c1RyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uLmVuYWJsZWQpCi0g
ICAgewotICAgICAgICB3cml0ZUFjY2Vzc1R5cGUgPSBWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJ
VDsKLSAgICB9Ci0KLSAgICAvLyBTZXQgZnJhbWVidWZmZXIgZGVwZW5kZW50IHRvIHRoZSB0cmFu
c2Zvcm0gZmVlZGJhY2sgYnVmZmVycy4gIFRoaXMgaXMgZXNwZWNpYWxseSBkb25lCi0gICAgLy8g
c2VwYXJhdGVseSBmcm9tIHx1cGRhdGVEZXNjcmlwdG9yU2V0fCwgdG8gYXZvaWQgaW50cm9kdWNp
bmcgdW5uZWNlc3NhcnkgYnVmZmVyIGJhcnJpZXJzCi0gICAgLy8gZXZlcnkgdGltZSB0aGUgZGVz
Y3JpcHRvciBzZXQgaXMgdXBkYXRlZCAod2hpY2gsIGFzIHRoZSBzZXQgaXMgc2hhcmVkIHdpdGgg
ZGVmYXVsdCB1bmlmb3JtcywKLSAgICAvLyBjb3VsZCBnZXQgdXBkYXRlZCBmcmVxdWVudGx5KS4K
LSAgICBmb3IgKHNpemVfdCBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgeGZiQnVmZmVy
Q291bnQ7ICsrYnVmZmVySW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCBnbDo6T2Zmc2V0Qmlu
ZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJ1ZmZlckJpbmRpbmcgPSB4ZmJCdWZmZXJzW2J1ZmZl
ckluZGV4XTsKLSAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gYnVmZmVyQmluZGluZy5nZXQoKTsKLSAgICAgICAgQVNTRVJU
KGJ1ZmZlciAhPSBudWxscHRyKTsKLQotICAgICAgICB2azo6QnVmZmVySGVscGVyICZidWZmZXJI
ZWxwZXIgPSB2azo6R2V0SW1wbChidWZmZXIpLT5nZXRCdWZmZXIoKTsKLSAgICAgICAgYnVmZmVy
SGVscGVyLm9uV3JpdGUoY29udGV4dFZrLCBmcmFtZWJ1ZmZlciwgd3JpdGVBY2Nlc3NUeXBlKTsK
KyAgICAgICAgZGVzY1NldExheW91dE91dC0+dXBkYXRlKGluZm8uYmluZGluZywgVktfREVTQ1JJ
UFRPUl9UWVBFX1NUT1JBR0VfQlVGRkVSLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVktfU0hBREVSX1NUQUdFX1ZFUlRFWF9CSVQpOwogICAgIH0KIH0KIApAQCAtMjQzLDcg
KzIxMCw5IEBAIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWazo6dXBkYXRlRGVzY3JpcHRvclNldChD
b250ZXh0VmsgKmNvbnRleHRWaywKIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpPZmZzZXRC
aW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPj4gJnhmYkJ1ZmZlcnMgPQogICAgICAgICBtU3RhdGUu
Z2V0SW5kZXhlZEJ1ZmZlcnMoKTsKLSAgICBzaXplX3QgeGZiQnVmZmVyQ291bnQgPSBwcm9ncmFt
U3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudCgpOworICAgIGNvbnN0IGdsOjpQ
cm9ncmFtRXhlY3V0YWJsZSAqZXhlY3V0YWJsZSA9IGNvbnRleHRWay0+Z2V0U3RhdGUoKS5nZXRQ
cm9ncmFtRXhlY3V0YWJsZSgpOworICAgIEFTU0VSVChleGVjdXRhYmxlKTsKKyAgICBzaXplX3Qg
eGZiQnVmZmVyQ291bnQgPSBleGVjdXRhYmxlLT5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckNv
dW50KGNvbnRleHRWay0+Z2V0U3RhdGUoKSk7CiAKICAgICBBU1NFUlQoeGZiQnVmZmVyQ291bnQg
PiAwKTsKICAgICBBU1NFUlQocHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
TW9kZSgpICE9IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMgfHwKQEAgLTI3NSw3ICsyNDQsNiBAQCB2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6OnVwZGF0ZURlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpj
b250ZXh0VmssCiB9CiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tWazo6Z2V0QnVmZmVyT2Zmc2V0
cyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd0NhbGxGaXJzdFZl
cnRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
ICpvZmZzZXRzT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXRzU2l6ZSkgY29uc3QKQEAgLTI4Niw3ICsyNTQsOSBAQCB2b2lkIFRyYW5z
Zm9ybUZlZWRiYWNrVms6OmdldEJ1ZmZlck9mZnNldHMoQ29udGV4dFZrICpjb250ZXh0VmssCiAg
ICAgR0xzaXplaXB0ciB2ZXJ0aWNlc0RyYXduID0gbVN0YXRlLmdldFZlcnRpY2VzRHJhd24oKTsK
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTHNpemVpPiAmYnVmZmVyU3RyaWRlcyA9CiAgICAgICAg
IG1TdGF0ZS5nZXRCb3VuZFByb2dyYW0oKS0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tTdHJpZGVzKCk7
Ci0gICAgc2l6ZV90IHhmYkJ1ZmZlckNvdW50ID0gcHJvZ3JhbVN0YXRlLmdldFRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyQ291bnQoKTsKKyAgICBjb25zdCBnbDo6UHJvZ3JhbUV4ZWN1dGFibGUgKmV4
ZWN1dGFibGUgPSBjb250ZXh0VmstPmdldFN0YXRlKCkuZ2V0UHJvZ3JhbUV4ZWN1dGFibGUoKTsK
KyAgICBBU1NFUlQoZXhlY3V0YWJsZSk7CisgICAgc2l6ZV90IHhmYkJ1ZmZlckNvdW50ID0gZXhl
Y3V0YWJsZS0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJDb3VudChjb250ZXh0VmstPmdldFN0
YXRlKCkpOwogCiAgICAgQVNTRVJUKHhmYkJ1ZmZlckNvdW50ID4gMCk7CiAKQEAgLTMxMiw3ICsy
ODIsNyBAQCB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6OmdldEJ1ZmZlck9mZnNldHMoQ29udGV4
dFZrICpjb250ZXh0VmssCiAgICAgfQogfQogCi12b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6Om9u
VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZUNoYW5nZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQp
CithbmdsZTo6UmVzdWx0IFRyYW5zZm9ybUZlZWRiYWNrVms6Om9uVHJhbnNmb3JtRmVlZGJhY2tT
dGF0ZUNoYW5nZWQoQ29udGV4dFZrICpjb250ZXh0VmspCiB7CiAgICAgLy8gQ3VycmVudGx5LCB3
ZSBkb24ndCBoYW5kbGUgcmVzb3VyY2VzIHN3aXRjaGluZyBmcm9tIHJlYWQtb25seSB0byB3cml0
YWJsZSBhbmQgYmFjayBjb3JyZWN0bHkuCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdHJhbnNmb3Jt
IGZlZWRiYWNrLCB0aGUgYXR0YWNoZWQgYnVmZmVycyBjYW4gc3dpdGNoIGJldHdlZW4gYmVpbmcg
d3JpdHRlbiBieQpAQCAtMzIyLDE1ICsyOTIsOCBAQCB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrVms6
Om9uVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZUNoYW5nZWQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbgog
ICAgIC8vIFRPRE8oc3lvdXNzZWZpKTogZGV0ZWN0IGNoYW5nZXMgdG8gYnVmZmVyIHVzYWdlIChl
LmcuIGFzIHRyYW5zZm9ybSBmZWVkYmFjayBvdXRwdXQsIHZlcnRleAogICAgIC8vIG9yIGluZGV4
IGRhdGEgZXRjKSBpbiB0aGUgZnJvbnQgZW5kIGFuZCBub3RpZnkgdGhlIGJhY2tlbmQuICBBIG5l
dyBub2RlIHNob3VsZCBiZSBjcmVhdGVkCiAgICAgLy8gb25seSBvbiBzdWNoIGNoYW5nZXMuICBo
dHRwOi8vYW5nbGVidWcuY29tLzMyMDUKLSAgICBDb250ZXh0VmsgKmNvbnRleHRWayAgICAgICAg
ICAgICAgID0gdms6OkdldEltcGwoY29udGV4dCk7Ci0gICAgRnJhbWVidWZmZXJWayAqZnJhbWVi
dWZmZXJWayAgICAgICA9IHZrOjpHZXRJbXBsKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0Zy
YW1lYnVmZmVyKCkpOwotICAgIHZrOjpGcmFtZWJ1ZmZlckhlbHBlciAqZnJhbWVidWZmZXIgPSBm
cmFtZWJ1ZmZlclZrLT5nZXRGcmFtZWJ1ZmZlcigpOwotCi0gICAgZnJhbWVidWZmZXItPnVwZGF0
ZUN1cnJlbnRBY2Nlc3NOb2RlcygpOwotICAgIGlmIChmcmFtZWJ1ZmZlci0+aGFzU3RhcnRlZFJl
bmRlclBhc3MoKSkKLSAgICB7Ci0gICAgICAgIGZyYW1lYnVmZmVyLT5maW5pc2hDdXJyZW50Q29t
bWFuZHMoY29udGV4dFZrKTsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVu
ZGVyUGFzcygpKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKIHZv
aWQgVHJhbnNmb3JtRmVlZGJhY2tWazo6d3JpdGVEZXNjcmlwdG9yU2V0KENvbnRleHRWayAqY29u
dGV4dFZrLApAQCAtMzM4LDEyICszMDEsMTcgQEAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFja1ZrOjp3
cml0ZURlc2NyaXB0b3JTZXQoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Rlc2NyaXB0b3JCdWZmZXJJbmZvICpwQnVm
ZmVySW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZr
RGVzY3JpcHRvclNldCBkZXNjU2V0KSBjb25zdAogewotICAgIFZrRGV2aWNlIGRldmljZSA9IGNv
bnRleHRWay0+Z2V0RGV2aWNlKCk7CisgICAgVmtEZXZpY2UgZGV2aWNlICAgICAgICAgICAgICAg
ICAgID0gY29udGV4dFZrLT5nZXREZXZpY2UoKTsKKyAgICBQcm9ncmFtRXhlY3V0YWJsZVZrICpl
eGVjdXRhYmxlVmsgPSBjb250ZXh0VmstPmdldEV4ZWN1dGFibGUoKTsKKyAgICBTaGFkZXJNYXBJ
bnRlcmZhY2VWYXJpYWJsZUluZm9NYXAgdmFyaWFibGVJbmZvTWFwID0KKyAgICAgICAgZXhlY3V0
YWJsZVZrLT5nZXRTaGFkZXJJbnRlcmZhY2VWYXJpYWJsZUluZm9NYXAoKTsKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyBidWZmZXJOYW1lICAgICAgPSBHZXRYZmJCdWZmZXJOYW1lKDApOworICAgIFNo
YWRlckludGVyZmFjZVZhcmlhYmxlSW5mbyAmaW5mbyA9IHZhcmlhYmxlSW5mb01hcFtnbDo6U2hh
ZGVyVHlwZTo6VmVydGV4XVtidWZmZXJOYW1lXTsKIAogICAgIFZrV3JpdGVEZXNjcmlwdG9yU2V0
IHdyaXRlRGVzY3JpcHRvckluZm8gPSB7fTsKICAgICB3cml0ZURlc2NyaXB0b3JJbmZvLnNUeXBl
ICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfV1JJVEVfREVTQ1JJUFRPUl9TRVQ7
CiAgICAgd3JpdGVEZXNjcmlwdG9ySW5mby5kc3RTZXQgICAgICAgICAgICAgICA9IGRlc2NTZXQ7
Ci0gICAgd3JpdGVEZXNjcmlwdG9ySW5mby5kc3RCaW5kaW5nICAgICAgICAgICA9IGtYZmJCaW5k
aW5nSW5kZXhTdGFydDsKKyAgICB3cml0ZURlc2NyaXB0b3JJbmZvLmRzdEJpbmRpbmcgICAgICAg
ICAgID0gaW5mby5iaW5kaW5nOwogICAgIHdyaXRlRGVzY3JpcHRvckluZm8uZHN0QXJyYXlFbGVt
ZW50ICAgICAgPSAwOwogICAgIHdyaXRlRGVzY3JpcHRvckluZm8uZGVzY3JpcHRvckNvdW50ICAg
ICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oeGZiQnVmZmVyQ291bnQpOwogICAgIHdyaXRlRGVz
Y3JpcHRvckluZm8uZGVzY3JpcHRvclR5cGUgICAgICAgPSBWS19ERVNDUklQVE9SX1RZUEVfU1RP
UkFHRV9CVUZGRVI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJh
Y2tWay5oCmluZGV4IDBhYzE3N2JiOTZjYjM1YjVkOWY0YTZkMjhjOWJkN2YxYWFiNzM1MTYuLjMy
MTk4OTA3ZGJhZDk4YjQ4ZmQzMDY4NjNkZDQ1YjA0ZWFkYzJmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVHJhbnNmb3Jt
RmVlZGJhY2tWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5oCkBAIC0xMSw2ICsxMSw4IEBACiAj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9UUkFOU0ZPUk1GRUVEQkFDS1ZLX0hfCiAK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCIKKwor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsc2xhbmdfd3JhcHBlcl91dGlscy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJzLmgiCiAKIG5hbWVzcGFj
ZSBnbApAQCAtNTQsMTEgKzU2LDkgQEAgY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tWayA6IHB1Ymxp
YyBUcmFuc2Zvcm1GZWVkYmFja0ltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZykg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZURlc2NyaXB0b3JTZXRMYXlvdXQoQ29udGV4dFZr
ICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVySW50ZXJmYWNlVmFyaWFibGVJbmZvTWFwICZ2c1ZhcmlhYmxlSW5mb01h
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhmYkJ1ZmZlckNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RGVzY3JpcHRvclNl
dExheW91dERlc2MgKmRlc2NTZXRMYXlvdXRPdXQpIGNvbnN0OwotICAgIHZvaWQgYWRkRnJhbWVi
dWZmZXJEZXBlbmRlbmN5KENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6RnJhbWVidWZmZXJIZWxwZXIgKmZy
YW1lYnVmZmVyKSBjb25zdDsKICAgICB2b2lkIGluaXREZXNjcmlwdG9yU2V0KENvbnRleHRWayAq
Y29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhmYkJ1ZmZlckNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkJ1ZmZlckhlbHBlciAqZW1wdHlC
dWZmZXIsCkBAIC02Nyw3ICs2Nyw2IEBAIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrVmsgOiBwdWJs
aWMgVHJhbnNmb3JtRmVlZGJhY2tJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1TdGF0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmtEZXNjcmlwdG9yU2V0IGRlc2NTZXQpIGNvbnN0OwogICAgIHZvaWQgZ2V0QnVm
ZmVyT2Zmc2V0cyhDb250ZXh0VmsgKmNvbnRleHRWaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbVN0YXRlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBkcmF3Q2FsbEZpcnN0VmVydGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90ICpvZmZzZXRzT3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0c1NpemUpIGNvbnN0OwpAQCAtODcsNyArODYsNyBAQCBjbGFzcyBUcmFuc2Zv
cm1GZWVkYmFja1ZrIDogcHVibGljIFRyYW5zZm9ybUZlZWRiYWNrSW1wbAogICAgIH0KIAogICBw
cml2YXRlOgotICAgIHZvaWQgb25UcmFuc2Zvcm1GZWVkYmFja1N0YXRlQ2hhbmdlZChjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCk7CisgICAgYW5nbGU6OlJlc3VsdCBvblRyYW5zZm9ybUZlZWRi
YWNrU3RhdGVDaGFuZ2VkKENvbnRleHRWayAqY29udGV4dFZrKTsKICAgICB2b2lkIHdyaXRlRGVz
Y3JpcHRvclNldChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgeGZiQnVmZmVyQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmtEZXNjcmlwdG9yQnVmZmVySW5mbyAqcEJ1ZmZlckluZm8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1V0aWxzVmsuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9V
dGlsc1ZrLmNwcAppbmRleCBlYjQzNjk2NmNiMjEzM2UwNDQyN2M5ZWFiODBlMzRjNzA5YTBhYTBh
Li42YzRhYzBiYmJkMjc1NjRiNjBiMmQxNWYyMDFjOWJiNmFlYWZlZWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1V0aWxz
VmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vVXRpbHNWay5jcHAKQEAgLTE3LDE0ICsxNywxNSBAQAogbmFtZXNwYWNlIHJ4CiB7
CiAKLW5hbWVzcGFjZSBCdWZmZXJVdGlsc19jb21wICAgICAgICAgICAgICAgID0gdms6OkludGVy
bmFsU2hhZGVyOjpCdWZmZXJVdGlsc19jb21wOwotbmFtZXNwYWNlIENvbnZlcnRWZXJ0ZXhfY29t
cCAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxTaGFkZXI6OkNvbnZlcnRWZXJ0ZXhfY29tcDsK
LW5hbWVzcGFjZSBJbWFnZUNsZWFyX2ZyYWcgICAgICAgICAgICAgICAgID0gdms6OkludGVybmFs
U2hhZGVyOjpJbWFnZUNsZWFyX2ZyYWc7Ci1uYW1lc3BhY2UgSW1hZ2VDb3B5X2ZyYWcgICAgICAg
ICAgICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6SW1hZ2VDb3B5X2ZyYWc7Ci1uYW1lc3Bh
Y2UgQmxpdFJlc29sdmVfZnJhZyAgICAgICAgICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6
QmxpdFJlc29sdmVfZnJhZzsKLW5hbWVzcGFjZSBCbGl0UmVzb2x2ZVN0ZW5jaWxOb0V4cG9ydF9j
b21wID0gdms6OkludGVybmFsU2hhZGVyOjpCbGl0UmVzb2x2ZVN0ZW5jaWxOb0V4cG9ydF9jb21w
OwotbmFtZXNwYWNlIE92ZXJsYXlDdWxsX2NvbXAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJu
YWxTaGFkZXI6Ok92ZXJsYXlDdWxsX2NvbXA7Ci1uYW1lc3BhY2UgT3ZlcmxheURyYXdfY29tcCAg
ICAgICAgICAgICAgICA9IHZrOjpJbnRlcm5hbFNoYWRlcjo6T3ZlcmxheURyYXdfY29tcDsKK25h
bWVzcGFjZSBCdWZmZXJVdGlsc19jb21wICAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxT
aGFkZXI6OkJ1ZmZlclV0aWxzX2NvbXA7CituYW1lc3BhY2UgQ29udmVydFZlcnRleF9jb21wICAg
ICAgICAgICAgICAgID0gdms6OkludGVybmFsU2hhZGVyOjpDb252ZXJ0VmVydGV4X2NvbXA7Citu
YW1lc3BhY2UgSW1hZ2VDbGVhcl9mcmFnICAgICAgICAgICAgICAgICAgID0gdms6OkludGVybmFs
U2hhZGVyOjpJbWFnZUNsZWFyX2ZyYWc7CituYW1lc3BhY2UgSW1hZ2VDb3B5X2ZyYWcgICAgICAg
ICAgICAgICAgICAgID0gdms6OkludGVybmFsU2hhZGVyOjpJbWFnZUNvcHlfZnJhZzsKK25hbWVz
cGFjZSBCbGl0UmVzb2x2ZV9mcmFnICAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxTaGFk
ZXI6OkJsaXRSZXNvbHZlX2ZyYWc7CituYW1lc3BhY2UgQmxpdFJlc29sdmVTdGVuY2lsTm9FeHBv
cnRfY29tcCAgID0gdms6OkludGVybmFsU2hhZGVyOjpCbGl0UmVzb2x2ZVN0ZW5jaWxOb0V4cG9y
dF9jb21wOworbmFtZXNwYWNlIE92ZXJsYXlDdWxsX2NvbXAgICAgICAgICAgICAgICAgICA9IHZr
OjpJbnRlcm5hbFNoYWRlcjo6T3ZlcmxheUN1bGxfY29tcDsKK25hbWVzcGFjZSBPdmVybGF5RHJh
d19jb21wICAgICAgICAgICAgICAgICAgPSB2azo6SW50ZXJuYWxTaGFkZXI6Ok92ZXJsYXlEcmF3
X2NvbXA7CituYW1lc3BhY2UgQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wID0gdms6
OkludGVybmFsU2hhZGVyOjpDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXA7CiAKIG5h
bWVzcGFjZQogewpAQCAtMjk3LDYgKzI5OCwyMiBAQCB1aW50MzJfdCBHZXRCbGl0UmVzb2x2ZUZs
YWdzKGJvb2wgYmxpdENvbG9yLAogICAgIH0KIH0KIAordWludDMyX3QgR2V0Q29udmVydEluZGV4
SW5kaXJlY3RMaW5lTG9vcEZsYWcodWludDMyX3QgaW5kaWNlc0JpdHNXaWR0aCkKK3sKKyAgICBz
d2l0Y2ggKGluZGljZXNCaXRzV2lkdGgpCisgICAgeworICAgICAgICBjYXNlIDg6CisgICAgICAg
ICAgICByZXR1cm4gQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wOjprSXM4Qml0czsK
KyAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgIHJldHVybiBDb252ZXJ0SW5kZXhJbmRpcmVj
dExpbmVMb29wX2NvbXA6OmtJczE2Qml0czsKKyAgICAgICAgY2FzZSAzMjoKKyAgICAgICAgICAg
IHJldHVybiBDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXA6OmtJczMyQml0czsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKIHVpbnQzMl90IEdldEZvcm1hdERlZmF1bHRDaGFubmVsTWFz
ayhjb25zdCB2azo6Rm9ybWF0ICZmb3JtYXQpCiB7CiAgICAgdWludDMyX3QgbWFzayA9IDA7CkBA
IC03NzcsMTAgKzc5NCw5IEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y2xlYXJCdWZmZXIoQ29u
dGV4dFZrICpjb250ZXh0VmssCiAgICAgQU5HTEVfVFJZKGVuc3VyZUJ1ZmZlckNsZWFyUmVzb3Vy
Y2VzSW5pdGlhbGl6ZWQoY29udGV4dFZrKSk7CiAKICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29t
bWFuZEJ1ZmZlcjsKLSAgICBBTkdMRV9UUlkoZGVzdC0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZr
LCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgLy8gVGVsbCBkZXN0IGl0J3MgYmVpbmcgd3JpdHRl
biB0by4KLSAgICBkZXN0LT5vblNlbGZSZWFkV3JpdGUoY29udGV4dFZrLCBWS19BQ0NFU1NfU0hB
REVSX1dSSVRFX0JJVCk7CisgICAgLy8gVGVsbCB0aGUgY29udGV4dCBkZXN0IHRoYXQgd2UgYXJl
IHdyaXRpbmcgdG8gZGVzdC4KKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRl
KFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklULCBkZXN0KSk7CisgICAgQU5HTEVfVFJZKGNvbnRl
eHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsK
IAogICAgIGNvbnN0IHZrOjpGb3JtYXQgJmRlc3RGb3JtYXQgPSBkZXN0LT5nZXRWaWV3Rm9ybWF0
KCk7CiAKQEAgLTgyOSwxMCArODQ1LDkgQEAgYW5nbGU6OlJlc3VsdCBVdGlsc1ZrOjpjb252ZXJ0
SW5kZXhCdWZmZXIoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgQU5HTEVfVFJZKGVuc3VyZUNv
bnZlcnRJbmRleFJlc291cmNlc0luaXRpYWxpemVkKGNvbnRleHRWaykpOwogCiAgICAgdms6OkNv
bW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZKGRlc3QtPnJlY29yZENv
bW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIC8vIFRlbGwgc3JjIHdl
IGFyZSBnb2luZyB0byByZWFkIGZyb20gaXQgYW5kIGRlc3QgaXQncyBiZWluZyB3cml0dGVuIHRv
LgotICAgIHNyYy0+b25SZWFkQnlCdWZmZXIoY29udGV4dFZrLCBkZXN0LCBWS19BQ0NFU1NfU0hB
REVSX1JFQURfQklULCBWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCk7CisgICAgQU5HTEVfVFJZ
KGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIHNyYykp
OworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1NIQURF
Ul9XUklURV9CSVQsIGRlc3QpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQ
YXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgVmtEZXNjcmlw
dG9yU2V0IGRlc2NyaXB0b3JTZXQ7CiAgICAgdms6OlJlZkNvdW50ZWREZXNjcmlwdG9yUG9vbEJp
bmRpbmcgZGVzY3JpcHRvclBvb2xCaW5kaW5nOwpAQCAtODkyLDE3ICs5MDcsMTEgQEAgYW5nbGU6
OlJlc3VsdCBVdGlsc1ZrOjpjb252ZXJ0SW5kZXhJbmRpcmVjdEJ1ZmZlcihDb250ZXh0VmsgKmNv
bnRleHRWaywKICAgICBBTkdMRV9UUlkoZW5zdXJlQ29udmVydEluZGV4SW5kaXJlY3RSZXNvdXJj
ZXNJbml0aWFsaXplZChjb250ZXh0VmspKTsKIAogICAgIHZrOjpDb21tYW5kQnVmZmVyICpjb21t
YW5kQnVmZmVyOwotICAgIEFOR0xFX1RSWShkc3RJbmRleEJ1Zi0+cmVjb3JkQ29tbWFuZHMoY29u
dGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgLy8gVGVsbCBzcmMgd2UgYXJlIGdvaW5n
IHRvIHJlYWQgZnJvbSBpdCBhbmQgZGVzdCBpdCdzIGJlaW5nIHdyaXR0ZW4gdG8uCi0gICAgc3Jj
SW5kZXhCdWYtPm9uUmVhZEJ5QnVmZmVyKGNvbnRleHRWaywgZHN0SW5kZXhCdWYsIFZLX0FDQ0VT
U19TSEFERVJfUkVBRF9CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0FD
Q0VTU19TSEFERVJfV1JJVEVfQklUKTsKLSAgICBzcmNJbmRpcmVjdEJ1Zi0+b25SZWFkQnlCdWZm
ZXIoY29udGV4dFZrLCBkc3RJbmRleEJ1ZiwgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUNDRVNTX1NIQURFUl9XUklURV9C
SVQpOwotCi0gICAgQU5HTEVfVFJZKGRzdEluZGlyZWN0QnVmLT5yZWNvcmRDb21tYW5kcyhjb250
ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0gICAgc3JjSW5kaXJlY3RCdWYtPm9uUmVhZEJ5QnVm
ZmVyKGNvbnRleHRWaywgZHN0SW5kaXJlY3RCdWYsIFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0FDQ0VTU19TSEFERVJfV1JJ
VEVfQklUKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNT
X1NIQURFUl9SRUFEX0JJVCwgc3JjSW5kaXJlY3RCdWYpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4
dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVCwgc3JjSW5kZXhCdWYp
KTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKFZLX0FDQ0VTU19TSEFE
RVJfV1JJVEVfQklULCBkc3RJbmRpcmVjdEJ1ZikpOworICAgIEFOR0xFX1RSWShjb250ZXh0Vmst
Pm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQsIGRzdEluZGV4QnVmKSk7
CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZm
ZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAgIFZrRGVzY3JpcHRvclNldCBkZXNjcmlwdG9yU2V0
OwogICAgIHZrOjpSZWZDb3VudGVkRGVzY3JpcHRvclBvb2xCaW5kaW5nIGRlc2NyaXB0b3JQb29s
QmluZGluZzsKQEAgLTk2NiwxOCArOTc1LDExIEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y29u
dmVydExpbmVMb29wSW5kZXhJbmRpcmVjdEJ1ZmZlcigKICAgICBBTkdMRV9UUlkoZW5zdXJlQ29u
dmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcFJlc291cmNlc0luaXRpYWxpemVkKGNvbnRleHRWaykp
OwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZ
KGRzdEluZGV4QnVmZmVyLT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVy
KSk7Ci0KLSAgICAvLyBUZWxsIHNyYyB3ZSBhcmUgZ29pbmcgdG8gcmVhZCBmcm9tIGl0IGFuZCBk
ZXN0IGl0J3MgYmVpbmcgd3JpdHRlbiB0by4KLSAgICBzcmNJbmRleEJ1ZmZlci0+b25SZWFkQnlC
dWZmZXIoY29udGV4dFZrLCBkc3RJbmRleEJ1ZmZlciwgVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJ
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQUNDRVNTX1NIQURFUl9X
UklURV9CSVQpOwotICAgIHNyY0luZGlyZWN0QnVmZmVyLT5vblJlYWRCeUJ1ZmZlcihjb250ZXh0
VmssIGRzdEluZGV4QnVmZmVyLCBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCk7
Ci0KLSAgICBBTkdMRV9UUlkoZHN0SW5kaXJlY3RCdWZmZXItPnJlY29yZENvbW1hbmRzKGNvbnRl
eHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIHNyY0luZGlyZWN0QnVmZmVyLT5vblJlYWRC
eUJ1ZmZlcihjb250ZXh0VmssIGRzdEluZGlyZWN0QnVmZmVyLCBWS19BQ0NFU1NfU0hBREVSX1JF
QURfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19BQ0NFU1Nf
U0hBREVSX1dSSVRFX0JJVCk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFk
KFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIHNyY0luZGlyZWN0QnVmZmVyKSk7CisgICAgQU5H
TEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQs
IHNyY0luZGV4QnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJXcml0
ZShWS19BQ0NFU1NfU0hBREVSX1dSSVRFX0JJVCwgZHN0SW5kaXJlY3RCdWZmZXIpKTsKKyAgICBB
TkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKFZLX0FDQ0VTU19TSEFERVJfV1JJVEVf
QklULCBkc3RJbmRleEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRl
clBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBWa0Rlc2Ny
aXB0b3JTZXQgZGVzY3JpcHRvclNldDsKICAgICB2azo6UmVmQ291bnRlZERlc2NyaXB0b3JQb29s
QmluZGluZyBkZXNjcmlwdG9yUG9vbEJpbmRpbmc7CkBAIC0xMDA1LDExICsxMDA3LDcgQEAgYW5n
bGU6OlJlc3VsdCBVdGlsc1ZrOjpjb252ZXJ0TGluZUxvb3BJbmRleEluZGlyZWN0QnVmZmVyKAog
ICAgICAgICBwYXJhbXMuaW5kaXJlY3RCdWZmZXJPZmZzZXQgPj4gMiwgcGFyYW1zLmRzdEluZGly
ZWN0QnVmZmVyT2Zmc2V0ID4+IDIsCiAgICAgICAgIHBhcmFtcy5kc3RJbmRleEJ1ZmZlck9mZnNl
dCA+PiAyLCBjb250ZXh0VmstPmdldFN0YXRlKCkuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgp
fTsKIAotICAgIHVpbnQzMl90IGZsYWdzID0gMDsKLSAgICBpZiAocGFyYW1zLmlzMzJCaXQpCi0g
ICAgewotICAgICAgICBmbGFncyB8PSB2azo6SW50ZXJuYWxTaGFkZXI6OkNvbnZlcnRJbmRleElu
ZGlyZWN0TGluZUxvb3BfY29tcDo6a0lzMzJCaXQ7Ci0gICAgfQorICAgIHVpbnQzMl90IGZsYWdz
ID0gR2V0Q29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcEZsYWcocGFyYW1zLmluZGljZXNCaXRz
V2lkdGgpOwogCiAgICAgdms6OlJlZkNvdW50ZWQ8dms6OlNoYWRlckFuZFNlcmlhbD4gKnNoYWRl
ciA9IG51bGxwdHI7CiAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Z2V0U2hhZGVyTGlicmFyeSgp
LmdldENvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcChjb250ZXh0VmssIGZsYWdzLApA
QCAtMTAzNywxNiArMTAzNSwxMCBAQCBhbmdsZTo6UmVzdWx0IFV0aWxzVms6OmNvbnZlcnRMaW5l
TG9vcEFycmF5SW5kaXJlY3RCdWZmZXIoCiAgICAgQU5HTEVfVFJZKGVuc3VyZUNvbnZlcnRJbmRp
cmVjdExpbmVMb29wUmVzb3VyY2VzSW5pdGlhbGl6ZWQoY29udGV4dFZrKSk7CiAKICAgICB2azo6
Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKLSAgICBBTkdMRV9UUlkoZGVzdEluZGV4QnVm
ZmVyLT5yZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7Ci0KLSAgICAv
LyBUZWxsIHNyYyB3ZSBhcmUgZ29pbmcgdG8gcmVhZCBmcm9tIGl0IGFuZCBkZXN0IGl0J3MgYmVp
bmcgd3JpdHRlbiB0by4KLSAgICBzcmNJbmRpcmVjdEJ1ZmZlci0+b25SZWFkQnlCdWZmZXIoY29u
dGV4dFZrLCBkZXN0SW5kZXhCdWZmZXIsIFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0FDQ0VTU19TSEFERVJfV1JJVEVf
QklUKTsKLQotICAgIEFOR0xFX1RSWShkZXN0SW5kaXJlY3RCdWZmZXItPnJlY29yZENvbW1hbmRz
KGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIHNyY0luZGlyZWN0QnVmZmVyLT5v
blJlYWRCeUJ1ZmZlcihjb250ZXh0VmssIGRlc3RJbmRpcmVjdEJ1ZmZlciwgVktfQUNDRVNTX1NI
QURFUl9SRUFEX0JJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktf
QUNDRVNTX1NIQURFUl9XUklURV9CSVQpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVm
ZmVyUmVhZChWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULCBzcmNJbmRpcmVjdEJ1ZmZlcikpOwor
ICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1NIQURFUl9X
UklURV9CSVQsIGRlc3RJbmRpcmVjdEJ1ZmZlcikpOworICAgIEFOR0xFX1RSWShjb250ZXh0Vmst
Pm9uQnVmZmVyV3JpdGUoVktfQUNDRVNTX1NIQURFUl9XUklURV9CSVQsIGRlc3RJbmRleEJ1ZmZl
cikpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5k
QnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBWa0Rlc2NyaXB0b3JTZXQgZGVzY3JpcHRv
clNldDsKICAgICB2azo6UmVmQ291bnRlZERlc2NyaXB0b3JQb29sQmluZGluZyBkZXNjcmlwdG9y
UG9vbEJpbmRpbmc7CkBAIC0xMDk5LDEwICsxMDkxLDkgQEAgYW5nbGU6OlJlc3VsdCBVdGlsc1Zr
Ojpjb252ZXJ0VmVydGV4QnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIEFOR0xFX1RS
WShlbnN1cmVDb252ZXJ0VmVydGV4UmVzb3VyY2VzSW5pdGlhbGl6ZWQoY29udGV4dFZrKSk7CiAK
ICAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKLSAgICBBTkdMRV9UUlkoZGVz
dC0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmY29tbWFuZEJ1ZmZlcikpOwotCi0gICAgLy8g
VGVsbCBzcmMgd2UgYXJlIGdvaW5nIHRvIHJlYWQgZnJvbSBpdCBhbmQgZGVzdCBpdCdzIGJlaW5n
IHdyaXR0ZW4gdG8uCi0gICAgc3JjLT5vblJlYWRCeUJ1ZmZlcihjb250ZXh0VmssIGRlc3QsIFZL
X0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIFZLX0FDQ0VTU19TSEFERVJfV1JJVEVfQklUKTsKKyAg
ICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlclJlYWQoVktfQUNDRVNTX1NIQURFUl9SRUFE
X0JJVCwgc3JjKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJXcml0ZShWS19B
Q0NFU1NfU0hBREVSX1dSSVRFX0JJVCwgZGVzdCkpOworICAgIEFOR0xFX1RSWShjb250ZXh0Vmst
PmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAg
ICBDb252ZXJ0VmVydGV4U2hhZGVyUGFyYW1zIHNoYWRlclBhcmFtczsKICAgICBzaGFkZXJQYXJh
bXMuTnMgPSBwYXJhbXMuc3JjRm9ybWF0LT5jaGFubmVsQ291bnQ7CkBAIC0xMTg0LDYgKzExNzUs
MTIgQEAgYW5nbGU6OlJlc3VsdCBVdGlsc1ZrOjpzdGFydFJlbmRlclBhc3MoQ29udGV4dFZrICpj
b250ZXh0VmssCiAgICAgZnJhbWVidWZmZXJJbmZvLndpZHRoICAgICAgICAgICA9IHJlbmRlckFy
ZWEueCArIHJlbmRlckFyZWEud2lkdGg7CiAgICAgZnJhbWVidWZmZXJJbmZvLmhlaWdodCAgICAg
ICAgICA9IHJlbmRlckFyZWEueSArIHJlbmRlckFyZWEuaGVpZ2h0OwogICAgIGZyYW1lYnVmZmVy
SW5mby5sYXllcnMgICAgICAgICAgPSAxOworICAgIGlmIChjb250ZXh0VmstPmlzUm90YXRlZEFz
cGVjdFJhdGlvRm9yRHJhd0ZCTygpKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2UgaXMg
cm90YXRlZCA5MC8yNzAgZGVncmVlcy4gIFRoaXMgY2hhbmdlcyB0aGUgYXNwZWN0IHJhdGlvIG9m
CisgICAgICAgIC8vIHRoZSBzdXJmYWNlLiAgU3dhcCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0
aGUgZnJhbWVidWZmZXIuCisgICAgICAgIHN0ZDo6c3dhcChmcmFtZWJ1ZmZlckluZm8ud2lkdGgs
IGZyYW1lYnVmZmVySW5mby5oZWlnaHQpOworICAgIH0KIAogICAgIHZrOjpGcmFtZWJ1ZmZlciBm
cmFtZWJ1ZmZlcjsKICAgICBBTkdMRV9WS19UUlkoY29udGV4dFZrLCBmcmFtZWJ1ZmZlci5pbml0
KGNvbnRleHRWay0+Z2V0RGV2aWNlKCksIGZyYW1lYnVmZmVySW5mbykpOwpAQCAtMTE5NSw4ICsx
MTkyLDkgQEAgYW5nbGU6OlJlc3VsdCBVdGlsc1ZrOjpzdGFydFJlbmRlclBhc3MoQ29udGV4dFZr
ICpjb250ZXh0VmssCiAgICAgcmVuZGVyUGFzc0F0dGFjaG1lbnRPcHMuaW5pdFdpdGhMb2FkU3Rv
cmUoMCwgVktfSU1BR0VfTEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19JTUFHRV9MQVlPVVRfQ09M
T1JfQVRUQUNITUVOVF9PUFRJTUFMKTsKIAotICAgIEFOR0xFX1RSWShpbWFnZS0+YmVnaW5SZW5k
ZXJQYXNzKGNvbnRleHRWaywgZnJhbWVidWZmZXIsIHJlbmRlckFyZWEsIHJlbmRlclBhc3NEZXNj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclBhc3NBdHRhY2ht
ZW50T3BzLCBjbGVhclZhbHVlcywgY29tbWFuZEJ1ZmZlck91dCkpOworICAgIEFOR0xFX1RSWShj
b250ZXh0VmstPmZsdXNoQW5kQmVnaW5SZW5kZXJQYXNzKGZyYW1lYnVmZmVyLCByZW5kZXJBcmVh
LCByZW5kZXJQYXNzRGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZW5kZXJQYXNzQXR0YWNobWVudE9wcywgY2xlYXJWYWx1ZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlck91
dCkpOwogCiAgICAgY29udGV4dFZrLT5hZGRHYXJiYWdlKCZmcmFtZWJ1ZmZlcik7CiAKQEAgLTEy
MTIsMTEgKzEyMTAsNyBAQCBhbmdsZTo6UmVzdWx0IFV0aWxzVms6OmNsZWFyRnJhbWVidWZmZXIo
Q29udGV4dFZrICpjb250ZXh0VmssCiAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3NvcmVk
UmVuZGVyQXJlYSA9IHBhcmFtcy5jbGVhckFyZWE7CiAKICAgICB2azo6Q29tbWFuZEJ1ZmZlciAq
Y29tbWFuZEJ1ZmZlcjsKLSAgICBpZiAoIWZyYW1lYnVmZmVyLT5hcHBlbmRUb1N0YXJ0ZWRSZW5k
ZXJQYXNzKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3NvcmVkUmVuZGVyQXJlYSwgJmNv
bW1hbmRCdWZmZXIpKQotICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKGZyYW1lYnVmZmVyLT5zdGFy
dE5ld1JlbmRlclBhc3MoY29udGV4dFZrLCBzY2lzc29yZWRSZW5kZXJBcmVhLCAmY29tbWFuZEJ1
ZmZlcikpOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZnJhbWVidWZmZXItPnN0YXJ0TmV3UmVuZGVy
UGFzcyhjb250ZXh0VmssIHNjaXNzb3JlZFJlbmRlckFyZWEsICZjb21tYW5kQnVmZmVyKSk7CiAK
ICAgICBJbWFnZUNsZWFyU2hhZGVyUGFyYW1zIHNoYWRlclBhcmFtczsKICAgICBzaGFkZXJQYXJh
bXMuY2xlYXJWYWx1ZSA9IHBhcmFtcy5jb2xvckNsZWFyVmFsdWU7CkBAIC0xNDMyLDIzICsxNDI2
LDExIEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6YmxpdFJlc29sdmVJbXBsKENvbnRleHRWayAq
Y29udGV4dFZrLAogICAgIHBpcGVsaW5lRGVzYy5zZXRTY2lzc29yKGdsX3ZrOjpHZXRSZWN0KHBh
cmFtcy5ibGl0QXJlYSkpOwogCiAgICAgLy8gQ2hhbmdlIHNvdXJjZSBsYXlvdXQgb3V0c2lkZSBy
ZW5kZXIgcGFzcwotICAgIGlmIChzcmMtPmlzTGF5b3V0Q2hhbmdlTmVjZXNzYXJ5KHZrOjpJbWFn
ZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHkpKQotICAgIHsKLSAgICAgICAgdms6
OkNvbW1hbmRCdWZmZXIgKnNyY0xheW91dENoYW5nZTsKLSAgICAgICAgQU5HTEVfVFJZKHNyYy0+
cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmc3JjTGF5b3V0Q2hhbmdlKSk7Ci0gICAgICAgIHNy
Yy0+Y2hhbmdlTGF5b3V0KHNyYy0+Z2V0QXNwZWN0RmxhZ3MoKSwgdms6OkltYWdlTGF5b3V0OjpB
bGxHcmFwaGljc1NoYWRlcnNSZWFkT25seSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jj
TGF5b3V0Q2hhbmdlKTsKLSAgICB9CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25JbWFnZVJl
YWQoc3JjLT5nZXRBc3BlY3RGbGFncygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHksIHNyYykp
OwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgaWYgKCFmcmFt
ZWJ1ZmZlci0+YXBwZW5kVG9TdGFydGVkUmVuZGVyUGFzcygmY29udGV4dFZrLT5nZXRSZXNvdXJj
ZVVzZUxpc3QoKSwgcGFyYW1zLmJsaXRBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmNvbW1hbmRCdWZmZXIpKQotICAgIHsKLSAgICAgICAgQU5H
TEVfVFJZKGZyYW1lYnVmZmVyLT5zdGFydE5ld1JlbmRlclBhc3MoY29udGV4dFZrLCBwYXJhbXMu
YmxpdEFyZWEsICZjb21tYW5kQnVmZmVyKSk7Ci0gICAgfQotCi0gICAgLy8gU291cmNlJ3MgbGF5
b3V0IGNoYW5nZSBzaG91bGQgaGFwcGVuIGJlZm9yZSByZW5kZXJpbmcKLSAgICBzcmMtPmFkZFJl
YWREZXBlbmRlbmN5KGNvbnRleHRWaywgZnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVyKCkpOwor
ICAgIEFOR0xFX1RSWShmcmFtZWJ1ZmZlci0+c3RhcnROZXdSZW5kZXJQYXNzKGNvbnRleHRWaywg
cGFyYW1zLmJsaXRBcmVhLCAmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgVmtEZXNjcmlwdG9ySW1h
Z2VJbmZvIGltYWdlSW5mb3NbMl0gPSB7fTsKIApAQCAtMTU1Miw3ICsxNTM0LDcgQEAgYW5nbGU6
OlJlc3VsdCBVdGlsc1ZrOjpzdGVuY2lsQmxpdFJlc29sdmVOb1NoYWRlckV4cG9ydChDb250ZXh0
VmsgKmNvbnRleHRWaywKIAogICAgIEFOR0xFX1RSWSgKICAgICAgICAgYmxpdEJ1ZmZlci5nZXQo
KS5pbml0KGNvbnRleHRWaywgYmxpdEJ1ZmZlckluZm8sIFZLX01FTU9SWV9QUk9QRVJUWV9ERVZJ
Q0VfTE9DQUxfQklUKSk7Ci0gICAgYmxpdEJ1ZmZlci5nZXQoKS5vblJlc291cmNlQWNjZXNzKCZj
b250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKKyAgICBibGl0QnVmZmVyLmdldCgpLnJl
dGFpbigmY29udGV4dFZrLT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CiAKICAgICBCbGl0UmVzb2x2
ZVN0ZW5jaWxOb0V4cG9ydFNoYWRlclBhcmFtcyBzaGFkZXJQYXJhbXM7CiAgICAgaWYgKGlzUmVz
b2x2ZSkKQEAgLTE1ODMsMTkgKzE1NjUsMTcgQEAgYW5nbGU6OlJlc3VsdCBVdGlsc1ZrOjpzdGVu
Y2lsQmxpdFJlc29sdmVOb1NoYWRlckV4cG9ydChDb250ZXh0VmsgKmNvbnRleHRWaywKICAgICB1
aW50MzJfdCBmbGFncyA9IHNyYy0+Z2V0TGF5ZXJDb3VudCgpID4gMSA/IEJsaXRSZXNvbHZlU3Rl
bmNpbE5vRXhwb3J0X2NvbXA6OmtTcmNJc0FycmF5IDogMDsKICAgICBmbGFncyB8PSBpc1Jlc29s
dmUgPyBCbGl0UmVzb2x2ZV9mcmFnOjprSXNSZXNvbHZlIDogMDsKIAotICAgIC8vIENoYW5nZSBz
b3VyY2UgbGF5b3V0IHByaW9yIHRvIGNvbXB1dGF0aW9uLgotICAgIGlmIChzcmMtPmlzTGF5b3V0
Q2hhbmdlTmVjZXNzYXJ5KHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlclJlYWRPbmx5KSkK
LSAgICB7Ci0gICAgICAgIHZrOjpDb21tYW5kQnVmZmVyICpzcmNMYXlvdXRDaGFuZ2U7Ci0gICAg
ICAgIEFOR0xFX1RSWShzcmMtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJnNyY0xheW91dENo
YW5nZSkpOwotICAgICAgICBzcmMtPmNoYW5nZUxheW91dChzcmMtPmdldEFzcGVjdEZsYWdzKCks
IHZrOjpJbWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlclJlYWRPbmx5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBzcmNMYXlvdXRDaGFuZ2UpOwotICAgIH0KKyAgICBSZW5kZXJUYXJnZXRWayAq
ZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gZnJhbWVidWZmZXItPmdldERlcHRoU3RlbmNpbFJl
bmRlclRhcmdldCgpOworICAgIEFTU0VSVChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgIT0gbnVs
bHB0cik7CisgICAgdms6OkltYWdlSGVscGVyICpkZXB0aFN0ZW5jaWxJbWFnZSA9ICZkZXB0aFN0
ZW5jaWxSZW5kZXJUYXJnZXQtPmdldEltYWdlKCk7CiAKICAgICB2azo6Q29tbWFuZEJ1ZmZlciAq
Y29tbWFuZEJ1ZmZlcjsKLSAgICBBTkdMRV9UUlkoZnJhbWVidWZmZXItPmdldEZyYW1lYnVmZmVy
KCktPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLQotICAgIHNy
Yy0+YWRkUmVhZERlcGVuZGVuY3koY29udGV4dFZrLCBmcmFtZWJ1ZmZlci0+Z2V0RnJhbWVidWZm
ZXIoKSk7CisgICAgLy8gQ2hhbmdlIHNvdXJjZSBsYXlvdXQgcHJpb3IgdG8gY29tcHV0YXRpb24u
CisgICAgQU5HTEVfVFJZKAorICAgICAgICBjb250ZXh0VmstPm9uSW1hZ2VSZWFkKHNyYy0+Z2V0
QXNwZWN0RmxhZ3MoKSwgdms6OkltYWdlTGF5b3V0OjpDb21wdXRlU2hhZGVyUmVhZE9ubHksIHNy
YykpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShkZXB0aFN0ZW5jaWxJ
bWFnZS0+Z2V0QXNwZWN0RmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OkltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgZGVwdGhTdGVuY2lsSW1hZ2UpKTsK
KyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZl
cigmY29tbWFuZEJ1ZmZlcikpOwogCiAgICAgLy8gQmxpdC9yZXNvbHZlIHN0ZW5jaWwgaW50byB0
aGUgYnVmZmVyLgogICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyBpbWFnZUluZm8gPSB7fTsKQEAg
LTE2NTcsMTMgKzE2MzcsNiBAQCBhbmdsZTo6UmVzdWx0IFV0aWxzVms6OnN0ZW5jaWxCbGl0UmVz
b2x2ZU5vU2hhZGVyRXhwb3J0KENvbnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCBudWxscHRyKTsKIAogICAgIC8vIENvcHkgdGhlIHJlc3Vs
dGluZyBidWZmZXIgaW50byBkZXN0LgotICAgIFJlbmRlclRhcmdldFZrICpkZXB0aFN0ZW5jaWxS
ZW5kZXJUYXJnZXQgPSBmcmFtZWJ1ZmZlci0+Z2V0RGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCk7
Ci0gICAgQVNTRVJUKGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCAhPSBudWxscHRyKTsKLSAgICB2
azo6SW1hZ2VIZWxwZXIgKmRlcHRoU3RlbmNpbEltYWdlID0gJmRlcHRoU3RlbmNpbFJlbmRlclRh
cmdldC0+Z2V0SW1hZ2UoKTsKLQotICAgIGRlcHRoU3RlbmNpbEltYWdlLT5jaGFuZ2VMYXlvdXQo
ZGVwdGhTdGVuY2lsSW1hZ2UtPmdldEFzcGVjdEZsYWdzKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCBjb21tYW5kQnVm
ZmVyKTsKLQogICAgIFZrQnVmZmVySW1hZ2VDb3B5IHJlZ2lvbiAgICAgICAgICAgICAgID0ge307
CiAgICAgcmVnaW9uLmJ1ZmZlck9mZnNldCAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgIHJl
Z2lvbi5idWZmZXJSb3dMZW5ndGggICAgICAgICAgICAgICAgID0gYnVmZmVyUm93TGVuZ3RoSW5V
aW50cyAqIHNpemVvZih1aW50MzJfdCk7CkBAIC0xNzYxLDI4ICsxNzM0LDE1IEBAIGFuZ2xlOjpS
ZXN1bHQgVXRpbHNWazo6Y29weUltYWdlKENvbnRleHRWayAqY29udGV4dFZrLAogICAgIHBpcGVs
aW5lRGVzYy5zZXRTY2lzc29yKHNjaXNzb3IpOwogCiAgICAgLy8gQ2hhbmdlIHNvdXJjZSBsYXlv
dXQgb3V0c2lkZSByZW5kZXIgcGFzcwotICAgIGlmIChzcmMtPmlzTGF5b3V0Q2hhbmdlTmVjZXNz
YXJ5KHZrOjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHkpKQotICAgIHsK
LSAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKnNyY0xheW91dENoYW5nZTsKLSAgICAgICAgQU5H
TEVfVFJZKHNyYy0+cmVjb3JkQ29tbWFuZHMoY29udGV4dFZrLCAmc3JjTGF5b3V0Q2hhbmdlKSk7
Ci0gICAgICAgIHNyYy0+Y2hhbmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZr
OjpJbWFnZUxheW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHNyY0xheW91dENoYW5nZSk7Ci0gICAgfQotCi0gICAgLy8gQ2hhbmdlIGRl
c3RpbmF0aW9uIGxheW91dCBvdXRzaWRlIHJlbmRlciBwYXNzIGFzIHdlbGwKLSAgICB2azo6Q29t
bWFuZEJ1ZmZlciAqZGVzdExheW91dENoYW5nZTsKLSAgICBBTkdMRV9UUlkoZGVzdC0+cmVjb3Jk
Q29tbWFuZHMoY29udGV4dFZrLCAmZGVzdExheW91dENoYW5nZSkpOwotCi0gICAgZGVzdC0+Y2hh
bmdlTGF5b3V0KFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIHZrOjpJbWFnZUxheW91dDo6Q29s
b3JBdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0TGF5b3V0Q2hhbmdlKTsK
KyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlUmVhZChWS19JTUFHRV9BU1BFQ1RfQ09M
T1JfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJbWFnZUxh
eW91dDo6QWxsR3JhcGhpY3NTaGFkZXJzUmVhZE9ubHksIHNyYykpOworICAgIEFOR0xFX1RSWSgK
KyAgICAgICAgY29udGV4dFZrLT5vbkltYWdlV3JpdGUoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJ
VCwgdms6OkltYWdlTGF5b3V0OjpDb2xvckF0dGFjaG1lbnQsIGRlc3QpKTsKIAogICAgIHZrOjpD
b21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyOwogICAgIEFOR0xFX1RSWSgKICAgICAgICAgc3Rh
cnRSZW5kZXJQYXNzKGNvbnRleHRWaywgZGVzdCwgZGVzdFZpZXcsIHJlbmRlclBhc3NEZXNjLCBy
ZW5kZXJBcmVhLCAmY29tbWFuZEJ1ZmZlcikpOwogCi0gICAgLy8gU291cmNlJ3MgbGF5b3V0IGNo
YW5nZSBzaG91bGQgaGFwcGVuIGJlZm9yZSByZW5kZXJpbmcKLSAgICBzcmMtPmFkZFJlYWREZXBl
bmRlbmN5KGNvbnRleHRWaywgZGVzdCk7Ci0KICAgICBWa0Rlc2NyaXB0b3JJbWFnZUluZm8gaW1h
Z2VJbmZvID0ge307CiAgICAgaW1hZ2VJbmZvLmltYWdlVmlldyAgICAgICAgICAgICA9IHNyY1Zp
ZXctPmdldEhhbmRsZSgpOwogICAgIGltYWdlSW5mby5pbWFnZUxheW91dCAgICAgICAgICAgPSBz
cmMtPmdldEN1cnJlbnRMYXlvdXQoKTsKQEAgLTE4NDMsMTEgKzE4MDMsMTAgQEAgYW5nbGU6OlJl
c3VsdCBVdGlsc1ZrOjpjdWxsT3ZlcmxheVdpZGdldHMoQ29udGV4dFZrICpjb250ZXh0VmssCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzY3JpcHRvclNldCkpOwogCiAg
ICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZKGRlc3Qt
PnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLSAgICBkZXN0LT5j
aGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpD
b21wdXRlU2hhZGVyV3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIp
OwotCi0gICAgZW5hYmxlZFdpZGdldHNCdWZmZXItPm9uUmVhZChjb250ZXh0VmssIGRlc3QsIFZL
X0FDQ0VTU19TSEFERVJfUkVBRF9CSVQpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uQnVm
ZmVyUmVhZChWS19BQ0NFU1NfU0hBREVSX1JFQURfQklULCBlbmFibGVkV2lkZ2V0c0J1ZmZlcikp
OworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VXcml0ZShWS19JTUFHRV9BU1BFQ1Rf
Q09MT1JfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1h
Z2VMYXlvdXQ6OkNvbXB1dGVTaGFkZXJXcml0ZSwgZGVzdCkpOworICAgIEFOR0xFX1RSWShjb250
ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRDb21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7
CiAKICAgICBWa0Rlc2NyaXB0b3JJbWFnZUluZm8gaW1hZ2VJbmZvID0ge307CiAgICAgaW1hZ2VJ
bmZvLmltYWdlVmlldyAgICAgICAgICAgICA9IGRlc3RWaWV3LT5nZXRIYW5kbGUoKTsKQEAgLTE4
ODQsOSArMTg0Myw2IEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6Y3VsbE92ZXJsYXlXaWRnZXRz
KENvbnRleHRWayAqY29udGV4dFZrLAogICAgIGNvbW1hbmRCdWZmZXItPmRpc3BhdGNoKGRlc3Qt
PmdldEV4dGVudHMoKS53aWR0aCwgZGVzdC0+Z2V0RXh0ZW50cygpLmhlaWdodCwgMSk7CiAgICAg
ZGVzY3JpcHRvclBvb2xCaW5kaW5nLnJlc2V0KCk7CiAKLSAgICBkZXN0LT5jaGFuZ2VMYXlvdXQo
VktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5b3V0OjpDb21wdXRlU2hhZGVy
UmVhZE9ubHksCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOwotCiAgICAg
cmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCkBAIC0xOTE4LDE0ICsxODc0LDE2
IEBAIGFuZ2xlOjpSZXN1bHQgVXRpbHNWazo6ZHJhd092ZXJsYXkoQ29udGV4dFZrICpjb250ZXh0
VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzY3JpcHRvclNldCkp
OwogCiAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXI7Ci0gICAgQU5HTEVfVFJZ
KGRlc3QtPnJlY29yZENvbW1hbmRzKGNvbnRleHRWaywgJmNvbW1hbmRCdWZmZXIpKTsKLSAgICBk
ZXN0LT5jaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgdms6OkltYWdlTGF5
b3V0OjpDb21wdXRlU2hhZGVyV3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRC
dWZmZXIpOwotCi0gICAgY3VsbGVkV2lkZ2V0cy0+YWRkUmVhZERlcGVuZGVuY3koY29udGV4dFZr
LCBkZXN0KTsKLSAgICBmb250LT5hZGRSZWFkRGVwZW5kZW5jeShjb250ZXh0VmssIGRlc3QpOwot
ICAgIHRleHRXaWRnZXRzQnVmZmVyLT5vblJlYWQoY29udGV4dFZrLCBkZXN0LCBWS19BQ0NFU1Nf
U0hBREVSX1JFQURfQklUKTsKLSAgICBncmFwaFdpZGdldHNCdWZmZXItPm9uUmVhZChjb250ZXh0
VmssIGRlc3QsIFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQpOworICAgIEFOR0xFX1RSWShjb250
ZXh0VmstPm9uSW1hZ2VXcml0ZShWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2azo6SW1hZ2VMYXlvdXQ6OkNvbXB1dGVTaGFk
ZXJXcml0ZSwgZGVzdCkpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPm9uSW1hZ2VSZWFkKFZL
X0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdms6OkltYWdlTGF5b3V0OjpDb21wdXRlU2hhZGVyUmVhZE9ubHksIGN1bGxlZFdpZGdl
dHMpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlUmVhZChWS19JTUFHRV9BU1BF
Q1RfQ09MT1JfQklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpJ
bWFnZUxheW91dDo6Q29tcHV0ZVNoYWRlclJlYWRPbmx5LCBmb250KSk7CisgICAgQU5HTEVfVFJZ
KGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIHRleHRX
aWRnZXRzQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZL
X0FDQ0VTU19TSEFERVJfUkVBRF9CSVQsIGdyYXBoV2lkZ2V0c0J1ZmZlcikpOworCisgICAgQU5H
TEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1h
bmRCdWZmZXIpKTsKIAogICAgIFZrRGVzY3JpcHRvckltYWdlSW5mbyBpbWFnZUluZm9zWzNdID0g
e307CiAgICAgaW1hZ2VJbmZvc1swXS5pbWFnZVZpZXcgICAgICAgICAgICAgPSBkZXN0Vmlldy0+
Z2V0SGFuZGxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1V0aWxzVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVXRpbHNWay5oCmluZGV4IDRmYjcxM2M4OTcw
NTJkNDRmNzU1NmQ0Y2IzZjAxNGNmZTgwN2E5ODQuLmNmMjYzZDI3MTBlMDJmZjAyMjk4OGZmNjM2
MDgyMzQxNDdkMzU4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVXRpbHNWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVXRpbHNWay5oCkBAIC02Nyw3ICs2
Nyw3IEBAIGNsYXNzIFV0aWxzVmsgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgdWludDMy
X3QgaW5kaXJlY3RCdWZmZXJPZmZzZXQgICAgPSAwOwogICAgICAgICB1aW50MzJfdCBkc3RJbmRp
cmVjdEJ1ZmZlck9mZnNldCA9IDA7CiAgICAgICAgIHVpbnQzMl90IGRzdEluZGV4QnVmZmVyT2Zm
c2V0ICAgID0gMDsKLSAgICAgICAgdWludDMyX3QgaXMzMkJpdCAgICAgICAgICAgICAgICAgPSAw
OworICAgICAgICB1aW50MzJfdCBpbmRpY2VzQml0c1dpZHRoICAgICAgICA9IDA7CiAgICAgfTsK
IAogICAgIHN0cnVjdCBDb252ZXJ0TGluZUxvb3BBcnJheUluZGlyZWN0UGFyYW1ldGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9WZXJ0ZXhBcnJheVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5jcHAKaW5kZXggY2U3NTU5MGQzNjJj
ZWNhMzJiODU4NTg4ZDYzNzBhODY5MzdkY2RkYy4uYTRmY2IwYjYxNWViODY5MmU5OGY0MmEwOTFk
MWQzY2Y2MzA3NTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5Vmsu
Y3BwCkBAIC0xMywxMCArMTMsMTAgQEAKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9CdWZmZXJWay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9D
b21tYW5kR3JhcGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4
dFZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZXNvdXJjZVZrLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF91dGlscy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3RyYWNlLmgiCiAKQEAgLTI5NiwyMSArMjk2LDE0IEBAIGFuZ2xlOjpSZXN1bHQgVmVy
dGV4QXJyYXlWazo6Y29udmVydEluZGV4QnVmZmVyQ1BVKENvbnRleHRWayAqY29udGV4dFZrLAog
CiAgICAgbUR5bmFtaWNJbmRleERhdGEucmVsZWFzZUluRmxpZ2h0QnVmZmVycyhjb250ZXh0Vmsp
OwogCi0gICAgc2l6ZV90IGVsZW1lbnRTaXplID0gZ2w6OkdldERyYXdFbGVtZW50c1R5cGVTaXpl
KGluZGV4VHlwZSk7Ci0gICAgaWYgKGluZGV4VHlwZSA9PSBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6
VW5zaWduZWRCeXRlKQotICAgIHsKLSAgICAgICAgLy8gOC1iaXQgaW5kaWNlcyBhcmUgbm90IHN1
cHBvcnRlZCBieSBWdWxrYW4sIHNvIHRoZXkgYXJlIHByb21vdGVkIHRvCi0gICAgICAgIC8vIDE2
LWJpdCBpbmRpY2VzIGJlbG93Ci0gICAgICAgIGVsZW1lbnRTaXplID0gc2l6ZW9mKEdMdXNob3J0
KTsKLSAgICB9Ci0KKyAgICBzaXplX3QgZWxlbWVudFNpemUgID0gY29udGV4dFZrLT5nZXRWa0lu
ZGV4VHlwZVNpemUoaW5kZXhUeXBlKTsKICAgICBjb25zdCBzaXplX3QgYW1vdW50ID0gZWxlbWVu
dFNpemUgKiBpbmRleENvdW50OwogICAgIEdMdWJ5dGUgKmRzdCAgICAgICAgPSBudWxscHRyOwog
CiAgICAgQU5HTEVfVFJZKG1EeW5hbWljSW5kZXhEYXRhLmFsbG9jYXRlKGNvbnRleHRWaywgYW1v
dW50LCAmZHN0LCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbUN1cnJlbnRFbGVtZW50QXJyYXlCdWZmZXJPZmZzZXQsIG51bGxwdHIpKTsKICAgICBt
Q3VycmVudEVsZW1lbnRBcnJheUJ1ZmZlciA9IG1EeW5hbWljSW5kZXhEYXRhLmdldEN1cnJlbnRC
dWZmZXIoKTsKLSAgICBpZiAoaW5kZXhUeXBlID09IGdsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNp
Z25lZEJ5dGUpCisgICAgaWYgKGNvbnRleHRWay0+c2hvdWxkQ29udmVydFVpbnQ4VmtJbmRleFR5
cGUoaW5kZXhUeXBlKSkKICAgICB7CiAgICAgICAgIC8vIFVuc2lnbmVkIGJ5dGVzIGRvbid0IGhh
dmUgZGlyZWN0IHN1cHBvcnQgaW4gVnVsa2FuIHNvIHdlIGhhdmUgdG8gZXhwYW5kIHRoZQogICAg
ICAgICAvLyBtZW1vcnkgdG8gYSBHTHVzaG9ydC4KQEAgLTU5MCw3ICs1ODMsNyBAQCBhbmdsZTo6
UmVzdWx0IFZlcnRleEFycmF5Vms6OnN5bmNEaXJ0eUF0dHJpYihDb250ZXh0VmsgKmNvbnRleHRW
aywKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb252ZXJzaW9uQnVmZmVyICpjb252
ZXJzaW9uID0gYnVmZmVyVmstPmdldFZlcnRleENvbnZlcnNpb25CdWZmZXIoCiAgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLCBpbnRlbmRlZEZvcm1hdC5pZCwgYmluZGluZy5nZXRTdHJpZGUo
KSwKLSAgICAgICAgICAgICAgICAgICAgYmluZGluZy5nZXRPZmZzZXQoKSArIGF0dHJpYi5yZWxh
dGl2ZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcuZ2V0T2Zmc2V0KCkgKyBh
dHRyaWIucmVsYXRpdmVPZmZzZXQsICFiaW5kaW5nSXNBbGlnbmVkKTsKICAgICAgICAgICAgICAg
ICBpZiAoY29udmVyc2lvbi0+ZGlydHkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoYmluZGluZ0lzQWxpZ25lZCkKQEAgLTYzOSw4ICs2MzIsMTMgQEAgYW5nbGU6
OlJlc3VsdCBWZXJ0ZXhBcnJheVZrOjpzeW5jRGlydHlBdHRyaWIoQ29udGV4dFZrICpjb250ZXh0
VmssCiAgICAgICAgICAgICAgICAgICAgIHZrOjpCdWZmZXJIZWxwZXIgJmJ1ZmZlckhlbHBlciAg
ICAgICAgICA9IGJ1ZmZlclZrLT5nZXRCdWZmZXIoKTsKICAgICAgICAgICAgICAgICAgICAgbUN1
cnJlbnRBcnJheUJ1ZmZlcnNbYXR0cmliSW5kZXhdICAgICAgID0gJmJ1ZmZlckhlbHBlcjsKICAg
ICAgICAgICAgICAgICAgICAgbUN1cnJlbnRBcnJheUJ1ZmZlckhhbmRsZXNbYXR0cmliSW5kZXhd
ID0gYnVmZmVySGVscGVyLmdldEJ1ZmZlcigpLmdldEhhbmRsZSgpOwotICAgICAgICAgICAgICAg
ICAgICBtQ3VycmVudEFycmF5QnVmZmVyT2Zmc2V0c1thdHRyaWJJbmRleF0gPSBiaW5kaW5nLmdl
dE9mZnNldCgpOwotICAgICAgICAgICAgICAgICAgICBzdHJpZGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBiaW5kaW5nLmdldFN0cmlkZSgpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIFZ1bGthbiByZXF1aXJlcyB0aGUgb2Zmc2V0IGlzIHdpdGhpbiB0aGUgYnVmZmVyLiBX
ZSB1c2Ugcm9idXN0IGFjY2VzcworICAgICAgICAgICAgICAgICAgICAvLyBiZWhhdmlvdXIgdG8g
cmVzZXQgdGhlIG9mZnNldCBpZiBpdCBzdGFydHMgb3V0c2lkZSB0aGUgYnVmZmVyLgorICAgICAg
ICAgICAgICAgICAgICBtQ3VycmVudEFycmF5QnVmZmVyT2Zmc2V0c1thdHRyaWJJbmRleF0gPQor
ICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZy5nZXRPZmZzZXQoKSA8IGJ1ZmZlclZrLT5n
ZXRTaXplKCkgPyBiaW5kaW5nLmdldE9mZnNldCgpIDogMDsKKworICAgICAgICAgICAgICAgICAg
ICBzdHJpZGUgPSBiaW5kaW5nLmdldFN0cmlkZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvRmFzdE9wZW5HTFN0YXRlVHJhbnNpdGlv
bnMubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL2RvYy9GYXN0T3BlbkdMU3RhdGVUcmFuc2l0aW9ucy5tZAppbmRleCAwNjRhYTdjNWE3OTAy
NzgxODY4ZTdlOTQ4NDQ5MThjYmFjMGQ4ZWM3Li4yNTcyNTIwMzM2ZjZkY2MwNjExOGQwMmQ5ZTg1
NmJiZWI4NzQzNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9GYXN0T3BlbkdMU3RhdGVUcmFuc2l0aW9ucy5tZAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L2RvYy9GYXN0T3BlbkdMU3RhdGVUcmFuc2l0aW9ucy5tZApAQCAtMywxNSArMywxOSBAQAogVHlw
aWNhbCBPcGVuR0wgcHJvZ3JhbXMgaXNzdWUgYSBmZXcgc21hbGwgc3RhdGUgY2hhbmdlIGNvbW1h
bmRzIGJldHdlZW4gZHJhdyBjYWxsIGNvbW1hbmRzLiBXZSB3YW50CiB0aGUgdHlwaWNhbCBhcHAn
cyB1c2UgY2FzZSB0byBiZSBhcyBmYXN0IGFzIHBvc3NpYmxlIHNvIHRoaXMgbGVhZHMgdG8gdW5p
cXVlIHBlcmZvcm1hbmNlIGNoYWxsZW5nZXMuCiAKLVZ1bGthbiBpbiBxdWl0ZSBkaWZmZXJlbnQg
ZnJvbSBPcGVuR0wgYmVjYXVzZSBpdCByZXF1aXJlcyBhIHNlcGFyYXRlIGNvbXBpbGVkCitWdWxr
YW4gaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gT3BlbkdMIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBz
ZXBhcmF0ZSBjb21waWxlZAogW1ZrUGlwZWxpbmVdW1ZrUGlwZWxpbmVdIGZvciBlYWNoIHN0YXRl
IHZlY3Rvci4gQ29tcGlsaW5nIFZrUGlwZWxpbmVzIGlzIG11bHRpcGxlIG9yZGVycyBvZgogbWFn
bml0dWRlIHNsb3dlciB0aGFuIGVuYWJsaW5nIG9yIGRpc2FibGluZyBhbiBPcGVuR0wgcmVuZGVy
IHN0YXRlLiBUbyBzcGVlZCB0aGlzIHVwIHdlIHVzZSB0aHJlZQogbGV2ZWxzIG9mIGNhY2hpbmcg
d2hlbiB0cmFuc2l0aW9uaW5nIHN0YXRlcyBpbiB0aGUgVnVsa2FuIGJhY2stZW5kLgogCi1UaGUg
Zmlyc3QgbGV2ZWwgaXMgdGhlIGRyaXZlcidzIFtWa1BpcGVsaW5lQ2FjaGVdW1ZrUGlwZWxpbmVD
YWNoZV0uIFRoZSBkcml2ZXIKKyMjIEwzIENhY2hlCisKK1RoZSBvdXRlcm1vc3QgbGV2ZWwgaXMg
dGhlIGRyaXZlcidzIFtWa1BpcGVsaW5lQ2FjaGVdW1ZrUGlwZWxpbmVDYWNoZV0uIFRoZSBkcml2
ZXIKIGNhY2hlIHJlZHVjZXMgcGlwZWxpbmUgcmVjb21waWxhdGlvbiB0aW1lIHNpZ25pZmljYW50
bHkuIEJ1dCBldmVuIGNhY2hlZAogcGlwZWxpbmUgcmVjb21waWxhdGlvbnMgYXJlIG9yZGVycyBv
ZiBtYW5pdHVkZSBzbG93ZXIgdGhhbiBPcGVuR0wgc3RhdGUgY2hhbmdlcy4KIAorIyMgTDIgQ2Fj
aGUKKwogVGhlIHNlY29uZCBsZXZlbCBjYWNoZSBpcyBhbiBBTkdMRS1vd25lZCBoYXNoIG1hcCBm
cm9tIE9wZW5HTCBzdGF0ZSB2ZWN0b3JzIHRvIGNvbXBpbGVkIHBpcGVsaW5lcy4KIFNlZSBbR3Jh
cGhpY3NQaXBlbGluZUNhY2hlXVtHcmFwaGljc1BpcGVsaW5lQ2FjaGVdIGluIFt2a19jYWNoZV91
dGlscy5oXSguLi92a19jYWNoZV91dGlscy5oKS4gQU5HTEUncwogW0dyYXBoaWNzUGlwZWxpbmVE
ZXNjXVtHcmFwaGljc1BpcGVsaW5lRGVzY10gY2xhc3MgaXMgYSB0aWdodGx5IHBhY2tlZCAyNTYt
Ynl0ZSBkZXNjcmlwdGlvbiBvZiB0aGUKQEAgLTE5LDYgKzIzLDggQEAgY3VycmVudCBPcGVuR0wg
cmVuZGVyaW5nIHN0YXRlLiBXZSBhbHNvIHVzZSBhIFt4eEhhc2hdKGh0dHBzOi8vZ2l0aHViLmNv
bS9DeWFuNDkKIGZhc3Rlc3QgcG9zc2libGUgaGFzaCBjb21wdXRhdGlvbi4gVGhlIGhhc2ggbWFw
IHNwZWVkcyB1cCBzdGF0ZSBjaGFuZ2VzIGNvbnNpZGVyYWJseS4gQnV0IGl0IGlzCiBzdGlsbCBz
aWduaWZpY2FudGx5IHNsb3dlciB0aGFuIE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMuCiAKKyMjIEwx
IENhY2hlCisKIFRvIGdldCBiZXN0IHBlcmZvcm1hbmNlIHdlIHVzZSBhIHRyYW5zaXRpb24gdGFi
bGUgZnJvbSBlYWNoIE9wZW5HTCBzdGF0ZSB2ZWN0b3IgdG8gbmVpZ2hib3VyaW5nCiBzdGF0ZSB2
ZWN0b3JzLiBUaGUgdHJhbnNpdGlvbiB0YWJsZSBwb2ludHMgZnJvbSBHcmFwaGljc1BpcGVsaW5l
Q2FjaGUgZW50cmllcyBkaXJlY3RseSB0bwogbmVpZ2hib3VyaW5nIFZrUGlwZWxpbmUgb2JqZWN0
cy4gV2hlbiB0aGUgYXBwbGljYXRpb24gY2hhbmdlcyBzdGF0ZSB0aGUgc3RhdGUgY2hhbmdlIGJp
dHMgYXJlCkBAIC0zNSw2ICs0MSwxMSBAQCBhcHBsaWNhdGlvbnMgbWFwIGZyb20gb25lIHN0YXRl
IHRvIG1hbnkgdGhpcyB3aWxsIHNsb3cgZG93biB0aGUgdHJhbnNpdGlvbiB0aW1lLgogaW1wcm92
ZWQgaW4gdGhlIGZ1dHVyZSB1c2luZyBhIGZhc3RlciBsb29rIHVwLiBGb3IgaW5zdGFuY2Ugd2Ug
Y291bGQga2VlcCBhIHNvcnRlZCB0cmFuc2l0aW9uIHRhYmxlCiBvciB1c2UgYSBzbWFsbCBoYXNo
IG1hcCBmb3IgdHJhbnNpdGlvbnMuCiAKKyMjIEwwIENhY2hlCisKK1RoZSBjdXJyZW50IGFjdGl2
ZSBQU08gaXMgc3RvcmVkIGFzIGEgaGFuZGxlIGluIHRoZSBgQ29udGV4dFZrYCBmb3IgdXNlIGJl
dHdlZW4gZHJhd3Mgd2l0aCBubyBzdGF0ZQorY2hhbmdlLgorCiBbVmtQaXBlbGluZV06IGh0dHBz
Oi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3Z1bGthbi9zcGVjcy8xLjEtZXh0ZW5zaW9ucy9t
YW4vaHRtbC9Wa1BpcGVsaW5lLmh0bWwKIFtWa1BpcGVsaW5lQ2FjaGVdOiBodHRwczovL3d3dy5r
aHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4vc3BlY3MvMS4xLWV4dGVuc2lvbnMvbWFuL2h0bWwv
VmtQaXBlbGluZUNhY2hlLmh0bWwKIFtHcmFwaGljc1BpcGVsaW5lQ2FjaGVdOiBodHRwczovL2No
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUvKy8yMjVmMDhiZjg1YTM2OGY5MDUz
NjJjZGQxMzY2ZTQ3OTU2ODA0NTJjL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfY2Fj
aGVfdXRpbHMuaCM0OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZG9jL0Zvcm1hdFRhYmxlc0FuZEVtdWxhdGlvbi5tZCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZG9j
L0Zvcm1hdFRhYmxlc0FuZEVtdWxhdGlvbi5tZAppbmRleCAwNGNkYmQ4MjM5MGU0Yjk5NzFmOGZi
Yzc3NGU3YzhkZWViZjUzNzY0Li5mOGYzMzcwZDcwZTAyODRjODI3MjMzMTBmMzM5MjJkZTg4Mjcz
ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL2RvYy9Gb3JtYXRUYWJsZXNBbmRFbXVsYXRpb24ubWQKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvRm9ybWF0
VGFibGVzQW5kRW11bGF0aW9uLm1kCkBAIC0xNyw5ICsxNyw4IEBAIGlzIG5vdCBzdXBwb3J0ZWQu
CiAKICMjIFRoZSBWdWxrYW4gRm9ybWF0IFRhYmxlCiAKLU92ZXJyaWRlcyBhbmQgZmFsbGJhY2tz
IGFyZSBpbXBsZW1lbnRlZCBpbiBBTkdMRSdzIFtWdWxrYW4gZm9ybWF0Ci10YWJsZV1bLi4vdmtf
Zm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwXS4gVGhlIHRhYmxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5
Ci1bYGdlbl92a19mb3JtYXRfdGFibGUucHlgXSguLi9nZW5fdmtfZm9ybWF0X3RhYmxlLnB5KS4g
V2Ugc3RvcmUgdGhlIG1hcHBpbmcgZnJvbQorT3ZlcnJpZGVzIGFuZCBmYWxsYmFja3MgYXJlIGlt
cGxlbWVudGVkIGluIEFOR0xFJ3MgW1Z1bGthbiBmb3JtYXQgdGFibGVdWy4uL3ZrX2Zvcm1hdF90
YWJsZV9hdXRvZ2VuLmNwcF0uCitUaGUgdGFibGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgW2BnZW5f
dmtfZm9ybWF0X3RhYmxlLnB5YF0oLi4vZ2VuX3ZrX2Zvcm1hdF90YWJsZS5weSkuIFdlIHN0b3Jl
IHRoZSBtYXBwaW5nIGZyb20KIFtgYW5nbGU6OkZvcm1hdDo6SURgXSguLi8uLi9Gb3JtYXRJRF9h
dXRvZ2VuLmgpIHRvIFtWa0Zvcm1hdF1bVmtGb3JtYXRdIGluCiBbYHZrX2Zvcm1hdF9tYXAuanNv
bmBdKC4uL3ZrX2Zvcm1hdF9tYXAuanNvbikuIFRoZSBmb3JtYXQgbWFwIGFsc28gbGlzdHMgdGhl
IG92ZXJyaWRlcyBhbmQgZmFsbGJhY2tzLgogVG8gdXBkYXRlIHRoZSB0YWJsZXMgcGxlYXNlIG1v
ZGlmeSB0aGUgZm9ybWF0IG1hcCBKU09OIGFuZCB0aGVuIHJ1bgpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2MvU2hhZGVy
TW9kdWxlQ29tcGlsYXRpb24ubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9TaGFkZXJNb2R1bGVDb21waWxhdGlvbi5tZAppbmRleCA4
OTczMGIyM2NmMTBmY2M0MTdlMDkyMTExNjdjOGZjN2E1MTg2ZTg0Li4wZjMxNDZhMDdhMzdhMWIy
MGVjZjU4ZTIyODg5N2M3ZjBmYmZjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9TaGFkZXJNb2R1bGVDb21waWxh
dGlvbi5tZAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL2RvYy9TaGFkZXJNb2R1bGVDb21waWxhdGlvbi5tZApAQCAtMTAsMjUgKzEwLDMz
IEBAIHdpdGggc29tZSBhZGRpdGlvbmFsIHdvcmthcm91bmRzIGFuZCBlbXVsYXRpb24uIFdlIGVt
dWxhdGUgT3BlbkdMJ3MgZGlmZmVyZW50IGRlCiB5IGZsaXBwaW5nLCBkZWZhdWx0IHVuaWZvcm1z
LCBhbmQgT3BlbkdMCiBbbGluZSBzZWdtZW50IHJhc3Rlcml6YXRpb25dKE9wZW5HTExpbmVTZWdt
ZW50UmFzdGVyaXphdGlvbi5tZCkuIEZvciBtb3JlIGluZm8gc2VlCiBbVHJhbnNsYXRvclZ1bGth
bi5jcHBdW1RyYW5zbGF0b3JWdWxrYW4uY3BwXS4gQWZ0ZXIgaW5pdGlhbCBjb21waWxhdGlvbiB0
aGUgc2hhZGVycyBhcmUgbm90Ci1jb21wbGV0ZS4gVGhleSBhcmUgdGVtcGxhdGVkIHdpdGggbWFy
a2VycyB0aGF0IGFyZSBmaWxsZWQgaW4gbGF0ZXIgYXQgbGluayB0aW1lLgotCi0xLiAqKkxpbmst
VGltZSBUcmFuc2xhdGlvbioqOiBEdXJpbmcgYSBjYWxsIHRvIGBnbExpbmtQcm9ncmFtYCB0aGUg
VnVsa2FuIGJhY2stZW5kIGNhbiBrbm93IHRoZQotbmVjZXNzYXJ5IGxvY2F0aW9ucyBhbmQgcHJv
cGVydGllcyB0byB3cml0ZSB0byBjb25uZWN0IHRoZSBzaGFkZXIgc3RhZ2UgaW50ZXJmYWNlcy4g
V2UgZ2V0IHRoZQotY29tcGxldGVkIHNoYWRlciBzb3VyY2UgdXNpbmcgQU5HTEUncyBbR2xzbGFu
Z1dyYXBwZXJWa11bR2xzbGFuZ1dyYXBwZXJWay5jcHBdIGhlbHBlciBjbGFzcy4gV2Ugc3RpbGwK
LWNhbm5vdCBnZW5lcmF0ZSBgVmtTaGFkZXJNb2R1bGVzYCBzaW5jZSBzb21lIEFOR0xFIGZlYXR1
cmVzIGxpa2UKLVtPcGVuR0wgbGluZSByYXN0ZXJpemF0aW9uXShPcGVuR0xMaW5lU2VnbWVudFJh
c3Rlcml6YXRpb24ubWQpIGVtdWxhdGlvbiBkZXBlbmQgb24gZHJhdy10aW1lCi1pbmZvcm1hdGlv
bi4KLQotMS4gKipEcmF3LXRpbWUgU1BJUi1WIEdlbmVyYXRpb24qKjogT25jZSB0aGUgYXBwbGlj
YXRpb24gcmVjb3JkcyBhIGRyYXcgY2FsbCB3ZSB1c2UgS2hyb25vcycKLVtnbHNsYW5nXVtnbHNs
YW5nXSB0byBjb252ZXJ0IHRoZSBWdWxrYW4tY29tcGF0aWJsZSBHTFNMIGludG8gU1BJUi1WLiAg
VGhlIFNQSVItViBpcyB0aGVuIGNvbXBpbGVkCi1pbnRvIGBWa1NoYWRlck1vZHVsZXNgLiBGb3Ig
ZGV0YWlscyBwbGVhc2Ugc2VlIFtHbHNsYW5nV3JhcHBlclZrLmNwcF1bR2xzbGFuZ1dyYXBwZXJW
ay5jcHBdLiBUaGUKLWBWa1NoYWRlck1vZHVsZXNgIGFyZSB0aGVuIHVzZWQgYnkgYFZrUGlwZWxp
bmVzYCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzcGVjaWFsaXphdGlvbiBjb25zdGFudAotdmFsdWVz
LiBOb3RlIHRoYXQgd2UgY3VycmVudGx5IGRvbid0IHVzZSBbU1BJUlYtVG9vbHNdW1NQSVJWLVRv
b2xzXSB0byBwZXJmb3JtIGFueSBTUElSLVYKLW9wdGltaXphdGlvbi4gVGhpcyBjb3VsZCBiZSBz
b21ldGhpbmcgdG8gaW1wcm92ZSBvbiBpbiB0aGUgZnV0dXJlLgorY29tcGxldGUuIFRoZSB0cmFu
c2xhdG9yIGluaXRpYWxseSBhc3NpZ25zIHJlc291cmNlcyBhbmQgaW4vb3V0IHZhcmlhYmxlcyBh
cmJpdHJhcnkgZGVzY3JpcHRvciBzZXQsCitiaW5kaW5nIGFuZCBsb2NhdGlvbiBpbmRpY2VzLiBU
aGUgY29ycmVjdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYXQgbGluayB0aW1lLiBGb3IgdGhlIHNh
a2Ugb2YKK3RyYW5zZm9ybSBmZWVkYmFjaywgc29tZSBtYXJrZXJzIGFyZSBsZWZ0IGluIHRoZSBz
aGFkZXIgZm9yIGxpbmstdGltZSBzdWJzdGl0dXRpb24uCisKKyAgVGhlIHRyYW5zbGF0b3Igb3V0
cHV0cyBzb21lIGZlYXR1cmUgY29kZSBjb25kaXRpb25hbCB0byBWdWxrYW4gc3BlY2lhbGl6YXRp
b24gY29uc3RhbnRzLCB3aGljaCBhcmUKK3Jlc29sdmVkIGF0IGRyYXctdGltZS4gRm9yIGV4YW1w
bGUsCitbQnJlc2VuaGFtIGxpbmUgcmFzdGVyaXphdGlvbl0oT3BlbkdMTGluZVNlZ21lbnRSYXN0
ZXJpemF0aW9uLm1kKSBlbXVsYXRpb24uCisKKzEuICoqTGluay1UaW1lIENvbXBpbGF0aW9uIGFu
ZCBUcmFuc2Zvcm1hdGlvbioqOiBEdXJpbmcgYSBjYWxsIHRvIGBnbExpbmtQcm9ncmFtYCB0aGUg
VnVsa2FuCitiYWNrLWVuZCBjYW4ga25vdyB0aGUgbmVjZXNzYXJ5IGxvY2F0aW9ucyBhbmQgcHJv
cGVydGllcyB0byB3cml0ZSB0byBjb25uZWN0IHRoZSBzaGFkZXIgc3RhZ2UKK2ludGVyZmFjZXMu
IFdlIGdldCB0aGUgY29tcGxldGVkIHNoYWRlciBzb3VyY2UgdXNpbmcgQU5HTEUncworW0dsc2xh
bmdXcmFwcGVyVmtdW0dsc2xhbmdXcmFwcGVyVmsuY3BwXSBoZWxwZXIgY2xhc3MuIEF0IHRoaXMg
dGltZSwgd2UgdXNlIEtocm9ub3MnCitbZ2xzbGFuZ11bZ2xzbGFuZ10gdG8gY29udmVydCB0aGUg
VnVsa2FuLWNvbXBhdGlibGUgR0xTTCBpbnRvIFNQSVItVi4gQSB0cmFuc2Zvcm1hdGlvbiBwYXNz
IGlzIGRvbmUKK29uIHRoZSBnZW5lcmF0ZWQgU1BJUi1WIHRvIHVwZGF0ZSB0aGUgYXJiaXRyYXJ5
IGRlc2NyaXB0b3Igc2V0LCBiaW5kaW5nIGFuZCBsb2NhdGlvbiBpbmRpY2VzIHNldCBpbgorc3Rl
cCAxLiBBZGRpdGlvbmFsbHksIGNvbXBvbmVudCBhbmQgdmFyaW91cyB0cmFuc2Zvcm0gZmVlZGJh
Y2sgZGVjb3JhdGlvbnMgYXJlIGFkZGVkIGFuZCBpbmFjdGl2ZQordmFyeWluZ3MgYXJlIHJlbW92
ZWQgZnJvbSB0aGUgc2hhZGVyIGludGVyZmFjZS4gV2UgY3VycmVudGx5IGRvbid0IGdlbmVyYXRl
IGBWa1NoYWRlck1vZHVsZXNgIGF0Cit0aGlzIHRpbWUsIGJ1dCB0aGF0IGNvdWxkIGJlIGEgZnV0
dXJlIG9wdGltaXphdGlvbi4KKworMS4gKipEcmF3LXRpbWUgUGlwZWxpbmUgQ3JlYXRpb24qKjog
T25jZSB0aGUgYXBwbGljYXRpb24gcmVjb3JkcyBhIGRyYXcgY2FsbCwgdGhlIFNQSVItViBpcyBj
b21waWxlZAoraW50byBgVmtTaGFkZXJNb2R1bGVgcy4gVGhlIGFwcHJvcHJpYXRlIHNwZWNpYWxp
emF0aW9uIGNvbnN0YW50cyBhcmUgdGhlbiByZXNvbHZlZCBhbmQgdGhlCitgVmtQaXBlbGluZWAg
b2JqZWN0IGlzIGNyZWF0ZWQuICBOb3RlIHRoYXQgd2UgY3VycmVudGx5IGRvbid0IHVzZSBbU1BJ
UlYtVG9vbHNdW1NQSVJWLVRvb2xzXSB0bworcGVyZm9ybSBhbnkgU1BJUi1WIG9wdGltaXphdGlv
bi4gVGhpcyBjb3VsZCBiZSBzb21ldGhpbmcgdG8gaW1wcm92ZSBvbiBpbiB0aGUgZnV0dXJlLgog
CiBTZWUgdGhlIGJlbG93IGRpYWdyYW0gZm9yIGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoZSBzaGFk
ZXIgdHJhbnNsYXRpb24gZmxvdzoKIAogPCEtLSBHZW5lcmF0ZWQgZnJvbSBodHRwczovL2JyYW1w
LmdpdGh1Yi5pby9qcy1zZXF1ZW5jZS1kaWFncmFtcy8KKyAgICAgTm90ZTogcmVtb3ZlIHdoaXRl
c3BhY2UgaW4gLSAtPiBhcnJvd3MuCiBwYXJ0aWNpcGFudCBBcHAKIHBhcnRpY2lwYW50ICJBTkdM
RSBGcm9udC1lbmQiCiBwYXJ0aWNpcGFudCAiVnVsa2FuIEJhY2stZW5kIgpAQCAtNDEsNyArNDks
NyBAQCBBcHAtPiJBTkdMRSBGcm9udC1lbmQiOiBnbENvbXBpbGVTaGFkZXIgKFZTKQogIlZ1bGth
biBCYWNrLWVuZCItPiJBTkdMRSBUcmFuc2xhdG9yIjogc2g6OkNvbXBpbGUKICJBTkdMRSBUcmFu
c2xhdG9yIi0gLT4iQU5HTEUgRnJvbnQtZW5kIjogcmV0dXJuIFZ1bGthbi1jb21wYXRpYmxlIEdM
U0wKIAotTm90ZSByaWdodCBvZiAiQU5HTEUgRnJvbnQtZW5kIjogU291cmNlIGlzIHRlbXBsYXRl
ZFxud2l0aCBtYXJrZXJzIHRvIGJlXG5maWxsZWQgYXQgbGluayB0aW1lLgorTm90ZSByaWdodCBv
ZiAiQU5HTEUgRnJvbnQtZW5kIjogU291cmNlIGlzIHVzaW5nIGJvZ3VzXG5WdWxrYW4gcXVhbGlm
aWVycyB0byBiZVxuY29ycmVjdGVkIGF0IGxpbmsgdGltZS4KIAogTm90ZSByaWdodCBvZiBBcHA6
IFNhbWUgZm9yIEZTLCBHUywgZXRjLi4uCiAKQEAgLTUyLDExICs2MCwxMyBAQCBBcHAtPiJBTkdM
RSBGcm9udC1lbmQiOiBnbExpbmtQcm9ncmFtCiAKIE5vdGUgcmlnaHQgb2YgIlZ1bGthbiBCYWNr
LWVuZCI6IFByb2dyYW1WayBpbml0cyB1bmlmb3JtcyxcbmxheW91dHMsIGFuZCBkZXNjcmlwdG9y
cy4KIAotIlZ1bGthbiBCYWNrLWVuZCItPkdsc2xhbmdXcmFwcGVyVms6IEdsc2xhbmdXcmFwcGVy
Vms6OkdldFNoYWRlclNvdXJjZQotR2xzbGFuZ1dyYXBwZXJWay0gLT4iVnVsa2FuIEJhY2stZW5k
IjogcmV0dXJuIGZpbGxlZC1pbiBzb3VyY2VzCisiVnVsa2FuIEJhY2stZW5kIi0+R2xzbGFuZ1dy
YXBwZXJWazogR2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyU3BpcnZDb2RlCitHbHNsYW5nV3Jh
cHBlclZrLT5HbHNsYW5nOiBHbHNsYW5nVG9TcHYKK0dsc2xhbmctIC0+R2xzbGFuZ1dyYXBwZXJW
azogUmV0dXJuIFNQSVItVgogCi1Ob3RlIHJpZ2h0IG9mICJWdWxrYW4gQmFjay1lbmQiOiBTb3Vy
Y2UgaXMgdGVtcGxhdGVkIHdpdGhcbmRlZmluZXMgdG8gYmUgcmVzb2x2ZWQgYXRcbmRyYXcgdGlt
ZS4KK05vdGUgcmlnaHQgb2YgR2xzbGFuZ1dyYXBwZXJWazogVHJhbnNmb3JtIFNQSVItVgogCitH
bHNsYW5nV3JhcHBlclZrLSAtPiJWdWxrYW4gQmFjay1lbmQiOiByZXR1cm4gdHJhbnNmb3JtZWQg
U1BJUi1WCiAiVnVsa2FuIEJhY2stZW5kIi0gLT4iQU5HTEUgRnJvbnQtZW5kIjogcmV0dXJuIHN1
Y2Nlc3MKIAogTm90ZSByaWdodCBvZiBBcHA6IEFwcCBleGVjdXRpb24gY29udGludWVzLi4uCkBA
IC02NCwxMCArNzQsNiBAQCBOb3RlIHJpZ2h0IG9mIEFwcDogQXBwIGV4ZWN1dGlvbiBjb250aW51
ZXMuLi4KIEFwcC0+IkFOR0xFIEZyb250LWVuZCI6IGdsRHJhd0FycmF5cyAoYW55IGRyYXcpCiAi
QU5HTEUgRnJvbnQtZW5kIi0+IlZ1bGthbiBCYWNrLWVuZCI6IENvbnRleHRWazo6ZHJhd0FycmF5
cwogCi0iVnVsa2FuIEJhY2stZW5kIi0+R2xzbGFuZ1dyYXBwZXJWazogR2xzbGFuZ1dyYXBwZXJW
azo6R2V0U2hhZGVyQ29kZSAod2l0aCBkZWZpbmVzKQotR2xzbGFuZ1dyYXBwZXJWay0+R2xzbGFu
ZzogR2xzbGFuZ1RvU3B2Ci1HbHNsYW5nLSAtPiJWdWxrYW4gQmFjay1lbmQiOiBSZXR1cm4gU1BJ
Ui1WCi0KIE5vdGUgcmlnaHQgb2YgIlZ1bGthbiBCYWNrLWVuZCI6IFdlIGluaXQgVmtTaGFkZXJN
b2R1bGVzXG5hbmQgVmtQaXBlbGluZSB0aGVuXG5yZWNvcmQgdGhlIGRyYXcuCiAKICJWdWxrYW4g
QmFjay1lbmQiLSAtPiJBTkdMRSBGcm9udC1lbmQiOiByZXR1cm4gc3VjY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9k
b2MvaW1nL1Z1bGthblNoYWRlclRyYW5zbGF0aW9uLnN2ZyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZG9jL2ltZy9WdWxrYW5TaGFkZXJUcmFu
c2xhdGlvbi5zdmcKaW5kZXggNzcyOTA4YjZhYTg3NGQ4ZGZkNzUzMTI1MDhiMTgxZWMzYTAyMTlh
Mi4uMTA3NTY1YmI1MTcwMTgyMjllOTBjMmM5NTQ0OGZhNDM0NDE4NTM1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9kb2Mv
aW1nL1Z1bGthblNoYWRlclRyYW5zbGF0aW9uLnN2ZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2RvYy9pbWcvVnVsa2FuU2hhZGVyVHJh
bnNsYXRpb24uc3ZnCkBAIC0xLDQgKzEsNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8v
RFREIFNWRyAyMDAxMDkwNC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkct
MjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHdpZHRoPSIxMTg1IiBoZWlnaHQ9IjEyMjkiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hsaW5rIj48c291cmNlPjwhW0NEQVRBW3BhcnRpY2lwYW50IEFwcAorPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NU
WVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAyMDAxMDkwNC8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+PHN2ZyB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMzcwIiBoZWlnaHQ9IjExNTIi
IHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c291cmNlPjwhW0NE
QVRBW3BhcnRpY2lwYW50IEFwcAogcGFydGljaXBhbnQgIkFOR0xFIEZyb250LWVuZCIKIHBhcnRp
Y2lwYW50ICJWdWxrYW4gQmFjay1lbmQiCiBwYXJ0aWNpcGFudCAiQU5HTEUgVHJhbnNsYXRvciIK
QEAgLTEwLDcgKzEwLDcgQEAgQXBwLT4iQU5HTEUgRnJvbnQtZW5kIjogZ2xDb21waWxlU2hhZGVy
IChWUykKICJWdWxrYW4gQmFjay1lbmQiLT4iQU5HTEUgVHJhbnNsYXRvciI6IHNoOjpDb21waWxl
CiAiQU5HTEUgVHJhbnNsYXRvciItLT4iQU5HTEUgRnJvbnQtZW5kIjogcmV0dXJuIFZ1bGthbi1j
b21wYXRpYmxlIEdMU0wKIAotTm90ZSByaWdodCBvZiAiQU5HTEUgRnJvbnQtZW5kIjogU291cmNl
IGlzIHRlbXBsYXRlZFxud2l0aCBtYXJrZXJzIHRvIGJlXG5maWxsZWQgYXQgbGluayB0aW1lLgor
Tm90ZSByaWdodCBvZiAiQU5HTEUgRnJvbnQtZW5kIjogU291cmNlIGlzIHVzaW5nIGJvZ3VzXG5W
dWxrYW4gcXVhbGlmaWVycyB0byBiZVxuY29ycmVjdGVkIGF0IGxpbmsgdGltZS4KIAogTm90ZSBy
aWdodCBvZiBBcHA6IFNhbWUgZm9yIEZTLCBHUywgZXRjLi4uCiAKQEAgLTIxLDExICsyMSwxMyBA
QCBBcHAtPiJBTkdMRSBGcm9udC1lbmQiOiBnbExpbmtQcm9ncmFtCiAKIE5vdGUgcmlnaHQgb2Yg
IlZ1bGthbiBCYWNrLWVuZCI6IFByb2dyYW1WayBpbml0cyB1bmlmb3JtcyxcbmxheW91dHMsIGFu
ZCBkZXNjcmlwdG9ycy4KIAotIlZ1bGthbiBCYWNrLWVuZCItPkdsc2xhbmdXcmFwcGVyVms6IEds
c2xhbmdXcmFwcGVyVms6OkdldFNoYWRlclNvdXJjZQotR2xzbGFuZ1dyYXBwZXJWay0tPiJWdWxr
YW4gQmFjay1lbmQiOiByZXR1cm4gZmlsbGVkLWluIHNvdXJjZXMKKyJWdWxrYW4gQmFjay1lbmQi
LT5HbHNsYW5nV3JhcHBlclZrOiBHbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJTcGlydkNvZGUK
K0dsc2xhbmdXcmFwcGVyVmstPkdsc2xhbmc6IEdsc2xhbmdUb1NwdgorR2xzbGFuZy0tPkdsc2xh
bmdXcmFwcGVyVms6IFJldHVybiBTUElSLVYKIAotTm90ZSByaWdodCBvZiAiVnVsa2FuIEJhY2st
ZW5kIjogU291cmNlIGlzIHRlbXBsYXRlZCB3aXRoXG5kZWZpbmVzIHRvIGJlIHJlc29sdmVkIGF0
XG5kcmF3IHRpbWUuCitOb3RlIHJpZ2h0IG9mIEdsc2xhbmdXcmFwcGVyVms6IFRyYW5zZm9ybSBT
UElSLVYKIAorR2xzbGFuZ1dyYXBwZXJWay0tPiJWdWxrYW4gQmFjay1lbmQiOiByZXR1cm4gdHJh
bnNmb3JtZWQgU1BJUi1WCiAiVnVsa2FuIEJhY2stZW5kIi0tPiJBTkdMRSBGcm9udC1lbmQiOiBy
ZXR1cm4gc3VjY2VzcwogCiBOb3RlIHJpZ2h0IG9mIEFwcDogQXBwIGV4ZWN1dGlvbiBjb250aW51
ZXMuLi4KQEAgLTMzLDExICszNSw3IEBAIE5vdGUgcmlnaHQgb2YgQXBwOiBBcHAgZXhlY3V0aW9u
IGNvbnRpbnVlcy4uLgogQXBwLT4iQU5HTEUgRnJvbnQtZW5kIjogZ2xEcmF3QXJyYXlzIChhbnkg
ZHJhdykKICJBTkdMRSBGcm9udC1lbmQiLT4iVnVsa2FuIEJhY2stZW5kIjogQ29udGV4dFZrOjpk
cmF3QXJyYXlzCiAKLSJWdWxrYW4gQmFjay1lbmQiLT5HbHNsYW5nV3JhcHBlclZrOiBHbHNsYW5n
V3JhcHBlclZrOjpHZXRTaGFkZXJDb2RlICh3aXRoIGRlZmluZXMpCi1HbHNsYW5nV3JhcHBlclZr
LT5HbHNsYW5nOiBHbHNsYW5nVG9TcHYKLUdsc2xhbmctLT4iVnVsa2FuIEJhY2stZW5kIjogUmV0
dXJuIFNQSVItViAKLQogTm90ZSByaWdodCBvZiAiVnVsa2FuIEJhY2stZW5kIjogV2UgaW5pdCBW
a1NoYWRlck1vZHVsZXNcbmFuZCBWa1BpcGVsaW5lIHRoZW5cbnJlY29yZCB0aGUgZHJhdy4KIAog
IlZ1bGthbiBCYWNrLWVuZCItLT4iQU5HTEUgRnJvbnQtZW5kIjogcmV0dXJuIHN1Y2Nlc3MKLV1d
Pjwvc291cmNlPjxkZXNjPjwvZGVzYz48ZGVmcz48bWFya2VyIHZpZXdCb3g9IjAgMCA1IDUiIG1h
cmtlcldpZHRoPSI1IiBtYXJrZXJIZWlnaHQ9IjUiIG9yaWVudD0iYXV0byIgcmVmWD0iNSIgcmVm
WT0iMi41IiBpZD0ibWFya2VyQXJyb3dCbG9jayI+PHBhdGggZD0iTSAwIDAgTCA1IDIuNSBMIDAg
NSB6Ij48L3BhdGg+PC9tYXJrZXI+PG1hcmtlciB2aWV3Qm94PSIwIDAgOS42IDE2IiBtYXJrZXJX
aWR0aD0iNCIgbWFya2VySGVpZ2h0PSIxNiIgb3JpZW50PSJhdXRvIiByZWZYPSI5LjYiIHJlZlk9
IjgiIGlkPSJtYXJrZXJBcnJvd09wZW4iPjxwYXRoIGQ9Ik0gOS42LDggMS45MiwxNiAwLDEzLjcg
NS43Niw4IDAsMi4yODYgMS45MiwwIDkuNiw4IHoiPjwvcGF0aD48L21hcmtlcj48L2RlZnM+PGcg
Y2xhc3M9InRpdGxlIj48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMCIgeT0iMjAiIHdp
ZHRoPSI0Ny41OTM3NSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZm
IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjIxIiB5PSI0NSIgc3R5
bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7
LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMjAiPkFwcDwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFz
cz0iYWN0b3IiPjxyZWN0IHg9IjEwIiB5PSIxMTcwLjM1OTM3NSIgd2lkdGg9IjQ3LjU5Mzc1IiBo
ZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Ut
d2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0iMjEiIHk9IjExOTUuMzU5Mzc1IiBzdHlsZT0iZm9u
dC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9z
cGFjZTsiPjx0c3BhbiB4PSIyMCI+QXBwPC90c3Bhbj48L3RleHQ+PC9nPjxsaW5lIHgxPSIzMy43
OTY4NzUiIHgyPSIzMy43OTY4NzUiIHkxPSI1OSIgeTI9IjExNzAuMzU5Mzc1IiBzdHJva2U9IiMw
MDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L2xpbmU+PGcgY2xh
c3M9ImFjdG9yIj48cmVjdCB4PSIyMzcuMDM5MDYyNSIgeT0iMjAiIHdpZHRoPSIxNTIuOTUzMTI1
IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJv
a2Utd2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0iMjQ4LjAzOTA2MjUiIHk9IjQ1IiBzdHlsZT0i
Zm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1v
bm9zcGFjZTsiPjx0c3BhbiB4PSIyNDcuMDM5MDYyNSI+QU5HTEUgRnJvbnQtZW5kPC90c3Bhbj48
L3RleHQ+PC9nPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iMjM3LjAzOTA2MjUiIHk9IjExNzAu
MzU5Mzc1IiB3aWR0aD0iMTUyLjk1MzEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBm
aWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjI0
OC4wMzkwNjI1IiB5PSIxMTk1LjM1OTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1m
YW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMjQ3
LjAzOTA2MjUiPkFOR0xFIEZyb250LWVuZDwvdHNwYW4+PC90ZXh0PjwvZz48bGluZSB4MT0iMzEz
LjUxNTYyNSIgeDI9IjMxMy41MTU2MjUiIHkxPSI1OSIgeTI9IjExNzAuMzU5Mzc1IiBzdHJva2U9
IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L2xpbmU+PGcg
Y2xhc3M9ImFjdG9yIj48cmVjdCB4PSI0NjIuOTc2NTYyNSIgeT0iMjAiIHdpZHRoPSIxNTIuOTUz
MTI1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJz
dHJva2Utd2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0iNDczLjk3NjU2MjUiIHk9IjQ1IiBzdHls
ZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDss
IG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI0NzIuOTc2NTYyNSI+VnVsa2FuIEJhY2stZW5kPC90c3Bh
bj48L3RleHQ+PC9nPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iNDYyLjk3NjU2MjUiIHk9IjEx
NzAuMzU5Mzc1IiB3aWR0aD0iMTUyLjk1MzEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAw
IiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9
IjQ3My45NzY1NjI1IiB5PSIxMTk1LjM1OTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9u
dC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0i
NDcyLjk3NjU2MjUiPlZ1bGthbiBCYWNrLWVuZDwvdHNwYW4+PC90ZXh0PjwvZz48bGluZSB4MT0i
NTM5LjQ1MzEyNSIgeDI9IjUzOS40NTMxMjUiIHkxPSI1OSIgeTI9IjExNzAuMzU5Mzc1IiBzdHJv
a2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7Ij48L2xpbmU+
PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSI3MjguMzk4NDM3NSIgeT0iMjAiIHdpZHRoPSIxNjEu
OTUzMTI1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxl
PSJzdHJva2Utd2lkdGg6IDI7Ij48L3JlY3Q+PHRleHQgeD0iNzM5LjM5ODQzNzUiIHk9IjQ1IiBz
dHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVv
dDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI3MzguMzk4NDM3NSI+QU5HTEUgVHJhbnNsYXRvcjwv
dHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjcyOC4zOTg0Mzc1IiB5
PSIxMTcwLjM1OTM3NSIgd2lkdGg9IjE2MS45NTMxMjUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAw
MDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4
dCB4PSI3MzkuMzk4NDM3NSIgeT0iMTE5NS4zNTkzNzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7
IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFu
IHg9IjczOC4zOTg0Mzc1Ij5BTkdMRSBUcmFuc2xhdG9yPC90c3Bhbj48L3RleHQ+PC9nPjxsaW5l
IHgxPSI4MDkuMzc1IiB4Mj0iODA5LjM3NSIgeTE9IjU5IiB5Mj0iMTE3MC4zNTkzNzUiIHN0cm9r
ZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvbGluZT48
ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjkxMC4zNTE1NjI1IiB5PSIyMCIgd2lkdGg9IjE0My4z
NTkzNzUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9
InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSI5MjAuMzUxNTYyNSIgeT0iNDUiIHN0
eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90
OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjkyMC4zNTE1NjI1Ij5HbHNsYW5nV3JhcHBlclZrPC90
c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iOTEwLjM1MTU2MjUiIHk9
IjExNzAuMzU5Mzc1IiB3aWR0aD0iMTQzLjM1OTM3NSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAw
MDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0
IHg9IjkyMC4zNTE1NjI1IiB5PSIxMTk1LjM1OTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsg
Zm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4g
eD0iOTIwLjM1MTU2MjUiPkdsc2xhbmdXcmFwcGVyVms8L3RzcGFuPjwvdGV4dD48L2c+PGxpbmUg
eDE9Ijk4Mi4wMzEyNSIgeDI9Ijk4Mi4wMzEyNSIgeTE9IjU5IiB5Mj0iMTE3MC4zNTkzNzUiIHN0
cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvbGlu
ZT48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjEwNzMuNzEwOTM3NSIgeT0iMjAiIHdpZHRoPSI4
MS43ODEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHls
ZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjEwODMuNzEwOTM3NSIgeT0iNDUi
IHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZx
dW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjEwODMuNzEwOTM3NSI+R2xzbGFuZzwvdHNwYW4+
PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjEwNzMuNzEwOTM3NSIgeT0iMTE3
MC4zNTkzNzUiIHdpZHRoPSI4MS43ODEyNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBm
aWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjEw
ODMuNzEwOTM3NSIgeT0iMTE5NS4zNTkzNzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQt
ZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjEw
ODMuNzEwOTM3NSI+R2xzbGFuZzwvdHNwYW4+PC90ZXh0PjwvZz48bGluZSB4MT0iMTExNC42MDE1
NjI1IiB4Mj0iMTExNC42MDE1NjI1IiB5MT0iNTkiIHkyPSIxMTcwLjM1OTM3NSIgc3Ryb2tlPSIj
MDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9saW5lPjxnIGNs
YXNzPSJzaWduYWwiPjx0ZXh0IHg9Ijg1LjY4NzUiIHk9Ijg5LjUiIHN0eWxlPSJmb250LXNpemU6
IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+
PHRzcGFuIHg9Ijg1LjY4NzUiPmdsQ29tcGlsZVNoYWRlciAoVlMpPC90c3Bhbj48L3RleHQ+PGxp
bmUgeDE9IjMzLjc5Njg3NSIgeDI9IjMxMy41MTU2MjUiIHkxPSI5OCIgeTI9Ijk4IiBzdHJva2U9
IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6
IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNsYXNz
PSJzaWduYWwiPjx0ZXh0IHg9IjM1MS42MDkzNzUiIHk9IjEyOC41IiBzdHlsZT0iZm9udC1zaXpl
OiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsi
Pjx0c3BhbiB4PSIzNTEuNjA5Mzc1Ij5TaGFkZXJWazo6Y29tcGlsZTwvdHNwYW4+PC90ZXh0Pjxs
aW5lIHgxPSIzMTMuNTE1NjI1IiB4Mj0iNTM5LjQ1MzEyNSIgeTE9IjEzNyIgeTI9IjEzNyIgc3Ry
b2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXIt
ZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBj
bGFzcz0ic2lnbmFsIj48dGV4dCB4PSI2MjUuOTI5Njg3NSIgeT0iMTY3LjUiIHN0eWxlPSJmb250
LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3Nw
YWNlOyI+PHRzcGFuIHg9IjYyNS45Mjk2ODc1Ij5zaDo6Q29tcGlsZTwvdHNwYW4+PC90ZXh0Pjxs
aW5lIHgxPSI1MzkuNDUzMTI1IiB4Mj0iODA5LjM3NSIgeTE9IjE3NiIgeTI9IjE3NiIgc3Ryb2tl
PSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5k
OiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFz
cz0ic2lnbmFsIj48dGV4dCB4PSI0MzMuODkwNjI1IiB5PSIyMDYuNSIgc3R5bGU9ImZvbnQtc2l6
ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7
Ij48dHNwYW4geD0iNDMzLjg5MDYyNSI+cmV0dXJuIFZ1bGthbi1jb21wYXRpYmxlIEdMU0w8L3Rz
cGFuPjwvdGV4dD48bGluZSB4MT0iODA5LjM3NSIgeDI9IjMxMy41MTU2MjUiIHkxPSIyMTUiIHky
PSIyMTUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDog
Mjsgc3Ryb2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJB
cnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9IjMz
My41MTU2MjUiIHk9IjIzNSIgd2lkdGg9IjE4NS45Mzc1IiBoZWlnaHQ9IjY3LjM5MDYyNSIgc3Ry
b2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9y
ZWN0Pjx0ZXh0IHg9IjMzOC41MTU2MjUiIHk9IjI1NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsg
Zm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4g
eD0iMzM4LjUxNTYyNSI+U291cmNlIGlzIHRlbXBsYXRlZDwvdHNwYW4+PHRzcGFuIGR5PSIxLjJl
bSIgeD0iMzM4LjUxNTYyNSI+d2l0aCBtYXJrZXJzIHRvIGJlPC90c3Bhbj48dHNwYW4gZHk9IjEu
MmVtIiB4PSIzMzguNTE1NjI1Ij5maWxsZWQgYXQgbGluayB0aW1lLjwvdHNwYW4+PC90ZXh0Pjwv
Zz48ZyBjbGFzcz0ibm90ZSI+PHJlY3QgeD0iNTMuNzk2ODc1IiB5PSIzMjIuMzkwNjI1IiB3aWR0
aD0iMjEyLjMyODEyNSIgaGVpZ2h0PSIyOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZm
IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjU4Ljc5Njg3NSIgeT0i
MzQyLjM5MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0Fu
ZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTguNzk2ODc1Ij5TYW1lIGZv
ciBGUywgR1MsIGV0Yy4uLjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4
dCB4PSI4MS4yODkwNjI1IiB5PSIzODEuODkwNjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBm
b250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4
PSI4MS4yODkwNjI1Ij5nbENyZWF0ZVByb2dyYW0gKC4uLik8L3RzcGFuPjwvdGV4dD48bGluZSB4
MT0iMzMuNzk2ODc1IiB4Mj0iMzEzLjUxNTYyNSIgeTE9IjM5MC4zOTA2MjUiIHkyPSIzOTAuMzkw
NjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7
IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7Ij48L2xpbmU+
PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9Ijg1LjY4NzUiIHk9IjQyMC44OTA2MjUiIHN0
eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90
OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9Ijg1LjY4NzUiPmdsQXR0YWNoU2hhZGVyICguLi4pPC90
c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjMzLjc5Njg3NSIgeDI9IjMxMy41MTU2MjUiIHkxPSI0Mjku
MzkwNjI1IiB5Mj0iNDI5LjM5MDYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHls
ZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93Qmxv
Y2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIxMTYuMzc1
IiB5PSI0NTkuODkwNjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1
b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMTYuMzc1Ij5nbExp
bmtQcm9ncmFtPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjMzLjc5Njg3NSIgeDI9IjMxMy41MTU2
MjUiIHkxPSI0NjguMzkwNjI1IiB5Mj0iNDY4LjM5MDYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxs
PSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21h
cmtlckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4
dCB4PSIzNjAuNDA2MjUiIHk9IjQ5OC44OTA2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZv
bnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9
IjM2MC40MDYyNSI+UHJvZ3JhbVZrOjpsaW5rPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjMxMy41
MTU2MjUiIHgyPSI1MzkuNDUzMTI1IiB5MT0iNTA3LjM5MDYyNSIgeTI9IjUwNy4zOTA2MjUiIHN0
cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2Vy
LWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcg
Y2xhc3M9Im5vdGUiPjxyZWN0IHg9IjU1OS40NTMxMjUiIHk9IjUyNy4zOTA2MjUiIHdpZHRoPSIy
MjkuOTIxODc1IiBoZWlnaHQ9IjQ4LjE4NzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZm
ZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSI1NjQuNDUzMTI1IiB5
PSI1NDcuMzkwNjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7
QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI1NjQuNDUzMTI1Ij5Qcm9n
cmFtVmsgaW5pdHMgdW5pZm9ybXMsPC90c3Bhbj48dHNwYW4gZHk9IjEuMmVtIiB4PSI1NjQuNDUz
MTI1Ij5sYXlvdXRzLCBhbmQgZGVzY3JpcHRvcnMuPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNz
PSJzaWduYWwiPjx0ZXh0IHg9IjYyNC4yODkwNjI1IiB5PSI2MDYuMDc4MTI1IiBzdHlsZT0iZm9u
dC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9z
cGFjZTsiPjx0c3BhbiB4PSI2MjQuMjg5MDYyNSI+R2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVy
U291cmNlPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjUzOS40NTMxMjUiIHgyPSI5ODIuMDMxMjUi
IHkxPSI2MTQuNTc4MTI1IiB5Mj0iNjE0LjU3ODEyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJu
b25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtl
ckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4
PSI2NTUuMTc5Njg3NSIgeT0iNjQ1LjA3ODEyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9u
dC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0i
NjU1LjE3OTY4NzUiPnJldHVybiBmaWxsZWQtaW4gc291cmNlczwvdHNwYW4+PC90ZXh0PjxsaW5l
IHgxPSI5ODIuMDMxMjUiIHgyPSI1MzkuNDUzMTI1IiB5MT0iNjUzLjU3ODEyNSIgeTI9IjY1My41
NzgxMjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDog
Mjsgc3Ryb2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJB
cnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9IjU1
OS40NTMxMjUiIHk9IjY3My41NzgxMjUiIHdpZHRoPSIyMjkuOTIxODc1IiBoZWlnaHQ9IjY3LjM5
MDYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRo
OiAyOyI+PC9yZWN0Pjx0ZXh0IHg9IjU2NC40NTMxMjUiIHk9IjY5My41NzgxMjUiIHN0eWxlPSJm
b250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9u
b3NwYWNlOyI+PHRzcGFuIHg9IjU2NC40NTMxMjUiPlNvdXJjZSBpcyB0ZW1wbGF0ZWQgd2l0aDwv
dHNwYW4+PHRzcGFuIGR5PSIxLjJlbSIgeD0iNTY0LjQ1MzEyNSI+ZGVmaW5lcyB0byBiZSByZXNv
bHZlZCBhdDwvdHNwYW4+PHRzcGFuIGR5PSIxLjJlbSIgeD0iNTY0LjQ1MzEyNSI+ZHJhdyB0aW1l
LjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIzNjQuOTA2MjUi
IHk9Ijc3MS40Njg3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90
O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMzY0LjkwNjI1Ij5yZXR1
cm4gc3VjY2VzczwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSI1MzkuNDUzMTI1IiB4Mj0iMzEzLjUx
NTYyNSIgeTE9Ijc3OS45Njg3NSIgeTI9Ijc3OS45Njg3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxs
PSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2LCAyOyBt
YXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwv
Zz48ZyBjbGFzcz0ibm90ZSI+PHJlY3QgeD0iNTMuNzk2ODc1IiB5PSI3OTkuOTY4NzUiIHdpZHRo
PSIyMzkuNzE4NzUiIGhlaWdodD0iMjkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIg
c3R5bGU9InN0cm9rZS13aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSI1OS43OTY4NzUiIHk9Ijgx
OS45Njg3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFs
ZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTguNzk2ODc1Ij5BcHAgZXhlY3V0
aW9uIGNvbnRpbnVlcy4uLjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4
dCB4PSI3Mi40OTIxODc1IiB5PSI4NTkuNDY4NzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZv
bnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9
IjcyLjQ5MjE4NzUiPmdsRHJhd0FycmF5cyAoYW55IGRyYXcpPC90c3Bhbj48L3RleHQ+PGxpbmUg
eDE9IjMzLjc5Njg3NSIgeDI9IjMxMy41MTU2MjUiIHkxPSI4NjcuOTY4NzUiIHkyPSI4NjcuOTY4
NzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsg
bWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48
L2c+PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iMzM0LjExNzE4NzUiIHk9Ijg5OC40Njg3NSIg
c3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1
b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMzM0LjExNzE4NzUiPkNvbnRleHRWazo6ZHJhd0Fy
cmF5czwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzMTMuNTE1NjI1IiB4Mj0iNTM5LjQ1MzEyNSIg
eTE9IjkwNi45Njg3NSIgeTI9IjkwNi45Njg3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25l
IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFy
cm93QmxvY2smcXVvdDspOyI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI1
NjcuMjEwOTM3NSIgeT0iOTM3LjQ2ODc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZh
bWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI1Njcu
MjEwOTM3NSI+R2xzbGFuZ1dyYXBwZXJWazo6R2V0U2hhZGVyQ29kZSAod2l0aCBkZWZpbmVzKTwv
dHNwYW4+PC90ZXh0PjxsaW5lIHgxPSI1MzkuNDUzMTI1IiB4Mj0iOTgyLjAzMTI1IiB5MT0iOTQ1
Ljk2ODc1IiB5Mj0iOTQ1Ljk2ODc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxl
PSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9j
ayZxdW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9Ijk5NS40MzM1
OTM3NSIgeT0iOTc2LjQ2ODc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTog
JnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI5OTUuNDMzNTkz
NzUiPkdsc2xhbmdUb1NwdjwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSI5ODIuMDMxMjUiIHgyPSIx
MTE0LjYwMTU2MjUiIHkxPSI5ODQuOTY4NzUiIHkyPSI5ODQuOTY4NzUiIHN0cm9rZT0iIzAwMDAw
MCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZx
dW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsiPjwvbGluZT48L2c+PGcgY2xhc3M9InNpZ25h
bCI+PHRleHQgeD0iNzY5LjI0NjA5Mzc1IiB5PSIxMDE1LjQ2ODc1IiBzdHlsZT0iZm9udC1zaXpl
OiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsi
Pjx0c3BhbiB4PSI3NjkuMjQ2MDkzNzUiPlJldHVybiBTUElSLVY8L3RzcGFuPjwvdGV4dD48bGlu
ZSB4MT0iMTExNC42MDE1NjI1IiB4Mj0iNTM5LjQ1MzEyNSIgeTE9IjEwMjMuOTY4NzUiIHkyPSIx
MDIzLjk2ODc1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lk
dGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDYsIDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFy
a2VyQXJyb3dCbG9jayZxdW90Oyk7Ij48L2xpbmU+PC9nPjxnIGNsYXNzPSJub3RlIj48cmVjdCB4
PSI1NTkuNDUzMTI1IiB5PSIxMDQzLjk2ODc1IiB3aWR0aD0iMjEyLjMyODEyNSIgaGVpZ2h0PSI2
Ny4zOTA2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13
aWR0aDogMjsiPjwvcmVjdD48dGV4dCB4PSI1NjQuNDUzMTI1IiB5PSIxMDYzLjk2ODc1IiBzdHls
ZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDss
IG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI1NjQuNDUzMTI1Ij5XZSBpbml0IFZrU2hhZGVyTW9kdWxl
czwvdHNwYW4+PHRzcGFuIGR5PSIxLjJlbSIgeD0iNTY0LjQ1MzEyNSI+YW5kIFZrUGlwZWxpbmUg
dGhlbjwvdHNwYW4+PHRzcGFuIGR5PSIxLjJlbSIgeD0iNTY0LjQ1MzEyNSI+cmVjb3JkIHRoZSBk
cmF3LjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIzNjQuOTA2
MjUiIHk9IjExNDEuODU5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTog
JnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIzNjQuOTA2MjUi
PnJldHVybiBzdWNjZXNzPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjUzOS40NTMxMjUiIHgyPSIz
MTMuNTE1NjI1IiB5MT0iMTE1MC4zNTkzNzUiIHkyPSIxMTUwLjM1OTM3NSIgc3Ryb2tlPSIjMDAw
MDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5
OiA2LCAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyI+
PC9saW5lPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitdXT48L3NvdXJj
ZT48ZGVzYz48L2Rlc2M+PGRlZnM+PG1hcmtlciB2aWV3Qm94PSIwIDAgNSA1IiBtYXJrZXJXaWR0
aD0iNSIgbWFya2VySGVpZ2h0PSI1IiBvcmllbnQ9ImF1dG8iIHJlZlg9IjUiIHJlZlk9IjIuNSIg
aWQ9Im1hcmtlckFycm93QmxvY2siPjxwYXRoIGQ9Ik0gMCAwIEwgNSAyLjUgTCAwIDUgeiI+PC9w
YXRoPjwvbWFya2VyPjxtYXJrZXIgdmlld0JveD0iMCAwIDkuNiAxNiIgbWFya2VyV2lkdGg9IjQi
IG1hcmtlckhlaWdodD0iMTYiIG9yaWVudD0iYXV0byIgcmVmWD0iOS42IiByZWZZPSI4IiBpZD0i
bWFya2VyQXJyb3dPcGVuIj48cGF0aCBkPSJNIDkuNiw4IDEuOTIsMTYgMCwxMy43IDUuNzYsOCAw
LDIuMjg2IDEuOTIsMCA5LjYsOCB6Ij48L3BhdGg+PC9tYXJrZXI+PC9kZWZzPjxnIGNsYXNzPSJ0
aXRsZSI+PC9nPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iMTAiIHk9IjIwIiB3aWR0aD0iNDgu
OTA2MjUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9
InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOiNlYWU3ZTE7IC0tZGFy
a3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZp
bGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9yZWN0Pjx0ZXh0IHg9IjIw
IiB5PSI0NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFs
ZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMjAiPkFwcDwvdHNwYW4+PC90ZXh0
PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjEwIiB5PSIxMDkzLjAxNTYyNSIgd2lkdGg9
IjQ4LjkwNjI1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0
eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAt
LWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGlu
ZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4
PSIyMCIgeT0iMTExOC4wMTU2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5
OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjIwIj5BcHA8
L3RzcGFuPjwvdGV4dD48L2c+PGxpbmUgeDE9IjM0LjQ1MzEyNSIgeDI9IjM0LjQ1MzEyNSIgeTE9
IjU5IiB5Mj0iMTA5My4wMTU2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9
InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3Jl
YWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9
IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjxnIGNsYXNzPSJhY3Rv
ciI+PHJlY3QgeD0iMjUyLjY1NjI1IiB5PSIyMCIgd2lkdGg9IjE2NC41IiBoZWlnaHQ9IjM5IiBz
dHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0t
ZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9r
ZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRl
ci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSIyNjIuNjU2MjUiIHk9IjQ1IiBzdHls
ZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDss
IG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIyNjIuNjU2MjUiPkFOR0xFIEZyb250LWVuZDwvdHNwYW4+
PC90ZXh0PjwvZz48ZyBjbGFzcz0iYWN0b3IiPjxyZWN0IHg9IjI1Mi42NTYyNSIgeT0iMTA5My4w
MTU2MjUiIHdpZHRoPSIxNjQuNSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIj
ZmZmZmZmIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6
I2VhZTdlMTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3Jl
YWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3Jl
Y3Q+PHRleHQgeD0iMjYyLjY1NjI1IiB5PSIxMTE4LjAxNTYyNSIgc3R5bGU9ImZvbnQtc2l6ZTog
MTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48
dHNwYW4geD0iMjYyLjY1NjI1Ij5BTkdMRSBGcm9udC1lbmQ8L3RzcGFuPjwvdGV4dD48L2c+PGxp
bmUgeDE9IjMzNC45MDYyNSIgeDI9IjMzNC45MDYyNSIgeTE9IjU5IiB5Mj0iMTA5My4wMTU2MjUi
IHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1k
YXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMw
MDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlu
bGluZS1zdHJva2U9IiI+PC9saW5lPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iNTI0LjIxODc1
IiB5PSIyMCIgd2lkdGg9IjE2NC41IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9
IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmls
bDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJr
cmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwv
cmVjdD48dGV4dCB4PSI1MzQuMjE4NzUiIHk9IjQ1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBm
b250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4
PSI1MzQuMjE4NzUiPlZ1bGthbiBCYWNrLWVuZDwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0i
YWN0b3IiPjxyZWN0IHg9IjUyNC4yMTg3NSIgeT0iMTA5My4wMTU2MjUiIHdpZHRoPSIxNjQuNSIg
aGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ryb2tl
LXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVhZGVy
LWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBk
YXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iNTM0LjIxODc1
IiB5PSIxMTE4LjAxNTYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTM0LjIxODc1Ij5W
dWxrYW4gQmFjay1lbmQ8L3RzcGFuPjwvdGV4dD48L2c+PGxpbmUgeDE9IjYwNi40Njg3NSIgeDI9
IjYwNi40Njg3NSIgeTE9IjU5IiB5Mj0iMTA5My4wMTU2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmls
bD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxs
Om5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFk
ZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5l
PjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iODEwLjA0Njg3NSIgeT0iMjAiIHdpZHRoPSIxNzQu
NSIgaGVpZ2h0PSIzOSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSIjZmZmZmZmIiBzdHlsZT0ic3Ry
b2tlLXdpZHRoOiAyOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6I2VhZTdlMTsgLS1kYXJrcmVh
ZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0i
IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L3JlY3Q+PHRleHQgeD0iODIwLjA0
Njg3NSIgeT0iNDUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtB
bmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjgyMC4wNDY4NzUiPkFOR0xF
IFRyYW5zbGF0b3I8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSI4
MTAuMDQ2ODc1IiB5PSIxMDkzLjAxNTYyNSIgd2lkdGg9IjE3NC41IiBoZWlnaHQ9IjM5IiBzdHJv
a2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFy
a3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZToj
MDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1p
bmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSI4MjAuMDQ2ODc1IiB5PSIxMTE4LjAxNTYy
NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25v
JnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iODIwLjA0Njg3NSI+QU5HTEUgVHJhbnNsYXRv
cjwvdHNwYW4+PC90ZXh0PjwvZz48bGluZSB4MT0iODk3LjI5Njg3NSIgeDI9Ijg5Ny4yOTY4NzUi
IHkxPSI1OSIgeTI9IjEwOTMuMDE1NjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0
eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRh
cmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1m
aWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48ZyBjbGFzcz0i
YWN0b3IiPjxyZWN0IHg9IjEwMDQuNTQ2ODc1IiB5PSIyMCIgd2lkdGg9IjE3NC41IiBoZWlnaHQ9
IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6
IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5l
LXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFy
a3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSIxMDE0LjU0Njg3NSIgeT0i
NDUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9u
byZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjEwMTQuNTQ2ODc1Ij5HbHNsYW5nV3JhcHBl
clZrPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJhY3RvciI+PHJlY3QgeD0iMTAwNC41NDY4
NzUiIHk9IjEwOTMuMDE1NjI1IiB3aWR0aD0iMTc0LjUiIGhlaWdodD0iMzkiIHN0cm9rZT0iIzAw
MDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVy
LWlubGluZS1maWxsOiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7
IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1z
dHJva2U9IiI+PC9yZWN0Pjx0ZXh0IHg9IjEwMTQuNTQ2ODc1IiB5PSIxMTE4LjAxNTYyNSIgc3R5
bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7
LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMTAxNC41NDY4NzUiPkdsc2xhbmdXcmFwcGVyVms8L3Rz
cGFuPjwvdGV4dD48L2c+PGxpbmUgeDE9IjEwOTEuNzk2ODc1IiB4Mj0iMTA5MS43OTY4NzUiIHkx
PSI1OSIgeTI9IjEwOTMuMDE1NjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxl
PSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmty
ZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxs
PSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48ZyBjbGFzcz0iYWN0
b3IiPjxyZWN0IHg9IjEyNTIuNTc4MTI1IiB5PSIyMCIgd2lkdGg9Ijg3LjQzNzUiIGhlaWdodD0i
MzkiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDog
MjsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUt
c3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJr
cmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9yZWN0Pjx0ZXh0IHg9IjEyNjIuNTc4MTI1IiB5PSI0
NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25v
JnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iMTI2Mi41NzgxMjUiPkdsc2xhbmc8L3RzcGFu
PjwvdGV4dD48L2c+PGcgY2xhc3M9ImFjdG9yIj48cmVjdCB4PSIxMjUyLjU3ODEyNSIgeT0iMTA5
My4wMTU2MjUiIHdpZHRoPSI4Ny40Mzc1IiBoZWlnaHQ9IjM5IiBzdHJva2U9IiMwMDAwMDAiIGZp
bGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUt
ZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1k
YXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIi
PjwvcmVjdD48dGV4dCB4PSIxMjYyLjU3ODEyNSIgeT0iMTExOC4wMTU2MjUiIHN0eWxlPSJmb250
LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3Nw
YWNlOyI+PHRzcGFuIHg9IjEyNjIuNTc4MTI1Ij5HbHNsYW5nPC90c3Bhbj48L3RleHQ+PC9nPjxs
aW5lIHgxPSIxMjk2LjI5Njg3NSIgeDI9IjEyOTYuMjk2ODc1IiB5MT0iNTkiIHkyPSIxMDkzLjAx
NTYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAy
OyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJv
a2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFk
ZXItaW5saW5lLXN0cm9rZT0iIj48L2xpbmU+PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iODgu
MzUxNTYyNSIgeT0iODkuNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iODguMzUxNTYyNSI+
Z2xDb21waWxlU2hhZGVyIChWUyk8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzQuNDUzMTI1IiB4
Mj0iMzM0LjkwNjI1IiB5MT0iOTgiIHkyPSI5OCIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25l
IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFy
cm93QmxvY2smcXVvdDspOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVh
ZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0i
IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNzPSJz
aWduYWwiPjx0ZXh0IHg9IjM4OC44MDQ2ODc1IiB5PSIxMjguNSIgc3R5bGU9ImZvbnQtc2l6ZTog
MTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48
dHNwYW4geD0iMzg4LjgwNDY4NzUiPlNoYWRlclZrOjpjb21waWxlPC90c3Bhbj48L3RleHQ+PGxp
bmUgeDE9IjMzNC45MDYyNSIgeDI9IjYwNi40Njg3NSIgeTE9IjEzNyIgeTI9IjEzNyIgc3Ryb2tl
PSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5k
OiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyAtLWRhcmtyZWFkZXItaW5saW5l
LWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFy
a3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48
L2xpbmU+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9IjY5OC44OTg0Mzc1IiB5PSIxNjcu
NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25v
JnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNjk4Ljg5ODQzNzUiPnNoOjpDb21waWxlPC90
c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjYwNi40Njg3NSIgeDI9Ijg5Ny4yOTY4NzUiIHkxPSIxNzYi
IHkyPSIxNzYiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0
aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1k
YXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMw
MDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlu
bGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI0NzYu
NDIxODc1IiB5PSIyMDYuNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZx
dW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNDc2LjQyMTg3NSI+
cmV0dXJuIFZ1bGthbi1jb21wYXRpYmxlIEdMU0w8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iODk3
LjI5Njg3NSIgeDI9IjMzNC45MDYyNSIgeTE9IjIxNSIgeTI9IjIxNSIgc3Ryb2tlPSIjMDAwMDAw
IiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2
LCAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyAtLWRh
cmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAw
MDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5s
aW5lLXN0cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNzPSJub3RlIj48cmVjdCB4PSIzNTQuOTA2
MjUiIHk9IjIzNSIgd2lkdGg9IjIzMS41NjI1IiBoZWlnaHQ9IjY3LjQwNjI1IiBzdHJva2U9IiMw
MDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRl
ci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAw
OyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUt
c3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSIzNTkuOTA2MjUiIHk9IjI1NSIgc3R5bGU9ImZvbnQt
c2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3Bh
Y2U7Ij48dHNwYW4geD0iMzU5LjkwNjI1Ij5Tb3VyY2UgaXMgdXNpbmcgYm9ndXM8L3RzcGFuPjx0
c3BhbiBkeT0iMS4yZW0iIHg9IjM1OS45MDYyNSI+VnVsa2FuIHF1YWxpZmllcnMgdG8gYmU8L3Rz
cGFuPjx0c3BhbiBkeT0iMS4yZW0iIHg9IjM1OS45MDYyNSI+Y29ycmVjdGVkIGF0IGxpbmsgdGlt
ZS48L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9IjU0LjQ1MzEyNSIg
eT0iMzIyLjQwNjI1IiB3aWR0aD0iMjMxLjU2MjUiIGhlaWdodD0iMjkiIHN0cm9rZT0iIzAwMDAw
MCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgLS1kYXJrcmVhZGVyLWlu
bGluZS1maWxsOiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBk
YXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJv
a2U9IiI+PC9yZWN0Pjx0ZXh0IHg9IjU5LjQ1MzEyNSIgeT0iMzQyLjQwNjI1IiBzdHlsZT0iZm9u
dC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9z
cGFjZTsiPjx0c3BhbiB4PSI1OS40NTMxMjUiPlNhbWUgZm9yIEZTLCBHUywgZXRjLi4uPC90c3Bh
bj48L3RleHQ+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9IjgzLjUzMTI1IiB5PSIzODEu
OTA2MjUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUg
TW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjgzLjUzMTI1Ij5nbENyZWF0ZVByb2dy
YW0gKC4uLik8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iMzQuNDUzMTI1IiB4Mj0iMzM0LjkwNjI1
IiB5MT0iMzkwLjQwNjI1IiB5Mj0iMzkwLjQwNjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9Im5v
bmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2Vy
QXJyb3dCbG9jayZxdW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmty
ZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxs
PSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xhc3M9
InNpZ25hbCI+PHRleHQgeD0iODguMzUxNTYyNSIgeT0iNDIwLjkwNjI1IiBzdHlsZT0iZm9udC1z
aXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFj
ZTsiPjx0c3BhbiB4PSI4OC4zNTE1NjI1Ij5nbEF0dGFjaFNoYWRlciAoLi4uKTwvdHNwYW4+PC90
ZXh0PjxsaW5lIHgxPSIzNC40NTMxMjUiIHgyPSIzMzQuOTA2MjUiIHkxPSI0MjkuNDA2MjUiIHky
PSI0MjkuNDA2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13
aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsg
LS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tl
OiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVy
LWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIx
MjIuMDYyNSIgeT0iNDU5LjkwNjI1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWls
eTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMjIuMDYy
NSI+Z2xMaW5rUHJvZ3JhbTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgxPSIzNC40NTMxMjUiIHgyPSIz
MzQuOTA2MjUiIHkxPSI0NjguNDA2MjUiIHkyPSI0NjguNDA2MjUiIHN0cm9rZT0iIzAwMDAwMCIg
ZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgbWFya2VyLWVuZDogdXJsKCZxdW90
OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7
IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5s
aW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48
ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIzOTguMjU3ODEyNSIgeT0iNDk4LjkwNjI1IiBzdHls
ZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDss
IG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIzOTguMjU3ODEyNSI+UHJvZ3JhbVZrOjpsaW5rPC90c3Bh
bj48L3RleHQ+PGxpbmUgeDE9IjMzNC45MDYyNSIgeDI9IjYwNi40Njg3NSIgeTE9IjUwNy40MDYy
NSIgeTI9IjUwNy40MDYyNSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ry
b2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVv
dDspOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1z
dHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmty
ZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNzPSJub3RlIj48cmVjdCB4
PSI2MjYuNDY4NzUiIHk9IjUyNy40MDYyNSIgd2lkdGg9IjI1MC44MjgxMjUiIGhlaWdodD0iNDgu
MjAzMTI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lk
dGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5s
aW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEt
ZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvcmVjdD48dGV4dCB4PSI2MzEuNDY4NzUiIHk9
IjU0Ny40MDYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0Fu
ZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNjMxLjQ2ODc1Ij5Qcm9ncmFt
VmsgaW5pdHMgdW5pZm9ybXMsPC90c3Bhbj48dHNwYW4gZHk9IjEuMmVtIiB4PSI2MzEuNDY4NzUi
PmxheW91dHMsIGFuZCBkZXNjcmlwdG9ycy48L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9InNp
Z25hbCI+PHRleHQgeD0iNjc1Ljc0MjE4NzUiIHk9IjYwNi4xMDkzNzUiIHN0eWxlPSJmb250LXNp
emU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNl
OyI+PHRzcGFuIHg9IjY3NS43NDIxODc1Ij5HbHNsYW5nV3JhcHBlclZrOjpHZXRTaGFkZXJTcGly
dkNvZGU8L3RzcGFuPjwvdGV4dD48bGluZSB4MT0iNjA2LjQ2ODc1IiB4Mj0iMTA5MS43OTY4NzUi
IHkxPSI2MTQuNjA5Mzc1IiB5Mj0iNjE0LjYwOTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJu
b25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtl
ckFycm93QmxvY2smcXVvdDspOyAtLWRhcmtyZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJr
cmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmls
bD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNz
PSJzaWduYWwiPjx0ZXh0IHg9IjExMzYuMjUiIHk9IjY0NS4xMDkzNzUiIHN0eWxlPSJmb250LXNp
emU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNl
OyI+PHRzcGFuIHg9IjExMzYuMjUiPkdsc2xhbmdUb1NwdjwvdHNwYW4+PC90ZXh0PjxsaW5lIHgx
PSIxMDkxLjc5Njg3NSIgeDI9IjEyOTYuMjk2ODc1IiB5MT0iNjUzLjYwOTM3NSIgeTI9IjY1My42
MDkzNzUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDog
MjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJr
cmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAw
MDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGlu
ZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSIxMTMxLjI1
IiB5PSI2ODQuMTA5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1
b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIxMTMxLjI1Ij5SZXR1
cm4gU1BJUi1WPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjEyOTYuMjk2ODc1IiB4Mj0iMTA5MS43
OTY4NzUiIHkxPSI2OTIuNjA5Mzc1IiB5Mj0iNjkyLjYwOTM3NSIgc3Ryb2tlPSIjMDAwMDAwIiBm
aWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA2LCAy
OyBtYXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyAtLWRhcmty
ZWFkZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAw
MDsiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5l
LXN0cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNzPSJub3RlIj48cmVjdCB4PSIxMTExLjc5Njg3
NSIgeT0iNzEyLjYwOTM3NSIgd2lkdGg9IjE2NC41IiBoZWlnaHQ9IjI5IiBzdHJva2U9IiMwMDAw
MDAiIGZpbGw9IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1p
bmxpbmUtZmlsbDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIg
ZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ry
b2tlPSIiPjwvcmVjdD48dGV4dCB4PSIxMTE2Ljc5Njg3NSIgeT0iNzMyLjYwOTM3NSIgc3R5bGU9
ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBt
b25vc3BhY2U7Ij48dHNwYW4geD0iMTExNi43OTY4NzUiPlRyYW5zZm9ybSBTUElSLVY8L3RzcGFu
PjwvdGV4dD48L2c+PGcgY2xhc3M9InNpZ25hbCI+PHRleHQgeD0iNzI4LjUzOTA2MjUiIHk9Ijc3
Mi4xMDkzNzUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRh
bGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+PHRzcGFuIHg9IjcyOC41MzkwNjI1Ij5yZXR1cm4g
dHJhbnNmb3JtZWQgU1BJUi1WPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjEwOTEuNzk2ODc1IiB4
Mj0iNjA2LjQ2ODc1IiB5MT0iNzgwLjYwOTM3NSIgeTI9Ijc4MC42MDkzNzUiIHN0cm9rZT0iIzAw
MDAwMCIgZmlsbD0ibm9uZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJh
eTogNiwgMjsgbWFya2VyLWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsg
LS1kYXJrcmVhZGVyLWlubGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tl
OiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVy
LWlubGluZS1zdHJva2U9IiI+PC9saW5lPjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4PSI0
MDMuMjU3ODEyNSIgeT0iODExLjEwOTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1m
YW1pbHk6ICZxdW90O0FuZGFsZSBNb25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNDAz
LjI1NzgxMjUiPnJldHVybiBzdWNjZXNzPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjYwNi40Njg3
NSIgeDI9IjMzNC45MDYyNSIgeTE9IjgxOS42MDkzNzUiIHkyPSI4MTkuNjA5Mzc1IiBzdHJva2U9
IiMwMDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNo
YXJyYXk6IDYsIDI7IG1hcmtlci1lbmQ6IHVybCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90
Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmlsbDpub25lOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0
cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3Jl
YWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGluZT48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9
IjU0LjQ1MzEyNSIgeT0iODM5LjYwOTM3NSIgd2lkdGg9IjI2MC40NTMxMjUiIGhlaWdodD0iMjki
IHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0iI2ZmZmZmZiIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsg
LS1kYXJrcmVhZGVyLWlubGluZS1maWxsOiNlYWU3ZTE7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ry
b2tlOiMwMDAwMDA7IiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVh
ZGVyLWlubGluZS1zdHJva2U9IiI+PC9yZWN0Pjx0ZXh0IHg9IjU5LjQ1MzEyNSIgeT0iODU5LjYw
OTM3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBN
b25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNTkuNDUzMTI1Ij5BcHAgZXhlY3V0aW9u
IGNvbnRpbnVlcy4uLjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0ic2lnbmFsIj48dGV4dCB4
PSI3My44OTg0Mzc1IiB5PSI4OTkuMTA5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250
LWZhbWlseTogJnF1b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSI3
My44OTg0Mzc1Ij5nbERyYXdBcnJheXMgKGFueSBkcmF3KTwvdHNwYW4+PC90ZXh0PjxsaW5lIHgx
PSIzNC40NTMxMjUiIHgyPSIzMzQuOTA2MjUiIHkxPSI5MDcuNjA5Mzc1IiB5Mj0iOTA3LjYwOTM3
NSIgc3Ryb2tlPSIjMDAwMDAwIiBmaWxsPSJub25lIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAyOyBt
YXJrZXItZW5kOiB1cmwoJnF1b3Q7I21hcmtlckFycm93QmxvY2smcXVvdDspOyAtLWRhcmtyZWFk
ZXItaW5saW5lLWZpbGw6bm9uZTsgLS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U6IzAwMDAwMDsi
IGRhdGEtZGFya3JlYWRlci1pbmxpbmUtZmlsbD0iIiBkYXRhLWRhcmtyZWFkZXItaW5saW5lLXN0
cm9rZT0iIj48L2xpbmU+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9IjM2OS41MzkwNjI1
IiB5PSI5MzguMTA5Mzc1IiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyBmb250LWZhbWlseTogJnF1
b3Q7QW5kYWxlIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsiPjx0c3BhbiB4PSIzNjkuNTM5MDYyNSI+
Q29udGV4dFZrOjpkcmF3QXJyYXlzPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjMzNC45MDYyNSIg
eDI9IjYwNi40Njg3NSIgeTE9Ijk0Ni42MDkzNzUiIHkyPSI5NDYuNjA5Mzc1IiBzdHJva2U9IiMw
MDAwMDAiIGZpbGw9Im5vbmUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IG1hcmtlci1lbmQ6IHVy
bCgmcXVvdDsjbWFya2VyQXJyb3dCbG9jayZxdW90Oyk7IC0tZGFya3JlYWRlci1pbmxpbmUtZmls
bDpub25lOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJrcmVh
ZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwvbGlu
ZT48L2c+PGcgY2xhc3M9Im5vdGUiPjxyZWN0IHg9IjYyNi40Njg3NSIgeT0iOTY2LjYwOTM3NSIg
d2lkdGg9IjIzMS41NjI1IiBoZWlnaHQ9IjY3LjQwNjI1IiBzdHJva2U9IiMwMDAwMDAiIGZpbGw9
IiNmZmZmZmYiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDI7IC0tZGFya3JlYWRlci1pbmxpbmUtZmls
bDojZWFlN2UxOyAtLWRhcmtyZWFkZXItaW5saW5lLXN0cm9rZTojMDAwMDAwOyIgZGF0YS1kYXJr
cmVhZGVyLWlubGluZS1maWxsPSIiIGRhdGEtZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlPSIiPjwv
cmVjdD48dGV4dCB4PSI2MzEuNDY4NzUiIHk9Ijk4Ni42MDkzNzUiIHN0eWxlPSJmb250LXNpemU6
IDE2cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtBbmRhbGUgTW9ubyZxdW90OywgbW9ub3NwYWNlOyI+
PHRzcGFuIHg9IjYzMS40Njg3NSI+V2UgaW5pdCBWa1NoYWRlck1vZHVsZXM8L3RzcGFuPjx0c3Bh
biBkeT0iMS4yZW0iIHg9IjYzMS40Njg3NSI+YW5kIFZrUGlwZWxpbmUgdGhlbjwvdHNwYW4+PHRz
cGFuIGR5PSIxLjJlbSIgeD0iNjMxLjQ2ODc1Ij5yZWNvcmQgdGhlIGRyYXcuPC90c3Bhbj48L3Rl
eHQ+PC9nPjxnIGNsYXNzPSJzaWduYWwiPjx0ZXh0IHg9IjQwMy4yNTc4MTI1IiB5PSIxMDY0LjUx
NTYyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgZm9udC1mYW1pbHk6ICZxdW90O0FuZGFsZSBN
b25vJnF1b3Q7LCBtb25vc3BhY2U7Ij48dHNwYW4geD0iNDAzLjI1NzgxMjUiPnJldHVybiBzdWNj
ZXNzPC90c3Bhbj48L3RleHQ+PGxpbmUgeDE9IjYwNi40Njg3NSIgeDI9IjMzNC45MDYyNSIgeTE9
IjEwNzMuMDE1NjI1IiB5Mj0iMTA3My4wMTU2MjUiIHN0cm9rZT0iIzAwMDAwMCIgZmlsbD0ibm9u
ZSIgc3R5bGU9InN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNiwgMjsgbWFya2Vy
LWVuZDogdXJsKCZxdW90OyNtYXJrZXJBcnJvd0Jsb2NrJnF1b3Q7KTsgLS1kYXJrcmVhZGVyLWlu
bGluZS1maWxsOm5vbmU7IC0tZGFya3JlYWRlci1pbmxpbmUtc3Ryb2tlOiMwMDAwMDA7IiBkYXRh
LWRhcmtyZWFkZXItaW5saW5lLWZpbGw9IiIgZGF0YS1kYXJrcmVhZGVyLWlubGluZS1zdHJva2U9
IiI+PC9saW5lPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L21hYy9EaXNwbGF5VmtNYWMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5oCmluZGV4IDkwYjQ2ZGFhMWU1ZDhk
OWUyNDk3NDBhNTRmMDlmY2JmNWZjYzFjYWIuLmNlMmUxNWI3YTMxYzgyMDgyM2ZmMGVkNTE2NzQ2
NmZmYjJkNjk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01h
Yy5oCkBAIC0yNSw5ICsyNSwyMSBAQCBjbGFzcyBEaXNwbGF5VmtNYWMgOiBwdWJsaWMgRGlzcGxh
eVZrCiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2VWayhjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgb3ZlcnJpZGU7CiAKKyAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKKwogICAgIGVnbDo6Q29uZmlnU2V0IGdlbmVyYXRlQ29uZmlncygpIG92
ZXJyaWRlOwogICAgIGJvb2wgY2hlY2tDb25maWdTdXBwb3J0KGVnbDo6Q29uZmlnICpjb25maWcp
IG92ZXJyaWRlOwogCisgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0
ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9y
IHZhbGlkYXRlQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKSBjb25zdCBvdmVycmlkZTsKKwogICAgIGNvbnN0IGNoYXIgKmdl
dFdTSUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9tYWMvRGlzcGxh
eVZrTWFjLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9tYWMvRGlzcGxheVZrTWFjLm1tCmluZGV4IDRlODZlY2JjNzUwMzUxOTg4ZjYxMzUx
ODg2Yjc5ODM0NTRlYzU2MTQuLjZlMjA0ZTMzZjhmMDI0Y2VmNGE5NWE0NWJkY2M2ZGQxYzdhZWE2
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vbWFjL0Rpc3BsYXlWa01hYy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21hYy9EaXNwbGF5VmtNYWMubW0KQEAg
LTExLDYgKzExLDggQEAKIAogI2luY2x1ZGUgPHZ1bGthbi92dWxrYW4uaD4KIAorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL21hYy9JT1N1cmZhY2VTdXJmYWNlVmtNYWMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL1dpbmRvd1N1cmZhY2VWa01hYy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYXBzX3V0aWxzLmgiCiAKQEAgLTM0
LDYgKzM2LDE2IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5VmtNYWM6OmNyZWF0ZVdpbmRvd1N1cmZh
Y2VWayhjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAgcmV0dXJuIG5ldyBXaW5k
b3dTdXJmYWNlVmtNYWMoc3RhdGUsIHdpbmRvdyk7CiB9CiAKK1N1cmZhY2VJbXBsICpEaXNwbGF5
VmtNYWM6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBBU1NFUlQoYnVm
dHlwZSA9PSBFR0xfSU9TVVJGQUNFX0FOR0xFKTsKKworICAgIHJldHVybiBuZXcgSU9TdXJmYWNl
U3VyZmFjZVZrTWFjKHN0YXRlLCBjbGllbnRCdWZmZXIsIGF0dHJpYnMpOworfQorCiBlZ2w6OkNv
bmZpZ1NldCBEaXNwbGF5VmtNYWM6OmdlbmVyYXRlQ29uZmlncygpCiB7CiAgICAgY29uc3RleHBy
IEdMZW51bSBrQ29sb3JGb3JtYXRzW10gPSB7R0xfQkdSQThfRVhULCBHTF9CR1JYOF9BTkdMRVh9
OwpAQCAtNjIsNCArNzQsMjYgQEAgRGlzcGxheUltcGwgKkNyZWF0ZVZ1bGthbk1hY0Rpc3BsYXko
Y29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKQogICAgIHJldHVybiBuZXcgRGlzcGxheVZr
TWFjKHN0YXRlKTsKIH0KIAordm9pZCBEaXNwbGF5VmtNYWM6OmdlbmVyYXRlRXh0ZW5zaW9ucyhl
Z2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIG91dEV4
dGVuc2lvbnMtPmlvc3VyZmFjZUNsaWVudEJ1ZmZlciA9CisgICAgICAgIGdldFJlbmRlcmVyKCkt
PmdldEZlYXR1cmVzKCkuc3VwcG9ydHNFeHRlcm5hbE1lbW9yeUhvc3QuZW5hYmxlZDsKKworICAg
IERpc3BsYXlWazo6Z2VuZXJhdGVFeHRlbnNpb25zKG91dEV4dGVuc2lvbnMpOworfQorCitlZ2w6
OkVycm9yIERpc3BsYXlWa01hYzo6dmFsaWRhdGVDbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJ1ZnR5cGUgPT0gRUdMX0lPU1VSRkFD
RV9BTkdMRSk7CisKKyAgICBpZiAoIUlPU3VyZmFjZVN1cmZhY2VWa01hYzo6VmFsaWRhdGVBdHRy
aWJ1dGVzKHRoaXMsIGNsaWVudEJ1ZmZlciwgYXR0cmlicykpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjpFZ2xCYWRBdHRyaWJ1dGUoKTsKKyAgICB9CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJv
cigpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0lPU3VyZmFjZVN1cmZh
Y2VWa01hYy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9tYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ4MjdiYTQ3
MTQxODk3NDllZDE0Njk2ODRmYjFiMmYxOGI3YjZiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vbWFjL0lPU3Vy
ZmFjZVN1cmZhY2VWa01hYy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAy
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJT1N1cmZh
Y2VTdXJmYWNlVmtNYWMuaDoKKy8vICAgIFN1YmNsYXNzZXMgU3VyZmFjZVZrIGZvciB0aGUgTWFj
IHBsYXRmb3JtIHRvIGltcGxlbWVudCBQQnVmZmVycyB1c2luZyBhbiBJT1N1cmZhY2UKKy8vCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX01BQ19JT1NVUkZBQ0VTVVJGQUNFVktN
QUNfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX01BQ19JT1NVUkZBQ0VTVVJG
QUNFVktNQUNfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNl
VmsuaCIKKworc3RydWN0IF9fSU9TdXJmYWNlOwordHlwZWRlZiBfX0lPU3VyZmFjZSAqSU9TdXJm
YWNlUmVmOworCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBBdHRyaWJ1dGVNYXA7Cit9ICAvLyBu
YW1lc3BhY2UgZWdsCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBJT1N1cmZhY2VTdXJmYWNl
VmtNYWMgOiBwdWJsaWMgT2Zmc2NyZWVuU3VyZmFjZVZrCit7CisgIHB1YmxpYzoKKyAgICBJT1N1
cmZhY2VTdXJmYWNlVmtNYWMoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CisgICAgfklP
U3VyZmFjZVN1cmZhY2VWa01hYygpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBpbml0aWFs
aXplKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVy
cm9yIHVuTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwor
CisgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciByZWxlYXNlVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEVHTGlu
dCBidWZmZXIpIG92ZXJyaWRlOworCisgICAgc3RhdGljIGJvb2wgVmFsaWRhdGVBdHRyaWJ1dGVz
KGNvbnN0IERpc3BsYXlWayAqZGlzcGxheVZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CisKKyAgcHJvdGVj
dGVkOgorICAgIGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZUltcGwoRGlzcGxheVZrICpkaXNwbGF5
VmspIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgSU9TdXJmYWNlUmVmIG1JT1N1cmZhY2U7
CisKKyAgICBpbnQgbVBsYW5lOworICAgIGludCBtRm9ybWF0SW5kZXg7Cit9OworCit9ICAvLyBu
YW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fTUFDX0lP
U1VSRkFDRVNVUkZBQ0VWS01BQ19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9tYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFj
Lm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9tYWMvSU9TdXJmYWNlU3VyZmFjZVZrTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ODMwZDJlNjI3ZWJm
Mjk4OWMwZWM3NGUyZTI2ZWUzYjgwMGIxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21hYy9JT1N1cmZhY2VT
dXJmYWNlVmtNYWMubW0KQEAgLTAsMCArMSwyMjIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBJT1N1cmZhY2VT
dXJmYWNlVmtNYWMubW06CisvLyAgICBJbXBsZW1lbnRzIG1ldGhvZHMgZnJvbSBJT1N1cmZhY2VT
dXJmYWNlVmtNYWMuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL21h
Yy9JT1N1cmZhY2VTdXJmYWNlVmtNYWMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0Lmgi
CisjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZh
Y2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oIgorCisjaW5jbHVkZSA8SU9TdXJmYWNl
L0lPU3VyZmFjZS5oPgorCituYW1lc3BhY2UgcngKK3sKKworbmFtZXNwYWNlCit7CisKK3N0cnVj
dCBJT1N1cmZhY2VGb3JtYXRJbmZvCit7CisgICAgR0xlbnVtIGludGVybmFsRm9ybWF0OworICAg
IEdMZW51bSB0eXBlOworCisgICAgc2l6ZV90IGNvbXBvbmVudEJ5dGVzOworCisgICAgR0xlbnVt
IG5hdGl2ZVNpemVkSW50ZXJuYWxGb3JtYXQ7Cit9OworCisvLyBjbGFuZy1mb3JtYXQgb2ZmCitj
b25zdGV4cHIgc3RkOjphcnJheTxJT1N1cmZhY2VGb3JtYXRJbmZvLCA2PiBrSU9TdXJmYWNlRm9y
bWF0cyA9IHt7CisgICAge0dMX1JFRCwgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgMSwgR0xfUjgg
ICB9LAorICAgIHtHTF9SMTZVSSwgICAgR0xfVU5TSUdORURfU0hPUlQsIDIsIEdMX1IxNlVJICB9
LAorICAgIHtHTF9SRywgICAgICAgR0xfVU5TSUdORURfQllURSwgIDIsIEdMX1JHOCB9LAorICAg
IHtHTF9SR0IsICAgICAgR0xfVU5TSUdORURfQllURSwgIDQsIEdMX0JHUkE4X0VYVH0sCisgICAg
e0dMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCAgNCwgR0xfQkdSQThfRVhUIH0sCisgICAg
e0dMX1JHQkEsICAgICBHTF9IQUxGX0ZMT0FULCAgICAgOCwgR0xfUkdCQTE2RiB9LAorfX07Cisv
LyBjbGFuZy1mb3JtYXQgb24KKworaW50IEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRleChHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdMZW51bSB0eXBlKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
c3RhdGljX2Nhc3Q8aW50PihrSU9TdXJmYWNlRm9ybWF0cy5zaXplKCkpOyArK2kpCisgICAgewor
ICAgICAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZvID0ga0lPU3VyZmFjZUZvcm1hdHNbaV07Cisg
ICAgICAgIGlmIChmb3JtYXRJbmZvLmludGVybmFsRm9ybWF0ID09IGludGVybmFsRm9ybWF0ICYm
IGZvcm1hdEluZm8udHlwZSA9PSB0eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
aTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK30gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKKworSU9TdXJmYWNlU3VyZmFjZVZrTWFjOjpJT1N1cmZhY2VTdXJmYWNlVmtN
YWMoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKQorICAgIDogT2Zmc2NyZWVuU3VyZmFjZVZrKHN0YXRlKSwgbUlPU3VyZmFj
ZShudWxscHRyKSwgbVBsYW5lKDApLCBtRm9ybWF0SW5kZXgoLTEpCit7CisgICAgLy8gS2VlcCBy
ZWZlcmVuY2UgdG8gdGhlIElPU3VyZmFjZSBzbyBpdCBkb2Vzbid0IGdldCBkZWxldGVkIHdoaWxl
IHRoZSBwYnVmZmVyIGV4aXN0cy4KKyAgICBtSU9TdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxJ
T1N1cmZhY2VSZWY+KGJ1ZmZlcik7CisgICAgQ0ZSZXRhaW4obUlPU3VyZmFjZSk7CisKKyAgICAv
LyBFeHRyYWN0IGF0dHJpYnMgdXNlZnVsIGZvciB0aGUgY2FsbCB0byBDR0xUZXhJbWFnZUlPU3Vy
ZmFjZTJECisgICAgbVdpZHRoICA9IHN0YXRpY19jYXN0PGludD4oYXR0cmlicy5nZXQoRUdMX1dJ
RFRIKSk7CisgICAgbUhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oYXR0cmlicy5nZXQoRUdMX0hF
SUdIVCkpOworICAgIG1QbGFuZSAgPSBzdGF0aWNfY2FzdDxpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9J
T1NVUkZBQ0VfUExBTkVfQU5HTEUpKTsKKworICAgIEVHTEF0dHJpYiBpbnRlcm5hbEZvcm1hdCA9
IGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSk7CisgICAgRUdM
QXR0cmliIHR5cGUgICAgICAgICAgID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVfVFlQRV9BTkdM
RSk7CisgICAgbUZvcm1hdEluZGV4ID0KKyAgICAgICAgRmluZElPU3VyZmFjZUZvcm1hdEluZGV4
KHN0YXRpY19jYXN0PEdMZW51bT4oaW50ZXJuYWxGb3JtYXQpLCBzdGF0aWNfY2FzdDxHTGVudW0+
KHR5cGUpKTsKKyAgICBBU1NFUlQobUZvcm1hdEluZGV4ID49IDApOworfQorCitJT1N1cmZhY2VT
dXJmYWNlVmtNYWM6On5JT1N1cmZhY2VTdXJmYWNlVmtNYWMoKQoreworICAgIGlmIChtSU9TdXJm
YWNlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBDRlJlbGVhc2UobUlPU3VyZmFjZSk7Cisg
ICAgICAgIG1JT1N1cmZhY2UgPSBudWxscHRyOworICAgIH0KK30KKworZWdsOjpFcnJvciBJT1N1
cmZhY2VTdXJmYWNlVmtNYWM6OmluaXRpYWxpemUoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5
KQoreworICAgIERpc3BsYXlWayAqZGlzcGxheVZrID0gdms6OkdldEltcGwoZGlzcGxheSk7Cisg
ICAgYW5nbGU6OlJlc3VsdCByZXN1bHQgPSBpbml0aWFsaXplSW1wbChkaXNwbGF5VmspOworICAg
IHJldHVybiBhbmdsZTo6VG9FR0wocmVzdWx0LCBkaXNwbGF5VmssIEVHTF9CQURfU1VSRkFDRSk7
Cit9CisKK2FuZ2xlOjpSZXN1bHQgSU9TdXJmYWNlU3VyZmFjZVZrTWFjOjppbml0aWFsaXplSW1w
bChEaXNwbGF5VmsgKmRpc3BsYXlWaykKK3sKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciAgICAg
ID0gZGlzcGxheVZrLT5nZXRSZW5kZXJlcigpOworICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWcgPSBtU3RhdGUuY29uZmlnOworCisgICAgR0xpbnQgc2FtcGxlcyA9IDE7CisgICAgaWYgKGNv
bmZpZy0+c2FtcGxlQnVmZmVycyAmJiBjb25maWctPnNhbXBsZXMgPiAxKQorICAgIHsKKyAgICAg
ICAgc2FtcGxlcyA9IGNvbmZpZy0+c2FtcGxlczsKKyAgICB9CisgICAgQU5HTEVfVktfQ0hFQ0so
ZGlzcGxheVZrLCBzYW1wbGVzID4gMCwgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEKTsK
KworICAgIC8vIFN3aWZ0c2hhZGVyIHdpbGwgdXNlIHRoZSByYXcgcG9pbnRlciB0byB0aGUgYnVm
ZmVyIHJlZmVyZW5jZWQgYnkgdGhlIElPU3VyZmFjZVJlZgorICAgIEFOR0xFX1RSWShtQ29sb3JB
dHRhY2htZW50LmluaXRpYWxpemVXaXRoRXh0ZXJuYWxNZW1vcnkoCisgICAgICAgIGRpc3BsYXlW
aywgbVdpZHRoLCBtSGVpZ2h0LAorICAgICAgICByZW5kZXJlci0+Z2V0Rm9ybWF0KGtJT1N1cmZh
Y2VGb3JtYXRzW21Gb3JtYXRJbmRleF0ubmF0aXZlU2l6ZWRJbnRlcm5hbEZvcm1hdCksIHNhbXBs
ZXMsCisgICAgICAgIElPU3VyZmFjZUdldEJhc2VBZGRyZXNzT2ZQbGFuZShtSU9TdXJmYWNlLCBt
UGxhbmUpKSk7CisgICAgbUNvbG9yUmVuZGVyVGFyZ2V0LmluaXQoJm1Db2xvckF0dGFjaG1lbnQu
aW1hZ2UsICZtQ29sb3JBdHRhY2htZW50LmltYWdlVmlld3MsIDAsIDApOworCisgICAgcmV0dXJu
IGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCitlZ2w6OkVycm9yIElPU3VyZmFjZVN1cmZh
Y2VWa01hYzo6dW5NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAg
ICBBU1NFUlQoY29udGV4dCAhPSBudWxscHRyKTsKKyAgICBDb250ZXh0VmsgKmNvbnRleHRWayA9
IHZrOjpHZXRJbXBsKGNvbnRleHQpOworICAgIERpc3BsYXlWayAqZGlzcGxheVZrID0gdms6Okdl
dEltcGwoY29udGV4dC0+Z2V0RGlzcGxheSgpKTsKKyAgICBhbmdsZTo6UmVzdWx0IHJlc3VsdCA9
IGNvbnRleHRWay0+Zmx1c2hJbXBsKG51bGxwdHIpOworICAgIHJldHVybiBhbmdsZTo6VG9FR0wo
cmVzdWx0LCBkaXNwbGF5VmssIEVHTF9CQURfU1VSRkFDRSk7Cit9CisKK2VnbDo6RXJyb3IgSU9T
dXJmYWNlU3VyZmFjZVZrTWFjOjpiaW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpU
ZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xpbnQgYnVmZmVyKQoreworICAgIElPU3VyZmFjZUxvY2sobUlPU3VyZmFjZSwg
MCwgbnVsbHB0cik7CisKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJy
b3IgSU9TdXJmYWNlU3VyZmFjZVZrTWFjOjpyZWxlYXNlVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIEVHTGludCBidWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRleHQgIT0gbnVs
bHB0cik7CisgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSB2azo6R2V0SW1wbChjb250ZXh0KTsK
KyAgICBEaXNwbGF5VmsgKmRpc3BsYXlWayA9IHZrOjpHZXRJbXBsKGNvbnRleHQtPmdldERpc3Bs
YXkoKSk7CisgICAgYW5nbGU6OlJlc3VsdCByZXN1bHQgPSBjb250ZXh0VmstPmZpbmlzaEltcGwo
KTsKKworICAgIElPU3VyZmFjZVVubG9jayhtSU9TdXJmYWNlLCAwLCBudWxscHRyKTsKKworICAg
IHJldHVybiBhbmdsZTo6VG9FR0wocmVzdWx0LCBkaXNwbGF5VmssIEVHTF9CQURfU1VSRkFDRSk7
Cit9CisKKy8vIHN0YXRpYworYm9vbCBJT1N1cmZhY2VTdXJmYWNlVmtNYWM6OlZhbGlkYXRlQXR0
cmlidXRlcyhjb25zdCBEaXNwbGF5VmsgKmRpc3BsYXlWaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgQVNTRVJUKGRpc3BsYXlWayAhPSBudWxscHRyKTsK
KyAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGRpc3BsYXlWay0+Z2V0UmVuZGVyZXIoKTsKKwor
ICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2UgPSByZWludGVycHJldF9jYXN0PElPU3VyZmFjZVJl
Zj4oYnVmZmVyKTsKKworICAgIC8vIFRoZSBwbGFuZSBtdXN0IGV4aXN0IGZvciB0aGlzIElPU3Vy
ZmFjZS4gSU9TdXJmYWNlR2V0UGxhbmVDb3VudCBjYW4gcmV0dXJuIDAgZm9yIG5vbi1wbGFuYXIK
KyAgICAvLyBpb1N1cmZhY2VzIGJ1dCB3ZSB3aWxsIHRyZWF0IG5vbi1wbGFuYXIgbGlrZSBpdCBp
cyBhIHNpbmdsZSBwbGFuZS4KKyAgICBzaXplX3Qgc3VyZmFjZVBsYW5lQ291bnQgPSBzdGQ6Om1h
eChzaXplX3QoMSksIElPU3VyZmFjZUdldFBsYW5lQ291bnQoaW9TdXJmYWNlKSk7CisgICAgRUdM
QXR0cmliIHBsYW5lICAgICAgICAgID0gYXR0cmlicy5nZXQoRUdMX0lPU1VSRkFDRV9QTEFORV9B
TkdMRSk7CisgICAgaWYgKHBsYW5lIDwgMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBsYW5lKSA+
PSBzdXJmYWNlUGxhbmVDb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBUaGUgd2lkdGggaGVpZ2h0IHNwZWNpZmllZCBtdXN0IGJlIGF0IGxlYXN0ICgx
LCAxKSBhbmQgYXQgbW9zdCB0aGUgcGxhbmUgc2l6ZQorICAgIEVHTEF0dHJpYiB3aWR0aCAgPSBh
dHRyaWJzLmdldChFR0xfV0lEVEgpOworICAgIEVHTEF0dHJpYiBoZWlnaHQgPSBhdHRyaWJzLmdl
dChFR0xfSEVJR0hUKTsKKyAgICBpZiAod2lkdGggPD0gMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHdpZHRoKSA+IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZShpb1N1cmZhY2UsIHBsYW5lKSB8fAor
ICAgICAgICBoZWlnaHQgPD0gMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhlaWdodCkgPiBJT1N1
cmZhY2VHZXRIZWlnaHRPZlBsYW5lKGlvU3VyZmFjZSwgcGxhbmUpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEZpbmQgdGhpcyBJT1N1cmZhY2UgZm9ybWF0
CisgICAgRUdMQXR0cmliIGludGVybmFsRm9ybWF0ID0gYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVf
SU5URVJOQUxfRk9STUFUX0FOR0xFKTsKKyAgICBFR0xBdHRyaWIgdHlwZSAgICAgICAgICAgPSBh
dHRyaWJzLmdldChFR0xfVEVYVFVSRV9UWVBFX0FOR0xFKTsKKworICAgIGludCBmb3JtYXRJbmRl
eCA9CisgICAgICAgIEZpbmRJT1N1cmZhY2VGb3JtYXRJbmRleChzdGF0aWNfY2FzdDxHTGVudW0+
KGludGVybmFsRm9ybWF0KSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih0eXBlKSk7CisKKyAgICBpZiAo
Zm9ybWF0SW5kZXggPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIC8vIENoZWNrIHRoYXQgdGhlIGZvcm1hdCBtYXRjaGVzIHRoaXMgSU9TdXJmYWNlIHBsYW5l
CisgICAgaWYgKElPU3VyZmFjZUdldEJ5dGVzUGVyRWxlbWVudE9mUGxhbmUoaW9TdXJmYWNlLCBw
bGFuZSkgIT0KKyAgICAgICAga0lPU3VyZmFjZUZvcm1hdHNbZm9ybWF0SW5kZXhdLmNvbXBvbmVu
dEJ5dGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQg
KnBvaW50ZXIgPSBJT1N1cmZhY2VHZXRCYXNlQWRkcmVzc09mUGxhbmUoaW9TdXJmYWNlLCBwbGFu
ZSk7CisgICAgVmtNZW1vcnlIb3N0UG9pbnRlclByb3BlcnRpZXNFWFQgbWVtb3J5SG9zdFBvaW50
ZXJQcm9wZXJ0aWVzID0ge307CisgICAgbWVtb3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzLnNUeXBl
ID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0hPU1RfUE9JTlRFUl9QUk9QRVJUSUVTX0VYVDsK
KyAgICB2a0dldE1lbW9yeUhvc3RQb2ludGVyUHJvcGVydGllc0VYVCgKKyAgICAgICAgcmVuZGVy
ZXItPmdldERldmljZSgpLCBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfSE9TVF9NQVBQ
RURfRk9SRUlHTl9NRU1PUllfQklUX0VYVCwKKyAgICAgICAgcG9pbnRlciwgJm1lbW9yeUhvc3RQ
b2ludGVyUHJvcGVydGllcyk7CisKKyAgICBib29sIGhvc3RWaXNpYmxlID0KKyAgICAgICAgbWVt
b3J5SG9zdFBvaW50ZXJQcm9wZXJ0aWVzLm1lbW9yeVR5cGVCaXRzICYgVktfTUVNT1JZX1BST1BF
UlRZX0hPU1RfVklTSUJMRV9CSVQ7CisgICAgaWYgKCFob3N0VmlzaWJsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBWa0RldmljZVNpemUgYWxpZ25tZW50ID0g
cmVuZGVyZXItPmdldE1pbkltcG9ydGVkSG9zdFBvaW50ZXJBbGlnbm1lbnQoKTsKKyAgICBpZiAo
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHBvaW50ZXIpICUgYWxpZ25tZW50ICE9IDApCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRp
cmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDAuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRp
cmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDAuaW5jCmluZGV4IGIyMjQwYWVlZDMwMmY0M2ZlNTM4
MjJjZDY2NDZhMjkyNzIxNWMwNWUuLjEzNjA0YjM1NTlhOTI3ZmRkY2FkN2I1MDMyZDQxMWNiZDIx
YzI5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5j
b21wLjAwMDAwMDAwLmluYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxv
b3AuY29tcC4wMDAwMDAwMC5pbmMKQEAgLTEsOSArMSw5IEBACiAJLy8gNy4xMi4zMjI2CiAJICNw
cmFnbWEgb25jZQogY29uc3QgdWludDMyX3Qga0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3Bf
Y29tcF8wMDAwMDAwMFtdID0gewotCTB4MDcyMzAyMDMsMHgwMDAxMDAwMCwweDAwMDgwMDA3LDB4
MDAwMDAwZWUsMHgwMDAwMDAwMCwweDAwMDIwMDExLDB4MDAwMDAwMDEsMHgwMDA2MDAwYiwKKwkw
eDA3MjMwMjAzLDB4MDAwMTAwMDAsMHgwMDA4MDAwNywweDAwMDAwMGViLDB4MDAwMDAwMDAsMHgw
MDAyMDAxMSwweDAwMDAwMDAxLDB4MDAwNjAwMGIsCiAJMHgwMDAwMDAwMSwweDRjNTM0YzQ3LDB4
NjQ3NDczMmUsMHgzMDM1MzQyZSwweDAwMDAwMDAwLDB4MDAwMzAwMGUsMHgwMDAwMDAwMCwweDAw
MDAwMDAxLAotCTB4MDAwNjAwMGYsMHgwMDAwMDAwNSwweDAwMDAwMDA0LDB4NmU2OTYxNmQsMHgw
MDAwMDAwMCwweDAwMDAwMDZiLDB4MDAwNjAwMTAsMHgwMDAwMDAwNCwKKwkweDAwMDYwMDBmLDB4
MDAwMDAwMDUsMHgwMDAwMDAwNCwweDZlNjk2MTZkLDB4MDAwMDAwMDAsMHgwMDAwMDA2OCwweDAw
MDYwMDEwLDB4MDAwMDAwMDQsCiAJMHgwMDAwMDAxMSwweDAwMDAwMDQwLDB4MDAwMDAwMDEsMHgw
MDAwMDAwMSwweDAwMDMwMDAzLDB4MDAwMDAwMDIsMHgwMDAwMDFjMiwweDAwMDQwMDA1LAogCTB4
MDAwMDAwMDQsMHg2ZTY5NjE2ZCwweDAwMDAwMDAwLDB4MDAwNzAwMDUsMHgwMDAwMDAwYSwweDQ5
NzQ2NTQ3LDB4Nzg2NTY0NmUsMHg3NTZjNjE1NiwKIAkweDMxNzUyODY1LDB4MDAwMDAwM2IsMHgw
MDA0MDAwNSwweDAwMDAwMDA5LDB4NjU2NDZlNjksMHgwMDAwMDA3OCwweDAwMDgwMDA1LDB4MDAw
MDAwMGYsCkBAIC0xMSwxOTQgKzExLDE5MSBAQCBjb25zdCB1aW50MzJfdCBrQ29udmVydEluZGV4
SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAwW10gPSB7CiAJMHg2NTY0NmU2OSwweDAwMDAw
MDc4LDB4MDAwNDAwMDUsMHgwMDAwMDAwZSwweDc1NmM2MTc2LDB4MDAwMDAwNjUsMHgwMDA1MDAw
NSwweDAwMDAwMDExLAogCTB4NDI2MzcyNzMsMHg2YjYzNmY2YywweDAwMDAwMDAwLDB4MDAwMzAw
MDUsMHgwMDAwMDAxMywweDAwNjM3MjczLDB4MDAwNTAwMDYsMHgwMDAwMDAxMywKIAkweDAwMDAw
MDAwLDB4NDQ2MzcyNzMsMHgwMDYxNzQ2MSwweDAwMDMwMDA1LDB4MDAwMDAwMTUsMHgwMDAwMDAw
MCwweDAwMDUwMDA1LDB4MDAwMDAwMWUsCi0JMHg1MzYzNzI3MywweDc0NjY2OTY4LDB4MDAwMDAw
MDAsMHgwMDA0MDAwNSwweDAwMDAwMDI0LDB4NGQ2MzcyNzMsMHgwMDZiNzM2MSwweDAwMDQwMDA1
LAotCTB4MDAwMDAwMjYsMHg3NTZjNjE3NiwweDAwMDAwMDY1LDB4MDAwNTAwMDUsMHgwMDAwMDAy
ZiwweDQ5NzQ3MzY0LDB4Nzg2NTY0NmUsMHgwMDAwMDAwMCwKLQkweDAwMDYwMDA1LDB4MDAwMDAw
MzAsMHg2ODczNzU1MCwweDczNmU2ZjQzLDB4NzQ2ZTYxNzQsMHgwMDAwMDA3MywweDAwMDcwMDA2
LDB4MDAwMDAwMzAsCi0JMHgwMDAwMDAwMCwweDRmNjQ2ZDYzLDB4NjU3MzY2NjYsMHg3NjY5NDQ3
NCwweDAwMDAwMDM0LDB4MDAwODAwMDYsMHgwMDAwMDAzMCwweDAwMDAwMDAxLAotCTB4NDM3NDcz
NjQsMHg2NjRmNjQ2ZCwweDc0NjU3MzY2LDB4MzQ3NjY5NDQsMHgwMDAwMDAwMCwweDAwMDcwMDA2
LDB4MDAwMDAwMzAsMHgwMDAwMDAwMiwKLQkweDRmNzQ3MzY0LDB4NjU3MzY2NjYsMHg3NjY5NDQ3
NCwweDAwMDAwMDM0LDB4MDAwODAwMDYsMHgwMDAwMDAzMCwweDAwMDAwMDAzLDB4NjU1MjczNjks
Ci0JMHg3MjYxNzQ3MywweDYxNmU0NTc0LDB4NjQ2NTZjNjIsMHgwMDAwMDAwMCwweDAwMDMwMDA1
LDB4MDAwMDAwMzIsMHgwMDAwMDAwMCwweDAwMDUwMDA1LAotCTB4MDAwMDAwM2EsMHg0MjYzNzI3
MywweDZiNjM2ZjZjLDB4MDAwMDAwMDAsMHgwMDAzMDAwNSwweDAwMDAwMDNjLDB4MDA3NDczNjQs
MHgwMDA1MDAwNiwKLQkweDAwMDAwMDNjLDB4MDAwMDAwMDAsMHg0NDc0NzM2NCwweDAwNjE3NDYx
LDB4MDAwMzAwMDUsMHgwMDAwMDAzZSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsCi0JMHgwMDAwMDA0
MiwweDUzNjM3MjczLDB4NzQ2NjY5NjgsMHgwMDAwMDAwMCwweDAwMDQwMDA1LDB4MDAwMDAwNDYs
MHg0ZDYzNzI3MywweDAwNmI3MzYxLAotCTB4MDAwNTAwMDUsMHgwMDAwMDA1NSwweDY1NjQ2ZTY5
LDB4NzU2ZjQzNzgsMHgwMDAwNzQ2ZSwweDAwMDMwMDA1LDB4MDAwMDAwNTcsMHgwMDY0NmQ2MywK
LQkweDAwMDUwMDA2LDB4MDAwMDAwNTcsMHgwMDAwMDAwMCwweDQ0NjQ2ZDYzLDB4MDA2MTc0NjEs
MHgwMDAzMDAwNSwweDAwMDAwMDU5LDB4MDAwMDAwMDAsCi0JMHgwMDA1MDAwNSwweDAwMDAwMDVl
LDB4NzM3MjY5NjYsMHg2NDZlNDk3NCwweDAwMDA3ODY1LDB4MDAwNTAwMDUsMHgwMDAwMDA2NSww
eDQ5NjQ2ZTY1LAotCTB4Nzg2NTY0NmUsMHgwMDAwMDAwMCwweDAwMDgwMDA1LDB4MDAwMDAwNmIs
MHg0NzVmNmM2NywweDYxNjI2ZjZjLDB4NzY2ZTQ5NmMsMHg3NDYxNjM2ZiwKLQkweDQ5NmU2ZjY5
LDB4MDAwMDAwNDQsMHgwMDA2MDAwNSwweDAwMDAwMDc1LDB4NmI3MjZmNzcsMHg0MzY3NmU2OSww
eDc0NmU3NTZmLDB4MDAwMDAwMDAsCi0JMHgwMDA0MDAwNSwweDAwMDAwMDc2LDB4NDk2MzcyNzMs
MHgwMDAwNzg2NCwweDAwMDcwMDA1LDB4MDAwMDAwNzgsMHg2OTY0NmU2OSwweDUyNzM2NTYzLAot
CTB4Njk2MTZkNjUsMHg2NzZlNjk2ZSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDA3YSww
eDY1NmU2OTZjLDB4NjU3YTY5NTMsMHgwMDAwMDAwMCwKLQkweDAwMDYwMDA1LDB4MDAwMDAwN2Is
MHg3MzcyNjk2NiwweDY0NmU0OTc0LDB4NjE1Njc4NjUsMHgwMDY1NzU2YywweDAwMDYwMDA1LDB4
MDAwMDAwODMsCi0JMHg3NDczNjU3MiwweDU2NzQ3MjYxLDB4NjU3NTZjNjEsMHgwMDAwMDAwMCww
eDAwMDUwMDA1LDB4MDAwMDAwODQsMHg2NTY0NmU2OSwweDZjNjE1Njc4LAotCTB4MDAwMDY1NzUs
MHgwMDA0MDAwNSwweDAwMDAwMDg3LDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4
MDAwMDAwYTAsMHg2MTcyNjE3MCwKLQkweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBhMSww
eDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGFhLDB4NjE3MjYxNzAsCi0J
MHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYWIsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4
MDAwNDAwMDUsMHgwMDAwMDBhZiwweDYxNzI2MTcwLAotCTB4MDAwMDAwNmQsMHgwMDA0MDAwNSww
eDAwMDAwMGIxLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYmMsMHg2
MTcyNjE3MCwKLQkweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBiZSwweDYxNzI2MTcwLDB4
MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGM0LDB4NDM3NDczNjQsCi0JMHgwMDAwNjQ2ZCww
eDAwMDYwMDA2LDB4MDAwMDAwYzQsMHgwMDAwMDAwMCwweDQzNzQ3MzY0LDB4NjE0NDY0NmQsMHgw
MDAwNjE3NCwweDAwMDMwMDA1LAotCTB4MDAwMDAwYzYsMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4
MDAwMDAwMTIsMHgwMDAwMDAwNiwweDAwMDAwMDA0LDB4MDAwNDAwNDgsMHgwMDAwMDAxMywKKwkw
eDUzNjM3MjczLDB4NzQ2NjY5NjgsMHgwMDAwMDAwMCwweDAwMDQwMDA1LDB4MDAwMDAwMjQsMHg3
NTZjNjE3NiwweDAwMDAwMDY1LDB4MDAwNTAwMDUsCisJMHgwMDAwMDAyZCwweDQ5NzQ3MzY0LDB4
Nzg2NTY0NmUsMHgwMDAwMDAwMCwweDAwMDYwMDA1LDB4MDAwMDAwMmUsMHg2ODczNzU1MCwweDcz
NmU2ZjQzLAorCTB4NzQ2ZTYxNzQsMHgwMDAwMDA3MywweDAwMDcwMDA2LDB4MDAwMDAwMmUsMHgw
MDAwMDAwMCwweDRmNjQ2ZDYzLDB4NjU3MzY2NjYsMHg3NjY5NDQ3NCwKKwkweDAwMDAwMDM0LDB4
MDAwODAwMDYsMHgwMDAwMDAyZSwweDAwMDAwMDAxLDB4NDM3NDczNjQsMHg2NjRmNjQ2ZCwweDc0
NjU3MzY2LDB4MzQ3NjY5NDQsCisJMHgwMDAwMDAwMCwweDAwMDcwMDA2LDB4MDAwMDAwMmUsMHgw
MDAwMDAwMiwweDRmNzQ3MzY0LDB4NjU3MzY2NjYsMHg3NjY5NDQ3NCwweDAwMDAwMDM0LAorCTB4
MDAwODAwMDYsMHgwMDAwMDAyZSwweDAwMDAwMDAzLDB4NjU1MjczNjksMHg3MjYxNzQ3MywweDYx
NmU0NTc0LDB4NjQ2NTZjNjIsMHgwMDAwMDAwMCwKKwkweDAwMDMwMDA1LDB4MDAwMDAwMzAsMHgw
MDAwMDAwMCwweDAwMDUwMDA1LDB4MDAwMDAwMzcsMHg0MjYzNzI3MywweDZiNjM2ZjZjLDB4MDAw
MDAwMDAsCisJMHgwMDAzMDAwNSwweDAwMDAwMDM5LDB4MDA3NDczNjQsMHgwMDA1MDAwNiwweDAw
MDAwMDM5LDB4MDAwMDAwMDAsMHg0NDc0NzM2NCwweDAwNjE3NDYxLAorCTB4MDAwMzAwMDUsMHgw
MDAwMDAzYiwweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDAzZiwweDUzNjM3MjczLDB4NzQ2
NjY5NjgsMHgwMDAwMDAwMCwKKwkweDAwMDUwMDA1LDB4MDAwMDAwNTIsMHg2NTY0NmU2OSwweDc1
NmY0Mzc4LDB4MDAwMDc0NmUsMHgwMDAzMDAwNSwweDAwMDAwMDU0LDB4MDA2NDZkNjMsCisJMHgw
MDA1MDAwNiwweDAwMDAwMDU0LDB4MDAwMDAwMDAsMHg0NDY0NmQ2MywweDAwNjE3NDYxLDB4MDAw
MzAwMDUsMHgwMDAwMDA1NiwweDAwMDAwMDAwLAorCTB4MDAwNTAwMDUsMHgwMDAwMDA1YiwweDcz
NzI2OTY2LDB4NjQ2ZTQ5NzQsMHgwMDAwNzg2NSwweDAwMDUwMDA1LDB4MDAwMDAwNjIsMHg0OTY0
NmU2NSwKKwkweDc4NjU2NDZlLDB4MDAwMDAwMDAsMHgwMDA4MDAwNSwweDAwMDAwMDY4LDB4NDc1
ZjZjNjcsMHg2MTYyNmY2YywweDc2NmU0OTZjLDB4NzQ2MTYzNmYsCisJMHg0OTZlNmY2OSwweDAw
MDAwMDQ0LDB4MDAwNjAwMDUsMHgwMDAwMDA3MywweDZiNzI2Zjc3LDB4NDM2NzZlNjksMHg3NDZl
NzU2ZiwweDAwMDAwMDAwLAorCTB4MDAwNDAwMDUsMHgwMDAwMDA3NCwweDQ5NjM3MjczLDB4MDAw
MDc4NjQsMHgwMDA3MDAwNSwweDAwMDAwMDc2LDB4Njk2NDZlNjksMHg1MjczNjU2MywKKwkweDY5
NjE2ZDY1LDB4Njc2ZTY5NmUsMHgwMDAwMDAwMCwweDAwMDUwMDA1LDB4MDAwMDAwNzgsMHg2NTZl
Njk2YywweDY1N2E2OTUzLDB4MDAwMDAwMDAsCisJMHgwMDA2MDAwNSwweDAwMDAwMDc5LDB4NzM3
MjY5NjYsMHg2NDZlNDk3NCwweDYxNTY3ODY1LDB4MDA2NTc1NmMsMHgwMDA2MDAwNSwweDAwMDAw
MDgxLAorCTB4NzQ3MzY1NzIsMHg1Njc0NzI2MSwweDY1NzU2YzYxLDB4MDAwMDAwMDAsMHgwMDA1
MDAwNSwweDAwMDAwMDgyLDB4NjU2NDZlNjksMHg2YzYxNTY3OCwKKwkweDAwMDA2NTc1LDB4MDAw
NDAwMDUsMHgwMDAwMDA4NiwweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAw
MDllLDB4NjE3MjYxNzAsCisJMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwOWYsMHg2MTcy
NjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBhOCwweDYxNzI2MTcwLAorCTB4MDAw
MDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGE5LDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQw
MDA1LDB4MDAwMDAwYWQsMHg2MTcyNjE3MCwKKwkweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAw
MDBhZiwweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGJhLDB4NjE3MjYx
NzAsCisJMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYmMsMHg2MTcyNjE3MCwweDAwMDAw
MDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBjMiwweDQzNzQ3MzY0LAorCTB4MDAwMDY0NmQsMHgwMDA2
MDAwNiwweDAwMDAwMGMyLDB4MDAwMDAwMDAsMHg0Mzc0NzM2NCwweDYxNDQ2NDZkLDB4MDAwMDYx
NzQsMHgwMDAzMDAwNSwKKwkweDAwMDAwMGM0LDB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAw
MDEyLDB4MDAwMDAwMDYsMHgwMDAwMDAwNCwweDAwMDQwMDQ4LDB4MDAwMDAwMTMsCiAJMHgwMDAw
MDAwMCwweDAwMDAwMDE4LDB4MDAwNTAwNDgsMHgwMDAwMDAxMywweDAwMDAwMDAwLDB4MDAwMDAw
MjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LAogCTB4MDAwMDAwMTMsMHgwMDAwMDAwMywweDAwMDQw
MDQ3LDB4MDAwMDAwMTUsMHgwMDAwMDAyMiwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAx
NSwKLQkweDAwMDAwMDIxLDB4MDAwMDAwMDEsMHgwMDA1MDA0OCwweDAwMDAwMDMwLDB4MDAwMDAw
MDAsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwNTAwNDgsCi0JMHgwMDAwMDAzMCwweDAwMDAw
MDAxLDB4MDAwMDAwMjMsMHgwMDAwMDAwNCwweDAwMDUwMDQ4LDB4MDAwMDAwMzAsMHgwMDAwMDAw
MiwweDAwMDAwMDIzLAotCTB4MDAwMDAwMDgsMHgwMDA1MDA0OCwweDAwMDAwMDMwLDB4MDAwMDAw
MDMsMHgwMDAwMDAyMywweDAwMDAwMDBjLDB4MDAwMzAwNDcsMHgwMDAwMDAzMCwKLQkweDAwMDAw
MDAyLDB4MDAwNDAwNDcsMHgwMDAwMDAzYiwweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgwMDA1MDA0
OCwweDAwMDAwMDNjLDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAw
NDcsMHgwMDAwMDAzYywweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDAzZSwweDAwMDAwMDIy
LAotCTB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDNlLDB4MDAwMDAwMjEsMHgwMDAwMDAw
MCwweDAwMDQwMDQ3LDB4MDAwMDAwNTYsMHgwMDAwMDAwNiwKLQkweDAwMDAwMDA0LDB4MDAwNDAw
NDgsMHgwMDAwMDA1NywweDAwMDAwMDAwLDB4MDAwMDAwMTgsMHgwMDA1MDA0OCwweDAwMDAwMDU3
LDB4MDAwMDAwMDAsCi0JMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAwNDcsMHgwMDAwMDA1
NywweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDA1OSwweDAwMDAwMDIyLAotCTB4MDAwMDAw
MDAsMHgwMDA0MDA0NywweDAwMDAwMDU5LDB4MDAwMDAwMjEsMHgwMDAwMDAwMiwweDAwMDQwMDQ3
LDB4MDAwMDAwNmIsMHgwMDAwMDAwYiwKLQkweDAwMDAwMDFjLDB4MDAwNDAwNDcsMHgwMDAwMDBj
MywweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgwMDA1MDA0OCwweDAwMDAwMGM0LDB4MDAwMDAwMDAs
Ci0JMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAwNDcsMHgwMDAwMDBjNCwweDAwMDAwMDAz
LDB4MDAwNDAwNDcsMHgwMDAwMDBjNiwweDAwMDAwMDIyLAotCTB4MDAwMDAwMDAsMHgwMDA0MDA0
NywweDAwMDAwMGM2LDB4MDAwMDAwMjEsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAwZWQs
MHgwMDAwMDAwYiwKKwkweDAwMDAwMDIxLDB4MDAwMDAwMDEsMHgwMDA1MDA0OCwweDAwMDAwMDJl
LDB4MDAwMDAwMDAsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwNTAwNDgsCisJMHgwMDAwMDAy
ZSwweDAwMDAwMDAxLDB4MDAwMDAwMjMsMHgwMDAwMDAwNCwweDAwMDUwMDQ4LDB4MDAwMDAwMmUs
MHgwMDAwMDAwMiwweDAwMDAwMDIzLAorCTB4MDAwMDAwMDgsMHgwMDA1MDA0OCwweDAwMDAwMDJl
LDB4MDAwMDAwMDMsMHgwMDAwMDAyMywweDAwMDAwMDBjLDB4MDAwMzAwNDcsMHgwMDAwMDAyZSwK
KwkweDAwMDAwMDAyLDB4MDAwNDAwNDcsMHgwMDAwMDAzOCwweDAwMDAwMDA2LDB4MDAwMDAwMDQs
MHgwMDA1MDA0OCwweDAwMDAwMDM5LDB4MDAwMDAwMDAsCisJMHgwMDAwMDAyMywweDAwMDAwMDAw
LDB4MDAwMzAwNDcsMHgwMDAwMDAzOSwweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDAzYiww
eDAwMDAwMDIyLAorCTB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDNiLDB4MDAwMDAwMjEs
MHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwNTMsMHgwMDAwMDAwNiwKKwkweDAwMDAwMDA0
LDB4MDAwNDAwNDgsMHgwMDAwMDA1NCwweDAwMDAwMDAwLDB4MDAwMDAwMTgsMHgwMDA1MDA0OCww
eDAwMDAwMDU0LDB4MDAwMDAwMDAsCisJMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAwNDcs
MHgwMDAwMDA1NCwweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDA1NiwweDAwMDAwMDIyLAor
CTB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDU2LDB4MDAwMDAwMjEsMHgwMDAwMDAwMiww
eDAwMDQwMDQ3LDB4MDAwMDAwNjgsMHgwMDAwMDAwYiwKKwkweDAwMDAwMDFjLDB4MDAwNDAwNDcs
MHgwMDAwMDBjMSwweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgwMDA1MDA0OCwweDAwMDAwMGMyLDB4
MDAwMDAwMDAsCisJMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAwNDcsMHgwMDAwMDBjMiww
eDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDBjNCwweDAwMDAwMDIyLAorCTB4MDAwMDAwMDAs
MHgwMDA0MDA0NywweDAwMDAwMGM0LDB4MDAwMDAwMjEsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4
MDAwMDAwZWEsMHgwMDAwMDAwYiwKIAkweDAwMDAwMDE5LDB4MDAwMjAwMTMsMHgwMDAwMDAwMiww
eDAwMDMwMDIxLDB4MDAwMDAwMDMsMHgwMDAwMDAwMiwweDAwMDQwMDE1LDB4MDAwMDAwMDYsCiAJ
MHgwMDAwMDAyMCwweDAwMDAwMDAwLDB4MDAwNDAwMjAsMHgwMDAwMDAwNywweDAwMDAwMDA3LDB4
MDAwMDAwMDYsMHgwMDA0MDAyMSwweDAwMDAwMDA4LAogCTB4MDAwMDAwMDYsMHgwMDAwMDAwNyww
eDAwMDUwMDIxLDB4MDAwMDAwMGMsMHgwMDAwMDAwMiwweDAwMDAwMDA3LDB4MDAwMDAwMDcsMHgw
MDAzMDAxZCwKIAkweDAwMDAwMDEyLDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAwMDAwMDEzLDB4
MDAwMDAwMTIsMHgwMDA0MDAyMCwweDAwMDAwMDE0LDB4MDAwMDAwMDIsCiAJMHgwMDAwMDAxMyww
eDAwMDQwMDNiLDB4MDAwMDAwMTQsMHgwMDAwMDAxNSwweDAwMDAwMDAyLDB4MDAwNDAwMTUsMHgw
MDAwMDAxNiwweDAwMDAwMDIwLAogCTB4MDAwMDAwMDEsMHgwMDA0MDAyYiwweDAwMDAwMDE2LDB4
MDAwMDAwMTcsMHgwMDAwMDAwMCwweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgwMDAwMDAxOSwKLQkw
eDAwMDAwMDAxLDB4MDAwNDAwMjAsMHgwMDAwMDAxYiwweDAwMDAwMDAyLDB4MDAwMDAwMDYsMHgw
MDA0MDAyYiwweDAwMDAwMDA2LDB4MDAwMDAwMjAsCi0JMHgwMDAwMDAwMSwweDAwMDQwMDJiLDB4
MDAwMDAwMTYsMHgwMDAwMDAyMiwweDAwMDAwMDA0LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAw
MDAwMDI1LAotCTB4MDAwMGZmZmYsMHgwMDA2MDAxZSwweDAwMDAwMDMwLDB4MDAwMDAwMDYsMHgw
MDAwMDAwNiwweDAwMDAwMDA2LDB4MDAwMDAwMDYsMHgwMDA0MDAyMCwKLQkweDAwMDAwMDMxLDB4
MDAwMDAwMDksMHgwMDAwMDAzMCwweDAwMDQwMDNiLDB4MDAwMDAwMzEsMHgwMDAwMDAzMiwweDAw
MDAwMDA5LDB4MDAwNDAwMmIsCi0JMHgwMDAwMDAxNiwweDAwMDAwMDMzLDB4MDAwMDAwMDIsMHgw
MDA0MDAyMCwweDAwMDAwMDM0LDB4MDAwMDAwMDksMHgwMDAwMDAwNiwweDAwMDMwMDFkLAotCTB4
MDAwMDAwM2IsMHgwMDAwMDAwNiwweDAwMDMwMDFlLDB4MDAwMDAwM2MsMHgwMDAwMDAzYiwweDAw
MDQwMDIwLDB4MDAwMDAwM2QsMHgwMDAwMDAwMiwKLQkweDAwMDAwMDNjLDB4MDAwNDAwM2IsMHgw
MDAwMDAzZCwweDAwMDAwMDNlLDB4MDAwMDAwMDIsMHgwMDAzMDAxZCwweDAwMDAwMDU2LDB4MDAw
MDAwMDYsCi0JMHgwMDAzMDAxZSwweDAwMDAwMDU3LDB4MDAwMDAwNTYsMHgwMDA0MDAyMCwweDAw
MDAwMDU4LDB4MDAwMDAwMDIsMHgwMDAwMDA1NywweDAwMDQwMDNiLAotCTB4MDAwMDAwNTgsMHgw
MDAwMDA1OSwweDAwMDAwMDAyLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDYxLDB4MDAw
MDAwMDIsMHgwMDA0MDAxNywKLQkweDAwMDAwMDY5LDB4MDAwMDAwMDYsMHgwMDAwMDAwMywweDAw
MDQwMDIwLDB4MDAwMDAwNmEsMHgwMDAwMDAwMSwweDAwMDAwMDY5LDB4MDAwNDAwM2IsCi0JMHgw
MDAwMDA2YSwweDAwMDAwMDZiLDB4MDAwMDAwMDEsMHgwMDA0MDAyYiwweDAwMDAwMDA2LDB4MDAw
MDAwNmMsMHgwMDAwMDAwMCwweDAwMDQwMDIwLAotCTB4MDAwMDAwNmQsMHgwMDAwMDAwMSwweDAw
MDAwMDA2LDB4MDAwMjAwMTQsMHgwMDAwMDA3MCwweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgwMDAw
MDA5MCwKLQkweDAwMDAwMDAzLDB4MDAwMzAwMWQsMHgwMDAwMDBjMywweDAwMDAwMDA2LDB4MDAw
MzAwMWUsMHgwMDAwMDBjNCwweDAwMDAwMGMzLDB4MDAwNDAwMjAsCi0JMHgwMDAwMDBjNSwweDAw
MDAwMDAyLDB4MDAwMDAwYzQsMHgwMDA0MDAzYiwweDAwMDAwMGM1LDB4MDAwMDAwYzYsMHgwMDAw
MDAwMiwweDAwMDQwMDJiLAotCTB4MDAwMDAwMDYsMHgwMDAwMDBkYSwweDAwMDAwMDAzLDB4MDAw
NDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMGU0LDB4MDAwMDAwMDQsMHgwMDA0MDAyYiwKLQkweDAw
MDAwMDA2LDB4MDAwMDAwZWMsMHgwMDAwMDA0MCwweDAwMDYwMDJjLDB4MDAwMDAwNjksMHgwMDAw
MDBlZCwweDAwMDAwMGVjLDB4MDAwMDAwMjAsCi0JMHgwMDAwMDAyMCwweDAwMDUwMDM2LDB4MDAw
MDAwMDIsMHgwMDAwMDAwNCwweDAwMDAwMDAwLDB4MDAwMDAwMDMsMHgwMDAyMDBmOCwweDAwMDAw
MDA1LAotCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDU1LDB4MDAwMDAwMDcsMHgwMDA0
MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNWUsMHgwMDAwMDAwNywKLQkweDAwMDQwMDNiLDB4MDAw
MDAwMDcsMHgwMDAwMDA2NSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAw
MDc1LDB4MDAwMDAwMDcsCi0JMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNzYsMHgwMDAw
MDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3OCwweDAwMDAwMDA3LAotCTB4MDAw
NDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDdhLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAw
MDA3LDB4MDAwMDAwN2IsMHgwMDAwMDAwNywKLQkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAw
MDA4MywweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDg0LDB4MDAwMDAw
MDcsCi0JMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwODcsMHgwMDAwMDAwNywweDAwMDQw
MDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBhMCwweDAwMDAwMDA3LAotCTB4MDAwNDAwM2IsMHgwMDAw
MDAwNywweDAwMDAwMGExLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAw
YWEsMHgwMDAwMDAwNywKLQkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBhYiwweDAwMDAw
MDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGFmLDB4MDAwMDAwMDcsCi0JMHgwMDA0
MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYjEsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAw
MDcsMHgwMDAwMDBiYywweDAwMDAwMDA3LAotCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAw
MGJlLDB4MDAwMDAwMDcsMHgwMDA1MDA0MSwweDAwMDAwMDM0LDB4MDAwMDAwNWEsMHgwMDAwMDAz
MiwKLQkweDAwMDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDViLDB4MDAwMDAw
NWEsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwNWMsCi0JMHgwMDAwMDA1OSwweDAwMDAw
MDE3LDB4MDAwMDAwNWIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNWQsMHgwMDAwMDA1
YywweDAwMDMwMDNlLAotCTB4MDAwMDAwNTUsMHgwMDAwMDA1ZCwweDAwMDUwMDQxLDB4MDAwMDAw
MzQsMHgwMDAwMDA1ZiwweDAwMDAwMDMyLDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwKLQkweDAwMDAw
MDA2LDB4MDAwMDAwNjAsMHgwMDAwMDA1ZiwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA2
MiwweDAwMDAwMDYwLDB4MDAwMDAwNjEsCi0JMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAw
NjMsMHgwMDAwMDA1OSwweDAwMDAwMDE3LDB4MDAwMDAwNjIsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LAotCTB4MDAwMDAwNjQsMHgwMDAwMDA2MywweDAwMDMwMDNlLDB4MDAwMDAwNWUsMHgwMDAwMDA2
NCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2NiwKLQkweDAwMDAwMDVlLDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwweDAwMDAwMDY3LDB4MDAwMDAwNTUsMHgwMDA1MDA4MCwweDAwMDAwMDA2
LDB4MDAwMDAwNjgsCi0JMHgwMDAwMDA2NiwweDAwMDAwMDY3LDB4MDAwMzAwM2UsMHgwMDAwMDA2
NSwweDAwMDAwMDY4LDB4MDAwNTAwNDEsMHgwMDAwMDA2ZCwweDAwMDAwMDZlLAotCTB4MDAwMDAw
NmIsMHgwMDAwMDA2YywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2ZiwweDAwMDAwMDZl
LDB4MDAwNTAwYWUsMHgwMDAwMDA3MCwKLQkweDAwMDAwMDcxLDB4MDAwMDAwNmYsMHgwMDAwMDAy
MCwweDAwMDMwMGY3LDB4MDAwMDAwNzMsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwNzEs
Ci0JMHgwMDAwMDA3MiwweDAwMDAwMDczLDB4MDAwMjAwZjgsMHgwMDAwMDA3MiwweDAwMDEwMGZk
LDB4MDAwMjAwZjgsMHgwMDAwMDA3MywweDAwMDMwMDNlLAotCTB4MDAwMDAwNzUsMHgwMDAwMDA2
YywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3NywweDAwMDAwMDVlLDB4MDAwMzAwM2Us
MHgwMDAwMDA3NiwKLQkweDAwMDAwMDc3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDc5
LDB4MDAwMDAwNTUsMHgwMDAzMDAzZSwweDAwMDAwMDc4LDB4MDAwMDAwNzksCi0JMHgwMDAzMDAz
ZSwweDAwMDAwMDdhLDB4MDAwMDAwNmMsMHgwMDAzMDAzZSwweDAwMDAwMDdiLDB4MDAwMDAwNmMs
MHgwMDAyMDBmOSwweDAwMDAwMDdjLAotCTB4MDAwMjAwZjgsMHgwMDAwMDA3YywweDAwMDQwMGY2
LDB4MDAwMDAwN2UsMHgwMDAwMDA3ZiwweDAwMDAwMDAwLDB4MDAwMjAwZjksMHgwMDAwMDA4MCwK
LQkweDAwMDIwMGY4LDB4MDAwMDAwODAsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwODEs
MHgwMDAwMDA3OCwweDAwMDUwMGFjLDB4MDAwMDAwNzAsCi0JMHgwMDAwMDA4MiwweDAwMDAwMDgx
LDB4MDAwMDAwNmMsMHgwMDA0MDBmYSwweDAwMDAwMDgyLDB4MDAwMDAwN2QsMHgwMDAwMDA3ZSww
eDAwMDIwMGY4LAotCTB4MDAwMDAwN2QsMHgwMDAzMDAzZSwweDAwMDAwMDgzLDB4MDAwMDAwMjUs
MHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwODUsMHgwMDAwMDA3NiwKLQkweDAwMDUwMDgw
LDB4MDAwMDAwMDYsMHgwMDAwMDA4NiwweDAwMDAwMDg1LDB4MDAwMDAwMTksMHgwMDAzMDAzZSww
eDAwMDAwMDc2LDB4MDAwMDAwODYsCi0JMHgwMDAzMDAzZSwweDAwMDAwMDg3LDB4MDAwMDAwODUs
MHgwMDA1MDAzOSwweDAwMDAwMDA2LDB4MDAwMDAwODgsMHgwMDAwMDAwYSwweDAwMDAwMDg3LAot
CTB4MDAwMzAwM2UsMHgwMDAwMDA4NCwweDAwMDAwMDg4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDg5LDB4MDAwMDAwN2EsMHgwMDA1MDBhYSwKLQkweDAwMDAwMDcwLDB4MDAwMDAwOGEs
MHgwMDAwMDA4OSwweDAwMDAwMDZjLDB4MDAwMzAwZjcsMHgwMDAwMDA4YywweDAwMDAwMDAwLDB4
MDAwNDAwZmEsCi0JMHgwMDAwMDA4YSwweDAwMDAwMDhiLDB4MDAwMDAwOGMsMHgwMDAyMDBmOCww
eDAwMDAwMDhiLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDhkLAotCTB4MDAwMDAwODQs
MHgwMDAzMDAzZSwweDAwMDAwMDdiLDB4MDAwMDAwOGQsMHgwMDAyMDBmOSwweDAwMDAwMDhjLDB4
MDAwMjAwZjgsMHgwMDAwMDA4YywKLQkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4ZSww
eDAwMDAwMDc4LDB4MDAwNTAwODIsMHgwMDAwMDAwNiwweDAwMDAwMDhmLDB4MDAwMDAwOGUsCi0J
MHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4MDAwMDAwNzgsMHgwMDAwMDA4ZiwweDAwMDUwMDQxLDB4
MDAwMDAwMzQsMHgwMDAwMDA5MSwweDAwMDAwMDMyLAotCTB4MDAwMDAwOTAsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwOTIsMHgwMDAwMDA5MSwweDAwMDUwMGFhLDB4MDAwMDAwNzAsMHgw
MDAwMDA5MywKLQkweDAwMDAwMDkyLDB4MDAwMDAwMjAsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwOTQsMHgwMDAwMDA4NCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDA5NSww
eDAwMDAwMDgzLDB4MDAwNTAwYWEsMHgwMDAwMDA3MCwweDAwMDAwMDk2LDB4MDAwMDAwOTQsMHgw
MDAwMDA5NSwweDAwMDUwMGE3LAotCTB4MDAwMDAwNzAsMHgwMDAwMDA5NywweDAwMDAwMDkzLDB4
MDAwMDAwOTYsMHgwMDAzMDBmNywweDAwMDAwMDk5LDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwKLQkw
eDAwMDAwMDk3LDB4MDAwMDAwOTgsMHgwMDAwMDBhZSwweDAwMDIwMGY4LDB4MDAwMDAwOTgsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOWEsCi0JMHgwMDAwMDA3YSwweDAwMDUwMGFjLDB4
MDAwMDAwNzAsMHgwMDAwMDA5YiwweDAwMDAwMDlhLDB4MDAwMDAwMjAsMHgwMDAzMDBmNywweDAw
MDAwMDlkLAotCTB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDliLDB4MDAwMDAwOWMsMHgw
MDAwMDA5ZCwweDAwMDIwMGY4LDB4MDAwMDAwOWMsMHgwMDA0MDAzZCwKLQkweDAwMDAwMDA2LDB4
MDAwMDAwOWUsMHgwMDAwMDA3NSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA5ZiwweDAw
MDAwMDllLDB4MDAwMDAwMTksCi0JMHgwMDAzMDAzZSwweDAwMDAwMDc1LDB4MDAwMDAwOWYsMHgw
MDAzMDAzZSwweDAwMDAwMGEwLDB4MDAwMDAwOWUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4
MDAwMDAwYTIsMHgwMDAwMDA3YiwweDAwMDMwMDNlLDB4MDAwMDAwYTEsMHgwMDAwMDBhMiwweDAw
MDYwMDM5LDB4MDAwMDAwMDIsMHgwMDAwMDBhMywKLQkweDAwMDAwMDBmLDB4MDAwMDAwYTAsMHgw
MDAwMDBhMSwweDAwMDIwMGY5LDB4MDAwMDAwOWQsMHgwMDAyMDBmOCwweDAwMDAwMDlkLDB4MDAw
NDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMGE0LDB4MDAwMDAwN2EsMHgwMDA1MDBhYywweDAw
MDAwMDcwLDB4MDAwMDAwYTUsMHgwMDAwMDBhNCwweDAwMDAwMDZjLAotCTB4MDAwMzAwZjcsMHgw
MDAwMDBhNywweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDBhNSwweDAwMDAwMGE2LDB4MDAw
MDAwYTcsMHgwMDAyMDBmOCwKLQkweDAwMDAwMGE2LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMGE4LDB4MDAwMDAwNzUsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYTksCi0JMHgw
MDAwMDBhOCwweDAwMDAwMDE5LDB4MDAwMzAwM2UsMHgwMDAwMDA3NSwweDAwMDAwMGE5LDB4MDAw
MzAwM2UsMHgwMDAwMDBhYSwweDAwMDAwMGE4LAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMGFjLDB4MDAwMDAwODMsMHgwMDAzMDAzZSwweDAwMDAwMGFiLDB4MDAwMDAwYWMsMHgwMDA2
MDAzOSwKLQkweDAwMDAwMDAyLDB4MDAwMDAwYWQsMHgwMDAwMDAwZiwweDAwMDAwMGFhLDB4MDAw
MDAwYWIsMHgwMDAyMDBmOSwweDAwMDAwMGE3LDB4MDAwMjAwZjgsCi0JMHgwMDAwMDBhNywweDAw
MDMwMDNlLDB4MDAwMDAwN2EsMHgwMDAwMDA2YywweDAwMDIwMGY5LDB4MDAwMDAwOTksMHgwMDAy
MDBmOCwweDAwMDAwMGFlLAotCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGIwLDB4MDAw
MDAwNzUsMHgwMDAzMDAzZSwweDAwMDAwMGFmLDB4MDAwMDAwYjAsMHgwMDA0MDAzZCwKLQkweDAw
MDAwMDA2LDB4MDAwMDAwYjIsMHgwMDAwMDA4NCwweDAwMDMwMDNlLDB4MDAwMDAwYjEsMHgwMDAw
MDBiMiwweDAwMDYwMDM5LDB4MDAwMDAwMDIsCi0JMHgwMDAwMDBiMywweDAwMDAwMDBmLDB4MDAw
MDAwYWYsMHgwMDAwMDBiMSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiNCwweDAwMDAw
MDc1LAotCTB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGI1LDB4MDAwMDAwYjQsMHgwMDAw
MDAxOSwweDAwMDMwMDNlLDB4MDAwMDAwNzUsMHgwMDAwMDBiNSwKLQkweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDBiNiwweDAwMDAwMDdhLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAw
MGI3LDB4MDAwMDAwYjYsCi0JMHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4MDAwMDAwN2EsMHgwMDAw
MDBiNywweDAwMDIwMGY5LDB4MDAwMDAwOTksMHgwMDAyMDBmOCwweDAwMDAwMDk5LAotCTB4MDAw
MjAwZjksMHgwMDAwMDA3ZiwweDAwMDIwMGY4LDB4MDAwMDAwN2YsMHgwMDAyMDBmOSwweDAwMDAw
MDdjLDB4MDAwMjAwZjgsMHgwMDAwMDA3ZSwKLQkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDBiOCwweDAwMDAwMDdhLDB4MDAwNTAwYWMsMHgwMDAwMDA3MCwweDAwMDAwMGI5LDB4MDAwMDAw
YjgsCi0JMHgwMDAwMDAyMCwweDAwMDMwMGY3LDB4MDAwMDAwYmIsMHgwMDAwMDAwMCwweDAwMDQw
MGZhLDB4MDAwMDAwYjksMHgwMDAwMDBiYSwweDAwMDAwMGJiLAotCTB4MDAwMjAwZjgsMHgwMDAw
MDBiYSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiZCwweDAwMDAwMDc1LDB4MDAwMzAw
M2UsMHgwMDAwMDBiYywKLQkweDAwMDAwMGJkLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MGJmLDB4MDAwMDAwN2IsMHgwMDAzMDAzZSwweDAwMDAwMGJlLDB4MDAwMDAwYmYsCi0JMHgwMDA2
MDAzOSwweDAwMDAwMDAyLDB4MDAwMDAwYzAsMHgwMDAwMDAwZiwweDAwMDAwMGJjLDB4MDAwMDAw
YmUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwYzEsMHgwMDAwMDA3NSwweDAwMDUw
MDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBjMiwweDAwMDAwMGMxLDB4MDAwMDAwMTksMHgwMDAzMDAz
ZSwKLQkweDAwMDAwMDc1LDB4MDAwMDAwYzIsMHgwMDAyMDBmOSwweDAwMDAwMGJiLDB4MDAwMjAw
ZjgsMHgwMDAwMDBiYiwweDAwMDUwMDQxLDB4MDAwMDAwMzQsCi0JMHgwMDAwMDBjNywweDAwMDAw
MDMyLDB4MDAwMDAwMTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYzgsMHgwMDAwMDBj
NywweDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDBjOSwweDAwMDAwMDc1LDB4MDAwNjAw
NDEsMHgwMDAwMDAxYiwweDAwMDAwMGNhLDB4MDAwMDAwYzYsMHgwMDAwMDAxNywKLQkweDAwMDAw
MGM4LDB4MDAwMzAwM2UsMHgwMDAwMDBjYSwweDAwMDAwMGM5LDB4MDAwNTAwNDEsMHgwMDAwMDAz
NCwweDAwMDAwMGNiLDB4MDAwMDAwMzIsCi0JMHgwMDAwMDAxOSwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDBjYywweDAwMDAwMGNiLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGNk
LAotCTB4MDAwMDAwY2MsMHgwMDAwMDAyMCwweDAwMDUwMDQxLDB4MDAwMDAwMzQsMHgwMDAwMDBj
ZSwweDAwMDAwMDMyLDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwKLQkweDAwMDAwMDA2LDB4MDAwMDAw
Y2YsMHgwMDAwMDBjZSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBkMCwweDAwMDAwMGNm
LDB4MDAwMDAwMjAsCi0JMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwZDEsMHgwMDAwMDA1
OSwweDAwMDAwMDE3LDB4MDAwMDAwZDAsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAw
ZDIsMHgwMDAwMDBkMSwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDBkMywweDAwMDAwMGM2
LDB4MDAwMDAwMTcsMHgwMDAwMDBjZCwKLQkweDAwMDMwMDNlLDB4MDAwMDAwZDMsMHgwMDAwMDBk
MiwweDAwMDUwMDQxLDB4MDAwMDAwMzQsMHgwMDAwMDBkNCwweDAwMDAwMDMyLDB4MDAwMDAwMTks
Ci0JMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZDUsMHgwMDAwMDBkNCwweDAwMDUwMDgw
LDB4MDAwMDAwMDYsMHgwMDAwMDBkNiwweDAwMDAwMGQ1LAotCTB4MDAwMDAwNjEsMHgwMDA2MDA0
MSwweDAwMDAwMDFiLDB4MDAwMDAwZDcsMHgwMDAwMDBjNiwweDAwMDAwMDE3LDB4MDAwMDAwZDYs
MHgwMDAzMDAzZSwKLQkweDAwMDAwMGQ3LDB4MDAwMDAwNmMsMHgwMDA1MDA0MSwweDAwMDAwMDM0
LDB4MDAwMDAwZDgsMHgwMDAwMDAzMiwweDAwMDAwMDE5LDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAw
NiwweDAwMDAwMGQ5LDB4MDAwMDAwZDgsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwZGIs
MHgwMDAwMDBkOSwweDAwMDAwMGRhLAotCTB4MDAwNTAwNDEsMHgwMDAwMDAzNCwweDAwMDAwMGRj
LDB4MDAwMDAwMzIsMHgwMDAwMDAxNywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBkZCwK
LQkweDAwMDAwMGRjLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGRlLDB4MDAwMDAwZGQs
MHgwMDAwMDBkYSwweDAwMDYwMDQxLDB4MDAwMDAwMWIsCi0JMHgwMDAwMDBkZiwweDAwMDAwMDU5
LDB4MDAwMDAwMTcsMHgwMDAwMDBkZSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBlMCww
eDAwMDAwMGRmLAotCTB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGUxLDB4MDAwMDAwYzYs
MHgwMDAwMDAxNywweDAwMDAwMGRiLDB4MDAwMzAwM2UsMHgwMDAwMDBlMSwKLQkweDAwMDAwMGUw
LDB4MDAwNTAwNDEsMHgwMDAwMDAzNCwweDAwMDAwMGUyLDB4MDAwMDAwMzIsMHgwMDAwMDAxOSww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDBlMywweDAwMDAwMGUyLDB4MDAwNTAwODAs
MHgwMDAwMDAwNiwweDAwMDAwMGU1LDB4MDAwMDAwZTMsMHgwMDAwMDBlNCwweDAwMDUwMDQxLAot
CTB4MDAwMDAwMzQsMHgwMDAwMDBlNiwweDAwMDAwMDMyLDB4MDAwMDAwMTcsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwZTcsMHgwMDAwMDBlNiwKLQkweDAwMDUwMDgwLDB4MDAwMDAwMDYs
MHgwMDAwMDBlOCwweDAwMDAwMGU3LDB4MDAwMDAwZTQsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4
MDAwMDAwZTksCi0JMHgwMDAwMDA1OSwweDAwMDAwMDE3LDB4MDAwMDAwZTgsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwZWEsMHgwMDAwMDBlOSwweDAwMDYwMDQxLAotCTB4MDAwMDAwMWIs
MHgwMDAwMDBlYiwweDAwMDAwMGM2LDB4MDAwMDAwMTcsMHgwMDAwMDBlNSwweDAwMDMwMDNlLDB4
MDAwMDAwZWIsMHgwMDAwMDBlYSwKKwkweDAwMDAwMDAyLDB4MDAwNDAwMjAsMHgwMDAwMDAxYiww
eDAwMDAwMDAyLDB4MDAwMDAwMDYsMHgwMDA0MDAyYiwweDAwMDAwMDA2LDB4MDAwMDAwMjAsCisJ
MHgwMDAwMDAwMywweDAwMDQwMDJiLDB4MDAwMDAwMTYsMHgwMDAwMDAyMiwweDAwMDAwMDAzLDB4
MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDI4LAorCTB4MDAwMDAwZmYsMHgwMDA2MDAxZSww
eDAwMDAwMDJlLDB4MDAwMDAwMDYsMHgwMDAwMDAwNiwweDAwMDAwMDA2LDB4MDAwMDAwMDYsMHgw
MDA0MDAyMCwKKwkweDAwMDAwMDJmLDB4MDAwMDAwMDksMHgwMDAwMDAyZSwweDAwMDQwMDNiLDB4
MDAwMDAwMmYsMHgwMDAwMDAzMCwweDAwMDAwMDA5LDB4MDAwNDAwMjAsCisJMHgwMDAwMDAzMSww
eDAwMDAwMDA5LDB4MDAwMDAwMDYsMHgwMDAzMDAxZCwweDAwMDAwMDM4LDB4MDAwMDAwMDYsMHgw
MDAzMDAxZSwweDAwMDAwMDM5LAorCTB4MDAwMDAwMzgsMHgwMDA0MDAyMCwweDAwMDAwMDNhLDB4
MDAwMDAwMDIsMHgwMDAwMDAzOSwweDAwMDQwMDNiLDB4MDAwMDAwM2EsMHgwMDAwMDAzYiwKKwkw
eDAwMDAwMDAyLDB4MDAwNDAwMmIsMHgwMDAwMDAxNiwweDAwMDAwMDQzLDB4MDAwMDAwZmYsMHgw
MDAzMDAxZCwweDAwMDAwMDUzLDB4MDAwMDAwMDYsCisJMHgwMDAzMDAxZSwweDAwMDAwMDU0LDB4
MDAwMDAwNTMsMHgwMDA0MDAyMCwweDAwMDAwMDU1LDB4MDAwMDAwMDIsMHgwMDAwMDA1NCwweDAw
MDQwMDNiLAorCTB4MDAwMDAwNTUsMHgwMDAwMDA1NiwweDAwMDAwMDAyLDB4MDAwNDAwMmIsMHgw
MDAwMDAwNiwweDAwMDAwMDVlLDB4MDAwMDAwMDIsMHgwMDA0MDAxNywKKwkweDAwMDAwMDY2LDB4
MDAwMDAwMDYsMHgwMDAwMDAwMywweDAwMDQwMDIwLDB4MDAwMDAwNjcsMHgwMDAwMDAwMSwweDAw
MDAwMDY2LDB4MDAwNDAwM2IsCisJMHgwMDAwMDA2NywweDAwMDAwMDY4LDB4MDAwMDAwMDEsMHgw
MDA0MDAyYiwweDAwMDAwMDA2LDB4MDAwMDAwNjksMHgwMDAwMDAwMCwweDAwMDQwMDIwLAorCTB4
MDAwMDAwNmEsMHgwMDAwMDAwMSwweDAwMDAwMDA2LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAw
MDAwMDZkLDB4MDAwMDAwMDEsMHgwMDAyMDAxNCwKKwkweDAwMDAwMDZlLDB4MDAwNDAwMmIsMHgw
MDAwMDAxNiwweDAwMDAwMDg0LDB4MDAwMDAwMDEsMHgwMDAzMDAxZCwweDAwMDAwMGMxLDB4MDAw
MDAwMDYsCisJMHgwMDAzMDAxZSwweDAwMDAwMGMyLDB4MDAwMDAwYzEsMHgwMDA0MDAyMCwweDAw
MDAwMGMzLDB4MDAwMDAwMDIsMHgwMDAwMDBjMiwweDAwMDQwMDNiLAorCTB4MDAwMDAwYzMsMHgw
MDAwMDBjNCwweDAwMDAwMDAyLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMGUxLDB4MDAw
MDAwMDQsMHgwMDA0MDAyYiwKKwkweDAwMDAwMDA2LDB4MDAwMDAwZTksMHgwMDAwMDA0MCwweDAw
MDYwMDJjLDB4MDAwMDAwNjYsMHgwMDAwMDBlYSwweDAwMDAwMGU5LDB4MDAwMDAwNmQsCisJMHgw
MDAwMDA2ZCwweDAwMDUwMDM2LDB4MDAwMDAwMDIsMHgwMDAwMDAwNCwweDAwMDAwMDAwLDB4MDAw
MDAwMDMsMHgwMDAyMDBmOCwweDAwMDAwMDA1LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAw
MDAwMDUyLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNWIsMHgwMDAw
MDAwNywKKwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA2MiwweDAwMDAwMDA3LDB4MDAw
NDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDczLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAw
MDAwMDA3LDB4MDAwMDAwNzQsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAw
MDA3NiwweDAwMDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDc4LDB4MDAw
MDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNzksMHgwMDAwMDAwNywKKwkweDAw
MDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA4MSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAw
MDAwNywweDAwMDAwMDgyLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAw
MDAwODYsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA5ZSwweDAwMDAw
MDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDlmLDB4MDAwMDAwMDcsMHgwMDA0
MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYTgsMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4MDAw
MDAwMDcsMHgwMDAwMDBhOSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAw
MGFkLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYWYsMHgwMDAw
MDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBiYSwweDAwMDAwMDA3LAorCTB4MDAw
NDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGJjLDB4MDAwMDAwMDcsMHgwMDA1MDA0MSwweDAwMDAw
MDMxLDB4MDAwMDAwNTcsMHgwMDAwMDAzMCwKKwkweDAwMDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAw
MDAwNiwweDAwMDAwMDU4LDB4MDAwMDAwNTcsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAw
NTksCisJMHgwMDAwMDA1NiwweDAwMDAwMDE3LDB4MDAwMDAwNTgsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwNWEsMHgwMDAwMDA1OSwweDAwMDMwMDNlLAorCTB4MDAwMDAwNTIsMHgwMDAw
MDA1YSwweDAwMDUwMDQxLDB4MDAwMDAwMzEsMHgwMDAwMDA1YywweDAwMDAwMDMwLDB4MDAwMDAw
MTcsMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwNWQsMHgwMDAwMDA1YywweDAwMDUw
MDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA1ZiwweDAwMDAwMDVkLDB4MDAwMDAwNWUsCisJMHgwMDA2
MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwNjAsMHgwMDAwMDA1NiwweDAwMDAwMDE3LDB4MDAwMDAw
NWYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwNjEsMHgwMDAwMDA2MCwweDAwMDMw
MDNlLDB4MDAwMDAwNWIsMHgwMDAwMDA2MSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2
MywKKwkweDAwMDAwMDViLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDY0LDB4MDAwMDAw
NTIsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwNjUsCisJMHgwMDAwMDA2MywweDAwMDAw
MDY0LDB4MDAwMzAwM2UsMHgwMDAwMDA2MiwweDAwMDAwMDY1LDB4MDAwNTAwNDEsMHgwMDAwMDA2
YSwweDAwMDAwMDZiLAorCTB4MDAwMDAwNjgsMHgwMDAwMDA2OSwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDA2YywweDAwMDAwMDZiLDB4MDAwNTAwYWUsMHgwMDAwMDA2ZSwKKwkweDAwMDAw
MDZmLDB4MDAwMDAwNmMsMHgwMDAwMDA2ZCwweDAwMDMwMGY3LDB4MDAwMDAwNzEsMHgwMDAwMDAw
MCwweDAwMDQwMGZhLDB4MDAwMDAwNmYsCisJMHgwMDAwMDA3MCwweDAwMDAwMDcxLDB4MDAwMjAw
ZjgsMHgwMDAwMDA3MCwweDAwMDEwMGZkLDB4MDAwMjAwZjgsMHgwMDAwMDA3MSwweDAwMDMwMDNl
LAorCTB4MDAwMDAwNzMsMHgwMDAwMDA2OSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3
NSwweDAwMDAwMDViLDB4MDAwMzAwM2UsMHgwMDAwMDA3NCwKKwkweDAwMDAwMDc1LDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwweDAwMDAwMDc3LDB4MDAwMDAwNTIsMHgwMDAzMDAzZSwweDAwMDAwMDc2
LDB4MDAwMDAwNzcsCisJMHgwMDAzMDAzZSwweDAwMDAwMDc4LDB4MDAwMDAwNjksMHgwMDAzMDAz
ZSwweDAwMDAwMDc5LDB4MDAwMDAwNjksMHgwMDAyMDBmOSwweDAwMDAwMDdhLAorCTB4MDAwMjAw
ZjgsMHgwMDAwMDA3YSwweDAwMDQwMGY2LDB4MDAwMDAwN2MsMHgwMDAwMDA3ZCwweDAwMDAwMDAw
LDB4MDAwMjAwZjksMHgwMDAwMDA3ZSwKKwkweDAwMDIwMGY4LDB4MDAwMDAwN2UsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwN2YsMHgwMDAwMDA3NiwweDAwMDUwMGFjLDB4MDAwMDAwNmUs
CisJMHgwMDAwMDA4MCwweDAwMDAwMDdmLDB4MDAwMDAwNjksMHgwMDA0MDBmYSwweDAwMDAwMDgw
LDB4MDAwMDAwN2IsMHgwMDAwMDA3YywweDAwMDIwMGY4LAorCTB4MDAwMDAwN2IsMHgwMDAzMDAz
ZSwweDAwMDAwMDgxLDB4MDAwMDAwMjgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwODMs
MHgwMDAwMDA3NCwKKwkweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA4NSwweDAwMDAwMDgz
LDB4MDAwMDAwODQsMHgwMDAzMDAzZSwweDAwMDAwMDc0LDB4MDAwMDAwODUsCisJMHgwMDAzMDAz
ZSwweDAwMDAwMDg2LDB4MDAwMDAwODMsMHgwMDA1MDAzOSwweDAwMDAwMDA2LDB4MDAwMDAwODcs
MHgwMDAwMDAwYSwweDAwMDAwMDg2LAorCTB4MDAwMzAwM2UsMHgwMDAwMDA4MiwweDAwMDAwMDg3
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDg4LDB4MDAwMDAwNzgsMHgwMDA1MDBhYSwK
KwkweDAwMDAwMDZlLDB4MDAwMDAwODksMHgwMDAwMDA4OCwweDAwMDAwMDY5LDB4MDAwMzAwZjcs
MHgwMDAwMDA4YiwweDAwMDAwMDAwLDB4MDAwNDAwZmEsCisJMHgwMDAwMDA4OSwweDAwMDAwMDhh
LDB4MDAwMDAwOGIsMHgwMDAyMDBmOCwweDAwMDAwMDhhLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDhjLAorCTB4MDAwMDAwODIsMHgwMDAzMDAzZSwweDAwMDAwMDc5LDB4MDAwMDAwOGMs
MHgwMDAyMDBmOSwweDAwMDAwMDhiLDB4MDAwMjAwZjgsMHgwMDAwMDA4YiwKKwkweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDA4ZCwweDAwMDAwMDc2LDB4MDAwNTAwODIsMHgwMDAwMDAwNiww
eDAwMDAwMDhlLDB4MDAwMDAwOGQsCisJMHgwMDAwMDA4NCwweDAwMDMwMDNlLDB4MDAwMDAwNzYs
MHgwMDAwMDA4ZSwweDAwMDUwMDQxLDB4MDAwMDAwMzEsMHgwMDAwMDA4ZiwweDAwMDAwMDMwLAor
CTB4MDAwMDAwMjIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOTAsMHgwMDAwMDA4Ziww
eDAwMDUwMGFhLDB4MDAwMDAwNmUsMHgwMDAwMDA5MSwKKwkweDAwMDAwMDkwLDB4MDAwMDAwNmQs
MHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOTIsMHgwMDAwMDA4MiwweDAwMDQwMDNkLDB4
MDAwMDAwMDYsCisJMHgwMDAwMDA5MywweDAwMDAwMDgxLDB4MDAwNTAwYWEsMHgwMDAwMDA2ZSww
eDAwMDAwMDk0LDB4MDAwMDAwOTIsMHgwMDAwMDA5MywweDAwMDUwMGE3LAorCTB4MDAwMDAwNmUs
MHgwMDAwMDA5NSwweDAwMDAwMDkxLDB4MDAwMDAwOTQsMHgwMDAzMDBmNywweDAwMDAwMDk3LDB4
MDAwMDAwMDAsMHgwMDA0MDBmYSwKKwkweDAwMDAwMDk1LDB4MDAwMDAwOTYsMHgwMDAwMDBhYyww
eDAwMDIwMGY4LDB4MDAwMDAwOTYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOTgsCisJ
MHgwMDAwMDA3OCwweDAwMDUwMGFjLDB4MDAwMDAwNmUsMHgwMDAwMDA5OSwweDAwMDAwMDk4LDB4
MDAwMDAwNmQsMHgwMDAzMDBmNywweDAwMDAwMDliLAorCTB4MDAwMDAwMDAsMHgwMDA0MDBmYSww
eDAwMDAwMDk5LDB4MDAwMDAwOWEsMHgwMDAwMDA5YiwweDAwMDIwMGY4LDB4MDAwMDAwOWEsMHgw
MDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwOWMsMHgwMDAwMDA3MywweDAwMDUwMDgwLDB4
MDAwMDAwMDYsMHgwMDAwMDA5ZCwweDAwMDAwMDljLDB4MDAwMDAwODQsCisJMHgwMDAzMDAzZSww
eDAwMDAwMDczLDB4MDAwMDAwOWQsMHgwMDAzMDAzZSwweDAwMDAwMDllLDB4MDAwMDAwOWMsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwYTAsMHgwMDAwMDA3OSwweDAwMDMwMDNlLDB4
MDAwMDAwOWYsMHgwMDAwMDBhMCwweDAwMDYwMDM5LDB4MDAwMDAwMDIsMHgwMDAwMDBhMSwKKwkw
eDAwMDAwMDBmLDB4MDAwMDAwOWUsMHgwMDAwMDA5ZiwweDAwMDIwMGY5LDB4MDAwMDAwOWIsMHgw
MDAyMDBmOCwweDAwMDAwMDliLDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMGEyLDB4
MDAwMDAwNzgsMHgwMDA1MDBhYywweDAwMDAwMDZlLDB4MDAwMDAwYTMsMHgwMDAwMDBhMiwweDAw
MDAwMDY5LAorCTB4MDAwMzAwZjcsMHgwMDAwMDBhNSwweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgw
MDAwMDBhMywweDAwMDAwMGE0LDB4MDAwMDAwYTUsMHgwMDAyMDBmOCwKKwkweDAwMDAwMGE0LDB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGE2LDB4MDAwMDAwNzMsMHgwMDA1MDA4MCwweDAw
MDAwMDA2LDB4MDAwMDAwYTcsCisJMHgwMDAwMDBhNiwweDAwMDAwMDg0LDB4MDAwMzAwM2UsMHgw
MDAwMDA3MywweDAwMDAwMGE3LDB4MDAwMzAwM2UsMHgwMDAwMDBhOCwweDAwMDAwMGE2LAorCTB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGFhLDB4MDAwMDAwODEsMHgwMDAzMDAzZSwweDAw
MDAwMGE5LDB4MDAwMDAwYWEsMHgwMDA2MDAzOSwKKwkweDAwMDAwMDAyLDB4MDAwMDAwYWIsMHgw
MDAwMDAwZiwweDAwMDAwMGE4LDB4MDAwMDAwYTksMHgwMDAyMDBmOSwweDAwMDAwMGE1LDB4MDAw
MjAwZjgsCisJMHgwMDAwMDBhNSwweDAwMDMwMDNlLDB4MDAwMDAwNzgsMHgwMDAwMDA2OSwweDAw
MDIwMGY5LDB4MDAwMDAwOTcsMHgwMDAyMDBmOCwweDAwMDAwMGFjLAorCTB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwweDAwMDAwMGFlLDB4MDAwMDAwNzMsMHgwMDAzMDAzZSwweDAwMDAwMGFkLDB4MDAw
MDAwYWUsMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwYjAsMHgwMDAwMDA4MiwweDAw
MDMwMDNlLDB4MDAwMDAwYWYsMHgwMDAwMDBiMCwweDAwMDYwMDM5LDB4MDAwMDAwMDIsCisJMHgw
MDAwMDBiMSwweDAwMDAwMDBmLDB4MDAwMDAwYWQsMHgwMDAwMDBhZiwweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDBiMiwweDAwMDAwMDczLAorCTB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAw
MDAwMGIzLDB4MDAwMDAwYjIsMHgwMDAwMDA4NCwweDAwMDMwMDNlLDB4MDAwMDAwNzMsMHgwMDAw
MDBiMywKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiNCwweDAwMDAwMDc4LDB4MDAw
NTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGI1LDB4MDAwMDAwYjQsCisJMHgwMDAwMDA4NCwweDAw
MDMwMDNlLDB4MDAwMDAwNzgsMHgwMDAwMDBiNSwweDAwMDIwMGY5LDB4MDAwMDAwOTcsMHgwMDAy
MDBmOCwweDAwMDAwMDk3LAorCTB4MDAwMjAwZjksMHgwMDAwMDA3ZCwweDAwMDIwMGY4LDB4MDAw
MDAwN2QsMHgwMDAyMDBmOSwweDAwMDAwMDdhLDB4MDAwMjAwZjgsMHgwMDAwMDA3YywKKwkweDAw
MDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiNiwweDAwMDAwMDc4LDB4MDAwNTAwYWMsMHgwMDAw
MDA2ZSwweDAwMDAwMGI3LDB4MDAwMDAwYjYsCisJMHgwMDAwMDA2ZCwweDAwMDMwMGY3LDB4MDAw
MDAwYjksMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwYjcsMHgwMDAwMDBiOCwweDAwMDAw
MGI5LAorCTB4MDAwMjAwZjgsMHgwMDAwMDBiOCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDBiYiwweDAwMDAwMDczLDB4MDAwMzAwM2UsMHgwMDAwMDBiYSwKKwkweDAwMDAwMGJiLDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGJkLDB4MDAwMDAwNzksMHgwMDAzMDAzZSwweDAwMDAw
MGJjLDB4MDAwMDAwYmQsCisJMHgwMDA2MDAzOSwweDAwMDAwMDAyLDB4MDAwMDAwYmUsMHgwMDAw
MDAwZiwweDAwMDAwMGJhLDB4MDAwMDAwYmMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAw
MDAwYmYsMHgwMDAwMDA3MywweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBjMCwweDAwMDAw
MGJmLDB4MDAwMDAwODQsMHgwMDAzMDAzZSwKKwkweDAwMDAwMDczLDB4MDAwMDAwYzAsMHgwMDAy
MDBmOSwweDAwMDAwMGI5LDB4MDAwMjAwZjgsMHgwMDAwMDBiOSwweDAwMDUwMDQxLDB4MDAwMDAw
MzEsCisJMHgwMDAwMDBjNSwweDAwMDAwMDMwLDB4MDAwMDAwODQsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwYzYsMHgwMDAwMDBjNSwweDAwMDQwMDNkLAorCTB4MDAwMDAwMDYsMHgwMDAw
MDBjNywweDAwMDAwMDczLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGM4LDB4MDAwMDAw
YzQsMHgwMDAwMDAxNywKKwkweDAwMDAwMGM2LDB4MDAwMzAwM2UsMHgwMDAwMDBjOCwweDAwMDAw
MGM3LDB4MDAwNTAwNDEsMHgwMDAwMDAzMSwweDAwMDAwMGM5LDB4MDAwMDAwMzAsCisJMHgwMDAw
MDA4NCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBjYSwweDAwMDAwMGM5LDB4MDAwNTAw
ODAsMHgwMDAwMDAwNiwweDAwMDAwMGNiLAorCTB4MDAwMDAwY2EsMHgwMDAwMDA2ZCwweDAwMDUw
MDQxLDB4MDAwMDAwMzEsMHgwMDAwMDBjYywweDAwMDAwMDMwLDB4MDAwMDAwMTcsMHgwMDA0MDAz
ZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwY2QsMHgwMDAwMDBjYywweDAwMDUwMDgwLDB4MDAwMDAw
MDYsMHgwMDAwMDBjZSwweDAwMDAwMGNkLDB4MDAwMDAwNmQsCisJMHgwMDA2MDA0MSwweDAwMDAw
MDFiLDB4MDAwMDAwY2YsMHgwMDAwMDA1NiwweDAwMDAwMDE3LDB4MDAwMDAwY2UsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwZDAsMHgwMDAwMDBjZiwweDAwMDYwMDQxLDB4MDAwMDAw
MWIsMHgwMDAwMDBkMSwweDAwMDAwMGM0LDB4MDAwMDAwMTcsMHgwMDAwMDBjYiwKKwkweDAwMDMw
MDNlLDB4MDAwMDAwZDEsMHgwMDAwMDBkMCwweDAwMDUwMDQxLDB4MDAwMDAwMzEsMHgwMDAwMDBk
MiwweDAwMDAwMDMwLDB4MDAwMDAwODQsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAw
ZDMsMHgwMDAwMDBkMiwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBkNCwweDAwMDAwMGQz
LAorCTB4MDAwMDAwNWUsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwZDUsMHgwMDAwMDBj
NCwweDAwMDAwMDE3LDB4MDAwMDAwZDQsMHgwMDAzMDAzZSwKKwkweDAwMDAwMGQ1LDB4MDAwMDAw
NjksMHgwMDA1MDA0MSwweDAwMDAwMDMxLDB4MDAwMDAwZDYsMHgwMDAwMDAzMCwweDAwMDAwMDg0
LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMGQ3LDB4MDAwMDAwZDYsMHgwMDA1MDA4
MCwweDAwMDAwMDA2LDB4MDAwMDAwZDgsMHgwMDAwMDBkNywweDAwMDAwMDIwLAorCTB4MDAwNTAw
NDEsMHgwMDAwMDAzMSwweDAwMDAwMGQ5LDB4MDAwMDAwMzAsMHgwMDAwMDAxNywweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDBkYSwKKwkweDAwMDAwMGQ5LDB4MDAwNTAwODAsMHgwMDAwMDAw
NiwweDAwMDAwMGRiLDB4MDAwMDAwZGEsMHgwMDAwMDAyMCwweDAwMDYwMDQxLDB4MDAwMDAwMWIs
CisJMHgwMDAwMDBkYywweDAwMDAwMDU2LDB4MDAwMDAwMTcsMHgwMDAwMDBkYiwweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDBkZCwweDAwMDAwMGRjLAorCTB4MDAwNjAwNDEsMHgwMDAwMDAx
YiwweDAwMDAwMGRlLDB4MDAwMDAwYzQsMHgwMDAwMDAxNywweDAwMDAwMGQ4LDB4MDAwMzAwM2Us
MHgwMDAwMDBkZSwKKwkweDAwMDAwMGRkLDB4MDAwNTAwNDEsMHgwMDAwMDAzMSwweDAwMDAwMGRm
LDB4MDAwMDAwMzAsMHgwMDAwMDA4NCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBl
MCwweDAwMDAwMGRmLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGUyLDB4MDAwMDAwZTAs
MHgwMDAwMDBlMSwweDAwMDUwMDQxLAorCTB4MDAwMDAwMzEsMHgwMDAwMDBlMywweDAwMDAwMDMw
LDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZTQsMHgwMDAwMDBlMywK
KwkweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBlNSwweDAwMDAwMGU0LDB4MDAwMDAwZTEs
MHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwZTYsCisJMHgwMDAwMDA1NiwweDAwMDAwMDE3
LDB4MDAwMDAwZTUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZTcsMHgwMDAwMDBlNiww
eDAwMDYwMDQxLAorCTB4MDAwMDAwMWIsMHgwMDAwMDBlOCwweDAwMDAwMGM0LDB4MDAwMDAwMTcs
MHgwMDAwMDBlMiwweDAwMDMwMDNlLDB4MDAwMDAwZTgsMHgwMDAwMDBlNywKIAkweDAwMDEwMGZk
LDB4MDAwMTAwMzgsMHgwMDA1MDAzNiwweDAwMDAwMDA2LDB4MDAwMDAwMGEsMHgwMDAwMDAwMCww
eDAwMDAwMDA4LDB4MDAwMzAwMzcsCiAJMHgwMDAwMDAwNywweDAwMDAwMDA5LDB4MDAwMjAwZjgs
MHgwMDAwMDAwYiwweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAxMSwweDAwMDAwMDA3LAog
CTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDFlLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiww
eDAwMDAwMDA3LDB4MDAwMDAwMjQsMHgwMDAwMDAwNywKLQkweDAwMDQwMDNiLDB4MDAwMDAwMDcs
MHgwMDAwMDAyNiwweDAwMDAwMDA3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDE4LDB4
MDAwMDAwMDksCi0JMHgwMDA1MDBjMiwweDAwMDAwMDA2LDB4MDAwMDAwMWEsMHgwMDAwMDAxOCww
eDAwMDAwMDE5LDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDFjLAotCTB4MDAwMDAwMTUs
MHgwMDAwMDAxNywweDAwMDAwMDFhLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDFkLDB4
MDAwMDAwMWMsMHgwMDAzMDAzZSwKLQkweDAwMDAwMDExLDB4MDAwMDAwMWQsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwMWYsMHgwMDAwMDAwOSwweDAwMDUwMGM3LDB4MDAwMDAwMDYsCi0J
MHgwMDAwMDAyMSwweDAwMDAwMDFmLDB4MDAwMDAwMjAsMHgwMDA1MDBjNCwweDAwMDAwMDA2LDB4
MDAwMDAwMjMsMHgwMDAwMDAyMSwweDAwMDAwMDIyLAotCTB4MDAwMzAwM2UsMHgwMDAwMDAxZSww
eDAwMDAwMDIzLDB4MDAwMzAwM2UsMHgwMDAwMDAyNCwweDAwMDAwMDI1LDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwKLQkweDAwMDAwMDI3LDB4MDAwMDAwMTEsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwMjgsMHgwMDAwMDAxZSwweDAwMDUwMGMyLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDAyOSww
eDAwMDAwMDI3LDB4MDAwMDAwMjgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMmEsMHgw
MDAwMDAyNCwweDAwMDUwMGM3LAotCTB4MDAwMDAwMDYsMHgwMDAwMDAyYiwweDAwMDAwMDI5LDB4
MDAwMDAwMmEsMHgwMDAzMDAzZSwweDAwMDAwMDI2LDB4MDAwMDAwMmIsMHgwMDA0MDAzZCwKLQkw
eDAwMDAwMDA2LDB4MDAwMDAwMmMsMHgwMDAwMDAyNiwweDAwMDIwMGZlLDB4MDAwMDAwMmMsMHgw
MDAxMDAzOCwweDAwMDUwMDM2LDB4MDAwMDAwMDIsCi0JMHgwMDAwMDAwZiwweDAwMDAwMDAwLDB4
MDAwMDAwMGMsMHgwMDAzMDAzNywweDAwMDAwMDA3LDB4MDAwMDAwMGQsMHgwMDAzMDAzNywweDAw
MDAwMDA3LAotCTB4MDAwMDAwMGUsMHgwMDAyMDBmOCwweDAwMDAwMDEwLDB4MDAwNDAwM2IsMHgw
MDAwMDAwNywweDAwMDAwMDJmLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKLQkweDAwMDAwMDA3LDB4
MDAwMDAwM2EsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA0MiwweDAw
MDAwMDA3LDB4MDAwNDAwM2IsCi0JMHgwMDAwMDAwNywweDAwMDAwMDQ2LDB4MDAwMDAwMDcsMHgw
MDA1MDA0MSwweDAwMDAwMDM0LDB4MDAwMDAwMzUsMHgwMDAwMDAzMiwweDAwMDAwMDMzLAotCTB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDM2LDB4MDAwMDAwMzUsMHgwMDA0MDAzZCwweDAw
MDAwMDA2LDB4MDAwMDAwMzcsMHgwMDAwMDAwZCwKLQkweDAwMDUwMGMyLDB4MDAwMDAwMDYsMHgw
MDAwMDAzOCwweDAwMDAwMDM3LDB4MDAwMDAwMTksMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAw
MDAwMzksCi0JMHgwMDAwMDAzNiwweDAwMDAwMDM4LDB4MDAwMzAwM2UsMHgwMDAwMDAyZiwweDAw
MDAwMDM5LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDNmLAotCTB4MDAwMDAwMmYsMHgw
MDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwNDAsMHgwMDAwMDAzZSwweDAwMDAwMDE3LDB4MDAw
MDAwM2YsMHgwMDA0MDAzZCwKLQkweDAwMDAwMDA2LDB4MDAwMDAwNDEsMHgwMDAwMDA0MCwweDAw
MDMwMDNlLDB4MDAwMDAwM2EsMHgwMDAwMDA0MSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgw
MDAwMDA0MywweDAwMDAwMDBkLDB4MDAwNTAwYzcsMHgwMDAwMDAwNiwweDAwMDAwMDQ0LDB4MDAw
MDAwNDMsMHgwMDAwMDAyMCwweDAwMDUwMGM0LAotCTB4MDAwMDAwMDYsMHgwMDAwMDA0NSwweDAw
MDAwMDQ0LDB4MDAwMDAwMjIsMHgwMDAzMDAzZSwweDAwMDAwMDQyLDB4MDAwMDAwNDUsMHgwMDAz
MDAzZSwKLQkweDAwMDAwMDQ2LDB4MDAwMDAwMjUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwNDcsMHgwMDAwMDA0NiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDA0OCwweDAw
MDAwMDQyLDB4MDAwNTAwYzQsMHgwMDAwMDAwNiwweDAwMDAwMDQ5LDB4MDAwMDAwNDcsMHgwMDAw
MDA0OCwweDAwMDQwMGM4LAotCTB4MDAwMDAwMDYsMHgwMDAwMDA0YSwweDAwMDAwMDQ5LDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDRiLDB4MDAwMDAwM2EsMHgwMDA1MDBjNywKLQkweDAw
MDAwMDA2LDB4MDAwMDAwNGMsMHgwMDAwMDA0YiwweDAwMDAwMDRhLDB4MDAwMzAwM2UsMHgwMDAw
MDAzYSwweDAwMDAwMDRjLDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDRkLDB4MDAw
MDAwMGUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNGUsMHgwMDAwMDA0MiwweDAwMDUw
MGM0LAotCTB4MDAwMDAwMDYsMHgwMDAwMDA0ZiwweDAwMDAwMDRkLDB4MDAwMDAwNGUsMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNTAsMHgwMDAwMDAzYSwKLQkweDAwMDUwMGM1LDB4MDAw
MDAwMDYsMHgwMDAwMDA1MSwweDAwMDAwMDUwLDB4MDAwMDAwNGYsMHgwMDAzMDAzZSwweDAwMDAw
MDNhLDB4MDAwMDAwNTEsCi0JMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNTIsMHgwMDAw
MDAyZiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA1MywweDAwMDAwMDNhLAotCTB4MDAw
NjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDU0LDB4MDAwMDAwM2UsMHgwMDAwMDAxNywweDAwMDAw
MDUyLDB4MDAwMzAwM2UsMHgwMDAwMDA1NCwKLQkweDAwMDAwMDUzLDB4MDAwMTAwZmQsMHgwMDAx
MDAzOAorCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDE4LDB4MDAwMDAwMDksMHgwMDA1
MDBjMiwweDAwMDAwMDA2LDB4MDAwMDAwMWEsMHgwMDAwMDAxOCwKKwkweDAwMDAwMDE5LDB4MDAw
NjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDFjLDB4MDAwMDAwMTUsMHgwMDAwMDAxNywweDAwMDAw
MDFhLDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMDFkLDB4MDAwMDAwMWMsMHgwMDAz
MDAzZSwweDAwMDAwMDExLDB4MDAwMDAwMWQsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAw
MDAwMWYsMHgwMDAwMDAwOSwweDAwMDUwMGM3LDB4MDAwMDAwMDYsMHgwMDAwMDAyMSwweDAwMDAw
MDFmLDB4MDAwMDAwMjAsMHgwMDA1MDBjNCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwMjMsMHgwMDAw
MDAyMSwweDAwMDAwMDIyLDB4MDAwMzAwM2UsMHgwMDAwMDAxZSwweDAwMDAwMDIzLDB4MDAwNDAw
M2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMDI1LDB4MDAwMDAwMTEsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwMjYsMHgwMDAwMDAxZSwweDAwMDUwMGMyLAorCTB4MDAwMDAwMDYsMHgwMDAw
MDAyNywweDAwMDAwMDI1LDB4MDAwMDAwMjYsMHgwMDA1MDBjNywweDAwMDAwMDA2LDB4MDAwMDAw
MjksMHgwMDAwMDAyNywKKwkweDAwMDAwMDI4LDB4MDAwMzAwM2UsMHgwMDAwMDAyNCwweDAwMDAw
MDI5LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDJhLDB4MDAwMDAwMjQsCisJMHgwMDAy
MDBmZSwweDAwMDAwMDJhLDB4MDAwMTAwMzgsMHgwMDA1MDAzNiwweDAwMDAwMDAyLDB4MDAwMDAw
MGYsMHgwMDAwMDAwMCwweDAwMDAwMDBjLAorCTB4MDAwMzAwMzcsMHgwMDAwMDAwNywweDAwMDAw
MDBkLDB4MDAwMzAwMzcsMHgwMDAwMDAwNywweDAwMDAwMDBlLDB4MDAwMjAwZjgsMHgwMDAwMDAx
MCwKKwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAyZCwweDAwMDAwMDA3LDB4MDAwNDAw
M2IsMHgwMDAwMDAwNywweDAwMDAwMDM3LDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAw
MDA3LDB4MDAwMDAwM2YsMHgwMDAwMDAwNywweDAwMDUwMDQxLDB4MDAwMDAwMzEsMHgwMDAwMDAz
MiwweDAwMDAwMDMwLAorCTB4MDAwMDAwMTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAw
MzMsMHgwMDAwMDAzMiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzNCwKKwkweDAwMDAw
MDBkLDB4MDAwNTAwYzIsMHgwMDAwMDAwNiwweDAwMDAwMDM1LDB4MDAwMDAwMzQsMHgwMDAwMDAx
OSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsCisJMHgwMDAwMDAzNiwweDAwMDAwMDMzLDB4MDAwMDAw
MzUsMHgwMDAzMDAzZSwweDAwMDAwMDJkLDB4MDAwMDAwMzYsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LAorCTB4MDAwMDAwM2MsMHgwMDAwMDAyZCwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDAz
ZCwweDAwMDAwMDNiLDB4MDAwMDAwMTcsMHgwMDAwMDAzYywKKwkweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDAzZSwweDAwMDAwMDNkLDB4MDAwMzAwM2UsMHgwMDAwMDAzNywweDAwMDAwMDNl
LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMDQwLDB4MDAwMDAwMGQsMHgwMDA1MDBj
NywweDAwMDAwMDA2LDB4MDAwMDAwNDEsMHgwMDAwMDA0MCwweDAwMDAwMDIwLAorCTB4MDAwNTAw
YzQsMHgwMDAwMDAwNiwweDAwMDAwMDQyLDB4MDAwMDAwNDEsMHgwMDAwMDAyMiwweDAwMDMwMDNl
LDB4MDAwMDAwM2YsMHgwMDAwMDA0MiwKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0
NCwweDAwMDAwMDNmLDB4MDAwNTAwYzQsMHgwMDAwMDAxNiwweDAwMDAwMDQ1LDB4MDAwMDAwNDMs
CisJMHgwMDAwMDA0NCwweDAwMDQwMGM4LDB4MDAwMDAwMTYsMHgwMDAwMDA0NiwweDAwMDAwMDQ1
LDB4MDAwNDAwN2MsMHgwMDAwMDAwNiwweDAwMDAwMDQ3LAorCTB4MDAwMDAwNDYsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwNDgsMHgwMDAwMDAzNywweDAwMDUwMGM3LDB4MDAwMDAwMDYs
MHgwMDAwMDA0OSwKKwkweDAwMDAwMDQ4LDB4MDAwMDAwNDcsMHgwMDAzMDAzZSwweDAwMDAwMDM3
LDB4MDAwMDAwNDksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNGEsCisJMHgwMDAwMDAw
ZSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0YiwweDAwMDAwMDNmLDB4MDAwNTAwYzQs
MHgwMDAwMDAwNiwweDAwMDAwMDRjLAorCTB4MDAwMDAwNGEsMHgwMDAwMDA0YiwweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDA0ZCwweDAwMDAwMDM3LDB4MDAwNTAwYzUsMHgwMDAwMDAwNiwK
KwkweDAwMDAwMDRlLDB4MDAwMDAwNGQsMHgwMDAwMDA0YywweDAwMDMwMDNlLDB4MDAwMDAwMzcs
MHgwMDAwMDA0ZSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDA0ZiwweDAwMDAwMDJk
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDUwLDB4MDAwMDAwMzcsMHgwMDA2MDA0MSww
eDAwMDAwMDFiLAorCTB4MDAwMDAwNTEsMHgwMDAwMDAzYiwweDAwMDAwMDE3LDB4MDAwMDAwNGYs
MHgwMDAzMDAzZSwweDAwMDAwMDUxLDB4MDAwMDAwNTAsMHgwMDAxMDBmZCwKKwkweDAwMDEwMDM4
CiB9OwogCiAvLyBHZW5lcmF0ZWQgZnJvbToKQEAgLTI0NiwxMyArMjQzLDExIEBAIGNvbnN0IHVp
bnQzMl90IGtDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBfMDAwMDAwMDBbXSA9IHsK
IC8vIHVpbnQgR2V0SW5kZXhWYWx1ZSh1aW50IGluZGV4KQogLy8gewogLy8KLS8vICAgICB1aW50
IHNyY0Jsb2NrID0gc3JjRGF0YVtpbmRleCA+PiAxXTsKKy8vICAgICB1aW50IHNyY0Jsb2NrID0g
c3JjRGF0YVtpbmRleCA+PiAyXTsKIC8vCi0vLyAgICAgdWludCBzcmNTaGlmdCA9KGluZGV4ICYg
MHgxKTw8IDQ7CisvLyAgICAgdWludCBzcmNTaGlmdCA9KChpbmRleCAmIDB4Myk8PCAzKTsKIC8v
Ci0vLyAgICAgdWludCBzcmNNYXNrID0gMHhmZmZmOwotLy8KLS8vICAgICB1aW50IHZhbHVlID0o
c3JjQmxvY2sgPj4gc3JjU2hpZnQpJiBzcmNNYXNrOworLy8gICAgIHVpbnQgdmFsdWUgPShzcmNC
bG9jayA+PiBzcmNTaGlmdCkmIDB4ZmY7CiAvLyAgICAgcmV0dXJuIHZhbHVlOwogLy8KIC8vIH0K
QEAgLTI2MCwxNCArMjU1LDEzIEBAIGNvbnN0IHVpbnQzMl90IGtDb252ZXJ0SW5kZXhJbmRpcmVj
dExpbmVMb29wX2NvbXBfMDAwMDAwMDBbXSA9IHsKIC8vIHZvaWQgUHV0SW5kZXhWYWx1ZSh1aW50
IGluZGV4LCB1aW50IHZhbHVlKQogLy8gewogLy8KLS8vICAgICB1aW50IGRzdEluZGV4ID0gZHN0
T2Zmc2V0RGl2NCArKGluZGV4ID4+IDEpOworLy8gICAgIHVpbnQgZHN0SW5kZXggPSBkc3RPZmZz
ZXREaXY0ICsoaW5kZXggPj4gMik7CiAvLwogLy8gICAgIHVpbnQgc3JjQmxvY2sgPSBkc3REYXRh
W2RzdEluZGV4XTsKIC8vCi0vLyAgICAgdWludCBzcmNTaGlmdCA9KGluZGV4ICYgMHgxKTw8IDQ7
Ci0vLyAgICAgdWludCBzcmNNYXNrID0gMHhmZmZmOworLy8gICAgIHVpbnQgc3JjU2hpZnQgPSgo
aW5kZXggJiAweDMpPDwgMyk7CiAvLwotLy8gICAgIHNyY0Jsb2NrICY9IH4oc3JjTWFzayA8PCBz
cmNTaGlmdCk7CisvLyAgICAgc3JjQmxvY2sgJj0gfigweGZmIDw8IHNyY1NoaWZ0KTsKIC8vCiAv
LyAgICAgc3JjQmxvY2sgfD0gdmFsdWUgPDwgc3JjU2hpZnQ7CiAvLwpAQCAtMjkzLDkgKzI4Nyw3
IEBAIGNvbnN0IHVpbnQzMl90IGtDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBfMDAw
MDAwMDBbXSA9IHsKIC8vICAgICB3aGlsZShpbmRpY2VzUmVtYWluaW5nID4gMCkKIC8vICAgICB7
CiAvLyAgICAgICAgIHVpbnQgaW5kZXhWYWx1ZTsKLS8vCi0vLyAgICAgICAgIHVpbnQgcmVzdGFy
dFZhbHVlID0gMHhmZmZmOwotLy8KKy8vICAgICAgICAgdWludCByZXN0YXJ0VmFsdWUgPSAweGZm
OwogLy8gICAgICAgICBpbmRleFZhbHVlID0gR2V0SW5kZXhWYWx1ZShzcmNJZHggKyspOwogLy8g
ICAgICAgICBpZihsaW5lU2l6ZSA9PSAwKQogLy8gICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMv
Z2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMS5pbmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMv
Z2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4wMDAwMDAwMS5pbmMKaW5kZXgg
ZGYyMjljNzhkODY3YzEwMTFmODE3YjQ5YWJjZWUxZDIxZTM3ZmFmOC4uZTc1ZmY0MWZhYWQzYmI0
YWE2ODk1MWY4Y2JiN2Q3MDUxNTcwZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5k
ZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuMDAwMDAwMDEuaW5jCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVy
dEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAxLmluYwpAQCAtMSwxNzUgKzEsMjAx
IEBACiAJLy8gNy4xMi4zMjI2CiAJICNwcmFnbWEgb25jZQogY29uc3QgdWludDMyX3Qga0NvbnZl
cnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcF8wMDAwMDAwMVtdID0gewotCTB4MDcyMzAyMDMs
MHgwMDAxMDAwMCwweDAwMDgwMDA3LDB4MDAwMDAwYzksMHgwMDAwMDAwMCwweDAwMDIwMDExLDB4
MDAwMDAwMDEsMHgwMDA2MDAwYiwKKwkweDA3MjMwMjAzLDB4MDAwMTAwMDAsMHgwMDA4MDAwNyww
eDAwMDAwMGVjLDB4MDAwMDAwMDAsMHgwMDAyMDAxMSwweDAwMDAwMDAxLDB4MDAwNjAwMGIsCiAJ
MHgwMDAwMDAwMSwweDRjNTM0YzQ3LDB4NjQ3NDczMmUsMHgzMDM1MzQyZSwweDAwMDAwMDAwLDB4
MDAwMzAwMGUsMHgwMDAwMDAwMCwweDAwMDAwMDAxLAotCTB4MDAwNjAwMGYsMHgwMDAwMDAwNSww
eDAwMDAwMDA0LDB4NmU2OTYxNmQsMHgwMDAwMDAwMCwweDAwMDAwMDQzLDB4MDAwNjAwMTAsMHgw
MDAwMDAwNCwKKwkweDAwMDYwMDBmLDB4MDAwMDAwMDUsMHgwMDAwMDAwNCwweDZlNjk2MTZkLDB4
MDAwMDAwMDAsMHgwMDAwMDA2OSwweDAwMDYwMDEwLDB4MDAwMDAwMDQsCiAJMHgwMDAwMDAxMSww
eDAwMDAwMDQwLDB4MDAwMDAwMDEsMHgwMDAwMDAwMSwweDAwMDMwMDAzLDB4MDAwMDAwMDIsMHgw
MDAwMDFjMiwweDAwMDQwMDA1LAogCTB4MDAwMDAwMDQsMHg2ZTY5NjE2ZCwweDAwMDAwMDAwLDB4
MDAwNzAwMDUsMHgwMDAwMDAwYSwweDQ5NzQ2NTQ3LDB4Nzg2NTY0NmUsMHg3NTZjNjE1NiwKIAkw
eDMxNzUyODY1LDB4MDAwMDAwM2IsMHgwMDA0MDAwNSwweDAwMDAwMDA5LDB4NjU2NDZlNjksMHgw
MDAwMDA3OCwweDAwMDgwMDA1LDB4MDAwMDAwMGYsCiAJMHg0OTc0NzU1MCwweDc4NjU2NDZlLDB4
NzU2YzYxNTYsMHgzMTc1Mjg2NSwweDNiMzE3NTNiLDB4MDAwMDAwMDAsMHgwMDA0MDAwNSwweDAw
MDAwMDBkLAotCTB4NjU2NDZlNjksMHgwMDAwMDA3OCwweDAwMDQwMDA1LDB4MDAwMDAwMGUsMHg3
NTZjNjE3NiwweDAwMDAwMDY1LDB4MDAwMzAwMDUsMHgwMDAwMDAxMiwKLQkweDAwNjM3MjczLDB4
MDAwNTAwMDYsMHgwMDAwMDAxMiwweDAwMDAwMDAwLDB4NDQ2MzcyNzMsMHgwMDYxNzQ2MSwweDAw
MDMwMDA1LDB4MDAwMDAwMTQsCi0JMHgwMDAwMDAwMCwweDAwMDMwMDA1LDB4MDAwMDAwMWUsMHgw
MDc0NzM2NCwweDAwMDUwMDA2LDB4MDAwMDAwMWUsMHgwMDAwMDAwMCwweDQ0NzQ3MzY0LAotCTB4
MDA2MTc0NjEsMHgwMDAzMDAwNSwweDAwMDAwMDIwLDB4MDAwMDAwMDAsMHgwMDA2MDAwNSwweDAw
MDAwMDIxLDB4Njg3Mzc1NTAsMHg3MzZlNmY0MywKLQkweDc0NmU2MTc0LDB4MDAwMDAwNzMsMHgw
MDA3MDAwNiwweDAwMDAwMDIxLDB4MDAwMDAwMDAsMHg0ZjY0NmQ2MywweDY1NzM2NjY2LDB4NzY2
OTQ0NzQsCi0JMHgwMDAwMDAzNCwweDAwMDgwMDA2LDB4MDAwMDAwMjEsMHgwMDAwMDAwMSwweDQz
NzQ3MzY0LDB4NjY0ZjY0NmQsMHg3NDY1NzM2NiwweDM0NzY2OTQ0LAotCTB4MDAwMDAwMDAsMHgw
MDA3MDAwNiwweDAwMDAwMDIxLDB4MDAwMDAwMDIsMHg0Zjc0NzM2NCwweDY1NzM2NjY2LDB4NzY2
OTQ0NzQsMHgwMDAwMDAzNCwKLQkweDAwMDgwMDA2LDB4MDAwMDAwMjEsMHgwMDAwMDAwMywweDY1
NTI3MzY5LDB4NzI2MTc0NzMsMHg2MTZlNDU3NCwweDY0NjU2YzYyLDB4MDAwMDAwMDAsCi0JMHgw
MDAzMDAwNSwweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDJkLDB4NjU2
NDZlNjksMHg3NTZmNDM3OCwweDAwMDA3NDZlLAotCTB4MDAwMzAwMDUsMHgwMDAwMDAyZiwweDAw
NjQ2ZDYzLDB4MDAwNTAwMDYsMHgwMDAwMDAyZiwweDAwMDAwMDAwLDB4NDQ2NDZkNjMsMHgwMDYx
NzQ2MSwKLQkweDAwMDMwMDA1LDB4MDAwMDAwMzEsMHgwMDAwMDAwMCwweDAwMDUwMDA1LDB4MDAw
MDAwMzYsMHg3MzcyNjk2NiwweDY0NmU0OTc0LDB4MDAwMDc4NjUsCi0JMHgwMDA1MDAwNSwweDAw
MDAwMDNkLDB4NDk2NDZlNjUsMHg3ODY1NjQ2ZSwweDAwMDAwMDAwLDB4MDAwODAwMDUsMHgwMDAw
MDA0MywweDQ3NWY2YzY3LAotCTB4NjE2MjZmNmMsMHg3NjZlNDk2YywweDc0NjE2MzZmLDB4NDk2
ZTZmNjksMHgwMDAwMDA0NCwweDAwMDYwMDA1LDB4MDAwMDAwNGUsMHg2YjcyNmY3NywKLQkweDQz
Njc2ZTY5LDB4NzQ2ZTc1NmYsMHgwMDAwMDAwMCwweDAwMDQwMDA1LDB4MDAwMDAwNGYsMHg0OTYz
NzI3MywweDAwMDA3ODY0LDB4MDAwNzAwMDUsCi0JMHgwMDAwMDA1MSwweDY5NjQ2ZTY5LDB4NTI3
MzY1NjMsMHg2OTYxNmQ2NSwweDY3NmU2OTZlLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAw
MDUzLAotCTB4NjU2ZTY5NmMsMHg2NTdhNjk1MywweDAwMDAwMDAwLDB4MDAwNjAwMDUsMHgwMDAw
MDA1NCwweDczNzI2OTY2LDB4NjQ2ZTQ5NzQsMHg2MTU2Nzg2NSwKLQkweDAwNjU3NTZjLDB4MDAw
NjAwMDUsMHgwMDAwMDA1YywweDc0NzM2NTcyLDB4NTY3NDcyNjEsMHg2NTc1NmM2MSwweDAwMDAw
MDAwLDB4MDAwNTAwMDUsCi0JMHgwMDAwMDA1ZSwweDY1NjQ2ZTY5LDB4NmM2MTU2NzgsMHgwMDAw
NjU3NSwweDAwMDQwMDA1LDB4MDAwMDAwNjIsMHg2MTcyNjE3MCwweDAwMDAwMDZkLAotCTB4MDAw
NDAwMDUsMHgwMDAwMDA3YiwweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAw
MDdjLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwKLQkweDAwMDQwMDA1LDB4MDAwMDAwODUsMHg2MTcy
NjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA4NiwweDYxNzI2MTcwLDB4MDAwMDAw
NmQsCi0JMHgwMDA0MDAwNSwweDAwMDAwMDhhLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQw
MDA1LDB4MDAwMDAwOGMsMHg2MTcyNjE3MCwweDAwMDAwMDZkLAotCTB4MDAwNDAwMDUsMHgwMDAw
MDA5NywweDYxNzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMDk5LDB4NjE3MjYx
NzAsMHgwMDAwMDA2ZCwKLQkweDAwMDQwMDA1LDB4MDAwMDAwOWYsMHg0Mzc0NzM2NCwweDAwMDA2
NDZkLDB4MDAwNjAwMDYsMHgwMDAwMDA5ZiwweDAwMDAwMDAwLDB4NDM3NDczNjQsCi0JMHg2MTQ0
NjQ2ZCwweDAwMDA2MTc0LDB4MDAwMzAwMDUsMHgwMDAwMDBhMSwweDAwMDAwMDAwLDB4MDAwNDAw
NDcsMHgwMDAwMDAxMSwweDAwMDAwMDA2LAotCTB4MDAwMDAwMDQsMHgwMDA0MDA0OCwweDAwMDAw
MDEyLDB4MDAwMDAwMDAsMHgwMDAwMDAxOCwweDAwMDUwMDQ4LDB4MDAwMDAwMTIsMHgwMDAwMDAw
MCwKLQkweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywweDAwMDAwMDEyLDB4MDAwMDAw
MDMsMHgwMDA0MDA0NywweDAwMDAwMDE0LDB4MDAwMDAwMjIsCi0JMHgwMDAwMDAwMCwweDAwMDQw
MDQ3LDB4MDAwMDAwMTQsMHgwMDAwMDAyMSwweDAwMDAwMDAxLDB4MDAwNDAwNDcsMHgwMDAwMDAx
ZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwMDQsMHgwMDA1MDA0OCwweDAwMDAwMDFlLDB4MDAwMDAw
MDAsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4MDAwMzAwNDcsMHgwMDAwMDAxZSwKLQkweDAwMDAw
MDAzLDB4MDAwNDAwNDcsMHgwMDAwMDAyMCwweDAwMDAwMDIyLDB4MDAwMDAwMDAsMHgwMDA0MDA0
NywweDAwMDAwMDIwLDB4MDAwMDAwMjEsCi0JMHgwMDAwMDAwMCwweDAwMDUwMDQ4LDB4MDAwMDAw
MjEsMHgwMDAwMDAwMCwweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDA1MDA0OCwweDAwMDAwMDIx
LAotCTB4MDAwMDAwMDEsMHgwMDAwMDAyMywweDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAy
MSwweDAwMDAwMDAyLDB4MDAwMDAwMjMsMHgwMDAwMDAwOCwKLQkweDAwMDUwMDQ4LDB4MDAwMDAw
MjEsMHgwMDAwMDAwMywweDAwMDAwMDIzLDB4MDAwMDAwMGMsMHgwMDAzMDA0NywweDAwMDAwMDIx
LDB4MDAwMDAwMDIsCi0JMHgwMDA0MDA0NywweDAwMDAwMDJlLDB4MDAwMDAwMDYsMHgwMDAwMDAw
NCwweDAwMDQwMDQ4LDB4MDAwMDAwMmYsMHgwMDAwMDAwMCwweDAwMDAwMDE4LAotCTB4MDAwNTAw
NDgsMHgwMDAwMDAyZiwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3
LDB4MDAwMDAwMmYsMHgwMDAwMDAwMywKLQkweDAwMDQwMDQ3LDB4MDAwMDAwMzEsMHgwMDAwMDAy
MiwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAzMSwweDAwMDAwMDIxLDB4MDAwMDAwMDIs
Ci0JMHgwMDA0MDA0NywweDAwMDAwMDQzLDB4MDAwMDAwMGIsMHgwMDAwMDAxYywweDAwMDQwMDQ3
LDB4MDAwMDAwOWUsMHgwMDAwMDAwNiwweDAwMDAwMDA0LAotCTB4MDAwNTAwNDgsMHgwMDAwMDA5
ZiwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwOWYs
MHgwMDAwMDAwMywKLQkweDAwMDQwMDQ3LDB4MDAwMDAwYTEsMHgwMDAwMDAyMiwweDAwMDAwMDAw
LDB4MDAwNDAwNDcsMHgwMDAwMDBhMSwweDAwMDAwMDIxLDB4MDAwMDAwMDMsCi0JMHgwMDA0MDA0
NywweDAwMDAwMGM4LDB4MDAwMDAwMGIsMHgwMDAwMDAxOSwweDAwMDIwMDEzLDB4MDAwMDAwMDIs
MHgwMDAzMDAyMSwweDAwMDAwMDAzLAotCTB4MDAwMDAwMDIsMHgwMDA0MDAxNSwweDAwMDAwMDA2
LDB4MDAwMDAwMjAsMHgwMDAwMDAwMCwweDAwMDQwMDIwLDB4MDAwMDAwMDcsMHgwMDAwMDAwNywK
LQkweDAwMDAwMDA2LDB4MDAwNDAwMjEsMHgwMDAwMDAwOCwweDAwMDAwMDA2LDB4MDAwMDAwMDcs
MHgwMDA1MDAyMSwweDAwMDAwMDBjLDB4MDAwMDAwMDIsCi0JMHgwMDAwMDAwNywweDAwMDAwMDA3
LDB4MDAwMzAwMWQsMHgwMDAwMDAxMSwweDAwMDAwMDA2LDB4MDAwMzAwMWUsMHgwMDAwMDAxMiww
eDAwMDAwMDExLAotCTB4MDAwNDAwMjAsMHgwMDAwMDAxMywweDAwMDAwMDAyLDB4MDAwMDAwMTIs
MHgwMDA0MDAzYiwweDAwMDAwMDEzLDB4MDAwMDAwMTQsMHgwMDAwMDAwMiwKLQkweDAwMDQwMDE1
LDB4MDAwMDAwMTUsMHgwMDAwMDAyMCwweDAwMDAwMDAxLDB4MDAwNDAwMmIsMHgwMDAwMDAxNSww
eDAwMDAwMDE2LDB4MDAwMDAwMDAsCi0JMHgwMDA0MDAyMCwweDAwMDAwMDE4LDB4MDAwMDAwMDIs
MHgwMDAwMDAwNiwweDAwMDMwMDFkLDB4MDAwMDAwMWQsMHgwMDAwMDAwNiwweDAwMDMwMDFlLAot
CTB4MDAwMDAwMWUsMHgwMDAwMDAxZCwweDAwMDQwMDIwLDB4MDAwMDAwMWYsMHgwMDAwMDAwMiww
eDAwMDAwMDFlLDB4MDAwNDAwM2IsMHgwMDAwMDAxZiwKLQkweDAwMDAwMDIwLDB4MDAwMDAwMDIs
MHgwMDA2MDAxZSwweDAwMDAwMDIxLDB4MDAwMDAwMDYsMHgwMDAwMDAwNiwweDAwMDAwMDA2LDB4
MDAwMDAwMDYsCi0JMHgwMDA0MDAyMCwweDAwMDAwMDIyLDB4MDAwMDAwMDksMHgwMDAwMDAyMSww
eDAwMDQwMDNiLDB4MDAwMDAwMjIsMHgwMDAwMDAyMywweDAwMDAwMDA5LAotCTB4MDAwNDAwMmIs
MHgwMDAwMDAxNSwweDAwMDAwMDI0LDB4MDAwMDAwMDIsMHgwMDA0MDAyMCwweDAwMDAwMDI1LDB4
MDAwMDAwMDksMHgwMDAwMDAwNiwKLQkweDAwMDMwMDFkLDB4MDAwMDAwMmUsMHgwMDAwMDAwNiww
eDAwMDMwMDFlLDB4MDAwMDAwMmYsMHgwMDAwMDAyZSwweDAwMDQwMDIwLDB4MDAwMDAwMzAsCi0J
MHgwMDAwMDAwMiwweDAwMDAwMDJmLDB4MDAwNDAwM2IsMHgwMDAwMDAzMCwweDAwMDAwMDMxLDB4
MDAwMDAwMDIsMHgwMDA0MDAyYiwweDAwMDAwMDA2LAotCTB4MDAwMDAwMzksMHgwMDAwMDAwMiww
eDAwMDQwMDE3LDB4MDAwMDAwNDEsMHgwMDAwMDAwNiwweDAwMDAwMDAzLDB4MDAwNDAwMjAsMHgw
MDAwMDA0MiwKLQkweDAwMDAwMDAxLDB4MDAwMDAwNDEsMHgwMDA0MDAzYiwweDAwMDAwMDQyLDB4
MDAwMDAwNDMsMHgwMDAwMDAwMSwweDAwMDQwMDJiLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDA0NCww
eDAwMDAwMDAwLDB4MDAwNDAwMjAsMHgwMDAwMDA0NSwweDAwMDAwMDAxLDB4MDAwMDAwMDYsMHgw
MDA0MDAyYiwweDAwMDAwMDA2LAotCTB4MDAwMDAwNDgsMHgwMDAwMDAwMSwweDAwMDIwMDE0LDB4
MDAwMDAwNDksMHgwMDA0MDAyYiwweDAwMDAwMDA2LDB4MDAwMDAwNWQsMHhmZmZmZmZmZiwKLQkw
eDAwMDQwMDJiLDB4MDAwMDAwMTUsMHgwMDAwMDA2MCwweDAwMDAwMDAxLDB4MDAwNDAwMmIsMHgw
MDAwMDAxNSwweDAwMDAwMDZiLDB4MDAwMDAwMDMsCi0JMHgwMDAzMDAxZCwweDAwMDAwMDllLDB4
MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAwMDAwMDlmLDB4MDAwMDAwOWUsMHgwMDA0MDAyMCwweDAw
MDAwMGEwLAotCTB4MDAwMDAwMDIsMHgwMDAwMDA5ZiwweDAwMDQwMDNiLDB4MDAwMDAwYTAsMHgw
MDAwMDBhMSwweDAwMDAwMDAyLDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwKLQkweDAwMDAwMGI1LDB4
MDAwMDAwMDMsMHgwMDA0MDAyYiwweDAwMDAwMDA2LDB4MDAwMDAwYmYsMHgwMDAwMDAwNCwweDAw
MDQwMDJiLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDBjNywweDAwMDAwMDQwLDB4MDAwNjAwMmMsMHgw
MDAwMDA0MSwweDAwMDAwMGM4LDB4MDAwMDAwYzcsMHgwMDAwMDA0OCwweDAwMDAwMDQ4LAotCTB4
MDAwNTAwMzYsMHgwMDAwMDAwMiwweDAwMDAwMDA0LDB4MDAwMDAwMDAsMHgwMDAwMDAwMywweDAw
MDIwMGY4LDB4MDAwMDAwMDUsMHgwMDA0MDAzYiwKLQkweDAwMDAwMDA3LDB4MDAwMDAwMmQsMHgw
MDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAzNiwweDAwMDAwMDA3LDB4MDAw
NDAwM2IsCi0JMHgwMDAwMDAwNywweDAwMDAwMDNkLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAw
MDAwMDA3LDB4MDAwMDAwNGUsMHgwMDAwMDAwNywweDAwMDQwMDNiLAotCTB4MDAwMDAwMDcsMHgw
MDAwMDA0ZiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDUxLDB4MDAw
MDAwMDcsMHgwMDA0MDAzYiwKLQkweDAwMDAwMDA3LDB4MDAwMDAwNTMsMHgwMDAwMDAwNywweDAw
MDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA1NCwweDAwMDAwMDA3LDB4MDAwNDAwM2IsCi0JMHgw
MDAwMDAwNywweDAwMDAwMDVjLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAw
MDAwNWUsMHgwMDAwMDAwNywweDAwMDQwMDNiLAotCTB4MDAwMDAwMDcsMHgwMDAwMDA2MiwweDAw
MDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDdiLDB4MDAwMDAwMDcsMHgwMDA0
MDAzYiwKLQkweDAwMDAwMDA3LDB4MDAwMDAwN2MsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAw
MDAwMDcsMHgwMDAwMDA4NSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsCi0JMHgwMDAwMDAwNywweDAw
MDAwMDg2LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwOGEsMHgwMDAw
MDAwNywweDAwMDQwMDNiLAotCTB4MDAwMDAwMDcsMHgwMDAwMDA4YywweDAwMDAwMDA3LDB4MDAw
NDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDk3LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKLQkweDAw
MDAwMDA3LDB4MDAwMDAwOTksMHgwMDAwMDAwNywweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAw
MDAzMiwweDAwMDAwMDIzLDB4MDAwMDAwMTYsCi0JMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwMzMsMHgwMDAwMDAzMiwweDAwMDYwMDQxLDB4MDAwMDAwMTgsMHgwMDAwMDAzNCwweDAwMDAw
MDMxLAotCTB4MDAwMDAwMTYsMHgwMDAwMDAzMywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDAzNSwweDAwMDAwMDM0LDB4MDAwMzAwM2UsMHgwMDAwMDAyZCwKLQkweDAwMDAwMDM1LDB4MDAw
NTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMDM3LDB4MDAwMDAwMjMsMHgwMDAwMDAxNiwweDAwMDQw
MDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDAzOCwweDAwMDAwMDM3LDB4MDAwNTAwODAsMHgwMDAw
MDAwNiwweDAwMDAwMDNhLDB4MDAwMDAwMzgsMHgwMDAwMDAzOSwweDAwMDYwMDQxLAotCTB4MDAw
MDAwMTgsMHgwMDAwMDAzYiwweDAwMDAwMDMxLDB4MDAwMDAwMTYsMHgwMDAwMDAzYSwweDAwMDQw
MDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzYywKLQkweDAwMDAwMDNiLDB4MDAwMzAwM2UsMHgwMDAw
MDAzNiwweDAwMDAwMDNjLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDNlLDB4MDAwMDAw
MzYsCi0JMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwM2YsMHgwMDAwMDAyZCwweDAwMDUw
MDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA0MCwweDAwMDAwMDNlLAotCTB4MDAwMDAwM2YsMHgwMDAz
MDAzZSwweDAwMDAwMDNkLDB4MDAwMDAwNDAsMHgwMDA1MDA0MSwweDAwMDAwMDQ1LDB4MDAwMDAw
NDYsMHgwMDAwMDA0MywKLQkweDAwMDAwMDQ0LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MDQ3LDB4MDAwMDAwNDYsMHgwMDA1MDBhZSwweDAwMDAwMDQ5LDB4MDAwMDAwNGEsCi0JMHgwMDAw
MDA0NywweDAwMDAwMDQ4LDB4MDAwMzAwZjcsMHgwMDAwMDA0YywweDAwMDAwMDAwLDB4MDAwNDAw
ZmEsMHgwMDAwMDA0YSwweDAwMDAwMDRiLAotCTB4MDAwMDAwNGMsMHgwMDAyMDBmOCwweDAwMDAw
MDRiLDB4MDAwMTAwZmQsMHgwMDAyMDBmOCwweDAwMDAwMDRjLDB4MDAwMzAwM2UsMHgwMDAwMDA0
ZSwKLQkweDAwMDAwMDQ0LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDUwLDB4MDAwMDAw
MzYsMHgwMDAzMDAzZSwweDAwMDAwMDRmLDB4MDAwMDAwNTAsCi0JMHgwMDA0MDAzZCwweDAwMDAw
MDA2LDB4MDAwMDAwNTIsMHgwMDAwMDAyZCwweDAwMDMwMDNlLDB4MDAwMDAwNTEsMHgwMDAwMDA1
MiwweDAwMDMwMDNlLAotCTB4MDAwMDAwNTMsMHgwMDAwMDA0NCwweDAwMDMwMDNlLDB4MDAwMDAw
NTQsMHgwMDAwMDA0NCwweDAwMDIwMGY5LDB4MDAwMDAwNTUsMHgwMDAyMDBmOCwKLQkweDAwMDAw
MDU1LDB4MDAwNDAwZjYsMHgwMDAwMDA1NywweDAwMDAwMDU4LDB4MDAwMDAwMDAsMHgwMDAyMDBm
OSwweDAwMDAwMDU5LDB4MDAwMjAwZjgsCi0JMHgwMDAwMDA1OSwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDA1YSwweDAwMDAwMDUxLDB4MDAwNTAwYWMsMHgwMDAwMDA0OSwweDAwMDAwMDVi
LAotCTB4MDAwMDAwNWEsMHgwMDAwMDA0NCwweDAwMDQwMGZhLDB4MDAwMDAwNWIsMHgwMDAwMDA1
NiwweDAwMDAwMDU3LDB4MDAwMjAwZjgsMHgwMDAwMDA1NiwKLQkweDAwMDMwMDNlLDB4MDAwMDAw
NWMsMHgwMDAwMDA1ZCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA1ZiwweDAwMDAwMDRm
LDB4MDAwNTAwODAsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDYxLDB4MDAwMDAwNWYsMHgwMDAwMDA2
MCwweDAwMDMwMDNlLDB4MDAwMDAwNGYsMHgwMDAwMDA2MSwweDAwMDMwMDNlLAotCTB4MDAwMDAw
NjIsMHgwMDAwMDA1ZiwweDAwMDUwMDM5LDB4MDAwMDAwMDYsMHgwMDAwMDA2MywweDAwMDAwMDBh
LDB4MDAwMDAwNjIsMHgwMDAzMDAzZSwKLQkweDAwMDAwMDVlLDB4MDAwMDAwNjMsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwNjQsMHgwMDAwMDA1MywweDAwMDUwMGFhLDB4MDAwMDAwNDks
Ci0JMHgwMDAwMDA2NSwweDAwMDAwMDY0LDB4MDAwMDAwNDQsMHgwMDAzMDBmNywweDAwMDAwMDY3
LDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDY1LAotCTB4MDAwMDAwNjYsMHgwMDAwMDA2
NywweDAwMDIwMGY4LDB4MDAwMDAwNjYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNjgs
MHgwMDAwMDA1ZSwKLQkweDAwMDMwMDNlLDB4MDAwMDAwNTQsMHgwMDAwMDA2OCwweDAwMDIwMGY5
LDB4MDAwMDAwNjcsMHgwMDAyMDBmOCwweDAwMDAwMDY3LDB4MDAwNDAwM2QsCi0JMHgwMDAwMDAw
NiwweDAwMDAwMDY5LDB4MDAwMDAwNTEsMHgwMDA1MDA4MiwweDAwMDAwMDA2LDB4MDAwMDAwNmEs
MHgwMDAwMDA2OSwweDAwMDAwMDYwLAotCTB4MDAwMzAwM2UsMHgwMDAwMDA1MSwweDAwMDAwMDZh
LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMDZjLDB4MDAwMDAwMjMsMHgwMDAwMDA2YiwK
LQkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2ZCwweDAwMDAwMDZjLDB4MDAwNTAwYWEs
MHgwMDAwMDA0OSwweDAwMDAwMDZlLDB4MDAwMDAwNmQsCi0JMHgwMDAwMDA0OCwweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDA2ZiwweDAwMDAwMDVlLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDcwLAotCTB4MDAwMDAwNWMsMHgwMDA1MDBhYSwweDAwMDAwMDQ5LDB4MDAwMDAwNzEs
MHgwMDAwMDA2ZiwweDAwMDAwMDcwLDB4MDAwNTAwYTcsMHgwMDAwMDA0OSwKLQkweDAwMDAwMDcy
LDB4MDAwMDAwNmUsMHgwMDAwMDA3MSwweDAwMDMwMGY3LDB4MDAwMDAwNzQsMHgwMDAwMDAwMCww
eDAwMDQwMGZhLDB4MDAwMDAwNzIsCi0JMHgwMDAwMDA3MywweDAwMDAwMDg5LDB4MDAwMjAwZjgs
MHgwMDAwMDA3MywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3NSwweDAwMDAwMDUzLAot
CTB4MDAwNTAwYWMsMHgwMDAwMDA0OSwweDAwMDAwMDc2LDB4MDAwMDAwNzUsMHgwMDAwMDA0OCww
eDAwMDMwMGY3LDB4MDAwMDAwNzgsMHgwMDAwMDAwMCwKLQkweDAwMDQwMGZhLDB4MDAwMDAwNzYs
MHgwMDAwMDA3NywweDAwMDAwMDc4LDB4MDAwMjAwZjgsMHgwMDAwMDA3NywweDAwMDQwMDNkLDB4
MDAwMDAwMDYsCi0JMHgwMDAwMDA3OSwweDAwMDAwMDRlLDB4MDAwNTAwODAsMHgwMDAwMDAwNiww
eDAwMDAwMDdhLDB4MDAwMDAwNzksMHgwMDAwMDA2MCwweDAwMDMwMDNlLAotCTB4MDAwMDAwNGUs
MHgwMDAwMDA3YSwweDAwMDMwMDNlLDB4MDAwMDAwN2IsMHgwMDAwMDA3OSwweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDA3ZCwKLQkweDAwMDAwMDU0LDB4MDAwMzAwM2UsMHgwMDAwMDA3Yyww
eDAwMDAwMDdkLDB4MDAwNjAwMzksMHgwMDAwMDAwMiwweDAwMDAwMDdlLDB4MDAwMDAwMGYsCi0J
MHgwMDAwMDA3YiwweDAwMDAwMDdjLDB4MDAwMjAwZjksMHgwMDAwMDA3OCwweDAwMDIwMGY4LDB4
MDAwMDAwNzgsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwN2YsMHgwMDAwMDA1Myww
eDAwMDUwMGFjLDB4MDAwMDAwNDksMHgwMDAwMDA4MCwweDAwMDAwMDdmLDB4MDAwMDAwNDQsMHgw
MDAzMDBmNywKLQkweDAwMDAwMDgyLDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDgwLDB4
MDAwMDAwODEsMHgwMDAwMDA4MiwweDAwMDIwMGY4LDB4MDAwMDAwODEsCi0JMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwODMsMHgwMDAwMDA0ZSwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgw
MDAwMDA4NCwweDAwMDAwMDgzLAotCTB4MDAwMDAwNjAsMHgwMDAzMDAzZSwweDAwMDAwMDRlLDB4
MDAwMDAwODQsMHgwMDAzMDAzZSwweDAwMDAwMDg1LDB4MDAwMDAwODMsMHgwMDA0MDAzZCwKLQkw
eDAwMDAwMDA2LDB4MDAwMDAwODcsMHgwMDAwMDA1YywweDAwMDMwMDNlLDB4MDAwMDAwODYsMHgw
MDAwMDA4NywweDAwMDYwMDM5LDB4MDAwMDAwMDIsCi0JMHgwMDAwMDA4OCwweDAwMDAwMDBmLDB4
MDAwMDAwODUsMHgwMDAwMDA4NiwweDAwMDIwMGY5LDB4MDAwMDAwODIsMHgwMDAyMDBmOCwweDAw
MDAwMDgyLAotCTB4MDAwMzAwM2UsMHgwMDAwMDA1MywweDAwMDAwMDQ0LDB4MDAwMjAwZjksMHgw
MDAwMDA3NCwweDAwMDIwMGY4LDB4MDAwMDAwODksMHgwMDA0MDAzZCwKLQkweDAwMDAwMDA2LDB4
MDAwMDAwOGIsMHgwMDAwMDA0ZSwweDAwMDMwMDNlLDB4MDAwMDAwOGEsMHgwMDAwMDA4YiwweDAw
MDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDA4ZCwweDAwMDAwMDVlLDB4MDAwMzAwM2UsMHgw
MDAwMDA4YywweDAwMDAwMDhkLDB4MDAwNjAwMzksMHgwMDAwMDAwMiwweDAwMDAwMDhlLAotCTB4
MDAwMDAwMGYsMHgwMDAwMDA4YSwweDAwMDAwMDhjLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMDhmLDB4MDAwMDAwNGUsMHgwMDA1MDA4MCwKLQkweDAwMDAwMDA2LDB4MDAwMDAwOTAsMHgw
MDAwMDA4ZiwweDAwMDAwMDYwLDB4MDAwMzAwM2UsMHgwMDAwMDA0ZSwweDAwMDAwMDkwLDB4MDAw
NDAwM2QsCi0JMHgwMDAwMDAwNiwweDAwMDAwMDkxLDB4MDAwMDAwNTMsMHgwMDA1MDA4MCwweDAw
MDAwMDA2LDB4MDAwMDAwOTIsMHgwMDAwMDA5MSwweDAwMDAwMDYwLAotCTB4MDAwMzAwM2UsMHgw
MDAwMDA1MywweDAwMDAwMDkyLDB4MDAwMjAwZjksMHgwMDAwMDA3NCwweDAwMDIwMGY4LDB4MDAw
MDAwNzQsMHgwMDAyMDBmOSwKLQkweDAwMDAwMDU4LDB4MDAwMjAwZjgsMHgwMDAwMDA1OCwweDAw
MDIwMGY5LDB4MDAwMDAwNTUsMHgwMDAyMDBmOCwweDAwMDAwMDU3LDB4MDAwNDAwM2QsCi0JMHgw
MDAwMDAwNiwweDAwMDAwMDkzLDB4MDAwMDAwNTMsMHgwMDA1MDBhYywweDAwMDAwMDQ5LDB4MDAw
MDAwOTQsMHgwMDAwMDA5MywweDAwMDAwMDQ4LAotCTB4MDAwMzAwZjcsMHgwMDAwMDA5NiwweDAw
MDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA5NCwweDAwMDAwMDk1LDB4MDAwMDAwOTYsMHgwMDAy
MDBmOCwKLQkweDAwMDAwMDk1LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDk4LDB4MDAw
MDAwNGUsMHgwMDAzMDAzZSwweDAwMDAwMDk3LDB4MDAwMDAwOTgsCi0JMHgwMDA0MDAzZCwweDAw
MDAwMDA2LDB4MDAwMDAwOWEsMHgwMDAwMDA1NCwweDAwMDMwMDNlLDB4MDAwMDAwOTksMHgwMDAw
MDA5YSwweDAwMDYwMDM5LAotCTB4MDAwMDAwMDIsMHgwMDAwMDA5YiwweDAwMDAwMDBmLDB4MDAw
MDAwOTcsMHgwMDAwMDA5OSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA5YywKLQkweDAw
MDAwMDRlLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDlkLDB4MDAwMDAwOWMsMHgwMDAw
MDA2MCwweDAwMDMwMDNlLDB4MDAwMDAwNGUsCi0JMHgwMDAwMDA5ZCwweDAwMDIwMGY5LDB4MDAw
MDAwOTYsMHgwMDAyMDBmOCwweDAwMDAwMDk2LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAw
MGEyLAotCTB4MDAwMDAwMjMsMHgwMDAwMDA2MCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDBhMywweDAwMDAwMGEyLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwKLQkweDAwMDAwMGE0LDB4MDAw
MDAwNGUsMHgwMDA2MDA0MSwweDAwMDAwMDE4LDB4MDAwMDAwYTUsMHgwMDAwMDBhMSwweDAwMDAw
MDE2LDB4MDAwMDAwYTMsCi0JMHgwMDAzMDAzZSwweDAwMDAwMGE1LDB4MDAwMDAwYTQsMHgwMDA1
MDA0MSwweDAwMDAwMDI1LDB4MDAwMDAwYTYsMHgwMDAwMDAyMywweDAwMDAwMDYwLAotCTB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGE3LDB4MDAwMDAwYTYsMHgwMDA1MDA4MCwweDAwMDAw
MDA2LDB4MDAwMDAwYTgsMHgwMDAwMDBhNywKLQkweDAwMDAwMDQ4LDB4MDAwNTAwNDEsMHgwMDAw
MDAyNSwweDAwMDAwMGE5LDB4MDAwMDAwMjMsMHgwMDAwMDAxNiwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsCi0JMHgwMDAwMDBhYSwweDAwMDAwMGE5LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAw
MGFiLDB4MDAwMDAwYWEsMHgwMDAwMDA0OCwweDAwMDYwMDQxLAotCTB4MDAwMDAwMTgsMHgwMDAw
MDBhYywweDAwMDAwMDMxLDB4MDAwMDAwMTYsMHgwMDAwMDBhYiwweDAwMDQwMDNkLDB4MDAwMDAw
MDYsMHgwMDAwMDBhZCwKLQkweDAwMDAwMGFjLDB4MDAwNjAwNDEsMHgwMDAwMDAxOCwweDAwMDAw
MGFlLDB4MDAwMDAwYTEsMHgwMDAwMDAxNiwweDAwMDAwMGE4LDB4MDAwMzAwM2UsCi0JMHgwMDAw
MDBhZSwweDAwMDAwMGFkLDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMGFmLDB4MDAwMDAw
MjMsMHgwMDAwMDA2MCwweDAwMDQwMDNkLAotCTB4MDAwMDAwMDYsMHgwMDAwMDBiMCwweDAwMDAw
MGFmLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGIxLDB4MDAwMDAwYjAsMHgwMDAwMDAz
OSwKLQkweDAwMDYwMDQxLDB4MDAwMDAwMTgsMHgwMDAwMDBiMiwweDAwMDAwMGExLDB4MDAwMDAw
MTYsMHgwMDAwMDBiMSwweDAwMDMwMDNlLDB4MDAwMDAwYjIsCi0JMHgwMDAwMDA0NCwweDAwMDUw
MDQxLDB4MDAwMDAwMjUsMHgwMDAwMDBiMywweDAwMDAwMDIzLDB4MDAwMDAwNjAsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LAotCTB4MDAwMDAwYjQsMHgwMDAwMDBiMywweDAwMDUwMDgwLDB4MDAwMDAw
MDYsMHgwMDAwMDBiNiwweDAwMDAwMGI0LDB4MDAwMDAwYjUsMHgwMDA1MDA0MSwKLQkweDAwMDAw
MDI1LDB4MDAwMDAwYjcsMHgwMDAwMDAyMywweDAwMDAwMDE2LDB4MDAwNDAwM2QsMHgwMDAwMDAw
NiwweDAwMDAwMGI4LDB4MDAwMDAwYjcsCi0JMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAw
YjksMHgwMDAwMDBiOCwweDAwMDAwMGI1LDB4MDAwNjAwNDEsMHgwMDAwMDAxOCwweDAwMDAwMGJh
LAotCTB4MDAwMDAwMzEsMHgwMDAwMDAxNiwweDAwMDAwMGI5LDB4MDAwNDAwM2QsMHgwMDAwMDAw
NiwweDAwMDAwMGJiLDB4MDAwMDAwYmEsMHgwMDA2MDA0MSwKLQkweDAwMDAwMDE4LDB4MDAwMDAw
YmMsMHgwMDAwMDBhMSwweDAwMDAwMDE2LDB4MDAwMDAwYjYsMHgwMDAzMDAzZSwweDAwMDAwMGJj
LDB4MDAwMDAwYmIsCi0JMHgwMDA1MDA0MSwweDAwMDAwMDI1LDB4MDAwMDAwYmQsMHgwMDAwMDAy
MywweDAwMDAwMDYwLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGJlLAotCTB4MDAwMDAw
YmQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYzAsMHgwMDAwMDBiZSwweDAwMDAwMGJm
LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwKLQkweDAwMDAwMGMxLDB4MDAwMDAwMjMsMHgwMDAwMDAx
NiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBjMiwweDAwMDAwMGMxLDB4MDAwNTAwODAs
Ci0JMHgwMDAwMDAwNiwweDAwMDAwMGMzLDB4MDAwMDAwYzIsMHgwMDAwMDBiZiwweDAwMDYwMDQx
LDB4MDAwMDAwMTgsMHgwMDAwMDBjNCwweDAwMDAwMDMxLAotCTB4MDAwMDAwMTYsMHgwMDAwMDBj
MywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBjNSwweDAwMDAwMGM0LDB4MDAwNjAwNDEs
MHgwMDAwMDAxOCwKLQkweDAwMDAwMGM2LDB4MDAwMDAwYTEsMHgwMDAwMDAxNiwweDAwMDAwMGMw
LDB4MDAwMzAwM2UsMHgwMDAwMDBjNiwweDAwMDAwMGM1LDB4MDAwMTAwZmQsCi0JMHgwMDAxMDAz
OCwweDAwMDUwMDM2LDB4MDAwMDAwMDYsMHgwMDAwMDAwYSwweDAwMDAwMDAwLDB4MDAwMDAwMDgs
MHgwMDAzMDAzNywweDAwMDAwMDA3LAotCTB4MDAwMDAwMDksMHgwMDAyMDBmOCwweDAwMDAwMDBi
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDE3LDB4MDAwMDAwMDksMHgwMDA2MDA0MSwK
LQkweDAwMDAwMDE4LDB4MDAwMDAwMTksMHgwMDAwMDAxNCwweDAwMDAwMDE2LDB4MDAwMDAwMTcs
MHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMWEsCi0JMHgwMDAwMDAxOSwweDAwMDIwMGZl
LDB4MDAwMDAwMWEsMHgwMDAxMDAzOCwweDAwMDUwMDM2LDB4MDAwMDAwMDIsMHgwMDAwMDAwZiww
eDAwMDAwMDAwLAotCTB4MDAwMDAwMGMsMHgwMDAzMDAzNywweDAwMDAwMDA3LDB4MDAwMDAwMGQs
MHgwMDAzMDAzNywweDAwMDAwMDA3LDB4MDAwMDAwMGUsMHgwMDAyMDBmOCwKLQkweDAwMDAwMDEw
LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMDI2LDB4MDAwMDAwMjMsMHgwMDAwMDAyNCww
eDAwMDQwMDNkLDB4MDAwMDAwMDYsCi0JMHgwMDAwMDAyNywweDAwMDAwMDI2LDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDI4LDB4MDAwMDAwMGQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LAot
CTB4MDAwMDAwMjksMHgwMDAwMDAyNywweDAwMDAwMDI4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDJhLDB4MDAwMDAwMGUsMHgwMDA2MDA0MSwKLQkweDAwMDAwMDE4LDB4MDAwMDAwMmIs
MHgwMDAwMDAyMCwweDAwMDAwMDE2LDB4MDAwMDAwMjksMHgwMDAzMDAzZSwweDAwMDAwMDJiLDB4
MDAwMDAwMmEsCi0JMHgwMDAxMDBmZCwweDAwMDEwMDM4CisJMHg2NTY0NmU2OSwweDAwMDAwMDc4
LDB4MDAwNDAwMDUsMHgwMDAwMDAwZSwweDc1NmM2MTc2LDB4MDAwMDAwNjUsMHgwMDA1MDAwNSww
eDAwMDAwMDExLAorCTB4NDI2MzcyNzMsMHg2YjYzNmY2YywweDAwMDAwMDAwLDB4MDAwMzAwMDUs
MHgwMDAwMDAxMywweDAwNjM3MjczLDB4MDAwNTAwMDYsMHgwMDAwMDAxMywKKwkweDAwMDAwMDAw
LDB4NDQ2MzcyNzMsMHgwMDYxNzQ2MSwweDAwMDMwMDA1LDB4MDAwMDAwMTUsMHgwMDAwMDAwMCww
eDAwMDUwMDA1LDB4MDAwMDAwMWUsCisJMHg1MzYzNzI3MywweDc0NjY2OTY4LDB4MDAwMDAwMDAs
MHgwMDA0MDAwNSwweDAwMDAwMDI0LDB4NzU2YzYxNzYsMHgwMDAwMDA2NSwweDAwMDUwMDA1LAor
CTB4MDAwMDAwMmQsMHg0OTc0NzM2NCwweDc4NjU2NDZlLDB4MDAwMDAwMDAsMHgwMDA2MDAwNSww
eDAwMDAwMDJlLDB4Njg3Mzc1NTAsMHg3MzZlNmY0MywKKwkweDc0NmU2MTc0LDB4MDAwMDAwNzMs
MHgwMDA3MDAwNiwweDAwMDAwMDJlLDB4MDAwMDAwMDAsMHg0ZjY0NmQ2MywweDY1NzM2NjY2LDB4
NzY2OTQ0NzQsCisJMHgwMDAwMDAzNCwweDAwMDgwMDA2LDB4MDAwMDAwMmUsMHgwMDAwMDAwMSww
eDQzNzQ3MzY0LDB4NjY0ZjY0NmQsMHg3NDY1NzM2NiwweDM0NzY2OTQ0LAorCTB4MDAwMDAwMDAs
MHgwMDA3MDAwNiwweDAwMDAwMDJlLDB4MDAwMDAwMDIsMHg0Zjc0NzM2NCwweDY1NzM2NjY2LDB4
NzY2OTQ0NzQsMHgwMDAwMDAzNCwKKwkweDAwMDgwMDA2LDB4MDAwMDAwMmUsMHgwMDAwMDAwMyww
eDY1NTI3MzY5LDB4NzI2MTc0NzMsMHg2MTZlNDU3NCwweDY0NjU2YzYyLDB4MDAwMDAwMDAsCisJ
MHgwMDAzMDAwNSwweDAwMDAwMDMwLDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDM4LDB4
NDI2MzcyNzMsMHg2YjYzNmY2YywweDAwMDAwMDAwLAorCTB4MDAwMzAwMDUsMHgwMDAwMDAzYSww
eDAwNzQ3MzY0LDB4MDAwNTAwMDYsMHgwMDAwMDAzYSwweDAwMDAwMDAwLDB4NDQ3NDczNjQsMHgw
MDYxNzQ2MSwKKwkweDAwMDMwMDA1LDB4MDAwMDAwM2MsMHgwMDAwMDAwMCwweDAwMDUwMDA1LDB4
MDAwMDAwNDAsMHg1MzYzNzI3MywweDc0NjY2OTY4LDB4MDAwMDAwMDAsCisJMHgwMDA1MDAwNSww
eDAwMDAwMDUzLDB4NjU2NDZlNjksMHg3NTZmNDM3OCwweDAwMDA3NDZlLDB4MDAwMzAwMDUsMHgw
MDAwMDA1NSwweDAwNjQ2ZDYzLAorCTB4MDAwNTAwMDYsMHgwMDAwMDA1NSwweDAwMDAwMDAwLDB4
NDQ2NDZkNjMsMHgwMDYxNzQ2MSwweDAwMDMwMDA1LDB4MDAwMDAwNTcsMHgwMDAwMDAwMCwKKwkw
eDAwMDUwMDA1LDB4MDAwMDAwNWMsMHg3MzcyNjk2NiwweDY0NmU0OTc0LDB4MDAwMDc4NjUsMHgw
MDA1MDAwNSwweDAwMDAwMDYzLDB4NDk2NDZlNjUsCisJMHg3ODY1NjQ2ZSwweDAwMDAwMDAwLDB4
MDAwODAwMDUsMHgwMDAwMDA2OSwweDQ3NWY2YzY3LDB4NjE2MjZmNmMsMHg3NjZlNDk2YywweDc0
NjE2MzZmLAorCTB4NDk2ZTZmNjksMHgwMDAwMDA0NCwweDAwMDYwMDA1LDB4MDAwMDAwNzMsMHg2
YjcyNmY3NywweDQzNjc2ZTY5LDB4NzQ2ZTc1NmYsMHgwMDAwMDAwMCwKKwkweDAwMDQwMDA1LDB4
MDAwMDAwNzQsMHg0OTYzNzI3MywweDAwMDA3ODY0LDB4MDAwNzAwMDUsMHgwMDAwMDA3NiwweDY5
NjQ2ZTY5LDB4NTI3MzY1NjMsCisJMHg2OTYxNmQ2NSwweDY3NmU2OTZlLDB4MDAwMDAwMDAsMHgw
MDA1MDAwNSwweDAwMDAwMDc4LDB4NjU2ZTY5NmMsMHg2NTdhNjk1MywweDAwMDAwMDAwLAorCTB4
MDAwNjAwMDUsMHgwMDAwMDA3OSwweDczNzI2OTY2LDB4NjQ2ZTQ5NzQsMHg2MTU2Nzg2NSwweDAw
NjU3NTZjLDB4MDAwNjAwMDUsMHgwMDAwMDA4MSwKKwkweDc0NzM2NTcyLDB4NTY3NDcyNjEsMHg2
NTc1NmM2MSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsMHgwMDAwMDA4MiwweDY1NjQ2ZTY5LDB4NmM2
MTU2NzgsCisJMHgwMDAwNjU3NSwweDAwMDQwMDA1LDB4MDAwMDAwODUsMHg2MTcyNjE3MCwweDAw
MDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDA5ZSwweDYxNzI2MTcwLAorCTB4MDAwMDAwNmQsMHgw
MDA0MDAwNSwweDAwMDAwMDlmLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAw
MDAwYTgsMHg2MTcyNjE3MCwKKwkweDAwMDAwMDZkLDB4MDAwNDAwMDUsMHgwMDAwMDBhOSwweDYx
NzI2MTcwLDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMGFkLDB4NjE3MjYxNzAsCisJMHgw
MDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYWYsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAw
NDAwMDUsMHgwMDAwMDBiYSwweDYxNzI2MTcwLAorCTB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAw
MDAwMGJjLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwYzIsMHg0Mzc0
NzM2NCwKKwkweDAwMDA2NDZkLDB4MDAwNjAwMDYsMHgwMDAwMDBjMiwweDAwMDAwMDAwLDB4NDM3
NDczNjQsMHg2MTQ0NjQ2ZCwweDAwMDA2MTc0LDB4MDAwMzAwMDUsCisJMHgwMDAwMDBjNCwweDAw
MDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAxMiwweDAwMDAwMDA2LDB4MDAwMDAwMDQsMHgwMDA0
MDA0OCwweDAwMDAwMDEzLAorCTB4MDAwMDAwMDAsMHgwMDAwMDAxOCwweDAwMDUwMDQ4LDB4MDAw
MDAwMTMsMHgwMDAwMDAwMCwweDAwMDAwMDIzLDB4MDAwMDAwMDAsMHgwMDAzMDA0NywKKwkweDAw
MDAwMDEzLDB4MDAwMDAwMDMsMHgwMDA0MDA0NywweDAwMDAwMDE1LDB4MDAwMDAwMjIsMHgwMDAw
MDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwMTUsCisJMHgwMDAwMDAyMSwweDAwMDAwMDAxLDB4MDAw
NTAwNDgsMHgwMDAwMDAyZSwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDUw
MDQ4LAorCTB4MDAwMDAwMmUsMHgwMDAwMDAwMSwweDAwMDAwMDIzLDB4MDAwMDAwMDQsMHgwMDA1
MDA0OCwweDAwMDAwMDJlLDB4MDAwMDAwMDIsMHgwMDAwMDAyMywKKwkweDAwMDAwMDA4LDB4MDAw
NTAwNDgsMHgwMDAwMDAyZSwweDAwMDAwMDAzLDB4MDAwMDAwMjMsMHgwMDAwMDAwYywweDAwMDMw
MDQ3LDB4MDAwMDAwMmUsCisJMHgwMDAwMDAwMiwweDAwMDQwMDQ3LDB4MDAwMDAwMzksMHgwMDAw
MDAwNiwweDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAzYSwweDAwMDAwMDAwLAorCTB4MDAw
MDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwM2EsMHgwMDAwMDAwMywweDAwMDQw
MDQ3LDB4MDAwMDAwM2MsMHgwMDAwMDAyMiwKKwkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAw
MDAzYywweDAwMDAwMDIxLDB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDU0LDB4MDAwMDAw
MDYsCisJMHgwMDAwMDAwNCwweDAwMDQwMDQ4LDB4MDAwMDAwNTUsMHgwMDAwMDAwMCwweDAwMDAw
MDE4LDB4MDAwNTAwNDgsMHgwMDAwMDA1NSwweDAwMDAwMDAwLAorCTB4MDAwMDAwMjMsMHgwMDAw
MDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwNTUsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAw
NTcsMHgwMDAwMDAyMiwKKwkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDA1NywweDAwMDAw
MDIxLDB4MDAwMDAwMDIsMHgwMDA0MDA0NywweDAwMDAwMDY5LDB4MDAwMDAwMGIsCisJMHgwMDAw
MDAxYywweDAwMDQwMDQ3LDB4MDAwMDAwYzEsMHgwMDAwMDAwNiwweDAwMDAwMDA0LDB4MDAwNTAw
NDgsMHgwMDAwMDBjMiwweDAwMDAwMDAwLAorCTB4MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMw
MDQ3LDB4MDAwMDAwYzIsMHgwMDAwMDAwMywweDAwMDQwMDQ3LDB4MDAwMDAwYzQsMHgwMDAwMDAy
MiwKKwkweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDBjNCwweDAwMDAwMDIxLDB4MDAwMDAw
MDMsMHgwMDA0MDA0NywweDAwMDAwMGViLDB4MDAwMDAwMGIsCisJMHgwMDAwMDAxOSwweDAwMDIw
MDEzLDB4MDAwMDAwMDIsMHgwMDAzMDAyMSwweDAwMDAwMDAzLDB4MDAwMDAwMDIsMHgwMDA0MDAx
NSwweDAwMDAwMDA2LAorCTB4MDAwMDAwMjAsMHgwMDAwMDAwMCwweDAwMDQwMDIwLDB4MDAwMDAw
MDcsMHgwMDAwMDAwNywweDAwMDAwMDA2LDB4MDAwNDAwMjEsMHgwMDAwMDAwOCwKKwkweDAwMDAw
MDA2LDB4MDAwMDAwMDcsMHgwMDA1MDAyMSwweDAwMDAwMDBjLDB4MDAwMDAwMDIsMHgwMDAwMDAw
NywweDAwMDAwMDA3LDB4MDAwMzAwMWQsCisJMHgwMDAwMDAxMiwweDAwMDAwMDA2LDB4MDAwMzAw
MWUsMHgwMDAwMDAxMywweDAwMDAwMDEyLDB4MDAwNDAwMjAsMHgwMDAwMDAxNCwweDAwMDAwMDAy
LAorCTB4MDAwMDAwMTMsMHgwMDA0MDAzYiwweDAwMDAwMDE0LDB4MDAwMDAwMTUsMHgwMDAwMDAw
MiwweDAwMDQwMDE1LDB4MDAwMDAwMTYsMHgwMDAwMDAyMCwKKwkweDAwMDAwMDAxLDB4MDAwNDAw
MmIsMHgwMDAwMDAxNiwweDAwMDAwMDE3LDB4MDAwMDAwMDAsMHgwMDA0MDAyYiwweDAwMDAwMDE2
LDB4MDAwMDAwMTksCisJMHgwMDAwMDAwMSwweDAwMDQwMDIwLDB4MDAwMDAwMWIsMHgwMDAwMDAw
MiwweDAwMDAwMDA2LDB4MDAwNDAwMmIsMHgwMDAwMDAwNiwweDAwMDAwMDIwLAorCTB4MDAwMDAw
MDEsMHgwMDA0MDAyYiwweDAwMDAwMDE2LDB4MDAwMDAwMjIsMHgwMDAwMDAwNCwweDAwMDQwMDJi
LDB4MDAwMDAwMDYsMHgwMDAwMDAyOCwKKwkweDAwMDBmZmZmLDB4MDAwNjAwMWUsMHgwMDAwMDAy
ZSwweDAwMDAwMDA2LDB4MDAwMDAwMDYsMHgwMDAwMDAwNiwweDAwMDAwMDA2LDB4MDAwNDAwMjAs
CisJMHgwMDAwMDAyZiwweDAwMDAwMDA5LDB4MDAwMDAwMmUsMHgwMDA0MDAzYiwweDAwMDAwMDJm
LDB4MDAwMDAwMzAsMHgwMDAwMDAwOSwweDAwMDQwMDJiLAorCTB4MDAwMDAwMTYsMHgwMDAwMDAz
MSwweDAwMDAwMDAyLDB4MDAwNDAwMjAsMHgwMDAwMDAzMiwweDAwMDAwMDA5LDB4MDAwMDAwMDYs
MHgwMDAzMDAxZCwKKwkweDAwMDAwMDM5LDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAwMDAwMDNh
LDB4MDAwMDAwMzksMHgwMDA0MDAyMCwweDAwMDAwMDNiLDB4MDAwMDAwMDIsCisJMHgwMDAwMDAz
YSwweDAwMDQwMDNiLDB4MDAwMDAwM2IsMHgwMDAwMDAzYywweDAwMDAwMDAyLDB4MDAwNDAwMmIs
MHgwMDAwMDAxNiwweDAwMDAwMDQ0LAorCTB4MDAwMGZmZmYsMHgwMDAzMDAxZCwweDAwMDAwMDU0
LDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAwMDAwMDU1LDB4MDAwMDAwNTQsMHgwMDA0MDAyMCwK
KwkweDAwMDAwMDU2LDB4MDAwMDAwMDIsMHgwMDAwMDA1NSwweDAwMDQwMDNiLDB4MDAwMDAwNTYs
MHgwMDAwMDA1NywweDAwMDAwMDAyLDB4MDAwNDAwMmIsCisJMHgwMDAwMDAwNiwweDAwMDAwMDVm
LDB4MDAwMDAwMDIsMHgwMDA0MDAxNywweDAwMDAwMDY3LDB4MDAwMDAwMDYsMHgwMDAwMDAwMyww
eDAwMDQwMDIwLAorCTB4MDAwMDAwNjgsMHgwMDAwMDAwMSwweDAwMDAwMDY3LDB4MDAwNDAwM2Is
MHgwMDAwMDA2OCwweDAwMDAwMDY5LDB4MDAwMDAwMDEsMHgwMDA0MDAyYiwKKwkweDAwMDAwMDA2
LDB4MDAwMDAwNmEsMHgwMDAwMDAwMCwweDAwMDQwMDIwLDB4MDAwMDAwNmIsMHgwMDAwMDAwMSww
eDAwMDAwMDA2LDB4MDAwMjAwMTQsCisJMHgwMDAwMDA2ZSwweDAwMDQwMDJiLDB4MDAwMDAwMTYs
MHgwMDAwMDA4ZSwweDAwMDAwMDAzLDB4MDAwMzAwMWQsMHgwMDAwMDBjMSwweDAwMDAwMDA2LAor
CTB4MDAwMzAwMWUsMHgwMDAwMDBjMiwweDAwMDAwMGMxLDB4MDAwNDAwMjAsMHgwMDAwMDBjMyww
eDAwMDAwMDAyLDB4MDAwMDAwYzIsMHgwMDA0MDAzYiwKKwkweDAwMDAwMGMzLDB4MDAwMDAwYzQs
MHgwMDAwMDAwMiwweDAwMDQwMDJiLDB4MDAwMDAwMDYsMHgwMDAwMDBkOCwweDAwMDAwMDAzLDB4
MDAwNDAwMmIsCisJMHgwMDAwMDAwNiwweDAwMDAwMGUyLDB4MDAwMDAwMDQsMHgwMDA0MDAyYiww
eDAwMDAwMDA2LDB4MDAwMDAwZWEsMHgwMDAwMDA0MCwweDAwMDYwMDJjLAorCTB4MDAwMDAwNjcs
MHgwMDAwMDBlYiwweDAwMDAwMGVhLDB4MDAwMDAwMjAsMHgwMDAwMDAyMCwweDAwMDUwMDM2LDB4
MDAwMDAwMDIsMHgwMDAwMDAwNCwKKwkweDAwMDAwMDAwLDB4MDAwMDAwMDMsMHgwMDAyMDBmOCww
eDAwMDAwMDA1LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDUzLDB4MDAwMDAwMDcsCisJ
MHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNWMsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4
MDAwMDAwMDcsMHgwMDAwMDA2MywweDAwMDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNyww
eDAwMDAwMDczLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNzQsMHgw
MDAwMDAwNywKKwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA3NiwweDAwMDAwMDA3LDB4
MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDc4LDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiww
eDAwMDAwMDA3LDB4MDAwMDAwNzksMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgw
MDAwMDA4MSwweDAwMDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDgyLDB4
MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwODUsMHgwMDAwMDAwNywKKwkw
eDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA5ZSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgw
MDAwMDAwNywweDAwMDAwMDlmLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4
MDAwMDAwYTgsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDBhOSwweDAw
MDAwMDA3LAorCTB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMGFkLDB4MDAwMDAwMDcsMHgw
MDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwYWYsMHgwMDAwMDAwNywKKwkweDAwMDQwMDNiLDB4
MDAwMDAwMDcsMHgwMDAwMDBiYSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAw
MDAwMGJjLDB4MDAwMDAwMDcsCisJMHgwMDA1MDA0MSwweDAwMDAwMDMyLDB4MDAwMDAwNTgsMHgw
MDAwMDAzMCwweDAwMDAwMDE3LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDU5LAorCTB4
MDAwMDAwNTgsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwNWEsMHgwMDAwMDA1NywweDAw
MDAwMDE3LDB4MDAwMDAwNTksMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwNWIsMHgw
MDAwMDA1YSwweDAwMDMwMDNlLDB4MDAwMDAwNTMsMHgwMDAwMDA1YiwweDAwMDUwMDQxLDB4MDAw
MDAwMzIsCisJMHgwMDAwMDA1ZCwweDAwMDAwMDMwLDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwweDAw
MDAwMDA2LDB4MDAwMDAwNWUsMHgwMDAwMDA1ZCwweDAwMDUwMDgwLAorCTB4MDAwMDAwMDYsMHgw
MDAwMDA2MCwweDAwMDAwMDVlLDB4MDAwMDAwNWYsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAw
MDAwNjEsMHgwMDAwMDA1NywKKwkweDAwMDAwMDE3LDB4MDAwMDAwNjAsMHgwMDA0MDAzZCwweDAw
MDAwMDA2LDB4MDAwMDAwNjIsMHgwMDAwMDA2MSwweDAwMDMwMDNlLDB4MDAwMDAwNWMsCisJMHgw
MDAwMDA2MiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2NCwweDAwMDAwMDVjLDB4MDAw
NDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDY1LAorCTB4MDAwMDAwNTMsMHgwMDA1MDA4MCwweDAw
MDAwMDA2LDB4MDAwMDAwNjYsMHgwMDAwMDA2NCwweDAwMDAwMDY1LDB4MDAwMzAwM2UsMHgwMDAw
MDA2MywKKwkweDAwMDAwMDY2LDB4MDAwNTAwNDEsMHgwMDAwMDA2YiwweDAwMDAwMDZjLDB4MDAw
MDAwNjksMHgwMDAwMDA2YSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDA2ZCwweDAw
MDAwMDZjLDB4MDAwNTAwYWUsMHgwMDAwMDA2ZSwweDAwMDAwMDZmLDB4MDAwMDAwNmQsMHgwMDAw
MDAyMCwweDAwMDMwMGY3LAorCTB4MDAwMDAwNzEsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAw
MDAwNmYsMHgwMDAwMDA3MCwweDAwMDAwMDcxLDB4MDAwMjAwZjgsMHgwMDAwMDA3MCwKKwkweDAw
MDEwMGZkLDB4MDAwMjAwZjgsMHgwMDAwMDA3MSwweDAwMDMwMDNlLDB4MDAwMDAwNzMsMHgwMDAw
MDA2YSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDA3NSwweDAwMDAwMDVjLDB4MDAw
MzAwM2UsMHgwMDAwMDA3NCwweDAwMDAwMDc1LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAw
MDc3LAorCTB4MDAwMDAwNTMsMHgwMDAzMDAzZSwweDAwMDAwMDc2LDB4MDAwMDAwNzcsMHgwMDAz
MDAzZSwweDAwMDAwMDc4LDB4MDAwMDAwNmEsMHgwMDAzMDAzZSwKKwkweDAwMDAwMDc5LDB4MDAw
MDAwNmEsMHgwMDAyMDBmOSwweDAwMDAwMDdhLDB4MDAwMjAwZjgsMHgwMDAwMDA3YSwweDAwMDQw
MGY2LDB4MDAwMDAwN2MsCisJMHgwMDAwMDA3ZCwweDAwMDAwMDAwLDB4MDAwMjAwZjksMHgwMDAw
MDA3ZSwweDAwMDIwMGY4LDB4MDAwMDAwN2UsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAw
MDAwN2YsMHgwMDAwMDA3NiwweDAwMDUwMGFjLDB4MDAwMDAwNmUsMHgwMDAwMDA4MCwweDAwMDAw
MDdmLDB4MDAwMDAwNmEsMHgwMDA0MDBmYSwKKwkweDAwMDAwMDgwLDB4MDAwMDAwN2IsMHgwMDAw
MDA3YywweDAwMDIwMGY4LDB4MDAwMDAwN2IsMHgwMDAzMDAzZSwweDAwMDAwMDgxLDB4MDAwMDAw
MjgsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwODMsMHgwMDAwMDA3NCwweDAwMDUw
MDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA4NCwweDAwMDAwMDgzLAorCTB4MDAwMDAwMTksMHgwMDAz
MDAzZSwweDAwMDAwMDc0LDB4MDAwMDAwODQsMHgwMDAzMDAzZSwweDAwMDAwMDg1LDB4MDAwMDAw
ODMsMHgwMDA1MDAzOSwKKwkweDAwMDAwMDA2LDB4MDAwMDAwODYsMHgwMDAwMDAwYSwweDAwMDAw
MDg1LDB4MDAwMzAwM2UsMHgwMDAwMDA4MiwweDAwMDAwMDg2LDB4MDAwNDAwM2QsCisJMHgwMDAw
MDAwNiwweDAwMDAwMDg3LDB4MDAwMDAwNzgsMHgwMDA1MDBhYSwweDAwMDAwMDZlLDB4MDAwMDAw
ODgsMHgwMDAwMDA4NywweDAwMDAwMDZhLAorCTB4MDAwMzAwZjcsMHgwMDAwMDA4YSwweDAwMDAw
MDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA4OCwweDAwMDAwMDg5LDB4MDAwMDAwOGEsMHgwMDAyMDBm
OCwKKwkweDAwMDAwMDg5LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDhiLDB4MDAwMDAw
ODIsMHgwMDAzMDAzZSwweDAwMDAwMDc5LDB4MDAwMDAwOGIsCisJMHgwMDAyMDBmOSwweDAwMDAw
MDhhLDB4MDAwMjAwZjgsMHgwMDAwMDA4YSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA4
YywweDAwMDAwMDc2LAorCTB4MDAwNTAwODIsMHgwMDAwMDAwNiwweDAwMDAwMDhkLDB4MDAwMDAw
OGMsMHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4MDAwMDAwNzYsMHgwMDAwMDA4ZCwKKwkweDAwMDUw
MDQxLDB4MDAwMDAwMzIsMHgwMDAwMDA4ZiwweDAwMDAwMDMwLDB4MDAwMDAwOGUsMHgwMDA0MDAz
ZCwweDAwMDAwMDA2LDB4MDAwMDAwOTAsCisJMHgwMDAwMDA4ZiwweDAwMDUwMGFhLDB4MDAwMDAw
NmUsMHgwMDAwMDA5MSwweDAwMDAwMDkwLDB4MDAwMDAwMjAsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LAorCTB4MDAwMDAwOTIsMHgwMDAwMDA4MiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA5
MywweDAwMDAwMDgxLDB4MDAwNTAwYWEsMHgwMDAwMDA2ZSwKKwkweDAwMDAwMDk0LDB4MDAwMDAw
OTIsMHgwMDAwMDA5MywweDAwMDUwMGE3LDB4MDAwMDAwNmUsMHgwMDAwMDA5NSwweDAwMDAwMDkx
LDB4MDAwMDAwOTQsCisJMHgwMDAzMDBmNywweDAwMDAwMDk3LDB4MDAwMDAwMDAsMHgwMDA0MDBm
YSwweDAwMDAwMDk1LDB4MDAwMDAwOTYsMHgwMDAwMDBhYywweDAwMDIwMGY4LAorCTB4MDAwMDAw
OTYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOTgsMHgwMDAwMDA3OCwweDAwMDUwMGFj
LDB4MDAwMDAwNmUsMHgwMDAwMDA5OSwKKwkweDAwMDAwMDk4LDB4MDAwMDAwMjAsMHgwMDAzMDBm
NywweDAwMDAwMDliLDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDk5LDB4MDAwMDAwOWEs
CisJMHgwMDAwMDA5YiwweDAwMDIwMGY4LDB4MDAwMDAwOWEsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwOWMsMHgwMDAwMDA3MywweDAwMDUwMDgwLAorCTB4MDAwMDAwMDYsMHgwMDAwMDA5
ZCwweDAwMDAwMDljLDB4MDAwMDAwMTksMHgwMDAzMDAzZSwweDAwMDAwMDczLDB4MDAwMDAwOWQs
MHgwMDAzMDAzZSwKKwkweDAwMDAwMDllLDB4MDAwMDAwOWMsMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwYTAsMHgwMDAwMDA3OSwweDAwMDMwMDNlLDB4MDAwMDAwOWYsCisJMHgwMDAwMDBh
MCwweDAwMDYwMDM5LDB4MDAwMDAwMDIsMHgwMDAwMDBhMSwweDAwMDAwMDBmLDB4MDAwMDAwOWUs
MHgwMDAwMDA5ZiwweDAwMDIwMGY5LAorCTB4MDAwMDAwOWIsMHgwMDAyMDBmOCwweDAwMDAwMDli
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGEyLDB4MDAwMDAwNzgsMHgwMDA1MDBhYywK
KwkweDAwMDAwMDZlLDB4MDAwMDAwYTMsMHgwMDAwMDBhMiwweDAwMDAwMDZhLDB4MDAwMzAwZjcs
MHgwMDAwMDBhNSwweDAwMDAwMDAwLDB4MDAwNDAwZmEsCisJMHgwMDAwMDBhMywweDAwMDAwMGE0
LDB4MDAwMDAwYTUsMHgwMDAyMDBmOCwweDAwMDAwMGE0LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMGE2LAorCTB4MDAwMDAwNzMsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYTcs
MHgwMDAwMDBhNiwweDAwMDAwMDE5LDB4MDAwMzAwM2UsMHgwMDAwMDA3MywKKwkweDAwMDAwMGE3
LDB4MDAwMzAwM2UsMHgwMDAwMDBhOCwweDAwMDAwMGE2LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMGFhLDB4MDAwMDAwODEsCisJMHgwMDAzMDAzZSwweDAwMDAwMGE5LDB4MDAwMDAwYWEs
MHgwMDA2MDAzOSwweDAwMDAwMDAyLDB4MDAwMDAwYWIsMHgwMDAwMDAwZiwweDAwMDAwMGE4LAor
CTB4MDAwMDAwYTksMHgwMDAyMDBmOSwweDAwMDAwMGE1LDB4MDAwMjAwZjgsMHgwMDAwMDBhNSww
eDAwMDMwMDNlLDB4MDAwMDAwNzgsMHgwMDAwMDA2YSwKKwkweDAwMDIwMGY5LDB4MDAwMDAwOTcs
MHgwMDAyMDBmOCwweDAwMDAwMGFjLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGFlLDB4
MDAwMDAwNzMsCisJMHgwMDAzMDAzZSwweDAwMDAwMGFkLDB4MDAwMDAwYWUsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwYjAsMHgwMDAwMDA4MiwweDAwMDMwMDNlLAorCTB4MDAwMDAwYWYs
MHgwMDAwMDBiMCwweDAwMDYwMDM5LDB4MDAwMDAwMDIsMHgwMDAwMDBiMSwweDAwMDAwMDBmLDB4
MDAwMDAwYWQsMHgwMDAwMDBhZiwKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBiMiww
eDAwMDAwMDczLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGIzLDB4MDAwMDAwYjIsCisJ
MHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4MDAwMDAwNzMsMHgwMDAwMDBiMywweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDBiNCwweDAwMDAwMDc4LAorCTB4MDAwNTAwODAsMHgwMDAwMDAwNiww
eDAwMDAwMGI1LDB4MDAwMDAwYjQsMHgwMDAwMDAxOSwweDAwMDMwMDNlLDB4MDAwMDAwNzgsMHgw
MDAwMDBiNSwKKwkweDAwMDIwMGY5LDB4MDAwMDAwOTcsMHgwMDAyMDBmOCwweDAwMDAwMDk3LDB4
MDAwMjAwZjksMHgwMDAwMDA3ZCwweDAwMDIwMGY4LDB4MDAwMDAwN2QsCisJMHgwMDAyMDBmOSww
eDAwMDAwMDdhLDB4MDAwMjAwZjgsMHgwMDAwMDA3YywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDBiNiwweDAwMDAwMDc4LAorCTB4MDAwNTAwYWMsMHgwMDAwMDA2ZSwweDAwMDAwMGI3LDB4
MDAwMDAwYjYsMHgwMDAwMDAyMCwweDAwMDMwMGY3LDB4MDAwMDAwYjksMHgwMDAwMDAwMCwKKwkw
eDAwMDQwMGZhLDB4MDAwMDAwYjcsMHgwMDAwMDBiOCwweDAwMDAwMGI5LDB4MDAwMjAwZjgsMHgw
MDAwMDBiOCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBiYiwweDAwMDAwMDczLDB4
MDAwMzAwM2UsMHgwMDAwMDBiYSwweDAwMDAwMGJiLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMGJkLAorCTB4MDAwMDAwNzksMHgwMDAzMDAzZSwweDAwMDAwMGJjLDB4MDAwMDAwYmQsMHgw
MDA2MDAzOSwweDAwMDAwMDAyLDB4MDAwMDAwYmUsMHgwMDAwMDAwZiwKKwkweDAwMDAwMGJhLDB4
MDAwMDAwYmMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwYmYsMHgwMDAwMDA3MywweDAw
MDUwMDgwLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBjMCwweDAwMDAwMGJmLDB4MDAwMDAwMTksMHgw
MDAzMDAzZSwweDAwMDAwMDczLDB4MDAwMDAwYzAsMHgwMDAyMDBmOSwweDAwMDAwMGI5LAorCTB4
MDAwMjAwZjgsMHgwMDAwMDBiOSwweDAwMDUwMDQxLDB4MDAwMDAwMzIsMHgwMDAwMDBjNSwweDAw
MDAwMDMwLDB4MDAwMDAwMTksMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwYzYsMHgw
MDAwMDBjNSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBjNywweDAwMDAwMDczLDB4MDAw
NjAwNDEsCisJMHgwMDAwMDAxYiwweDAwMDAwMGM4LDB4MDAwMDAwYzQsMHgwMDAwMDAxNywweDAw
MDAwMGM2LDB4MDAwMzAwM2UsMHgwMDAwMDBjOCwweDAwMDAwMGM3LAorCTB4MDAwNTAwNDEsMHgw
MDAwMDAzMiwweDAwMDAwMGM5LDB4MDAwMDAwMzAsMHgwMDAwMDAxOSwweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDBjYSwKKwkweDAwMDAwMGM5LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAw
MDAwMGNiLDB4MDAwMDAwY2EsMHgwMDAwMDAyMCwweDAwMDUwMDQxLDB4MDAwMDAwMzIsCisJMHgw
MDAwMDBjYywweDAwMDAwMDMwLDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwY2QsMHgwMDAwMDBjYywweDAwMDUwMDgwLAorCTB4MDAwMDAwMDYsMHgwMDAwMDBjZSwweDAw
MDAwMGNkLDB4MDAwMDAwMjAsMHgwMDA2MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwY2YsMHgwMDAw
MDA1NywKKwkweDAwMDAwMDE3LDB4MDAwMDAwY2UsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwZDAsMHgwMDAwMDBjZiwweDAwMDYwMDQxLDB4MDAwMDAwMWIsCisJMHgwMDAwMDBkMSwweDAw
MDAwMGM0LDB4MDAwMDAwMTcsMHgwMDAwMDBjYiwweDAwMDMwMDNlLDB4MDAwMDAwZDEsMHgwMDAw
MDBkMCwweDAwMDUwMDQxLAorCTB4MDAwMDAwMzIsMHgwMDAwMDBkMiwweDAwMDAwMDMwLDB4MDAw
MDAwMTksMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZDMsMHgwMDAwMDBkMiwKKwkweDAw
MDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBkNCwweDAwMDAwMGQzLDB4MDAwMDAwNWYsMHgwMDA2
MDA0MSwweDAwMDAwMDFiLDB4MDAwMDAwZDUsCisJMHgwMDAwMDBjNCwweDAwMDAwMDE3LDB4MDAw
MDAwZDQsMHgwMDAzMDAzZSwweDAwMDAwMGQ1LDB4MDAwMDAwNmEsMHgwMDA1MDA0MSwweDAwMDAw
MDMyLAorCTB4MDAwMDAwZDYsMHgwMDAwMDAzMCwweDAwMDAwMDE5LDB4MDAwNDAwM2QsMHgwMDAw
MDAwNiwweDAwMDAwMGQ3LDB4MDAwMDAwZDYsMHgwMDA1MDA4MCwKKwkweDAwMDAwMDA2LDB4MDAw
MDAwZDksMHgwMDAwMDBkNywweDAwMDAwMGQ4LDB4MDAwNTAwNDEsMHgwMDAwMDAzMiwweDAwMDAw
MGRhLDB4MDAwMDAwMzAsCisJMHgwMDAwMDAxNywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDBkYiwweDAwMDAwMGRhLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGRjLAorCTB4MDAw
MDAwZGIsMHgwMDAwMDBkOCwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDBkZCwweDAwMDAw
MDU3LDB4MDAwMDAwMTcsMHgwMDAwMDBkYywKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAw
MDBkZSwweDAwMDAwMGRkLDB4MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMGRmLDB4MDAwMDAw
YzQsCisJMHgwMDAwMDAxNywweDAwMDAwMGQ5LDB4MDAwMzAwM2UsMHgwMDAwMDBkZiwweDAwMDAw
MGRlLDB4MDAwNTAwNDEsMHgwMDAwMDAzMiwweDAwMDAwMGUwLAorCTB4MDAwMDAwMzAsMHgwMDAw
MDAxOSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBlMSwweDAwMDAwMGUwLDB4MDAwNTAw
ODAsMHgwMDAwMDAwNiwKKwkweDAwMDAwMGUzLDB4MDAwMDAwZTEsMHgwMDAwMDBlMiwweDAwMDUw
MDQxLDB4MDAwMDAwMzIsMHgwMDAwMDBlNCwweDAwMDAwMDMwLDB4MDAwMDAwMTcsCisJMHgwMDA0
MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwZTUsMHgwMDAwMDBlNCwweDAwMDUwMDgwLDB4MDAwMDAw
MDYsMHgwMDAwMDBlNiwweDAwMDAwMGU1LAorCTB4MDAwMDAwZTIsMHgwMDA2MDA0MSwweDAwMDAw
MDFiLDB4MDAwMDAwZTcsMHgwMDAwMDA1NywweDAwMDAwMDE3LDB4MDAwMDAwZTYsMHgwMDA0MDAz
ZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwZTgsMHgwMDAwMDBlNywweDAwMDYwMDQxLDB4MDAwMDAw
MWIsMHgwMDAwMDBlOSwweDAwMDAwMGM0LDB4MDAwMDAwMTcsCisJMHgwMDAwMDBlMywweDAwMDMw
MDNlLDB4MDAwMDAwZTksMHgwMDAwMDBlOCwweDAwMDEwMGZkLDB4MDAwMTAwMzgsMHgwMDA1MDAz
NiwweDAwMDAwMDA2LAorCTB4MDAwMDAwMGEsMHgwMDAwMDAwMCwweDAwMDAwMDA4LDB4MDAwMzAw
MzcsMHgwMDAwMDAwNywweDAwMDAwMDA5LDB4MDAwMjAwZjgsMHgwMDAwMDAwYiwKKwkweDAwMDQw
MDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAxMSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAw
NywweDAwMDAwMDFlLDB4MDAwMDAwMDcsCisJMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAw
MjQsMHgwMDAwMDAwNywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAxOCwweDAwMDAwMDA5
LAorCTB4MDAwNTAwYzIsMHgwMDAwMDAwNiwweDAwMDAwMDFhLDB4MDAwMDAwMTgsMHgwMDAwMDAx
OSwweDAwMDYwMDQxLDB4MDAwMDAwMWIsMHgwMDAwMDAxYywKKwkweDAwMDAwMDE1LDB4MDAwMDAw
MTcsMHgwMDAwMDAxYSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAxZCwweDAwMDAwMDFj
LDB4MDAwMzAwM2UsCisJMHgwMDAwMDAxMSwweDAwMDAwMDFkLDB4MDAwNDAwM2QsMHgwMDAwMDAw
NiwweDAwMDAwMDFmLDB4MDAwMDAwMDksMHgwMDA1MDBjNywweDAwMDAwMDA2LAorCTB4MDAwMDAw
MjEsMHgwMDAwMDAxZiwweDAwMDAwMDIwLDB4MDAwNTAwYzQsMHgwMDAwMDAwNiwweDAwMDAwMDIz
LDB4MDAwMDAwMjEsMHgwMDAwMDAyMiwKKwkweDAwMDMwMDNlLDB4MDAwMDAwMWUsMHgwMDAwMDAy
MywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAyNSwweDAwMDAwMDExLDB4MDAwNDAwM2Qs
CisJMHgwMDAwMDAwNiwweDAwMDAwMDI2LDB4MDAwMDAwMWUsMHgwMDA1MDBjMiwweDAwMDAwMDA2
LDB4MDAwMDAwMjcsMHgwMDAwMDAyNSwweDAwMDAwMDI2LAorCTB4MDAwNTAwYzcsMHgwMDAwMDAw
NiwweDAwMDAwMDI5LDB4MDAwMDAwMjcsMHgwMDAwMDAyOCwweDAwMDMwMDNlLDB4MDAwMDAwMjQs
MHgwMDAwMDAyOSwKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAyYSwweDAwMDAwMDI0
LDB4MDAwMjAwZmUsMHgwMDAwMDAyYSwweDAwMDEwMDM4LDB4MDAwNTAwMzYsCisJMHgwMDAwMDAw
MiwweDAwMDAwMDBmLDB4MDAwMDAwMDAsMHgwMDAwMDAwYywweDAwMDMwMDM3LDB4MDAwMDAwMDcs
MHgwMDAwMDAwZCwweDAwMDMwMDM3LAorCTB4MDAwMDAwMDcsMHgwMDAwMDAwZSwweDAwMDIwMGY4
LDB4MDAwMDAwMTAsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwMmQsMHgwMDAwMDAwNywK
KwkweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDAzOCwweDAwMDAwMDA3LDB4MDAwNDAwM2Is
MHgwMDAwMDAwNywweDAwMDAwMDQwLDB4MDAwMDAwMDcsCisJMHgwMDA1MDA0MSwweDAwMDAwMDMy
LDB4MDAwMDAwMzMsMHgwMDAwMDAzMCwweDAwMDAwMDMxLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiww
eDAwMDAwMDM0LAorCTB4MDAwMDAwMzMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMzUs
MHgwMDAwMDAwZCwweDAwMDUwMGMyLDB4MDAwMDAwMDYsMHgwMDAwMDAzNiwKKwkweDAwMDAwMDM1
LDB4MDAwMDAwMTksMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwMzcsMHgwMDAwMDAzNCww
eDAwMDAwMDM2LDB4MDAwMzAwM2UsCisJMHgwMDAwMDAyZCwweDAwMDAwMDM3LDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDNkLDB4MDAwMDAwMmQsMHgwMDA2MDA0MSwweDAwMDAwMDFiLAor
CTB4MDAwMDAwM2UsMHgwMDAwMDAzYywweDAwMDAwMDE3LDB4MDAwMDAwM2QsMHgwMDA0MDAzZCww
eDAwMDAwMDA2LDB4MDAwMDAwM2YsMHgwMDAwMDAzZSwKKwkweDAwMDMwMDNlLDB4MDAwMDAwMzgs
MHgwMDAwMDAzZiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA0MSwweDAwMDAwMDBkLDB4
MDAwNTAwYzcsCisJMHgwMDAwMDAwNiwweDAwMDAwMDQyLDB4MDAwMDAwNDEsMHgwMDAwMDAyMCww
eDAwMDUwMGM0LDB4MDAwMDAwMDYsMHgwMDAwMDA0MywweDAwMDAwMDQyLAorCTB4MDAwMDAwMjIs
MHgwMDAzMDAzZSwweDAwMDAwMDQwLDB4MDAwMDAwNDMsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4
MDAwMDAwNDUsMHgwMDAwMDA0MCwKKwkweDAwMDUwMGM0LDB4MDAwMDAwMTYsMHgwMDAwMDA0Niww
eDAwMDAwMDQ0LDB4MDAwMDAwNDUsMHgwMDA0MDBjOCwweDAwMDAwMDE2LDB4MDAwMDAwNDcsCisJ
MHgwMDAwMDA0NiwweDAwMDQwMDdjLDB4MDAwMDAwMDYsMHgwMDAwMDA0OCwweDAwMDAwMDQ3LDB4
MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDQ5LAorCTB4MDAwMDAwMzgsMHgwMDA1MDBjNyww
eDAwMDAwMDA2LDB4MDAwMDAwNGEsMHgwMDAwMDA0OSwweDAwMDAwMDQ4LDB4MDAwMzAwM2UsMHgw
MDAwMDAzOCwKKwkweDAwMDAwMDRhLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDRiLDB4
MDAwMDAwMGUsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNGMsCisJMHgwMDAwMDA0MCww
eDAwMDUwMGM0LDB4MDAwMDAwMDYsMHgwMDAwMDA0ZCwweDAwMDAwMDRiLDB4MDAwMDAwNGMsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwNGUsMHgwMDAwMDAzOCwweDAwMDUwMGM1LDB4
MDAwMDAwMDYsMHgwMDAwMDA0ZiwweDAwMDAwMDRlLDB4MDAwMDAwNGQsMHgwMDAzMDAzZSwKKwkw
eDAwMDAwMDM4LDB4MDAwMDAwNGYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNTAsMHgw
MDAwMDAyZCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDA1MSwweDAwMDAwMDM4LDB4
MDAwNjAwNDEsMHgwMDAwMDAxYiwweDAwMDAwMDUyLDB4MDAwMDAwM2MsMHgwMDAwMDAxNywweDAw
MDAwMDUwLAorCTB4MDAwMzAwM2UsMHgwMDAwMDA1MiwweDAwMDAwMDUxLDB4MDAwMTAwZmQsMHgw
MDAxMDAzOAogfTsKIAogLy8gR2VuZXJhdGVkIGZyb206CkBAIC0yMTcsMTUgKzI0MywyOSBAQCBj
b25zdCB1aW50MzJfdCBrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAx
W10gPSB7CiAvLyB1aW50IEdldEluZGV4VmFsdWUodWludCBpbmRleCkKIC8vIHsKIC8vCi0vLyAg
ICAgcmV0dXJuIHNyY0RhdGFbaW5kZXhdOworLy8gICAgIHVpbnQgc3JjQmxvY2sgPSBzcmNEYXRh
W2luZGV4ID4+IDFdOworLy8KKy8vICAgICB1aW50IHNyY1NoaWZ0ID0oKGluZGV4ICYgMHgxKTw8
IDQpOworLy8KKy8vICAgICB1aW50IHZhbHVlID0oc3JjQmxvY2sgPj4gc3JjU2hpZnQpJiAweGZm
ZmY7CisvLyAgICAgcmV0dXJuIHZhbHVlOwogLy8KIC8vIH0KIC8vCiAvLyB2b2lkIFB1dEluZGV4
VmFsdWUodWludCBpbmRleCwgdWludCB2YWx1ZSkKIC8vIHsKIC8vCi0vLyAgICAgZHN0RGF0YVtk
c3RPZmZzZXREaXY0ICsgaW5kZXhdPSB2YWx1ZTsKLS8vICAgICByZXR1cm47CisvLyAgICAgdWlu
dCBkc3RJbmRleCA9IGRzdE9mZnNldERpdjQgKyhpbmRleCA+PiAxKTsKKy8vCisvLyAgICAgdWlu
dCBzcmNCbG9jayA9IGRzdERhdGFbZHN0SW5kZXhdOworLy8KKy8vICAgICB1aW50IHNyY1NoaWZ0
ID0oKGluZGV4ICYgMHgxKTw8IDQpOworLy8KKy8vICAgICBzcmNCbG9jayAmPSB+KDB4ZmZmZiA8
PCBzcmNTaGlmdCk7CisvLworLy8gICAgIHNyY0Jsb2NrIHw9IHZhbHVlIDw8IHNyY1NoaWZ0Owor
Ly8KKy8vICAgICBkc3REYXRhW2RzdEluZGV4XT0gc3JjQmxvY2s7CiAvLwogLy8gfQogLy8KQEAg
LTI0Nyw5ICsyODcsNyBAQCBjb25zdCB1aW50MzJfdCBrQ29udmVydEluZGV4SW5kaXJlY3RMaW5l
TG9vcF9jb21wXzAwMDAwMDAxW10gPSB7CiAvLyAgICAgd2hpbGUoaW5kaWNlc1JlbWFpbmluZyA+
IDApCiAvLyAgICAgewogLy8gICAgICAgICB1aW50IGluZGV4VmFsdWU7Ci0vLwotLy8gICAgICAg
ICB1aW50IHJlc3RhcnRWYWx1ZSA9IDB4ZmZmZmZmZmY7Ci0vLworLy8gICAgICAgICB1aW50IHJl
c3RhcnRWYWx1ZSA9IDB4ZmZmZjsKIC8vICAgICAgICAgaW5kZXhWYWx1ZSA9IEdldEluZGV4VmFs
dWUoc3JjSWR4ICsrKTsKIC8vICAgICAgICAgaWYobGluZVNpemUgPT0gMCkKIC8vICAgICAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAu
MDAwMDAwMDIuaW5jIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9zaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAu
MDAwMDAwMDIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MmUyZTgzMjhlZWNjZmYzOWQ2MjAxYThlMjI3ZDU5
YWUxMjlhMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0
TGluZUxvb3AuY29tcC4wMDAwMDAwMi5pbmMKQEAgLTAsMCArMSwyODUgQEAKKwkvLyA3LjEyLjMy
MjYKKwkgI3ByYWdtYSBvbmNlCitjb25zdCB1aW50MzJfdCBrQ29udmVydEluZGV4SW5kaXJlY3RM
aW5lTG9vcF9jb21wXzAwMDAwMDAyW10gPSB7CisJMHgwNzIzMDIwMywweDAwMDEwMDAwLDB4MDAw
ODAwMDcsMHgwMDAwMDBjOCwweDAwMDAwMDAwLDB4MDAwMjAwMTEsMHgwMDAwMDAwMSwweDAwMDYw
MDBiLAorCTB4MDAwMDAwMDEsMHg0YzUzNGM0NywweDY0NzQ3MzJlLDB4MzAzNTM0MmUsMHgwMDAw
MDAwMCwweDAwMDMwMDBlLDB4MDAwMDAwMDAsMHgwMDAwMDAwMSwKKwkweDAwMDYwMDBmLDB4MDAw
MDAwMDUsMHgwMDAwMDAwNCwweDZlNjk2MTZkLDB4MDAwMDAwMDAsMHgwMDAwMDA0MiwweDAwMDYw
MDEwLDB4MDAwMDAwMDQsCisJMHgwMDAwMDAxMSwweDAwMDAwMDQwLDB4MDAwMDAwMDEsMHgwMDAw
MDAwMSwweDAwMDMwMDAzLDB4MDAwMDAwMDIsMHgwMDAwMDFjMiwweDAwMDQwMDA1LAorCTB4MDAw
MDAwMDQsMHg2ZTY5NjE2ZCwweDAwMDAwMDAwLDB4MDAwNzAwMDUsMHgwMDAwMDAwYSwweDQ5NzQ2
NTQ3LDB4Nzg2NTY0NmUsMHg3NTZjNjE1NiwKKwkweDMxNzUyODY1LDB4MDAwMDAwM2IsMHgwMDA0
MDAwNSwweDAwMDAwMDA5LDB4NjU2NDZlNjksMHgwMDAwMDA3OCwweDAwMDgwMDA1LDB4MDAwMDAw
MGYsCisJMHg0OTc0NzU1MCwweDc4NjU2NDZlLDB4NzU2YzYxNTYsMHgzMTc1Mjg2NSwweDNiMzE3
NTNiLDB4MDAwMDAwMDAsMHgwMDA0MDAwNSwweDAwMDAwMDBkLAorCTB4NjU2NDZlNjksMHgwMDAw
MDA3OCwweDAwMDQwMDA1LDB4MDAwMDAwMGUsMHg3NTZjNjE3NiwweDAwMDAwMDY1LDB4MDAwMzAw
MDUsMHgwMDAwMDAxMiwKKwkweDAwNjM3MjczLDB4MDAwNTAwMDYsMHgwMDAwMDAxMiwweDAwMDAw
MDAwLDB4NDQ2MzcyNzMsMHgwMDYxNzQ2MSwweDAwMDMwMDA1LDB4MDAwMDAwMTQsCisJMHgwMDAw
MDAwMCwweDAwMDMwMDA1LDB4MDAwMDAwMWUsMHgwMDc0NzM2NCwweDAwMDUwMDA2LDB4MDAwMDAw
MWUsMHgwMDAwMDAwMCwweDQ0NzQ3MzY0LAorCTB4MDA2MTc0NjEsMHgwMDAzMDAwNSwweDAwMDAw
MDIwLDB4MDAwMDAwMDAsMHgwMDA2MDAwNSwweDAwMDAwMDIxLDB4Njg3Mzc1NTAsMHg3MzZlNmY0
MywKKwkweDc0NmU2MTc0LDB4MDAwMDAwNzMsMHgwMDA3MDAwNiwweDAwMDAwMDIxLDB4MDAwMDAw
MDAsMHg0ZjY0NmQ2MywweDY1NzM2NjY2LDB4NzY2OTQ0NzQsCisJMHgwMDAwMDAzNCwweDAwMDgw
MDA2LDB4MDAwMDAwMjEsMHgwMDAwMDAwMSwweDQzNzQ3MzY0LDB4NjY0ZjY0NmQsMHg3NDY1NzM2
NiwweDM0NzY2OTQ0LAorCTB4MDAwMDAwMDAsMHgwMDA3MDAwNiwweDAwMDAwMDIxLDB4MDAwMDAw
MDIsMHg0Zjc0NzM2NCwweDY1NzM2NjY2LDB4NzY2OTQ0NzQsMHgwMDAwMDAzNCwKKwkweDAwMDgw
MDA2LDB4MDAwMDAwMjEsMHgwMDAwMDAwMywweDY1NTI3MzY5LDB4NzI2MTc0NzMsMHg2MTZlNDU3
NCwweDY0NjU2YzYyLDB4MDAwMDAwMDAsCisJMHgwMDAzMDAwNSwweDAwMDAwMDIzLDB4MDAwMDAw
MDAsMHgwMDA1MDAwNSwweDAwMDAwMDJjLDB4NjU2NDZlNjksMHg3NTZmNDM3OCwweDAwMDA3NDZl
LAorCTB4MDAwMzAwMDUsMHgwMDAwMDAyZSwweDAwNjQ2ZDYzLDB4MDAwNTAwMDYsMHgwMDAwMDAy
ZSwweDAwMDAwMDAwLDB4NDQ2NDZkNjMsMHgwMDYxNzQ2MSwKKwkweDAwMDMwMDA1LDB4MDAwMDAw
MzAsMHgwMDAwMDAwMCwweDAwMDUwMDA1LDB4MDAwMDAwMzUsMHg3MzcyNjk2NiwweDY0NmU0OTc0
LDB4MDAwMDc4NjUsCisJMHgwMDA1MDAwNSwweDAwMDAwMDNjLDB4NDk2NDZlNjUsMHg3ODY1NjQ2
ZSwweDAwMDAwMDAwLDB4MDAwODAwMDUsMHgwMDAwMDA0MiwweDQ3NWY2YzY3LAorCTB4NjE2MjZm
NmMsMHg3NjZlNDk2YywweDc0NjE2MzZmLDB4NDk2ZTZmNjksMHgwMDAwMDA0NCwweDAwMDYwMDA1
LDB4MDAwMDAwNGQsMHg2YjcyNmY3NywKKwkweDQzNjc2ZTY5LDB4NzQ2ZTc1NmYsMHgwMDAwMDAw
MCwweDAwMDQwMDA1LDB4MDAwMDAwNGUsMHg0OTYzNzI3MywweDAwMDA3ODY0LDB4MDAwNzAwMDUs
CisJMHgwMDAwMDA1MCwweDY5NjQ2ZTY5LDB4NTI3MzY1NjMsMHg2OTYxNmQ2NSwweDY3NmU2OTZl
LDB4MDAwMDAwMDAsMHgwMDA1MDAwNSwweDAwMDAwMDUyLAorCTB4NjU2ZTY5NmMsMHg2NTdhNjk1
MywweDAwMDAwMDAwLDB4MDAwNjAwMDUsMHgwMDAwMDA1MywweDczNzI2OTY2LDB4NjQ2ZTQ5NzQs
MHg2MTU2Nzg2NSwKKwkweDAwNjU3NTZjLDB4MDAwNjAwMDUsMHgwMDAwMDA1YiwweDc0NzM2NTcy
LDB4NTY3NDcyNjEsMHg2NTc1NmM2MSwweDAwMDAwMDAwLDB4MDAwNTAwMDUsCisJMHgwMDAwMDA1
ZCwweDY1NjQ2ZTY5LDB4NmM2MTU2NzgsMHgwMDAwNjU3NSwweDAwMDQwMDA1LDB4MDAwMDAwNjEs
MHg2MTcyNjE3MCwweDAwMDAwMDZkLAorCTB4MDAwNDAwMDUsMHgwMDAwMDA3YSwweDYxNzI2MTcw
LDB4MDAwMDAwNmQsMHgwMDA0MDAwNSwweDAwMDAwMDdiLDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwK
KwkweDAwMDQwMDA1LDB4MDAwMDAwODQsMHg2MTcyNjE3MCwweDAwMDAwMDZkLDB4MDAwNDAwMDUs
MHgwMDAwMDA4NSwweDYxNzI2MTcwLDB4MDAwMDAwNmQsCisJMHgwMDA0MDAwNSwweDAwMDAwMDg5
LDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwweDAwMDQwMDA1LDB4MDAwMDAwOGIsMHg2MTcyNjE3MCww
eDAwMDAwMDZkLAorCTB4MDAwNDAwMDUsMHgwMDAwMDA5NiwweDYxNzI2MTcwLDB4MDAwMDAwNmQs
MHgwMDA0MDAwNSwweDAwMDAwMDk4LDB4NjE3MjYxNzAsMHgwMDAwMDA2ZCwKKwkweDAwMDQwMDA1
LDB4MDAwMDAwOWUsMHg0Mzc0NzM2NCwweDAwMDA2NDZkLDB4MDAwNjAwMDYsMHgwMDAwMDA5ZSww
eDAwMDAwMDAwLDB4NDM3NDczNjQsCisJMHg2MTQ0NjQ2ZCwweDAwMDA2MTc0LDB4MDAwMzAwMDUs
MHgwMDAwMDBhMCwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDAxMSwweDAwMDAwMDA2LAor
CTB4MDAwMDAwMDQsMHgwMDA0MDA0OCwweDAwMDAwMDEyLDB4MDAwMDAwMDAsMHgwMDAwMDAxOCww
eDAwMDUwMDQ4LDB4MDAwMDAwMTIsMHgwMDAwMDAwMCwKKwkweDAwMDAwMDIzLDB4MDAwMDAwMDAs
MHgwMDAzMDA0NywweDAwMDAwMDEyLDB4MDAwMDAwMDMsMHgwMDA0MDA0NywweDAwMDAwMDE0LDB4
MDAwMDAwMjIsCisJMHgwMDAwMDAwMCwweDAwMDQwMDQ3LDB4MDAwMDAwMTQsMHgwMDAwMDAyMSww
eDAwMDAwMDAxLDB4MDAwNDAwNDcsMHgwMDAwMDAxZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwMDQs
MHgwMDA1MDA0OCwweDAwMDAwMDFlLDB4MDAwMDAwMDAsMHgwMDAwMDAyMywweDAwMDAwMDAwLDB4
MDAwMzAwNDcsMHgwMDAwMDAxZSwKKwkweDAwMDAwMDAzLDB4MDAwNDAwNDcsMHgwMDAwMDAyMCww
eDAwMDAwMDIyLDB4MDAwMDAwMDAsMHgwMDA0MDA0NywweDAwMDAwMDIwLDB4MDAwMDAwMjEsCisJ
MHgwMDAwMDAwMCwweDAwMDUwMDQ4LDB4MDAwMDAwMjEsMHgwMDAwMDAwMCwweDAwMDAwMDIzLDB4
MDAwMDAwMDAsMHgwMDA1MDA0OCwweDAwMDAwMDIxLAorCTB4MDAwMDAwMDEsMHgwMDAwMDAyMyww
eDAwMDAwMDA0LDB4MDAwNTAwNDgsMHgwMDAwMDAyMSwweDAwMDAwMDAyLDB4MDAwMDAwMjMsMHgw
MDAwMDAwOCwKKwkweDAwMDUwMDQ4LDB4MDAwMDAwMjEsMHgwMDAwMDAwMywweDAwMDAwMDIzLDB4
MDAwMDAwMGMsMHgwMDAzMDA0NywweDAwMDAwMDIxLDB4MDAwMDAwMDIsCisJMHgwMDA0MDA0Nyww
eDAwMDAwMDJkLDB4MDAwMDAwMDYsMHgwMDAwMDAwNCwweDAwMDQwMDQ4LDB4MDAwMDAwMmUsMHgw
MDAwMDAwMCwweDAwMDAwMDE4LAorCTB4MDAwNTAwNDgsMHgwMDAwMDAyZSwweDAwMDAwMDAwLDB4
MDAwMDAwMjMsMHgwMDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwMmUsMHgwMDAwMDAwMywKKwkw
eDAwMDQwMDQ3LDB4MDAwMDAwMzAsMHgwMDAwMDAyMiwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgw
MDAwMDAzMCwweDAwMDAwMDIxLDB4MDAwMDAwMDIsCisJMHgwMDA0MDA0NywweDAwMDAwMDQyLDB4
MDAwMDAwMGIsMHgwMDAwMDAxYywweDAwMDQwMDQ3LDB4MDAwMDAwOWQsMHgwMDAwMDAwNiwweDAw
MDAwMDA0LAorCTB4MDAwNTAwNDgsMHgwMDAwMDA5ZSwweDAwMDAwMDAwLDB4MDAwMDAwMjMsMHgw
MDAwMDAwMCwweDAwMDMwMDQ3LDB4MDAwMDAwOWUsMHgwMDAwMDAwMywKKwkweDAwMDQwMDQ3LDB4
MDAwMDAwYTAsMHgwMDAwMDAyMiwweDAwMDAwMDAwLDB4MDAwNDAwNDcsMHgwMDAwMDBhMCwweDAw
MDAwMDIxLDB4MDAwMDAwMDMsCisJMHgwMDA0MDA0NywweDAwMDAwMGM3LDB4MDAwMDAwMGIsMHgw
MDAwMDAxOSwweDAwMDIwMDEzLDB4MDAwMDAwMDIsMHgwMDAzMDAyMSwweDAwMDAwMDAzLAorCTB4
MDAwMDAwMDIsMHgwMDA0MDAxNSwweDAwMDAwMDA2LDB4MDAwMDAwMjAsMHgwMDAwMDAwMCwweDAw
MDQwMDIwLDB4MDAwMDAwMDcsMHgwMDAwMDAwNywKKwkweDAwMDAwMDA2LDB4MDAwNDAwMjEsMHgw
MDAwMDAwOCwweDAwMDAwMDA2LDB4MDAwMDAwMDcsMHgwMDA1MDAyMSwweDAwMDAwMDBjLDB4MDAw
MDAwMDIsCisJMHgwMDAwMDAwNywweDAwMDAwMDA3LDB4MDAwMzAwMWQsMHgwMDAwMDAxMSwweDAw
MDAwMDA2LDB4MDAwMzAwMWUsMHgwMDAwMDAxMiwweDAwMDAwMDExLAorCTB4MDAwNDAwMjAsMHgw
MDAwMDAxMywweDAwMDAwMDAyLDB4MDAwMDAwMTIsMHgwMDA0MDAzYiwweDAwMDAwMDEzLDB4MDAw
MDAwMTQsMHgwMDAwMDAwMiwKKwkweDAwMDQwMDE1LDB4MDAwMDAwMTUsMHgwMDAwMDAyMCwweDAw
MDAwMDAxLDB4MDAwNDAwMmIsMHgwMDAwMDAxNSwweDAwMDAwMDE2LDB4MDAwMDAwMDAsCisJMHgw
MDA0MDAyMCwweDAwMDAwMDE4LDB4MDAwMDAwMDIsMHgwMDAwMDAwNiwweDAwMDMwMDFkLDB4MDAw
MDAwMWQsMHgwMDAwMDAwNiwweDAwMDMwMDFlLAorCTB4MDAwMDAwMWUsMHgwMDAwMDAxZCwweDAw
MDQwMDIwLDB4MDAwMDAwMWYsMHgwMDAwMDAwMiwweDAwMDAwMDFlLDB4MDAwNDAwM2IsMHgwMDAw
MDAxZiwKKwkweDAwMDAwMDIwLDB4MDAwMDAwMDIsMHgwMDA2MDAxZSwweDAwMDAwMDIxLDB4MDAw
MDAwMDYsMHgwMDAwMDAwNiwweDAwMDAwMDA2LDB4MDAwMDAwMDYsCisJMHgwMDA0MDAyMCwweDAw
MDAwMDIyLDB4MDAwMDAwMDksMHgwMDAwMDAyMSwweDAwMDQwMDNiLDB4MDAwMDAwMjIsMHgwMDAw
MDAyMywweDAwMDAwMDA5LAorCTB4MDAwNDAwMmIsMHgwMDAwMDAxNSwweDAwMDAwMDI0LDB4MDAw
MDAwMDIsMHgwMDA0MDAyMCwweDAwMDAwMDI1LDB4MDAwMDAwMDksMHgwMDAwMDAwNiwKKwkweDAw
MDMwMDFkLDB4MDAwMDAwMmQsMHgwMDAwMDAwNiwweDAwMDMwMDFlLDB4MDAwMDAwMmUsMHgwMDAw
MDAyZCwweDAwMDQwMDIwLDB4MDAwMDAwMmYsCisJMHgwMDAwMDAwMiwweDAwMDAwMDJlLDB4MDAw
NDAwM2IsMHgwMDAwMDAyZiwweDAwMDAwMDMwLDB4MDAwMDAwMDIsMHgwMDA0MDAyYiwweDAwMDAw
MDA2LAorCTB4MDAwMDAwMzgsMHgwMDAwMDAwMiwweDAwMDQwMDE3LDB4MDAwMDAwNDAsMHgwMDAw
MDAwNiwweDAwMDAwMDAzLDB4MDAwNDAwMjAsMHgwMDAwMDA0MSwKKwkweDAwMDAwMDAxLDB4MDAw
MDAwNDAsMHgwMDA0MDAzYiwweDAwMDAwMDQxLDB4MDAwMDAwNDIsMHgwMDAwMDAwMSwweDAwMDQw
MDJiLDB4MDAwMDAwMDYsCisJMHgwMDAwMDA0MywweDAwMDAwMDAwLDB4MDAwNDAwMjAsMHgwMDAw
MDA0NCwweDAwMDAwMDAxLDB4MDAwMDAwMDYsMHgwMDA0MDAyYiwweDAwMDAwMDA2LAorCTB4MDAw
MDAwNDcsMHgwMDAwMDAwMSwweDAwMDIwMDE0LDB4MDAwMDAwNDgsMHgwMDA0MDAyYiwweDAwMDAw
MDA2LDB4MDAwMDAwNWMsMHhmZmZmZmZmZiwKKwkweDAwMDQwMDJiLDB4MDAwMDAwMTUsMHgwMDAw
MDA1ZiwweDAwMDAwMDAxLDB4MDAwNDAwMmIsMHgwMDAwMDAxNSwweDAwMDAwMDZhLDB4MDAwMDAw
MDMsCisJMHgwMDAzMDAxZCwweDAwMDAwMDlkLDB4MDAwMDAwMDYsMHgwMDAzMDAxZSwweDAwMDAw
MDllLDB4MDAwMDAwOWQsMHgwMDA0MDAyMCwweDAwMDAwMDlmLAorCTB4MDAwMDAwMDIsMHgwMDAw
MDA5ZSwweDAwMDQwMDNiLDB4MDAwMDAwOWYsMHgwMDAwMDBhMCwweDAwMDAwMDAyLDB4MDAwNDAw
MmIsMHgwMDAwMDAwNiwKKwkweDAwMDAwMGI0LDB4MDAwMDAwMDMsMHgwMDA0MDAyYiwweDAwMDAw
MDA2LDB4MDAwMDAwYmUsMHgwMDAwMDAwNCwweDAwMDQwMDJiLDB4MDAwMDAwMDYsCisJMHgwMDAw
MDBjNiwweDAwMDAwMDQwLDB4MDAwNjAwMmMsMHgwMDAwMDA0MCwweDAwMDAwMGM3LDB4MDAwMDAw
YzYsMHgwMDAwMDA0NywweDAwMDAwMDQ3LAorCTB4MDAwNTAwMzYsMHgwMDAwMDAwMiwweDAwMDAw
MDA0LDB4MDAwMDAwMDAsMHgwMDAwMDAwMywweDAwMDIwMGY4LDB4MDAwMDAwMDUsMHgwMDA0MDAz
YiwKKwkweDAwMDAwMDA3LDB4MDAwMDAwMmMsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAw
MDcsMHgwMDAwMDAzNSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsCisJMHgwMDAwMDAwNywweDAwMDAw
MDNjLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNGQsMHgwMDAwMDAw
NywweDAwMDQwMDNiLAorCTB4MDAwMDAwMDcsMHgwMDAwMDA0ZSwweDAwMDAwMDA3LDB4MDAwNDAw
M2IsMHgwMDAwMDAwNywweDAwMDAwMDUwLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKKwkweDAwMDAw
MDA3LDB4MDAwMDAwNTIsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA1
MywweDAwMDAwMDA3LDB4MDAwNDAwM2IsCisJMHgwMDAwMDAwNywweDAwMDAwMDViLDB4MDAwMDAw
MDcsMHgwMDA0MDAzYiwweDAwMDAwMDA3LDB4MDAwMDAwNWQsMHgwMDAwMDAwNywweDAwMDQwMDNi
LAorCTB4MDAwMDAwMDcsMHgwMDAwMDA2MSwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAw
NywweDAwMDAwMDdhLDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKKwkweDAwMDAwMDA3LDB4MDAwMDAw
N2IsMHgwMDAwMDAwNywweDAwMDQwMDNiLDB4MDAwMDAwMDcsMHgwMDAwMDA4NCwweDAwMDAwMDA3
LDB4MDAwNDAwM2IsCisJMHgwMDAwMDAwNywweDAwMDAwMDg1LDB4MDAwMDAwMDcsMHgwMDA0MDAz
YiwweDAwMDAwMDA3LDB4MDAwMDAwODksMHgwMDAwMDAwNywweDAwMDQwMDNiLAorCTB4MDAwMDAw
MDcsMHgwMDAwMDA4YiwweDAwMDAwMDA3LDB4MDAwNDAwM2IsMHgwMDAwMDAwNywweDAwMDAwMDk2
LDB4MDAwMDAwMDcsMHgwMDA0MDAzYiwKKwkweDAwMDAwMDA3LDB4MDAwMDAwOTgsMHgwMDAwMDAw
NywweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDAzMSwweDAwMDAwMDIzLDB4MDAwMDAwMTYs
CisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwMzIsMHgwMDAwMDAzMSwweDAwMDYwMDQx
LDB4MDAwMDAwMTgsMHgwMDAwMDAzMywweDAwMDAwMDMwLAorCTB4MDAwMDAwMTYsMHgwMDAwMDAz
MiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzNCwweDAwMDAwMDMzLDB4MDAwMzAwM2Us
MHgwMDAwMDAyYywKKwkweDAwMDAwMDM0LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMDM2
LDB4MDAwMDAwMjMsMHgwMDAwMDAxNiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDAz
NywweDAwMDAwMDM2LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDM5LDB4MDAwMDAwMzcs
MHgwMDAwMDAzOCwweDAwMDYwMDQxLAorCTB4MDAwMDAwMTgsMHgwMDAwMDAzYSwweDAwMDAwMDMw
LDB4MDAwMDAwMTYsMHgwMDAwMDAzOSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDAzYiwK
KwkweDAwMDAwMDNhLDB4MDAwMzAwM2UsMHgwMDAwMDAzNSwweDAwMDAwMDNiLDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDNkLDB4MDAwMDAwMzUsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2
LDB4MDAwMDAwM2UsMHgwMDAwMDAyYywweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDAzZiww
eDAwMDAwMDNkLAorCTB4MDAwMDAwM2UsMHgwMDAzMDAzZSwweDAwMDAwMDNjLDB4MDAwMDAwM2Ys
MHgwMDA1MDA0MSwweDAwMDAwMDQ0LDB4MDAwMDAwNDUsMHgwMDAwMDA0MiwKKwkweDAwMDAwMDQz
LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDQ2LDB4MDAwMDAwNDUsMHgwMDA1MDBhZSww
eDAwMDAwMDQ4LDB4MDAwMDAwNDksCisJMHgwMDAwMDA0NiwweDAwMDAwMDQ3LDB4MDAwMzAwZjcs
MHgwMDAwMDA0YiwweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA0OSwweDAwMDAwMDRhLAor
CTB4MDAwMDAwNGIsMHgwMDAyMDBmOCwweDAwMDAwMDRhLDB4MDAwMTAwZmQsMHgwMDAyMDBmOCww
eDAwMDAwMDRiLDB4MDAwMzAwM2UsMHgwMDAwMDA0ZCwKKwkweDAwMDAwMDQzLDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwweDAwMDAwMDRmLDB4MDAwMDAwMzUsMHgwMDAzMDAzZSwweDAwMDAwMDRlLDB4
MDAwMDAwNGYsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNTEsMHgwMDAwMDAyYyww
eDAwMDMwMDNlLDB4MDAwMDAwNTAsMHgwMDAwMDA1MSwweDAwMDMwMDNlLAorCTB4MDAwMDAwNTIs
MHgwMDAwMDA0MywweDAwMDMwMDNlLDB4MDAwMDAwNTMsMHgwMDAwMDA0MywweDAwMDIwMGY5LDB4
MDAwMDAwNTQsMHgwMDAyMDBmOCwKKwkweDAwMDAwMDU0LDB4MDAwNDAwZjYsMHgwMDAwMDA1Niww
eDAwMDAwMDU3LDB4MDAwMDAwMDAsMHgwMDAyMDBmOSwweDAwMDAwMDU4LDB4MDAwMjAwZjgsCisJ
MHgwMDAwMDA1OCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA1OSwweDAwMDAwMDUwLDB4
MDAwNTAwYWMsMHgwMDAwMDA0OCwweDAwMDAwMDVhLAorCTB4MDAwMDAwNTksMHgwMDAwMDA0Myww
eDAwMDQwMGZhLDB4MDAwMDAwNWEsMHgwMDAwMDA1NSwweDAwMDAwMDU2LDB4MDAwMjAwZjgsMHgw
MDAwMDA1NSwKKwkweDAwMDMwMDNlLDB4MDAwMDAwNWIsMHgwMDAwMDA1YywweDAwMDQwMDNkLDB4
MDAwMDAwMDYsMHgwMDAwMDA1ZSwweDAwMDAwMDRlLDB4MDAwNTAwODAsCisJMHgwMDAwMDAwNiww
eDAwMDAwMDYwLDB4MDAwMDAwNWUsMHgwMDAwMDA1ZiwweDAwMDMwMDNlLDB4MDAwMDAwNGUsMHgw
MDAwMDA2MCwweDAwMDMwMDNlLAorCTB4MDAwMDAwNjEsMHgwMDAwMDA1ZSwweDAwMDUwMDM5LDB4
MDAwMDAwMDYsMHgwMDAwMDA2MiwweDAwMDAwMDBhLDB4MDAwMDAwNjEsMHgwMDAzMDAzZSwKKwkw
eDAwMDAwMDVkLDB4MDAwMDAwNjIsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNjMsMHgw
MDAwMDA1MiwweDAwMDUwMGFhLDB4MDAwMDAwNDgsCisJMHgwMDAwMDA2NCwweDAwMDAwMDYzLDB4
MDAwMDAwNDMsMHgwMDAzMDBmNywweDAwMDAwMDY2LDB4MDAwMDAwMDAsMHgwMDA0MDBmYSwweDAw
MDAwMDY0LAorCTB4MDAwMDAwNjUsMHgwMDAwMDA2NiwweDAwMDIwMGY4LDB4MDAwMDAwNjUsMHgw
MDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwNjcsMHgwMDAwMDA1ZCwKKwkweDAwMDMwMDNlLDB4
MDAwMDAwNTMsMHgwMDAwMDA2NywweDAwMDIwMGY5LDB4MDAwMDAwNjYsMHgwMDAyMDBmOCwweDAw
MDAwMDY2LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMDY4LDB4MDAwMDAwNTAsMHgw
MDA1MDA4MiwweDAwMDAwMDA2LDB4MDAwMDAwNjksMHgwMDAwMDA2OCwweDAwMDAwMDVmLAorCTB4
MDAwMzAwM2UsMHgwMDAwMDA1MCwweDAwMDAwMDY5LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAw
MDAwMDZiLDB4MDAwMDAwMjMsMHgwMDAwMDA2YSwKKwkweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDA2YywweDAwMDAwMDZiLDB4MDAwNTAwYWEsMHgwMDAwMDA0OCwweDAwMDAwMDZkLDB4MDAw
MDAwNmMsCisJMHgwMDAwMDA0NywweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA2ZSwweDAw
MDAwMDVkLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDZmLAorCTB4MDAwMDAwNWIsMHgw
MDA1MDBhYSwweDAwMDAwMDQ4LDB4MDAwMDAwNzAsMHgwMDAwMDA2ZSwweDAwMDAwMDZmLDB4MDAw
NTAwYTcsMHgwMDAwMDA0OCwKKwkweDAwMDAwMDcxLDB4MDAwMDAwNmQsMHgwMDAwMDA3MCwweDAw
MDMwMGY3LDB4MDAwMDAwNzMsMHgwMDAwMDAwMCwweDAwMDQwMGZhLDB4MDAwMDAwNzEsCisJMHgw
MDAwMDA3MiwweDAwMDAwMDg4LDB4MDAwMjAwZjgsMHgwMDAwMDA3MiwweDAwMDQwMDNkLDB4MDAw
MDAwMDYsMHgwMDAwMDA3NCwweDAwMDAwMDUyLAorCTB4MDAwNTAwYWMsMHgwMDAwMDA0OCwweDAw
MDAwMDc1LDB4MDAwMDAwNzQsMHgwMDAwMDA0NywweDAwMDMwMGY3LDB4MDAwMDAwNzcsMHgwMDAw
MDAwMCwKKwkweDAwMDQwMGZhLDB4MDAwMDAwNzUsMHgwMDAwMDA3NiwweDAwMDAwMDc3LDB4MDAw
MjAwZjgsMHgwMDAwMDA3NiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDA3OCwweDAw
MDAwMDRkLDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMDc5LDB4MDAwMDAwNzgsMHgwMDAw
MDA1ZiwweDAwMDMwMDNlLAorCTB4MDAwMDAwNGQsMHgwMDAwMDA3OSwweDAwMDMwMDNlLDB4MDAw
MDAwN2EsMHgwMDAwMDA3OCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDA3YywKKwkweDAw
MDAwMDUzLDB4MDAwMzAwM2UsMHgwMDAwMDA3YiwweDAwMDAwMDdjLDB4MDAwNjAwMzksMHgwMDAw
MDAwMiwweDAwMDAwMDdkLDB4MDAwMDAwMGYsCisJMHgwMDAwMDA3YSwweDAwMDAwMDdiLDB4MDAw
MjAwZjksMHgwMDAwMDA3NywweDAwMDIwMGY4LDB4MDAwMDAwNzcsMHgwMDA0MDAzZCwweDAwMDAw
MDA2LAorCTB4MDAwMDAwN2UsMHgwMDAwMDA1MiwweDAwMDUwMGFjLDB4MDAwMDAwNDgsMHgwMDAw
MDA3ZiwweDAwMDAwMDdlLDB4MDAwMDAwNDMsMHgwMDAzMDBmNywKKwkweDAwMDAwMDgxLDB4MDAw
MDAwMDAsMHgwMDA0MDBmYSwweDAwMDAwMDdmLDB4MDAwMDAwODAsMHgwMDAwMDA4MSwweDAwMDIw
MGY4LDB4MDAwMDAwODAsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwODIsMHgwMDAw
MDA0ZCwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDA4MywweDAwMDAwMDgyLAorCTB4MDAw
MDAwNWYsMHgwMDAzMDAzZSwweDAwMDAwMDRkLDB4MDAwMDAwODMsMHgwMDAzMDAzZSwweDAwMDAw
MDg0LDB4MDAwMDAwODIsMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwODYsMHgwMDAw
MDA1YiwweDAwMDMwMDNlLDB4MDAwMDAwODUsMHgwMDAwMDA4NiwweDAwMDYwMDM5LDB4MDAwMDAw
MDIsCisJMHgwMDAwMDA4NywweDAwMDAwMDBmLDB4MDAwMDAwODQsMHgwMDAwMDA4NSwweDAwMDIw
MGY5LDB4MDAwMDAwODEsMHgwMDAyMDBmOCwweDAwMDAwMDgxLAorCTB4MDAwMzAwM2UsMHgwMDAw
MDA1MiwweDAwMDAwMDQzLDB4MDAwMjAwZjksMHgwMDAwMDA3MywweDAwMDIwMGY4LDB4MDAwMDAw
ODgsMHgwMDA0MDAzZCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwOGEsMHgwMDAwMDA0ZCwweDAwMDMw
MDNlLDB4MDAwMDAwODksMHgwMDAwMDA4YSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAw
MDA4YywweDAwMDAwMDVkLDB4MDAwMzAwM2UsMHgwMDAwMDA4YiwweDAwMDAwMDhjLDB4MDAwNjAw
MzksMHgwMDAwMDAwMiwweDAwMDAwMDhkLAorCTB4MDAwMDAwMGYsMHgwMDAwMDA4OSwweDAwMDAw
MDhiLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDhlLDB4MDAwMDAwNGQsMHgwMDA1MDA4
MCwKKwkweDAwMDAwMDA2LDB4MDAwMDAwOGYsMHgwMDAwMDA4ZSwweDAwMDAwMDVmLDB4MDAwMzAw
M2UsMHgwMDAwMDA0ZCwweDAwMDAwMDhmLDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAw
MDkwLDB4MDAwMDAwNTIsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwOTEsMHgwMDAwMDA5
MCwweDAwMDAwMDVmLAorCTB4MDAwMzAwM2UsMHgwMDAwMDA1MiwweDAwMDAwMDkxLDB4MDAwMjAw
ZjksMHgwMDAwMDA3MywweDAwMDIwMGY4LDB4MDAwMDAwNzMsMHgwMDAyMDBmOSwKKwkweDAwMDAw
MDU3LDB4MDAwMjAwZjgsMHgwMDAwMDA1NywweDAwMDIwMGY5LDB4MDAwMDAwNTQsMHgwMDAyMDBm
OCwweDAwMDAwMDU2LDB4MDAwNDAwM2QsCisJMHgwMDAwMDAwNiwweDAwMDAwMDkyLDB4MDAwMDAw
NTIsMHgwMDA1MDBhYywweDAwMDAwMDQ4LDB4MDAwMDAwOTMsMHgwMDAwMDA5MiwweDAwMDAwMDQ3
LAorCTB4MDAwMzAwZjcsMHgwMDAwMDA5NSwweDAwMDAwMDAwLDB4MDAwNDAwZmEsMHgwMDAwMDA5
MywweDAwMDAwMDk0LDB4MDAwMDAwOTUsMHgwMDAyMDBmOCwKKwkweDAwMDAwMDk0LDB4MDAwNDAw
M2QsMHgwMDAwMDAwNiwweDAwMDAwMDk3LDB4MDAwMDAwNGQsMHgwMDAzMDAzZSwweDAwMDAwMDk2
LDB4MDAwMDAwOTcsCisJMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAwMDAwOTksMHgwMDAwMDA1
MywweDAwMDMwMDNlLDB4MDAwMDAwOTgsMHgwMDAwMDA5OSwweDAwMDYwMDM5LAorCTB4MDAwMDAw
MDIsMHgwMDAwMDA5YSwweDAwMDAwMDBmLDB4MDAwMDAwOTYsMHgwMDAwMDA5OCwweDAwMDQwMDNk
LDB4MDAwMDAwMDYsMHgwMDAwMDA5YiwKKwkweDAwMDAwMDRkLDB4MDAwNTAwODAsMHgwMDAwMDAw
NiwweDAwMDAwMDljLDB4MDAwMDAwOWIsMHgwMDAwMDA1ZiwweDAwMDMwMDNlLDB4MDAwMDAwNGQs
CisJMHgwMDAwMDA5YywweDAwMDIwMGY5LDB4MDAwMDAwOTUsMHgwMDAyMDBmOCwweDAwMDAwMDk1
LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMGExLAorCTB4MDAwMDAwMjMsMHgwMDAwMDA1
ZiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhMiwweDAwMDAwMGExLDB4MDAwNDAwM2Qs
MHgwMDAwMDAwNiwKKwkweDAwMDAwMGEzLDB4MDAwMDAwNGQsMHgwMDA2MDA0MSwweDAwMDAwMDE4
LDB4MDAwMDAwYTQsMHgwMDAwMDBhMCwweDAwMDAwMDE2LDB4MDAwMDAwYTIsCisJMHgwMDAzMDAz
ZSwweDAwMDAwMGE0LDB4MDAwMDAwYTMsMHgwMDA1MDA0MSwweDAwMDAwMDI1LDB4MDAwMDAwYTUs
MHgwMDAwMDAyMywweDAwMDAwMDVmLAorCTB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGE2
LDB4MDAwMDAwYTUsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYTcsMHgwMDAwMDBhNiwK
KwkweDAwMDAwMDQ3LDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAwMDAwMGE4LDB4MDAwMDAwMjMs
MHgwMDAwMDAxNiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgwMDAwMDBhOSwweDAwMDAwMGE4
LDB4MDAwNTAwODAsMHgwMDAwMDAwNiwweDAwMDAwMGFhLDB4MDAwMDAwYTksMHgwMDAwMDA0Nyww
eDAwMDYwMDQxLAorCTB4MDAwMDAwMTgsMHgwMDAwMDBhYiwweDAwMDAwMDMwLDB4MDAwMDAwMTYs
MHgwMDAwMDBhYSwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgwMDAwMDBhYywKKwkweDAwMDAwMGFi
LDB4MDAwNjAwNDEsMHgwMDAwMDAxOCwweDAwMDAwMGFkLDB4MDAwMDAwYTAsMHgwMDAwMDAxNiww
eDAwMDAwMGE3LDB4MDAwMzAwM2UsCisJMHgwMDAwMDBhZCwweDAwMDAwMGFjLDB4MDAwNTAwNDEs
MHgwMDAwMDAyNSwweDAwMDAwMGFlLDB4MDAwMDAwMjMsMHgwMDAwMDA1ZiwweDAwMDQwMDNkLAor
CTB4MDAwMDAwMDYsMHgwMDAwMDBhZiwweDAwMDAwMGFlLDB4MDAwNTAwODAsMHgwMDAwMDAwNiww
eDAwMDAwMGIwLDB4MDAwMDAwYWYsMHgwMDAwMDAzOCwKKwkweDAwMDYwMDQxLDB4MDAwMDAwMTgs
MHgwMDAwMDBiMSwweDAwMDAwMGEwLDB4MDAwMDAwMTYsMHgwMDAwMDBiMCwweDAwMDMwMDNlLDB4
MDAwMDAwYjEsCisJMHgwMDAwMDA0MywweDAwMDUwMDQxLDB4MDAwMDAwMjUsMHgwMDAwMDBiMiww
eDAwMDAwMDIzLDB4MDAwMDAwNWYsMHgwMDA0MDAzZCwweDAwMDAwMDA2LAorCTB4MDAwMDAwYjMs
MHgwMDAwMDBiMiwweDAwMDUwMDgwLDB4MDAwMDAwMDYsMHgwMDAwMDBiNSwweDAwMDAwMGIzLDB4
MDAwMDAwYjQsMHgwMDA1MDA0MSwKKwkweDAwMDAwMDI1LDB4MDAwMDAwYjYsMHgwMDAwMDAyMyww
eDAwMDAwMDE2LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGI3LDB4MDAwMDAwYjYsCisJ
MHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4MDAwMDAwYjgsMHgwMDAwMDBiNywweDAwMDAwMGI0LDB4
MDAwNjAwNDEsMHgwMDAwMDAxOCwweDAwMDAwMGI5LAorCTB4MDAwMDAwMzAsMHgwMDAwMDAxNiww
eDAwMDAwMGI4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMGJhLDB4MDAwMDAwYjksMHgw
MDA2MDA0MSwKKwkweDAwMDAwMDE4LDB4MDAwMDAwYmIsMHgwMDAwMDBhMCwweDAwMDAwMDE2LDB4
MDAwMDAwYjUsMHgwMDAzMDAzZSwweDAwMDAwMGJiLDB4MDAwMDAwYmEsCisJMHgwMDA1MDA0MSww
eDAwMDAwMDI1LDB4MDAwMDAwYmMsMHgwMDAwMDAyMywweDAwMDAwMDVmLDB4MDAwNDAwM2QsMHgw
MDAwMDAwNiwweDAwMDAwMGJkLAorCTB4MDAwMDAwYmMsMHgwMDA1MDA4MCwweDAwMDAwMDA2LDB4
MDAwMDAwYmYsMHgwMDAwMDBiZCwweDAwMDAwMGJlLDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwKKwkw
eDAwMDAwMGMwLDB4MDAwMDAwMjMsMHgwMDAwMDAxNiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDBjMSwweDAwMDAwMGMwLDB4MDAwNTAwODAsCisJMHgwMDAwMDAwNiwweDAwMDAwMGMyLDB4
MDAwMDAwYzEsMHgwMDAwMDBiZSwweDAwMDYwMDQxLDB4MDAwMDAwMTgsMHgwMDAwMDBjMywweDAw
MDAwMDMwLAorCTB4MDAwMDAwMTYsMHgwMDAwMDBjMiwweDAwMDQwMDNkLDB4MDAwMDAwMDYsMHgw
MDAwMDBjNCwweDAwMDAwMGMzLDB4MDAwNjAwNDEsMHgwMDAwMDAxOCwKKwkweDAwMDAwMGM1LDB4
MDAwMDAwYTAsMHgwMDAwMDAxNiwweDAwMDAwMGJmLDB4MDAwMzAwM2UsMHgwMDAwMDBjNSwweDAw
MDAwMGM0LDB4MDAwMTAwZmQsCisJMHgwMDAxMDAzOCwweDAwMDUwMDM2LDB4MDAwMDAwMDYsMHgw
MDAwMDAwYSwweDAwMDAwMDAwLDB4MDAwMDAwMDgsMHgwMDAzMDAzNywweDAwMDAwMDA3LAorCTB4
MDAwMDAwMDksMHgwMDAyMDBmOCwweDAwMDAwMDBiLDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAw
MDAwMDE3LDB4MDAwMDAwMDksMHgwMDA2MDA0MSwKKwkweDAwMDAwMDE4LDB4MDAwMDAwMTksMHgw
MDAwMDAxNCwweDAwMDAwMDE2LDB4MDAwMDAwMTcsMHgwMDA0MDAzZCwweDAwMDAwMDA2LDB4MDAw
MDAwMWEsCisJMHgwMDAwMDAxOSwweDAwMDIwMGZlLDB4MDAwMDAwMWEsMHgwMDAxMDAzOCwweDAw
MDUwMDM2LDB4MDAwMDAwMDIsMHgwMDAwMDAwZiwweDAwMDAwMDAwLAorCTB4MDAwMDAwMGMsMHgw
MDAzMDAzNywweDAwMDAwMDA3LDB4MDAwMDAwMGQsMHgwMDAzMDAzNywweDAwMDAwMDA3LDB4MDAw
MDAwMGUsMHgwMDAyMDBmOCwKKwkweDAwMDAwMDEwLDB4MDAwNTAwNDEsMHgwMDAwMDAyNSwweDAw
MDAwMDI2LDB4MDAwMDAwMjMsMHgwMDAwMDAyNCwweDAwMDQwMDNkLDB4MDAwMDAwMDYsCisJMHgw
MDAwMDAyNywweDAwMDAwMDI2LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDI4LDB4MDAw
MDAwMGQsMHgwMDA1MDA4MCwweDAwMDAwMDA2LAorCTB4MDAwMDAwMjksMHgwMDAwMDAyNywweDAw
MDAwMDI4LDB4MDAwNDAwM2QsMHgwMDAwMDAwNiwweDAwMDAwMDJhLDB4MDAwMDAwMGUsMHgwMDA2
MDA0MSwKKwkweDAwMDAwMDE4LDB4MDAwMDAwMmIsMHgwMDAwMDAyMCwweDAwMDAwMDE2LDB4MDAw
MDAwMjksMHgwMDAzMDAzZSwweDAwMDAwMDJiLDB4MDAwMDAwMmEsCisJMHgwMDAxMDBmZCwweDAw
MDEwMDM4Cit9OworCisvLyBHZW5lcmF0ZWQgZnJvbToKKy8vCisvLyAjdmVyc2lvbiA0NTAgY29y
ZQorLy8KKy8vIGxheW91dChsb2NhbF9zaXplX3ggPSA2NCwgbG9jYWxfc2l6ZV95ID0gMSwgbG9j
YWxfc2l6ZV96ID0gMSlpbjsKKy8vCisvLyBsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDApYnVm
ZmVyIGRzdAorLy8geworLy8KKy8vICAgICB1aW50IGRzdERhdGFbXTsKKy8vIH07CisvLworLy8g
bGF5b3V0KHNldCA9IDAsIGJpbmRpbmcgPSAxKXJlYWRvbmx5IGJ1ZmZlciBzcmMKKy8vIHsKKy8v
CisvLyAgICAgdWludCBzcmNEYXRhW107CisvLyB9OworLy8KKy8vIGxheW91dChzZXQgPSAwLCBi
aW5kaW5nID0gMilyZWFkb25seSBidWZmZXIgY21kCisvLyB7CisvLworLy8gICAgIHVpbnQgY21k
RGF0YVtdOworLy8gfTsKKy8vCisvLyBsYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDMpYnVmZmVy
IGRzdENtZAorLy8geworLy8KKy8vICAgICB1aW50IGRzdENtZERhdGFbXTsKKy8vIH07CisvLwor
Ly8gbGF5b3V0KHB1c2hfY29uc3RhbnQpdW5pZm9ybSBQdXNoQ29uc3RhbnRzCisvLyB7CisvLwor
Ly8gICAgIHVpbnQgY21kT2Zmc2V0RGl2NDsKKy8vCisvLyAgICAgdWludCBkc3RDbWRPZmZzZXRE
aXY0OworLy8KKy8vICAgICB1aW50IGRzdE9mZnNldERpdjQ7CisvLworLy8gICAgIHVpbnQgaXNS
ZXN0YXJ0RW5hYmxlZDsKKy8vIH07CisvLworLy8gdWludCBHZXRJbmRleFZhbHVlKHVpbnQgaW5k
ZXgpCisvLyB7CisvLworLy8gICAgIHJldHVybiBzcmNEYXRhW2luZGV4XTsKKy8vCisvLyB9Cisv
LworLy8gdm9pZCBQdXRJbmRleFZhbHVlKHVpbnQgaW5kZXgsIHVpbnQgdmFsdWUpCisvLyB7Cisv
LworLy8gICAgIGRzdERhdGFbZHN0T2Zmc2V0RGl2NCArIGluZGV4XT0gdmFsdWU7CisvLworLy8g
fQorLy8KKy8vIHZvaWQgbWFpbigpCisvLyB7CisvLworLy8gICAgIHVpbnQgaW5kZXhDb3VudCA9
IGNtZERhdGFbY21kT2Zmc2V0RGl2NF07CisvLyAgICAgdWludCBmaXJzdEluZGV4ID0gY21kRGF0
YVtjbWRPZmZzZXREaXY0ICsgMl07CisvLyAgICAgdWludCBlbmRJbmRleCA9IGZpcnN0SW5kZXgg
KyBpbmRleENvdW50OworLy8KKy8vICAgICBpZihnbF9HbG9iYWxJbnZvY2F0aW9uSUQgLiB4ID49
IDEpCisvLyAgICAgICAgIHJldHVybjsKKy8vCisvLyAgICAgdWludCB3b3JraW5nQ291bnQgPSAw
OworLy8gICAgIHVpbnQgc3JjSWR4ID0gZmlyc3RJbmRleDsKKy8vICAgICB1aW50IGluZGljZXNS
ZW1haW5pbmcgPSBpbmRleENvdW50OworLy8gICAgIHVpbnQgbGluZVNpemUgPSAwOworLy8gICAg
IHVpbnQgZmlyc3RJbmRleFZhbHVlID0gMDsKKy8vICAgICB3aGlsZShpbmRpY2VzUmVtYWluaW5n
ID4gMCkKKy8vICAgICB7CisvLyAgICAgICAgIHVpbnQgaW5kZXhWYWx1ZTsKKy8vICAgICAgICAg
dWludCByZXN0YXJ0VmFsdWUgPSAweGZmZmZmZmZmOworLy8gICAgICAgICBpbmRleFZhbHVlID0g
R2V0SW5kZXhWYWx1ZShzcmNJZHggKyspOworLy8gICAgICAgICBpZihsaW5lU2l6ZSA9PSAwKQor
Ly8gICAgICAgICB7CisvLyAgICAgICAgICAgICBmaXJzdEluZGV4VmFsdWUgPSBpbmRleFZhbHVl
OworLy8gICAgICAgICB9CisvLyAgICAgICAgIGluZGljZXNSZW1haW5pbmcgLS07CisvLyAgICAg
ICAgIGlmKChpc1Jlc3RhcnRFbmFibGVkID09IDEpJiYoaW5kZXhWYWx1ZSA9PSByZXN0YXJ0VmFs
dWUpKQorLy8gICAgICAgICB7CisvLworLy8gICAgICAgICAgICAgaWYobGluZVNpemUgPiAxKQor
Ly8gICAgICAgICAgICAgeworLy8gICAgICAgICAgICAgICAgIFB1dEluZGV4VmFsdWUod29ya2lu
Z0NvdW50ICsrLCBmaXJzdEluZGV4VmFsdWUpOworLy8gICAgICAgICAgICAgfQorLy8gICAgICAg
ICAgICAgaWYobGluZVNpemUgPiAwKQorLy8gICAgICAgICAgICAgeworLy8gICAgICAgICAgICAg
ICAgIFB1dEluZGV4VmFsdWUod29ya2luZ0NvdW50ICsrLCByZXN0YXJ0VmFsdWUpOworLy8gICAg
ICAgICAgICAgfQorLy8gICAgICAgICAgICAgbGluZVNpemUgPSAwOworLy8gICAgICAgICB9IGVs
c2UgeworLy8gICAgICAgICAgICAgUHV0SW5kZXhWYWx1ZSh3b3JraW5nQ291bnQsIGluZGV4VmFs
dWUpOworLy8gICAgICAgICAgICAgd29ya2luZ0NvdW50ICsrOworLy8gICAgICAgICAgICAgbGlu
ZVNpemUgKys7CisvLyAgICAgICAgIH0KKy8vICAgICB9CisvLyAgICAgaWYobGluZVNpemUgPiAx
KQorLy8gICAgIHsKKy8vICAgICAgICAgUHV0SW5kZXhWYWx1ZSh3b3JraW5nQ291bnQsIGZpcnN0
SW5kZXhWYWx1ZSk7CisvLyAgICAgICAgIHdvcmtpbmdDb3VudCArKzsKKy8vICAgICB9CisvLwor
Ly8gICAgIGRzdENtZERhdGFbZHN0Q21kT2Zmc2V0RGl2NF09IHdvcmtpbmdDb3VudDsKKy8vICAg
ICBkc3RDbWREYXRhW2RzdENtZE9mZnNldERpdjQgKyAxXT0gY21kRGF0YVtjbWRPZmZzZXREaXY0
ICsgMV07CisvLyAgICAgZHN0Q21kRGF0YVtkc3RDbWRPZmZzZXREaXY0ICsgMl09IDA7CisvLyAg
ICAgZHN0Q21kRGF0YVtkc3RDbWRPZmZzZXREaXY0ICsgM109IGNtZERhdGFbY21kT2Zmc2V0RGl2
NCArIDNdOworLy8gICAgIGRzdENtZERhdGFbZHN0Q21kT2Zmc2V0RGl2NCArIDRdPSBjbWREYXRh
W2NtZE9mZnNldERpdjQgKyA0XTsKKy8vIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9zcmMvQ29udmVydElu
ZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL3NyYy9Db252ZXJ0SW5kZXhJbmRpcmVjdExp
bmVMb29wLmNvbXAKaW5kZXggMDUzYjMyMjhiMjI2ODhkOTE5NjRjYzI3NmNjNTc3MmVlYmY0MjVi
Zi4uZGI2NDhlNjg0Y2M2MWYwMzgzZTJmNGU2MjM3MGY0Y2I3MWE0NjVhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFk
ZXJzL3NyYy9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL3NyYy9D
b252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAKQEAgLTgsMTIgKzgsMjkgQEAKIC8vCiAv
LyBUaGUgZm9sbG93aW5nIGRlZmluZXMgdHdlYWsgdGhlIGZ1bmN0aW9uYWxpdHksIGFuZCBhIGRp
ZmZlcmVudCBzaGFkZXIgaXMgYnVpbHQgYmFzZWQgb24gdGhlc2UuCiAvLwotLy8gIC0gRmxhZ3M6
Ci0vLyAgICAqIElzMzJCaXQ6IFByb2Nlc3MgMzItYml0IGluZGljZXMsIG90aGVyd2lzZSBwcm9j
ZXNzIDE2LWJpdC4KKy8vICAtIEluZGljZXNCaXRzV2lkdGg6CisvLyAgICAqIElzOEJpdHM6ICBQ
cm9jZXNzIDgtYml0IGluZGljZXMuCisvLyAgICAqIElzMTZCaXRzOiBQcm9jZXNzIDE2LWJpdCBp
bmRpY2VzLgorLy8gICAgKiBJczMyQml0czogUHJvY2VzcyAzMi1iaXQgaW5kaWNlcy4KIC8vCiAK
ICN2ZXJzaW9uIDQ1MCBjb3JlCiAKKyNpZiBJczMyQml0cworI2RlZmluZSBCSVRTTUFTSyAweGZm
ZmZmZmZmCisjZWxpZiBJczE2Qml0cworI2RlZmluZSBCSVRTTUFTSyAweGZmZmYKKyNkZWZpbmUg
SURYU0hJRlQgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNmJpdHMgaW5kZXggZGl2
aXNpb24gc2hpZnQKKyNkZWZpbmUgU1JDU0hJRlQoaW5kZXgpICgoaW5kZXggJiAweDEpIDw8IDQp
ICAvLyAxNmJpdHMgZGF0YSBzaGlmdCB2YWx1ZSBpbiAzMmJpdHMgaW5kZXgKKyNlbGlmIElzOEJp
dHMKKyNkZWZpbmUgQklUU01BU0sgMHhmZgorI2RlZmluZSBJRFhTSElGVCAyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIDhiaXRzIGluZGV4IGRpdmlzaW9uIHNoaWZ0CisjZGVmaW5lIFNS
Q1NISUZUKGluZGV4KSAoKGluZGV4ICYgMHgzKSA8PCAzKSAgLy8gOGJpdHMgZGF0YSBzaGlmdCB2
YWx1ZSBpbiAzMmJpdHMgaW5kZXgKKyNlbHNlCisvLyBFYXJseSBlcnJvciBvdXQKKyNlcnJvciAi
Tm90IGFsbCBiaXRzIGFyZSBhY2NvdW50ZWQgZm9yIgorI2VuZGlmCisKIGxheW91dCAobG9jYWxf
c2l6ZV94ID0gNjQsIGxvY2FsX3NpemVfeSA9IDEsIGxvY2FsX3NpemVfeiA9IDEpIGluOwogCiBs
YXlvdXQgKHNldCA9IDAsIGJpbmRpbmcgPSAwKSBidWZmZXIgZHN0CkBAIC02NCw0MyArODEsNDIg
QEAgbGF5b3V0IChwdXNoX2NvbnN0YW50KSB1bmlmb3JtIFB1c2hDb25zdGFudHMKIAogdWludCBH
ZXRJbmRleFZhbHVlKHVpbnQgaW5kZXgpCiB7Ci0jaWZkZWYgSXMzMkJpdAorI2lmIElzMzJCaXRz
CiAgICAgcmV0dXJuIHNyY0RhdGFbaW5kZXhdOwotI2Vsc2UKKyNlbGlmIElzMTZCaXRzIHx8IElz
OEJpdHMKICAgICAvLyBzcmNEYXRhIHBvaW50cyB0byAzMmJpdCB3b3JkcywgZ2V0IHRoZSB3b3Jk
IHdpdGggb3VyIGluZGV4IHZhbHVlCi0gICAgdWludCBzcmNCbG9jayA9IHNyY0RhdGFbaW5kZXgg
Pj4gMV07CisgICAgdWludCBzcmNCbG9jayA9IHNyY0RhdGFbaW5kZXggPj4gSURYU0hJRlRdOwog
ICAgIC8vIENvbXB1dGUgdGhlIHNoaWZ0IG5lY2Vzc2FyeSB0byBhY2Nlc3MgZGVzaXJlZCBpbmRl
eCB2YWx1ZQotICAgIHVpbnQgc3JjU2hpZnQgPSAoaW5kZXggJiAweDEpIDw8IDQ7Ci0gICAgLy8g
T25seSB3YW50IDE2Yml0cwotICAgIHVpbnQgc3JjTWFzayA9IDB4ZmZmZjsKLQotICAgIC8vIHVu
cGFja2luZyBjb3JyZWN0IDE2Yml0IGluZGV4IHZhbHVlIGZyb20gdGhlIDMyYml0IHdvcmQKLSAg
ICB1aW50IHZhbHVlID0gKHNyY0Jsb2NrID4+IHNyY1NoaWZ0KSAmIHNyY01hc2s7CisgICAgdWlu
dCBzcmNTaGlmdCA9IFNSQ1NISUZUKGluZGV4KTsKKyAgICAvLyB1bnBhY2tpbmcgY29ycmVjdCA4
LzE2IGJpdHMgaW5kZXggdmFsdWUgZnJvbSB0aGUgMzJiaXQgd29yZAorICAgIHVpbnQgdmFsdWUg
PSAoc3JjQmxvY2sgPj4gc3JjU2hpZnQpICYgQklUU01BU0s7CiAgICAgcmV0dXJuIHZhbHVlOwot
I2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgYWxsIGJpdHMgYXJlIGFjY291bnRlZCBmb3IiCisj
ZW5kaWYgLy8gSXMzMkJpdHMKIH0KIAogdm9pZCBQdXRJbmRleFZhbHVlKHVpbnQgaW5kZXgsIHVp
bnQgdmFsdWUpCiB7Ci0jaWZkZWYgSXMzMkJpdAorI2lmIElzMzJCaXRzCiAgICAgZHN0RGF0YVtk
c3RPZmZzZXREaXY0ICsgaW5kZXhdID0gdmFsdWU7Ci0gICAgcmV0dXJuOwotI2Vsc2UKKyNlbGlm
IElzMTZCaXRzIHx8IElzOEJpdHMKICAgICAvLyBDb21wdXRlIGluZGV4IGludG8gZHN0RGF0YSBm
b3Igb3VyIGluZGV4IHZhbHVlCi0gICAgdWludCBkc3RJbmRleCA9IGRzdE9mZnNldERpdjQgKyAo
aW5kZXggPj4gMSk7CisgICAgdWludCBkc3RJbmRleCA9IGRzdE9mZnNldERpdjQgKyAoaW5kZXgg
Pj4gSURYU0hJRlQpOwogICAgIC8vIEdldCBkZXN0IGluZGV4IHZhbHVlCiAgICAgdWludCBzcmNC
bG9jayA9IGRzdERhdGFbZHN0SW5kZXhdOwogICAgIC8vIENvbXB1dGUgdGhlIHNoaWZ0IGZvciBv
dXIgaW5kZXggdmFsdWUKLSAgICB1aW50IHNyY1NoaWZ0ID0gKGluZGV4ICYgMHgxKSA8PCA0Owot
ICAgIHVpbnQgc3JjTWFzayA9IDB4ZmZmZjsKKyAgICB1aW50IHNyY1NoaWZ0ID0gU1JDU0hJRlQo
aW5kZXgpOwogCi0gICAgLy8gQ2xlYXIgYXBwcm9wcmlhdGUgMTZiaXRzIG9mIDMyYml0IHdvcmQK
LSAgICBzcmNCbG9jayAmPSB+KHNyY01hc2sgPDwgc3JjU2hpZnQpOwotICAgIC8vIFNoaWZ0IHZh
bHVlIHRvIHBhY2sgMTZiaXQgdmFsdWUgaW50byAzMmJpdCB3b3JkCisgICAgLy8gQ2xlYXIgYXBw
cm9wcmlhdGUgYml0cyBvZiAzMmJpdCB3b3JkCisgICAgc3JjQmxvY2sgJj0gfihCSVRTTUFTSyA8
PCBzcmNTaGlmdCk7CisgICAgLy8gU2hpZnQgdmFsdWUgdG8gcGFjayA4LzE2IGJpdHMgdmFsdWUg
aW50byAzMmJpdCB3b3JkCiAgICAgc3JjQmxvY2sgfD0gdmFsdWUgPDwgc3JjU2hpZnQ7CiAgICAg
Ly8gU3RvcmUgdXBkYXRlZCB2YWx1ZSBpbiBkZXN0aW5hdGlvbgogICAgIGRzdERhdGFbZHN0SW5k
ZXhdID0gc3JjQmxvY2s7Ci0jZW5kaWYKKyNlbHNlCisjZXJyb3IgIk5vdCBhbGwgYml0cyBhcmUg
YWNjb3VudGVkIGZvciIKKyNlbmRpZiAvLyBJczMyQml0cwogfQogCiB2b2lkIG1haW4oKQpAQCAt
MTIyLDEyICsxMzgsNyBAQCB2b2lkIG1haW4oKQogICAgIHdoaWxlIChpbmRpY2VzUmVtYWluaW5n
ID4gMCkKICAgICB7CiAgICAgICAgIHVpbnQgaW5kZXhWYWx1ZTsKLQotI2lmZGVmIElzMzJCaXQK
LSAgICAgICAgdWludCByZXN0YXJ0VmFsdWUgPSAweGZmZmZmZmZmOwotI2Vsc2UKLSAgICAgICAg
dWludCByZXN0YXJ0VmFsdWUgPSAweGZmZmY7Ci0jZW5kaWYKKyAgICAgICAgdWludCByZXN0YXJ0
VmFsdWUgPSBCSVRTTUFTSzsKICAgICAgICAgaW5kZXhWYWx1ZSA9IEdldEluZGV4VmFsdWUoc3Jj
SWR4KyspOwogICAgICAgICBpZiAobGluZVNpemUgPT0gMCkKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9z
aGFkZXJzL3NyYy9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAuanNvbiBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9z
cmMvQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLmpzb24KaW5kZXggYmRlMzA3NWVj
ZGJiMWYyYWIzMTU4MDM5YmUwZjdiMWIxMjdiYzIxZS4uZmUxMDhjZWFkOTA4ZjQyNTVkMjVmYmIx
NWUxOTU3MWQ5NGI5ZTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9zaGFkZXJzL3NyYy9Db252ZXJ0SW5kZXhJbmRpcmVj
dExpbmVMb29wLmNvbXAuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvc3JjL0NvbnZlcnRJbmRleEluZGlyZWN0TGlu
ZUxvb3AuY29tcC5qc29uCkBAIC0xLDEyICsxLDE0IEBACiB7CiAgICAgIkRlc2NyaXB0aW9uIjog
WwotICAgICAgICAiQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4iLAorICAgICAgICAiQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iLAogICAgICAgICAiVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZSIsCiAgICAgICAgICJmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLiIsCiAgICAgICAgICIi
LAogICAgICAgICAiQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLmpzb246IEJ1aWxk
IHBhcmFtZXRlcnMgZm9yIENvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3AuY29tcC4iCiAgICAg
XSwKLSAgICAiRmxhZ3MiOiBbCi0gICAgICAgICJJczMyQml0IgorICAgICJJbmRpY2VzQml0c1dp
ZHRoIjogWworICAgICAgICAiSXM4Qml0cyIsCisgICAgICAgICJJczE2Qml0cyIsCisgICAgICAg
ICJJczMyQml0cyIKICAgICBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfY2FjaGVf
dXRpbHMuY3BwCmluZGV4IDA3ZWM3MDcyYmVjY2ZiYmZhZTM3ZTNiM2VjYjUxMTA2Y2I0NDY0NDQu
LmUzZjg3MDhiODUwMTZkNmM3ZDM1YTg2MDk4YjU3MDRkNTI0NzlmZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfY2Fj
aGVfdXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vdmtfY2FjaGVfdXRpbHMuY3BwCkBAIC0zNTMsMTEgKzM1Myw2IEBAIERl
c3RUIEludDRBcnJheV9HZXQoY29uc3QgdWludDhfdCAqYXJyYXlCeXRlcywgdWludDMyX3QgYXJy
YXlJbmRleCkKICAgICB9CiB9CiAKLS8vIEhlbHBlciBtYWNybyB0aGF0IGNhc3RzIHRvIGEgYml0
ZmllbGQgdHlwZSB0aGVuIHZlcmlmaWVzIG5vIGJpdHMgd2VyZSBkcm9wcGVkLgotI2RlZmluZSBT
ZXRCaXRGaWVsZChsaHMsIHJocykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBsaHMgPSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmRlY2F5PGRlY2x0eXBl
KGxocyk+Ojp0eXBlPihyaHMpOyBcCi0gICAgQVNTRVJUKHN0YXRpY19jYXN0PGRlY2x0eXBlKHJo
cyk+KGxocykgPT0gKHJocykpCi0KIC8vIFdoZW4gY29udmVydGluZyBhIGJ5dGUgbnVtYmVyIHRv
IGEgdHJhbnNpdGlvbiBiaXQgaW5kZXggd2UgY2FuIHNoaWZ0IGluc3RlYWQgb2YgZGl2aWRlLgog
Y29uc3RleHByIHNpemVfdCBrVHJhbnNpdGlvbkJ5dGVTaGlmdCA9IExvZzIoa0dyYXBoaWNzUGlw
ZWxpbmVEaXJ0eUJpdEJ5dGVzKTsKIApAQCAtODI2LDcgKzgyMSw3IEBAIGFuZ2xlOjpSZXN1bHQg
R3JhcGhpY3NQaXBlbGluZURlc2M6OmluaXRpYWxpemVQaXBlbGluZSgKIAogICAgIFZrUGlwZWxp
bmVSYXN0ZXJpemF0aW9uTGluZVN0YXRlQ3JlYXRlSW5mb0VYVCByYXN0ZXJMaW5lU3RhdGUgPSB7
fTsKICAgICByYXN0ZXJMaW5lU3RhdGUuc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9QSVBFTElO
RV9SQVNURVJJWkFUSU9OX0xJTkVfU1RBVEVfQ1JFQVRFX0lORk9fRVhUOwotICAgIC8vIEFsd2F5
cyBlbmFibGUgQnJlc2VuaGFtIGxpbmUgcmFzdGVyaXphdGlvbiBpZiBhdmFpbGFibGUuCisgICAg
Ly8gRW5hYmxlIEJyZXNlbmhhbSBsaW5lIHJhc3Rlcml6YXRpb24gaWYgYXZhaWxhYmxlIGFuZCBu
b3QgbXVsdGlzYW1wbGluZy4KICAgICBpZiAocmFzdGVyQW5kTVMuYml0cy5yYXN0ZXJpemF0aW9u
U2FtcGxlcyA8PSAxICYmCiAgICAgICAgIGNvbnRleHRWay0+Z2V0RmVhdHVyZXMoKS5icmVzZW5o
YW1MaW5lUmFzdGVyaXphdGlvbi5lbmFibGVkKQogICAgIHsKQEAgLTE2NTAsNiArMTY0NSwzNyBA
QCBib29sIFRleHR1cmVEZXNjcmlwdG9yRGVzYzo6b3BlcmF0b3I9PShjb25zdCBUZXh0dXJlRGVz
Y3JpcHRvckRlc2MgJm90aGVyKSBjb25zdAogICAgIHJldHVybiBtZW1jbXAobVNlcmlhbHMuZGF0
YSgpLCBvdGhlci5tU2VyaWFscy5kYXRhKCksIHNpemVvZihUZXhVbml0U2VyaWFscykgKiBtTWF4
SW5kZXgpID09IDA7CiB9CiAKK0ZyYW1lYnVmZmVyRGVzYzo6RnJhbWVidWZmZXJEZXNjKCkKK3sK
KyAgICByZXNldCgpOworfQorCitGcmFtZWJ1ZmZlckRlc2M6On5GcmFtZWJ1ZmZlckRlc2MoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGRlZmF1bHQ7CitGcmFtZWJ1ZmZlckRlc2M6OkZy
YW1lYnVmZmVyRGVzYyhjb25zdCBGcmFtZWJ1ZmZlckRlc2MgJm90aGVyKSA9IGRlZmF1bHQ7CitG
cmFtZWJ1ZmZlckRlc2MgJkZyYW1lYnVmZmVyRGVzYzo6b3BlcmF0b3I9KGNvbnN0IEZyYW1lYnVm
ZmVyRGVzYyAmb3RoZXIpID0gZGVmYXVsdDsKKwordm9pZCBGcmFtZWJ1ZmZlckRlc2M6OnVwZGF0
ZSh1aW50MzJfdCBpbmRleCwgQXR0YWNobWVudFNlcmlhbCBzZXJpYWwpCit7CisgICAgQVNTRVJU
KGluZGV4IDwga01heEZyYW1lYnVmZmVyQXR0YWNobWVudHMpOworICAgIG1TZXJpYWxzW2luZGV4
XSA9IHNlcmlhbDsKK30KKworc2l6ZV90IEZyYW1lYnVmZmVyRGVzYzo6aGFzaCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGFuZ2xlOjpDb21wdXRlR2VuZXJpY0hhc2goJm1TZXJpYWxzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihBdHRhY2htZW50U2VyaWFsKSAq
IGtNYXhGcmFtZWJ1ZmZlckF0dGFjaG1lbnRzKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlckRlc2M6
OnJlc2V0KCkKK3sKKyAgICBtZW1zZXQoJm1TZXJpYWxzLCAwLCBzaXplb2YoQXR0YWNobWVudFNl
cmlhbCkgKiBrTWF4RnJhbWVidWZmZXJBdHRhY2htZW50cyk7Cit9CisKK2Jvb2wgRnJhbWVidWZm
ZXJEZXNjOjpvcGVyYXRvcj09KGNvbnN0IEZyYW1lYnVmZmVyRGVzYyAmb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1lbWNtcCgmbVNlcmlhbHMsICZvdGhlci5tU2VyaWFscywgc2l6ZW9mKFNl
cmlhbCkgKiBrTWF4RnJhbWVidWZmZXJBdHRhY2htZW50cykgPT0gMDsKK30KKwogfSAgLy8gbmFt
ZXNwYWNlIHZrCiAKIC8vIFJlbmRlclBhc3NDYWNoZSBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
dmtfY2FjaGVfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vdmtfY2FjaGVfdXRpbHMuaAppbmRleCAxNmY0MGJjNWQ4ZGY3ZTRlYzlj
YzEzZWE3ZWQ1NGQ3M2U5NzE1YWQ2Li41Y2QxZDQ2ZjBkNjBhYWJhNmJjNjBlM2E2ZmQ2MmNmYzg0
NDYxMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL3ZrX2NhY2hlX3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYWNoZV91dGlscy5oCkBAIC0y
OCw2ICsyOCwxMSBAQCB1c2luZyBQaXBlbGluZUFuZFNlcmlhbCAgID0gT2JqZWN0QW5kU2VyaWFs
PFBpcGVsaW5lPjsKIHVzaW5nIFJlZkNvdW50ZWREZXNjcmlwdG9yU2V0TGF5b3V0ID0gUmVmQ291
bnRlZDxEZXNjcmlwdG9yU2V0TGF5b3V0PjsKIHVzaW5nIFJlZkNvdW50ZWRQaXBlbGluZUxheW91
dCAgICAgID0gUmVmQ291bnRlZDxQaXBlbGluZUxheW91dD47CiAKKy8vIEhlbHBlciBtYWNybyB0
aGF0IGNhc3RzIHRvIGEgYml0ZmllbGQgdHlwZSB0aGVuIHZlcmlmaWVzIG5vIGJpdHMgd2VyZSBk
cm9wcGVkLgorI2RlZmluZSBTZXRCaXRGaWVsZChsaHMsIHJocykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBsaHMgPSBzdGF0aWNfY2FzdDx0eXBlbmFtZSBz
dGQ6OmRlY2F5PGRlY2x0eXBlKGxocyk+Ojp0eXBlPihyaHMpOyBcCisgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGRlY2x0eXBlKHJocyk+KGxocykgPT0gKHJocykpCisKIC8vIFBhY2tlZCBWayByZXNv
dXJjZSBkZXNjcmlwdGlvbnMuCiAvLyBNb3N0IFZrIHR5cGVzIHVzZSBtYW55IG1vcmUgYml0cyB0
aGFuIHJlcXVpcmVkIHRvIHJlcHJlc2VudCB0aGUgdW5kZXJseWluZyBkYXRhLgogLy8gU2luY2Ug
QU5HTEUgd2FudHMgdG8gY2FjaGUgdGhpbmdzIGxpa2UgUmVuZGVyUGFzc2VzIGFuZCBQaXBlbGlu
ZSBTdGF0ZSBPYmplY3RzIHVzaW5nCkBAIC03MTUsNiArNzIwLDM5IEBAIGNsYXNzIFRleHR1cmVE
ZXNjcmlwdG9yRGVzYwogICAgIH07CiAgICAgZ2w6OkFjdGl2ZVRleHR1cmVBcnJheTxUZXhVbml0
U2VyaWFscz4gbVNlcmlhbHM7CiB9OworCisvLyBUaGlzIGlzIElNUExFTUVOVEFUSU9OX01BWF9E
UkFXX0JVRkZFUlMgKyAxIGZvciBEUyBhdHRhY2htZW50Citjb25zdGV4cHIgc2l6ZV90IGtNYXhG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRzID0gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UUzsKKy8vIENvbG9yIHNlcmlhbHMgYXJlIGF0IGluZGV4IFswOmdsOjpJTVBM
RU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTLTFdCisvLyBEZXB0aC9zdGVuY2lsIGluZGV4IGlz
IGF0IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTCitjb25zdGV4cHIgc2l6ZV90
IGtGcmFtZWJ1ZmZlckRlc2NEZXB0aFN0ZW5jaWxJbmRleCA9IGdsOjpJTVBMRU1FTlRBVElPTl9N
QVhfRFJBV19CVUZGRVJTOworLy8gU3RydWN0IGZvciBBdHRhY2htZW50U2VyaWFsIGNhY2hlIHNp
Z25hdHVyZXMuIEluY2x1ZGVzIGxldmVsL2xheWVyIGZvciBpbWFnZVZpZXcgYXMKKy8vICB3ZWxs
IGFzIGEgdW5pcXVlIFNlcmlhbCB2YWx1ZSBmb3IgdGhlIHVuZGVybHlpbmcgaW1hZ2UKK3N0cnVj
dCBBdHRhY2htZW50U2VyaWFsCit7CisgICAgdWludDE2X3QgbGV2ZWw7CisgICAgdWludDE2X3Qg
bGF5ZXI7CisgICAgdWludDMyX3QgaW1hZ2VTZXJpYWw7Cit9OworY29uc3RleHByIEF0dGFjaG1l
bnRTZXJpYWwga1plcm9BdHRhY2htZW50U2VyaWFsID0gezAsIDAsIDB9OworY2xhc3MgRnJhbWVi
dWZmZXJEZXNjCit7CisgIHB1YmxpYzoKKyAgICBGcmFtZWJ1ZmZlckRlc2MoKTsKKyAgICB+RnJh
bWVidWZmZXJEZXNjKCk7CisKKyAgICBGcmFtZWJ1ZmZlckRlc2MoY29uc3QgRnJhbWVidWZmZXJE
ZXNjICZvdGhlcik7CisgICAgRnJhbWVidWZmZXJEZXNjICZvcGVyYXRvcj0oY29uc3QgRnJhbWVi
dWZmZXJEZXNjICZvdGhlcik7CisKKyAgICB2b2lkIHVwZGF0ZSh1aW50MzJfdCBpbmRleCwgQXR0
YWNobWVudFNlcmlhbCBzZXJpYWwpOworICAgIHNpemVfdCBoYXNoKCkgY29uc3Q7CisgICAgdm9p
ZCByZXNldCgpOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYW1lYnVmZmVyRGVzYyAm
b3RoZXIpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgZ2w6OkF0dGFjaG1lbnRBcnJheTxBdHRh
Y2htZW50U2VyaWFsPiBtU2VyaWFsczsKK307CiB9ICAvLyBuYW1lc3BhY2UgdmsKIH0gIC8vIG5h
bWVzcGFjZSByeAogCkBAIC03NTYsNiArNzk0LDEyIEBAIHN0cnVjdCBoYXNoPHJ4Ojp2azo6VGV4
dHVyZURlc2NyaXB0b3JEZXNjPgogewogICAgIHNpemVfdCBvcGVyYXRvcigpKGNvbnN0IHJ4Ojp2
azo6VGV4dHVyZURlc2NyaXB0b3JEZXNjICZrZXkpIGNvbnN0IHsgcmV0dXJuIGtleS5oYXNoKCk7
IH0KIH07CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgaGFzaDxyeDo6dms6OkZyYW1lYnVmZmVyRGVz
Yz4KK3sKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCByeDo6dms6OkZyYW1lYnVmZmVyRGVz
YyAma2V5KSBjb25zdCB7IHJldHVybiBrZXkuaGFzaCgpOyB9Cit9OwogfSAgLy8gbmFtZXNwYWNl
IHN0ZAogCiBuYW1lc3BhY2UgcngKQEAgLTkzMyw4ICs5NzcsNiBAQCBjb25zdGV4cHIgdWludDMy
X3Qga1Jlc2VydmVkRHJpdmVyVW5pZm9ybUJpbmRpbmdDb3VudCA9IDE7CiAvLyBzdXBwb3J0ZWQu
CiBjb25zdGV4cHIgdWludDMyX3Qga1Jlc2VydmVkUGVyU3RhZ2VEZWZhdWx0VW5pZm9ybUJpbmRp
bmdDb3VudCA9IDE7CiBjb25zdGV4cHIgdWludDMyX3Qga1Jlc2VydmVkRGVmYXVsdFVuaWZvcm1C
aW5kaW5nQ291bnQgICAgICAgICA9IDM7Ci0vLyBCaW5kaW5nIGluZGV4IHN0YXJ0IGZvciB0cmFu
c2Zvcm0gZmVlZGJhY2sgYnVmZmVyczoKLWNvbnN0ZXhwciB1aW50MzJfdCBrWGZiQmluZGluZ0lu
ZGV4U3RhcnQgPSBrUmVzZXJ2ZWREZWZhdWx0VW5pZm9ybUJpbmRpbmdDb3VudDsKIH0gIC8vIG5h
bWVzcGFjZSByeAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9WS19DQUNI
RV9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYXBzX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfY2Fwc191dGlscy5jcHAKaW5k
ZXggYjNkNzA3YmJkNWZhMzEyYjIzMWI4NmFlYzE1NjA3NmMzNTI5YTdhNy4uOGZlNjMxM2Q3ZTQ0
ZGQ5OGNmOWFkMDEwZjY4NDJiYzQ4MjgwYzU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19jYXBzX3V0aWxzLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3ZrX2NhcHNfdXRpbHMuY3BwCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAiY29tbW9uL3V0
aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGls
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgogI2luY2x1ZGUg
InZrX2Zvcm1hdF91dGlscy5oIgpAQCAtNDcsOSArNDgsMjMgQEAgdm9pZCBSZW5kZXJlclZrOjpl
bnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdAogCiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMuc2V0
VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQobU5hdGl2ZVRleHR1cmVDYXBzKTsKIAotICAgIC8vIFZ1
bGthbiB0ZWNobmljYWxseSBvbmx5IHN1cHBvcnRzIHRoZSBMRFIgcHJvZmlsZSBidXQgZHJpdmVy
IGFsbCBhcHBlYXIgdG8gc3VwcG9ydCB0aGUgSERSCi0gICAgLy8gcHJvZmlsZSBhcyB3ZWxsLiBo
dHRwOi8vYW5nbGVidWcuY29tLzExODUjYzgKLSAgICBtTmF0aXZlRXh0ZW5zaW9ucy50ZXh0dXJl
Q29tcHJlc3Npb25BU1RDSERSS0hSID0gbU5hdGl2ZUV4dGVuc2lvbnMudGV4dHVyZUNvbXByZXNz
aW9uQVNUQ0xEUktIUjsKKyAgICAvLyBUbyBlbnN1cmUgdGhhdCBFVEMyL0VBQyBmb3JtYXRzIGFy
ZSBlbmFibGVkIG9ubHkgb24gaGFyZHdhcmUgdGhhdCBzdXBwb3J0cyB0aGVtIG5hdGl2ZWx5LAor
ICAgIC8vIHRoaXMgZmxhZyBpcyBub3Qgc2V0IGJ5IHRoZSBmdW5jdGlvbiBhYm92ZSBhbmQgbXVz
dCBiZSBzZXQgZXhwbGljaXRseS4gSXQgZXhwb3NlcworICAgIC8vIEFOR0xFX2NvbXByZXNzZWRf
dGV4dHVyZV9ldGMgZXh0ZW5zaW9uIHN0cmluZy4KKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5jb21w
cmVzc2VkVGV4dHVyZUVUQyA9CisgICAgICAgIChtUGh5c2ljYWxEZXZpY2VGZWF0dXJlcy50ZXh0
dXJlQ29tcHJlc3Npb25FVEMyID09IFZLX1RSVUUpICYmCisgICAgICAgIGdsOjpEZXRlcm1pbmVD
b21wcmVzc2VkVGV4dHVyZUVUQ1N1cHBvcnQobU5hdGl2ZVRleHR1cmVDYXBzKTsKKworICAgIC8v
IFZ1bGthbiBkb2Vzbid0IHN1cHBvcnQgQVNUQyAzRCBibG9jayB0ZXh0dXJlcywgd2hpY2ggYXJl
IHJlcXVpcmVkIGJ5CisgICAgLy8gR0xfT0VTX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Yy4KKyAg
ICBtTmF0aXZlRXh0ZW5zaW9ucy50ZXh0dXJlQ29tcHJlc3Npb25BU1RDT0VTID0gZmFsc2U7CisK
KyAgICAvLyBWdWxrYW4gZG9lc24ndCBndWFyYW50ZWUgSERSIGJsb2NrcyBkZWNvZGluZyB3aXRo
b3V0IFZLX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyLgorICAgIG1OYXRpdmVFeHRl
bnNpb25zLnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFJLSFIgPSBmYWxzZTsKKworICAgIC8vIFZ1
bGthbiBzdXBwb3J0cyBzbGljZWQgM0QgQVNUQyB0ZXh0dXJlIHVwbG9hZHMgd2hlbiBBU1RDIGlz
IHN1cHBvcnRlZC4KKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy50ZXh0dXJlQ29tcHJlc3Npb25TbGlj
ZWQzZEFTVENLSFIgPQorICAgICAgICBtTmF0aXZlRXh0ZW5zaW9ucy50ZXh0dXJlQ29tcHJlc3Np
b25BU1RDTERSS0hSOwogCiAgICAgLy8gRW5hYmxlIHRoaXMgZm9yIHNpbXBsZSBidWZmZXIgcmVh
ZGJhY2sgdGVzdGluZywgYnV0IHNvbWUgZnVuY3Rpb25hbGl0eSBpcyBtaXNzaW5nLgogICAgIC8v
IFRPRE8oam1hZGlsbCk6IFN1cHBvcnQgZnVsbCBtYXBCdWZmZXJSYW5nZSBleHRlbnNpb24uCkBA
IC02Myw3ICs3OCw4IEBAIHZvaWQgUmVuZGVyZXJWazo6ZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkg
Y29uc3QKICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5jb3B5VGV4dHVyZSAgICAgICAgICAgID0gdHJ1
ZTsKICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5jb3B5Q29tcHJlc3NlZFRleHR1cmUgID0gdHJ1ZTsK
ICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5kZWJ1Z01hcmtlciAgICAgICAgICAgID0gdHJ1ZTsKLSAg
ICBtTmF0aXZlRXh0ZW5zaW9ucy5yb2J1c3RuZXNzICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBt
TmF0aXZlRXh0ZW5zaW9ucy5yb2J1c3RuZXNzID0KKyAgICAgICAgIUlzU3dpZnRzaGFkZXIobVBo
eXNpY2FsRGV2aWNlUHJvcGVydGllcy52ZW5kb3JJRCwgbVBoeXNpY2FsRGV2aWNlUHJvcGVydGll
cy5kZXZpY2VJRCk7CiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMudGV4dHVyZUJvcmRlckNsYW1wT0VT
ICA9IGZhbHNlOyAgLy8gbm90IGltcGxlbWVudGVkIHlldAogICAgIG1OYXRpdmVFeHRlbnNpb25z
LnRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSB0cnVlOwogICAgIG1OYXRpdmVFeHRlbnNpb25zLmRp
c2NhcmRGcmFtZWJ1ZmZlciAgICAgPSB0cnVlOwpAQCAtODEsMTUgKzk3LDIwIEBAIHZvaWQgUmVu
ZGVyZXJWazo6ZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3QKICAgICAvLyBFbmFibGUgRVhU
X2JsZW5kX21pbm1heAogICAgIG1OYXRpdmVFeHRlbnNpb25zLmJsZW5kTWluTWF4ID0gdHJ1ZTsK
IAotICAgIG1OYXRpdmVFeHRlbnNpb25zLmVnbEltYWdlT0VTICAgICAgICAgICAgICA9IHRydWU7
Ci0gICAgbU5hdGl2ZUV4dGVuc2lvbnMuZWdsSW1hZ2VFeHRlcm5hbE9FUyAgICAgID0gdHJ1ZTsK
LSAgICBtTmF0aXZlRXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsRXNzbDNPRVMgPSB0cnVlOwor
ICAgIG1OYXRpdmVFeHRlbnNpb25zLmVnbEltYWdlT0VTICAgICAgICAgICAgICAgICAgPSB0cnVl
OworICAgIG1OYXRpdmVFeHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWxPRVMgICAgICAgICAgPSB0
cnVlOworICAgIG1OYXRpdmVFeHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWxXcmFwTW9kZXNFWFQg
PSB0cnVlOworICAgIG1OYXRpdmVFeHRlbnNpb25zLmVnbEltYWdlRXh0ZXJuYWxFc3NsM09FUyAg
ICAgPSB0cnVlOwogCiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMubWVtb3J5T2JqZWN0ICAgPSB0cnVl
OwogICAgIG1OYXRpdmVFeHRlbnNpb25zLm1lbW9yeU9iamVjdEZkID0gZ2V0RmVhdHVyZXMoKS5z
dXBwb3J0c0V4dGVybmFsTWVtb3J5RmQuZW5hYmxlZDsKKyAgICBtTmF0aXZlRXh0ZW5zaW9ucy5t
ZW1vcnlPYmplY3RGdWNoc2lhQU5HTEUgPQorICAgICAgICBnZXRGZWF0dXJlcygpLnN1cHBvcnRz
RXh0ZXJuYWxNZW1vcnlGdWNoc2lhLmVuYWJsZWQ7CiAKICAgICBtTmF0aXZlRXh0ZW5zaW9ucy5z
ZW1hcGhvcmUgICA9IHRydWU7CiAgICAgbU5hdGl2ZUV4dGVuc2lvbnMuc2VtYXBob3JlRmQgPSBn
ZXRGZWF0dXJlcygpLnN1cHBvcnRzRXh0ZXJuYWxTZW1hcGhvcmVGZC5lbmFibGVkOworICAgIG1O
YXRpdmVFeHRlbnNpb25zLnNlbWFwaG9yZUZ1Y2hzaWFBTkdMRSA9CisgICAgICAgIGdldEZlYXR1
cmVzKCkuc3VwcG9ydHNFeHRlcm5hbFNlbWFwaG9yZUZ1Y2hzaWEuZW5hYmxlZDsKIAogICAgIG1O
YXRpdmVFeHRlbnNpb25zLnZlcnRleEhhbGZGbG9hdE9FUyA9IHRydWU7CiAKQEAgLTE0MSw2ICsx
NjIsOSBAQCB2b2lkIFJlbmRlcmVyVms6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNvbnN0CiAg
ICAgLy8gV2Ugc3VwcG9ydCBnZXR0aW5nIGltYWdlIGRhdGEgZm9yIFRleHR1cmVzIGFuZCBSZW5k
ZXJidWZmZXJzLgogICAgIG1OYXRpdmVFeHRlbnNpb25zLmdldEltYWdlQU5HTEUgPSB0cnVlOwog
CisgICAgLy8gSW1wbGVtZW50ZWQgaW4gdGhlIHRyYW5zbGF0b3IKKyAgICBtTmF0aXZlRXh0ZW5z
aW9ucy5zaGFkZXJOb25Db25zdEdsb2JhbEluaXRpYWxpemVyc0VYVCA9IHRydWU7CisKICAgICAv
LyBWdWxrYW4gaGFzIG5vIHJlc3RyaWN0aW9ucyBvZiB0aGUgZm9ybWF0IG9mIGN1YmVtYXBzLCBz
byBpZiB0aGUgcHJvcGVyIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCwKICAgICAvLyBjcmVhdGluZyBh
IGN1YmUgb2YgYW55IG9mIHRoZXNlIGZvcm1hdHMgc2hvdWxkIGJlIGltcGxpY2l0bHkgc3VwcG9y
dGVkLgogICAgIG1OYXRpdmVFeHRlbnNpb25zLmRlcHRoVGV4dHVyZUN1YmVNYXBPRVMgPQpAQCAt
NDM2LDggKzQ2MCwyNyBAQCB2b2lkIFJlbmRlcmVyVms6OmVuc3VyZUNhcHNJbml0aWFsaXplZCgp
IGNvbnN0CiAgICAgLy8gdmFycyBzZWN0aW9uLiBJdCBpcyBpbXBsaWNpdCB0aGF0IHdlIG5lZWQg
dG8gYWN0dWFsbHkgcmVzZXJ2ZSBpdCBmb3IgVnVsa2FuIGluIHRoYXQgY2FzZS4KICAgICBHTGlu
dCByZXNlcnZlZFZhcnlpbmdWZWN0b3JDb3VudCA9IDE7CiAKLSAgICBtTmF0aXZlQ2Fwcy5tYXhW
YXJ5aW5nVmVjdG9ycyA9IExpbWl0VG9JbnQoCi0gICAgICAgIChsaW1pdHNWay5tYXhWZXJ0ZXhP
dXRwdXRDb21wb25lbnRzIC8ga0NvbXBvbmVudHNQZXJWZWN0b3IpIC0gcmVzZXJ2ZWRWYXJ5aW5n
VmVjdG9yQ291bnQpOworICAgIC8vIHJlc2VydmUgMSBleHRyYSBmb3IgQU5HTEVQb3NpdGlvbiB3
aGVuIEdMTGluZVJhc3Rlcml6YXRpb24gaXMgZW5hYmxlZAorICAgIGNvbnN0ZXhwciBHTGludCBr
UnNlcnZlZFZhcnlpbmdGb3JHTExpbmVSYXN0ZXJpemF0aW9uID0gMTsKKyAgICAvLyByZXNlcnZl
IDIgZXh0cmEgZm9yIGJ1aWx0aW4gdmFyYWJsZXMgd2hlbiBmZWVkYmFjayBpcyBlbmFibGVkCisg
ICAgLy8gcG9zc2libGUgY2FwdHVyYWJsZSBvdXQgdmFyYWJsZTogZ2xfUG9zaXRpb24sIGdsX1Bv
aW50U2l6ZQorICAgIC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L09wZW5HTC9z
cGVjcy9lcy8zLjEvR0xTTF9FU19TcGVjaWZpY2F0aW9uXzMuMTAud2l0aGNoYW5nZXMucGRmCisg
ICAgLy8gcGFnZSAxMDUKKyAgICBjb25zdGV4cHIgR0xpbnQga1Jlc2VydmVkVmFyeWluZ0ZvclRy
YW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uID0gMjsKKworICAgIGlmIChnZXRGZWF0dXJlcygpLmJh
c2ljR0xMaW5lUmFzdGVyaXphdGlvbi5lbmFibGVkKQorICAgIHsKKyAgICAgICAgcmVzZXJ2ZWRW
YXJ5aW5nVmVjdG9yQ291bnQgKz0ga1JzZXJ2ZWRWYXJ5aW5nRm9yR0xMaW5lUmFzdGVyaXphdGlv
bjsKKyAgICB9CisgICAgaWYgKGdldEZlYXR1cmVzKCkuc3VwcG9ydHNUcmFuc2Zvcm1GZWVkYmFj
a0V4dGVuc2lvbi5lbmFibGVkKQorICAgIHsKKyAgICAgICAgcmVzZXJ2ZWRWYXJ5aW5nVmVjdG9y
Q291bnQgKz0ga1Jlc2VydmVkVmFyeWluZ0ZvclRyYW5zZm9ybUZlZWRiYWNrRXh0ZW5zaW9uOwor
ICAgIH0KKworICAgIGNvbnN0IEdMaW50IG1heFZhcnlpbmdDb3VudCA9CisgICAgICAgIHN0ZDo6
bWluKGxpbWl0c1ZrLm1heFZlcnRleE91dHB1dENvbXBvbmVudHMsIGxpbWl0c1ZrLm1heEZyYWdt
ZW50SW5wdXRDb21wb25lbnRzKTsKKyAgICBtTmF0aXZlQ2Fwcy5tYXhWYXJ5aW5nVmVjdG9ycyA9
CisgICAgICAgIExpbWl0VG9JbnQoKG1heFZhcnlpbmdDb3VudCAvIGtDb21wb25lbnRzUGVyVmVj
dG9yKSAtIHJlc2VydmVkVmFyeWluZ1ZlY3RvckNvdW50KTsKICAgICBtTmF0aXZlQ2Fwcy5tYXhW
ZXJ0ZXhPdXRwdXRDb21wb25lbnRzID0gTGltaXRUb0ludChsaW1pdHNWay5tYXhWZXJ0ZXhPdXRw
dXRDb21wb25lbnRzKTsKIAogICAgIG1OYXRpdmVDYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrSW50
ZXJsZWF2ZWRDb21wb25lbnRzID0KQEAgLTU4MCw3ICs2MjMsNyBAQCBlZ2w6OkNvbmZpZyBHZW5l
cmF0ZURlZmF1bHRDb25maWcoY29uc3QgUmVuZGVyZXJWayAqcmVuZGVyZXIsCiAgICAgY29uZmln
Lm1heFN3YXBJbnRlcnZhbCAgICA9IDE7CiAgICAgY29uZmlnLm1pblN3YXBJbnRlcnZhbCAgICA9
IDA7CiAgICAgY29uZmlnLm5hdGl2ZVJlbmRlcmFibGUgICA9IEVHTF9UUlVFOwotICAgIGNvbmZp
Zy5uYXRpdmVWaXN1YWxJRCAgICAgPSAwOworICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxJRCAgICAg
PSBzdGF0aWNfY2FzdDxFR0xpbnQ+KEdldE5hdGl2ZVZpc3VhbElEKGNvbG9yRm9ybWF0KSk7CiAg
ICAgY29uZmlnLm5hdGl2ZVZpc3VhbFR5cGUgICA9IEVHTF9OT05FOwogICAgIGNvbmZpZy5yZW5k
ZXJhYmxlVHlwZSAgICAgPSBlczJTdXBwb3J0IHwgZXMzU3VwcG9ydDsKICAgICBjb25maWcuc2Ft
cGxlQnVmZmVycyAgICAgID0gKHNhbXBsZUNvdW50ID4gMCkgPyAxIDogMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtf
Zm9ybWF0X21hcC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpzb24KaW5kZXggMTEzYTQxYTc0YmI4ZjhiNjBh
NTQ2ZWY0MzI0YmFlMWVkMDIzYjkzZi4uM2VjNzE2MDU2YTY4YmU4YjkxNTU4MDMyZDg3ODAyMDQ1
MTJlOTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpzb24K
QEAgLTQwLDcgKzQwLDYgQEAKICAgICAgICAgIlI4RzhfU0lOVCI6ICJWS19GT1JNQVRfUjhHOF9T
SU5UIiwKICAgICAgICAgIlI4RzhfVVNDQUxFRCI6ICJWS19GT1JNQVRfUjhHOF9VU0NBTEVEIiwK
ICAgICAgICAgIlI4RzhfU1NDQUxFRCI6ICJWS19GT1JNQVRfUjhHOF9TU0NBTEVEIiwKLSAgICAg
ICAgIlI4RzhCOF9VTk9STSI6ICJWS19GT1JNQVRfUjhHOEI4X1VOT1JNIiwKICAgICAgICAgIlI4
RzhCOF9TTk9STSI6ICJWS19GT1JNQVRfUjhHOEI4X1NOT1JNIiwKICAgICAgICAgIlI4RzhCOF9V
SU5UIjogIlZLX0ZPUk1BVF9SOEc4QjhfVUlOVCIsCiAgICAgICAgICJSOEc4QjhfU0lOVCI6ICJW
S19GT1JNQVRfUjhHOEI4X1NJTlQiLApAQCAtMTA4LDYgKzEwNyw3IEBACiAgICAgICAgICJEMzJf
RkxPQVQiOiAiVktfRk9STUFUX0QzMl9TRkxPQVQiLAogICAgICAgICAiUzhfVUlOVCI6ICJWS19G
T1JNQVRfUzhfVUlOVCIsCiAgICAgICAgICJEMjRfVU5PUk1fUzhfVUlOVCI6ICJWS19GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlQiLAorICAgICAgICAiRDI0X1VOT1JNX1g4X1VJTlQiOiAiVktfRk9S
TUFUX1g4X0QyNF9VTk9STV9QQUNLMzIiLAogICAgICAgICAiRDMyX0ZMT0FUX1M4WDI0X1VJTlQi
OiAiVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVCIsCiAgICAgICAgICJCQzFfUkdCX1VOT1JN
X0JMT0NLIjogIlZLX0ZPUk1BVF9CQzFfUkdCX1VOT1JNX0JMT0NLIiwKICAgICAgICAgIkJDMV9S
R0JfVU5PUk1fU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQkMxX1JHQl9TUkdCX0JMT0NLIiwKQEAg
LTExNyw2ICsxMTcsMTAgQEAKICAgICAgICAgIkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiAi
VktfRk9STUFUX0JDMl9TUkdCX0JMT0NLIiwKICAgICAgICAgIkJDM19SR0JBX1VOT1JNX0JMT0NL
IjogIlZLX0ZPUk1BVF9CQzNfVU5PUk1fQkxPQ0siLAogICAgICAgICAiQkMzX1JHQkFfVU5PUk1f
U1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQkMzX1NSR0JfQkxPQ0siLAorICAgICAgICAiQkM0X1JF
RF9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkM0X1VOT1JNX0JMT0NLIiwKKyAgICAgICAgIkJD
NF9SRURfU05PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNF9TTk9STV9CTE9DSyIsCisgICAgICAg
ICJCQzVfUkdfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNV9VTk9STV9CTE9DSyIsCisgICAg
ICAgICJCQzVfUkdfU05PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNV9TTk9STV9CTE9DSyIsCiAg
ICAgICAgICJCUFRDX1JHQl9VTlNJR05FRF9GTE9BVF9CTE9DSyI6ICJWS19GT1JNQVRfQkM2SF9V
RkxPQVRfQkxPQ0siLAogICAgICAgICAiQlBUQ19SR0JfU0lHTkVEX0ZMT0FUX0JMT0NLIjogIlZL
X0ZPUk1BVF9CQzZIX1NGTE9BVF9CTE9DSyIsCiAgICAgICAgICJCUFRDX1JHQkFfVU5PUk1fQkxP
Q0siOiAiVktfRk9STUFUX0JDN19VTk9STV9CTE9DSyIsCkBAIC0yMDYsNyArMjEwLDYgQEAKICAg
ICAgICAgICAgICJpbWFnZSI6ICJCOEc4UjhBOF9VTk9STSIKICAgICAgICAgfSwKICAgICAgICAg
IkQyNF9VTk9STV9YOF9VSU5UIjogewotICAgICAgICAgICAgImJ1ZmZlciI6ICJOT05FIiwKICAg
ICAgICAgICAgICJpbWFnZSI6IFsiRDI0X1VOT1JNX1M4X1VJTlQiLCAiRDMyX0ZMT0FUX1M4WDI0
X1VJTlQiXQogICAgICAgICB9LAogICAgICAgICAiRDMyX1VOT1JNIjogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19m
b3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcAppbmRleCBj
MjM0ZGEyNTQ0YzY0N2MxNzY0OGJkOTExNmJmM2E4M2VkMmExODFiLi5iZWY1OWRjOGI5MmY5ZDU4
MDEwMDY0Yjc2YjE2MTBkMjYwYzNlZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcApAQCAtNzI2LDYgKzcyNiw1NCBAQCB2
b2lkIEZvcm1hdDo6aW5pdGlhbGl6ZShSZW5kZXJlclZrICpyZW5kZXJlciwgY29uc3QgYW5nbGU6
OkZvcm1hdCAmYW5nbGVGb3JtYXQpCiAgICAgICAgICAgICB2ZXJ0ZXhMb2FkUmVxdWlyZXNDb252
ZXJzaW9uID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIGFuZ2xl
OjpGb3JtYXRJRDo6QkM0X1JFRF9TTk9STV9CTE9DSzoKKyAgICAgICAgICAgIGludGVybmFsRm9y
bWF0ICAgICAgICAgICAgICAgPSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfUkdUQzFfRVhUOwor
ICAgICAgICAgICAgYWN0dWFsSW1hZ2VGb3JtYXRJRCAgICAgICAgICA9IGFuZ2xlOjpGb3JtYXRJ
RDo6QkM0X1JFRF9TTk9STV9CTE9DSzsKKyAgICAgICAgICAgIHZrSW1hZ2VGb3JtYXQgICAgICAg
ICAgICAgICAgPSBWS19GT1JNQVRfQkM0X1NOT1JNX0JMT0NLOworICAgICAgICAgICAgaW1hZ2VJ
bml0aWFsaXplckZ1bmN0aW9uICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICBhY3R1YWxCdWZm
ZXJGb3JtYXRJRCAgICAgICAgID0gYW5nbGU6OkZvcm1hdElEOjpCQzRfUkVEX1NOT1JNX0JMT0NL
OworICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXQgICAgICAgICAgICAgICA9IFZLX0ZPUk1BVF9C
QzRfU05PUk1fQkxPQ0s7CisgICAgICAgICAgICB2a0J1ZmZlckZvcm1hdElzUGFja2VkICAgICAg
ID0gZmFsc2U7CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkRnVuY3Rpb24gICAgICAgICAgID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIHZlcnRleExvYWRSZXF1aXJlc0NvbnZlcnNpb24gPSBmYWxzZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgYW5nbGU6OkZvcm1hdElEOjpCQzRf
UkVEX1VOT1JNX0JMT0NLOgorICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgICAgICAgICAgICAg
ICA9IEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDsKKyAgICAgICAgICAgIGFjdHVhbEltYWdl
Rm9ybWF0SUQgICAgICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNF9SRURfVU5PUk1fQkxPQ0s7
CisgICAgICAgICAgICB2a0ltYWdlRm9ybWF0ICAgICAgICAgICAgICAgID0gVktfRk9STUFUX0JD
NF9VTk9STV9CTE9DSzsKKyAgICAgICAgICAgIGltYWdlSW5pdGlhbGl6ZXJGdW5jdGlvbiAgICAg
PSBudWxscHRyOworICAgICAgICAgICAgYWN0dWFsQnVmZmVyRm9ybWF0SUQgICAgICAgICA9IGFu
Z2xlOjpGb3JtYXRJRDo6QkM0X1JFRF9VTk9STV9CTE9DSzsKKyAgICAgICAgICAgIHZrQnVmZmVy
Rm9ybWF0ICAgICAgICAgICAgICAgPSBWS19GT1JNQVRfQkM0X1VOT1JNX0JMT0NLOworICAgICAg
ICAgICAgdmtCdWZmZXJGb3JtYXRJc1BhY2tlZCAgICAgICA9IGZhbHNlOworICAgICAgICAgICAg
dmVydGV4TG9hZEZ1bmN0aW9uICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAgICAgICB2ZXJ0
ZXhMb2FkUmVxdWlyZXNDb252ZXJzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6QkM1X1JHX1NOT1JNX0JMT0NLOgorICAgICAg
ICAgICAgaW50ZXJuYWxGb3JtYXQgICAgICAgICAgICAgICA9IEdMX0NPTVBSRVNTRURfU0lHTkVE
X1JFRF9HUkVFTl9SR1RDMl9FWFQ7CisgICAgICAgICAgICBhY3R1YWxJbWFnZUZvcm1hdElEICAg
ICAgICAgID0gYW5nbGU6OkZvcm1hdElEOjpCQzVfUkdfU05PUk1fQkxPQ0s7CisgICAgICAgICAg
ICB2a0ltYWdlRm9ybWF0ICAgICAgICAgICAgICAgID0gVktfRk9STUFUX0JDNV9TTk9STV9CTE9D
SzsKKyAgICAgICAgICAgIGltYWdlSW5pdGlhbGl6ZXJGdW5jdGlvbiAgICAgPSBudWxscHRyOwor
ICAgICAgICAgICAgYWN0dWFsQnVmZmVyRm9ybWF0SUQgICAgICAgICA9IGFuZ2xlOjpGb3JtYXRJ
RDo6QkM1X1JHX1NOT1JNX0JMT0NLOworICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXQgICAgICAg
ICAgICAgICA9IFZLX0ZPUk1BVF9CQzVfU05PUk1fQkxPQ0s7CisgICAgICAgICAgICB2a0J1ZmZl
ckZvcm1hdElzUGFja2VkICAgICAgID0gZmFsc2U7CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkRnVu
Y3Rpb24gICAgICAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHZlcnRleExvYWRSZXF1aXJl
c0NvbnZlcnNpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
YW5nbGU6OkZvcm1hdElEOjpCQzVfUkdfVU5PUk1fQkxPQ0s6CisgICAgICAgICAgICBpbnRlcm5h
bEZvcm1hdCAgICAgICAgICAgICAgID0gR0xfQ09NUFJFU1NFRF9SRURfR1JFRU5fUkdUQzJfRVhU
OworICAgICAgICAgICAgYWN0dWFsSW1hZ2VGb3JtYXRJRCAgICAgICAgICA9IGFuZ2xlOjpGb3Jt
YXRJRDo6QkM1X1JHX1VOT1JNX0JMT0NLOworICAgICAgICAgICAgdmtJbWFnZUZvcm1hdCAgICAg
ICAgICAgICAgICA9IFZLX0ZPUk1BVF9CQzVfVU5PUk1fQkxPQ0s7CisgICAgICAgICAgICBpbWFn
ZUluaXRpYWxpemVyRnVuY3Rpb24gICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGFjdHVhbEJ1
ZmZlckZvcm1hdElEICAgICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJDNV9SR19VTk9STV9CTE9D
SzsKKyAgICAgICAgICAgIHZrQnVmZmVyRm9ybWF0ICAgICAgICAgICAgICAgPSBWS19GT1JNQVRf
QkM1X1VOT1JNX0JMT0NLOworICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXRJc1BhY2tlZCAgICAg
ICA9IGZhbHNlOworICAgICAgICAgICAgdmVydGV4TG9hZEZ1bmN0aW9uICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkUmVxdWlyZXNDb252ZXJzaW9uID0gZmFsc2U7
CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIGFuZ2xlOjpGb3JtYXRJRDo6QlBU
Q19SR0JBX1VOT1JNX0JMT0NLOgogICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQgICAgICAgICAg
ICAgICA9IEdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVDsKICAgICAgICAgICAgIGFj
dHVhbEltYWdlRm9ybWF0SUQgICAgICAgICAgPSBhbmdsZTo6Rm9ybWF0SUQ6OkJQVENfUkdCQV9V
Tk9STV9CTE9DSzsKQEAgLTgwNiwxNSArODU0LDE2IEBAIHZvaWQgRm9ybWF0Ojppbml0aWFsaXpl
KFJlbmRlcmVyVmsgKnJlbmRlcmVyLCBjb25zdCBhbmdsZTo6Rm9ybWF0ICZhbmdsZUZvcm1hdCkK
ICAgICAgICAgICAgIGludGVybmFsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UMjQ7CiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBJbWFnZUZvcm1hdElu
aXRJbmZvIGtJbmZvW10gPSB7CisgICAgICAgICAgICAgICAgICAgIHthbmdsZTo6Rm9ybWF0SUQ6
OkQyNF9VTk9STV9YOF9VSU5ULCBWS19GT1JNQVRfWDhfRDI0X1VOT1JNX1BBQ0szMiwgbnVsbHB0
cn0sCiAgICAgICAgICAgICAgICAgICAgIHthbmdsZTo6Rm9ybWF0SUQ6OkQyNF9VTk9STV9TOF9V
SU5ULCBWS19GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsIG51bGxwdHJ9LAogICAgICAgICAgICAg
ICAgICAgICB7YW5nbGU6OkZvcm1hdElEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVCwgVktfRk9STUFU
X0QzMl9TRkxPQVRfUzhfVUlOVCwgbnVsbHB0cn19OwogICAgICAgICAgICAgICAgIGluaXRJbWFn
ZUZhbGxiYWNrKHJlbmRlcmVyLCBrSW5mbywgQXJyYXlTaXplKGtJbmZvKSk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBhY3R1YWxCdWZmZXJGb3JtYXRJRCAgICAgICAgID0gYW5nbGU6OkZv
cm1hdElEOjpOT05FOwotICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXQgICAgICAgICAgICAgICA9
IFZLX0ZPUk1BVF9VTkRFRklORUQ7Ci0gICAgICAgICAgICB2a0J1ZmZlckZvcm1hdElzUGFja2Vk
ICAgICAgID0gZmFsc2U7Ci0gICAgICAgICAgICB2ZXJ0ZXhMb2FkRnVuY3Rpb24gICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHZlcnRleExvYWRSZXF1aXJlc0NvbnZlcnNpb24gPSB0
cnVlOworICAgICAgICAgICAgYWN0dWFsQnVmZmVyRm9ybWF0SUQgICAgICAgICA9IGFuZ2xlOjpG
b3JtYXRJRDo6RDI0X1VOT1JNX1g4X1VJTlQ7CisgICAgICAgICAgICB2a0J1ZmZlckZvcm1hdCAg
ICAgICAgICAgICAgID0gVktfRk9STUFUX1g4X0QyNF9VTk9STV9QQUNLMzI7CisgICAgICAgICAg
ICB2a0J1ZmZlckZvcm1hdElzUGFja2VkICAgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgIHZlcnRl
eExvYWRGdW5jdGlvbiAgICAgICAgICAgPSBDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDEs
IDEsIDA+OworICAgICAgICAgICAgdmVydGV4TG9hZFJlcXVpcmVzQ29udmVyc2lvbiA9IGZhbHNl
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OkQz
Ml9GTE9BVDoKQEAgLTIyMjUsMjIgKzIyNzQsMTUgQEAgdm9pZCBGb3JtYXQ6OmluaXRpYWxpemUo
UmVuZGVyZXJWayAqcmVuZGVyZXIsIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmFuZ2xlRm9ybWF0KQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBhbmdsZTo6Rm9ybWF0SUQ6OlI4RzhC
OF9VTk9STToKLSAgICAgICAgICAgIGludGVybmFsRm9ybWF0ID0gR0xfUkdCODsKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEltYWdlRm9ybWF0SW5pdElu
Zm8ga0luZm9bXSA9IHsKLSAgICAgICAgICAgICAgICAgICAge2FuZ2xlOjpGb3JtYXRJRDo6UjhH
OEI4X1VOT1JNLCBWS19GT1JNQVRfUjhHOEI4X1VOT1JNLCBudWxscHRyfSwKLSAgICAgICAgICAg
ICAgICAgICAge2FuZ2xlOjpGb3JtYXRJRDo6UjhHOEI4QThfVU5PUk0sIFZLX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0
YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPn19OwotICAgICAgICAgICAgICAgIGlu
aXRJbWFnZUZhbGxiYWNrKHJlbmRlcmVyLCBrSW5mbywgQXJyYXlTaXplKGtJbmZvKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBCdWZmZXJGb3JtYXRJbml0SW5mbyBrSW5mb1tdID0gewotICAgICAgICAgICAgICAgICAgICB7
YW5nbGU6OkZvcm1hdElEOjpSOEc4QjhfVU5PUk0sIFZLX0ZPUk1BVF9SOEc4QjhfVU5PUk0sIGZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwg
MywgMywgMD4sIGZhbHNlfSwKLSAgICAgICAgICAgICAgICAgICAge2FuZ2xlOjpGb3JtYXRJRDo6
UjMyRzMyQjMyX0ZMT0FULCBWS19GT1JNQVRfUjMyRzMyQjMyX1NGTE9BVCwgZmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICBDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIDMsIHRydWU+
LCB0cnVlfX07Ci0gICAgICAgICAgICAgICAgaW5pdEJ1ZmZlckZhbGxiYWNrKHJlbmRlcmVyLCBr
SW5mbywgQXJyYXlTaXplKGtJbmZvKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpbnRl
cm5hbEZvcm1hdCAgICAgICAgICAgPSBHTF9SR0I4OworICAgICAgICAgICAgYWN0dWFsSW1hZ2VG
b3JtYXRJRCAgICAgID0gYW5nbGU6OkZvcm1hdElEOjpSOEc4QjhBOF9VTk9STTsKKyAgICAgICAg
ICAgIHZrSW1hZ2VGb3JtYXQgICAgICAgICAgICA9IFZLX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsK
KyAgICAgICAgICAgIGltYWdlSW5pdGlhbGl6ZXJGdW5jdGlvbiA9IEluaXRpYWxpemU0Q29tcG9u
ZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPjsKKyAgICAgICAgICAgIGFj
dHVhbEJ1ZmZlckZvcm1hdElEICAgICA9IGFuZ2xlOjpGb3JtYXRJRDo6UjMyRzMyQjMyX0ZMT0FU
OworICAgICAgICAgICAgdmtCdWZmZXJGb3JtYXQgICAgICAgICAgID0gVktfRk9STUFUX1IzMkcz
MkIzMl9TRkxPQVQ7CisgICAgICAgICAgICB2a0J1ZmZlckZvcm1hdElzUGFja2VkICAgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHZlcnRleExvYWRGdW5jdGlvbiAgICAgICA9IENvcHlUbzMyRlZlcnRl
eERhdGE8R0x1Ynl0ZSwgMywgMywgdHJ1ZT47CisgICAgICAgICAgICB2ZXJ0ZXhMb2FkUmVxdWly
ZXNDb252ZXJzaW9uID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
YW5nbGU6OkZvcm1hdElEOjpSOEc4QjhfVU5PUk1fU1JHQjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaGVscGVycy5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3ZrX2hlbHBlcnMuY3BwCmluZGV4IGU1NDA1MDdlN2QzOGMzOGVhZDY0ZTg0MGRhMDIyZTgzMTVh
NjVhNzkuLmZhYzQ2NjNmODQ4ZmNmYzIyODlmYzM0NTYyYWMzNjliNTczOTY1MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
dmtfaGVscGVycy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJzLmNwcApAQCAtMjY0LDcgKzI2NCw4IEBAIFZrSW1h
Z2VDcmVhdGVGbGFncyBHZXRJbWFnZUNyZWF0ZUZsYWdzKGdsOjpUZXh0dXJlVHlwZSB0ZXh0dXJl
VHlwZSkKICAgICB9CiB9CiAKLXZvaWQgSGFuZGxlUHJpbWl0aXZlUmVzdGFydChnbDo6RHJhd0Vs
ZW1lbnRzVHlwZSBnbEluZGV4VHlwZSwKK3ZvaWQgSGFuZGxlUHJpbWl0aXZlUmVzdGFydChDb250
ZXh0VmsgKmNvbnRleHRWaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RHJhd0Vs
ZW1lbnRzVHlwZSBnbEluZGV4VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluZGV4Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqc3JjUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dFB0cikK
QEAgLTI3Miw3ICsyNzMsMTQgQEAgdm9pZCBIYW5kbGVQcmltaXRpdmVSZXN0YXJ0KGdsOjpEcmF3
RWxlbWVudHNUeXBlIGdsSW5kZXhUeXBlLAogICAgIHN3aXRjaCAoZ2xJbmRleFR5cGUpCiAgICAg
ewogICAgICAgICBjYXNlIGdsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNpZ25lZEJ5dGU6Ci0gICAg
ICAgICAgICBDb3B5TGluZUxvb3BJbmRpY2VzV2l0aFJlc3RhcnQ8dWludDhfdCwgdWludDE2X3Q+
KGluZGV4Q291bnQsIHNyY1B0ciwgb3V0UHRyKTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0Vmst
PmdldEZlYXR1cmVzKCkuc3VwcG9ydHNJbmRleFR5cGVVaW50OC5lbmFibGVkKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIENvcHlMaW5lTG9vcEluZGljZXNXaXRoUmVzdGFydDx1aW50
OF90LCB1aW50OF90PihpbmRleENvdW50LCBzcmNQdHIsIG91dFB0cik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29weUxp
bmVMb29wSW5kaWNlc1dpdGhSZXN0YXJ0PHVpbnQ4X3QsIHVpbnQxNl90PihpbmRleENvdW50LCBz
cmNQdHIsIG91dFB0cik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRTaG9ydDoKICAgICAgICAgICAg
IENvcHlMaW5lTG9vcEluZGljZXNXaXRoUmVzdGFydDx1aW50MTZfdCwgdWludDE2X3Q+KGluZGV4
Q291bnQsIHNyY1B0ciwgb3V0UHRyKTsKQEAgLTkzMSw1MiArOTM5LDMzIEBAIHZvaWQgRHluYW1p
Y1F1ZXJ5UG9vbDo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCiAKIGFuZ2xlOjpSZXN1bHQgRHlu
YW1pY1F1ZXJ5UG9vbDo6YWxsb2NhdGVRdWVyeShDb250ZXh0VmsgKmNvbnRleHRWaywgUXVlcnlI
ZWxwZXIgKnF1ZXJ5T3V0KQogewotICAgIEFTU0VSVCghcXVlcnlPdXQtPmdldFF1ZXJ5UG9vbCgp
KTsKKyAgICBBU1NFUlQoIXF1ZXJ5T3V0LT52YWxpZCgpKTsKIAotICAgIHNpemVfdCBwb29sSW5k
ZXggICAgPSAwOwotICAgIHVpbnQzMl90IHF1ZXJ5SW5kZXggPSAwOwotICAgIEFOR0xFX1RSWShh
bGxvY2F0ZVF1ZXJ5KGNvbnRleHRWaywgJnBvb2xJbmRleCwgJnF1ZXJ5SW5kZXgpKTsKKyAgICBp
ZiAobUN1cnJlbnRGcmVlRW50cnkgPj0gbVBvb2xTaXplKQorICAgIHsKKyAgICAgICAgLy8gTm8g
bW9yZSBxdWVyaWVzIGxlZnQgaW4gdGhpcyBwb29sLCBjcmVhdGUgYW5vdGhlciBvbmUuCisgICAg
ICAgIEFOR0xFX1RSWShhbGxvY2F0ZU5ld1Bvb2woY29udGV4dFZrKSk7CisgICAgfQogCi0gICAg
cXVlcnlPdXQtPmluaXQodGhpcywgcG9vbEluZGV4LCBxdWVyeUluZGV4KTsKKyAgICB1aW50MzJf
dCBxdWVyeUluZGV4ID0gbUN1cnJlbnRGcmVlRW50cnkrKzsKKyAgICBxdWVyeU91dC0+aW5pdCh0
aGlzLCBtQ3VycmVudFBvb2wsIHF1ZXJ5SW5kZXgpOwogCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1
bHQ6OkNvbnRpbnVlOwogfQogCiB2b2lkIER5bmFtaWNRdWVyeVBvb2w6OmZyZWVRdWVyeShDb250
ZXh0VmsgKmNvbnRleHRWaywgUXVlcnlIZWxwZXIgKnF1ZXJ5KQogewotICAgIGlmIChxdWVyeS0+
Z2V0UXVlcnlQb29sKCkpCisgICAgaWYgKHF1ZXJ5LT52YWxpZCgpKQogICAgIHsKLSAgICAgICAg
c2l6ZV90IHBvb2xJbmRleCA9IHF1ZXJ5LT5nZXRRdWVyeVBvb2xJbmRleCgpOwotICAgICAgICBB
U1NFUlQocXVlcnktPmdldFF1ZXJ5UG9vbCgpLT52YWxpZCgpKTsKKyAgICAgICAgc2l6ZV90IHBv
b2xJbmRleCA9IHF1ZXJ5LT5tUXVlcnlQb29sSW5kZXg7CisgICAgICAgIEFTU0VSVChnZXRRdWVy
eVBvb2wocG9vbEluZGV4KS52YWxpZCgpKTsKIAotICAgICAgICBmcmVlUXVlcnkoY29udGV4dFZr
LCBwb29sSW5kZXgsIHF1ZXJ5LT5nZXRRdWVyeSgpKTsKKyAgICAgICAgb25FbnRyeUZyZWVkKGNv
bnRleHRWaywgcG9vbEluZGV4KTsKIAogICAgICAgICBxdWVyeS0+ZGVpbml0KCk7CiAgICAgfQog
fQogCi1hbmdsZTo6UmVzdWx0IER5bmFtaWNRdWVyeVBvb2w6OmFsbG9jYXRlUXVlcnkoQ29udGV4
dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICpwb29sSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgKnF1ZXJ5SW5kZXgpCi17Ci0gICAgaWYgKG1DdXJyZW50
RnJlZUVudHJ5ID49IG1Qb29sU2l6ZSkKLSAgICB7Ci0gICAgICAgIC8vIE5vIG1vcmUgcXVlcmll
cyBsZWZ0IGluIHRoaXMgcG9vbCwgY3JlYXRlIGFub3RoZXIgb25lLgotICAgICAgICBBTkdMRV9U
UlkoYWxsb2NhdGVOZXdQb29sKGNvbnRleHRWaykpOwotICAgIH0KLQotICAgICpwb29sSW5kZXgg
ID0gbUN1cnJlbnRQb29sOwotICAgICpxdWVyeUluZGV4ID0gbUN1cnJlbnRGcmVlRW50cnkrKzsK
LQotICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKLX0KLQotdm9pZCBEeW5hbWlj
UXVlcnlQb29sOjpmcmVlUXVlcnkoQ29udGV4dFZrICpjb250ZXh0VmssIHNpemVfdCBwb29sSW5k
ZXgsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpCi17Ci0gICAgQU5HTEVfVU5VU0VEX1ZBUklBQkxFKHF1
ZXJ5SW5kZXgpOwotICAgIG9uRW50cnlGcmVlZChjb250ZXh0VmssIHBvb2xJbmRleCk7Ci19Ci0K
IGFuZ2xlOjpSZXN1bHQgRHluYW1pY1F1ZXJ5UG9vbDo6YWxsb2NhdGVOZXdQb29sKENvbnRleHRW
ayAqY29udGV4dFZrKQogewogICAgIGlmIChmaW5kRnJlZUVudHJ5UG9vbChjb250ZXh0VmspKQpA
QCAtMTAxOSwyMiArMTAwOCw0MCBAQCB2b2lkIFF1ZXJ5SGVscGVyOjpkZWluaXQoKQogICAgIG1R
dWVyeSAgICAgICAgICAgID0gMDsKIH0KIAotdm9pZCBRdWVyeUhlbHBlcjo6YmVnaW5RdWVyeShD
b250ZXh0VmsgKmNvbnRleHRWaykKK2FuZ2xlOjpSZXN1bHQgUXVlcnlIZWxwZXI6OmJlZ2luUXVl
cnkoQ29udGV4dFZrICpjb250ZXh0VmspCiB7Ci0gICAgY29udGV4dFZrLT5nZXRDb21tYW5kR3Jh
cGgoKS0+YmVnaW5RdWVyeShnZXRRdWVyeVBvb2woKSwgZ2V0UXVlcnkoKSk7CisgICAgdms6OlBy
aW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5Q29tbWFuZHM7CisgICAgQU5HTEVfVFJZKGNvbnRl
eHRWay0+Zmx1c2hBbmRHZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigmcHJpbWFyeUNvbW1hbmRzKSk7
CisgICAgY29uc3QgUXVlcnlQb29sICZxdWVyeVBvb2wgPSBnZXRRdWVyeVBvb2woKTsKKyAgICBw
cmltYXJ5Q29tbWFuZHMtPnJlc2V0UXVlcnlQb29sKHF1ZXJ5UG9vbCwgbVF1ZXJ5LCAxKTsKKyAg
ICBwcmltYXJ5Q29tbWFuZHMtPmJlZ2luUXVlcnkocXVlcnlQb29sLCBtUXVlcnksIDApOwogICAg
IG1Nb3N0UmVjZW50U2VyaWFsID0gY29udGV4dFZrLT5nZXRDdXJyZW50UXVldWVTZXJpYWwoKTsK
KyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgUXVlcnlIZWxw
ZXI6OmVuZFF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrKQorYW5nbGU6OlJlc3VsdCBRdWVyeUhl
bHBlcjo6ZW5kUXVlcnkoQ29udGV4dFZrICpjb250ZXh0VmspCiB7Ci0gICAgY29udGV4dFZrLT5n
ZXRDb21tYW5kR3JhcGgoKS0+ZW5kUXVlcnkoZ2V0UXVlcnlQb29sKCksIGdldFF1ZXJ5KCkpOwor
ICAgIHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAqcHJpbWFyeUNvbW1hbmRzOworICAgIEFOR0xF
X1RSWShjb250ZXh0VmstPmZsdXNoQW5kR2V0UHJpbWFyeUNvbW1hbmRCdWZmZXIoJnByaW1hcnlD
b21tYW5kcykpOworICAgIHByaW1hcnlDb21tYW5kcy0+ZW5kUXVlcnkoZ2V0UXVlcnlQb29sKCks
IG1RdWVyeSk7CiAgICAgbU1vc3RSZWNlbnRTZXJpYWwgPSBjb250ZXh0VmstPmdldEN1cnJlbnRR
dWV1ZVNlcmlhbCgpOworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIAot
dm9pZCBRdWVyeUhlbHBlcjo6d3JpdGVUaW1lc3RhbXAoQ29udGV4dFZrICpjb250ZXh0VmspCith
bmdsZTo6UmVzdWx0IFF1ZXJ5SGVscGVyOjpmbHVzaEFuZFdyaXRlVGltZXN0YW1wKENvbnRleHRW
ayAqY29udGV4dFZrKQogewotICAgIGNvbnRleHRWay0+Z2V0Q29tbWFuZEdyYXBoKCktPndyaXRl
VGltZXN0YW1wKGdldFF1ZXJ5UG9vbCgpLCBnZXRRdWVyeSgpKTsKKyAgICB2azo6UHJpbWFyeUNv
bW1hbmRCdWZmZXIgKnByaW1hcnk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Zmx1c2hBbmRH
ZXRQcmltYXJ5Q29tbWFuZEJ1ZmZlcigmcHJpbWFyeSkpOworICAgIHdyaXRlVGltZXN0YW1wKHBy
aW1hcnkpOwogICAgIG1Nb3N0UmVjZW50U2VyaWFsID0gY29udGV4dFZrLT5nZXRDdXJyZW50UXVl
dWVTZXJpYWwoKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK3Zv
aWQgUXVlcnlIZWxwZXI6OndyaXRlVGltZXN0YW1wKHZrOjpQcmltYXJ5Q29tbWFuZEJ1ZmZlciAq
cHJpbWFyeSkKK3sKKyAgICBjb25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCA9IGdldFF1ZXJ5UG9v
bCgpOworICAgIHByaW1hcnktPnJlc2V0UXVlcnlQb29sKHF1ZXJ5UG9vbCwgbVF1ZXJ5LCAxKTsK
KyAgICBwcmltYXJ5LT53cml0ZVRpbWVzdGFtcChWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0Zf
UElQRV9CSVQsIHF1ZXJ5UG9vbCwgbVF1ZXJ5KTsKIH0KIAogYm9vbCBRdWVyeUhlbHBlcjo6aGFz
UGVuZGluZ1dvcmsoQ29udGV4dFZrICpjb250ZXh0VmspCkBAIC0xMDQ0LDYgKzEwNTEsMzkgQEAg
Ym9vbCBRdWVyeUhlbHBlcjo6aGFzUGVuZGluZ1dvcmsoQ29udGV4dFZrICpjb250ZXh0VmspCiAg
ICAgcmV0dXJuIG1Nb3N0UmVjZW50U2VyaWFsID09IGNvbnRleHRWay0+Z2V0Q3VycmVudFF1ZXVl
U2VyaWFsKCk7CiB9CiAKK2FuZ2xlOjpSZXN1bHQgUXVlcnlIZWxwZXI6OmdldFVpbnQ2NFJlc3Vs
dE5vbkJsb2NraW5nKENvbnRleHRWayAqY29udGV4dFZrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgKnJlc3VsdE91dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
KmF2YWlsYWJsZU91dCkKK3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgVmtEZXZpY2UgZGV2
aWNlICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0VmstPmdldERldmljZSgpOworICAgIGNv
bnN0ZXhwciBWa1F1ZXJ5UmVzdWx0RmxhZ3Mga0ZsYWdzID0gVktfUVVFUllfUkVTVUxUXzY0X0JJ
VDsKKyAgICBWa1Jlc3VsdCByZXN1bHQgPSBnZXRRdWVyeVBvb2woKS5nZXRSZXN1bHRzKGRldmlj
ZSwgbVF1ZXJ5LCAxLCBzaXplb2YodWludDY0X3QpLCByZXN1bHRPdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodWludDY0X3QpLCBrRmxh
Z3MpOworCisgICAgaWYgKHJlc3VsdCA9PSBWS19OT1RfUkVBRFkpCisgICAgeworICAgICAgICAq
YXZhaWxhYmxlT3V0ID0gZmFsc2U7CisgICAgICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250
aW51ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQU5HTEVfVktfVFJZKGNvbnRl
eHRWaywgcmVzdWx0KTsKKyAgICAgICAgKmF2YWlsYWJsZU91dCA9IHRydWU7CisgICAgfQorICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKworYW5nbGU6OlJlc3VsdCBRdWVy
eUhlbHBlcjo6Z2V0VWludDY0UmVzdWx0KENvbnRleHRWayAqY29udGV4dFZrLCB1aW50NjRfdCAq
cmVzdWx0T3V0KQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICBWa0RldmljZSBkZXZpY2Ug
ICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHRWay0+Z2V0RGV2aWNlKCk7CisgICAgY29uc3Rl
eHByIFZrUXVlcnlSZXN1bHRGbGFncyBrRmxhZ3MgPSBWS19RVUVSWV9SRVNVTFRfNjRfQklUIHwg
VktfUVVFUllfUkVTVUxUX1dBSVRfQklUOworICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0VmssIGdl
dFF1ZXJ5UG9vbCgpLmdldFJlc3VsdHMoZGV2aWNlLCBtUXVlcnksIDEsIHNpemVvZih1aW50NjRf
dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRPdXQsIHNpemVvZih1aW50NjRfdCksIGtGbGFncykpOworICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKK30KKwogLy8gRHluYW1pY1NlbWFwaG9yZVBvb2wgaW1wbGVt
ZW50YXRpb24KIER5bmFtaWNTZW1hcGhvcmVQb29sOjpEeW5hbWljU2VtYXBob3JlUG9vbCgpID0g
ZGVmYXVsdDsKIApAQCAtMTIyMiwxMSArMTI2Miw4IEBAIGFuZ2xlOjpSZXN1bHQgTGluZUxvb3BI
ZWxwZXI6OmdldEluZGV4QnVmZmVyRm9yRWxlbWVudEFycmF5QnVmZmVyKENvbnRleHRWayAqY29u
CiAKICAgICAqaW5kZXhDb3VudE91dCA9IGluZGV4Q291bnQgKyAxOwogCi0gICAgVmtJbmRleFR5
cGUgaW5kZXhUeXBlID0gZ2xfdms6OmtJbmRleFR5cGVNYXBbZ2xJbmRleFR5cGVdOwotICAgIEFT
U0VSVChpbmRleFR5cGUgPT0gVktfSU5ERVhfVFlQRV9VSU5UMTYgfHwgaW5kZXhUeXBlID09IFZL
X0lOREVYX1RZUEVfVUlOVDMyKTsKLSAgICB1aW50MzJfdCAqaW5kaWNlcyA9IG51bGxwdHI7Ci0K
LSAgICBhdXRvIHVuaXRTaXplID0gKGluZGV4VHlwZSA9PSBWS19JTkRFWF9UWVBFX1VJTlQxNiA/
IHNpemVvZih1aW50MTZfdCkgOiBzaXplb2YodWludDMyX3QpKTsKKyAgICB1aW50MzJfdCAqaW5k
aWNlcyAgICA9IG51bGxwdHI7CisgICAgc2l6ZV90IHVuaXRTaXplICAgICAgPSBjb250ZXh0Vmst
PmdldFZrSW5kZXhUeXBlU2l6ZShnbEluZGV4VHlwZSk7CiAgICAgc2l6ZV90IGFsbG9jYXRlQnl0
ZXMgPSB1bml0U2l6ZSAqIChpbmRleENvdW50ICsgMSkgKyAxOwogCiAgICAgbUR5bmFtaWNJbmRl
eEJ1ZmZlci5yZWxlYXNlSW5GbGlnaHRCdWZmZXJzKGNvbnRleHRWayk7CkBAIC0xMjU4LDExICsx
Mjk1LDEwIEBAIGFuZ2xlOjpSZXN1bHQgTGluZUxvb3BIZWxwZXI6OnN0cmVhbUluZGljZXMoQ29u
dGV4dFZrICpjb250ZXh0VmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZrRGV2aWNlU2l6ZSAqYnVmZmVyT2Zmc2V0T3V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqaW5kZXhDb3VudE91dCkKIHsKLSAg
ICBWa0luZGV4VHlwZSBpbmRleFR5cGUgPSBnbF92azo6a0luZGV4VHlwZU1hcFtnbEluZGV4VHlw
ZV07CisgICAgc2l6ZV90IHVuaXRTaXplID0gY29udGV4dFZrLT5nZXRWa0luZGV4VHlwZVNpemUo
Z2xJbmRleFR5cGUpOwogCiAgICAgdWludDhfdCAqaW5kaWNlcyA9IG51bGxwdHI7CiAKLSAgICBh
dXRvIHVuaXRTaXplID0gKGluZGV4VHlwZSA9PSBWS19JTkRFWF9UWVBFX1VJTlQxNiA/IHNpemVv
Zih1aW50MTZfdCkgOiBzaXplb2YodWludDMyX3QpKTsKICAgICB1aW50MzJfdCBudW1PdXRJbmRp
Y2VzID0gaW5kZXhDb3VudCArIDE7CiAgICAgaWYgKGNvbnRleHRWay0+Z2V0U3RhdGUoKS5pc1By
aW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpCiAgICAgewpAQCAtMTI3NywxMyArMTMxMywxNCBAQCBh
bmdsZTo6UmVzdWx0IExpbmVMb29wSGVscGVyOjpzdHJlYW1JbmRpY2VzKENvbnRleHRWayAqY29u
dGV4dFZrLAogCiAgICAgaWYgKGNvbnRleHRWay0+Z2V0U3RhdGUoKS5pc1ByaW1pdGl2ZVJlc3Rh
cnRFbmFibGVkKCkpCiAgICAgewotICAgICAgICBIYW5kbGVQcmltaXRpdmVSZXN0YXJ0KGdsSW5k
ZXhUeXBlLCBpbmRleENvdW50LCBzcmNQdHIsIGluZGljZXMpOworICAgICAgICBIYW5kbGVQcmlt
aXRpdmVSZXN0YXJ0KGNvbnRleHRWaywgZ2xJbmRleFR5cGUsIGluZGV4Q291bnQsIHNyY1B0ciwg
aW5kaWNlcyk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlmIChnbEluZGV4VHlw
ZSA9PSBnbDo6RHJhd0VsZW1lbnRzVHlwZTo6VW5zaWduZWRCeXRlKQorICAgICAgICBpZiAoY29u
dGV4dFZrLT5zaG91bGRDb252ZXJ0VWludDhWa0luZGV4VHlwZShnbEluZGV4VHlwZSkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIC8vIFZ1bGthbiBkb2Vzbid0IHN1cHBvcnQgdWludDggaW5kZXgg
dHlwZXMsIHNvIHdlIG5lZWQgdG8gZW11bGF0ZSBpdC4KKyAgICAgICAgICAgIC8vIElmIHZ1bGth
biBkb2Vzbid0IHN1cHBvcnQgdWludDggaW5kZXggdHlwZXMsIHdlIG5lZWQgdG8gZW11bGF0ZSBp
dC4KKyAgICAgICAgICAgIFZrSW5kZXhUeXBlIGluZGV4VHlwZSA9IGNvbnRleHRWay0+Z2V0VmtJ
bmRleFR5cGUoZ2xJbmRleFR5cGUpOwogICAgICAgICAgICAgQVNTRVJUKGluZGV4VHlwZSA9PSBW
S19JTkRFWF9UWVBFX1VJTlQxNik7CiAgICAgICAgICAgICB1aW50MTZfdCAqaW5kaWNlc0RzdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QgKj4oaW5kaWNlcyk7CiAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGluZGV4Q291bnQ7IGkrKykKQEAgLTEzMTQsOSArMTM1MSw3IEBAIGFu
Z2xlOjpSZXN1bHQgTGluZUxvb3BIZWxwZXI6OnN0cmVhbUluZGljZXNJbmRpcmVjdChDb250ZXh0
VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXJIZWxwZXIgKippbmRpcmVjdEJ1ZmZlck91dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNpemUgKmlu
ZGlyZWN0QnVmZmVyT2Zmc2V0T3V0KQogewotICAgIFZrSW5kZXhUeXBlIGluZGV4VHlwZSA9IGds
X3ZrOjprSW5kZXhUeXBlTWFwW2dsSW5kZXhUeXBlXTsKLQotICAgIGF1dG8gdW5pdFNpemUgPSAo
aW5kZXhUeXBlID09IFZLX0lOREVYX1RZUEVfVUlOVDE2ID8gc2l6ZW9mKHVpbnQxNl90KSA6IHNp
emVvZih1aW50MzJfdCkpOworICAgIHNpemVfdCB1bml0U2l6ZSAgICAgID0gY29udGV4dFZrLT5n
ZXRWa0luZGV4VHlwZVNpemUoZ2xJbmRleFR5cGUpOwogICAgIHNpemVfdCBhbGxvY2F0ZUJ5dGVz
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleEJ1ZmZlci0+Z2V0U2l6ZSgpICsgdW5pdFNpemUp
OwogCiAgICAgaWYgKGNvbnRleHRWay0+Z2V0U3RhdGUoKS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFi
bGVkKCkpCkBAIC0xMzUzLDcgKzEzODgsNyBAQCBhbmdsZTo6UmVzdWx0IExpbmVMb29wSGVscGVy
OjpzdHJlYW1JbmRpY2VzSW5kaXJlY3QoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgcGFyYW1z
LmluZGlyZWN0QnVmZmVyT2Zmc2V0ICAgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGluZGlyZWN0
QnVmZmVyT2Zmc2V0KTsKICAgICBwYXJhbXMuZHN0SW5kaXJlY3RCdWZmZXJPZmZzZXQgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oKmluZGlyZWN0QnVmZmVyT2Zmc2V0T3V0KTsKICAgICBwYXJhbXMu
ZHN0SW5kZXhCdWZmZXJPZmZzZXQgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKmluZGV4QnVm
ZmVyT2Zmc2V0T3V0KTsKLSAgICBwYXJhbXMuaXMzMkJpdCAgICAgICAgICAgICAgICAgPSB1bml0
U2l6ZSA9PSA0OworICAgIHBhcmFtcy5pbmRpY2VzQml0c1dpZHRoICAgICAgICA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih1bml0U2l6ZSAqIDgpOwogCiAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+
Z2V0VXRpbHMoKS5jb252ZXJ0TGluZUxvb3BJbmRleEluZGlyZWN0QnVmZmVyKAogICAgICAgICBj
b250ZXh0VmssIGluZGlyZWN0QnVmZmVyLCBkZXN0SW5kaXJlY3RCdWZmZXIsIGRlc3RJbmRleEJ1
ZmZlciwgaW5kZXhCdWZmZXIsIHBhcmFtcykpOwpAQCAtMTQyMiw4ICsxNDU3LDcgQEAgdm9pZCBM
aW5lTG9vcEhlbHBlcjo6RHJhdyh1aW50MzJfdCBjb3VudCwgdWludDMyX3QgYmFzZVZlcnRleCwg
Q29tbWFuZEJ1ZmZlciAqY28KIAogLy8gQnVmZmVySGVscGVyIGltcGxlbWVudGF0aW9uLgogQnVm
ZmVySGVscGVyOjpCdWZmZXJIZWxwZXIoKQotICAgIDogQ29tbWFuZEdyYXBoUmVzb3VyY2UoQ29t
bWFuZEdyYXBoUmVzb3VyY2VUeXBlOjpCdWZmZXIpLAotICAgICAgbU1lbW9yeVByb3BlcnR5Rmxh
Z3N7fSwKKyAgICA6IG1NZW1vcnlQcm9wZXJ0eUZsYWdze30sCiAgICAgICBtU2l6ZSgwKSwKICAg
ICAgIG1NYXBwZWRNZW1vcnkobnVsbHB0ciksCiAgICAgICBtVmlld0Zvcm1hdChudWxscHRyKSwK
QEAgLTE0MzgsNyArMTQ3Miw3IEBAIGFuZ2xlOjpSZXN1bHQgQnVmZmVySGVscGVyOjppbml0KENv
bnRleHRWayAqY29udGV4dFZrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVmtCdWZmZXJDcmVhdGVJbmZvICZyZXF1ZXN0ZWRDcmVhdGVJbmZvLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbW9yeVByb3BlcnR5
RmxhZ3MpCiB7Ci0gICAgUmVuZGVyZXJWayAqcmVuZGVyZXJWayA9IGNvbnRleHRWay0+Z2V0UmVu
ZGVyZXIoKTsKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRleHRWay0+Z2V0UmVuZGVy
ZXIoKTsKIAogICAgIC8vIFRPRE86IFJlbW92ZSB3aXRoIGFuZ2xlYnVnLmNvbS8yMTYyOiBWdWxr
YW46IEltcGxlbWVudCBkZXZpY2UgbWVtb3J5IHN1Yi1hbGxvY2F0aW9uCiAgICAgLy8gQ2hlY2sg
aWYgd2UgaGF2ZSB0b28gbWFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGFscmVhZHkgYW5kIG5lZWQg
dG8gZnJlZSBzb21lIGJlZm9yZSBhbGxvY2F0aW5nCkBAIC0xNDUzLDE5ICsxNDg3LDY1IEBAIGFu
Z2xlOjpSZXN1bHQgQnVmZmVySGVscGVyOjppbml0KENvbnRleHRWayAqY29udGV4dFZrLAogICAg
IFZrQnVmZmVyQ3JlYXRlSW5mbyBtb2RpZmllZENyZWF0ZUluZm87CiAgICAgY29uc3QgVmtCdWZm
ZXJDcmVhdGVJbmZvICpjcmVhdGVJbmZvID0gJnJlcXVlc3RlZENyZWF0ZUluZm87CiAKLSAgICBp
ZiAocmVuZGVyZXJWay0+Z2V0RmVhdHVyZXMoKS5yb3VuZFVwQnVmZmVyc1RvTWF4VmVydGV4QXR0
cmliU3RyaWRlLmVuYWJsZWQpCisgICAgaWYgKHJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLnBhZEJ1
ZmZlcnNUb01heFZlcnRleEF0dHJpYlN0cmlkZS5lbmFibGVkKQogICAgIHsKLSAgICAgICAgY29u
c3QgVmtEZXZpY2VTaXplIG1heFZlcnRleEF0dHJpYlN0cmlkZSA9IHJlbmRlcmVyVmstPmdldE1h
eFZlcnRleEF0dHJpYlN0cmlkZSgpOworICAgICAgICBjb25zdCBWa0RldmljZVNpemUgbWF4VmVy
dGV4QXR0cmliU3RyaWRlID0gcmVuZGVyZXItPmdldE1heFZlcnRleEF0dHJpYlN0cmlkZSgpOwog
ICAgICAgICBBU1NFUlQobWF4VmVydGV4QXR0cmliU3RyaWRlKTsKLSAgICAgICAgbW9kaWZpZWRD
cmVhdGVJbmZvICAgICAgPSByZXF1ZXN0ZWRDcmVhdGVJbmZvOwotICAgICAgICBtb2RpZmllZENy
ZWF0ZUluZm8uc2l6ZSA9IHJvdW5kVXAobW9kaWZpZWRDcmVhdGVJbmZvLnNpemUsIG1heFZlcnRl
eEF0dHJpYlN0cmlkZSk7Ci0gICAgICAgIGNyZWF0ZUluZm8gICAgICAgICAgICAgID0gJm1vZGlm
aWVkQ3JlYXRlSW5mbzsKKyAgICAgICAgbW9kaWZpZWRDcmVhdGVJbmZvID0gcmVxdWVzdGVkQ3Jl
YXRlSW5mbzsKKyAgICAgICAgbW9kaWZpZWRDcmVhdGVJbmZvLnNpemUgKz0gbWF4VmVydGV4QXR0
cmliU3RyaWRlOworICAgICAgICBjcmVhdGVJbmZvID0gJm1vZGlmaWVkQ3JlYXRlSW5mbzsKICAg
ICB9CiAKICAgICBBTkdMRV9WS19UUlkoY29udGV4dFZrLCBtQnVmZmVyLmluaXQoY29udGV4dFZr
LT5nZXREZXZpY2UoKSwgKmNyZWF0ZUluZm8pKTsKKworICAgIFZrRGV2aWNlU2l6ZSBzaXplOwog
ICAgIEFOR0xFX1RSWShBbGxvY2F0ZUJ1ZmZlck1lbW9yeShjb250ZXh0VmssIG1lbW9yeVByb3Bl
cnR5RmxhZ3MsICZtTWVtb3J5UHJvcGVydHlGbGFncywgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm1CdWZmZXIsICZtRGV2aWNlTWVtb3J5KSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQnVmZmVyLCAmbURldmljZU1lbW9yeSwgJnNp
emUpKTsKICAgICBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXggPSBjb250ZXh0VmstPmdldFJlbmRl
cmVyKCktPmdldFF1ZXVlRmFtaWx5SW5kZXgoKTsKKworICAgIGlmIChyZW5kZXJlci0+Z2V0RmVh
dHVyZXMoKS5hbGxvY2F0ZU5vblplcm9NZW1vcnkuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIC8v
IFRoaXMgbWVtb3J5IGNhbid0IGJlIG1hcHBlZCwgc28gdGhlIGJ1ZmZlciBtdXN0IGJlIG1hcmtl
ZCBhcyBhIHRyYW5zZmVyIGRlc3RpbmF0aW9uIHNvIHdlCisgICAgICAgIC8vIGNhbiB1c2UgYSBz
dGFnaW5nIHJlc291cmNlIHRvIGluaXRpYWxpemUgaXQgdG8gYSBub24temVybyB2YWx1ZS4gSWYg
dGhlIG1lbW9yeSBpcworICAgICAgICAvLyBtYXBwYWJsZSB3ZSBkbyB0aGUgaW5pdGlhbGl6YXRp
b24gaW4gQWxsb2NhdGVCdWZmZXJNZW1vcnkuCisgICAgICAgIGlmICgobWVtb3J5UHJvcGVydHlG
bGFncyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUKSA9PSAwICYmCisgICAg
ICAgICAgICAocmVxdWVzdGVkQ3JlYXRlSW5mby51c2FnZSAmIFZLX0JVRkZFUl9VU0FHRV9UUkFO
U0ZFUl9EU1RfQklUKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBBTkdMRV9UUlkoaW5p
dGlhbGl6ZU5vblplcm9NZW1vcnkoY29udGV4dFZrLCBzaXplKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CisKK2FuZ2xlOjpSZXN1
bHQgQnVmZmVySGVscGVyOjppbml0aWFsaXplTm9uWmVyb01lbW9yeShDb250ZXh0ICpjb250ZXh0
LCBWa0RldmljZVNpemUgc2l6ZSkKK3sKKyAgICAvLyBTdGFnaW5nIGJ1ZmZlciBtZW1vcnkgaXMg
bm9uLXplcm8taW5pdGlhbGl6ZWQgaW4gJ2luaXQnLgorICAgIFN0YWdpbmdCdWZmZXIgc3RhZ2lu
Z0J1ZmZlcjsKKyAgICBBTkdMRV9UUlkoc3RhZ2luZ0J1ZmZlci5pbml0KGNvbnRleHQsIHNpemUs
IFN0YWdpbmdVc2FnZTo6Qm90aCkpOworCisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgPSBjb250
ZXh0LT5nZXRSZW5kZXJlcigpOworCisgICAgdms6OlByaW1hcnlDb21tYW5kQnVmZmVyIGNvbW1h
bmRCdWZmZXI7CisgICAgQU5HTEVfVFJZKHJlbmRlcmVyLT5nZXRDb21tYW5kQnVmZmVyT25lT2Zm
KGNvbnRleHQsICZjb21tYW5kQnVmZmVyKSk7CisKKyAgICAvLyBRdWV1ZSBhIERNQSBjb3B5Lgor
ICAgIFZrQnVmZmVyQ29weSBjb3B5UmVnaW9uID0ge307CisgICAgY29weVJlZ2lvbi5zcmNPZmZz
ZXQgICAgPSAwOworICAgIGNvcHlSZWdpb24uZHN0T2Zmc2V0ICAgID0gMDsKKyAgICBjb3B5UmVn
aW9uLnNpemUgICAgICAgICA9IHNpemU7CisKKyAgICBjb21tYW5kQnVmZmVyLmNvcHlCdWZmZXIo
c3RhZ2luZ0J1ZmZlci5nZXRCdWZmZXIoKSwgbUJ1ZmZlciwgMSwgJmNvcHlSZWdpb24pOworCisg
ICAgQU5HTEVfVktfVFJZKGNvbnRleHQsIGNvbW1hbmRCdWZmZXIuZW5kKCkpOworCisgICAgU2Vy
aWFsIHNlcmlhbDsKKyAgICBBTkdMRV9UUlkocmVuZGVyZXItPnF1ZXVlU3VibWl0T25lT2ZmKGNv
bnRleHQsIHN0ZDo6bW92ZShjb21tYW5kQnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVnbDo6Q29udGV4dFByaW9yaXR5OjpNZWRpdW0sICZzZXJpYWwp
KTsKKworICAgIHN0YWdpbmdCdWZmZXIuY29sbGVjdEdhcmJhZ2UocmVuZGVyZXIsIHNlcmlhbCk7
CisgICAgbVVzZS51cGRhdGVTZXJpYWxPbmVPZmYoc2VyaWFsKTsKKwogICAgIHJldHVybiBhbmds
ZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApAQCAtMTUwNiw0OCArMTU4NiwxNyBAQCBib29sIEJ1
ZmZlckhlbHBlcjo6bmVlZHNPbldyaXRlQmFycmllcihWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNz
VHlwZSwKICAgICByZXR1cm4gbmVlZHNCYXJyaWVyOwogfQogCi12b2lkIEJ1ZmZlckhlbHBlcjo6
b25Xcml0ZUFjY2VzcyhDb250ZXh0VmsgKmNvbnRleHRWaywgVmtBY2Nlc3NGbGFncyB3cml0ZUFj
Y2Vzc1R5cGUpCi17Ci0gICAgVmtBY2Nlc3NGbGFncyBiYXJyaWVyU3JjLCBiYXJyaWVyRHN0Owot
ICAgIGlmIChuZWVkc09uV3JpdGVCYXJyaWVyKHdyaXRlQWNjZXNzVHlwZSwgJmJhcnJpZXJTcmMs
ICZiYXJyaWVyRHN0KSkKLSAgICB7Ci0gICAgICAgIGFkZEdsb2JhbE1lbW9yeUJhcnJpZXIoYmFy
cmllclNyYywgYmFycmllckRzdCwgVktfUElQRUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCk7
Ci0gICAgfQotCi0gICAgYm9vbCBob3N0VmlzaWJsZSA9IG1NZW1vcnlQcm9wZXJ0eUZsYWdzICYg
VktfTUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJMRV9CSVQ7Ci0gICAgaWYgKGhvc3RWaXNpYmxl
ICYmIHdyaXRlQWNjZXNzVHlwZSAhPSBWS19BQ0NFU1NfSE9TVF9XUklURV9CSVQpCi0gICAgewot
ICAgICAgICBjb250ZXh0VmstPm9uSG9zdFZpc2libGVCdWZmZXJXcml0ZSgpOwotICAgIH0KLX0K
LQogYW5nbGU6OlJlc3VsdCBCdWZmZXJIZWxwZXI6OmNvcHlGcm9tQnVmZmVyKENvbnRleHRWayAq
Y29udGV4dFZrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEJ1ZmZlciAmYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJ1ZmZlckhlbHBlciAqc3JjQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrQWNjZXNzRmxhZ3MgYnVmZmVyQWNjZXNzVHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlckNvcHkg
JmNvcHlSZWdpb24pCiB7Ci0gICAgLy8gJ3JlY29yZENvbW1hbmRzJyB3aWxsIGltcGxpY2l0bHkg
c3RvcCBhbnkgcmVhZHMgZnJvbSB1c2luZyB0aGUgb2xkIGJ1ZmZlciBkYXRhLgogICAgIENvbW1h
bmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBudWxscHRyOwotICAgIEFOR0xFX1RSWShyZWNvcmRD
b21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRl
eHRWay0+b25CdWZmZXJXcml0ZShidWZmZXJBY2Nlc3NUeXBlLCB0aGlzKSk7CisgICAgQU5HTEVf
VFJZKGNvbnRleHRWay0+b25CdWZmZXJSZWFkKFZLX0FDQ0VTU19UUkFOU0ZFUl9SRUFEX0JJVCwg
c3JjQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdl
dENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAotICAgIGlmIChtQ3VycmVudFJlYWRB
Y2Nlc3MgIT0gMCB8fCBtQ3VycmVudFdyaXRlQWNjZXNzICE9IDAgfHwgYnVmZmVyQWNjZXNzVHlw
ZSAhPSAwKQotICAgIHsKLSAgICAgICAgLy8gSW5zZXJ0IGEgYmFycmllciB0byBlbnN1cmUgcmVh
ZHMvd3JpdGVzIGFyZSBjb21wbGV0ZS4KLSAgICAgICAgLy8gVXNlIGEgZ2xvYmFsIG1lbW9yeSBi
YXJyaWVyIHRvIGtlZXAgdGhpbmdzIHNpbXBsZS4KLSAgICAgICAgVmtNZW1vcnlCYXJyaWVyIG1l
bW9yeUJhcnJpZXIgPSB7fTsKLSAgICAgICAgbWVtb3J5QmFycmllci5zVHlwZSAgICAgICAgICAg
PSBWS19TVFJVQ1RVUkVfVFlQRV9NRU1PUllfQkFSUklFUjsKLSAgICAgICAgbWVtb3J5QmFycmll
ci5zcmNBY2Nlc3NNYXNrICAgPSBtQ3VycmVudFJlYWRBY2Nlc3MgfCBtQ3VycmVudFdyaXRlQWNj
ZXNzIHwgYnVmZmVyQWNjZXNzVHlwZTsKLSAgICAgICAgbWVtb3J5QmFycmllci5kc3RBY2Nlc3NN
YXNrICAgPSBWS19BQ0NFU1NfVFJBTlNGRVJfV1JJVEVfQklUOwotCi0gICAgICAgIGNvbW1hbmRC
dWZmZXItPnBpcGVsaW5lQmFycmllcihWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfUElQRUxJTkVfU1RB
R0VfVFJBTlNGRVJfQklULCAwLCAxLCAmbWVtb3J5QmFycmllciwgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIDAsIG51bGxwdHIpOwotICAgIH0KLQot
ICAgIG1DdXJyZW50V3JpdGVBY2Nlc3MgPSBWS19BQ0NFU1NfVFJBTlNGRVJfV1JJVEVfQklUOwot
ICAgIG1DdXJyZW50UmVhZEFjY2VzcyAgPSAwOwotCi0gICAgY29tbWFuZEJ1ZmZlci0+Y29weUJ1
ZmZlcihidWZmZXIsIG1CdWZmZXIsIDEsICZjb3B5UmVnaW9uKTsKKyAgICBjb21tYW5kQnVmZmVy
LT5jb3B5QnVmZmVyKHNyY0J1ZmZlci0+Z2V0QnVmZmVyKCksIG1CdWZmZXIsIDEsICZjb3B5UmVn
aW9uKTsKIAogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KQEAgLTE2NDQs
NyArMTY5Myw3IEBAIGJvb2wgQnVmZmVySGVscGVyOjpjYW5BY2N1bXVsYXRlUmVhZChDb250ZXh0
VmsgKmNvbnRleHRWaywgVmtBY2Nlc3NGbGFncyByZWFkQWNjCiB7CiAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIHN0YXJ0IGEgbmV3IGNvbW1hbmQgYnVmZmVyIHdoZW4gd2UgbmVlZCBhIG5ldyBiYXJy
aWVyLgogICAgIC8vIEZvciBzaW1wbGljaXR5J3Mgc2FrZSBmb3Igbm93IHdlIGFsd2F5cyBzdGFy
dCBhIG5ldyBjb21tYW5kIGJ1ZmZlci4KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBSZS11c2UgdGhl
IGNvbW1hbmQgYnVmZmVyLiBodHRwOi8vYW5nbGVidWcuY29tLzQwMjkKKyAgICAvLyBUT0RPKGpt
YWRpbGwpOiBSZS11c2UgdGhlIGNvbW1hbmQgYnVmZmVyLiBodHRwOi8vYW5nbGVidWcuY29tLzQ0
MjkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE2NTIsNyArMTcwMSw3IEBAIGJvb2wgQnVm
ZmVySGVscGVyOjpjYW5BY2N1bXVsYXRlV3JpdGUoQ29udGV4dFZrICpjb250ZXh0VmssIFZrQWNj
ZXNzRmxhZ3Mgd3JpdGVBCiB7CiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIHN0YXJ0IGEgbmV3IGNv
bW1hbmQgYnVmZmVyIHdoZW4gd2UgbmVlZCBhIG5ldyBiYXJyaWVyLgogICAgIC8vIEZvciBzaW1w
bGljaXR5J3Mgc2FrZSBmb3Igbm93IHdlIGFsd2F5cyBzdGFydCBhIG5ldyBjb21tYW5kIGJ1ZmZl
ci4KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBSZS11c2UgdGhlIGNvbW1hbmQgYnVmZmVyLiBodHRw
Oi8vYW5nbGVidWcuY29tLzQwMjkKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBSZS11c2UgdGhlIGNv
bW1hbmQgYnVmZmVyLiBodHRwOi8vYW5nbGVidWcuY29tLzQ0MjkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTE2ODcsOSArMTczNiw5IEBAIHZvaWQgQnVmZmVySGVscGVyOjp1cGRhdGVXcml0
ZUJhcnJpZXIoVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUsCiAKIC8vIEltYWdlSGVscGVy
IGltcGxlbWVudGF0aW9uLgogSW1hZ2VIZWxwZXI6OkltYWdlSGVscGVyKCkKLSAgICA6IENvbW1h
bmRHcmFwaFJlc291cmNlKENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6SW1hZ2UpLAotICAgICAg
bUZvcm1hdChudWxscHRyKSwKKyAgICA6IG1Gb3JtYXQobnVsbHB0ciksCiAgICAgICBtU2FtcGxl
cygxKSwKKyAgICAgIG1TZXJpYWwocng6OmtaZXJvU2VyaWFsKSwKICAgICAgIG1DdXJyZW50TGF5
b3V0KEltYWdlTGF5b3V0OjpVbmRlZmluZWQpLAogICAgICAgbUN1cnJlbnRRdWV1ZUZhbWlseUlu
ZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSksCiAgICAgICBtQmFzZUxl
dmVsKDApLApAQCAtMTY5OSwxMiArMTc0OCwxMiBAQCBJbWFnZUhlbHBlcjo6SW1hZ2VIZWxwZXIo
KQoge30KIAogSW1hZ2VIZWxwZXI6OkltYWdlSGVscGVyKEltYWdlSGVscGVyICYmb3RoZXIpCi0g
ICAgOiBDb21tYW5kR3JhcGhSZXNvdXJjZShDb21tYW5kR3JhcGhSZXNvdXJjZVR5cGU6OkltYWdl
KSwKLSAgICAgIG1JbWFnZShzdGQ6Om1vdmUob3RoZXIubUltYWdlKSksCisgICAgOiBtSW1hZ2Uo
c3RkOjptb3ZlKG90aGVyLm1JbWFnZSkpLAogICAgICAgbURldmljZU1lbW9yeShzdGQ6Om1vdmUo
b3RoZXIubURldmljZU1lbW9yeSkpLAogICAgICAgbUV4dGVudHMob3RoZXIubUV4dGVudHMpLAog
ICAgICAgbUZvcm1hdChvdGhlci5tRm9ybWF0KSwKICAgICAgIG1TYW1wbGVzKG90aGVyLm1TYW1w
bGVzKSwKKyAgICAgIG1TZXJpYWwob3RoZXIubVNlcmlhbCksCiAgICAgICBtQ3VycmVudExheW91
dChvdGhlci5tQ3VycmVudExheW91dCksCiAgICAgICBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXgo
b3RoZXIubUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4KSwKICAgICAgIG1CYXNlTGV2ZWwob3RoZXIu
bUJhc2VMZXZlbCksCkBAIC0xNzIwLDYgKzE3NjksNyBAQCBJbWFnZUhlbHBlcjo6SW1hZ2VIZWxw
ZXIoSW1hZ2VIZWxwZXIgJiZvdGhlcikKICAgICBvdGhlci5tTWF4TGV2ZWwgICAgICA9IDA7CiAg
ICAgb3RoZXIubUxheWVyQ291bnQgICAgPSAwOwogICAgIG90aGVyLm1MZXZlbENvdW50ICAgID0g
MDsKKyAgICBvdGhlci5tU2VyaWFsICAgICAgICA9IHJ4OjprWmVyb1NlcmlhbDsKIH0KIAogSW1h
Z2VIZWxwZXI6On5JbWFnZUhlbHBlcigpCkBAIC0xNzQ3LDYgKzE3OTcsNyBAQCBhbmdsZTo6UmVz
dWx0IEltYWdlSGVscGVyOjppbml0KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IG1pcExldmVscywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGF5ZXJDb3VudCkKIHsKKyAgICBtU2VyaWFsID0gcng6Omta
ZXJvU2VyaWFsOwogICAgIHJldHVybiBpbml0RXh0ZXJuYWwoY29udGV4dCwgdGV4dHVyZVR5cGUs
IGV4dGVudHMsIGZvcm1hdCwgc2FtcGxlcywgdXNhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBJbWFnZUxheW91dDo6VW5kZWZpbmVkLCBudWxscHRyLCBiYXNlTGV2ZWwsIG1heExldmVsLCBt
aXBMZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckNvdW50KTsKQEAgLTE4MDgs
NiArMTg1OSw3IEBAIGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OmluaXRFeHRlcm5hbChDb250
ZXh0ICpjb250ZXh0LAogCiB2b2lkIEltYWdlSGVscGVyOjpyZWxlYXNlSW1hZ2UoUmVuZGVyZXJW
ayAqcmVuZGVyZXIpCiB7CisgICAgbVNlcmlhbCA9IHJ4OjprWmVyb1NlcmlhbDsKICAgICByZW5k
ZXJlci0+Y29sbGVjdEdhcmJhZ2VBbmRSZWluaXQoJm1Vc2UsICZtSW1hZ2UsICZtRGV2aWNlTWVt
b3J5KTsKIH0KIApAQCAtMTgyNywxMyArMTg3OSw2OSBAQCB2b2lkIEltYWdlSGVscGVyOjpyZXNl
dEltYWdlV2Vha1JlZmVyZW5jZSgpCiAgICAgbUltYWdlLnJlc2V0KCk7CiB9CiAKK2FuZ2xlOjpS
ZXN1bHQgSW1hZ2VIZWxwZXI6OmluaXRpYWxpemVOb25aZXJvTWVtb3J5KENvbnRleHQgKmNvbnRl
eHQsIFZrRGV2aWNlU2l6ZSBzaXplKQoreworICAgIC8vIFRoZSBzdGFnaW5nIGJ1ZmZlciBtZW1v
cnkgaXMgbm9uLXplcm8taW5pdGlhbGl6ZWQgaW4gJ2luaXQnLgorICAgIHZrOjpTdGFnaW5nQnVm
ZmVyIHN0YWdpbmdCdWZmZXI7CisgICAgQU5HTEVfVFJZKHN0YWdpbmdCdWZmZXIuaW5pdChjb250
ZXh0LCBzaXplLCB2azo6U3RhZ2luZ1VzYWdlOjpXcml0ZSkpOworCisgICAgUmVuZGVyZXJWayAq
cmVuZGVyZXIgPSBjb250ZXh0LT5nZXRSZW5kZXJlcigpOworCisgICAgdms6OlByaW1hcnlDb21t
YW5kQnVmZmVyIGNvbW1hbmRCdWZmZXI7CisgICAgQU5HTEVfVFJZKHJlbmRlcmVyLT5nZXRDb21t
YW5kQnVmZmVyT25lT2ZmKGNvbnRleHQsICZjb21tYW5kQnVmZmVyKSk7CisKKyAgICAvLyBRdWV1
ZSBhIERNQSBjb3B5LgorICAgIGZvcmNlQ2hhbmdlTGF5b3V0QW5kUXVldWUoZ2V0QXNwZWN0Rmxh
Z3MoKSwgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWFuZEJ1ZmZlcik7CisKKyAgICBW
a0J1ZmZlckltYWdlQ29weSBjb3B5UmVnaW9uICAgICAgICAgICA9IHt9OworICAgIGNvcHlSZWdp
b24uaW1hZ2VFeHRlbnQgICAgICAgICAgICAgICAgID0gbUV4dGVudHM7CisgICAgY29weVJlZ2lv
bi5pbWFnZVN1YnJlc291cmNlLmFzcGVjdE1hc2sgPSBnZXRBc3BlY3RGbGFncygpOworICAgIGNv
cHlSZWdpb24uaW1hZ2VTdWJyZXNvdXJjZS5sYXllckNvdW50ID0gMTsKKworICAgIGNvbW1hbmRC
dWZmZXIuY29weUJ1ZmZlclRvSW1hZ2Uoc3RhZ2luZ0J1ZmZlci5nZXRCdWZmZXIoKS5nZXRIYW5k
bGUoKSwgbUltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfSU1B
R0VfTEFZT1VUX1RSQU5TRkVSX0RTVF9PUFRJTUFMLCAxLCAmY29weVJlZ2lvbik7CisKKyAgICBB
TkdMRV9WS19UUlkoY29udGV4dCwgY29tbWFuZEJ1ZmZlci5lbmQoKSk7CisKKyAgICBTZXJpYWwg
c2VyaWFsOworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+cXVldWVTdWJtaXRPbmVPZmYoY29udGV4
dCwgc3RkOjptb3ZlKGNvbW1hbmRCdWZmZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWdsOjpDb250ZXh0UHJpb3JpdHk6Ok1lZGl1bSwgJnNlcmlhbCkpOwor
CisgICAgc3RhZ2luZ0J1ZmZlci5jb2xsZWN0R2FyYmFnZShyZW5kZXJlciwgc2VyaWFsKTsKKyAg
ICBtVXNlLnVwZGF0ZVNlcmlhbE9uZU9mZihzZXJpYWwpOworCisgICAgcmV0dXJuIGFuZ2xlOjpS
ZXN1bHQ6OkNvbnRpbnVlOworfQorCiBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjppbml0TWVt
b3J5KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IE1lbW9yeVByb3BlcnRpZXMgJm1lbW9yeVByb3BlcnRpZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBmbGFncykK
IHsKICAgICAvLyBUT0RPKGptYWRpbGwpOiBNZW1vcnkgc3ViLWFsbG9jYXRpb24uIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMjE2MgotICAgIEFOR0xFX1RSWShBbGxvY2F0ZUltYWdlTWVtb3J5KGNvbnRl
eHQsIGZsYWdzLCBudWxscHRyLCAmbUltYWdlLCAmbURldmljZU1lbW9yeSkpOworICAgIFZrRGV2
aWNlU2l6ZSBzaXplOworICAgIEFOR0xFX1RSWShBbGxvY2F0ZUltYWdlTWVtb3J5KGNvbnRleHQs
IGZsYWdzLCBudWxscHRyLCAmbUltYWdlLCAmbURldmljZU1lbW9yeSwgJnNpemUpKTsKICAgICBt
Q3VycmVudFF1ZXVlRmFtaWx5SW5kZXggPSBjb250ZXh0LT5nZXRSZW5kZXJlcigpLT5nZXRRdWV1
ZUZhbWlseUluZGV4KCk7CisKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciA9IGNvbnRleHQtPmdl
dFJlbmRlcmVyKCk7CisgICAgaWYgKHJlbmRlcmVyLT5nZXRGZWF0dXJlcygpLmFsbG9jYXRlTm9u
WmVyb01lbW9yeS5lbmFibGVkKQorICAgIHsKKyAgICAgICAgLy8gQ2FuJ3QgbWFwIHRoZSBtZW1v
cnkuIFVzZSBhIHN0YWdpbmcgcmVzb3VyY2UuCisgICAgICAgIGlmICgoZmxhZ3MgJiBWS19NRU1P
UllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gT25seSBjdXJyZW50bHkgd29ya3Mgd2l0aCBzaW5nbGUtc2FtcGxlZCBjb2xvciBpbWFn
ZXMgd2l0aCBvbmUgbWlwL2xheWVyLgorICAgICAgICAgICAgaWYgKG1MZXZlbENvdW50ID09IDEg
JiYgbUxheWVyQ291bnQgPT0gMSAmJgorICAgICAgICAgICAgICAgIGdldEFzcGVjdEZsYWdzKCkg
PT0gVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCAmJiBtU2FtcGxlcyA9PSAxKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEFOR0xFX1RSWShpbml0aWFsaXplTm9uWmVyb01lbW9yeShj
b250ZXh0LCBzaXplKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwog
fQogCkBAIC0xOTEyLDYgKzIwMjAsNyBAQCB2b2lkIEltYWdlSGVscGVyOjpkZXN0cm95KFZrRGV2
aWNlIGRldmljZSkKICAgICBtQ3VycmVudExheW91dCA9IEltYWdlTGF5b3V0OjpVbmRlZmluZWQ7
CiAgICAgbUxheWVyQ291bnQgICAgPSAwOwogICAgIG1MZXZlbENvdW50ICAgID0gMDsKKyAgICBt
U2VyaWFsICAgICAgICA9IHJ4OjprWmVyb1NlcmlhbDsKIH0KIAogdm9pZCBJbWFnZUhlbHBlcjo6
aW5pdDJEV2Vha1JlZmVyZW5jZShWa0ltYWdlIGhhbmRsZSwKQEAgLTIwMTAsMTggKzIxMTksNiBA
QCBib29sIEltYWdlSGVscGVyOjppc0xheW91dENoYW5nZU5lY2Vzc2FyeShJbWFnZUxheW91dCBu
ZXdMYXlvdXQpIGNvbnN0CiAgICAgcmV0dXJuICFzYW1lTGF5b3V0QW5kTm9OZWVkRm9yQmFycmll
cjsKIH0KIAotdm9pZCBJbWFnZUhlbHBlcjo6Y2hhbmdlTGF5b3V0KFZrSW1hZ2VBc3BlY3RGbGFn
cyBhc3BlY3RNYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlTGF5b3V0
IG5ld0xheW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVy
ICpjb21tYW5kQnVmZmVyKQotewotICAgIGlmICghaXNMYXlvdXRDaGFuZ2VOZWNlc3NhcnkobmV3
TGF5b3V0KSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3JjZUNoYW5n
ZUxheW91dEFuZFF1ZXVlKGFzcGVjdE1hc2ssIG5ld0xheW91dCwgbUN1cnJlbnRRdWV1ZUZhbWls
eUluZGV4LCBjb21tYW5kQnVmZmVyKTsKLX0KLQogdm9pZCBJbWFnZUhlbHBlcjo6Y2hhbmdlTGF5
b3V0QW5kUXVldWUoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUxheW91dCBuZXdMYXlvdXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuZXdRdWV1ZUZhbWlseUlu
ZGV4LApAQCAtMjA1MSwxMCArMjE0OCwxMiBAQCB2b2lkIEltYWdlSGVscGVyOjpzZXRCYXNlQW5k
TWF4TGV2ZWxzKHVpbnQzMl90IGJhc2VMZXZlbCwgdWludDMyX3QgbWF4TGV2ZWwpCiAgICAgbU1h
eExldmVsICA9IG1heExldmVsOwogfQogCisvLyBHZW5lcmFsaXplZCB0byBhY2NlcHQgYm90aCAi
cHJpbWFyeSIgYW5kICJzZWNvbmRhcnkiIGNvbW1hbmQgYnVmZmVycy4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBDb21tYW5kQnVmZmVyVD4KIHZvaWQgSW1hZ2VIZWxwZXI6OmZvcmNlQ2hhbmdlTGF5b3V0
QW5kUXVldWUoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlTGF5b3V0IG5ld0xheW91dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmV3UXVldWVG
YW1pbHlJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlclQgKmNvbW1hbmRCdWZmZXIpCiB7CiAgICAg
Y29uc3QgSW1hZ2VNZW1vcnlCYXJyaWVyRGF0YSAmdHJhbnNpdGlvbkZyb20gPSBrSW1hZ2VNZW1v
cnlCYXJyaWVyRGF0YVttQ3VycmVudExheW91dF07CiAgICAgY29uc3QgSW1hZ2VNZW1vcnlCYXJy
aWVyRGF0YSAmdHJhbnNpdGlvblRvICAgPSBrSW1hZ2VNZW1vcnlCYXJyaWVyRGF0YVtuZXdMYXlv
dXRdOwpAQCAtMjA2OSw3ICsyMTY4LDcgQEAgdm9pZCBJbWFnZUhlbHBlcjo6Zm9yY2VDaGFuZ2VM
YXlvdXRBbmRRdWV1ZShWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0TWFzaywKICAgICBpbWFnZU1l
bW9yeUJhcnJpZXIuZHN0UXVldWVGYW1pbHlJbmRleCAgPSBuZXdRdWV1ZUZhbWlseUluZGV4Owog
ICAgIGltYWdlTWVtb3J5QmFycmllci5pbWFnZSAgICAgICAgICAgICAgICA9IG1JbWFnZS5nZXRI
YW5kbGUoKTsKIAotICAgIC8vIFRPRE8oam1hZGlsbCk6IElzIHRoaXMgbmVlZGVkIGZvciBtaXBw
ZWQvbGF5ZXIgaW1hZ2VzPworICAgIC8vIFRyYW5zaXRpb24gdGhlIHdob2xlIHJlc291cmNlLgog
ICAgIGltYWdlTWVtb3J5QmFycmllci5zdWJyZXNvdXJjZVJhbmdlLmFzcGVjdE1hc2sgICAgID0g
YXNwZWN0TWFzazsKICAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc3VicmVzb3VyY2VSYW5nZS5iYXNl
TWlwTGV2ZWwgICA9IDA7CiAgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnN1YnJlc291cmNlUmFuZ2Uu
bGV2ZWxDb3VudCAgICAgPSBtTGV2ZWxDb3VudDsKQEAgLTIwNzcsMTEgKzIxNzYsMTcgQEAgdm9p
ZCBJbWFnZUhlbHBlcjo6Zm9yY2VDaGFuZ2VMYXlvdXRBbmRRdWV1ZShWa0ltYWdlQXNwZWN0Rmxh
Z3MgYXNwZWN0TWFzaywKICAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc3VicmVzb3VyY2VSYW5nZS5s
YXllckNvdW50ICAgICA9IG1MYXllckNvdW50OwogCiAgICAgY29tbWFuZEJ1ZmZlci0+aW1hZ2VC
YXJyaWVyKHRyYW5zaXRpb25Gcm9tLnNyY1N0YWdlTWFzaywgdHJhbnNpdGlvblRvLmRzdFN0YWdl
TWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltYWdlTWVtb3J5QmFycmll
cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlTWVtb3J5QmFycmllcik7
CiAgICAgbUN1cnJlbnRMYXlvdXQgICAgICAgICAgID0gbmV3TGF5b3V0OwogICAgIG1DdXJyZW50
UXVldWVGYW1pbHlJbmRleCA9IG5ld1F1ZXVlRmFtaWx5SW5kZXg7CiB9CiAKKy8vIEV4cGxpY2l0
bHkgaW5zdGFudGlhdGUgZm9yY2VDaGFuZ2VMYXlvdXRBbmRRdWV1ZSB3aXRoIENvbW1hbmRCdWZm
ZXJIZWxwZXIuCit0ZW1wbGF0ZSB2b2lkIEltYWdlSGVscGVyOjpmb3JjZUNoYW5nZUxheW91dEFu
ZFF1ZXVlKFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RNYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUxheW91dCBuZXdMYXlvdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IG5ld1F1ZXVlRmFtaWx5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJIZWxwZXIgKmNvbW1hbmRCdWZm
ZXIpOworCiB2b2lkIEltYWdlSGVscGVyOjpjbGVhckNvbG9yKGNvbnN0IFZrQ2xlYXJDb2xvclZh
bHVlICZjb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmFzZU1p
cExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZXZlbENvdW50
LApAQCAtMjE1Nyw2ICsyMjYyLDE1IEBAIGdsOjpFeHRlbnRzIEltYWdlSGVscGVyOjpnZXRTaXpl
KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXgoMXUsIG1FeHRlbnRzLmhlaWdodCA+PiBtaXBMZXZlbCksIG1FeHRlbnRzLmRl
cHRoKTsKIH0KIAorU2VyaWFsIEltYWdlSGVscGVyOjpnZXRBc3NpZ25TZXJpYWwoQ29udGV4dFZr
ICpjb250ZXh0VmspCit7CisgICAgaWYgKG1TZXJpYWwuZ2V0VmFsdWUoKSA9PSAwKQorICAgIHsK
KyAgICAgICAgbVNlcmlhbCA9IGNvbnRleHRWay0+Z2VuZXJhdGVBdHRhY2htZW50SW1hZ2VTZXJp
YWwoKTsKKyAgICB9CisgICAgcmV0dXJuIG1TZXJpYWw7Cit9CisKIC8vIHN0YXRpYwogdm9pZCBJ
bWFnZUhlbHBlcjo6Q29weShJbWFnZUhlbHBlciAqc3JjSW1hZ2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEltYWdlSGVscGVyICpkc3RJbWFnZSwKQEAgLTIxOTIsMTQgKzIzMDYsMTQgQEAgdm9p
ZCBJbWFnZUhlbHBlcjo6Q29weShJbWFnZUhlbHBlciAqc3JjSW1hZ2UsCiBhbmdsZTo6UmVzdWx0
IEltYWdlSGVscGVyOjpnZW5lcmF0ZU1pcG1hcHNXaXRoQmxpdChDb250ZXh0VmsgKmNvbnRleHRW
aywgR0x1aW50IG1heExldmVsKQogewogICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIg
PSBudWxscHRyOwotICAgIEFOR0xFX1RSWShyZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21t
YW5kQnVmZmVyKSk7Ci0KLSAgICBjaGFuZ2VMYXlvdXQoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJ
VCwgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCBjb21tYW5kQnVmZmVyKTsKKyAgICBBTkdMRV9U
UlkoY29udGV4dFZrLT5vbkltYWdlV3JpdGUoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgSW1h
Z2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCB0aGlzKSk7CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+
ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKIAogICAg
IC8vIFdlIGFyZSBhYmxlIHRvIHVzZSBibGl0SW1hZ2Ugc2luY2UgdGhlIGltYWdlIGZvcm1hdCB3
ZSBhcmUgdXNpbmcgc3VwcG9ydHMgaXQuIFRoaXMKICAgICAvLyBpcyBhIGZhc3RlciB3YXkgd2Ug
Y2FuIGdlbmVyYXRlIHRoZSBtaXBzLgogICAgIGludDMyX3QgbWlwV2lkdGggID0gbUV4dGVudHMu
d2lkdGg7CiAgICAgaW50MzJfdCBtaXBIZWlnaHQgPSBtRXh0ZW50cy5oZWlnaHQ7CisgICAgaW50
MzJfdCBtaXBEZXB0aCAgPSBtRXh0ZW50cy5kZXB0aDsKIAogICAgIC8vIE1hbnVhbGx5IG1hbmFn
ZSB0aGUgaW1hZ2UgbWVtb3J5IGJhcnJpZXIgYmVjYXVzZSBpdCB1c2VzIGEgbG90IG1vcmUgcGFy
YW1ldGVycyB0aGFuIG91cgogICAgIC8vIHVzdWFsIG9uZS4KQEAgLTIyMTcsNiArMjMzMSw3IEBA
IGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OmdlbmVyYXRlTWlwbWFwc1dpdGhCbGl0KENvbnRl
eHRWayAqY29udGV4dFZrLCBHTHVpbnQKICAgICB7CiAgICAgICAgIGludDMyX3QgbmV4dE1pcFdp
ZHRoICA9IHN0ZDo6bWF4PGludDMyX3Q+KDEsIG1pcFdpZHRoID4+IDEpOwogICAgICAgICBpbnQz
Ml90IG5leHRNaXBIZWlnaHQgPSBzdGQ6Om1heDxpbnQzMl90PigxLCBtaXBIZWlnaHQgPj4gMSk7
CisgICAgICAgIGludDMyX3QgbmV4dE1pcERlcHRoICA9IHN0ZDo6bWF4PGludDMyX3Q+KDEsIG1p
cERlcHRoID4+IDEpOwogCiAgICAgICAgIGJhcnJpZXIuc3VicmVzb3VyY2VSYW5nZS5iYXNlTWlw
TGV2ZWwgPSBtaXBMZXZlbCAtIDE7CiAgICAgICAgIGJhcnJpZXIub2xkTGF5b3V0ICAgICAgICAg
ICAgICAgICAgICAgPSBnZXRDdXJyZW50TGF5b3V0KCk7CkBAIC0yMjI2LDE2ICsyMzQxLDE2IEBA
IGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OmdlbmVyYXRlTWlwbWFwc1dpdGhCbGl0KENvbnRl
eHRWayAqY29udGV4dFZrLCBHTHVpbnQKIAogICAgICAgICAvLyBXZSBjYW4gZG8gaXQgZm9yIGFs
bCBsYXllcnMgYXQgb25jZS4KICAgICAgICAgY29tbWFuZEJ1ZmZlci0+aW1hZ2VCYXJyaWVyKFZL
X1BJUEVMSU5FX1NUQUdFX1RSQU5TRkVSX0JJVCwgVktfUElQRUxJTkVfU1RBR0VfVFJBTlNGRVJf
QklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhcnJpZXIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFycmllcik7CiAgICAgICAgIFZrSW1h
Z2VCbGl0IGJsaXQgICAgICAgICAgICAgICAgICAgPSB7fTsKICAgICAgICAgYmxpdC5zcmNPZmZz
ZXRzWzBdICAgICAgICAgICAgICAgICA9IHswLCAwLCAwfTsKLSAgICAgICAgYmxpdC5zcmNPZmZz
ZXRzWzFdICAgICAgICAgICAgICAgICA9IHttaXBXaWR0aCwgbWlwSGVpZ2h0LCAxfTsKKyAgICAg
ICAgYmxpdC5zcmNPZmZzZXRzWzFdICAgICAgICAgICAgICAgICA9IHttaXBXaWR0aCwgbWlwSGVp
Z2h0LCBtaXBEZXB0aH07CiAgICAgICAgIGJsaXQuc3JjU3VicmVzb3VyY2UuYXNwZWN0TWFzayAg
ICAgPSBWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklUOwogICAgICAgICBibGl0LnNyY1N1YnJlc291
cmNlLm1pcExldmVsICAgICAgID0gbWlwTGV2ZWwgLSAxOwogICAgICAgICBibGl0LnNyY1N1YnJl
c291cmNlLmJhc2VBcnJheUxheWVyID0gMDsKICAgICAgICAgYmxpdC5zcmNTdWJyZXNvdXJjZS5s
YXllckNvdW50ICAgICA9IG1MYXllckNvdW50OwogICAgICAgICBibGl0LmRzdE9mZnNldHNbMF0g
ICAgICAgICAgICAgICAgID0gezAsIDAsIDB9OwotICAgICAgICBibGl0LmRzdE9mZnNldHNbMV0g
ICAgICAgICAgICAgICAgID0ge25leHRNaXBXaWR0aCwgbmV4dE1pcEhlaWdodCwgMX07CisgICAg
ICAgIGJsaXQuZHN0T2Zmc2V0c1sxXSAgICAgICAgICAgICAgICAgPSB7bmV4dE1pcFdpZHRoLCBu
ZXh0TWlwSGVpZ2h0LCBuZXh0TWlwRGVwdGh9OwogICAgICAgICBibGl0LmRzdFN1YnJlc291cmNl
LmFzcGVjdE1hc2sgICAgID0gVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVDsKICAgICAgICAgYmxp
dC5kc3RTdWJyZXNvdXJjZS5taXBMZXZlbCAgICAgICA9IG1pcExldmVsOwogICAgICAgICBibGl0
LmRzdFN1YnJlc291cmNlLmJhc2VBcnJheUxheWVyID0gMDsKQEAgLTIyNDMsNiArMjM1OCw3IEBA
IGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OmdlbmVyYXRlTWlwbWFwc1dpdGhCbGl0KENvbnRl
eHRWayAqY29udGV4dFZrLCBHTHVpbnQKIAogICAgICAgICBtaXBXaWR0aCAgPSBuZXh0TWlwV2lk
dGg7CiAgICAgICAgIG1pcEhlaWdodCA9IG5leHRNaXBIZWlnaHQ7CisgICAgICAgIG1pcERlcHRo
ICA9IG5leHRNaXBEZXB0aDsKIAogICAgICAgICBib29sIGZvcm1hdFN1cHBvcnRzTGluZWFyRmls
dGVyaW5nID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpLT5oYXNJbWFnZUZvcm1hdEZlYXR1cmVC
aXRzKAogICAgICAgICAgICAgZ2V0Rm9ybWF0KCkudmtJbWFnZUZvcm1hdCwgVktfRk9STUFUX0ZF
QVRVUkVfU0FNUExFRF9JTUFHRV9GSUxURVJfTElORUFSX0JJVCk7CkBAIC0yMjYxLDcgKzIzNzcs
NyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpnZW5lcmF0ZU1pcG1hcHNXaXRoQmxpdChD
b250ZXh0VmsgKmNvbnRleHRWaywgR0x1aW50CiAKICAgICAvLyBXZSBjYW4gZG8gaXQgZm9yIGFs
bCBsYXllcnMgYXQgb25jZS4KICAgICBjb21tYW5kQnVmZmVyLT5pbWFnZUJhcnJpZXIoVktfUElQ
RUxJTkVfU1RBR0VfVFJBTlNGRVJfQklULCBWS19QSVBFTElORV9TVEFHRV9UUkFOU0ZFUl9CSVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZiYXJyaWVyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYmFycmllcik7CiAgICAgLy8gVGhpcyBpcyBqdXN0IGNoYW5n
aW5nIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgaW1hZ2UgaGVscGVyIHNvIHRoYXQgdGhlIG5l
eHQgY2FsbAogICAgIC8vIHRvIGNoYW5nZUxheW91dCB3aWxsIHVzZSB0aGlzIGxheW91dCBhcyB0
aGUgIm9sZExheW91dCIgYXJndW1lbnQuCiAgICAgbUN1cnJlbnRMYXlvdXQgPSBJbWFnZUxheW91
dDo6VHJhbnNmZXJTcmM7CkBAIC0yMjc0LDggKzIzOTAsNiBAQCB2b2lkIEltYWdlSGVscGVyOjpy
ZXNvbHZlKEltYWdlSGVscGVyICpkZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBDb21t
YW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKQogewogICAgIEFTU0VSVChtQ3VycmVudExheW91dCA9
PSBJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMpOwotICAgIGRlc3QtPmNoYW5nZUxheW91dChyZWdp
b24uZHN0U3VicmVzb3VyY2UuYXNwZWN0TWFzaywgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LCBj
b21tYW5kQnVmZmVyKTsKLQogICAgIGNvbW1hbmRCdWZmZXItPnJlc29sdmVJbWFnZShnZXRJbWFn
ZSgpLCBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfU1JDX09QVElNQUwsIGRlc3QtPmdldEltYWdl
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9UUkFO
U0ZFUl9EU1RfT1BUSU1BTCwgMSwgJnJlZ2lvbik7CiB9CkBAIC0yNzcxLDEwICsyODg1LDExIEBA
IHZvaWQgSW1hZ2VIZWxwZXI6OnN0YWdlU3VicmVzb3VyY2VVcGRhdGVGcm9tSW1hZ2UoSW1hZ2VI
ZWxwZXIgKmltYWdlLAogICAgIG1TdWJyZXNvdXJjZVVwZGF0ZXMuZW1wbGFjZV9iYWNrKGltYWdl
LCBjb3B5VG9JbWFnZSk7CiB9CiAKLXZvaWQgSW1hZ2VIZWxwZXI6OnN0YWdlU3VicmVzb3VyY2VS
b2J1c3RDbGVhcihjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmZm9ybWF0
KQordm9pZCBJbWFnZUhlbHBlcjo6c3RhZ2VTdWJyZXNvdXJjZVJvYnVzdENsZWFyKGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgRm9ybWF0ICZmb3JtYXQpCiB7Ci0gICAgc3RhZ2VT
dWJyZXNvdXJjZUNsZWFyKGluZGV4LCBmb3JtYXQsIGtXZWJHTEluaXRDb2xvclZhbHVlLCBrV2Vi
R0xJbml0RGVwdGhTdGVuY2lsVmFsdWUpOworICAgIFZrQ2xlYXJDb2xvclZhbHVlIGluaXRWYWx1
ZSA9CisgICAgICAgIGZvcm1hdC5oYXNFbXVsYXRlZEltYWdlQ2hhbm5lbHMoKSA/IGtFbXVsYXRl
ZEluaXRDb2xvclZhbHVlIDoga1dlYkdMSW5pdENvbG9yVmFsdWU7CisgICAgc3RhZ2VTdWJyZXNv
dXJjZUNsZWFyKGluZGV4LCBmb3JtYXQuaW50ZW5kZWRGb3JtYXQoKSwgaW5pdFZhbHVlLCBrV2Vi
R0xJbml0RGVwdGhTdGVuY2lsVmFsdWUpOwogfQogCiB2b2lkIEltYWdlSGVscGVyOjpzdGFnZVN1
YnJlc291cmNlRW11bGF0ZWRDbGVhcihjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCkBAIC0y
ODUyLDcgKzI5NjcsNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpmbHVzaFN0YWdlZFVw
ZGF0ZXMoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAgdWludDY0X3Qgc3VicmVzb3VyY2VVcGxv
YWRzSW5Qcm9ncmVzcyAgICAgICAgICAgID0gMDsKIAogICAgIC8vIFN0YXJ0IGluIFRyYW5zZmVy
RHN0LgotICAgIGNoYW5nZUxheW91dChhc3BlY3RGbGFncywgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVy
RHN0LCBjb21tYW5kQnVmZmVyKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlV3Jp
dGUoYXNwZWN0RmxhZ3MsIEltYWdlTGF5b3V0OjpUcmFuc2ZlckRzdCwgdGhpcykpOwogCiAgICAg
Zm9yIChTdWJyZXNvdXJjZVVwZGF0ZSAmdXBkYXRlIDogbVN1YnJlc291cmNlVXBkYXRlcykKICAg
ICB7CkBAIC0yOTUwLDE1ICszMDY1LDE2IEBAIGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OmZs
dXNoU3RhZ2VkVXBkYXRlcyhDb250ZXh0VmsgKmNvbnRleHRWaywKIAogICAgICAgICAgICAgQnVm
ZmVySGVscGVyICpjdXJyZW50QnVmZmVyID0gYnVmZmVyVXBkYXRlLmJ1ZmZlckhlbHBlcjsKICAg
ICAgICAgICAgIEFTU0VSVChjdXJyZW50QnVmZmVyICYmIGN1cnJlbnRCdWZmZXItPnZhbGlkKCkp
OwotICAgICAgICAgICAgY3VycmVudEJ1ZmZlci0+b25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZr
LT5nZXRSZXNvdXJjZVVzZUxpc3QoKSk7CisKKyAgICAgICAgICAgIEFOR0xFX1RSWShjb250ZXh0
VmstPm9uQnVmZmVyUmVhZChWS19BQ0NFU1NfVFJBTlNGRVJfUkVBRF9CSVQsIGN1cnJlbnRCdWZm
ZXIpKTsKIAogICAgICAgICAgICAgY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZlclRvSW1hZ2UoY3Vy
cmVudEJ1ZmZlci0+Z2V0QnVmZmVyKCkuZ2V0SGFuZGxlKCksIG1JbWFnZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEN1cnJlbnRMYXlvdXQoKSwgMSwg
JnVwZGF0ZS5idWZmZXIuY29weVJlZ2lvbik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg
ICAgICB7Ci0gICAgICAgICAgICB1cGRhdGUuaW1hZ2UuaW1hZ2UtPmNoYW5nZUxheW91dChhc3Bl
Y3RGbGFncywgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyU3JjLCBjb21tYW5kQnVmZmVyKTsKLSAgICAg
ICAgICAgIHVwZGF0ZS5pbWFnZS5pbWFnZS0+YWRkUmVhZERlcGVuZGVuY3koY29udGV4dFZrLCB0
aGlzKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWSgKKyAgICAgICAgICAgICAgICBjb250ZXh0Vmst
Pm9uSW1hZ2VSZWFkKGFzcGVjdEZsYWdzLCBJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMsIHVwZGF0
ZS5pbWFnZS5pbWFnZSkpOwogCiAgICAgICAgICAgICBjb21tYW5kQnVmZmVyLT5jb3B5SW1hZ2Uo
dXBkYXRlLmltYWdlLmltYWdlLT5nZXRJbWFnZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVwZGF0ZS5pbWFnZS5pbWFnZS0+Z2V0Q3VycmVudExheW91dCgpLCBtSW1h
Z2UsCkBAIC0yOTgzLDcgKzMwOTksNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpmbHVz
aEFsbFN0YWdlZFVwZGF0ZXMoQ29udGV4dFZrICpjb250ZXh0VmspCiB7CiAgICAgLy8gQ2xlYXIg
dGhlIGltYWdlLgogICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBudWxscHRyOwot
ICAgIEFOR0xFX1RSWShyZWNvcmRDb21tYW5kcyhjb250ZXh0VmssICZjb21tYW5kQnVmZmVyKSk7
CisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+ZW5kUmVuZGVyUGFzc0FuZEdldENvbW1hbmRCdWZm
ZXIoJmNvbW1hbmRCdWZmZXIpKTsKICAgICByZXR1cm4gZmx1c2hTdGFnZWRVcGRhdGVzKGNvbnRl
eHRWaywgMCwgbUxldmVsQ291bnQsIDAsIG1MYXllckNvdW50LCBjb21tYW5kQnVmZmVyKTsKIH0K
IApAQCAtMzA2MCwxNyArMzE3NiwxNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpjb3B5
SW1hZ2VEYXRhVG9CdWZmZXIoQ29udGV4dFZrICpjb250ZXh0VmssCiAKICAgICAqYnVmZmVyU2l6
ZSA9IHNvdXJjZUFyZWEud2lkdGggKiBzb3VyY2VBcmVhLmhlaWdodCAqIHNvdXJjZUFyZWEuZGVw
dGggKiBwaXhlbEJ5dGVzICogbGF5ZXJDb3VudDsKIAotICAgIENvbW1hbmRCdWZmZXIgKmNvbW1h
bmRCdWZmZXIgPSBudWxscHRyOwotICAgIEFOR0xFX1RSWShyZWNvcmRDb21tYW5kcyhjb250ZXh0
VmssICZjb21tYW5kQnVmZmVyKSk7Ci0KLSAgICAvLyBUcmFuc2l0aW9uIHRoZSBpbWFnZSB0byBy
ZWFkYWJsZSBsYXlvdXQKICAgICBjb25zdCBWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0RmxhZ3Mg
PSBnZXRBc3BlY3RGbGFncygpOwotICAgIGNoYW5nZUxheW91dChhc3BlY3RGbGFncywgSW1hZ2VM
YXlvdXQ6OlRyYW5zZmVyU3JjLCBjb21tYW5kQnVmZmVyKTsKIAogICAgIC8vIEFsbG9jYXRlIHN0
YWdpbmcgYnVmZmVyIGRhdGEKICAgICBBTkdMRV9UUlkoYWxsb2NhdGVTdGFnaW5nTWVtb3J5KGNv
bnRleHRWaywgKmJ1ZmZlclNpemUsIG91dERhdGFQdHIsIGJ1ZmZlck91dCwgYnVmZmVyT2Zmc2V0
c091dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpKTsKIAor
ICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBudWxscHRyOworICAgIEFOR0xFX1RS
WShjb250ZXh0VmstPm9uSW1hZ2VSZWFkKGFzcGVjdEZsYWdzLCBJbWFnZUxheW91dDo6VHJhbnNm
ZXJTcmMsIHRoaXMpKTsKKyAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkJ1ZmZlcldyaXRlKFZL
X0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQsICpidWZmZXJPdXQpKTsKKyAgICBBTkdMRV9UUlko
Y29udGV4dFZrLT5lbmRSZW5kZXJQYXNzQW5kR2V0Q29tbWFuZEJ1ZmZlcigmY29tbWFuZEJ1ZmZl
cikpOworCiAgICAgVmtCdWZmZXJJbWFnZUNvcHkgcmVnaW9uc1syXSA9IHt9OwogICAgIC8vIERl
ZmF1bHQgdG8gbm9uLWNvbWJpbmVkIERTIGNhc2UKICAgICByZWdpb25zWzBdLmJ1ZmZlck9mZnNl
dCAgICAgICAgICAgICAgICAgICAgPSAoKmJ1ZmZlck9mZnNldHNPdXQpWzBdOwpAQCAtMzE2OCwx
OSArMzI4NCwzMyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpyZWFkUGl4ZWxzRm9yR2V0
SW1hZ2UoQ29udGV4dFZrICpjb250ZXh0VmssCiB7CiAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAm
YW5nbGVGb3JtYXQgPSBHZXRGb3JtYXRGcm9tRm9ybWF0VHlwZShmb3JtYXQsIHR5cGUpOwogCi0g
ICAgLy8gRGVwdGgvc3RlbmNpbCByZWFkYmFjayBpcyBub3QgeWV0IGltcGxlbWVudGVkLgotICAg
IC8vIFRPRE8oaHR0cDovL2FuZ2xlYnVnLmNvbS80MDU4KTogRGVwdGgvc3RlbmNpbCByZWFkYmFj
ay4KLSAgICBpZiAoYW5nbGVGb3JtYXQuZGVwdGhCaXRzID4gMCB8fCBhbmdsZUZvcm1hdC5zdGVu
Y2lsQml0cyA+IDApCisgICAgVmtJbWFnZUFzcGVjdEZsYWdCaXRzIGFzcGVjdEZsYWdzID0ge307
CisgICAgaWYgKGFuZ2xlRm9ybWF0LnJlZEJpdHMgPiAwIHx8IGFuZ2xlRm9ybWF0LmJsdWVCaXRz
ID4gMCB8fCBhbmdsZUZvcm1hdC5ncmVlbkJpdHMgPiAwIHx8CisgICAgICAgIGFuZ2xlRm9ybWF0
LmFscGhhQml0cyA+IDApCiAgICAgewotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgICAg
IHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKKyAgICAgICAgYXNwZWN0RmxhZ3MgPSBW
S19JTUFHRV9BU1BFQ1RfQ09MT1JfQklUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBpZiAoYW5nbGVGb3JtYXQuZGVwdGhCaXRzID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
YXNwZWN0RmxhZ3MgPSBWS19JTUFHRV9BU1BFQ1RfREVQVEhfQklUOworICAgICAgICB9CisgICAg
ICAgIGlmIChhbmdsZUZvcm1hdC5zdGVuY2lsQml0cyA+IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChhbmdsZUZvcm1hdC5kZXB0aEJpdHMgPT0gMCk7CisgICAgICAgICAgICBhc3Bl
Y3RGbGFncyA9IFZLX0lNQUdFX0FTUEVDVF9TVEVOQ0lMX0JJVDsKKyAgICAgICAgfQogICAgIH0K
IAorICAgIEFTU0VSVChhc3BlY3RGbGFncyAhPSAwKTsKKwogICAgIFBhY2tQaXhlbHNQYXJhbXMg
cGFyYW1zOwogICAgIEdMdWludCBvdXRwdXRTa2lwQnl0ZXMgPSAwOwogCiAgICAgdWludDMyX3Qg
d2lkdGggID0gc3RkOjptYXgoMXUsIG1FeHRlbnRzLndpZHRoID4+IGxldmVsKTsKICAgICB1aW50
MzJfdCBoZWlnaHQgPSBzdGQ6Om1heCgxdSwgbUV4dGVudHMuaGVpZ2h0ID4+IGxldmVsKTsKKyAg
ICB1aW50MzJfdCBkZXB0aCAgPSBzdGQ6Om1heCgxdSwgbUV4dGVudHMuZGVwdGggPj4gbGV2ZWwp
OwogICAgIGdsOjpSZWN0YW5nbGUgYXJlYSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIEFO
R0xFX1RSWShHZXRSZWFkUGl4ZWxzUGFyYW1zKGNvbnRleHRWaywgcGFja1N0YXRlLCBwYWNrQnVm
ZmVyLCBmb3JtYXQsIHR5cGUsIGFyZWEsIGFyZWEsCkBAIC0zMTkxLDggKzMzMjEsMjYgQEAgYW5n
bGU6OlJlc3VsdCBJbWFnZUhlbHBlcjo6cmVhZFBpeGVsc0ZvckdldEltYWdlKENvbnRleHRWayAq
Y29udGV4dFZrLAogICAgIHN0YWdpbmdCdWZmZXIuZ2V0KCkuaW5pdChjb250ZXh0VmstPmdldFJl
bmRlcmVyKCksIFZLX0JVRkZFUl9VU0FHRV9UUkFOU0ZFUl9EU1RfQklULCAxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrU3RhZ2luZ0J1ZmZlclNpemUsIHRydWUpOwogCi0gICAgcmV0
dXJuIHJlYWRQaXhlbHMoY29udGV4dFZrLCBhcmVhLCBwYXJhbXMsIFZLX0lNQUdFX0FTUEVDVF9D
T0xPUl9CSVQsIGxldmVsLCBsYXllciwKLSAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDx1aW50OF90ICo+KHBpeGVscykgKyBvdXRwdXRTa2lwQnl0ZXMsICZzdGFnaW5nQnVmZmVyLmdl
dCgpKTsKKyAgICBpZiAobUV4dGVudHMuZGVwdGggPiAxKQorICAgIHsKKyAgICAgICAgLy8gRGVw
dGggPiAxIG1lYW5zIHRoaXMgaXMgYSAzRCB0ZXh0dXJlIGFuZCB3ZSBuZWVkIHRvIGNvcHkgYWxs
IGxheWVycworICAgICAgICBmb3IgKGxheWVyID0gMDsgbGF5ZXIgPCBkZXB0aDsgbGF5ZXIrKykK
KyAgICAgICAgeworICAgICAgICAgICAgQU5HTEVfVFJZKHJlYWRQaXhlbHMoY29udGV4dFZrLCBh
cmVhLCBwYXJhbXMsIGFzcGVjdEZsYWdzLCBsZXZlbCwgbGF5ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90ICo+KHBpeGVscykgKyBvdXRwdXRT
a2lwQnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhZ2luZ0J1ZmZl
ci5nZXQoKSkpOworCisgICAgICAgICAgICBvdXRwdXRTa2lwQnl0ZXMgKz0gd2lkdGggKiBoZWln
aHQgKiBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGZvcm1hdCwgdHlwZSkucGl4ZWxCeXRlczsK
KyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBTkdMRV9UUlkocmVh
ZFBpeGVscyhjb250ZXh0VmssIGFyZWEsIHBhcmFtcywgYXNwZWN0RmxhZ3MsIGxldmVsLCBsYXll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdCAqPihw
aXhlbHMpICsgb3V0cHV0U2tpcEJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
c3RhZ2luZ0J1ZmZlci5nZXQoKSkpOworICAgIH0KKworICAgIHJldHVybiBhbmdsZTo6UmVzdWx0
OjpDb250aW51ZTsKIH0KIAogYW5nbGU6OlJlc3VsdCBJbWFnZUhlbHBlcjo6cmVhZFBpeGVscyhD
b250ZXh0VmsgKmNvbnRleHRWaywKQEAgLTMyMDgsMTcgKzMzNTYsMzAgQEAgYW5nbGU6OlJlc3Vs
dCBJbWFnZUhlbHBlcjo6cmVhZFBpeGVscyhDb250ZXh0VmsgKmNvbnRleHRWaywKIAogICAgIFJl
bmRlcmVyVmsgKnJlbmRlcmVyID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpOwogCi0gICAgLy8g
Tm90ZSB0aGF0IGFsdGhvdWdoIHdlJ3JlIHJlYWRpbmcgZnJvbSB0aGUgaW1hZ2UsIHdlIG5lZWQg
dG8gdXBkYXRlIHRoZSBsYXlvdXQgYmVsb3cuCi0gICAgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1
ZmZlcjsKLSAgICBpZiAoY29udGV4dFZrLT5jb21tYW5kR3JhcGhFbmFibGVkKCkpCisgICAgLy8g
SWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBtdWx0aXNhbXBsZWQsIHdlIG5lZWQgdG8gcmVzb2x2ZSBp
dCBpbnRvIGEgdGVtcG9yYXJ5IGltYWdlIGJlZm9yZQorICAgIC8vIHBlcmZvcm1pbmcgYSByZWFk
YmFjay4KKyAgICBib29sIGlzTXVsdGlzYW1wbGVkID0gbVNhbXBsZXMgPiAxOworICAgIERldmlj
ZVNjb3BlZDxJbWFnZUhlbHBlcj4gcmVzb2x2ZWRJbWFnZShjb250ZXh0VmstPmdldERldmljZSgp
KTsKKworICAgIEltYWdlSGVscGVyICpzcmMgPSB0aGlzOworCisgICAgaWYgKGlzTXVsdGlzYW1w
bGVkKQogICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKHJlY29yZENvbW1hbmRzKGNvbnRleHRWaywg
JmNvbW1hbmRCdWZmZXIpKTsKKyAgICAgICAgQU5HTEVfVFJZKHJlc29sdmVkSW1hZ2UuZ2V0KCku
aW5pdDJEU3RhZ2luZygKKyAgICAgICAgICAgIGNvbnRleHRWaywgcmVuZGVyZXItPmdldE1lbW9y
eVByb3BlcnRpZXMoKSwgZ2w6OkV4dGVudHMoYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEpLAor
ICAgICAgICAgICAgKm1Gb3JtYXQsIFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX1NSQ19CSVQgfCBW
S19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9EU1RfQklULCAxKSk7CisgICAgICAgIHJlc29sdmVkSW1h
Z2UuZ2V0KCkucmV0YWluKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKICAgICB9
Ci0gICAgZWxzZQorCisgICAgLy8gTm90ZSB0aGF0IGFsdGhvdWdoIHdlJ3JlIHJlYWRpbmcgZnJv
bSB0aGUgaW1hZ2UsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXlvdXQgYmVsb3cuCisgICAgQ29t
bWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcjsKKyAgICBpZiAoaXNNdWx0aXNhbXBsZWQpCiAgICAg
ewotICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5nZXRPdXRzaWRlUmVuZGVyUGFzc0NvbW1h
bmRCdWZmZXIoJmNvbW1hbmRCdWZmZXIpKTsKKyAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+
b25JbWFnZVdyaXRlKGNvcHlBc3BlY3RGbGFncywgSW1hZ2VMYXlvdXQ6OlRyYW5zZmVyRHN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc29sdmVkSW1hZ2Uu
Z2V0KCkpKTsKICAgICB9Ci0gICAgY2hhbmdlTGF5b3V0KGNvcHlBc3BlY3RGbGFncywgSW1hZ2VM
YXlvdXQ6OlRyYW5zZmVyU3JjLCBjb21tYW5kQnVmZmVyKTsKKyAgICBBTkdMRV9UUlkoY29udGV4
dFZrLT5vbkltYWdlUmVhZChjb3B5QXNwZWN0RmxhZ3MsIEltYWdlTGF5b3V0OjpUcmFuc2ZlclNy
YywgdGhpcykpOworICAgIEFOR0xFX1RSWShjb250ZXh0VmstPmVuZFJlbmRlclBhc3NBbmRHZXRD
b21tYW5kQnVmZmVyKCZjb21tYW5kQnVmZmVyKSk7CiAKICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0
ICpyZWFkRm9ybWF0ID0gJm1Gb3JtYXQtPmFjdHVhbEltYWdlRm9ybWF0KCk7CiAKQEAgLTMyNDUs
MjAgKzM0MDYsOCBAQCBhbmdsZTo6UmVzdWx0IEltYWdlSGVscGVyOjpyZWFkUGl4ZWxzKENvbnRl
eHRWayAqY29udGV4dFZrLAogICAgICAgICBzcmNTdWJyZXNvdXJjZS5iYXNlQXJyYXlMYXllciA9
IDA7CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBtdWx0aXNhbXBsZWQs
IHdlIG5lZWQgdG8gcmVzb2x2ZSBpdCBpbnRvIGEgdGVtcG9yYXJ5IGltYWdlIGJlZm9yZQotICAg
IC8vIHBlcmZvcm1pbmcgYSByZWFkYmFjay4KLSAgICBib29sIGlzTXVsdGlzYW1wbGVkID0gbVNh
bXBsZXMgPiAxOwotICAgIERldmljZVNjb3BlZDxJbWFnZUhlbHBlcj4gcmVzb2x2ZWRJbWFnZShj
b250ZXh0VmstPmdldERldmljZSgpKTsKLQotICAgIEltYWdlSGVscGVyICpzcmMgPSB0aGlzOwot
CiAgICAgaWYgKGlzTXVsdGlzYW1wbGVkKQogICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKHJlc29s
dmVkSW1hZ2UuZ2V0KCkuaW5pdDJEU3RhZ2luZygKLSAgICAgICAgICAgIGNvbnRleHRWaywgcmVu
ZGVyZXItPmdldE1lbW9yeVByb3BlcnRpZXMoKSwgZ2w6OkV4dGVudHMoYXJlYS53aWR0aCwgYXJl
YS5oZWlnaHQsIDEpLAotICAgICAgICAgICAgKm1Gb3JtYXQsIFZLX0lNQUdFX1VTQUdFX1RSQU5T
RkVSX1NSQ19CSVQgfCBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9EU1RfQklULCAxKSk7Ci0gICAg
ICAgIHJlc29sdmVkSW1hZ2UuZ2V0KCkub25SZXNvdXJjZUFjY2VzcygmY29udGV4dFZrLT5nZXRS
ZXNvdXJjZVVzZUxpc3QoKSk7Ci0KICAgICAgICAgLy8gTm90ZTogcmVzb2x2ZSBvbmx5IHdvcmtz
IG9uIGNvbG9yIGltYWdlcyAobm90IGRlcHRoL3N0ZW5jaWwpLgogICAgICAgICAvLwogICAgICAg
ICAvLyBUT0RPOiBDdXJyZW50bHksIGRlcHRoL3N0ZW5jaWwgYmxpdCBjYW4gcGVyZm9ybSBhIGRl
cHRoL3N0ZW5jaWwgcmVhZGJhY2ssIGJ1dCB0aGF0IGNvZGUKQEAgLTMyNzcsNyArMzQyNiw4IEBA
IGFuZ2xlOjpSZXN1bHQgSW1hZ2VIZWxwZXI6OnJlYWRQaXhlbHMoQ29udGV4dFZrICpjb250ZXh0
VmssCiAKICAgICAgICAgcmVzb2x2ZSgmcmVzb2x2ZWRJbWFnZS5nZXQoKSwgcmVzb2x2ZVJlZ2lv
biwgY29tbWFuZEJ1ZmZlcik7CiAKLSAgICAgICAgcmVzb2x2ZWRJbWFnZS5nZXQoKS5jaGFuZ2VM
YXlvdXQoY29weUFzcGVjdEZsYWdzLCBJbWFnZUxheW91dDo6VHJhbnNmZXJTcmMsIGNvbW1hbmRC
dWZmZXIpOworICAgICAgICBBTkdMRV9UUlkoY29udGV4dFZrLT5vbkltYWdlUmVhZChjb3B5QXNw
ZWN0RmxhZ3MsIEltYWdlTGF5b3V0OjpUcmFuc2ZlclNyYywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnJlc29sdmVkSW1hZ2UuZ2V0KCkpKTsKIAogICAgICAgICAv
LyBNYWtlIHRoZSByZXNvbHZlZCBpbWFnZSB0aGUgdGFyZ2V0IG9mIGJ1ZmZlciBjb3B5LgogICAg
ICAgICBzcmMgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICZyZXNvbHZlZEltYWdlLmdldCgp
OwpAQCAtMzQwMCwxMSArMzU1MCwyMSBAQCBib29sIEltYWdlSGVscGVyOjpTdWJyZXNvdXJjZVVw
ZGF0ZTo6aXNVcGRhdGVUb0xheWVyTGV2ZWwodWludDMyX3QgbGF5ZXJJbmRleCwKIH0KIAogLy8g
RnJhbWVidWZmZXJIZWxwZXIgaW1wbGVtZW50YXRpb24uCi1GcmFtZWJ1ZmZlckhlbHBlcjo6RnJh
bWVidWZmZXJIZWxwZXIoKSA6IENvbW1hbmRHcmFwaFJlc291cmNlKENvbW1hbmRHcmFwaFJlc291
cmNlVHlwZTo6RnJhbWVidWZmZXIpCi17fQorRnJhbWVidWZmZXJIZWxwZXI6OkZyYW1lYnVmZmVy
SGVscGVyKCkgPSBkZWZhdWx0OwogCiBGcmFtZWJ1ZmZlckhlbHBlcjo6fkZyYW1lYnVmZmVySGVs
cGVyKCkgPSBkZWZhdWx0OwogCitGcmFtZWJ1ZmZlckhlbHBlcjo6RnJhbWVidWZmZXJIZWxwZXIo
RnJhbWVidWZmZXJIZWxwZXIgJiZvdGhlcikKK3sKKyAgICBtRnJhbWVidWZmZXIgPSBzdGQ6Om1v
dmUob3RoZXIubUZyYW1lYnVmZmVyKTsKK30KKworRnJhbWVidWZmZXJIZWxwZXIgJkZyYW1lYnVm
ZmVySGVscGVyOjpvcGVyYXRvcj0oRnJhbWVidWZmZXJIZWxwZXIgJiZvdGhlcikKK3sKKyAgICBz
dGQ6OnN3YXAobUZyYW1lYnVmZmVyLCBvdGhlci5tRnJhbWVidWZmZXIpOworICAgIHJldHVybiAq
dGhpczsKK30KKwogYW5nbGU6OlJlc3VsdCBGcmFtZWJ1ZmZlckhlbHBlcjo6aW5pdChDb250ZXh0
VmsgKmNvbnRleHRWaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVmtGcmFtZWJ1ZmZlckNyZWF0ZUluZm8gJmNyZWF0ZUluZm8pCiB7CkBAIC0zNDQxLDEzICsz
NjAxLDI1IEBAIHZvaWQgSW1hZ2VWaWV3SGVscGVyOjpyZWxlYXNlKFJlbmRlcmVyVmsgKnJlbmRl
cmVyKQogewogICAgIHN0ZDo6dmVjdG9yPEdhcmJhZ2VPYmplY3Q+IGdhcmJhZ2U7CiAKLSAgICBn
YXJiYWdlLmVtcGxhY2VfYmFjayhHZXRHYXJiYWdlKCZtUmVhZEltYWdlVmlldykpOwotICAgIGdh
cmJhZ2UuZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJm1GZXRjaEltYWdlVmlldykpOwotICAgIGdh
cmJhZ2UuZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJm1TdGVuY2lsUmVhZEltYWdlVmlldykpOwor
ICAgIGlmIChtUmVhZEltYWdlVmlldy52YWxpZCgpKQorICAgIHsKKyAgICAgICAgZ2FyYmFnZS5l
bXBsYWNlX2JhY2soR2V0R2FyYmFnZSgmbVJlYWRJbWFnZVZpZXcpKTsKKyAgICB9CisgICAgaWYg
KG1GZXRjaEltYWdlVmlldy52YWxpZCgpKQorICAgIHsKKyAgICAgICAgZ2FyYmFnZS5lbXBsYWNl
X2JhY2soR2V0R2FyYmFnZSgmbUZldGNoSW1hZ2VWaWV3KSk7CisgICAgfQorICAgIGlmIChtU3Rl
bmNpbFJlYWRJbWFnZVZpZXcudmFsaWQoKSkKKyAgICB7CisgICAgICAgIGdhcmJhZ2UuZW1wbGFj
ZV9iYWNrKEdldEdhcmJhZ2UoJm1TdGVuY2lsUmVhZEltYWdlVmlldykpOworICAgIH0KIAogICAg
IGZvciAoSW1hZ2VWaWV3ICZpbWFnZVZpZXcgOiBtTGV2ZWxEcmF3SW1hZ2VWaWV3cykKICAgICB7
Ci0gICAgICAgIGdhcmJhZ2UuZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJmltYWdlVmlldykpOwor
ICAgICAgICBpZiAoaW1hZ2VWaWV3LnZhbGlkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdh
cmJhZ2UuZW1wbGFjZV9iYWNrKEdldEdhcmJhZ2UoJmltYWdlVmlldykpOworICAgICAgICB9CiAg
ICAgfQogICAgIG1MZXZlbERyYXdJbWFnZVZpZXdzLmNsZWFyKCk7CiAKQEAgLTM0NTUsMTUgKzM2
MjcsMjEgQEAgdm9pZCBJbWFnZVZpZXdIZWxwZXI6OnJlbGVhc2UoUmVuZGVyZXJWayAqcmVuZGVy
ZXIpCiAgICAgewogICAgICAgICBmb3IgKEltYWdlVmlldyAmaW1hZ2VWaWV3IDogbGF5ZXJWaWV3
cykKICAgICAgICAgewotICAgICAgICAgICAgZ2FyYmFnZS5lbXBsYWNlX2JhY2soR2V0R2FyYmFn
ZSgmaW1hZ2VWaWV3KSk7CisgICAgICAgICAgICBpZiAoaW1hZ2VWaWV3LnZhbGlkKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2FyYmFnZS5lbXBsYWNlX2JhY2soR2V0R2FyYmFn
ZSgmaW1hZ2VWaWV3KSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgbUxh
eWVyTGV2ZWxEcmF3SW1hZ2VWaWV3cy5jbGVhcigpOwogCi0gICAgcmVuZGVyZXItPmNvbGxlY3RH
YXJiYWdlKHN0ZDo6bW92ZShtVXNlKSwgc3RkOjptb3ZlKGdhcmJhZ2UpKTsKKyAgICBpZiAoIWdh
cmJhZ2UuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHJlbmRlcmVyLT5jb2xsZWN0R2FyYmFnZShz
dGQ6Om1vdmUobVVzZSksIHN0ZDo6bW92ZShnYXJiYWdlKSk7CiAKLSAgICAvLyBFbnN1cmUgdGhl
IHJlc291cmNlIHVzZSBpcyBhbHdheXMgdmFsaWQuCi0gICAgbVVzZS5pbml0KCk7CisgICAgICAg
IC8vIEVuc3VyZSB0aGUgcmVzb3VyY2UgdXNlIGlzIGFsd2F5cyB2YWxpZC4KKyAgICAgICAgbVVz
ZS5pbml0KCk7CisgICAgfQogfQogCiB2b2lkIEltYWdlVmlld0hlbHBlcjo6ZGVzdHJveShWa0Rl
dmljZSBkZXZpY2UpCkBAIC0zNTM2LDEwICszNzE0LDkgQEAgYW5nbGU6OlJlc3VsdCBJbWFnZVZp
ZXdIZWxwZXI6OmdldExldmVsRHJhd0ltYWdlVmlldyhDb250ZXh0VmsgKmNvbnRleHRWaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
X3QgbGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEltYWdlVmlldyAqKmltYWdlVmlld091dCkKIHsKLSAgICBvblJlc291cmNl
QWNjZXNzKCZjb250ZXh0VmstPmdldFJlc291cmNlVXNlTGlzdCgpKTsKKyAgICByZXRhaW4oJmNv
bnRleHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOwogCi0gICAgLy8gVE9ETyhodHRwOi8vYW5n
bGVidWcuY29tLzQwMDgpOiBQb3NzaWJseSBpbmNvcnJlY3QgbGV2ZWwgY291bnQuCi0gICAgSW1h
Z2VWaWV3ICppbWFnZVZpZXcgPSBHZXRMZXZlbEltYWdlVmlldygmbUxldmVsRHJhd0ltYWdlVmll
d3MsIGxldmVsLCAxKTsKKyAgICBJbWFnZVZpZXcgKmltYWdlVmlldyA9IEdldExldmVsSW1hZ2VW
aWV3KCZtTGV2ZWxEcmF3SW1hZ2VWaWV3cywgbGV2ZWwsIGltYWdlLmdldExldmVsQ291bnQoKSk7
CiAKICAgICAqaW1hZ2VWaWV3T3V0ID0gaW1hZ2VWaWV3OwogICAgIGlmIChpbWFnZVZpZXctPnZh
bGlkKCkpCkBAIC0zNTYxLDcgKzM3MzgsNyBAQCBhbmdsZTo6UmVzdWx0IEltYWdlVmlld0hlbHBl
cjo6Z2V0TGV2ZWxMYXllckRyYXdJbWFnZVZpZXcoQ29udGV4dFZrICpjb250ZXh0VmssCiAgICAg
QVNTRVJUKGltYWdlLnZhbGlkKCkpOwogICAgIEFTU0VSVCghaW1hZ2UuZ2V0Rm9ybWF0KCkuYWN0
dWFsSW1hZ2VGb3JtYXQoKS5pc0Jsb2NrKTsKIAotICAgIG9uUmVzb3VyY2VBY2Nlc3MoJmNvbnRl
eHRWay0+Z2V0UmVzb3VyY2VVc2VMaXN0KCkpOworICAgIHJldGFpbigmY29udGV4dFZrLT5nZXRS
ZXNvdXJjZVVzZUxpc3QoKSk7CiAKICAgICB1aW50MzJfdCBsYXllckNvdW50ID0gR2V0SW1hZ2VM
YXllckNvdW50Rm9yVmlldyhpbWFnZSk7CiAKQEAgLTM2MDYsNyArMzc4Myw3IEBAIHZvaWQgU2Ft
cGxlckhlbHBlcjo6cmVsZWFzZShSZW5kZXJlclZrICpyZW5kZXJlcikKIH0KIAogLy8gRGlzcGF0
Y2hIZWxwZXIgaW1wbGVtZW50YXRpb24uCi1EaXNwYXRjaEhlbHBlcjo6RGlzcGF0Y2hIZWxwZXIo
KSA6IENvbW1hbmRHcmFwaFJlc291cmNlKENvbW1hbmRHcmFwaFJlc291cmNlVHlwZTo6RGlzcGF0
Y2hlcikge30KK0Rpc3BhdGNoSGVscGVyOjpEaXNwYXRjaEhlbHBlcigpID0gZGVmYXVsdDsKIAog
RGlzcGF0Y2hIZWxwZXI6On5EaXNwYXRjaEhlbHBlcigpID0gZGVmYXVsdDsKIApAQCAtMzY4OSwy
NSArMzg2Niw1IEBAIGFuZ2xlOjpSZXN1bHQgU2hhZGVyUHJvZ3JhbUhlbHBlcjo6Z2V0Q29tcHV0
ZVBpcGVsaW5lKENvbnRleHQgKmNvbnRleHQsCiAgICAgKnBpcGVsaW5lT3V0ID0gJm1Db21wdXRl
UGlwZWxpbmU7CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQotCi12b2lk
IE1ha2VEZWJ1Z1V0aWxzTGFiZWwoR0xlbnVtIHNvdXJjZSwgY29uc3QgY2hhciAqbWFya2VyLCBW
a0RlYnVnVXRpbHNMYWJlbEVYVCAqbGFiZWwpCi17Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhbmds
ZTo6Q29sb3JGIGtMYWJlbENvbG9yc1s2XSA9IHsKLSAgICAgICAgYW5nbGU6OkNvbG9yRigxLjBm
LCAwLjVmLCAwLjVmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJDRV9BUEkKLSAgICAgICAgYW5nbGU6
OkNvbG9yRigwLjVmLCAxLjBmLCAwLjVmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJDRV9XSU5ET1df
U1lTVEVNCi0gICAgICAgIGFuZ2xlOjpDb2xvckYoMC41ZiwgMC41ZiwgMS4wZiwgMS4wZiksICAv
LyBERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSCi0gICAgICAgIGFuZ2xlOjpDb2xvckYoMC43
ZiwgMC43ZiwgMC43ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFkKLSAgICAg
ICAgYW5nbGU6OkNvbG9yRigwLjVmLCAwLjhmLCAwLjlmLCAxLjBmKSwgIC8vIERFQlVHX1NPVVJD
RV9BUFBMSUNBVElPTgotICAgICAgICBhbmdsZTo6Q29sb3JGKDAuOWYsIDAuOGYsIDAuNWYsIDEu
MGYpLCAgLy8gREVCVUdfU09VUkNFX09USEVSCi0gICAgfTsKLQotICAgIGludCBjb2xvckluZGV4
ID0gc291cmNlIC0gR0xfREVCVUdfU09VUkNFX0FQSTsKLSAgICBBU1NFUlQoY29sb3JJbmRleCA+
PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4oY29sb3JJbmRleCkgPCBBcnJheVNpemUoa0xhYmVs
Q29sb3JzKSk7Ci0KLSAgICBsYWJlbC0+c1R5cGUgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0RF
QlVHX1VUSUxTX0xBQkVMX0VYVDsKLSAgICBsYWJlbC0+cE5leHQgICAgICA9IG51bGxwdHI7Ci0g
ICAgbGFiZWwtPnBMYWJlbE5hbWUgPSBtYXJrZXI7Ci0gICAga0xhYmVsQ29sb3JzW2NvbG9ySW5k
ZXhdLndyaXRlRGF0YShsYWJlbC0+Y29sb3IpOwotfQogfSAgLy8gbmFtZXNwYWNlIHZrCiB9ICAv
LyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaGVscGVycy5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJzLmgKaW5kZXggYTRk
MWRhYmI1OGZhMjZmYWY1NTU2ZjQyODQ4NTBkYjIyMzg4MzM1Mi4uZDlkNDZiNzE4OThlYmNlMTI4
OTVmOWY1YTNjZmE2ZDZhZGMwZjA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19oZWxwZXJz
LmgKQEAgLTksOCArOSw4IEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9WS19I
RUxQRVJTX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9WS19IRUxQRVJTX0hf
CiAKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tbWFuZEdyYXBoLmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3V0aWxzLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jlc291cmNlVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vdmtfY2FjaGVfdXRpbHMuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBA
IC0yODEsMTIgKzI4MSw3IEBAIGNsYXNzIER5bmFtaWNRdWVyeVBvb2wgZmluYWwgOiBwdWJsaWMg
RHluYW1pY2FsbHlHcm93aW5nUG9vbDxRdWVyeVBvb2w+CiAgICAgYW5nbGU6OlJlc3VsdCBhbGxv
Y2F0ZVF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrLCBRdWVyeUhlbHBlciAqcXVlcnlPdXQpOwog
ICAgIHZvaWQgZnJlZVF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrLCBRdWVyeUhlbHBlciAqcXVl
cnkpOwogCi0gICAgLy8gU3BlY2lhbCBhbGxvY2F0b3IgdGhhdCBkb2Vzbid0IHdvcmsgd2l0aCBR
dWVyeUhlbHBlciwgd2hpY2ggaXMgYSBDb21tYW5kR3JhcGhSZXNvdXJjZS4KLSAgICAvLyBDdXJy
ZW50bHkgb25seSB1c2VkIHdpdGggUmVuZGVyZXJWazo6R3B1RXZlbnRRdWVyeS4KLSAgICBhbmds
ZTo6UmVzdWx0IGFsbG9jYXRlUXVlcnkoQ29udGV4dFZrICpjb250ZXh0VmssIHNpemVfdCAqcG9v
bEluZGV4LCB1aW50MzJfdCAqcXVlcnlJbmRleCk7Ci0gICAgdm9pZCBmcmVlUXVlcnkoQ29udGV4
dFZrICpjb250ZXh0VmssIHNpemVfdCBwb29sSW5kZXgsIHVpbnQzMl90IHF1ZXJ5SW5kZXgpOwot
Ci0gICAgY29uc3QgUXVlcnlQb29sICpnZXRRdWVyeVBvb2woc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiAmbVBvb2xzW2luZGV4XTsgfQorICAgIGNvbnN0IFF1ZXJ5UG9vbCAmZ2V0UXVlcnlQ
b29sKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbVBvb2xzW2luZGV4XTsgfQogCiAgIHBy
aXZhdGU6CiAgICAgYW5nbGU6OlJlc3VsdCBhbGxvY2F0ZU5ld1Bvb2woQ29udGV4dFZrICpjb250
ZXh0VmspOwpAQCAtMzE1LDIzICszMTAsMzAgQEAgY2xhc3MgUXVlcnlIZWxwZXIgZmluYWwKICAg
ICAgICAgICAgICAgdWludDMyX3QgcXVlcnkpOwogICAgIHZvaWQgZGVpbml0KCk7CiAKLSAgICBj
b25zdCBRdWVyeVBvb2wgKmdldFF1ZXJ5UG9vbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbUR5bmFtaWNRdWVyeVBvb2wgPyBtRHluYW1pY1F1ZXJ5UG9vbC0+Z2V0UXVlcnlQb29sKG1R
dWVyeVBvb2xJbmRleCkgOiBudWxscHRyOwotICAgIH0KLSAgICB1aW50MzJfdCBnZXRRdWVyeSgp
IGNvbnN0IHsgcmV0dXJuIG1RdWVyeTsgfQorICAgIGJvb2wgdmFsaWQoKSBjb25zdCB7IHJldHVy
biBtRHluYW1pY1F1ZXJ5UG9vbCAhPSBudWxscHRyOyB9CiAKLSAgICAvLyBVc2VkIG9ubHkgYnkg
RHluYW1pY1F1ZXJ5UG9vbC4KLSAgICBzaXplX3QgZ2V0UXVlcnlQb29sSW5kZXgoKSBjb25zdCB7
IHJldHVybiBtUXVlcnlQb29sSW5kZXg7IH0KKyAgICBhbmdsZTo6UmVzdWx0IGJlZ2luUXVlcnko
Q29udGV4dFZrICpjb250ZXh0VmspOworICAgIGFuZ2xlOjpSZXN1bHQgZW5kUXVlcnkoQ29udGV4
dFZrICpjb250ZXh0VmspOwogCi0gICAgdm9pZCBiZWdpblF1ZXJ5KENvbnRleHRWayAqY29udGV4
dFZrKTsKLSAgICB2b2lkIGVuZFF1ZXJ5KENvbnRleHRWayAqY29udGV4dFZrKTsKLSAgICB2b2lk
IHdyaXRlVGltZXN0YW1wKENvbnRleHRWayAqY29udGV4dFZrKTsKKyAgICBhbmdsZTo6UmVzdWx0
IGZsdXNoQW5kV3JpdGVUaW1lc3RhbXAoQ29udGV4dFZrICpjb250ZXh0VmspOworICAgIHZvaWQg
d3JpdGVUaW1lc3RhbXAodms6OlByaW1hcnlDb21tYW5kQnVmZmVyICpwcmltYXJ5KTsKIAogICAg
IFNlcmlhbCBnZXRTdG9yZWRRdWV1ZVNlcmlhbCgpIHsgcmV0dXJuIG1Nb3N0UmVjZW50U2VyaWFs
OyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nV29yayhDb250ZXh0VmsgKmNvbnRleHRWayk7CiAKKyAg
ICBhbmdsZTo6UmVzdWx0IGdldFVpbnQ2NFJlc3VsdE5vbkJsb2NraW5nKENvbnRleHRWayAqY29u
dGV4dFZrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDY0X3QgKnJlc3VsdE91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgKmF2YWlsYWJsZU91dCk7CisgICAgYW5nbGU6OlJlc3VsdCBnZXRVaW50NjRS
ZXN1bHQoQ29udGV4dFZrICpjb250ZXh0VmssIHVpbnQ2NF90ICpyZXN1bHRPdXQpOworCiAgIHBy
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIER5bmFtaWNRdWVyeVBvb2w7CisgICAgY29uc3QgUXVl
cnlQb29sICZnZXRRdWVyeVBvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlk
KCkpOworICAgICAgICByZXR1cm4gbUR5bmFtaWNRdWVyeVBvb2wtPmdldFF1ZXJ5UG9vbChtUXVl
cnlQb29sSW5kZXgpOworICAgIH0KKwogICAgIGNvbnN0IER5bmFtaWNRdWVyeVBvb2wgKm1EeW5h
bWljUXVlcnlQb29sOwogICAgIHNpemVfdCBtUXVlcnlQb29sSW5kZXg7CiAgICAgdWludDMyX3Qg
bVF1ZXJ5OwpAQCAtNDU4LDcgKzQ2MCw3IEBAIGNsYXNzIExpbmVMb29wSGVscGVyIGZpbmFsIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAKIGNsYXNzIEZyYW1lYnVmZmVySGVscGVyOwogCi1jbGFzcyBC
dWZmZXJIZWxwZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKK2NsYXNzIEJ1
ZmZlckhlbHBlciBmaW5hbCA6IHB1YmxpYyBSZXNvdXJjZQogewogICBwdWJsaWM6CiAgICAgQnVm
ZmVySGVscGVyKCk7CkBAIC00NzUsNTAgKzQ3NywxOCBAQCBjbGFzcyBCdWZmZXJIZWxwZXIgZmlu
YWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKICAgICBjb25zdCBCdWZmZXIgJmdldEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXI7IH0KICAgICBjb25zdCBEZXZpY2VNZW1vcnkg
JmdldERldmljZU1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1EZXZpY2VNZW1vcnk7IH0KICAgICBW
a0RldmljZVNpemUgZ2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1TaXplOyB9Ci0KLSAgICAvLyBI
ZWxwZXJzIGZvciBzZXR0aW5nIHRoZSBncmFwaCBkZXBlbmRlbmNpZXMgKmFuZCogc2V0dGluZyB0
aGUgYXBwcm9wcmlhdGUgYmFycmllci4gIFRoZXNlIGFyZQotICAgIC8vIG1hZGUgZm9yIGRlcGVu
ZGVuY2llcyB0byBub24tYnVmZmVyIHJlc291cmNlcywgYXMgb25seSBvbmUgb2YgdHdvIHJlc291
cmNlcyBwYXJ0aWNpcGF0aW5nIGluCi0gICAgLy8gdGhlIGRlcGVuZGVuY3kgd291bGQgcmVxdWly
ZSBhIG1lbW9yeSBiYXJyaWVyLiAgTm90ZSB0aGF0IG9uV3JpdGUgdGFrZXMgcmVhZCBhY2Nlc3Mg
ZmxhZ3MKLSAgICAvLyB0b28sIGFzIG91dHB1dCBidWZmZXJzIGNvdWxkIGJlIHJlYWQgYXMgd2Vs
bC4KLSAgICB2b2lkIG9uUmVhZChDb250ZXh0VmsgKmNvbnRleHRWaywgQ29tbWFuZEdyYXBoUmVz
b3VyY2UgKnJlYWRlciwgVmtBY2Nlc3NGbGFncyByZWFkQWNjZXNzVHlwZSkKKyAgICBib29sIGlz
SG9zdFZpc2libGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgYWRkUmVhZERlcGVuZGVuY3koY29u
dGV4dFZrLCByZWFkZXIpOwotICAgICAgICBvblJlYWRBY2Nlc3MocmVhZGVyLCByZWFkQWNjZXNz
VHlwZSk7Ci0gICAgfQotICAgIHZvaWQgb25Xcml0ZShDb250ZXh0VmsgKmNvbnRleHRWaywgQ29t
bWFuZEdyYXBoUmVzb3VyY2UgKndyaXRlciwgVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUp
Ci0gICAgewotICAgICAgICBhZGRXcml0ZURlcGVuZGVuY3koY29udGV4dFZrLCB3cml0ZXIpOwot
ICAgICAgICBvbldyaXRlQWNjZXNzKGNvbnRleHRWaywgd3JpdGVBY2Nlc3NUeXBlKTsKLSAgICB9
Ci0gICAgLy8gSGVscGVyIGZvciBzZXR0aW5nIGEgZ3JhcGggZGVwZW5kZW5jeSBiZXR3ZWVuIHR3
byBidWZmZXJzLiAgVGhpcyBpcyBhIHNwZWNpYWxpemVkIGZ1bmN0aW9uIGFzCi0gICAgLy8gYm90
aCBidWZmZXJzIG1heSBpbmN1ciBhIG1lbW9yeSBiYXJyaWVyLiAgVXNpbmcgfG9uUmVhZHwgZm9s
bG93ZWQgYnkgfG9uV3JpdGV8IGJldHdlZW4gdGhlCi0gICAgLy8gYnVmZmVycyBpcyBpbXBvc3Np
YmxlIGFzIGl0IHdvdWxkIHJlc3VsdCBpbiBhIGNvbW1hbmQgZ3JhcGggbG9vcC4KLSAgICB2b2lk
IG9uUmVhZEJ5QnVmZmVyKENvbnRleHRWayAqY29udGV4dFZrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVySGVscGVyICpyZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBWa0Fj
Y2Vzc0ZsYWdzIHJlYWRBY2Nlc3NUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgVmtBY2Nl
c3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUpCi0gICAgewotICAgICAgICBhZGRSZWFkRGVwZW5kZW5j
eShjb250ZXh0VmssIHJlYWRlcik7Ci0gICAgICAgIG9uUmVhZEFjY2VzcyhyZWFkZXIsIHJlYWRB
Y2Nlc3NUeXBlKTsKLSAgICAgICAgcmVhZGVyLT5vbldyaXRlQWNjZXNzKGNvbnRleHRWaywgd3Jp
dGVBY2Nlc3NUeXBlKTsKLSAgICB9Ci0gICAgLy8gSGVscGVyIGZvciBzZXR0aW5nIGEgYmFycmll
ciB3aGVuIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgc2FtZSBidWZmZXIgaXMgYmVpbmcgcmVhZCBm
cm9tIGFuZAotICAgIC8vIHdyaXR0ZW4gdG8gaW4gdGhlIHNhbWUgY29tbWFuZC4KLSAgICB2b2lk
IG9uU2VsZlJlYWRXcml0ZShDb250ZXh0VmsgKmNvbnRleHRWaywgVmtBY2Nlc3NGbGFncyB3cml0
ZUFjY2Vzc1R5cGUpCi0gICAgewotICAgICAgICBpZiAobUN1cnJlbnRSZWFkQWNjZXNzIHx8IG1D
dXJyZW50V3JpdGVBY2Nlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbmlzaEN1cnJlbnRD
b21tYW5kcyhjb250ZXh0VmspOwotICAgICAgICB9Ci0gICAgICAgIG9uV3JpdGVBY2Nlc3MoY29u
dGV4dFZrLCB3cml0ZUFjY2Vzc1R5cGUpOworICAgICAgICByZXR1cm4gKG1NZW1vcnlQcm9wZXJ0
eUZsYWdzICYgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJMRV9CSVQpICE9IDA7CiAgICAg
fQorCiAgICAgLy8gU2V0IHdyaXRlIGFjY2VzcyBtYXNrIHdoZW4gdGhlIGJ1ZmZlciBpcyBtb2Rp
ZmllZCBleHRlcm5hbGx5LCBlLmcuIGJ5IGhvc3QuICBUaGVyZSBpcyBubwogICAgIC8vIGdyYXBo
IHJlc291cmNlIHRvIGNyZWF0ZSBhIGRlcGVuZGVuY3kgdG8uCiAgICAgdm9pZCBvbkV4dGVybmFs
V3JpdGUoVmtBY2Nlc3NGbGFncyB3cml0ZUFjY2Vzc1R5cGUpIHsgbUN1cnJlbnRXcml0ZUFjY2Vz
cyB8PSB3cml0ZUFjY2Vzc1R5cGU7IH0KIAogICAgIC8vIEFsc28gaW1wbGljaXRseSBzZXRzIHVw
IHRoZSBjb3JyZWN0IGJhcnJpZXJzLgogICAgIGFuZ2xlOjpSZXN1bHQgY29weUZyb21CdWZmZXIo
Q29udGV4dFZrICpjb250ZXh0VmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBCdWZmZXIgJmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlckhlbHBlciAqc3JjQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmtBY2Nlc3NGbGFncyBidWZmZXJBY2Nlc3NUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmtCdWZmZXJDb3B5ICZjb3B5UmVnaW9uKTsKIApAQCAtNTU3LDcgKzUy
Nyw3IEBAIGNsYXNzIEJ1ZmZlckhlbHBlciBmaW5hbCA6IHB1YmxpYyBDb21tYW5kR3JhcGhSZXNv
dXJjZQogCiAgICAgdm9pZCBjaGFuZ2VRdWV1ZSh1aW50MzJfdCBuZXdRdWV1ZUZhbWlseUluZGV4
LCBDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKTsKIAotICAgIC8vIE5ldyBtZXRob2RzIHVz
ZWQgd2hlbiB0aGUgQ29tbWFuZEdyYXBoIGlzIGRpc2FibGVkLgorICAgIC8vIEN1cnJlbnRseSBh
bHdheXMgcmV0dXJucyBmYWxzZS4gU2hvdWxkIGJlIHNtYXJ0ZXIgYWJvdXQgYWNjdW11bGF0aW9u
LgogICAgIGJvb2wgY2FuQWNjdW11bGF0ZVJlYWQoQ29udGV4dFZrICpjb250ZXh0VmssIFZrQWNj
ZXNzRmxhZ3MgcmVhZEFjY2Vzc1R5cGUpOwogICAgIGJvb2wgY2FuQWNjdW11bGF0ZVdyaXRlKENv
bnRleHRWayAqY29udGV4dFZrLCBWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSk7CiAKQEAg
LTU4NCwxOSArNTU0LDExIEBAIGNsYXNzIEJ1ZmZlckhlbHBlciBmaW5hbCA6IHB1YmxpYyBDb21t
YW5kR3JhcGhSZXNvdXJjZQogICAgICAgICBtQ3VycmVudFJlYWRBY2Nlc3MgfD0gcmVhZEFjY2Vz
c1R5cGU7CiAgICAgICAgIHJldHVybiBuZWVkc0JhcnJpZXI7CiAgICAgfQotICAgIHZvaWQgb25S
ZWFkQWNjZXNzKENvbW1hbmRHcmFwaFJlc291cmNlICpyZWFkZXIsIFZrQWNjZXNzRmxhZ3MgcmVh
ZEFjY2Vzc1R5cGUpCi0gICAgewotICAgICAgICBWa0FjY2Vzc0ZsYWdzIGJhcnJpZXJTcmMsIGJh
cnJpZXJEc3Q7Ci0gICAgICAgIGlmIChuZWVkc09uUmVhZEJhcnJpZXIocmVhZEFjY2Vzc1R5cGUs
ICZiYXJyaWVyU3JjLCAmYmFycmllckRzdCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlYWRl
ci0+YWRkR2xvYmFsTWVtb3J5QmFycmllcihiYXJyaWVyU3JjLCBiYXJyaWVyRHN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0FM
TF9DT01NQU5EU19CSVQpOwotICAgICAgICB9Ci0gICAgfQogICAgIGJvb2wgbmVlZHNPbldyaXRl
QmFycmllcihWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNjZXNzVHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmtBY2Nlc3NGbGFncyAqYmFycmllclNyY091dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmtBY2Nlc3NGbGFncyAqYmFycmllckRzdE91dCk7Ci0gICAgdm9pZCBv
bldyaXRlQWNjZXNzKENvbnRleHRWayAqY29udGV4dFZrLCBWa0FjY2Vzc0ZsYWdzIHdyaXRlQWNj
ZXNzVHlwZSk7CisKKyAgICBhbmdsZTo6UmVzdWx0IGluaXRpYWxpemVOb25aZXJvTWVtb3J5KENv
bnRleHQgKmNvbnRleHQsIFZrRGV2aWNlU2l6ZSBzaXplKTsKIAogICAgIC8vIFZ1bGthbiBvYmpl
Y3RzLgogICAgIEJ1ZmZlciBtQnVmZmVyOwpAQCAtNjY1LDcgKzYyNyw3IEBAIGVudW0gY2xhc3Mg
SW1hZ2VMYXlvdXQKICAgICBFbnVtQ291bnQgICA9IDEzLAogfTsKIAotY2xhc3MgSW1hZ2VIZWxw
ZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKK2NsYXNzIEltYWdlSGVscGVy
IGZpbmFsIDogcHVibGljIFJlc291cmNlCiB7CiAgIHB1YmxpYzoKICAgICBJbWFnZUhlbHBlcigp
OwpAQCAtNzc3LDYgKzczOSwxMCBAQCBjbGFzcyBJbWFnZUhlbHBlciBmaW5hbCA6IHB1YmxpYyBD
b21tYW5kR3JhcGhSZXNvdXJjZQogCiAgICAgZ2w6OkV4dGVudHMgZ2V0U2l6ZShjb25zdCBnbDo6
SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0OwogCisgICAgLy8gUmV0dXJuIHVuaXF1ZSBTZXJpYWwg
Zm9yIHVuZGVybHlpbmcgaW1hZ2UsIGZpcnN0IGFzc2lnbmluZyBpdCBpZiBpdCBoYXNuJ3QgYmVl
biBzZXQgeWV0CisgICAgU2VyaWFsIGdldEFzc2lnblNlcmlhbChDb250ZXh0VmsgKmNvbnRleHRW
ayk7CisgICAgdm9pZCByZXNldFNlcmlhbCgpIHsgbVNlcmlhbCA9IHJ4OjprWmVyb1NlcmlhbDsg
fQorCiAgICAgc3RhdGljIHZvaWQgQ29weShJbWFnZUhlbHBlciAqc3JjSW1hZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICBJbWFnZUhlbHBlciAqZHN0SW1hZ2UsCiAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6T2Zmc2V0ICZzcmNPZmZzZXQsCkBAIC04NTAsNyArODE2LDcgQEAgY2xhc3Mg
SW1hZ2VIZWxwZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFnZVR5cGUgaW1hZ2VU
eXBlKTsKIAogICAgIC8vIFN0YWdlIGEgY2xlYXIgb3BlcmF0aW9uIHRvIGEgY2xlYXIgdmFsdWUg
YmFzZWQgb24gV2ViR0wgcmVxdWlyZW1lbnRzLgotICAgIHZvaWQgc3RhZ2VTdWJyZXNvdXJjZVJv
YnVzdENsZWFyKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgYW5nbGU6OkZvcm1h
dCAmZm9ybWF0KTsKKyAgICB2b2lkIHN0YWdlU3VicmVzb3VyY2VSb2J1c3RDbGVhcihjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IEZvcm1hdCAmZm9ybWF0KTsKIAogICAgIC8vIFN0
YWdlIGEgY2xlYXIgb3BlcmF0aW9uIHRvIGEgY2xlYXIgdmFsdWUgdGhhdCBpbml0aWFsaXplcyBl
bXVsYXRlZCBjaGFubmVscyB0byB0aGUgZGVzaXJlZAogICAgIC8vIHZhbHVlcy4KQEAgLTg5Miw5
ICs4NTgsMTggQEAgY2xhc3MgSW1hZ2VIZWxwZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBo
UmVzb3VyY2UKICAgICAvLyBwdXJwb3NlIG9mIHBlcmZvcm1pbmcgYSB0cmFuc2l0aW9uICh3aGlj
aCBtYXkgdGhlbiBub3QgYmUgaXNzdWVkKS4KICAgICBib29sIGlzTGF5b3V0Q2hhbmdlTmVjZXNz
YXJ5KEltYWdlTGF5b3V0IG5ld0xheW91dCkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ29tbWFuZEJ1ZmZlclQ+CiAgICAgdm9pZCBjaGFuZ2VMYXlvdXQoVmtJbWFnZUFzcGVjdEZs
YWdzIGFzcGVjdE1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VMYXlvdXQgbmV3TGF5
b3V0LAotICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIp
OworICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXJUICpjb21tYW5kQnVmZmVyKQor
ICAgIHsKKyAgICAgICAgaWYgKCFpc0xheW91dENoYW5nZU5lY2Vzc2FyeShuZXdMYXlvdXQpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3Jj
ZUNoYW5nZUxheW91dEFuZFF1ZXVlKGFzcGVjdE1hc2ssIG5ld0xheW91dCwgbUN1cnJlbnRRdWV1
ZUZhbWlseUluZGV4LCBjb21tYW5kQnVmZmVyKTsKKyAgICB9CiAKICAgICBib29sIGlzUXVldWVD
aGFuZ2VOZWNjZXNhcnkodWludDMyX3QgbmV3UXVldWVGYW1pbHlJbmRleCkgY29uc3QKICAgICB7
CkBAIC05NjIsMTAgKzkzNywxMiBAQCBjbGFzcyBJbWFnZUhlbHBlciBmaW5hbCA6IHB1YmxpYyBD
b21tYW5kR3JhcGhSZXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKmlucHV0U2tpcEJ5dGVzKTsKIAogICBwcml2YXRlOgorICAgIC8vIEdlbmVyYWxp
emVkIHRvIGFjY2VwdCBib3RoICJwcmltYXJ5IiBhbmQgInNlY29uZGFyeSIgY29tbWFuZCBidWZm
ZXJzLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb21tYW5kQnVmZmVyVD4KICAgICB2b2lkIGZv
cmNlQ2hhbmdlTGF5b3V0QW5kUXVldWUoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlTGF5b3V0IG5ld0xheW91dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmV3UXVldWVGYW1p
bHlJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bW1hbmRCdWZmZXJUICpjb21tYW5kQnVmZmVyKTsKIAogICAgIHZvaWQgc3RhZ2VTdWJyZXNvdXJj
ZUNsZWFyKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZmb3JtYXQsCkBAIC05ODgsNiArOTY1LDgg
QEAgY2xhc3MgSW1hZ2VIZWxwZXIgZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxheWVyQ291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKTsKIAorICAg
IGFuZ2xlOjpSZXN1bHQgaW5pdGlhbGl6ZU5vblplcm9NZW1vcnkoQ29udGV4dCAqY29udGV4dCwg
VmtEZXZpY2VTaXplIHNpemUpOworCiAgICAgZW51bSBjbGFzcyBVcGRhdGVTb3VyY2UKICAgICB7
CiAgICAgICAgIENsZWFyLApAQCAtMTA0Nyw2ICsxMDI2LDcgQEAgY2xhc3MgSW1hZ2VIZWxwZXIg
ZmluYWwgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKICAgICBWa0V4dGVudDNEIG1FeHRl
bnRzOwogICAgIGNvbnN0IEZvcm1hdCAqbUZvcm1hdDsKICAgICBHTGludCBtU2FtcGxlczsKKyAg
ICBTZXJpYWwgbVNlcmlhbDsKIAogICAgIC8vIEN1cnJlbnQgc3RhdGUuCiAgICAgSW1hZ2VMYXlv
dXQgbUN1cnJlbnRMYXlvdXQ7CkBAIC0xMDg5LDcgKzEwNjksNyBAQCBjbGFzcyBJbWFnZVZpZXdI
ZWxwZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBib29sIGhhc0ZldGNoSW1hZ2VWaWV3KCkg
Y29uc3QgeyByZXR1cm4gbUZldGNoSW1hZ2VWaWV3LnZhbGlkKCk7IH0KIAogICAgIC8vIFN0b3Jl
IHJlZmVyZW5jZSB0byB1c2FnZSBpbiBncmFwaC4KLSAgICB2b2lkIG9uUmVzb3VyY2VBY2Nlc3Mo
UmVzb3VyY2VVc2VMaXN0ICpyZXNvdXJjZVVzZUxpc3QpIGNvbnN0IHsgcmVzb3VyY2VVc2VMaXN0
LT5hZGQobVVzZSk7IH0KKyAgICB2b2lkIHJldGFpbihSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNl
VXNlTGlzdCkgY29uc3QgeyByZXNvdXJjZVVzZUxpc3QtPmFkZChtVXNlKTsgfQogCiAgICAgLy8g
Q3JlYXRlcyB2aWV3cyB3aXRoIG11bHRpcGxlIGxheWVycyBhbmQgbGV2ZWxzLgogICAgIGFuZ2xl
OjpSZXN1bHQgaW5pdFJlYWRWaWV3cyhDb250ZXh0VmsgKmNvbnRleHRWaywKQEAgLTExNDQsMTkg
KzExMjQsMjIgQEAgY2xhc3MgU2FtcGxlckhlbHBlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIFNhbXBsZXIgJmdldCgpIHsgcmV0dXJuIG1TYW1wbGVyOyB9CiAgICAgY29uc3QgU2Ft
cGxlciAmZ2V0KCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXI7IH0KIAotICAgIHZvaWQgb25SZXNv
dXJjZUFjY2VzcyhSZXNvdXJjZVVzZUxpc3QgKnJlc291cmNlVXNlTGlzdCkgeyByZXNvdXJjZVVz
ZUxpc3QtPmFkZChtVXNlKTsgfQorICAgIHZvaWQgcmV0YWluKFJlc291cmNlVXNlTGlzdCAqcmVz
b3VyY2VVc2VMaXN0KSB7IHJlc291cmNlVXNlTGlzdC0+YWRkKG1Vc2UpOyB9CiAKICAgcHJpdmF0
ZToKICAgICBTaGFyZWRSZXNvdXJjZVVzZSBtVXNlOwogICAgIFNhbXBsZXIgbVNhbXBsZXI7CiB9
OwogCi1jbGFzcyBGcmFtZWJ1ZmZlckhlbHBlciA6IHB1YmxpYyBDb21tYW5kR3JhcGhSZXNvdXJj
ZQorY2xhc3MgRnJhbWVidWZmZXJIZWxwZXIgOiBwdWJsaWMgUmVzb3VyY2UKIHsKICAgcHVibGlj
OgogICAgIEZyYW1lYnVmZmVySGVscGVyKCk7CiAgICAgfkZyYW1lYnVmZmVySGVscGVyKCkgb3Zl
cnJpZGU7CiAKKyAgICBGcmFtZWJ1ZmZlckhlbHBlcihGcmFtZWJ1ZmZlckhlbHBlciAmJm90aGVy
KTsKKyAgICBGcmFtZWJ1ZmZlckhlbHBlciAmb3BlcmF0b3I9KEZyYW1lYnVmZmVySGVscGVyICYm
b3RoZXIpOworCiAgICAgYW5nbGU6OlJlc3VsdCBpbml0KENvbnRleHRWayAqY29udGV4dFZrLCBj
b25zdCBWa0ZyYW1lYnVmZmVyQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbyk7CiAgICAgdm9pZCByZWxl
YXNlKENvbnRleHRWayAqY29udGV4dFZrKTsKIApAQCAtMTE4MSw3ICsxMTY0LDcgQEAgY2xhc3Mg
RnJhbWVidWZmZXJIZWxwZXIgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKIAogLy8gQSBz
cGVjaWFsIGNvbW1hbmQgZ3JhcGggcmVzb3VyY2UgdG8gaG9sZCByZXNvdXJjZSBkZXBlbmRlbmNp
ZXMgZm9yIGRpc3BhdGNoIGNhbGxzLiAgSXQncyB0aGUKIC8vIGVxdWl2YWxlbnQgb2YgRnJhbWVi
dWZmZXJIZWxwZXIsIHRob3VnaCBpdCBkb2Vzbid0IGNvbnRhaW4gYSBWdWxrYW4gb2JqZWN0Lgot
Y2xhc3MgRGlzcGF0Y2hIZWxwZXIgOiBwdWJsaWMgQ29tbWFuZEdyYXBoUmVzb3VyY2UKK2NsYXNz
IERpc3BhdGNoSGVscGVyIDogcHVibGljIFJlc291cmNlCiB7CiAgIHB1YmxpYzoKICAgICBEaXNw
YXRjaEhlbHBlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4uY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19p
bnRlcm5hbF9zaGFkZXJzX2F1dG9nZW4uY3BwCmluZGV4IDdjYTExMjZkNDQzNmMxMjIwMTQwM2Iy
MGVmOTIzYzUwY2Q1NWVlMGIuLmU4ZDQ4YjhhZjhjNmU5YjBhNmJlMDQxYjI5ZjMzZGQ1NGQ1Y2U4
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFs
X3NoYWRlcnNfYXV0b2dlbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvLyBHRU5FUkFURUQgRklMRSAt
IERPIE5PVCBFRElULgogLy8gR2VuZXJhdGVkIGJ5IGdlbl92a19pbnRlcm5hbF9zaGFkZXJzLnB5
IHVzaW5nIGRhdGEgZnJvbSBzaGFkZXJzL3NyYy8qCiAvLwotLy8gQ29weXJpZ2h0IDIwMTkgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTYy
LDYgKzYyLDcgQEAgbmFtZXNwYWNlCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L3NoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleC5jb21wLjAwMDAwMDAzLmluYyIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RM
aW5lTG9vcC5jb21wLjAwMDAwMDAwLmluYyIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAw
MDAxLmluYyIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4v
Q29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAyLmluYyIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vc2hhZGVycy9nZW4vQ29udmVydEluZGlyZWN0TGlu
ZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRWZXJ0ZXguY29tcC4wMDAwMDAwMC5pbmMiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3NoYWRlcnMvZ2VuL0NvbnZlcnRWZXJ0ZXguY29t
cC4wMDAwMDAwMS5pbmMiCkBAIC0xOTYsNiArMTk3LDggQEAgY29uc3RleHByIFNoYWRlckJsb2Ig
a0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcF9zaGFkZXJzW10gPSB7CiAgICAgIHNp
emVvZihrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAwKX0sCiAgICAg
e2tDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBfMDAwMDAwMDEsCiAgICAgIHNpemVv
ZihrQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAxKX0sCisgICAge2tD
b252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXBfMDAwMDAwMDIsCisgICAgIHNpemVvZihr
Q29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAyKX0sCiB9OwogY29uc3Rl
eHByIFNoYWRlckJsb2Iga0NvbnZlcnRJbmRpcmVjdExpbmVMb29wX2NvbXBfc2hhZGVyc1tdID0g
ewogICAgIHtrQ29udmVydEluZGlyZWN0TGluZUxvb3BfY29tcF8wMDAwMDAwMCwgc2l6ZW9mKGtD
b252ZXJ0SW5kaXJlY3RMaW5lTG9vcF9jb21wXzAwMDAwMDAwKX0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVy
bmFsX3NoYWRlcnNfYXV0b2dlbi5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVybmFsX3NoYWRlcnNfYXV0b2dlbi5nbmkKaW5k
ZXggZTA3ZWU0NWU3ZmY3MzIyMzBmNjBhOTY4ZGYzYmE2NDk0ZGY0YWQ5Yi4uMjRkMDNkNGQ3MGM3
MTFhNWYxMTMyNjExMzU0YjIxMTJkZWZjMjIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJz
X2F1dG9nZW4uZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmduaQpAQCAtMSw3ICsx
LDcgQEAKICMgR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KICMgR2VuZXJhdGVkIGJ5IGdl
bl92a19pbnRlcm5hbF9zaGFkZXJzLnB5IHVzaW5nIGRhdGEgZnJvbSBzaGFkZXJzL3NyYy8qCiAj
Ci0jIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICMgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KICMKQEAgLTU1LDYgKzU1LDcgQEAgYW5nbGVfdnVsa2FuX2ludGVybmFsX3NoYWRl
cnMgPSBbCiAgICJzaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXguY29tcC4wMDAwMDAwMy5pbmMiLAog
ICAic2hhZGVycy9nZW4vQ29udmVydEluZGV4SW5kaXJlY3RMaW5lTG9vcC5jb21wLjAwMDAwMDAw
LmluYyIsCiAgICJzaGFkZXJzL2dlbi9Db252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wLmNvbXAu
MDAwMDAwMDEuaW5jIiwKKyAgInNoYWRlcnMvZ2VuL0NvbnZlcnRJbmRleEluZGlyZWN0TGluZUxv
b3AuY29tcC4wMDAwMDAwMi5pbmMiLAogICAic2hhZGVycy9nZW4vQ29udmVydEluZGlyZWN0TGlu
ZUxvb3AuY29tcC4wMDAwMDAwMC5pbmMiLAogICAic2hhZGVycy9nZW4vQ29udmVydFZlcnRleC5j
b21wLjAwMDAwMDAwLmluYyIsCiAgICJzaGFkZXJzL2dlbi9Db252ZXJ0VmVydGV4LmNvbXAuMDAw
MDAwMDEuaW5jIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2ludGVy
bmFsX3NoYWRlcnNfYXV0b2dlbi5oCmluZGV4IDVhNzUzZWI4ZDA3ZjYyN2ZmYjE5ZjE1YjJhYzQw
Y2Q5OGExNGQwYTYuLjU2NzgxNGE0ZjIyOThmNzFiMGJiMTk2OTc5MWY0OGYwYzgwZjZkNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vdmtfaW50ZXJuYWxfc2hhZGVyc19hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19pbnRlcm5hbF9zaGFkZXJz
X2F1dG9nZW4uaApAQCAtMSw3ICsxLDcgQEAKIC8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVE
SVQuCiAvLyBHZW5lcmF0ZWQgYnkgZ2VuX3ZrX2ludGVybmFsX3NoYWRlcnMucHkgdXNpbmcgZGF0
YSBmcm9tIHNoYWRlcnMvc3JjLyoKIC8vCi0vLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IDIwMjAgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtODAsMTEgKzgwLDEz
IEBAIGNvbnN0ZXhwciBzaXplX3Qga0FycmF5TGVuID0gMHgwMDAwMDAwNDsKIAogbmFtZXNwYWNl
IENvbnZlcnRJbmRleEluZGlyZWN0TGluZUxvb3BfY29tcAogewotZW51bSBmbGFncworZW51bSBJ
bmRpY2VzQml0c1dpZHRoCiB7Ci0gICAga0lzMzJCaXQgPSAweDAwMDAwMDAxLAorICAgIGtJczhC
aXRzICA9IDB4MDAwMDAwMDAsCisgICAga0lzMTZCaXRzID0gMHgwMDAwMDAwMSwKKyAgICBrSXMz
MkJpdHMgPSAweDAwMDAwMDAyLAogfTsKLWNvbnN0ZXhwciBzaXplX3Qga0FycmF5TGVuID0gMHgw
MDAwMDAwMjsKK2NvbnN0ZXhwciBzaXplX3Qga0FycmF5TGVuID0gMHgwMDAwMDAwMzsKIH0gIC8v
IG5hbWVzcGFjZSBDb252ZXJ0SW5kZXhJbmRpcmVjdExpbmVMb29wX2NvbXAKIAogbmFtZXNwYWNl
IENvbnZlcnRJbmRpcmVjdExpbmVMb29wX2NvbXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfdXRpbHMuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a191dGls
cy5jcHAKaW5kZXggN2FjNzI5MWQ4ZTBhNWVjMjZiYTk1Y2E0YjJjOTUxOWRlMWM3YTRmYy4uM2I3
ZGIxMTM5NjQ4OTUwY2U5Y2ZiNmMzOGJlMzc1OWYzMWFiN2M0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a191dGlscy5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi92a191dGlscy5jcHAKQEAgLTExLDI5ICsxMSwxMCBAQAogCiAjaW5jbHVkZSAibGliQU5H
TEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJW
ay5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21tYW5kR3JhcGguaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCi0KLW5hbWVzcGFjZQotewotVmtJbWFn
ZVVzYWdlRmxhZ3MgR2V0U3RhZ2luZ0J1ZmZlclVzYWdlRmxhZ3Mocng6OnZrOjpTdGFnaW5nVXNh
Z2UgdXNhZ2UpCi17Ci0gICAgc3dpdGNoICh1c2FnZSkKLSAgICB7Ci0gICAgICAgIGNhc2Ugcng6
OnZrOjpTdGFnaW5nVXNhZ2U6OlJlYWQ6Ci0gICAgICAgICAgICByZXR1cm4gVktfQlVGRkVSX1VT
QUdFX1RSQU5TRkVSX0RTVF9CSVQ7Ci0gICAgICAgIGNhc2Ugcng6OnZrOjpTdGFnaW5nVXNhZ2U6
OldyaXRlOgotICAgICAgICAgICAgcmV0dXJuIFZLX0JVRkZFUl9VU0FHRV9UUkFOU0ZFUl9TUkNf
QklUOwotICAgICAgICBjYXNlIHJ4Ojp2azo6U3RhZ2luZ1VzYWdlOjpCb3RoOgotICAgICAgICAg
ICAgcmV0dXJuIChWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVCB8IFZLX0JVRkZFUl9V
U0FHRV9UUkFOU0ZFUl9TUkNfQklUKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci19ICAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jlc291
cmNlVmsuaCIKIAogbmFtZXNwYWNlIGFuZ2xlCiB7CkBAIC01Miw0OCArMzMsMjIgQEAgZWdsOjpF
cnJvciBUb0VHTChSZXN1bHQgcmVzdWx0LCByeDo6RGlzcGxheVZrICpkaXNwbGF5VmssIEVHTGlu
dCBlcnJvckNvZGUpCiAKIG5hbWVzcGFjZSByeAogewotLy8gVW5pZmllZCBsYXllciB0aGF0IGlu
Y2x1ZGVzIGZ1bGwgdmFsaWRhdGlvbiBsYXllciBzdGFjawotY29uc3QgY2hhciAqZ19Wa0tocm9u
b3NWYWxpZGF0aW9uTGF5ZXJOYW1lICA9ICJWS19MQVlFUl9LSFJPTk9TX3ZhbGlkYXRpb24iOwot
Y29uc3QgY2hhciAqZ19Wa1N0YW5kYXJkVmFsaWRhdGlvbkxheWVyTmFtZSA9ICJWS19MQVlFUl9M
VU5BUkdfc3RhbmRhcmRfdmFsaWRhdGlvbiI7Ci1jb25zdCBjaGFyICpnX1ZrVmFsaWRhdGlvbkxh
eWVyTmFtZXNbXSAgICAgID0gewotICAgICJWS19MQVlFUl9HT09HTEVfdGhyZWFkaW5nIiwgIlZL
X0xBWUVSX0xVTkFSR19wYXJhbWV0ZXJfdmFsaWRhdGlvbiIsCi0gICAgIlZLX0xBWUVSX0xVTkFS
R19vYmplY3RfdHJhY2tlciIsICJWS19MQVlFUl9MVU5BUkdfY29yZV92YWxpZGF0aW9uIiwKLSAg
ICAiVktfTEFZRVJfR09PR0xFX3VuaXF1ZV9vYmplY3RzIn07Ci0KLWJvb2wgSGFzVmFsaWRhdGlv
bkxheWVyKGNvbnN0IHN0ZDo6dmVjdG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcywg
Y29uc3QgY2hhciAqbGF5ZXJOYW1lKQotewotICAgIGZvciAoY29uc3QgYXV0byAmbGF5ZXJQcm9w
IDogbGF5ZXJQcm9wcykKLSAgICB7Ci0gICAgICAgIGlmIChzdGQ6OnN0cmluZyhsYXllclByb3Au
bGF5ZXJOYW1lKSA9PSBsYXllck5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEhh
c0tocm9ub3NWYWxpZGF0aW9uTGF5ZXIoY29uc3Qgc3RkOjp2ZWN0b3I8VmtMYXllclByb3BlcnRp
ZXM+ICZsYXllclByb3BzKQotewotICAgIHJldHVybiBIYXNWYWxpZGF0aW9uTGF5ZXIobGF5ZXJQ
cm9wcywgZ19Wa0tocm9ub3NWYWxpZGF0aW9uTGF5ZXJOYW1lKTsKLX0KLQotYm9vbCBIYXNTdGFu
ZGFyZFZhbGlkYXRpb25MYXllcihjb25zdCBzdGQ6OnZlY3RvcjxWa0xheWVyUHJvcGVydGllcz4g
JmxheWVyUHJvcHMpCituYW1lc3BhY2UKIHsKLSAgICByZXR1cm4gSGFzVmFsaWRhdGlvbkxheWVy
KGxheWVyUHJvcHMsIGdfVmtTdGFuZGFyZFZhbGlkYXRpb25MYXllck5hbWUpOwotfQotCi1ib29s
IEhhc1ZhbGlkYXRpb25MYXllcnMoY29uc3Qgc3RkOjp2ZWN0b3I8VmtMYXllclByb3BlcnRpZXM+
ICZsYXllclByb3BzKQorVmtJbWFnZVVzYWdlRmxhZ3MgR2V0U3RhZ2luZ0J1ZmZlclVzYWdlRmxh
Z3Modms6OlN0YWdpbmdVc2FnZSB1c2FnZSkKIHsKLSAgICBmb3IgKGNvbnN0IGNoYXIgKmxheWVy
TmFtZSA6IGdfVmtWYWxpZGF0aW9uTGF5ZXJOYW1lcykKKyAgICBzd2l0Y2ggKHVzYWdlKQogICAg
IHsKLSAgICAgICAgaWYgKCFIYXNWYWxpZGF0aW9uTGF5ZXIobGF5ZXJQcm9wcywgbGF5ZXJOYW1l
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAg
ICAgIGNhc2Ugdms6OlN0YWdpbmdVc2FnZTo6UmVhZDoKKyAgICAgICAgICAgIHJldHVybiBWS19C
VUZGRVJfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVDsKKyAgICAgICAgY2FzZSB2azo6U3RhZ2luZ1Vz
YWdlOjpXcml0ZToKKyAgICAgICAgICAgIHJldHVybiBWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJf
U1JDX0JJVDsKKyAgICAgICAgY2FzZSB2azo6U3RhZ2luZ1VzYWdlOjpCb3RoOgorICAgICAgICAg
ICAgcmV0dXJuIChWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVCB8IFZLX0JVRkZFUl9V
U0FHRV9UUkFOU0ZFUl9TUkNfQklUKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogYW5nbGU6OlJlc3VsdCBGaW5kQW5kQWxsb2NhdGVDb21wYXRpYmxlTWVtb3J5
KHZrOjpDb250ZXh0ICpjb250ZXh0LApAQCAtMTA0LDYgKzU5LDExIEBAIGFuZ2xlOjpSZXN1bHQg
RmluZEFuZEFsbG9jYXRlQ29tcGF0aWJsZU1lbW9yeSh2azo6Q29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpl
eHRyYUFsbG9jYXRpb25JbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjpEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9yeU91dCkKIHsKKyAgICAvLyBQ
aWNrIGFuIGFyYml0cmFyeSB2YWx1ZSB0byBpbml0aWFsaXplIG5vbi16ZXJvIG1lbW9yeSBmb3Ig
c2FuaXRpemF0aW9uLgorICAgIGNvbnN0ZXhwciBpbnQga05vblplcm9Jbml0VmFsdWUgPSA1NTsK
KworICAgIFZrRGV2aWNlIGRldmljZSA9IGNvbnRleHQtPmdldERldmljZSgpOworCiAgICAgdWlu
dDMyX3QgbWVtb3J5VHlwZUluZGV4ID0gMDsKICAgICBBTkdMRV9UUlkobWVtb3J5UHJvcGVydGll
cy5maW5kQ29tcGF0aWJsZU1lbW9yeUluZGV4KGNvbnRleHQsIG1lbW9yeVJlcXVpcmVtZW50cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3RlZE1lbW9yeVByb3BlcnR5RmxhZ3MsCkBAIC0xMTUsNyArNzUsMjEgQEAgYW5nbGU6
OlJlc3VsdCBGaW5kQW5kQWxsb2NhdGVDb21wYXRpYmxlTWVtb3J5KHZrOjpDb250ZXh0ICpjb250
ZXh0LAogICAgIGFsbG9jSW5mby5tZW1vcnlUeXBlSW5kZXggICAgICA9IG1lbW9yeVR5cGVJbmRl
eDsKICAgICBhbGxvY0luZm8uYWxsb2NhdGlvblNpemUgICAgICAgPSBtZW1vcnlSZXF1aXJlbWVu
dHMuc2l6ZTsKIAotICAgIEFOR0xFX1ZLX1RSWShjb250ZXh0LCBkZXZpY2VNZW1vcnlPdXQtPmFs
bG9jYXRlKGNvbnRleHQtPmdldERldmljZSgpLCBhbGxvY0luZm8pKTsKKyAgICBBTkdMRV9WS19U
UlkoY29udGV4dCwgZGV2aWNlTWVtb3J5T3V0LT5hbGxvY2F0ZShkZXZpY2UsIGFsbG9jSW5mbykp
OworCisgICAgLy8gV2lwZSBtZW1vcnkgdG8gYW4gaW52YWxpZCB2YWx1ZSB3aGVuIHRoZSAnYWxs
b2NhdGVOb25aZXJvTWVtb3J5JyBmZWF0dXJlIGlzIGVuYWJsZWQuIFRoZQorICAgIC8vIGludmFs
aWQgdmFsdWVzIGVuc3VyZXMgb3VyIHRlc3RpbmcgZG9lc24ndCBhc3N1bWUgemVyby1pbml0aWFs
aXplZCBtZW1vcnkuCisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgPSBjb250ZXh0LT5nZXRSZW5k
ZXJlcigpOworICAgIGlmIChyZW5kZXJlci0+Z2V0RmVhdHVyZXMoKS5hbGxvY2F0ZU5vblplcm9N
ZW1vcnkuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmICgoKm1lbW9yeVByb3BlcnR5RmxhZ3NP
dXQgJiBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCkgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gQ2FuIG1hcCB0aGUgbWVtb3J5LgorICAgICAgICAgICAgQU5HTEVf
VFJZKHZrOjpJbml0TWFwcGFibGVEZXZpY2VNZW1vcnkoY29udGV4dCwgZGV2aWNlTWVtb3J5T3V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVt
b3J5UmVxdWlyZW1lbnRzLnNpemUsIGtOb25aZXJvSW5pdFZhbHVlKSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAgLTE0Myw3
ICsxMTcsOCBAQCBhbmdsZTo6UmVzdWx0IEFsbG9jYXRlQnVmZmVyT3JJbWFnZU1lbW9yeSh2azo6
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyAqbWVtb3J5UHJvcGVydHlGbGFnc091dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmV4dHJhQWxs
b2NhdGlvbkluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ICpidWZmZXJPckltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdms6OkRldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5T3V0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdms6OkRldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5T3V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VTaXpl
ICpzaXplT3V0KQogewogICAgIC8vIENhbGwgZHJpdmVyIHRvIGRldGVybWluZSBtZW1vcnkgcmVx
dWlyZW1lbnRzLgogICAgIFZrTWVtb3J5UmVxdWlyZW1lbnRzIG1lbW9yeVJlcXVpcmVtZW50czsK
QEAgLTE1Myw5ICsxMjgsNTYgQEAgYW5nbGU6OlJlc3VsdCBBbGxvY2F0ZUJ1ZmZlck9ySW1hZ2VN
ZW1vcnkodms6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNvbnRleHQsIHJlcXVlc3RlZE1l
bW9yeVByb3BlcnR5RmxhZ3MsIG1lbW9yeVByb3BlcnR5RmxhZ3NPdXQsIG1lbW9yeVJlcXVpcmVt
ZW50cywKICAgICAgICAgZXh0cmFBbGxvY2F0aW9uSW5mbywgYnVmZmVyT3JJbWFnZSwgZGV2aWNl
TWVtb3J5T3V0KSk7CiAKKyAgICAqc2l6ZU91dCA9IG1lbW9yeVJlcXVpcmVtZW50cy5zaXplOwor
CiAgICAgcmV0dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOwogfQogCisvLyBVbmlmaWVkIGxh
eWVyIHRoYXQgaW5jbHVkZXMgZnVsbCB2YWxpZGF0aW9uIGxheWVyIHN0YWNrCitjb25zdGV4cHIg
Y2hhciBrVmtLaHJvbm9zVmFsaWRhdGlvbkxheWVyTmFtZVtdICA9ICJWS19MQVlFUl9LSFJPTk9T
X3ZhbGlkYXRpb24iOworY29uc3RleHByIGNoYXIga1ZrU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXJO
YW1lW10gPSAiVktfTEFZRVJfTFVOQVJHX3N0YW5kYXJkX3ZhbGlkYXRpb24iOworY29uc3QgY2hh
ciAqa1ZrVmFsaWRhdGlvbkxheWVyTmFtZXNbXSAgICAgICAgICAgPSB7CisgICAgIlZLX0xBWUVS
X0dPT0dMRV90aHJlYWRpbmciLCAiVktfTEFZRVJfTFVOQVJHX3BhcmFtZXRlcl92YWxpZGF0aW9u
IiwKKyAgICAiVktfTEFZRVJfTFVOQVJHX29iamVjdF90cmFja2VyIiwgIlZLX0xBWUVSX0xVTkFS
R19jb3JlX3ZhbGlkYXRpb24iLAorICAgICJWS19MQVlFUl9HT09HTEVfdW5pcXVlX29iamVjdHMi
fTsKKworYm9vbCBIYXNWYWxpZGF0aW9uTGF5ZXIoY29uc3Qgc3RkOjp2ZWN0b3I8VmtMYXllclBy
b3BlcnRpZXM+ICZsYXllclByb3BzLCBjb25zdCBjaGFyICpsYXllck5hbWUpCit7CisgICAgZm9y
IChjb25zdCBhdXRvICZsYXllclByb3AgOiBsYXllclByb3BzKQorICAgIHsKKyAgICAgICAgaWYg
KHN0ZDo6c3RyaW5nKGxheWVyUHJvcC5sYXllck5hbWUpID09IGxheWVyTmFtZSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgSGFzS2hyb25vc1ZhbGlkYXRpb25MYXllcihjb25zdCBzdGQ6
OnZlY3RvcjxWa0xheWVyUHJvcGVydGllcz4gJmxheWVyUHJvcHMpCit7CisgICAgcmV0dXJuIEhh
c1ZhbGlkYXRpb25MYXllcihsYXllclByb3BzLCBrVmtLaHJvbm9zVmFsaWRhdGlvbkxheWVyTmFt
ZSk7Cit9CisKK2Jvb2wgSGFzU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXIoY29uc3Qgc3RkOjp2ZWN0
b3I8VmtMYXllclByb3BlcnRpZXM+ICZsYXllclByb3BzKQoreworICAgIHJldHVybiBIYXNWYWxp
ZGF0aW9uTGF5ZXIobGF5ZXJQcm9wcywga1ZrU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXJOYW1lKTsK
K30KKworYm9vbCBIYXNWYWxpZGF0aW9uTGF5ZXJzKGNvbnN0IHN0ZDo6dmVjdG9yPFZrTGF5ZXJQ
cm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcykKK3sKKyAgICBmb3IgKGNvbnN0IGNoYXIgKmxheWVyTmFt
ZSA6IGtWa1ZhbGlkYXRpb25MYXllck5hbWVzKQorICAgIHsKKyAgICAgICAgaWYgKCFIYXNWYWxp
ZGF0aW9uTGF5ZXIobGF5ZXJQcm9wcywgbGF5ZXJOYW1lKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKIGNvbnN0IGNoYXIgKlZ1bGthblJlc3VsdFN0
cmluZyhWa1Jlc3VsdCByZXN1bHQpCiB7CiAgICAgc3dpdGNoIChyZXN1bHQpCkBAIC0yMjYsMTUg
KzI0OCwxNSBAQCBib29sIEdldEF2YWlsYWJsZVZhbGlkYXRpb25MYXllcnMoY29uc3Qgc3RkOjp2
ZWN0b3I8VmtMYXllclByb3BlcnRpZXM+ICZsYXllclBybwogICAgIC8vIEZhdm9yIHVuaWZpZWQg
S2hyb25vcyBsYXllciwgYnV0IGZhbGxiYWNrIHRvIHN0YW5kYXJkIHZhbGlkYXRpb24KICAgICBp
ZiAoSGFzS2hyb25vc1ZhbGlkYXRpb25MYXllcihsYXllclByb3BzKSkKICAgICB7Ci0gICAgICAg
IGVuYWJsZWRMYXllck5hbWVzLT5wdXNoX2JhY2soZ19Wa0tocm9ub3NWYWxpZGF0aW9uTGF5ZXJO
YW1lKTsKKyAgICAgICAgZW5hYmxlZExheWVyTmFtZXMtPnB1c2hfYmFjayhrVmtLaHJvbm9zVmFs
aWRhdGlvbkxheWVyTmFtZSk7CiAgICAgfQogICAgIGVsc2UgaWYgKEhhc1N0YW5kYXJkVmFsaWRh
dGlvbkxheWVyKGxheWVyUHJvcHMpKQogICAgIHsKLSAgICAgICAgZW5hYmxlZExheWVyTmFtZXMt
PnB1c2hfYmFjayhnX1ZrU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXJOYW1lKTsKKyAgICAgICAgZW5h
YmxlZExheWVyTmFtZXMtPnB1c2hfYmFjayhrVmtTdGFuZGFyZFZhbGlkYXRpb25MYXllck5hbWUp
OwogICAgIH0KICAgICBlbHNlIGlmIChIYXNWYWxpZGF0aW9uTGF5ZXJzKGxheWVyUHJvcHMpKQog
ICAgIHsKLSAgICAgICAgZm9yIChjb25zdCBjaGFyICpsYXllck5hbWUgOiBnX1ZrVmFsaWRhdGlv
bkxheWVyTmFtZXMpCisgICAgICAgIGZvciAoY29uc3QgY2hhciAqbGF5ZXJOYW1lIDoga1ZrVmFs
aWRhdGlvbkxheWVyTmFtZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVuYWJsZWRMYXllck5h
bWVzLT5wdXNoX2JhY2sobGF5ZXJOYW1lKTsKICAgICAgICAgfQpAQCAtMzI5LDYgKzM1MSwyOSBA
QCBhbmdsZTo6UmVzdWx0IE1lbW9yeVByb3BlcnRpZXM6OmZpbmRDb21wYXRpYmxlTWVtb3J5SW5k
ZXgoCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBXZSBkaWQgbm90IGZpbmQgYSBjb21wYXRp
YmxlIG1lbW9yeSB0eXBlLCB0aGUgVnVsa2FuIHNwZWMgc2F5cyB0aGUgZm9sbG93aW5nIC0KKyAg
ICAvLyAgICAgVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgbWVtb3J5IHR5cGUgd2l0aCBib3Ro
IHRoZQorICAgIC8vICAgICBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCBhbmQg
VktfTUVNT1JZX1BST1BFUlRZX0hPU1RfQ09IRVJFTlRfQklUCisgICAgLy8gICAgIGJpdHMgc2V0
IGluIGl0cyBwcm9wZXJ0eUZsYWdzCisgICAgY29uc3RleHByIFZrTWVtb3J5UHJvcGVydHlGbGFn
cyBmYWxsYmFja01lbW9yeVByb3BlcnR5RmxhZ3MgPQorICAgICAgICBWS19NRU1PUllfUFJPUEVS
VFlfSE9TVF9WSVNJQkxFX0JJVCB8IFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJ
VDsKKworICAgIC8vIElmIHRoZSBjYWxsZXIgd2FudGVkIGEgaG9zdCB2aXNpYmxlIG1lbW9yeSwg
anVzdCByZXR1cm4gdGhlIG1lbW9yeSBpbmRleAorICAgIC8vIHdpdGggdGhlIGZhbGxiYWNrIG1l
bW9yeSBmbGFncy4KKyAgICBpZiAocmVxdWVzdGVkTWVtb3J5UHJvcGVydHlGbGFncyAmIFZLX01F
TU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUKQorICAgIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgbWVtb3J5SW5kZXggOiBhbmdsZTo6Qml0U2V0MzI8MzI+KG1lbW9yeVJlcXVpcmVtZW50cy5t
ZW1vcnlUeXBlQml0cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgobU1lbW9yeVByb3Bl
cnRpZXMubWVtb3J5VHlwZXNbbWVtb3J5SW5kZXhdLnByb3BlcnR5RmxhZ3MgJgorICAgICAgICAg
ICAgICAgICBmYWxsYmFja01lbW9yeVByb3BlcnR5RmxhZ3MpID09IGZhbGxiYWNrTWVtb3J5UHJv
cGVydHlGbGFncykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAqbWVtb3J5UHJvcGVy
dHlGbGFnc091dCA9IG1NZW1vcnlQcm9wZXJ0aWVzLm1lbW9yeVR5cGVzW21lbW9yeUluZGV4XS5w
cm9wZXJ0eUZsYWdzOworICAgICAgICAgICAgICAgICp0eXBlSW5kZXhPdXQgICAgICAgICAgID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1lbW9yeUluZGV4KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKICAgICAvLyBUT0RPKGptYWRpbGwpOiBBZGQgZXJyb3IgbWVzc2FnZSB0byBlcnJvci4K
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihWS19FUlJPUl9JTkNPTVBBVElCTEVfRFJJVkVSLCBf
X0ZJTEVfXywgQU5HTEVfRlVOQ1RJT04sIF9fTElORV9fKTsKICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6U3RvcDsKQEAgLTM0NCwxNiArMzg5LDggQEAgdm9pZCBTdGFnaW5nQnVmZmVyOjpkZXN0
cm95KFZrRGV2aWNlIGRldmljZSkKICAgICBtU2l6ZSA9IDA7CiB9CiAKLWFuZ2xlOjpSZXN1bHQg
U3RhZ2luZ0J1ZmZlcjo6aW5pdChDb250ZXh0VmsgKmNvbnRleHRWaywgVmtEZXZpY2VTaXplIHNp
emUsIFN0YWdpbmdVc2FnZSB1c2FnZSkKK2FuZ2xlOjpSZXN1bHQgU3RhZ2luZ0J1ZmZlcjo6aW5p
dChDb250ZXh0ICpjb250ZXh0LCBWa0RldmljZVNpemUgc2l6ZSwgU3RhZ2luZ1VzYWdlIHVzYWdl
KQogewotICAgIC8vIFRPRE86IFJlbW92ZSB3aXRoIGFuZ2xlYnVnLmNvbS8yMTYyOiBWdWxrYW46
IEltcGxlbWVudCBkZXZpY2UgbWVtb3J5IHN1Yi1hbGxvY2F0aW9uCi0gICAgLy8gQ2hlY2sgaWYg
d2UgaGF2ZSB0b28gbWFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGFscmVhZHkgYW5kIG5lZWQgdG8g
ZnJlZSBzb21lIGJlZm9yZSBhbGxvY2F0aW5nCi0gICAgLy8gbW9yZSBhbmQgKHBvc3NpYmx5KSBl
eGNlZWRpbmcgdGhlIGRldmljZSdzIGxpbWl0cy4KLSAgICBpZiAoY29udGV4dFZrLT5zaG91bGRG
bHVzaCgpKQotICAgIHsKLSAgICAgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+Zmx1c2hJbXBsKG51
bGxwdHIpKTsKLSAgICB9Ci0KICAgICBWa0J1ZmZlckNyZWF0ZUluZm8gY3JlYXRlSW5mbyAgICA9
IHt9OwogICAgIGNyZWF0ZUluZm8uc1R5cGUgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJF
X1RZUEVfQlVGRkVSX0NSRUFURV9JTkZPOwogICAgIGNyZWF0ZUluZm8uZmxhZ3MgICAgICAgICAg
ICAgICAgID0gMDsKQEAgLTM2Niw5ICs0MDMsMTEgQEAgYW5nbGU6OlJlc3VsdCBTdGFnaW5nQnVm
ZmVyOjppbml0KENvbnRleHRWayAqY29udGV4dFZrLCBWa0RldmljZVNpemUgc2l6ZSwgU3RhZ2kK
ICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgZmxhZ3MgPQogICAgICAgICAoVktfTUVNT1JZX1BS
T1BFUlRZX0hPU1RfVklTSUJMRV9CSVQgfCBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9DT0hFUkVO
VF9CSVQpOwogCi0gICAgQU5HTEVfVktfVFJZKGNvbnRleHRWaywgbUJ1ZmZlci5pbml0KGNvbnRl
eHRWay0+Z2V0RGV2aWNlKCksIGNyZWF0ZUluZm8pKTsKKyAgICBBTkdMRV9WS19UUlkoY29udGV4
dCwgbUJ1ZmZlci5pbml0KGNvbnRleHQtPmdldERldmljZSgpLCBjcmVhdGVJbmZvKSk7CiAgICAg
VmtNZW1vcnlQcm9wZXJ0eUZsYWdzIGZsYWdzT3V0ID0gMDsKLSAgICBBTkdMRV9UUlkoQWxsb2Nh
dGVCdWZmZXJNZW1vcnkoY29udGV4dFZrLCBmbGFncywgJmZsYWdzT3V0LCBudWxscHRyLCAmbUJ1
ZmZlciwgJm1EZXZpY2VNZW1vcnkpKTsKKyAgICBWa0RldmljZVNpemUgc2l6ZUlnbm9yZWQ7Cisg
ICAgQU5HTEVfVFJZKEFsbG9jYXRlQnVmZmVyTWVtb3J5KGNvbnRleHQsIGZsYWdzLCAmZmxhZ3NP
dXQsIG51bGxwdHIsICZtQnVmZmVyLCAmbURldmljZU1lbW9yeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnNpemVJZ25vcmVkKSk7CiAgICAgbVNpemUgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHNpemUpOwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0K
QEAgLTM3OSwyNyArNDE4LDYzIEBAIHZvaWQgU3RhZ2luZ0J1ZmZlcjo6cmVsZWFzZShDb250ZXh0
VmsgKmNvbnRleHRWaykKICAgICBjb250ZXh0VmstPmFkZEdhcmJhZ2UoJm1EZXZpY2VNZW1vcnkp
OwogfQogCit2b2lkIFN0YWdpbmdCdWZmZXI6OmNvbGxlY3RHYXJiYWdlKFJlbmRlcmVyVmsgKnJl
bmRlcmVyLCBTZXJpYWwgc2VyaWFsKQoreworICAgIHZrOjpHYXJiYWdlTGlzdCBnYXJiYWdlTGlz
dDsKKyAgICBnYXJiYWdlTGlzdC5lbXBsYWNlX2JhY2sodms6OkdldEdhcmJhZ2UoJm1CdWZmZXIp
KTsKKyAgICBnYXJiYWdlTGlzdC5lbXBsYWNlX2JhY2sodms6OkdldEdhcmJhZ2UoJm1EZXZpY2VN
ZW1vcnkpKTsKKworICAgIHZrOjpTaGFyZWRSZXNvdXJjZVVzZSBzaGFyZWRVc2U7CisgICAgc2hh
cmVkVXNlLmluaXQoKTsKKyAgICBzaGFyZWRVc2UudXBkYXRlU2VyaWFsT25lT2ZmKHNlcmlhbCk7
CisgICAgcmVuZGVyZXItPmNvbGxlY3RHYXJiYWdlKHN0ZDo6bW92ZShzaGFyZWRVc2UpLCBzdGQ6
Om1vdmUoZ2FyYmFnZUxpc3QpKTsKK30KKworYW5nbGU6OlJlc3VsdCBJbml0TWFwcGFibGVEZXZp
Y2VNZW1vcnkoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VTaXplIHNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpCit7CisgICAgVmtEZXZpY2UgZGV2aWNl
ID0gY29udGV4dC0+Z2V0RGV2aWNlKCk7CisKKyAgICB1aW50OF90ICptYXBQb2ludGVyOworICAg
IEFOR0xFX1ZLX1RSWShjb250ZXh0LCBkZXZpY2VNZW1vcnktPm1hcChkZXZpY2UsIDAsIFZLX1dI
T0xFX1NJWkUsIDAsICZtYXBQb2ludGVyKSk7CisgICAgbWVtc2V0KG1hcFBvaW50ZXIsIHZhbHVl
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKKworICAgIFZrTWFwcGVkTWVtb3J5UmFuZ2Ug
bWFwcGVkUmFuZ2UgPSB7fTsKKyAgICBtYXBwZWRSYW5nZS5zVHlwZSAgICAgICAgICAgICAgID0g
VktfU1RSVUNUVVJFX1RZUEVfTUFQUEVEX01FTU9SWV9SQU5HRTsKKyAgICBtYXBwZWRSYW5nZS5t
ZW1vcnkgICAgICAgICAgICAgID0gZGV2aWNlTWVtb3J5LT5nZXRIYW5kbGUoKTsKKyAgICBtYXBw
ZWRSYW5nZS5zaXplICAgICAgICAgICAgICAgID0gVktfV0hPTEVfU0laRTsKKyAgICBBTkdMRV9W
S19UUlkoY29udGV4dCwgdmtGbHVzaE1hcHBlZE1lbW9yeVJhbmdlcyhkZXZpY2UsIDEsICZtYXBw
ZWRSYW5nZSkpOworCisgICAgZGV2aWNlTWVtb3J5LT51bm1hcChkZXZpY2UpOworCisgICAgcmV0
dXJuIGFuZ2xlOjpSZXN1bHQ6OkNvbnRpbnVlOworfQorCiBhbmdsZTo6UmVzdWx0IEFsbG9jYXRl
QnVmZmVyTWVtb3J5KHZrOjpDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgcmVxdWVzdGVkTWVtb3J5UHJvcGVy
dHlGbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9w
ZXJ0eUZsYWdzICptZW1vcnlQcm9wZXJ0eUZsYWdzT3V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpleHRyYUFsbG9jYXRpb25JbmZvLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5
T3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNpemUgKnNp
emVPdXQpCiB7CiAgICAgcmV0dXJuIEFsbG9jYXRlQnVmZmVyT3JJbWFnZU1lbW9yeShjb250ZXh0
LCByZXF1ZXN0ZWRNZW1vcnlQcm9wZXJ0eUZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVtb3J5UHJvcGVydHlGbGFnc091dCwgZXh0cmFBbGxvY2F0aW9uSW5m
bywgYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
TWVtb3J5T3V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZU1lbW9yeU91dCwgc2l6ZU91dCk7CiB9CiAKIGFuZ2xlOjpSZXN1bHQgQWxsb2NhdGVJbWFnZU1l
bW9yeSh2azo6Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgbWVtb3J5UHJvcGVydHlGbGFncywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpleHRyYUFsbG9jYXRpb25JbmZv
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlICppbWFnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9yeU91
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VNZW1vcnkgKmRldmlj
ZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZVNp
emUgKnNpemVPdXQpCiB7CiAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbW9yeVByb3BlcnR5
RmxhZ3NPdXQgPSAwOwogICAgIHJldHVybiBBbGxvY2F0ZUJ1ZmZlck9ySW1hZ2VNZW1vcnkoY29u
dGV4dCwgbWVtb3J5UHJvcGVydHlGbGFncywgJm1lbW9yeVByb3BlcnR5RmxhZ3NPdXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUFsbG9jYXRpb25JbmZvLCBp
bWFnZSwgZGV2aWNlTWVtb3J5T3V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dHJhQWxsb2NhdGlvbkluZm8sIGltYWdlLCBkZXZpY2VNZW1vcnlPdXQsIHNpemVP
dXQpOwogfQogCiBhbmdsZTo6UmVzdWx0IEFsbG9jYXRlSW1hZ2VNZW1vcnlXaXRoUmVxdWlyZW1l
bnRzKHZrOjpDb250ZXh0ICpjb250ZXh0LApAQCAtNTQ2LDYgKzYyMSwyNSBAQCB2b2lkIEdhcmJh
Z2VPYmplY3Q6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQogICAgIH0KIH0KIAordm9pZCBNYWtl
RGVidWdVdGlsc0xhYmVsKEdMZW51bSBzb3VyY2UsIGNvbnN0IGNoYXIgKm1hcmtlciwgVmtEZWJ1
Z1V0aWxzTGFiZWxFWFQgKmxhYmVsKQoreworICAgIHN0YXRpYyBjb25zdGV4cHIgYW5nbGU6OkNv
bG9yRiBrTGFiZWxDb2xvcnNbNl0gPSB7CisgICAgICAgIGFuZ2xlOjpDb2xvckYoMS4wZiwgMC41
ZiwgMC41ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfQVBJCisgICAgICAgIGFuZ2xlOjpDb2xv
ckYoMC41ZiwgMS4wZiwgMC41ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RF
TQorICAgICAgICBhbmdsZTo6Q29sb3JGKDAuNWYsIDAuNWYsIDEuMGYsIDEuMGYpLCAgLy8gREVC
VUdfU09VUkNFX1NIQURFUl9DT01QSUxFUgorICAgICAgICBhbmdsZTo6Q29sb3JGKDAuN2YsIDAu
N2YsIDAuN2YsIDEuMGYpLCAgLy8gREVCVUdfU09VUkNFX1RISVJEX1BBUlRZCisgICAgICAgIGFu
Z2xlOjpDb2xvckYoMC41ZiwgMC44ZiwgMC45ZiwgMS4wZiksICAvLyBERUJVR19TT1VSQ0VfQVBQ
TElDQVRJT04KKyAgICAgICAgYW5nbGU6OkNvbG9yRigwLjlmLCAwLjhmLCAwLjVmLCAxLjBmKSwg
IC8vIERFQlVHX1NPVVJDRV9PVEhFUgorICAgIH07CisKKyAgICBpbnQgY29sb3JJbmRleCA9IHNv
dXJjZSAtIEdMX0RFQlVHX1NPVVJDRV9BUEk7CisgICAgQVNTRVJUKGNvbG9ySW5kZXggPj0gMCAm
JiBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbG9ySW5kZXgpIDwgQXJyYXlTaXplKGtMYWJlbENvbG9y
cykpOworCisgICAgbGFiZWwtPnNUeXBlICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9ERUJVR19V
VElMU19MQUJFTF9FWFQ7CisgICAgbGFiZWwtPnBOZXh0ICAgICAgPSBudWxscHRyOworICAgIGxh
YmVsLT5wTGFiZWxOYW1lID0gbWFya2VyOworICAgIGtMYWJlbENvbG9yc1tjb2xvckluZGV4XS53
cml0ZURhdGEobGFiZWwtPmNvbG9yKTsKK30KIH0gIC8vIG5hbWVzcGFjZSB2awogCiBuYW1lc3Bh
Y2UgZ2xfdmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vdmtfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfdXRpbHMuaAppbmRleCAyYWEyNDU3N2IzMzhm
OWFkZjlhZTk2YTE3ZGRkYjVhYTA1M2M5MzE0Li5iZDYxZDk2MjRhYmJmNmJmNjMyYmE1ZTU2ZjY4
NDM0Mjc5NTY3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a191dGlscy5oCkBAIC0yMyw2ICsy
Myw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvc2VyaWFsX3V0aWxzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NlY29uZGFyeUNvbW1hbmRCdWZmZXIuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfd3JhcHBlci5oIgorI2luY2x1
ZGUgInZ1bGthbi92dWxrYW5fZnVjaHNpYV9leHQuaCIKIAogI2RlZmluZSBBTkdMRV9HTF9PQkpF
Q1RTX1goUFJPQykgXAogICAgIFBST0MoQnVmZmVyKSAgICAgICAgICAgICAgICAgXApAQCAtMjgw
LDggKzI4MSw4IEBAIHVzaW5nIEdhcmJhZ2VMaXN0ID0gc3RkOjp2ZWN0b3I8R2FyYmFnZU9iamVj
dD47CiAvLyBBIGxpc3Qgb2YgZ2FyYmFnZSBvYmplY3RzIGFuZCB0aGUgYXNzb2NpYXRlZCBzZXJp
YWwgYWZ0ZXIgd2hpY2ggdGhlIG9iamVjdHMgY2FuIGJlIGRlc3Ryb3llZC4KIHVzaW5nIEdhcmJh
Z2VBbmRTZXJpYWwgPSBPYmplY3RBbmRTZXJpYWw8R2FyYmFnZUxpc3Q+OwogCi0vLyBIb3VzZXMg
bXVsdGlwbGUgbGlzdHMgb2YgZ2FyYmFnZSBvYmplY3RzLiBFYWNoIHN1Yi1saXN0IGhhcyBhIGRp
ZmZlcmVudCBsaWZldGltZS4gVGhleSBzaG91bGQKLS8vIGJlIHNvcnRlZCBzdWNoIHRoYXQgbGF0
ZXItbGl2aW5nIGdhcmJhZ2UgaXMgb3JkZXJlZCBsYXRlciBpbiB0aGUgbGlzdC4KKy8vIEhvdXNl
cyBtdWx0aXBsZSBsaXN0cyBvZiBnYXJiYWdlIG9iamVjdHMuIEVhY2ggc3ViLWxpc3QgaGFzIGEg
ZGlmZmVyZW50IGxpZmV0aW1lLiBUaGV5IHNob3VsZCBiZQorLy8gc29ydGVkIHN1Y2ggdGhhdCBs
YXRlci1saXZpbmcgZ2FyYmFnZSBpcyBvcmRlcmVkIGxhdGVyIGluIHRoZSBsaXN0LgogdXNpbmcg
R2FyYmFnZVF1ZXVlID0gc3RkOjp2ZWN0b3I8R2FyYmFnZUFuZFNlcmlhbD47CiAKIGNsYXNzIE1l
bW9yeVByb3BlcnRpZXMgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKQEAgLTMwNyw5ICszMDgs
MTAgQEAgY2xhc3MgU3RhZ2luZ0J1ZmZlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICBw
dWJsaWM6CiAgICAgU3RhZ2luZ0J1ZmZlcigpOwogICAgIHZvaWQgcmVsZWFzZShDb250ZXh0Vmsg
KmNvbnRleHRWayk7CisgICAgdm9pZCBjb2xsZWN0R2FyYmFnZShSZW5kZXJlclZrICpyZW5kZXJl
ciwgU2VyaWFsIHNlcmlhbCk7CiAgICAgdm9pZCBkZXN0cm95KFZrRGV2aWNlIGRldmljZSk7CiAK
LSAgICBhbmdsZTo6UmVzdWx0IGluaXQoQ29udGV4dFZrICpjb250ZXh0LCBWa0RldmljZVNpemUg
c2l6ZSwgU3RhZ2luZ1VzYWdlIHVzYWdlKTsKKyAgICBhbmdsZTo6UmVzdWx0IGluaXQoQ29udGV4
dCAqY29udGV4dCwgVmtEZXZpY2VTaXplIHNpemUsIFN0YWdpbmdVc2FnZSB1c2FnZSk7CiAKICAg
ICBCdWZmZXIgJmdldEJ1ZmZlcigpIHsgcmV0dXJuIG1CdWZmZXI7IH0KICAgICBjb25zdCBCdWZm
ZXIgJmdldEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXI7IH0KQEAgLTMyMywxOCArMzI1
LDI2IEBAIGNsYXNzIFN0YWdpbmdCdWZmZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICBzaXplX3QgbVNpemU7CiB9OwogCithbmdsZTo6UmVzdWx0IEluaXRNYXBwYWJsZURldmljZU1l
bW9yeSh2azo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZrOjpEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9yeSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlKTsKKwogYW5nbGU6OlJlc3VsdCBB
bGxvY2F0ZUJ1ZmZlck1lbW9yeShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgcmVxdWVzdGVkTWVtb3J5UHJv
cGVydHlGbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQ
cm9wZXJ0eUZsYWdzICptZW1vcnlQcm9wZXJ0eUZsYWdzT3V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpleHRyYUFsbG9jYXRpb25JbmZvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VNZW1vcnkgKmRldmljZU1l
bW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VTaXpl
ICpzaXplT3V0KTsKIAogYW5nbGU6OlJlc3VsdCBBbGxvY2F0ZUltYWdlTWVtb3J5KENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9w
ZXJ0eUZsYWdzIG1lbW9yeVByb3BlcnR5RmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqZXh0cmFBbGxvY2F0aW9uSW5mbywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbWFnZSAqaW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERldmljZU1lbW9yeSAqZGV2aWNlTWVtb3J5T3V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqc2l6ZU91dCk7CisK
IGFuZ2xlOjpSZXN1bHQgQWxsb2NhdGVJbWFnZU1lbW9yeVdpdGhSZXF1aXJlbWVudHMoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbW9yeVByb3BlcnR5RmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrTWVtb3J5
UmVxdWlyZW1lbnRzICZtZW1vcnlSZXF1aXJlbWVudHMsCkBAIC02MTQsNiArNjI0LDcgQEAgc3Rh
dGljX2Fzc2VydChzaXplb2YoU3BlY2lhbGl6YXRpb25Db25zdGFudEJpdFNldCkgPT0gc2l6ZW9m
KHVpbnQzMl90KSwgIlVuZXhwZWMKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdXNpbmcgU3BlY2lh
bGl6YXRpb25Db25zdGFudE1hcCA9IGFuZ2xlOjpQYWNrZWRFbnVtTWFwPHNoOjp2azo6U3BlY2lh
bGl6YXRpb25Db25zdGFudElkLCBUPjsKIAordm9pZCBNYWtlRGVidWdVdGlsc0xhYmVsKEdMZW51
bSBzb3VyY2UsIGNvbnN0IGNoYXIgKm1hcmtlciwgVmtEZWJ1Z1V0aWxzTGFiZWxFWFQgKmxhYmVs
KTsKIH0gIC8vIG5hbWVzcGFjZSB2awogCiBuYW1lc3BhY2UgZ2xfdmsKQEAgLTYyOSwxMiArNjQw
LDYgQEAgVmtTYW1wbGVDb3VudEZsYWdCaXRzIEdldFNhbXBsZXMoR0xpbnQgc2FtcGxlQ291bnQp
OwogVmtDb21wb25lbnRTd2l6emxlIEdldFN3aXp6bGUoY29uc3QgR0xlbnVtIHN3aXp6bGUpOwog
VmtDb21wYXJlT3AgR2V0Q29tcGFyZU9wKGNvbnN0IEdMZW51bSBjb21wYXJlRnVuYyk7CiAKLWNv
bnN0ZXhwciBhbmdsZTo6UGFja2VkRW51bU1hcDxnbDo6RHJhd0VsZW1lbnRzVHlwZSwgVmtJbmRl
eFR5cGU+IGtJbmRleFR5cGVNYXAgPSB7Ci0gICAge2dsOjpEcmF3RWxlbWVudHNUeXBlOjpVbnNp
Z25lZEJ5dGUsIFZLX0lOREVYX1RZUEVfVUlOVDE2fSwKLSAgICB7Z2w6OkRyYXdFbGVtZW50c1R5
cGU6OlVuc2lnbmVkU2hvcnQsIFZLX0lOREVYX1RZUEVfVUlOVDE2fSwKLSAgICB7Z2w6OkRyYXdF
bGVtZW50c1R5cGU6OlVuc2lnbmVkSW50LCBWS19JTkRFWF9UWVBFX1VJTlQzMn0sCi19OwotCiBj
b25zdGV4cHIgZ2w6OlNoYWRlck1hcDxWa1NoYWRlclN0YWdlRmxhZ0JpdHM+IGtTaGFkZXJTdGFn
ZU1hcCA9IHsKICAgICB7Z2w6OlNoYWRlclR5cGU6OlZlcnRleCwgVktfU0hBREVSX1NUQUdFX1ZF
UlRFWF9CSVR9LAogICAgIHtnbDo6U2hhZGVyVHlwZTo6RnJhZ21lbnQsIFZLX1NIQURFUl9TVEFH
RV9GUkFHTUVOVF9CSVR9LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a193cmFwcGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3dyYXBwZXIuaAppbmRleCBm
ZTk4YjViMmI1OTdmMjY1ZmYxZWQwNDdkMTNiYmVhMGU5MWRiZTdjLi5lY2I2ZjU4MWE3NjYzNmRh
OGFlMzExYzUxOWViZDQ2ZjAxMDdkZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3dyYXBwZXIuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX3dyYXBw
ZXIuaApAQCAtMTMxLDYgKzEzMSw5IEBAIGNsYXNzIENvbW1hbmRQb29sIGZpbmFsIDogcHVibGlj
IFdyYXBwZWRPYmplY3Q8Q29tbWFuZFBvb2wsIFZrQ29tbWFuZFBvb2w+CiAKICAgICB2b2lkIGRl
c3Ryb3koVmtEZXZpY2UgZGV2aWNlKTsKICAgICBWa1Jlc3VsdCByZXNldChWa0RldmljZSBkZXZp
Y2UsIFZrQ29tbWFuZFBvb2xSZXNldEZsYWdzIGZsYWdzKTsKKyAgICB2b2lkIGZyZWVDb21tYW5k
QnVmZmVycyhWa0RldmljZSBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgY29tbWFuZEJ1ZmZlckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZrQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcnMpOwogCiAgICAgVmtSZXN1bHQgaW5p
dChWa0RldmljZSBkZXZpY2UsIGNvbnN0IFZrQ29tbWFuZFBvb2xDcmVhdGVJbmZvICZjcmVhdGVJ
bmZvKTsKIH07CkBAIC0xODUsNyArMTg4LDcgQEAgY2xhc3MgQ29tbWFuZEJ1ZmZlciA6IHB1Ymxp
YyBXcmFwcGVkT2JqZWN0PENvbW1hbmRCdWZmZXIsIFZrQ29tbWFuZEJ1ZmZlcj4KIAogICAgIFZr
UmVzdWx0IGJlZ2luKGNvbnN0IFZrQ29tbWFuZEJ1ZmZlckJlZ2luSW5mbyAmaW5mbyk7CiAKLSAg
ICB2b2lkIGJlZ2luUXVlcnkoVmtRdWVyeVBvb2wgcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeSwg
VmtRdWVyeUNvbnRyb2xGbGFncyBmbGFncyk7CisgICAgdm9pZCBiZWdpblF1ZXJ5KGNvbnN0IFF1
ZXJ5UG9vbCAmcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeSwgVmtRdWVyeUNvbnRyb2xGbGFncyBm
bGFncyk7CiAKICAgICB2b2lkIGJlZ2luUmVuZGVyUGFzcyhjb25zdCBWa1JlbmRlclBhc3NCZWdp
bkluZm8gJmJlZ2luSW5mbywgVmtTdWJwYXNzQ29udGVudHMgc3VicGFzc0NvbnRlbnRzKTsKIApA
QCAtMjkxLDcgKzI5NCw3IEBAIGNsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgV3JhcHBlZE9i
amVjdDxDb21tYW5kQnVmZmVyLCBWa0NvbW1hbmRCdWZmZXI+CiAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3Qgc3RyaWRlKTsKIAogICAgIFZrUmVzdWx0IGVuZCgpOwotICAgIHZvaWQgZW5k
UXVlcnkoVmtRdWVyeVBvb2wgcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeSk7CisgICAgdm9pZCBl
bmRRdWVyeShjb25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwgdWludDMyX3QgcXVlcnkpOwogICAg
IHZvaWQgZW5kUmVuZGVyUGFzcygpOwogICAgIHZvaWQgZXhlY3V0ZUNvbW1hbmRzKHVpbnQzMl90
IGNvbW1hbmRCdWZmZXJDb3VudCwgY29uc3QgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcnMp
OwogCkBAIC0zMTAsNyArMzEzLDcgQEAgY2xhc3MgQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBXcmFw
cGVkT2JqZWN0PENvbW1hbmRCdWZmZXIsIFZrQ29tbWFuZEJ1ZmZlcj4KIAogICAgIHZvaWQgaW1h
Z2VCYXJyaWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKICAgICAgICAgICAg
ICAgICAgICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgKmltYWdlTWVtb3J5QmFycmll
cik7CisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgJmlt
YWdlTWVtb3J5QmFycmllcik7CiAKICAgICB2b2lkIG1lbW9yeUJhcnJpZXIoVmtQaXBlbGluZVN0
YWdlRmxhZ3Mgc3JjU3RhZ2VNYXNrLAogICAgICAgICAgICAgICAgICAgICAgICBWa1BpcGVsaW5l
U3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCkBAIC0zMzUsNyArMzM4LDcgQEAgY2xhc3MgQ29tbWFu
ZEJ1ZmZlciA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PENvbW1hbmRCdWZmZXIsIFZrQ29tbWFuZEJ1
ZmZlcj4KICAgICB2b2lkIHNldEV2ZW50KFZrRXZlbnQgZXZlbnQsIFZrUGlwZWxpbmVTdGFnZUZs
YWdzIHN0YWdlTWFzayk7CiAgICAgVmtSZXN1bHQgcmVzZXQoKTsKICAgICB2b2lkIHJlc2V0RXZl
bnQoVmtFdmVudCBldmVudCwgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3RhZ2VNYXNrKTsKLSAgICB2
b2lkIHJlc2V0UXVlcnlQb29sKFZrUXVlcnlQb29sIHF1ZXJ5UG9vbCwgdWludDMyX3QgZmlyc3RR
dWVyeSwgdWludDMyX3QgcXVlcnlDb3VudCk7CisgICAgdm9pZCByZXNldFF1ZXJ5UG9vbChjb25z
dCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwgdWludDMyX3QgZmlyc3RRdWVyeSwgdWludDMyX3QgcXVl
cnlDb3VudCk7CiAgICAgdm9pZCByZXNvbHZlSW1hZ2UoY29uc3QgSW1hZ2UgJnNyY0ltYWdlLAog
ICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VMYXlvdXQgc3JjSW1hZ2VMYXlvdXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW1hZ2UgJmRzdEltYWdlLApAQCAtMzU0LDggKzM1Nywy
OCBAQCBjbGFzcyBDb21tYW5kQnVmZmVyIDogcHVibGljIFdyYXBwZWRPYmplY3Q8Q29tbWFuZEJ1
ZmZlciwgVmtDb21tYW5kQnVmZmVyPgogICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0ltYWdl
TWVtb3J5QmFycmllciAqaW1hZ2VNZW1vcnlCYXJyaWVycyk7CiAKICAgICB2b2lkIHdyaXRlVGlt
ZXN0YW1wKFZrUGlwZWxpbmVTdGFnZUZsYWdCaXRzIHBpcGVsaW5lU3RhZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBWa1F1ZXJ5UG9vbCBxdWVyeVBvb2wsCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBRdWVyeVBvb2wgJnF1ZXJ5UG9vbCwKICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IHF1ZXJ5KTsKKworICAgIC8vIFZLX0VYVF90cmFuc2Zvcm1fZmVlZGJhY2sKKyAg
ICB2b2lkIGJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQodWludDMyX3QgZmlyc3RDb3VudGVyQnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjb3VudGVy
QnVmZmVyQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZr
QnVmZmVyICpjb3VudGVyQnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmtEZXZpY2VTaXplICpjb3VudGVyQnVmZmVyT2Zmc2V0cyk7CisgICAgdm9pZCBl
bmRUcmFuc2Zvcm1GZWVkYmFja0VYVCh1aW50MzJfdCBmaXJzdENvdW50ZXJCdWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjb3VudGVyQnVmZmVyQ291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRl
ckJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0Rldmlj
ZVNpemUgKmNvdW50ZXJCdWZmZXJPZmZzZXRzKTsKKyAgICB2b2lkIGJpbmRUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlcnNFWFQodWludDMyX3QgZmlyc3RCaW5kaW5nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaW5kaW5nQ291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrQnVmZmVyICpidWZmZXJzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZVNp
emUgKm9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZrRGV2aWNlU2l6ZSAqc2l6ZXMpOworCisgICAgLy8gVktfRVhUX2RlYnVnX3V0aWxzCisg
ICAgdm9pZCBiZWdpbkRlYnVnVXRpbHNMYWJlbEVYVChjb25zdCBWa0RlYnVnVXRpbHNMYWJlbEVY
VCAmbGFiZWxJbmZvKTsKKyAgICB2b2lkIGVuZERlYnVnVXRpbHNMYWJlbEVYVCgpOworICAgIHZv
aWQgaW5zZXJ0RGVidWdVdGlsc0xhYmVsRVhUKGNvbnN0IFZrRGVidWdVdGlsc0xhYmVsRVhUICZs
YWJlbEluZm8pOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBwcml2CiAKQEAgLTU4OSw2ICs2MTIsMTQg
QEAgQU5HTEVfSU5MSU5FIFZrUmVzdWx0IENvbW1hbmRQb29sOjpyZXNldChWa0RldmljZSBkZXZp
Y2UsIFZrQ29tbWFuZFBvb2xSZXNldEZsYWcKICAgICByZXR1cm4gdmtSZXNldENvbW1hbmRQb29s
KGRldmljZSwgbUhhbmRsZSwgZmxhZ3MpOwogfQogCitBTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5k
UG9vbDo6ZnJlZUNvbW1hbmRCdWZmZXJzKFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY29tbWFuZEJ1ZmZl
ckNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWa0NvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXJzKQoreworICAgIEFTU0VSVCh2
YWxpZCgpKTsKKyAgICB2a0ZyZWVDb21tYW5kQnVmZmVycyhkZXZpY2UsIG1IYW5kbGUsIGNvbW1h
bmRCdWZmZXJDb3VudCwgY29tbWFuZEJ1ZmZlcnMpOworfQorCiBBTkdMRV9JTkxJTkUgVmtSZXN1
bHQgQ29tbWFuZFBvb2w6OmluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0NvbW1hbmRQb29s
Q3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKIHsKICAgICBBU1NFUlQoIXZhbGlkKCkpOwpAQCAtNjg3
LDExICs3MTgsMTEgQEAgQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6YnVmZmVyQmFy
cmllcihWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNTdGFnZU1hc2sKIAogQU5HTEVfSU5MSU5FIHZv
aWQgQ29tbWFuZEJ1ZmZlcjo6aW1hZ2VCYXJyaWVyKFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0
YWdlTWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
a1BpcGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgKmltYWdl
TWVtb3J5QmFycmllcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWa0ltYWdlTWVtb3J5QmFycmllciAmaW1hZ2VNZW1vcnlCYXJyaWVyKQogewog
ICAgIEFTU0VSVCh2YWxpZCgpKTsKICAgICB2a0NtZFBpcGVsaW5lQmFycmllcihtSGFuZGxlLCBz
cmNTdGFnZU1hc2ssIGRzdFN0YWdlTWFzaywgMCwgMCwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZU1lbW9yeUJhcnJpZXIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICZpbWFnZU1lbW9yeUJhcnJpZXIpOwogfQogCiBBTkdMRV9JTkxJTkUg
dm9pZCBDb21tYW5kQnVmZmVyOjpkZXN0cm95KFZrRGV2aWNlIGRldmljZSkKQEAgLTg4NSwxMiAr
OTE2LDEyIEBAIEFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OndhaXRFdmVudHModWlu
dDMyX3QgZXZlbnRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VNZW1vcnlCYXJyaWVy
Q291bnQsIGltYWdlTWVtb3J5QmFycmllcnMpOwogfQogCi1BTkdMRV9JTkxJTkUgdm9pZCBDb21t
YW5kQnVmZmVyOjpyZXNldFF1ZXJ5UG9vbChWa1F1ZXJ5UG9vbCBxdWVyeVBvb2wsCitBTkdMRV9J
TkxJTkUgdm9pZCBDb21tYW5kQnVmZmVyOjpyZXNldFF1ZXJ5UG9vbChjb25zdCBRdWVyeVBvb2wg
JnF1ZXJ5UG9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGZpcnN0UXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBxdWVyeUNvdW50KQogewotICAgIEFTU0VSVCh2YWxp
ZCgpKTsKLSAgICB2a0NtZFJlc2V0UXVlcnlQb29sKG1IYW5kbGUsIHF1ZXJ5UG9vbCwgZmlyc3RR
dWVyeSwgcXVlcnlDb3VudCk7CisgICAgQVNTRVJUKHZhbGlkKCkgJiYgcXVlcnlQb29sLnZhbGlk
KCkpOworICAgIHZrQ21kUmVzZXRRdWVyeVBvb2wobUhhbmRsZSwgcXVlcnlQb29sLmdldEhhbmRs
ZSgpLCBmaXJzdFF1ZXJ5LCBxdWVyeUNvdW50KTsKIH0KIAogQU5HTEVfSU5MSU5FIHZvaWQgQ29t
bWFuZEJ1ZmZlcjo6cmVzb2x2ZUltYWdlKGNvbnN0IEltYWdlICZzcmNJbWFnZSwKQEAgLTkwNSwy
NiArOTM2LDI2IEBAIEFOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OnJlc29sdmVJbWFn
ZShjb25zdCBJbWFnZSAmc3JjSW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgZHN0SW1hZ2VM
YXlvdXQsIHJlZ2lvbkNvdW50LCByZWdpb25zKTsKIH0KIAotQU5HTEVfSU5MSU5FIHZvaWQgQ29t
bWFuZEJ1ZmZlcjo6YmVnaW5RdWVyeShWa1F1ZXJ5UG9vbCBxdWVyeVBvb2wsCitBTkdMRV9JTkxJ
TkUgdm9pZCBDb21tYW5kQnVmZmVyOjpiZWdpblF1ZXJ5KGNvbnN0IFF1ZXJ5UG9vbCAmcXVlcnlQ
b29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBxdWVyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtR
dWVyeUNvbnRyb2xGbGFncyBmbGFncykKIHsKLSAgICBBU1NFUlQodmFsaWQoKSk7Ci0gICAgdmtD
bWRCZWdpblF1ZXJ5KG1IYW5kbGUsIHF1ZXJ5UG9vbCwgcXVlcnksIGZsYWdzKTsKKyAgICBBU1NF
UlQodmFsaWQoKSAmJiBxdWVyeVBvb2wudmFsaWQoKSk7CisgICAgdmtDbWRCZWdpblF1ZXJ5KG1I
YW5kbGUsIHF1ZXJ5UG9vbC5nZXRIYW5kbGUoKSwgcXVlcnksIGZsYWdzKTsKIH0KIAotQU5HTEVf
SU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6ZW5kUXVlcnkoVmtRdWVyeVBvb2wgcXVlcnlQb29s
LCB1aW50MzJfdCBxdWVyeSkKK0FOR0xFX0lOTElORSB2b2lkIENvbW1hbmRCdWZmZXI6OmVuZFF1
ZXJ5KGNvbnN0IFF1ZXJ5UG9vbCAmcXVlcnlQb29sLCB1aW50MzJfdCBxdWVyeSkKIHsKLSAgICBB
U1NFUlQodmFsaWQoKSk7Ci0gICAgdmtDbWRFbmRRdWVyeShtSGFuZGxlLCBxdWVyeVBvb2wsIHF1
ZXJ5KTsKKyAgICBBU1NFUlQodmFsaWQoKSAmJiBxdWVyeVBvb2wudmFsaWQoKSk7CisgICAgdmtD
bWRFbmRRdWVyeShtSGFuZGxlLCBxdWVyeVBvb2wuZ2V0SGFuZGxlKCksIHF1ZXJ5KTsKIH0KIAog
QU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6d3JpdGVUaW1lc3RhbXAoVmtQaXBlbGlu
ZVN0YWdlRmxhZ0JpdHMgcGlwZWxpbmVTdGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZrUXVlcnlQb29sIHF1ZXJ5UG9vbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1ZXJ5UG9vbCAmcXVl
cnlQb29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgcXVlcnkpCiB7CiAgICAgQVNTRVJUKHZhbGlkKCkpOwotICAgIHZrQ21kV3JpdGVU
aW1lc3RhbXAobUhhbmRsZSwgcGlwZWxpbmVTdGFnZSwgcXVlcnlQb29sLCBxdWVyeSk7CisgICAg
dmtDbWRXcml0ZVRpbWVzdGFtcChtSGFuZGxlLCBwaXBlbGluZVN0YWdlLCBxdWVyeVBvb2wuZ2V0
SGFuZGxlKCksIHF1ZXJ5KTsKIH0KIAogQU5HTEVfSU5MSU5FIHZvaWQgQ29tbWFuZEJ1ZmZlcjo6
ZHJhdyh1aW50MzJfdCB2ZXJ0ZXhDb3VudCwKQEAgLTEwNjUsNiArMTA5Niw2MCBAQCBBTkdMRV9J
TkxJTkUgdm9pZCBDb21tYW5kQnVmZmVyOjpiaW5kVmVydGV4QnVmZmVycyh1aW50MzJfdCBmaXJz
dEJpbmRpbmcsCiAgICAgdmtDbWRCaW5kVmVydGV4QnVmZmVycyhtSGFuZGxlLCBmaXJzdEJpbmRp
bmcsIGJpbmRpbmdDb3VudCwgYnVmZmVycywgb2Zmc2V0cyk7CiB9CiAKK0FOR0xFX0lOTElORSB2
b2lkIENvbW1hbmRCdWZmZXI6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2tFWFQodWludDMyX3QgZmly
c3RDb3VudGVyQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjb3VudGVyQnVmZmVyQ291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZrQnVmZmVyICpjb3VudGVyQnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtEZXZpY2VTaXplICpjb3VudGVy
QnVmZmVyT2Zmc2V0cykKK3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgQVNTRVJUKHZrQ21k
QmVnaW5UcmFuc2Zvcm1GZWVkYmFja0VYVCk7CisgICAgdmtDbWRCZWdpblRyYW5zZm9ybUZlZWRi
YWNrRVhUKG1IYW5kbGUsIGZpcnN0Q291bnRlckJ1ZmZlciwgY291bnRlckJ1ZmZlckNvdW50LCBj
b3VudGVyQnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRl
ckJ1ZmZlck9mZnNldHMpOworfQorCitBTkdMRV9JTkxJTkUgdm9pZCBDb21tYW5kQnVmZmVyOjpl
bmRUcmFuc2Zvcm1GZWVkYmFja0VYVCh1aW50MzJfdCBmaXJzdENvdW50ZXJCdWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
MzJfdCBjb3VudGVyQnVmZmVyQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0J1ZmZlciAqY291bnRlckJ1ZmZlcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWa0RldmljZVNpemUgKmNvdW50ZXJCdWZmZXJPZmZzZXRzKQoreworICAgIEFTU0VS
VCh2YWxpZCgpKTsKKyAgICBBU1NFUlQodmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFja0VYVCk7Cisg
ICAgdmtDbWRFbmRUcmFuc2Zvcm1GZWVkYmFja0VYVChtSGFuZGxlLCBmaXJzdENvdW50ZXJCdWZm
ZXIsIGNvdW50ZXJCdWZmZXJDb3VudCwgY291bnRlckJ1ZmZlcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VudGVyQnVmZmVyT2Zmc2V0cyk7Cit9CisKK0FOR0xFX0lOTElO
RSB2b2lkIENvbW1hbmRCdWZmZXI6OmJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnNFWFQodWlu
dDMyX3QgZmlyc3RCaW5kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiaW5kaW5nQ291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFZrQnVmZmVyICpidWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0RldmljZVNpemUg
Km9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrRGV2aWNlU2l6ZSAqc2l6ZXMpCit7CisgICAgQVNT
RVJUKHZhbGlkKCkpOworICAgIEFTU0VSVCh2a0NtZEJpbmRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cnNFWFQpOworICAgIHZrQ21kQmluZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyc0VYVChtSGFuZGxl
LCBmaXJzdEJpbmRpbmcsIGJpbmRpbmdDb3VudCwgYnVmZmVycywgb2Zmc2V0cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXMpOworfQorCitBTkdMRV9JTkxJ
TkUgdm9pZCBDb21tYW5kQnVmZmVyOjpiZWdpbkRlYnVnVXRpbHNMYWJlbEVYVChjb25zdCBWa0Rl
YnVnVXRpbHNMYWJlbEVYVCAmbGFiZWxJbmZvKQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAg
ICBBU1NFUlQodmtDbWRCZWdpbkRlYnVnVXRpbHNMYWJlbEVYVCk7CisgICAgdmtDbWRCZWdpbkRl
YnVnVXRpbHNMYWJlbEVYVChtSGFuZGxlLCAmbGFiZWxJbmZvKTsKK30KKworQU5HTEVfSU5MSU5F
IHZvaWQgQ29tbWFuZEJ1ZmZlcjo6ZW5kRGVidWdVdGlsc0xhYmVsRVhUKCkKK3sKKyAgICBBU1NF
UlQodmFsaWQoKSk7CisgICAgQVNTRVJUKHZrQ21kRW5kRGVidWdVdGlsc0xhYmVsRVhUKTsKKyAg
ICB2a0NtZEVuZERlYnVnVXRpbHNMYWJlbEVYVChtSGFuZGxlKTsKK30KKworQU5HTEVfSU5MSU5F
IHZvaWQgQ29tbWFuZEJ1ZmZlcjo6aW5zZXJ0RGVidWdVdGlsc0xhYmVsRVhUKGNvbnN0IFZrRGVi
dWdVdGlsc0xhYmVsRVhUICZsYWJlbEluZm8pCit7CisgICAgQVNTRVJUKHZhbGlkKCkpOworICAg
IEFTU0VSVCh2a0NtZEluc2VydERlYnVnVXRpbHNMYWJlbEVYVCk7CisgICAgdmtDbWRJbnNlcnRE
ZWJ1Z1V0aWxzTGFiZWxFWFQobUhhbmRsZSwgJmxhYmVsSW5mbyk7Cit9CiB9ICAvLyBuYW1lc3Bh
Y2UgcHJpdgogCiAvLyBJbWFnZSBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4veGNiL0Rpc3BsYXlW
a1hjYi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL3hjYi9EaXNwbGF5VmtYY2IuY3BwCmluZGV4IGRlM2UwNzUzZWVkOWM4MGVkYmQwZWQy
ZWZhZTVlNjYyYjI1MjE0NDEuLjJkOGIzOTlkMjBjZjdhNDMyYjZkOGMxY2M1YjBiMDIwYjFjYjkw
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4veGNiL0Rpc3BsYXlWa1hjYi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi94Y2IvRGlzcGxheVZrWGNiLmNwcApA
QCAtMTEsNiArMTEsNyBAQAogCiAjaW5jbHVkZSA8eGNiL3hjYi5oPgogCisjaW5jbHVkZSAibGli
QU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19j
YXBzX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3hjYi9XaW5k
b3dTdXJmYWNlVmtYY2IuaCIKIApAQCAtMTIxLDQgKzEyMiwxMCBAQCBEaXNwbGF5SW1wbCAqQ3Jl
YXRlVnVsa2FuWGNiRGlzcGxheShjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCiB7CiAg
ICAgcmV0dXJuIG5ldyBEaXNwbGF5VmtYY2Ioc3RhdGUpOwogfQorCithbmdsZTo6UmVzdWx0IERp
c3BsYXlWa1hjYjo6d2FpdE5hdGl2ZUltcGwoKQoreworICAgIFhTeW5jKG1TdGF0ZS5kaXNwbGF5
SWQsIEZhbHNlKTsKKyAgICByZXR1cm4gYW5nbGU6OlJlc3VsdDo6Q29udGludWU7Cit9CiB9ICAv
LyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4veGNiL0Rpc3BsYXlWa1hjYi5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi94Y2IvRGlzcGxheVZrWGNi
LmgKaW5kZXggYzQwNDVkMjI4NzM4MDY2NjQ3NTQxY2M0Nzg0MjA4OTQ5NTFlNzlkMC4uZGRkYmE0
MjU3MzcxMDkyZWQ2ZDE0ZWNmZjdhYjFkMzQ0ZjcyZGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi94Y2IvRGlzcGxheVZr
WGNiLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi94Y2IvRGlzcGxheVZrWGNiLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgRGlzcGxh
eVZrWGNiIDogcHVibGljIERpc3BsYXlWawogICAgIGJvb2wgY2hlY2tDb25maWdTdXBwb3J0KGVn
bDo6Q29uZmlnICpjb25maWcpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgY2hhciAqZ2V0V1NJRXh0
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYW5nbGU6OlJlc3VsdCB3YWl0TmF0aXZlSW1w
bCgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgeGNiX2Nvbm5lY3Rpb25fdCAqbVhjYkNv
bm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkVHTC5jcHAKaW5kZXggMzU0OGQyOTQ0MTEzNjczOTMxMjc1YjFmYWJlYmRk
OTAyZDQ4ODAwNC4uYWZmNjI0ZGY0OTQ3Mjg4ZmM0YTBjZWU2YmYyNGI2MzE5NGUyZWUzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25F
R0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRUdMLmNwcApAQCAtMjI1LDYgKzIyNSwxMyBAQCBFcnJvciBWYWxpZGF0ZUNvbmZpZ0F0dHJp
YnV0ZShjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBFR0xBdHRyaWIgYXR0cmlidXRlKQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBFR0xfQklORF9UT19U
RVhUVVJFX1RBUkdFVF9BTkdMRToKKyAgICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5z
aW9ucygpLmlvc3VyZmFjZUNsaWVudEJ1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRWdsQmFkQXR0cmlidXRlKCkgPDwgIkVHTF9BTkdMRV9pb3N1cmZhY2VfY2xp
ZW50X2J1ZmZlciBpcyBub3QgZW5hYmxlZC4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFZ2xCYWRBdHRy
aWJ1dGUoKSA8PCAiVW5rbm93biBhdHRyaWJ1dGUuIjsKICAgICB9CkBAIC01NTksNiArNTY2LDE0
IEBAIEVycm9yIFZhbGlkYXRlR2V0UGxhdGZvcm1EaXNwbGF5Q29tbW9uKEVHTGVudW0gcGxhdGZv
cm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9ERVZJQ0VfVFlQRV9FR0xfQU5HTEU6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVEZXZpY2VUeXBlRUdMQU5HTEUp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRWdsQmFkQXR0cmlidXRlKCkgPDwgIkVHTF9BTkdMRV9wbGF0Zm9ybV9h
bmdsZV9kZXZpY2VfdHlwZV8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZWdsX2FuZ2xlIGlzIG5vdCBzdXBwb3J0ZWQiOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfU1dJRlRTSEFERVJfQU5HTEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVEZXZpY2VUeXBlU3dpZnRTaGFk
ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewpAQCAtMTg3NCwxOSArMTg4OSwxMSBA
QCBFcnJvciBWYWxpZGF0ZUNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKERpc3BsYXkgKmRp
c3BsYXksCiAKICAgICBpZiAoYnVmdHlwZSA9PSBFR0xfSU9TVVJGQUNFX0FOR0xFKQogICAgIHsK
LSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ09TKSB8fCBkZWZpbmVkKEFOR0xFX1BMQVRG
T1JNX01BQ0NBVEFMWVNUKQotICAgICAgICBpZiAodGV4dHVyZVRhcmdldCAhPSBFR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUpCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxFR0xlbnVtPih0ZXh0
dXJlVGFyZ2V0KSAhPSBjb25maWctPmJpbmRUb1RleHR1cmVUYXJnZXQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBFZ2xCYWRBdHRyaWJ1dGUoKQotICAgICAgICAgICAgICAgICAgIDw8
ICJFR0xfSU9TVVJGQUNFIHJlcXVpcmVzIHRoZSBFR0xfVEVYVFVSRV9SRUNUQU5HTEUgdGFyZ2V0
IG9uIGRlc2t0b3AgbWFjT1MiOworICAgICAgICAgICAgICAgICAgIDw8ICJFR0xfSU9TVVJGQUNF
IHJlcXVpcmVzIHRoZSB0ZXh0dXJlIHRhcmdldCB0byBtYXRjaCB0aGUgY29uZmlnIjsKICAgICAg
ICAgfQotI2Vsc2UgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9NQUNPUykgfHwgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9NQUNDQVRBTFlTVCkKLSAgICAgICAgaWYgKHRleHR1cmVUYXJnZXQgIT0g
RUdMX1RFWFRVUkVfMkQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBFZ2xCYWRBdHRy
aWJ1dGUoKSA8PCAiRUdMX0lPU1VSRkFDRSByZXF1aXJlcyB0aGUgRUdMX1RFWFRVUkVfMkQgdGFy
Z2V0IG9uIGlPUyI7Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X01BQ09TKSB8fCBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX01BQ0NBVEFMWVNUKQotCiAgICAgICAg
IGlmICh0ZXh0dXJlRm9ybWF0ICE9IEVHTF9URVhUVVJFX1JHQkEpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBFZ2xCYWRBdHRyaWJ1dGUoKSA8PCAiRUdMX0lPU1VSRkFDRSByZXF1aXJl
cyB0aGUgRUdMX1RFWFRVUkVfUkdCQSBmb3JtYXQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAppbmRleCBhMTYxZmQ3N2U4
MGE0NGUxZjBhYjljYTdjMmQwNDUwNGUwZTZmYWY1Li5iZmE5ODc2OTFhNTljOTVlYjkyY2E1NDEw
ZjJkODcyNTRjNDVlNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcApAQCAtNTcsNiArNTcsMTAgQEAgYm9vbCBDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdFJlcXVpcmVzRXhhY3RTaXplKEdMZW51bSBpbnRlcm5hbEZvcm1h
dCkKICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
TE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
OF9MT1NTWV9ERUNPREVfRVRDMl9FQUNfQU5HTEU6CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfTE9TU1lfREVDT0RFX0VUQzJfRUFDX0FOR0xFOgorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkVEX1JHVEMxX0VYVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1NJR05FRF9SRURfUkdUQzFfRVhUOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkVEX0dS
RUVOX1JHVEMyX0VYVDoKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRURfR1JF
RU5fUkdUQzJfRVhUOgogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JN
X0VYVDoKICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfQlBUQ19VTk9STV9F
WFQ6CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfQlBUQ19TSUdORURfRkxPQVRfRVhU
OgpAQCAtODQsNyArODgsNyBAQCBib29sIERpZmZlcmVuY2VDYW5PdmVyZmxvdyhHTGludCBhLCBH
TGludCBiKQogICAgIHJldHVybiAhY2hlY2tlZEEuSXNWYWxpZCgpOwogfQogCi1ib29sIFZhbGlk
UmVhZFBpeGVsc1R5cGVFbnVtKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlKQorYm9vbCBW
YWxpZFJlYWRQaXhlbHNUeXBlRW51bShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpAQCAtMTI2LDcgKzEzMCw3IEBAIGJvb2wg
VmFsaWRSZWFkUGl4ZWxzVHlwZUVudW0oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUpCiAg
ICAgfQogfQogCi1ib29sIFZhbGlkUmVhZFBpeGVsc0Zvcm1hdEVudW0oQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGZvcm1hdCkKK2Jvb2wgVmFsaWRSZWFkUGl4ZWxzRm9ybWF0RW51bShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gZm9ybWF0KQogewogICAgIHN3aXRjaCAoZm9ybWF0KQog
ICAgIHsKQEAgLTE1Nyw3ICsxNjEsNyBAQCBib29sIFZhbGlkUmVhZFBpeGVsc0Zvcm1hdEVudW0o
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZvcm1hdCkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRS
ZWFkUGl4ZWxzRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZFJlYWRQaXhl
bHNGb3JtYXRUeXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICppbmZvLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUpCkBAIC0xOTQsNyArMTk4LDcgQEAgYm9vbCBWYWxpZFJlYWRQ
aXhlbHNGb3JtYXRUeXBlKENvbnRleHQgKmNvbnRleHQsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBQYXJhbVR5cGU+Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVdyYXBNb2RlVmFsdWUoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlV3JhcE1vZGVWYWx1ZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmFt
VHlwZSAqcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVz
dHJpY3RlZFdyYXBNb2RlcykKIHsKQEAgLTIzMCw3ICsyMzQsNyBAQCBib29sIFZhbGlkYXRlVGV4
dHVyZVdyYXBNb2RlVmFsdWUoQ29udGV4dCAqY29udGV4dCwKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFBhcmFtVHlwZT4KLWJvb2wgVmFsaWRhdGVUZXh0dXJlTWluRmlsdGVyVmFsdWUoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlTWluRmlsdGVyVmFsdWUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UGFyYW1UeXBlICpwYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcmVzdHJpY3RlZE1pbkZpbHRlcikKIHsKQEAgLTI2MSw3ICsyNjUsNyBAQCBib29sIFZhbGlk
YXRlVGV4dHVyZU1pbkZpbHRlclZhbHVlKENvbnRleHQgKmNvbnRleHQsCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBQYXJhbVR5cGU+Ci1ib29sIFZhbGlkYXRlVGV4dHVyZU1hZ0ZpbHRlclZhbHVl
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQorYm9vbCBWYWxpZGF0
ZVRleHR1cmVNYWdGaWx0ZXJWYWx1ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBQYXJh
bVR5cGUgKnBhcmFtcykKIHsKICAgICBzd2l0Y2ggKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0p
KQogICAgIHsKQEAgLTI3OCw3ICsyODIsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZU1hZ0ZpbHRl
clZhbHVlKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBWYWxpZGF0ZVRleHR1cmVDb21wYXJl
TW9kZVZhbHVlKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQorYm9v
bCBWYWxpZGF0ZVRleHR1cmVDb21wYXJlTW9kZVZhbHVlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zKQogewogICAgIC8vIEFjY2VwdGFibGUgbW9kZSBwYXJh
bWV0ZXJzIGZyb20gR0xFUyAzLjAuMiBzcGVjLCB0YWJsZSAzLjE3CiAgICAgc3dpdGNoIChDb252
ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKQEAgLTI5Niw3ICszMDAsNyBAQCBib29sIFZhbGlkYXRl
VGV4dHVyZUNvbXBhcmVNb2RlVmFsdWUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgUGFyYW1UeXBl
ICpwYXJhbXMpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Ci1ib29sIFZhbGlk
YXRlVGV4dHVyZUNvbXBhcmVGdW5jVmFsdWUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgUGFyYW1U
eXBlICpwYXJhbXMpCitib29sIFZhbGlkYXRlVGV4dHVyZUNvbXBhcmVGdW5jVmFsdWUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgY29uc3QgUGFyYW1UeXBlICpwYXJhbXMpCiB7CiAgICAgLy8gQWNj
ZXB0YWJsZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGZyb20gR0xFUyAzLjAuMiBzcGVjLCB0YWJsZSAz
LjE3CiAgICAgc3dpdGNoIChDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKQEAgLTMyMCw3ICsz
MjQsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZUNvbXBhcmVGdW5jVmFsdWUoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgUGFyYW1UeXBlICpwYXJhbXMpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBQ
YXJhbVR5cGU+Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVNSR0JEZWNvZGVWYWx1ZShDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlU1JH
QkRlY29kZVZhbHVlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFBhcmFtVHlwZSAqcGFy
YW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVTUkdCRGVj
b2RlKQogICAgIHsKQEAgLTM0Miw3ICszNDYsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVNSR0JE
ZWNvZGVWYWx1ZShDb250ZXh0ICpjb250ZXh0LCBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcykKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVNYXhBbmlzb3Ryb3B5RXh0
ZW5zaW9uRW5hYmxlZChDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVRleHR1cmVNYXhB
bmlzb3Ryb3B5RXh0ZW5zaW9uRW5hYmxlZChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykK
ICAgICB7CkBAIC0zNTMsNyArMzU3LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVNYXhBbmlzb3Ry
b3B5RXh0ZW5zaW9uRW5hYmxlZChDb250ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZU1heEFuaXNvdHJvcHlWYWx1ZShDb250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IHBhcmFtVmFsdWUpCitib29sIFZhbGlkYXRlVGV4dHVyZU1heEFuaXNvdHJv
cHlWYWx1ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHBhcmFtVmFsdWUpCiB7CiAg
ICAgaWYgKCFWYWxpZGF0ZVRleHR1cmVNYXhBbmlzb3Ryb3B5RXh0ZW5zaW9uRW5hYmxlZChjb250
ZXh0KSkKICAgICB7CkBAIC0zNzEsNyArMzc1LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVNYXhB
bmlzb3Ryb3B5VmFsdWUoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBwYXJhbVZhbHVlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJhZ21lbnRTaGFkZXJDb2xvckJ1ZmZl
ck1hc2tNYXRjaChDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUZyYWdtZW50U2hhZGVy
Q29sb3JCdWZmZXJNYXNrTWF0Y2goY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBjb25z
dCBQcm9ncmFtICpwcm9ncmFtICAgICAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldExpbmtl
ZFByb2dyYW0oY29udGV4dCk7CiAgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKQEAgLTM4Miw3ICszODYs
NyBAQCBib29sIFZhbGlkYXRlRnJhZ21lbnRTaGFkZXJDb2xvckJ1ZmZlck1hc2tNYXRjaChDb250
ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiBkcmF3QnVmZmVyTWFzayA9PSAoZHJhd0J1ZmZlck1h
c2sgJiBmcmFnbWVudE91dHB1dE1hc2spOwogfQogCi1ib29sIFZhbGlkYXRlRnJhZ21lbnRTaGFk
ZXJDb2xvckJ1ZmZlclR5cGVNYXRjaChDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUZy
YWdtZW50U2hhZGVyQ29sb3JCdWZmZXJUeXBlTWF0Y2goY29uc3QgQ29udGV4dCAqY29udGV4dCkK
IHsKICAgICBjb25zdCBQcm9ncmFtICpwcm9ncmFtICAgICAgICAgPSBjb250ZXh0LT5nZXRTdGF0
ZSgpLmdldExpbmtlZFByb2dyYW0oY29udGV4dCk7CiAgICAgY29uc3QgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKQEAg
LTM5Myw3ICszOTcsNyBAQCBib29sIFZhbGlkYXRlRnJhZ21lbnRTaGFkZXJDb2xvckJ1ZmZlclR5
cGVNYXRjaChDb250ZXh0ICpjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZWJ1ZmZlci0+Z2V0RHJhd0J1ZmZlck1hc2soKS50b191bG9uZygpKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleFNoYWRlckF0dHJpYnV0ZVR5cGVNYXRjaChDb250ZXh0ICpj
b250ZXh0KQorYm9vbCBWYWxpZGF0ZVZlcnRleFNoYWRlckF0dHJpYnV0ZVR5cGVNYXRjaChjb25z
dCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgICAgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpOwogICAgIGNvbnN0IFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldExpbmtlZFByb2dyYW0oY29udGV4dCk7CkBAIC00MDcsOSArNDExLDkgQEAg
Ym9vbCBWYWxpZGF0ZVZlcnRleFNoYWRlckF0dHJpYnV0ZVR5cGVNYXRjaChDb250ZXh0ICpjb250
ZXh0KQogICAgIHZhb0F0dHJpYlR5cGVCaXRzID0gKHZhb0F0dHJpYkVuYWJsZWRNYXNrICYgdmFv
QXR0cmliVHlwZUJpdHMpOwogICAgIHZhb0F0dHJpYlR5cGVCaXRzIHw9ICh+dmFvQXR0cmliRW5h
YmxlZE1hc2sgJiBzdGF0ZUN1cnJlbnRWYWx1ZXNUeXBlQml0cyk7CiAKLSAgICByZXR1cm4gVmFs
aWRhdGVDb21wb25lbnRUeXBlTWFza3MocHJvZ3JhbS0+Z2V0QXR0cmlidXRlc1R5cGVNYXNrKCku
dG9fdWxvbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFvQXR0
cmliVHlwZUJpdHMsIHByb2dyYW0tPmdldEF0dHJpYnV0ZXNNYXNrKCkudG9fdWxvbmcoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGKTsKKyAgICByZXR1cm4g
VmFsaWRhdGVDb21wb25lbnRUeXBlTWFza3MoCisgICAgICAgIHByb2dyYW0tPmdldEV4ZWN1dGFi
bGUoKS5nZXRBdHRyaWJ1dGVzVHlwZU1hc2soKS50b191bG9uZygpLCB2YW9BdHRyaWJUeXBlQml0
cywKKyAgICAgICAgcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmdldEF0dHJpYnV0ZXNNYXNrKCku
dG9fdWxvbmcoKSwgMHhGRkZGKTsKIH0KIAogYm9vbCBJc0NvbXBhdGlibGVEcmF3TW9kZVdpdGhH
ZW9tZXRyeVNoYWRlcihQcmltaXRpdmVNb2RlIGRyYXdNb2RlLApAQCAtNDY1LDMzICs0NjksMTQg
QEAgdW5zaWduZWQgaW50IEdldFNhbXBsZXJQYXJhbWV0ZXJDb3VudChHTGVudW0gcG5hbWUpCiAK
IH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotdm9pZCBTZXRSb2J1c3RMZW5ndGhQYXJhbShH
THNpemVpICpsZW5ndGgsIEdMc2l6ZWkgdmFsdWUpCit2b2lkIFNldFJvYnVzdExlbmd0aFBhcmFt
KGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwgR0xzaXplaSB2YWx1ZSkKIHsKICAgICBpZiAobGVuZ3Ro
KQogICAgIHsKLSAgICAgICAgKmxlbmd0aCA9IHZhbHVlOwotICAgIH0KLX0KLQotYm9vbCBJc0VU
QzJFQUNGb3JtYXQoY29uc3QgR0xlbnVtIGZvcm1hdCkKLXsKLSAgICAvLyBFUyAzLjEsIFRhYmxl
IDguMTkKLSAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SMTFfRUFDOgotICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6
Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKLSAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QjhfRVRDMjoKLSAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzI6Ci0gICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKLSAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgotICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIG1vZGlmeSByb2J1c3QgbGVuZ3RoIHBhcmFtZXRlcnMgaW4gdGhl
IHZhbGlkYXRpb24gbGF5ZXIuIFdlIHNob3VsZCBiZSBvbmx5CisgICAgICAgIC8vIGRvaW5nIHRo
aXMgaW4gdGhlIENvbnRleHQgaW5zdGVhZC4KKyAgICAgICAgLy8gVE9ETyhodHRwOi8vYW5nbGVi
dWcuY29tLzQ0MDYpOiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4KKyAgICAgICAgKmNvbnN0X2Nhc3Q8
R0xzaXplaSAqPihsZW5ndGgpID0gdmFsdWU7CiAgICAgfQogfQogCkBAIC02MjksNyArNjE0LDcg
QEAgYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrUHJpbWl0aXZlTW9kZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZEJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtNjYyLDcgKzY0Nyw3
IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0luc3RhbmNlZEF0dHJpYnMoY29udGV4dCwgcHJp
bWNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNlKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKQEAgLTY5NCwxMiArNjc5LDExIEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5z
dGFuY2VkQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdJbnN0
YW5jZWRBdHRyaWJzKGNvbnRleHQsIHByaW1jb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3
SW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVEcmF3SW5zdGFu
Y2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICAvLyBWZXJpZnkgdGhlcmUg
aXMgYXQgbGVhc3Qgb25lIGFjdGl2ZSBhdHRyaWJ1dGUgd2l0aCBhIGRpdmlzb3Igb2YgemVybwot
ICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNvbnRleHQtPmdldFN0YXRlKCk7Ci0KLSAgICBQcm9n
cmFtICpwcm9ncmFtID0gc3RhdGUuZ2V0TGlua2VkUHJvZ3JhbShjb250ZXh0KTsKKyAgICBjb25z
dCBTdGF0ZSAmc3RhdGUgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCk7Cisg
ICAgY29uc3QgUHJvZ3JhbUV4ZWN1dGFibGUgKmV4ZWN1dGFibGUgPSBzdGF0ZS5nZXRQcm9ncmFt
RXhlY3V0YWJsZSgpOwogCiAgICAgY29uc3QgYXV0byAmYXR0cmlicyAgPSBzdGF0ZS5nZXRWZXJ0
ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgYXV0byAmYmluZGlu
Z3MgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhCaW5kaW5ncygpOwpAQCAtNzA3
LDcgKzY5MSw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29u
dGV4dCkKICAgICB7CiAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gYXR0
cmlic1thdHRyaWJ1dGVJbmRleF07CiAgICAgICAgIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRp
bmcgID0gYmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07Ci0gICAgICAgIGlmIChwcm9ncmFt
LT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZlKGF0dHJpYnV0ZUluZGV4KSAmJiBiaW5kaW5nLmdldERp
dmlzb3IoKSA9PSAwKQorICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNBdHRyaWJMb2NhdGlvbkFj
dGl2ZShhdHRyaWJ1dGVJbmRleCkgJiYgYmluZGluZy5nZXREaXZpc29yKCkgPT0gMCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTgwNCw3ICs3ODgs
NyBAQCBib29sIFZhbGlkTWlwTGV2ZWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5
cGUgdHlwZSwgR0xpbnQgbGV2ZWwpCiAgICAgcmV0dXJuIGxldmVsIDw9IGxvZzIobWF4RGltZW5z
aW9uKSAmJiBsZXZlbCA+PSAwOwogfQogCi1ib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBl
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTkzNyw3ICs5MjEs
NyBAQCBib29sIFZhbGlkQ29tcHJlc3NlZFN1YkltYWdlU2l6ZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkSW1hZ2VEYXRhU2l6ZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZEltYWdlRGF0YVNpemUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRleFR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQsCkBAIC0xMDMwLDcgKzEwMTQsNyBAQCBib29sIFZhbGlkUXVlcnlU
eXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSBxdWVyeVR5cGUpCiAgICAgfQog
fQogCi1ib29sIFZhbGlkYXRlV2ViR0xWZXJ0ZXhBdHRyaWJQb2ludGVyKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlV2ViR0xWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0
dHJpYlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc3RyaWRlLApAQCAtMTA3Myw3ICsxMDU3LDcgQEAgYm9vbCBWYWxpZGF0ZVdlYkdM
VmVydGV4QXR0cmliUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1Qcm9ncmFtICpHZXRWYWxpZFByb2dyYW1Ob1Jlc29sdmUoQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIGlkKQorUHJvZ3JhbSAqR2V0VmFsaWRQcm9ncmFtTm9SZXNvbHZlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBpZCkKIHsKICAgICAvLyBFUzMg
c3BlYyAoc2VjdGlvbiAyLjExLjEpIC0tICJDb21tYW5kcyB0aGF0IGFjY2VwdCBzaGFkZXIgb3Ig
cHJvZ3JhbSBvYmplY3QgbmFtZXMgd2lsbAogICAgIC8vIGdlbmVyYXRlIHRoZSBlcnJvciBJTlZB
TElEX1ZBTFVFIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCB0aGUgbmFtZSBvZiBlaXRoZXIg
YSBzaGFkZXIKQEAgLTEwOTcsNyArMTA4MSw3IEBAIFByb2dyYW0gKkdldFZhbGlkUHJvZ3JhbU5v
UmVzb2x2ZShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpCiAgICAgcmV0dXJu
IHZhbGlkUHJvZ3JhbTsKIH0KIAotUHJvZ3JhbSAqR2V0VmFsaWRQcm9ncmFtKENvbnRleHQgKmNv
bnRleHQsIFNoYWRlclByb2dyYW1JRCBpZCkKK1Byb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpCiB7CiAgICAgUHJvZ3JhbSAq
cHJvZ3JhbSA9IEdldFZhbGlkUHJvZ3JhbU5vUmVzb2x2ZShjb250ZXh0LCBpZCk7CiAgICAgaWYg
KHByb2dyYW0pCkBAIC0xMTA3LDcgKzEwOTEsNyBAQCBQcm9ncmFtICpHZXRWYWxpZFByb2dyYW0o
Q29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIGlkKQogICAgIHJldHVybiBwcm9ncmFt
OwogfQogCi1TaGFkZXIgKkdldFZhbGlkU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBpZCkKK1NoYWRlciAqR2V0VmFsaWRTaGFkZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgU2hhZGVyUHJvZ3JhbUlEIGlkKQogewogICAgIC8vIFNlZSBWYWxpZFByb2dyYW0gZm9yIHNw
ZWMgZGV0YWlscy4KIApAQCAtMTEyOCw3ICsxMTEyLDcgQEAgU2hhZGVyICpHZXRWYWxpZFNoYWRl
cihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpCiAgICAgcmV0dXJuIHZhbGlk
U2hhZGVyOwogfQogCi1ib29sIFZhbGlkYXRlQXR0YWNobWVudFRhcmdldChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gYXR0YWNobWVudCkKK2Jvb2wgVmFsaWRhdGVBdHRhY2htZW50VGFyZ2V0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBhdHRhY2htZW50KQogewogICAgIGlmIChhdHRh
Y2htZW50ID49IEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCAmJiBhdHRhY2htZW50IDw9IEdMX0NP
TE9SX0FUVEFDSE1FTlQxNV9FWFQpCiAgICAgewpAQCAtMTE3Myw3ICsxMTU3LDcgQEAgYm9vbCBW
YWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1l
bnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9y
YWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZW5kZXJi
dWZmZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
YW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0xMjMxLDcgKzEyMTUsNyBAQCBib29sIFZhbGlkYXRl
UmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclBh
cmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlclBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBy
ZW5kZXJidWZmZXJ0YXJnZXQsCkBAIC0xMjczLDcgKzEyNTcsNyBAQCBib29sIFZhbGlkYXRlRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzcmNZMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNyY1gxLApAQCAtMTUxOCw3ICsxNTAyLDcgQEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtMTUyNiwxMCArMTUxMCwxMCBAQCBib29sIFZh
bGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqY29sdW1ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqcm93cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
cGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6
ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKnJvd3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBpeGVscykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0
LCBidWZTaXplKSkKICAgICB7CkBAIC0xNTU4LDcgKzE1NDIsNyBAQCBib29sIFZhbGlkYXRlUmVh
ZFBpeGVsc1JvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC0x
NTY2LDcgKzE1NTAsNyBAQCBib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxz
KQogewogICAgIGlmIChidWZTaXplIDwgMCkKICAgICB7CkBAIC0xNTc4LDcgKzE1NjIsNyBAQCBi
b29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBwaXhlbHMpOwogfQogCi1i
b29sIFZhbGlkYXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTE1ODYsMTAgKzE1NzAsMTAgQEAgYm9v
bCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpyb3dzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpyb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqZGF0YSkKIHsKICAgICBHTHNpemVpIHdyaXRlTGVuZ3RoICA9IDA7
CiAgICAgR0xzaXplaSB3cml0ZUNvbHVtbnMgPSAwOwpAQCAtMTYxOCw3ICsxNjAyLDcgQEAgYm9v
bCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoQ29udGV4dCAqY29u
dGV4dCwgR0xzaXplaSBuLCBRdWVyeUlEICppZHMpCitib29sIFZhbGlkYXRlR2VuUXVlcmllc0VY
VChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkcykK
IHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xl
YW4gJiYKICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVl
cnkpCkBAIC0xNjMwLDcgKzE2MTQsNyBAQCBib29sIFZhbGlkYXRlR2VuUXVlcmllc0VYVChDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFF1ZXJ5SUQgKmlkcykKICAgICByZXR1cm4gVmFsaWRh
dGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJp
ZXNFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBRdWVyeUlEICppZHMpCiti
b29sIFZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKICAgICAgICAgIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCkBAIC0xNjQyLDcgKzE2MjYsNyBAQCBib29s
IFZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNv
bnN0IFF1ZXJ5SUQgKmlkcykKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0
LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzUXVlcnlFWFQoQ29udGV4dCAqY29udGV4dCwgUXVl
cnlJRCBpZCkKK2Jvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5SUQgaWQpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkub2NjbHVz
aW9uUXVlcnlCb29sZWFuICYmCiAgICAgICAgICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlz
am9pbnRUaW1lclF1ZXJ5KQpAQCAtMTY1NCw3ICsxNjM4LDcgQEAgYm9vbCBWYWxpZGF0ZUlzUXVl
cnlFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlw
ZSB0YXJnZXQsIFF1ZXJ5SUQgaWQpCitib29sIFZhbGlkYXRlQmVnaW5RdWVyeUJhc2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCkKIHsKICAgICBp
ZiAoIVZhbGlkUXVlcnlUeXBlKGNvbnRleHQsIHRhcmdldCkpCiAgICAgewpAQCAtMTY5MCwxNyAr
MTY3NCwxNiBAQCBib29sIFZhbGlkYXRlQmVnaW5RdWVyeUJhc2UoQ29udGV4dCAqY29udGV4dCwg
UXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCB0cnVl
LCB0YXJnZXQpOwotCiAgICAgLy8gY2hlY2sgdGhhdCBuYW1lIHdhcyBvYnRhaW5lZCB3aXRoIGds
R2VuUXVlcmllcwotICAgIGlmICghcXVlcnlPYmplY3QpCisgICAgaWYgKCFjb250ZXh0LT5pc1F1
ZXJ5R2VuZXJhdGVkKGlkKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRRdWVyeUlkKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIGNoZWNrIGZvciB0eXBlIG1pc21hdGNoCi0gICAgaWYg
KHF1ZXJ5T2JqZWN0LT5nZXRUeXBlKCkgIT0gdGFyZ2V0KQorICAgIC8vIENoZWNrIGZvciB0eXBl
IG1pc21hdGNoLiBJZiBxdWVyeSBpcyBub3QgeWV0IHN0YXJ0ZWQgd2UncmUgZ29vZCB0byBnby4K
KyAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCk7CisgICAgaWYg
KHF1ZXJ5T2JqZWN0ICYmIHF1ZXJ5T2JqZWN0LT5nZXRUeXBlKCkgIT0gdGFyZ2V0KQogICAgIHsK
ICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
UXVlcnlUYXJnZXRNaXNtYXRjaCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MDksNyAr
MTY5Miw3IEBAIGJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5QmFzZShDb250ZXh0ICpjb250ZXh0LCBR
dWVyeVR5cGUgdGFyZ2V0LCBRdWVyeUlEIGlkKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlQmVnaW5RdWVyeUVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0
LCBRdWVyeUlEIGlkKQorYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJRCBpZCkKIHsKICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKICAgICAgICAgIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYgIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zeW5jUXVlcnkpCkBAIC0xNzIxLDcgKzE3MDQsNyBAQCBib29sIFZhbGlk
YXRlQmVnaW5RdWVyeUVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBRdWVy
eUlEIGlkKQogICAgIHJldHVybiBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGNvbnRleHQsIHRhcmdl
dCwgaWQpOwogfQogCi1ib29sIFZhbGlkYXRlRW5kUXVlcnlCYXNlKENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5VHlwZSB0YXJnZXQpCitib29sIFZhbGlkYXRlRW5kUXVlcnlCYXNlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQpCiB7CiAgICAgaWYgKCFWYWxpZFF1ZXJ5VHlw
ZShjb250ZXh0LCB0YXJnZXQpKQogICAgIHsKQEAgLTE3NDAsNyArMTcyMyw3IEBAIGJvb2wgVmFs
aWRhdGVFbmRRdWVyeUJhc2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKENvbnRleHQgKmNv
bnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQpCitib29sIFZhbGlkYXRlRW5kUXVlcnlFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCkKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKICAgICAgICAgIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYgIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zeW5jUXVlcnkpCkBAIC0xNzUyLDcgKzE3MzUsNyBAQCBib29sIFZhbGlkYXRl
RW5kUXVlcnlFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCkKICAgICByZXR1
cm4gVmFsaWRhdGVFbmRRdWVyeUJhc2UoY29udGV4dCwgdGFyZ2V0KTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVF1ZXJ5Q291bnRlckVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBRdWVyeVR5
cGUgdGFyZ2V0KQorYm9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRlckVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBRdWVyeUlEIGlkLCBRdWVyeVR5cGUgdGFyZ2V0KQogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKICAgICB7CkBAIC0xNzY2LDE0
ICsxNzQ5LDE1IEBAIGJvb2wgVmFsaWRhdGVRdWVyeUNvdW50ZXJFWFQoQ29udGV4dCAqY29udGV4
dCwgUXVlcnlJRCBpZCwgUXVlcnlUeXBlIHRhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlkLCB0
cnVlLCB0YXJnZXQpOwotICAgIGlmIChxdWVyeU9iamVjdCA9PSBudWxscHRyKQorICAgIGlmICgh
Y29udGV4dC0+aXNRdWVyeUdlbmVyYXRlZChpZCkpCiAgICAgewogICAgICAgICBjb250ZXh0LT52
YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkUXVlcnlJZCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUo
KS5pc1F1ZXJ5QWN0aXZlKHF1ZXJ5T2JqZWN0KSkKKyAgICAvLyBJZiBxdWVyeSBvYmplY3QgaXMg
bm90IHN0YXJ0ZWQsIHRoYXQncyBmaW5lLgorICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRl
eHQtPmdldFF1ZXJ5KGlkKTsKKyAgICBpZiAocXVlcnlPYmplY3QgJiYgY29udGV4dC0+Z2V0U3Rh
dGUoKS5pc1F1ZXJ5QWN0aXZlKHF1ZXJ5T2JqZWN0KSkKICAgICB7CiAgICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga1F1ZXJ5QWN0aXZlKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc4Miw3ICsxNzY2LDEwIEBAIGJvb2wgVmFsaWRhdGVR
dWVyeUNvdW50ZXJFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgUXVlcnlUeXBlIHRh
cmdldCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNl
KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXpl
aSAqbnVtUGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlUeXBlIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbnVtUGFyYW1zKQogewogICAgIGlmIChudW1QYXJhbXMp
CiAgICAgewpAQCAtMTgyNiw3ICsxODEzLDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2QmFz
ZShDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKENvbnRleHQg
KmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
K2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5v
Y2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kaXNqb2ludFRpbWVyUXVlcnkgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zeW5jUXVl
cnkpCkBAIC0xODM4LDEyICsxODI4LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKENv
bnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpCiAgICAg
cmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVs
bHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlUeXBl
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIGlm
ICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAg
LTE4NjcsNyArMTg1NywxMCBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlpdlJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRR
dWVyeU9iamVjdFZhbHVlQmFzZShDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgKm51bVBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZh
bHVlQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKm51bVBhcmFtcykKIHsKICAgICBpZiAobnVtUGFyYW1zKQogICAgIHsKQEAgLTE4
OTAsNyArMTg4Myw3IEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShDb250
ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2Us
IFF1ZXJ5VHlwZTo6SW52YWxpZEVudW0pOworICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRl
eHQtPmdldFF1ZXJ5KGlkKTsKIAogICAgIGlmICghcXVlcnlPYmplY3QpCiAgICAgewpAQCAtMTkx
OCw3ICsxOTExLDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShDb250
ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2RVhUKENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdGl2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kaXNqb2ludFRpbWVyUXVlcnkpCiAgICAgewpAQCAtMTkyOCwxMiArMTkyNCwxMiBAQCBib29s
IFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlk
LCBHTGVudW0gcG5hbWUsIEdMaQogICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFs
dWVCYXNlKGNvbnRleHQsIGlkLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50
VGltZXJRdWVyeSkKICAgICB7CkBAIC0xOTYzLDcgKzE5NTksMTAgQEAgYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoQ29udGV4dCAqY29u
dGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK2Jvb2wgVmFs
aWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSAmJgogICAgICAgICAhY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiAmJiAhY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnN5bmNRdWVyeSkKQEAgLTE5NzQsMTIgKzE5NzMsMTIgQEAgYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0dWl2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBw
bmFtZSwgR0wKICAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250
ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmpl
Y3R1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0dWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50
VGltZXJRdWVyeSAmJgogICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm9jY2x1c2lv
blF1ZXJ5Qm9vbGVhbiAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN5bmNRdWVyeSkKQEAg
LTIwMTAsNyArMjAwOSwxMCBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
aTY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
NjQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2lu
dFRpbWVyUXVlcnkpCiAgICAgewpAQCAtMjAyMCwxMSArMjAyMiwxMSBAQCBib29sIFZhbGlkYXRl
R2V0UXVlcnlPYmplY3RpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51
bSBwbmFtZSwgRwogICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKGNv
bnRleHQsIGlkLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9i
amVjdGk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1
ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
ICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pv
aW50VGltZXJRdWVyeSkKQEAgLTIwNTUsNyArMjA1NywxMCBAQCBib29sIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RpNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoQ29udGV4dCAqY29u
dGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKQorYm9vbCBW
YWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeSkKICAgICB7CkBAIC0yMDY1LDEx
ICsyMDcwLDExIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2RVhUKENvbnRleHQg
KmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwKICAgICByZXR1cm4gVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5hbWUsIG51bGxwdHIpOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFF1ZXJ5SUQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFtcykKIHsKICAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCkBAIC0yMTAw
LDkgKzIxMDUsOSBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVV
bmlmb3JtQ29tbW9uQmFzZShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFByb2dyYW0gKnByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQ
cm9ncmFtICpwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpbmtlZFVuaWZv
cm0gKip1bmlmb3JtT3V0KQogewpAQCAtMjEyNSwxNCArMjEzMCwxNCBAQCBib29sIFZhbGlkYXRl
VW5pZm9ybUNvbW1vbkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChsb2NhdGlvbiA9PSAtMSkKKyAgICBpZiAobG9jYXRpb24udmFs
dWUgPT0gLTEpCiAgICAgewogICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGhlIHVuaWZvcm0g
Y29tbWFuZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgYXV0byAm
dW5pZm9ybUxvY2F0aW9ucyA9IHByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbnMoKTsKLSAgICBz
aXplX3QgY2FzdGVkTG9jYXRpb24gICAgICAgID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlv
bik7CisgICAgc2l6ZV90IGNhc3RlZExvY2F0aW9uICAgICAgICA9IHN0YXRpY19jYXN0PHNpemVf
dD4obG9jYXRpb24udmFsdWUpOwogICAgIGlmIChjYXN0ZWRMb2NhdGlvbiA+PSB1bmlmb3JtTG9j
YXRpb25zLnNpemUoKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRVbmlmb3JtTG9jYXRpb24pOwpAQCAtMjE2NSw3
ICsyMTcwLDcgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMWl2VmFsdWUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWl2VmFsdWUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVuaWZv
cm1UeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCkBAIC0yMTk3LDcg
KzIyMDIsNyBAQCBib29sIFZhbGlkYXRlVW5pZm9ybTFpdlZhbHVlKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVl
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51bSB1bmlmb3JtVHlwZSkK
K2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4VmFsdWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHZhbHVlVHlwZSwgR0xlbnVtIHVuaWZvcm1UeXBlKQogewogICAgIC8vIENoZWNrIHRo
YXQgdGhlIHZhbHVlIHR5cGUgaXMgY29tcGF0aWJsZSB3aXRoIHVuaWZvcm0gdHlwZS4KICAgICBp
ZiAodmFsdWVUeXBlID09IHVuaWZvcm1UeXBlKQpAQCAtMjIwOSw3ICsyMjE0LDEwIEBAIGJvb2wg
VmFsaWRhdGVVbmlmb3JtTWF0cml4VmFsdWUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZhbHVl
VHlwZSwgR0xlbnVtIHVuaWZvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRl
VW5pZm9ybShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdmFsdWVUeXBlLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdmFsdWVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCkKIHsKICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICp1bmlmb3JtID0g
bnVsbHB0cjsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAgICAgID0gY29udGV4dC0+Z2V0
U3RhdGUoKS5nZXRMaW5rZWRQcm9ncmFtKGNvbnRleHQpOwpAQCAtMjIxNyw3ICsyMjI1LDEwIEBA
IGJvb2wgVmFsaWRhdGVVbmlmb3JtKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB2YWx1ZVR5cGUs
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpCiAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybVZhbHVl
KGNvbnRleHQsIHZhbHVlVHlwZSwgdW5pZm9ybS0+dHlwZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVV
bmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCAqdmFsdWUpCitib29sIFZhbGlkYXRlVW5pZm9ybTFpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBjb25zdCBMaW5rZWRV
bmlmb3JtICp1bmlmb3JtID0gbnVsbHB0cjsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAg
ICAgID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRMaW5rZWRQcm9ncmFtKGNvbnRleHQpOwpAQCAt
MjIyNSw5ICsyMjM2LDkgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEcKICAgICAgICAgICAgVmFs
aWRhdGVVbmlmb3JtMWl2VmFsdWUoY29udGV4dCwgdW5pZm9ybS0+dHlwZSwgY291bnQsIHZhbHVl
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdmFsdWVUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSkK
IHsKQEAgLTIyNDMsNyArMjI1NCwxMCBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXhWYWx1ZShjb250
ZXh0LCB2YWx1ZVR5cGUsIHVuaWZvcm0tPnR5cGUpOwogfQogCi1ib29sIFZhbGlkYXRlU3RhdGVR
dWVyeShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZW51bSAqbmF0aXZlVHlwZSwg
dW5zaWduZWQgaW50ICpudW1QYXJhbXMpCitib29sIFZhbGlkYXRlU3RhdGVRdWVyeShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpuYXRpdmVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50ICpudW1QYXJhbXMpCiB7CiAgICAgaWYgKCFjb250ZXh0
LT5nZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsIG5hdGl2ZVR5cGUsIG51bVBhcmFtcykpCiAg
ICAgewpAQCAtMjMzNCwxMSArMjM0OCwxMSBAQCBib29sIFZhbGlkYXRlU3RhdGVRdWVyeShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZW51bSAqbmF0aXZlVHlwZSwgdW5zaQogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW52Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAq
cGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xi
b29sZWFuICpwYXJhbXMpCiB7CiAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CiAgICAgdW5zaWduZWQg
aW50IG51bVBhcmFtcyA9IDA7CkBAIC0yMzUzLDExICsyMzY3LDExIEBAIGJvb2wgVmFsaWRhdGVH
ZXRCb29sZWFudlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGbG9hdHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldEZsb2F0dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgR0xlbnVtIG5h
dGl2ZVR5cGU7CiAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7CkBAIC0yMzcyLDExICsy
Mzg2LDExIEBAIGJvb2wgVmFsaWRhdGVHZXRGbG9hdHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcnZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEludGVnZXJ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKmRhdGEpCiB7CiAgICAgR0xlbnVtIG5hdGl2ZVR5cGU7CiAgICAgdW5zaWduZWQgaW50
IG51bVBhcmFtcyA9IDA7CkBAIC0yMzkxLDEwICsyNDA1LDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRJ
bnRlZ2VydlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpk
YXRhKQogewogICAgIEdMZW51bSBuYXRpdmVUeXBlOwpAQCAtMjQxNSw3ICsyNDI5LDcgQEAgYm9v
bCBWYWxpZGF0ZUdldEludGVnZXI2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUm9idXN0U3RhdGVRdWVyeShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJvYnVzdFN0YXRlUXVlcnkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSAqbmF0aXZlVHlwZSwKQEAgLTI0MzksNyArMjQ1Myw3
IEBAIGJvb2wgVmFsaWRhdGVSb2J1c3RTdGF0ZVF1ZXJ5KENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFz
ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNC
YXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMjYzNiw3ICsyNjUwLDcg
QEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRl
eHQsCiAKIC8vIE5vdGUgYWxsIGVycm9ycyByZXR1cm5lZCBmcm9tIHRoaXMgZnVuY3Rpb24gYXJl
IElOVkFMSURfT1BFUkFUSU9OIGV4Y2VwdCBmb3IgdGhlIGRyYXcgZnJhbWVidWZmZXIKIC8vIGNv
bXBsZXRlbmVzcyBjaGVjay4KLWNvbnN0IGNoYXIgKlZhbGlkYXRlRHJhd1N0YXRlcyhDb250ZXh0
ICpjb250ZXh0KQorY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3U3RhdGVzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQpCiB7CiAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucyA9IGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKTsKICAgICBjb25zdCBTdGF0ZSAmc3RhdGUgICAgICAgICAgID0gY29u
dGV4dC0+Z2V0U3RhdGUoKTsKQEAgLTI2OTAsMTAgKzI3MDQsMzAgQEAgY29uc3QgY2hhciAqVmFs
aWRhdGVEcmF3U3RhdGVzKENvbnRleHQgKmNvbnRleHQpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoIWV4dGVuc2lvbnMuZmxvYXRCbGVuZCAmJiBjb250ZXh0LT5nZXRTdGF0ZSgpLmlzQmxl
bmRFbmFibGVkKCkgJiYKLSAgICAgICAgZnJhbWVidWZmZXItPmhhc0FjdGl2ZUZsb2F0MzJDb2xv
ckF0dGFjaG1lbnQoKSkKKyAgICBpZiAoIWV4dGVuc2lvbnMuZmxvYXRCbGVuZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBrVW5zdXBwb3J0ZWRGbG9hdEJsZW5kaW5nOworICAgICAgICBjb25zdCBE
cmF3QnVmZmVyTWFzayBibGVuZEVuYWJsZWRBY3RpdmVGbG9hdDMyQ29sb3JBdHRhY2htZW50RHJh
d0J1ZmZlck1hc2sgPQorICAgICAgICAgICAgc3RhdGUuZ2V0QmxlbmRFbmFibGVkRHJhd0J1ZmZl
ck1hc2soKSAmCisgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+Z2V0QWN0aXZlRmxvYXQzMkNvbG9y
QXR0YWNobWVudERyYXdCdWZmZXJNYXNrKCk7CisgICAgICAgIGlmIChibGVuZEVuYWJsZWRBY3Rp
dmVGbG9hdDMyQ29sb3JBdHRhY2htZW50RHJhd0J1ZmZlck1hc2suYW55KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBrVW5zdXBwb3J0ZWRGbG9hdEJsZW5kaW5nOworICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKGNvbnRleHQtPmdldExpbWl0YXRpb25zKCkubm9TaW11bHRhbmVv
dXNDb25zdGFudENvbG9yQW5kQWxwaGFCbGVuZEZ1bmMgfHwKKyAgICAgICAgZXh0ZW5zaW9ucy53
ZWJnbENvbXBhdGliaWxpdHkpCisgICAgeworICAgICAgICBpZiAoc3RhdGUuaGFzU2ltdWx0YW5l
b3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jKCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChleHRlbnNpb25zLndlYmdsQ29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4ga0ludmFsaWRDb25zdGFudENvbG9yOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBXQVJOKCkgPDwga0NvbnN0YW50Q29sb3JBbHBoYUxpbWl0YXRpb247
CisgICAgICAgICAgICByZXR1cm4ga0NvbnN0YW50Q29sb3JBbHBoYUxpbWl0YXRpb247CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoIWZyYW1lYnVmZmVyLT5pc0NvbXBsZXRlKGNvbnRleHQp
KQpAQCAtMjcwNCw3ICsyNzM4LDcgQEAgY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3U3RhdGVzKENv
bnRleHQgKmNvbnRleHQpCiAKICAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGVDYWNoZSgpLmhhc0Fu
eUVuYWJsZWRDbGllbnRBdHRyaWIoKSkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5IHx8ICFzdGF0ZS5hcmVDbGllbnRBcnJheXNF
bmFibGVkKCkpCisgICAgICAgIGlmIChleHRlbnNpb25zLndlYmdsQ29tcGF0aWJpbGl0eSB8fCAh
c3RhdGUuYXJlQ2xpZW50QXJyYXlzRW5hYmxlZCgpKQogICAgICAgICB7CiAgICAgICAgICAgICAv
LyBbV2ViR0wgMS4wXSBTZWN0aW9uIDYuNSBFbmFibGVkIFZlcnRleCBBdHRyaWJ1dGVzIGFuZCBS
YW5nZSBDaGVja2luZwogICAgICAgICAgICAgLy8gSWYgYSB2ZXJ0ZXggYXR0cmlidXRlIGlzIGVu
YWJsZWQgYXMgYW4gYXJyYXkgdmlhIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IGJ1dCBubwpAQCAt
MjczNCw4ICsyNzY4LDggQEAgY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3U3RhdGVzKENvbnRleHQg
KmNvbnRleHQpCiAgICAgICAgIC8vIHZlcnRleCBzaGFkZXIgc3RhZ2Ugb3IgZnJhZ21lbnQgc2hh
ZGVyIHN0YWdlIGlzIGEgdW5kZWZpbmVkIGJlaGF2aW91ci4KICAgICAgICAgLy8gQnV0IEFOR0xF
IHNob3VsZCBjbGVhcmx5IGdlbmVyYXRlIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGluc3Rl
YWQgb2YKICAgICAgICAgLy8gcHJvZHVjZSB1bmRlZmluZWQgcmVzdWx0LgotICAgICAgICBpZiAo
IXByb2dyYW0tPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OlZlcnRleCkgfHwKLSAg
ICAgICAgICAgICFwcm9ncmFtLT5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBlOjpGcmFn
bWVudCkpCisgICAgICAgIGlmICghcHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNo
YWRlclN0YWdlKFNoYWRlclR5cGU6OlZlcnRleCkgfHwKKyAgICAgICAgICAgICFwcm9ncmFtLT5n
ZXRFeGVjdXRhYmxlKCkuaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6RnJhZ21lbnQp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4ga05vQWN0aXZlR3JhcGhpY3NTaGFkZXJT
dGFnZTsKICAgICAgICAgfQpAQCAtMjgxMSw3ICsyODQ1LDcgQEAgY29uc3QgY2hhciAqVmFsaWRh
dGVEcmF3U3RhdGVzKENvbnRleHQgKmNvbnRleHQpCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC8vIERldGVjdCByZW5kZXJpbmcgZmVlZGJhY2sgbG9vcHMgZm9yIFdlYkdMLgotICAgICAg
ICAgICAgaWYgKGZyYW1lYnVmZmVyLT5mb3Jtc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcFdpdGgoY29u
dGV4dCkpCisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmhhc1JlbmRlcmluZ0ZlZWRiYWNr
TG9vcCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBrRmVlZGJhY2tM
b29wOwogICAgICAgICAgICAgfQpAQCAtMjgyMyw3ICsyODU3LDcgQEAgY29uc3QgY2hhciAqVmFs
aWRhdGVEcmF3U3RhdGVzKENvbnRleHQgKmNvbnRleHQpCiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSYXN0ZXJpemVyU3RhdGUoKS5yYXN0
ZXJpemVyRGlzY2FyZCAmJgotICAgICAgICAgICAgICAgICFjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dEJsZW5kU3RhdGUoKS5hbGxDaGFubmVsc01hc2tlZCgpKQorICAgICAgICAgICAgICAgICFjb250
ZXh0LT5nZXRTdGF0ZSgpLmFsbEFjdGl2ZURyYXdCdWZmZXJDaGFubmVsc01hc2tlZCgpKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIERldGVjdCB0aGF0IGlmIHRoZXJlJ3MgYWN0
aXZlIGNvbG9yIGJ1ZmZlciB3aXRob3V0IGZyYWdtZW50IHNoYWRlciBvdXRwdXQKICAgICAgICAg
ICAgICAgICBpZiAoIVZhbGlkYXRlRnJhZ21lbnRTaGFkZXJDb2xvckJ1ZmZlck1hc2tNYXRjaChj
b250ZXh0KSkKQEAgLTI4NDksNyArMjg4Myw3IEBAIGNvbnN0IGNoYXIgKlZhbGlkYXRlRHJhd1N0
YXRlcyhDb250ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJl
Y29yZERyYXdNb2RlRXJyb3IoQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlKQor
dm9pZCBSZWNvcmREcmF3TW9kZUVycm9yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2
ZU1vZGUgbW9kZSkKIHsKICAgICBjb25zdCBTdGF0ZSAmc3RhdGUgICAgICAgICAgICAgICAgICAg
ICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwogICAgIFRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFu
c2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwpAQCAt
Mjg5OCw3ICsyOTMyLDcgQEAgdm9pZCBSZWNvcmREcmF3TW9kZUVycm9yKENvbnRleHQgKmNvbnRl
eHQsIFByaW1pdGl2ZU1vZGUgbW9kZSkKICAgICAgICAgQVNTRVJUKHByb2dyYW0pOwogCiAgICAg
ICAgIC8vIERvIGdlb21ldHJ5IHNoYWRlciBzcGVjaWZpYyB2YWxpZGF0aW9ucwotICAgICAgICBp
ZiAocHJvZ3JhbS0+aGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6R2VvbWV0cnkpKQor
ICAgICAgICBpZiAocHJvZ3JhbS0+Z2V0RXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdl
KFNoYWRlclR5cGU6Okdlb21ldHJ5KSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFJc0Nv
bXBhdGlibGVEcmF3TW9kZVdpdGhHZW9tZXRyeVNoYWRlcigKICAgICAgICAgICAgICAgICAgICAg
bW9kZSwgcHJvZ3JhbS0+Z2V0R2VvbWV0cnlTaGFkZXJJbnB1dFByaW1pdGl2ZVR5cGUoKSkpCkBA
IC0yOTE0LDcgKzI5NDgsNyBAQCB2b2lkIFJlY29yZERyYXdNb2RlRXJyb3IoQ29udGV4dCAqY29u
dGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlKQogICAgIFVOUkVBQ0hBQkxFKCk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTI5
MzQsNyArMjk2OCw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUoY29u
dGV4dCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEVYVChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
Zmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LApAQCAtMjk1NCw3ICsyOTg4LDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRF
WFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3QgY2hhciAq
VmFsaWRhdGVEcmF3RWxlbWVudHNTdGF0ZXMoQ29udGV4dCAqY29udGV4dCkKK2NvbnN0IGNoYXIg
KlZhbGlkYXRlRHJhd0VsZW1lbnRzU3RhdGVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAg
ICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0U3RhdGUoKTsKIApAQCAtMzAwNiw3
ICszMDQwLDcgQEAgY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3RWxlbWVudHNTdGF0ZXMoQ29udGV4
dCAqY29udGV4dCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdF
bGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUs
CkBAIC0zMDI3LDcgKzMwNjEsNyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3SW5zdGFuY2Vk
QU5HTEUoY29udGV4dCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRF
WFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRF
WFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCkBAIC0zMDQ4LDcgKzMwODIsNyBAQCBib29s
IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmUsCkBAIC0zMDk0LDcgKzMxMjgsOSBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZm
ZXJUZXh0dXJlQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uKQorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CYXNl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uKQogewogICAgIGlmIChwcm9ncmFtLnZhbHVlID09IDApCiAgICAg
ewpAQCAtMzEyMyw5ICszMTU5LDkgQEAgYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CYXNlKENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBHTGludCBsb2MKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oQ29udGV4
dCAqY29udGV4dCwKK3N0YXRpYyBib29sIFZhbGlkYXRlU2l6ZWRHZXRVbmlmb3JtKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoKQogewpAQCAtMzE2MSw2NyArMzE5Nyw2NiBAQCBzdGF0aWMgYm9vbCBW
YWxpZGF0ZVNpemVkR2V0VW5pZm9ybShDb250ZXh0ICpjb250ZXh0LAogICAgIHsKICAgICAgICAg
Kmxlbmd0aCA9IFZhcmlhYmxlQ29tcG9uZW50Q291bnQodW5pZm9ybS50eXBlKTsKICAgICB9Ci0K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxp
ZGF0ZVNpemVkR2V0VW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwg
bnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVN
RU5URUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9y
bWl2RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0blVuaWZvcm1pdkVYVChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVy
biBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBM
RU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuVW5p
Zm9ybXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50
KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAgLTMyNDEsMTIgKzMyNzYsMTIgQEAgYm9vbCBW
YWxpZGF0ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50
cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC0zMjY2LDEyICszMzAxLDEyIEBA
IGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFO
R0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgaWYg
KCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAt
MzI5Nyw3ICszMzMyLDcgQEAgYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdMRShD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGlz
Y2FyZEZyYW1lYnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURpc2Nh
cmRGcmFtZWJ1ZmZlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKQEAgLTMzNjAs
NyArMzM5NSw3IEBAIGJvb2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnNlcnRFdmVu
dE1hcmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
bWFya2VyKQorYm9vbCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCiB7CiAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWdNYXJrZXIpCiAgICAgewpAQCAtMzM4NCw3
ICszNDE5LDcgQEAgYm9vbCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKENvbnRleHQgKmNv
bnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICoKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVB1c2hHcm91cE1hcmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQorYm9vbCBWYWxpZGF0ZVB1c2hHcm91cE1h
cmtlckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hh
ciAqbWFya2VyKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnTWFy
a2VyKQogICAgIHsKQEAgLTM0MDgsNyArMzQ0Myw5IEBAIGJvb2wgVmFsaWRhdGVQdXNoR3JvdXBN
YXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1
cmUyRE9FUyhDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlLCBHTGVnbEltYWdlT0VT
IGltYWdlKQorYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVnbEltYWdlT0VTIGltYWdlKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVnbEltYWdlT0VTICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsSW1hZ2VFeHRl
cm5hbE9FUykKICAgICB7CkBAIC0zNDYxLDcgKzM0OTgsNyBAQCBib29sIFZhbGlkYXRlRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdHlwZSwg
R0xlZwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRS
ZW5kZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRUdM
SW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCiB7CkBAIC0zNDk5LDcgKzM1MzYsNyBAQCBib29sIFZh
bGlkYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlC
YXNlKENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXkpCitib29sIFZhbGlkYXRl
QmluZFZlcnRleEFycmF5QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlE
IGFycmF5KQogewogICAgIGlmICghY29udGV4dC0+aXNWZXJ0ZXhBcnJheUdlbmVyYXRlZChhcnJh
eSkpCiAgICAgewpAQCAtMzUxMiw3ICszNTQ5LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhB
cnJheUJhc2UoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnlCYXNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeUJhc2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Rm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKQEAg
LTM1NDIsMTIgKzM1NzksMTIgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnlCYXNlKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9n
cmFtQmluYXJ5QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1C
aW5hcnlCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpiaW5hcnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZW51bSAqYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmJpbmFyeSkKIHsKICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
R2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogICAgIGlmIChwcm9ncmFtT2JqZWN0
ID09IG51bGxwdHIpCkBAIC0zNTcwLDcgKzM2MDcsNyBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3Jh
bUJpbmFyeUJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZURyYXdCdWZmZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNv
bnN0IEdMZW51bSAqYnVmcykKK2Jvb2wgVmFsaWRhdGVEcmF3QnVmZmVyc0Jhc2UoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiB7CiAgICAgLy8g
SU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgbiBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRo
YW4gdmFsdWUgb2YgTUFYX0RSQVdfQlVGRkVSUwogICAgIGlmIChuIDwgMCkKQEAgLTM2NDIsMTEg
KzM2NzksMTEgQEAgYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzQmFzZShDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnN0ICpwYXJhbXMpCiB7CiAgICAgaWYgKGxlbmd0
aCkKICAgICB7CkBAIC0zNjg2LDcgKzM3MjMsNyBAQCBib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9p
bnRlcnZCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVVbm1hcEJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0
YXJnZXQpCitib29sIFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQogewogICAgIGlmICghY29udGV4dC0+aXNWYWxpZEJ1
ZmZlckJpbmRpbmcodGFyZ2V0KSkKICAgICB7CkBAIC0zNzA1LDcgKzM3NDIsNyBAQCBib29sIFZh
bGlkYXRlVW5tYXBCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VC
YXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VCYXNlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
bGVuZ3RoLApAQCAtMzc5NSw3ICszODMyLDcgQEAgYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdl
QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZU1hcEJ1ZmZlckJhc2Uo
Y29udGV4dCwgdGFyZ2V0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFu
Z2VCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJS
YW5nZUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgpCkBAIC0zODQ2LDcgKzM4
ODMsNyBAQCBib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2UoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRl
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4pCitib29sIFZhbGlkYXRlR2VuT3JEZWxldGUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbikKIHsKICAgICBpZiAobiA8IDApCiAgICAgewpA
QCAtMzg1Niw3ICszODkzLDcgQEAgYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlKENvbnRleHQgKmNv
bnRleHQsIEdMaW50IG4pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSb2J1
c3RFbnRyeVBvaW50KENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgYnVmU2l6ZSkKK2Jvb2wgVmFs
aWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgYnVm
U2l6ZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yb2J1c3RDbGllbnRN
ZW1vcnkpCiAgICAgewpAQCAtMzg3Myw3ICszOTEwLDcgQEAgYm9vbCBWYWxpZGF0ZVJvYnVzdEVu
dHJ5UG9pbnQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgbnVtUGFyYW1zKQorYm9vbCBWYWxpZGF0ZVJvYnVz
dEJ1ZmZlclNpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpIG51bVBhcmFtcykKIHsKICAgICBpZiAoYnVmU2l6ZSA8IG51bVBhcmFtcykKICAgICB7CkBA
IC0zODg0LDcgKzM5MjEsNyBAQCBib29sIFZhbGlkYXRlUm9idXN0QnVmZmVyU2l6ZShDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgbnVtUGFyYQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXZCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCkBAIC00MTUxLDEzICs0MTg4LDEzIEBAIGJvb2wg
VmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkJhc2UoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50
cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00MTgxLDEyICs0MjE4LDEyIEBA
IGJvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVm
ZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXpl
KSkKICAgICB7CkBAIC00MjA5LDEyICs0MjQ2LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50NjQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgR0xzaXpl
aSBudW1QYXJhbXMgPSAwOwogCkBAIC00MjM4LDcgKzQyNzUsNyBAQCBib29sIFZhbGlkYXRlR2V0
QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXZCYXNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2QmFzZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJhbXMpCkBAIC00MzM0LDcgKzQz
NzEsNyBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2QmFzZShDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwga1Byb2dyYW1Ob3RMaW5rZWQpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+aGFzTGlua2Vk
U2hhZGVyU3RhZ2UoU2hhZGVyVHlwZTo6Q29tcHV0ZSkpCisgICAgICAgICAgICBpZiAoIXByb2dy
YW1PYmplY3QtPmdldEV4ZWN1dGFibGUoKS5oYXNMaW5rZWRTaGFkZXJTdGFnZShTaGFkZXJUeXBl
OjpDb21wdXRlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb0FjdGl2ZUNvbXB1dGVTaGFkZXJT
dGFnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDM2MSw3ICs0Mzk4LDcg
QEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
IGtQcm9ncmFtTm90TGlua2VkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmhhc0xpbmtlZFNoYWRl
clN0YWdlKFNoYWRlclR5cGU6Okdlb21ldHJ5KSkKKyAgICAgICAgICAgIGlmICghcHJvZ3JhbU9i
amVjdC0+Z2V0RXhlY3V0YWJsZSgpLmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6Okdl
b21ldHJ5KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb0FjdGl2ZUdlb21ldHJ5U2hhZGVyU3Rh
Z2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQzODQsMTIgKzQ0MjEsMTIg
QEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqcGFyYW1zKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50
KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAgLTQ0MTMsMTIgKzQ0NTAsMTIgQEAgYm9vbCBW
YWxpZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqcGFyYW1zKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50
KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAgLTQ0NDIsMTIgKzQ0NzksMTIgQEAgYm9vbCBW
YWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNoYWRlcml2Um9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJpdlJvYnVz
dEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9p
bnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDQ3MSwxMiArNDUwOCwxMiBAQCBib29s
IFZhbGlkYXRlR2V0U2hhZGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZT
aXplKSkKICAgICB7CkBAIC00NTAwLDEyICs0NTM3LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAKICAg
ICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKQEAgLTQ1
MjcsMjkgKzQ1NjQsMjkgQEAgYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVO
VEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRF
RCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCkBAIC00NTYzLDcgKzQ2MDAsNyBA
QCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBw
bmFtZSwgYnVmU2l6ZSwgdHJ1ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCkBAIC00NTc3LDcgKzQ2
MTQsNyBAQCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFy
Z2V0LCBwbmFtZSwgYnVmU2l6ZSwgdHJ1ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRl
eFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKQEAg
LTQ1ODcsNyArNDYyNCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLApAQCAtNDU5NywxMiArNDYzNCwxMiBAQCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBv
aW50KGNvbnRleHQsIGJ1ZlNpemUpKQogICAgIHsKQEAgLTQ2MjUsMTIgKzQ2NjIsMTIgQEAgYm9v
bCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBp
ZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBA
IC00NjUzLDI5ICs0NjkwLDI5IEBAIGJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMp
CiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1w
bGVySUQgc2FtcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLApAQCAtNDY4OSw3ICs0NzI2LDcgQEAgYm9vbCBWYWxpZGF0ZVNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5hbWUsIGJ1
ZlNpemUsIHRydWUsIHBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKQEAg
LTQ3MDMsNyArNDc0MCw3IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0
ZXJCYXNlKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBidWZTaXplLCB0cnVlLCBwYXJhbXMpOwog
fQogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKQEAgLTQ3MTMsNyArNDc1MCw3IEBA
IGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1l
dGVySXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxl
clBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCkBAIC00NzIzLDEyICs0NzYwLDEyIEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFy
YW1ldGVySXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBp
ZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBA
IC00NzUxLDEyICs0Nzg4LDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVu
dHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCiAgICAgewpAQCAtNDc4MCwxMiArNDgxNywxMiBA
QCBib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmli
UG9pbnRlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKipwb2ludGVyKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29uc3QgKnBv
aW50ZXIpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVm
U2l6ZSkpCiAgICAgewpAQCAtNDgwOSwxMiArNDg0NiwxMiBAQCBib29sIFZhbGlkYXRlR2V0VmVy
dGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQsIGJ1ZlNpemUp
KQogICAgIHsKQEAgLTQ4MzgsMTIgKzQ4NzUsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0
dHJpYklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFt
cykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXpl
KSkKICAgICB7CkBAIC00ODY3LDEzICs0OTA0LDEzIEBAIGJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJJdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVz
dEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRyeVBvaW50KGNvbnRleHQs
IGJ1ZlNpemUpKQogICAgIHsKQEAgLTQ4OTgsMTMgKzQ5MzUsMTMgQEAgYm9vbCBWYWxpZGF0ZUdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXZSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXZS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0RW50
cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC00OTMzLDcgKzQ5NzAsNyBAQCBi
b29sIFZhbGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAvLyBJbiB0aGUgV2ViR0wgMiBBUEksIHRyeWluZyB0byBwZXJmb3JtIGEgY2xlYXIgd2hl
biB0aGVyZSBpcyBhIG1pc21hdGNoIGJldHdlZW4gdGhlIHR5cGUgb2YgdGhlCiAvLyBzcGVjaWZp
ZWQgY2xlYXIgdmFsdWUgYW5kIHRoZSB0eXBlIG9mIGEgYnVmZmVyIHRoYXQgaXMgYmVpbmcgY2xl
YXJlZCBnZW5lcmF0ZXMgYW4KIC8vIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGluc3RlYWQgb2Yg
cHJvZHVjaW5nIHVuZGVmaW5lZCByZXN1bHRzCi1ib29sIFZhbGlkYXRlV2ViR0xGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRDbGVhclR5cGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVXZWJH
TEZyYW1lYnVmZmVyQXR0YWNobWVudENsZWFyVHlwZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRy
YXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xlbnVtICp2YWxpZENvbXBvbmVudFR5cGVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWxpZENvbXBvbmVudFR5cGVD
b3VudCkKQEAgLTQ5NTQsNyArNDk5MSw5IEBAIGJvb2wgVmFsaWRhdGVXZWJHTEZyYW1lYnVmZmVy
QXR0YWNobWVudENsZWFyVHlwZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlUm9idXN0Q29tcHJlc3NlZFRleEltYWdlQmFzZShDb250ZXh0ICpj
b250ZXh0LCBHTHNpemVpIGltYWdlU2l6ZSwgR0xzaXplaSBkYXRhU2l6ZSkKK2Jvb2wgVmFsaWRh
dGVSb2J1c3RDb21wcmVzc2VkVGV4SW1hZ2VCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGF0
YVNpemUpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgZGF0
YVNpemUpKQogICAgIHsKQEAgLTQ5NzIsNyArNTAxMSw3IEBAIGJvb2wgVmFsaWRhdGVSb2J1c3RD
b21wcmVzc2VkVGV4SW1hZ2VCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgaW1hZ2VTaXpl
LCBHCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0
ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVy
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHBvaW50ZXJWZXJzaW9uLApAQCAtNTA2Myw3ICs1MTAyLDcgQEAgYm9vbCBWYWxp
ZGF0ZUdldEJ1ZmZlclBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2QmFzZShD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkKQEAgLTUxMzYsNyArNTE3NSw3
IEBAIGJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkJhc2UoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFNoYWRlcml2
QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNoYWRlcml2QmFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgc2hhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkKQEAgLTUy
MDQsNyArNTI0Myw3IEBAIGJvb2wgVmFsaWRhdGVHZXRTaGFkZXJpdkJhc2UoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRl
ckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgpCkBAIC01MzU2LDcgKzUzOTUsNyBAQCBib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVy
QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0VmVydGV4QXR0cmliQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dFZlcnRleEF0dHJpYkJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKQEAgLTU0NTEsNyArNTQ5MCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRW
ZXJ0ZXhBdHRyaWJCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVQaXhlbFBhY2soQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQ
aXhlbFBhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCkBAIC01NDYwLDcgKzU0OTksNyBAQCBib29sIFZh
bGlkYXRlUGl4ZWxQYWNrKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwaXhlbHMpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIHBpeGVsIHBhY2sgYnVmZmVyIHJlbGF0ZWQg
QVBJIGVycm9ycwogICAgIEJ1ZmZlciAqcGl4ZWxQYWNrQnVmZmVyID0gY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRUYXJnZXRCdWZmZXIoQnVmZmVyQmluZGluZzo6UGl4ZWxQYWNrKTsKQEAgLTU1Mjcs
NyArNTU2Niw3IEBAIGJvb2wgVmFsaWRhdGVQaXhlbFBhY2soQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKQEAgLTU1MzgsNyArNTU3Nyw3IEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxz
QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb2x1bW5z
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAobGVuZ3RoICE9IG51bGxwdHIpCiAg
ICAgewpAQCAtNTcwMiw3ICs1NzQxLDcgQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKENv
bnRleHQgKmNvbnRleHQsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+Ci1ib29s
IFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVRleFBhcmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKQEAgLTU4MDQsOCArNTg0Myw5IEBAIGJvb2wgVmFsaWRhdGVUZXhQYXJh
bWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQ
X1Q6CiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGJvb2wgcmVzdHJpY3RlZFdyYXBNb2RlcyA9Ci0gICAgICAgICAgICAgICAgdGFyZ2V0ID09
IFRleHR1cmVUeXBlOjpFeHRlcm5hbCB8fCB0YXJnZXQgPT0gVGV4dHVyZVR5cGU6OlJlY3Rhbmds
ZTsKKyAgICAgICAgICAgIGJvb2wgcmVzdHJpY3RlZFdyYXBNb2RlcyA9ICgodGFyZ2V0ID09IFRl
eHR1cmVUeXBlOjpFeHRlcm5hbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWxXcmFwTW9k
ZXNFWFQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
ID09IFRleHR1cmVUeXBlOjpSZWN0YW5nbGUpOwogICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVRl
eHR1cmVXcmFwTW9kZVZhbHVlKGNvbnRleHQsIHBhcmFtcywgcmVzdHJpY3RlZFdyYXBNb2Rlcykp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjAwMCwy
NiArNjA0MCwyNiBAQCBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSBib29sIFZhbGlkYXRlVGV4UGFy
YW1ldGVyQmFzZShDb250ZXh0ICosCit0ZW1wbGF0ZSBib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVy
QmFzZShjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqKTsKLXRlbXBsYXRl
IGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKiwKK3RlbXBsYXRlIGJvb2wg
VmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqKTsKLXRlbXBsYXRlIGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQg
KiwKK3RlbXBsYXRlIGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKik7CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
bmRleChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSW5kZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KQogewogICAg
IGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgewpAQCAtNjAzMCw3ICs2MDcw
LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCkBAIC02MDkzLDcgKzYxMzMsNyBAQCBib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBQYXJhbVR5cGU+Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBz
YW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCkBAIC02
MjAxLDI2ICs2MjQxLDI2IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSBib29sIFZhbGlk
YXRlU2FtcGxlclBhcmFtZXRlckJhc2UoQ29udGV4dCAqLAordGVtcGxhdGUgYm9vbCBWYWxpZGF0
ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICopOwotdGVtcGxhdGUgYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJCYXNlKENvbnRleHQgKiwKK3RlbXBsYXRlIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFy
YW1ldGVyQmFzZShjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2FtcGxlcklELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKik7Ci10ZW1wbGF0ZSBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2Uo
Q29udGV4dCAqLAordGVtcGxhdGUgYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNv
bnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTYW1wbGVySUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKik7
CiAKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkK
QEAgLTYyOTAsNyArNjMzMCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFz
ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0SW50ZXJuYWxGb3JtYXRpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRJbnRlcm5hbEZvcm1hdGl2QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKQEAgLTYzNzIsOCArNjQx
Miw4IEBAIGJvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2QmFzZShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJOb3RN
dWx0aXNhbXBsZWQoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCitib29sIFZhbGlkYXRlRnJh
bWVidWZmZXJOb3RNdWx0aXNhbXBsZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWVk
UmVzb3VyY2VTYW1wbGVzKQogewogICAgIGludCBzYW1wbGVzID0gbmVlZFJlc291cmNlU2FtcGxl
cyA/IGZyYW1lYnVmZmVyLT5nZXRSZXNvdXJjZVNhbXBsZXMoY29udGV4dCkKQEAgLTYzODYsNyAr
NjQyNiw3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlck5vdE11bHRpc2FtcGxlZChDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGl0ZXh0
dXJlVW5pdChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSkKK2Jvb2wgVmFsaWRhdGVN
dWx0aXRleHR1cmVVbml0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKQog
ewogICAgIGlmICh0ZXh0dXJlIDwgR0xfVEVYVFVSRTAgfHwgdGV4dHVyZSA+PSBHTF9URVhUVVJF
MCArIGNvbnRleHQtPmdldENhcHMoKS5tYXhNdWx0aXRleHR1cmVVbml0cykKICAgICB7CkBAIC02
Mzk2LDcgKzY0MzYsNyBAQCBib29sIFZhbGlkYXRlTXVsdGl0ZXh0dXJlVW5pdChDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGV4dHVyZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVRleFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVRleFN0b3JhZ2VNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCkBAIC02NDUzLDcgKzY0
OTMsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0
aXNhbXBsZUJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRN
dWx0aXNhbXBsZUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LApAQCAt
NjQ3NSw3ICs2NTE1LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQmFz
ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVRleFN0b3JhZ2VNdWx0aXNh
bXBsZShjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKQEAgLTY1NDUsNyArNjU4NSwxMCBAQCBib29sIFZhbGlkYXRlR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKQorYm9vbCBWYWxpZGF0ZUdldE11
bHRpc2FtcGxlZnZCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWwpCiB7CiAgICAgaWYgKHBuYW1lICE9IEdMX1NBTVBMRV9QT1NJ
VElPTikKICAgICB7CkBAIC02NTY1LDcgKzY2MDgsNyBAQCBib29sIFZhbGlkYXRlR2V0TXVsdGlz
YW1wbGVmdkJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUJhc2UoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKK2Jvb2wg
VmFsaWRhdGVTYW1wbGVNYXNraUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IG1h
c2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKIHsKICAgICBpZiAobWFza051bWJlciA+PSBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGNvbnRleHQtPmdldENhcHMoKS5tYXhTYW1wbGVNYXNrV29yZHMpKQog
ICAgIHsKQEAgLTY1NzYsNyArNjYxOSw3IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUJhc2Uo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkRHJhd0F0dHJpYnNFcnJvcihDb250ZXh0ICpj
b250ZXh0KQordm9pZCBSZWNvcmREcmF3QXR0cmlic0Vycm9yKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpCiB7CiAgICAgLy8gQW4gb3ZlcmZsb3cgY2FuIGhhcHBlbiB3aGVuIGFkZGluZyB0aGUgb2Zm
c2V0LiBDaGVjayBhZ2FpbnN0IGEgc3BlY2lhbCBjb25zdGFudC4KICAgICBpZiAoY29udGV4dC0+
Z2V0U3RhdGVDYWNoZSgpLmdldE5vbkluc3RhbmNlZFZlcnRleEVsZW1lbnRMaW1pdCgpID09CkBA
IC02NTk0LDcgKzY2MzcsNyBAQCB2b2lkIFJlY29yZERyYXdBdHRyaWJzRXJyb3IoQ29udGV4dCAq
Y29udGV4dCkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVMb3NlQ29udGV4dENIUk9NSVVNKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTG9zZUNvbnRleHRDSFJPTUlVTShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhp
Y3NSZXNldFN0YXR1cyBjdXJyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3JhcGhpY3NSZXNldFN0YXR1cyBvdGhlcikKIHsKQEAgLTY2MzAsNyArNjY3Myw3IEBAIGJvb2wg
VmFsaWRhdGVMb3NlQ29udGV4dENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCiB9CiAKIC8vIEdM
X0FOR0xFX3RleHR1cmVfc3RvcmFnZV9leHRlcm5hbAotYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRF
eHRlcm5hbEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2UyREV4
dGVybmFsQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKQEAgLTY2NzUsNyArNjcxOCw3IEBA
IGJvb2wgVmFsaWRhdGVUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRShDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZVRleHR1cmVBTkdM
RShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpCitib29sIFZhbGlkYXRlSW52
YWxpZGF0ZVRleHR1cmVBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0
YXJnZXQpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUV4dGVy
bmFsVXBkYXRlQU5HTEUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oCmluZGV4IDZiZGU1YWU3MmVjZWY1ODVkNDg5MzMw
ZWExZmRlYmJhNmYyODkzODIuLmFjN2Q3N2RjMTVmZjJiYTIyYjE2OGMxNjEwY2U4NGRhYTQyM2Jm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTLmgKQEAgLTM2LDggKzM2LDcgQEAgc3RydWN0IExpbmtlZFVuaWZvcm07CiBjbGFz
cyBQcm9ncmFtOwogY2xhc3MgU2hhZGVyOwogCi12b2lkIFNldFJvYnVzdExlbmd0aFBhcmFtKEdM
c2l6ZWkgKmxlbmd0aCwgR0xzaXplaSB2YWx1ZSk7Ci1ib29sIElzRVRDMkVBQ0Zvcm1hdChjb25z
dCBHTGVudW0gZm9ybWF0KTsKK3ZvaWQgU2V0Um9idXN0TGVuZ3RoUGFyYW0oY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLCBHTHNpemVpIHZhbHVlKTsKIGJvb2wgVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUpOwogYm9vbCBWYWxpZFRleHR1cmUy
RFRhcmdldChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlKTsKIGJvb2wg
VmFsaWRUZXh0dXJlM0RUYXJnZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUg
dGFyZ2V0KTsKQEAgLTQ4LDcgKzQ3LDcgQEAgYm9vbCBWYWxpZFRleHR1cmUzRERlc3RpbmF0aW9u
VGFyZ2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUYXJnZXQgdGFyZ2UKIGJvb2wg
VmFsaWRUZXhMZXZlbERlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRl
eHR1cmVUeXBlIHR5cGUpOwogYm9vbCBWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZE1pcExldmVsKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUsIEdMaW50IGxldmVsKTsKLWJvb2wgVmFs
aWRJbWFnZVNpemVQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkSW1hZ2VT
aXplUGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLApAQCAtNzIsNyArNzEsNyBAQCBib29sIFZhbGlkQ29tcHJlc3NlZFN1YkltYWdlU2l6
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHRleHR1cmVXaWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB0ZXh0dXJlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHRleHR1cmVEZXB0aCk7Ci1ib29sIFZhbGlkSW1hZ2VEYXRhU2l6ZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZEltYWdlRGF0YVNpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRleFR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCkBAIC04NCw3ICs4Myw3IEBAIGJvb2wgVmFsaWRJbWFnZURhdGFTaXplKENv
bnRleHQgKmNvbnRleHQsCiAKIGJvb2wgVmFsaWRRdWVyeVR5cGUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgUXVlcnlUeXBlIHF1ZXJ5VHlwZSk7CiAKLWJvb2wgVmFsaWRhdGVXZWJHTFZlcnRleEF0
dHJpYlBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVXZWJHTFZlcnRleEF0
dHJpYlBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCkBAIC05NCwyNyArOTMs
MjcgQEAgYm9vbCBWYWxpZGF0ZVdlYkdMVmVydGV4QXR0cmliUG9pbnRlcihDb250ZXh0ICpjb250
ZXh0LAogLy8gUmV0dXJucyB2YWxpZCBwcm9ncmFtIGlmIGlkIGlzIGEgdmFsaWQgcHJvZ3JhbSBu
YW1lCiAvLyBFcnJvcnMgSU5WQUxJRF9PUEVSQVRJT04gaWYgdmFsaWQgc2hhZGVyIGlzIGdpdmVu
IGFuZCByZXR1cm5zIE5VTEwKIC8vIEVycm9ycyBJTlZBTElEX1ZBTFVFIG90aGVyd2lzZSBhbmQg
cmV0dXJucyBOVUxMCi1Qcm9ncmFtICpHZXRWYWxpZFByb2dyYW0oQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIGlkKTsKK1Byb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpOwogCiAvLyBSZXR1cm5zIHZhbGlkIHNo
YWRlciBpZiBpZCBpcyBhIHZhbGlkIHNoYWRlciBuYW1lCiAvLyBFcnJvcnMgSU5WQUxJRF9PUEVS
QVRJT04gaWYgdmFsaWQgcHJvZ3JhbSBpcyBnaXZlbiBhbmQgcmV0dXJucyBOVUxMCiAvLyBFcnJv
cnMgSU5WQUxJRF9WQUxVRSBvdGhlcndpc2UgYW5kIHJldHVybnMgTlVMTAotU2hhZGVyICpHZXRW
YWxpZFNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgaWQpOworU2hhZGVy
ICpHZXRWYWxpZFNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQg
aWQpOwogCi1ib29sIFZhbGlkYXRlQXR0YWNobWVudFRhcmdldChDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gYXR0YWNobWVudCk7Ci1ib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFt
ZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQXR0YWNobWVudFRhcmdl
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYXR0YWNobWVudCk7Citib29sIFZhbGlk
YXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlk
YXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5k
ZXJidWZmZXIpOwogCi1ib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNyY1gwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc3JjWTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzcmNYMSwKQEAgLTEyNiw3ICsxMjUsNyBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVy
UGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZpbHRlcik7CiAKLWJvb2wgVmFsaWRhdGVQaXhlbFBhY2soQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQaXhlbFBhY2soY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
CkBAIC0xMzUsOSArMTM0LDkgQEAgYm9vbCBWYWxpZGF0ZVBpeGVsUGFjayhDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscyk7CisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7CiAKLWJvb2wgVmFsaWRhdGVS
ZWFkUGl4ZWxzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNC
YXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC0xNDgsOCArMTQ3LDggQEAgYm9v
bCBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmNvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqcm93cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpOwotYm9v
bCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRl
UmVhZFBpeGVsc1JvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCkBAIC0xNTcsMTEgKzE1NiwxMSBAQCBib29sIFZhbGlkYXRlUmVhZFBp
eGVsc1JvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
Y29sdW1ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJv
b2wgVmFsaWRhdGVSZWFkblBpeGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKnJvd3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZh
bGlkYXRlUmVhZG5QaXhlbHNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTE2
OSw4ICsxNjgsOCBAQCBib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpw
aXhlbHMpOwotYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOwor
Ym9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTE3OCw3MSArMTc3LDg5IEBAIGJv
b2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqcm93cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmRhdGEpOwotCi1ib29sIFZhbGlkYXRlR2VuUXVlcmllc0VYVChnbDo6Q29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBRdWVyeUlEICppZHMpOwotYm9vbCBWYWxpZGF0ZURl
bGV0ZVF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgUXVl
cnlJRCAqaWRzKTsKLWJvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhUKGdsOjpDb250ZXh0ICpjb250ZXh0
LCBRdWVyeUlEIGlkKTsKLWJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5QmFzZShDb250ZXh0ICpjb250
ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBRdWVyeUlEIGlkKTsKLWJvb2wgVmFsaWRhdGVCZWdpblF1
ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIFF1ZXJ5SUQgaWQpOwot
Ym9vbCBWYWxpZGF0ZUVuZFF1ZXJ5QmFzZShDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFy
Z2V0KTsKLWJvb2wgVmFsaWRhdGVFbmRRdWVyeUVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5
cGUgdGFyZ2V0KTsKLWJvb2wgVmFsaWRhdGVRdWVyeUNvdW50ZXJFWFQoQ29udGV4dCAqY29udGV4
dCwgUXVlcnlJRCBpZCwgUXVlcnlUeXBlIHRhcmdldCk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlp
dkJhc2UoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
THNpemVpICpudW1QYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZFWFQoQ29udGV4dCAq
Y29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
LWJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvbHVt
bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpy
b3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0
YSk7CisKK2Jvb2wgVmFsaWRhdGVHZW5RdWVyaWVzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMc2l6ZWkgbiwgY29uc3QgUXVlcnlJRCAqaWRzKTsKK2Jvb2wgVmFsaWRhdGVEZWxldGVRdWVy
aWVzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgUXVlcnlJRCAq
aWRzKTsKK2Jvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1
ZXJ5SUQgaWQpOworYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIFF1ZXJ5SUQgaWQpOworYm9vbCBWYWxpZGF0ZUJlZ2lu
UXVlcnlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgUXVlcnlJ
RCBpZCk7Citib29sIFZhbGlkYXRlRW5kUXVlcnlCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5VHlwZSB0YXJnZXQpOworYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQpOworYm9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRl
ckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBRdWVyeVR5cGUgdGFyZ2V0
KTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlpdkVYVChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlUeXBl
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVl
QmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFs
dWVCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUXVlcnlJRCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbnVtUGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2RVhUKENv
bnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdkVYVChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlk
LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29s
IFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3R1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJv
b2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJ
RCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1
ZXJ5T2JqZWN0aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFt
cyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50NjQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dkVY
VChDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpw
YXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1
ZXJ5SUQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUXVlcnlJRCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKTsKIAotYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1Db21tb25CYXNlKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJh
c2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExp
bmtlZFVuaWZvcm0gKip1bmlmb3JtT3V0KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMWl2VmFsdWUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWl2VmFsdWUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVuaWZv
cm1UeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwogCi1BTkdMRV9J
TkxJTkUgYm9vbCBWYWxpZGF0ZVVuaWZvcm1WYWx1ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dmFsdWVUeXBlLCBHTGVudW0gdW5pZm9ybVR5cGUpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0
ZVVuaWZvcm1WYWx1ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdmFsdWVUeXBlLCBH
TGVudW0gdW5pZm9ybVR5cGUpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgdHlwZSBp
cyBjb21wYXRpYmxlIHdpdGggdW5pZm9ybSB0eXBlLgogICAgIC8vIERvIHRoZSBjaGVhcGVyIHRl
c3QgZmlyc3QsIGZvciBhIGxpdHRsZSBleHRyYSBzcGVlZC4KQEAgLTI1NCw0NCArMjcxLDQ3IEBA
IEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlVW5pZm9ybVZhbHVlKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4VmFsdWUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZhbHVlVHlw
ZSwgR0xlbnVtIHVuaWZvcm1UeXBlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB1bmlmb3JtVHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQp
OwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4VmFsdWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZh
bHVlVHlwZSwgR0xlbnVtIHVuaWZvcm1UeXBlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdW5pZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0
cml4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbWF0cml4VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UpOwotYm9vbCBWYWxpZGF0ZUdldEJv
b2xlYW52Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCb29s
ZWFudlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0RmxvYXR2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMYm9vbGVhbiAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRGbG9hdHZS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlU3RhdGVRdWVyeShDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZVN0YXRlUXVlcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSAqbmF0aXZlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCAqbnVtUGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpOwot
Ym9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmRhdGEp
OworYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRh
dGEpOwotYm9vbCBWYWxpZGF0ZVJvYnVzdFN0YXRlUXVlcnkoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVSb2J1c3RTdGF0ZVF1ZXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKm5hdGl2ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgKm51bVBhcmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJh
bWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBh
cmFtZXRlcnNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMzA2LDEw
ICszMjYsMTAgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1h
dCAqdGV4dHVyZUZvcm1hdE91dCk7CiAKLXZvaWQgUmVjb3JkRHJhd01vZGVFcnJvcihDb250ZXh0
ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1vZGUpOwotY29uc3QgY2hhciAqVmFsaWRhdGVEcmF3
RWxlbWVudHNTdGF0ZXMoQ29udGV4dCAqY29udGV4dCk7Cit2b2lkIFJlY29yZERyYXdNb2RlRXJy
b3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlKTsKK2NvbnN0IGNo
YXIgKlZhbGlkYXRlRHJhd0VsZW1lbnRzU3RhdGVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwog
Ci1BTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdCYXNlKENvbnRleHQgKmNvbnRleHQsIFBy
aW1pdGl2ZU1vZGUgbW9kZSkKK0FOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0Jhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlKQogewogICAgIGlmICghY29u
dGV4dC0+Z2V0U3RhdGVDYWNoZSgpLmlzVmFsaWREcmF3TW9kZShtb2RlKSkKICAgICB7CkBAIC0z
MzQsMTk5ICszNTQsMjAxIEBAIEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0Jhc2UoQ29u
dGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2UoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJv
b2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpOwot
Ym9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCk7CiAKLWJvb2wgVmFs
aWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHByaW1jb3VudCk7Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVE
cmF3RWxlbWVudHNJbnN0YW5jZWRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVE
cmF3RWxlbWVudHNJbnN0YW5jZWRFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsK
IAotYm9vbCBWYWxpZGF0ZURyYXdJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0KTsKLWJv
b2wgVmFsaWRhdGVEcmF3SW5zdGFuY2VkRVhUKENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxp
ZGF0ZURyYXdJbnN0YW5jZWRBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFs
aWRhdGVEcmF3SW5zdGFuY2VkRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwogCi1ib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpOwogCi1ib29sIFZhbGlkYXRlR2V0
VW5pZm9ybUJhc2UoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24pOwor
Ym9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdl
dG5Vbmlmb3JtaXZFWFQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUdldG5Vbmlmb3JtaXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtdWl2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2Um9i
dXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRl
R2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqcGFyYW1zKTsKIAotYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1BdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZW51bSAqYXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CiAKLWJvb2wgVmFsaWRhdGVJbnNlcnRFdmVudE1h
cmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFy
a2VyKTsKLWJvb2wgVmFsaWRhdGVQdXNoR3JvdXBNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcik7Citib29sIFZhbGlkYXRlSW5zZXJ0
RXZlbnRNYXJrZXJFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNv
bnN0IGNoYXIgKm1hcmtlcik7Citib29sIFZhbGlkYXRlUHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpOwog
Ci1ib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZVR5
cGUgdHlwZSwKK2Jvb2wgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci1ib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRSZW5k
ZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRUdMSW1h
Z2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwogCi1ib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5QmFz
ZShDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KTsKK2Jvb2wgVmFsaWRhdGVC
aW5kVmVydGV4QXJyYXlCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQg
YXJyYXkpOwogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeUJhc2UoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCk7Ci1ib29sIFZhbGlkYXRlR2V0
UHJvZ3JhbUJpbmFyeUJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9n
cmFtQmluYXJ5QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqYmluYXJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xlbnVtICpiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5KTsKIAotYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJz
QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7Citi
b29sIFZhbGlkYXRlRHJhd0J1ZmZlcnNCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKIAotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50
ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2
QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKipwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyQmFzZShDb250ZXh0ICpjb250
ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCk7Ci1ib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VC
YXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmNvbnN0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyQmFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCk7Citib29sIFZhbGlkYXRl
TWFwQnVmZmVyUmFuZ2VCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJpdGZpZWxkIGFjY2Vzcyk7Ci1ib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJS
YW5nZUJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZl
clJhbmdlQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCk7CiAKLWJvb2wgVmFs
aWRhdGVHZW5PckRlbGV0ZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKTsKK2Jvb2wgVmFsaWRh
dGVHZW5PckRlbGV0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKTsKIAotYm9vbCBW
YWxpZGF0ZVJvYnVzdEVudHJ5UG9pbnQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXpl
KTsKLWJvb2wgVmFsaWRhdGVSb2J1c3RCdWZmZXJTaXplKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSBudW1QYXJhbXMpOworYm9vbCBWYWxpZGF0ZVJvYnVzdEVudHJ5
UG9pbnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBidWZTaXplKTsKK2Jvb2wgVmFs
aWRhdGVSb2J1c3RCdWZmZXJTaXplKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSBudW1QYXJhbXMpOwogCi1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBh
cmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyQmFzZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBvaW50ZXJW
ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbnVt
UGFyYW1zKTsKIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdkJhc2UoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXZCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKm51bVBhcmFtcyk7CiAKLWJvb2wgVmFsaWRhdGVH
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgpOwogCi1ib29sIFZhbGlkYXRlR2V0U2hhZGVyaXZCYXNlKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0U2hhZGVyaXZCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKTsKIAotYm9vbCBWYWxpZGF0ZUdldFRl
eFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJh
bWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgotYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZlY3RvclBh
cmFtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmFtVHlwZSAqcGFy
YW1zKTsKIAotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHBvaW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHB1cmVJbnRlZ2VyRW50cnlQb2ludCk7CiAKLUFOR0xFX0lOTElORSBib29sIFZh
bGlkYXRlVmVydGV4Rm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitBTkdMRV9JTkxJTkUgYm9vbCBW
YWxpZGF0ZVZlcnRleEZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGVDYXNlIHZhbGlkYXRpb24pCkBAIC01
NzIsNyArNTk0LDcgQEAgQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVWZXJ0ZXhGb3JtYXQoQ29u
dGV4dCAqY29udGV4dCwKIH0KIAogLy8gTm90ZTogVGhlc2UgYnl0ZSwgc2hvcnQsIGFuZCBpbnQg
dHlwZXMgYXJlIGFsbCBjb252ZXJ0ZWQgdG8gZmxvYXQgZm9yIHRoZSBzaGFkZXIuCi1BTkdMRV9J
TkxJTkUgYm9vbCBWYWxpZGF0ZUZsb2F0VmVydGV4Rm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitB
TkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZUZsb2F0VmVydGV4Rm9ybWF0KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVydGV4QXR0cmliVHlwZSB0eXBlKQpAQCAtNTgxLDcgKzYwMyw3IEBAIEFOR0xFX0lOTElORSBi
b29sIFZhbGlkYXRlRmxvYXRWZXJ0ZXhGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGVDYWNoZSgpLmdldFZlcnRl
eEF0dHJpYlR5cGVWYWxpZGF0aW9uKHR5cGUpKTsKIH0KIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFs
aWRhdGVJbnRlZ2VyVmVydGV4Rm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitBTkdMRV9JTkxJTkUg
Ym9vbCBWYWxpZGF0ZUludGVnZXJWZXJ0ZXhGb3JtYXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0
ZXhBdHRyaWJUeXBlIHR5cGUpCkBAIC01OTAsNzUgKzYxMiw3NyBAQCBBTkdMRV9JTkxJTkUgYm9v
bCBWYWxpZGF0ZUludGVnZXJWZXJ0ZXhGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
Y29udGV4dCwgaW5kZXgsIHNpemUsIGNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5nZXRJbnRlZ2Vy
VmVydGV4QXR0cmliVHlwZVZhbGlkYXRpb24odHlwZSkpOwogfQogCi1ib29sIFZhbGlkYXRlV2Vi
R0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVXZWJHTEZyYW1lYnVmZmVyQXR0YWNobWVudENsZWFyVHlwZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICp2YWxpZENvbXBvbmVudFR5cGVzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWxpZENv
bXBvbmVudFR5cGVDb3VudCk7CiAKLWJvb2wgVmFsaWRhdGVSb2J1c3RDb21wcmVzc2VkVGV4SW1h
Z2VCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBHTHNpemVpIGRhdGFT
aXplKTsKK2Jvb2wgVmFsaWRhdGVSb2J1c3RDb21wcmVzc2VkVGV4SW1hZ2VCYXNlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgZGF0YVNpemUpOwogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSW5k
ZXgoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJbmRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpOwogCi1ib29s
IFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXZCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKTsKIAotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQ
YXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBh
cmFtZXRlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFt
VHlwZT4KLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHZlY3RvclBhcmFtcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJhbVR5cGUgKnBhcmFtcyk7CiAKLWJvb2wgVmFs
aWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2QmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldEludGVybmFsRm9ybWF0aXZCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpudW1QYXJhbXMpOwogCi1ib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJOb3RNdWx0aXNhbXBsZWQoQ29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJOb3RNdWx0aXNhbXBsZWQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBuZWVkUmVzb3VyY2VTYW1wbGVzKTsKIAotYm9vbCBWYWxpZGF0ZU11
bHRpdGV4dHVyZVVuaXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpOworYm9vbCBW
YWxpZGF0ZU11bHRpdGV4dHVyZVVuaXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRl
eHR1cmUpOwogCiBib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVNb2RlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFByaW1pdGl2ZU1vZGUgdHJhbnNmb3JtRmVlZGJhY2tQcmltaXRpdmVNb2RlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2Rl
IHJlbmRlclByaW1pdGl2ZU1vZGUpOwogCiAvLyBDb21tb24gdmFsaWRhdGlvbiBmb3IgMkQgYW5k
IDNEIHZhcmlhbnRzIG9mIFRleFN0b3JhZ2UqTXVsdGlzYW1wbGUuCi1ib29sIFZhbGlkYXRlVGV4
U3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3Rv
cmFnZU11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQpOwogCi1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVs
dGlzYW1wbGVCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJE
TXVsdGlzYW1wbGVCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOwog
Ci1ib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJCYXNlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgp
OwogCi1ib29sIFZhbGlkYXRlTWFwQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJC
aW5kaW5nIHRhcmdldCk7Ci1ib29sIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgKmxlbmd0aCk7Ci1i
b29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UyRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVNYXBCdWZmZXJCYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0KTsKK2Jvb2wgVmFsaWRhdGVJbmRleGVkU3RhdGVRdWVyeShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xzaXplaSAqbGVuZ3Ro
KTsKK2Jvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZTJEUGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwKQEAgLTY3NSw3ICs2OTksNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UyRFBh
cmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJEUGFy
YW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJE
UGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTY4OCwx
NCArNzEyLDE0IEBAIGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFtZXRlcnMoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJvcmRlcik7Ci1ib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZTJEUGFyYW1ldGVycyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2UyRFBhcmFtZXRlcnMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBkZXB0aCk7Ci1ib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZTNE
UGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2Uz
RFBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNzAzLDggKzcy
NywxMSBAQCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZTNEUGFyYW1ldGVycyhDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoKTsKIAotYm9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZCYXNlKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpOwotYm9vbCBWYWxp
ZGF0ZVNhbXBsZU1hc2tpQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFza051bWJlciwg
R0xiaXRmaWVsZCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QmFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
KTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzayk7CiAKIC8vIFV0aWxpdHkgbWFjcm8g
Zm9yIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uIG1ldGhvZHMgaW5zaWRlIFZhbGlkYXRpb24uCiAj
ZGVmaW5lIEFOR0xFX0hBTkRMRV9WQUxJREFUSU9OX0VSUihYKSBcCkBAIC03MTcsNyArNzQ0LDgg
QEAgYm9vbCBWYWxpZGF0ZVNhbXBsZU1hc2tpQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
bWFza051bWJlciwgR0xiaXRmaWVsZCBtYXMKIC8vIGluY29uZ3J1ZW50IHdpdGggdGhlIG90aGVy
IGVycm9ycy4KIC8vIElubGluZWQgZm9yIHNwZWVkLgogdGVtcGxhdGUgPEdMZW51bSBFcnJvckNv
ZGUgPSBHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTj4KLUFOR0xFX0lOTElORSBib29s
IFZhbGlkYXRlRnJhbWVidWZmZXJDb21wbGV0ZShDb250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyQ29t
cGxldGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7CiAg
ICAgaWYgKCFmcmFtZWJ1ZmZlci0+aXNDb21wbGV0ZShjb250ZXh0KSkKICAgICB7CkBAIC03Mjgs
MTEgKzc1NiwxMSBAQCBBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyQ29tcGxl
dGUoQ29udGV4dCAqY29udGV4dCwgRnJhbWVidWZmZXIgKmZyYQogICAgIHJldHVybiB0cnVlOwog
fQogCi1jb25zdCBjaGFyICpWYWxpZGF0ZURyYXdTdGF0ZXMoQ29udGV4dCAqY29udGV4dCk7Citj
b25zdCBjaGFyICpWYWxpZGF0ZURyYXdTdGF0ZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCk7CiAK
LXZvaWQgUmVjb3JkRHJhd0F0dHJpYnNFcnJvcihDb250ZXh0ICpjb250ZXh0KTsKK3ZvaWQgUmVj
b3JkRHJhd0F0dHJpYnNFcnJvcihjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKIAotQU5HTEVfSU5M
SU5FIGJvb2wgVmFsaWRhdGVEcmF3QXR0cmlicyhDb250ZXh0ICpjb250ZXh0LCBpbnQ2NF90IG1h
eFZlcnRleCkKK0FOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0F0dHJpYnMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgaW50NjRfdCBtYXhWZXJ0ZXgpCiB7CiAgICAgaWYgKG1heFZlcnRleCA+
IGNvbnRleHQtPmdldFN0YXRlQ2FjaGUoKS5nZXROb25JbnN0YW5jZWRWZXJ0ZXhFbGVtZW50TGlt
aXQoKSkKICAgICB7CkBAIC03NDMsNyArNzcxLDcgQEAgQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRh
dGVEcmF3QXR0cmlicyhDb250ZXh0ICpjb250ZXh0LCBpbnQ2NF90IG1heFZlcnRleCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzQXR0
cmlicyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK0FOR0xF
X0lOTElORSBib29sIFZhbGlkYXRlRHJhd0FycmF5c0F0dHJpYnMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5p
c0J1ZmZlckFjY2Vzc1ZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgewpAQCAtNzY2LDcgKzc5NCw3
IEBAIEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0FycmF5c0F0dHJpYnMoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgZmlyc3QsIEdMc2l6CiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0F0dHJp
YnMoY29udGV4dCwgbWF4VmVydGV4KTsKIH0KIAotQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVE
cmF3SW5zdGFuY2VkQXR0cmlicyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBwcmltY291bnQpCitB
TkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdJbnN0YW5jZWRBdHRyaWJzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IHByaW1jb3VudCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmlzQnVm
ZmVyQWNjZXNzVmFsaWRhdGlvbkVuYWJsZWQoKSkKICAgICB7CkBAIC03ODIsNyArODEwLDcgQEAg
QU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3SW5zdGFuY2VkQXR0cmlicyhDb250ZXh0ICpj
b250ZXh0LCBHTGludCBwcmltY291bnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQU5HTEVfSU5M
SU5FIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzQ29tbW9uKENvbnRleHQgKmNvbnRleHQsCitBTkdM
RV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNDb21tb24oY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKQEAgLTgyNSw3ICs4NTMsNyBAQCBBTkdMRV9JTkxJTkUgYm9vbCBWYWxp
ZGF0ZURyYXdBcnJheXNDb21tb24oQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRh
dGVEcmF3QXJyYXlzQXR0cmlicyhjb250ZXh0LCBmaXJzdCwgY291bnQpOwogfQogCi1BTkdMRV9J
TkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK0FO
R0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEcmF3RWxlbWVudHNUeXBlIHR5cGUpCiB7CkBAIC04NTUsNyArODgzLDcgQEAgQU5HTEVfSU5M
SU5FIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRz
Q29tbW9uKENvbnRleHQgKmNvbnRleHQsCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdF
bGVtZW50c0NvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRVMxLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRVMxLmNwcAppbmRleCA1OTRmYTMwODNiZWFiZDJlMTcwZTExMjViMDhiZmRiMzAz
YzM1MTdiLi5mYzFkNmNjZDBkODMyMWUxNDA5NGNhYzhhMGFkYzc4N2U4ZjgyNTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25F
UzEuY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBnbAogewogdXNpbmcgbmFtZXNwYWNl
IGVycjsKIAotYm9vbCBWYWxpZGF0ZUFscGhhRnVuY0NvbW1vbihDb250ZXh0ICpjb250ZXh0LCBB
bHBoYVRlc3RGdW5jIGZ1bmMpCitib29sIFZhbGlkYXRlQWxwaGFGdW5jQ29tbW9uKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEFscGhhVGVzdEZ1bmMgZnVuYykKIHsKICAgICBzd2l0Y2ggKGZ1bmMp
CiAgICAgewpAQCAtNDksNyArNDksNyBAQCBib29sIFZhbGlkYXRlQWxwaGFGdW5jQ29tbW9uKENv
bnRleHQgKmNvbnRleHQsIEFscGhhVGVzdEZ1bmMgZnVuYykKICAgICB9CiB9CiAKLWJvb2wgVmFs
aWRhdGVDbGllbnRTdGF0ZUNvbW1vbihDb250ZXh0ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJh
eVR5cGUgYXJyYXlUeXBlKQorYm9vbCBWYWxpZGF0ZUNsaWVudFN0YXRlQ29tbW9uKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVR5cGUpCiB7CiAgICAg
QU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgc3dpdGNoIChhcnJheVR5cGUp
CkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgVmFsaWRhdGVDbGllbnRTdGF0ZUNvbW1vbihDb250ZXh0
ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlUeXBlCiAgICAgfQogfQogCi1i
b29sIFZhbGlkYXRlQnVpbHRpblZlcnRleEF0dHJpYnV0ZUNvbW1vbihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUJ1aWx0aW5WZXJ0ZXhBdHRyaWJ1dGVDb21tb24oY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENs
aWVudFZlcnRleEFycmF5VHlwZSBhcnJheVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlLApAQCAtMTU0LDcgKzE1NCw3IEBA
IGJvb2wgVmFsaWRhdGVCdWlsdGluVmVydGV4QXR0cmlidXRlQ29tbW9uKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaWdodENhcHMoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0KQorYm9vbCBWYWxpZGF0ZUxpZ2h0Q2Fwcyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gbGlnaHQpCiB7CiAgICAgaWYgKGxpZ2h0IDwgR0xfTElH
SFQwIHx8IGxpZ2h0ID49IEdMX0xJR0hUMCArIGNvbnRleHQtPmdldENhcHMoKS5tYXhMaWdodHMp
CiAgICAgewpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgVmFsaWRhdGVMaWdodENhcHMoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlTGlnaHRDb21tb24oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVMaWdodENv
bW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBsaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCkBAIC0y
MTksNyArMjE5LDcgQEAgYm9vbCBWYWxpZGF0ZUxpZ2h0Q29tbW9uKENvbnRleHQgKmNvbnRleHQs
CiAgICAgfQogfQogCi1ib29sIFZhbGlkYXRlTGlnaHRTaW5nbGVDb21wb25lbnQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVMaWdodFNpbmdsZUNvbXBvbmVudChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKQpAQCAt
MjM4LDcgKzIzOCw3IEBAIGJvb2wgVmFsaWRhdGVMaWdodFNpbmdsZUNvbXBvbmVudChDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWF0ZXJpYWxD
b21tb24oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXRlcmlhbENvbW1vbihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
YWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKQEAg
LTI0Niw2ICsyNDYsNyBAQCBib29sIFZhbGlkYXRlTWF0ZXJpYWxDb21tb24oQ29udGV4dCAqY29u
dGV4dCwKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKICAgICAgICAgY2FzZSBNYXRlcmlhbFBh
cmFtZXRlcjo6QW1iaWVudDoKKyAgICAgICAgY2FzZSBNYXRlcmlhbFBhcmFtZXRlcjo6QW1iaWVu
dEFuZERpZmZ1c2U6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxQYXJhbWV0ZXI6OkRpZmZ1c2U6CiAg
ICAgICAgIGNhc2UgTWF0ZXJpYWxQYXJhbWV0ZXI6OlNwZWN1bGFyOgogICAgICAgICBjYXNlIE1h
dGVyaWFsUGFyYW1ldGVyOjpFbWlzc2lvbjoKQEAgLTI2Myw3ICsyNjQsNyBAQCBib29sIFZhbGlk
YXRlTWF0ZXJpYWxDb21tb24oQ29udGV4dCAqY29udGV4dCwKICAgICB9CiB9CiAKLWJvb2wgVmFs
aWRhdGVNYXRlcmlhbFNldHRpbmcoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXRl
cmlhbFNldHRpbmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGVy
aWFsUGFyYW1ldGVyIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbXMpCkBAIC0yNzksNyArMjgwLDcgQEAgYm9vbCBWYWxpZGF0ZU1hdGVyaWFs
U2V0dGluZyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZU1hdGVyaWFsQ29t
bW9uKGNvbnRleHQsIGZhY2UsIHBuYW1lLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlTWF0
ZXJpYWxRdWVyeShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgTWF0ZXJpYWxQYXJhbWV0
ZXIgcG5hbWUpCitib29sIFZhbGlkYXRlTWF0ZXJpYWxRdWVyeShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gZmFjZSwgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWUpCiB7CiAgICAgQU5HTEVf
VkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAKQEAgLTI5NCw3ICsyOTUsNyBAQCBib29sIFZh
bGlkYXRlTWF0ZXJpYWxRdWVyeShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgTWF0ZXJp
YWxQYXJhbWV0ZXIgcG5hbQogICAgIHJldHVybiBWYWxpZGF0ZU1hdGVyaWFsQ29tbW9uKGNvbnRl
eHQsIGZhY2UsIHBuYW1lLCBkdW1teVBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXRlcmlh
bFNpbmdsZUNvbXBvbmVudChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hdGVyaWFs
U2luZ2xlQ29tcG9uZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJhbSkKQEAgLTMxMyw3ICszMTQsNyBAQCBi
b29sIFZhbGlkYXRlTWF0ZXJpYWxTaW5nbGVDb21wb25lbnQoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxDb21tb24oQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lKQorYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxDb21tb24o
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lKQogewogICAgIEFOR0xFX1ZBTElE
QVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHN3aXRjaCAocG5hbWUpCkBAIC0zMjcsNyArMzI4
LDcgQEAgYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxDb21tb24oQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHBuYW1lKQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxTaW5nbGVDb21w
b25lbnQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lKQorYm9vbCBWYWxpZGF0ZUxpZ2h0
TW9kZWxTaW5nbGVDb21wb25lbnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
KQogewogICAgIGlmICghVmFsaWRhdGVMaWdodE1vZGVsQ29tbW9uKGNvbnRleHQsIHBuYW1lKSkK
ICAgICB7CkBAIC0zNDQsNyArMzQ1LDcgQEAgYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxTaW5nbGVD
b21wb25lbnQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lKQogICAgIH0KIH0KIAotYm9v
bCBWYWxpZGF0ZUNsaXBQbGFuZUNvbW1vbihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUp
Citib29sIFZhbGlkYXRlQ2xpcFBsYW5lQ29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbGFuZSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKIApA
QCAtMzU3LDcgKzM1OCw3IEBAIGJvb2wgVmFsaWRhdGVDbGlwUGxhbmVDb21tb24oQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBsYW5lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRm9nQ29tbW9uKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUZvZ0NvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBBTkdMRV9WQUxJ
REFURV9JU19HTEVTMShjb250ZXh0KTsKIApAQCAtMzk2LDcgKzM5Nyw3IEBAIGJvb2wgVmFsaWRh
dGVGb2dDb21tb24oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhFbnZDb21t
b24oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhFbnZDb21tb24oY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRhcmdl
dCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIg
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykK
QEAgLTU0MCw3ICs1NDEsOSBAQCBib29sIFZhbGlkYXRlVGV4RW52Q29tbW9uKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhFbnZDb21t
b24oQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZUVudlRhcmdldCB0YXJnZXQsIFRleHR1cmVFbnZQ
YXJhbWV0ZXIgcG5hbWUpCitib29sIFZhbGlkYXRlR2V0VGV4RW52Q29tbW9uKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1l
dGVyIHBuYW1lKQogewogICAgIEdMZmxvYXQgZHVtbXlbNF0gPSB7fTsKICAgICBzd2l0Y2ggKHBu
YW1lKQpAQCAtNTgwLDcgKzU4Myw5IEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhFbnZDb21tb24oQ29u
dGV4dCAqY29udGV4dCwgVGV4dHVyZUVudlRhcmdldCB0YXJnZXQsIFRleHR1cmVFCiAgICAgcmV0
dXJuIFZhbGlkYXRlVGV4RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGR1bW15KTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyQ29tbW9uKENvbnRleHQgKmNvbnRleHQs
IFBvaW50UGFyYW1ldGVyIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlk
YXRlUG9pbnRQYXJhbWV0ZXJDb21tb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludFBhcmFtZXRlciBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAg
QU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAKQEAgLTYwNyw3ICs2MTIsNyBAQCBi
b29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJDb21tb24oQ29udGV4dCAqY29udGV4dCwgUG9pbnRQ
YXJhbWV0ZXIgcG5hbWUsIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVQb2ludFNpemVDb21tb24oQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzaXplKQorYm9vbCBW
YWxpZGF0ZVBvaW50U2l6ZUNvbW1vbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHNp
emUpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAKQEAgLTYyMCw3
ICs2MjUsNyBAQCBib29sIFZhbGlkYXRlUG9pbnRTaXplQ29tbW9uKENvbnRleHQgKmNvbnRleHQs
IEdMZmxvYXQgc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdU
ZXhDb21tb24oQ29udGV4dCAqY29udGV4dCwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKK2Jv
b2wgVmFsaWRhdGVEcmF3VGV4Q29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4
dCk7CiAKQEAgLTYzOCw2NSArNjQzLDgxIEBAIGJvb2wgVmFsaWRhdGVEcmF3VGV4Q29tbW9uKENv
bnRleHQgKmNvbnRleHQsIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiBuYW1lc3BhY2UgZ2wK
IHsKIAotYm9vbCBWYWxpZGF0ZUFscGhhRnVuYyhDb250ZXh0ICpjb250ZXh0LCBBbHBoYVRlc3RG
dW5jIGZ1bmMsIEdMZmxvYXQgcmVmKQorYm9vbCBWYWxpZGF0ZUFscGhhRnVuYyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBBbHBoYVRlc3RGdW5jIGZ1bmMsIEdMZmxvYXQgcmVmKQogewogICAgIEFO
R0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVybiBWYWxpZGF0ZUFscGhh
RnVuY0NvbW1vbihjb250ZXh0LCBmdW5jKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUFscGhhRnVuY3go
Q29udGV4dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBmdW5jLCBHTGZpeGVkIHJlZikKK2Jvb2wg
VmFsaWRhdGVBbHBoYUZ1bmN4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEFscGhhVGVzdEZ1bmMg
ZnVuYywgR0xmaXhlZCByZWYpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4
dCk7CiAgICAgcmV0dXJuIFZhbGlkYXRlQWxwaGFGdW5jQ29tbW9uKGNvbnRleHQsIGZ1bmMpOwog
fQogCi1ib29sIFZhbGlkYXRlQ2xlYXJDb2xvcngoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBy
ZWQsIEdMZml4ZWQgZ3JlZW4sIEdMZml4ZWQgYmx1ZSwgR0xmaXhlZCBhbHBoYSkKK2Jvb2wgVmFs
aWRhdGVDbGVhckNvbG9yeChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZml4ZWQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQg
Z3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBibHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZml4ZWQgYWxwaGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlQ2xlYXJEZXB0aHgoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBk
ZXB0aCkKK2Jvb2wgVmFsaWRhdGVDbGVhckRlcHRoeChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGZpeGVkIGRlcHRoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBBTkdMRV9WQUxJREFU
RV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNsaWVudEFjdGl2ZVRleHR1cmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUpCiti
b29sIFZhbGlkYXRlQ2xpZW50QWN0aXZlVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGV4dHVyZSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsK
ICAgICByZXR1cm4gVmFsaWRhdGVNdWx0aXRleHR1cmVVbml0KGNvbnRleHQsIHRleHR1cmUpOwog
fQogCi1ib29sIFZhbGlkYXRlQ2xpcFBsYW5lZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxh
bmUsIGNvbnN0IEdMZmxvYXQgKmVxbikKK2Jvb2wgVmFsaWRhdGVDbGlwUGxhbmVmKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmbG9hdCAqZXFuKQogewogICAg
IHJldHVybiBWYWxpZGF0ZUNsaXBQbGFuZUNvbW1vbihjb250ZXh0LCBwbGFuZSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVDbGlwUGxhbmV4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgY29u
c3QgR0xmaXhlZCAqZXF1YXRpb24pCitib29sIFZhbGlkYXRlQ2xpcFBsYW5leChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZml4ZWQgKmVxdWF0aW9uKQogewog
ICAgIHJldHVybiBWYWxpZGF0ZUNsaXBQbGFuZUNvbW1vbihjb250ZXh0LCBwbGFuZSk7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDb2xvcjRmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZs
b2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpCitib29sIFZhbGlkYXRlQ29s
b3I0Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCByZWQsCisgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBhbHBo
YSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yNHViKENvbnRleHQgKmNvbnRleHQsIEdMdWJ5
dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUsIEdMdWJ5dGUgYWxwaGEpCitib29s
IFZhbGlkYXRlQ29sb3I0dWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICBHTHVieXRlIHJlZCwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGdyZWVu
LAorICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgYmx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBHTHVieXRlIGFscGhhKQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRl
eHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0eChDb250ZXh0
ICpjb250ZXh0LCBHTGZpeGVkIHJlZCwgR0xmaXhlZCBncmVlbiwgR0xmaXhlZCBibHVlLCBHTGZp
eGVkIGFscGhhKQorYm9vbCBWYWxpZGF0ZUNvbG9yNHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcmVkLAorICAgICAgICAgICAgICAgICAgICAg
R0xmaXhlZCBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgYmx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgIEdMZml4ZWQgYWxwaGEpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNf
R0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xv
clBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb2xvclBvaW50ZXIoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKQEAgLTcwNiw1OCArNzI3LDc0
IEBAIGJvb2wgVmFsaWRhdGVDb2xvclBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwgcG9pbnRlcik7
CiB9CiAKLWJvb2wgVmFsaWRhdGVDdWxsRmFjZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9k
ZSkKK2Jvb2wgVmFsaWRhdGVDdWxsRmFjZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
bW9kZSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEZXB0aFJhbmdleChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIG4sIEdMZml4
ZWQgZikKK2Jvb2wgVmFsaWRhdGVEZXB0aFJhbmdleChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGZpeGVkIG4sIEdMZml4ZWQgZikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQU5HTEVf
VkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS53ZWJnbENvbXBhdGliaWxpdHkgJiYgbiA+IGYpCisgICAgeworICAgICAgICBjb250ZXh0
LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkRGVwdGhSYW5n
ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZURpc2FibGVDbGllbnRTdGF0ZShDb250ZXh0ICpjb250ZXh0LCBDbGll
bnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlUeXBlKQorYm9vbCBWYWxpZGF0ZURpc2FibGVDbGllbnRT
dGF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlU
eXBlKQogewogICAgIHJldHVybiBWYWxpZGF0ZUNsaWVudFN0YXRlQ29tbW9uKGNvbnRleHQsIGFy
cmF5VHlwZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmFibGVDbGllbnRTdGF0ZShDb250ZXh0ICpj
b250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlUeXBlKQorYm9vbCBWYWxpZGF0ZUVu
YWJsZUNsaWVudFN0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIENsaWVudFZlcnRleEFycmF5
VHlwZSBhcnJheVR5cGUpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlQ2xpZW50U3RhdGVDb21tb24o
Y29udGV4dCwgYXJyYXlUeXBlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZvZ2YoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZUZvZ2YoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAg
IHJldHVybiBWYWxpZGF0ZUZvZ0NvbW1vbihjb250ZXh0LCBwbmFtZSwgJnBhcmFtKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUZvZ2Z2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUZvZ2Z2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiBW
YWxpZGF0ZUZvZ0NvbW1vbihjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUZvZ3goQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQor
Ym9vbCBWYWxpZGF0ZUZvZ3goY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
TGZpeGVkIHBhcmFtKQogewotICAgIEdMZmxvYXQgYXNGbG9hdCA9IENvbnZlcnRGaXhlZFRvRmxv
YXQocGFyYW0pOworICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOworICAgIEdM
ZmxvYXQgYXNGbG9hdCA9CisgICAgICAgIHBuYW1lID09IEdMX0ZPR19NT0RFID8gc3RhdGljX2Nh
c3Q8R0xmbG9hdD4ocGFyYW0pIDogQ29udmVydEZpeGVkVG9GbG9hdChwYXJhbSk7CiAgICAgcmV0
dXJuIFZhbGlkYXRlRm9nQ29tbW9uKGNvbnRleHQsIHBuYW1lLCAmYXNGbG9hdCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVGb2d4dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
Zml4ZWQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVGb2d4dihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKKyAgICBBTkdMRV9WQUxJ
REFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICB1bnNpZ25lZCBpbnQgcGFyYW1Db3VudCA9IEdl
dEZvZ1BhcmFtZXRlckNvdW50KHBuYW1lKTsKICAgICBHTGZsb2F0IHBhcmFtc2ZbNF0gICAgICA9
IHt9OwogCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyBpKysp
CisgICAgaWYgKHBuYW1lID09IEdMX0ZPR19NT0RFKQogICAgIHsKLSAgICAgICAgcGFyYW1zZltp
XSA9IENvbnZlcnRGaXhlZFRvRmxvYXQocGFyYW1zW2ldKTsKKyAgICAgICAgcGFyYW1zZlswXSA9
IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhcmFtc1swXSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3VudDsgaSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBwYXJhbXNmW2ldID0gQ29udmVydEZpeGVkVG9GbG9hdChw
YXJhbXNbaV0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIFZhbGlkYXRlRm9nQ29t
bW9uKGNvbnRleHQsIHBuYW1lLCBwYXJhbXNmKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZydXN0dW1m
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJ1c3R1bWYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCByLAogICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYiwKQEAg
LTc3Myw3ICs4MTAsNyBAQCBib29sIFZhbGlkYXRlRnJ1c3R1bWYoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZydXN0dW14KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRnJ1c3R1bXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGwsCiAgICAgICAgICAgICAgICAgICAgICAgR0xm
aXhlZCByLAogICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgYiwKQEAgLTc4OSw3NSArODI2
LDk1IEBAIGJvb2wgVmFsaWRhdGVGcnVzdHVteChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorYm9v
bCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVO
VEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRDbGlwUGxhbmVm
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgR0xmbG9hdCAqZXF1YXRpb24pCitib29s
IFZhbGlkYXRlR2V0Q2xpcFBsYW5lZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxh
bmUsIGNvbnN0IEdMZmxvYXQgKmVxdWF0aW9uKQogewogICAgIHJldHVybiBWYWxpZGF0ZUNsaXBQ
bGFuZUNvbW1vbihjb250ZXh0LCBwbGFuZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRDbGlwUGxh
bmV4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgR0xmaXhlZCAqZXF1YXRpb24pCiti
b29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5leChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cGxhbmUsIGNvbnN0IEdMZml4ZWQgKmVxdWF0aW9uKQogewogICAgIHJldHVybiBWYWxpZGF0ZUNs
aXBQbGFuZUNvbW1vbihjb250ZXh0LCBwbGFuZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGaXhl
ZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCitib29s
IFZhbGlkYXRlR2V0Rml4ZWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKKyAgICBHTGVu
dW0gbmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICByZXR1
cm4gVmFsaWRhdGVTdGF0ZVF1ZXJ5KGNvbnRleHQsIHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBh
cmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRMaWdodGZ2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBsaWdodCwgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKK2Jvb2wg
VmFsaWRhdGVHZXRMaWdodGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbGlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBMaWdodFBh
cmFtZXRlciBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBHTGZsb2F0IGR1bW15UGFyYW1zWzRdID0gezAuMGYsIDAuMGYsIDAuMGYs
IDAuMGZ9OwogICAgIHJldHVybiBWYWxpZGF0ZUxpZ2h0Q29tbW9uKGNvbnRleHQsIGxpZ2h0LCBw
bmFtZSwgZHVtbXlQYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TGlnaHR4dihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lLCBHTGZpeGVkICpw
YXJhbXMpCitib29sIFZhbGlkYXRlR2V0TGlnaHR4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgR0xmbG9hdCBkdW1teVBhcmFtc1s0XSA9IHswLjBm
LCAwLjBmLCAwLjBmLCAwLjBmfTsKICAgICByZXR1cm4gVmFsaWRhdGVMaWdodENvbW1vbihjb250
ZXh0LCBsaWdodCwgcG5hbWUsIGR1bW15UGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE1h
dGVyaWFsZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0TWF0ZXJpYWxmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVNYXRlcmlhbFF1ZXJ5KGNvbnRleHQsIGZhY2UsIHBuYW1lKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldE1hdGVyaWFseHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZh
Y2UsIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCitib29sIFZhbGlk
YXRlR2V0TWF0ZXJpYWx4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRl
cmlhbFBhcmFtZXRlciBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Zml4ZWQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVNYXRlcmlhbFF1ZXJ5KGNvbnRl
eHQsIGZhY2UsIHBuYW1lKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleEVudmZ2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4RW52ZnYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VGV4
RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
VGV4RW52aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhFbnZpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZU
YXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0
ZXIgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBW
YWxpZGF0ZUdldFRleEVudkNvbW1vbihjb250ZXh0LCB0YXJnZXQsIHBuYW1lKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldFRleEVudnh2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
VGV4RW52eHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlRW52UGFyYW1ldGVyIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQg
KnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMp
CiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VGV4RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwg
cG5hbWUpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyeHYoQ29udGV4dCAqY29u
dGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykK
K2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJ4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewogICAgIEFOR0xFX1ZBTElE
QVRFX0lTX0dMRVMxKGNvbnRleHQpOwogCkBAIC04NjksNDIgKzkyNiw0OCBAQCBib29sIFZhbGlk
YXRlR2V0VGV4UGFyYW1ldGVyeHYoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0
LCBHTGVudW0gcG5hbQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTGlnaHRN
b2RlbGYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorYm9v
bCBWYWxpZGF0ZUxpZ2h0TW9kZWxmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVMaWdodE1vZGVsU2luZ2xl
Q29tcG9uZW50KGNvbnRleHQsIHBuYW1lKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxm
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykK
K2Jvb2wgVmFsaWRhdGVMaWdodE1vZGVsZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlTGln
aHRNb2RlbENvbW1vbihjb250ZXh0LCBwbmFtZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaWdodE1v
ZGVseChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitib29s
IFZhbGlkYXRlTGlnaHRNb2RlbHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
LCBHTGZpeGVkIHBhcmFtKQogewogICAgIHJldHVybiBWYWxpZGF0ZUxpZ2h0TW9kZWxTaW5nbGVD
b21wb25lbnQoY29udGV4dCwgcG5hbWUpOwogfQogCi1ib29sIFZhbGlkYXRlTGlnaHRNb2RlbHh2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW0pCiti
b29sIFZhbGlkYXRlTGlnaHRNb2RlbHh2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlTGlnaHRN
b2RlbENvbW1vbihjb250ZXh0LCBwbmFtZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaWdodGYoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwgR0xmbG9h
dCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVMaWdodGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAgICBy
ZXR1cm4gVmFsaWRhdGVMaWdodFNpbmdsZUNvbXBvbmVudChjb250ZXh0LCBsaWdodCwgcG5hbWUs
IHBhcmFtKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0ZnYoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQor
Ym9vbCBWYWxpZGF0ZUxpZ2h0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBsaWdodCwKKyAgICAgICAgICAgICAgICAgICAgIExpZ2h0UGFyYW1l
dGVyIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQog
ewogICAgIHJldHVybiBWYWxpZGF0ZUxpZ2h0Q29tbW9uKGNvbnRleHQsIGxpZ2h0LCBwbmFtZSwg
cGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0eChDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQorYm9vbCBWYWxp
ZGF0ZUxpZ2h0eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIExpZ2h0UGFy
YW1ldGVyIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogewogICAgIHJldHVybiBWYWxpZGF0ZUxpZ2h0
U2luZ2xlQ29tcG9uZW50KGNvbnRleHQsIGxpZ2h0LCBwbmFtZSwgQ29udmVydEZpeGVkVG9GbG9h
dChwYXJhbSkpOwogfQogCi1ib29sIFZhbGlkYXRlTGlnaHR4dihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gbGlnaHQsIExpZ2h0UGFyYW1ldGVyIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMp
Citib29sIFZhbGlkYXRlTGlnaHR4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgTGlnaHRQYXJh
bWV0ZXIgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMp
CiB7CiAgICAgR0xmbG9hdCBwYXJhbXNmWzRdOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgR2V0TGlnaHRQYXJhbWV0ZXJDb3VudChwbmFtZSk7IGkrKykKQEAgLTkxNSwzMSArOTc4
LDM3IEBAIGJvb2wgVmFsaWRhdGVMaWdodHh2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdo
dCwgTGlnaHRQYXJhbWV0ZXIgcG5hbWUsIGNvbnN0CiAgICAgcmV0dXJuIFZhbGlkYXRlTGlnaHRD
b21tb24oY29udGV4dCwgbGlnaHQsIHBuYW1lLCBwYXJhbXNmKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUxpbmVXaWR0aHgoQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCB3aWR0aCkKK2Jvb2wgVmFsaWRh
dGVMaW5lV2lkdGh4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgd2lkdGgpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQp
OworICAgIGlmICh3aWR0aCA8PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlv
bkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkV2lkdGgpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVMb2Fk
SWRlbnRpdHkoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVMb2FkSWRlbnRpdHkoY29u
c3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250
ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxvYWRNYXRyaXhmKENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKm0pCitib29sIFZhbGlkYXRlTG9hZE1hdHJp
eGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSkKIHsKICAgICBBTkdM
RV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUxvYWRNYXRyaXh4KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKm0p
Citib29sIFZhbGlkYXRlTG9hZE1hdHJpeHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xmaXhlZCAqbSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxvZ2ljT3AoQ29udGV4dCAqY29udGV4
dCwgTG9naWNhbE9wZXJhdGlvbiBvcGNvZGUpCitib29sIFZhbGlkYXRlTG9naWNPcChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBMb2dpY2FsT3BlcmF0aW9uIG9wY29kZSkKIHsKICAgICBBTkdMRV9W
QUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICBzd2l0Y2ggKG9wY29kZSkKQEAgLTk2Nywx
MiArMTAzNiwxMiBAQCBib29sIFZhbGlkYXRlTG9naWNPcChDb250ZXh0ICpjb250ZXh0LCBMb2dp
Y2FsT3BlcmF0aW9uIG9wY29kZSkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXRlcmlhbGYo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lLCBH
TGZsb2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZU1hdGVyaWFsZihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gZmFjZSwgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWUsIEdMZmxvYXQgcGFyYW0p
CiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlTWF0ZXJpYWxTaW5nbGVDb21wb25lbnQoY29udGV4dCwg
ZmFjZSwgcG5hbWUsIHBhcmFtKTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hdGVyaWFsZnYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXRlcmlhbGZ2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQpAQCAtOTgwLDEyICsxMDQ5LDEyIEBAIGJvb2wgVmFs
aWRhdGVNYXRlcmlhbGZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlTWF0
ZXJpYWxTZXR0aW5nKGNvbnRleHQsIGZhY2UsIHBuYW1lLCBwYXJhbXMpOwogfQogCi1ib29sIFZh
bGlkYXRlTWF0ZXJpYWx4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBNYXRlcmlhbFBh
cmFtZXRlciBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVNYXRlcmlhbHgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1l
LCBHTGZpeGVkIHBhcmFtKQogewogICAgIHJldHVybiBWYWxpZGF0ZU1hdGVyaWFsU2luZ2xlQ29t
cG9uZW50KGNvbnRleHQsIGZhY2UsIHBuYW1lLCBDb252ZXJ0Rml4ZWRUb0Zsb2F0KHBhcmFtKSk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXRlcmlhbHh2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlTWF0ZXJpYWx4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBNYXRlcmlhbFBh
cmFtZXRlciBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBh
cmFtcykKQEAgLTEwMDAsNyArMTA2OSw3IEBAIGJvb2wgVmFsaWRhdGVNYXRlcmlhbHh2KENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlTWF0ZXJpYWxTZXR0aW5nKGNvbnRleHQs
IGZhY2UsIHBuYW1lLCBwYXJhbXNmKTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hdHJpeE1vZGUoQ29u
dGV4dCAqY29udGV4dCwgTWF0cml4VHlwZSBtb2RlKQorYm9vbCBWYWxpZGF0ZU1hdHJpeE1vZGUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgTWF0cml4VHlwZSBtb2RlKQogewogICAgIEFOR0xFX1ZB
TElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHN3aXRjaCAobW9kZSkKQEAgLTEwMTUsMTkg
KzEwODQsMTkgQEAgYm9vbCBWYWxpZGF0ZU1hdHJpeE1vZGUoQ29udGV4dCAqY29udGV4dCwgTWF0
cml4VHlwZSBtb2RlKQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXhmKENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKm0pCitib29sIFZhbGlkYXRlTXVsdE1hdHJpeGYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSkKIHsKICAgICBBTkdMRV9W
QUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZU11bHRNYXRyaXh4KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKm0pCiti
b29sIFZhbGlkYXRlTXVsdE1hdHJpeHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xm
aXhlZCAqbSkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0Zihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdCwKQEAgLTEwMzgsNyArMTEwNyw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkNGYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVNdWx0aXRl
eHR1cmVVbml0KGNvbnRleHQsIHRhcmdldCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkNHgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNHgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHQsCkBAIC0xMDQ5LDE5ICsxMTE4LDE5IEBA
IGJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNHgoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gVmFsaWRhdGVNdWx0aXRleHR1cmVVbml0KGNvbnRleHQsIHRhcmdldCk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVOb3JtYWwzZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IG54LCBHTGZsb2F0IG55
LCBHTGZsb2F0IG56KQorYm9vbCBWYWxpZGF0ZU5vcm1hbDNmKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnopCiB7CiAgICAgQU5HTEVfVkFM
SURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVOb3JtYWwzeChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIG54LCBHTGZpeGVkIG55LCBH
TGZpeGVkIG56KQorYm9vbCBWYWxpZGF0ZU5vcm1hbDN4KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZml4ZWQgbngsIEdMZml4ZWQgbnksIEdMZml4ZWQgbnopCiB7CiAgICAgQU5HTEVfVkFMSURB
VEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVOb3JtYWxQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTm9ybWFsUG9p
bnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVydGV4QXR0cmliVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVy
KQpAQCAtMTA3MCw3ICsxMTM5LDcgQEAgYm9vbCBWYWxpZGF0ZU5vcm1hbFBvaW50ZXIoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmlkZSwgcG9pbnRlcik7CiB9CiAKLWJvb2wgVmFsaWRhdGVPcnRob2YoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVPcnRob2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCBsLAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHIsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYiwKQEAgLTEwNzksMTQgKzExNDgsMTcg
QEAgYm9vbCBWYWxpZGF0ZU9ydGhvZihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IGYpCiB7CiAgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7
Ci0gICAgaWYgKGwgPT0gciB8fCBiID09IHQgfHwgbiA9PSBmIHx8IG4gPD0gMC4wZiB8fCBmIDw9
IDAuMGYpCisgICAgLy8gW09wZW5HTCBFUyAxLjEuMTJdIHNlY3Rpb24gMi4xMC4yIHBhZ2UgMzE6
CisgICAgLy8gSWYgbCBpcyBlcXVhbCB0byByLCBiIGlzIGVxdWFsIHRvIHQsIG9yIG4gaXMgZXF1
YWwgdG8gZiwgdGhlCisgICAgLy8gZXJyb3IgSU5WQUxJRCBWQUxVRSByZXN1bHRzLgorICAgIGlm
IChsID09IHIgfHwgYiA9PSB0IHx8IG4gPT0gZikKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZh
bGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFByb2plY3Rpb25NYXRyaXgp
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU9ydGhveChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU9ydGhveChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGwsCiAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgciwKICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBiLApAQCAtMTA5NSwxNCArMTE2
NywxNCBAQCBib29sIFZhbGlkYXRlT3J0aG94KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgIEdMZml4ZWQgZikKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250
ZXh0KTsKLSAgICBpZiAobCA9PSByIHx8IGIgPT0gdCB8fCBuID09IGYgfHwgbiA8PSAwIHx8IGYg
PD0gMCkKKyAgICBpZiAobCA9PSByIHx8IGIgPT0gdCB8fCBuID09IGYpCiAgICAgewogICAgICAg
ICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWRQcm9q
ZWN0aW9uTWF0cml4KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVQb2ludFBhcmFtZXRlcmYoQ29udGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUs
IEdMZmxvYXQgcGFyYW0pCitib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAg
IHVuc2lnbmVkIGludCBwYXJhbUNvdW50ID0gR2V0UG9pbnRQYXJhbWV0ZXJDb3VudChwbmFtZSk7
CiAgICAgaWYgKHBhcmFtQ291bnQgIT0gMSkKQEAgLTExMTQsMTIgKzExODYsMTIgQEAgYm9vbCBW
YWxpZGF0ZVBvaW50UGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0LCBQb2ludFBhcmFtZXRlciBw
bmFtZSwgR0xmbG9hdCBwYXIKICAgICByZXR1cm4gVmFsaWRhdGVQb2ludFBhcmFtZXRlckNvbW1v
bihjb250ZXh0LCBwbmFtZSwgJnBhcmFtKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1l
dGVyZnYoQ29udGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUsIGNvbnN0IEdMZmxv
YXQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJDb21tb24oY29udGV4dCwgcG5hbWUs
IHBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcngoQ29udGV4dCAqY29u
dGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitib29sIFZhbGlkYXRl
UG9pbnRQYXJhbWV0ZXJ4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBu
YW1lLCBHTGZpeGVkIHBhcmFtKQogewogICAgIHVuc2lnbmVkIGludCBwYXJhbUNvdW50ID0gR2V0
UG9pbnRQYXJhbWV0ZXJDb3VudChwbmFtZSk7CiAgICAgaWYgKHBhcmFtQ291bnQgIT0gMSkKQEAg
LTExMzIsNyArMTIwNCw3IEBAIGJvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcngoQ29udGV4dCAq
Y29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUsIEdMZml4ZWQgcGFyCiAgICAgcmV0dXJuIFZh
bGlkYXRlUG9pbnRQYXJhbWV0ZXJDb21tb24oY29udGV4dCwgcG5hbWUsICZwYXJhbWYpOwogfQog
Ci1ib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJ4dihDb250ZXh0ICpjb250ZXh0LCBQb2ludFBh
cmFtZXRlciBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZVBvaW50
UGFyYW1ldGVyeHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWUs
IGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBHTGZsb2F0IHBhcmFtc2ZbNF0gPSB7fTsK
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEdldFBvaW50UGFyYW1ldGVyQ291bnQo
cG5hbWUpOyBpKyspCkBAIC0xMTQyLDIzICsxMjE0LDIzIEBAIGJvb2wgVmFsaWRhdGVQb2ludFBh
cmFtZXRlcnh2KENvbnRleHQgKmNvbnRleHQsIFBvaW50UGFyYW1ldGVyIHBuYW1lLCBjb25zdCBH
TGZpCiAgICAgcmV0dXJuIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJDb21tb24oY29udGV4dCwgcG5h
bWUsIHBhcmFtc2YpOwogfQogCi1ib29sIFZhbGlkYXRlUG9pbnRTaXplKENvbnRleHQgKmNvbnRl
eHQsIEdMZmxvYXQgc2l6ZSkKK2Jvb2wgVmFsaWRhdGVQb2ludFNpemUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xmbG9hdCBzaXplKQogewogICAgIHJldHVybiBWYWxpZGF0ZVBvaW50U2l6ZUNv
bW1vbihjb250ZXh0LCBzaXplKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvaW50U2l6ZXgoQ29udGV4
dCAqY29udGV4dCwgR0xmaXhlZCBzaXplKQorYm9vbCBWYWxpZGF0ZVBvaW50U2l6ZXgoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBzaXplKQogewogICAgIHJldHVybiBWYWxpZGF0ZVBv
aW50U2l6ZUNvbW1vbihjb250ZXh0LCBDb252ZXJ0Rml4ZWRUb0Zsb2F0KHNpemUpKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXR4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgZmFj
dG9yLCBHTGZpeGVkIHVuaXRzKQorYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXR4KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZml4ZWQgZmFjdG9yLCBHTGZpeGVkIHVuaXRzKQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvcE1hdHJpeChDb250ZXh0ICpjb250
ZXh0KQorYm9vbCBWYWxpZGF0ZVBvcE1hdHJpeChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewog
ICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIGNvbnN0IGF1dG8gJnN0
YWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nbGVzMSgpLmN1cnJlbnRNYXRyaXhTdGFjaygpOwpA
QCAtMTE3MCw3ICsxMjQyLDcgQEAgYm9vbCBWYWxpZGF0ZVBvcE1hdHJpeChDb250ZXh0ICpjb250
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHVzaE1hdHJpeChDb250
ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVB1c2hNYXRyaXgoY29uc3QgQ29udGV4dCAqY29u
dGV4dCkKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICBjb25z
dCBhdXRvICZzdGFjayA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2xlczEoKS5jdXJyZW50TWF0cml4
U3RhY2soKTsKQEAgLTExODIsMzcgKzEyNTQsMzcgQEAgYm9vbCBWYWxpZGF0ZVB1c2hNYXRyaXgo
Q29udGV4dCAqY29udGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJv
dGF0ZWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeikKK2Jvb2wgVmFsaWRhdGVSb3RhdGVmKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZmxvYXQgYW5nbGUsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAg
ICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVSb3RhdGV4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgYW5nbGUs
IEdMZml4ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopCitib29sIFZhbGlkYXRlUm90YXRleChj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIGFuZ2xlLCBHTGZpeGVkIHgsIEdMZml4ZWQg
eSwgR0xmaXhlZCB6KQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2V4KENvbnRl
eHQgKmNvbnRleHQsIEdMY2xhbXB4IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQorYm9vbCBWYWxp
ZGF0ZVNhbXBsZUNvdmVyYWdleChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGNsYW1weCB2YWx1
ZSwgR0xib29sZWFuIGludmVydCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgQU5HTEVf
VkFMSURBVEVfSVNfR0xFUzEoY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVTY2FsZWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeikKK2Jvb2wgVmFsaWRhdGVTY2FsZWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xm
bG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19H
TEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNjYWxl
eChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQorYm9v
bCBWYWxpZGF0ZVNjYWxleChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIHgsIEdMZml4
ZWQgeSwgR0xmaXhlZCB6KQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2hhZGVNb2RlbChDb250ZXh0
ICpjb250ZXh0LCBTaGFkaW5nTW9kZWwgbW9kZSkKK2Jvb2wgVmFsaWRhdGVTaGFkZU1vZGVsKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRpbmdNb2RlbCBtb2RlKQogewogICAgIEFOR0xFX1ZB
TElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHN3aXRjaCAobW9kZSkKQEAgLTEyMjYsNyAr
MTI5OCw3IEBAIGJvb2wgVmFsaWRhdGVTaGFkZU1vZGVsKENvbnRleHQgKmNvbnRleHQsIFNoYWRp
bmdNb2RlbCBtb2RlKQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkUG9pbnRlcihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleENvb3JkUG9pbnRlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLApAQCAtMTIzNiw3ICsxMzA4
LDcgQEAgYm9vbCBWYWxpZGF0ZVRleENvb3JkUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyaWRl
LCBwb2ludGVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEVudmYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhFbnZmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHBhcmFtKQpAQCAtMTI0NCw3ICsxMzE2LDcgQEAgYm9vbCBWYWxpZGF0ZVRleEVudmYoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVUZXhFbnZDb21tb24oY29udGV4dCwgdGFy
Z2V0LCBwbmFtZSwgJnBhcmFtKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEVudmZ2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4RW52ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKQEAgLTEyNTIsNyArMTMyNCw3IEBAIGJvb2wg
VmFsaWRhdGVUZXhFbnZmdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVRl
eEVudkNvbW1vbihjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4RW52aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudmkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhcmFtKQpAQCAtMTI2MSw3ICsxMzMzLDcg
QEAgYm9vbCBWYWxpZGF0ZVRleEVudmkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFs
aWRhdGVUZXhFbnZDb21tb24oY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgJnBhcmFtZik7CiB9CiAK
LWJvb2wgVmFsaWRhdGVUZXhFbnZpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRl
eEVudml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUVudlRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBh
cmFtZXRlciBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KQpAQCAtMTI3NCw2MiArMTM0Niw3OSBAQCBib29sIFZhbGlkYXRlVGV4RW52aXYoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVUZXhFbnZDb21tb24oY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgcGFyYW1zZik7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhFbnZ4KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlVGV4RW52eChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
R0xmaXhlZCBwYXJhbSkKIHsKLSAgICBHTGZsb2F0IHBhcmFtZiA9IHN0YXRpY19jYXN0PEdMZmxv
YXQ+KHBhcmFtKTsKLSAgICByZXR1cm4gVmFsaWRhdGVUZXhFbnZDb21tb24oY29udGV4dCwgdGFy
Z2V0LCBwbmFtZSwgJnBhcmFtZik7CisgICAgQU5HTEVfVkFMSURBVEVfSVNfR0xFUzEoY29udGV4
dCk7CisgICAgR0xmbG9hdCBwYXJhbXNmWzRdID0ge307CisgICAgQ29udmVydFRleHR1cmVFbnZG
cm9tRml4ZWQocG5hbWUsICZwYXJhbSwgcGFyYW1zZik7CisgICAgcmV0dXJuIFZhbGlkYXRlVGV4
RW52Q29tbW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtc2YpOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4RW52eHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhFbnZ4dihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZU
YXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIg
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogewot
ICAgIEdMZmxvYXQgcGFyYW1zZls0XTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IEdldFRleHR1cmVFbnZQYXJhbWV0ZXJDb3VudChwbmFtZSk7IGkrKykKKyAgICBBTkdMRV9WQUxJ
REFURV9JU19HTEVTMShjb250ZXh0KTsKKyAgICBHTGZsb2F0IHBhcmFtc2ZbNF0gPSB7fTsKKyAg
ICBDb252ZXJ0VGV4dHVyZUVudkZyb21GaXhlZChwbmFtZSwgcGFyYW1zLCBwYXJhbXNmKTsKKyAg
ICByZXR1cm4gVmFsaWRhdGVUZXhFbnZDb21tb24oY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFy
YW1zZik7Cit9CisKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlRm9yR0xmaXhlZChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdmVjdG9yUGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKK3sKKyAgICAvLyBDb252ZXJ0IEdMZml4
ZWQgcGFyYW1ldGVyIGZvciBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCBpbmRlcGVuZGVu
dGx5CisgICAgLy8gc2luY2UgaXQgY29tcGFyZXMgYWdhaW5zdCAxIGFuZCBtYXhUZXh0dXJlQW5p
c290cm9weSBpbnN0ZWFkIG9mIGp1c3QgMAorICAgIC8vIChvdGhlciB2YWx1ZXMgYXJlIGZpbmUg
dG8gbGVhdmUgdW5jb252ZXJ0ZWQgc2luY2UgdGhleSBvbmx5IGNoZWNrIHBvc2l0aXZlIG9yIG5l
Z2F0aXZlIG9yCisgICAgLy8gYXJlIHVzZWQgYXMgZW51bXMpCisgICAgR0xmbG9hdCBwYXJhbVZh
bHVlOworICAgIGlmIChwbmFtZSA9PSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCkKICAg
ICB7Ci0gICAgICAgIHBhcmFtc2ZbaV0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbXNbaV0p
OworICAgICAgICBwYXJhbVZhbHVlID0gQ29udmVydEZpeGVkVG9GbG9hdChzdGF0aWNfY2FzdDxH
TGZpeGVkPihwYXJhbXNbMF0pKTsKICAgICB9Ci0gICAgcmV0dXJuIFZhbGlkYXRlVGV4RW52Q29t
bW9uKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtc2YpOworICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHBhcmFtVmFsdWUgPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbXNbMF0pOworICAg
IH0KKyAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwg
cG5hbWUsIGJ1ZlNpemUsIHZlY3RvclBhcmFtcywgJnBhcmFtVmFsdWUpOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVyeChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGZpeGVkIHBhcmFtKQogewogICAgIEFOR0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQp
OwotICAgIEdMZmxvYXQgcGFyYW1mID0gQ29udmVydEZpeGVkVG9GbG9hdChwYXJhbSk7Ci0gICAg
cmV0dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAt
MSwgZmFsc2UsICZwYXJhbWYpOworICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2VG
b3JHTGZpeGVkKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIC0xLCBmYWxzZSwgJnBhcmFtKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcnh2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVyeHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBBTkdMRV9WQUxJREFURV9JU19HTEVTMShjb250ZXh0
KTsKLSAgICBHTGZsb2F0IHBhcmFtc2ZbNF0gPSB7fTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IEdldFRleFBhcmFtZXRlckNvdW50KHBuYW1lKTsgaSsrKQotICAgIHsKLSAgICAg
ICAgcGFyYW1zZltpXSA9IENvbnZlcnRGaXhlZFRvRmxvYXQocGFyYW1zW2ldKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1l
LCAtMSwgdHJ1ZSwgcGFyYW1zZik7CisgICAgcmV0dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFz
ZUZvckdMZml4ZWQoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgLTEsIHRydWUsIHBhcmFtcyk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVUcmFuc2xhdGVmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZhbGlkYXRlVHJhbnNsYXRlZihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogewogICAgIEFO
R0xFX1ZBTElEQVRFX0lTX0dMRVMxKGNvbnRleHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVHJhbnNsYXRleChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIHgsIEdMZml4
ZWQgeSwgR0xmaXhlZCB6KQorYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZXgoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKIHsKICAgICBBTkdMRV9W
QUxJREFURV9JU19HTEVTMShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVZlcnRleFBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmli
VHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCkBA
IC0xMzM5LDcgKzE0MjgsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4UG9pbnRlcihDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyaWRlLCBwb2ludGVyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdUZXhmT0VTKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1RleGZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeiwK
QEAgLTEzNDksMjQgKzE0MzgsMjkgQEAgYm9vbCBWYWxpZGF0ZURyYXdUZXhmT0VTKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd1RleENvbW1vbihjb250ZXh0LCB3aWR0
aCwgaGVpZ2h0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdUZXhmdk9FUyhDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGZsb2F0ICpjb29yZHMpCitib29sIFZhbGlkYXRlRHJhd1RleGZ2T0VTKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKmNvb3JkcykKIHsKICAgICByZXR1
cm4gVmFsaWRhdGVEcmF3VGV4Q29tbW9uKGNvbnRleHQsIGNvb3Jkc1szXSwgY29vcmRzWzRdKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURyYXdUZXhpT0VTKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgs
IEdMaW50IHksIEdMaW50IHosIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaHQpCitib29sIFZhbGlk
YXRlRHJhd1RleGlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBoZWlnaHQpCiB7CiAg
ICAgcmV0dXJuIFZhbGlkYXRlRHJhd1RleENvbW1vbihjb250ZXh0LCBzdGF0aWNfY2FzdDxHTGZs
b2F0Pih3aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHTGZsb2F0PihoZWlnaHQpKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdUZXhpdk9FUyhDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqY29vcmRzKQorYm9vbCBWYWxpZGF0ZURyYXdUZXhp
dk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqY29vcmRzKQogewogICAg
IHJldHVybiBWYWxpZGF0ZURyYXdUZXhDb21tb24oY29udGV4dCwgc3RhdGljX2Nhc3Q8R0xmbG9h
dD4oY29vcmRzWzNdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdMZmxvYXQ+KGNvb3Jkc1s0XSkpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1RleHNPRVMo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4c09FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNob3J0IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aG9ydCB6LApAQCAtMTM3NywxMyArMTQ3MSwxMyBAQCBib29sIFZhbGlkYXRlRHJhd1RleHNPRVMo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KGhlaWdodCkpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1RleHN2T0VT
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKmNvb3JkcykKK2Jvb2wgVmFsaWRhdGVE
cmF3VGV4c3ZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqY29vcmRz
KQogewogICAgIHJldHVybiBWYWxpZGF0ZURyYXdUZXhDb21tb24oY29udGV4dCwgc3RhdGljX2Nh
c3Q8R0xmbG9hdD4oY29vcmRzWzNdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGNvb3Jkc1s0XSkpOwogfQogCi1ib29sIFZhbGlkYXRlRHJh
d1RleHhPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4eE9FUyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgeCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmaXhlZCB6LApAQCAtMTM5MywyNSArMTQ4NywyNSBAQCBib29sIFZhbGlkYXRlRHJh
d1RleHhPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3VGV4Q29t
bW9uKGNvbnRleHQsIENvbnZlcnRGaXhlZFRvRmxvYXQod2lkdGgpLCBDb252ZXJ0Rml4ZWRUb0Zs
b2F0KGhlaWdodCkpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1RleHh2T0VTKENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZml4ZWQgKmNvb3JkcykKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4eHZPRVMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmaXhlZCAqY29vcmRzKQogewogICAgIHJl
dHVybiBWYWxpZGF0ZURyYXdUZXhDb21tb24oY29udGV4dCwgQ29udmVydEZpeGVkVG9GbG9hdChj
b29yZHNbM10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydEZpeGVk
VG9GbG9hdChjb29yZHNbNF0pKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUN1cnJlbnRQYWxldHRlTWF0
cml4T0VTKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXRyaXhwYWxldHRlaW5kZXgpCitib29s
IFZhbGlkYXRlQ3VycmVudFBhbGV0dGVNYXRyaXhPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IG1hdHJpeHBhbGV0dGVpbmRleCkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdN
YXRyaXhPRVMoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVMb2FkUGFsZXR0ZUZyb21N
b2RlbFZpZXdNYXRyaXhPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBVTklNUExF
TUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXRyaXhJbmRl
eFBvaW50ZXJPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXRyaXhJbmRleFBv
aW50ZXJPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc3RyaWRlLApAQCAtMTQyMSw3ICsxNTE1LDcgQEAgYm9vbCBWYWxpZGF0ZU1hdHJpeEluZGV4
UG9pbnRlck9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlV2VpZ2h0UG9pbnRlck9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVdlaWdodFBvaW50ZXJPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry
aWRlLApAQCAtMTQzMSw3ICsxNTI1LDcgQEAgYm9vbCBWYWxpZGF0ZVdlaWdodFBvaW50ZXJPRVMo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBv
aW50U2l6ZVBvaW50ZXJPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQb2ludFNp
emVQb2ludGVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCkBAIC0xNDQwLDMxICsxNTM0LDM3IEBAIGJvb2wg
VmFsaWRhdGVQb2ludFNpemVQb2ludGVyT0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGUsIHBvaW50ZXIpOwog
fQogCi1ib29sIFZhbGlkYXRlUXVlcnlNYXRyaXh4T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZml4
ZWQgKm1hbnRpc3NhLCBHTGludCAqZXhwb25lbnQpCitib29sIFZhbGlkYXRlUXVlcnlNYXRyaXh4
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZml4ZWQgKm1hbnRpc3NhLCBjb25z
dCBHTGludCAqZXhwb25lbnQpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2VuRnJhbWVidWZmZXJzT0VTKENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzKQorYm9vbCBWYWxpZGF0
ZUdlbkZyYW1lYnVmZmVyc09FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVycykKIHsKICAgICBVTklNUExF
TUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVGcmFt
ZWJ1ZmZlcnNPRVMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBGcmFtZWJ1ZmZl
cklEICpmcmFtZWJ1ZmZlcnMpCitib29sIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzT0VTKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJh
bWVidWZmZXJJRCAqZnJhbWVidWZmZXJzKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblJlbmRlcmJ1ZmZlcnNPRVMoQ29udGV4
dCAqY29udGV4dCwgR0xzaXplaSBuLCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVycykKK2Jv
b2wgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVycykK
IHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVEZWxldGVSZW5kZXJidWZmZXJzT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlRGVsZXRlUmVuZGVyYnVmZmVyc09FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnMp
CiB7CkBAIC0xNDcyLDI1ICsxNTcyLDI1IEBAIGJvb2wgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZm
ZXJzT0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVCaW5kRnJhbWVidWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
RnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXJP
RVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgRnJhbWVidWZmZXJJRCBm
cmFtZWJ1ZmZlcikKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVC
aW5kUmVuZGVyYnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCitib29sIFZhbGlkYXRlQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1c09FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
KQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2ht
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByYnRh
cmdldCwKQEAgLTE1MDAsNyArMTYwMCw3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXQs
CkBAIC0xNTExLDQ0ICsxNjExLDQ0IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUy
RE9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlR2VuZXJhdGVNaXBtYXBPRVMoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0
KQorYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFRleHR1cmVUeXBlIHRhcmdldCkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewog
ICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlSXNGcmFtZWJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBG
cmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyKQorYm9vbCBWYWxpZGF0ZUlzRnJhbWVidWZmZXJPRVMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlcikKIHsKICAg
ICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJ
c1JlbmRlcmJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBSZW5kZXJidWZmZXJJRCByZW5kZXJi
dWZmZXIpCitib29sIFZhbGlkYXRlSXNSZW5kZXJidWZmZXJPRVMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKQogewogICAgIFVOSU1QTEVNRU5URUQo
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3Jh
Z2VPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdl
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTE1NjAsNTUgKzE2NjAsNjEgQEAgYm9vbCBWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoQ29udGV4dCAqY29udGV4dCwKIAogLy8gR0xfT0VTX3Rl
eHR1cmVfY3ViZV9tYXAKIAotYm9vbCBWYWxpZGF0ZUdldFRleEdlbmZ2T0VTKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCitib29s
IFZhbGlkYXRlR2V0VGV4R2VuZnZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5pdk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gY29vcmQsIEdMZW51bSBwbmFtZSwgaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VGV4
R2VuaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5h
bWUsIGNvbnN0IGludCAqcGFyYW1zKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleEdlbnh2T0VTKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCitib29sIFZh
bGlkYXRlR2V0VGV4R2VueHZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4
ZWQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVUZXhHZW5mdk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZVRl
eEdlbmZ2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4R2VuaXZPRVMoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSkKK2Jv
b2wgVmFsaWRhdGVUZXhHZW5pdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtKQogewogICAgIFVOSU1QTEVNRU5U
RUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEdlbnh2T0VTKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq
cGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VueHZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSkKIHsKICAgICBV
TklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhH
ZW5mT0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVRleEdlbmZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgVU5J
TVBMRU1FTlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4R2Vu
aU9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VuaU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgVU5JTVBMRU1F
TlRFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4R2VueE9FUyhD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKK2Jvb2wgVmFsaWRhdGVUZXhHZW54T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogewogICAgIFVOSU1QTEVNRU5U
RUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMxX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMxX2F1dG9nZW4uaAppbmRleCBmOGJi
MWE2Y2NiMTRhZGFjMWRlZWFhOThmMGIzYjZlM2QzNjhhYjVhLi5kOTMxZWJhZTIwMjA3NDRkNGNh
ZTA2YmQ5M2MyMGMwZjhjY2VlNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMV9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzFfYXV0b2dlbi5oCkBAIC0xNywx
OTMgKzE3LDIyOCBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFs
aWRhdGVBbHBoYUZ1bmMoQ29udGV4dCAqY29udGV4dCwgQWxwaGFUZXN0RnVuYyBmdW5jUGFja2Vk
LCBHTGZsb2F0IHJlZik7Ci1ib29sIFZhbGlkYXRlQWxwaGFGdW5jeChDb250ZXh0ICpjb250ZXh0
LCBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQsIEdMZml4ZWQgcmVmKTsKLWJvb2wgVmFsaWRhdGVD
bGVhckNvbG9yeChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIHJlZCwgR0xmaXhlZCBncmVlbiwg
R0xmaXhlZCBibHVlLCBHTGZpeGVkIGFscGhhKTsKLWJvb2wgVmFsaWRhdGVDbGVhckRlcHRoeChD
b250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIGRlcHRoKTsKLWJvb2wgVmFsaWRhdGVDbGllbnRBY3Rp
dmVUZXh0dXJlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKTsKLWJvb2wgVmFsaWRh
dGVDbGlwUGxhbmVmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwLCBjb25zdCBHTGZsb2F0ICpl
cW4pOwotYm9vbCBWYWxpZGF0ZUNsaXBQbGFuZXgoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBs
YW5lLCBjb25zdCBHTGZpeGVkICplcXVhdGlvbik7Ci1ib29sIFZhbGlkYXRlQ29sb3I0ZihDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBH
TGZsb2F0IGFscGhhKTsKLWJvb2wgVmFsaWRhdGVDb2xvcjR1YihDb250ZXh0ICpjb250ZXh0LCBH
THVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhKTsK
LWJvb2wgVmFsaWRhdGVDb2xvcjR4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgcmVkLCBHTGZp
eGVkIGdyZWVuLCBHTGZpeGVkIGJsdWUsIEdMZml4ZWQgYWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNv
bG9yUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUFscGhhRnVuYyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQsIEdMZmxvYXQgcmVm
KTsKK2Jvb2wgVmFsaWRhdGVBbHBoYUZ1bmN4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEFscGhh
VGVzdEZ1bmMgZnVuY1BhY2tlZCwgR0xmaXhlZCByZWYpOworYm9vbCBWYWxpZGF0ZUNsZWFyQ29s
b3J4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
aXhlZCByZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBncmVlbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGJsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCBhbHBoYSk7Citib29sIFZhbGlkYXRlQ2xlYXJEZXB0aHgoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xmaXhlZCBkZXB0aCk7Citib29sIFZhbGlkYXRlQ2xpZW50QWN0aXZlVGV4
dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSk7Citib29sIFZhbGlk
YXRlQ2xpcFBsYW5lZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcCwgY29uc3QgR0xm
bG9hdCAqZXFuKTsKK2Jvb2wgVmFsaWRhdGVDbGlwUGxhbmV4KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pOworYm9vbCBWYWxpZGF0
ZUNvbG9yNGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBncmVlbiwKKyAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
YWxwaGEpOworYm9vbCBWYWxpZGF0ZUNvbG9yNHViKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSByZWQsCisgICAgICAgICAgICAgICAgICAgICAg
R0x1Ynl0ZSBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGJsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSBhbHBoYSk7Citib29sIFZhbGlkYXRlQ29sb3I0eChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCByZWQs
CisgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGdyZWVuLAorICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBhbHBoYSk7Citi
b29sIFZhbGlkYXRlQ29sb3JQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBv
aW50ZXIpOwotYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2V4KENvbnRleHQgKmNvbnRleHQsIEdMZml4
ZWQgbiwgR0xmaXhlZCBmKTsKLWJvb2wgVmFsaWRhdGVEaXNhYmxlQ2xpZW50U3RhdGUoQ29udGV4
dCAqY29udGV4dCwgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2VkKTsKLWJvb2wgVmFs
aWRhdGVFbmFibGVDbGllbnRTdGF0ZShDb250ZXh0ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJh
eVR5cGUgYXJyYXlQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUZvZ2YoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVGb2dmdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlRm9neChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0p
OwotYm9vbCBWYWxpZGF0ZUZvZ3h2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xmaXhlZCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUZydXN0dW1mKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlRGVwdGhSYW5nZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xm
aXhlZCBuLCBHTGZpeGVkIGYpOworYm9vbCBWYWxpZGF0ZURpc2FibGVDbGllbnRTdGF0ZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlQYWNrZWQpOwor
Ym9vbCBWYWxpZGF0ZUVuYWJsZUNsaWVudFN0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIENs
aWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCk7Citib29sIFZhbGlkYXRlRm9nZihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworYm9vbCBW
YWxpZGF0ZUZvZ2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVGb2d4KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSk7Citib29sIFZhbGlkYXRlRm9neHYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbSk7
Citib29sIFZhbGlkYXRlRnJ1c3R1bWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IGwsCiAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBy
LAogICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYiwKICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHQsCiAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBuLAogICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgZik7Ci1ib29sIFZhbGlkYXRlRnJ1c3R1bXgoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcnVzdHVteChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgbCwKICAgICAgICAgICAgICAgICAgICAgICBH
TGZpeGVkIHIsCiAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBiLAogICAgICAgICAgICAg
ICAgICAgICAgIEdMZml4ZWQgdCwKICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIG4sCiAg
ICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBmKTsKLWJvb2wgVmFsaWRhdGVHZXRDbGlwUGxh
bmVmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgR0xmbG9hdCAqZXF1YXRpb24pOwot
Ym9vbCBWYWxpZGF0ZUdldENsaXBQbGFuZXgoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5l
LCBHTGZpeGVkICplcXVhdGlvbik7Ci1ib29sIFZhbGlkYXRlR2V0Rml4ZWR2KENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRM
aWdodGZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5lZihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZmxvYXQgKmVxdWF0aW9u
KTsKK2Jvb2wgVmFsaWRhdGVHZXRDbGlwUGxhbmV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pOworYm9vbCBWYWxpZGF0ZUdldEZp
eGVkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0TGlnaHRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldExpZ2h0eHYoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7
Citib29sIFZhbGlkYXRlR2V0TGlnaHR4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAg
TGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBHTGZp
eGVkICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldE1hdGVyaWFsZnYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7Citib29s
IFZhbGlkYXRlR2V0TWF0ZXJpYWxmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0TWF0ZXJpYWx4dihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRNYXRlcmlhbHh2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhFbnZm
dihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
aXhlZCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhFbnZmdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5h
bWVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJv
b2wgVmFsaWRhdGVHZXRUZXhFbnZpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4RW52
aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleEVudnh2KENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0VGV4RW52eHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1l
dGVyeHYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZpeGVkICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcnh2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlTGlnaHRNb2RlbGZ2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVM
aWdodE1vZGVseChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0p
OwotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWx4dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVMaWdodGYoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIGxpZ2h0LCBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCwgR0xmbG9h
dCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlTGlnaHRmdihDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlTGlnaHRNb2RlbGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVMaWdodE1vZGVsZnYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUxpZ2h0TW9kZWx4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xm
aXhlZCBwYXJhbSk7Citib29sIFZhbGlkYXRlTGlnaHRNb2RlbHh2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW0pOworYm9vbCBWYWxpZGF0
ZUxpZ2h0Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbGlnaHQsCisgICAgICAgICAgICAgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVMaWdo
dGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bGlnaHQsCiAgICAgICAgICAgICAgICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlTGlnaHR4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgTGlnaHRQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQsIEdMZml4ZWQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUxpZ2h0eHYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVMaWdodHgoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAgICAgICAgICAgICBM
aWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBw
YXJhbSk7Citib29sIFZhbGlkYXRlTGlnaHR4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgTGln
aHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZp
eGVkICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUxpbmVXaWR0aHgoQ29udGV4dCAqY29udGV4dCwg
R0xmaXhlZCB3aWR0aCk7Ci1ib29sIFZhbGlkYXRlTG9hZElkZW50aXR5KENvbnRleHQgKmNvbnRl
eHQpOwotYm9vbCBWYWxpZGF0ZUxvYWRNYXRyaXhmKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKm0pOwotYm9vbCBWYWxpZGF0ZUxvYWRNYXRyaXh4KENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZml4ZWQgKm0pOwotYm9vbCBWYWxpZGF0ZUxvZ2ljT3AoQ29udGV4dCAqY29udGV4dCwg
TG9naWNhbE9wZXJhdGlvbiBvcGNvZGVQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZU1hdGVyaWFsZihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZU1hdGVyaWFsZnYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVMaW5lV2lkdGh4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
Zml4ZWQgd2lkdGgpOworYm9vbCBWYWxpZGF0ZUxvYWRJZGVudGl0eShjb25zdCBDb250ZXh0ICpj
b250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVMb2FkTWF0cml4Zihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGZsb2F0ICptKTsKK2Jvb2wgVmFsaWRhdGVMb2FkTWF0cml4eChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZpeGVkICptKTsKK2Jvb2wgVmFsaWRhdGVMb2dpY09wKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIExvZ2ljYWxPcGVyYXRpb24gb3Bjb2RlUGFja2VkKTsKK2Jv
b2wgVmFsaWRhdGVNYXRlcmlhbGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIE1hdGVyaWFs
UGFyYW1ldGVyIHBuYW1lUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBh
cmFtKTsKK2Jvb2wgVmFsaWRhdGVNYXRlcmlhbGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVNYXRlcmlhbHgoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkLCBH
TGZpeGVkIHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVNYXRlcmlhbHh2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlTWF0ZXJpYWx4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBNYXRl
cmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhl
ZCBwYXJhbSk7Citib29sIFZhbGlkYXRlTWF0ZXJpYWx4dihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVNYXRyaXhNb2RlKENv
bnRleHQgKmNvbnRleHQsIE1hdHJpeFR5cGUgbW9kZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlTXVs
dE1hdHJpeGYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSk7Ci1ib29sIFZhbGlk
YXRlTXVsdE1hdHJpeHgoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmaXhlZCAqbSk7Ci1ib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDRmKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
TWF0cml4TW9kZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBNYXRyaXhUeXBlIG1vZGVQYWNrZWQp
OworYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXhmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKm0pOworYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXh4KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZml4ZWQgKm0pOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0Zihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHEpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0eChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0eChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmaXhlZCBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZp
eGVkIHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBxKTsKLWJvb2wgVmFsaWRhdGVOb3JtYWwzZihD
b250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IG54LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56KTsKLWJv
b2wgVmFsaWRhdGVOb3JtYWwzeChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIG54LCBHTGZpeGVk
IG55LCBHTGZpeGVkIG56KTsKLWJvb2wgVmFsaWRhdGVOb3JtYWxQb2ludGVyKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlTm9ybWFsM2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xm
bG9hdCBueCwgR0xmbG9hdCBueSwgR0xmbG9hdCBueik7Citib29sIFZhbGlkYXRlTm9ybWFsM3go
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBueCwgR0xmaXhlZCBueSwgR0xmaXhlZCBu
eik7Citib29sIFZhbGlkYXRlTm9ybWFsUG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKTsKLWJvb2wgVmFsaWRhdGVPcnRob2Yo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVPcnRob2YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBsLAogICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHIsCiAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgYiwKICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB0LAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG4sCiAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgZik7Ci1ib29sIFZhbGlkYXRlT3J0aG94KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlT3J0aG94KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgbCwKICAgICAgICAgICAgICAgICAgICAgR0xmaXhl
ZCByLAogICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGIsCiAgICAgICAgICAgICAgICAgICAg
IEdMZml4ZWQgdCwKICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBuLAogICAgICAgICAgICAg
ICAgICAgICBHTGZpeGVkIGYpOwotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZihDb250ZXh0
ICpjb250ZXh0LCBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCwgR0xmbG9hdCBwYXJhbSk7Ci1i
b29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBQb2ludFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVQ
b2ludFBhcmFtZXRlcngoQ29udGV4dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQsIEdMZml4ZWQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeHYoQ29udGV4
dCAqY29udGV4dCwgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsIGNvbnN0IEdMZml4ZWQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlUG9pbnRTaXplKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
c2l6ZSk7Ci1ib29sIFZhbGlkYXRlUG9pbnRTaXpleChDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVk
IHNpemUpOwotYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXR4KENvbnRleHQgKmNvbnRleHQsIEdM
Zml4ZWQgZmFjdG9yLCBHTGZpeGVkIHVuaXRzKTsKLWJvb2wgVmFsaWRhdGVQb3BNYXRyaXgoQ29u
dGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlUHVzaE1hdHJpeChDb250ZXh0ICpjb250ZXh0
KTsKLWJvb2wgVmFsaWRhdGVSb3RhdGVmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgYW5nbGUs
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwotYm9vbCBWYWxpZGF0ZVJvdGF0ZXgo
Q29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBhbmdsZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdM
Zml4ZWQgeik7Ci1ib29sIFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2V4KENvbnRleHQgKmNvbnRleHQs
IEdMY2xhbXB4IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKLWJvb2wgVmFsaWRhdGVTY2FsZWYo
Q29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7Ci1ib29s
IFZhbGlkYXRlU2NhbGV4KENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgeCwgR0xmaXhlZCB5LCBH
TGZpeGVkIHopOwotYm9vbCBWYWxpZGF0ZVNoYWRlTW9kZWwoQ29udGV4dCAqY29udGV4dCwgU2hh
ZGluZ01vZGVsIG1vZGVQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkUG9pbnRlcihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCwgR0xmbG9hdCBwYXJhbSk7Citi
b29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQb2ludFBh
cmFtZXRlciBwbmFtZVBhY2tlZCwgR0xmaXhlZCBwYXJhbSk7Citib29sIFZhbGlkYXRlUG9pbnRQ
YXJhbWV0ZXJ4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVBvaW50U2l6
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHNpemUpOworYm9vbCBWYWxpZGF0ZVBv
aW50U2l6ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmaXhlZCBzaXplKTsKK2Jvb2wgVmFs
aWRhdGVQb2x5Z29uT2Zmc2V0eChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZpeGVkIGZhY3Rv
ciwgR0xmaXhlZCB1bml0cyk7Citib29sIFZhbGlkYXRlUG9wTWF0cml4KGNvbnN0IENvbnRleHQg
KmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVB1c2hNYXRyaXgoY29uc3QgQ29udGV4dCAqY29udGV4
dCk7Citib29sIFZhbGlkYXRlUm90YXRlZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0
IGFuZ2xlLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKK2Jvb2wgVmFsaWRhdGVS
b3RhdGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgYW5nbGUsIEdMZml4ZWQgeCwg
R0xmaXhlZCB5LCBHTGZpeGVkIHopOworYm9vbCBWYWxpZGF0ZVNhbXBsZUNvdmVyYWdleChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGNsYW1weCB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7Citi
b29sIFZhbGlkYXRlU2NhbGVmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xm
bG9hdCB5LCBHTGZsb2F0IHopOworYm9vbCBWYWxpZGF0ZVNjYWxleChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KTsKK2Jvb2wgVmFsaWRhdGVT
aGFkZU1vZGVsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRpbmdNb2RlbCBtb2RlUGFja2Vk
KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcik7Ci1ib29sIFZhbGlkYXRlVGV4RW52ZihDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleEVudmZ2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4RW52ZnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlVGV4RW52aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudmkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRl
ciBwbmFtZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhcmFtKTsKLWJvb2wg
VmFsaWRhdGVUZXhFbnZpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEVudml2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVu
dlRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUVudlBh
cmFtZXRlciBwbmFtZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhFbnZ4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlVGV4RW52eChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgR0xm
aXhlZCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4RW52eHYoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXhFbnZ4dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4
KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwgR0xlbnVtIHBuYW1l
LCBHTGZpeGVkIHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4dihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcngoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZml4ZWQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcnh2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4
LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7Ci1ib29sIFZhbGlkYXRlVHJhbnNsYXRleChDb250ZXh0
ICpjb250ZXh0LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXhQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVHJhbnNsYXRl
Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6
KTsKK2Jvb2wgVmFsaWRhdGVUcmFuc2xhdGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZml4
ZWQgeCwgR0xmaXhlZCB5LCBHTGZpeGVkIHopOworYm9vbCBWYWxpZGF0ZVZlcnRleFBvaW50ZXIo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMy
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMy
LmNwcAppbmRleCA1MGNhNWVhOThmOTJhYjMwMGY5ZTQ4NDlhN2QzMjAyNDdjY2EyOGUwLi5mYWRi
ZGFjNzczMzIwMDkwMjU5Y2MzMGEyMWY2OTlmN2E0YTAxNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuY3BwCkBAIC0x
OCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRmVuY2UuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNo
bWVudC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL01lbW9yeU9iamVjdC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL1JlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKQEAgLTM1LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIGVycjsKIG5hbWVzcGFjZQogewogCi1ib29sIElzUGFydGlhbEJsaXQoZ2w6OkNvbnRleHQg
KmNvbnRleHQsCitib29sIElzUGFydGlhbEJsaXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRCdWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICp3cml0ZUJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKQEAgLTY2LDE0OSArNjcsNiBA
QCBib29sIElzUGFydGlhbEJsaXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWJvb2wgVmFsaWRhdGVQYXRoSW5zdGFu
Y2VzKGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlKQotewotICAg
IGNvbnN0IGF1dG8gKmFycmF5ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVCAqPihwYXRocyk7Ci0KLSAg
ICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBudW1QYXRoczsgKytpKQotICAgIHsKLSAgICAgICAg
Y29uc3QgR0x1aW50IHBhdGhOYW1lID0gYXJyYXlbaV0gKyBwYXRoQmFzZS52YWx1ZTsKLSAgICAg
ICAgaWYgKGNvbnRleHQtPmlzUGF0aEdlbmVyYXRlZCh7cGF0aE5hbWV9KSAmJiAhY29udGV4dC0+
aXNQYXRoKHtwYXRoTmFtZX0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb1N1Y2hQYXRoKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0ZXJzKGdsOjpDb250ZXh0ICpjb250
ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
YXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJh
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnBhdGhSZW5kZXJpbmcpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwYXRocyA9PSBudWxscHRyKQotICAgIHsKLSAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlk
UGF0aE5hbWVBcnJheSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
bnVtUGF0aHMgPCAwKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdM
X0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkUGF0aE51bVBhdGhzKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmICghYW5nbGU6OklzVmFsdWVJblJhbmdlRm9yTnVtZXJpY1R5
cGU8c3RkOjp1aW50MzJfdD4obnVtUGF0aHMpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFs
aWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrSW50ZWdlck92ZXJmbG93KTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHN0ZDo6dWludDMyX3QgcGF0aE5hbWVU
eXBlU2l6ZSA9IDA7Ci0gICAgc3RkOjp1aW50MzJfdCBjb21wb25lbnRDb3VudCAgID0gMDsKLQot
ICAgIHN3aXRjaCAocGF0aE5hbWVUeXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgotICAgICAgICAgICAgcGF0aE5hbWVUeXBlU2l6ZSA9IHNpemVvZihHTHVieXRlKTsK
LSAgICAgICAgICAgIGlmICghVmFsaWRhdGVQYXRoSW5zdGFuY2VzPEdMdWJ5dGU+KGNvbnRleHQs
IG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgR0xfQllURToKLSAgICAgICAg
ICAgIHBhdGhOYW1lVHlwZVNpemUgPSBzaXplb2YoR0xieXRlKTsKLSAgICAgICAgICAgIGlmICgh
VmFsaWRhdGVQYXRoSW5zdGFuY2VzPEdMYnl0ZT4oY29udGV4dCwgbnVtUGF0aHMsIHBhdGhzLCBw
YXRoQmFzZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAgICAgICAgICAgIHBhdGhO
YW1lVHlwZVNpemUgPSBzaXplb2YoR0x1c2hvcnQpOwotICAgICAgICAgICAgaWYgKCFWYWxpZGF0
ZVBhdGhJbnN0YW5jZXM8R0x1c2hvcnQ+KGNvbnRleHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJh
c2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgR0xfU0hPUlQ6Ci0gICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0g
c2l6ZW9mKEdMc2hvcnQpOwotICAgICAgICAgICAgaWYgKCFWYWxpZGF0ZVBhdGhJbnN0YW5jZXM8
R0xzaG9ydD4oY29udGV4dCwgbnVtUGF0aHMsIHBhdGhzLCBwYXRoQmFzZSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAgICBwYXRoTmFtZVR5cGVTaXplID0gc2l6ZW9mKEdM
dWludCk7Ci0gICAgICAgICAgICBpZiAoIVZhbGlkYXRlUGF0aEluc3RhbmNlczxHTHVpbnQ+KGNv
bnRleHQsIG51bVBhdGhzLCBwYXRocywgcGF0aEJhc2UpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgR0xfSU5UOgotICAg
ICAgICAgICAgcGF0aE5hbWVUeXBlU2l6ZSA9IHNpemVvZihHTGludCk7Ci0gICAgICAgICAgICBp
ZiAoIVZhbGlkYXRlUGF0aEluc3RhbmNlczxHTGludD4oY29udGV4dCwgbnVtUGF0aHMsIHBhdGhz
LCBwYXRoQmFzZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkUGF0aE5hbWVUeXBlKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHRyYW5zZm9ybVR5cGUpCi0g
ICAgewotICAgICAgICBjYXNlIEdMX05PTkU6Ci0gICAgICAgICAgICBjb21wb25lbnRDb3VudCA9
IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVfWF9DSFJP
TUlVTToKLSAgICAgICAgY2FzZSBHTF9UUkFOU0xBVEVfWV9DSFJPTUlVTToKLSAgICAgICAgICAg
IGNvbXBvbmVudENvdW50ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdM
X1RSQU5TTEFURV8yRF9DSFJPTUlVTToKLSAgICAgICAgICAgIGNvbXBvbmVudENvdW50ID0gMjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1RSQU5TTEFURV8zRF9DSFJPTUlV
TToKLSAgICAgICAgICAgIGNvbXBvbmVudENvdW50ID0gMzsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEdMX0FGRklORV8yRF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9UUkFO
U1BPU0VfQUZGSU5FXzJEX0NIUk9NSVVNOgotICAgICAgICAgICAgY29tcG9uZW50Q291bnQgPSA2
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfQUZGSU5FXzNEX0NIUk9NSVVN
OgotICAgICAgICBjYXNlIEdMX1RSQU5TUE9TRV9BRkZJTkVfM0RfQ0hST01JVU06Ci0gICAgICAg
ICAgICBjb21wb25lbnRDb3VudCA9IDEyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCBrSW52YWxpZFRyYW5zZm9ybWF0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgaWYgKGNvbXBvbmVudENvdW50ICE9IDAgJiYgdHJhbnNmb3JtVmFsdWVzID09
IG51bGxwdHIpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwga05vVHJhbnNmb3JtQXJyYXkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgYW5nbGU6OkNoZWNrZWROdW1lcmljPHN0ZDo6dWludDMyX3Q+IGNoZWNrZWRT
aXplKDApOwotICAgIGNoZWNrZWRTaXplICs9IChudW1QYXRocyAqIHBhdGhOYW1lVHlwZVNpemUp
OwotICAgIGNoZWNrZWRTaXplICs9IChudW1QYXRocyAqIHNpemVvZihHTGZsb2F0KSAqIGNvbXBv
bmVudENvdW50KTsKLSAgICBpZiAoIWNoZWNrZWRTaXplLklzVmFsaWQoKSkKLSAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludGVn
ZXJPdmVyZmxvdyk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQogYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VJbnRlcm5hbEZvcm1hdEVu
dW0oR0xlbnVtIGludGVybmFsRm9ybWF0KQogewogICAgIC8vIFRhYmxlIDEuMSBmcm9tIHRoZSBD
SFJPTUlVTV9jb3B5X3RleHR1cmUgc3BlYwpAQCAtMjg2LDcgKzE0NCw5IEBAIGJvb2wgSXNWYWxp
ZENvcHlTdWJUZXh0dXJlRGVzdGlvbmF0aW9uSW50ZXJuYWxGb3JtYXQoR0xlbnVtIGludGVybmFs
Rm9ybWF0KQogICAgIHJldHVybiBJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvbkludGVybmFs
Rm9ybWF0RW51bShpbnRlcm5hbEZvcm1hdCk7CiB9CiAKLWJvb2wgSXNWYWxpZENvcHlUZXh0dXJl
RGVzdGluYXRpb25Gb3JtYXRUeXBlKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGludGVybmFsRm9y
bWF0LCBHTGVudW0gdHlwZSkKK2Jvb2wgSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25Gb3Jt
YXRUeXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQogewogICAgIGlmICgh
SXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25JbnRlcm5hbEZvcm1hdEVudW0oaW50ZXJuYWxG
b3JtYXQpKQogICAgIHsKQEAgLTMxMCw3ICsxNzAsNyBAQCBib29sIElzVmFsaWRDb3B5VGV4dHVy
ZURlc3RpbmF0aW9uRm9ybWF0VHlwZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBpbnRlcm5hbEZv
cgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0
aW9uVGFyZ2V0RW51bShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVGFyZ2V0IHRhcmdldCkKK2Jv
b2wgSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25UYXJnZXRFbnVtKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIFRleHR1cmVUYXJnZXQgdGFyZ2V0KQogewogICAgIHN3aXRjaCAodGFyZ2V0KQog
ICAgIHsKQEAgLTMzMSwxNCArMTkxLDE0IEBAIGJvb2wgSXNWYWxpZENvcHlUZXh0dXJlRGVzdGlu
YXRpb25UYXJnZXRFbnVtKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUYXJnZXQgdGFyCiAgICAg
fQogfQogCi1ib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0KENvbnRleHQg
KmNvbnRleHQsCitib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVUeXBlIHRleHR1cmVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCkKIHsKICAgICByZXR1cm4gVGV4dHVy
ZVRhcmdldFRvVHlwZSh0YXJnZXQpID09IHRleHR1cmVUeXBlOwogfQogCi1ib29sIElzVmFsaWRD
b3B5VGV4dHVyZVNvdXJjZVRhcmdldChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBl
KQorYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VUYXJnZXQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgVGV4dHVyZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpAQCAt
MzU1LDcgKzIxNSw3IEBAIGJvb2wgSXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFyZ2V0KENvbnRl
eHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUpCiAgICAgfQogfQogCi1ib29sIElzVmFsaWRD
b3B5VGV4dHVyZVNvdXJjZUxldmVsKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHR5cGUs
IEdMaW50IGxldmVsKQorYm9vbCBJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VMZXZlbChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0eXBlLCBHTGludCBsZXZlbCkKIHsKICAgICBp
ZiAoIVZhbGlkTWlwTGV2ZWwoY29udGV4dCwgdHlwZSwgbGV2ZWwpKQogICAgIHsKQEAgLTM3MCw3
ICsyMzAsNyBAQCBib29sIElzVmFsaWRDb3B5VGV4dHVyZVNvdXJjZUxldmVsKENvbnRleHQgKmNv
bnRleHQsIFRleHR1cmVUeXBlIHR5cGUsIEdMaW50IGxldgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIElzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uTGV2ZWwoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25MZXZlbChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKQEAgLTQ1OCw3ICszMTgsNyBAQCBib29sIElzVmFsaWRTdGVuY2lsT3AoR0xlbnVt
IG9wKQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFUzJDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNDkyLDcgKzM1Miw3IEBAIGJvb2wg
VmFsaWRhdGVFUzJDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAg
ICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdl
dFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9CiAgICAg
ICAgIGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JBdHRhY2htZW50KCktPmdldEZvcm1hdCgpLmlu
Zm8tPnNpemVkSW50ZXJuYWxGb3JtYXQ7CiAgICAgY29uc3QgYXV0byAmZm9ybWF0SW5mbyA9ICp0
ZXh0dXJlRm9ybWF0LmluZm87CkBAIC0xMDQ0LDcgKzkwNCw3IEBAIGJvb2wgSXNWYWxpZEVTU0xT
aGFkZXJTb3VyY2VTdHJpbmcoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuLCBib29sIGxpbmVD
b250aW51CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXZWJHTE5hbWVQcmVm
aXgoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKQorYm9vbCBWYWxpZGF0ZVdl
YkdMTmFtZVByZWZpeChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUp
CiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzV2ViR0woKSk7CiAKQEAgLTEwNTksNyArOTE5LDcg
QEAgYm9vbCBWYWxpZGF0ZVdlYkdMTmFtZVByZWZpeChDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGNoYXIgKm5hbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXZWJHTE5h
bWVMZW5ndGgoQ29udGV4dCAqY29udGV4dCwgc2l6ZV90IGxlbmd0aCkKK2Jvb2wgVmFsaWRhdGVX
ZWJHTE5hbWVMZW5ndGgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgc2l6ZV90IGxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoY29udGV4dC0+aXNXZWJHTCgpKTsKIApAQCAtMTA4MywyNSArOTQzLDkgQEAg
Ym9vbCBWYWxpZGF0ZVdlYkdMTmFtZUxlbmd0aChDb250ZXh0ICpjb250ZXh0LCBzaXplX3QgbGVu
Z3RoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWF0cml4TW9kZShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbWF0cml4TW9kZSkKLXsKLSAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFs
aWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobWF0cml4TW9kZSAhPSBH
TF9QQVRIX01PREVMVklFV19DSFJPTUlVTSAmJiBtYXRyaXhNb2RlICE9IEdMX1BBVEhfUFJPSkVD
VElPTl9DSFJPTUlVTSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkTWF0cml4TW9kZSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgVmFsaWRCbGVuZEZ1bmMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZhbCkKIHsKLSAgICBjb25zdCBnbDo6RXh0ZW5z
aW9ucyAmZXh0ID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOworICAgIGNvbnN0IEV4dGVuc2lv
bnMgJmV4dCA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKIAogICAgIC8vIHRoZXNlIGFyZSBh
bHdheXMgdmFsaWQgZm9yIHNyYyBhbmQgZHN0LgogICAgIHN3aXRjaCAodmFsKQpAQCAtMTE4MSw3
ICsxMDI1LDcgQEAgYm9vbCBJc1ZhbGlkSW1hZ2VMYXlvdXQoSW1hZ2VMYXlvdXQgbGF5b3V0KQog
ICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKQEAgLTEyMDgsOSArMTA1MiwyMSBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJh
bWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIGltYWdlU2l6ZSwgcGl4ZWxzKTsKIH0KIAorYm9v
bCBJc1ZhbGlkTWVtb3J5T2JqZWN0UGFyYW1hdGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSkKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9ERURJQ0FURURfTUVNT1JZX09CSkVDVF9FWFQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K
KwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1ib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQ
YXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdl
UGFyYW1ldGVyc0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0xMjQ3LDcg
KzExMDMsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6
OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAgY29uc3QgQ2FwcyAmY2FwcyA9
IGNvbnRleHQtPmdldENhcHMoKTsKIAogICAgIHN3aXRjaCAodGV4VHlwZSkKICAgICB7CkBAIC0x
Mjk2LDcgKzExNTIsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0ZXhUeXBl
KTsKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0ZXhU
eXBlKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtCdWZmZXJOb3RCb3VuZCk7CkBAIC0xOTMz
LDcgKzE3ODksNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LApAQCAtMTk1OSwyMCArMTgxNSwyMCBAQCBib29sIFZhbGlkYXRlRVMyVGV4U3Rv
cmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChsZXZlbHMgIT0gMSAmJiBsZXZlbHMgIT0gZ2w6OmxvZzIoc3RkOjpt
YXgod2lkdGgsIGhlaWdodCkpICsgMSkKKyAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2ZWxzICE9
IGxvZzIoc3RkOjptYXgod2lkdGgsIGhlaWdodCkpICsgMSkKICAgICB7CiAgICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRNaXBMZXZl
bHMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXRJbmZvKGlu
dGVybmFsZm9ybWF0KTsKKyAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdl
dFNpemVkSW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKICAgICBpZiAoZm9ybWF0
SW5mby5mb3JtYXQgPT0gR0xfTk9ORSB8fCBmb3JtYXRJbmZvLnR5cGUgPT0gR0xfTk9ORSkKICAg
ICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJ
bnZhbGlkRm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0
IGdsOjpDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgIGNvbnN0IENhcHMgJmNh
cHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CiAKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7CkBA
IC0yMDE1LDcgKzE4NzEsNyBAQCBib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMo
Q29udGV4dCAqY29udGV4dCwKIAogICAgIGlmIChsZXZlbHMgIT0gMSAmJiAhY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UT0VTKQogICAgIHsKLSAgICAgICAgaWYgKCFnbDo6aXNQ
b3cyKHdpZHRoKSB8fCAhZ2w6OmlzUG93MihoZWlnaHQpKQorICAgICAgICBpZiAoIWlzUG93Mih3
aWR0aCkgfHwgIWlzUG93MihoZWlnaHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0
LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtEaW1lbnNpb25zTXVzdEJl
UG93Mik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjA2LDcgKzIwNjIsNyBAQCBi
b29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29u
dGV4dC0+Z2V0VGV4dHVyZUJ5VHlwZSh0YXJnZXQpOworICAgIFRleHR1cmUgKnRleHR1cmUgPSBj
b250ZXh0LT5nZXRUZXh0dXJlQnlUeXBlKHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlIHx8IHRl
eHR1cmUtPmlkKCkudmFsdWUgPT0gMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga01pc3NpbmdUZXh0dXJlKTsKQEAgLTIyMjIs
NyArMjA3OCw3IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhTdG9yYWdlUGFyYW1ldGVycyhDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGlzY2FyZEZy
YW1lYnVmZmVyRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1l
YnVmZmVyRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCkBAIC0yMjUwLDcgKzIxMDYsNyBA
QCBib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhUKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RnJhbWVidWZm
ZXIpOwogfQogCi1ib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5T0VTKENvbnRleHQgKmNvbnRl
eHQsIFZlcnRleEFycmF5SUQgYXJyYXkpCitib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5T0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXkpCiB7CiAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3RPRVMpCiAgICAgewpA
QCAtMjI2MSw3ICsyMTE3LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheU9FUyhDb250
ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KQogICAgIHJldHVybiBWYWxpZGF0ZUJp
bmRWZXJ0ZXhBcnJheUJhc2UoY29udGV4dCwgYXJyYXkpOwogfQogCi1ib29sIFZhbGlkYXRlRGVs
ZXRlVmVydGV4QXJyYXlzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgVmVy
dGV4QXJyYXlJRCAqYXJyYXlzKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5c09FUyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFZlcnRleEFycmF5SUQgKmFy
cmF5cykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBcnJheU9i
amVjdE9FUykKICAgICB7CkBAIC0yMjcyLDcgKzIxMjgsNyBAQCBib29sIFZhbGlkYXRlRGVsZXRl
VmVydGV4QXJyYXlzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgVmVydGV4
QXJyYQogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1i
b29sIFZhbGlkYXRlR2VuVmVydGV4QXJyYXlzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkg
biwgVmVydGV4QXJyYXlJRCAqYXJyYXlzKQorYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFycmF5c09F
Uyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFZlcnRleEFycmF5SUQg
KmFycmF5cykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBcnJh
eU9iamVjdE9FUykKICAgICB7CkBAIC0yMjgzLDcgKzIxMzksNyBAQCBib29sIFZhbGlkYXRlR2Vu
VmVydGV4QXJyYXlzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgVmVydGV4QXJyYXlJ
RCAqYXJyYQogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQog
Ci1ib29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheU9FUyhDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhB
cnJheUlEIGFycmF5KQorYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS52ZXJ0ZXhBcnJheU9iamVjdE9FUykKICAgICB7CkBAIC0yMjk0LDcgKzIx
NTAsNyBAQCBib29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheU9FUyhDb250ZXh0ICpjb250ZXh0LCBW
ZXJ0ZXhBcnJheUlEIGFycmF5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
UHJvZ3JhbUJpbmFyeU9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1C
aW5hcnlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmJpbmFyeSwKQEAgLTIzMDksMTIgKzIxNjUsMTIgQEAgYm9vbCBWYWxpZGF0
ZVByb2dyYW1CaW5hcnlPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVQ
cm9ncmFtQmluYXJ5QmFzZShjb250ZXh0LCBwcm9ncmFtLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwg
bGVuZ3RoKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlPRVMoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5T0VTKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmluYXJ5KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpiaW5hcnlGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnkpCiB7CiAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0UHJvZ3JhbUJpbmFyeU9FUykKICAgICB7
CkBAIC0yMzgwLDcgKzIyMzYsNyBAQCBzdGF0aWMgYm9vbCBWYWxpZERlYnVnU2V2ZXJpdHkoR0xl
bnVtIHNldmVyaXR5KQogICAgIH0KIH0KIAotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRy
b2xLSFIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9s
S0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gc2V2ZXJpdHksCkBAIC0yNDMwLDcgKzIyODYsNyBAQCBib29sIFZhbGlkYXRlRGVidWdNZXNz
YWdlQ29udHJvbEtIUihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlRGVidWdNZXNzYWdlSW5zZXJ0S0hSKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlRGVidWdNZXNzYWdlSW5zZXJ0S0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCkBAIC0yNDc5LDcgKzIzMzUsNyBAQCBib29s
IFZhbGlkYXRlRGVidWdNZXNzYWdlSW5zZXJ0S0hSKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xERUJVR1BST0NLSFIgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqdXNlclBhcmFtKQogewpAQCAtMjQ5MiwxNSArMjM0OCwxNSBAQCBi
b29sIFZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZ0tIUihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZ0tIUihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzb3Vy
Y2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0aWVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqc291cmNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICp0eXBlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqc2V2ZXJpdGllcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RocywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlTG9nKQog
ewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKQEAgLTI1
MTcsNyArMjM3Myw3IEBAIGJvb2wgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVB1c2hEZWJ1
Z0dyb3VwS0hSKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHVzaERlYnVnR3JvdXBL
SFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKQEAgLTI1
NTIsNyArMjQwOCw3IEBAIGJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9wRGVidWdHcm91
cEtIUihDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoY29u
c3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kZWJ1ZykKICAgICB7CkBAIC0yNTcwLDcgKzI0MjYsNyBAQCBib29sIFZhbGlkYXRlUG9wRGVi
dWdHcm91cEtIUihDb250ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0
aWMgYm9vbCBWYWxpZGF0ZU9iamVjdElkZW50aWZpZXJBbmROYW1lKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSkKK3N0YXRpYyBib29sIFZhbGlkYXRlT2Jq
ZWN0SWRlbnRpZmllckFuZE5hbWUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGlkZW50
aWZpZXIsIEdMdWludCBuYW1lKQogewogICAgIHN3aXRjaCAoaWRlbnRpZmllcikKICAgICB7CkBA
IC0yNjYwLDcgKzI1MTYsNyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZU9iamVjdElkZW50aWZpZXJB
bmROYW1lKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBpZGVudGlmaWVyLAogICAgIH0KIH0KIAot
c3RhdGljIGJvb2wgVmFsaWRhdGVMYWJlbExlbmd0aChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCkKK3N0YXRpYyBib29sIFZhbGlkYXRlTGFiZWxM
ZW5ndGgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hh
ciAqbGFiZWwpCiB7CiAgICAgc2l6ZV90IGxhYmVsTGVuZ3RoID0gMDsKIApAQCAtMjY4NSw3ICsy
NTQxLDcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVMYWJlbExlbmd0aChDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU9iamVjdExhYmVsS0hSKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlT2JqZWN0TGFiZWxLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxl
bmd0aCwKQEAgLTI3MTAsMTIgKzI1NjYsMTIgQEAgYm9vbCBWYWxpZGF0ZU9iamVjdExhYmVsS0hS
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRPYmplY3RMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE9iamVj
dExhYmVsS0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKQEAgLTI3MzcsNyArMjU5Myw3IEBA
IGJvb2wgVmFsaWRhdGVHZXRPYmplY3RMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBWYWxpZGF0ZU9iamVjdFB0ck5hbWUoQ29udGV4
dCAqY29udGV4dCwgY29uc3Qgdm9pZCAqcHRyKQorc3RhdGljIGJvb2wgVmFsaWRhdGVPYmplY3RQ
dHJOYW1lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IHZvaWQgKnB0cikKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0U3luYyhyZWludGVycHJldF9jYXN0PEdMc3luYz4oY29uc3RfY2FzdDx2
b2lkICo+KHB0cikpKSA9PSBudWxscHRyKQogICAgIHsKQEAgLTI3NDgsNyArMjYwNCw3IEBAIHN0
YXRpYyBib29sIFZhbGlkYXRlT2JqZWN0UHRyTmFtZShDb250ZXh0ICpjb250ZXh0LCBjb25zdCB2
b2lkICpwdHIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVPYmplY3RQdHJM
YWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU9iamVjdFB0ckxhYmVsS0hS
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
bGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFi
ZWwpCkBAIC0yNzcyLDExICsyNjI4LDExIEBAIGJvb2wgVmFsaWRhdGVPYmplY3RQdHJMYWJlbEtI
UihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
R2V0T2JqZWN0UHRyTGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRP
YmplY3RQdHJMYWJlbEtIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMY2hhciAqbGFiZWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbGFiZWwpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZGVidWcpCiAgICAgewpAQCAtMjc5OCw3ICsyNjU0LDcgQEAgYm9vbCBWYWxpZGF0ZUdldE9iamVj
dFB0ckxhYmVsS0hSKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRQb2ludGVydktIUihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUs
IHZvaWQgKipwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0UG9pbnRlcnZLSFIoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCB2b2lkICpjb25zdCAqcGFyYW1zKQogewogICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQogICAgIHsKQEAgLTI4MjEsMTcgKzI2
NzcsMTcgQEAgYm9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2S0hSKENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqcGFyYW1zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNv
bnN0ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKQEAgLTI5NjQsNyArMjgyMCw3IEBAIGJv
b2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WDEsIGRzdFkxLCBtYXNr
LCBmaWx0ZXIpOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXIoQ29udGV4dCAqY29udGV4dCwgR0xi
aXRmaWVsZCBtYXNrKQorYm9vbCBWYWxpZGF0ZUNsZWFyKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMYml0ZmllbGQgbWFzaykKIHsKICAgICBGcmFtZWJ1ZmZlciAqZmJvICAgICAgICAgICAgID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKICAgICBjb25zdCBFeHRl
bnNpb25zICZleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpOwpAQCAtMzAxMCw3
ICsyODY2LDcgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyKENvbnRleHQgKmNvbnRleHQsIEdMYml0Zmll
bGQgbWFzaykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJz
RVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQorYm9v
bCBWYWxpZGF0ZURyYXdCdWZmZXJzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkg
biwgY29uc3QgR0xlbnVtICpidWZzKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmRyYXdCdWZmZXJzKQogICAgIHsKQEAgLTMwMjEsNyArMjg3Nyw3IEBAIGJvb2wgVmFsaWRh
dGVEcmF3QnVmZmVyc0VYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51
bSAqYnVmcykKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3QnVmZmVyc0Jhc2UoY29udGV4dCwgbiwg
YnVmcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlVGV4SW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFs
Zm9ybWF0LApAQCAtMzA0NCw3ICsyOTAwLDcgQEAgYm9vbCBWYWxpZGF0ZVRleEltYWdlMkQoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwaXhlbHMpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsCkBAIC0zMDc0LDcgKzI5MzAsNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UyRFJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlMkQo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTMwOTgsNyArMjk1NCw3IEBAIGJv
b2wgVmFsaWRhdGVUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0zMTI4LDcg
KzI5ODQsNyBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4
ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNET0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTMxNDUsNyArMzAwMSw3IEBAIGJvb2wg
VmFsaWRhdGVUZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogCi1i
b29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTMxNzcsNyAr
MzAzMyw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChDb250ZXh0ICpjb250
ZXh0LAogICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0U2l6ZWRJbnRl
cm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwogCiAgICAgR0x1aW50IGJsb2NrU2l6ZSA9
IDA7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKGdsOjpF
eHRlbnRzKHdpZHRoLCBoZWlnaHQsIDEpLCAmYmxvY2tTaXplKSkKKyAgICBpZiAoIWZvcm1hdElu
Zm8uY29tcHV0ZUNvbXByZXNzZWRJbWFnZVNpemUoRXh0ZW50cyh3aWR0aCwgaGVpZ2h0LCAxKSwg
JmJsb2NrU2l6ZSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIGtJbnRlZ2VyT3ZlcmZsb3cpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zMTk4LDcgKzMwNTQsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdl
MkQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMzIxOCw3ICszMDc0LDcgQEAgYm9v
bCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTJEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGltYWdl
U2l6ZSwgZGF0YSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNET0VTKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMzIzMyw3ICszMDg5LDcgQEAgYm9vbCBWYWxpZGF0
ZUNvbXByZXNzZWRUZXhJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRh
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJv
YnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNl
dCwKQEAgLTMyNTQsNyArMzExMCw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOwogfQogCi1ib29s
IFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0zMjg2
LDcgKzMxNDIsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoQ29udGV4
dCAqY29udGV4dCwKIAogICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0
U2l6ZWRJbnRlcm5hbEZvcm1hdEluZm8oZm9ybWF0KTsKICAgICBHTHVpbnQgYmxvY2tTaXplICAg
ICAgICAgICAgICAgICA9IDA7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2Vk
SW1hZ2VTaXplKGdsOjpFeHRlbnRzKHdpZHRoLCBoZWlnaHQsIDEpLCAmYmxvY2tTaXplKSkKKyAg
ICBpZiAoIWZvcm1hdEluZm8uY29tcHV0ZUNvbXByZXNzZWRJbWFnZVNpemUoRXh0ZW50cyh3aWR0
aCwgaGVpZ2h0LCAxKSwgJmJsb2NrU2l6ZSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnRlZ2VyT3ZlcmZsb3cpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzAxLDcgKzMxNTcsNyBAQCBib29sIFZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4b2Zmc2V0LApAQCAtMzMxOCwxMCArMzE3NCwxMCBAQCBib29sIFZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgZGF0YSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydk9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2T0VTKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29uc3QgKnBhcmFtcykK
IHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXBCdWZmZXJPRVMpCiAgICAg
ewpAQCAtMzMzMiw3ICszMTg4LDcgQEAgYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2T0VT
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZC
YXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIsIHBhcmFtcyk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVNYXBCdWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJn
ZXQsIEdMZW51bSBhY2Nlc3MpCitib29sIFZhbGlkYXRlTWFwQnVmZmVyT0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQogewogICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1hcEJ1ZmZlck9FUykKICAgICB7CkBAIC0z
MzY5LDcgKzMyMjUsNyBAQCBib29sIFZhbGlkYXRlTWFwQnVmZmVyT0VTKENvbnRleHQgKmNvbnRl
eHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQogICAgIHJldHVybiBWYWxp
ZGF0ZU1hcEJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVu
bWFwQnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQorYm9v
bCBWYWxpZGF0ZVVubWFwQnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0KQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1hcEJ1
ZmZlck9FUykKICAgICB7CkBAIC0zMzgwLDcgKzMyMzYsNyBAQCBib29sIFZhbGlkYXRlVW5tYXBC
dWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQpCiAgICAgcmV0
dXJuIFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldCk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZU1hcEJ1ZmZlclJhbmdlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLApAQCAtMzM5NSw3ICszMjUxLDcgQEAgYm9vbCBWYWxp
ZGF0ZU1hcEJ1ZmZlclJhbmdlRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlk
YXRlTWFwQnVmZmVyUmFuZ2VCYXNlKGNvbnRleHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFj
Y2Vzcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVCdWZmZXJTdG9yYWdlTWVtRVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlQnVmZmVyU3RvcmFnZU1lbUVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5LApA
QCAtMzQxMSw3ICszMjY3LDkgQEAgYm9vbCBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2VNZW1FWFQoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVDcmVh
dGVNZW1vcnlPYmplY3RzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgTWVtb3J5T2Jq
ZWN0SUQgKm1lbW9yeU9iamVjdHMpCitib29sIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VY
VChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkubWVtb3J5T2JqZWN0KQogICAgIHsKQEAgLTM0MjIsNyArMzI4MCw3IEBA
IGJvb2wgVmFsaWRhdGVDcmVhdGVNZW1vcnlPYmplY3RzRVhUKENvbnRleHQgKmNvbnRleHQsIEdM
c2l6ZWkgbiwgTWVtb3J5T2JqZWN0SUQKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShj
b250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZU1lbW9yeU9iamVjdHNFWFQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWxldGVNZW1vcnlPYmplY3RzRVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZW1v
cnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0cykKIHsKQEAgLTM0MzUsMTAgKzMyOTMsMTAgQEAgYm9v
bCBWYWxpZGF0ZURlbGV0ZU1lbW9yeU9iamVjdHNFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlPYmpl
Y3RJRCBtZW1vcnlPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5tZW1vcnlPYmplY3QpCiAgICAgewpAQCAtMzQ0NiwxMSArMzMwNCwyMiBAQCBi
b29sIFZhbGlkYXRlR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgTWVtb3J5T2JqZWN0ICptZW1vcnkgPSBjb250
ZXh0LT5nZXRNZW1vcnlPYmplY3QobWVtb3J5T2JqZWN0KTsKKyAgICBpZiAobWVtb3J5ID09IG51
bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwga0ludmFsaWRNZW1vcnlPYmplY3QpOworICAgIH0KKworICAgIGlmICghSXNWYWxp
ZE1lbW9yeU9iamVjdFBhcmFtYXRlcihjb250ZXh0LCBwbmFtZSkpCisgICAgeworICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZE1lbW9yeU9i
amVjdFBhcmFtZXRlcik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZXZFWFQoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVieXRlICpkYXRhKQorYm9vbCBWYWxpZGF0ZUdldFVu
c2lnbmVkQnl0ZXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25z
dCBHTHVieXRlICpkYXRhKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1l
bW9yeU9iamVjdCAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnNlbWFwaG9yZSkKICAgICB7
CkBAIC0zNDYyLDcgKzMzMzEsMTAgQEAgYm9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZXZFWFQo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVieXRlICpkYXRhKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVYVChDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWJ5dGUgKmRhdGEpCiti
b29sIFZhbGlkYXRlR2V0VW5zaWduZWRCeXRlaV92RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSAqZGF0YSkKIHsKICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tZW1vcnlPYmplY3QgJiYgIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zZW1hcGhvcmUpCiAgICAgewpAQCAtMzQ3NCw3ICszMzQ2LDcgQEAgYm9vbCBW
YWxpZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVYVChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVJ
c01lbW9yeU9iamVjdEVYVChDb250ZXh0ICpjb250ZXh0LCBNZW1vcnlPYmplY3RJRCBtZW1vcnlP
YmplY3QpCitib29sIFZhbGlkYXRlSXNNZW1vcnlPYmplY3RFWFQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0KQogewogICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLm1lbW9yeU9iamVjdCkKICAgICB7CkBAIC0zNDg1LDcgKzMzNTcsNyBA
QCBib29sIFZhbGlkYXRlSXNNZW1vcnlPYmplY3RFWFQoQ29udGV4dCAqY29udGV4dCwgTWVtb3J5
T2JqZWN0SUQgbWVtb3J5T2JqZWN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1l
bW9yeU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcykKQEAgLTM0OTYsMTEgKzMzNjgsMjkgQEAgYm9vbCBWYWxpZGF0ZU1lbW9y
eU9iamVjdFBhcmFtZXRlcml2RVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIGNvbnN0IE1lbW9yeU9iamVjdCAqbWVtb3J5ID0gY29udGV4dC0+Z2V0TWVtb3J5T2JqZWN0
KG1lbW9yeU9iamVjdCk7CisgICAgaWYgKG1lbW9yeSA9PSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkTWVt
b3J5T2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChtZW1v
cnktPmlzSW1tdXRhYmxlKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbW11dGFibGVNZW1vcnlPYmplY3QpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFJc1ZhbGlkTWVtb3J5T2JqZWN0UGFy
YW1hdGVyKGNvbnRleHQsIHBuYW1lKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkTWVtb3J5T2JqZWN0UGFyYW1ldGVyKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJERVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlVGV4U3RvcmFnZU1lbTJERVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKQEAgLTM1MjYsNyArMzQxNiw3IEBA
IGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTWVtMkRFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogfQogCi1ib29sIFZh
bGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4U3RvcmFnZU1lbTNERVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKQEAgLTM1NDYsNyArMzQzNiw3IEBAIGJvb2wg
VmFsaWRhdGVUZXhTdG9yYWdlTWVtM0RFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbXBvcnRNZW1vcnlGZEVYVChDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlLApAQCAtMzU3MCw3
ICszNDYwLDMxIEBAIGJvb2wgVmFsaWRhdGVJbXBvcnRNZW1vcnlGZEVYVChDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRlU2VtYXBob3Jl
c0VYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFNlbWFwaG9yZUlEICpzZW1h
cGhvcmVzKQorYm9vbCBWYWxpZGF0ZUltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpCit7CisgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWVtb3J5T2JqZWN0RnVjaHNpYUFOR0xFKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBr
RXh0ZW5zaW9uTm90RW5hYmxlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBzd2l0Y2ggKGhhbmRsZVR5cGUpCisgICAgeworICAgICAgICBjYXNlIEhhbmRsZVR5cGU6Olpp
cmNvblZtbzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRIYW5k
bGVUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBTZW1hcGhvcmVJRCAqc2VtYXBob3JlcykKIHsK
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zZW1hcGhvcmUpCiAgICAgewpAQCAt
MzU4MSw3ICszNDk1LDcgQEAgYm9vbCBWYWxpZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQoQ29udGV4
dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBTZW1hcGhvcmVJRAogICAgIHJldHVybiBWYWxp
ZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZhbGlkYXRlR2VuU2VtYXBo
b3Jlc0VYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFNlbWFwaG9yZUlEICpzZW1hcGhv
cmVzKQorYm9vbCBWYWxpZGF0ZUdlblNlbWFwaG9yZXNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuLCBjb25zdCBTZW1hcGhvcmVJRCAqc2VtYXBob3JlcykKIHsKICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zZW1hcGhvcmUpCiAgICAgewpAQCAtMzU5MiwxMCAr
MzUwNiwxMCBAQCBib29sIFZhbGlkYXRlR2VuU2VtYXBob3Jlc0VYVChDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIFNlbWFwaG9yZUlEICpzZW1hcGhvcgogICAgIHJldHVybiBWYWxpZGF0ZUdl
bk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U2VtYXBob3JlUGFy
YW1ldGVydWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTZW1hcGhv
cmVQYXJhbWV0ZXJ1aTY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFt
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQ2NCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnNlbWFw
aG9yZSkKICAgICB7CkBAIC0zNjA3LDcgKzM1MjEsNyBAQCBib29sIFZhbGlkYXRlR2V0U2VtYXBo
b3JlUGFyYW1ldGVydWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgVmFsaWRhdGVJc1NlbWFwaG9yZUVYVChDb250ZXh0ICpjb250ZXh0LCBTZW1h
cGhvcmVJRCBzZW1hcGhvcmUpCitib29sIFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgU2VtYXBob3JlSUQgc2VtYXBob3JlKQogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnNlbWFwaG9yZSkKICAgICB7CkBAIC0zNjE4LDcgKzM1MzIsNyBA
QCBib29sIFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQoQ29udGV4dCAqY29udGV4dCwgU2VtYXBob3Jl
SUQgc2VtYXBob3JlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2VtYXBo
b3JlUGFyYW1ldGVydWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTZW1h
cGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50NjQgKnBhcmFt
cykKQEAgLTM2MzMsNyArMzU0Nyw3IEBAIGJvb2wgVmFsaWRhdGVTZW1hcGhvcmVQYXJhbWV0ZXJ1
aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVNpZ25hbFNlbWFwaG9yZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVNpZ25hbFNlbWFwaG9yZUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnMsCkBAIC0zNjU5LDcg
KzM1NzMsNyBAQCBib29sIFZhbGlkYXRlU2lnbmFsU2VtYXBob3JlRVhUKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXYWl0U2VtYXBob3JlRVhU
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlV2FpdFNlbWFwaG9yZUVYVChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VtYXBob3Jl
SUQgc2VtYXBob3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUJ1
ZmZlckJhcnJpZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVy
SUQgKmJ1ZmZlcnMsCkBAIC0zNjg1LDcgKzM1OTksNyBAQCBib29sIFZhbGlkYXRlV2FpdFNlbWFw
aG9yZUVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlSW1wb3J0U2VtYXBob3JlRmRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVJbXBvcnRTZW1hcGhvcmVGZEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpCkBAIC0zNzA4LDcgKzM2MjIsMzAg
QEAgYm9vbCBWYWxpZGF0ZUltcG9ydFNlbWFwaG9yZUZkRVhUKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXBCdWZmZXJCYXNlKENvbnRleHQg
KmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0KQorYm9vbCBWYWxpZGF0ZUltcG9ydFNlbWFw
aG9yZVppcmNvbkhhbmRsZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3Jl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5
cGUgaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnNlbWFwaG9yZUZ1Y2hzaWFBTkdMRSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChoYW5kbGVUeXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBIYW5kbGVUeXBlOjpaaXJjb25FdmVudDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVy
cm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRIYW5kbGVUeXBlKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0
ZU1hcEJ1ZmZlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJn
ZXQpCiB7CiAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdl
dEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChidWZmZXIgIT0gbnVsbHB0cik7CkBAIC0zNzM4
LDcgKzM2NzUsNyBAQCBib29sIFZhbGlkYXRlTWFwQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0
LCBCdWZmZXJCaW5kaW5nIHRhcmdldCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVu
Z3RoKQpAQCAtMzc1Miw5ICszNjg5LDkgQEAgYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVy
UmFuZ2VFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVGbHVzaE1hcHBl
ZEJ1ZmZlclJhbmdlQmFzZShjb250ZXh0LCB0YXJnZXQsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRVbmlmb3JtTG9jYXRpb24pCkBAIC0zNzY5LDE0ICszNzA2
LDE0IEBAIGJvb2wgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChsb2NhdGlv
biA8IDApCisgICAgaWYgKGxvY2F0aW9uLnZhbHVlIDwgMCkKICAgICB7CiAgICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrTmVnYXRpdmVMb2NhdGlvbik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBDYXBzICZjYXBzID0g
Y29udGV4dC0+Z2V0Q2FwcygpOwotICAgIGlmIChzdGF0aWNfY2FzdDxsb25nPihsb2NhdGlvbikg
Pj0KKyAgICBpZiAoc3RhdGljX2Nhc3Q8bG9uZz4obG9jYXRpb24udmFsdWUpID49CiAgICAgICAg
IChjYXBzLm1heFZlcnRleFVuaWZvcm1WZWN0b3JzICsgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzKSAqIDQpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwga0ludmFsaWRCaW5kVW5pZm9ybUxvY2F0aW9uKTsKQEAgLTM4MDAsNyAr
MzczNyw3IEBAIGJvb2wgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvdmVyYWdl
TW9kdWxhdGlvbkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb21wb25lbnRzKQor
Ym9vbCBWYWxpZGF0ZUNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBjb21wb25lbnRzKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzKQogICAgIHsKQEAgLTM4MjIsODg3ICszNzU5
LDEwOSBAQCBib29sIFZhbGlkYXRlQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIGNvbXBvbmVudHMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIENI
Uk9NSVVNX3BhdGhfcmVuZGVyaW5nCi0KLWJvb2wgVmFsaWRhdGVNYXRyaXhMb2FkZkNIUk9NSVVN
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptYXRy
aXgpCitib29sIFZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgZGVzdElkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxw
aGEpCiB7Ci0gICAgaWYgKCFWYWxpZGF0ZU1hdHJpeE1vZGUoY29udGV4dCwgbWF0cml4TW9kZSkp
CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29weVRleHR1cmUpCiAgICAgewor
ICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtF
eHRlbnNpb25Ob3RFbmFibGVkKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGlmIChtYXRyaXggPT0gbnVsbHB0cikKKyAgICBjb25zdCBUZXh0dXJlICpzb3VyY2UgPSBjb250
ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKKyAgICBpZiAoc291cmNlID09IG51bGxwdHIpCiAg
ICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIGtJbnZhbGlkUGF0aE1hdHJpeCk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFNvdXJjZVRleHR1cmUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVN
YXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWF0cml4
TW9kZSkKLXsKLSAgICByZXR1cm4gVmFsaWRhdGVNYXRyaXhNb2RlKGNvbnRleHQsIG1hdHJpeE1v
ZGUpOwotfQotCi1ib29sIFZhbGlkYXRlR2VuUGF0aHNDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIHJhbmdlKQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBh
dGhSZW5kZXJpbmcpCisgICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVTb3VyY2VUYXJnZXQoY29u
dGV4dCwgc291cmNlLT5nZXRUeXBlKCkpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRh
dGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7Cisg
ICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0lu
dmFsaWRJbnRlcm5hbEZvcm1hdCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICAvLyByYW5nZSA9IDAgaXMgdW5kZWZpbmVkIGluIE5WX3BhdGhfcmVuZGVyaW5nLgotICAgIC8v
IHdlIGFkZCBzdHJpY3RlciBzZW1hbnRpYyBjaGVjayBoZXJlIGFuZCByZXF1aXJlIGEgbm9uIHpl
cm8gcG9zaXRpdmUgcmFuZ2UuCi0gICAgaWYgKHJhbmdlIDw9IDApCisgICAgVGV4dHVyZVR5cGUg
c291cmNlVHlwZSA9IHNvdXJjZS0+Z2V0VHlwZSgpOworICAgIEFTU0VSVChzb3VyY2VUeXBlICE9
IFRleHR1cmVUeXBlOjpDdWJlTWFwKTsKKyAgICBUZXh0dXJlVGFyZ2V0IHNvdXJjZVRhcmdldCA9
IE5vbkN1YmVUZXh0dXJlVHlwZVRvVGFyZ2V0KHNvdXJjZVR5cGUpOworCisgICAgaWYgKCFJc1Zh
bGlkQ29weVRleHR1cmVTb3VyY2VMZXZlbChjb250ZXh0LCBzb3VyY2VUeXBlLCBzb3VyY2VMZXZl
bCkpCiAgICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwga0ludmFsaWRSYW5nZSk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFNvdXJjZVRleHR1cmVMZXZlbCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWFuZ2xlOjpJc1ZhbHVlSW5SYW5nZUZvck51
bWVyaWNUeXBlPHN0ZDo6dWludDMyX3Q+KHJhbmdlKSkKKyAgICBHTHNpemVpIHNvdXJjZVdpZHRo
ICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNvdXJjZS0+Z2V0V2lkdGgoc291cmNlVGFyZ2V0LCBz
b3VyY2VMZXZlbCkpOworICAgIEdMc2l6ZWkgc291cmNlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8R0xz
aXplaT4oc291cmNlLT5nZXRIZWlnaHQoc291cmNlVGFyZ2V0LCBzb3VyY2VMZXZlbCkpOworICAg
IGlmIChzb3VyY2VXaWR0aCA9PSAwIHx8IHNvdXJjZUhlaWdodCA9PSAwKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrSW50ZWdl
ck92ZXJmbG93KTsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCBrSW52YWxpZEludGVybmFsRm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlRGVsZXRlUGF0
aHNDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQYXRoSUQgcGF0aCwgR0xzaXplaSByYW5nZSkK
LXsKLSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQorICAg
IGNvbnN0IEludGVybmFsRm9ybWF0ICZzb3VyY2VGb3JtYXQgPSAqc291cmNlLT5nZXRGb3JtYXQo
c291cmNlVGFyZ2V0LCBzb3VyY2VMZXZlbCkuaW5mbzsKKyAgICBpZiAoIUlzVmFsaWRDb3B5VGV4
dHVyZVNvdXJjZUludGVybmFsRm9ybWF0RW51bShzb3VyY2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQp
KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRTb3VyY2VUZXh0dXJlSW50ZXJu
YWxGb3JtYXQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gcmFuZ2Ug
PSAwIGlzIHVuZGVmaW5lZCBpbiBOVl9wYXRoX3JlbmRlcmluZy4KLSAgICAvLyB3ZSBhZGQgc3Ry
aWN0ZXIgc2VtYW50aWMgY2hlY2sgaGVyZSBhbmQgcmVxdWlyZSBhIG5vbiB6ZXJvIHBvc2l0aXZl
IHJhbmdlLgotICAgIGlmIChyYW5nZSA8PSAwKQorICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJl
RGVzdGluYXRpb25UYXJnZXRFbnVtKGNvbnRleHQsIGRlc3RUYXJnZXQpKQogICAgIHsKLSAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkUmFu
Z2UpOworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBr
SW52YWxpZFRleHR1cmVUYXJnZXQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgYW5nbGU6OkNoZWNrZWROdW1lcmljPHN0ZDo6dWludDMyX3Q+IGNoZWNrZWRSYW5nZShwYXRo
LnZhbHVlKTsKLSAgICBjaGVja2VkUmFuZ2UgKz0gcmFuZ2U7Ci0KLSAgICBpZiAoIWFuZ2xlOjpJ
c1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPHN0ZDo6dWludDMyX3Q+KHJhbmdlKSB8fCAhY2hl
Y2tlZFJhbmdlLklzVmFsaWQoKSkKKyAgICBjb25zdCBUZXh0dXJlICpkZXN0ID0gY29udGV4dC0+
Z2V0VGV4dHVyZShkZXN0SWQpOworICAgIGlmIChkZXN0ID09IG51bGxwdHIpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnRl
Z2VyT3ZlcmZsb3cpOworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwga0ludmFsaWREZXN0aW5hdGlvblRleHR1cmUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIHJldHVybiB0cnVlOwotfQogCi1ib29sIFZhbGlkYXRlUGF0aENvbW1h
bmRzQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXRoSUQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG51bUNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjb29yZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqY29vcmRzKQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhS
ZW5kZXJpbmcpCisgICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvblRhcmdldChj
b250ZXh0LCBkZXN0LT5nZXRUeXBlKCksIGRlc3RUYXJnZXQpKQogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90
RW5hYmxlZCk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCBrSW52YWxpZERlc3RpbmF0aW9uVGV4dHVyZVR5cGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIGlmICghY29udGV4dC0+aXNQYXRoR2VuZXJhdGVkKHBhdGgpKQorCisg
ICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1cmVEZXN0aW5hdGlvbkxldmVsKGNvbnRleHQsIGRlc3Qt
PmdldFR5cGUoKSwgZGVzdExldmVsLCBzb3VyY2VXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSGVpZ2h0LCBmYWxzZSkpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb1N1
Y2hQYXRoKTsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFM
VUUsIGtJbnZhbGlkTWlwTGV2ZWwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKG51bUNvbW1hbmRzIDwgMCkKKyAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3Rp
bmF0aW9uRm9ybWF0VHlwZShjb250ZXh0LCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUpKQogICAg
IHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJ
bnZhbGlkUGF0aE51bUNvbW1hbmRzKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICBlbHNlIGlmIChudW1Db21tYW5kcyA+IDApCi0gICAgewotICAgICAgICBpZiAoIWNvbW1hbmRz
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwga0ludmFsaWRQYXRoQ29tbWFuZHNBcnJheSk7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICBpZiAobnVtQ29vcmRzIDwgMCkKKyAg
ICBpZiAoZGVzdC0+Z2V0VHlwZSgpID09IFRleHR1cmVUeXBlOjpDdWJlTWFwICYmIHNvdXJjZVdp
ZHRoICE9IHNvdXJjZUhlaWdodCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25F
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhOdW1Db29yZHMpOworICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0N1YmVtYXBGYWNlc0Vx
dWFsRGltZW5zaW9ucyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZWxzZSBp
ZiAobnVtQ29vcmRzID4gMCkKLSAgICB7Ci0gICAgICAgIGlmICghY29vcmRzKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
a0ludmFsaWRQYXRoTnVtQ29vcmRzQXJyYXkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQogCi0gICAgc3RkOjp1aW50MzJfdCBjb29yZFR5cGVTaXplID0gMDsK
LSAgICBzd2l0Y2ggKGNvb3JkVHlwZSkKKyAgICBpZiAoZGVzdC0+Z2V0SW1tdXRhYmxlRm9ybWF0
KCkpCiAgICAgewotICAgICAgICBjYXNlIEdMX0JZVEU6Ci0gICAgICAgICAgICBjb29yZFR5cGVT
aXplID0gc2l6ZW9mKEdMYnl0ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgICBjb29yZFR5cGVTaXplID0gc2l6ZW9mKEdM
dWJ5dGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBHTF9TSE9SVDoKLSAg
ICAgICAgICAgIGNvb3JkVHlwZVNpemUgPSBzaXplb2YoR0xzaG9ydCk7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgY29v
cmRUeXBlU2l6ZSA9IHNpemVvZihHTHVzaG9ydCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAgY29vcmRUeXBlU2l6ZSA9IHNpemVvZihH
TGZsb2F0KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFBh
dGhDb29yZGluYXRlVHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgYW5nbGU6OkNoZWNrZWROdW1lcmljPHN0ZDo6dWludDMyX3Q+IGNoZWNrZWRTaXplKG51bUNv
bW1hbmRzKTsKLSAgICBjaGVja2VkU2l6ZSArPSAoY29vcmRUeXBlU2l6ZSAqIG51bUNvb3Jkcyk7
Ci0gICAgaWYgKCFjaGVja2VkU2l6ZS5Jc1ZhbGlkKCkpCi0gICAgewotICAgICAgICBjb250ZXh0
LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnRlZ2VyT3ZlcmZsb3cp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gZWFybHkgcmV0dXJuIHNr
aXBzIGNvbW1hbmQgZGF0YSB2YWxpZGF0aW9uIHdoZW4gaXQgZG9lc24ndCBleGlzdC4KLSAgICBp
ZiAoIWNvbW1hbmRzKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIEdMc2l6ZWkgZXhwZWN0
ZWROdW1Db29yZHMgPSAwOwotICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IG51bUNvbW1hbmRz
OyArK2kpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGNvbW1hbmRzW2ldKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjYXNlIEdMX0NMT1NFX1BBVEhfQ0hST01JVU06ICAvLyBubyBjb29yZGluYXRl
cy4KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xfTU9WRV9UT19D
SFJPTUlVTToKLSAgICAgICAgICAgIGNhc2UgR0xfTElORV9UT19DSFJPTUlVTToKLSAgICAgICAg
ICAgICAgICBleHBlY3RlZE51bUNvb3JkcyArPSAyOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBHTF9RVUFEUkFUSUNfQ1VSVkVfVE9fQ0hST01JVU06Ci0gICAgICAg
ICAgICAgICAgZXhwZWN0ZWROdW1Db29yZHMgKz0gNDsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgR0xfQ1VCSUNfQ1VSVkVfVE9fQ0hST01JVU06Ci0gICAgICAgICAg
ICAgICAgZXhwZWN0ZWROdW1Db29yZHMgKz0gNjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgR0xfQ09OSUNfQ1VSVkVfVE9fQ0hST01JVU06Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0ZWROdW1Db29yZHMgKz0gNTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRQYXRoQ29tbWFuZCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGV4cGVjdGVkTnVtQ29v
cmRzICE9IG51bUNvb3JkcykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhOdW1Db29yZHMpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVQ
YXRoUGFyYW1ldGVyZkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCi17Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkucGF0aFJlbmRlcmluZykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25F
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmICghY29udGV4dC0+aXNQYXRoR2VuZXJhdGVk
KHBhdGgpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCBrTm9TdWNoUGF0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBzd2l0Y2ggKHBuYW1lKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9QQVRIX1NUUk9L
RV9XSURUSF9DSFJPTUlVTToKLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAuMGYpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFM
SURfVkFMVUUsIGtJbnZhbGlkUGF0aFN0cm9rZVdpZHRoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNOgotICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxHTGVudW0+KHZhbHVlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNl
IEdMX0ZMQVRfQ0hST01JVU06Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9TUVVBUkVfQ0hST01J
VU06Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9ST1VORF9DSFJPTUlVTToKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRQ
YXRoRW5kQ2Fwcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1BBVEhfSk9JTl9TVFlM
RV9DSFJPTUlVTToKLSAgICAgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8R0xlbnVtPih2YWx1
ZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9NSVRFUl9SRVZFUlRf
Q0hST01JVU06Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9CRVZFTF9DSFJPTUlVTToKLSAgICAg
ICAgICAgICAgICBjYXNlIEdMX1JPVU5EX0NIUk9NSVVNOgotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFBhdGhKb2luU3R5
bGUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9QQVRIX01JVEVSX0xJTUlUX0NIUk9N
SVVNOgotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMC4wZikKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0lu
dmFsaWRQYXRoTWl0ZXJMaW1pdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBHTF9QQVRIX1NU
Uk9LRV9CT1VORF9DSFJPTUlVTToKLSAgICAgICAgICAgIC8vIG5vIGVycm9ycywgb25seSBjbGFt
cGluZy4KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFBhdGhQ
YXJhbWV0ZXIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZVBhdGhQYXJhbWV0ZXJpQ0hST01JVU0oQ29udGV4dCAq
Y29udGV4dCwgUGF0aElEIHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCi17Ci0gICAg
Ly8gVE9ETyhqbWFkaWxsKTogVXNlIHByb3BlciBjbGFtcGluZyBjYXN0LgotICAgIHJldHVybiBW
YWxpZGF0ZVBhdGhQYXJhbWV0ZXJmQ0hST01JVU0oY29udGV4dCwgcGF0aCwgcG5hbWUsIHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KHZhbHVlKSk7Ci19Ci0KLWJvb2wgVmFsaWRhdGVHZXRQYXRoUGFyYW1l
dGVyZnZDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQYXRoSUQgcGF0aCwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICp2YWx1ZSkKLXsKLSAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
YXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIWNvbnRleHQtPmlzUGF0aEdlbmVyYXRlZChwYXRo
KSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwga05vU3VjaFBhdGgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgaWYgKCF2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFBhdGhWYWx1ZUFycmF5KTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHN3aXRjaCAocG5hbWUpCi0gICAgewotICAgICAgICBjYXNl
IEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX1BBVEhfRU5E
X0NBUFNfQ0hST01JVU06Ci0gICAgICAgIGNhc2UgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVN
OgotICAgICAgICBjYXNlIEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01JVU06Ci0gICAgICAgIGNh
c2UgR0xfUEFUSF9TVFJPS0VfQk9VTkRfQ0hST01JVU06Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdM
X0lOVkFMSURfRU5VTSwga0ludmFsaWRQYXRoUGFyYW1ldGVyKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZUdl
dFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoLCBH
TGVudW0gcG5hbWUsIEdMaW50ICp2YWx1ZSkKLXsKLSAgICByZXR1cm4gVmFsaWRhdGVHZXRQYXRo
UGFyYW1ldGVyZnZDSFJPTUlVTShjb250ZXh0LCBwYXRoLCBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdMZmxvYXQg
Kj4odmFsdWUpKTsKLX0KLQotYm9vbCBWYWxpZGF0ZVBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQotewot
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCi0gICAgewot
ICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtF
eHRlbnNpb25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHN3aXRjaCAoZnVuYykKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfTkVWRVI6Ci0gICAgICAgIGNh
c2UgR0xfQUxXQVlTOgotICAgICAgICBjYXNlIEdMX0xFU1M6Ci0gICAgICAgIGNhc2UgR0xfTEVR
VUFMOgotICAgICAgICBjYXNlIEdMX0VRVUFMOgotICAgICAgICBjYXNlIEdMX0dFUVVBTDoKLSAg
ICAgICAgY2FzZSBHTF9HUkVBVEVSOgotICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZFN0ZW5jaWwpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBOb3Rl
IHRoYXQgdGhlIHNwZWMgc3BlY2lmaWVzIHRoYXQgZm9yIHRoZSBwYXRoIGRyYXdpbmcgY29tbWFu
ZHMKLS8vIGlmIHRoZSBwYXRoIG9iamVjdCBpcyBub3QgYW4gZXhpc3RpbmcgcGF0aCBvYmplY3Qg
dGhlIGNvbW1hbmQKLS8vIGRvZXMgbm90aGluZyBhbmQgbm8gZXJyb3IgaXMgZ2VuZXJhdGVkLgot
Ly8gSG93ZXZlciBpZiB0aGUgcGF0aCBvYmplY3QgZXhpc3RzIGJ1dCBoYXMgbm90IGJlZW4gc3Bl
Y2lmaWVkIGFueQotLy8gY29tbWFuZHMgdGhlbiBhbiBlcnJvciBpcyBnZW5lcmF0ZWQuCi0KLWJv
b2wgVmFsaWRhdGVTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQYXRo
SUQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKLXsKLSAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5wYXRoUmVuZGVyaW5nKQotICAgIHsKLSAgICAgICAgY29udGV4
dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5h
YmxlZCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgaWYgKGNvbnRleHQtPmlz
UGF0aEdlbmVyYXRlZChwYXRoKSAmJiAhY29udGV4dC0+aXNQYXRoKHBhdGgpKQotICAgIHsKLSAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrTm9T
dWNoUGF0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGZp
bGxNb2RlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9JTlZFUlQ6Ci0gICAgICAgIGNhc2UgR0xf
Q09VTlRfVVBfQ0hST01JVU06Ci0gICAgICAgIGNhc2UgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTToK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4
dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFsaWRGaWxsTW9kZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFpc1BvdzIobWFzayAr
IDEpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURf
VkFMVUUsIGtJbnZhbGlkU3RlbmNpbEJpdE1hc2spOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVTdGVuY2lsU3Ryb2tl
UGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoLCBHTGludCByZWZlcmVu
Y2UsIEdMdWludCBtYXNrKQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBh
dGhSZW5kZXJpbmcpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChjb250ZXh0LT5pc1BhdGhHZW5lcmF0ZWQocGF0aCkg
JiYgIWNvbnRleHQtPmlzUGF0aChwYXRoKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlk
YXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga05vUGF0aE9yTm9QYXRoRGF0YSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBWYWxpZGF0ZUNvdmVyUGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRo
LCBHTGVudW0gY292ZXJNb2RlKQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnBhdGhSZW5kZXJpbmcpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoY29udGV4dC0+aXNQYXRoR2VuZXJhdGVkKHBhdGgp
ICYmICFjb250ZXh0LT5pc1BhdGgocGF0aCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb1N1Y2hQYXRoKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHN3aXRjaCAoY292ZXJNb2RlKQotICAgIHsKLSAg
ICAgICAgY2FzZSBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9CT1VO
RElOR19CT1hfQ0hST01JVU06Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJ
bnZhbGlkQ292ZXJNb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVDb3ZlckZpbGxQYXRoQ0hST01JVU0oQ29u
dGV4dCAqY29udGV4dCwgUGF0aElEIHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgcmV0
dXJuIFZhbGlkYXRlQ292ZXJQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aCwgY292ZXJNb2RlKTsK
LX0KLQotYm9vbCBWYWxpZGF0ZUNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKENvbnRleHQgKmNvbnRl
eHQsIFBhdGhJRCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQotewotICAgIHJldHVybiBWYWxpZGF0
ZUNvdmVyUGF0aENIUk9NSVVNKGNvbnRleHQsIHBhdGgsIGNvdmVyTW9kZSk7Ci19Ci0KLWJvb2wg
VmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY292ZXJNb2RlKQotewotICAgIHJldHVybiBWYWxpZGF0ZVN0ZW5jaWxGaWxs
UGF0aENIUk9NSVVNKGNvbnRleHQsIHBhdGgsIGZpbGxNb2RlLCBtYXNrKSAmJgotICAgICAgICAg
ICBWYWxpZGF0ZUNvdmVyUGF0aENIUk9NSVVNKGNvbnRleHQsIHBhdGgsIGNvdmVyTW9kZSk7Ci19
Ci0KLWJvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKENvbnRl
eHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXRoSUQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICByZXR1cm4g
VmFsaWRhdGVTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNKGNvbnRleHQsIHBhdGgsIHJlZmVyZW5j
ZSwgbWFzaykgJiYKLSAgICAgICAgICAgVmFsaWRhdGVDb3ZlclBhdGhDSFJPTUlVTShjb250ZXh0
LCBwYXRoLCBjb3Zlck1vZGUpOwotfQotCi1ib29sIFZhbGlkYXRlSXNQYXRoQ0hST01JVU0oQ29u
dGV4dCAqY29udGV4dCwgUGF0aElEIHBhdGgpCi17Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucGF0aFJlbmRlcmluZykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZh
bGlkYXRlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpCi17Ci0gICAgaWYgKCFWYWxpZGF0ZUluc3RhbmNlZFBhdGhQYXJhbWV0ZXJzKGNvbnRleHQs
IG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVz
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChjb3Zlck1vZGUpCi0gICAg
ewotICAgICAgICBjYXNlIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdM
X0JPVU5ESU5HX0JPWF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hfT0Zf
Qk9VTkRJTkdfQk9YRVNfQ0hST01JVU06Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VO
VU0sIGtJbnZhbGlkQ292ZXJNb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZUNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJ
RCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsK
LSAgICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0
aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKGNvdmVyTW9kZSkKLSAgICB7Ci0gICAg
ICAgIGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06Ci0gICAgICAgIGNhc2UgR0xfQk9VTkRJ
TkdfQk9YX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElO
R19CT1hFU19DSFJPTUlVTToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0lu
dmFsaWRDb3Zlck1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhC
YXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0KLSAg
ICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0aHMs
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKGZpbGxNb2RlKQotICAgIHsKLSAgICAgICAg
Y2FzZSBHTF9JTlZFUlQ6Ci0gICAgICAgIGNhc2UgR0xfQ09VTlRfVVBfQ0hST01JVU06Ci0gICAg
ICAgIGNhc2UgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTToKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfRU5VTSwga0ludmFsaWRGaWxsTW9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIGlmICghaXNQb3cyKG1hc2sgKyAxKSkKLSAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxpZFN0ZW5jaWxCaXRN
YXNrKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oQ29udGV4
dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZl
cmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAg
IGlmICghVmFsaWRhdGVJbnN0YW5jZWRQYXRoUGFyYW1ldGVycyhjb250ZXh0LCBudW1QYXRocywg
cGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIG5vIG1vcmUgdmFsaWRhdGlvbiBoZXJlLgotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIGlmICghVmFsaWRhdGVJbnN0
YW5jZWRQYXRoUGFyYW1ldGVycyhjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRo
cywgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHN3aXRjaCAoY292ZXJNb2RlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9DT05WRVhfSFVM
TF9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9CT1VORElOR19CT1hfQ0hST01JVU06Ci0gICAg
ICAgIGNhc2UgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNOgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT52
YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCBrSW52YWxpZENvdmVyTW9kZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoIChmaWxsTW9kZSkKLSAg
ICB7Ci0gICAgICAgIGNhc2UgR0xfSU5WRVJUOgotICAgICAgICBjYXNlIEdMX0NPVU5UX1VQX0NI
Uk9NSVVNOgotICAgICAgICBjYXNlIEdMX0NPVU5UX0RPV05fQ0hST01JVU06Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZhbGlkRmlsbE1vZGUpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAoIWlzUG93MihtYXNrICsgMSkpCi0gICAgewot
ICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFs
aWRTdGVuY2lsQml0TWFzayk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0aEJhc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAg
ICBpZiAoIVZhbGlkYXRlSW5zdGFuY2VkUGF0aFBhcmFtZXRlcnMoY29udGV4dCwgbnVtUGF0aHMs
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKGNvdmVyTW9kZSkKLSAgICB7Ci0gICAgICAg
IGNhc2UgR0xfQ09OVkVYX0hVTExfQ0hST01JVU06Ci0gICAgICAgIGNhc2UgR0xfQk9VTkRJTkdf
Qk9YX0NIUk9NSVVNOgotICAgICAgICBjYXNlIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19C
T1hFU19DSFJPTUlVTToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfRU5VTSwga0ludmFs
aWRDb3Zlck1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNI
Uk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KQotewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhdGhSZW5kZXJpbmcpCi0g
ICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGNvbnN0IEdMaW50IE1heExvY2F0aW9uID0gY29udGV4dC0+Z2V0Q2FwcygpLm1heFZh
cnlpbmdWZWN0b3JzICogNDsKLSAgICBpZiAobG9jYXRpb24gPj0gTWF4TG9jYXRpb24pCi0gICAg
ewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0lu
dmFsaWRWYXJ5aW5nTG9jYXRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgY29uc3QgYXV0byAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW1Ob1Jlc29s
dmVMaW5rKHByb2dyYW0pOwotICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICB7Ci0gICAgICAg
IGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga1Byb2dyYW1O
b3RCb3VuZCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIW5hbWUp
Ci0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwga01pc3NpbmdOYW1lKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
IChhbmdsZTo6QmVnaW5zV2l0aChuYW1lLCAiZ2xfIikpCi0gICAgewotICAgICAgICBjb250ZXh0
LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOYW1lQmVnaW5zV2l0aEdM
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtEZXN0aW5hdGlvbkltbXV0YWJsZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpj
b2VmZnMpCi17Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGF0aFJlbmRlcmlu
ZykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgY29uc3QgYXV0byAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dy
YW1SZXNvbHZlTGluayhwcm9ncmFtKTsKLSAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgcHJvZ3Jh
bU9iamVjdC0+aXNGbGFnZ2VkRm9yRGVsZXRpb24oKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga1Byb2dyYW1Eb2VzTm90RXhp
c3QpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0LT5pc0xpbmtlZCgpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrUHJvZ3JhbU5vdExpbmtlZCk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGdlbk1vZGUpCi0gICAgewotICAgICAgICBj
YXNlIEdMX05PTkU6Ci0gICAgICAgICAgICBpZiAoY29tcG9uZW50cyAhPSAwKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCBrSW52YWxpZENvbXBvbmVudHMpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgR0xf
T0JKRUNUX0xJTkVBUl9DSFJPTUlVTToKLSAgICAgICAgY2FzZSBHTF9FWUVfTElORUFSX0NIUk9N
SVVNOgotICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0NIUk9NSVVNOgotICAgICAgICAgICAgaWYg
KGNvbXBvbmVudHMgPCAxIHx8IGNvbXBvbmVudHMgPiA0KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52
YWxpZENvbXBvbmVudHMpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmICghY29lZmZzKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52YWxp
ZFBhdGhDb2VmZmljaWVudHNBcnJheSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtJbnZh
bGlkUGF0aEdlbk1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IC8vIElmIHRoZSBsb2NhdGlvbiBpcyAtMSB0aGVuIHRoZSBjb21tYW5kIGlzIHNpbGVudGx5IGln
bm9yZWQKLSAgICAvLyBhbmQgbm8gZnVydGhlciB2YWxpZGF0aW9uIGlzIG5lZWRlZC4KLSAgICBp
ZiAobG9jYXRpb24gPT0gLTEpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgYXV0
byAmYmluZGluZyA9IHByb2dyYW1PYmplY3QtPmdldEZyYWdtZW50SW5wdXRCaW5kaW5nSW5mbyhs
b2NhdGlvbik7Ci0KLSAgICBpZiAoIWJpbmRpbmcudmFsaWQpCi0gICAgewotICAgICAgICBjb250
ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnZhbGlkRnJhZ21l
bnRJbnB1dEJpbmRpbmcpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYg
KGJpbmRpbmcudHlwZSAhPSBHTF9OT05FKQotICAgIHsKLSAgICAgICAgR0xpbnQgZXhwZWN0ZWRD
b21wb25lbnRzID0gMDsKLSAgICAgICAgc3dpdGNoIChiaW5kaW5nLnR5cGUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRDb21w
b25lbnRzID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xf
RkxPQVRfVkVDMjoKLSAgICAgICAgICAgICAgICBleHBlY3RlZENvbXBvbmVudHMgPSAyOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOgotICAg
ICAgICAgICAgICAgIGV4cGVjdGVkQ29tcG9uZW50cyA9IDM7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6Ci0gICAgICAgICAgICAgICAgZXhw
ZWN0ZWRDb21wb25lbnRzID0gNDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBrRnJhZ21lbnRJbnB1dFR5cGVOb3RGbG9hdGluZ1BvaW50KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4cGVj
dGVkQ29tcG9uZW50cyAhPSBjb21wb25lbnRzICYmIGdlbk1vZGUgIT0gR0xfTk9ORSkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCBrSW52YWxpZFBhdGhDb21wb25lbnRzKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0
ZUNvcHlUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZUlEIGRlc3RJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGRlc3RMZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja0ZsaXBZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKQotewotICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmNvcHlUZXh0dXJlKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxl
ZCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBjb25zdCBUZXh0dXJlICpz
b3VyY2UgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKLSAgICBpZiAoc291cmNlID09
IG51bGxwdHIpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwga0ludmFsaWRTb3VyY2VUZXh0dXJlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFyZ2V0KGNvbnRl
eHQsIHNvdXJjZS0+Z2V0VHlwZSgpKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludmFsaWRJbnRlcm5hbEZvcm1hdCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBUZXh0dXJlVHlwZSBzb3VyY2VUeXBl
ID0gc291cmNlLT5nZXRUeXBlKCk7Ci0gICAgQVNTRVJUKHNvdXJjZVR5cGUgIT0gVGV4dHVyZVR5
cGU6OkN1YmVNYXApOwotICAgIFRleHR1cmVUYXJnZXQgc291cmNlVGFyZ2V0ID0gTm9uQ3ViZVRl
eHR1cmVUeXBlVG9UYXJnZXQoc291cmNlVHlwZSk7Ci0KLSAgICBpZiAoIUlzVmFsaWRDb3B5VGV4
dHVyZVNvdXJjZUxldmVsKGNvbnRleHQsIHNvdXJjZVR5cGUsIHNvdXJjZUxldmVsKSkKLSAgICB7
Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52
YWxpZFNvdXJjZVRleHR1cmVMZXZlbCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBHTHNpemVpIHNvdXJjZVdpZHRoICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNvdXJjZS0+
Z2V0V2lkdGgoc291cmNlVGFyZ2V0LCBzb3VyY2VMZXZlbCkpOwotICAgIEdMc2l6ZWkgc291cmNl
SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oc291cmNlLT5nZXRIZWlnaHQoc291cmNlVGFy
Z2V0LCBzb3VyY2VMZXZlbCkpOwotICAgIGlmIChzb3VyY2VXaWR0aCA9PSAwIHx8IHNvdXJjZUhl
aWdodCA9PSAwKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBrSW52YWxpZEludGVybmFsRm9ybWF0KTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZzb3VyY2VGb3JtYXQg
PSAqc291cmNlLT5nZXRGb3JtYXQoc291cmNlVGFyZ2V0LCBzb3VyY2VMZXZlbCkuaW5mbzsKLSAg
ICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZVNvdXJjZUludGVybmFsRm9ybWF0RW51bShzb3VyY2VG
b3JtYXQuaW50ZXJuYWxGb3JtYXQpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlv
bkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrSW52YWxpZFNvdXJjZVRleHR1cmVJbnRlcm5h
bEZvcm1hdCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoIUlzVmFs
aWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uVGFyZ2V0RW51bShjb250ZXh0LCBkZXN0VGFyZ2V0KSkK
LSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0s
IGtJbnZhbGlkVGV4dHVyZVRhcmdldCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBjb25zdCBUZXh0dXJlICpkZXN0ID0gY29udGV4dC0+Z2V0VGV4dHVyZShkZXN0SWQpOwot
ICAgIGlmIChkZXN0ID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0ludmFsaWREZXN0aW5hdGlvblRleHR1cmUpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKCFJc1ZhbGlkQ29weVRleHR1
cmVEZXN0aW5hdGlvblRhcmdldChjb250ZXh0LCBkZXN0LT5nZXRUeXBlKCksIGRlc3RUYXJnZXQp
KQotICAgIHsKLSAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFM
VUUsIGtJbnZhbGlkRGVzdGluYXRpb25UZXh0dXJlVHlwZSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICBpZiAoIUlzVmFsaWRDb3B5VGV4dHVyZURlc3RpbmF0aW9uTGV2ZWwo
Y29udGV4dCwgZGVzdC0+Z2V0VHlwZSgpLCBkZXN0TGV2ZWwsIHNvdXJjZVdpZHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VIZWlnaHQsIGZhbHNl
KSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCBrSW52YWxpZE1pcExldmVsKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGlmICghSXNWYWxpZENvcHlUZXh0dXJlRGVzdGluYXRpb25Gb3JtYXRUeXBlKGNvbnRleHQs
IGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKGRlc3QtPmdldFR5cGUoKSA9PSBUZXh0dXJlVHlwZTo6Q3ViZU1h
cCAmJiBzb3VyY2VXaWR0aCAhPSBzb3VyY2VIZWlnaHQpCi0gICAgewotICAgICAgICBjb250ZXh0
LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0N1YmVtYXBGYWNlc0VxdWFsRGlt
ZW5zaW9ucyk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzdC0+
Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtEZXN0aW5hdGlvbkltbXV0YWJsZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBW
YWxpZGF0ZUNvcHlTdWJUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgc291cmNlSWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldCwK
QEAgLTQ4MzUsNyArMzk5NCw5IEBAIGJvb2wgVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVN
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVD
b21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQg
c291cmNlSWQsIFRleHR1cmVJRCBkZXN0SWQpCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZENvcHlU
ZXh0dXJlQ0hST01JVU0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgc291cmNlSWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIGRlc3RJZCkKIHsKICAg
ICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5jb3B5Q29tcHJlc3NlZFRleHR1cmUpCiAg
ICAgewpAQCAtNDg0Myw3ICs0MDA0LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4
dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCBzb3VyY2VJZCwKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2Ug
PSBjb250ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKKyAgICBjb25zdCBUZXh0dXJlICpzb3Vy
Y2UgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHNvdXJjZUlkKTsKICAgICBpZiAoc291cmNlID09IG51
bGxwdHIpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwga0ludmFsaWRTb3VyY2VUZXh0dXJlKTsKQEAgLTQ4NjMsMTQgKzQwMjQsMTQgQEAg
Ym9vbCBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRl
eHQsIFRleHR1cmVJRCBzb3VyY2VJZCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGNvbnN0IGdsOjpGb3JtYXQgJnNvdXJjZUZvcm1hdCA9IHNvdXJjZS0+Z2V0Rm9ybWF0KFRl
eHR1cmVUYXJnZXQ6Ol8yRCwgMCk7CisgICAgY29uc3QgRm9ybWF0ICZzb3VyY2VGb3JtYXQgPSBz
b3VyY2UtPmdldEZvcm1hdChUZXh0dXJlVGFyZ2V0OjpfMkQsIDApOwogICAgIGlmICghc291cmNl
Rm9ybWF0LmluZm8tPmNvbXByZXNzZWQpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtTb3VyY2VUZXh0dXJlTXVzdEJlQ29tcHJl
c3NlZCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6VGV4
dHVyZSAqZGVzdCA9IGNvbnRleHQtPmdldFRleHR1cmUoZGVzdElkKTsKKyAgICBjb25zdCBUZXh0
dXJlICpkZXN0ID0gY29udGV4dC0+Z2V0VGV4dHVyZShkZXN0SWQpOwogICAgIGlmIChkZXN0ID09
IG51bGxwdHIpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwga0ludmFsaWREZXN0aW5hdGlvblRleHR1cmUpOwpAQCAtNDg5Miw3ICs0MDUz
LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQg
KmNvbnRleHQsIFRleHR1cmVJRCBzb3VyY2VJZCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUNyZWF0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJUeXBlIHR5cGUp
Citib29sIFZhbGlkYXRlQ3JlYXRlU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRl
clR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewpAQCAtNDkyMyw3ICs0MDg0
LDcgQEAgYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJU
eXBlIHR5cGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCdWZmZXJEYXRh
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQnVmZmVyRGF0YShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLApAQCAtNDk4NCw3ICs0MTQ1LDcgQEAgYm9vbCBW
YWxpZGF0ZUJ1ZmZlckRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWlwdHIgc2l6ZSwKQEAgLTUwNDcsNyArNDIwOCw3IEBAIGJvb2wgVmFsaWRhdGVCdWZmZXJTdWJE
YXRhKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpu
YW1lKQorYm9vbCBWYWxpZGF0ZVJlcXVlc3RFeHRlbnNpb25BTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucmVxdWVzdEV4dGVuc2lvbikKICAgICB7CkBAIC01MDY0LDcgKzQyMjUsNyBAQCBi
b29sIFZhbGlkYXRlUmVxdWVzdEV4dGVuc2lvbkFOR0xFKENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMY2hhciAqbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURpc2Fi
bGVFeHRlbnNpb25BTkdMRShDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpCiti
b29sIFZhbGlkYXRlRGlzYWJsZUV4dGVuc2lvbkFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5yZXF1ZXN0RXh0ZW5zaW9uKQogICAgIHsKQEAgLTUwODEsNyArNDI0Miw3IEBAIGJvb2wgVmFs
aWRhdGVEaXNhYmxlRXh0ZW5zaW9uQU5HTEUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFy
ICpuYW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQWN0aXZlVGV4dHVy
ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSkKK2Jvb2wgVmFsaWRhdGVBY3RpdmVU
ZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlKQogewogICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDIpCiAgICAgewpAQCAtNTA5OSw3
ICs0MjYwLDcgQEAgYm9vbCBWYWxpZGF0ZUFjdGl2ZVRleHR1cmUoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRleHR1cmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVBdHRh
Y2hTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFNoYWRl
clByb2dyYW1JRCBzaGFkZXIpCitib29sIFZhbGlkYXRlQXR0YWNoU2hhZGVyKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBTaGFkZXJQcm9ncmFtSUQgc2hh
ZGVyKQogewogICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29u
dGV4dCwgcHJvZ3JhbSk7CiAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQpAQCAtNTEyMiw3ICs0Mjgz
LDcgQEAgYm9vbCBWYWxpZGF0ZUF0dGFjaFNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwgU2hhZGVyUHJvZ3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUJpbmRBdHRyaWJMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUJpbmRBdHRyaWJMb2NhdGlvbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCkBAIC01MTYwLDcgKzQzMjEsNyBAQCBi
b29sIFZhbGlkYXRlQmluZEF0dHJpYkxvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKSAhPSBudWxscHRyOwogfQogCi1i
b29sIFZhbGlkYXRlQmluZEZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIpCitib29sIFZhbGlkYXRlQmluZEZyYW1lYnVm
ZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEZyYW1lYnVmZmVySUQg
ZnJhbWVidWZmZXIpCiB7CiAgICAgaWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KGNvbnRleHQs
IHRhcmdldCkpCiAgICAgewpAQCAtNTE3OCw3ICs0MzM5LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRG
cmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBGcmFtZWJ1ZmZlcklE
IGZyYW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRSZW5kZXJidWZm
ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgUmVuZGVyYnVmZmVySUQgcmVuZGVy
YnVmZmVyKQorYm9vbCBWYWxpZGF0ZUJpbmRSZW5kZXJidWZmZXIoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKQogewogICAg
IGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQogICAgIHsKQEAgLTUyMTQsMTIgKzQzNzUs
MTYgQEAgc3RhdGljIGJvb2wgVmFsaWRCbGVuZEVxdWF0aW9uTW9kZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gbW9kZSkKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGVuZENvbG9y
KENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJs
dWUsIEdMZmxvYXQgYWxwaGEpCitib29sIFZhbGlkYXRlQmxlbmRDb2xvcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBhbHBoYSkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb24oQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSkKIHsKICAgICBpZiAoIVZhbGlkQmxlbmRF
cXVhdGlvbk1vZGUoY29udGV4dCwgbW9kZSkpCiAgICAgewpAQCAtNTIzMCw3ICs0Mzk1LDcgQEAg
Ym9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb24oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJh
dGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCiti
b29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKQogewogICAgIGlmICghVmFsaWRCbGVu
ZEVxdWF0aW9uTW9kZShjb250ZXh0LCBtb2RlUkdCKSkKICAgICB7CkBAIC01MjQ3LDEyICs0NDEy
LDEyIEBAIGJvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGUoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVCbGVuZEZ1bmMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHNmYWN0b3IsIEdM
ZW51bSBkZmFjdG9yKQorYm9vbCBWYWxpZGF0ZUJsZW5kRnVuYyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCiB7CiAgICAgcmV0dXJuIFZhbGlk
YXRlQmxlbmRGdW5jU2VwYXJhdGUoY29udGV4dCwgc2ZhY3RvciwgZGZhY3Rvciwgc2ZhY3Rvciwg
ZGZhY3Rvcik7CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKQEAgLTUzMTAsNyArNDQ3NSw3IEBA
IGJvb2wgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U3RyaW5nKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBuYW1lKQorYm9vbCBWYWxpZGF0ZUdldFN0cmluZyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gbmFtZSkKIHsKICAgICBzd2l0Y2ggKG5hbWUpCiAgICAgewpAQCAtNTMzNyw3
ICs0NTAyLDcgQEAgYm9vbCBWYWxpZGF0ZUdldFN0cmluZyhDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gbmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbmVXaWR0aChD
b250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHdpZHRoKQorYm9vbCBWYWxpZGF0ZUxpbmVXaWR0aChj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHdpZHRoKQogewogICAgIGlmICh3aWR0aCA8
PSAwLjBmIHx8IGlzTmFOKHdpZHRoKSkKICAgICB7CkBAIC01MzQ4LDcgKzQ1MTMsNyBAQCBib29s
IFZhbGlkYXRlTGluZVdpZHRoKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgd2lkdGgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZXB0aFJhbmdlZihDb250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IHpOZWFyLCBHTGZsb2F0IHpGYXIpCitib29sIFZhbGlkYXRlRGVwdGhSYW5n
ZWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB6TmVhciwgR0xmbG9hdCB6RmFyKQog
ewogICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5ICYm
IHpOZWFyID4gekZhcikKICAgICB7CkBAIC01MzU5LDcgKzQ1MjQsNyBAQCBib29sIFZhbGlkYXRl
RGVwdGhSYW5nZWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB6TmVhciwgR0xmbG9hdCB6RmFy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFn
ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLApAQCAtNTM2OSw3ICs0NTM0LDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC01NDA5LDcgKzQ1NzQsNyBA
QCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCitib29sIFZhbGlkYXRl
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0KQogewogICAgIGlmICghVmFsaWRGcmFtZWJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQp
KQogICAgIHsKQEAgLTU0MjAsMjIgKzQ1ODUsMjYgQEAgYm9vbCBWYWxpZGF0ZUNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyQ29sb3IoQ29udGV4dCAqY29udGV4dCwgR0xm
bG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSkKK2Jv
b2wgVmFsaWRhdGVDbGVhckNvbG9yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IGFscGhhKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlQ2xlYXJEZXB0aGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBkZXB0
aCkKK2Jvb2wgVmFsaWRhdGVDbGVhckRlcHRoZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZs
b2F0IGRlcHRoKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXJT
dGVuY2lsKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHMpCitib29sIFZhbGlkYXRlQ2xlYXJTdGVu
Y2lsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHMpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvck1hc2soQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVDb2xvck1hc2soY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGdy
ZWVuLAogICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYmx1ZSwKQEAgLTU0NDQsMTcg
KzQ2MTMsMTcgQEAgYm9vbCBWYWxpZGF0ZUNvbG9yTWFzayhDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29tcGlsZVNoYWRlcihDb250ZXh0ICpj
b250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyKQorYm9vbCBWYWxpZGF0ZUNvbXBpbGVTaGFk
ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW0oQ29udGV4dCAq
Y29udGV4dCkKK2Jvb2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDdWxsRmFjZShDb250
ZXh0ICpjb250ZXh0LCBDdWxsRmFjZU1vZGUgbW9kZSkKK2Jvb2wgVmFsaWRhdGVDdWxsRmFjZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBDdWxsRmFjZU1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2gg
KG1vZGUpCiAgICAgewpAQCAtNTQ3MSw3ICs0NjQwLDcgQEAgYm9vbCBWYWxpZGF0ZUN1bGxGYWNl
KENvbnRleHQgKmNvbnRleHQsIEN1bGxGYWNlTW9kZSBtb2RlKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSkKK2Jvb2wgVmFsaWRhdGVEZWxldGVQcm9ncmFtKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQogewogICAgIGlmIChwcm9ncmFt
LnZhbHVlID09IDApCiAgICAgewpAQCAtNTQ5NSw3ICs0NjY0LDcgQEAgYm9vbCBWYWxpZGF0ZURl
bGV0ZVByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVTaGFkZXIoQ29udGV4dCAq
Y29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKK2Jvb2wgVmFsaWRhdGVEZWxldGVTaGFk
ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKIHsKICAg
ICBpZiAoc2hhZGVyLnZhbHVlID09IDApCiAgICAgewpAQCAtNTUxOSw3ICs0Njg4LDcgQEAgYm9v
bCBWYWxpZGF0ZURlbGV0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQg
c2hhZGVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVwdGhGdW5jKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jKQorYm9vbCBWYWxpZGF0ZURlcHRoRnVuYyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYykKIHsKICAgICBzd2l0Y2ggKGZ1bmMpCiAg
ICAgewpAQCAtNTU0MSwxMiArNDcxMCwxMiBAQCBib29sIFZhbGlkYXRlRGVwdGhGdW5jKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBmdW5jKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlRGVwdGhNYXNrKENvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKQorYm9vbCBW
YWxpZGF0ZURlcHRoTWFzayhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJvb2xlYW4gZmxhZykK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURldGFjaFNoYWRlcihDb250
ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgU2hhZGVyUHJvZ3JhbUlEIHNo
YWRlcikKK2Jvb2wgVmFsaWRhdGVEZXRhY2hTaGFkZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIFNoYWRlclByb2dyYW1JRCBzaGFkZXIpCiB7CiAgICAg
UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFt
KTsKICAgICBpZiAoIXByb2dyYW1PYmplY3QpCkBAIC01NTcwLDcgKzQ3MzksNyBAQCBib29sIFZh
bGlkYXRlRGV0YWNoU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLCBTaGFkZXJQcm9ncgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCkKK2Jv
b2wgVmFsaWRhdGVEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMp
CiAgICAgewpAQCAtNTU4MSw3ICs0NzUwLDcgQEAgYm9vbCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgpCitib29sIFZhbGlkYXRlRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KQogewogICAgIGlmIChpbmRl
eCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCiAgICAgewpAQCAtNTU5MiwxNyArNDc2MSwxNyBAQCBi
b29sIFZhbGlkYXRlRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRmluaXNoKENv
bnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRlRmluaXNoKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGbHVzaChDb250ZXh0
ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUZsdXNoKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcm9udEZhY2UoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlRnJvbnRGYWNlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkKICAgICB7CkBA
IC01NjE3LDE0ICs0Nzg2LDE0IEBAIGJvb2wgVmFsaWRhdGVGcm9udEZhY2UoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIG1vZGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRBY3RpdmVBdHRyaWIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVB
dHRyaWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZz
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2hhciAqbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICp0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKGJ1
ZnNpemUgPCAwKQogICAgIHsKQEAgLTU2NDgsMTQgKzQ4MTcsMTQgQEAgYm9vbCBWYWxpZGF0ZUdl
dEFjdGl2ZUF0dHJpYihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZVVuaWZvcm0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Y2hhciAqbmFtZSkKIHsKICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgewpAQCAtNTY3OSwxMSAr
NDg0OCwxMSBAQCBib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJz
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIG1heGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpj
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEICpz
aGFkZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyUHJvZ3Jh
bUlEICpzaGFkZXJzKQogewogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgewpAQCAtNTcwMSw3
ICs0ODcwLDcgQEAgYm9vbCBWYWxpZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QXR0cmliTG9jYXRp
b24oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnN0IEdMY2hh
ciAqbmFtZSkKK2Jvb2wgVmFsaWRhdGVHZXRBdHRyaWJMb2NhdGlvbihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKQogewog
ICAgIC8vIFRoZSBXZWJHTCBzcGVjIChzZWN0aW9uIDYuMjApIGRpc2FsbG93cyBzdHJpbmdzIGNv
bnRhaW5pbmcgaW52YWxpZCBFU1NMIGNoYXJhY3RlcnMgZm9yCiAgICAgLy8gc2hhZGVyLXJlbGF0
ZWQgZW50cnkgcG9pbnRzCkBAIC01NzI4LDM3ICs0ODk3LDM3IEBAIGJvb2wgVmFsaWRhdGVHZXRB
dHRyaWJMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwg
Y29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW52KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpCitib29sIFZh
bGlkYXRlR2V0Qm9vbGVhbnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGJvb2xlYW4gKnBhcmFtcykKIHsKICAgICBHTGVudW0gbmF0aXZlVHlwZTsKICAgICB1
bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKICAgICByZXR1cm4gVmFsaWRhdGVTdGF0ZVF1ZXJ5
KGNvbnRleHQsIHBuYW1lLCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcyk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRFcnJvcihDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUdldEVycm9yKGNv
bnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRGbG9hdHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpw
YXJhbXMpCitib29sIFZhbGlkYXRlR2V0RmxvYXR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIEdMZW51bSBuYXRpdmVU
eXBlOwogICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOwogICAgIHJldHVybiBWYWxpZGF0
ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldEludGVnZXJ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgR0xl
bnVtIG5hdGl2ZVR5cGU7CiAgICAgdW5zaWduZWQgaW50IG51bVBhcmFtcyA9IDA7CiAgICAgcmV0
dXJuIFZhbGlkYXRlU3RhdGVRdWVyeShjb250ZXh0LCBwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1Q
YXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUluZm9Mb2coQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtSW5mb0xvZyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvbG9nKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKmluZm9sb2cpCiB7CiAgICAgaWYgKGJ1ZnNpemUgPCAw
KQogICAgIHsKQEAgLTU3NzUsMTEgKzQ5NDQsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1J
bmZvTG9nKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRTaGFkZXJJbmZvTG9nKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0
U2hhZGVySW5mb0xvZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAq
aW5mb2xvZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqaW5mb2xv
ZykKIHsKICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgewpAQCAtNTc5NiwxMSArNDk2NSwxMSBA
QCBib29sIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcHJlY2lzaW9udHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnJhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcHJlY2lzaW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwcmVjaXNpb24pCiB7CiAgICAgc3dpdGNoIChzaGFkZXJ0eXBl
KQogICAgIHsKQEAgLTU4MzMsMTEgKzUwMDIsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0U2hhZGVyU291cmNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0U2hhZGVyU291cmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIg
KnNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnNvdXJjZSkK
IHsKICAgICBpZiAoYnVmc2l6ZSA8IDApCiAgICAgewpAQCAtNTg1NCw3ICs1MDIzLDcgQEAgYm9v
bCBWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybUxvY2F0aW9uKENvbnRleHQgKmNvbnRl
eHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCitib29sIFZh
bGlkYXRlR2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKHN0cnN0cihu
YW1lLCAiZ2xfIikgPT0gbmFtZSkKICAgICB7CkBAIC01ODg1LDcgKzUwNTQsNyBAQCBib29sIFZh
bGlkYXRlR2V0VW5pZm9ybUxvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSGlu
dChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKK2Jvb2wgVmFs
aWRhdGVIaW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBt
b2RlKQogewogICAgIHN3aXRjaCAobW9kZSkKICAgICB7CkBAIC01OTMyLDM3ICs1MTAxLDM3IEBA
IGJvb2wgVmFsaWRhdGVIaW50KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBtb2RlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNCdWZmZXIoQ29u
dGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVmZmVyKQorYm9vbCBWYWxpZGF0ZUlzQnVmZmVyKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwgRnJh
bWVidWZmZXJJRCBmcmFtZWJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVJc0ZyYW1lYnVmZmVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc1Byb2dyYW0oQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCitib29sIFZhbGlkYXRlSXNQcm9ncmFtKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNSZW5kZXJidWZmZXIoQ29udGV4dCAqY29udGV4dCwg
UmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyKQorYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzU2hhZGVyKENvbnRleHQgKmNv
bnRleHQsIFNoYWRlclByb2dyYW1JRCBzaGFkZXIpCitib29sIFZhbGlkYXRlSXNTaGFkZXIoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlcikKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LCBU
ZXh0dXJlSUQgdGV4dHVyZSkKK2Jvb2wgVmFsaWRhdGVJc1RleHR1cmUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVQaXhlbFN0b3JlaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVBpeGVsU3RvcmVpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC02MDQ0LDIyICs1MjEzLDIyIEBAIGJv
b2wgVmFsaWRhdGVQaXhlbFN0b3JlaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9seWdvbk9m
ZnNldChDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKK2Jv
b2wgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
ZmFjdG9yLCBHTGZsb2F0IHVuaXRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlUmVsZWFzZVNoYWRlckNvbXBpbGVyKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlk
YXRlUmVsZWFzZVNoYWRlckNvbXBpbGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQorYm9vbCBWYWxpZGF0ZVNh
bXBsZUNvdmVyYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdmFsdWUsIEdMYm9v
bGVhbiBpbnZlcnQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTY2lz
c29yKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KQorYm9vbCBWYWxpZGF0ZVNjaXNzb3IoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7CiAg
ICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQogICAgIHsKQEAgLTYwNzAsNyArNTIzOSw3
IEBAIGJvb2wgVmFsaWRhdGVTY2lzc29yKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVNoYWRlckJpbmFyeShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNoYWRl
ckJpbmFyeShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlclByb2dy
YW1JRCAqc2hhZGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeWZv
cm1hdCwKQEAgLTYwODgsNyArNTI1Nyw3IEBAIGJvb2wgVmFsaWRhdGVTaGFkZXJCaW5hcnkoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNoYWRl
clNvdXJjZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNoYWRlclNvdXJjZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgc2hhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmcsCkBA
IC02MTI4LDcgKzUyOTcsNyBAQCBib29sIFZhbGlkYXRlU2hhZGVyU291cmNlKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTdGVuY2lsRnVuYyhD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK2Jv
b2wgVmFsaWRhdGVTdGVuY2lsRnVuYyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVu
YywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKIHsKICAgICBpZiAoIUlzVmFsaWRTdGVuY2lsRnVu
YyhmdW5jKSkKICAgICB7CkBAIC02MTM5LDcgKzUzMDgsMTEgQEAgYm9vbCBWYWxpZGF0ZVN0ZW5j
aWxGdW5jKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBt
YXNrKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU3RlbmNpbEZ1bmNTZXBh
cmF0ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJl
ZiwgR0x1aW50IG1hc2spCitib29sIFZhbGlkYXRlU3RlbmNpbEZ1bmNTZXBhcmF0ZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZnVuYywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQogewogICAgIGlmICghSXNWYWxpZFN0ZW5j
aWxGYWNlKGZhY2UpKQogICAgIHsKQEAgLTYxNTYsMTIgKzUzMjksMTIgQEAgYm9vbCBWYWxpZGF0
ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51
bSBmdW5jLCBHTGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxN
YXNrKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrKQorYm9vbCBWYWxpZGF0ZVN0ZW5jaWxN
YXNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU3RlbmNpbE1hc2tTZXBhcmF0ZShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spCitib29sIFZhbGlkYXRlU3RlbmNpbE1hc2tT
ZXBhcmF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0x1aW50IG1hc2sp
CiB7CiAgICAgaWYgKCFJc1ZhbGlkU3RlbmNpbEZhY2UoZmFjZSkpCiAgICAgewpAQCAtNjE3Miw3
ICs1MzQ1LDcgQEAgYm9vbCBWYWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJhdGUoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlU3RlbmNpbE9wKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWlsLCBHTGVu
dW0gemZhaWwsIEdMZW51bSB6cGFzcykKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsT3AoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQog
ewogICAgIGlmICghSXNWYWxpZFN0ZW5jaWxPcChmYWlsKSkKICAgICB7CkBAIC02MTk1LDcgKzUz
NjgsNyBAQCBib29sIFZhbGlkYXRlU3RlbmNpbE9wKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBm
YWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlU3RlbmNpbE9wU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVTdGVuY2lsT3BTZXBhcmF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmYWlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB6ZmFpbCwKQEAgLTYyMTAsNzggKzUzODMsMTEzIEBAIGJvb2wgVmFsaWRhdGVTdGVuY2ls
T3BTZXBhcmF0ZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVN0ZW5jaWxP
cChjb250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9y
bTFmKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgpCitib29sIFZh
bGlkYXRlVW5pZm9ybTFmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwgR0xmbG9hdCB4KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4
dCwgR0xfRkxPQVQsIGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZnYo
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpCitib29sIFZhbGlkYXRlVW5pZm9ybTFmdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250
ZXh0LCBHTF9GTE9BVCwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZv
cm0xaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCkKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtMWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLCBHTGludCB4KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0xaXYoY29udGV4
dCwgbG9jYXRpb24sIDEsICZ4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYoQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQg
KnYpCitib29sIFZhbGlkYXRlVW5pZm9ybTJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBH
TF9GTE9BVF9WRUMyLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9y
bTJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KQor
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0yaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRl
VW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMiwgbG9jYXRpb24sIDEpOwogfQogCi1ib29sIFZh
bGlkYXRlVW5pZm9ybTJpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVW5pZm9ybTJpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiBWYWxpZGF0
ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzIsIGxvY2F0aW9uLCBjb3VudCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtM2YoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZhbGlkYXRlVW5pZm9ybTNmKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LAorICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgeikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZF
QzMsIGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZnYoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
Citib29sIFZhbGlkYXRlVW5pZm9ybTNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9G
TE9BVF9WRUMzLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTNp
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGlu
dCB6KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCiB7CiAgICAg
cmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMywgbG9jYXRpb24sIDEp
OwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTNpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVW5p
Zm9ybTNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2KQogewogICAg
IHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzMsIGxvY2F0aW9uLCBj
b3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNGYoQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykK
K2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB6LAorICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHcpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9GTE9B
VF9WRUM0LCBsb2NhdGlvbiwgMSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNGZ2KENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwg
R0xfRkxPQVRfVkVDNCwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZv
cm00aShDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xpbnQgeiwgR0xpbnQgdykKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6LAorICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB3KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4
dCwgR0xfSU5UX1ZFQzQsIGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm00
aXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm00aXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRl
eHQsIEdMX0lOVF9WRUM0LCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5p
Zm9ybU1hdHJpeDJmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
QEAgLTYyODksOCArNTQ5Nyw4IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChjb250ZXh0LCBH
TF9GTE9BVF9NQVQyLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4M2Z2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
M2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQpAQCAtNjI5OCw4ICs1NTA2LDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgz
ZnYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtTWF0cml4KGNv
bnRleHQsIEdMX0ZMT0FUX01BVDMsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXg0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpCkBAIC02MzA3LDcgKzU1MTUsNyBAQCBib29sIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDRmdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1N
YXRyaXgoY29udGV4dCwgR0xfRkxPQVRfTUFUNCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Up
OwogfQogCi1ib29sIFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtKQorYm9vbCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKIHsKICAgICBQcm9n
cmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwog
CkBAIC02MzE5LDM3ICs1NTI3LDM3IEBAIGJvb2wgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oQ29u
dGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZmxvYXQgeCkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCkKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWIxZnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWZ2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQogewog
ICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQsIGluZGV4KTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMmYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRl
eCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZnYoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xm
bG9hdCAqdmFsdWVzKQogewogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNv
bnRleHQsIGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAgICAgcmV0dXJu
IFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwgaW5kZXgpOwogfQogCi1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliM2Z2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xmbG9hdCAqdmFsdWVzKQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsK
ICAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjRmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHksCkBA
IC02MzU5LDEyICs1NTY3LDEyIEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZihDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQs
IGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWI0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5k
ZXgoY29udGV4dCwgaW5kZXgpOwogfQogCi1ib29sIFZhbGlkYXRlVmlld3BvcnQoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
Citib29sIFZhbGlkYXRlVmlld3BvcnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgaWYgKHdpZHRo
IDwgMCB8fCBoZWlnaHQgPCAwKQogICAgIHsKQEAgLTYzNzUsMjIgKzU1ODMsMjUgQEAgYm9vbCBW
YWxpZGF0ZVZpZXdwb3J0KENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXZCYXNlKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbWl2KENvbnRleHQgKmNvbnRleHQsIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0UHJvZ3JhbWl2QmFzZShjb250
ZXh0LCBwcm9ncmFtLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4
SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTJEKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAt
NjQxMSw3ICs1NjIyLDcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTJEKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4
U3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFn
ZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNl
dCwKQEAgLTY0MzEsNyArNTY0Miw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5b2Zmc2V0LCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAwKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlQ29weVRleFN1YkltYWdlM0RPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtNjQ0NiwyNyArNTY1NywyOSBAQCBi
b29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwogfQogCi1ib29sIFZhbGlk
YXRlRGVsZXRlQnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBCdWZmZXJJ
RCAqYnVmZmVycykKK2Jvb2wgVmFsaWRhdGVEZWxldGVCdWZmZXJzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IG4sIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzKQogewogICAgIHJldHVybiBW
YWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRl
RnJhbWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEZyYW1lYnVmZmVy
SUQgKmZyYW1lYnVmZmVycykKK2Jvb2wgVmFsaWRhdGVEZWxldGVGcmFtZWJ1ZmZlcnMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZm
ZXJzKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQog
Ci1ib29sIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCBuLCBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVycykKK2Jvb2wgVmFsaWRhdGVE
ZWxldGVSZW5kZXJidWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgcmV0dXJu
IFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxl
dGVUZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBUZXh0dXJlSUQgKnRl
eHR1cmVzKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVRleHR1cmVzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMaW50IG4sIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXMpCiB7CiAgICAgcmV0dXJuIFZh
bGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVEaXNhYmxl
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCitib29sIFZhbGlkYXRlRGlzYWJsZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY2FwKQogewogICAgIGlmICghVmFsaWRDYXAoY29u
dGV4dCwgY2FwLCBmYWxzZSkpCiAgICAgewpAQCAtNjQ3Nyw3ICs1NjkwLDcgQEAgYm9vbCBWYWxp
ZGF0ZURpc2FibGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVuYWJsZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY2Fw
KQorYm9vbCBWYWxpZGF0ZUVuYWJsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY2Fw
KQogewogICAgIGlmICghVmFsaWRDYXAoY29udGV4dCwgY2FwLCBmYWxzZSkpCiAgICAgewpAQCAt
NjQ5OSw3ICs1NzEyLDcgQEAgYm9vbCBWYWxpZGF0ZUVuYWJsZShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gY2FwKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwKQEAgLTY1MjEsNyArNTcz
NCw3IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKLWJvb2wgVmFsaWRhdGVG
cmFtZWJ1ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldCwKQEAgLTY1NDQsMTYgKzU3NTcsMTYgQEAg
Ym9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQgKmNvbnRleHQsCiAKICAg
ICBpZiAodGV4dHVyZS52YWx1ZSAhPSAwKQogICAgIHsKLSAgICAgICAgZ2w6OlRleHR1cmUgKnRl
eCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIFRleHR1cmUgKnRleCA9
IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7CiAgICAgICAgIEFTU0VSVCh0ZXgpOwogCi0g
ICAgICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgICAg
ICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwogCiAgICAgICAgIHN3aXRj
aCAodGV4dGFyZ2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIFRleHR1cmVUYXJnZXQ6
Ol8yRDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6bG9n
MihjYXBzLm1heDJEVGV4dHVyZVNpemUpKQorICAgICAgICAgICAgICAgIGlmIChsZXZlbCA+IGxv
ZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW52
YWxpZE1pcExldmVsKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU4
OCw3ICs1ODAxLDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICBjYXNlIFRleHR1cmVUYXJnZXQ6OkN1YmVNYXBQb3NpdGl2
ZVk6CiAgICAgICAgICAgICBjYXNlIFRleHR1cmVUYXJnZXQ6OkN1YmVNYXBQb3NpdGl2ZVo6CiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5t
YXhDdWJlTWFwVGV4dHVyZVNpemUpKQorICAgICAgICAgICAgICAgIGlmIChsZXZlbCA+IGxvZzIo
Y2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJ
bnZhbGlkTWlwTGV2ZWwpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
NjMzLDcgKzU4NDYsNyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVm
ZmVyVGV4dHVyZTNET0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZm
ZXJUZXh0dXJlM0RPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkLApAQCAtNjY2Niwx
NiArNTg3OSwxNiBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMoQ29udGV4
dCAqY29udGV4dCwKIAogICAgIGlmICh0ZXh0dXJlLnZhbHVlICE9IDApCiAgICAgewotICAgICAg
ICBnbDo6VGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAg
ICAgVGV4dHVyZSAqdGV4ID0gY29udGV4dC0+Z2V0VGV4dHVyZSh0ZXh0dXJlKTsKICAgICAgICAg
QVNTRVJUKHRleCk7CiAKLSAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5n
ZXRDYXBzKCk7CisgICAgICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7
CiAKICAgICAgICAgc3dpdGNoICh0ZXh0YXJnZXRQYWNrZWQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNhc2UgVGV4dHVyZVRhcmdldDo6XzNEOgogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGlmIChsZXZlbCA+IGdsOjpsb2cyKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSkpCisgICAgICAg
ICAgICAgICAgaWYgKGxldmVsID4gbG9nMihjYXBzLm1heDNEVGV4dHVyZVNpemUpKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfVkFMVUUsIGtJbnZhbGlkTWlwTGV2ZWwpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02NzAyLDI3ICs1OTE1LDI3IEBAIGJvb2wgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclRleHR1cmUzRE9FUyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2VuQnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBC
dWZmZXJJRCAqYnVmZmVycykKK2Jvb2wgVmFsaWRhdGVHZW5CdWZmZXJzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzKQogewogICAgIHJldHVy
biBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZhbGlkYXRlR2Vu
RnJhbWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIEZyYW1lYnVmZmVySUQgKmZy
YW1lYnVmZmVycykKK2Jvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbiwgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzKQogewog
ICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZh
bGlkYXRlR2VuUmVuZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBSZW5kZXJi
dWZmZXJJRCAqcmVuZGVyYnVmZmVycykKK2Jvb2wgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5k
ZXJidWZmZXJzKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4p
OwogfQogCi1ib29sIFZhbGlkYXRlR2VuVGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQg
biwgVGV4dHVyZUlEICp0ZXh0dXJlcykKK2Jvb2wgVmFsaWRhdGVHZW5UZXh0dXJlcyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBUZXh0dXJlSUQgKnRleHR1cmVzKQogewog
ICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOwogfQogCi1ib29sIFZh
bGlkYXRlR2VuZXJhdGVNaXBtYXAoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0
KQorYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRl
eHR1cmVUeXBlIHRhcmdldCkKIHsKICAgICBpZiAoIVZhbGlkVGV4dHVyZVRhcmdldChjb250ZXh0
LCB0YXJnZXQpKQogICAgIHsKQEAgLTY3NDIsNyArNTk1NSw3IEBAIGJvb2wgVmFsaWRhdGVHZW5l
cmF0ZU1pcG1hcChDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpCiAKICAgICAv
LyBUaGlzIGVycm9yIGlzbid0IHNwZWxsZWQgb3V0IGluIHRoZSBzcGVjIGluIGEgdmVyeSBleHBs
aWNpdCB3YXksIGJ1dCB3ZSBpbnRlcnByZXQgdGhlIHNwZWMgc28KICAgICAvLyB0aGF0IG91dC1v
Zi1yYW5nZSBiYXNlIGxldmVsIGhhcyBhIG5vbi1jb2xvci1yZW5kZXJhYmxlIC8gbm9uLXRleHR1
cmUtZmlsdGVyYWJsZSBmb3JtYXQuCi0gICAgaWYgKGVmZmVjdGl2ZUJhc2VMZXZlbCA+PSBnbDo6
SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQorICAgIGlmIChlZmZlY3RpdmVCYXNl
TGV2ZWwgPj0gSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQogICAgIHsKICAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrQmFzZUxl
dmVsT3V0T2ZSYW5nZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY4MTUsNDEgKzYwMjgs
NTAgQEAgYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwKENvbnRleHQgKmNvbnRleHQsIFRleHR1
cmVUeXBlIHRhcmdldCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEJ1
ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QnVmZmVy
UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFt
ZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgZmFsc2UsIG51bGxwdHIpOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dkJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRTaGFkZXJpdihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0U2hhZGVyaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgc2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVy
biBWYWxpZGF0ZUdldFNoYWRlcml2QmFzZShjb250ZXh0LCBzaGFkZXIsIHBuYW1lLCBudWxscHRy
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQs
IFRleHR1cmVUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCitib29s
IFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVH
ZXRUZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIpOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwgVGV4dHVy
ZVR5cGUgdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRl
R2V0VGV4UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VGV4UGFyYW1l
dGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldFRleFBhcmFtZXRlcklpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUdldFRleFBhcmFtZXRlcklpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTY4NTksMTAgKzYwODEsMTAgQEAg
Ym9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklpdk9FUyhDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFt
ZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdk9FUyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKQEAgLTY4NzIsMzUgKzYwOTQsNDcgQEAgYm9vbCBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlckl1aXZPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRU
ZXhQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0VW5pZm9ybWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAg
ICByZXR1cm4gVmFsaWRhdGVHZXRVbmlmb3JtQmFzZShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlv
bik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtaXYoQ29udGV4dCAqY29udGV4dCwgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKQorYm9v
bCBWYWxpZGF0ZUdldFVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldFVu
aWZvcm1CYXNlKGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYmZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVt
IHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykK
IHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnRleHQsIGluZGV4
LCBwbmFtZSwgbnVsbHB0ciwgZmFsc2UsIGZhbHNlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYml2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYml2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJl
dHVybiBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkJhc2UoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBu
dWxscHRyLCBmYWxzZSwgZmFsc2UpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmli
UG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZv
aWQgKipwb2ludGVyKQorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25z
dCAqcG9pbnRlcikKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNv
bnRleHQsIGluZGV4LCBwbmFtZSwgbnVsbHB0ciwgdHJ1ZSwgZmFsc2UpOwogfQogCi1ib29sIFZh
bGlkYXRlSXNFbmFibGVkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCitib29sIFZhbGlk
YXRlSXNFbmFibGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCiB7CiAgICAg
aWYgKCFWYWxpZENhcChjb250ZXh0LCBjYXAsIHRydWUpKQogICAgIHsKQEAgLTY5MTEsNyArNjE0
NSw3IEBAIGJvb2wgVmFsaWRhdGVJc0VuYWJsZWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNh
cCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbmtQcm9ncmFtKENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQorYm9vbCBWYWxpZGF0ZUxpbmtQ
cm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtKQog
ewogICAgIGlmIChjb250ZXh0LT5oYXNBY3RpdmVUcmFuc2Zvcm1GZWVkYmFjayhwcm9ncmFtKSkK
ICAgICB7CkBAIC02OTI5LDI1ICs2MTYzLDI1IEBAIGJvb2wgVmFsaWRhdGVMaW5rUHJvZ3JhbShD
b250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVSZWFkUGl4ZWxzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnBpeGVscykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShjb250ZXh0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIC0xLCBudWxscHRyLCBudWxscHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIHBpeGVscyk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVU
eXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVRl
eFBhcmFtZXRlcmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVGV4UGFy
YW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAtMSwgZmFsc2UsICZwYXJhbSk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICpwYXJhbXMpCkBAIC02OTU1LDE3ICs2MTg5LDIwIEBAIGJvb2wgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVRleFBh
cmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgLTEsIHRydWUsIHBhcmFtcyk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVU
eXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVUZXhQ
YXJhbWV0ZXJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVUZXhQYXJhbWV0
ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIC0xLCBmYWxzZSwgJnBhcmFtKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBl
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0
ZVRleFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZVRleFBhcmFtZXRlckJhc2UoY29udGV4
dCwgdGFyZ2V0LCBwbmFtZSwgLTEsIHRydWUsIHBhcmFtcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJJaXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJh
bWV0ZXJJaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50ICpwYXJhbXMpCkBAIC02OTc4LDcgKzYyMTUsNyBAQCBib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVySWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVGV4
UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCAtMSwgdHJ1ZSwgcGFyYW1zKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXZPRVMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKQEAgLTY5OTEsNyAr
NjIyOCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2T0VTKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVGV4UGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQs
IHBuYW1lLCAtMSwgdHJ1ZSwgcGFyYW1zKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVzZVByb2dyYW0o
Q29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCitib29sIFZhbGlkYXRl
VXNlUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSkKIHsKICAgICBpZiAocHJvZ3JhbS52YWx1ZSAhPSAwKQogICAgIHsKQEAgLTcwMjYsNyArNjI2
Myw3IEBAIGJvb2wgVmFsaWRhdGVVc2VQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVs
ZXRlRmVuY2VzTlYoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBGZW5jZU5WSUQg
KmZlbmNlcykKK2Jvb2wgVmFsaWRhdGVEZWxldGVGZW5jZXNOVihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEZlbmNlTlZJRCAqZmVuY2VzKQogewogICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZlbmNlTlYpCiAgICAgewpAQCAtNzA0Myw3ICs2MjgwLDcg
QEAgYm9vbCBWYWxpZGF0ZURlbGV0ZUZlbmNlc05WKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkg
biwgY29uc3QgRmVuY2VOVklEICpmZW5jZXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUZpbmlzaEZlbmNlTlYoQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlKQor
Ym9vbCBWYWxpZGF0ZUZpbmlzaEZlbmNlTlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgRmVuY2VO
VklEIGZlbmNlKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZlbmNlTlYp
CiAgICAgewpAQCAtNzA2OCw3ICs2MzA1LDcgQEAgYm9vbCBWYWxpZGF0ZUZpbmlzaEZlbmNlTlYo
Q29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlR2VuRmVuY2VzTlYoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBG
ZW5jZU5WSUQgKmZlbmNlcykKK2Jvb2wgVmFsaWRhdGVHZW5GZW5jZXNOVihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEZlbmNlTlZJRCAqZmVuY2VzKQogewogICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZlbmNlTlYpCiAgICAgewpAQCAtNzA4NSw3ICs2
MzIyLDEwIEBAIGJvb2wgVmFsaWRhdGVHZW5GZW5jZXNOVihDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIG4sIEZlbmNlTlZJRCAqZmVuY2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0RmVuY2Vpdk5WKENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldEZlbmNlaXZOVihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGZW5jZU5WSUQg
ZmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5mZW5jZU5WKQogICAgIHsKQEAgLTcxMjEsNyArNjM2MSw3IEBA
IGJvb2wgVmFsaWRhdGVHZXRGZW5jZWl2TlYoQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZl
bmNlLCBHTGVudW0gcG5hbWUsIEdMaW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKENvbnRleHQgKmNvbnRleHQpCitib29sIFZh
bGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0KQog
ewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJvYnVzdG5lc3MpCiAgICAgewpA
QCAtNzEzMiwxMSArNjM3MiwxMSBAQCBib29sIFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1
c0VYVChDb250ZXh0ICpjb250ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBzaGFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGNoYXIgKnNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnNvdXJjZSkKIHsK
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50cmFuc2xhdGVkU2hhZGVyU291cmNl
KQogICAgIHsKQEAgLTcxNjEsNyArNjQwMSw3IEBAIGJvb2wgVmFsaWRhdGVHZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUlzRmVuY2VOVihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVu
Y2UpCitib29sIFZhbGlkYXRlSXNGZW5jZU5WKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZlbmNl
TlZJRCBmZW5jZSkKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mZW5jZU5W
KQogICAgIHsKQEAgLTcxNzIsNyArNjQxMiw3IEBAIGJvb2wgVmFsaWRhdGVJc0ZlbmNlTlYoQ29u
dGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlU2V0RmVuY2VOVihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2Us
IEdMZW51bSBjb25kaXRpb24pCitib29sIFZhbGlkYXRlU2V0RmVuY2VOVihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pCiB7CiAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZmVuY2VOVikKICAgICB7CkBAIC03MTk3LDcgKzY0
MzcsNyBAQCBib29sIFZhbGlkYXRlU2V0RmVuY2VOVihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5W
SUQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXN0RmVuY2VOVihDb250ZXh0ICpjb250ZXh0LCBGZW5jZU5WSUQgZmVuY2UpCiti
b29sIFZhbGlkYXRlVGVzdEZlbmNlTlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklE
IGZlbmNlKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZlbmNlTlYpCiAg
ICAgewpAQCAtNzIyMiw3ICs2NDYyLDcgQEAgYm9vbCBWYWxpZGF0ZVRlc3RGZW5jZU5WKENvbnRl
eHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVRleFN0b3JhZ2UyREVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVRleFN0b3JhZ2UyREVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsZm9ybWF0LApAQCAtNzI0Niw3ICs2NDg2LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0
b3JhZ2UyREVYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKIHsKICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5pbnN0YW5jZWRBcnJheXNBTkdMRSkKICAgICB7CkBAIC03Mjc2LDcg
KzY1MTYsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IGRpdgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckVYVChDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRp
dmlzb3JFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2
aXNvcikKIHsKICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pbnN0YW5jZWRBcnJh
eXNFWFQpCiAgICAgewpAQCAtNzI5Myw3ICs2NTMzLDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0
dHJpYkRpdmlzb3JFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2
aXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEltYWdlM0RPRVMoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTNET0VTKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNzMwOSw3ICs2NTQ5LDcg
QEAgYm9vbCBWYWxpZGF0ZVRleEltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVBvcEdyb3VwTWFya2VyRVhUKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRl
UG9wR3JvdXBNYXJrZXJFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZWJ1Z01hcmtlcikKICAgICB7CkBAIC03MzIyLDcgKzY1
NjIsNyBAQCBib29sIFZhbGlkYXRlUG9wR3JvdXBNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxREVYVChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxREVYVChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNzMzMyw3ICs2NTcz
LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxREVYVChDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzREVYVChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzREVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC03MzU3LDcgKzY1
OTcsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNERVhUKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCk7CiB9CiAK
LWJvb2wgVmFsaWRhdGVNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGNvdW50KQorYm9vbCBWYWxpZGF0ZU1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0tI
Uihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgY291bnQpCiB7CiAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkucGFyYWxsZWxTaGFkZXJDb21waWxlKQogICAgIHsKQEAgLTcz
NjcsNyArNjYwNyw3IEBAIGJvb2wgVmFsaWRhdGVNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGNvdW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVNdWx0aURyYXdBcnJheXNBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqZmlyc3RzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50cywKQEAgLTcz
ODgsNyArNjYyOCw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNBTkdMRShDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlEcmF3
RWxlbWVudHNBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0Vs
ZW1lbnRzQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTc0MTAsNyArNjY1
MCw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0FOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXhB
TkdMRShDb250ZXh0ICpjb250ZXh0LCBQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uIG1vZGVQYWNr
ZWQpCitib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4QU5HTEUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkKQogewogICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnByb3Zva2luZ1ZlcnRleCkKICAgICB7CkBAIC03NDMx
LDcgKzY2NzEsNyBAQCBib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtbwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1w
bGVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJnZXQs
CkBAIC03NTE0LDcgKzY3NTQsNyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRN
dWx0aXNhbXBsZUVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNzU1
OCw3ICs2Nzk4LDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29y
ZEJpbmRUZXh0dXJlVHlwZUVycm9yKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdl
dCkKK3ZvaWQgUmVjb3JkQmluZFRleHR1cmVUeXBlRXJyb3IoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgVGV4dHVyZVR5cGUgdGFyZ2V0KQogewogICAgIEFTU0VSVCghY29udGV4dC0+Z2V0U3RhdGVD
YWNoZSgpLmlzVmFsaWRCaW5kVGV4dHVyZVR5cGUodGFyZ2V0KSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oCmluZGV4IGNi
YTM0YTM2NDZiMmM2Yzk1MWI2NjA1OTRiZGYwNmVmNDViYTA1YWUuLjIyOWQ3MDQ5YTQ5ZWU4NjFh
YmVhZjQ4ODY3NTFkOGM5NDMxYWRhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaApAQCAtMTUsNyArMTUsNyBAQAogCiBu
YW1lc3BhY2UgZ2wKIHsKLUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0FycmF5cyhDb250
ZXh0ICpjb250ZXh0LAorQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQpCkBAIC0yMywxMiArMjMsMTUgQEAgQU5HTEVfSU5MSU5FIGJvb2wgVmFsaWRhdGVE
cmF3QXJyYXlzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0FycmF5
c0NvbW1vbihjb250ZXh0LCBtb2RlLCBmaXJzdCwgY291bnQsIDEpOwogfQogCi1BTkdMRV9JTkxJ
TkUgYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZVVuaWZv
cm0yZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCB5KQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwg
R0xfRkxPQVRfVkVDMiwgbG9jYXRpb24sIDEpOwogfQogCi1BTkdMRV9JTkxJTkUgYm9vbCBWYWxp
ZGF0ZUJpbmRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQsIEJ1
ZmZlcklEIGJ1ZmZlcikKK0FOR0xFX0lOTElORSBib29sIFZhbGlkYXRlQmluZEJ1ZmZlcihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCwgQnVmZmVySUQgYnVmZmVy
KQogewogICAgIGlmICghY29udGV4dC0+aXNWYWxpZEJ1ZmZlckJpbmRpbmcodGFyZ2V0KSkKICAg
ICB7CkBAIC00Niw3ICs0OSw3IEBAIEFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlQmluZEJ1ZmZl
cihDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldCwgQnVmCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLUFOR0xFX0lOTElORSBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzKENvbnRl
eHQgKmNvbnRleHQsCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50cyhjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTU1LDcgKzU4LDcgQEAgQU5HTEVfSU5MSU5F
IGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
VmFsaWRhdGVEcmF3RWxlbWVudHNDb21tb24oY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGlu
ZGljZXMsIDEpOwogfQogCi1BTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlBv
aW50ZXIoQ29udGV4dCAqY29udGV4dCwKK0FOR0xFX0lOTElORSBib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliUG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZSwK
QEAgLTEyMiw5ICsxMjUsOSBAQCBBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YlBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBS
ZWNvcmRCaW5kVGV4dHVyZVR5cGVFcnJvcihDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlVHlwZSB0
YXJnZXQpOwordm9pZCBSZWNvcmRCaW5kVGV4dHVyZVR5cGVFcnJvcihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBUZXh0dXJlVHlwZSB0YXJnZXQpOwogCi1BTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0
ZUJpbmRUZXh0dXJlKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCwgVGV4dHVy
ZUlEIHRleHR1cmUpCitBTkdMRV9JTkxJTkUgYm9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldCwgVGV4dHVyZUlEIHRleHR1cmUp
CiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRTdGF0ZUNhY2hlKCkuaXNWYWxpZEJpbmRUZXh0dXJl
VHlwZSh0YXJnZXQpKQogICAgIHsKQEAgLTE1NSw3ICsxNTgsNyBAQCBBTkdMRV9JTkxJTkUgYm9v
bCBWYWxpZGF0ZUJpbmRUZXh0dXJlKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdl
dCwgVGV4dAogfQogCiAvLyBWYWxpZGF0aW9uIG9mIGFsbCBUZXhbU3ViXUltYWdlMkQgcGFyYW1l
dGVycyBleGNlcHQgVGV4dHVyZVRhcmdldC4KLWJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFt
ZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJh
bWV0ZXJzQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyX2F1dG9nZW4u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyX2F1
dG9nZW4uaAppbmRleCBmMTg1ZTBhYTYyYTVhZTg3YjRkNjc3ZjkwZDlmMjViM2UwMWQxMjk0Li44
Y2ZjNGMxYTg3NWFhNWNmOGRjY2ZmNjNkYWJlMTBjZDkwZWViODAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMl9hdXRvZ2VuLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzJf
YXV0b2dlbi5oCkBAIC0xNyw0OSArMTcsNjEgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250
ZXh0OwogCi1ib29sIFZhbGlkYXRlQWN0aXZlVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGV4dHVyZSk7Ci1ib29sIFZhbGlkYXRlQXR0YWNoU2hhZGVyKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQWN0aXZlVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGV4dHVyZSk7Citib29sIFZhbGlkYXRlQXR0YWNoU2hhZGVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVy
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJv
b2wgVmFsaWRhdGVCaW5kQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0UGFja2VkLCBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJpbmRGcmFt
ZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBGcmFtZWJ1ZmZlcklEIGZy
YW1lYnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tl
ZCk7Ci1ib29sIFZhbGlkYXRlQmluZFRleHR1cmUoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkLCBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRl
QmxlbmRDb2xvcihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwg
R0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhKTsKLWJvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9u
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKTsKLWJvb2wgVmFsaWRhdGVCbGVuZEVxdWF0
aW9uU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2Rl
QWxwaGEpOwotYm9vbCBWYWxpZGF0ZUJsZW5kRnVuYyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
c2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpOwotYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRl
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZEJ1ZmZlcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwgQnVmZmVySUQgYnVmZmVyUGFj
a2VkKTsKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCk7Citi
b29sIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCk7Citib29s
IFZhbGlkYXRlQmluZFRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkLCBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCk7Citib29sIFZhbGlkYXRlQmxl
bmRDb2xvcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCByZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBhbHBoYSk7Citib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNl
cGFyYXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9k
ZUFscGhhKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNT
ZXBhcmF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBzZmFjdG9yUkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkZmFjdG9yUkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBzZmFjdG9yQWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRm
YWN0b3JBbHBoYSk7Ci1ib29sIFZhbGlkYXRlQnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUJ1ZmZlckRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdl
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlQnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwotYm9vbCBWYWxpZGF0ZUNsZWFyKENvbnRleHQg
KmNvbnRleHQsIEdMYml0ZmllbGQgbWFzayk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJDb2xvcihDb250
ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBH
TGZsb2F0IGFscGhhKTsKLWJvb2wgVmFsaWRhdGVDbGVhckRlcHRoZihDb250ZXh0ICpjb250ZXh0
LCBHTGZsb2F0IGQpOwotYm9vbCBWYWxpZGF0ZUNsZWFyU3RlbmNpbChDb250ZXh0ICpjb250ZXh0
LCBHTGludCBzKTsKLWJvb2wgVmFsaWRhdGVDb2xvck1hc2soQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQpOworYm9vbCBWYWxpZGF0ZUNsZWFyKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMYml0ZmllbGQgbWFzayk7Citib29sIFZhbGlkYXRlQ2xlYXJDb2xvcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBhbHBoYSk7
Citib29sIFZhbGlkYXRlQ2xlYXJEZXB0aGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9h
dCBkKTsKK2Jvb2wgVmFsaWRhdGVDbGVhclN0ZW5jaWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgcyk7Citib29sIFZhbGlkYXRlQ29sb3JNYXNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiByZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBncmVlbiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGJsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBhbHBoYSk7Ci1ib29sIFZh
bGlkYXRlQ29tcGlsZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgc2hh
ZGVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCk7Citib29sIFZhbGlkYXRlQ29tcHJlc3Nl
ZFRleEltYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC02OCw3ICs4MCw3IEBAIGJvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTc4LDcgKzkwLDcgQEAgYm9v
bCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFs
aWRhdGVDb3B5VGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlU
ZXhJbWFnZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LApAQCAtODcsNyArOTksNyBAQCBib29sIFZhbGlkYXRlQ29weVRleEltYWdl
MkQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcik7Ci1ib29sIFZhbGlkYXRlQ29w
eVRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3Vi
SW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsCkBAIC05NiwxOTggKzEwOCwyMTYgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhT
dWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wg
VmFsaWRhdGVDcmVhdGVQcm9ncmFtKENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZUNy
ZWF0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJUeXBlIHR5cGVQYWNrZWQpOwotYm9v
bCBWYWxpZGF0ZUN1bGxGYWNlKENvbnRleHQgKmNvbnRleHQsIEN1bGxGYWNlTW9kZSBtb2RlUGFj
a2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVCdWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbiwgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURlbGV0
ZUZyYW1lYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNyZWF0ZVByb2dy
YW0oY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlQ3JlYXRlU2hhZGVyKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclR5cGUgdHlwZVBhY2tlZCk7Citib29sIFZhbGlk
YXRlQ3VsbEZhY2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQ3VsbEZhY2VNb2RlIG1vZGVQYWNr
ZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0ZUJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBuLCBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRl
RGVsZXRlRnJhbWVidWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkKTsKLWJvb2wgVmFs
aWRhdGVEZWxldGVQcm9ncmFtKENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZmZXJzKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7Citib29sIFZhbGlkYXRlRGVsZXRlUmVu
ZGVyYnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwotYm9vbCBWYWxpZGF0
ZURlbGV0ZVNoYWRlcihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFj
a2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVUZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIG4sIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURl
cHRoRnVuYyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYyk7Ci1ib29sIFZhbGlkYXRlRGVw
dGhNYXNrKENvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKTsKLWJvb2wgVmFsaWRhdGVE
ZXB0aFJhbmdlZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IG4sIEdMZmxvYXQgZik7Ci1ib29s
IFZhbGlkYXRlRGV0YWNoU2hhZGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVs
ZXRlU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVRleHR1cmVzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCk7Citib29sIFZh
bGlkYXRlRGVwdGhGdW5jKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jKTsKK2Jv
b2wgVmFsaWRhdGVEZXB0aE1hc2soY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xib29sZWFuIGZs
YWcpOworYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgbiwgR0xmbG9hdCBmKTsKK2Jvb2wgVmFsaWRhdGVEZXRhY2hTaGFkZXIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBzaGFkZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURpc2FibGUoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIGNhcCk7Ci1ib29sIFZhbGlkYXRlRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCk7Ci1ib29sIFZhbGlkYXRlRHJhd0FycmF5cyhDb250
ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsIEdMaW50IGZpcnN0LCBHTHNp
emVpIGNvdW50KTsKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVEaXNhYmxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXAp
OworYm9vbCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCk7Citib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzKTsKLWJv
b2wgVmFsaWRhdGVFbmFibGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCk7Ci1ib29sIFZh
bGlkYXRlRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4KTsKLWJvb2wgVmFsaWRhdGVGaW5pc2goQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlk
YXRlRmx1c2goQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFbmFibGUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCk7Citib29sIFZhbGlkYXRlRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFs
aWRhdGVGaW5pc2goY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlRmx1c2go
Y29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkKTsKLWJvb2wg
VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCk7Ci1ib29sIFZhbGlkYXRl
RnJvbnRGYWNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKTsKLWJvb2wgVmFsaWRhdGVH
ZW5CdWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgQnVmZmVySUQgKmJ1ZmZlcnNQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlbkZyYW1lYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBH
THNpemVpIG4sIEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCk7Ci1ib29sIFZhbGlk
YXRlR2VuUmVuZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFJlbmRlcmJ1
ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVHZW5UZXh0dXJlcyhD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQpOwot
Ym9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBl
IHRhcmdldFBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRnJvbnRGYWNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBtb2RlKTsKK2Jvb2wgVmFsaWRhdGVHZW5CdWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQpOworYm9vbCBWYWxp
ZGF0ZUdlbkZyYW1lYnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRl
R2VuUmVuZGVyYnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQpOworYm9vbCBWYWxpZGF0
ZUdlblRleHR1cmVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgVGV4
dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuZXJhdGVNaXBtYXAoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkKTsKK2Jvb2wgVmFs
aWRhdGVHZXRBY3RpdmVBdHRyaWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0QWN0aXZl
VW5pZm9ybShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0g
KnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7
Citib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAq
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7Ci1ib29s
IFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG1heENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEICpzaGFkZXJzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVHZXRBdHRyaWJMb2NhdGlv
bihDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwgY29uc3Qg
R0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFudihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0QnVmZmVy
UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRl
R2V0QXR0cmliTG9jYXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0
ZUdldEJvb2xlYW52KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xib29sZWFuICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRFcnJvcihDb250ZXh0ICpjb250ZXh0KTsKLWJv
b2wgVmFsaWRhdGVHZXRGbG9hdHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEVycm9yKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUdldEZsb2F0dihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0SW50
ZWdlcnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqZGF0YSk7Ci1ib29s
IFZhbGlkYXRlR2V0UHJvZ3JhbUluZm9Mb2coQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMaW50ICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtSW5m
b0xvZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFy
ICppbmZvTG9nKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXYoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICppbmZvTG9nKTsKK2Jv
b2wgVmFsaWRhdGVHZXRQcm9ncmFtaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTaGFkZXJJbmZvTG9nKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHNoYWRlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqaW5mb0xvZyk7Ci1ib29sIFZh
bGlkYXRlR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmluZm9Mb2cpOworYm9vbCBWYWxpZGF0
ZUdldFNoYWRlclByZWNpc2lvbkZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByZWNpc2lvbnR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpyYW5nZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lvbik7Ci1ib29s
IFZhbGlkYXRlR2V0U2hhZGVyU291cmNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpyYW5nZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnByZWNpc2lvbik7Citib29s
IFZhbGlkYXRlR2V0U2hhZGVyU291cmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGNoYXIgKnNvdXJjZSk7Ci1ib29sIFZhbGlkYXRlR2V0U2hhZGVyaXYoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnNvdXJjZSk7
Citib29sIFZhbGlkYXRlR2V0U2hhZGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTdHJpbmcoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIG5hbWUpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7
Citib29sIFZhbGlkYXRlR2V0U3RyaW5nKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBu
YW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRh
dGVHZXRUZXhQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4
UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xj
aGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1pdihDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VmVydGV4
QXR0cmliUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5h
bWUsIHZvaWQgKipwb2ludGVyKTsKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdihDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1z
KTsKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlSGlu
dChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7Ci1ib29sIFZh
bGlkYXRlSXNCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVmZmVyUGFja2VkKTsK
LWJvb2wgVmFsaWRhdGVJc0VuYWJsZWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNhcCk7Ci1i
b29sIFZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklE
IGZyYW1lYnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVJc1Byb2dyYW0oQ29udGV4dCAqY29u
dGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUlzUmVu
ZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBh
Y2tlZCk7Ci1ib29sIFZhbGlkYXRlSXNTaGFkZXIoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJv
Z3JhbUlEIHNoYWRlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlSXNUZXh0dXJlKENvbnRleHQgKmNv
bnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVMaW5lV2lkdGgo
Q29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB3aWR0aCk7Ci1ib29sIFZhbGlkYXRlTGlua1Byb2dy
YW0oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQpOwotYm9v
bCBWYWxpZGF0ZVBpeGVsU3RvcmVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXQoQ29udGV4dCAqY29udGV4dCwg
R0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwotYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHMo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29uc3Qg
KnBvaW50ZXIpOworYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVIaW50KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKK2Jvb2wgVmFsaWRhdGVJc0J1ZmZlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOworYm9vbCBWYWxp
ZGF0ZUlzRW5hYmxlZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY2FwKTsKK2Jvb2wg
VmFsaWRhdGVJc0ZyYW1lYnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVmZmVy
SUQgZnJhbWVidWZmZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUlzUHJvZ3JhbShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7Citib29sIFZhbGlk
YXRlSXNSZW5kZXJidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUmVuZGVyYnVmZmVySUQg
cmVuZGVyYnVmZmVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVJc1NoYWRlcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVJ
c1RleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQp
OworYm9vbCBWYWxpZGF0ZUxpbmVXaWR0aChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0
IHdpZHRoKTsKK2Jvb2wgVmFsaWRhdGVMaW5rUHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7Citib29sIFZhbGlkYXRlUGl4ZWxTdG9y
ZWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Citi
b29sIFZhbGlkYXRlUG9seWdvbk9mZnNldChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0
IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7Citib29sIFZhbGlkYXRlUmVhZFBpeGVscyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpOwot
Ym9vbCBWYWxpZGF0ZVJlbGVhc2VTaGFkZXJDb21waWxlcihDb250ZXh0ICpjb250ZXh0KTsKLWJv
b2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZVJlbGVh
c2VTaGFkZXJDb21waWxlcihjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVS
ZW5kZXJidWZmZXJTdG9yYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShDb250ZXh0
ICpjb250ZXh0LCBHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKLWJvb2wgVmFsaWRh
dGVTY2lzc29yKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVTaGFkZXJCaW5hcnkoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKK2Jvb2wgVmFsaWRhdGVTY2lz
c29yKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK2Jvb2wgVmFsaWRhdGVTaGFkZXJCaW5hcnkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyUHJvZ3JhbUlEICpzaGFkZXJz
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Zm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoKTsKLWJvb2wgVmFsaWRhdGVTaGFkZXJTb3Vy
Y2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHNoYWRlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqc3RyaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqbGVuZ3RoKTsKLWJvb2wgVmFs
aWRhdGVTdGVuY2lsRnVuYyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYywgR0xpbnQgcmVm
LCBHTHVpbnQgbWFzayk7Ci1ib29sIFZhbGlkYXRlU3RlbmNpbEZ1bmNTZXBhcmF0ZShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVN0ZW5jaWxGdW5jKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVT
dGVuY2lsRnVuY1NlcGFyYXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgcmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2sp
OwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxNYXNrKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNr
KTsKLWJvb2wgVmFsaWRhdGVTdGVuY2lsTWFza1NlcGFyYXRlKENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBmYWNlLCBHTHVpbnQgbWFzayk7Ci1ib29sIFZhbGlkYXRlU3RlbmNpbE9wKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7Ci1ib29s
IFZhbGlkYXRlU3RlbmNpbE9wU2VwYXJhdGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVTdGVuY2lsTWFzayhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFzayk7Citib29s
IFZhbGlkYXRlU3RlbmNpbE1hc2tTZXBhcmF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gZmFjZSwgR0x1aW50IG1hc2spOworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOwor
Ym9vbCBWYWxpZGF0ZVN0ZW5jaWxPcFNlcGFyYXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHNmYWlsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkcGZhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGRwcGFzcyk7Ci1ib29sIFZhbGlkYXRlVGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVRleEltYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBp
bnRlcm5hbGZvcm1hdCwKQEAgLTI5NywxNyArMzI3LDIzIEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFn
ZTJEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRl
cmYoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyZihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJhbSk7Citib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVy
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwotYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4
UGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFyYW0p
OworYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhTdWJJbWFn
ZTJEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0zMTcsNjUgKzM1
MywxMDUgQEAgYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTFmKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMWZ2KENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTFpKENvbnRleHQgKmNvbnRleHQsIEdM
aW50IGxvY2F0aW9uLCBHTGludCB2MCk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTFpdihDb250ZXh0
ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMmYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYo
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMmkoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9y
bTJpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtM2YoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpOwot
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0zZnYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlm
b3JtM2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2
MSwgR0xpbnQgdjIpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaXYoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci1ib29s
IFZhbGlkYXRlVW5pZm9ybTRmKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsIEdMZmxvYXQgdjApOwor
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0xZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlVW5pZm9ybTFpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwgR0xpbnQgdjApOwor
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0xaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCisgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgdjEpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZh
bGlkYXRlVW5pZm9ybTJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwgR0xpbnQgdjAsIEdMaW50IHYxKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3Jt
Mml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsK
K2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHYxLAorICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYyKTsKK2Jvb2wgVmFsaWRhdGVV
bmlmb3JtM2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAorICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIpOworYm9vbCBWYWxpZGF0
ZVVuaWZvcm0zaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
dmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm00Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIsCiAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjMpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZnYoQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNGkoQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIsIEdMaW50IHYzKTsKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtNGl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1N
YXRyaXgyZnYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZnYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlVW5p
Zm9ybTRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgdjAsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjMpOworYm9v
bCBWYWxpZGF0ZVVuaWZvcm00aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZnYoQ29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYo
Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZVVzZVByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbShDb250ZXh0ICpjb250ZXh0
LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliMWYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpOwotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjFmdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwotYm9vbCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjJmdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
ZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7Ci1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliM2Z2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVVc2VQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVWYWxpZGF0ZVByb2dy
YW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQp
OworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0xmbG9hdCB4KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIy
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2
KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOworYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCB6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdyk7Ci1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliNGZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUG9pbnRlcihDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYlBvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcG9pbnRlcik7Ci1ib29sIFZhbGlkYXRlVmlld3BvcnQoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworYm9v
bCBWYWxpZGF0ZVZpZXdwb3J0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIH0gIC8vIG5hbWVzcGFjZSBnbAog
CiAjZW5kaWYgIC8vIExJQkFOR0xFX1ZBTElEQVRJT05fRVMyX0FVVE9HRU5fSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmNw
cAppbmRleCA0YzYzODQxZWFlYmViN2EzNzdiZmMwZjVkNmE1YTM2ZDhjZjRkZThlLi42Y2NiOTgx
NGFjOTZmOWYwMmZhNzUwNDUzMWY1OTM4YTJhOTk2NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCkBAIC0yOSw3
ICsyOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBlcnI7CiAKIG5hbWVzcGFjZQogewotYm9vbCBWYWxp
ZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld0Jhc2VBTkdMRShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld0Jhc2VBTkdMRShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCkBA
IC02Myw4ICs2Myw4IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdC
YXNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld0xldmVsQW5kRm9ybWF0KENvbnRleHQg
KmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1
cmVNdWx0aXZpZXdMZXZlbEFuZEZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRl
eHR1cmUgKnRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCiB7CiAgICAgVGV4dHVyZVR5cGUgdHlwZSA9IHRl
eHR1cmUtPmdldFR5cGUoKTsKQEAgLTgzLDcgKzgzLDEwIEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1
ZmZlclRleHR1cmVNdWx0aXZpZXdMZXZlbEFuZEZvcm1hdChDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybUVTMyhDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdW5pZm9ybVR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTGludCBjb3VudCkKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtRVMzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdW5pZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBjb3VudCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
KQogICAgIHsKQEAgLTk0LDkgKzk3LDkgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1FUzMoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHVuaWZvcm1UeXBlLCBHTGludCBsb2NhdGlvbiwgR0wKICAgICBy
ZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIHVuaWZvcm1UeXBlLCBsb2NhdGlvbiwgY291
bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeEVTMyhDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXhFUzMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB2YWx1ZVR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlKQogewpAQCAtMTEwLDcgKzExMyw3IEBAIGJvb2wgVmFsaWRh
dGVVbmlmb3JtTWF0cml4RVMzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeChjb250ZXh0LCB2YWx1ZVR5cGUsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlRVMzKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IG4pCitib29sIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbikKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQogICAgIHsKQEAgLTEyMCw3ICsxMjMsNyBAQCBib29sIFZhbGlkYXRlR2VuT3JEZWxl
dGVFUzMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbikKICAgICByZXR1cm4gVmFsaWRhdGVHZW5P
ckRlbGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlQ291bnRF
UzMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgY291bnQpCitib29sIFZhbGlkYXRlR2VuT3JEZWxl
dGVDb3VudEVTMyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBjb3VudCkKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTEzNSw3
ICsxMzgsNyBAQCBib29sIFZhbGlkYXRlR2VuT3JEZWxldGVDb3VudEVTMyhDb250ZXh0ICpjb250
ZXh0LCBHTGludCBjb3VudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNv
cHlUZXh0dXJlM0RDb21tb24oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4
dHVyZTNEQ29tbW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNyY0ludGVybmFsRm9ybWF0LApAQCAtMjU4LDcgKzI2MSw3IEBAIGJv
b2wgVmFsaWRhdGVDb3B5VGV4dHVyZTNEQ29tbW9uKENvbnRleHQgKmNvbnRleHQsCiB9CiB9ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0YXRpYyBib29sIFZhbGlkYXRlVGV4SW1hZ2VGb3Jt
YXRDb21iaW5hdGlvbihnbDo6Q29udGV4dCAqY29udGV4dCwKK3N0YXRpYyBib29sIFZhbGlkYXRl
VGV4SW1hZ2VGb3JtYXRDb21iaW5hdGlvbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTMzNiw3ICszMzksNyBAQCBzdGF0aWMgYm9vbCBWYWxp
ZGF0ZVRleEltYWdlRm9ybWF0Q29tYmluYXRpb24oZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8g
PSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0LCB0eXBlKTsKKyAgICBj
b25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhp
bnRlcm5hbEZvcm1hdCwgdHlwZSk7CiAgICAgaWYgKCFmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkK
ICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwga0ludmFsaWRJbnRlcm5hbEZvcm1hdCk7CkBAIC0zNDYsNyArMzQ5LDQwIEBAIHN0YXRp
YyBib29sIFZhbGlkYXRlVGV4SW1hZ2VGb3JtYXRDb21iaW5hdGlvbihnbDo6Q29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFy
YW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKK3N0YXRpYyBib29sIFZhbGlkYXRlRVMzQ29t
cHJlc3NlZEZvcm1hdEZvclRleHR1cmUzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
Zm9ybWF0KQoreworICAgIGlmIChJc0VUQzJFQUNGb3JtYXQoZm9ybWF0KSkKKyAgICB7CisgICAg
ICAgIC8vIEVTIDMuMSwgU2VjdGlvbiA4LjcsIHBhZ2UgMTY5LgorICAgICAgICBjb250ZXh0LT52
YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnRlcm5hbEZvcm1hdFJlcXVp
cmVzVGV4dHVyZTJEQXJyYXkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKElzQVNUQzJERm9ybWF0KGZvcm1hdCkgJiYgIShjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUktIUiB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvblNs
aWNlZDNkQVNUQ0tIUikpCisgICAgeworICAgICAgICAvLyBHTF9LSFJfdGV4dHVyZV9jb21wcmVz
c2lvbl9hc3RjX2hkciwgVEVYVFVSRV8zRCBpcyBub3Qgc3VwcG9ydGVkIHdpdGhvdXQgSERSIHBy
b2ZpbGUKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCBrSW50ZXJuYWxGb3JtYXRSZXF1aXJlc1RleHR1cmUyREFycmF5QVNUQyk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoSXNTM1RDRm9ybWF0KGZvcm1hdCkpCisg
ICAgeworICAgICAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCisgICAgICAg
IGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludGVybmFs
Rm9ybWF0UmVxdWlyZXNUZXh0dXJlMkRBcnJheVMzVEMpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKElzUkdUQ0Zvcm1hdChmb3JtYXQpKQorICAgIHsKKyAgICAgICAg
Ly8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0YworICAgICAgICBjb250ZXh0LT52YWxp
ZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnRlcm5hbEZvcm1hdFJlcXVpcmVz
VGV4dHVyZTJEQXJyYXlSR1RDKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2Uo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0zOTQsNyArNDMwLDcgQEAgYm9vbCBW
YWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzID0gY29u
dGV4dC0+Z2V0Q2FwcygpOworICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBz
KCk7CiAKICAgICBzd2l0Y2ggKHRleFR5cGUpCiAgICAgewpAQCAtNDYxLDcgKzQ5Nyw3IEBAIGJv
b2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgZ2w6OlRleHR1cmUgKnRleHR1
cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQnlUeXBlKHRleFR5cGUpOworICAgIFRleHR1cmUgKnRl
eHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJlQnlUeXBlKHRleFR5cGUpOwogICAgIGlmICghdGV4
dHVyZSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwga01pc3NpbmdUZXh0dXJlKTsKQEAgLTQ3NywxMCArNTEzLDkgQEAgYm9vbCBW
YWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICBp
ZiAoaXNDb21wcmVzc2VkICYmIHRleFR5cGUgPT0gVGV4dHVyZVR5cGU6Ol8zRCkKICAgICB7CiAg
ICAgICAgIEdMZW51bSBjb21wcmVzc2VkRGF0YUZvcm1hdCA9IGlzU3ViSW1hZ2UgPyBmb3JtYXQg
OiBpbnRlcm5hbGZvcm1hdDsKLSAgICAgICAgaWYgKElzRVRDMkVBQ0Zvcm1hdChjb21wcmVzc2Vk
RGF0YUZvcm1hdCkpCisgICAgICAgIGlmICghVmFsaWRhdGVFUzNDb21wcmVzc2VkRm9ybWF0Rm9y
VGV4dHVyZTNEKGNvbnRleHQsIGNvbXByZXNzZWREYXRhRm9ybWF0KSkKICAgICAgICAgewotICAg
ICAgICAgICAgLy8gRVMgMy4xLCBTZWN0aW9uIDguNywgcGFnZSAxNjkuCi0gICAgICAgICAgICBj
b250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtJbnRlcm5hbEZv
cm1hdFJlcXVpcmVzVGV4dHVyZTJEQXJyYXkpOworICAgICAgICAgICAgLy8gRXJyb3IgYWxyZWFk
eSBnZW5lcmF0ZWQuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CkBAIC00OTQsOSArNTI5LDkgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jh
c2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmYWN0dWFsRm9ybWF0SW5mbyA9IGlzU3ViSW1hZ2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAq
dGV4dHVyZS0+Z2V0Rm9ybWF0KHRhcmdldCwgbGV2ZWwpLmluZm8KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oaW50ZXJuYWxmb3JtYXQsIHR5cGUpOworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZhY3R1
YWxGb3JtYXRJbmZvID0gaXNTdWJJbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gKnRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxldmVsKS5p
bmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQsIHR5cGUpOwogICAgIGlmIChpc0Nv
bXByZXNzZWQpCiAgICAgewogICAgICAgICBpZiAoIWFjdHVhbEZvcm1hdEluZm8uY29tcHJlc3Nl
ZCkKQEAgLTU5Miw3ICs2MjcsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJz
QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHdpZHRoID4g
MCAmJiBoZWlnaHQgPiAwICYmIGRlcHRoID4gMCAmJiBwaXhlbHMgPT0gbnVsbHB0ciAmJgotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIoZ2w6OkJ1ZmZlckJp
bmRpbmc6OlBpeGVsVW5wYWNrKSA9PSBudWxscHRyKQorICAgICAgICAgICAgY29udGV4dC0+Z2V0
U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIoQnVmZmVyQmluZGluZzo6UGl4ZWxVbnBhY2spID09IG51
bGxwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCBrUGl4ZWxEYXRhTnVsbCk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02MDcsNyArNjQyLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVy
c0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICB9CiAKICAgICAvLyBDaGVjayBmb3IgcGl4ZWwg
dW5wYWNrIGJ1ZmZlciByZWxhdGVkIEFQSSBlcnJvcnMKLSAgICBnbDo6QnVmZmVyICpwaXhlbFVu
cGFja0J1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKEJ1ZmZlckJp
bmRpbmc6OlBpeGVsVW5wYWNrKTsKKyAgICBCdWZmZXIgKnBpeGVsVW5wYWNrQnVmZmVyID0gY29u
dGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIoQnVmZmVyQmluZGluZzo6UGl4ZWxVbnBh
Y2spOwogICAgIGlmIChwaXhlbFVucGFja0J1ZmZlciAhPSBudWxscHRyKQogICAgIHsKICAgICAg
ICAgLy8gLi4uZGF0YSBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBpbnRvIHRoZSBudW1iZXIgb2Yg
Ynl0ZXMgbmVlZGVkIHRvIHN0b3JlIGluIG1lbW9yeSBhCkBAIC02MTYsNyArNjUxLDcgQEAgYm9v
bCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgaWYgKCFpc0NvbXByZXNzZWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgICAgICAgICAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihwaXhlbHMpOwotICAg
ICAgICAgICAgc2l6ZV90IGRhdGFCeXRlc1BlclBpeGVsID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihn
bDo6R2V0VHlwZUluZm8odHlwZSkuYnl0ZXMpOworICAgICAgICAgICAgc2l6ZV90IGRhdGFCeXRl
c1BlclBpeGVsID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihHZXRUeXBlSW5mbyh0eXBlKS5ieXRlcyk7
CiAKICAgICAgICAgICAgIGlmICgob2Zmc2V0ICUgZGF0YUJ5dGVzUGVyUGl4ZWwpICE9IDApCiAg
ICAgICAgICAgICB7CkBAIC02MzYsNyArNjcxLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdl
UGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UyRFBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCkBAIC02NjUsNyArNzAwLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0
ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIGltYWdlU2l6ZSwgcGl4ZWxz
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJzKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UzRFBhcmFtZXRlcnMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCkBAIC05NTEsNyArOTg2LDcgQEAgc3RhdGljIGJvb2wgSXNWYWxpZEVTM0Nv
cHlUZXhJbWFnZUNvbWJpbmF0aW9uKGNvbnN0IEludGVybmFsRm9ybWF0ICZ0ZXh0dXJlRm9ybWEK
ICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb24gYmV0d2VlbiB0aGVzZSBmb3JtYXRzLgog
fQogCi1ib29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTk3NSw3ICsxMDEwLDcg
QEAgYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNv
bnRleHQsCiAgICAgQVNTRVJUKHRleHR1cmVGb3JtYXQudmFsaWQoKSB8fCAhaXNTdWJJbWFnZSk7
CiAKICAgICBjb25zdCBhdXRvICZzdGF0ZSAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0U3Rh
dGUoKTsKLSAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyICAgID0gc3RhdGUuZ2V0UmVh
ZEZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyICAgICAgICA9IHN0
YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIEZyYW1lYnVmZmVySUQgcmVhZEZyYW1lYnVm
ZmVySUQgPSBmcmFtZWJ1ZmZlci0+aWQoKTsKIAogICAgIGlmICghVmFsaWRhdGVGcmFtZWJ1ZmZl
ckNvbXBsZXRlKGNvbnRleHQsIGZyYW1lYnVmZmVyKSkKQEAgLTEwMjYsNyArMTA2MSw3IEBAIGJv
b2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApOwogfQogCi1ib29sIFZhbGlk
YXRlRVMzQ29weVRleEltYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRVMzQ29weVRleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LApAQCAtMTA1MSw3ICsxMDg2LDcgQEAgYm9vbCBWYWxpZGF0ZUVTM0NvcHlU
ZXhJbWFnZTJEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcik7CiB9CiAKLWJvb2wgVmFsaWRh
dGVFUzNDb3B5VGV4SW1hZ2UzRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVFUzNDb3B5VGV4SW1hZ2UzRFBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCkBAIC0xMDc2LDcgKzExMTEsNyBAQCBib29sIFZhbGlkYXRlRVMzQ29weVRl
eEltYWdlM0RQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2
ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCkBAIC0xMDk2LDEzICsxMTMxLDEzIEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhT
dG9yYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgbWF4RGltID0g
c3RkOjptYXgobWF4RGltLCBkZXB0aCk7CiAgICAgfQogCi0gICAgaWYgKGxldmVscyA+IGdsOjps
b2cyKG1heERpbSkgKyAxKQorICAgIGlmIChsZXZlbHMgPiBsb2cyKG1heERpbSkgKyAxKQogICAg
IHsKICAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCBrSW52YWxpZE1pcExldmVscyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBjb25zdCBD
YXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwogCiAgICAgc3dpdGNoICh0YXJnZXQpCiAg
ICAgewpAQCAtMTE3NSw3ICsxMjEwLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJh
bWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGV4dHVyZUJ5
VHlwZSh0YXJnZXQpOworICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUZXh0dXJl
QnlUeXBlKHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlIHx8IHRleHR1cmUtPmlkKCkudmFsdWUg
PT0gMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwga01pc3NpbmdUZXh0dXJlKTsKQEAgLTExODgsNyArMTIyMyw3IEBAIGJvb2wg
VmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1h
dCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZv
cm1hdCk7CisgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRTaXplZElu
dGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7CiAgICAgaWYgKCFmb3JtYXRJbmZvLnRl
eHR1cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9J
TlZBTElEX0VOVU0sIGtJbnZhbGlkRm9ybWF0KTsKQEAgLTEyMDksMTQgKzEyNDQsMTcgQEAgYm9v
bCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAog
CiAgICAgaWYgKGZvcm1hdEluZm8uY29tcHJlc3NlZCAmJiB0YXJnZXQgPT0gVGV4dHVyZVR5cGU6
Ol8zRCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwga0ludmFsaWRUZXh0dXJlVGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoIVZhbGlkYXRlRVMzQ29tcHJlc3NlZEZvcm1hdEZvclRleHR1cmUzRChj
b250ZXh0LCBmb3JtYXRJbmZvLmludGVybmFsRm9ybWF0KSkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gRXJyb3IgYWxyZWFkeSBnZW5lcmF0ZWQuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUVTM1RleFN0b3JhZ2UyRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVFUzNUZXhTdG9yYWdlMkRQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKQEAgLTEyMzQsNyArMTI3Miw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlMkRQYXJh
bWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgpOwogfQogCi1ib29sIFZhbGlkYXRlRVMzVGV4
U3RvcmFnZTNEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVTM1Rl
eFN0b3JhZ2UzRFBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAt
MTI1Miw3ICsxMjkwLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2UzRFBhcmFtZXRlcnMo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0LCBkZXB0aCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5KGds
OjpDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBRdWVyeUlEIGlkKQorYm9vbCBW
YWxpZGF0ZUJlZ2luUXVlcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdl
dCwgUXVlcnlJRCBpZCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQogICAgIHsKQEAgLTEyNjMsNyArMTMwMSw3IEBAIGJvb2wgVmFsaWRhdGVCZWdpblF1
ZXJ5KGdsOjpDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0LCBRdWVyeUlEIGlkKQog
ICAgIHJldHVybiBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGNvbnRleHQsIHRhcmdldCwgaWQpOwog
fQogCi1ib29sIFZhbGlkYXRlRW5kUXVlcnkoZ2w6OkNvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlw
ZSB0YXJnZXQpCitib29sIFZhbGlkYXRlRW5kUXVlcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
UXVlcnlUeXBlIHRhcmdldCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQogICAgIHsKQEAgLTEyNzQsNyArMTMxMiw3IEBAIGJvb2wgVmFsaWRhdGVFbmRR
dWVyeShnbDo6Q29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCkKICAgICByZXR1cm4g
VmFsaWRhdGVFbmRRdWVyeUJhc2UoY29udGV4dCwgdGFyZ2V0KTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5aXYoQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq
cGFyYW1zKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMp
CiAgICAgewpAQCAtMTI4NSw3ICsxMzIzLDEwIEBAIGJvb2wgVmFsaWRhdGVHZXRRdWVyeWl2KENv
bnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQKICAg
ICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeWl2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBu
dWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2KENvbnRleHQgKmNv
bnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpCitib29sIFZh
bGlkYXRlR2V0UXVlcnlPYmplY3R1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTEyOTYsNyArMTMzNyw3IEBAIGJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkLCBHTGVudW0gcG5h
bWUsIEdMdWluCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29u
dGV4dCwgaWQsIHBuYW1lLCBudWxscHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJU
ZXh0dXJlTGF5ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLApAQCAtMTMxNCw3ICsxMzU1LDcgQEAgYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9IGNv
bnRleHQtPmdldENhcHMoKTsKKyAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2Fw
cygpOwogICAgIGlmICh0ZXh0dXJlLnZhbHVlICE9IDApCiAgICAgewogICAgICAgICBpZiAobGF5
ZXIgPCAwKQpAQCAtMTMyMywxNCArMTM2NCwxNCBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJU
ZXh0dXJlTGF5ZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCi0gICAgICAgIGdsOjpUZXh0dXJlICp0ZXggPSBjb250ZXh0LT5nZXRUZXh0
dXJlKHRleHR1cmUpOworICAgICAgICBUZXh0dXJlICp0ZXggPSBjb250ZXh0LT5nZXRUZXh0dXJl
KHRleHR1cmUpOwogICAgICAgICBBU1NFUlQodGV4KTsKIAogICAgICAgICBzd2l0Y2ggKHRleC0+
Z2V0VHlwZSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIFRleHR1cmVUeXBlOjpfMkRB
cnJheToKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6bG9n
MihjYXBzLm1heDJEVGV4dHVyZVNpemUpKQorICAgICAgICAgICAgICAgIGlmIChsZXZlbCA+IGxv
ZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrRnJh
bWVidWZmZXJUZXh0dXJlSW52YWxpZE1pcExldmVsKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTM0Niw3ICsxMzg3LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCiAKICAgICAgICAgICAgIGNhc2UgVGV4dHVy
ZVR5cGU6Ol8zRDoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBn
bDo6bG9nMihjYXBzLm1heDNEVGV4dHVyZVNpemUpKQorICAgICAgICAgICAgICAgIGlmIChsZXZl
bCA+IGxvZzIoY2Fwcy5tYXgzRFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCBrRnJhbWVidWZmZXJUZXh0dXJlSW52YWxpZE1pcExldmVsKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM5Myw3ICsxNDM0LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2ht
ZW50cykKQEAgLTE0MjQsNyArMTQ2NSw3IEBAIGJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVi
dWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKQEAg
LTE0NDIsNyArMTQ4Myw3IEBAIGJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZm
ZXIoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOwogfQogCi1i
b29sIFZhbGlkYXRlQ2xlYXJCdWZmZXIoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVD
bGVhckJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMTQ1OCw3ICsxNDk5LDcgQEAg
Ym9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyKENvbnRleHQgKmNvbnRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50cyhDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLApAQCAtMTQ5MiwxMCArMTUzMywxMCBAQCBib29s
IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11aXYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKQEAgLTE1MDYsNyArMTU0Nyw3IEBAIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3Jt
dWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2Uo
Y29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24pOwogfQogCi1ib29sIFZhbGlkYXRlUmVhZEJ1ZmZl
cihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gc3JjKQorYm9vbCBWYWxpZGF0ZVJlYWRCdWZmZXIo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHNyYykKIHsKICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTE1NTUsNyArMTU5Niw3IEBA
IGJvb2wgVmFsaWRhdGVSZWFkQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBzcmMpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRChD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LApAQCAtMTU5NCw3ICsxNjM1LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgfQogCiAgICAgR0x1aW50IGJsb2NrU2l6
ZSA9IDA7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKGds
OjpFeHRlbnRzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgJmJsb2NrU2l6ZSkpCisgICAgaWYgKCFm
b3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXplKEV4dGVudHMod2lkdGgsIGhlaWdo
dCwgZGVwdGgpLCAmYmxvY2tTaXplKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW50ZWdlck92ZXJmbG93KTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTYyNCw3ICsxNjY1LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTE2NDUsNyArMTY4Niw3
IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgs
IGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhB
cnJheShDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KQorYm9vbCBWYWxpZGF0
ZUJpbmRWZXJ0ZXhBcnJheShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFy
cmF5KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAg
ICAgewpAQCAtMTY1Niw3ICsxNjk3LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheShD
b250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KQogICAgIHJldHVybiBWYWxpZGF0
ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoY29udGV4dCwgYXJyYXkpOwogfQogCi1ib29sIFZhbGlkYXRl
SXNWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5KQorYm9v
bCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJy
YXlJRCBhcnJheSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKQEAgLTE2NjcsNyArMTcwOCw3IEBAIGJvb2wgVmFsaWRhdGVJc1ZlcnRleEFy
cmF5KENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJyYXkpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIFZhbGlkYXRlQmluZEJ1ZmZlckNvbW1vbihDb250ZXh0ICpj
b250ZXh0LAorc3RhdGljIGJvb2wgVmFsaWRhdGVCaW5kQnVmZmVyQ29tbW9uKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklE
IGJ1ZmZlciwKQEAgLTE3ODEsMTIgKzE4MjIsMTUgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVCaW5k
QnVmZmVyQ29tbW9uKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVCaW5kQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5n
IHRhcmdldCwgR0x1aW50IGluZGV4LCBCdWZmZXJJRCBidWZmZXIpCitib29sIFZhbGlkYXRlQmlu
ZEJ1ZmZlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVm
ZmVyKQogewogICAgIHJldHVybiBWYWxpZGF0ZUJpbmRCdWZmZXJDb21tb24oY29udGV4dCwgdGFy
Z2V0LCBpbmRleCwgYnVmZmVyLCAwLCAwKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJS
YW5nZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJSYW5nZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCkBAIC0xODAx
LDcgKzE4NDUsNyBAQCBib29sIFZhbGlkYXRlQmluZEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlQmluZEJ1ZmZlckNvbW1vbihjb250ZXh0LCB0YXJnZXQs
IGluZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFt
QmluYXJ5KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5
Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LApA
QCAtMTgxNiwxMiArMTg2MCwxMiBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeShDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1CaW5hcnlCYXNlKGNvbnRleHQs
IHByb2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0UHJvZ3JhbUJpbmFyeShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFBy
b2dyYW1CaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpi
aW5hcnlGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmJpbmFyeUZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSkKIHsKICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTE4
MzIsNyArMTg3NiwxMCBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeShDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlCYXNlKGNvbnRleHQs
IHByb2dyYW0sIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpOwogfQogCi1i
b29sIFZhbGlkYXRlUHJvZ3JhbVBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCitib29sIFZhbGlkYXRl
UHJvZ3JhbVBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdmFsdWUpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKICAgICB7CkBAIC0xODc3LDcgKzE5MjQsNyBAQCBib29sIFZhbGlkYXRlUHJv
Z3JhbVBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
IEdMZW51bQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVm
ZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNy
Y1gwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDEsCkBAIC0xODk5LDcgKzE5NDYsMTAgQEAg
Ym9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WDEsIGRzdFkxLCBtYXNrLCBm
aWx0ZXIpOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGludCAqdmFsdWUpCiti
b29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWUpCiB7CiAgICAgc3dpdGNoIChidWZmZXIpCiAgICAgewpAQCAtMTkzNiw3
ICsxOTg2LDEwIEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvCiAgICAgcmV0dXJuIFZhbGlkYXRl
Q2xlYXJCdWZmZXIoY29udGV4dCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcnVpdihD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBH
THVpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVydWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgc3dpdGNoIChidWZm
ZXIpCiAgICAgewpAQCAtMTk2NSw3ICsyMDE4LDEwIEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZl
cnVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBj
CiAgICAgcmV0dXJuIFZhbGlkYXRlQ2xlYXJCdWZmZXIoY29udGV4dCk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVDbGVhckJ1ZmZlcmZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBidWZmZXIsIEdMaW50
IGRyYXdidWZmZXIsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZUNsZWFyQnVm
ZmVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7
CiAgICAgc3dpdGNoIChidWZmZXIpCiAgICAgewpAQCAtMjAwMyw3ICsyMDU5LDcgQEAgYm9vbCBW
YWxpZGF0ZUNsZWFyQnVmZmVyZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xp
bnQgZHJhd2J1ZmZlciwgY28KICAgICByZXR1cm4gVmFsaWRhdGVDbGVhckJ1ZmZlcihjb250ZXh0
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyZmkoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgZGVwdGgsCkBAIC0yMDI3LDcgKzIwODMsNyBAQCBib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJm
aShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnRl
eHQpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0J1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xz
aXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCitib29sIFZhbGlkYXRlRHJhd0J1ZmZlcnMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiB7CiAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0y
MDM4LDcgKzIwOTQsNyBAQCBib29sIFZhbGlkYXRlRHJhd0J1ZmZlcnMoQ29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCiAgICAgcmV0dXJuIFZhbGlkYXRlRHJh
d0J1ZmZlcnNCYXNlKGNvbnRleHQsIG4sIGJ1ZnMpOwogfQogCi1ib29sIFZhbGlkYXRlQ29weVRl
eFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1h
Z2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsCkBAIC0yMDU5LDcgKzIxMTUsNyBAQCBib29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0Qo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCk7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZTNEQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDb3B5VGV4dHVyZTNEQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0LApAQCAtMjEyMCw3ICsy
MTc2LDcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlM0RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmUzREFO
R0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmUzREFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVJRCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldCwKQEAgLTIyMTAsNyArMjI2Niw3IEBAIGJvb2wgVmFs
aWRhdGVDb3B5U3ViVGV4dHVyZTNEQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXhJbWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxm
b3JtYXQsCkBAIC0yMjMzLDcgKzIyODksNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UzRChDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBpeGVscyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5h
bGZvcm1hdCwKQEAgLTIyNjIsNyArMjMxOCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZTaXplLCBwaXhlbHMpOwogfQogCi1ib29sIFZhbGlkYXRlVGV4U3Vi
SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0QoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMjI4Niw3ICsyMzQy
LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgcGl4ZWxzKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs
CkBAIC0yMzE2LDcgKzIzNzIsNyBAQCBib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRFJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnVmU2l6ZSwgcGl4ZWxzKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRl
eFN1YkltYWdlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMjM0Myw3ICsyMzk5LDcgQEAgYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgfQog
CiAgICAgR0x1aW50IGJsb2NrU2l6ZSA9IDA7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVD
b21wcmVzc2VkSW1hZ2VTaXplKGdsOjpFeHRlbnRzKHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgJmJs
b2NrU2l6ZSkpCisgICAgaWYgKCFmb3JtYXRJbmZvLmNvbXB1dGVDb21wcmVzc2VkSW1hZ2VTaXpl
KEV4dGVudHMod2lkdGgsIGhlaWdodCwgZGVwdGgpLCAmYmxvY2tTaXplKSkKICAgICB7CiAgICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0ludGVn
ZXJPdmVyZmxvdyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNzEsNyArMjQyNyw3IEBA
IGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4b2Zmc2V0LApAQCAtMjM5NCwzMiArMjQ1MCwzNCBAQCBib29sIFZhbGlkYXRlQ29t
cHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXMoQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgbiwgUXVlcnlJRCAqKQorYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgUXVlcnlJRCAqcXVlcmllcykK
IHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29u
c3QgUXVlcnlJRCAqKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbiwgY29uc3QgUXVlcnlJRCAqcXVlcmllcykKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVHZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdl
blNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGNvdW50LCBTYW1wbGVySUQgKnNhbXBs
ZXJzKQorYm9vbCBWYWxpZGF0ZUdlblNhbXBsZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
aW50IGNvdW50LCBjb25zdCBTYW1wbGVySUQgKnNhbXBsZXJzKQogewogICAgIHJldHVybiBWYWxp
ZGF0ZUdlbk9yRGVsZXRlQ291bnRFUzMoY29udGV4dCwgY291bnQpOwogfQogCi1ib29sIFZhbGlk
YXRlRGVsZXRlU2FtcGxlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgY291bnQsIGNvbnN0IFNh
bXBsZXJJRCAqc2FtcGxlcnMpCitib29sIFZhbGlkYXRlRGVsZXRlU2FtcGxlcnMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgY291bnQsIGNvbnN0IFNhbXBsZXJJRCAqc2FtcGxlcnMpCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVDb3VudEVTMyhjb250ZXh0LCBjb3VudCk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgbiwgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRzKQorYm9vbCBWYWxpZGF0ZUdlblRy
YW5zZm9ybUZlZWRiYWNrcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBU
cmFuc2Zvcm1GZWVkYmFja0lEICppZHMpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxl
dGVFUzMoY29udGV4dCwgbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVUcmFuc2Zvcm1GZWVk
YmFja3MoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJ
RCAqaWRzKQorYm9vbCBWYWxpZGF0ZURlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zv
cm1GZWVkYmFja0lEICppZHMpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZUdlbk9yRGVsZXRlRVMzKGNv
bnRleHQsIG4pKQogICAgIHsKQEAgLTI0MzgsMTcgKzI0OTYsMTcgQEAgYm9vbCBWYWxpZGF0ZURl
bGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBU
cmFuc2Zvcm0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFy
cmF5cyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBWZXJ0ZXhBcnJheUlEICphcnJheXMpCiti
b29sIFZhbGlkYXRlR2VuVmVydGV4QXJyYXlzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50
IG4sIGNvbnN0IFZlcnRleEFycmF5SUQgKmFycmF5cykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVH
ZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRl
eEFycmF5cyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBWZXJ0ZXhBcnJheUlEICph
cnJheXMpCitib29sIFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IG4sIGNvbnN0IFZlcnRleEFycmF5SUQgKmFycmF5cykKIHsKICAgICByZXR1
cm4gVmFsaWRhdGVHZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBw
cmltaXRpdmVNb2RlKQorYm9vbCBWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBwcmltaXRpdmVNb2RlKQogewogICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMjUxNCw3
ICsyNTcyLDEwIEBAIGJvb2wgVmFsaWRhdGVCZWdpblRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQg
KmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgcHJpbWl0aXZlTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydihDb250ZXh0ICpjb250ZXh0LCBCdWZm
ZXJCaW5kaW5nIHRhcmdldCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQorYm9vbCBWYWxp
ZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmNvbnN0ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0yNTI1LDEyICsyNTg2LDEyIEBAIGJvb2wg
VmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydihDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5n
IHRhcmdldCwgR0xlbnVtIHBuCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZC
YXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIG51bGxwdHIsIHBhcmFtcyk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICoqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqY29uc3QgKnBhcmFtcykKIHsKICAgICBpZiAoIVZhbGlk
YXRlUm9idXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKICAgICB7CkBAIC0yNTYwLDcg
KzI2MjEsNyBAQCBib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5tYXBC
dWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQpCitib29sIFZhbGlk
YXRlVW5tYXBCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJn
ZXQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAg
ICB7CkBAIC0yNTcxLDcgKzI2MzIsNyBAQCBib29sIFZhbGlkYXRlVW5tYXBCdWZmZXIoQ29udGV4
dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXQpCiAgICAgcmV0dXJuIFZhbGlkYXRlVW5t
YXBCdWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXBCdWZm
ZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLApAQCAt
MjU4Niw3ICsyNjQ3LDcgQEAgYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VCYXNlKGNvbnRleHQsIHRh
cmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CiB9CiAKLWJvb2wgVmFsaWRhdGVGbHVzaE1h
cHBlZEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRmx1c2hNYXBw
ZWRCdWZmZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCkKQEAgLTI2MDAsNyArMjY2MSw3IEBA
IGJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2UoY29udGV4dCwgdGFy
Z2V0LCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleGVkU3RhdGVRdWVy
eShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xzaXplaSAq
bGVuZ3RoKQorYm9vbCBWYWxpZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTHNpemVpICpsZW5ndGgpCiB7CiAg
ICAgaWYgKGxlbmd0aCkKICAgICB7CkBAIC0yNjE4LDYgKzI2NzksMTkgQEAgYm9vbCBWYWxpZGF0
ZUluZGV4ZWRTdGF0ZVF1ZXJ5KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1aW50
IGluZGV4LCBHTHMKICAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwog
ICAgIHN3aXRjaCAocG5hbWUpCiAgICAgeworICAgICAgICBjYXNlIEdMX0JMRU5EX1NSQ19SR0I6
CisgICAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOgorICAgICAgICBjYXNlIEdMX0JMRU5E
X0RTVF9SR0I6CisgICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOgorICAgICAgICBjYXNl
IEdMX0JMRU5EX0VRVUFUSU9OX1JHQjoKKyAgICAgICAgY2FzZSBHTF9CTEVORF9FUVVBVElPTl9B
TFBIQToKKyAgICAgICAgY2FzZSBHTF9DT0xPUl9XUklURU1BU0s6CisgICAgICAgICAgICBpZiAo
aW5kZXggPj0gc3RhdGljX2Nhc3Q8R0x1aW50PihjYXBzLm1heERyYXdCdWZmZXJzKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwga0luZGV4RXhjZWVkc01heERyYXdCdWZmZXIpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6CiAgICAgICAgIGNhc2Ug
R0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgogICAgICAgICBjYXNlIEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKQEAgLTI3MzYsNyArMjgxMCw3IEBAIGJvb2wg
VmFsaWRhdGVJbmRleGVkU3RhdGVRdWVyeShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUs
IEdMdWludCBpbmRleCwgR0xzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRJbnRlZ2VyaV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCwgR0xpbnQgKmRhdGEpCitib29sIFZhbGlkYXRlR2V0SW50ZWdlcmlfdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICpkYXRh
KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzApCiAgICAg
ewpAQCAtMjc0NiwxMiArMjgyMCwxMiBAQCBib29sIFZhbGlkYXRlR2V0SW50ZWdlcmlfdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50CiAgICAgcmV0
dXJuIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgbnVs
bHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRh
dGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKmRhdGEpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNf
MCkKICAgICB7CkBAIC0yNzgxLDcgKzI4NTUsMTAgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVnZXJp
X3ZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSkKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2Vy
NjRpX3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpkYXRhKQog
ewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzApCiAgICAgewpA
QCAtMjc5MSwxMiArMjg2OCwxMiBAQCBib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbgogICAgIHJldHVy
biBWYWxpZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIG51bGxw
dHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQ2NCAqZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQ2NCAqZGF0YSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgRVNfM18wKQogICAgIHsKQEAgLTI4MjYsNyArMjkwMyw3IEBAIGJvb2wg
VmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29weUJ1ZmZlclN1YkRhdGEoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5QnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcg
cmVhZFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5n
IHdyaXRlVGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHJl
YWRPZmZzZXQsCkBAIC0yOTI0LDcgKzMwMDEsNyBAQCBib29sIFZhbGlkYXRlQ29weUJ1ZmZlclN1
YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldFN0cmluZ2koQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hbWUsIEdMdWludCBpbmRl
eCkKK2Jvb2wgVmFsaWRhdGVHZXRTdHJpbmdpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBuYW1lLCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0yOTYzLDcgKzMwNDAsNyBAQCBib29sIFZhbGlkYXRl
R2V0U3RyaW5naShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LApAQCAtMjk4NSw3ICszMDYyLDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAogICAgIC8vIFRoZSBFUzMgc3BlYyhzZWN0aW9u
IDQuNC4yKSBzdGF0ZXMgdGhhdCB0aGUgaW50ZXJuYWwgZm9ybWF0IG11c3QgYmUgc2l6ZWQgYW5k
IG5vdCBhbiBpbnRlZ2VyCiAgICAgLy8gZm9ybWF0IGlmIHNhbXBsZXMgaXMgZ3JlYXRlciB0aGFu
IHplcm8uIEluIEVTMy4xKHNlY3Rpb24gOS4yLjUpLCBpdCBjYW4gc3VwcG9ydCBpbnRlZ2VyCiAg
ICAgLy8gbXVsdGlzYW1wbGUgcmVuZGVyYnVmZmVyLCBidXQgdGhlIHNhbXBsZXMgc2hvdWxkIG5v
dCBiZSBncmVhdGVyIHRoYW4gTUFYX0lOVEVHRVJfU0FNUExFUy4KLSAgICBjb25zdCBnbDo6SW50
ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdEluZm8o
aW50ZXJuYWxmb3JtYXQpOworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0g
R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQpOwogICAgIGlmIChmb3Jt
YXRJbmZvLmlzSW50KCkpCiAgICAgewogICAgICAgICBpZiAoKHNhbXBsZXMgPiAwICYmIGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA9PSBFU18zXzApIHx8CkBAIC0zMDA3LDcgKzMwODQsNyBA
QCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYklQb2lu
dGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXR0cmli
VHlwZSB0eXBlLApAQCAtMzA3MiwxMiArMzE0OSwxMiBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliSVBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldFN5bmNpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFN5
bmNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBHTHN5
bmMgc3luYywKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKQogewogICAgIGlmICgoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmds
U3luY0FSQikKICAgICB7CkBAIC0zMTMwLDcgKzMyMDcsNyBAQCBib29sIFZhbGlkYXRlR2V0U3lu
Y2l2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVE
cmF3RWxlbWVudHNJbnN0YW5jZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCkBAIC0zMTQ2LDcgKzMyMjMs
NyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZShjb250ZXh0LCBt
b2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VDb3VudCk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpmaXJzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnRzLApAQCAtMzE4MSw3ICszMjU4LDcgQEAgYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
Y291bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtMzIxNyw3ICszMjk0LDcgQEAgYm9vbCBWYWxpZGF0ZU11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFu
Y2VBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5j
ZWRCYXNlSW5zdGFuY2VBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LApAQCAtMzIzNiw3ICszMzEzLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdB
cnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleEJhc2VJbnN0YW5jZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtMzI1Nyw3ICszMzM0LDcgQEAgYm9v
bCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdM
RShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdM
RShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqZmlyc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50cywKQEAgLTMyODUsNyArMzM2Miw3IEBA
IGJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VBTkdMRShD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlQU5HTEUoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3Vu
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLApAQCAtMzMxNSw3ICsz
MzkyLDcgQEAgYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRl
eEJhc2VJbnN0YW5jZUFOR0xFKENvbnRleHQgKmNvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09WUihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCkBAIC0zMzc3LDIzICszNDU0LDI3IEBA
IGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0xdWkoQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKK2Jvb2wgVmFsaWRhdGVV
bmlmb3JtMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwgR0x1aW50IHYwKQogewogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1FUzMoY29udGV4dCwg
R0xfVU5TSUdORURfSU5ULCBsb2NhdGlvbiwgMSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3Jt
MnVpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2
MSkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEpCiB7CiAgICAgcmV0dXJu
IFZhbGlkYXRlVW5pZm9ybUVTMyhjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRfVkVDMiwgbG9jYXRp
b24sIDEpOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTN1aShDb250ZXh0ICpjb250ZXh0LCBH
TGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MikKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtM3VpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdjAsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgdjIpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9y
bUVTMyhjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRfVkVDMywgbG9jYXRpb24sIDEpOwogfQogCi1i
b29sIFZhbGlkYXRlVW5pZm9ybTR1aShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybTR1aShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYyLApAQCAtMzQwMiwyNyArMzQ4MywzOSBAQCBib29sIFZhbGlkYXRlVW5pZm9ybTR1aShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1FUzMoY29udGV4dCwgR0xf
VU5TSUdORURfSU5UX1ZFQzQsIGxvY2F0aW9uLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZv
cm0xdWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTHVpbnQgKnZhbHVlKQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0xdWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFs
aWRhdGVVbmlmb3JtRVMzKGNvbnRleHQsIEdMX1VOU0lHTkVEX0lOVCwgbG9jYXRpb24sIGNvdW50
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0ydWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQorYm9vbCBWYWxp
ZGF0ZVVuaWZvcm0ydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtRVMzKGNvbnRleHQsIEdMX1VO
U0lHTkVEX0lOVF9WRUMyLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlVW5p
Zm9ybTN1aXYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMdWludCAqdmFsdWUpCitib29sIFZhbGlkYXRlVW5pZm9ybTN1aXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIHJldHVybiBW
YWxpZGF0ZVVuaWZvcm1FUzMoY29udGV4dCwgR0xfVU5TSUdORURfSU5UX1ZFQzMsIGxvY2F0aW9u
LCBjb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNHVpdihDb250ZXh0ICpjb250ZXh0
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSkKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybUVTMyhjb250ZXh0
LCBHTF9VTlNJR05FRF9JTlRfVkVDNCwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUlzUXVlcnkoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZCkKK2Jvb2wgVmFsaWRhdGVJ
c1F1ZXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQpCiB7CiAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0zNDMzLDggKzM1
MjYsOCBAQCBib29sIFZhbGlkYXRlSXNRdWVyeShDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlk
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4M2Z2
KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNmdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpA
QCAtMzQ0Miw4ICszNTM1LDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNmdihDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1NYXRyaXhFUzMoY29udGV4
dCwgR0xfRkxPQVRfTUFUMngzLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5p
Zm9ybU1hdHJpeDN4MmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC0zNDUxLDggKzM1NDQsOCBAQCBib29sIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDN4MmZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeEVTMyhjb250ZXh0LCBHTF9GTE9BVF9NQVQzeDIsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRm
dihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3Nl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
QEAgLTM0NjAsOCArMzU1Myw4IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZnYoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtTWF0cml4RVMzKGNvbnRl
eHQsIEdMX0ZMT0FUX01BVDJ4NCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UpOwogfQogCi1i
b29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmZ2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXg0eDJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtMzQ2OSw4ICszNTYyLDggQEAgYm9vbCBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXhFUzMoY29udGV4dCwgR0xfRkxPQVRfTUFUNHgyLCBsb2NhdGlv
biwgY291bnQsIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0
ZnYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
CkBAIC0zNDc4LDggKzM1NzEsOCBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGZ2KENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybU1hdHJpeEVTMyhjb250
ZXh0LCBHTF9GTE9BVF9NQVQzeDQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDNmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVV
bmlmb3JtTWF0cml4NHgzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTM0ODcsNyArMzU4MCw3IEBAIGJvb2wg
VmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZnYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
VmFsaWRhdGVVbmlmb3JtTWF0cml4RVMzKGNvbnRleHQsIEdMX0ZMT0FUX01BVDR4MywgbG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZhbGlkYXRlRW5kVHJhbnNmb3JtRmVl
ZGJhY2soQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVkYmFj
ayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMzUwNyw3ICszNjAwLDcgQEAgYm9vbCBWYWxp
ZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqdmFyeWluZ3MsCkBAIC0zNTUzLDE0ICszNjQ2LDE0
IEBAIGJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmcoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkg
KnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xjaGFyICpuYW1lKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMpCiAgICAgewpAQCAtMzU4OSw3ICszNjgyLDcgQEAgYm9vbCBWYWxpZGF0ZUdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlQmluZFRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQpCitib29sIFZhbGlkYXRl
QmluZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0zNjI3LDcgKzM3MjAsNyBAQCBib29sIFZh
bGlkYXRlQmluZFRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIFRyYW5zZm9ybUZlZQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSXNU
cmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlk
KQorYm9vbCBWYWxpZGF0ZUlzVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4
dCwgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM2MzgsNyArMzczMSw3IEBAIGJvb2wgVmFs
aWRhdGVJc1RyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQsIFRyYW5zZm9ybUZlZWRi
YWNrSUQgaWQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQYXVzZVRyYW5z
Zm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRlUGF1c2VUcmFuc2Zv
cm1GZWVkYmFjayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMzY2NSw3ICszNzU4LDcgQEAg
Ym9vbCBWYWxpZGF0ZVBhdXNlVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlc3VtZVRyYW5zZm9ybUZlZWRiYWNr
KENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRlUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2so
Y29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM2OTIsNyArMzc4NSwxMiBAQCBib29sIFZhbGlk
YXRlUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0aShDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliSTRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgdykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM3MDMsNyArMzgwMSw3IEBAIGJvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJNGkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGludCB4LCBH
TGludCB5LCBHCiAgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwg
aW5kZXgpOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWkoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHksCkBAIC0zNzE5LDcgKzM4MTcsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTR1aShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0
dHJpYkluZGV4KGNvbnRleHQsIGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
Ykk0aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMykKICAgICB7CkBAIC0zNzMwLDcgKzM4MjgsNyBAQCBib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliSTRpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMaW50ICp2KQogICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQs
IGluZGV4KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWl2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkk0dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0x1aW50ICp2KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCiAgICAgewpAQCAtMzc0MSw3ICszODM5LDkgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
Ykk0dWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQog
ICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQsIGluZGV4KTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhTG9jYXRpb24oQ29udGV4dCAqY29udGV4dCwgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkKK2Jvb2wgVmFsaWRhdGVH
ZXRGcmFnRGF0YUxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTM3NjQsMTEgKzM4
NjQsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhTG9jYXRpb24oQ29udGV4dCAqY29udGV4
dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUdldFVuaWZvcm1JbmRpY2VzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0VW5pZm9ybUluZGljZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHVuaWZvcm1Db3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICp1bmlmb3JtTmFtZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICp1bmlmb3JtSW5kaWNlcykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnVuaWZvcm1JbmRpY2Vz
KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAg
ewpAQCAtMzc5MSwxMiArMzg5MSwxMiBAQCBib29sIFZhbGlkYXRlR2V0VW5pZm9ybUluZGljZXMo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdl
dEFjdGl2ZVVuaWZvcm1zaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3Rp
dmVVbmlmb3Jtc2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgdW5pZm9ybUNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp1bmlmb3JtSW5kaWNlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtMzg2MCw3ICszOTYwLDcgQEAgYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZVVuaWZvcm1zaXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1CbG9ja0luZGV4KENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIg
KnVuaWZvcm1CbG9ja05hbWUpCiB7CkBAIC0zODc5LDIxICszOTc5LDIxIEBAIGJvb2wgVmFsaWRh
dGVHZXRVbmlmb3JtQmxvY2tJbmRleChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2QmFzZShjb250ZXh0LCBwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIG51
bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICp1bmlmb3Jt
QmxvY2tOYW1lKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCiAgICAgewpAQCAtMzkxNiw3ICs0MDE2LDcgQEAgYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRpbmcoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVVbmlmb3JtQmxvY2tCaW5kaW5nKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tCaW5k
aW5nKQpAQCAtMzk0OSw3ICs0MDQ5LDcgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRp
bmcoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZURyYXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3
QXJyYXlzSW5zdGFuY2VkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCkBAIC0zOTY0LDcgKzQwNjQsNyBAQCBib29sIFZhbGlkYXRlRHJh
d0FycmF5c0luc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWRCYXNlKGNvbnRleHQsIG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNv
dW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZlbmNlU3luYyhDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKQorYm9vbCBWYWxpZGF0ZUZlbmNlU3luYyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdz
KQogewogICAgIGlmICgoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdsU3luY0FSQikKICAgICB7CkBAIC0zOTg3LDcgKzQw
ODcsNyBAQCBib29sIFZhbGlkYXRlRmVuY2VTeW5jKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBj
b25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVJc1N5bmMoQ29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMpCitib29sIFZhbGlk
YXRlSXNTeW5jKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc3luYyBzeW5jKQogewogICAgIGlm
ICgoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmdsU3luY0FSQikKICAgICB7CkBAIC0zOTk4LDcgKzQwOTgsNyBAQCBib29s
IFZhbGlkYXRlSXNTeW5jKENvbnRleHQgKmNvbnRleHQsIEdMc3luYyBzeW5jKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVsZXRlU3luYyhDb250ZXh0ICpjb250ZXh0LCBH
THN5bmMgc3luYykKK2Jvb2wgVmFsaWRhdGVEZWxldGVTeW5jKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc3luYyBzeW5jKQogewogICAgIGlmICgoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdsU3luY0FSQikKICAgICB7
CkBAIC00MDE1LDcgKzQxMTUsNyBAQCBib29sIFZhbGlkYXRlRGVsZXRlU3luYyhDb250ZXh0ICpj
b250ZXh0LCBHTHN5bmMgc3luYykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUNsaWVudFdhaXRTeW5jKENvbnRleHQgKmNvbnRleHQsIEdMc3luYyBzeW5jLCBHTGJpdGZpZWxk
IGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KQorYm9vbCBWYWxpZGF0ZUNsaWVudFdhaXRTeW5jKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVp
bnQ2NCB0aW1lb3V0KQogewogICAgIGlmICgoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdsU3luY0FSQikKICAgICB7CkBA
IC00MDM5LDcgKzQxMzksNyBAQCBib29sIFZhbGlkYXRlQ2xpZW50V2FpdFN5bmMoQ29udGV4dCAq
Y29udGV4dCwgR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2FpdFN5bmMoQ29udGV4dCAqY29udGV4dCwgR0xzeW5j
IHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpCitib29sIFZhbGlkYXRl
V2FpdFN5bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQg
ZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpCiB7CiAgICAgaWYgKChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMpICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2xTeW5jQVJC
KQogICAgIHsKQEAgLTQwNjksNyArNDE2OSw3IEBAIGJvb2wgVmFsaWRhdGVXYWl0U3luYyhDb250
ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHYoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0
SW50ZWdlcjY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50NjQgKnBhcmFtcykKIHsKICAgICBpZiAoKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lv
bigpIDwgMykgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nbFN5bmNBUkIpCiAgICAgewpA
QCAtNDA4Nyw3ICs0MTg3LDcgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHYoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVJc1NhbXBsZXIoQ29udGV4dCAqY29udGV4dCwgU2FtcGxlcklE
IHNhbXBsZXIpCitib29sIFZhbGlkYXRlSXNTYW1wbGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFNhbXBsZXJJRCBzYW1wbGVyKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgewpAQCAtNDA5OCw3ICs0MTk4LDcgQEAgYm9vbCBWYWxpZGF0ZUlz
U2FtcGxlcihDb250ZXh0ICpjb250ZXh0LCBTYW1wbGVySUQgc2FtcGxlcikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJpbmRTYW1wbGVyKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCB1bml0LCBTYW1wbGVySUQgc2FtcGxlcikKK2Jvb2wgVmFsaWRhdGVCaW5kU2FtcGxlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgdW5pdCwgU2FtcGxlcklEIHNhbXBsZXIpCiB7
CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBA
IC00MTIxLDcgKzQyMjEsNyBAQCBib29sIFZhbGlkYXRlQmluZFNhbXBsZXIoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IHVuaXQsIFNhbXBsZXJJRCBzYW1wbGVyKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvcihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRp
dmlzb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNv
cikKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAg
IHsKQEAgLTQxMzIsNyArNDIzMiw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29y
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiAgICAgcmV0
dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwgaW5kZXgpOwogfQogCi1ib29s
IFZhbGlkYXRlVGV4U3RvcmFnZTJEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4
U3RvcmFnZTJEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKQEAgLTQxNTQsNyArNDI1NCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkQoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3Jh
Z2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzRChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC00MTc3LDMxICs0
Mjc3LDM0IEBAIGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcmk2NHYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJCaW5kaW5nIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50NjQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50NjQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0
ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGZhbHNlLCBudWxscHRyKTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwg
bnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXYoQ29udGV4
dCAqY29udGV4dCwgU2FtcGxlcklEIHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cykKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsK
ICAgICByZXR1cm4gVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1w
bGVyLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVySWl2T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlcklpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKQEAgLTQyMTEsMTAgKzQzMTQsMTAg
QEAgYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBz
YW1wbGVyLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFy
YW1ldGVySXVpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQ
YXJhbWV0ZXJJdWl2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewpAQCAtNDIyNCwx
MiArNDMyNywxNSBAQCBib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXZPRVMoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyQmFz
ZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0LCBTYW1wbGVySUQgc2FtcGxlciwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJm
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0pCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxl
ciwgcG5hbWUsIC0xLCBmYWxzZSwgJnBhcmFtKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0
ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpCkBAIC00MjM3LDEyICs0MzQzLDEyIEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgLTEsIHRydWUsIHBhcmFtcyk7
CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LCBT
YW1wbGVySUQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK2Jvb2wgVmFsaWRh
dGVTYW1wbGVyUGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTYW1wbGVySUQgc2Ft
cGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyQmFzZShjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgLTEsIGZhbHNlLCAm
cGFyYW0pOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCkBAIC00MjUwLDcg
KzQzNTYsNyBAQCBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2Ft
cGxlciwgcG5hbWUsIC0xLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxl
clBhcmFtZXRlcklpdk9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJJaXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKQEAgLTQyNjMsNyArNDM2OSw3IEBAIGJv
b2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5h
bWUsIC0xLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
ckl1aXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
SXVpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKQEAgLTQyNzYsMjggKzQzODIsMzQgQEAgYm9v
bCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoY29udGV4dCwgc2FtcGxlciwgcG5h
bWUsIC0xLCB0cnVlLCBwYXJhbXMpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmli
SWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJCYXNlKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgbnVsbHB0
ciwgZmFsc2UsIHRydWUpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVpdihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJh
bXMpCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliQmFzZShjb250ZXh0LCBpbmRleCwgcG5hbWUsIG51bGxw
dHIsIGZhbHNlLCB0cnVlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbGZvcm1hdGl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdkJhc2UoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2Nh
dGlvbkluZGV4ZWRFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhZ0Rh
dGFMb2NhdGlvbkluZGV4ZWRFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb2xv
ck51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LApAQCAtNDM0Niw3ICs0NDU4LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRGcmFnRGF0
YUxvY2F0aW9uSW5kZXhlZEVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25FWFQoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBjb2xvck51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpuYW1lKQpAQCAtNDM1NCw3ICs0NDY2LDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRGcmFn
RGF0YUxvY2F0aW9uRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlQmlu
ZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKGNvbnRleHQsIHByb2dyYW0sIGNvbG9yTnVtYmVy
LCAwdSwgbmFtZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRGcmFnRGF0YUluZGV4RVhUKENvbnRl
eHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBjb25zdCBjaGFyICpuYW1lKQor
Ym9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXhFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmxlbmRGdW5jRXh0ZW5kZWQpCiAgICAgewpAQCAtNDM3
OSw3ICs0NDkxLDcgQEAgYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXhFWFQoQ29udGV4dCAq
Y29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnMKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZUFOR0xFKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC00Mzk3LDExICs0NTA5LDEx
IEBAIGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZUFOR0xFKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
aWdodCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2QU5HTEUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVNdWx0aXNhbXBsZSkKICAgICB7CkBAIC00NDEyLDEx
ICs0NTI0LDExIEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlckJh
c2UoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdkFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdkFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqcGFyYW1zKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1
cmVNdWx0aXNhbXBsZSkKICAgICB7CkBAIC00NDI3LDcgKzQ1MzksMTAgQEAgYm9vbCBWYWxpZGF0
ZUdldFRleExldmVsUGFyYW1ldGVyaXZBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIGxldmVs
LCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QU5H
TEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQg
KnZhbCkKK2Jvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbCkKIHsKICAg
ICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTXVsdGlzYW1wbGUpCiAgICAg
ewpAQCAtNDQzOCw3ICs0NTUzLDcgQEAgYm9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZBTkdM
RShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwKICAgICByZXR1
cm4gVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2QmFzZShjb250ZXh0LCBwbmFtZSwgaW5kZXgsIHZh
bCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUFOR0xFKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCitib29sIFZhbGlkYXRlU2FtcGxl
TWFza2lBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFza051bWJlciwgR0xi
aXRmaWVsZCBtYXNrKQogewogICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1
cmVNdWx0aXNhbXBsZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAppbmRleCAyMjA2ZGI0NGIyZWRlOGI5M2U0NjJm
YjMxMzc0ZDI4MzY0NDVjOWMxLi5kNTQ2YTU3Njg1M2IxNDhiZGVlMDUwZGE4MzUzM2MzYzYxNDNk
MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTMy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRVMzLmgKQEAgLTE0LDcgKzE0LDcgQEAKIAogbmFtZXNwYWNlIGdsCiB7Ci1ib29s
IFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkVTMzEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FUzMxLmNwcAppbmRleCBiYmY4MzYxMDdhZmNlOTZjMTFmMjM0ZTg2NTU0
NDkxNDU5ODlhNWUzLi40OTYwNmNiYzE0ODY2Y2M2Zjk3MDgwYzI1NWUyMzgyOGI4ZTMxOTZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkVTMzEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMzMS5jcHAKQEAgLTI5NywxMCArMjk3LDEwIEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFt
UmVzb3VyY2VJbmRleChjb25zdCBQcm9ncmFtICpwcm9ncmFtT2JqZWN0LAogICAgIH0KIH0KIAot
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdmFsdWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
KQogewogICAgIC8vIENoZWNrIGZvciBFUzMxIHByb2dyYW0gdW5pZm9ybSBlbnRyeSBwb2ludHMK
QEAgLTMxNiwxMCArMzE2LDEwIEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1WYWx1ZShjb250ZXh0LCB2YWx1
ZVR5cGUsIHVuaWZvcm0tPnR5cGUpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB2YWx1ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSkKIHsKQEAgLTMzNiw3ICszMzYsNyBAQCBib29sIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtTWF0cml4VmFsdWUoY29udGV4dCwgdmFsdWVUeXBlLCB1bmlmb3JtLT50eXBlKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1hdENvbW1vbihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgcmVsYXRpdmVPZmZzZXQpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0Q29t
bW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCByZWxhdGl2ZU9mZnNldCkKIHsKICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTM2
NCw3ICszNjQsMTAgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1hdENvbW1vbihDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVsYXRpdmVPZmZzZXQpCiAKIH0gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAotYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3YoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpCitib29sIFZhbGlk
YXRlR2V0Qm9vbGVhbmlfdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMYm9vbGVhbiAq
ZGF0YSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQog
ICAgIHsKQEAgLTM4MCwxMiArMzgzLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuICpkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMYm9vbGVhbiAqZGF0YSkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTQxNCw3ICs0MTcsNyBAQCBib29sIFZhbGlkYXRl
R2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3SW5kaXJlY3RCYXNlKENvbnRleHQgKmNvbnRleHQs
IFByaW1pdGl2ZU1vZGUgbW9kZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QpCitib29sIFZhbGlkYXRl
RHJhd0luZGlyZWN0QmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQcmltaXRpdmVNb2RlIG1v
ZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewpAQCAtNDYzLDcgKzQ2Niw3IEBAIGJvb2wgVmFsaWRh
dGVEcmF3SW5kaXJlY3RCYXNlKENvbnRleHQgKmNvbnRleHQsIFByaW1pdGl2ZU1vZGUgbW9kZSwg
Y29uc3Qgdm9pZCAqCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJy
YXlzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlLCBjb25zdCB2
b2lkICppbmRpcmVjdCkKK2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5kaXJlY3QoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkK
IHsKICAgICBjb25zdCBTdGF0ZSAmc3RhdGUgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0
LT5nZXRTdGF0ZSgpOwogICAgIFRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFj
ayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwpAQCAtNTA5LDcgKzUxMiw3
IEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwgUHJp
bWl0aXZlTW9kZSBtb2RlLCBjb25zdCB2b2lkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZURyYXdFbGVtZW50c0luZGlyZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVjdCkKQEAgLTU0Niwx
NCArNTQ5LDE3IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdChDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xaShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMaW50IHYwKQorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjApCiB7
CiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYoY29udGV4dCwgcHJvZ3JhbSwg
bG9jYXRpb24sIDEsICZ2MCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgdjEpCiB7CkBAIC01NjEsOSArNTY3LDkgQEAgYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTJpdihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHkp
OwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2koY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjIpCkBAIC01
NzIsOSArNTc4LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2koQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpdihjb250ZXh0LCBwcm9n
cmFtLCBsb2NhdGlvbiwgMSwgeHl6KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
NGkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHYyLApAQCAtNTg0LDE0ICs1OTAsMTcgQEAgYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtNGkoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTRpdihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHl6dyk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aShDb250ZXh0ICpjb250ZXh0LCBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgdjApCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0xdWl2KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCAxLCAmdjApOwogfQogCi1i
b29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTJ1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHYxKQogewpAQCAtNTk5LDkgKzYwOCw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTJ1aShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtMnVpdihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHkpOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MikKQEAgLTYxMCw5
ICs2MTksOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWkoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aXYoY29udGV4dCwgcHJvZ3Jh
bSwgbG9jYXRpb24sIDEsIHh5eik7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1
aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHYyLApAQCAtNjIyLDE0ICs2MzEsMTcgQEAgYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtNHVpKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm00dWl2KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eXp3
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWYoQ29udGV4dCAqY29udGV4dCwg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQorYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCkKIHsKICAgICByZXR1cm4gVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTFmdihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgMSwgJnYwKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmYoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgdjEpCiB7CkBAIC02MzcsOSArNjQ5LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtMmYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTJmdihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHkpOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0zZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtM2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIpCkBAIC02NDgsOSArNjYw
LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNmdihjb250ZXh0LCBwcm9ncmFtLCBsb2Nh
dGlvbiwgMSwgeHl6KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHYyLApAQCAtNjYwLDkgKzY3Miw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTRmKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm00ZnYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5encpOwogfQogCi1ib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTFpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50ICp2YWx1ZSkKIHsKQEAgLTY3OSwxMDggKzY5MSwxMDggQEAgYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgIFZhbGlkYXRl
VW5pZm9ybTFpdlZhbHVlKGNvbnRleHQsIHVuaWZvcm0tPnR5cGUsIGNvdW50LCB2YWx1ZSk7CiB9
CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpdihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtKGNvbnRleHQsIEdMX0lOVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQp
OwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMywgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2KENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00aXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzQsIHByb2dyYW0sIGxvY2F0aW9u
LCBjb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAg
cmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfVU5TSUdORURfSU5ULCBw
cm9ncmFtLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0ydWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdM
X1VOU0lHTkVEX0lOVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0zdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtKGNvbnRleHQsIEdMX1VOU0lHTkVEX0lOVF9WRUMzLCBwcm9ncmFtLCBsb2NhdGlv
biwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQogewogICAg
IHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdMX1VOU0lHTkVEX0lOVF9W
RUM0LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0xZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTFmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdM
X0ZMT0FULCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0yZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQogewogICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQs
IEdMX0ZMT0FUX1ZFQzIsIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCk7CiB9CiAKLWJvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTNmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtM2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0o
Y29udGV4dCwgR0xfRkxPQVRfVkVDMywgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICByZXR1cm4gVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybShjb250ZXh0LCBHTF9GTE9BVF9WRUM0LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQp
OwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCkBAIC03ODksOSArODAxLDkgQEAgYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4MmZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4M2Z2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpA
QCAtODAwLDkgKzgxMiw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTgxMSw5ICs4MjMsOSBAQCBib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpOwogfQogCi1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQpAQCAtODIyLDkgKzgzNCw5IEBAIGJvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKQEAgLTgzMyw5ICs4NDUsOSBAQCBib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzeDJmdihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpCkBAIC04NDQsOSArODU2LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtTWF0cml4Mng0ZnYoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpOwogfQogCi1ib29sIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4NHgyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQpAQCAtODU1LDkgKzg2Nyw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4MmZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNwb3NlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4M3g0ZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybU1hdHJpeDN4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKQEAgLTg2Niw5ICs4NzgsOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDRmdihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1h
dHJpeDR4M2Z2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
CkBAIC04NzcsMTEgKzg4OSwxMSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0
eDNmdihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zcG9zZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJm
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
RVNfM18xKQogICAgIHsKQEAgLTg5MiwyMyArOTA0LDIzIEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlR2V0
VGV4TGV2ZWxQYXJhbWV0ZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIHBuYW1lLCBudWxs
cHRyKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAg
ICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldFRleExldmVsUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRUZXhMZXZlbFBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC05MTksMTkgKzkzMSwxOSBAQCBib29s
IFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIGxl
dmVsLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXhM
ZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpw
YXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKQEAgLTk0OSw3ICs5NjEsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlz
YW1wbGUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0y
RE11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFn
ZU1lbTJETXVsdGlzYW1wbGVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwKQEAgLTk2OSw3ICs5ODEsMTAgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0y
RE11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKQorYm9vbCBWYWxpZGF0ZUdldE11bHRp
c2FtcGxlZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bCkKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAg
IHsKQEAgLTk4MCwxOCArOTk1LDE4IEBAIGJvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsCiAgICAgcmV0
dXJuIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdkJhc2UoY29udGV4dCwgcG5hbWUsIGluZGV4LCB2
YWwpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCAqdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbCkKIHsKICAgICBVTklNUExFTUVOVEVE
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJQYXJh
bWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJQYXJhbWV0ZXJpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7
CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBA
IC0xMDczLDcgKzEwODgsMTAgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUGFyYW1ldGVyaShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQor
Ym9vbCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFy
YW1zKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAg
ICAgewpAQCAtMTExNywxOCArMTEzNSwxOCBAQCBib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0RnJhbWVidWZm
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKQEAgLTExNTQsNyArMTE3Miw3IEBAIGJvb2wgVmFsaWRh
dGVHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiaW5kaW5nSW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCkBAIC0xMjAyLDcgKzEyMjAsNyBAQCBi
b29sIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QmluZGluZ0Rpdmlzb3IoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGJpbmRpbmdJbmRleCwgR0x1aW50IGRpdmlzb3IpCitib29sIFZhbGlk
YXRlVmVydGV4QmluZGluZ0Rpdmlzb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJp
bmRpbmdJbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0xMjI4LDcgKzEyNDYsNyBAQCBib29sIFZh
bGlkYXRlVmVydGV4QmluZGluZ0Rpdmlzb3IoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJpbmRp
bmdJbmRleCwgR0x1aW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJGb3JtYXQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJGb3JtYXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhB
dHRyaWJUeXBlIHR5cGUsCkBAIC0xMjQzLDcgKzEyNjEsNyBAQCBib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIFZhbGlkYXRlRmxvYXRW
ZXJ0ZXhGb3JtYXQoY29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGUpOwogfQogCi1ib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliSUZvcm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGUsCkBAIC0xMjU3LDcgKzEyNzUsNyBAQCBi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliSUZvcm1hdChDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiBWYWxpZGF0ZUludGVnZXJWZXJ0ZXhGb3JtYXQoY29udGV4dCwgYXR0cmliaW5kZXgsIHNp
emUsIHR5cGUpOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgYXR0cmliSW5kZXgsIEdMdWludCBiaW5kaW5nSW5kZXgpCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgYXR0cmliSW5kZXgsIEdMdWludCBiaW5kaW5nSW5kZXgpCiB7CiAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0xMjg5LDEzICsxMzA3LDEz
IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJCaW5kaW5nKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBhdHRyaWJJbmRleCwgR0x1aW50IGJpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVy
ZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTEzMzAs
NyArMTM0OCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEaXNwYXRjaENv
bXB1dGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG51bUdyb3Vwc1gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1Hcm91
cHNZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWikKQEAg
LTEzNDQsNyArMTM2Miw3IEBAIGJvb2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGUoQ29udGV4dCAq
Y29udGV4dCwKICAgICBjb25zdCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOwog
ICAgIFByb2dyYW0gKnByb2dyYW0gICA9IHN0YXRlLmdldExpbmtlZFByb2dyYW0oY29udGV4dCk7
CiAKLSAgICBpZiAocHJvZ3JhbSA9PSBudWxscHRyIHx8ICFwcm9ncmFtLT5oYXNMaW5rZWRTaGFk
ZXJTdGFnZShTaGFkZXJUeXBlOjpDb21wdXRlKSkKKyAgICBpZiAocHJvZ3JhbSA9PSBudWxscHRy
IHx8ICFwcm9ncmFtLT5nZXRFeGVjdXRhYmxlKCkuaGFzTGlua2VkU2hhZGVyU3RhZ2UoU2hhZGVy
VHlwZTo6Q29tcHV0ZSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sIGtOb0FjdGl2ZVByb2dyYW1XaXRoQ29tcHV0ZVNoYWRlcik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNzAsNyArMTM4OCw3IEBAIGJvb2wgVmFsaWRh
dGVEaXNwYXRjaENvbXB1dGUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KENvbnRleHQgKmNvbnRleHQs
IEdMaW50cHRyIGluZGlyZWN0KQorYm9vbCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50cHRyIGluZGlyZWN0KQogewogICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewpAQCAtMTM4MSw3ICsx
Mzk5LDcgQEAgYm9vbCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KENvbnRleHQgKmNv
bnRleHQsIEdMaW50cHRyIGluZGlyZWN0KQogICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNvbnRl
eHQtPmdldFN0YXRlKCk7CiAgICAgUHJvZ3JhbSAqcHJvZ3JhbSAgID0gc3RhdGUuZ2V0TGlua2Vk
UHJvZ3JhbShjb250ZXh0KTsKIAotICAgIGlmIChwcm9ncmFtID09IG51bGxwdHIgfHwgIXByb2dy
YW0tPmhhc0xpbmtlZFNoYWRlclN0YWdlKFNoYWRlclR5cGU6OkNvbXB1dGUpKQorICAgIGlmIChw
cm9ncmFtID09IG51bGxwdHIgfHwgIXByb2dyYW0tPmdldEV4ZWN1dGFibGUoKS5oYXNMaW5rZWRT
aGFkZXJTdGFnZShTaGFkZXJUeXBlOjpDb21wdXRlKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQt
PnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga05vQWN0aXZlUHJvZ3JhbVdp
dGhDb21wdXRlU2hhZGVyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQxOCw3ICsxNDM2
LDcgQEAgYm9vbCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KENvbnRleHQgKmNvbnRl
eHQsIEdMaW50cHRyIGluZGlyZWN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQmluZEltYWdlVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRJ
bWFnZVRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB1bml0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKQEAgLTE0OTMsNyArMTUxMSw3IEBAIGJvb2wgVmFsaWRhdGVCaW5kSW1hZ2VUZXh0dXJlKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQ
cm9ncmFtUmVzb3VyY2VMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1J
bnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xjaGFyICpuYW1lKQpAQCAtMTUyNCwxNSArMTU0MiwxNSBAQCBib29sIFZhbGlkYXRlR2V0UHJv
Z3JhbVJlc291cmNlTG9jYXRpb24oQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZWl2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlaXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcm9wQ291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpwcm9wcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0xNTgxLDExICsxNTk5LDEx
IEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VpdihDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUludGVyZmFjZWl2
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUludGVyZmFjZWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqcGFyYW1zKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCBFU18zXzEpCiAgICAgewpAQCAtMTY0MSwxOSArMTY1OSwxOSBAQCBib29sIFZhbGlkYXRlR2V0
UHJvZ3JhbUludGVyZmFjZWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1JbnRlcmZhY2VpdlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBVTklN
UExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBWYWxpZGF0
ZUdlbk9yRGVsZXRlRVMzMShDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKQorc3RhdGljIGJvb2wg
VmFsaWRhdGVHZW5PckRlbGV0ZUVTMzEoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbikK
IHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsK
QEAgLTE2NjQsMTcgKzE2ODIsMjEgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVHZW5PckRlbGV0ZUVT
MzEoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbikKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRl
bGV0ZShjb250ZXh0LCBuKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdlblByb2dyYW1QaXBlbGluZXMo
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5lcykK
K2Jvb2wgVmFsaWRhdGVHZW5Qcm9ncmFtUGlwZWxpbmVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5lcykK
IHsKICAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZUVTMzEoY29udGV4dCwgbik7CiB9CiAK
LWJvb2wgVmFsaWRhdGVEZWxldGVQcm9ncmFtUGlwZWxpbmVzKENvbnRleHQgKmNvbnRleHQsIEdM
aW50IG4sIGNvbnN0IFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXMpCitib29sIFZhbGlkYXRl
RGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXMpCiB7CiAg
ICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMxKGNvbnRleHQsIG4pOwogfQogCi1ib29s
IFZhbGlkYXRlQmluZFByb2dyYW1QaXBlbGluZShDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlw
ZWxpbmVJRCBwaXBlbGluZSkKK2Jvb2wgVmFsaWRhdGVCaW5kUHJvZ3JhbVBpcGVsaW5lKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lKQogewogICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewpAQCAtMTY5MSw3
ICsxNzEzLDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRQcm9ncmFtUGlwZWxpbmUoQ29udGV4dCAqY29u
dGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVJc1Byb2dyYW1QaXBlbGluZShDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFt
UGlwZWxpbmVJRCBwaXBlbGluZSkKK2Jvb2wgVmFsaWRhdGVJc1Byb2dyYW1QaXBlbGluZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSkKIHsKICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKQEAgLTE3MDIs
NyArMTcyNCw3IEBAIGJvb2wgVmFsaWRhdGVJc1Byb2dyYW1QaXBlbGluZShDb250ZXh0ICpjb250
ZXh0LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVVzZVByb2dyYW1TdGFnZXMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVVc2VQcm9ncmFtU3RhZ2VzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgc3RhZ2VzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0pCkBAIC0xNzExLDcgKzE3MzMs
NyBAQCBib29sIFZhbGlkYXRlVXNlUHJvZ3JhbVN0YWdlcyhDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUFjdGl2ZVNoYWRlclByb2dyYW0oQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVBY3RpdmVTaGFkZXJQcm9ncmFtKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFt
UGlwZWxpbmVJRCBwaXBlbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtKQogewpAQCAtMTcxOSw3ICsxNzQxLDcgQEAgYm9vbCBWYWxp
ZGF0ZUFjdGl2ZVNoYWRlclByb2dyYW0oQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVDcmVhdGVTaGFkZXJQcm9ncmFtdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlclByb2dyYW12KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqc3RyaW5n
cykKQEAgLTE3MjgsMzIgKzE3NTAsMzIgQEAgYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlclByb2dy
YW12KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0UHJvZ3JhbVBpcGVsaW5laXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRQcm9ncmFtUGlwZWxpbmVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbVBp
cGVsaW5lKENvbnRleHQgKmNvbnRleHQsIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lKQorYm9v
bCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVJbmZv
TG9nKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5lSW5m
b0xvZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9Mb2cpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmluZm9Mb2cpCiB7CiAg
ICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZU1lbW9yeUJhcnJpZXIoQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBiYXJyaWVycykKK2Jv
b2wgVmFsaWRhdGVNZW1vcnlCYXJyaWVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYml0Zmll
bGQgYmFycmllcnMpCiB7CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVT
XzNfMSkKICAgICB7CkBAIC0xNzgxLDcgKzE4MDMsNyBAQCBib29sIFZhbGlkYXRlTWVtb3J5QmFy
cmllcihDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIGJhcnJpZXJzKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTWVtb3J5QmFycmllckJ5UmVnaW9uKENvbnRleHQgKmNv
bnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpCitib29sIFZhbGlkYXRlTWVtb3J5QmFycmllckJ5
UmVnaW9uKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpCiB7CiAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0x
ODA3LDcgKzE4MjksNyBAQCBib29sIFZhbGlkYXRlTWVtb3J5QmFycmllckJ5UmVnaW9uKENvbnRl
eHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVTYW1wbGVNYXNraShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFza051
bWJlciwgR0xiaXRmaWVsZCBtYXNrKQorYm9vbCBWYWxpZGF0ZVNhbXBsZU1hc2tpKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCiB7CiAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CkBAIC0x
ODE4LDcgKzE4NDAsNyBAQCBib29sIFZhbGlkYXRlU2FtcGxlTWFza2koQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKICAgICByZXR1cm4gVmFsaWRh
dGVTYW1wbGVNYXNraUJhc2UoY29udGV4dCwgbWFza051bWJlciwgbWFzayk7CiB9CiAKLWJvb2wg
VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLApAQCAtMTgzMiw3ICsxODU0
LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUVYVChDb250ZXh0ICpjb250ZXh0
LAogCiAgICAgaWYgKHRleHR1cmUudmFsdWUgIT0gMCkKICAgICB7Ci0gICAgICAgIGdsOjpUZXh0
dXJlICp0ZXggPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1cmUpOworICAgICAgICBUZXh0dXJl
ICp0ZXggPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1cmUpOwogCiAgICAgICAgIC8vIFtFWFRf
Z2VvbWV0cnlfc2hhZGVyXSBTZWN0aW9uIDkuMi44ICJBdHRhY2hpbmcgVGV4dHVyZSBJbWFnZXMg
dG8gYSBGcmFtZWJ1ZmZlciIKICAgICAgICAgLy8gQW4gSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBn
ZW5lcmF0ZWQgaWYgPHRleHR1cmU+IGlzIG5vdCB0aGUgbmFtZSBvZiBhIHRleHR1cmUgb2JqZWN0
LgpAQCAtMTg2Niw3ICsxODg4LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUVY
VChDb250ZXh0ICpjb250ZXh0LAogfQogCiAvLyBHTF9PRVNfdGV4dHVyZV9zdG9yYWdlX211bHRp
c2FtcGxlXzJkX2FycmF5Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9F
Uyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHNpemVkaW50ZXJuYWxmb3JtYXQsCkBAIC0xODk3LDcgKzE5
MTksNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGVPRVMoQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
KTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlRVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKQEAgLTE5MTgsNyAr
MTk0MCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVChDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFBy
b2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMz
MV9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTMzFfYXV0b2dlbi5oCmluZGV4IGI3NDMyYzAyZTUyMGJjMThhYjU1MGQzYWNhNTI0MTdk
NDE4NmFhNmUuLjA1NjM0Mjg1MDJkY2YxN2Q5NjYzMGNiNWI0NmViMmY4ZWM0NTkyZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMz
MV9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FUzMxX2F1dG9nZW4uaApAQCAtMTcsMTAgKzE3LDEwIEBAIG5hbWVzcGFjZSBnbAog
ewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUFjdGl2ZVNoYWRlclByb2dyYW0oQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVBY3RpdmVTaGFkZXJQcm9ncmFtKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFt
UGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCaW5kSW1h
Z2VUZXh0dXJlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmluZEltYWdlVGV4dHVy
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHVuaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4
dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLApA
QCAtMjgsMjk0ICsyOCwzMDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmUoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxheWVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGFjY2VzcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQpOwotYm9vbCBWYWxpZGF0ZUJpbmRQcm9n
cmFtUGlwZWxpbmUoQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXIoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVCaW5kUHJvZ3JhbVBpcGVsaW5lKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVCaW5kVmVy
dGV4QnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgYmluZGluZ2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
dHJpZGUpOwotYm9vbCBWYWxpZGF0ZUNyZWF0ZVNoYWRlclByb2dyYW12KENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlQ3JlYXRlU2hhZGVyUHJvZ3JhbXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJUeXBlIHR5cGVQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpz
dHJpbmdzKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVQcm9ncmFtUGlwZWxpbmVzKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbVBpcGVs
aW5lSUQgKnBpcGVsaW5lc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1fZ3Jv
dXBzX3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1fZ3JvdXBzX3ks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1fZ3JvdXBzX3opOwotYm9v
bCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KENvbnRleHQgKmNvbnRleHQsIEdMaW50
cHRyIGluZGlyZWN0KTsKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5kaXJlY3QoQ29udGV4dCAq
Y29udGV4dCwgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLCBjb25zdCB2b2lkICppbmRpcmVjdCk7
Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGVJbmRpcmVjdChjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGludHB0ciBpbmRpcmVjdCk7Citib29sIFZhbGlkYXRlRHJhd0FycmF5c0luZGlyZWN0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqaW5kaXJlY3QpOworYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luZGlyZWN0
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVjdCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVi
dWZmZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUdlblByb2dyYW1QaXBlbGluZXMoQ29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBQcm9ncmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFj
a2VkKTsKLWJvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVH
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
RnJhbWVidWZmZXJQYXJhbWV0ZXJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZUdlblByb2dyYW1QaXBlbGlu
ZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBy
b2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldEJvb2xl
YW5pX3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xlYW4gKmRhdGEpOworYm9v
bCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJv
b2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFt
ZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1J
bnRlcmZhY2VpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0TXVsdGlz
YW1wbGVmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFs
KTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1QaXBlbGluZUluZm9Mb2coQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9Mb2cpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dy
YW1QaXBlbGluZWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmluZm9Mb2cpOworYm9vbCBWYWxpZGF0
ZUdldFByb2dyYW1QaXBlbGluZWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldFByb2dyYW1SZXNvdXJjZUluZGV4KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRl
R2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNo
YXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24oY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBW
YWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZU5hbWUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKTsKLWJvb2wg
VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKK2Jvb2wg
VmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50
ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByb3BDb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnByb3BzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZl
bFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleExl
dmVsUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVJc1Byb2dyYW1QaXBl
bGluZShDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCk7
Ci1ib29sIFZhbGlkYXRlTWVtb3J5QmFycmllcihDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxk
IGJhcnJpZXJzKTsKLWJvb2wgVmFsaWRhdGVNZW1vcnlCYXJyaWVyQnlSZWdpb24oQ29udGV4dCAq
Y29udGV4dCwgR0xiaXRmaWVsZCBiYXJyaWVycyk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xZihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlSXNQcm9ncmFtUGlwZWxpbmUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQp
OworYm9vbCBWYWxpZGF0ZU1lbW9yeUJhcnJpZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xi
aXRmaWVsZCBiYXJyaWVycyk7Citib29sIFZhbGlkYXRlTWVtb3J5QmFycmllckJ5UmVnaW9uKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgYmFycmllcnMpOworYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTFmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWkoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjApOwotYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0xaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MXVpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHYwKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUp
OwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdjEpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmZ2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHYxKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMml2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0
aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtMnVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
M2Z2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZnYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2koY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgdjIpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2l2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwotYm9v
bCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3VpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0zdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdjIpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3VpdihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7Ci1i
b29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtNGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
djIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYzKTsKLWJvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTRmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtNGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtNGkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdjMpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00aXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpOwot
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYzKTsKLWJv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTR1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJm
dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgy
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZVNhbXBsZU1hc2tpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBH
TGJpdGZpZWxkIG1hc2spOwotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlTWFza2koY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzayk7Citib29sIFZhbGlk
YXRlVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxv
Y2F0aW9ucyk7Ci1ib29sIFZhbGlkYXRlVXNlUHJvZ3JhbVN0YWdlcyhDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVVzZVByb2dyYW1TdGFnZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5l
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBzdGFnZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCk7Ci1ib29sIFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUoQ29udGV4dCAqY29u
dGV4dCwgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkJpbmRpbmcoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGF0dHJpYmluZGV4LCBH
THVpbnQgYmluZGluZ2luZGV4KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJGb3JtYXQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW1QaXBlbGluZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCk7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgYXR0cmliaW5kZXgsIEdMdWludCBiaW5kaW5naW5kZXgpOworYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSUZv
cm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRyaWJU
eXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cmVsYXRpdmVvZmZzZXQpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBiaW5kaW5naW5kZXgsIEdMdWludCBkaXZpc29yKTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhCaW5kaW5nRGl2aXNvcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgYmluZGluZ2luZGV4LCBHTHVpbnQgZGl2aXNvcik7CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAog
I2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTMzFfQVVUT0dFTl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMyLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMi5j
cHAKaW5kZXggNzA0NWJkNjg2NTNiNDhlODZkYTQ4N2UzMzRiNDZhMGNiMGZmMTZiZS4uOWM0MTU0
ZWIxN2M5MzMzOTFkN2UwZTdmZWFkMTIwOWRjZjU5Njg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMyLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzIuY3BwCkBAIC0y
NSw0NyArMjUsMTA0IEBAIG5hbWVzcGFjZSBnbAogewogdXNpbmcgbmFtZXNwYWNlIGVycjsKIAot
Ym9vbCBWYWxpZGF0ZUJsZW5kQmFycmllcihDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0
ZUJsZW5kQmFycmllcihjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaShDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKK2Jvb2wg
VmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKQogeworICAgIGlmIChidWYg
Pj0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnMp
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFM
VUUsIGtFeGNlZWRzTWF4RHJhd0J1ZmZlcnMpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFWYWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZShjb250ZXh0LCBtb2Rl
UkdCLCBtb2RlQWxwaGEpKQorICAgIHsKKyAgICAgICAgLy8gZXJyb3IgYWxyZWFkeSBnZW5lcmF0
ZWQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1
ZiwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCiB7CisgICAgaWYgKGJ1ZiA+PSBz
dGF0aWNfY2FzdDxHTHVpbnQ+KGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3QnVmZmVycykpCisg
ICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
a0V4Y2VlZHNNYXhEcmF3QnVmZmVycyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIVZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb250ZXh0LCBtb2RlKSkKKyAgICB7Cisg
ICAgICAgIC8vIGVycm9yIGFscmVhZHkgZ2VuZXJhdGVkCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1Nl
cGFyYXRlaShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRl
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3Jj
UkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSkKIHsKKyAgICBpZiAoYnVmID49
IHN0YXRpY19jYXN0PEdMdWludD4oY29udGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCBrRXhjZWVkc01heERyYXdCdWZmZXJzKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZShjb250ZXh0LCBzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSkKKyAgICB7CisgICAgICAgIC8vIGVycm9yIGFscmVh
ZHkgZ2VuZXJhdGVkCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY2koQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCkKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNp
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBk
c3QpCiB7CisgICAgaWYgKGJ1ZiA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbnRleHQtPmdldENh
cHMoKS5tYXhEcmF3QnVmZmVycykpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9u
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwga0V4Y2VlZHNNYXhEcmF3QnVmZmVycyk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlQmxlbmRGdW5jKGNvbnRl
eHQsIHNyYywgZHN0KSkKKyAgICB7CisgICAgICAgIC8vIGVycm9yIGFscmVhZHkgZ2VuZXJhdGVk
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUNvbG9yTWFza2koQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVD
b2xvck1hc2tpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gciwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSkKIHsK
KyAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCku
bWF4RHJhd0J1ZmZlcnMpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfVkFMVUUsIGtJbmRleEV4Y2VlZHNNYXhEcmF3QnVmZmVyKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQ29weUltYWdlU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlJ
bWFnZVN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzcmNOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHNyY1RhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNy
Y0xldmVsLApAQCAtODUsMTIgKzE0MiwxNCBAQCBib29sIFZhbGlkYXRlQ29weUltYWdlU3ViRGF0
YShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
RGVidWdNZXNzYWdlQ2FsbGJhY2soQ29udGV4dCAqY29udGV4dCwgR0xERUJVR1BST0MgY2FsbGJh
Y2ssIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxs
YmFjayhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMREVCVUdQUk9DIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2woQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCkBAIC0xMDEsNyArMTYwLDcgQEAgYm9vbCBWYWxp
ZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2woQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydChDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGlkLApAQCAtMTEyLDEyICsxNzEsMjUgQEAgYm9vbCBWYWxp
ZGF0ZURlYnVnTWVzc2FnZUluc2VydChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlRGlzYWJsZWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4KQorYm9vbCBWYWxpZGF0ZURpc2FibGVpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKKyAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQkxFTkQ6CisgICAgICAgICAgICBpZiAoaW5k
ZXggPj0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZl
cnMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25F
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCBrSW5kZXhFeGNlZWRzTWF4RHJhd0J1ZmZlcik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCBrRW51bU5vdFN1cHBvcnRlZCk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJh
d0VsZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdF
bGVtZW50c0Jhc2VWZXJ0ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCkBAIC0xMzMsNyArMjA1LDcg
QEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gVmFsaWRhdGVEcmF3RWxlbWVudHNDb21tb24oY29udGV4dCwgbW9kZSwgY291
bnQsIHR5cGUsIGluZGljZXMsIDEpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQmFzZVZlcnRleChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxl
bWVudHNUeXBlIHR5cGUsCkBAIC0xNTAsNyArMjIyLDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFs
aWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBl
LCBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVs
ZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdSYW5n
ZUVsZW1lbnRzQmFzZVZlcnRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKQEAgLTE4MiwyNiAr
MjU0LDI4IEBAIGJvb2wgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgLy8gTm90ZSB0
aGF0IHJlc29sdmluZyB0aGUgaW5kZXggcmFuZ2UgaXMgYSBiaXQgc2xvdy4gV2Ugc2hvdWxkIHBy
b2JhYmx5IG9wdGltaXplIHRoaXMuCi0gICAgSW5kZXhSYW5nZSBpbmRleFJhbmdlOwotICAgIEFO
R0xFX1ZBTElEQVRJT05fVFJZKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+
Z2V0SW5kZXhSYW5nZShjb250ZXh0LCB0eXBlLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kaWNlcywgJmluZGV4UmFuZ2UpKTsKLQotICAgIGlmIChpbmRleFJhbmdlLmVuZCA+IGVuZCB8
fCBpbmRleFJhbmdlLnN0YXJ0IDwgc3RhcnQpCi0gICAgewotICAgICAgICAvLyBHTCBzcGVjIHNh
eXMgdGhhdCBiZWhhdmlvciBpbiB0aGlzIGNhc2UgaXMgdW5kZWZpbmVkIC0gZ2VuZXJhdGluZyBh
biBlcnJvciBpcyBmaW5lLgotICAgICAgICBjb250ZXh0LT52YWxpZGF0aW9uRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sIGtFeGNlZWRzRWxlbWVudFJhbmdlKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVuYWJsZWko
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQorYm9vbCBWYWxp
ZGF0ZUVuYWJsZWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4KQogeworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9C
TEVORDoKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbnRl
eHQtPmdldENhcHMoKS5tYXhEcmF3QnVmZmVycykpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbmRleEV4
Y2VlZHNNYXhEcmF3QnVmZmVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtFbnVtTm90U3Vw
cG9ydGVkKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLApAQCAtMjEwLDQ0ICsyODQs
NDQgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZShDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNvdXJjZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKnNldmVyaXRpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hh
ciAqbWVzc2FnZUxvZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xl
bnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVu
dW0gKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpzZXZl
cml0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICps
ZW5ndGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1l
c3NhZ2VMb2cpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzKENvbnRleHQgKmNvbnRleHQpCitib29sIFZhbGlkYXRlR2V0R3JhcGhp
Y3NSZXNldFN0YXR1cyhjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWwoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVHZXRPYmplY3RMYWJlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0T2JqZWN0UHRyTGFiZWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGNoYXIgKmxhYmVsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKmxhYmVsKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
UG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQor
Ym9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBw
bmFtZSwgdm9pZCAqY29uc3QgKnBhcmFtcykKIHsKICAgICBWZXJzaW9uIGNsaWVudFZlcnNpb24g
PSBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCk7CiAKQEAgLTI4NSw3NiArMzU5LDg5IEBAIGJv
b2wgVmFsaWRhdGVHZXRQb2ludGVydihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZv
aWQgKipwYXJhbXMpCiAgICAgfQogfQogCi1ib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRl
cklpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJ
aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVH
ZXRTYW1wbGVyUGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dFNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0blVuaWZvcm1mdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5Vbmlm
b3JtaXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRuVW5pZm9ybXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldG5V
bmlmb3JtdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZGkoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQorYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZGkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogeworICAg
IHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CTEVORDoKKyAgICAgICAg
ICAgIGlmIChpbmRleCA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbnRleHQtPmdldENhcHMoKS5t
YXhEcmF3QnVmZmVycykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfVkFMVUUsIGtJbmRleEV4Y2VlZHNNYXhEcmF3QnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPnZh
bGlkYXRpb25FcnJvcihHTF9JTlZBTElEX0VOVU0sIGtFbnVtTm90U3VwcG9ydGVkKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVNaW5TYW1wbGVTaGFkaW5nKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdmFsdWUp
Citib29sIFZhbGlkYXRlTWluU2FtcGxlU2hhZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGZsb2F0IHZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlT2Jq
ZWN0TGFiZWwoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVPYmplY3RMYWJlbChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVu
dGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLApAQCAtMzYzLDIyICs0NTAsMjUgQEAgYm9v
bCBWYWxpZGF0ZU9iamVjdExhYmVsKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVPYmplY3RQdHJMYWJlbChDb250ZXh0ICpjb250ZXh0LCBjb25z
dCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKQorYm9vbCBW
YWxpZGF0ZU9iamVjdFB0ckxhYmVsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqbGFiZWwpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQ
YXRjaFBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1
ZSkKK2Jvb2wgVmFsaWRhdGVQYXRjaFBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVBvcERlYnVnR3JvdXAoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVQ
b3BEZWJ1Z0dyb3VwKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVQcmltaXRpdmVCb3VuZGluZ0JveChDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVByaW1pdGl2ZUJvdW5kaW5nQm94KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5YLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWluWSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1pblosCkBAIC0zOTEsNyArNDgxLDcgQEAg
Ym9vbCBWYWxpZGF0ZVByaW1pdGl2ZUJvdW5kaW5nQm94KENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91cChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBsZW5ndGgsCkBAIC00MDAsNyArNDkwLDcgQEAgYm9vbCBWYWxpZGF0ZVB1c2hE
ZWJ1Z0dyb3VwKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVSZWFkblBpeGVscyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlYWRu
UGl4ZWxzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC00MDgsMTIgKzQ5OCwxMiBAQCBib29sIFZh
bGlkYXRlUmVhZG5QaXhlbHMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmRhdGEpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTYW1w
bGVyUGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2FtcGxlclBh
cmFtZXRlcklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqcGFyYW0pCkBAIC00MjEsNyArNTExLDcgQEAgYm9vbCBWYWxpZGF0ZVNhbXBs
ZXJQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbSkKQEAgLTQyOSwxMiArNTE5
LDE1IEBAIGJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4QnVmZmVyKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgQnVmZmVySUQg
YnVmZmVyKQorYm9vbCBWYWxpZGF0ZVRleEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleEJ1
ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4QnVmZmVyUmFuZ2Uo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCkBAIC00
NDQsNyArNTM3LDcgQEAgYm9vbCBWYWxpZGF0ZVRleEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCkBAIC00
NTIsNyArNTQ1LDcgQEAgYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdihDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVp
dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1z
KQpAQCAtNDYwLDcgKzU1Myw3IEBAIGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2KENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdG9y
YWdlM0RNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3Jh
Z2UzRE11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzJf
YXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25FUzMyX2F1dG9nZW4uaAppbmRleCBlMWI0OWIwNzRlMDQzNzMxMmExNWYxM2Y5MTQzMTZmMmFl
ZDAyZTA4Li5iNjIxYjM4Njc0YzA1YTM1OWM2ZjI3YzhiNDYzMmY2NjY5NzNjMjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzJf
YXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMzMl9hdXRvZ2VuLmgKQEAgLTE3LDIzICsxNywyNiBAQCBuYW1lc3BhY2UgZ2wKIHsK
IGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRhdGVCbGVuZEJhcnJpZXIoQ29udGV4dCAqY29u
dGV4dCk7Ci1ib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaShDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7Ci1ib29s
IFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJ1ZiwgR0xl
bnVtIG1vZGUpOwotYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlaShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUJsZW5kQmFycmllcihjb25zdCBDb250ZXh0ICpjb250ZXh0KTsK
K2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKTsKK2Jvb2wgVmFs
aWRhdGVCbGVuZEVxdWF0aW9uaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBH
TGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGVpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRzdEFscGhhKTsKLWJvb2wgVmFsaWRhdGVCbGVuZEZ1bmNpKENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpOwotYm9vbCBW
YWxpZGF0ZUNvbG9yTWFza2koQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1
bmNpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51
bSBkc3QpOworYm9vbCBWYWxpZGF0ZUNvbG9yTWFza2koY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiByLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcs
CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBhKTsKLWJvb2wgVmFsaWRhdGVDb3B5SW1hZ2VTdWJEYXRhKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weUltYWdlU3ViRGF0YShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNyY05hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjVGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjTGV2ZWwsCkBAIC00OSwzNiArNTIsMzgg
QEAgYm9vbCBWYWxpZGF0ZUNvcHlJbWFnZVN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3JjV2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHNyY0hlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgc3JjRGVwdGgpOwotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNh
bGxiYWNrKENvbnRleHQgKmNvbnRleHQsIEdMREVCVUdQUk9DIGNhbGxiYWNrLCBjb25zdCB2b2lk
ICp1c2VyUGFyYW0pOwotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2woQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFjayhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQUk9D
IGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnVzZXJQYXJhbSk7Citib29sIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNv
dXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpOwotYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2Fn
ZUluc2VydChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2Vy
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKmJ1Zik7Ci1ib29sIFZhbGlkYXRlRGlzYWJsZWkoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKLWJvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNCYXNlVmVydGV4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
RGlzYWJsZWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4KTsKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVN
b2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1l
bnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJhc2V2ZXJ0ZXgpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlVmVydGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1l
bnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpOwotYm9vbCBW
YWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVN
b2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGVuZCwKQEAgLTg2LDc2ICs5MSw3OSBAQCBib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCk7
Ci1ib29sIFZhbGlkYXRlRW5hYmxlaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgpOwotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUVuYWJsZWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1
cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0
ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCk7Ci1ib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gKnNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSAqdHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNldmVy
aXRpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZyk7Ci1i
b29sIFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1cyhDb250ZXh0ICpjb250ZXh0KTsKLWJv
b2wgVmFsaWRhdGVHZXRPYmplY3RMYWJlbChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnNvdXJjZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqdHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbWVzc2FnZUxvZyk7Citib29sIFZhbGlkYXRlR2V0
R3JhcGhpY3NSZXNldFN0YXR1cyhjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRh
dGVHZXRPYmplY3RMYWJlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCk7Ci1ib29sIFZhbGlkYXRlR2V0
T2JqZWN0UHRyTGFiZWwoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xjaGFyICpsYWJlbCk7Citib29sIFZhbGlkYXRlR2V0T2JqZWN0UHRyTGFiZWwoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKTsKLWJvb2wgVmFsaWRh
dGVHZXRQb2ludGVydihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCk7Citi
b29sIFZhbGlkYXRlR2V0UG9pbnRlcnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBu
YW1lLCB2b2lkICpjb25zdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVySXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1l
dGVySWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRl
cklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdihDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcyk7Ci1ib29s
IFZhbGlkYXRlR2V0blVuaWZvcm1mdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dG5Vbmlmb3JtZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0blVuaWZvcm1pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtdWl2KENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVHZXRuVW5pZm9ybXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZGkoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKLWJvb2wgVmFsaWRhdGVNaW5TYW1wbGVT
aGFkaW5nKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdmFsdWUpOwotYm9vbCBWYWxpZGF0ZU9i
amVjdExhYmVsKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZGkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRh
dGVNaW5TYW1wbGVTaGFkaW5nKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdmFsdWUp
OworYm9vbCBWYWxpZGF0ZU9iamVjdExhYmVsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCk7Ci1i
b29sIFZhbGlkYXRlT2JqZWN0UHRyTGFiZWwoQ29udGV4dCAqY29udGV4dCwgY29uc3Qgdm9pZCAq
cHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCk7Ci1ib29sIFZhbGlkYXRl
UGF0Y2hQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFs
dWUpOwotYm9vbCBWYWxpZGF0ZVBvcERlYnVnR3JvdXAoQ29udGV4dCAqY29udGV4dCk7Ci1ib29s
IFZhbGlkYXRlUHJpbWl0aXZlQm91bmRpbmdCb3goQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVPYmplY3RQdHJMYWJlbChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKmxhYmVsKTsKK2Jvb2wgVmFsaWRhdGVQYXRjaFBhcmFtZXRlcmkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Citib29sIFZhbGlkYXRlUG9w
RGVidWdHcm91cChjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVQcmltaXRp
dmVCb3VuZGluZ0JveChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgbWluWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IG1pblksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBtaW5aLApAQCAtMTY0LDEyICsxNzIsMTIgQEAgYm9vbCBWYWxpZGF0ZVByaW1pdGl2
ZUJvdW5kaW5nQm94KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCBtYXhZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgbWF4WiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IG1heFcpOwotYm9vbCBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlUHVzaERlYnVnR3JvdXAoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1lc3Nh
Z2UpOwotYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlUmVhZG5QaXhlbHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTE3NywzNCArMTg1LDM0
IEBAIGJvb2wgVmFsaWRhdGVSZWFkblBpeGVscyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZVNhbXBs
ZXJQYXJhbWV0ZXJJaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpkYXRhKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
YW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
aW50ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXYoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBz
YW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBh
cmFtKTsKLWJvb2wgVmFsaWRhdGVUZXhCdWZmZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVUZXhCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQp
OwotYm9vbCBWYWxpZGF0ZVRleEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlVGV4QnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7
Ci1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVySWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0
YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRVMzX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzX2F1dG9nZW4uaAppbmRleCAxNDA5YjEzZmUyZjJi
NWUyOGVlMzhkYjA3YTQ4OTgzYzc2ZWUzMWJkLi44MDNkYTFlZjAwZWM2Njc0YTg5Y2Q0MDZhZTM5
NWZiMWUyMDBjMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTM19hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzNfYXV0b2dlbi5oCkBAIC0xNywyMiArMTcsMjQg
QEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRlQmVnaW5R
dWVyeShDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkLCBRdWVyeUlEIGlk
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVCZWdpblRyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNv
bnRleHQsIFByaW1pdGl2ZU1vZGUgcHJpbWl0aXZlTW9kZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRl
QmluZEJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQsIFF1ZXJ5SUQg
aWRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgUHJpbWl0aXZlTW9kZSBwcmltaXRpdmVNb2RlUGFja2VkKTsKK2Jvb2wg
VmFsaWRhdGVCaW5kQnVmZmVyQmFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJSYW5n
ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJSYW5nZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKLWJvb2wgVmFsaWRhdGVCaW5k
U2FtcGxlcihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgdW5pdCwgU2FtcGxlcklEIHNhbXBsZXJQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUJpbmRUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2VkKTsKLWJvb2wg
VmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBh
cnJheVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlQmluZFNhbXBsZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IHVuaXQsIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVCaW5kVHJh
bnNmb3JtRmVlZGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCk7Citib29sIFZhbGlkYXRl
QmluZFZlcnRleEFycmF5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgYXJy
YXlQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNyY1gxLApAQCAtNDMsMTYgKzQ1LDI4IEBAIGJvb2wgVmFsaWRhdGVC
bGl0RnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHN0WTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0Zmll
bGQgbWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcik7Ci1i
b29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJmaShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUNsZWFyQnVmZmVyZmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBkZXB0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0ZW5jaWwpOwotYm9vbCBWYWxpZGF0
ZUNsZWFyQnVmZmVyZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVy
aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29u
c3QgR0xpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcnVpdihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTHVpbnQgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVDbGllbnRXYWl0U3luYyhDb250ZXh0ICpjb250ZXh0LCBHTHN5
bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7Ci1ib29sIFZhbGlk
YXRlQ29tcHJlc3NlZFRleEltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVD
bGVhckJ1ZmZlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJ1aXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7Citib29sIFZh
bGlkYXRlQ2xpZW50V2FpdFN5bmMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHN5bmMgc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJpdGZpZWxkIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
IHRpbWVvdXQpOworYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LApAQCAtNjIsNyArNzYsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleElt
YWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsCkBAIC03NCwxMyArODgsMTMgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb3B5QnVmZmVyU3ViRGF0
YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlCdWZmZXJTdWJEYXRhKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
QmluZGluZyByZWFkVGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJ1ZmZlckJpbmRpbmcgd3JpdGVUYXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnRwdHIgcmVhZE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludHB0ciB3cml0ZU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpcHRyIHNpemUpOwotYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0QoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtOTAs
MTM2ICsxMDQsMTU1IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRChDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlUXVlcmll
cyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCk7
Ci1ib29sIFZhbGlkYXRlRGVsZXRlU2FtcGxlcnMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBj
b3VudCwgY29uc3QgU2FtcGxlcklEICpzYW1wbGVyc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlRGVs
ZXRlU3luYyhDb250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYyk7Ci1ib29sIFZhbGlkYXRlRGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2tzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVs
ZXRlUXVlcmllcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5
SUQgKmlkc1BhY2tlZCk7Citib29sIFZhbGlkYXRlRGVsZXRlU2FtcGxlcnMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xzaXplaSBjb3VudCwgY29uc3QgU2FtcGxlcklEICpzYW1wbGVyc1BhY2tl
ZCk7Citib29sIFZhbGlkYXRlRGVsZXRlU3luYyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHN5
bmMgc3luYyk7Citib29sIFZhbGlkYXRlRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJh
bnNmb3JtRmVlZGJhY2tJRCAqaWRzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVWZXJ0ZXhB
cnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBWZXJ0ZXhBcnJheUlEICph
cnJheXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWxldGVWZXJ0ZXhBcnJheXMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCk7Ci1ib29s
IFZhbGlkYXRlRHJhd0J1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBH
TGVudW0gKmJ1ZnMpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKK2Jvb2wgVmFsaWRhdGVEcmF3RWxl
bWVudHNJbnN0YW5jZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCk7Ci1ib29sIFZh
bGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVE
cmF3UmFuZ2VFbGVtZW50cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpp
bmRpY2VzKTsKLWJvb2wgVmFsaWRhdGVFbmRRdWVyeShDb250ZXh0ICpjb250ZXh0LCBRdWVyeVR5
cGUgdGFyZ2V0UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVkYmFjayhDb250
ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVGZW5jZVN5bmMoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncyk7Ci1ib29sIFZhbGlkYXRlRmx1c2hN
YXBwZWRCdWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQpOworYm9vbCBW
YWxpZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9v
bCBWYWxpZGF0ZUZlbmNlU3luYyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29uZGl0
aW9uLCBHTGJpdGZpZWxkIGZsYWdzKTsKK2Jvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJh
bmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKTsKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZl
clRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsYXllcik7Ci1ib29sIFZhbGlkYXRlR2VuUXVlcmllcyhDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFF1ZXJ5SUQgKmlkc1BhY2tlZCk7Ci1ib29sIFZhbGlk
YXRlR2VuU2FtcGxlcnMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBjb3VudCwgU2FtcGxlcklE
ICpzYW1wbGVyc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2VuVHJhbnNmb3JtRmVlZGJhY2tzKENv
bnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRzUGFja2Vk
KTsKLWJvb2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xzaXpl
aSBuLCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZW5RdWVy
aWVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgUXVlcnlJRCAqaWRz
UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVHZW5TYW1wbGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIGNvdW50LCBjb25zdCBTYW1wbGVySUQgKnNhbXBsZXJzUGFja2VkKTsKK2Jvb2wg
VmFsaWRhdGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQYWNr
ZWQpOworYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFycmF5cyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHNpemVpIG4sIGNvbnN0IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCk7Citib29sIFZh
bGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpOwotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpOworYm9v
bCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3Jtc2l2KENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybXNpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHVuaWZvcm1Db3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdWludCAqdW5pZm9ybUluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50NjQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKnBh
cmFtcyk7Citib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlR2V0RnJhZ0RhdGFMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKmNvbnN0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEZy
YWdEYXRhTG9jYXRpb24oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRh
dGVHZXRJbnRlZ2VyNjRpX3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGludDY0ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRl
R2V0SW50ZWdlcmlfdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgsIEdMaW50ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbGZvcm1hdGl2KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0SW50
ZWdlcjY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50
NjQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXJpX3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqZGF0YSk7Citi
b29sIFZhbGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnko
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpOwotYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5T2JqZWN0dWl2KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWRQYWNrZWQsIEdM
ZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXYoQ29u
dGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnYoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYmluYXJ5
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5
KTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRR
dWVyeWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBR
dWVyeVR5cGUgdGFyZ2V0UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29s
IFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldFN0cmluZ2koQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCk7
Ci1ib29sIFZhbGlkYXRlR2V0U3luY2l2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUdldFN0cmluZ2koY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hbWUsIEdMdWludCBp
bmRleCk7Citib29sIFZhbGlkYXRlR2V0U3luY2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc3luYyBzeW5jLAogICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqdmFsdWVzKTsKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFs
dWVzKTsKK2Jvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3Jt
QmxvY2tJbmRleChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKK2Jv
b2wgVmFsaWRhdGVHZXRVbmlmb3JtQmxvY2tJbmRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAq
dW5pZm9ybUJsb2NrTmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybUluZGljZXMoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtSW5kaWNlcyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
dW5pZm9ybUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqY29uc3QgKnVuaWZvcm1OYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgKnVuaWZvcm1JbmRpY2VzKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp1bmlmb3JtSW5kaWNlcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybXVpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJp
Ykl1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdWlu
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJJaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdl
dFZlcnRleEF0dHJpYkl1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZm
ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBudW1BdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlSW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCkBAIC0yMjcs
NTEgKzI2MCw1MSBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsK
LWJvb2wgVmFsaWRhdGVJc1F1ZXJ5KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWRQYWNrZWQp
OwotYm9vbCBWYWxpZGF0ZUlzU2FtcGxlcihDb250ZXh0ICpjb250ZXh0LCBTYW1wbGVySUQgc2Ft
cGxlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlSXNTeW5jKENvbnRleHQgKmNvbnRleHQsIEdMc3lu
YyBzeW5jKTsKLWJvb2wgVmFsaWRhdGVJc1RyYW5zZm9ybUZlZWRiYWNrKENvbnRleHQgKmNvbnRl
eHQsIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUlzVmVydGV4
QXJyYXkoQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCk7Ci1ib29s
IFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJ
c1F1ZXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWRQYWNrZWQpOworYm9vbCBW
YWxpZGF0ZUlzU2FtcGxlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBTYW1wbGVySUQgc2FtcGxl
clBhY2tlZCk7Citib29sIFZhbGlkYXRlSXNTeW5jKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
c3luYyBzeW5jKTsKK2Jvb2wgVmFsaWRhdGVJc1RyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQpOworYm9vbCBWYWxpZGF0
ZUlzVmVydGV4QXJyYXkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJh
eVBhY2tlZCk7Citib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpOwotYm9vbCBWYWxpZGF0ZVBhdXNlVHJh
bnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbUJp
bmFyeShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYmluYXJ5Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
YmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpOwotYm9v
bCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVJlYWRCdWZmZXIoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHNyYyk7Ci1ib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUmVhZEJ1ZmZl
cihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gc3JjKTsKK2Jvb2wgVmFsaWRhdGVSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVSZXN1bWVUcmFuc2Zvcm1GZWVkYmFj
ayhDb250ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0
IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxl
cklEIHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0pOwot
Ym9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlU2Ft
cGxlclBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFy
YW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSk7Ci1ib29sIFZh
bGlkYXRlVGV4SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEltYWdl
M0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKQEAgLTI4
MiwyMCArMzE1LDIwIEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJv
b2wgVmFsaWRhdGVUZXhTdG9yYWdlM0QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVU
ZXhTdG9yYWdlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBkZXB0aCk7Ci1ib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0QoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMzA3LDc2ICszNDAsMTAwIEBA
IGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICp2YXJ5aW5ncywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXJNb2RlKTsKLWJvb2wgVmFsaWRh
dGVVbmlmb3JtMXVpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAp
OwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0xdWl2KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVV
bmlmb3JtMnVpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdM
dWludCB2MSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTJ1aXYoQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZVVuaWZvcm0zdWkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0zdWl2KENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtNHVpKENvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlm
b3JtMXVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCwgR0x1aW50IHYwKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMXVpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOworYm9vbCBWYWxpZGF0
ZVVuaWZvcm0ydWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSk7Citib29s
IFZhbGlkYXRlVW5pZm9ybTJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM3VpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgdjIpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlVW5pZm9ybTR1
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHYwLAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHYyLAogICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYzKTsK
LWJvb2wgVmFsaWRhdGVVbmlmb3JtNHVpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5p
Zm9ybUJsb2NrQmluZGluZyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVVuaWZvcm00
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1
ZSk7Citib29sIFZhbGlkYXRlVW5pZm9ybUJsb2NrQmluZGluZyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
dW5pZm9ybUJsb2NrQmluZGluZyk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4M2Z2KENv
bnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNmdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZnYoQ29udGV4dCAqY29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgzeDJmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gy
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGZ2KENv
bnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDRmdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZnYoQ29udGV4dCAqY29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXg0eDNmdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgz
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5tYXBCdWZmZXIoQ29udGV4dCAq
Y29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkRpdmlzb3IoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2
aXNvcik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRpKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7Ci1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliSTRpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlVW5tYXBCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
QnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRp
dmlzb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNv
cik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdyk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
STRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2
KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdyk7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliSTR1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVp
bnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYklQb2ludGVyKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1aXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0
dHJpYklQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVy
dGV4QXR0cmliVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBvaW50ZXIpOwotYm9vbCBWYWxpZGF0ZVdhaXRTeW5jKENvbnRleHQgKmNvbnRl
eHQsIEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKK2Jv
b2wgVmFsaWRhdGVXYWl0U3luYyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHN5bmMgc3luYywg
R0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7CiB9ICAvLyBuYW1lc3BhY2UgZ2wK
IAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTM19BVVRPR0VOX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTRVhU
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNF
WFQuY3BwCmluZGV4IGVhMGQwNDVkYTRhMjJjMWNhODFkYzg1MmM0NDk2MjEwZDdkM2U3YWQuLmMz
OWFmMDZhNzE2MDFhYTdiNGNiM2VkYTEzYjRiY2RhZWU4YTIwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFQuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNFWFQuY3Bw
CkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0Vycm9yU3RyaW5ncy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRp
b25FUy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMyLmgiCiAKIG5hbWVzcGFj
ZSBnbAogewpAQCAtMTgsNyArMTksNyBAQCB1c2luZyBuYW1lc3BhY2UgZXJyOwogbmFtZXNwYWNl
CiB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgT2JqZWN0VD4KLWJvb2wgVmFsaWRhdGVHZXRJbWFnZUZv
cm1hdEFuZFR5cGUoQ29udGV4dCAqY29udGV4dCwgT2JqZWN0VCAqb2JqLCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSkKK2Jvb2wgVmFsaWRhdGVHZXRJbWFnZUZvcm1hdEFuZFR5cGUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgT2JqZWN0VCAqb2JqLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSkKIHsKICAgICBHTGVudW0gaW1wbEZvcm1hdCA9IG9iai0+Z2V0SW1wbGVtZW50YXRpb25Db2xv
clJlYWRGb3JtYXQoY29udGV4dCk7CiAgICAgaWYgKCFWYWxpZEVTM0Zvcm1hdChmb3JtYXQpICYm
IChmb3JtYXQgIT0gaW1wbEZvcm1hdCB8fCBmb3JtYXQgPT0gR0xfTk9ORSkpCkBAIC00MSwxMiAr
NDIsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldEltYWdlRm9ybWF0QW5kVHlwZShDb250ZXh0ICpjb250
ZXh0LCBPYmplY3RUICpvYmosIEdMZW51bSBmb3JtYXQKIAogfSAgLy8gbmFtZXNwYWNlCiAKLWJv
b2wgVmFsaWRhdGVHZXRUZXhJbWFnZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlR2V0VGV4SW1hZ2VBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRJbWFnZUFOR0xFKQogICAgIHsKQEAgLTkxLDExICs5
MiwxMSBAQCBib29sIFZhbGlkYXRlR2V0VGV4SW1hZ2VBTkdMRShDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVySW1hZ2VB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlckltYWdl
QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0SW1hZ2VBTkdMRSkKICAgICB7CkBAIC0xMjYsNyArMTI3LDcgQEAgYm9vbCBWYWxpZGF0
ZUdldFJlbmRlcmJ1ZmZlckltYWdlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtMTQyLDcgKzE0Myw3IEBAIGJvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IFZhbGlkYXRlRHJhd0VsZW1lbnRzQ29tbW9uKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBlLCBp
bmRpY2VzLCAxKTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlVmVydGV4RVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlLApAQCAtMTU5LDcgKzE2MCw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3
RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZShjb250ZXh0LCBtb2RlLCBjb3Vu
dCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3
UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9k
ZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBlbmQsCkBAIC0yMDUsNyArMjA2LDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1l
bnRzQmFzZVZlcnRleEVYVChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTIxNiw3
ICsyMTcsNyBAQCBib29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3
RWxlbWVudHNCYXNlVmVydGV4T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJh
d0VsZW1lbnRzQmFzZVZlcnRleE9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAg
LTIzMiw3ICsyMzMsNyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyhD
b250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdFbGVtZW50c0NvbW1vbihj
b250ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMSk7CiB9CiAKLWJvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4T0VTKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTI0OSw3
ICsyNTAsNyBAQCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9F
UyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZEJhc2UoY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlY291
bnQpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLApAQCAtMjk0LDQgKzI5NSwyMjQg
QEAgYm9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUyhDb250ZXh0ICpj
b250ZXh0LAogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KKworYm9vbCBWYWxpZGF0ZUJsZW5k
RXF1YXRpb25TZXBhcmF0ZWlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNJbmRleGVkRVhUKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5z
aW9uTm90RW5hYmxlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGNvbnRleHQsIGJ1ZiwgbW9kZVJHQiwg
bW9kZUFscGhhKTsKK30KKworYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pRVhUKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKQoreworICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZEVYVCkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVu
c2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIFZhbGlkYXRlQmxlbmRFcXVhdGlvbmkoY29udGV4dCwgYnVmLCBtb2RlKTsKK30KKworYm9v
bCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlaUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjUkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kcmF3QnVmZmVyc0luZGV4ZWRFWFQpCisgICAgeworICAgICAgICBjb250ZXh0LT52
YWxpZGF0aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVk
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUJs
ZW5kRnVuY1NlcGFyYXRlaShjb250ZXh0LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwg
ZHN0QWxwaGEpOworfQorCitib29sIFZhbGlkYXRlQmxlbmRGdW5jaUVYVChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQoreworICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZEVYVCkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
a0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIFZhbGlkYXRlQmxlbmRGdW5jaShjb250ZXh0LCBidWYsIHNyYywgZHN0KTsKK30K
KworYm9vbCBWYWxpZGF0ZUNvbG9yTWFza2lFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZEVYVCkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVu
YWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlk
YXRlQ29sb3JNYXNraShjb250ZXh0LCBpbmRleCwgciwgZywgYiwgYSk7Cit9CisKK2Jvb2wgVmFs
aWRhdGVEaXNhYmxlaUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1
ZmZlcnNJbmRleGVkRVhUKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVEaXNhYmxlaShjb250ZXh0
LCB0YXJnZXQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZUVuYWJsZWlFWFQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZEVYVCkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4
dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIFZhbGlkYXRlRW5hYmxlaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKK30KKworYm9v
bCBWYWxpZGF0ZUlzRW5hYmxlZGlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4KQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmRyYXdCdWZmZXJzSW5kZXhlZEVYVCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRp
b25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlSXNFbmFibGVk
aShjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRp
b25TZXBhcmF0ZWlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNJbmRleGVkT0VTKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90
RW5hYmxlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFs
aWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGNvbnRleHQsIGJ1ZiwgbW9kZVJHQiwgbW9kZUFs
cGhhKTsKK30KKworYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pT0VTKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKQoreworICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZE9FUykKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5v
dEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZh
bGlkYXRlQmxlbmRFcXVhdGlvbmkoY29udGV4dCwgYnVmLCBtb2RlKTsKK30KKworYm9vbCBWYWxp
ZGF0ZUJsZW5kRnVuY1NlcGFyYXRlaU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjUkdCLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5kcmF3QnVmZmVyc0luZGV4ZWRPRVMpCisgICAgeworICAgICAgICBjb250ZXh0LT52YWxpZGF0
aW9uRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGtFeHRlbnNpb25Ob3RFbmFibGVkKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUJsZW5kRnVu
Y1NlcGFyYXRlaShjb250ZXh0LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpOworfQorCitib29sIFZhbGlkYXRlQmxlbmRGdW5jaU9FUyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQoreworICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZE9FUykKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVu
c2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIFZhbGlkYXRlQmxlbmRGdW5jaShjb250ZXh0LCBidWYsIHNyYywgZHN0KTsKK30KKworYm9v
bCBWYWxpZGF0ZUNvbG9yTWFza2lPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBhKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZE9FUykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZh
bGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlQ29s
b3JNYXNraShjb250ZXh0LCBpbmRleCwgciwgZywgYiwgYSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVE
aXNhYmxlaU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNJ
bmRleGVkT0VTKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+dmFsaWRhdGlvbkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBrRXh0ZW5zaW9uTm90RW5hYmxlZCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVEaXNhYmxlaShjb250ZXh0LCB0YXJn
ZXQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZUVuYWJsZWlPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzSW5kZXhlZE9FUykKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lv
bk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IFZhbGlkYXRlRW5hYmxlaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKK30KKworYm9vbCBWYWxp
ZGF0ZUlzRW5hYmxlZGlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4KQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdC
dWZmZXJzSW5kZXhlZE9FUykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlSXNFbmFibGVkaShjb250
ZXh0LCB0YXJnZXQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHZFWFQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludDY0ICpkYXRh
KQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVy
eSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRpb25FcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwga0V4dGVuc2lvbk5vdEVuYWJsZWQpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgR0xlbnVtIG5hdGl2ZVR5cGUgICAgICA9IEdMX05PTkU7CisgICAgdW5zaWdu
ZWQgaW50IG51bVBhcmFtcyA9IDA7CisgICAgaWYgKCFWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4
dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KIH0gIC8vIG5hbWVzcGFjZSBn
bApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25FU0VYVF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkVTRVhUX2F1dG9nZW4uaAppbmRleCA4NTc5YTNkMzMyNTEyNWQ4ZTJlMjEx
ZmZmMDA0Y2E3Mzk4MTlhNDcxLi5hYTlmNjAyZmI5ZDJhZmQ2NjNiZGIxYTBmZmQxODg5MjhhZWEz
ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVTRVhUX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTRVhUX2F1dG9nZW4uaApAQCAtMTgsMTMgKzE4LDEzIEBAIG5h
bWVzcGFjZSBnbAogY2xhc3MgQ29udGV4dDsKIAogLy8gR0xfQU5HTEVfYmFzZV92ZXJ0ZXhfYmFz
ZV9pbnN0YW5jZQotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2VB
TkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRC
YXNlSW5zdGFuY2VBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiYXNlSW5zdGFuY2UpOwotYm9v
bCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdF
bGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKQEAgLTMyLDE0ICszMiwxNCBAQCBib29sIFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2VW
ZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBiYXNlSW5zdGFuY2UpOwotYm9vbCBWYWxpZGF0ZU11bHRpRHJh
d0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZUFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmZp
cnN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpjb3VudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqaW5zdGFuY2VDb3VudHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICpiYXNlSW5zdGFuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsKLWJvb2wgVmFs
aWRhdGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VBTkdM
RShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6
ZWkgKmNvdW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCkBAIC01
MCw3ICs1MCw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhCYXNlSW5zdGFuY2VBTkdMRShDb250ZXh0ICpjb250CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBk
cmF3Y291bnQpOwogCiAvLyBHTF9BTkdMRV9jb3B5X3RleHR1cmVfM2QKLWJvb2wgVmFsaWRhdGVD
b3B5VGV4dHVyZTNEQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4
dHVyZTNEQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkLApAQCAtNjEsNyArNjEsNyBA
QCBib29sIFZhbGlkYXRlQ29weVRleHR1cmUzREFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxw
aGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11
bHRpcGx5QWxwaGEpOwotYm9vbCBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlM0RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlM0RBTkdMRShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
SUQgc291cmNlSWRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQsCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgVmFsaWRh
dGVDb3B5U3ViVGV4dHVyZTNEQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiAK
IC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQKLWJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZm
ZXJBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFO
R0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3JjWTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDEs
CkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJBTkdMRShDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
aWx0ZXIpOwogCiAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotYm9vbCBWYWxp
ZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC0x
MDIsNTEgKzEwMiw1OCBAQCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7CiAKIC8vIEdMX0FOR0xFX2dldF9p
bWFnZQotYm9vbCBWYWxpZGF0ZUdldFRleEltYWdlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVHZXRUZXhJbWFnZUFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4
ZWxzKTsKLWJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMp
OworYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlckltYWdlQU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxz
KTsKIAogLy8gR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cwotYm9vbCBWYWxpZGF0ZURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCk7Ci1ib29sIFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50
c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworCisvLyBHTF9BTkdMRV9tZW1v
cnlfb2JqZWN0X2Z1Y2hzaWEKK2Jvb2wgVmFsaWRhdGVJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVB
TkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKTsKIAogLy8gR0xfQU5HTEVfbXVsdGlfZHJhdwotYm9vbCBWYWxpZGF0ZU11bHRpRHJh
d0FycmF5c0FOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJy
YXlzQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmZpcnN0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3VudHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBkcmF3Y291bnQpOwotYm9vbCBWYWxpZGF0ZU11bHRpRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKmZpcnN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpjb3VudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqaW5zdGFuY2VDb3VudHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkcmF3Y291bnQpOwotYm9vbCBW
YWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVNdWx0aURyYXdFbGVtZW50c0FOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3Vu
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBl
IHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKmNvbnN0ICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBkcmF3Y291bnQpOwotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNp
emVpICpjb3VudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCkBAIC0xNTcsMTAyICsxNjQsMTAyIEBAIGJv
b2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAvLyBHTF9BTkdMRV9wcm9ncmFtX2JpbmFyeQogCiAvLyBHTF9BTkdMRV9wcm92b2tpbmdf
dmVydGV4Ci1ib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4QU5HTEUoQ29udGV4dCAqY29udGV4
dCwgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVQ
cm92b2tpbmdWZXJ0ZXhBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm92b2tpbmdWZXJ0
ZXhDb252ZW50aW9uIG1vZGVQYWNrZWQpOwogCiAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lv
bgotYm9vbCBWYWxpZGF0ZVJlcXVlc3RFeHRlbnNpb25BTkdMRShDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZURpc2FibGVFeHRlbnNpb25BTkdMRShD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0ZVJlcXVl
c3RFeHRlbnNpb25BTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5h
bWUpOworYm9vbCBWYWxpZGF0ZURpc2FibGVFeHRlbnNpb25BTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpOwogCiAvLyBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeQotYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW52Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFudlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKnBhcmFtcyk7Ci1i
b29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xib29s
ZWFuICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0RmxvYXR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEZsb2F0dlJvYnVzdEFO
R0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFt
cyk7Citib29sIFZhbGlkYXRlR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpOwotYm9vbCBWYWxp
ZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqZGF0YSk7Citib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJv
b2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgc2hhZGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdM
RShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3Jt
aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9v
bCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtcyk7Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJp
dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKipwb2ludGVyKTsKLWJvb2wgVmFsaWRhdGVSZWFkUGl4
ZWxzUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnN0ICpwb2lu
dGVyKTsKK2Jvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTI2MCwxMSArMjY3LDExIEBA
IGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpyb3dzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRSb2J1c3RBTkdMRShDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMc2l6ZWkgKnJvd3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgaW50ZXJuYWxmb3JtYXQsCkBAIC0yNzUsMTcgKzI4MiwxNyBAQCBib29sIFZhbGlkYXRl
VGV4SW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVyZnZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHhvZmZzZXQsCkBAIC0yOTYsNyArMzAzLDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN1
YkltYWdlMkRSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRleEltYWdl
M0RSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleEltYWdlM0RS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LApAQCAtMzA4LDcgKzMxNSw3IEBAIGJv
b2wgVmFsaWRhdGVUZXhJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhT
dWJJbWFnZTNEUm9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMzIxLDcg
KzMyOCw3IEBAIGJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4
ZWxzKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdM
RShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwK
QEAgLTMzMSw3ICszMzgsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkRSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKTsKLWJvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgeG9mZnNldCwKQEAg
LTM0Miw3ICszNDksNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1
c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRh
KTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RBTkdMRShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAg
LTM1Myw3ICszNjAsNyBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0RSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKTsKLWJvb2wgVmFs
aWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0zNjYs
MTQ2ICszNzMsMTQ2IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGF0YVNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEp
OwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICoqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmNvbnN0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXJpX3ZS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldEludGVy
bmFsZm9ybWF0aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYklpdlJvYnVz
dEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSXVpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFZl
cnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9y
bXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJh
bXMpOwotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJs
b2NraXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsK
LWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NHZS
b2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludDY0ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZS
b2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldElu
dGVnZXI2NGlfdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpkYXRhKTsKLWJvb2wgVmFsaWRh
dGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2
NCAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFO
R0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1l
dGVyZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQ
YXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICpwYXJhbSk7Ci1ib29sIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRl
R2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJm
YWNlaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGJvb2xlYW4gKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnZhbCk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsKTsK
K2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UG9p
bnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKipwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb25zdCAqcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC01MTMsOTMgKzUyMCw5OSBAQCBib29sIFZhbGlk
YXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSAqY29sdW1ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKnJvd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpICpyb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xF
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKLWJvb2wgVmFs
aWRhdGVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtdWl2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRu
VW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJv
b2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRl
cklpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4UGFy
YW1ldGVySWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xF
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcyk7Citib29s
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVy
UGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVHZXRTYW1wbGVy
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2FtcGxlcklE
IHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdlJvYnVzdEFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9i
amVjdGl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQ2NCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50NjQgKnBhcmFtcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50NjQgKnBhcmFtcyk7CisKKy8vIEdM
X0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhCitib29sIFZhbGlkYXRlSW1wb3J0U2VtYXBob3JlWmly
Y29uSGFuZGxlQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlVHlw
ZSBoYW5kbGVUeXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBoYW5kbGUpOwogCiAvLyBHTF9BTkdMRV90ZXh0dXJlX2V4dGVybmFs
X3VwZGF0ZQotYm9vbCBWYWxpZGF0ZVRleEltYWdlMkRFeHRlcm5hbEFOR0xFKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBpbnRlcm5hbGZvcm1hdCwKQEAgLTYwOCw0OSArNjIxLDUyIEBAIGJvb2wgVmFsaWRhdGVUZXhJ
bWFnZTJERXh0ZXJuYWxBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlKTsKLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlVGV4dHVyZUFO
R0xFKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCk7Citib29sIFZh
bGlkYXRlSW52YWxpZGF0ZVRleHR1cmVBTkdMRShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQpOwogCiAvLyBHTF9BTkdMRV90ZXh0dXJlX211bHRpc2FtcGxl
Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlzYW1wbGVBTkdMRShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQU5HTEUoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9u
cyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdkFOR0xFKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdkFOR0xFKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFt
ZXRlcmZ2QU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdkFOR0xFKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZBTkdMRShDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKTsKLWJvb2wgVmFsaWRhdGVT
YW1wbGVNYXNraUFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJp
dGZpZWxkIG1hc2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZBTkdM
RShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsKTsKK2Jvb2wgVmFsaWRhdGVTYW1wbGVNYXNraUFOR0xFKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spOwogCiAvLyBHTF9B
TkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnNvdXJjZSk7CiAKIC8vIEdMX0NI
Uk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbgotYm9vbCBWYWxpZGF0ZUJpbmRVbmlmb3JtTG9j
YXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRVbmlmb3Jt
TG9jYXRpb25DSFJPTUlVTShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lKTsKIAogLy8gR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2Vk
X3RleHR1cmUKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVN
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCBkZXN0SWRQYWNrZWQpOwogCiAvLyBH
TF9DSFJPTUlVTV9jb3B5X3RleHR1cmUKLWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZUNIUk9NSVVN
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHNvdXJjZUlkUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQsCkBAIC02NjEsNyArNjc3LDcgQEAgYm9vbCBWYWxp
ZGF0ZUNvcHlUZXh0dXJlQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlB
bHBoYSk7Ci1ib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlQ0hST01JVU0oY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCBz
b3VyY2VJZFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkLApAQCAtNjc4LDE5MSArNjk0LDExMiBAQCBib29sIFZh
bGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBo
YSk7CiAKIC8vIEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMKLWJvb2wgVmFs
aWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
Y29tcG9uZW50cyk7Ci1ib29sIFZhbGlkYXRlTWF0cml4TG9hZGZDSFJPTUlVTShDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KTsKLWJvb2wg
VmFsaWRhdGVNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gbWF0cml4TW9kZSk7Citib29sIFZhbGlkYXRlQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0o
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvbXBvbmVudHMpOwogCiAvLyBHTF9DSFJP
TUlVTV9sb3NlX2NvbnRleHQKLWJvb2wgVmFsaWRhdGVMb3NlQ29udGV4dENIUk9NSVVNKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTG9zZUNvbnRleHRDSFJPTUlVTShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NS
ZXNldFN0YXR1cyBjdXJyZW50UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR3JhcGhpY3NSZXNldFN0YXR1cyBvdGhlclBhY2tlZCk7CiAKLS8vIEdMX0NIUk9NSVVNX3Bh
dGhfcmVuZGVyaW5nCi1ib29sIFZhbGlkYXRlR2VuUGF0aHNDSFJPTUlVTShDb250ZXh0ICpjb250
ZXh0LCBHTHNpemVpIHJhbmdlKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVQYXRoc0NIUk9NSVVNKENv
bnRleHQgKmNvbnRleHQsIFBhdGhJRCBmaXJzdFBhY2tlZCwgR0xzaXplaSByYW5nZSk7Ci1ib29s
IFZhbGlkYXRlSXNQYXRoQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgUGF0aElEIHBhdGhQYWNr
ZWQpOwotYm9vbCBWYWxpZGF0ZVBhdGhDb21tYW5kc0NIUk9NSVVNKENvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7Ci1ib29sIFZh
bGlkYXRlUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQYXRoUGFy
YW1ldGVyaUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsIFBhdGhJRCBwYXRoUGFja2VkLCBHTGVu
dW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKLWJvb2wgVmFsaWRhdGVHZXRQYXRoUGFyYW1ldGVyZnZD
SFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhdGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlR2V0UGF0aFBhcmFtZXRl
cml2Q0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQYXRoU3RlbmNpbEZ1
bmNDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVp
bnQgbWFzayk7Ci1ib29sIFZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0oQ29udGV4dCAq
Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXRoSUQgcGF0
aFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmls
bE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2sp
OwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oQ29udGV4dCAqY29udGV4
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJl
bmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2sp
OwotYm9vbCBWYWxpZGF0ZUNvdmVyRmlsbFBhdGhDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LCBQ
YXRoSUQgcGF0aFBhY2tlZCwgR0xlbnVtIGNvdmVyTW9kZSk7Ci1ib29sIFZhbGlkYXRlQ292ZXJT
dHJva2VQYXRoQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwgUGF0aElEIHBhdGhQYWNrZWQsIEdM
ZW51bSBjb3Zlck1vZGUpOwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENI
Uk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotYm9v
bCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oQ29udGV4dCAqY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
dGhJRCBwYXRoUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLWJvb2wgVmFsaWRhdGVD
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KTsKLWJvb2wgVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShDb250ZXh0
ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlU3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBh
dGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNm
b3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlU3RlbmNpbEZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGF0aElEIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpOwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0
aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotYm9vbCBWYWxpZGF0ZVN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlQmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bkNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtc1BhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
Y2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU0oQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Z2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7Ci0KIC8vIEdMX0VYVF9ibGVuZF9m
dW5jX2V4dGVuZGVkCi1ib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25FWFQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBjb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0
aW9uSW5kZXhlZEVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRGcmFnRGF0
YUxvY2F0aW9uSW5kZXhlZEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGNvbG9yTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0RnJhZ0RhdGFJbmRleEVY
VChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXhFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3Vy
Y2VMb2NhdGlvbkluZGV4RVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJv
Z3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CiAKIC8vIEdM
X0VYVF9kZWJ1Z19tYXJrZXIKLWJvb2wgVmFsaWRhdGVJbnNlcnRFdmVudE1hcmtlckVYVChDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIpOwotYm9v
bCBWYWxpZGF0ZVBvcEdyb3VwTWFya2VyRVhUKENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxp
ZGF0ZVB1c2hHcm91cE1hcmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwg
Y29uc3QgR0xjaGFyICptYXJrZXIpOworYm9vbCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhU
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1h
cmtlcik7Citib29sIFZhbGlkYXRlUG9wR3JvdXBNYXJrZXJFWFQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCk7Citib29sIFZhbGlkYXRlUHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1hcmtlcik7CiAKIC8vIEdMX0VY
VF9kaXNjYXJkX2ZyYW1lYnVmZmVyCi1ib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhU
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwogCiAvLyBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVl
cnkKLWJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5VHlw
ZSB0YXJnZXRQYWNrZWQsIFF1ZXJ5SUQgaWRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURlbGV0ZVF1
ZXJpZXNFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBRdWVyeUlEICppZHNQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5
VHlwZSB0YXJnZXRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBuLCBRdWVyeUlEICppZHNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJlZ2lu
UXVlcnlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCwg
UXVlcnlJRCBpZFBhY2tlZCk7Citib29sIFZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCk7Citi
b29sIFZhbGlkYXRlRW5kUXVlcnlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBl
IHRhcmdldFBhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuUXVlcmllc0VYVChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCk7Citib29sIFZh
bGlkYXRlR2V0SW50ZWdlcjY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMaW50NjQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0
dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRdWVyeUlEIGlkUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50NjQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdkVYVChDb250ZXh0
ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAqcGFyYW1z
KTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUlEIGlkUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3R1aTY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdl
dFF1ZXJ5T2JqZWN0dWl2RVhUKENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWRQYWNrZWQsIEdM
ZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZFWFQo
Q29udGV4dCAqY29udGV4dCwgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhUKENvbnRleHQgKmNvbnRleHQs
IFF1ZXJ5SUQgaWRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRlckVYVChDb250ZXh0
ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkLCBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludDY0ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpOworYm9vbCBW
YWxpZGF0ZUdldFF1ZXJ5aXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVJc1F1ZXJ5RVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIFF1ZXJ5SUQgaWRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZVF1ZXJ5Q291bnRlckVY
VChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkLCBRdWVyeVR5cGUgdGFy
Z2V0UGFja2VkKTsKIAogLy8gR0xfRVhUX2RyYXdfYnVmZmVycwotYm9vbCBWYWxpZGF0ZURyYXdC
dWZmZXJzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZz
KTsKK2Jvb2wgVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CisKKy8vIEdMX0VYVF9kcmF3X2J1ZmZlcnNf
aW5kZXhlZAorYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bW9kZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBt
b2RlQWxwaGEpOworYm9vbCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1
bmNTZXBhcmF0ZWlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHNyY1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRzdFJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHNyY0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZHN0QWxwaGEpOworYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY2lFWFQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCk7Citib29sIFZhbGlkYXRl
Q29sb3JNYXNraUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIGEpOworYm9vbCBWYWxpZGF0ZURpc2FibGVpRVhUKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Citib29sIFZhbGlkYXRlRW5h
YmxlaUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpOworYm9vbCBWYWxpZGF0ZUlzRW5hYmxlZGlFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKIAogLy8gR0xfRVhUX2RyYXdfZWxlbWVudHNf
YmFzZV92ZXJ0ZXgKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KTsKLWJvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KTsKLWJvb2wgVmFsaWRhdGVE
cmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZl
TW9kZSBtb2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBlbmQsCkBAIC04NzAsNyArODA3LDcgQEAgYm9vbCBWYWxpZGF0ZURyYXdS
YW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJhc2V2ZXJ0ZXgpOwotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZl
cnRleEVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRz
QmFzZVZlcnRleEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxl
bWVudHNUeXBlIHR5cGVQYWNrZWQsCkBAIC04NzksNjEgKzgxNiw2NCBAQCBib29sIFZhbGlkYXRl
TXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpiYXNldmVy
dGV4KTsKIAogLy8gR0xfRVhUX2dlb21ldHJ5X3NoYWRlcgotYm9vbCBWYWxpZGF0ZUZyYW1lYnVm
ZmVyVGV4dHVyZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsKTsKIAogLy8gR0xfRVhUX2luc3RhbmNlZF9hcnJheXMKLWJv
b2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpOwotYm9vbCBW
YWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1R5
cGUgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBwcmltY291bnQpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3JFWFQo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7Citib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKIAogLy8gR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UK
LWJvb2wgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpcHRyIGxlbmd0aCk7Ci1ib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VFWFQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckJpbmRp
bmcgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2Vzcyk7CiAK
IC8vIEdMX0VYVF9tZW1vcnlfb2JqZWN0Ci1ib29sIFZhbGlkYXRlQnVmZmVyU3RvcmFnZU1lbUVY
VChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2VNZW1FWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9y
eU9iamVjdElEIG1lbW9yeVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludDY0IG9mZnNldCk7Ci1ib29sIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVChD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNyZWF0ZU1lbW9yeU9iamVjdHNFWFQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9i
amVjdElEICptZW1vcnlPYmplY3RzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEZWxldGVNZW1vcnlP
YmplY3RzRVhUKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNZW1vcnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0c1BhY2tlZCk7Citib29s
IFZhbGlkYXRlRGVsZXRlTWVtb3J5T2JqZWN0c0VYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9i
amVjdHNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhU
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVy
aXZFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZXZFWFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHBuYW1lLCBHTHVieXRlICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGVpX3ZF
WFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVieXRl
ICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVJc01lbW9yeU9iamVjdEVYVChDb250ZXh0ICpjb250ZXh0
LCBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZU1lbW9y
eU9iamVjdFBhcmFtZXRlcml2RVhUKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZh
bGlkYXRlR2V0VW5zaWduZWRCeXRldkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMdWJ5dGUgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0
ZWlfdkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWJ5dGUgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUlzTWVtb3J5T2JqZWN0RVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdFBhY2tlZCk7Citi
b29sIFZhbGlkYXRlTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlPYmpl
Y3RJRCBtZW1vcnlPYmplY3RQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0y
REVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yREVYVChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCkBAIC05NDEsNyArODgxLDcgQEAgYm9vbCBWYWxpZGF0ZVRleFN0b3Jh
Z2VNZW0yREVYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVt
b3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQ2NCBvZmZzZXQpOwotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2Ft
cGxlRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJETXVs
dGlzYW1wbGVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKQEAgLTk1MCw3ICs4OTAsNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJETXVs
dGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dDY0IG9mZnNldCk7Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
QEAgLTk1OSw3ICs4OTksNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVw
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9y
eVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0
KTsKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlRVhUKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC05NzEsMjEg
KzkxMSwyMSBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQ2NCBvZmZzZXQpOwogCiAvLyBHTF9FWFRfbWVtb3J5X29iamVjdF9mZAotYm9vbCBW
YWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
SW1wb3J0TWVtb3J5RmRFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZmQpOwogCiAvLyBHTF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRl
cl90b190ZXh0dXJlCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBs
ZUVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJE
TXVsdGlzYW1wbGVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
ZXh0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzKTsKLWJvb2wgVmFsaWRhdGVSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCkBAIC05OTcsMTggKzkzNywxOCBAQCBib29sIFZh
bGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKENvbnRleHQgKmNvbnRleHQs
CiAvLyBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQogCiAvLyBHTF9FWFRfcm9idXN0bmVzcwotYm9v
bCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoQ29udGV4dCAqY29udGV4dCk7Ci1i
b29sIFZhbGlkYXRlR2V0blVuaWZvcm1mdkVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citi
b29sIFZhbGlkYXRlR2V0blVuaWZvcm1mdkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0blVu
aWZvcm1pdkVYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhU
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBW
YWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC0x
MDE2LDMwICs5NTYsMzQgQEAgYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7
CiAKIC8vIEdMX0VYVF9zUkdCCiAKIC8vIEdMX0VYVF9zZW1hcGhvcmUKLWJvb2wgVmFsaWRhdGVE
ZWxldGVTZW1hcGhvcmVzRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgU2Vt
YXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlblNlbWFwaG9yZXNF
WFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBTZW1hcGhvcmVJRCAqc2VtYXBob3Jlc1Bh
Y2tlZCk7Ci1ib29sIFZhbGlkYXRlR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWxldGVTZW1hcGhvcmVzRVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTZW1hcGhvcmVJRCAqc2Vt
YXBob3Jlc1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuU2VtYXBob3Jlc0VYVChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2VtYXBob3JlSUQgKnNlbWFwaG9y
ZXNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRh
dGVJc1NlbWFwaG9yZUVYVChDb250ZXh0ICpjb250ZXh0LCBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZVNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50NjQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlSXNTZW1hcGhvcmVFWFQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkKTsKK2Jvb2wgVmFs
aWRhdGVTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFw
aG9yZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50NjQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlU2lnbmFsU2VtYXBob3JlRVhUKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlU2lnbmFsU2VtYXBob3JlRVhUKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbWFwaG9yZUlE
IHNlbWFwaG9yZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG51bUJ1ZmZlckJhcnJpZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpkc3RMYXlvdXRzKTsKLWJvb2wgVmFsaWRhdGVX
YWl0U2VtYXBob3JlRVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlV2FpdFNlbWFw
aG9yZUVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQsCkBAIC0xMDQ4LDcgKzk5Miw3
IEBAIGJvb2wgVmFsaWRhdGVXYWl0U2VtYXBob3JlRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnNyY0xheW91dHMpOwogCiAv
LyBHTF9FWFRfc2VtYXBob3JlX2ZkCi1ib29sIFZhbGlkYXRlSW1wb3J0U2VtYXBob3JlRmRFWFQo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVYVChjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl
bWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgZmQpOwpAQCAtMTA1Nyw2ICsxMDAxLDggQEAgYm9vbCBWYWxpZGF0
ZUltcG9ydFNlbWFwaG9yZUZkRVhUKENvbnRleHQgKmNvbnRleHQsCiAKIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEKIAorLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0
YworCiAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtMTA2NiwxOCArMTAxMiwxOCBAQCBib29sIFZh
bGlkYXRlSW1wb3J0U2VtYXBob3JlRmRFWFQoQ29udGV4dCAqY29udGV4dCwKIC8vIEdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAogCiAvLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCi1ib29s
IFZhbGlkYXRlVGV4U3RvcmFnZTFERVhUKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4U3RvcmFnZTFERVhUKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgp
OwotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UyREVYVChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVRleFN0b3JhZ2UyREVYVChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0RFWFQoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlM0RFWFQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMTA4Niw3NyArMTAzMiw4
MCBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNERVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpOwogCiAvLyBHTF9LSFJfZGVi
dWcKLWJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xERUJVR1BST0NL
SFIgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqdXNlclBhcmFtKTsKLWJvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbEtIUihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVy
aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpOwot
Ym9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKmJ1Zik7Ci1ib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nS0hS
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nS0hSKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNv
dXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNldmVyaXRpZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZyk7Ci1ib29sIFZhbGlk
YXRlR2V0T2JqZWN0TGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnR5cGVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlkcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpzZXZlcml0aWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1lc3NhZ2VMb2cpOworYm9v
bCBWYWxpZGF0ZUdldE9iamVjdExhYmVsS0hSKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIg
KmxhYmVsKTsKLWJvb2wgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbEtIUihDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKTsK
K2Jvb2wgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbEtIUihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpOwotYm9vbCBWYWxpZGF0ZUdldFBv
aW50ZXJ2S0hSKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7
Ci1ib29sIFZhbGlkYXRlT2JqZWN0TGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCk7Citib29sIFZh
bGlkYXRlR2V0UG9pbnRlcnZLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
LCB2b2lkICpjb25zdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVPYmplY3RMYWJlbEtIUihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
ZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpOwotYm9vbCBWYWxpZGF0ZU9iamVjdFB0
ckxhYmVsS0hSKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlT2JqZWN0UHRyTGFiZWxL
SFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICps
YWJlbCk7Ci1ib29sIFZhbGlkYXRlUG9wRGVidWdHcm91cEtIUihDb250ZXh0ICpjb250ZXh0KTsK
LWJvb2wgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZh
bGlkYXRlUHVzaERlYnVnR3JvdXBLSFIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNo
YXIgKm1lc3NhZ2UpOwogCiAvLyBHTF9LSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUKLWJvb2wg
VmFsaWRhdGVNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGNvdW50KTsKK2Jvb2wgVmFsaWRhdGVNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGNvdW50KTsKIAogLy8gR0xfTlZfZmVuY2UKLWJv
b2wgVmFsaWRhdGVEZWxldGVGZW5jZXNOVihDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNv
bnN0IEZlbmNlTlZJRCAqZmVuY2VzUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVGaW5pc2hGZW5jZU5W
KENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRl
R2VuRmVuY2VzTlYoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBGZW5jZU5WSUQgKmZlbmNl
c1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2V0RmVuY2Vpdk5WKENvbnRleHQgKmNvbnRleHQsIEZl
bmNlTlZJRCBmZW5jZVBhY2tlZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVJc0ZlbmNlTlYoQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlUGFja2Vk
KTsKLWJvb2wgVmFsaWRhdGVTZXRGZW5jZU5WKENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBm
ZW5jZVBhY2tlZCwgR0xlbnVtIGNvbmRpdGlvbik7Ci1ib29sIFZhbGlkYXRlVGVzdEZlbmNlTlYo
Q29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVE
ZWxldGVGZW5jZXNOVihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEZl
bmNlTlZJRCAqZmVuY2VzUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVGaW5pc2hGZW5jZU5WKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCk7Citib29sIFZhbGlkYXRl
R2VuRmVuY2VzTlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBGZW5j
ZU5WSUQgKmZlbmNlc1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2V0RmVuY2Vpdk5WKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZlbmNlTlZJRCBmZW5j
ZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVJ
c0ZlbmNlTlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlUGFja2VkKTsK
K2Jvb2wgVmFsaWRhdGVTZXRGZW5jZU5WKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZlbmNlTlZJ
RCBmZW5jZVBhY2tlZCwgR0xlbnVtIGNvbmRpdGlvbik7Citib29sIFZhbGlkYXRlVGVzdEZlbmNl
TlYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgRmVuY2VOVklEIGZlbmNlUGFja2VkKTsKIAogLy8g
R0xfT0VTX0VHTF9pbWFnZQotYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVy
U3RvcmFnZU9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0
UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVnbElt
YWdlT0VTIGltYWdlKTsKLWJvb2wgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwogCkBAIC0xMTY0LDIxICsx
MTEzLDQ0IEBAIGJvb2wgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhDb250ZXh0
ICpjb250ZXh0LAogCiAvLyBHTF9PRVNfZGVwdGgzMgogCisvLyBHTF9PRVNfZHJhd19idWZmZXJz
X2luZGV4ZWQKK2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bW9kZUFscGhhKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uaU9FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlQmxlbmRG
dW5jU2VwYXJhdGVpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBkc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRzdEFscGhhKTsKK2Jvb2wgVmFsaWRhdGVCbGVuZEZ1bmNpT0VTKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpOworYm9vbCBWYWxpZGF0
ZUNvbG9yTWFza2lPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBhKTsKK2Jvb2wgVmFsaWRhdGVEaXNhYmxlaU9FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0ZUVu
YWJsZWlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4KTsKK2Jvb2wgVmFsaWRhdGVJc0VuYWJsZWRpT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CisKIC8vIEdMX09FU19kcmF3X2VsZW1lbnRz
X2Jhc2VfdmVydGV4Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCk7Ci1ib29sIFZhbGlk
YXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUyhDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCk7Ci1ib29sIFZhbGlkYXRl
RHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgZW5kLApAQCAtMTE4OCwxMTkgKzExNjAsMTMyIEBAIGJvb2wgVmFsaWRh
dGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCk7
CiAKIC8vIEdMX09FU19kcmF3X3RleHR1cmUKLWJvb2wgVmFsaWRhdGVEcmF3VGV4Zk9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdUZXhmT0VTKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHosCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB3aWR0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlRHJhd1RleGZ2T0VT
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKmNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRl
RHJhd1RleGlPRVMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwg
R0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlRHJhd1RleGl2T0VTKENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZURyYXdU
ZXhzT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1RleGZ2T0VTKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKmNvb3Jkcyk7Citib29sIFZhbGlkYXRl
RHJhd1RleGlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBoZWlnaHQpOworYm9vbCBW
YWxpZGF0ZURyYXdUZXhpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAq
Y29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4c09FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgeCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNob3J0IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB6LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaG9ydCBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZURyYXdUZXhzdk9FUyhDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZURyYXdU
ZXh4T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1RleHN2T0VTKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKmNvb3Jkcyk7Citib29sIFZhbGlkYXRl
RHJhd1RleHhPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZpeGVkIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgeiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZpeGVkIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgaGVpZ2h0
KTsKLWJvb2wgVmFsaWRhdGVEcmF3VGV4eHZPRVMoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xm
aXhlZCAqY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVEcmF3VGV4eHZPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xmaXhlZCAqY29vcmRzKTsKIAogLy8gR0xfT0VTX2ZyYW1lYnVmZmVy
X29iamVjdAotYm9vbCBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkKTsKLWJvb2wg
VmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlQmluZEZyYW1lYnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQpOworYm9vbCBWYWxp
ZGF0ZUJpbmRSZW5kZXJidWZmZXJPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOwotYm9v
bCBWYWxpZGF0ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVMoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCk7Ci1ib29sIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzT0VTKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c09FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgVmFsaWRhdGVEZWxldGVGcmFt
ZWJ1ZmZlcnNPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQpOwotYm9vbCBWYWxp
ZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVEZWxldGVSZW5kZXJidWZmZXJzT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1Bh
Y2tlZCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOwotYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJET0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsKTsKLWJvb2wgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnNPRVMoQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBuLCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQpOwotYm9vbCBWYWxp
ZGF0ZUdlblJlbmRlcmJ1ZmZlcnNPRVMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBSZW5k
ZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2VuZXJhdGVN
aXBtYXBPRVMoQ29udGV4dCAqY29udGV4dCwgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkKTsKLWJv
b2wgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUyhDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdlbkZyYW1lYnVmZmVyc09FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1l
YnVmZmVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVyc09FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyYnVmZmVy
SUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwT0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCk7Citib29s
IFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FUyhDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlSXNGcmFtZWJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZyYW1l
YnVmZmVyUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVJc1JlbmRlcmJ1ZmZlck9FUyhDb250ZXh0ICpj
b250ZXh0LCBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVJc0ZyYW1lYnVmZmVyT0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVm
ZmVySUQgZnJhbWVidWZmZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyT0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tl
ZCk7Citib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7CiAK
IC8vIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtQmlu
YXJ5T0VTKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeU9F
Uyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKmJpbmFyeUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmJpbmFyeSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeU9FUyhDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpiaW5h
cnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi
aW5hcnkpOworYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnlPRVMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCk7CiAKIC8vIEdMX09F
U19tYXBidWZmZXIKLWJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydk9FUyhDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2T0VTKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyQmluZGlu
ZyB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCwgR0xlbnVtIGFjY2Vzcyk7Ci1ib29sIFZhbGlkYXRlVW5tYXBCdWZm
ZXJPRVMoQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnN0ICpwYXJhbXMpOworYm9v
bCBWYWxpZGF0ZU1hcEJ1ZmZlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCwgR0xlbnVtIGFjY2Vzcyk7Citib29sIFZhbGlkYXRlVW5tYXBCdWZm
ZXJPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQp
OwogCiAvLyBHTF9PRVNfbWF0cml4X3BhbGV0dGUKLWJvb2wgVmFsaWRhdGVDdXJyZW50UGFsZXR0
ZU1hdHJpeE9FUyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWF0cml4cGFsZXR0ZWluZGV4KTsK
LWJvb2wgVmFsaWRhdGVMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMoQ29udGV4dCAq
Y29udGV4dCk7Ci1ib29sIFZhbGlkYXRlTWF0cml4SW5kZXhQb2ludGVyT0VTKENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlQ3VycmVudFBhbGV0dGVNYXRyaXhPRVMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IG1hdHJpeHBhbGV0dGVpbmRleCk7Citib29sIFZhbGlkYXRlTG9h
ZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwor
Ym9vbCBWYWxpZGF0ZU1hdHJpeEluZGV4UG9pbnRlck9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwotYm9vbCBWYWxpZGF0ZVdlaWdo
dFBvaW50ZXJPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVXZWlnaHRQb2ludGVy
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwogCiAvLyBHTF9PRVNf
cG9pbnRfc2l6ZV9hcnJheQotYm9vbCBWYWxpZGF0ZVBvaW50U2l6ZVBvaW50ZXJPRVMoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQb2ludFNpemVQb2ludGVyT0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBdHRy
aWJUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBvaW50ZXIpOwogCiAvLyBHTF9PRVNfcXVlcnlfbWF0cml4Ci1ib29sIFZhbGlkYXRlUXVlcnlN
YXRyaXh4T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZml4ZWQgKm1hbnRpc3NhLCBHTGludCAqZXhw
b25lbnQpOworYm9vbCBWYWxpZGF0ZVF1ZXJ5TWF0cml4eE9FUyhjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICptYW50aXNz
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmV4cG9uZW50KTsK
IAogLy8gR0xfT0VTX3RleHR1cmVfM0QKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2Uz
RE9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNE
T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMTMxMCw3ICsxMjk1LDcgQEAg
Ym9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOwotYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LApAQCAtMTMyMiw3ICsxMzA3LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb3B5
VGV4U3ViSW1hZ2UzRE9FUyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXhT
dWJJbWFnZTNET0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTEzMzIsMTQgKzEzMTcsMTQgQEAgYm9vbCBW
YWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRE9F
UyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTNET0VT
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTNET0VT
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2UzRE9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTEzNTAs
NyArMTMzNSw3IEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFnZTNET0VTKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0RPRVMoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTNET0VTKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTEzNjQsNTQg
KzEzNDksNjMgQEAgYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0RPRVMoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscyk7CiAK
IC8vIEdMX09FU190ZXh0dXJlX2JvcmRlcl9jbGFtcAotYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQ
YXJhbWV0ZXJJaXZPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRTYW1wbGVy
UGFyYW1ldGVySWl2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBsZXJJRCBzYW1w
bGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2T0VTKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklpdk9FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdk9FUyhDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
KnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdk9FUyhDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyhDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdk9FUyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdk9FUyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdk9FUyhDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKIAog
Ly8gR0xfT0VTX3RleHR1cmVfY3ViZV9tYXAKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5mdk9FUyhD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5pdk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0
VGV4R2VueHZPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUs
IEdMZml4ZWQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4R2VuZk9FUyhDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Ci1ib29sIFZh
bGlkYXRlVGV4R2VuZnZPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4R2VuaU9FUyhD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
OwotYm9vbCBWYWxpZGF0ZVRleEdlbml2T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhH
ZW54T0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZp
eGVkIHBhcmFtKTsKLWJvb2wgVmFsaWRhdGVUZXhHZW54dk9FUyhDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRUZXhHZW5mdk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhHZW5pdk9FUyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb29yZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4R2Vu
eHZPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlVGV4R2VuZk9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Citib29sIFZhbGlkYXRlVGV4R2VuZnZP
RVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNv
bnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4R2VuaU9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwor
Ym9vbCBWYWxpZGF0ZVRleEdlbml2T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBj
b29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVU
ZXhHZW54T0VTKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBu
YW1lLCBHTGZpeGVkIHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhHZW54dk9FUyhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAq
cGFyYW1zKTsKIAogLy8gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdAogCiAvLyBHTF9PRVNfdGV4
dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5Ci1ib29sIFZhbGlkYXRlVGV4U3RvcmFn
ZTNETXVsdGlzYW1wbGVPRVMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhTdG9y
YWdlM0RNdWx0aXNhbXBsZU9FUyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LApAQCAtMTQyMSwxMyArMTQxNSwxNyBAQCBib29sIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVs
dGlzYW1wbGVPRVMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwogCiAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAotYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheU9FUyhD
b250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkKTsKLWJvb2wgVmFsaWRh
dGVEZWxldGVWZXJ0ZXhBcnJheXNPRVMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25z
dCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFy
cmF5c09FUyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIFZlcnRleEFycmF5SUQgKmFycmF5
c1BhY2tlZCk7Ci1ib29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheU9FUyhDb250ZXh0ICpjb250ZXh0
LCBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJy
YXlPRVMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCk7
Citib29sIFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzT0VTKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlz
UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQ
YWNrZWQpOworYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCk7CiAKIC8vIEdMX09WUl9tdWx0aXZpZXcK
LWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDEuY3BwCmluZGV4
IDZlMmE5MTc5MWM3NWY5NjA3NTRhMWNjNjcyZTkwNmQ3ZmQ3MmQ0MmMuLmM2ZGVkNWZiMzUwOTdm
NTZjZjY0MTA2ODIzNDUwZWNlZmQ5NTYxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMS5jcHAKQEAgLTExLDE3ICsxMSwx
NyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVBY2N1bShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gb3AsIEdMZmxvYXQgdmFsdWUpCitib29sIFZhbGlkYXRlQWNjdW0oY29uc3Qg
Q29udGV4dCAqLCBHTGVudW0gb3AsIEdMZmxvYXQgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVCZWdpbihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSkK
K2Jvb2wgVmFsaWRhdGVCZWdpbihjb25zdCBDb250ZXh0ICosIEdMZW51bSBtb2RlKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQml0bWFwKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQml0bWFwKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeG9yaWcsCkBAIC0zMywxOTIgKzMzLDE5MiBAQCBi
b29sIFZhbGlkYXRlQml0bWFwKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVDYWxsTGlzdChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbGlzdCkK
K2Jvb2wgVmFsaWRhdGVDYWxsTGlzdChjb25zdCBDb250ZXh0ICosIEdMdWludCBsaXN0KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2FsbExpc3RzKENvbnRleHQgKmNv
bnRleHQsIEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmxpc3RzKQorYm9vbCBW
YWxpZGF0ZUNhbGxMaXN0cyhjb25zdCBDb250ZXh0ICosIEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUs
IGNvbnN0IHZvaWQgKmxpc3RzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQ2xlYXJBY2N1bShDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVl
biwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFscGhhKQorYm9vbCBWYWxpZGF0ZUNsZWFyQWNjdW0o
Y29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVl
LCBHTGZsb2F0IGFscGhhKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
Q2xlYXJEZXB0aChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBkZXB0aCkKK2Jvb2wgVmFsaWRh
dGVDbGVhckRlcHRoKGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgZGVwdGgpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhckluZGV4KENvbnRleHQgKmNvbnRleHQs
IEdMZmxvYXQgYykKK2Jvb2wgVmFsaWRhdGVDbGVhckluZGV4KGNvbnN0IENvbnRleHQgKiwgR0xm
bG9hdCBjKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xpcFBsYW5l
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3VibGUgKmVxdWF0aW9u
KQorYm9vbCBWYWxpZGF0ZUNsaXBQbGFuZShjb25zdCBDb250ZXh0ICosIEdMZW51bSBwbGFuZSwg
Y29uc3QgR0xkb3VibGUgKmVxdWF0aW9uKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlQ29sb3IzYihDb250ZXh0ICpjb250ZXh0LCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3Jl
ZW4sIEdMYnl0ZSBibHVlKQorYm9vbCBWYWxpZGF0ZUNvbG9yM2IoY29uc3QgQ29udGV4dCAqLCBH
TGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3IzYnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xi
eXRlICp2KQorYm9vbCBWYWxpZGF0ZUNvbG9yM2J2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xi
eXRlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3IzZChD
b250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBi
bHVlKQorYm9vbCBWYWxpZGF0ZUNvbG9yM2QoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSByZWQs
IEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlQ29sb3IzZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYpCitib29sIFZhbGlkYXRlQ29sb3IzZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJs
ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM2YoQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSkK
K2Jvb2wgVmFsaWRhdGVDb2xvcjNmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCByZWQsIEdMZmxv
YXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUNvbG9yM2Z2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpCitib29s
IFZhbGlkYXRlQ29sb3IzZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3IzaShDb250ZXh0ICpjb250
ZXh0LCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKQorYm9vbCBWYWxpZGF0ZUNv
bG9yM2koY29uc3QgQ29udGV4dCAqLCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVl
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3IzaXYoQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlQ29sb3IzaXYoY29uc3Qg
Q29udGV4dCAqLCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUNvbG9yM3MoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCByZWQsIEdMc2hvcnQg
Z3JlZW4sIEdMc2hvcnQgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjNzKGNvbnN0IENvbnRleHQg
KiwgR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM3N2KENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlQ29sb3Izc3YoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
Q29sb3IzdWIoQ29udGV4dCAqY29udGV4dCwgR0x1Ynl0ZSByZWQsIEdMdWJ5dGUgZ3JlZW4sIEdM
dWJ5dGUgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1Yihjb25zdCBDb250ZXh0ICosIEdMdWJ5
dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjN1YnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1
Ynl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1YnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBH
THVieXRlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3Iz
dWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1
ZSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1aShjb25zdCBDb250ZXh0ICosIEdMdWludCByZWQsIEdM
dWludCBncmVlbiwgR0x1aW50IGJsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDb2xvcjN1aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1aW50ICp2KQorYm9v
bCBWYWxpZGF0ZUNvbG9yM3Vpdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMdWludCAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yM3VzKENvbnRleHQgKmNv
bnRleHQsIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpCitib29s
IFZhbGlkYXRlQ29sb3IzdXMoY29uc3QgQ29udGV4dCAqLCBHTHVzaG9ydCByZWQsIEdMdXNob3J0
IGdyZWVuLCBHTHVzaG9ydCBibHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlQ29sb3IzdXN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNob3J0ICp2KQorYm9v
bCBWYWxpZGF0ZUNvbG9yM3Vzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMdXNob3J0ICp2KQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0YihDb250ZXh0ICpj
b250ZXh0LCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxw
aGEpCitib29sIFZhbGlkYXRlQ29sb3I0Yihjb25zdCBDb250ZXh0ICosIEdMYnl0ZSByZWQsIEdM
Ynl0ZSBncmVlbiwgR0xieXRlIGJsdWUsIEdMYnl0ZSBhbHBoYSkKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yNGJ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
Ynl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjRidihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdM
Ynl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yNGQo
Q29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUg
Ymx1ZSwgR0xkb3VibGUgYWxwaGEpCitib29sIFZhbGlkYXRlQ29sb3I0ZChjb25zdCBDb250ZXh0
ICosIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUsIEdMZG91Ymxl
IGFscGhhKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0ZHYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlQ29sb3I0
ZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yNGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKnYpCitib29sIFZhbGlkYXRlQ29sb3I0ZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBH
TGZsb2F0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0
aShDb250ZXh0ICpjb250ZXh0LCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlLCBH
TGludCBhbHBoYSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjRpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQg
cmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSwgR0xpbnQgYWxwaGEpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvcjRpdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjRpdihjb25zdCBDb250ZXh0ICosIGNvbnN0
IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0
cyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBi
bHVlLCBHTHNob3J0IGFscGhhKQorYm9vbCBWYWxpZGF0ZUNvbG9yNHMoY29uc3QgQ29udGV4dCAq
LCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVlLCBHTHNob3J0IGFscGhh
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0c3YoQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjRzdihjb25z
dCBDb250ZXh0ICosIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDb2xvcjR1YnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAq
dikKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1YnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHVieXRl
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0dWkoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSwgR0x1
aW50IGFscGhhKQorYm9vbCBWYWxpZGF0ZUNvbG9yNHVpKGNvbnN0IENvbnRleHQgKiwgR0x1aW50
IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSwgR0x1aW50IGFscGhhKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3I0dWl2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMdWludCAqdikKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1aXYoY29uc3QgQ29udGV4dCAq
LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVDb2xvcjR1cyhDb250ZXh0ICpjb250ZXh0LCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVu
LCBHTHVzaG9ydCBibHVlLCBHTHVzaG9ydCBhbHBoYSkKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1cyhj
b25zdCBDb250ZXh0ICosIEdMdXNob3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJs
dWUsIEdMdXNob3J0IGFscGhhKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlQ29sb3I0dXN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNob3J0ICp2KQorYm9vbCBW
YWxpZGF0ZUNvbG9yNHVzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMdXNob3J0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29sb3JNYXRlcmlhbChDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlQ29sb3JN
YXRlcmlhbChjb25zdCBDb250ZXh0ICosIEdMZW51bSBmYWNlLCBHTGVudW0gbW9kZSkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvcHlQaXhlbHMoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5UGl4ZWxzKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKQEAgLTIyOCwyMiArMjI4
LDIyIEBAIGJvb2wgVmFsaWRhdGVDb3B5UGl4ZWxzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEZWxldGVMaXN0cyhDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgbGlzdCwgR0xzaXplaSByYW5nZSkKK2Jvb2wgVmFsaWRhdGVEZWxldGVMaXN0cyhj
b25zdCBDb250ZXh0ICosIEdMdWludCBsaXN0LCBHTHNpemVpIHJhbmdlKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGVwdGhSYW5nZShDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSBuLCBHTGRvdWJsZSBmKQorYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2UoY29uc3QgQ29u
dGV4dCAqLCBHTGRvdWJsZSBuLCBHTGRvdWJsZSBmKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlRHJhd0J1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYnVmKQor
Ym9vbCBWYWxpZGF0ZURyYXdCdWZmZXIoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gYnVmKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd1BpeGVscyhDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdQaXhlbHMoY29uc3QgQ29udGV4dCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
QEAgLTI1MywxMDIgKzI1MywxMDIgQEAgYm9vbCBWYWxpZGF0ZURyYXdQaXhlbHMoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVkZ2VGbGFnKENv
bnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKQorYm9vbCBWYWxpZGF0ZUVkZ2VGbGFnKGNv
bnN0IENvbnRleHQgKiwgR0xib29sZWFuIGZsYWcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVFZGdlRmxhZ3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xib29sZWFu
ICpmbGFnKQorYm9vbCBWYWxpZGF0ZUVkZ2VGbGFndihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdM
Ym9vbGVhbiAqZmxhZykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVu
ZChDb250ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZUVuZChjb25zdCBDb250ZXh0ICopCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmRMaXN0KENvbnRleHQgKmNv
bnRleHQpCitib29sIFZhbGlkYXRlRW5kTGlzdChjb25zdCBDb250ZXh0ICopCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZChDb250ZXh0ICpjb250ZXh0
LCBHTGRvdWJsZSB1KQorYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDFkKGNvbnN0IENvbnRleHQgKiwg
R0xkb3VibGUgdSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2YWxD
b29yZDFkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdSkKK2Jvb2wgVmFsaWRh
dGVFdmFsQ29vcmQxZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdSkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDFmKENvbnRleHQgKmNv
bnRleHQsIEdMZmxvYXQgdSkKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZihjb25zdCBDb250ZXh0
ICosIEdMZmxvYXQgdSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2
YWxDb29yZDFmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp1KQorYm9vbCBWYWxp
ZGF0ZUV2YWxDb29yZDFmdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnUpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQyZChDb250ZXh0ICpj
b250ZXh0LCBHTGRvdWJsZSB1LCBHTGRvdWJsZSB2KQorYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJk
KGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgdSwgR0xkb3VibGUgdikKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJkdihDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGRvdWJsZSAqdSkKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQyZHYoY29uc3QgQ29udGV4
dCAqLCBjb25zdCBHTGRvdWJsZSAqdSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUV2YWxDb29yZDJmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdSwgR0xmbG9hdCB2
KQorYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCB1LCBH
TGZsb2F0IHYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFdmFsQ29v
cmQyZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdSkKK2Jvb2wgVmFsaWRhdGVF
dmFsQ29vcmQyZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp1KQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRXZhbE1lc2gxKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBtb2RlLCBHTGludCBpMSwgR0xpbnQgaTIpCitib29sIFZhbGlkYXRlRXZhbE1lc2gx
KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUV2YWxNZXNoMihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyLCBHTGludCBqMSwgR0xpbnQgajIp
Citib29sIFZhbGlkYXRlRXZhbE1lc2gyKGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG1vZGUsIEdM
aW50IGkxLCBHTGludCBpMiwgR0xpbnQgajEsIEdMaW50IGoyKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlRXZhbFBvaW50MShDb250ZXh0ICpjb250ZXh0LCBHTGludCBp
KQorYm9vbCBWYWxpZGF0ZUV2YWxQb2ludDEoY29uc3QgQ29udGV4dCAqLCBHTGludCBpKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRXZhbFBvaW50MihDb250ZXh0ICpj
b250ZXh0LCBHTGludCBpLCBHTGludCBqKQorYm9vbCBWYWxpZGF0ZUV2YWxQb2ludDIoY29uc3Qg
Q29udGV4dCAqLCBHTGludCBpLCBHTGludCBqKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlRmVlZGJhY2tCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBzaXpl
LCBHTGVudW0gdHlwZSwgR0xmbG9hdCAqYnVmZmVyKQorYm9vbCBWYWxpZGF0ZUZlZWRiYWNrQnVm
ZmVyKGNvbnN0IENvbnRleHQgKiwgR0xzaXplaSBzaXplLCBHTGVudW0gdHlwZSwgY29uc3QgR0xm
bG9hdCAqYnVmZmVyKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRm9n
aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxp
ZGF0ZUZvZ2koY29uc3QgQ29udGV4dCAqLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRm9naXYoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUZvZ2l2
KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRnJ1c3R1bShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUZydXN0dW0oY29uc3QgQ29udGV4dCAqLAogICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHJp
Z2h0LAogICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgYm90dG9tLApAQCAtMzU5LDE4NyAr
MzU5LDE4NyBAQCBib29sIFZhbGlkYXRlRnJ1c3R1bShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2VuTGlzdHMoQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSByYW5nZSkKK2Jvb2wgVmFsaWRhdGVHZW5MaXN0cyhjb25zdCBDb250ZXh0ICosIEdM
c2l6ZWkgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRD
bGlwUGxhbmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBHTGRvdWJsZSAqZXF1YXRp
b24pCitib29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5lKGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIHBs
YW5lLCBjb25zdCBHTGRvdWJsZSAqZXF1YXRpb24pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXREb3VibGV2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
R0xkb3VibGUgKmRhdGEpCitib29sIFZhbGlkYXRlR2V0RG91Ymxldihjb25zdCBDb250ZXh0ICos
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xkb3VibGUgKmRhdGEpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRMaWdodGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBs
aWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldExpZ2h0
aXYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xp
bnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE1h
cGR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xkb3Vi
bGUgKnYpCitib29sIFZhbGlkYXRlR2V0TWFwZHYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcXVlcnksIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0TWFwZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZUdldE1hcGZ2KGNv
bnN0IENvbnRleHQgKiwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBjb25zdCBHTGZsb2F0
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TWFwaXYoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGludCAqdikKK2Jv
b2wgVmFsaWRhdGVHZXRNYXBpdihjb25zdCBDb250ZXh0ICosIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBxdWVyeSwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRNYXRlcmlhbGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0TWF0ZXJpYWxpdihjb25z
dCBDb250ZXh0ICosIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQaXhlbE1hcGZ2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcykKK2Jvb2wgVmFs
aWRhdGVHZXRQaXhlbE1hcGZ2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG1hcCwgY29uc3QgR0xm
bG9hdCAqdmFsdWVzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0
UGl4ZWxNYXB1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0x1aW50ICp2YWx1ZXMp
Citib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXB1aXYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gbWFw
LCBjb25zdCBHTHVpbnQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUdldFBpeGVsTWFwdXN2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMdXNo
b3J0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXB1c3YoY29uc3QgQ29udGV4dCAq
LCBHTGVudW0gbWFwLCBjb25zdCBHTHVzaG9ydCAqdmFsdWVzKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0UG9seWdvblN0aXBwbGUoQ29udGV4dCAqY29udGV4dCwg
R0x1Ynl0ZSAqbWFzaykKK2Jvb2wgVmFsaWRhdGVHZXRQb2x5Z29uU3RpcHBsZShjb25zdCBDb250
ZXh0ICosIGNvbnN0IEdMdWJ5dGUgKm1hc2spCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRUZXhHZW5kdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdM
ZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRUZXhHZW5kdihj
b25zdCBDb250ZXh0ICosIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGRvdWJs
ZSAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4
R2VuZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRUZXhHZW5mdihjb25zdCBDb250ZXh0ICosIEdM
ZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5pdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFs
aWRhdGVHZXRUZXhHZW5pdihjb25zdCBDb250ZXh0ICosIEdMZW51bSBjb29yZCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0VGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRU
ZXhJbWFnZShjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhl
bHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW5kZXhNYXNrKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBtYXNrKQorYm9vbCBWYWxpZGF0ZUluZGV4TWFzayhjb25zdCBDb250ZXh0ICos
IEdMdWludCBtYXNrKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW5k
ZXhkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIGMpCitib29sIFZhbGlkYXRlSW5kZXhkKGNv
bnN0IENvbnRleHQgKiwgR0xkb3VibGUgYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUluZGV4ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKmMpCiti
b29sIFZhbGlkYXRlSW5kZXhkdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZG91YmxlICpjKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW5kZXhmKENvbnRleHQgKmNv
bnRleHQsIEdMZmxvYXQgYykKK2Jvb2wgVmFsaWRhdGVJbmRleGYoY29uc3QgQ29udGV4dCAqLCBH
TGZsb2F0IGMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleGZ2
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKmMpCitib29sIFZhbGlkYXRlSW5kZXhm
dihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKmMpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgYykKK2Jv
b2wgVmFsaWRhdGVJbmRleGkoY29uc3QgQ29udGV4dCAqLCBHTGludCBjKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW5kZXhpdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGludCAqYykKK2Jvb2wgVmFsaWRhdGVJbmRleGl2KGNvbnN0IENvbnRleHQgKiwgY29uc3Qg
R0xpbnQgKmMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbmRleHMo
Q29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBjKQorYm9vbCBWYWxpZGF0ZUluZGV4cyhjb25zdCBD
b250ZXh0ICosIEdMc2hvcnQgYykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUluZGV4c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqYykKK2Jvb2wgVmFs
aWRhdGVJbmRleHN2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqYykKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUluaXROYW1lcyhDb250ZXh0ICpjb250ZXh0
KQorYm9vbCBWYWxpZGF0ZUluaXROYW1lcyhjb25zdCBDb250ZXh0ICopCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJc0xpc3QoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGxpc3QpCitib29sIFZhbGlkYXRlSXNMaXN0KGNvbnN0IENvbnRleHQgKiwgR0x1aW50IGxpc3Qp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaWdodE1vZGVsaShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorYm9vbCBWYWxpZGF0ZUxp
Z2h0TW9kZWxpKGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxpdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlk
YXRlTGlnaHRNb2RlbGl2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTGlnaHRp
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh
bSkKK2Jvb2wgVmFsaWRhdGVMaWdodGkoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gbGlnaHQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVMaWdodGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUxpZ2h0aXYoY29uc3QgQ29u
dGV4dCAqLCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbmVTdGlwcGxlKENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVybikKK2Jvb2wgVmFsaWRh
dGVMaW5lU3RpcHBsZShjb25zdCBDb250ZXh0ICosIEdMaW50IGZhY3RvciwgR0x1c2hvcnQgcGF0
dGVybikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpc3RCYXNlKENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBiYXNlKQorYm9vbCBWYWxpZGF0ZUxpc3RCYXNlKGNvbnN0
IENvbnRleHQgKiwgR0x1aW50IGJhc2UpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVMb2FkTWF0cml4ZChDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqbSkK
K2Jvb2wgVmFsaWRhdGVMb2FkTWF0cml4ZChjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZG91Ymxl
ICptKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTG9hZE5hbWUoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IG5hbWUpCitib29sIFZhbGlkYXRlTG9hZE5hbWUoY29uc3Qg
Q29udGV4dCAqLCBHTHVpbnQgbmFtZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZU1hcDFkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwMWQoY29uc3Qg
Q29udGV4dCAqLAogICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgdTEsCiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdTIsCkBA
IC01NTAsNyArNTUwLDcgQEAgYm9vbCBWYWxpZGF0ZU1hcDFkKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXAxZihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZU1hcDFmKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTEsCiAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB1MiwKQEAgLTU2MSw3ICs1NjEsNyBAQCBib29sIFZhbGlkYXRl
TWFwMWYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZU1hcDJkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwMmQoY29uc3QgQ29u
dGV4dCAqLAogICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgdTEsCiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdTIsCkBAIC01
NzYsNyArNTc2LDcgQEAgYm9vbCBWYWxpZGF0ZU1hcDJkKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXAyZihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZU1hcDJmKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTEsCiAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB1MiwKQEAgLTU5MSwxNyArNTkxLDE3IEBAIGJvb2wgVmFsaWRhdGVN
YXAyZihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlTWFwR3JpZDFkKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xk
b3VibGUgdTIpCitib29sIFZhbGlkYXRlTWFwR3JpZDFkKGNvbnN0IENvbnRleHQgKiwgR0xpbnQg
dW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZU1hcEdyaWQxZihDb250ZXh0ICpjb250ZXh0LCBHTGludCB1biwgR0xmbG9h
dCB1MSwgR0xmbG9hdCB1MikKK2Jvb2wgVmFsaWRhdGVNYXBHcmlkMWYoY29uc3QgQ29udGV4dCAq
LCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1MikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU1hcEdyaWQyZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZU1hcEdyaWQyZChjb25zdCBDb250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHVuLAogICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB1MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgR0xkb3VibGUgdTIsCkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBWYWxpZGF0
ZU1hcEdyaWQyZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlTWFwR3JpZDJmKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwR3Jp
ZDJmKGNvbnN0IENvbnRleHQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTEsCiAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgdTIsCkBAIC02MjMsNzIgKzYyMyw3MiBAQCBib29sIFZhbGlkYXRlTWFwR3JpZDJm
KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVN
YXRlcmlhbGkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pCitib29sIFZhbGlkYXRlTWF0ZXJpYWxpKGNvbnN0IENvbnRleHQgKiwgR0xlbnVt
IGZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVNYXRlcmlhbGl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNl
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCitib29sIFZhbGlkYXRlTWF0ZXJp
YWxpdihjb25zdCBDb250ZXh0ICosIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0
TWF0cml4ZChDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqbSkKK2Jvb2wgVmFsaWRh
dGVNdWx0TWF0cml4ZChjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZG91YmxlICptKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTmV3TGlzdChDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgbGlzdCwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlTmV3TGlzdChjb25zdCBD
b250ZXh0ICosIEdMdWludCBsaXN0LCBHTGVudW0gbW9kZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU5vcm1hbDNiKENvbnRleHQgKmNvbnRleHQsIEdMYnl0ZSBueCwg
R0xieXRlIG55LCBHTGJ5dGUgbnopCitib29sIFZhbGlkYXRlTm9ybWFsM2IoY29uc3QgQ29udGV4
dCAqLCBHTGJ5dGUgbngsIEdMYnl0ZSBueSwgR0xieXRlIG56KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsM2J2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
Ynl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVOb3JtYWwzYnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBH
TGJ5dGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOb3JtYWwz
ZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56
KQorYm9vbCBWYWxpZGF0ZU5vcm1hbDNkKGNvbnN0IENvbnRleHQgKiwgR0xkb3VibGUgbngsIEdM
ZG91YmxlIG55LCBHTGRvdWJsZSBueikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZU5vcm1hbDNkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jv
b2wgVmFsaWRhdGVOb3JtYWwzZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdikK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5vcm1hbDNmdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZU5vcm1hbDNmdihjb25z
dCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVOb3JtYWwzaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBueCwgR0xpbnQg
bnksIEdMaW50IG56KQorYm9vbCBWYWxpZGF0ZU5vcm1hbDNpKGNvbnN0IENvbnRleHQgKiwgR0xp
bnQgbngsIEdMaW50IG55LCBHTGludCBueikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZU5vcm1hbDNpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKK2Jv
b2wgVmFsaWRhdGVOb3JtYWwzaXYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGludCAqdikKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5vcm1hbDNzKENvbnRleHQgKmNv
bnRleHQsIEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnopCitib29sIFZhbGlkYXRl
Tm9ybWFsM3MoY29uc3QgQ29udGV4dCAqLCBHTHNob3J0IG54LCBHTHNob3J0IG55LCBHTHNob3J0
IG56KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTm9ybWFsM3N2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlTm9ybWFsM3N2
KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU9ydGhvKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
T3J0aG8oY29uc3QgQ29udGV4dCAqLAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGxlZnQs
CiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgcmlnaHQsCiAgICAgICAgICAgICAgICAgICAg
R0xkb3VibGUgYm90dG9tLApAQCAtNjk5LDQ0NiArNjk5LDQ0NiBAQCBib29sIFZhbGlkYXRlT3J0
aG8oQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVBhc3NUaHJvdWdoKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdG9rZW4pCitib29sIFZhbGlk
YXRlUGFzc1Rocm91Z2goY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHRva2VuKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUGl4ZWxNYXBmdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gbWFwLCBHTHNpemVpIG1hcHNpemUsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK2Jv
b2wgVmFsaWRhdGVQaXhlbE1hcGZ2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG1hcCwgR0xzaXpl
aSBtYXBzaXplLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVQaXhlbE1hcHVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFw
LCBHTHNpemVpIG1hcHNpemUsIGNvbnN0IEdMdWludCAqdmFsdWVzKQorYm9vbCBWYWxpZGF0ZVBp
eGVsTWFwdWl2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBj
b25zdCBHTHVpbnQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVBpeGVsTWFwdXN2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMc2l6ZWkgbWFw
c2l6ZSwgY29uc3QgR0x1c2hvcnQgKnZhbHVlcykKK2Jvb2wgVmFsaWRhdGVQaXhlbE1hcHVzdihj
b25zdCBDb250ZXh0ICosIEdMZW51bSBtYXAsIEdMc2l6ZWkgbWFwc2l6ZSwgY29uc3QgR0x1c2hv
cnQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBpeGVs
U3RvcmVmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK2Jv
b2wgVmFsaWRhdGVQaXhlbFN0b3JlZihjb25zdCBDb250ZXh0ICosIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCBwYXJhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBpeGVs
VHJhbnNmZXJmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkK
K2Jvb2wgVmFsaWRhdGVQaXhlbFRyYW5zZmVyZihjb25zdCBDb250ZXh0ICosIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVBpeGVsVHJhbnNmZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pCitib29sIFZhbGlkYXRlUGl4ZWxUcmFuc2ZlcmkoY29uc3QgQ29udGV4dCAqLCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlUGl4ZWxab29tKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5
ZmFjdG9yKQorYm9vbCBWYWxpZGF0ZVBpeGVsWm9vbShjb25zdCBDb250ZXh0ICosIEdMZmxvYXQg
eGZhY3RvciwgR0xmbG9hdCB5ZmFjdG9yKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUG9seWdvbk1vZGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51
bSBtb2RlKQorYm9vbCBWYWxpZGF0ZVBvbHlnb25Nb2RlKGNvbnN0IENvbnRleHQgKiwgR0xlbnVt
IGZhY2UsIEdMZW51bSBtb2RlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlUG9seWdvblN0aXBwbGUoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAqbWFzaykK
K2Jvb2wgVmFsaWRhdGVQb2x5Z29uU3RpcHBsZShjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMdWJ5
dGUgKm1hc2spCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb3BBdHRy
aWIoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wgVmFsaWRhdGVQb3BBdHRyaWIoY29uc3QgQ29udGV4
dCAqKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUG9wTmFtZShDb250
ZXh0ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVBvcE5hbWUoY29uc3QgQ29udGV4dCAqKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHVzaEF0dHJpYihDb250ZXh0ICpj
b250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCitib29sIFZhbGlkYXRlUHVzaEF0dHJpYihjb25zdCBD
b250ZXh0ICosIEdMYml0ZmllbGQgbWFzaykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVB1c2hOYW1lKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBuYW1lKQorYm9vbCBW
YWxpZGF0ZVB1c2hOYW1lKGNvbnN0IENvbnRleHQgKiwgR0x1aW50IG5hbWUpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZChDb250ZXh0ICpjb250ZXh0
LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJkKGNvbnN0
IENvbnRleHQgKiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZHYoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczJmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQorYm9v
bCBWYWxpZGF0ZVJhc3RlclBvczJmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCB4LCBHTGZsb2F0
IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQ
b3MyZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zMmkoQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgeCwgR0xpbnQgeSkKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyaShjb25zdCBDb250ZXh0ICos
IEdMaW50IHgsIEdMaW50IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVSYXN0ZXJQb3MyaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZh
bGlkYXRlUmFzdGVyUG9zMml2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xpbnQgKnYpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MycyhDb250ZXh0ICpj
b250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSkKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3Mycyhj
b25zdCBDb250ZXh0ICosIEdMc2hvcnQgeCwgR0xzaG9ydCB5KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zMnN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlUmFzdGVyUG9zMnN2KGNvbnN0IENvbnRleHQgKiwg
Y29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczNkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM
ZG91YmxlIHopCitib29sIFZhbGlkYXRlUmFzdGVyUG9zM2QoY29uc3QgQ29udGV4dCAqLCBHTGRv
dWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zM2R2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91
YmxlICp2KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNkdihjb25zdCBDb250ZXh0ICosIGNvbnN0
IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFz
dGVyUG9zM2YoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZihjb25zdCBDb250ZXh0ICosIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVSYXN0ZXJQb3MzZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jv
b2wgVmFsaWRhdGVSYXN0ZXJQb3MzZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp2
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmFzdGVyUG9zM2koQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK2Jvb2wgVmFsaWRhdGVS
YXN0ZXJQb3MzaShjb25zdCBDb250ZXh0ICosIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzaXYoQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlUmFzdGVyUG9zM2l2KGNv
bnN0IENvbnRleHQgKiwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdM
c2hvcnQgeSwgR0xzaG9ydCB6KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNzKGNvbnN0IENvbnRl
eHQgKiwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNzdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNzdihjb25zdCBDb250ZXh0ICos
IGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVSYXN0ZXJQb3M0ZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBH
TGRvdWJsZSB6LCBHTGRvdWJsZSB3KQorYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRkKGNvbnN0IENv
bnRleHQgKiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdykK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRkdihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0
ZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRmKENvbnRleHQgKmNvbnRleHQsIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKK2Jvb2wgVmFsaWRhdGVSYXN0
ZXJQb3M0Zihjb25zdCBDb250ZXh0ICosIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHos
IEdMZmxvYXQgdykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3Rl
clBvczRmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczRmdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0aShDb250ZXh0ICpjb250
ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQorYm9vbCBWYWxpZGF0ZVJh
c3RlclBvczRpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xp
bnQgdykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRp
dihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQ
b3M0aXYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRzKENvbnRleHQgKmNvbnRleHQsIEdMc2hv
cnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdykKK2Jvb2wgVmFsaWRhdGVSYXN0
ZXJQb3M0cyhjb25zdCBDb250ZXh0ICosIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHos
IEdMc2hvcnQgdykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJhc3Rl
clBvczRzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczRzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSZWN0ZChDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSB4MSwgR0xkb3VibGUgeTEsIEdMZG91YmxlIHgyLCBHTGRvdWJsZSB5MikKK2Jvb2wg
VmFsaWRhdGVSZWN0ZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwg
R0xkb3VibGUgeDIsIEdMZG91YmxlIHkyKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUmVjdGR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2MSwgY29u
c3QgR0xkb3VibGUgKnYyKQorYm9vbCBWYWxpZGF0ZVJlY3Rkdihjb25zdCBDb250ZXh0ICosIGNv
bnN0IEdMZG91YmxlICp2MSwgY29uc3QgR0xkb3VibGUgKnYyKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlUmVjdGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4MSwg
R0xmbG9hdCB5MSwgR0xmbG9hdCB4MiwgR0xmbG9hdCB5MikKK2Jvb2wgVmFsaWRhdGVSZWN0Zihj
b25zdCBDb250ZXh0ICosIEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxv
YXQgeTIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVSZWN0ZnYoQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdjEsIGNvbnN0IEdMZmxvYXQgKnYyKQorYm9v
bCBWYWxpZGF0ZVJlY3Rmdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMZmxvYXQgKnYxLCBjb25z
dCBHTGZsb2F0ICp2MikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJl
Y3RpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50
IHkyKQorYm9vbCBWYWxpZGF0ZVJlY3RpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgeDEsIEdMaW50
IHkxLCBHTGludCB4MiwgR0xpbnQgeTIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVSZWN0aXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYxLCBjb25zdCBH
TGludCAqdjIpCitib29sIFZhbGlkYXRlUmVjdGl2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xp
bnQgKnYxLCBjb25zdCBHTGludCAqdjIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVSZWN0cyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgxLCBHTHNob3J0IHkxLCBH
THNob3J0IHgyLCBHTHNob3J0IHkyKQorYm9vbCBWYWxpZGF0ZVJlY3RzKGNvbnN0IENvbnRleHQg
KiwgR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5MikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlY3RzdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTHNob3J0ICp2MSwgY29uc3QgR0xzaG9ydCAqdjIpCitib29sIFZhbGlkYXRlUmVj
dHN2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xzaG9ydCAqdjEsIGNvbnN0IEdMc2hvcnQgKnYy
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVuZGVyTW9kZShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSkKK2Jvb2wgVmFsaWRhdGVSZW5kZXJNb2RlKGNvbnN0
IENvbnRleHQgKiwgR0xlbnVtIG1vZGUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVSb3RhdGVkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIGFuZ2xlLCBHTGRvdWJs
ZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQorYm9vbCBWYWxpZGF0ZVJvdGF0ZWQoY29uc3Qg
Q29udGV4dCAqLCBHTGRvdWJsZSBhbmdsZSwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3Vi
bGUgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNjYWxlZChDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQorYm9vbCBW
YWxpZGF0ZVNjYWxlZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdM
ZG91YmxlIHopCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWxlY3RC
dWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmJ1ZmZlcikKK2Jv
b2wgVmFsaWRhdGVTZWxlY3RCdWZmZXIoY29uc3QgQ29udGV4dCAqLCBHTHNpemVpIHNpemUsIGNv
bnN0IEdMdWludCAqYnVmZmVyKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlVGV4Q29vcmQxZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBzKQorYm9vbCBWYWxpZGF0
ZVRleENvb3JkMWQoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSBzKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQxZHYoQ29udGV4dCAqY29udGV4dCwgY29u
c3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQxZHYoY29uc3QgQ29udGV4dCAq
LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVRleENvb3JkMWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzKQorYm9vbCBWYWxpZGF0
ZVRleENvb3JkMWYoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHMpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFmdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkMWZ2KGNvbnN0IENvbnRleHQgKiwg
Y29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVRleENvb3JkMWkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcykKK2Jvb2wgVmFsaWRhdGVUZXhD
b29yZDFpKGNvbnN0IENvbnRleHQgKiwgR0xpbnQgcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMWl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50
ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkMWl2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xp
bnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDFz
KENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFzKGNv
bnN0IENvbnRleHQgKiwgR0xzaG9ydCBzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlVGV4Q29vcmQxc3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdikK
K2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFzdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMc2hvcnQg
KnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJkKENv
bnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpCitib29sIFZhbGlkYXRlVGV4
Q29vcmQyZChjb25zdCBDb250ZXh0ICosIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJkdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJkdihjb25zdCBD
b250ZXh0ICosIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4Q29vcmQyZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHMsIEdMZmxv
YXQgdCkKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCBz
LCBHTGZsb2F0IHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhD
b29yZDJmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0
ZVRleENvb3JkMmZ2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMmkoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgcywgR0xpbnQgdCkKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDJpKGNvbnN0IENvbnRl
eHQgKiwgR0xpbnQgcywgR0xpbnQgdCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVRleENvb3JkMml2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9v
bCBWYWxpZGF0ZVRleENvb3JkMml2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xpbnQgKnYpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDJzKENvbnRleHQg
KmNvbnRleHQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkMnMo
Y29uc3QgQ29udGV4dCAqLCBHTHNob3J0IHMsIEdMc2hvcnQgdCkKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkMnN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQyc3YoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
VGV4Q29vcmQzZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRv
dWJsZSByKQorYm9vbCBWYWxpZGF0ZVRleENvb3JkM2QoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJs
ZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4Q29vcmQzZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQzZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRv
dWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3Jk
M2YoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcikKK2Jv
b2wgVmFsaWRhdGVUZXhDb29yZDNmKGNvbnN0IENvbnRleHQgKiwgR0xmbG9hdCBzLCBHTGZsb2F0
IHQsIEdMZmxvYXQgcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRl
eENvb3JkM2Z2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlk
YXRlVGV4Q29vcmQzZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp2KQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQzaShDb250ZXh0ICpjb250
ZXh0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKQorYm9vbCBWYWxpZGF0ZVRleENvb3JkM2ko
Y29uc3QgQ29udGV4dCAqLCBHTGludCBzLCBHTGludCB0LCBHTGludCByKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQzaXYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQzaXYoY29uc3QgQ29udGV4dCAq
LCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVRleENvb3JkM3MoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hv
cnQgcikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDNzKGNvbnN0IENvbnRleHQgKiwgR0xzaG9ydCBz
LCBHTHNob3J0IHQsIEdMc2hvcnQgcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVRleENvb3JkM3N2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCiti
b29sIFZhbGlkYXRlVGV4Q29vcmQzc3YoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTHNob3J0ICp2
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0ZChDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJs
ZSBxKQorYm9vbCBWYWxpZGF0ZVRleENvb3JkNGQoY29uc3QgQ29udGV4dCAqLCBHTGRvdWJsZSBz
LCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByLCBHTGRvdWJsZSBxKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVGV4Q29vcmQ0ZHYoY29uc3QgQ29udGV4dCAqLCBj
b25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVRleENvb3JkNGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxv
YXQgciwgR0xmbG9hdCBxKQorYm9vbCBWYWxpZGF0ZVRleENvb3JkNGYoY29uc3QgQ29udGV4dCAq
LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDRmdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkNGZ2KGNvbnN0IENvbnRl
eHQgKiwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVRleENvb3JkNGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCwgR0xp
bnQgciwgR0xpbnQgcSkKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRpKGNvbnN0IENvbnRleHQgKiwg
R0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkNGl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
aW50ICp2KQorYm9vbCBWYWxpZGF0ZVRleENvb3JkNGl2KGNvbnN0IENvbnRleHQgKiwgY29uc3Qg
R0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29y
ZDRzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdM
c2hvcnQgcSkKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRzKGNvbnN0IENvbnRleHQgKiwgR0xzaG9y
dCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciwgR0xzaG9ydCBxKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRzdihjb25zdCBDb250ZXh0ICosIGNv
bnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVU
ZXhHZW5kKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGRv
dWJsZSBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVUZXhHZW5kKGNvbnN0IENvbnRleHQgKiwgR0xlbnVt
IGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlIHBhcmFtKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVGV4R2VuZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNv
b3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCitib29sIFZhbGlkYXRl
VGV4R2VuZHYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xkb3VibGUgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVRleEdlbmYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VuZihjb25zdCBDb250ZXh0ICosIEdM
ZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAgIHJldHVybiB0
cnVlOwogfQotYm9vbCBWYWxpZGF0ZVRleEdlbmZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBj
b29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitib29sIFZhbGlkYXRl
VGV4R2VuZnYoY29uc3QgQ29udGV4dCAqLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlVGV4R2VuaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pCitib29sIFZhbGlkYXRlVGV4R2VuaShjb25zdCBDb250ZXh0ICosIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVRleEdlbml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQorYm9vbCBWYWxpZGF0ZVRleEdl
bml2KGNvbnN0IENvbnRleHQgKiwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhJ
bWFnZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4SW1hZ2UxRChjb25zdCBD
b250ZXh0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBpbnRlcm5hbGZvcm1hdCwKQEAgLTExNTEsMTI3ICsxMTUxLDEyNyBAQCBib29sIFZhbGlk
YXRlVGV4SW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVHJhbnNsYXRlZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRv
dWJsZSB5LCBHTGRvdWJsZSB6KQorYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZWQoY29uc3QgQ29udGV4
dCAqLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4MmQoQ29udGV4dCAqY29udGV4dCwgR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgyZChjb25zdCBDb250ZXh0ICos
IEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVWZXJ0ZXgyZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCiti
b29sIFZhbGlkYXRlVmVydGV4MmR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgyZihDb250ZXh0
ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgyZihj
b25zdCBDb250ZXh0ICosIEdMZmxvYXQgeCwgR0xmbG9hdCB5KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4MmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4MmZ2KGNvbnN0IENvbnRleHQgKiwgY29uc3Qg
R0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRl
eDJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkpCitib29sIFZhbGlkYXRlVmVy
dGV4MmkoY29uc3QgQ29udGV4dCAqLCBHTGludCB4LCBHTGludCB5KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4Mml2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleDJpdihjb25zdCBDb250ZXh0ICosIGNvbnN0
IEdMaW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
MnMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpCitib29sIFZhbGlkYXRl
VmVydGV4MnMoY29uc3QgQ29udGV4dCAqLCBHTHNob3J0IHgsIEdMc2hvcnQgeSkKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDJzdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleDJzdihjb25zdCBDb250ZXh0
ICosIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXgzZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBH
TGRvdWJsZSB6KQorYm9vbCBWYWxpZGF0ZVZlcnRleDNkKGNvbnN0IENvbnRleHQgKiwgR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleDNkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAq
dikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgzZHYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGRvdWJs
ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDNmKENv
bnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29sIFZh
bGlkYXRlVmVydGV4M2YoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4M2Z2
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4
M2Z2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleDNpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgs
IEdMaW50IHksIEdMaW50IHopCitib29sIFZhbGlkYXRlVmVydGV4M2koY29uc3QgQ29udGV4dCAq
LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVmVydGV4M2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQor
Ym9vbCBWYWxpZGF0ZVZlcnRleDNpdihjb25zdCBDb250ZXh0ICosIGNvbnN0IEdMaW50ICp2KQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4M3MoQ29udGV4dCAq
Y29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeikKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXgzcyhjb25zdCBDb250ZXh0ICosIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHop
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzc3YoQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgzc3YoY29u
c3QgQ29udGV4dCAqLCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlVmVydGV4NGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xk
b3VibGUgeSwgR0xkb3VibGUgeiwgR0xkb3VibGUgdykKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0ZChj
b25zdCBDb250ZXh0ICosIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91
YmxlIHcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0ZHYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4
NGR2KGNvbnN0IENvbnRleHQgKiwgY29uc3QgR0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0ZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCitib29sIFZhbGlkYXRlVmVydGV4
NGYoY29uc3QgQ29udGV4dCAqLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZs
b2F0IHcpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0ZnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0
ZnYoY29uc3QgQ29udGV4dCAqLCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4NGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdykKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0aShjb25zdCBD
b250ZXh0ICosIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0aXYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4NGl2KGNvbnN0IENvbnRleHQgKiwg
Y29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXg0cyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6
LCBHTHNob3J0IHcpCitib29sIFZhbGlkYXRlVmVydGV4NHMoY29uc3QgQ29udGV4dCAqLCBHTHNo
b3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6LCBHTHNob3J0IHcpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0c3YoY29uc3QgQ29udGV4dCAqLCBjb25z
dCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDExLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMS5jcHAKaW5kZXgg
ZjQyMjZmMWE1YjRjMWM2MDk1OWRiMzU5NjA2OGEyNWQ2OThlMzBhZC4uNjdlMjM5ZjU4YTg3Yzc5
YTBhNzMyNGJiY2Q1ZTI0MWNiNTViMzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTEuY3BwCkBAIC0xMSwyMCArMTEs
MjAgQEAKIG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlkYXRlQXJlVGV4dHVyZXNSZXNpZGVu
dChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUFyZVRleHR1cmVzUmVzaWRlbnQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAq
dGV4dHVyZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKnJl
c2lkZW5jZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xl
YW4gKnJlc2lkZW5jZXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVB
cnJheUVsZW1lbnQoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgaSkKK2Jvb2wgVmFsaWRhdGVBcnJh
eUVsZW1lbnQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgaSkKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTFEKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlQ29weVRleEltYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTM2LDcgKzM2LDcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlU
ZXhJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUNvcHlUZXhTdWJJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LApAQCAtNDcsMzcgKzQ3LDQwIEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1h
Z2UxRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRWRnZUZsYWdQb2ludGVyKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgc3RyaWRlLCBjb25z
dCB2b2lkICpwb2ludGVyKQorYm9vbCBWYWxpZGF0ZUVkZ2VGbGFnUG9pbnRlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUluZGV4UG9pbnRlcihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIp
Citib29sIFZhbGlkYXRlSW5kZXhQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcikKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUluZGV4dWIoQ29udGV4dCAqY29udGV4dCwgR0x1
Ynl0ZSBjKQorYm9vbCBWYWxpZGF0ZUluZGV4dWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1
Ynl0ZSBjKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW5kZXh1YnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAqYykKK2Jvb2wgVmFsaWRhdGVJbmRleHVi
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICpjKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlSW50ZXJsZWF2ZWRBcnJheXMoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIp
Citib29sIFZhbGlkYXRlSW50ZXJsZWF2ZWRBcnJheXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVQb3BDbGllbnRBdHRyaWIoQ29udGV4dCAqY29udGV4dCkKK2Jvb2wg
VmFsaWRhdGVQb3BDbGllbnRBdHRyaWIoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByaW9yaXRpemVUZXh0dXJlcyhDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByaW9yaXRpemVUZXh0dXJlcyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnByaW9yaXRpZXMp
CkBAIC04NSwxMiArODgsMTIgQEAgYm9vbCBWYWxpZGF0ZVByaW9yaXRpemVUZXh0dXJlcyhDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHVzaENs
aWVudEF0dHJpYihDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCitib29sIFZhbGlk
YXRlUHVzaENsaWVudEF0dHJpYihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGJpdGZpZWxkIG1h
c2spCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTFE
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UxRChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMV9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTFfYXV0b2dlbi5oCmluZGV4
IDZiYmFkYzVkNDU5N2JiMWQxMmNhMTQwY2U0MGJjNjEwY2JlMTg3MDEuLmFiZDI1OTg2ZjhmYzQ0
MGM2ZDM1OGI2MjQ4YTNiOTc1NGJmNzU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxMV9hdXRvZ2VuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDExX2F1dG9nZW4uaApA
QCAtMTcsMTIgKzE3LDEyIEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9v
bCBWYWxpZGF0ZUFyZVRleHR1cmVzUmVzaWRlbnQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVBcmVUZXh0dXJlc1Jlc2lkZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuICpyZXNpZGVuY2VzKTsKLWJvb2wgVmFsaWRhdGVBcnJh
eUVsZW1lbnQoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgaSk7Ci1ib29sIFZhbGlkYXRlQ29weVRl
eEltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMYm9vbGVhbiAqcmVzaWRlbmNlcyk7Citib29sIFZhbGlkYXRlQXJyYXlFbGVt
ZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGkpOworYm9vbCBWYWxpZGF0ZUNvcHlU
ZXhJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
CkBAIC0zMCwyOCArMzAsMjggQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZTFEKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGJvcmRlcik7Ci1ib29sIFZhbGlkYXRlQ29weVRleFN1YkltYWdlMUQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UxRChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCk7Ci1i
b29sIFZhbGlkYXRlRWRnZUZsYWdQb2ludGVyKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgc3Ry
aWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKLWJvb2wgVmFsaWRhdGVJbmRleFBvaW50ZXIoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpw
b2ludGVyKTsKLWJvb2wgVmFsaWRhdGVJbmRleHViKENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUg
Yyk7Ci1ib29sIFZhbGlkYXRlSW5kZXh1YnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0
ZSAqYyk7Ci1ib29sIFZhbGlkYXRlSW50ZXJsZWF2ZWRBcnJheXMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVFZGdlRmxhZ1BvaW50ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xz
aXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOworYm9vbCBWYWxpZGF0ZUluZGV4UG9p
bnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs
IGNvbnN0IHZvaWQgKnBvaW50ZXIpOworYm9vbCBWYWxpZGF0ZUluZGV4dWIoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1Ynl0ZSBjKTsKK2Jvb2wgVmFsaWRhdGVJbmRleHVidihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICpjKTsKK2Jvb2wgVmFsaWRhdGVJbnRlcmxlYXZl
ZEFycmF5cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
cG9pbnRlcik7Ci1ib29sIFZhbGlkYXRlUG9wQ2xpZW50QXR0cmliKENvbnRleHQgKmNvbnRleHQp
OwotYm9vbCBWYWxpZGF0ZVByaW9yaXRpemVUZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVBvcENsaWVudEF0dHJpYihjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wg
VmFsaWRhdGVQcmlvcml0aXplVGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwcmlvcml0aWVzKTsKLWJvb2wgVmFsaWRhdGVQ
dXNoQ2xpZW50QXR0cmliKENvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzayk7Ci1ib29s
IFZhbGlkYXRlVGV4U3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVB1
c2hDbGllbnRBdHRyaWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKTsK
K2Jvb2wgVmFsaWRhdGVUZXhTdWJJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25HTDEzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0wxMy5jcHAKaW5kZXggNmRiNjAyMzRlMDAwZGU5ZTZkMTM0ZTRjYjUzMzcy
NjE3MmFmZjg3Yi4uYmI2MTAwM2EzMjY1OWIwZjNmMDg0NTg1YzZkZmQxY2VjNTBiZmYxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25H
TDEzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMMTMuY3BwCkBAIC0xMSw3ICsxMSw3IEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlQ29tcHJlc3NlZFRleEltYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTIzLDcgKzIzLDcgQEAgYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UxRChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTFEKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0
LApAQCAtMzUsMTUyICszNSwxNTkgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFn
ZTFEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRDb21wcmVzc2VkVGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIHZvaWQgKmltZykKK2Jvb2wgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4SW1h
Z2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmltZykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxvYWRUcmFu
c3Bvc2VNYXRyaXhkKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKQorYm9vbCBW
YWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZG91YmxlICptKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTG9h
ZFRyYW5zcG9zZU1hdHJpeGYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqbSkKK2Jv
b2wgVmFsaWRhdGVMb2FkVHJhbnNwb3NlTWF0cml4Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGZsb2F0ICptKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
TXVsdFRyYW5zcG9zZU1hdHJpeGQoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKm0p
Citib29sIFZhbGlkYXRlTXVsdFRyYW5zcG9zZU1hdHJpeGQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xkb3VibGUgKm0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVNdWx0VHJhbnNwb3NlTWF0cml4ZihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0
ICptKQorYm9vbCBWYWxpZGF0ZU11bHRUcmFuc3Bvc2VNYXRyaXhmKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZmxvYXQgKm0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVNdWx0aVRleENvb3JkMWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xkb3VibGUgcykKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZHYoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDFkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJs
ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29v
cmQxZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMpCitib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDFmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMZmxvYXQgcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11
bHRpVGV4Q29vcmQxZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xm
bG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWZ2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWkoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgR0xpbnQgcykKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxaXYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlU
ZXhDb29yZDFpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBH
TGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQxcyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNob3J0IHMpCitib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMc2hvcnQgcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZU11bHRpVGV4Q29vcmQxc3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3Qg
R0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMXN2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmQoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCkKK2Jvb2wgVmFsaWRhdGVN
dWx0aVRleENvb3JkMmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xk
b3VibGUgcywgR0xkb3VibGUgdCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZU11bHRpVGV4Q29vcmQyZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29u
c3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJkdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZihDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCkKK2Jvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkMmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xmbG9hdCBzLCBHTGZsb2F0IHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVNdWx0aVRleENvb3JkMmZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNv
bnN0IEdMZmxvYXQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJpKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdMaW50IHQpCitib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZDJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50
IHMsIEdMaW50IHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkMml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50
ICp2KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyaXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xz
aG9ydCB0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDJzdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2
KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTGRvdWJsZSBzLCBHTGRvdWJsZSB0LCBHTGRvdWJsZSByKQorYm9vbCBWYWxpZGF0
ZU11bHRpVGV4Q29vcmQzZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSByKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNkdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRl
eENvb3JkM2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdM
ZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlU
ZXhDb29yZDNmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xm
bG9hdCB0LCBHTGZsb2F0IHIpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZs
b2F0IHIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkM2Z2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYp
Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMaW50IHMsIEdMaW50IHQsIEdMaW50IHIpCitib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDNpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IHMsIEdM
aW50IHQsIEdMaW50IHIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVN
dWx0aVRleENvb3JkM2l2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdM
aW50ICp2KQorYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzaXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM3MoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcikKK2Jvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkM3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzc3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM3N2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGQo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdCwKQEAgLTE5MCwyNyArMTk3LDMyIEBAIGJvb2wg
VmFsaWRhdGVNdWx0aVRleENvb3JkNGQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZHYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRv
dWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQ0ZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAq
dikKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwgR0xpbnQgcSkKK2Jvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkNGkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgcSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11
bHRpVGV4Q29vcmQ0aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xp
bnQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0cyhDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNob3J0IHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hv
cnQgdCwKQEAgLTIyMCw3ICsyMzIsNyBAQCBib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRzKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkNHN2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hv
cnQgKnYpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRzdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25HTDEzX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0wxM19hdXRvZ2VuLmgKaW5kZXggOTRhZjlmZGJkMDk1ZWNlNzQ1ZGZm
Nzk3ZDdiNTEyNjhkOTFlYmUwYy4uOGRiMWM4YWM3MjdmMWQ3MDkyZmUxNzkzZGVkNDkxYzc0OTdk
ODdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25HTDEzX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMMTNfYXV0b2dlbi5oCkBAIC0xNyw3ICsxNyw3IEBAIG5hbWVz
cGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJ
bWFnZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdl
MUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKQEAgLTI1LDcgKzI1LDcgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJ
bWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTFEKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMUQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs
CkBAIC0zMyw1MiArMzMsNzIgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTFE
KENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4SW1hZ2UoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIHZvaWQgKmltZyk7Ci1ib29s
IFZhbGlkYXRlTG9hZFRyYW5zcG9zZU1hdHJpeGQoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xk
b3VibGUgKm0pOwotYm9vbCBWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhmKENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZmxvYXQgKm0pOwotYm9vbCBWYWxpZGF0ZU11bHRUcmFuc3Bvc2VNYXRy
aXhkKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKTsKLWJvb2wgVmFsaWRhdGVN
dWx0VHJhbnNwb3NlTWF0cml4ZihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKTsK
LWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xkb3VibGUgcyk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFkdihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlk
YXRlTXVsdGlUZXhDb29yZDFmKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZmxv
YXQgcyk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFmdihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkMWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcyk7Ci1ib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDFpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFzKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcyk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDFzdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2
KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUgdCk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDJkdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAq
dik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJmKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMZmxvYXQgcywgR0xmbG9hdCB0KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkMmZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYp
OwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyaShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTGludCBzLCBHTGludCB0KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMml2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KTsKLWJvb2wg
VmFsaWRhdGVNdWx0aVRleENvb3JkMnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xzaG9ydCBzLCBHTHNob3J0IHQpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyc3YoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDNkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
ZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQzZHYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUg
KnYpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByKTsKLWJvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkM2Z2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0
IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzaShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKLWJvb2wgVmFs
aWRhdGVNdWx0aVRleENvb3JkM2l2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNv
bnN0IEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM3MoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgcik7Ci1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNzdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4SW1hZ2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmltZyk7
Citib29sIFZhbGlkYXRlTG9hZFRyYW5zcG9zZU1hdHJpeGQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xkb3VibGUgKm0pOworYm9vbCBWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhm
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKm0pOworYm9vbCBWYWxpZGF0
ZU11bHRUcmFuc3Bvc2VNYXRyaXhkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91
YmxlICptKTsKK2Jvb2wgVmFsaWRhdGVNdWx0VHJhbnNwb3NlTWF0cml4Zihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICptKTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3Jk
MWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcyk7Citi
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDFmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZmxvYXQgcyk7Citi
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3Jk
MWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcyk7Citib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDFzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcyk7Citib29sIFZh
bGlkYXRlTXVsdGlUZXhDb29yZDFzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xkb3VibGUgcywgR0xkb3VibGUg
dCk7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlTXVsdGlU
ZXhDb29yZDJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZmxvYXQg
cywgR0xmbG9hdCB0KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMmZ2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxp
ZGF0ZU11bHRpVGV4Q29vcmQyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTGludCBzLCBHTGludCB0KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkMml2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wg
VmFsaWRhdGVNdWx0aVRleENvb3JkMnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQy
c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAq
dik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHIp
OworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCByKTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3Jk
M2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQg
KnYpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzaShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKK2Jvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkM2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkM3MoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCBzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNob3J0IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2hvcnQgcik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDNzdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRh
dGVNdWx0aVRleENvb3JkNGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgcSk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRk
dihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1i
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkNGkoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgciwg
R0xpbnQgcSk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDRzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRkdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRvdWJsZSAqdik7
Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkNGkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cSk7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZDRzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQg
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNob3J0IHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2hvcnQgcSk7Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZDRzdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkNHN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIGNvbnN0
IEdMc2hvcnQgKnYpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVf
VkFMSURBVElPTl9HTDEzX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTQuY3BwCmluZGV4IGJmMTI1NzZhNzFh
OTFkY2IzMzk1NzZmNDU4YTAwYmM4ZDUzMWY5NmMuLjY4ZmE5MzNhZGJiYmI1YjJiOTdiNTIwMDMw
NmUzZmM2ZmFjMzJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uR0wxNC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0LmNwcApAQCAtMTEsMzIgKzExLDM1IEBACiBuYW1l
c3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkUG9pbnRlcihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiti
b29sIFZhbGlkYXRlRm9nQ29vcmRQb2ludGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcG9pbnRlcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUZvZ0Nvb3JkZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBjb29yZCkKK2Jvb2wgVmFs
aWRhdGVGb2dDb29yZGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgY29vcmQpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVGb2dDb29yZGR2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICpjb29yZCkKK2Jvb2wgVmFsaWRhdGVGb2dDb29yZGR2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICpjb29yZCkKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkZihDb250ZXh0ICpjb250ZXh0
LCBHTGZsb2F0IGNvb3JkKQorYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkZihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGZsb2F0IGNvb3JkKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlRm9nQ29vcmRmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICpjb29yZCkK
K2Jvb2wgVmFsaWRhdGVGb2dDb29yZGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZmxvYXQgKmNvb3JkKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVs
dGlEcmF3QXJyYXlzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJy
YXlzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKmZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THNpemVpICpjb3VudCwKQEAgLTQ1LDcgKzQ4LDcgQEAgYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0Fy
cmF5cyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlTXVsdGlEcmF3RWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0
aURyYXdFbGVtZW50cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCkBAIC01NSw5NyArNTgsOTcg
QEAgYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzKENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmkoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVQb2ludFBh
cmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh
bSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVy
aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQor
Ym9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzYihDb250ZXh0ICpjb250ZXh0LCBHTGJ5dGUg
cmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKQorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNv
bG9yM2IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBH
TGJ5dGUgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29u
ZGFyeUNvbG9yM2J2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMYnl0ZSAqdikKK2Jvb2wgVmFs
aWRhdGVTZWNvbmRhcnlDb2xvcjNidihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5
dGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlD
b2xvcjNkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3JlZW4sIEdM
ZG91YmxlIGJsdWUpCitib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZHYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlU2Vjb25k
YXJ5Q29sb3IzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmKENv
bnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUp
Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZnYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzaShDb250ZXh0ICpjb250ZXh0LCBH
TGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKQorYm9vbCBWYWxpZGF0ZVNlY29uZGFy
eUNvbG9yM2koY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcmVkLCBHTGludCBncmVlbiwg
R0xpbnQgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29u
ZGFyeUNvbG9yM2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yM2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9y
dCBibHVlKQorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3MoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSkKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3N2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3Iz
c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3ViKENvbnRleHQgKmNv
bnRleHQsIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpCitib29sIFZh
bGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1Ynl0ZSBy
ZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VidihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTHVieXRlICp2KQorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3Vidihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlD
b2xvcjN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4s
IEdMdWludCBibHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Vj
b25kYXJ5Q29sb3IzdWl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWludCAqdikKK2Jvb2wg
VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0x1aW50ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Vjb25k
YXJ5Q29sb3IzdXMoQ29udGV4dCAqY29udGV4dCwgR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVl
biwgR0x1c2hvcnQgYmx1ZSkKK2Jvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1cyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBi
bHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzdXN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNob3J0ICp2KQorYm9vbCBWYWxpZGF0
ZVNlY29uZGFyeUNvbG9yM3Vzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVzaG9y
dCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNv
bG9yUG9pbnRlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9y
UG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBzdHJpZGUsCkBAIC0xNTQsODIgKzE1Nyw4MiBAQCBib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3JQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVXaW5kb3dQb3MyZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5KQorYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZG91YmxlIHgsIEdMZG91YmxlIHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVXaW5kb3dQb3MyZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpCiti
b29sIFZhbGlkYXRlV2luZG93UG9zMmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93
UG9zMmYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCitib29sIFZhbGlk
YXRlV2luZG93UG9zMmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0
IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MyZnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQ
b3MyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJpKENvbnRleHQgKmNvbnRl
eHQsIEdMaW50IHgsIEdMaW50IHkpCitib29sIFZhbGlkYXRlV2luZG93UG9zMmkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGlu
dCAqdikKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVX
aW5kb3dQb3MycyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSkKK2Jvb2wg
VmFsaWRhdGVXaW5kb3dQb3Mycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdM
c2hvcnQgeSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdpbmRvd1Bv
czJzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVdp
bmRvd1BvczJzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93UG9zM2QoQ29udGV4dCAq
Y29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRh
dGVXaW5kb3dQb3MzZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZSB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
V2luZG93UG9zM2R2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KQorYm9vbCBW
YWxpZGF0ZVdpbmRvd1BvczNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJs
ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNm
KENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCitib29s
IFZhbGlkYXRlV2luZG93UG9zM2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVdpbmRvd1BvczNmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KQorYm9v
bCBWYWxpZGF0ZVdpbmRvd1BvczNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZs
b2F0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93UG9z
M2koQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK2Jvb2wgVmFs
aWRhdGVXaW5kb3dQb3MzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5
LCBHTGludCB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlV2luZG93
UG9zM2l2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVdp
bmRvd1BvczNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdikKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNzKENvbnRleHQgKmNv
bnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopCitib29sIFZhbGlkYXRlV2lu
ZG93UG9zM3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdM
c2hvcnQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVdpbmRvd1Bv
czNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQorYm9vbCBWYWxpZGF0ZVdp
bmRvd1BvczNzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0X2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNF9hdXRvZ2VuLmgKaW5kZXggZmM2M2Ey
NmRlZmEwMGE1NDY5Y2I1OTVkZjgwNzJiNzk5OGZjNzdhZC4uNjgzN2NlOWZkOGFlYjhmMzQ2YWRh
NGEzOTgyZjg5MmZjZjc5NmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTRfYXV0b2dlbi5oCkBAIC0xNyw2
MSArMTcsNjQgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlk
YXRlRm9nQ29vcmRQb2ludGVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHNpemVp
IHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcik7Ci1ib29sIFZhbGlkYXRlRm9nQ29vcmRkKENv
bnRleHQgKmNvbnRleHQsIEdMZG91YmxlIGNvb3JkKTsKLWJvb2wgVmFsaWRhdGVGb2dDb29yZGR2
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICpjb29yZCk7Ci1ib29sIFZhbGlkYXRl
Rm9nQ29vcmRmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgY29vcmQpOwotYm9vbCBWYWxpZGF0
ZUZvZ0Nvb3JkZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqY29vcmQpOwotYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5cyhDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUZvZ0Nvb3JkUG9pbnRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KnBvaW50ZXIpOworYm9vbCBWYWxpZGF0ZUZvZ0Nvb3JkZChjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGRvdWJsZSBjb29yZCk7Citib29sIFZhbGlkYXRlRm9nQ29vcmRkdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqY29vcmQpOworYm9vbCBWYWxpZGF0ZUZvZ0Nvb3Jk
Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGNvb3JkKTsKK2Jvb2wgVmFsaWRhdGVG
b2dDb29yZGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKmNvb3JkKTsK
K2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGRyYXdjb3VudCk7Ci1ib29sIFZhbGlkYXRlTXVsdGlEcmF3
RWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
cmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqY29uc3QgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBkcmF3Y291bnQpOwotYm9vbCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyaShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLWJvb2wgVmFsaWRh
dGVQb2ludFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzYihDb250ZXh0ICpj
b250ZXh0LCBHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKLWJvb2wgVmFs
aWRhdGVTZWNvbmRhcnlDb2xvcjNidihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYp
OwotYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3Vi
bGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vj
b25kYXJ5Q29sb3IzZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2YoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQs
IEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRl
U2Vjb25kYXJ5Q29sb3IzaShDb250ZXh0ICpjb250ZXh0LCBHTGludCByZWQsIEdMaW50IGdyZWVu
LCBHTGludCBibHVlKTsKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNpdihDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzcyhD
b250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHJlZCwgR0xzaG9ydCBncmVlbiwgR0xzaG9ydCBibHVl
KTsKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNzdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1YihDb250ZXh0ICpj
b250ZXh0LCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlKTsKLWJvb2wg
VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1YnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0
ZSAqdik7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWkoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vj
b25kYXJ5Q29sb3IzdWl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWludCAqdik7Ci1ib29s
IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdXMoQ29udGV4dCAqY29udGV4dCwgR0x1c2hvcnQgcmVk
LCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5
Q29sb3IzdXN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNob3J0ICp2KTsKLWJvb2wgVmFs
aWRhdGVTZWNvbmRhcnlDb2xvclBvaW50ZXIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVQb2ludFBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7Citib29sIFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yM2IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xieXRlIHJlZCwg
R0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSk7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3Iz
YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xieXRlICp2KTsKK2Jvb2wgVmFsaWRh
dGVTZWNvbmRhcnlDb2xvcjNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHJlZCwg
R0xkb3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpOworYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNv
bG9yM2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wg
VmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
cmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUpOworYm9vbCBWYWxpZGF0ZVNlY29uZGFy
eUNvbG9yM2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2koY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQg
cmVkLCBHTGludCBncmVlbiwgR0xpbnQgYmx1ZSk7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yM3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCByZWQs
IEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSk7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3Izc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZh
bGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1Ynl0ZSBy
ZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSk7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5
Q29sb3IzdWJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKnYpOworYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUpOworYm9vbCBWYWxpZGF0ZVNlY29uZGFy
eUNvbG9yM3Vpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVpbnQgKnYpOworYm9v
bCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdXNo
b3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUpOworYm9vbCBWYWxpZGF0ZVNl
Y29uZGFyeUNvbG9yM3Vzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVzaG9ydCAq
dik7Citib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQb2ludGVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcik7Ci1ib29sIFZhbGlkYXRl
V2luZG93UG9zMmQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Ci1i
b29sIFZhbGlkYXRlV2luZG93UG9zMmR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91Ymxl
ICp2KTsKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MyZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSk7Ci1ib29sIFZhbGlkYXRlV2luZG93UG9zMmZ2KENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJpKENvbnRleHQg
KmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkpOwotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJpdihD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlV2luZG93UG9z
MnMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpOwotYm9vbCBWYWxpZGF0
ZVdpbmRvd1BvczJzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wg
VmFsaWRhdGVXaW5kb3dQb3MzZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZSB6KTsKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MzZHYoQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNmKENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwotYm9vbCBWYWxp
ZGF0ZVdpbmRvd1BvczNmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJv
b2wgVmFsaWRhdGVXaW5kb3dQb3MzaShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5
LCBHTGludCB6KTsKLWJvb2wgVmFsaWRhdGVXaW5kb3dQb3MzaXYoQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNzKENvbnRleHQgKmNvbnRl
eHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwotYm9vbCBWYWxpZGF0ZVdpbmRv
d1BvczNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRh
dGVXaW5kb3dQb3MyZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5KTsKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3MyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczJmKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQ
b3MyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Citib29sIFZh
bGlkYXRlV2luZG93UG9zMmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQg
eSk7Citib29sIFZhbGlkYXRlV2luZG93UG9zMml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVXaW5kb3dQb3Mycyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSk7Citib29sIFZhbGlkYXRlV2luZG93UG9zMnN2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0
ZVdpbmRvd1BvczNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91Ymxl
IHksIEdMZG91YmxlIHopOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNkdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlV2luZG93UG9zM2Yo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7
Citib29sIFZhbGlkYXRlV2luZG93UG9zM2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVdpbmRvd1BvczNpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOworYm9vbCBWYWxpZGF0ZVdpbmRvd1Bv
czNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlk
YXRlV2luZG93UG9zM3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0
IHksIEdMc2hvcnQgeik7Citib29sIFZhbGlkYXRlV2luZG93UG9zM3N2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRp
ZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9HTDE0X0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNS5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTUuY3BwCmlu
ZGV4IDk3YjBlM2RiMGI2YmRlZDFiMmNiZDY5MDAyN2U4N2IzOTgwZmU0NjIuLjY3MDNiNjRiOGJj
NWU2ZDFiMWU4NTY5ZWY2NjViN2U1NWZmZGRlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNS5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1LmNwcApAQCAtMTEsMjEg
KzExLDIxIEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclN1YkRh
dGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJTdWJEYXRhKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2KENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1h
cEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwgR0xl
bnVtIGFjY2VzcykKK2Jvb2wgVmFsaWRhdGVNYXBCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsIEdMZW51bSBhY2Nlc3MpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMTVfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE1X2F1dG9nZW4uaAppbmRleCAwMGMzZWRmMmQ4N2Ey
MzU1M2IzNTAzZTBkYmJlYWYyOWMzMTVlNjA3Li42MzRmNGVjNGQ5MWM5MzQ2NjY0YmQxZDQ4MzI1
Mzc1ZmIzYjg0ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMTVfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wxNV9hdXRvZ2VuLmgKQEAgLTE3LDEzICsxNywx
NiBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRhdGVHZXRC
dWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QnVmZmVyU3Vi
RGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5T2JqZWN0aXYoQ29udGV4dCAqY29udGV4dCwgUXVlcnlJRCBpZFBhY2tlZCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVNYXBCdWZmZXIoQ29udGV4
dCAqY29udGV4dCwgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQsIEdMZW51bSBhY2Nlc3MpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Citib29sIFZh
bGlkYXRlR2V0UXVlcnlPYmplY3Rpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCwgR0xlbnVtIGFjY2Vzcyk7
CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0dM
MTVfQVVUT0dFTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDFfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDFfYXV0b2dlbi5oCmluZGV4IGQxOGE4OWEyNjk1MGJh
OTk2NGFiZTQ2NDE5ZTMzNTVjZDYzNDVmOTguLjM3YWY0NGUzMzZjZDZlMWQ3ZDUwMWI3ODFjNmVl
MTA4YWI4M2QyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0wxX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMV9hdXRvZ2VuLmgKQEAgLTE3LDkgKzE3LDkgQEAg
bmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRlQWNjdW0oQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVlKTsKLWJvb2wgVmFsaWRhdGVC
ZWdpbihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Ci1ib29sIFZhbGlkYXRlQml0bWFw
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQWNjdW0oY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIG9wLCBHTGZsb2F0IHZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVCZWdpbihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlQml0bWFwKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHhvcmlnLApAQCAtMjcsMTQzICsyNywxNjEgQEAgYm9vbCBWYWxpZGF0ZUJpdG1h
cChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHhtb3ZlLAog
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHltb3ZlLAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVieXRlICpiaXRtYXApOwotYm9vbCBWYWxpZGF0ZUNhbGxMaXN0KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBsaXN0KTsKLWJvb2wgVmFsaWRhdGVDYWxsTGlzdHMoQ29udGV4dCAqY29u
dGV4dCwgR0xzaXplaSBuLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqbGlzdHMpOwotYm9vbCBW
YWxpZGF0ZUNsZWFyQWNjdW0oQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCByZWQsIEdMZmxvYXQg
Z3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJE
ZXB0aChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBkZXB0aCk7Ci1ib29sIFZhbGlkYXRlQ2xl
YXJJbmRleChDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGMpOwotYm9vbCBWYWxpZGF0ZUNsaXBQ
bGFuZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcGxhbmUsIGNvbnN0IEdMZG91YmxlICplcXVh
dGlvbik7Ci1ib29sIFZhbGlkYXRlQ29sb3IzYihDb250ZXh0ICpjb250ZXh0LCBHTGJ5dGUgcmVk
LCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKTsKLWJvb2wgVmFsaWRhdGVDb2xvcjNidihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yM2QoQ29u
dGV4dCAqY29udGV4dCwgR0xkb3VibGUgcmVkLCBHTGRvdWJsZSBncmVlbiwgR0xkb3VibGUgYmx1
ZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3IzZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3Vi
bGUgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yM2YoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBy
ZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3IzZnYo
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlQ29sb3Iz
aShDb250ZXh0ICpjb250ZXh0LCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKTsK
LWJvb2wgVmFsaWRhdGVDb2xvcjNpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7
Ci1ib29sIFZhbGlkYXRlQ29sb3IzcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHJlZCwgR0xz
aG9ydCBncmVlbiwgR0xzaG9ydCBibHVlKTsKLWJvb2wgVmFsaWRhdGVDb2xvcjNzdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVDb2xvcjN1YihDb250
ZXh0ICpjb250ZXh0LCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlKTsK
LWJvb2wgVmFsaWRhdGVDb2xvcjN1YnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAq
dik7Ci1ib29sIFZhbGlkYXRlQ29sb3IzdWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJlZCwg
R0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3IzdWl2KENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMdWludCAqdik7Ci1ib29sIFZhbGlkYXRlQ29sb3IzdXMoQ29u
dGV4dCAqY29udGV4dCwgR0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1
ZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3IzdXN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdXNo
b3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVDb2xvcjRiKENvbnRleHQgKmNvbnRleHQsIEdMYnl0ZSBy
ZWQsIEdMYnl0ZSBncmVlbiwgR0xieXRlIGJsdWUsIEdMYnl0ZSBhbHBoYSk7Ci1ib29sIFZhbGlk
YXRlQ29sb3I0YnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xieXRlICp2KTsKLWJvb2wgVmFs
aWRhdGVDb2xvcjRkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHJlZCwgR0xkb3VibGUgZ3Jl
ZW4sIEdMZG91YmxlIGJsdWUsIEdMZG91YmxlIGFscGhhKTsKLWJvb2wgVmFsaWRhdGVDb2xvcjRk
dihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlQ29s
b3I0ZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRl
Q29sb3I0aShDb250ZXh0ICpjb250ZXh0LCBHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBi
bHVlLCBHTGludCBhbHBoYSk7Ci1ib29sIFZhbGlkYXRlQ29sb3I0aXYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHMoQ29udGV4dCAqY29udGV4
dCwgR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSwgR0xzaG9ydCBhbHBo
YSk7Ci1ib29sIFZhbGlkYXRlQ29sb3I0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9y
dCAqdik7Ci1ib29sIFZhbGlkYXRlQ29sb3I0dWJ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
dWJ5dGUgKnYpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHVpKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCByZWQsIEdMdWludCBncmVlbiwgR0x1aW50IGJsdWUsIEdMdWludCBhbHBoYSk7Ci1ib29sIFZh
bGlkYXRlQ29sb3I0dWl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWludCAqdik7Ci1ib29s
IFZhbGlkYXRlQ29sb3I0dXMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDYWxsTGlz
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbGlzdCk7Citib29sIFZhbGlkYXRlQ2Fs
bExpc3RzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmxpc3RzKTsKK2Jvb2wgVmFsaWRhdGVDbGVhckFjY3VtKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHJlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IGJsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGFscGhhKTsKK2Jv
b2wgVmFsaWRhdGVDbGVhckRlcHRoKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIGRl
cHRoKTsKK2Jvb2wgVmFsaWRhdGVDbGVhckluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgYyk7Citib29sIFZhbGlkYXRlQ2xpcFBsYW5lKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBwbGFuZSwgY29uc3QgR0xkb3VibGUgKmVxdWF0aW9uKTsKK2Jvb2wgVmFsaWRhdGVD
b2xvcjNiKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYnl0ZSByZWQsIEdMYnl0ZSBncmVlbiwg
R0xieXRlIGJsdWUpOworYm9vbCBWYWxpZGF0ZUNvbG9yM2J2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMYnl0ZSAqdik7Citib29sIFZhbGlkYXRlQ29sb3IzZChjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKTsK
K2Jvb2wgVmFsaWRhdGVDb2xvcjNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRv
dWJsZSAqdik7Citib29sIFZhbGlkYXRlQ29sb3IzZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlKTsKK2Jvb2wgVmFsaWRhdGVD
b2xvcjNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wg
VmFsaWRhdGVDb2xvcjNpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHJlZCwgR0xpbnQg
Z3JlZW4sIEdMaW50IGJsdWUpOworYm9vbCBWYWxpZGF0ZUNvbG9yM2l2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjNzKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUp
OworYm9vbCBWYWxpZGF0ZUNvbG9yM3N2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
c2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yM3ViKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRlIGJsdWUpOworYm9vbCBWYWxpZGF0
ZUNvbG9yM3Vidihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICp2KTsKK2Jv
b2wgVmFsaWRhdGVDb2xvcjN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVkLCBH
THVpbnQgZ3JlZW4sIEdMdWludCBibHVlKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1aXYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1aW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVzaG9ydCByZWQsIEdMdXNob3J0IGdyZWVuLCBH
THVzaG9ydCBibHVlKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjN1c3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0x1c2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yNGIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xieXRlIHJlZCwgR0xieXRlIGdyZWVuLCBHTGJ5dGUgYmx1ZSwgR0xi
eXRlIGFscGhhKTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjRidihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGJ5dGUgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yNGQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHJlZCwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUg
Ymx1ZSwKKyAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGFscGhhKTsKK2Jvb2wgVmFsaWRh
dGVDb2xvcjRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citi
b29sIFZhbGlkYXRlQ29sb3I0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9h
dCAqdik7Citib29sIFZhbGlkYXRlQ29sb3I0aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlLCBHTGludCBhbHBoYSk7Citib29sIFZhbGlk
YXRlQ29sb3I0aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOworYm9v
bCBWYWxpZGF0ZUNvbG9yNHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgIEdMc2hvcnQgcmVkLAorICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCBncmVlbiwK
KyAgICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
IEdMc2hvcnQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUNvbG9yNHN2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yNHVidihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVieXRlICp2KTsKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWlu
dCBibHVlLCBHTHVpbnQgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUNvbG9yNHVpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVpbnQgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yNHVzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgR0x1c2hvcnQgcmVk
LAogICAgICAgICAgICAgICAgICAgICAgIEdMdXNob3J0IGdyZWVuLAogICAgICAgICAgICAgICAg
ICAgICAgIEdMdXNob3J0IGJsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgR0x1c2hvcnQgYWxw
aGEpOwotYm9vbCBWYWxpZGF0ZUNvbG9yNHVzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHVz
aG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlQ29sb3JNYXRlcmlhbChDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwotYm9vbCBWYWxpZGF0ZUNvcHlQaXhlbHMoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb2xvcjR1c3YoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0x1c2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZUNvbG9yTWF0ZXJpYWwoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKK2Jvb2wgVmFsaWRh
dGVDb3B5UGl4ZWxzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKTsKLWJv
b2wgVmFsaWRhdGVEZWxldGVMaXN0cyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbGlzdCwgR0xz
aXplaSByYW5nZSk7Ci1ib29sIFZhbGlkYXRlRGVwdGhSYW5nZShDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSBuLCBHTGRvdWJsZSBmKTsKLWJvb2wgVmFsaWRhdGVEcmF3QnVmZmVyKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBidWYpOwotYm9vbCBWYWxpZGF0ZURyYXdQaXhlbHMoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEZWxldGVMaXN0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgbGlzdCwgR0xzaXplaSByYW5nZSk7Citib29sIFZhbGlkYXRlRGVwdGhSYW5nZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBuLCBHTGRvdWJsZSBmKTsKK2Jvb2wgVmFs
aWRhdGVEcmF3QnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBidWYpOworYm9v
bCBWYWxpZGF0ZURyYXdQaXhlbHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlRWRnZUZsYWcoQ29udGV4dCAqY29u
dGV4dCwgR0xib29sZWFuIGZsYWcpOwotYm9vbCBWYWxpZGF0ZUVkZ2VGbGFndihDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGJvb2xlYW4gKmZsYWcpOwotYm9vbCBWYWxpZGF0ZUVuZChDb250ZXh0
ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVFbmRMaXN0KENvbnRleHQgKmNvbnRleHQpOwotYm9v
bCBWYWxpZGF0ZUV2YWxDb29yZDFkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHUpOwotYm9v
bCBWYWxpZGF0ZUV2YWxDb29yZDFkdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAq
dSk7Ci1ib29sIFZhbGlkYXRlRXZhbENvb3JkMWYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB1
KTsKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQxZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xm
bG9hdCAqdSk7Ci1ib29sIFZhbGlkYXRlRXZhbENvb3JkMmQoQ29udGV4dCAqY29udGV4dCwgR0xk
b3VibGUgdSwgR0xkb3VibGUgdik7Ci1ib29sIFZhbGlkYXRlRXZhbENvb3JkMmR2KENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp1KTsKLWJvb2wgVmFsaWRhdGVFdmFsQ29vcmQyZihD
b250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHUsIEdMZmxvYXQgdik7Ci1ib29sIFZhbGlkYXRlRXZh
bENvb3JkMmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnUpOwotYm9vbCBWYWxp
ZGF0ZUV2YWxNZXNoMShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdM
aW50IGkyKTsKLWJvb2wgVmFsaWRhdGVFdmFsTWVzaDIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IG1vZGUsIEdMaW50IGkxLCBHTGludCBpMiwgR0xpbnQgajEsIEdMaW50IGoyKTsKLWJvb2wgVmFs
aWRhdGVFdmFsUG9pbnQxKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGkpOwotYm9vbCBWYWxpZGF0
ZUV2YWxQb2ludDIoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgaSwgR0xpbnQgaik7Ci1ib29sIFZh
bGlkYXRlRmVlZGJhY2tCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBzaXplLCBHTGVu
dW0gdHlwZSwgR0xmbG9hdCAqYnVmZmVyKTsKLWJvb2wgVmFsaWRhdGVGb2dpKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUZvZ2l2KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7Ci1ib29s
IFZhbGlkYXRlRnJ1c3R1bShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUVkZ2VGbGFn
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKTsKK2Jvb2wgVmFsaWRhdGVF
ZGdlRmxhZ3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xib29sZWFuICpmbGFnKTsK
K2Jvb2wgVmFsaWRhdGVFbmQoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRl
RW5kTGlzdChjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVFdmFsQ29vcmQx
ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB1KTsKK2Jvb2wgVmFsaWRhdGVFdmFs
Q29vcmQxZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnUpOworYm9v
bCBWYWxpZGF0ZUV2YWxDb29yZDFmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgdSk7
Citib29sIFZhbGlkYXRlRXZhbENvb3JkMWZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKnUpOworYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJkKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMZG91YmxlIHUsIEdMZG91YmxlIHYpOworYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJk
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdSk7Citib29sIFZhbGlk
YXRlRXZhbENvb3JkMmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB1LCBHTGZsb2F0
IHYpOworYm9vbCBWYWxpZGF0ZUV2YWxDb29yZDJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBj
b25zdCBHTGZsb2F0ICp1KTsKK2Jvb2wgVmFsaWRhdGVFdmFsTWVzaDEoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGkxLCBHTGludCBpMik7Citib29sIFZhbGlkYXRl
RXZhbE1lc2gyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBpMSwg
R0xpbnQgaTIsIEdMaW50IGoxLCBHTGludCBqMik7Citib29sIFZhbGlkYXRlRXZhbFBvaW50MShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBpKTsKK2Jvb2wgVmFsaWRhdGVFdmFsUG9pbnQy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGksIEdMaW50IGopOworYm9vbCBWYWxpZGF0
ZUZlZWRiYWNrQnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmJ1
ZmZlcik7Citib29sIFZhbGlkYXRlRm9naShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVGb2dpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUZydXN0dW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSByaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgIEdMZG91YmxlIGJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAgIEdM
ZG91YmxlIHRvcCwKICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHpOZWFyLAogICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgekZhcik7Ci1ib29sIFZhbGlkYXRlR2VuTGlzdHMoQ29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSByYW5nZSk7Ci1ib29sIFZhbGlkYXRlR2V0Q2xpcFBsYW5l
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbGFuZSwgR0xkb3VibGUgKmVxdWF0aW9uKTsKLWJv
b2wgVmFsaWRhdGVHZXREb3VibGV2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xk
b3VibGUgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUdldExpZ2h0aXYoQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldE1hcGR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwg
R0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZUdldE1hcGZ2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlR2V0
TWFwaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTGlu
dCAqdik7Ci1ib29sIFZhbGlkYXRlR2V0TWF0ZXJpYWxpdihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRQ
aXhlbE1hcGZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXAsIEdMZmxvYXQgKnZhbHVlcyk7
Ci1ib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXB1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1h
cCwgR0x1aW50ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUdldFBpeGVsTWFwdXN2KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBtYXAsIEdMdXNob3J0ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0ZUdl
dFBvbHlnb25TdGlwcGxlKENvbnRleHQgKmNvbnRleHQsIEdMdWJ5dGUgKm1hc2spOwotYm9vbCBW
YWxpZGF0ZUdldFRleEdlbmR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVt
IHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5mdihDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1z
KTsKLWJvb2wgVmFsaWRhdGVHZXRUZXhHZW5pdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29v
cmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4SW1h
Z2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZW5MaXN0cyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHNpemVpIHJhbmdlKTsKK2Jvb2wgVmFsaWRhdGVHZXRDbGlwUGxhbmUoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBsYW5lLCBjb25zdCBHTGRvdWJsZSAqZXF1YXRp
b24pOworYm9vbCBWYWxpZGF0ZUdldERvdWJsZXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGRvdWJsZSAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0TGlnaHRp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0TWFwZHYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBjb25zdCBHTGRvdWJsZSAqdik7
Citib29sIFZhbGlkYXRlR2V0TWFwZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHF1ZXJ5LCBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVHZXRN
YXBpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnks
IGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVHZXRNYXRlcmlhbGl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh
bXMpOworYm9vbCBWYWxpZGF0ZUdldFBpeGVsTWFwZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIG1hcCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVHZXRQaXhl
bE1hcHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBjb25zdCBHTHVpbnQg
KnZhbHVlcyk7Citib29sIFZhbGlkYXRlR2V0UGl4ZWxNYXB1c3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIG1hcCwgY29uc3QgR0x1c2hvcnQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRl
R2V0UG9seWdvblN0aXBwbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0x1Ynl0ZSAq
bWFzayk7Citib29sIFZhbGlkYXRlR2V0VGV4R2VuZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZG91YmxlICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRleEdlbmZ2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJh
bXMpOworYm9vbCBWYWxpZGF0ZUdldFRleEdlbml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFs
aWRhdGVHZXRUZXhJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVJbmRleE1hc2soQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IG1hc2spOwotYm9vbCBWYWxpZGF0ZUluZGV4ZChDb250ZXh0ICpj
b250ZXh0LCBHTGRvdWJsZSBjKTsKLWJvb2wgVmFsaWRhdGVJbmRleGR2KENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMZG91YmxlICpjKTsKLWJvb2wgVmFsaWRhdGVJbmRleGYoQ29udGV4dCAqY29u
dGV4dCwgR0xmbG9hdCBjKTsKLWJvb2wgVmFsaWRhdGVJbmRleGZ2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMZmxvYXQgKmMpOwotYm9vbCBWYWxpZGF0ZUluZGV4aShDb250ZXh0ICpjb250ZXh0
LCBHTGludCBjKTsKLWJvb2wgVmFsaWRhdGVJbmRleGl2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMaW50ICpjKTsKLWJvb2wgVmFsaWRhdGVJbmRleHMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9y
dCBjKTsKLWJvb2wgVmFsaWRhdGVJbmRleHN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hv
cnQgKmMpOwotYm9vbCBWYWxpZGF0ZUluaXROYW1lcyhDb250ZXh0ICpjb250ZXh0KTsKLWJvb2wg
VmFsaWRhdGVJc0xpc3QoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGxpc3QpOwotYm9vbCBWYWxp
ZGF0ZUxpZ2h0TW9kZWxpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwotYm9vbCBWYWxpZGF0ZUxpZ2h0TW9kZWxpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUxpZ2h0aShDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwotYm9v
bCBWYWxpZGF0ZUxpZ2h0aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGxpZ2h0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUxpbmVTdGlwcGxlKENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGZhY3RvciwgR0x1c2hvcnQgcGF0dGVybik7Ci1ib29sIFZh
bGlkYXRlTGlzdEJhc2UoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGJhc2UpOwotYm9vbCBWYWxp
ZGF0ZUxvYWRNYXRyaXhkKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKTsKLWJv
b2wgVmFsaWRhdGVMb2FkTmFtZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbmFtZSk7Ci1ib29s
IFZhbGlkYXRlTWFwMWQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZUluZGV4TWFzayhjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFzayk7Citib29sIFZhbGlkYXRlSW5kZXhkKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZG91YmxlIGMpOworYm9vbCBWYWxpZGF0ZUluZGV4ZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKmMpOworYm9vbCBWYWxpZGF0ZUluZGV4
Zihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGMpOworYm9vbCBWYWxpZGF0ZUluZGV4
ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqYyk7Citib29sIFZhbGlk
YXRlSW5kZXhpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IGMpOworYm9vbCBWYWxpZGF0
ZUluZGV4aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKmMpOworYm9vbCBW
YWxpZGF0ZUluZGV4cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IGMpOworYm9vbCBW
YWxpZGF0ZUluZGV4c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqYyk7
Citib29sIFZhbGlkYXRlSW5pdE5hbWVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBW
YWxpZGF0ZUlzTGlzdChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbGlzdCk7Citib29s
IFZhbGlkYXRlTGlnaHRNb2RlbGkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRlTGlnaHRNb2RlbGl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlk
YXRlTGlnaHRpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBsaWdodCwgR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRlTGlnaHRpdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7
Citib29sIFZhbGlkYXRlTGluZVN0aXBwbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQg
ZmFjdG9yLCBHTHVzaG9ydCBwYXR0ZXJuKTsKK2Jvb2wgVmFsaWRhdGVMaXN0QmFzZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYmFzZSk7Citib29sIFZhbGlkYXRlTG9hZE1hdHJpeGQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKm0pOworYm9vbCBWYWxpZGF0
ZUxvYWROYW1lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBuYW1lKTsKK2Jvb2wgVmFs
aWRhdGVNYXAxZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdTEsCiAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgdTIsCiAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RyaWRlLAog
ICAgICAgICAgICAgICAgICAgIEdMaW50IG9yZGVyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZG91YmxlICpwb2ludHMpOwotYm9vbCBWYWxpZGF0ZU1hcDFmKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlTWFwMWYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTEsCiAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAgICAgICBHTGludCBz
dHJpZGUsCiAgICAgICAgICAgICAgICAgICAgR0xpbnQgb3JkZXIsCiAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqcG9pbnRzKTsKLWJvb2wgVmFsaWRhdGVNYXAyZChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hcDJkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSB1MSwKICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB1MiwKQEAgLTE3NCw3ICsxOTIsNyBA
QCBib29sIFZhbGlkYXRlTWFwMmQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICBHTGludCB2c3RyaWRlLAogICAgICAgICAgICAgICAgICAgIEdMaW50IHZvcmRlciwKICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqcG9pbnRzKTsKLWJvb2wgVmFsaWRhdGVNYXAy
ZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1hcDJmKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHUxLAogICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdTIsCkBAIC0xODUs
MTMxICsyMDMsMTM0IEBAIGJvb2wgVmFsaWRhdGVNYXAyZihDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgIEdMaW50IHZzdHJpZGUsCiAgICAgICAgICAgICAgICAgICAgR0xpbnQg
dm9yZGVyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBvaW50cyk7Ci1ib29s
IFZhbGlkYXRlTWFwR3JpZDFkKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHVuLCBHTGRvdWJsZSB1
MSwgR0xkb3VibGUgdTIpOwotYm9vbCBWYWxpZGF0ZU1hcEdyaWQxZihDb250ZXh0ICpjb250ZXh0
LCBHTGludCB1biwgR0xmbG9hdCB1MSwgR0xmbG9hdCB1Mik7Ci1ib29sIFZhbGlkYXRlTWFwR3Jp
ZDJkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTWFwR3JpZDFkKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIpOworYm9vbCBW
YWxpZGF0ZU1hcEdyaWQxZihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCB1biwgR0xmbG9h
dCB1MSwgR0xmbG9hdCB1Mik7Citib29sIFZhbGlkYXRlTWFwR3JpZDJkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHVuLAogICAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSB1MSwKICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUg
dTIsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZuLAogICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjIpOwot
Ym9vbCBWYWxpZGF0ZU1hcEdyaWQyZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU1h
cEdyaWQyZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB1biwKICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB1MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB1MiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdm4s
CiAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjEsCiAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdjIpOwotYm9vbCBWYWxpZGF0ZU1hdGVyaWFsaShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRl
TWF0ZXJpYWxpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVNdWx0TWF0cml4ZChDb250ZXh0ICpj
b250ZXh0LCBjb25zdCBHTGRvdWJsZSAqbSk7Ci1ib29sIFZhbGlkYXRlTmV3TGlzdChDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgbGlzdCwgR0xlbnVtIG1vZGUpOwotYm9vbCBWYWxpZGF0ZU5vcm1h
bDNiKENvbnRleHQgKmNvbnRleHQsIEdMYnl0ZSBueCwgR0xieXRlIG55LCBHTGJ5dGUgbnopOwot
Ym9vbCBWYWxpZGF0ZU5vcm1hbDNidihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGJ5dGUgKnYp
OwotYm9vbCBWYWxpZGF0ZU5vcm1hbDNkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIG54LCBH
TGRvdWJsZSBueSwgR0xkb3VibGUgbnopOwotYm9vbCBWYWxpZGF0ZU5vcm1hbDNkdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlTm9ybWFsM2Z2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZU5vcm1hbDNp
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IG54LCBHTGludCBueSwgR0xpbnQgbnopOwotYm9vbCBW
YWxpZGF0ZU5vcm1hbDNpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29s
IFZhbGlkYXRlTm9ybWFsM3MoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBueCwgR0xzaG9ydCBu
eSwgR0xzaG9ydCBueik7Ci1ib29sIFZhbGlkYXRlTm9ybWFsM3N2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMc2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZU9ydGhvKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlTWF0ZXJpYWxpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBm
YWNlLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVNYXRlcmlhbGl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZU11bHRNYXRyaXhkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICptKTsKK2Jvb2wgVmFsaWRhdGVOZXdMaXN0KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBsaXN0LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlk
YXRlTm9ybWFsM2IoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xieXRlIG54LCBHTGJ5dGUgbnks
IEdMYnl0ZSBueik7Citib29sIFZhbGlkYXRlTm9ybWFsM2J2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIGNvbnN0IEdMYnl0ZSAqdik7Citib29sIFZhbGlkYXRlTm9ybWFsM2QoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xkb3VibGUgbngsIEdMZG91YmxlIG55LCBHTGRvdWJsZSBueik7Citib29s
IFZhbGlkYXRlTm9ybWFsM2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91Ymxl
ICp2KTsKK2Jvb2wgVmFsaWRhdGVOb3JtYWwzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29u
c3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlTm9ybWFsM2koY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbngsIEdMaW50IG55LCBHTGludCBueik7Citib29sIFZhbGlkYXRlTm9ybWFs
M2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRh
dGVOb3JtYWwzcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IG54LCBHTHNob3J0IG55
LCBHTHNob3J0IG56KTsKK2Jvb2wgVmFsaWRhdGVOb3JtYWwzc3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZhbGlkYXRlT3J0aG8oY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSBsZWZ0LAogICAgICAgICAg
ICAgICAgICAgIEdMZG91YmxlIHJpZ2h0LAogICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIGJv
dHRvbSwKICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgek5lYXIsCiAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgekZhcik7Ci1i
b29sIFZhbGlkYXRlUGFzc1Rocm91Z2goQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB0b2tlbik7
Ci1ib29sIFZhbGlkYXRlUGl4ZWxNYXBmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBH
THNpemVpIG1hcHNpemUsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlUGl4
ZWxNYXB1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBj
b25zdCBHTHVpbnQgKnZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlUGl4ZWxNYXB1c3YoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBjb25zdCBHTHVzaG9ydCAqdmFs
dWVzKTsKLWJvb2wgVmFsaWRhdGVQaXhlbFN0b3JlZihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVBpeGVsVHJhbnNmZXJmKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRl
UGl4ZWxUcmFuc2ZlcmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJh
bSk7Ci1ib29sIFZhbGlkYXRlUGl4ZWxab29tKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeGZh
Y3RvciwgR0xmbG9hdCB5ZmFjdG9yKTsKLWJvb2wgVmFsaWRhdGVQb2x5Z29uTW9kZShDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpOwotYm9vbCBWYWxpZGF0ZVBvbHln
b25TdGlwcGxlKENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKm1hc2spOwotYm9vbCBW
YWxpZGF0ZVBvcEF0dHJpYihDb250ZXh0ICpjb250ZXh0KTsKLWJvb2wgVmFsaWRhdGVQb3BOYW1l
KENvbnRleHQgKmNvbnRleHQpOwotYm9vbCBWYWxpZGF0ZVB1c2hBdHRyaWIoQ29udGV4dCAqY29u
dGV4dCwgR0xiaXRmaWVsZCBtYXNrKTsKLWJvb2wgVmFsaWRhdGVQdXNoTmFtZShDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgbmFtZSk7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zMmQoQ29udGV4dCAq
Y29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9z
MmR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVS
YXN0ZXJQb3MyZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Ci1ib29s
IFZhbGlkYXRlUmFzdGVyUG9zMmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYp
OwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdM
aW50IHkpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJpdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zMnMoQ29udGV4dCAqY29udGV4dCwg
R0xzaG9ydCB4LCBHTHNob3J0IHkpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJzdihDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZChD
b250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKLWJv
b2wgVmFsaWRhdGVSYXN0ZXJQb3MzZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUg
KnYpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQg
eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNmdihDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3Mz
aShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKLWJvb2wgVmFs
aWRhdGVSYXN0ZXJQb3MzaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9v
bCBWYWxpZGF0ZVJhc3RlclBvczNzKENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9y
dCB5LCBHTHNob3J0IHopOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNzdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZChDb250ZXh0
ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3
KTsKLWJvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xk
b3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRmKENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7Ci1ib29sIFZhbGlkYXRl
UmFzdGVyUG9zNGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBW
YWxpZGF0ZVJhc3RlclBvczRpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdM
aW50IHosIEdMaW50IHcpOwotYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRpdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlUmFzdGVyUG9zNHMoQ29udGV4dCAq
Y29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKLWJv
b2wgVmFsaWRhdGVSYXN0ZXJQb3M0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAq
dik7Ci1ib29sIFZhbGlkYXRlUmVjdGQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeDEsIEdM
ZG91YmxlIHkxLCBHTGRvdWJsZSB4MiwgR0xkb3VibGUgeTIpOwotYm9vbCBWYWxpZGF0ZVJlY3Rk
dihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdMZG91YmxlICp2
Mik7Ci1ib29sIFZhbGlkYXRlUmVjdGYoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4MSwgR0xm
bG9hdCB5MSwgR0xmbG9hdCB4MiwgR0xmbG9hdCB5Mik7Ci1ib29sIFZhbGlkYXRlUmVjdGZ2KENv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYxLCBjb25zdCBHTGZsb2F0ICp2Mik7Ci1i
b29sIFZhbGlkYXRlUmVjdGkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeDEsIEdMaW50IHkxLCBH
TGludCB4MiwgR0xpbnQgeTIpOwotYm9vbCBWYWxpZGF0ZVJlY3RpdihDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTGludCAqdjEsIGNvbnN0IEdMaW50ICp2Mik7Ci1ib29sIFZhbGlkYXRlUmVjdHMo
Q29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xz
aG9ydCB5Mik7Ci1ib29sIFZhbGlkYXRlUmVjdHN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
c2hvcnQgKnYxLCBjb25zdCBHTHNob3J0ICp2Mik7Ci1ib29sIFZhbGlkYXRlUmVuZGVyTW9kZShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Ci1ib29sIFZhbGlkYXRlUm90YXRlZChDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSBhbmdsZSwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xk
b3VibGUgeik7Ci1ib29sIFZhbGlkYXRlU2NhbGVkKENvbnRleHQgKmNvbnRleHQsIEdMZG91Ymxl
IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOwotYm9vbCBWYWxpZGF0ZVNlbGVjdEJ1ZmZlcihD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIHNpemUsIEdMdWludCAqYnVmZmVyKTsKLWJvb2wgVmFs
aWRhdGVUZXhDb29yZDFkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHMpOwotYm9vbCBWYWxp
ZGF0ZVRleENvb3JkMWR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJv
b2wgVmFsaWRhdGVUZXhDb29yZDFmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcyk7Ci1ib29s
IFZhbGlkYXRlVGV4Q29vcmQxZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7
Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQxaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBzKTsKLWJv
b2wgVmFsaWRhdGVUZXhDb29yZDFpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7
Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQxcyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMpOwot
Ym9vbCBWYWxpZGF0ZVRleENvb3JkMXN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQg
KnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMmQoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUg
cywgR0xkb3VibGUgdCk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQyZHYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMmYoQ29udGV4dCAq
Y29udGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkMmZ2
KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENv
b3JkMmkoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcywgR0xpbnQgdCk7Ci1ib29sIFZhbGlkYXRl
VGV4Q29vcmQyaXYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxp
ZGF0ZVRleENvb3JkMnMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpOwot
Ym9vbCBWYWxpZGF0ZVRleENvb3JkMnN2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQg
KnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkM2QoQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUg
cywgR0xkb3VibGUgdCwgR0xkb3VibGUgcik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQzZHYoQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVRleENvb3Jk
M2YoQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQgcik7Ci1i
b29sIFZhbGlkYXRlVGV4Q29vcmQzZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAq
dik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQzaShDb250ZXh0ICpjb250ZXh0LCBHTGludCBzLCBH
TGludCB0LCBHTGludCByKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDNpdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQzcyhDb250ZXh0ICpj
b250ZXh0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByKTsKLWJvb2wgVmFsaWRhdGVU
ZXhDb29yZDNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFs
aWRhdGVUZXhDb29yZDRkKENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQs
IEdMZG91YmxlIHIsIEdMZG91YmxlIHEpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkNGR2KENvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZDRm
KENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxv
YXQgcSk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0ZnYoQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
R0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmQ0aShDb250ZXh0ICpjb250ZXh0LCBH
TGludCBzLCBHTGludCB0LCBHTGludCByLCBHTGludCBxKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29y
ZDRpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlVGV4
Q29vcmQ0cyhDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCBy
LCBHTHNob3J0IHEpOwotYm9vbCBWYWxpZGF0ZVRleENvb3JkNHN2KENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMc2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZVRleEdlbmQoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZG91YmxlIHBhcmFtKTsKLWJvb2wgVmFs
aWRhdGVUZXhHZW5kdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xkb3VibGUgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4R2VuZihDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Ci1i
b29sIFZhbGlkYXRlVGV4R2VuZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlVGV4R2VuaShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
OwotYm9vbCBWYWxpZGF0ZVRleEdlbml2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjb29yZCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXhJbWFn
ZTFEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUGFzc1Rocm91Z2goY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xmbG9hdCB0b2tlbik7Citib29sIFZhbGlkYXRlUGl4ZWxNYXBmdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBHTHNpemVpIG1hcHNpemUsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRlUGl4ZWxNYXB1aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBtYXBzaXplLCBjb25zdCBHTHVpbnQgKnZh
bHVlcyk7Citib29sIFZhbGlkYXRlUGl4ZWxNYXB1c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWFwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbWFwc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVzaG9ydCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVQaXhlbFN0b3JlZihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworYm9vbCBWYWxpZGF0ZVBp
eGVsVHJhbnNmZXJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSk7Citib29sIFZhbGlkYXRlUGl4ZWxUcmFuc2ZlcmkoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRlUGl4ZWxab29t
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeGZhY3RvciwgR0xmbG9hdCB5ZmFjdG9y
KTsKK2Jvb2wgVmFsaWRhdGVQb2x5Z29uTW9kZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gZmFjZSwgR0xlbnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZVBvbHlnb25TdGlwcGxlKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMdWJ5dGUgKm1hc2spOworYm9vbCBWYWxpZGF0ZVBv
cEF0dHJpYihjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVQb3BOYW1lKGNv
bnN0IENvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVB1c2hBdHRyaWIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVQdXNoTmFtZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbmFtZSk7Citib29sIFZhbGlkYXRlUmFzdGVy
UG9zMmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Citi
b29sIFZhbGlkYXRlUmFzdGVyUG9zMmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
ZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MyZihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Citib29sIFZhbGlkYXRlUmFzdGVyUG9zMmZ2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVJh
c3RlclBvczJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkpOworYm9v
bCBWYWxpZGF0ZVJhc3RlclBvczJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGlu
dCAqdik7Citib29sIFZhbGlkYXRlUmFzdGVyUG9zMnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xzaG9ydCB4LCBHTHNob3J0IHkpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczJzdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQ
b3MzZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRv
dWJsZSB6KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzZHYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNmKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOworYm9vbCBW
YWxpZGF0ZVJhc3RlclBvczNmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0
ICp2KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
TGludCB4LCBHTGludCB5LCBHTGludCB6KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3MzaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVJhc3Rl
clBvczNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNo
b3J0IHopOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczNzdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJs
ZSB3KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQb3M0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRmKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7
Citib29sIFZhbGlkYXRlUmFzdGVyUG9zNGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVJhc3RlclBvczRpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOworYm9vbCBWYWxpZGF0
ZVJhc3RlclBvczRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citi
b29sIFZhbGlkYXRlUmFzdGVyUG9zNHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4
LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKK2Jvb2wgVmFsaWRhdGVSYXN0ZXJQ
b3M0c3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZh
bGlkYXRlUmVjdGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgeDEsIEdMZG91Ymxl
IHkxLCBHTGRvdWJsZSB4MiwgR0xkb3VibGUgeTIpOworYm9vbCBWYWxpZGF0ZVJlY3Rkdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdMZG91YmxlICp2
Mik7Citib29sIFZhbGlkYXRlUmVjdGYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4
MSwgR0xmbG9hdCB5MSwgR0xmbG9hdCB4MiwgR0xmbG9hdCB5Mik7Citib29sIFZhbGlkYXRlUmVj
dGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYxLCBjb25zdCBHTGZs
b2F0ICp2Mik7Citib29sIFZhbGlkYXRlUmVjdGkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgeDEsIEdMaW50IHkxLCBHTGludCB4MiwgR0xpbnQgeTIpOworYm9vbCBWYWxpZGF0ZVJlY3Rp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdjEsIGNvbnN0IEdMaW50ICp2
Mik7Citib29sIFZhbGlkYXRlUmVjdHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4
MSwgR0xzaG9ydCB5MSwgR0xzaG9ydCB4MiwgR0xzaG9ydCB5Mik7Citib29sIFZhbGlkYXRlUmVj
dHN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYxLCBjb25zdCBHTHNo
b3J0ICp2Mik7Citib29sIFZhbGlkYXRlUmVuZGVyTW9kZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlUm90YXRlZChjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTGRvdWJsZSBhbmdsZSwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7
Citib29sIFZhbGlkYXRlU2NhbGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHgs
IEdMZG91YmxlIHksIEdMZG91YmxlIHopOworYm9vbCBWYWxpZGF0ZVNlbGVjdEJ1ZmZlcihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIHNpemUsIGNvbnN0IEdMdWludCAqYnVmZmVyKTsK
K2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91Ymxl
IHMpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDFmKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZmxvYXQgcyk7Citib29sIFZhbGlkYXRlVGV4Q29vcmQxZnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQx
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGludCBzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29y
ZDFpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlk
YXRlVGV4Q29vcmQxcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMpOworYm9vbCBW
YWxpZGF0ZVRleENvb3JkMXN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQg
KnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkMmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xk
b3VibGUgcywgR0xkb3VibGUgdCk7Citib29sIFZhbGlkYXRlVGV4Q29vcmQyZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3Jk
MmYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQpOworYm9vbCBW
YWxpZGF0ZVRleENvb3JkMmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQg
KnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkMmkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgcywgR0xpbnQgdCk7Citib29sIFZhbGlkYXRlVGV4Q29vcmQyaXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkMnMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xzaG9ydCBzLCBHTHNob3J0IHQpOworYm9vbCBWYWxpZGF0ZVRl
eENvb3JkMnN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9v
bCBWYWxpZGF0ZVRleENvb3JkM2QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xkb3VibGUgcywg
R0xkb3VibGUgdCwgR0xkb3VibGUgcik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQzZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVRleENv
b3JkM2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxv
YXQgcik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQzZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQzaShjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByKTsKK2Jvb2wgVmFsaWRhdGVUZXhD
b29yZDNpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citib29sIFZh
bGlkYXRlVGV4Q29vcmQzcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHMsIEdMc2hv
cnQgdCwgR0xzaG9ydCByKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDNzdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRkKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIs
IEdMZG91YmxlIHEpOworYm9vbCBWYWxpZGF0ZVRleENvb3JkNGR2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZDRmKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgcywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxv
YXQgcSk7Citib29sIFZhbGlkYXRlVGV4Q29vcmQ0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVGV4Q29vcmQ0aShjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTGludCBzLCBHTGludCB0LCBHTGludCByLCBHTGludCBxKTsKK2Jvb2wgVmFs
aWRhdGVUZXhDb29yZDRpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7
Citib29sIFZhbGlkYXRlVGV4Q29vcmQ0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0
IHMsIEdMc2hvcnQgdCwgR0xzaG9ydCByLCBHTHNob3J0IHEpOworYm9vbCBWYWxpZGF0ZVRleENv
b3JkNHN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBW
YWxpZGF0ZVRleEdlbmQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVu
dW0gcG5hbWUsIEdMZG91YmxlIHBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVUZXhHZW5kdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xkb3Vi
bGUgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4R2VuZihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Citib29sIFZhbGlk
YXRlVGV4R2VuZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGNvb3JkLCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlVGV4R2VuaShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOworYm9vbCBWYWxpZGF0ZVRleEdlbml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRh
dGVUZXhJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKQEAgLTMxOCwz
MSArMzM5LDMxIEBAIGJvb2wgVmFsaWRhdGVUZXhJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRyYW5zbGF0ZWQoQ29udGV4dCAqY29udGV4dCwgR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeik7Ci1ib29sIFZhbGlkYXRlVmVydGV4MmQoQ29u
dGV4dCAqY29udGV4dCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4MmR2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXgyZihDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Ci1ib29s
IFZhbGlkYXRlVmVydGV4MmZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleDJpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHkp
OwotYm9vbCBWYWxpZGF0ZVZlcnRleDJpdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAq
dik7Ci1ib29sIFZhbGlkYXRlVmVydGV4MnMoQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBH
THNob3J0IHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDJzdihDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzZChDb250ZXh0ICpjb250ZXh0LCBH
TGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgz
ZHYoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZl
cnRleDNmKENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHop
OwotYm9vbCBWYWxpZGF0ZVZlcnRleDNmdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGZsb2F0
ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzaShDb250ZXh0ICpjb250ZXh0LCBHTGludCB4LCBH
TGludCB5LCBHTGludCB6KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXgzaXYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDNzKENvbnRleHQgKmNvbnRl
eHQsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eDNzdihDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFsaWRhdGVW
ZXJ0ZXg0ZChDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJs
ZSB6LCBHTGRvdWJsZSB3KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXg0ZHYoQ29udGV4dCAqY29udGV4
dCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDRmKENvbnRleHQgKmNv
bnRleHQsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7Ci1ib29s
IFZhbGlkYXRlVmVydGV4NGZ2KENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMZmxvYXQgKnYpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleDRpKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHosIEdMaW50IHcpOwotYm9vbCBWYWxpZGF0ZVZlcnRleDRpdihDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4NHMoQ29udGV4dCAqY29u
dGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9ydCB3KTsKLWJvb2wg
VmFsaWRhdGVWZXJ0ZXg0c3YoQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xzaG9ydCAqdik7Citi
b29sIFZhbGlkYXRlVHJhbnNsYXRlZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4
LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgyZChjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KTsKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXgyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9v
bCBWYWxpZGF0ZVZlcnRleDJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgeCwgR0xm
bG9hdCB5KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
Y29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4MmkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSk7Citib29sIFZhbGlkYXRlVmVydGV4Mml2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXgy
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSk7Citib29sIFZh
bGlkYXRlVmVydGV4MnN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMc2hvcnQgKnYp
OworYm9vbCBWYWxpZGF0ZVZlcnRleDNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZG91Ymxl
IHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHopOworYm9vbCBWYWxpZGF0ZVZlcnRleDNkdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlVmVy
dGV4M2YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeik7Citib29sIFZhbGlkYXRlVmVydGV4M2Z2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNv
bnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleDNpKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOworYm9vbCBWYWxpZGF0ZVZlcnRleDNp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRl
VmVydGV4M3MoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdM
c2hvcnQgeik7Citib29sIFZhbGlkYXRlVmVydGV4M3N2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleDRkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHosIEdMZG91YmxlIHcp
OworYm9vbCBWYWxpZGF0ZVZlcnRleDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBH
TGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlVmVydGV4NGYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXg0ZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xmbG9hdCAqdik7
Citib29sIFZhbGlkYXRlVmVydGV4NGkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7Citib29sIFZhbGlkYXRlVmVydGV4NGl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXg0
cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6
LCBHTHNob3J0IHcpOworYm9vbCBWYWxpZGF0ZVZlcnRleDRzdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBHTHNob3J0ICp2KTsKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgIC8v
IExJQkFOR0xFX1ZBTElEQVRJT05fR0wxX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wyLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wyLmNwcAppbmRleCAwYjM5
M2YxNjljYWUzMjI3MWY1MDQ2MDAxM2E3NDAyNTE0ZGRhZTM1Li42NDc3NTA4OTJhYWY3OWE0YWNh
MmYyNWEzN2ZkOWUzNTViMzAxOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIuY3BwCkBAIC0xMSw4NyArMTEsOTQgQEAK
IG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZHYoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMp
Citib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMZG91YmxlIHgpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWQoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWR2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3Vi
bGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIxcyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCkKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWIxcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgs
IEdMc2hvcnQgeCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjFzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQg
KnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMXN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJkKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIy
ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91
YmxlIHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIyZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xzaG9ydCB4LCBHTHNob3J0IHkpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMnMoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHNob3J0IHgsIEdMc2hvcnQgeSkK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJzdihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliMnN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0xzaG9ydCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNkKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIz
ZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNkdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliM3MoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KQorYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNzdihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliM3N2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdikK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROYnYo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpCitib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliNE5idihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMYnl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjROaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Tml2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnN2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWI0TnN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9y
dCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjROdWIoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnViKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIHksCkBAIC0xMDEsMjcgKzEwOCwyNyBA
QCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51YihDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51YnYoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KQorYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYjROdWJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0x1Ynl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYjROdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1
aW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROdWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51c3YoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWI0TnVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdXNo
b3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliNGJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xieXRlICp2KQor
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRidihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliNGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xk
b3VibGUgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5LApAQCAtMTMx
LDE3ICsxMzgsMTcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRkKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZHYo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjRpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMaW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNHMoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNob3J0IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9y
dCB5LApAQCAtMTUxLDIyICsxNTgsMjIgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRzKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWI0c3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0
ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRzdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWJ2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1Ynl0ZSAqdikK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjR1aXYo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCitib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMdWludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjR1c3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25z
dCBHTHVzaG9ydCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dXN2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMl9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMl9hdXRvZ2VuLmgKaW5kZXggN2JkMzU1OTE3MDBhNjM3
OWQ0ZGI0ZjhiMWVjYzE0ODhiODU0NDgyOC4uZmM3OTNmOWQ5ODIwOTlmYmYzM2Q1NmVkYTMxYjVi
ZjBlYWI1NWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25HTDJfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wyX2F1dG9nZW4uaApAQCAtMTcsNTAgKzE3LDU3IEBA
IG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYmR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
TGRvdWJsZSAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZChDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0
dHJpYjFkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxcyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIEdMc2hvcnQgeCk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMXN2KENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliMmQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4
LCBHTGRvdWJsZSB5KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZHYoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliMnMoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHNob3J0IHgsIEdM
c2hvcnQgeSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMnN2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliM2QoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZSB6KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZHYoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliM3MoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHNob3J0IHgs
IEdMc2hvcnQgeSwgR0xzaG9ydCB6KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzc3YoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0TmJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xieXRlICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0Tml2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjROc3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0
ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnViKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YjFkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgeCk7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xzaG9ydCB4KTsKK2Jvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWIxc3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkp
OworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xz
aG9ydCB5KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyc3YoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWIzZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJs
ZSB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUg
KnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNzKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeik7Citib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliM3N2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0xzaG9ydCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE5idihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdik7Citib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliNE5pdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnN2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51Yihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1Ynl0ZSB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1Ynl0ZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSB6LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0ZSB3KTsKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWI0TnVidihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5
dGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROdWl2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWI0TnVzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdXNob3J0ICp2
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0YnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTGJ5dGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRkKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51YnYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KTsKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0TnVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMdWludCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNE51c3YoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xieXRlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xkb3VibGUgeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB3
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGl2
KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYjRzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliNGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWI0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNo
b3J0IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaG9ydCB5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2hvcnQgeiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNob3J0IHcpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRzdihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjR1YnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRl
ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWl2KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0
dXN2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpOwor
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjR1
YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2
KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWI0dXN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hv
cnQgKnYpOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURB
VElPTl9HTDJfQVVUT0dFTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMuY3BwCmluZGV4IDA1YjI4YjE1MGUwNzQ3MWU5YjNl
MjkwM2E3N2NmMDIwZDgxMDAxMDguLjI5NWQ0MzNhMDQ3MjEyZDQxZjk4M2VmYmU0YTMxNDdmZjM0
NmE2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0wzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkdMMy5jcHAKQEAgLTEwLDEyICsxMCwxMiBAQAogbmFtZXNwYWNlIGdsCiB7
CiAKLWJvb2wgVmFsaWRhdGVCZWdpbkNvbmRpdGlvbmFsUmVuZGVyKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpZCwgR0xlbnVtIG1vZGUpCitib29sIFZhbGlkYXRlQmVnaW5Db25kaXRpb25hbFJl
bmRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBtb2RlKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb24o
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBjb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm5hbWUpCkBAIC0yMywxNyArMjMsMTcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRGcmFnRGF0
YUxvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDbGFtcENvbG9yKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBjbGFtcCkKK2Jvb2wgVmFsaWRhdGVDbGFtcENvbG9yKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMZW51bSBjbGFtcCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUVuZENvbmRpdGlvbmFsUmVuZGVyKENvbnRleHQgKmNvbnRleHQpCitib29s
IFZhbGlkYXRlRW5kQ29uZGl0aW9uYWxSZW5kZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTFE
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMUQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBh
dHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGV4dGFyZ2V0UGFja2VkLApAQCAtNDMsNyArNDMsNyBAQCBib29sIFZhbGlkYXRlRnJhbWVi
dWZmZXJUZXh0dXJlMUQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTNEKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0QoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkLApAQCAt
NTQsODIgKzU0LDgyIEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRChDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliSTFpKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xpbnQgeCkKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJMWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
LCBHTGludCB4KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTFpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2
KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxdWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBHTHVpbnQgeCkKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMXVpKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1aW50IHgpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMXVpdihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
MXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkky
aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHkpCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliSTJpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgR0xpbnQgeCwgR0xpbnQgeSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYkkyaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBj
b25zdCBHTGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMml2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMnVpKENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5KQorYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkkydWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQg
eCwgR0x1aW50IHkpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJMnVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWlu
dCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMnVpdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzaShDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopCitib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTNpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xpbnQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVZlcnRleEF0dHJpYkkzaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBH
TGludCAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM2l2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJM3VpKENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeikKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJM3VpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0x1
aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgY29uc3QgR0x1aW50ICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzdWl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRidihDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0ZSAqdikKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJNGJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xieXRlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliSTRzdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hv
cnQgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTRzdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVidihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMdWJ5dGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
STR1YnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRl
ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
STR1c3YoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdikK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMdXNob3J0ICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDMxLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0wzMS5jcHAKaW5kZXggNDMxZDljODg4MjA4ODIyMWUxMjczNTdkNzQzYmQ2NWI0NTY5OTY5
NS4uZmM5NWE5OWQ2Yjk4MDNlNzY5ZmEzZmI4YmM1MzUyNTBhOTliZDdiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMxLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzEu
Y3BwCkBAIC0xMSwxNyArMTEsMTcgQEAKIG5hbWVzcGFjZSBnbAogewogCi1ib29sIFZhbGlkYXRl
R2V0QWN0aXZlVW5pZm9ybU5hbWUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRB
Y3RpdmVVbmlmb3JtTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGNoYXIgKnVuaWZvcm1OYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKnVuaWZvcm1OYW1lKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlUHJpbWl0aXZlUmVzdGFydEluZGV4KENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCkKK2Jvb2wgVmFsaWRhdGVQcmltaXRpdmVSZXN0YXJ0SW5kZXgoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KQogewogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDMxX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0wzMV9hdXRvZ2VuLmgKaW5kZXggMmE0YTRhZjVlYzZhMTY4NWZjNWQ4ZmMw
NGYyNjYzMjI5NTlmYTljNi4uYTMyNTBiMWM4MzA5OTYxN2IxMzg5OTcwOWM2MWE5ZTQ4MGY5MWI5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDMxX2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMzFfYXV0b2dlbi5oCkBAIC0xNywxMyArMTcsMTMgQEAgbmFtZXNw
YWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9y
bU5hbWUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtTmFt
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKnVuaWZvcm1OYW1lKTsKLWJvb2wgVmFsaWRhdGVQcmltaXRpdmVSZXN0YXJ0SW5k
ZXgoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICp1bmlmb3JtTmFtZSk7Citib29sIFZhbGlkYXRl
UHJpbWl0aXZlUmVzdGFydEluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCk7CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9O
X0dMMzFfQVVUT0dFTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMi5jcHAKaW5kZXggMTBlMDM3ZDExNmVjZDc4MWFhZGYz
ZmRiYTM0ZmNmNWMzOGZlZTBmYi4uNDU4ZTIwYThiNGZmMGVjMDAzNTA3YzkxMWNmZDczOTBlZjg0
YzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25HTDMyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkdMMzIuY3BwCkBAIC0xMSw3ICsxMSw3IEBACiBuYW1lc3BhY2UgZ2wKIHsK
IAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
cmltaXRpdmVNb2RlIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGUsCkBAIC0yMiwxMiArMjIsMTIgQEAgYm9v
bCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleChDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUHJvdm9raW5nVmVydGV4KENvbnRl
eHQgKmNvbnRleHQsIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9kZVBhY2tlZCkKK2Jvb2wg
VmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvdm9raW5n
VmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4SW1hZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlVGV4SW1hZ2UyRE11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtMzgsNyAr
MzgsNyBAQCBib29sIFZhbGlkYXRlVGV4SW1hZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTNETXVsdGlz
YW1wbGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTNETXVsdGlzYW1w
bGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzJfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyX2F1dG9nZW4uaAppbmRleCA5Y2Q2NDA2
ZjI1MTUzMTU4MjI4NGI2NmU2NmYzM2E0MDkzMzMxYWYzLi43NjFiMWVlMzkyYWEzZjgwZTA0MWQw
MjdiNTU5ZjUxZGEyYmMyY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMzJfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMl9hdXRvZ2VuLmgKQEAgLTE3LDIy
ICsxNywyMiBAQCBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRh
dGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHNpemVpICpjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25zdCAqaW5kaWNlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkcmF3Y291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpiYXNldmVydGV4
KTsKLWJvb2wgVmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXgoQ29udGV4dCAqY29udGV4dCwgUHJvdm9r
aW5nVmVydGV4Q29udmVudGlvbiBtb2RlUGFja2VkKTsKLWJvb2wgVmFsaWRhdGVUZXhJbWFnZTJE
TXVsdGlzYW1wbGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm92b2tpbmdWZXJ0
ZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvdm9raW5nVmVydGV4Q29udmVudGlvbiBtb2Rl
UGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVUZXhJbWFnZTJETXVsdGlzYW1wbGUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlv
bnMpOwotYm9vbCBWYWxpZGF0ZVRleEltYWdlM0RNdWx0aXNhbXBsZShDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVRleEltYWdlM0RNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0wzMy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkdMMzMuY3BwCmluZGV4IDJjOWNkYzUwMGM4NmE3MjU5OTdlYzRlMDc0Y2YyZDFmNjVjMTczMDUu
LjQ4ZjU2ZTA2MmM4MzkzNzE1NDc3NGQzNTM1YjkzNWMwMzU2NzQ2NjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMy5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzLmNw
cApAQCAtMTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVCaW5k
RnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVC
aW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb2xv
ck51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LApAQCAtMjAsMTQ3ICsyMCwxNjUgQEAgYm9vbCBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxv
Y2F0aW9uSW5kZXhlZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlQ29sb3JQM3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVp
bnQgY29sb3IpCitib29sIFZhbGlkYXRlQ29sb3JQM3VpKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVDb2xvclAzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25z
dCBHTHVpbnQgKmNvbG9yKQorYm9vbCBWYWxpZGF0ZUNvbG9yUDN1aXYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29sb3IpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb2xvclA0dWkoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHR5cGUsIEdMdWludCBjb2xvcikKK2Jvb2wgVmFsaWRhdGVDb2xvclA0dWkoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcikKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbG9yUDR1aXYoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29sb3IpCitib29sIFZhbGlkYXRlQ29sb3JQNHVpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcikK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXgo
Q29udGV4dCAqY29udGV4dCwgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sIGNvbnN0IEdMY2hhciAq
bmFtZSkKK2Jvb2wgVmFsaWRhdGVHZXRGcmFnRGF0YUluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHYoQ29udGV4
dCAqY29udGV4dCwgUXVlcnlJRCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCiti
b29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SUQgaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dihDb250ZXh0ICpjb250ZXh0LCBRdWVy
eUlEIGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0
UXVlcnlPYmplY3R1aTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUXVlcnlJRCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludDY0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVNdWx0aVRleENvb3JkUDF1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwg
R0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAx
dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBH
THVpbnQgY29vcmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFAxdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0g
dHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAx
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpj
b29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkUDJ1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdM
dWludCBjb29yZHMpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAydWkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAydWl2
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x1
aW50ICpjb29yZHMpCitib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAydWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0
dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpjb29yZHMpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDN1aShDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCiti
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAzdWl2KENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiti
b29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1aW50ICpjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDR1aShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCitib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFA0dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdM
ZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0
dXJlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCitib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFA0dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICpjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVOb3JtYWxQM3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRz
KQorYm9vbCBWYWxpZGF0ZU5vcm1hbFAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHR5cGUsIEdMdWludCBjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVOb3JtYWxQM3VpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1
aW50ICpjb29yZHMpCitib29sIFZhbGlkYXRlTm9ybWFsUDN1aXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUXVlcnlDb3VudGVyKENvbnRleHQgKmNvbnRleHQsIFF1
ZXJ5SUQgaWQsIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQpCitib29sIFZhbGlkYXRlUXVlcnlDb3Vu
dGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWQsIFF1ZXJ5VHlwZSB0YXJnZXRQ
YWNrZWQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlD
b2xvclAzdWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcikKK2Jv
b2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHR5cGUsIEdMdWludCBjb2xvcikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVNlY29uZGFyeUNvbG9yUDN1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdWludCAqY29sb3IpCitib29sIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQM3Vpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcikK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkUDF1aShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKK2Jvb2wgVmFsaWRhdGVU
ZXhDb29yZFAxdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBj
b29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFAx
dWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3JkcykK
K2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAxdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVRleENvb3JkUDJ1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwg
R0x1aW50IGNvb3JkcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAydWkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFAydWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3JkcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAydWl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jk
cykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleENvb3JkUDN1aShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKK2Jvb2wgVmFsaWRh
dGVUZXhDb29yZFAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWlu
dCBjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29y
ZFAzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jk
cykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZVRleENvb3JkUDR1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlw
ZSwgR0x1aW50IGNvb3JkcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFA0dWkoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFA0dWl2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3JkcykKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFA0
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNv
b3JkcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YlAxdWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVpKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLApAQCAtMTY5
LDcgKzE4Nyw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVpKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVp
dihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAxdWl2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLApAQCAtMTc4
LDcgKzE5Niw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVpdihDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDJ1
aShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAydWkoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCkBAIC0xODcsNyAr
MjA1LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAydWkoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAydWl2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDJ1aXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCkBAIC0xOTYsNyAr
MjE0LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAydWl2KENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQM3VpKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDN1aShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKQEAgLTIwNSw3ICsyMjMs
NyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDN1aShDb250ZXh0ICpjb250ZXh0LAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDN1aXYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQM3Vpdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKQEAgLTIxNCw3ICsyMzIs
NyBAQCBib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDN1aXYoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlA0dWkoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLApAQCAtMjIzLDcgKzI0MSw3IEBA
IGJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlA0dWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLApAQCAtMjMyLDMyICsyNTAsMzIg
QEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlA0dWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhQMnVpKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUpCitib29sIFZhbGlkYXRlVmVydGV4UDJ1aShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IHZhbHVlKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4UDJ1aXYoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpCitib29sIFZhbGlkYXRlVmVy
dGV4UDJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWlu
dCAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhQ
M3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUpCitib29sIFZh
bGlkYXRlVmVydGV4UDN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1
aW50IHZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
UDN1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUp
Citib29sIFZhbGlkYXRlVmVydGV4UDN1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVWZXJ0ZXhQNHVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVp
bnQgdmFsdWUpCitib29sIFZhbGlkYXRlVmVydGV4UDR1aShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSwgR0x1aW50IHZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVmVydGV4UDR1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdWludCAqdmFsdWUpCitib29sIFZhbGlkYXRlVmVydGV4UDR1aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMzNfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMzX2F1dG9nZW4uaAppbmRleCBjMWMxMDA5ODlkYjk3
NGIwNzVmOGUyYmVhM2Y4MGQyMjZmZDljMTZhLi40NTdlNGYzYmI3NGVkMTkyMTU0YTNkOTQ5MGUz
NzYwMWVhOTI2MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMMzNfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzM19hdXRvZ2VuLmgKQEAgLTE3LDEwMCArMTcs
MTA1IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUJp
bmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGNvbG9yTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlQ29sb3JQM3VpKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29sb3IpOwotYm9vbCBWYWxpZGF0ZUNvbG9yUDN1
aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29sb3IpOwot
Ym9vbCBWYWxpZGF0ZUNvbG9yUDR1aShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1
aW50IGNvbG9yKTsKLWJvb2wgVmFsaWRhdGVDb2xvclA0dWl2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvbG9yKTsKLWJvb2wgVmFsaWRhdGVHZXRGcmFnRGF0
YUluZGV4KENvbnRleHQgKmNvbnRleHQsIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLCBj
b25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dihDb250
ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUNvbG9yUDN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dHlwZSwgR0x1aW50IGNvbG9yKTsKK2Jvb2wgVmFsaWRhdGVDb2xvclAzdWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvbG9yKTsKK2Jvb2wgVmFs
aWRhdGVDb2xvclA0dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWlu
dCBjb2xvcik7Citib29sIFZhbGlkYXRlQ29sb3JQNHVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcik7Citib29sIFZhbGlkYXRlR2V0RnJh
Z0RhdGFJbmRleChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5
T2JqZWN0aTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBRdWVyeUlEIGlkUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50NjQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVl
cnlJRCBpZFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMp
OwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMXVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFAxdWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRl
eENvb3JkUDF1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVt
IHR5cGUsIEdMdWludCBjb29yZHMpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQMXVpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqY29vcmRz
KTsKLWJvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDJ1aShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGV4dHVyZSwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpOwotYm9vbCBWYWxpZGF0ZU11
bHRpVGV4Q29vcmRQMnVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmRQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0ZXh0dXJlLCBHTGVudW0g
dHlwZSwgR0x1aW50IGNvb3Jkcyk7Citib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAydWl2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpjb29yZHMp
OwotYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQM3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgR0x1aW50IGNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFAzdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlUZXhD
b29yZFAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0
eXBlLCBHTHVpbnQgY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENvb3JkUDN1aXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7
Ci1ib29sIFZhbGlkYXRlTXVsdGlUZXhDb29yZFA0dWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKLWJvb2wgVmFsaWRhdGVNdWx0
aVRleENvb3JkUDR1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNdWx0aVRleENv
b3JkUDR1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSwgR0xlbnVtIHR5
cGUsIEdMdWludCBjb29yZHMpOworYm9vbCBWYWxpZGF0ZU11bHRpVGV4Q29vcmRQNHVpdihjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqY29vcmRzKTsK
LWJvb2wgVmFsaWRhdGVOb3JtYWxQM3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBH
THVpbnQgY29vcmRzKTsKLWJvb2wgVmFsaWRhdGVOb3JtYWxQM3VpdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpOwotYm9vbCBWYWxpZGF0ZVF1ZXJ5
Q291bnRlcihDb250ZXh0ICpjb250ZXh0LCBRdWVyeUlEIGlkUGFja2VkLCBRdWVyeVR5cGUgdGFy
Z2V0UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclAzdWkoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb2xvcik7Ci1ib29sIFZhbGlkYXRlU2Vjb25kYXJ5
Q29sb3JQM3VpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpj
b2xvcik7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQMXVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFAxdWl2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Ci1ib29sIFZh
bGlkYXRlVGV4Q29vcmRQMnVpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQg
Y29vcmRzKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29yZFAydWl2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQ
M3VpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKLWJvb2wg
VmFsaWRhdGVUZXhDb29yZFAzdWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25z
dCBHTHVpbnQgKmNvb3Jkcyk7Ci1ib29sIFZhbGlkYXRlVGV4Q29vcmRQNHVpKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKTsKLWJvb2wgVmFsaWRhdGVUZXhDb29y
ZFA0dWl2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jk
cyk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliUDF1aShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU5vcm1hbFAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IEdMdWludCBjb29yZHMpOworYm9vbCBWYWxpZGF0ZU5vcm1hbFAzdWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvb3Jkcyk7Citib29sIFZhbGlk
YXRlUXVlcnlDb3VudGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFF1ZXJ5SUQgaWRQYWNrZWQs
IFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUDN1
aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9yKTsKK2Jv
b2wgVmFsaWRhdGVTZWNvbmRhcnlDb2xvclAzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNvbG9yKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAx
dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpOwor
Ym9vbCBWYWxpZGF0ZVRleENvb3JkUDF1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAydWko
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpOworYm9v
bCBWYWxpZGF0ZVRleENvb3JkUDJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdWludCAqY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFAzdWkoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpOworYm9vbCBW
YWxpZGF0ZVRleENvb3JkUDN1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdWludCAqY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVUZXhDb29yZFA0dWkoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCBjb29yZHMpOworYm9vbCBWYWxp
ZGF0ZVRleENvb3JkUDR1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdWludCAqY29vcmRzKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVpKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHZhbHVlKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJQMXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAx
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAydWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJQMnVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMnVpdihDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAydWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAzdWko
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQM3VpKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHZhbHVlKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJQM3VpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYlAzdWl2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYlA0dWkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJQNHVpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHZhbHVl
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQNHVpdihDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYlA0dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVZlcnRleFAydWkoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCB2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4
UDJ1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUp
OwotYm9vbCBWYWxpZGF0ZVZlcnRleFAzdWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUs
IEdMdWludCB2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4UDN1aXYoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eFA0dWkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCB2YWx1ZSk7Ci1ib29s
IFZhbGlkYXRlVmVydGV4UDR1aXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0
IEdMdWludCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVZlcnRleFAydWkoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHR5cGUsIEdMdWludCB2YWx1ZSk7Citib29sIFZhbGlkYXRlVmVydGV4
UDJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAq
dmFsdWUpOworYm9vbCBWYWxpZGF0ZVZlcnRleFAzdWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHR5cGUsIEdMdWludCB2YWx1ZSk7Citib29sIFZhbGlkYXRlVmVydGV4UDN1aXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpOwor
Ym9vbCBWYWxpZGF0ZVZlcnRleFA0dWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5
cGUsIEdMdWludCB2YWx1ZSk7Citib29sIFZhbGlkYXRlVmVydGV4UDR1aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqdmFsdWUpOwogfSAgLy8gbmFt
ZXNwYWNlIGdsCiAKICNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9HTDMzX0FVVE9HRU5f
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uR0wzX2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0wzX2F1dG9nZW4uaAppbmRleCA5ZjAyMmUyNTBlMzlmZjdhMjFlMGE4MzVj
NzJmYzc4NjNiNjNhNGUxLi44ZTdjZWUzMTU3YWZkMTYyYzQ0MzliZDdhODU5MWMyYzJmNDZiYzk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMM19hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25HTDNfYXV0b2dlbi5oCkBAIC0xNyw0MiArMTcsNDIgQEAgbmFtZXNwYWNl
IGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRlQmVnaW5Db25kaXRpb25hbFJl
bmRlcihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBtb2RlKTsKLWJvb2wgVmFs
aWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUJlZ2luQ29uZGl0aW9uYWxSZW5kZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlk
LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb24oY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVDbGFtcENvbG9yKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBjbGFtcCk7Ci1ib29sIFZhbGlkYXRlRW5kQ29uZGl0
aW9uYWxSZW5kZXIoQ29udGV4dCAqY29udGV4dCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJU
ZXh0dXJlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGFtcENvbG9yKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBjbGFtcCk7Citib29sIFZh
bGlkYXRlRW5kQ29uZGl0aW9uYWxSZW5kZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29s
IFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKTsKLWJvb2wgVmFs
aWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUZyYW1lYnVmZmVyVGV4dHVyZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJMWkoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGludCB4KTsKLWJvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJMWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29u
c3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxdWkoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgeCk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
STF1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwot
Ym9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkyaShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIEdMaW50IHgsIEdMaW50IHkpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkyaXYoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliSTJ1aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWlu
dCB4LCBHTHVpbnQgeSk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTJ1aXYoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkkzaShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHopOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzaXYoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliSTN1aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBH
THVpbnQgeSwgR0x1aW50IHopOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzdWl2KENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKLWJvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJNGJ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xieXRlICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHN2KENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9ydCAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliSTR1YnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRl
ICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVzdihDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgsIGNvbnN0IEdMdXNob3J0ICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJMWkoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGludCB4KTsKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkxdWko
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTHVpbnQgeCk7Citib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliSTF1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTHVpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkyaShjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHkpOworYm9v
bCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTJ1aShj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSk7
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YkkzaShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50
IHksIEdMaW50IHopOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkzaXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRl
VmVydGV4QXR0cmliSTN1aShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdM
dWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHopOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkz
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2
KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNGJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xieXRlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJNHN2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xzaG9y
dCAqdik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSTR1YnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTHVieXRlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJNHVzdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMdXNob3J0ICp2KTsKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgIC8vIExJQkFOR0xF
X1ZBTElEQVRJT05fR0wzX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0LmNwcAppbmRleCBhNmI1ZmExMDZlYjM1
OGZkZWFkNWIzNmNlMWQwZjNmMDQ1MTYzMzA2Li5iY2ZiNjA2YTc5NDczYmYyNDkxZThjNjAwNDQy
YTBiMzg2YjdmZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMNC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQuY3BwCkBAIC0xMSwxNyArMTEsMTcgQEAKIG5hbWVzcGFj
ZSBnbAogewogCi1ib29sIFZhbGlkYXRlQmVnaW5RdWVyeUluZGV4ZWQoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBRdWVyeUlEIGlkKQorYm9vbCBWYWxpZGF0
ZUJlZ2luUXVlcnlJbmRleGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgUXVlcnlJRCBpZCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
bW9kZSwgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZCkKK2Jvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3Jt
RmVlZGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIFRyYW5zZm9ybUZl
ZWRiYWNrSUQgaWQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3
VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVE
cmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdHJlYW0p
CkBAIC0yOSw2MiArMjksNjIgQEAgYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVkYmFja1N0
cmVhbShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlRW5kUXVlcnlJbmRleGVkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCkKK2Jvb2wgVmFsaWRhdGVFbmRRdWVyeUluZGV4ZWQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZU5hbWUoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lTmFtZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpu
YW1lKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vi
cm91dGluZVVuaWZvcm1OYW1lKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QWN0
aXZlU3Vicm91dGluZVVuaWZvcm1OYW1lKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xjaGFyICpuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVN1YnJvdXRpbmVVbmlmb3JtaXYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lVW5pZm9y
bWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtU3RhZ2VpdihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1TdGFnZWl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRl
cnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZXMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5SW5kZXhlZGl2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0UXVlcnlJbmRleGVkaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0U3Vi
cm91dGluZUluZGV4KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0U3Vicm91dGlu
ZUluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpuYW1lKQpAQCAtOTIsNyArOTIsNyBAQCBib29sIFZhbGlkYXRlR2V0
U3Vicm91dGluZUluZGV4KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXRTdWJyb3V0aW5lVW5pZm9ybUxvY2F0aW9uKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlR2V0U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlvbihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKQEAgLTEwMCw1OSArMTAwLDcyIEBA
IGJvb2wgVmFsaWRhdGVHZXRTdWJyb3V0aW5lVW5pZm9ybUxvY2F0aW9uKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtU3Vicm91
dGluZXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1TdWJyb3V0
aW5ldWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRVbmlmb3JtZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVH
ZXRVbmlmb3JtZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSAqcGFy
YW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQYXRjaFBhcmFtZXRlcmZ2KENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQorYm9vbCBW
YWxpZGF0ZVBhdGNoUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVVbmlmb3JtMWQoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdM
ZG91YmxlIHgpCitib29sIFZhbGlkYXRlVW5pZm9ybTFkKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwgR0xkb3VibGUgeCkKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZHYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUg
KnZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTJk
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5
KQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMmR2KENvbnRleHQgKmNvbnRleHQsIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCitib29s
IFZhbGlkYXRlVW5pZm9ybTJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91
YmxlICp2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZv
cm0zZChDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xkb3Vi
bGUgeSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2QoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAorICAgICAgICAgICAgICAgICAg
ICAgICBHTGRvdWJsZSB5LAorICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB6KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybTNkdihDb250ZXh0ICpj
b250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZh
bHVlKQorYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVVbmlmb3JtNGQoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybTRkKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeCwKICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeiwKQEAgLTE2
MSwxMyArMTc0LDE2IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtNGQoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZHYoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSkKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtNGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDJkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs
ZSAqdmFsdWUpCkBAIC0xNzUsOCArMTkxLDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgy
ZHYoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZVVuaWZvcm1NYXRyaXgyeDNkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4
MngzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0xODQsOCArMjAwLDggQEAgYm9vbCBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgyeDNkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGR2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgyeDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTE5Myw4ICsyMDksOCBAQCBib29sIFZh
bGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2R2KENvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4M2R2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTIwMiw4ICsyMTgsOCBAQCBib29sIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDNkdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4MmR2KENvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXgzeDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKQEAgLTIxMSw4ICsyMjcsOCBAQCBi
b29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4MmR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZHYoQ29udGV4dCAq
Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
Citib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjIwLDgg
KzIzNiw4IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZHYoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZHYo
Q29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjI5LDggKzI0
NSw4IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NGR2KENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZHYoQ29u
dGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmR2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAt
MjM4LDggKzI1NCw4IEBAIGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZHYoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXg0eDNkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJh
bnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAq
dmFsdWUpCkBAIC0yNDcsNyArMjYzLDcgQEAgYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDNk
dihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
VW5pZm9ybVN1YnJvdXRpbmVzdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5p
Zm9ybVN1YnJvdXRpbmVzdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmluZGljZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDEuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQxLmNwcAppbmRleCA0
OTcyYzY5OWNiNTdiODJjYjFkMThmOWIzYTJiMGJhOGE4MDI2ZGY1Li45YzU1ZDIxYzI5ZGM5MTU4
YTYxYzNhZjhmZTBmNmYxMmJhZGU0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0MS5jcHAKQEAgLTExLDY5ICsxMSw3
NSBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVEZXB0aFJhbmdlQXJyYXl2KENv
bnRleHQgKmNvbnRleHQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3Vi
bGUgKnYpCitib29sIFZhbGlkYXRlRGVwdGhSYW5nZUFycmF5dihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpcnN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlRGVwdGhSYW5nZUluZGV4ZWQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4LCBHTGRvdWJsZSBuLCBHTGRvdWJsZSBmKQorYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VJ
bmRleGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgbiwg
R0xkb3VibGUgZikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldERv
dWJsZWlfdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdM
ZG91YmxlICpkYXRhKQorYm9vbCBWYWxpZGF0ZUdldERvdWJsZWlfdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICpkYXRh
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0RmxvYXRpX3YoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICpkYXRh
KQorYm9vbCBWYWxpZGF0ZUdldEZsb2F0aV92KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqZGF0YSkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkxkdihDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBhcmFtcykKK2Jv
b2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJMZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFkKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZG91YmxlIHYwKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTFkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTJkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xkb3VibGUgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2
MSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
MmR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZHYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNk
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGRvdWJsZSB2MikKQEAgLTgxLDE4ICs4NywxOCBAQCBib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm0zZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTRkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xkb3VibGUgdjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRv
dWJsZSB2MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYyLApAQCAt
MTAxLDE4ICsxMDcsMTggQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGQoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtNGR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZHYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFs
dWUpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDJkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4MmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0xMjAsOSAr
MTI2LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDJ4M2R2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZh
bHVlKQpAQCAtMTMwLDkgKzEzNiw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4M2R2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTQwLDkgKzE0Niw5IEBAIGJvb2wgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpCkBAIC0xNTAsOSArMTU2LDkgQEAgYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJkdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTYwLDkgKzE2Niw5
IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2KENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1h
dHJpeDN4NGR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVl
KQpAQCAtMTcwLDkgKzE3Niw5IEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4
NGR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDRkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFs
dWUpCkBAIC0xODAsOSArMTg2LDkgQEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
NGR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMTkwLDkgKzE5Niw5IEBAIGJvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybU1hdHJpeDR4MmR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2KENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKQpAQCAtMjAwLDEyICsyMDYsMTIg
QEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZHYoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVNjaXNzb3JBcnJheXYoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dikKK2Jvb2wgVmFsaWRhdGVTY2lzc29yQXJyYXl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTY2lzc29ySW5kZXhlZChDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVNjaXNzb3JJbmRleGVkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYm90dG9tLApAQCAtMjE1LDQyICsyMjEsNDYgQEAgYm9vbCBWYWxpZGF0ZVNjaXNzb3JJbmRl
eGVkKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVTY2lzc29ySW5kZXhlZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBH
TGludCAqdikKK2Jvb2wgVmFsaWRhdGVTY2lzc29ySW5kZXhlZHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwxZChDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIEdMZG91YmxlIHgpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDFkKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgeCkKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwxZHYoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJMMWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3Qg
R0xkb3VibGUgKnYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJMMmQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwyZChjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHkpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMmR2KENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliTDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliTDNkKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwg
R0xkb3VibGUgeSwgR0xkb3VibGUgeikKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMM2QoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGRvdWJsZSB6KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliTDNkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZG91YmxlICp2KQorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZHYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkw0ZChDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkw0ZChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHksCkBAIC0yNjAsMTIgKzI3MCwxMiBAQCBib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliTDRkKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJMNGR2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwg
Y29uc3QgR0xkb3VibGUgKnYpCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDRkdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTFBvaW50ZXIoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMUG9pbnRlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApAQCAtMjc1LDEy
ICsyODUsMTIgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkxQb2ludGVyKENvbnRleHQgKmNv
bnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVWaWV3cG9ydEFycmF5
dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpCitib29sIFZhbGlkYXRlVmlld3BvcnRBcnJheXYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmlld3BvcnRJbmRleGVkZihDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZpZXdwb3J0SW5kZXhlZGYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKQEAgLTI5MCw3ICszMDAsNyBAQCBib29sIFZhbGlk
YXRlVmlld3BvcnRJbmRleGVkZihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlVmlld3BvcnRJbmRleGVkZnYoQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQorYm9vbCBWYWxpZGF0ZVZpZXdwb3J0SW5kZXhl
ZGZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAq
dikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0MV9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDFfYXV0b2dlbi5oCmluZGV4
IGFhYzQyMGVhYjJkNmY0YWQ5MDJjNGUzNTQxMGJjMWFmNmM3N2Q2ZWIuLmM1Y2NmOWQwMWIzNmUw
OTU1YjY1OGY2NmRlZDJlY2ZiMDMxY2VjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0MV9hdXRvZ2VuLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQxX2F1dG9nZW4uaApA
QCAtMTcsMTQyICsxNywxNTUgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1i
b29sIFZhbGlkYXRlRGVwdGhSYW5nZUFycmF5dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgZmly
c3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVEZXB0
aFJhbmdlSW5kZXhlZChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIG4s
IEdMZG91YmxlIGYpOwotYm9vbCBWYWxpZGF0ZUdldERvdWJsZWlfdihDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlICpkYXRhKTsKLWJvb2wgVmFs
aWRhdGVHZXRGbG9hdGlfdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkxkdihD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xkb3VibGUgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZChDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VBcnJheXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaXJzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGRvdWJsZSAqdik7Citib29sIFZhbGlkYXRlRGVwdGhSYW5nZUluZGV4ZWQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSBuLCBHTGRvdWJs
ZSBmKTsKK2Jvb2wgVmFsaWRhdGVHZXREb3VibGVpX3YoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGRvdWJsZSAqZGF0YSk7Citib29sIFZhbGlkYXRlR2V0RmxvYXRpX3YoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICpk
YXRhKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJMZHYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtMWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MCk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFkdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZChDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYxKTsKLWJvb2wgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTJkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtMmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNkKENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgdjEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2Mik7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0zZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNk
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZChDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB2MCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHYxLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgdjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGRvdWJsZSB2Myk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZHYoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRkdihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7
Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJkdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDJ4M2R2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRk
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZh
bHVlKTsKLWJvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M2R2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtTWF0cml4M3gyZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybU1hdHJpeDN4MmR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
M3g0ZHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eDN4NGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs
ZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXg0eDJkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDNkdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4NHgzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlU2Npc3NvckFycmF5dihDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKLWJvb2wg
VmFsaWRhdGVTY2lzc29ySW5kZXhlZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNj
aXNzb3JBcnJheXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlU2Npc3NvckluZGV4ZWQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGVmdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBib3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlU2Npc3NvckluZGV4ZWR2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YkwxZChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgpOwotYm9vbCBW
YWxpZGF0ZVZlcnRleEF0dHJpYkwxZHYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBj
b25zdCBHTGRvdWJsZSAqdik7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDJkKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Ci1ib29sIFZh
bGlkYXRlVmVydGV4QXR0cmliTDJkdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMZG91YmxlICp2KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMM2QoQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6
KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMM2R2KENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkw0
ZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVNjaXNzb3JJbmRleGVkdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJMMWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
LCBHTGRvdWJsZSB4KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMWR2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYkwyZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgs
IEdMZG91YmxlIHgsIEdMZG91YmxlIHkpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwyZHYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdik7
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDNkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xkb3VibGUgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xkb3VibGUgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgeik7Citi
b29sIFZhbGlkYXRlVmVydGV4QXR0cmliTDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJM
NGQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGRvdWJsZSB5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGRvdWJsZSB6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGRvdWJsZSB3KTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMNGR2KENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpOwotYm9vbCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkxQb2ludGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliTDRkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91
YmxlICp2KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMUG9pbnRlcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwotYm9vbCBWYWxpZGF0ZVZpZXdwb3J0
QXJyYXl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdik7Ci1ib29sIFZhbGlkYXRlVmlld3BvcnRJbmRleGVkZihDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZVZpZXdwb3J0QXJyYXl2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Citib29s
IFZhbGlkYXRlVmlld3BvcnRJbmRleGVkZihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB3LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBoKTsKLWJvb2wgVmFsaWRhdGVWaWV3cG9y
dEluZGV4ZWRmdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQg
KnYpOworYm9vbCBWYWxpZGF0ZVZpZXdwb3J0SW5kZXhlZGZ2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CiB9ICAvLyBuYW1lc3BhY2UgZ2wK
IAogI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0dMNDFfQVVUT0dFTl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQy
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0
Mi5jcHAKaW5kZXggZjk5ODFjOTQ1MDIxMDNhZTdlODk0MjkwMzdjOTI1NTljZDM3NzIzMS4uZWUw
OWQ1ZDZhZTliYjYxOWM5YjM4MGNiODg1NzkyYzQyMTZlMTZmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQyLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDIuY3BwCkBA
IC0xMSw3ICsxMSw3IEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJh
eXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVE
cmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVNb2Rl
IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCkBAIC0yMSw3ICsyMSw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5z
dGFuY2VkQmFzZUluc3RhbmNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlSW5zdGFu
Y2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApAQCAtMzIsNyArMzIsNyBA
QCBib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZUluc3RhbmNlKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3RWxlbWVu
dHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERyYXdFbGVtZW50c1R5cGUgdHlwZSwKQEAgLTQ0LDcgKzQ0LDcgQEAgYm9vbCBWYWxpZGF0ZURy
YXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVk
YmFja0luc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zv
cm1GZWVkYmFja0luc3RhbmNlZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZWNvdW50KQpAQCAtNTIsNyArNTIsNyBAQCBib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZl
ZWRiYWNrSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW1JbnN0YW5jZWQoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW1JbnN0
YW5jZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
dHJlYW0sCkBAIC02MSwxNiArNjEsMTYgQEAgYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVk
YmFja1N0cmVhbUluc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0QWN0aXZlQXRvbWljQ291bnRlckJ1ZmZlcml2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0QWN0aXZlQXRvbWljQ291bnRlckJ1ZmZlcml2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmZmVySW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxRChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleFN0b3JhZ2UxRChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQyX2F1dG9nZW4uaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0Ml9hdXRvZ2VuLmgKaW5k
ZXggODQwYmE2M2I3NTc5NTlkNjZkY2U4MjViZDhmYThkNzUzYzBjZDFlYy4uYzRhMGI2MGYyZTM5
NWJiMjU0OTkzYTYzZDBiODdlZDEyNWNiZmY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQyX2F1dG9nZW4uaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDJfYXV0b2dlbi5o
CkBAIC0xNywyMCArMTcsMjAgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1i
b29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5zdGFuY2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiYXNlaW5zdGFu
Y2UpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VJbnN0YW5jZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VJbnN0
YW5jZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2Vjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGJhc2VpbnN0YW5jZSk7Ci1ib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
cmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQsCkBAIC0zOCwyMSArMzgsMjEgQEAgYm9vbCBWYWxp
ZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYmFzZWluc3RhbmNlKTsKLWJvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tJbnN0
YW5jZWQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJh
Y2tJbnN0YW5jZWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFu
Y2Vjb3VudCk7Ci1ib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrU3RyZWFtSW5zdGFu
Y2VkKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNr
U3RyZWFtSW5zdGFuY2VkKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFj
a0lEIGlkUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQpOwotYm9vbCBWYWxpZGF0ZUdl
dEFjdGl2ZUF0b21pY0NvdW50ZXJCdWZmZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZUF0b21pY0NvdW50ZXJCdWZmZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGJ1ZmZlckluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZVRleFN0b3Jh
Z2UxRChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdl
MUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0My5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDMu
Y3BwCmluZGV4IDgyOTgwYzI1MTZlN2ZkNzc1NmY1MjlkZmUyODgzN2FkYzYzNTBjNmQuLjQ5Njdj
MjU3ZjFjOTI2MTNmN2RjMDk3ZGI3YmQ4M2Q5ZWIxZGI4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0My5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQzLmNwcApAQCAt
MTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZl
ckRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlckRhdGEoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtMjEs
NyArMjEsNyBAQCBib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlclN1YkRhdGEo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlclN1YkRhdGEoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQs
CkBAIC0zMywxNyArMzMsMTcgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyU3ViRGF0YShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0SW50
ZXJuYWxmb3JtYXRpNjR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0SW50ZXJu
YWxmb3JtYXRpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50NjQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQ2NCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCkBAIC01MSwxMiAr
NTEsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUludmFs
aWRhdGVCdWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlcikKK2Jvb2wg
VmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZm
ZXJJRCBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnZh
bGlkYXRlQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUludmFs
aWRhdGVCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCkKQEAgLTY0LDEyICs2NCwxMiBA
QCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZUJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVUZXhJbWFnZShD
b250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpCitib29sIFZh
bGlkYXRlSW52YWxpZGF0ZVRleEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJ
RCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBW
YWxpZGF0ZUludmFsaWRhdGVUZXhTdWJJbWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxp
ZGF0ZUludmFsaWRhdGVUZXhTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wg
VmFsaWRhdGVJbnZhbGlkYXRlVGV4U3ViSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0luZGlyZWN0KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3QoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICppbmRpcmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGRyYXdjb3VudCwKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0Fy
cmF5c0luZGlyZWN0KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luZGlyZWN0KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlyZWN0
LApAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luZGly
ZWN0KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVTaGFkZXJTdG9yYWdlQmxvY2tCaW5kaW5nKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlU2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RvcmFn
ZUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RvcmFnZUJsb2NrQmluZGluZykKQEAgLTEwOSw3ICsxMDksNyBAQCBib29sIFZhbGlkYXRl
U2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVZpZXcoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVUZXh0dXJlVmlldyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG9yaWd0
ZXh0dXJlLApAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlVmlldyhDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
QXR0cmliTEZvcm1hdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJp
YkxGb3JtYXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0w0M19hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMNDNfYXV0b2dlbi5oCmluZGV4IDQ2OWFhMWNiYTQ5YzU1NzU3
ZmNiN2U3OWE1NDRjYzQ2NjgxOTNiOTguLjk5MTVmYmI3ODFlMzQ1MjBiM2E0MDA3MTNmN2UxMTE1
NTExODgyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0w0M19hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQzX2F1dG9nZW4uaApAQCAtMTcsMTMgKzE3LDEzIEBA
IG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUNsZWFyQnVm
ZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyRGF0YShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlclN1
YkRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlclN1YkRhdGEo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBv
ZmZzZXQsCkBAIC0zMSwyMyArMzEsMjMgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyU3ViRGF0
YShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1ib29s
IFZhbGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpNjR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZh
bGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0UHJvZ3Jh
bVJlc291cmNlTG9jYXRpb25JbmRleChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0
ZUdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotYm9vbCBWYWxpZGF0
ZUludmFsaWRhdGVCdWZmZXJEYXRhKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlclBh
Y2tlZCk7Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZUJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlQnVmZmVyRGF0YShjb25zdCBDb250ZXh0ICpj
b250ZXh0LCBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOworYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVC
dWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCk7Ci1ib29sIFZhbGlkYXRlSW52
YWxpZGF0ZVRleEltYWdlKENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
LCBHTGludCBsZXZlbCk7Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZVRleFN1YkltYWdlKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlSW52YWxpZGF0ZVRleEltYWdlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLCBHTGludCBsZXZlbCk7Citib29s
IFZhbGlkYXRlSW52YWxpZGF0ZVRleFN1YkltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTU2LDIyICs1
NiwyMiBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZVRleFN1YkltYWdlKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoKTsKLWJvb2wgVmFsaWRh
dGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZU11bHRpRHJhd0FycmF5c0luZGlyZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkcmF3Y291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUpOwotYm9vbCBWYWxpZGF0
ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVNdWx0aURyYXdFbGVtZW50c0luZGlyZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRyYXdjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKTsKLWJvb2wg
VmFsaWRhdGVTaGFkZXJTdG9yYWdlQmxvY2tCaW5kaW5nKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlU2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZyhjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgc3RvcmFnZUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgc3RvcmFnZUJsb2NrQmluZGluZyk7Ci1ib29sIFZhbGlkYXRlVGV4dHVy
ZVZpZXcoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlVmlldyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG9yaWd0ZXh0dXJlLApAQCAtODAsNyArODAsNyBA
QCBib29sIFZhbGlkYXRlVGV4dHVyZVZpZXcoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbnVtbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtaW5sYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtbGF5
ZXJzKTsKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMRm9ybWF0KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliTEZvcm1hdChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ0LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NC5jcHAKaW5kZXggMWIz
MDBjMjg5YzYxNmE1ZDllZTg1MjA4ODY4MWExMzQyMTY2YzRiZC4uNTgwZDgzOGNmNmQ2NzdmYmZi
OGQ4YzIwZDA0Y2JjNWM2MmI5N2Q2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDQuY3BwCkBAIC0xMSw3ICsxMSw3IEBA
CiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJzQmFzZShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJzQmFzZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC0yMCw3ICsyMCw3IEBAIGJvb2wgVmFsaWRh
dGVCaW5kQnVmZmVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJzUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVCaW5kQnVmZmVyc1JhbmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKQEAgLTMxLDcgKzMxLDcgQEAgYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJz
UmFuZ2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUJpbmRJbWFnZVRleHR1cmVzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQmlu
ZEltYWdlVGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnRleHR1cmVzKQpAQCAtMzksMTcgKzM5LDIzIEBAIGJvb2wgVmFsaWRhdGVCaW5kSW1h
Z2VUZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlQmluZFNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVycykKK2Jvb2wgVmFsaWRhdGVCaW5kU2Ft
cGxlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnNhbXBsZXJzKQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQmluZFRleHR1cmVzKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp0ZXh0dXJl
cykKK2Jvb2wgVmFsaWRhdGVCaW5kVGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnRleHR1cmVzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
QmluZFZlcnRleEJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kVmVy
dGV4QnVmZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1ZmZl
cklEICpidWZmZXJzLApAQCAtNTksNyArNjUsNyBAQCBib29sIFZhbGlkYXRlQmluZFZlcnRleEJ1
ZmZlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCdWZmZXJT
dG9yYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKQEAgLTY4
LDcgKzc0LDcgQEAgYm9vbCBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyVGV4SW1hZ2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhclRleEltYWdlKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTc4LDcgKzg0LDcgQEAgYm9vbCBWYWxpZGF0ZUNs
ZWFyVGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUNsZWFyVGV4U3ViSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVDbGVhclRleFN1YkltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0w0NF9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDRfYXV0b2dlbi5oCmluZGV4IDBjNzA1ZWY5NDc4YTg1
Mjg0ZGI5Njc0Yjk0MWUwNDJhNGFlMTY0MjkuLjQzZDc0ODg3OGZkNGY4OWM5YTI2YTA5ZTRjNmMz
NjZmOGU4OWNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0w0NF9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ0X2F1dG9nZW4uaApAQCAtMTcsNDIgKzE3LDQ4
IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQ29udGV4dDsKIAotYm9vbCBWYWxpZGF0ZUJpbmRC
dWZmZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJzQmFz
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkKTsKLWJvb2wg
VmFsaWRhdGVCaW5kQnVmZmVyc1JhbmdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
QmluZEJ1ZmZlcnNSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVm
ZmVyc1BhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50cHRy
ICpvZmZzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaXB0
ciAqc2l6ZXMpOwotYm9vbCBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmVzKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlQmluZEltYWdlVGV4dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzKTsKLWJvb2wgVmFsaWRhdGVCaW5k
U2FtcGxlcnMoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTHVpbnQgKnNhbXBsZXJzKTsKLWJvb2wgVmFsaWRhdGVCaW5kVGV4dHVyZXMoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnRl
eHR1cmVzKTsKLWJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QnVmZmVycyhDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUJpbmRTYW1wbGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqc2FtcGxlcnMpOworYm9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlcyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmlyc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOworYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhC
dWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVmZmVySUQg
KmJ1ZmZlcnNQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnRwdHIgKm9mZnNldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xz
aXplaSAqc3RyaWRlcyk7Ci1ib29sIFZhbGlkYXRlQnVmZmVyU3RvcmFnZShDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVs
ZCBmbGFncyk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJUZXhJbWFnZShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUNsZWFyVGV4SW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFs
aWRhdGVDbGVhclRleFN1YkltYWdlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xl
YXJUZXhTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHhvZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkdMNDUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25HTDQ1LmNwcAppbmRleCBmNjM5YzgxMjRmODA0OWY4ZDQ4MzUzYjA0
MDcwYzBmNzljZGMwMGJlLi5kNWI0M2QwMGM5NTA5YjkyMjcwMGNmYWQ5NWE0NWNmMzExMGViZjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uR0w0NS5jcHAKQEAgLTExLDEyICsxMSwxMiBAQAogbmFtZXNwYWNlIGdsCiB7CiAK
LWJvb2wgVmFsaWRhdGVCaW5kVGV4dHVyZVVuaXQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHVu
aXQsIFRleHR1cmVJRCB0ZXh0dXJlKQorYm9vbCBWYWxpZGF0ZUJpbmRUZXh0dXJlVW5pdChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgdW5pdCwgVGV4dHVyZUlEIHRleHR1cmUpCiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVCbGl0TmFtZWRGcmFtZWJ1ZmZlcihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUJsaXROYW1lZEZyYW1lYnVmZmVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHJlYWRGcmFtZWJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgZHJhd0ZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHNyY1gwLApAQCAtMzMsMTIgKzMzLDE0IEBAIGJvb2wgVmFsaWRhdGVCbGl0TmFtZWRG
cmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlQ2hlY2tOYW1lZEZyYW1lYnVmZmVyU3RhdHVzKENvbnRleHQgKmNvbnRleHQsIEZy
YW1lYnVmZmVySUQgZnJhbWVidWZmZXIsIEdMZW51bSB0YXJnZXQpCitib29sIFZhbGlkYXRlQ2hl
Y2tOYW1lZEZyYW1lYnVmZmVyU3RhdHVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhck5hbWVkQnVm
ZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJE
YXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LApAQCAtNDgsNyArNTAsNyBAQCBib29sIFZhbGlkYXRlQ2xlYXJOYW1l
ZEJ1ZmZlckRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlclN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwK
QEAgLTYwLDcgKzYyLDcgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJTdWJEYXRhKENv
bnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVh
ck5hbWVkRnJhbWVidWZmZXJmaShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFy
TmFtZWRGcmFtZWJ1ZmZlcmZpKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCkBAIC03MCw3ICs3
Miw3IEBAIGJvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJmaShDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1l
YnVmZmVyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVi
dWZmZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLApAQCAtNzksNyArODEsNyBAQCBib29s
IFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZnYoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRGcmFtZWJ1ZmZlcml2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKQEAgLTg4LDcgKzkwLDcgQEAgYm9vbCBWYWxpZGF0ZUNs
ZWFyTmFtZWRGcmFtZWJ1ZmZlcml2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJ1aXYoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJ1aXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVi
dWZmZXJJRCBmcmFtZWJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZHJhd2J1ZmZlciwKQEAgLTk3LDEyICs5OSwxMiBAQCBib29sIFZhbGlkYXRlQ2xlYXJO
YW1lZEZyYW1lYnVmZmVydWl2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVDbGlwQ29udHJvbChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gb3Jp
Z2luLCBHTGVudW0gZGVwdGgpCitib29sIFZhbGlkYXRlQ2xpcENvbnRyb2woY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG9yaWdpbiwgR0xlbnVtIGRlcHRoKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTFEKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTFEKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTExNCw3ICsxMTYsNyBAQCBib29sIFZhbGlkYXRl
Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMkQoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMkQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtMTI4LDcgKzEzMCw3IEBAIGJvb2wgVmFsaWRh
dGVDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UzRChD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2Uz
RChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0xNDQsNyArMTQ2LDcgQEAgYm9vbCBWYWxp
ZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ29weU5hbWVkQnVmZmVyU3ViRGF0YShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlOYW1lZEJ1ZmZlclN1YkRhdGEoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCByZWFkQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHdyaXRlQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgcmVhZE9mZnNldCwKQEAgLTE1NCw3ICsxNTYsNyBAQCBib29sIFZhbGlkYXRlQ29weU5h
bWVkQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTE2NSw3ICsxNjcs
NyBAQCBib29sIFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRleHQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdl
MkQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlMkQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LApAQCAtMTc4LDcgKzE4MCw3IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZVN1Yklt
YWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUNvcHlUZXh0dXJlU3ViSW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0xOTIsNjIgKzE5NCw2NyBAQCBib29s
IFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDcmVhdGVCdWZmZXJzKENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgQnVmZmVySUQgKmJ1ZmZlcnMpCitib29sIFZhbGlkYXRlQ3JlYXRlQnVm
ZmVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEJ1ZmZlcklEICpi
dWZmZXJzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlRnJh
bWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZl
cnMpCitib29sIFZhbGlkYXRlQ3JlYXRlRnJhbWVidWZmZXJzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFtUGlwZWxpbmVzKENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpCitib29sIFZhbGlkYXRlQ3Jl
YXRlUHJvZ3JhbVBpcGVsaW5lcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNv
bnN0IEdMdWludCAqcGlwZWxpbmVzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlQ3JlYXRlUXVlcmllcyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIG4sIEdMdWludCAqaWRzKQorYm9vbCBWYWxpZGF0ZUNyZWF0ZVF1ZXJpZXMoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlk
cykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNyZWF0ZVJlbmRlcmJ1
ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBSZW5kZXJidWZmZXJJRCAqcmVuZGVy
YnVmZmVycykKK2Jvb2wgVmFsaWRhdGVDcmVhdGVSZW5kZXJidWZmZXJzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVu
ZGVyYnVmZmVycykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUNyZWF0
ZVNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1aW50ICpzYW1wbGVycykK
K2Jvb2wgVmFsaWRhdGVDcmVhdGVTYW1wbGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqc2FtcGxlcnMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDcmVhdGVUZXh0dXJlcyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpCitib29sIFZhbGlkYXRlQ3JlYXRlVGV4
dHVyZXMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlQ3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2tzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCitib29sIFZhbGlk
YXRlQ3JlYXRlVHJhbnNmb3JtRmVlZGJhY2tzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVDcmVhdGVWZXJ0ZXhBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBW
ZXJ0ZXhBcnJheUlEICphcnJheXMpCitib29sIFZhbGlkYXRlQ3JlYXRlVmVydGV4QXJyYXlzKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJy
YXlzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRGlzYWJsZVZlcnRl
eEFycmF5QXR0cmliKENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgdmFvYmosIEdMdWlu
dCBpbmRleCkKK2Jvb2wgVmFsaWRhdGVEaXNhYmxlVmVydGV4QXJyYXlBdHRyaWIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCB2YW9iaiwgR0x1aW50IGluZGV4KQogewogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRW5hYmxlVmVydGV4QXJyYXlBdHRyaWIo
Q29udGV4dCAqY29udGV4dCwgVmVydGV4QXJyYXlJRCB2YW9iaiwgR0x1aW50IGluZGV4KQorYm9v
bCBWYWxpZGF0ZUVuYWJsZVZlcnRleEFycmF5QXR0cmliKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFZlcnRleEFycmF5SUQgdmFvYmosIEdMdWludCBpbmRleCkKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkTmFtZWRCdWZmZXJSYW5nZShDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkTmFtZWRCdWZmZXJSYW5nZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBsZW5ndGgpCkBAIC0yNTUsMjEgKzI2MiwyMSBAQCBib29sIFZhbGlk
YXRlRmx1c2hNYXBwZWROYW1lZEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZW5lcmF0ZVRleHR1cmVNaXBtYXAoQ29udGV4
dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmUpCitib29sIFZhbGlkYXRlR2VuZXJhdGVUZXh0
dXJlTWlwbWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFRleHR1cmVJRCB0ZXh0dXJlKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVJ
bWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldENvbXByZXNzZWRUZXh0dXJl
SW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHhvZmZzZXQsCkBAIC0yNzksNjcgKzI4Niw3MCBAQCBib29sIFZhbGlkYXRlR2V0Q29t
cHJlc3NlZFRleHR1cmVTdWJJbWFnZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TmFtZWRCdWZmZXJQYXJhbWV0
ZXJpNjR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0TmFtZWRCdWZmZXJQYXJh
bWV0ZXJpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50NjQgKnBhcmFtcykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaXYoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBhcmFtZXRlcml2KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldE5hbWVkQnVmZmVyUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVm
ZmVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0TmFtZWRC
dWZmZXJQb2ludGVydihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqY29uc3QgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlR2V0TmFtZWRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqcGFyYW1zKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0TmFt
ZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0TmFtZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQg
ZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgKnBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVHZXROYW1lZFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlR2V0TmFtZWRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGk2NHYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGk2NHYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKQEAgLTM0OCw3ICszNTgsNyBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZm
ZXJPYmplY3RpNjR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGl2KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3Rpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLApAQCAtMzU3LDcgKzM2Nyw3IEBA
IGJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGl2KENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVp
NjR2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3R1
aTY0dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLApAQCAtMzY2LDcgKzM3Niw3IEBAIGJvb2wgVmFsaWRhdGVHZXRR
dWVyeUJ1ZmZlck9iamVjdHVpNjR2KENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVpdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWl2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCkBAIC0z
NzUsNjUgKzM4NSw2OCBAQCBib29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3R1aXYoQ29u
dGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRl
eHR1cmVJbWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVJbWFn
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKnBpeGVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4
ZWxzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZUxl
dmVsUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJl
TGV2ZWxQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyaXYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlTGV2ZWxQYXJhbWV0ZXJp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVQYXJhbWV0ZXJJdWl2KENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlckl1aXYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRU
ZXh0dXJlUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0
dXJlUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwgVGV4dHVy
ZUlEIHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK2Jvb2wgVmFsaWRhdGVH
ZXRUZXh0dXJlUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVTdWJJbWFnZShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZUdldFRleHR1cmVTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC00NDUsMTc3ICs0NTgsMjA0IEBAIGJv
b2wgVmFsaWRhdGVHZXRUZXh0dXJlU3ViSW1hZ2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zv
cm1GZWVkYmFja2k2NF92KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VHJhbnNm
b3JtRmVlZGJhY2tpNjRfdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHhmYiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQ2NCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja2lfdihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNraV92KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHhmYiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja2l2KENvbnRleHQg
KmNvbnRleHQsIEdMdWludCB4ZmIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtKQorYm9vbCBW
YWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNraXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB4ZmIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBcnJheUluZGV4ZWQ2NGl2KENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlJbmRleGVkNjRpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVydGV4QXJyYXlJRCB2YW9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50NjQgKnBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQ2NCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRh
dGVHZXRWZXJ0ZXhBcnJheUluZGV4ZWRpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0
ZUdldFZlcnRleEFycmF5SW5kZXhlZGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9iaiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRWZXJ0ZXhBcnJheWl2KENvbnRleHQgKmNvbnRleHQsIFZl
cnRleEFycmF5SUQgdmFvYmosIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtKQorYm9vbCBWYWxp
ZGF0ZUdldFZlcnRleEFycmF5aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmosCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqcGFyYW0pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVHZXRuQ29sb3JUYWJsZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldG5D
b2xvclRhYmxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICp0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICp0YWJsZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdl
dG5Db21wcmVzc2VkVGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRu
Q29tcHJlc3NlZFRleEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlR2V0bkNvbnZvbHV0aW9uRmlsdGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0bkNvbnZvbHV0aW9uRmlsdGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmltYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICppbWFnZSkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5I
aXN0b2dyYW0oQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuSGlzdG9ncmFtKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHJlc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWVzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdmFsdWVzKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0bk1hcGR2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGRvdWJsZSAqdikK
K2Jvb2wgVmFsaWRhdGVHZXRuTWFwZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2KQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlR2V0bk1hcGZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICp2KQorYm9vbCBW
YWxpZGF0ZUdldG5NYXBmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcXVl
cnksCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZUdldG5NYXBpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcXVlcnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnYpCitib29sIFZhbGlkYXRlR2V0
bk1hcGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBxdWVyeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqdikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0
ZUdldG5NaW5tYXgoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRuTWlubWF4KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHJlc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsdWVzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqdmFsdWVzKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkYXRlR2V0blBpeGVsTWFwZnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXpl
aSBidWZTaXplLCBHTGZsb2F0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlR2V0blBpeGVsTWFwZnYo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuUGl4ZWxNYXB1aXYoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTHVpbnQgKnZhbHVlcykKK2Jv
b2wgVmFsaWRhdGVHZXRuUGl4ZWxNYXB1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKnZhbHVlcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUdldG5QaXhlbE1hcHVzdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBHTHNpemVp
IGJ1ZlNpemUsIEdMdXNob3J0ICp2YWx1ZXMpCitib29sIFZhbGlkYXRlR2V0blBpeGVsTWFwdXN2
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1c2hvcnQgKnZhbHVlcykKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5Qb2x5Z29uU3RpcHBsZShD
b250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGJ1ZlNpemUsIEdMdWJ5dGUgKnBhdHRlcm4pCitib29s
IFZhbGlkYXRlR2V0blBvbHlnb25TdGlwcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgYnVmU2l6ZSwgY29uc3QgR0x1Ynl0ZSAqcGF0dGVybikKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUdldG5TZXBhcmFibGVGaWx0ZXIoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVHZXRuU2VwYXJhYmxlRmlsdGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSByb3dCdWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqcm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb2x1
bW5CdWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29sdW1u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc3BhbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvbHVtbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnNwYW4pCiB7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwKK2Jv
b2wgVmFsaWRhdGVHZXRuVGV4SW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKnBpeGVscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxz
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlR2V0blVuaWZvcm1kdihD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZHYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGRvdWJsZSAqcGFyYW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xkb3VibGUgKnBhcmFtcykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZUludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRGF0YShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFt
ZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQpAQCAtNjIz
LDcgKzY2Myw3IEBAIGJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRhdGEo
Q29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUlu
dmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
cmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRz
LApAQCAtNjM1LDEyICs2NzUsMTIgQEAgYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVOYW1lZEZyYW1l
YnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlTWFwTmFtZWRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgQnVmZmVySUQgYnVm
ZmVyLCBHTGVudW0gYWNjZXNzKQorYm9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVmZmVyKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlciwgR0xlbnVtIGFjY2VzcykKIHsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVmZmVyUmFuZ2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVNYXBOYW1lZEJ1ZmZlclJhbmdlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBi
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwKQEAg
LTY0OSw3ICs2ODksNyBAQCBib29sIFZhbGlkYXRlTWFwTmFtZWRCdWZmZXJSYW5nZShDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTmFtZWRCdWZm
ZXJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJEYXRhKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLApAQCAtNjU4
LDcgKzY5OCw3IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEJ1ZmZlckRhdGEoQ29udGV4dCAqY29udGV4
dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVyU3RvcmFn
ZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVyU3RvcmFnZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm
ZXJJRCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwK
QEAgLTY2Nyw3ICs3MDcsNyBAQCBib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJTdG9yYWdlKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOYW1lZEJ1
ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEJ1ZmZlclN1
YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVySUQgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlw
dHIgc2l6ZSwKQEAgLTY3NiwxMiArNzE2LDE0IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEJ1ZmZlclN1
YkRhdGEoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEZyYW1lYnVm
ZmVySUQgZnJhbWVidWZmZXIsIEdMZW51bSBidWYpCitib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1
ZmZlckRyYXdCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWYpCiB7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcnMo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZl
cnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmJ1ZnMpCkBAIC02ODksNyArNzMxLDcg
QEAgYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVycyhDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZl
clBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhcmFtKQpAQCAtNjk3LDEyICs3
MzksMTQgQEAgYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1l
YnVmZmVyUmVhZEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVm
ZmVyLCBHTGVudW0gc3JjKQorYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJSZWFkQnVmZmVy
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjKQogewogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCkBAIC03MTEsNyAr
NzU1LDcgQEAgYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU5hbWVkRnJh
bWVidWZmZXJUZXh0dXJlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRGcmFt
ZWJ1ZmZlclRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLApAQCAtNzIwLDcg
Kzc2NCw3IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyVGV4dHVyZShDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1
ZmZlclRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkRnJh
bWVidWZmZXJUZXh0dXJlTGF5ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNo
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlLApAQCAtNzMwLDcgKzc3NCw3IEBAIGJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2UoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2UoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyYnVmZmVy
SUQgcmVuZGVyYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC03MzksNyArNzgzLDcgQEAgYm9vbCBWYWxpZGF0ZU5hbWVk
UmVuZGVyYnVmZmVyU3RvcmFnZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlTmFtZWRSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoQ29u
dGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNzQ5LDEyICs3OTMsMTIgQEAgYm9vbCBWYWxpZGF0
ZU5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXh0dXJlQmFycmllcihDb250ZXh0
ICpjb250ZXh0KQorYm9vbCBWYWxpZGF0ZVRleHR1cmVCYXJyaWVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXh0dXJlQnVm
ZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZUJ1ZmZlcihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIpCkBAIC03NjIsNyAr
ODA2LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXJSYW5nZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXJSYW5nZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXIs
CkBAIC03NzIsNyArODE2LDcgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXJSYW5nZShDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVy
ZVBhcmFtZXRlcklpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJh
bWV0ZXJJaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xpbnQgKnBhcmFtcykKQEAgLTc4MCw3ICs4MjQsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVy
ZVBhcmFtZXRlcklpdihDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlckl1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVySXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKQEAgLTc4OCwxMiArODMy
LDE1IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmYo
Q29udGV4dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSkKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyZihjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmZ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtKQpAQCAtODAxLDEyICs4NDgs
MTIgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmkoQ29u
dGV4dCAqY29udGV4dCwgVGV4dHVyZUlEIHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pCitib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmkoY29uc3QgQ29udGV4dCAqY29udGV4
dCwgVGV4dHVyZUlEIHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyaXYoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKQpAQCAtODE0
LDcgKzg2MSw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyaXYoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdl
MUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTFEKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApA
QCAtODIzLDcgKzg3MCw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTFEKENvbnRleHQg
KmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXh0dXJlU3Rv
cmFnZTJEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UyRChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxl
dmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKQEAgLTgzMyw3ICs4ODAsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UyRChDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVy
ZVN0b3JhZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4
dHVyZVN0b3JhZ2UyRE11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKQEAgLTg0NCw3ICs4OTEsNyBAQCBib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UyRE11
bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVUZXh0dXJlU3RvcmFnZTNEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4dHVyZVN0b3JhZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTg1NSw3ICs5MDIsNyBAQCBib29sIFZhbGlkYXRlVGV4
dHVyZVN0b3JhZ2UzRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTg2Nyw3ICs5MTQsNyBAQCBib29sIFZhbGlkYXRl
VGV4dHVyZVN0b3JhZ2UzRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UxRChDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTFEKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTg3OSw3ICs5MjYsNyBAQCBib29s
IFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtODkzLDcgKzk0MCw3IEBAIGJvb2wg
VmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC05MDksNyArOTU2LDcgQEAgYm9vbCBW
YWxpZGF0ZVRleHR1cmVTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJhc2UoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlckJhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHhmYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJJRCBidWZmZXIpCkBAIC05MTcsNyArOTY0LDcgQEAgYm9vbCBWYWxpZGF0ZVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJSYW5nZShDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyUmFuZ2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCB4ZmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJJRCBidWZmZXIsCkBAIC05MjcsMTIgKzk3NCwxMiBAQCBib29sIFZhbGlkYXRl
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVW5tYXBOYW1lZEJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LCBCdWZmZXJJRCBidWZmZXIpCitib29sIFZhbGlkYXRlVW5tYXBOYW1lZEJ1ZmZlcihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZmZXIpCiB7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJpYkJpbmRpbmcoQ29udGV4dCAqY29u
dGV4dCwKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJpYkJpbmRpbmcoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4
QXJyYXlJRCB2YW9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGF0dHJpYmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYmluZGluZ2luZGV4KQpAQCAtOTQwLDcgKzk4Nyw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0
ZXhBcnJheUF0dHJpYkJpbmRpbmcoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliRm9ybWF0KENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRyaWJGb3JtYXQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJh
eUlEIHZhb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBh
dHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
aXplLApAQCAtOTUxLDcgKzk5OCw3IEBAIGJvb2wgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJpYkZv
cm1hdChDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlk
YXRlVmVydGV4QXJyYXlBdHRyaWJJRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlVmVydGV4QXJyYXlBdHRyaWJJRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKQEAgLTk2
MSw3ICsxMDA4LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliSUZvcm1hdChDb250
ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4
QXJyYXlBdHRyaWJMRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4
QXJyYXlBdHRyaWJMRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKQEAgLTk3MSw3ICsxMDE4
LDcgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliTEZvcm1hdChDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlVmVydGV4QXJyYXlCaW5k
aW5nRGl2aXNvcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5Qmlu
ZGluZ0Rpdmlzb3IoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmluZGluZ2luZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRpdmlzb3IpCkBAIC05NzksMTIgKzEw
MjYsMTIgQEAgYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QmluZGluZ0Rpdmlzb3IoQ29udGV4dCAq
Y29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5
RWxlbWVudEJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhBcnJheUlEIHZhb2JqLCBCdWZm
ZXJJRCBidWZmZXIpCitib29sIFZhbGlkYXRlVmVydGV4QXJyYXlFbGVtZW50QnVmZmVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIFZlcnRleEFycmF5SUQgdmFvYmosIEJ1ZmZlcklEIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4
QnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXJyYXlWZXJ0ZXhC
dWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBiaW5kaW5naW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyLApAQCAtOTk0LDcgKzEwNDEsNyBAQCBib29s
IFZhbGlkYXRlVmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVmZmVycyhD
b250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVmZmVycyhj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDVfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQ1X2F1dG9nZW4uaAppbmRleCAyYTgxNWQ5
MDgxMjljZTJlMjMzMTI3ODZkZGQxNTQzYWY2MjEwNmVlLi5jYjg4MDY0NjY5ZDFhZDE1MDgzYjIy
YTdhMGEwYmExYzc0OWYzMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMNDVfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0NV9hdXRvZ2VuLmgKQEAgLTE3LDgg
KzE3LDggQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OwogCi1ib29sIFZhbGlkYXRl
QmluZFRleHR1cmVVbml0KENvbnRleHQgKmNvbnRleHQsIEdMdWludCB1bml0LCBUZXh0dXJlSUQg
dGV4dHVyZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlQmxpdE5hbWVkRnJhbWVidWZmZXIoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVCaW5kVGV4dHVyZVVuaXQoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IHVuaXQsIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkKTsKK2Jvb2wgVmFs
aWRhdGVCbGl0TmFtZWRGcmFtZWJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWFkRnJhbWVidWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRyYXdGcmFtZWJ1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKQEAgLTMxLDE2ICsz
MSwxNiBAQCBib29sIFZhbGlkYXRlQmxpdE5hbWVkRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RZMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcik7Ci1ib29sIFZhbGlkYXRlQ2hl
Y2tOYW1lZEZyYW1lYnVmZmVyU3RhdHVzKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
Q2hlY2tOYW1lZEZyYW1lYnVmZmVyU3RhdHVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVi
dWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQpOwotYm9vbCBWYWxpZGF0ZUNsZWFyTmFtZWRCdWZmZXJEYXRhKENvbnRleHQg
KmNvbnRleHQsCitib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlckRhdGEoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBi
dWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7Ci1ib29s
IFZhbGlkYXRlQ2xlYXJOYW1lZEJ1ZmZlclN1YkRhdGEoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDbGVhck5hbWVkQnVmZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LApAQCAtNDgsMjkgKzQ4LDI5IEBAIGJvb2wgVmFsaWRhdGVDbGVhck5hbWVkQnVmZmVyU3Vi
RGF0YShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqZGF0YSk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZmkoQ29udGV4
dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJmaShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZy
YW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3RlbmNpbCk7Ci1ib29sIFZhbGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZnYo
Q29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJmdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVDbGVhck5h
bWVkRnJhbWVidWZmZXJpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNsZWFyTmFt
ZWRGcmFtZWJ1ZmZlcml2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKLWJvb2wg
VmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJ1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJ1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFt
ZWJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlQ2xpcENvbnRyb2woQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIG9yaWdpbiwgR0xlbnVtIGRlcHRoKTsKLWJvb2wgVmFsaWRhdGVDb21wcmVzc2Vk
VGV4dHVyZVN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVDbGlwQ29u
dHJvbChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gb3JpZ2luLCBHTGVudW0gZGVwdGgp
OworYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UxRChjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHhvZmZzZXQsCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVz
c2VkVGV4dHVyZVN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxp
ZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4
dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsCkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVy
ZVN1YkltYWdlMkQoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZUNvbXBy
ZXNzZWRUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNv
bXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UzRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs
CkBAIC0xMDAsMjAgKzEwMCwyMCBAQCBib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleHR1cmVTdWJJ
bWFnZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhKTsKLWJvb2wgVmFsaWRhdGVDb3B5TmFtZWRC
dWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weU5hbWVkQnVm
ZmVyU3ViRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHJlYWRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgd3JpdGVCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludHB0ciByZWFkT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgd3JpdGVPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpOwotYm9vbCBWYWxpZGF0ZUNvcHlUZXh0
dXJlU3ViSW1hZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJl
U3ViSW1hZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgpOwotYm9v
bCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBW
YWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UyRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0xMjIsNyArMTIy
LDcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlU3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlQ29weVRl
eHR1cmVTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlQ29weVRleHR1
cmVTdWJJbWFnZTNEKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTEzMiwyOCArMTMyLDM5IEBAIGJvb2wgVmFs
aWRhdGVDb3B5VGV4dHVyZVN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZUNyZWF0ZUJ1ZmZlcnMoQ29udGV4
dCAqY29udGV4dCwgR0xzaXplaSBuLCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCk7Ci1ib29sIFZh
bGlkYXRlQ3JlYXRlRnJhbWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgR0x1
aW50ICpmcmFtZWJ1ZmZlcnMpOwotYm9vbCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW1QaXBlbGluZXMo
Q29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcyk7Ci1ib29sIFZh
bGlkYXRlQ3JlYXRlUXVlcmllcyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIG4sIEdMdWludCAqaWRzKTsKLWJvb2wgVmFsaWRhdGVDcmVhdGVSZW5kZXJidWZmZXJzKENv
bnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQ
YWNrZWQpOwotYm9vbCBWYWxpZGF0ZUNyZWF0ZVNhbXBsZXJzKENvbnRleHQgKmNvbnRleHQsIEdM
c2l6ZWkgbiwgR0x1aW50ICpzYW1wbGVycyk7Ci1ib29sIFZhbGlkYXRlQ3JlYXRlVGV4dHVyZXMo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1
cmVzKTsKLWJvb2wgVmFsaWRhdGVDcmVhdGVUcmFuc2Zvcm1GZWVkYmFja3MoQ29udGV4dCAqY29u
dGV4dCwgR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7Ci1ib29sIFZhbGlkYXRlQ3JlYXRlVmVydGV4
QXJyYXlzKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgVmVydGV4QXJyYXlJRCAqYXJyYXlz
UGFja2VkKTsKLWJvb2wgVmFsaWRhdGVEaXNhYmxlVmVydGV4QXJyYXlBdHRyaWIoQ29udGV4dCAq
Y29udGV4dCwgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCwgR0x1aW50IGluZGV4KTsKLWJvb2wg
VmFsaWRhdGVFbmFibGVWZXJ0ZXhBcnJheUF0dHJpYihDb250ZXh0ICpjb250ZXh0LCBWZXJ0ZXhB
cnJheUlEIHZhb2JqUGFja2VkLCBHTHVpbnQgaW5kZXgpOwotYm9vbCBWYWxpZGF0ZUZsdXNoTWFw
cGVkTmFtZWRCdWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUNyZWF0
ZUJ1ZmZlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBCdWZmZXJJ
RCAqYnVmZmVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRlQ3JlYXRlRnJhbWVidWZmZXJzKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMp
OworYm9vbCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW1QaXBlbGluZXMoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7Citib29sIFZhbGlkYXRl
Q3JlYXRlUXVlcmllcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqaWRzKTsKK2Jvb2wgVmFsaWRhdGVDcmVhdGVSZW5kZXJidWZm
ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCk7Citib29sIFZhbGlkYXRlQ3JlYXRl
U2FtcGxlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg
KnNhbXBsZXJzKTsKK2Jvb2wgVmFsaWRhdGVDcmVhdGVUZXh0dXJlcyhjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOworYm9vbCBWYWxpZGF0ZUNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrcyhjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdM
dWludCAqaWRzKTsKK2Jvb2wgVmFsaWRhdGVDcmVhdGVWZXJ0ZXhBcnJheXMoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJh
eXNQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBcnJheUF0dHJpYihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0ZUVuYWJsZVZlcnRleEFycmF5QXR0
cmliKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVk
TmFtZWRCdWZmZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgpOwot
Ym9vbCBWYWxpZGF0ZUdlbmVyYXRlVGV4dHVyZU1pcG1hcChDb250ZXh0ICpjb250ZXh0LCBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVJ
bWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdlbmVyYXRlVGV4dHVyZU1pcG1h
cChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCk7Citib29s
IFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1
cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVs
cyk7Ci1ib29sIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTE2Myw5MSArMTc0LDkxIEBAIGJv
b2wgVmFsaWRhdGVHZXRDb21wcmVzc2VkVGV4dHVyZVN1YkltYWdlKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVw
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpw
aXhlbHMpOwotYm9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaTY0dihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBhcmFtZXRlcmk2
NHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0TmFt
ZWRCdWZmZXJQYXJhbWV0ZXJpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpwYXJhbXMpOworYm9vbCBWYWxp
ZGF0ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUG9pbnRlcnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZl
clBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMpOwot
Ym9vbCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyU3ViRGF0YShDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29uc3QgKnBhcmFtcyk7Citi
b29sIFZhbGlkYXRlR2V0TmFtZWRCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0
ZUdldE5hbWVkRnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSk7
Citib29sIFZhbGlkYXRlR2V0TmFtZWRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0
TmFtZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAq
cGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoY29u
c3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW0pOwotYm9vbCBWYWxp
ZGF0ZUdldE5hbWVkUmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtKTsKK2Jvb2wgVmFsaWRhdGVHZXROYW1lZFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGk2NHYoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bXMpOworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0aTY0dihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZl
clBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZz
ZXQpOwotYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0aXYoQ29udGV4dCAqY29udGV4
dCwKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdGl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQpOwotYm9vbCBW
YWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWk2NHYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wg
VmFsaWRhdGVHZXRRdWVyeUJ1ZmZlck9iamVjdHVpNjR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQpOwot
Ym9vbCBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWl2KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3R1aXYoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQpOwotYm9vbCBW
YWxpZGF0ZUdldFRleHR1cmVJbWFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZUdl
dFRleHR1cmVJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZUxl
dmVsUGFyYW1ldGVyZnYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlTGV2ZWxQ
YXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdl
dFRleHR1cmVMZXZlbFBhcmFtZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRUZXh0dXJlTGV2ZWxQYXJhbWV0ZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0
dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcklpdihjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVySXVpdihDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlckl1aXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpwYXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVQYXJhbWV0ZXJmdihDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVyZnYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVyaXYoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVyaXYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VGV4dHVyZVN1YkltYWdlKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC0yNTksOTYgKzI3MCwx
MjAgQEAgYm9vbCBWYWxpZGF0ZUdldFRleHR1cmVTdWJJbWFnZShDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNraTY0
X3YoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja2k2NF92
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgeGZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQ2NCAqcGFyYW0pOwotYm9vbCBWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNraV92KENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludDY0ICpwYXJhbSk7Citib29sIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpX3Yo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgeGZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
KTsKLWJvb2wgVmFsaWRhdGVHZXRUcmFuc2Zvcm1GZWVkYmFja2l2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCB4ZmIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVH
ZXRWZXJ0ZXhBcnJheUluZGV4ZWQ2NGl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKTsKK2Jvb2wgVmFsaWRh
dGVHZXRUcmFuc2Zvcm1GZWVkYmFja2l2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgeGZiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKTsKK2Jvb2wgVmFsaWRhdGVHZXRWZXJ0
ZXhBcnJheUluZGV4ZWQ2NGl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW0pOwotYm9vbCBWYWxp
ZGF0ZUdldFZlcnRleEFycmF5SW5kZXhlZGl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludDY0ICpwYXJhbSk7Citib29s
IFZhbGlkYXRlR2V0VmVydGV4QXJyYXlJbmRleGVkaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2Jq
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtKTsKLWJvb2wg
VmFsaWRhdGVHZXRWZXJ0ZXhBcnJheWl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKTsKK2Jvb2wgVmFsaWRh
dGVHZXRWZXJ0ZXhBcnJheWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtKTsKLWJvb2wgVmFsaWRhdGVHZXRuQ29sb3JUYWJsZShDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtKTsKK2Jvb2wgVmFsaWRhdGVHZXRuQ29sb3JUYWJsZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdGFibGUpOwotYm9vbCBW
YWxpZGF0ZUdldG5Db21wcmVzc2VkVGV4SW1hZ2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0YWJsZSk7Citib29sIFZhbGlkYXRlR2V0
bkNvbXByZXNzZWRUZXhJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKnBpeGVscyk7Ci1ib29sIFZhbGlkYXRlR2V0bkNvbnZvbHV0aW9uRmlsdGVy
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZUdldG5Db252b2x1dGlvbkZpbHRlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppbWFnZSk7Ci1ib29sIFZh
bGlkYXRlR2V0bkhpc3RvZ3JhbShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbWFnZSk7Citib29sIFZhbGlkYXRlR2V0bkhp
c3RvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBy
ZXNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZh
bHVlcyk7Ci1ib29sIFZhbGlkYXRlR2V0bk1hcGR2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGRvdWJsZSAqdik7Ci1ib29s
IFZhbGlkYXRlR2V0bk1hcGZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICp2KTsKLWJvb2wgVmFsaWRhdGVHZXRu
TWFwaXYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHF1ZXJ5LCBHTHNp
emVpIGJ1ZlNpemUsIEdMaW50ICp2KTsKLWJvb2wgVmFsaWRhdGVHZXRuTWlubWF4KENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp2YWx1ZXMp
OworYm9vbCBWYWxpZGF0ZUdldG5NYXBkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcXVlcnksCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnYpOworYm9vbCBWYWxpZGF0ZUdl
dG5NYXBmdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcXVlcnksCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlR2V0bk1hcGl2KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBxdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdik7
Citib29sIFZhbGlkYXRlR2V0bk1pbm1heChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiByZXNldCwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZh
bHVlcyk7Ci1ib29sIFZhbGlkYXRlR2V0blBpeGVsTWFwZnYoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0
ZUdldG5QaXhlbE1hcHVpdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWFwLCBHTHNpemVpIGJ1
ZlNpemUsIEdMdWludCAqdmFsdWVzKTsKLWJvb2wgVmFsaWRhdGVHZXRuUGl4ZWxNYXB1c3YoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIG1hcCwgR0xzaXplaSBidWZTaXplLCBHTHVzaG9ydCAqdmFs
dWVzKTsKLWJvb2wgVmFsaWRhdGVHZXRuUG9seWdvblN0aXBwbGUoQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBidWZTaXplLCBHTHVieXRlICpwYXR0ZXJuKTsKLWJvb2wgVmFsaWRhdGVHZXRuU2Vw
YXJhYmxlRmlsdGVyKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICp2YWx1ZXMpOworYm9vbCBWYWxpZGF0ZUdldG5QaXhlbE1hcGZ2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1hcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRuUGl4ZWxNYXB1aXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlcyk7Citib29sIFZhbGlkYXRlR2V0blBpeGVsTWFwdXN2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x1c2hvcnQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRlR2V0blBv
bHlnb25TdGlwcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgYnVmU2l6ZSwgY29u
c3QgR0x1Ynl0ZSAqcGF0dGVybik7Citib29sIFZhbGlkYXRlR2V0blNlcGFyYWJsZUZpbHRlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcm93QnVmU2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnJvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnJvdywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY29sdW1uQnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKmNvbHVtbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKnNwYW4pOwotYm9vbCBWYWxpZGF0ZUdldG5UZXhJbWFnZShDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29sdW1uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc3Bhbik7Citib29s
IFZhbGlkYXRlR2V0blRleEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpwaXhlbHMpOwotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZHYoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFs
aWRhdGVHZXRuVW5pZm9ybWR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3Vi
bGUgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEYXRh
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRv
dWJsZSAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlckRh
dGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xl
bnVtICphdHRhY2htZW50cyk7Ci1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZU5hbWVkRnJhbWVidWZm
ZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlSW52YWxpZGF0ZU5hbWVk
RnJhbWVidWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZm
ZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCkBAIC0zNTYsMTI5ICsz
OTEsMTI5IEBAIGJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclN1YkRhdGEo
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVm
ZmVyKENvbnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwgR0xlbnVtIGFjY2Vz
cyk7Ci1ib29sIFZhbGlkYXRlTWFwTmFtZWRCdWZmZXJSYW5nZShDb250ZXh0ICpjb250ZXh0LAor
Ym9vbCBWYWxpZGF0ZU1hcE5hbWVkQnVmZmVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCwgR0xlbnVtIGFjY2Vzcyk7Citib29sIFZhbGlkYXRlTWFwTmFtZWRC
dWZmZXJSYW5nZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJpdGZpZWxkIGFjY2Vzcyk7Ci1ib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJEYXRhKENvbnRl
eHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJEYXRhKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdXNhZ2UpOwotYm9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVy
U3RvcmFnZShDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkQnVmZmVyU3RvcmFn
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBm
bGFncyk7Ci1ib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJTdWJEYXRhKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlTmFtZWRCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEpOwotYm9vbCBWYWxpZGF0ZU5hbWVk
RnJhbWVidWZmZXJEcmF3QnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFt
ZWRGcmFtZWJ1ZmZlckRyYXdCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVy
UGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBi
dWYpOwotYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVycyhDb250ZXh0ICpj
b250ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVycyhjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYnVmcyk7Ci1ib29sIFZhbGlkYXRlTmFtZWRG
cmFtZWJ1ZmZlclBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1l
ZEZyYW1lYnVmZmVyUGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQ
YWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHBhcmFt
KTsKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyUmVhZEJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJSZWFkQnVmZmVyKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJh
bWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc3JjKTsKLWJvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHJlbmRlcmJ1ZmZlcnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRl
TmFtZWRGcmFtZWJ1ZmZlclRleHR1cmUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVO
YW1lZEZyYW1lYnVmZmVyVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1
cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwpOwotYm9vbCBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoQ29udGV4dCAq
Y29udGV4dCwKK2Jvb2wgVmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGF5ZXIpOwotYm9v
bCBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZShDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCBy
ZW5kZXJidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZU5hbWVkUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTmFtZWRSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJidWZmZXJJRCBy
ZW5kZXJidWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0KTsKLWJvb2wgVmFsaWRhdGVUZXh0dXJlQmFycmllcihDb250ZXh0ICpjb250ZXh0KTsKLWJv
b2wgVmFsaWRhdGVUZXh0dXJlQnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4dHVyZUJhcnJpZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlVGV4
dHVyZUJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm
ZXJJRCBidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXJSYW5nZShDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVCdWZmZXJSYW5nZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBi
dWZmZXJQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsK
LWJvb2wgVmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVySWl2KENvbnRleHQgKmNvbnRleHQsCitib29s
IFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcklpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRh
dGVUZXh0dXJlUGFyYW1ldGVySXVpdihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRl
eHR1cmVQYXJhbWV0ZXJJdWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVUZXh0
dXJlUGFyYW1ldGVyZihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJh
bWV0ZXJmKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgcGFyYW0pOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250
ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXJmdihjb25zdCBDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbSk7Ci1ib29s
IFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVUZXh0dXJlUGFyYW1ldGVyaShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBwYXJhbSk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcml2KENv
bnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcml2KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJh
bSk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UxRChDb250ZXh0ICpjb250ZXh0LAorYm9v
bCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlMUQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoKTsKLWJvb2wgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTJE
KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UyRChjb25zdCBD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxl
dmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Ci1ib29sIFZhbGlkYXRlVGV4
dHVyZVN0b3JhZ2UyRE11bHRpc2FtcGxlKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VGV4dHVyZVN0b3JhZ2UyRE11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7Ci1ib29sIFZhbGlkYXRlVGV4dHVyZVN0
b3JhZ2UzRChDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdG9yYWdlM0Qo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoKTsKLWJvb2wgVmFsaWRhdGVUZXh0dXJl
U3RvcmFnZTNETXVsdGlzYW1wbGUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUZXh0
dXJlU3RvcmFnZTNETXVsdGlzYW1wbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxl
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LApAQCAtNDg2LDcgKzUyMSw3IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlU3RvcmFn
ZTNETXVsdGlzYW1wbGUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7Ci1ib29s
IFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMUQoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRh
dGVUZXh0dXJlU3ViSW1hZ2UxRChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHhvZmZzZXQsCkBAIC00OTQsNyArNTI5LDcgQEAgYm9vbCBWYWxpZGF0ZVRl
eHR1cmVTdWJJbWFnZTFEKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpOwotYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMkQoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LApAQCAtNTA0LDcgKzUzOSw3IEBAIGJv
b2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UzRChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTNEKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKQEAgLTUxNiw1
NCArNTUxLDU0IEBAIGJvb2wgVmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UzRChDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKLWJvb2wgVmFsaWRhdGVUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlckJhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHhmYiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOwotYm9v
bCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwK
K2Jvb2wgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclJhbmdlKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgeGZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
SUQgYnVmZmVyUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBzaXplKTsKLWJvb2wgVmFsaWRhdGVVbm1hcE5hbWVkQnVmZmVyKENv
bnRleHQgKmNvbnRleHQsIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCk7Ci1ib29sIFZhbGlkYXRlVmVy
dGV4QXJyYXlBdHRyaWJCaW5kaW5nKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5t
YXBOYW1lZEJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBCdWZmZXJJRCBidWZmZXJQYWNr
ZWQpOworYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmliQmluZGluZyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhB
cnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYXR0cmliaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBiaW5kaW5naW5kZXgpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QXR0cmli
Rm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRyaWJG
b3JtYXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCk7Ci1ib29sIFZhbGlkYXRlVmVydGV4QXJy
YXlBdHRyaWJJRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVmVydGV4QXJy
YXlBdHRyaWJJRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCk7Ci1ib29sIFZhbGlk
YXRlVmVydGV4QXJyYXlBdHRyaWJMRm9ybWF0KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlk
YXRlVmVydGV4QXJyYXlBdHRyaWJMRm9ybWF0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCk7
Ci1ib29sIFZhbGlkYXRlVmVydGV4QXJyYXlCaW5kaW5nRGl2aXNvcihDb250ZXh0ICpjb250ZXh0
LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5QmluZGluZ0Rpdmlzb3IoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFy
cmF5SUQgdmFvYmpQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYmluZGluZ2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGRpdmlzb3IpOwotYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5RWxlbWVudEJ1
ZmZlcihDb250ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZVZlcnRleEFycmF5RWxlbWVudEJ1
ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQpOwotYm9vbCBWYWxpZGF0
ZVZlcnRleEFycmF5VmVydGV4QnVmZmVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
VmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiaW5kaW5naW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSk7
Ci1ib29sIFZhbGlkYXRlVmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXJzKENvbnRleHQgKmNvbnRleHQs
Citib29sIFZhbGlkYXRlVmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXJzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleEFycmF5
SUQgdmFvYmpQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBmaXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0w0Ni5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvdmFsaWRhdGlvbkdMNDYuY3BwCmluZGV4IDJjMTM0Zjg4MGJlY2I3MzUyZDRhOGZjOGI3ZjZh
MDcwYWM2NGE2N2QuLjQ0ZGZlNzZjZjM0MmNlNzhlOGM3ZWYxYTg1N2E4MjBhOTMzYjFiMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0w0Ni5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25HTDQ2LmNwcApAQCAtMTEsNyArMTEsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWJvb2wg
VmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdENvdW50KENvbnRleHQgKmNvbnRleHQsCiti
b29sIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3RDb3VudChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICppbmRpcmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50cHRyIGRyYXdjb3VudCwKQEAgLTIxLDcgKzIxLDcgQEAgYm9vbCBWYWxpZGF0ZU11bHRp
RHJhd0FycmF5c0luZGlyZWN0Q291bnQoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3VudChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3Vu
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlyZWN0LApAQCAtMzIsMTIgKzMyLDE1IEBA
IGJvb2wgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0luZGlyZWN0Q291bnQoQ29udGV4dCAqY29u
dGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXRD
bGFtcChDb250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cywgR0xm
bG9hdCBjbGFtcCkKK2Jvb2wgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0Q2xhbXAoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBmYWN0
b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdW5pdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgY2xhbXApCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVTcGVjaWFsaXplU2hhZGVyKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlU3BlY2lhbGl6ZVNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqcEVudHJ5UG9pbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtU3BlY2lhbGl6YXRpb25Db25zdGFudHMs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDZfYXV0b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25HTDQ2X2F1dG9nZW4uaAppbmRleCAzYmI4NjEzOGVkZDNjNjFlZGM5MTVlOGQy
ZTRkMTEzNzE1NGYwZjc0Li5kNDc5YjE0MTI2MjBlNTk1OThjZDlhYmZmMDUyNjRmNzY3ZGQ3Zjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNDZfYXV0b2dlbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uR0w0Nl9hdXRvZ2VuLmgKQEAgLTE3LDIxICsxNywyNCBAQCBuYW1lc3Bh
Y2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJ
bmRpcmVjdENvdW50KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlTXVsdGlEcmF3QXJy
YXlzSW5kaXJlY3RDb3VudChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVjdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRyYXdjb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbWF4ZHJhd2Nv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
dHJpZGUpOwotYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3VudChDb250
ZXh0ICpjb250ZXh0LAorYm9vbCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RDb3Vu
dChjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGlyZWN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkcmF3Y291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbWF4ZHJhd2NvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlk
ZSk7Ci1ib29sIFZhbGlkYXRlUG9seWdvbk9mZnNldENsYW1wKENvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzLCBHTGZsb2F0IGNsYW1wKTsKLWJvb2wgVmFsaWRh
dGVTcGVjaWFsaXplU2hhZGVyKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlUG9seWdv
bk9mZnNldENsYW1wKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgZmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHVuaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IGNsYW1wKTsKK2Jvb2wgVmFsaWRhdGVTcGVjaWFsaXplU2hhZGVyKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpwRW50cnlQb2ludCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1TcGVjaWFsaXphdGlvbkNv
bnN0YW50cywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS92YWxpZGF0aW9uR0w0X2F1dG9nZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uR0w0X2F1dG9nZW4uaAppbmRleCA5YmZmOWFmZjg0MmJjNTc1NGE3
NWQ1N2E0N2ZhNjAxZjZmNGYwNWJmLi44MDQzZjdkYWZkZTdiOWEwMDBmOWQ5ZDVmNGFjNTRiNTZl
NmQ2NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
dmFsaWRhdGlvbkdMNF9hdXRvZ2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25HTDRfYXV0b2dlbi5oCkBAIC0xNywxMTkgKzE3LDE0MyBAQCBu
YW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CiAKLWJvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5
SW5kZXhlZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIFF1
ZXJ5SUQgaWRQYWNrZWQpOwotYm9vbCBWYWxpZGF0ZURyYXdUcmFuc2Zvcm1GZWVkYmFjayhDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCk7
Ci1ib29sIFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrU3RyZWFtKENvbnRleHQgKmNvbnRl
eHQsCitib29sIFZhbGlkYXRlQmVnaW5RdWVyeUluZGV4ZWQoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRdWVyeUlEIGlkUGFja2VkKTsKK2Jvb2wgVmFsaWRhdGVEcmF3VHJhbnNm
b3JtRmVlZGJhY2soY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQpOworYm9vbCBWYWxpZGF0ZURyYXdU
cmFuc2Zvcm1GZWVkYmFja1N0cmVhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tl
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0cmVh
bSk7Ci1ib29sIFZhbGlkYXRlRW5kUXVlcnlJbmRleGVkKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Ci1ib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGlu
ZU5hbWUoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVFbmRRdWVyeUluZGV4ZWQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK2Jvb2wg
VmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lTmFtZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
aGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7Ci1i
b29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZVVuaWZvcm1OYW1lKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0QWN0aXZlU3Vicm91dGluZVVuaWZvcm1OYW1lKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpu
YW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lVW5pZm9ybWl2KENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRBY3RpdmVTdWJy
b3V0aW5lVW5pZm9ybWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJ0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnZh
bHVlcyk7Ci1ib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVN0YWdlaXYoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2
YWx1ZXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1TdGFnZWl2KGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRl
cnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZXMpOwotYm9vbCBWYWxpZGF0
ZUdldFF1ZXJ5SW5kZXhlZGl2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlJ
bmRleGVkaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlR2V0U3Vicm91dGluZUluZGV4KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0
U3Vicm91dGluZUluZGV4KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLWJvb2wgVmFsaWRhdGVHZXRT
dWJyb3V0aW5lVW5pZm9ybUxvY2F0aW9uKENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRl
R2V0U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlvbihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gc2hhZGVydHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybVN1YnJvdXRp
bmV1aXYoQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtU3Vicm91dGlu
ZXVpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZHYoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THVpbnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0VW5pZm9ybWR2KGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xkb3VibGUgKnBhcmFtcyk7Ci1ib29sIFZhbGlkYXRl
UGF0Y2hQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlcyk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybTFkKENvbnRleHQgKmNvbnRleHQs
IEdMaW50IGxvY2F0aW9uLCBHTGRvdWJsZSB4KTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtMWR2KENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRv
dWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZChDb250ZXh0ICpjb250ZXh0LCBH
TGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSk7Ci1ib29sIFZhbGlkYXRlVW5p
Zm9ybTJkdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtM2QoQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91Ymxl
IHopOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZHYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlk
YXRlVW5pZm9ybTRkKENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91Ymxl
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVBhdGNoUGFyYW1ldGVyZnYoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworYm9vbCBWYWxp
ZGF0ZVVuaWZvcm0xZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsIEdMZG91YmxlIHgpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZHYoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOworYm9vbCBW
YWxpZGF0ZVVuaWZvcm0yZChjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMZG91YmxlIHgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHkpOwor
Ym9vbCBWYWxpZGF0ZVVuaWZvcm0yZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGRvdWJsZSAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZChjb25zdCBDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCisgICAgICAgICAgICAgICAgICAgICAgIEdMZG91
YmxlIHopOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZChj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHgs
CiAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHksCiAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZG91YmxlIHosCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZG91YmxlIHcpOwotYm9v
bCBWYWxpZGF0ZVVuaWZvcm00ZHYoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDJkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRlVW5pZm9ybTRkdihjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Citib29sIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgy
eDNkdihDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZHYoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJs
ZSAqdmFsdWUpOwotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRkdihDb250ZXh0ICpjb250
ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4Mng0ZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGRvdWJsZSAqdmFsdWUpOwotYm9vbCBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXgzZHYoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXgzZHYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZHYoQ29udGV4
dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4MmR2KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsK
LWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZHYoQ29udGV4dCAqY29udGV4dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCitib29sIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDN4NGR2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xkb3VibGUgKnZhbHVlKTsKLWJvb2wgVmFsaWRhdGVVbmlm
b3JtTWF0cml4NGR2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4NGR2KGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2
YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmR2KENvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDR4M2R2KENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXg0eDNkdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZG91YmxlICp2YWx1ZSk7Ci1ib29sIFZhbGlkYXRlVW5pZm9ybVN1YnJvdXRp
bmVzdWl2KENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkYXRlVW5pZm9ybVN1YnJvdXRpbmVz
dWl2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBzaGFkZXJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKmluZGljZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMF9hdXRvZ2VuLmNwcApp
bmRleCBiNGJiMzAzMjBlYzlmZjJmY2E5YzIwNTQzNzhlNTMyNTBmNzU1NDMyLi4yZTRlMGI0MDhm
N2YxYmUyN2IyODI0MDMxNDFjYzU3NzNmNThjOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMF9hdXRvZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMF9h
dXRvZ2VuLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEFjY3VtKEdMZW51
bSBvcCwgR0xmbG9hdCB2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUFjY3VtKGNvbnRleHQsIG9wLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTUzLDggKzUzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBBbHBoYUZ1
bmMoR0xlbnVtIGZ1bmMsIEdMZmxvYXQgcmVmKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QWxwaGFUZXN0RnVuYz4oZnVuYyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBBbHBoYVRlc3RGdW5jIGZ1bmNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxBbHBoYVRlc3RGdW5jPihmdW5jKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUFscGhhRnVuYyhjb250ZXh0LCBm
dW5jUGFja2VkLCByZWYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJlZ2luKEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmVnaW4oY29udGV4dCwgbW9kZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJpdG1hcChHTHNpemVpIHdpZHRoLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQml0bWFwKGNvbnRl
eHQsIHdpZHRoLCBoZWlnaHQsIHhvcmlnLCB5b3JpZywgeG1vdmUsIHltb3ZlLCBiaXRtYXApKTsK
QEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuYyhHTGVudW0gc2Zh
Y3RvciwgR0xlbnVtIGRmYWN0b3IpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5jKGNvbnRleHQsIHNmYWN0b3IsIGRmYWN0b3Ip
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgQ2FsbExpc3QoR0x1aW50IGxpc3QpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDYWxsTGlzdChjb250ZXh0LCBsaXN0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ2FsbExpc3RzKEdMc2l6ZWkgbiwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmxpc3RzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNh
bGxMaXN0cyhjb250ZXh0LCBuLCB0eXBlLCBsaXN0cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhcihHTGJpdGZpZWxk
IG1hc2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGVhcihj
b250ZXh0LCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MTk4LDcgKzE5OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJBY2N1bShHTGZsb2F0IHJlZCwg
R0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xlYXJBY2N1bShjb250ZXh0
LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yMTksNyArMjE5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckNvbG9yKEdMZmxvYXQgcmVk
LCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGVhckNvbG9yKGNvbnRl
eHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyRGVwdGgoR0xkb3VibGUg
ZGVwdGgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGVhckRl
cHRoKGNvbnRleHQsIGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJJbmRleChHTGZsb2F0
IGMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGVhckluZGV4
KGNvbnRleHQsIGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0y
NzEsNyArMjcxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhclN0ZW5jaWwoR0xpbnQgcykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyU3RlbmNpbChjb250
ZXh0LCBzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjkwLDcg
KzI5MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xpcFBsYW5lKEdMZW51bSBwbGFuZSwgY29uc3Qg
R0xkb3VibGUgKmVxdWF0aW9uKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUNsaXBQbGFuZShjb250ZXh0LCBwbGFuZSwgZXF1YXRpb24pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ29sb3IzYihHTGJ5dGUgcmVkLCBHTGJ5dGUgZ3JlZW4sIEdMYnl0ZSBibHVlKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9y
M2IoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjNidihjb25zdCBHTGJ5
dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjNi
dihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzQ2LDcgKzM0Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzZChHTGRvdWJsZSByZWQsIEdM
ZG91YmxlIGdyZWVuLCBHTGRvdWJsZSBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM2QoY29udGV4dCwgcmVkLCBncmVlbiwg
Ymx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBDb2xvcjNkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM2R2KGNvbnRleHQsIHYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBDb2xvcjNmKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJs
dWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQ29sb3IzZihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yM2Z2KGNv
bnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVDb2xvcjNmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzaShHTGludCBy
ZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM2koY29udGV4dCwgcmVkLCBncmVlbiwg
Ymx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MzksNyArNDM5LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBDb2xvcjNpdihjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM2l2KGNvbnRleHQsIHYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBDb2xvcjNzKEdMc2hvcnQgcmVkLCBHTHNob3J0IGdyZWVuLCBHTHNob3J0IGJsdWUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q29sb3Izcyhjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yM3N2KGNvbnN0
IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
b2xvcjNzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzdWIoR0x1Ynl0ZSBy
ZWQsIEdMdWJ5dGUgZ3JlZW4sIEdMdWJ5dGUgYmx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjN1Yihjb250ZXh0LCByZWQsIGdy
ZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUxMyw3ICs1MTMsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yM3Vidihjb25zdCBHTHVieXRlICp2KQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3IzdWJ2KGNvbnRleHQsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01MzEsNyArNTMxLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBDb2xvcjN1aShHTHVpbnQgcmVkLCBHTHVpbnQgZ3JlZW4sIEdMdWlu
dCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUNvbG9yM3VpKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3Iz
dWl2KGNvbnN0IEdMdWludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUNvbG9yM3Vpdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3IzdXMo
R0x1c2hvcnQgcmVkLCBHTHVzaG9ydCBncmVlbiwgR0x1c2hvcnQgYmx1ZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjN1cyhjb250
ZXh0LCByZWQsIGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU4
Nyw3ICs1ODcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yM3Vzdihjb25zdCBHTHVzaG9ydCAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yM3Vzdihj
b250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjA2
LDcgKzYwNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0YihHTGJ5dGUgcmVkLCBHTGJ5dGUg
Z3JlZW4sIEdMYnl0ZSBibHVlLCBHTGJ5dGUgYWxwaGEpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0Yihjb250ZXh0LCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MjUsNyAr
NjI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjRidihjb25zdCBHTGJ5dGUgKnYpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRidihjb250ZXh0LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjQ1LDcgKzY0NSw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0ZChHTGRvdWJsZSByZWQsIEdMZG91YmxlIGdyZWVu
LCBHTGRvdWJsZSBibHVlLCBHTGRvdWJsZSBhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0ZChjb250ZXh0LCByZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NjQsNyArNjY0LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjRkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNGR2KGNvbnRleHQsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02ODQsNyArNjg0LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBDb2xvcjRmKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZs
b2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRmKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcwMyw3ICs3MDMsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENvbG9yNGZ2KGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRmdihjb250ZXh0LCB2KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzIyLDcgKzcyMiw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29sb3I0aShHTGludCByZWQsIEdMaW50IGdyZWVuLCBHTGludCBibHVlLCBH
TGludCBhbHBoYSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVDb2xvcjRpKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIENvbG9yNGl2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ29sb3I0aXYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENv
bG9yNHMoR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSwgR0xzaG9ydCBh
bHBoYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUNvbG9yNHMoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzgwLDcgKzc4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29s
b3I0c3YoY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUNvbG9yNHN2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC04MDAsNyArODAwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjR1
YihHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGgK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
b2xvcjR1Yihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC04MTksNyArODE5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvcjR1
YnYoY29uc3QgR0x1Ynl0ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUNvbG9yNHVidihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0dWko
R0x1aW50IHJlZCwgR0x1aW50IGdyZWVuLCBHTHVpbnQgYmx1ZSwgR0x1aW50IGFscGhhKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9y
NHVpKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yNHVpdihj
b25zdCBHTHVpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVDb2xvcjR1aXYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yNHVzKEdMdXNo
b3J0IHJlZCwgR0x1c2hvcnQgZ3JlZW4sIEdMdXNob3J0IGJsdWUsIEdMdXNob3J0CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3I0dXMo
Y29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtODk2LDcgKzg5Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3I0dXN2KGNvbnN0
IEdMdXNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q29sb3I0dXN2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvck1hc2soR0xib29s
ZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib28KIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvck1hc2so
Y29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXRlcmlhbChH
TGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3JNYXRlcmlhbChjb250ZXh0LCBmYWNlLCBtb2Rl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTk1OCw3ICs5NTgsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvcHlQaXhlbHMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUNvcHlQaXhlbHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwg
dHlwZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05NzcsOCArOTc3LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBDdWxsRmFjZShHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQ3VsbEZhY2VNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEN1bGxGYWNlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBDdWxsRmFjZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxDdWxsRmFjZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDdWxsRmFjZShjb250ZXh0LCBtb2RlUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTk2LDcgKzk5Niw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlTGlzdHMoR0x1aW50IGxpc3QsIEdMc2l6ZWkgcmFu
Z2UpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVMaXN0
cyhjb250ZXh0LCBsaXN0LCByYW5nZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVwdGhGdW5jKEdM
ZW51bSBmdW5jKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVw
dGhGdW5jKGNvbnRleHQsIGZ1bmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlcHRoTWFzayhHTGJv
b2xlYW4gZmxhZykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURl
cHRoTWFzayhjb250ZXh0LCBmbGFnKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aFJhbmdlKEdM
ZG91YmxlIG4sIEdMZG91YmxlIGYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVEZXB0aFJhbmdlKGNvbnRleHQsIG4sIGYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERp
c2FibGUoR0xlbnVtIGNhcCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZURpc2FibGUoY29udGV4dCwgY2FwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVy
KEdMZW51bSBidWYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVE
cmF3QnVmZmVyKGNvbnRleHQsIGJ1ZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTExMDcsOCArMTEwNyw4IEBAIERyYXdQaXhlbHMoR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVEcmF3UGl4ZWxzKGNvbnRleHQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFZGdlRmxhZyhHTGJvb2xl
YW4gZmxhZykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVkZ2VG
bGFnKGNvbnRleHQsIGZsYWcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0xMTQzLDcgKzExNDMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVkZ2VGbGFndihjb25zdCBH
TGJvb2xlYW4gKmZsYWcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVFZGdlRmxhZ3YoY29udGV4dCwgZmxhZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTExNjEsNyArMTE2MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlKEdM
ZW51bSBjYXApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmFi
bGUoY29udGV4dCwgY2FwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmQoKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5kKGNvbnRleHQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTk1LDcgKzExOTUsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEVuZExpc3QoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRW5kTGlzdChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFdmFsQ29vcmQxZChHTGRv
dWJsZSB1KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRXZhbENv
b3JkMWQoY29udGV4dCwgdSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTEyMzAsNyArMTIzMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRXZhbENvb3JkMWR2KGNvbnN0
IEdMZG91YmxlICp1KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RXZhbENvb3JkMWR2KGNvbnRleHQsIHUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0xMjQ3LDcgKzEyNDcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEV2YWxDb29yZDFm
KEdMZmxvYXQgdSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUV2
YWxDb29yZDFmKGNvbnRleHQsIHUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEV2YWxDb29yZDFmdihj
b25zdCBHTGZsb2F0ICp1KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRXZhbENvb3JkMWZ2KGNvbnRleHQsIHUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0xMjgyLDcgKzEyODIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEV2YWxDb29y
ZDJkKEdMZG91YmxlIHUsIEdMZG91YmxlIHYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVFdmFsQ29vcmQyZChjb250ZXh0LCB1LCB2KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBFdmFsQ29vcmQyZHYoY29uc3QgR0xkb3VibGUgKnUpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFdmFsQ29vcmQyZHYoY29udGV4dCwgdSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzMTcsNyArMTMxNyw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRXZhbENvb3JkMmYoR0xmbG9hdCB1LCBHTGZsb2F0IHYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFdmFsQ29vcmQyZihjb250ZXh0LCB1LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTMzNSw3ICsxMzM1
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFdmFsQ29vcmQyZnYoY29uc3QgR0xmbG9hdCAqdSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUV2YWxDb29yZDJmdihjb250
ZXh0LCB1KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM1Myw3
ICsxMzUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFdmFsTWVzaDEoR0xlbnVtIG1vZGUsIEdMaW50
IGkxLCBHTGludCBpMikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUV2YWxNZXNoMShjb250ZXh0LCBtb2RlLCBpMSwgaTIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xMzczLDcgKzEzNzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEV2
YWxNZXNoMihHTGVudW0gbW9kZSwgR0xpbnQgaTEsIEdMaW50IGkyLCBHTGludCBqMSwgR0xpbnQg
ajIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRXZhbE1lc2gyKGNvbnRleHQsIG1vZGUsIGkxLCBpMiwgajEsIGoyKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTEzOTEsNyArMTM5MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRXZh
bFBvaW50MShHTGludCBpKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRXZhbFBvaW50MShjb250ZXh0LCBpKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTQwOCw3ICsxNDA4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFdmFsUG9pbnQy
KEdMaW50IGksIEdMaW50IGopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVFdmFsUG9pbnQyKGNvbnRleHQsIGksIGopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZlZWRi
YWNrQnVmZmVyKEdMc2l6ZWkgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMZmxvYXQgKmJ1ZmZlcikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGZWVk
YmFja0J1ZmZlcihjb250ZXh0LCBzaXplLCB0eXBlLCBidWZmZXIpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGaW5pc2go
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRmluaXNoKGNvbnRl
eHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNDYyLDcgKzE0
NjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZsdXNoKCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUZsdXNoKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xNDgwLDcgKzE0ODAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZv
Z2YoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRm9nZihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEZvZ2Z2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9nZnYoY29udGV4dCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1
MTYsNyArMTUxNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRm9naShHTGVudW0gcG5hbWUsIEdMaW50
IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9naShj
b250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0xNTM0LDcgKzE1MzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZvZ2l2KEdMZW51bSBw
bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUZvZ2l2KGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEZyb250RmFjZShHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUZyb250RmFjZShjb250ZXh0LCBtb2RlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU3Myw4ICsxNTczLDggQEAgRnJ1c3R1bShHTGRv
dWJsZSBsZWZ0LCBHTGRvdWJsZSByaWdodCwgR0xkb3VibGUgYm90dG9tLCBHTGRvdWJsZSB0b3As
IEdMZG91YmxlIHoKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZydXN0dW0oY29udGV4dCwgbGVm
dCwgcmlnaHQsIGJvdHRvbSwgdG9wLCB6TmVhciwgekZhcikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTE1OTIsNyArMTU5Miw3IEBAIEdMdWludCBHTF9BUElFTlRS
WSBHZW5MaXN0cyhHTHNpemVpIHJhbmdlKQogICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5MaXN0cyhjb250ZXh0LCByYW5n
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE2MTksNyArMTYx
OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xl
YW4gKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRC
b29sZWFudihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTE2MzgsNyArMTYzOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Q2xp
cFBsYW5lKEdMZW51bSBwbGFuZSwgR0xkb3VibGUgKmVxdWF0aW9uKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldENsaXBQbGFuZShjb250
ZXh0LCBwbGFuZSwgZXF1YXRpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY1
Nyw3ICsxNjU3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXREb3VibGV2KEdMZW51bSBwbmFtZSwg
R0xkb3VibGUgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVHZXREb3VibGV2KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMTY3NSw3ICsxNjc1LDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZ
IEdldEVycm9yKCkKICAgICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RXJyb3IoY29udGV4dCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3MDIsNyArMTcwMiw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqZGF0YSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZsb2F0dihjb250ZXh0LCBwbmFtZSwgZGF0
YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3MjAsNyArMTcy
MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAq
ZGF0YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVn
ZXJ2KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTc0MCw4ICsxNzQwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRMaWdodGZ2
KEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldExpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRMaWdodGl2KEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
dExpZ2h0aXYoY29udGV4dCwgbGlnaHQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMTc4Myw3ICsxNzgzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNYXBk
dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcXVlcnksIEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldE1hcGR2KGNvbnRl
eHQsIHRhcmdldCwgcXVlcnksIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTgw
NCw3ICsxODA0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNYXBmdihHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcXVlcnksIEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TWFwZnYoY29udGV4dCwgdGFyZ2V0LCBxdWVyeSwg
dikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODI1LDcgKzE4MjUsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldE1hcGl2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBxdWVyeSwgR0xpbnQg
KnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2V0TWFwaXYoY29udGV4dCwgdGFyZ2V0LCBxdWVyeSwgdikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0xODQ2LDkgKzE4NDYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE1hdGVy
aWFsZnYoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE1hdGVyaWFsZnYoY29udGV4
dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTE4NjgsNyArMTg2OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TWF0
ZXJpYWxpdihHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldE1hdGVy
aWFsaXYoY29udGV4dCwgZmFjZSwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0xODg3LDcgKzE4ODcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFBpeGVsTWFw
ZnYoR0xlbnVtIG1hcCwgR0xmbG9hdCAqdmFsdWVzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFBpeGVsTWFwZnYoY29udGV4dCwgbWFw
LCB2YWx1ZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkwNiw3ICsxOTA2LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQaXhlbE1hcHVpdihHTGVudW0gbWFwLCBHTHVpbnQgKnZh
bHVlcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRQaXhlbE1hcHVpdihjb250ZXh0LCBtYXAsIHZhbHVlcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xOTI1LDcgKzE5MjUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFBp
eGVsTWFwdXN2KEdMZW51bSBtYXAsIEdMdXNob3J0ICp2YWx1ZXMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UGl4ZWxNYXB1c3YoY29u
dGV4dCwgbWFwLCB2YWx1ZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk0NCw3
ICsxOTQ0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQb2x5Z29uU3RpcHBsZShHTHVieXRlICpt
YXNrKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UG9seWdv
blN0aXBwbGUoY29udGV4dCwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTE5NjMsNyArMTk2Myw3IEBAIGNvbnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIEdl
dFN0cmluZyhHTGVudW0gbmFtZSkKICAgICBjb25zdCBHTHVieXRlICpyZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRTdHJpbmcoY29udGV4dCwg
bmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE5OTMsMTAg
KzE5OTMsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhFbnZmdihHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJh
bWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1l
dGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwor
ICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleEVudmZ2KGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIwMTYsMTAgKzIwMTYsMTAgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRUZXhFbnZpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0
YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4
dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRl
ciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBh
cmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUZXhFbnZpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0y
MDQwLDcgKzIwNDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleEdlbmR2KEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBHTGRvdWJsZSAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbmR2KGNvbnRleHQsIGNv
b3JkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwNjEs
NyArMjA2MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4R2VuZnYoR0xlbnVtIGNvb3JkLCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRUZXhHZW5mdihjb250ZXh0LCBjb29yZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMDgyLDcgKzIw
ODIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleEdlbml2KEdMZW51bSBjb29yZCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbml2KGNvbnRleHQsIGNvb3JkLCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxMDUsOCArMjEwNSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4
SW1hZ2UoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMp
KTsKQEAgLTIxMjksOCArMjEyOSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJh
bWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7CkBAIC0yMTU0LDggKzIxNTQsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBwbmFtZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleExldmVs
UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcykp
OwpAQCAtMjE3OSw5ICsyMTc5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJm
dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTIyMDEsOSArMjIwMSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1l
dGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXYoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBIaW50KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlSGludChjb250ZXh0LCB0YXJnZXQsIG1vZGUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0yMjM5LDcgKzIyMzksNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEluZGV4TWFzayhHTHVpbnQgbWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUluZGV4TWFzayhjb250ZXh0LCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMjI1Niw3ICsyMjU2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJ
bmRleGQoR0xkb3VibGUgYykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUluZGV4ZChjb250ZXh0LCBjKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMjI3NCw3ICsyMjc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleGR2KGNvbnN0
IEdMZG91YmxlICpjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
SW5kZXhkdihjb250ZXh0LCBjKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMjI5MSw3ICsyMjkxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleGYoR0xmbG9hdCBj
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5kZXhmKGNvbnRl
eHQsIGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMzA5LDcg
KzIzMDksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEluZGV4ZnYoY29uc3QgR0xmbG9hdCAqYykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUluZGV4ZnYoY29udGV4dCwg
YykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzMjYsNyArMjMy
Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgSW5kZXhpKEdMaW50IGMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRleGkoY29udGV4dCwgYykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgSW5kZXhpdihjb25zdCBHTGludCAqYykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUluZGV4aXYoY29udGV4dCwgYykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzNjEsNyArMjM2MSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgSW5kZXhzKEdMc2hvcnQgYykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUluZGV4cyhjb250ZXh0LCBjKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMjM3OSw3ICsyMzc5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleHN2KGNv
bnN0IEdMc2hvcnQgKmMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVJbmRleHN2KGNvbnRleHQsIGMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0yMzk2LDcgKzIzOTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEluaXROYW1lcygpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbml0TmFtZXMoY29udGV4
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI0MTUsNyArMjQx
NSw3IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWQoR0xlbnVtIGNhcCkKICAgICBH
TGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSXNFbmFibGVkKGNvbnRleHQsIGNhcCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTI0NDIsNyArMjQ0Miw3IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJ
c0xpc3QoR0x1aW50IGxpc3QpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzTGlzdChjb250ZXh0LCBsaXN0KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjQ2OSw3ICsyNDY5LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVsZihHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TGlnaHRNb2RlbGYoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTI0ODksNyArMjQ4OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbGZ2
KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWxmdihjb250ZXh0
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1MDgsNyAr
MjUwOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbGkoR0xlbnVtIHBuYW1lLCBHTGlu
dCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVMaWdodE1vZGVsaShjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMjUyOCw3ICsyNTI4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdo
dE1vZGVsaXYoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWxpdihj
b250ZXh0LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1
NDgsOCArMjU0OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRmKEdMZW51bSBsaWdodCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodGYoY29udGV4dCwgbGln
aHQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0y
NTcyLDggKzI1NzIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIExpZ2h0ZnYoR0xlbnVtIGxpZ2h0LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRmdihj
b250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExpZ2h0aShHTGVu
dW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRpKGNvbnRleHQsIGxpZ2h0
LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjYxNSw3ICsy
NjE1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdodGl2KEdMZW51bSBsaWdodCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0aXYoY29udGV4dCwgbGlnaHQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjYzNCw3ICsyNjM0LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBMaW5lU3RpcHBsZShHTGludCBmYWN0b3IsIEdMdXNob3J0IHBhdHRl
cm4pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlTGluZVN0aXBwbGUoY29udGV4dCwgZmFjdG9yLCBwYXR0ZXJuKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTI2NTIsNyArMjY1Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGluZVdp
ZHRoKEdMZmxvYXQgd2lkdGgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVMaW5lV2lkdGgoY29udGV4dCwgd2lkdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0yNjY5LDcgKzI2NjksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExpc3RC
YXNlKEdMdWludCBiYXNlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlTGlzdEJhc2UoY29udGV4dCwgYmFzZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTI2ODYsNyArMjY4Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTG9hZElkZW50
aXR5KCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRJZGVu
dGl0eShjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MjcwNCw3ICsyNzA0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMb2FkTWF0cml4ZChjb25zdCBHTGRv
dWJsZSAqbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRN
YXRyaXhkKGNvbnRleHQsIG0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0yNzIyLDcgKzI3MjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExvYWRNYXRyaXhmKGNvbnN0
IEdMZmxvYXQgKm0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVM
b2FkTWF0cml4Zihjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMjczOSw3ICsyNzM5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMb2FkTmFtZShHTHVp
bnQgbmFtZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRO
YW1lKGNvbnRleHQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0yNzU3LDggKzI3NTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIExvZ2ljT3AoR0xlbnVtIG9w
Y29kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTG9naWNhbE9wZXJhdGlv
biBvcGNvZGVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPExvZ2ljYWxPcGVyYXRpb24+
KG9wY29kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBMb2dpY2FsT3Bl
cmF0aW9uIG9wY29kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMb2dp
Y2FsT3BlcmF0aW9uPihvcGNvZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVMb2dpY09wKGNvbnRleHQsIG9wY29kZVBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI3ODAsOCArMjc4MCw4IEBAIE1hcDFkKEdMZW51
bSB0YXJnZXQsIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MiwgR0xpbnQgc3RyaWRlLCBHTGludCBv
cmRlciwgY29uc3QKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU1hcDFkKGNvbnRleHQsIHRhcmdl
dCwgdTEsIHUyLCBzdHJpZGUsIG9yZGVyLCBwb2ludHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0yODAzLDggKzI4MDMsOCBAQCBNYXAxZihHTGVudW0gdGFyZ2V0
LCBHTGZsb2F0IHUxLCBHTGZsb2F0IHUyLCBHTGludCBzdHJpZGUsIEdMaW50IG9yZGVyLCBjb25z
dCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTWFwMWYoY29udGV4dCwgdGFyZ2V0LCB1MSwg
dTIsIHN0cmlkZSwgb3JkZXIsIHBvaW50cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTI4MzUsNyArMjgzNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWFwMmQoR0xl
bnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVNYXAyZChjb250ZXh0LCB0YXJnZXQsIHUxLCB1MiwgdXN0cmlkZSwgdW9yZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2MSwgdjIsIHZzdHJpZGUsIHZvcmRlciwgcG9pbnRzKSk7CkBAIC0yODY5LDcgKzI4NjksNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIE1hcDJmKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwMmYoY29udGV4dCwgdGFy
Z2V0LCB1MSwgdTIsIHVzdHJpZGUsIHVvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjEsIHYyLCB2c3RyaWRlLCB2b3JkZXIsIHBv
aW50cykpOwpAQCAtMjg5MCw3ICsyODkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNYXBHcmlkMWQo
R0xpbnQgdW4sIEdMZG91YmxlIHUxLCBHTGRvdWJsZSB1MikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hcEdyaWQxZChjb250ZXh0LCB1biwgdTEsIHUyKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjkwOCw3ICsyOTA4LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBNYXBHcmlkMWYoR0xpbnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQg
dTIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXBHcmlkMWYo
Y29udGV4dCwgdW4sIHUxLCB1MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTI5MjgsNyArMjkyOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWFwR3JpZDJkKEdMaW50
IHVuLCBHTGRvdWJsZSB1MSwgR0xkb3VibGUgdTIsIEdMaW50IHZuLCBHTGRvdWJsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwR3JpZDJk
KGNvbnRleHQsIHVuLCB1MSwgdTIsIHZuLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMjk0OSw3ICsyOTQ5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNYXBHcmlkMmYoR0xp
bnQgdW4sIEdMZmxvYXQgdTEsIEdMZmxvYXQgdTIsIEdMaW50IHZuLCBHTGZsb2F0IHYKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXBHcmlk
MmYoY29udGV4dCwgdW4sIHUxLCB1Miwgdm4sIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0yOTY5LDggKzI5NjksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsZihH
TGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVNYXRlcmlhbGYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTI5OTMsOCArMjk5Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
TWF0ZXJpYWxmdihHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJh
bXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4o
cG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTWF0ZXJpYWxQYXJh
bWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJp
YWxQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdGVyaWFsZnYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNr
ZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMDE0LDcgKzMwMTQs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsaShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVNYXRlcmlhbGkoY29udGV4dCwgZmFjZSwgcG5hbWUsIHBhcmFtKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTWF0ZXJpYWxpdihHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAq
cGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU1hdGVyaWFsaXYoY29udGV4dCwgZmFjZSwgcG5hbWUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMDU1LDggKzMwNTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IE1hdHJpeE1vZGUoR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIE1hdHJpeFR5cGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxNYXRyaXhUeXBlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IE1hdHJpeFR5cGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPE1hdHJpeFR5cGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVNYXRyaXhNb2RlKGNvbnRleHQsIG1vZGVQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMDc0LDcgKzMwNzQsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIE11bHRNYXRyaXhkKGNvbnN0IEdMZG91YmxlICptKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdE1hdHJpeGQoY29udGV4dCwgbSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMwOTIsNyArMzA5Miw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTXVsdE1hdHJpeGYoY29uc3QgR0xmbG9hdCAqbSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRNYXRyaXhmKGNvbnRleHQsIG0pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMTEwLDcgKzMxMTAsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIE5ld0xpc3QoR0x1aW50IGxpc3QsIEdMZW51bSBtb2RlKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTmV3TGlzdChjb250ZXh0LCBs
aXN0LCBtb2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzEy
OCw3ICszMTI4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwzYihHTGJ5dGUgbngsIEdMYnl0
ZSBueSwgR0xieXRlIG56KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlTm9ybWFsM2IoY29udGV4dCwgbngsIG55LCBueikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTMxNDYsNyArMzE0Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTm9y
bWFsM2J2KGNvbnN0IEdMYnl0ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU5vcm1hbDNidihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3Jt
YWwzZChHTGRvdWJsZSBueCwgR0xkb3VibGUgbnksIEdMZG91YmxlIG56KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTm9ybWFsM2QoY29udGV4dCwgbngsIG55LCBu
eikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMxODIsNyArMzE4
Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTm9ybWFsM2R2KGNvbnN0IEdMZG91YmxlICp2KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTm9ybWFsM2R2KGNvbnRleHQs
IHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMjAwLDcgKzMy
MDAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE5vcm1hbDNmKEdMZmxvYXQgbngsIEdMZmxvYXQgbnks
IEdMZmxvYXQgbnopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVO
b3JtYWwzZihjb250ZXh0LCBueCwgbnksIG56KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMzIxOCw3ICszMjE4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwz
ZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU5vcm1hbDNmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMzIzNiw3ICszMjM2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwz
aShHTGludCBueCwgR0xpbnQgbnksIEdMaW50IG56KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlTm9ybWFsM2koY29udGV4dCwgbngsIG55LCBueikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMyNTQsNyArMzI1NCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgTm9ybWFsM2l2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTm9ybWFsM2l2KGNvbnRleHQsIHYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMjcyLDcgKzMyNzIsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIE5vcm1hbDNzKEdMc2hvcnQgbngsIEdMc2hvcnQgbnksIEdMc2hvcnQgbnopCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWwzcyhjb250ZXh0
LCBueCwgbnksIG56KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzI5MCw3ICszMjkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwzc3YoY29uc3QgR0xzaG9y
dCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDNz
dihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzMxMSw4ICszMzExLDggQEAgT3J0aG8oR0xkb3VibGUgbGVmdCwgR0xkb3VibGUgcmlnaHQsIEdM
ZG91YmxlIGJvdHRvbSwgR0xkb3VibGUgdG9wLCBHTGRvdWJsZSB6TmUKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZU9ydGhvKGNvbnRleHQsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHRvcCwgek5lYXIs
IHpGYXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMzI5LDcg
KzMzMjksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBhc3NUaHJvdWdoKEdMZmxvYXQgdG9rZW4pCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQYXNzVGhyb3VnaChjb250
ZXh0LCB0b2tlbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMz
NDksNyArMzM0OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxNYXBmdihHTGVudW0gbWFwLCBH
THNpemVpIG1hcHNpemUsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbE1hcGZ2KGNvbnRleHQs
IG1hcCwgbWFwc2l6ZSwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMz
NzEsNyArMzM3MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxNYXB1aXYoR0xlbnVtIG1hcCwg
R0xzaXplaSBtYXBzaXplLCBjb25zdCBHTHVpbnQgKnZhbHVlcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQaXhlbE1hcHVpdihjb250ZXh0
LCBtYXAsIG1hcHNpemUsIHZhbHVlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0z
MzkyLDcgKzMzOTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBpeGVsTWFwdXN2KEdMZW51bSBtYXAs
IEdMc2l6ZWkgbWFwc2l6ZSwgY29uc3QgR0x1c2hvcnQgKnZhbHVlcwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBpeGVsTWFwdXN2KGNvbnRl
eHQsIG1hcCwgbWFwc2l6ZSwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTM0MTEsNyArMzQxMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxTdG9yZWYoR0xlbnVtIHBu
YW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVBpeGVsU3RvcmVmKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNDMwLDcgKzM0MzAsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFBpeGVsU3RvcmVpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGl4ZWxTdG9yZWko
Y29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM0
NDksNyArMzQ0OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxUcmFuc2ZlcmYoR0xlbnVtIHBu
YW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVBpeGVsVHJhbnNmZXJmKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNDY4LDcgKzM0NjgsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFBpeGVsVHJhbnNmZXJpKEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGl4ZWxU
cmFuc2ZlcmkoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTM0ODcsNyArMzQ4Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxab29tKEdMZmxv
YXQgeGZhY3RvciwgR0xmbG9hdCB5ZmFjdG9yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBpeGVsWm9vbShjb250ZXh0LCB4ZmFjdG9yLCB5
ZmFjdG9yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM1MDUsNyArMzUwNSw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRTaXplKEdMZmxvYXQgc2l6ZSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50U2l6ZShjb250ZXh0LCBzaXplKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzUyNCw3ICszNTI0LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBQb2x5Z29uTW9kZShHTGVudW0gZmFjZSwgR0xlbnVtIG1vZGUpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2x5Z29uTW9kZShjb250
ZXh0LCBmYWNlLCBtb2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMzU0Miw3ICszNTQyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb2x5Z29uU3RpcHBsZShjb25z
dCBHTHVieXRlICptYXNrKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlUG9seWdvblN0aXBwbGUoY29udGV4dCwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTM1NTksNyArMzU1OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9w
QXR0cmliKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcEF0
dHJpYihjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzU3Niw3ICszNTc2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb3BNYXRyaXgoKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9wTWF0cml4KGNvbnRleHQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNTkzLDcgKzM1OTMsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFBvcE5hbWUoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlUG9wTmFtZShjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMzYxMSw3ICszNjExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQdXNoQXR0
cmliKEdMYml0ZmllbGQgbWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVB1c2hBdHRyaWIoY29udGV4dCwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTM2MjgsNyArMzYyOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHVz
aE1hdHJpeCgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQdXNo
TWF0cml4KGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0zNjQ1LDcgKzM2NDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFB1c2hOYW1lKEdMdWludCBuYW1l
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUHVzaE5hbWUoY29u
dGV4dCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM2
NjIsNyArMzY2Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zMmQoR0xkb3VibGUgeCwg
R0xkb3VibGUgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJh
c3RlclBvczJkKGNvbnRleHQsIHgsIHkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0zNjgwLDcgKzM2ODAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczJk
dihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVJhc3RlclBvczJkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMzY5Nyw3ICszNjk3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0
ZXJQb3MyZihHTGZsb2F0IHgsIEdMZmxvYXQgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVJhc3RlclBvczJmKGNvbnRleHQsIHgsIHkpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNzE1LDcgKzM3MTUsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFJhc3RlclBvczJmdihjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zMmZ2KGNvbnRleHQsIHYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNzMyLDcgKzM3MzIsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFJhc3RlclBvczJpKEdMaW50IHgsIEdMaW50IHkpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3MyaShjb250ZXh0LCB4LCB5KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzc1MCw3ICszNzUwLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MyaXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3MyaXYoY29udGV4dCwg
dikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM3NjcsNyArMzc2
Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zMnMoR0xzaG9ydCB4LCBHTHNob3J0IHkp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3Mycyhj
b250ZXh0LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
Mzc4NSw3ICszNzg1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3Myc3YoY29uc3QgR0xz
aG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3Rl
clBvczJzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMzgwMyw3ICszODAzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MzZChHTGRv
dWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zM2QoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4MjEsNyArMzgyMSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUmFzdGVyUG9zM2R2KGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zM2R2KGNvbnRleHQsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zODM5LDcgKzM4MzksNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczNmKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZs
b2F0IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQ
b3MzZihjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMzg1Nyw3ICszODU3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3MzZnYo
Y29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVJhc3RlclBvczNmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMzg3NSw3ICszODc1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQ
b3MzaShHTGludCB4LCBHTGludCB5LCBHTGludCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zM2koY29udGV4dCwgeCwgeSwgeikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM4OTMsNyArMzg5Myw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUmFzdGVyUG9zM2l2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zM2l2KGNvbnRleHQsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zOTExLDcgKzM5MTEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczNzKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0
IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3Mz
cyhjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMzkyOSw3ICszOTI5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3Mzc3YoY29u
c3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVJhc3RlclBvczNzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMzk0OCw3ICszOTQ4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSYXN0ZXJQb3M0
ZChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6LCBHTGRvdWJsZSB3KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zNGQoY29udGV4dCwg
eCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM5
NjYsNyArMzk2Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zNGR2KGNvbnN0IEdMZG91
YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVy
UG9zNGR2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0zOTg1LDcgKzM5ODUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczRmKEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJhc3RlclBvczRmKGNvbnRleHQsIHgsIHksIHosIHcp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MDAzLDcgKzQwMDMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczRmdihjb25zdCBHTGZsb2F0ICp2KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9zNGZ2KGNvbnRl
eHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MDIxLDcg
KzQwMjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJhc3RlclBvczRpKEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHosIEdMaW50IHcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVSYXN0ZXJQb3M0aShjb250ZXh0LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBSYXN0ZXJQb3M0aXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVSYXN0ZXJQb3M0aXYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQwNTgsNyArNDA1OCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUmFzdGVyUG9zNHMoR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeiwgR0xzaG9y
dCB3KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmFzdGVyUG9z
NHMoY29udGV4dCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTQwNzYsNyArNDA3Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmFzdGVyUG9zNHN2
KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVSYXN0ZXJQb3M0c3YoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTQwOTQsNyArNDA5NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVhZEJ1
ZmZlcihHTGVudW0gc3JjKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlUmVhZEJ1ZmZlcihjb250ZXh0LCBzcmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC00MTIxLDggKzQxMjEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlYWRQaXhl
bHMoR0xpbnQgeCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVJlYWRQaXhlbHMoY29udGV4dCwg
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MTQxLDcgKzQxNDEsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFJlY3RkKEdMZG91YmxlIHgxLCBHTGRvdWJsZSB5MSwgR0xkb3VibGUgeDIsIEdMZG91
YmxlIHkyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVjdGQo
Y29udGV4dCwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC00MTYxLDcgKzQxNjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlY3Rkdihjb25z
dCBHTGRvdWJsZSAqdjEsIGNvbnN0IEdMZG91YmxlICp2MikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlY3Rkdihjb250ZXh0LCB2MSwgdjIpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MTgwLDcgKzQxODAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFJlY3RmKEdMZmxvYXQgeDEsIEdMZmxvYXQgeTEsIEdMZmxvYXQgeDIsIEdMZmxv
YXQgeTIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWN0Zihj
b250ZXh0LCB4MSwgeTEsIHgyLCB5MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTQyMDAsNyArNDIwMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVjdGZ2KGNvbnN0
IEdMZmxvYXQgKnYxLCBjb25zdCBHTGZsb2F0ICp2MikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVJlY3Rmdihjb250ZXh0LCB2MSwgdjIpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MjE4LDcgKzQyMTgsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFJlY3RpKEdMaW50IHgxLCBHTGludCB5MSwgR0xpbnQgeDIsIEdMaW50IHkyKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVjdGkoY29udGV4dCwgeDEs
IHkxLCB4MiwgeTIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00
MjM3LDcgKzQyMzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlY3Rpdihjb25zdCBHTGludCAqdjEs
IGNvbnN0IEdMaW50ICp2MikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVJlY3Rpdihjb250ZXh0LCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC00MjU2LDcgKzQyNTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlY3RzKEdM
c2hvcnQgeDEsIEdMc2hvcnQgeTEsIEdMc2hvcnQgeDIsIEdMc2hvcnQgeTIpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWN0cyhjb250ZXh0LCB4MSwgeTEsIHgy
LCB5MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQyNzYsNyAr
NDI3Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVjdHN2KGNvbnN0IEdMc2hvcnQgKnYxLCBjb25z
dCBHTHNob3J0ICp2MikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVJlY3Rzdihjb250ZXh0LCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC00Mjk1LDcgKzQyOTUsNyBAQCBHTGludCBHTF9BUElFTlRSWSBSZW5kZXJNb2Rl
KEdMZW51bSBtb2RlKQogICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJlbmRlck1vZGUoY29udGV4dCwgbW9kZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQzMjMsNyArNDMyMyw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUm90YXRlZChHTGRvdWJsZSBhbmdsZSwgR0xkb3VibGUgeCwgR0xkb3VibGUg
eSwgR0xkb3VibGUgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVJvdGF0ZWQoY29udGV4dCwgYW5nbGUsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00MzQyLDcgKzQzNDIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJv
dGF0ZWYoR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJvdGF0ZWYoY29udGV4dCwg
YW5nbGUsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC00MzYwLDcgKzQzNjAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNjYWxlZChHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlU2NhbGVkKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00Mzc4LDcgKzQzNzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNj
YWxlZihHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2NhbGVmKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00Mzk3LDcgKzQzOTcsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFNjaXNzb3IoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlU2Npc3Nvcihjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ0MTYsNyArNDQxNiw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU2VsZWN0QnVmZmVyKEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpidWZmZXIpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2VsZWN0QnVmZmVy
KGNvbnRleHQsIHNpemUsIGJ1ZmZlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00
NDM1LDggKzQ0MzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFNoYWRlTW9kZWwoR0xlbnVtIG1vZGUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRpbmdNb2RlbCBtb2RlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkaW5nTW9kZWw+KG1vZGUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGluZ01vZGVsIG1vZGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGluZ01vZGVsPiht
b2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2hhZGVN
b2RlbChjb250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNDQ1NCw3ICs0NDU0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRnVu
YyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsRnVuYyhjb250ZXh0
LCBmdW5jLCByZWYsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDQ3Miw3
ICs0NDcyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsTWFzayhHTHVpbnQgbWFzaykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxNYXNrKGNvbnRl
eHQsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NDky
LDcgKzQ0OTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxPcChHTGVudW0gZmFpbCwgR0xl
bnVtIHpmYWlsLCBHTGVudW0genBhc3MpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU3RlbmNpbE9wKGNvbnRleHQsIGZhaWwsIHpmYWlsLCB6
cGFzcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NTEwLDcgKzQ1MTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMWQoR0xkb3VibGUgcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMWQoY29udGV4dCwgcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ1MjgsNyArNDUyOCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVGV4Q29vcmQxZHYoY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFkdihjb250ZXh0LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDU0NSw3ICs0NTQ1LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDFmKEdMZmxvYXQgcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMWYoY29udGV4dCwgcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ1NjMsNyArNDU2Myw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVGV4Q29vcmQxZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMWZ2KGNvbnRleHQsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NTgwLDcgKzQ1ODAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMWkoR0xpbnQgcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMWkoY29udGV4dCwgcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ1OTgsNyArNDU5OCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4Q29vcmQxaXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDFpdihjb250ZXh0LCB2KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDYxNSw3ICs0NjE1LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBUZXhDb29yZDFzKEdMc2hvcnQgcykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMXMoY29udGV4dCwgcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ2MzMsNyArNDYzMyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVGV4Q29vcmQxc3YoY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMXN2KGNvbnRleHQsIHYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NjUwLDcgKzQ2NTAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFRleENvb3JkMmQoR0xkb3VibGUgcywgR0xkb3VibGUgdCkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkMmQoY29udGV4dCwgcywgdCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ2NjgsNyArNDY2OCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQyZHYoY29uc3QgR0xkb3VibGUgKnYpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDJkdihjb250ZXh0
LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDY4NSw3ICs0
Njg1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDJmKEdMZmxvYXQgcywgR0xmbG9hdCB0
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQyZihj
b250ZXh0LCBzLCB0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NDcwMyw3ICs0NzAzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDJmdihjb25zdCBHTGZs
b2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29v
cmQyZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTQ3MjAsNyArNDcyMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQyaShHTGludCBz
LCBHTGludCB0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4
Q29vcmQyaShjb250ZXh0LCBzLCB0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNDczOCw3ICs0NzM4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDJpdihj
b25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVRleENvb3JkMml2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC00NzU1LDcgKzQ3NTUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkMnMo
R0xzaG9ydCBzLCBHTHNob3J0IHQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVUZXhDb29yZDJzKGNvbnRleHQsIHMsIHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00NzczLDcgKzQ3NzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eENvb3JkMnN2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVUZXhDb29yZDJzdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNDc5MSw3ICs0NzkxLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBUZXhDb29yZDNkKEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlIHIpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29yZDNkKGNvbnRleHQsIHMs
IHQsIHIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00ODA5LDcg
KzQ4MDksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkM2R2KGNvbnN0IEdMZG91YmxlICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQzZHYo
Y29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ4
MjcsNyArNDgyNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQzZihHTGZsb2F0IHMsIEdM
ZmxvYXQgdCwgR0xmbG9hdCByKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVGV4Q29vcmQzZihjb250ZXh0LCBzLCB0LCByKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNDg0NSw3ICs0ODQ1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBU
ZXhDb29yZDNmdihjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVGV4Q29vcmQzZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ4NjMsNyArNDg2Myw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVGV4Q29vcmQzaShHTGludCBzLCBHTGludCB0LCBHTGludCByKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmQzaShjb250ZXh0LCBzLCB0LCByKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDg4MSw3ICs0ODgxLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDNpdihjb25zdCBHTGludCAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkM2l2KGNvbnRleHQsIHYp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00ODk5LDcgKzQ4OTks
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkM3MoR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdM
c2hvcnQgcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENv
b3JkM3MoY29udGV4dCwgcywgdCwgcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTQ5MTcsNyArNDkxNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQzc3Yo
Y29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVRleENvb3JkM3N2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC00OTM2LDcgKzQ5MzYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3Jk
NGQoR0xkb3VibGUgcywgR0xkb3VibGUgdCwgR0xkb3VibGUgciwgR0xkb3VibGUgcSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkNGQoY29udGV4dCwg
cywgdCwgciwgcSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ5
NTQsNyArNDk1NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQ0ZHYoY29uc3QgR0xkb3Vi
bGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhDb29y
ZDRkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtNDk3Myw3ICs0OTczLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZDRmKEdMZmxvYXQg
cywgR0xmbG9hdCB0LCBHTGZsb2F0IHIsIEdMZmxvYXQgcSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkNGYoY29udGV4dCwgcywgdCwgciwgcSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ5OTEsNyArNDk5MSw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQ0ZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkNGZ2KGNvbnRleHQsIHYp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01MDA5LDcgKzUwMDks
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkNGkoR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQg
ciwgR0xpbnQgcSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRl
eENvb3JkNGkoY29udGV4dCwgcywgdCwgciwgcSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTUwMjcsNyArNTAyNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29v
cmQ0aXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVUZXhDb29yZDRpdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNTA0Niw3ICs1MDQ2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhD
b29yZDRzKEdMc2hvcnQgcywgR0xzaG9ydCB0LCBHTHNob3J0IHIsIEdMc2hvcnQgcSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkNHMoY29udGV4dCwg
cywgdCwgciwgcSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTUw
NjQsNyArNTA2NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmQ0c3YoY29uc3QgR0xzaG9y
dCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3Jk
NHN2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC01MDgzLDEwICs1MDgzLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4RW52ZihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52
UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBh
cmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZmKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNTEwNywxMCArNTEwNywxMCBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleEVudmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52VGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdl
dD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJh
bWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVF
bnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4RW52ZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBh
Y2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NTEyOSwxMCArNTEyOSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEVudmkoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJh
bWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1l
dGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwor
ICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudmkoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC01MTU0LDEwICs1MTU0LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkg
VGV4RW52aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1z
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFy
Z2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1
cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJh
bWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4RW52aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTE3Niw3
ICs1MTc2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhHZW5kKEdMZW51bSBjb29yZCwgR0xlbnVt
IHBuYW1lLCBHTGRvdWJsZSBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5kKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTE5OCw3ICs1MTk4LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhHZW5kdihHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xkb3VibGUgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5kdihjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01MjE4LDcgKzUyMTgsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFRleEdlbmYoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVGV4R2VuZihjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTUyNDEsNyArNTI0MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4R2Vu
ZnYoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhH
ZW5mdihjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC01MjYxLDcgKzUyNjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEdlbmkoR0xl
bnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleEdlbmkoY29udGV4dCwgY29v
cmQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01MjgzLDcg
KzUyODMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEdlbml2KEdMZW51bSBjb29yZCwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleEdlbml2KGNvbnRleHQsIGNvb3JkLCBwbmFt
ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUzMTQsNyArNTMxNCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UxRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleEltYWdlMUQo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKQEAgLTUzNDgsOSArNTM0OCw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTM3Myw5ICs1MzczLDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBUZXhQYXJhbWV0ZXJmKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcmYoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC01Mzk2LDkgKzUzOTYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAq
cGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyZnYoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNTQxOCw5ICs1NDE4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBU
ZXhQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNTQ0Miw5ICs1NDQyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0
ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcml2KGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTU0NjIsNyArNTQ2Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVHJhbnNsYXRl
ZChHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVHJhbnNsYXRlZChjb250ZXh0LCB4LCB5LCB6KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTQ4MCw3ICs1NDgwLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBUcmFuc2xhdGVmKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUcmFuc2xhdGVm
KGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC01NDk3LDcgKzU0OTcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDJkKEdMZG91Ymxl
IHgsIEdMZG91YmxlIHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVWZXJ0ZXgyZChjb250ZXh0LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNTUxNSw3ICs1NTE1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXgyZHYo
Y29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXgyZHYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTU1MzIsNyArNTUzMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4MmYo
R0xmbG9hdCB4LCBHTGZsb2F0IHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXgyZihjb250ZXh0LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNTU1MCw3ICs1NTUwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXgyZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVZlcnRleDJmdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNTU2Nyw3ICs1NTY3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXgyaShHTGludCB4LCBHTGludCB5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4MmkoY29udGV4dCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTU1ODUsNyArNTU4NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4Mml2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4Mml2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC01NjAyLDcgKzU2MDIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eDJzKEdMc2hvcnQgeCwgR0xzaG9ydCB5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVmVydGV4MnMoY29udGV4dCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTU2MjAsNyArNTYyMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VmVydGV4MnN2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVWZXJ0ZXgyc3YoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTU2MzgsNyArNTYzOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VmVydGV4M2QoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDNkKGNvbnRleHQsIHgsIHksIHop
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01NjU2LDcgKzU2NTYs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDNkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDNkdihjb250ZXh0LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTY3NCw3ICs1Njc0
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXgzZihHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4
M2YoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTU2OTIsNyArNTY5Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4M2Z2KGNvbnN0
IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXgzZnYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTU3MTAsNyArNTcxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4M2koR0xpbnQg
eCwgR0xpbnQgeSwgR0xpbnQgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVZlcnRleDNpKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC01NzI4LDcgKzU3MjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZl
cnRleDNpdihjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVZlcnRleDNpdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNTc0Niw3ICs1NzQ2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXgzcyhHTHNob3J0IHgsIEdMc2hvcnQgeSwgR0xzaG9ydCB6KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4M3MoY29udGV4dCwgeCwgeSwgeikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU3NjQsNyArNTc2NCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4M3N2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXgzc3YoY29udGV4dCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU3ODMsNyArNTc4Myw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4NGQoR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUg
eiwgR0xkb3VibGUgdykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleDRkKGNvbnRleHQsIHgsIHksIHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC01ODAxLDcgKzU4MDEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eDRkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVZlcnRleDRkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNTgyMCw3ICs1ODIwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXg0ZihHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXg0Zihjb250ZXh0LCB4LCB5
LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTgzOCw3
ICs1ODM4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXg0ZnYoY29uc3QgR0xmbG9hdCAqdikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDRmdihjb250
ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTg1Niw3
ICs1ODU2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXg0aShHTGludCB4LCBHTGludCB5LCBH
TGludCB6LCBHTGludCB3KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4NGkoY29udGV4dCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTU4NzQsNyArNTg3NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4NGl2KGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVmVydGV4NGl2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC01ODkzLDcgKzU4OTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eDRzKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgdykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleDRzKGNvbnRleHQsIHgsIHks
IHosIHcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01OTExLDcg
KzU5MTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleDRzdihjb25zdCBHTHNob3J0ICp2KQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4NHN2KGNvbnRl
eHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01OTMwLDcg
KzU5MzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZpZXdwb3J0KGNvbnRleHQsIHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8xXzFfYXV0b2dlbi5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFf
MV9hdXRvZ2VuLmNwcAppbmRleCA4YjM1MDAzNmVjMjgwOTI0ZmRiOTNmZDFhMDgzOTkyZWNkMjVl
NDA3Li5hOTZkNTgzM2RiNDcyNDIxZjYzNGNjNWY0ZDdjYmIwZmNjZDA4YjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMV9h
dXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlf
cG9pbnRzX2dsXzFfMV9hdXRvZ2VuLmNwcApAQCAtMzgsOCArMzgsOCBAQCBHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgQXJlVGV4dHVyZXNSZXNpZGVudChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4
dHVyZXMsIEdMYgogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVBcmVUZXh0dXJlc1Jlc2lkZW50KGNvbnRleHQsIG4sIHRleHR1cmVzLCByZXNpZGVuY2Vz
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEFycmF5RWxlbWVudChHTGludCBpKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQXJyYXlFbGVtZW50KGNvbnRleHQsIGkpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NCwxMCArODQsMTAgQEAgdm9p
ZCBHTF9BUElFTlRSWSBCaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwot
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kVGV4dHVyZShjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xv
clBvaW50ZXIoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2
b2kKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0
eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5
cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvbG9yUG9pbnRlcihj
b250ZXh0LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBDb3B5VGV4SW1hZ2UxRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleElt
YWdlMUQoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRo
LCBib3JkZXIpKTsKQEAgLTE2OCw5ICsxNjgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQ29weVRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTk1LDcgKzE5NSw3IEBAIENvcHlUZXhTdWJJbWFnZTFEKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRh
dGVDb3B5VGV4U3ViSW1hZ2UxRChjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB4LCB5
LCB3aWR0aCkpOwpAQCAtMjI1LDkgKzIyNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleFN1
YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0yNDgsOCArMjQ4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVUZXh0dXJlcyhH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGNvbnN0IFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAg
ICA9IEZyb21HTDxjb25zdCBUZXh0dXJlSUQgKj4odGV4dHVyZXMpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlEICo+KHRleHR1cmVzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURlbGV0ZVRleHR1cmVzKGNvbnRleHQsIG4sIHRleHR1cmVzUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTI2OCw4ICsyNjgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc2Fi
bGVDbGllbnRTdGF0ZShHTGVudW0gYXJyYXkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCAgICAgICAgICAgICA9IEZy
b21HTDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFycmF5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIENsaWVudFZlcnRleEFycmF5VHlwZSBhcnJheVBhY2tlZCA9IEZyb21H
TDxDbGllbnRWZXJ0ZXhBcnJheVR5cGU+KGFycmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVDbGllbnRTdGF0ZShjb250
ZXh0LCBhcnJheVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yODgsOCAr
Mjg4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBm
aXJzdCwgR0xzaXplaSBjb3VudCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBy
aW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3QXJyYXlzKGNvbnRleHQsIG1vZGVQYWNr
ZWQsIGZpcnN0LCBjb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMTEsMTAg
KzMxMSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5
cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBl
Pih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBE
cmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnRleHQsIG1vZGVQYWNr
ZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMzMzLDcgKzMzMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRWRnZUZs
YWdQb2ludGVyKEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVkZ2VGbGFnUG9p
bnRlcihjb250ZXh0LCBzdHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMzUyLDggKzM1Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlQ2xpZW50U3RhdGUo
R0xlbnVtIGFycmF5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBDbGllbnRW
ZXJ0ZXhBcnJheVR5cGUgYXJyYXlQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8Q2xpZW50VmVy
dGV4QXJyYXlUeXBlPihhcnJheSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlQYWNrZWQgPSBGcm9tR0w8Q2xpZW50VmVydGV4
QXJyYXlUeXBlPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmFibGVDbGllbnRTdGF0ZShjb250ZXh0LCBhcnJheVBhY2tl
ZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNzIsOCArMzcyLDggQEAgdm9pZCBH
TF9BUElFTlRSWSBHZW5UZXh0dXJlcyhHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQgKj4odGV4dHVyZXMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEICo+KHRleHR1
cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdlblRleHR1cmVzKGNvbnRleHQsIG4sIHRleHR1cmVzUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFBvaW50ZXJ2KEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQb2ludGVydihjb250ZXh0
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQxNSw3ICs0
MTUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEluZGV4UG9pbnRlcihHTGVudW0gdHlwZSwgR0xzaXpl
aSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5kZXhQb2ludGVyKGNvbnRleHQsIHR5cGUs
IHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MzMsNyAr
NDMzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbmRleHViKEdMdWJ5dGUgYykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUluZGV4dWIoY29udGV4dCwgYykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ1MSw3ICs0NTEsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEluZGV4dWJ2KGNvbnN0IEdMdWJ5dGUgKmMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbmRleHVidihjb250ZXh0LCBjKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDcyLDggKzQ3Miw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgSW50ZXJsZWF2ZWRBcnJheXMoR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzdHJpZGUs
IGNvbnN0IHZvaWQgKnBvCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJbnRlcmxlYXZlZEFycmF5
cyhjb250ZXh0LCBmb3JtYXQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTQ5MSw4ICs0OTEsOCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5U
UlkgSXNUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNUZXh0dXJl
KGNvbnRleHQsIHRleHR1cmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC01MjMsOSArNTIzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWxQb2ludGVy
KEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU5vcm1hbFBvaW50ZXIoY29udGV4dCwg
dHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9seWdvbk9m
ZnNldChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0KGNvbnRleHQs
IGZhY3RvciwgdW5pdHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9wQ2xpZW50QXR0cmliKCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcENsaWVudEF0dHJpYihjb250ZXh0KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTgxLDggKzU4MSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUHJpb3JpdGl6ZVRleHR1cmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICp0ZXh0dXJlcywgY29uc3QgR0xmCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcmlvcml0aXpl
VGV4dHVyZXMoY29udGV4dCwgbiwgdGV4dHVyZXMsIHByaW9yaXRpZXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBQdXNoQ2xpZW50QXR0cmliKEdMYml0ZmllbGQgbWFzaykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVB1c2hDbGllbnRBdHRyaWIoY29udGV4dCwgbWFzaykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYyMSw5ICs2MjEsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleENvb3JkUG9pbnRlcihHTGludCBzaXplLCBHTGVudW0gdHlw
ZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5
cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVUZXhDb29yZFBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRl
LCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjUx
LDcgKzY1MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UxRChHTGVudW0gdGFyZ2V0
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4U3ViSW1hZ2UxRChjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB3aWR0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKQEAgLTY4NSw5ICs2ODUsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdWJJbWFnZTJEKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcxMSw5ICs3MTEsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIFZlcnRleFBvaW50ZXIoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgc3RyaWRlLCBjb25zdCB2bwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBW
ZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVmVydGV4UG9pbnRlcihjb250ZXh0LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50
ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfMl9hdXRv
Z2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNf
Z2xfMV8yX2F1dG9nZW4uY3BwCmluZGV4IDQwMWQ0MWFhMjExZDhmODE2MjcyYWJmOTY5OGM0Njkw
MWI3YzNhYjYuLjg5YzI5MTQxOTI4MDViOWNmMzE5NTY2NzAyMDQxZjE0MGE5ZjQ4ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xf
MV8yX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9l
bnRyeV9wb2ludHNfZ2xfMV8yX2F1dG9nZW4uY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgQ29weVRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03OCw5ICs3OCw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1l
bnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50
c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5
cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpKTsKQEAgLTExNSw5ICsxMTUs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlM0QoR0xlbnVtIHRhcmdldCwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJbWFnZTNEKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQs
IHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNTMsOCArMTUz
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV8zX2F1dG9n
ZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19n
bF8xXzNfYXV0b2dlbi5jcHAKaW5kZXggZjQ0NDNlYzVhZTBjOWM2YjAzOTk5ZjQzNDRjOGNkNjU2
YzMwMzlhOC4uYmEzOWNhYmQyZmQ0NjI1MTMyOGJiOTBjMmI3OTU3MDQxMzY3NWVhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8x
XzNfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8xXzNfYXV0b2dlbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBBY3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQWN0aXZlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTMsNyArNTMsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENsaWVudEFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xpZW50
QWN0aXZlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTgzLDggKzgzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4SW1hZ2Ux
RChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleElt
YWdlMUQoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgYm9y
ZGVyLCBpbWFnZVNpemUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTE3
LDggKzExNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdl
dCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC0x
NTQsOCArMTU0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4SW1hZ2UzRChHTGVu
dW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdl
dD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNE
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKQEAg
LTE4Nyw4ICsxODcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhTdWJJbWFnZTFE
KEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UxRChjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB3aWR0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCwgaW1hZ2VTaXplLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIyMiw4
ICsyMjIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMZW51
bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdl
MkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgs
CkBAIC0yNjEsOSArMjYxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdCwgaW1hZ2VTaXplLCBkYXRhKSk7CkBAIC0yODYsOCArMjg2LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRDb21wcmVzc2VkVGV4SW1hZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIHZv
aWQgKmltZykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldENvbXByZXNzZWRUZXhJbWFnZShj
b250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbWcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMb2FkVHJhbnNw
b3NlTWF0cml4ZChjb25zdCBHTGRvdWJsZSAqbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUxvYWRUcmFuc3Bvc2VNYXRyaXhkKGNvbnRleHQsIG0pKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBMb2FkVHJhbnNwb3NlTWF0cml4Zihjb25zdCBHTGZsb2F0ICptKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTG9hZFRyYW5zcG9zZU1hdHJpeGYo
Y29udGV4dCwgbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM0
MSw3ICszNDEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRUcmFuc3Bvc2VNYXRyaXhkKGNvbnN0
IEdMZG91YmxlICptKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TXVsdFRyYW5zcG9zZU1hdHJpeGQoY29udGV4dCwgbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRU
cmFuc3Bvc2VNYXRyaXhmKGNvbnN0IEdMZmxvYXQgKm0pCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0VHJhbnNwb3NlTWF0cml4Zihjb250ZXh0LCBtKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDFkKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TXVsdGlUZXhDb29yZDFkKGNvbnRleHQsIHRhcmdldCwgcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3Jk
MWR2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQxZHYoY29u
dGV4dCwgdGFyZ2V0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQxNiw3ICs0
MTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQxZihHTGVudW0gdGFyZ2V0LCBH
TGZsb2F0IHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFmKGNvbnRleHQsIHRhcmdldCwgcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0
aVRleENvb3JkMWZ2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDFmdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NDU1LDcgKzQ1NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDFpKEdMZW51bSB0
YXJnZXQsIEdMaW50IHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFpKGNvbnRleHQsIHRhcmdldCwgcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBNdWx0aVRleENvb3JkMWl2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMaW50ICp2KQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4
Q29vcmQxaXYoY29udGV4dCwgdGFyZ2V0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQxcyhHTGVu
dW0gdGFyZ2V0LCBHTHNob3J0IHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDFzKGNvbnRleHQsIHRhcmdldCwgcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBNdWx0aVRleENvb3JkMXN2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TXVsdGlUZXhDb29yZDFzdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29y
ZDJkKEdMZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDJk
KGNvbnRleHQsIHRhcmdldCwgcywgdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01
NTMsNyArNTUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkMmR2KEdMZW51bSB0
YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyZHYoY29udGV4dCwgdGFyZ2V0
LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQyZihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdM
ZmxvYXQgdCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVNdWx0aVRleENvb3JkMmYoY29udGV4dCwgdGFyZ2V0LCBzLCB0KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11
bHRpVGV4Q29vcmQyZnYoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENv
b3JkMmZ2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC02MTEsNyArNjExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkMmkoR0xlbnVt
IHRhcmdldCwgR0xpbnQgcywgR0xpbnQgdCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkMmkoY29udGV4dCwgdGFyZ2V0
LCBzLCB0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTYzMSw3ICs2MzEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQyaXYoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xp
bnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlTXVsdGlUZXhDb29yZDJpdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlU
ZXhDb29yZDJzKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0KQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29v
cmQycyhjb250ZXh0LCB0YXJnZXQsIHMsIHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDJzdihHTGVu
dW0gdGFyZ2V0LCBjb25zdCBHTHNob3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQyc3YoY29udGV4dCwgdGFy
Z2V0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY5MCw3ICs2OTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQzZChHTGVudW0gdGFyZ2V0LCBHTGRvdWJsZSBz
LCBHTGRvdWJsZSB0LCBHTGRvdWJsZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQzZChjb250ZXh0LCB0YXJnZXQsIHMs
IHQsIHIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzEwLDcgKzcxMCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDNkdihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGRv
dWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVNdWx0aVRleENvb3JkM2R2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0
aVRleENvb3JkM2YoR0xlbnVtIHRhcmdldCwgR0xmbG9hdCBzLCBHTGZsb2F0IHQsIEdMZmxvYXQg
cikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVNdWx0aVRleENvb3JkM2YoY29udGV4dCwgdGFyZ2V0LCBzLCB0LCByKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRp
VGV4Q29vcmQzZnYoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3Jk
M2Z2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03
NzAsNyArNzcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkM2koR0xlbnVtIHRh
cmdldCwgR0xpbnQgcywgR0xpbnQgdCwgR0xpbnQgcikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkM2koY29udGV4dCwg
dGFyZ2V0LCBzLCB0LCByKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc5MCw3ICs3
OTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQzaXYoR0xlbnVtIHRhcmdldCwg
Y29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDNpdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODEwLDcgKzgxMCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgTXVsdGlUZXhDb29yZDNzKEdMZW51bSB0YXJnZXQsIEdMc2hvcnQgcywgR0xzaG9ydCB0LCBH
THNob3J0IHIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTXVsdGlUZXhDb29yZDNzKGNvbnRleHQsIHRhcmdldCwgcywgdCwgcikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04MzAsNyArODMwLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBNdWx0aVRleENvb3JkM3N2KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlU
ZXhDb29yZDNzdihjb250ZXh0LCB0YXJnZXQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDRkKEdM
ZW51bSB0YXJnZXQsIEdMZG91YmxlIHMsIEdMZG91YmxlIHQsIEdMZG91YmxlCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29y
ZDRkKGNvbnRleHQsIHRhcmdldCwgcywgdCwgciwgcSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkNGR2
KEdMZW51bSB0YXJnZXQsIGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZHYoY29udGV4
dCwgdGFyZ2V0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5Miw3ICs4OTIs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQ0ZihHTGVudW0gdGFyZ2V0LCBHTGZs
b2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0Zihjb250ZXh0LCB0YXJn
ZXQsIHMsIHQsIHIsIHEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTEyLDcgKzkx
Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZDRmdihHTGVudW0gdGFyZ2V0LCBj
b25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0ZnYoY29udGV4dCwgdGFyZ2V0LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIE11bHRpVGV4Q29vcmQ0aShHTGVudW0gdGFyZ2V0LCBHTGludCBzLCBHTGludCB0LCBHTGlu
dCByLCBHTGludAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0aShjb250ZXh0LCB0YXJnZXQsIHMsIHQsIHIsIHEpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTUzLDcgKzk1Myw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTXVsdGlUZXhDb29yZDRpdihHTGVudW0gdGFyZ2V0LCBjb25zdCBHTGludCAqdikKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0
aVRleENvb3JkNGl2KGNvbnRleHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC05NzQsNyArOTc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkNHMo
R0xlbnVtIHRhcmdldCwgR0xzaG9ydCBzLCBHTHNob3J0IHQsIEdMc2hvcnQgciwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENv
b3JkNHMoY29udGV4dCwgdGFyZ2V0LCBzLCB0LCByLCBxKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTk5NCw3ICs5OTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQ0
c3YoR0xlbnVtIHRhcmdldCwgY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkNHN2KGNvbnRl
eHQsIHRhcmdldCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDEzLDcgKzEw
MTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZUNvdmVyYWdlKEdMZmxvYXQgdmFsdWUsIEdM
Ym9vbGVhbiBpbnZlcnQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2UoY29udGV4dCwgdmFsdWUsIGludmVydCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzFfNF9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV80X2F1dG9nZW4uY3Bw
CmluZGV4IDljNDZkZmZjYTk3YzJiOWIzZjA0YjBmYzk0NjJjYzk4OGFmZTU1YTAuLjlkMDdkZGZh
MDI5OTNkZGNiMzVmODM1YWE2NmRhOTYzNDdjMTg3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV80X2F1dG9nZW4uY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV80
X2F1dG9nZW4uY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRDb2xv
cihHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxl
bmRDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVh
dGlvbihHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUJsZW5kRXF1YXRpb24oY29udGV4dCwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1
bmNTZXBhcmF0ZShHTGVudW0gc2ZhY3RvclJHQiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZShjb250ZXh0LCBz
ZmFjdG9yUkdCLCBkZmFjdG9yUkdCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZmFjdG9yQWxwaGEsIGRmYWN0b3JB
bHBoYSkpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRm9nQ29vcmRQb2lu
dGVyKEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9nQ29v
cmRQb2ludGVyKGNvbnRleHQsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGb2dDb29y
ZGQoR0xkb3VibGUgY29vcmQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVGb2dDb29yZGQoY29udGV4dCwgY29vcmQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGb2dDb29y
ZGR2KGNvbnN0IEdMZG91YmxlICpjb29yZCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUZvZ0Nvb3JkZHYoY29udGV4dCwgY29vcmQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBGb2dDb29yZGYoR0xmbG9hdCBjb29yZCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUZvZ0Nvb3JkZihjb250ZXh0LCBjb29yZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEZvZ0Nvb3JkZnYoY29uc3QgR0xmbG9hdCAqY29vcmQpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dDb29yZGZ2KGNvbnRleHQsIGNvb3JkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjAyLDkgKzIwMiw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTXVsdGlEcmF3QXJyYXlzKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVN
b2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmlt
aXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3QXJyYXlzKGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0
LCBjb3VudCwgZHJhd2NvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMjMwLDkgKzIzMCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3RWxlbWVudHMo
R0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVN
b2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAg
ICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURy
YXdFbGVtZW50cyhjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNl
cywgZHJhd2NvdW50KSk7CkBAIC0yNTMsOCArMjUzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBQb2lu
dFBhcmFtZXRlcmYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihwbmFtZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2lu
dFBhcmFtZXRlcmYoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTI3NCw4ICsyNzQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFy
YW1ldGVyZnYoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVBvaW50UGFyYW1ldGVyZnYoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQ
b2ludFBhcmFtZXRlcmkoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmko
Y29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMx
NCw3ICszMTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFyYW1ldGVyaXYoR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyaXYoY29udGV4dCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMzQsNyArMzM0LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjNiKEdMYnl0ZSByZWQsIEdMYnl0ZSBncmVl
biwgR0xieXRlIGJsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzYihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM2J2KGNvbnN0IEdMYnl0ZSAqdikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM2J2KGNvbnRleHQs
IHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNzIsNyArMzcy
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjNkKEdMZG91YmxlIHJlZCwgR0xk
b3VibGUgZ3JlZW4sIEdMZG91YmxlIGJsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzZChjb250ZXh0LCByZWQs
IGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM5MSw3ICszOTEs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM2R2KGNvbnN0IEdMZG91YmxlICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29s
b3IzZHYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM2YoR0xm
bG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjNmKGNv
bnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
NDI5LDcgKzQyOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3IzZnYoY29uc3Qg
R0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNl
Y29uZGFyeUNvbG9yM2Z2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlD
b2xvcjNpKEdMaW50IHJlZCwgR0xpbnQgZ3JlZW4sIEdMaW50IGJsdWUpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3Iz
aShjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM2l2KGNv
bnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
U2Vjb25kYXJ5Q29sb3IzaXYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFy
eUNvbG9yM3MoR0xzaG9ydCByZWQsIEdMc2hvcnQgZ3JlZW4sIEdMc2hvcnQgYmx1ZSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRh
cnlDb2xvcjNzKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29s
b3Izc3YoY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3N2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBTZWNvbmRhcnlDb2xvcjN1YihHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBi
bHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yM3ViKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
U2Vjb25kYXJ5Q29sb3IzdWJ2KGNvbnN0IEdMdWJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZWNvbmRhcnlDb2xvcjN1YnYoY29udGV4dCwgdikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU2MSw3ICs1NjEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yM3VpKEdMdWludCByZWQsIEdMdWludCBncmVl
biwgR0x1aW50IGJsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWkoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01ODAsNyArNTgwLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjN1aXYoY29uc3QgR0x1aW50ICp2KQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3IzdWl2KGNvbnRl
eHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01OTksNyAr
NTk5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xvcjN1cyhHTHVzaG9ydCByZWQs
IEdMdXNob3J0IGdyZWVuLCBHTHVzaG9ydCBibHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yM3VzKGNvbnRleHQs
IHJlZCwgZ3JlZW4sIGJsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjE4LDcg
KzYxOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Vjb25kYXJ5Q29sb3IzdXN2KGNvbnN0IEdMdXNo
b3J0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Vjb25k
YXJ5Q29sb3IzdXN2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC02MzksOCArNjM5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTZWNvbmRhcnlDb2xv
clBvaW50ZXIoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlU2Vjb25kYXJ5Q29sb3JQb2ludGVyKGNvbnRleHQsIHNpemUsIHR5
cGUsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczJkKEdMZG91
YmxlIHgsIEdMZG91YmxlIHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVXaW5kb3dQb3MyZChjb250ZXh0LCB4LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2luZG93
UG9zMmR2KGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlV2luZG93UG9zMmR2KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBX
aW5kb3dQb3MyZihHTGZsb2F0IHgsIEdMZmxvYXQgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczJmKGNvbnRleHQsIHgsIHkpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBXaW5kb3dQb3MyZnYoY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczJmdihjb250ZXh0LCB2KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgV2luZG93UG9zMmkoR0xpbnQgeCwgR0xpbnQgeSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczJpKGNvbnRleHQsIHgsIHkpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03NDUsNyArNzQ1LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQb3MyaXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3MyaXYoY29udGV4dCwgdikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc2Miw3ICs3NjIsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczJzKEdMc2hvcnQgeCwgR0xzaG9ydCB5KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2luZG93UG9zMnMoY29udGV4
dCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc4MCw3
ICs3ODAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRvd1BvczJzdihjb25zdCBHTHNob3J0ICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlV2luZG93UG9zMnN2
KGNvbnRleHQsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03
OTgsNyArNzk4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQb3MzZChHTGRvdWJsZSB4LCBH
TGRvdWJsZSB5LCBHTGRvdWJsZSB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlV2luZG93UG9zM2QoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFdpbmRvd1BvczNkdihjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczNkdihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgV2luZG93UG9zM2YoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczNmKGNvbnRleHQs
IHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NTIs
NyArODUyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQb3MzZnYoY29uc3QgR0xmbG9hdCAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVdpbmRvd1BvczNm
dihjb250ZXh0LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
ODcwLDcgKzg3MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgV2luZG93UG9zM2koR0xpbnQgeCwgR0xp
bnQgeSwgR0xpbnQgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVdpbmRvd1BvczNpKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBXaW5kb3dQ
b3MzaXYoY29uc3QgR0xpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVXaW5kb3dQb3MzaXYoY29udGV4dCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFdpbmRv
d1BvczNzKEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHopCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3Mzcyhjb250ZXh0LCB4LCB5LCB6KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTI0LDcgKzkyNCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgV2luZG93UG9zM3N2KGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXaW5kb3dQb3Mzc3YoY29udGV4dCwg
dikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfMV81X2F1dG9n
ZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19n
bF8xXzVfYXV0b2dlbi5jcHAKaW5kZXggYjJiYWVmNzIwNWYzNTc2MjEwMmQ1NWVmZTM2NWNhZjMy
NThlMTdjNC4uOGExZWQ0YjMzMmZkYjJjNDBiZWIzMGQ3OTYxNjcyZmRjMmQ5NzVjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8x
XzVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8xXzVfYXV0b2dlbi5jcHAKQEAgLTM1LDkgKzM1LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBCZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgUXVlcnlJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+
KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlw
ZT4odGFyZ2V0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmVnaW5RdWVyeShjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBidWZmZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwor
ICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRCdWZmZXIoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
ODEsMTAgKzgxLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0
LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEsIEdMCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJV
c2FnZSB1c2FnZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyVXNh
Z2U+KHVzYWdlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAg
ICAgIEJ1ZmZlclVzYWdlIHVzYWdlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlclVzYWdlPih1c2FnZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJ1ZmZlckRhdGEoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBzaXplLCBkYXRhLCB1c2FnZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTEwNiw5ICsxMDYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlclN1
YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQnVmZmVyU3ViRGF0YShjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgc2l6ZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTEyNyw4ICsxMjcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERl
bGV0ZUJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1
ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlRGVsZXRlQnVmZmVycyhjb250ZXh0LCBuLCBidWZmZXJzUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0Nyw4ICsxNDcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IERlbGV0ZVF1ZXJpZXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFF1ZXJ5SUQgKj4oaWRzKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFF1ZXJ5SUQgKj4oaWRzKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURl
bGV0ZVF1ZXJpZXMoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTE2Nyw4ICsxNjcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5KEdMZW51
bSB0YXJnZXQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRh
cmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5
cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUVuZFF1ZXJ5KGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTE4Niw4ICsxODYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlbkJ1
ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZlcnMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJJRCAqPihidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuQnVmZmVycyhjb250
ZXh0LCBuLCBidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIw
Niw4ICsyMDYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblF1ZXJpZXMoR0xzaXplaSBuLCBHTHVp
bnQgKmlkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCAqaWRz
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRz
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgKmlkc1BhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4o
aWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuUXVl
cmllcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0yMjcsOSArMjI3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQ
YXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0yNDksOSArMjQ5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRCdWZmZXJQb2ludGVydihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJh
bXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRl
cnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjczLDggKzI3Myw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0QnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgc2l6CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJTdWJEYXRhKGNvbnRl
eHQsIHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMjk0LDkgKzI5NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVl
cnlPYmplY3RpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFF1ZXJ5
SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3Rpdihjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMxNiw5ICsz
MTYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2KEdMdWludCBpZCwgR0xl
bnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmpl
Y3R1aXYoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMzgsOCArMzM4LDggQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRRdWVyeWl2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldFF1ZXJ5aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM1OCw4ICszNTgsOCBAQCBHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNCdWZmZXIoR0x1aW50IGJ1ZmZlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNCdWZmZXIo
Y29udGV4dCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMzg2LDggKzM4Niw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1F1ZXJ5KEdM
dWludCBpZCkKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVJc1F1ZXJ5KGNvbnRleHQsIGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDE2LDggKzQxNiw4IEBAIHZvaWQgKkdMX0FQSUVO
VFJZIE1hcEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQogICAgIHZvaWQgKnJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGlu
ZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwQnVmZmVyKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgYWNj
ZXNzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ0Niw4ICs0NDYsOCBAQCBHTGJv
b2xlYW4gR0xfQVBJRU5UUlkgVW5tYXBCdWZmZXIoR0xlbnVtIHRhcmdldCkKICAgICBHTGJvb2xl
YW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmlu
ZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZl
ckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbm1hcEJ1ZmZlcihjb250ZXh0LCB0YXJnZXRQYWNr
ZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8yXzBfYXV0b2dlbi5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMF9hdXRv
Z2VuLmNwcAppbmRleCA5NDFlYjUxMTA2NDk5OGM0MmZhMGEzZTViZmIzN2RkZDYxMDIyMzJlLi4x
NDViYTE4NmNjNDA4NmE5OTNjNWYxNDlmYjhhOTVhMzU5NTc3YmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMF9hdXRvZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRz
X2dsXzJfMF9hdXRvZ2VuLmNwcApAQCAtMzUsMTAgKzM1LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkg
QXR0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQXR0YWNoU2hh
ZGVyKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU5LDkgKzU5LDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBCaW5kQXR0cmliTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3Qg
R0xjaGFyICoKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5k
QXR0cmliTG9jYXRpb24oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIG5hbWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MCw4ICs4MCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0g
bW9kZUFscGhhKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRl
KGNvbnRleHQsIG1vZGVSR0IsIG1vZGVBbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTk4LDggKzk4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21waWxlU2hh
ZGVyKEdMdWludCBzaGFkZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb21waWxlU2hhZGVyKGNvbnRleHQs
IHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTgsNyArMTE4
LDcgQEAgR0x1aW50IEdMX0FQSUVOVFJZIENyZWF0ZVByb2dyYW0oKQogICAgIEdMdWludCByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVQ
cm9ncmFtKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0xNDYsOCArMTQ2LDggQEAgR0x1aW50IEdMX0FQSUVOVFJZIENyZWF0ZVNoYWRlcihHTGVudW0g
dHlwZSkKICAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTaGFkZXJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBTaGFkZXJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlQ3JlYXRlU2hhZGVyKGNvbnRleHQsIHR5cGVQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNzMsOCArMTczLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBEZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEZWxldGVQcm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMTkyLDggKzE5Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRl
U2hhZGVyKEdMdWludCBzaGFkZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVTaGFkZXIoY29udGV4
dCwgc2hhZGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxMiwxMCAr
MjEyLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgRGV0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlRGV0YWNoU2hhZGVyKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNo
YWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShH
THVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbnRleHQsIGluZGV4KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIERyYXdCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0J1ZmZlcnMoY29udGV4dCwgbiwg
YnVmcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI2OCw3ICsy
NjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMdWludCBp
bmRleCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250ZXh0LCBpbmRleCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0yOTcsOSArMjk3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRB
Y3RpdmVBdHRyaWIoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGlu
ZGV4LCBidWZTaXplLCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlwZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0zMjksOSArMzI5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlm
b3JtKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgaW5kZXgsIGJ1
ZlNpemUsIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZSwgdHlwZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0zNTcsOSArMzU3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBdHRhY2hlZFNoYWRlcnMo
R0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQYWNr
ZWQgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEICo+KHNoYWRlcnMpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEICpzaGFkZXJzUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEICo+KHNoYWRlcnMpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRBdHRhY2hlZFNoYWRlcnMoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bWF4Q291bnQsIGNvdW50LCBzaGFkZXJzUGFja2VkKSk7CkBAIC0zODIsOCArMzgyLDggQEAgR0xp
bnQgR0xfQVBJRU5UUlkgR2V0QXR0cmliTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdM
Y2hhciAqbmFtZSkKICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEF0
dHJpYkxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNDE3LDggKzQxNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJv
Z3JhbUluZm9Mb2coR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlk
YXRlR2V0UHJvZ3JhbUluZm9Mb2coY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVu
Z3RoLCBpbmZvTG9nKSk7CkBAIC00NDEsOSArNDQxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQ
cm9ncmFtaXYoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtaXYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTQ2Myw4ICs0NjMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFNoYWRlckluZm9Mb2coR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
c2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihz
aGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFkZXJJbmZvTG9nKGNvbnRl
eHQsIHNoYWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKSk7CkBAIC00ODcsOCAr
NDg3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwg
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZh
bGlkYXRlR2V0U2hhZGVyU291cmNlKGNvbnRleHQsIHNoYWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVu
Z3RoLCBzb3VyY2UpKTsKQEAgLTUxMCw5ICs1MTAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNo
YWRlcml2KEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tl
ZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyaXYoY29udGV4dCwg
c2hhZGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNTMyLDggKzUzMiw4IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldFVuaWZv
cm1Mb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKQogICAgIEdMaW50
IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VW5pZm9ybUxvY2F0aW9uKGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTYz
LDE1ICs1NjMsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtZnYoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgcGFyYW1zKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3Jt
ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dFVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFy
YW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtNTg1
LDE1ICs1ODYsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtaXYoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHBhcmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWl2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRV
bmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtaXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTYwNyw4
ICs2MDksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbgogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwb2ludGVy
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjI4LDcgKzYzMCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliZHYoR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMZG91YmxlICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VmVydGV4QXR0cmliZHYoY29udGV4dCwgaW5k
ZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjQ4LDcg
KzY1MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliZnYoR0x1aW50IGluZGV4
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdihjb250ZXh0
LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02
NjgsNyArNjcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdihjb250
ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC02ODcsOCArNjg5LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbShHTHVpbnQg
cHJvZ3JhbSkKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzUHJvZ3JhbShjb250ZXh0
LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtNzE1LDggKzcxNyw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1NoYWRlcihHTHVpbnQg
c2hhZGVyKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzU2hhZGVyKGNvbnRleHQsIHNo
YWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc0
Miw4ICs3NDQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIExpbmtQcm9ncmFtKEdMdWludCBwcm9ncmFt
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVMaW5rUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc2Nyw5ICs3NjksOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFNoYWRlclNvdXJjZShHTHVpbnQgc2hhZGVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVTaGFkZXJTb3VyY2UoY29udGV4dCwgc2hhZGVyUGFja2VkLCBj
b3VudCwgc3RyaW5nLCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC03ODksOCArNzkxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRnVuY1NlcGFy
YXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoY29udGV4dCwgZmFjZSwgZnVuYywg
cmVmLCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODA4
LDcgKzgxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVudW0g
ZmFjZSwgR0x1aW50IG1hc2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlU3RlbmNpbE1hc2tTZXBhcmF0ZShjb250ZXh0LCBmYWNlLCBtYXNr
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgzMiw4ICs4MzQsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gc2ZhaWwsIEdM
ZW51bSBkcGZhaWwsIEdMZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNpbE9wU2VwYXJh
dGUoY29udGV4dCwgZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNzKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODUxLDEzICs4NTMsMTUgQEAgdm9pZCBHTF9BUElF
TlRSWSBVbmlmb3JtMWYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjApCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3Jt
MWYoY29udGV4dCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTFmKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFm
KGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtMWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjApOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm0xZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCB2MCk7CiAgICAgfQogfQogCkBAIC04NzEsMTQgKzg3NSwxNSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xZnYoY29udGV4dCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybTFmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTFmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0xZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAg
IH0KIH0KIApAQCAtODkwLDEzICs4OTUsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWko
R0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFpKGNvbnRleHQsIGxvY2F0
aW9uLCB2MCkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm0xaShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWkobG9jYXRp
b24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvblBhY2tlZCwg
djApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0K
IH0KIApAQCAtOTExLDE0ICs5MTgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWl2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMWl2KGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWl2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlv
blBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFVuaWZvcm0xaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC05MzAsMTQg
KzkzOCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yZihHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCB2MCwgR0xmbG9hdCB2MSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVW5pZm9ybTJmKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJmKGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtMmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAg
ICB9CiB9CiAKQEAgLTk1MSwxNCArOTYwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJm
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMmZ2
KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmZ2KGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmdihs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm0yZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC05
NzAsMTQgKzk4MCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yaShHTGludCBsb2NhdGlv
biwgR0xpbnQgdjAsIEdMaW50IHYxKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtMmkoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMmkoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYx
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvblBhY2tlZCwgdjAsIHYx
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yaSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0yaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwog
ICAgIH0KIH0KIApAQCAtOTkyLDE0ICsxMDAzLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9y
bTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yaXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTJp
dihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJpdihs
b2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaXYo
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtMml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJpdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAt
MTAxMiwxNCArMTAyNCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zZihHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNmKGNvbnRleHQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVVuaWZvcm0zZihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtM2YobG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICB9CiB9CiAKQEAg
LTEwMzMsMTQgKzEwNDYsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2Z2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtM2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0zZnYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5p
Zm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEwNTMsMTQgKzEw
NjcsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2koR0xpbnQgbG9jYXRpb24sIEdMaW50
IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVVuaWZvcm0zaShjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2ko
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2kobG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9u
UGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2ksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgfQogfQogCkBAIC0xMDc1LDE0ICsxMDkwLDE1
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zaXYo
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTNpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2l2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoVW5pZm9ybTNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTA5NiwxNCArMTExMiwxNSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFVuaWZvcm00ZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwg
R0xmbG9hdCB2MiwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00Zihjb250ZXh0LCBsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVVuaWZvcm00Zihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm00Zihsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Miwg
djMpOwogICAgIH0KIH0KIApAQCAtMTExNywxNCArMTEzNCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00ZnYoY29udGV4dCwgbG9jYXRpb24s
IGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VW5pZm9ybTRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTRmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm00ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtMTEzOCwxNCArMTE1NiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00aShH
TGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdgogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVVuaWZvcm00aShjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00aShj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGkobG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aShs
b2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2
MSwgdjIsIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGksIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgIH0KIH0KIApA
QCAtMTE2MCwxNCArMTE3OSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00aXYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtNGl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00aXYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5p
Zm9ybTRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTExODQsMTQgKzEy
MDQsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9u
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSk7CiAgICAgfQogfQogCkBAIC0xMjA4LDE0ICsxMjMxLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2
KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1h
dHJpeDNmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtTWF0cml4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4
M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTIzMiwx
NCArMTI1OCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9j
YXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDRmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEyNTAsOCArMTI3OSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVXNlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVXNlUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTEyNjksOCArMTI5OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmFsaWRhdGVQcm9ncmFtKEdMdWlu
dCBwcm9ncmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjg5LDcgKzEzMTgs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjFkKEdMdWludCBpbmRleCwgR0xkb3Vi
bGUgeCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0
dHJpYjFkKGNvbnRleHQsIGluZGV4LCB4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTMwOCw3ICsxMzM3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWIxZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZHYoY29u
dGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTMyNyw3ICsx
MzU2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIxZihHTHVpbnQgaW5kZXgsIEdM
ZmxvYXQgeCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjFmKGNvbnRleHQsIGluZGV4LCB4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMTM0Niw3ICsxMzc1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWIxZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFmdihj
b250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzY1LDcg
KzEzOTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjFzKEdMdWludCBpbmRleCwg
R0xzaG9ydCB4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVy
dGV4QXR0cmliMXMoY29udGV4dCwgaW5kZXgsIHgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xMzg0LDcgKzE0MTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjFzdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliMXN2
KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0MDMs
NyArMTQzMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMmQoR0x1aW50IGluZGV4
LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJkKGNvbnRleHQsIGluZGV4LCB4
LCB5KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0MjMsNyArMTQ1Miw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMmR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3Vi
bGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVmVydGV4QXR0cmliMmR2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE0NDIsNyArMTQ3MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliMmYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIy
Zihjb250ZXh0LCBpbmRleCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0x
NDYyLDcgKzE0OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJmdihHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliMmZ2KGNvbnRleHQsIGluZGV4LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0ODEsNyArMTUxMCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMnMoR0x1aW50IGluZGV4LCBHTHNob3J0IHgsIEdMc2hv
cnQgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWIycyhjb250ZXh0LCBpbmRleCwgeCwgeSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xNTAxLDcgKzE1MzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjJzdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliMnN2
KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1MjEs
NyArMTU1MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliM2QoR0x1aW50IGluZGV4
LCBHTGRvdWJsZSB4LCBHTGRvdWJsZSB5LCBHTGRvdWJsZSB6CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliM2QoY29udGV4
dCwgaW5kZXgsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTU0MSw3
ICsxNTcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZHYoR0x1aW50IGluZGV4
LCBjb25zdCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZHYoY29udGV4dCwgaW5kZXgsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTU2MSw3ICsxNTkwLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBWZXJ0ZXhBdHRyaWIzZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5
LCBHTGZsb2F0IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVmVydGV4QXR0cmliM2YoY29udGV4dCwgaW5kZXgsIHgsIHksIHopKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTU4MSw3ICsxNjEwLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYjNmdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0xNjAxLDcgKzE2MzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjNzKEdM
dWludCBpbmRleCwgR0xzaG9ydCB4LCBHTHNob3J0IHksIEdMc2hvcnQgeikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIz
cyhjb250ZXh0LCBpbmRleCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xNjIxLDcgKzE2NTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjNzdihHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliM3N2KGNvbnRleHQsIGluZGV4
LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE2NDEsNyArMTY3MCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNE5idihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0
ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0TmJ2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE2NjEsNyArMTY5MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliNE5pdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjROaXYo
Y29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY4MSw3
ICsxNzEwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0TnN2KEdMdWludCBpbmRl
eCwgY29uc3QgR0xzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnN2KGNvbnRleHQsIGluZGV4LCB2KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3MDIsNyArMTczMSw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliNE51YihHTHVpbnQgaW5kZXgsIEdMdWJ5dGUgeCwgR0x1Ynl0
ZSB5LCBHTHVieXRlIHosCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNE51Yihjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwg
dykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzIyLDcgKzE3NTEsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjROdWJ2KEdMdWludCBpbmRleCwgY29uc3QgR0x1Ynl0
ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0TnVidihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xNzQyLDcgKzE3NzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjROdWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRO
dWl2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3
NjIsNyArMTc5MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNE51c3YoR0x1aW50
IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0TnVzdihjb250ZXh0LCBpbmRl
eCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzgyLDcgKzE4MTEsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjRidihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMYnl0
ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0YnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMTgwMyw3ICsxODMyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWI0ZChHTHVpbnQgaW5kZXgsIEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlIHoK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWI0ZChjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xODIzLDcgKzE4NTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjRkdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRk
dihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODQ0
LDcgKzE4NzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjRmKEdMdWludCBpbmRl
eCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgRwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKGNvbnRl
eHQsIGluZGV4LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4
NjQsNyArMTg5Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGZ2KEdMdWludCBp
bmRleCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZnYoY29udGV4dCwgaW5kZXgsIHYp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTg4NCw3ICsxOTEzLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWI0aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTkwNSw3ICsxOTM0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0
cyhHTHVpbnQgaW5kZXgsIEdMc2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEcKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWI0cyhjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0xOTI1LDcgKzE5NTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJp
YjRzdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNHN2KGNvbnRl
eHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5NDUsNyArMTk3
NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNHVidihHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMdWJ5dGUgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliNHVidihjb250ZXh0LCBpbmRleCwgdikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTY1LDcgKzE5OTQsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFZlcnRleEF0dHJpYjR1aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4
QXR0cmliNHVpdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0xOTg1LDcgKzIwMTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjR1c3Yo
R0x1aW50IGluZGV4LCBjb25zdCBHTHVzaG9ydCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0dXN2KGNvbnRleHQs
IGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwMTIsOSArMjA0MSw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVy
KGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkLCBzdHJpZGUsIHBv
aW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8yXzFfYXV0b2dlbi5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMV9h
dXRvZ2VuLmNwcAppbmRleCBjOTQxMGNjNWU0ZjIwY2QxOGNjMjU3ZjAxMzg4NmEzYTllMjdmMmM4
Li42YzU2YzAwN2RkMmI4Mjc0NzYxYTY0YWIwNjhhNWZlYjcxNzkzMzEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzJfMV9hdXRv
Z2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9p
bnRzX2dsXzJfMV9hdXRvZ2VuLmNwcApAQCAtNDAsMTQgKzQwLDE3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybU1hdHJpeDJ4M2Z2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXgyeDNmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgyeDNmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtTWF0cml4MngzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC02NCwxNCArNjcsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4
Mng0ZnYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnRleHQs
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGZ2
KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtTWF0cml4Mng0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgy
eDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNw
b3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTg4LDE0
ICs5NCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzeDJmdihHTGludCBsb2Nh
dGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3gyZnYoY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzeDJm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmZ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTEyLDE0ICsxMjEsMTcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
IFZhbGlkYXRlVW5pZm9ybU1hdHJpeDN4NGZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJp
eDN4NGZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M3g0ZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICB9CiB9CiAKQEAgLTEzNiwxNCArMTQ4LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybU1hdHJpeDR4MmZ2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0
eDJmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXg0eDJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtTWF0cml4NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQog
fQogCkBAIC0xNjAsMTQgKzE3NSwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0
eDNmdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZnYoY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZv
cm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZnYo
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAg
ICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4
M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIH0gIC8vIG5hbWVz
cGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF8zXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMF9hdXRvZ2VuLmNwcAppbmRleCA4MGM5MTkyYmRl
M2FlZTE3MzA5OWJjNzc3OGRhMjhmYjAyNDhhMjU3Li40N2UzY2JkYWViOThmYzQ4NjBhM2YwM2Zk
MzQ5YzRkMGVlZTYxZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMF9hdXRvZ2VuLmNwcApAQCAt
MzUsNyArMzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJlZ2luQ29uZGl0aW9uYWxSZW5kZXIoR0x1
aW50IGlkLCBHTGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVCZWdpbkNvbmRpdGlvbmFsUmVuZGVyKGNvbnRleHQsIGlkLCBt
b2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU0LDkgKzU0LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMZW51bSBwcmltaXRpdmVNb2RlKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIHByaW1pdGl2
ZU1vZGVQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4ocHJpbWl0aXZl
TW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIHByaW1pdGl2ZU1vZGVQYWNrZWQgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4ocHJpbWl0aXZlTW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soY29u
dGV4dCwgcHJpbWl0aXZlTW9kZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTc1LDEwICs3NSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRCdWZmZXJC
YXNlKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlcikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAg
IEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxC
dWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7
CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kQnVmZmVyQmFzZShjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGluZGV4LCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xMDAsOSArMTAwLDkgQEAgQmluZEJ1ZmZlclJhbmdlKEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBH
THMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdl
dCk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIEJ1ZmZlcklE
IGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kQnVmZmVyUmFuZ2UoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBpbmRleCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUpKTsKQEAgLTEy
Niw5ICsxMjYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnRGF0YUxvY2F0aW9uKEdMdWlu
dCBwcm9ncmFtLCBHTHVpbnQgY29sb3IsIGNvbnN0IEdMY2hhcgogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0aW9uKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGNvbG9yLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTQ2LDkgKzE0Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYW1lYnVm
ZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAg
ICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEZy
YW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZEZyYW1lYnVmZmVyKGNvbnRleHQsIHRh
cmdldCwgZnJhbWVidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0xNjYsOSArMTY2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kUmVuZGVyYnVm
ZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJ
RD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIHJlbmRlcmJ1
ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE4
NSw4ICsxODUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRWZXJ0ZXhBcnJheShHTHVpbnQgYXJy
YXkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgYXJy
YXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPihhcnJh
eSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEIGFy
cmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJh
eUlEPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjE5LDggKzIxOSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQmxpdEZyYW1lYnVmZmVyKEdMaW50IHNyY1gwLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
QmxpdEZyYW1lYnVmZmVyKGNvbnRleHQsIHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RY
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
c3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMjQyLDcgKzI0Miw3IEBAIEdMZW51bSBHTF9BUElFTlRSWSBDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpCiAgICAgR0xlbnVtIHJldHVyblZhbHVlOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGNvbnRleHQsIHRhcmdldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGFtcENvbG9yKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBjbGFtcCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGFtcENvbG9yKGNvbnRleHQsIHRhcmdldCwgY2xhbXApKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjkyLDggKzI5Miw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ2xlYXJCdWZmZXJmaShHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBHTGZs
b2F0IGRlcHRoLCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhckJ1ZmZlcmZpKGNvbnRl
eHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zMTMsOCArMzEzLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBDbGVhckJ1ZmZlcmZ2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdM
ZmxvYXQgKnYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVyZnYoY29udGV4dCwg
YnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTMzNCw4ICszMzQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVy
aXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihjb250ZXh0LCBidWZmZXIsIGRyYXdi
dWZmZXIsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MzU1LDggKzM1NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJCdWZmZXJ1aXYoR0xlbnVtIGJ1
ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVDbGVhckJ1ZmZlcnVpdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzc3LDcgKzM3Nyw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNraShHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiBy
LCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ29sb3JNYXNraShjb250ZXh0LCBpbmRleCwgciwg
ZywgYiwgYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zOTcsOSArMzk3LDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVp
bnQgKmZyYW1lYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29u
c3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkICAgICAgID0gRnJvbUdMPGNvbnN0
IEZyYW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBGcmFtZWJ1ZmZlcklEICo+
KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZURlbGV0ZUZyYW1lYnVmZmVycyhjb250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MTksOCAr
NDE5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVSZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwg
Y29uc3QgR0x1aW50ICpyZW5kZXJidWZmZXJzKQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgY29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQYWNrZWQgPSBGcm9tR0w8
Y29uc3QgUmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxldGVSZW5kZXJidWZmZXJz
KGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC00MzksOCArNDM5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxl
dGVWZXJ0ZXhBcnJheXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cykKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFj
a2VkICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFZlcnRleEFycmF5SUQg
KmFycmF5c1BhY2tlZCA9IEZyb21HTDxjb25zdCBWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVE
ZWxldGVWZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc2Fi
bGVpKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVpKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBFbmFibGVpKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZWkoY29udGV4dCwgdGFy
Z2V0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ5
NCw3ICs0OTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuZENvbmRpdGlvbmFsUmVuZGVyKCkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZENvbmRpdGlvbmFsUmVu
ZGVyKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01
MTEsNyArNTExLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBFbmRUcmFuc2Zvcm1GZWVkYmFjaygpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRUcmFuc2Zvcm1GZWVk
YmFjayhjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NTMxLDkgKzUzMSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShH
TGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNTU4LDggKzU1OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAgICAgICAgID0gRnJv
bUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdM
PFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRh
cmdldCwKQEAgLTU5MCwxMCArNTkwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJU
ZXh0dXJlMUQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsKKyAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMUQoY29udGV4dCwgdGFyZ2V0LCBh
dHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MjIsMTAgKzYyMiwxMCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOwotICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7
CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKGNv
bnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tl
ZCwgbGV2ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjU1LDkgKzY1NSw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlM0QoR0xlbnVtIHRhcmdldCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7
Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsKKyAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlM0Qo
Y29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXRQYWNrZWQsCkBAIC02ODQsOSAr
Njg0LDkgQEAgRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0
dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJlLCBHTGludAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
dGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmVQYWNrZWQsIGxldmVsLCBsYXllcikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC03MDcsOCArNzA3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5GcmFtZWJ1ZmZl
cnMoR0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkICAgICAgICAg
ICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tl
ZCA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZl
cnMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTcyOCw5ICs3MjgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblJlbmRlcmJ1ZmZl
cnMoR0xzaXplaSBuLCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkICAgICAg
ICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZl
cklEICo+KHJlbmRlcmJ1ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzKGNvbnRleHQsIG4sIHJlbmRlcmJ1
ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03
NDgsOCArNzQ4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5WZXJ0ZXhBcnJheXMoR0xzaXplaSBu
LCBHTHVpbnQgKmFycmF5cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVy
dGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRl
eEFycmF5SUQgKj4oYXJyYXlzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblZlcnRleEFycmF5cyhjb250ZXh0
LCBuLCBhcnJheXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzY4LDgg
Kzc2OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuZXJhdGVNaXBtYXAoR0xlbnVtIHRhcmdldCkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZXRCb29sZWFuaV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtODExLDkgKzgxMSw5IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldEZy
YWdEYXRhTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkKICAgICBH
TGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0RnJhZ0RhdGFMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODQ4LDcgKzg0OCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVt
IHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdigKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEludGVnZXJpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0
YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVHZXRJbnRlZ2VyaV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtODkxLDggKzg5MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihj
b250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC05MTEsNyArOTExLDcgQEAgY29uc3QgR0x1Ynl0ZSAqR0xfQVBJRU5U
UlkgR2V0U3RyaW5naShHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KQogICAgIGNvbnN0IEdMdWJ5
dGUgKnJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldFN0cmluZ2koY29udGV4dCwgbmFtZSwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC05NDAsOSArOTQwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRU
ZXhQYXJhbWV0ZXJJaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2KGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTk2Miw5ICs5NjIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFRleFBhcmFtZXRlckl1aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBh
cmFtcwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVp
dihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05OTIsOSArOTkyLDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0
aCwgc2l6ZSwgdHlwZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDE3
LDE1ICsxMDE3LDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybXVpdihHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBwYXJhbXMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZv
cm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldFVuaWZvcm11aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm11aXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAK
QEAgLTEwMzksOCArMTA0MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2
KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA2MCw4ICsx
MDYxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2KEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYkl1aXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDgwLDcgKzEwODEsNyBAQCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkaShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0VuYWJsZWRpKGNvbnRleHQsIHRhcmdldCwg
aW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTEwOCw4ICsxMTA5LDggQEAg
R0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQog
ICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21H
TDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0ZyYW1lYnVm
ZmVyKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTExMzcsOCArMTEzOCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1JlbmRlcmJ1
ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJl
bmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUlzUmVuZGVyYnVmZmVyKGNvbnRleHQsIHJlbmRlcmJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTY2LDggKzExNjcsOCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5U
UlkgSXNWZXJ0ZXhBcnJheShHTHVpbnQgYXJyYXkpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgYXJyYXlQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+
KGFycmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTIwMyw5ICsxMjA0LDkgQEAgdm9pZCAqR0xfQVBJRU5UUlkg
TWFwQnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwKICAgICB2b2lkICpyZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2UoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTIzOSw3ICsxMjQwLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBSZW5kZXJidWZmZXJTdG9yYWdlKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVSZW5kZXJi
dWZmZXJTdG9yYWdlKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpKTsKQEAgLTEyNjcsOCArMTI2OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTEyOTIsOSArMTI5Myw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4
UGFyYW1ldGVySWl2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBh
cmFtCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXYoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMTMxNiw5ICsxMzE3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBU
ZXhQYXJhbWV0ZXJJdWl2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50
ICpwYXIKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXYo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM0Miw4ICsxMzQzLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvdW50LCB2YXJ5
aW5ncywgYnVmZmVyTW9kZSkpOwpAQCAtMTM2NCwxMyArMTM2NSwxNSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm0xdWkoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0x
dWkoY29udGV4dCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTF1aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MXVpKGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtMXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAgLTEzODQsMTQgKzEzODcsMTUgQEAgdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtMXVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0x1aW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMXVpdihjb250ZXh0
LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtMXVpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybTF1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE0MDMsMTQgKzE0MDcsMTUgQEAgdm9pZCBHTF9BUElF
TlRSWSBVbmlmb3JtMnVpKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJ1aShjb250ZXh0
LCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0ydWkoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2
MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtMnVpKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJ1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
LCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0ydWksIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICB9CiB9CiAKQEAgLTE0MjQs
MTQgKzE0MjksMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMnVpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVVbmlmb3JtMnVpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMnVpdihjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMnVpdihsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm0ydWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE0NDQsMTQgKzE0
NTAsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM3VpKEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVVbmlmb3JtM3VpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm0zdWkoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM3Vp
KGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWko
bG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybTN1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEs
IHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgIH0KIH0KIApAQCAtMTQ2NSwx
NCArMTQ3MiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVVuaWZvcm0zdWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0zdWl2KGNvbnRleHQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWl2KGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTN1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM3VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTQ4NiwxNCArMTQ5
NCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00dWkoR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIsIEdMdQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm00dWkoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtNHVpKGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIs
IHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWkobG9jYXRpb25QYWNrZWQsIHYw
LCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00
dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgIH0KIH0KIApAQCAtMTUwNywxNCArMTUx
NiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm00dWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00dWl2KGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTR1aXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShVbmlmb3JtNHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTUyNiw3ICsxNTM2LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJMWkoR0x1aW50IGluZGV4LCBHTGludCB4KQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZl
cnRleEF0dHJpYkkxaShjb250ZXh0LCBpbmRleCwgeCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0xNTQ2LDcgKzE1NTYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkkx
aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMWl2KGNvbnRleHQs
IGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE1NjUsNyArMTU3NSw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTF1aShHTHVpbnQgaW5kZXgsIEdMdWlu
dCB4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYkkxdWkoY29udGV4dCwgaW5kZXgsIHgpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMTU4NSw3ICsxNTk1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWJJMXVpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMXVp
dihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjA0
LDcgKzE2MTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkkyaShHTHVpbnQgaW5k
ZXgsIEdMaW50IHgsIEdMaW50IHkpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTJpKGNvbnRleHQsIGluZGV4LCB4LCB5
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE2MjQsNyArMTYzNCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTJpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleEF0dHJpYkkyaXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTY0Myw3ICsxNjUzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJJMnVpKEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkkydWko
Y29udGV4dCwgaW5kZXgsIHgsIHkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY2
Myw3ICsxNjczLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJMnVpdihHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMdWludCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJMnVpdihjb250ZXh0LCBpbmRleCwg
dikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjgzLDcgKzE2OTMsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkkzaShHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50
IHksIEdMaW50IHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTNpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3MDMsNyArMTcxMyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4QXR0cmliSTNpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkkzaXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTcyMyw3ICsxNzMzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJM3Vp
KEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeikKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
M3VpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTE3NDMsNyArMTc1Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTN1aXYo
R0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTN1aXYoY29udGV4dCwg
aW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTc2Myw3ICsxNzczLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNGJ2KEdMdWludCBpbmRleCwgY29uc3Qg
R0xieXRlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0YnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTc4Myw3ICsxNzkzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBW
ZXJ0ZXhBdHRyaWJJNGkoR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBH
TGludAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYkk0aShjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODAzLDcgKzE4MTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFZlcnRleEF0dHJpYkk0aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJNGl2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTE4MjMsNyArMTgzMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTRzdihHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMc2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTRzdihjb250ZXh0LCBpbmRl
eCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODQzLDcgKzE4NTMsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0dWJ2KEdMdWludCBpbmRleCwgY29uc3QgR0x1
Ynl0ZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVidihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0xODY0LDcgKzE4NzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZl
cnRleEF0dHJpYkk0dWkoR0x1aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB6
LCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYkk0dWkoY29udGV4dCwgaW5kZXgsIHgsIHksIHosIHcpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTg4NCw3ICsxODk0LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBWZXJ0ZXhBdHRyaWJJNHVpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJNHVpdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0xOTA0LDcgKzE5MTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0dXN2
KEdMdWludCBpbmRleCwgY29uc3QgR0x1c2hvcnQgKnYpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1c3YoY29udGV4
dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTkyNyw4ICsxOTM3
LDggQEAgVmVydGV4QXR0cmliSVBvaW50ZXIoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVu
dW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZVZlcnRleEF0dHJpYklQb2ludGVyKGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBz
dHJpZGUsIHBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18xX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzFfYXV0b2dlbi5jcHAKaW5kZXgg
NWEwNzhlZTQyZDJiY2ExNWZiNmM3YmY0MThmNjJkMjVlMjc4NDBjNS4uODE3MDFmYmIyZGUxMDQz
ZjFlODE0MDJmYThlYTMxMDk4YmU3NjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzFfYXV0b2dlbi5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF8zXzFfYXV0b2dl
bi5jcHAKQEAgLTQ0LDEwICs0NCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlCdWZmZXJTdWJE
YXRhKEdMZW51bSByZWFkVGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBCdWZmZXJCaW5kaW5nIHJlYWRUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgPSBGcm9tR0w8
QnVmZmVyQmluZGluZz4ocmVhZFRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgd3JpdGVU
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih3cml0ZVRh
cmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5nIHJlYWRUYXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPihyZWFkVGFyZ2V0KTsKKyAgICAg
ICAgQnVmZmVyQmluZGluZyB3cml0ZVRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVyQmluZGluZz4od3JpdGVUYXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5QnVmZmVyU3ViRGF0YShjb250
ZXh0LCByZWFkVGFyZ2V0UGFja2VkLCB3cml0ZVRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPZmZzZXQsIHdyaXRl
T2Zmc2V0LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTcxLDggKzcxLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLCBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdBcnJh
eXNJbnN0YW5jZWQoY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZWNv
dW50KSk7CkBAIC0xMDAsMTAgKzEwMCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50
c0luc3RhbmNlZChHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRz
VHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0Vs
ZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZChjb250ZXh0LCBtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTEzMCw4ICsxMzAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwgYnVmU2l6ZSwKQEAgLTE2MCw5ICsxNjAsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdMdWludCBwcm9ncmFtLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tJbmRleCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODgsOSArMTg4
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtTmFtZShHTHVpbnQgcHJvZ3Jh
bSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRBY3RpdmVV
bmlmb3JtTmFtZShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtSW5kZXgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXpl
LCBsZW5ndGgsIHVuaWZvcm1OYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIx
OSw5ICsyMTksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1zaXYoR0x1aW50
IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
QWN0aXZlVW5pZm9ybXNpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQ291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aWZvcm1JbmRpY2VzLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTI0NCw5ICsyNDQsOSBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybUJsb2NrSW5k
ZXgoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqdW5pZm9ybUJsbwogICAgIEdMdWludCBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VW5pZm9ybUJsb2NrSW5kZXgoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrTmFt
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI3OSw5ICsyNzks
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1JbmRpY2VzKEdMdWludCBwcm9ncmFtLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1JbmRp
Y2VzKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1Db3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1OYW1lcywgdW5p
Zm9ybUluZGljZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzAwLDcgKzMwMCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJpbWl0aXZlUmVzdGFydEluZGV4KEdMdWludCBpbmRleCkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQ
cmltaXRpdmVSZXN0YXJ0SW5kZXgoY29udGV4dCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMzIxLDkgKzMyMSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4QnVmZmVyKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlcikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVRleEJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIGludGVybmFs
Zm9ybWF0LCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0zNDUsOSArMzQ1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtQmxvY2tCaW5k
aW5nKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRpbmcoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9y
bUJsb2NrSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0JpbmRpbmcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5
X3BvaW50c19nbF8zXzJfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMl9hdXRvZ2VuLmNwcAppbmRleCAxZGUzNjRmNGFkMGUz
MzQ2NjdlYTg1MzI3ODZkZmE3MzgyMDc1OWMzLi5iYzgyMWZiZTQxODFlYzJmMzJmMzVkNzFmNmU2
Y2IwMzBjOWE5MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0wvZW50cnlfcG9pbnRzX2dsXzNfMl9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfMl9hdXRvZ2VuLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2xpZW50V2FpdFN5bmMoR0xzeW5jIHN5bmMs
IEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdQogICAgIEdMZW51bSByZXR1cm5WYWx1
ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q2xpZW50V2FpdFN5bmMoY29udGV4dCwgc3luYywgZmxhZ3MsIHRpbWVvdXQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0
ZVN5bmMoR0xzeW5jIHN5bmMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEZWxldGVTeW5jKGNvbnRleHQsIHN5bmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC05MywxMCArOTMsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxl
bWVudHNCYXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxl
bWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxE
cmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleChjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgYmFzZXZlcnRleCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjUsOSArMTI1LDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3
RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNU
eXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVy
dGV4KSk7CkBAIC0xNTgsOSArMTU4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVt
ZW50c0Jhc2VWZXJ0ZXgoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2Rl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9k
ZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jh
c2VWZXJ0ZXgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOwpAQCAtMTg0LDcgKzE4NCw3IEBA
IEdMc3luYyBHTF9BUElFTlRSWSBGZW5jZVN5bmMoR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVs
ZCBmbGFncykKICAgICBHTHN5bmMgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZlbmNlU3luYyhjb250ZXh0LCBjb25kaXRp
b24sIGZsYWdzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxNSw4ICsyMTUsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gYXR0YWNobWVudCwgR0x1aW50IHRleAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZShjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVs
KSk7CkBAIC0yNDAsOSArMjQwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0
ZXJpNjR2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGEKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldElu
dGVnZXI2NGlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRhdGEpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0
SW50ZWdlcjY0aV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50
ZWdlcjY0dihHTGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcjY0dihjb250ZXh0
LCBwbmFtZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMDAsNyArMzAw
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNdWx0aXNhbXBsZWZ2KEdMZW51bSBwbmFtZSwgR0x1
aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdihjb250ZXh0LCBwbmFtZSwg
aW5kZXgsIHZhbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMjQsOCArMzI0LDgg
QEAgR2V0U3luY2l2KEdMc3luYyBzeW5jLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGludCAqdmEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFN5
bmNpdihjb250ZXh0LCBzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCB2YWx1ZXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNDQsNyArMzQ0LDcgQEAgR0xi
b29sZWFuIEdMX0FQSUVOVFJZIElzU3luYyhHTHN5bmMgc3luYykKICAgICBHTGJvb2xlYW4gcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTeW5j
KGNvbnRleHQsIHN5bmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0zODEsOSArMzgxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdFbGVtZW50c0Jhc2VW
ZXJ0ZXgoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmlt
aXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNl
cywgZHJhd2NvdW50LCBiYXNldmVydGV4KSk7CkBAIC00MDUsOCArNDA1LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBQcm92b2tpbmdWZXJ0ZXgoR0xlbnVtIG1vZGUpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9kZVBhY2tlZCAgICAg
ICAgICA9IEZyb21HTDxQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uPihtb2RlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9k
ZVBhY2tlZCA9IEZyb21HTDxQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uPihtb2RlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVByb3Zv
a2luZ1ZlcnRleChjb250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZU1hc2tpKEdMdWlu
dCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2FtcGxlTWFza2koY29udGV4dCwgbWFza051
bWJlciwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NTMsOCArNDUzLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTJETXVsdGlzYW1wbGUoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkRNdWx0aXNhbXBsZShjb250ZXh0LCB0
YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZpeGVkc2Ft
cGxlbG9jYXRpb25zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ4Niw3ICs0ODYs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlM0RNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4SW1hZ2UzRE11bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCkBAIC01MTMsNyArNTEzLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBXYWl0U3luYyhHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywg
R0x1aW50NjQgdGltZW91dCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVXYWl0U3luYyhjb250ZXh0LCBzeW5jLCBmbGFncywgdGltZW91dCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzNfM19hdXRvZ2VuLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18zX2F1dG9nZW4u
Y3BwCmluZGV4IGM2YjRiMWUyNGU0MjA5ZDc0NmQ3ZDU4NGY1Y2RhOGIxZDQxM2ZkZWIuLjc3ODNj
N2U2MGQ5NDk0NjE5ZDY3MTkyNzExY2Y4Yzg1MmIwODBjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfM18zX2F1dG9nZW4uY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xf
M18zX2F1dG9nZW4uY3BwCkBAIC00MCw4ICs0MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEZy
YWdEYXRhTG9jYXRpb25JbmRleGVkKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZUJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBjb2xvck51bWJlciwgaW5kZXgsIG5hbWUpKTsKQEAgLTYyLDggKzYyLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBCaW5kU2FtcGxlcihHTHVpbnQgdW5pdCwgR0x1aW50IHNhbXBsZXIpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUJpbmRTYW1wbGVyKGNvbnRleHQsIHVuaXQsIHNhbXBsZXJQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtODIsNyArODIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9y
UDN1aShHTGVudW0gdHlwZSwgR0x1aW50IGNvbG9yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlQ29sb3JQM3VpKGNvbnRleHQsIHR5cGUsIGNvbG9yKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29sb3JQM3VpdihHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb2xvcikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yUDN1aXYoY29u
dGV4dCwgdHlwZSwgY29sb3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvclA0dWkoR0xlbnVtIHR5
cGUsIEdMdWludCBjb2xvcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUNvbG9yUDR1aShjb250ZXh0LCB0eXBlLCBjb2xvcikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENv
bG9yUDR1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAqY29sb3IpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvclA0dWl2KGNvbnRleHQsIHR5cGUsIGNv
bG9yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU1LDggKzE1
NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU2FtcGxlcnMoR0xzaXplaSBjb3VudCwgY29u
c3QgR0x1aW50ICpzYW1wbGVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
Y29uc3QgU2FtcGxlcklEICpzYW1wbGVyc1BhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPGNv
bnN0IFNhbXBsZXJJRCAqPihzYW1wbGVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBjb25zdCBTYW1wbGVySUQgKnNhbXBsZXJzUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxjb25zdCBTYW1wbGVySUQgKj4oc2FtcGxlcnMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlU2FtcGxl
cnMoY29udGV4dCwgY291bnQsIHNhbXBsZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblNhbXBsZXJzKEdM
c2l6ZWkgY291bnQsIEdMdWludCAqc2FtcGxlcnMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTYW1wbGVySUQgKj4oc2FtcGxlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgU2FtcGxlcklEICpzYW1wbGVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEICo+KHNhbXBsZXJzKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblNhbXBsZXJzKGNv
bnRleHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0xOTcsOCArMTk3LDggQEAgR0xpbnQgR0xfQVBJRU5UUlkgR2V0RnJhZ0RhdGFJbmRleChH
THVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKQogICAgIEdMaW50IHJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlR2V0RnJhZ0RhdGFJbmRleChjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIyOCw5ICsyMjgsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQ2NCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBR
dWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVl
cnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHYo
Y29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0yNTAsOSArMjUwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRR
dWVyeU9iamVjdHVpNjR2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1z
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2KGNvbnRleHQsIGlkUGFja2Vk
LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMjcyLDkgKzI3Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcklp
dihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxl
cklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdihjb250ZXh0LCBzYW1wbGVy
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMjk1LDkgKzI5NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFt
ZXRlckl1aXYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
U2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoY29udGV4dCwg
c2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTMxOCw5ICszMTgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBs
ZXJQYXJhbWV0ZXJmdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJmdihjb250
ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMzQwLDkgKzM0MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
U2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2
KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNjAsOCArMzYwLDggQEAgR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzU2FtcGxlcihHTHVpbnQgc2FtcGxlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2Ft
cGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzU2Ft
cGxlcihjb250ZXh0LCBzYW1wbGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMzkwLDggKzM5MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhD
b29yZFAxdWkoR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAxdWkoY29udGV4dCwgdGV4dHVyZSwg
dHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NDEzLDggKzQxMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZFAxdWl2KEdMZW51
bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVNdWx0aVRleENvb3JkUDF1aXYoY29udGV4dCwgdGV4dHVyZSwgdHlwZSwgY29vcmRz
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDM0LDggKzQzNCw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZFAydWkoR0xlbnVtIHRleHR1cmUsIEdM
ZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlU
ZXhDb29yZFAydWkoY29udGV4dCwgdGV4dHVyZSwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNDU3LDggKzQ1Nyw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTXVsdGlUZXhDb29yZFAydWl2KEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgY29u
c3QgR0x1aW50ICpjCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aVRleENvb3JkUDJ1aXYo
Y29udGV4dCwgdGV4dHVyZSwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtNDc4LDggKzQ3OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlU
ZXhDb29yZFAzdWkoR0xlbnVtIHRleHR1cmUsIEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlUZXhDb29yZFAzdWkoY29udGV4dCwgdGV4dHVy
ZSwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtNTAxLDggKzUwMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZFAzdWl2KEdM
ZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVNdWx0aVRleENvb3JkUDN1aXYoY29udGV4dCwgdGV4dHVyZSwgdHlwZSwgY29v
cmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTIyLDggKzUy
Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29yZFA0dWkoR0xlbnVtIHRleHR1cmUs
IEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVs
dGlUZXhDb29yZFA0dWkoY29udGV4dCwgdGV4dHVyZSwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTQ1LDggKzU0NSw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTXVsdGlUZXhDb29yZFA0dWl2KEdMZW51bSB0ZXh0dXJlLCBHTGVudW0gdHlwZSwg
Y29uc3QgR0x1aW50ICpjCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aVRleENvb3JkUDR1
aXYoY29udGV4dCwgdGV4dHVyZSwgdHlwZSwgY29vcmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTm9y
bWFsUDN1aShHTGVudW0gdHlwZSwgR0x1aW50IGNvb3JkcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbFAzdWkoY29udGV4dCwgdHlwZSwgY29vcmRzKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTgzLDcgKzU4Myw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTm9ybWFsUDN1aXYoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdWludCAq
Y29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU5vcm1hbFAzdWl2KGNvbnRleHQsIHR5cGUsIGNvb3JkcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC02MDIsOSArNjAyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBRdWVyeUNv
dW50ZXIoR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAg
ICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVRdWVyeUNvdW50ZXIoY29udGV4dCwgaWRQYWNr
ZWQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MjcsOSAr
NjI3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySWl2KEdMdWludCBzYW1w
bGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICoKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+
KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1l
LCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY1MSw5
ICs2NTEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJJdWl2KEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1w
bGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJ
RD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBu
YW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY3
Miw5ICs2NzIsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJmKEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxl
cklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjk1
LDkgKzY5NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmZ2KEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2Ft
cGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzE2
LDkgKzcxNiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmkoR0x1aW50IHNh
bXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUs
IHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzQwLDkg
Kzc0MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcml2KEdMdWludCBzYW1w
bGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1l
LCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc2MCw3
ICs3NjAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNlY29uZGFyeUNvbG9yUDN1aShHTGVudW0gdHlw
ZSwgR0x1aW50IGNvbG9yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVNlY29uZGFyeUNvbG9yUDN1aShjb250ZXh0LCB0eXBlLCBjb2xvcikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03ODAsNyArNzgwLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBTZWNvbmRhcnlDb2xvclAzdWl2KEdMZW51bSB0eXBlLCBjb25zdCBHTHVpbnQgKmNv
bG9yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVNlY29uZGFyeUNvbG9yUDN1aXYoY29udGV4dCwgdHlwZSwgY29sb3IpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzk5LDcgKzc5OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4
Q29vcmRQMXVpKEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkUDF1aShjb250ZXh0
LCB0eXBlLCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODE5LDcgKzgx
OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQMXVpdihHTGVudW0gdHlwZSwgY29uc3Qg
R0x1aW50ICpjb29yZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVGV4Q29vcmRQMXVpdihjb250ZXh0LCB0eXBlLCBjb29yZHMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVGV4Q29vcmRQMnVpKEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3JkUDJ1aShj
b250ZXh0LCB0eXBlLCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODU4
LDcgKzg1OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQMnVpdihHTGVudW0gdHlwZSwg
Y29uc3QgR0x1aW50ICpjb29yZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmRQMnVpdihjb250ZXh0LCB0eXBlLCBjb29yZHMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODc3LDcgKzg3Nyw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVGV4Q29vcmRQM3VpKEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleENvb3Jk
UDN1aShjb250ZXh0LCB0eXBlLCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQM3VpdihHTGVudW0g
dHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmRQM3Vpdihjb250ZXh0LCB0eXBlLCBj
b29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTE2LDcgKzkxNiw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQNHVpKEdMZW51bSB0eXBlLCBHTHVpbnQgY29vcmRzKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRl
eENvb3JkUDR1aShjb250ZXh0LCB0eXBlLCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtOTM2LDcgKzkzNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4Q29vcmRQNHVpdihH
TGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICpjb29yZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4Q29vcmRQNHVpdihjb250ZXh0LCB0
eXBlLCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTU1LDcgKzk1NSw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5kZXgsIEdM
dWludCBkaXZpc29yKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3IoY29udGV4dCwgaW5kZXgsIGRpdmlzb3Ip
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTc3LDggKzk3Nyw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliUDF1aShHTHVpbnQgaW5kZXgsIEdMZW51bSB0eXBlLCBHTGJv
b2xlYW4gbm9ybWFsaXplCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMXVp
KGNvbnRleHQsIGluZGV4LCB0eXBlLCBub3JtYWxpemVkLCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwMDIsOCArMTAwMiw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4QXR0cmliUDF1aXYoR0x1aW50IGluZGV4LAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVmVydGV4QXR0cmliUDF1aXYoY29udGV4dCwgaW5kZXgsIHR5cGUsIG5vcm1hbGl6ZWQs
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTAyNCw4
ICsxMDI0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJQMnVpKEdMdWludCBpbmRl
eCwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemUKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVZlcnRleEF0dHJpYlAydWkoY29udGV4dCwgaW5kZXgsIHR5cGUsIG5vcm1hbGl6ZWQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTA0OSw4ICsx
MDQ5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJQMnVpdihHTHVpbnQgaW5kZXgs
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQMnVpdihjb250ZXh0LCBpbmRl
eCwgdHlwZSwgbm9ybWFsaXplZCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0xMDcxLDggKzEwNzEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0
dHJpYlAzdWkoR0x1aW50IGluZGV4LCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliUDN1aShjb250ZXh0LCBpbmRleCwg
dHlwZSwgbm9ybWFsaXplZCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0xMDk2LDggKzEwOTYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJp
YlAzdWl2KEdMdWludCBpbmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJp
YlAzdWl2KGNvbnRleHQsIGluZGV4LCB0eXBlLCBub3JtYWxpemVkLCB2YWx1ZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExMTgsOCArMTExOCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliUDR1aShHTHVpbnQgaW5kZXgsIEdMZW51bSB0eXBlLCBH
TGJvb2xlYW4gbm9ybWFsaXplCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQ
NHVpKGNvbnRleHQsIGluZGV4LCB0eXBlLCBub3JtYWxpemVkLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExNDMsOCArMTE0Myw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliUDR1aXYoR0x1aW50IGluZGV4LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVmVydGV4QXR0cmliUDR1aXYoY29udGV4dCwgaW5kZXgsIHR5cGUsIG5vcm1hbGl6
ZWQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTE2
Miw3ICsxMTYyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQMnVpKEdMZW51bSB0eXBlLCBH
THVpbnQgdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhQMnVpKGNvbnRleHQsIHR5cGUsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMTE4MSw3ICsxMTgxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0
ZXhQMnVpdihHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleFAydWl2KGNvbnRleHQsIHR5cGUsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTE5OSw3ICsx
MTk5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQM3VpKEdMZW51bSB0eXBlLCBHTHVpbnQg
dmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhQ
M3VpKGNvbnRleHQsIHR5cGUsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQM3Vp
dihHTGVudW0gdHlwZSwgY29uc3QgR0x1aW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleFAzdWl2KGNvbnRleHQsIHR5cGUsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTIzNiw3ICsxMjM2LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQNHVpKEdMZW51bSB0eXBlLCBHTHVpbnQgdmFsdWUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhQNHVpKGNv
bnRleHQsIHR5cGUsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMTI1NSw3ICsxMjU1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQNHVpdihHTGVu
dW0gdHlwZSwgY29uc3QgR0x1aW50ICp2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZlcnRleFA0dWl2KGNvbnRleHQsIHR5cGUsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzBfYXV0b2dlbi5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfMF9hdXRv
Z2VuLmNwcAppbmRleCBmOTI3N2I0ZmY3NzlkYzgzZjIyMjNhYjZhNTJkMjRmZDI0OGQ4YTU5Li5h
Yjc2MTBiYWUxODg0YTQ3OTZmZTNjYTFjNjY4NzRmNjM4NzYwYjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfMF9hdXRvZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRz
X2dsXzRfMF9hdXRvZ2VuLmNwcApAQCAtMzYsOSArMzYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJl
Z2luUXVlcnlJbmRleGVkKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGlkKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
UXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVCZWdpblF1ZXJ5SW5kZXhlZChjb250ZXh0LCB0YXJnZXQsIGluZGV4
LCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU2
LDggKzU2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xlbnVt
IHRhcmdldCwgR0x1aW50IGlkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
cmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJh
bnNmb3JtRmVlZGJhY2tJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFRyYW5zZm9ybUZlZWRiYWNr
KGNvbnRleHQsIHRhcmdldCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNzgsOCArNzgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWko
R0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaShjb250ZXh0LCBidWYsIG1vZGVSR0IsIG1v
ZGVBbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uaShHTHVpbnQgYnVmLCBHTGVu
dW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVCbGVuZEVxdWF0aW9uaShjb250ZXh0LCBidWYsIG1vZGUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtMTIyLDcgKzEyMiw3IEBAIEJsZW5kRnVuY1NlcGFyYXRlaShHTHVp
bnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdM
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWkoY29udGV4dCwgYnVmLCBzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBCbGVuZEZ1bmNpKEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxl
bmRGdW5jaShjb250ZXh0LCBidWYsIHNyYywgZHN0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTE2NCw4ICsxNjQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVRyYW5zZm9ybUZl
ZWRiYWNrcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQYWNrZWQgICAg
ICAgICAgPSBGcm9tR0w8Y29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAqPihpZHMpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAq
aWRzUGFja2VkID0gRnJvbUdMPGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrSUQgKj4oaWRzKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURl
bGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTg1LDkgKzE4NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJh
d0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbmRpcmVjdChjb250ZXh0LCBt
b2RlUGFja2VkLCBpbmRpcmVjdCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTIwOCw5ICsyMDgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luZGly
ZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3
RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNU
eXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5kaXJlY3QoY29udGV4dCwg
bW9kZVBhY2tlZCwgdHlwZVBhY2tlZCwgaW5kaXJlY3QpKTsKQEAgLTIzMCw4ICsyMzAsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIERyYXdUcmFuc2Zvcm1GZWVkYmFjayhHTGVudW0gbW9kZSwgR0x1aW50
IGlkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUcmFuc2Zvcm1GZWVkYmFj
a0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJ
RD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVHJhbnNmb3JtRmVl
ZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNm
b3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1RyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIG1vZGUs
IGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1MSw5ICsyNTEsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIERyYXdUcmFuc2Zvcm1GZWVkYmFja1N0cmVhbShHTGVudW0gbW9k
ZSwgR0x1aW50IGlkLCBHTHVpbnQgc3RyZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUcmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVl
ZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVEcmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0oY29udGV4dCwgbW9kZSwgaWRQ
YWNrZWQsIHN0cmVhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTI3MSw3ICsyNzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5SW5kZXhlZChHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRW5kUXVlcnlJbmRleGVkKGNvbnRleHQsIHRhcmdldCwgaW5k
ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjkxLDggKzI5MSw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2VuVHJhbnNmb3JtRmVlZGJhY2tzKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQg
Kmlkc1BhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVkYmFja0lEICo+
KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUcmFuc2Zvcm1GZWVk
YmFja0lEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zv
cm1GZWVkYmFja0lEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoY29udGV4dCwgbiwg
aWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMxOSw5ICszMTksOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVN1YnJvdXRpbmVOYW1lKEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVN1
YnJvdXRpbmVOYW1lKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlcnR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eCwgYnVmc2l6ZSwgbGVuZ3RoLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTM1MCw5ICszNTAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVN1YnJvdXRpbmVVbmlm
b3JtTmFtZShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lVW5pZm9ybU5hbWUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlcnR5cGUsIGlu
ZGV4LCBidWZzaXplLCBsZW5ndGgsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMzgwLDkgKzM4MCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlU3Vicm91dGluZVVu
aWZvcm1pdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRBY3RpdmVTdWJyb3V0aW5lVW5pZm9ybWl2KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHNoYWRlcnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBwbmFtZSwgdmFsdWVzKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQwNSw4ICs0MDUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFByb2dyYW1TdGFnZWl2KEdMdWludCBwcm9ncmFtLCBHTGVudW0gc2hhZGVydHlwZSwgR0xl
bnVtIHBuYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1TdGFnZWl2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlcnR5cGUsIHBuYW1lLCB2YWx1ZXMpKTsKQEAg
LTQzMCw4ICs0MzAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5SW5kZXhlZGl2KEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlR2V0UXVlcnlJbmRleGVkaXYoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQ1Myw5
ICs0NTMsOSBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgR2V0U3Vicm91dGluZUluZGV4KEdMdWludCBw
cm9ncmFtLCBHTGVudW0gc2hhZGVydHlwZSwgY29uc3QgRwogICAgIEdMdWludCByZXR1cm5WYWx1
ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U3Vicm91dGlu
ZUluZGV4KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlcnR5cGUsIG5hbWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00ODksOCArNDg5LDggQEAgR0xpbnQg
R0xfQVBJRU5UUlkgR2V0U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwK
ICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0
U3Vicm91dGluZVVuaWZvcm1Mb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJ0
eXBlLCBuYW1lKSk7CkBAIC01MjQsOCArNTI0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRVbmlm
b3JtU3Vicm91dGluZXVpdihHTGVudW0gc2hhZGVydHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMdWkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1TdWJyb3V0aW5ldWl2KGNvbnRleHQs
IHNoYWRlcnR5cGUsIGxvY2F0aW9uLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC01NDYsMTUgKzU0NiwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVu
aWZvcm1kdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlICpwYXJhbXMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1kdihj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRVbmlmb3JtZHYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1kdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1kdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldFVuaWZvcm1kdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1kdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMp
OwogICAgIH0KIH0KIApAQCAtNTY2LDggKzU2Nyw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJ
c1RyYW5zZm9ybUZlZWRiYWNrKEdMdWludCBpZCkKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0lEIGlk
UGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVl
ZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlSXNUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LCBpZFBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01OTQsNyArNTk1LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBNaW5TYW1wbGVTaGFkaW5nKEdMZmxvYXQgdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNaW5TYW1wbGVTaGFkaW5nKGNvbnRleHQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjEzLDcgKzYxNCw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgUGF0Y2hQYXJhbWV0ZXJmdihHTGVudW0gcG5hbWUsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVQYXRjaFBhcmFtZXRlcmZ2KGNvbnRleHQsIHBuYW1lLCB2YWx1ZXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjMyLDcgKzYzMyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUGF0Y2hQYXJhbWV0ZXJpKEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGF0Y2hQYXJh
bWV0ZXJpKGNvbnRleHQsIHBuYW1lLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC02NTAsNyArNjUxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQYXVzZVRyYW5zZm9ybUZlZWRi
YWNrKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBhdXNlVHJh
bnNmb3JtRmVlZGJhY2soY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTY2Nyw3ICs2NjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlc3VtZVRyYW5zZm9y
bUZlZWRiYWNrKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC02ODUsMTMgKzY4NiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0xZChHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xZChjb250ZXh0
LCBsb2NhdGlvbiwgeCkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVVuaWZvcm0xZChjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgeCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZChs
b2NhdGlvbiwgeCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWQobG9jYXRpb25QYWNr
ZWQsIHgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFkLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0xZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB4KTsKICAgICB9
CiB9CiAKQEAgLTcwNSwxNCArNzA4LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFkdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTFkdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMWR2KGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWR2KGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFkdihsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm0xZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZh
bHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWR2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC03MjQs
MTQgKzcyOCwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yZChHTGludCBsb2NhdGlvbiwg
R0xkb3VibGUgeCwgR0xkb3VibGUgeSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTJkKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5KSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yZChjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgeCwgeSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yZChsb2NhdGlvbiwgeCwgeSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmQobG9jYXRpb25QYWNrZWQsIHgsIHkpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJkLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIHgsIHkpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yZCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB4LCB5KTsKICAgICB9CiB9CiAK
QEAgLTc0NSwxNCArNzUwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJkdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xkb3VibGUgKnZhbHVlCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTJkdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMmR2KGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmR2KGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJkdihsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0yZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC03NjUsMTQgKzc3
MSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zZChHTGludCBsb2NhdGlvbiwgR0xkb3Vi
bGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTNkKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5LCB6KSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0z
ZChjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZChsb2NhdGlv
biwgeCwgeSwgeik7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2QobG9jYXRpb25QYWNr
ZWQsIHgsIHksIHopOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNk
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHgsIHksIHopOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm0zZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2Vk
LCB4LCB5LCB6KTsKICAgICB9CiB9CiAKQEAgLTc4NiwxNCArNzkzLDE1IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVW5pZm9ybTNkdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xk
b3VibGUgKnZhbHVlCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNkdihjb250ZXh0LCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVVbmlmb3JtM2R2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtM2R2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTNkdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2R2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgfQogfQogCkBAIC04MDcsMTQgKzgxNSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00
ZChHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSwgR0xkb3VibGUgeiwgRwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNGQoY29udGV4
dCwgbG9jYXRpb24sIHgsIHksIHosIHcpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRkKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB4
LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTRkKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm00ZChsb2NhdGlvblBhY2tlZCwgeCwgeSwgeiwgdyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgeCwgeSwgeiwgdyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTRkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIHgsIHksIHosIHcpOwog
ICAgIH0KIH0KIApAQCAtODI4LDE0ICs4MzcsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
NGR2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdmFsdWUK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNGR2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwg
dmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00
ZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZHYo
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGR2
KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybTRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00ZHYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAg
LTg1MiwxNCArODYyLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJkdihHTGlu
dCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmR2KGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+
KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJkdihjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MmR2
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtTWF0cml4MmR2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MmR2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MmR2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODc2LDE0ICs4ODksMTcgQEAgdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtTWF0cml4MngzZHYoR0xpbnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDJ4M2R2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDJ4M2R2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNkdihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJ4M2R2
KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MngzZHYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm1NYXRyaXgyeDNkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsK
ICAgICB9CiB9CiAKQEAgLTkwMCwxNCArOTE2LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9y
bU1hdHJpeDJ4NGR2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRkdihj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXgyeDRkdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtTWF0cml4Mng0ZHYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRkdihsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybU1hdHJpeDJ4NGR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
TWF0cml4Mng0ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC05MjQsMTQgKzk0MywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgzZHYoR0xp
bnQgbG9jYXRpb24sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDNkdihjb250ZXh0LCBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZHYoY29udGV4dCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDNk
dihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybU1hdHJpeDNkdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDNkdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDNkdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTk0OCwxNCArOTcwLDE3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4MmR2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgzeDJkdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXgzeDJkdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZHYobG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJk
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmR2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtTWF0cml4M3gyZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7
CiAgICAgfQogfQogCkBAIC05NzIsMTQgKzk5NywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm1NYXRyaXgzeDRkdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZHYo
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0
cml4M3g0ZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+dW5pZm9ybU1hdHJpeDN4NGR2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZHYobG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFVuaWZvcm1NYXRyaXgzeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bU1hdHJpeDN4NGR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApA
QCAtOTk2LDE0ICsxMDI0LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDRkdihH
TGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NGR2KGNvbnRleHQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRkdihjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4
NGR2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250
ZXh0LT51bmlmb3JtTWF0cml4NGR2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NGR2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NGR2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTAyMCwxNCArMTA1MSwxNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0eDJkdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVV
bmlmb3JtTWF0cml4NHgyZHYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
VmFsaWRhdGVVbmlmb3JtTWF0cml4NHgyZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4MmR2KGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4
NHgyZHYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDJkdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4MmR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFs
dWUpOwogICAgIH0KIH0KIApAQCAtMTA0NCwxNCArMTA3OCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm1NYXRyaXg0eDNkdihHTGludCBsb2NhdGlvbiwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4
NHgzZHYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlm
b3JtTWF0cml4NHgzZHYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2R2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZHYobG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXg0eDNkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybU1hdHJpeDR4M2R2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtMTA2Niw4ICsxMTAzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtU3Vicm91
dGluZXN1aXYoR0xlbnVtIHNoYWRlcnR5cGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEcKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1TdWJyb3V0aW5lc3Vpdihjb250ZXh0LCBzaGFkZXJ0
eXBlLCBjb3VudCwgaW5kaWNlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9w
b2ludHNfZ2xfNF8xX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF80XzFfYXV0b2dlbi5jcHAKaW5kZXggYjQyZDMxYTNhYjkyMjk4
Y2QwNGMyMWY5N2E2YTBiOWZiZGIwMjY4Yy4uZGNjY2RkODM2Yjk3NTMzYTNlMTQzNjIxNDJmZjUw
OWEwNjE1ZDdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
L2VudHJ5X3BvaW50c19nbF80XzFfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzFfYXV0b2dlbi5jcHAKQEAgLTM1LDEw
ICszNSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEFjdGl2ZVNoYWRlclByb2dyYW0oR0x1aW50IHBp
cGVsaW5lLCBHTHVpbnQgcHJvZ3JhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdM
PFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQWN0aXZlU2hhZGVyUHJvZ3JhbShj
b250ZXh0LCBwaXBlbGluZVBhY2tlZCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU1LDggKzU1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBC
aW5kUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAg
ICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQmluZFByb2dyYW1QaXBlbGluZShjb250ZXh0LCBwaXBlbGluZVBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xl
YXJEZXB0aGYoR0xmbG9hdCBkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQ2xlYXJEZXB0aGYoY29udGV4dCwgZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTk1LDkgKzk1LDkgQEAgR0x1aW50IEdMX0FQSUVOVFJZIENyZWF0ZVNo
YWRlclByb2dyYW12KEdMZW51bSB0eXBlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIKICAg
ICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
aGFkZXJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJUeXBlPih0eXBlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlU2hh
ZGVyUHJvZ3JhbXYoY29udGV4dCwgdHlwZVBhY2tlZCwgY291bnQsIHN0cmluZ3MpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMjcsOCArMTI3LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBEZWxldGVQcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICpwaXBlbGluZXMpCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBjb25zdCBQcm9n
cmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFja2VkID0gRnJvbUdMPGNvbnN0IFByb2dyYW1QaXBl
bGluZUlEICo+KHBpcGVsaW5lcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVEZWxldGVQcm9ncmFtUGlwZWxpbmVzKGNvbnRleHQsIG4sIHBp
cGVsaW5lc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTE0OCw3ICsxNDgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2VBcnJheXYoR0x1aW50
IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGRvdWJsZSAqdgogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlcHRoUmFuZ2VBcnJheXYo
Y29udGV4dCwgZmlyc3QsIGNvdW50LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTE2OCw3ICsxNjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2VJbmRleGVkKEdMdWlu
dCBpbmRleCwgR0xkb3VibGUgbiwgR0xkb3VibGUgZikKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0aFJhbmdlSW5kZXhlZChjb250ZXh0
LCBpbmRleCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODYsNyArMTg2
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aFJhbmdlZihHTGZsb2F0IG4sIEdMZmxvYXQgZikK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlcHRoUmFuZ2VmKGNv
bnRleHQsIG4sIGYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0y
MDUsOCArMjA1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5Qcm9ncmFtUGlwZWxpbmVzKEdMc2l6
ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXNQYWNrZWQgICAgICAgICAgICA9IEZyb21H
TDxQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5lc1BhY2tlZCA9IEZyb21H
TDxQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuUHJvZ3JhbVBpcGVsaW5lcyhj
b250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RG91YmxlaV92KEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0xkb3VibGUgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RG91YmxlaV92KGNvbnRleHQs
IHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQ2
LDcgKzI0Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXRpX3YoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4LCBHTGZsb2F0ICpkYXRhKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZsb2F0aV92KGNvbnRleHQsIHRhcmdldCwg
aW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjczLDggKzI3Myw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBi
dWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpKTsKQEAgLTMw
MSw4ICszMDEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2co
R0x1aW50IHBpcGVsaW5lLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9n
cmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3Jh
bVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFByb2dyYW1QaXBlbGluZUluZm9Mb2coY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIGJ1ZlNpemUs
IGxlbmd0aCwgaW5mb0xvZykpOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0UHJvZ3JhbVBpcGVsaW5laXYoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW1QaXBlbGlu
ZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJ
RD4ocGlwZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5l
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0UHJvZ3JhbVBpcGVsaW5laXYoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNTMsOCArMzUz
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0xlbnVtIHNo
YWRlcnR5cGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQoY29udGV4dCwgc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSwgcHJlY2lz
aW9uKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM3Nyw4ICszNzcsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYkxkdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgR0xkb3VibGUgKnBhcmFtcwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0
cmliTGR2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMzk2LDggKzM5Niw4IEBAIEdMYm9vbGVhbiBHTF9BUElF
TlRSWSBJc1Byb2dyYW1QaXBlbGluZShHTHVpbnQgcGlwZWxpbmUpCiAgICAgR0xib29sZWFuIHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVs
aW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGlu
ZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9n
cmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNQcm9ncmFtUGlwZWxpbmUoY29udGV4
dCwgcGlwZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDMxLDgg
KzQzMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJvZ3JhbSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtQmluYXJ5KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpKTsKQEAgLTQ1NCw5ICs0
NTQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1QYXJhbWV0ZXJpKEdMdWludCBwcm9ncmFt
LCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IHBuYW1lLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTQ3NSwxNSArNDc1LDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZG91YmxlIHYwKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFkKGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCB2MCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0xZChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTFkKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFkKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTFkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFkLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKQEAg
LTUwMCwxNiArNTAxLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZHYoR0x1
aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWR2KGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFkdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtMWR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xZHYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTUyMywxNSArNTI1LDE2IEBAIHZvaWQgR0xfQVBJRU5U
UlkgUHJvZ3JhbVVuaWZvcm0xZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQgdjApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtMWYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtMWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgdjApOwogICAgIH0KIH0KIApAQCAtNTQ4LDE2ICs1NTEsMTcgQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybTFmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0xZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZnYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtMWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTFmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtNTcxLDE1ICs1
NzUsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHYwKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlm
b3JtMWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtMWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWksIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0KIH0KIApAQCAtNTk2LDE2ICs2MDEs
MTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpdihHTHVpbnQgcHJvZ3JhbSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0xaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xaXYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShQcm9ncmFtVW5pZm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAg
ICAgfQogfQpAQCAtNjE5LDE1ICs2MjUsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTF1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTF1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTF1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
djApOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWkocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtMXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7
CiAgICAgfQogfQogCkBAIC02NDQsMTcgKzY1MSwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtMXVpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm0xdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUp
KTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMXVpdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm0xdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJv
Z3JhbVVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtNjY4LDE1ICs2NzYsMTggQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybTJkKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xkb3Vi
bGUgdjAsIEcKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0yZChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJk
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTJkKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZChwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgdjAsIHYxKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtMmQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAs
IHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJkLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAg
ICAgICAgICAgICAgIHYxKTsKICAgICB9CiB9CiAKQEAgLTY5MywxNiArNzA0LDE3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZHYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmR2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTJkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmR2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0yZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAg
LTcxNywxNSArNzI5LDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZihHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmYoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlm
b3JtMmYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm0yZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAg
fQogfQogCkBAIC03NDIsMTYgKzc1NywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlm
b3JtMmZ2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJm
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmdihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZnYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTJmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CkBAIC03NjUsMTUgKzc4MSwxOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTGludCB2MCwgR0xpbgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTJpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2
MCwgdjEpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtMmkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2
MSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtMmkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7
CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpKHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
UHJvZ3JhbVVuaWZvcm0yaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAs
CisgICAgICAgICAgICAgICAgICAgICAgdjEpOwogICAgIH0KIH0KIApAQCAtNzkwLDE2ICs4MDks
MTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJpdihHTHVpbnQgcHJvZ3JhbSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0yaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMml2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yaXYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJpdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShQcm9ncmFtVW5pZm9ybTJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAg
ICAgfQogfQpAQCAtODEzLDE1ICs4MzMsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0wKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWko
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9j
YXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRp
b24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWkoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
MnVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm0ydWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2
MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMnVpLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAg
ICAgICAgIHYxKTsKICAgICB9CiB9CiAKQEAgLTgzOCwxNyArODYxLDE4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWl2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTJ1aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0ydWl2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTJ1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7
CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aXYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMnVpdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC04NjMsMTUgKzg4NywxOCBAQCBQcm9n
cmFtVW5pZm9ybTNkKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xkb3VibGUgdjAs
IEdMZG91YmxlIHYxLCBHTGRvdQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybTNkKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTNkKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
djAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNkKHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0zZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAgICAgICAgICAgICAgICAgICAgdjIpOwogICAg
IH0KIH0KIApAQCAtODg4LDE2ICs5MTUsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTNkdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0z
ZHYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZHYoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2R2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm0zZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTNkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNkdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtOTEzLDE1ICs5NDEsMTggQEAgUHJv
Z3JhbVVuaWZvcm0zZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAs
IEdMZmxvYXQgdjEsIEdMZmxvYXQKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0zZihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
djAsIHYxLCB2MikpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm0zZihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
djAsIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2YocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtM2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLAorICAgICAgICAgICAgICAgICAgICAgIHYyKTsKICAg
ICB9CiB9CiAKQEAgLTkzOCwxNiArOTY5LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0zZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
M2Z2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAg
ICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNmdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtM2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0zZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291
bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTk2MiwxNSArOTk0LDE4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMaW50IHYwLCBHTGluCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2koY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtM2koY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2kocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybTNpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICB2Mik7CiAg
ICAgfQogfQogCkBAIC05ODcsMTYgKzEwMjIsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybTNpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0zaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOwor
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zaXYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2l2
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm0zaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybTNpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtMTAxMSwxNiArMTA0NywxOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTN1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWkoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aShwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTN1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2
Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwKKyAgICAgICAgICAg
ICAgICAgICAgICB2MSwgdjIpOwogICAgIH0KIH0KIApAQCAtMTAzNywxNyArMTA3NSwxOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtM3Vpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWl2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTA2MiwxNyArMTEw
MSwxOCBAQCBQcm9ncmFtVW5pZm9ybTRkKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xkb3VibGUgdjAsIEdMZG91YmxlIHYxLCBHTGRvdQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTRkKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2
MykpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZChjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybTRkKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRkKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTRkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHYwLCB2MSwgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgdjMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLAorICAgICAgICAgICAgICAgICAgICAg
IHYyLCB2Myk7CiAgICAgfQogfQogCkBAIC0xMDg5LDE2ICsxMTI5LDE3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm00ZHYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtNGR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGR2KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTRkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGR2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm00ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00
ZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTExMTQs
MTcgKzExNTUsMTggQEAgUHJvZ3JhbVVuaWZvcm00ZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm00Zihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm00Zihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00Zihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm00ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLAotICAgICAgICAgICAgICAgICAgICAgIHYzKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRmLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwKKyAgICAgICAgICAgICAg
ICAgICAgICB2MiwgdjMpOwogICAgIH0KIH0KIApAQCAtMTE0MSwxNiArMTE4MywxNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGZ2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRm
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm00ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRmdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1V
bmlmb3JtNGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CkBA
IC0xMTY2LDE3ICsxMjA5LDE4IEBAIFByb2dyYW1Vbmlmb3JtNGkoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRp
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Mykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtNGkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIs
IHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGkocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwKLSAgICAgICAgICAgICAgICAgICAgICB2
Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAgICAg
ICAgICAgICAgICAgICAgdjIsIHYzKTsKICAgICB9CiB9CiAKQEAgLTExOTMsMTYgKzEyMzcsMTcg
QEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTRpdihHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm00aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aXYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAg
fQogfQpAQCAtMTIxOCwxNyArMTI2MywxOCBAQCBQcm9ncmFtVW5pZm9ybTR1aShHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdgogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtNHVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEs
IHYyLCB2MykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTR1aShw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00dWksIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwKLSAgICAgICAgICAg
ICAgICAgICAgICB2Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00dWks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAs
CisgICAgICAgICAgICAgICAgICAgICAgdjEsIHYyLCB2Myk7CiAgICAgfQogfQogCkBAIC0xMjQ1
LDE3ICsxMjkxLDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00dWl2KEdMdWlu
dCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aXYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTR1aXYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTR1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTR1aXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1V
bmlmb3JtNHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQog
CkBAIC0xMjczLDE3ICsxMzIwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1N
YXRyaXgyZHYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MmR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybU1hdHJpeDJkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZHYo
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJkdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybU1hdHJpeDJkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEzMDEsMTcgKzEzNTAsMTkgQEAgdm9pZCBHTF9BUElF
TlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1
ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybU1hdHJpeDJmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
TWF0cml4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTMyOSwxNyArMTM4
MCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZHYoR0x1aW50
IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4MngzZHYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2R2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2R2KHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2R2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybU1hdHJpeDJ4M2R2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZHYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0x
MzU3LDE3ICsxNDEwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDNmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9
CiB9CiAKQEAgLTEzODUsMTcgKzE0NDAsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4NGR2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGR2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdigKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDRkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRkdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4NGR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgIH0KIH0KIApAQCAtMTQxMywxNyArMTQ3MCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNDQxLDE3ICsxNTAwLDE5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZHYoR0x1aW50IHByb2dyYW0sCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
M2R2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
M2R2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDNkdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybU1hdHJpeDNkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDNkdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAg
ICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE0Njks
MTcgKzE1MzAsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihH
THVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0
cml4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
TWF0cml4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwog
ICAgIH0KIH0KIApAQCAtMTQ5NywxNyArMTU2MCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtTWF0cml4M3gyZHYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZHYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1h
dHJpeDN4MmR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmR2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtTWF0cml4M3gyZHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNTI1LDE3ICsxNTkwLDE5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJm
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
M3gyZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dy
YW1Vbmlmb3JtTWF0cml4M3gyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4
M3gyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE1NTMsMTcgKzE2MjAsMTkgQEAg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGR2KEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDN4NGR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDRkdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVu
aWZvcm1NYXRyaXgzeDRkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGR2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTU4MSwxNyAr
MTY1MCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoR0x1
aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybU1hdHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC0xNjA5LDE3ICsxNjgwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0ZHYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybU1hdHJpeDRkdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZHYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDRkdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybU1hdHJpeDRkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKICAgICB9CiB9CiAKQEAgLTE2MzcsMTcgKzE3MTAsMTkgQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSkp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybU1hdHJpeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0
cml4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTY2NSwxNyArMTc0MCwx
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYoR0x1aW50IHBy
b2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtTWF0cml4NHgyZHYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybU1hdHJpeDR4MmR2KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmR2KHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybU1hdHJpeDR4MmR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybU1hdHJpeDR4MmR2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZHYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNjkz
LDE3ICsxNzcwLDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJm
dihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9u
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihs
b2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9
CiAKQEAgLTE3MjEsMTcgKzE4MDAsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4M2R2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2R2KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNk
dihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNkdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4M2R2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtMTc0OSwxNyArMTgzMCwxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bU1hdHJpeDR4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBy
b2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xNzcwLDcgKzE4NTMsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFJlbGVhc2VTaGFkZXJDb21waWxlcigpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVSZWxlYXNlU2hhZGVyQ29tcGlsZXIoY29udGV4dCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3ODksNyArMTg3Miw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgU2Npc3NvckFycmF5dihHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVNjaXNzb3JBcnJheXYoY29udGV4dCwgZmlyc3QsIGNvdW50LCB2KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4MTEsOCArMTg5NCw4IEBAIFNjaXNzb3JJbmRl
eGVkKEdMdWludCBpbmRleCwgR0xpbnQgbGVmdCwgR0xpbnQgYm90dG9tLCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTY2lzc29ySW5kZXhlZChjb250
ZXh0LCBpbmRleCwgbGVmdCwgYm90dG9tLCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTgzMSw3ICsxOTE0LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBTY2lzc29ySW5kZXhlZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTY2lzc29y
SW5kZXhlZHYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMTg1Nyw4ICsxOTQwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBTaGFkZXJCaW5hcnkoR0xzaXpl
aSBjb3VudCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgU2hhZGVy
UHJvZ3JhbUlEICpzaGFkZXJzUGFja2VkICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFNoYWRlclBy
b2dyYW1JRCAqPihzaGFkZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGNvbnN0IFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBTaGFk
ZXJQcm9ncmFtSUQgKj4oc2hhZGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVNoYWRlckJpbmFyeShjb250
ZXh0LCBjb3VudCwgc2hhZGVyc1BhY2tlZCwgYmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCkp
OwpAQCAtMTg4MSw5ICsxOTY0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBVc2VQcm9ncmFtU3RhZ2Vz
KEdMdWludCBwaXBlbGluZSwgR0xiaXRmaWVsZCBzdGFnZXMsIEdMdWludCBwcm8KIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNr
ZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVXNlUHJvZ3Jh
bVN0YWdlcyhjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgc3RhZ2VzLCBwcm9ncmFtUGFja2VkKSk7
CkBAIC0xOTA0LDggKzE5ODcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZhbGlkYXRlUHJvZ3JhbVBp
cGVsaW5lKEdMdWludCBwaXBlbGluZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdM
PFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmFsaWRhdGVQ
cm9ncmFtUGlwZWxpbmUoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMTkyNCw3ICsyMDA3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWJMMWQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4KQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwxZChjb250ZXh0
LCBpbmRleCwgeCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTQ0LDcgKzIwMjcs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkwxZHYoR0x1aW50IGluZGV4LCBjb25z
dCBHTGRvdWJsZSAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMMWR2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE5NjMsNyArMjA0Niw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVmVydGV4QXR0cmliTDJkKEdMdWludCBpbmRleCwgR0xkb3VibGUgeCwgR0xkb3VibGUgeSkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJMMmQoY29udGV4dCwgaW5kZXgsIHgsIHkpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTk4Myw3ICsyMDY2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJMMmR2KEdMdWludCBpbmRleCwgY29uc3QgR0xkb3VibGUgKnYpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliTDJkdihj
b250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMDAzLDcg
KzIwODYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkwzZChHTHVpbnQgaW5kZXgs
IEdMZG91YmxlIHgsIEdMZG91YmxlIHksIEdMZG91YmxlCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliTDNkKGNvbnRleHQs
IGluZGV4LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwMjMsNyAr
MjEwNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliTDNkdihHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMZG91YmxlICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkwzZHYoY29udGV4dCwgaW5kZXgsIHYpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjA0NCw3ICsyMTI3LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBWZXJ0ZXhBdHRyaWJMNGQoR0x1aW50IGluZGV4LCBHTGRvdWJsZSB4LCBHTGRvdWJs
ZSB5LCBHTGRvdWJsZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkw0ZChjb250ZXh0LCBpbmRleCwgeCwgeSwgeiwgdykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMDY0LDcgKzIxNDcsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFZlcnRleEF0dHJpYkw0ZHYoR0x1aW50IGluZGV4LCBjb25zdCBHTGRvdWJsZSAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJMNGR2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTIwODcsNyArMjE3MCw3IEBAIFZlcnRleEF0dHJpYkxQb2ludGVyKEdMdWlu
dCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJMUG9pbnRlcihjb250ZXh0LCBpbmRleCwgc2l6ZSwgdHlw
ZSwgc3RyaWRlLCBwb2ludGVyKSk7CkBAIC0yMTEwLDcgKzIxOTMsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFZpZXdwb3J0QXJyYXl2KEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xm
bG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWaWV3cG9ydEFycmF5dihjb250ZXh0LCBmaXJzdCwgY291bnQsIHYpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjEzMSw3ICsyMjE0LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBWaWV3cG9ydEluZGV4ZWRmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgdywKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWaWV3cG9ydEluZGV4ZWRmKGNvbnRleHQsIGluZGV4LCB4LCB5LCB3LCBoKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxNTEsNyArMjIzNCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVmlld3BvcnRJbmRleGVkZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZp
ZXdwb3J0SW5kZXhlZGZ2KGNvbnRleHQsIGluZGV4LCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRy
eV9wb2ludHNfZ2xfNF8yX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdML2VudHJ5X3BvaW50c19nbF80XzJfYXV0b2dlbi5jcHAKaW5kZXggODM5MWJiYTczMDdi
ZTI1ZmIwODBhNDk0ODY1MzA1MmFmYTM3YjRiZi4uNmVlNzFmMWU0MDIzNDgyYTI5ZTA3MDEyNjBm
OTRiMmViMGIxZjdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdML2VudHJ5X3BvaW50c19nbF80XzJfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzJfYXV0b2dlbi5jcHAKQEAgLTQ1
LDkgKzQ1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kSW1hZ2VUZXh0dXJlKEdMdWludCB1bml0
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRJbWFnZVRleHR1cmUoY29udGV4
dCwgdW5pdCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLCBhY2Nlc3MsIGZvcm1h
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03NCw5ICs3NCw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZShHTGVudW0gbW9kZSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRCYXNlSW5z
dGFuY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNr
ZWQsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2Vjb3VudCwgYmFzZWluc3RhbmNlKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTEwNiw4ICsxMDYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERy
YXdFbGVtZW50c0luc3RhbmNlZEJhc2VJbnN0YW5jZShHTGVudW0gbW9kZSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VJbnN0YW5jZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGlj
ZXMsIGluc3RhbmNlY291bnQsIGJhc2VpbnN0YW5jZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlVmVydGV4QmFzZUluc3RhbmNlKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2UoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBh
Y2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCkBAIC0xNjUsOCArMTY1LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBEcmF3VHJhbnNmb3JtRmVlZGJhY2tJbnN0YW5jZWQoR0xlbnVtIG1vZGUs
IEdMdWludCBpZCwgR0xzaXplaQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
cmFuc2Zvcm1GZWVkYmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJh
bnNmb3JtRmVlZGJhY2tJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3VHJh
bnNmb3JtRmVlZGJhY2tJbnN0YW5jZWQoY29udGV4dCwgbW9kZSwgaWRQYWNrZWQsIGluc3RhbmNl
Y291bnQpKTsKQEAgLTE5Myw4ICsxOTMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdUcmFuc2Zv
cm1GZWVkYmFja1N0cmVhbUluc3RhbmNlZChHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQ+KGlkKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURy
YXdUcmFuc2Zvcm1GZWVkYmFja1N0cmVhbUluc3RhbmNlZCgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlLCBpZFBhY2tlZCwgc3RyZWFt
LCBpbnN0YW5jZWNvdW50KSk7CkBAIC0yMjEsOCArMjIxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRBY3RpdmVBdG9taWNDb3VudGVyQnVmZmVyaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdldEFjdGl2ZUF0b21pY0NvdW50ZXJCdWZmZXJpdigKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBidWZm
ZXJJbmRleCwgcG5hbWUsIHBhcmFtcykpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0SW50ZXJuYWxmb3JtYXRpdihHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0
SW50ZXJuYWxmb3JtYXRpdihjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwg
YnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBN
ZW1vcnlCYXJyaWVyKEdMYml0ZmllbGQgYmFycmllcnMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVNZW1vcnlCYXJyaWVyKGNvbnRleHQsIGJhcnJpZXJzKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjkzLDggKzI5Myw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTFEKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxz
LCBHTGVudW0gaW50ZXJuYWxmb3JtCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdl
MUQoY29udGV4dCwgdGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMxNiw4ICszMTYsOCBAQCBUZXhT
dG9yYWdlMkQoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xzaXplaSB3aWR0aAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJEKGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCkpOwpAQCAtMzQ2LDkgKzM0Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNEKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdl
M0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8zX2F1dG9nZW4uY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzNf
YXV0b2dlbi5jcHAKaW5kZXggYWY5NjE5YzY1YjYwMzBlNGU4ZTlkNmRmN2M4ODMxYjRkMDk5ZTRi
Mi4uOTI1ZDhiMTgyMGQwMjFhYTIxYzk0YTE2MTVlY2ZkOGMxMDgwYjJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzNfYXV0
b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3Bv
aW50c19nbF80XzNfYXV0b2dlbi5jcHAKQEAgLTQwLDggKzQwLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBCaW5kVmVydGV4QnVmZmVyKEdMdWludCBiaW5kaW5naW5kZXgsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVC
aW5kVmVydGV4QnVmZmVyKGNvbnRleHQsIGJpbmRpbmdpbmRleCwgYnVmZmVyUGFja2VkLCBvZmZz
ZXQsIHN0cmlkZSkpOwpAQCAtNjgsNyArNjgsNyBAQCBDbGVhckJ1ZmZlckRhdGEoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlQ2xlYXJCdWZmZXJEYXRhKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgZGF0YSkpOwpAQCAtMTAyLDggKzEwMiw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ2xlYXJCdWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVDbGVhckJ1ZmZlclN1YkRhdGEoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemUsIGZvcm1hdCwgdHlwZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0xNDQsOCArMTQ0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5SW1hZ2VTdWJE
YXRhKEdMdWludCBzcmNOYW1lLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weUltYWdlU3Vi
RGF0YShjb250ZXh0LCBzcmNOYW1lLCBzcmNUYXJnZXQsIHNyY0xldmVsLCBzcmNYLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNZLCBzcmNa
LCBkc3ROYW1lLCBkc3RUYXJnZXQsIGRzdExldmVsLCBkc3RYLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RZLCBkc3RaLCBzcmNXaWR0aCwg
c3JjSGVpZ2h0LCBzcmNEZXB0aCkpOwpAQCAtMTcxLDggKzE3MSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRGVidWdNZXNzYWdlQ2FsbGJhY2soR0xERUJVR1BST0MgY2FsbGJhY2ssIGNvbnN0IHZvaWQg
KnVzZXJQYXJhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFjayhj
b250ZXh0LCBjYWxsYmFjaywgdXNlclBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNz
YWdlQ29udHJvbChHTGVudW0gc291cmNlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJv
bChjb250ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKSk7
CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VJbnNlcnQo
R0xlbnVtIHNvdXJjZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydChjb250ZXh0LCBz
b3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLCBidWYpKTsKQEAgLTI1Myw3ICsyNTMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc3BhdGNoQ29tcHV0ZShHTHVpbnQgbnVtX2dyb3Vwc194
LCBHTHVpbnQgbnVtX2dyb3Vwc195LCBHTHVpbgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRl
KGNvbnRleHQsIG51bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LCBudW1fZ3JvdXBzX3opKTsKQEAg
LTI3NCw3ICsyNzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc3BhdGNoQ29tcHV0ZUluZGlyZWN0
KEdMaW50cHRyIGluZGlyZWN0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KGNvbnRleHQsIGluZGly
ZWN0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI5NSw4ICsyOTUsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyUGFyYW1ldGVyaShHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJQ
YXJhbWV0ZXJpKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzI3LDggKzMyNyw4IEBAIEdMdWludCBHTF9BUElF
TlRSWSBHZXREZWJ1Z01lc3NhZ2VMb2coR0x1aW50IGNvdW50LAogICAgIEdMdWludCByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2coY29udGV4dCwg
Y291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVuZ3Rocywg
bWVzc2FnZUxvZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zNjEsOCArMzYxLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnAKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMzg4LDggKzM4OCw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0SW50ZXJuYWxmb3JtYXRpNjR2KEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRJbnRlcm5hbGZvcm1hdGk2NHYoY29udGV4dCwgdGFyZ2V0
LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTQxMyw3ICs0MTMsNyBAQCBHZXRPYmplY3RMYWJlbChHTGVudW0g
aWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWwoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOwpAQCAtNDM3LDggKzQzNyw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0T2JqZWN0UHRyTGFiZWwoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJlbChj
b250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC00NjIsOSArNDYyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRQcm9ncmFtSW50ZXJmYWNlaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbUludGVyZmFjZWl2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5hbWUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00OTAsOCArNDkwLDggQEAgR0x1aW50IEdMX0FQSUVOVFJZ
IEdldFByb2dyYW1SZXNvdXJjZUluZGV4KEdMdWludCBwcm9ncmFtLAogICAgIEdMdWludCByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNl
SW5kZXgoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpOwpA
QCAtNTI3LDggKzUyNyw4IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZUxv
Y2F0aW9uKEdMdWludCBwcm9ncmFtLAogICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbihjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lKSk7CkBAIC01NjUsOCArNTY1LDgg
QEAgR0xpbnQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleChHTHVp
bnQgcHJvZ3JhbSwKICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFBy
b2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFj
ZSwgbmFtZSkpOwpAQCAtNjA3LDkgKzYwNyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3Jh
bVJlc291cmNlTmFtZShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjQyLDggKzY0Miw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlaXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlaXYoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgaW5kZXgsCkBAIC02NjUsOCArNjY1LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlQnVmZmVyRGF0YShHTHVpbnQgYnVmZmVyKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUludmFs
aWRhdGVCdWZmZXJEYXRhKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC02ODcsOSArNjg3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRl
QnVmZmVyU3ViRGF0YShHTHVpbnQgYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUludmFsaWRhdGVCdWZmZXJTdWJEYXRhKGNvbnRleHQs
IGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlk
YXRlRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUludmFsaWRhdGVGcmFt
ZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cykpOwpA
QCAtNzQzLDggKzc0Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgSW52YWxpZGF0ZVN1YkZyYW1lYnVm
ZmVyKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2ht
ZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC03NjUsOSArNzY1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlVGV4SW1hZ2UoR0x1
aW50IHRleHR1cmUsIEdMaW50IGxldmVsKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUludmFsaWRhdGVUZXhJbWFnZShjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc5NCw5ICs3OTQsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIEludmFsaWRhdGVUZXhTdWJJbWFnZShHTHVpbnQgdGV4dHVyZSwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJbnZhbGlkYXRlVGV4U3ViSW1hZ2UoY29udGV4dCwg
dGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwgZGVwdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODIzLDcgKzgy
Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1v
ZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbmRpcmVjdChjb250ZXh0LCBtb2RlLCBp
bmRpcmVjdCwgZHJhd2NvdW50LCBzdHJpZGUpKTsKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIE11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3QoR0xlbnVtIG1vZGUsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVNdWx0aURyYXdFbGVtZW50c0luZGlyZWN0KGNvbnRleHQsIG1vZGUsIHR5cGUsIGluZGly
ZWN0LCBkcmF3Y291bnQsIHN0cmlkZSkpOwpAQCAtODc2LDggKzg3Niw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgT2JqZWN0TGFiZWwoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVp
IGxlbmd0aCwgY29uCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVPYmplY3RMYWJlbChjb250ZXh0
LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgT2Jq
ZWN0UHRyTGFiZWwoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFy
ICpsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlT2JqZWN0UHRyTGFiZWwoY29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFBv
cERlYnVnR3JvdXAoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
UG9wRGVidWdHcm91cChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtOTM2LDggKzkzNiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHVzaERlYnVnR3JvdXAo
R0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBHTHNpemVpIGxlbmd0aCwgY29uc3QKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwKGNvbnRleHQsIHNvdXJjZSwgaWQsIGxlbmd0
aCwgbWVzc2FnZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTk1
OSw5ICs5NTksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNoYWRlclN0b3JhZ2VCbG9ja0JpbmRpbmco
R0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlU2hhZGVyU3RvcmFnZUJsb2NrQmluZGluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgc3RvcmFnZUJsb2NrSW5kZXgsIHN0b3JhZ2VC
bG9ja0JpbmRpbmcpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTkwLDggKzk5MCw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4QnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQs
IGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplKSk7CkBAIC0xMDIxLDggKzEwMjEsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZShjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTEwNTYsOCArMTA1Niw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNETXVsdGlzYW1wbGUoR0xlbnVtIHRhcmdl
dCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAtMTA5Miw4
ICsxMDkyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlVmlldyhHTHVpbnQgdGV4dHVyZSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1
cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlVmlldyhjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCB0
YXJnZXQsIG9yaWd0ZXh0dXJlLCBpbnRlcm5hbGZvcm1hdCwKQEAgLTExMTcsOCArMTExNyw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliQmluZGluZyhHTHVpbnQgYXR0cmliaW5kZXgs
IEdMdWludCBiaW5kaW5naW5kZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJCaW5kaW5nKGNvbnRleHQsIGF0dHJpYmluZGV4LCBiaW5kaW5naW5kZXgpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTQzLDkgKzExNDMsOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIFZlcnRleEF0dHJpYkZvcm1hdChHTHVpbnQgYXR0cmliaW5kZXgsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJGb3JtYXQoY29udGV4
dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCwgcmVsYXRpdmVvZmZz
ZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTE3MSw4ICsxMTcxLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFj
a2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlw
ZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQoY29udGV4dCwgYXR0
cmliaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIHJlbGF0aXZlb2Zmc2V0KSk7CkBAIC0xMTk5LDcg
KzExOTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkxGb3JtYXQoR0x1aW50IGF0
dHJpYmluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliTEZvcm1hdChjb250ZXh0LCBhdHRy
aWJpbmRleCwgc2l6ZSwgdHlwZSwgcmVsYXRpdmVvZmZzZXQpKTsKQEAgLTEyMjAsOCArMTIyMCw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QmluZGluZ0Rpdmlzb3IoR0x1aW50IGJpbmRpbmdp
bmRleCwgR0x1aW50IGRpdmlzb3IpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhCaW5k
aW5nRGl2aXNvcihjb250ZXh0LCBiaW5kaW5naW5kZXgsIGRpdmlzb3IpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF80X2F1dG9nZW4uY3Bw
CmluZGV4IDk4NWY0YzJlNmM1ZDgwNGMwMWRjMDk3ZTFlNjM1MDhhNjFkY2U1YjkuLmE2OTdiNDIy
NmFlZjhjYmY2NWVjMzM3YWFmOTkwZDQ2ODk4OTc1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF80X2F1dG9nZW4uY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF80
X2F1dG9nZW4uY3BwCkBAIC0zOCw5ICszOCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZl
cnNCYXNlKEdMZW51bSB0YXJnZXQsIEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJz
UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJz
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kQnVmZmVyc0Jh
c2UoY29udGV4dCwgdGFyZ2V0LCBmaXJzdCwgY291bnQsIGJ1ZmZlcnNQYWNrZWQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02Nyw4ICs2Nyw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgQmluZEJ1ZmZlcnNSYW5nZShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUJpbmRCdWZmZXJzUmFuZ2UoY29udGV4dCwgdGFyZ2V0LCBmaXJzdCwgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmZmVyc1BhY2tlZCwgb2Zmc2V0cywgc2l6ZXMpKTsKQEAgLTkxLDggKzkxLDggQEAg
dm9pZCBHTF9BUElFTlRSWSBCaW5kSW1hZ2VUZXh0dXJlcyhHTHVpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMdWludCAqdGUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRJbWFn
ZVRleHR1cmVzKGNvbnRleHQsIGZpcnN0LCBjb3VudCwgdGV4dHVyZXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBCaW5kU2FtcGxlcnMoR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnNhbXBsZXIKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVCaW5kU2FtcGxlcnMoY29udGV4dCwgZmlyc3QsIGNvdW50LCBzYW1wbGVycykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBCaW5kVGV4dHVyZXMoR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQgKnRleHR1cmUKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVCaW5kVGV4dHVyZXMoY29udGV4dCwgZmlyc3QsIGNvdW50LCB0ZXh0dXJl
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNTksOCArMTU5LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBCaW5kVmVydGV4QnVmZmVycyhHTHVpbnQgZmlyc3QsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZl
cnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVCaW5kVmVydGV4QnVmZmVycyhjb250ZXh0LCBmaXJzdCwgY291
bnQsIGJ1ZmZlcnNQYWNrZWQsIG9mZnNldHMsIHN0cmlkZXMpKTsKQEAgLTE4NSw4ICsxODUsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlclN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0
ciBzaXplLCBjb25zdCB2b2lkICpkYXRhLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQnVmZmVy
U3RvcmFnZShjb250ZXh0LCB0YXJnZXQsIHNpemUsIGRhdGEsIGZsYWdzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjA4LDggKzIwOCw4IEBAIENsZWFyVGV4SW1h
Z2UoR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ2xlYXJUZXhJbWFnZShjb250ZXh0LCB0
ZXh0dXJlUGFja2VkLCBsZXZlbCwgZm9ybWF0LCB0eXBlLCBkYXRhKSk7CkBAIC0yNDUsOCArMjQ1
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhclRleFN1YkltYWdlKEdMdWludCB0ZXh0dXJlLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICBWYWxpZGF0ZUNsZWFyVGV4U3ViSW1hZ2UoY29udGV4dCwgdGV4dHVyZVBhY2tl
ZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNV9hdXRvZ2VuLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81
X2F1dG9nZW4uY3BwCmluZGV4IDhiY2JiZWM5YjFiOWY5ZGJlMjRhYjMyZDVjMTU4MDE0ZGVhMjcw
NzguLmY0ZDQ2ZmMwM2Q5NzliZGE2YTM3ODY4NjJmNzMyMGU3MzE0ZDQ0MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF81X2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTC9lbnRyeV9w
b2ludHNfZ2xfNF81X2F1dG9nZW4uY3BwCkBAIC0zNSw4ICszNSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQmluZFRleHR1cmVVbml0KEdMdWludCB1bml0LCBHTHVpbnQgdGV4dHVyZSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmlu
ZFRleHR1cmVVbml0KGNvbnRleHQsIHVuaXQsIHRleHR1cmVQYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsaXROYW1l
ZEZyYW1lYnVmZmVyKEdMdWludCByZWFkRnJhbWVidWZmZXIsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVCbGl0TmFt
ZWRGcmFtZWJ1ZmZlcihjb250ZXh0LCByZWFkRnJhbWVidWZmZXIsIGRyYXdGcmFtZWJ1ZmZlciwg
c3JjWDAsIHNyY1kwLApAQCAtOTYsOCArOTYsOCBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2hlY2tO
YW1lZEZyYW1lYnVmZmVyU3RhdHVzKEdMdWludCBmcmFtZWJ1ZmZlciwgR0xlbnVtIHRhcmdldAog
ICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxG
cmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNoZWNrTmFtZWRGcmFtZWJ1ZmZlclN0YXR1
cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgdGFyZ2V0KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTEzNCw5ICsxMzQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFy
TmFtZWRCdWZmZXJEYXRhKEdMdWludCBidWZmZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZm
ZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVDbGVhck5hbWVkQnVmZmVyRGF0YShjb250ZXh0LCBidWZmZXJQYWNrZWQsIGludGVybmFsZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0LCB0eXBlLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTE2OCw5ICsxNjgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyTmFtZWRCdWZmZXJTdWJEYXRh
KEdMdWludCBidWZmZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhck5hbWVkQnVm
ZmVyU3ViRGF0YShjb250ZXh0LCBidWZmZXJQYWNrZWQsIGludGVybmFsZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0LCBzaXplLCBmb3JtYXQsIHR5cGUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTk4LDkgKzE5OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJOYW1lZEZyYW1lYnVm
ZmVyZmkoR0x1aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9t
R0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZmZXJJRCBm
cmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZm
ZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZmZXJmaShjb250ZXh0LCBmcmFtZWJ1
ZmZlclBhY2tlZCwgYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjI2LDkgKzIyNiw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ2xlYXJOYW1lZEZyYW1lYnVmZmVyZnYoR0x1aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2Vk
ICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhck5hbWVkRnJhbWVidWZm
ZXJmdihjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlciwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU0LDkgKzI1NCw5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ2xlYXJOYW1lZEZyYW1lYnVmZmVyaXYoR0x1aW50IGZyYW1lYnVmZmVy
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1l
YnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVi
dWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhck5h
bWVkRnJhbWVidWZmZXJpdihjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd2J1ZmZlciwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjgyLDkg
KzI4Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJOYW1lZEZyYW1lYnVmZmVydWl2KEdMdWlu
dCBmcmFtZWJ1ZmZlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgRnJhbWVi
dWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVm
ZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1l
YnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQ2xlYXJOYW1lZEZyYW1lYnVmZmVydWl2KGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2Vk
LCBidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHJhd2J1ZmZlciwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xpcENvbnRyb2woR0xl
bnVtIG9yaWdpbiwgR0xlbnVtIGRlcHRoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsaXBDb250cm9sKGNvbnRleHQsIG9yaWdpbiwgZGVw
dGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzMzLDggKzMzMyw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleHR1cmVTdWJJbWFnZTFEKEdMdWludCB0ZXh0dXJlLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbXByZXNz
ZWRUZXh0dXJlU3ViSW1hZ2UxRCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwg
eG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpKTsKQEAgLTM2OCw4
ICszNjgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXh0dXJlU3ViSW1hZ2UyRChH
THVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4dHVyZVN1Yklt
YWdlMkQoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCkBA
IC00MDYsOSArNDA2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4dHVyZVN1Yklt
YWdlM0QoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29t
cHJlc3NlZFRleHR1cmVTdWJJbWFnZTNEKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKSk7CkBAIC00MzcsOCArNDM3LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBDb3B5TmFtZWRCdWZmZXJTdWJEYXRhKEdMdWludCByZWFkQnVmZmVyLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlQ29weU5hbWVkQnVmZmVyU3ViRGF0YShjb250ZXh0LCByZWFkQnVm
ZmVyLCB3cml0ZUJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhZE9mZnNldCwgd3JpdGVPZmZzZXQsIHNpemUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDYxLDggKzQ2MSw4IEBAIENvcHlUZXh0dXJlU3Vi
SW1hZ2UxRChHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHgsIEdMaW50CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0
ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRl
eHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleHR1cmVTdWJJbWFnZTFEKGNvbnRl
eHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB4LCB5LCB3aWR0aCkpOwpAQCAtNDky
LDkgKzQ5Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmVTdWJJbWFnZTJEKEdMdWlu
dCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQg
dGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0
ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXh0dXJlU3Vi
SW1hZ2UyRChjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgeG9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUy
Niw5ICs1MjYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXh0dXJlU3ViSW1hZ2UzRChHTHVp
bnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlE
IHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4o
dGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4dHVyZVN1
YkltYWdlM0QoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNl
dCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC01NDksOCArNTQ5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDcmVhdGVCdWZmZXJzKEdM
c2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8QnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNyZWF0ZUJ1ZmZlcnMoY29udGV4dCwg
biwgYnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01NzAsNyAr
NTcwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDcmVhdGVGcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBH
THVpbnQgKmZyYW1lYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVGcmFtZWJ1ZmZlcnMoY29udGV4dCwgbiwgZnJhbWVi
dWZmZXJzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU5MCw3ICs1OTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENyZWF0ZVByb2dyYW1QaXBlbGluZXMoR0xzaXplaSBuLCBHTHVpbnQg
KnBpcGVsaW5lcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVDcmVhdGVQcm9ncmFtUGlwZWxpbmVzKGNvbnRleHQsIG4sIHBpcGVsaW5lcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBDcmVhdGVRdWVyaWVzKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbiwgR0x1aW50ICpp
ZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQ3JlYXRlUXVlcmllcyhjb250ZXh0LCB0YXJnZXQsIG4sIGlkcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC02MzAsOSArNjMwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDcmVhdGVS
ZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1Bh
Y2tlZCAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxS
ZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlUmVuZGVyYnVmZmVycyhjb250ZXh0
LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ3JlYXRlU2FtcGxl
cnMoR0xzaXplaSBuLCBHTHVpbnQgKnNhbXBsZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNyZWF0ZVNhbXBsZXJzKGNvbnRleHQsIG4s
IHNhbXBsZXJzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY3MCw3ICs2NzAsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIENyZWF0ZVRleHR1cmVzKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkg
biwgR0x1aW50ICp0ZXh0dXJlcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVUZXh0dXJlcyhjb250ZXh0LCB0YXJnZXQsIG4sIHRl
eHR1cmVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY5MCw3ICs2OTAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrcyhHTHNpemVpIG4sIEdMdWlu
dCAqaWRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrcyhjb250ZXh0LCBuLCBpZHMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzEwLDggKzcxMCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q3JlYXRlVmVydGV4QXJyYXlzKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVDcmVhdGVWZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTczMCw5ICs3MzAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IERpc2FibGVWZXJ0ZXhBcnJheUF0dHJpYihHTHVpbnQgdmFvYmosIEdMdWludCBpbmRleCkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGlzYWJsZVZlcnRleEFycmF5QXR0cmli
KGNvbnRleHQsIHZhb2JqUGFja2VkLCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTc1MCw5ICs3NTAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZVZl
cnRleEFycmF5QXR0cmliKEdMdWludCB2YW9iaiwgR0x1aW50IGluZGV4KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVmVy
dGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VmVydGV4QXJyYXlJRD4odmFvYmopOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVFbmFibGVWZXJ0ZXhBcnJheUF0dHJpYihjb250ZXh0LCB2
YW9ialBhY2tlZCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC03NzIsOCArNzcyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBGbHVzaE1hcHBlZE5hbWVkQnVm
ZmVyUmFuZ2UoR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHMKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUZsdXNoTWFwcGVkTmFtZWRCdWZmZXJSYW5nZShjb250ZXh0LCBidWZmZXJQYWNrZWQsIG9m
ZnNldCwgbGVuZ3RoKSk7CkBAIC03OTMsOCArNzkzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5l
cmF0ZVRleHR1cmVNaXBtYXAoR0x1aW50IHRleHR1cmUpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlbmVyYXRlVGV4dHVyZU1p
cG1hcChjb250ZXh0LCB0ZXh0dXJlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTgxOCw4ICs4MTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldENvbXByZXNzZWRUZXh0dXJl
SW1hZ2UoR0x1aW50IHRleHR1cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0Q29tcHJlc3NlZFRl
eHR1cmVJbWFnZShjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgYnVmU2l6ZSwgcGl4ZWxz
KSk7CkBAIC04NTMsOCArODUzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRDb21wcmVzc2VkVGV4
dHVyZVN1YkltYWdlKEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldENvbXBy
ZXNzZWRUZXh0dXJlU3ViSW1hZ2UoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsCkBAIC04NzcsNyArODc3LDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIEdldEdy
YXBoaWNzUmVzZXRTdGF0dXMoKQogICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRHcmFwaGljc1Jlc2V0U3RhdHVzKGNvbnRl
eHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05MDcsOCArOTA3
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXROYW1lZEJ1ZmZlclBhcmFtZXRlcmk2NHYoR0x1aW50
IGJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludDYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUGFyYW1ldGVyaTY0digKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCBidWZmZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtOTMwLDggKzkzMCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TmFtZWRCdWZmZXJQ
YXJhbWV0ZXJpdihHTHVpbnQgYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclBhcmFt
ZXRlcml2KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05NTIsOSArOTUyLDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXROYW1lZEJ1ZmZlclBvaW50ZXJ2KEdMdWludCBidWZmZXIsIEdMZW51bSBwbmFtZSwgdm9p
ZCAqKnBhcmEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVm
ZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZm
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE5hbWVkQnVmZmVyUG9pbnRl
cnYoY29udGV4dCwgYnVmZmVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtOTc1LDggKzk3NSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0TmFtZWRCdWZmZXJTdWJEYXRhKEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9mZnNldCwg
R0xzaXplaXB0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1
ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVm
ZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklE
PihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXROYW1lZEJ1ZmZlclN1YkRhdGEoY29udGV4dCwg
YnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUsIGRhdGEpKTsKQEAgLTEwMDQsOSArMTAwNCw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0TmFtZWRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dihHTHVpbnQgZnJhbWVidWZmZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxG
cmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1l
YnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklE
PihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2Vk
LCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTEwMzAsOCArMTAzMCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TmFtZWRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2KEdMdWludCBmcmFtZWJ1ZmZlciwgR0xlbnVtIHBuYW1lCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFt
ZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldE5hbWVkRnJhbWVidWZmZXJQYXJhbWV0ZXJpdihj
b250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CkBAIC0xMDU2LDggKzEw
NTYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE5hbWVkUmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYo
R0x1aW50IHJlbmRlcmJ1ZmZlciwgR0xlbnVtIHBuYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAg
PSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBG
cm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldE5h
bWVkUmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CkBAIC0xMDgxLDggKzEwODEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFF1ZXJ5QnVmZmVyT2JqZWN0aTY0dihHTHVpbnQgaWQsIEdMdWludCBidWZmZXIsIEdMZW51bSBw
bmFtZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVm
ZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlCdWZmZXJPYmplY3RpNjR2KGNvbnRleHQsIGlk
LCBidWZmZXJQYWNrZWQsIHBuYW1lLCBvZmZzZXQpKTsKQEAgLTExMDYsOCArMTEwNiw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlCdWZmZXJPYmplY3RpdihHTHVpbnQgaWQsIEdMdWludCBi
dWZmZXIsIEdMZW51bSBwbmFtZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVm
ZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0
aXYoY29udGV4dCwgaWQsIGJ1ZmZlclBhY2tlZCwgcG5hbWUsIG9mZnNldCkpOwpAQCAtMTEzMSw4
ICsxMTMxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeUJ1ZmZlck9iamVjdHVpNjR2KEdM
dWludCBpZCwgR0x1aW50IGJ1ZmZlciwgR0xlbnVtIHBuYW0KIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFF1
ZXJ5QnVmZmVyT2JqZWN0dWk2NHYoY29udGV4dCwgaWQsIGJ1ZmZlclBhY2tlZCwgcG5hbWUsIG9m
ZnNldCkpOwpAQCAtMTE1Niw4ICsxMTU2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeUJ1
ZmZlck9iamVjdHVpdihHTHVpbnQgaWQsIEdMdWludCBidWZmZXIsIEdMZW51bSBwbmFtZSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldFF1ZXJ5QnVmZmVyT2JqZWN0dWl2KGNvbnRleHQsIGlkLCBidWZmZXJQ
YWNrZWQsIHBuYW1lLCBvZmZzZXQpKTsKQEAgLTExODYsOCArMTE4Niw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VGV4dHVyZUltYWdlKEdMdWludCB0ZXh0dXJlLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFRleHR1cmVJbWFnZShjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgZm9ybWF0LCB0
eXBlLCBidWZTaXplLCBwaXhlbHMpKTsKQEAgLTEyMTQsOCArMTIxNCw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyZnYoR0x1aW50IHRleHR1cmUsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyZnYoY29udGV4dCwgdGV4dHVyZVBh
Y2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTEyNDIsOCArMTI0Miw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyaXYoR0x1aW50IHRleHR1cmUsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0VGV4dHVyZUxldmVsUGFyYW1ldGVyaXYoY29udGV4dCwgdGV4
dHVyZVBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTEyNjYsOSArMTI2Niw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4dHVyZVBhcmFtZXRlcklpdihHTHVpbnQgdGV4dHVyZSwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0VGV4dHVyZVBhcmFtZXRlcklpdihjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTI4OSw5ICsx
Mjg5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXh0dXJlUGFyYW1ldGVySXVpdihHTHVpbnQg
dGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnAKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVySXVpdihjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MTMxMiw5ICsxMzEyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXh0dXJlUGFyYW1ldGVyZnYo
R0x1aW50IHRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGEKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJl
SUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRUZXh0dXJlUGFyYW1ldGVyZnYoY29udGV4dCwgdGV4dHVyZVBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTEzMzQsOSArMTMzNCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4dHVyZVBhcmFt
ZXRlcml2KEdMdWludCB0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4dHVyZVBhcmFtZXRlcml2KGNvbnRleHQsIHRl
eHR1cmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0xMzcyLDggKzEzNzIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleHR1
cmVTdWJJbWFnZShHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXh0dXJl
U3ViSW1hZ2UoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsCkBAIC0xMzk5LDggKzEzOTksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRyYW5z
Zm9ybUZlZWRiYWNraTY0X3YoR0x1aW50IHhmYiwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpNjRfdihjb250ZXh0
LCB4ZmIsIHBuYW1lLCBpbmRleCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0xNDIxLDggKzE0MjEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRyYW5z
Zm9ybUZlZWRiYWNraV92KEdMdWludCB4ZmIsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpX3YoY29udGV4dCwg
eGZiLCBwbmFtZSwgaW5kZXgsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTQ0Miw4ICsxNDQyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUcmFuc2Zv
cm1GZWVkYmFja2l2KEdMdWludCB4ZmIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tpdihjb250ZXh0LCB4ZmIs
IHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTE0NjQsOCArMTQ2NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXJyYXlJbmRleGVk
NjRpdihHTHVpbnQgdmFvYmosIEdMdWludCBpbmRleCwgR0xlbnVtIHBuCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFZlcnRleEFycmF5SW5kZXhlZDY0aXYoY29udGV4dCwgdmFvYmpQYWNrZWQs
IGluZGV4LCBwbmFtZSwgcGFyYW0pKTsKQEAgLTE0ODksOCArMTQ4OSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VmVydGV4QXJyYXlJbmRleGVkaXYoR0x1aW50IHZhb2JqLCBHTHVpbnQgaW5kZXgs
IEdMZW51bSBwbmFtCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFy
cmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJh
eUlEPih2YW9iaik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhB
cnJheUlEIHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxW
ZXJ0ZXhBcnJheUlEPih2YW9iaik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEFycmF5SW5kZXhl
ZGl2KGNvbnRleHQsIHZhb2JqUGFja2VkLCBpbmRleCwgcG5hbWUsIHBhcmFtKSk7CkBAIC0xNTEz
LDkgKzE1MTMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEFycmF5aXYoR0x1aW50IHZh
b2JqLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEFycmF5SUQg
dmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFy
cmF5SUQ+KHZhb2JqKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VmVydGV4QXJyYXlpdihjb250ZXh0LCB2YW9ialBhY2tlZCwgcG5hbWUs
IHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTUzOCw4
ICsxNTM4LDggQEAgR2V0bkNvbG9yVGFibGUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgdm9pZAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0bkNvbG9yVGFibGUoY29udGV4dCwgdGFyZ2V0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
IHRhYmxlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU2MCw4
ICsxNTYwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuQ29tcHJlc3NlZFRleEltYWdlKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxvZCwgR0xzaXplaSBidWZTaXoKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldG5Db21wcmVzc2VkVGV4SW1hZ2UoY29udGV4dCwgdGFyZ2V0LCBsb2QsIGJ1ZlNpemUs
IHBpeGVscykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1ODQs
NyArMTU4NCw3IEBAIEdldG5Db252b2x1dGlvbkZpbHRlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuQ29u
dm9sdXRpb25GaWx0ZXIoY29udGV4dCwgdGFyZ2V0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGlt
YWdlKSk7CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5IaXN0b2dy
YW0oR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5IaXN0b2dyYW0oY29udGV4dCwgdGFy
Z2V0LCByZXNldCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCB2YWx1ZXMpKTsKQEAgLTE2MzgsNyAr
MTYzOCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0bk1hcGR2KEdMZW51bSB0YXJnZXQsIEdMZW51
bSBxdWVyeSwgR0xzaXplaSBidWZTaXplLCBHTGRvdWJsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0bk1hcGR2KGNvbnRleHQsIHRhcmdl
dCwgcXVlcnksIGJ1ZlNpemUsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY2
MCw3ICsxNjYwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuTWFwZnYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHF1ZXJ5LCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRuTWFwZnYoY29udGV4dCwg
dGFyZ2V0LCBxdWVyeSwgYnVmU2l6ZSwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0xNjgyLDcgKzE2ODIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5NYXBpdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcXVlcnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKgogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldG5NYXBpdihjb250
ZXh0LCB0YXJnZXQsIHF1ZXJ5LCBidWZTaXplLCB2KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTE3MTAsNyArMTcxMCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0bk1pbm1heChHTGVu
dW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0bk1pbm1heChjb250ZXh0LCB0YXJnZXQsIHJlc2V0
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIHZhbHVlcykpOwpAQCAtMTczMyw3ICsxNzMzLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRuUGl4ZWxNYXBmdihHTGVudW0gbWFwLCBHTHNpemVpIGJ1ZlNp
emUsIEdMZmxvYXQgKnZhbHVlcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRuUGl4ZWxNYXBmdihjb250ZXh0LCBtYXAsIGJ1ZlNpemUs
IHZhbHVlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzUzLDcgKzE3NTMsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldG5QaXhlbE1hcHVpdihHTGVudW0gbWFwLCBHTHNpemVpIGJ1
ZlNpemUsIEdMdWludCAqdmFsdWVzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldG5QaXhlbE1hcHVpdihjb250ZXh0LCBtYXAsIGJ1ZlNp
emUsIHZhbHVlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNzc0LDcgKzE3NzQs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5QaXhlbE1hcHVzdihHTGVudW0gbWFwLCBHTHNpemVp
IGJ1ZlNpemUsIEdMdXNob3J0ICp2YWx1ZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0blBpeGVsTWFwdXN2KGNvbnRleHQsIG1hcCwg
YnVmU2l6ZSwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3OTQsNyAr
MTc5NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blBvbHlnb25TdGlwcGxlKEdMc2l6ZWkgYnVm
U2l6ZSwgR0x1Ynl0ZSAqcGF0dGVybikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRuUG9seWdvblN0aXBwbGUoY29udGV4dCwgYnVmU2l6
ZSwgcGF0dGVybikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODI3LDggKzE4Mjcs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5TZXBhcmFibGVGaWx0ZXIoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5TZXBhcmFibGVGaWx0ZXIoY29udGV4dCwgdGFy
Z2V0LCBmb3JtYXQsIHR5cGUsIHJvd0J1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdywgY29sdW1uQnVmU2l6ZSwgY29sdW1u
LCBzcGFuKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4NTQsNyArMTg1NCw3IEBA
IEdldG5UZXhJbWFnZShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVGV4SW1hZ2UoY29udGV4
dCwgdGFyZ2V0LCBsZXZlbCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBwaXhlbHMpKTsKQEAgLTE4
NzcsMTYgKzE4NzcsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWR2KEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRh
dGVHZXRuVW5pZm9ybWR2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXpl
LCBwYXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZHYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5V
bmlmb3JtZHYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWR2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBidWZTaXplLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0blVuaWZvcm1kdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCBidWZTaXplLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZHYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTE5MDEsMTYgKzE5
MDIsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5p
Zm9ybWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMp
KTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnYo
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRuVW5pZm9ybWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZT
aXplLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZv
cm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZT
aXplLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTE5MjUsMTYgKzE5MjcsMTcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBidWZTaXplLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpKTsKKyAgICAg
ICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtaXYocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRuVW5pZm9ybWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJh
bXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAorICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTE5NDksMTYgKzE5NTIsMTcgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRuVW5pZm9ybXVpdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgYnVmU2l6ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9j
YXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm11aXYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcykpOworICAgICAgICAgICAg
IFZhbGlkYXRlR2V0blVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVu
aWZvcm11aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcyk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVpdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAorICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zKTsKICAgICB9CiB9CkBAIC0xOTc1LDkgKzE5NzksOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIEludmFsaWRhdGVOYW1lZEZyYW1lYnVmZmVyRGF0YShHTHVpbnQgZnJhbWVidWZmZXIsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZm
ZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZl
cik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUludmFsaWRhdGVO
YW1lZEZyYW1lYnVmZmVyRGF0YShjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMjAwNiw4ICsyMDEwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlTmFtZWRG
cmFtZWJ1ZmZlclN1YkRhdGEoR0x1aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAg
ICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVJbnZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclN1YkRhdGEoY29udGV4
dCwgZnJhbWVidWZmZXJQYWNrZWQsIG51bUF0dGFjaG1lbnRzLApAQCAtMjAzMSw4ICsyMDM1LDgg
QEAgdm9pZCAqR0xfQVBJRU5UUlkgTWFwTmFtZWRCdWZmZXIoR0x1aW50IGJ1ZmZlciwgR0xlbnVt
IGFjY2VzcykKICAgICB2b2lkICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwTmFtZWRCdWZmZXIoY29udGV4dCwg
YnVmZmVyUGFja2VkLCBhY2Nlc3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjA2
OCw4ICsyMDcyLDggQEAgdm9pZCAqR0xfQVBJRU5UUlkgTWFwTmFtZWRCdWZmZXJSYW5nZShHTHVp
bnQgYnVmZmVyLAogICAgIHZvaWQgKnJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZU1hcE5hbWVk
QnVmZmVyUmFuZ2UoY29udGV4dCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNz
KSk7CkBAIC0yMDk5LDcgKzIxMDMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJpZXJC
eVJlZ2lvbihHTGJpdGZpZWxkIGJhcnJpZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1lbW9yeUJhcnJpZXJCeVJlZ2lvbihjb250ZXh0
LCBiYXJyaWVycykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMTIxLDkgKzIxMjUs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIE5hbWVkQnVmZmVyRGF0YShHTHVpbnQgYnVmZmVyLCBHTHNp
emVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
TmFtZWRCdWZmZXJEYXRhKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgc2l6ZSwgZGF0YSwgdXNhZ2Up
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMTQ3LDkgKzIxNTEs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIE5hbWVkQnVmZmVyU3RvcmFnZShHTHVpbnQgYnVmZmVyLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTmFtZWRCdWZmZXJTdG9yYWdlKGNvbnRleHQsIGJ1
ZmZlclBhY2tlZCwgc2l6ZSwgZGF0YSwgZmxhZ3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0yMTczLDkgKzIxNzcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIE5hbWVk
QnVmZmVyU3ViRGF0YShHTHVpbnQgYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
TmFtZWRCdWZmZXJTdWJEYXRhKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplLCBk
YXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjE5Myw5ICsy
MTk3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcihHTHVp
bnQgZnJhbWVidWZmZXIsIEdMZW51bSBidWYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZy
b21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklE
IGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1
ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJEcmF3QnVmZmVyKGNvbnRleHQsIGZy
YW1lYnVmZmVyUGFja2VkLCBidWYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0yMjE2LDggKzIyMjAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE5hbWVkRnJhbWVidWZm
ZXJEcmF3QnVmZmVycyhHTHVpbnQgZnJhbWVidWZmZXIsIEdMc2l6ZWkgbiwgY29ucwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFj
a2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1
ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4o
ZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVOYW1lZEZyYW1lYnVmZmVyRHJhd0J1ZmZlcnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgZnJhbWVidWZmZXJQ
YWNrZWQsIG4sIGJ1ZnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjIzOSw4ICsy
MjQzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBOYW1lZEZyYW1lYnVmZmVyUGFyYW1ldGVyaShHTHVp
bnQgZnJhbWVidWZmZXIsIEdMZW51bSBwbmFtZSwgR0wKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoY29udGV4dCwgZnJhbWVidWZm
ZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwpAQCAtMjI2MSw5ICsyMjY1LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBOYW1lZEZyYW1lYnVmZmVyUmVhZEJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIsIEdM
ZW51bSBzcmMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVy
SUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklE
PihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZl
cik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZU5hbWVkRnJhbWVidWZmZXJSZWFkQnVmZmVyKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkLCBz
cmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yMjg3LDkgKzIy
OTEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIE5hbWVkRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0x1
aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFt
ZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVi
dWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZm
ZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZl
cik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGcmFtZWJ1ZmZlcklEIGZy
YW1lYnVmZmVyUGFja2VkICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwor
ICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVy
YnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZU5hbWVkRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQsIGF0dGFjaG1lbnQsCkBAIC0y
MzE4LDEwICsyMzIyLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgTmFtZWRGcmFtZWJ1ZmZlclRleHR1
cmUoR0x1aW50IGZyYW1lYnVmZmVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8
RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclRleHR1cmUoY29udGV4dCwgZnJh
bWVidWZmZXJQYWNrZWQsIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMzQ4LDkgKzIzNTIsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIE5hbWVkRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0x1aW50IGZyYW1lYnVmZmVyLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVm
ZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZm
ZXIpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKKyAgICAgICAg
VGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTmFtZWRGcmFtZWJ1ZmZlclRleHR1cmVMYXllcigKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LCBmcmFtZWJ1ZmZlclBhY2tlZCwgYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZl
bCwgbGF5ZXIpKTsKQEAgLTIzNzgsOSArMjM4Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgTmFtZWRS
ZW5kZXJidWZmZXJTdG9yYWdlKEdMdWludCByZW5kZXJidWZmZXIsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJ
RD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlTmFtZWRSZW5kZXJidWZmZXJTdG9yYWdlKGNvbnRleHQsIHJlbmRlcmJ1
ZmZlclBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDA3LDggKzI0MTEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IE5hbWVkUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMdWludCByZW5kZXJidWZmZXIs
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRl
cmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVy
YnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZl
cklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVm
ZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlTmFtZWRSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
Y29udGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkLCBzYW1wbGVzLApAQCAtMjQ0Miw3ICsyNDQ2LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBpeGVscyhHTGludCB4LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlUmVh
ZG5QaXhlbHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZT
aXplLCBkYXRhKSk7CkBAIC0yNDYyLDcgKzI0NjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1
cmVCYXJyaWVyKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRl
eHR1cmVCYXJyaWVyKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0yNDgyLDkgKzI0ODYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVCdWZmZXIo
R0x1aW50IHRleHR1cmUsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZgogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4
dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleHR1cmVCdWZmZXIoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgaW50
ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCkpOwpAQCAtMjUxMiwxMCArMjUxNiwxMCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRleHR1cmVCdWZmZXJSYW5nZShHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIEJ1
ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAg
ICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlQnVmZmVyUmFuZ2UoY29udGV4dCwgdGV4
dHVyZVBhY2tlZCwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjUzOSw5ICsyNTQzLDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBUZXh0dXJlUGFyYW1ldGVySWl2KEdMdWludCB0ZXh0dXJlLCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMaW50ICoKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlUGFy
YW1ldGVySWl2KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNTYyLDkgKzI1NjYsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRleHR1cmVQYXJhbWV0ZXJJdWl2KEdMdWludCB0ZXh0dXJlLCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMdWludAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleHR1
cmVQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNTgzLDkgKzI1ODcsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVQYXJhbWV0ZXJmKEdMdWludCB0ZXh0dXJlLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VGV4dHVyZVBhcmFtZXRlcmYoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjYwNiw5ICsyNjEwLDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBUZXh0dXJlUGFyYW1ldGVyZnYoR0x1aW50IHRleHR1cmUsIEdM
ZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVRleHR1cmVQYXJhbWV0ZXJmdihjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBwbmFtZSwgcGFyYW0p
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNjI3LDkgKzI2MzEs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVQYXJhbWV0ZXJpKEdMdWludCB0ZXh0dXJlLCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVRleHR1cmVQYXJhbWV0ZXJpKGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHBuYW1lLCBwYXJhbSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI2NTEsOSArMjY1NSw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4dHVyZVBhcmFtZXRlcml2KEdMdWludCB0ZXh0dXJlLCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0
dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVGV4dHVyZVBhcmFtZXRlcml2KGNvbnRleHQsIHRleHR1cmVQYWNrZWQsIHBuYW1lLCBwYXJh
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI2NzcsOCArMjY4
MSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4dHVyZVN0b3JhZ2UxRChHTHVpbnQgdGV4dHVyZSwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1
cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTFEKGNvbnRleHQsIHRleHR1cmVQYWNr
ZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKSk7CkBAIC0yNzA2LDggKzI3MTAsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdG9yYWdlMkQoR0x1aW50IHRleHR1cmUsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVRleHR1cmVTdG9yYWdlMkQoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWxzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CkBAIC0yNzM3LDggKzI3NDEsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdG9yYWdlMkRNdWx0aXNhbXBsZShHTHVpbnQgdGV4
dHVyZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1
cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVy
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTJETXVsdGlzYW1wbGUoY29u
dGV4dCwgdGV4dHVyZVBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsCkBAIC0yNzY5LDkg
KzI3NzMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdG9yYWdlM0QoR0x1aW50IHRleHR1
cmUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4dHVyZVN0b3JhZ2UzRChjb250
ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yODAyLDggKzI4MDYsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdG9yYWdlM0RNdWx0aXNhbXBsZShHTHVpbnQgdGV4dHVy
ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRl
eHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXh0dXJlU3RvcmFnZTNETXVsdGlzYW1wbGUoY29udGV4
dCwgdGV4dHVyZVBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsCkBAIC0yODM2LDkgKzI4
NDAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleHR1cmVTdWJJbWFnZTFEKEdMdWludCB0ZXh0dXJl
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleHR1cmVTdWJJbWFnZTFEKGNvbnRl
eHQsIHRleHR1cmVQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB3aWR0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI4NzEsOCArMjg3NSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4dHVyZVN1YkltYWdlMkQoR0x1aW50IHRleHR1cmUsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4dHVyZVN1YkltYWdlMkQoY29udGV4dCwgdGV4dHVyZVBhY2tlZCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLApAQCAtMjkxMCw4ICsyOTE0LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBUZXh0dXJlU3ViSW1hZ2UzRChHTHVpbnQgdGV4dHVyZSwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
VmFsaWRhdGVUZXh0dXJlU3ViSW1hZ2UzRChjb250ZXh0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKQEAgLTI5MzUsOSArMjkzOSw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJCYXNlKEdMdWludCB4ZmIsIEdMdWludCBp
bmRleCwgR0x1aW50IGJ1CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlckJhc2UoY29udGV4dCwgeGZiLCBpbmRleCwgYnVmZmVyUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjk2Miw4ICsyOTY2LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclJhbmdlKEdMdWludCB4ZmIsCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclJhbmdlKGNvbnRleHQsIHhmYiwg
aW5kZXgsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplKSk7CkBAIC0yOTg0LDggKzI5ODgsOCBA
QCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgVW5tYXBOYW1lZEJ1ZmZlcihHTHVpbnQgYnVmZmVyKQog
ICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5tYXBOYW1lZEJ1ZmZlcihjb250ZXh0LCBidWZm
ZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzAxNCw4ICszMDE4LDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBcnJheUF0dHJpYkJpbmRpbmcoR0x1aW50IHZhb2Jq
LCBHTHVpbnQgYXR0cmliaW5kZXgsIEdMdWkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4
QXJyYXlBdHRyaWJCaW5kaW5nKGNvbnRleHQsIHZhb2JqUGFja2VkLCBhdHRyaWJpbmRleCwgYmlu
ZGluZ2luZGV4KSk7CkBAIC0zMDQ1LDkgKzMwNDksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEFycmF5QXR0cmliRm9ybWF0KEdMdWludCB2YW9iaiwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEFycmF5SUQg
dmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFy
cmF5SUQ+KHZhb2JqKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRyaWJGb3JtYXQoY29udGV4dCwgdmFvYmpQYWNrZWQs
IGF0dHJpYmluZGV4LCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgbm9ybWFsaXplZCwgcmVsYXRpdmVvZmZzZXQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzA3NSw5ICszMDc5LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBcnJheUF0dHJpYklGb3JtYXQoR0x1aW50IHZhb2JqLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBcnJheUF0dHJpYklGb3JtYXQoY29u
dGV4dCwgdmFvYmpQYWNrZWQsIGF0dHJpYmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsIHR5cGUsIHJlbGF0aXZl
b2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMxMDQsOSArMzEwOCw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXJyYXlBdHRyaWJMRm9ybWF0KEdMdWludCB2YW9iaiwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXJyYXlBdHRyaWJMRm9y
bWF0KGNvbnRleHQsIHZhb2JqUGFja2VkLCBhdHRyaWJpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCB0eXBlLCBy
ZWxhdGl2ZW9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMTI3LDggKzMx
MzEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEFycmF5QmluZGluZ0Rpdmlzb3IoR0x1aW50
IHZhb2JqLCBHTHVpbnQgYmluZGluZ2luZGV4LCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgVmVydGV4QXJyYXlJRCB2YW9ialBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVW
ZXJ0ZXhBcnJheUJpbmRpbmdEaXZpc29yKGNvbnRleHQsIHZhb2JqUGFja2VkLCBiaW5kaW5naW5k
ZXgsIGRpdmlzb3IpKTsKQEAgLTMxNDksMTAgKzMxNTMsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBW
ZXJ0ZXhBcnJheUVsZW1lbnRCdWZmZXIoR0x1aW50IHZhb2JqLCBHTHVpbnQgYnVmZmVyKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOwotICAg
ICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9i
aik7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBcnJheUVsZW1lbnRCdWZm
ZXIoY29udGV4dCwgdmFvYmpQYWNrZWQsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMxNzcsMTAgKzMxODEsMTAgQEAgdm9pZCBHTF9BUElF
TlRSWSBWZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlcihHTHVpbnQgdmFvYmosCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPih2YW9iaik7Ci0gICAgICAgIEJ1ZmZl
cklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEFycmF5SUQgdmFvYmpQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KHZhb2JqKTsKKyAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEFycmF5VmVydGV4QnVmZmVyKGNvbnRleHQs
IHZhb2JqUGFja2VkLCBiaW5kaW5naW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJQYWNrZWQsIG9mZnNldCwgc3Ry
aWRlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMyMTAsMTAgKzMyMTQsMTAgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlcnMoR0x1aW50IHZhb2JqLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBWZXJ0ZXhBcnJheUlEIHZhb2JqUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4odmFvYmopOwot
ICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBcnJheUlE
IHZhb2JqUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
cnJheUlEPih2YW9iaik7CisgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVW
ZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlcnMoY29udGV4dCwgdmFvYmpQYWNrZWQsIGZpcnN0LCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWZmZXJzUGFja2VkLCBvZmZzZXRzLCBzdHJpZGVzKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzZfYXV0b2dlbi5jcHAKaW5kZXggY2ZkYTFi
OWY5ZDZiNmNiYmQwZDg2ZTY5MjE1OGViOGY4MTZjZTU4My4uOTMzNWE0YmFiM2Y0MGNhNWIyZjRl
NWI0N2EzZmUwZjE1NmZjZDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzZfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdML2VudHJ5X3BvaW50c19nbF80XzZfYXV0b2dlbi5jcHAK
QEAgLTQyLDggKzQyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdBcnJheXNJbmRpcmVj
dENvdW50KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3QXJy
YXlzSW5kaXJlY3RDb3VudChjb250ZXh0LCBtb2RlLCBpbmRpcmVjdCwgZHJhd2NvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhkcmF3Y291bnQsIHN0cmlkZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC03Miw4ICs3Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3RWxlbWVudHNJbmRpcmVj
dENvdW50KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3RWxl
bWVudHNJbmRpcmVjdENvdW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCBtb2RlLCB0eXBlLCBpbmRpcmVjdCwgZHJhd2NvdW50LCBtYXhkcmF3Y291bnQsIHN0cmlk
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05NSw4ICs5NSw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUG9seWdvbk9mZnNldENsYW1wKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRz
LCBHTGZsb2F0IGNsYW1wCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0Q2xh
bXAoY29udGV4dCwgZmFjdG9yLCB1bml0cywgY2xhbXApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTcGVj
aWFsaXplU2hhZGVyKEdMdWludCBzaGFkZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVTcGVjaWFsaXplU2hhZGVy
KGNvbnRleHQsIHNoYWRlciwgcEVudHJ5UG9pbnQsIG51bVNwZWNpYWxpemF0aW9uQ29uc3RhbnRz
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi5nbmkg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyLmduaQppbmRleCBkYzRhMDEx
N2EwZWI3ZWMwZjdhZjQ4NTZjNjU4YjEzYjFmMmRjY2RiLi5iMGE3ZThmYmNhZGM3MzA3NDdiMDhh
MjAyMTViODE1ZWEwZGQ0MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyLmduaQpAQCAtMTc2LDYgKzE3Niw3IEBAIGxpYmFuZ2xlX2luY2x1ZGVzID0gWwogICAiaW5j
bHVkZS9wbGF0Zm9ybS9GZWF0dXJlc1ZrLmgiLAogICAiaW5jbHVkZS9wbGF0Zm9ybS9Gcm9udGVu
ZEZlYXR1cmVzLmgiLAogICAiaW5jbHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oIiwKKyAgImluY2x1
ZGUvdnVsa2FuL3Z1bGthbl9mdWNoc2lhX2V4dC5oIiwKIF0KIAogbGliYW5nbGVfaGVhZGVycyA9
IFsKQEAgLTIyOCwxMCArMjI5LDEwIEBAIGxpYmFuZ2xlX2hlYWRlcnMgPSBbCiAgICJzcmMvbGli
QU5HTEUvR0xFUzFTaGFkZXJzLmluYyIsCiAgICJzcmMvbGliQU5HTEUvR0xFUzFTdGF0ZS5oIiwK
ICAgInNyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIsCi0gICJzcmMvbGliQU5HTEUvSGFu
ZGxlUmFuZ2VBbGxvY2F0b3IuaCIsCiAgICJzcmMvbGliQU5HTEUvSW1hZ2UuaCIsCiAgICJzcmMv
bGliQU5HTEUvSW1hZ2VJbmRleC5oIiwKICAgInNyYy9saWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUu
aCIsCisgICJzcmMvbGliQU5HTEUvSW5mb0xvZy5oIiwKICAgInNyYy9saWJBTkdMRS9Mb2dnaW5n
QW5ub3RhdG9yLmgiLAogICAic3JjL2xpYkFOR0xFL01lbW9yeU9iamVjdC5oIiwKICAgInNyYy9s
aWJBTkdMRS9NZW1vcnlQcm9ncmFtQ2FjaGUuaCIsCkBAIC0yNDMsOCArMjQ0LDggQEAgbGliYW5n
bGVfaGVhZGVycyA9IFsKICAgInNyYy9saWJBTkdMRS9PdmVybGF5X2F1dG9nZW4uY3BwIiwKICAg
InNyYy9saWJBTkdMRS9PdmVybGF5X2ZvbnRfYXV0b2dlbi5jcHAiLAogICAic3JjL2xpYkFOR0xF
L092ZXJsYXlfZm9udF9hdXRvZ2VuLmgiLAotICAic3JjL2xpYkFOR0xFL1BhdGguaCIsCiAgICJz
cmMvbGliQU5HTEUvUHJvZ3JhbS5oIiwKKyAgInNyYy9saWJBTkdMRS9Qcm9ncmFtRXhlY3V0YWJs
ZS5oIiwKICAgInNyYy9saWJBTkdMRS9Qcm9ncmFtTGlua2VkUmVzb3VyY2VzLmgiLAogICAic3Jj
L2xpYkFOR0xFL1Byb2dyYW1QaXBlbGluZS5oIiwKICAgInNyYy9saWJBTkdMRS9RdWVyeS5oIiwK
QEAgLTI5Nyw3ICsyOTgsNiBAQCBsaWJhbmdsZV9oZWFkZXJzID0gWwogICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL0ltYWdlSW1wbC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9NZW1vcnlP
YmplY3RJbXBsLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL092ZXJsYXlJbXBsLmgiLAot
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmgiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL1Byb2dyYW1JbXBsLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1Q
aXBlbGluZUltcGwuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvUXVlcnlJbXBsLmgiLApA
QCAtMzc0LDcgKzM3NCw2IEBAIGxpYmFuZ2xlX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUv
R0xFUzFSZW5kZXJlci5jcHAiLAogICAic3JjL2xpYkFOR0xFL0dMRVMxU3RhdGUuY3BwIiwKICAg
InNyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9IYW5k
bGVSYW5nZUFsbG9jYXRvci5jcHAiLAogICAic3JjL2xpYkFOR0xFL0ltYWdlLmNwcCIsCiAgICJz
cmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAiLAogICAic3JjL2xpYkFOR0xFL0luZGV4UmFuZ2VD
YWNoZS5jcHAiLApAQCAtMzgyLDkgKzM4MSw5IEBAIGxpYmFuZ2xlX3NvdXJjZXMgPSBbCiAgICJz
cmMvbGliQU5HTEUvTWVtb3J5T2JqZWN0LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvTWVtb3J5UHJv
Z3JhbUNhY2hlLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvT2JzZXJ2ZXIuY3BwIiwKLSAgInNyYy9s
aWJBTkdMRS9QYXRoLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwIiwKICAgInNy
Yy9saWJBTkdMRS9Qcm9ncmFtLmNwcCIsCisgICJzcmMvbGliQU5HTEUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwIiwKICAgInNyYy9saWJBTkdMRS9Qcm9ncmFtTGlua2VkUmVzb3VyY2VzLmNwcCIsCiAg
ICJzcmMvbGliQU5HTEUvUHJvZ3JhbVBpcGVsaW5lLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvUXVl
cnkuY3BwIiwKQEAgLTQxMyw3ICs0MTIsNiBAQCBsaWJhbmdsZV9zb3VyY2VzID0gWwogICAic3Jj
L2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwIiwKICAgInNyYy9saWJBTkdMRS9xdWVyeXV0
aWxzLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwIiwKLSAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuY3BwIiwKICAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9EZXZpY2VJbXBsLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvRGlz
cGxheUltcGwuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfdGFibGVfYXV0
b2dlbi5jcHAiLApAQCAtNDIxLDYgKzQxOSw3IEBAIGxpYmFuZ2xlX3NvdXJjZXMgPSBbCiAgICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL1N1cmZhY2VJbXBsLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVy
ZUltcGwuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuY3BwIiwK
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNw
cCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwIiwKICAgInNy
Yy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcCIsCkBAIC00MzIsMTggKzQzMSwxOCBAQCBsaWJh
bmdsZV9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMyLmNwcCIsCiAg
ICJzcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTRVhULmNwcCIsCiAgICJzcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkdMMS5jcHAiLAotICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIuY3BwIiwKLSAg
InNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkdMNC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDExLmNwcCIsCiAgICJz
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTIuY3BwIiwKKyAgInNyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0wxMy5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDE0LmNwcCIsCiAgICJz
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkdMMTUuY3BwIiwKLSAgInNyYy9saWJBTkdMRS92YWxpZGF0
aW9uR0wxMy5jcHAiLAorICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDIuY3BwIiwKICAgInNy
Yy9saWJBTkdMRS92YWxpZGF0aW9uR0wyMS5jcHAiLAorICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRp
b25HTDMuY3BwIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0wzMS5jcHAiLAogICAic3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25HTDMyLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkdMMzMuY3BwIiwKKyAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9uR0w0LmNwcCIsCiAgICJzcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkdMNDEuY3BwIiwKICAgInNyYy9saWJBTkdMRS92YWxpZGF0aW9u
R0w0Mi5jcHAiLAogICAic3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25HTDQzLmNwcCIsCkBAIC00Njgs
NyArNDY3LDYgQEAgbGliYW5nbGVfZDNkX3NoYXJlZF9zb3VyY2VzID0gWwogICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSW1hZ2UyREhMU0wuaCIsCiAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0VHTEltYWdlRDNELmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1
dGlsc0QzRC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0Qu
Y3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIsCiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hMU0xDb21waWxlci5jcHAiLApAQCAtNDgzLDEy
ICs0ODEsMTIgQEAgbGliYW5nbGVfZDNkX3NoYXJlZF9zb3VyY2VzID0gWwogICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9OYXRpdmVXaW5kb3dEM0QuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
UHJvZ3JhbUQzRC5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0
RDNELmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5o
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmNwcCIsCiAg
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5oIiwKICAgInNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuY3BwIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1JlbmRlclRhcmdldEQzRC5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVy
VGFyZ2V0RDNELmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NhbXBsZXJEM0Qu
aCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAiLAogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuaCIsCkBAIC01MDUsNiArNTAzLDcgQEAg
bGliYW5nbGVfZDNkX3NoYXJlZF9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9WZXJ0ZXhCdWZmZXIuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRl
eERhdGFNYW5hZ2VyLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERh
dGFNYW5hZ2VyLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0Qz
RC5oIiwKIF0KIAogbGliYW5nbGVfZDNkOV9zb3VyY2VzID0gWwpAQCAtNTE4LDggKzUxNyw2IEBA
IGxpYmFuZ2xlX2QzZDlfc291cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9EZWJ1Z0Fubm90YXRvcjkuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvRmVuY2U5LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRmVuY2U5
LmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAi
LAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIiwKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuY3BwIiwKICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmNwcCIsCkBAIC01MzAsMjMgKzUyNywxMyBA
QCBsaWJhbmdsZV9kM2Q5X3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvTmF0aXZlV2luZG93OS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9RdWVyeTkuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTku
aCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcCIsCi0g
ICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiLAotICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5jcHAiLAotICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oIiwKICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmNwcCIsCiAgICJzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5oIiwKKyAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvU2hhZGVyQ2FjaGUuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hh
ZGVyRXhlY3V0YWJsZTkuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9T
aGFkZXJFeGVjdXRhYmxlOS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9z
aGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcmVtdWx0cHMuaCIs
Ci0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21w
b25lbnRtYXNrdW5tdWx0cHMuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXByZW11bHRwcy5oIiwKLSAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXVu
bXVsdHBzLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29t
cGlsZWQvcGFzc3Rocm91Z2hwcy5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvU3dhcENoYWluOS5jcHAiLApAQCAtNTU2LDkgKzU0MywyMSBAQCBsaWJhbmdsZV9kM2Q5
X3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJy
YXk5LmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjku
Y3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5Lmgi
LAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3ZlcnRleGNvbnZlcnNpb24uaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xhcmF0
aW9uQ2FjaGUuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRp
bHM5LmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5
LmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5j
cHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5o
IiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2Nv
bXBvbmVudG1hc2twcmVtdWx0cHMuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHMuaCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrdW5tdWx0cHMu
aCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9s
dW1pbmFuY2VwcmVtdWx0cHMuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXVubXVsdHBzLmgiLAorICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hw
cy5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVk
L3N0YW5kYXJkdnMuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvdmVydGV4
Y29udmVyc2lvbi5oIiwKIF0KIAogbGliYW5nbGVfZDNkMTFfc291cmNlcyA9IFsKQEAgLTU3Mywx
NSArNTcyLDEwIEBAIGxpYmFuZ2xlX2QzZDExX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAiLAotICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGVfYXV0b2dlbi5jcHAiLAot
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0V4dGVybmFsSW1hZ2VTaWJsaW5n
SW1wbDExLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0V4dGVybmFs
SW1hZ2VTaWJsaW5nSW1wbDExLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9GZW5jZTExLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNl
MTEuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEu
Y3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5o
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAi
LAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgiLAog
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmNwcCIsCkBAIC01OTAs
OSArNTg0LDkgQEAgbGliYW5nbGVfZDNkMTFfc291cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmgiLAotICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cxMS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvTWFwcGVkU3VicmVzb3VyY2VWZXJpZmllcjExLmNwcCIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL01hcHBlZFN1YnJlc291cmNlVmVyaWZpZXIxMS5o
IiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1BpeGVsVHJhbnNmZXIxMS5jcHAi
LAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Byb2dyYW0xMS5jcHAiLApAQCAt
NjAxLDE4ICs1OTUsMzkgQEAgbGliYW5nbGVfZDNkMTFfc291cmNlcyA9IFsKICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUHJvZ3JhbVBpcGVsaW5lMTEuaCIsCiAgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuY3BwIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9SZW5kZXJlcjExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9y
ZW5kZXJlcjExX3V0aWxzLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3JlbmRlcmVyMTFfdXRpbHMuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1JlbmRlclN0YXRlQ2FjaGUuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyU3RhdGVDYWNoZS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyVGFyZ2V0MTEuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyVGFyZ2V0MTEuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1JlbmRlcmVyMTEuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVu
ZGVyZXIxMS5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVzb3VyY2VN
YW5hZ2VyMTEuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVzb3Vy
Y2VNYW5hZ2VyMTEuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1NoYWRl
ckV4ZWN1dGFibGUxMS5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
aGFkZXJFeGVjdXRhYmxlMTEuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1N0YXRlTWFuYWdlcjExLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1N0YXRlTWFuYWdlcjExLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dHJlYW1Qcm9kdWNlckQzRFRleHR1cmUuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmgiLAorICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuaCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAiLAorICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9UcmltMTEuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1ZlcnRleEFycmF5MTEuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
VmVydGV4QXJyYXkxMS5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QnVmZmVyMTEuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QnVmZmVyMTEuaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lf
Zm9ybWF0X21hcF9hdXRvZ2VuLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlX2F1dG9nZW4uY3BwIiwKKyAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5jcHAiLAorICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiLAorICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfZ3MuaCIs
CiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVm
ZmVydG90ZXh0dXJlMTFfcHNfNGYuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNGkuaCIsCkBAIC02Njcs
MzMgKzY4MiwxNyBAQCBsaWJhbmdsZV9kM2QxMV9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTJkYXJyYXlwcy5o
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9z
d2l6emxldWkyZHBzLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFk
ZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTNkcHMuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9TdHJlYW1Qcm9kdWNlckQzRFRleHR1cmUuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlLmgiLAotICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAiLAotICAic3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuY3BwIiwKICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4u
Y3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRf
dGFibGVfdXRpbHMuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1
cmVTdG9yYWdlMTEuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4
dHVyZVN0b3JhZ2UxMS5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJh
bnNmb3JtRmVlZGJhY2sxMS5jcHAiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9UcmFuc2Zvcm1GZWVkYmFjazExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9UcmltMTEuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJp
bTExLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTEx
LmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEu
aCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNw
cCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgi
LAogXQogCiBsaWJhbmdsZV9kM2QxMV93aW4zMl9zb3VyY2VzID0gWwotICAic3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmNwcCIsCi0gICJz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdzExV2luMzIu
aCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvbnZlcmdlZC9Db21wb3Np
dG9yTmF0aXZlV2luZG93MTEuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvY29udmVyZ2VkL0NvbXBvc2l0b3JOYXRpdmVXaW5kb3cxMS5oIiwKKyAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvd2luMzIvTmF0aXZlV2luZG93MTFXaW4zMi5jcHAiLAorICAi
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMy
LmgiLAogICAic3JjL3RoaXJkX3BhcnR5L3N5c3RlbWluZm8vU3lzdGVtSW5mby5jcHAiLAogICAi
c3JjL3RoaXJkX3BhcnR5L3N5c3RlbWluZm8vU3lzdGVtSW5mby5oIiwKIF0KQEAgLTczNCw4ICs3
MzMsNiBAQCBsaWJhbmdsZV9nbF9zb3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0ltYWdlR0wuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvTWVtb3J5T2JqZWN0
R0wuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9NZW1vcnlPYmplY3RHTC5oIiwK
LSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuaCIsCi0gICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvUGF0aEdMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJv
Z3JhbUdMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgiLAog
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1QaXBlbGluZUdMLmNwcCIsCkBAIC03
ODIsMTAgKzc3OSwxMCBAQCBsaWJhbmdsZV9nbF93Z2xfc291cmNlcyA9IFsKICAgInNyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC93Z2wvQ29udGV4dFdHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VXR0wuY3BwIiwKICAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VXR0wuaCIsCi0gICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC93Z2wvRGlzcGxheVdHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
RFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuaCIsCisgICJzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwIiwKKyAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC93Z2wvRnVuY3Rpb25zV0dMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L0Z1bmN0aW9uc1dHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZl
clN1cmZhY2VXR0wuY3BwIiwKQEAgLTgwNiwxMCArODAzLDEwIEBAIGxpYmFuZ2xlX2dsX2dseF9z
b3VyY2VzID0gWwogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgi
LAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFguY3BwIiwKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgiLAotICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2dseC9SZW5kZXJlckdMWC5oIiwKLSAgInNyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9nbHgvUmVuZGVyZXJHTFguY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZ2x4L1JlbmRlcmVyR0xYLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4
L1JlbmRlcmVyR0xYLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9TdXJmYWNl
R0xYLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xY
LmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFgu
aCIsCkBAIC04MjMsMTMgKzgyMCwxMCBAQCBsaWJhbmdsZV9nbF9lZ2xfc291cmNlcyA9IFsKICAg
InNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5jcHAiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgiLAogICAic3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2VnbC9FeHRlcm5hbEltYWdlU2libGluZ0VHTC5oIiwKLSAgInNyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvZWdsX3V0aWxzLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL2VnbF91dGlscy5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
RnVuY3Rpb25zRUdMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0
aW9uc0VHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvSW1hZ2VFR0wuY3Bw
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvSW1hZ2VFR0wuaCIsCi0gICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Z1bmN0aW9uc2VnbF90eXBlZGVmcy5oIiwKICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuY3BwIiwKICAgInNy
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaCIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1JlbmRlcmVyRUdMLmNwcCIsCkBAIC04NDAsNiArODM0
LDkgQEAgbGliYW5nbGVfZ2xfZWdsX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL1N5bmNFR0wuaCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dp
bmRvd1N1cmZhY2VFR0wuY3BwIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2lu
ZG93U3VyZmFjZUVHTC5oIiwKKyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZWdsX3V0
aWxzLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2VnbF91dGlscy5oIiwK
KyAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZnVuY3Rpb25zZWdsX3R5cGVkZWZzLmgi
LAogXQogbGliYW5nbGVfZ2xfZWdsX2RsX3NvdXJjZXMgPSBbCiAgICJzcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmNwcCIsCkBAIC04NjUsMTYgKzg2MiwxNiBAQCBs
aWJhbmdsZV9nbF9jZ2xfc291cmNlcyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvQ29udGV4dENHTC5oIiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGV2aWNl
Q0dMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0RldmljZUNHTC5oIiwK
LSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbSIsCiAgICJzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIsCisgICJzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0iLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9JT1N1cmZhY2VTdXJmYWNlQ0dMLmNwcCIsCiAgICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvY2dsL0lPU3VyZmFjZVN1cmZhY2VDR0wuaCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmNwcCIsCi0gICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL1JlbmRlcmVyQ0dMLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVm
ZmVyU3VyZmFjZUNHTC5jcHAiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVm
ZmVyU3VyZmFjZUNHTC5oIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93
U3VyZmFjZUNHTC5tbSIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVy
Q0dMLmNwcCIsCisgICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1JlbmRlcmVyQ0dMLmgi
LAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLmgiLAor
ICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tIiwKIF0K
IAogbGliYW5nbGVfbWFjX3NvdXJjZXMgPSBbICJzcmMvbGliQU5HTEUvcmVuZGVyZXIvZHJpdmVy
X3V0aWxzX21hYy5tbSIgXQpAQCAtOTMwLDggKzkyNyw2IEBAIGxpYmFuZ2xlX251bGxfc291cmNl
cyA9IFsKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oIiwK
ICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5jcHAiLAogICAic3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmgiLAotICAic3JjL2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvUGF0aE5VTEwuY3BwIiwKLSAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Bh
dGhOVUxMLmgiLAogICAic3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3Bw
IiwKICAgInNyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmgiLAogICAic3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbVBpcGVsaW5lTlVMTC5jcHAiLApAQCAtOTky
LDE2ICs5ODcsMTYgQEAgbGliZ2xfc291cmNlcyA9IFsKICAgInNyYy9saWJHTC9lbnRyeV9wb2lu
dHNfZ2xfNF8zX2F1dG9nZW4uY3BwIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF8z
X2F1dG9nZW4uaCIsCiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2VuLmNw
cCIsCi0gICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNl9hdXRvZ2VuLmNwcCIsCiAgICJz
cmMvbGliR0wvZW50cnlfcG9pbnRzX2dsXzRfNF9hdXRvZ2VuLmgiLAogICAic3JjL2xpYkdML2Vu
dHJ5X3BvaW50c19nbF80XzVfYXV0b2dlbi5jcHAiLAogICAic3JjL2xpYkdML2VudHJ5X3BvaW50
c19nbF80XzVfYXV0b2dlbi5oIiwKKyAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1
dG9nZW4uY3BwIiwKICAgInNyYy9saWJHTC9lbnRyeV9wb2ludHNfZ2xfNF82X2F1dG9nZW4uaCIs
CiAgICJzcmMvbGliR0wvZW50cnlfcG9pbnRzX3dnbC5jcHAiLAogICAic3JjL2xpYkdML2VudHJ5
X3BvaW50c193Z2wuaCIsCisgICJzcmMvbGliR0wvbGliR0wucmMiLAogICAic3JjL2xpYkdML2xp
YkdMX2F1dG9nZW4uY3BwIiwKICAgInNyYy9saWJHTC9saWJHTF9hdXRvZ2VuLmRlZiIsCi0gICJz
cmMvbGliR0wvbGliR0wucmMiLAogICAic3JjL2xpYkdML3Byb2NfdGFibGVfd2dsLmgiLAogICAi
c3JjL2xpYkdML3Byb2NfdGFibGVfd2dsX2F1dG9nZW4uY3BwIiwKICAgInNyYy9saWJHTEVTdjIv
Z2xvYmFsX3N0YXRlLmNwcCIsCkBAIC0xMDMyLDggKzEwMjcsOCBAQCBsaWJnbGVzdjJfc291cmNl
cyA9IFsKICAgInNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfZXh0X2F1dG9nZW4uaCIs
CiAgICJzcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAiLAogICAic3JjL2xpYkdMRVN2Mi9n
bG9iYWxfc3RhdGUuaCIsCi0gICJzcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmNwcCIs
CiAgICJzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5yYyIsCisgICJzcmMvbGliR0xFU3YyL2xpYkdM
RVN2Ml9hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGliR0xFU3YyL3Byb2NfdGFibGVfZWdsLmgiLAog
ICAic3JjL2xpYkdMRVN2Mi9wcm9jX3RhYmxlX2VnbF9hdXRvZ2VuLmNwcCIsCiAgICJzcmMvbGli
R0xFU3YyL3Jlc291cmNlLmgiLApAQCAtMTA0NywxMCArMTA0MiwxMCBAQCBsaWJnbGVzdjFfY21f
c291cmNlcyA9IFsKIF0KIAogbGliZWdsX3NvdXJjZXMgPSBbCisgICJzcmMvbGliRUdML2VnbF9s
b2FkZXJfYXV0b2dlbi5oIiwKICAgInNyYy9saWJFR0wvbGliRUdMLmNwcCIsCiAgICJzcmMvbGli
RUdML2xpYkVHTC5yYyIsCiAgICJzcmMvbGliRUdML3Jlc291cmNlLmgiLAogICAic3JjL2xpYkdM
RVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgiLAogICAic3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
ZWdsX2V4dC5oIiwKLSAgInNyYy9saWJFR0wvZWdsX2xvYWRlcl9hdXRvZ2VuLmgiLAogXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2lu
dHNfZ2xlc18xXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzFfMF9hdXRvZ2VuLmNwcAppbmRleCA5ODMyNjlmNWNl
NzJhNDljNjQ0NDViYjgyYmNmZmFhZjZiM2U5OWRmLi4zY2MzNWM1OTE0ZGM4MDhiMDBjNTQzMTU1
YWExZWU1NGRlNDc0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzFfMF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzFfMF9hdXRv
Z2VuLmNwcApAQCAtMjgsOCArMjgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEFscGhhRnVuYyhHTGVu
dW0gZnVuYywgR0xmbG9hdCByZWYpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IEFscGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxB
bHBoYVRlc3RGdW5jPihmdW5jKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IEFscGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEFscGhhVGVzdEZ1bmM+KGZ1bmMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQWxwaGFGdW5jKGNvbnRleHQsIGZ1bmNQYWNr
ZWQsIHJlZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00OCw4ICs0OCw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQWxwaGFGdW5jeChHTGVudW0gZnVuYywgR0xmaXhlZCByZWYpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFscGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxBbHBoYVRlc3RGdW5jPihmdW5jKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEFscGhhVGVzdEZ1bmMgZnVuY1BhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEFscGhhVGVzdEZ1bmM+KGZ1bmMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQWxwaGFGdW5jeChjb250ZXh0LCBmdW5jUGFja2VkLCByZWYpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQ29sb3J4
KEdMZml4ZWQgcmVkLCBHTGZpeGVkIGdyZWVuLCBHTGZpeGVkIGJsdWUsIEdMZml4ZWQgYQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFy
Q29sb3J4KGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckRlcHRo
eChHTGZpeGVkIGRlcHRoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQ2xlYXJEZXB0aHgoY29udGV4dCwgZGVwdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGllbnRB
Y3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsaWVudEFjdGl2ZVRleHR1cmUoY29udGV4dCwg
dGV4dHVyZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjUsNyArMTI1LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBDbGlwUGxhbmVmKEdMZW51bSBwLCBjb25zdCBHTGZsb2F0ICplcW4p
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGlwUGxhbmVmKGNv
bnRleHQsIHAsIGVxbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTE0NCw3ICsxNDQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsaXBQbGFuZXgoR0xlbnVtIHBsYW5l
LCBjb25zdCBHTGZpeGVkICplcXVhdGlvbikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGlwUGxhbmV4KGNvbnRleHQsIHBsYW5lLCBlcXVh
dGlvbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBDb2xvcjRmKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0
IGJsdWUsIEdMZmxvYXQgYWxwaGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRmKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIENvbG9yNHViKEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdyZWVuLCBHTHVieXRl
IGJsdWUsIEdMdWJ5dGUgYWxwaAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNHViKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIENvbG9yNHgoR0xmaXhlZCByZWQsIEdMZml4ZWQgZ3JlZW4sIEdMZml4ZWQg
Ymx1ZSwgR0xmaXhlZCBhbHBoYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yNHgoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjI5LDkgKzIyOSw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29sb3JQb2ludGVyKEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVp
IHN0cmlkZSwgY29uc3Qgdm9pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZl
cnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0
ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5
cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVDb2xvclBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVy
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjQ4LDcgKzI0OCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVwdGhSYW5nZXgoR0xmaXhlZCBuLCBHTGZpeGVkIGYpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0aFJhbmdleChjb250
ZXh0LCBuLCBmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjY2
LDggKzI2Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZUNsaWVudFN0YXRlKEdMZW51bSBh
cnJheSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQ2xpZW50VmVydGV4QXJy
YXlUeXBlIGFycmF5UGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5
VHlwZT4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQ2xpZW50
VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2VkID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5VHlw
ZT4oYXJyYXkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGlzYWJsZUNsaWVudFN0YXRlKGNvbnRleHQsIGFycmF5UGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI4Niw4ICsyODYsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEVuYWJsZUNsaWVudFN0YXRlKEdMZW51bSBhcnJheSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2VkICAgICAgICAg
ICAgID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5VHlwZT4oYXJyYXkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2Vk
ID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5VHlwZT4oYXJyYXkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlQ2xpZW50U3Rh
dGUoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MzA2LDcgKzMwNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRm9nZihHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dm
KGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZvZ2Z2KEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRm9nZnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEZvZ3goR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9neChjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0zNjAsNyArMzYwLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBGb2d4dihHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFt
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9neHYoY29udGV4
dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRnJ1c3R1bWYoR0xmbG9hdCBsLCBH
TGZsb2F0IHIsIEdMZmxvYXQgYiwgR0xmbG9hdCB0LCBHTGZsb2F0IG4sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRnJ1c3R1bWYoY29udGV4
dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00MDEs
NyArNDAxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBGcnVzdHVteChHTGZpeGVkIGwsIEdMZml4ZWQg
ciwgR0xmaXhlZCBiLCBHTGZpeGVkIHQsIEdMZml4ZWQgbiwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGcnVzdHVteChjb250ZXh0LCBsLCBy
LCBiLCB0LCBuLCBmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQyMSw3ICs0MjEs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldENsaXBQbGFuZWYoR0xlbnVtIHBsYW5lLCBHTGZsb2F0
ICplcXVhdGlvbikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRDbGlwUGxhbmVmKGNvbnRleHQsIHBsYW5lLCBlcXVhdGlvbikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRDbGlwUGxhbmV4KEdMZW51bSBwbGFuZSwgR0xmaXhlZCAqZXF1YXRpb24pCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Q2xpcFBs
YW5leChjb250ZXh0LCBwbGFuZSwgZXF1YXRpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Rml4ZWR2KEdMZW51bSBw
bmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlR2V0Rml4ZWR2KGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00ODAsOCArNDgwLDggQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRMaWdodGZ2KEdMZW51bSBsaWdodCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJh
bXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBu
YW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5h
bWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJh
bWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldExpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTAyLDggKzUwMiw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0TGlnaHR4dihHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xm
aXhlZCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBMaWdodFBh
cmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJh
bWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIExpZ2h0
UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRMaWdodHh2KGNvbnRleHQsIGxpZ2h0LCBwbmFt
ZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTUyNCw5ICs1
MjQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE1hdGVyaWFsZnYoR0xlbnVtIGZhY2UsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFy
YW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldE1hdGVyaWFsZnYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU0Niw5ICs1
NDYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE1hdGVyaWFseHYoR0xlbnVtIGZhY2UsIEdMZW51
bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFy
YW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldE1hdGVyaWFseHYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTU2OSwxMCAr
NTY5LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4RW52ZnYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1l
dGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRl
cj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAg
ICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhFbnZmdihjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC01OTIsMTAgKzU5MiwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdldFRleEVudml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdl
dCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJl
RW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBu
YW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1l
dGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFRleEVudml2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYxNiwx
MCArNjE2LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4RW52eHYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFt
ZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsK
KyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhFbnZ4dihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NDAsOSArNjQwLDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRUZXhQYXJhbWV0ZXJ4dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQg
KnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRl
cnh2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIExpZ2h0TW9kZWxmKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodE1vZGVsZihj
b250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjgw
LDcgKzY4MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbGZ2KEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWxmdihjb250ZXh0LCBwbmFtZSwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIExpZ2h0TW9kZWx4KEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodE1v
ZGVseChjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNzE5LDcgKzcxOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbHh2KEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRNb2RlbHh2KGNvbnRleHQsIHBuYW1lLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MzksOCArNzM5LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBMaWdodGYoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4o
cG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGlnaHRQYXJhbWV0
ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQ
YXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0Zihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBh
cmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc2Myw4ICs3NjMsOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIExpZ2h0ZnYoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
ZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgTGlnaHRQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFy
YW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBMaWdo
dFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRmdihjb250ZXh0LCBsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03ODQsOCArNzg0
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBMaWdodHgoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUs
IEdMZml4ZWQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIExpZ2h0
UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBh
cmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTGln
aHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0eChjb250ZXh0LCBsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgwOCw4ICs4MDgs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIExpZ2h0eHYoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHR4dihjb250ZXh0LCBsaWdo
dCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04
MjcsNyArODI3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBMaW5lV2lkdGh4KEdMZml4ZWQgd2lkdGgp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaW5lV2lkdGh4KGNv
bnRleHQsIHdpZHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
ODQ0LDcgKzg0NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgTG9hZElkZW50aXR5KCkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRJZGVudGl0eShjb250ZXh0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODYyLDcgKzg2Miw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTG9hZE1hdHJpeGYoY29uc3QgR0xmbG9hdCAqbSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRNYXRyaXhmKGNvbnRleHQsIG0p
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04ODAsNyArODgwLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBMb2FkTWF0cml4eChjb25zdCBHTGZpeGVkICptKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTG9hZE1hdHJpeHgoY29udGV4dCwg
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg5OCw4ICs4OTgs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIExvZ2ljT3AoR0xlbnVtIG9wY29kZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgTG9naWNhbE9wZXJhdGlvbiBvcGNvZGVQYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPExvZ2ljYWxPcGVyYXRpb24+KG9wY29kZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBMb2dpY2FsT3BlcmF0aW9uIG9wY29kZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMb2dpY2FsT3BlcmF0aW9uPihvcGNv
ZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMb2dpY09w
KGNvbnRleHQsIG9wY29kZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTkxOCw4ICs5MTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsZihHTGVu
dW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVN
YXRlcmlhbGYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTk0Miw4ICs5NDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE1hdGVy
aWFsZnYoR0xlbnVtIGZhY2UsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFt
ZVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1l
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFy
YW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbGZ2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTYzLDggKzk2Myw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgTWF0ZXJpYWx4KEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZml4
ZWQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIE1hdGVyaWFsUGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFt
ZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTWF0ZXJp
YWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdGVyaWFseChjb250ZXh0LCBmYWNlLCBwbmFt
ZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTg2LDggKzk4
Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTWF0ZXJpYWx4dihHTGVudW0gZmFjZSwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBNYXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWx4dihj
b250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMTAwNiw4ICsxMDA2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBNYXRyaXhNb2RlKEdM
ZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBNYXRyaXhUeXBl
IG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0cml4VHlwZT4o
bW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBNYXRyaXhUeXBlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRyaXhU
eXBlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TWF0cml4TW9kZShjb250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0
TWF0cml4Zihjb25zdCBHTGZsb2F0ICptKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTXVsdE1hdHJpeGYoY29udGV4dCwgbSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
TXVsdE1hdHJpeHgoY29uc3QgR0xmaXhlZCAqbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZU11bHRNYXRyaXh4KGNvbnRleHQsIG0pKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIE11bHRpVGV4Q29vcmQ0ZihHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwg
R0xmbG9hdCByLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0Zihjb250ZXh0LCB0YXJnZXQsIHMsIHQsIHIsIHEpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTA4NCw3ICsxMDg0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBNdWx0aVRleENvb3JkNHgoR0xlbnVtIHRleHR1cmUsIEdMZml4ZWQgcywgR0xmaXhl
ZCB0LCBHTGZpeGVkIHIKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkNHgoY29udGV4dCwgdGV4dHVyZSwgcywgdCwgciwg
cSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIE5vcm1hbDNmKEdMZmxvYXQgbngsIEdMZmxvYXQgbnksIEdMZmxvYXQgbnop
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWwzZihjb250
ZXh0LCBueCwgbnksIG56KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBOb3JtYWwzeChHTGZpeGVkIG54
LCBHTGZpeGVkIG55LCBHTGZpeGVkIG56KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTm9ybWFsM3goY29udGV4dCwgbngsIG55LCBueikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExNDMsOSArMTE0Myw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgTm9ybWFsUG9pbnRlcihHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZv
aWQgKnBvaW50ZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0
dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRy
aWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVOb3Jt
YWxQb2ludGVyKGNvbnRleHQsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExNjUsNyArMTE2NSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgT3J0aG9mKEdMZmxvYXQgbCwgR0xmbG9hdCByLCBHTGZsb2F0IGIsIEdMZmxv
YXQgdCwgR0xmbG9hdCBuLCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVPcnRob2YoY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTExODUsNyArMTE4NSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgT3J0aG94KEdMZml4ZWQgbCwgR0xmaXhlZCByLCBHTGZpeGVkIGIsIEdMZml4ZWQgdCwgR0xm
aXhlZCBuLCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVPcnRo
b3goY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTEyMDMsOCArMTIwMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRQ
YXJhbWV0ZXJmKEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQ
YXJhbWV0ZXJmKGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0xMjI0LDggKzEyMjQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFy
YW1ldGVyZnYoR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVBvaW50UGFyYW1ldGVyZnYoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjQ0LDggKzEyNDQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFBvaW50UGFyYW1ldGVyeChHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVBvaW50UGFyYW1ldGVyeChjb250ZXh0LCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTI2NSw4ICsxMjY1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBQ
b2ludFBhcmFtZXRlcnh2KEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQb2ludFBhcmFtZXRlciBwbmFtZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihw
bmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVQb2ludFBhcmFtZXRlcnh2KGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBQb2ludFNpemUoR0xmbG9hdCBzaXplKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUG9pbnRTaXplKGNvbnRleHQsIHNpemUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFBvaW50U2l6ZXgoR0xmaXhlZCBzaXplKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUG9pbnRTaXpleChjb250ZXh0LCBzaXplKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTMxOSw3ICsxMzE5LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBQb2x5Z29uT2Zmc2V0eChHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0cykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb2x5
Z29uT2Zmc2V0eChjb250ZXh0LCBmYWN0b3IsIHVuaXRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9wTWF0cml4KCkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcE1hdHJpeChjb250
ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTM1NCw3ICsx
MzU0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQdXNoTWF0cml4KCkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVB1c2hNYXRyaXgoY29udGV4dCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEzNzMsNyArMTM3Myw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgUm90YXRlZihHTGZsb2F0IGFuZ2xlLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUm90YXRl
Zihjb250ZXh0LCBhbmdsZSwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTEzOTMsNyArMTM5Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUm90YXRleChH
TGZpeGVkIGFuZ2xlLCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUm90YXRleChjb250ZXh0LCBhbmdsZSwg
eCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0MTEs
NyArMTQxMSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlQ292ZXJhZ2V4KEdMY2xhbXB4IHZh
bHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBsZUNvdmVyYWdleChjb250ZXh0LCB2YWx1ZSwgaW52
ZXJ0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE0MzAsNyArMTQzMCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgU2NhbGVmKEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTY2FsZWYoY29udGV4dCwg
eCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE0NDgs
NyArMTQ0OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2NhbGV4KEdMZml4ZWQgeCwgR0xmaXhlZCB5
LCBHTGZpeGVkIHopCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVT
Y2FsZXgoY29udGV4dCwgeCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTE0NjYsOCArMTQ2Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2hhZGVNb2RlbChH
TGVudW0gbW9kZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGluZ01v
ZGVsIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRpbmdNb2Rl
bD4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkaW5nTW9k
ZWwgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
aW5nTW9kZWw+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVTaGFkZU1vZGVsKGNvbnRleHQsIG1vZGVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xNDg4LDkgKzE0ODgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFRleENvb3JkUG9pbnRlcihHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs
IGNvbnN0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5
cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBl
Pih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhDb29yZFBv
aW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTUwOSwxMCArMTUwOSwxMCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRleEVudmYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlRW52
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRh
cmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQ
YXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4RW52Zihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1l
UGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTE1MzMsMTAgKzE1MzMsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZmdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRl
eHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0
Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVu
dmZ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1NTUsMTAgKzE1NTUsMTAgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhFbnZpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0
Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVu
dlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVUZXhFbnZpKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNr
ZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTU4
MCwxMCArMTU4MCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEVudml2KEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVF
bnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52
UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJn
ZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudml2KGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE2MDIsMTAgKzE2MDIsMTAgQEAgdm9pZCBHTF9B
UElFTlRSWSBUZXhFbnZ4KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRh
cmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0
dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFy
YW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleEVudngoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwg
cGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjI2LDEw
ICsxNjI2LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4RW52eHYoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52
UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBh
cmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZ4dihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjQ5LDkgKzE2NDksOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleFBhcmFtZXRlcngoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBh
cmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyeChjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTE2NzIsOSArMTY3Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4
UGFyYW1ldGVyeHYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpw
YXJhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4dihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRy
YW5zbGF0ZWYoR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5zbGF0ZWYoY29udGV4dCwgeCwgeSwgeikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3MTAsNyArMTcxMCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVHJhbnNsYXRleChHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xm
aXhlZCB6KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVHJhbnNs
YXRleChjb250ZXh0LCB4LCB5LCB6KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMTczMSw5ICsxNzMxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhQb2ludGVy
KEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm8KIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleFBvaW50ZXIoY29udGV4dCwg
c2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRvZ2Vu
LmNwcAppbmRleCAwOTA3ODA2NTY4ZDk4MWJmMjZiZmRiYmQ4ODI0YzgxNjZmNmE4NjAyLi5jYTc2
OGQxZTk3ZDYxOTc4MjVmMDMzMDViMTBlNDdjYmI1MjUyYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9hdXRv
Z2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5
X3BvaW50c19nbGVzXzJfMF9hdXRvZ2VuLmNwcApAQCAtMjgsNyArMjgsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVBY3RpdmVUZXh0dXJlKGNvbnRleHQsIHRleHR1cmUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00NiwxMCArNDYsMTAgQEAg
dm9pZCBHTF9BUElFTlRSWSBBdHRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFk
ZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
PihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVBdHRhY2hTaGFkZXIoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgc2hhZGVyUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzAsOSArNzAsOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgR0x1
aW50IGluZGV4LCBjb25zdCBHTGNoYXIgKgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUJpbmRBdHRyaWJMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBp
bmRleCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTkw
LDkgKzkwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyKEdMZW51bSB0YXJnZXQsIEdM
dWludCBidWZmZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAg
ICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRCdWZmZXIoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBidWZmZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTExLDkg
KzExMSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQs
IEdMdWludCBmcmFtZWJ1ZmZlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
RnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZy
YW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVi
dWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZyYW1lYnVmZmVySUQ+
KGZyYW1lYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlQmluZEZyYW1lYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgZnJhbWVidWZmZXJQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMzEsOSAr
MTMxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQs
IEdMdWludCByZW5kZXJidWZmZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxS
ZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJl
bmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmlu
ZFJlbmRlcmJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIHJlbmRlcmJ1ZmZlclBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1MSwxMCArMTUxLDEwIEBAIHZv
aWQgR0xfQVBJRU5UUlkgQmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
LSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4o
dGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZFRleHR1cmUoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxl
bmRDb2xvcihHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0
IGFsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlQmxlbmRDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBC
bGVuZEVxdWF0aW9uKEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlQmxlbmRFcXVhdGlvbihjb250ZXh0LCBtb2RlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjEyLDggKzIxMiw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhh
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKGNvbnRleHQs
IG1vZGVSR0IsIG1vZGVBbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuYyhHTGVudW0g
c2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5jKGNvbnRleHQsIHNmYWN0b3IsIGRmYWN0
b3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQmxlbmRGdW5jU2VwYXJhdGUoR0xlbnVtIHNmYWN0b3JSR0IsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5j
U2VwYXJhdGUoY29udGV4dCwgc2ZhY3RvclJHQiwgZGZhY3RvclJHQiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Zh
Y3RvckFscGhhLCBkZmFjdG9yQWxwaGEpKTsKQEAgLTI4NCwxMCArMjg0LDEwIEBAIHZvaWQgR0xf
QVBJRU5UUlkgQnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0
IHZvaWQgKmRhdGEsIEdMCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
ckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJC
aW5kaW5nPih0YXJnZXQpOwotICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyVXNhZ2U+KHVzYWdlKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1
ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlclVzYWdlPih1
c2FnZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUJ1ZmZlckRhdGEoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzaXplLCBkYXRhLCB1c2FnZVBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMwOSw5ICsz
MDksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgR0xp
bnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmlu
ZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlQnVmZmVyU3ViRGF0YShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwg
c2l6ZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTMz
MCw3ICszMzAsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TGVudW0gdGFyZ2V0KQogICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhjb250ZXh0LCB0YXJnZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzU4LDcg
KzM1OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXIoR0xiaXRmaWVsZCBtYXNrKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xlYXIoY29udGV4dCwgbWFzaykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTM3OCw3ICszNzgsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQ29sb3IoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4s
IEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyQ29sb3IoY29udGV4dCwgcmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ2xlYXJEZXB0aGYoR0xmbG9hdCBkKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xlYXJEZXB0aGYoY29udGV4dCwgZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIENsZWFyU3RlbmNpbChHTGludCBzKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xlYXJTdGVuY2lsKGNvbnRleHQsIHMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBDb2xvck1hc2soR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJv
b2xlYW4gYmx1ZSwgR0xib28KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDb2xvck1hc2soY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxw
aGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDUyLDggKzQ1Miw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29tcGlsZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Q29tcGlsZVNoYWRlcihjb250ZXh0LCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNDg0LDggKzQ4NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRl
eEltYWdlMkQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVz
c2VkVGV4SW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsCkBAIC01MjEsOCArNTIxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNv
bXByZXNzZWRUZXhTdWJJbWFnZTJEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLApAQCAtNTU1LDkgKzU1NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q29weVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVDb3B5VGV4SW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC01ODgsOSArNTg4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4U3Vi
SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUNvcHlUZXhTdWJJbWFnZTJEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTYxMCw3ICs2MTAsNyBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRlUHJvZ3JhbSgp
CiAgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW0oY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTYzOCw4ICs2MzgsOCBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgQ3Jl
YXRlU2hhZGVyKEdMZW51bSB0eXBlKQogICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDcmVhdGVTaGFkZXIoY29udGV4dCwg
dHlwZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY2
Niw4ICs2NjYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEN1bGxGYWNlKEdMZW51bSBtb2RlKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBDdWxsRmFjZU1vZGUgbW9kZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Q3VsbEZhY2VNb2RlPihtb2RlKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEN1bGxGYWNlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEN1bGxGYWNlTW9kZT4obW9kZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUN1bGxGYWNlKGNv
bnRleHQsIG1vZGVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC02ODYsOCArNjg2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVCdWZmZXJzKEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8Y29uc3QgQnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZUJ1
ZmZlcnMoY29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC03MDcsOSArNzA3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVGcmFtZWJ1ZmZl
cnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycykKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzUGFj
a2VkICAgICAgID0gRnJvbUdMPGNvbnN0IEZyYW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21H
TDxjb25zdCBGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZUZyYW1lYnVmZmVycyhj
b250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7CkBAIC03MjYsOCArNzI2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVQ
cm9ncmFtKEdMdWludCBwcm9ncmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVQcm9ncmFtKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzQ4
LDggKzc0OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUmVuZGVyYnVmZmVycyhHTHNpemVp
IG4sIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycykKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkID0gRnJv
bUdMPGNvbnN0IFJlbmRlcmJ1ZmZlcklEICo+KHJlbmRlcmJ1ZmZlcnMpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVm
ZmVycyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNzY2LDggKzc2Niw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
RGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVTaGFkZXIo
Y29udGV4dCwgc2hhZGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc4
Nyw4ICs3ODcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVRleHR1cmVzKEdMc2l6ZWkgbiwg
Y29uc3QgR0x1aW50ICp0ZXh0dXJlcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdM
PGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBjb25zdCBUZXh0dXJlSUQgKnRleHR1cmVzUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxjb25zdCBUZXh0dXJlSUQgKj4odGV4dHVyZXMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVGV4
dHVyZXMoY29udGV4dCwgbiwgdGV4dHVyZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtODA3LDcgKzgwNyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVwdGhGdW5jKEdMZW51
bSBmdW5jKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVwdGhG
dW5jKGNvbnRleHQsIGZ1bmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC04MjUsNyArODI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aE1hc2soR0xib29sZWFu
IGZsYWcpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0aE1h
c2soY29udGV4dCwgZmxhZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTg0Miw3ICs4NDIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2VmKEdMZmxvYXQg
biwgR0xmbG9hdCBmKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RGVwdGhSYW5nZWYoY29udGV4dCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTg2MCwxMCArODYwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgRGV0YWNoU2hh
ZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGV0YWNoU2hhZGVyKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTg4MSw3ICs4ODEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERpc2Fi
bGUoR0xlbnVtIGNhcCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURpc2FibGUoY29udGV4dCwgY2FwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KEdMdWludCBpbmRleCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoY29udGV4dCwg
aW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTE3LDggKzkxNyw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2Rl
Pihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1p
dGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRHJhd0FycmF5cyhjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwg
Y291bnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTQwLDEwICs5NDAsMTAgQEAg
dm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCB2b2kKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRz
VHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0Vs
ZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50cyhjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwg
dHlwZVBhY2tlZCwgaW5kaWNlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTk2MSw3ICs5NjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZShHTGVudW0gY2Fw
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlKGNvbnRl
eHQsIGNhcCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTk3OCw3
ICs5NzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdMdWlu
dCBpbmRleCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250ZXh0LCBpbmRleCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05OTYsNyArOTk2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBG
aW5pc2goKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRmluaXNo
KGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDEz
LDcgKzEwMTMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZsdXNoKCkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZsdXNoKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZl
clBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZh
bGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsCkBAIC0xMDcwLDEwICsxMDcwLDEwIEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7Ci0gICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0
KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQo
Y29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFj
a2VkLCBsZXZlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDk0LDcgKzEwOTQs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyb250RmFjZShHTGVudW0gbW9kZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZyb250RmFjZShjb250ZXh0LCBtb2RlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTExMiw4ICsxMTEyLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZW5CdWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJz
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJJRCAqYnVmZmVyc1Bh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQgKj4oYnVmZmVycyk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCAqYnVmZmVyc1Bh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRCAqPihi
dWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdlbkJ1ZmZlcnMoY29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMTMzLDggKzExMzMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEdlbkZyYW1lYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQ
YWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCAqZnJh
bWVidWZmZXJzUGFja2VkID0gRnJvbUdMPEZyYW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdlbkZyYW1lYnVmZmVycyhjb250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTE1NCw5ICsxMTU0LDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZW5SZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVm
ZmVyc1BhY2tlZCAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVm
ZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCA9IEZy
b21HTDxSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVycyhjb250
ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMTE3NCw4ICsxMTc0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5UZXh0
dXJlcyhHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQgKj4odGV4dHVyZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEICo+KHRleHR1cmVzKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblRleHR1cmVz
KGNvbnRleHQsIG4sIHRleHR1cmVzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTExOTQsOCArMTE5NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuZXJhdGVNaXBtYXAoR0xl
bnVtIHRhcmdldCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBl
Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcChjb250ZXh0LCB0YXJnZXRQYWNrZWQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTIyNCw5ICsxMjI0LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBHZXRBY3RpdmVBdHRyaWIoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlwZSwgbmFtZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMjU2LDkgKzEyNTYsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCB0eXBlLCBuYW1lKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTEyODQsOSArMTI4NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0QXR0YWNoZWRTaGFkZXJzKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEICpzaGFkZXJzUGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRCAqPihzaGFkZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCAq
c2hhZGVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRCAqPihzaGFkZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIG1heENvdW50LCBjb3VudCwgc2hhZGVyc1BhY2tlZCkpOwpAQCAt
MTMwOSw4ICsxMzA5LDggQEAgR0xpbnQgR0xfQVBJRU5UUlkgR2V0QXR0cmliTG9jYXRpb24oR0x1
aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkKICAgICBHTGludCByZXR1cm5WYWx1ZTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldEF0dHJpYkxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTMzOCw3ICsxMzM4LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqZGF0
YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEJvb2xlYW52
KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMTM1OCw5ICsxMzU4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJh
bWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpdihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC0xMzc4LDcgKzEzNzgsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkg
R2V0RXJyb3IoKQogICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRFcnJvcihjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQwNSw3ICsxNDA1LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpkYXRhKQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RmxvYXR2KGNvbnRleHQsIHBuYW1lLCBkYXRh
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTQzMSw3ICsxNDMx
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dihHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcykpOwpAQCAtMTQ1Miw3ICsxNDUyLDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpkYXRhKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcnYoY29udGV4
dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0xNDc2LDggKzE0NzYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1JbmZvTG9nKEdM
dWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1J
bmZvTG9nKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykp
OwpAQCAtMTUwMCw5ICsxNTAwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtaXYoR0x1
aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtaXYoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKQEAgLTE1MjIsOCArMTUyMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihjb250ZXh0LCB0
YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC0xNTQzLDggKzE1NDMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlckluZm9M
b2coR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihz
aGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFkZXJJbmZvTG9nKGNvbnRleHQsIHNoYWRlclBh
Y2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKSk7CkBAIC0xNTcyLDggKzE1NzIsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHTGVudW0gc2hhZGVydHlw
ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlclByZWNpc2lvbkZvcm1hdChjb250
ZXh0LCBzaGFkZXJ0eXBlLCBwcmVjaXNpb250eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLCBwcmVjaXNpb24pKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTU5NSw4ICsxNTk1LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyU291
cmNlKGNvbnRleHQsIHNoYWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBzb3VyY2UpKTsKQEAg
LTE2MTgsOSArMTYxOCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyaXYoR0x1aW50IHNo
YWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFkZXJpdihjb250ZXh0LCBzaGFkZXJQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0x
NjM5LDcgKzE2MzksNyBAQCBjb25zdCBHTHVieXRlICpHTF9BUElFTlRSWSBHZXRTdHJpbmcoR0xl
bnVtIG5hbWUpCiAgICAgY29uc3QgR0x1Ynl0ZSAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0U3RyaW5nKGNvbnRleHQsIG5hbWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNjY5LDkgKzE2NjksOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0VGV4UGFyYW1ldGVyZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTY5MSw5ICsxNjkxLDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRUZXhQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xNzEzLDggKzE3MTMs
OCBAQCBHTGludCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0s
IGNvbnN0IEdMY2hhciAqbmFtZSkKICAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE3NDQsMTUgKzE3NDQsMTYgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRVbmlmb3JtZnYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZs
b2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1mdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVu
aWZvcm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTc2NiwxNSArMTc2NywxNiBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFVuaWZvcm1pdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
aW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dFVuaWZvcm1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVu
aWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTc4OCw4ICsxNzkwLDggQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgdm9pZCAqKnBvaW4KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE4MDgsNyArMTgxMCw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VmVydGV4QXR0cmliZnYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
KnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJmdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xODI4LDcgKzE4MzAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYml2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYml2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE4NDgsNyArMTg1MCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgSGludChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUhpbnQoY29udGV4dCwgdGFyZ2V0LCBt
b2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTg2Niw4ICsx
ODY4LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzQnVmZmVyKEdMdWludCBidWZmZXIpCiAg
ICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUlzQnVmZmVyKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE4OTUsNyArMTg5Nyw3IEBAIEdMYm9vbGVh
biBHTF9BUElFTlRSWSBJc0VuYWJsZWQoR0xlbnVtIGNhcCkKICAgICBHTGJvb2xlYW4gcmV0dXJu
VmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNFbmFibGVk
KGNvbnRleHQsIGNhcCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTE5MjIsOCArMTkyNCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZyYW1lYnVmZmVyKEdM
dWludCBmcmFtZWJ1ZmZlcikKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAg
ICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVi
dWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTUxLDggKzE5NTMsOCBAQCBHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNQcm9ncmFtKEdMdWludCBwcm9ncmFtKQogICAgIEdMYm9vbGVhbiByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlSXNQcm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xOTc5LDggKzE5ODEsOCBAQCBHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgSXNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKICAgICBHTGJv
b2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBSZW5k
ZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVy
YnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVm
ZmVySUQ+KHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1JlbmRlcmJ1ZmZlcihjb250ZXh0LCByZW5kZXJidWZm
ZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjAwOCw4ICsyMDEwLDgg
QEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2hhZGVyKEdMdWludCBzaGFkZXIpCiAgICAgR0xi
b29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTaGFkZXIoY29udGV4dCwgc2hhZGVyUGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjAzNiw4ICsyMDM4LDggQEAg
R0xib29sZWFuIEdMX0FQSUVOVFJZIElzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKICAgICBHTGJv
b2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1
cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUlzVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjA2Myw3ICsyMDY1LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUxpbmVXaWR0aChjb250ZXh0LCB3aWR0aCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIwODAsOCArMjA4Miw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTGlua1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxp
bmtQcm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtMjEwMCw3ICsyMTAyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQaXhlbFN0b3JlaShH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBpeGVsU3RvcmVpKGNvbnRleHQsIHBuYW1lLCBwYXJh
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMTE5LDcgKzIxMjEsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFBvbHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
UG9seWdvbk9mZnNldChjb250ZXh0LCBmYWN0b3IsIHVuaXRzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTIxNDcsOCArMjE0OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVhZFBpeGVs
cyhHTGludCB4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVhZFBpeGVscyhjb250ZXh0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIxNjUsNyArMjE2Nyw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVJlbGVhc2VTaGFkZXJDb21waWxlcihjb250ZXh0KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjE4OSw3ICsyMTkxLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRh
dGVSZW5kZXJidWZmZXJTdG9yYWdlKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpKTsKQEAgLTIyMTAsNyArMjIxMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Ft
cGxlQ292ZXJhZ2UoR0xmbG9hdCB2YWx1ZSwgR0xib29sZWFuIGludmVydCkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1wbGVDb3ZlcmFn
ZShjb250ZXh0LCB2YWx1ZSwgaW52ZXJ0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTIyMzAsNyArMjIzMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Npc3NvcihHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTY2lzc29yKGNvbnRleHQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjI1Niw4ICsy
MjU4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTaGFkZXJCaW5hcnkoR0xzaXplaSBjb3VudCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgU2hhZGVyUHJvZ3JhbUlEICpz
aGFkZXJzUGFja2VkICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFNoYWRlclByb2dyYW1JRCAqPihz
aGFkZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFNoYWRl
clByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBTaGFkZXJQcm9ncmFtSUQg
Kj4oc2hhZGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVNoYWRlckJpbmFyeShjb250ZXh0LCBjb3VudCwg
c2hhZGVyc1BhY2tlZCwgYmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOwpAQCAtMjI4Myw5
ICsyMjg1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2hhZGVyU291cmNlKGNv
bnRleHQsIHNoYWRlclBhY2tlZCwgY291bnQsIHN0cmluZywgbGVuZ3RoKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjMwMyw3ICsyMzA1LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBTdGVuY2lsRnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVT
dGVuY2lsRnVuYyhjb250ZXh0LCBmdW5jLCByZWYsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMjMyNCw4ICsyMzI2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRnVu
Y1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoY29udGV4dCwgZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMjM0Miw3ICsyMzQ0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsTWFzayhHTHVpbnQg
bWFzaykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxN
YXNrKGNvbnRleHQsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0yMzYwLDcgKzIzNjIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxNYXNrU2VwYXJh
dGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJhdGUoY29udGV4dCwg
ZmFjZSwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMzgxLDcgKzIzODMs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxPcChHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWls
LCBHTGVudW0genBhc3MpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlU3RlbmNpbE9wKGNvbnRleHQsIGZhaWwsIHpmYWlsLCB6cGFzcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDA1LDggKzI0MDcsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFN0ZW5jaWxPcFNlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gc2ZhaWwsIEdMZW51
bSBkcGZhaWwsIEdMZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNpbE9wU2VwYXJhdGUo
Y29udGV4dCwgZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNzKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMjQzNyw5ICsyNDM5LDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBUZXhJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdl
dD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVGV4SW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDYyLDkgKzI0NjQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eFBhcmFtZXRlcmYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyZihjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTI0ODUsOSArMjQ4Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1l
dGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJmdihjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0yNTA3LDkgKzI1MDksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFt
ZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcmkoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0yNTMxLDkgKzI1MzMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcml2KEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMjU2NCw5ICsyNTY2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTJEKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3Vi
SW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC0yNTg3LDEzICsyNTg5LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFmKEdMaW50
IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFmKGNvbnRleHQsIGxvY2F0aW9u
LCB2MCkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm0xZihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24s
IHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvblBhY2tlZCwgdjAp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
MWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0KIH0K
IApAQCAtMjYwNywxNCArMjYxMSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVVuaWZvcm0xZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkp
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTFmdihjb250
ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFmdihsb2NhdGlv
biwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRp
b25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtMWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjYyNiwx
MyArMjYzMSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xaShHTGludCBsb2NhdGlvbiwg
R0xpbnQgdjApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWkoY29udGV4dCwgbG9jYXRpb24sIHYwKSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFpKGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xaSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgfQogfQogCkBAIC0yNjQ3LDE0
ICsyNjU0LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFpdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm0xaXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb25QYWNrZWQsIGNvdW50
LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMWl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjY2NiwxNCArMjY3NCwxNSBAQCB2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xm
bG9hdCB2MSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9y
bTJmKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJmKGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICB9CiB9CiAKQEAg
LTI2ODcsMTQgKzI2OTYsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMmZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtMmZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0yZnYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5p
Zm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTI3MDYsMTQgKzI3
MTYsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMmkoR0xpbnQgbG9jYXRpb24sIEdMaW50
IHYwLCBHTGludCB2MSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VW5pZm9ybTJpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJpKGNvbnRleHQsIGxvY2F0
aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAg
ICAgICAgICBjb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICB9CiB9
CiAKQEAgLTI3MjgsMTQgKzI3MzksMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMml2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVW5pZm9ybTJpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMml2KGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlv
blBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFVuaWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMml2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yNzQ4LDE0
ICsyNzYwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNmKEdMaW50IGxvY2F0aW9uLCBH
TGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2YoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwg
djIpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VW5pZm9ybTNmKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0z
Zihsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtM2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYx
LCB2Mik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpOwogICAgIH0KIH0KIApAQCAtMjc2OSwx
NCArMjc4MiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVVuaWZvcm0zZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTNmdihjb250ZXh0LCBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgY291bnQsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb25QYWNrZWQsIGNv
dW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM2Z2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjc4OSwxNCArMjgwMywxNSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zaShHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdM
aW50IHYxLCBHTGludCB2MikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVW5pZm9ybTNpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zaShjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaShsb2NhdGlvbiwgdjAs
IHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2kobG9jYXRpb25QYWNrZWQs
IHYwLCB2MSwgdjIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNp
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFVuaWZvcm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEsIHYyKTsKICAgICB9CiB9CiAKQEAgLTI4MTEsMTQgKzI4MjYsMTUgQEAgdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTNpdihjb250ZXh0
LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2Nh
dGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlv
bj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtM2l2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTNpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zaXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlm
b3JtM2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1
ZSk7CiAgICAgfQogfQogCkBAIC0yODMyLDE0ICsyODQ4LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybTRmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0
IHYyLCBHCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRmKGNvbnRleHQsIGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2MykpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9u
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VW5pZm9ybTRmKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2MykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTRmKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00Ziwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAg
ICAgfQogfQogCkBAIC0yODUzLDE0ICsyODcwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9y
bTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3Jt
NGZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGZ2
KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRm
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm00ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGZ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC0yODc0LDE0ICsyODkyLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRpKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTRpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTRpKGNvbnRleHQs
IGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aShsb2NhdGlvbiwg
djAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9u
UGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtNGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00aSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgfQogfQogCkBAIC0yODk2
LDE0ICsyOTE1LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVVuaWZvcm00aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTRpdihjb250ZXh0LCBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgY291bnQsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb25QYWNrZWQsIGNv
dW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGl2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjkyMCwxNCArMjk0MCwxNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybU1hdHJpeDJmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJm
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybU1hdHJpeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAg
ICB9CiB9CiAKQEAgLTI5NDQsMTQgKzI5NjcsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
TWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZnYoY29udGV4
dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2
KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm1NYXRyaXgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yOTY4LDE0ICsyOTk0
LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVVbmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NGZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtMjk4Niw4ICszMDE1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBVc2VQ
cm9ncmFtKEdMdWludCBwcm9ncmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVc2VQcm9ncmFtKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzAwNSw4
ICszMDM0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBWYWxpZGF0ZVByb2dyYW0oR0x1aW50IHByb2dy
YW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFj
a2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMwMjUsNyArMzA1NCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZihj
b250ZXh0LCBpbmRleCwgeCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTMwNDQsNyArMzA3Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWZ2KEdM
dWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYoY29udGV4dCwgaW5k
ZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzA2Myw3ICszMDkyLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIyZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwg
R0xmbG9hdCB5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmKGNvbnRleHQsIGluZGV4LCB4LCB5KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTMwODMsNyArMzExMiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VmVydGV4QXR0cmliMmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIyZnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAt
MzEwMyw3ICszMTMyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZihHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliM2YoY29u
dGV4dCwgaW5kZXgsIHgsIHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzEy
Myw3ICszMTUyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmdihjb250ZXh0LCBpbmRleCwgdikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMTQ0LDcgKzMxNzMsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFZlcnRleEF0dHJpYjRmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeiwgRwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTMxNjQsNyArMzE5Myw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAq
dikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWI0ZnYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMzE5MSw5ICszMjIwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJQb2ludGVyKEdMdWludCBpbmRleCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlw
ZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVZlcnRleEF0dHJpYlBvaW50ZXIoY29udGV4dCwgaW5kZXgsIHNpemUsIHR5cGVQYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC0zMjE0LDcgKzMyNDMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZpZXdwb3J0KEdMaW50
IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZpZXdwb3J0KGNvbnRl
eHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2lu
dHNfZ2xlc18zXzBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9hdXRvZ2VuLmNwcAppbmRleCBmNGQwY2I5ZWIy
Mjc3N2U5OGQ2OGFjMThlY2U3YjUzZDk3NTBiNzU0Li4xMmIyMjNkMGVhNTc2YmYyYTJlNjU4OWFl
ODg2ZGYyNGJmZWEzMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9hdXRv
Z2VuLmNwcApAQCAtMjgsOSArMjgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJlZ2luUXVlcnkoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGlkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBR
dWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVCZWdpblF1ZXJ5KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaWRQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDksOSArNDksOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0xlbnVtIHByaW1pdGl2ZU1vZGUp
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgcHJpbWl0
aXZlTW9kZVBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihwcmltaXRp
dmVNb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgcHJpbWl0aXZlTW9kZVBhY2tlZCA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihwcmltaXRpdmVNb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhj
b250ZXh0LCBwcmltaXRpdmVNb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtNzAsMTAgKzcwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZl
ckJhc2UoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAg
ICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0
KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRCdWZmZXJCYXNlKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgaW5kZXgsIGJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTk1LDkgKzk1LDkgQEAgQmluZEJ1ZmZlclJhbmdlKEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBH
THMKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdl
dCk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIEJ1ZmZlcklE
IGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1
ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kQnVmZmVyUmFuZ2UoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBpbmRleCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUpKTsKQEAgLTEx
OCw4ICsxMTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRTYW1wbGVyKEdMdWludCB1bml0LCBH
THVpbnQgc2FtcGxlcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxl
cklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJ
RD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
YW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFNhbXBsZXIoY29udGV4dCwgdW5pdCwgc2FtcGxlclBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzgsOCArMTM4LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xlbnVtIHRhcmdldCwgR0x1aW50
IGlkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUcmFuc2Zvcm1GZWVkYmFj
a0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJ
RD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVHJhbnNmb3JtRmVl
ZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNm
b3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIHRhcmdl
dCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTU3LDggKzE1Nyw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRleEFycmF5KEdMdWludCBhcnJheSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUJpbmRWZXJ0ZXhBcnJheShjb250ZXh0LCBhcnJheVBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC0xOTEsOCArMTkxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBCbGl0RnJh
bWVidWZmZXIoR0xpbnQgc3JjWDAsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCbGl0RnJhbWVi
dWZmZXIoY29udGV4dCwgc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFkwLCBkc3RY
MSwgZHN0WTEsIG1hc2ssIGZpbHRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0y
MTUsOCArMjE1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckJ1ZmZlcmZpKEdMZW51bSBidWZm
ZXIsIEdMaW50IGRyYXdidWZmZXIsIEdMZmxvYXQgZGVwdGgsIEcKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUNsZWFyQnVmZmVyZmkoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwg
c3RlbmNpbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTIzNiw4
ICsyMzYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVyZnYoR0xlbnVtIGJ1ZmZlciwg
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xmbG9hdCAqdgogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQ2xlYXJCdWZmZXJmdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMjU3LDggKzI1Nyw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ2xlYXJCdWZmZXJpdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVm
ZmVyLCBjb25zdCBHTGludCAqdmFsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhckJ1ZmZl
cml2KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0yNzgsOCArMjc4LDggQEAgdm9pZCBHTF9BUElFTlRS
WSBDbGVhckJ1ZmZlcnVpdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBH
THVpbnQgKnYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVydWl2KGNvbnRleHQs
IGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0zMDIsNyArMzAyLDcgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIENsaWVudFdh
aXRTeW5jKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3UKICAg
ICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUNsaWVudFdhaXRTeW5jKGNvbnRleHQsIHN5bmMsIGZsYWdzLCB0
aW1lb3V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTM0Myw4ICszNDMsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlM0QoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAtMzgyLDkgKzM4Miw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwg
em9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0
YSkpOwpAQCAtNDE1LDEwICs0MTUsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5QnVmZmVyU3Vi
RGF0YShHTGVudW0gcmVhZFRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgQnVmZmVyQmluZGluZyByZWFkVGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlckJpbmRpbmc+KHJlYWRUYXJnZXQpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHdyaXRl
VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4od3JpdGVU
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyByZWFkVGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4ocmVhZFRhcmdldCk7CisgICAg
ICAgIEJ1ZmZlckJpbmRpbmcgd3JpdGVUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHdyaXRlVGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weUJ1ZmZlclN1YkRhdGEoY29u
dGV4dCwgcmVhZFRhcmdldFBhY2tlZCwgd3JpdGVUYXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkT2Zmc2V0LCB3cml0
ZU9mZnNldCwgc2l6ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00NTEsOSArNDUx
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ3NCw4ICs0
NzQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVF1ZXJpZXMoR0xzaXplaSBuLCBjb25zdCBH
THVpbnQgKmlkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgUXVl
cnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFF1ZXJ5
SUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFF1
ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNv
bnN0IFF1ZXJ5SUQgKj4oaWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVF1ZXJpZXMoY29udGV4dCwgbiwgaWRzUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTQ5NSw4ICs0OTUsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIERlbGV0ZVNhbXBsZXJzKEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqc2Ft
cGxlcnMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFNhbXBsZXJJ
RCAqc2FtcGxlcnNQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBTYW1wbGVySUQg
Kj4oc2FtcGxlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgY29uc3Qg
U2FtcGxlcklEICpzYW1wbGVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
Y29uc3QgU2FtcGxlcklEICo+KHNhbXBsZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVNhbXBsZXJzKGNvbnRleHQsIGNv
dW50LCBzYW1wbGVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01MTUs
NyArNTE1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVTeW5jKEdMc3luYyBzeW5jKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlU3luYyhjb250ZXh0
LCBzeW5jKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNTM0LDgg
KzUzNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkc1BhY2tlZCAgICAgICAgICA9IEZyb21H
TDxjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICo+KGlkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQYWNrZWQgPSBG
cm9tR0w8Y29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAqPihpZHMpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2tzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCkBAIC01NTUsOCArNTU1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVWZXJ0ZXhBcnJh
eXMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgY29uc3QgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAg
ICAgID0gRnJvbUdMPGNvbnN0IFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tl
ZCA9IEZyb21HTDxjb25zdCBWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVWZXJ0ZXhB
cnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTU3OCw4ICs1NzgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5j
ZWQoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZChjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJz
dCwgY291bnQsIGluc3RhbmNlY291bnQpKTsKQEAgLTYwMCw3ICs2MDAsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIERyYXdCdWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0J1ZmZlcnMoY29udGV4dCwg
biwgYnVmcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYyNSwx
MCArNjI1LDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51
bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2Rl
IG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4o
bW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBy
aW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGljZXMsIGluc3RhbmNlY291bnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtNjU2LDkgKzY1Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHMo
R0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2
ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVN
b2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAg
ICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoY29u
dGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHR5cGVQYWNr
ZWQsIGluZGljZXMpKTsKQEAgLTY3OSw4ICs2NzksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuZFF1
ZXJ5KEdMZW51bSB0YXJnZXQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1
ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVy
eVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVy
eVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUVuZFF1ZXJ5KGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03MTcsNyArNzE3LDcgQEAgR0xzeW5jIEdMX0FQ
SUVOVFJZIEZlbmNlU3luYyhHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKQogICAg
IEdMc3luYyByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRmVuY2VTeW5jKGNvbnRleHQsIGNvbmRpdGlvbiwgZmxhZ3MpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzQ3LDkgKzc0Nyw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZz
ZXQsIEdMc2l6ZWlwCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRmx1c2hN
YXBwZWRCdWZmZXJSYW5nZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzcxLDkgKzc3MSw5IEBA
IEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50
LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVG
cmFtZWJ1ZmZlclRleHR1cmVMYXllcihjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlUGFja2VkLCBsZXZlbCwgbGF5ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtNzkzLDggKzc5Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2VuUXVlcmllcyhHTHNpemVpIG4s
IEdMdWludCAqaWRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlE
ICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRCAq
PihpZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlJRCAqaWRz
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJ
RCAqPihpZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZW5RdWVyaWVzKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTgxMiw4ICs4MTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblNh
bXBsZXJzKEdMc2l6ZWkgY291bnQsIEdMdWludCAqc2FtcGxlcnMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQgKj4oc2FtcGxlcnMpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEICpzYW1wbGVyc1BhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEICo+KHNhbXBsZXJzKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblNh
bXBsZXJzKGNvbnRleHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC04MzMsOCArODMzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5UcmFuc2Zv
cm1GZWVkYmFja3MoR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCAqaWRzUGFja2VkICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkc1BhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZlZWRiYWNrSUQgKj4oaWRzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdlblRyYW5zZm9ybUZlZWRiYWNrcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQpAQCAtODUzLDggKzg1Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2Vu
VmVydGV4QXJyYXlzKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZW5WZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTg4MCw4ICs4ODAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
IFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCB1bmlmb3JtQmxvY2tJbmRleCwgYnVmU2l6ZSwKQEAgLTkxMCw5ICs5MTAsOSBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdMdWludCBwcm9ncmFtLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05NDAsOSArOTQwLDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3Jtc2l2KEdMdWludCBwcm9ncmFtLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1z
aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtSW5kaWNlcywg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05NjYsOSArOTY2
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTk4OCw5ICs5ODgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2KEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxC
dWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydihjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0xMDEwLDkgKzEwMTAsOSBAQCBHTGludCBHTF9BUElFTlRSWSBHZXRGcmFnRGF0YUxvY2F0
aW9uKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCiAgICAgR0xpbnQgcmV0dXJu
VmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZyYWdE
YXRhTG9jYXRpb24oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEwNDAsNyArMTA0MCw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2
NCAqZGF0YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3YoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDU5LDcgKzEwNTksNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldEludGVnZXI2NHYoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRhKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVn
ZXI2NHYoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpA
QCAtMTA3OSw3ICsxMDc5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyaV92KEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcmlfdihjb250ZXh0
LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTEx
MDYsNyArMTEwNiw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZXJuYWxmb3JtYXRpdihHTGVu
dW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpdihjb250ZXh0LCB0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0xMTM1LDgg
KzExMzUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1CaW5hcnkoR0x1aW50IHByb2dy
YW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnkoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIGJpbmFyeUZvcm1hdCwgYmluYXJ5KSk7
CkBAIC0xMTU5LDkgKzExNTksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2
KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+
KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3R1aXYoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC0xMTgxLDggKzExODEsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVy
eVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlU
eXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVlcnlpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTIwNCw5ICsxMjA0
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyZnYoR0x1aW50IHNhbXBs
ZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNh
bXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTEyMjYs
OSArMTIyNiw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcml2KEdMdWlu
dCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxl
cklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBA
IC0xMjQ3LDcgKzEyNDcsNyBAQCBjb25zdCBHTHVieXRlICpHTF9BUElFTlRSWSBHZXRTdHJpbmdp
KEdMZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpCiAgICAgY29uc3QgR0x1Ynl0ZSAqcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0U3RyaW5naShj
b250ZXh0LCBuYW1lLCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKQEAgLTEyNzksOCArMTI3OSw4IEBAIEdldFN5bmNpdihHTHN5bmMgc3luYywgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnZhCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRTeW5jaXYoY29udGV4dCwgc3luYywgcG5hbWUsIGJ1ZlNpemUs
IGxlbmd0aCwgdmFsdWVzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMTMwOCw5ICsxMzA4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzMzLDkgKzEzMzMsOSBAQCBHTHVpbnQg
R0xfQVBJRU5UUlkgR2V0VW5pZm9ybUJsb2NrSW5kZXgoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdM
Y2hhciAqdW5pZm9ybUJsbwogICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybUJsb2NrSW5kZXgoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrTmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTEzNjgsOSArMTM2OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VW5pZm9ybUluZGljZXMoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybUluZGljZXMoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgdW5pZm9ybUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5pZm9ybU5hbWVzLCB1bmlmb3JtSW5kaWNlcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0xMzkyLDE1ICsxMzkyLDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0VW5pZm9ybXVpdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFy
YW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3Jt
dWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpKTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm11aXYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZv
cm11aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE0MTQsOCArMTQxNSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VmVydGV4QXR0cmliSWl2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2KGNv
bnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMTQzNSw4ICsxNDM2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0
ZXhBdHRyaWJJdWl2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXYoY29udGV4dCwgaW5k
ZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0xNDU5LDcgKzE0NjAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEludmFsaWRhdGVGcmFtZWJ1
ZmZlcihHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKGNv
bnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSk7CkBAIC0xNDkwLDgg
KzE0OTEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHTGVu
dW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZyYW1lYnVm
ZmVyKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMsIHgs
IHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTUxMiw4
ICsxNTEzLDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUXVlcnkoR0x1aW50IGlkKQogICAg
IEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeUlE
IGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUlzUXVlcnkoY29udGV4dCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC0xNTQwLDggKzE1NDEsOCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNT
YW1wbGVyKEdMdWludCBzYW1wbGVyKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTYW1wbGVyKGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
CkBAIC0xNTY5LDcgKzE1NzAsNyBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNTeW5jKEdMc3lu
YyBzeW5jKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1N5bmMoY29udGV4dCwgc3luYykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE1OTYsOCArMTU5Nyw4IEBAIEdMYm9vbGVhbiBH
TF9BUElFTlRSWSBJc1RyYW5zZm9ybUZlZWRiYWNrKEdMdWludCBpZCkKICAgICBHTGJvb2xlYW4g
cmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUcmFuc2Zvcm1G
ZWVkYmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVl
ZGJhY2tJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVHJhbnNm
b3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LCBp
ZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjI1LDggKzE2MjYsOCBA
QCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNWZXJ0ZXhBcnJheShHTHVpbnQgYXJyYXkpCiAgICAg
R0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
VmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZl
cnRleEFycmF5SUQ+KGFycmF5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoY29udGV4dCwgYXJy
YXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTY2Miw5ICsxNjYzLDkg
QEAgdm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwKICAgICB2
b2lkICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZl
ckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJC
aW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTWFw
QnVmZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNz
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTY5MSw3ICsxNjky
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBhdXNlVHJhbnNmb3JtRmVlZGJhY2so
Y29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE3MTUs
OCArMTcxNiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeShHTHVpbnQgcHJvZ3Jh
bSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtQmluYXJ5KGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpKTsKQEAgLTE3Mzgs
OSArMTczOSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVBhcmFtZXRlcmkoR0x1aW50IHBy
b2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVBhcmFtZXRlcmkoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgcG5hbWUsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMTc1OCw3ICsxNzU5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWFkQnVmZmVyKEdMZW51
bSBzcmMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWFkQnVm
ZmVyKGNvbnRleHQsIHNyYykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
QEAgLTE3ODMsOCArMTc4NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTE4MDMsNyArMTgwNCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUmVzdW1lVHJh
bnNmb3JtRmVlZGJhY2soKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTE4MjIsOSArMTgyMyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
U2FtcGxlclBhcmFtZXRlcmYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxl
cik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZihj
b250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xODQ1LDkgKzE4NDYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFNhbXBsZXJQYXJhbWV0ZXJmdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGZsb2F0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1w
bGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBs
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmZ2
KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTE4NjYsOSArMTg2Nyw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU2FtcGxlclBhcmFtZXRlcmkoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1w
bGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBs
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmko
Y29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtMTg5MCw5ICsxODkxLDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBTYW1wbGVyUGFyYW1ldGVyaXYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xpbnQgKnAKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNh
bXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2Ft
cGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
aXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtMTkyNCw5ICsxOTI1LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBUZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4SW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMTk1MSw4ICsxOTUyLDggQEAgVGV4U3RvcmFn
ZTJEKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgd2lkdGgKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UyRChjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsK
QEAgLTE5ODEsOSArMTk4Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNEKEdMZW51
bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4o
dGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlM0Qo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRl
cHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIwMTgsOCArMjAxOSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleFN1YkltYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsCkBAIC0yMDQ4LDggKzIwNDksOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoR0x1aW50IHByb2dyYW0s
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgY291bnQsIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7CkBAIC0yMDcwLDEzICsyMDcxLDE1IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTF1aShHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKQog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlVW5pZm9ybTF1aShjb250ZXh0LCBsb2NhdGlvbiwgdjApKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMXVpKGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWkobG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0xdWkobG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlv
biwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWksIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0KIH0KIApAQCAtMjA5MCwxNCArMjA5
MywxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZv
cm0xdWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0xdWl2KGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMXVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xdWl2KGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTF1aXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShVbmlmb3JtMXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjEwOSwxNCArMjExMywxNSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0ydWkoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwg
R0x1aW50IHYxKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlm
b3JtMnVpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJ1aShjb250ZXh0LCBsb2NhdGlv
blBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMnVpLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJ1
aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgIH0K
IH0KIApAQCAtMjEzMCwxNCArMjEzNSwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0ydWl2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKQogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0ydWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0ydWl2
KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMnVpdihs
b2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0ydWl2
KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybTJ1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMnVpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApA
QCAtMjE1MCwxNCArMjE1NiwxNSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zdWkoR0xpbnQg
bG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0zdWkoY29udGV4dCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTN1aShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybTN1aShsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zdWksIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgfQog
fQogCkBAIC0yMTcxLDE0ICsyMTc4LDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTN1aXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTN1aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTN1aXYo
Y29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWl2KGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTN1aXYo
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtM3VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zdWl2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC0yMTkyLDE0ICsyMjAwLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTR1aShHTGludCBs
b2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTR1aShjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00dWkoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTR1aShsb2Nh
dGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVW5pZm9ybTR1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTR1aSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgfQogfQogCkBA
IC0yMjEzLDE0ICsyMjIyLDE1IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTR1aXYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTR1aXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTR1aXYoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00dWl2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTR1aXYobG9jYXRp
b25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtNHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00dWl2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yMjM2
LDkgKzIyNDYsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1aW50
IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5p
Zm9ybUJsb2NrQmluZGluZyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pZm9ybUJsb2NrQmluZGluZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0y
MjYzLDE0ICsyMjczLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJ4M2Z2KEdM
aW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNmdihjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDNmdihjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0
cml4MngzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1h
dHJpeDJ4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4MngzZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yMjg3LDE0ICsyMzAw
LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9u
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRmdihjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4Mng0ZnYobG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVu
aWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4NGZ2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4Mng0ZnYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yMzExLDE0ICsyMzI3LDE3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXgzeDJmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgz
eDJmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4MmZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSk7CiAgICAgfQogfQogCkBAIC0yMzM1LDE0ICsyMzU0LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgz
eDRmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgzeDRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtTWF0cml4M3g0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQog
fQogCkBAIC0yMzU5LDE0ICsyMzgxLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJp
eDR4MmZ2KEdMaW50IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJmdihjb250ZXh0
LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDJm
dihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
VW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4
NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yMzgz
LDE0ICsyNDA4LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50
IGxvY2F0aW9uLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDNmdihjb250ZXh0LCBsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0eDNmdihjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJp
eDR4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NHgzZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yNDAzLDggKzI0MzEsOCBA
QCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgVW5tYXBCdWZmZXIoR0xlbnVtIHRhcmdldCkKICAgICBH
TGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbm1hcEJ1ZmZlcihjb250ZXh0LCB0YXJn
ZXRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQzMiw3ICsyNDYwLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwgR0x1
aW50IGRpdmlzb3IpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvcihjb250ZXh0LCBpbmRleCwgZGl2aXNvcikp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDUyLDcgKzI0ODAsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0aShHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHks
IEdMaW50IHosIEdMaW50CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTRpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0NzIsNyArMjUwMCw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSTRpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2
KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleEF0dHJpYkk0aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMjQ5Myw3ICsyNTIxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJJNHVpKEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0wKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJNHVpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTI1MTMsNyArMjU0MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4
QXR0cmliSTR1aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTR1
aXYoY29udGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjUz
Niw4ICsyNTY0LDggQEAgVmVydGV4QXR0cmliSVBvaW50ZXIoR0x1aW50IGluZGV4LCBHTGludCBz
aXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnMKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZVZlcnRleEF0dHJpYklQb2ludGVyKGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBl
UGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpKTsKQEAgLTI1NjIsNyArMjU5MCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgV2FpdFN5bmMoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0
IHRpbWVvdXQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlV2FpdFN5bmMoY29udGV4dCwgc3luYywgZmxhZ3MsIHRpbWVvdXQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzFfYXV0b2dlbi5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMV9hdXRv
Z2VuLmNwcAppbmRleCBjNTQwNjNlMTc0NjMyOGY2MzEwNjQzYjZiNTA4Y2RhZGQ4MDk5MDAzLi4w
NWI3M2ZmYTBkZjliZmNlMDk3NGUyNmEyNjAyNmExNDhiMzUyNTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMV9h
dXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Vu
dHJ5X3BvaW50c19nbGVzXzNfMV9hdXRvZ2VuLmNwcApAQCAtMjgsMTAgKzI4LDEwIEBAIHZvaWQg
R0xfQVBJRU5UUlkgQWN0aXZlU2hhZGVyUHJvZ3JhbShHTHVpbnQgcGlwZWxpbmUsIEdMdWludCBw
cm9ncmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9ncmFtUGlwZWxp
bmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5l
SUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVBY3RpdmVTaGFkZXJQcm9ncmFtKGNvbnRleHQsIHBpcGVsaW5l
UGFja2VkLCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNTksOSArNTksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRJbWFnZVRleHR1cmUo
R0x1aW50IHVuaXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVJ
RCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZEltYWdlVGV4
dHVyZShjb250ZXh0LCB1bml0LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgbGF5ZXJlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIGFj
Y2VzcywgZm9ybWF0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgwLDggKzgwLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlw
ZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBl
bGluZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxp
bmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFt
UGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFByb2dyYW1QaXBlbGluZShjb250ZXh0LCBwaXBl
bGluZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xMDUsOCArMTA1LDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVmVydGV4QnVmZmVyKEdMdWludCBiaW5kaW5naW5kZXgs
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVCaW5kVmVydGV4QnVmZmVyKGNvbnRleHQsIGJpbmRpbmdpbmRleCwg
YnVmZmVyUGFja2VkLCBvZmZzZXQsIHN0cmlkZSkpOwpAQCAtMTMwLDkgKzEzMCw5IEBAIEdMdWlu
dCBHTF9BUElFTlRSWSBDcmVhdGVTaGFkZXJQcm9ncmFtdihHTGVudW0gdHlwZSwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xjaGFyCiAgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyVHlw
ZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUNyZWF0ZVNoYWRlclByb2dyYW12KGNvbnRleHQsIHR5cGVQYWNrZWQsIGNv
dW50LCBzdHJpbmdzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MTYyLDggKzE2Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKQogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgY29uc3QgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5lc1BhY2tlZCA9IEZy
b21HTDxjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbVBp
cGVsaW5lcyhjb250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBE
aXNwYXRjaENvbXB1dGUoR0x1aW50IG51bV9ncm91cHNfeCwgR0x1aW50IG51bV9ncm91cHNfeSwg
R0x1aW4KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAg
ICAgICAgICAgICBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZShjb250ZXh0LCBudW1fZ3JvdXBzX3gs
IG51bV9ncm91cHNfeSwgbnVtX2dyb3Vwc196KSk7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBEaXNwYXRjaENvbXB1dGVJbmRpcmVjdChHTGludHB0ciBpbmRpcmVjdCkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNw
YXRjaENvbXB1dGVJbmRpcmVjdChjb250ZXh0LCBpbmRpcmVjdCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC0yMjQsOSArMjI0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlz
SW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0KQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmlt
aXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5c0luZGlyZWN0KGNvbnRleHQsIG1vZGVQYWNr
ZWQsIGluZGlyZWN0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
MjQ3LDkgKzI0Nyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5kaXJlY3QoR0xl
bnVtIG1vZGUsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1l
bnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50
c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5
cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdChjb250ZXh0LCBtb2RlUGFj
a2VkLCB0eXBlUGFja2VkLCBpbmRpcmVjdCkpOwpAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgcGFyYW0pCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclBhcmFt
ZXRlcmkoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7CkBAIC0yOTEsOCArMjkxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZW5Qcm9ncmFtUGlwZWxpbmVzKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW1QaXBlbGluZUlEICpwaXBlbGluZXNQ
YWNrZWQgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQg
KnBpcGVsaW5lc1BhY2tlZCA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRCAqPihwaXBlbGluZXMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2VuUHJvZ3JhbVBpcGVsaW5lcyhjb250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0Qm9vbGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAq
ZGF0YSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRCb29sZWFuaV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzM1LDggKzMzNSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2
KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE11
bHRpc2FtcGxlZnYoR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZhbCkKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRN
dWx0aXNhbXBsZWZ2KGNvbnRleHQsIHBuYW1lLCBpbmRleCwgdmFsKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTM4MCw5ICszODAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dy
YW1JbnRlcmZhY2VpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTQwOCw4ICs0MDgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dy
YW1QaXBlbGluZUluZm9Mb2coR0x1aW50IHBpcGVsaW5lLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAg
ICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1QaXBlbGluZUluZm9Mb2coY29udGV4dCwgcGlwZWxp
bmVQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykpOwpAQCAtNDMzLDkgKzQzMyw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVBpcGVsaW5laXYoR0x1aW50IHBpcGVsaW5lLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21H
TDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJvZ3JhbVBpcGVsaW5l
SUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBp
cGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5laXYoY29udGV4dCwgcGlwZWxpbmVQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC00NTksOCArNDU5LDggQEAgR0x1aW50IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNv
dXJjZUluZGV4KEdMdWludCBwcm9ncmFtLAogICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpOwpAQCAtNDk2LDggKzQ5Niw4
IEBAIEdMaW50IEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKEdMdWludCBw
cm9ncmFtLAogICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBw
cm9ncmFtSW50ZXJmYWNlLCBuYW1lKSk7CkBAIC01MzcsOSArNTM3LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VOYW1lKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJjZU5hbWUoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGJ1ZlNpemUs
IGxlbmd0aCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01NzIsOCArNTcy
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VpdihHTHVpbnQgcHJvZ3Jh
bSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2Vpdihj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCwKQEAgLTU5OSw4
ICs1OTksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyZnYoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZQogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
cG5hbWUsIHBhcmFtcykpOwpAQCAtNjI0LDggKzYyNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBu
YW1lCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7CkBAIC02NDYsOCArNjQ2
LDggQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBl
bGluZSkKICAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJ
c1Byb2dyYW1QaXBlbGluZShjb250ZXh0LCBwaXBlbGluZVBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCkBAIC02NzUsNyArNjc1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBNZW1vcnlC
YXJyaWVyKEdMYml0ZmllbGQgYmFycmllcnMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVNZW1vcnlCYXJyaWVyKGNvbnRleHQsIGJhcnJpZXJzKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgTWVtb3J5QmFycmllckJ5UmVnaW9uKEdMYml0ZmllbGQgYmFycmllcnMpCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWVtb3J5
QmFycmllckJ5UmVnaW9uKGNvbnRleHQsIGJhcnJpZXJzKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTcxMywxNSArNzEzLDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm0xZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjApCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWYoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTFmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtMWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0K
IH0KIApAQCAtNzM4LDE2ICs3MzksMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bTFmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZnYo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWZ2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm0xZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFmdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtNzYxLDE1ICs3NjMsMTYgQEAgdm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xpbnQgdjApCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtMWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWkocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
MWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgdjApOwogICAgIH0KIH0KIApAQCAtNzg2LDE2ICs3ODksMTcgQEAgdm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0xaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtMWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwor
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xaXYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9y
bTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtODA5
LDE1ICs4MTMsMTYgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTF1aShHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWkoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTF1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTF1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIHYwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
MXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgfQogfQogCkBA
IC04MzQsMTcgKzgzOSwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpdihH
THVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9j
YXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xdWl2KGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMXVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xdWl2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm0xdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xdWl2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTF1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtODU4LDE1ICs4NjQsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bTJmKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0wKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0yZihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4o
bG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmKGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJmKHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm0yZihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYx
KTsKICAgICB9CiB9CiAKQEAgLTg4MywxNiArODkyLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm0yZnYoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtMmZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUp
KTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmZ2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTJmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3Jh
bVVuaWZvcm0yZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0yZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KQEAgLTkwNiwxNSArOTE2LDE4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yaShHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGluCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIHYwLCB2MSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0yaShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yaShwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
djAsIHYxKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmkocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0yaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAgfQogfQogCkBAIC05MzEs
MTYgKzk0NCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMml2KEdMdWludCBw
cm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4o
bG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJpdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTJpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yaXYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTJpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMml2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgIHZh
bHVlKTsKICAgICB9CiB9CkBAIC05NTQsMTUgKzk2OCwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtMnVpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYw
LCBHTAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTJ1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZv
cm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aShj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3Jh
bVVuaWZvcm0ydWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgdjAsIHYxKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtMnVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYw
LCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0ydWksIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsCisgICAgICAg
ICAgICAgICAgICAgICAgdjEpOwogICAgIH0KIH0KIApAQCAtOTc5LDE3ICs5OTYsMTggQEAgdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aXYoR0x1aW50IHByb2dyYW0sCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMnVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTJ1aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtMnVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMnVpdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMnVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0ydWl2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEwMDQsMTUgKzEwMjIs
MTggQEAgUHJvZ3JhbVVuaWZvcm0zZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgdjAsIHYxLCB2MikpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM2YocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm0zZihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNmLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLAorICAgICAgICAgICAgICAgICAgICAg
IHYyKTsKICAgICB9CiB9CiAKQEAgLTEwMjksMTYgKzEwNTAsMTcgQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybTNmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm0zZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zZnYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtM2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQpAQCAtMTA1MywxNSAr
MTA3NSwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2koR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbgogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zaShwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTNpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2ksIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAgICAgICAgICAgICAg
ICAgICAgdjIpOwogICAgIH0KIH0KIApAQCAtMTA3OCwxNiArMTEwMywxNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtM2l2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTNpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291
bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpdihjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm0zaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNpdihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFByb2dyYW1Vbmlmb3JtM2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
M2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CkBAIC0xMTAy
LDE2ICsxMTI4LDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zdWkoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtM3VpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwg
djEsIHYyKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aShjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1V
bmlmb3JtM3VpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtM3VpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dy
YW1Vbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM3Vp
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYw
LAorICAgICAgICAgICAgICAgICAgICAgIHYxLCB2Mik7CiAgICAgfQogfQogCkBAIC0xMTI4LDE3
ICsxMTU2LDE4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zdWl2KEdMdWludCBw
cm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlv
blBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4o
bG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aXYoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0zdWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aXYocHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5p
Zm9ybTN1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtM3VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC0xMTUzLDE3ICsxMTgyLDE4IEBAIFByb2dyYW1Vbmlmb3JtNGYoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRm
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Mykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtNGYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIs
IHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwKLSAgICAgICAgICAgICAgICAgICAgICB2
Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00ZiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsCisgICAgICAg
ICAgICAgICAgICAgICAgdjIsIHYzKTsKICAgICB9CiB9CiAKQEAgLTExODAsMTYgKzEyMTAsMTcg
QEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTRmdihHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm00ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZnYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAg
fQogfQpAQCAtMTIwNSwxNyArMTIzNiwxOCBAQCBQcm9ncmFtVW5pZm9ybTRpKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgRwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBh
Y2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVu
aWZvcm00aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2
MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwg
djEsIHYyLCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpKHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsCi0gICAgICAgICAgICAgICAg
ICAgICAgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGksIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLAor
ICAgICAgICAgICAgICAgICAgICAgIHYyLCB2Myk7CiAgICAgfQogfQogCkBAIC0xMjMyLDE2ICsx
MjY0LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm00aXYoR0x1aW50IHByb2dy
YW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2Nh
dGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGl2KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtNGl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGl2
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUp
OwogICAgIH0KIH0KQEAgLTEyNTcsMTcgKzEyOTAsMTggQEAgUHJvZ3JhbVVuaWZvcm00dWkoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50
IHYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWkoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTR1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
djAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTR1aShwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZv
cm00dWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNHVpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsCi0gICAg
ICAgICAgICAgICAgICAgICAgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlm
b3JtNHVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYxLCB2MiwgdjMpOwogICAgIH0KIH0KIApA
QCAtMTI4NCwxNyArMTMxOCwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNHVp
dihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00dWl2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00dWl2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm00dWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00
dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQ
cm9ncmFtVW5pZm9ybTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdmFsdWUpOwogICAg
IH0KIH0KIApAQCAtMTMxMiwxNyArMTM0NywxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtTWF0cml4MmZ2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0
cml4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xMzQwLDE3ICsxMzc3LDE5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdihHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4MngzZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
TWF0cml4MngzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4
MngzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTEzNjgsMTcgKzE0MDcs
MTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KEdMdWludCBw
cm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRmdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm1NYXRyaXgyeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTM5
NiwxNyArMTQzNywxOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2
KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CiAgICAgfQogfQogCkBAIC0xNDI0LDE3ICsxNDY3LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzeDJmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
TWF0cml4M3gyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJv
Z3JhbVVuaWZvcm1NYXRyaXgzeDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bv
c2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE0NTIsMTcgKzE0OTcsMTkgQEAgdm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KEdMdWludCBwcm9ncmFtLAogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDN4
NGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDRmdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm1NYXRyaXgzeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRy
aXgzeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTQ4MCwxNyArMTUyNywxOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bU1hdHJpeDRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
UHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBA
IC0xNTA4LDE3ICsxNTU3LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDJmdihHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAg
ICB9CiB9CiAKQEAgLTE1MzYsMTcgKzE1ODcsMTkgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFt
VW5pZm9ybU1hdHJpeDR4M2Z2KEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybU1hdHJpeDR4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMTU1OCw3ICsxNjExLDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBTYW1wbGVNYXNraShHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKQogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBsZU1h
c2tpKGNvbnRleHQsIG1hc2tOdW1iZXIsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQpAQCAtMTU4Niw4ICsxNjM5LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlMkRNdWx0
aXNhbXBsZShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJE
TXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsCkBAIC0xNjEyLDkgKzE2NjUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVzZVByb2dy
YW1TdGFnZXMoR0x1aW50IHBpcGVsaW5lLCBHTGJpdGZpZWxkIHN0YWdlcywgR0x1aW50IHBybwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBl
bGluZVBhY2tlZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVs
aW5lKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVV
c2VQcm9ncmFtU3RhZ2VzKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBzdGFnZXMsIHByb2dyYW1Q
YWNrZWQpKTsKQEAgLTE2MzUsOCArMTY4OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmFsaWRhdGVQ
cm9ncmFtUGlwZWxpbmUoR0x1aW50IHBpcGVsaW5lKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVW
YWxpZGF0ZVByb2dyYW1QaXBlbGluZShjb250ZXh0LCBwaXBlbGluZVBhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xNjU2LDggKzE3MDksOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFZlcnRleEF0dHJpYkJpbmRpbmcoR0x1aW50IGF0dHJpYmluZGV4LCBHTHVpbnQgYmluZGluZ2lu
ZGV4KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhjb250ZXh0
LCBhdHRyaWJpbmRleCwgYmluZGluZ2luZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewpAQCAtMTY4Miw5ICsxNzM1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhB
dHRyaWJGb3JtYXQoR0x1aW50IGF0dHJpYmluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBWZXJ0ZXhBdHRyaWJU
eXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
dHRyaWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBz
aXplLCB0eXBlUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKQEAgLTE3MTAsOCArMTc2Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4QXR0cmliSUZvcm1hdChHTHVpbnQgYXR0cmliaW5kZXgsCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0
eXBlUGFja2VkLCByZWxhdGl2ZW9mZnNldCkpOwpAQCAtMTczMiw4ICsxNzg1LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhCaW5kaW5nRGl2aXNvcihHTHVpbnQgYmluZGluZ2luZGV4LCBHTHVp
bnQgZGl2aXNvcikKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29y
KGNvbnRleHQsIGJpbmRpbmdpbmRleCwgZGl2aXNvcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18yX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzJfYXV0b2dlbi5j
cHAKaW5kZXggZTk1NmMwMDk3MzE1YzkxMzVhYjJhZjE5MDQ2NDVjNjI1OTQzZThmYi4uNzE2YTNh
MzY0ODNiOGVkM2FjZDhlNGFhMDRhMmFjMDg3MmRkYjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzJfYXV0b2dl
bi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZ2xlc18zXzJfYXV0b2dlbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBCbGVuZEJhcnJpZXIoKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQmxlbmRCYXJyaWVyKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC00Nyw4ICs0Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlv
blNlcGFyYXRlaShHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpKGNvbnRleHQsIGJ1Ziwg
bW9kZVJHQiwgbW9kZUFscGhhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pKEdMdWlu
dCBidWYsIEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pKGNvbnRleHQsIGJ1ZiwgbW9kZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05MSw3ICs5MSw3IEBAIEJsZW5kRnVuY1NlcGFy
YXRlaShHTHVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3Jj
QWxwaGEsIEdMCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CiAgICAgICAgICAgICAgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWkoY29udGV4dCwgYnVmLCBz
cmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7CkBAIC0xMTMsNyArMTEzLDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNpKEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51
bSBkc3QpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQmxlbmRGdW5jaShjb250ZXh0LCBidWYsIHNyYywgZHN0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFz
a2koR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLAog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNv
bG9yTWFza2koY29udGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMTc1LDggKzE3NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weUltYWdlU3Vi
RGF0YShHTHVpbnQgc3JjTmFtZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlJbWFnZVN1
YkRhdGEoY29udGV4dCwgc3JjTmFtZSwgc3JjVGFyZ2V0LCBzcmNMZXZlbCwgc3JjWCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjWSwgc3Jj
WiwgZHN0TmFtZSwgZHN0VGFyZ2V0LCBkc3RMZXZlbCwgZHN0WCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WSwgZHN0Wiwgc3JjV2lkdGgs
IHNyY0hlaWdodCwgc3JjRGVwdGgpKTsKQEAgLTIwMiw4ICsyMDIsOCBAQCB2b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUNhbGxiYWNrKEdMREVCVUdQUk9DIGNhbGxiYWNrLCBjb25zdCB2b2lk
ICp1c2VyUGFyYQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJhY2so
Y29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVz
c2FnZUNvbnRyb2woR0xlbnVtIHNvdXJjZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRy
b2woY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291bnQsIGlkcywgZW5hYmxlZCkp
OwpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlSW5zZXJ0
KEdMZW51bSBzb3VyY2UsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnQoY29udGV4dCwg
c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKSk7CkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlaShj
b250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMzA3LDEwICszMDcsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNC
YXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNU
eXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxl
bWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZlcnRleChjb250ZXh0LCBtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0zMzksOSArMzM5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3
RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1p
dGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3Vu
dCwgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KSk7
CkBAIC0zNzIsOSArMzcyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVtZW50c0Jh
c2VWZXJ0ZXgoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0
ZXgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCkpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRW5hYmxlaShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmFibGVpKGNvbnRleHQsIHRhcmdl
dCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC00MTcs
OCArNDE3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmUoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXgKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVG
cmFtZWJ1ZmZlclRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFj
a2VkLCBsZXZlbCkpOwpAQCAtNDUyLDggKzQ1Miw4IEBAIEdMdWludCBHTF9BUElFTlRSWSBHZXRE
ZWJ1Z01lc3NhZ2VMb2coR0x1aW50IGNvdW50LAogICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2coY29udGV4dCwgY291bnQsIGJ1
ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxv
ZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC00ODMsNyArNDgzLDcgQEAgR0xlbnVt
IEdMX0FQSUVOVFJZIEdldEdyYXBoaWNzUmVzZXRTdGF0dXMoKQogICAgIEdMZW51bSByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC01MTQsNyArNTE0LDcgQEAgR2V0T2JqZWN0TGFiZWwoR0xlbnVtIGlkZW50aWZpZXIs
IEdMdWludCBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldE9iamVjdExhYmVsKGNvbnRleHQsIGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxl
bmd0aCwgbGFiZWwpKTsKQEAgLTUzOCw4ICs1MzgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE9i
amVjdFB0ckxhYmVsKGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0T2JqZWN0UHRyTGFiZWwoY29udGV4dCwgcHRy
LCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRlcnYo
R0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFBvaW50ZXJ2KGNvbnRleHQsIHBuYW1lLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTc4LDkgKzU3OCw5IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcklpdihHTHVpbnQgc2FtcGxlciwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
YW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
U2FtcGxlclBhcmFtZXRlcklpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjAxLDkgKzYwMSw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoR0x1aW50IHNhbXBs
ZXIsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1w
bGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYyMyw5
ICs2MjMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcklpdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjQ1
LDkgKzY0NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySXVpdihHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zCiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTY2NywxNiArNjY3LDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdihHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlk
YXRlR2V0blVuaWZvcm1mdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6
ZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2KGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRu
VW5pZm9ybWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOworICAg
ICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBh
Y2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldG5Vbmlmb3JtZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWZ2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CkBAIC02OTEsMTYgKzY5
MiwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtaXYoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlm
b3JtaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcykp
OworICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdihw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdldG5Vbmlmb3JtaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNp
emUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9y
bWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNp
emUsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQpAQCAtNzE1LDE2ICs3MTcsMTcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybXVpdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgYnVmU2l6ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm11aXYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcykpOworICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2KHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+
Z2V0blVuaWZvcm11aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBh
cmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVpdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CkBAIC03MzgsNyArNzQxLDcgQEAgR0xib29sZWFu
IEdMX0FQSUVOVFJZIElzRW5hYmxlZGkoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogICAg
IEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlSXNFbmFibGVkaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc2NSw3ICs3NjgsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIE1pblNhbXBsZVNoYWRpbmcoR0xmbG9hdCB2YWx1ZSkKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1pblNhbXBsZVNoYWRpbmcoY29udGV4dCwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03ODYsOCArNzg5LDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBPYmplY3RMYWJlbChHTGVudW0gaWRlbnRpZmllciwgR0x1aW50
IG5hbWUsIEdMc2l6ZWkgbGVuZ3RoLCBjb24KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU9iamVj
dExhYmVsKGNvbnRleHQsIGlkZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MDcsNyArODEwLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBPYmplY3RQdHJMYWJlbChjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBHTGNoYXIgKmwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVPYmplY3RQdHJMYWJlbChjb250ZXh0LCBwdHIsIGxlbmd0aCwgbGFi
ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODI2LDcgKzgyOSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgUGF0Y2hQYXJhbWV0ZXJpKEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGF0
Y2hQYXJhbWV0ZXJpKGNvbnRleHQsIHBuYW1lLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC04NDQsNyArODQ3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQb3BEZWJ1Z0dyb3Vw
KCkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcERlYnVnR3Jv
dXAoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg3
MSw3ICs4NzQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFByaW1pdGl2ZUJvdW5kaW5nQm94KEdMZmxv
YXQgbWluWCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICBWYWxpZGF0ZVByaW1pdGl2ZUJvdW5kaW5nQm94KGNvbnRleHQsIG1pblgs
IG1pblksIG1pblosIG1pblcsIG1heFgsIG1heFksIG1heFosIG1heFcpKTsKQEAgLTg5NSw4ICs4
OTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFB1c2hEZWJ1Z0dyb3VwKEdMZW51bSBzb3VyY2UsIEdM
dWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQ
dXNoRGVidWdHcm91cChjb250ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05MjUsNyArOTI4LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBSZWFkblBpeGVscyhHTGludCB4LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlUmVhZG5QaXhl
bHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBk
YXRhKSk7CkBAIC05NTAsOSArOTUzLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1l
dGVySWl2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICoKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2KGNvbnRleHQsIHNh
bXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKQEAgLTk3NCw5ICs5NzcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJh
bWV0ZXJJdWl2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2KGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTk5Niw5ICs5OTksOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEJ1ZmZl
cihHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBidWZmZXIpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhCdWZmZXIoY29udGV4dCwgdGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtMTAyNCw4ICsxMDI3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhCdWZmZXJS
YW5nZShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZm
ZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxCdWZmZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4QnVmZmVyUmFuZ2UoY29udGV4
dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUpKTsK
QEAgLTEwNTAsOSArMTA1Myw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySWl2KEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXYoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewpAQCAtMTA3NCw5ICsxMDc3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJdWl2
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50ICpwYXIKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlckl1aXYoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtMTEwNSw4ICsxMTA4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlM0RN
dWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFn
ZTNETXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzX2V4dF9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfZXh0X2F1dG9nZW4uY3Bw
CmluZGV4IGJkYjllZWIwNjc2MWU4NjNhNjBlMDE4ZjFkNDk3OWZiYWE5MWU3NGEuLjUxZTMwOGJi
ZTc3NGFmOTZiNTlkNTM4MGEwZTRmOGIwOTk2NjkyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfZXh0X2F1dG9nZW4u
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfZXh0X2F1dG9nZW4uY3BwCkBAIC00OCw5ICs0OCw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZUFOR0xFKEdMZW51bSBtb2RlLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEJhc2VJbnN0
YW5jZUFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2Rl
UGFja2VkLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQsIGJhc2VJbnN0YW5jZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04Miw5ICs4Miw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFKEdMZW51bSBt
b2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3
RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0
ZXhCYXNlSW5zdGFuY2VBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNl
cywKQEAgLTExOCw4ICsxMTgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEJhc2VJbnN0YW5jZUFOR0xFKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlk
YXRlTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoCkBAIC0xNTcsMTAg
KzE1NywxMCBAQCBNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFu
Y2VBTkdMRShHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBy
aW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlw
ZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1l
bnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0
YW5jZUFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudHMsIHR5cGVQYWNrZWQsIGluZGljZXMsIGluc3RhbmNlQ291bnRzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVmVydGljZXMsIGJhc2VJbnN0YW5jZXMs
IGRyYXdjb3VudCkpOwpAQCAtMjAxLDExICsyMDEsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5
VGV4dHVyZTNEQU5HTEUoR0x1aW50IHNvdXJjZUlkLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgZGVz
dFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0
VGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVJRCBz
b3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVJRD4oc291cmNlSWQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0
KTsKKyAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4dHVyZTNEQU5HTEUoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNvdXJjZUlkUGFja2VkLCBz
b3VyY2VMZXZlbCwgZGVzdFRhcmdldFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdElkUGFja2VkLCBkZXN0TGV2ZWwsIGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSwg
dW5wYWNrRmxpcFksCkBAIC0yNTQsMTAgKzI1NCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvcHlT
dWJUZXh0dXJlM0RBTkdMRShHTHVpbnQgc291cmNlSWQsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCBk
ZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KGRl
c3RUYXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7CisgICAgICAgIFRl
eHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KGRlc3RUYXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgZGVzdElk
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KGRlc3RJZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlM0RBTkdMRShjb250ZXh0LCBz
b3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXRQYWNrZWQsCkBAIC0zMDEsOCAr
MzAxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBCbGl0RnJhbWVidWZmZXJBTkdMRShHTGludCBzcmNY
MCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKGNvbnRleHQs
IHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFkwLCBkc3RYMSwgZHN0WTEs
IG1hc2ssIGZpbHRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0zMzEsOCArMzMx
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMzU4LDggKzM1OCw4IEBAIEdldFRleEltYWdl
QU5HTEUoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCB2b2lkICpwCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4SW1hZ2VBTkdMRShj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwpAQCAt
Mzg0LDcgKzM4NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdM
RShHTGVudW0gdGFyZ2V0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0KIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFJl
bmRlcmJ1ZmZlckltYWdlQU5HTEUoY29udGV4dCwgdGFyZ2V0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cykpOwpAQCAtNDExLDggKzQxMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50
KSk7CkBAIC00NDAsMTAgKzQ0MCwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdMZW51bSBtb2RlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3
RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoY29udGV4dCwgbW9k
ZVBhY2tlZCwgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBwcmltY291bnQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNDYzLDggKzQ2Myw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlz
b3IpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoY29u
dGV4dCwgaW5kZXgsIGRpdmlzb3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC00NzQsNiArNDc0LDM2IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiAgICAgfQogfQogCisvLyBH
TF9BTkdMRV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEKK3ZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0TWVt
b3J5WmlyY29uSGFuZGxlQU5HTEUoR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUp
Cit7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAg
IEVWRU5UKCJnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IHNpemUgPSAlbGx1LCBHTGVu
dW0gaGFuZGxlVHlwZSA9ICVzLCBHTHVpbnQgIgorICAgICAgICAgICJoYW5kbGUgPSAldSIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBtZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oc2l6ZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkV4dGVy
bmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksIGhhbmRsZSk7CisKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAgICBI
YW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxIYW5kbGVUeXBlPihoYW5kbGVUeXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUo
Y29udGV4dCwgbWVtb3J5UGFja2VkLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVHlwZVBhY2tlZCwg
aGFuZGxlKSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29udGV4dC0+aW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlKG1lbW9yeVBhY2tlZCwgc2l6ZSwg
aGFuZGxlVHlwZVBhY2tlZCwgaGFuZGxlKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBU
VVJFKEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bWVtb3J5UGFja2VkLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVR5cGVQYWNr
ZWQsIGhhbmRsZSk7CisgICAgfQorfQorCiAvLyBHTF9BTkdMRV9tdWx0aV9kcmF3CiB2b2lkIEdM
X0FQSUVOVFJZIE11bHRpRHJhd0FycmF5c0FOR0xFKEdMZW51bSBtb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqZmlyc3RzLApAQCAtNDg5LDgg
KzUxOSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3QXJyYXlzQU5HTEUoR0xlbnVtIG1v
ZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNBTkdMRShjb250ZXh0LCBt
b2RlUGFja2VkLCBmaXJzdHMsIGNvdW50cywgZHJhd2NvdW50KSk7CkBAIC01MTksOSArNTQ5LDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHTGVudW0g
bW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBt
b2RlUGFja2VkLCBmaXJzdHMsIGNvdW50cywgaW5zdGFuY2VDb3VudHMsIGRyYXdjb3VudCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC01NTAsMTAgKzU4MCwxMCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIE11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0xlbnVtIG1vZGUsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0Vs
ZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVt
ZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Cisg
ICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50c0FOR0xF
KGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50cywgdHlwZVBhY2tlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgZHJh
d2NvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU4Myw5ICs2MTMsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xlbnVtIG1v
ZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdF
bGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50cywgdHlwZVBhY2tlZCwK
QEAgLTYxMSw4ICs2NDEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb3Zva2luZ1ZlcnRleEFOR0xF
KEdMZW51bSBtb2RlKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm92b2tp
bmdWZXJ0ZXhDb252ZW50aW9uIG1vZGVQYWNrZWQgICAgICAgICAgPSBGcm9tR0w8UHJvdm9raW5n
VmVydGV4Q29udmVudGlvbj4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uIG1vZGVQYWNrZWQgPSBGcm9tR0w8UHJvdm9r
aW5nVmVydGV4Q29udmVudGlvbj4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQcm92b2tpbmdWZXJ0ZXhBTkdMRShjb250ZXh0
LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTYzMiw3ICs2NjIs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlcXVlc3RFeHRlbnNpb25BTkdMRShjb25zdCBHTGNoYXIg
Km5hbWUpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlUmVxdWVzdEV4dGVuc2lvbkFOR0xFKGNvbnRleHQsIG5hbWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtNjUxLDcgKzY4MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJs
ZUV4dGVuc2lvbkFOR0xFKGNvbnN0IEdMY2hhciAqbmFtZSkKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlRXh0ZW5zaW9uQU5HTEUo
Y29udGV4dCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NzcsNyArNzA3
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFudlJvYnVzdEFOR0xFKEdMZW51bSBwbmFt
ZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldEJvb2xlYW52Um9idXN0QU5HTEUoY29udGV4dCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC03MDUsOSArNzM1LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MzMsOCAr
NzYzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGbG9hdHZSb2J1c3RBTkdMRShHTGVudW0gcG5h
bWUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGbG9hdHZSb2J1c3RBTkdMRShjb250ZXh0
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC03NjIsOCArNzkyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQs
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03ODcsOCArODE3LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICoKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVnZXJ2Um9idXN0QU5H
TEUoY29udGV4dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTgxMyw5ICs4NDMsOSBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldFByb2dyYW1pdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1pdlJvYnVzdEFOR0xFKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIHBuYW1lLCBidWZTaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODQzLDcgKzg3Myw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFy
Z2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTg2OCw4ICs4OTgsOCBAQCBHZXRTaGFkZXJp
dlJvYnVzdEFOR0xFKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICpsZQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFkZXJpdlJv
YnVzdEFOR0xFKGNvbnRleHQsIHNoYWRlclBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKSk7CkBAIC04OTgsOSArOTI4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTkyOCw5ICs5NTgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtOTU2LDE2ICs5ODYsMTcgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWZ2Um9i
dXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZnZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
VW5pZm9ybWZ2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CiAgICAgfQogfQpAQCAtOTg0LDE2ICsxMDE1LDE3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VW5pZm9ybWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdlJvYnVzdChw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWl2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZv
cm1pdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwogICAgIH0KIH0KQEAgLTEwMTMsNyArMTA0NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRW
ZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTEwNDEsNyArMTA3Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTEwNjksNyArMTEwMSw3IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VmVy
dGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcG9pbnRlcikpOwpAQCAtMTEwNyw3ICsxMTM5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWFk
UGl4ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RB
TkdMRShjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUs
CkBAIC0xMTQ0LDggKzExNzYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlMkRSb2J1c3RB
TkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkRS
b2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsCkBAIC0xMTc0LDggKzEyMDYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRl
cmZ2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBh
cmFtZXRlcmZ2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgYnVmU2l6
ZSwgcGFyYW1zKSk7CkBAIC0xMjAyLDggKzEyMzQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBh
cmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZVRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwg
YnVmU2l6ZSwgcGFyYW1zKSk7CkBAIC0xMjM4LDggKzEyNzAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAgLTEyNzcsOCArMTMwOSw4IEBAIHZv
aWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTEzMTgsOSArMTM1MCw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJn
ZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRFJv
YnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBi
dWZTaXplLCBwaXhlbHMpKTsKQEAgLTEzNTUsOCArMTM4Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q29tcHJlc3NlZFRleEltYWdlMkRSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVDb21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTEzOTMsOCArMTQyNSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRh
cmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLApAQCAtMTQzMSw4ICsxNDYzLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJn
ZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEUm9idXN0QU5HTEUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAtMTQ3Miw5ICsxNTA0LDkgQEAg
dm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFKEdMZW51
bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3Nl
ZFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgs
IGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhU2l6ZSwgZGF0YSkpOwpAQCAtMTUwMyw4ICsxNTM1LDgg
QEAgR2V0UXVlcnlpdlJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW4KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlpdlJv
YnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKSk7CkBAIC0xNTMyLDggKzE1NjQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5
T2JqZWN0dWl2Um9idXN0QU5HTEUoR0x1aW50IGlkLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRSgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBpZFBh
Y2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0xNTYyLDkgKzE1OTQs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUoR0xlbnVt
IHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyQmluZGlu
ZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+
KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAg
LTE1ODgsNyArMTYyMCw3IEBAIEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLCBkYXRhKSk7CkBAIC0xNjIwLDggKzE2NTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
dEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0SW50ZXJuYWxmb3JtYXRpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTE2NDksNyArMTY4MSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoY29udGV4dCwgaW5k
ZXgsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMTY3Nyw3ICsxNzA5LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0x1aW50
IGluZGV4LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0xNzA0LDE2ICsxNzM2LDE3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUo
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtdWl2
Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtdWl2Um9idXN0KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7CiAgICAgfQogfQpAQCAtMTczNiw4ICsxNzY5LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFt
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsCkBA
IC0xNzY2LDcgKzE3OTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZSb2J1c3RB
TkdMRShHTGVudW0gcG5hbWUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEUo
Y29udGV4dCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSkpOwpAQCAtMTc5Myw3ICsxODI2
LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShHTGVudW0g
dGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAog
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoY29udGV4dCwg
dGFyZ2V0LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKSk7CkBAIC0xODIyLDkgKzE4NTUs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShH
TGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmlu
ZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEJ1
ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTE4NDksOCArMTg4Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxl
clBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlk
YXRlU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxlclBhY2tlZCwg
cG5hbWUsIGJ1ZlNpemUsIHBhcmFtKSk7CkBAIC0xODc3LDggKzE5MTAsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNh
bXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbSkpOwpAQCAtMTkwNiw5ICsxOTM5LDkg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTHVp
bnQgc2FtcGxlciwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklE
IHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4o
c2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTE5MzUsOSArMTk2OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2Um9idXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0xOTY1LDcgKzE5OTgsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMTk5Niw4ICsyMDI5LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRShHTHVpbnQgcHJvZ3JhbSwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLApAQCAtMjAyNyw3
ICsyMDYwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoR0xl
bnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShjb250ZXh0
LCB0YXJnZXQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpKTsKQEAgLTIwNTUsNyArMjA4
OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0TXVsdGlzYW1wbGVmdlJvYnVzdEFOR0xFKEdMZW51
bSBwbmFtZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRShjb250ZXh0
LCBwbmFtZSwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsKSk7CkBAIC0yMDg1LDkgKzIxMTgs
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShH
TGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRl
eExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTIxMTcsOSArMjE1MCw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4
TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjE0Niw3ICsyMTc5LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQb2ludGVydlJvYnVzdEFOR0xFUm9idXN0QU5HTEUoR0xl
bnVtIHBuYW1lLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KGNvbnRleHQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjE4NCw3ICsy
MjE3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdMaW50IHgs
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKGNvbnRleHQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKQEAgLTIyMTMsMTYgKzIyNDYsMTcgQEAg
dm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUoR0x1aW50IHByb2dyYW0s
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZS
b2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxv
Y2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0
aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dG5Vbmlmb3JtZnZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnZSb2J1c3QocHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAg
IGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICB9CiB9CkBAIC0yMjQxLDE2ICsyMjc1LDE3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKEdMdWludCBwcm9n
cmFtLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9y
bWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRuVW5pZm9ybWl2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWl2Um9idXN0
KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2Um9idXN0QU5H
TEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAgICAgICAgICAg
ICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgfQogfQpAQCAtMjI2OSwxNyArMjMw
NCwxOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUoR0x1aW50
IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5V
bmlmb3JtdWl2Um9idXN0QU5HTEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dy
YW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybXVpdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVu
aWZvcm11aXZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlm
b3JtdWl2Um9idXN0QU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcyk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgbG9j
YXRpb25QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTIy
OTcsOCArMjMzMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySWl2Um9idXN0QU5H
TEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdlJv
YnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykp
OwpAQCAtMjMyNSw4ICsyMzYxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJdWl2
Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpKTsKQEAgLTIzNTUsOSArMjM5MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4
UGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yMzg1LDkgKzI0MjEsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjQxMyw4ICsyNDQ5
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoR0x1
aW50IHNhbXBsZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+
KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklE
IHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2Ft
cGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdlJvYnVz
dEFOR0xFKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbSkpOwpA
QCAtMjQ0MSw4ICsyNDc3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySXVp
dlJvYnVzdEFOR0xFKEdMdWludCBzYW1wbGVyLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdlJv
YnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbSkpOwpAQCAtMjQ3
MCw5ICsyNTA2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9i
dXN0QU5HTEUoR0x1aW50IHNhbXBsZXIsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQs
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0OTksOSArMjUzNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShHTHVpbnQgc2FtcGxlciwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzYW1wbGVyUGFj
a2VkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMjUyOCw4ICsyNTY0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9i
amVjdGl2Um9idXN0QU5HTEUoR0x1aW50IGlkLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
UXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGlkUGFja2Vk
LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI1NTcsOCArMjU5Myw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUoR0x1aW50IGlk
LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RpNjR2Um9idXN0QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcykpOwpAQCAtMjU4Niw4ICsyNjIyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVy
eU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0x1aW50IGlkLAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xF
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQs
IGlkUGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI2MDAsNiAr
MjYzNiwzNCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdM
RShHTHVpbnQgaWQsCiAgICAgfQogfQogCisvLyBHTF9BTkdMRV9zZW1hcGhvcmVfZnVjaHNpYQor
dm9pZCBHTF9BUElFTlRSWSBJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRShHTHVpbnQg
c2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsSW1wb3J0U2VtYXBob3Jl
WmlyY29uSGFuZGxlQU5HTEUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1h
cGhvcmUgPSAldSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywgR0x1aW50IGhhbmRsZSA9ICV1IiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkV4dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksCisgICAgICAgICAgaGFuZGxl
KTsKKworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBo
b3JlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+
KHNlbWFwaG9yZSk7CisgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRsZVR5cGUpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW1w
b3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBl
UGFja2VkLCBoYW5kbGUpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5pbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGUoc2VtYXBob3Jl
UGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLCBoYW5kbGUpOworICAgICAgICB9CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
VHlwZVBhY2tlZCwgaGFuZGxlKTsKKyAgICB9Cit9CisKIC8vIEdMX0FOR0xFX3RleHR1cmVfZXh0
ZXJuYWxfdXBkYXRlCiB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlMkRFeHRlcm5hbEFOR0xFKEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsLApAQCAtMjYyMSw4ICsyNjg1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFn
ZTJERXh0ZXJuYWxBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0
ZVRleEltYWdlMkRFeHRlcm5hbEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTI2NDUsOCArMjcwOSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgSW52YWxpZGF0ZVRleHR1cmVBTkdMRShHTGVudW0gdGFyZ2V0KQogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUludmFsaWRh
dGVUZXh0dXJlQU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKQEAgLTI2NzUsOCArMjczOSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFn
ZTJETXVsdGlzYW1wbGVBTkdMRShHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
VGV4U3RvcmFnZTJETXVsdGlzYW1wbGVBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LApAQCAtMjcwNSw4ICsyNzY5LDggQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRUZXhMZXZlbFBhcmFtZXRlcml2QU5HTEUoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2QU5HTEUoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpOwpAQCAtMjczMyw4ICsyNzk3LDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2QU5HTEUoR0xlbnVtIHRhcmdldCwK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2QU5HTEUoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpOwpAQCAtMjc1Niw4ICsy
ODIwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRNdWx0aXNhbXBsZWZ2QU5HTEUoR0xlbnVtIHBu
YW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZhbCkKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldE11bHRpc2FtcGxlZnZBTkdMRShjb250ZXh0LCBwbmFtZSwgaW5kZXgsIHZhbCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTI3NzUsNyArMjgzOSw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgU2FtcGxlTWFza2lBTkdMRShHTHVpbnQgbWFza051bWJlciwgR0xiaXRm
aWVsZCBtYXNrKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVNhbXBsZU1hc2tpQU5HTEUoY29udGV4dCwgbWFza051bWJlciwgbWFzaykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yODAwLDggKzI4NjQsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShHTHVpbnQgc2hhZGVyLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
PihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNoYWRlclBhY2tlZCwg
YnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpKTsKQEAgLTI4MjUsMTcgKzI4ODksMTggQEAgdm9pZCBH
TF9BUElFTlRSWSBCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBjb24KIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRp
b24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3Jt
TG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlQmluZFVuaWZvcm1Mb2NhdGlvbkNI
Uk9NSVVNKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBuYW1lKSk7CisgICAgICAg
ICAgICAgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kVW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBuYW1lKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIG5hbWUpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVN
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQmluZFVuaWZvcm1M
b2NhdGlvbkNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgbmFtZSk7CiAgICAgfQogfQogCkBA
IC0yODQ4LDkgKzI5MTMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRDb3B5VGV4dHVy
ZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCkKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOwotICAgICAgICBUZXh0dXJl
SUQgZGVzdElkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
PihkZXN0SWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlE
IHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPihzb3VyY2VJZCk7CisgICAgICAgIFRleHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oY29udGV4dCwgc291cmNl
SWRQYWNrZWQsIGRlc3RJZFBhY2tlZCkpOwpAQCAtMjg4OCwxMSArMjk1MywxMSBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7Ci0gICAgICAgIFRl
eHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IGRl
c3RUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0PihkZXN0VGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4
dHVyZUNIUk9NSVVNKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBz
b3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXRQYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3RJZFBhY2tlZCwgZGVzdExldmVsLCBpbnRlcm5hbEZv
cm1hdCwgZGVzdFR5cGUsIHVucGFja0ZsaXBZLApAQCAtMjkzNywxMSArMzAwMiwxMSBAQCB2b2lk
IEdMX0FQSUVOVFJZIENvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7Ci0gICAg
ICAgIFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOworICAgICAgICBUZXh0dXJlVGFy
Z2V0IGRlc3RUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0PihkZXN0VGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUlEIGRlc3RJZFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVD
b3B5U3ViVGV4dHVyZUNIUk9NSVVNKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCBzb3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXRQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RJZFBhY2tlZCwgZGVzdExldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LApAQCAtMjk2Nyw3ICszMDMyLDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShHTGVudW0gY29t
cG9uZW50cykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShjb250ZXh0LCBjb21wb25lbnRzKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI5NzgsMjg0OSArMzA0MywyNTUyIEBAIHZv
aWQgR0xfQVBJRU5UUlkgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xlbnVtIGNvbXBvbmVu
dHMpCiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRmQ0hST01JVU0oR0xl
bnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm1hdHJpeCkKKy8vIEdMX0NIUk9NSVVNX2xv
c2VfY29udGV4dAordm9pZCBHTF9BUElFTlRSWSBMb3NlQ29udGV4dENIUk9NSVVNKEdMZW51bSBj
dXJyZW50LCBHTGVudW0gb3RoZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbE1hdHJpeExvYWRmQ0hST01JVU0iLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtYXRyaXhNb2RlID0gJXMsIGNvbnN0IEdMZmxv
YXQgKiBtYXRyaXggPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBtYXRyaXhNb2RlKSwg
KHVpbnRwdHJfdCltYXRyaXgpOworICAgIEVWRU5UKCJnbExvc2VDb250ZXh0Q0hST01JVU0iLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gY3VycmVudCA9ICVzLCBHTGVudW0gb3RoZXIgPSAlcyIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R3JhcGhp
Y3NSZXNldFN0YXR1cywgY3VycmVudCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkdyYXBoaWNzUmVzZXRTdGF0dXMsIG90aGVyKSk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TWF0cml4TG9hZGZDSFJPTUlVTShjb250ZXh0LCBtYXRyaXhNb2RlLCBtYXRyaXgpKTsKKyAgICAg
ICAgR3JhcGhpY3NSZXNldFN0YXR1cyBjdXJyZW50UGFja2VkID0gRnJvbUdMPEdyYXBoaWNzUmVz
ZXRTdGF0dXM+KGN1cnJlbnQpOworICAgICAgICBHcmFwaGljc1Jlc2V0U3RhdHVzIG90aGVyUGFj
a2VkICAgPSBGcm9tR0w8R3JhcGhpY3NSZXNldFN0YXR1cz4ob3RoZXIpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVMb3NlQ29udGV4dENIUk9N
SVVNKGNvbnRleHQsIGN1cnJlbnRQYWNrZWQsIG90aGVyUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF0cml4TG9hZGYo
bWF0cml4TW9kZSwgbWF0cml4KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmxvc2VDb250ZXh0KGN1
cnJlbnRQYWNrZWQsIG90aGVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKE1hdHJpeExvYWRmQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtYXRyaXhNb2Rl
LCBtYXRyaXgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKExvc2VDb250ZXh0Q0hST01JVU0sIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBjdXJyZW50UGFja2VkLCBvdGhlclBhY2tlZCk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMZW51bSBt
YXRyaXhNb2RlKQorLy8gR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQKK3ZvaWQgR0xfQVBJRU5U
UlkgQmluZEZyYWdEYXRhTG9jYXRpb25FWFQoR0x1aW50IHByb2dyYW0sIEdMdWludCBjb2xvciwg
Y29uc3QgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBtYXRyaXhNb2RlID0gJXMiLCBDSUQoY29udGV4dCksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgbWF0cml4
TW9kZSkpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVCIs
CisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCBjb2xv
ciA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIs
CisgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgY29sb3IsICh1aW50cHRyX3QpbmFtZSk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oY29udGV4dCwg
bWF0cml4TW9kZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5k
RnJhZ0RhdGFMb2NhdGlvbkVYVChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBjb2xvciwgbmFtZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPm1hdHJpeExvYWRJZGVudGl0eShtYXRyaXhNb2RlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmJpbmRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIGNvbG9yLCBuYW1lKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbWF0cml4TW9kZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
QmluZEZyYWdEYXRhTG9jYXRpb25FWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBjb2xvciwgbmFtZSk7CiAgICAgfQogfQogCi0vLyBHTF9DSFJPTUlVTV9sb3NlX2NvbnRl
eHQKLXZvaWQgR0xfQVBJRU5UUlkgTG9zZUNvbnRleHRDSFJPTUlVTShHTGVudW0gY3VycmVudCwg
R0xlbnVtIG90aGVyKQordm9pZCBHTF9BUElFTlRSWSBCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4
ZWRFWFQoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgY29sb3JOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5U
KCJnbExvc2VDb250ZXh0Q0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY3VycmVudCA9
ICVzLCBHTGVudW0gb3RoZXIgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6R3JhcGhpY3NSZXNldFN0YXR1cywgY3VycmVudCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdyYXBoaWNzUmVzZXRTdGF0dXMsIG90
aGVyKSk7CisgICAgRVZFTlQoImdsQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgY29sb3JO
dW1iZXIgPSAldSwgR0x1aW50IGluZGV4ID0gJXUsIGNvbnN0ICIKKyAgICAgICAgICAiR0xjaGFy
ICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgY29sb3JOdW1iZXIsIGluZGV4LCAodWludHB0cl90KW5hbWUpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBHcmFwaGljc1Jlc2V0U3RhdHVzIGN1cnJlbnRQYWNrZWQg
ICAgICAgICAgICAgPSBGcm9tR0w8R3JhcGhpY3NSZXNldFN0YXR1cz4oY3VycmVudCk7Ci0gICAg
ICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgb3RoZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21H
TDxHcmFwaGljc1Jlc2V0U3RhdHVzPihvdGhlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlTG9zZUNvbnRleHRDSFJPTUlVTShjb250ZXh0LCBjdXJyZW50UGFja2VkLCBv
dGhlclBhY2tlZCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
QmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvbG9yTnVtYmVy
LCBpbmRleCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmxvc2VDb250ZXh0KGN1cnJlbnRQYWNrZWQsIG90aGVyUGFja2Vk
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZChwcm9n
cmFtUGFja2VkLCBjb2xvck51bWJlciwgaW5kZXgsIG5hbWUpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoTG9zZUNvbnRleHRDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGN1cnJlbnRQYWNrZWQsIG90aGVyUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCaW5k
RnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTnVtYmVyLCBpbmRleCwgbmFtZSk7
CiAgICAgfQogfQogCi0vLyBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotR0x1aW50IEdMX0FQ
SUVOVFJZIEdlblBhdGhzQ0hST01JVU0oR0xzaXplaSByYW5nZSkKK0dMaW50IEdMX0FQSUVOVFJZ
IEdldEZyYWdEYXRhSW5kZXhFWFQoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAg
RVZFTlQoImdsR2VuUGF0aHNDSFJPTUlVTSIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgcmFuZ2Ug
PSAlZCIsIENJRChjb250ZXh0KSwgcmFuZ2UpOworICAgIEVWRU5UKCJnbEdldEZyYWdEYXRhSW5k
ZXhFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIGNv
bnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAg
ICAgICAgIHByb2dyYW0sICh1aW50cHRyX3QpbmFtZSk7CiAKLSAgICBHTHVpbnQgcmV0dXJuVmFs
dWU7CisgICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuUGF0aHNDSFJPTUlVTShjb250ZXh0
LCByYW5nZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFn
RGF0YUluZGV4RVhUKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmdlblBhdGhzKHJhbmdlKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+
Z2V0RnJhZ0RhdGFJbmRleChwcm9ncmFtUGFja2VkLCBuYW1lKTsKICAgICAgICAgfQogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01JVU0sIEdMdWludD4oKTsKKyAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6Okdl
dEZyYWdEYXRhSW5kZXhFWFQsIEdMaW50PigpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2VuUGF0aHNDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJhbmdlLCByZXR1
cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RnJhZ0RhdGFJbmRleEVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUsIHJldHVyblZhbHVlKTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6R2VuUGF0aHNDSFJPTUlVTSwgR0x1aW50PigpOworICAgICAg
ICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRGcmFn
RGF0YUluZGV4RVhULCBHTGludD4oKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVBhdGhzQ0hST01JVU0oR0x1aW50IGZpcnN0LCBH
THNpemVpIHJhbmdlKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEZWxldGVQYXRoc0NIUk9NSVVNIiwgImNvbnRleHQgPSAl
ZCwgR0x1aW50IGZpcnN0ID0gJXUsIEdMc2l6ZWkgcmFuZ2UgPSAlZCIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBmaXJzdCwgcmFuZ2UpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAg
ICAgICBQYXRoSUQgZmlyc3RQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UGF0aElEPihmaXJzdCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRGVsZXRlUGF0aHNDSFJPTUlVTShjb250ZXh0LCBmaXJzdFBhY2tlZCwgcmFu
Z2UpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5kZWxldGVQYXRocyhmaXJzdFBhY2tlZCwgcmFuZ2UpOwotICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlUGF0aHNDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGZpcnN0UGFja2VkLCByYW5nZSk7Ci0gICAgfQotfQotCi1HTGJvb2xlYW4gR0xfQVBJRU5U
UlkgSXNQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgpCitHTGludCBHTF9BUElFTlRSWSBHZXRQcm9n
cmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xJc1BhdGhDSFJPTUlVTSIsICJjb250
ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUiLCBDSUQoY29udGV4dCksIHBhdGgpOworICAgIEVW
RU5UKCJnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNl
ID0gJXMsIGNvbnN0IEdMY2hhciAqbmFtZSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2UpLAorICAgICAgICAg
ICh1aW50cHRyX3QpbmFtZSk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgR0xp
bnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQg
cGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihw
YXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1BhdGhDSFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkKSk7
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFBy
b2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVy
ZmFjZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNQYXRoKHBhdGhQYWNrZWQpOworICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPQorICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1S
ZXNvdXJjZUxvY2F0aW9uSW5kZXgocHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFt
ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1BhdGhDSFJPTUlV
TSwgR0xib29sZWFuPigpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPQorICAgICAgICAgICAg
ICAgIEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRQcm9ncmFtUmVzb3VyY2VM
b2NhdGlvbkluZGV4RVhULCBHTGludD4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKElzUGF0aENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGF0aFBhY2tlZCwgcmV0
dXJuVmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1SZXNvdXJjZUxvY2F0
aW9uSW5kZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUsIHJldHVyblZhbHVlKTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6SXNQYXRoQ0hST01JVU0sIEdMYm9vbGVhbj4oKTsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPQorICAgICAgICAgICAgR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQsIEdMaW50PigpOwogICAg
IH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUGF0aENv
bW1hbmRzQ0hST01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqY29vcmRzKQorLy8gR0xfRVhUX2RlYnVn
X21hcmtlcgordm9pZCBHTF9BUElFTlRSWSBJbnNlcnRFdmVudE1hcmtlckVYVChHTHNpemVpIGxl
bmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFBhdGhDb21tYW5kc0NIUk9NSVVN
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBHTHNpemVpIG51
bUNvbW1hbmRzID0gJWQsIGNvbnN0IEdMdWJ5dGUgKiBjb21tYW5kcyA9ICIKLSAgICAgICAgICAi
MHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xzaXplaSBudW1Db29yZHMgPSAlZCwgR0xl
bnVtIGNvb3JkVHlwZSA9ICVzLCBjb25zdCB2b2lkKiBjb29yZHMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwYXRoLCBudW1Db21tYW5kcywgKHVpbnRwdHJf
dCljb21tYW5kcywgbnVtQ29vcmRzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWZhdWx0R3JvdXAsIGNvb3JkVHlwZSksICh1aW50cHRyX3QpY29vcmRzKTsKKyAgICAv
LyBEb24ndCBydW4gdGhlIEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50
cnkgcG9pbnRzLgorICAgIC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRz
IGJlaW5nIHNldCBieSB0aGUgY2FsbGVyLgorICAgIC8vIEVWRU5UKCJnbEluc2VydEV2ZW50TWFy
a2VyRVhUIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFy
ICptYXJrZXIgPQorICAgIC8vIDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBsZW5n
dGgsICh1aW50cHRyX3QpbWFya2VyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUGF0
aENvbW1hbmRzQ0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgbnVtQ29tbWFuZHMsIGNvbW1h
bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3JkcykpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJF
WFQoY29udGV4dCwgbGVuZ3RoLCBtYXJrZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wYXRoQ29tbWFuZHMocGF0aFBhY2tlZCwg
bnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmluc2VydEV2ZW50TWFya2VyKGxlbmd0aCwgbWFya2VyKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGhDb21tYW5kc0NIUk9NSVVNLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcGF0aFBhY2tlZCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLAotICAg
ICAgICAgICAgICAgICAgICAgIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEluc2VydEV2ZW50TWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbGVuZ3RoLCBtYXJrZXIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUp
Cit2b2lkIEdMX0FQSUVOVFJZIFBvcEdyb3VwTWFya2VyRVhUKCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsUGF0aFBhcmFt
ZXRlcmZDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAl
dSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgdmFsdWUgPSAlZiIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBwYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCBwbmFtZSksIHZhbHVlKTsKKyAgICAvLyBEb24ndCBydW4gdGhlIEVWRU5UKCkgbWFjcm8gb24g
dGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzLgorICAgIC8vIEl0IGNhbiBpbnRlcmZl
cmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNldCBieSB0aGUgY2FsbGVyLgorICAgIC8v
IEVWRU5UKCJnbFBvcEdyb3VwTWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0
KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGhQYXJhbWV0ZXJmQ0hST01JVU0o
Y29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcEdyb3VwTWFya2VyRVhUKGNvbnRleHQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
YXRoUGFyYW1ldGVyZihwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgY29u
dGV4dC0+cG9wR3JvdXBNYXJrZXIoKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2Vk
LCBwbmFtZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvcEdyb3VwTWFya2VyRVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBh
dGhQYXJhbWV0ZXJpQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFs
dWUpCit2b2lkIEdMX0FQSUVOVFJZIFB1c2hHcm91cE1hcmtlckVYVChHTHNpemVpIGxlbmd0aCwg
Y29uc3QgR0xjaGFyICptYXJrZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0iLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTGludCB2YWx1ZSA9ICVkIiwgQ0lEKGNvbnRleHQpLCBwYXRoLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgdmFsdWUpOwor
ICAgIC8vIERvbid0IHJ1biB0aGUgRVZFTlQoKSBtYWNybyBvbiB0aGUgRVhUX2RlYnVnX21hcmtl
ciBlbnRyeSBwb2ludHMuCisgICAgLy8gSXQgY2FuIGludGVyZmVyZSB3aXRoIHRoZSBkZWJ1ZyBl
dmVudHMgYmVpbmcgc2V0IGJ5IHRoZSBjYWxsZXIuCisgICAgLy8gRVZFTlQoImdsUHVzaEdyb3Vw
TWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xj
aGFyICptYXJrZXIgPQorICAgIC8vIDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBs
ZW5ndGgsICh1aW50cHRyX3QpbWFya2VyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
UGF0aFBhcmFtZXRlcmlDSFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVB1c2hHcm91cE1hcmtlckVYVChjb250ZXh0LCBsZW5ndGgsIG1hcmtlcikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBhdGhQ
YXJhbWV0ZXJpKHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUGF0aFBhcmFtZXRlcmlDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHVzaEdy
b3VwTWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGVuZ3RoLCBtYXJrZXIpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShHTHVp
bnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSkKKy8vIEdMX0VYVF9kaXNjYXJk
X2ZyYW1lYnVmZmVyCit2b2lkIEdMX0FQSUVOVFJZIERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBudW1BdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldFBhdGhQYXJhbWV0ZXJmdkNI
Uk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqIHZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xEaXNj
YXJkRnJhbWVidWZmZXJFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xzaXplaSBudW1BdHRhY2htZW50cyA9ICVkLCBjb25zdCBHTGVudW0gIgorICAg
ICAgICAgICIqYXR0YWNobWVudHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJn
ZXQpLCBudW1BdHRhY2htZW50cywKKyAgICAgICAgICAodWludHB0cl90KWF0dGFjaG1lbnRzKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0o
Y29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZURpc2Nh
cmRGcmFtZWJ1ZmZlckVYVChjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2ht
ZW50cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmdldFBhdGhQYXJhbWV0ZXJmdihwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZGlzY2FyZEZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNo
bWVudHMsIGF0dGFjaG1lbnRzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGF0aFBhY2tl
ZCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNjYXJkRnJhbWVidWZm
ZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLAorICAg
ICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnZhbHVlKQorLy8gR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Cit2b2lkIEdM
X0FQSUVOVFJZIEJlZ2luUXVlcnlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHBhdGggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICogdmFsdWUgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwYXRoLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpdmFsdWUp
OworICAgIEVWRU5UKCJnbEJlZ2luUXVlcnlFWFQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMdWludCBpZCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSwgaWQpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTShjb250ZXh0
LCBwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpKTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0
YXJnZXQpOworICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRQYXRoUGFyYW1ldGVyaXYocGF0aFBh
Y2tlZCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJlZ2luUXVlcnkodGFy
Z2V0UGFja2VkLCBpZFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNr
ZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQmVnaW5RdWVyeUVYVCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaWRQYWNrZWQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTGVudW0gZnVuYywg
R0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUXVlcmllc0VY
VChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xQYXRoU3RlbmNpbEZ1bmND
SFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZ1bmMgPSAlcywgR0xp
bnQgcmVmID0gJWQsIEdMdWludCBtYXNrID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZnVuYyksIHJlZiwgbWFz
ayk7CisgICAgRVZFTlQoImdsRGVsZXRlUXVlcmllc0VYVCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRS
ICIiLCBDSUQoY29udGV4dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClpZHMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKGNvbnRleHQsIGZ1bmMsIHJlZiwgbWFzaykpOworICAg
ICAgICBjb25zdCBRdWVyeUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVRdWVyaWVzRVhUKGNvbnRl
eHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnBhdGhTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwor
ICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUXVlcmllcyhuLCBpZHNQYWNrZWQpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0sIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBmdW5jLCByZWYsIG1hc2spOworICAgICAgICBBTkdMRV9DQVBUVVJF
KERlbGV0ZVF1ZXJpZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShHTHVp
bnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKK3ZvaWQgR0xfQVBJRU5UUlkg
RW5kUXVlcnlFWFQoR0xlbnVtIHRhcmdldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbEZpbGxQYXRoQ0hST01J
VU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBm
aWxsTW9kZSA9ICVzLCBHTHVpbnQgbWFzayA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAg
IHBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGZpbGxNb2Rl
KSwgbWFzayk7CisgICAgRVZFTlQoImdsRW5kUXVlcnlFWFQiLCAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgZmls
bE1vZGUsIG1hc2spKTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5kUXVl
cnlFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbEZpbGxQYXRoKHBhdGhQYWNr
ZWQsIGZpbGxNb2RlLCBtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRhcmdl
dFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsRmlsbFBh
dGhDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGZpbGxNb2RlLCBt
YXNrKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShFbmRRdWVyeUVYVCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldFBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFN0ZW5j
aWxTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50
IG1hc2spCit2b2lkIEdMX0FQSUVOVFJZIEdlblF1ZXJpZXNFWFQoR0xzaXplaSBuLCBHTHVpbnQg
KmlkcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
Ci0gICAgRVZFTlQoImdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTSIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWlu
dCBtYXNrID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcGF0aCwgcmVmZXJlbmNlLCBt
YXNrKTsKKyAgICBFVkVOVCgiZ2xHZW5RdWVyaWVzRVhUIiwgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBuID0gJWQsIEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClpZHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcGF0aFBhY2tlZCwg
cmVmZXJlbmNlLCBtYXNrKSk7CisgICAgICAgIFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRzKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblF1
ZXJpZXNFWFQoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbFN0cm9rZVBhdGgocGF0
aFBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblF1ZXJp
ZXMobiwgaWRzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5j
aWxTdHJva2VQYXRoQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwYXRoUGFja2VkLCBy
ZWZlcmVuY2UsIG1hc2spOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblF1ZXJpZXNFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBDb3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1v
ZGUpCit2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NHZFWFQoR0xlbnVtIHBuYW1lLCBHTGlu
dDY0ICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0iLCAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXMiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgY292ZXJNb2RlKSk7CisgICAgRVZFTlQoImdsR2V0SW50ZWdlcjY0dkVYVCIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50NjQgKmRhdGEgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlQ292ZXJGaWxsUGF0aENIUk9NSVVNKGNvbnRleHQsIHBhdGhQ
YWNrZWQsIGNvdmVyTW9kZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcjY0dkVYVChjb250ZXh0LCBwbmFtZSwgZGF0
YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmNvdmVyRmlsbFBhdGgocGF0aFBhY2tlZCwgY292ZXJNb2RlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsIGRhdGEpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoQ292ZXJGaWxsUGF0aENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcGF0aFBhY2tlZCwgY292ZXJNb2RlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRJbnRl
Z2VyNjR2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIGRhdGEpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwg
R0xlbnVtIGNvdmVyTW9kZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpNjR2RVhU
KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCiB7Ci0gICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbENvdmVy
U3Ryb2tlUGF0aENIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xl
bnVtIGNvdmVyTW9kZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSkpOworICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7CisgICAgRVZFTlQoImdsR2V0UXVl
cnlPYmplY3RpNjR2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAl
dSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50NjQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJf
dClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQgcGF0
aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRo
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhD
SFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBjb3Zlck1vZGUpKTsKKyAgICAgICAgUXVlcnlJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5jb3ZlclN0cm9rZVBhdGgocGF0aFBhY2tlZCwgY292ZXJNb2RlKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aTY0dihpZFBhY2tlZCwgcG5hbWUsIHBh
cmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3ZlclN0cm9rZVBhdGhD
SFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGNvdmVyTW9kZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3RpNjR2RVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZp
bGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmpl
Y3RpdkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKLSAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImds
U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwYXRoID0gJXUsIEdMZW51bSBmaWxsTW9kZSA9ICVzLCBHTHVpbnQgbWFzayA9
ICV1LCBHTGVudW0gIgotICAgICAgICAgICJjb3Zlck1vZGUgPSAlcyIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBwYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCBmaWxsTW9kZSksIG1hc2ssCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgY292ZXJNb2RlKSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldEds
b2JhbENvbnRleHQoKTsKKyAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdGl2RVhUIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdM
aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFt
ZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01J
VU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dCwgcGF0aFBhY2tlZCwgZmlsbE1vZGUsIG1hc2ssIGNvdmVyTW9kZSkpOworICAgICAgICBRdWVy
eUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxRdWVyeUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgocGF0aFBhY2tlZCwgZmlsbE1v
ZGUsIG1hc2ssIGNvdmVyTW9kZSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeU9iamVj
dGl2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcGF0aFBhY2tlZCwgZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgbWFzaywg
Y292ZXJNb2RlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdGl2RVhULCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKEdM
dWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKQordm9pZCBHTF9B
UElFTlRSWSBHZXRRdWVyeU9iamVjdHVpNjR2RVhUKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBH
THVpbnQ2NCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBHTGludCBy
ZWZlcmVuY2UgPSAlZCwgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtICIKLSAgICAgICAgICAiY292
ZXJNb2RlID0gJXMiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcGF0aCwgcmVmZXJlbmNlLCBt
YXNrLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAs
IGNvdmVyTW9kZSkpOworICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywg
R0x1aW50NjQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0
ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0
aENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHBhdGhQYWNrZWQsIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlKSk7CisgICAg
ICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dkVYVChjb250ZXh0LCBpZFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKHBhdGhQ
YWNrZWQsIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0dWk2NHYoaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlV
TSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFF1ZXJ5T2JqZWN0dWk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIENvdmVyRmlsbFBhdGhJ
bnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMp
Cit2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2RVhUKEdMdWludCBpZCwgR0xlbnVt
IHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG51bVBhdGggPSAlZCwg
R0xlbnVtIHBhdGhOYW1lVHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAgICAg
ICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1LCBH
TGVudW0gY292ZXJNb2RlID0gJXMsIEdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXMsIGNvbnN0IEdM
ZmxvYXQgIgotICAgICAgICAgICIqIHRyYW5zZm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG51bVBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAgKHVpbnRwdHJf
dClwYXRocywgcGF0aEJhc2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIGNvdmVyTW9kZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgdHJhbnNmb3JtVHlwZSksICh1aW50cHRyX3QpdHJhbnNmb3JtVmFsdWVzKTsK
KyAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisg
ICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UGF0aElEPihwYXRoQmFzZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG51bVBhdGgs
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1
aXZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3ZlckZpbGxQYXRo
SW5zdGFuY2VkKG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRR
dWVyeU9iamVjdHVpdihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0sIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5z
Zm9ybVZhbHVlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3R1aXZFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdM
c2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0UXVlcnlpdkVYVChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIEVWRU5UKCJnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG51bVBhdGggPSAlZCwgR0xlbnVtIHBh
dGhOYW1lVHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAgICAgICAgIjB4JTAx
NiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gY292
ZXJNb2RlID0gJXMsIEdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXMsIGNvbnN0IEdMZmxvYXQgIgot
ICAgICAgICAgICIqIHRyYW5zZm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIG51bVBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpE
ZWZhdWx0R3JvdXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXRocywg
cGF0aEJhc2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVy
TW9kZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgdHJhbnNmb3JtVHlwZSksICh1aW50cHRyX3QpdHJhbnNmb3JtVmFsdWVzKTsKKyAgICBFVkVO
VCgiZ2xHZXRRdWVyeWl2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4
UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpRdWVyeVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoQmFzZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ292ZXJTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJh
c2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAgICAgICAgUXVl
cnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChudW1QYXRoLCBwYXRo
TmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb3Zlck1vZGUsIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9y
bVZhbHVlcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeWl2KHRhcmdldFBhY2tlZCwg
cG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGgs
IHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICBwYXRocywgcGF0aEJhc2VQYWNr
ZWQsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRRdWVyeWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK0dMYm9vbGVh
biBHTF9BUElFTlRSWSBJc1F1ZXJ5RVhUKEdMdWludCBpZCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbFN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBudW1QYXRoID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qgdm9pZCAqIHBh
dGhzID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQg
cGF0aEJhc2UgPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWludCBtYXNrID0gJXUsIEdM
ZW51bSB0cmFuc2Zvcm1UeXBlID0gIgotICAgICAgICAgICIlcywgY29uc3QgR0xmbG9hdCAqIHRy
YW5zZm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIG51bVBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBh
dGhOYW1lVHlwZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXRocywgcGF0aEJhc2UsIHJlZmVy
ZW5jZSwgbWFzaywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCB0cmFuc2Zvcm1UeXBlKSwgKHVpbnRwdHJfdCl0cmFuc2Zvcm1WYWx1ZXMpOworICAg
IEVWRU5UKCJnbElzUXVlcnlFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSIsIENJ
RChjb250ZXh0KSwgaWQpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNl
LCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAgICAgICAgUXVlcnlJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVJc1F1ZXJ5RVhUKGNvbnRleHQsIGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbFN0cm9rZVBhdGhJbnN0
YW5jZWQobnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UsIG1h
c2ssIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IGNvbnRleHQtPmlzUXVlcnkoaWRQYWNrZWQpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJu
VmFsdWU8RW50cnlQb2ludDo6SXNRdWVyeUVYVCwgR0xib29sZWFuPigpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgcGF0
aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIHJlZmVyZW5jZSwgbWFzaywgdHJhbnNm
b3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKElzUXVlcnlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tl
ZCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1F1ZXJ5RVhULCBHTGJv
b2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQordm9pZCBHTF9BUElF
TlRSWSBRdWVyeUNvdW50ZXJFWFQoR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xT
dGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xzaXplaSBudW1QYXRocyA9ICVkLCBHTGVudW0gcGF0aE5hbWVUeXBlID0gJXMsIGNvbnN0
IHZvaWQgKiBwYXRocyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAg
IiwgR0x1aW50IHBhdGhCYXNlID0gJXUsIEdMZW51bSBmaWxsTW9kZSA9ICVzLCBHTHVpbnQgbWFz
ayA9ICV1LCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9ICIKLSAgICAgICAgICAiJXMsIGNvbnN0IEdM
ZmxvYXQgKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBudW1QYXRocywgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgcGF0aE5hbWVUeXBlKSwKLSAgICAgICAgICAodWludHB0cl90KXBhdGhzLCBwYXRo
QmFzZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZmlsbE1vZGUp
LCBtYXNrLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIHRyYW5zZm9ybVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZF
TlQoImdsUXVlcnlDb3VudGVyRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUsIEdM
ZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwgaWQsCisgICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVU
eXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAg
ICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVRdWVyeUNvdW50ZXJFWFQoY29udGV4dCwgaWRQYWNrZWQsIHRhcmdldFBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywg
cGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsbE1vZGUsIG1hc2ssIHRyYW5zZm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5xdWVyeUNvdW50ZXIoaWRQYWNrZWQsIHRhcmdldFBhY2tlZCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBmaWxsTW9kZSwg
bWFzaywgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1
ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFF1ZXJ5Q291bnRlckVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGlkUGFja2VkLCB0YXJnZXRQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVp
IG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKQorLy8gR0xfRVhUX2RyYXdfYnVmZmVycwordm9pZCBHTF9B
UElFTlRSWSBEcmF3QnVmZmVyc0VYVChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZF
TlQoImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0iLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbnVtUGF0aHMgPSAlZCwgR0xlbnVtIHBhdGhOYW1l
VHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJ
eFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gZmlsbE1vZGUg
PSAlcywgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICVzLCAiCi0gICAgICAg
ICAgIkdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXMsIGNvbnN0IEdMZmxvYXQgKiB0cmFuc2Zvcm1W
YWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBudW1Q
YXRocywgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcGF0aE5hbWVU
eXBlKSwKLSAgICAgICAgICAodWludHB0cl90KXBhdGhzLCBwYXRoQmFzZSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZmlsbE1vZGUpLCBtYXNrLAotICAgICAgICAg
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHJhbnNm
b3JtVHlwZSksICh1aW50cHRyX3QpdHJhbnNmb3JtVmFsdWVzKTsKKyAgICBFVkVOVCgiZ2xEcmF3
QnVmZmVyc0VYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNv
bnN0IEdMZW51bSAqYnVmcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAor
ICAgICAgICAgICh1aW50cHRyX3QpYnVmcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQYXRoSUQ+KHBhdGhCYXNlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwg
cGF0aHMsIHBhdGhCYXNlUGFja2VkLCBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFzaywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0J1ZmZl
cnNFWFQoY29udGV4dCwgbiwgYnVmcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZChudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoQmFzZVBhY2tlZCwgZmlsbE1v
ZGUsIG1hc2ssIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAg
ICAgICAgICAgY29udGV4dC0+ZHJhd0J1ZmZlcnMobiwgYnVmcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCBmaWxsTW9kZSwgbWFzaywgY292
ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZh
bHVlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0J1ZmZlcnNFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBuLCBidWZzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKKy8vIEdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhl
ZAordm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUKEdMdWludCBidWYs
IEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHNpemVpIG51bVBhdGhzID0gJWQsIEdMZW51bSBwYXRoTmFtZVR5cGUgPSAlcywgY29uc3Qg
dm9pZCAqIHBhdGhzID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAi
LCBHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWludCBtYXNr
ID0gJXUsIEdMZW51bSBjb3Zlck1vZGUgPSAlcywgIgotICAgICAgICAgICJHTGVudW0gdHJhbnNm
b3JtVHlwZSA9ICVzLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbnVtUGF0aHMsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBhdGhOYW1lVHlwZSksCi0gICAgICAgICAg
KHVpbnRwdHJfdClwYXRocywgcGF0aEJhc2UsIHJlZmVyZW5jZSwgbWFzaywKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1vZGUpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9y
bVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZFTlQoImdsQmxlbmRF
cXVhdGlvblNlcGFyYXRlaUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1
ZiA9ICV1LCBHTGVudW0gbW9kZVJHQiA9ICVzLCBHTGVudW0gbW9kZUFscGhhID0gJXMiLCBDSUQo
Y29udGV4dCksCisgICAgICAgICAgYnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Qmxl
bmRFcXVhdGlvbk1vZGVFWFQsIG1vZGVSR0IpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpCbGVuZEVxdWF0aW9uTW9kZUVYVCwgbW9kZUFscGhhKSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFBhdGhJRCBwYXRoQmFzZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGhCYXNlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBudW1Q
YXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIHJlZmVyZW5jZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaywgY292ZXJNb2RlLCB0cmFuc2Zvcm1U
eXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVChjb250ZXh0LCBi
dWYsIG1vZGVSR0IsIG1vZGVBbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkKG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJhc2VQYWNrZWQsIHJl
ZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVz
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZWkoYnVmLCBtb2Rl
UkdCLCBtb2RlQWxwaGEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgIHBhdGhOYW1lVHlwZSwgcGF0aHMs
IHBhdGhCYXNlUGFja2VkLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShHTHVpbnQgcHJvZ3JhbXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvbmlFWFQo
R0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEJpbmRGcmFnbWVudElucHV0TG9jYXRp
b25DSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW1zID0g
JXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIGNvbnN0IEdMY2hhciAqIG5hbWUgPSAiCi0gICAgICAg
ICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW1z
LCBsb2NhdGlvbiwgKHVpbnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xCbGVuZEVxdWF0aW9u
aUVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xlbnVtIG1vZGUgPSAlcyIs
IENJRChjb250ZXh0KSwKKyAgICAgICAgICBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpCbGVuZEVxdWF0aW9uTW9kZUVYVCwgbW9kZSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbXNQYWNrZWQgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgVmFsaWRhdGVCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0o
Y29udGV4dCwgcHJvZ3JhbXNQYWNrZWQsIGxvY2F0aW9uLCBuYW1lKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pRVhUKGNv
bnRleHQsIGJ1ZiwgbW9kZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRGcmFnbWVudElucHV0TG9jYXRpb24ocHJvZ3JhbXNQ
YWNrZWQsIGxvY2F0aW9uLCBuYW1lKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJsZW5kRXF1YXRp
b25pKGJ1ZiwgbW9kZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
c1BhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwgbmFtZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoQmxlbmRFcXVhdGlvbmlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBi
dWYsIG1vZGUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5DSFJPTUlVTShHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5N
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit2b2lkIEdMX0FQSUVOVFJZ
CitCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVt
IGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGVudW0gZ2VuTW9k
ZSA9ICVzLCBHTGludCAiCi0gICAgICAgICAgImNvbXBvbmVudHMgPSAlZCwgY29uc3QgR0xmbG9h
dCAqIGNvZWZmcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHByb2dyYW0sIGxvY2F0aW9uLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBnZW5Nb2RlKSwKLSAgICAgICAgICBjb21wb25lbnRzLCAodWludHB0cl90KWNvZWZmcyk7
CisgICAgRVZFTlQoImdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUIiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmNSR0IgPSAlcywgR0xlbnVtIGRzdFJH
QiA9ICVzLCBHTGVudW0gc3JjQWxwaGEgIgorICAgICAgICAgICI9ICVzLCBHTGVudW0gZHN0QWxw
aGEgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwgc3JjUkdCKSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdFJHQiksCisgICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBzcmNBbHBoYSksCisgICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBkc3RBbHBo
YSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMs
IGNvZWZmcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQoY29udGV4dCwg
YnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBnZW5Nb2RlLCBjb21wb25l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZWZmcyk7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZWkoYnVmLCBzcmNS
R0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
biwgZ2VuTW9kZSwgY29tcG9uZW50cywgY29lZmZzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShC
bGVuZEZ1bmNTZXBhcmF0ZWlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBidWYsIHNyY1JHQiwg
ZHN0UkdCLCBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICBkc3RBbHBoYSk7CiAgICAg
fQogfQogCi0vLyBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZAotdm9pZCBHTF9BUElFTlRSWSBC
aW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGNvbG9yLCBjb25z
dCBHTGNoYXIgKm5hbWUpCit2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY2lFWFQoR0x1aW50IGJ1
ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbEJpbmRGcmFnRGF0
YUxvY2F0aW9uRVhUIiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0x1aW50IGNvbG9yID0gJXUsIGNvbnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBU
UgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBjb2xvciwgKHVp
bnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xCbGVuZEZ1bmNpRVhUIiwgImNvbnRleHQgPSAl
ZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gc3JjID0gJXMsIEdMZW51bSBkc3QgPSAlcyIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpC
bGVuZGluZ0ZhY3Rvciwgc3JjKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6QmxlbmRpbmdGYWN0b3IsIGRzdCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBjb2xvciwgbmFtZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5jaUVYVChjb250ZXh0LCBidWYsIHNyYywgZHN0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+YmluZEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbVBhY2tlZCwgY29sb3IsIG5hbWUpOworICAg
ICAgICAgICAgY29udGV4dC0+YmxlbmRGdW5jaShidWYsIHNyYywgZHN0KTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY29sb3IsIG5hbWUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEJsZW5kRnVuY2lFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBidWYsIHNyYywgZHN0
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYWdEYXRhTG9jYXRpb25JbmRl
eGVkRVhUKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGNvbG9yTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQordm9p
ZCBHTF9BUElFTlRSWSBDb2xvck1hc2tpRVhUKEdMdWludCBpbmRleCwgR0xib29sZWFuIHIsIEdM
Ym9vbGVhbiBnLCBHTGJvb2xlYW4gYiwgR0xib29sZWFuIGEpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEJpbmRGcmFnRGF0
YUxvY2F0aW9uSW5kZXhlZEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0x1aW50IGNvbG9yTnVtYmVyID0gJXUsIEdMdWludCBpbmRleCA9ICV1LCBj
b25zdCAiCi0gICAgICAgICAgIkdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGNvbG9yTnVtYmVyLCBpbmRleCwgKHVpbnRw
dHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xDb2xvck1hc2tpRVhUIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xib29sZWFuIHIgPSAlcywgR0xib29sZWFu
IGcgPSAlcywgR0xib29sZWFuIGIgPSAlcywgIgorICAgICAgICAgICJHTGJvb2xlYW4gYSA9ICVz
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBHTGJvb2xlYW5Ub1N0cmluZyhyKSwg
R0xib29sZWFuVG9TdHJpbmcoZyksIEdMYm9vbGVhblRvU3RyaW5nKGIpLAorICAgICAgICAgIEdM
Ym9vbGVhblRvU3RyaW5nKGEpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmlu
ZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvbG9yTnVtYmVyLCBp
bmRleCwgbmFtZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVDb2xvck1hc2tpRVhUKGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBhKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Ymlu
ZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkKHByb2dyYW1QYWNrZWQsIGNvbG9yTnVtYmVyLCBpbmRl
eCwgbmFtZSk7CisgICAgICAgICAgICBjb250ZXh0LT5jb2xvck1hc2tpKGluZGV4LCByLCBnLCBi
LCBhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRGcmFnRGF0YUxvY2F0
aW9uSW5kZXhlZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgY29sb3JOdW1iZXIsIGluZGV4LCBuYW1lKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShDb2xvck1hc2tpRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHIs
IGcsIGIsIGEpOwogICAgIH0KIH0KIAotR0xpbnQgR0xfQVBJRU5UUlkgR2V0RnJhZ0RhdGFJbmRl
eEVYVChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRS
WSBEaXNhYmxlaUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldEZy
YWdEYXRhSW5kZXhFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIGNvbnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRl
eHQpLAotICAgICAgICAgIHByb2dyYW0sICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImds
RGlzYWJsZWlFWFQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBp
bmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAotICAgIEdMaW50IHJldHVyblZh
bHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RnJhZ0RhdGFJ
bmRleEVYVChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlaUVYVChjb250
ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRGcmFnRGF0YUluZGV4KHBy
b2dyYW1QYWNrZWQsIG5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0RnJhZ0RhdGFJbmRleEVYVCwgR0xpbnQ+KCk7CisgICAgICAgICAgICBjb250ZXh0LT5k
aXNhYmxlaSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldEZyYWdEYXRhSW5kZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBuYW1lLCByZXR1cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGlzYWJsZWlFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKICAgICB9Ci0gICAgZWxzZQor
fQorCit2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZWlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlu
ZGV4KQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
KyAgICBFVkVOVCgiZ2xFbmFibGVpRVhUIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9
ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CisKKyAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OkdldEZyYWdEYXRhSW5kZXhFWFQsIEdMaW50PigpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxl
aUVYVChjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxlaSh0YXJnZXQsIGluZGV4KTsK
KyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEVuYWJsZWlFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCi1HTGludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4
RVhUKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRW5hYmxlZGlFWFQoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJv
Z3JhbUludGVyZmFjZSA9ICVzLCBjb25zdCBHTGNoYXIgKm5hbWUgPSAiCi0gICAgICAgICAgIjB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBwcm9ncmFtSW50ZXJmYWNl
KSwKLSAgICAgICAgICAodWludHB0cl90KW5hbWUpOworICAgIEVWRU5UKCJnbElzRW5hYmxlZGlF
WFQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1
IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpF
bmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAotICAgIEdMaW50IHJldHVyblZhbHVlOworICAg
IEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
dFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUlu
dGVyZmFjZSwgbmFtZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVJc0VuYWJsZWRpRVhUKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRl
eChwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lKTsKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gY29udGV4dC0+aXNFbmFibGVkaSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0KLSAg
ICAgICAgICAgICAgICBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0UHJvZ3Jh
bVJlc291cmNlTG9jYXRpb25JbmRleEVYVCwgR0xpbnQ+KCk7CisgICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWRpRVhULCBH
TGJvb2xlYW4+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFt
UmVzb3VyY2VMb2NhdGlvbkluZGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lLCByZXR1
cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNFbmFibGVkaUVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPQotICAgICAgICAgICAgR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQs
IEdMaW50PigpOworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpJc0VuYWJsZWRpRVhULCBHTGJvb2xlYW4+KCk7CiAgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAotLy8gR0xfRVhUX2RlYnVnX21hcmtlcgotdm9pZCBHTF9BUElF
TlRSWSBJbnNlcnRFdmVudE1hcmtlckVYVChHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpt
YXJrZXIpCisvLyBHTF9FWFRfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleAordm9pZCBHTF9BUElF
TlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKEdMZW51bSBtb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICAvLyBEb24ndCBydW4gdGhlIEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIg
ZW50cnkgcG9pbnRzLgotICAgIC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZl
bnRzIGJlaW5nIHNldCBieSB0aGUgY2FsbGVyLgotICAgIC8vIEVWRU5UKCJnbEluc2VydEV2ZW50
TWFya2VyRVhUIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xj
aGFyICptYXJrZXIgPQotICAgIC8vIDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBs
ZW5ndGgsICh1aW50cHRyX3QpbWFya2VyKTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNCYXNl
VmVydGV4RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAgICAg
ICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4ID0gJWQi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBy
aW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgYmFz
ZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29udGV4
dCwgbGVuZ3RoLCBtYXJrZXIpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVy
dGV4RVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRp
Y2VzLCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+aW5zZXJ0RXZlbnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBj
b3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShJbnNlcnRFdmVudE1hcmtlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxlbmd0aCwgbWFya2VyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNC
YXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBvcEdyb3VwTWFya2VyRVhUKCkKK3ZvaWQgR0xf
QVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVChHTGVudW0gbW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIC8vIERvbid0IHJ1biB0aGUgRVZFTlQoKSBtYWNybyBvbiB0aGUgRVhUX2Rl
YnVnX21hcmtlciBlbnRyeSBwb2ludHMuCi0gICAgLy8gSXQgY2FuIGludGVyZmVyZSB3aXRoIHRo
ZSBkZWJ1ZyBldmVudHMgYmVpbmcgc2V0IGJ5IHRoZSBjYWxsZXIuCi0gICAgLy8gRVZFTlQoImds
UG9wR3JvdXBNYXJrZXJFWFQiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBF
VkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51
bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAgICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIg
UFJJeFBUUiAiLCBHTHNpemVpIGluc3RhbmNlY291bnQgPSAlZCwgR0xpbnQgYmFzZXZlcnRleCA9
ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMs
IGluc3RhbmNlY291bnQsCisgICAgICAgICAgYmFzZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BHcm91cE1h
cmtlckVYVChjb250ZXh0KSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwor
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRl
eEVYVCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cG9wR3JvdXBNYXJrZXIoKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgobW9k
ZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0
ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9wR3JvdXBNYXJrZXJFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVu
dHNJbnN0YW5jZWRCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tl
ZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgaW5z
dGFuY2Vjb3VudCwgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFB1
c2hHcm91cE1hcmtlckVYVChHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIpCit2
b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVChHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgLy8gRG9uJ3Qg
cnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVidWdfbWFya2VyIGVudHJ5IHBvaW50
cy4KLSAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGRlYnVnIGV2ZW50cyBiZWluZyBz
ZXQgYnkgdGhlIGNhbGxlci4KLSAgICAvLyBFVkVOVCgiZ2xQdXNoR3JvdXBNYXJrZXJFWFQiLCAi
Y29udGV4dCA9ICVkLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKm1hcmtlciA9
Ci0gICAgLy8gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIGxlbmd0aCwgKHVpbnRw
dHJfdCltYXJrZXIpOworICAgIEVWRU5UKCJnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVY
VCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0x1aW50IHN0
YXJ0ID0gJXUsIEdMdWludCBlbmQgPSAldSwgR0xzaXplaSBjb3VudCA9ICVkLCAiCisgICAgICAg
ICAgIkdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgKmluZGljZXMgPSAweCUwMTYiIFBSSXhQ
VFIgIiwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgc3RhcnQsIGVu
ZCwgY291bnQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVt
ZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVB1c2hHcm91cE1hcmtlckVYVChjb250ZXh0LCBsZW5ndGgsIG1hcmtlcikp
OworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1l
bnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJh
d0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBt
b2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBi
YXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cHVzaEdyb3VwTWFya2VyKGxlbmd0aCwgbWFya2VyKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBzdGFy
dCwgZW5kLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFB1c2hHcm91cE1hcmtlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGxlbmd0aCwgbWFya2VyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3UmFuZ2VFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFy
dCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2Vz
LCBiYXNldmVydGV4KTsKICAgICB9CiB9CiAKLS8vIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVy
Ci12b2lkIEdMX0FQSUVOVFJZIERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTGVudW0gdGFyZ2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2ht
ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51
bSAqYXR0YWNobWVudHMpCit2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0VsZW1lbnRzQmFzZVZl
cnRleEVYVChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb25zdCAqaW5kaWNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbERpc2NhcmRGcmFtZWJ1ZmZl
ckVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNp
emVpIG51bUF0dGFjaG1lbnRzID0gJWQsIGNvbnN0IEdMZW51bSAiCi0gICAgICAgICAgIiphdHRh
Y2htZW50cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksIG51bUF0dGFj
aG1lbnRzLAotICAgICAgICAgICh1aW50cHRyX3QpYXR0YWNobWVudHMpOworICAgIEVWRU5UKCJn
bE11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIG1vZGUgPSAlcywgY29uc3QgR0xzaXplaSAqY291bnQgPSAweCUwMTYiIFBSSXhQ
VFIKKyAgICAgICAgICAiLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpjb25zdCppbmRp
Y2VzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xzaXplaSBwcmltY291bnQgPSAl
ZCwgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXggPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlw
ZSwgbW9kZSksICh1aW50cHRyX3QpY291bnQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIHBy
aW1jb3VudCwKKyAgICAgICAgICAodWludHB0cl90KWJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhUKGNvbnRleHQsIHRhcmdl
dCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2
ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVu
dHNCYXNlVmVydGV4RVhUKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFj
a2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGljZXMsIHByaW1jb3VudCwgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRpc2NhcmRGcmFt
ZWJ1ZmZlcih0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQs
IHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKERpc2NhcmRGcmFtZWJ1ZmZlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgYXR0YWNo
bWVudHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRl
eEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCwgYmFzZXZlcnRleCk7
CiAgICAgfQogfQogCi0vLyBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkKLXZvaWQgR0xfQVBJ
RU5UUlkgQmVnaW5RdWVyeUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpCisvLyBHTF9FWFRf
Z2VvbWV0cnlfc2hhZGVyCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZUVYVChH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xCZWdpblF1ZXJ5RVhUIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHVpbnQgaWQgPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlUYXJnZXQsIHRhcmdldCksIGlkKTsKKyAg
ICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmVFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0x1aW50IHRl
eHR1cmUgPSAldSwgR0xpbnQgIgorICAgICAgICAgICJsZXZlbCA9ICVkIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdl
dCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwgdGV4dHVyZSwgbGV2ZWwpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBRdWVy
eUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJ
RD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRl
eHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpZFBh
Y2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUVYVChjb250ZXh0LCB0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+YmVnaW5RdWVyeSh0YXJnZXRQYWNr
ZWQsIGlkUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZSh0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKEJlZ2luUXVlcnlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGlkUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZl
clRleHR1cmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVRdWVyaWVzRVhUKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICppZHMpCisvLyBHTF9FWFRfaW5zdGFuY2VkX2FycmF5cwordm9pZCBHTF9BUElFTlRSWSBEcmF3
QXJyYXlzSW5zdGFuY2VkRVhUKEdMZW51bSBtb2RlLCBHTGludCBzdGFydCwgR0xzaXplaSBjb3Vu
dCwgR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbERlbGV0ZVF1ZXJpZXNFWFQiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAotICAgICAgICAgICh1aW50cHRyX3Qp
aWRzKTsKKyAgICBFVkVOVCgiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGludCBzdGFydCA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNvdW50ICIKKyAgICAgICAgICAiPSAlZCIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZl
VHlwZSwgbW9kZSksIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50KTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgY29uc3QgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPGNvbnN0IFF1ZXJ5SUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlUXVl
cmllc0VYVChjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFu
Y2VkRVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZGVsZXRlUXVlcmllcyhuLCBpZHNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0Fy
cmF5c0luc3RhbmNlZChtb2RlUGFja2VkLCBzdGFydCwgY291bnQsIHByaW1jb3VudCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVRdWVyaWVzRVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3QXJy
YXlzSW5zdGFuY2VkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQs
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHByaW1jb3VudCk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEVuZFF1ZXJ5RVhUKEdMZW51bSB0YXJnZXQpCit2b2lkIEdMX0FQSUVO
VFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEVYVChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZF
TlQoImdsRW5kUXVlcnlFWFQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMiLCBD
SUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5
VGFyZ2V0LCB0YXJnZXQpKTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291
bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisgICAgICAgICAgIippbmRp
Y2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5
cGUsIG1vZGUpLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgcHJpbWNvdW50KTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRRdWVyeUVY
VChjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4o
bW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJ
bnN0YW5jZWRFWFQoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kaWNlcywgcHJpbWNvdW50KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0UGFja2VkKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlUGFja2VkLCBjb3VudCwgdHlw
ZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEVuZFF1ZXJ5RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZW5RdWVyaWVzRVhUKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCit2b2lkIEdMX0FQSUVO
VFJZIFZlcnRleEF0dHJpYkRpdmlzb3JFWFQoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAg
RVZFTlQoImdsR2VuUXVlcmllc0VYVCIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBH
THVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IG4sICh1aW50cHRyX3QpaWRzKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yRVhU
IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIGRpdmlzb3IpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBRdWVyeUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRCAqPihpZHMpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRp
dmlzb3JFWFQoY29udGV4dCwgaW5kZXgsIGRpdmlzb3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5RdWVyaWVzKG4sIGlkc1Bh
Y2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblF1ZXJpZXNFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFZlcnRleEF0dHJpYkRpdmlzb3JFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwg
ZGl2aXNvcik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0
dkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKQorLy8gR0xfRVhU
X21hcF9idWZmZXJfcmFuZ2UKK3ZvaWQgR0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5n
ZUVYVChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoKQog
ewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQo
ImdsR2V0UXVlcnlPYmplY3RpNjR2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50NjQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAg
KHVpbnRwdHJfdClwYXJhbXMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBFVkVOVCgiZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50cHRyIG9mZnNl
dCA9ICVsbHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQp
LAorICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpKTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
IFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IG9mZnNldCwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3RpNjR2KGlkUGFja2VkLCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UodGFy
Z2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRRdWVyeU9iamVjdGk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmx1c2hNYXBwZWRCdWZm
ZXJSYW5nZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEdldFF1ZXJ5T2JqZWN0aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpw
YXJhbXMpCit2b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJSYW5nZUVYVChHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcykKIHsK
LSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0R2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJn
bEdldFF1ZXJ5T2JqZWN0aXZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBp
ZCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRw
dHJfdClwYXJhbXMpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKKyAgICBFVkVOVCgiZ2xNYXBCdWZmZXJSYW5nZUVYVCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNp
emVpcHRyIGxlbmd0aCA9ICVsbHUsICIKKyAgICAgICAgICAiR0xiaXRmaWVsZCBhY2Nlc3MgPSAl
cyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAorICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmcgbG9uZz4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5n
dGgpLAorICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyQWNj
ZXNzTWFzaywgYWNjZXNzKS5jX3N0cigpKTsKIAorICAgIHZvaWQgKnJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGl2RVhUKGNvbnRleHQsIGlkUGFj
a2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlRVhUKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2VzcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aXYoaWRQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5tYXBC
dWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3RpdkVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpNYXBCdWZmZXJSYW5nZUVYVCwgdm9pZCAqPigpOworICAgICAgICB9CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoTWFwQnVmZmVyUmFuZ2VFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJSYW5n
ZUVYVCwgdm9pZCAqPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dkVYVChHTHVpbnQgaWQsIEdMZW51bSBw
bmFtZSwgR0x1aW50NjQgKnBhcmFtcykKKy8vIEdMX0VYVF9tZW1vcnlfb2JqZWN0Cit2b2lkIEdM
X0FQSUVOVFJZIEJ1ZmZlclN0b3JhZ2VNZW1FWFQoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBz
aXplLCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBvZmZzZXQpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2Jq
ZWN0dWk2NHZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBH
TGVudW0gcG5hbWUgPSAlcywgR0x1aW50NjQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIGlkLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
UXVlcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClw
YXJhbXMpOworICAgIEVWRU5UKCJnbEJ1ZmZlclN0b3JhZ2VNZW1FWFQiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaXB0ciBzaXplID0gJWxsdSwg
R0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCAiCisgICAgICAgICAgIm9mZnNldCA9ICVsbHUi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1
ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKKyAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KHNpemUpLCBtZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
b2Zmc2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0
dkVYVChjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9y
eSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2VNZW1FWFQoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBzaXplLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWk2NHYo
aWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+YnVmZmVyU3Rv
cmFnZU1lbSh0YXJnZXRQYWNrZWQsIHNpemUsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoQnVmZmVyU3RvcmFnZU1lbUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgc2l6ZSwgbWVtb3J5UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2RVhUKEdM
dWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkg
Q3JlYXRlTWVtb3J5T2JqZWN0c0VYVChHTHNpemVpIG4sIEdMdWludCAqbWVtb3J5T2JqZWN0cykK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAg
RVZFTlQoImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBpZCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1aW50ICpwYXJhbXMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAg
ICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xDcmVhdGVNZW1vcnlPYmplY3Rz
RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpt
ZW1vcnlPYmplY3RzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAg
ICAgbiwgKHVpbnRwdHJfdCltZW1vcnlPYmplY3RzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFt
cykpOworICAgICAgICBNZW1vcnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0c1BhY2tlZCA9IEZyb21H
TDxNZW1vcnlPYmplY3RJRCAqPihtZW1vcnlPYmplY3RzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVChj
b250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Y3JlYXRlTWVtb3J5
T2JqZWN0cyhuLCBtZW1vcnlPYmplY3RzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0dWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKENyZWF0ZU1lbW9y
eU9iamVjdHNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2Vk
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdkVYVChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0
ZU1lbW9yeU9iamVjdHNFWFQoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKm1lbW9yeU9iamVjdHMp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAg
IEVWRU5UKCJnbEdldFF1ZXJ5aXZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6UXVlcnlUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlF1ZXJ5UGFyYW1ldGVyTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFt
cyk7CisgICAgRVZFTlQoImdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqbWVtb3J5T2JqZWN0cyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRy
X3QpbWVtb3J5T2JqZWN0cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFF1
ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVy
eVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
UXVlcnlpdkVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAg
ICAgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHNQYWNrZWQgPSBGcm9tR0w8Y29u
c3QgTWVtb3J5T2JqZWN0SUQgKj4obWVtb3J5T2JqZWN0cyk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZU1lbW9yeU9iamVjdHNFWFQo
Y29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5aXYodGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZU1lbW9yeU9i
amVjdHMobiwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZXRRdWVyeWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVNZW1vcnlPYmpl
Y3RzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CiAg
ICAgfQogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNRdWVyeUVYVChHTHVpbnQgaWQpCit2
b2lkIEdMX0FQSUVOVFJZIEdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKEdMdWludCBtZW1v
cnlPYmplY3QsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsSXNRdWVyeUVY
VCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpZCk7Cisg
ICAgRVZFTlQoCisgICAgICAgICJnbEdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUIiwKKyAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeU9iamVjdCA9ICV1LCBHTGVudW0gcG5h
bWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAg
ICAgICAgQ0lEKGNvbnRleHQpLCBtZW1vcnlPYmplY3QsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpNZW1vcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICh1aW50cHRy
X3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVJc1F1ZXJ5RVhUKGNvbnRleHQsIGlkUGFja2VkKSk7CisgICAgICAgIE1lbW9y
eU9iamVjdElEIG1lbW9yeU9iamVjdFBhY2tlZCA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVt
b3J5T2JqZWN0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQo
Y29udGV4dCwgbWVtb3J5T2JqZWN0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250
ZXh0LT5pc1F1ZXJ5KGlkUGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OklzUXVlcnlFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdl
dE1lbW9yeU9iamVjdFBhcmFtZXRlcml2KG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1F1ZXJ5RVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNRdWVyeUVYVCwgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWVtb3J5
T2JqZWN0UGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUXVlcnlD
b3VudGVyRVhUKEdMdWludCBpZCwgR0xlbnVtIHRhcmdldCkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
VW5zaWduZWRCeXRldkVYVChHTGVudW0gcG5hbWUsIEdMdWJ5dGUgKmRhdGEpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFF1
ZXJ5Q291bnRlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gdGFy
Z2V0ID0gJXMiLCBDSUQoY29udGV4dCksIGlkLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpRdWVyeVRhcmdldCwgdGFyZ2V0KSk7CisgICAgRVZFTlQoImdsR2V0VW5zaWdu
ZWRCeXRldkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMdWJ5dGUgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRw
dHJfdClkYXRhKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUXVlcnlJRCBp
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlk
KTsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVRdWVyeUNvdW50ZXJFWFQoY29udGV4dCwgaWRQYWNrZWQsIHRhcmdldFBhY2tlZCkpOworICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRVbnNpZ25l
ZEJ5dGV2RVhUKGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cXVlcnlDb3VudGVyKGlkUGFja2Vk
LCB0YXJnZXRQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5zaWduZWRCeXRldihw
bmFtZSwgZGF0YSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShRdWVyeUNvdW50
ZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgdGFyZ2V0UGFja2VkKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbnNpZ25lZEJ5dGV2RVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcG5hbWUsIGRhdGEpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX2RyYXdfYnVmZmVycwot
dm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVyc0VYVChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAq
YnVmcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VW5zaWduZWRCeXRlaV92RVhUKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCwgR0x1Ynl0ZSAqZGF0YSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRHJhd0J1ZmZlcnNFWFQi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTGVudW0g
KmJ1ZnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKLSAgICAgICAgICAo
dWludHB0cl90KWJ1ZnMpOworICAgIEVWRU5UKCJnbEdldFVuc2lnbmVkQnl0ZWlfdkVYVCIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXgg
PSAldSwgR0x1Ynl0ZSAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdl
dCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0J1ZmZlcnNFWFQoY29udGV4
dCwgbiwgYnVmcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwg
ZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdCdWZmZXJzKG4sIGJ1ZnMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
VW5zaWduZWRCeXRlaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoRHJhd0J1ZmZlcnNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBi
dWZzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKTsKICAgICB9CiB9CiAKLS8vIEdM
X0VYVF9kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4Ci12b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCitHTGJvb2xlYW4g
R0xfQVBJRU5UUlkgSXNNZW1vcnlPYmplY3RFWFQoR0x1aW50IG1lbW9yeU9iamVjdCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQo
ImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBj
b25zdCB2b2lkICIKLSAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xp
bnQgYmFzZXZlcnRleCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWlu
dHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbElzTWVtb3J5T2JqZWN0
RVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeU9iamVjdCA9ICV1IiwgQ0lEKGNvbnRl
eHQpLAorICAgICAgICAgIG1lbW9yeU9iamVjdCk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFs
dWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7
Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKGNvbnRleHQsIG1vZGVQYWNr
ZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KSk7CisgICAg
ICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVjdFBhY2tlZCA9IEZyb21HTDxNZW1vcnlPYmpl
Y3RJRD4obWVtb3J5T2JqZWN0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzTWVtb3J5T2JqZWN0RVhUKGNvbnRleHQsIG1lbW9yeU9i
amVjdFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQs
IHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBjb250ZXh0LT5pc01lbW9yeU9iamVjdChtZW1vcnlPYmplY3RQYWNrZWQpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVu
dHJ5UG9pbnQ6OklzTWVtb3J5T2JqZWN0RVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShJc01lbW9yeU9iamVjdEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcmV0dXJuVmFsdWUpOwogICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc01lbW9yeU9iamVjdEVYVCwgR0xib29sZWFuPigpOworICAgIH0KKyAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QmFzZVZlcnRleEVYVChHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlu
ZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbnN0YW5jZWNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVOVFJZ
IE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKEdMdWludCBtZW1vcnlPYmplY3QsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QmFzZVZlcnRleEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAl
cywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKLSAg
ICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBpbnN0YW5jZWNv
dW50ID0gJWQsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBl
LCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5jZWNvdW50LAotICAgICAgICAgIGJh
c2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5T2JqZWN0ID0gJXUsIEdMZW51bSBw
bmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gIgorICAgICAgICAgICIweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBtZW1vcnlPYmplY3QsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpNZW1vcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisg
ICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZEJhc2VWZXJ0ZXhFWFQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQ
YWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCkpOworICAgICAg
ICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgPSBGcm9tR0w8TWVtb3J5T2JqZWN0
SUQ+KG1lbW9yeU9iamVjdCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZU1lbW9yeU9iamVjdFBhcmFtZXRlcml2
RVhUKGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQs
IGluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+
bWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYobWVtb3J5T2JqZWN0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNl
ZEJhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBpbnN0YW5jZWNvdW50
LCBiYXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShNZW1vcnlPYmplY3RQYXJhbWV0
ZXJpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUKEdMZW51bSBtb2RlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVu
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQordm9pZCBHTF9BUElFTlRSWSBU
ZXhTdG9yYWdlTWVtMkRFWFQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludDY0IG9mZnNldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQg
PSAldSwgR0x1aW50IGVuZCA9ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsICIKLSAgICAgICAgICAi
R0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAi
LCBHTGludCBiYXNldmVydGV4ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgZW5kLCBj
b3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRz
VHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgYmFzZXZlcnRleCk7CisgICAgRVZFTlQo
ImdsVGV4U3RvcmFnZU1lbTJERVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9
ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAl
ZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0
LCB0YXJnZXQpLCBsZXZlbHMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBtZW1vcnksCisg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAg
ICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBh
Y2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZl
cnRleCkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgTWVt
b3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0y
REVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgbWVtb3J5
UGFja2VkLCBvZmZzZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tl
ZCwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRleCk7CisgICAgICAg
ICAgICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVy
bmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQs
IHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFRleFN0b3JhZ2VNZW0yREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IE11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVChHTGVudW0gbW9kZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgKmNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpjb25zdCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXgpCit2
b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRp
b25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQ2NCBvZmZzZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbE11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVY
VCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgY29uc3QgR0xz
aXplaSAqY291bnQgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTGVudW0gdHlwZSA9
ICVzLCBjb25zdCB2b2lkICpjb25zdCppbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAg
ICAgIiwgR0xzaXplaSBwcmltY291bnQgPSAlZCwgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXggPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksICh1aW50cHRyX3QpY291bnQsCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5
cGUpLCAodWludHB0cl90KWluZGljZXMsIHByaW1jb3VudCwKLSAgICAgICAgICAodWludHB0cl90
KWJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhU
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkg
c2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgorICAgICAgICAgICJH
THNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMYm9vbGVhbiBmaXhlZFNh
bXBsZUxvY2F0aW9ucyA9ICVzLCBHTHVpbnQgIgorICAgICAgICAgICJtZW1vcnkgPSAldSwgR0x1
aW50NjQgb2Zmc2V0ID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKKyAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZv
cm1hdCksIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZml4ZWRT
YW1wbGVMb2NhdGlvbnMpLCBtZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
b2Zmc2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2Rl
Pihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIHBy
aW1jb3VudCwgYmFzZXZlcnRleCkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhTdG9yYWdlTWVt
MkRNdWx0aXNhbXBsZUVYVCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm11bHRp
RHJhd0VsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5k
aWNlcywgcHJpbWNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZU1l
bTJETXVsdGlzYW1wbGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBwcmltY291bnQsIGJhc2V2ZXJ0ZXgpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAg
ICAgIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBmaXhlZFNhbXBsZUxvY2F0aW9ucywg
bWVtb3J5UGFja2VkLCBvZmZzZXQpOwogICAgIH0KIH0KIAotLy8gR0xfRVhUX2dlb21ldHJ5X3No
YWRlcgotdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmVFWFQoR0xlbnVtIHRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2ht
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1
cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkK
K3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTNERVhUKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmVF
WFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVt
IGF0dGFjaG1lbnQgPSAlcywgR0x1aW50IHRleHR1cmUgPSAldSwgR0xpbnQgIgotICAgICAgICAg
ICJsZXZlbCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwg
dGV4dHVyZSwgbGV2ZWwpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0zREVYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9
ICVkLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0x1aW50
IG1lbW9yeSA9ICV1LCAiCisgICAgICAgICAgIkdMdWludDY0IG9mZnNldCA9ICVsbHUiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVU
YXJnZXQsIHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBtZW1vcnksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZz
ZXQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1
cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUVYVChjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1l
bnQsIHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9y
YWdlTWVtM0RFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9ybWF0
LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQs
IGRlcHRoLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZSh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnRleFN0b3JhZ2VNZW0zRCh0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEZyYW1lYnVmZmVyVGV4dHVyZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwg
YXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZU1lbTNERVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7
CiAgICAgfQogfQogCi0vLyBHTF9FWFRfaW5zdGFuY2VkX2FycmF5cwotdm9pZCBHTF9BUElFTlRS
WSBEcmF3QXJyYXlzSW5zdGFuY2VkRVhUKEdMZW51bSBtb2RlLCBHTGludCBzdGFydCwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VN
ZW0zRE11bHRpc2FtcGxlRVhUKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVW
RU5UKCJnbERyYXdBcnJheXNJbnN0YW5jZWRFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSBtb2RlID0gJXMsIEdMaW50IHN0YXJ0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwg
R0xzaXplaSBwcmltY291bnQgIgotICAgICAgICAgICI9ICVkIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwg
c3RhcnQsIGNvdW50LCBwcmltY291bnQpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0zRE11
bHRpc2FtcGxlRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgor
ICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6
ZWkgZGVwdGggPSAlZCwgR0xib29sZWFuICIKKyAgICAgICAgICAiZml4ZWRTYW1wbGVMb2NhdGlv
bnMgPSAlcywgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
VGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGludGVybmFsRm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsCisgICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZml4ZWRTYW1wbGVMb2NhdGlvbnMpLCBt
ZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWRFWFQoY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGNvdW50LCBw
cmltY291bnQpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAg
IE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVY
VCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVwdGgsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNr
ZWQsIG9mZnNldCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZVBhY2tlZCwgc3RhcnQsIGNv
dW50LCBwcmltY291bnQpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZU1lbTNETXVs
dGlzYW1wbGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRl
cHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKERyYXdBcnJheXNJbnN0YW5jZWRFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
cHJpbWNvdW50KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtM0RNdWx0aXNh
bXBsZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywKKyAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgb2Zmc2V0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5z
dGFuY2VkRVhUKEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KQorLy8gR0xfRVhUX21lbW9yeV9vYmpl
Y3RfZmQKK3ZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0TWVtb3J5RmRFWFQoR0x1aW50IG1lbW9yeSwg
R0x1aW50NjQgc2l6ZSwgR0xlbnVtIGhhbmRsZVR5cGUsIEdMaW50IGZkKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBt
b2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9p
ZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgcHJp
bWNvdW50ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3Qp
aW5kaWNlcywgcHJpbWNvdW50KTsKKyAgICBFVkVOVCgiZ2xJbXBvcnRNZW1vcnlGZEVYVCIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBzaXpl
ID0gJWxsdSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywgR0xpbnQgIgorICAgICAgICAgICJmZCA9
ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihzaXplKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RXh0ZXJuYWxIYW5kbGVUeXBlLCBoYW5kbGVUeXBlKSwgZmQpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3
RWxlbWVudHNJbnN0YW5jZWRFWFQoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kaWNlcywgcHJpbWNvdW50KSk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1l
bW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVj
dElEPihtZW1vcnkpOworICAgICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxIYW5kbGVUeXBlPihoYW5kbGVUeXBlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgIFZhbGlkYXRlSW1wb3J0TWVtb3J5RmRFWFQoY29udGV4dCwgbWVtb3J5UGFja2VkLCBzaXpl
LCBoYW5kbGVUeXBlUGFja2VkLCBmZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlUGFj
a2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50KTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmltcG9ydE1lbW9yeUZkKG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFuZGxlVHlwZVBh
Y2tlZCwgZmQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRz
SW5zdGFuY2VkRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5
cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgcHJpbWNvdW50KTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShJbXBvcnRNZW1vcnlGZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBmZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRp
dmlzb3JFWFQoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKKy8vIEdMX0VYVF9tdWx0aXNh
bXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0
dXJlMkRNdWx0aXNhbXBsZUVYVChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhB
dHRyaWJEaXZpc29yRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMdWlu
dCBkaXZpc29yID0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIGRpdmlzb3Ip
OworICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1l
bnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBHTHVpbnQgIgorICAgICAgICAgICJ0ZXh0
dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZl
clRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGV4dGFyZ2V0KSwgdGV4dHVyZSwgbGV2
ZWwsIHNhbXBsZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkRpdmlzb3JFWFQo
Y29udGV4dCwgaW5kZXgsIGRpdmlzb3IpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVY
VCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsLCBzYW1wbGVzKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0
cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0
ZXh0dXJlLCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShW
ZXJ0ZXhBdHRyaWJEaXZpc29yRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIGRpdmlz
b3IpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1w
bGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwgc2FtcGxlcyk7CiAgICAg
fQogfQogCi0vLyBHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZQotdm9pZCBHTF9BUElFTlRSWSBGbHVz
aE1hcHBlZEJ1ZmZlclJhbmdlRVhUKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xz
aXplaXB0ciBsZW5ndGgpCit2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUVYVChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50cHRyIG9m
ZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0gJWxsdSIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJn
ZXQpLAotICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpKTsKKyAgICBFVkVOVCgiZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXpl
aSBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxm
b3JtYXQpLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhU
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlRVhUKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Zmx1
c2hNYXBwZWRCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNh
bXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywKKyAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12
b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJSYW5nZUVYVChHTGVudW0gdGFyZ2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcykKKy8vIEdMX0VYVF9v
Y2NsdXNpb25fcXVlcnlfYm9vbGVhbgorLy8gQmVnaW5RdWVyeUVYVCBpcyBhbHJlYWR5IGRlZmlu
ZWQuCisKKy8vIERlbGV0ZVF1ZXJpZXNFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgorCisvLyBFbmRR
dWVyeUVYVCBpcyBhbHJlYWR5IGRlZmluZWQuCisKKy8vIEdlblF1ZXJpZXNFWFQgaXMgYWxyZWFk
eSBkZWZpbmVkLgorCisvLyBHZXRRdWVyeU9iamVjdHVpdkVYVCBpcyBhbHJlYWR5IGRlZmluZWQu
CisKKy8vIEdldFF1ZXJ5aXZFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgorCisvLyBJc1F1ZXJ5RVhU
IGlzIGFscmVhZHkgZGVmaW5lZC4KKworLy8gR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKworLy8g
R0xfRVhUX3JvYnVzdG5lc3MKK0dMZW51bSBHTF9BUElFTlRSWSBHZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzRVhUKCkKIHsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7Ci0gICAgRVZFTlQoImdsTWFwQnVmZmVyUmFuZ2VFWFQiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnRwdHIgb2Zmc2V0ID0gJWxsdSwgR0xzaXpl
aXB0ciBsZW5ndGggPSAlbGx1LCAiCi0gICAgICAgICAgIkdMYml0ZmllbGQgYWNjZXNzID0gJXMi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1
ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obGVuZ3Ro
KSwKLSAgICAgICAgICBHTGJpdGZpZWxkVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlckFjY2Vz
c01hc2ssIGFjY2VzcykuY19zdHIoKSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldEdsb2Jh
bENvbnRleHQoKTsKKyAgICBFVkVOVCgiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUIiwgImNv
bnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKLSAgICB2b2lkICpyZXR1cm5WYWx1ZTsKKyAg
ICBHTGVudW0gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZU1hcEJ1ZmZlclJhbmdlRVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBs
ZW5ndGgsIGFjY2VzcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKGNvbnRleHQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNv
bnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldEdyYXBoaWNzUmVzZXRT
dGF0dXMoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6Ok1hcEJ1ZmZl
clJhbmdlRVhULCB2b2lkICo+KCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhULCBHTGVu
dW0+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXBCdWZmZXJSYW5nZUVY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFj
Y2VzcywKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2VFWFQs
IHZvaWQgKj4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCwgR0xlbnVtPigpOwogICAgIH0K
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLS8vIEdMX0VYVF9tZW1vcnlfb2JqZWN0Ci12
b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlclN0b3JhZ2VNZW1FWFQoR0xlbnVtIHRhcmdldCwgR0xzaXpl
aXB0ciBzaXplLCBHTHVpbnQgbWVtb3J5LCBHTHVpbnQ2NCBvZmZzZXQpCit2b2lkIEdMX0FQSUVO
VFJZIEdldG5Vbmlmb3JtZnZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsQnVmZmVyU3RvcmFnZU1lbUVY
VCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVp
cHRyIHNpemUgPSAlbGx1LCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0ICIKLSAgICAgICAg
ICAib2Zmc2V0ID0gJWxsdSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2l6ZSksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihvZmZzZXQpKTsKKyAgICBFVkVOVCgiZ2xHZXRuVW5pZm9ybWZ2RVhU
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xmbG9hdCAiCisgICAgICAgICAg
IipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIE1l
bW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1v
cnlPYmplY3RJRD4obWVtb3J5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVCdWZmZXJTdG9yYWdlTWVtRVhUKGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgc2l6ZSwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKKyAgICAg
ICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb25QYWNrZWQsIGJ1ZlNpemUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJ1ZmZlclN0b3JhZ2VNZW0odGFy
Z2V0UGFja2VkLCBzaXplLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRuVW5pZm9ybWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXpl
LCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQnVmZmVyU3RvcmFn
ZU1lbUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2l6ZSwgbWVtb3J5
UGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0blVuaWZvcm1mdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIHBhcmFt
cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIENyZWF0ZU1lbW9yeU9iamVjdHNFWFQo
R0xzaXplaSBuLCBHTHVpbnQgKm1lbW9yeU9iamVjdHMpCit2b2lkIEdMX0FQSUVOVFJZIEdldG5V
bmlmb3JtaXZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNp
emUsIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbENyZWF0ZU1lbW9yeU9iamVjdHNFWFQiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKm1lbW9yeU9iamVj
dHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBuLCAodWlu
dHB0cl90KW1lbW9yeU9iamVjdHMpOworICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtaXZFWFQiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGludCAiCisgICAgICAgICAgIipwYXJh
bXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFt
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBNZW1vcnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0c1BhY2tlZCAg
ICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQgKj4obWVtb3J5T2JqZWN0cyk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVChj
b250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jcmVhdGVNZW1vcnlPYmpl
Y3RzKG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVu
aWZvcm1pdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKENyZWF0ZU1lbW9yeU9iamVjdHNFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlTWVtb3J5T2Jq
ZWN0c0VYVChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqbWVtb3J5T2JqZWN0cykKK3ZvaWQgR0xf
QVBJRU5UUlkgUmVhZG5QaXhlbHNFWFQoR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbERlbGV0ZU1lbW9yeU9iamVjdHNFWFQiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKm1lbW9y
eU9iamVjdHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBu
LCAodWludHB0cl90KW1lbW9yeU9iamVjdHMpOworICAgIEVWRU5UKCJnbFJlYWRuUGl4ZWxzRVhU
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwg
R0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCisgICAgICAgICAgIkdM
ZW51bSBmb3JtYXQgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBidWZTaXplID0gJWQs
IHZvaWQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClkYXRhKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1l
bW9yeU9iamVjdHNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgTWVtb3J5T2JqZWN0SUQgKj4obWVtb3J5
T2JqZWN0cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlTWVt
b3J5T2JqZWN0c0VYVChjb250ZXh0LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBW
YWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZU1lbW9yeU9iamVjdHMobiwgbWVtb3J5
T2JqZWN0c1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5yZWFkblBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGRhdGEpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFJlYWRuUGl4ZWxzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGRhdGEpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVY
VChHTHVpbnQgbWVtb3J5T2JqZWN0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCisvLyBH
TF9FWFRfc1JHQgorCisvLyBHTF9FWFRfc2VtYXBob3JlCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0
ZVNlbWFwaG9yZXNFWFQoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5U
KAotICAgICAgICAiZ2xHZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCIsCi0gICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBtZW1vcnlPYmplY3QgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJ
RChjb250ZXh0KSwgbWVtb3J5T2JqZWN0LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVt
b3J5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAodWludHB0cl90KXBhcmFt
cyk7CisgICAgRVZFTlQoImdsRGVsZXRlU2VtYXBob3Jlc0VYVCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqc2VtYXBob3JlcyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3Qpc2Vt
YXBob3Jlcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIE1lbW9yeU9iamVj
dElEIG1lbW9yeU9iamVjdFBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJ
RD4obWVtb3J5T2JqZWN0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKGNv
bnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBjb25z
dCBTZW1hcGhvcmVJRCAqc2VtYXBob3Jlc1BhY2tlZCA9IEZyb21HTDxjb25zdCBTZW1hcGhvcmVJ
RCAqPihzZW1hcGhvcmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlRGVsZXRlU2VtYXBob3Jlc0VYVChjb250ZXh0LCBuLCBzZW1hcGhvcmVz
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYobWVtb3J5T2JqZWN0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNlbWFwaG9yZXMo
biwgc2VtYXBob3Jlc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9y
eU9iamVjdFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVTZW1hcGhvcmVzRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEdldFVuc2lnbmVkQnl0ZXZFWFQoR0xlbnVtIHBuYW1lLCBHTHVieXRlICpkYXRhKQordm9pZCBH
TF9BUElFTlRSWSBHZW5TZW1hcGhvcmVzRVhUKEdMc2l6ZWkgbiwgR0x1aW50ICpzZW1hcGhvcmVz
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICBFVkVOVCgiZ2xHZXRVbnNpZ25lZEJ5dGV2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1Ynl0ZSAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwg
Q0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRQ
TmFtZSwgcG5hbWUpLCAodWludHB0cl90KWRhdGEpOworICAgIEVWRU5UKCJnbEdlblNlbWFwaG9y
ZXNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQg
KnNlbWFwaG9yZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAg
ICAgICAodWludHB0cl90KXNlbWFwaG9yZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2VtYXBob3JlSUQgKnNlbWFwaG9y
ZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQgKj4o
c2VtYXBob3Jlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRVbnNpZ25lZEJ5dGV2RVhUKGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblNl
bWFwaG9yZXNFWFQoY29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuc2lnbmVk
Qnl0ZXYocG5hbWUsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+Z2VuU2VtYXBob3Jlcyhu
LCBzZW1hcGhvcmVzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFVuc2lnbmVkQnl0ZXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuU2VtYXBob3Jlc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG4sIHNlbWFwaG9yZXNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBH
ZXRVbnNpZ25lZEJ5dGVpX3ZFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVieXRl
ICpkYXRhKQordm9pZCBHTF9BUElFTlRSWSBHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChH
THVpbnQgc2VtYXBob3JlLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJn
bEdldFVuc2lnbmVkQnl0ZWlfdkVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSwgR0x1Ynl0ZSAqZGF0YSA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOwor
ICAgIEVWRU5UKAorICAgICAgICAiZ2xHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCIsCisg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMdWludDY0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisg
ICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6U2VtYXBob3JlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAodWludHB0cl90KXBh
cmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0VW5zaWduZWRCeXRlaV92RVhUKGNvbnRleHQsIHRhcmdldCwgaW5k
ZXgsIGRhdGEpKTsKKyAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKGNvbnRleHQsIHNlbWFwaG9y
ZVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFVuc2lnbmVkQnl0ZWlfdih0YXJnZXQsIGlu
ZGV4LCBkYXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFNlbWFwaG9yZVBhcmFtZXRlcnVp
NjR2KHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXQsIGluZGV4LCBkYXRhKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTZW1hcGhv
cmVQYXJhbWV0ZXJ1aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tl
ZCwgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CiAKLUdM
Ym9vbGVhbiBHTF9BUElFTlRSWSBJc01lbW9yeU9iamVjdEVYVChHTHVpbnQgbWVtb3J5T2JqZWN0
KQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2VtYXBob3JlRVhUKEdMdWludCBzZW1hcGhvcmUp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAg
IEVWRU5UKCJnbElzTWVtb3J5T2JqZWN0RVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9y
eU9iamVjdCA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIG1lbW9yeU9iamVjdCk7Cisg
ICAgRVZFTlQoImdsSXNTZW1hcGhvcmVFWFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBo
b3JlID0gJXUiLCBDSUQoY29udGV4dCksIHNlbWFwaG9yZSk7CiAKICAgICBHTGJvb2xlYW4gcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBNZW1vcnlPYmplY3RJ
RCBtZW1vcnlPYmplY3RQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+
KG1lbW9yeU9iamVjdCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTZW1h
cGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTZW1hcGhvcmVJRD4oc2VtYXBob3JlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzTWVtb3J5T2JqZWN0RVhUKGNvbnRleHQsIG1l
bW9yeU9iamVjdFBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVJc1NlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IGNvbnRleHQtPmlzTWVtb3J5T2JqZWN0KG1lbW9yeU9iamVjdFBhY2tlZCk7CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzU2VtYXBob3JlKHNlbWFwaG9yZVBhY2tl
ZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc01lbW9yeU9iamVj
dEVYVCwgR0xib29sZWFuPigpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTZW1hcGhvcmVFWFQsIEdMYm9vbGVhbj4oKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzTWVtb3J5T2JqZWN0RVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbWVtb3J5T2JqZWN0UGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoSXNTZW1hcGhvcmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1h
cGhvcmVQYWNrZWQsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNNZW1v
cnlPYmplY3RFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTZW1hcGhvcmVFWFQsIEdMYm9vbGVhbj4oKTsK
ICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1l
bW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKEdMdWludCBtZW1vcnlPYmplY3QsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgU2VtYXBob3JlUGFyYW1l
dGVydWk2NHZFWFQoR0x1aW50IHNlbWFwaG9yZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQ2
NCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeU9iamVjdCA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0xpbnQgKnBhcmFtcyA9ICIKKyAgICBFVkVOVCgiZ2xTZW1hcGhvcmVQYXJh
bWV0ZXJ1aTY0dkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9y
ZSA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0x1aW50NjQgKnBhcmFtcyA9ICIKICAg
ICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbWVt
b3J5T2JqZWN0LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVtb3J5T2JqZWN0UGFyYW1l
dGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2VtYXBob3JlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAog
ICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5T2JqZWN0UGFja2VkICAgICAgICAgICAgID0g
RnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnlPYmplY3QpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZU1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKGNvbnRleHQsIG1lbW9yeU9iamVjdFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgIFZhbGlkYXRlU2VtYXBob3JlUGFy
YW1ldGVydWk2NHZFWFQoY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+bWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYobWVtb3J5T2JqZWN0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2KHNlbWFw
aG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1l
bW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsCisgICAgICAgIEFOR0xFX0NBUFRVUkUoU2VtYXBob3Jl
UGFyYW1ldGVydWk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQs
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0yREVYVChHTGVudW0gdGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBTaWduYWxTZW1h
cGhvcmVFWFQoR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqYnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpkc3RMYXlvdXRzKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVO
VCgiZ2xUZXhTdG9yYWdlTWVtMkRFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0
ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9
ICVkLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IG9mZnNldCA9ICVsbHUiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksIGxldmVscywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIG1lbW9yeSwK
LSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkpOworICAg
IEVWRU5UKCJnbFNpZ25hbFNlbWFwaG9yZUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMgPSAldSwgY29u
c3QgR0x1aW50ICIKKyAgICAgICAgICAiKmJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAg
ICAgICAiLCBHTHVpbnQgbnVtVGV4dHVyZUJhcnJpZXJzID0gJXUsIGNvbnN0IEdMdWludCAqdGV4
dHVyZXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBjb25zdCBHTGVudW0gKmRzdExh
eW91dHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1h
cGhvcmUsIG51bUJ1ZmZlckJhcnJpZXJzLCAodWludHB0cl90KWJ1ZmZlcnMsIG51bVRleHR1cmVC
YXJyaWVycywKKyAgICAgICAgICAodWludHB0cl90KXRleHR1cmVzLCAodWludHB0cl90KWRzdExh
eW91dHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRh
cmdldCk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5KTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAg
ICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgY29uc3QgVGV4dHVy
ZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3Qg
VGV4dHVyZUlEICo+KHRleHR1cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJERVhU
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBtZW1vcnlQYWNr
ZWQsIG9mZnNldCkpOworICAgICAgICAgICAgIFZhbGlkYXRlU2lnbmFsU2VtYXBob3JlRVhUKGNv
bnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJp
ZXJzLCB0ZXh0dXJlc1BhY2tlZCwgZHN0TGF5b3V0cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2VNZW0yRCh0YXJn
ZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5UGFja2VkLCBvZmZzZXQpOworICAg
ICAgICAgICAgY29udGV4dC0+c2lnbmFsU2VtYXBob3JlKHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVm
ZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJlc1BhY2tlZCwgZHN0TGF5b3V0cyk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtMkRFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywKLSAgICAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWVtb3J5UGFja2VkLCBvZmZz
ZXQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNpZ25hbFNlbWFwaG9yZUVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgYnVmZmVyc1BhY2tlZCwgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJl
c1BhY2tlZCwgZHN0TGF5b3V0cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN0
b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBvZmZzZXQpCit2
b2lkIEdMX0FQSUVOVFJZIFdhaXRTZW1hcGhvcmVFWFQoR0x1aW50IHNlbWFwaG9yZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpidWZmZXJzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1UZXh0dXJlQmFycmll
cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp0ZXh0
dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKnNy
Y0xheW91dHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwotICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9
ICVkLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0
aW9ucyA9ICVzLCBHTHVpbnQgIgotICAgICAgICAgICJtZW1vcnkgPSAldSwgR0x1aW50NjQgb2Zm
c2V0ID0gJWxsdSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdp
ZHRoLCBoZWlnaHQsCi0gICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZml4ZWRTYW1wbGVMb2Nh
dGlvbnMpLCBtZW1vcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSk7
Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
LSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZml4ZWRTYW1wbGVMb2Nh
dGlvbnMsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZU1lbTJETXVsdGlzYW1w
bGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGZpeGVkU2Ft
cGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICBp
bnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9y
eVBhY2tlZCwgb2Zmc2V0KTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFn
ZU1lbTNERVhUKEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVt
b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0
KQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICBFVkVOVCgiZ2xUZXhTdG9yYWdlTWVtM0RFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFs
Rm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhl
aWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMdWludCBtZW1vcnkgPSAldSwgIgotICAg
ICAgICAgICJHTHVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZl
bHMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
aW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5LAotICAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSk7CisgICAgRVZFTlQoImds
V2FpdFNlbWFwaG9yZUVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFw
aG9yZSA9ICV1LCBHTHVpbnQgbnVtQnVmZmVyQmFycmllcnMgPSAldSwgY29uc3QgR0x1aW50ICIK
KyAgICAgICAgICAiKmJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTHVp
bnQgbnVtVGV4dHVyZUJhcnJpZXJzID0gJXUsIGNvbnN0IEdMdWludCAqdGV4dHVyZXMgPSAweCUw
MTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBjb25zdCBHTGVudW0gKnNyY0xheW91dHMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIG51bUJ1
ZmZlckJhcnJpZXJzLCAodWludHB0cl90KWJ1ZmZlcnMsIG51bVRleHR1cmVCYXJyaWVycywKKyAg
ICAgICAgICAodWludHB0cl90KXRleHR1cmVzLCAodWludHB0cl90KXNyY0xheW91dHMpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAg
ICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxNZW1vcnlPYmplY3RJRD4obWVtb3J5KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAgICBjb25zdCBCdWZm
ZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25z
dCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJl
c1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlEICo+
KHRleHR1cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNERVhUKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5UGFja2VkLCBv
ZmZzZXQpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVdhaXRTZW1hcGhvcmVFWFQoY29udGV4dCwg
c2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywgYnVmZmVyc1BhY2tlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0
dXJlc1BhY2tlZCwgc3JjTGF5b3V0cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2VNZW0zRCh0YXJnZXRQYWNrZWQs
IGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPndhaXRTZW1hcGhvcmUoc2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJC
YXJyaWVycywgYnVmZmVyc1BhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJlc1BhY2tlZCwgc3JjTGF5b3V0cyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtM0RFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIG1lbW9yeVBhY2tlZCwgb2Zm
c2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShXYWl0U2VtYXBob3JlRVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywKKyAgICAgICAg
ICAgICAgICAgICAgICBidWZmZXJzUGFja2VkLCBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVz
UGFja2VkLCBzcmNMYXlvdXRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3Rv
cmFnZU1lbTNETXVsdGlzYW1wbGVFWFQoR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtZW1vcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IG9mZnNl
dCkKKy8vIEdldFVuc2lnbmVkQnl0ZWlfdkVYVCBpcyBhbHJlYWR5IGRlZmluZWQuCisKKy8vIEdl
dFVuc2lnbmVkQnl0ZXZFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgorCisvLyBHTF9FWFRfc2VtYXBo
b3JlX2ZkCit2b2lkIEdMX0FQSUVOVFJZIEltcG9ydFNlbWFwaG9yZUZkRVhUKEdMdWludCBzZW1h
cGhvcmUsIEdMZW51bSBoYW5kbGVUeXBlLCBHTGludCBmZCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZU1l
bTNETXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJn
ZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCA9ICVz
LCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwg
R0xzaXplaSBkZXB0aCA9ICVkLCBHTGJvb2xlYW4gIgotICAgICAgICAgICJmaXhlZFNhbXBsZUxv
Y2F0aW9ucyA9ICVzLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IG9mZnNldCA9ICVsbHUi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwKLSAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhmaXhlZFNhbXBsZUxvY2F0aW9u
cyksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpKTsKKyAg
ICBFVkVOVCgiZ2xJbXBvcnRTZW1hcGhvcmVGZEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTGVudW0gaGFuZGxlVHlwZSA9ICVzLCBHTGludCBm
ZCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkV4dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksIGZkKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAg
ICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlVGV4U3RvcmFnZU1lbTNETXVsdGlzYW1wbGVFWFQoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
cHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKKyAgICAg
ICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7CisgICAgICAgIEhhbmRsZVR5cGUgaGFu
ZGxlVHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEhhbmRsZVR5
cGU+KGhhbmRsZVR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVYVChjb250
ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFn
ZU1lbTNETXVsdGlzYW1wbGUodGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwg
d2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmltcG9ydFNlbWFwaG9yZUZkKHNlbWFwaG9yZVBhY2tlZCwgaGFuZGxl
VHlwZVBhY2tlZCwgZmQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3Rv
cmFnZU1lbTNETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLAotICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0
U2VtYXBob3JlRmRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhh
bmRsZVR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgZmQpOwogICAgIH0KIH0KIAot
Ly8gR0xfRVhUX21lbW9yeV9vYmplY3RfZmQKLXZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0TWVtb3J5
RmRFWFQoR0x1aW50IG1lbW9yeSwgR0x1aW50NjQgc2l6ZSwgR0xlbnVtIGhhbmRsZVR5cGUsIEdM
aW50IGZkKQorLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YworCisvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCisKKy8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X3JndGMKKworLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YworCisvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKKworLy8gR0xfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljCisKKy8vIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorCisvLyBH
TF9FWFRfdGV4dHVyZV9zdG9yYWdlCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UxREVYVChH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBF
VkVOVCgiZ2xJbXBvcnRNZW1vcnlGZEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1
aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBzaXplID0gJWxsdSwgR0xlbnVtIGhhbmRsZVR5cGUg
PSAlcywgR0xpbnQgIgotICAgICAgICAgICJmZCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIG1lbW9yeSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzaXplKSwKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RXh0ZXJuYWxIYW5kbGVUeXBlLCBoYW5k
bGVUeXBlKSwgZmQpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UxREVYVCIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0g
JWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQ
YWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7
Ci0gICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxIYW5kbGVUeXBlPihoYW5kbGVUeXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZUltcG9ydE1lbW9yeUZkRVhUKGNvbnRleHQsIG1lbW9yeVBhY2tl
ZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwgZmQpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZVRl
eFN0b3JhZ2UxREVYVChjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aW1wb3J0TWVtb3J5RmQobWVtb3J5UGFja2VkLCBzaXplLCBoYW5kbGVUeXBlUGFj
a2VkLCBmZCk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMUQodGFyZ2V0LCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShJbXBvcnRNZW1vcnlGZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeVBhY2tl
ZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBmZCk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTFERVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgdGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCk7CiAgICAgfQogfQogCi0v
LyBHTF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCi12b2lkIEdMX0FQSUVOVFJZ
IEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoR0xlbnVtIHRhcmdldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0
YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGV4dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcykK
K3ZvaWQgR0xfQVBJRU5UUlkKK1RleFN0b3JhZ2UyREVYVChHTGVudW0gdGFyZ2V0LCBHTHNpemVp
IGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
Ci0gICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVu
dCA9ICVzLCBHTGVudW0gdGV4dGFyZ2V0ID0gJXMsIEdMdWludCAiCi0gICAgICAgICAgInRleHR1
cmUgPSAldSwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xzaXplaSBzYW1wbGVzID0gJWQiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVy
VGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0ZXh0YXJnZXQpLCB0ZXh0dXJlLCBsZXZl
bCwgc2FtcGxlcyk7CisgICAgRVZFTlQoImdsVGV4U3RvcmFnZTJERVhUIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAl
ZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJu
YWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE11
bHRpc2FtcGxlRVhUKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpKTsK
KyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0
b3JhZ2UyREVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlKHRhcmdl
dCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlcyk7CisgICAgICAg
ICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0LCB0
ZXh0dXJlLCBsZXZlbCwgc2FtcGxlcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFn
ZTJERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQo
R0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNERVhUKEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9
ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIK
LSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJi
dWZmZXJUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWln
aHQpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UzREVYVCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6
ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwg
bGV2ZWxzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZv
cm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlM0RF
WFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWln
aHQsIGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgY29udGV4
dC0+dGV4U3RvcmFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0LCBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlM0RFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICAgIH0KIH0KIAot
Ly8gR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuCi0vLyBCZWdpblF1ZXJ5RVhUIGlzIGFs
cmVhZHkgZGVmaW5lZC4KLQotLy8gRGVsZXRlUXVlcmllc0VYVCBpcyBhbHJlYWR5IGRlZmluZWQu
Ci0KLS8vIEVuZFF1ZXJ5RVhUIGlzIGFscmVhZHkgZGVmaW5lZC4KLQotLy8gR2VuUXVlcmllc0VY
VCBpcyBhbHJlYWR5IGRlZmluZWQuCi0KLS8vIEdldFF1ZXJ5T2JqZWN0dWl2RVhUIGlzIGFscmVh
ZHkgZGVmaW5lZC4KLQotLy8gR2V0UXVlcnlpdkVYVCBpcyBhbHJlYWR5IGRlZmluZWQuCi0KLS8v
IElzUXVlcnlFWFQgaXMgYWxyZWFkeSBkZWZpbmVkLgotCi0vLyBHTF9FWFRfcmVhZF9mb3JtYXRf
YmdyYQotCi0vLyBHTF9FWFRfcm9idXN0bmVzcwotR0xlbnVtIEdMX0FQSUVOVFJZIEdldEdyYXBo
aWNzUmVzZXRTdGF0dXNFWFQoKQorLy8gR0xfS0hSX2RlYnVnCit2b2lkIEdMX0FQSUVOVFJZIERl
YnVnTWVzc2FnZUNhbGxiYWNrS0hSKEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrLCBjb25zdCB2b2lk
ICp1c2VyUGFyYW0pCiB7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldEdsb2JhbENvbnRleHQo
KTsKLSAgICBFVkVOVCgiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUIiwgImNvbnRleHQgPSAl
ZCIsIENJRChjb250ZXh0KSk7CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIEVWRU5UKCJnbERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTERFQlVHUFJPQ0tIUiBjYWxsYmFjayA9IDB4JTAxNiIgUFJJ
eFBUUgorICAgICAgICAgICIsIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksICh1aW50cHRyX3QpY2FsbGJhY2ssICh1aW50
cHRyX3QpdXNlclBhcmFtKTsKIAotICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVChjb250ZXh0KSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUNhbGxi
YWNrS0hSKGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdl
dEdyYXBoaWNzUmVzZXRTdGF0dXMoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIEdMZW51bT4oKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPmRlYnVnTWVzc2FnZUNhbGxiYWNrKGNhbGxiYWNrLCB1c2VyUGFyYW0pOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCwgR0xlbnVtPigpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY2Fs
bGJhY2ssIHVzZXJQYXJhbSk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWZ2RVhUKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlkcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZW5hYmxlZCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2V0
blVuaWZvcm1mdkVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0g
PSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMZmxvYXQg
IgotICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1z
KTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMZW51bSBz
ZXZlcml0eSA9ICVzLCBHTHNpemVpIGNvdW50ICIKKyAgICAgICAgICAiPSAlZCwgY29uc3QgR0x1
aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xib29sZWFuIGVuYWJsZWQgPSAlcyIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdT
b3VyY2UsIHNvdXJjZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnVHlwZSwgdHlwZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgY291bnQsICh1aW50cHRyX3QpaWRzLAorICAgICAgICAg
IEdMYm9vbGVhblRvU3RyaW5nKGVuYWJsZWQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZURl
YnVnTWVzc2FnZUNvbnRyb2xLSFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291
bnQsIGlkcywgZW5hYmxlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VD
b250cm9sKHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJsZWQpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1mdkVYVCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLAotICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVidWdNZXNzYWdl
Q29udHJvbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHks
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIGlkcywgZW5hYmxlZCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtaXZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUluc2VydEtIUihHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqYnVmKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZXRuVW5pZm9ybWl2RVhU
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQgIgotICAgICAgICAgICIq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBzb3VyY2UgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0x1aW50IGlkID0gJXUsIEdMZW51bSBz
ZXZlcml0eSA9ICIKKyAgICAgICAgICAiJXMsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdM
Y2hhciAqYnVmID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5cGUpLCBpZCwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdTZXZlcml0eSwgc2V2ZXJp
dHkpLCBsZW5ndGgsICh1aW50cHRyX3QpYnVmKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZURl
YnVnTWVzc2FnZUluc2VydEtIUihjb250ZXh0LCBzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwg
bGVuZ3RoLCBidWYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBi
dWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+ZGVidWdNZXNzYWdlSW5zZXJ0
KHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCBsZW5ndGgsIGJ1Zik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwKKyAgICAg
ICAgICAgICAgICAgICAgICBsZW5ndGgsIGJ1Zik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFJlYWRuUGl4ZWxzRVhUKEdMaW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpkYXRhKQorR0x1aW50IEdMX0FQSUVOVFJZIEdldERlYnVnTWVzc2FnZUxvZ0tIUihH
THVpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtICpzZXZlcml0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbFJlYWRuUGl4ZWxzRVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXpl
aSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSBm
b3JtYXQgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBidWZTaXplID0gJWQsIHZvaWQg
KmRhdGEgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQ
aXhlbEZvcm1hdCwgZm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UGl4ZWxUeXBlLCB0eXBlKSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVO
VCgiZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBjb3VudCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xlbnVtICpzb3VyY2VzID0g
MHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVtICp0eXBlcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMZW51
bSAqc2V2ZXJpdGllcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpICpsZW5ndGhzID0gMHgl
MDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xjaGFyICptZXNzYWdlTG9nID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgY291bnQsIGJ1ZlNpemUsICh1aW50
cHRyX3Qpc291cmNlcywgKHVpbnRwdHJfdCl0eXBlcywgKHVpbnRwdHJfdClpZHMsCisgICAgICAg
ICAgKHVpbnRwdHJfdClzZXZlcml0aWVzLCAodWludHB0cl90KWxlbmd0aHMsICh1aW50cHRyX3Qp
bWVzc2FnZUxvZyk7CiAKKyAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZ0tIUihjb250
ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRzLCBzZXZlcml0aWVzLCBs
ZW5ndGhzLCBtZXNzYWdlTG9nKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0g
Y29udGV4dC0+Z2V0RGVidWdNZXNzYWdlTG9nKGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBl
cywgaWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShSZWFkblBpeGVsc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICBi
dWZTaXplLCBkYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1Z01lc3Nh
Z2VMb2dLSFIsIEdMdWludD4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dERlYnVnTWVzc2FnZUxvZ0tIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvdW50LCBidWZTaXpl
LCBzb3VyY2VzLCB0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICBpZHMsIHNldmVyaXRpZXMs
IGxlbmd0aHMsIG1lc3NhZ2VMb2csIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0RGVidWdNZXNzYWdlTG9nS0hSLCBHTHVpbnQ+KCk7CiAgICAgfQorICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotLy8gR0xfRVhUX3NSR0IKLQotLy8gR0xfRVhUX3NlbWFwaG9yZQot
dm9pZCBHTF9BUElFTlRSWSBEZWxldGVTZW1hcGhvcmVzRVhUKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICpzZW1hcGhvcmVzKQordm9pZCBHTF9BUElFTlRSWQorR2V0T2JqZWN0TGFiZWxLSFIoR0xl
bnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlU2VtYXBob3Jlc0VYVCIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqc2VtYXBo
b3JlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1
aW50cHRyX3Qpc2VtYXBob3Jlcyk7CisgICAgRVZFTlQoImdsR2V0T2JqZWN0TGFiZWxLSFIiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBpZGVudGlmaWVyID0gJXMsIEdMdWludCBu
YW1lID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICIKKyAgICAgICAgICAiKmxl
bmd0aCA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNoYXIgKmxhYmVsID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgaWRlbnRpZmllciksIG5hbWUsIGJ1ZlNpemUsCisgICAgICAgICAgKHVp
bnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBjb25zdCBTZW1hcGhvcmVJRCAqc2VtYXBob3Jlc1BhY2tlZCAgICAgICAg
ICAgPSBGcm9tR0w8Y29uc3QgU2VtYXBob3JlSUQgKj4oc2VtYXBob3Jlcyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlU2VtYXBob3Jlc0VYVChjb250ZXh0LCBu
LCBzZW1hcGhvcmVzUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdExhYmVsS0hSKGNv
bnRleHQsIGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxl
dGVTZW1hcGhvcmVzKG4sIHNlbWFwaG9yZXNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+
Z2V0T2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVTZW1hcGhvcmVzRVhULCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0T2JqZWN0TGFiZWxLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlm
aWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgbGFiZWwp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5TZW1hcGhvcmVzRVhUKEdMc2l6ZWkg
biwgR0x1aW50ICpzZW1hcGhvcmVzKQordm9pZCBHTF9BUElFTlRSWSBHZXRPYmplY3RQdHJMYWJl
bEtIUihjb25zdCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKmxhYmVsKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZW5TZW1hcGhvcmVzRVhUIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpzZW1hcGhvcmVzID0gMHglMDE2
IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClzZW1h
cGhvcmVzKTsKKyAgICBFVkVOVCgiZ2xHZXRPYmplY3RQdHJMYWJlbEtIUiIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAg
ICAgIiwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJ
eFBUUgorICAgICAgICAgICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgYnVmU2l6ZSwgKHVpbnRwdHJf
dClsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTZW1hcGhvcmVJRCAqc2VtYXBob3Jlc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2VtYXBob3JlSUQgKj4oc2VtYXBob3Jlcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuU2VtYXBob3Jlc0VYVChjb250ZXh0LCBuLCBz
ZW1hcGhvcmVzUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgYnVmU2l6
ZSwgbGVuZ3RoLCBsYWJlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmdlblNlbWFwaG9yZXMobiwgc2VtYXBob3Jlc1BhY2tlZCk7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRPYmplY3RQdHJMYWJlbChwdHIsIGJ1ZlNpemUsIGxl
bmd0aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuU2VtYXBo
b3Jlc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQYWNrZWQpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldE9iamVjdFB0ckxhYmVsS0hSLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHRyLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoR0x1aW50IHNlbWFwaG9yZSwg
R0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRQb2lu
dGVydktIUihHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xH
ZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpwYXJhbXMg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgc2Vt
YXBob3JlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2VtYXBob3JlUGFyYW1ldGVyTmFt
ZSwgcG5hbWUpLAotICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0
UG9pbnRlcnZLSFIiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdClw
YXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTZW1hcGhvcmVJRCBz
ZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNl
bWFwaG9yZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRT
ZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlR2V0UG9pbnRlcnZLSFIoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFNlbWFw
aG9yZVBhcmFtZXRlcnVpNjR2KHNlbWFwaG9yZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5nZXRQb2ludGVydihwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhULCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFBvaW50ZXJ2S0hSLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi1HTGJvb2xl
YW4gR0xfQVBJRU5UUlkgSXNTZW1hcGhvcmVFWFQoR0x1aW50IHNlbWFwaG9yZSkKK3ZvaWQgR0xf
QVBJRU5UUlkgT2JqZWN0TGFiZWxLSFIoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBH
THNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsSXNTZW1hcGhvcmVF
WFQiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUiLCBDSUQoY29udGV4dCks
IHNlbWFwaG9yZSk7CisgICAgRVZFTlQoImdsT2JqZWN0TGFiZWxLSFIiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSBpZGVudGlmaWVyID0gJXMsIEdMdWludCBuYW1lID0gJXUsIEdM
c2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0ICIKKyAgICAgICAgICAiR0xjaGFyICpsYWJlbCA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpPYmplY3RJZGVudGlmaWVyLCBpZGVudGlmaWVyKSwgbmFtZSwgbGVuZ3Ro
LAorICAgICAgICAgICh1aW50cHRyX3QpbGFiZWwpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZh
bHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBo
b3JlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhv
cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlz
U2VtYXBob3JlRVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVPYmplY3RMYWJlbEtIUihjb250
ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5p
c1NlbWFwaG9yZShzZW1hcGhvcmVQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6SXNTZW1hcGhvcmVFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPm9iamVjdExhYmVsKGlkZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNTZW1hcGhvcmVFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNTZW1hcGhvcmVFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShPYmplY3RMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkZW50aWZpZXIsIG5h
bWUsIGxlbmd0aCwgbGFiZWwpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoR0x1aW50IHNlbWFw
aG9yZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQ2NCAqcGFyYW1zKQordm9pZCBHTF9BUElF
TlRSWSBPYmplY3RQdHJMYWJlbEtIUihjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVuZ3RoLCBj
b25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTGVudW0g
cG5hbWUgPSAlcywgY29uc3QgR0x1aW50NjQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6U2VtYXBob3JlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAg
ICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xPYmplY3RQdHJMYWJlbEtI
UiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQ
Ukl4UFRSCisgICAgICAgICAgIiwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICps
YWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksICh1aW50
cHRyX3QpcHRyLCBsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChjb250
ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlT2JqZWN0UHRyTGFiZWxLSFIoY29udGV4
dCwgcHRyLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+c2VtYXBob3JlUGFyYW1ldGVydWk2NHYoc2VtYXBo
b3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm9iamVjdFB0
ckxhYmVsKHB0ciwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNl
bWFwaG9yZVBhY2tlZCwgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShPYmplY3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHB0ciwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNp
Z25hbFNlbWFwaG9yZUVYVChHTHVpbnQgc2VtYXBob3JlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpidWZmZXJzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmRzdExheW91
dHMpCit2b2lkIEdMX0FQSUVOVFJZIFBvcERlYnVnR3JvdXBLSFIoKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xTaWduYWxT
ZW1hcGhvcmVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUg
PSAldSwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzID0gJXUsIGNvbnN0IEdMdWludCAiCi0gICAg
ICAgICAgIipidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0x1aW50IG51
bVRleHR1cmVCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQgKnRleHR1cmVzID0gMHglMDE2IiBQ
Ukl4UFRSCi0gICAgICAgICAgIiwgY29uc3QgR0xlbnVtICpkc3RMYXlvdXRzID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBudW1CdWZmZXJC
YXJyaWVycywgKHVpbnRwdHJfdClidWZmZXJzLCBudW1UZXh0dXJlQmFycmllcnMsCi0gICAgICAg
ICAgKHVpbnRwdHJfdCl0ZXh0dXJlcywgKHVpbnRwdHJfdClkc3RMYXlvdXRzKTsKKyAgICBFVkVO
VCgiZ2xQb3BEZWJ1Z0dyb3VwS0hSIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBob3JlKTsK
LSAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAgICAgICAgID0g
RnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwotICAgICAgICBjb25zdCBUZXh0dXJl
SUQgKnRleHR1cmVzUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlE
ICo+KHRleHR1cmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICBWYWxpZGF0ZVNpZ25hbFNlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhv
cmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQ
YWNrZWQsIGRzdExheW91dHMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlUG9wRGVidWdHcm91cEtIUihjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2lnbmFsU2VtYXBob3JlKHNl
bWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJl
c1BhY2tlZCwgZHN0TGF5b3V0cyk7CisgICAgICAgICAgICBjb250ZXh0LT5wb3BEZWJ1Z0dyb3Vw
KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTaWduYWxTZW1hcGhvcmVFWFQs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJz
LAotICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG51bVRleHR1cmVCYXJyaWVy
cywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBv
cERlYnVnR3JvdXBLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgV2FpdFNlbWFwaG9yZUVYVChHTHVpbnQgc2VtYXBob3JlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJyaWVycywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqc3JjTGF5
b3V0cykKK3ZvaWQgR0xfQVBJRU5UUlkgUHVzaERlYnVnR3JvdXBLSFIoR0xlbnVtIHNvdXJjZSwg
R0x1aW50IGlkLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptZXNzYWdlKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgi
Z2xXYWl0U2VtYXBob3JlRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2Vt
YXBob3JlID0gJXUsIEdMdWludCBudW1CdWZmZXJCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQg
IgotICAgICAgICAgICIqYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdM
dWludCBudW1UZXh0dXJlQmFycmllcnMgPSAldSwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyA9IDB4
JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIGNvbnN0IEdMZW51bSAqc3JjTGF5b3V0cyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgbnVt
QnVmZmVyQmFycmllcnMsICh1aW50cHRyX3QpYnVmZmVycywgbnVtVGV4dHVyZUJhcnJpZXJzLAot
ICAgICAgICAgICh1aW50cHRyX3QpdGV4dHVyZXMsICh1aW50cHRyX3Qpc3JjTGF5b3V0cyk7Cisg
ICAgRVZFTlQoImdsUHVzaERlYnVnR3JvdXBLSFIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSBzb3VyY2UgPSAlcywgR0x1aW50IGlkID0gJXUsIEdMc2l6ZWkgbGVuZ3RoID0gJWQs
IGNvbnN0IEdMY2hhciAiCisgICAgICAgICAgIiptZXNzYWdlID0gMHglMDE2IiBQUkl4UFRSICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnU291cmNlLCBzb3VyY2UpLCBpZCwgbGVuZ3RoLAorICAgICAgICAgICh1aW50cHRyX3QpbWVz
c2FnZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNlbWFwaG9yZUlEIHNl
bWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2Vt
YXBob3JlKTsKLSAgICAgICAgY29uc3QgQnVmZmVySUQgKmJ1ZmZlcnNQYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwotICAgICAgICBjb25z
dCBUZXh0dXJlSUQgKnRleHR1cmVzUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3Qg
VGV4dHVyZUlEICo+KHRleHR1cmVzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVdhaXRTZW1hcGhvcmVFWFQoY29udGV4dCwg
c2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywgYnVmZmVyc1BhY2tlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0
dXJlc1BhY2tlZCwgc3JjTGF5b3V0cykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihjb250ZXh0LCBzb3VyY2Us
IGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT53YWl0U2VtYXBob3JlKHNlbWFwaG9yZVBhY2tlZCwg
bnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91
dHMpOworICAgICAgICAgICAgY29udGV4dC0+cHVzaERlYnVnR3JvdXAoc291cmNlLCBpZCwgbGVu
Z3RoLCBtZXNzYWdlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFdhaXRTZW1h
cGhvcmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZl
ckJhcnJpZXJzLAotICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG51bVRleHR1
cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFB1c2hEZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCBp
ZCwgbGVuZ3RoLCBtZXNzYWdlKTsKICAgICB9CiB9CiAKLS8vIEdldFVuc2lnbmVkQnl0ZWlfdkVY
VCBpcyBhbHJlYWR5IGRlZmluZWQuCi0KLS8vIEdldFVuc2lnbmVkQnl0ZXZFWFQgaXMgYWxyZWFk
eSBkZWZpbmVkLgotCi0vLyBHTF9FWFRfc2VtYXBob3JlX2ZkCi12b2lkIEdMX0FQSUVOVFJZIElt
cG9ydFNlbWFwaG9yZUZkRVhUKEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBoYW5kbGVUeXBlLCBH
TGludCBmZCkKKy8vIEdMX0tIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZQordm9pZCBHTF9BUElF
TlRSWSBNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIoR0x1aW50IGNvdW50KQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xJ
bXBvcnRTZW1hcGhvcmVGZEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNl
bWFwaG9yZSA9ICV1LCBHTGVudW0gaGFuZGxlVHlwZSA9ICVzLCBHTGludCBmZCA9ICVkIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkV4dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksIGZkKTsKKyAgICBFVkVOVCgiZ2xN
YXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgY291bnQg
PSAldSIsIENJRChjb250ZXh0KSwgY291bnQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7Ci0gICAgICAgIEhhbmRsZVR5cGUgaGFuZGxl
VHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxIYW5kbGVUeXBlPihoYW5kbGVU
eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUltcG9ydFNl
bWFwaG9yZUZkRVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgaGFuZGxlVHlwZVBhY2tlZCwg
ZmQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSKGNvbnRleHQsIGNvdW50KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aW1wb3J0U2Vt
YXBob3JlRmQoc2VtYXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLCBmZCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5tYXhTaGFkZXJDb21waWxlclRocmVhZHMoY291bnQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0U2VtYXBob3JlRmRFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgZmQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE1heFNoYWRlckNvbXBpbGVy
VGhyZWFkc0tIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvdW50KTsKICAgICB9CiB9CiAKLS8v
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2JwdGMKLQotLy8gR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MQotCi0vLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCi0KLS8v
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgotCi0vLyBHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMKLQotLy8gR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4
Ci0KLS8vIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UKLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFn
ZTFERVhUKEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgpCisvLyBHTF9OVl9mZW5jZQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVGZW5jZXNOVihH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqZmVuY2VzKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlMURFWFQi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBs
ZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xz
aXplaSB3aWR0aCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1h
dCksIHdpZHRoKTsKKyAgICBFVkVOVCgiZ2xEZWxldGVGZW5jZXNOViIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqZmVuY2VzID0gMHglMDE2
IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClmZW5j
ZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgY29uc3QgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8Y29uc3QgRmVuY2VOVklEICo+KGZlbmNlcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFN0b3JhZ2UxREVYVChjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZURlbGV0ZUZlbmNlc05WKGNvbnRleHQsIG4sIGZlbmNlc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0
b3JhZ2UxRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRlbGV0ZUZlbmNlc05WKG4sIGZlbmNlc1BhY2tlZCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlMURFWFQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShEZWxldGVGZW5jZXNOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZlbmNl
c1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1UZXhTdG9yYWdlMkRFWFQo
R0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIEZpbmlzaEZlbmNl
TlYoR0x1aW50IGZlbmNlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlMkRFWFQiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xl
bnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVk
LCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5h
bGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOworICAgIEVWRU5UKCJnbEZpbmlzaEZlbmNlTlYiLCAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0KSwgZmVuY2UpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGaW5pc2hGZW5jZU5WKGNvbnRleHQs
IGZlbmNlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZTJEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5maW5pc2hG
ZW5jZU5WKGZlbmNlUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRl
eFN0b3JhZ2UyREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShGaW5pc2hGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgZmVuY2VQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdl
M0RFWFQoR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCkKK3ZvaWQgR0xf
QVBJRU5UUlkgR2VuRmVuY2VzTlYoR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNlcykKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImds
VGV4U3RvcmFnZTNERVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAi
Ci0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xz
aXplaSBkZXB0aCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1h
dCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICBFVkVOVCgiZ2xHZW5GZW5jZXNOViIsICJj
b250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmZlbmNlcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpZmVuY2VzKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UzREVYVChjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVw
dGgpKTsKKyAgICAgICAgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEICo+KGZlbmNlcyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5GZW5jZXNOVihj
b250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0QodGFyZ2V0UGFja2VkLCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZW5GZW5jZXNOVihuLCBmZW5jZXNQYWNrZWQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTNERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5GZW5j
ZXNOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZlbmNlc1BhY2tlZCk7CiAgICAgfQogfQog
Ci0vLyBHTF9LSFJfZGVidWcKLXZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ2FsbGJhY2tL
SFIoR0xERUJVR1BST0NLSFIgY2FsbGJhY2ssIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0RmVuY2Vpdk5WKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xERUJVR1BST0NLSFIgY2FsbGJhY2sgPSAweCUwMTYiIFBSSXhQVFIK
LSAgICAgICAgICAiLCBjb25zdCB2b2lkICp1c2VyUGFyYW0gPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KWNhbGxiYWNrLCAodWludHB0cl90
KXVzZXJQYXJhbSk7CisgICAgRVZFTlQoImdsR2V0RmVuY2Vpdk5WIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBmZW5j
ZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWlu
dHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoY29udGV4dCwg
Y2FsbGJhY2ssIHVzZXJQYXJhbSkpOworICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
RmVuY2Vpdk5WKGNvbnRleHQsIGZlbmNlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVidWdN
ZXNzYWdlQ2FsbGJhY2soY2FsbGJhY2ssIHVzZXJQYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0
LT5nZXRGZW5jZWl2TlYoZmVuY2VQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBjYWxsYmFjaywgdXNlclBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRGZW5jZWl2TlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmZW5jZVBhY2tlZCwgcG5hbWUsIHBh
cmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUNvbnRyb2xL
SFIoR0xlbnVtIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gc2V2ZXJpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVpbnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gZW5hYmxlZCkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZlbmNlTlYoR0x1
aW50IGZlbmNlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMZW51
bSBzZXZlcml0eSA9ICVzLCBHTHNpemVpIGNvdW50ICIKLSAgICAgICAgICAiPSAlZCwgY29uc3Qg
R0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xib29sZWFuIGVuYWJsZWQgPSAlcyIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVi
dWdTb3VyY2UsIHNvdXJjZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlYnVnVHlwZSwgdHlwZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlYnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgY291bnQsICh1aW50cHRyX3QpaWRzLAotICAgICAg
ICAgIEdMYm9vbGVhblRvU3RyaW5nKGVuYWJsZWQpKTsKKyAgICBFVkVOVCgiZ2xJc0ZlbmNlTlYi
LCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0KSwgZmVuY2Up
OwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBW
YWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2xLSFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZl
cml0eSwgY291bnQsIGlkcywgZW5hYmxlZCkpOworICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZl
bmNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNGZW5j
ZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVidWdNZXNzYWdlQ29udHJvbChzb3VyY2Us
IHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKTsKKyAgICAgICAgICAgIHJldHVy
blZhbHVlID0gY29udGV4dC0+aXNGZW5jZU5WKGZlbmNlUGFja2VkKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNvbnRyb2xLSFIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICBpZHMsIGVuYWJsZWQpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRmVuY2VO
ViwgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNGZW5j
ZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6SXNGZW5jZU5WLCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VJ
bnNlcnRLSFIoR0xlbnVtIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKmJ1ZikKK3ZvaWQgR0xfQVBJRU5UUlkgU2V0RmVuY2VOVihHTHVpbnQgZmVuY2Us
IEdMZW51bSBjb25kaXRpb24pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbERlYnVnTWVzc2FnZUluc2VydEtIUiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVz
LCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHNldmVyaXR5ID0gIgotICAgICAgICAgICIlcywgR0xz
aXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICpidWYgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVi
dWdTb3VyY2UsIHNvdXJjZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlYnVnVHlwZSwgdHlwZSksIGlkLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWJ1Z1NldmVyaXR5LCBzZXZlcml0eSksIGxlbmd0aCwgKHVpbnRwdHJfdClidWYpOwor
ICAgIEVWRU5UKCJnbFNldEZlbmNlTlYiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAl
dSwgR0xlbnVtIGNvbmRpdGlvbiA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGZlbmNl
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb25kaXRpb24pKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3Nh
Z2VJbnNlcnRLSFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwg
YnVmKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVNldEZlbmNlTlYoY29udGV4dCwgZmVuY2VQYWNrZWQsIGNvbmRpdGlvbikpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlYnVnTWVz
c2FnZUluc2VydChzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLCBidWYpOworICAg
ICAgICAgICAgY29udGV4dC0+c2V0RmVuY2VOVihmZW5jZVBhY2tlZCwgY29uZGl0aW9uKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUluc2VydEtIUiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LAotICAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCwgYnVmKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTZXRGZW5j
ZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIGNvbmRpdGlvbik7CiAgICAg
fQogfQogCi1HTHVpbnQgR0xfQVBJRU5UUlkgR2V0RGVidWdNZXNzYWdlTG9nS0hSKEdMdWludCBj
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
KnNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSAqdHlwZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
KnNldmVyaXRpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMY2hhciAqbWVzc2FnZUxvZykKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBUZXN0RmVuY2VOVihH
THVpbnQgZmVuY2UpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIEVWRU5UKCJnbEdldERlYnVnTWVzc2FnZUxvZ0tIUiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IGNvdW50ID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBH
TGVudW0gKnNvdXJjZXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTGVudW0gKnR5
cGVzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICAgIiwgR0xlbnVtICpzZXZlcml0aWVzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6
ZWkgKmxlbmd0aHMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTGNoYXIgKm1lc3Nh
Z2VMb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBjb3Vu
dCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClzb3VyY2VzLCAodWludHB0cl90KXR5cGVzLCAodWludHB0
cl90KWlkcywKLSAgICAgICAgICAodWludHB0cl90KXNldmVyaXRpZXMsICh1aW50cHRyX3QpbGVu
Z3RocywgKHVpbnRwdHJfdCltZXNzYWdlTG9nKTsKKyAgICBFVkVOVCgiZ2xUZXN0RmVuY2VOViIs
ICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBmZW5jZSk7
CiAKLSAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoY29udGV4dCwgY291bnQsIGJ1ZlNpemUsIHNvdXJj
ZXMsIHR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkcywgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZykpOworICAg
ICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlVGVzdEZlbmNlTlYoY29udGV4dCwgZmVuY2VQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IGNvbnRleHQtPmdldERlYnVnTWVzc2FnZUxvZyhjb3VudCwgYnVmU2l6ZSwgc291cmNlcywg
dHlwZXMsIGlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpOworICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBjb250ZXh0LT50ZXN0RmVuY2VOVihmZW5jZVBhY2tlZCk7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1Z01lc3NhZ2VMb2dLSFIsIEdM
dWludD4oKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OlRlc3RGZW5jZU5WLCBHTGJvb2xlYW4+KCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXREZWJ1Z01lc3NhZ2VMb2dLSFIsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgaWRzLCBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nLCByZXR1cm5WYWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVGVzdEZlbmNlTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBm
ZW5jZVBhY2tlZCwgcmV0dXJuVmFsdWUpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAg
ICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXREZWJ1
Z01lc3NhZ2VMb2dLSFIsIEdMdWludD4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VGVzdEZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKICAg
ICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1HZXRP
YmplY3RMYWJlbEtIUihHTGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKQorLy8gR0xfT0VTX0VHTF9pbWFn
ZQordm9pZCBHTF9BUElFTlRSWSBFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMo
R0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsR2V0T2JqZWN0TGFi
ZWxLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBpZGVudGlmaWVyID0gJXMs
IEdMdWludCBuYW1lID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICIKLSAgICAg
ICAgICAiKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNoYXIgKmxhYmVsID0gMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaWRlbnRpZmllciksIG5hbWUsIGJ1ZlNpemUsCi0gICAg
ICAgICAgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5UKCJn
bEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVnbEltYWdlT0VTIGltYWdlID0gMHglMDE2
IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgKHVpbnRwdHJfdClpbWFnZSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmplY3RMYWJlbEtIUihjb250ZXh0LCBp
ZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVu
ZGVyYnVmZmVyU3RvcmFnZU9FUyhjb250ZXh0LCB0YXJnZXQsIGltYWdlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0T2JqZWN0
TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5lR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bWFnZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRPYmplY3RMYWJlbEtI
UiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICBsYWJlbCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgdGFyZ2V0LCBpbWFnZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldE9iamVj
dFB0ckxhYmVsS0hSKGNvbnN0IHZvaWQgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMY2hhciAqbGFiZWwpCit2b2lkIEdMX0FQSUVOVFJZIEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJn
bEdldE9iamVjdFB0ckxhYmVsS0hSIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBjb25zdCB2
b2lkICpwdHIgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNpemVpIGJ1ZlNpemUg
PSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xj
aGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
ICh1aW50cHRyX3QpcHRyLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdCls
YWJlbCk7CisgICAgRVZFTlQoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlZ2xJbWFnZU9FUyBpbWFn
ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksICh1aW50cHRyX3QpaW1h
Z2UpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwg
bGVuZ3RoLCBsYWJlbCkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBpbWFnZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dE9iamVjdFB0ckxhYmVsKHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5lR0xJbWFnZVRhcmdldFRleHR1cmUyRCh0YXJnZXRQYWNrZWQsIGltYWdlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE9iamVjdFB0ckxhYmVsS0hSLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHRyLCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUywgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaW1hZ2UpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRQb2ludGVydktIUihHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCisvLyBHTF9P
RVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorCisvLyBHTF9PRVNfZGVwdGgzMgorCisv
LyBHTF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQKK3ZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVh
dGlvblNlcGFyYXRlaU9FUyhHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVB
bHBoYSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
Ci0gICAgRVZFTlQoImdsR2V0UG9pbnRlcnZLSFIiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5h
bWUgPSAlcywgdm9pZCAqKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBu
YW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEJsZW5kRXF1YXRpb25TZXBh
cmF0ZWlPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xl
bnVtIG1vZGVSR0IgPSAlcywgR0xlbnVtIG1vZGVBbHBoYSA9ICVzIiwgQ0lEKGNvbnRleHQpLAor
ICAgICAgICAgIGJ1ZiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25N
b2RlRVhULCBtb2RlUkdCKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
QmxlbmRFcXVhdGlvbk1vZGVFWFQsIG1vZGVBbHBoYSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
dFBvaW50ZXJ2S0hSKGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRl
aU9FUyhjb250ZXh0LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFBvaW50ZXJ2KHBu
YW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRl
aShidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRQb2ludGVydktIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVsS0hSKEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQg
bmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpCit2b2lkIEdMX0FQSUVO
VFJZIEJsZW5kRXF1YXRpb25pT0VTKEdMdWludCBidWYsIEdMZW51bSBtb2RlKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xP
YmplY3RMYWJlbEtIUiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGlkZW50aWZp
ZXIgPSAlcywgR0x1aW50IG5hbWUgPSAldSwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgIgot
ICAgICAgICAgICJHTGNoYXIgKmxhYmVsID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok9iamVjdElkZW50aWZp
ZXIsIGlkZW50aWZpZXIpLCBuYW1lLCBsZW5ndGgsCi0gICAgICAgICAgKHVpbnRwdHJfdClsYWJl
bCk7CisgICAgRVZFTlQoImdsQmxlbmRFcXVhdGlvbmlPRVMiLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgYnVmID0gJXUsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAg
YnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlvbk1vZGVFWFQsIG1v
ZGUpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVPYmplY3RMYWJlbEtIUihjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBs
ZW5ndGgsIGxhYmVsKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEVxdWF0aW9uaU9FUyhjb250ZXh0LCBidWYsIG1vZGUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5vYmplY3RMYWJlbChpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmJsZW5kRXF1YXRpb25pKGJ1ZiwgbW9kZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShPYmplY3RMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlk
ZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEJs
ZW5kRXF1YXRpb25pT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBtb2RlKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWxLSFIoY29uc3Qgdm9pZCAqcHRy
LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCkKK3ZvaWQgR0xfQVBJRU5UUlkK
K0JsZW5kRnVuY1NlcGFyYXRlaU9FUyhHTHVpbnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0g
ZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsT2JqZWN0
UHRyTGFiZWxLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIGNvbnN0IHZvaWQgKnB0ciA9
IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0
IEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCAodWludHB0cl90KXB0ciwgbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsKKyAgICBFVkVO
VCgiZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBidWYgPSAldSwgR0xlbnVtIHNyY1JHQiA9ICVzLCBHTGVudW0gZHN0UkdCID0gJXMsIEdM
ZW51bSBzcmNBbHBoYSAiCisgICAgICAgICAgIj0gJXMsIEdMZW51bSBkc3RBbHBoYSA9ICVzIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIGJ1ZiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkJsZW5kaW5nRmFjdG9yLCBzcmNSR0IpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgZHN0UkdCKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIHNyY0FscGhhKSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdEFscGhhKSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlT2JqZWN0
UHRyTGFiZWxLSFIoY29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKSk7Ci0gICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+b2JqZWN0UHRyTGFi
ZWwocHRyLCBsZW5ndGgsIGxhYmVsKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KE9iamVjdFB0ckxhYmVsS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHRyLCBsZW5ndGgsIGxh
YmVsKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgUG9wRGVidWdHcm91cEtIUigpCi17
Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVW
RU5UKCJnbFBvcERlYnVnR3JvdXBLSFIiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsK
LQotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoY29udGV4dCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvcERlYnVnR3JvdXAoKTsKLSAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBvcERlYnVnR3JvdXBLSFIsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0KTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgUHVzaERlYnVnR3Jv
dXBLSFIoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xj
aGFyICptZXNzYWdlKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKLSAgICBFVkVOVCgiZ2xQdXNoRGVidWdHcm91cEtIUiIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTHVpbnQgaWQgPSAldSwgR0xzaXplaSBs
ZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICIKLSAgICAgICAgICAiKm1lc3NhZ2UgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksIGlkLCBsZW5ndGgsCi0gICAgICAgICAgKHVp
bnRwdHJfdCltZXNzYWdlKTsKLQotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihjb250ZXh0LCBzb3Vy
Y2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMo
Y29udGV4dCwgYnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHVz
aERlYnVnR3JvdXAoc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJsZW5kRnVuY1NlcGFyYXRlaShidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwg
ZHN0QWxwaGEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHVzaERlYnVnR3Jv
dXBLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2Up
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRnVuY1NlcGFyYXRlaU9FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLAorICAgICAgICAgICAg
ICAgICAgICAgIGRzdEFscGhhKTsKICAgICB9CiB9CiAKLS8vIEdMX0tIUl9wYXJhbGxlbF9zaGFk
ZXJfY29tcGlsZQotdm9pZCBHTF9BUElFTlRSWSBNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIo
R0x1aW50IGNvdW50KQordm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNpT0VTKEdMdWludCBidWYs
IEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbE1heFNoYWRlckNvbXBpbGVyVGhyZWFk
c0tIUiIsICJjb250ZXh0ID0gJWQsIEdMdWludCBjb3VudCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBj
b3VudCk7CisgICAgRVZFTlQoImdsQmxlbmRGdW5jaU9FUyIsICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBidWYgPSAldSwgR0xlbnVtIHNyYyA9ICVzLCBHTGVudW0gZHN0ID0gJXMiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgYnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdG
YWN0b3IsIHNyYyksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5k
aW5nRmFjdG9yLCBkc3QpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIoY29udGV4dCwgY291
bnQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
QmxlbmRGdW5jaU9FUyhjb250ZXh0LCBidWYsIHNyYywgZHN0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF4U2hhZGVyQ29tcGls
ZXJUaHJlYWRzKGNvdW50KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJsZW5kRnVuY2koYnVmLCBz
cmMsIGRzdCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXhTaGFkZXJDb21w
aWxlclRocmVhZHNLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoQmxlbmRGdW5jaU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1Ziwgc3Jj
LCBkc3QpOwogICAgIH0KIH0KIAotLy8gR0xfTlZfZmVuY2UKLXZvaWQgR0xfQVBJRU5UUlkgRGVs
ZXRlRmVuY2VzTlYoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcykKK3ZvaWQgR0xfQVBJ
RU5UUlkgQ29sb3JNYXNraU9FUyhHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4g
ZywgR0xib29sZWFuIGIsIEdMYm9vbGVhbiBhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xEZWxldGVGZW5jZXNOViIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqZmVu
Y2VzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVp
bnRwdHJfdClmZW5jZXMpOworICAgIEVWRU5UKCJnbENvbG9yTWFza2lPRVMiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTGJvb2xlYW4gciA9ICVzLCBHTGJv
b2xlYW4gZyA9ICVzLCBHTGJvb2xlYW4gYiA9ICVzLCAiCisgICAgICAgICAgIkdMYm9vbGVhbiBh
ID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMYm9vbGVhblRvU3RyaW5n
KHIpLCBHTGJvb2xlYW5Ub1N0cmluZyhnKSwgR0xib29sZWFuVG9TdHJpbmcoYiksCisgICAgICAg
ICAgR0xib29sZWFuVG9TdHJpbmcoYSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBjb25zdCBGZW5jZU5WSUQgKmZlbmNlc1BhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8Y29uc3QgRmVuY2VOVklEICo+KGZlbmNlcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRGVsZXRlRmVuY2VzTlYoY29udGV4dCwgbiwgZmVuY2VzUGFja2VkKSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yTWFza2lPRVMoY29u
dGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGZW5jZXNOVihuLCBmZW5jZXNQYWNr
ZWQpOworICAgICAgICAgICAgY29udGV4dC0+Y29sb3JNYXNraShpbmRleCwgciwgZywgYiwgYSk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVGZW5jZXNOViwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG4sIGZlbmNlc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
Q29sb3JNYXNraU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCByLCBnLCBiLCBhKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRmluaXNoRmVuY2VOVihHTHVpbnQgZmVuY2Up
Cit2b2lkIEdMX0FQSUVOVFJZIERpc2FibGVpT0VTKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0g
ICAgRVZFTlQoImdsRmluaXNoRmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9
ICV1IiwgQ0lEKGNvbnRleHQpLCBmZW5jZSk7CisgICAgRVZFTlQoImdsRGlzYWJsZWlPRVMiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVD
YXAsIHRhcmdldCksIGluZGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
RmVuY2VOVklEIGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZl
bmNlTlZJRD4oZmVuY2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZpbmlzaEZlbmNl
TlYoY29udGV4dCwgZmVuY2VQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRGlzYWJsZWlPRVMoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmZpbmlzaEZlbmNlTlYoZmVuY2VQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZGlz
YWJsZWkodGFyZ2V0LCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShG
aW5pc2hGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKERpc2FibGVpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBpbmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlbkZlbmNlc05WKEdMc2l6
ZWkgbiwgR0x1aW50ICpmZW5jZXMpCit2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZWlPRVMoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xHZW5GZW5jZXNOViIsICJjb250ZXh0ID0g
JWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmZlbmNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpZmVuY2VzKTsKKyAgICBFVkVO
VCgiZ2xFbmFibGVpT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVp
bnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIEZlbmNlTlZJRCAqZmVuY2VzUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQgKj4oZmVuY2VzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZW5GZW5jZXNOVihjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpKTsKLSAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5G
ZW5jZXNOVihuLCBmZW5jZXNQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2VuRmVuY2VzTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpOwot
ICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRSWSBHZXRGZW5jZWl2TlYoR0x1aW50IGZlbmNlLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJnbEdldEZlbmNlaXZOViIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUsIEdMZW51bSBwbmFtZSA9ICVz
LCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgZmVuY2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBu
YW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAg
ICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RmVuY2VOVklEPihmZW5jZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0RmVuY2Vpdk5WKGNvbnRleHQsIGZlbmNlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZWlP
RVMoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEZlbmNlaXZOVihmZW5jZVBhY2tlZCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5lbmFibGVpKHRhcmdldCwgaW5k
ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RmVuY2Vpdk5WLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEVuYWJsZWlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGlu
ZGV4KTsKICAgICB9CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZlbmNlTlYoR0x1aW50
IGZlbmNlKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRW5hYmxlZGlPRVMoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBFVkVOVCgiZ2xJc0ZlbmNlTlYiLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0KSwgZmVuY2UpOworICAgIEVWRU5UKCJnbElzRW5h
YmxlZGlPRVMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRl
eCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAogICAgIEdMYm9vbGVhbiByZXR1cm5W
YWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZlbmNlTlZJRCBmZW5jZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRmVuY2VOVihjb250ZXh0LCBm
ZW5jZVBhY2tlZCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNGZW5jZU5WKGZlbmNlUGFja2VkKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRmVuY2VOViwgR0xib29sZWFu
PigpOwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNGZW5jZU5WLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNGZW5jZU5WLCBHTGJvb2xlYW4+KCk7Ci0gICAgfQotICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBTZXRGZW5jZU5WKEdMdWludCBmZW5jZSwg
R0xlbnVtIGNvbmRpdGlvbikKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsU2V0RmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdM
dWludCBmZW5jZSA9ICV1LCBHTGVudW0gY29uZGl0aW9uID0gJXMiLCBDSUQoY29udGV4dCksCi0g
ICAgICAgICAgZmVuY2UsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAs
IGNvbmRpdGlvbikpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBGZW5jZU5W
SUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklE
PihmZW5jZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2V0RmVuY2VOVihjb250ZXh0
LCBmZW5jZVBhY2tlZCwgY29uZGl0aW9uKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2V0RmVuY2VOVihmZW5jZVBhY2tlZCwgY29u
ZGl0aW9uKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNldEZlbmNlTlYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBmZW5jZVBhY2tlZCwgY29uZGl0aW9uKTsKLSAgICB9Ci19Ci0K
LUdMYm9vbGVhbiBHTF9BUElFTlRSWSBUZXN0RmVuY2VOVihHTHVpbnQgZmVuY2UpCi17Ci0gICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIEVWRU5UKCJn
bFRlc3RGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUiLCBDSUQoY29u
dGV4dCksIGZlbmNlKTsKLQotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKLSAgICBpZiAoY29u
dGV4dCkKLSAgICB7Ci0gICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVRlc3RGZW5jZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRW5hYmxl
ZGlPRVMoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+dGVzdEZlbmNl
TlYoZmVuY2VQYWNrZWQpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc0Vu
YWJsZWRpKHRhcmdldCwgaW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6VGVzdEZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGlPRVMsIEdMYm9v
bGVhbj4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRlc3RGZW5jZU5WLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShJc0VuYWJsZWRpT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBpbmRleCwgcmV0dXJuVmFsdWUpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpUZXN0RmVuY2VO
ViwgR0xib29sZWFuPigpOworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5W
YWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWRpT0VTLCBHTGJvb2xlYW4+KCk7CiAgICAgfQogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotLy8gR0xfT0VTX0VHTF9pbWFnZQotdm9pZCBHTF9B
UElFTlRSWSBFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoR0xlbnVtIHRhcmdl
dCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgRVZFTlQoImdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZm
ZXJTdG9yYWdlT0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0
KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0
YXJnZXQpLCAodWludHB0cl90KWltYWdlKTsKLQotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1
ZmZlclN0b3JhZ2VPRVMoY29udGV4dCwgdGFyZ2V0LCBpbWFnZSkpOwotICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVHTEltYWdlVGFyZ2V0
UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGltYWdlKTsKLSAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW1hZ2UpOwotICAgIH0KLX0KLQotdm9pZCBHTF9BUElF
TlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdl
T0VTIGltYWdlKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKLSAgICBFVkVOVCgiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVnbEltYWdlT0VTIGltYWdl
ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgKHVpbnRwdHJfdClpbWFn
ZSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGltYWdlKSk7Ci0gICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkQodGFyZ2V0UGFja2VkLCBpbWFnZSk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgaW1hZ2UpOwotICAgIH0KLX0KLQotLy8gR0xfT0VTX2NvbXByZXNz
ZWRfRVRDMV9SR0I4X3RleHR1cmUKLQotLy8gR0xfT0VTX2RlcHRoMzIKLQogLy8gR0xfT0VTX2Ry
YXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzQmFz
ZVZlcnRleE9FUyhHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtNTgzNywxMCArNTYwNSwxMCBAQCB2b2lkIEdM
X0FQSUVOVFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoR0xlbnVtIG1vZGUsCiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAg
RHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERy
YXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNl
VmVydGV4T0VTKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBp
bmRpY2VzLCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU4Njks
OSArNTYzNyw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleE9FUyhHTGVudW0gbW9kZSwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
UHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBy
aW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VW
ZXJ0ZXhPRVMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCkpOwpAQCAtNTkwMiw5ICs1Njcw
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoR0xl
bnVtIG1vZGUsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2Rl
Pihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAg
IERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwg
aW5kaWNlcywgYmFzZXZlcnRleCkpOwpAQCAtNTkzMSw3ICs1Njk5LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBEcmF3VGV4Zk9FUyhHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0
IHdpZHRoLCBHTGYKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVEcmF3VGV4Zk9FUyhjb250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTU5NTAsNyArNTcxOCw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgRHJhd1RleGZ2T0VTKGNvbnN0IEdMZmxvYXQgKmNvb3JkcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhmdk9FUyhjb250ZXh0LCBjb29y
ZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC01OTcwLDcgKzU3
MzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhpT0VTKEdMaW50IHgsIEdMaW50IHksIEdM
aW50IHosIEdMaW50IHdpZHRoLCBHTGludCBoZWlnaAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhpT0VTKGNvbnRleHQsIHgsIHks
IHosIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNTk4OSw3
ICs1NzU3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4aXZPRVMoY29uc3QgR0xpbnQgKmNv
b3JkcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhp
dk9FUyhjb250ZXh0LCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC02MDA5LDcgKzU3NzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhzT0VTKEdM
c2hvcnQgeCwgR0xzaG9ydCB5LCBHTHNob3J0IHosIEdMc2hvcnQgd2lkdGgsIEdMcwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhz
T0VTKGNvbnRleHQsIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtNjAyOCw3ICs1Nzk2LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4c3ZP
RVMoY29uc3QgR0xzaG9ydCAqY29vcmRzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRHJhd1RleHN2T0VTKGNvbnRleHQsIGNvb3JkcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYwNDgsNyArNTgxNiw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgRHJhd1RleHhPRVMoR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeiwgR0xmaXhl
ZCB3aWR0aCwgR0xmCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRHJhd1RleHhPRVMoY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MDY3LDcgKzU4MzUsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIERyYXdUZXh4dk9FUyhjb25zdCBHTGZpeGVkICpjb29yZHMpCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4eHZPRVMoY29udGV4dCwgY29v
cmRzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjA4Niw5ICs1
ODU0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kRnJhbWVidWZmZXJPRVMoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGZyYW1lYnVmZmVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8
RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFt
ZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJ
RD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0LCBmcmFtZWJ1
ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYx
MDYsOSArNTg3NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFJlbmRlcmJ1ZmZlck9FUyhHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBSZW5kZXJidWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgICAgICAgICAgICAg
PSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBSZW5kZXJi
dWZmZXJJRCByZW5kZXJidWZmZXJQYWNrZWQgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQ+KHJlbmRl
cmJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUJpbmRSZW5kZXJidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0LCByZW5kZXJidWZmZXJQ
YWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02MTI3LDcg
KzU4OTUsNyBAQCBHTGVudW0gR0xfQVBJRU5UUlkgQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c09FUyhH
TGVudW0gdGFyZ2V0KQogICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
c09FUyhjb250ZXh0LCB0YXJnZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjE1
Niw5ICs1OTI0LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnNPRVMoR0xz
aXplaSBuLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycykKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgY29uc3QgRnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkICAg
ICAgID0gRnJvbUdMPGNvbnN0IEZyYW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25z
dCBGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZUZyYW1lYnVmZmVyc09FUyhjb250
ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7CkBAIC02MTc4LDggKzU5NDYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVJl
bmRlcmJ1ZmZlcnNPRVMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVu
ZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJi
dWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZURlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1Bh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTYyMDQsOCAr
NTk3Miw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMoR0xl
bnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUmVuZGVyYnVm
ZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZl
cklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
UmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklE
PihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9F
Uyhjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwKQEAgLTYy
MzYsMTAgKzYwMDQsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRleHR1cmUyRE9F
UyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGV4dGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0ZXh0YXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgdGV4
dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
SUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyhjb250ZXh0LCB0YXJnZXQsIGF0dGFj
aG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTYyNjEsOSArNjAyOSw5IEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2VuRnJhbWVidWZmZXJzT0VTKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgKmZyYW1lYnVm
ZmVyc1BhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVm
ZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgPSBGcm9t
R0w8RnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnNPRVMoY29udGV4
dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewpAQCAtNjI4Miw5ICs2MDUwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5SZW5kZXJi
dWZmZXJzT0VTKEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKQogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tl
ZCAgICAgICAgICAgPSBGcm9tR0w8UmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBSZW5kZXJidWZmZXJJRCAqcmVuZGVyYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxSZW5k
ZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2VuUmVuZGVyYnVmZmVyc09FUyhjb250ZXh0LCBu
LCByZW5kZXJidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNjMwMiw4ICs2MDcwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZW5lcmF0ZU1pcG1h
cE9FUyhHTGVudW0gdGFyZ2V0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlbmVyYXRlTWlwbWFwT0VTKGNvbnRleHQsIHRh
cmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02MzMwLDcgKzYwOTgs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
T0VTKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKSk7CkBAIC02MzUzLDggKzYxMjEsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNjM3Miw4ICs2MTQwLDgg
QEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXJPRVMoR0x1aW50IGZyYW1lYnVm
ZmVyKQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVidWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9
IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0Zy
YW1lYnVmZmVyT0VTKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTY0MDIsOCArNjE3MCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJ
c1JlbmRlcmJ1ZmZlck9FUyhHTHVpbnQgcmVuZGVyYnVmZmVyKQogICAgIEdMYm9vbGVhbiByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlcklE
IHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4o
cmVuZGVyYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFJlbmRl
cmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBhY2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVu
ZGVyYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyT0VTKGNvbnRleHQsIHJlbmRlcmJ1ZmZlclBhY2tl
ZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NDM3LDcgKzYyMDUsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoR0xlbnVtIHRhcmdldCwKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBW
YWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCkpOwpAQCAtNjQ2Nyw5ICs2MjM1LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRQcm9ncmFtQmluYXJ5T0VTKEdMdWludCBwcm9ncmFtLAogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlPRVMoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlGb3JtYXQsIGJpbmFyeSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NDk1LDggKzYyNjMsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1CaW5hcnlPRVMoR0x1aW50IHByb2dyYW0sCiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeU9FUyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBi
aW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKSk7CkBAIC02NTIwLDkgKzYyODgsOSBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2T0VTKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgdm9pZCAqKnBhcmFtcwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBC
dWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdl
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldEJ1ZmZlclBvaW50ZXJ2T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY1NDIsOCArNjMx
MCw4IEBAIHZvaWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlck9FUyhHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gYWNjZXNzKQogICAgIHZvaWQgKnJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwQnVmZmVyT0VT
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgYWNjZXNzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKQEAgLTY1NzIsOCArNjM0MCw4IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBVbm1hcEJ1ZmZl
ck9FUyhHTGVudW0gdGFyZ2V0KQogICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVVubWFwQnVmZmVyT0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC02NjAyLDggKzYzNzAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEN1cnJlbnRQ
YWxldHRlTWF0cml4T0VTKEdMdWludCBtYXRyaXhwYWxldHRlaW5kZXgpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyhjb250ZXh0LCBtYXRyaXhwYWxldHRl
aW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC02NjIwLDcg
KzYzODgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJp
eE9FUygpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlTG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTKGNvbnRleHQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNjY0Miw4ICs2NDEwLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBNYXRyaXhJbmRleFBvaW50ZXJPRVMoR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkg
c3RyaWRlLAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTWF0cml4SW5kZXhQb2ludGVyT0VTKGNv
bnRleHQsIHNpemUsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTY2NjQsOCArNjQzMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
V2VpZ2h0UG9pbnRlck9FUyhHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUs
IGNvbnN0CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVXZWlnaHRQb2ludGVyT0VTKGNvbnRleHQs
IHNpemUsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTY2ODcsOSArNjQ1NSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgUG9pbnRT
aXplUG9pbnRlck9FUyhHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBv
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlw
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBl
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQb2ludFNpemVQb2ludGVy
T0VTKGNvbnRleHQsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTY3MTEsNyArNjQ3OSw3IEBAIEdMYml0ZmllbGQg
R0xfQVBJRU5UUlkgUXVlcnlNYXRyaXh4T0VTKEdMZml4ZWQgKm1hbnRpc3NhLCBHTGludCAqZXhw
b25lbnQpCiAgICAgR0xiaXRmaWVsZCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUXVlcnlNYXRyaXh4T0VTKGNvbnRleHQs
IG1hbnRpc3NhLCBleHBvbmVudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02NzUz
LDggKzY1MjEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTNET0VTKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdl
M0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LApAQCAtNjc5Miw5ICs2NTYwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UzRE9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+
KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VTKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpKTsKQEAgLTY4MjgsOSArNjU5Niw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleFN1YkltYWdlM0RPRVMoR0xlbnVtIHRhcmdldCwKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRE9FUyhj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC02ODYw
LDkgKzY2MjgsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZTNET0VTKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0ZXh0YXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7
CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1l
YnVmZmVyVGV4dHVyZTNET0VTKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0
UGFja2VkLApAQCAtNjkwMCw4ICs2NjY4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTNE
T0VTKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRl
eHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
VGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4SW1hZ2UzRE9F
Uyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwKQEAgLTY5MzksOCArNjcwNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2Uz
RE9FUyhHTGVudW0gdGFyZ2V0LAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdl
M0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwKQEAgLTY5NjYsOCArNjczNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBh
cmFtZXRlcklpdk9FUyhHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqCiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUyhjb250ZXh0LCBzYW1wbGVy
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CkBAIC02OTkxLDggKzY3NTksOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKEdMdWludCBzYW1wbGVyLCBHTGVudW0g
cG5hbWUsIEdMdWludAogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNh
bXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2
T0VTKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKQEAgLTcwMTUsOSAr
Njc4Myw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySWl2T0VTKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtCiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NzAzNyw5ICs2ODA1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2T0VT
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXIKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewpAQCAtNzA2MSw5ICs2ODI5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1l
dGVySWl2T0VTKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW4KIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2T0VTKGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTcwODUsOSArNjg1Myw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxl
clBhcmFtZXRlckl1aXZPRVMoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZPRVMo
Y29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewpAQCAtNzEwOSw5ICs2ODc3LDkgQEAgdm9pZCBHTF9BUElFTlRS
WSBUZXhQYXJhbWV0ZXJJaXZPRVMoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGludCAqcGEKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcklp
dk9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03MTMzLDkgKzY5MDEsOSBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFRleFBhcmFtZXRlckl1aXZPRVMoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTHVpbnQgKgogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5
cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1l
dGVySXVpdk9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03MTU2LDcgKzY5MjQsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFRleEdlbmZ2T0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlR2V0VGV4R2VuZnZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzE3Nyw3ICs2OTQ1LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRUZXhHZW5pdk9FUyhHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRUZXhHZW5pdk9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MTk4LDcgKzY5NjYsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFRleEdlbnh2T0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBH
TGZpeGVkICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlR2V0VGV4R2VueHZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzIxOCw3ICs2OTg2LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBUZXhHZW5mT0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0IHBhcmFtKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVRleEdlbmZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03MjQxLDcgKzcwMDksNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFRleEdlbmZ2T0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVGV4R2VuZnZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzI2MSw3ICs3MDI5LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBUZXhHZW5pT0VTKEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVU
ZXhHZW5pT0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtNzI4Myw3ICs3MDUxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhHZW5p
dk9FUyhHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcykKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhH
ZW5pdk9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC03MzA0LDcgKzcwNzIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleEdlbnhP
RVMoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VueE9FUyhj
b250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
QEAgLTczMjcsNyArNzA5NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4R2VueHZPRVMoR0xlbnVt
IGNvb3JkLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW54dk9FUyhj
b250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CkBAIC03MzYwLDggKzcxMjgsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UzRE11bHRp
c2FtcGxlT0VTKEdMZW51bSB0YXJnZXQsCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdl
M0RNdWx0aXNhbXBsZU9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LApAQCAtNzM4NCw4ICs3MTUyLDggQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVmVydGV4
QXJyYXlPRVMoR0x1aW50IGFycmF5KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VmVydGV4QXJyYXlJRD4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFZlcnRleEFycmF5T0VTKGNvbnRl
eHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc0MDUsOCAr
NzE3Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlVmVydGV4QXJyYXlzT0VTKEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICphcnJheXMpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGNvbnN0IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAgICAgICAgICA9IEZyb21H
TDxjb25zdCBWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgPSBGcm9tR0w8
Y29uc3QgVmVydGV4QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzT0VTKGNv
bnRleHQsIG4sIGFycmF5c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03
NDI2LDggKzcxOTQsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblZlcnRleEFycmF5c09FUyhHTHNp
emVpIG4sIEdMdWludCAqYXJyYXlzKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VmVydGV4QXJyYXlJRCAqPihhcnJheXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuVmVydGV4QXJyYXlzT0VT
KGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC03NDQ2LDggKzcyMTQsOCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNWZXJ0ZXhBcnJheU9F
UyhHTHVpbnQgYXJyYXkpCiAgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQ+KGFycmF5KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzVmVy
dGV4QXJyYXlPRVMoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQpAQCAtNzQ4NSw4ICs3MjUzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclRl
eHR1cmVNdWx0aXZpZXdPVlIoR0xlbnVtIHRhcmdldCwKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0dXJlUGFja2VkLApAQCAtNzUxMywxMCArNzI4MSwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZIEFj
dGl2ZVNoYWRlclByb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBp
cGVsaQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBl
bGluZVBhY2tlZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVs
aW5lKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcm9ncmFt
UGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVBY3RpdmVTaGFkZXJQcm9ncmFtKGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBw
cm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAt
NzUzNSw3ICs3MzAzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBBY3RpdmVUZXh0dXJlQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0ZXh0dXJlKQogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlQWN0aXZlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzU1NCw4ICs3MzIyLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBBbHBoYUZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xl
bnVtIGZ1bmMsIEdMZmxvYXQgcmUKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQWxwaGFU
ZXN0RnVuYyBmdW5jUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEFscGhhVGVz
dEZ1bmM+KGZ1bmMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQWxwaGFU
ZXN0RnVuYyBmdW5jUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
QWxwaGFUZXN0RnVuYz4oZnVuYyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVBbHBoYUZ1bmMoY29udGV4dCwgZnVuY1BhY2tlZCwgcmVm
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc1NzUsOCArNzM0Myw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQWxwaGFGdW5jeENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gZnVuYywgR0xmaXhlZCByCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEFscGhhVGVz
dEZ1bmMgZnVuY1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxBbHBoYVRlc3RG
dW5jPihmdW5jKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEFscGhhVGVz
dEZ1bmMgZnVuY1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEFs
cGhhVGVzdEZ1bmM+KGZ1bmMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlQWxwaGFGdW5jeChjb250ZXh0LCBmdW5jUGFja2VkLCByZWYp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzU5NiwxMCArNzM2NCwxMCBAQCB2b2lk
IEdMX0FQSUVOVFJZIEF0dGFjaFNoYWRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbSwgR0x1aQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlQXR0YWNoU2hhZGVyKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNo
YWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc2
MTgsOSArNzM4Niw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmVnaW5RdWVyeUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsK
KyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmVnaW5RdWVyeShjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGlkUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc2NDAsOSAr
NzQwOCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmVnaW5RdWVyeUVYVENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEPihpZCk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAg
ICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC03NjYyLDkgKzc0
MzAsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJlZ2luVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHByaQogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBQcmltaXRpdmVNb2RlIHByaW1pdGl2ZU1vZGVQYWNrZWQgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4ocHJpbWl0aXZlTW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2Rl
IHByaW1pdGl2ZU1vZGVQYWNrZWQgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4ocHJpbWl0aXZlTW9k
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCwgcHJpbWl0aXZlTW9kZVBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc2ODksOSArNzQ1Nyw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgQmluZEF0dHJpYkxvY2F0aW9uQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZEF0dHJp
YkxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGluZGV4LCBuYW1lKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzcxMCw5ICs3NDc4LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBCaW5kQnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSB0YXJnZXQsIEdMdWludAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGlu
Zz4odGFyZ2V0KTsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAg
QnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kQnVmZmVyKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc3MzYsMTAg
Kzc1MDQsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyQmFzZUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGlu
Zz4odGFyZ2V0KTsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmlu
ZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVm
ZmVyQmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRC
dWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaW5kZXgsIGJ1ZmZlclBhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc3NjYsOSArNzUzNCw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQp
OwotICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBCdWZmZXJJRCBi
dWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmluZEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgaW5kZXgsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzaXplKSk7CkBAIC03Nzk2
LDkgKzc1NjQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlQmluZEZyYWdEYXRhTG9jYXRpb25FWFQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
Y29sb3IsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC03
ODIzLDggKzc1OTEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnRGF0YUxvY2F0aW9uSW5k
ZXhlZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kRnJh
Z0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY29sb3JOdW1iZXIsIGluZGV4
LCBuYW1lKSk7CkBAIC03ODQ2LDkgKzc2MTQsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFt
ZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFj
a2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCaW5kRnJhbWVidWZmZXIo
Y29udGV4dCwgdGFyZ2V0LCBmcmFtZWJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKQEAgLTc4NjcsOSArNzYzNSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
QmluZEZyYW1lYnVmZmVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0
YXJnZXQsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQgZnJhbWVi
dWZmZXJQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1
ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1lYnVmZmVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEPihmcmFtZWJ1ZmZlcik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRGcmFt
ZWJ1ZmZlck9FUyhjb250ZXh0LCB0YXJnZXQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzg5OSw5ICs3NjY3LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBCaW5kSW1hZ2VUZXh0dXJlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZEltYWdlVGV4dHVyZShjb250ZXh0LCB1bml0
LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgbGF5ZXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIsIGFjY2VzcywgZm9ybWF0KSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTc5MjEsOCArNzY4OSw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQmluZFByb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcGlwZWxpCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByb2dyYW1QaXBlbGlu
ZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJ
RD4ocGlwZWxpbmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUHJvZ3Jh
bVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJpbmRQcm9ncmFtUGlwZWxpbmUoY29udGV4
dCwgcGlwZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtNzk0Miw5
ICs3NzEwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kUmVuZGVyYnVmZmVyQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEcKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAgICAgICAgID0g
RnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgUmVuZGVyYnVm
ZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJi
dWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVCaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgcmVuZGVyYnVmZmVyUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtNzk2NSw5ICs3NzMz
LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kUmVuZGVyYnVmZmVyT0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJlbmRlcmJ1ZmZl
cklEIHJlbmRlcmJ1ZmZlclBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZmZXJJ
RD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEIHJlbmRlcmJ1ZmZlclBh
Y2tlZCA9IEZyb21HTDxSZW5kZXJidWZmZXJJRD4ocmVuZGVyYnVmZmVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZl
ck9FUyhjb250ZXh0LCB0YXJnZXQsIHJlbmRlcmJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTc5ODYsOCArNzc1NCw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQmluZFNhbXBsZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHVu
aXQsIEdMdWludCBzCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1w
bGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBs
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBs
ZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklE
PihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUJpbmRTYW1wbGVyKGNvbnRleHQsIHVuaXQsIHNhbXBsZXJQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODAwNywxMCArNzc3NSwxMCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRUZXh0dXJlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSB0YXJnZXQsIEdMdWludAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlw
ZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRU
ZXh0dXJlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTgwMjksOCArNzc5Nyw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgQmluZFRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSB0YXJnCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRyYW5zZm9ybUZl
ZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVk
YmFja0lEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUcmFuc2Zv
cm1GZWVkYmFja0lEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
cmFuc2Zvcm1GZWVkYmFja0lEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCwg
dGFyZ2V0LCBpZFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04MDQ5LDgg
Kzc4MTcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRWZXJ0ZXhBcnJheUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYXJyYXkpCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFZlcnRleEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxWZXJ0ZXhBcnJheUlEPihhcnJheSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoY29udGV4
dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODA2OSw4ICs3
ODM3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVmVydGV4QXJyYXlPRVNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGFycmF5KQogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmluZFZlcnRleEFycmF5T0VTKGNv
bnRleHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTgwOTYs
OCArNzg2NCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRleEJ1ZmZlckNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJJ
RCBidWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVySUQ+
KGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBCdWZmZXJJRCBi
dWZmZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJJRD4oYnVmZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZlcihjb250ZXh0LCBi
aW5kaW5naW5kZXgsIGJ1ZmZlclBhY2tlZCwgb2Zmc2V0LCBzdHJpZGUpKTsKQEAgLTgxMTgsNyAr
Nzg4Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRCYXJyaWVyQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgpCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEJh
cnJpZXIoY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTgxNDAsNyArNzkwOCw3IEBAIEJsZW5kQ29sb3JDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRDb2xvcihjb250ZXh0LCBy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04
MTYwLDcgKzc5MjgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25Db250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnRleHQsIG1vZGUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04MTgyLDggKzc5NTAsOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKGNvbnRleHQsIG1vZGVS
R0IsIG1vZGVBbHBoYSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAg
LTgyMDcsOCArNzk3NSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNlcGFyYXRl
aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRF
cXVhdGlvblNlcGFyYXRlaShjb250ZXh0LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTgyMTgsNiArNzk4Niw1NiBAQCB2
b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICB9CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNl
cGFyYXRlaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xCbGVuZEVxdWF0aW9u
U2VwYXJhdGVpRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUs
IEdMZW51bSBtb2RlUkdCID0gJXMsIEdMZW51bSBtb2RlQWxwaGEgPSAlcyIsIENJRChjb250ZXh0
KSwKKyAgICAgICAgICBidWYsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZEVxdWF0
aW9uTW9kZUVYVCwgbW9kZVJHQiksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlQWxwaGEpKTsKKworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUKGNvbnRleHQsIGJ1ZiwgbW9kZVJHQiwgbW9kZUFs
cGhhKSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlaShidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7
CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShCbGVuZEVxdWF0aW9uU2VwYXJhdGVp
RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpOworICAg
IH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bW9kZUFscGhhKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAldSwgR0xlbnVtIG1vZGVSR0Ig
PSAlcywgR0xlbnVtIG1vZGVBbHBoYSA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGJ1
ZiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2Rl
UkdCKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRFcXVhdGlv
bk1vZGVFWFQsIG1vZGVBbHBoYSkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWlPRVMoY29udGV4dCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpKTsKKyAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5ibGVuZEVx
dWF0aW9uU2VwYXJhdGVpKGJ1ZiwgbW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICAgICAgfQorICAg
ICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7CisgICAgfQorfQorCiB2b2lkIEdM
X0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBidWYsIEdMZW51bSBtb2RlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwpAQCAtODIyNyw3ICs4MDQ1LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBCbGVuZEVxdWF0aW9uaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVp
bnQgYnVmLCBHTGVudW0KICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVCbGVuZEVxdWF0aW9uaShjb250ZXh0LCBidWYsIG1vZGUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQpAQCAtODIzOCw2ICs4MDU2LDQ2IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxl
bmRFcXVhdGlvbmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xl
bnVtCiAgICAgfQogfQogCit2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pRVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKQoreworICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOworICAg
IEVWRU5UKCJnbEJsZW5kRXF1YXRpb25pRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9
ICV1LCBHTGVudW0gbW9kZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGJ1ZiwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlKSk7CisK
KyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pRVhUKGNvbnRleHQsIGJ1ZiwgbW9k
ZSkpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJsZW5kRXF1YXRpb25pKGJ1ZiwgbW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShCbGVuZEVxdWF0aW9uaUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1Ziwg
bW9kZSk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pT0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKQorewor
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwor
ICAgIEVWRU5UKCJnbEJsZW5kRXF1YXRpb25pT0VTIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1
ZiA9ICV1LCBHTGVudW0gbW9kZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGJ1Ziwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kRXF1YXRpb25Nb2RlRVhULCBtb2RlKSk7
CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUJsZW5kRXF1YXRpb25pT0VTKGNvbnRleHQsIGJ1Ziwg
bW9kZSkpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRleHQtPmJsZW5kRXF1YXRpb25pKGJ1ZiwgbW9kZSk7CisgICAgICAgIH0KKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShCbGVuZEVxdWF0aW9uaU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1
ZiwgbW9kZSk7CisgICAgfQorfQorCiB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
CkBAIC04MjQ4LDcgKzgxMDYsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5jKGNvbnRleHQs
IHNmYWN0b3IsIGRmYWN0b3IpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODI3Nyw3
ICs4MTM1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNTZXBhcmF0ZUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlKGNvbnRleHQsIHNmYWN0b3JSR0IsIGRmYWN0
b3JSR0IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNmYWN0b3JBbHBoYSwgZGZhY3RvckFscGhhKSk7CkBAIC04MzA5
LDcgKzgxNjcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlaUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGVpKGNvbnRleHQs
IGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkpOwpAQCAtODMyMiwxNyAr
ODE4MCw4MSBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlaUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1
bmNpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMs
IEdMZW51bSBkc3QpCit2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNy
Y0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRzdEFscGhhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEJsZW5kRnVuY2kiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmMgPSAlcywgR0xlbnVtIGRzdCA9ICVz
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGJ1ZiwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkJsZW5kaW5nRmFjdG9yLCBzcmMpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgZHN0KSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7
CisgICAgRVZFTlQoImdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUIiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmNSR0IgPSAlcywgR0xlbnVtIGRzdFJH
QiA9ICVzLCBHTGVudW0gc3JjQWxwaGEgIgorICAgICAgICAgICI9ICVzLCBHTGVudW0gZHN0QWxw
aGEgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwgc3JjUkdCKSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdFJHQiksCisgICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBzcmNBbHBoYSksCisgICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBkc3RBbHBo
YSkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFy
YXRlaUVYVChjb250ZXh0LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
KTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZWkoYnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRz
dEFscGhhKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRnVuY1NlcGFy
YXRlaUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0Fs
cGhhLAorICAgICAgICAgICAgICAgICAgICAgIGRzdEFscGhhKTsKKyAgICB9Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgQmxlbmRGdW5jU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHNyY1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEp
Cit7CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7CisgICAgRVZFTlQoImdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmNSR0IgPSAlcywgR0xlbnVtIGRz
dFJHQiA9ICVzLCBHTGVudW0gc3JjQWxwaGEgIgorICAgICAgICAgICI9ICVzLCBHTGVudW0gZHN0
QWxwaGEgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwgc3JjUkdCKSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdFJHQiksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBzcmNBbHBoYSksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBkc3RB
bHBoYSkpOworCisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUJsZW5kRnVuY1Nl
cGFyYXRlaU9FUyhjb250ZXh0LCBidWYsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7CisgICAgICAgICAgICBj
b250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZWkoYnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEs
IGRzdEFscGhhKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRnVuY1Nl
cGFyYXRlaU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNy
Y0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgIGRzdEFscGhhKTsKKyAgICB9Cit9CisKK3Zv
aWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQoreworICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOworICAgIEVWRU5UKCJnbEJsZW5k
RnVuY2kiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVmID0gJXUsIEdMZW51bSBzcmMgPSAlcywg
R0xlbnVtIGRzdCA9ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGJ1ZiwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9yLCBzcmMpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3RvciwgZHN0KSk7CisKKyAgICBpZiAo
Y29udGV4dCkKKyAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVCbGVuZEZ1bmNpKGNvbnRl
eHQsIGJ1Ziwgc3JjLCBkc3QpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODM0Myw2
ICs4MjY1LDQ4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jaUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgYnVmLCBHTGVudW0gc3JjCiAgICAgfQogfQogCit2b2lkIEdM
X0FQSUVOVFJZIEJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1
aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xCbGVuZEZ1
bmNpRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1ZiA9ICV1LCBHTGVudW0gc3JjID0gJXMs
IEdMZW51bSBkc3QgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBidWYsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpCbGVuZGluZ0ZhY3Rvciwgc3JjKSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIGRzdCkpOworCisgICAgaWYg
KGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVCbGVuZEZ1bmNpRVhUKGNvbnRleHQsIGJ1Ziwgc3JjLCBkc3QpKTsKKyAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5i
bGVuZEZ1bmNpKGJ1Ziwgc3JjLCBkc3QpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoQmxlbmRGdW5jaUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJ1Ziwgc3JjLCBkc3QpOwor
ICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCit7Cisg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Cisg
ICAgRVZFTlQoImdsQmxlbmRGdW5jaU9FUyIsICJjb250ZXh0ID0gJWQsIEdMdWludCBidWYgPSAl
dSwgR0xlbnVtIHNyYyA9ICVzLCBHTGVudW0gZHN0ID0gJXMiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgYnVmLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QmxlbmRpbmdGYWN0b3IsIHNy
YyksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJsZW5kaW5nRmFjdG9y
LCBkc3QpKTsKKworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQmxlbmRGdW5jaU9FUyhjb250ZXh0LCBi
dWYsIHNyYywgZHN0KSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGV4dC0+YmxlbmRGdW5jaShidWYsIHNyYywgZHN0KTsKKyAgICAgICAgfQor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEJsZW5kRnVuY2lPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBidWYsIHNyYywgZHN0KTsKKyAgICB9Cit9CisKIHZvaWQgR0xfQVBJRU5UUlkgQmxpdEZyYW1l
YnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kwLApAQCAtODM2Nyw4ICs4MzMx
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBCbGl0RnJhbWVidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlcihjb250ZXh0LCBz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywg
ZmlsdGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg0MDUsOCArODM2OSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgQmxpdEZyYW1lYnVmZmVyQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKGNvbnRl
eHQsIHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFkwLCBkc3RYMSwgZHN0
WTEsIG1hc2ssIGZpbHRlcikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04NDM2LDEw
ICs4NDAwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQnVmZmVyRGF0YUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5n
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4o
dGFyZ2V0KTsKLSAgICAgICAgQnVmZmVyVXNhZ2UgdXNhZ2VQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlclVzYWdlPih1c2FnZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJVc2FnZT4odXNhZ2UpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVCdWZm
ZXJEYXRhKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2l6ZSwgZGF0YSwgdXNhZ2VQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NDY1LDkgKzg0MjksOSBA
QCB2b2lkIEdMX0FQSUVOVFJZIEJ1ZmZlclN0b3JhZ2VNZW1FWFRDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOwotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgTWVt
b3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUJ1ZmZlclN0b3JhZ2VN
ZW1FWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzaXplLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkp
OwpAQCAtODQ5Nyw5ICs4NDYxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBCdWZmZXJTdWJEYXRhQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxC
dWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlQnVmZmVyU3ViRGF0YShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgc2l6ZSwgZGF0
YSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg1MTksNyArODQ4
Myw3IEBAIEdMZW51bSBHTF9BUElFTlRSWSBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250ZXh0LCB0
YXJnZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODU0OSw3ICs4NTEzLDcgQEAg
R0xlbnVtIEdMX0FQSUVOVFJZIENoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnUKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzT0VTKGNvbnRleHQsIHRhcmdl
dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04NTc4LDcgKzg1NDIsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIENsZWFyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMYml0Zmll
bGQgbWFzaykKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsZWFyKGNvbnRl
eHQsIG1hc2spKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04NjAz
LDggKzg1NjcsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVyZmlDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNsZWFyQnVmZmVyZmkoY29udGV4
dCwgYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKQEAgLTg2MjgsOCArODU5Miw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgQ2xlYXJCdWZmZXJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlQ2xlYXJCdWZmZXJmdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVl
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODY1Myw4ICs4NjE3
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckJ1ZmZlcml2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KGNvbnRleHQsIGJ1ZmZl
ciwgZHJhd2J1ZmZlciwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7CkBAIC04Njc4LDggKzg2NDIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyQnVmZmVydWl2
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDbGVhckJ1
ZmZlcnVpdihjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODcwMSw3ICs4NjY1LDcgQEAgQ2xlYXJDb2xv
ckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVl
biwgR0xmbG9hdCBibHUKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVDbGVhckNvbG9yKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg3MjQsNyArODY4OCw3IEBAIENsZWFyQ29sb3J4
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4ZWQgcmVkLCBHTGZpeGVkIGdyZWVu
LCBHTGZpeGVkIGJsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQ2xlYXJDb2xvcngoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODc0Myw3ICs4NzA3LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBDbGVhckRlcHRoZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IGQp
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGVhckRlcHRoZihjb250ZXh0
LCBkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpAQCAtODc2MSw3ICs4
NzI1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckRlcHRoeENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGZpeGVkIGRlcHRoKQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlQ2xlYXJEZXB0aHgoY29udGV4dCwgZGVwdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7CkBAIC04Nzc5LDcgKzg3NDMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENs
ZWFyU3RlbmNpbENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBzKQogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xlYXJTdGVuY2lsKGNvbnRleHQsIHMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04Nzk4LDcgKzg3NjIsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIENsaWVudEFjdGl2ZVRleHR1cmVDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIHRleHR1cgogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUNsaWVudEFjdGl2ZVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC04ODI2LDcgKzg3OTAsNyBAQCBHTGVudW0g
R0xfQVBJRU5UUlkgQ2xpZW50V2FpdFN5bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQog
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDbGllbnRX
YWl0U3luYyhjb250ZXh0LCBzeW5jLCBmbGFncywgdGltZW91dCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCkBAIC04ODU1LDcgKzg4MTksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsaXBQbGFu
ZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHAsIGNvbnN0IEdMZmxvYQog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ2xpcFBsYW5lZihjb250ZXh0LCBw
LCBlcW4pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC04ODc1LDcg
Kzg4MzksNyBAQCB2b2lkIEdMX0FQSUVOVFJZIENsaXBQbGFuZXhDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xlbnVtIHBsYW5lLCBjb25zdCBHTAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNsaXBQbGFuZXgoY29udGV4dCwgcGxhbmUsIGVx
dWF0aW9uKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg4OTgsNyArODg2Miw3IEBA
IENvbG9yNGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCByZWQsIEdMZmxv
YXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVDb2xvcjRmKGNvbnRleHQsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTg5MjEsNyArODg4NSw3IEBAIENvbG9y
NHViQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWJ5dGUgcmVkLCBHTHVieXRlIGdy
ZWVuLCBHTHVieXRlIGJsdWUsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlQ29sb3I0dWIoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODk0NCw3ICs4OTA4LDcgQEAgQ29sb3I0eENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIHJlZCwgR0xmaXhlZCBncmVlbiwg
R0xmaXhlZCBibHVlLAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUNvbG9yNHgoY29udGV4dCwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODk3MSw3ICs4OTM1LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBDb2xvck1hc2tDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb2xvck1hc2soY29udGV4dCwgcmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtODk5
OSw3ICs4OTYzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvck1hc2tpQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlQ29sb3JNYXNraShjb250ZXh0LCBpbmRleCwgciwgZywgYiwgYSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCkBAIC05MDEwLDYgKzg5NzQsNjIgQEAgdm9pZCBHTF9BUElFTlRS
WSBDb2xvck1hc2tpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgfQogfQogCit2
b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGEpCit7CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7CisgICAgRVZFTlQoImdsQ29sb3JNYXNraUVYVCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMYm9vbGVhbiByID0gJXMsIEdMYm9vbGVhbiBnID0g
JXMsIEdMYm9vbGVhbiBiID0gJXMsICIKKyAgICAgICAgICAiR0xib29sZWFuIGEgPSAlcyIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgR0xib29sZWFuVG9TdHJpbmcociksIEdMYm9v
bGVhblRvU3RyaW5nKGcpLCBHTGJvb2xlYW5Ub1N0cmluZyhiKSwKKyAgICAgICAgICBHTGJvb2xl
YW5Ub1N0cmluZyhhKSk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yTWFza2lFWFQoY29u
dGV4dCwgaW5kZXgsIHIsIGcsIGIsIGEpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5jb2xvck1hc2tpKGluZGV4LCByLCBnLCBiLCBh
KTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKENvbG9yTWFza2lFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBpbmRleCwgciwgZywgYiwgYSk7CisgICAgfQorfQorCit2b2lkIEdM
X0FQSUVOVFJZIENvbG9yTWFza2lPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGEpCit7
CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
CisgICAgRVZFTlQoImdsQ29sb3JNYXNraU9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IGluZGV4ID0gJXUsIEdMYm9vbGVhbiByID0gJXMsIEdMYm9vbGVhbiBnID0gJXMsIEdM
Ym9vbGVhbiBiID0gJXMsICIKKyAgICAgICAgICAiR0xib29sZWFuIGEgPSAlcyIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgR0xib29sZWFuVG9TdHJpbmcociksIEdMYm9vbGVhblRv
U3RyaW5nKGcpLCBHTGJvb2xlYW5Ub1N0cmluZyhiKSwKKyAgICAgICAgICBHTGJvb2xlYW5Ub1N0
cmluZyhhKSk7CisKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbG9yTWFza2lPRVMoY29udGV4dCwg
aW5kZXgsIHIsIGcsIGIsIGEpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5jb2xvck1hc2tpKGluZGV4LCByLCBnLCBiLCBhKTsKKyAg
ICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKENvbG9yTWFza2lPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBpbmRleCwgciwgZywgYiwgYSk7CisgICAgfQorfQorCiB2b2lkIEdMX0FQSUVO
VFJZIENvbG9yUG9pbnRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApAQCAtOTAyNiw5ICs5
MDQ2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBDb2xvclBvaW50ZXJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVmVydGV4QXR0cmliVHlw
ZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+
KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvbG9yUG9pbnRl
cihjb250ZXh0LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7CkBAIC05MDQ2LDggKzkwNjYsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIENvbXBpbGVTaGFkZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1
aW50IHNoYWRlcikKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
c2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoY29udGV4dCwgc2hhZGVyUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTkwODAsOCArOTEwMCw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleEltYWdlMkRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdl
dFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0
Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UyRChjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC05MTE5LDggKzkx
MzksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhJbWFnZTNEQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdl
M0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApA
QCAtOTE1OCw4ICs5MTc4LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4SW1hZ2Uz
RE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNv
bXByZXNzZWRUZXhJbWFnZTNET0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwKQEAgLTkxOTcsOCArOTIxNyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q29tcHJlc3NlZFRleFN1YkltYWdlMkRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAgLTkyMzgsOSArOTI1OCw5
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRleFN1YkltYWdlM0RDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRh
cmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJn
ZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb21wcmVz
c2VkVGV4U3ViSW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGlt
YWdlU2l6ZSwgZGF0YSkpOwpAQCAtOTI3OSw5ICs5Mjk5LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBD
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNET0VT
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEp
KTsKQEAgLTkzMTQsMTAgKzkzMzQsMTAgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5QnVmZmVyU3Vi
RGF0YUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBCdWZmZXJCaW5kaW5nIHJlYWRUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgPSBG
cm9tR0w8QnVmZmVyQmluZGluZz4ocmVhZFRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcg
d3JpdGVUYXJnZXRQYWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih3
cml0ZVRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICBCdWZmZXJCaW5kaW5nIHJlYWRUYXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPihyZWFkVGFyZ2V0KTsK
KyAgICAgICAgQnVmZmVyQmluZGluZyB3cml0ZVRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4od3JpdGVUYXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5QnVmZmVyU3ViRGF0
YShjb250ZXh0LCByZWFkVGFyZ2V0UGFja2VkLCB3cml0ZVRhcmdldFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRPZmZzZXQs
IHdyaXRlT2Zmc2V0LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTkzNDks
MTQ2MDYgKzkzNjksMTQxNDYgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5SW1hZ2VTdWJEYXRhQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7CiAgICAgRVZFTlQoImdsQ29weUltYWdlU3Vi
RGF0YSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNyY05hbWUgPSAldSwgR0xl
bnVtIHNyY1RhcmdldCA9ICVzLCBHTGludCBzcmNMZXZlbCA9ICVkLCBHTGludCAiCi0gICAgICAg
ICAgInNyY1ggPSAlZCwgR0xpbnQgc3JjWSA9ICVkLCBHTGludCBzcmNaID0gJWQsIEdMdWludCBk
c3ROYW1lID0gJXUsIEdMZW51bSBkc3RUYXJnZXQgPSAiCi0gICAgICAgICAgIiVzLCBHTGludCBk
c3RMZXZlbCA9ICVkLCBHTGludCBkc3RYID0gJWQsIEdMaW50IGRzdFkgPSAlZCwgR0xpbnQgZHN0
WiA9ICVkLCBHTHNpemVpICIKLSAgICAgICAgICAic3JjV2lkdGggPSAlZCwgR0xzaXplaSBzcmNI
ZWlnaHQgPSAlZCwgR0xzaXplaSBzcmNEZXB0aCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHNyY05hbWUsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpDb3B5QnVmZmVyU3ViRGF0
YVRhcmdldCwgc3JjVGFyZ2V0KSwKLSAgICAgICAgICBzcmNMZXZlbCwgc3JjWCwgc3JjWSwgc3Jj
WiwgZHN0TmFtZSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q29weUJ1
ZmZlclN1YkRhdGFUYXJnZXQsIGRzdFRhcmdldCksIGRzdExldmVsLCBkc3RYLCBkc3RZLAotICAg
ICAgICAgIGRzdFosIHNyY1dpZHRoLCBzcmNIZWlnaHQsIHNyY0RlcHRoKTsKLQotICAgIGlmIChj
b250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlJbWFn
ZVN1YkRhdGEoY29udGV4dCwgc3JjTmFtZSwgc3JjVGFyZ2V0LCBzcmNMZXZlbCwgc3JjWCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjWSwg
c3JjWiwgZHN0TmFtZSwgZHN0VGFyZ2V0LCBkc3RMZXZlbCwgZHN0WCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WSwgZHN0Wiwgc3JjV2lk
dGgsIHNyY0hlaWdodCwgc3JjRGVwdGgpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3B5SW1hZ2VTdWJEYXRhKHNyY05hbWUsIHNy
Y1RhcmdldCwgc3JjTGV2ZWwsIHNyY1gsIHNyY1ksIHNyY1osIGRzdE5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFRhcmdldCwgZHN0TGV2ZWwsIGRzdFgsIGRz
dFksIGRzdFosIHNyY1dpZHRoLCBzcmNIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNyY0RlcHRoKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KENvcHlJbWFnZVN1YkRhdGEsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzcmNOYW1lLCBzcmNUYXJn
ZXQsIHNyY0xldmVsLCBzcmNYLAotICAgICAgICAgICAgICAgICAgICAgIHNyY1ksIHNyY1osIGRz
dE5hbWUsIGRzdFRhcmdldCwgZHN0TGV2ZWwsIGRzdFgsIGRzdFksIGRzdFosIHNyY1dpZHRoLAot
ICAgICAgICAgICAgICAgICAgICAgIHNyY0hlaWdodCwgc3JjRGVwdGgpOwotICAgIH0KLX0KLQot
dm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4SW1hZ2UyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgYm9yZGVyKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbENvcHlUZXhJbWFnZTJEIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50IGxldmVs
ID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCBHTGludCB4ICIKLSAgICAgICAgICAi
PSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0g
JWQsIEdMaW50IGJvcmRlciA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFs
Zm9ybWF0KSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKLQotICAgIGlmIChjb250ZXh0
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVDb3B5VGV4SW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcikpOwotICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvcHlUZXhJ
bWFnZTJEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyKTsKLSAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKENvcHlUZXhJbWFnZTJELCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKLSAgICB9Ci19Ci0K
LXZvaWQgR0xfQVBJRU5UUlkgQ29weVRleFN1YkltYWdlMkRDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQotewotICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbENvcHlUZXhTdWJJbWFnZTJEIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQg
eW9mZnNldCA9ICIKLSAgICAgICAgICAiJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBH
THNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICAgIHgsIHksIHdpZHRoLCBoZWln
aHQpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTJE
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShDb3B5VGV4U3ViSW1hZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgeW9mZnNl
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVOVFJZIENv
cHlUZXhTdWJJbWFnZTNEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB6b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xDb3B5VGV4U3Vi
SW1hZ2UzRCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
TGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCi0g
ICAgICAgICAgIiVkLCBHTGludCB6b2Zmc2V0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9
ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ICIKLSAgICAgICAgICAiPSAl
ZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCi0gICAgICAg
ICAgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlQ29weVRleFN1YkltYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZl
bCwgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jb3B5
VGV4U3ViSW1hZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB4LCB5LCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3B5VGV4U3ViSW1h
Z2UzRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhl
aWdodCk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTNET0VT
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB6b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xDb3B5VGV4U3ViSW1hZ2UzRE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50
IHlvZmZzZXQgPSAiCi0gICAgICAgICAgIiVkLCBHTGludCB6b2Zmc2V0ID0gJWQsIEdMaW50IHgg
PSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ICIK
LSAgICAgICAgICAiPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwKLSAgICAgICAgICB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIGlm
IChjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRE9FUyhjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lk
dGgsIGhlaWdodCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKENvcHlUZXhTdWJJbWFnZTNET0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBsZXZlbCwgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB6
b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5U
UlkgQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgKm1lbW9yeU9iamVjdHMpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ3JlYXRlTWVtb3J5T2Jq
ZWN0c0VYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWlu
dCAqbWVtb3J5T2JqZWN0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAg
ICAgICAgIG4sICh1aW50cHRyX3QpbWVtb3J5T2JqZWN0cyk7Ci0KLSAgICBpZiAoY29udGV4dCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHNQYWNrZWQgICAgICAgICAg
ID0gRnJvbUdMPE1lbW9yeU9iamVjdElEICo+KG1lbW9yeU9iamVjdHMpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNyZWF0ZU1lbW9yeU9iamVjdHNFWFQoY29udGV4dCwg
biwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNyZWF0ZU1lbW9yeU9iamVjdHMobiwgbWVtb3J5
T2JqZWN0c1BhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDcmVhdGVN
ZW1vcnlPYmplY3RzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1Bh
Y2tlZCk7Ci0gICAgfQotfQotCi1HTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRlUHJvZ3JhbUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbENyZWF0ZVByb2dyYW0i
LCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKLQotICAgIEdMdWludCByZXR1cm5WYWx1
ZTsKLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUNyZWF0ZVByb2dyYW0oY29udGV4dCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Y3JlYXRlUHJvZ3Jh
bSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6Q3JlYXRlUHJvZ3Jh
bSwgR0x1aW50PigpOwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQ3JlYXRlUHJv
Z3JhbSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6Q3JlYXRlUHJvZ3JhbSwgR0x1aW50PigpOwotICAgIH0KLSAgICByZXR1cm4gcmV0
dXJuVmFsdWU7Ci19Ci0KLUdMdWludCBHTF9BUElFTlRSWSBDcmVhdGVTaGFkZXJDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHR5cGUpCi17Ci0gICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ3JlYXRl
U2hhZGVyIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcyIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2hhZGVyVHlwZSwgdHlwZSkp
OwotCi0gICAgR0x1aW50IHJldHVyblZhbHVlOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBTaGFkZXJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
cmVhdGVTaGFkZXIoY29udGV4dCwgdHlwZVBhY2tlZCkpOwotICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Y3JlYXRl
U2hhZGVyKHR5cGVQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6Q3JlYXRlU2hhZGVyLCBHTHVpbnQ+KCk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShDcmVhdGVTaGFkZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0eXBlUGFja2VkLCByZXR1
cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVNoYWRlciwgR0x1aW50Pigp
OwotICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci19Ci0KLUdMdWludCBHTF9BUElFTlRS
WSBDcmVhdGVTaGFkZXJQcm9ncmFtdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqc3RyaW5ncykKLXsKLSAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xDcmVhdGVTaGFkZXJQcm9ncmFtdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHR5cGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGNoYXIgKmNvbnN0KnN0cmlu
Z3MgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTaGFkZXJUeXBlLCB0eXBlKSwgY291
bnQsICh1aW50cHRyX3Qpc3RyaW5ncyk7Ci0KLSAgICBHTHVpbnQgcmV0dXJuVmFsdWU7Ci0gICAg
aWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVDcmVhdGVTaGFkZXJQcm9ncmFtdihjb250ZXh0LCB0eXBl
UGFja2VkLCBjb3VudCwgc3RyaW5ncykpOwotICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Y3JlYXRlU2hhZGVyUHJv
Z3JhbXYodHlwZVBhY2tlZCwgY291bnQsIHN0cmluZ3MpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJu
VmFsdWU8RW50cnlQb2ludDo6Q3JlYXRlU2hhZGVyUHJvZ3JhbXYsIEdMdWludD4oKTsKLSAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKENyZWF0ZVNoYWRlclByb2dyYW12LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdHlwZVBhY2tlZCwgY291bnQsIHN0cmluZ3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpDcmVhdGVTaGFk
ZXJQcm9ncmFtdiwgR0x1aW50PigpOwotICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7Ci19
Ci0KLXZvaWQgR0xfQVBJRU5UUlkgQ3VsbEZhY2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIG1vZGUpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ3VsbEZhY2UiLCAiY29udGV4dCA9ICVk
LCBHTGVudW0gbW9kZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpDdWxsRmFjZU1vZGUsIG1vZGUpKTsKLQotICAgIGlmIChjb250ZXh0
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBDdWxsRmFjZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8Q3VsbEZhY2VNb2RlPihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUN1bGxGYWNlKGNvbnRleHQsIG1vZGVQYWNrZWQpKTsKLSAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5jdWxsRmFjZSht
b2RlUGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEN1bGxGYWNlLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQ
SUVOVFJZIEN1cnJlbnRQYWxldHRlTWF0cml4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBtYXRyaXhwYWxldHRlaW5kZXgpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsQ3VycmVudFBh
bGV0dGVNYXRyaXhPRVMiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWF0cml4cGFsZXR0ZWluZGV4
ID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgbWF0cml4cGFsZXR0ZWluZGV4KTsKLQot
ICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUN1cnJlbnRQYWxldHRlTWF0cml4T0VTKGNvbnRleHQsIG1hdHJpeHBhbGV0dGVpbmRleCkpOwot
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmN1cnJlbnRQYWxldHRlTWF0cml4KG1hdHJpeHBhbGV0dGVpbmRleCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUywgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIG1hdHJpeHBhbGV0dGVpbmRleCk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVO
VFJZIERlYnVnTWVzc2FnZUNhbGxiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQ
Uk9DIGNhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVidWdNZXNz
YWdlQ2FsbGJhY2siLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMREVCVUdQUk9DIGNhbGxi
YWNrID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgY29uc3Qgdm9pZCAqdXNlclBhcmFt
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJf
dCljYWxsYmFjaywgKHVpbnRwdHJfdCl1c2VyUGFyYW0pOwotCi0gICAgaWYgKGNvbnRleHQpCi0g
ICAgewotICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJh
Y2soY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpOwotICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUNhbGxiYWNr
KGNhbGxiYWNrLCB1c2VyUGFyYW0pOwotICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
RGVidWdNZXNzYWdlQ2FsbGJhY2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjYWxsYmFjaywgdXNl
clBhcmFtKTsKLSAgICB9Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ2FsbGJh
Y2tLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xERUJVR1BST0NLSFIgY2FsbGJhY2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnVzZXJQYXJhbSkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFj
a0tIUiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xERUJVR1BST0NLSFIgY2FsbGJhY2sg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBjb25zdCB2b2lkICp1c2VyUGFyYW0gPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KWNh
bGxiYWNrLCAodWludHB0cl90KXVzZXJQYXJhbSk7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFja0tI
Uihjb250ZXh0LCBjYWxsYmFjaywgdXNlclBhcmFtKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVidWdNZXNzYWdlQ2FsbGJhY2so
Y2FsbGJhY2ssIHVzZXJQYXJhbSk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShE
ZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNhbGxiYWNrLCB1
c2VyUGFyYW0pOwotICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDb250
cm9sQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gZW5hYmxlZCkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWJ1Z01l
c3NhZ2VDb250cm9sIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0g
JXMsIEdMZW51bSB0eXBlID0gJXMsIEdMZW51bSBzZXZlcml0eSA9ICVzLCBHTHNpemVpIGNvdW50
ICIKLSAgICAgICAgICAiPSAlZCwgY29uc3QgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIg
IiwgR0xib29sZWFuIGVuYWJsZWQgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnVHlwZSwgdHlwZSksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgY291
bnQsICh1aW50cHRyX3QpaWRzLAotICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGVuYWJsZWQp
KTsKLQotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbChjb250
ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKSk7Ci0gICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVi
dWdNZXNzYWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFi
bGVkKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNvbnRy
b2wsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwg
aWRzLAotICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQpOwotICAgIH0KLX0KLQotdm9pZCBH
TF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDb250cm9sS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gZW5hYmxlZCkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDb250
cm9sS0hSIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdM
ZW51bSB0eXBlID0gJXMsIEdMZW51bSBzZXZlcml0eSA9ICVzLCBHTHNpemVpIGNvdW50ICIKLSAg
ICAgICAgICAiPSAlZCwgY29uc3QgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xi
b29sZWFuIGVuYWJsZWQgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnVHlwZSwgdHlwZSksCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgY291bnQsICh1
aW50cHRyX3QpaWRzLAotICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGVuYWJsZWQpKTsKLQot
ICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbEtIUihjb250ZXh0
LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKSk7Ci0gICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVidWdN
ZXNzYWdlQ29udHJvbChzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVk
KTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNvbnRyb2xL
SFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICBpZHMsIGVuYWJsZWQpOwotICAgIH0KLX0KLQotdm9pZCBH
TF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VJbnNlcnRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpCi17Ci0gICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsRGVidWdNZXNzYWdlSW5zZXJ0IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gc291cmNlID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMdWludCBpZCA9ICV1LCBHTGVudW0g
c2V2ZXJpdHkgPSAiCi0gICAgICAgICAgIiVzLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBH
TGNoYXIgKmJ1ZiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NvdXJjZSwgc291cmNlKSwKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdUeXBlLCB0eXBlKSwgaWQsCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU2V2ZXJpdHksIHNldmVy
aXR5KSwgbGVuZ3RoLCAodWludHB0cl90KWJ1Zik7Ci0KLSAgICBpZiAoY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZURlYnVnTWVzc2FnZUluc2VydChjb250ZXh0LCBzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0
eSwgbGVuZ3RoLCBidWYpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VJbnNlcnQoc291cmNlLCB0eXBlLCBpZCwg
c2V2ZXJpdHksIGxlbmd0aCwgYnVmKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERlYnVnTWVzc2FnZUluc2VydCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNvdXJjZSwgdHlwZSwg
aWQsIHNldmVyaXR5LCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgYnVmKTsKLSAgICB9
Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlSW5zZXJ0S0hSQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqYnVmKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlYnVnTWVzc2FnZUluc2Vy
dEtIUiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVu
dW0gdHlwZSA9ICVzLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHNldmVyaXR5ID0gIgotICAgICAg
ICAgICIlcywgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICpidWYgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkRlYnVnVHlwZSwgdHlwZSksIGlkLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5LCBzZXZlcml0eSksIGxlbmd0aCwgKHVpbnRw
dHJfdClidWYpOworICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzcmNOYW1lID0gJXUs
IEdMZW51bSBzcmNUYXJnZXQgPSAlcywgR0xpbnQgc3JjTGV2ZWwgPSAlZCwgR0xpbnQgIgorICAg
ICAgICAgICJzcmNYID0gJWQsIEdMaW50IHNyY1kgPSAlZCwgR0xpbnQgc3JjWiA9ICVkLCBHTHVp
bnQgZHN0TmFtZSA9ICV1LCBHTGVudW0gZHN0VGFyZ2V0ID0gIgorICAgICAgICAgICIlcywgR0xp
bnQgZHN0TGV2ZWwgPSAlZCwgR0xpbnQgZHN0WCA9ICVkLCBHTGludCBkc3RZID0gJWQsIEdMaW50
IGRzdFogPSAlZCwgR0xzaXplaSAiCisgICAgICAgICAgInNyY1dpZHRoID0gJWQsIEdMc2l6ZWkg
c3JjSGVpZ2h0ID0gJWQsIEdMc2l6ZWkgc3JjRGVwdGggPSAlZCIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBzcmNOYW1lLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q29weUJ1ZmZlclN1
YkRhdGFUYXJnZXQsIHNyY1RhcmdldCksCisgICAgICAgICAgc3JjTGV2ZWwsIHNyY1gsIHNyY1ks
IHNyY1osIGRzdE5hbWUsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkNv
cHlCdWZmZXJTdWJEYXRhVGFyZ2V0LCBkc3RUYXJnZXQpLCBkc3RMZXZlbCwgZHN0WCwgZHN0WSwK
KyAgICAgICAgICBkc3RaLCBzcmNXaWR0aCwgc3JjSGVpZ2h0LCBzcmNEZXB0aCk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihjb250ZXh0LCBzb3Vy
Y2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLCBidWYpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weUltYWdlU3ViRGF0YShjb250
ZXh0LCBzcmNOYW1lLCBzcmNUYXJnZXQsIHNyY0xldmVsLCBzcmNYLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNZLCBzcmNaLCBkc3ROYW1l
LCBkc3RUYXJnZXQsIGRzdExldmVsLCBkc3RYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RZLCBkc3RaLCBzcmNXaWR0aCwgc3JjSGVpZ2h0
LCBzcmNEZXB0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUluc2VydChzb3VyY2UsIHR5cGUsIGlkLCBzZXZl
cml0eSwgbGVuZ3RoLCBidWYpOworICAgICAgICAgICAgY29udGV4dC0+Y29weUltYWdlU3ViRGF0
YShzcmNOYW1lLCBzcmNUYXJnZXQsIHNyY0xldmVsLCBzcmNYLCBzcmNZLCBzcmNaLCBkc3ROYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RUYXJnZXQsIGRzdExl
dmVsLCBkc3RYLCBkc3RZLCBkc3RaLCBzcmNXaWR0aCwgc3JjSGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNEZXB0aCk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGgsIGJ1Zik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQ29weUltYWdlU3ViRGF0YSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHNyY05hbWUsIHNyY1RhcmdldCwgc3JjTGV2ZWwsIHNyY1gsCisgICAg
ICAgICAgICAgICAgICAgICAgc3JjWSwgc3JjWiwgZHN0TmFtZSwgZHN0VGFyZ2V0LCBkc3RMZXZl
bCwgZHN0WCwgZHN0WSwgZHN0Wiwgc3JjV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgc3Jj
SGVpZ2h0LCBzcmNEZXB0aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUJ1
ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBjb25zdCBHTHVp
bnQgKmJ1ZmZlcnMpCit2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhJbWFnZTJEQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVs
ZXRlQnVmZmVycyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNv
bnN0IEdMdWludCAqYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAot
ICAgICAgICAgIG4sICh1aW50cHRyX3QpYnVmZmVycyk7CisgICAgRVZFTlQoImdsQ29weVRleElt
YWdlMkQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xp
bnQgbGV2ZWwgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdMaW50IHggIgorICAg
ICAgICAgICI9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBo
ZWlnaHQgPSAlZCwgR0xpbnQgYm9yZGVyID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVs
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwg
aW50ZXJuYWxmb3JtYXQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVCdWZmZXJzKGNv
bnRleHQsIG4sIGJ1ZmZlcnNQYWNrZWQpKTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4o
dGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlQ29weVRleEltYWdlMkQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVCdWZmZXJzKG4sIGJ1
ZmZlcnNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0
UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlQnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4s
IGJ1ZmZlcnNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKENvcHlUZXhJbWFnZTJELCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHgsCisgICAgICAgICAgICAgICAgICAgICAgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlRmVuY2VzTlZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcykKK3ZvaWQgR0xf
QVBJRU5UUlkgQ29weVRleFN1YkltYWdlMkRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlbGV0
ZUZlbmNlc05WIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29u
c3QgR0x1aW50ICpmZW5jZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwK
LSAgICAgICAgICAodWludHB0cl90KWZlbmNlcyk7CisgICAgRVZFTlQoImdsQ29weVRleFN1Yklt
YWdlMkQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xp
bnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGludCB5b2Zmc2V0ID0gIgorICAg
ICAgICAgICIlZCwgR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAl
ZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsCisgICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgY29uc3QgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEZlbmNlTlZJRCAqPihmZW5jZXMpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZUZlbmNlc05WKGNv
bnRleHQsIG4sIGZlbmNlc1BhY2tlZCkpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZUZlbmNlc05WKG4sIGZl
bmNlc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJn
ZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZUZlbmNlc05WLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbiwgZmVuY2VzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShD
b3B5VGV4U3ViSW1hZ2UyRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2
ZWwsIHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgeCwgeSwgd2lkdGgs
IGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUZyYW1lYnVmZmVy
c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCit2
b2lkIEdMX0FQSUVOVFJZIENvcHlUZXhTdWJJbWFnZTNEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
c2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpZnJhbWVidWZmZXJz
KTsKKyAgICBFVkVOVCgiZ2xDb3B5VGV4U3ViSW1hZ2UzRCIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0
ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCisgICAgICAgICAgIiVkLCBHTGludCB6b2Zmc2V0ID0g
JWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6
ZWkgaGVpZ2h0ICIKKyAgICAgICAgICAiPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgY29uc3QgRnJhbWVidWZmZXJJRCAq
ZnJhbWVidWZmZXJzUGFja2VkICAgICAgID0gRnJvbUdMPGNvbnN0IEZyYW1lYnVmZmVySUQgKj4o
ZnJhbWVidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxl
dGVGcmFtZWJ1ZmZlcnMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CisgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXJzKG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShEZWxldGVGcmFtZWJ1ZmZlcnMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBm
cmFtZWJ1ZmZlcnNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKENvcHlUZXhTdWJJbWFn
ZTNELCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlRnJhbWVidWZmZXJzT0VT
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVy
cykKK3ZvaWQgR0xfQVBJRU5UUlkgQ29weVRleFN1YkltYWdlM0RPRVNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlbGV0ZUZyYW1lYnVm
ZmVyc09FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0
IEdMdWludCAqZnJhbWVidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClmcmFtZWJ1ZmZlcnMpOworICAgIEVWRU5UKCJnbENv
cHlUZXhTdWJJbWFnZTNET0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9m
ZnNldCA9ICIKKyAgICAgICAgICAiJWQsIEdMaW50IHpvZmZzZXQgPSAlZCwgR0xpbnQgeCA9ICVk
LCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgIgorICAg
ICAgICAgICI9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LAorICAgICAgICAgIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tl
ZCAgICAgICA9IEZyb21HTDxjb25zdCBGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzT0VT
KGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkpOworICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UzRE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IGxldmVsLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmRlbGV0ZUZyYW1lYnVmZmVycyhuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpOworICAgICAgICAg
ICAgY29udGV4dC0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoRGVsZXRlRnJhbWVidWZmZXJzT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgZnJhbWVi
dWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3B5VGV4U3ViSW1hZ2UzRE9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZU1lbW9yeU9iamVjdHNFWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKK3ZvaWQgR0xfQVBJRU5UUlkgQ3JlYXRlTWVt
b3J5T2JqZWN0c0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKm1lbW9yeU9iamVjdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50ICptZW1vcnlPYmplY3RzKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERl
bGV0ZU1lbW9yeU9iamVjdHNFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkg
biA9ICVkLCBjb25zdCBHTHVpbnQgKm1lbW9yeU9iamVjdHMgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KW1lbW9yeU9iamVjdHMpOwor
ICAgIEVWRU5UKCJnbENyZWF0ZU1lbW9yeU9iamVjdHNFWFQiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKm1lbW9yeU9iamVjdHMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBuLCAodWludHB0cl90KW1lbW9yeU9i
amVjdHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IE1lbW9yeU9iamVj
dElEICptZW1vcnlPYmplY3RzUGFja2VkID0gRnJvbUdMPGNvbnN0IE1lbW9yeU9iamVjdElEICo+
KG1lbW9yeU9iamVjdHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURl
bGV0ZU1lbW9yeU9iamVjdHNFWFQoY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwor
ICAgICAgICBNZW1vcnlPYmplY3RJRCAqbWVtb3J5T2JqZWN0c1BhY2tlZCA9IEZyb21HTDxNZW1v
cnlPYmplY3RJRCAqPihtZW1vcnlPYmplY3RzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlTWVtb3J5T2JqZWN0c0VYVChjb250ZXh0
LCBuLCBtZW1vcnlPYmplY3RzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlTWVtb3J5T2JqZWN0cyhuLCBtZW1v
cnlPYmplY3RzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmNyZWF0ZU1lbW9yeU9iamVj
dHMobiwgbWVtb3J5T2JqZWN0c1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEZWxldGVNZW1vcnlPYmplY3RzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgbWVt
b3J5T2JqZWN0c1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoQ3JlYXRlTWVtb3J5T2Jq
ZWN0c0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIG1lbW9yeU9iamVjdHNQYWNrZWQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVQcm9ncmFtQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtKQorR0x1aW50IEdMX0FQSUVOVFJZIENyZWF0
ZVByb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xE
ZWxldGVQcm9ncmFtIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJRChj
b250ZXh0KSwgcHJvZ3JhbSk7CisgICAgRVZFTlQoImdsQ3JlYXRlUHJvZ3JhbSIsICJjb250ZXh0
ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCisgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVQcm9ncmFtKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlQ3JlYXRlUHJvZ3JhbShjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShwcm9n
cmFtUGFja2VkKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Y3JlYXRlUHJv
Z3JhbSgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlUHJvZ3JhbSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQpOwotICAgIH0KLX0KLQotdm9pZCBH
TF9BUElFTlRSWSBEZWxldGVQcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKQotewotICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlbGV0
ZVByb2dyYW1QaXBlbGluZXMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9
ICVkLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNv
bnRleHQpLAotICAgICAgICAgIG4sICh1aW50cHRyX3QpcGlwZWxpbmVzKTsKLQotICAgIGlmIChj
b250ZXh0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFj
a2VkID0gRnJvbUdMPGNvbnN0IFByb2dyYW1QaXBlbGluZUlEICo+KHBpcGVsaW5lcyk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyhj
b250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpKTsKLSAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQor
ICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVByb2dy
YW1QaXBlbGluZXMobiwgcGlwZWxpbmVzUGFja2VkKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVByb2dyYW0sIEdMdWlu
dD4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVByb2dyYW1QaXBl
bGluZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKENyZWF0ZVByb2dyYW0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1
cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVByb2dyYW0sIEdMdWludD4o
KTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IERlbGV0ZVF1ZXJpZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKmlkcykKK0dMdWludCBHTF9BUElFTlRSWSBDcmVhdGVTaGFkZXJDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHR5cGUpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVs
ZXRlUXVlcmllcyIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQg
KmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1
aW50cHRyX3QpaWRzKTsKKyAgICBFVkVOVCgiZ2xDcmVhdGVTaGFkZXIiLCAiY29udGV4dCA9ICVk
LCBHTGVudW0gdHlwZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpTaGFkZXJUeXBlLCB0eXBlKSk7CiAKKyAgICBHTHVpbnQgcmV0dXJu
VmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IFF1ZXJ5SUQgKmlkc1Bh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+KGlkcyk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRl
UXVlcmllcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKKyAgICAgICAgU2hhZGVyVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyVHlw
ZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNy
ZWF0ZVNoYWRlcihjb250ZXh0LCB0eXBlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUXVlcmllcyhuLCBpZHNQ
YWNrZWQpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5jcmVhdGVTaGFkZXIo
dHlwZVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVRdWVy
aWVzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1
ZTxFbnRyeVBvaW50OjpDcmVhdGVTaGFkZXIsIEdMdWludD4oKTsKKyAgICAgICAgfQorICAgICAg
ICBBTkdMRV9DQVBUVVJFKENyZWF0ZVNoYWRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHR5cGVQ
YWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0
dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6Q3JlYXRlU2hhZGVy
LCBHTHVpbnQ+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBEZWxldGVRdWVyaWVzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpCitHTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRl
U2hhZGVyUHJvZ3JhbXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnN0cmluZ3MpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRl
UXVlcmllc0VYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNv
bnN0IEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0g
ICAgICAgICAgKHVpbnRwdHJfdClpZHMpOworICAgIEVWRU5UKCJnbENyZWF0ZVNoYWRlclByb2dy
YW12IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVp
IGNvdW50ID0gJWQsIGNvbnN0IEdMY2hhciAqY29uc3Qqc3RyaW5ncyA9ICIKKyAgICAgICAgICAi
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlNoYWRlclR5cGUsIHR5cGUpLCBjb3VudCwgKHVpbnRwdHJfdClzdHJp
bmdzKTsKIAorICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgY29uc3QgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPGNvbnN0IFF1ZXJ5SUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVRdWVyaWVzRVhUKGNvbnRleHQsIG4sIGlkc1BhY2tl
ZCkpOworICAgICAgICBTaGFkZXJUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlQ3JlYXRlU2hhZGVyUHJvZ3JhbXYo
Y29udGV4dCwgdHlwZVBhY2tlZCwgY291bnQsIHN0cmluZ3MpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVRdWVyaWVzKG4s
IGlkc1BhY2tlZCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmNyZWF0ZVNo
YWRlclByb2dyYW12KHR5cGVQYWNrZWQsIGNvdW50LCBzdHJpbmdzKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVF1ZXJpZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBuLCBpZHNQYWNrZWQpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkNyZWF0ZVNoYWRl
clByb2dyYW12LCBHTHVpbnQ+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShD
cmVhdGVTaGFkZXJQcm9ncmFtdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHR5cGVQYWNrZWQsIGNv
dW50LCBzdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJu
VmFsdWU8RW50cnlQb2ludDo6Q3JlYXRlU2hhZGVyUHJvZ3JhbXYsIEdMdWludD4oKTsKICAgICB9
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVJl
bmRlcmJ1ZmZlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpyZW5k
ZXJidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBDdWxsRmFjZUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gbW9kZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVSZW5kZXJidWZm
ZXJzIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1
aW50ICpyZW5kZXJidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgbiwgKHVpbnRwdHJfdClyZW5kZXJidWZmZXJzKTsKKyAgICBFVkVOVCgiZ2xDdWxs
RmFjZSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkN1bGxGYWNlTW9kZSwgbW9kZSkp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpy
ZW5kZXJidWZmZXJzUGFja2VkID0gRnJvbUdMPGNvbnN0IFJlbmRlcmJ1ZmZlcklEICo+KHJlbmRl
cmJ1ZmZlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVJl
bmRlcmJ1ZmZlcnMoY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCkpOworICAgICAgICBD
dWxsRmFjZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxDdWxsRmFjZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVDdWxsRmFjZShjb250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUmVu
ZGVyYnVmZmVycyhuLCByZW5kZXJidWZmZXJzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmN1bGxGYWNlKG1vZGVQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
RGVsZXRlUmVuZGVyYnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZl
cnNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEN1bGxGYWNlLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbW9kZVBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0
ZVJlbmRlcmJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICpyZW5kZXJidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBDdXJyZW50UGFsZXR0ZU1h
dHJpeE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWF0cml4cGFsZXR0
ZWluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1
ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAo
dWludHB0cl90KXJlbmRlcmJ1ZmZlcnMpOworICAgIEVWRU5UKCJnbEN1cnJlbnRQYWxldHRlTWF0
cml4T0VTIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IG1hdHJpeHBhbGV0dGVpbmRleCA9ICV1Iiwg
Q0lEKGNvbnRleHQpLAorICAgICAgICAgIG1hdHJpeHBhbGV0dGVpbmRleCk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgY29uc3QgUmVuZGVyYnVmZmVySUQgKnJlbmRlcmJ1ZmZlcnNQ
YWNrZWQgPSBGcm9tR0w8Y29uc3QgUmVuZGVyYnVmZmVySUQgKj4ocmVuZGVyYnVmZmVycyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVyc09F
Uyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUN1cnJlbnRQYWxldHRlTWF0cml4T0VT
KGNvbnRleHQsIG1hdHJpeHBhbGV0dGVpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMobiwg
cmVuZGVyYnVmZmVyc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5jdXJyZW50UGFsZXR0
ZU1hdHJpeChtYXRyaXhwYWxldHRlaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoRGVsZXRlUmVuZGVyYnVmZmVyc09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHJl
bmRlcmJ1ZmZlcnNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEN1cnJlbnRQYWxldHRl
TWF0cml4T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWF0cml4cGFsZXR0ZWluZGV4KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU2FtcGxlcnNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVycykKK3Zv
aWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ2FsbGJhY2tDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xERUJVR1BST0MgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xEZWxldGVTYW1wbGVycyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBjb25zdCBHTHVpbnQgKnNhbXBsZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgY291bnQsICh1aW50cHRyX3Qpc2FtcGxlcnMpOworICAgIEVW
RU5UKCJnbERlYnVnTWVzc2FnZUNhbGxiYWNrIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TERFQlVHUFJPQyBjYWxsYmFjayA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIGNvbnN0
IHZvaWQgKnVzZXJQYXJhbSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksICh1aW50cHRyX3QpY2FsbGJhY2ssICh1aW50cHRyX3QpdXNlclBhcmFtKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25zdCBTYW1wbGVySUQgKnNhbXBsZXJzUGFja2Vk
ICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgU2FtcGxlcklEICo+KHNhbXBsZXJzKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVTYW1w
bGVycyhjb250ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJhY2so
Y29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNhbXBsZXJzKGNvdW50LCBz
YW1wbGVyc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VDYWxsYmFj
ayhjYWxsYmFjaywgdXNlclBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERlbGV0ZVNhbXBsZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291bnQsIHNhbXBsZXJzUGFj
a2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01lc3NhZ2VDYWxsYmFjaywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGNhbGxiYWNrLCB1c2VyUGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBEZWxldGVTZW1hcGhvcmVzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdWludCAqc2VtYXBob3JlcykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdl
Q2FsbGJhY2tLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xERUJVR1BST0NLSFIgY2Fs
bGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVTZW1hcGhv
cmVzRVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3Qg
R0x1aW50ICpzZW1hcGhvcmVzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgbiwgKHVpbnRwdHJfdClzZW1hcGhvcmVzKTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01l
c3NhZ2VDYWxsYmFja0tIUiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xERUJVR1BST0NL
SFIgY2FsbGJhY2sgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBjb25zdCB2b2lkICp1
c2VyUGFyYW0gPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCAo
dWludHB0cl90KWNhbGxiYWNrLCAodWludHB0cl90KXVzZXJQYXJhbSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgY29uc3QgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQgICAg
ICAgICAgID0gRnJvbUdMPGNvbnN0IFNlbWFwaG9yZUlEICo+KHNlbWFwaG9yZXMpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVNlbWFwaG9yZXNFWFQoY29udGV4
dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihjb250ZXh0LCBj
YWxsYmFjaywgdXNlclBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlU2VtYXBob3JlcyhuLCBzZW1hcGhvcmVzUGFj
a2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUNhbGxiYWNrKGNhbGxiYWNr
LCB1c2VyUGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlU2Vt
YXBob3Jlc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQYWNrZWQpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIERlbGV0ZVNoYWRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
c2hhZGVyKQordm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDb250cm9sQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gZW5hYmxlZCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVTaGFkZXIiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJXUiLCBDSUQoY29udGV4dCksIHNoYWRlcik7CisgICAg
RVZFTlQoImdsRGVidWdNZXNzYWdlQ29udHJvbCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBHTGVudW0gc2V2ZXJpdHkgPSAl
cywgR0xzaXplaSBjb3VudCAiCisgICAgICAgICAgIj0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0g
MHglMDE2IiBQUkl4UFRSICIsIEdMYm9vbGVhbiBlbmFibGVkID0gJXMiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3Vy
Y2UpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1R5cGUsIHR5
cGUpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5
LCBzZXZlcml0eSksIGNvdW50LCAodWludHB0cl90KWlkcywKKyAgICAgICAgICBHTGJvb2xlYW5U
b1N0cmluZyhlbmFibGVkKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4oc2hhZGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVTaGFk
ZXIoY29udGV4dCwgc2hhZGVyUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbChj
b250ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZGVsZXRlU2hhZGVyKHNoYWRlclBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01l
c3NhZ2VDb250cm9sKHNvdXJjZSwgdHlwZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJsZWQp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlU2hhZGVyLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1
Z01lc3NhZ2VDb250cm9sLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCB0eXBlLCBzZXZl
cml0eSwgY291bnQsIGlkcywKKyAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlU3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHN5bmMgc3luYykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ29udHJv
bEtIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGVuYWJsZWQpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsRGVsZXRlU3luYyIsICJjb250ZXh0ID0gJWQsIEdMc3luYyBzeW5jID0gMHgl
MDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRwdHJfdClzeW5j
KTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMZW51bSBz
ZXZlcml0eSA9ICVzLCBHTHNpemVpIGNvdW50ICIKKyAgICAgICAgICAiPSAlZCwgY29uc3QgR0x1
aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xib29sZWFuIGVuYWJsZWQgPSAlcyIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdT
b3VyY2UsIHNvdXJjZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnVHlwZSwgdHlwZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
YnVnU2V2ZXJpdHksIHNldmVyaXR5KSwgY291bnQsICh1aW50cHRyX3QpaWRzLAorICAgICAgICAg
IEdMYm9vbGVhblRvU3RyaW5nKGVuYWJsZWQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlU3luYyhjb250ZXh0LCBzeW5j
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRyb2xLSFIoY29udGV4dCwgc291cmNl
LCB0eXBlLCBzZXZlcml0eSwgY291bnQsIGlkcywgZW5hYmxlZCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVN5bmMoc3lu
Yyk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VDb250cm9sKHNvdXJjZSwgdHlw
ZSwgc2V2ZXJpdHksIGNvdW50LCBpZHMsIGVuYWJsZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoRGVsZXRlU3luYywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHN5bmMpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUNvbnRyb2xLSFIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICBpZHMsIGVuYWJsZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVU
ZXh0dXJlc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdM
dWludCAqdGV4dHVyZXMpCit2b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUluc2VydENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKmJ1ZikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVUZXh0dXJlcyIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqdGV4dHVyZXMgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBuLCAodWludHB0cl90
KXRleHR1cmVzKTsKKyAgICBFVkVOVCgiZ2xEZWJ1Z01lc3NhZ2VJbnNlcnQiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2UgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0x1
aW50IGlkID0gJXUsIEdMZW51bSBzZXZlcml0eSA9ICIKKyAgICAgICAgICAiJXMsIEdMc2l6ZWkg
bGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqYnVmID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291
cmNlLCBzb3VyY2UpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1
Z1R5cGUsIHR5cGUpLCBpZCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVidWdTZXZlcml0eSwgc2V2ZXJpdHkpLCBsZW5ndGgsICh1aW50cHRyX3QpYnVmKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25zdCBUZXh0dXJlSUQgKnRleHR1cmVzUGFja2Vk
ICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlEICo+KHRleHR1cmVzKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVUZXh0dXJlcyhjb250ZXh0LCBuLCB0ZXh0
dXJlc1BhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydChjb250ZXh0LCBzb3VyY2Us
IHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLCBidWYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVUZXh0dXJlcyhuLCB0
ZXh0dXJlc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWJ1Z01lc3NhZ2VJbnNlcnQo
c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVRleHR1cmVzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
biwgdGV4dHVyZXNQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERlYnVnTWVzc2FnZUlu
c2VydCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCBs
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgYnVmKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlkcykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVidWdN
ZXNzYWdlSW5zZXJ0S0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqYnVmKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRS
ICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVpbnRwdHJfdClpZHMpOworICAgIEVW
RU5UKCJnbERlYnVnTWVzc2FnZUluc2VydEtIUiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHNvdXJjZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBHTHVpbnQgaWQgPSAldSwgR0xl
bnVtIHNldmVyaXR5ID0gIgorICAgICAgICAgICIlcywgR0xzaXplaSBsZW5ndGggPSAlZCwgY29u
c3QgR0xjaGFyICpidWYgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnVHlwZSwgdHlwZSksIGlk
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NldmVyaXR5LCBz
ZXZlcml0eSksIGxlbmd0aCwgKHVpbnRwdHJfdClidWYpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIGNvbnN0IFRyYW5zZm9ybUZlZWRiYWNrSUQgKmlkc1BhY2tlZCAgICAgICAgICA9
IEZyb21HTDxjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICo+KGlkcyk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKGNvbnRleHQsIG4sIGlkc1Bh
Y2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICBWYWxpZGF0ZURlYnVnTWVzc2FnZUluc2VydEtIUihjb250ZXh0LCBzb3VyY2UsIHR5
cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLCBidWYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVUcmFuc2Zvcm1GZWVkYmFj
a3MobiwgaWRzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlYnVnTWVzc2FnZUluc2Vy
dChzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgbGVuZ3RoLCBidWYpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWJ1Z01l
c3NhZ2VJbnNlcnRLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIHR5cGUsIGlkLCBz
ZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIGJ1Zik7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVZlcnRleEFycmF5c0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKQordm9pZCBHTF9BUElF
TlRSWSBEZWxldGVCdWZmZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICpidWZmZXJzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERlbGV0ZVZlcnRleEFy
cmF5cyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdM
dWludCAqYXJyYXlzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAg
ICAgICAgKHVpbnRwdHJfdClhcnJheXMpOworICAgIEVWRU5UKCJnbERlbGV0ZUJ1ZmZlcnMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmJ1
ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBuLCAo
dWludHB0cl90KWJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIGNvbnN0
IFZlcnRleEFycmF5SUQgKmFycmF5c1BhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBW
ZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBjb25zdCBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxjb25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5
cyhjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlQnVmZmVycyhjb250ZXh0LCBuLCBidWZmZXJz
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZGVsZXRlVmVydGV4QXJyYXlzKG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5kZWxldGVCdWZmZXJzKG4sIGJ1ZmZlcnNQYWNrZWQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlVmVydGV4QXJyYXlzLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbiwgYXJyYXlzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVC
dWZmZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVZlcnRleEFycmF5c09FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICphcnJheXMpCit2b2lkIEdMX0FQSUVOVFJZ
IERlbGV0ZUZlbmNlc05WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwg
Y29uc3QgR0x1aW50ICpmZW5jZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVsZXRlVmVydGV4QXJyYXlz
T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1
aW50ICphcnJheXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKLSAgICAg
ICAgICAodWludHB0cl90KWFycmF5cyk7CisgICAgRVZFTlQoImdsRGVsZXRlRmVuY2VzTlYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmZl
bmNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1
aW50cHRyX3QpZmVuY2VzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25zdCBW
ZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVmVy
dGV4QXJyYXlJRCAqPihhcnJheXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgY29uc3QgRmVuY2VOVklEICpmZW5jZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8Y29uc3QgRmVuY2VOVklEICo+KGZlbmNlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVWZXJ0ZXhBcnJheXNP
RVMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZUZlbmNlc05WKGNvbnRleHQsIG4sIGZlbmNl
c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmRlbGV0ZVZlcnRleEFycmF5cyhuLCBhcnJheXNQYWNrZWQpOworICAgICAg
ICAgICAgY29udGV4dC0+ZGVsZXRlRmVuY2VzTlYobiwgZmVuY2VzUGFja2VkKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVZlcnRleEFycmF5c09FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVs
ZXRlRmVuY2VzTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBmZW5jZXNQYWNrZWQpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZXB0aEZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIGZ1bmMpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUZyYW1lYnVmZmVy
c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsRGVwdGhGdW5jIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZ1bmMgPSAl
cyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVwdGhGdW5jdGlvbiwgZnVuYykpOworICAgIEVWRU5UKCJnbERlbGV0ZUZyYW1lYnVmZmVycyIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAq
ZnJhbWVidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgbiwgKHVpbnRwdHJfdClmcmFtZWJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZXB0aEZ1bmMoY29udGV4dCwgZnVu
YykpOworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcklEICpmcmFtZWJ1ZmZlcnNQYWNrZWQgPSBG
cm9tR0w8Y29uc3QgRnJhbWVidWZmZXJJRCAqPihmcmFtZWJ1ZmZlcnMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEZWxldGVGcmFtZWJ1ZmZl
cnMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVwdGhGdW5jKGZ1bmMpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXJzKG4sIGZyYW1lYnVmZmVyc1Bh
Y2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEZXB0aEZ1bmMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBmdW5jKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVGcmFt
ZWJ1ZmZlcnMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZXB0aE1hc2tDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xib29sZWFuIGZsYWcpCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUZyYW1l
YnVmZmVyc09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpm
cmFtZWJ1ZmZlcnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGVwdGhNYXNrIiwgImNvbnRleHQgPSAlZCwg
R0xib29sZWFuIGZsYWcgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGJvb2xlYW5U
b1N0cmluZyhmbGFnKSk7CisgICAgRVZFTlQoImdsRGVsZXRlRnJhbWVidWZmZXJzT0VTIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICpmcmFt
ZWJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBu
LCAodWludHB0cl90KWZyYW1lYnVmZmVycyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlcHRoTWFzayhjb250ZXh0LCBmbGFnKSk7
CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVySUQgKmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21H
TDxjb25zdCBGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVycyk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZUZyYW1lYnVmZmVyc09F
Uyhjb250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZXB0aE1hc2soZmxhZyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcnMobiwgZnJhbWVidWZmZXJzUGFj
a2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlcHRoTWFzaywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGZsYWcpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZUZyYW1l
YnVmZmVyc09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2VmQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgbiwgR0xmbG9hdCBmKQordm9pZCBHTF9BUElFTlRSWSBE
ZWxldGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqbWVtb3J5T2JqZWN0cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZXB0aFJhbmdlZiIs
ICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgbiA9ICVmLCBHTGZsb2F0IGYgPSAlZiIsIENJRChjb250
ZXh0KSwgbiwgZik7CisgICAgRVZFTlQoImdsRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCAqbWVtb3J5
T2JqZWN0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4s
ICh1aW50cHRyX3QpbWVtb3J5T2JqZWN0cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlcHRoUmFuZ2VmKGNvbnRleHQsIG4sIGYp
KTsKKyAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0SUQgKm1lbW9yeU9iamVjdHNQYWNrZWQgPSBG
cm9tR0w8Y29uc3QgTWVtb3J5T2JqZWN0SUQgKj4obWVtb3J5T2JqZWN0cyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZU1lbW9yeU9i
amVjdHNFWFQoY29udGV4dCwgbiwgbWVtb3J5T2JqZWN0c1BhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlcHRoUmFuZ2Vm
KG4sIGYpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlTWVtb3J5T2JqZWN0cyhuLCBtZW1v
cnlPYmplY3RzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERlcHRo
UmFuZ2VmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgZik7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoRGVsZXRlTWVtb3J5T2JqZWN0c0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIG1lbW9y
eU9iamVjdHNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZXB0aFJhbmdl
eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIG4sIEdMZml4ZWQgZikKK3Zv
aWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgcHJvZ3JhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZXB0aFJhbmdleCIsICJjb250ZXh0
ID0gJWQsIEdMZml4ZWQgbiA9IDB4JVgsIEdMZml4ZWQgZiA9IDB4JVgiLCBDSUQoY29udGV4dCks
IG4sIGYpOworICAgIEVWRU5UKCJnbERlbGV0ZVByb2dyYW0iLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgcHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwcm9ncmFtKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVwdGhSYW5nZXgo
Y29udGV4dCwgbiwgZikpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRGVsZXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVwdGhSYW5nZXgo
biwgZik7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVQcm9ncmFtKHByb2dyYW1QYWNrZWQp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGVwdGhSYW5nZXgsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBuLCBmKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVQcm9ncmFt
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIERldGFjaFNoYWRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJv
Z3JhbVBpcGVsaW5lc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKnBpcGVsaW5lcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEZXRhY2hTaGFkZXIiLCAiY29udGV4dCA9
ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgc2hhZGVyID0gJXUiLCBDSUQoY29udGV4
dCksCi0gICAgICAgICAgcHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBFVkVOVCgiZ2xEZWxldGVQcm9n
cmFtUGlwZWxpbmVzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwg
Y29uc3QgR0x1aW50ICpwaXBlbGluZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0
KSwKKyAgICAgICAgICBuLCAodWludHB0cl90KXBpcGVsaW5lcyk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIFNoYWRlclBy
b2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9n
cmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRGV0
YWNoU2hhZGVyKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHNoYWRlclBhY2tlZCkpOworICAgICAg
ICBjb25zdCBQcm9ncmFtUGlwZWxpbmVJRCAqcGlwZWxpbmVzUGFja2VkID0gRnJvbUdMPGNvbnN0
IFByb2dyYW1QaXBlbGluZUlEICo+KHBpcGVsaW5lcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURlbGV0ZVByb2dyYW1QaXBlbGluZXMoY29u
dGV4dCwgbiwgcGlwZWxpbmVzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW1QYWNrZWQs
IHNoYWRlclBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxldGVQcm9ncmFtUGlwZWxp
bmVzKG4sIHBpcGVsaW5lc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShEZXRhY2hTaGFkZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFk
ZXJQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERlbGV0ZVByb2dyYW1QaXBlbGluZXMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBwaXBlbGluZXNQYWNrZWQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZW51bSBjYXApCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVF1ZXJpZXNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xEaXNhYmxlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNhcCA9ICVzIiwgQ0lEKGNvbnRl
eHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIGNh
cCkpOworICAgIEVWRU5UKCJnbERlbGV0ZVF1ZXJpZXMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgY29uc3QgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWlkcyk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGUoY29udGV4dCwg
Y2FwKSk7CisgICAgICAgIGNvbnN0IFF1ZXJ5SUQgKmlkc1BhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFF1ZXJ5SUQgKj4oaWRzKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVF1ZXJp
ZXMoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGlzYWJsZShjYXApOworICAgICAgICAgICAg
Y29udGV4dC0+ZGVsZXRlUXVlcmllcyhuLCBpZHNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoRGlzYWJsZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNhcCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoRGVsZXRlUXVlcmllcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4s
IGlkc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERpc2FibGVDbGllbnRT
dGF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gYXJyYXkpCit2b2lkIEdM
X0FQSUVOVFJZIERlbGV0ZVF1ZXJpZXNFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEaXNhYmxlQ2xp
ZW50U3RhdGUiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gYXJyYXkgPSAlcyIsIENJRChjb250ZXh0
KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCBhcnJh
eSkpOworICAgIEVWRU5UKCJnbERlbGV0ZVF1ZXJpZXNFWFQiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3QpaWRzKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBDbGllbnRWZXJ0ZXhBcnJheVR5cGUgYXJyYXlQYWNr
ZWQgICAgICAgICAgICAgPSBGcm9tR0w8Q2xpZW50VmVydGV4QXJyYXlUeXBlPihhcnJheSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBRdWVyeUlEICppZHNQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBRdWVyeUlEICo+
KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVEaXNhYmxlQ2xpZW50U3RhdGUoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlUXVlcmll
c0VYVChjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kaXNhYmxlQ2xpZW50U3RhdGUoYXJyYXlQ
YWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUXVlcmllcyhuLCBpZHNQYWNrZWQp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGlzYWJsZUNsaWVudFN0YXRlLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgYXJyYXlQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KERlbGV0ZVF1ZXJpZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBpZHNQYWNrZWQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4KQordm9pZCBHTF9BUElFTlRS
WSBEZWxldGVSZW5kZXJidWZmZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dWludCAqcmVuZGVyYnVmZmVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwg
aW5kZXgpOworICAgIEVWRU5UKCJnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0
cl90KXJlbmRlcmJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGNvbnRleHQsIGluZGV4KSk7CisgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlcklEICpyZW5k
ZXJidWZmZXJzUGFja2VkID0gRnJvbUdMPGNvbnN0IFJlbmRlcmJ1ZmZlcklEICo+KHJlbmRlcmJ1
ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVEZWxldGVSZW5kZXJidWZmZXJzKGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgICAgICAgICAgY29udGV4
dC0+ZGVsZXRlUmVuZGVyYnVmZmVycyhuLCByZW5kZXJidWZmZXJzUGFja2VkKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGluZGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVSZW5k
ZXJidWZmZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERpc2FibGVpQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3ZvaWQgR0xfQVBJRU5U
UlkgRGVsZXRlUmVuZGVyYnVmZmVyc09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGlzYWJsZWki
LCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9ICV1Iiwg
Q0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFbmFi
bGVDYXAsIHRhcmdldCksIGluZGV4KTsKKyAgICBFVkVOVCgiZ2xEZWxldGVSZW5kZXJidWZmZXJz
T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1
aW50ICpyZW5kZXJidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgbiwgKHVpbnRwdHJfdClyZW5kZXJidWZmZXJzKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGlzYWJsZWkoY29udGV4
dCwgdGFyZ2V0LCBpbmRleCkpOworICAgICAgICBjb25zdCBSZW5kZXJidWZmZXJJRCAqcmVuZGVy
YnVmZmVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBSZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZm
ZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlRGVsZXRlUmVuZGVyYnVmZmVyc09FUyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzUGFja2Vk
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+ZGlzYWJsZWkodGFyZ2V0LCBpbmRleCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZWxl
dGVSZW5kZXJidWZmZXJzKG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoRGlzYWJsZWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQs
IGluZGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZWxldGVSZW5kZXJidWZmZXJzT0VTLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIERpc2NhcmRGcmFtZWJ1ZmZlckVYVENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzKQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVTYW1wbGVyc0NvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnNhbXBsZXJzKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIG51bUF0dGFjaG1lbnRzID0gJWQsIGNv
bnN0IEdMZW51bSAiCi0gICAgICAgICAgIiphdHRhY2htZW50cyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpE
ZWZhdWx0R3JvdXAsIHRhcmdldCksIG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICh1aW50cHRy
X3QpYXR0YWNobWVudHMpOworICAgIEVWRU5UKCJnbERlbGV0ZVNhbXBsZXJzIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMdWludCAqc2FtcGxl
cnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBjb3VudCwg
KHVpbnRwdHJfdClzYW1wbGVycyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFNhbXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFNhbXBsZXJJRCAqPihzYW1wbGVy
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChjb250ZXh0LCB0YXJnZXQs
IG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVTYW1wbGVycyhjb250ZXh0LCBjb3VudCwg
c2FtcGxlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5kaXNjYXJkRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2ht
ZW50cywgYXR0YWNobWVudHMpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlU2FtcGxlcnMo
Y291bnQsIHNhbXBsZXJzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERpc2NhcmRGcmFtZWJ1ZmZlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgbnVt
QXR0YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKERlbGV0ZVNhbXBsZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291
bnQsIHNhbXBsZXJzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0
Y2hDb21wdXRlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtX2dyb3Vwc194LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bV9ncm91cHNf
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBu
dW1fZ3JvdXBzX3opCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNlbWFwaG9yZXNFWFRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpzZW1hcGhvcmVzKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbERpc3BhdGNoQ29tcHV0ZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IG51bV9ncm91cHNfeCA9ICV1LCBHTHVpbnQgbnVtX2dyb3Vwc195ID0gJXUsIEdMdWludCBudW1f
Z3JvdXBzX3ogPSAiCi0gICAgICAgICAgIiV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG51
bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LCBudW1fZ3JvdXBzX3opOworICAgIEVWRU5UKCJnbERl
bGV0ZVNlbWFwaG9yZXNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9
ICVkLCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KXNlbWFwaG9yZXMpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGUoY29udGV4dCwgbnVtX2dyb3Vwc194
LCBudW1fZ3JvdXBzX3ksIG51bV9ncm91cHNfeikpOworICAgICAgICBjb25zdCBTZW1hcGhvcmVJ
RCAqc2VtYXBob3Jlc1BhY2tlZCA9IEZyb21HTDxjb25zdCBTZW1hcGhvcmVJRCAqPihzZW1hcGhv
cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlRGVsZXRlU2VtYXBob3Jlc0VYVChjb250ZXh0LCBuLCBzZW1hcGhvcmVzUGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZGlzcGF0Y2hDb21wdXRlKG51bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LCBudW1fZ3JvdXBzX3op
OworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlU2VtYXBob3JlcyhuLCBzZW1hcGhvcmVzUGFj
a2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERpc3BhdGNoQ29tcHV0ZSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bV9ncm91cHNfeCwgbnVtX2dyb3Vwc195LAotICAgICAg
ICAgICAgICAgICAgICAgIG51bV9ncm91cHNfeik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVs
ZXRlU2VtYXBob3Jlc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQYWNr
ZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEaXNwYXRjaENvbXB1dGVJbmRpcmVj
dENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludHB0ciBpbmRpcmVjdCkKK3ZvaWQg
R0xfQVBJRU5UUlkgRGVsZXRlU2hhZGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBzaGFkZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QiLCAi
Y29udGV4dCA9ICVkLCBHTGludHB0ciBpbmRpcmVjdCA9ICVsbHUiLCBDSUQoY29udGV4dCksCi0g
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpbmRpcmVjdCkpOworICAg
IEVWRU5UKCJnbERlbGV0ZVNoYWRlciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAl
dSIsIENJRChjb250ZXh0KSwgc2hhZGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFk
ZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QoY29udGV4dCwgaW5kaXJlY3QpKTsKKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlU2hhZGVy
KGNvbnRleHQsIHNoYWRlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29tcHV0ZUluZGlyZWN0KGluZGly
ZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihzaGFkZXJQYWNrZWQpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3Qs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRpcmVjdCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RGVsZXRlU2hhZGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCit2b2lkIEdM
X0FQSUVOVFJZIERlbGV0ZVN5bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzeW5j
IHN5bmMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0FycmF5cyIsICJjb250ZXh0ID0gJWQsIEdMZW51
bSBtb2RlID0gJXMsIEdMaW50IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZl
VHlwZSwgbW9kZSksIGZpcnN0LCBjb3VudCk7CisgICAgRVZFTlQoImdsRGVsZXRlU3luYyIsICJj
b250ZXh0ID0gJWQsIEdMc3luYyBzeW5jID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksCisgICAgICAgICAgKHVpbnRwdHJfdClzeW5jKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0FycmF5cyhjb250ZXh0LCBtb2RlUGFja2VkLCBmaXJz
dCwgY291bnQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RGVsZXRlU3luYyhjb250ZXh0LCBzeW5jKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlUGFja2VkLCBmaXJz
dCwgY291bnQpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlU3luYyhzeW5jKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdBcnJheXMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBtb2RlUGFja2VkLCBmaXJzdCwgY291bnQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERl
bGV0ZVN5bmMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzeW5jKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgRHJhd0FycmF5c0luZGlyZWN0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkKK3ZvaWQgR0xfQVBJRU5UUlkg
RGVsZXRlVGV4dHVyZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKnRleHR1cmVzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdBcnJheXNJbmRpcmVj
dCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgY29uc3Qgdm9p
ZCAqaW5kaXJlY3QgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksICh1aW50
cHRyX3QpaW5kaXJlY3QpOworICAgIEVWRU5UKCJnbERlbGV0ZVRleHR1cmVzIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIG4sICh1aW50cHRy
X3QpdGV4dHVyZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1v
ZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2Rl
Pihtb2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlz
SW5kaXJlY3QoY29udGV4dCwgbW9kZVBhY2tlZCwgaW5kaXJlY3QpKTsKKyAgICAgICAgY29uc3Qg
VGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
Y29uc3QgVGV4dHVyZUlEICo+KHRleHR1cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURlbGV0ZVRleHR1cmVzKGNvbnRleHQsIG4s
IHRleHR1cmVzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5c0luZGlyZWN0KG1vZGVQYWNrZWQsIGluZGly
ZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVRleHR1cmVzKG4sIHRleHR1cmVzUGFj
a2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdBcnJheXNJbmRpcmVj
dCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGluZGlyZWN0KTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShEZWxldGVUZXh0dXJlcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHRl
eHR1cmVzUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0lu
c3RhbmNlZENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbnN0YW5jZWNvdW50KQordm9pZCBHTF9BUElFTlRSWSBEZWxldGVUcmFuc2Zvcm1GZWVkYmFj
a3NDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRz
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbERyYXdBcnJheXNJbnN0YW5jZWQiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMaW50IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291
bnQgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgImluc3RhbmNlY291bnQgPSAlZCIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZl
VHlwZSwgbW9kZSksIGZpcnN0LCBjb3VudCwKLSAgICAgICAgICBpbnN0YW5jZWNvdW50KTsKKyAg
ICBFVkVOVCgiZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3QpaWRzKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQ
YWNrZWQgPSBGcm9tR0w8Y29uc3QgVHJhbnNmb3JtRmVlZGJhY2tJRCAqPihpZHMpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBj
b3VudCwgaW5zdGFuY2Vjb3VudCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoY29udGV4dCwgbiwgaWRz
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlUGFja2VkLCBmaXJzdCwgY291bnQs
IGluc3RhbmNlY291bnQpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2tzKG4sIGlkc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShE
cmF3QXJyYXlzSW5zdGFuY2VkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgZmly
c3QsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlY291bnQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG4sIGlkc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgR0xfQVBJ
RU5UUlkgRGVsZXRlVmVydGV4QXJyYXlzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9
ICVzLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNv
dW50ICIKLSAgICAgICAgICAiPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKKyAgICBFVkVOVCgiZ2xEZWxldGVWZXJ0ZXhBcnJheXMiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmFycmF5cyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3Qp
YXJyYXlzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1v
ZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9k
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBWZXJ0ZXhBcnJh
eUlEICphcnJheXNQYWNrZWQgPSBGcm9tR0w8Y29uc3QgVmVydGV4QXJyYXlJRCAqPihhcnJheXMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoY29udGV4dCwgbW9kZVBh
Y2tlZCwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzKGNvbnRleHQsIG4s
IGFycmF5c1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZVBhY2tlZCwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpOworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlVmVydGV4QXJy
YXlzKG4sIGFycmF5c1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2Vk
LCBmaXJzdCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgcHJpbWNvdW50KTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShEZWxldGVWZXJ0ZXhBcnJheXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBuLCBhcnJheXNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJy
YXlzSW5zdGFuY2VkRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGVsZXRl
VmVydGV4QXJyYXlzT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVp
bnQgKmFycmF5cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGludCBzdGFydCA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNvdW50ICIKLSAgICAgICAgICAiPSAl
ZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
UHJpbWl0aXZlVHlwZSwgbW9kZSksIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBFVkVO
VCgiZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
c2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmFycmF5cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwg
Q0lEKGNvbnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3QpYXJyYXlzKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBjb25zdCBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQg
PSBGcm9tR0w8Y29uc3QgVmVydGV4QXJyYXlJRCAqPihhcnJheXMpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVE
cmF3QXJyYXlzSW5zdGFuY2VkRVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwg
cHJpbWNvdW50KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5c09FUyhjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwgcHJpbWNvdW50
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVZlcnRleEFycmF5cyhuLCBhcnJheXNQYWNr
ZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0FycmF5c0luc3RhbmNl
ZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICBwcmltY291bnQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERl
bGV0ZVZlcnRleEFycmF5c09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGFycmF5c1BhY2tl
ZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdCdWZmZXJzQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQordm9pZCBH
TF9BUElFTlRSWSBEZXB0aEZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IGZ1bmMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0J1ZmZlcnMiLCAiY29udGV4dCA9ICVkLCBHTHNp
emVpIG4gPSAlZCwgY29uc3QgR0xlbnVtICpidWZzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClidWZzKTsKKyAgICBFVkVOVCgiZ2xE
ZXB0aEZ1bmMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gZnVuYyA9ICVzIiwgQ0lEKGNvbnRleHQp
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZXB0aEZ1bmN0aW9uLCBm
dW5jKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURyYXdCdWZmZXJzKGNvbnRleHQsIG4sIGJ1ZnMpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVwdGhGdW5jKGNvbnRleHQsIGZ1bmMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5kcmF3QnVmZmVycyhuLCBidWZzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRlcHRoRnVuYyhm
dW5jKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdCdWZmZXJzLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbiwgYnVmcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVwdGhG
dW5jLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnVuYyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIERyYXdCdWZmZXJzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6
ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKQordm9pZCBHTF9BUElFTlRSWSBEZXB0aE1hc2tDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xib29sZWFuIGZsYWcpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsRHJhd0J1ZmZlcnNFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9
ICVkLCBjb25zdCBHTGVudW0gKmJ1ZnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0
KSwgbiwKLSAgICAgICAgICAodWludHB0cl90KWJ1ZnMpOworICAgIEVWRU5UKCJnbERlcHRoTWFz
ayIsICJjb250ZXh0ID0gJWQsIEdMYm9vbGVhbiBmbGFnID0gJXMiLCBDSUQoY29udGV4dCksCisg
ICAgICAgICAgR0xib29sZWFuVG9TdHJpbmcoZmxhZykpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChjb250
ZXh0LCBuLCBidWZzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZURlcHRoTWFzayhjb250ZXh0LCBmbGFnKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0J1ZmZlcnMobiwgYnVmcyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5kZXB0aE1hc2soZmxhZyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShEcmF3QnVmZmVyc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGJ1
ZnMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERlcHRoTWFzaywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGZsYWcpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcykKK3ZvaWQgR0xfQVBJRU5UUlkgRGVwdGhS
YW5nZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCBuLCBHTGZsb2F0IGYp
CiB7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMs
IGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmlt
aXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMpOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOworICAg
IEVWRU5UKCJnbERlcHRoUmFuZ2VmIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBuID0gJWYsIEdM
ZmxvYXQgZiA9ICVmIiwgQ0lEKGNvbnRleHQpLCBuLCBmKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUg
dHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0
eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHMo
Y29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVwdGhSYW5nZWYoY29udGV4
dCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwg
aW5kaWNlcyk7CisgICAgICAgICAgICBjb250ZXh0LT5kZXB0aFJhbmdlZihuLCBmKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50cywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShEZXB0aFJhbmdlZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGYpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVOVFJZIERlcHRoUmFuZ2V4
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4ZWQgbiwgR0xmaXhlZCBmKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUg
PSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRS
ICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBl
KSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVydGV4KTsKKyAgICBFVkVOVCgiZ2xEZXB0aFJh
bmdleCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgbiA9IDB4JVgsIEdMZml4ZWQgZiA9IDB4JVgi
LCBDSUQoY29udGV4dCksIG4sIGYpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmlt
aXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgoY29u
dGV4dCwgbW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGJhc2V2ZXJ0
ZXgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRGVwdGhS
YW5nZXgoY29udGV4dCwgbiwgZikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tl
ZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAg
Y29udGV4dC0+ZGVwdGhSYW5nZXgobiwgZik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShEcmF3RWxlbWVudHNCYXNlVmVydGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBh
Y2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywg
YmFzZXZlcnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGVwdGhSYW5nZXgsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBuLCBmKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0Vs
ZW1lbnRzQmFzZVZlcnRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBt
b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBi
YXNldmVydGV4KQordm9pZCBHTF9BUElFTlRSWSBEZXRhY2hTaGFkZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVz
LCBjb25zdCB2b2lkICIKLSAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwg
R0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAo
dWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbERldGFjaFNoYWRl
ciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCBzaGFkZXIgPSAl
dSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBwcm9ncmFtLCBzaGFkZXIpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0Vs
ZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVt
ZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURy
YXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFk
ZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVEZXRhY2hTaGFkZXIoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgc2hhZGVyUGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
ZHJhd0VsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5k
aWNlcywgYmFzZXZlcnRleCk7CisgICAgICAgICAgICBjb250ZXh0LT5kZXRhY2hTaGFkZXIocHJv
Z3JhbVBhY2tlZCwgc2hhZGVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2Vz
LCBiYXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEZXRhY2hTaGFkZXIsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBzaGFkZXJQYWNrZWQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVOVFJZIERp
c2FibGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNhcCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0g
JXMsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAi
LCBHTGludCBiYXNldmVydGV4ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSks
ICh1aW50cHRyX3QpaW5kaWNlcywgYmFzZXZlcnRleCk7CisgICAgRVZFTlQoImdsRGlzYWJsZSIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBjYXAgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCBjYXApKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdF
bGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxl
bWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVE
cmF3RWxlbWVudHNCYXNlVmVydGV4T0VTKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGUoY29udGV4dCwgY2FwKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0Vs
ZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywg
YmFzZXZlcnRleCk7CisgICAgICAgICAgICBjb250ZXh0LT5kaXNhYmxlKGNhcCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoRGlzYWJsZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNhcCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luZGlyZWN0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaXJlY3QpCit2b2lkIEdMX0FQSUVOVFJZIERp
c2FibGVDbGllbnRTdGF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gYXJy
YXkpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5kaXJlY3QiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZv
aWQgKmluZGlyZWN0ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwg
bW9kZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50
c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGlyZWN0KTsKKyAgICBFVkVOVCgiZ2xEaXNhYmxl
Q2xpZW50U3RhdGUiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gYXJyYXkgPSAlcyIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCBh
cnJheSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgQ2xpZW50VmVydGV4QXJyYXlUeXBlIGFycmF5UGFja2VkID0gRnJvbUdM
PENsaWVudFZlcnRleEFycmF5VHlwZT4oYXJyYXkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVu
dHNJbmRpcmVjdChjb250ZXh0LCBtb2RlUGFja2VkLCB0eXBlUGFja2VkLCBpbmRpcmVjdCkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxl
Q2xpZW50U3RhdGUoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbmRpcmVj
dChtb2RlUGFja2VkLCB0eXBlUGFja2VkLCBpbmRpcmVjdCk7CisgICAgICAgICAgICBjb250ZXh0
LT5kaXNhYmxlQ2xpZW50U3RhdGUoYXJyYXlQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzSW5kaXJlY3QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBt
b2RlUGFja2VkLCB0eXBlUGFja2VkLCBpbmRpcmVjdCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RGlzYWJsZUNsaWVudFN0YXRlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYXJyYXlQYWNrZWQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
aW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5
cGUgPSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4
UFRSICIsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291
bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5
cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGluc3RhbmNlY291bnQpOworICAgIEVWRU5U
KCJnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRl
eCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpbmRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGlu
c3RhbmNlY291bnQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250ZXh0LCBpbmRleCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwg
aW5kaWNlcywgaW5zdGFuY2Vjb3VudCk7CisgICAgICAgICAgICBjb250ZXh0LT5kaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
RHJhd0VsZW1lbnRzSW5zdGFuY2VkLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFu
Y2Vjb3VudCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KQordm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xl
bnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIippbmRpY2VzID0gMHglMDE2
IiBQUkl4UFRSICIsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBj
b3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlw
ZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgcHJpbWNvdW50KTsKKyAgICBFVkVOVCgiZ2xE
aXNhYmxlaSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4
ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5kZXgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwg
aW5kaWNlcywgcHJpbWNvdW50KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURpc2FibGVpKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1j
b3VudCk7CisgICAgICAgICAgICBjb250ZXh0LT5kaXNhYmxlaSh0YXJnZXQsIGluZGV4KTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50KTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShEaXNhYmxlaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVy
dGV4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2Vz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQordm9p
ZCBHTF9BUElFTlRSWSBEaXNhYmxlaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRz
SW5zdGFuY2VkQmFzZVZlcnRleCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1v
ZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lk
ICIKLSAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBpbnN0
YW5jZWNvdW50ID0gJWQsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSks
IGNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVu
dHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5jZWNvdW50LAotICAgICAg
ICAgIGJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbERpc2FibGVpRVhUIiwgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCB0YXJnZXQp
LCBpbmRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGluc3Rh
bmNlY291bnQsIGJhc2V2ZXJ0ZXgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc2FibGVpRVhUKGNvbnRleHQsIHRhcmdldCwgaW5k
ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50
LCB0eXBlUGFja2VkLCBpbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRpc2FibGVpKHRhcmdldCwgaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHR5
cGVQYWNrZWQsIGluZGljZXMsIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKERpc2FibGVpRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBp
bmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNl
ZEJhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVOVFJZIERpc2FibGVpT0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0g
JWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqaW5kaWNlcyA9
IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGluc3RhbmNlY291bnQgPSAlZCwgR0xpbnQgYmFz
ZXZlcnRleCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90
KWluZGljZXMsIGluc3RhbmNlY291bnQsCi0gICAgICAgICAgYmFzZXZlcnRleCk7CisgICAgRVZF
TlQoImdsRGlzYWJsZWlPRVMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
dWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50
c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNU
eXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgY291
bnQsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCkp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRGlzYWJsZWlPRVMoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0lu
c3RhbmNlZEJhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
c3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+ZGlzYWJsZWko
dGFyZ2V0LCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBh
Y2tlZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywg
aW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRGlzYWJs
ZWlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5k
aWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZl
cnRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGlzY2FyZEZyYW1lYnVmZmVyRVhUQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAq
YXR0YWNobWVudHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xz
aXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKLSAgICAgICAg
ICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBpbnN0YW5jZWNvdW50ID0g
JWQsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBl
KSwgKHVpbnRwdHJfdClpbmRpY2VzLCBpbnN0YW5jZWNvdW50LAotICAgICAgICAgIGJhc2V2ZXJ0
ZXgpOworICAgIEVWRU5UKCJnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIG51bUF0dGFjaG1lbnRzID0g
JWQsIGNvbnN0IEdMZW51bSAiCisgICAgICAgICAgIiphdHRhY2htZW50cyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksIG51bUF0dGFjaG1lbnRzLAorICAgICAgICAgICh1
aW50cHRyX3QpYXR0YWNobWVudHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmlt
aXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleE9FUygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZURp
c2NhcmRGcmFtZWJ1ZmZlckVYVChjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRh
Y2htZW50cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXgobW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgpOworICAg
ICAgICAgICAgY29udGV4dC0+ZGlzY2FyZEZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNobWVu
dHMsIGF0dGFjaG1lbnRzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdF
bGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2Vz
LCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNj
YXJkRnJhbWVidWZmZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFj
aG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKK3ZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0Y2hD
b21wdXRlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtX2dyb3Vwc194LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bV9ncm91cHNfeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1f
Z3JvdXBzX3opCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50ID0g
JWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgotICAgICAgICAgICIqaW5kaWNlcyA9
IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIHByaW1jb3VudCA9ICVkIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBt
b2RlKSwgY291bnQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdF
bGVtZW50c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIHByaW1jb3VudCk7CisgICAg
RVZFTlQoImdsRGlzcGF0Y2hDb21wdXRlIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgbnVtX2dyb3Vwc194ID0gJXUsIEdMdWludCBudW1fZ3JvdXBzX3kgPSAldSwgR0x1aW50IG51
bV9ncm91cHNfeiA9ICIKKyAgICAgICAgICAiJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
bnVtX2dyb3Vwc194LCBudW1fZ3JvdXBzX3ksIG51bV9ncm91cHNfeik7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVu
dHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRz
VHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkRVhUKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGljZXMsIHByaW1jb3VudCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEaXNwYXRjaENvbXB1
dGUoY29udGV4dCwgbnVtX2dyb3Vwc194LCBudW1fZ3JvdXBzX3ksIG51bV9ncm91cHNfeikpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5k
aWNlcywgcHJpbWNvdW50KTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdF
bGVtZW50c0luc3RhbmNlZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNv
dW50LCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIHByaW1jb3Vu
dCk7Ci0gICAgfQotfQotCi12b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2Vz
KQorICAgICAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hDb21wdXRlKG51bV9ncm91cHNfeCwgbnVt
X2dyb3Vwc195LCBudW1fZ3JvdXBzX3opOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoRGlzcGF0Y2hDb21wdXRlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbnVtX2dyb3Vwc194LCBu
dW1fZ3JvdXBzX3ksCisgICAgICAgICAgICAgICAgICAgICAgbnVtX2dyb3Vwc196KTsKKyAgICB9
Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3RDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnRwdHIgaW5kaXJlY3QpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
RHJhd1JhbmdlRWxlbWVudHMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2Rl
ID0gJXMsIEdMdWludCBzdGFydCA9ICV1LCBHTHVpbnQgZW5kID0gJXUsIEdMc2l6ZWkgY291bnQg
PSAlZCwgIgotICAgICAgICAgICJHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICppbmRpY2Vz
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgZW5kLCBjb3Vu
dCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlw
ZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcyk7CisgICAgRVZFTlQoImdsRGlzcGF0Y2hDb21w
dXRlSW5kaXJlY3QiLCAiY29udGV4dCA9ICVkLCBHTGludHB0ciBpbmRpcmVjdCA9ICVsbHUiLCBD
SUQoY29udGV4dCksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihp
bmRpcmVjdCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPiht
b2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBl
bmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZUlu
ZGlyZWN0KGNvbnRleHQsIGluZGlyZWN0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZVBhY2tl
ZCwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpOworICAgICAgICAgICAg
Y29udGV4dC0+ZGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QoaW5kaXJlY3QpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1JhbmdlRWxlbWVudHMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICB0eXBlUGFja2VkLCBpbmRpY2VzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEaXNwYXRjaENv
bXB1dGVJbmRpcmVjdCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGlyZWN0KTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2Vz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgYmFzZXZlcnRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4IiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAl
dSwgR0x1aW50IGVuZCA9ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsICIKLSAgICAgICAgICAiR0xl
bnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBH
TGludCBiYXNldmVydGV4ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgZW5kLCBjb3Vu
dCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlw
ZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgYmFzZXZlcnRleCk7CisgICAgRVZFTlQoImds
RHJhd0FycmF5cyIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMaW50IGZpcnN0
ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGZpcnN0LCBjb3Vu
dCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwot
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXgoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9k
ZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFz
ZXZlcnRleCkpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdBcnJh
eXMoY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVu
dHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlUGFja2VkLCBp
bmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlUGFja2Vk
LCBmaXJzdCwgY291bnQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1Jh
bmdlRWxlbWVudHNCYXNlVmVydGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwg
c3RhcnQsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHlwZVBhY2tlZCwgaW5k
aWNlcywgYmFzZXZlcnRleCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd0FycmF5cywgaXND
YWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0ZXgpCit2b2lkIEdMX0FQSUVO
VFJZIERyYXdBcnJheXNJbmRpcmVjdENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gbW9kZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1Jhbmdl
RWxlbWVudHNCYXNlVmVydGV4RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
bW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAldSwgR0x1aW50IGVuZCA9ICV1LCBHTHNpemVpIGNv
dW50ID0gJWQsICIKLSAgICAgICAgICAiR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqaW5k
aWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5
cGUsIG1vZGUpLCBzdGFydCwgZW5kLCBjb3VudCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywg
YmFzZXZlcnRleCk7CisgICAgRVZFTlQoImdsRHJhd0FycmF5c0luZGlyZWN0IiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBjb25zdCB2b2lkICppbmRpcmVjdCA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgKHVpbnRwdHJfdClpbmRpcmVj
dCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwot
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
bW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywg
YmFzZXZlcnRleCkpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0FycmF5
c0luZGlyZWN0KGNvbnRleHQsIG1vZGVQYWNrZWQsIGluZGlyZWN0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlUGFja2Vk
LCBpbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2V2ZXJ0ZXgpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5c0luZGlyZWN0
KG1vZGVQYWNrZWQsIGluZGlyZWN0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1v
ZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHR5cGVQ
YWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdB
cnJheXNJbmRpcmVjdCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGluZGlyZWN0
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVy
dGV4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCkK
K3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZENvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50KQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUyIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0x1aW50IHN0YXJ0ID0gJXUsIEdMdWludCBlbmQg
PSAldSwgR0xzaXplaSBjb3VudCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSB0eXBlID0gJXMs
IGNvbnN0IHZvaWQgKmluZGljZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgYmFzZXZlcnRl
eCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgc3RhcnQsIGVuZCwgY291bnQsCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5cGUpLCAodWlu
dHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgIEVWRU5UKCJnbERyYXdBcnJheXNJbnN0
YW5jZWQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMaW50
IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xzaXplaSAiCisgICAgICAgICAgImlu
c3RhbmNlY291bnQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGZpcnN0LCBjb3VudCwKKyAgICAg
ICAgICBpbnN0YW5jZWNvdW50KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmlt
aXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0
aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9F
UygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
UGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9k
ZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1v
ZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnRleHQsIG1v
ZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2Vjb3VudCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSYW5nZUVsZW1l
bnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZVBhY2tlZCwg
aW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNldmVydGV4KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQo
bW9kZVBhY2tlZCwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZWNvdW50KTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsCi0gICAgICAgICAgICAgICAg
ICAgICAgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKERyYXdBcnJheXNJbnN0YW5jZWQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBt
b2RlUGFja2VkLCBmaXJzdCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Vj
b3VudCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhmT0VTQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEVDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBwcmltY291bnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1RleGZPRVMiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xm
bG9hdCB6ID0gJWYsIEdMZmxvYXQgd2lkdGggPSAlZiwgIgotICAgICAgICAgICJHTGZsb2F0IGhl
aWdodCA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHgsIHksIHosIHdpZHRoLCBoZWln
aHQpOworICAgIEVWRU5UKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xpbnQgZmlyc3QgPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBHTHNpemVpIHByaW1jb3VudCAiCisgICAgICAgICAgIj0gJWQiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2
ZVR5cGUsIG1vZGUpLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2
ZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlRHJhd1RleGZPRVMoY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdo
dCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShjb250ZXh0LCBtb2RlUGFja2Vk
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXhmKHgsIHksIHosIHdpZHRoLCBo
ZWlnaHQpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlUGFj
a2VkLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShEcmF3VGV4Zk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHosIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICBwcmltY291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBEcmF3VGV4ZnZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xmbG9h
dCAqY29vcmRzKQordm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkRVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHByaW1jb3VudCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3VGV4ZnZPRVMiLCAiY29udGV4dCA9ICVk
LCBjb25zdCBHTGZsb2F0ICpjb29yZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0
KSwKLSAgICAgICAgICAodWludHB0cl90KWNvb3Jkcyk7CisgICAgRVZFTlQoImdsRHJhd0FycmF5
c0luc3RhbmNlZEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAl
cywgR0xpbnQgc3RhcnQgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTHNpemVpIHByaW1jb3Vu
dCAiCisgICAgICAgICAgIj0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBzdGFydCwgY291bnQsIHBy
aW1jb3VudCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZURyYXdUZXhmdk9FUyhjb250ZXh0LCBjb29yZHMpKTsKKyAgICAgICAgUHJp
bWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5j
ZWRFWFQoY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGNvdW50LCBwcmltY291bnQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5k
cmF3VGV4ZnYoY29vcmRzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5j
ZWQobW9kZVBhY2tlZCwgc3RhcnQsIGNvdW50LCBwcmltY291bnQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleGZ2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29v
cmRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3QXJyYXlzSW5zdGFuY2VkRVhULCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgIHByaW1jb3VudCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1EcmF3
VGV4aU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCB4LCBHTGludCB5LCBH
TGludCB6LCBHTGludCB3aWR0aCwgR0xpbnQgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRSWSBEcmF3
QnVmZmVyc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIGNvbnN0IEdM
ZW51bSAqYnVmcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xEcmF3VGV4aU9FUyIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMaW50IHogPSAlZCwgR0xp
bnQgd2lkdGggPSAlZCwgR0xpbnQgaGVpZ2h0ICIKLSAgICAgICAgICAiPSAlZCIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVOVCgiZ2xE
cmF3QnVmZmVycyIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTGVudW0g
KmJ1ZnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAo
dWludHB0cl90KWJ1ZnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1RleGlPRVMoY29udGV4dCwgeCwg
eSwgeiwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVEcmF3QnVmZmVycyhjb250ZXh0LCBuLCBidWZzKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleGkoeCwg
eSwgeiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3QnVmZmVycyhu
LCBidWZzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdUZXhpT0VTLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRHJhd0J1ZmZlcnMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBidWZzKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleGl2T0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIGNvbnN0IEdMaW50ICpjb29yZHMpCit2b2lkIEdMX0FQSUVOVFJZIERy
YXdCdWZmZXJzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgY29u
c3QgR0xlbnVtICpidWZzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdUZXhpdk9FUyIsICJjb250ZXh0
ID0gJWQsIGNvbnN0IEdMaW50ICpjb29yZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250
ZXh0KSwKLSAgICAgICAgICAodWludHB0cl90KWNvb3Jkcyk7CisgICAgRVZFTlQoImdsRHJhd0J1
ZmZlcnNFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBjb25z
dCBHTGVudW0gKmJ1ZnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAg
ICAgICAgICAodWludHB0cl90KWJ1ZnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4aXZPRVMoY29udGV4dCwgY29vcmRz
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdCdWZm
ZXJzRVhUKGNvbnRleHQsIG4sIGJ1ZnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4aXYoY29vcmRzKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdCdWZmZXJzKG4sIGJ1ZnMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoRHJhd1RleGl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmRzKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3QnVmZmVyc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG4sIGJ1ZnMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4c09FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNob3J0IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2hvcnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaG9ydCB6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNob3J0IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNob3J0IGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmluZGljZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRHJhd1RleHNPRVMi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2hvcnQgeCA9ICVkLCBHTHNob3J0IHkgPSAl
ZCwgR0xzaG9ydCB6ID0gJWQsIEdMc2hvcnQgd2lkdGggPSAlZCwgIgotICAgICAgICAgICJHTHNo
b3J0IGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHgsIHksIHosIHdpZHRo
LCBoZWlnaHQpOworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50cyIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlw
ZSA9ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2Vz
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhzT0VTKGNvbnRleHQsIHgsIHksIHosIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHMoY29udGV4dCwgbW9kZVBhY2tl
ZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4cyh4LCB5LCB6LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShEcmF3VGV4c09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHosIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50cywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleHN2T0VTQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIGNvbnN0IEdMc2hvcnQgKmNvb3JkcykKK3ZvaWQgR0xfQVBJRU5UUlkgRHJh
d0VsZW1lbnRzQmFzZVZlcnRleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbERyYXdUZXhzdk9FUyIsICJjb250ZXh0ID0gJWQsIGNvbnN0IEdMc2hvcnQg
KmNvb3JkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgICh1
aW50cHRyX3QpY29vcmRzKTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4IiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTHNpemVpIGNvdW50
ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAgICAgICAgICIqaW5kaWNl
cyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBiYXNldmVydGV4ID0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUs
IG1vZGUpLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJh
d0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgYmFzZXZlcnRleCk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZURyYXdUZXhzdk9FUyhjb250ZXh0LCBjb29yZHMpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBt
b2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZl
TW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3RWxl
bWVudHNCYXNlVmVydGV4KGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRpY2VzLCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHN2KGNvb3Jkcyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5kcmF3RWxlbWVudHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBl
UGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKERyYXdUZXhzdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3Jkcyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoRHJhd0VsZW1lbnRzQmFzZVZlcnRleCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAg
ICAgIGluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBE
cmF3VGV4eE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmaXhlZCB6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZpeGVkIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZpeGVkIGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1l
bnRzQmFzZVZlcnRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNl
dmVydGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbERyYXdUZXh4T0VTIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGZpeGVkIHggPSAweCVYLCBHTGZpeGVkIHkgPSAweCVYLCBHTGZpeGVkIHogPSAw
eCVYLCBHTGZpeGVkIHdpZHRoID0gIgotICAgICAgICAgICIweCVYLCBHTGZpeGVkIGhlaWdodCA9
IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7
CisgICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0g
dHlwZSA9ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYiIFBS
SXhQVFIgIiwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQs
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUs
IHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RHJhd1RleHhPRVMoY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICBQ
cmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlw
ZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQoY29udGV4dCwgbW9kZVBhY2tlZCwgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2ZXJ0ZXgpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4eCh4
LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50
c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIGJhc2V2
ZXJ0ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleHhPRVMsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbW9kZVBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwg
aW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERyYXdU
ZXh4dk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGZpeGVkICpjb29y
ZHMpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xE
cmF3VGV4eHZPRVMiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZpeGVkICpjb29yZHMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICAodWludHB0cl90KWNvb3Jk
cyk7CisgICAgRVZFTlQoImdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FUyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVu
dW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYi
IFBSSXhQVFIgIiwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291
bnQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5
cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4eHZP
RVMoY29udGV4dCwgY29vcmRzKSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUp
OworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZVZl
cnRleE9FUyhjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5k
aWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh4dihjb29yZHMpOworICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0VsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tl
ZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShEcmF3VGV4eHZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZHMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2Vk
LCBpbmRpY2VzLCBiYXNldmVydGV4KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRUdM
SW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlZ2xJbWFnZU9FUyBp
bWFnZSkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5kaXJlY3RDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpcmVjdCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlZ2xJbWFnZU9FUyBpbWFnZSA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksICh1aW50cHRyX3QpaW1hZ2Up
OworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0luZGlyZWN0IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpp
bmRpcmVjdCA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUp
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBl
LCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpcmVjdCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1
ZmZlclN0b3JhZ2VPRVMoY29udGV4dCwgdGFyZ2V0LCBpbWFnZSkpOworICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlw
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICBWYWxpZGF0ZURyYXdFbGVtZW50c0luZGlyZWN0KGNvbnRleHQsIG1vZGVQYWNr
ZWQsIHR5cGVQYWNrZWQsIGluZGlyZWN0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlKHRhcmdldCwgaW1hZ2UpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRz
SW5kaXJlY3QobW9kZVBhY2tlZCwgdHlwZVBhY2tlZCwgaW5kaXJlY3QpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VT
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbWFnZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoRHJhd0VsZW1lbnRzSW5kaXJlY3QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFj
a2VkLCB0eXBlUGFja2VkLCBpbmRpcmVjdCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCit2b2lkIEdMX0FQSUVOVFJZIERy
YXdFbGVtZW50c0luc3RhbmNlZENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50KQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0YXJnZXQpLCAodWludHB0cl90KWltYWdlKTsKKyAg
ICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAl
cywgY29uc3Qgdm9pZCAiCisgICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIs
IEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQsCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUsIHR5
cGUpLCAodWludHB0cl90KWluZGljZXMsIGluc3RhbmNlY291bnQpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGltYWdlKSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwor
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGluc3Rh
bmNlY291bnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5lR0xJbWFnZVRhcmdldFRleHR1cmUyRCh0YXJnZXRQYWNrZWQsIGltYWdl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgaW5zdGFuY2Vjb3VudCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgaW1hZ2UpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKERyYXdFbGVtZW50c0luc3RhbmNlZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNr
ZWQsIGNvdW50LCB0eXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGlu
c3RhbmNlY291bnQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBFbmFibGVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNhcCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xFbmFibGUiLCAiY29udGV4dCA9
ICVkLCBHTGVudW0gY2FwID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgY2FwKSk7CisgICAgRVZFTlQoImdsRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBt
b2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9p
ZCAiCisgICAgICAgICAgIippbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgcHJp
bWNvdW50ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5k
aWNlcywgcHJpbWNvdW50KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlKGNvbnRleHQsIGNhcCkpOworICAgICAgICBQcmlt
aXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4o
dHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxlKGNhcCk7
CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZVBhY2tlZCwg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsIHByaW1jb3VudCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShFbmFibGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjYXApOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgdHlw
ZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgRW5hYmxlQ2xpZW50U3RhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVt
IGFycmF5KQordm9pZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBiYXNldmVydGV4KQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbEVuYWJsZUNsaWVudFN0YXRlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGFycmF5
ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkVuYWJsZUNhcCwgYXJyYXkpKTsKKyAgICBFVkVOVCgiZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWRCYXNlVmVydGV4IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVz
LCBHTHNpemVpIGNvdW50ID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgIgorICAg
ICAgICAgICIqaW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGluc3RhbmNlY291
bnQgPSAlZCwgR0xpbnQgYmFzZXZlcnRleCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgY291bnQs
CisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50c1R5cGUs
IHR5cGUpLCAodWludHB0cl90KWluZGljZXMsIGluc3RhbmNlY291bnQsCisgICAgICAgICAgYmFz
ZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQ2xpZW50VmVydGV4QXJy
YXlUeXBlIGFycmF5UGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5
VHlwZT4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUVuYWJsZUNsaWVudFN0YXRlKGNvbnRleHQsIGFycmF5UGFja2VkKSk7CisgICAgICAg
IFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNU
eXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2Vk
LCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVy
dGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZW5hYmxlQ2xpZW50U3RhdGUoYXJyYXlQYWNrZWQpOworICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleChtb2RlUGFja2VkLCBjb3VudCwg
dHlwZVBhY2tlZCwgaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5zdGFuY2Vjb3VudCwgYmFzZXZlcnRleCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShFbmFibGVDbGllbnRTdGF0ZSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGFycmF5UGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxlbWVudHNJ
bnN0YW5jZWRCYXNlVmVydGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcywgaW5zdGFuY2Vj
b3VudCwgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRl
eCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
aW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFz
ZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIsICJjb250
ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpbmRleCk7CisgICAg
RVZFTlQoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVCIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVu
dW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAweCUwMTYi
IFBSSXhQVFIgIiwgR0xzaXplaSBpbnN0YW5jZWNvdW50ID0gJWQsIEdMaW50IGJhc2V2ZXJ0ZXgg
PSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2Vz
LCBpbnN0YW5jZWNvdW50LAorICAgICAgICAgIGJhc2V2ZXJ0ZXgpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29udGV4dCwgaW5kZXgpKTsKKyAgICAgICAgUHJpbWl0
aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5
cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNv
dW50LCB0eXBlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGluc3RhbmNlY291bnQsIGJhc2V2ZXJ0ZXgp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgICAgICAgICBjb250ZXh0
LT5kcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4KG1vZGVQYWNrZWQsIGNvdW50LCB0eXBl
UGFja2VkLCBpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaW5kZXgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdFbGVtZW50c0luc3Rh
bmNlZEJhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBpbnN0YW5jZWNv
dW50LCBiYXNldmVydGV4KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlaUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgp
Cit2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmlu
ZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZWNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2
ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRW5hYmxlaSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5kZXgpOwor
ICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMc2l6ZWkgY291bnQgPSAlZCwg
R0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAiCisgICAgICAgICAgIippbmRpY2VzID0gMHgl
MDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCA9ICVkLCBHTGludCBiYXNldmVy
dGV4ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCBjb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RHJhd0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5k
aWNlcywgaW5zdGFuY2Vjb3VudCwKKyAgICAgICAgICBiYXNldmVydGV4KTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlaShj
b250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1v
ZGUpOworICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFz
ZVZlcnRleE9FUygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxlaSh0YXJn
ZXQsIGluZGV4KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZEJh
c2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlY291
bnQsIGJhc2V2ZXJ0ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRW5hYmxl
aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBtb2RlUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFj
a2VkLCBpbmRpY2VzLCBpbnN0YW5jZWNvdW50LCBiYXNldmVydGV4KTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgRW5kUXVlcnlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xl
bnVtIHRhcmdldCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xFbmRRdWVyeSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250
ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlUYXJnZXQs
IHRhcmdldCkpOworICAgIEVWRU5UKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1vZGUgPSAlcywgR0xzaXplaSBjb3VudCA9ICVk
LCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICIKKyAgICAgICAgICAiKmluZGljZXMgPSAw
eCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBwcmltY291bnQgPSAlZCIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9k
ZSksIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxl
bWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBwcmltY291bnQpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRRdWVyeShjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsK
KyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERyYXdFbGVtZW50
c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPERyYXdF
bGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRFWFQoY29udGV4dCwgbW9kZVBh
Y2tlZCwgY291bnQsIHR5cGVQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlcywgcHJpbWNvdW50KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZW5k
UXVlcnkodGFyZ2V0UGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEVuZFF1ZXJ5LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3RWxl
bWVudHNJbnN0YW5jZWRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkLCBjb3Vu
dCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBFbmRRdWVyeUVYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0KQordm9pZCBHTF9BUElFTlRSWSBEcmF3UmFu
Z2VFbGVtZW50c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqaW5kaWNlcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xFbmRRdWVyeUVYVCIsICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UXVlcnlUYXJnZXQsIHRhcmdldCkpOworICAgIEVWRU5U
KCJnbERyYXdSYW5nZUVsZW1lbnRzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
bW9kZSA9ICVzLCBHTHVpbnQgc3RhcnQgPSAldSwgR0x1aW50IGVuZCA9ICV1LCBHTHNpemVpIGNv
dW50ID0gJWQsICIKKyAgICAgICAgICAiR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqaW5k
aWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgc3RhcnQsIGVuZCwg
Y291bnQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRyYXdFbGVtZW50
c1R5cGUsIHR5cGUpLCAodWludHB0cl90KWluZGljZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRz
VHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0Vs
ZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmRRdWVyeUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQpKTsK
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1Jh
bmdlRWxlbWVudHMoY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lbmRRdWVyeSh0YXJnZXRQYWNrZWQpOwor
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZVBhY2tlZCwgc3RhcnQs
IGVuZCwgY291bnQsIHR5cGVQYWNrZWQsIGluZGljZXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoRW5kUXVlcnlFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKERyYXdSYW5nZUVsZW1lbnRzLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgdHlwZVBhY2tlZCwgaW5kaWNlcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEVuZFRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2
b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5k
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGJhc2V2ZXJ0ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRW5kVHJhbnNmb3JtRmVlZGJhY2siLCAi
Y29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBFVkVOVCgiZ2xEcmF3UmFuZ2VFbGVt
ZW50c0Jhc2VWZXJ0ZXgiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0g
JXMsIEdMdWludCBzdGFydCA9ICV1LCBHTHVpbnQgZW5kID0gJXUsIEdMc2l6ZWkgY291bnQgPSAl
ZCwgIgorICAgICAgICAgICJHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICppbmRpY2VzID0g
MHglMDE2IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9k
ZSksIHN0YXJ0LCBlbmQsIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEcmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVy
dGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlRW5kVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCkpOworICAgICAgICBQcmltaXRp
dmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQ
cmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlw
ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdSYW5n
ZUVsZW1lbnRzQmFzZVZlcnRleCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgZW5k
LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZW5kVHJh
bnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSYW5nZUVsZW1lbnRz
QmFzZVZlcnRleChtb2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZVBhY2tlZCwgaW5k
aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
YXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEVuZFRyYW5zZm9y
bUZlZWRiYWNrLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9kZVBh
Y2tlZCwgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHlwZVBhY2tl
ZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi1HTHN5bmMgR0xfQVBJRU5UUlkg
RmVuY2VTeW5jQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjb25kaXRpb24s
IEdMYml0ZmllbGQgZmxhZ3MpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdSYW5nZUVsZW1lbnRzQmFz
ZVZlcnRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2V2ZXJ0
ZXgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsRmVuY2VTeW5jIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNv
bmRpdGlvbiA9ICVzLCBHTGJpdGZpZWxkIGZsYWdzID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN5bmNDb25kaXRpb24sIGNvbmRpdGlv
biksCi0gICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIGZsYWdzKS5jX3N0cigpKTsKKyAgICBFVkVOVCgiZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VW
ZXJ0ZXhFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdM
dWludCBzdGFydCA9ICV1LCBHTHVpbnQgZW5kID0gJXUsIEdMc2l6ZWkgY291bnQgPSAlZCwgIgor
ICAgICAgICAgICJHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICppbmRpY2VzID0gMHglMDE2
IiBQUkl4UFRSICIsIEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIHN0
YXJ0LCBlbmQsIGNvdW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpE
cmF3RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVydGV4KTsK
IAotICAgIEdMc3luYyByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGZW5jZVN5bmMoY29udGV4
dCwgY29uZGl0aW9uLCBmbGFncykpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2Rl
KTsKKyAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRl
eEVYVCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LCBtb2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlUGFja2VkLCBpbmRpY2VzLCBiYXNldmVydGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5mZW5jZVN5
bmMoY29uZGl0aW9uLCBmbGFncyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpGZW5jZVN5bmMsIEdMc3luYz4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSYW5n
ZUVsZW1lbnRzQmFzZVZlcnRleChtb2RlUGFja2VkLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZVBh
Y2tlZCwgaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZl
bmNlU3luYywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvbmRpdGlvbiwgZmxhZ3MsIHJldHVyblZh
bHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXRE
ZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6RmVuY2VTeW5jLCBHTHN5bmM+KCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAg
ICAgICBjb3VudCwgdHlwZVBhY2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgfQotICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBGaW5pc2hDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd1JhbmdlRWxlbWVu
dHNCYXNlVmVydGV4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
bW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFz
ZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGaW5pc2giLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNv
bnRleHQpKTsKKyAgICBFVkVOVCgiZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMsIEdMdWludCBzdGFydCA9
ICV1LCBHTHVpbnQgZW5kID0gJXUsIEdMc2l6ZWkgY291bnQgPSAlZCwgIgorICAgICAgICAgICJH
TGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICppbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIs
IEdMaW50IGJhc2V2ZXJ0ZXggPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6UHJpbWl0aXZlVHlwZSwgbW9kZSksIHN0YXJ0LCBlbmQsIGNv
dW50LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3RWxlbWVudHNU
eXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBiYXNldmVydGV4KTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRmluaXNoKGNv
bnRleHQpKTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCwgbW9kZVBhY2tlZCwgc3RhcnQsIGVuZCwgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVBhY2tlZCwgaW5k
aWNlcywgYmFzZXZlcnRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmZpbmlzaCgpOworICAgICAgICAgICAgY29udGV4dC0+ZHJh
d1JhbmdlRWxlbWVudHNCYXNlVmVydGV4KG1vZGVQYWNrZWQsIHN0YXJ0LCBlbmQsIGNvdW50LCB0
eXBlUGFja2VkLCBpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2V2ZXJ0ZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoRmluaXNoLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbW9k
ZVBhY2tlZCwgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHlwZVBh
Y2tlZCwgaW5kaWNlcywgYmFzZXZlcnRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEZpbmlzaEZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZlbmNl
KQordm9pZCBHTF9BUElFTlRSWSBEcmF3VGV4Zk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB6LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGhlaWdodCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xGaW5pc2hGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0g
JXUiLCBDSUQoY29udGV4dCksIGZlbmNlKTsKKyAgICBFVkVOVCgiZ2xEcmF3VGV4Zk9FUyIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBH
TGZsb2F0IHogPSAlZiwgR0xmbG9hdCB3aWR0aCA9ICVmLCAiCisgICAgICAgICAgIkdMZmxvYXQg
aGVpZ2h0ID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwgeiwgd2lkdGgsIGhl
aWdodCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgRmVuY2VOVklEIGZlbmNlUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2UpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZpbmlzaEZlbmNlTlYoY29udGV4dCwgZmVuY2VQ
YWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlRHJhd1RleGZPRVMoY29udGV4dCwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbmlz
aEZlbmNlTlYoZmVuY2VQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleGYoeCwg
eSwgeiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShG
aW5pc2hGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKERyYXdUZXhmT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwg
eiwgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZsdXNoQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhmdk9F
U0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGZsb2F0ICpjb29yZHMpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsRmx1c2giLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAg
ICBFVkVOVCgiZ2xEcmF3VGV4ZnZPRVMiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZsb2F0ICpj
b29yZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICAodWlu
dHB0cl90KWNvb3Jkcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUZsdXNoKGNvbnRleHQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1RleGZ2T0VTKGNvbnRleHQsIGNvb3JkcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmZsdXNoKCk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4ZnYoY29vcmRzKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZsdXNoLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleGZ2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgY29vcmRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZm
ZXJSYW5nZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgbGVuZ3RoKQordm9pZCBHTF9BUElFTlRSWQorRHJhd1RleGlPRVNDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQg
d2lkdGgsIEdMaW50IGhlaWdodCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGbHVzaE1hcHBlZEJ1ZmZlclJh
bmdlIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50
cHRyIG9mZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0gJWxsdSIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJC
LCB0YXJnZXQpLAotICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zm
c2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpKTsKKyAgICBFVkVO
VCgiZ2xEcmF3VGV4aU9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgeCA9ICVk
LCBHTGludCB5ID0gJWQsIEdMaW50IHogPSAlZCwgR0xpbnQgd2lkdGggPSAlZCwgR0xpbnQgaGVp
Z2h0ICIKKyAgICAgICAgICAiPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6
LCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJC
aW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmlu
ZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGbHVz
aE1hcHBlZEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZURyYXdUZXhpT0VTKGNvbnRleHQsIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mbHVz
aE1hcHBlZEJ1ZmZlclJhbmdlKHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAg
ICAgICAgY29udGV4dC0+ZHJhd1RleGkoeCwgeSwgeiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoRHJhd1RleGlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB6LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRmx1c2hNYXBwZWRC
dWZmZXJSYW5nZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKQordm9pZCBHTF9BUElFTlRSWSBEcmF3
VGV4aXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xpbnQgKmNvb3Jk
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMaW50cHRyIG9mZnNldCA9ICVs
bHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0gJWxsdSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpKTsKKyAgICBFVkVOVCgiZ2xEcmF3VGV4aXZP
RVMiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGludCAqY29vcmRzID0gMHglMDE2IiBQUkl4UFRS
ICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgKHVpbnRwdHJfdCljb29yZHMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRmx1
c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVu
Z3RoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdU
ZXhpdk9FUyhjb250ZXh0LCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKHRhcmdl
dFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleGl2
KGNvb3Jkcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGbHVzaE1hcHBlZEJ1
ZmZlclJhbmdlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShE
cmF3VGV4aXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZHMpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBGb2dmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd1RleHNPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaG9ydCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNob3J0IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2hvcnQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaG9ydCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaG9ydCBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRm9nZiIsICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZvZ1BhcmFtZXRlciwgcG5hbWUpLCBw
YXJhbSk7CisgICAgRVZFTlQoImdsRHJhd1RleHNPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMc2hvcnQgeCA9ICVkLCBHTHNob3J0IHkgPSAlZCwgR0xzaG9ydCB6ID0gJWQsIEdMc2hv
cnQgd2lkdGggPSAlZCwgIgorICAgICAgICAgICJHTHNob3J0IGhlaWdodCA9ICVkIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dmKGNvbnRl
eHQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd1RleHNPRVMoY29udGV4dCwgeCwgeSwgeiwgd2lkdGgs
IGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmZvZ2YocG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRy
YXdUZXhzKHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoRm9nZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleHNPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5
LCB6LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRm9nZnZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIERyYXdUZXhzdk9FU0NvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBjb25zdCBHTHNob3J0ICpjb29yZHMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRm9n
ZnYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmbG9hdCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZvZ1BhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBh
cmFtcyk7CisgICAgRVZFTlQoImdsRHJhd1RleHN2T0VTIiwgImNvbnRleHQgPSAlZCwgY29uc3Qg
R0xzaG9ydCAqY29vcmRzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAg
ICAgICAgKHVpbnRwdHJfdCljb29yZHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dmdihjb250ZXh0LCBwbmFtZSwgcGFyYW1z
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZURyYXdUZXhz
dk9FUyhjb250ZXh0LCBjb29yZHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mb2dmdihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdUZXhzdihjb29yZHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoRm9nZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3VGV4c3ZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBj
b29yZHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBGb2d4Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKK3ZvaWQgR0xfQVBJ
RU5UUlkgRHJhd1RleHhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgeiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRm9n
eCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkIHBhcmFtID0gMHgl
WCIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
Rm9nUE5hbWUsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbERyYXdUZXh4T0VTIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGZpeGVkIHggPSAweCVYLCBHTGZpeGVkIHkgPSAweCVY
LCBHTGZpeGVkIHogPSAweCVYLCBHTGZpeGVkIHdpZHRoID0gIgorICAgICAgICAgICIweCVYLCBH
TGZpeGVkIGhlaWdodCA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwgeiwg
d2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUZvZ3goY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEcmF3VGV4
eE9FUyhjb250ZXh0LCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Zm9neChwbmFtZSwgcGFy
YW0pOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHgoeCwgeSwgeiwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGb2d4LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShEcmF3VGV4eE9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHosIHdpZHRoLCBoZWlnaHQpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBGb2d4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBE
cmF3VGV4eHZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xmaXhlZCAq
Y29vcmRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZvZ3h2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBu
YW1lID0gJXMsIGNvbnN0IEdMZml4ZWQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZvZ1BOYW1l
LCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJnbERyYXdUZXh4dk9FUyIs
ICJjb250ZXh0ID0gJWQsIGNvbnN0IEdMZml4ZWQgKmNvb3JkcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgICh1aW50cHRyX3QpY29vcmRzKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9neHYo
Y29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZURyYXdUZXh4dk9FUyhjb250ZXh0LCBjb29yZHMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mb2d4dihwbmFt
ZSwgcGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHh2KGNvb3Jkcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShGb2d4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRHJhd1RleHh2T0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgY29vcmRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
RnJhbWVidWZmZXJQYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIEVHTEltYWdlVGFyZ2V0UmVu
ZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsRnJhbWVidWZmZXJQYXJhbWV0ZXJpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVk
IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpG
cmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RnJhbWVidWZmZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBhcmFtKTsKKyAgICBF
VkVOVCgiZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlZ2xJbWFnZU9FUyBpbWFnZSA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCksICh1aW50cHRyX3QpaW1hZ2Up
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlRnJhbWVidWZmZXJQYXJhbWV0ZXJpKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFt
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhjb250ZXh0LCB0YXJnZXQsIGlt
YWdlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+ZnJhbWVidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJn
ZXQsIGltYWdlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVy
UGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VP
RVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGltYWdlKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJSZW5kZXJidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0
YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCByZW5kZXJidWZmZXIpCit2b2lkIEdMX0FQSUVOVFJZIEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xl
bnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCA9ICIKLSAgICAg
ICAgICAiJXMsIEdMdWludCByZW5kZXJidWZmZXIgPSAldSIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdl
dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCwgYXR0YWNobWVudCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgcmVuZGVyYnVmZmVydGFyZ2V0KSwgcmVuZGVyYnVmZmVy
KTsKKyAgICBFVkVOVCgiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVnbEltYWdlT0VTIGltYWdlID0g
MHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgKHVpbnRwdHJfdClpbWFnZSk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVm
ZmVyUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZm
ZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dCwgdGFyZ2V0LCBhdHRh
Y2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXJQYWNrZWQpKTsKKyAgICAgICAgVGV4dHVyZVR5
cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgaW1hZ2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFj
aG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0
LT5lR0xJbWFnZVRhcmdldFRleHR1cmUyRCh0YXJnZXRQYWNrZWQsIGltYWdlKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAg
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyUGFja2VkKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgaW1hZ2UpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHJlbmRlcmJ1ZmZlcikKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlck9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
TGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0ID0gIgotICAg
ICAgICAgICIlcywgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICV1IiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFy
Z2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJB
dHRhY2htZW50LCBhdHRhY2htZW50KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCByZW5kZXJidWZmZXJ0YXJnZXQpLCByZW5kZXJidWZm
ZXIpOwordm9pZCBHTF9BUElFTlRSWSBFbmFibGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIGNhcCkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xFbmFibGUiLCAiY29udGV4dCA9ICVkLCBH
TGVudW0gY2FwID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgY2FwKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAgICAgICAgID0gRnJv
bUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5k
ZXJidWZmZXJQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlRW5hYmxlKGNvbnRleHQsIGNhcCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRh
cmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyUGFja2VkKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVuYWJsZShjYXApOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVydGFyZ2V0
LCByZW5kZXJidWZmZXJQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEVuYWJsZSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGNhcCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZy
YW1lYnVmZmVyVGV4dHVyZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCkKK3ZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlQ2xpZW50U3RhdGVD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGFycmF5KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbEZyYW1lYnVmZmVyVGV4dHVyZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTHVpbnQgdGV4dHVyZSA9ICV1
LCBHTGludCAiCi0gICAgICAgICAgImxldmVsID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQp
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQsIGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgRVZFTlQoImdsRW5hYmxl
Q2xpZW50U3RhdGUiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gYXJyYXkgPSAlcyIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2FwLCBh
cnJheSkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgQ2xpZW50VmVydGV4QXJyYXlU
eXBlIGFycmF5UGFja2VkID0gRnJvbUdMPENsaWVudFZlcnRleEFycmF5VHlwZT4oYXJyYXkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2ht
ZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVFbmFibGVDbGllbnRTdGF0ZShjb250ZXh0LCBhcnJheVBh
Y2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZSh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQ
YWNrZWQsIGxldmVsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVuYWJsZUNsaWVudFN0YXRlKGFy
cmF5UGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVy
VGV4dHVyZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVy
ZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoRW5hYmxlQ2xpZW50U3RhdGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhcnJheVBhY2tl
ZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZTJEQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdGV4dHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwpCit2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gdGV4
dGFyZ2V0ID0gJXMsIEdMdWludCAiCi0gICAgICAgICAgInRleHR1cmUgPSAldSwgR0xpbnQgbGV2
ZWwgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRleHRhcmdl
dCksIHRleHR1cmUsIGxldmVsKTsKKyAgICBFVkVOVCgiZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpbmRl
eCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0ZXh0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdl
dCk7Ci0gICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQsIHRhcmdldCwgYXR0YWNo
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGNvbnRleHQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQo
dGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUyRCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0YXJn
ZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4KTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBs
ZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdGV4dHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHNhbXBsZXMpCit2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZy
YW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFjaG1lbnQgPSAlcywgR0xlbnVtIHRl
eHRhcmdldCA9ICVzLCBHTHVpbnQgIgotICAgICAgICAgICJ0ZXh0dXJlID0gJXUsIEdMaW50IGxl
dmVsID0gJWQsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2ht
ZW50LCBhdHRhY2htZW50KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVRhcmdldCwgdGV4dGFyZ2V0KSwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOworICAg
IEVWRU5UKCJnbEVuYWJsZWkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
dWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVy
VGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwg
c2FtcGxlcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVF
bmFibGVpKGNvbnRleHQsIHRhcmdldCwgaW5kZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRE11
bHRpc2FtcGxlKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ft
cGxlcyk7CisgICAgICAgICAgICBjb250ZXh0LT5lbmFibGVpKHRhcmdldCwgaW5kZXgpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNh
bXBsZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsLCBzYW1wbGVzKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShFbmFibGVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBpbmRleCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVy
ZTJET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGV4dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCit2b2lkIEdMX0FQ
SUVOVFJZIEVuYWJsZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTJE
T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51
bSBhdHRhY2htZW50ID0gJXMsIEdMZW51bSB0ZXh0YXJnZXQgPSAlcywgR0x1aW50ICIKLSAgICAg
ICAgICAidGV4dHVyZSA9ICV1LCBHTGludCBsZXZlbCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFy
Z2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJB
dHRhY2htZW50LCBhdHRhY2htZW50KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZVRhcmdldCwgdGV4dGFyZ2V0KSwgdGV4dHVyZSwgbGV2ZWwpOworICAgIEVW
RU5UKCJnbEVuYWJsZWlFWFQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
dWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsKLSAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVi
dWZmZXJUZXh0dXJlMkRPRVMoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dGFy
Z2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkLCBsZXZlbCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRW5hYmxlaUVYVChjb250ZXh0LCB0
YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50
LCB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZXZlbCk7CisgICAgICAgICAgICBjb250ZXh0LT5lbmFibGVp
KHRhcmdldCwgaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRnJhbWVi
dWZmZXJUZXh0dXJlMkRPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2Vk
LCBsZXZlbCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRW5hYmxlaUVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldCwgaW5kZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBG
cmFtZWJ1ZmZlclRleHR1cmUzRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxl
dmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB6b2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBFbmFibGVpT0VTQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gdGV4
dGFyZ2V0ID0gJXMsIEdMdWludCAiCi0gICAgICAgICAgInRleHR1cmUgPSAldSwgR0xpbnQgbGV2
ZWwgPSAlZCwgR0xpbnQgem9mZnNldCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50
LCBhdHRhY2htZW50KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4
dHVyZVRhcmdldCwgdGV4dGFyZ2V0KSwgdGV4dHVyZSwgbGV2ZWwsIHpvZmZzZXQpOworICAgIEVW
RU5UKCJnbEVuYWJsZWlPRVMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
dWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpFbmFibGVDYXAsIHRhcmdldCksIGluZGV4KTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRleHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsKLSAgICAgICAgVGV4dHVy
ZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJ
RD4odGV4dHVyZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVG
cmFtZWJ1ZmZlclRleHR1cmUzRE9FUyhjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldFBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleHR1cmVQYWNrZWQsIGxldmVsLCB6b2Zmc2V0KSk7CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuYWJsZWlPRVMoY29udGV4dCwgdGFyZ2V0LCBp
bmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTNEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFy
Z2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHpvZmZzZXQpOworICAgICAgICAgICAgY29udGV4dC0+ZW5hYmxl
aSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1l
YnVmZmVyVGV4dHVyZTNET0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2ht
ZW50LAotICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tl
ZCwgbGV2ZWwsIHpvZmZzZXQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEVuYWJsZWlPRVMsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4KTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKQordm9pZCBHTF9B
UElFTlRSWSBFbmRRdWVyeUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFy
Z2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZUVYVCIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVz
LCBHTHVpbnQgdGV4dHVyZSA9ICV1LCBHTGludCAiCi0gICAgICAgICAgImxldmVsID0gJWQiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1l
YnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCk7
CisgICAgRVZFTlQoImdsRW5kUXVlcnkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBU
ZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUVYVChjb250ZXh0LCB0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CisgICAgICAgIFF1ZXJ5
VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlRW5kUXVlcnkoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJU
ZXh0dXJlKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpOworICAgICAg
ICAgICAgY29udGV4dC0+ZW5kUXVlcnkodGFyZ2V0UGFja2VkKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyVGV4dHVyZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFj
a2VkLCBsZXZlbCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRW5kUXVlcnksIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBG
cmFtZWJ1ZmZlclRleHR1cmVMYXllckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsYXllcikK
K3ZvaWQgR0xfQVBJRU5UUlkgRW5kUXVlcnlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXll
ciIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
YXR0YWNobWVudCA9ICVzLCBHTHVpbnQgdGV4dHVyZSA9ICV1LCBHTGludCAiCi0gICAgICAgICAg
ImxldmVsID0gJWQsIEdMaW50IGxheWVyID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAot
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQsIGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOworICAgIEVWRU5UKCJnbEVu
ZFF1ZXJ5RVhUIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lEKGNvbnRl
eHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVRhcmdldCwg
dGFyZ2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZUlEIHRleHR1
cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVy
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tlZCwg
bGV2ZWwsIGxheWVyKSk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUVuZFF1
ZXJ5RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmVuZFF1ZXJ5KHRhcmdldFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmVMYXllciwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
UGFja2VkLCBsZXZlbCwgbGF5ZXIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEVuZFF1ZXJ5RVhU
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgdGV4dHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYmFzZVZpZXdJ
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbnVtVmlld3MpCit2b2lkIEdMX0FQSUVOVFJZIEVuZFRyYW5zZm9y
bUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
RnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMdWludCB0ZXh0
dXJlID0gJXUsIEdMaW50ICIKLSAgICAgICAgICAibGV2ZWwgPSAlZCwgR0xpbnQgYmFzZVZpZXdJ
bmRleCA9ICVkLCBHTHNpemVpIG51bVZpZXdzID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQp
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQsIGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCwKLSAgICAgICAgICBiYXNlVmlld0lu
ZGV4LCBudW1WaWV3cyk7CisgICAgRVZFTlQoImdsRW5kVHJhbnNmb3JtRmVlZGJhY2siLCAiY29u
dGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUlEPih0ZXh0dXJlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlld09W
Uihjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwsIGJhc2VWaWV3
SW5kZXgsIG51bVZpZXdzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUVuZFRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1
cmVNdWx0aXZpZXcodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlUGFja2VkLCBsZXZlbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVmlld0lu
ZGV4LCBudW1WaWV3cyk7CisgICAgICAgICAgICBjb250ZXh0LT5lbmRUcmFuc2Zvcm1GZWVkYmFj
aygpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0dXJl
TXVsdGl2aWV3T1ZSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAot
ICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVQYWNrZWQsIGxldmVsLCBiYXNlVmlld0luZGV4
LCBudW1WaWV3cyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRW5kVHJhbnNmb3JtRmVlZGJhY2ss
IGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRnJv
bnRGYWNlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlKQorR0xzeW5j
IEdMX0FQSUVOVFJZIEZlbmNlU3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEZyb250RmFj
ZSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyb250RmFjZURpcmVjdGlvbiwgbW9k
ZSkpOworICAgIEVWRU5UKCJnbEZlbmNlU3luYyIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb25k
aXRpb24gPSAlcywgR0xiaXRmaWVsZCBmbGFncyA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTeW5jQ29uZGl0aW9uLCBjb25kaXRpb24p
LAorICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCBmbGFncykuY19zdHIoKSk7CiAKKyAgICBHTHN5bmMgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGcm9udEZhY2Uo
Y29udGV4dCwgbW9kZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlRmVuY2VTeW5jKGNvbnRleHQsIGNvbmRpdGlvbiwgZmxhZ3MpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5mcm9udEZhY2UobW9kZSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmZl
bmNlU3luYyhjb25kaXRpb24sIGZsYWdzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEZyb250RmFjZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGUpOworICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OkZlbmNlU3luYywgR0xzeW5jPigpOworICAgICAgICB9CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoRmVuY2VTeW5jLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29uZGl0aW9u
LCBmbGFncywgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpGZW5jZVN5bmMs
IEdMc3luYz4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEZydXN0dW1mQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IGYpCit2b2lkIEdMX0FQSUVOVFJZIEZpbmlzaENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEZydXN0dW1mIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGZsb2F0IGwgPSAlZiwgR0xmbG9hdCByID0gJWYsIEdMZmxvYXQgYiA9ICVmLCBHTGZsb2F0
IHQgPSAlZiwgR0xmbG9hdCBuICIKLSAgICAgICAgICAiPSAlZiwgR0xmbG9hdCBmID0gJWYiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgbCwgciwgYiwgdCwgbiwgZik7CisgICAgRVZFTlQoImds
RmluaXNoIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVG
cnVzdHVtZihjb250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZpbmlzaChjb250ZXh0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZnJ1c3R1bWYobCwg
ciwgYiwgdCwgbiwgZik7CisgICAgICAgICAgICBjb250ZXh0LT5maW5pc2goKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEZydXN0dW1mLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bCwgciwgYiwgdCwgbiwgZik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmluaXNoLCBpc0NhbGxW
YWxpZCwgY29udGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEZydXN0dW14Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZml4ZWQgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZp
eGVkIGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCBuLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGYpCit2b2lkIEdMX0FQSUVO
VFJZIEZpbmlzaEZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZl
bmNlKQogewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEZydXN0dW14IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGZpeGVkIGwgPSAweCVYLCBHTGZpeGVkIHIgPSAweCVYLCBHTGZpeGVkIGIgPSAweCVYLCBH
TGZpeGVkIHQgPSAweCVYLCAiCi0gICAgICAgICAgIkdMZml4ZWQgbiA9IDB4JVgsIEdMZml4ZWQg
ZiA9IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbCwgciwgYiwgdCwgbiwgZik7Cisg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Cisg
ICAgRVZFTlQoImdsRmluaXNoRmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9
ICV1IiwgQ0lEKGNvbnRleHQpLCBmZW5jZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2UpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
RnJ1c3R1bXgoY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZikpOworICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGaW5pc2hGZW5jZU5WKGNvbnRleHQsIGZl
bmNlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+ZnJ1c3R1bXgobCwgciwgYiwgdCwgbiwgZik7CisgICAgICAgICAgICBj
b250ZXh0LT5maW5pc2hGZW5jZU5WKGZlbmNlUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEZydXN0dW14LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbCwgciwgYiwgdCwg
biwgZik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRmluaXNoRmVuY2VOViwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGZlbmNlUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2Vu
QnVmZmVyc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAq
YnVmZmVycykKK3ZvaWQgR0xfQVBJRU5UUlkgRmx1c2hDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5CdWZmZXJzIiwgImNvbnRleHQgPSAlZCwgR0xzaXpl
aSBuID0gJWQsIEdMdWludCAqYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpYnVmZmVycyk7CisgICAgRVZFTlQoImdsRmx1
c2giLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBCdWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8QnVmZmVySUQgKj4oYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuQnVmZmVycyhjb250ZXh0LCBuLCBidWZmZXJzUGFj
a2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZsdXNo
KGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZW5CdWZmZXJzKG4sIGJ1ZmZlcnNQYWNrZWQpOworICAgICAgICAgICAg
Y29udGV4dC0+Zmx1c2goKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbkJ1
ZmZlcnMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBidWZmZXJzUGFja2VkKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShGbHVzaCwgaXNDYWxsVmFsaWQsIGNvbnRleHQpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBHZW5GZW5jZXNOVkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKQordm9pZCBHTF9BUElFTlRSWSBGbHVzaE1hcHBl
ZEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBsZW5ndGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuRmVuY2VzTlYiLCAi
Y29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpmZW5jZXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWZlbmNlcyk7
CisgICAgRVZFTlQoImdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZSIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNp
emVpcHRyIGxlbmd0aCA9ICVsbHUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKKyAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4obGVuZ3RoKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
RmVuY2VOVklEICpmZW5jZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZl
bmNlTlZJRCAqPihmZW5jZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdlbkZlbmNlc05WKGNvbnRleHQsIG4sIGZlbmNlc1BhY2tlZCkpOworICAg
ICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5GZW5jZXNOVihuLCBm
ZW5jZXNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Zmx1c2hNYXBwZWRCdWZmZXJSYW5n
ZSh0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdlbkZlbmNlc05WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgZmVuY2VzUGFj
a2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIEdlbkZyYW1lYnVmZmVyc0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKQordm9pZCBHTF9BUElF
TlRSWSBGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2VuRnJhbWVidWZmZXJzIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THNpemVpIG4gPSAlZCwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIs
IENJRChjb250ZXh0KSwgbiwKLSAgICAgICAgICAodWludHB0cl90KWZyYW1lYnVmZmVycyk7Cisg
ICAgRVZFTlQoImdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNp
emVpcHRyIGxlbmd0aCA9ICVsbHUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKKyAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4obGVuZ3RoKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
RnJhbWVidWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkICAgICAgICAgICAgID0gRnJvbUdMPEZy
YW1lYnVmZmVySUQgKj4oZnJhbWVidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5GcmFtZWJ1ZmZlcnMo
Y29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZm
ZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2Vu
RnJhbWVidWZmZXJzKG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0
LT5mbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuRnJhbWVidWZmZXJzLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuRnJhbWVidWZmZXJzT0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpCit2b2lkIEdM
X0FQSUVOVFJZIEZvZ2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0IHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdlbkZyYW1lYnVmZmVyc09FUyIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqZnJhbWVidWZm
ZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCi0gICAgICAgICAgKHVp
bnRwdHJfdClmcmFtZWJ1ZmZlcnMpOworICAgIEVWRU5UKCJnbEZvZ2YiLCAiY29udGV4dCA9ICVk
LCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBwYXJhbSA9ICVmIiwgQ0lEKGNvbnRleHQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGb2dQYXJhbWV0ZXIsIHBuYW1l
KSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEZyYW1lYnVmZmVySUQg
KmZyYW1lYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEICo+
KGZyYW1lYnVmZmVycyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2Vu
RnJhbWVidWZmZXJzT0VTKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGb2dmKGNvbnRleHQsIHBuYW1l
LCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmdlbkZyYW1lYnVmZmVycyhuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpOworICAg
ICAgICAgICAgY29udGV4dC0+Zm9nZihwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2VuRnJhbWVidWZmZXJzT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
biwgZnJhbWVidWZmZXJzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGb2dmLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgR2VuUHJvZ3JhbVBpcGVsaW5lc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THNpemVpIG4sIEdMdWludCAqcGlwZWxpbmVzKQordm9pZCBHTF9BUElFTlRSWSBGb2dmdkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBh
cmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpwaXBlbGluZXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKLSAgICAgICAgICAodWludHB0cl90KXBpcGVs
aW5lcyk7CisgICAgRVZFTlQoImdsRm9nZnYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZvZ1BhcmFtZXRl
ciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgKnBpcGVsaW5lc1BhY2tlZCAgICAgICAgICAgID0gRnJv
bUdMPFByb2dyYW1QaXBlbGluZUlEICo+KHBpcGVsaW5lcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuUHJvZ3JhbVBpcGVsaW5lcyhjb250ZXh0
LCBuLCBwaXBlbGluZXNQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlRm9nZnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdlblByb2dyYW1Q
aXBlbGluZXMobiwgcGlwZWxpbmVzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZvZ2Z2
KHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUHJv
Z3JhbVBpcGVsaW5lcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHBpcGVsaW5lc1BhY2tlZCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRm9nZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuUXVlcmllc0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqaWRzKQordm9pZCBH
TF9BUElFTlRSWSBGb2d4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFt
ZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5RdWVyaWVzIiwgImNvbnRleHQg
PSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClpZHMpOworICAgIEVWRU5UKCJn
bEZvZ3giLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9
IDB4JVgiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkZvZ1BOYW1lLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBRdWVyeUlEICppZHNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UXVlcnlJRCAqPihpZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2VuUXVlcmllcyhjb250ZXh0LCBuLCBpZHNQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRm9neChjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZW5RdWVyaWVzKG4sIGlkc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mb2d4KHBuYW1l
LCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5RdWVyaWVzLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShGb2d4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgR2VuUXVlcmllc0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTHNpemVpIG4sIEdMdWludCAqaWRzKQordm9pZCBHTF9BUElFTlRSWSBGb2d4dkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBh
cmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEdlblF1ZXJpZXNFWFQiLCAiY29udGV4dCA9ICVkLCBHTHNp
emVpIG4gPSAlZCwgR0x1aW50ICppZHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBuLCAodWludHB0cl90KWlkcyk7CisgICAgRVZFTlQoImdsRm9neHYiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFyYW0gPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6Rm9nUE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCAqaWRzUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5RdWVyaWVzRVhUKGNvbnRleHQs
IG4sIGlkc1BhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVGb2d4dihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5RdWVyaWVzKG4sIGlkc1Bh
Y2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mb2d4dihwbmFtZSwgcGFyYW0pOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUXVlcmllc0VYVCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG4sIGlkc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRm9neHYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZW5SZW5kZXJidWZmZXJzQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6
ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZl
clBhcmFtZXRlcmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5SZW5kZXJidWZmZXJzIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpyZW5kZXJidWZmZXJzID0g
MHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgbiwgKHVpbnRwdHJf
dClyZW5kZXJidWZmZXJzKTsKKyAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclBhcmFtZXRlcmkiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMaW50IHBhcmFtID0gJWQiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclBhcmFtZXRlck5hbWUs
IHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFJlbmRlcmJ1
ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkICAgICAgICAgICA9IEZyb21HTDxSZW5kZXJidWZm
ZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZW5SZW5kZXJidWZmZXJzKGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJh
bWVidWZmZXJQYXJhbWV0ZXJpKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2Vu
UmVuZGVyYnVmZmVycyhuLCByZW5kZXJidWZmZXJzUGFja2VkKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmZyYW1lYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5SZW5kZXJidWZmZXJzLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
RnJhbWVidWZmZXJQYXJhbWV0ZXJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBwbmFt
ZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5SZW5kZXJidWZmZXJz
T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5k
ZXJidWZmZXJzKQordm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHJlbmRlcmJ1ZmZlcnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZW5SZW5kZXJidWZmZXJzT0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4g
PSAlZCwgR0x1aW50ICpyZW5kZXJidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29u
dGV4dCksCi0gICAgICAgICAgbiwgKHVpbnRwdHJfdClyZW5kZXJidWZmZXJzKTsKKyAgICBFVkVO
VCgiZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gcmVuZGVy
YnVmZmVydGFyZ2V0ID0gIgorICAgICAgICAgICIlcywgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICV1
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpG
cmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwKKyAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCByZW5kZXJidWZm
ZXJ0YXJnZXQpLCByZW5kZXJidWZmZXIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkICAgICAgICAgICA9IEZyb21HTDxS
ZW5kZXJidWZmZXJJRCAqPihyZW5kZXJidWZmZXJzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzT0VTKGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZl
cnNQYWNrZWQpKTsKKyAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0g
RnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1
ZmZlcnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbmRlcmJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdlblJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVy
c1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclBhY2tlZCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5SZW5kZXJidWZmZXJzT0VTLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoRnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQs
IGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVydGFyZ2V0LCBy
ZW5kZXJidWZmZXJQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5TYW1w
bGVyc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIGNvdW50LCBHTHVpbnQg
KnNhbXBsZXJzKQordm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FU0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNo
bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xHZW5TYW1wbGVycyIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgY291bnQg
PSAlZCwgR0x1aW50ICpzYW1wbGVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIGNvdW50LCAodWludHB0cl90KXNhbXBsZXJzKTsKKyAgICBFVkVOVCgiZ2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xl
bnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0ID0gIgorICAgICAgICAgICIlcywgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICV1IiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFt
ZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCByZW5kZXJidWZmZXJ0
YXJnZXQpLCByZW5kZXJidWZmZXIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNh
bXBsZXJJRCAqc2FtcGxlcnNQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1w
bGVySUQgKj4oc2FtcGxlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
UmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklE
PihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlR2VuU2FtcGxlcnMoY29udGV4dCwgY291bnQsIHNhbXBsZXJzUGFj
a2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0
LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXJQYWNrZWQpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5TYW1w
bGVycyhjb3VudCwgc2FtcGxlcnNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZm
ZXJQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuU2FtcGxlcnMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCwgc2FtcGxlcnNQYWNrZWQpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyT0VTLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgR2VuU2VtYXBob3Jlc0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNp
emVpIG4sIEdMdWludCAqc2VtYXBob3JlcykKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJU
ZXh0dXJlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4
dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdlblNlbWFwaG9yZXNFWFQiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKnNlbWFwaG9yZXMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKLSAgICAgICAgICAodWludHB0cl90KXNl
bWFwaG9yZXMpOworICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZSIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVz
LCBHTHVpbnQgdGV4dHVyZSA9ICV1LCBHTGludCAiCisgICAgICAgICAgImxldmVsID0gJWQiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1l
YnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQ
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEICo+KHNlbWFwaG9yZXMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0
ZXh0dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdlblNlbWFwaG9yZXNFWFQoY29udGV4dCwgbiwgc2VtYXBob3Jlc1BhY2tlZCkp
OworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZShjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQs
IHRleHR1cmVQYWNrZWQsIGxldmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2VuU2VtYXBob3JlcyhuLCBzZW1hcGhvcmVzUGFj
a2VkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZSh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdlblNlbWFwaG9yZXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCBzZW1h
cGhvcmVzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZW5UZXh0dXJlc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4s
IEdMdWludCAqdGV4dHVyZXMpCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZTJE
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuVGV4dHVyZXMiLCAi
Y29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICp0ZXh0dXJlcyA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpdGV4dHVy
ZXMpOworICAgIEVWRU5UKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTJEIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdM
ZW51bSB0ZXh0YXJnZXQgPSAlcywgR0x1aW50ICIKKyAgICAgICAgICAidGV4dHVyZSA9ICV1LCBH
TGludCBsZXZlbCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJBdHRhY2htZW50LCBhdHRhY2htZW50
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGV4dGFyZ2V0KSwgdGV4dHVyZSwgbGV2ZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlSUQgKj4odGV4dHVyZXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdlblRleHR1cmVzKGNvbnRleHQsIG4sIHRleHR1cmVzUGFja2Vk
KSk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRhcmdldCk7CisgICAgICAgIFRl
eHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQsIHRhcmdl
dCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZW5UZXh0dXJlcyhuLCB0ZXh0dXJlc1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5m
cmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldFBhY2tlZCwg
dGV4dHVyZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxldmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblRleHR1cmVzLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgbiwgdGV4dHVyZXNQYWNrZWQpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKEZyYW1lYnVmZmVyVGV4dHVyZTJELCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwgdGV4
dHVyZVBhY2tlZCwgbGV2ZWwpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5UcmFu
c2Zvcm1GZWVkYmFja3NDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBH
THVpbnQgKmlkcykKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNh
bXBsZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHNhbXBsZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICppZHMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKLSAgICAgICAgICAodWludHB0cl90KWlk
cyk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNo
bWVudCA9ICVzLCBHTGVudW0gdGV4dGFyZ2V0ID0gJXMsIEdMdWludCAiCisgICAgICAgICAgInRl
eHR1cmUgPSAldSwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xzaXplaSBzYW1wbGVzID0gJWQiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVm
ZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0ZXh0YXJnZXQpLCB0ZXh0dXJlLCBs
ZXZlbCwgc2FtcGxlcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVHJhbnNmb3Jt
RmVlZGJhY2tJRCAqaWRzUGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFRyYW5zZm9ybUZl
ZWRiYWNrSUQgKj4oaWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZy
YW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJl
LCBsZXZlbCwgc2FtcGxlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmdlblRyYW5zZm9ybUZlZWRiYWNrcyhuLCBpZHNQYWNrZWQp
OworICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZSh0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuVHJhbnNmb3JtRmVlZGJhY2tzLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbiwgaWRzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShG
cmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldCwgdGV4
dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZW5W
ZXJ0ZXhBcnJheXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVp
bnQgKmFycmF5cykKK3ZvaWQgR0xfQVBJRU5UUlkgRnJhbWVidWZmZXJUZXh0dXJlMkRPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0ZXh0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5W
ZXJ0ZXhBcnJheXMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICphcnJh
eXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAodWlu
dHB0cl90KWFycmF5cyk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlMkRPRVMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFj
aG1lbnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBHTHVpbnQgIgorICAgICAgICAgICJ0
ZXh0dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQsIGF0dGFjaG1lbnQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlVGFyZ2V0LCB0ZXh0YXJnZXQpLCB0ZXh0dXJlLCBsZXZlbCk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgVmVydGV4QXJyYXlJRCAqYXJyYXlzUGFja2VkICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFZlcnRleEFycmF5SUQgKj4oYXJyYXlzKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMoY29udGV4
dCwgbiwgYXJyYXlzUGFja2VkKSk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGV4dGFyZ2V0UGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRleHRh
cmdldCk7CisgICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4odGV4dHVyZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVy
ZTJET0VTKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmdldFBhY2tlZCwg
dGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5WZXJ0ZXhBcnJheXMobiwgYXJyYXlzUGFja2Vk
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0
YWNobWVudCwgdGV4dGFyZ2V0UGFja2VkLCB0ZXh0dXJlUGFja2VkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2VuVmVydGV4QXJyYXlzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgYXJy
YXlzUGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmUyRE9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0YXJnZXRQYWNrZWQsIHRleHR1cmVQYWNrZWQsIGxldmVsKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2VuVmVydGV4QXJyYXlzT0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpCit2b2lkIEdMX0FQSUVO
VFJZIEZyYW1lYnVmZmVyVGV4dHVyZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHpvZmZzZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2VuVmVydGV4QXJyYXlzT0VT
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICphcnJh
eXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKLSAgICAgICAgICAodWlu
dHB0cl90KWFycmF5cyk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGF0dGFj
aG1lbnQgPSAlcywgR0xlbnVtIHRleHRhcmdldCA9ICVzLCBHTHVpbnQgIgorICAgICAgICAgICJ0
ZXh0dXJlID0gJXUsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHpvZmZzZXQgPSAlZCIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZm
ZXJUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0YWNobWVudCksCisgICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRleHRhcmdldCksIHRleHR1cmUsIGxl
dmVsLCB6b2Zmc2V0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBcnJh
eUlEICphcnJheXNQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJ
RCAqPihhcnJheXMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVRhcmdldCB0ZXh0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGV4dGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0
dXJlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdlblZlcnRleEFycmF5c09FUyhjb250ZXh0LCBuLCBhcnJheXNQYWNrZWQpKTsKKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFs
aWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyhjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQs
IHRleHRhcmdldFBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHR1cmVQYWNrZWQsIGxldmVsLCB6b2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2VuVmVydGV4QXJyYXlz
KG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1
cmUzRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldFBhY2tlZCwgdGV4dHVyZVBhY2tlZCwg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b2Zmc2V0
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblZlcnRleEFycmF5c09FUywg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGFycmF5c1BhY2tlZCk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXQsIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgdGV4dGFyZ2V0UGFja2VkLCB0
ZXh0dXJlUGFja2VkLCBsZXZlbCwgem9mZnNldCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEdlbmVyYXRlTWlwbWFwQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0
YXJnZXQpCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZUVYVENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZW5lcmF0ZU1pcG1hcCIsICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSk7CisgICAgRVZFTlQoImdsRnJh
bWVidWZmZXJUZXh0dXJlRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMdWludCB0ZXh0dXJlID0gJXUsIEdM
aW50ICIKKyAgICAgICAgICAibGV2ZWwgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCwgYXR0YWNobWVudCksIHRleHR1cmUsIGxldmVsKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuZXJhdGVNaXBtYXAoY29udGV4
dCwgdGFyZ2V0UGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlRVhUKGNvbnRleHQs
IHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZW5lcmF0ZU1p
cG1hcCh0YXJnZXRQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0
dXJlKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuZXJhdGVNaXBtYXAsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXRQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEZyYW1lYnVmZmVyVGV4
dHVyZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEdlbmVyYXRlTWlwbWFwT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSB0YXJnZXQpCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2ht
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxheWVyKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdl
bmVyYXRlTWlwbWFwT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lE
KGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
VGFyZ2V0LCB0YXJnZXQpKTsKKyAgICBFVkVOVCgiZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllciIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0
YWNobWVudCA9ICVzLCBHTHVpbnQgdGV4dHVyZSA9ICV1LCBHTGludCAiCisgICAgICAgICAgImxl
dmVsID0gJWQsIEdMaW50IGxheWVyID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQs
IGF0dGFjaG1lbnQpLCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5lcmF0ZU1pcG1hcE9FUyhjb250ZXh0LCB0YXJn
ZXRQYWNrZWQpKTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlRnJhbWVidWZmZXJU
ZXh0dXJlTGF5ZXIoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVBhY2tl
ZCwgbGV2ZWwsIGxheWVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0UGFja2VkKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZVBhY2tlZCwgbGV2ZWwsIGxheWVyKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdlbmVyYXRlTWlwbWFwT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShGcmFtZWJ1ZmZlclRleHR1cmVMYXllciwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlUGFja2VkLCBsZXZlbCwgbGF5ZXIpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBHZXRBY3RpdmVBdHRyaWJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCit2b2lkIEdMX0FQSUVOVFJZIEZyYW1lYnVmZmVy
VGV4dHVyZU11bHRpdmlld09WUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJhc2VWaWV3SW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVZp
ZXdzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEdldEFjdGl2ZUF0dHJpYiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0x1aW50IGluZGV4ID0gJXUsIEdMc2l6ZWkg
YnVmU2l6ZSA9ICVkLCBHTHNpemVpICIKLSAgICAgICAgICAiKmxlbmd0aCA9IDB4JTAxNiIgUFJJ
eFBUUiAiLCBHTGludCAqc2l6ZSA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51
bSAqdHlwZSA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwg
KHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3Qpc2l6ZSwKLSAgICAgICAgICAodWludHB0cl90
KXR5cGUsICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsRnJhbWVidWZmZXJUZXh0dXJl
TXVsdGl2aWV3T1ZSIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0g
JXMsIEdMZW51bSBhdHRhY2htZW50ID0gJXMsIEdMdWludCB0ZXh0dXJlID0gJXUsIEdMaW50ICIK
KyAgICAgICAgICAibGV2ZWwgPSAlZCwgR0xpbnQgYmFzZVZpZXdJbmRleCA9ICVkLCBHTHNpemVp
IG51bVZpZXdzID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQp
LCB0ZXh0dXJlLCBsZXZlbCwKKyAgICAgICAgICBiYXNlVmlld0luZGV4LCBudW1WaWV3cyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlwZSwgbmFtZSkp
OworICAgICAgICBUZXh0dXJlSUQgdGV4dHVyZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0dXJlUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxldmVsLCBiYXNlVmlld0luZGV4LCBudW1WaWV3cykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEFjdGl2ZUF0
dHJpYihwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBu
YW1lKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmlldyh0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmVQYWNrZWQsIGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VWaWV3SW5kZXgsIG51bVZpZXdz
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFjdGl2ZUF0dHJpYiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoRnJhbWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVQ
YWNrZWQsIGxldmVsLCBiYXNlVmlld0luZGV4LCBudW1WaWV3cyk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRSWSBG
cm9udEZhY2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2V0QWN0aXZlVW5pZm9ybSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHByb2dyYW0gPSAldSwgR0x1aW50IGluZGV4ID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9
ICVkLCBHTHNpemVpICIKLSAgICAgICAgICAiKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUiAiLCBH
TGludCAqc2l6ZSA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSAqdHlwZSA9
IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwgKHVpbnRwdHJf
dClsZW5ndGgsICh1aW50cHRyX3Qpc2l6ZSwKLSAgICAgICAgICAodWludHB0cl90KXR5cGUsICh1
aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsRnJvbnRGYWNlIiwgImNvbnRleHQgPSAlZCwg
R0xlbnVtIG1vZGUgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RnJvbnRGYWNlRGlyZWN0aW9uLCBtb2RlKSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCB0eXBlLCBuYW1lKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZyb250RmFjZShjb250ZXh0LCBt
b2RlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZyb250RmFj
ZShtb2RlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFjdGl2ZVVuaWZv
cm0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwg
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgIHNpemUsIHR5cGUsIG5hbWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEZyb250RmFjZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGUpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICp1bmlmb3Jt
QmxvY2tOYW1lKQordm9pZCBHTF9BUElFTlRSWSBGcnVzdHVtZkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBmKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVuaWZv
cm1CbG9ja05hbWUiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0g
JXUsIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwg
IgotICAgICAgICAgICJHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFy
ICp1bmlmb3JtQmxvY2tOYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsICh1aW50cHRyX3Qp
bGVuZ3RoLAotICAgICAgICAgICh1aW50cHRyX3QpdW5pZm9ybUJsb2NrTmFtZSk7CisgICAgRVZF
TlQoImdsRnJ1c3R1bWYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgbCA9ICVm
LCBHTGZsb2F0IHIgPSAlZiwgR0xmbG9hdCBiID0gJWYsIEdMZmxvYXQgdCA9ICVmLCBHTGZsb2F0
IG4gIgorICAgICAgICAgICI9ICVmLCBHTGZsb2F0IGYgPSAlZiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBsLCByLCBiLCB0LCBuLCBmKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgdW5pZm9ybUJsb2NrTmFtZSkpOworICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVGcnVzdHVtZihj
b250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShw
cm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tOYW1l
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZydXN0dW1mKGwsIHIsIGIsIHQsIG4sIGYpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdW5pZm9ybUJsb2NrTmFtZSk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRnJ1c3R1bWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBs
LCByLCBiLCB0LCBuLCBmKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZl
VW5pZm9ybUJsb2NraXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9B
UElFTlRSWSBGcnVzdHVteENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmaXhlZCBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZpeGVkIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZml4ZWQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhl
ZCBmKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2IiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgdW5pZm9ybUJsb2Nr
SW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsICIKLSAgICAgICAgICAiR0xpbnQgKnBhcmFt
cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpVbmlmb3JtQmxvY2tQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZF
TlQoImdsRnJ1c3R1bXgiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgbCA9IDB4
JVgsIEdMZml4ZWQgciA9IDB4JVgsIEdMZml4ZWQgYiA9IDB4JVgsIEdMZml4ZWQgdCA9IDB4JVgs
ICIKKyAgICAgICAgICAiR0xmaXhlZCBuID0gMHglWCwgR0xmaXhlZCBmID0gMHglWCIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBsLCByLCBiLCB0LCBuLCBmKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUZydXN0
dW14KGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dihwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5mcnVzdHVteChsLCByLCBiLCB0LCBuLCBmKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICB1bmlmb3Jt
QmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoRnJ1c3R1
bXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9ybXNpdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgdW5pZm9ybUNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdW5pZm9ybUluZGljZXMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdlbkJ1ZmZlcnNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZlcnMpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsR2V0QWN0aXZlVW5pZm9ybXNpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1
aW50IHByb2dyYW0gPSAldSwgR0xzaXplaSB1bmlmb3JtQ291bnQgPSAlZCwgY29uc3QgR0x1aW50
ICIKLSAgICAgICAgICAiKnVuaWZvcm1JbmRpY2VzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMZW51
bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCB1bmlmb3JtQ291bnQsICh1aW50
cHRyX3QpdW5pZm9ybUluZGljZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlVuaWZvcm1QTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQo
ImdsR2VuQnVmZmVycyIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmJ1
ZmZlcnMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBuLCAo
dWludHB0cl90KWJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldEFjdGl2ZVVuaWZvcm1zaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBCdWZmZXJJRCAqYnVm
ZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJ
RCAqPihidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdlbkJ1ZmZlcnMoY29udGV4dCwgbiwgYnVmZmVyc1BhY2tlZCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldEFjdGl2ZVVuaWZvcm1zaXYocHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50LCB1bmlmb3Jt
SW5kaWNlcywgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZW5CdWZmZXJzKG4sIGJ1ZmZlcnNQYWNr
ZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0QWN0aXZlVW5pZm9ybXNp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1Db3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICB1bmlmb3JtSW5kaWNlcywgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2VuQnVmZmVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGJ1
ZmZlcnNQYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRBdHRhY2hlZFNo
YWRlcnNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBtYXhDb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpzaGFkZXJzKQotewotICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xHZXRBdHRhY2hlZFNoYWRl
cnMiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHNpemVp
IG1heENvdW50ID0gJWQsIEdMc2l6ZWkgKmNvdW50ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAg
ICIsIEdMdWludCAqc2hhZGVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBtYXhDb3VudCwgKHVpbnRwdHJfdCljb3VudCwgKHVpbnRwdHJfdClz
aGFkZXJzKTsKK3ZvaWQgR0xfQVBJRU5UUlkgR2VuRmVuY2VzTlZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNlcykKK3sKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xH
ZW5GZW5jZXNOViIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmZlbmNl
cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50
cHRyX3QpZmVuY2VzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9n
cmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3Jh
bUlEPihwcm9ncmFtKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEICpzaGFkZXJzUGFja2VkICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRCAqPihzaGFkZXJzKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIEZlbmNlTlZJRCAqZmVuY2VzUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRCAqPihmZW5jZXMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgVmFsaWRhdGVHZXRBdHRhY2hlZFNoYWRlcnMoY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlbkZlbmNlc05WKGNvbnRleHQsIG4sIGZl
bmNlc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtUGFja2VkLCBtYXhDb3Vu
dCwgY291bnQsIHNoYWRlcnNQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+Z2VuRmVuY2Vz
TlYobiwgZmVuY2VzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dEF0dGFjaGVkU2hhZGVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG1h
eENvdW50LCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJzUGFja2VkKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZW5GZW5jZXNOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4s
IGZlbmNlc1BhY2tlZCk7CiAgICAgfQogfQogCi1HTGludCBHTF9BUElFTlRSWSBHZXRBdHRyaWJM
b2NhdGlvbkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUp
Cit2b2lkIEdMX0FQSUVOVFJZIEdlbkZyYW1lYnVmZmVyc0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bEdldEF0dHJpYkxvY2F0aW9uIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChj
b250ZXh0KSwKLSAgICAgICAgICBwcm9ncmFtLCAodWludHB0cl90KW5hbWUpOworICAgIEVWRU5U
KCJnbEdlbkZyYW1lYnVmZmVycyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBu
ID0gJWQsIEdMdWludCAqZnJhbWVidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29u
dGV4dCksIG4sCisgICAgICAgICAgKHVpbnRwdHJfdClmcmFtZWJ1ZmZlcnMpOwogCi0gICAgR0xp
bnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVi
dWZmZXJJRCAqZnJhbWVidWZmZXJzUGFja2VkID0gRnJvbUdMPEZyYW1lYnVmZmVySUQgKj4oZnJh
bWVidWZmZXJzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldEF0dHJpYkxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5h
bWUpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2VuRnJhbWVidWZmZXJzKGNvbnRleHQsIG4sIGZyYW1lYnVmZmVyc1BhY2tlZCkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0g
Y29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbVBhY2tlZCwgbmFtZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRBdHRyaWJMb2NhdGlvbiwgR0xpbnQ+
KCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZW5GcmFtZWJ1ZmZlcnMobiwgZnJhbWVidWZmZXJz
UGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEF0dHJpYkxvY2F0
aW9uLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSwgcmV0dXJuVmFs
dWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRBdHRyaWJMb2NhdGlvbiwgR0xpbnQ+KCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuRnJhbWVidWZmZXJzLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW5pX3ZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gKmRhdGEpCit2b2lkIEdMX0FQSUVOVFJZIEdlbkZyYW1lYnVmZmVyc09F
U0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqZnJhbWVi
dWZmZXJzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xHZXRCb29sZWFuaV92IiwKLSAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSwg
R0xib29sZWFuICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCks
IGluZGV4LCAodWludHB0cl90KWRhdGEpOworICAgIEVWRU5UKCJnbEdlbkZyYW1lYnVmZmVyc09F
UyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqZnJh
bWVidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCisgICAgICAg
ICAgKHVpbnRwdHJfdClmcmFtZWJ1ZmZlcnMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Qm9vbGVhbmlf
dihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7CisgICAgICAgIEZyYW1lYnVmZmVySUQg
KmZyYW1lYnVmZmVyc1BhY2tlZCA9IEZyb21HTDxGcmFtZWJ1ZmZlcklEICo+KGZyYW1lYnVmZmVy
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdlbkZyYW1lYnVmZmVyc09FUyhjb250ZXh0LCBuLCBmcmFtZWJ1ZmZlcnNQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRCb29sZWFuaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+
Z2VuRnJhbWVidWZmZXJzKG4sIGZyYW1lYnVmZmVyc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRCb29sZWFuaV92LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuRnJhbWVidWZmZXJz
T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgZnJhbWVidWZmZXJzUGFja2VkKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbnZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKmRhdGEpCit2b2lkIEdMX0FQSUVOVFJZ
IEdlblByb2dyYW1QaXBlbGluZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXpl
aSBuLCBHTHVpbnQgKnBpcGVsaW5lcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRCb29sZWFudiIsICJj
b250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGJvb2xlYW4gKmRhdGEgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVOVCgi
Z2xHZW5Qcm9ncmFtUGlwZWxpbmVzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgR0x1aW50ICpwaXBlbGluZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250
ZXh0KSwgbiwKKyAgICAgICAgICAodWludHB0cl90KXBpcGVsaW5lcyk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEJvb2xlYW52
KGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CisgICAgICAgIFByb2dyYW1QaXBlbGluZUlEICpwaXBl
bGluZXNQYWNrZWQgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQgKj4ocGlwZWxpbmVzKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
blByb2dyYW1QaXBlbGluZXMoY29udGV4dCwgbiwgcGlwZWxpbmVzUGFja2VkKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0Qm9v
bGVhbnYocG5hbWUsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+Z2VuUHJvZ3JhbVBpcGVs
aW5lcyhuLCBwaXBlbGluZXNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0Qm9vbGVhbnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2VuUHJvZ3JhbVBpcGVsaW5lcywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIG4sIHBpcGVsaW5lc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dEJ1ZmZlclBhcmFtZXRlcmk2NHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdlblF1ZXJpZXND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBuLCBHTHVpbnQgKmlkcykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludDY0ICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdl
dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2VuUXVlcmllcyIsICJj
b250ZXh0ID0gJWQsIEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpaWRzKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2KGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBRdWVyeUlEICppZHNQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlE
ICo+KGlkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
blF1ZXJpZXMoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaTY0
dih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2Vu
UXVlcmllcyhuLCBpZHNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0QnVmZmVyUGFyYW1ldGVyaTY0diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUXVlcmllcywgaXND
YWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIEdldEJ1ZmZlclBhcmFtZXRlcml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2VuUXVlcmllc0VY
VENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqaWRzKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbEdldEJ1ZmZlclBhcmFtZXRlcml2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFyZ2V0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50
cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZW5RdWVyaWVzRVhUIiwgImNvbnRleHQgPSAl
ZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqaWRzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgbiwgKHVpbnRwdHJfdClpZHMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBRdWVyeUlEICppZHNQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeUlEICo+KGlkcyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZW5RdWVyaWVzRVhUKGNvbnRleHQsIG4sIGlkc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZW5RdWVyaWVzKG4sIGlkc1BhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRCdWZmZXJQYXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuUXVlcmllc0VYVCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2VuUmVuZGVyYnVmZmVyc0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVy
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQb2ludGVydiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWlu
dHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2VuUmVuZGVyYnVmZmVycyIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdMdWludCAqcmVuZGVyYnVmZmVycyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIG4sICh1aW50cHRy
X3QpcmVuZGVyYnVmZmVycyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJp
bmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
QnVmZmVyUG9pbnRlcnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgIFJlbmRlcmJ1ZmZlcklEICpyZW5kZXJidWZmZXJzUGFja2VkID0gRnJvbUdMPFJlbmRl
cmJ1ZmZlcklEICo+KHJlbmRlcmJ1ZmZlcnMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzKGNvbnRleHQsIG4sIHJl
bmRlcmJ1ZmZlcnNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRCdWZmZXJQb2ludGVydih0YXJnZXRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2VuUmVuZGVyYnVmZmVycyhuLCBy
ZW5kZXJidWZmZXJzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dEJ1ZmZlclBvaW50ZXJ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZW5SZW5kZXJidWZmZXJzLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbiwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2Vu
UmVuZGVyYnVmZmVyc09FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4s
IEdMdWludCAqcmVuZGVyYnVmZmVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQb2ludGVy
dk9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVu
dW0gcG5hbWUgPSAlcywgdm9pZCAqKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJn
ZXRBUkIsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2Vu
UmVuZGVyYnVmZmVyc09FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0g
JWQsIEdMdWludCAqcmVuZGVyYnVmZmVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRl
eHQpLAorICAgICAgICAgIG4sICh1aW50cHRyX3QpcmVuZGVyYnVmZmVycyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZPRVMoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIFJlbmRlcmJ1ZmZlcklEICpyZW5k
ZXJidWZmZXJzUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEICo+KHJlbmRlcmJ1ZmZlcnMp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVH
ZW5SZW5kZXJidWZmZXJzT0VTKGNvbnRleHQsIG4sIHJlbmRlcmJ1ZmZlcnNQYWNrZWQpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRCdWZmZXJQb2ludGVydih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAg
ICAgY29udGV4dC0+Z2VuUmVuZGVyYnVmZmVycyhuLCByZW5kZXJidWZmZXJzUGFja2VkKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEJ1ZmZlclBvaW50ZXJ2T0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZW5SZW5kZXJidWZmZXJzT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
biwgcmVuZGVyYnVmZmVyc1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dENsaXBQbGFuZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBsYW5lLCBH
TGZsb2F0ICplcXVhdGlvbikKK3ZvaWQgR0xfQVBJRU5UUlkgR2VuU2FtcGxlcnNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSBjb3VudCwgR0x1aW50ICpzYW1wbGVycykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xHZXRDbGlwUGxhbmVmIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gcGxhbmUgPSAlcywgR0xmbG9hdCAqZXF1YXRpb24gPSAweCUwMTYiIFBSSXhQVFIgIiIs
IENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q2xp
cFBsYW5lTmFtZSwgcGxhbmUpLCAodWludHB0cl90KWVxdWF0aW9uKTsKKyAgICBFVkVOVCgiZ2xH
ZW5TYW1wbGVycyIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0x1aW50ICpz
YW1wbGVycyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGNv
dW50LCAodWludHB0cl90KXNhbXBsZXJzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEICpzYW1wbGVyc1BhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEICo+KHNhbXBsZXJz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUdldENsaXBQbGFuZWYoY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdlblNhbXBsZXJzKGNvbnRl
eHQsIGNvdW50LCBzYW1wbGVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldENsaXBQbGFuZWYocGxhbmUsIGVxdWF0
aW9uKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblNhbXBsZXJzKGNvdW50LCBzYW1wbGVyc1Bh
Y2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRDbGlwUGxhbmVmLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZW5TYW1wbGVycywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvdW50LCBzYW1wbGVyc1Bh
Y2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldENsaXBQbGFuZXhDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBsYW5lLCBHTGZpeGVkICplcXVhdGlvbikK
K3ZvaWQgR0xfQVBJRU5UUlkgR2VuU2VtYXBob3Jlc0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqc2VtYXBob3JlcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZXRDbGlwUGxhbmV4IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcGxhbmUgPSAl
cywgR0xmaXhlZCAqZXF1YXRpb24gPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q2xpcFBsYW5lTmFtZSwgcGxh
bmUpLCAodWludHB0cl90KWVxdWF0aW9uKTsKKyAgICBFVkVOVCgiZ2xHZW5TZW1hcGhvcmVzRVhU
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICpzZW1h
cGhvcmVzID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIG4sCisgICAgICAgICAg
KHVpbnRwdHJfdClzZW1hcGhvcmVzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2VtYXBob3JlSUQgKnNlbWFwaG9yZXNQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQgKj4oc2VtYXBob3Jl
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRDbGlwUGxhbmV4KGNvbnRleHQsIHBsYW5lLCBlcXVhdGlvbikpOworICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5TZW1hcGhvcmVzRVhU
KGNvbnRleHQsIG4sIHNlbWFwaG9yZXNQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRDbGlwUGxhbmV4KHBsYW5lLCBl
cXVhdGlvbik7CisgICAgICAgICAgICBjb250ZXh0LT5nZW5TZW1hcGhvcmVzKG4sIHNlbWFwaG9y
ZXNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0Q2xpcFBsYW5l
eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBsYW5lLCBlcXVhdGlvbik7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoR2VuU2VtYXBob3Jlc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIHNlbWFw
aG9yZXNQYWNrZWQpOwogICAgIH0KIH0KIAotR0x1aW50IEdMX0FQSUVOVFJZIEdldERlYnVnTWVz
c2FnZUxvZ0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY291bnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
ICpzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKnR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKmlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0aWVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1l
c3NhZ2VMb2cpCit2b2lkIEdMX0FQSUVOVFJZIEdlblRleHR1cmVzQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xHZXREZWJ1Z01lc3NhZ2VMb2ciLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBj
b3VudCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xlbnVtICpzb3VyY2VzID0gMHglMDE2
IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xlbnVtICp0eXBlcyA9IDB4JTAxNiIgUFJJeFBUUiAi
LCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSAqc2V2
ZXJpdGllcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpICpsZW5ndGhzID0gMHglMDE2IiBQ
Ukl4UFRSCi0gICAgICAgICAgIiwgR0xjaGFyICptZXNzYWdlTG9nID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgY291bnQsIGJ1ZlNpemUsICh1aW50cHRyX3Qp
c291cmNlcywgKHVpbnRwdHJfdCl0eXBlcywgKHVpbnRwdHJfdClpZHMsCi0gICAgICAgICAgKHVp
bnRwdHJfdClzZXZlcml0aWVzLCAodWludHB0cl90KWxlbmd0aHMsICh1aW50cHRyX3QpbWVzc2Fn
ZUxvZyk7CisgICAgRVZFTlQoImdsR2VuVGV4dHVyZXMiLCAiY29udGV4dCA9ICVkLCBHTHNpemVp
IG4gPSAlZCwgR0x1aW50ICp0ZXh0dXJlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIG4sICh1aW50cHRyX3QpdGV4dHVyZXMpOwogCi0gICAgR0x1aW50IHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldERlYnVnTWVzc2FnZUxvZyhjb250ZXh0LCBjb3VudCwgYnVmU2l6ZSwg
c291cmNlcywgdHlwZXMsIGlkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nKSk7Cisg
ICAgICAgIFRleHR1cmVJRCAqdGV4dHVyZXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5UZXh0dXJlcyhjb250ZXh0
LCBuLCB0ZXh0dXJlc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0RGVidWdNZXNzYWdlTG9n
KGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywgaWRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdGllcywgbGVuZ3Rocywg
bWVzc2FnZUxvZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRE
ZWJ1Z01lc3NhZ2VMb2csIEdMdWludD4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblRleHR1
cmVzKG4sIHRleHR1cmVzUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldERlYnVnTWVzc2FnZUxvZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvdW50LCBidWZTaXpl
LCBzb3VyY2VzLCB0eXBlcywgaWRzLAotICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXRpZXMs
IGxlbmd0aHMsIG1lc3NhZ2VMb2csIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0RGVidWdNZXNzYWdlTG9nLCBHTHVpbnQ+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
R2VuVGV4dHVyZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuLCB0ZXh0dXJlc1BhY2tlZCk7CiAg
ICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0x1aW50IEdMX0FQSUVOVFJZIEdl
dERlYnVnTWVzc2FnZUxvZ0tIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtICpzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
ICpzZXZlcml0aWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCit2b2lkIEdMX0FQ
SUVOVFJZIEdlblRyYW5zZm9ybUZlZWRiYWNrc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHNpemVpIG4sIEdMdWludCAqaWRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldERlYnVnTWVzc2Fn
ZUxvZ0tIUiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGNvdW50ID0gJXUsIEdM
c2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGVudW0gKnNvdXJjZXMgPSAweCUwMTYiIFBSSXhQVFIKLSAg
ICAgICAgICAiLCBHTGVudW0gKnR5cGVzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMdWludCAqaWRz
ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xlbnVtICpzZXZlcml0aWVzID0gMHgl
MDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgKmxlbmd0aHMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAg
ICAgICAiLCBHTGNoYXIgKm1lc3NhZ2VMb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBjb3VudCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClzb3VyY2VzLCAodWlu
dHB0cl90KXR5cGVzLCAodWludHB0cl90KWlkcywKLSAgICAgICAgICAodWludHB0cl90KXNldmVy
aXRpZXMsICh1aW50cHRyX3QpbGVuZ3RocywgKHVpbnRwdHJfdCltZXNzYWdlTG9nKTsKKyAgICBF
VkVOVCgiZ2xHZW5UcmFuc2Zvcm1GZWVkYmFja3MiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNv
bnRleHQpLCBuLAorICAgICAgICAgICh1aW50cHRyX3QpaWRzKTsKIAotICAgIEdMdWludCByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoY29udGV4dCwgY291bnQsIGJ1ZlNpemUs
IHNvdXJjZXMsIHR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkcywgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZykp
OworICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0lEICppZHNQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVkYmFja0lEICo+KGlkcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5UcmFuc2Zv
cm1GZWVkYmFja3MoY29udGV4dCwgbiwgaWRzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRE
ZWJ1Z01lc3NhZ2VMb2coY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0
aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVu
dHJ5UG9pbnQ6OkdldERlYnVnTWVzc2FnZUxvZ0tIUiwgR0x1aW50PigpOworICAgICAgICAgICAg
Y29udGV4dC0+Z2VuVHJhbnNmb3JtRmVlZGJhY2tzKG4sIGlkc1BhY2tlZCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXREZWJ1Z01lc3NhZ2VMb2dLSFIsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgaWRzLCBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nLCByZXR1cm5WYWx1
ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVm
YXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldERlYnVnTWVzc2FnZUxvZ0tIUiwgR0x1aW50
PigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlblRyYW5zZm9ybUZlZWRiYWNrcywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG4sIGlkc1BhY2tlZCk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAotR0xlbnVtIEdMX0FQSUVOVFJZIEdldEVycm9yQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgpCit2b2lkIEdMX0FQSUVOVFJZIEdlblZlcnRleEFycmF5c0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldEVycm9yIiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZF
TlQoImdsR2VuVmVydGV4QXJyYXlzIiwgImNvbnRleHQgPSAlZCwgR0xzaXplaSBuID0gJWQsIEdM
dWludCAqYXJyYXlzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgbiwgKHVpbnRwdHJfdClhcnJheXMpOwogCi0gICAgR0xlbnVtIHJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0
RXJyb3IoY29udGV4dCkpOworICAgICAgICBWZXJ0ZXhBcnJheUlEICphcnJheXNQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVHZW5WZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250
ZXh0LT5nZXRFcnJvcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
R2V0RXJyb3IsIEdMZW51bT4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblZlcnRleEFycmF5
cyhuLCBhcnJheXNQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
RXJyb3IsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVs
c2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVu
dHJ5UG9pbnQ6OkdldEVycm9yLCBHTGVudW0+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2Vu
VmVydGV4QXJyYXlzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbiwgYXJyYXlzUGFja2VkKTsKICAg
ICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEZl
bmNlaXZOVkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGZlbmNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkg
R2VuVmVydGV4QXJyYXlzT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc2l6ZWkg
biwgR0x1aW50ICphcnJheXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0RmVuY2Vpdk5WIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBmZW5jZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5h
bWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2VuVmVydGV4QXJyYXlzT0VT
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG4gPSAlZCwgR0x1aW50ICphcnJh
eXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbiwKKyAgICAgICAgICAodWlu
dHB0cl90KWFycmF5cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgRmVuY2VOVklE
IGZlbmNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRD4o
ZmVuY2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZlbmNlaXZO
Vihjb250ZXh0LCBmZW5jZVBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBWZXJ0ZXhB
cnJheUlEICphcnJheXNQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxW
ZXJ0ZXhBcnJheUlEICo+KGFycmF5cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMoY29udGV4dCwgbiwg
YXJyYXlzUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0RmVuY2Vpdk5WKGZlbmNlUGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlblZlcnRleEFycmF5cyhuLCBhcnJheXNQYWNrZWQp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0RmVuY2Vpdk5WLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEdlblZlcnRleEFycmF5c09FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG4sIGFy
cmF5c1BhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEZpeGVkdkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykK
K3ZvaWQgR0xfQVBJRU5UUlkgR2VuZXJhdGVNaXBtYXBDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRGaXhlZHYiLCAiY29udGV4
dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQUkl4
UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkdldFBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xH
ZW5lcmF0ZU1pcG1hcCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChj
b250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRh
cmdldCwgdGFyZ2V0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldEZpeGVkdihjb250ZXh0LCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuZXJhdGVNaXBtYXAoY29udGV4
dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+Z2V0Rml4ZWR2KHBuYW1lLCBwYXJhbXMpOworICAgICAgICAg
ICAgY29udGV4dC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0UGFja2VkKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldEZpeGVkdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdlbmVyYXRlTWlwbWFwLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgR2V0RmxvYXR2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCAqZGF0YSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2VuZXJhdGVNaXBtYXBPRVNDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZXRGbG9hdHYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqZGF0
YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpHZXRQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KWRhdGEpOwor
ICAgIEVWRU5UKCJnbEdlbmVyYXRlTWlwbWFwT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RmxvYXR2KGNvbnRleHQsIHBu
YW1lLCBkYXRhKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2VuZXJh
dGVNaXBtYXBPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBk
YXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldFBhY2tlZCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGbG9hdHYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2VuZXJhdGVN
aXBtYXBPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQpOwogICAgIH0KIH0K
IAotR0xpbnQgR0xfQVBJRU5UUlkgR2V0RnJhZ0RhdGFJbmRleEVYVENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRSWSBH
ZXRBY3RpdmVBdHRyaWJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0RnJhZ0RhdGFJbmRleEVYVCIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFy
ICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcHJv
Z3JhbSwgKHVpbnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xHZXRBY3RpdmVBdHRyaWIiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCBpbmRl
eCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAiCisgICAgICAgICAgIipsZW5n
dGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgKnNpemUgPSAweCUwMTYiIFBSSXhQVFIKKyAg
ICAgICAgICAiLCBHTGVudW0gKnR5cGUgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICpuYW1l
ID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwg
aW5kZXgsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNpemUsCisgICAg
ICAgICAgKHVpbnRwdHJfdCl0eXBlLCAodWludHB0cl90KW5hbWUpOwogCi0gICAgR0xpbnQgcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBw
cm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHBy
b2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZyYWdEYXRh
SW5kZXhFWFQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSkpOworICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRBY3RpdmVBdHRyaWIoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCB0eXBlLCBuYW1lKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250
ZXh0LT5nZXRGcmFnRGF0YUluZGV4KHByb2dyYW1QYWNrZWQsIG5hbWUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RnJhZ0RhdGFJbmRleEVYVCwgR0xpbnQ+KCk7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbVBhY2tlZCwgaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFnRGF0YUluZGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpHZXRGcmFnRGF0YUluZGV4RVhULCBHTGludD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRBY3RpdmVBdHRyaWIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBp
bmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemUsIHR5cGUs
IG5hbWUpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMaW50IEdMX0FQ
SUVOVFJZIEdldEZyYWdEYXRhTG9jYXRpb25Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0QWN0aXZlVW5pZm9y
bUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNo
YXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0RnJhZ0RhdGFMb2NhdGlvbiIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFyICpuYW1l
ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcHJvZ3JhbSwg
KHVpbnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xHZXRBY3RpdmVVbmlmb3JtIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgaW5kZXggPSAl
dSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgIgorICAgICAgICAgICIqbGVuZ3RoID0g
MHglMDE2IiBQUkl4UFRSICIsIEdMaW50ICpzaXplID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAg
ICAgIiwgR0xlbnVtICp0eXBlID0gMHglMDE2IiBQUkl4UFRSICIsIEdMY2hhciAqbmFtZSA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGluZGV4
LCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClzaXplLAorICAgICAgICAg
ICh1aW50cHRyX3QpdHlwZSwgKHVpbnRwdHJfdCluYW1lKTsKIAotICAgIEdMaW50IHJldHVyblZh
bHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFnRGF0YUxvY2F0
aW9uKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG5hbWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplLCB0eXBlLCBuYW1lKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0
LT5nZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIG5hbWUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RnJhZ0RhdGFMb2NhdGlvbiwgR0xpbnQ+KCk7
CisgICAgICAgICAgICBjb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW1QYWNrZWQsIGlu
ZGV4LCBidWZTaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0RnJhZ0RhdGFMb2NhdGlvbiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIG5hbWUsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6R2V0RnJhZ0RhdGFMb2NhdGlvbiwgR0xpbnQ+KCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0QWN0aXZlVW5pZm9ybSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGluZGV4LCBidWZTaXplLCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgdHlw
ZSwgbmFtZSk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1z
KQordm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1l
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBhdHRh
Y2htZW50ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAiCi0gICAgICAgICAgIipwYXJh
bXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RnJhbWVidWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyQXR0YWNobWVudCwgYXR0
YWNobWVudCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90
KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0x1aW50IHVuaWZvcm1C
bG9ja0luZGV4ID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCAiCisgICAgICAgICAgIkdMc2l6
ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCB1
bmlmb3JtQmxvY2tJbmRleCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsCisgICAgICAgICAg
KHVpbnRwdHJfdCl1bmlmb3JtQmxvY2tOYW1lKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgdW5p
Zm9ybUJsb2NrTmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja0luZGV4
LCBidWZTaXplLCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaWZvcm1CbG9ja05hbWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgcG5hbWUs
IHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgdW5pZm9ybUJsb2NrSW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgdW5pZm9ybUJsb2NrTmFt
ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVO
VFJZIEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFt
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9F
UyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
YXR0YWNobWVudCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgIgotICAgICAgICAgICIq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQs
IGF0dGFjaG1lbnQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRw
dHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2IiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgdW5pZm9y
bUJsb2NrSW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsICIKKyAgICAgICAgICAiR0xpbnQg
KnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHBy
b2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpVbmlmb3JtQmxvY2tQTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUygKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dy
YW1QYWNrZWQsIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFj
dGl2ZVVuaWZvcm1CbG9ja2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3Jtc2l2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB1bmlmb3JtQ291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp1
bmlmb3JtSW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0g
ICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldEFjdGl2ZVVuaWZv
cm1zaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
c2l6ZWkgdW5pZm9ybUNvdW50ID0gJWQsIGNvbnN0IEdMdWludCAiCisgICAgICAgICAgIip1bmlm
b3JtSW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQg
KnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgcHJvZ3JhbSwgdW5pZm9ybUNvdW50LCAodWludHB0cl90KXVuaWZvcm1JbmRpY2Vz
LAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpVbmlmb3JtUE5hbWUsIHBu
YW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihj
b250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybXNpdihjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCB1bmlmb3JtQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0RnJh
bWVidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAg
Y29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybXNpdihwcm9ncmFtUGFja2VkLCB1bmlmb3JtQ291bnQs
IHVuaWZvcm1JbmRpY2VzLCBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZy
YW1lYnVmZmVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEFjdGl2ZVVuaWZvcm1zaXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQ291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgdW5pZm9ybUluZGljZXMsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0K
IAotR0xlbnVtIEdMX0FQSUVOVFJZIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0QXR0YWNoZWRTaGFkZXJzQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbWF4Q291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqc2hh
ZGVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzIiwgImNvbnRleHQg
PSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoCisgICAgICAgICJnbEdldEF0dGFjaGVk
U2hhZGVycyIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
c2l6ZWkgbWF4Q291bnQgPSAlZCwgR0xzaXplaSAqY291bnQgPSAweCUwMTYiIFBSSXhQVFIKKyAg
ICAgICAgIiwgR0x1aW50ICpzaGFkZXJzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIG1heENvdW50LCAodWludHB0cl90KWNvdW50LCAodWludHB0
cl90KXNoYWRlcnMpOwogCi0gICAgR0xlbnVtIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNl
dFN0YXR1cyhjb250ZXh0KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRCAqPihzaGFkZXJzKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIG1heENvdW50
LCBjb3VudCwgc2hhZGVyc1BhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0R3JhcGhpY3NSZXNl
dFN0YXR1cygpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0R3Jh
cGhpY3NSZXNldFN0YXR1cywgR0xlbnVtPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0QXR0
YWNoZWRTaGFkZXJzKHByb2dyYW1QYWNrZWQsIG1heENvdW50LCBjb3VudCwgc2hhZGVyc1BhY2tl
ZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNl
Ci0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRy
eVBvaW50OjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzLCBHTGVudW0+KCk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0QXR0YWNoZWRTaGFkZXJzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbWF4Q291bnQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHNoYWRlcnNQ
YWNrZWQpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMZW51bSBHTF9B
UElFTlRSWSBHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgpCitHTGludCBHTF9BUElFTlRSWSBHZXRBdHRyaWJMb2NhdGlvbkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0
R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwor
ICAgIEVWRU5UKCJnbEdldEF0dHJpYkxvY2F0aW9uIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBwcm9ncmFtLCAodWludHB0cl90KW5hbWUp
OwogCi0gICAgR0xlbnVtIHJldHVyblZhbHVlOworICAgIEdMaW50IHJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQo
Y29udGV4dCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRBdHRyaWJMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBjb250ZXh0LT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCk7CisgICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IGNvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIG5hbWUp
OwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0VYVCwgR0xlbnVtPigpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0QXR0cmliTG9jYXRpb24sIEdMaW50PigpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VY
VCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJldHVyblZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRBdHRyaWJMb2NhdGlvbiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIG5hbWUsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0VYVCwgR0xlbnVtPigpOworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRBdHRyaWJMb2NhdGlvbiwgR0xpbnQ+KCk7
CiAgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBH
ZXRJbnRlZ2VyNjRpX3ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpkYXRhKQor
dm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFuaV92Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldEludGVnZXI2NGlfdiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSwgR0xp
bnQ2NCAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUeXBlRW51bSwgdGFyZ2V0KSwgaW5kZXgsICh1
aW50cHRyX3QpZGF0YSk7CisgICAgRVZFTlQoCisgICAgICAgICJnbEdldEJvb2xlYW5pX3YiLAor
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMdWludCBpbmRleCA9
ICV1LCBHTGJvb2xlYW4gKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlclRhcmdldEFSQiwgdGFy
Z2V0KSwgaW5kZXgsICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3YoY29udGV4dCwgdGFyZ2V0
LCBpbmRleCwgZGF0YSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRCb29sZWFuaV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRJbnRlZ2VyNjRpX3YodGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRCb29sZWFuaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0SW50ZWdlcjY0aV92LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0LCBpbmRleCwgZGF0YSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0Qm9vbGVhbmlf
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyNjR2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0
Qm9vbGVhbnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGJv
b2xlYW4gKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0SW50ZWdlcjY0diIsICJjb250ZXh0ID0g
JWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludDY0ICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIi
LAorICAgIEVWRU5UKCJnbEdldEJvb2xlYW52IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMYm9vbGVhbiAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKICAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRQTmFtZSwgcG5hbWUp
LCAodWludHB0cl90KWRhdGEpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcjY0dihjb250ZXh0
LCBwbmFtZSwgZGF0YSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVHZXRCb29sZWFudihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEludGVnZXI2NHYo
cG5hbWUsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIGRh
dGEpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0SW50ZWdlcjY0diwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBkYXRhKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRCb29sZWFudiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBkYXRhKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcmlfdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpkYXRhKQordm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1z
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEdldEludGVnZXJpX3YiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsIEdMaW50ICpkYXRhID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlR5cGVFbnVtLCB0YXJnZXQpLCBpbmRleCwgKHVpbnRwdHJfdClkYXRh
KTsKKyAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2IiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludDY0
ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRh
cmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRJbnRlZ2Vy
aV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKKyAgICAgICAgQnVmZmVyQmluZGlu
ZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVy
QmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaTY0dihjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyaV92KHRhcmdldCwgaW5kZXgsIGRhdGEp
OworICAgICAgICAgICAgY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaTY0dih0YXJnZXRQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
SW50ZWdlcmlfdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VydkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gcG5hbWUsIEdMaW50ICpkYXRhKQordm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJh
bWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0SW50ZWdlcnYiLCAiY29udGV4dCA9ICVkLCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xpbnQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBu
YW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJp
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRB
UkIsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVnZXJ2KGNvbnRl
eHQsIHBuYW1lLCBkYXRhKSk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dEJ1ZmZlclBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmdldEludGVnZXJ2KHBuYW1lLCBkYXRhKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEJ1
ZmZlclBhcmFtZXRlcml2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRJbnRlZ2VydiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHBuYW1lLCBkYXRhKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRCdWZmZXJQYXJhbWV0ZXJp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldEludGVybmFsZm9ybWF0aXZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldEJ1ZmZlclBvaW50ZXJ2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZXRJbnRlcm5hbGZvcm1hdGl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywg
IgotICAgICAgICAgICJHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLAotICAgICAg
ICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdFBOYW1lLCBwbmFt
ZSksIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRCdWZmZXJQ
b2ludGVydiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
TGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJU
YXJnZXRBUkIsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXYoY29udGV4dCwgdGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpOworICAgICAgICBCdWZmZXJCaW5k
aW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZm
ZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydihjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxm
b3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
QnVmZmVyUG9pbnRlcnYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEludGVybmFsZm9ybWF0aXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBidWZTaXplLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEJ1ZmZlclBv
aW50ZXJ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0TGlnaHRmdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBsaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQb2ludGVydk9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwYXJhbXMpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2V0TGlnaHRmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IGxpZ2h0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6TGlnaHROYW1lLCBsaWdodCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkxpZ2h0UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAg
ICBFVkVOVCgiZ2xHZXRCdWZmZXJQb2ludGVydk9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBhcmFtcyA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksCisgICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90
KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgTGlnaHRQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihw
bmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
R2V0TGlnaHRmdihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOworICAgICAg
ICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydk9FUyhjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRMaWdodGZ2KGxpZ2h0LCBwbmFt
ZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEJ1ZmZlclBvaW50ZXJ2
KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZXRMaWdodGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGlnaHQsIHBuYW1lUGFj
a2VkLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEJ1ZmZlclBvaW50ZXJ2T0VT
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0TGlnaHR4dkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBsaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCAq
cGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRDbGlwUGxhbmVmQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMZW51bSBwbGFuZSwgR0xmbG9hdCAqZXF1YXRpb24pCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsR2V0TGlnaHR4diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGxpZ2h0
ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6TGlnaHROYW1lLCBsaWdodCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkxpZ2h0UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVO
VCgiZ2xHZXRDbGlwUGxhbmVmIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcGxh
bmUgPSAlcywgR0xmbG9hdCAqZXF1YXRpb24gPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250
ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Q2xpcFBsYW5lTmFt
ZSwgcGxhbmUpLCAodWludHB0cl90KWVxdWF0aW9uKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVHZXRMaWdodHh2KGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldENsaXBQbGFu
ZWYoY29udGV4dCwgcGxhbmUsIGVxdWF0aW9uKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0TGlnaHR4dihsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRDbGlwUGxhbmVmKHBsYW5l
LCBlcXVhdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRMaWdodHh2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKEdldENsaXBQbGFuZWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
bGFuZSwgZXF1YXRpb24pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRNYXRlcmlh
bGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkg
R2V0Q2xpcFBsYW5leENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcGxhbmUs
IEdMZml4ZWQgKmVxdWF0aW9uKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldE1hdGVyaWFsZnYiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBwbmFtZSA9ICVz
LCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxGYWNlLCBmYWNlKSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJhbWV0ZXIs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldENsaXBQbGFuZXgi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbGFuZSA9ICVzLCBHTGZpeGVkICpl
cXVhdGlvbiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpDbGlwUGxhbmVOYW1lLCBwbGFuZSksICh1aW50cHRy
X3QpZXF1YXRpb24pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIE1hdGVyaWFsUGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRlcmlhbFBhcmFt
ZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE1h
dGVyaWFsZnYoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0Q2xpcFBs
YW5leChjb250ZXh0LCBwbGFuZSwgZXF1YXRpb24pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRNYXRlcmlhbGZ2KGZhY2UsIHBu
YW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2xpcFBsYW5leChw
bGFuZSwgZXF1YXRpb24pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0TWF0
ZXJpYWxmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldENsaXBQbGFuZXgsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwbGFuZSwgZXF1YXRpb24pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRN
YXRlcmlhbHh2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgKnBhcmFtcykKK0dMdWludCBHTF9B
UElFTlRSWSBHZXREZWJ1Z01lc3NhZ2VMb2dDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSAqc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqc2V2ZXJpdGll
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqbGVuZ3RocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xjaGFyICptZXNzYWdlTG9nKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldE1hdGVyaWFs
eHYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxGYWNl
LCBmYWNlKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQ
YXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldERl
YnVnTWVzc2FnZUxvZyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGNvdW50ID0g
JXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTGVudW0gKnNvdXJjZXMgPSAweCUwMTYiIFBSSXhQ
VFIKKyAgICAgICAgICAiLCBHTGVudW0gKnR5cGVzID0gMHglMDE2IiBQUkl4UFRSICIsIEdMdWlu
dCAqaWRzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVtICpzZXZlcml0aWVz
ID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgKmxlbmd0aHMgPSAweCUwMTYiIFBSSXhQVFIK
KyAgICAgICAgICAiLCBHTGNoYXIgKm1lc3NhZ2VMb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBjb3VudCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClzb3VyY2Vz
LCAodWludHB0cl90KXR5cGVzLCAodWludHB0cl90KWlkcywKKyAgICAgICAgICAodWludHB0cl90
KXNldmVyaXRpZXMsICh1aW50cHRyX3QpbGVuZ3RocywgKHVpbnRwdHJfdCltZXNzYWdlTG9nKTsK
IAorICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
TWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1h
dGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0TWF0ZXJpYWx4dihjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdl
dERlYnVnTWVzc2FnZUxvZyhjb250ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMs
IGlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXZlcml0aWVzLCBsZW5ndGhzLCBtZXNzYWdlTG9nKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0TWF0ZXJpYWx4dihm
YWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29u
dGV4dC0+Z2V0RGVidWdNZXNzYWdlTG9nKGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0eXBlcywg
aWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V2ZXJpdGllcywgbGVuZ3RocywgbWVzc2FnZUxvZyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRNYXRlcmlhbHh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjZSwg
cG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RGVi
dWdNZXNzYWdlTG9nLCBHTHVpbnQ+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXREZWJ1Z01lc3NhZ2VMb2csIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCwgYnVmU2l6
ZSwgc291cmNlcywgdHlwZXMsIGlkcywKKyAgICAgICAgICAgICAgICAgICAgICBzZXZlcml0aWVz
LCBsZW5ndGhzLCBtZXNzYWdlTG9nLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OkdldERlYnVnTWVzc2FnZUxvZywgR0x1aW50PigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVy
aXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeU9iamVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQorR0x1aW50IEdMX0FQSUVOVFJZ
IEdldERlYnVnTWVzc2FnZUxvZ0tIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICpzZXZlcml0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGhzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoCi0gICAgICAgICJnbEdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUIiwKLSAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeU9iamVjdCA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAg
ICAgQ0lEKGNvbnRleHQpLCBtZW1vcnlPYmplY3QsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpNZW1vcnlPYmplY3RQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICh1aW50cHRyX3Qp
cGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBjb3VudCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwg
R0xlbnVtICpzb3VyY2VzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xlbnVtICp0
eXBlcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHVpbnQgKmlkcyA9IDB4JTAxNiIgUFJJeFBUUgor
ICAgICAgICAgICIsIEdMZW51bSAqc2V2ZXJpdGllcyA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNp
emVpICpsZW5ndGhzID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xjaGFyICptZXNz
YWdlTG9nID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgY291
bnQsIGJ1ZlNpemUsICh1aW50cHRyX3Qpc291cmNlcywgKHVpbnRwdHJfdCl0eXBlcywgKHVpbnRw
dHJfdClpZHMsCisgICAgICAgICAgKHVpbnRwdHJfdClzZXZlcml0aWVzLCAodWludHB0cl90KWxl
bmd0aHMsICh1aW50cHRyX3QpbWVzc2FnZUxvZyk7CiAKKyAgICBHTHVpbnQgcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElEIG1lbW9yeU9iamVj
dFBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4obWVtb3J5T2JqZWN0
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICBWYWxpZGF0ZUdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKGNvbnRleHQsIG1lbW9yeU9i
amVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoY29udGV4dCwg
Y291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkcywgc2V2ZXJpdGllcywgbGVuZ3Ro
cywgbWVzc2FnZUxvZykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2KG1lbW9yeU9iamVj
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmdldERlYnVnTWVzc2FnZUxvZyhjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsIGlk
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldmVyaXRpZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgcG5hbWUs
IHBhcmFtcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RGVidWdNZXNzYWdlTG9n
S0hSLCBHTHVpbnQ+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXREZWJ1
Z01lc3NhZ2VMb2dLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCwgYnVmU2l6ZSwgc291
cmNlcywgdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgaWRzLCBzZXZlcml0aWVzLCBsZW5n
dGhzLCBtZXNzYWdlTG9nLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6Okdl
dERlYnVnTWVzc2FnZUxvZ0tIUiwgR0x1aW50PigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0TXVsdGlzYW1wbGVmdkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsKQorR0xlbnVtIEdMX0FQSUVOVFJZIEdldEVy
cm9yQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0TXVs
dGlzYW1wbGVmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMdWludCBpbmRleCA9ICV1LCBHTGZsb2F0ICp2YWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVs
dEdyb3VwLCBwbmFtZSksIGluZGV4LCAodWludHB0cl90KXZhbCk7CisgICAgRVZFTlQoImdsR2V0
RXJyb3IiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAorICAgIEdMZW51bSByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2KGNvbnRleHQsIHBuYW1lLCBp
bmRleCwgdmFsKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUdldEVycm9yKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRNdWx0aXNhbXBsZWZ2KHBuYW1lLCBpbmRleCwgdmFs
KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0RXJyb3IoKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldE11bHRpc2FtcGxlZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwbmFtZSwgaW5kZXgsIHZhbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0RXJyb3IsIEdMZW51bT4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldEVycm9yLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1
ZTxFbnRyeVBvaW50OjpHZXRFcnJvciwgR0xlbnVtPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0T2JqZWN0TGFiZWxDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKK3ZvaWQgR0xfQVBJRU5U
UlkgR2V0RmVuY2Vpdk5WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZmVuY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldE9iamVjdExhYmVsIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
aWRlbnRpZmllciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwg
R0xzaXplaSAiCi0gICAgICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFy
ICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGlkZW50aWZpZXIpLCBuYW1l
LCBidWZTaXplLAotICAgICAgICAgICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVs
KTsKKyAgICBFVkVOVCgiZ2xHZXRGZW5jZWl2TlYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMdWludCBmZW5jZSA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGZlbmNlLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFy
YW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWwoY29udGV4
dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOworICAgICAgICBG
ZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0RmVuY2Vpdk5WKGNvbnRleHQsIGZlbmNlUGFja2VkLCBw
bmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0T2JqZWN0TGFiZWwoaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBsYWJlbCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRGZW5jZWl2TlYoZmVu
Y2VQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0T2JqZWN0TGFiZWwsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1l
LCBidWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgbGFiZWwpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldEZlbmNlaXZOViwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZlbmNl
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0
T2JqZWN0TGFiZWxLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xjaGFyICpsYWJlbCkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0Rml4ZWR2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbEdldE9iamVjdExhYmVsS0hSIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gaWRlbnRpZmllciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1
ZlNpemUgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQ
VFIgIiwgR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGlkZW50
aWZpZXIpLCBuYW1lLCBidWZTaXplLAotICAgICAgICAgICh1aW50cHRyX3QpbGVuZ3RoLCAodWlu
dHB0cl90KWxhYmVsKTsKKyAgICBFVkVOVCgiZ2xHZXRGaXhlZHYiLCAiY29udGV4dCA9ICVkLCBH
TGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBO
YW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZh
bGlkYXRlR2V0T2JqZWN0TGFiZWxLSFIoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBsYWJlbCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRGaXhlZHYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldE9iamVjdExh
YmVsKGlkZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICAg
ICAgY29udGV4dC0+Z2V0Rml4ZWR2KHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0T2JqZWN0TGFiZWxLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBp
ZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAg
bGFiZWwpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZpeGVkdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRP
YmplY3RQdHJMYWJlbENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKmxhYmVsKQordm9pZCBHTF9BUElFTlRSWSBHZXRGbG9hdHZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpkYXRhKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldE9iamVjdFB0ckxhYmVsIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBjb25z
dCB2b2lkICpwdHIgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHNpemVpIGJ1ZlNp
emUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwg
R0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksICh1aW50cHRyX3QpcHRyLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJf
dClsYWJlbCk7CisgICAgRVZFTlQoImdsR2V0RmxvYXR2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHBuYW1lID0gJXMsIEdMZmxvYXQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBu
YW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsKGNvbnRleHQsIHB0
ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRGbG9hdHYoY29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRP
YmplY3RQdHJMYWJlbChwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOworICAgICAgICAgICAg
Y29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldE9iamVjdFB0ckxhYmVsLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHRyLCBi
dWZTaXplLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGbG9hdHYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEdldE9iamVjdFB0ckxhYmVsS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpCitHTGludCBHTF9B
UElFTlRSWSBHZXRGcmFnRGF0YUluZGV4RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0T2JqZWN0UHRyTGFi
ZWxLSFIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIGNvbnN0IHZvaWQgKnB0ciA9IDB4JTAx
NiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICps
ZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTGNoYXIgKmxhYmVsID0gMHgl
MDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClwdHIs
IGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsKKyAgICBFVkVO
VCgiZ2xHZXRGcmFnRGF0YUluZGV4RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgcHJvZ3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIs
IENJRChjb250ZXh0KSwKKyAgICAgICAgICBwcm9ncmFtLCAodWludHB0cl90KW5hbWUpOwogCisg
ICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0T2JqZWN0UHRyTGFiZWxLSFIoY29udGV4dCwgcHRy
LCBidWZTaXplLCBsZW5ndGgsIGxhYmVsKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9n
cmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1J
RD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldEZyYWdEYXRhSW5kZXhFWFQoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFt
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldE9iamVjdFB0ckxhYmVsKHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7Cisg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldEZyYWdEYXRhSW5kZXgocHJvZ3Jh
bVBhY2tlZCwgbmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRPYmpl
Y3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3Ro
LCBsYWJlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0RnJhZ0RhdGFJbmRleEVY
VCwgR0xpbnQ+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFnRGF0
YUluZGV4RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSwgcmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRGcmFnRGF0YUluZGV4RVhULCBH
TGludD4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIEdldFBvaW50ZXJ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBw
bmFtZSwgdm9pZCAqKnBhcmFtcykKK0dMaW50IEdMX0FQSUVOVFJZIEdldEZyYWdEYXRhTG9jYXRp
b25Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xHZXRQb2ludGVydiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFt
ZSA9ICVzLCB2b2lkICoqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBvaW50ZXJ2UE5hbWUs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldEZyYWdEYXRhTG9j
YXRpb24iLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIGNv
bnN0IEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAg
ICAgICAgIHByb2dyYW0sICh1aW50cHRyX3QpbmFtZSk7CiAKKyAgICBHTGludCByZXR1cm5WYWx1
ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRQb2ludGVydihjb250ZXh0LCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZyYWdEYXRhTG9jYXRpb24o
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFBvaW50ZXJ2KHBuYW1lLCBwYXJh
bXMpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRGcmFnRGF0YUxvY2F0
aW9uKHByb2dyYW1QYWNrZWQsIG5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0UG9pbnRlcnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRGcmFnRGF0YUxvY2F0aW9uLCBHTGludD4oKTsK
KyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZyYWdEYXRhTG9jYXRpb24sIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBuYW1lLCByZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEZyYWdEYXRhTG9jYXRpb24sIEdMaW50PigpOwogICAg
IH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UG9p
bnRlcnZLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCB2b2lk
ICoqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFBvaW50ZXJ2S0hSIiwg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIHZvaWQgKipwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBF
VkVOVCgiZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVz
LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UG9p
bnRlcnZLSFIoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRQb2ludGVy
dihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQb2ludGVydktIUiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0LCBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtQmluYXJ5Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpCit2
b2lkIEdMX0FQSUVOVFJZIEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2T0VTQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbEdldFBy
b2dyYW1CaW5hcnkiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1
LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRS
Ci0gICAgICAgICIsIEdMZW51bSAqYmluYXJ5Rm9ybWF0ID0gMHglMDE2IiBQUkl4UFRSICIsIHZv
aWQgKmJpbmFyeSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdCliaW5hcnlGb3Jt
YXQsCi0gICAgICAgICh1aW50cHRyX3QpYmluYXJ5KTsKKyAgICBFVkVOVCgiZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gYXR0YWNobWVudCA9ICVzLCBHTGVudW0gcG5hbWUg
PSAlcywgR0xpbnQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1l
YnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQsIGF0dGFjaG1lbnQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJOYW1l
LCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVm
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZW5ndGgsIGJpbmFyeUZvcm1hdCwgYmluYXJ5KSk7CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2T0VTKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldFByb2dyYW1CaW5hcnkocHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBi
aW5hcnlGb3JtYXQsIGJpbmFyeSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbUJpbmFyeSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICBiaW5hcnlGb3JtYXQsIGJpbmFyeSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1CaW5h
cnlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSAqYmluYXJ5Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKmJpbmFyeSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJn
bEdldFByb2dyYW1CaW5hcnlPRVMiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2
IiBQUkl4UFRSCi0gICAgICAgICIsIEdMZW51bSAqYmluYXJ5Rm9ybWF0ID0gMHglMDE2IiBQUkl4
UFRSICIsIHZvaWQgKmJpbmFyeSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdCli
aW5hcnlGb3JtYXQsCi0gICAgICAgICh1aW50cHRyX3QpYmluYXJ5KTsKKyAgICBFVkVOVCgiZ2xH
ZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkZyYW1lYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJOYW1lLCBw
bmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlPRVMoY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlGb3JtYXQsIGJpbmFyeSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dy
YW1CaW5hcnkocHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBiaW5hcnlGb3JtYXQsIGJp
bmFyeSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRQcm9ncmFtQmluYXJ5T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
YnVmU2l6ZSwgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeUZvcm1hdCwgYmlu
YXJ5KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUluZm9Mb2dDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9Mb2cpCitHTGVudW0gR0xfQVBJRU5U
UlkgR2V0R3JhcGhpY3NSZXNldFN0YXR1c0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKAotICAgICAgICAiZ2xHZXRQcm9ncmFtSW5mb0xvZyIsCi0gICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBH
THNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiwgR0xjaGFyICppbmZv
TG9nID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWluZm9Mb2cpOworICAgIEVW
RU5UKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRl
eHQpKTsKIAorICAgIEdMZW51bSByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtSW5mb0xvZyhj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0
YXR1cyhjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbVBhY2tlZCwgYnVmU2l6
ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+
Z2V0R3JhcGhpY3NSZXNldFN0YXR1cygpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoR2V0UHJvZ3JhbUluZm9Mb2csIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2Vk
LCBidWZTaXplLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0
UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1cywgR0xlbnVtPigp
OworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0R3JhcGhpY3NSZXNldFN0YXR1
cywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1cywgR0xlbnVtPigpOwogICAgIH0KKyAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUludGVyZmFj
ZWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50
ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK0dMZW51bSBHTF9BUElFTlRSWSBHZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsR2V0UHJvZ3JhbUludGVyZmFjZWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgIgotICAgICAgICAgICJHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2UpLAotICAgICAgICAg
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlUE5hbWUsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0
dXNFWFQiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAorICAgIEdMZW51bSByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbUlu
dGVyZmFjZWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5h
bWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVChjb250ZXh0KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0
UHJvZ3JhbUludGVyZmFjZWl2KHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9n
cmFtSW50ZXJmYWNlaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9n
cmFtSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgIHBuYW1lLCBwYXJhbXMpOworICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIEdMZW51
bT4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldEdyYXBoaWNzUmVzZXRT
dGF0dXNFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQsIEdMZW51bT4oKTsKICAgICB9
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFByb2dy
YW1QaXBlbGluZUluZm9Mb2dDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGlw
ZWxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9Mb2cpCit2
b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2NGlfdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50NjQgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbEdldFByb2dyYW1QaXBl
bGluZUluZm9Mb2ciLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGlwZWxpbmUgPSAl
dSwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBU
UgotICAgICAgICAiLCBHTGNoYXIgKmluZm9Mb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgIENJRChjb250ZXh0KSwgcGlwZWxpbmUsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAo
dWludHB0cl90KWluZm9Mb2cpOworICAgIEVWRU5UKCJnbEdldEludGVnZXI2NGlfdiIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAl
dSwgR0xpbnQ2NCAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUeXBlRW51bSwgdGFyZ2V0KSwgaW5k
ZXgsICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJv
Z3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dy
YW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgVmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKGNvbnRleHQsIHBpcGVsaW5lUGFj
a2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KGNvbnRleHQsIHRhcmdl
dCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nKHBpcGVsaW5lUGFj
a2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
SW50ZWdlcjY0aV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHBpcGVsaW5lUGFja2VkLCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCwgaW5mb0xvZyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0SW50ZWdlcjY0aV92LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbmRleCwgZGF0YSk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGluZWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBwaXBlbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRJ
bnRlZ2VyNjR2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xp
bnQ2NCAqZGF0YSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUGlwZWxpbmVpdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBpcGVsaW5lID0gJXUsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBwaXBlbGluZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlBpcGVsaW5lUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFy
YW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRJbnRlZ2VyNjR2IiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHBuYW1lID0gJXMsIEdMaW50NjQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBu
YW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQ
cm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJv
Z3JhbVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRQcm9ncmFtUGlwZWxpbmVpdihjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcjY0dihjb250ZXh0LCBwbmFtZSwgZGF0YSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dFByb2dyYW1QaXBlbGluZWl2KHBpcGVsaW5lUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsIGRhdGEpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVBpcGVsaW5laXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwaXBlbGluZVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0SW50ZWdlcjY0diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBkYXRhKTsK
ICAgICB9CiB9CiAKLUdMdWludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdl
cjY0dkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMaW50
NjQgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlID0gJXMsIGNvbnN0IEdMY2hhciAqbmFtZSA9ICIKLSAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2UpLAot
ICAgICAgICAgICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsR2V0SW50ZWdlcjY0dkVY
VCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50NjQg
KmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClkYXRh
KTsKIAotICAgIEdMdWludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldEludGVnZXI2NHZFWFQoY29udGV4dCwgcG5hbWUs
IGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldFByb2dyYW1SZXNvdXJjZUluZGV4KHByb2dyYW1Q
YWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6R2V0UHJvZ3JhbVJlc291cmNlSW5kZXgsIEdMdWludD4oKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldEludGVnZXI2NHYocG5hbWUsIGRhdGEpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1J
bnRlcmZhY2UsIG5hbWUsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0
UHJvZ3JhbVJlc291cmNlSW5kZXgsIEdMdWludD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRJbnRlZ2VyNjR2RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIGRhdGEpOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMaW50IEdMX0FQSUVOVFJZIEdldFBy
b2dyYW1SZXNvdXJjZUxvY2F0aW9uQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1l
KQordm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VyaV92Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24iLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwcm9n
cmFtSW50ZXJmYWNlID0gJXMsIGNvbnN0IEdMY2hhciAqbmFtZSA9ICIKLSAgICAgICAgICAiMHgl
MDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2Up
LAotICAgICAgICAgICh1aW50cHRyX3QpbmFtZSk7CisgICAgRVZFTlQoImdsR2V0SW50ZWdlcmlf
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQg
aW5kZXggPSAldSwgR0xpbnQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VHlwZUVudW0sIHRhcmdl
dCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOwogCi0gICAgR0xpbnQgcmV0dXJuVmFsdWU7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNl
TG9jYXRpb24oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkp
OworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRJ
bnRlZ2VyaV92KGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24ocHJvZ3JhbVBhY2tl
ZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbiwgR0xpbnQ+KCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZXRJbnRlZ2VyaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24sIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW1JbnRlcmZhY2UsIG5hbWUsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24sIEdMaW50PigpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldEludGVnZXJpX3YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGlu
ZGV4LCBkYXRhKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1HTGludCBH
TF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQordm9pZCBH
TF9BUElFTlRSWSBHZXRJbnRlZ2VydkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFByb2dyYW1SZXNvdXJj
ZUxvY2F0aW9uSW5kZXhFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlID0gJXMsIGNvbnN0IEdMY2hhciAqbmFt
ZSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZh
Y2UsIHByb2dyYW1JbnRlcmZhY2UpLAotICAgICAgICAgICh1aW50cHRyX3QpbmFtZSk7CisgICAg
RVZFTlQoImdsR2V0SW50ZWdlcnYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywg
R0xpbnQgKmRhdGEgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJf
dClkYXRhKTsKIAotICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4
RVhUKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUpKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0SW50ZWdlcnYoY29udGV4dCwgcG5h
bWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJl
c291cmNlTG9jYXRpb25JbmRleChwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1l
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
blZhbHVlID0KLSAgICAgICAgICAgICAgICBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVCwgR0xpbnQ+KCk7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgZGF0YSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhULCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBw
cm9ncmFtSW50ZXJmYWNlLCBuYW1lLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0KLSAgICAgICAgICAgIEdldERlZmF1bHRSZXR1cm5W
YWx1ZTxFbnRyeVBvaW50OjpHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhULCBHTGlu
dD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRJbnRlZ2VydiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHBuYW1lLCBkYXRhKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZU5hbWVDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCit2b2lkIEdMX0FQSUVOVFJZIEdl
dEludGVybmFsZm9ybWF0aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
R2V0UHJvZ3JhbVJlc291cmNlTmFtZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UgPSAlcywgR0x1aW50IGluZGV4
ID0gJXUsICIKLSAgICAgICAgICAiR0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0
aCA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIKLSAg
ICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBwcm9ncmFtSW50ZXJmYWNlKSwKLSAg
ICAgICAgICBpbmRleCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpbmFt
ZSk7CisgICAgRVZFTlQoImdsR2V0SW50ZXJuYWxmb3JtYXRpdiIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSBidWZTaXplID0gJWQsIEdM
aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVy
bmFsZm9ybWF0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJu
YWxGb3JtYXRQTmFtZSwgcG5hbWUpLCBidWZTaXplLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZShj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgYnVmU2l6
ZSwgbGVuZ3RoLCBuYW1lKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldEludGVybmFsZm9ybWF0aXYoY29u
dGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldFByb2dyYW1SZXNvdXJjZU5hbWUocHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwg
aW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRJbnRlcm5hbGZvcm1h
dGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlTmFtZSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgbmFtZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0SW50ZXJuYWxmb3JtYXRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGJ1
ZlNpemUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1S
ZXNvdXJjZWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3Jh
bUludGVyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHByb3BDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpwcm9wcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldExpZ2h0ZnZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gbGlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUmVzb3VyY2Vp
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVt
IHByb2dyYW1JbnRlcmZhY2UgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsICIKLSAgICAgICAgICAi
R0xzaXplaSBwcm9wQ291bnQgPSAlZCwgY29uc3QgR0xlbnVtICpwcm9wcyA9IDB4JTAxNiIgUFJJ
eFBUUgotICAgICAgICAgICIsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGgg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2UpLAotICAg
ICAgICAgIGluZGV4LCBwcm9wQ291bnQsICh1aW50cHRyX3QpcHJvcHMsIGJ1ZlNpemUsICh1aW50
cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0TGlnaHRm
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGxpZ2h0ID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHROYW1lLCBs
aWdodCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0UGFyYW1l
dGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0
ZUdldFByb2dyYW1SZXNvdXJjZWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRl
cmZhY2UsIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcENvdW50LCBwcm9wcywgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TGlnaHRmdihjb250ZXh0
LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1SZXNvdXJjZWl2KHBy
b2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4LCBwcm9wQ291bnQsIHByb3BzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0TGlnaHRmdihsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRQcm9n
cmFtUmVzb3VyY2VpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dy
YW1JbnRlcmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIHByb3BDb3VudCwgcHJv
cHMsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRM
aWdodGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtaXZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0TGlnaHR4dkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBsaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFByb2dyYW1pdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHBuYW1lID0g
JXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbVByb3Bl
cnR5QVJCLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5U
KCJnbEdldExpZ2h0eHYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9
ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkxpZ2h0TmFtZSwgbGlnaHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbWl2KGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0ZXI+KHBu
YW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdldExpZ2h0eHYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRQcm9ncmFtaXYocHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRMaWdodHh2KGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1pdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldExpZ2h0eHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQs
IHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0aTY0
dkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFy
YW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRNYXRlcmlhbGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gcG5hbWUgPSAl
cywgR0xpbnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChj
b250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFt
ZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZF
TlQoImdsR2V0TWF0ZXJpYWxmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZh
Y2UgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpNYXRlcmlhbEZhY2UsIGZhY2UpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpNYXRlcmlhbFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdGk2NHZFWFQoY29udGV4dCwgaWRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+
KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0TWF0ZXJpYWxmdihjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+Z2V0UXVlcnlPYmplY3RpNjR2KGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmdldE1hdGVyaWFsZnYoZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdGk2NHZFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0TWF0ZXJpYWxmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBu
YW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVy
eU9iamVjdGl2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRNYXRlcmlhbHh2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVyeU9iamVjdGl2RVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVy
TmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xHZXRNYXRlcmlhbHh2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9
ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
Ok1hdGVyaWFsRmFjZSwgZmFjZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6Ok1hdGVyaWFsUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZFWFQoY29udGV4dCwgaWRQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1l
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0TWF0ZXJpYWx4dihjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0
UXVlcnlPYmplY3RpdihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRNYXRlcmlhbHh2KGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3RpdkVYVCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRNYXRlcmlhbHh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQs
IHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWk2
NHZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldE1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhU
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtZW1vcnlPYmplY3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVy
eU9iamVjdHVpNjR2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAl
dSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRy
X3QpcGFyYW1zKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsR2V0TWVtb3J5T2JqZWN0UGFyYW1l
dGVyaXZFWFQiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5T2JqZWN0ID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisg
ICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIG1lbW9yeU9iamVjdCwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6Ok1lbW9yeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAg
ICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxR
dWVyeUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3R1aTY0dkVYVChjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAg
ICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgPSBGcm9tR0w8TWVtb3J5T2Jq
ZWN0SUQ+KG1lbW9yeU9iamVjdCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldE1lbW9yeU9iamVjdFBhcmFt
ZXRlcml2RVhUKGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldFF1ZXJ5T2JqZWN0dWk2NHYoaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAg
ICAgY29udGV4dC0+Z2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVyaXYobWVtb3J5T2JqZWN0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1
ZXJ5T2JqZWN0dWk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUs
IHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0TWVtb3J5T2JqZWN0UGFyYW1ldGVy
aXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEdldFF1ZXJ5T2JqZWN0dWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
KnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0TXVsdGlzYW1wbGVmdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqdmFsKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFF1ZXJ5T2Jq
ZWN0dWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSwgR0xlbnVt
IHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeU9i
amVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7
CisgICAgRVZFTlQoImdsR2V0TXVsdGlzYW1wbGVmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludCBpbmRleCA9ICV1LCBHTGZsb2F0ICp2YWwgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksIGluZGV4LCAodWludHB0cl90KXZh
bCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdihjb250ZXh0LCBp
ZFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdihjb250ZXh0LCBwbmFt
ZSwgaW5kZXgsIHZhbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KGlkUGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldE11bHRpc2FtcGxlZnYocG5hbWUsIGluZGV4
LCB2YWwpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlPYmplY3R1
aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0TXVsdGlzYW1wbGVmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHBuYW1lLCBpbmRleCwgdmFsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UXVl
cnlPYmplY3R1aXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRPYmplY3RMYWJlbENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxhYmVsKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdl
dFF1ZXJ5T2JqZWN0dWl2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQg
PSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpRdWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgICAodWludHB0
cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0T2JqZWN0TGFiZWwiLAorICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSBpZGVudGlmaWVyID0gJXMsIEdMdWludCBuYW1lID0gJXUsIEdM
c2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICIKKyAgICAgICAgICAiKmxlbmd0aCA9IDB4JTAx
NiIgUFJJeFBUUiAiLCBHTGNoYXIgKmxhYmVsID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgaWRlbnRpZmllciksIG5hbWUsIGJ1ZlNpemUsCisgICAgICAgICAgKHVpbnRwdHJfdClsZW5n
dGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFF1
ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVy
eUlEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVlcnlP
YmplY3R1aXZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlR2V0T2JqZWN0TGFiZWwoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwg
bGVuZ3RoLCBsYWJlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWl2KGlkUGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldE9iamVjdExhYmVsKGlkZW50aWZpZXIsIG5h
bWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0UXVlcnlPYmplY3R1aXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0T2JqZWN0TGFiZWws
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBidWZTaXplLCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgbGFiZWwpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5U
UlkgR2V0T2JqZWN0TGFiZWxLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZp
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRRdWVyeWl2
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0
YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpRdWVyeVBhcmFt
ZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldE9i
amVjdExhYmVsS0hSIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gaWRlbnRpZmll
ciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAi
CisgICAgICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xjaGFyICpsYWJlbCA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGlkZW50aWZpZXIpLCBuYW1lLCBidWZTaXpl
LAorICAgICAgICAgICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWxhYmVsKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwg
cGFyYW1zKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWxLSFIoY29udGV4dCwgaWRlbnRpZmllciwg
bmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5aXYodGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldE9iamVjdExhYmVsKGlk
ZW50aWZpZXIsIG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0T2JqZWN0
TGFiZWxLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgbGFiZWwpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBHZXRRdWVyeWl2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0T2JqZWN0UHRyTGFiZWxDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xHZXRRdWVyeWl2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4
UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpRdWVyeVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwor
ICAgIEVWRU5UKCJnbEdldE9iamVjdFB0ckxhYmVsIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBjb25zdCB2b2lkICpwdHIgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTHNpemVp
IGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAg
ICAgIiwgR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksICh1aW50cHRyX3QpcHRyLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVp
bnRwdHJfdClsYWJlbCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4o
dGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeWl2
RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRPYmplY3RQdHJMYWJl
bChjb250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRRdWVyeWl2KHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRPYmpl
Y3RQdHJMYWJlbChwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0UXVlcnlpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0T2Jq
ZWN0UHRyTGFiZWwsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwdHIsIGJ1ZlNpemUsIGxlbmd0aCwg
bGFiZWwpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldE9iamVjdFB0ckxh
YmVsS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqbGFiZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVy
YnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpSZW5kZXJidWZmZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1z
KTsKKyAgICBFVkVOVCgiZ2xHZXRPYmplY3RQdHJMYWJlbEtIUiIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwg
R0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgor
ICAgICAgICAgICIsIEdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KXB0ciwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5n
dGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoY29u
dGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQs
IHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRPYmpl
Y3RQdHJMYWJlbChwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldE9iamVjdFB0ckxhYmVsS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHRyLCBidWZTaXpl
LCBsZW5ndGgsIGxhYmVsKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9B
UElFTlRSWSBHZXRQb2ludGVydkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0g
cG5hbWUsIHZvaWQgKipwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXZPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAl
cywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVu
ZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpSZW5kZXJidWZmZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFy
YW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRQb2ludGVydiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBw
bmFtZSA9ICVzLCB2b2lkICoqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBvaW50ZXJ2UE5h
bWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaXZPRVMoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRQb2ludGVydihj
b250ZXh0LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFBvaW50ZXJ2KHBu
YW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFBvaW50ZXJ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UG9pbnRl
cnZLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCB2b2lkICoq
cGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXYiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVz
LCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0
ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5U
KCJnbEdldFBvaW50ZXJ2S0hSIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIHZv
aWQgKipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50
cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQg
c2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihz
YW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVy
UGFyYW1ldGVySWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdl
dFBvaW50ZXJ2S0hSKGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVySWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4
dC0+Z2V0UG9pbnRlcnYocG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShHZXRTYW1wbGVyUGFyYW1ldGVySWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2Ft
cGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UG9p
bnRlcnZLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FU0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFy
YW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtQmluYXJ5Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUyIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJh
bXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVy
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1l
KSwKLSAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoCisgICAgICAgICJn
bEdldFByb2dyYW1CaW5hcnkiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQ
Ukl4UFRSCisgICAgICAgICIsIEdMZW51bSAqYmluYXJ5Rm9ybWF0ID0gMHglMDE2IiBQUkl4UFRS
ICIsIHZvaWQgKmJpbmFyeSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgQ0lEKGNvbnRl
eHQpLCBwcm9ncmFtLCBidWZTaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdCliaW5h
cnlGb3JtYXQsCisgICAgICAgICh1aW50cHRyX3QpYmluYXJ5KTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQ
YXJhbWV0ZXJJaXYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRQcm9ncmFtQmluYXJ5KHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwg
YmluYXJ5Rm9ybWF0LCBiaW5hcnkpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQ
YWNrZWQsIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0UHJvZ3JhbUJpbmFyeSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlG
b3JtYXQsIGJpbmFyeSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQ
YXJhbWV0ZXJJdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtQmluYXJ5
T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKmJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0U2FtcGxlclBh
cmFtZXRlckl1aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgot
ICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAg
ICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xHZXRQcm9ncmFt
QmluYXJ5T0VTIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xzaXplaSBidWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgor
ICAgICAgICAiLCBHTGVudW0gKmJpbmFyeUZvcm1hdCA9IDB4JTAxNiIgUFJJeFBUUiAiLCB2b2lk
ICpiaW5hcnkgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpYmluYXJ5Rm9ybWF0
LAorICAgICAgICAodWludHB0cl90KWJpbmFyeSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlckl1aXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQ
cm9ncmFtQmluYXJ5T0VTKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmluYXJ5Rm9ybWF0LCBiaW5hcnkpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1ldGVySXVpdihzYW1wbGVy
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1C
aW5hcnkocHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBiaW5hcnlGb3JtYXQsIGJpbmFy
eSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTYW1wbGVyUGFyYW1ldGVy
SXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1CaW5hcnlPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBidWZTaXplLCBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0UHJvZ3JhbUluZm9Mb2dDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9Mb2cpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0U2Ft
cGxlclBhcmFtZXRlckl1aXZPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBz
YW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
Ci0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xH
ZXRQcm9ncmFtSW5mb0xvZyIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBS
SXhQVFIKKyAgICAgICAgIiwgR0xjaGFyICppbmZvTG9nID0gMHglMDE2IiBQUkl4UFRSICIiLAor
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3Ro
LCAodWludHB0cl90KWluZm9Mb2cpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNh
bXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1w
bGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBh
cmFtZXRlckl1aXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwor
ICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbUluZm9Mb2coY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlckl1
aXYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIGluZm9Mb2cp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2FtcGxlclBhcmFtZXRlckl1
aXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dy
YW1JbmZvTG9nLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYnVmU2l6ZSwg
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1ldGVyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzYW1wbGVyLAordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtSW50ZXJmYWNl
aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRl
cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdl
dFNhbXBsZXJQYXJhbWV0ZXJmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNh
bXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
Ci0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFByb2dyYW1J
bnRlcmZhY2VpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsICIKKyAg
ICAgICAgICAiR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFt
SW50ZXJmYWNlLCBwcm9ncmFtSW50ZXJmYWNlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6UHJvZ3JhbUludGVyZmFjZVBOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFy
YW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVy
ZnYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbmFtZSwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0
U2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbUludGVyZmFjZWl2KHByb2dyYW1QYWNrZWQsIHByb2dy
YW1JbnRlcmZhY2UsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0U2FtcGxlclBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3Jh
bUludGVyZmFjZWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3Jh
bUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBwbmFtZSwgcGFyYW1zKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcml2Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdM
X0FQSUVOVFJZIEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2dDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcGlwZWxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGNoYXIgKmluZm9Mb2cpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0U2FtcGxlclBhcmFtZXRlcml2IiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5h
bWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVy
UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAg
ICBFVkVOVCgKKyAgICAgICAgImdsR2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyIsCisgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBwaXBlbGluZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAl
ZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIsIEdMY2hhciAq
aW5mb0xvZyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBwaXBl
bGluZSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpaW5mb0xvZyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFtZXRlcml2KGNvbnRl
eHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgUHJvZ3JhbVBpcGVs
aW5lSUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3Jh
bVBpcGVsaW5lSUQ+KHBpcGVsaW5lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVBpcGVsaW5l
SW5mb0xvZyhjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9n
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVBpcGVsaW5lSW5mb0xvZyhwaXBlbGlu
ZVBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKEdldFNhbXBsZXJQYXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFByb2dyYW1QaXBlbGluZUluZm9Mb2csIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwaXBlbGluZVBh
Y2tlZCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIGluZm9Mb2cpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVY
VENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2VtYXBob3JlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFBy
b2dyYW1QaXBlbGluZWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwaXBlbGluZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xHZXRTZW1hcGhvcmVQ
YXJhbWV0ZXJ1aTY0dkVYVCIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhv
cmUgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2VtYXBob3JlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAot
ICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0UHJvZ3JhbVBpcGVs
aW5laXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwaXBlbGluZSA9ICV1LCBH
TGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAg
ICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcGlwZWxpbmUsIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpQaXBlbGluZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAo
dWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBo
b3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9y
ZUlEPihzZW1hcGhvcmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQoY29u
dGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIFByb2dyYW1Q
aXBlbGluZUlEIHBpcGVsaW5lUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBy
b2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1QaXBlbGluZWl2KGNvbnRleHQsIHBp
cGVsaW5lUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0U2VtYXBob3JlUGFyYW1ldGVydWk2
NHYoc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmdldFByb2dyYW1QaXBlbGluZWl2KHBpcGVsaW5lUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2
RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFByb2dy
YW1QaXBlbGluZWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJJbmZvTG9n
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqaW5mb0xvZykK
K0dMdWludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRTaGFkZXJJbmZvTG9nIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJXUsIEdMc2l6ZWkgYnVmU2l6
ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiLCBH
TGNoYXIgKmluZm9Mb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBzaGFkZXIsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KWluZm9M
b2cpOworICAgIEVWRU5UKCJnbEdldFByb2dyYW1SZXNvdXJjZUluZGV4IiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0gcHJvZ3JhbUludGVyZmFj
ZSA9ICVzLCBjb25zdCBHTGNoYXIgKm5hbWUgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpQcm9ncmFtSW50ZXJmYWNlLCBwcm9ncmFtSW50ZXJmYWNlKSwKKyAgICAgICAg
ICAodWludHB0cl90KW5hbWUpOwogCisgICAgR0x1aW50IHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1
ZlNpemUsIGxlbmd0aCwgaW5mb0xvZykpOworICAgICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3Jh
bVJlc291cmNlSW5kZXgoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwg
bmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyUGFja2VkLCBidWZTaXplLCBsZW5ndGgs
IGluZm9Mb2cpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRQcm9ncmFt
UmVzb3VyY2VJbmRleChwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1lKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNoYWRlckluZm9Mb2csIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICBpbmZvTG9nKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRQcm9n
cmFtUmVzb3VyY2VJbmRleCwgR0x1aW50PigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9n
cmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1JbnRlcmZhY2UsIG5hbWUs
IHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0UHJvZ3JhbVJlc291cmNl
SW5kZXgsIEdMdWludD4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlclByZWNpc2lvbkZvcm1hdENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJlY2lzaW9udHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpy
YW5nZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwcmVjaXNpb24pCitHTGludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3Vy
Y2VMb2NhdGlvbkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSBzaGFkZXJ0eXBlID0gJXMsIEdMZW51bSBwcmVjaXNpb250eXBlID0gJXMsIEdM
aW50ICpyYW5nZSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIsIEdMaW50ICpwcmVj
aXNpb24gPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2hhZGVyVHlwZSwgc2hhZGVydHlwZSksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByZWNpc2lvblR5cGUsIHByZWNpc2lvbnR5
cGUpLCAodWludHB0cl90KXJhbmdlLAotICAgICAgICAgICh1aW50cHRyX3QpcHJlY2lzaW9uKTsK
KyAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbiIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2Ug
PSAlcywgY29uc3QgR0xjaGFyICpuYW1lID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6UHJvZ3JhbUludGVyZmFjZSwgcHJvZ3JhbUludGVyZmFjZSksCisgICAgICAgICAg
KHVpbnRwdHJfdCluYW1lKTsKIAorICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChjb250ZXh0LCBzaGFkZXJ0eXBlLCBwcmVjaXNpb250eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJh
bmdlLCBwcmVjaXNpb24pKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFNoYWRlclByZWNpc2lv
bkZvcm1hdChzaGFkZXJ0eXBlLCBwcmVjaXNpb250eXBlLCByYW5nZSwgcHJlY2lzaW9uKTsKKyAg
ICAgICAgICAgIHJldHVyblZhbHVlID0KKyAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9n
cmFtUmVzb3VyY2VMb2NhdGlvbihwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLCBuYW1l
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNv
dXJjZUxvY2F0aW9uLCBHTGludD4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNoYWRlcnR5
cGUsIHByZWNpc2lvbnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgcmFuZ2UsIHByZWNpc2lv
bik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24sIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW1JbnRlcmZhY2UsIG5hbWUsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6R2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb24sIEdMaW50PigpOwogICAgIH0KKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyU291cmNl
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpzb3VyY2UpCitHTGlu
dCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbkluZGV4RVhUQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbEdldFNoYWRlclNvdXJjZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHNoYWRlciA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3Ro
ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xjaGFyICpzb3VyY2UgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzaGFkZXIsIGJ1ZlNpemUsICh1
aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNvdXJjZSk7CisgICAgRVZFTlQoImdsR2V0UHJv
Z3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UgPSAlcywgY29uc3Qg
R0xjaGFyICpuYW1lID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJv
Z3JhbUludGVyZmFjZSwgcHJvZ3JhbUludGVyZmFjZSksCisgICAgICAgICAgKHVpbnRwdHJfdClu
YW1lKTsKIAorICAgIEdMaW50IHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRl
R2V0U2hhZGVyU291cmNlKGNvbnRleHQsIHNoYWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBz
b3VyY2UpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlR2V0UHJvZ3JhbVJlc291cmNlTG9jYXRpb25JbmRleEVYVCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9n
cmFtSW50ZXJmYWNlLCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlclBhY2tlZCwgYnVm
U2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPQorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXgocHJvZ3Jh
bVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShHZXRTaGFkZXJTb3VyY2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQ
YWNrZWQsIGJ1ZlNpemUsIGxlbmd0aCwgc291cmNlKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9CisgICAgICAgICAgICAgICAgR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQs
IEdMaW50PigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbVJl
c291cmNlTG9jYXRpb25JbmRleEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSwgcmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9Cisg
ICAgICAgICAgICBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0UHJvZ3JhbVJl
c291cmNlTG9jYXRpb25JbmRleEVYVCwgR0xpbnQ+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJpdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1SZXNvdXJjZU5hbWVD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVy
ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsR2V0U2hhZGVyaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBzaGFkZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzaGFkZXIsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpTaGFkZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAg
KHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBw
cm9ncmFtSW50ZXJmYWNlID0gJXMsIEdMdWludCBpbmRleCA9ICV1LCAiCisgICAgICAgICAgIkdM
c2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwg
R0xjaGFyICpuYW1lID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3Jh
bUludGVyZmFjZSwgcHJvZ3JhbUludGVyZmFjZSksCisgICAgICAgICAgaW5kZXgsIGJ1ZlNpemUs
ICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KW5hbWUpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyaXYoY29udGV4dCwgc2hhZGVyUGFja2VkLCBwbmFt
ZSwgcGFyYW1zKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFBy
b2dyYW1SZXNvdXJjZU5hbWUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFNoYWRlcml2KHNoYWRl
clBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFt
UmVzb3VyY2VOYW1lKHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4LCBidWZT
aXplLCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2hhZGVyaXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1SZXNvdXJjZU5hbWUsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpOwogICAgIH0KIH0KIAotY29uc3QgR0x1
Ynl0ZSAqR0xfQVBJRU5UUlkgR2V0U3RyaW5nQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSBuYW1lKQordm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VpdkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBwcm9wQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqcHJvcHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFN0cmluZyIsICJjb250ZXh0ID0gJWQsIEdMZW51
bSBuYW1lID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlN0cmluZ05hbWUsIG5hbWUpKTsKKyAgICBFVkVOVCgiZ2xHZXRQcm9ncmFtUmVz
b3VyY2VpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xlbnVtIHByb2dyYW1JbnRlcmZhY2UgPSAlcywgR0x1aW50IGluZGV4ID0gJXUsICIKKyAgICAg
ICAgICAiR0xzaXplaSBwcm9wQ291bnQgPSAlZCwgY29uc3QgR0xlbnVtICpwcm9wcyA9IDB4JTAx
NiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICps
ZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGludCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByb2dyYW1JbnRlcmZhY2UsIHByb2dyYW1JbnRlcmZhY2Up
LAorICAgICAgICAgIGluZGV4LCBwcm9wQ291bnQsICh1aW50cHRyX3QpcHJvcHMsIGJ1ZlNpemUs
ICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXBhcmFtcyk7CiAKLSAgICBjb25zdCBHTHVi
eXRlICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldFN0cmluZyhjb250ZXh0LCBuYW1lKSk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1S
ZXNvdXJjZWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcENvdW50LCBw
cm9wcywgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdldFN0cmlu
ZyhuYW1lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFN0cmlu
ZywgY29uc3QgR0x1Ynl0ZSAqPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0UHJvZ3JhbVJl
c291cmNlaXYocHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwgaW5kZXgsIHByb3BDb3Vu
dCwgcHJvcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRTdHJpbmcsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuYW1lLCByZXR1cm5WYWx1ZSk7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OkdldFN0cmluZywgY29uc3QgR0x1Ynl0ZSAqPigpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFByb2dyYW1SZXNvdXJjZWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBpbmRleCwgcHJvcENvdW50LCBwcm9wcywgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLWNvbnN0IEdMdWJ5dGUgKkdMX0FQSUVO
VFJZIEdldFN0cmluZ2lDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG5hbWUs
IEdMdWludCBpbmRleCkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbWl2Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0U3RyaW5naSIsICJjb250
ZXh0ID0gJWQsIEdMZW51bSBuYW1lID0gJXMsIEdMdWludCBpbmRleCA9ICV1IiwgQ0lEKGNvbnRl
eHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdHJpbmdOYW1lLCBu
YW1lKSwgaW5kZXgpOworICAgIEVWRU5UKCJnbEdldFByb2dyYW1pdiIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50
ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbVByb3BlcnR5QVJCLCBw
bmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCi0gICAgY29uc3QgR0x1Ynl0
ZSAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVHZXRTdHJpbmdpKGNvbnRleHQsIG5hbWUsIGluZGV4KSk7CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFByb2dyYW1pdihjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRTdHJpbmdp
KG5hbWUsIGluZGV4KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6Okdl
dFN0cmluZ2ksIGNvbnN0IEdMdWJ5dGUgKj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFBy
b2dyYW1pdihwcm9ncmFtUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFN0cmluZ2ksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBuYW1lLCBp
bmRleCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRTdHJpbmdpLCBj
b25zdCBHTHVieXRlICo+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UHJvZ3JhbWl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAg
fQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRTeW5j
aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc3luYyBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgKnZhbHVlcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3Rp
NjR2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpw
YXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0U3luY2l2IiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHN5bmMgc3luYyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAqbGVuZ3RoID0gMHglMDE2
IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xpbnQgKnZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksICh1aW50cHRyX3Qpc3luYywgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlN5bmNQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgYnVm
U2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRyX3QpdmFsdWVzKTsKKyAgICBFVkVOVCgi
Z2xHZXRRdWVyeU9iamVjdGk2NHZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBpZCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQ2NCAqcGFyYW1zID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAo
dWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTeW5jaXYoY29udGV4dCwgc3luYywgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgdmFsdWVzKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3RpNjR2RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0
U3luY2l2KHN5bmMsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVlcyk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRRdWVyeU9iamVjdGk2NHYoaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U3luY2l2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgc3luYywgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsdWVzKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRRdWVyeU9iamVjdGk2NHZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEdldFRleEVudmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQordm9pZCBHTF9BUElF
TlRSWSBHZXRRdWVyeU9iamVjdGl2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFRleEVudmZ2IiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBH
TGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52VGFy
Z2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0
dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xHZXRRdWVyeU9iamVjdGl2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
aWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50
cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlRW52
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRh
cmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhFbnZmdihjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4o
aWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVHZXRRdWVyeU9iamVjdGl2RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+Z2V0VGV4RW52ZnYodGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aXYoaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4RW52ZnYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0aXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEdldFRleEVudml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5U
UlkgR2V0UXVlcnlPYmplY3R1aTY0dkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRUZXhFbnZp
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52VGFy
Z2V0LCB0YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0
dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgi
Z2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludDY0ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAg
ICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0
dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBh
Y2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhFbnZpdihjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKKyAgICAgICAgUXVlcnlJRCBp
ZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVl
cnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpNjR2RVhUKGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2V0VGV4RW52aXYodGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1z
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0dWk2NHYoaWRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4RW52
aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJh
bXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIEdldFRleEVudnh2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1z
KQordm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4RW52eHYiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMZml4ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVFbnZUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAg
IEVWRU5UKCJnbEdldFF1ZXJ5T2JqZWN0dWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgaWQgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaWQsIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpRdWVyeU9iamVjdFBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAg
ICAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4
dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVFbnZUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQ
YWNrZWQgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4RW52eHYoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CisgICAgICAgIFF1ZXJ5SUQg
aWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1
ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXYoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRUZXhFbnZ4dih0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4RW52eHYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5T2JqZWN0dWl2LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRUZXhHZW5mdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1z
KQordm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpdkVYVENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0
VGV4R2VuZnZPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb29yZCA9ICVz
LCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7Cisg
ICAgRVZFTlQoImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBpZCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1aW50ICpwYXJhbXMgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpZCwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAg
ICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbmZ2T0VT
KGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+
KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0UXVlcnlPYmplY3R1aXZFWFQoY29udGV4dCwgaWRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRUZXhHZW5mdihjb29yZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250
ZXh0LT5nZXRRdWVyeU9iamVjdHVpdihpZFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhHZW5mdk9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRR
dWVyeU9iamVjdHVpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwg
cGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4R2VuaXZPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFF1
ZXJ5aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFRleEdl
bml2T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xl
bnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNv
b3JkTmFtZSwgY29vcmQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVO
VCgiZ2xHZXRRdWVyeWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpRdWVyeVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBR
dWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRUZXhHZW5pdk9FUyhjb250ZXh0LCBjb29yZCwg
cG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRRdWVyeWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldFRleEdlbml2KGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdldFF1ZXJ5aXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleEdlbml2T0VTLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1
ZXJ5aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhHZW54dk9FU0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY29vcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmaXhlZCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeWl2
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xH
ZXRUZXhHZW54dk9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0g
JXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsK
KyAgICBFVkVOVCgiZ2xHZXRRdWVyeWl2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpRdWVyeVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClw
YXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VGV4R2VueHZPRVMoY29udGV4dCwgY29vcmQsIHBu
YW1lLCBwYXJhbXMpKTsKKyAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRRdWVyeWl2
RVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleEdlbnh2
KGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5aXYo
dGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFRleEdlbnh2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFF1ZXJ5aXZFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQor
dm9pZCBHTF9BUElFTlRSWSBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zICIKLSAgICAgICAgICAiPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJf
dClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwg
dGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhM
ZXZlbFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJh
bXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFy
YW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+Z2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdih0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBsZXZlbCwgcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEdldFRleExldmVsUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9B
UElFTlRSWSBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdiIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBH
TGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQ
Ukl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLAotICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRy
X3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FUyIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5h
bWUgPSAlcywgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJidWZmZXJUYXJn
ZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRl
cmJ1ZmZlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VGV4TGV2ZWxQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwg
cGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTKGNvbnRleHQsIHRhcmdldCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldFRleExldmVsUGFyYW1ldGVyaXYodGFyZ2V0UGFja2VkLCBsZXZl
bCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
cyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJaXZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRTYW1w
bGVyUGFyYW1ldGVySWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVySWl2
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1
cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdl
dFNhbXBsZXJQYXJhbWV0ZXJJaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBz
YW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICAg
KHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1
cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRU
ZXhQYXJhbWV0ZXJJaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7Cisg
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXYoY29u
dGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcklp
dih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
U2FtcGxlclBhcmFtZXRlcklpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleFBhcmFtZXRlcklpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoR2V0U2FtcGxlclBhcmFtZXRlcklpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNh
bXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBHZXRUZXhQYXJhbWV0ZXJJaXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFy
YW1ldGVySWl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4UGFyYW1l
dGVySWl2T0VTIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVW
RU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1z
ID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
CisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcklpdih0YXJnZXRQYWNrZWQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlcklpdihz
YW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKEdldFRleFBhcmFtZXRlcklpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2FtcGxl
clBhcmFtZXRlcklpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIEdldFRleFBhcmFtZXRlckl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBh
cmFtZXRlckl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVySXVp
diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0g
cG5hbWUgPSAlcywgR0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdl
dCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0VGV4
dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImds
R2V0U2FtcGxlclBhcmFtZXRlckl1aXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAx
NiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxl
ciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFt
ZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVy
UGFyYW1ldGVySXVpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
Z2V0VGV4UGFyYW1ldGVySXVpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0U2FtcGxlclBhcmFtZXRlckl1aXYoc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJh
bWV0ZXJJdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTYW1wbGVyUGFyYW1ldGVySXVpdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit2b2lk
IEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1z
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlckl1aXZPRVMiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWlu
dCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBu
YW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFNhbXBsZXJQYXJhbWV0
ZXJJdWl2T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1
LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAg
ICAgICAgICAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAg
ICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VGV4UGFyYW1ldGVySXVpdk9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlR2V0
U2FtcGxlclBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmdldFRleFBhcmFtZXRlckl1aXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2KHNhbXBsZXJQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0VGV4UGFyYW1ldGVySXVpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBHZXRUZXhQYXJhbWV0ZXJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcmZ2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRUZXhQYXJhbWV0ZXJmdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgRVZFTlQoImdsR2V0U2FtcGxlclBhcmFtZXRl
cmZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCiAgICAgICAg
ICAgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90
KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJn
ZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRl
cmZ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1ldGVyZnYoY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRTYW1wbGVyUGFyYW1l
dGVyZnYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJhbWV0ZXJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U2Ft
cGxlclBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRl
cml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlcml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0
VGV4UGFyYW1ldGVyaXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7Cisg
ICAgRVZFTlQoImdsR2V0U2FtcGxlclBhcmFtZXRlcml2IiwKKyAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKnBhcmFt
cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIs
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUp
LAorICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwg
cGFyYW1zKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJh
bWV0ZXJpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4
UGFyYW1ldGVyaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdldFNhbXBsZXJQYXJhbWV0ZXJpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleFBhcmFtZXRlcml2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRTYW1wbGVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyeHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZpeGVkICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFNlbWFwaG9yZVBhcmFtZXRl
cnVpNjR2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzZW1hcGhv
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xHZXRUZXhQYXJhbWV0ZXJ4diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQ
Ukl4UFRSCi0gICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWlu
dHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoCisgICAgICAgICJnbEdldFNlbWFwaG9yZVBhcmFt
ZXRlcnVpNjR2RVhUIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9
ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0x1aW50NjQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBU
UgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpTZW1hcGhvcmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAg
ICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
R2V0VGV4UGFyYW1ldGVyeHYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7
CisgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJ4dih0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0U2VtYXBob3JlUGFyYW1ldGVydWk2NHYo
c2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFRleFBhcmFtZXRlcnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTZW1hcGhv
cmVQYXJhbWV0ZXJ1aTY0dkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFwaG9yZVBhY2tl
ZCwgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgR2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGNoYXIgKm5hbWUpCit2b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlckluZm9Mb2dDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvTG9nKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0x1aW50IGluZGV4ID0gJXUsIEdMc2l6ZWkg
YnVmU2l6ZSA9ICVkLCBHTHNpemVpICIKLSAgICAgICAgICAiKmxlbmd0aCA9IDB4JTAxNiIgUFJJ
eFBUUiAiLCBHTHNpemVpICpzaXplID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xl
bnVtICp0eXBlID0gMHglMDE2IiBQUkl4UFRSICIsIEdMY2hhciAqbmFtZSA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGluZGV4LCBidWZTaXpl
LCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRwdHJfdClzaXplLAotICAgICAgICAgICh1aW50cHRy
X3QpdHlwZSwgKHVpbnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xHZXRTaGFkZXJJbmZvTG9n
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2hhZGVyID0gJXUsIEdMc2l6ZWkg
YnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAg
ICAiLCBHTGNoYXIgKmluZm9Mb2cgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBzaGFkZXIsIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90
KWluZm9Mb2cpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWZTaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpKTsKKyAgICAgICAgU2hhZGVyUHJv
Z3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRTaGFkZXJJbmZvTG9nKGNv
bnRleHQsIHNoYWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW1QYWNrZWQsIGluZGV4LCBidWZTaXplLCBsZW5n
dGgsIHNpemUsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNo
YWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBpbmZvTG9nKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZywgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgIGJ1
ZlNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0U2hhZGVySW5mb0xvZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNoYWRlclBhY2tlZCwgYnVm
U2l6ZSwgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFkZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKnNvdXJjZSkKK3ZvaWQgR0xf
QVBJRU5UUlkgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gc2hhZGVydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcmVjaXNpb250eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnJhbmdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnByZWNpc2lvbikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEUiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSwgR0xz
aXplaSBidWZzaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgotICAg
ICAgICAgICIsIEdMY2hhciAqc291cmNlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgc2hhZGVyLCBidWZzaXplLCAodWludHB0cl90KWxlbmd0aCwgKHVpbnRw
dHJfdClzb3VyY2UpOworICAgIEVWRU5UKCJnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNoYWRlcnR5cGUgPSAlcywgR0xlbnVtIHBy
ZWNpc2lvbnR5cGUgPSAlcywgR0xpbnQgKnJhbmdlID0gIgorICAgICAgICAgICIweCUwMTYiIFBS
SXhQVFIgIiwgR0xpbnQgKnByZWNpc2lvbiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTaGFkZXJUeXBlLCBz
aGFkZXJ0eXBlKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJlY2lz
aW9uVHlwZSwgcHJlY2lzaW9udHlwZSksICh1aW50cHRyX3QpcmFuZ2UsCisgICAgICAgICAgKHVp
bnRwdHJfdClwcmVjaXNpb24pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHNoYWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNoYWRlclBhY2tlZCwg
YnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGNvbnRleHQs
IHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UsIHByZWNpc2lvbikpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Uoc2hhZGVyUGFja2VkLCBidWZzaXplLCBsZW5ndGgsIHNv
dXJjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hh
ZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1ZnNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoLCBzb3VyY2UpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNoYWRlcnR5cGUsIHByZWNpc2lv
bnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UsIHByZWNpc2lvbik7CiAgICAgfQog
fQogCi1HTHVpbnQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybUJsb2NrSW5kZXhDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUp
Cit2b2lkIEdMX0FQSUVOVFJZIEdldFNoYWRlclNvdXJjZUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMY2hhciAqc291cmNlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFVuaWZvcm1C
bG9ja0luZGV4IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1
LCBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCAodWludHB0cl90KXVuaWZvcm1CbG9ja05h
bWUpOworICAgIEVWRU5UKCJnbEdldFNoYWRlclNvdXJjZSIsCisgICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IHNoYWRlciA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAq
bGVuZ3RoID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xjaGFyICpzb3VyY2UgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzaGFkZXIsIGJ1ZlNp
emUsICh1aW50cHRyX3QpbGVuZ3RoLCAodWludHB0cl90KXNvdXJjZSk7CiAKLSAgICBHTHVpbnQg
cmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZv
cm1CbG9ja0luZGV4KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja05hbWUpKTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRTaGFkZXJTb3VyY2UoY29udGV4dCwgc2hhZGVyUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHNv
dXJjZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbVBhY2tl
ZCwgdW5pZm9ybUJsb2NrTmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpHZXRVbmlmb3JtQmxvY2tJbmRleCwgR0x1aW50PigpOworICAgICAgICAgICAgY29udGV4
dC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlclBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBzb3VyY2Up
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybUJsb2NrSW5kZXgs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tOYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludD4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRTaGFkZXJTb3VyY2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGJ1
ZlNpemUsIGxlbmd0aCwgc291cmNlKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1JbmRpY2VzQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHVuaWZvcm1Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpjb25zdCAqdW5pZm9ybU5hbWVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
KnVuaWZvcm1JbmRpY2VzKQordm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJpdkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VW5pZm9ybUluZGljZXMiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMc2l6ZWkgdW5p
Zm9ybUNvdW50ID0gJWQsIGNvbnN0IEdMY2hhciAiCi0gICAgICAgICAgIipjb25zdCp1bmlmb3Jt
TmFtZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0x1aW50ICp1bmlmb3JtSW5kaWNlcyA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIHVuaWZvcm1D
b3VudCwgKHVpbnRwdHJfdCl1bmlmb3JtTmFtZXMsICh1aW50cHRyX3QpdW5pZm9ybUluZGljZXMp
OworICAgIEVWRU5UKCJnbEdldFNoYWRlcml2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgc2hhZGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgc2hhZGVyLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6U2hhZGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAg
ICAgICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRVbmlmb3JtSW5kaWNlcyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQ291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmlmb3JtTmFtZXMsIHVuaWZvcm1JbmRpY2VzKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBzaGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4oc2hhZGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0U2hhZGVyaXYoY29udGV4dCwgc2hhZGVyUGFja2VkLCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50
LCB1bmlmb3JtTmFtZXMsIHVuaWZvcm1JbmRpY2VzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdl
dFNoYWRlcml2KHNoYWRlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtSW5kaWNlcywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIHVuaWZvcm1Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB1bmlm
b3JtTmFtZXMsIHVuaWZvcm1JbmRpY2VzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTaGFk
ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNoYWRlclBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgfQogfQogCi1HTGludCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtTG9jYXRpb25Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCitjb25zdCBHTHVi
eXRlICpHTF9BUElFTlRSWSBHZXRTdHJpbmdDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIG5hbWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VW5pZm9ybUxvY2F0aW9uIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBjb25zdCBHTGNoYXIgKm5h
bWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBwcm9ncmFt
LCAodWludHB0cl90KW5hbWUpOworICAgIEVWRU5UKCJnbEdldFN0cmluZyIsICJjb250ZXh0ID0g
JWQsIEdMZW51bSBuYW1lID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlN0cmluZ05hbWUsIG5hbWUpKTsKIAotICAgIEdMaW50IHJldHVy
blZhbHVlOworICAgIGNvbnN0IEdMdWJ5dGUgKnJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRVbmlmb3JtTG9jYXRpb24oY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbmFtZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwgVmFsaWRhdGVHZXRTdHJpbmcoY29udGV4dCwgbmFtZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+
Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1QYWNrZWQsIG5hbWUpOworICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBjb250ZXh0LT5nZXRTdHJpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRVbmlmb3JtTG9jYXRpb24sIEdMaW50PigpOworICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0
U3RyaW5nLCBjb25zdCBHTHVieXRlICo+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShHZXRVbmlmb3JtTG9jYXRpb24sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBuYW1lLCByZXR1cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U3RyaW5n
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbmFtZSwgcmV0dXJuVmFsdWUpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpHZXRVbmlmb3JtTG9jYXRpb24sIEdMaW50PigpOworICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRTdHJpbmcsIGNvbnN0
IEdMdWJ5dGUgKj4oKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lk
IEdMX0FQSUVOVFJZIEdldFVuaWZvcm1mdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBh
cmFtcykKK2NvbnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIEdldFN0cmluZ2lDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xHZXRVbmlmb3JtZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwg
bG9jYXRpb24sICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRTdHJpbmdpIiwg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIG5hbWUgPSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQo
Y29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0cmluZ05h
bWUsIG5hbWUpLCBpbmRleCk7CiAKKyAgICBjb25zdCBHTHVieXRlICpyZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWZ2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0U3RyaW5naShjb250ZXh0LCBuYW1lLCBpbmRleCkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldFVuaWZvcm1mdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0U3RyaW5naShuYW1lLCBpbmRleCk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRTdHJpbmdpLCBjb25zdCBHTHVi
eXRlICo+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZnYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRTdHJpbmdpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bmFtZSwgaW5kZXgsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0U3Ry
aW5naSwgY29uc3QgR0x1Ynl0ZSAqPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWl2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0U3luY2l2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THN5bmMgc3luYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2
YWx1ZXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VW5pZm9ybWl2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCAq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5U
KCJnbEdldFN5bmNpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzeW5jIHN5bmMgPSAw
eCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGVudW0gcG5hbWUgPSAlcywgR0xzaXplaSBi
dWZTaXplID0gJWQsIEdMc2l6ZWkgKmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAg
ICIsIEdMaW50ICp2YWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCAodWludHB0cl90KXN5bmMsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTeW5j
UGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgIGJ1ZlNpemUsICh1aW50cHRyX3QpbGVu
Z3RoLCAodWludHB0cl90KXZhbHVlcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlR2V0VW5pZm9ybWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBwYXJh
bXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlR2V0U3luY2l2KGNvbnRleHQsIHN5bmMsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVl
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmdldFN5bmNpdihzeW5jLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCB2YWx1ZXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybWl2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHBhcmFtcyk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0U3luY2l2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
c3luYywgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsdWVzKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgR2V0VW5pZm9ybXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq
cGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRUZXhFbnZmdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRVbmlmb3JtdWl2IiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THVpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgIEVWRU5UKCJnbEdldFRleEVudmZ2
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKICAgICAgICAgICAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCAodWludHB0cl90
KXBhcmFtcyk7CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBh
cmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVp
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgcGFyYW1zKSk7CisgICAgICAgIFRl
eHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0
ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQ
YXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0VGV4RW52ZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBh
Y2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybXVpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFRleEVudmZ2KHRhcmdldFBhY2tlZCwg
cG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRVbmlmb3JtdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4RW52ZnYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRVbnNpZ25lZEJ5dGV2RVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0x1Ynl0ZSAqZGF0YSkKK3ZvaWQgR0xfQVBJ
RU5UUlkgR2V0VGV4RW52aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdldFVuc2lnbmVkQnl0ZXZFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTHVieXRlICpkYXRhID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQo
Y29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFBOYW1l
LCBwbmFtZSksICh1aW50cHRyX3QpZGF0YSk7CisgICAgRVZFTlQoImdsR2V0VGV4RW52aXYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwg
dGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVu
dlBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVH
ZXRVbnNpZ25lZEJ5dGV2RVhUKGNvbnRleHQsIHBuYW1lLCBkYXRhKSk7CisgICAgICAgIFRleHR1
cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1cmVFbnZQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJh
bWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlR2V0VGV4RW52aXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tl
ZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+Z2V0VW5zaWduZWRCeXRldihwbmFtZSwgZGF0YSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRUZXhFbnZpdih0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5zaWduZWRCeXRldkVYVCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBkYXRhKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShHZXRUZXhFbnZpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFVuc2lnbmVk
Qnl0ZWlfdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWJ5dGUgKmRhdGEpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleEVudnh2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmaXhlZCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFVuc2lnbmVkQnl0ZWlfdkVYVCIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5k
ZXggPSAldSwgR0x1Ynl0ZSAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRh
cmdldCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOworICAgIEVWRU5UKCJnbEdldFRleEVudnh2
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAi
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlRW52VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFVuc2lnbmVkQnl0ZWlfdkVYVChjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBkYXRhKSk7
CisgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIFRleHR1
cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4RW52eHYoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5zaWduZWRCeXRlaV92KHRhcmdldCwg
aW5kZXgsIGRhdGEpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VGV4RW52eHYodGFyZ2V0UGFj
a2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldFVuc2lnbmVkQnl0ZWlfdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwg
aW5kZXgsIGRhdGEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleEVudnh2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRU
ZXhHZW5mdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbEdldFZlcnRleEF0dHJpYklpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpWZXJ0ZXhBdHRyaWJFbnVtLCBwbmFtZSksCi0gICAgICAgICAg
KHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFRleEdlbmZ2T0VTIiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMs
IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29y
ZCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJh
bWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliSWl2
KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRUZXhHZW5mdk9FUyhjb250ZXh0
LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYklpdihpbmRleCwgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhHZW5mdihjb29yZCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRWZXJ0ZXhB
dHRyaWJJaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcyk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4R2VuZnZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBjb29yZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdl
dFZlcnRleEF0dHJpYkl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBHZXRUZXhHZW5pdk9FU0NvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRWZXJ0ZXhBdHRy
aWJJdWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xl
bnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpW
ZXJ0ZXhBdHRyaWJFbnVtLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwor
ICAgIEVWRU5UKCJnbEdldFRleEdlbml2T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUw
MTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAorICAgICAgICAgIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRy
X3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXYoY29udGV4dCwgaW5kZXgsIHBuYW1l
LCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUdldFRleEdlbml2T0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1z
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+Z2V0VmVydGV4QXR0cmliSXVpdihpbmRleCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZXRUZXhHZW5pdihjb29yZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRWZXJ0ZXhBdHRyaWJJdWl2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldFRleEdlbml2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJh
bXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
KnBvaW50ZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRleEdlbnh2T0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBjb29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0VmVydGV4QXR0cmli
UG9pbnRlcnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBH
TGVudW0gcG5hbWUgPSAlcywgdm9pZCAqKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0g
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkRlZmF1bHRHcm91cCwgcG5hbWUpLAotICAgICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7Cisg
ICAgRVZFTlQoImdsR2V0VGV4R2VueHZPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0
cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihjb250ZXh0LCBpbmRleCwg
cG5hbWUsIHBvaW50ZXIpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUdldFRleEdlbnh2T0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwg
cGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBuYW1lLCBwb2ludGVy
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFRleEdlbnh2KGNvb3JkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwb2ludGVyKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhHZW54dk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNv
b3JkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0VmVy
dGV4QXR0cmliZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xHZXRWZXJ0ZXhBdHRyaWJmdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0ICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRl
eCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWlu
dHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdiIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9
ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqcGFyYW1zICIKKyAgICAgICAgICAiPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwg
KHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0
VmVydGV4QXR0cmliZnYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1l
LCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHBhcmFtcyk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5nZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KHRhcmdldFBhY2tlZCwg
bGV2ZWwsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0VmVydGV4QXR0cmliZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBh
cmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldFZl
cnRleEF0dHJpYml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1z
KQordm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZlbFBhcmFtZXRlcml2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xHZXRWZXJ0ZXhBdHRyaWJpdiIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCAqcGFyYW1z
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJf
dClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFRleExldmVsUGFyYW1ldGVyaXYiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwg
R0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAiCisgICAgICAgICAgIjB4JTAxNiIg
UFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBsZXZlbCwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0
cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJpdihjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleExl
dmVsUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsIHBhcmFt
cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmdldFRleExldmVsUGFyYW1ldGVyaXYodGFyZ2V0UGFja2VkLCBsZXZlbCwg
cG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRWZXJ0
ZXhBdHRyaWJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhMZXZlbFBhcmFtZXRlcml2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1m
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEdMX0FQ
SUVOVFJZIEdldFRleFBhcmFtZXRlcklpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsR2V0blVuaWZvcm1mdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMZmxvYXQgIgotICAgICAgICAgICIqcGFyYW1z
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xHZXRU
ZXhQYXJhbWV0ZXJJaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFs
aWRhdGVHZXRuVW5pZm9ybWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZT
aXplLCBwYXJhbXMpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBh
cmFtZXRlcklpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRu
VW5pZm9ybWZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpOworICAg
ICAgICAgICAgY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVySWl2KHRhcmdldFBhY2tlZCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShH
ZXRUZXhQYXJhbWV0ZXJJaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBu
YW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybWZ2
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVySWl2T0VTQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xHZXRuVW5pZm9ybWZ2RVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwg
R0xmbG9hdCAiCi0gICAgICAgICAgIipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgKHVpbnRwdHJf
dClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlcklpdk9FUyIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywg
R0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpHZXRUZXh0dXJlUGFyYW1ldGVy
LCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcykpOworICAgICAg
ICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2T0VTKGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnYocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXJJaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnZFWFQsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleFBhcmFtZXRlcklp
dk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtaXZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4UGFy
YW1ldGVySXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAq
cGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtaXYiLAotICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgYnVmU2l6ZSA9ICVkLCBHTGludCAiCi0gICAgICAgICAgIipwYXJhbXMgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVm
U2l6ZSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbEdldFRleFBhcmFtZXRlckl1
aXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVt
IHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkdldFRl
eHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVu
aWZvcm1pdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1z
KSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJJdWl2
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtaXYo
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJJdWl2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybWl2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRUZXhQYXJh
bWV0ZXJJdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1pdkVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQordm9pZCBH
TF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
R2V0blVuaWZvcm1pdkVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dy
YW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQsIEdMaW50
ICIKLSAgICAgICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBidWZTaXplLCAodWludHB0cl90KXBhcmFt
cyk7CisgICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVySXVpdk9FUyIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0x1aW50
ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5h
bWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXplLCBwYXJhbXMpKTsKKyAgICAgICAgVGV4
dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdihwcm9ncmFtUGFja2Vk
LCBsb2NhdGlvbiwgYnVmU2l6ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFRl
eFBhcmFtZXRlckl1aXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtaXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleFBhcmFtZXRlckl1aXZP
RVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5pZm9ybXVpdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEdldFRl
eFBhcmFtZXRlcmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFy
YW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbEdldG5Vbmlmb3JtdWl2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVp
IGJ1ZlNpemUgPSAlZCwgR0x1aW50ICIKLSAgICAgICAgICAiKnBhcmFtcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBidWZT
aXplLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVyZnYi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBu
YW1lID0gJXMsIEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2Vk
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlk
YXRlR2V0blVuaWZvcm11aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNp
emUsIHBhcmFtcykpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFy
YW1ldGVyZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVu
aWZvcm11aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm11aXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdl
dFRleFBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgSGludENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKK3ZvaWQgR0xf
QVBJRU5UUlkgR2V0VGV4UGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEhpbnQiLCAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBtb2RlID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkhpbnRUYXJnZXQsIHRhcmdldCksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkhpbnRNb2RlLCBtb2RlKSk7Cisg
ICAgRVZFTlQoImdsR2V0VGV4UGFyYW1ldGVyaXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMaW50ICpwYXJhbXMgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0
cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUhpbnQoY29udGV4dCwgdGFyZ2V0LCBtb2RlKSk7CisgICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oaW50KHRhcmdldCwgbW9kZSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSGludCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgbW9kZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VGV4UGFyYW1l
dGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBJbXBvcnRNZW1vcnlGZEVYVENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCBzaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpCit2b2lkIEdMX0FQ
SUVOVFJZIEdldFRleFBhcmFtZXRlcnh2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmaXhlZCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEltcG9ydE1lbW9yeUZkRVhUIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IHNpemUg
PSAlbGx1LCBHTGVudW0gaGFuZGxlVHlwZSA9ICVzLCBHTGludCAiCi0gICAgICAgICAgImZkID0g
JWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KHNpemUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5cGUpLCBmZCk7CisgICAgRVZFTlQoImdsR2V0
VGV4UGFyYW1ldGVyeHYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQg
PSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBU
UgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJf
dClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElE
IG1lbW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4o
bWVtb3J5KTsKLSAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRsZVR5cGUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlSW1wb3J0TWVt
b3J5RmRFWFQoY29udGV4dCwgbWVtb3J5UGFja2VkLCBzaXplLCBoYW5kbGVUeXBlUGFja2VkLCBm
ZCkpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVyeHYo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aW1wb3J0TWVtb3J5RmQo
bWVtb3J5UGFja2VkLCBzaXplLCBoYW5kbGVUeXBlUGFja2VkLCBmZCk7CisgICAgICAgICAgICBj
b250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJ4dih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0TWVtb3J5RmRFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBtZW1vcnlQYWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgZmQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFRleFBh
cmFtZXRlcnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0U2VtYXBob3JlRmRFWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZk
KQordm9pZCBHTF9BUElFTlRSWSBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqbmFtZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJbXBvcnRTZW1hcGhvcmVGZEVY
VCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTGVu
dW0gaGFuZGxlVHlwZSA9ICVzLCBHTGludCBmZCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkV4dGVybmFsSGFuZGxl
VHlwZSwgaGFuZGxlVHlwZSksIGZkKTsKKyAgICBFVkVOVCgiZ2xHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmciLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUs
IEdMdWludCBpbmRleCA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xzaXplaSAiCisgICAg
ICAgICAgIipsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSAqc2l6ZSA9IDB4JTAx
NiIgUFJJeFBUUgorICAgICAgICAgICIsIEdMZW51bSAqdHlwZSA9IDB4JTAxNiIgUFJJeFBUUiAi
LCBHTGNoYXIgKm5hbWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBwcm9ncmFtLCBpbmRleCwgYnVmU2l6ZSwgKHVpbnRwdHJfdClsZW5ndGgsICh1aW50cHRy
X3Qpc2l6ZSwKKyAgICAgICAgICAodWludHB0cl90KXR5cGUsICh1aW50cHRyX3QpbmFtZSk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2Vk
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOwotICAg
ICAgICBIYW5kbGVUeXBlIGhhbmRsZVR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8SGFuZGxlVHlwZT4oaGFuZGxlVHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVGZEVYVChj
b250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKSk7CisgICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgs
IHNpemUsIHR5cGUsIG5hbWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5pbXBvcnRTZW1hcGhvcmVGZChzZW1hcGhvcmVQYWNrZWQs
IGhhbmRsZVR5cGVQYWNrZWQsIGZkKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtUGFja2VkLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCBz
aXplLCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0U2VtYXBo
b3JlRmRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5
cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgZmQpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0
aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEluc2Vy
dEV2ZW50TWFya2VyRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm1hcmtlcikKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJj
ZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpzb3Vy
Y2UpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVi
dWdfbWFya2VyIGVudHJ5IHBvaW50cy4KLSAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhl
IGRlYnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KLSAgICAvLyBFVkVOVCgiZ2xJ
bnNlcnRFdmVudE1hcmtlckVYVCIsICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbGVuZ3RoID0gJWQs
IGNvbnN0IEdMY2hhciAqbWFya2VyID0KLSAgICAvLyAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChj
b250ZXh0KSwgbGVuZ3RoLCAodWludHB0cl90KW1hcmtlcik7CisgICAgRVZFTlQoImdsR2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgc2hhZGVyID0gJXUsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAw
eCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGNoYXIgKnNvdXJjZSA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNoYWRlciwgYnVmc2l6ZSwgKHVpbnRw
dHJfdClsZW5ndGgsICh1aW50cHRyX3Qpc291cmNlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
PihzaGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29udGV4dCwgbGVuZ3RoLCBtYXJrZXIp
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHNoYWRlclBhY2tlZCwgYnVmc2l6ZSwgbGVuZ3Ro
LCBzb3VyY2UpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5pbnNlcnRFdmVudE1hcmtlcihsZW5ndGgsIG1hcmtlcik7CisgICAgICAg
ICAgICBjb250ZXh0LT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKHNoYWRlclBhY2tlZCwgYnVm
c2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
SW5zZXJ0RXZlbnRNYXJrZXJFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsZW5ndGgsIG1hcmtl
cik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hhZGVyUGFja2VkLCBidWZzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCwgc291cmNlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgSW52YWxpZGF0ZUZyYW1lYnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCitHTHVpbnQg
R0xfQVBJRU5UUlkgR2V0VW5pZm9ybUJsb2NrSW5kZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsSW52YWxpZGF0ZUZyYW1lYnVmZmVyIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMgPSAlZCwgY29uc3QgR0xl
bnVtICIKLSAgICAgICAgICAiKmF0dGFjaG1lbnRzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkZyYW1lYnVm
ZmVyVGFyZ2V0LCB0YXJnZXQpLCBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAodWludHB0cl90
KWF0dGFjaG1lbnRzKTsKKyAgICBFVkVOVCgiZ2xHZXRVbmlmb3JtQmxvY2tJbmRleCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgY29uc3QgR0xjaGFyICp1
bmlmb3JtQmxvY2tOYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgcHJvZ3JhbSwgKHVpbnRwdHJfdCl1bmlmb3JtQmxvY2tOYW1lKTsKIAorICAgIEdMdWlu
dCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUludmFsaWRhdGVGcmFt
ZWJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cykpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtQmxvY2tJbmRl
eChjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tOYW1lKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aW52YWxpZGF0
ZUZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKTsKKyAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3Jh
bVBhY2tlZCwgdW5pZm9ybUJsb2NrTmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShJbnZhbGlkYXRlRnJhbWVidWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQs
IG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpHZXRVbmlmb3JtQmxvY2tJbmRleCwgR0x1aW50Pigp
OworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybUJsb2NrSW5kZXgs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludD4oKTsKICAgICB9CisgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
ckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0
YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1JbmRpY2VzQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHVuaWZvcm1Db3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpjb25z
dCAqdW5pZm9ybU5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgKnVuaWZvcm1JbmRpY2VzKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlciIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdl
dCA9ICVzLCBHTHNpemVpIG51bUF0dGFjaG1lbnRzID0gJWQsIGNvbnN0IEdMZW51bSAiCi0gICAg
ICAgICAgIiphdHRhY2htZW50cyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMaW50
IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgKHVp
bnRwdHJfdClhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgRVZFTlQoImds
R2V0VW5pZm9ybUluZGljZXMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIEdMc2l6ZWkgdW5pZm9ybUNvdW50ID0gJWQsIGNvbnN0IEdMY2hhciAiCisgICAg
ICAgICAgIipjb25zdCp1bmlmb3JtTmFtZXMgPSAweCUwMTYiIFBSSXhQVFIgIiwgR0x1aW50ICp1
bmlmb3JtSW5kaWNlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIHByb2dyYW0sIHVuaWZvcm1Db3VudCwgKHVpbnRwdHJfdCl1bmlmb3JtTmFtZXMsICh1aW50
cHRyX3QpdW5pZm9ybUluZGljZXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKGNvbnRl
eHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMsIHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5p
Zm9ybUluZGljZXMoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5pZm9ybUNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybU5h
bWVzLCB1bmlmb3JtSW5kaWNlcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQs
IG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW1QYWNrZWQsIHVuaWZvcm1Db3VudCwgdW5p
Zm9ybU5hbWVzLCB1bmlmb3JtSW5kaWNlcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXQsIG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtSW5k
aWNlcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1Db3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtTmFtZXMsIHVuaWZvcm1JbmRpY2VzKTsKICAg
ICB9CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0J1ZmZlckNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgYnVmZmVyKQorR0xpbnQgR0xfQVBJRU5UUlkgR2V0VW5pZm9y
bUxvY2F0aW9uQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpu
YW1lKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbElzQnVmZmVyIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGJ1
ZmZlciA9ICV1IiwgQ0lEKGNvbnRleHQpLCBidWZmZXIpOworICAgIEVWRU5UKCJnbEdldFVuaWZv
cm1Mb2NhdGlvbiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgY29uc3QgR0xjaGFyICpuYW1lID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCks
CisgICAgICAgICAgcHJvZ3JhbSwgKHVpbnRwdHJfdCluYW1lKTsKIAotICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKKyAgICBHTGludCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSXNCdWZmZXIoY29udGV4dCwgYnVmZmVyUGFja2VkKSk7CisgICAgICAgIFNoYWRlclBy
b2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZXRVbmlmb3JtTG9jYXRpb24oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNCdWZmZXIoYnVmZmVyUGFja2Vk
KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW1QYWNrZWQsIG5hbWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNCdWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdldFVuaWZvcm1Mb2NhdGlvbiwgR0xp
bnQ+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc0J1ZmZlciwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGJ1ZmZlclBhY2tlZCwgcmV0dXJuVmFsdWUpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKEdldFVuaWZvcm1Mb2NhdGlvbiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIG5hbWUsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNC
dWZmZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6R2V0VW5pZm9ybUxvY2F0aW9uLCBHTGludD4oKTsKICAgICB9
CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNF
bmFibGVkQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjYXApCit2b2lkIEdM
X0FQSUVOVFJZIEdldFVuaWZvcm1mdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFt
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xJc0VuYWJsZWQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY2Fw
ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkVuYWJsZUNhcCwgY2FwKSk7CisgICAgRVZFTlQoImdsR2V0VW5pZm9ybWZ2IiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCAodWludHB0cl90KXBhcmFt
cyk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0VuYWJsZWQoY29udGV4dCwgY2Fw
KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNFbmFi
bGVkKGNhcCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJs
ZWQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1mdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKElzRW5hYmxlZCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNhcCwgcmV0dXJu
VmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAgIH0K
LSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5W
YWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWQsIEdMYm9vbGVhbj4oKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkaUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgp
Cit2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1pdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNFbmFibGVkaSIsICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5k
ZXgpOworICAgIEVWRU5UKCJnbEdldFVuaWZvcm1pdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgKnBhcmFt
cyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVh
biByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0VuYWJsZWRpKGNvbnRleHQsIHRhcmdldCwg
aW5kZXgpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFVuaWZvcm1pdihjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5p
c0VuYWJsZWRpKHRhcmdldCwgaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNFbmFibGVkaSwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+
Z2V0VW5pZm9ybWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNFbmFibGVkaSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgaW5kZXgsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2lu
dDo6SXNFbmFibGVkaSwgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVu
aWZvcm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9v
bGVhbiBHTF9BUElFTlRSWSBJc0ZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGZlbmNlKQordm9pZCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtdWl2Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNGZW5jZU5WIiwg
ImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUiLCBDSUQoY29udGV4dCksIGZlbmNlKTsK
KyAgICBFVkVOVCgiZ2xHZXRVbmlmb3JtdWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgKnBhcmFtcyA9
IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
cHJvZ3JhbSwgbG9jYXRpb24sICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgRmVuY2VOVklEIGZlbmNl
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2Up
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNGZW5jZU5WKGNvbnRleHQs
IGZlbmNlUGFja2VkKSk7Ci0gICAgICAgIGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc0ZlbmNlTlYoZmVuY2VQYWNrZWQpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVp
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgcGFyYW1zKSk7CisgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNGZW5jZU5WLCBHTGJvb2xlYW4+
KCk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
SXNGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIHJldHVyblZhbHVl
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNGZW5jZU5WLCBHTGJvb2xlYW4+KCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBwYXJhbXMpOwogICAgIH0KLSAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZyYW1lYnVmZmVyQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmcmFtZWJ1ZmZlcikKK3ZvaWQgR0xf
QVBJRU5UUlkgR2V0VW5zaWduZWRCeXRldkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gcG5hbWUsIEdMdWJ5dGUgKmRhdGEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNGcmFtZWJ1
ZmZlciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmcmFtZWJ1ZmZlciA9ICV1IiwgQ0lEKGNvbnRl
eHQpLCBmcmFtZWJ1ZmZlcik7CisgICAgRVZFTlQoImdsR2V0VW5zaWduZWRCeXRldkVYVCIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWJ5dGUgKmRhdGEg
PSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6R2V0UE5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClkYXRhKTsKIAot
ICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
RnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPEZy
YW1lYnVmZmVySUQ+KGZyYW1lYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJ
c0ZyYW1lYnVmZmVyKGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFVuc2lnbmVkQnl0ZXZFWFQo
Y29udGV4dCwgcG5hbWUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRnJhbWVidWZmZXIoZnJh
bWVidWZmZXJQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
SXNGcmFtZWJ1ZmZlciwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5z
aWduZWRCeXRldihwbmFtZSwgZGF0YSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShJc0ZyYW1lYnVmZmVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQs
IHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNGcmFtZWJ1ZmZlciwgR0xi
b29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuc2lnbmVkQnl0ZXZFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgZGF0YSk7CiAgICAgfQotICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXJPRVNDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZyYW1lYnVmZmVyKQordm9pZCBHTF9B
UElFTlRSWSBHZXRVbnNpZ25lZEJ5dGVpX3ZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVieXRlICpkYXRhKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzRnJhbWVi
dWZmZXJPRVMiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZnJhbWVidWZmZXIgPSAldSIsIENJRChj
b250ZXh0KSwgZnJhbWVidWZmZXIpOworICAgIEVWRU5UKCJnbEdldFVuc2lnbmVkQnl0ZWlfdkVY
VCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQg
aW5kZXggPSAldSwgR0x1Ynl0ZSAqZGF0YSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAs
IHRhcmdldCksIGluZGV4LCAodWludHB0cl90KWRhdGEpOwogCi0gICAgR0xib29sZWFuIHJldHVy
blZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBGcmFtZWJ1ZmZlcklEIGZyYW1l
YnVmZmVyUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVi
dWZmZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUlzRnJhbWVidWZmZXJPRVMoY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5zaWduZWRC
eXRlaV92RVhUKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQt
PmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXJQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJu
VmFsdWU8RW50cnlQb2ludDo6SXNGcmFtZWJ1ZmZlck9FUywgR0xib29sZWFuPigpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0VW5zaWduZWRCeXRlaV92KHRhcmdldCwgaW5kZXgsIGRhdGEpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNGcmFtZWJ1ZmZlck9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGZyYW1lYnVmZmVyUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZh
bHVlPEVudHJ5UG9pbnQ6OklzRnJhbWVidWZmZXJPRVMsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRVbnNpZ25lZEJ5dGVpX3ZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXQsIGluZGV4LCBkYXRhKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNNZW1vcnlPYmplY3RFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1lbW9yeU9iamVjdCkKK3ZvaWQgR0xfQVBJRU5UUlkg
R2V0VmVydGV4QXR0cmliSWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzTWVtb3J5T2JqZWN0RVhUIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IG1lbW9yeU9iamVjdCA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAg
IG1lbW9yeU9iamVjdCk7CisgICAgRVZFTlQoImdsR2V0VmVydGV4QXR0cmliSWl2IiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMs
IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBpbmRleCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlZlcnRleEF0dHJpYkVudW0s
IHBuYW1lKSwKKyAgICAgICAgICAodWludHB0cl90KXBhcmFtcyk7CiAKLSAgICBHTGJvb2xlYW4g
cmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIE1lbW9yeU9iamVjdElE
IG1lbW9yeU9iamVjdFBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxNZW1vcnlPYmplY3RJRD4o
bWVtb3J5T2JqZWN0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVJc01lbW9yeU9iamVjdEVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQpKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
VmVydGV4QXR0cmliSWl2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBj
b250ZXh0LT5pc01lbW9yeU9iamVjdChtZW1vcnlPYmplY3RQYWNrZWQpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNNZW1vcnlPYmplY3RFWFQsIEdMYm9vbGVhbj4o
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYklpdihpbmRleCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc01lbW9yeU9iamVj
dEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeU9iamVjdFBhY2tlZCwgcmV0dXJuVmFs
dWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc01lbW9yeU9iamVjdEVYVCwgR0xib29sZWFu
PigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFZlcnRleEF0dHJpYklpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9Ci0gICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNQcm9ncmFtQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtKQordm9pZCBHTF9BUElFTlRSWSBH
ZXRWZXJ0ZXhBdHRyaWJJdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1Byb2dyYW0iLCAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwcm9ncmFtKTsKKyAgICBFVkVO
VCgiZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgaW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMdWludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpWZXJ0ZXhBdHRyaWJFbnVtLCBwbmFtZSksCisgICAgICAgICAgKHVp
bnRwdHJfdClwYXJhbXMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2Vk
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZUdldFZlcnRleEF0dHJpYkl1aXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IGNvbnRleHQtPmlzUHJvZ3JhbShwcm9ncmFtUGFja2VkKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUHJvZ3JhbSwgR0xib29sZWFuPigpOworICAgICAgICAg
ICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliSXVpdihpbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1Byb2dyYW0sIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzUHJvZ3JhbSwgR0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFZl
cnRleEF0dHJpYkl1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzUHJvZ3JhbVBpcGVsaW5lQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBwaXBlbGluZSkKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliUG9pbnRlcnZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipw
b2ludGVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzUHJvZ3JhbVBpcGVsaW5lIiwgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHBpcGVsaW5lID0gJXUiLCBDSUQoY29udGV4dCksIHBpcGVsaW5lKTsKKyAgICBF
VkVOVCgiZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCB2b2lkICoqcG9pbnRlciA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksCisgICAgICAgICAg
KHVpbnRwdHJfdClwb2ludGVyKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5lSUQgcGlwZWxpbmVQYWNrZWQg
ICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlEPihwaXBlbGluZSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNQcm9ncmFtUGlw
ZWxpbmUoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoY29u
dGV4dCwgaW5kZXgsIHBuYW1lLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1Byb2dyYW1Q
aXBlbGluZShwaXBlbGluZVBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRy
eVBvaW50OjpJc1Byb2dyYW1QaXBlbGluZSwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29u
dGV4dC0+Z2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBuYW1lLCBwb2ludGVyKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzUHJvZ3JhbVBpcGVsaW5lLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAg
ZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6SXNQcm9ncmFtUGlwZWxpbmUsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGluZGV4LCBwbmFtZSwgcG9pbnRlcik7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUXVlcnlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGlkKQordm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJmdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbElzUXVlcnkiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaWQgPSAldSIsIENJRChjb250
ZXh0KSwgaWQpOworICAgIEVWRU5UKCJnbEdldFZlcnRleEF0dHJpYmZ2IiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxv
YXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IGluZGV4LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSks
ICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUlzUXVlcnkoY29udGV4dCwgaWRQYWNrZWQpKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFZlcnRleEF0
dHJpYmZ2KGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5p
c1F1ZXJ5KGlkUGFja2VkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
OklzUXVlcnksIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0
dHJpYmZ2KGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKElzUXVlcnksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcmV0dXJuVmFs
dWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1F1ZXJ5LCBHTGJvb2xlYW4+KCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0VmVydGV4QXR0cmliZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBpbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUXVlcnlFWFRDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IGlkKQordm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJp
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xJc1F1ZXJ5RVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUiLCBDSUQo
Y29udGV4dCksIGlkKTsKKyAgICBFVkVOVCgiZ2xHZXRWZXJ0ZXhBdHRyaWJpdiIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBH
TGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgaW5kZXgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlSXNRdWVyeUVYVChjb250ZXh0LCBpZFBhY2tlZCkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0VmVy
dGV4QXR0cmliaXYoY29udGV4dCwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmlzUXVlcnkoaWRQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNRdWVyeUVYVCwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoSXNRdWVyeUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2Vk
LCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUXVlcnlFWFQsIEdMYm9v
bGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRWZXJ0ZXhBdHRyaWJpdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9Ci0gICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNSZW5kZXJidWZmZXJD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKK3ZvaWQg
R0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNSZW5kZXJidWZmZXIiLCAiY29udGV4dCA9
ICVkLCBHTHVpbnQgcmVuZGVyYnVmZmVyID0gJXUiLCBDSUQoY29udGV4dCksIHJlbmRlcmJ1ZmZl
cik7CisgICAgRVZFTlQoImdsR2V0blVuaWZvcm1mdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZT
aXplID0gJWQsIEdMZmxvYXQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUs
ICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2Vk
ICAgICAgICAgICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1Jl
bmRlcmJ1ZmZlcihjb250ZXh0LCByZW5kZXJidWZmZXJQYWNrZWQpKTsKKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5p
Zm9ybWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlclBhY2tl
ZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1JlbmRlcmJ1ZmZl
ciwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKElzUmVuZGVyYnVmZmVyLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcmVuZGVyYnVmZmVyUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzUmVuZGVyYnVmZmVyLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
R2V0blVuaWZvcm1mdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAg
fQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElz
UmVuZGVyYnVmZmVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCByZW5k
ZXJidWZmZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtZnZFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbElzUmVuZGVyYnVmZmVyT0VTIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHJlbmRlcmJ1ZmZl
ciA9ICV1IiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHJlbmRlcmJ1ZmZlcik7CisgICAgRVZF
TlQoImdsR2V0blVuaWZvcm1mdkVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBidWZTaXplID0gJWQs
IEdMZmxvYXQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsICh1aW50cHRy
X3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgUmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkICAgICAgICAg
ICAgID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihyZW5kZXJidWZmZXIpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1JlbmRlcmJ1ZmZl
ck9FUyhjb250ZXh0LCByZW5kZXJidWZmZXJQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2
RVhUKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlclBhY2tlZCk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1JlbmRlcmJ1ZmZlck9F
UywgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1mdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKElzUmVuZGVyYnVmZmVyT0VTLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6OklzUmVuZGVyYnVmZmVyT0VTLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoR2V0blVuaWZvcm1mdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIHBhcmFt
cyk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQ
SUVOVFJZIElzU2VtYXBob3JlRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBzZW1hcGhvcmUpCit2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtaXZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJc1NlbWFwaG9y
ZUVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSIsIENJRChjb250ZXh0
KSwgc2VtYXBob3JlKTsKKyAgICBFVkVOVCgiZ2xHZXRuVW5pZm9ybWl2IiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGJ1ZlNpemUgPSAlZCwgR0xpbnQgIgorICAgICAgICAgICIqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24s
IGJ1ZlNpemUsICh1aW50cHRyX3QpcGFyYW1zKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1
ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFj
a2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJ
c1NlbWFwaG9yZUVYVChjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQpKTsKKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5p
Zm9ybWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzU2VtYXBob3JlKHNlbWFwaG9yZVBhY2tlZCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1
ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1NlbWFwaG9yZUVYVCwgR0xi
b29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKElzU2VtYXBob3JlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2Vt
YXBob3JlUGFja2VkLCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAg
ICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2Vt
YXBob3JlRVhULCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZv
cm1pdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQotICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2FtcGxlckNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgc2FtcGxlcikKK3ZvaWQgR0xfQVBJ
RU5UUlkgR2V0blVuaWZvcm1pdkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzU2FtcGxlciIsICJjb250ZXh0
ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUiLCBDSUQoY29udGV4dCksIHNhbXBsZXIpOworICAg
IEVWRU5UKCJnbEdldG5Vbmlmb3JtaXZFWFQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgYnVmU2l6ZSA9
ICVkLCBHTGludCAiCisgICAgICAgICAgIipwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgKHVpbnRw
dHJfdClwYXJhbXMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUlzU2FtcGxlcihjb250ZXh0LCBzYW1wbGVyUGFja2VkKSk7CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZv
cm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IGNvbnRleHQtPmlzU2FtcGxlcihzYW1wbGVyUGFja2VkKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVs
dFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2FtcGxlciwgR0xib29sZWFuPigpOworICAgICAg
ICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgYnVmU2l6ZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElz
U2FtcGxlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHJldHVyblZhbHVl
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTYW1wbGVyLCBHTGJvb2xlYW4+KCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGJ1
ZlNpemUsIHBhcmFtcyk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xi
b29sZWFuIEdMX0FQSUVOVFJZIElzU2hhZGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMdWludCBzaGFkZXIpCit2b2lkIEdMX0FQSUVOVFJZIEdldG5Vbmlmb3JtdWl2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xJ
c1NoYWRlciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSIsIENJRChjb250ZXh0
KSwgc2hhZGVyKTsKKyAgICBFVkVOVCgiZ2xHZXRuVW5pZm9ybXVpdiIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xz
aXplaSBidWZTaXplID0gJWQsIEdMdWludCAiCisgICAgICAgICAgIipwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVl
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFj
a2VkICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihzaGFkZXIpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNTaGFkZXIoY29udGV4dCwgc2hh
ZGVyUGFja2VkKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRuVW5pZm9ybXVpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVm
U2l6ZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1NoYWRlcihzaGFkZXJQYWNrZWQpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTaGFkZXIsIEdMYm9vbGVh
bj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtdWl2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoSXNTaGFkZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQs
IHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTaGFkZXIsIEdMYm9vbGVh
bj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVpdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgIHBhcmFtcyk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTHN5bmMgc3luYykKK3ZvaWQgR0xfQVBJRU5UUlkgSGludENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xJc1N5bmMiLCAiY29udGV4dCA9ICVkLCBHTHN5bmMgc3luYyA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgICh1aW50cHRyX3Qpc3luYyk7CisgICAgRVZF
TlQoImdsSGludCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIG1v
ZGUgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6SGludFRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6SGludE1vZGUsIG1vZGUpKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZUlzU3luYyhjb250ZXh0LCBzeW5jKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUhpbnQoY29udGV4dCwgdGFyZ2V0LCBtb2RlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0
LT5pc1N5bmMoc3luYyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJ
c1N5bmMsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmhpbnQodGFyZ2V0LCBt
b2RlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzU3luYywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHN5bmMsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
SXNTeW5jLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSGludCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldCwgbW9kZSk7CiAgICAgfQotICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzVGV4dHVyZUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgdGV4dHVyZSkKK3ZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0
TWVtb3J5RmRFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRs
ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGZkKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbElzVGV4dHVyZSIsICJjb250ZXh0ID0gJWQsIEdMdWlu
dCB0ZXh0dXJlID0gJXUiLCBDSUQoY29udGV4dCksIHRleHR1cmUpOworICAgIEVWRU5UKCJnbElt
cG9ydE1lbW9yeUZkRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5
ID0gJXUsIEdMdWludDY0IHNpemUgPSAlbGx1LCBHTGVudW0gaGFuZGxlVHlwZSA9ICVzLCBHTGlu
dCAiCisgICAgICAgICAgImZkID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbWVtb3J5
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNpemUpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5cGUpLCBm
ZCk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFRleHR1cmVJRCB0ZXh0dXJlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KHRleHR1cmUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSXNUZXh0dXJlKGNvbnRleHQsIHRleHR1cmVQYWNrZWQpKTsKKyAgICAgICAgTWVtb3J5
T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRs
ZVR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVJbXBvcnRNZW1vcnlGZEVYVChjb250ZXh0LCBtZW1vcnlQ
YWNrZWQsIHNpemUsIGhhbmRsZVR5cGVQYWNrZWQsIGZkKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1Rl
eHR1cmUodGV4dHVyZVBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc1RleHR1cmUsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmltcG9y
dE1lbW9yeUZkKG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFuZGxlVHlwZVBhY2tlZCwgZmQpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNUZXh0dXJlLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgdGV4dHVyZVBhY2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpJc1RleHR1cmUsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJbXBvcnRN
ZW1vcnlGZEVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeVBhY2tlZCwgc2l6ZSwgaGFu
ZGxlVHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBmZCk7CiAgICAgfQotICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAotR0xib29sZWFuIEdMX0FQSUVOVFJZIElzVHJhbnNmb3Jt
RmVlZGJhY2tDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGlkKQordm9pZCBH
TF9BUElFTlRSWSBJbXBvcnRTZW1hcGhvcmVGZEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgc2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsSXNUcmFu
c2Zvcm1GZWVkYmFjayIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1IiwgQ0lEKGNvbnRl
eHQpLCBpZCk7CisgICAgRVZFTlQoImdsSW1wb3J0U2VtYXBob3JlRmRFWFQiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAldSwgR0xlbnVtIGhhbmRsZVR5cGUg
PSAlcywgR0xpbnQgZmQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUs
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpFeHRlcm5hbEhhbmRsZVR5cGUsIGhhbmRsZVR5
cGUpLCBmZCk7CiAKLSAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrSUQgaWRQYWNrZWQgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUcmFuc2Zvcm1GZWVkYmFja0lEPihpZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBob3JlKTsKKyAgICAgICAg
SGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8SGFuZGxlVHlwZT4oaGFuZGxlVHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1RyYW5zZm9ybUZlZWRiYWNrKGNvbnRl
eHQsIGlkUGFja2VkKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgIFZhbGlkYXRlSW1wb3J0U2VtYXBob3JlRmRFWFQoY29udGV4dCwgc2Vt
YXBob3JlUGFja2VkLCBoYW5kbGVUeXBlUGFja2VkLCBmZCkpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNU
cmFuc2Zvcm1GZWVkYmFjayhpZFBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpJc1RyYW5zZm9ybUZlZWRiYWNrLCBHTGJvb2xlYW4+KCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5pbXBvcnRTZW1hcGhvcmVGZChzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQ
YWNrZWQsIGZkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKElzVHJhbnNmb3Jt
RmVlZGJhY2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcmV0dXJuVmFsdWUpOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRS
ZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1RyYW5zZm9ybUZlZWRiYWNrLCBHTGJvb2xlYW4+KCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSW1wb3J0U2VtYXBob3JlRmRFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQYWNrZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgZmQpOwogICAgIH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUdM
Ym9vbGVhbiBHTF9BUElFTlRSWSBJc1ZlcnRleEFycmF5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMdWludCBhcnJheSkKK3ZvaWQgR0xfQVBJRU5UUlkgSW5zZXJ0RXZlbnRNYXJrZXJF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbWFya2Vy
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbElzVmVydGV4QXJyYXkiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQg
YXJyYXkgPSAldSIsIENJRChjb250ZXh0KSwgYXJyYXkpOworICAgIC8vIERvbid0IHJ1biB0aGUg
RVZFTlQoKSBtYWNybyBvbiB0aGUgRVhUX2RlYnVnX21hcmtlciBlbnRyeSBwb2ludHMuCisgICAg
Ly8gSXQgY2FuIGludGVyZmVyZSB3aXRoIHRoZSBkZWJ1ZyBldmVudHMgYmVpbmcgc2V0IGJ5IHRo
ZSBjYWxsZXIuCisgICAgLy8gRVZFTlQoImdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQiLCAiY29udGV4
dCA9ICVkLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKm1hcmtlciA9CisgICAg
Ly8gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksIGxlbmd0aCwgKHVpbnRwdHJfdClt
YXJrZXIpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBWZXJ0ZXhBcnJheUlEIGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJyYXkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZUlzVmVydGV4QXJyYXkoY29udGV4dCwgYXJyYXlQYWNrZWQpKTsKKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29udGV4dCwgbGVuZ3RoLCBtYXJrZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzVmVydGV4QXJyYXko
YXJyYXlQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNW
ZXJ0ZXhBcnJheSwgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+aW5zZXJ0RXZl
bnRNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoSXNWZXJ0ZXhBcnJheSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGFycmF5UGFja2VkLCByZXR1
cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVmVydGV4QXJyYXksIEdMYm9vbGVh
bj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJbnNlcnRFdmVudE1hcmtlckVYVCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNWZXJ0ZXhBcnJheU9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgYXJyYXkpCit2b2lkIEdMX0FQSUVOVFJZ
IEludmFsaWRhdGVGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbElzVmVydGV4QXJyYXlPRVMiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgYXJyYXkgPSAl
dSIsIENJRChjb250ZXh0KSwgYXJyYXkpOworICAgIEVWRU5UKCJnbEludmFsaWRhdGVGcmFtZWJ1
ZmZlciIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNp
emVpIG51bUF0dGFjaG1lbnRzID0gJWQsIGNvbnN0IEdMZW51bSAiCisgICAgICAgICAgIiphdHRh
Y2htZW50cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpGcmFtZWJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwgbnVt
QXR0YWNobWVudHMsCisgICAgICAgICAgKHVpbnRwdHJfdClhdHRhY2htZW50cyk7CiAKLSAgICBH
TGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFZlcnRl
eEFycmF5SUQgYXJyYXlQYWNrZWQgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
cnJheUlEPihhcnJheSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNWZXJ0ZXhBcnJh
eU9FUyhjb250ZXh0LCBhcnJheVBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZUludmFsaWRhdGVGcmFtZWJ1ZmZl
cihjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0g
Y29udGV4dC0+aXNWZXJ0ZXhBcnJheShhcnJheVBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1ZlcnRleEFycmF5T0VTLCBHTGJvb2xlYW4+KCk7CisgICAg
ICAgICAgICBjb250ZXh0LT5pbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2ht
ZW50cywgYXR0YWNobWVudHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoSXNW
ZXJ0ZXhBcnJheU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGFycmF5UGFja2VkLCByZXR1cm5W
YWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVmVydGV4QXJyYXlPRVMsIEdMYm9vbGVh
bj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJbnZhbGlkYXRlRnJhbWVidWZmZXIsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLAorICAgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRzKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIExpZ2h0TW9kZWxmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgSW52YWxp
ZGF0ZVN1YkZyYW1lYnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1BdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMaWdo
dE1vZGVsZiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFt
ID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkxpZ2h0TW9kZWxQYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbElu
dmFsaWRhdGVTdWJGcmFtZWJ1ZmZlciIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHNpemVpIG51bUF0dGFjaG1lbnRzID0gJWQsIGNvbnN0IEdMZW51bSAi
CisgICAgICAgICAgIiphdHRhY2htZW50cyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIs
IEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkg
aGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSwgbnVtQXR0YWNobWVudHMsCisgICAgICAg
ICAgKHVpbnRwdHJfdClhdHRhY2htZW50cywgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVMaWdodE1vZGVsZihjb250ZXh0LCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlSW52YWxpZGF0ZVN1YkZy
YW1lYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVu
dHMsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5saWdodE1vZGVsZihwbmFtZSwgcGFyYW0pOwor
ICAgICAgICAgICAgY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgbnVt
QXR0YWNobWVudHMsIGF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoTGlnaHRNb2RlbGYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwg
cGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlciwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAg
ICAgICAgICAgICAgYXR0YWNobWVudHMsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBMaWdodE1vZGVsZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNCdWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGJ1
ZmZlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMaWdodE1vZGVsZnYiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6TGlnaHRNb2RlbFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7
CisgICAgRVZFTlQoImdsSXNCdWZmZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgYnVmZmVyID0g
JXUiLCBDSUQoY29udGV4dCksIGJ1ZmZlcik7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTGlnaHRNb2RlbGZ2KGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKTsKKyAg
ICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVySUQ+KGJ1ZmZlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUlzQnVmZmVyKGNvbnRleHQsIGJ1ZmZlclBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmxp
Z2h0TW9kZWxmdihwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29u
dGV4dC0+aXNCdWZmZXIoYnVmZmVyUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKExpZ2h0TW9kZWxmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0
RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzQnVmZmVyLCBHTGJvb2xlYW4+KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc0J1ZmZlciwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGJ1ZmZlclBhY2tlZCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpJc0J1ZmZlciwgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTGlnaHRNb2RlbHhDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQorR0xib29sZWFuIEdMX0FQSUVO
VFJZIElzRW5hYmxlZENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gY2FwKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbExpZ2h0TW9kZWx4IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE1vZGVsUGFyYW1ldGVyLCBwbmFtZSksIHBh
cmFtKTsKKyAgICBFVkVOVCgiZ2xJc0VuYWJsZWQiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY2Fw
ID0gJXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkVuYWJsZUNhcCwgY2FwKSk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTGlnaHRNb2RlbHgoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRW5hYmxlZChjb250ZXh0LCBjYXAp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5saWdodE1vZGVseChwbmFtZSwgcGFyYW0pOworICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBjb250ZXh0LT5pc0VuYWJsZWQoY2FwKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKExpZ2h0TW9kZWx4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWQsIEdMYm9vbGVhbj4oKTsKKyAgICAg
ICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzRW5hYmxlZCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGNhcCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0VuYWJsZWQs
IEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lk
IEdMX0FQSUVOVFJZIExpZ2h0TW9kZWx4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
TGVudW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtKQorR0xib29sZWFuIEdMX0FQSUVOVFJZ
IElzRW5hYmxlZGlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwg
R0x1aW50IGluZGV4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbExpZ2h0TW9kZWx4diIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZml4ZWQgKnBhcmFtID0g
MHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkxpZ2h0TW9kZWxQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClw
YXJhbSk7CisgICAgRVZFTlQoImdsSXNFbmFibGVkaSIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
YXJnZXQgPSAlcywgR0x1aW50IGluZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCisgICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkVuYWJsZUNhcCwgdGFyZ2V0KSwgaW5kZXgpOwog
CisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0TW9kZWx4dihjb250ZXh0LCBwbmFtZSwgcGFyYW0p
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNF
bmFibGVkaShjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bGlnaHRNb2RlbHh2KHBuYW1lLCBw
YXJhbSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRW5hYmxlZGkodGFy
Z2V0LCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodE1vZGVs
eHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW0pOworICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OklzRW5hYmxlZGksIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAg
ICBBTkdMRV9DQVBUVVJFKElzRW5hYmxlZGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQs
IGluZGV4LCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGks
IEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lk
IEdMX0FQSUVOVFJZIExpZ2h0ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0g
bGlnaHQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK0dMYm9vbGVhbiBHTF9BUElFTlRS
WSBJc0VuYWJsZWRpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMaWdodGYiLCAiY29udGV4dCA9ICVk
LCBHTGVudW0gbGlnaHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAl
ZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
TGlnaHROYW1lLCBsaWdodCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkxpZ2h0UGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgiZ2xJc0VuYWJsZWRp
RVhUIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAl
dSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RW5hYmxlQ2FwLCB0YXJnZXQpLCBpbmRleCk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2Vk
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxpZ2h0Zihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNr
ZWQsIHBhcmFtKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUlzRW5hYmxlZGlFWFQoY29udGV4dCwgdGFyZ2V0LCBpbmRleCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmxpZ2h0Zihs
aWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29u
dGV4dC0+aXNFbmFibGVkaSh0YXJnZXQsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKExpZ2h0ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tl
ZCwgcGFyYW0pOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGlFWFQsIEdM
Ym9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzRW5hYmxlZGlF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4LCByZXR1cm5WYWx1ZSk7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGlFWFQsIEdMYm9vbGVhbj4oKTsKICAgICB9
CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIExpZ2h0ZnZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbGlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRp
T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsTGlnaHRmdiIsCi0gICAgICAgICJjb250
ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xm
bG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQo
Y29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE5hbWUsIGxpZ2h0KSwK
LSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0UGFyYW1ldGVyLCBwbmFt
ZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xJc0VuYWJsZWRpT0VTIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHVpbnQgaW5kZXggPSAldSIsIENJRChj
b250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RW5hYmxlQ2Fw
LCB0YXJnZXQpLCBpbmRleCk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZUxpZ2h0ZnYoY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBwYXJh
bXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
SXNFbmFibGVkaU9FUyhjb250ZXh0LCB0YXJnZXQsIGluZGV4KSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bGlnaHRmdihsaWdodCwg
cG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQt
PmlzRW5hYmxlZGkodGFyZ2V0LCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShMaWdodGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGlnaHQsIHBuYW1lUGFja2VkLCBw
YXJhbXMpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGlPRVMsIEdMYm9v
bGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzRW5hYmxlZGlPRVMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGluZGV4LCByZXR1cm5WYWx1ZSk7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVy
blZhbHVlPEVudHJ5UG9pbnQ6OklzRW5hYmxlZGlPRVMsIEdMYm9vbGVhbj4oKTsKICAgICB9Cisg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIExpZ2h0eENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xm
aXhlZCBwYXJhbSkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0ZlbmNlTlZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZlbmNlKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbExpZ2h0eCIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xm
aXhlZCBwYXJhbSA9IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZF
TlQoImdsSXNGZW5jZU5WIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGZlbmNlID0gJXUiLCBDSUQo
Y29udGV4dCksIGZlbmNlKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPExpZ2h0UGFyYW1ldGVyPihwbmFtZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHR4KGNvbnRleHQsIGxpZ2h0
LCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKKyAgICAgICAgRmVuY2VOVklEIGZlbmNlUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEPihmZW5jZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzRmVuY2VOVihj
b250ZXh0LCBmZW5jZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmxpZ2h0eChsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFt
KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNGZW5jZU5WKGZlbmNlUGFj
a2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKExpZ2h0eCwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVl
PEVudHJ5UG9pbnQ6OklzRmVuY2VOViwgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoSXNGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNr
ZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNGZW5jZU5WLCBHTGJv
b2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBMaWdodHh2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCitHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgSXNGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
ZnJhbWVidWZmZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbExpZ2h0eHYiLAotICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gbGlnaHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNv
bnN0IEdMZml4ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHROYW1lLCBs
aWdodCksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRl
ciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsSXNGcmFtZWJ1ZmZl
ciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmcmFtZWJ1ZmZlciA9ICV1IiwgQ0lEKGNvbnRleHQp
LCBmcmFtZWJ1ZmZlcik7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIExpZ2h0UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgRnJhbWVidWZmZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJhbWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TGlnaHR4dihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOworICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc0ZyYW1lYnVmZmVyKGNv
bnRleHQsIGZyYW1lYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bGlnaHR4dihsaWdodCwgcG5hbWVQYWNrZWQs
IHBhcmFtcyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzRnJhbWVidWZm
ZXIoZnJhbWVidWZmZXJQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
TGlnaHR4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW1z
KTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0ZyYW1lYnVmZmVyLCBHTGJvb2xlYW4+
KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc0ZyYW1lYnVmZmVyLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgZnJhbWVidWZmZXJQYWNrZWQsIHJldHVyblZhbHVlKTsKICAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJu
VmFsdWU8RW50cnlQb2ludDo6SXNGcmFtZWJ1ZmZlciwgR0xib29sZWFuPigpOworICAgIH0KKyAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTGluZVdpZHRoQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgd2lkdGgpCitHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBH
THVpbnQgZnJhbWVidWZmZXIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTGluZVdpZHRoIiwgImNvbnRleHQg
PSAlZCwgR0xmbG9hdCB3aWR0aCA9ICVmIiwgQ0lEKGNvbnRleHQpLCB3aWR0aCk7CisgICAgRVZF
TlQoImdsSXNGcmFtZWJ1ZmZlck9FUyIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmcmFtZWJ1ZmZl
ciA9ICV1IiwgQ0lEKGNvbnRleHQpLCBmcmFtZWJ1ZmZlcik7CiAKKyAgICBHTGJvb2xlYW4gcmV0
dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVMaW5lV2lkdGgoY29udGV4dCwgd2lkdGgpKTsKKyAgICAgICAgRnJhbWVidWZm
ZXJJRCBmcmFtZWJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RnJh
bWVidWZmZXJJRD4oZnJhbWVidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNGcmFtZWJ1ZmZlck9FUyhjb250ZXh0LCBmcmFt
ZWJ1ZmZlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmxpbmVXaWR0aCh3aWR0aCk7CisgICAgICAgICAgICByZXR1cm5W
YWx1ZSA9IGNvbnRleHQtPmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXJQYWNrZWQpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTGluZVdpZHRoLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgd2lkdGgpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzRnJhbWVidWZmZXJPRVMs
IEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzRnJhbWVi
dWZmZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmcmFtZWJ1ZmZlclBhY2tlZCwgcmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc0ZyYW1lYnVmZmVyT0VTLCBHTGJvb2xl
YW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBMaW5lV2lkdGh4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4ZWQgd2lk
dGgpCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNNZW1vcnlPYmplY3RFWFRDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1lbW9yeU9iamVjdCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xM
aW5lV2lkdGh4IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCB3aWR0aCA9IDB4JVgiLCBDSUQoY29u
dGV4dCksIHdpZHRoKTsKKyAgICBFVkVOVCgiZ2xJc01lbW9yeU9iamVjdEVYVCIsICJjb250ZXh0
ID0gJWQsIEdMdWludCBtZW1vcnlPYmplY3QgPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBtZW1vcnlPYmplY3QpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGluZVdpZHRo
eChjb250ZXh0LCB3aWR0aCkpOworICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQ
YWNrZWQgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc01lbW9yeU9i
amVjdEVYVChjb250ZXh0LCBtZW1vcnlPYmplY3RQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5saW5lV2lkdGh4KHdpZHRo
KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNNZW1vcnlPYmplY3QobWVt
b3J5T2JqZWN0UGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKExpbmVX
aWR0aHgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB3aWR0aCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNNZW1vcnlPYmplY3RFWFQsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAg
ICAgICBBTkdMRV9DQVBUVVJFKElzTWVtb3J5T2JqZWN0RVhULCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbWVtb3J5T2JqZWN0UGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9p
bnQ6OklzTWVtb3J5T2JqZWN0RVhULCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMaW5rUHJvZ3JhbUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSkKK0dMYm9vbGVhbiBHTF9BUElFTlRS
WSBJc1Byb2dyYW1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0p
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsTGlua1Byb2dyYW0iLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJv
Z3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwcm9ncmFtKTsKKyAgICBFVkVOVCgiZ2xJc1Byb2dy
YW0iLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlua1Byb2dyYW0oY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1Byb2dyYW0oY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmxpbmtQcm9ncmFtKHByb2dyYW1QYWNrZWQpOworICAgICAg
ICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbVBhY2tlZCk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShMaW5rUHJvZ3JhbSwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHByb2dyYW1QYWNrZWQpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6Oklz
UHJvZ3JhbSwgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
SXNQcm9ncmFtLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcmV0dXJuVmFs
dWUpOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1Byb2dyYW0sIEdMYm9vbGVhbj4oKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIExvYWRJ
ZGVudGl0eUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQorR0xib29sZWFuIEdMX0FQSUVO
VFJZIElzUHJvZ3JhbVBpcGVsaW5lQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBwaXBlbGluZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMb2FkSWRlbnRpdHkiLCAiY29udGV4dCA9ICVk
IiwgQ0lEKGNvbnRleHQpKTsKKyAgICBFVkVOVCgiZ2xJc1Byb2dyYW1QaXBlbGluZSIsICJjb250
ZXh0ID0gJWQsIEdMdWludCBwaXBlbGluZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwaXBlbGluZSk7
CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMb2FkSWRlbnRpdHkoY29udGV4dCkpOwor
ICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNQcm9ncmFtUGlw
ZWxpbmUoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5sb2FkSWRlbnRpdHkoKTsKKyAgICAg
ICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNQcm9ncmFtUGlwZWxpbmUocGlwZWxpbmVQ
YWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTG9hZElkZW50aXR5LCBp
c0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNQcm9n
cmFtUGlwZWxpbmUsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBU
VVJFKElzUHJvZ3JhbVBpcGVsaW5lLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGlwZWxpbmVQYWNr
ZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNQcm9ncmFtUGlwZWxp
bmUsIEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12
b2lkIEdMX0FQSUVOVFJZIExvYWRNYXRyaXhmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IGNvbnN0IEdMZmxvYXQgKm0pCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNRdWVyeUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaWQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTG9hZE1h
dHJpeGYiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZsb2F0ICptID0gMHglMDE2IiBQUkl4UFRS
ICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRwdHJfdCltKTsKKyAgICBFVkVOVCgi
Z2xJc1F1ZXJ5IiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGlkID0gJXUiLCBDSUQoY29udGV4dCks
IGlkKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUxvYWRNYXRyaXhmKGNvbnRleHQs
IG0pKTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1F1ZXJ5KGNvbnRleHQsIGlkUGFja2VkKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bG9h
ZE1hdHJpeGYobSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzUXVlcnko
aWRQYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTG9hZE1hdHJpeGYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJ
c1F1ZXJ5LCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJ
c1F1ZXJ5LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0
dXJuVmFsdWU8RW50cnlQb2ludDo6SXNRdWVyeSwgR0xib29sZWFuPigpOwogICAgIH0KKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTG9hZE1hdHJpeHhDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xmaXhlZCAqbSkKK0dMYm9vbGVhbiBH
TF9BUElFTlRSWSBJc1F1ZXJ5RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBpZCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xMb2FkTWF0cml4eCIsICJjb250ZXh0ID0gJWQsIGNvbnN0
IEdMZml4ZWQgKm0gPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKLSAgICAgICAg
ICAodWludHB0cl90KW0pOworICAgIEVWRU5UKCJnbElzUXVlcnlFWFQiLCAiY29udGV4dCA9ICVk
LCBHTHVpbnQgaWQgPSAldSIsIENJRChjb250ZXh0KSwgaWQpOwogCisgICAgR0xib29sZWFuIHJl
dHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTG9hZE1hdHJpeHgoY29udGV4dCwgbSkpOworICAgICAgICBRdWVyeUlEIGlk
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVy
eUlEPihpZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlz
UXVlcnlFWFQoY29udGV4dCwgaWRQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5sb2FkTWF0cml4eChtKTsKKyAgICAgICAg
ICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNRdWVyeShpZFBhY2tlZCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShMb2FkTWF0cml4eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IG0pOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0g
R2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUXVlcnlFWFQsIEdMYm9vbGVhbj4o
KTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzUXVlcnlFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBpZFBhY2tlZCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc1F1ZXJ5RVhULCBHTGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRy
aXhPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKK0dMYm9vbGVhbiBHTF9BUElFTlRS
WSBJc1JlbmRlcmJ1ZmZlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcmVu
ZGVyYnVmZmVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbExvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJp
eE9FUyIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAgIEVWRU5UKCJnbElzUmVu
ZGVyYnVmZmVyIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHJlbmRlcmJ1ZmZlciA9ICV1IiwgQ0lE
KGNvbnRleHQpLCByZW5kZXJidWZmZXIpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
UmVuZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklE
PihyZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlTG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTKGNvbnRl
eHQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
SXNSZW5kZXJidWZmZXIoY29udGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bG9hZFBhbGV0
dGVGcm9tTW9kZWxWaWV3TWF0cml4KCk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRl
eHQtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlclBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1JlbmRlcmJ1
ZmZlciwgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNS
ZW5kZXJidWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCByZW5kZXJidWZmZXJQYWNrZWQsIHJl
dHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUg
PSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNSZW5kZXJidWZmZXIsIEdMYm9v
bGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIExvZ2ljT3BDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG9wY29k
ZSkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1JlbmRlcmJ1ZmZlck9FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbExv
Z2ljT3AiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gb3Bjb2RlID0gJXMiLCBDSUQoY29udGV4dCks
Ci0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxvZ2ljT3AsIG9wY29kZSkp
OworICAgIEVWRU5UKCJnbElzUmVuZGVyYnVmZmVyT0VTIiwgImNvbnRleHQgPSAlZCwgR0x1aW50
IHJlbmRlcmJ1ZmZlciA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIHJlbmRlcmJ1ZmZl
cik7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIExvZ2ljYWxPcGVyYXRpb24gb3Bjb2RlUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxMb2dpY2FsT3BlcmF0aW9uPihvcGNvZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTG9naWNPcChjb250ZXh0LCBvcGNvZGVQYWNrZWQpKTsKKyAgICAgICAgUmVu
ZGVyYnVmZmVySUQgcmVuZGVyYnVmZmVyUGFja2VkID0gRnJvbUdMPFJlbmRlcmJ1ZmZlcklEPihy
ZW5kZXJidWZmZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlSXNSZW5kZXJidWZmZXJPRVMoY29udGV4dCwgcmVuZGVyYnVmZmVyUGFj
a2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+bG9naWNPcChvcGNvZGVQYWNrZWQpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBjb250ZXh0LT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJQYWNrZWQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTG9naWNPcCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG9w
Y29kZVBhY2tlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNSZW5kZXJidWZmZXJP
RVMsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzUmVu
ZGVyYnVmZmVyT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcmVuZGVyYnVmZmVyUGFja2VkLCBy
ZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVyblZhbHVl
ID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzUmVuZGVyYnVmZmVyT0VTLCBH
TGJvb2xlYW4+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCAq
R0xfQVBJRU5UUlkgTWFwQnVmZmVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhY2Nlc3MpCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNTZW1h
cGhvcmVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHNlbWFwaG9yZSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xNYXBCdWZmZXJPRVMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBhY2Nlc3MgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJBY2Nlc3NBUkIsIGFjY2Vz
cykpOworICAgIEVWRU5UKCJnbElzU2VtYXBob3JlRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50
IHNlbWFwaG9yZSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUpOwogCi0gICAgdm9pZCAq
cmV0dXJuVmFsdWU7CisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwQnVmZmVy
T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgYWNjZXNzKSk7CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzU2VtYXBob3JlRVhUKGNvbnRleHQsIHNl
bWFwaG9yZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+bWFwQnVmZmVyKHRhcmdldFBhY2tlZCwg
YWNjZXNzKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNTZW1hcGhvcmUo
c2VtYXBob3JlUGFja2VkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
Ok1hcEJ1ZmZlck9FUywgdm9pZCAqPigpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXRE
ZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTZW1hcGhvcmVFWFQsIEdMYm9vbGVhbj4o
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE1hcEJ1ZmZlck9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgYWNjZXNzLCByZXR1cm5WYWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoSXNTZW1hcGhvcmVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBz
ZW1hcGhvcmVQYWNrZWQsIHJldHVyblZhbHVlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFw
QnVmZmVyT0VTLCB2b2lkICo+KCk7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzU2VtYXBob3JlRVhULCBHTGJvb2xlYW4+KCk7CiAgICAg
fQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVm
ZmVyUmFuZ2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
YWNjZXNzKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIElzU2FtcGxlckNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTHVpbnQgc2FtcGxlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNYXBCdWZmZXJS
YW5nZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGlu
dHB0ciBvZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIGxlbmd0aCA9ICVsbHUsICIKLSAgICAgICAg
ICAiR0xiaXRmaWVsZCBhY2Nlc3MgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihsZW5ndGgpLAotICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmlu
ZyhHTGVudW1Hcm91cDo6QnVmZmVyQWNjZXNzTWFzaywgYWNjZXNzKS5jX3N0cigpKTsKKyAgICBF
VkVOVCgiZ2xJc1NhbXBsZXIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1Iiwg
Q0lEKGNvbnRleHQpLCBzYW1wbGVyKTsKIAotICAgIHZvaWQgKnJldHVyblZhbHVlOworICAgIEdM
Ym9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVy
QmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJp
bmRpbmc+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTWFw
QnVmZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNz
KSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUlzU2FtcGxlcihjb250ZXh0LCBzYW1wbGVyUGFj
a2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBjb250ZXh0LT5tYXBCdWZmZXJSYW5nZSh0YXJnZXRQYWNrZWQsIG9mZnNl
dCwgbGVuZ3RoLCBhY2Nlc3MpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5p
c1NhbXBsZXIoc2FtcGxlclBhY2tlZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRy
eVBvaW50OjpNYXBCdWZmZXJSYW5nZSwgdm9pZCAqPigpOworICAgICAgICAgICAgcmV0dXJuVmFs
dWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTYW1wbGVyLCBHTGJvb2xl
YW4+KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXBCdWZmZXJSYW5nZSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vz
cywKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoSXNTYW1wbGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcmV0
dXJuVmFsdWUpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJSYW5nZSwgdm9pZCAq
PigpOworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBv
aW50OjpJc1NhbXBsZXIsIEdMYm9vbGVhbj4oKTsKICAgICB9CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCi12b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJSYW5nZUVYVENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3Mp
CitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNTaGFkZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0x1aW50IHNoYWRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNYXBCdWZmZXJSYW5nZUVYVCIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludHB0ciBv
ZmZzZXQgPSAlbGx1LCBHTHNpemVpcHRyIGxlbmd0aCA9ICVsbHUsICIKLSAgICAgICAgICAiR0xi
aXRmaWVsZCBhY2Nlc3MgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJnZXQpLAotICAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihsZW5ndGgpLAotICAgICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVu
dW1Hcm91cDo6QnVmZmVyQWNjZXNzTWFzaywgYWNjZXNzKS5jX3N0cigpKTsKKyAgICBFVkVOVCgi
Z2xJc1NoYWRlciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSIsIENJRChjb250
ZXh0KSwgc2hhZGVyKTsKIAotICAgIHZvaWQgKnJldHVyblZhbHVlOworICAgIEdMYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0
YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRh
cmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9m
ZnNldCwgbGVuZ3RoLCBhY2Nlc3MpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihz
aGFkZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1No
YWRlcihjb250ZXh0LCBzaGFkZXJQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPm1hcEJ1ZmZlclJh
bmdlKHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CisgICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzU2hhZGVyKHNoYWRlclBhY2tlZCk7CiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERl
ZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJSYW5nZUVYVCwgdm9pZCAqPigp
OworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQ
b2ludDo6SXNTaGFkZXIsIEdMYm9vbGVhbj4oKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKE1hcEJ1ZmZlclJhbmdlRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgIHJldHVy
blZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1NoYWRlciwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHNoYWRlclBhY2tlZCwgcmV0dXJuVmFsdWUpOwogICAgIH0KICAgICBlbHNlCiAgICAg
ewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpNYXBCdWZmZXJSYW5nZUVYVCwgdm9pZCAqPigpOworICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1NoYWRlciwgR0xib29sZWFuPigpOwog
ICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTWF0
ZXJpYWxmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmYWNlLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNTeW5jQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMc3luYyBzeW5jKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbE1h
dGVyaWFsZiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBwbmFtZSA9
ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdGVyaWFsRmFjZSwgZmFjZSksCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdGVyaWFsUGFyYW1ldGVyLCBwbmFtZSksIHBhcmFt
KTsKKyAgICBFVkVOVCgiZ2xJc1N5bmMiLCAiY29udGV4dCA9ICVkLCBHTHN5bmMgc3luYyA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgICh1aW50cHRyX3Qpc3lu
Yyk7CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdGVyaWFsZihjb250ZXh0LCBmYWNlLCBwbmFtZVBh
Y2tlZCwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlSXNTeW5jKGNvbnRleHQsIHN5bmMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5tYXRlcmlhbGYoZmFjZSwgcG5hbWVQYWNrZWQs
IHBhcmFtKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNTeW5jKHN5bmMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTWF0ZXJpYWxmLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpJc1N5bmMsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdM
RV9DQVBUVVJFKElzU3luYywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHN5bmMsIHJldHVyblZhbHVl
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZh
dWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNTeW5jLCBHTGJvb2xlYW4+KCk7CiAgICAgfQor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNYXRlcmlhbGZ2
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJ
c1RleHR1cmVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHRleHR1cmUpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbE1hdGVyaWFsZnYiLAotICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gZmFjZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmbG9hdCAq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZhY2UsIGZhY2UpLAotICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWF0ZXJpYWxQYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbElzVGV4dHVyZSIsICJjb250ZXh0
ID0gJWQsIEdMdWludCB0ZXh0dXJlID0gJXUiLCBDSUQoY29udGV4dCksIHRleHR1cmUpOwogCisg
ICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBN
YXRlcmlhbFBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0
ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbGZ2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBw
YXJhbXMpKTsKKyAgICAgICAgVGV4dHVyZUlEIHRleHR1cmVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPih0ZXh0dXJlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlSXNUZXh0dXJlKGNvbnRleHQsIHRleHR1
cmVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5tYXRlcmlhbGZ2KGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAg
ICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT5pc1RleHR1cmUodGV4dHVyZVBhY2tlZCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRlcmlhbGZ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6SXNUZXh0dXJlLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShJc1RleHR1cmUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0ZXh0dXJlUGFj
a2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVy
blZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVGV4dHVyZSwgR0xi
b29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgTWF0ZXJpYWx4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBm
YWNlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkg
SXNUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQg
aWQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF0ZXJpYWx4IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZh
Y2UgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZh
Y2UsIGZhY2UpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlh
bFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsSXNUcmFuc2Zvcm1GZWVk
YmFjayIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpZCA9ICV1IiwgQ0lEKGNvbnRleHQpLCBpZCk7
CiAKKyAgICBHTGJvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxNYXRlcmlhbFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VHJhbnNmb3JtRmVlZGJhY2tJRD4oaWQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0ZXJpYWx4KGNvbnRl
eHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJc1RyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIGlk
UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+bWF0ZXJpYWx4KGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAgICAg
ICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmlzVHJhbnNmb3JtRmVlZGJhY2soaWRQYWNrZWQp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTWF0ZXJpYWx4LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpJc1RyYW5zZm9ybUZlZWRiYWNrLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0K
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1RyYW5zZm9ybUZlZWRiYWNrLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaWRQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6
SXNUcmFuc2Zvcm1GZWVkYmFjaywgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTWF0ZXJpYWx4dkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZpeGVkICpwYXJhbSkKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1ZlcnRleEFycmF5Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBhcnJheSkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xNYXRlcmlhbHh2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9ICVz
LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQ
VFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpNYXRlcmlhbEZhY2UsIGZhY2UpLAotICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBh
cmFtKTsKKyAgICBFVkVOVCgiZ2xJc1ZlcnRleEFycmF5IiwgImNvbnRleHQgPSAlZCwgR0x1aW50
IGFycmF5ID0gJXUiLCBDSUQoY29udGV4dCksIGFycmF5KTsKIAorICAgIEdMYm9vbGVhbiByZXR1
cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgTWF0ZXJpYWxQYXJhbWV0ZXIg
cG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihw
bmFtZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBcnJheUlE
IGFycmF5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
cnJheUlEPihhcnJheSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbHh2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBw
YXJhbSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVJc1ZlcnRleEFycmF5KGNvbnRleHQsIGFycmF5UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWF0ZXJpYWx4dihmYWNl
LCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0
LT5pc1ZlcnRleEFycmF5KGFycmF5UGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKE1hdGVyaWFseHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWNlLCBwbmFtZVBhY2tl
ZCwgcGFyYW0pOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OklzVmVydGV4QXJyYXksIEdM
Ym9vbGVhbj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKElzVmVydGV4QXJy
YXksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhcnJheVBhY2tlZCwgcmV0dXJuVmFsdWUpOwogICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1
cm5WYWx1ZTxFbnRyeVBvaW50OjpJc1ZlcnRleEFycmF5LCBHTGJvb2xlYW4+KCk7CisgICAgfQor
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNYXRyaXhJbmRl
eFBvaW50ZXJPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBJc1ZlcnRl
eEFycmF5T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBhcnJheSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xNYXRyaXhJbmRleFBvaW50ZXJPRVMiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJpZGUg
PSAlZCwgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIipwb2ludGVyID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRlZmF1bHRHcm91cCwgdHlwZSksIHN0cmlkZSwKLSAgICAgICAgICAodWludHB0cl90
KXBvaW50ZXIpOworICAgIEVWRU5UKCJnbElzVmVydGV4QXJyYXlPRVMiLCAiY29udGV4dCA9ICVk
LCBHTHVpbnQgYXJyYXkgPSAldSIsIENJRChjb250ZXh0KSwgYXJyYXkpOwogCisgICAgR0xib29s
ZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZU1hdHJpeEluZGV4UG9pbnRlck9FUyhjb250ZXh0LCBzaXplLCB0
eXBlLCBzdHJpZGUsIHBvaW50ZXIpKTsKKyAgICAgICAgVmVydGV4QXJyYXlJRCBhcnJheVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXJyYXlJRD4oYXJy
YXkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlSXNWZXJ0ZXhBcnJheU9FUyhjb250ZXh0LCBhcnJheVBhY2tlZCkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1hdHJpeElu
ZGV4UG9pbnRlcihzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICAgICAgcmV0
dXJuVmFsdWUgPSBjb250ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5UGFja2VkKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdHJpeEluZGV4UG9pbnRlck9FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHNpemUsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6SXNWZXJ0ZXhBcnJheU9FUywgR0xib29sZWFuPigpOworICAgICAgICB9
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoSXNWZXJ0ZXhBcnJheU9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGFycmF5UGFja2VkLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
OklzVmVydGV4QXJyYXlPRVMsIEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1hdHJpeE1vZGVDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCit2b2lkIEdMX0FQSUVOVFJZIExpZ2h0TW9kZWxm
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xNYXRyaXhNb2RlIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIG1v
ZGUgPSAlcyIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6TWF0cml4TW9kZSwgbW9kZSkpOworICAgIEVWRU5UKCJnbExpZ2h0TW9kZWxmIiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAlZiIsIENJRChj
b250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TGlnaHRNb2Rl
bFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgTWF0cml4VHlwZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PE1hdHJpeFR5cGU+KG1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TWF0cml4TW9kZShjb250ZXh0LCBtb2RlUGFja2VkKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVMaWdodE1vZGVsZihjb250ZXh0LCBw
bmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5tYXRyaXhNb2RlKG1vZGVQYWNrZWQpOworICAgICAgICAgICAgY29u
dGV4dC0+bGlnaHRNb2RlbGYocG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKE1hdHJpeE1vZGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2VkKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShMaWdodE1vZGVsZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHBuYW1lLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1heFNoYWRlckNv
bXBpbGVyVGhyZWFkc0tIUkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgY291
bnQpCit2b2lkIEdMX0FQSUVOVFJZIExpZ2h0TW9kZWxmdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQg
Y291bnQgPSAldSIsIENJRChjb250ZXh0KSwgY291bnQpOworICAgIEVWRU5UKCJnbExpZ2h0TW9k
ZWxmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0
IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE1vZGVsUGFyYW1ldGVyLCBw
bmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0tIUihjb250ZXh0
LCBjb3VudCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVMaWdodE1vZGVsZnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1heFNoYWRlckNv
bXBpbGVyVGhyZWFkcyhjb3VudCk7CisgICAgICAgICAgICBjb250ZXh0LT5saWdodE1vZGVsZnYo
cG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXhTaGFk
ZXJDb21waWxlclRocmVhZHNLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoTGlnaHRNb2RlbGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJpZXJD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xiaXRmaWVsZCBiYXJyaWVycykKK3ZvaWQg
R0xfQVBJRU5UUlkgTGlnaHRNb2RlbHhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xl
bnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbE1lbW9yeUJhcnJpZXIi
LCAiY29udGV4dCA9ICVkLCBHTGJpdGZpZWxkIGJhcnJpZXJzID0gJXMiLCBDSUQoY29udGV4dCks
Ci0gICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpNZW1vcnlCYXJyaWVy
TWFzaywgYmFycmllcnMpLmNfc3RyKCkpOworICAgIEVWRU5UKCJnbExpZ2h0TW9kZWx4IiwgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIEdMZml4ZWQgcGFyYW0gPSAweCVYIiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodE1v
ZGVsUGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWVtb3J5QmFycmllcihjb250ZXh0LCBi
YXJyaWVycykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlTGlnaHRNb2RlbHgoY29udGV4dCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bWVtb3J5
QmFycmllcihiYXJyaWVycyk7CisgICAgICAgICAgICBjb250ZXh0LT5saWdodE1vZGVseChwbmFt
ZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTWVtb3J5QmFycmll
ciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJhcnJpZXJzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShMaWdodE1vZGVseCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbSk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1lbW9yeUJhcnJpZXJCeVJlZ2lvbkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGJpdGZpZWxkIGJhcnJpZXJzKQordm9pZCBHTF9BUElFTlRS
WSBMaWdodE1vZGVseHZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZpeGVkICpwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNZW1vcnlCYXJyaWVyQnlS
ZWdpb24iLCAiY29udGV4dCA9ICVkLCBHTGJpdGZpZWxkIGJhcnJpZXJzID0gJXMiLCBDSUQoY29u
dGV4dCksCi0gICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpNZW1vcnlC
YXJyaWVyTWFzaywgYmFycmllcnMpLmNfc3RyKCkpOworICAgIEVWRU5UKCJnbExpZ2h0TW9kZWx4
diIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdM
Zml4ZWQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TW9kZWxQYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVNZW1vcnlCYXJyaWVyQnlSZWdpb24oY29udGV4dCwgYmFycmllcnMp
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGln
aHRNb2RlbHh2KGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1lbW9yeUJhcnJpZXJCeVJlZ2lv
bihiYXJyaWVycyk7CisgICAgICAgICAgICBjb250ZXh0LT5saWdodE1vZGVseHYocG5hbWUsIHBh
cmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE1lbW9yeUJhcnJpZXJCeVJl
Z2lvbiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJhcnJpZXJzKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShMaWdodE1vZGVseHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZSwgcGFyYW0pOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5T2JqZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIExpZ2h0ZkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbGlnaHQsIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IG1lbW9yeU9iamVjdCA9ICV1LCBHTGVu
dW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbWVtb3J5T2JqZWN0LCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6TWVtb3J5T2JqZWN0UGFyYW1ldGVyTmFtZSwgcG5hbWUp
LAotICAgICAgICAgICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xMaWdodGYiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gbGlnaHQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIEdMZmxv
YXQgcGFyYW0gPSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6TGlnaHROYW1lLCBsaWdodCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkxpZ2h0UGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmplY3RQYWNrZWQgICAg
ICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgVmFsaWRhdGVNZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVChjb250ZXh0LCBtZW1v
cnlPYmplY3RQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlnaHRmKGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBh
Y2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5tZW1vcnlPYmplY3RQYXJhbWV0ZXJpdihtZW1vcnlPYmplY3RQYWNr
ZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+bGlnaHRmKGxpZ2h0LCBw
bmFtZVBhY2tlZCwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTWVt
b3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtZW1vcnlPYmpl
Y3RQYWNrZWQsIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoTGlnaHRmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGlnaHQsIHBuYW1l
UGFja2VkLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE1pblNhbXBsZVNo
YWRpbmdDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCB2YWx1ZSkKK3ZvaWQg
R0xfQVBJRU5UUlkgTGlnaHRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBsaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbE1pblNhbXBsZVNoYWRpbmciLCAiY29udGV4dCA9ICVkLCBHTGZsb2F0IHZhbHVlID0gJWYi
LCBDSUQoY29udGV4dCksIHZhbHVlKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsTGlnaHRmdiIs
CisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIi
LAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdo
dE5hbWUsIGxpZ2h0KSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0
UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWluU2FtcGxlU2hhZGlu
Zyhjb250ZXh0LCB2YWx1ZSkpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4ocG5hbWUp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlTGlnaHRmdihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1pblNh
bXBsZVNoYWRpbmcodmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+bGlnaHRmdihsaWdodCwg
cG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShN
aW5TYW1wbGVTaGFkaW5nLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdmFsdWUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKExpZ2h0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsaWdodCwgcG5hbWVQ
YWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE11bHRNYXRyaXhm
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIGNvbnN0IEdMZmxvYXQgKm0pCit2b2lkIEdM
X0FQSUVOVFJZIExpZ2h0eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gbGln
aHQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNdWx0TWF0
cml4ZiIsICJjb250ZXh0ID0gJWQsIGNvbnN0IEdMZmxvYXQgKm0gPSAweCUwMTYiIFBSSXhQVFIg
IiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICAodWludHB0cl90KW0pOworICAgIEVWRU5UKCJn
bExpZ2h0eCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVzLCBHTGVudW0gcG5hbWUg
PSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkxpZ2h0TmFtZSwgbGlnaHQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpMaWdodFBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZU11bHRNYXRyaXhmKGNvbnRleHQsIG0pKTsKKyAgICAgICAgTGlnaHRQYXJhbWV0ZXIgcG5h
bWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TGlnaHRQYXJhbWV0
ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZUxpZ2h0eChjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+bXVsdE1hdHJpeGYobSk7CisgICAgICAgICAgICBjb250ZXh0LT5saWdodHgobGlnaHQsIHBu
YW1lUGFja2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNdWx0
TWF0cml4ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG0pOworICAgICAgICBBTkdMRV9DQVBUVVJF
KExpZ2h0eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxpZ2h0LCBwbmFtZVBhY2tlZCwgcGFyYW0p
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNdWx0TWF0cml4eENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGZpeGVkICptKQordm9pZCBHTF9BUElFTlRSWSBMaWdo
dHh2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGxpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTXVsdE1hdHJpeHgi
LCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZpeGVkICptID0gMHglMDE2IiBQUkl4UFRSICIiLCBD
SUQoY29udGV4dCksCi0gICAgICAgICAgKHVpbnRwdHJfdCltKTsKKyAgICBFVkVOVCgKKyAgICAg
ICAgImdsTGlnaHR4diIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBsaWdodCA9ICVz
LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFyYW1zID0gMHglMDE2IiBQUkl4
UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpMaWdodE5hbWUsIGxpZ2h0KSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkxpZ2h0UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
TXVsdE1hdHJpeHgoY29udGV4dCwgbSkpOworICAgICAgICBMaWdodFBhcmFtZXRlciBwbmFtZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxMaWdodFBhcmFtZXRlcj4o
cG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlTGlnaHR4dihjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
Pm11bHRNYXRyaXh4KG0pOworICAgICAgICAgICAgY29udGV4dC0+bGlnaHR4dihsaWdodCwgcG5h
bWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShNdWx0
TWF0cml4eCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG0pOworICAgICAgICBBTkdMRV9DQVBUVVJF
KExpZ2h0eHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsaWdodCwgcG5hbWVQYWNrZWQsIHBhcmFt
cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJhd0VsZW1lbnRzQmFzZVZl
cnRleEVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHNpemVpICpjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
Y29uc3QgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpi
YXNldmVydGV4KQordm9pZCBHTF9BUElFTlRSWSBMaW5lV2lkdGhDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0xmbG9hdCB3aWR0aCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xNdWx0aURyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBtb2Rl
ID0gJXMsIGNvbnN0IEdMc2l6ZWkgKmNvdW50ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAg
IiwgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqY29uc3QqaW5kaWNlcyA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAgICIsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQsIGNvbnN0IEdMaW50
ICpiYXNldmVydGV4ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlByaW1pdGl2ZVR5cGUsIG1vZGUpLCAodWlu
dHB0cl90KWNvdW50LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEcmF3
RWxlbWVudHNUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClpbmRpY2VzLCBwcmltY291bnQsCi0gICAg
ICAgICAgKHVpbnRwdHJfdCliYXNldmVydGV4KTsKKyAgICBFVkVOVCgiZ2xMaW5lV2lkdGgiLCAi
Y29udGV4dCA9ICVkLCBHTGZsb2F0IHdpZHRoID0gJWYiLCBDSUQoY29udGV4dCksIHdpZHRoKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAg
ICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBtb2Rl
UGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQsIGJhc2V2
ZXJ0ZXgpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTGlu
ZVdpZHRoKGNvbnRleHQsIHdpZHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4KG1v
ZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRpY2VzLCBwcmltY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXZlcnRleCk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5saW5lV2lkdGgod2lkdGgpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoTXVsdGlEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhULCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgbW9kZVBhY2tlZCwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHlw
ZVBhY2tlZCwgaW5kaWNlcywgcHJpbWNvdW50LCBiYXNldmVydGV4KTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShMaW5lV2lkdGgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB3aWR0aCk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQ0ZkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgcSkKK3ZvaWQgR0xfQVBJRU5UUlkgTGluZVdpZHRoeENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIHdpZHRoKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbE11bHRpVGV4
Q29vcmQ0ZiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBH
TGZsb2F0IHMgPSAlZiwgR0xmbG9hdCB0ID0gJWYsIEdMZmxvYXQgciA9ICVmLCAiCi0gICAgICAg
ICAgIkdMZmxvYXQgcSA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVW5pdCwgdGFyZ2V0KSwgcywgdCwgciwgcSk7CisgICAg
RVZFTlQoImdsTGluZVdpZHRoeCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgd2lkdGggPSAweCVY
IiwgQ0lEKGNvbnRleHQpLCB3aWR0aCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0aVRleENvb3JkNGYo
Y29udGV4dCwgdGFyZ2V0LCBzLCB0LCByLCBxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZUxpbmVXaWR0aHgoY29udGV4dCwgd2lkdGgpKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5tdWx0aVRl
eENvb3JkNGYodGFyZ2V0LCBzLCB0LCByLCBxKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmxpbmVX
aWR0aHgod2lkdGgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoTXVsdGlUZXhD
b29yZDRmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBzLCB0LCByLCBxKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShMaW5lV2lkdGh4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgd2lkdGgp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBNdWx0aVRleENvb3JkNHhDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmaXhlZCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmaXhlZCB0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmaXhlZCByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmaXhlZCBxKQordm9pZCBHTF9BUElFTlRSWSBMaW5rUHJvZ3JhbUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xNdWx0aVRleENvb3JkNHgiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0
ZXh0dXJlID0gJXMsIEdMZml4ZWQgcyA9IDB4JVgsIEdMZml4ZWQgdCA9IDB4JVgsIEdMZml4ZWQg
ciA9ICIKLSAgICAgICAgICAiMHglWCwgR0xmaXhlZCBxID0gMHglWCIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVVuaXQsIHRleHR1
cmUpLCBzLCB0LCByLCBxKTsKKyAgICBFVkVOVCgiZ2xMaW5rUHJvZ3JhbSIsICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUiLCBDSUQoY29udGV4dCksIHByb2dyYW0pOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTXVsdGlUZXhDb29yZDR4KGNvbnRleHQsIHRl
eHR1cmUsIHMsIHQsIHIsIHEpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTGlua1Byb2dyYW0oY29udGV4dCwgcHJvZ3JhbVBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm11
bHRpVGV4Q29vcmQ0eCh0ZXh0dXJlLCBzLCB0LCByLCBxKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmxpbmtQcm9ncmFtKHByb2dyYW1QYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoTXVsdGlUZXhDb29yZDR4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGV4dHVyZSwgcywg
dCwgciwgcSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTGlua1Byb2dyYW0sIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
Tm9ybWFsM2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCBueCwgR0xmbG9h
dCBueSwgR0xmbG9hdCBueikKK3ZvaWQgR0xfQVBJRU5UUlkgTG9hZElkZW50aXR5Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTm9ybWFsM2YiLCAiY29udGV4
dCA9ICVkLCBHTGZsb2F0IG54ID0gJWYsIEdMZmxvYXQgbnkgPSAlZiwgR0xmbG9hdCBueiA9ICVm
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG54LCBueSwgbnopOworICAgIEVWRU5UKCJnbExv
YWRJZGVudGl0eSIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVOb3JtYWwzZihj
b250ZXh0LCBueCwgbnksIG56KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUxvYWRJZGVudGl0eShjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+bm9ybWFsM2YobngsIG55LCBueik7
CisgICAgICAgICAgICBjb250ZXh0LT5sb2FkSWRlbnRpdHkoKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKE5vcm1hbDNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbngsIG55LCBu
eik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTG9hZElkZW50aXR5LCBpc0NhbGxWYWxpZCwgY29u
dGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE5vcm1hbDN4Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZml4ZWQgbngsIEdMZml4ZWQgbnksIEdMZml4ZWQgbnopCit2
b2lkIEdMX0FQSUVOVFJZIExvYWRNYXRyaXhmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IGNvbnN0IEdMZmxvYXQgKm0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTm9ybWFsM3giLCAiY29udGV4dCA9
ICVkLCBHTGZpeGVkIG54ID0gMHglWCwgR0xmaXhlZCBueSA9IDB4JVgsIEdMZml4ZWQgbnogPSAw
eCVYIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG54LCBueSwgbnopOworICAgIEVWRU5UKCJn
bExvYWRNYXRyaXhmIiwgImNvbnRleHQgPSAlZCwgY29uc3QgR0xmbG9hdCAqbSA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgICh1aW50cHRyX3QpbSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5v
cm1hbDN4KGNvbnRleHQsIG54LCBueSwgbnopKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlTG9hZE1hdHJpeGYoY29udGV4dCwgbSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm5vcm1hbDN4KG54
LCBueSwgbnopOworICAgICAgICAgICAgY29udGV4dC0+bG9hZE1hdHJpeGYobSk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShOb3JtYWwzeCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IG54LCBueSwgbnopOworICAgICAgICBBTkdMRV9DQVBUVVJFKExvYWRNYXRyaXhmLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE5vcm1hbFBv
aW50ZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQordm9pZCBHTF9B
UElFTlRSWSBMb2FkTWF0cml4eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBH
TGZpeGVkICptKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xOb3JtYWxQb2ludGVyIiwKLSAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJpZGUgPSAl
ZCwgY29uc3Qgdm9pZCAqcG9pbnRlciA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAg
ICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6Tm9ybWFsUG9p
bnRlclR5cGUsIHR5cGUpLCBzdHJpZGUsCi0gICAgICAgICh1aW50cHRyX3QpcG9pbnRlcik7Cisg
ICAgRVZFTlQoImdsTG9hZE1hdHJpeHgiLCAiY29udGV4dCA9ICVkLCBjb25zdCBHTGZpeGVkICpt
ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgKHVpbnRwdHJf
dCltKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5
cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4QXR0cmliVHlwZT4odHlw
ZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTm9ybWFsUG9pbnRlcihj
b250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTG9hZE1hdHJpeHgoY29udGV4dCwgbSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm5v
cm1hbFBvaW50ZXIodHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmxvYWRNYXRyaXh4KG0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
Tm9ybWFsUG9pbnRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHR5cGVQYWNrZWQsIHN0cmlkZSwg
cG9pbnRlcik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTG9hZE1hdHJpeHgsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0TGFiZWxD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCkKK3ZvaWQgR0xfQVBJRU5UUlkg
TG9hZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsT2JqZWN0TGFiZWwiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSBpZGVudGlmaWVyID0gJXMsIEdMdWludCBuYW1lID0gJXUsIEdMc2l6ZWkg
bGVuZ3RoID0gJWQsIGNvbnN0ICIKLSAgICAgICAgICAiR0xjaGFyICpsYWJlbCA9IDB4JTAxNiIg
UFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpPYmplY3RJZGVudGlmaWVyLCBpZGVudGlmaWVyKSwgbmFtZSwgbGVuZ3RoLAotICAg
ICAgICAgICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5UKCJnbExvYWRQYWxldHRlRnJvbU1v
ZGVsVmlld01hdHJpeE9FUyIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlT2Jq
ZWN0TGFiZWwoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJlbCkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTG9h
ZFBhbGV0dGVGcm9tTW9kZWxWaWV3TWF0cml4T0VTKGNvbnRleHQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5vYmplY3RMYWJlbChp
ZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmxv
YWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeCgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoT2JqZWN0TGFiZWwsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBu
YW1lLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShMb2FkUGFsZXR0ZUZy
b21Nb2RlbFZpZXdNYXRyaXhPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0TGFiZWxLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCkKLXsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xPYmplY3RMYWJlbEtI
UiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGlkZW50aWZpZXIgPSAlcywgR0x1
aW50IG5hbWUgPSAldSwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgIgotICAgICAgICAgICJH
TGNoYXIgKmxhYmVsID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok9iamVjdElkZW50aWZpZXIsIGlkZW50aWZp
ZXIpLCBuYW1lLCBsZW5ndGgsCi0gICAgICAgICAgKHVpbnRwdHJfdClsYWJlbCk7Cit2b2lkIEdM
X0FQSUVOVFJZIExvZ2ljT3BDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG9w
Y29kZSkKK3sKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKKyAgICBFVkVOVCgiZ2xMb2dpY09wIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIG9w
Y29kZSA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpMb2dpY09wLCBvcGNvZGUpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU9iamVjdExhYmVsS0hSKGNvbnRleHQsIGlk
ZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpKTsKKyAgICAgICAgTG9naWNhbE9wZXJhdGlv
biBvcGNvZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TG9naWNhbE9w
ZXJhdGlvbj4ob3Bjb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlTG9naWNPcChjb250ZXh0LCBvcGNvZGVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5vYmplY3RMYWJlbChpZGVu
dGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmxvZ2lj
T3Aob3Bjb2RlUGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE9iamVj
dExhYmVsS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3Ro
LCBsYWJlbCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTG9naWNPcCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIG9wY29kZVBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIE9iamVj
dFB0ckxhYmVsQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwp
Cit2b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2VzcykKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xPYmpl
Y3RQdHJMYWJlbCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0g
MHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3Qg
R0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksICh1aW50cHRyX3QpcHRyLCBsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5U
KCJnbE1hcEJ1ZmZlck9FUyIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xl
bnVtIGFjY2VzcyA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksCisgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkJ1ZmZlckFjY2Vzc0FSQiwgYWNjZXNzKSk7CiAKKyAgICB2
b2lkICpyZXR1cm5WYWx1ZTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVPYmplY3RQ
dHJMYWJlbChjb250ZXh0LCBwdHIsIGxlbmd0aCwgbGFiZWwpKTsKKyAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWFwQnVmZmVyT0VTKGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgYWNjZXNzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+b2JqZWN0UHRyTGFiZWwocHRyLCBsZW5ndGgsIGxhYmVs
KTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+bWFwQnVmZmVyKHRhcmdldFBh
Y2tlZCwgYWNjZXNzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE9iamVjdFB0
ckxhYmVsLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRS
ZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJPRVMsIHZvaWQgKj4oKTsKKyAgICAgICAg
fQorICAgICAgICBBTkdMRV9DQVBUVVJFKE1hcEJ1ZmZlck9FUywgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgYWNjZXNzLCByZXR1cm5WYWx1ZSk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5
UG9pbnQ6Ok1hcEJ1ZmZlck9FUywgdm9pZCAqPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWxLSFJDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCkKK3ZvaWQgKkdM
X0FQSUVOVFJZIE1hcEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIg
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaXB0ciBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJpdGZpZWxkIGFjY2VzcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xPYmplY3RQdHJMYWJlbEtI
UiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0gMHglMDE2IiBQ
Ukl4UFRSCi0gICAgICAgICAgIiwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICps
YWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksICh1aW50
cHRyX3QpcHRyLCBsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOworICAgIEVWRU5UKCJnbE1hcEJ1
ZmZlclJhbmdlIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMaW50cHRyIG9mZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0gJWxsdSwgIgorICAg
ICAgICAgICJHTGJpdGZpZWxkIGFjY2VzcyA9ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIsIHRhcmdldCksCisg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxlbmd0aCksCisgICAgICAgICAgR0xiaXRmaWVsZFRv
U3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJBY2Nlc3NNYXNrLCBhY2Nlc3MpLmNfc3RyKCkpOwog
CisgICAgdm9pZCAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlT2JqZWN0UHRyTGFiZWxLSFIo
Y29udGV4dCwgcHRyLCBsZW5ndGgsIGxhYmVsKSk7CisgICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFy
Z2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRp
bmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgb2Zmc2V0LCBs
ZW5ndGgsIGFjY2VzcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPm9iamVjdFB0ckxhYmVsKHB0ciwgbGVuZ3RoLCBsYWJlbCk7Cisg
ICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldFBh
Y2tlZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShPYmplY3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHB0ciwgbGVu
Z3RoLCBsYWJlbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
VmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2Us
IHZvaWQgKj4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKE1hcEJ1ZmZlclJh
bmdlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBvZmZzZXQsIGxlbmd0aCwg
YWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6TWFwQnVmZmVyUmFuZ2UsIHZvaWQgKj4oKTsKICAgICB9CisgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIE9ydGhvZkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCByLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCBuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCBmKQordm9pZCAqR0xfQVBJRU5UUlkgTWFwQnVmZmVyUmFuZ2VFWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0Zmll
bGQgYWNjZXNzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29u
dGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbE9ydGhvZiIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xmbG9hdCBsID0gJWYsIEdMZmxvYXQgciA9ICVmLCBHTGZsb2F0IGIgPSAlZiwgR0xm
bG9hdCB0ID0gJWYsIEdMZmxvYXQgbiAiCi0gICAgICAgICAgIj0gJWYsIEdMZmxvYXQgZiA9ICVm
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGwsIHIsIGIsIHQsIG4sIGYpOworICAgIEVWRU5U
KCJnbE1hcEJ1ZmZlclJhbmdlRVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMaW50cHRyIG9mZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgbGVuZ3RoID0g
JWxsdSwgIgorICAgICAgICAgICJHTGJpdGZpZWxkIGFjY2VzcyA9ICVzIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJUYXJnZXRBUkIs
IHRhcmdldCksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZz
ZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGxlbmd0aCksCisgICAgICAgICAg
R0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpCdWZmZXJBY2Nlc3NNYXNrLCBhY2Nlc3Mp
LmNfc3RyKCkpOwogCisgICAgdm9pZCAqcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVPcnRob2YoY29udGV4dCwgbCwg
ciwgYiwgdCwgbiwgZikpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
ICAgICAgVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9m
ZnNldCwgbGVuZ3RoLCBhY2Nlc3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5vcnRob2YobCwgciwgYiwgdCwgbiwgZik7CisgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldFBhY2tl
ZCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShPcnRob2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpNYXBCdWZmZXJSYW5nZUVYVCwgdm9pZCAqPigpOwor
ICAgICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTWFwQnVmZmVyUmFuZ2VFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MsCisg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpNYXBCdWZmZXJSYW5nZUVYVCwgdm9pZCAqPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgT3J0aG94Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIGIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZpeGVkIG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZpeGVkIGYpCit2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFsZkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbE9ydGhveCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhl
ZCBsID0gMHglWCwgR0xmaXhlZCByID0gMHglWCwgR0xmaXhlZCBiID0gMHglWCwgR0xmaXhlZCB0
ID0gMHglWCwgIgotICAgICAgICAgICJHTGZpeGVkIG4gPSAweCVYLCBHTGZpeGVkIGYgPSAweCVY
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGwsIHIsIGIsIHQsIG4sIGYpOworICAgIEVWRU5U
KCJnbE1hdGVyaWFsZiIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdGVyaWFsRmFjZSwgZmFjZSksCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdGVyaWFsUGFyYW1ldGVyLCBwbmFtZSks
IHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8IFZhbGlkYXRlT3J0aG94KGNvbnRleHQsIGwsIHIsIGIsIHQsIG4sIGYpKTsKKyAgICAgICAg
TWF0ZXJpYWxQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8TWF0ZXJpYWxQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdGVyaWFsZihjb250ZXh0LCBmYWNl
LCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5vcnRob3gobCwgciwgYiwgdCwgbiwgZik7CisgICAg
ICAgICAgICBjb250ZXh0LT5tYXRlcmlhbGYoZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKE9ydGhveCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGwsIHIsIGIsIHQsIG4sIGYpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdGVyaWFsZiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFBhdGNoUGFyYW1ldGVyaUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBN
YXRlcmlhbGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xQYXRjaFBhcmFtZXRlcmkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xp
bnQgdmFsdWUgPSAlZCIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6UGF0Y2hQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHZhbHVlKTsKKyAgICBFVkVO
VCgKKyAgICAgICAgImdsTWF0ZXJpYWxmdiIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSBmYWNlID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgPSAw
eCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1hdGVyaWFsRmFjZSwgZmFjZSksCisgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0
cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQYXRjaFBh
cmFtZXRlcmkoY29udGV4dCwgcG5hbWUsIHZhbHVlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1hdGVyaWFsZnYoY29udGV4dCwgZmFjZSwgcG5h
bWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnBhdGNoUGFyYW1ldGVyaShwbmFtZSwgdmFsdWUpOworICAg
ICAgICAgICAgY29udGV4dC0+bWF0ZXJpYWxmdihmYWNlLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGNoUGFyYW1ldGVyaSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTWF0
ZXJpYWxmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbXMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2b2lkIEdMX0FQSUVOVFJZIE1hdGVyaWFseENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBH
TGZpeGVkIHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2siLCAi
Y29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBFVkVOVCgiZ2xNYXRlcmlhbHgiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhl
ZCBwYXJhbSA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6Ok1hdGVyaWFsRmFjZSwgZmFjZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6Ok1hdGVyaWFsUGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUGF1
c2VUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0KSk7CisgICAgICAgIE1hdGVyaWFsUGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1hdGVyaWFsUGFy
YW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlhbHgoY29udGV4dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBh
cmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgY29udGV4dC0+
bWF0ZXJpYWx4KGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShQYXVzZVRyYW5zZm9ybUZlZWRiYWNrLCBpc0NhbGxWYWxpZCwgY29udGV4
dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTWF0ZXJpYWx4LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgZmFjZSwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgUGl4ZWxTdG9yZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgTWF0ZXJpYWx4dkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZpeGVkICpwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQaXhlbFN0b3JlaSIsICJjb250ZXh0
ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVkIiwgQ0lEKGNvbnRleHQp
LAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFN0b3JlUGFyYW1l
dGVyLCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgiZ2xNYXRlcmlhbHh2IiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xmaXhlZCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlhbEZh
Y2UsIGZhY2UpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNYXRlcmlh
bFBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgTWF0ZXJpYWxQYXJhbWV0
ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWF0ZXJpYWxQ
YXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVBpeGVsU3RvcmVpKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRlcmlh
bHh2KGNvbnRleHQsIGZhY2UsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBpeGVsU3RvcmVpKHBu
YW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT5tYXRlcmlhbHh2KGZhY2UsIHBuYW1l
UGFja2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQaXhlbFN0
b3JlaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoTWF0ZXJpYWx4diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIHBuYW1lUGFj
a2VkLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFyYW1ldGVy
ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pCit2b2lkIEdMX0FQSUVOVFJZIE1hdHJpeEluZGV4UG9pbnRlck9FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVy
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFBvaW50UGFyYW1ldGVyZiIsICJjb250ZXh0ID0gJWQsIEdMZW51
bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCBwYXJh
bSk7CisgICAgRVZFTlQoImdsTWF0cml4SW5kZXhQb2ludGVyT0VTIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgc3Ry
aWRlID0gJWQsIGNvbnN0IHZvaWQgIgorICAgICAgICAgICIqcG9pbnRlciA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNpemUsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHR5cGUpLCBzdHJpZGUsCisgICAgICAgICAgKHVpbnRw
dHJfdClwb2ludGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQb2ludFBhcmFt
ZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0
ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVQb2ludFBhcmFtZXRlcmYoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZU1hdHJpeElu
ZGV4UG9pbnRlck9FUyhjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
b2ludFBhcmFtZXRlcmYocG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQt
Pm1hdHJpeEluZGV4UG9pbnRlcihzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRQYXJhbWV0ZXJmLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXRy
aXhJbmRleFBvaW50ZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJp
ZGUsIHBvaW50ZXIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRl
cmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xm
bG9hdCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBNYXRyaXhNb2RlQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtb2RlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBvaW50UGFyYW1l
dGVyZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25z
dCBHTGZsb2F0ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSks
ICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xNYXRyaXhNb2RlIiwgImNvbnRleHQg
PSAlZCwgR0xlbnVtIG1vZGUgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6TWF0cml4TW9kZSwgbW9kZSkpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZnYoY29udGV4dCwg
cG5hbWVQYWNrZWQsIHBhcmFtcykpOworICAgICAgICBNYXRyaXhUeXBlIG1vZGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxNYXRyaXhUeXBlPihtb2RlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0cml4TW9kZShj
b250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cG9pbnRQYXJhbWV0ZXJmdihwbmFtZVBhY2tlZCwgcGFy
YW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm1hdHJpeE1vZGUobW9kZVBhY2tlZCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQb2ludFBhcmFtZXRlcmZ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
TWF0cml4TW9kZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBQb2ludFBhcmFtZXRlcnhDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBN
YXhTaGFkZXJDb21waWxlclRocmVhZHNLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGNvdW50KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBvaW50UGFyYW1ldGVyeCIsICJjb250ZXh0
ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkIHBhcmFtID0gMHglWCIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgiZ2xNYXhTaGFkZXJDb21waWxlclRocmVhZHNL
SFIiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgY291bnQgPSAldSIsIENJRChjb250ZXh0KSwgY291
bnQpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1l
UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQb2ludFBhcmFtZXRlcj4ocG5hbWUp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyeChjb250ZXh0LCBw
bmFtZVBhY2tlZCwgcGFyYW0pKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTWF4U2hhZGVyQ29tcGlsZXJUaHJlYWRzS0hSKGNvbnRleHQsIGNvdW50
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cG9pbnRQYXJhbWV0ZXJ4KHBuYW1lUGFja2VkLCBwYXJhbSk7CisgICAgICAgICAgICBj
b250ZXh0LT5tYXhTaGFkZXJDb21waWxlclRocmVhZHMoY291bnQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRQYXJhbWV0ZXJ4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cG5hbWVQYWNrZWQsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShNYXhTaGFkZXJDb21w
aWxlclRocmVhZHNLSFIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFBvaW50UGFyYW1ldGVyeHZDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCit2b2lkIEdMX0FQ
SUVOVFJZIE1lbW9yeUJhcnJpZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xiaXRm
aWVsZCBiYXJyaWVycykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQb2ludFBhcmFtZXRlcnh2IiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFy
YW1zID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXBh
cmFtcyk7CisgICAgRVZFTlQoImdsTWVtb3J5QmFycmllciIsICJjb250ZXh0ID0gJWQsIEdMYml0
ZmllbGQgYmFycmllcnMgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGJpdGZpZWxk
VG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1lbW9yeUJhcnJpZXJNYXNrLCBiYXJyaWVycykuY19zdHIo
KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQ
YWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihwbmFtZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQ
YXJhbWV0ZXJ4dihjb250ZXh0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU1lbW9yeUJhcnJpZXIoY29udGV4dCwgYmFy
cmllcnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5wb2ludFBhcmFtZXRlcnh2KHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAg
ICAgICAgY29udGV4dC0+bWVtb3J5QmFycmllcihiYXJyaWVycyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQb2ludFBhcmFtZXRlcnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTWVtb3J5QmFycmll
ciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJhcnJpZXJzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgUG9pbnRTaXplQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQg
c2l6ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgTWVtb3J5QmFycmllckJ5UmVnaW9uQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMYml0ZmllbGQgYmFycmllcnMpCiB7CiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImds
UG9pbnRTaXplIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBzaXplID0gJWYiLCBDSUQoY29udGV4
dCksIHNpemUpOworICAgIEVWRU5UKCJnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbiIsICJjb250ZXh0
ID0gJWQsIEdMYml0ZmllbGQgYmFycmllcnMgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGJpdGZpZWxkVG9TdHJpbmcoR0xlbnVtR3JvdXA6Ok1lbW9yeUJhcnJpZXJNYXNrLCBiYXJy
aWVycykuY19zdHIoKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50U2l6ZShjb250ZXh0LCBzaXplKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNZW1vcnlCYXJy
aWVyQnlSZWdpb24oY29udGV4dCwgYmFycmllcnMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wb2ludFNpemUoc2l6ZSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5tZW1vcnlCYXJyaWVyQnlSZWdpb24oYmFycmllcnMpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRTaXplLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgc2l6ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTWVtb3J5QmFycmllckJ5UmVnaW9uLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgYmFycmllcnMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBQb2ludFNpemVQb2ludGVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgTWVtb3J5T2JqZWN0
UGFyYW1ldGVyaXZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9y
eU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KAotICAgICAgICAiZ2xQb2ludFNpemVQb2ludGVyT0VTIiwKLSAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3Qgdm9pZCAqcG9p
bnRlciA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0eXBlKSwgc3RyaWRl
LCAodWludHB0cl90KXBvaW50ZXIpOworICAgIEVWRU5UKCJnbE1lbW9yeU9iamVjdFBhcmFtZXRl
cml2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5T2JqZWN0ID0g
JXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gIgorICAgICAgICAg
ICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBtZW1vcnlPYmpl
Y3QsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpNZW1vcnlPYmplY3RQYXJhbWV0ZXJOYW1l
LCBwbmFtZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVQb2ludFNpemVQb2ludGVyT0VTKGNvbnRleHQsIHR5cGVQYWNr
ZWQsIHN0cmlkZSwgcG9pbnRlcikpOworICAgICAgICBNZW1vcnlPYmplY3RJRCBtZW1vcnlPYmpl
Y3RQYWNrZWQgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeU9iamVjdCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBW
YWxpZGF0ZU1lbW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKGNvbnRleHQsIG1lbW9yeU9iamVjdFBh
Y2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvaW50U2l6ZVBvaW50ZXIodHlwZVBhY2tlZCwgc3Ry
aWRlLCBwb2ludGVyKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm1lbW9yeU9iamVjdFBhcmFtZXRl
cml2KG1lbW9yeU9iamVjdFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQb2ludFNpemVQb2ludGVyT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShN
ZW1vcnlPYmplY3RQYXJhbWV0ZXJpdkVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1lbW9yeU9i
amVjdFBhY2tlZCwgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9pbnRTaXpleENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGZpeGVkIHNpemUpCit2b2lkIEdMX0FQSUVOVFJZIE1pblNhbXBsZVNoYWRpbmdD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCB2YWx1ZSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xQb2ludFNpemV4IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBzaXplID0gMHglWCIsIENJ
RChjb250ZXh0KSwgc2l6ZSk7CisgICAgRVZFTlQoImdsTWluU2FtcGxlU2hhZGluZyIsICJjb250
ZXh0ID0gJWQsIEdMZmxvYXQgdmFsdWUgPSAlZiIsIENJRChjb250ZXh0KSwgdmFsdWUpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQ
b2ludFNpemV4KGNvbnRleHQsIHNpemUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlTWluU2FtcGxlU2hhZGluZyhjb250ZXh0LCB2YWx1ZSkpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvaW50
U2l6ZXgoc2l6ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5taW5TYW1wbGVTaGFkaW5nKHZhbHVl
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50U2l6ZXgsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBzaXplKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShNaW5TYW1wbGVTaGFk
aW5nLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBQb2x5Z29uT2Zmc2V0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxv
YXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKQordm9pZCBHTF9BUElFTlRSWSBNdWx0TWF0cml4ZkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBHTGZsb2F0ICptKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFBvbHlnb25PZmZzZXQiLCAiY29udGV4dCA9ICVkLCBHTGZsb2F0IGZhY3RvciA9ICVm
LCBHTGZsb2F0IHVuaXRzID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgZmFjdG9yLCB1
bml0cyk7CisgICAgRVZFTlQoImdsTXVsdE1hdHJpeGYiLCAiY29udGV4dCA9ICVkLCBjb25zdCBH
TGZsb2F0ICptID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAg
KHVpbnRwdHJfdCltKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvbHlnb25PZmZzZXQoY29udGV4dCwgZmFj
dG9yLCB1bml0cykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVNdWx0TWF0cml4Zihjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRz
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPm11bHRNYXRyaXhmKG0pOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUG9seWdvbk9mZnNldCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZh
Y3RvciwgdW5pdHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKE11bHRNYXRyaXhmLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBvbHlnb25P
ZmZzZXR4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZml4ZWQgZmFjdG9yLCBHTGZp
eGVkIHVuaXRzKQordm9pZCBHTF9BUElFTlRSWSBNdWx0TWF0cml4eENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBjb25zdCBHTGZpeGVkICptKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBvbHlnb25P
ZmZzZXR4IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBmYWN0b3IgPSAweCVYLCBHTGZpeGVkIHVu
aXRzID0gMHglWCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBmYWN0b3IsIHVuaXRzKTsKKyAg
ICBFVkVOVCgiZ2xNdWx0TWF0cml4eCIsICJjb250ZXh0ID0gJWQsIGNvbnN0IEdMZml4ZWQgKm0g
PSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICAodWludHB0cl90
KW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlUG9seWdvbk9mZnNldHgoY29udGV4dCwgZmFjdG9yLCB1bml0
cykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNdWx0TWF0
cml4eChjb250ZXh0LCBtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cG9seWdvbk9mZnNldHgoZmFjdG9yLCB1bml0cyk7CisgICAg
ICAgICAgICBjb250ZXh0LT5tdWx0TWF0cml4eChtKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFBvbHlnb25PZmZzZXR4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjdG9yLCB1
bml0cyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTXVsdE1hdHJpeHgsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9wRGVidWdHcm91cENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQordm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdF
bGVtZW50c0Jhc2VWZXJ0ZXhFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xzaXplaSAqY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmNvbnN0ICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqYmFzZXZlcnRleCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQb3BEZWJ1Z0dyb3VwIiwg
ImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsTXVsdGlEcmF3RWxl
bWVudHNCYXNlVmVydGV4RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9k
ZSA9ICVzLCBjb25zdCBHTHNpemVpICpjb3VudCA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAg
ICIsIEdMZW51bSB0eXBlID0gJXMsIGNvbnN0IHZvaWQgKmNvbnN0KmluZGljZXMgPSAweCUwMTYi
IFBSSXhQVFIKKyAgICAgICAgICAiLCBHTHNpemVpIHByaW1jb3VudCA9ICVkLCBjb25zdCBHTGlu
dCAqYmFzZXZlcnRleCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcmltaXRpdmVUeXBlLCBtb2RlKSwgKHVp
bnRwdHJfdCljb3VudCwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RHJh
d0VsZW1lbnRzVHlwZSwgdHlwZSksICh1aW50cHRyX3QpaW5kaWNlcywgcHJpbWNvdW50LAorICAg
ICAgICAgICh1aW50cHRyX3QpYmFzZXZlcnRleCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcERlYnVnR3JvdXAoY29udGV4dCkp
OworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJhd0VsZW1l
bnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJh
d0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBt
b2RlUGFja2VkLCBjb3VudCwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBwcmltY291bnQsIGJh
c2V2ZXJ0ZXgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wb3BEZWJ1Z0dyb3VwKCk7CisgICAgICAgICAgICBjb250ZXh0LT5tdWx0
aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgobW9kZVBhY2tlZCwgY291bnQsIHR5cGVQYWNrZWQsIGlu
ZGljZXMsIHByaW1jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNldmVydGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFBvcERlYnVnR3JvdXAsIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShNdWx0aURyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBtb2RlUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlUGFja2VkLCBp
bmRpY2VzLCBwcmltY291bnQsIGJhc2V2ZXJ0ZXgpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBQb3BEZWJ1Z0dyb3VwS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCit2b2lk
IEdMX0FQSUVOVFJZIE11bHRpVGV4Q29vcmQ0ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgcSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQb3BEZWJ1Z0dyb3VwS0hSIiwgImNvbnRleHQgPSAlZCIs
IENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsTXVsdGlUZXhDb29yZDRmIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZmxvYXQgcyA9ICVmLCBHTGZs
b2F0IHQgPSAlZiwgR0xmbG9hdCByID0gJWYsICIKKyAgICAgICAgICAiR0xmbG9hdCBxID0gJWYi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVVbml0LCB0YXJnZXQpLCBzLCB0LCByLCBxKTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9wRGVidWdHcm91cEtIUihjb250
ZXh0KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVNdWx0aVRleENvb3JkNGYoY29udGV4dCwgdGFyZ2V0LCBzLCB0LCByLCBxKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cG9wRGVidWdHcm91cCgpOworICAgICAgICAgICAgY29udGV4dC0+bXVsdGlUZXhDb29yZDRmKHRh
cmdldCwgcywgdCwgciwgcSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQb3BE
ZWJ1Z0dyb3VwS0hSLCBpc0NhbGxWYWxpZCwgY29udGV4dCk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoTXVsdGlUZXhDb29yZDRmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBzLCB0LCBy
LCBxKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUG9wR3JvdXBNYXJrZXJFWFRDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKK3ZvaWQgR0xfQVBJRU5UUlkgTXVsdGlUZXhDb29y
ZDR4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgcSkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICAvLyBEb24ndCBy
dW4gdGhlIEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRz
LgotICAgIC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNl
dCBieSB0aGUgY2FsbGVyLgotICAgIC8vIEVWRU5UKCJnbFBvcEdyb3VwTWFya2VyRVhUIiwgImNv
bnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CisgICAgRVZFTlQoImdsTXVsdGlUZXhDb29yZDR4
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGV4dHVyZSA9ICVzLCBHTGZpeGVk
IHMgPSAweCVYLCBHTGZpeGVkIHQgPSAweCVYLCBHTGZpeGVkIHIgPSAiCisgICAgICAgICAgIjB4
JVgsIEdMZml4ZWQgcSA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVVbml0LCB0ZXh0dXJlKSwgcywgdCwgciwgcSk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVBvcEdyb3VwTWFya2VyRVhUKGNvbnRleHQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU11bHRpVGV4Q29vcmQ0eChjb250ZXh0LCB0
ZXh0dXJlLCBzLCB0LCByLCBxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cG9wR3JvdXBNYXJrZXIoKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPm11bHRpVGV4Q29vcmQ0eCh0ZXh0dXJlLCBzLCB0LCByLCBxKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFBvcEdyb3VwTWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29u
dGV4dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoTXVsdGlUZXhDb29yZDR4LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGV4dHVyZSwgcywgdCwgciwgcSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIFBvcE1hdHJpeENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQordm9pZCBHTF9B
UElFTlRSWSBOb3JtYWwzZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IG54
LCBHTGZsb2F0IG55LCBHTGZsb2F0IG56KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBvcE1hdHJpeCIsICJj
b250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOworICAgIEVWRU5UKCJnbE5vcm1hbDNmIiwgImNv
bnRleHQgPSAlZCwgR0xmbG9hdCBueCA9ICVmLCBHTGZsb2F0IG55ID0gJWYsIEdMZmxvYXQgbnog
PSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBueCwgbnksIG56KTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9wTWF0cml4
KGNvbnRleHQpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Tm9ybWFsM2YoY29udGV4dCwgbngsIG55LCBueikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBvcE1hdHJpeCgpOworICAgICAgICAg
ICAgY29udGV4dC0+bm9ybWFsM2YobngsIG55LCBueik7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShQb3BNYXRyaXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShOb3JtYWwzZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG54LCBueSwgbnopOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcmltaXRpdmVCb3VuZGluZ0JveENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IG1pblgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWluWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5aLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1pblcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
bWF4WCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBtYXhZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IG1heFosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgbWF4VykKK3ZvaWQgR0xfQVBJRU5UUlkgTm9ybWFsM3hD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCBueCwgR0xmaXhlZCBueSwgR0xm
aXhlZCBueikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcmltaXRpdmVCb3VuZGluZ0JveCIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBtaW5YID0gJWYsIEdMZmxvYXQgbWluWSA9ICVmLCBH
TGZsb2F0IG1pblogPSAlZiwgR0xmbG9hdCBtaW5XID0gIgotICAgICAgICAgICIlZiwgR0xmbG9h
dCBtYXhYID0gJWYsIEdMZmxvYXQgbWF4WSA9ICVmLCBHTGZsb2F0IG1heFogPSAlZiwgR0xmbG9h
dCBtYXhXID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbWluWCwgbWluWSwgbWluWiwg
bWluVywgbWF4WCwgbWF4WSwgbWF4WiwgbWF4Vyk7CisgICAgRVZFTlQoImdsTm9ybWFsM3giLCAi
Y29udGV4dCA9ICVkLCBHTGZpeGVkIG54ID0gMHglWCwgR0xmaXhlZCBueSA9IDB4JVgsIEdMZml4
ZWQgbnogPSAweCVYIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIG54LCBueSwgbnopOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcmltaXRpdmVCb3VuZGluZ0JveChjb250ZXh0LCBt
aW5YLCBtaW5ZLCBtaW5aLCBtaW5XLCBtYXhYLCBtYXhZLCBtYXhaLCBtYXhXKSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU5vcm1hbDN4KGNvbnRleHQsIG54
LCBueSwgbnopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcmltaXRpdmVCb3VuZGluZ0JveChtaW5YLCBtaW5ZLCBtaW5aLCBtaW5X
LCBtYXhYLCBtYXhZLCBtYXhaLCBtYXhXKTsKKyAgICAgICAgICAgIGNvbnRleHQtPm5vcm1hbDN4
KG54LCBueSwgbnopOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJpbWl0aXZl
Qm91bmRpbmdCb3gsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtaW5YLCBtaW5ZLCBtaW5aLCBtaW5X
LCBtYXhYLAotICAgICAgICAgICAgICAgICAgICAgIG1heFksIG1heFosIG1heFcpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKE5vcm1hbDN4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbngsIG55LCBu
eik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1CaW5hcnlDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYmluYXJ5Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCkKK3ZvaWQgR0xfQVBJRU5U
UlkgTm9ybWFsUG9pbnRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbUJpbmFyeSIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xlbnVtIGJpbmFyeUZvcm1hdCA9ICVzLCBjb25zdCB2
b2lkICpiaW5hcnkgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGxl
bmd0aCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGJpbmFyeUZvcm1hdCksCi0gICAgICAgICAg
KHVpbnRwdHJfdCliaW5hcnksIGxlbmd0aCk7CisgICAgRVZFTlQoCisgICAgICAgICJnbE5vcm1h
bFBvaW50ZXIiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNp
emVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICpwb2ludGVyID0gMHglMDE2IiBQUkl4UFRSCisg
ICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpOb3JtYWxQb2ludGVyVHlwZSwgdHlwZSksIHN0cmlkZSwKKyAgICAgICAgKHVpbnRwdHJf
dClwb2ludGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
YmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOworICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRy
aWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlTm9ybWFsUG9pbnRlcihjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBv
aW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtQmluYXJ5KHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmlu
YXJ5LCBsZW5ndGgpOworICAgICAgICAgICAgY29udGV4dC0+bm9ybWFsUG9pbnRlcih0eXBlUGFj
a2VkLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
UHJvZ3JhbUJpbmFyeSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJpbmFy
eUZvcm1hdCwgYmluYXJ5LAotICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoTm9ybWFsUG9pbnRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHR5cGVQ
YWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Rm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmJpbmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZW5ndGgpCit2b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVsQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbUJp
bmFyeU9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xlbnVtIGJpbmFyeUZvcm1hdCA9ICVzLCBjb25zdCB2b2lkICpiaW5hcnkgPSAiCi0gICAgICAg
ICAgIjB4JTAxNiIgUFJJeFBUUiAiLCBHTGludCBsZW5ndGggPSAlZCIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdy
b3VwLCBiaW5hcnlGb3JtYXQpLAotICAgICAgICAgICh1aW50cHRyX3QpYmluYXJ5LCBsZW5ndGgp
OworICAgIEVWRU5UKCJnbE9iamVjdExhYmVsIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gaWRlbnRpZmllciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGxlbmd0aCA9
ICVkLCBjb25zdCAiCisgICAgICAgICAgIkdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
T2JqZWN0SWRlbnRpZmllciwgaWRlbnRpZmllciksIG5hbWUsIGxlbmd0aCwKKyAgICAgICAgICAo
dWludHB0cl90KWxhYmVsKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1CaW5hcnlPRVMoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVPYmplY3RMYWJlbChjb250ZXh0
LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbUJpbmFyeShwcm9n
cmFtUGFja2VkLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPm9iamVjdExhYmVsKGlkZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbUJpbmFyeU9FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LAotICAgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0TGFi
ZWwsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVs
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVBhcmFtZXRlcmlDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZ
IE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hh
ciAqbGFiZWwpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVBhcmFtZXRlcmkiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBH
TGludCB2YWx1ZSA9ICVkIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHByb2dyYW0sIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQcm9ncmFtUGFyYW1ldGVyUE5hbWUsIHBuYW1lKSwgdmFs
dWUpOworICAgIEVWRU5UKCJnbE9iamVjdExhYmVsS0hSIiwKKyAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gaWRlbnRpZmllciA9ICVzLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGxl
bmd0aCA9ICVkLCBjb25zdCAiCisgICAgICAgICAgIkdMY2hhciAqbGFiZWwgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6T2JqZWN0SWRlbnRpZmllciwgaWRlbnRpZmllciksIG5hbWUsIGxlbmd0aCwKKyAgICAg
ICAgICAodWludHB0cl90KWxhYmVsKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtUGFyYW1ldGVyaShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgdmFs
dWUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlT2JqZWN0TGFiZWxLSFIoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgbGVuZ3RoLCBsYWJl
bCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1QYXJhbWV0ZXJpKHByb2dyYW1QYWNrZWQsIHBuYW1lLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5vYmplY3RMYWJlbChpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgs
IGxhYmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1QYXJhbWV0
ZXJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShPYmplY3RMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIGlkZW50aWZpZXIsIG5hbWUsIGxlbmd0aCwgbGFiZWwpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCB2MCkKK3ZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWxDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCkKIHsKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQ
cm9ncmFtVW5pZm9ybTFmIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYiLCBDSUQoY29udGV4
dCksCi0gICAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIHYwKTsKKyAgICBFVkVOVCgiZ2xPYmpl
Y3RQdHJMYWJlbCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgY29uc3Qgdm9pZCAqcHRyID0g
MHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiwgR0xzaXplaSBsZW5ndGggPSAlZCwgY29uc3Qg
R0xjaGFyICpsYWJlbCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksICh1aW50cHRyX3QpcHRyLCBsZW5ndGgsICh1aW50cHRyX3QpbGFiZWwpOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWYoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVPYmplY3RQdHJMYWJlbChjb250ZXh0LCBwdHIs
IGxlbmd0aCwgbGFiZWwpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFmKHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT5vYmplY3RQdHJMYWJlbChwdHIsIGxlbmd0
aCwgbGFiZWwpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0xZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT2JqZWN0UHRyTGFiZWwsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwdHIsIGxlbmd0aCwgbGFiZWwpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybTFmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBPYmplY3RQdHJMYWJlbEtI
UkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVs
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMWZ2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIGNvbnN0ICIKLSAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbE9iamVjdFB0ckxhYmVsS0hS
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBjb25zdCB2b2lkICpwdHIgPSAweCUwMTYiIFBS
SXhQVFIKKyAgICAgICAgICAiLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKmxh
YmVsID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRw
dHJfdClwdHIsIGxlbmd0aCwgKHVpbnRwdHJfdClsYWJlbCk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFmdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0
ciwgbGVuZ3RoLCBsYWJlbCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWZ2KHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+b2JqZWN0UHRyTGFi
ZWwocHRyLCBsZW5ndGgsIGxhYmVsKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFByb2dyYW1Vbmlmb3JtMWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwg
bG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShPYmplY3RQdHJMYWJlbEtIUiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHB0
ciwgbGVuZ3RoLCBsYWJlbCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtMWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2MCkKK3ZvaWQg
R0xfQVBJRU5UUlkgT3J0aG9mQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGYpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0xaSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCIs
IENJRChjb250ZXh0KSwKLSAgICAgICAgICBwcm9ncmFtLCBsb2NhdGlvbiwgdjApOworICAgIEVW
RU5UKCJnbE9ydGhvZiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBsID0gJWYs
IEdMZmxvYXQgciA9ICVmLCBHTGZsb2F0IGIgPSAlZiwgR0xmbG9hdCB0ID0gJWYsIEdMZmxvYXQg
biAiCisgICAgICAgICAgIj0gJWYsIEdMZmxvYXQgZiA9ICVmIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIGwsIHIsIGIsIHQsIG4sIGYpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWkoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IHYwKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU9ydGhv
Zihjb250ZXh0LCBsLCByLCBiLCB0LCBuLCBmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xaShwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICAgICAgY29udGV4dC0+b3J0aG9mKGwsIHIs
IGIsIHQsIG4sIGYpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVu
aWZvcm0xaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2
MCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT3J0aG9mLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
bCwgciwgYiwgdCwgbiwgZik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtMWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBPcnRob3hDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQg
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgYiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZml4ZWQgdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZml4ZWQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZml4ZWQgZikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTFpdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGludCAiCi0gICAgICAgICAgIip2YWx1
ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsT3J0aG94
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGZpeGVkIGwgPSAweCVYLCBHTGZpeGVkIHIg
PSAweCVYLCBHTGZpeGVkIGIgPSAweCVYLCBHTGZpeGVkIHQgPSAweCVYLCAiCisgICAgICAgICAg
IkdMZml4ZWQgbiA9IDB4JVgsIEdMZml4ZWQgZiA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgbCwgciwgYiwgdCwgbiwgZik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpdihjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZU9ydGhveChjb250ZXh0LCBsLCByLCBiLCB0
LCBuLCBmKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0xaXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNv
dW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5vcnRob3gobCwgciwgYiwgdCwgbiwg
Zik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTFpdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoT3J0aG94
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbCwgciwgYiwgdCwgbiwgZik7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHYwKQordm9pZCBHTF9BUElFTlRSWSBQYXRjaFBhcmFtZXRlcmlD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTF1aSIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYw
ID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIHYwKTsK
KyAgICBFVkVOVCgiZ2xQYXRjaFBhcmFtZXRlcmkiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5h
bWUgPSAlcywgR0xpbnQgdmFsdWUgPSAlZCIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGF0Y2hQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHZhbHVl
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1
aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjApKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBhdGNoUGFyYW1ldGVy
aShjb250ZXh0LCBwbmFtZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTF1aShwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgdjApOworICAgICAgICAgICAgY29udGV4dC0+cGF0Y2hQYXJhbWV0ZXJp
KHBuYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFt
VW5pZm9ybTF1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCB2MCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUGF0Y2hQYXJhbWV0ZXJpLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcG5hbWUsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm0xdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFBhdXNlVHJhbnNm
b3JtRmVlZGJhY2tDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xQcm9ncmFtVW5pZm9ybTF1aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBw
cm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29u
c3QgIgotICAgICAgICAgICJHTHVpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90
KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrIiwgImNvbnRleHQg
PSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRl
eHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTF1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTF1aXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdXNlVHJh
bnNmb3JtRmVlZGJhY2ssIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCB2MSkKK3ZvaWQgR0xfQVBJRU5UUlkgUGl4ZWxTdG9yZWlDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgKLSAgICAgICAgImdsUHJvZ3JhbVVuaWZvcm0yZiIsCi0gICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAg
PSAlZiwgR0xmbG9hdCB2MSA9ICVmIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBs
b2NhdGlvbiwgdjAsIHYxKTsKKyAgICBFVkVOVCgiZ2xQaXhlbFN0b3JlaSIsICJjb250ZXh0ID0g
JWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVkIiwgQ0lEKGNvbnRleHQpLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFN0b3JlUGFyYW1ldGVy
LCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQ
cm9ncmFtVW5pZm9ybTJmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVBpeGVsU3RvcmVpKGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
MmYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0
LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoUHJvZ3JhbVVuaWZvcm0yZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBpeGVsU3RvcmVp
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUG9p
bnRQYXJhbWV0ZXJmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTJmdiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAiCi0gICAgICAgICAgIkdMZmxvYXQgKnZh
bHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3Jh
bSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQb2lu
dFBhcmFtZXRlcmYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBw
YXJhbSA9ICVmIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0yZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LCB2YWx1ZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVQb2ludFBhcmFtZXRlcmYoY29udGV4dCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm0yZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb2ludFBhcmFtZXRlcmYocG5hbWVQYWNrZWQsIHBh
cmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQb2lu
dFBhcmFtZXRlcmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZVBhY2tlZCwgcGFyYW0pOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotUHJvZ3JhbVVuaWZvcm0yaUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50
IHYwLCBHTGludCB2MSkKK3ZvaWQgR0xfQVBJRU5UUlkgUG9pbnRQYXJhbWV0ZXJmdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFt
cykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTJpIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2
MCA9ICVkLCBHTGludCB2MSA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0s
IGxvY2F0aW9uLCB2MCwgdjEpOworICAgIEVWRU5UKCJnbFBvaW50UGFyYW1ldGVyZnYiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpw
YXJhbXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3Qp
cGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQg
cHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybTJpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpKTsKKyAgICAg
ICAgUG9pbnRQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8UG9pbnRQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvaW50UGFyYW1ldGVyZnYoY29udGV4
dCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmkocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb2ludFBhcmFtZXRl
cmZ2KHBuYW1lUGFja2VkLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoUHJvZ3JhbVVuaWZvcm0yaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50UGFyYW1ldGVy
ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0yaXZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVO
VFJZIFBvaW50UGFyYW1ldGVyeENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0g
cG5hbWUsIEdMZml4ZWQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0yaXYi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxv
Y2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQgIgotICAgICAgICAg
ICIqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJn
bFBvaW50UGFyYW1ldGVyeCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZp
eGVkIHBhcmFtID0gMHglWCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVyPihwbmFtZSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMml2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8IFZhbGlkYXRlUG9pbnRQYXJhbWV0ZXJ4KGNvbnRleHQsIHBuYW1lUGFja2VkLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMml2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+cG9pbnRQYXJhbWV0ZXJ4KHBuYW1lUGFj
a2VkLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybTJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwKLSAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUG9pbnRQYXJhbWV0ZXJ4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcG5hbWVQYWNrZWQsIHBh
cmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWlDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MSkKK3ZvaWQgR0xfQVBJ
RU5UUlkgUG9pbnRQYXJhbWV0ZXJ4dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFt
VW5pZm9ybTJ1aSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYwID0gJXUsIEdMdWludCB2MSA9ICV1IiwK
LSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEpOworICAg
IEVWRU5UKCJnbFBvaW50UGFyYW1ldGVyeHYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aShjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAgICAgIFBvaW50UGFyYW1ldGVyIHBuYW1l
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBvaW50UGFyYW1ldGVy
PihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVQb2ludFBhcmFtZXRlcnh2KGNvbnRleHQsIHBuYW1lUGFja2VkLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnBvaW50UGFyYW1ldGVyeHYocG5hbWVQYWNrZWQsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50UGFyYW1ldGVyeHYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm0ydWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFBvaW50U2l6ZUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZsb2F0IHNpemUpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsUHJvZ3JhbVVuaWZvcm0ydWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
cHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNv
bnN0ICIKLSAgICAgICAgICAiR0x1aW50ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJf
dCl2YWx1ZSk7CisgICAgRVZFTlQoImdsUG9pbnRTaXplIiwgImNvbnRleHQgPSAlZCwgR0xmbG9h
dCBzaXplID0gJWYiLCBDSUQoY29udGV4dCksIHNpemUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9
IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0y
dWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUG9pbnRTaXplKGNvbnRl
eHQsIHNpemUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJ1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb2ludFNpemUoc2l6ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTJ1aXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvaW50U2l6ZSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHNpemUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybTNmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHYxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgdjIpCit2b2lkIEdMX0FQSUVOVFJZIFBvaW50U2l6ZVBvaW50ZXJPRVNDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtM2YiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZiwg
R0xmbG9hdCB2MSA9ICIKLSAgICAgICAgICAiJWYsIEdMZmxvYXQgdjIgPSAlZiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgRVZF
TlQoCisgICAgICAgICJnbFBvaW50U2l6ZVBvaW50ZXJPRVMiLAorICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICpw
b2ludGVyID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHR5cGUpLCBzdHJp
ZGUsICh1aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNo
YWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0zZihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
djAsIHYxLCB2MikpOworICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUG9pbnRT
aXplUG9pbnRlck9FUyhjb250ZXh0LCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTNmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnBvaW50U2l6ZVBvaW50ZXIodHlwZVBhY2tlZCwgc3RyaWRlLCBw
b2ludGVyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
M2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYx
LCB2Mik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRTaXplUG9pbnRlck9FUywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVO
VFJZIFBvaW50U2l6ZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCBzaXpl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtM2Z2IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIGNvbnN0ICIKLSAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFBvaW50U2l6ZXgiLCAiY29u
dGV4dCA9ICVkLCBHTGZpeGVkIHNpemUgPSAweCVYIiwgQ0lEKGNvbnRleHQpLCBzaXplKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtM2Z2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlUG9pbnRTaXpleChjb250ZXh0LCBzaXplKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zZnYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5w
b2ludFNpemV4KHNpemUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3Jh
bVVuaWZvcm0zZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwotICAgIH0KLX0KLQotdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTNpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgdjIpCisgICAgICAgIEFOR0xFX0NBUFRVUkUoUG9pbnRTaXpleCwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHNpemUpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBQb2x5
Z29uT2Zmc2V0Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgZmFjdG9yLCBH
TGZsb2F0IHVuaXRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtM2kiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMaW50IHYwID0gJWQsIEdMaW50IHYxID0gJWQsICIKLSAgICAgICAgICAiR0xpbnQgdjIg
PSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYx
LCB2Mik7CisgICAgRVZFTlQoImdsUG9seWdvbk9mZnNldCIsICJjb250ZXh0ID0gJWQsIEdMZmxv
YXQgZmFjdG9yID0gJWYsIEdMZmxvYXQgdW5pdHMgPSAlZiIsIENJRChjb250ZXh0KSwKKyAgICAg
ICAgICBmYWN0b3IsIHVuaXRzKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTNpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwg
djEsIHYyKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0KGNvbnRleHQsIGZhY3RvciwgdW5pdHMpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybTNpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTNpLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFBvbHlnb25PZmZzZXQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmYWN0b3IsIHVu
aXRzKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUp
Cit2b2lkIEdMX0FQSUVOVFJZIFBvbHlnb25PZmZzZXR4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMZml4ZWQgZmFjdG9yLCBHTGZpeGVkIHVuaXRzKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFBy
b2dyYW1Vbmlmb3JtM2l2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdM
aW50ICIKLSAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVl
KTsKKyAgICBFVkVOVCgiZ2xQb2x5Z29uT2Zmc2V0eCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQg
ZmFjdG9yID0gMHglWCwgR0xmaXhlZCB1bml0cyA9IDB4JVgiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgZmFjdG9yLCB1bml0cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybTNpdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVBvbHlnb25PZmZzZXR4KGNvbnRleHQsIGZhY3RvciwgdW5pdHMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTNpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnBvbHlnb25PZmZzZXR4KGZhY3RvciwgdW5pdHMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zaXYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvbHlnb25PZmZzZXR4
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjdG9yLCB1bml0cyk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHYwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgdjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB2MikKK3ZvaWQgR0xfQVBJRU5UUlkgUG9wRGVidWdHcm91cENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlm
b3JtM3VpIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBH
TGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0gJXUsICIKLSAg
ICAgICAgICAiR0x1aW50IHYyID0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3Jh
bSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIEVWRU5UKCJnbFBvcERlYnVnR3JvdXAiLCAi
Y29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM3VpKGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcERlYnVnR3JvdXAoY29udGV4dCkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtM3VpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBvcERlYnVnR3JvdXAoKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM3VpLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFBvcERlYnVnR3JvdXAsIGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQ
SUVOVFJZIFBvcERlYnVnR3JvdXBLSFJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTN1aXYiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291
bnQgPSAlZCwgY29uc3QgIgotICAgICAgICAgICJHTHVpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4
UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50
LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQb3BEZWJ1Z0dyb3VwS0hSIiwgImNv
bnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwot
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTN1aXYoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwS0hSKGNvbnRl
eHQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTN1aXYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb3BEZWJ1Z0dyb3VwKCk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTN1aXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFBvcERlYnVnR3JvdXBLSFIs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm00ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHYyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgdjMpCit2b2lkIEdMX0FQSUVOVFJZIFBvcEdyb3VwTWFya2VyRVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm00ZiIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0xmbG9hdCB2MCA9ICVmLCBHTGZsb2F0IHYxID0gIgotICAgICAgICAgICIlZiwgR0xm
bG9hdCB2MiA9ICVmLCBHTGZsb2F0IHYzID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwg
cHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAvLyBEb24ndCBydW4gdGhl
IEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzLgorICAg
IC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNldCBieSB0
aGUgY2FsbGVyLgorICAgIC8vIEVWRU5UKCJnbFBvcEdyb3VwTWFya2VyRVhUIiwgImNvbnRleHQg
PSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hh
ZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVQb3BHcm91cE1hcmtlckVYVChjb250ZXh0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cHJvZ3JhbVVuaWZvcm00Zihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpOworICAgICAgICAgICAgY29udGV4dC0+cG9wR3JvdXBNYXJrZXIoKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwKLSAgICAgICAgICAgICAg
ICAgICAgICB2Myk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUG9wR3JvdXBNYXJrZXJFWFQsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm00ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUG9wTWF0cml4Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0
PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm00ZnYiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgotICAgICAgICAgICJHTGZsb2F0
ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHBy
b2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImds
UG9wTWF0cml4IiwgImNvbnRleHQgPSAlZCIsIENJRChjb250ZXh0KSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTRmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBvcE1hdHJp
eChjb250ZXh0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
IGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wb3BNYXRyaXgoKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNGZ2LCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LAotICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQb3BNYXRyaXgsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm00aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYzKQordm9pZCBH
TF9BUElFTlRSWSBQcmltaXRpdmVCb3VuZGluZ0JveENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IG1pblgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgbWluWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCBtaW5aLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1pblcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgbWF4WCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBtYXhZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IG1h
eFosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgbWF4VykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTRpIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCAiCi0gICAgICAgICAgIkdMaW50IHYyID0g
JWQsIEdMaW50IHYzID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBFVkVOVCgiZ2xQcmltaXRpdmVCb3VuZGluZ0Jv
eCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBtaW5YID0gJWYsIEdMZmxvYXQg
bWluWSA9ICVmLCBHTGZsb2F0IG1pblogPSAlZiwgR0xmbG9hdCBtaW5XID0gIgorICAgICAgICAg
ICIlZiwgR0xmbG9hdCBtYXhYID0gJWYsIEdMZmxvYXQgbWF4WSA9ICVmLCBHTGZsb2F0IG1heFog
PSAlZiwgR0xmbG9hdCBtYXhXID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbWluWCwg
bWluWSwgbWluWiwgbWluVywgbWF4WCwgbWF4WSwgbWF4WiwgbWF4Vyk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICAgICAgIFZh
bGlkYXRlUHJpbWl0aXZlQm91bmRpbmdCb3goY29udGV4dCwgbWluWCwgbWluWSwgbWluWiwgbWlu
VywgbWF4WCwgbWF4WSwgbWF4WiwgbWF4VykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGkocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBy
aW1pdGl2ZUJvdW5kaW5nQm94KG1pblgsIG1pblksIG1pblosIG1pblcsIG1heFgsIG1heFksIG1h
eFosIG1heFcpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm00aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwg
djEsIHYyLAotICAgICAgICAgICAgICAgICAgICAgIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVS
RShQcmltaXRpdmVCb3VuZGluZ0JveCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1pblgsIG1pblks
IG1pblosIG1pblcsIG1heFgsCisgICAgICAgICAgICAgICAgICAgICAgbWF4WSwgbWF4WiwgbWF4
Vyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGl2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQor
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtQmluYXJ5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBy
b2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBsZW5ndGgpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm00
aXYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQgIgotICAgICAg
ICAgICIqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5U
KCJnbFByb2dyYW1CaW5hcnkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIEdMZW51bSBiaW5hcnlGb3JtYXQgPSAlcywgY29uc3Qgdm9pZCAqYmluYXJ5ID0g
IgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiwgR0xzaXplaSBsZW5ndGggPSAlZCIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBiaW5hcnlGb3JtYXQpLAorICAgICAgICAgICh1aW50cHRyX3QpYmlu
YXJ5LCBsZW5ndGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm00
aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAg
ICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBi
aW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00aXYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtQmluYXJ5KHByb2dyYW1QYWNrZWQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1C
aW5hcnksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBiaW5hcnlGb3JtYXQs
IGJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTR1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCB2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHYxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgdjIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCB2MykKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFy
eU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmlu
YXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxlbmd0aCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTR1aSIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwg
R0x1aW50IHYwID0gJXUsIEdMdWludCB2MSA9ICV1LCAiCi0gICAgICAgICAgIkdMdWludCB2MiA9
ICV1LCBHTHVpbnQgdjMgPSAldSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIEVWRU5UKCJnbFByb2dyYW1CaW5hcnlPRVMi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMZW51bSBi
aW5hcnlGb3JtYXQgPSAlcywgY29uc3Qgdm9pZCAqYmluYXJ5ID0gIgorICAgICAgICAgICIweCUw
MTYiIFBSSXhQVFIgIiwgR0xpbnQgbGVuZ3RoID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgYmlu
YXJ5Rm9ybWF0KSwKKyAgICAgICAgICAodWludHB0cl90KWJpbmFyeSwgbGVuZ3RoKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwK
LSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICAgICAgIFZhbGlkYXRl
UHJvZ3JhbUJpbmFyeU9FUyhjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBiaW5hcnlGb3JtYXQsIGJp
bmFyeSwgbGVuZ3RoKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm00dWkocHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1CaW5hcnko
cHJvZ3JhbVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTR1aSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLAotICAgICAgICAgICAg
ICAgICAgICAgIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtQmluYXJ5T0VTLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm00dWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1QYXJhbWV0ZXJpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZhbHVl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtNHVpdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBjb25zdCAiCi0gICAgICAgICAgIkdMdWludCAqdmFsdWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFByb2dyYW1QYXJhbWV0ZXJp
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGVudW0g
cG5hbWUgPSAlcywgR0xpbnQgdmFsdWUgPSAlZCIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBw
cm9ncmFtLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UHJvZ3JhbVBhcmFtZXRlclBOYW1l
LCBwbmFtZSksIHZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNHVpdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIHBuYW1lLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVpdihwcm9ncmFtUGFja2VkLCBs
b2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1QYXJh
bWV0ZXJpKHByb2dyYW1QYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1QYXJhbWV0ZXJpLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgcG5hbWUsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0xZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjApCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkg
Y291bnQgPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bv
c2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTFmIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgcHJv
Z3JhbSwgbG9jYXRpb24sIHYwKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dyYW1J
RCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclBy
b2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRp
b24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtVW5pZm9ybTFmKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFt
VW5pZm9ybTFmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZv
cm1NYXRyaXgyeDNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2IiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCi0gICAgICAgICAgInRyYW5zcG9zZSA9ICVz
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmco
dHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZv
cm0xZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgIgorICAgICAgICAg
ICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29u
dGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNm
dihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtMWZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTFmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
TWF0cml4MngzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDJ4NGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdjApCiB7Ci0gICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyeDRmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJv
b2xlYW4gIgotICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUg
PSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBs
b2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3Qp
dmFsdWUpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMWkiLAorICAgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMaW50
IHYwID0gJWQiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIHYw
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFt
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1h
dHJpeDJ4NGZ2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm0xaShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wcm9n
cmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTFpKHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
MWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwg
djApOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDNm
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFt
VW5pZm9ybU1hdHJpeDNmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dy
YW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xl
YW4gIgotICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2Nh
dGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFs
dWUpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMWl2IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICIKKyAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hh
ZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1N
YXRyaXgzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMWl2KHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBw
cm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgdHJh
bnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0xaXYs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybTF1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2
MCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2IiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCi0gICAgICAgICAgInRyYW5zcG9zZSA9
ICVzLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAg
ICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJp
bmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVu
aWZvcm0xdWkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1IiwgQ0lEKGNvbnRleHQpLAorICAg
ICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMXVpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uUGFja2VkLCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYocHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2Vk
LCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1h
dHJpeDN4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMXVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm0xdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDRmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgot
ICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwor
ICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMXVpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBjb25zdCAiCisgICAgICAgICAgIkdMdWludCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQs
ICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTF1aXYoY29udGV4dCwgcHJvZ3Jh
bVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3Jt
TWF0cml4M3g0ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMXVpdihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZv
cm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVu
aWZvcm0yZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSkKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgotICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29u
c3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5z
cG9zZSksICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xQcm9ncmFt
VW5pZm9ybTJmIiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmLCBHTGZsb2F0IHYxID0gJWYiLAor
ICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZSwgdmFs
dWUpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtMmYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9y
bTJmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3Jh
bVVuaWZvcm0yZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICB2MSk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZ
IFByb2dyYW1Vbmlmb3JtMmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDJmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgot
ICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYi
IFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwor
ICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMmZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50
ID0gJWQsIGNvbnN0ICIKKyAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQ
VFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQs
ICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRl
clByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFNoYWRlclByb2dy
YW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRl
clByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJmdihjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0Nh
bGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm1N
YXRyaXg0eDJmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0yZnYocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3Jt
MmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkK
K1Byb2dyYW1Vbmlmb3JtMmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9
ICVkLCBHTGJvb2xlYW4gIgotICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xmbG9h
dCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBw
cm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1
aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMmkiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMaW50IHYwID0gJWQsIEdMaW50IHYxID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0
KSwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKKyAgICAgICAg
U2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9u
IGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxv
Y2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMmkoY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlm
b3JtTWF0cml4NHgzZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtMmkocHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMmks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAs
CisgICAgICAgICAgICAgICAgICAgICAgdjEpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBQdXNoRGVidWdHcm91cENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1l
c3NhZ2UpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMml2Q29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbFB1c2hEZWJ1Z0dyb3VwIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
c291cmNlID0gJXMsIEdMdWludCBpZCA9ICV1LCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25zdCBH
TGNoYXIgIgotICAgICAgICAgICIqbWVzc2FnZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAg
ICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWJ1Z1NvdXJj
ZSwgc291cmNlKSwgaWQsIGxlbmd0aCwKLSAgICAgICAgICAodWludHB0cl90KW1lc3NhZ2UpOwor
ICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtMml2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50
ID0gJWQsIGNvbnN0IEdMaW50ICIKKyAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQUkl4UFRS
ICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAo
dWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwKGNvbnRleHQsIHNvdXJjZSwgaWQs
IGxlbmd0aCwgbWVzc2FnZSkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0yaXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnB1c2hEZWJ1Z0dyb3VwKHNvdXJjZSwgaWQsIGxlbmd0
aCwgbWVzc2FnZSk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTJpdihwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFB1c2hEZWJ1Z0dyb3VwLCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
c291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9n
cmFtVW5pZm9ybTJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFB1c2hEZWJ1Z0dyb3VwS0hSQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbWVzc2FnZSkKK3ZvaWQgR0xfQVBJRU5U
UlkgUHJvZ3JhbVVuaWZvcm0ydWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgdjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCB2MSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQdXNoRGVidWdHcm91cEtIUiIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHNvdXJjZSA9ICVzLCBHTHVpbnQgaWQgPSAldSwgR0xz
aXplaSBsZW5ndGggPSAlZCwgY29uc3QgR0xjaGFyICIKLSAgICAgICAgICAiKm1lc3NhZ2UgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVidWdTb3VyY2UsIHNvdXJjZSksIGlkLCBsZW5ndGgsCi0gICAgICAg
ICAgKHVpbnRwdHJfdCltZXNzYWdlKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTJ1aSIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0x1aW50IHYwID0gJXUsIEdMdWludCB2MSA9ICV1IiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHVzaERlYnVnR3Jv
dXBLSFIoY29udGV4dCwgc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKSk7CisgICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBs
b2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2Nh
dGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTJ1aShjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cHVzaERlYnVnR3Jv
dXAoc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnBy
b2dyYW1Vbmlmb3JtMnVpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHVzaERlYnVnR3JvdXBLSFIsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMnVpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAgICAgICAgICAgICAgIHYx
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUHVzaEdyb3VwTWFya2VyRVhUQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbWFya2VyKQordm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
cm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICAvLyBEb24ndCBydW4g
dGhlIEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzLgot
ICAgIC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNldCBi
eSB0aGUgY2FsbGVyLgotICAgIC8vIEVWRU5UKCJnbFB1c2hHcm91cE1hcmtlckVYVCIsICJjb250
ZXh0ID0gJWQsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbWFya2VyID0KLSAg
ICAvLyAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwgbGVuZ3RoLCAodWludHB0cl90
KW1hcmtlcik7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm0ydWl2IiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIGNvbnN0ICIKKyAgICAgICAgICAiR0x1aW50ICp2YWx1ZSA9IDB4
JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0
aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUHVz
aEdyb3VwTWFya2VyRVhUKGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3Jh
bVVuaWZvcm0ydWl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3Vu
dCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCBtYXJrZXIpOworICAgICAgICAg
ICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0ydWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUHVz
aEdyb3VwTWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGVuZ3RoLCBtYXJrZXIpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtMnVpdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFB1c2hNYXRy
aXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm0zZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYy
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFB1c2hNYXRyaXgiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRl
eHQpKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNmIiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0
IHYwID0gJWYsIEdMZmxvYXQgdjEgPSAiCisgICAgICAgICAgIiVmLCBHTGZsb2F0IHYyID0gJWYi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVQdXNoTWF0cml4KGNvbnRleHQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2YoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5wdXNoTWF0cml4KCk7CisgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTNmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFB1c2hNYXRyaXgs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5p
Zm9ybTNmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNr
ZWQsIHYwLCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICB2Mik7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFF1ZXJ5Q291bnRlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlm
b3JtM2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUXVlcnlDb3VudGVyRVhUIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwg
aWQsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0
YXJnZXQpKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNmdiIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xz
aXplaSBjb3VudCA9ICVkLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBRdWVyeUlEIGlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8UXVlcnlJRD4oaWQpOwotICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVRdWVyeUNvdW50ZXJF
WFQoY29udGV4dCwgaWRQYWNrZWQsIHRhcmdldFBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtM2Z2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5xdWVyeUNvdW50ZXIoaWRQYWNrZWQsIHRhcmdldFBhY2tlZCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tl
ZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFF1ZXJ5
Q291bnRlckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGlkUGFja2VkLCB0YXJnZXRQYWNrZWQp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2Z2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLUdMYml0ZmllbGQgR0xfQVBJRU5UUlkg
UXVlcnlNYXRyaXh4T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkICptYW50aXNz
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpleHBvbmVudCkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyKQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFF1ZXJ5
TWF0cml4eE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhlZCAqbWFudGlzc2Eg
PSAweCUwMTYiIFBSSXhQVFIgIiwgR0xpbnQgKmV4cG9uZW50ID0gMHglMDE2IiBQUkl4UFRSCi0g
ICAgICAgICAgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KW1hbnRpc3Nh
LCAodWludHB0cl90KWV4cG9uZW50KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybTNpIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCAiCisgICAgICAgICAgIkdM
aW50IHYyID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24s
IHYwLCB2MSwgdjIpOwogCi0gICAgR0xiaXRmaWVsZCByZXR1cm5WYWx1ZTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVRdWVyeU1hdHJpeHhPRVMoY29udGV4dCwgbWFudGlzc2EsIGV4cG9uZW50KSk7Ci0gICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBj
b250ZXh0LT5xdWVyeU1hdHJpeHgobWFudGlzc2EsIGV4cG9uZW50KTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9n
cmFtVW5pZm9ybTNpKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwg
djEsIHYyKSk7CisgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6UXVlcnlN
YXRyaXh4T0VTLCBHTGJpdGZpZWxkPigpOworICAgICAgICAgICAgY29udGV4dC0+cHJvZ3JhbVVu
aWZvcm0zaShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShRdWVyeU1hdHJpeHhPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBtYW50aXNzYSwgZXhwb25lbnQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAg
ZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8
RW50cnlQb2ludDo6UXVlcnlNYXRyaXh4T0VTLCBHTGJpdGZpZWxkPigpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2ksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFt
UGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLAorICAgICAgICAgICAgICAgICAgICAgIHYy
KTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFJlYWRCdWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHNyYykKK3Zv
aWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUmVh
ZEJ1ZmZlciIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBzcmMgPSAlcyIsIENJRChjb250ZXh0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVhZEJ1ZmZlck1vZGUsIHNy
YykpOworICAgIEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtM2l2IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVp
IGNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICIKKyAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVhZEJ1ZmZlcihjb250ZXh0LCBzcmMpKTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtM2l2
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWFkQnVmZmVyKHNyYyk7CisgICAgICAgICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTNp
dihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFJlYWRCdWZmZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBzcmMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtM2l2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
UmVhZFBpeGVsc0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqcGl4ZWxzKQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTN1aUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjIpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsUmVhZFBpeGVscyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgeCA9
ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAl
ZCwgIgotICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIHZv
aWQgKnBpeGVscyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZv
cm1hdCwgZm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4
ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClwaXhlbHMpOworICAgIEVWRU5UKCJnbFByb2dyYW1V
bmlmb3JtM3VpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0gJXUsICIK
KyAgICAgICAgICAiR0x1aW50IHYyID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJv
Z3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVhZFBpeGVscyhjb250ZXh0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOworICAgICAgICBTaGFkZXJQ
cm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
aGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRp
b25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+
KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWkoY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWFkUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtM3VpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFJlYWRQaXhlbHMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zdWksIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsCisgICAg
ICAgICAgICAgICAgICAgICAgdjEsIHYyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
UmVhZG5QaXhlbHNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlm
b3JtM3VpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHVpbnQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFJlYWRuUGl4ZWxzIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0
aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSBmb3JtYXQg
PSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBidWZTaXplID0gJWQsIHZvaWQgKmRhdGEg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZv
cm1hdCwgZm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4
ZWxUeXBlLCB0eXBlKSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVOVCgiZ2xQ
cm9ncmFtVW5pZm9ybTN1aXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3Qg
IgorICAgICAgICAgICJHTHVpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZh
bHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZVJlYWRuUGl4ZWxzKGNv
bnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSkp
OworICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0zdWl2KGNvbnRleHQsIHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWFkblBpeGVscyh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGRhdGEpOworICAgICAg
ICAgICAgY29udGV4dC0+cHJvZ3JhbVVuaWZvcm0zdWl2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
UmVhZG5QaXhlbHMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIGJ1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgZGF0YSk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm0zdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
Y291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHNF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCit2b2lkIEdMX0FQSUVO
VFJZIFByb2dyYW1Vbmlmb3JtNGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHYwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZmxvYXQgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHYzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFJlYWRuUGl4ZWxzRVhUIiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0
aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSBmb3JtYXQg
PSAlcywgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBidWZTaXplID0gJWQsIHZvaWQgKmRhdGEg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgICAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZv
cm1hdCwgZm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4
ZWxUeXBlLCB0eXBlKSwgYnVmU2l6ZSwgKHVpbnRwdHJfdClkYXRhKTsKKyAgICBFVkVOVCgiZ2xQ
cm9ncmFtVW5pZm9ybTRmIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYsIEdMZmxvYXQgdjEg
PSAiCisgICAgICAgICAgIiVmLCBHTGZsb2F0IHYyID0gJWYsIEdMZmxvYXQgdjMgPSAlZiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUmVhZG5QaXhlbHNFWFQoY29u
dGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKSk7
CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRmKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlYWRuUGl4ZWxzKHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgZGF0YSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybTRmKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLCB2MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShS
ZWFkblBpeGVsc0VYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBkYXRhKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybTRmLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwKKyAgICAgICAgICAgICAg
ICAgICAgICB2MiwgdjMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZWxlYXNlU2hh
ZGVyQ29tcGlsZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkKK3ZvaWQgR0xfQVBJRU5U
UlkgUHJvZ3JhbVVuaWZvcm00ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xSZWxlYXNlU2hhZGVy
Q29tcGlsZXIiLCAiY29udGV4dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBFVkVOVCgiZ2xQ
cm9ncmFtVW5pZm9ybTRmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dy
YW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCAi
CisgICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZh
bHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlUmVsZWFzZVNoYWRlckNvbXBpbGVyKGNvbnRleHQpKTsKKyAgICAgICAgU2hhZGVy
UHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0
aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9u
Pihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtNGZ2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYg
KGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWxlYXNlU2hh
ZGVyQ29tcGlsZXIoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNGZ2KHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoUmVsZWFzZVNoYWRlckNvbXBpbGVyLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00ZnYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBSZW5kZXJidWZmZXJTdG9yYWdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJv
Z3JhbVVuaWZvcm00aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHYzKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdM
c2l6ZWkgd2lkdGggPSAlZCwgIgotICAgICAgICAgICJHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJi
dWZmZXJUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOworICAg
IEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtNGkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMaW50IHYwID0gJWQsIEdM
aW50IHYxID0gJWQsICIKKyAgICAgICAgICAiR0xpbnQgdjIgPSAlZCwgR0xpbnQgdjMgPSAlZCIs
CisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3Rv
cmFnZShjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7Cisg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTRpKGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybTRpKHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCB2
MCwgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJi
dWZmZXJTdG9yYWdlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShQcm9ncmFtVW5pZm9ybTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBh
Y2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLCB2MSwKKyAgICAgICAgICAgICAgICAgICAgICB2Miwg
djMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtNGl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNp
emVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAg
ICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJidWZmZXJUYXJn
ZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOworICAg
IEVWRU5UKCJnbFByb2dyYW1Vbmlmb3JtNGl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
THVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIGNvbnN0IEdMaW50ICIKKyAgICAgICAgICAiKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIi
LAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LCAodWlu
dHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShjb250ZXh0
LCB0YXJnZXQsIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAg
VW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtNGl2KGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwg
dmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybTRpdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZh
bHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywKLSAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNHVpQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdjEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB2MiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHYzKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFIiwKLSAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGlu
dGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZv
cm00dWkiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSwgIgorICAg
ICAgICAgICJHTHVpbnQgdjIgPSAldSwgR0x1aW50IHYzID0gJXUiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAg
IFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybTR1aShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYx
LCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBjb250ZXh0
LT5wcm9ncmFtVW5pZm9ybTR1aShwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgdjAsIHYx
LCB2MiwgdjMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHNh
bXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtNHVpLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIHYwLAorICAgICAgICAg
ICAgICAgICAgICAgIHYxLCB2MiwgdjMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNHVpdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBs
ZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXpl
aSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpSZW5kZXJidWZmZXJUYXJnZXQsIHRhcmdl
dCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVy
bmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOworICAgIEVWRU5UKCJn
bFByb2dyYW1Vbmlmb3JtNHVpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBy
b2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25z
dCAiCisgICAgICAgICAgIkdMdWludCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3Qp
dmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFt
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4o
cHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTR1aXYoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9j
YXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtNHVpdihwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHRhcmdldCwgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm00
dWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQs
CisgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUmVu
ZGVyYnVmZmVyU3RvcmFnZU9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgR0xzaXplaSB3aWR0aCA9ICVk
LCAiCi0gICAgICAgICAgIkdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRhcmdldCwgdGFy
Z2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3Jt
YXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CisgICAgRVZFTlQoImdsUHJvZ3Jh
bVVuaWZvcm1NYXRyaXgyZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9n
cmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29s
ZWFuICIKKyAgICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0g
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9j
YXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZh
bHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU9F
Uyhjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZv
cm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihjb250ZXh0LCBwcm9n
cmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2KHByb2dy
YW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAg
ICAgIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgy
ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwK
KyAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4
MngzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2siLCAiY29udGV4
dCA9ICVkIiwgQ0lEKGNvbnRleHQpKTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4M2Z2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBH
TGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCisgICAg
ICAgICAgInRyYW5zcG9zZSA9ICVzLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3Vu
dCwgR0xib29sZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlE
IHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJv
Z3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgICAgICBj
b250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaywgaXNDYWxsVmFsaWQsIGNvbnRleHQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZCi1Sb3RhdGVmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgYW5nbGUs
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCit2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtTWF0cml4Mng0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUm90YXRlZiIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xmbG9hdCBhbmdsZSA9ICVmLCBHTGZsb2F0IHggPSAlZiwgR0xm
bG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9ICVmIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGFu
Z2xlLCB4LCB5LCB6KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2IiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2Nh
dGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCisgICAgICAgICAgInRy
YW5zcG9zZSA9ICVzLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwK
KyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xib29s
ZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJvdGF0ZWYoY29u
dGV4dCwgYW5nbGUsIHgsIHksIHopKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihw
cm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1V
bmlmb3JtTWF0cml4Mng0ZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJvdGF0ZWYoYW5nbGUsIHgsIHksIHopOworICAgICAgICAgICAgY29udGV4dC0+cHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDRmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUm90YXRlZiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGFuZ2xlLCB4LCB5LCB6KTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotUm90YXRl
eENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIGFuZ2xlLCBHTGZpeGVkIHgs
IEdMZml4ZWQgeSwgR0xmaXhlZCB6KQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1h
dHJpeDNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKAotICAgICAgICAiZ2xSb3RhdGV4IiwKLSAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xmaXhlZCBhbmdsZSA9IDB4JVgsIEdMZml4ZWQgeCA9IDB4JVgsIEdMZml4ZWQgeSA9IDB4
JVgsIEdMZml4ZWQgeiA9IDB4JVgiLAotICAgICAgICBDSUQoY29udGV4dCksIGFuZ2xlLCB4LCB5
LCB6KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdiIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwg
R0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgorICAgICAgICAgICJ0cmFuc3Bvc2UgPSAl
cywgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5n
KHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSb3RhdGV4KGNvbnRleHQsIGFuZ2xl
LCB4LCB5LCB6KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Cisg
ICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eDNmdihjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cm90YXRleChhbmdsZSwgeCwgeSwgeik7CisgICAgICAgICAg
ICBjb250ZXh0LT5wcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtUGFja2VkLCBsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFJvdGF0ZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhbmdsZSwgeCwgeSwgeik7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoUHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFNhbXBsZUNvdmVyYWdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgdmFs
dWUsIEdMYm9vbGVhbiBpbnZlcnQpCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0
cml4M3gyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2FtcGxlQ292ZXJhZ2UiLCAiY29udGV4dCA9ICVk
LCBHTGZsb2F0IHZhbHVlID0gJWYsIEdMYm9vbGVhbiBpbnZlcnQgPSAlcyIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCB2YWx1ZSwgR0xib29sZWFuVG9TdHJpbmcoaW52ZXJ0KSk7CisgICAgRVZF
TlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBHTGJvb2xlYW4gIgorICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xm
bG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSks
ICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2UoY29udGV4
dCwgdmFsdWUsIGludmVydCkpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dy
YW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDJmdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
cHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CisgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVD
b3ZlcmFnZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHZhbHVlLCBpbnZlcnQpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uUGFja2Vk
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFNhbXBsZUNvdmVyYWdleENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGNsYW1weCB2
YWx1ZSwgR0xib29sZWFuIGludmVydCkKK3ZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm1N
YXRyaXgzeDRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTYW1wbGVDb3ZlcmFnZXgiLCAiY29udGV4dCA9
ICVkLCBHTGNsYW1weCB2YWx1ZSA9IDB4JVgsIEdMYm9vbGVhbiBpbnZlcnQgPSAlcyIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCB2YWx1ZSwgR0xib29sZWFuVG9TdHJpbmcoaW52ZXJ0KSk7Cisg
ICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdiIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXpl
aSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gIgorICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29u
c3QgR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5z
cG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2FtcGxlQ292ZXJhZ2V4
KGNvbnRleHQsIHZhbHVlLCBpbnZlcnQpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlE
Pihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4M3g0ZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNhbXBsZUNvdmVyYWdleCh2YWx1ZSwgaW52ZXJ0KTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFNhbXBsZUNvdmVyYWdleCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHZhbHVlLCBpbnZlcnQpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFNhbXBsZU1hc2tpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtTWF0cml4NGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2FtcGxlTWFza2kiLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgbWFza051bWJlciA9ICV1LCBHTGJpdGZpZWxkIG1hc2sgPSAlcyIsCi0gICAgICAgICAgQ0lE
KGNvbnRleHQpLCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRl
ZmF1bHRHcm91cCwgbWFzaykuY19zdHIoKSk7CisgICAgRVZFTlQoImdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXg0ZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuICIKKyAg
ICAgICAgICAidHJhbnNwb3NlID0gJXMsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVNhbXBsZU1hc2tpKGNvbnRleHQsIG1hc2tOdW1iZXIsIG1hc2spKTsKKyAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgVW5pZm9ybUxv
Y2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5p
Zm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIHBy
b2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5zYW1wbGVNYXNraShtYXNrTnVtYmVyLCBtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlTWFz
a2ksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtYXNrTnVtYmVyLCBtYXNrKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2Ft
cGxlclBhcmFtZXRlcklpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGludCAqcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtTWF0cml4
NHgyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbFNhbXBsZXJQYXJhbWV0ZXJJaXYiLAot
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0xpbnQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAot
ICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAodWludHB0cl90KXBhcmFt
KTsKKyAgICBFVkVOVCgiZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2IiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiAiCisgICAgICAgICAgInRyYW5zcG9zZSA9ICVz
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmco
dHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlU2FtcGxlclBhcmFtZXRlcklpdihjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwg
cGFyYW0pKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4NHgy
ZnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHByb2dyYW1QYWNr
ZWQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQ
YXJhbWV0ZXJJaXYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25Q
YWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFNhbXBsZXJQYXJhbWV0ZXJJaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2Vk
LCBwbmFtZSwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFByb2dyYW1Vbmlmb3JtTWF0
cml4NHgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAorICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVNDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBh
cmFtKQordm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKAotICAgICAgICAiZ2xTYW1wbGVyUGFyYW1ldGVySWl2T0VTIiwKLSAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0
IEdMaW50ICpwYXJhbSA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lE
KGNvbnRleHQpLCBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBh
cmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAgICAgKHVpbnRwdHJfdClwYXJhbSk7CisgICAgRVZF
TlQoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBHTGJvb2xlYW4gIgorICAgICAgICAgICJ0cmFuc3Bvc2UgPSAlcywgY29uc3QgR0xm
bG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSks
ICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBs
ZXJQYXJhbWV0ZXJJaXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7
CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIFVuaWZv
cm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVy
SWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT5w
cm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBj
b3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVy
UGFyYW1ldGVySWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
M2Z2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0K
IH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySXVpdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgc2FtcGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtKQordm9pZCBH
TF9BUElFTlRSWSBQdXNoRGVidWdHcm91cENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbFNhbXBsZXJQYXJhbWV0
ZXJJdWl2IiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xl
bnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMdWludCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKLSAg
ICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICh1aW50
cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJnbFB1c2hEZWJ1Z0dyb3VwIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gc291cmNlID0gJXMsIEdMdWludCBpZCA9ICV1LCBHTHNpemVp
IGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgIgorICAgICAgICAgICIqbWVzc2FnZSA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWJ1Z1NvdXJjZSwgc291cmNlKSwgaWQsIGxlbmd0aCwKKyAgICAgICAgICAo
dWludHB0cl90KW1lc3NhZ2UpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBs
ZXJQYXJhbWV0ZXJJdWl2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQdXNo
RGVidWdHcm91cChjb250ZXh0LCBzb3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zYW1w
bGVyUGFyYW1ldGVySXVpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOworICAgICAgICAg
ICAgY29udGV4dC0+cHVzaERlYnVnR3JvdXAoc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0ZXJJdWl2LCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShQdXNoRGVidWdHcm91cCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNv
dXJjZSwgaWQsIGxlbmd0aCwgbWVzc2FnZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBzYW1wbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZ
IFB1c2hEZWJ1Z0dyb3VwS0hSQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMY2hhciAqbWVzc2FnZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsU2FtcGxlclBh
cmFtZXRlckl1aXZPRVMiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9
ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0x1aW50ICpwYXJhbSA9IDB4JTAxNiIgUFJJ
eFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVyLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwKLSAgICAg
ICAgKHVpbnRwdHJfdClwYXJhbSk7CisgICAgRVZFTlQoImdsUHVzaERlYnVnR3JvdXBLSFIiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBzb3VyY2UgPSAlcywgR0x1aW50IGlkID0g
JXUsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAiCisgICAgICAgICAgIiptZXNz
YWdlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlYnVnU291cmNlLCBzb3VyY2UpLCBpZCwgbGVuZ3RoLAor
ICAgICAgICAgICh1aW50cHRyX3QpbWVzc2FnZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlU2FtcGxlclBhcmFtZXRlckl1aXZPRVMoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVB1c2hEZWJ1Z0dyb3VwS0hSKGNvbnRleHQsIHNvdXJjZSwgaWQsIGxlbmd0aCwg
bWVzc2FnZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNhbXBsZXJQYXJhbWV0ZXJJdWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSk7CisgICAgICAgICAgICBjb250ZXh0LT5wdXNoRGVidWdHcm91cChzb3VyY2UsIGlkLCBs
ZW5ndGgsIG1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxl
clBhcmFtZXRlckl1aXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBw
bmFtZSwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFB1c2hEZWJ1Z0dyb3VwS0hSLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKICAgICB9
CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwYXJhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgUHVzaEdy
b3VwTWFya2VyRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAq
bWFya2VyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNhbXBsZXJQYXJhbWV0ZXJmIiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xm
bG9hdCBwYXJhbSA9ICVmIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHNhbXBsZXIsIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLCBwYXJh
bSk7CisgICAgLy8gRG9uJ3QgcnVuIHRoZSBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVidWdf
bWFya2VyIGVudHJ5IHBvaW50cy4KKyAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGRl
YnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KKyAgICAvLyBFVkVOVCgiZ2xQdXNo
R3JvdXBNYXJrZXJFWFQiLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIGxlbmd0aCA9ICVkLCBjb25z
dCBHTGNoYXIgKm1hcmtlciA9CisgICAgLy8gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4
dCksIGxlbmd0aCwgKHVpbnRwdHJfdCltYXJrZXIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlUHVzaEdyb3VwTWFya2VyRVhUKGNvbnRleHQsIGxlbmd0aCwgbWFya2VyKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
c2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnB1c2hHcm91cE1hcmtlcihsZW5ndGgsIG1hcmtlcik7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVyZiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRV
UkUoUHVzaEdyb3VwTWFya2VyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbGVuZ3RoLCBtYXJr
ZXIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyZnZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW0pCit2
b2lkIEdMX0FQSUVOVFJZIFB1c2hNYXRyaXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xTYW1wbGVyUGFyYW1ldGVyZnYiLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZs
b2F0ICpwYXJhbSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBs
ZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXJhbSk7Cisg
ICAgRVZFTlQoImdsUHVzaE1hdHJpeCIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29udGV4dCkpOwog
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmdihjb250ZXh0
LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlUHVzaE1hdHJpeChjb250ZXh0KSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFt
ZXRlcmZ2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0
LT5wdXNoTWF0cml4KCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVy
UGFyYW1ldGVyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwg
cGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFB1c2hNYXRyaXgsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmlD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcGFyYW0pCit2b2lkIEdMX0FQ
SUVOVFJZIFF1ZXJ5Q291bnRlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVp
bnQgaWQsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2FtcGxlclBhcmFtZXRlcmki
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVkIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIHNh
bXBsZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsUXVlcnlDb3VudGVyRVhUIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IGlkID0gJXUsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwg
aWQsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlF1ZXJ5VGFyZ2V0LCB0
YXJnZXQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxl
clBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVy
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
aShjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgUXVlcnlJ
RCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UXVlcnlJRD4oaWQpOworICAgICAgICBRdWVyeVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxRdWVyeVR5cGU+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVRdWVyeUNv
dW50ZXJFWFQoY29udGV4dCwgaWRQYWNrZWQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZXJQYXJh
bWV0ZXJpKHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBjb250ZXh0
LT5xdWVyeUNvdW50ZXIoaWRQYWNrZWQsIHRhcmdldFBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVyaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUXVl
cnlDb3VudGVyRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaWRQYWNrZWQsIHRhcmdldFBhY2tl
ZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJpdkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW0pCitHTGJp
dGZpZWxkIEdMX0FQSUVOVFJZIFF1ZXJ5TWF0cml4eE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmaXhlZCAqbWFudGlzc2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqZXhwb25lbnQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAg
ICJnbFNhbXBsZXJQYXJhbWV0ZXJpdiIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBz
YW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW0gPSAweCUw
MTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgc2FtcGxlciwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSks
Ci0gICAgICAgICh1aW50cHRyX3QpcGFyYW0pOworICAgIEVWRU5UKCJnbFF1ZXJ5TWF0cml4eE9F
UyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhlZCAqbWFudGlzc2EgPSAweCUwMTYi
IFBSSXhQVFIgIiwgR0xpbnQgKmV4cG9uZW50ID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCAodWludHB0cl90KW1hbnRpc3NhLCAodWludHB0
cl90KWV4cG9uZW50KTsKIAorICAgIEdMYml0ZmllbGQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJpdihjb250ZXh0LCBzYW1wbGVyUGFj
a2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fCBWYWxpZGF0ZVF1ZXJ5TWF0cml4eE9FUyhjb250ZXh0LCBtYW50aXNzYSwg
ZXhwb25lbnQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaXYoc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBh
cmFtKTsKKyAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+cXVlcnlNYXRyaXh4KG1h
bnRpc3NhLCBleHBvbmVudCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1w
bGVyUGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFt
ZSwgcGFyYW0pOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OlF1ZXJ5TWF0cml4eE9FUywg
R0xiaXRmaWVsZD4oKTsKKyAgICAgICAgfQorICAgICAgICBBTkdMRV9DQVBUVVJFKFF1ZXJ5TWF0
cml4eE9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1hbnRpc3NhLCBleHBvbmVudCwgcmV0dXJu
VmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpRdWVyeU1hdHJpeHhPRVMsIEdMYml0Zmll
bGQ+KCk7CiAgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBTY2FsZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCB4LCBHTGZs
b2F0IHksIEdMZmxvYXQgeikKK3ZvaWQgR0xfQVBJRU5UUlkgUmVhZEJ1ZmZlckNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gc3JjKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFNjYWxlZiIs
ICJjb250ZXh0ID0gJWQsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6
ID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgeCwgeSwgeik7CisgICAgRVZFTlQoImds
UmVhZEJ1ZmZlciIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBzcmMgPSAlcyIsIENJRChjb250ZXh0
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVhZEJ1ZmZlck1vZGUs
IHNyYykpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVTY2FsZWYoY29udGV4dCwgeCwgeSwgeikpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSZWFkQnVmZmVyKGNvbnRleHQsIHNyYykpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnNj
YWxlZih4LCB5LCB6KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlYWRCdWZmZXIoc3JjKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNjYWxlZiwgaXNDYWxsVmFsaWQsIGNvbnRl
eHQsIHgsIHksIHopOworICAgICAgICBBTkdMRV9DQVBUVVJFKFJlYWRCdWZmZXIsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBzcmMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTY2FsZXhD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4
ZWQgeikKK3ZvaWQgR0xfQVBJRU5UUlkgUmVhZFBpeGVsc0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFNjYWxleCIsICJjb250ZXh0ID0gJWQsIEdMZml4ZWQgeCA9IDB4JVgsIEdMZml4ZWQgeSA9
IDB4JVgsIEdMZml4ZWQgeiA9IDB4JVgiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwg
eik7CisgICAgRVZFTlQoImdsUmVhZFBpeGVscyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBo
ZWlnaHQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBl
ID0gJXMsIHZvaWQgKnBpeGVscyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClwaXhlbHMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTY2FsZXgoY29u
dGV4dCwgeCwgeSwgeikpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVSZWFkUGl4ZWxzKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+c2NhbGV4KHgsIHksIHopOworICAgICAgICAgICAgY29u
dGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTY2FsZXgsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB4LCB5LCB6KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZWFkUGl4ZWxzLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotU2Npc3NvckNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKK3ZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEp
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsU2Npc3NvciIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xp
bnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICBFVkVOVCgiZ2xSZWFkblBpeGVscyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xp
bnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0g
JXMsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCB2b2lkICpkYXRhID0gMHglMDE2IiBQUkl4UFRSCisg
ICAgICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCisgICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksIGJ1ZlNp
emUsICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVTY2lzc29yKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
VmFsaWRhdGVSZWFkblBpeGVscyhjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIGJ1ZlNpemUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICAgICAgY29udGV4dC0+cmVhZG5QaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFNjaXNzb3IsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZWFkblBpeGVscywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBkYXRhKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2VtYXBob3Jl
UGFyYW1ldGVydWk2NHZFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNl
bWFwaG9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQ2NCAqcGFyYW1zKQordm9pZCBHTF9B
UElFTlRSWSBSZWFkblBpeGVsc0VYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
ZGF0YSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dkVYVCIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0x1aW50NjQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4
UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBob3JlLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6U2VtYXBob3JlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAotICAgICAgICAg
ICh1aW50cHRyX3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xSZWFkblBpeGVsc0VYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkg
d2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgIgorICAgICAgICAgICJHTGVudW0gZm9y
bWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCB2b2lkICpk
YXRhID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICAgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4
ZWxGb3JtYXQsIGZvcm1hdCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlBpeGVsVHlwZSwgdHlwZSksIGJ1ZlNpemUsICh1aW50cHRyX3QpZGF0YSk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBob3JlUGFja2VkICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlU2VtYXBob3JlUGFyYW1ldGVydWk2NHZFWFQo
Y29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAgICAgICAgICAg
VmFsaWRhdGVSZWFkblBpeGVsc0VYVChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3Jt
YXQsIHR5cGUsIGJ1ZlNpemUsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dihzZW1h
cGhvcmVQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+cmVhZG5Q
aXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBkYXRhKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2
RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFJlYWRuUGl4
ZWxzRVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGRhdGEpOwogICAgIH0KIH0K
IAotdm9pZCBHTF9BUElFTlRSWSBTZXRGZW5jZU5WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBmZW5jZSwgR0xlbnVtIGNvbmRpdGlvbikKK3ZvaWQgR0xfQVBJRU5UUlkgUmVs
ZWFzZVNoYWRlckNvbXBpbGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAg
RVZFTlQoImdsU2V0RmVuY2VOViIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9ICV1LCBH
TGVudW0gY29uZGl0aW9uID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgZmVuY2UsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvbmRpdGlvbikpOworICAg
IEVWRU5UKCJnbFJlbGVhc2VTaGFkZXJDb21waWxlciIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29u
dGV4dCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEZlbmNlTlZJRCBmZW5jZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZlbmNlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTZXRGZW5j
ZU5WKGNvbnRleHQsIGZlbmNlUGFja2VkLCBjb25kaXRpb24pKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVsZWFzZVNoYWRlckNvbXBpbGVyKGNvbnRleHQp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5zZXRGZW5jZU5WKGZlbmNlUGFja2VkLCBjb25kaXRpb24pOworICAgICAgICAgICAgY29u
dGV4dC0+cmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVf
Q0FQVFVSRShTZXRGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNrZWQsIGNv
bmRpdGlvbik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUmVsZWFzZVNoYWRlckNvbXBpbGVyLCBp
c0NhbGxWYWxpZCwgY29udGV4dCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFNoYWRl
TW9kZWxDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCit2b2lkIEdM
X0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5U
KCJnbFNoYWRlTW9kZWwiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbW9kZSA9ICVzIiwgQ0lEKGNv
bnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTaGFkaW5nTW9k
ZWwsIG1vZGUpKTsKKyAgICBFVkVOVCgiZ2xSZW5kZXJidWZmZXJTdG9yYWdlIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCA9ICVzLCBHTHNpemVpIHdpZHRoID0gJWQsICIKKyAgICAgICAgICAiR0xzaXplaSBoZWlnaHQg
PSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVp
Z2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFkaW5nTW9kZWwgbW9kZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGluZ01vZGVsPihtb2RlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNoYWRlTW9kZWwoY29udGV4dCwg
bW9kZVBhY2tlZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlKGNvbnRleHQs
IHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zaGFkZU1vZGVsKG1v
ZGVQYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFNoYWRlTW9kZWwsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBtb2RlUGFja2Vk
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJidWZmZXJTdG9yYWdlLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2hhZGVyQmlu
YXJ5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpzaGFkZXJzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeWZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3Ro
KQordm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsU2hhZGVyQmluYXJ5IiwKLSAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMdWludCAqc2hhZGVy
cyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMZW51bSBiaW5hcnlmb3JtYXQgPSAl
cywgY29uc3Qgdm9pZCAqYmluYXJ5ID0gMHglMDE2IiBQUkl4UFRSICIsIEdMc2l6ZWkgbGVuZ3Ro
ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgY291bnQsICh1aW50cHRyX3Qpc2hhZGVy
cywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBi
aW5hcnlmb3JtYXQpLCAodWludHB0cl90KWJpbmFyeSwgbGVuZ3RoKTsKKyAgICBFVkVOVCgiZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1wbGVzID0gJWQsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBo
ZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAorICAgICAgICAg
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3Jt
YXQpLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBjb25z
dCBTaGFkZXJQcm9ncmFtSUQgKnNoYWRlcnNQYWNrZWQgICAgICAgICAgPSBGcm9tR0w8Y29uc3Qg
U2hhZGVyUHJvZ3JhbUlEICo+KHNoYWRlcnMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlU2hhZGVyQmluYXJ5KGNvbnRleHQs
IGNvdW50LCBzaGFkZXJzUGFja2VkLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zaGFkZXJCaW5hcnkoY291
bnQsIHNoYWRlcnNQYWNrZWQsIGJpbmFyeWZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpOworICAgICAg
ICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoU2hhZGVyQmluYXJ5LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY291bnQs
IHNoYWRlcnNQYWNrZWQsIGJpbmFyeWZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICBiaW5h
cnksIGxlbmd0aCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLAorICAgICAg
ICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9
CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2hhZGVyU291cmNlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
c2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqY29uc3QgKnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpsZW5ndGgpCit2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTaGFkZXJTb3VyY2UiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzaGFkZXIgPSAldSwgR0xzaXplaSBjb3VudCA9ICVk
LCBjb25zdCBHTGNoYXIgKmNvbnN0KnN0cmluZyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4
UFRSICIsIGNvbnN0IEdMaW50ICpsZW5ndGggPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBzaGFkZXIsIGNvdW50LCAodWludHB0cl90KXN0cmluZywgKHVpbnRw
dHJfdClsZW5ndGgpOworICAgIEVWRU5UKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUFOR0xFIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
c2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAg
ICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlJlbmRlcmJ1ZmZlclRh
cmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHNoYWRlclBhY2tl
ZCAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4oc2hhZGVyKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTaGFkZXJTb3VyY2UoY29udGV4dCwg
c2hhZGVyUGFja2VkLCBjb3VudCwgc3RyaW5nLCBsZW5ndGgpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQs
IHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5zaGFk
ZXJTb3VyY2Uoc2hhZGVyUGFja2VkLCBjb3VudCwgc3RyaW5nLCBsZW5ndGgpOworICAgICAgICAg
ICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoU2hhZGVyU291cmNlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2hhZGVyUGFj
a2VkLCBjb3VudCwgc3RyaW5nLCBsZW5ndGgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0LCBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU2lnbmFsU2VtYXBob3Jl
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2VtYXBob3JlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUJ1ZmZlckJhcnJp
ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICpidWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVu
dW0gKmRzdExheW91dHMpCit2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xTaWduYWxTZW1hcGhvcmVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBzZW1hcGhvcmUgPSAldSwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzID0gJXUsIGNvbnN0
IEdMdWludCAiCi0gICAgICAgICAgIipidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAg
ICAgIiwgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQgKnRleHR1
cmVzID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgY29uc3QgR0xlbnVtICpkc3RMYXlv
dXRzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBo
b3JlLCBudW1CdWZmZXJCYXJyaWVycywgKHVpbnRwdHJfdClidWZmZXJzLCBudW1UZXh0dXJlQmFy
cmllcnMsCi0gICAgICAgICAgKHVpbnRwdHJfdCl0ZXh0dXJlcywgKHVpbnRwdHJfdClkc3RMYXlv
dXRzKTsKKyAgICBFVkVOVCgiZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXplaSBzYW1w
bGVzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6
ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJn
ZXQpLCBzYW1wbGVzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRl
cm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7Ci0gICAgICAgIGNvbnN0
IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBC
dWZmZXJJRCAqPihidWZmZXJzKTsKLSAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1Bh
Y2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAg
VmFsaWRhdGVTaWduYWxTZW1hcGhvcmVFWFQoY29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBudW1C
dWZmZXJCYXJyaWVycywgYnVmZmVyc1BhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBkc3RMYXlv
dXRzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNpZ25hbFNlbWFwaG9yZShzZW1hcGhvcmVQYWNrZWQsIG51bUJ1
ZmZlckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMp
OworICAgICAgICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRh
cmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU2lnbmFsU2VtYXBob3JlRVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBudW1CdWZmZXJCYXJyaWVycywKLSAgICAgICAgICAg
ICAgICAgICAgICBidWZmZXJzUGFja2VkLCBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFj
a2VkLCBkc3RMYXlvdXRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMs
CisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRnVuY0NvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKK3ZvaWQg
R0xfQVBJRU5UUlkgUmVuZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsU3RlbmNpbEZ1bmMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0g
ZnVuYyA9ICVzLCBHTGludCByZWYgPSAlZCwgR0x1aW50IG1hc2sgPSAldSIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbEZ1bmN0aW9u
LCBmdW5jKSwgcmVmLCBtYXNrKTsKKyAgICBFVkVOVCgiZ2xSZW5kZXJidWZmZXJTdG9yYWdlT0VT
IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCA9ICVzLCBHTHNpemVpIHdpZHRoID0gJWQsICIKKyAgICAgICAgICAiR0xz
aXplaSBoZWlnaHQgPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6UmVuZGVyYnVmZmVyVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQp
LCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVN0ZW5jaWxGdW5jKGNvbnRleHQsIGZ1bmMsIHJlZiwgbWFzaykpOworICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxp
ZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAg
ICAgICAgICBjb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3Rl
bmNpbEZ1bmMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmdW5jLCByZWYsIG1hc2spOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotU3RlbmNpbEZ1bmNTZXBh
cmF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gZmFjZSwgR0xlbnVtIGZ1
bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCit2b2lkIEdMX0FQSUVOVFJZIFJlc3VtZVRyYW5z
Zm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IGZhY2UgPSAlcywgR0xlbnVtIGZ1bmMgPSAlcywgR0xpbnQgcmVmID0gJWQsIEdMdWludCBtYXNr
ID0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlN0ZW5jaWxGYWNlRGlyZWN0aW9uLCBmYWNlKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6U3RlbmNpbEZ1bmN0aW9uLCBmdW5jKSwgcmVmLCBtYXNrKTsKKyAgICBF
VkVOVCgiZ2xSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayIsICJjb250ZXh0ID0gJWQiLCBDSUQoY29u
dGV4dCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlU3RlbmNpbEZ1bmNTZXBhcmF0ZShjb250ZXh0LCBmYWNlLCBmdW5jLCByZWYs
IG1hc2spKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlUmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2soY29udGV4dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFj
ZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlc3VtZVRyYW5zZm9y
bUZlZWRiYWNrKCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsRnVu
Y1NlcGFyYXRlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsK
KyAgICAgICAgQU5HTEVfQ0FQVFVSRShSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaywgaXNDYWxsVmFs
aWQsIGNvbnRleHQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsTWFza0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgbWFzaykKK3ZvaWQgR0xfQVBJRU5U
UlkKK1JvdGF0ZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCBhbmdsZSwg
R0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTdGVuY2ls
TWFzayIsICJjb250ZXh0ID0gJWQsIEdMdWludCBtYXNrID0gJXUiLCBDSUQoY29udGV4dCksIG1h
c2spOworICAgIEVWRU5UKCJnbFJvdGF0ZWYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZmxvYXQgYW5nbGUgPSAlZiwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0
IHogPSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBhbmdsZSwgeCwgeSwgeik7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0
ZW5jaWxNYXNrKGNvbnRleHQsIG1hc2spKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlUm90YXRlZihjb250ZXh0LCBhbmdsZSwgeCwgeSwgeikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5j
aWxNYXNrKG1hc2spOworICAgICAgICAgICAgY29udGV4dC0+cm90YXRlZihhbmdsZSwgeCwgeSwg
eik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsTWFzaywgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG1hc2spOworICAgICAgICBBTkdMRV9DQVBUVVJFKFJvdGF0ZWYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBhbmdsZSwgeCwgeSwgeik7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFN0ZW5jaWxNYXNrU2VwYXJhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQordm9pZCBHTF9BUElFTlRSWQorUm90YXRleENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIGFuZ2xlLCBHTGZpeGVkIHgsIEdM
Zml4ZWQgeSwgR0xmaXhlZCB6KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxNYXNrU2VwYXJhdGUi
LCAiY29udGV4dCA9ICVkLCBHTGVudW0gZmFjZSA9ICVzLCBHTHVpbnQgbWFzayA9ICV1IiwgQ0lE
KGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2ls
RmFjZURpcmVjdGlvbiwgZmFjZSksIG1hc2spOworICAgIEVWRU5UKAorICAgICAgICAiZ2xSb3Rh
dGV4IiwKKyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xmaXhlZCBhbmdsZSA9IDB4JVgsIEdMZml4
ZWQgeCA9IDB4JVgsIEdMZml4ZWQgeSA9IDB4JVgsIEdMZml4ZWQgeiA9IDB4JVgiLAorICAgICAg
ICBDSUQoY29udGV4dCksIGFuZ2xlLCB4LCB5LCB6KTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0g
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxN
YXNrU2VwYXJhdGUoY29udGV4dCwgZmFjZSwgbWFzaykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVSb3RhdGV4KGNvbnRleHQsIGFuZ2xlLCB4LCB5LCB6KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PnJvdGF0ZXgoYW5nbGUsIHgsIHksIHopOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoU3RlbmNpbE1hc2tTZXBhcmF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhY2UsIG1hc2sp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFJvdGF0ZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBh
bmdsZSwgeCwgeSwgeik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxPcENv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBH
TGVudW0genBhc3MpCit2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZUNvdmVyYWdlQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMZmxvYXQgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpCiB7CiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0g
ICAgRVZFTlQoImdsU3RlbmNpbE9wIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZhaWwgPSAlcywg
R0xlbnVtIHpmYWlsID0gJXMsIEdMZW51bSB6cGFzcyA9ICVzIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsT3AsIGZhaWwpLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsT3AsIHpmYWlsKSwKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCB6cGFzcykpOwor
ICAgIEVWRU5UKCJnbFNhbXBsZUNvdmVyYWdlIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCB2YWx1
ZSA9ICVmLCBHTGJvb2xlYW4gaW52ZXJ0ID0gJXMiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
dmFsdWUsIEdMYm9vbGVhblRvU3RyaW5nKGludmVydCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU3RlbmNpbE9wKGNvbnRleHQsIGZhaWwsIHpm
YWlsLCB6cGFzcykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShjb250ZXh0LCB2YWx1ZSwgaW52ZXJ0KSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNp
bE9wKGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVDb3Zl
cmFnZSh2YWx1ZSwgaW52ZXJ0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0
ZW5jaWxPcCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlQ292ZXJhZ2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB2
YWx1ZSwgaW52ZXJ0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbE9wU2Vw
YXJhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZmFpbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRwZmFpbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRwcGFzcykK
K3ZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlQ292ZXJhZ2V4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMY2xhbXB4IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAot
ICAgICAgICAiZ2xTdGVuY2lsT3BTZXBhcmF0ZSIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBmYWNlID0gJXMsIEdMZW51bSBzZmFpbCA9ICVzLCBHTGVudW0gZHBmYWlsID0gJXMsIEdM
ZW51bSBkcHBhc3MgPSAlcyIsCi0gICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlN0ZW5jaWxGYWNlRGlyZWN0aW9uLCBmYWNlKSwKLSAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxPcCwgc2ZhaWwpLAotICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCBkcGZhaWwpLAotICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCBkcHBhc3MpKTsKKyAgICBFVkVOVCgiZ2xT
YW1wbGVDb3ZlcmFnZXgiLCAiY29udGV4dCA9ICVkLCBHTGNsYW1weCB2YWx1ZSA9IDB4JVgsIEdM
Ym9vbGVhbiBpbnZlcnQgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB2YWx1ZSwgR0xi
b29sZWFuVG9TdHJpbmcoaW52ZXJ0KSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVuY2lsT3BTZXBhcmF0ZShjb250ZXh0LCBm
YWNlLCBzZmFpbCwgZHBmYWlsLCBkcHBhc3MpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBsZUNvdmVyYWdleChjb250ZXh0LCB2
YWx1ZSwgaW52ZXJ0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgc2ZhaWwsIGRwZmFpbCwg
ZHBwYXNzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNhbXBsZUNvdmVyYWdleCh2YWx1ZSwgaW52
ZXJ0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxPcFNlcGFyYXRl
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNzKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVDb3ZlcmFnZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB2YWx1ZSwgaW52ZXJ0KTsKICAgICB9CiB9CiAKLUdMYm9vbGVhbiBHTF9BUElFTlRSWSBUZXN0
RmVuY2VOVkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2UpCit2b2lk
IEdMX0FQSUVOVFJZIFNhbXBsZU1hc2tpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxkIG1hc2spCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGVzdEZl
bmNlTlYiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0KSwg
ZmVuY2UpOworICAgIEVWRU5UKCJnbFNhbXBsZU1hc2tpIiwgImNvbnRleHQgPSAlZCwgR0x1aW50
IG1hc2tOdW1iZXIgPSAldSwgR0xiaXRmaWVsZCBtYXNrID0gJXMiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgbWFza051bWJlciwgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZh
dWx0R3JvdXAsIG1hc2spLmNfc3RyKCkpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RmVuY2VOVklEPihmZW5jZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXN0RmVuY2VOVihjb250ZXh0LCBmZW5jZVBhY2tl
ZCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlU2FtcGxlTWFza2koY29udGV4dCwgbWFza051bWJlciwgbWFzaykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gY29u
dGV4dC0+dGVzdEZlbmNlTlYoZmVuY2VQYWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFs
dWU8RW50cnlQb2ludDo6VGVzdEZlbmNlTlYsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnNhbXBsZU1hc2tpKG1hc2tOdW1iZXIsIG1hc2spOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVGVzdEZlbmNlTlYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmZW5jZVBh
Y2tlZCwgcmV0dXJuVmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1
cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpUZXN0RmVuY2VOViwg
R0xib29sZWFuPigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZU1hc2tpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbWFza051bWJlciwgbWFzayk7CiAgICAgfQotICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhCdWZmZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYnVmZmVyKQordm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFyYW1ldGVySWl2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xUZXhCdWZmZXIiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdMdWludCBidWZm
ZXIgPSAldSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgYnVmZmVyKTsKKyAg
ICBFVkVOVCgKKyAgICAgICAgImdsU2FtcGxlclBhcmFtZXRlcklpdiIsCisgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBH
TGludCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChj
b250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJh
bWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICh1aW50cHRyX3QpcGFyYW0pOwogCiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlcklEIGJ1ZmZlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVUZXhCdWZmZXIoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZv
cm1hdCwgYnVmZmVyUGFja2VkKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNh
bXBsZXJQYXJhbWV0ZXJJaXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dGV4QnVmZmVyKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCk7CisgICAg
ICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVySWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1l
LCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhCdWZmZXIsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXQsIGludGVybmFsZm9ybWF0LCBidWZmZXJQYWNrZWQp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0ZXJJaXYsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBUZXhCdWZmZXJSYW5nZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKQordm9pZCBHTF9BUElFTlRSWSBTYW1wbGVyUGFy
YW1ldGVySWl2T0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMaW50ICpwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhCdWZmZXJSYW5nZSIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQgPSAlcywgR0x1aW50IGJ1ZmZlciA9ICV1LCAiCi0gICAgICAgICAgIkdMaW50
cHRyIG9mZnNldCA9ICVsbHUsIEdMc2l6ZWlwdHIgc2l6ZSA9ICVsbHUiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRh
cmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9y
bWF0LCBpbnRlcm5hbGZvcm1hdCksIGJ1ZmZlciwKLSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
c2l6ZSkpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xTYW1wbGVyUGFyYW1ldGVySWl2T0VTIiwK
KyAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNhbXBsZXIgPSAldSwgR0xlbnVtIHBuYW1l
ID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbSA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwK
KyAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1lKSwKKyAgICAgICAgKHVpbnRwdHJfdClwYXJh
bSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVySUQgYnVmZmVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlcklEPihidWZmZXIpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlk
YXRlVGV4QnVmZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgYnVmZmVy
UGFja2VkLCBvZmZzZXQsIHNpemUpKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
U2FtcGxlclBhcmFtZXRlcklpdk9FUyhjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFy
YW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT50ZXhCdWZmZXJSYW5nZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCBidWZmZXJQYWNr
ZWQsIG9mZnNldCwgc2l6ZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVy
SWl2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShUZXhCdWZmZXJSYW5nZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwg
aW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBvZmZz
ZXQsIHNpemUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0ZXJJaXZPRVMs
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhDb29yZFBvaW50ZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgU2FtcGxl
clBhcmFtZXRlckl1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICpwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhDb29yZFBvaW50ZXIiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAl
cywgR0xzaXplaSBzdHJpZGUgPSAlZCwgY29uc3Qgdm9pZCAiCi0gICAgICAgICAgIipwb2ludGVy
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2l6ZSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleENvb3JkUG9pbnRlclR5cGUsIHR5cGUpLCBzdHJp
ZGUsCi0gICAgICAgICAgKHVpbnRwdHJfdClwb2ludGVyKTsKKyAgICBFVkVOVCgKKyAgICAgICAg
ImdsU2FtcGxlclBhcmFtZXRlckl1aXYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQg
c2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0x1aW50ICpwYXJhbSA9IDB4
JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBzYW1wbGVy
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBhcmFtZXRlck5hbWUsIHBuYW1l
KSwKKyAgICAgICAgKHVpbnRwdHJfdClwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleENvb3JkUG9pbnRlcihjb250ZXh0LCBzaXplLCB0eXBlUGFja2VkLCBzdHJp
ZGUsIHBvaW50ZXIpKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBh
cmFtZXRlckl1aXYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4
Q29vcmRQb2ludGVyKHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAg
ICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVySXVpdihzYW1wbGVyUGFja2VkLCBwbmFtZSwg
cGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4Q29vcmRQb2ludGVy
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVy
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVySXVpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFRleEVudmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQordm9pZCBHTF9BUElFTlRS
WSBTYW1wbGVyUGFyYW1ldGVySXVpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc2FtcGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bFRleEVudmYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFt
ZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdldCksCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQYXJhbWV0ZXIsIHBu
YW1lKSwgcGFyYW0pOworICAgIEVWRU5UKAorICAgICAgICAiZ2xTYW1wbGVyUGFyYW1ldGVySXVp
dk9FUyIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51
bSBwbmFtZSA9ICVzLCBjb25zdCBHTHVpbnQgKnBhcmFtID0gMHglMDE2IiBQUkl4UFRSCisgICAg
ICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAodWludHB0
cl90KXBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlRW52VGFy
Z2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdl
dD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAg
ICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZmKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWVQYWNrZWQsIHBhcmFtKSk7CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxl
cik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVNhbXBsZXJQYXJhbWV0ZXJJdWl2T0VTKGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnRleEVudmYodGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAg
ICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlckl1aXYoc2FtcGxlclBhY2tlZCwgcG5h
bWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEVudmYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoU2FtcGxlclBhcmFtZXRlckl1aXZPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBUZXhFbnZmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnBhcmFtcykKLXsKLSAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xUZXhFbnZmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gIgot
ICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7Cit2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJh
bWV0ZXJmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzYW1wbGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcGFyYW0pCit7
CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
CisgICAgRVZFTlQoImdsU2FtcGxlclBhcmFtZXRlcmYiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFt
ID0gJWYiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OlNhbXBsZXJQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBhcmFtKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAg
ICAgVGV4dHVyZUVudlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhFbnZmdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBw
YXJhbXMpKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
cmYoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4RW52ZnYodGFy
Z2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNh
bXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRh
cmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
U2FtcGxlclBhcmFtZXRlcmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBw
bmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhFbnZpQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZXJQYXJhbWV0ZXJmdkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xUZXhFbnZpIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwK
LSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRl
ciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsU2FtcGxlclBhcmFtZXRlcmZ2IiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9ICV1LCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW0gPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNhbXBsZXIsIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpTYW1wbGVyUGFyYW1ldGVyTmFtZSwgcG5hbWUpLAorICAgICAgICAgICh1aW50
cHRyX3QpcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVFbnZU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudmkoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1w
bGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlU2FtcGxlclBhcmFtZXRlcmZ2KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJh
bSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnRleEVudmkodGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAg
ICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmZ2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBw
YXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZpLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFNhbXBsZXJQYXJhbWV0ZXJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFRleEVudml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkg
U2FtcGxlclBhcmFtZXRlcmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNhbXBsZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJnbFRleEVudml2IiwKLSAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3Qg
R0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwg
dGFyZ2V0KSwKLSAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQ
YXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbFNhbXBs
ZXJQYXJhbWV0ZXJpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2FtcGxlciA9
ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBzYW1wbGVyLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U2FtcGxlclBh
cmFtZXRlck5hbWUsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUVudlBhcmFtZXRlcj4o
cG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudml2KGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOworICAgICAgICBTYW1w
bGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTYW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaShjb250ZXh0LCBzYW1wbGVyUGFj
a2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhFbnZpdih0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2Vk
LCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+c2FtcGxlclBhcmFtZXRlcmkoc2FtcGxl
clBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFRleEVudml2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tl
ZCwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTYW1wbGVyUGFyYW1ldGVyaSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEVudnhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkIHBhcmFtKQordm9pZCBHTF9B
UElFTlRSWSBTYW1wbGVyUGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
YW1wbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0
aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleEVudngiLCAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVk
IHBhcmFtID0gMHglWCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7
CisgICAgRVZFTlQoCisgICAgICAgICJnbFNhbXBsZXJQYXJhbWV0ZXJpdiIsCisgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMdWludCBzYW1wbGVyID0gJXUsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25z
dCBHTGludCAqcGFyYW0gPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJ
RChjb250ZXh0KSwgc2FtcGxlciwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlNhbXBsZXJQ
YXJhbWV0ZXJOYW1lLCBwbmFtZSksCisgICAgICAgICh1aW50cHRyX3QpcGFyYW0pOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOwotICAgICAg
ICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleEVudngoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFy
YW0pKTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2
KGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEVudngodGFyZ2V0
UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAgICAgICAgY29udGV4dC0+c2FtcGxl
clBhcmFtZXRlcml2KHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZ4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNhbXBs
ZXJQYXJhbWV0ZXJpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1l
LCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEVudnh2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmaXhlZCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBTY2FsZWZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xUZXhFbnZ4diIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xmaXhlZCAqcGFyYW1zID0gIgot
ICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsU2NhbGVmIiwgImNvbnRl
eHQgPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZiIs
IENJRChjb250ZXh0KSwKKyAgICAgICAgICB4LCB5LCB6KTsKIAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgVGV4dHVyZUVudlBh
cmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZQYXJh
bWV0ZXI+KHBuYW1lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhF
bnZ4dihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2NhbGVmKGNvbnRleHQsIHgs
IHksIHopKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT50ZXhFbnZ4dih0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOwor
ICAgICAgICAgICAgY29udGV4dC0+c2NhbGVmKHgsIHksIHopOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVGV4RW52eHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHBuYW1lUGFja2VkLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNjYWxlZiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHopOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBUZXhHZW5mT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjb29y
ZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBTY2FsZXhD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4
ZWQgeikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhHZW5mT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVt
IGNvb3JkID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVD
b29yZE5hbWUsIGNvb3JkKSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAgRVZFTlQoImdsU2NhbGV4
IiwgImNvbnRleHQgPSAlZCwgR0xmaXhlZCB4ID0gMHglWCwgR0xmaXhlZCB5ID0gMHglWCwgR0xm
aXhlZCB6ID0gMHglWCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6KTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVRleEdlbmZPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTY2FsZXgoY29udGV4dCwg
eCwgeSwgeikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnRleEdlbmYoY29vcmQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgICAgICBj
b250ZXh0LT5zY2FsZXgoeCwgeSwgeik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShUZXhHZW5mT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoU2NhbGV4LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgeCwg
eSwgeik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEdlbmZ2T0VTQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZCitTY2lzc29yQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xUZXhHZW5mdk9F
UyIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5h
bWUgPSAlcywgY29uc3QgR0xmbG9hdCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAg
ICIiLAotICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCi0gICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKKyAg
ICBFVkVOVCgiZ2xTY2lzc29yIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCB4ID0g
JWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVk
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VuZnZPRVMo
Y29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlU2Npc3Nvcihjb250ZXh0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dGV4R2VuZnYoY29vcmQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAg
Y29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleEdlbmZ2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFNjaXNzb3IsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgVGV4R2VuaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0g
Y29vcmQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIFNlbWFw
aG9yZVBhcmFtZXRlcnVpNjR2RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBzZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50NjQgKnBhcmFtcykKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xUZXhHZW5pT0VTIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0gJXMs
IEdMZW51bSBwbmFtZSA9ICVzLCBHTGludCBwYXJhbSA9ICVkIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29y
ZCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJh
bWV0ZXIsIHBuYW1lKSwgcGFyYW0pOworICAgIEVWRU5UKCJnbFNlbWFwaG9yZVBhcmFtZXRlcnVp
NjR2RVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUs
IEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTHVpbnQ2NCAqcGFyYW1zID0gIgorICAgICAgICAg
ICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUs
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTZW1hcGhvcmVQYXJhbWV0ZXJOYW1lLCBwbmFt
ZSksCisgICAgICAgICAgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhv
cmVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4o
c2VtYXBob3JlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVRleEdlbmlPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSkpOwor
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBW
YWxpZGF0ZVNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tl
ZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnRleEdlbmkoY29vcmQsIHBuYW1lLCBwYXJhbSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5zZW1hcGhvcmVQYXJhbWV0ZXJ1aTY0dihzZW1hcGhvcmVQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4R2Vu
aU9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFNlbWFwaG9yZVBhcmFtZXRlcnVpNjR2RVhULCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgc2VtYXBob3JlUGFja2VkLCBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBw
YXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhHZW5pdk9FU0NvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY29vcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgU2V0RmVuY2VOVkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRp
b24pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4R2VuaXZPRVMiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29uc3QgR0xpbnQgKnBh
cmFtcyA9IDB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3Jk
KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdlblBhcmFt
ZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsU2V0RmVuY2VO
ViIsICJjb250ZXh0ID0gJWQsIEdMdWludCBmZW5jZSA9ICV1LCBHTGVudW0gY29uZGl0aW9uID0g
JXMiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgZmVuY2UsIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvbmRpdGlvbikpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBGZW5jZU5WSUQgZmVuY2VQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxGZW5jZU5WSUQ+KGZl
bmNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVRleEdlbml2T0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKSk7CisgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNldEZlbmNlTlYo
Y29udGV4dCwgZmVuY2VQYWNrZWQsIGNvbmRpdGlvbikpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEdlbml2KGNvb3JkLCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldEZlbmNlTlYoZmVuY2VQYWNrZWQs
IGNvbmRpdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhHZW5pdk9F
UywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShTZXRGZW5jZU5WLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmVuY2VQYWNr
ZWQsIGNvbmRpdGlvbik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEdlbnhPRVND
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUs
IEdMZml4ZWQgcGFyYW0pCit2b2lkIEdMX0FQSUVOVFJZIFNoYWRlTW9kZWxDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4R2VueE9F
UyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGNvb3JkID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZpeGVkIHBhcmFtID0gMHglWCIsIENJRChjb250ZXh0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAot
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlR2VuUGFyYW1ldGVy
LCBwbmFtZSksIHBhcmFtKTsKKyAgICBFVkVOVCgiZ2xTaGFkZU1vZGVsIiwgImNvbnRleHQgPSAl
ZCwgR0xlbnVtIG1vZGUgPSAlcyIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6U2hhZGluZ01vZGVsLCBtb2RlKSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVU
ZXhHZW54T0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgU2hhZGlu
Z01vZGVsIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
U2hhZGluZ01vZGVsPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlU2hhZGVNb2RlbChjb250ZXh0LCBtb2RlUGFja2VkKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4R2VueChjb29y
ZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNoYWRlTW9kZWwobW9kZVBh
Y2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhHZW54T0VTLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoU2hhZGVNb2RlbCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIG1vZGVQYWNrZWQpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhHZW54dk9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY29vcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmaXhlZCAqcGFyYW1zKQordm9pZCBHTF9BUElFTlRSWSBTaGFkZXJCaW5hcnlDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Zm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoCi0gICAgICAgICJnbFRleEdlbnh2T0VTIiwKLSAgICAgICAgImNvbnRleHQgPSAlZCwgR0xl
bnVtIGNvb3JkID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZpeGVkICpwYXJhbXMg
PSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJRChjb250ZXh0KSwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKLSAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbFNoYWRlckJpbmFyeSIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTHVpbnQgKnNo
YWRlcnMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTGVudW0gYmluYXJ5Zm9ybWF0
ID0gJXMsIGNvbnN0IHZvaWQgKmJpbmFyeSA9IDB4JTAxNiIgUFJJeFBUUiAiLCBHTHNpemVpIGxl
bmd0aCA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGNvdW50LCAodWludHB0cl90KXNo
YWRlcnMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgYmluYXJ5Zm9ybWF0KSwgKHVpbnRwdHJfdCliaW5hcnksIGxlbmd0aCk7CiAKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGNvbnN0IFNo
YWRlclByb2dyYW1JRCAqc2hhZGVyc1BhY2tlZCA9IEZyb21HTDxjb25zdCBTaGFkZXJQcm9ncmFt
SUQgKj4oc2hhZGVycyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW54dk9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFt
cykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVNoYWRlckJpbmFyeShjb250ZXh0LCBjb3VudCwgc2hhZGVyc1BhY2tlZCwg
YmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEdlbnh2KGNvb3JkLCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNoYWRlckJpbmFyeShjb3VudCwgc2hhZGVy
c1BhY2tlZCwgYmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShUZXhHZW54dk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGNvb3Jk
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTaGFkZXJCaW5hcnksIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBjb3VudCwgc2hhZGVyc1BhY2tlZCwgYmluYXJ5Zm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeSwgbGVuZ3RoKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgVGV4SW1hZ2UyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lk
IEdMX0FQSUVOVFJZIFNoYWRlclNvdXJjZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIg
KmNvbnN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqbGVuZ3RoKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleEltYWdlMkQiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAl
ZCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgIndpZHRo
ID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMaW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9y
bWF0ID0gJXMsIEdMZW51bSB0eXBlID0gIgotICAgICAgICAgICIlcywgY29uc3Qgdm9pZCAqcGl4
ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwKLSAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKLSAgICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClwaXhlbHMp
OworICAgIEVWRU5UKCJnbFNoYWRlclNvdXJjZSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHNoYWRlciA9ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMY2hhciAqY29u
c3Qqc3RyaW5nID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiwgY29uc3QgR0xpbnQg
Kmxlbmd0aCA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNo
YWRlciwgY291bnQsICh1aW50cHRyX3Qpc3RyaW5nLCAodWludHB0cl90KWxlbmd0aCk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4SW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IHBpeGVscykpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgc2hhZGVyUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNoYWRlcik7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVNoYWRlclNv
dXJjZShjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRl
eEltYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
LCBwaXhlbHMpOworICAgICAgICAgICAgY29udGV4dC0+c2hhZGVyU291cmNlKHNoYWRlclBhY2tl
ZCwgY291bnQsIHN0cmluZywgbGVuZ3RoKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFRleEltYWdlMkQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTaGFk
ZXJTb3VyY2UsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBzaGFkZXJQYWNrZWQsIGNvdW50LCBzdHJp
bmcsIGxlbmd0aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlM0RDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBib3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpwaXhlbHMpCit2b2lkIEdMX0FQSUVOVFJZIFNpZ25hbFNlbWFwaG9y
ZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1CdWZmZXJCYXJy
aWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdWludCAqYnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnRleHR1cmVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xl
bnVtICpkc3RMYXlvdXRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleEltYWdlM0QiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xp
bnQgaW50ZXJuYWxmb3JtYXQgPSAlZCwgR0xzaXplaSAiCi0gICAgICAgICAgIndpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xpbnQgYm9yZGVyID0g
JWQsIEdMZW51bSBmb3JtYXQgPSAiCi0gICAgICAgICAgIiVzLCBHTGVudW0gdHlwZSA9ICVzLCBj
b25zdCB2b2lkICpwaXhlbHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0
KSwgbGV2ZWwsIGludGVybmFsZm9ybWF0LAotICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0
KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBl
KSwgKHVpbnRwdHJfdClwaXhlbHMpOworICAgIEVWRU5UKCJnbFNpZ25hbFNlbWFwaG9yZUVYVCIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHNlbWFwaG9yZSA9ICV1LCBHTHVpbnQg
bnVtQnVmZmVyQmFycmllcnMgPSAldSwgY29uc3QgR0x1aW50ICIKKyAgICAgICAgICAiKmJ1ZmZl
cnMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgICAiLCBHTHVpbnQgbnVtVGV4dHVyZUJhcnJp
ZXJzID0gJXUsIGNvbnN0IEdMdWludCAqdGV4dHVyZXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAg
ICAgICAiLCBjb25zdCBHTGVudW0gKmRzdExheW91dHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBzZW1hcGhvcmUsIG51bUJ1ZmZlckJhcnJpZXJzLCAodWlu
dHB0cl90KWJ1ZmZlcnMsIG51bVRleHR1cmVCYXJyaWVycywKKyAgICAgICAgICAodWludHB0cl90
KXRleHR1cmVzLCAodWludHB0cl90KWRzdExheW91dHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleEltYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7
CisgICAgICAgIFNlbWFwaG9yZUlEIHNlbWFwaG9yZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNlbWFwaG9yZUlEPihzZW1hcGhvcmUpOworICAgICAgICBjb25zdCBC
dWZmZXJJRCAqYnVmZmVyc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxj
b25zdCBCdWZmZXJJRCAqPihidWZmZXJzKTsKKyAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0
dXJlc1BhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8Y29uc3QgVGV4dHVyZUlE
ICo+KHRleHR1cmVzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlU2lnbmFsU2VtYXBob3JlRVhUKGNvbnRleHQs
IHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVGV4dHVyZUJhcnJpZXJzLCB0
ZXh0dXJlc1BhY2tlZCwgZHN0TGF5b3V0cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0UGFja2VkLCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnNpZ25hbFNlbWFwaG9yZShzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZl
ckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIGRzdExheW91dHMpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4SW1hZ2UzRCwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
cGl4ZWxzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTaWduYWxTZW1hcGhvcmVFWFQsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZlckJhcnJpZXJzLAorICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNQYWNrZWQsIG51bVRleHR1cmVCYXJyaWVycywgdGV4
dHVyZXNQYWNrZWQsIGRzdExheW91dHMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBU
ZXhJbWFnZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJv
cmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscykKK3ZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsVGV4SW1hZ2UzRE9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQgPSAlcywgR0xzaXplaSAiCi0gICAgICAgICAgIndpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xpbnQgYm9yZGVyID0gJWQsIEdMZW51bSBmb3Jt
YXQgPSAiCi0gICAgICAgICAgIiVzLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpwaXhl
bHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsCi0gICAg
ICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5h
bGZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsCi0gICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsRm9ybWF0LCBmb3JtYXQpLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFR5cGUsIHR5cGUpLCAodWludHB0cl90KXBp
eGVscyk7CisgICAgRVZFTlQoImdsU3RlbmNpbEZ1bmMiLCAiY29udGV4dCA9ICVkLCBHTGVudW0g
ZnVuYyA9ICVzLCBHTGludCByZWYgPSAlZCwgR0x1aW50IG1hc2sgPSAldSIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbEZ1bmN0aW9u
LCBmdW5jKSwgcmVmLCBtYXNrKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0
dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxp
ZGF0ZVRleEltYWdlM0RPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxGdW5jKGNvbnRleHQsIGZ1
bmMsIHJlZiwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnRleEltYWdlM0QodGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShUZXhJbWFnZTNET0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgd2lkdGgs
IGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFN0ZW5jaWxGdW5jLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZnVuYywgcmVm
LCBtYXNrKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySWl2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJ
RU5UUlkKK1N0ZW5jaWxGdW5jU2VwYXJhdGVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKAotICAgICAgICAiZ2xUZXhQYXJhbWV0ZXJJaXYiLAotICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAq
cGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4
dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAot
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUs
IHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbFN0ZW5jaWxGdW5jU2Vw
YXJhdGUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51
bSBmdW5jID0gJXMsIEdMaW50IHJlZiA9ICVkLCBHTHVpbnQgbWFzayA9ICV1IiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpTdGVuY2lsRmFjZURp
cmVjdGlvbiwgZmFjZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0
ZW5jaWxGdW5jdGlvbiwgZnVuYyksIHJlZiwgbWFzayk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlU3RlbmNpbEZ1bmNTZXBhcmF0ZShjb250ZXh0LCBmYWNlLCBmdW5jLCByZWYsIG1hc2sp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJJaXYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNr
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcklpdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRl
eFBhcmFtZXRlcklpdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxNYXNrQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBtYXNrKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAi
Z2xUZXhQYXJhbWV0ZXJJaXZPRVMiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRw
dHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbFN0ZW5jaWxNYXNrIiwgImNvbnRleHQgPSAlZCwg
R0x1aW50IG1hc2sgPSAldSIsIENJRChjb250ZXh0KSwgbWFzayk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcklpdk9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQs
IHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZh
bGlkYXRlU3RlbmNpbE1hc2soY29udGV4dCwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcklpdih0YXJn
ZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+c3RlbmNpbE1h
c2sobWFzayk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJJ
aXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxNYXNrLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbWFzayk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlckl1aXZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKK3ZvaWQg
R0xfQVBJRU5UUlkgU3RlbmNpbE1hc2tTZXBhcmF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAgICJn
bFRleFBhcmFtZXRlckl1aXYiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAxNiIg
UFJJeFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksICh1aW50cHRy
X3QpcGFyYW1zKTsKKyAgICBFVkVOVCgiZ2xTdGVuY2lsTWFza1NlcGFyYXRlIiwgImNvbnRleHQg
PSAlZCwgR0xlbnVtIGZhY2UgPSAlcywgR0x1aW50IG1hc2sgPSAldSIsIENJRChjb250ZXh0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbEZhY2VEaXJlY3Rp
b24sIGZhY2UpLCBtYXNrKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJl
VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5
cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFy
YW1ldGVySXVpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5j
aWxNYXNrU2VwYXJhdGUoY29udGV4dCwgZmFjZSwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlckl1aXYo
dGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5j
aWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShUZXhQYXJhbWV0ZXJJdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsTWFza1NlcGFy
YXRlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjZSwgbWFzayk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlckl1aXZPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgU3Rl
bmNpbE9wQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBmYWlsLCBHTGVudW0g
emZhaWwsIEdMZW51bSB6cGFzcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsVGV4UGFyYW1l
dGVySXVpdk9FUyIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRS
Ci0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJh
bXMpOworICAgIEVWRU5UKCJnbFN0ZW5jaWxPcCIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWls
ID0gJXMsIEdMZW51bSB6ZmFpbCA9ICVzLCBHTGVudW0genBhc3MgPSAlcyIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCBmYWls
KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCB6ZmFp
bCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxPcCwgenBh
c3MpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVySXVpdk9F
Uyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxPcChjb250
ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJJdWl2KHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsT3AoZmFpbCwg
emZhaWwsIHpwYXNzKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFt
ZXRlckl1aXZPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxPcCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFRleFBhcmFtZXRlcmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKQordm9pZCBH
TF9BUElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHNmYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZHBmYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZHBwYXNzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleFBhcmFtZXRlcmYiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1l
ID0gJXMsIEdMZmxvYXQgcGFyYW0gPSAlZiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1l
KSwgcGFyYW0pOworICAgIEVWRU5UKAorICAgICAgICAiZ2xTdGVuY2lsT3BTZXBhcmF0ZSIsCisg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSBmYWNlID0gJXMsIEdMZW51bSBzZmFpbCA9ICVz
LCBHTGVudW0gZHBmYWlsID0gJXMsIEdMZW51bSBkcHBhc3MgPSAlcyIsCisgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxGYWNlRGlyZWN0aW9u
LCBmYWNlKSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlN0ZW5jaWxPcCwg
c2ZhaWwpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCBk
cGZhaWwpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6U3RlbmNpbE9wLCBk
cHBhc3MpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyZihj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVuY2lsT3BTZXBhcmF0ZShjb250
ZXh0LCBmYWNlLCBzZmFpbCwgZHBmYWlsLCBkcHBhc3MpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxPcFNl
cGFyYXRlKGZhY2UsIHNmYWlsLCBkcGZhaWwsIGRwcGFzcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0
UGFja2VkLCBwbmFtZSwgcGFyYW0pOworICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxPcFNl
cGFyYXRlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgZmFjZSwgc2ZhaWwsIGRwZmFpbCwgZHBwYXNz
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyZnZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCitHTGJvb2xlYW4gR0xfQVBJRU5U
UlkgVGVzdEZlbmNlTlZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZlbmNl
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFRleFBhcmFtZXRlcmZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0
ICpwYXJhbXMgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0
YXJnZXQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlUGFy
YW1ldGVyTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CisgICAgRVZFTlQoImdsVGVz
dEZlbmNlTlYiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgZmVuY2UgPSAldSIsIENJRChjb250ZXh0
KSwgZmVuY2UpOwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyZnYoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKSk7CisgICAgICAgIEZlbmNlTlZJRCBmZW5jZVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPEZlbmNlTlZJRD4oZmVuY2UpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXN0RmVuY2VOVihjb250ZXh0LCBm
ZW5jZVBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmZ2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPnRlc3RGZW5jZU5WKGZlbmNl
UGFja2VkKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcmZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1
bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpUZXN0RmVuY2VOViwgR0xib29sZWFuPigpOworICAg
ICAgICB9CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGVzdEZlbmNlTlYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBmZW5jZVBhY2tlZCwgcmV0dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50
OjpUZXN0RmVuY2VOViwgR0xib29sZWFuPigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyaUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBUZXhCdWZmZXJDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYnVmZmVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleFBhcmFtZXRlcmkiLAotICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0g
JXMsIEdMaW50IHBhcmFtID0gJWQiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgR0xlbnVtVG9T
dHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJhbWV0ZXJOYW1lLCBwbmFtZSksIHBh
cmFtKTsKKyAgICBFVkVOVCgiZ2xUZXhCdWZmZXIiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsIEdMdWludCBi
dWZmZXIgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgYnVmZmVyKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyaShjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSkpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVm
ZmVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVGV4QnVmZmVyKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tl
ZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pOworICAgICAg
ICAgICAgY29udGV4dC0+dGV4QnVmZmVyKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBh
Y2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJpLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleEJ1ZmZlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwg
aW50ZXJuYWxmb3JtYXQsIGJ1ZmZlclBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFRleFBhcmFtZXRlcml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCit2b2lkIEdM
X0FQSUVOVFJZIFRleEJ1ZmZlclJhbmdlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xp
bnQgKnBhcmFtcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAg
ICAgImdsVGV4UGFyYW1ldGVyaXYiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gMHglMDE2
IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAotICAgICAgICBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRw
dHJfdClwYXJhbXMpOworICAgIEVWRU5UKCJnbFRleEJ1ZmZlclJhbmdlIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9
ICVzLCBHTHVpbnQgYnVmZmVyID0gJXUsICIKKyAgICAgICAgICAiR0xpbnRwdHIgb2Zmc2V0ID0g
JWxsdSwgR0xzaXplaXB0ciBzaXplID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFs
Zm9ybWF0KSwgYnVmZmVyLAorICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9u
Zz4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihzaXplKSk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcml2KGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOworICAgICAgICBCdWZmZXJJRCBidWZmZXJQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJJRD4oYnVmZmVy
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgIFZhbGlkYXRlVGV4QnVmZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNpemUpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpdih0
YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4QnVm
ZmVyUmFuZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgYnVmZmVyUGFja2VkLCBvZmZzZXQsIHNp
emUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVyaXYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleEJ1ZmZlclJhbmdlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0LCBpbnRlcm5hbGZvcm1hdCwgYnVmZmVyUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAg
IG9mZnNldCwgc2l6ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRl
cnhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZpeGVkIHBhcmFtKQordm9pZCBHTF9BUElFTlRSWSBU
ZXhDb29yZFBvaW50ZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9p
bnRlcikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhQYXJhbWV0ZXJ4IiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkIHBh
cmFtID0gMHglWCIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CisgICAg
RVZFTlQoImdsVGV4Q29vcmRQb2ludGVyIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGlu
dCBzaXplID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6ZWkgc3RyaWRlID0gJWQsIGNvbnN0
IHZvaWQgIgorICAgICAgICAgICIqcG9pbnRlciA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIHNpemUsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXhD
b29yZFBvaW50ZXJUeXBlLCB0eXBlKSwgc3RyaWRlLAorICAgICAgICAgICh1aW50cHRyX3QpcG9p
bnRlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcngoY29u
dGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKKyAgICAgICAgVmVydGV4QXR0cmli
VHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVydGV4
QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleENvb3JkUG9pbnRlcihjb250ZXh0LCBzaXplLCB0eXBlUGFja2Vk
LCBzdHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJ4KHRhcmdldFBhY2tlZCwgcG5hbWUs
IHBhcmFtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleENvb3JkUG9pbnRlcihzaXplLCB0eXBl
UGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoVGV4UGFyYW1ldGVyeCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhDb29yZFBvaW50ZXIsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOwogICAg
IH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJ4dkNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4RW52ZkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4UGFyYW1ldGVyeHYiLAotICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMs
IGNvbnN0IEdMZml4ZWQgKnBhcmFtcyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVUYXJnZXQsIHRhcmdldCksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkdldFRleHR1cmVQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOworICAg
IEVWRU5UKCJnbFRleEVudmYiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
ZW51bSBwbmFtZSA9ICVzLCBHTGZsb2F0IHBhcmFtID0gJWYiLAorICAgICAgICAgIENJRChjb250
ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZUYXJnZXQsIHRhcmdl
dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZQYXJh
bWV0ZXIsIHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJ4dihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKKyAg
ICAgICAgVGV4dHVyZUVudlRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUVudlRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgVGV4dHVyZUVu
dlBhcmFtZXRlciBwbmFtZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4
dHVyZUVudlBhcmFtZXRlcj4ocG5hbWUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhFbnZmKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWVQYWNrZWQsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyeHYodGFyZ2V0UGFja2VkLCBwbmFtZSwg
cGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleEVudmYodGFyZ2V0UGFja2VkLCBwbmFt
ZVBhY2tlZCwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4UGFy
YW1ldGVyeHYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJh
bXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEVudmYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFRleFN0b3JhZ2UxREVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
bGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4RW52ZnZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFnZTFERVhUIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2
ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAiCi0gICAgICAgICAgIkdMc2l6
ZWkgd2lkdGggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQp
LCB3aWR0aCk7CisgICAgRVZFTlQoImdsVGV4RW52ZnYiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcyA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVFbnZUYXJnZXQs
IHRhcmdldCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVF
bnZQYXJhbWV0ZXIsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlMURFWFQoY29udGV4dCwgdGFyZ2V0LCBsZXZlbHMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCkpOworICAgICAgICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0
YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEVudmZ2
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3Jh
Z2UxRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnRleEVudmZ2KHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlMURFWFQsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoKTsKKyAg
ICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFRleFN0b3JhZ2UyRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0KQordm9pZCBHTF9BUElFTlRSWSBUZXhFbnZpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsVGV4U3RvcmFnZTJEIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFy
Z2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVz
LCAiCi0gICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4
dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICBFVkVOVCgiZ2xUZXhFbnZpIiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9
ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwg
dGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVu
dlBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJEKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOworICAgICAg
ICBUZXh0dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFy
YW1ldGVyIHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
RW52UGFyYW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVRleEVudmkoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBh
Y2tlZCwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleEVudmko
dGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVGV4U3RvcmFnZTJELCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEVudmksIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSk7CiAgICAgfQogfQogCi12
b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyREVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQordm9pZCBHTF9BUElFTlRSWSBUZXhF
bnZpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3RvcmFn
ZTJERVhUIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdM
c2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCA9ICVzLCAiCi0gICAgICAg
ICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGFyZ2V0KSwgbGV2ZWxzLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJ
bnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBFVkVO
VCgKKyAgICAgICAgImdsVGV4RW52aXYiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gMHgl
MDE2IiBQUkl4UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52VGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRlciwgcG5hbWUpLCAo
dWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJERVhUKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICBUZXh0
dXJlRW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVy
IHBuYW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFy
YW1ldGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVRleEVudml2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgY29udGV4dC0+dGV4RW52aXYodGFy
Z2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFRleFN0b3JhZ2UyREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICB3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhFbnZpdiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25z
KQordm9pZCBHTF9BUElFTlRSWSBUZXhFbnZ4Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFs
Zm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhl
aWdodCA9ICVkLCBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMgPSAlcyIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdl
dCwgdGFyZ2V0KSwgc2FtcGxlcywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCwKLSAgICAg
ICAgICBHTGJvb2xlYW5Ub1N0cmluZyhmaXhlZHNhbXBsZWxvY2F0aW9ucykpOworICAgIEVWRU5U
KCJnbFRleEVudngiLCAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBw
bmFtZSA9ICVzLCBHTGZpeGVkIHBhcmFtID0gMHglWCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQp
LCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlRhcmdldCwgdGFyZ2V0KSwK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUVudlBhcmFtZXRl
ciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVy
ZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAot
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGZpeGVkc2FtcGxlbG9jYXRp
b25zKSk7CisgICAgICAgIFRleHR1cmVFbnZUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVFbnZUYXJnZXQ+KHRhcmdldCk7CisgICAgICAg
IFRleHR1cmVFbnZQYXJhbWV0ZXIgcG5hbWVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVFbnZQYXJhbWV0ZXI+KHBuYW1lKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4RW52eChjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lUGFja2VkLCBwYXJhbSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKHRh
cmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZHNhbXBsZWxvY2F0
aW9ucyk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhFbnZ4KHRhcmdldFBhY2tlZCwgcG5hbWVQ
YWNrZWQsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3Jh
Z2UyRE11bHRpc2FtcGxlLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1w
bGVzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4RW52eCwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtKTsK
ICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNEQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoKQordm9pZCBHTF9BUElFTlRSWSBUZXhFbnZ4
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdl
M0QiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xzaXpl
aSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAi
R0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0g
JWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKLSAgICAgICAgICBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhl
aWdodCwgZGVwdGgpOworICAgIEVWRU5UKCJnbFRleEVudnh2IiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZp
eGVkICpwYXJhbXMgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlRW52VGFy
Z2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0
dXJlRW52UGFyYW1ldGVyLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOworICAgICAgICBUZXh0dXJl
RW52VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlRW52VGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBUZXh0dXJlRW52UGFyYW1ldGVyIHBu
YW1lUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlRW52UGFyYW1l
dGVyPihwbmFtZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVRleEVudnh2KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBh
cmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnRleFN0b3JhZ2UzRCh0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleEVudnh2
KHRhcmdldFBhY2tlZCwgcG5hbWVQYWNrZWQsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlM0QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgd2lk
dGgsIGhlaWdodCwgZGVwdGgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEVudnh2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZVBhY2tlZCwgcGFyYW1zKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNERVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoKQordm9pZCBH
TF9BUElFTlRSWSBUZXhHZW5mT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51
bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogewogICAgIENvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRl
eFN0b3JhZ2UzREVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9
ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgot
ICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6
ZWkgZGVwdGggPSAlZCIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhH
TGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAotICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQp
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgRVZFTlQoImdsVGV4R2VuZk9FUyIsICJjb250
ZXh0ID0gJWQsIEdMZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCBw
YXJhbSA9ICVmIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51
bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCisgICAgICAgICAgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1lKSwgcGFyYW0pOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlM0RFWFQoY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVU
ZXhHZW5mT0VTKGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0Qo
dGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhHZW5mKGNvb3JkLCBwbmFtZSwgcGFyYW0pOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTNERVhULCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShUZXhHZW5mT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQsIHBuYW1lLCBw
YXJhbSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UzRE11bHRpc2Ft
cGxlQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKQordm9pZCBHTF9BUElFTlRSWSBUZXhHZW5m
dk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0
ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xib29sZWFuICIKLSAgICAgICAgICAiZml4ZWRz
YW1wbGVsb2NhdGlvbnMgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKLSAgICAg
ICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFs
Zm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCi0gICAgICAgICAgR0xib29sZWFuVG9TdHJp
bmcoZml4ZWRzYW1wbGVsb2NhdGlvbnMpKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVGV4R2Vu
ZnZPRVMiLAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVt
IHBuYW1lID0gJXMsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAg
ICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6VGV4dHVyZUNvb3JkTmFtZSwgY29vcmQpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7
CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTNETXVsdGlz
YW1wbGUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQs
IGRlcHRoLCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW5mdk9FUyhjb250ZXh0LCBjb29yZCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwor
ICAgICAgICAgICAgY29udGV4dC0+dGV4R2VuZnYoY29vcmQsIHBuYW1lLCBwYXJhbXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTNETXVsdGlzYW1wbGUsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmaXhlZHNhbXBs
ZWxvY2F0aW9ucyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4R2VuZnZPRVMsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKQordm9pZCBHTF9BUElFTlRSWSBUZXhHZW5pT0VT
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9F
UyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVp
IHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAi
R0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0g
JWQsIEdMYm9vbGVhbiAiCi0gICAgICAgICAgImZpeGVkc2FtcGxlbG9jYXRpb25zID0gJXMiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLAotICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkc2FtcGxlbG9jYXRpb25z
KSk7CisgICAgRVZFTlQoImdsVGV4R2VuaU9FUyIsICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb29y
ZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNvb3JkTmFt
ZSwgY29vcmQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
R2VuUGFyYW1ldGVyLCBwbmFtZSksIHBhcmFtKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAg
ICAgVmFsaWRhdGVUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9FUyhjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZpeGVkc2FtcGxlbG9j
YXRpb25zKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVRleEdlbmlPRVMoY29udGV4dCwgY29vcmQsIHBuYW1lLCBwYXJhbSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3Jh
Z2UzRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOworICAgICAgICAgICAgY29udGV4dC0+dGV4
R2VuaShjb29yZCwgcG5hbWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBU
VVJFKFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFy
Z2V0UGFja2VkLCBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFRleEdlbmlPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb29yZCwgcG5h
bWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZU1lbTJE
RVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBU
ZXhHZW5pdk9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xUZXhTdG9yYWdlTWVtMkRFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0
ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9
ICVkLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IG9mZnNldCA9ICVsbHUiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksIGxldmVscywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIG1lbW9yeSwK
LSAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkpOworICAg
IEVWRU5UKCJnbFRleEdlbml2T0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
Y29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0IEdMaW50ICpwYXJhbXMgPSAweCUw
MTYiIFBSSXhQVFIKKyAgICAgICAgICAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlQ29vcmROYW1lLCBjb29yZCksCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVHZW5QYXJhbWV0ZXIsIHBuYW1l
KSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJERVhUKGNv
bnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBtZW1vcnlQYWNrZWQs
IG9mZnNldCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVUZXhHZW5pdk9FUyhjb250ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnRleFN0
b3JhZ2VNZW0yRCh0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5UGFja2Vk
LCBvZmZzZXQpOworICAgICAgICAgICAgY29udGV4dC0+dGV4R2VuaXYoY29vcmQsIHBuYW1lLCBw
YXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZU1lbTJE
RVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1lbW9yeVBhY2tl
ZCwgb2Zmc2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhHZW5pdk9FUywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgVGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtZW1vcnksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludDY0IG9mZnNldCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4R2VueE9FU0NvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJh
bSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVCIsCi0gICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMg
PSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMsICIKLSAgICAgICAgICAiR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2Nh
dGlvbnMgPSAlcywgR0x1aW50ICIKLSAgICAgICAgICAibWVtb3J5ID0gJXUsIEdMdWludDY0IG9m
ZnNldCA9ICVsbHUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCi0gICAgICAgICAgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3
aWR0aCwgaGVpZ2h0LAotICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkU2FtcGxlTG9j
YXRpb25zKSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkp
OworICAgIEVWRU5UKCJnbFRleEdlbnhPRVMiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
ZW51bSBjb29yZCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgR0xmaXhlZCBwYXJhbSA9IDB4JVgi
LCBDSUQoY29udGV4dCksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRl
eHR1cmVDb29yZE5hbWUsIGNvb3JkKSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6VGV4dHVyZUdlblBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBNZW1vcnlPYmpl
Y3RJRCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0
SUQ+KG1lbW9yeSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJE
TXVsdGlzYW1wbGVFWFQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
LCBmaXhlZFNhbXBsZUxvY2F0aW9ucywgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKKyAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVGV4R2VueE9FUyhjb250
ZXh0LCBjb29yZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGUo
dGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGZpeGVkU2FtcGxl
TG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CisgICAgICAgICAgICBjb250ZXh0LT50
ZXhHZW54KGNvb3JkLCBwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQs
IG9mZnNldCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4R2VueE9FUywgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGNvb3JkLCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElF
TlRSWSBUZXhTdG9yYWdlTWVtM0RFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGxldmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQg
b2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBUZXhHZW54dk9FU0NvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmaXhlZCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRleFN0b3JhZ2VNZW0zREVYVCIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVs
cyA9ICVkLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSAlcywgIgotICAgICAgICAgICJHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0x1
aW50IG1lbW9yeSA9ICV1LCAiCi0gICAgICAgICAgIkdMdWludDY0IG9mZnNldCA9ICVsbHUiLAot
ICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVUYXJnZXQsIHRhcmdldCksIGxldmVscywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVu
dW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBtZW1vcnksCi0gICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihv
ZmZzZXQpKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVGV4R2VueHZPRVMiLAorICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTGVudW0gY29vcmQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNvbnN0
IEdMZml4ZWQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUNvb3JkTmFt
ZSwgY29vcmQpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZUdl
blBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBNZW1vcnlPYmplY3RJ
RCBtZW1vcnlQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+
KG1lbW9yeSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVUZXhT
dG9yYWdlTWVtM0RFWFQoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9y
bWF0LCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQsIGRlcHRoLCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVUZXhHZW54dk9FUyhjb250ZXh0LCBjb29yZCwg
cG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2VNZW0zRCh0YXJnZXRQYWNrZWQsIGxldmVscywg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnRleEdlbnh2KGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2VNZW0zREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgbGV2ZWxzLAotICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleEdlbnh2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29vcmQs
IHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdl
TWVtM0RNdWx0aXNhbXBsZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50NjQgb2Zmc2V0KQordm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTJEQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKnBpeGVscykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6
OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBs
ZUVYVCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNp
emVpIHNhbXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMsICIKLSAgICAgICAg
ICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRo
ID0gJWQsIEdMYm9vbGVhbiAiCi0gICAgICAgICAgImZpeGVkU2FtcGxlTG9jYXRpb25zID0gJXMs
IEdMdWludCBtZW1vcnkgPSAldSwgR0x1aW50NjQgb2Zmc2V0ID0gJWxsdSIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGFyZ2V0KSwgc2FtcGxlcywKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
RGVmYXVsdEdyb3VwLCBpbnRlcm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAotICAg
ICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkU2FtcGxlTG9jYXRpb25zKSwgbWVtb3J5LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkpOworICAgIEVWRU5UKCJnbFRl
eEltYWdlMkQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQgPSAlZCwgR0xzaXplaSAiCisg
ICAgICAgICAgIndpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMaW50IGJvcmRlciA9
ICVkLCBHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gIgorICAgICAgICAgICIlcywg
Y29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVp
bnRwdHJfdClwaXhlbHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKLSAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVjdElEPihtZW1vcnkpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2VNZW0zRE11bHRpc2FtcGxlRVhUKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNh
bXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXB0aCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBhY2tlZCwg
b2Zmc2V0KSk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkQo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZSh0
YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGZpeGVk
U2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQpOworICAgICAgICAgICAgY29udGV4dC0+dGV4
SW1hZ2UyRCh0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyLCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUs
IHBpeGVscyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVt
M0RNdWx0aXNhbXBsZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2Ft
cGxlcywKLSAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhJbWFnZTJELCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHBpeGVscyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRleFN1YkltYWdlMkRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQordm9pZCBH
TF9BUElFTlRSWSBUZXhJbWFnZTNEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4ZWxzKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbFRleFN1YkltYWdlMkQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51
bSB0YXJnZXQgPSAlcywgR0xpbnQgbGV2ZWwgPSAlZCwgR0xpbnQgeG9mZnNldCA9ICVkLCBHTGlu
dCB5b2Zmc2V0ID0gIgotICAgICAgICAgICIlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVp
IGhlaWdodCA9ICVkLCBHTGVudW0gZm9ybWF0ID0gJXMsIEdMZW51bSB0eXBlID0gJXMsICIKLSAg
ICAgICAgICAiY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICAgIHdpZHRoLCBo
ZWlnaHQsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwK
KyAgICBFVkVOVCgiZ2xUZXhJbWFnZTNEIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IGludGVybmFsZm9ybWF0ID0g
JWQsIEdMc2l6ZWkgIgorICAgICAgICAgICJ3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVk
LCBHTHNpemVpIGRlcHRoID0gJWQsIEdMaW50IGJvcmRlciA9ICVkLCBHTGVudW0gZm9ybWF0ID0g
IgorICAgICAgICAgICIlcywgR0xlbnVtIHR5cGUgPSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0g
MHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwKKyAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxGb3JtYXQsIGZvcm1hdCksCiAgICAgICAgICAgR0xlbnVt
VG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsVHlwZSwgdHlwZSksICh1aW50cHRyX3QpcGl4ZWxz
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhTdWJJbWFnZTJEKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRl
eEltYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2Uy
RCh0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7
CisgICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdWJJbWFnZTJELCBpc0NhbGxWYWxpZCwgY29udGV4dCwg
dGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAg
ICAgICB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgIEFOR0xF
X0NBUFRVUkUoVGV4SW1hZ2UzRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAordm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBpeGVscykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xUZXhTdWJJbWFnZTNEIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0
ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNl
dCA9ICIKLSAgICAgICAgICAiJWQsIEdMaW50IHpvZmZzZXQgPSAlZCwgR0xzaXplaSB3aWR0aCA9
ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsICIKLSAgICAgICAg
ICAiR0xlbnVtIGZvcm1hdCA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpwaXhl
bHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsCi0gICAgICAgICAgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKLSAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJf
dClwaXhlbHMpOwotCi0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0
YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4U3ViSW1hZ2UzRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKLSAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50
ZXhTdWJJbWFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
cHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Ci0gICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShUZXhTdWJJbWFnZTNELCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIH0KLX0KLQot
dm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTNET0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpCi17Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVGV4U3ViSW1hZ2UzRE9FUyIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4
b2Zmc2V0ID0gJWQsIEdMaW50IHlvZmZzZXQgPSAiCi0gICAgICAgICAgIiVkLCBHTGludCB6b2Zm
c2V0ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgR0xzaXpl
aSBkZXB0aCA9ICVkLCAiCi0gICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAlcywgR0xlbnVtIHR5
cGUgPSAlcywgY29uc3Qgdm9pZCAqcGl4ZWxzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJn
ZXQsIHRhcmdldCksIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAotICAgICAgICAgIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxG
b3JtYXQsIGZvcm1hdCksCisgICAgRVZFTlQoImdsVGV4SW1hZ2UzRE9FUyIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgR0xzaXplaSAiCisgICAgICAgICAgIndpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xpbnQgYm9yZGVyID0g
JWQsIEdMZW51bSBmb3JtYXQgPSAiCisgICAgICAgICAgIiVzLCBHTGVudW0gdHlwZSA9ICVzLCBj
b25zdCB2b2lkICpwaXhlbHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0
KSwgbGV2ZWwsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkludGVybmFs
Rm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsCisg
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsRm9ybWF0LCBmb3JtYXQp
LAogICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFR5cGUsIHR5cGUp
LCAodWludHB0cl90KXBpeGVscyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4
dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBU
ZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVUZXhTdWJJbWFnZTNE
T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOworICAgICAgICAgICAgIFZhbGlkYXRlVGV4
SW1hZ2UzRE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhJbWFnZTNEKHRhcmdldFBhY2tlZCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgICAg
IH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdWJJbWFnZTNET0VTLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleEltYWdlM0RPRVMsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHBpeGVscyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3NDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnZhcnlpbmdzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXJN
b2RlKQordm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJaXZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xjaGFyICpjb25zdCp2YXJ5aW5ncyA9
ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIsIEdMZW51bSBidWZmZXJNb2RlID0gJXMi
LAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgY291bnQsICh1aW50cHRyX3QpdmFy
eWluZ3MsCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgYnVmZmVyTW9kZSkpOworICAgIEVWRU5UKAorICAgICAgICAiZ2xUZXhQYXJhbWV0ZXJJaXYi
LAorICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFt
ZSA9ICVzLCBjb25zdCBHTGludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIi
LAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0
dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY291bnQsIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7
CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXYoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxp
ZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhwcm9ncmFtUGFja2VkLCBjb3VudCwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgICAg
ICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVySWl2KHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOworICAgICAgICBBTkdMRV9D
QVBUVVJFKFRleFBhcmFtZXRlcklpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFRyYW5zbGF0
ZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeikKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySWl2T0VTQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xUcmFuc2xhdGVmIiwgImNvbnRleHQgPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQg
eSA9ICVmLCBHTGZsb2F0IHogPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCB4LCB5LCB6
KTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVGV4UGFyYW1ldGVySWl2T0VTIiwKKyAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xpbnQgKnBhcmFtcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGFyZ2V0KSwKKyAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVQYXJh
bWV0ZXJOYW1lLCBwbmFtZSksICh1aW50cHRyX3QpcGFyYW1zKTsKIAogICAgIGlmIChjb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVHJhbnNsYXRlZihjb250
ZXh0LCB4LCB5LCB6KSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJh
bWV0ZXJJaXZPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dHJh
bnNsYXRlZih4LCB5LCB6KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcklpdih0
YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NB
UFRVUkUoVHJhbnNsYXRlZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHopOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcklpdk9FUywgaXNDYWxsVmFsaWQsIGNvbnRleHQs
IHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIFRyYW5zbGF0ZXhDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmaXhlZCB4LCBH
TGZpeGVkIHksIEdMZml4ZWQgeikKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVySXVpdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqcGFyYW1zKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbFRyYW5zbGF0ZXgiLCAiY29udGV4dCA9ICVkLCBHTGZpeGVkIHggPSAweCVYLCBH
TGZpeGVkIHkgPSAweCVYLCBHTGZpeGVkIHogPSAweCVYIiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIHgsIHksIHopOworICAgIEVWRU5UKAorICAgICAgICAiZ2xUZXhQYXJhbWV0ZXJJdWl2IiwK
KyAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUg
PSAlcywgY29uc3QgR0x1aW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIs
CisgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1
cmVUYXJnZXQsIHRhcmdldCksCisgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5z
bGF0ZXgoY29udGV4dCwgeCwgeSwgeikpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFy
Z2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVGV4UGFyYW1ldGVySXVpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMp
KTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGV4KHgsIHksIHopOworICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1l
dGVySXVpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVHJhbnNsYXRleCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHgsIHksIHop
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlckl1aXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtMWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQg
bG9jYXRpb24sIEdMZmxvYXQgdjApCit2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlckl1aXZP
RVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnBh
cmFtcykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtMWYiLCAiY29udGV4dCA9ICVkLCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAg
bG9jYXRpb24sIHYwKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVGV4UGFyYW1ldGVySXVpdk9F
UyIsCisgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBu
YW1lID0gJXMsIGNvbnN0IEdMdWludCAqcGFyYW1zID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAg
ICIiLAorICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpU
ZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUsIHBuYW1lKSwgKHVpbnRwdHJfdClwYXJhbXMpOwogCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVV
bmlmb3JtMWYoY29udGV4dCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
eXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJdWl2T0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgICAgICAgICAgY29u
dGV4dC0+dGV4UGFyYW1ldGVySXVpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIHYwKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhQYXJhbWV0ZXJJ
dWl2T0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW1z
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFmdkNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcmZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHBhcmFtKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm0x
ZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAiCi0gICAgICAgICAgIjB4JTAx
NiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwg
KHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVGV4UGFyYW1ldGVyZiIsCisgICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywg
R0xmbG9hdCBwYXJhbSA9ICVmIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAgICAgICAgIEdMZW51
bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlUGFyYW1ldGVyTmFtZSwgcG5hbWUpLCBwYXJh
bSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMWZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwg
dmFsdWUpKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcmYo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyZih0
YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQ
VFVSRShVbmlmb3JtMWZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2
YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVyZiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgVW5pZm9ybTFpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50
IGxvY2F0aW9uLCBHTGludCB2MCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyZnZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgQ29udGV4
dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQo
ImdsVW5pZm9ybTFpIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQg
djAgPSAlZCIsIENJRChjb250ZXh0KSwgbG9jYXRpb24sCi0gICAgICAgICAgdjApOworICAgIEVW
RU5UKCJnbFRleFBhcmFtZXRlcmZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMgPSAi
CisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCks
IEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlUGFyYW1ldGVyTmFtZSwg
cG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xaShjb250ZXh0LCBsb2NhdGlv
biwgdjApKTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFBhcmFtZXRlcmZ2
KGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaShsb2Nh
dGlvbiwgdjApOworICAgICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyZnYodGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0xaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlm
b3JtMWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZ
IFRleFBhcmFtZXRlcmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBwYXJhbSkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgKLSAgICAgICAgImdsVW5pZm9ybTFpdiIsCi0gICAgICAgICJjb250ZXh0ID0gJWQsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xpbnQgKnZhbHVl
ID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAgICBDSUQoY29udGV4dCksIGxv
Y2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVGV4UGFyYW1l
dGVyaSIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVu
dW0gcG5hbWUgPSAlcywgR0xpbnQgcGFyYW0gPSAlZCIsIENJRChjb250ZXh0KSwKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVBhcmFtZXRlck5hbWUs
IHBuYW1lKSwgcGFyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFpdihjb250ZXh0LCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJpKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRl
eFBhcmFtZXRlcmkodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFyYW0pOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFBhcmFtZXRlcmks
IGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbSk7CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xdWlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4
UGFyYW1ldGVyaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqcGFyYW1zKQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbFVuaWZvcm0xdWkiLCAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlv
biA9ICVkLCBHTHVpbnQgdjAgPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBsb2NhdGlv
biwgdjApOworICAgIEVWRU5UKAorICAgICAgICAiZ2xUZXhQYXJhbWV0ZXJpdiIsCisgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywgR0xlbnVtIHBuYW1lID0gJXMsIGNv
bnN0IEdMaW50ICpwYXJhbXMgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAg
IENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQs
IHRhcmdldCksCisgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlUGFy
YW1ldGVyTmFtZSwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xdWkoY29u
dGV4dCwgbG9jYXRpb24sIHYwKSk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVU
ZXhQYXJhbWV0ZXJpdihjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0
ZXJpdih0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTF1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2
MCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVyaXYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtMXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1
ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyeENvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Zml4ZWQgcGFyYW0pCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTF1aXYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29u
c3QgR0x1aW50ICp2YWx1ZSA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsK
KyAgICBFVkVOVCgiZ2xUZXhQYXJhbWV0ZXJ4IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMZW51bSBwbmFtZSA9ICVzLCBHTGZpeGVkIHBhcmFtID0gMHgl
WCIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1H
cm91cDo6R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCBwYXJhbSk7CiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRh
dGVVbmlmb3JtMXVpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAg
IFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJ4KGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgcG5hbWUsIHBhcmFtKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTF1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1
ZSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJ4KHRhcmdldFBhY2tlZCwgcG5h
bWUsIHBhcmFtKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWl2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVGV4UGFyYW1ldGVyeCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGZs
b2F0IHYwLCBHTGZsb2F0IHYxKQordm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJ4dkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZml4ZWQgKnBhcmFtcykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xVbmlmb3JtMmYiLCAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0
IHYwID0gJWYsIEdMZmxvYXQgdjEgPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2Nh
dGlvbiwgdjAsIHYxKTsKKyAgICBFVkVOVCgiZ2xUZXhQYXJhbWV0ZXJ4diIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTGVudW0gcG5hbWUgPSAlcywgY29u
c3QgR0xmaXhlZCAqcGFyYW1zID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisg
ICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVy
ZVRhcmdldCwgdGFyZ2V0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6
R2V0VGV4dHVyZVBhcmFtZXRlciwgcG5hbWUpLCAodWludHB0cl90KXBhcmFtcyk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtMmYoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSkpOworICAgICAgICBU
ZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFyYW1ldGVyeHYoY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBwbmFtZSwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOworICAg
ICAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyeHYodGFyZ2V0UGFja2VkLCBwbmFtZSwgcGFy
YW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yZiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFRleFBhcmFtZXRlcnh2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFt
ZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJmdkNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3Jh
Z2UxREVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtMmZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVW
RU5UKCJnbFRleFN0b3JhZ2UxREVYVCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQg
PSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdl
dCksIGxldmVscywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJu
YWxGb3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJmdihjb250ZXh0LCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTFERVhUKGNvbnRleHQsIHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZTFEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybTJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UxREVYVCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMmlDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSkKK3ZvaWQg
R0xfQVBJRU5UUlkgVGV4U3RvcmFnZTJEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTJpIiwgImNvbnRleHQgPSAlZCwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwgR0xpbnQgdjEgPSAlZCIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBFVkVOVCgiZ2xUZXhT
dG9yYWdlMkQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcywg
R0xzaXplaSBsZXZlbHMgPSAlZCwgR0xlbnVtIGludGVybmFsZm9ybWF0ID0gJXMsICIKKyAgICAg
ICAgICAiR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkIiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0
LCB0YXJnZXQpLCBsZXZlbHMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6
OkludGVybmFsRm9ybWF0LCBpbnRlcm5hbGZvcm1hdCksIHdpZHRoLCBoZWlnaHQpOwogCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0
dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yaShjb250ZXh0LCBsb2NhdGlvbiwgdjAs
IHYxKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJEKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwg
djAsIHYxKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UyRCh0YXJnZXRQYWNrZWQs
IGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRp
b24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZTJELCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KLQotdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtMml2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCisKK3Zv
aWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTJERVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoCi0gICAgICAg
ICJnbFVuaWZvcm0yaXYiLAotICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9
ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICp2YWx1ZSA9IDB4JTAxNiIgUFJJ
eFBUUgotICAgICAgICAiIiwKLSAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQs
ICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UyREVYVCIsCisgICAg
ICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9
ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdp
ZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIGxldmVs
cywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQs
IGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0
YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTJpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7Cisg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZh
bGlkYXRlVGV4U3RvcmFnZTJERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlMkQodGFyZ2V0UGFja2Vk
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2Nh
dGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlMkRF
WFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQog
Ci12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0ydWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKQordm9pZCBHTF9BUElFTlRS
WSBUZXhTdG9yYWdlMkRNdWx0aXNhbXBsZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xVbmlmb3JtMnVpIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50
IHYwID0gJXUsIEdMdWludCB2MSA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0
aW9uLCB2MCwgdjEpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxl
cyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVp
IHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxv
Y2F0aW9ucyA9ICVzIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpUZXh0dXJlVGFyZ2V0LCB0YXJnZXQpLCBzYW1wbGVzLAorICAgICAgICAgIEdM
ZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQp
LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkc2FtcGxl
bG9jYXRpb25zKSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTJ1aShj
b250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlzYW1w
bGUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGZp
eGVkc2FtcGxlbG9jYXRpb25zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwg
c2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMnVpLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbG9jYXRpb24sIHYwLCB2MSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFn
ZTJETXVsdGlzYW1wbGUsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBs
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJ1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQ
SUVOVFJZIFRleFN0b3JhZ2UzRENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBkZXB0aCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtMnVpdiIsCi0gICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBH
THVpbnQgKnZhbHVlID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAg
IEVWRU5UKCJnbFRleFN0b3JhZ2UzRCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVt
IHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQg
PSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0g
JWQsIEdMc2l6ZWkgZGVwdGggPSAlZCIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1U
b1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5hbEZvcm1hdCwgaW50ZXJu
YWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3Jt
MnVpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgIFRleHR1cmVU
eXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVUZXhTdG9yYWdlM0QoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJ1aXYobG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlM0QodGFy
Z2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMnVpdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFRleFN0b3JhZ2UzRCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2
ZWxzLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1Vbmlmb3JtM2ZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxv
YXQgdjEsIEdMZmxvYXQgdjIpCit2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UzREVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0
aCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtM2YiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQs
IEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZiwgR0xmbG9hdCB2MSA9ICVmLCBH
TGZsb2F0IHYyID0gJWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2
MSwgdjIpOworICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UzREVYVCIsCisgICAgICAgICAgImNvbnRl
eHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIGxldmVscyA9ICVkLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdM
c2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCIsCisgICAgICAgICAgQ0lEKGNv
bnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0
KSwgbGV2ZWxzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpJbnRlcm5h
bEZvcm1hdCwgaW50ZXJuYWxmb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVVbmlmb3JtM2YoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKKyAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2UzREVYVChjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51
bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICAgICAgY29udGV4dC0+dGV4
U3RvcmFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNm
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UzREVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0zZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRS
WSBUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykKIHsK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsK
LSAgICBFVkVOVCgiZ2xVbmlmb3JtM2Z2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQgKnZhbHVl
ID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRl
eFN0b3JhZ2UzRE11bHRpc2FtcGxlIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQg
PSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0g
JWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xib29sZWFuICIKKyAgICAgICAgICAiZml4ZWRzYW1w
bGVsb2NhdGlvbnMgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywKKyAgICAgICAg
ICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxGb3JtYXQsIGludGVybmFsZm9y
bWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCisgICAgICAgICAgR0xib29sZWFuVG9TdHJpbmco
Zml4ZWRzYW1wbGVsb2NhdGlvbnMpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVV
bmlmb3JtM2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVUZXhT
dG9yYWdlM0RNdWx0aXNhbXBsZShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlaWdodCwgZGVwdGgsIGZpeGVkc2FtcGxlbG9jYXRpb25zKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNm
dihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3Jh
Z2UzRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xF
X0NBUFRVUkUoVW5pZm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3JhZ2UzRE11bHRpc2FtcGxl
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBzYW1wbGVzLAorICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZml4ZWRz
YW1wbGVsb2NhdGlvbnMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotVW5pZm9ybTNp
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwg
R0xpbnQgdjEsIEdMaW50IHYyKQordm9pZCBHTF9BUElFTlRSWSBUZXhTdG9yYWdlM0RNdWx0aXNh
bXBsZU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtM2kiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
aW50IGxvY2F0aW9uID0gJWQsIEdMaW50IHYwID0gJWQsIEdMaW50IHYxID0gJWQsIEdMaW50IHYy
ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwor
ICAgIEVWRU5UKCJnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgc2FtcGxlcyA9ICVkLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQgPSAlcywgIgorICAgICAgICAgICJHTHNpemVpIHdpZHRoID0gJWQs
IEdMc2l6ZWkgaGVpZ2h0ID0gJWQsIEdMc2l6ZWkgZGVwdGggPSAlZCwgR0xib29sZWFuICIKKyAg
ICAgICAgICAiZml4ZWRzYW1wbGVsb2NhdGlvbnMgPSAlcyIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwg
c2FtcGxlcywKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6SW50ZXJuYWxG
b3JtYXQsIGludGVybmFsZm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCisgICAgICAgICAg
R0xib29sZWFuVG9TdHJpbmcoZml4ZWRzYW1wbGVsb2NhdGlvbnMpKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVy
ZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2koY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIp
KTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhTdG9yYWdlM0RNdWx0aXNhbXBsZU9FUyhjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZpeGVkc2FtcGxlbG9j
YXRpb25zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnRleFN0b3JhZ2UzRE11bHRpc2FtcGxlKHRhcmdldFBhY2tlZCwgc2FtcGxlcywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNpLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRleFN0b3Jh
Z2UzRE11bHRpc2FtcGxlT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBz
YW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtM2l2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit2b2lk
IEdMX0FQSUVOVFJZIFRleFN0b3JhZ2VNZW0yREVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
IG9mZnNldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgKLSAgICAgICAgImdsVW5pZm9ybTNpdiIsCi0gICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwg
Y29uc3QgR0xpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICIiLAotICAgICAg
ICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAg
RVZFTlQoImdsVGV4U3RvcmFnZU1lbTJERVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGVudW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAlZCwgR0x1aW50IG1lbW9yeSA9ICV1LCBHTHVpbnQ2NCBvZmZzZXQgPSAlbGx1IiwKKyAg
ICAgICAgICBDSUQoY29udGV4dCksIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpUZXh0dXJl
VGFyZ2V0LCB0YXJnZXQpLCBsZXZlbHMsCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVt
R3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3JtYXQpLCB3aWR0aCwgaGVpZ2h0LCBtZW1v
cnksCisgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihvZmZzZXQpKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIE1lbW9yeU9iamVjdElEIG1l
bW9yeVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPE1lbW9yeU9iamVj
dElEPihtZW1vcnkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5pZm9ybTNpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVl
KSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgIFZhbGlkYXRlVGV4U3RvcmFnZU1lbTJERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2
ZWxzLCBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVpZ2h0LCBtZW1vcnlQYWNrZWQsIG9mZnNldCkpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYo
bG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdl
TWVtMkQodGFyZ2V0UGFja2VkLCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeVBhY2tlZCwgb2Zm
c2V0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zaXYsIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShUZXhTdG9yYWdlTWVtMkRFWFQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWQotVW5pZm9ybTN1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBs
b2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MikKK3ZvaWQgR0xfQVBJRU5U
UlkgVGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtZW1vcnksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0
IG9mZnNldCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtM3VpIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0g
JXUsIEdMdWludCB2MiA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZUVYVCIs
CisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNh
bXBsZXMgPSAlZCwgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xz
aXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTGJvb2xlYW4gZml4ZWRTYW1w
bGVMb2NhdGlvbnMgPSAlcywgR0x1aW50ICIKKyAgICAgICAgICAibWVtb3J5ID0gJXUsIEdMdWlu
dDY0IG9mZnNldCA9ICVsbHUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OlRleHR1cmVUYXJnZXQsIHRhcmdldCksIHNhbXBsZXMsCisgICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgaW50ZXJuYWxGb3Jt
YXQpLCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgIEdMYm9vbGVhblRvU3RyaW5nKGZpeGVkU2Ft
cGxlTG9jYXRpb25zKSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9m
ZnNldCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgTWVtb3J5T2Jq
ZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVt
b3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM3VpKGNvbnRleHQsIGxvY2F0aW9uLCB2MCwg
djEsIHYyKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVRleFN0b3JhZ2VNZW0yRE11bHRpc2FtcGxlRVhUKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxlcywg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlaWdodCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBhY2tlZCwg
b2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAgICAg
ICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtMkRNdWx0aXNhbXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBs
ZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZml4ZWRTYW1wbGVMb2NhdGlvbnMsIG1lbW9yeVBh
Y2tlZCwgb2Zmc2V0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0z
dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVGV4U3RvcmFnZU1lbTJETXVsdGlzYW1wbGVFWFQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1v
cnlQYWNrZWQsIG9mZnNldCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0z
dWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRS
WSBUZXhTdG9yYWdlTWVtM0RFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgb2Zm
c2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm0zdWl2IiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMdWlu
dCAqdmFsdWUgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZF
TlQoImdsVGV4U3RvcmFnZU1lbTNERVhUIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVu
dW0gdGFyZ2V0ID0gJXMsIEdMc2l6ZWkgbGV2ZWxzID0gJWQsIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCA9ICVzLCAiCisgICAgICAgICAgIkdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQg
PSAlZCwgR0xzaXplaSBkZXB0aCA9ICVkLCBHTHVpbnQgbWVtb3J5ID0gJXUsICIKKyAgICAgICAg
ICAiR0x1aW50NjQgb2Zmc2V0ID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWxzLAor
ICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGludGVy
bmFsRm9ybWF0KSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIG1lbW9yeSwKKyAgICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG9mZnNldCkpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlw
ZT4odGFyZ2V0KTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
PQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlm
b3JtM3Vpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3Rv
cmFnZU1lbTNERVhUKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1h
dCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
LCBkZXB0aCwgbWVtb3J5UGFja2VkLCBvZmZzZXQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM3Vpdihsb2NhdGlvbiwg
Y291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRleFN0b3JhZ2VNZW0zRCh0YXJn
ZXRQYWNrZWQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeVBhY2tlZCwgb2Zmc2V0
KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zdWl2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NB
UFRVUkUoVGV4U3RvcmFnZU1lbTNERVhULCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFj
a2VkLCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBtZW1vcnlQYWNrZWQsIG9mZnNldCk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFVuaWZvcm00ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB2MSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdjIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHYzKQordm9pZCBHTF9BUElFTlRSWSBUZXhTdG9y
YWdlTWVtM0RNdWx0aXNhbXBsZUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1lbW9yeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50NjQgb2Zmc2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm00ZiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmLCBHTGZs
b2F0IHYxID0gJWYsIEdMZmxvYXQgdjIgPSAlZiwgIgotICAgICAgICAgICJHTGZsb2F0IHYzID0g
JWYiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsK
KyAgICBFVkVOVCgiZ2xUZXhTdG9yYWdlTWVtM0RNdWx0aXNhbXBsZUVYVCIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzLCBHTHNpemVpIHNhbXBsZXMgPSAlZCwg
R0xlbnVtIGludGVybmFsRm9ybWF0ID0gJXMsICIKKyAgICAgICAgICAiR0xzaXplaSB3aWR0aCA9
ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsIEdMYm9vbGVhbiAi
CisgICAgICAgICAgImZpeGVkU2FtcGxlTG9jYXRpb25zID0gJXMsIEdMdWludCBtZW1vcnkgPSAl
dSwgR0x1aW50NjQgb2Zmc2V0ID0gJWxsdSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgc2FtcGxlcywK
KyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBpbnRl
cm5hbEZvcm1hdCksIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAorICAgICAgICAgIEdMYm9vbGVhblRv
U3RyaW5nKGZpeGVkU2FtcGxlTG9jYXRpb25zKSwgbWVtb3J5LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KG9mZnNldCkpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRmKGNvbnRleHQs
IGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4o
dGFyZ2V0KTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN0b3JhZ2VN
ZW0zRE11bHRpc2FtcGxlRVhUKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZml4ZWRTYW1wbGVMb2Nh
dGlvbnMsIG1lbW9yeVBhY2tlZCwgb2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwg
djEsIHYyLCB2Myk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdG9yYWdlTWVtM0RNdWx0aXNh
bXBsZSh0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVybmFsRm9ybWF0LCB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgs
IGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShUZXhTdG9yYWdlTWVtM0RN
dWx0aXNhbXBsZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgc2FtcGxl
cywKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZpeGVkU2FtcGxlTG9jYXRpb25zLCBtZW1vcnlQYWNrZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRm
dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFRl
eFN1YkltYWdlMkRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4
ZWxzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm00ZnYiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0xmbG9h
dCAqdmFsdWUgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZF
TlQoImdsVGV4U3ViSW1hZ2UyRCIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRh
cmdldCA9ICVzLCBHTGludCBsZXZlbCA9ICVkLCBHTGludCB4b2Zmc2V0ID0gJWQsIEdMaW50IHlv
ZmZzZXQgPSAiCisgICAgICAgICAgIiVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVp
Z2h0ID0gJWQsIEdMZW51bSBmb3JtYXQgPSAlcywgR0xlbnVtIHR5cGUgPSAlcywgIgorICAgICAg
ICAgICJjb25zdCB2b2lkICpwaXhlbHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwg
dGFyZ2V0KSwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgd2lkdGgsIGhlaWdo
dCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OlBpeGVsRm9ybWF0LCBmb3JtYXQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbFR5cGUsIHR5cGUpLCAodWlu
dHB0cl90KXBpeGVscyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtNGZ2KGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdmFsdWUpKTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRl
VGV4U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRp
b24sIGNvdW50LCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRh
cmdldFBhY2tlZCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgcGl4ZWxzKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00ZnYsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShU
ZXhTdWJJbWFnZTJELCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1Vbmlm
b3JtNGlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMaW50
IHYwLCBHTGludCB2MSwgR0xpbnQgdjIsIEdMaW50IHYzKQordm9pZCBHTF9BUElFTlRSWSBUZXhT
dWJJbWFnZTNEQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
aXhlbHMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybTRpIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCBH
TGludCB2MiA9ICVkLCBHTGludCAiCi0gICAgICAgICAgInYzID0gJWQiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBFVkVOVCgiZ2xUZXhT
dWJJbWFnZTNEIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMs
IEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQgeW9mZnNldCA9ICIK
KyAgICAgICAgICAiJWQsIEdMaW50IHpvZmZzZXQgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBH
THNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsICIKKyAgICAgICAgICAiR0xl
bnVtIGZvcm1hdCA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lkICpwaXhlbHMgPSAw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWwsIHhvZmZzZXQsIHlv
ZmZzZXQsCisgICAgICAgICAgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKKyAgICAgICAgICBHTGVu
dW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVpbnRwdHJfdClwaXhl
bHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTRpKGNvbnRleHQs
IGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlM0QoY29udGV4
dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7
CisgICAgICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRhcmdldFBhY2tlZCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAg
ICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNGksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFRl
eFN1YkltYWdlM0QsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4
b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFVuaWZvcm00aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKK3Zv
aWQgR0xfQVBJRU5UUlkgVGV4U3ViSW1hZ2UzRE9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGl4
ZWxzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKAotICAgICAgICAiZ2xVbmlmb3JtNGl2IiwKLSAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25z
dCBHTGludCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIKLSAgICAgICAgIiIsCi0gICAgICAgIENJ
RChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVO
VCgiZ2xUZXhTdWJJbWFnZTNET0VTIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGVudW0g
dGFyZ2V0ID0gJXMsIEdMaW50IGxldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAlZCwgR0xpbnQg
eW9mZnNldCA9ICIKKyAgICAgICAgICAiJWQsIEdMaW50IHpvZmZzZXQgPSAlZCwgR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVkLCBHTHNpemVpIGRlcHRoID0gJWQsICIKKyAg
ICAgICAgICAiR0xlbnVtIGZvcm1hdCA9ICVzLCBHTGVudW0gdHlwZSA9ICVzLCBjb25zdCB2b2lk
ICpwaXhlbHMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBH
TGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VGV4dHVyZVRhcmdldCwgdGFyZ2V0KSwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsCisgICAgICAgICAgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpQaXhlbEZvcm1hdCwgZm9ybWF0KSwKKyAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6UGl4ZWxUeXBlLCB0eXBlKSwgKHVp
bnRwdHJfdClwaXhlbHMpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9y
bTRpdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSk7CisgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3ViSW1h
Z2UzRE9FUyhjb250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UzRCh0YXJn
ZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCwgZm9ybWF0LCB0eXBl
LCBwaXhlbHMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRpdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAgICAgICBB
TkdMRV9DQVBUVVJFKFRleFN1YkltYWdlM0RPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1Vbmlmb3JtNHVpQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50
IHYyLCBHTHVpbnQgdjMpCit2b2lkIEdMX0FQSUVOVFJZIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z3NDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMY2hhciAqY29uc3QgKnZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXJNb2RlKQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbFVuaWZvcm00dWkiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSwgR0x1aW50IHYy
ID0gJXUsICIKLSAgICAgICAgICAiR0x1aW50IHYzID0gJXUiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBFVkVOVCgiZ2xUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMY2hhciAqY29uc3QqdmFyeWluZ3Mg
PSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAiLCBHTGVudW0gYnVmZmVyTW9kZSA9ICVz
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGNvdW50LCAodWludHB0cl90KXZh
cnlpbmdzLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3Jv
dXAsIGJ1ZmZlck1vZGUpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVu
aWZvcm00dWkoY29udGV4dCwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgY291bnQsIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgY29udGV4
dC0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtUGFja2VkLCBjb3VudCwgdmFyeWlu
Z3MsIGJ1ZmZlck1vZGUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9y
bTR1aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
IHZhcnlpbmdzLCBidWZmZXJNb2RlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTR1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCit2b2lkIEdMX0FQ
SUVOVFJZIFRyYW5zbGF0ZWZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xmbG9hdCB4
LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtNHVpdiIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3Vu
dCA9ICVkLCBjb25zdCBHTHVpbnQgKnZhbHVlID0gIgotICAgICAgICAgICIweCUwMTYiIFBSSXhQ
VFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRy
X3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFRyYW5zbGF0ZWYiLCAiY29udGV4dCA9ICVkLCBHTGZs
b2F0IHggPSAlZiwgR0xmbG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9ICVmIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIHgsIHksIHopOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTR1aXYoY29udGV4
dCwgbG9jYXRpb24sIGNvdW50LCB2YWx1ZSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVUcmFuc2xhdGVmKGNvbnRleHQsIHgsIHksIHopKTsKICAgICAgICAg
aWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
NHVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnRyYW5z
bGF0ZWYoeCwgeSwgeik7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
NHVpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFRyYW5zbGF0ZWYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5
LCB6KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybUJsb2NrQmluZGluZ0Nv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
dW5pZm9ybUJsb2NrQmluZGluZykKK3ZvaWQgR0xfQVBJRU5UUlkgVHJhbnNsYXRleENvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQog
ewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgp
OwotICAgIEVWRU5UKCJnbFVuaWZvcm1CbG9ja0JpbmRpbmciLAotICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUsIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCA9ICV1
LCBHTHVpbnQgIgotICAgICAgICAgICJ1bmlmb3JtQmxvY2tCaW5kaW5nID0gJXUiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgcHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9j
a0JpbmRpbmcpOworICAgIEVWRU5UKCJnbFRyYW5zbGF0ZXgiLCAiY29udGV4dCA9ICVkLCBHTGZp
eGVkIHggPSAweCVYLCBHTGZpeGVkIHkgPSAweCVYLCBHTGZpeGVkIHogPSAweCVYIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIHgsIHksIHopOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1CbG9ja0JpbmRpbmcoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgdW5p
Zm9ybUJsb2NrSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0JpbmRpbmcpKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVHJhbnNsYXRleChjb250ZXh0LCB4LCB5LCB6KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwg
dW5pZm9ybUJsb2NrQmluZGluZyk7CisgICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGV4KHgs
IHksIHopOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybUJsb2NrQmlu
ZGluZywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIHVuaWZvcm1CbG9ja0lu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CbG9ja0JpbmRpbmcpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFRyYW5zbGF0ZXgsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB6
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJmdkNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
K3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFmQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBz
dGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm1NYXRy
aXgyZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdM
c2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCi0gICAg
ICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2Up
LCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtMWYiLCAiY29udGV4dCA9
ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYiLCBDSUQoY29udGV4dCks
CisgICAgICAgICAgbG9jYXRpb24sIHYwKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyZnYoY29udGV4dCwg
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZv
cm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5pZm9ybTFmKGNvbnRleHQsIGxvY2F0aW9uUGFja2Vk
LCB2MCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvblBhY2tlZCwgdjAp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJmdiwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9j
YXRpb25QYWNrZWQsIHYwKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1h
dHJpeDJ4M2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xZnZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFVuaWZvcm1N
YXRyaXgyeDNmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIK
LSAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5z
cG9zZSksICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFVuaWZvcm0xZnYiLAorICAg
ICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQg
PSAlZCwgY29uc3QgR0xmbG9hdCAqdmFsdWUgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJf
dCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MngzZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVVbmlmb3JtMWZ2KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT51bmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4Mngz
ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xZnYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJ4NGZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm0xaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlv
biwgR0xpbnQgdjApCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpD
b250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybU1hdHJpeDJ4NGZ2IiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlcywgY29uc3QgIgotICAgICAgICAgICJHTGZsb2F0
ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxv
Y2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2
YWx1ZSk7CisgICAgRVZFTlQoImdsVW5pZm9ybTFpIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCIsIENJRChjb250ZXh0KSwgbG9jYXRpb24sCisgICAg
ICAgICAgdjApOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVVuaWZvcm0xaShjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlm
b3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaShsb2NhdGlvblBhY2tlZCwgdjApOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDJ4NGZ2LCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgQU5H
TEVfQ0FQVFVSRShVbmlmb3JtMWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgdjApOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M2Z2Q29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGlu
dCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5pZm9ybU1hdHJpeDNmdiIsCi0gICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBH
TGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIKLSAgICAgICAgICAiR0xmbG9hdCAqdmFs
dWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlv
biwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUp
OworICAgIEVWRU5UKAorICAgICAgICAiZ2xVbmlmb3JtMWl2IiwKKyAgICAgICAgImNvbnRleHQg
PSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTGlu
dCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIKKyAgICAgICAgIiIsCisgICAgICAgIENJRChjb250
ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRy
aXgzZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMWl2KGNvbnRleHQsIGxv
Y2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MWl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5p
Zm9ybTFpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M3gyZnZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTF1aUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bFVuaWZvcm1NYXRyaXgzeDJmdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMs
IGNvbnN0ICIKLSAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3Ry
aW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOworICAgIEVWRU5UKCJnbFVuaWZvcm0x
dWkiLCAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSIs
IENJRChjb250ZXh0KSwKKyAgICAgICAgICBsb2NhdGlvbiwgdjApOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDN4MmZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0xdWkoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIHYwKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMXVp
KGxvY2F0aW9uUGFja2VkLCB2MCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShV
bmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0xdWksIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjApOwogICAgIH0KLX0KLQotdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4M3g0ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK30KKwordm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtMXVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2
YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4M3g0ZnYiLAotICAgICAgICAgICJj
b250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xi
b29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCi0gICAgICAgICAgIkdMZmxvYXQgKnZhbHVl
ID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24s
IGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsK
KyAgICBFVkVOVCgiZ2xVbmlmb3JtMXVpdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25zdCBHTHVpbnQgKnZhbHVl
ID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDN4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTF1aXYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTF1aXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M3g0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm0xdWl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNv
dW50LCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0
ZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yZkNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4NGZ2IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBH
TGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bv
c2UgPSAlcywgY29uc3QgIgotICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29s
ZWFuVG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImds
VW5pZm9ybTJmIiwgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2
MCA9ICVmLCBHTGZsb2F0IHYxID0gJWYiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRp
b24sIHYwLCB2MSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZVVuaWZvcm0yZihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDRmdiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25Q
YWNrZWQsIHYwLCB2MSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRy
aXg0eDJmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMmZ2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0
cml4NHgyZnYiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQs
IEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCi0g
ICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAg
IENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bv
c2UpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtMmZ2IiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gIgorICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIg
IiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3Qp
dmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlk
YXRlVW5pZm9ybTJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFs
dWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDR4MmZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtMmZ2LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQ
SUVOVFJZIFVuaWZvcm1NYXRyaXg0eDNmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRS
WSBVbmlmb3JtMmlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24s
IEdMaW50IHYwLCBHTGludCB2MSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4NHgzZnYi
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkg
Y291bnQgPSAlZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCi0gICAgICAgICAg
IkdMZmxvYXQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250
ZXh0KSwgbG9jYXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWlu
dHB0cl90KXZhbHVlKTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtMmkiLCAiY29udGV4dCA9ICVkLCBH
TGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkIiwKKyAgICAg
ICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4
M2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOworICAgICAg
ICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVVuaWZvcm0yaShjb250ZXh0LCBs
b2NhdGlvblBhY2tlZCwgdjAsIHYxKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtMmko
bG9jYXRpb25QYWNrZWQsIHYwLCB2MSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbmlmb3JtTWF0cml4NHgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yaSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgIH0KIH0K
IAotR0xib29sZWFuIEdMX0FQSUVOVFJZIFVubWFwQnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0yaXZDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xVbm1hcEJ1ZmZl
ciIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJRChjb250ZXh0KSwKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVyVGFyZ2V0QVJCLCB0YXJn
ZXQpKTsKKyAgICBFVkVOVCgKKyAgICAgICAgImdsVW5pZm9ybTJpdiIsCisgICAgICAgICJjb250
ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3Qg
R0xpbnQgKnZhbHVlID0gMHglMDE2IiBQUkl4UFRSCisgICAgICAgICIiLAorICAgICAgICBDSUQo
Y29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKLSAgICBHTGJv
b2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVVubWFwQnVmZmVyKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOworICAgICAgICBVbmlm
b3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTJpdihjb250ZXh0LCBsb2NhdGlvblBh
Y2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb250ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXRQ
YWNrZWQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VW5tYXBCdWZm
ZXIsIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yaXYobG9jYXRp
b25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVS
RShVbm1hcEJ1ZmZlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcmV0dXJu
VmFsdWUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm5WYWx1ZSA9IEdl
dERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpVbm1hcEJ1ZmZlciwgR0xib29sZWFuPigp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0yaXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9Ci0gICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgVW5tYXBCdWZmZXJPRVNDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCkKK3ZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybTJ1aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGludCBsb2NhdGlvbiwg
R0x1aW50IHYwLCBHTHVpbnQgdjEpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVW5tYXBCdWZmZXJPRVMiLCAi
Y29udGV4dCA9ICVkLCBHTGVudW0gdGFyZ2V0ID0gJXMiLCBDSUQoY29udGV4dCksCi0gICAgICAg
ICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdGFyZ2V0KSk7Cisg
ICAgRVZFTlQoImdsVW5pZm9ybTJ1aSIsICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0g
JWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBsb2NhdGlvbiwgdjAsIHYxKTsKIAotICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0
aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZVVubWFwQnVmZmVyT0VTKGNvbnRleHQsIHRhcmdldFBhY2tlZCkpOworICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtMnVpKGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnRleHQtPnVubWFwQnVmZmVy
KHRhcmdldFBhY2tlZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpV
bm1hcEJ1ZmZlck9FUywgR0xib29sZWFuPigpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTJ1aShsb2NhdGlvblBhY2tlZCwgdjAsIHYxKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKFVubWFwQnVmZmVyT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgdGFyZ2V0UGFja2Vk
LCByZXR1cm5WYWx1ZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVyblZh
bHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6OlVubWFwQnVmZmVyT0VTLCBH
TGJvb2xlYW4+KCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTJ1aSwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEpOwogICAgIH0KLSAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVXNlUHJvZ3JhbUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcHJvZ3JhbSkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJ1aXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdmFsdWUpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsVXNlUHJvZ3JhbSIsICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFtID0gJXUiLCBD
SUQoY29udGV4dCksIHByb2dyYW0pOworICAgIEVWRU5UKCJnbFVuaWZvcm0ydWl2IiwKKyAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0g
JWQsIGNvbnN0IEdMdWludCAqdmFsdWUgPSAiCisgICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUiAi
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgKHVpbnRwdHJfdCl2
YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VXNlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7CisgICAgICAgIFVuaWZvcm1Mb2Nh
dGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZv
cm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMnVpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtUGFja2VkKTsKKyAgICAgICAgICAg
IGNvbnRleHQtPnVuaWZvcm0ydWl2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAg
ICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVXNlUHJvZ3JhbSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0ydWl2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAg
ICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFVzZVByb2dyYW1TdGFnZXNDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcGlwZWxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBzdGFnZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0pCit2b2lkIEdMX0FQSUVOVFJZ
CitVbmlmb3JtM2ZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVXNl
UHJvZ3JhbVN0YWdlcyIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBpcGVsaW5l
ID0gJXUsIEdMYml0ZmllbGQgc3RhZ2VzID0gJXMsIEdMdWludCBwcm9ncmFtID0gJXUiLAotICAg
ICAgICAgIENJRChjb250ZXh0KSwgcGlwZWxpbmUsCi0gICAgICAgICAgR0xiaXRmaWVsZFRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpVc2VQcm9ncmFtU3RhZ2VNYXNrLCBzdGFnZXMpLmNfc3RyKCksIHBy
b2dyYW0pOworICAgIEVWRU5UKCJnbFVuaWZvcm0zZiIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVmLCBHTGZsb2F0IHYxID0gJWYs
IEdMZmxvYXQgdjIgPSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgdjAs
IHYxLCB2Mik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUHJvZ3JhbVBpcGVsaW5l
SUQgcGlwZWxpbmVQYWNrZWQgICAgICAgICAgICAgID0gRnJvbUdMPFByb2dyYW1QaXBlbGluZUlE
PihwaXBlbGluZSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlv
bik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICBWYWxpZGF0ZVVzZVByb2dyYW1TdGFnZXMoY29udGV4dCwgcGlwZWxpbmVQYWNr
ZWQsIHN0YWdlcywgcHJvZ3JhbVBhY2tlZCkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM2YoY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IHYwLCB2MSwgdjIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT51c2VQcm9ncmFtU3RhZ2VzKHBpcGVsaW5lUGFja2VkLCBzdGFnZXMs
IHByb2dyYW1QYWNrZWQpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9u
UGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFVz
ZVByb2dyYW1TdGFnZXMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBwaXBlbGluZVBhY2tlZCwgc3Rh
Z2VzLAotICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1QYWNrZWQpOworICAgICAgICBBTkdM
RV9DQVBUVVJFKFVuaWZvcm0zZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2Vk
LCB2MCwgdjEsIHYyKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmFsaWRhdGVQcm9n
cmFtQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtKQordm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtM2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xWYWxpZGF0ZVByb2dyYW0iLCAiY29udGV4dCA9ICVkLCBHTHVpbnQg
cHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwcm9ncmFtKTsKKyAgICBFVkVOVCgiZ2xVbmlm
b3JtM2Z2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlID0gIgorICAgICAgICAgICIw
eCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291
bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZhbGlkYXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtUGFja2VkKSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtM2Z2KGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0ZVByb2dyYW0ocHJv
Z3JhbVBhY2tlZCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmFs
aWRhdGVQcm9ncmFtLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCk7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBW
YWxpZGF0ZVByb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVp
bnQgcGlwZWxpbmUpCit2b2lkIEdMX0FQSUVOVFJZCitVbmlmb3JtM2lDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQg
djIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+
KGN0eCk7Ci0gICAgRVZFTlQoImdsVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUiLCAiY29udGV4dCA9
ICVkLCBHTHVpbnQgcGlwZWxpbmUgPSAldSIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBwaXBl
bGluZSk7CisgICAgRVZFTlQoImdsVW5pZm9ybTNpIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCBHTGlu
dCB2MiA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBl
bGluZVBhY2tlZCAgICAgICAgICAgICAgPSBGcm9tR0w8UHJvZ3JhbVBpcGVsaW5lSUQ+KHBpcGVs
aW5lKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUoY29udGV4dCwgcGlw
ZWxpbmVQYWNrZWQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
IFZhbGlkYXRlVW5pZm9ybTNpKGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUocGlwZWxpbmVQYWNrZWQpOworICAgICAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyKTsKICAgICAgICAg
fQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcGlwZWxpbmVQYWNrZWQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVu
aWZvcm0zaSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYy
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWZDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCit2b2lkIEdMX0FQ
SUVOVFJZIFVuaWZvcm0zaXZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIxZiIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9
ICV1LCBHTGZsb2F0IHggPSAlZiIsIENJRChjb250ZXh0KSwKLSAgICAgICAgICBpbmRleCwgeCk7
CisgICAgRVZFTlQoCisgICAgICAgICJnbFVuaWZvcm0zaXYiLAorICAgICAgICAiY29udGV4dCA9
ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50
ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRl
eHQpLCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIx
Zihjb250ZXh0LCBpbmRleCwgeCkpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25Q
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxv
Y2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bGlkYXRlVW5pZm9ybTNpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+dmVydGV4QXR0cmliMWYoaW5kZXgsIHgpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bTNpdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBB
TkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYjFmLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgs
IHgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm0zaXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliMWZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikKK3ZvaWQgR0xfQVBJRU5UUlkKK1VuaWZvcm0z
dWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2
MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliMWZ2
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgY29uc3QgR0xm
bG9hdCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIGlu
ZGV4LCAodWludHB0cl90KXYpOworICAgIEVWRU5UKCJnbFVuaWZvcm0zdWkiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVp
bnQgdjEgPSAldSwgR0x1aW50IHYyID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9j
YXRpb24sIHYwLCB2MSwgdjIpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjFmdihjb250ZXh0LCBpbmRleCwgdikpOworICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVbmlmb3JtM3VpKGNvbnRleHQsIGxvY2F0
aW9uUGFja2VkLCB2MCwgdjEsIHYyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCB2KTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zdWkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliMWZ2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHYpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm0zdWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Mik7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJmQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0zdWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYjJmIiwgImNvbnRleHQgPSAlZCwg
R0x1aW50IGluZGV4ID0gJXUsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiIsCi0gICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSk7CisgICAgRVZFTlQoImdsVW5pZm9ybTN1
aXYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6
ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50ICp2YWx1ZSA9ICIKKyAgICAgICAgICAiMHglMDE2
IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAo
dWludHB0cl90KXZhbHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmKGNvbnRleHQs
IGluZGV4LCB4LCB5KSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVV
bmlmb3JtM3Vpdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVy
dGV4QXR0cmliMmYoaW5kZXgsIHgsIHkpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybTN1
aXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWIyZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB4
LCB5KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtM3VpdiwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIyZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQordm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
NGZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCB2MykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIyZnYiLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBjb25zdCBHTGZsb2F0ICp2ID0gMHgl
MDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgaW5kZXgsICh1aW50cHRy
X3Qpdik7CisgICAgRVZFTlQoImdsVW5pZm9ybTRmIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHYwID0gJWYsIEdMZmxvYXQgdjEgPSAlZiwg
R0xmbG9hdCB2MiA9ICVmLCAiCisgICAgICAgICAgIkdMZmxvYXQgdjMgPSAlZiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4QXR0cmliMmZ2KGNvbnRleHQsIGluZGV4LCB2KSk7CisgICAgICAgIFVuaWZvcm1M
b2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVu
aWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtNGYoY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IHYwLCB2MSwgdjIsIHYzKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCB2KTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnVuaWZvcm00Zihsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliMmZ2LCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgaW5kZXgsIHYpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm00
ZiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCB2MCwgdjEsIHYyLCB2Myk7
CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1WZXJ0ZXhBdHRyaWIzZkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBH
TGZsb2F0IHopCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00ZnZDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxn
bDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYjNmIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xmbG9hdCB4ID0gJWYsIEdM
ZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBp
bmRleCwgeCwgeSwgeik7CisgICAgRVZFTlQoImdsVW5pZm9ybTRmdiIsCisgICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAg
ICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsK
IAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6KSk7
CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtNGZ2KGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZh
bGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZihpbmRl
eCwgeCwgeSwgeik7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVy
dGV4QXR0cmliM2YsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgeCwgeSwgeik7CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybTRmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0
aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBW
ZXJ0ZXhBdHRyaWIzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4
LCBjb25zdCBHTGZsb2F0ICp2KQordm9pZCBHTF9BUElFTlRSWQorVW5pZm9ybTRpQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEs
IEdMaW50IHYyLCBHTGludCB2MykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIzZnYiLAot
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBjb25zdCBHTGZsb2F0
ICp2ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgaW5kZXgs
ICh1aW50cHRyX3Qpdik7CisgICAgRVZFTlQoImdsVW5pZm9ybTRpIiwKKyAgICAgICAgICAiY29u
dGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9
ICVkLCBHTGludCB2MiA9ICVkLCBHTGludCAiCisgICAgICAgICAgInYzID0gJWQiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNmdihjb250ZXh0LCBpbmRleCwgdikpOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTRpKGNvbnRleHQsIGxvY2F0aW9uUGFja2Vk
LCB2MCwgdjEsIHYyLCB2MykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgdik7CisgICAgICAg
ICAgICBjb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb25QYWNrZWQsIHYwLCB2MSwgdjIsIHYzKTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYjNmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3Jt
NGksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMp
OwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgdykKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRpdkNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xpbnQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYjRmIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xmbG9hdCB4ID0g
JWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZiwgIgotICAgICAgICAgICJHTGZsb2F0
IHcgPSAlZiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSwgeiwgdyk7Cisg
ICAgRVZFTlQoCisgICAgICAgICJnbFVuaWZvcm00aXYiLAorICAgICAgICAiY29udGV4dCA9ICVk
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIGNvbnN0IEdMaW50ICp2
YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAiIiwKKyAgICAgICAgQ0lEKGNvbnRleHQp
LCBsb2NhdGlvbiwgY291bnQsICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVy
dGV4QXR0cmliNGYoY29udGV4dCwgaW5kZXgsIHgsIHksIHosIHcpKTsKKyAgICAgICAgVW5pZm9y
bUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm00aXYoY29udGV4dCwgbG9jYXRpb25QYWNr
ZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB2
YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWI0Ziwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICAgICAgQU5HTEVf
Q0FQVFVSRShVbmlmb3JtNGl2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQs
IGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJp
YjRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
ZmxvYXQgKnYpCit2b2lkIEdMX0FQSUVOVFJZCitVbmlmb3JtNHVpQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50
IHYyLCBHTHVpbnQgdjMpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliNGZ2IiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgY29uc3QgR0xmbG9hdCAqdiA9
IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIGluZGV4LCAodWlu
dHB0cl90KXYpOworICAgIEVWRU5UKCJnbFVuaWZvcm00dWkiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAl
dSwgR0x1aW50IHYyID0gJXUsICIKKyAgICAgICAgICAiR0x1aW50IHYzID0gJXUiLAorICAgICAg
ICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjRmdihjb250ZXh0LCBpbmRleCwgdikpOworICAgICAgICBVbmlmb3Jt
TG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxV
bmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTR1aShjb250ZXh0LCBsb2NhdGlvblBhY2tl
ZCwgdjAsIHYxLCB2MiwgdjMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIHYpOworICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybTR1aShsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2MiwgdjMp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliNGZ2LCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHYpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZv
cm00dWksIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgdjAsIHYxLCB2Miwg
djMpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJCaW5kaW5nQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0dHJpYmluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiaW5kaW5naW5kZXgpCit2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm00dWl2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYkJpbmRpbmciLAotICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBhdHRyaWJpbmRleCA9ICV1LCBHTHVpbnQgYmluZGluZ2lu
ZGV4ID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgYXR0cmliaW5kZXgsIGJpbmRpbmdp
bmRleCk7CisgICAgRVZFTlQoImdsVW5pZm9ybTR1aXYiLAorICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgY29uc3QgR0x1aW50
ICp2YWx1ZSA9ICIKKyAgICAgICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50LCAodWludHB0cl90KXZhbHVlKTsKIAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkJpbmRpbmcoY29udGV4dCwgYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCkpOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTR1aXYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkJpbmRpbmcoYXR0
cmliaW5kZXgsIGJpbmRpbmdpbmRleCk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtNHVp
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdM
RV9DQVBUVVJFKFZlcnRleEF0dHJpYkJpbmRpbmcsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBhdHRy
aWJpbmRleCwgYmluZGluZ2luZGV4KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtNHVp
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdmFsdWUpOwog
ICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJEaXZpc29yQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCit2b2lk
IEdMX0FQSUVOVFJZIFVuaWZvcm1CbG9ja0JpbmRpbmdDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliRGl2aXNvciIsICJjb250ZXh0ID0gJWQsIEdMdWlu
dCBpbmRleCA9ICV1LCBHTHVpbnQgZGl2aXNvciA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4
dCksIGluZGV4LCBkaXZpc29yKTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtQmxvY2tCaW5kaW5nIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXggPSAldSwgR0x1aW50ICIKKyAgICAgICAgICAidW5pZm9ybUJsb2NrQmlu
ZGluZyA9ICV1IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJp
YkRpdmlzb3IoY29udGV4dCwgaW5kZXgsIGRpdmlzb3IpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3Jh
bUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybUJsb2NrQmluZGluZyhjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCB1bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUJsb2NrQmluZGluZykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0
dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bUJsb2NrQmluZGluZyhwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJs
b2NrQmluZGluZyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRy
aWJEaXZpc29yLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIGRpdmlzb3IpOworICAgICAg
ICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1CbG9ja0JpbmRpbmcsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCB1bmlmb3JtQmxvY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVy
dGV4QXR0cmliRGl2aXNvckFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgZGl2aXNvcikKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJmdkNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQg
Kj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0x1aW50IGRpdmlzb3IgPSAldSIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgZGl2aXNvcik7CisgICAgRVZFTlQoImdsVW5pZm9ybU1h
dHJpeDJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwg
R0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIKKyAg
ICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAg
Q0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9z
ZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbnRl
eHQsIGluZGV4LCBkaXZpc29yKSk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9j
YXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hh
cmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29s
IGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KGNvbnRleHQsIGxvY2F0aW9u
UGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3Io
aW5kZXgsIGRpdmlzb3IpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliRGl2aXNvckFOR0xFLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgaW5kZXgsIGRpdmlzb3IpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1N
YXRyaXgyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lk
IEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK3ZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybU1hdHJpeDJ4M2Z2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4
QXR0cmliRGl2aXNvckVYVCIsICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTHVp
bnQgZGl2aXNvciA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGluZGV4LCBkaXZpc29y
KTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0cml4MngzZnYiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xib29sZWFu
IHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQgKnZhbHVlID0gMHgl
MDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9jYXRpb24sIGNvdW50
LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZhbHVlKTsKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVW5p
Zm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUKGNv
bnRleHQsIGluZGV4LCBkaXZpc29yKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJ4M2Z2KGNvbnRl
eHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0
dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9y
bU1hdHJpeDJ4M2Z2KGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJEaXZpc29yRVhULCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIGRpdmlzb3IpOworICAgICAgICBBTkdMRV9DQVBU
VVJFKFVuaWZvcm1NYXRyaXgyeDNmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFj
a2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAg
ICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRm9ybWF0Q29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxh
dGl2ZW9mZnNldCkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDJ4NGZ2Q29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliRm9ybWF0IiwKLSAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgYXR0cmliaW5kZXggPSAldSwgR0xpbnQgc2l6ZSA9ICVkLCBH
TGVudW0gdHlwZSA9ICVzLCBHTGJvb2xlYW4gIgotICAgICAgICAgICJub3JtYWxpemVkID0gJXMs
IEdMdWludCByZWxhdGl2ZW9mZnNldCA9ICV1IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIGF0
dHJpYmluZGV4LCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3Vw
LCB0eXBlKSwKLSAgICAgICAgICBHTGJvb2xlYW5Ub1N0cmluZyhub3JtYWxpemVkKSwgcmVsYXRp
dmVvZmZzZXQpOworICAgIEVWRU5UKCJnbFVuaWZvcm1NYXRyaXgyeDRmdiIsCisgICAgICAgICAg
ImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBH
TGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIKKyAgICAgICAgICAiR0xmbG9hdCAqdmFs
dWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlv
biwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUp
OwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJGb3JtYXQo
Y29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCwgcmVsYXRp
dmVvZmZzZXQpKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgyeDRmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJGb3JtYXQoYXR0cmliaW5k
ZXgsIHNpemUsIHR5cGVQYWNrZWQsIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvblBhY2tlZCwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVy
dGV4QXR0cmliRm9ybWF0LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUs
IHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCwgcmVsYXRpdmVv
ZmZzZXQpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgyeDRmdiwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkKLVZl
cnRleEF0dHJpYkk0aUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgs
IEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCit2b2lkIEdMX0FQSUVOVFJZIFVu
aWZvcm1NYXRyaXgzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19j
YXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliSTRpIiwK
LSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xpbnQgeCA9ICVk
LCBHTGludCB5ID0gJWQsIEdMaW50IHogPSAlZCwgR0xpbnQgdyA9ICVkIiwKLSAgICAgICAgICBD
SUQoY29udGV4dCksIGluZGV4LCB4LCB5LCB6LCB3KTsKKyAgICBFVkVOVCgiZ2xVbmlmb3JtTWF0
cml4M2Z2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGludCBsb2NhdGlvbiA9ICVkLCBH
THNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UgPSAlcywgY29uc3QgIgorICAg
ICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFuVG9TdHJpbmcodHJhbnNwb3Nl
KSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24p
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4QXR0cmliSTRpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KSk7CisgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgIFZhbGlkYXRl
VW5pZm9ybU1hdHJpeDNmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOworICAgICAg
ICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4
QXR0cmliSTRpLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHgsIHksIHosIHcpOworICAg
ICAgICBBTkdMRV9DQVBUVVJFKFVuaWZvcm1NYXRyaXgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0aXZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAq
dikKK3ZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDN4MmZ2Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliSTRpdiIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IGluZGV4ID0gJXUsIGNvbnN0IEdMaW50ICp2ID0gMHglMDE2IiBQUkl4UFRSICIi
LCBDSUQoY29udGV4dCksCi0gICAgICAgICAgaW5kZXgsICh1aW50cHRyX3Qpdik7CisgICAgRVZF
TlQoImdsVW5pZm9ybU1hdHJpeDN4MmZ2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Ug
PSAlcywgY29uc3QgIgorICAgICAgICAgICJHTGZsb2F0ICp2YWx1ZSA9IDB4JTAxNiIgUFJJeFBU
UiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGxvY2F0aW9uLCBjb3VudCwgR0xib29sZWFu
VG9TdHJpbmcodHJhbnNwb3NlKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CiAKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVuaWZvcm1Mb2NhdGlv
biBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFVuaWZvcm1M
b2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTRpdihjb250ZXh0LCBpbmRleCwgdikp
OworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAg
ICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzeDJmdihjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCB2KTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvblBhY2tlZCwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
VmVydGV4QXR0cmliSTRpdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4M3gyZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1WZXJ0ZXhBdHRyaWJJNHVp
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdM
dWludCB5LCBHTHVpbnQgeiwgR0x1aW50IHcpCit2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRy
aXgzeDRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYkk0dWki
LAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBHTHVpbnQgeCA9
ICV1LCBHTHVpbnQgeSA9ICV1LCBHTHVpbnQgeiA9ICV1LCBHTHVpbnQgdyAiCi0gICAgICAgICAg
Ij0gJXUiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHgsIHksIHosIHcpOworICAg
IEVWRU5UKCJnbFVuaWZvcm1NYXRyaXgzeDRmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0xpbnQgbG9jYXRpb24gPSAlZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNw
b3NlID0gJXMsIGNvbnN0ICIKKyAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBS
SXhQVFIgIiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9v
bGVhblRvU3RyaW5nKHRyYW5zcG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBVbmlmb3JtTG9j
YXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlm
b3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYkk0dWkoY29udGV4dCwgaW5kZXgs
IHgsIHksIHosIHcpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4M3g0ZnYoY29udGV4dCwgbG9jYXRp
b25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSTR1aShp
bmRleCwgeCwgeSwgeiwgdyk7CisgICAgICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4M3g0
ZnYobG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkk0dWksIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBpbmRleCwgeCwgeSwgeiwgdyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1h
dHJpeDN4NGZ2LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0
cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJNHVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAqdikKK3ZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybU1hdHJpeDRmdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRy
YW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWJJNHVpdiIs
Ci0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIGNvbnN0IEdMdWlu
dCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIGluZGV4
LCAodWludHB0cl90KXYpOworICAgIEVWRU5UKCJnbFVuaWZvcm1NYXRyaXg0ZnYiLAorICAgICAg
ICAgICJjb250ZXh0ID0gJWQsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMc2l6ZWkgY291bnQgPSAl
ZCwgR0xib29sZWFuIHRyYW5zcG9zZSA9ICVzLCBjb25zdCAiCisgICAgICAgICAgIkdMZmxvYXQg
KnZhbHVlID0gMHglMDE2IiBQUkl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgbG9j
YXRpb24sIGNvdW50LCBHTGJvb2xlYW5Ub1N0cmluZyh0cmFuc3Bvc2UpLCAodWludHB0cl90KXZh
bHVlKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAg
ICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
NHVpdihjb250ZXh0LCBpbmRleCwgdikpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoY29udGV4
dCwgbG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0
cmliSTR1aXYoaW5kZXgsIHYpOworICAgICAgICAgICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0g
ICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliSTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250
ZXh0LCBpbmRleCwgdik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVW5pZm9ybU1hdHJpeDRmdiwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLAor
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgVmVydGV4QXR0cmliSUZvcm1hdENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRy
aWJpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZW9mZnNldCkKK3ZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybU1hdHJpeDR4MmZ2Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9
IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0
cmliSUZvcm1hdCIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGF0dHJpYmluZGV4
ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0x1aW50ICIKLSAgICAg
ICAgICAicmVsYXRpdmVvZmZzZXQgPSAldSIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBhdHRy
aWJpbmRleCwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwg
dHlwZSksCi0gICAgICAgICAgcmVsYXRpdmVvZmZzZXQpOworICAgIEVWRU5UKCJnbFVuaWZvcm1N
YXRyaXg0eDJmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIK
KyAgICAgICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5z
cG9zZSksICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxW
ZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFVuaWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWJJRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBy
ZWxhdGl2ZW9mZnNldCkpOworICAgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDR4MmZ2
KGNvbnRleHQsIGxvY2F0aW9uUGFja2VkLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZl
cnRleEF0dHJpYklGb3JtYXQoYXR0cmliaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIHJlbGF0aXZl
b2Zmc2V0KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlv
blBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoVmVydGV4QXR0cmliSUZvcm1hdCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGF0
dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIHJlbGF0
aXZlb2Zmc2V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NHgyZnYsIGlz
Q2FsbFZhbGlkLCBjb250ZXh0LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IFZlcnRleEF0dHJpYklQb2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQordm9pZCBHTF9BUElFTlRS
WSBVbmlmb3JtTWF0cml4NHgzZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xWZXJ0
ZXhBdHRyaWJJUG9pbnRlciIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4
ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xzaXplaSBzdHJpZGUg
PSAiCi0gICAgICAgICAgIiVkLCBjb25zdCB2b2lkICpwb2ludGVyID0gMHglMDE2IiBQUkl4UFRS
ICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHNpemUsIEdMZW51bVRvU3RyaW5n
KEdMZW51bUdyb3VwOjpWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSwgdHlwZSksCi0gICAgICAgICAg
c3RyaWRlLCAodWludHB0cl90KXBvaW50ZXIpOworICAgIEVWRU5UKCJnbFVuaWZvcm1NYXRyaXg0
eDNmdiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xz
aXplaSBjb3VudCA9ICVkLCBHTGJvb2xlYW4gdHJhbnNwb3NlID0gJXMsIGNvbnN0ICIKKyAgICAg
ICAgICAiR0xmbG9hdCAqdmFsdWUgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBsb2NhdGlvbiwgY291bnQsIEdMYm9vbGVhblRvU3RyaW5nKHRyYW5zcG9zZSks
ICh1aW50cHRyX3QpdmFsdWUpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFZlcnRl
eEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
dHRyaWJUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFVu
aWZvcm1Mb2NhdGlvbiBsb2NhdGlvblBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFVuaWZvcm1Mb2NhdGlvbj4obG9jYXRpb24pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJJUG9pbnRlcihjb250ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2lu
dGVyKSk7CisgICAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4NHgzZnYoY29udGV4dCwg
bG9jYXRpb25QYWNrZWQsIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmli
SVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CisgICAg
ICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb25QYWNrZWQsIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZl
cnRleEF0dHJpYklQb2ludGVyLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHNpemUsIHR5
cGVQYWNrZWQsIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyKTsKKyAgICAg
ICAgQU5HTEVfQ0FQVFVSRShVbmlmb3JtTWF0cml4NHgzZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0
LCBsb2NhdGlvblBhY2tlZCwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlBvaW50
ZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9y
bWFsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQorR0xib29sZWFuIEdMX0FQSUVOVFJZIFVu
bWFwQnVmZmVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsVmVydGV4QXR0cmliUG9pbnRlciIsCi0gICAgICAgICAgImNvbnRleHQg
PSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAl
cywgR0xib29sZWFuICIKLSAgICAgICAgICAibm9ybWFsaXplZCA9ICVzLCBHTHNpemVpIHN0cmlk
ZSA9ICVkLCBjb25zdCB2b2lkICpwb2ludGVyID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHNpemUsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSwgdHlwZSksCi0gICAgICAgICAgR0xib29sZWFuVG9T
dHJpbmcobm9ybWFsaXplZCksIHN0cmlkZSwgKHVpbnRwdHJfdClwb2ludGVyKTsKKyAgICBFVkVO
VCgiZ2xVbm1hcEJ1ZmZlciIsICJjb250ZXh0ID0gJWQsIEdMZW51bSB0YXJnZXQgPSAlcyIsIENJ
RChjb250ZXh0KSwKKyAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6QnVmZmVy
VGFyZ2V0QVJCLCB0YXJnZXQpKTsKIAorICAgIEdMYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpKTsKLSAgICAgICAgVmVydGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYlBvaW50ZXIoY29udGV4dCwg
aW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcG9pbnRlcikpOwor
ICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVW5tYXBCdWZmZXIoY29udGV4
dCwgdGFyZ2V0UGFja2VkKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZVBhY2tlZCwgbm9ybWFsaXplZCwgc3RyaWRlLCBwb2ludGVyKTsKKyAgICAgICAgICAgIHJldHVy
blZhbHVlID0gY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0UGFja2VkKTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYlBvaW50ZXIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwKLSAgICAgICAgICAgICAgICAgICAgICBu
b3JtYWxpemVkLCBzdHJpZGUsIHBvaW50ZXIpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJldHVyblZhbHVlPEVudHJ5UG9pbnQ6
OlVubWFwQnVmZmVyLCBHTGJvb2xlYW4+KCk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShVbm1hcEJ1ZmZlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcmV0
dXJuVmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm5WYWx1ZSA9
IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxFbnRyeVBvaW50OjpVbm1hcEJ1ZmZlciwgR0xib29sZWFu
PigpOwogICAgIH0KKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLXZvaWQgR0xfQVBJRU5U
UlkgVmVydGV4QmluZGluZ0Rpdmlzb3JDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJp
bmRpbmdpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGRpdmlzb3IpCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgVW5tYXBCdWZmZXJP
RVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBF
VkVOVCgiZ2xWZXJ0ZXhCaW5kaW5nRGl2aXNvciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBiaW5k
aW5naW5kZXggPSAldSwgR0x1aW50IGRpdmlzb3IgPSAldSIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBiaW5kaW5naW5kZXgsIGRpdmlzb3IpOworICAgIEVWRU5UKCJnbFVubWFwQnVmZmVyT0VT
IiwgImNvbnRleHQgPSAlZCwgR0xlbnVtIHRhcmdldCA9ICVzIiwgQ0lEKGNvbnRleHQpLAorICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRhcmdldCkp
OwogCisgICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKGNv
bnRleHQsIGJpbmRpbmdpbmRleCwgZGl2aXNvcikpOworICAgICAgICBCdWZmZXJCaW5kaW5nIHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVW5tYXBCdWZmZXJPRVMoY29udGV4dCwgdGFyZ2V0UGFja2VkKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
dmVydGV4QmluZGluZ0Rpdmlzb3IoYmluZGluZ2luZGV4LCBkaXZpc29yKTsKKyAgICAgICAgICAg
IHJldHVyblZhbHVlID0gY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0UGFja2VkKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEJpbmRpbmdEaXZpc29yLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgYmluZGluZ2luZGV4LCBkaXZpc29yKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IEdldERlZmF1bHRSZXR1cm5WYWx1ZTxF
bnRyeVBvaW50OjpVbm1hcEJ1ZmZlck9FUywgR0xib29sZWFuPigpOworICAgICAgICB9CisgICAg
ICAgIEFOR0xFX0NBUFRVUkUoVW5tYXBCdWZmZXJPRVMsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHJldHVyblZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6VW5tYXBC
dWZmZXJPRVMsIEdMYm9vbGVhbj4oKTsKICAgICB9CisgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCi12b2lkIEdMX0FQSUVOVFJZIFZlcnRleFBvaW50ZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKnBvaW50ZXIpCit2b2lkIEdMX0FQSUVOVFJZIFVzZVByb2dyYW1Db250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IHByb2dyYW0pCiB7CiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsVmVy
dGV4UG9pbnRlciIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgc2l6ZSA9ICVkLCBH
TGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICIKLSAgICAg
ICAgICAiKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRl
eHQpLCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4UG9pbnRlclR5cGUs
IHR5cGUpLCBzdHJpZGUsCi0gICAgICAgICAgKHVpbnRwdHJfdClwb2ludGVyKTsKKyAgICBFVkVO
VCgiZ2xVc2VQcm9ncmFtIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHByb2dyYW0gPSAldSIsIENJ
RChjb250ZXh0KSwgcHJvZ3JhbSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVmVy
dGV4QXR0cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRl
eEF0dHJpYlR5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVZlcnRleFBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVy
KSk7CisgICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVVc2VQcm9ncmFt
KGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhQb2ludGVyKHNpemUsIHR5cGVQYWNr
ZWQsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAgICAgICBjb250ZXh0LT51c2VQcm9ncmFtKHBy
b2dyYW1QYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4UG9p
bnRlciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9p
bnRlcik7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVXNlUHJvZ3JhbSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHByb2dyYW1QYWNrZWQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWQotVmll
d3BvcnRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit2b2lkIEdMX0FQSUVOVFJZIFVzZVByb2dyYW1T
dGFnZXNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGlwZWxpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBzdGFnZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0p
CiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0
eCk7Ci0gICAgRVZFTlQoImdsVmlld3BvcnQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
aW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVp
Z2h0ID0gJWQiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7
CisgICAgRVZFTlQoImdsVXNlUHJvZ3JhbVN0YWdlcyIsCisgICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHBpcGVsaW5lID0gJXUsIEdMYml0ZmllbGQgc3RhZ2VzID0gJXMsIEdMdWludCBw
cm9ncmFtID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgcGlwZWxpbmUsCisgICAgICAg
ICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdMZW51bUdyb3VwOjpVc2VQcm9ncmFtU3RhZ2VNYXNrLCBz
dGFnZXMpLmNfc3RyKCksIHByb2dyYW0pOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJRCBwaXBlbGluZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlwZWxpbmVJRD4ocGlw
ZWxpbmUpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
LSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmlld3Bv
cnQoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVVzZVByb2dyYW1TdGFn
ZXMoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQsIHN0YWdlcywgcHJvZ3JhbVBhY2tlZCkpOwogICAg
ICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnZp
ZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgY29udGV4dC0+dXNlUHJv
Z3JhbVN0YWdlcyhwaXBlbGluZVBhY2tlZCwgc3RhZ2VzLCBwcm9ncmFtUGFja2VkKTsKICAgICAg
ICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFZpZXdwb3J0LCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVXNlUHJvZ3Jh
bVN0YWdlcywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBpcGVsaW5lUGFja2VkLCBzdGFnZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbVBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFdhaXRTZW1hcGhvcmVFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2Vt
YXBob3JlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBudW1CdWZmZXJCYXJyaWVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQg
KnRleHR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZW51bSAqc3JjTGF5b3V0cykKK3ZvaWQgR0xfQVBJRU5UUlkgVmFsaWRhdGVQcm9n
cmFtQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwcm9ncmFtKQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbFdhaXRTZW1hcGhvcmVFWFQiLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdM
dWludCBzZW1hcGhvcmUgPSAldSwgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzID0gJXUsIGNvbnN0
IEdMdWludCAiCi0gICAgICAgICAgIipidWZmZXJzID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAg
ICAgIiwgR0x1aW50IG51bVRleHR1cmVCYXJyaWVycyA9ICV1LCBjb25zdCBHTHVpbnQgKnRleHR1
cmVzID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgY29uc3QgR0xlbnVtICpzcmNMYXlv
dXRzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgc2VtYXBo
b3JlLCBudW1CdWZmZXJCYXJyaWVycywgKHVpbnRwdHJfdClidWZmZXJzLCBudW1UZXh0dXJlQmFy
cmllcnMsCi0gICAgICAgICAgKHVpbnRwdHJfdCl0ZXh0dXJlcywgKHVpbnRwdHJfdClzcmNMYXlv
dXRzKTsKKyAgICBFVkVOVCgiZ2xWYWxpZGF0ZVByb2dyYW0iLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgcHJvZ3JhbSA9ICV1IiwgQ0lEKGNvbnRleHQpLCBwcm9ncmFtKTsKIAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+KHNlbWFwaG9yZSk7Ci0gICAgICAgIGNvbnN0IEJ1
ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxjb25zdCBCdWZm
ZXJJRCAqPihidWZmZXJzKTsKLSAgICAgICAgY29uc3QgVGV4dHVyZUlEICp0ZXh0dXJlc1BhY2tl
ZCAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IFRleHR1cmVJRCAqPih0ZXh0dXJlcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3Jh
bVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+
KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBi
b29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgVmFsaWRhdGVXYWl0U2VtYXBob3JlRVhUKGNvbnRleHQsIHNlbWFw
aG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZlcnNQYWNrZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQ
YWNrZWQsIHNyY0xheW91dHMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFtKGNvbnRleHQsIHByb2dyYW1QYWNrZWQpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT53YWl0U2VtYXBob3JlKHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsIGJ1ZmZl
cnNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRleHR1cmVC
YXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpOworICAgICAgICAgICAgY29udGV4
dC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW1QYWNrZWQpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoV2FpdFNlbWFwaG9yZUVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNlbWFw
aG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgYnVm
ZmVyc1BhY2tlZCwgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJlc1BhY2tlZCwgc3JjTGF5b3V0
cyk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmFsaWRhdGVQcm9ncmFtLCBpc0NhbGxWYWxpZCwg
Y29udGV4dCwgcHJvZ3JhbVBhY2tlZCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIFdh
aXRTeW5jQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc3luYyBzeW5jLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJpdGZpZWxkIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQ2NCB0aW1lb3V0KQordm9pZCBHTF9BUElFTlRSWSBWYWxpZGF0
ZVByb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgcGlw
ZWxpbmUpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0
ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsV2FpdFN5bmMiLAotICAgICAgICAgICJjb250ZXh0ID0g
JWQsIEdMc3luYyBzeW5jID0gMHglMDE2IiBQUkl4UFRSCi0gICAgICAgICAgIiwgR0xiaXRmaWVs
ZCBmbGFncyA9ICVzLCBHTHVpbnQ2NCB0aW1lb3V0ID0gJWxsdSIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCAodWludHB0cl90KXN5bmMsCi0gICAgICAgICAgR0xiaXRmaWVsZFRvU3RyaW5nKEdM
ZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGZsYWdzKS5jX3N0cigpLAotICAgICAgICAgIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odGltZW91dCkpOworICAgIEVWRU5UKCJnbFZhbGlk
YXRlUHJvZ3JhbVBpcGVsaW5lIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHBpcGVsaW5lID0gJXUi
LCBDSUQoY29udGV4dCksCisgICAgICAgICAgcGlwZWxpbmUpOwogCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBQcm9ncmFtUGlwZWxpbmVJ
RCBwaXBlbGluZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcm9ncmFtUGlw
ZWxpbmVJRD4ocGlwZWxpbmUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlV2FpdFN5bmMoY29udGV4dCwgc3luYywgZmxhZ3MsIHRpbWVv
dXQpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
VmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUoY29udGV4dCwgcGlwZWxpbmVQYWNrZWQpKTsKICAgICAg
ICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT53YWl0
U3luYyhzeW5jLCBmbGFncywgdGltZW91dCk7CisgICAgICAgICAgICBjb250ZXh0LT52YWxpZGF0
ZVByb2dyYW1QaXBlbGluZShwaXBlbGluZVBhY2tlZCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5H
TEVfQ0FQVFVSRShXYWl0U3luYywgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHN5bmMsIGZsYWdzLCB0
aW1lb3V0KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWYWxpZGF0ZVByb2dyYW1QaXBlbGluZSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHBpcGVsaW5lUGFja2VkKTsKICAgICB9CiB9CiAKLXZvaWQg
R0xfQVBJRU5UUlkgV2VpZ2h0UG9pbnRlck9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcG9pbnRlcikKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWZD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsV2VpZ2h0UG9pbnRlck9FUyIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVk
LCBjb25zdCB2b2lkICIKLSAgICAgICAgICAiKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIs
Ci0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91
cDo6RGVmYXVsdEdyb3VwLCB0eXBlKSwgc3RyaWRlLAotICAgICAgICAgICh1aW50cHRyX3QpcG9p
bnRlcik7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliMWYiLCAiY29udGV4dCA9ICVkLCBHTHVp
bnQgaW5kZXggPSAldSwgR0xmbG9hdCB4ID0gJWYiLCBDSUQoY29udGV4dCksCisgICAgICAgICAg
aW5kZXgsIHgpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlV2VpZ2h0UG9pbnRlck9FUyhjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJp
ZGUsIHBvaW50ZXIpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4QXR0cmliMWYoY29udGV4dCwgaW5kZXgsIHgpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT53ZWlnaHRQb2ludGVyKHNp
emUsIHR5cGUsIHN0cmlkZSwgcG9pbnRlcik7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhB
dHRyaWIxZihpbmRleCwgeCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShXZWln
aHRQb2ludGVyT0VTLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBw
b2ludGVyKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWIxZiwgaXNDYWxsVmFs
aWQsIGNvbnRleHQsIGluZGV4LCB4KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgQmlu
ZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQordm9p
ZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIxZnZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEJpbmRV
bmlmb3JtTG9jYXRpb25DSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50
IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgY29uc3QgR0xjaGFyKiBuYW1lID0g
IgotICAgICAgICAgICIweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQp
LCBwcm9ncmFtLCBsb2NhdGlvbiwgKHVpbnRwdHJfdCluYW1lKTsKKyAgICBFVkVOVCgiZ2xWZXJ0
ZXhBdHRyaWIxZnYiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1
LCBjb25zdCBHTGZsb2F0ICp2ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisg
ICAgICAgICAgaW5kZXgsICh1aW50cHRyX3Qpdik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAg
ICAgICAgICAgVmFsaWRhdGVCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0oY29udGV4dCwgcHJv
Z3JhbVBhY2tlZCwgbG9jYXRpb24sIG5hbWUpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliMWZ2KGNvbnRleHQsIGluZGV4LCB2
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+YmluZFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgbmFtZSk7
CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIHYpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliMWZ2
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgaW5kZXgsIHYpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWSBDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LCBHTGVudW0gY29tcG9uZW50cykKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmli
MmZDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSIs
ICJjb250ZXh0ID0gJWQsIEdMZW51bSBjb21wb25lbnRzID0gJXMiLCBDSUQoY29udGV4dCksCi0g
ICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgY29tcG9u
ZW50cykpOworICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYjJmIiwgImNvbnRleHQgPSAlZCwgR0x1
aW50IGluZGV4ID0gJXUsIEdMZmxvYXQgeCA9ICVmLCBHTGZsb2F0IHkgPSAlZiIsCisgICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShjb250
ZXh0LCBjb21wb25lbnRzKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjJmKGNvbnRleHQsIGluZGV4LCB4LCB5KSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Y292
ZXJhZ2VNb2R1bGF0aW9uKGNvbXBvbmVudHMpOworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4
QXR0cmliMmYoaW5kZXgsIHgsIHkpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUo
Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBjb21wb25l
bnRzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWIyZiwgaXNDYWxsVmFsaWQs
IGNvbnRleHQsIGluZGV4LCB4LCB5KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgTWF0
cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXRyaXhNb2Rl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKm1hdHJpeCkKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMmZ2Q29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdikK
IHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4
KTsKLSAgICBFVkVOVCgiZ2xNYXRyaXhMb2FkZkNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTGVudW0gbWF0cml4TW9kZSA9ICVzLCBjb25zdCBHTGZsb2F0ICogbWF0cml4ID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgR0xlbnVtVG9TdHJp
bmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgbWF0cml4TW9kZSksICh1aW50cHRyX3QpbWF0
cml4KTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIyZnYiLAorICAgICAgICAgICJjb250ZXh0
ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBjb25zdCBHTGZsb2F0ICp2ID0gMHglMDE2IiBQUkl4
UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgaW5kZXgsICh1aW50cHRyX3Qpdik7CiAK
ICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVNYXRyaXhM
b2FkZkNIUk9NSVVNKGNvbnRleHQsIG1hdHJpeE1vZGUsIG1hdHJpeCkpOworICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZnYoY29u
dGV4dCwgaW5kZXgsIHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5tYXRyaXhMb2FkZihtYXRyaXhNb2RlLCBtYXRyaXgpOworICAg
ICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCB2KTsKICAgICAgICAgfQot
ICAgICAgICBBTkdMRV9DQVBUVVJFKE1hdHJpeExvYWRmQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBtYXRyaXhNb2RlLCBtYXRyaXgpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRl
eEF0dHJpYjJmdiwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKICAgICB9CiB9CiAK
LXZvaWQgR0xfQVBJRU5UUlkgTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU1Db250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1hdHJpeE1vZGUpCit2b2lkIEdMX0FQSUVOVFJZCitW
ZXJ0ZXhBdHRyaWIzZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgs
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7CiAgICAgQ29udGV4dCAqY29udGV4
dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsTWF0cml4
TG9hZElkZW50aXR5Q0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTGVudW0gbWF0cml4TW9kZSA9
ICVzIiwgQ0lEKGNvbnRleHQpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWZhdWx0R3JvdXAsIG1hdHJpeE1vZGUpKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIz
ZiIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMZmxvYXQg
eCA9ICVmLCBHTGZsb2F0IHkgPSAlZiwgR0xmbG9hdCB6ID0gJWYiLAorICAgICAgICAgIENJRChj
b250ZXh0KSwgaW5kZXgsIHgsIHksIHopOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8IFZhbGlkYXRlTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oY29udGV4dCwg
bWF0cml4TW9kZSkpOworICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwg
VmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZihjb250ZXh0LCBpbmRleCwgeCwgeSwgeikpOwogICAgICAg
ICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPm1hdHJp
eExvYWRJZGVudGl0eShtYXRyaXhNb2RlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0
dHJpYjNmKGluZGV4LCB4LCB5LCB6KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbWF0cml4
TW9kZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliM2YsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBpbmRleCwgeCwgeSwgeik7CiAgICAgfQogfQogCi1HTHVpbnQgR0xfQVBJRU5U
UlkgR2VuUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVp
IHJhbmdlKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZnZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAgIENv
bnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVW
RU5UKCJnbEdlblBhdGhzQ0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTHNpemVpIHJhbmdlID0g
JWQiLCBDSUQoY29udGV4dCksIHJhbmdlKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWIzZnYi
LAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBjb25zdCBHTGZs
b2F0ICp2ID0gMHglMDE2IiBQUkl4UFRSICIiLCBDSUQoY29udGV4dCksCisgICAgICAgICAgaW5k
ZXgsICh1aW50cHRyX3Qpdik7CiAKLSAgICBHTHVpbnQgcmV0dXJuVmFsdWU7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVHZW5QYXRoc0NI
Uk9NSVVNKGNvbnRleHQsIHJhbmdlKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZnYoY29udGV4dCwgaW5kZXgs
IHYpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGNvbnRleHQtPmdlblBhdGhzKHJhbmdlKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVyblZhbHVlID0gR2V0RGVmYXVsdFJl
dHVyblZhbHVlPEVudHJ5UG9pbnQ6OkdlblBhdGhzQ0hST01JVU0sIEdMdWludD4oKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgdik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShHZW5QYXRoc0NIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcmFuZ2UsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
cmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6R2VuUGF0aHND
SFJPTUlVTSwgR0x1aW50PigpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYjNm
diwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB2KTsKICAgICB9Ci0gICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVBhdGhzQ0hST01JVU1Db250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKQor
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
dykKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xEZWxldGVQYXRoc0NIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwg
R0x1aW50IGZpcnN0ID0gJXUsIEdMc2l6ZWkgcmFuZ2UgPSAlZCIsCi0gICAgICAgICAgQ0lEKGNv
bnRleHQpLCBmaXJzdCwgcmFuZ2UpOworICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYjRmIiwKKyAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xmbG9hdCB4ID0gJWYs
IEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZiwgIgorICAgICAgICAgICJHTGZsb2F0IHcg
PSAlZiIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgeCwgeSwgeiwgdyk7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElEIGZpcnN0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4oZmlyc3QpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fCBWYWxpZGF0ZURlbGV0ZVBhdGhzQ0hST01JVU0oY29udGV4dCwgZmlyc3RQYWNrZWQsIHJh
bmdlKSk7CisgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVZlcnRleEF0dHJpYjRmKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KSk7CiAgICAgICAgIGlm
IChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUGF0
aHMoZmlyc3RQYWNrZWQsIHJhbmdlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJp
YjRmKGluZGV4LCB4LCB5LCB6LCB3KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KERlbGV0ZVBhdGhzQ0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBmaXJzdFBhY2tlZCwg
cmFuZ2UpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYjRmLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgaW5kZXgsIHgsIHksIHosIHcpOwogICAgIH0KIH0KIAotR0xib29sZWFuIEdM
X0FQSUVOVFJZIElzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdM
dWludCBwYXRoKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWI0ZnZDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAg
IENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAg
IEVWRU5UKCJnbElzUGF0aENIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAl
dSIsIENJRChjb250ZXh0KSwgcGF0aCk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliNGZ2IiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgY29uc3QgR0xmbG9h
dCAqdiA9IDB4JTAxNiIgUFJJeFBUUiAiIiwgQ0lEKGNvbnRleHQpLAorICAgICAgICAgIGluZGV4
LCAodWludHB0cl90KXYpOwogCi0gICAgR0xib29sZWFuIHJldHVyblZhbHVlOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQotICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVJc1BhdGhDSFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkKSk7CisgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmdihjb250
ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gY29udGV4dC0+aXNQYXRoKHBhdGhQYWNrZWQpOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuVmFsdWUg
PSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50cnlQb2ludDo6SXNQYXRoQ0hST01JVU0sIEdMYm9v
bGVhbj4oKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgdik7
CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShJc1BhdGhDSFJPTUlVTSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIHJldHVyblZhbHVlKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBHZXREZWZhdWx0UmV0dXJuVmFsdWU8RW50
cnlQb2ludDo6SXNQYXRoQ0hST01JVU0sIEdMYm9vbGVhbj4oKTsKKyAgICAgICAgQU5HTEVfQ0FQ
VFVSRShWZXJ0ZXhBdHRyaWI0ZnYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgdik7CiAg
ICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQYXRo
Q29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBu
dW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x1Ynl0ZSAqY29tbWFuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29vcmRUeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpjb29yZHMpCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkJpbmRpbmdDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRpbmdpbmRleCkKIHsKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAg
ICBFVkVOVCgiZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAl
ZCwgR0x1aW50IHBhdGggPSAldSwgR0xzaXplaSBudW1Db21tYW5kcyA9ICVkLCBjb25zdCBHTHVi
eXRlICogY29tbWFuZHMgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAgICAg
ICIsIEdMc2l6ZWkgbnVtQ29vcmRzID0gJWQsIEdMZW51bSBjb29yZFR5cGUgPSAlcywgY29uc3Qg
dm9pZCogY29vcmRzID0gMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0
KSwgcGF0aCwgbnVtQ29tbWFuZHMsICh1aW50cHRyX3QpY29tbWFuZHMsIG51bUNvb3JkcywKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb29yZFR5
cGUpLCAodWludHB0cl90KWNvb3Jkcyk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliQmluZGlu
ZyIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGF0dHJpYmluZGV4ID0gJXUsIEdM
dWludCBiaW5kaW5naW5kZXggPSAldSIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBhdHRyaWJp
bmRleCwgYmluZGluZ2luZGV4KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRo
SUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElE
PihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRoQ29tbWFu
ZHNDSFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBudW1Db21tYW5kcywgY29tbWFuZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dW1Db29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYkJpbmRpbmcoY29udGV4dCwg
YXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnBhdGhDb21tYW5kcyhwYXRoUGFja2VkLCBu
dW1Db21tYW5kcywgY29tbWFuZHMsIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29yZHMpOworICAg
ICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliQmluZGluZyhhdHRyaWJpbmRleCwgYmluZGlu
Z2luZGV4KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFBhdGhDb21tYW5kc0NI
Uk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGF0aFBhY2tlZCwgbnVtQ29tbWFuZHMsIGNv
bW1hbmRzLAotICAgICAgICAgICAgICAgICAgICAgIG51bUNvb3JkcywgY29vcmRUeXBlLCBjb29y
ZHMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkJpbmRpbmcsIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBhdHRyaWJpbmRleCwgYmluZGluZ2luZGV4KTsKICAgICB9CiB9CiAKLXZv
aWQgR0xfQVBJRU5UUlkgUGF0aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHZhbHVlKQordm9pZCBHTF9BUElFTlRS
WSBWZXJ0ZXhBdHRyaWJEaXZpc29yQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZFTlQoImdsUGF0aFBhcmFtZXRlcmZD
SFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xl
bnVtIHBuYW1lID0gJXMsIEdMZmxvYXQgdmFsdWUgPSAlZiIsIENJRChjb250ZXh0KSwKLSAgICAg
ICAgICBwYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwbmFt
ZSksIHZhbHVlKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yIiwgImNvbnRleHQg
PSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUiLAorICAgICAgICAg
IENJRChjb250ZXh0KSwgaW5kZXgsIGRpdmlzb3IpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFBhdGhJRCBwYXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxQYXRoSUQ+KHBhdGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAg
Ym9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0
ZVBhdGhQYXJhbWV0ZXJmQ0hST01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVl
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNv
bnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXND
YWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJEaXZpc29yKGNvbnRleHQsIGluZGV4LCBkaXZpc29yKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cGF0
aFBhcmFtZXRlcmYocGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogICAgICAgICB9Ci0gICAg
ICAgIEFOR0xFX0NBUFRVUkUoUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VmVydGV4QXR0cmliRGl2aXNvciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBkaXZpc29y
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgUGF0aFBhcmFtZXRlcmlDSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2YWx1ZSkK
K3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGl2aXNvcikKIHsKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgi
Z2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVp
bnQgcGF0aCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xpbnQgdmFsdWUgPSAlZCIsIENJRChj
b250ZXh0KSwgcGF0aCwKLSAgICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVm
YXVsdEdyb3VwLCBwbmFtZSksIHZhbHVlKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUiLCAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0x1aW50IGRpdmlz
b3IgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgZGl2aXNvcik7CiAKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElEIHBhdGhQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4ocGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShjb250ZXh0LCBwYXRo
UGFja2VkLCBwbmFtZSwgdmFsdWUpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbnRleHQsIGlu
ZGV4LCBkaXZpc29yKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+cGF0aFBhcmFtZXRlcmkocGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlz
b3IpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUGF0aFBhcmFtZXRlcmlDSFJP
TUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7Cisg
ICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliRGl2aXNvckFOR0xFLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgaW5kZXgsIGRpdmlzb3IpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4QXR0cmliRGl2aXNvckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQogewogICAgIENvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFBhdGhQ
YXJhbWV0ZXJmdkNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0
aCA9ICV1LCBHTGVudW0gcG5hbWUgPSAlcywgR0xmbG9hdCAqIHZhbHVlID0gMHglMDE2IiBQUkl4
UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcG5hbWUpLCAodWludHB0cl90KXZhbHVlKTsKKyAgICBF
VkVOVCgiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUIiwgImNvbnRleHQgPSAlZCwgR0x1aW50IGlu
ZGV4ID0gJXUsIEdMdWludCBkaXZpc29yID0gJXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwg
aW5kZXgsIGRpdmlzb3IpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBhdGhJRCBw
YXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBh
dGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldFBhdGhQYXJhbWV0
ZXJmdkNIUk9NSVVNKGNvbnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
KyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4
QXR0cmliRGl2aXNvckVYVChjb250ZXh0LCBpbmRleCwgZGl2aXNvcikpOwogICAgICAgICBpZiAo
aXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldFBhdGhQYXJh
bWV0ZXJmdihwYXRoUGFja2VkLCBwbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgY29udGV4dC0+
dmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiAgICAgICAgIH0KLSAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHBhdGhQYWNrZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUo
VmVydGV4QXR0cmliRGl2aXNvckVYVCwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCBkaXZp
c29yKTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UGF0aFBhcmFtZXRlcml2Q0hS
T01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnZhbHVlKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJGb3JtYXRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3Jt
YWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHJlbGF0aXZlb2Zmc2V0KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNf
Y2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbEdldFBhdGhQYXJhbWV0ZXJp
dkNIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBH
TGVudW0gcG5hbWUgPSAlcywgR0xpbnQgKiB2YWx1ZSA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAg
ICAgICAgICBDSUQoY29udGV4dCksIHBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpE
ZWZhdWx0R3JvdXAsIHBuYW1lKSwgKHVpbnRwdHJfdCl2YWx1ZSk7CisgICAgRVZFTlQoImdsVmVy
dGV4QXR0cmliRm9ybWF0IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgYXR0cmli
aW5kZXggPSAldSwgR0xpbnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTGJvb2xlYW4g
IgorICAgICAgICAgICJub3JtYWxpemVkID0gJXMsIEdMdWludCByZWxhdGl2ZW9mZnNldCA9ICV1
IiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIGF0dHJpYmluZGV4LCBzaXplLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0eXBlKSwKKyAgICAgICAgICBHTGJvb2xl
YW5Ub1N0cmluZyhub3JtYWxpemVkKSwgcmVsYXRpdmVvZmZzZXQpOwogCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFBhdGhJRCBwYXRoUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKGNvbnRleHQsIHBhdGhQYWNrZWQs
IHBuYW1lLCB2YWx1ZSkpOworICAgICAgICBWZXJ0ZXhBdHRyaWJUeXBlIHR5cGVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhBdHRyaWJUeXBlPih0eXBlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVy
dGV4QXR0cmliRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
cm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0UGF0aFBhcmFtZXRlcml2KHBhdGhQYWNr
ZWQsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJGb3Jt
YXQoYXR0cmliaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zm
c2V0KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFBhdGhQYXJhbWV0ZXJp
dkNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGF0aFBhY2tlZCwgcG5hbWUsIHZhbHVl
KTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhBdHRyaWJGb3JtYXQsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBhdHRyaWJpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBub3JtYWxpemVkLCByZWxhdGl2ZW9mZnNldCk7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCByZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQordm9pZCBHTF9BUElFTlRSWQorVmVy
dGV4QXR0cmliSTRpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBpbmRleCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdykKIHsKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xQYXRo
U3RlbmNpbEZ1bmNDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xlbnVtIGZ1
bmMgPSAlcywgR0xpbnQgcmVmID0gJWQsIEdMdWludCBtYXNrID0gJXUiLCBDSUQoY29udGV4dCks
Ci0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgZnVu
YyksIHJlZiwgbWFzayk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliSTRpIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xpbnQgeCA9ICVkLCBHTGludCB5
ID0gJWQsIEdMaW50IHogPSAlZCwgR0xpbnQgdyA9ICVkIiwKKyAgICAgICAgICBDSUQoY29udGV4
dCksIGluZGV4LCB4LCB5LCB6LCB3KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKGNvbnRl
eHQsIGZ1bmMsIHJlZiwgbWFzaykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlVmVydGV4QXR0cmliSTRpKGNvbnRleHQsIGluZGV4LCB4
LCB5LCB6LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cGF0aFN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7CisgICAgICAg
ICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpOwogICAgICAg
ICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0sIGlzQ2Fs
bFZhbGlkLCBjb250ZXh0LCBmdW5jLCByZWYsIG1hc2spOworICAgICAgICBBTkdMRV9DQVBUVVJF
KFZlcnRleEF0dHJpYkk0aSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3
KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1D
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG1hc2spCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkk0aXZDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdikKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTSIsCi0gICAgICAgICAgImNvbnRleHQgPSAlZCwg
R0x1aW50IHBhdGggPSAldSwgR0xlbnVtIGZpbGxNb2RlID0gJXMsIEdMdWludCBtYXNrID0gJXUi
LCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OkRlZmF1bHRHcm91cCwgZmlsbE1vZGUpLCBtYXNrKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhB
dHRyaWJJNGl2IiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwg
Y29uc3QgR0xpbnQgKnYgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAg
ICAgICBpbmRleCwgKHVpbnRwdHJfdCl2KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVTdGVu
Y2lsRmlsbFBhdGhDSFJPTUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBmaWxsTW9kZSwgbWFzaykp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlk
YXRlVmVydGV4QXR0cmliSTRpdihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxGaWxsUGF0
aChwYXRoUGFja2VkLCBmaWxsTW9kZSwgbWFzayk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0
ZXhBdHRyaWJJNGl2KGluZGV4LCB2KTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcGF0aFBhY2tl
ZCwgZmlsbE1vZGUsIG1hc2spOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYkk0
aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgdik7CiAgICAgfQogfQogCi12b2lkIEdM
X0FQSUVOVFJZIFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spCit2b2lkIEdM
X0FQSUVOVFJZCitWZXJ0ZXhBdHRyaWJJNHVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
IEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0x1aW50IHcpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTSIsCi0gICAgICAgICAgImNv
bnRleHQgPSAlZCwgR0x1aW50IHBhdGggPSAldSwgR0xpbnQgcmVmZXJlbmNlID0gJWQsIEdMdWlu
dCBtYXNrID0gJXUiLCBDSUQoY29udGV4dCksCi0gICAgICAgICAgcGF0aCwgcmVmZXJlbmNlLCBt
YXNrKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhBdHRyaWJJNHVpIiwKKyAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0x1aW50IHggPSAldSwgR0x1aW50IHkgPSAldSwg
R0x1aW50IHogPSAldSwgR0x1aW50IHcgIgorICAgICAgICAgICI9ICV1IiwKKyAgICAgICAgICBD
SUQoY29udGV4dCksIGluZGV4LCB4LCB5LCB6LCB3KTsKIAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBQYXRoSUQgcGF0aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UGF0aElEPihwYXRoKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0
ZVN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgcGF0aFBhY2tlZCwgcmVm
ZXJlbmNlLCBtYXNrKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVpKGNvbnRleHQsIGluZGV4LCB4LCB5LCB6
LCB3KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+c3RlbmNpbFN0cm9rZVBhdGgocGF0aFBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcp
OwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFN0cm9rZVBhdGhDSFJP
TUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIHJlZmVyZW5jZSwgbWFzayk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliSTR1aSwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkg
Q292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJ
NHVpdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
dWludCAqdikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRl
eHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0iLCAiY29udGV4
dCA9ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXMiLAotICAgICAg
ICAgIENJRChjb250ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgY292ZXJNb2RlKSk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliSTR1aXYiLAor
ICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBpbmRleCA9ICV1LCBjb25zdCBHTHVpbnQg
KnYgPSAweCUwMTYiIFBSSXhQVFIgIiIsIENJRChjb250ZXh0KSwKKyAgICAgICAgICBpbmRleCwg
KHVpbnRwdHJfdCl2KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0
aFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRo
KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3ZlckZpbGxQYXRoQ0hS
T01JVU0oY29udGV4dCwgcGF0aFBhY2tlZCwgY292ZXJNb2RlKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJNHVp
dihjb250ZXh0LCBpbmRleCwgdikpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmNvdmVyRmlsbFBhdGgocGF0aFBhY2tlZCwgY292ZXJN
b2RlKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCB2KTsK
ICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKENvdmVyRmlsbFBhdGhDSFJPTUlVTSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGNvdmVyTW9kZSk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVmVydGV4QXR0cmliSTR1aXYsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRl
eCwgdik7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
KQordm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJRm9ybWF0Q29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGF0dHJpYmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlb2Zmc2V0KQogewog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwot
ICAgIEVWRU5UKCJnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNIiwgImNvbnRleHQgPSAlZCwgR0x1
aW50IHBhdGggPSAldSwgR0xlbnVtIGNvdmVyTW9kZSA9ICVzIiwKLSAgICAgICAgICBDSUQoY29u
dGV4dCksIHBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNv
dmVyTW9kZSkpOworICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYklGb3JtYXQiLAorICAgICAgICAg
ICJjb250ZXh0ID0gJWQsIEdMdWludCBhdHRyaWJpbmRleCA9ICV1LCBHTGludCBzaXplID0gJWQs
IEdMZW51bSB0eXBlID0gJXMsIEdMdWludCAiCisgICAgICAgICAgInJlbGF0aXZlb2Zmc2V0ID0g
JXUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgYXR0cmliaW5kZXgsIHNpemUsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHR5cGUpLAorICAgICAgICAgIHJlbGF0
aXZlb2Zmc2V0KTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVDb3ZlclN0cm9rZVBhdGhDSFJP
TUlVTShjb250ZXh0LCBwYXRoUGFja2VkLCBjb3Zlck1vZGUpKTsKKyAgICAgICAgVmVydGV4QXR0
cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAgKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICBWYWxpZGF0ZVZlcnRleEF0dHJpYklGb3JtYXQo
Y29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIHJlbGF0aXZlb2Zmc2V0KSk7
CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+Y292ZXJTdHJva2VQYXRoKHBhdGhQYWNrZWQsIGNvdmVyTW9kZSk7CisgICAgICAgICAgICBj
b250ZXh0LT52ZXJ0ZXhBdHRyaWJJRm9ybWF0KGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2Vk
LCByZWxhdGl2ZW9mZnNldCk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShDb3Zl
clN0cm9rZVBhdGhDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGNv
dmVyTW9kZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0cmliSUZvcm1hdCwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlUGFja2VkLAorICAgICAg
ICAgICAgICAgICAgICAgIHJlbGF0aXZlb2Zmc2V0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJ
RU5UUlkgU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit2b2lkIEdMX0FQSUVOVFJZ
IFZlcnRleEF0dHJpYklQb2ludGVyQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2ludGVyKQogewogICAgIENvbnRleHQg
KmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJn
bFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9
ICVkLCBHTHVpbnQgcGF0aCA9ICV1LCBHTGVudW0gZmlsbE1vZGUgPSAlcywgR0x1aW50IG1hc2sg
PSAldSwgR0xlbnVtICIKLSAgICAgICAgICAiY292ZXJNb2RlID0gJXMiLAotICAgICAgICAgIENJ
RChjb250ZXh0KSwgcGF0aCwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91
cCwgZmlsbE1vZGUpLCBtYXNrLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3Vw
OjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSkpOworICAgIEVWRU5UKCJnbFZlcnRleEF0dHJpYklQ
b2ludGVyIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgaW5kZXggPSAldSwgR0xp
bnQgc2l6ZSA9ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICIKKyAgICAg
ICAgICAiJWQsIGNvbnN0IHZvaWQgKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAg
ICAgICAgQ0lEKGNvbnRleHQpLCBpbmRleCwgc2l6ZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3Jv
dXA6OlZlcnRleEF0dHJpYlBvaW50ZXJUeXBlLCB0eXBlKSwKKyAgICAgICAgICBzdHJpZGUsICh1
aW50cHRyX3QpcG9pbnRlcik7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0aElE
IHBhdGhQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJRD4o
cGF0aCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBWZXJ0ZXhBdHRyaWJU
eXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxWZXJ0ZXhB
dHRyaWJUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fCBWYWxpZGF0ZVN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHBhdGhQ
YWNrZWQsIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUpKTsKKyAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
UG9pbnRlcihjb250ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVy
KSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKHBhdGhQYWNrZWQsIGZpbGxNb2RlLCBtYXNr
LCBjb3Zlck1vZGUpOworICAgICAgICAgICAgY29udGV4dC0+dmVydGV4QXR0cmliSVBvaW50ZXIo
aW5kZXgsIHNpemUsIHR5cGVQYWNrZWQsIHN0cmlkZSwgcG9pbnRlcik7CiAgICAgICAgIH0KLSAg
ICAgICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNrZWQsIGZpbGxNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgIG1hc2ssIGNvdmVyTW9kZSk7CisgICAgICAgIEFOR0xFX0NBUFRVUkUoVmVydGV4QXR0
cmliSVBvaW50ZXIsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tl
ZCwgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUpCit2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYlBvaW50ZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpwb2ludGVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6
Q29udGV4dCAqPihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
Q0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwYXRoID0gJXUsIEdM
aW50IHJlZmVyZW5jZSA9ICVkLCBHTHVpbnQgbWFzayA9ICV1LCBHTGVudW0gIgotICAgICAgICAg
ICJjb3Zlck1vZGUgPSAlcyIsCi0gICAgICAgICAgQ0lEKGNvbnRleHQpLCBwYXRoLCByZWZlcmVu
Y2UsIG1hc2ssCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRH
cm91cCwgY292ZXJNb2RlKSk7CisgICAgRVZFTlQoImdsVmVydGV4QXR0cmliUG9pbnRlciIsCisg
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0x1aW50IGluZGV4ID0gJXUsIEdMaW50IHNpemUgPSAl
ZCwgR0xlbnVtIHR5cGUgPSAlcywgR0xib29sZWFuICIKKyAgICAgICAgICAibm9ybWFsaXplZCA9
ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICpwb2ludGVyID0gMHglMDE2IiBQ
Ukl4UFRSICIiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgaW5kZXgsIHNpemUsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSwgdHlwZSksCisgICAg
ICAgICAgR0xib29sZWFuVG9TdHJpbmcobm9ybWFsaXplZCksIHN0cmlkZSwgKHVpbnRwdHJfdClw
b2ludGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aFBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQotICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQsIHBhdGhQYWNrZWQsIHJlZmVyZW5jZSwgbWFzaywgY292
ZXJNb2RlKSk7CisgICAgICAgIFZlcnRleEF0dHJpYlR5cGUgdHlwZVBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFZlcnRleEF0dHJpYlR5cGU+KHR5cGUpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWJQb2ludGVyKGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBlUGFja2VkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkLCBz
dHJpZGUsIHBvaW50ZXIpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChwYXRoUGFja2Vk
LCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSk7CisgICAgICAgICAgICBjb250ZXh0LT52ZXJ0
ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlUGFja2VkLCBub3JtYWxpemVkLCBzdHJp
ZGUsIHBvaW50ZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFRo
ZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHBhdGhQYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUpOwor
ICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleEF0dHJpYlBvaW50ZXIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBu
b3JtYWxpemVkLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRS
WSBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcykKK3ZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QmluZGluZ0Rpdmlzb3JDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGJpbmRpbmdpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7Ci0gICAgRVZF
TlQoImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4
dCA9ICVkLCBHTHNpemVpIG51bVBhdGggPSAlZCwgR0xlbnVtIHBhdGhOYW1lVHlwZSA9ICVzLCBj
b25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAgICAgICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAg
ICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXMsIEdMZW51
bSB0cmFuc2Zvcm1UeXBlID0gJXMsIGNvbnN0IEdMZmxvYXQgIgotICAgICAgICAgICIqIHRyYW5z
Zm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCks
IG51bVBhdGgsIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHBhdGhO
YW1lVHlwZSksCi0gICAgICAgICAgKHVpbnRwdHJfdClwYXRocywgcGF0aEJhc2UsIEdMZW51bVRv
U3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSksCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHJhbnNmb3JtVHlwZSks
ICh1aW50cHRyX3QpdHJhbnNmb3JtVmFsdWVzKTsKKyAgICBFVkVOVCgiZ2xWZXJ0ZXhCaW5kaW5n
RGl2aXNvciIsICJjb250ZXh0ID0gJWQsIEdMdWludCBiaW5kaW5naW5kZXggPSAldSwgR0x1aW50
IGRpdmlzb3IgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBiaW5kaW5naW5kZXgsIGRp
dmlzb3IpOwogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFBhdGhJRCBwYXRoQmFzZVBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQYXRoSUQ+KHBhdGhCYXNlKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQot
ICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVDb3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlVmVydGV4QmluZGlu
Z0Rpdmlzb3IoY29udGV4dCwgYmluZGluZ2luZGV4LCBkaXZpc29yKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Y292ZXJGaWxsUGF0
aEluc3RhbmNlZChudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwg
Y292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICAgICAgY29udGV4dC0+dmVy
dGV4QmluZGluZ0Rpdmlzb3IoYmluZGluZ2luZGV4LCBkaXZpc29yKTsKICAgICAgICAgfQotICAg
ICAgICBBTkdMRV9DQVBUVVJFKENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSwgaXNDYWxs
VmFsaWQsIGNvbnRleHQsIG51bVBhdGgsIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKTsKKyAgICAgICAgQU5HTEVfQ0FQVFVSRShWZXJ0ZXhCaW5kaW5nRGl2aXNv
ciwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIGJpbmRpbmdpbmRleCwgZGl2aXNvcik7CiAgICAgfQog
fQogCi12b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3ZvaWQgR0xfQVBJ
RU5UUlkgVmVydGV4UG9pbnRlckNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRl
cikKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4o
Y3R4KTsKLSAgICBFVkVOVCgiZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0g
ICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBudW1QYXRoID0gJWQsIEdMZW51bSBwYXRo
TmFtZVR5cGUgPSAlcywgY29uc3Qgdm9pZCAqIHBhdGhzID0gIgotICAgICAgICAgICIweCUwMTYi
IFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xlbnVtIGNvdmVy
TW9kZSA9ICVzLCBHTGVudW0gdHJhbnNmb3JtVHlwZSA9ICVzLCBjb25zdCBHTGZsb2F0ICIKLSAg
ICAgICAgICAiKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAg
ICAgQ0lEKGNvbnRleHQpLCBudW1QYXRoLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVm
YXVsdEdyb3VwLCBwYXRoTmFtZVR5cGUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGF0aHMsIHBh
dGhCYXNlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBjb3Zlck1v
ZGUpLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAs
IHRyYW5zZm9ybVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZFTlQo
ImdsVmVydGV4UG9pbnRlciIsCisgICAgICAgICAgImNvbnRleHQgPSAlZCwgR0xpbnQgc2l6ZSA9
ICVkLCBHTGVudW0gdHlwZSA9ICVzLCBHTHNpemVpIHN0cmlkZSA9ICVkLCBjb25zdCB2b2lkICIK
KyAgICAgICAgICAiKnBvaW50ZXIgPSAweCUwMTYiIFBSSXhQVFIgIiIsCisgICAgICAgICAgQ0lE
KGNvbnRleHQpLCBzaXplLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6VmVydGV4UG9pbnRl
clR5cGUsIHR5cGUpLCBzdHJpZGUsCisgICAgICAgICAgKHVpbnRwdHJfdClwb2ludGVyKTsKIAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aEJhc2VQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoQmFzZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KLSAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNr
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY292ZXJN
b2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAgICAgICAgVmVydGV4QXR0
cmliVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VmVy
dGV4QXR0cmliVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVZlcnRleFBvaW50ZXIoY29udGV4dCwgc2l6ZSwgdHlwZVBhY2tl
ZCwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Y292ZXJTdHJva2VQYXRoSW5zdGFuY2VkKG51bVBhdGgs
IHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJh
bnNmb3JtVmFsdWVzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnZlcnRleFBvaW50ZXIoc2l6ZSwg
dHlwZVBhY2tlZCwgc3RyaWRlLCBwb2ludGVyKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9D
QVBUVVJFKENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgIHBhdGhz
LCBwYXRoQmFzZVBhY2tlZCwgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1
ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFZlcnRleFBvaW50ZXIsIGlzQ2FsbFZhbGlkLCBj
b250ZXh0LCBzaXplLCB0eXBlUGFja2VkLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgIH0KIH0KIAot
dm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
bWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp0cmFuc2Zvcm1WYWx1ZXMpCit2b2lkIEdMX0FQSUVOVFJZCitWaWV3cG9ydENvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCkKIHsKICAgICBDb250ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNv
bnRleHQgKj4oY3R4KTsKLSAgICBFVkVOVCgiZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENI
Uk9NSVVNIiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG51bVBhdGggPSAlZCwg
R0xlbnVtIHBhdGhOYW1lVHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAgICAg
ICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1LCBH
TGludCByZWZlcmVuY2UgPSAlZCwgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIHRyYW5zZm9ybVR5
cGUgPSAiCi0gICAgICAgICAgIiVzLCBjb25zdCBHTGZsb2F0ICogdHJhbnNmb3JtVmFsdWVzID0g
MHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgbnVtUGF0aCwgR0xl
bnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgcGF0aE5hbWVUeXBlKSwKLSAg
ICAgICAgICAodWludHB0cl90KXBhdGhzLCBwYXRoQmFzZSwgcmVmZXJlbmNlLCBtYXNrLAotICAg
ICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHRyYW5zZm9y
bVR5cGUpLCAodWludHB0cl90KXRyYW5zZm9ybVZhbHVlcyk7CisgICAgRVZFTlQoImdsVmlld3Bv
cnQiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVk
LCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQiLAorICAgICAgICAgIENJ
RChjb250ZXh0KSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgUGF0aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFBhdGhJRD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9Ci0gICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVN0
ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBw
YXRocywgcGF0aEJhc2VQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1
ZXMpKTsKKyAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRl
Vmlld3BvcnQoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgICAgICBpZiAoaXND
YWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxTdHJva2VQ
YXRoSW5zdGFuY2VkKG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2Vk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJl
bmNlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICAgICAg
Y29udGV4dC0+dmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIH0KLSAgICAg
ICAgQU5HTEVfQ0FQVFVSRShTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNLCBpc0Nh
bGxWYWxpZCwgY29udGV4dCwgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICBwYXRoTmFt
ZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLCB0cmFuc2Zvcm1U
eXBlLAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7CisgICAgICAgIEFO
R0xFX0NBUFRVUkUoVmlld3BvcnQsIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
cGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3ZvaWQgR0xfQVBJRU5UUlkgV2FpdFNlbWFwaG9yZUVY
VENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzZW1hcGhvcmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUJ1ZmZlckJhcnJpZXJzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWlu
dCAqYnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbnVtVGV4dHVyZUJhcnJpZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqdGV4dHVyZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICpzcmNMYXlvdXRz
KQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihj
dHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNIiwKLSAg
ICAgICAgICAiY29udGV4dCA9ICVkLCBHTHNpemVpIG51bVBhdGhzID0gJWQsIEdMZW51bSBwYXRo
TmFtZVR5cGUgPSAlcywgY29uc3Qgdm9pZCAqIHBhdGhzID0gIgotICAgICAgICAgICIweCUwMTYi
IFBSSXhQVFIKLSAgICAgICAgICAiLCBHTHVpbnQgcGF0aEJhc2UgPSAldSwgR0xlbnVtIGZpbGxN
b2RlID0gJXMsIEdMdWludCBtYXNrID0gJXUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlID0gIgotICAg
ICAgICAgICIlcywgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZhbHVlcyA9IDB4JTAxNiIgUFJJ
eFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG51bVBhdGhzLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwYXRoTmFtZVR5cGUpLAotICAgICAgICAgICh1
aW50cHRyX3QpcGF0aHMsIHBhdGhCYXNlLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVm
YXVsdEdyb3VwLCBmaWxsTW9kZSksIG1hc2ssCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHJhbnNmb3JtVHlwZSksICh1aW50cHRyX3QpdHJhbnNm
b3JtVmFsdWVzKTsKKyAgICBFVkVOVCgiZ2xXYWl0U2VtYXBob3JlRVhUIiwKKyAgICAgICAgICAi
Y29udGV4dCA9ICVkLCBHTHVpbnQgc2VtYXBob3JlID0gJXUsIEdMdWludCBudW1CdWZmZXJCYXJy
aWVycyA9ICV1LCBjb25zdCBHTHVpbnQgIgorICAgICAgICAgICIqYnVmZmVycyA9IDB4JTAxNiIg
UFJJeFBUUgorICAgICAgICAgICIsIEdMdWludCBudW1UZXh0dXJlQmFycmllcnMgPSAldSwgY29u
c3QgR0x1aW50ICp0ZXh0dXJlcyA9IDB4JTAxNiIgUFJJeFBUUgorICAgICAgICAgICIsIGNvbnN0
IEdMZW51bSAqc3JjTGF5b3V0cyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQo
Y29udGV4dCksIHNlbWFwaG9yZSwgbnVtQnVmZmVyQmFycmllcnMsICh1aW50cHRyX3QpYnVmZmVy
cywgbnVtVGV4dHVyZUJhcnJpZXJzLAorICAgICAgICAgICh1aW50cHRyX3QpdGV4dHVyZXMsICh1
aW50cHRyX3Qpc3JjTGF5b3V0cyk7CiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUGF0
aElEIHBhdGhCYXNlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFBhdGhJ
RD4ocGF0aEJhc2UpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVN0ZW5j
aWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNr
ZWQsIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLCB0cmFu
c2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpKTsKKyAgICAgICAgU2VtYXBob3JlSUQgc2VtYXBo
b3JlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2VtYXBob3JlSUQ+
KHNlbWFwaG9yZSk7CisgICAgICAgIGNvbnN0IEJ1ZmZlcklEICpidWZmZXJzUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPGNvbnN0IEJ1ZmZlcklEICo+KGJ1ZmZlcnMpOwor
ICAgICAgICBjb25zdCBUZXh0dXJlSUQgKnRleHR1cmVzUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxjb25zdCBUZXh0dXJlSUQgKj4odGV4dHVyZXMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNo
YXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAg
ICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgICAgICAgVmFsaWRh
dGVXYWl0U2VtYXBob3JlRVhUKGNvbnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFy
cmllcnMsIGJ1ZmZlcnNQYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bVRleHR1cmVCYXJyaWVycywgdGV4dHVyZXNQYWNrZWQsIHNyY0xheW91dHMpKTsKICAg
ICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5z
dGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQobnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBh
dGhCYXNlUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbGxNb2RlLCBtYXNrLCB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAg
ICAgICAgICAgY29udGV4dC0+d2FpdFNlbWFwaG9yZShzZW1hcGhvcmVQYWNrZWQsIG51bUJ1ZmZl
ckJhcnJpZXJzLCBidWZmZXJzUGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudW1UZXh0dXJlQmFycmllcnMsIHRleHR1cmVzUGFja2VkLCBzcmNMYXlvdXRzKTsKICAg
ICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJFKFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2VQYWNrZWQsIGZpbGxNb2RlLCBtYXNr
LCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7
CisgICAgICAgIEFOR0xFX0NBUFRVUkUoV2FpdFNlbWFwaG9yZUVYVCwgaXNDYWxsVmFsaWQsIGNv
bnRleHQsIHNlbWFwaG9yZVBhY2tlZCwgbnVtQnVmZmVyQmFycmllcnMsCisgICAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyc1BhY2tlZCwgbnVtVGV4dHVyZUJhcnJpZXJzLCB0ZXh0dXJlc1BhY2tl
ZCwgc3JjTGF5b3V0cyk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZCi1TdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQordm9pZCBH
TF9BUElFTlRSWSBXYWl0U3luY0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHN5bmMgc3luYywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBmbGFncywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50NjQgdGltZW91dCkKIHsKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oY3R4KTsKLSAgICBFVkVO
VCgiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsCi0gICAgICAg
ICAgImNvbnRleHQgPSAlZCwgR0xzaXplaSBudW1QYXRocyA9ICVkLCBHTGVudW0gcGF0aE5hbWVU
eXBlID0gJXMsIGNvbnN0IHZvaWQgKiBwYXRocyA9ICIKLSAgICAgICAgICAiMHglMDE2IiBQUkl4
UFRSCi0gICAgICAgICAgIiwgR0x1aW50IHBhdGhCYXNlID0gJXUsIEdMZW51bSBmaWxsTW9kZSA9
ICVzLCBHTHVpbnQgbWFzayA9ICV1LCBHTGVudW0gY292ZXJNb2RlID0gJXMsICIKLSAgICAgICAg
ICAiR0xlbnVtIHRyYW5zZm9ybVR5cGUgPSAlcywgY29uc3QgR0xmbG9hdCAqIHRyYW5zZm9ybVZh
bHVlcyA9IDB4JTAxNiIgUFJJeFBUUiAiIiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIG51bVBh
dGhzLCBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBwYXRoTmFtZVR5
cGUpLAotICAgICAgICAgICh1aW50cHRyX3QpcGF0aHMsIHBhdGhCYXNlLCBHTGVudW1Ub1N0cmlu
ZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBmaWxsTW9kZSksIG1hc2ssCi0gICAgICAgICAg
R0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgY292ZXJNb2RlKSwKLSAg
ICAgICAgICBHTGVudW1Ub1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCB0cmFuc2Zv
cm1UeXBlKSwgKHVpbnRwdHJfdCl0cmFuc2Zvcm1WYWx1ZXMpOworICAgIEVWRU5UKCJnbFdhaXRT
eW5jIiwKKyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHN5bmMgc3luYyA9IDB4JTAxNiIgUFJJ
eFBUUgorICAgICAgICAgICIsIEdMYml0ZmllbGQgZmxhZ3MgPSAlcywgR0x1aW50NjQgdGltZW91
dCA9ICVsbHUiLAorICAgICAgICAgIENJRChjb250ZXh0KSwgKHVpbnRwdHJfdClzeW5jLAorICAg
ICAgICAgIEdMYml0ZmllbGRUb1N0cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBmbGFn
cykuY19zdHIoKSwKKyAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHRp
bWVvdXQpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRoSUQgcGF0aEJhc2VQ
YWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElEPihwYXRoQmFzZSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNpbFRoZW5Db3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwg
ZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIGNvdmVyTW9k
ZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVXYWl0U3luYyhjb250ZXh0LCBz
eW5jLCBmbGFncywgdGltZW91dCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNl
ZChudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoQmFzZVBhY2tlZCwgZmlsbE1vZGUs
IG1hc2ssIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAg
ICAgICAgY29udGV4dC0+d2FpdFN5bmMoc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogICAgICAgICB9
Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU0sIGlzQ2FsbFZhbGlkLCBjb250ZXh0LCBudW1QYXRocywKLSAgICAgICAgICAgICAg
ICAgICAgICBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZVBhY2tlZCwgZmlsbE1vZGUsIG1h
c2ssIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFu
c2Zvcm1WYWx1ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFdhaXRTeW5jLCBpc0NhbGxWYWxp
ZCwgY29udGV4dCwgc3luYywgZmxhZ3MsIHRpbWVvdXQpOwogICAgIH0KIH0KIAotdm9pZCBHTF9B
UElFTlRSWQotU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5h
bWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVu
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQordm9pZCBHTF9BUElFTlRSWSBXZWlnaHRQ
b2ludGVyT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwb2lu
dGVyKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU0iLAotICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMc2l6ZWkgbnVtUGF0aHMgPSAl
ZCwgR0xlbnVtIHBhdGhOYW1lVHlwZSA9ICVzLCBjb25zdCB2b2lkICogcGF0aHMgPSAiCi0gICAg
ICAgICAgIjB4JTAxNiIgUFJJeFBUUgotICAgICAgICAgICIsIEdMdWludCBwYXRoQmFzZSA9ICV1
LCBHTGludCByZWZlcmVuY2UgPSAlZCwgR0x1aW50IG1hc2sgPSAldSwgR0xlbnVtIGNvdmVyTW9k
ZSA9ICVzLCAiCi0gICAgICAgICAgIkdMZW51bSB0cmFuc2Zvcm1UeXBlID0gJXMsIGNvbnN0IEdM
ZmxvYXQgKiB0cmFuc2Zvcm1WYWx1ZXMgPSAweCUwMTYiIFBSSXhQVFIgIiIsCi0gICAgICAgICAg
Q0lEKGNvbnRleHQpLCBudW1QYXRocywgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkRlZmF1
bHRHcm91cCwgcGF0aE5hbWVUeXBlKSwKLSAgICAgICAgICAodWludHB0cl90KXBhdGhzLCBwYXRo
QmFzZSwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdy
b3VwOjpEZWZhdWx0R3JvdXAsIGNvdmVyTW9kZSksCi0gICAgICAgICAgR0xlbnVtVG9TdHJpbmco
R0xlbnVtR3JvdXA6OkRlZmF1bHRHcm91cCwgdHJhbnNmb3JtVHlwZSksICh1aW50cHRyX3QpdHJh
bnNmb3JtVmFsdWVzKTsKKyAgICBFVkVOVCgiZ2xXZWlnaHRQb2ludGVyT0VTIiwKKyAgICAgICAg
ICAiY29udGV4dCA9ICVkLCBHTGludCBzaXplID0gJWQsIEdMZW51bSB0eXBlID0gJXMsIEdMc2l6
ZWkgc3RyaWRlID0gJWQsIGNvbnN0IHZvaWQgIgorICAgICAgICAgICIqcG9pbnRlciA9IDB4JTAx
NiIgUFJJeFBUUiAiIiwKKyAgICAgICAgICBDSUQoY29udGV4dCksIHNpemUsIEdMZW51bVRvU3Ry
aW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0R3JvdXAsIHR5cGUpLCBzdHJpZGUsCisgICAgICAgICAg
KHVpbnRwdHJfdClwb2ludGVyKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQYXRo
SUQgcGF0aEJhc2VQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UGF0aElE
PihwYXRoQmFzZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlz
Q2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBh
dGhCYXNlUGFja2VkLCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2ssIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3JtVmFsdWVzKSk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2Nr
ID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVdlaWdodFBv
aW50ZXJPRVMoY29udGV4dCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+c3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQobnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXRoQmFzZVBhY2tlZCwgcmVmZXJlbmNlLCBtYXNrLCBjb3Zlck1vZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zv
cm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOworICAgICAgICAgICAgY29udGV4dC0+d2VpZ2h0UG9p
bnRlcihzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSwg
aXNDYWxsVmFsaWQsIGNvbnRleHQsIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgIHBh
dGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlUGFja2VkLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVy
TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1
ZXMpOworICAgICAgICBBTkdMRV9DQVBUVVJFKFdlaWdodFBvaW50ZXJPRVMsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBzaXplLCB0eXBlLCBzdHJpZGUsIHBvaW50ZXIpOwogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQordm9pZCBHTF9BUElFTlRSWSBC
aW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCiB7
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7
Ci0gICAgRVZFTlQoImdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNIiwKLSAgICAg
ICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbXMgPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgY29uc3QgR0xjaGFyICogbmFtZSA9ICIKKyAgICBFVkVOVCgiZ2xCaW5kVW5pZm9ybUxv
Y2F0aW9uQ0hST01JVU0iLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBwcm9ncmFt
ID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIGNvbnN0IEdMY2hhciogbmFtZSA9ICIKICAgICAg
ICAgICAiMHglMDE2IiBQUkl4UFRSICIiLAotICAgICAgICAgIENJRChjb250ZXh0KSwgcHJvZ3Jh
bXMsIGxvY2F0aW9uLCAodWludHB0cl90KW5hbWUpOworICAgICAgICAgIENJRChjb250ZXh0KSwg
cHJvZ3JhbSwgbG9jYXRpb24sICh1aW50cHRyX3QpbmFtZSk7CiAKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1zUGFja2VkICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbXMpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsKKyAgICAg
ICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAg
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRG
cmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShjb250ZXh0LCBwcm9ncmFtc1BhY2tlZCwgbG9j
YXRpb24sIG5hbWUpKTsKKyAgICAgICAgICAgICBWYWxpZGF0ZUJpbmRVbmlmb3JtTG9jYXRpb25D
SFJPTUlVTShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgbmFtZSkpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmJpbmRGcmFnbWVudElucHV0TG9jYXRpb24ocHJvZ3JhbXNQYWNrZWQsIGxvY2F0aW9uLCBuYW1l
KTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsIG5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRV
UkUoQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4
dCwgcHJvZ3JhbXNQYWNrZWQsCi0gICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24sIG5hbWUp
OworICAgICAgICBBTkdMRV9DQVBUVVJFKEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSwgaXND
YWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAg
bG9jYXRpb25QYWNrZWQsIG5hbWUpOwogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCit2b2lkIEdMX0FQSUVOVFJZIENvdmVyYWdlTW9kdWxh
dGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjb21wb25l
bnRzKQogewogICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAq
PihjdHgpOwotICAgIEVWRU5UKCJnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
IiwKLSAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBs
b2NhdGlvbiA9ICVkLCBHTGVudW0gZ2VuTW9kZSA9ICVzLCBHTGludCAiCi0gICAgICAgICAgImNv
bXBvbmVudHMgPSAlZCwgY29uc3QgR0xmbG9hdCAqIGNvZWZmcyA9IDB4JTAxNiIgUFJJeFBUUiAi
IiwKLSAgICAgICAgICBDSUQoY29udGV4dCksIHByb2dyYW0sIGxvY2F0aW9uLCBHTGVudW1Ub1N0
cmluZyhHTGVudW1Hcm91cDo6RGVmYXVsdEdyb3VwLCBnZW5Nb2RlKSwKLSAgICAgICAgICBjb21w
b25lbnRzLCAodWludHB0cl90KWNvZWZmcyk7CisgICAgRVZFTlQoImdsQ292ZXJhZ2VNb2R1bGF0
aW9uQ0hST01JVU0iLCAiY29udGV4dCA9ICVkLCBHTGVudW0gY29tcG9uZW50cyA9ICVzIiwgQ0lE
KGNvbnRleHQpLAorICAgICAgICAgIEdMZW51bVRvU3RyaW5nKEdMZW51bUdyb3VwOjpEZWZhdWx0
R3JvdXAsIGNvbXBvbmVudHMpKTsKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVy
UHJvZ3JhbUlEPihwcm9ncmFtKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh
dGVQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sIGdlbk1vZGUs
IGNvbXBvbmVudHMsIGNvZWZmcykpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KKyAgICAgICAgICAgIChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oY29udGV4
dCwgY29tcG9uZW50cykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbihwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwgZ2VuTW9kZSwgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2VmZnMpOworICAgICAgICAgICAgY29udGV4
dC0+Y292ZXJhZ2VNb2R1bGF0aW9uKGNvbXBvbmVudHMpOwogICAgICAgICB9Ci0gICAgICAgIEFO
R0xFX0NBUFRVUkUoUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0sIGlzQ2FsbFZh
bGlkLCBjb250ZXh0LCBwcm9ncmFtUGFja2VkLAotICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uLCBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMpOworICAgICAgICBBTkdMRV9DQVBUVVJF
KENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgY29tcG9u
ZW50cyk7CiAgICAgfQogfQogCkBAIC0yMzk3OCwxMSArMjM1MzgsMTEgQEAgdm9pZCBHTF9BUElF
TlRSWSBDb3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKLSAgICAgICAg
VGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUYXJnZXQ+KGRlc3RUYXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFja2Vk
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAg
ICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQg
ZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
YXJnZXQ+KGRlc3RUYXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KGRlc3RJZCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlU
ZXh0dXJlQ0hST01JVU0oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQs
IHNvdXJjZUlkUGFja2VkLCBzb3VyY2VMZXZlbCwgZGVzdFRhcmdldFBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdElkUGFja2VkLCBkZXN0TGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBkZXN0VHlwZSwgdW5wYWNrRmxpcFksCkBAIC0yNDAyOSwxMSArMjM1ODksMTEgQEAg
dm9pZCBHTF9BUElFTlRSWSBDb3B5U3ViVGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVJRCBzb3Vy
Y2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJj
ZUlkKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KGRlc3RUYXJnZXQpOwotICAgICAgICBUZXh0dXJl
SUQgZGVzdElkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlE
PihkZXN0SWQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0Nh
bGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7CisgICAgICAg
IFRleHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KGRlc3RUYXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgZGVz
dElkUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJl
SUQ+KGRlc3RJZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4
PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAg
IGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlQ0hST01JVU0oCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQsIHNvdXJjZUlkUGFja2VkLCBzb3VyY2VMZXZlbCwgZGVzdFRhcmdl
dFBhY2tlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdElkUGFja2VkLCBk
ZXN0TGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsCkBAIC0yNDA2
MSw5ICsyMzYyMSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hS
T01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVJRD4oc291cmNlSWQpOwotICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFj
a2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3Vy
Y2VJZCk7CisgICAgICAgIFRleHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
Q29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oY29udGV4dCwgc291cmNlSWRQYWNrZWQsIGRl
c3RJZFBhY2tlZCkpOwpAQCAtMjQwODUsNyArMjM2NDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJl
cXVlc3RFeHRlbnNpb25BTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBjb25zdCBH
TGNoYQogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVJl
cXVlc3RFeHRlbnNpb25BTkdMRShjb250ZXh0LCBuYW1lKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKQEAgLTI0MTA1LDcgKzIzNjY1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlRXh0
ZW5zaW9uQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgY29uc3QgR0xjaGEKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVEaXNhYmxlRXh0
ZW5zaW9uQU5HTEUoY29udGV4dCwgbmFtZSkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yNDEzMiw3ICsyMzY5Miw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbnZSb2J1c3RB
TkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0Qm9vbGVhbnZSb2J1
c3RBTkdMRShjb250ZXh0LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI0
MTYyLDkgKzIzNzIyLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxCdWZmZXJCaW5kaW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGlu
ZyB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVy
QmluZGluZz4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRShjb250ZXh0LCB0
YXJnZXRQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNDE5Miw4ICsyMzc1Miw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0RmxvYXR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6
Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0g
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZsb2F0dlJvYnVzdEFOR0xFKGNvbnRleHQsIHBu
YW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQp
CiAgICAgICAgIHsKQEAgLTI0MjIzLDggKzIzNzgzLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdM
ZWcKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWYWxpZGF0ZUdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
Um9idXN0QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0MjUzLDggKzIzODEzLDggQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRJbnRlZ2VydlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgs
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpH
bG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsaWRhdGVHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKGNvbnRleHQsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIGRhdGEpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQogICAg
ICAgICB7CkBAIC0yNDI4MSw5ICsyMzg0MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3Jh
bWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBTaGFk
ZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtaXZSb2J1c3RBTkdMRShjb250ZXh0
LCBwcm9ncmFtUGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0MzEzLDcgKzIzODczLDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBW
YWxpZGF0ZUdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgdGFyZ2V0LCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI0MzQzLDggKzIzOTAzLDggQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNoYWRlclByb2dyYW1JRCBz
aGFkZXJQYWNrZWQgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHNo
YWRlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFt
SUQgc2hhZGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQ
cm9ncmFtSUQ+KHNoYWRlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFNoYWRlcml2Um9idXN0QU5HTEUo
Y29udGV4dCwgc2hhZGVyUGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsK
QEAgLTI0Mzc1LDkgKzIzOTM1LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJm
dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVUeXBl
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdl
dFBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAg
ICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0NDA3LDkgKzIzOTY3LDkgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBh
Y2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJpdlJvYnVz
dEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxl
bmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI0NDM3LDE2ICsy
Mzk5NywxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNo
YWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFk
ZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAg
ICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZUdldFVuaWZvcm1mdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0
aW9uLAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBV
bmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUoY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmdldFVuaWZvcm1mdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9y
bWZ2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgs
IHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlmb3JtZnZS
b2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9u
LAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1mdlJvYnVzdEFOR0xFLCBpc0NhbGxW
YWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTI0NDY3
LDE2ICsyNDAyOCwxNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFVuaWZvcm1pdlJvYnVzdEFOR0xF
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAg
ICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZyb21H
TDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWxpZGF0ZUdldFVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IGxvY2F0aW9uLAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAg
ICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybWl2Um9idXN0QU5H
TEUoY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldFVuaWZvcm1pdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0
VW5pZm9ybWl2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBs
ZW5ndGgsIHBhcmFtcyk7CiAgICAgICAgIH0KLSAgICAgICAgQU5HTEVfQ0FQVFVSRShHZXRVbmlm
b3JtaXZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxv
Y2F0aW9uLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldFVuaWZvcm1pdlJvYnVzdEFOR0xFLCBp
c0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgIH0KIH0KQEAg
LTI0NDk4LDcgKzI0MDYwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRWZXJ0ZXhB
dHRyaWJmdlJvYnVzdEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpKTsKQEAgLTI0NTI4LDcgKzI0MDkwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRW
ZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFs
aWRhdGVHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIGluZGV4LCBwbmFtZSwg
YnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKQEAgLTI0NTU4LDcgKzI0MTIwLDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwgVmFsaWRhdGVHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGluZGV4LCBwbmFt
ZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwb2ludGVyKSk7CkBAIC0yNDU5OCw3ICsyNDE2MCw3IEBAIHZv
aWQgR0xfQVBJRU5UUlkgUmVhZFBpeGVsc1JvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4
dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250
ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2Fs
bFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoY29udGV4dCwgeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLApAQCAtMjQ2MzcsOCArMjQxOTksOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleEltYWdlMkRSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0
IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4o
dGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJn
ZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1
cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkRSb2J1c3RBTkdMRShj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsCkBAIC0y
NDY2OSw4ICsyNDIzMSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4UGFyYW1ldGVyZnZSb2J1c3RB
TkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBidWZTaXpl
LCBwYXJhbXMpKTsKQEAgLTI0Njk5LDggKzI0MjYxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAg
ICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tl
ZCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtcykpOwpAQCAtMjQ3MzcsOCArMjQyOTksOCBAQCB2b2lk
IEdMX0FQSUVOVFJZIFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFy
Z2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQg
dGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVU
YXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlMkRSb2J1c3RBTkdMRShj
b250ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAg
LTI0Nzc4LDggKzI0MzQwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTNEUm9idXN0QU5H
TEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAg
ICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAg
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhJ
bWFnZTNEUm9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLApAQCAtMjQ4MjEsOSArMjQzODMsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRl
eFN1YkltYWdlM0RSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVRleFN1YkltYWdlM0RSb2J1c3RBTkdMRShjb250
ZXh0LCB0YXJnZXRQYWNrZWQsIGxldmVsLCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvZmZzZXQsIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgcGl4ZWxz
KSk7CkBAIC0yNDg2MCw4ICsyNDQyMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZFRl
eEltYWdlMkRSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlm
IChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRM
b2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFs
aWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVD
b21wcmVzc2VkVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwKQEAgLTI0OTAwLDggKzI0NDYyLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBUZXh0dXJlVGFyZ2V0IHRh
cmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8IFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCB0YXJnZXRQ
YWNrZWQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwKQEAgLTI0OTQwLDggKzI0NTAy
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2VkVGV4SW1hZ2UzRFJvYnVzdEFOR0xFQ29u
dGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAg
IFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxU
ZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEUm9i
dXN0QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLApAQCAt
MjQ5ODMsOSArMjQ1NDUsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEUm9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okds
b2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEUoCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YVNpemUs
IGRhdGEpKTsKQEAgLTI1MDE5LDggKzI0NTgxLDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVy
eWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUXVlcnlUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIFF1ZXJ5VHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5VHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAg
ICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRl
R2V0UXVlcnlpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNTA1MCw4ICsyNDYxMiw4IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UXVlcnlPYmplY3R1aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQg
PT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBRdWVyeUlEIGlkUGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UXVlcnlJRD4oaWQpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0K
ICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0UXVl
cnlPYmplY3R1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKSk7CkBAIC0yNTA4Miw5ICsyNDY0NCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0QnVm
ZmVyUG9pbnRlcnZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBCdWZmZXJCaW5kaW5nIHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAg
IEJ1ZmZlckJpbmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPEJ1ZmZlckJpbmRpbmc+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBw
YXJhbXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjUxMTMsNyArMjQ2NzUsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKGNvbnRleHQs
IHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSkpOwpAQCAtMjUxNDcsOCArMjQ3
MDksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0SW50ZXJu
YWxmb3JtYXRpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChp
c0NhbGxWYWxpZCkKQEAgLTI1MTc4LDcgKzI0NzQwLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRW
ZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBH
ZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAg
ICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZh
bGlkYXRlR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoY29udGV4dCwgaW5kZXgsIHBuYW1l
LCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjUyMDgsNyArMjQ3NzAsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fCBWYWxpZGF0ZUdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBpbmRleCwgcG5hbWUsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNTIzNywxNiArMjQ3OTksMTcgQEAgdm9pZCBH
TF9BUElFTlRSWSBHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHBy
b2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJv
Z3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVp
dlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAgICAgICBT
aGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24g
bG9jYXRpb25QYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9j
YXRpb24+KGxvY2F0aW9uKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFs
TXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZhbGlkYXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uUGFja2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
Z2V0VW5pZm9ybXVpdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVu
Z3RoLCBwYXJhbXMpOworICAgICAgICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybXVpdlJvYnVzdChw
cm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwog
ICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xF
LCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTI1MjcxLDggKzI0ODM0
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xF
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAg
ICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJvZ3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAg
ICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVH
ZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQs
IHVuaWZvcm1CbG9ja0luZGV4LApAQCAtMjUzMDMsNyArMjQ4NjYsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEludGVnZXI2NHZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
IFZhbGlkYXRlR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFKGNvbnRleHQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIGRhdGEpKTsKQEAgLTI1MzMyLDcgKzI0ODk1LDcgQEAgdm9pZCBHTF9BUElFTlRS
WSBHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
IFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0LCBpbmRl
eCwgYnVmU2l6ZSwgbGVuZ3RoLCBkYXRhKSk7CkBAIC0yNTM2Myw5ICsyNDkyNiw5IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0QnVmZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEJ1ZmZlckJp
bmRpbmcgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxCdWZmZXJCaW5k
aW5nPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgQnVmZmVyQmluZGluZyB0YXJnZXRQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8QnVmZmVyQmluZGluZz4odGFyZ2V0KTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0QnVm
ZmVyUGFyYW1ldGVyaTY0dlJvYnVzdEFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgcG5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMjUzOTIsOCArMjQ5NTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBs
ZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAg
ICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBsZXIpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAg
ICAgIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxl
clBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKSk7CkBAIC0yNTQyMiw4ICsyNDk4NSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEVDb250ZXh0QU5H
TEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxl
cklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJ
RD4oc2FtcGxlcik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTYW1wbGVy
SUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxT
YW1wbGVySUQ+KHNhbXBsZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9i
YWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwog
ICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyZnZSb2J1
c3RBTkdMRShjb250ZXh0LCBzYW1wbGVyUGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgcGFyYW0pKTsK
QEAgLTI1NDUzLDkgKzI1MDE2LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTYW1wbGVyUGFyYW1l
dGVyaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJ
RCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNh
bXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2Jh
bE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Cisg
ICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKGNvbnRleHQs
IHNhbXBsZXJQYWNrZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpKTsKICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU0ODQsOSArMjUwNDcsOSBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBs
ZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVy
SUQ+KHNhbXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBp
c0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxl
clBhcmFtZXRlcmZ2Um9idXN0QU5HTEUoY29udGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxs
VmFsaWQpCkBAIC0yNTUxNiw3ICsyNTA3OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjCiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
c2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAg
ICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlR2V0RnJhbWVi
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0
aCwgcGFyYW1zKSk7CkBAIC0yNTU0OSw4ICsyNTExMiw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1Q
YWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRl
eD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAg
ICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RB
TkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBwcm9ncmFtSW50ZXJmYWNlLApAQCAtMjU1ODIs
NyArMjUxNDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xv
YmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
ICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0Qm9vbGVhbmlfdlJvYnVzdEFO
R0xFKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSkpOwpAQCAt
MjU2MTIsNyArMjUxNzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldE11bHRpc2FtcGxlZnZSb2J1
c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0TXVsdGlzYW1w
bGVmdlJvYnVzdEFOR0xFKGNvbnRleHQsIHBuYW1lLCBpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCB2
YWwpKTsKQEAgLTI1NjQ0LDkgKzI1MjA3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhMZXZl
bFBhcmFtZXRlcml2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAg
ICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2Nr
KGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBp
ZiAoaXNDYWxsVmFsaWQpCkBAIC0yNTY3OCw5ICsyNTI0MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFyZ2V0Pih0YXJnZXQp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgVGV4dHVyZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LCB0YXJnZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsK
ICAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQpAQCAtMjU3MDksNyArMjUyNzIsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNo
YXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9v
bCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xF
KGNvbnRleHQsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwpAQCAtMjU3NDksNyAr
MjUzMTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlYWRuUGl4ZWxzUm9idXN0QU5HTEVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAg
ICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoY29u
dGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLApAQCAtMjU3
ODAsMTYgKzI1MzQzLDE3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdlJvYnVzdEFO
R0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0g
ICAgICAgIFNoYWRlclByb2dyYW1JRCBwcm9ncmFtUGFja2VkICAgICAgICAgICAgICAgICA9IEZy
b21HTDxTaGFkZXJQcm9ncmFtSUQ+KHByb2dyYW0pOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKLSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFj
a2VkLCBsb2NhdGlvbiwKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9ncmFtKTsK
KyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZT
aXplLCBsZW5ndGgsIHBhcmFtcykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldG5Vbmlmb3JtZnZSb2J1c3QocHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmdldG5Vbmlmb3JtZnZSb2J1c3QocHJvZ3JhbVBhY2tlZCwgbG9jYXRpb25QYWNrZWQsIGJ1
ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAgICAgICAgfQotICAgICAgICBBTkdMRV9DQVBUVVJF
KEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1Q
YWNrZWQsIGxvY2F0aW9uLAorICAgICAgICBBTkdMRV9DQVBUVVJFKEdldG5Vbmlmb3JtZnZSb2J1
c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKICAg
ICB9CiB9CkBAIC0yNTgxMCwxNiArMjUzNzQsMTcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAo
Y29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNrZWQgICAgICAg
ICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3JhbSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3Jv
dXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRl
eHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAorICAgICAgICBTaGFkZXJQcm9ncmFtSUQgcHJv
Z3JhbVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTaGFkZXJQcm9ncmFt
SUQ+KHByb2dyYW0pOworICAgICAgICBVbmlmb3JtTG9jYXRpb24gbG9jYXRpb25QYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxVbmlmb3JtTG9jYXRpb24+KGxvY2F0aW9uKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFKGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFj
a2VkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxW
YWxpZCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdlJvYnVz
dChwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOworICAg
ICAgICAgICAgY29udGV4dC0+Z2V0blVuaWZvcm1pdlJvYnVzdChwcm9ncmFtUGFja2VkLCBsb2Nh
dGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgICAgICB9Ci0gICAgICAg
IEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm1pdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwgbG9jYXRpb24sCisgICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0
blVuaWZvcm1pdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29udGV4dCwgcHJvZ3JhbVBhY2tl
ZCwgbG9jYXRpb25QYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6ZSwgbGVuZ3Ro
LCBwYXJhbXMpOwogICAgIH0KIH0KQEAgLTI1ODQwLDE3ICsyNTQwNSwxOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dy
YW1QYWNrZWQgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNoYWRlclByb2dyYW1JRD4ocHJvZ3Jh
bSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0blVuaWZvcm11aXZS
b2J1c3RBTkdMRShjb250ZXh0LCBwcm9ncmFtUGFja2VkLCBsb2NhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmU2l6
ZSwgbGVuZ3RoLCBwYXJhbXMpKTsKKyAgICAgICAgU2hhZGVyUHJvZ3JhbUlEIHByb2dyYW1QYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8U2hhZGVyUHJvZ3JhbUlEPihwcm9n
cmFtKTsKKyAgICAgICAgVW5pZm9ybUxvY2F0aW9uIGxvY2F0aW9uUGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VW5pZm9ybUxvY2F0aW9uPihsb2NhdGlvbik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0g
R2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUdldG5Vbmlmb3Jt
dWl2Um9idXN0QU5HTEUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQs
IHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uUGFja2VkLCBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykp
OwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmdldG5Vbmlmb3JtdWl2Um9idXN0KHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLCBidWZTaXpl
LCBsZW5ndGgsIHBhcmFtcyk7CisgICAgICAgICAgICBjb250ZXh0LT5nZXRuVW5pZm9ybXVpdlJv
YnVzdChwcm9ncmFtUGFja2VkLCBsb2NhdGlvblBhY2tlZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJh
bXMpOwogICAgICAgICB9Ci0gICAgICAgIEFOR0xFX0NBUFRVUkUoR2V0blVuaWZvcm11aXZSb2J1
c3RBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHByb2dyYW1QYWNrZWQsIGxvY2F0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKKyAgICAgICAg
QU5HTEVfQ0FQVFVSRShHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFLCBpc0NhbGxWYWxpZCwgY29u
dGV4dCwgcHJvZ3JhbVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvblBhY2tl
ZCwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMjU4NzAsOCArMjU0
MzYsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcklpdlJvYnVzdEFOR0xFQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0
dXJlVHlwZT4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRl
eHR1cmVUeXBlIHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVUZXhQYXJhbWV0ZXJJaXZS
b2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbXMp
KTsKQEAgLTI1OTAwLDggKzI1NDY2LDggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJJ
dWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAg
ICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxp
ZGF0ZVRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHBu
YW1lLCBidWZTaXplLCBwYXJhbXMpKTsKQEAgLTI1OTMyLDkgKzI1NDk4LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVHlwZSB0YXJn
ZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdl
dCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9j
ayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAorICAgICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFy
ZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4UGFyYW1ldGVySWl2
Um9idXN0QU5HTEUoY29udGV4dCwgdGFyZ2V0UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNp
emUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1OTY0
LDkgKzI1NTMwLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsK
LSAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0
ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsK
LSAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
KGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgVGV4dHVyZVR5cGUgdGFyZ2V0
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVR5cGU+
KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNr
ZWQsIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAgICAgICAg
IGlmIChpc0NhbGxWYWxpZCkKQEAgLTI1OTk0LDggKzI1NTYwLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdl
dFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNhbXBs
ZXIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVD
b250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwogICAgICAgICBib29sIGlz
Q2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAg
ICAgICAgICAgICAgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUoY29udGV4
dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIHBhcmFtKSk7CkBAIC0yNjAyNCw4ICsy
NTU5MCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11
dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAg
ICAgIFNhbXBsZXJJRCBzYW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFNhbXBsZXJJRD4oc2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQsIHNhbXBsZXJQYWNrZWQsIHBuYW1lLCBidWZTaXplLCBwYXJhbSkpOwpAQCAtMjYwNTUs
OSArMjU2MjEsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1
c3RBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkp
OwotICAgICAgICBTYW1wbGVySUQgc2FtcGxlclBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
PSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFNhbXBsZXJJRCBzYW1wbGVy
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFNhbXBsZXJJRD4o
c2FtcGxlcik7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRShjb250ZXh0LCBzYW1wbGVy
UGFja2VkLCBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZTaXplLCBsZW5ndGgsIHBhcmFtcykpOwog
ICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjA4Niw5ICsyNTY1Miw5IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0U2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFNhbXBsZXJJRCBz
YW1wbGVyUGFja2VkICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTYW1wbGVySUQ+KHNh
bXBsZXIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4
dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAgICAgICAgYm9vbCBpc0NhbGxW
YWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgfHwKKyAgICAgICAgU2FtcGxlcklEIHNhbXBsZXJQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8U2FtcGxlcklEPihzYW1wbGVyKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0U2FtcGxlclBhcmFt
ZXRlckl1aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCwgc2FtcGxlclBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI2MTE3LDggKzI1NjgzLDggQEAgdm9pZCBHTF9B
UElFTlRSWSBHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0
ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sg
PSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9
CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1
ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
cGFyYW1zKSk7CkBAIC0yNjE0OCw4ICsyNTcxNCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVl
cnlPYmplY3RpNjR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAg
ICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2so
Y29udGV4dCk7CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0
dlJvYnVzdEFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQsIGlkUGFja2VkLCBwbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBwYXJhbXMpKTsK
QEAgLTI2MTc5LDggKzI1NzQ1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVp
NjR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpKTsKLSAgICAgICAgUXVlcnlJRCBpZFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxz
dGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7
CisgICAgICAgIFF1ZXJ5SUQgaWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPFF1ZXJ5SUQ+KGlkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxh
bmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RB
TkdMRSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LCBpZFBhY2tlZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKSk7CkBAIC0yNjIx
OSwxMSArMjU3ODUsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDb3B5VGV4dHVyZTNEQU5HTEVDb250
ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
VGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVJRD4oc291cmNlSWQpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IGRlc3RUYXJnZXRQYWNr
ZWQgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7Ci0g
ICAgICAgIFRleHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICA9IEZy
b21HTDxUZXh0dXJlSUQ+KGRlc3RJZCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAg
ICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAorICAgICAgICBUZXh0dXJlSUQgc291cmNlSWRQYWNr
ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJj
ZUlkKTsKKyAgICAgICAgVGV4dHVyZVRhcmdldCBkZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAg
ICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4oZGVzdFRhcmdldCk7CisgICAgICAg
IFRleHR1cmVJRCBkZXN0SWRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
RnJvbUdMPFRleHR1cmVJRD4oZGVzdElkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlQ29weVRleHR1cmUzREFOR0xFKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBzb3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWws
IGRlc3RUYXJnZXRQYWNrZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RJ
ZFBhY2tlZCwgZGVzdExldmVsLCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUsIHVucGFja0ZsaXBZ
LApAQCAtMjYyNzQsMTAgKzI1ODQwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1YlRleHR1
cmUzREFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KSk7Ci0gICAgICAgIFRleHR1cmVJRCBzb3VyY2VJZFBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlSUQ+KHNvdXJjZUlkKTsKLSAgICAgICAgVGV4dHVyZVRhcmdldCBk
ZXN0VGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KGRl
c3RUYXJnZXQpOwotICAgICAgICBUZXh0dXJlSUQgZGVzdElkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihkZXN0SWQpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgVGV4dHVyZUlEIHNvdXJjZUlkUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZUlEPihzb3VyY2VJZCk7CisgICAgICAgIFRl
eHR1cmVUYXJnZXQgZGVzdFRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFRleHR1cmVUYXJnZXQ+KGRlc3RUYXJnZXQpOworICAgICAgICBUZXh0dXJlSUQgZGVzdElk
UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlSUQ+
KGRlc3RJZCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBz
aGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJv
b2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
fHwKICAgICAgICAgICAgICBWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlM0RBTkdMRShjb250ZXh0LCBz
b3VyY2VJZFBhY2tlZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXRQYWNrZWQsCkBAIC0yNjMxNyw4
ICsyNTg4Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTJETXVsdGlzYW1wbGVBTkdM
RUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAg
ICAgICBUZXh0dXJlVHlwZSB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxUZXh0dXJlVHlwZT4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9j
ayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlVGV4U3RvcmFn
ZTJETXVsdGlzYW1wbGVBTkdMRShjb250ZXh0LCB0YXJnZXRQYWNrZWQsIHNhbXBsZXMsIGludGVy
bmFsZm9ybWF0LApAQCAtMjYzNDksOCArMjU5MTUsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRl
eExldmVsUGFyYW1ldGVyaXZBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXZBTkdMRShjb250ZXh0LCB0YXJn
ZXRQYWNrZWQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSk7CkBAIC0yNjM3OSw4ICsyNTk0NSw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdkFOR0xFQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NF
UlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFRleHR1cmVU
YXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxUZXh0dXJlVGFy
Z2V0Pih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJl
Q29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgVGV4dHVy
ZVRhcmdldCB0YXJnZXRQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8
VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6
R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0
KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0
ZXJmdkFOR0xFKGNvbnRleHQsIHRhcmdldFBhY2tlZCwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpKTsK
QEAgLTI2NDA5LDggKzI1OTc1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdBcnJheXNB
TkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAg
IHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwot
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwor
ICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAgICAo
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlE
cmF3QXJyYXlzQU5HTEUoY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3RzLCBjb3VudHMsIGRyYXdj
b3VudCkpOwpAQCAtMjY0NDEsOSArMjYwMDcsOSBAQCB2b2lkIEdMX0FQSUVOVFJZIE11bHRpRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91
cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIFBy
aW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xl
OjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRl
eHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsaWRhdGVNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbW9kZVBhY2tlZCwgZmlyc3Rz
LCBjb3VudHMsIGluc3RhbmNlQ291bnRzLCBkcmF3Y291bnQpKTsKICAgICAgICAgaWYgKGlzQ2Fs
bFZhbGlkKQpAQCAtMjY0NzQsMTAgKzI2MDQwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlE
cmF3RWxlbWVudHNBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAg
ICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVt
ZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVu
dHNUeXBlPih0eXBlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wg
aXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpIHx8CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAg
ICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTXVsdGlEcmF3RWxlbWVudHNBTkdMRShj
b250ZXh0LCBtb2RlUGFja2VkLCBjb3VudHMsIHR5cGVQYWNrZWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGRyYXdj
b3VudCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjUwOSw5ICsyNjA3NSw5IEBA
IHZvaWQgR0xfQVBJRU5UUlkgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBQcmlt
aXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0
aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIERyYXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwor
ICAgICAgICBEcmF3RWxlbWVudHNUeXBlIHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEZyb21HTDxEcmF3RWxlbWVudHNUeXBlPih0eXBlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlkYXRlTXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb250ZXh0LCBtb2RlUGFja2VkLCBjb3VudHMs
IHR5cGVQYWNrZWQsCkBAIC0yNjU0Myw5ICsyNjEwOSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJh
d0FycmF5c0luc3RhbmNlZEJhc2VJbnN0YW5jZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tl
ZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0
U2hhcmVHcm91cExvY2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8Cisg
ICAgICAgIFByaW1pdGl2ZU1vZGUgbW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBM
b2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUlu
c3RhbmNlQU5HTEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIG1v
ZGVQYWNrZWQsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCwgYmFzZUluc3RhbmNlKSk7CiAg
ICAgICAgIGlmIChpc0NhbGxWYWxpZCkKQEAgLTI2NTgwLDkgKzI2MTQ2LDkgQEAgRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQmFzZVZlcnRleEJhc2VJbnN0YW5jZUFOR0xFQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIFByaW1pdGl2ZU1vZGUg
bW9kZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPiht
b2RlKTsKLSAgICAgICAgRHJhd0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAg
ICAgID0gRnJvbUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhj
b250ZXh0KTsKKyAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7CisgICAgICAgIERy
YXdFbGVtZW50c1R5cGUgdHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJv
bUdMPERyYXdFbGVtZW50c1R5cGU+KHR5cGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleEJhc2VJbnN0YW5jZUFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQsIG1vZGVQYWNrZWQsIGNvdW50LCB0eXBlUGFja2VkLCBpbmRp
Y2VzLApAQCAtMjY2MTksOCArMjYxODUsOCBAQCBNdWx0aURyYXdBcnJheXNJbnN0YW5jZWRCYXNl
SW5zdGFuY2VBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCkpOwotICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8UHJpbWl0aXZlTW9kZT4obW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOworICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRT
aGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAg
ICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAgIFZhbGlk
YXRlTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlQU5HTEUoCkBAIC0yNjY2MCwx
MCArMjYyMjYsMTAgQEAgTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVydGV4QmFzZUlu
c3RhbmNlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGMKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
KTsKLSAgICAgICAgUHJpbWl0aXZlTW9kZSBtb2RlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ID0gRnJvbUdMPFByaW1pdGl2ZU1vZGU+KG1vZGUpOwotICAgICAgICBEcmF3RWxlbWVudHNUeXBl
IHR5cGVQYWNrZWQgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8RHJhd0VsZW1lbnRzVHlwZT4o
dHlwZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0
TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOwotICAgICAgICBib29sIGlzQ2FsbFZh
bGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSB8fAorICAgICAgICBQcmltaXRpdmVNb2RlIG1vZGVQYWNrZWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IEZyb21HTDxQcmltaXRpdmVNb2RlPihtb2RlKTsKKyAgICAgICAgRHJh
d0VsZW1lbnRzVHlwZSB0eXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9t
R0w8RHJhd0VsZW1lbnRzVHlwZT4odHlwZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWYWxpZGF0ZU11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZl
cnRleEJhc2VJbnN0YW5jZUFOR0xFKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LCBtb2RlUGFja2VkLCBjb3VudHMsIHR5cGVQYWNrZWQsIGluZGljZXMsIGluc3RhbmNl
Q291bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVmVydGljZXMsIGJh
c2VJbnN0YW5jZXMsIGRyYXdjb3VudCkpOwpAQCAtMjY2OTIsOCArMjYyNTgsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldE11bHRpc2FtcGxlZnZBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6
bXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKLSAg
ICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKGNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKKyAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmds
ZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250
ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdkFOR0xFKGNvbnRleHQsIHBu
YW1lLCBpbmRleCwgdmFsKSk7CiAgICAgICAgIGlmIChpc0NhbGxWYWxpZCkKICAgICAgICAgewpA
QCAtMjY3MTIsNyArMjYyNzgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZU1hc2tpQU5HTEVD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IG1hc2tOdW1iZQogICAgIGlmIChj
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IHNoYXJlQ29u
dGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdy
b3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCA9CiAgICAgICAgICAg
ICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVNhbXBsZU1hc2tpQU5HTEUo
Y29udGV4dCwgbWFza051bWJlciwgbWFzaykpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBA
IC0yNjczMiw4ICsyNjI5OCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvdm9raW5nVmVydGV4QU5H
TEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIG1vZGUpCiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKSk7Ci0gICAgICAgIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24gbW9kZVBhY2tlZCAg
ICAgICAgICA9IEZyb21HTDxQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uPihtb2RlKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hh
cmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFByb3Zva2luZ1ZlcnRleENvbnZlbnRpb24g
bW9kZVBhY2tlZCA9IEZyb21HTDxQcm92b2tpbmdWZXJ0ZXhDb252ZW50aW9uPihtb2RlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExv
Y2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKICAgICAgICAgYm9vbCBpc0NhbGxWYWxp
ZCA9CiAgICAgICAgICAgICAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fCBWYWxpZGF0ZVBy
b3Zva2luZ1ZlcnRleEFOR0xFKGNvbnRleHQsIG1vZGVQYWNrZWQpKTsKICAgICAgICAgaWYgKGlz
Q2FsbFZhbGlkKQpAQCAtMjY3NTQsMTAgKzI2MzIwLDEwIEBAIHZvaWQgR0xfQVBJRU5UUlkgTG9z
ZUNvbnRleHRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gY3Vy
cmVuCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7Ci0gICAgICAgIEdyYXBoaWNzUmVzZXRTdGF0dXMgY3Vy
cmVudFBhY2tlZCAgICAgICAgICAgICA9IEZyb21HTDxHcmFwaGljc1Jlc2V0U3RhdHVzPihjdXJy
ZW50KTsKLSAgICAgICAgR3JhcGhpY3NSZXNldFN0YXR1cyBvdGhlclBhY2tlZCAgICAgICAgICAg
ICAgID0gRnJvbUdMPEdyYXBoaWNzUmVzZXRTdGF0dXM+KG90aGVyKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExv
Y2soY29udGV4dCk7Ci0gICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8CisgICAgICAgIEdyYXBo
aWNzUmVzZXRTdGF0dXMgY3VycmVudFBhY2tlZCA9IEZyb21HTDxHcmFwaGljc1Jlc2V0U3RhdHVz
PihjdXJyZW50KTsKKyAgICAgICAgR3JhcGhpY3NSZXNldFN0YXR1cyBvdGhlclBhY2tlZCAgID0g
RnJvbUdMPEdyYXBoaWNzUmVzZXRTdGF0dXM+KG90aGVyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3Vw
TG9jayhjb250ZXh0KTsKKyAgICAgICAgYm9vbCBpc0NhbGxWYWxpZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAoY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRlTG9zZUNvbnRleHRDSFJPTUlVTShjb250
ZXh0LCBjdXJyZW50UGFja2VkLCBvdGhlclBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFs
aWQpCiAgICAgICAgIHsKQEAgLTI2Nzg5LDggKzI2MzU1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBU
ZXhJbWFnZTJERXh0ZXJuYWxBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJlVGFyZ2V0IHRhcmdldFBhY2tlZCAgICAg
ICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRhcmdldD4odGFyZ2V0KTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRl
eHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxs
VmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwKICAgICAg
ICAgICAgICBWYWxpZGF0ZVRleEltYWdlMkRFeHRlcm5hbEFOR0xFKGNvbnRleHQsIHRhcmdldFBh
Y2tlZCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKQEAgLTI2ODE0LDggKzI2MzgwLDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBJbnZhbGlkYXRlVGV4dHVyZUFOR0xFQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXIKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpKTsKLSAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdMPFRl
eHR1cmVUeXBlPih0YXJnZXQpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IHNoYXJlQ29udGV4dExvY2sgPSBHZXRTaGFyZUdyb3VwTG9jayhjb250ZXh0KTsKKyAgICAgICAg
VGV4dHVyZVR5cGUgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBG
cm9tR0w8VGV4dHVyZVR5cGU+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5n
bGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29u
dGV4dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbnZhbGlkYXRlVGV4dHVyZUFOR0xFKGNvbnRl
eHQsIHRhcmdldFBhY2tlZCkpOwogICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCkBAIC0yNjg0NCw4
ICsyNjQxMCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4SW1hZ2VBTkdMRUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQgPT0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkpOwotICAgICAgICBUZXh0dXJl
VGFyZ2V0IHRhcmdldFBhY2tlZCAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8VGV4dHVyZVRh
cmdldD4odGFyZ2V0KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBzaGFy
ZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4dCk7CisgICAgICAgIFRleHR1
cmVUYXJnZXQgdGFyZ2V0UGFja2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRnJvbUdM
PFRleHR1cmVUYXJnZXQ+KHRhcmdldCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8YW5nbGU6
Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVHcm91cExvY2soY29udGV4
dCk7CiAgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQogICAgICAgICAgICAgKGNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgfHwKICAgICAgICAgICAgICBWYWxpZGF0ZUdldFRleEltYWdlQU5HTEUo
Y29udGV4dCwgdGFyZ2V0UGFja2VkLCBsZXZlbCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKQEAg
LTI2ODc1LDcgKzI2NDQxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRSZW5kZXJidWZmZXJJbWFn
ZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoY29udGV4dCA9PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gc2hhcmVDb250ZXh0TG9jayA9
IEdldFNoYXJlR3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPGFu
Z2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJlR3JvdXBMb2NrKGNv
bnRleHQpOwogICAgICAgICBib29sIGlzQ2FsbFZhbGlkID0KICAgICAgICAgICAgIChjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpIHx8CiAgICAgICAgICAgICAgVmFsaWRhdGVHZXRSZW5kZXJidWZm
ZXJJbWFnZUFOR0xFKGNvbnRleHQsIHRhcmdldCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKQEAg
LTI2ODg3LDQgKzI2NDUzLDY0IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVySW1h
Z2VBTkdMRUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAgICAg
ICAgIHBpeGVscyk7CiAgICAgfQogfQorCit2b2lkIEdMX0FQSUVOVFJZIEltcG9ydE1lbW9yeVpp
cmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBt
ZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
aGFuZGxlKQoreworICAgIENvbnRleHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4
dCAqPihjdHgpOworICAgIEVWRU5UKCJnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFIiwK
KyAgICAgICAgICAiY29udGV4dCA9ICVkLCBHTHVpbnQgbWVtb3J5ID0gJXUsIEdMdWludDY0IHNp
emUgPSAlbGx1LCBHTGVudW0gaGFuZGxlVHlwZSA9ICVzLCBHTHVpbnQgIgorICAgICAgICAgICJo
YW5kbGUgPSAldSIsCisgICAgICAgICAgQ0lEKGNvbnRleHQpLCBtZW1vcnksIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2l6ZSksCisgICAgICAgICAgR0xlbnVtVG9TdHJpbmcoR0xl
bnVtR3JvdXA6OkV4dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksIGhhbmRsZSk7CisKKyAg
ICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0ID09IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpKTsKKyAgICAgICAgTWVtb3J5T2JqZWN0SUQgbWVtb3J5UGFja2VkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBGcm9tR0w8TWVtb3J5T2JqZWN0SUQ+KG1lbW9yeSk7
CisgICAgICAgIEhhbmRsZVR5cGUgaGFuZGxlVHlwZVBhY2tlZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gRnJvbUdMPEhhbmRsZVR5cGU+KGhhbmRsZVR5cGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxNdXRleD4gc2hhcmVDb250ZXh0TG9jayA9IEdldFNoYXJl
R3JvdXBMb2NrKGNvbnRleHQpOworICAgICAgICBib29sIGlzQ2FsbFZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IChjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVJbXBvcnRNZW1vcnlaaXJjb25I
YW5kbGVBTkdMRShjb250ZXh0LCBtZW1vcnlQYWNrZWQsIHNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVU
eXBlUGFja2VkLCBoYW5kbGUpKTsKKyAgICAgICAgaWYgKGlzQ2FsbFZhbGlkKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250ZXh0LT5pbXBvcnRNZW1vcnlaaXJjb25IYW5kbGUobWVtb3J5UGFj
a2VkLCBzaXplLCBoYW5kbGVUeXBlUGFja2VkLCBoYW5kbGUpOworICAgICAgICB9CisgICAgICAg
IEFOR0xFX0NBUFRVUkUoSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUsIGlzQ2FsbFZhbGlk
LCBjb250ZXh0LCBtZW1vcnlQYWNrZWQsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlVHlwZVBhY2tlZCwgaGFuZGxlKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgSW1w
b3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBoYW5kbGUpCit7CisgICAgQ29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGds
OjpDb250ZXh0ICo+KGN0eCk7CisgICAgRVZFTlQoImdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFu
ZGxlQU5HTEUiLAorICAgICAgICAgICJjb250ZXh0ID0gJWQsIEdMdWludCBzZW1hcGhvcmUgPSAl
dSwgR0xlbnVtIGhhbmRsZVR5cGUgPSAlcywgR0x1aW50IGhhbmRsZSA9ICV1IiwKKyAgICAgICAg
ICBDSUQoY29udGV4dCksIHNlbWFwaG9yZSwgR0xlbnVtVG9TdHJpbmcoR0xlbnVtR3JvdXA6OkV4
dGVybmFsSGFuZGxlVHlwZSwgaGFuZGxlVHlwZSksCisgICAgICAgICAgaGFuZGxlKTsKKworICAg
IGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNvbnRleHQgPT0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCkpOworICAgICAgICBTZW1hcGhvcmVJRCBzZW1hcGhvcmVQYWNrZWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IEZyb21HTDxTZW1hcGhvcmVJRD4oc2VtYXBob3JlKTsK
KyAgICAgICAgSGFuZGxlVHlwZSBoYW5kbGVUeXBlUGFja2VkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBGcm9tR0w8SGFuZGxlVHlwZT4oaGFuZGxlVHlwZSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8YW5nbGU6Okdsb2JhbE11dGV4PiBzaGFyZUNvbnRleHRMb2NrID0gR2V0U2hhcmVH
cm91cExvY2soY29udGV4dCk7CisgICAgICAgIGJvb2wgaXNDYWxsVmFsaWQgPQorICAgICAgICAg
ICAgKGNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgfHwgVmFsaWRhdGVJbXBvcnRTZW1hcGhvcmVa
aXJjb25IYW5kbGVBTkdMRSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LCBzZW1hcGhvcmVQYWNrZWQsIGhhbmRsZVR5cGVQYWNrZWQsIGhhbmRs
ZSkpOworICAgICAgICBpZiAoaXNDYWxsVmFsaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZShzZW1hcGhvcmVQYWNrZWQsIGhhbmRs
ZVR5cGVQYWNrZWQsIGhhbmRsZSk7CisgICAgICAgIH0KKyAgICAgICAgQU5HTEVfQ0FQVFVSRShJ
bXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRSwgaXNDYWxsVmFsaWQsIGNvbnRleHQsIHNl
bWFwaG9yZVBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVUeXBlUGFja2VkLCBo
YW5kbGUpOworICAgIH0KK30KIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0
b2dlbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2lu
dHNfZ2xlc19leHRfYXV0b2dlbi5oCmluZGV4IGRmN2IxYTE1NGNjNzJjZDA4YTliMjUwZTU5ZmVh
ZTYzN2U2MTAwNmEuLjdiNTI3NDRmMzM0NGJlNTk2Y2E0YTZmM2YxYzgxNTk2YTNjMTNhNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfZXh0X2F1dG9nZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzX2V4dF9hdXRvZ2VuLmgKQEAgLTEyMCw2ICsxMjAs
MTIgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCk7CiBBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0x1aW50IGluZGV4LCBHTHVp
bnQgZGl2aXNvcik7CiAKKy8vIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYQorQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUoR0x1
aW50IG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBoYW5kbGUpOworCiAvLyBHTF9BTkdMRV9tdWx0aV9kcmF3CiBBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBNdWx0aURyYXdBcnJheXNBTkdMRShHTGVudW0gbW9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50
ICpmaXJzdHMsCkBAIC01MTksNiArNTI1LDExIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHTHVpbnQgaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpOwogCisvLyBHTF9BTkdMRV9zZW1hcGhv
cmVfZnVjaHNpYQorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0U2VtYXBob3Jl
WmlyY29uSGFuZGxlQU5HTEUoR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5kbGVU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CisKIC8vIEdMX0FOR0xFX3RleHR1cmVfZXh0ZXJu
YWxfdXBkYXRlCiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBUZXhJbWFnZTJERXh0ZXJu
YWxBTkdMRShHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCkBAIC01OTAsOTggKzYwMSwxMCBAQCBB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKEdMdWlu
dCBzb3VyY2VJZCwKIAogLy8gR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcwog
QU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0o
R0xlbnVtIGNvbXBvbmVudHMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgTWF0cml4
TG9hZGZDSFJPTUlVTShHTGVudW0gbWF0cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbWF0cml4KTsK
LUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
KEdMZW51bSBtYXRyaXhNb2RlKTsKIAogLy8gR0xfQ0hST01JVU1fbG9zZV9jb250ZXh0CiBBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBMb3NlQ29udGV4dENIUk9NSVVNKEdMZW51bSBjdXJy
ZW50LCBHTGVudW0gb3RoZXIpOwogCi0vLyBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotQU5H
TEVfRVhQT1JUIEdMdWludCBHTF9BUElFTlRSWSBHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFu
Z2UpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUGF0aHNDSFJPTUlVTShH
THVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpOwotQU5HTEVfRVhQT1JUIEdMYm9vbGVhbiBHTF9B
UElFTlRSWSBJc1BhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBQYXRoQ29tbWFuZHNDSFJPTUlVTShHTHVpbnQgcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFu
ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmNvb3Jkcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoUGFyYW1ldGVyZkNI
Uk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpOwotQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShHTHVpbnQgcGF0
aCwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICp2YWx1ZSk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRo
UGFyYW1ldGVyaXZDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFs
dWUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aFN0ZW5jaWxGdW5jQ0hST01J
VU0oR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51
bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
U3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBH
THVpbnQgbWFzayk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3ZlckZpbGxQYXRo
Q0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwotQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51
bSBjb3Zlck1vZGUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTShH
THVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLUFOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkg
bnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpw
YXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRo
QmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhO
YW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7
Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQotU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0oR0xzaXplaSBudW1QYXRocywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
Ci1TdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVt
UGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFu
c2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmluZEZyYWdtZW50
SW5wdXRMb2NhdGlvbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0oR0x1aW50IHByb2dy
YW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZm
cyk7Ci0KIC8vIEdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkCiBBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBCaW5kRnJhZ0RhdGFMb2NhdGlvbkVYVChHTHVpbnQgcHJvZ3JhbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBj
b2xvciwKQEAgLTcxMCw2ICs2MzMsNyBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBC
ZWdpblF1ZXJ5RVhUKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7CiBBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBEZWxldGVRdWVyaWVzRVhUKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpp
ZHMpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRW5kUXVlcnlFWFQoR0xlbnVtIHRh
cmdldCk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZW5RdWVyaWVzRVhUKEdMc2l6
ZWkgbiwgR0x1aW50ICppZHMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50
ZWdlcjY0dkVYVChHTGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEpOwogQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpNjR2RVhUKEdMdWludCBpZCwgR0xlbnVtIHBu
YW1lLCBHTGludDY0ICpwYXJhbXMpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
UXVlcnlPYmplY3RpdkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdHVpNjR2RVhUKEdM
dWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKTsKQEAgLTcyMSw2ICs2NDUs
MjAgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUXVlcnlDb3VudGVyRVhUKEdMdWlu
dCBpZCwgR0xlbnVtIHRhcmdldCk7CiAvLyBHTF9FWFRfZHJhd19idWZmZXJzCiBBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBEcmF3QnVmZmVyc0VYVChHTHNpemVpIG4sIGNvbnN0IEdMZW51
bSAqYnVmcyk7CiAKKy8vIEdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhlZAorQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVChHTHVpbnQgYnVmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBCbGVuZEVxdWF0aW9uaUVYVChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7CitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorQmxlbmRGdW5jU2VwYXJhdGVpRVhUKEdMdWludCBi
dWYsIEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVt
IGRzdEFscGhhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY2lFWFQo
R0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCk7CitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWQorQ29sb3JNYXNraUVYVChHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJv
b2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9vbGVhbiBhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIERpc2FibGVpRVhUKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVpRVhUKEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCk7CitBTkdMRV9FWFBPUlQgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRW5hYmxlZGlF
WFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKKwogLy8gR0xfRVhUX2RyYXdfZWxlbWVu
dHNfYmFzZV92ZXJ0ZXgKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50
c0Jhc2VWZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC04OTcsNiArODM1
LDggQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgSW1wb3J0U2VtYXBob3JlRmRFWFQo
R0x1aW50IHNlbWFwaG9yZSwgR0xlbnVtIGhhbmQKIAogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MQogCisvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisKIC8vIEdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMKIAogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0Y19zcmdiCkBAIC05ODYsNiArOTI2LDIwIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMZW51bSB0YXJnZXQsIEdMZWds
SW1hCiAKIC8vIEdMX09FU19kZXB0aDMyCiAKKy8vIEdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhl
ZAorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9F
UyhHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVBbHBoYSk7CitBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uaU9FUyhHTHVpbnQgYnVmLCBHTGVu
dW0gbW9kZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorQmxlbmRGdW5jU2VwYXJh
dGVpT0VTKEdMdWludCBidWYsIEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBz
cmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZ
IEJsZW5kRnVuY2lPRVMoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCk7CitBTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQorQ29sb3JNYXNraU9FUyhHTHVpbnQgaW5kZXgsIEdM
Ym9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9vbGVhbiBhKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERpc2FibGVpT0VTKEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVpT0VTKEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitBTkdMRV9FWFBPUlQgR0xib29sZWFuIEdMX0FQSUVO
VFJZIElzRW5hYmxlZGlPRVMoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKKwogLy8gR0xf
T0VTX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMoR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CkBAIC0xMjg5LDcgKzEyNDMsMjEgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxl
bmRFcXVhdGlvblNlcGFyYXRlaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3QKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVSR0IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
QWxwaGEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNlcGFy
YXRlaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGVB
bHBoYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJh
dGVpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBi
dWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFs
cGhhKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBtb2RlKTsKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRXF1YXRpb25pRVhUQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUpOworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvbmlPRVNDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSk7CiBBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc2ZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGZhY3Rvcik7CkBAIC0xMzA0LDEwICsxMjcyLDMwIEBAIEFO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlaUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY0Fs
cGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkc3RBbHBoYSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBCbGVuZEZ1bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRz
dFJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKTsK
K0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlaU9FU0NvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHNyY1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5U
UlkgQmxlbmRGdW5jaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZHN0KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY2lF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRzdCk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNpT0VT
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBkc3QpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQmxpdEZyYW1lYnVmZmVy
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Jj
WTAsCkBAIC0xNDAxLDYgKzEzODksMTggQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
Q29sb3JNYXNraUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBhKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvbG9yTWFza2lF
WFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYSk7CitBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBDb2xvck1hc2tpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGEpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JQb2ludGVy
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKQEAg
LTE2MzgsNiArMTYzOCwxMiBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxl
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBjYXApOwogQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgRGlzYWJsZUNsaWVudFN0YXRlQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsIEdMZW51bSBhcnJheSk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1
aW50IGluZGV4KTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERpc2FibGVpQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlaUVYVENvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBEaXNhYmxlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBE
aXNjYXJkRnJhbWVidWZmZXJFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCkBAIC0xODA3
LDYgKzE4MTMsOCBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFbmFibGVDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIGNhcCk7CiBBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBFbmFibGVDbGllbnRTdGF0ZUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTGVudW0gYXJyYXkpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0x1aW50IGluZGV4
KTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZWlDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIEVuYWJsZWlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0
eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIEVuYWJsZWlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4KTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVuZFF1
ZXJ5Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQpOwogQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRW5kUXVlcnlFWFRDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBF
bmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4KTsKQEAgLTIw
NzUsNiArMjA4Myw5IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXI2
NGlfdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgR2V0SW50ZWdlcjY0dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50NjQgKmRhdGEpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
R2V0SW50ZWdlcjY0dkVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50NjQgKmRhdGEpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
R2V0SW50ZWdlcmlfdkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgsCkBAIC0yNDc1LDYgKzI0ODYsMTIgQEAgQU5HTEVfRVhQT1JUIEdMYm9v
bGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWRDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwg
R0xlbnUKIEFOR0xFX0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkaUNvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
KTsKK0FOR0xFX0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkaUVYVENvbnRl
eHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4KTsKK0FOR0xFX0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNFbmFibGVkaU9F
U0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGluZGV4KTsKIEFOR0xFX0VYUE9SVCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNGZW5j
ZU5WQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBmZW5jZSk7CiBBTkdMRV9F
WFBPUlQgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXJDb250ZXh0QU5HTEUoR0xl
Z2xDb250ZXh0IGN0eCwgR0x1aW50IGZyYW1lYnVmZmVyKTsKIEFOR0xFX0VYUE9SVCBHTGJvb2xl
YW4gR0xfQVBJRU5UUlkgSXNGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LApAQCAtMzU3MiwxMzggKzM1ODksNiBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRS
WSBCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvbXBvbmVudHMpOwotQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgTWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbWF0cml4TW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqbWF0cml4
KTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE1hdHJpeExvYWRJZGVudGl0eUNIUk9N
SVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWF0
cml4TW9kZSk7Ci1BTkdMRV9FWFBPUlQgR0x1aW50IEdMX0FQSUVOVFJZIEdlblBhdGhzQ0hST01J
VU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xzaXplaSByYW5nZSk7Ci1BTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVQYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSByYW5nZSk7
Ci1BTkdMRV9FWFBPUlQgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWludCBwYXRoKTsKLUFOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIFBhdGhDb21tYW5kc0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29tbWFuZHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQ29vcmRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmNvb3Jkcyk7Ci1BTkdM
RV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBQYXRoUGFyYW1ldGVyZkNIUk9NSVVNQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdmFsdWUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkgUGF0aFBhcmFtZXRlcmlDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB2YWx1ZSk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFy
YW1ldGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0ICp2YWx1ZSk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRQYXRoUGFy
YW1ldGVyaXZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqdmFsdWUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spOwotQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spOwotQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzayk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBDb3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKTsKLUFO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb3Zlck1vZGUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY292ZXJNb2RlKTsKLUFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpOwotQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkKLUNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQotQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQotU3RlbmNpbFN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
YXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkKLVN0
ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcyk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQotU3RlbmNp
bFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0
aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgcGF0aEJhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7Ci1B
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWQotU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51
bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBh
dGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKLUFO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJP
TUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOwotQU5HTEVfRVhQT1JUIHZvaWQgR0xf
QVBJRU5UUlkKLVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNQ29udGV4dEFOR0xF
KEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqY29lZmZzKTsKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXh0dXJlQ0hS
T01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKQEAgLTQzMTEsNiArNDE5NiwxNSBAQCBBTkdMRV9F
WFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRSZW5kZXJidWZmZXJJbWFnZUFOR0xFQ29udGV4dEFO
R0xFKEdMZWdsQ29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKTsKK0FOR0xFX0VYUE9SVCB2b2lk
IEdMX0FQSUVOVFJZIEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSk7CitBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNlbWFwaG9yZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhh
bmRsZSk7CiB9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2VuZGlmICAvLyBMSUJHTEVTVjJfRU5UUllf
UE9JTlRTX0dMRVNfRVhUX0FVVE9HRU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcAppbmRleCA3NzI1MTA2YTQyMTQ2
NWFmNTcwOTMyZjMzMWEyZjkyMjAyYmQ5ZWMxLi5mNDBmYjc3ZTdlOGFkMDFkMzc4ODJlN2MzOTZm
ZDkwZjE4NDU4NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZQog
c3RhdGljIFRMU0luZGV4IHRocmVhZFRMUyA9IFRMU19JTlZBTElEX0lOREVYOwogRGVidWcgKmdf
RGVidWcgICAgICAgICAgICA9IG51bGxwdHI7CiAKLUFOR0xFX1JFUVVJUkVfQ09OU1RBTlRfSU5J
VCBzdGQ6OmF0b21pYzxzdGQ6Om11dGV4ICo+IGdfTXV0ZXgobnVsbHB0cik7CitBTkdMRV9SRVFV
SVJFX0NPTlNUQU5UX0lOSVQgc3RkOjphdG9taWM8YW5nbGU6Okdsb2JhbE11dGV4ICo+IGdfTXV0
ZXgobnVsbHB0cik7CiBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxkZWNsdHlwZShnX011dGV4KT46OnZhbHVlLAogICAgICAgICAgICAgICAiZ2xvYmFsIG11dGV4
IGlzIG5vdCB0cml2aWFsbHkgZGVzdHJ1Y3RpYmxlIik7CiAKQEAgLTc1LDggKzc1LDggQEAgdm9p
ZCBBbGxvY2F0ZU11dGV4KCkKIHsKICAgICBpZiAoZ19NdXRleCA9PSBudWxscHRyKQogICAgIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6bXV0ZXg+IG5ld011dGV4KG5ldyBzdGQ6Om11
dGV4KCkpOwotICAgICAgICBzdGQ6Om11dGV4ICpleHBlY3RlZCA9IG51bGxwdHI7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxhbmdsZTo6R2xvYmFsTXV0ZXg+IG5ld011dGV4KG5ldyBhbmdsZTo6
R2xvYmFsTXV0ZXgoKSk7CisgICAgICAgIGFuZ2xlOjpHbG9iYWxNdXRleCAqZXhwZWN0ZWQgPSBu
dWxscHRyOwogICAgICAgICBpZiAoZ19NdXRleC5jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZyhleHBl
Y3RlZCwgbmV3TXV0ZXguZ2V0KCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBuZXdNdXRleC5y
ZWxlYXNlKCk7CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQWxsb2NhdGVNdXRleCgpCiAKIH0gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKIAotc3RkOjptdXRleCAmR2V0R2xvYmFsTXV0ZXgoKQorYW5n
bGU6Okdsb2JhbE11dGV4ICZHZXRHbG9iYWxNdXRleCgpCiB7CiAgICAgQWxsb2NhdGVNdXRleCgp
OwogICAgIHJldHVybiAqZ19NdXRleDsKQEAgLTE1NywxMCArMTU3LDEwIEBAIHZvaWQgRGVhbGxv
Y2F0ZURlYnVnKCkKIAogdm9pZCBEZWFsbG9jYXRlTXV0ZXgoKQogewotICAgIHN0ZDo6bXV0ZXgg
Km11dGV4ID0gZ19NdXRleC5leGNoYW5nZShudWxscHRyKTsKKyAgICBhbmdsZTo6R2xvYmFsTXV0
ZXggKm11dGV4ID0gZ19NdXRleC5leGNoYW5nZShudWxscHRyKTsKICAgICB7CiAgICAgICAgIC8v
IFdhaXQgZm9yIHRoZSBtdXRleCB0byBiZWNvbWUgcmVsZWFzZWQgYnkgb3RoZXIgdGhyZWFkcyBi
ZWZvcmUgZGVsZXRpbmcuCi0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2Nr
KCptdXRleCk7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxhbmdsZTo6R2xvYmFsTXV0ZXg+IGxv
Y2soKm11dGV4KTsKICAgICB9CiAgICAgU2FmZURlbGV0ZShtdXRleCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuaAppbmRl
eCAzNjY3ZmE1OGQxMTE3NTY4ODNmZTAzNTQ2Yjc2ODBkOGRlMGU1ZDkzLi41ODc3YjdiZTFiNDZl
ZDBmNzRmMTBlNGY0Y2U5YzQ0ZGY3MTczYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmgKQEAgLTE2LDE5ICsxNiwyNCBA
QAogCiAjaW5jbHVkZSA8bXV0ZXg+CiAKK25hbWVzcGFjZSBhbmdsZQorewordXNpbmcgR2xvYmFs
TXV0ZXggPSBzdGQ6OnJlY3Vyc2l2ZV9tdXRleDsKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCiBu
YW1lc3BhY2UgZWdsCiB7CiBjbGFzcyBEZWJ1ZzsKIGNsYXNzIFRocmVhZDsKIAotc3RkOjptdXRl
eCAmR2V0R2xvYmFsTXV0ZXgoKTsKK2FuZ2xlOjpHbG9iYWxNdXRleCAmR2V0R2xvYmFsTXV0ZXgo
KTsKIFRocmVhZCAqR2V0Q3VycmVudFRocmVhZCgpOwogRGVidWcgKkdldERlYnVnKCk7CiB2b2lk
IFNldENvbnRleHRDdXJyZW50KFRocmVhZCAqdGhyZWFkLCBnbDo6Q29udGV4dCAqY29udGV4dCk7
CiB9ICAvLyBuYW1lc3BhY2UgZWdsCiAKICNkZWZpbmUgQU5HTEVfU0NPUEVEX0dMT0JBTF9MT0NL
KCkgXAotICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBnbG9iYWxNdXRleExvY2soZWds
OjpHZXRHbG9iYWxNdXRleCgpKQorICAgIHN0ZDo6bG9ja19ndWFyZDxhbmdsZTo6R2xvYmFsTXV0
ZXg+IGdsb2JhbE11dGV4TG9jayhlZ2w6OkdldEdsb2JhbE11dGV4KCkpCiAKIG5hbWVzcGFjZSBn
bAogewpAQCAtNTYsMTAgKzYxLDEwIEBAIEFOR0xFX0lOTElORSBDb250ZXh0ICpHZXRWYWxpZEds
b2JhbENvbnRleHQoKQogICAgIHJldHVybiB0aHJlYWQtPmdldFZhbGlkQ29udGV4dCgpOwogfQog
Ci1BTkdMRV9JTkxJTkUgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBHZXRTaGFyZUdyb3Vw
TG9jayhjb25zdCBDb250ZXh0ICpjb250ZXh0KQorQU5HTEVfSU5MSU5FIHN0ZDo6dW5pcXVlX2xv
Y2s8YW5nbGU6Okdsb2JhbE11dGV4PiBHZXRTaGFyZUdyb3VwTG9jayhjb25zdCBDb250ZXh0ICpj
b250ZXh0KQogewotICAgIHJldHVybiBjb250ZXh0LT5pc1NoYXJlZCgpID8gc3RkOjp1bmlxdWVf
bG9jazxzdGQ6Om11dGV4PihlZ2w6OkdldEdsb2JhbE11dGV4KCkpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+KCk7CisgICAgcmV0
dXJuIGNvbnRleHQtPmlzU2hhcmVkKCkgPyBzdGQ6OnVuaXF1ZV9sb2NrPGFuZ2xlOjpHbG9iYWxN
dXRleD4oZWdsOjpHZXRHbG9iYWxNdXRleCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogc3RkOjp1bmlxdWVfbG9jazxhbmdsZTo6R2xvYmFsTXV0ZXg+KCk7CiB9CiB9ICAvLyBu
YW1lc3BhY2UgZ2wKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmNwcAppbmRleCAyNWEzMjg4Y2E3ODUwNDU4
M2VjOGMzOTRjNWI5OGNmN2QzNjY1Nzg5Li5mNTk5MTM1OTk0YmZhZjk2MTE2Mjk4ZTMxZDQ2NTc2
MGE3ZDFkMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmNwcApAQCAtMjg2Niw2ICsyODY2LDE1IEBA
IHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0x1aW50IGluZGV4
LCBHTHVpbnQgZGl2aXNvcikKICAgICByZXR1cm4gZ2w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RShpbmRleCwgZGl2aXNvcik7CiB9CiAKKy8vIEdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNp
YQordm9pZCBHTF9BUElFTlRSWSBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKEdMdWlu
dCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50NjQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaGFuZGxlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBnbDo6
SW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEUobWVtb3J5LCBzaXplLCBoYW5kbGVUeXBlLCBo
YW5kbGUpOworfQorCiAvLyBHTF9BTkdMRV9tdWx0aV9kcmF3CiB2b2lkIEdMX0FQSUVOVFJZIGds
TXVsdGlEcmF3QXJyYXlzQU5HTEUoR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmZpcnN0cywKQEAgLTM1NjMsNiArMzU3Miwx
NCBAQCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdM
dWludCBpZCwKICAgICByZXR1cm4gZ2w6OkdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShp
ZCwgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgcGFyYW1zKTsKIH0KIAorLy8gR0xfQU5HTEVfc2Vt
YXBob3JlX2Z1Y2hzaWEKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25I
YW5kbGVBTkdMRShHTHVpbnQgc2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpCit7
CisgICAgcmV0dXJuIGdsOjpJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRShzZW1hcGhv
cmUsIGhhbmRsZVR5cGUsIGhhbmRsZSk7Cit9CisKIC8vIEdMX0FOR0xFX3RleHR1cmVfZXh0ZXJu
YWxfdXBkYXRlCiB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUoR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKQEAgLTM2ODQsMjA1ICszNzAxLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgZ2xD
b3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShHTGVudW0gY29tcG9uZW50cykKICAgICByZXR1cm4g
Z2w6OkNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKGNvbXBvbmVudHMpOwogfQogCi12b2lkIEdM
X0FQSUVOVFJZIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTGVudW0gbWF0cml4TW9kZSwgY29uc3Qg
R0xmbG9hdCAqbWF0cml4KQotewotICAgIHJldHVybiBnbDo6TWF0cml4TG9hZGZDSFJPTUlVTSht
YXRyaXhNb2RlLCBtYXRyaXgpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZElk
ZW50aXR5Q0hST01JVU0oR0xlbnVtIG1hdHJpeE1vZGUpCi17Ci0gICAgcmV0dXJuIGdsOjpNYXRy
aXhMb2FkSWRlbnRpdHlDSFJPTUlVTShtYXRyaXhNb2RlKTsKLX0KLQogLy8gR0xfQ0hST01JVU1f
bG9zZV9jb250ZXh0CiB2b2lkIEdMX0FQSUVOVFJZIGdsTG9zZUNvbnRleHRDSFJPTUlVTShHTGVu
dW0gY3VycmVudCwgR0xlbnVtIG90aGVyKQogewogICAgIHJldHVybiBnbDo6TG9zZUNvbnRleHRD
SFJPTUlVTShjdXJyZW50LCBvdGhlcik7CiB9CiAKLS8vIEdMX0NIUk9NSVVNX3BhdGhfcmVuZGVy
aW5nCi1HTHVpbnQgR0xfQVBJRU5UUlkgZ2xHZW5QYXRoc0NIUk9NSVVNKEdMc2l6ZWkgcmFuZ2Up
Ci17Ci0gICAgcmV0dXJuIGdsOjpHZW5QYXRoc0NIUk9NSVVNKHJhbmdlKTsKLX0KLQotdm9pZCBH
TF9BUElFTlRSWSBnbERlbGV0ZVBhdGhzQ0hST01JVU0oR0x1aW50IGZpcnN0LCBHTHNpemVpIHJh
bmdlKQotewotICAgIHJldHVybiBnbDo6RGVsZXRlUGF0aHNDSFJPTUlVTShmaXJzdCwgcmFuZ2Up
OwotfQotCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1BhdGhDSFJPTUlVTShHTHVpbnQgcGF0
aCkKLXsKLSAgICByZXR1cm4gZ2w6OklzUGF0aENIUk9NSVVNKHBhdGgpOwotfQotCi12b2lkIEdM
X0FQSUVOVFJZIGdsUGF0aENvbW1hbmRzQ0hST01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1Db21tYW5kcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5k
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNv
b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29v
cmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmNvb3JkcykKLXsKLSAgICByZXR1cm4gZ2w6OlBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgs
IG51bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3Jkcyk7Ci19
Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKEdMdWludCBwYXRo
LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGdsOjpQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNKHBhdGgsIHBuYW1lLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5U
UlkgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdM
aW50IHZhbHVlKQotewotICAgIHJldHVybiBnbDo6UGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRo
LCBwbmFtZSwgdmFsdWUpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRl
cmZ2Q0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqdmFsdWUpCi17
Ci0gICAgcmV0dXJuIGdsOjpHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShwYXRoLCBwbmFtZSwg
dmFsdWUpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01J
VU0oR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnZhbHVlKQotewotICAgIHJldHVy
biBnbDo6R2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0ocGF0aCwgcG5hbWUsIHZhbHVlKTsKLX0K
LQotdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMZW51bSBmdW5j
LCBHTGludCByZWYsIEdMdWludCBtYXNrKQotewotICAgIHJldHVybiBnbDo6UGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU0oZnVuYywgcmVmLCBtYXNrKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFN0
ZW5jaWxGaWxsUGF0aENIUk9NSVVNKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWlu
dCBtYXNrKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwg
ZmlsbE1vZGUsIG1hc2spOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBh
dGhDSFJPTUlVTShHTHVpbnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKLXsK
LSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgcmVmZXJlbmNl
LCBtYXNrKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTShH
THVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKLXsKLSAgICByZXR1cm4gZ2w6OkNvdmVyRmls
bFBhdGhDSFJPTUlVTShwYXRoLCBjb3Zlck1vZGUpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGds
Q292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCi17
Ci0gICAgcmV0dXJuIGdsOjpDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCBjb3Zlck1vZGUp
OwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01J
VU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0g
ICAgcmV0dXJuIGdsOjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBmaWxs
TW9kZSwgbWFzaywgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0oR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2lsVGhlbkNv
dmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIHJlZmVyZW5jZSwgbWFzaywgY292ZXJNb2RlKTsK
LX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShH
THNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
b3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0g
ICAgcmV0dXJuIGdsOjpDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0obnVtUGF0aCwgcGF0
aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1
ZXMpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQotewotICAgIHJldHVybiBnbDo6Q292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU0obnVtUGF0aCwgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGNvdmVyTW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRo
TmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpCi17Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
KG51bVBhdGgsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCByZWZlcmVuY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIHRyYW5z
Zm9ybVR5cGUsIHRyYW5zZm9ybVZhbHVlcyk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFt
ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgcmV0
dXJuIGdsOjpTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTShudW1QYXRocywgcGF0aE5h
bWVUeXBlLCBwYXRocywgcGF0aEJhc2UsIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaywgdHJhbnNmb3JtVHlwZSwgdHJhbnNmb3Jt
VmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmls
bE1vZGUsIG1hc2ssIGNvdmVyTW9kZSwgdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyk7
Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3Rh
bmNlZENIUk9NSVVNKEdMc2l6ZWkgbnVtUGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zl
ck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJv
a2VQYXRoSW5zdGFuY2VkQ0hST01JVU0obnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBh
dGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSwg
dHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFnbWVudElu
cHV0TG9jYXRpb25DSFJPTUlVTShHTHVpbnQgcHJvZ3JhbXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNo
YXIgKm5hbWUpCi17Ci0gICAgcmV0dXJuIGdsOjpCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hS
T01JVU0ocHJvZ3JhbXMsIGxvY2F0aW9uLCBuYW1lKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBnZW5Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvbXBvbmVudHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
Y29lZmZzKQotewotICAgIHJldHVybiBnbDo6UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU0ocHJvZ3JhbSwgbG9jYXRpb24sIGdlbk1vZGUsIGNvbXBvbmVudHMsIGNvZWZmcyk7Ci19
Ci0KIC8vIEdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkCiB2b2lkIEdMX0FQSUVOVFJZIGdsQmlu
ZEZyYWdEYXRhTG9jYXRpb25FWFQoR0x1aW50IHByb2dyYW0sIEdMdWludCBjb2xvciwgY29uc3Qg
R0xjaGFyICpuYW1lKQogewpAQCAtMzk1NCw2ICszNzc4LDExIEBAIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZW5RdWVyaWVzRVhUKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCiAgICAgcmV0dXJuIGdsOjpH
ZW5RdWVyaWVzRVhUKG4sIGlkcyk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2Vy
NjR2RVhUKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSkKK3sKKyAgICByZXR1cm4gZ2w6Okdl
dEludGVnZXI2NHZFWFQocG5hbWUsIGRhdGEpOworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
UXVlcnlPYmplY3RpNjR2RVhUKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJh
bXMpCiB7CiAgICAgcmV0dXJuIGdsOjpHZXRRdWVyeU9iamVjdGk2NHZFWFQoaWQsIHBuYW1lLCBw
YXJhbXMpOwpAQCAtMzk5NSw2ICszODI0LDQ4IEBAIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QnVm
ZmVyc0VYVChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKICAgICByZXR1cm4gZ2w6OkRy
YXdCdWZmZXJzRVhUKG4sIGJ1ZnMpOwogfQogCisvLyBHTF9FWFRfZHJhd19idWZmZXJzX2luZGV4
ZWQKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUKEdMdWludCBi
dWYsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKQoreworICAgIHJldHVybiBnbDo6
QmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVChidWYsIG1vZGVSR0IsIG1vZGVBbHBoYSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uaUVYVChHTHVpbnQgYnVmLCBHTGVudW0g
bW9kZSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRXF1YXRpb25pRVhUKGJ1ZiwgbW9kZSk7Cit9
CisKK3ZvaWQgR0xfQVBJRU5UUlkKK2dsQmxlbmRGdW5jU2VwYXJhdGVpRVhUKEdMdWludCBidWYs
IEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRz
dEFscGhhKQoreworICAgIHJldHVybiBnbDo6QmxlbmRGdW5jU2VwYXJhdGVpRVhUKGJ1Ziwgc3Jj
UkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkg
Z2xCbGVuZEZ1bmNpRVhUKEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCit7Cisg
ICAgcmV0dXJuIGdsOjpCbGVuZEZ1bmNpRVhUKGJ1Ziwgc3JjLCBkc3QpOworfQorCit2b2lkIEdM
X0FQSUVOVFJZIGdsQ29sb3JNYXNraUVYVChHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJv
b2xlYW4gZywgR0xib29sZWFuIGIsIEdMYm9vbGVhbiBhKQoreworICAgIHJldHVybiBnbDo6Q29s
b3JNYXNraUVYVChpbmRleCwgciwgZywgYiwgYSk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xE
aXNhYmxlaUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIGds
OjpEaXNhYmxlaUVYVCh0YXJnZXQsIGluZGV4KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEVu
YWJsZWlFWFQoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIHJldHVybiBnbDo6
RW5hYmxlaUVYVCh0YXJnZXQsIGluZGV4KTsKK30KKworR0xib29sZWFuIEdMX0FQSUVOVFJZIGds
SXNFbmFibGVkaUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgcmV0dXJu
IGdsOjpJc0VuYWJsZWRpRVhUKHRhcmdldCwgaW5kZXgpOworfQorCiAvLyBHTF9FWFRfZHJhd19l
bGVtZW50c19iYXNlX3ZlcnRleAogdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0Jhc2VW
ZXJ0ZXhFWFQoR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtNDMwNCw2ICs0MTc1LDggQEAgdm9pZCBHTF9B
UElFTlRSWSBnbEltcG9ydFNlbWFwaG9yZUZkRVhUKEdMdWludCBzZW1hcGhvcmUsIEdMZW51bSBo
YW5kbGVUeXBlLCBHTGkKIAogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQogCisv
LyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisKIC8vIEdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3MzdGMKIAogLy8gR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdi
CkBAIC00NDgxLDYgKzQzNTQsNDggQEAgdm9pZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UKIAogLy8gR0xf
T0VTX2RlcHRoMzIKIAorLy8gR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkCit2b2lkIEdMX0FQ
SUVOVFJZIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUyhHTHVpbnQgYnVmLCBHTGVudW0gbW9k
ZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRXF1YXRpb25T
ZXBhcmF0ZWlPRVMoYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpOworfQorCit2b2lkIEdMX0FQSUVO
VFJZIGdsQmxlbmRFcXVhdGlvbmlPRVMoR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCit7CisgICAg
cmV0dXJuIGdsOjpCbGVuZEVxdWF0aW9uaU9FUyhidWYsIG1vZGUpOworfQorCit2b2lkIEdMX0FQ
SUVOVFJZCitnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUyhHTHVpbnQgYnVmLCBHTGVudW0gc3JjUkdC
LCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKK3sKKyAg
ICByZXR1cm4gZ2w6OkJsZW5kRnVuY1NlcGFyYXRlaU9FUyhidWYsIHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwgZHN0QWxwaGEpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jaU9F
UyhHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KQoreworICAgIHJldHVybiBnbDo6
QmxlbmRGdW5jaU9FUyhidWYsIHNyYywgZHN0KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbENv
bG9yTWFza2lPRVMoR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9v
bGVhbiBiLCBHTGJvb2xlYW4gYSkKK3sKKyAgICByZXR1cm4gZ2w6OkNvbG9yTWFza2lPRVMoaW5k
ZXgsIHIsIGcsIGIsIGEpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZWlPRVMoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIHJldHVybiBnbDo6RGlzYWJsZWlPRVMo
dGFyZ2V0LCBpbmRleCk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVpT0VTKEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCkKK3sKKyAgICByZXR1cm4gZ2w6OkVuYWJsZWlPRVModGFy
Z2V0LCBpbmRleCk7Cit9CisKK0dMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlPRVMo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIHJldHVybiBnbDo6SXNFbmFibGVk
aU9FUyh0YXJnZXQsIGluZGV4KTsKK30KKwogLy8gR0xfT0VTX2RyYXdfZWxlbWVudHNfYmFzZV92
ZXJ0ZXgKIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTKEdMZW51
bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKQEAgLTUxMzUsMTEgKzUwNTAsMzcgQEAgdm9pZCBHTF9BUElFTlRSWSBnbEJs
ZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICBy
ZXR1cm4gZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlDb250ZXh0QU5HTEUoY3R4LCBidWYsIG1v
ZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9u
U2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGVSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZUFscGhhKQoreworICAgIHJldHVybiBnbDo6Qmxl
bmRFcXVhdGlvblNlcGFyYXRlaUVYVENvbnRleHRBTkdMRShjdHgsIGJ1ZiwgbW9kZVJHQiwgbW9k
ZUFscGhhKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlP
RVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9k
ZVJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBtb2RlQWxwaGEpCit7CisgICAgcmV0dXJuIGdsOjpCbGVuZEVxdWF0aW9u
U2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFKGN0eCwgYnVmLCBtb2RlUkdCLCBtb2RlQWxwaGEpOwor
fQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbmlDb250ZXh0QU5HTEUoR0xlZ2xD
b250ZXh0IGN0eCwgR0x1aW50IGJ1ZiwgR0xlbnVtIG1vZGUpCiB7CiAgICAgcmV0dXJuIGdsOjpC
bGVuZEVxdWF0aW9uaUNvbnRleHRBTkdMRShjdHgsIGJ1ZiwgbW9kZSk7CiB9CiAKK3ZvaWQgR0xf
QVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LCBHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRXF1YXRp
b25pRVhUQ29udGV4dEFOR0xFKGN0eCwgYnVmLCBtb2RlKTsKK30KKwordm9pZCBHTF9BUElFTlRS
WSBnbEJsZW5kRXF1YXRpb25pT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMdWlu
dCBidWYsIEdMZW51bSBtb2RlKQoreworICAgIHJldHVybiBnbDo6QmxlbmRFcXVhdGlvbmlPRVND
b250ZXh0QU5HTEUoY3R4LCBidWYsIG1vZGUpOworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsQmxl
bmRGdW5jQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBzZmFjdG9yLCBHTGVu
dW0gZGZhY3RvcikKIHsKICAgICByZXR1cm4gZ2w6OkJsZW5kRnVuY0NvbnRleHRBTkdMRShjdHgs
IHNmYWN0b3IsIGRmYWN0b3IpOwpAQCAtNTE2NSwxMSArNTEwNiw0MSBAQCB2b2lkIEdMX0FQSUVO
VFJZIGdsQmxlbmRGdW5jU2VwYXJhdGVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAg
ICAgcmV0dXJuIGdsOjpCbGVuZEZ1bmNTZXBhcmF0ZWlDb250ZXh0QU5HTEUoY3R4LCBidWYsIHNy
Y1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCit2b2lkIEdMX0FQSUVOVFJZ
IGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzcmNSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkc3RSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhh
KQoreworICAgIHJldHVybiBnbDo6QmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKGN0
eCwgYnVmLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKK30KKwordm9pZCBH
TF9BUElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRl
eHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc3JjUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkc3RBbHBoYSkKK3sKKyAgICByZXR1cm4gZ2w6OkJsZW5kRnVuY1NlcGFyYXRlaU9FU0NvbnRl
eHRBTkdMRShjdHgsIGJ1Ziwgc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7Cit9
CisKIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4
dCBjdHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCiB7CiAgICAgcmV0dXJu
IGdsOjpCbGVuZEZ1bmNpQ29udGV4dEFOR0xFKGN0eCwgYnVmLCBzcmMsIGRzdCk7CiB9CiAKK3Zv
aWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCit7CisgICAgcmV0dXJuIGds
OjpCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFKGN0eCwgYnVmLCBzcmMsIGRzdCk7Cit9CisKK3Zv
aWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpCit7CisgICAgcmV0dXJuIGds
OjpCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFKGN0eCwgYnVmLCBzcmMsIGRzdCk7Cit9CisKIHZv
aWQgR0xfQVBJRU5UUlkgZ2xCbGl0RnJhbWVidWZmZXJDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3JjWDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHNyY1kwLApAQCAtNTM2NCw2ICs1MzM1LDI2IEBAIHZvaWQgR0xfQVBJRU5UUlkgZ2xD
b2xvck1hc2tpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCiAgICAgcmV0dXJuIGdsOjpD
b2xvck1hc2tpQ29udGV4dEFOR0xFKGN0eCwgaW5kZXgsIHIsIGcsIGIsIGEpOwogfQogCit2b2lk
IEdMX0FQSUVOVFJZIGdsQ29sb3JNYXNraUVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGEpCit7CisgICAgcmV0dXJuIGdsOjpDb2xvck1hc2tpRVhUQ29udGV4dEFOR0xF
KGN0eCwgaW5kZXgsIHIsIGcsIGIsIGEpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JN
YXNraU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGEpCit7CisgICAg
cmV0dXJuIGdsOjpDb2xvck1hc2tpT0VTQ29udGV4dEFOR0xFKGN0eCwgaW5kZXgsIHIsIGcsIGIs
IGEpOworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JQb2ludGVyQ29udGV4dEFOR0xFKEdM
ZWdsQ29udGV4dCBjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLApAQCAtNTgxNiw2ICs1ODA3LDE2IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Z2xEaXNhYmxlaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBH
THVpbnQKICAgICByZXR1cm4gZ2w6OkRpc2FibGVpQ29udGV4dEFOR0xFKGN0eCwgdGFyZ2V0LCBp
bmRleCk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNhYmxlaUVYVENvbnRleHRBTkdMRShH
TGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgcmV0
dXJuIGdsOjpEaXNhYmxlaUVYVENvbnRleHRBTkdMRShjdHgsIHRhcmdldCwgaW5kZXgpOworfQor
Cit2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZWlPRVNDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQoreworICAgIHJldHVybiBnbDo6RGlz
YWJsZWlPRVNDb250ZXh0QU5HTEUoY3R4LCB0YXJnZXQsIGluZGV4KTsKK30KKwogdm9pZCBHTF9B
UElFTlRSWSBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVENvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLApAQCAtNjEzOSw2ICs2MTQwLDE2
IEBAIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVpQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBj
dHgsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpCiAgICAgcmV0dXJuIGdsOjpFbmFibGVpQ29udGV4
dEFOR0xFKGN0eCwgdGFyZ2V0LCBpbmRleCk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFi
bGVpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCkKK3sKKyAgICByZXR1cm4gZ2w6OkVuYWJsZWlFWFRDb250ZXh0QU5HTEUoY3R4LCB0
YXJnZXQsIGluZGV4KTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZWlPRVNDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KQorewor
ICAgIHJldHVybiBnbDo6RW5hYmxlaU9FU0NvbnRleHRBTkdMRShjdHgsIHRhcmdldCwgaW5kZXgp
OworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kUXVlcnlDb250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICByZXR1cm4gZ2w6OkVuZFF1ZXJ5Q29udGV4
dEFOR0xFKGN0eCwgdGFyZ2V0KTsKQEAgLTY2NzksNiArNjY5MCwxMSBAQCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0SW50ZWdlcjY0dkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0g
cG5hbWUsIEdMaQogICAgIHJldHVybiBnbDo6R2V0SW50ZWdlcjY0dkNvbnRleHRBTkdMRShjdHgs
IHBuYW1lLCBkYXRhKTsKIH0KIAordm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXI2NHZFWFRD
b250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRh
KQoreworICAgIHJldHVybiBnbDo6R2V0SW50ZWdlcjY0dkVYVENvbnRleHRBTkdMRShjdHgsIHBu
YW1lLCBkYXRhKTsKK30KKwogdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXJpX3ZDb250ZXh0
QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCkBAIC03NDUwLDYgKzc0NjYsMTYgQEAgR0xi
b29sZWFuIEdMX0FQSUVOVFJZIGdsSXNFbmFibGVkaUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LCBHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6SXNFbmFibGVkaUNvbnRleHRBTkdM
RShjdHgsIHRhcmdldCwgaW5kZXgpOwogfQogCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0Vu
YWJsZWRpRVhUQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCkKK3sKKyAgICByZXR1cm4gZ2w6OklzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEUo
Y3R4LCB0YXJnZXQsIGluZGV4KTsKK30KKworR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNFbmFi
bGVkaU9FU0NvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgpCit7CisgICAgcmV0dXJuIGdsOjpJc0VuYWJsZWRpT0VTQ29udGV4dEFOR0xFKGN0
eCwgdGFyZ2V0LCBpbmRleCk7Cit9CisKIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRmVuY2VO
VkNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHVpbnQgZmVuY2UpCiB7CiAgICAgcmV0
dXJuIGdsOjpJc0ZlbmNlTlZDb250ZXh0QU5HTEUoY3R4LCBmZW5jZSk7CkBAIC05NTY5LDI0MyAr
OTU5NSw2IEBAIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTGVuCiAgICAgcmV0dXJuIGdsOjpDb3ZlcmFn
ZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIGNvbXBvbmVudHMpOwogfQogCi12
b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1hdHJpeE1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICptYXRyaXgpCi17Ci0gICAgcmV0dXJu
IGdsOjpNYXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgbWF0cml4TW9kZSwgbWF0
cml4KTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsIEdMZW51bSBtYXRyaXhNb2RlKQotewotICAg
IHJldHVybiBnbDo6TWF0cml4TG9hZElkZW50aXR5Q0hST01JVU1Db250ZXh0QU5HTEUoY3R4LCBt
YXRyaXhNb2RlKTsKLX0KLQotR0x1aW50IEdMX0FQSUVOVFJZIGdsR2VuUGF0aHNDSFJPTUlVTUNv
bnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LCBHTHNpemVpIHJhbmdlKQotewotICAgIHJldHVy
biBnbDo6R2VuUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIHJhbmdlKTsKLX0KLQotdm9p
ZCBHTF9BUElFTlRSWSBnbERlbGV0ZVBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250
ZXh0IGN0eCwgR0x1aW50IGZpcnN0LCBHTHNpemVpIHJhbmdlKQotewotICAgIHJldHVybiBnbDo6
RGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIGZpcnN0LCByYW5nZSk7Ci19Ci0K
LUdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWds
Q29udGV4dCBjdHgsIEdMdWludCBwYXRoKQotewotICAgIHJldHVybiBnbDo6SXNQYXRoQ0hST01J
VU1Db250ZXh0QU5HTEUoY3R4LCBwYXRoKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbFBhdGhD
b21tYW5kc0NIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBudW1Db21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVieXRlICpjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUNvb3JkcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29v
cmRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmNvb3JkcykKLXsKLSAgICByZXR1cm4gZ2w6OlBhdGhDb21tYW5kc0NI
Uk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgcGF0aCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1D
b29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b29yZFR5cGUsIGNvb3Jkcyk7Ci19Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoUGFyYW1ldGVy
ZkNIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBw
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGdsOjpQYXRoUGFyYW1ldGVyZkNIUk9N
SVVNQ29udGV4dEFOR0xFKGN0eCwgcGF0aCwgcG5hbWUsIHZhbHVlKTsKLX0KLQotdm9pZCBHTF9B
UElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGds
OjpQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgcGF0aCwgcG5hbWUsIHZh
bHVlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVN
Q29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgKnZhbHVlKQotewotICAgIHJldHVybiBnbDo6R2V0UGF0aFBhcmFtZXRl
cmZ2Q0hST01JVU1Db250ZXh0QU5HTEUoY3R4LCBwYXRoLCBwbmFtZSwgdmFsdWUpOwotfQotCi12
b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
KnZhbHVlKQotewotICAgIHJldHVybiBnbDo6R2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250
ZXh0QU5HTEUoY3R4LCBwYXRoLCBwbmFtZSwgdmFsdWUpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZ
IGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCByZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2spCi17Ci0gICAgcmV0dXJuIGdsOjpQYXRo
U3RlbmNpbEZ1bmNDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIGZ1bmMsIHJlZiwgbWFzayk7Ci19
Ci0KLXZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdM
RShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFz
aykKLXsKLSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xF
KGN0eCwgcGF0aCwgZmlsbE1vZGUsIG1hc2spOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3Rl
bmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaykKLXsKLSAgICByZXR1cm4g
Z2w6OlN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUoY3R4LCBwYXRoLCByZWZl
cmVuY2UsIG1hc2spOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2Rl
KQotewotICAgIHJldHVybiBnbDo6Q292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKGN0
eCwgcGF0aCwgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyU3Ryb2tl
UGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSkKLXsKLSAgICByZXR1cm4gZ2w6OkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVN
Q29udGV4dEFOR0xFKGN0eCwgcGF0aCwgY292ZXJNb2RlKTsKLX0KLQotdm9pZCBHTF9BUElFTlRS
WSBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKEdMZWdsQ29u
dGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17Ci0gICAgcmV0
dXJuIGdsOjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgs
IHBhdGgsIGZpbGxNb2RlLCBtYXNrLCBjb3Zlck1vZGUpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZ
IGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENv
bnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVu
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCi17
Ci0gICAgcmV0dXJuIGdsOjpTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4
dEFOR0xFKGN0eCwgcGF0aCwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Zlck1vZGUpOwotfQot
Ci12b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4
dEFOR0xFKEdMZWdsQ29udGV4dCBjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHBhdGhOYW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
YXRoQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKLXsKLSAgICByZXR1cm4g
Z2w6OkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSgKLSAgICAgICAg
Y3R4LCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgY292ZXJNb2RlLCB0
cmFuc2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGds
Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1lVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGF0aEJhc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgcmV0dXJuIGdsOjpD
b3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSgKLSAgICAgICAgY3R4
LCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSwgY292ZXJNb2RlLCB0cmFu
c2Zvcm1UeXBlLCB0cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQg
Y3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBhdGhOYW1l
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhC
YXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgcmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKLXsKLSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU1Db250ZXh0QU5HTEUoY3R4LCBudW1QYXRoLCBwYXRoTmFtZVR5cGUsIHBhdGhz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXRoQmFzZSwgcmVmZXJlbmNlLCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlLCB0
cmFuc2Zvcm1WYWx1ZXMpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
aWxsTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCi17Ci0gICAgcmV0dXJu
IGdsOjpTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRShjdHgsIG51
bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJhc2UsIGZpbGxNb2RlLCBtYXNr
LCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElF
TlRSWQotZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRB
TkdMRShHTGVnbENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBhdGhzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcGF0aE5hbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpwYXRocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHBhdGhCYXNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBtYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQotewotICAgIHJldHVybiBnbDo6U3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoCi0gICAgICAgIGN0
eCwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCBmaWxsTW9kZSwgbWFz
aywgY292ZXJNb2RlLCB0cmFuc2Zvcm1UeXBlLAotICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMpOwot
fQotCi12b2lkIEdMX0FQSUVOVFJZCi1nbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bVBh
dGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGF0aHMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHBhdGhCYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9y
bVZhbHVlcykKLXsKLSAgICByZXR1cm4gZ2w6OlN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUoCi0gICAgICAgIGN0eCwgbnVtUGF0aHMsIHBhdGhO
YW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlLCByZWZlcmVuY2UsIG1hc2ssIGNvdmVyTW9kZSwgdHJh
bnNmb3JtVHlwZSwKLSAgICAgICAgdHJhbnNmb3JtVmFsdWVzKTsKLX0KLQotdm9pZCBHTF9BUElF
TlRSWSBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpCi17Ci0gICAgcmV0dXJuIGdsOjpC
aW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUoY3R4LCBwcm9ncmFt
cywgbG9jYXRpb24sIG5hbWUpOwotfQotCi12b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuQ0hST01JVU1Db250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0IGN0eCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZ2VuTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKLXsKLSAgICByZXR1cm4gZ2w6OlByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNQ29udGV4dEFOR0xFKGN0eCwgcHJvZ3JhbSwgbG9jYXRp
b24sIGdlbk1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLCBjb2VmZnMpOwotfQotCiB2b2lkIEdMX0FQ
SUVOVFJZIGdsQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdMRShHTGVnbENvbnRleHQgY3R4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCkBAIC0xMDgxOCw0ICsxMDYwNywyMSBAQCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdMRUNvbnRleHRBTkdMRShHTGVn
bENvbnRleHQgY3R4LAogICAgIHJldHVybiBnbDo6R2V0UmVuZGVyYnVmZmVySW1hZ2VBTkdMRUNv
bnRleHRBTkdMRShjdHgsIHRhcmdldCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogCit2b2lk
IEdMX0FQSUVOVFJZIGdsSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUo
R0xlZ2xDb250ZXh0IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWVtb3J5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0IHNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGhhbmRsZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkKK3sKKyAgICByZXR1
cm4gZ2w6OkltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFKGN0eCwgbWVt
b3J5LCBzaXplLCBoYW5kbGVUeXBlLCBoYW5kbGUpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGds
SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUoR0xlZ2xDb250ZXh0
IGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc2VtYXBob3JlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBoYW5kbGVUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBoYW5kbGUpCit7CisgICAgcmV0dXJuIGdsOjpJbXBvcnRTZW1hcGhv
cmVaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRShjdHgsIHNlbWFwaG9yZSwgaGFuZGxlVHlw
ZSwgaGFuZGxlKTsKK30KKwogfSAgLy8gZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfYXV0b2dlbi5kZWYgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmRlZgpp
bmRleCA4MTllODM3ZmEwOGY1MzIyOTYxODUzMWRjOGFkZGI2ZmE0NmIyMTBjLi4yMzRkM2FhNmI2
ZjIwMTQ1ZWNjNDBjNjU2ODVkNGE1NGQ5MjFkMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmRlZgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9hdXRvZ2VuLmRlZgpA
QCAtNDg1LDYgKzQ4NSw5IEBAIEVYUE9SVFMKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFCiAgICAgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUKIAorICAgIDsgR0xfQU5HTEVfbWVt
b3J5X29iamVjdF9mdWNoc2lhCisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRQor
CiAgICAgOyBHTF9BTkdMRV9tdWx0aV9kcmF3CiAgICAgZ2xNdWx0aURyYXdBcnJheXNBTkdMRQog
ICAgIGdsTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUKQEAgLTU2Niw2ICs1NjksOSBAQCBF
WFBPUlRTCiAgICAgZ2xUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUKICAgICBnbFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRQogCisgICAgOyBHTF9BTkdMRV9zZW1hcGhvcmVfZnVjaHNpYQorICAgIGds
SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUKKwogICAgIDsgR0xfQU5HTEVfdGV4dHVy
ZV9leHRlcm5hbF91cGRhdGUKICAgICBnbEludmFsaWRhdGVUZXh0dXJlQU5HTEUKICAgICBnbFRl
eEltYWdlMkRFeHRlcm5hbEFOR0xFCkBAIC01OTIsMzcgKzU5OCwxMCBAQCBFWFBPUlRTCiAKICAg
ICA7IEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMKICAgICBnbENvdmVyYWdl
TW9kdWxhdGlvbkNIUk9NSVVNCi0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTQotICAg
IGdsTWF0cml4TG9hZGZDSFJPTUlVTQogCiAgICAgOyBHTF9DSFJPTUlVTV9sb3NlX2NvbnRleHQK
ICAgICBnbExvc2VDb250ZXh0Q0hST01JVU0KIAotICAgIDsgR0xfQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTQotICAgIGdsQ292
ZXJGaWxsUGF0aENIUk9NSVVNCi0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0K
LSAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTQotICAgIGdsR2VuUGF0aHND
SFJPTUlVTQotICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0KLSAgICBnbEdldFBhdGhQ
YXJhbWV0ZXJpdkNIUk9NSVVNCi0gICAgZ2xJc1BhdGhDSFJPTUlVTQotICAgIGdsUGF0aENvbW1h
bmRzQ0hST01JVU0KLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0KLSAgICBnbFBhdGhQYXJh
bWV0ZXJpQ0hST01JVU0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNCi0gICAgZ2xQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTQotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hS
T01JVU0KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNCi0gICAgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENI
Uk9NSVVNCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTQotICAgIGdsU3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVu
Q292ZXJTdHJva2VQYXRoQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0KLQogICAgIDsgR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQKICAg
ICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbklu
ZGV4ZWRFWFQKQEAgLTY0Miw2ICs2MjEsNyBAQCBFWFBPUlRTCiAgICAgZ2xEZWxldGVRdWVyaWVz
RVhUCiAgICAgZ2xFbmRRdWVyeUVYVAogICAgIGdsR2VuUXVlcmllc0VYVAorICAgIGdsR2V0SW50
ZWdlcjY0dkVYVAogICAgIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUCiAgICAgZ2xHZXRRdWVyeU9i
amVjdGl2RVhUCiAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUCkBAIC02NTMsNiArNjMzLDE2
IEBAIEVYUE9SVFMKICAgICA7IEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICBnbERyYXdCdWZmZXJz
RVhUCiAKKyAgICA7IEdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhlZAorICAgIGdsQmxlbmRFcXVh
dGlvblNlcGFyYXRlaUVYVAorICAgIGdsQmxlbmRFcXVhdGlvbmlFWFQKKyAgICBnbEJsZW5kRnVu
Y1NlcGFyYXRlaUVYVAorICAgIGdsQmxlbmRGdW5jaUVYVAorICAgIGdsQ29sb3JNYXNraUVYVAor
ICAgIGdsRGlzYWJsZWlFWFQKKyAgICBnbEVuYWJsZWlFWFQKKyAgICBnbElzRW5hYmxlZGlFWFQK
KwogICAgIDsgR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKICAgICBnbERyYXdFbGVt
ZW50c0Jhc2VWZXJ0ZXhFWFQKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhF
WFQKQEAgLTcyMCw2ICs3MTAsOCBAQCBFWFBPUlRTCiAKICAgICA7IEdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX2R4dDEKIAorICAgIDsgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fcmd0Ywor
CiAgICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKICAgICA7IEdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtNzY2LDYgKzc1OCwxNiBAQCBFWFBPUlRT
CiAKICAgICA7IEdMX09FU19kZXB0aDMyCiAKKyAgICA7IEdMX09FU19kcmF3X2J1ZmZlcnNfaW5k
ZXhlZAorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUworICAgIGdsQmxlbmRFcXVhdGlv
bmlPRVMKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUworICAgIGdsQmxlbmRGdW5jaU9FUwor
ICAgIGdsQ29sb3JNYXNraU9FUworICAgIGdsRGlzYWJsZWlPRVMKKyAgICBnbEVuYWJsZWlPRVMK
KyAgICBnbElzRW5hYmxlZGlPRVMKKwogICAgIDsgR0xfT0VTX2RyYXdfZWxlbWVudHNfYmFzZV92
ZXJ0ZXgKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMKICAgICBnbERyYXdFbGVtZW50
c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMKQEAgLTg3OSw3ICs4ODEsNiBAQCBFWFBPUlRTCiAgICAg
Z2xCaW5kQnVmZmVyUmFuZ2VDb250ZXh0QU5HTEUKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9u
RVhUQ29udGV4dEFOR0xFCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFRDb250
ZXh0QU5HTEUKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRleHRB
TkdMRQogICAgIGdsQmluZEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJPRVNDb250ZXh0QU5HTEUKICAgICBnbEJpbmRJbWFnZVRleHR1cmVDb250ZXh0QU5HTEUK
QEAgLTg5OCwxMSArODk5LDE5IEBAIEVYUE9SVFMKICAgICBnbEJsZW5kRXF1YXRpb25Db250ZXh0
QU5HTEUKICAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZUNvbnRleHRBTkdMRQogICAgIGdsQmxl
bmRFcXVhdGlvblNlcGFyYXRlaUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFy
YXRlaUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FU0NvbnRl
eHRBTkdMRQogICAgIGdsQmxlbmRFcXVhdGlvbmlDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRXF1
YXRpb25pRVhUQ29udGV4dEFOR0xFCisgICAgZ2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdM
RQogICAgIGdsQmxlbmRGdW5jQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZUNv
bnRleHRBTkdMRQogICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpQ29udGV4dEFOR0xFCisgICAgZ2xC
bGVuZEZ1bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRl
aU9FU0NvbnRleHRBTkdMRQogICAgIGdsQmxlbmRGdW5jaUNvbnRleHRBTkdMRQorICAgIGdsQmxl
bmRGdW5jaUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRGdW5jaU9FU0NvbnRleHRBTkdMRQog
ICAgIGdsQmxpdEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAgZ2xCbGl0RnJhbWVidWZmZXJB
TkdMRUNvbnRleHRBTkdMRQogICAgIGdsQnVmZmVyRGF0YUNvbnRleHRBTkdMRQpAQCAtOTI5LDYg
KzkzOCw4IEBAIEVYUE9SVFMKICAgICBnbENvbG9yNHhDb250ZXh0QU5HTEUKICAgICBnbENvbG9y
TWFza0NvbnRleHRBTkdMRQogICAgIGdsQ29sb3JNYXNraUNvbnRleHRBTkdMRQorICAgIGdsQ29s
b3JNYXNraUVYVENvbnRleHRBTkdMRQorICAgIGdsQ29sb3JNYXNraU9FU0NvbnRleHRBTkdMRQog
ICAgIGdsQ29sb3JQb2ludGVyQ29udGV4dEFOR0xFCiAgICAgZ2xDb21waWxlU2hhZGVyQ29udGV4
dEFOR0xFCiAgICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdMRQpA
QCAtOTUyLDEwICs5NjMsNiBAQCBFWFBPUlRTCiAgICAgZ2xDb3B5VGV4U3ViSW1hZ2UzRE9FU0Nv
bnRleHRBTkdMRQogICAgIGdsQ29weVRleHR1cmUzREFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xD
b3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01J
VU1Db250ZXh0QU5HTEUKLSAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRl
eHRBTkdMRQotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBn
bENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xDb3Zl
cmFnZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsQ3JlYXRlTWVtb3J5T2Jq
ZWN0c0VYVENvbnRleHRBTkdMRQogICAgIGdsQ3JlYXRlUHJvZ3JhbUNvbnRleHRBTkdMRQpAQCAt
OTc0LDcgKzk4MSw2IEBAIEVYUE9SVFMKICAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc0NvbnRleHRB
TkdMRQogICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxl
dGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVN
Q29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVQcm9ncmFtQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxl
dGVQcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVRdWVyaWVzQ29udGV4
dEFOR0xFCkBAIC05OTksNiArMTAwNSw4IEBAIEVYUE9SVFMKICAgICBnbERpc2FibGVFeHRlbnNp
b25BTkdMRUNvbnRleHRBTkdMRQogICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5Q29udGV4
dEFOR0xFCiAgICAgZ2xEaXNhYmxlaUNvbnRleHRBTkdMRQorICAgIGdsRGlzYWJsZWlFWFRDb250
ZXh0QU5HTEUKKyAgICBnbERpc2FibGVpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xEaXNjYXJkRnJh
bWVidWZmZXJFWFRDb250ZXh0QU5HTEUKICAgICBnbERpc3BhdGNoQ29tcHV0ZUNvbnRleHRBTkdM
RQogICAgIGdsRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3RDb250ZXh0QU5HTEUKQEAgLTEwNDAsNiAr
MTA0OCw4IEBAIEVYUE9SVFMKICAgICBnbEVuYWJsZUNsaWVudFN0YXRlQ29udGV4dEFOR0xFCiAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRQogICAgIGdsRW5hYmxlaUNv
bnRleHRBTkdMRQorICAgIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRQorICAgIGdsRW5hYmxlaU9F
U0NvbnRleHRBTkdMRQogICAgIGdsRW5kUXVlcnlDb250ZXh0QU5HTEUKICAgICBnbEVuZFF1ZXJ5
RVhUQ29udGV4dEFOR0xFCiAgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRQpA
QCAtMTA3MSw3ICsxMDgxLDYgQEAgRVhQT1JUUwogICAgIGdsR2VuRmVuY2VzTlZDb250ZXh0QU5H
TEUKICAgICBnbEdlbkZyYW1lYnVmZmVyc0NvbnRleHRBTkdMRQogICAgIGdsR2VuRnJhbWVidWZm
ZXJzT0VTQ29udGV4dEFOR0xFCi0gICAgZ2xHZW5QYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFCiAg
ICAgZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFCiAgICAgZ2xHZW5RdWVyaWVzQ29u
dGV4dEFOR0xFCiAgICAgZ2xHZW5RdWVyaWVzRVhUQ29udGV4dEFOR0xFCkBAIC0xMTI1LDYgKzEx
MzQsNyBAQCBFWFBPUlRTCiAgICAgZ2xHZXRJbnRlZ2VyNjRpX3ZDb250ZXh0QU5HTEUKICAgICBn
bEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2Vy
NjR2Q29udGV4dEFOR0xFCisgICAgZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4dEFOR0xFCiAgICAg
Z2xHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXJp
X3ZDb250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRUNvbnRleHRBTkdM
RQpAQCAtMTE0NCw4ICsxMTU0LDYgQEAgRVhQT1JUUwogICAgIGdsR2V0T2JqZWN0TGFiZWxLSFJD
b250ZXh0QU5HTEUKICAgICBnbEdldE9iamVjdFB0ckxhYmVsQ29udGV4dEFOR0xFCiAgICAgZ2xH
ZXRPYmplY3RQdHJMYWJlbEtIUkNvbnRleHRBTkdMRQotICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2
Q0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNQ29u
dGV4dEFOR0xFCiAgICAgZ2xHZXRQb2ludGVydkNvbnRleHRBTkdMRQogICAgIGdsR2V0UG9pbnRl
cnZLSFJDb250ZXh0QU5HTEUKICAgICBnbEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRQpAQCAtMTI1NSw3ICsxMjYzLDkgQEAgRVhQT1JUUwogICAgIGdsR2V0blVu
aWZvcm11aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRQogICAgIGdsSGludENvbnRleHRBTkdMRQog
ICAgIGdsSW1wb3J0TWVtb3J5RmRFWFRDb250ZXh0QU5HTEUKKyAgICBnbEltcG9ydE1lbW9yeVpp
cmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xJbXBvcnRTZW1hcGhvcmVGZEVYVENv
bnRleHRBTkdMRQorICAgIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0
QU5HTEUKICAgICBnbEluc2VydEV2ZW50TWFya2VyRVhUQ29udGV4dEFOR0xFCiAgICAgZ2xJbnZh
bGlkYXRlRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKICAgICBnbEludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlckNvbnRleHRBTkdMRQpAQCAtMTI2MywxMSArMTI3MywxMiBAQCBFWFBPUlRTCiAgICAgZ2xJ
c0J1ZmZlckNvbnRleHRBTkdMRQogICAgIGdsSXNFbmFibGVkQ29udGV4dEFOR0xFCiAgICAgZ2xJ
c0VuYWJsZWRpQ29udGV4dEFOR0xFCisgICAgZ2xJc0VuYWJsZWRpRVhUQ29udGV4dEFOR0xFCisg
ICAgZ2xJc0VuYWJsZWRpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xJc0ZlbmNlTlZDb250ZXh0QU5H
TEUKICAgICBnbElzRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKICAgICBnbElzRnJhbWVidWZmZXJP
RVNDb250ZXh0QU5HTEUKICAgICBnbElzTWVtb3J5T2JqZWN0RVhUQ29udGV4dEFOR0xFCi0gICAg
Z2xJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsSXNQcm9ncmFtQ29udGV4dEFOR0xF
CiAgICAgZ2xJc1Byb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRQogICAgIGdsSXNRdWVyeUNvbnRl
eHRBTkdMRQpAQCAtMTMwNyw4ICsxMzE4LDYgQEAgRVhQT1JUUwogICAgIGdsTWF0ZXJpYWx4Q29u
dGV4dEFOR0xFCiAgICAgZ2xNYXRlcmlhbHh2Q29udGV4dEFOR0xFCiAgICAgZ2xNYXRyaXhJbmRl
eFBvaW50ZXJPRVNDb250ZXh0QU5HTEUKLSAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
Q29udGV4dEFOR0xFCi0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAg
Z2xNYXRyaXhNb2RlQ29udGV4dEFOR0xFCiAgICAgZ2xNYXhTaGFkZXJDb21waWxlclRocmVhZHNL
SFJDb250ZXh0QU5HTEUKICAgICBnbE1lbW9yeUJhcnJpZXJDb250ZXh0QU5HTEUKQEAgLTEzMzYs
MTAgKzEzNDUsNiBAQCBFWFBPUlRTCiAgICAgZ2xPcnRob2ZDb250ZXh0QU5HTEUKICAgICBnbE9y
dGhveENvbnRleHRBTkdMRQogICAgIGdsUGF0Y2hQYXJhbWV0ZXJpQ29udGV4dEFOR0xFCi0gICAg
Z2xQYXRoQ29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0aFBhcmFtZXRlcmZD
SFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTUNvbnRleHRB
TkdMRQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbFBh
dXNlVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUKICAgICBnbFBpeGVsU3RvcmVpQ29udGV4
dEFOR0xFCiAgICAgZ2xQb2ludFBhcmFtZXRlcmZDb250ZXh0QU5HTEUKQEAgLTEzNTksNyArMTM2
NCw2IEBAIEVYUE9SVFMKICAgICBnbFByb2dyYW1CaW5hcnlDb250ZXh0QU5HTEUKICAgICBnbFBy
b2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1QYXJhbWV0ZXJpQ29udGV4
dEFOR0xFCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRB
TkdMRQogICAgIGdsUHJvZ3JhbVVuaWZvcm0xZkNvbnRleHRBTkdMRQogICAgIGdsUHJvZ3JhbVVu
aWZvcm0xZnZDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1Vbmlmb3JtMWlDb250ZXh0QU5HTEUK
QEAgLTE0NDEsMjAgKzE0NDUsMTIgQEAgRVhQT1JUUwogICAgIGdsU2hhZGVyQmluYXJ5Q29udGV4
dEFOR0xFCiAgICAgZ2xTaGFkZXJTb3VyY2VDb250ZXh0QU5HTEUKICAgICBnbFNpZ25hbFNlbWFw
aG9yZUVYVENvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0
QU5HTEUKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xF
CiAgICAgZ2xTdGVuY2lsRnVuY0NvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0
ZUNvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbE1hc2tDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5j
aWxNYXNrU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxPcENvbnRleHRBTkdMRQog
ICAgIGdsU3RlbmNpbE9wU2VwYXJhdGVDb250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxTdHJva2VQ
YXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9N
SVVNQ29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJP
TUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsVGVzdEZlbmNlTlZDb250ZXh0QU5HTEUKICAg
ICBnbFRleEJ1ZmZlckNvbnRleHRBTkdMRQogICAgIGdsVGV4QnVmZmVyUmFuZ2VDb250ZXh0QU5H
TEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyX25vX2NhcHR1cmVfYXV0b2dlbi5kZWYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Ml9ub19jYXB0dXJlX2F1dG9nZW4uZGVmCmluZGV4IDZjNDE2
MmM1MDNiYjlhYjNjNTkzNjEwMzcxNGFmOTFlYzU4ZWQxYjQuLmVmZDM4NzVmNmNlMTdkMmU1MGM3
ZDYyMTI5ZDExNzMxYjYzZTllZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvbGliR0xFU3YyX25vX2NhcHR1cmVfYXV0b2dlbi5kZWYKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjJfbm9fY2FwdHVyZV9h
dXRvZ2VuLmRlZgpAQCAtNDg1LDYgKzQ4NSw5IEBAIEVYUE9SVFMKICAgICBnbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFCiAgICAgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUKIAorICAgIDsg
R0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhCisgICAgZ2xJbXBvcnRNZW1vcnlaaXJjb25I
YW5kbGVBTkdMRQorCiAgICAgOyBHTF9BTkdMRV9tdWx0aV9kcmF3CiAgICAgZ2xNdWx0aURyYXdB
cnJheXNBTkdMRQogICAgIGdsTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUKQEAgLTU2Niw2
ICs1NjksOSBAQCBFWFBPUlRTCiAgICAgZ2xUZXhTdWJJbWFnZTJEUm9idXN0QU5HTEUKICAgICBn
bFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRQogCisgICAgOyBHTF9BTkdMRV9zZW1hcGhvcmVfZnVj
aHNpYQorICAgIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEUKKwogICAgIDsgR0xf
QU5HTEVfdGV4dHVyZV9leHRlcm5hbF91cGRhdGUKICAgICBnbEludmFsaWRhdGVUZXh0dXJlQU5H
TEUKICAgICBnbFRleEltYWdlMkRFeHRlcm5hbEFOR0xFCkBAIC01OTIsMzcgKzU5OCwxMCBAQCBF
WFBPUlRTCiAKICAgICA7IEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMKICAg
ICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNCi0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlD
SFJPTUlVTQotICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTQogCiAgICAgOyBHTF9DSFJPTUlVTV9s
b3NlX2NvbnRleHQKICAgICBnbExvc2VDb250ZXh0Q0hST01JVU0KIAotICAgIDsgR0xfQ0hST01J
VU1fcGF0aF9yZW5kZXJpbmcKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TQotICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNCi0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0KLSAgICBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xDb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTQotICAg
IGdsR2VuUGF0aHNDSFJPTUlVTQotICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0KLSAg
ICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNCi0gICAgZ2xJc1BhdGhDSFJPTUlVTQotICAg
IGdsUGF0aENvbW1hbmRzQ0hST01JVU0KLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0KLSAg
ICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVN
Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTQotICAgIGdsU3RlbmNp
bEZpbGxQYXRoQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVN
Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlV
TQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBn
bFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVuQ292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0KLQogICAgIDsgR0xfRVhUX2JsZW5kX2Z1bmNf
ZXh0ZW5kZWQKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUCiAgICAgZ2xCaW5kRnJhZ0Rh
dGFMb2NhdGlvbkluZGV4ZWRFWFQKQEAgLTY0Miw2ICs2MjEsNyBAQCBFWFBPUlRTCiAgICAgZ2xE
ZWxldGVRdWVyaWVzRVhUCiAgICAgZ2xFbmRRdWVyeUVYVAogICAgIGdsR2VuUXVlcmllc0VYVAor
ICAgIGdsR2V0SW50ZWdlcjY0dkVYVAogICAgIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUCiAgICAg
Z2xHZXRRdWVyeU9iamVjdGl2RVhUCiAgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUCkBAIC02
NTMsNiArNjMzLDE2IEBAIEVYUE9SVFMKICAgICA7IEdMX0VYVF9kcmF3X2J1ZmZlcnMKICAgICBn
bERyYXdCdWZmZXJzRVhUCiAKKyAgICA7IEdMX0VYVF9kcmF3X2J1ZmZlcnNfaW5kZXhlZAorICAg
IGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVAorICAgIGdsQmxlbmRFcXVhdGlvbmlFWFQKKyAg
ICBnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVAorICAgIGdsQmxlbmRGdW5jaUVYVAorICAgIGdsQ29s
b3JNYXNraUVYVAorICAgIGdsRGlzYWJsZWlFWFQKKyAgICBnbEVuYWJsZWlFWFQKKyAgICBnbElz
RW5hYmxlZGlFWFQKKwogICAgIDsgR0xfRVhUX2RyYXdfZWxlbWVudHNfYmFzZV92ZXJ0ZXgKICAg
ICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNl
ZEJhc2VWZXJ0ZXhFWFQKQEAgLTcyMCw2ICs3MTAsOCBAQCBFWFBPUlRTCiAKICAgICA7IEdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKIAorICAgIDsgR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fcmd0YworCiAgICAgOyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCiAKICAg
ICA7IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYgpAQCAtNzY2LDYgKzc1OCwx
NiBAQCBFWFBPUlRTCiAKICAgICA7IEdMX09FU19kZXB0aDMyCiAKKyAgICA7IEdMX09FU19kcmF3
X2J1ZmZlcnNfaW5kZXhlZAorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUworICAgIGds
QmxlbmRFcXVhdGlvbmlPRVMKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUworICAgIGdsQmxl
bmRGdW5jaU9FUworICAgIGdsQ29sb3JNYXNraU9FUworICAgIGdsRGlzYWJsZWlPRVMKKyAgICBn
bEVuYWJsZWlPRVMKKyAgICBnbElzRW5hYmxlZGlPRVMKKwogICAgIDsgR0xfT0VTX2RyYXdfZWxl
bWVudHNfYmFzZV92ZXJ0ZXgKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMKICAgICBn
bERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMKQEAgLTg3OSw3ICs4ODEsNiBAQCBF
WFBPUlRTCiAgICAgZ2xCaW5kQnVmZmVyUmFuZ2VDb250ZXh0QU5HTEUKICAgICBnbEJpbmRGcmFn
RGF0YUxvY2F0aW9uRVhUQ29udGV4dEFOR0xFCiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbklu
ZGV4ZWRFWFRDb250ZXh0QU5HTEUKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJP
TUlVTUNvbnRleHRBTkdMRQogICAgIGdsQmluZEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAg
Z2xCaW5kRnJhbWVidWZmZXJPRVNDb250ZXh0QU5HTEUKICAgICBnbEJpbmRJbWFnZVRleHR1cmVD
b250ZXh0QU5HTEUKQEAgLTg5OCwxMSArODk5LDE5IEBAIEVYUE9SVFMKICAgICBnbEJsZW5kRXF1
YXRpb25Db250ZXh0QU5HTEUKICAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZUNvbnRleHRBTkdM
RQogICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRF
cXVhdGlvblNlcGFyYXRlaUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRFcXVhdGlvblNlcGFy
YXRlaU9FU0NvbnRleHRBTkdMRQogICAgIGdsQmxlbmRFcXVhdGlvbmlDb250ZXh0QU5HTEUKKyAg
ICBnbEJsZW5kRXF1YXRpb25pRVhUQ29udGV4dEFOR0xFCisgICAgZ2xCbGVuZEVxdWF0aW9uaU9F
U0NvbnRleHRBTkdMRQogICAgIGdsQmxlbmRGdW5jQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZUNvbnRleHRBTkdMRQogICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpQ29udGV4dEFO
R0xFCisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5k
RnVuY1NlcGFyYXRlaU9FU0NvbnRleHRBTkdMRQogICAgIGdsQmxlbmRGdW5jaUNvbnRleHRBTkdM
RQorICAgIGdsQmxlbmRGdW5jaUVYVENvbnRleHRBTkdMRQorICAgIGdsQmxlbmRGdW5jaU9FU0Nv
bnRleHRBTkdMRQogICAgIGdsQmxpdEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCiAgICAgZ2xCbGl0
RnJhbWVidWZmZXJBTkdMRUNvbnRleHRBTkdMRQogICAgIGdsQnVmZmVyRGF0YUNvbnRleHRBTkdM
RQpAQCAtOTI5LDYgKzkzOCw4IEBAIEVYUE9SVFMKICAgICBnbENvbG9yNHhDb250ZXh0QU5HTEUK
ICAgICBnbENvbG9yTWFza0NvbnRleHRBTkdMRQogICAgIGdsQ29sb3JNYXNraUNvbnRleHRBTkdM
RQorICAgIGdsQ29sb3JNYXNraUVYVENvbnRleHRBTkdMRQorICAgIGdsQ29sb3JNYXNraU9FU0Nv
bnRleHRBTkdMRQogICAgIGdsQ29sb3JQb2ludGVyQ29udGV4dEFOR0xFCiAgICAgZ2xDb21waWxl
U2hhZGVyQ29udGV4dEFOR0xFCiAgICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTUNv
bnRleHRBTkdMRQpAQCAtOTUyLDEwICs5NjMsNiBAQCBFWFBPUlRTCiAgICAgZ2xDb3B5VGV4U3Vi
SW1hZ2UzRE9FU0NvbnRleHRBTkdMRQogICAgIGdsQ29weVRleHR1cmUzREFOR0xFQ29udGV4dEFO
R0xFCiAgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlckZp
bGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0
QU5HTEUKLSAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xF
CiAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsQ3Jl
YXRlTWVtb3J5T2JqZWN0c0VYVENvbnRleHRBTkdMRQogICAgIGdsQ3JlYXRlUHJvZ3JhbUNvbnRl
eHRBTkdMRQpAQCAtOTc0LDcgKzk4MSw2IEBAIEVYUE9SVFMKICAgICBnbERlbGV0ZUZyYW1lYnVm
ZmVyc0NvbnRleHRBTkdMRQogICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzT0VTQ29udGV4dEFOR0xF
CiAgICAgZ2xEZWxldGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFCi0gICAgZ2xEZWxldGVQ
YXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVQcm9ncmFtQ29udGV4dEFOR0xF
CiAgICAgZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVR
dWVyaWVzQ29udGV4dEFOR0xFCkBAIC05OTksNiArMTAwNSw4IEBAIEVYUE9SVFMKICAgICBnbERp
c2FibGVFeHRlbnNpb25BTkdMRUNvbnRleHRBTkdMRQogICAgIGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5Q29udGV4dEFOR0xFCiAgICAgZ2xEaXNhYmxlaUNvbnRleHRBTkdMRQorICAgIGdsRGlz
YWJsZWlFWFRDb250ZXh0QU5HTEUKKyAgICBnbERpc2FibGVpT0VTQ29udGV4dEFOR0xFCiAgICAg
Z2xEaXNjYXJkRnJhbWVidWZmZXJFWFRDb250ZXh0QU5HTEUKICAgICBnbERpc3BhdGNoQ29tcHV0
ZUNvbnRleHRBTkdMRQogICAgIGdsRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3RDb250ZXh0QU5HTEUK
QEAgLTEwNDAsNiArMTA0OCw4IEBAIEVYUE9SVFMKICAgICBnbEVuYWJsZUNsaWVudFN0YXRlQ29u
dGV4dEFOR0xFCiAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRQogICAg
IGdsRW5hYmxlaUNvbnRleHRBTkdMRQorICAgIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRQorICAg
IGdsRW5hYmxlaU9FU0NvbnRleHRBTkdMRQogICAgIGdsRW5kUXVlcnlDb250ZXh0QU5HTEUKICAg
ICBnbEVuZFF1ZXJ5RVhUQ29udGV4dEFOR0xFCiAgICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFja0Nv
bnRleHRBTkdMRQpAQCAtMTA3MSw3ICsxMDgxLDYgQEAgRVhQT1JUUwogICAgIGdsR2VuRmVuY2Vz
TlZDb250ZXh0QU5HTEUKICAgICBnbEdlbkZyYW1lYnVmZmVyc0NvbnRleHRBTkdMRQogICAgIGds
R2VuRnJhbWVidWZmZXJzT0VTQ29udGV4dEFOR0xFCi0gICAgZ2xHZW5QYXRoc0NIUk9NSVVNQ29u
dGV4dEFOR0xFCiAgICAgZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFCiAgICAgZ2xH
ZW5RdWVyaWVzQ29udGV4dEFOR0xFCiAgICAgZ2xHZW5RdWVyaWVzRVhUQ29udGV4dEFOR0xFCkBA
IC0xMTI1LDYgKzExMzQsNyBAQCBFWFBPUlRTCiAgICAgZ2xHZXRJbnRlZ2VyNjRpX3ZDb250ZXh0
QU5HTEUKICAgICBnbEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFCiAgICAg
Z2xHZXRJbnRlZ2VyNjR2Q29udGV4dEFOR0xFCisgICAgZ2xHZXRJbnRlZ2VyNjR2RVhUQ29udGV4
dEFOR0xFCiAgICAgZ2xHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEVDb250ZXh0QU5HTEUKICAgICBn
bEdldEludGVnZXJpX3ZDb250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRQpAQCAtMTE0NCw4ICsxMTU0LDYgQEAgRVhQT1JUUwogICAgIGdsR2V0T2Jq
ZWN0TGFiZWxLSFJDb250ZXh0QU5HTEUKICAgICBnbEdldE9iamVjdFB0ckxhYmVsQ29udGV4dEFO
R0xFCiAgICAgZ2xHZXRPYmplY3RQdHJMYWJlbEtIUkNvbnRleHRBTkdMRQotICAgIGdsR2V0UGF0
aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJp
dkNIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xHZXRQb2ludGVydkNvbnRleHRBTkdMRQogICAg
IGdsR2V0UG9pbnRlcnZLSFJDb250ZXh0QU5HTEUKICAgICBnbEdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRUNvbnRleHRBTkdMRQpAQCAtMTI1NSw3ICsxMjYzLDkgQEAgRVhQT1JUUwog
ICAgIGdsR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRUNvbnRleHRBTkdMRQogICAgIGdsSGludENv
bnRleHRBTkdMRQogICAgIGdsSW1wb3J0TWVtb3J5RmRFWFRDb250ZXh0QU5HTEUKKyAgICBnbElt
cG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xJbXBvcnRTZW1h
cGhvcmVGZEVYVENvbnRleHRBTkdMRQorICAgIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxl
QU5HTEVDb250ZXh0QU5HTEUKICAgICBnbEluc2VydEV2ZW50TWFya2VyRVhUQ29udGV4dEFOR0xF
CiAgICAgZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKICAgICBnbEludmFsaWRh
dGVTdWJGcmFtZWJ1ZmZlckNvbnRleHRBTkdMRQpAQCAtMTI2MywxMSArMTI3MywxMiBAQCBFWFBP
UlRTCiAgICAgZ2xJc0J1ZmZlckNvbnRleHRBTkdMRQogICAgIGdsSXNFbmFibGVkQ29udGV4dEFO
R0xFCiAgICAgZ2xJc0VuYWJsZWRpQ29udGV4dEFOR0xFCisgICAgZ2xJc0VuYWJsZWRpRVhUQ29u
dGV4dEFOR0xFCisgICAgZ2xJc0VuYWJsZWRpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xJc0ZlbmNl
TlZDb250ZXh0QU5HTEUKICAgICBnbElzRnJhbWVidWZmZXJDb250ZXh0QU5HTEUKICAgICBnbElz
RnJhbWVidWZmZXJPRVNDb250ZXh0QU5HTEUKICAgICBnbElzTWVtb3J5T2JqZWN0RVhUQ29udGV4
dEFOR0xFCi0gICAgZ2xJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsSXNQcm9ncmFt
Q29udGV4dEFOR0xFCiAgICAgZ2xJc1Byb2dyYW1QaXBlbGluZUNvbnRleHRBTkdMRQogICAgIGds
SXNRdWVyeUNvbnRleHRBTkdMRQpAQCAtMTMwNyw4ICsxMzE4LDYgQEAgRVhQT1JUUwogICAgIGds
TWF0ZXJpYWx4Q29udGV4dEFOR0xFCiAgICAgZ2xNYXRlcmlhbHh2Q29udGV4dEFOR0xFCiAgICAg
Z2xNYXRyaXhJbmRleFBvaW50ZXJPRVNDb250ZXh0QU5HTEUKLSAgICBnbE1hdHJpeExvYWRJZGVu
dGl0eUNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4
dEFOR0xFCiAgICAgZ2xNYXRyaXhNb2RlQ29udGV4dEFOR0xFCiAgICAgZ2xNYXhTaGFkZXJDb21w
aWxlclRocmVhZHNLSFJDb250ZXh0QU5HTEUKICAgICBnbE1lbW9yeUJhcnJpZXJDb250ZXh0QU5H
TEUKQEAgLTEzMzYsMTAgKzEzNDUsNiBAQCBFWFBPUlRTCiAgICAgZ2xPcnRob2ZDb250ZXh0QU5H
TEUKICAgICBnbE9ydGhveENvbnRleHRBTkdMRQogICAgIGdsUGF0Y2hQYXJhbWV0ZXJpQ29udGV4
dEFOR0xFCi0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0
aFBhcmFtZXRlcmZDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJP
TUlVTUNvbnRleHRBTkdMRQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5H
TEUKICAgICBnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2tDb250ZXh0QU5HTEUKICAgICBnbFBpeGVs
U3RvcmVpQ29udGV4dEFOR0xFCiAgICAgZ2xQb2ludFBhcmFtZXRlcmZDb250ZXh0QU5HTEUKQEAg
LTEzNTksNyArMTM2NCw2IEBAIEVYUE9SVFMKICAgICBnbFByb2dyYW1CaW5hcnlDb250ZXh0QU5H
TEUKICAgICBnbFByb2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1QYXJh
bWV0ZXJpQ29udGV4dEFOR0xFCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJP
TUlVTUNvbnRleHRBTkdMRQogICAgIGdsUHJvZ3JhbVVuaWZvcm0xZkNvbnRleHRBTkdMRQogICAg
IGdsUHJvZ3JhbVVuaWZvcm0xZnZDb250ZXh0QU5HTEUKICAgICBnbFByb2dyYW1Vbmlmb3JtMWlD
b250ZXh0QU5HTEUKQEAgLTE0NDEsMjAgKzE0NDUsMTIgQEAgRVhQT1JUUwogICAgIGdsU2hhZGVy
QmluYXJ5Q29udGV4dEFOR0xFCiAgICAgZ2xTaGFkZXJTb3VyY2VDb250ZXh0QU5HTEUKICAgICBn
bFNpZ25hbFNlbWFwaG9yZUVYVENvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVN
Q29udGV4dEFOR0xFCiAgICAgZ2xTdGVuY2lsRnVuY0NvbnRleHRBTkdMRQogICAgIGdsU3RlbmNp
bEZ1bmNTZXBhcmF0ZUNvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbE1hc2tDb250ZXh0QU5HTEUK
ICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVDb250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxPcENv
bnRleHRBTkdMRQogICAgIGdsU3RlbmNpbE9wU2VwYXJhdGVDb250ZXh0QU5HTEUKLSAgICBnbFN0
ZW5jaWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9r
ZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsVGVzdEZlbmNlTlZDb250
ZXh0QU5HTEUKICAgICBnbFRleEJ1ZmZlckNvbnRleHRBTkdMRQogICAgIGdsVGV4QnVmZmVyUmFu
Z2VDb250ZXh0QU5HTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvbGliR0xFU3YyX3dpdGhfY2FwdHVyZV9hdXRvZ2VuLmRlZiBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyX3dpdGhfY2FwdHVyZV9hdXRvZ2Vu
LmRlZgppbmRleCAzZGNlY2Q5NGM3MmMyNjEzNDY5MzFkN2Y2NWYwOTM5ODViYTQxNjc3Li43ZGIy
NDNmZjc1OGZhMTc0YWVhYjI3ZTIxMWU1YjM1NTY4YmY2YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Ml93aXRoX2NhcHR1cmVfYXV0
b2dlbi5kZWYKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjJfd2l0aF9jYXB0dXJlX2F1dG9nZW4uZGVmCkBAIC00ODUsNiArNDg1LDkgQEAgRVhQT1JU
UwogICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUKICAgICBnbFZlcnRleEF0dHJpYkRp
dmlzb3JBTkdMRQogCisgICAgOyBHTF9BTkdMRV9tZW1vcnlfb2JqZWN0X2Z1Y2hzaWEKKyAgICBn
bEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFCisKICAgICA7IEdMX0FOR0xFX211bHRpX2Ry
YXcKICAgICBnbE11bHRpRHJhd0FycmF5c0FOR0xFCiAgICAgZ2xNdWx0aURyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRQpAQCAtNTY2LDYgKzU2OSw5IEBAIEVYUE9SVFMKICAgICBnbFRleFN1YkltYWdl
MkRSb2J1c3RBTkdMRQogICAgIGdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFCiAKKyAgICA7IEdM
X0FOR0xFX3NlbWFwaG9yZV9mdWNoc2lhCisgICAgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5k
bGVBTkdMRQorCiAgICAgOyBHTF9BTkdMRV90ZXh0dXJlX2V4dGVybmFsX3VwZGF0ZQogICAgIGds
SW52YWxpZGF0ZVRleHR1cmVBTkdMRQogICAgIGdsVGV4SW1hZ2UyREV4dGVybmFsQU5HTEUKQEAg
LTU5MiwzNyArNTk4LDEwIEBAIEVYUE9SVFMKIAogICAgIDsgR0xfQ0hST01JVU1fZnJhbWVidWZm
ZXJfbWl4ZWRfc2FtcGxlcwogICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0KLSAgICBn
bE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNCi0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNCiAK
ICAgICA7IEdMX0NIUk9NSVVNX2xvc2VfY29udGV4dAogICAgIGdsTG9zZUNvbnRleHRDSFJPTUlV
TQogCi0gICAgOyBHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIGdsQmluZEZyYWdtZW50
SW5wdXRMb2NhdGlvbkNIUk9NSVVNCi0gICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0KLSAgICBn
bENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTQotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hS
T01JVU0KLSAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNCi0gICAgZ2xEZWxl
dGVQYXRoc0NIUk9NSVVNCi0gICAgZ2xHZW5QYXRoc0NIUk9NSVVNCi0gICAgZ2xHZXRQYXRoUGFy
YW1ldGVyZnZDSFJPTUlVTQotICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0KLSAgICBn
bElzUGF0aENIUk9NSVVNCi0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTQotICAgIGdsUGF0aFBh
cmFtZXRlcmZDSFJPTUlVTQotICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTQotICAgIGdsUGF0
aFN0ZW5jaWxGdW5jQ0hST01JVU0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNI
Uk9NSVVNCi0gICAgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTQotICAgIGdsU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0KLSAg
ICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0KLSAgICBnbFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aENIUk9NSVVNCi0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTQotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTQot
ICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTQotCiAgICAg
OyBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZAogICAgIGdsQmluZEZyYWdEYXRhTG9jYXRpb25F
WFQKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVApAQCAtNjQyLDYgKzYyMSw3
IEBAIEVYUE9SVFMKICAgICBnbERlbGV0ZVF1ZXJpZXNFWFQKICAgICBnbEVuZFF1ZXJ5RVhUCiAg
ICAgZ2xHZW5RdWVyaWVzRVhUCisgICAgZ2xHZXRJbnRlZ2VyNjR2RVhUCiAgICAgZ2xHZXRRdWVy
eU9iamVjdGk2NHZFWFQKICAgICBnbEdldFF1ZXJ5T2JqZWN0aXZFWFQKICAgICBnbEdldFF1ZXJ5
T2JqZWN0dWk2NHZFWFQKQEAgLTY1Myw2ICs2MzMsMTYgQEAgRVhQT1JUUwogICAgIDsgR0xfRVhU
X2RyYXdfYnVmZmVycwogICAgIGdsRHJhd0J1ZmZlcnNFWFQKIAorICAgIDsgR0xfRVhUX2RyYXdf
YnVmZmVyc19pbmRleGVkCisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUCisgICAgZ2xC
bGVuZEVxdWF0aW9uaUVYVAorICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUCisgICAgZ2xCbGVu
ZEZ1bmNpRVhUCisgICAgZ2xDb2xvck1hc2tpRVhUCisgICAgZ2xEaXNhYmxlaUVYVAorICAgIGds
RW5hYmxlaUVYVAorICAgIGdsSXNFbmFibGVkaUVYVAorCiAgICAgOyBHTF9FWFRfZHJhd19lbGVt
ZW50c19iYXNlX3ZlcnRleAogICAgIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVAogICAgIGds
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVApAQCAtNzIwLDYgKzcxMCw4IEBAIEVY
UE9SVFMKIAogICAgIDsgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQogCisgICAgOyBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9yZ3RjCisKICAgICA7IEdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3MzdGMKIAogICAgIDsgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19z
cmdiCkBAIC03NjYsNiArNzU4LDE2IEBAIEVYUE9SVFMKIAogICAgIDsgR0xfT0VTX2RlcHRoMzIK
IAorICAgIDsgR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkCisgICAgZ2xCbGVuZEVxdWF0aW9u
U2VwYXJhdGVpT0VTCisgICAgZ2xCbGVuZEVxdWF0aW9uaU9FUworICAgIGdsQmxlbmRGdW5jU2Vw
YXJhdGVpT0VTCisgICAgZ2xCbGVuZEZ1bmNpT0VTCisgICAgZ2xDb2xvck1hc2tpT0VTCisgICAg
Z2xEaXNhYmxlaU9FUworICAgIGdsRW5hYmxlaU9FUworICAgIGdsSXNFbmFibGVkaU9FUworCiAg
ICAgOyBHTF9PRVNfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleAogICAgIGdsRHJhd0VsZW1lbnRz
QmFzZVZlcnRleE9FUwogICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUwpA
QCAtODc5LDcgKzg4MSw2IEBAIEVYUE9SVFMKICAgICBnbEJpbmRCdWZmZXJSYW5nZUNvbnRleHRB
TkdMRQogICAgIGdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFRDb250ZXh0QU5HTEUKICAgICBnbEJp
bmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVENvbnRleHRBTkdMRQotICAgIGdsQmluZEZyYWdt
ZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJDb250ZXh0QU5HTEUKICAgICBnbEJpbmRGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRQogICAg
IGdsQmluZEltYWdlVGV4dHVyZUNvbnRleHRBTkdMRQpAQCAtODk4LDExICs4OTksMTkgQEAgRVhQ
T1JUUwogICAgIGdsQmxlbmRFcXVhdGlvbkNvbnRleHRBTkdMRQogICAgIGdsQmxlbmRFcXVhdGlv
blNlcGFyYXRlQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpQ29udGV4
dEFOR0xFCisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFCisgICAg
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEVxdWF0
aW9uaUNvbnRleHRBTkdMRQorICAgIGdsQmxlbmRFcXVhdGlvbmlFWFRDb250ZXh0QU5HTEUKKyAg
ICBnbEJsZW5kRXF1YXRpb25pT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEZ1bmNDb250ZXh0
QU5HTEUKICAgICBnbEJsZW5kRnVuY1NlcGFyYXRlQ29udGV4dEFOR0xFCiAgICAgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZWlDb250ZXh0QU5HTEUKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRl
eHRBTkdMRQorICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xC
bGVuZEZ1bmNpQ29udGV4dEFOR0xFCisgICAgZ2xCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFCisg
ICAgZ2xCbGVuZEZ1bmNpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xCbGl0RnJhbWVidWZmZXJDb250
ZXh0QU5HTEUKICAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFQ29udGV4dEFOR0xFCiAgICAgZ2xC
dWZmZXJEYXRhQ29udGV4dEFOR0xFCkBAIC05MjksNiArOTM4LDggQEAgRVhQT1JUUwogICAgIGds
Q29sb3I0eENvbnRleHRBTkdMRQogICAgIGdsQ29sb3JNYXNrQ29udGV4dEFOR0xFCiAgICAgZ2xD
b2xvck1hc2tpQ29udGV4dEFOR0xFCisgICAgZ2xDb2xvck1hc2tpRVhUQ29udGV4dEFOR0xFCisg
ICAgZ2xDb2xvck1hc2tpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xDb2xvclBvaW50ZXJDb250ZXh0
QU5HTEUKICAgICBnbENvbXBpbGVTaGFkZXJDb250ZXh0QU5HTEUKICAgICBnbENvbXByZXNzZWRD
b3B5VGV4dHVyZUNIUk9NSVVNQ29udGV4dEFOR0xFCkBAIC05NTIsMTAgKzk2Myw2IEBAIEVYUE9S
VFMKICAgICBnbENvcHlUZXhTdWJJbWFnZTNET0VTQ29udGV4dEFOR0xFCiAgICAgZ2xDb3B5VGV4
dHVyZTNEQU5HTEVDb250ZXh0QU5HTEUKICAgICBnbENvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0
QU5HTEUKLSAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsQ292
ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xDb3ZlclN0cm9r
ZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNQ29u
dGV4dEFOR0xFCiAgICAgZ2xDcmVhdGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFCiAgICAg
Z2xDcmVhdGVQcm9ncmFtQ29udGV4dEFOR0xFCkBAIC05NzQsNyArOTgxLDYgQEAgRVhQT1JUUwog
ICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzQ29udGV4dEFOR0xFCiAgICAgZ2xEZWxldGVGcmFtZWJ1
ZmZlcnNPRVNDb250ZXh0QU5HTEUKICAgICBnbERlbGV0ZU1lbW9yeU9iamVjdHNFWFRDb250ZXh0
QU5HTEUKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbERlbGV0
ZVByb2dyYW1Db250ZXh0QU5HTEUKICAgICBnbERlbGV0ZVByb2dyYW1QaXBlbGluZXNDb250ZXh0
QU5HTEUKICAgICBnbERlbGV0ZVF1ZXJpZXNDb250ZXh0QU5HTEUKQEAgLTk5OSw2ICsxMDA1LDgg
QEAgRVhQT1JUUwogICAgIGdsRGlzYWJsZUV4dGVuc2lvbkFOR0xFQ29udGV4dEFOR0xFCiAgICAg
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlDb250ZXh0QU5HTEUKICAgICBnbERpc2FibGVpQ29u
dGV4dEFOR0xFCisgICAgZ2xEaXNhYmxlaUVYVENvbnRleHRBTkdMRQorICAgIGdsRGlzYWJsZWlP
RVNDb250ZXh0QU5HTEUKICAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVENvbnRleHRBTkdMRQog
ICAgIGdsRGlzcGF0Y2hDb21wdXRlQ29udGV4dEFOR0xFCiAgICAgZ2xEaXNwYXRjaENvbXB1dGVJ
bmRpcmVjdENvbnRleHRBTkdMRQpAQCAtMTA0MCw2ICsxMDQ4LDggQEAgRVhQT1JUUwogICAgIGds
RW5hYmxlQ2xpZW50U3RhdGVDb250ZXh0QU5HTEUKICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5Q29udGV4dEFOR0xFCiAgICAgZ2xFbmFibGVpQ29udGV4dEFOR0xFCisgICAgZ2xFbmFibGVp
RVhUQ29udGV4dEFOR0xFCisgICAgZ2xFbmFibGVpT0VTQ29udGV4dEFOR0xFCiAgICAgZ2xFbmRR
dWVyeUNvbnRleHRBTkdMRQogICAgIGdsRW5kUXVlcnlFWFRDb250ZXh0QU5HTEUKICAgICBnbEVu
ZFRyYW5zZm9ybUZlZWRiYWNrQ29udGV4dEFOR0xFCkBAIC0xMDcxLDcgKzEwODEsNiBAQCBFWFBP
UlRTCiAgICAgZ2xHZW5GZW5jZXNOVkNvbnRleHRBTkdMRQogICAgIGdsR2VuRnJhbWVidWZmZXJz
Q29udGV4dEFOR0xFCiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnNPRVNDb250ZXh0QU5HTEUKLSAgICBn
bEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbEdlblByb2dyYW1QaXBlbGluZXND
b250ZXh0QU5HTEUKICAgICBnbEdlblF1ZXJpZXNDb250ZXh0QU5HTEUKICAgICBnbEdlblF1ZXJp
ZXNFWFRDb250ZXh0QU5HTEUKQEAgLTExMjUsNiArMTEzNCw3IEBAIEVYUE9SVFMKICAgICBnbEdl
dEludGVnZXI2NGlfdkNvbnRleHRBTkdMRQogICAgIGdsR2V0SW50ZWdlcjY0aV92Um9idXN0QU5H
TEVDb250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXI2NHZDb250ZXh0QU5HTEUKKyAgICBnbEdl
dEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEUKICAgICBnbEdldEludGVnZXI2NHZSb2J1c3RBTkdM
RUNvbnRleHRBTkdMRQogICAgIGdsR2V0SW50ZWdlcmlfdkNvbnRleHRBTkdMRQogICAgIGdsR2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFCkBAIC0xMTQ0LDggKzExNTQsNiBAQCBF
WFBPUlRTCiAgICAgZ2xHZXRPYmplY3RMYWJlbEtIUkNvbnRleHRBTkdMRQogICAgIGdsR2V0T2Jq
ZWN0UHRyTGFiZWxDb250ZXh0QU5HTEUKICAgICBnbEdldE9iamVjdFB0ckxhYmVsS0hSQ29udGV4
dEFOR0xFCi0gICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRQotICAg
IGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbEdldFBvaW50
ZXJ2Q29udGV4dEFOR0xFCiAgICAgZ2xHZXRQb2ludGVydktIUkNvbnRleHRBTkdMRQogICAgIGds
R2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFQ29udGV4dEFOR0xFCkBAIC0xMjU1LDcg
KzEyNjMsOSBAQCBFWFBPUlRTCiAgICAgZ2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFQ29udGV4
dEFOR0xFCiAgICAgZ2xIaW50Q29udGV4dEFOR0xFCiAgICAgZ2xJbXBvcnRNZW1vcnlGZEVYVENv
bnRleHRBTkdMRQorICAgIGdsSW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5H
TEUKICAgICBnbEltcG9ydFNlbWFwaG9yZUZkRVhUQ29udGV4dEFOR0xFCisgICAgZ2xJbXBvcnRT
ZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRQogICAgIGdsSW5zZXJ0RXZlbnRN
YXJrZXJFWFRDb250ZXh0QU5HTEUKICAgICBnbEludmFsaWRhdGVGcmFtZWJ1ZmZlckNvbnRleHRB
TkdMRQogICAgIGdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyQ29udGV4dEFOR0xFCkBAIC0xMjYz
LDExICsxMjczLDEyIEBAIEVYUE9SVFMKICAgICBnbElzQnVmZmVyQ29udGV4dEFOR0xFCiAgICAg
Z2xJc0VuYWJsZWRDb250ZXh0QU5HTEUKICAgICBnbElzRW5hYmxlZGlDb250ZXh0QU5HTEUKKyAg
ICBnbElzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEUKKyAgICBnbElzRW5hYmxlZGlPRVNDb250ZXh0
QU5HTEUKICAgICBnbElzRmVuY2VOVkNvbnRleHRBTkdMRQogICAgIGdsSXNGcmFtZWJ1ZmZlckNv
bnRleHRBTkdMRQogICAgIGdsSXNGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRQogICAgIGdsSXNN
ZW1vcnlPYmplY3RFWFRDb250ZXh0QU5HTEUKLSAgICBnbElzUGF0aENIUk9NSVVNQ29udGV4dEFO
R0xFCiAgICAgZ2xJc1Byb2dyYW1Db250ZXh0QU5HTEUKICAgICBnbElzUHJvZ3JhbVBpcGVsaW5l
Q29udGV4dEFOR0xFCiAgICAgZ2xJc1F1ZXJ5Q29udGV4dEFOR0xFCkBAIC0xMzA3LDggKzEzMTgs
NiBAQCBFWFBPUlRTCiAgICAgZ2xNYXRlcmlhbHhDb250ZXh0QU5HTEUKICAgICBnbE1hdGVyaWFs
eHZDb250ZXh0QU5HTEUKICAgICBnbE1hdHJpeEluZGV4UG9pbnRlck9FU0NvbnRleHRBTkdMRQot
ICAgIGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbE1hdHJp
eExvYWRmQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbE1hdHJpeE1vZGVDb250ZXh0QU5HTEUK
ICAgICBnbE1heFNoYWRlckNvbXBpbGVyVGhyZWFkc0tIUkNvbnRleHRBTkdMRQogICAgIGdsTWVt
b3J5QmFycmllckNvbnRleHRBTkdMRQpAQCAtMTMzNiwxMCArMTM0NSw2IEBAIEVYUE9SVFMKICAg
ICBnbE9ydGhvZkNvbnRleHRBTkdMRQogICAgIGdsT3J0aG94Q29udGV4dEFOR0xFCiAgICAgZ2xQ
YXRjaFBhcmFtZXRlcmlDb250ZXh0QU5HTEUKLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNQ29u
dGV4dEFOR0xFCi0gICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAg
Z2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xQYXRoU3RlbmNpbEZ1
bmNDSFJPTUlVTUNvbnRleHRBTkdMRQogICAgIGdsUGF1c2VUcmFuc2Zvcm1GZWVkYmFja0NvbnRl
eHRBTkdMRQogICAgIGdsUGl4ZWxTdG9yZWlDb250ZXh0QU5HTEUKICAgICBnbFBvaW50UGFyYW1l
dGVyZkNvbnRleHRBTkdMRQpAQCAtMTM1OSw3ICsxMzY0LDYgQEAgRVhQT1JUUwogICAgIGdsUHJv
Z3JhbUJpbmFyeUNvbnRleHRBTkdMRQogICAgIGdsUHJvZ3JhbUJpbmFyeU9FU0NvbnRleHRBTkdM
RQogICAgIGdsUHJvZ3JhbVBhcmFtZXRlcmlDb250ZXh0QU5HTEUKLSAgICBnbFByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNQ29udGV4dEFOR0xFCiAgICAgZ2xQcm9ncmFtVW5pZm9y
bTFmQ29udGV4dEFOR0xFCiAgICAgZ2xQcm9ncmFtVW5pZm9ybTFmdkNvbnRleHRBTkdMRQogICAg
IGdsUHJvZ3JhbVVuaWZvcm0xaUNvbnRleHRBTkdMRQpAQCAtMTQ0MSwyMCArMTQ0NSwxMiBAQCBF
WFBPUlRTCiAgICAgZ2xTaGFkZXJCaW5hcnlDb250ZXh0QU5HTEUKICAgICBnbFNoYWRlclNvdXJj
ZUNvbnRleHRBTkdMRQogICAgIGdsU2lnbmFsU2VtYXBob3JlRVhUQ29udGV4dEFOR0xFCi0gICAg
Z2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQotICAgIGdsU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUKICAgICBnbFN0ZW5jaWxGdW5jQ29udGV4
dEFOR0xFCiAgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlQ29udGV4dEFOR0xFCiAgICAgZ2xTdGVu
Y2lsTWFza0NvbnRleHRBTkdMRQogICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZUNvbnRleHRBTkdM
RQogICAgIGdsU3RlbmNpbE9wQ29udGV4dEFOR0xFCiAgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZUNv
bnRleHRBTkdMRQotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRQot
ICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRQotICAg
IGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUKLSAgICBnbFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAg
Z2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFCi0gICAgZ2xT
dGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFCiAg
ICAgZ2xUZXN0RmVuY2VOVkNvbnRleHRBTkdMRQogICAgIGdsVGV4QnVmZmVyQ29udGV4dEFOR0xF
CiAgICAgZ2xUZXhCdWZmZXJSYW5nZUNvbnRleHRBTkdMRQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9wcm9jX3RhYmxlX2VnbF9hdXRvZ2VuLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvcHJvY190YWJsZV9lZ2xfYXV0
b2dlbi5jcHAKaW5kZXggMTc3YjM3ZTMyNGM1OTIwMGQwMzk0NGVjYzAwZGM0YzMxMGRmODJkZi4u
ZTYwNzFiNDRkMjk5ZTYzMDJjMmMzZDUzZjA1ODQ0OTkwZWE0YTQzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9wcm9jX3RhYmxlX2VnbF9hdXRvZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3Byb2NfdGFi
bGVfZWdsX2F1dG9nZW4uY3BwCkBAIC0xNTMsOSArMTUzLDYgQEAgUHJvY0VudHJ5IGdfcHJvY1Rh
YmxlW10gPSB7CiAgICAgeyJnbEJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVCIsIFAoZ2w6
OkJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVCl9LAogICAgIHsiZ2xCaW5kRnJhZ0RhdGFM
b2NhdGlvbkluZGV4ZWRFWFRDb250ZXh0QU5HTEUiLAogICAgICBQKGdsOjpCaW5kRnJhZ0RhdGFM
b2NhdGlvbkluZGV4ZWRFWFRDb250ZXh0QU5HTEUpfSwKLSAgICB7ImdsQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNIiwgUChnbDo6QmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9N
SVVNKX0sCi0gICAgeyJnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRleHRB
TkdMRSIsCi0gICAgIFAoZ2w6OkJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTUNvbnRl
eHRBTkdMRSl9LAogICAgIHsiZ2xCaW5kRnJhbWVidWZmZXIiLCBQKGdsOjpCaW5kRnJhbWVidWZm
ZXIpfSwKICAgICB7ImdsQmluZEZyYW1lYnVmZmVyQ29udGV4dEFOR0xFIiwgUChnbDo6QmluZEZy
YW1lYnVmZmVyQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEJpbmRGcmFtZWJ1ZmZlck9FUyIsIFAo
Z2w6OkJpbmRGcmFtZWJ1ZmZlck9FUyl9LApAQCAtMTg4LDEwICsxODUsMjYgQEAgUHJvY0VudHJ5
IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbEJsZW5kRXF1YXRpb25Db250ZXh0QU5HTEUiLCBQ
KGdsOjpCbGVuZEVxdWF0aW9uQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSIsIFAoZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZSl9LAogICAgIHsiZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGVDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGVD
b250ZXh0QU5HTEUpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCIsIFAoZ2w6
OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvblNlcGFy
YXRlaUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRDb250
ZXh0QU5HTEUpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUyIsIFAoZ2w6OkJs
ZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
aU9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0
QU5HTEUpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvbmlFWFQiLCBQKGdsOjpCbGVuZEVxdWF0aW9u
aUVYVCl9LAorICAgIHsiZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OkJs
ZW5kRXF1YXRpb25pRVhUQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbEJsZW5kRXF1YXRpb25pT0VT
IiwgUChnbDo6QmxlbmRFcXVhdGlvbmlPRVMpfSwKKyAgICB7ImdsQmxlbmRFcXVhdGlvbmlPRVND
b250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRSl9LAogICAg
IHsiZ2xCbGVuZEZ1bmMiLCBQKGdsOjpCbGVuZEZ1bmMpfSwKICAgICB7ImdsQmxlbmRGdW5jQ29u
dGV4dEFOR0xFIiwgUChnbDo6QmxlbmRGdW5jQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEJsZW5k
RnVuY1NlcGFyYXRlIiwgUChnbDo6QmxlbmRGdW5jU2VwYXJhdGUpfSwKICAgICB7ImdsQmxlbmRG
dW5jU2VwYXJhdGVDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEZ1bmNTZXBhcmF0ZUNvbnRleHRB
TkdMRSl9LAorICAgIHsiZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQiLCBQKGdsOjpCbGVuZEZ1bmNT
ZXBhcmF0ZWlFWFQpfSwKKyAgICB7ImdsQmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xF
IiwgUChnbDo6QmxlbmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbEJs
ZW5kRnVuY1NlcGFyYXRlaU9FUyIsIFAoZ2w6OkJsZW5kRnVuY1NlcGFyYXRlaU9FUyl9LAorICAg
IHsiZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGVuZEZ1bmNT
ZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsQmxlbmRGdW5jaUVYVCIsIFAoZ2w6
OkJsZW5kRnVuY2lFWFQpfSwKKyAgICB7ImdsQmxlbmRGdW5jaUVYVENvbnRleHRBTkdMRSIsIFAo
Z2w6OkJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsQmxlbmRGdW5jaU9FUyIs
IFAoZ2w6OkJsZW5kRnVuY2lPRVMpfSwKKyAgICB7ImdsQmxlbmRGdW5jaU9FU0NvbnRleHRBTkdM
RSIsIFAoZ2w6OkJsZW5kRnVuY2lPRVNDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsQmxpdEZyYW1l
YnVmZmVyIiwgUChnbDo6QmxpdEZyYW1lYnVmZmVyKX0sCiAgICAgeyJnbEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFIiwgUChnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUpfSwKICAgICB7ImdsQmxpdEZyYW1l
YnVmZmVyQU5HTEVDb250ZXh0QU5HTEUiLCBQKGdsOjpCbGl0RnJhbWVidWZmZXJBTkdMRUNvbnRl
eHRBTkdMRSl9LApAQCAtMjQyLDYgKzI1NSwxMCBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9
IHsKICAgICB7ImdsQ29sb3I0eENvbnRleHRBTkdMRSIsIFAoZ2w6OkNvbG9yNHhDb250ZXh0QU5H
TEUpfSwKICAgICB7ImdsQ29sb3JNYXNrIiwgUChnbDo6Q29sb3JNYXNrKX0sCiAgICAgeyJnbENv
bG9yTWFza0NvbnRleHRBTkdMRSIsIFAoZ2w6OkNvbG9yTWFza0NvbnRleHRBTkdMRSl9LAorICAg
IHsiZ2xDb2xvck1hc2tpRVhUIiwgUChnbDo6Q29sb3JNYXNraUVYVCl9LAorICAgIHsiZ2xDb2xv
ck1hc2tpRVhUQ29udGV4dEFOR0xFIiwgUChnbDo6Q29sb3JNYXNraUVYVENvbnRleHRBTkdMRSl9
LAorICAgIHsiZ2xDb2xvck1hc2tpT0VTIiwgUChnbDo6Q29sb3JNYXNraU9FUyl9LAorICAgIHsi
Z2xDb2xvck1hc2tpT0VTQ29udGV4dEFOR0xFIiwgUChnbDo6Q29sb3JNYXNraU9FU0NvbnRleHRB
TkdMRSl9LAogICAgIHsiZ2xDb2xvclBvaW50ZXIiLCBQKGdsOjpDb2xvclBvaW50ZXIpfSwKICAg
ICB7ImdsQ29sb3JQb2ludGVyQ29udGV4dEFOR0xFIiwgUChnbDo6Q29sb3JQb2ludGVyQ29udGV4
dEFOR0xFKX0sCiAgICAgeyJnbENvbXBpbGVTaGFkZXIiLCBQKGdsOjpDb21waWxlU2hhZGVyKX0s
CkBAIC0yOTEsMTYgKzMwOCw2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsi
Z2xDb3B5VGV4dHVyZTNEQU5HTEVDb250ZXh0QU5HTEUiLCBQKGdsOjpDb3B5VGV4dHVyZTNEQU5H
TEVDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsQ29weVRleHR1cmVDSFJPTUlVTSIsIFAoZ2w6OkNv
cHlUZXh0dXJlQ0hST01JVU0pfSwKICAgICB7ImdsQ29weVRleHR1cmVDSFJPTUlVTUNvbnRleHRB
TkdMRSIsIFAoZ2w6OkNvcHlUZXh0dXJlQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7Imds
Q292ZXJGaWxsUGF0aENIUk9NSVVNIiwgUChnbDo6Q292ZXJGaWxsUGF0aENIUk9NSVVNKX0sCi0g
ICAgeyJnbENvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAoZ2w6OkNvdmVyRmls
bFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xDb3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0iLCBQKGdsOjpDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0pfSwKLSAg
ICB7ImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFIiwKLSAgICAg
UChnbDo6Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFKX0sCi0gICAg
eyJnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNIiwgUChnbDo6Q292ZXJTdHJva2VQYXRoQ0hST01J
VU0pfSwKLSAgICB7ImdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQKGds
OjpDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xDb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsIFAoZ2w6OkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNKX0sCi0gICAgeyJnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29u
dGV4dEFOR0xFIiwKLSAgICAgUChnbDo6Q292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU1D
b250ZXh0QU5HTEUpfSwKICAgICB7ImdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0iLCBQKGds
OjpDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTSl9LAogICAgIHsiZ2xDb3ZlcmFnZU1vZHVsYXRp
b25DSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAoZ2w6OkNvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVN
Q29udGV4dEFOR0xFKX0sCiAgICAgeyJnbENyZWF0ZU1lbW9yeU9iamVjdHNFWFQiLCBQKGdsOjpD
cmVhdGVNZW1vcnlPYmplY3RzRVhUKX0sCkBAIC0zMzEsOCArMzM4LDYgQEAgUHJvY0VudHJ5IGdf
cHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbERlbGV0ZUZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdM
RSIsIFAoZ2w6OkRlbGV0ZUZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xE
ZWxldGVNZW1vcnlPYmplY3RzRVhUIiwgUChnbDo6RGVsZXRlTWVtb3J5T2JqZWN0c0VYVCl9LAog
ICAgIHsiZ2xEZWxldGVNZW1vcnlPYmplY3RzRVhUQ29udGV4dEFOR0xFIiwgUChnbDo6RGVsZXRl
TWVtb3J5T2JqZWN0c0VYVENvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xEZWxldGVQYXRoc0NIUk9N
SVVNIiwgUChnbDo6RGVsZXRlUGF0aHNDSFJPTUlVTSl9LAotICAgIHsiZ2xEZWxldGVQYXRoc0NI
Uk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6RGVsZXRlUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdM
RSl9LAogICAgIHsiZ2xEZWxldGVQcm9ncmFtIiwgUChnbDo6RGVsZXRlUHJvZ3JhbSl9LAogICAg
IHsiZ2xEZWxldGVQcm9ncmFtQ29udGV4dEFOR0xFIiwgUChnbDo6RGVsZXRlUHJvZ3JhbUNvbnRl
eHRBTkdMRSl9LAogICAgIHsiZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzIiwgUChnbDo6RGVsZXRl
UHJvZ3JhbVBpcGVsaW5lcyl9LApAQCAtMzc5LDYgKzM4NCwxMCBAQCBQcm9jRW50cnkgZ19wcm9j
VGFibGVbXSA9IHsKICAgICB7ImdsRGlzYWJsZUV4dGVuc2lvbkFOR0xFQ29udGV4dEFOR0xFIiwg
UChnbDo6RGlzYWJsZUV4dGVuc2lvbkFOR0xFQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSIsIFAoZ2w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSl9LAog
ICAgIHsiZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlDb250ZXh0QU5HTEUiLCBQKGdsOjpEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXlDb250ZXh0QU5HTEUpfSwKKyAgICB7ImdsRGlzYWJsZWlFWFQi
LCBQKGdsOjpEaXNhYmxlaUVYVCl9LAorICAgIHsiZ2xEaXNhYmxlaUVYVENvbnRleHRBTkdMRSIs
IFAoZ2w6OkRpc2FibGVpRVhUQ29udGV4dEFOR0xFKX0sCisgICAgeyJnbERpc2FibGVpT0VTIiwg
UChnbDo6RGlzYWJsZWlPRVMpfSwKKyAgICB7ImdsRGlzYWJsZWlPRVNDb250ZXh0QU5HTEUiLCBQ
KGdsOjpEaXNhYmxlaU9FU0NvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xEaXNjYXJkRnJhbWVidWZm
ZXJFWFQiLCBQKGdsOjpEaXNjYXJkRnJhbWVidWZmZXJFWFQpfSwKICAgICB7ImdsRGlzY2FyZEZy
YW1lYnVmZmVyRVhUQ29udGV4dEFOR0xFIiwgUChnbDo6RGlzY2FyZEZyYW1lYnVmZmVyRVhUQ29u
dGV4dEFOR0xFKX0sCiAgICAgeyJnbERpc3BhdGNoQ29tcHV0ZSIsIFAoZ2w6OkRpc3BhdGNoQ29t
cHV0ZSl9LApAQCAtNDYxLDYgKzQ3MCwxMCBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9IHsK
ICAgICB7ImdsRW5hYmxlQ29udGV4dEFOR0xFIiwgUChnbDo6RW5hYmxlQ29udGV4dEFOR0xFKX0s
CiAgICAgeyJnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IiwgUChnbDo6RW5hYmxlVmVydGV4QXR0
cmliQXJyYXkpfSwKICAgICB7ImdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlDb250ZXh0QU5HTEUi
LCBQKGdsOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheUNvbnRleHRBTkdMRSl9LAorICAgIHsiZ2xF
bmFibGVpRVhUIiwgUChnbDo6RW5hYmxlaUVYVCl9LAorICAgIHsiZ2xFbmFibGVpRVhUQ29udGV4
dEFOR0xFIiwgUChnbDo6RW5hYmxlaUVYVENvbnRleHRBTkdMRSl9LAorICAgIHsiZ2xFbmFibGVp
T0VTIiwgUChnbDo6RW5hYmxlaU9FUyl9LAorICAgIHsiZ2xFbmFibGVpT0VTQ29udGV4dEFOR0xF
IiwgUChnbDo6RW5hYmxlaU9FU0NvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xFbmRRdWVyeSIsIFAo
Z2w6OkVuZFF1ZXJ5KX0sCiAgICAgeyJnbEVuZFF1ZXJ5Q29udGV4dEFOR0xFIiwgUChnbDo6RW5k
UXVlcnlDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsRW5kUXVlcnlFWFQiLCBQKGdsOjpFbmRRdWVy
eUVYVCl9LApAQCAtNTIzLDggKzUzNiw2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewog
ICAgIHsiZ2xHZW5GcmFtZWJ1ZmZlcnNDb250ZXh0QU5HTEUiLCBQKGdsOjpHZW5GcmFtZWJ1ZmZl
cnNDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsR2VuRnJhbWVidWZmZXJzT0VTIiwgUChnbDo6R2Vu
RnJhbWVidWZmZXJzT0VTKX0sCiAgICAgeyJnbEdlbkZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdM
RSIsIFAoZ2w6OkdlbkZyYW1lYnVmZmVyc09FU0NvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xHZW5Q
YXRoc0NIUk9NSVVNIiwgUChnbDo6R2VuUGF0aHNDSFJPTUlVTSl9LAotICAgIHsiZ2xHZW5QYXRo
c0NIUk9NSVVNQ29udGV4dEFOR0xFIiwgUChnbDo6R2VuUGF0aHNDSFJPTUlVTUNvbnRleHRBTkdM
RSl9LAogICAgIHsiZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzIiwgUChnbDo6R2VuUHJvZ3JhbVBpcGVs
aW5lcyl9LAogICAgIHsiZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzQ29udGV4dEFOR0xFIiwgUChnbDo6
R2VuUHJvZ3JhbVBpcGVsaW5lc0NvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xHZW5RdWVyaWVzIiwg
UChnbDo6R2VuUXVlcmllcyl9LApAQCAtNjM1LDYgKzY0Niw4IEBAIFByb2NFbnRyeSBnX3Byb2NU
YWJsZVtdID0gewogICAgIHsiZ2xHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRUNvbnRleHRBTkdM
RSIsIFAoZ2w6OkdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFQ29udGV4dEFOR0xFKX0sCiAgICAg
eyJnbEdldEludGVnZXI2NHYiLCBQKGdsOjpHZXRJbnRlZ2VyNjR2KX0sCiAgICAgeyJnbEdldElu
dGVnZXI2NHZDb250ZXh0QU5HTEUiLCBQKGdsOjpHZXRJbnRlZ2VyNjR2Q29udGV4dEFOR0xFKX0s
CisgICAgeyJnbEdldEludGVnZXI2NHZFWFQiLCBQKGdsOjpHZXRJbnRlZ2VyNjR2RVhUKX0sCisg
ICAgeyJnbEdldEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEUiLCBQKGdsOjpHZXRJbnRlZ2VyNjR2
RVhUQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEdldEludGVnZXI2NHZSb2J1c3RBTkdMRSIsIFAo
Z2w6OkdldEludGVnZXI2NHZSb2J1c3RBTkdMRSl9LAogICAgIHsiZ2xHZXRJbnRlZ2VyNjR2Um9i
dXN0QU5HTEVDb250ZXh0QU5HTEUiLCBQKGdsOjpHZXRJbnRlZ2VyNjR2Um9idXN0QU5HTEVDb250
ZXh0QU5HTEUpfSwKICAgICB7ImdsR2V0SW50ZWdlcmlfdiIsIFAoZ2w6OkdldEludGVnZXJpX3Yp
fSwKQEAgLTY3MSwxMCArNjg0LDYgQEAgUHJvY0VudHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAg
eyJnbEdldE9iamVjdExhYmVsS0hSQ29udGV4dEFOR0xFIiwgUChnbDo6R2V0T2JqZWN0TGFiZWxL
SFJDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsR2V0T2JqZWN0UHRyTGFiZWxLSFIiLCBQKGdsOjpH
ZXRPYmplY3RQdHJMYWJlbEtIUil9LAogICAgIHsiZ2xHZXRPYmplY3RQdHJMYWJlbEtIUkNvbnRl
eHRBTkdMRSIsIFAoZ2w6OkdldE9iamVjdFB0ckxhYmVsS0hSQ29udGV4dEFOR0xFKX0sCi0gICAg
eyJnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNIiwgUChnbDo6R2V0UGF0aFBhcmFtZXRlcmZ2
Q0hST01JVU0pfSwKLSAgICB7ImdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250ZXh0QU5H
TEUiLCBQKGdsOjpHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAg
IHsiZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSIsIFAoZ2w6OkdldFBhdGhQYXJhbWV0ZXJp
dkNIUk9NSVVNKX0sCi0gICAgeyJnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNQ29udGV4dEFO
R0xFIiwgUChnbDo6R2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAg
ICB7ImdsR2V0UG9pbnRlcnYiLCBQKGdsOjpHZXRQb2ludGVydil9LAogICAgIHsiZ2xHZXRQb2lu
dGVydkNvbnRleHRBTkdMRSIsIFAoZ2w6OkdldFBvaW50ZXJ2Q29udGV4dEFOR0xFKX0sCiAgICAg
eyJnbEdldFBvaW50ZXJ2S0hSIiwgUChnbDo6R2V0UG9pbnRlcnZLSFIpfSwKQEAgLTg5OSw4ICs5
MDgsMTQgQEAgUHJvY0VudHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbEhpbnRDb250ZXh0
QU5HTEUiLCBQKGdsOjpIaW50Q29udGV4dEFOR0xFKX0sCiAgICAgeyJnbEltcG9ydE1lbW9yeUZk
RVhUIiwgUChnbDo6SW1wb3J0TWVtb3J5RmRFWFQpfSwKICAgICB7ImdsSW1wb3J0TWVtb3J5RmRF
WFRDb250ZXh0QU5HTEUiLCBQKGdsOjpJbXBvcnRNZW1vcnlGZEVYVENvbnRleHRBTkdMRSl9LAor
ICAgIHsiZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRSIsIFAoZ2w6OkltcG9ydE1lbW9y
eVppcmNvbkhhbmRsZUFOR0xFKX0sCisgICAgeyJnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFO
R0xFQ29udGV4dEFOR0xFIiwKKyAgICAgUChnbDo6SW1wb3J0TWVtb3J5WmlyY29uSGFuZGxlQU5H
TEVDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsSW1wb3J0U2VtYXBob3JlRmRFWFQiLCBQKGdsOjpJ
bXBvcnRTZW1hcGhvcmVGZEVYVCl9LAogICAgIHsiZ2xJbXBvcnRTZW1hcGhvcmVGZEVYVENvbnRl
eHRBTkdMRSIsIFAoZ2w6OkltcG9ydFNlbWFwaG9yZUZkRVhUQ29udGV4dEFOR0xFKX0sCisgICAg
eyJnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xFIiwgUChnbDo6SW1wb3J0U2VtYXBo
b3JlWmlyY29uSGFuZGxlQU5HTEUpfSwKKyAgICB7ImdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFu
ZGxlQU5HTEVDb250ZXh0QU5HTEUiLAorICAgICBQKGdsOjpJbXBvcnRTZW1hcGhvcmVaaXJjb25I
YW5kbGVBTkdMRUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xJbnNlcnRFdmVudE1hcmtlckVYVCIs
IFAoZ2w6Okluc2VydEV2ZW50TWFya2VyRVhUKX0sCiAgICAgeyJnbEluc2VydEV2ZW50TWFya2Vy
RVhUQ29udGV4dEFOR0xFIiwgUChnbDo6SW5zZXJ0RXZlbnRNYXJrZXJFWFRDb250ZXh0QU5HTEUp
fSwKICAgICB7ImdsSW52YWxpZGF0ZUZyYW1lYnVmZmVyIiwgUChnbDo6SW52YWxpZGF0ZUZyYW1l
YnVmZmVyKX0sCkBAIC05MTMsNiArOTI4LDEwIEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0g
ewogICAgIHsiZ2xJc0J1ZmZlckNvbnRleHRBTkdMRSIsIFAoZ2w6OklzQnVmZmVyQ29udGV4dEFO
R0xFKX0sCiAgICAgeyJnbElzRW5hYmxlZCIsIFAoZ2w6OklzRW5hYmxlZCl9LAogICAgIHsiZ2xJ
c0VuYWJsZWRDb250ZXh0QU5HTEUiLCBQKGdsOjpJc0VuYWJsZWRDb250ZXh0QU5HTEUpfSwKKyAg
ICB7ImdsSXNFbmFibGVkaUVYVCIsIFAoZ2w6OklzRW5hYmxlZGlFWFQpfSwKKyAgICB7ImdsSXNF
bmFibGVkaUVYVENvbnRleHRBTkdMRSIsIFAoZ2w6OklzRW5hYmxlZGlFWFRDb250ZXh0QU5HTEUp
fSwKKyAgICB7ImdsSXNFbmFibGVkaU9FUyIsIFAoZ2w6OklzRW5hYmxlZGlPRVMpfSwKKyAgICB7
ImdsSXNFbmFibGVkaU9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6OklzRW5hYmxlZGlPRVNDb250ZXh0
QU5HTEUpfSwKICAgICB7ImdsSXNGZW5jZU5WIiwgUChnbDo6SXNGZW5jZU5WKX0sCiAgICAgeyJn
bElzRmVuY2VOVkNvbnRleHRBTkdMRSIsIFAoZ2w6OklzRmVuY2VOVkNvbnRleHRBTkdMRSl9LAog
ICAgIHsiZ2xJc0ZyYW1lYnVmZmVyIiwgUChnbDo6SXNGcmFtZWJ1ZmZlcil9LApAQCAtOTIxLDgg
Kzk0MCw2IEBAIFByb2NFbnRyeSBnX3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xJc0ZyYW1lYnVm
ZmVyT0VTQ29udGV4dEFOR0xFIiwgUChnbDo6SXNGcmFtZWJ1ZmZlck9FU0NvbnRleHRBTkdMRSl9
LAogICAgIHsiZ2xJc01lbW9yeU9iamVjdEVYVCIsIFAoZ2w6OklzTWVtb3J5T2JqZWN0RVhUKX0s
CiAgICAgeyJnbElzTWVtb3J5T2JqZWN0RVhUQ29udGV4dEFOR0xFIiwgUChnbDo6SXNNZW1vcnlP
YmplY3RFWFRDb250ZXh0QU5HTEUpfSwKLSAgICB7ImdsSXNQYXRoQ0hST01JVU0iLCBQKGdsOjpJ
c1BhdGhDSFJPTUlVTSl9LAotICAgIHsiZ2xJc1BhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAo
Z2w6OklzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbElzUHJvZ3JhbSIsIFAo
Z2w6OklzUHJvZ3JhbSl9LAogICAgIHsiZ2xJc1Byb2dyYW1Db250ZXh0QU5HTEUiLCBQKGdsOjpJ
c1Byb2dyYW1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsSXNQcm9ncmFtUGlwZWxpbmUiLCBQKGds
OjpJc1Byb2dyYW1QaXBlbGluZSl9LApAQCAtMTAwMiwxMCArMTAxOSw2IEBAIFByb2NFbnRyeSBn
X3Byb2NUYWJsZVtdID0gewogICAgIHsiZ2xNYXRlcmlhbHh2Q29udGV4dEFOR0xFIiwgUChnbDo6
TWF0ZXJpYWx4dkNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xNYXRyaXhJbmRleFBvaW50ZXJPRVMi
LCBQKGdsOjpNYXRyaXhJbmRleFBvaW50ZXJPRVMpfSwKICAgICB7ImdsTWF0cml4SW5kZXhQb2lu
dGVyT0VTQ29udGV4dEFOR0xFIiwgUChnbDo6TWF0cml4SW5kZXhQb2ludGVyT0VTQ29udGV4dEFO
R0xFKX0sCi0gICAgeyJnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNIiwgUChnbDo6TWF0cml4
TG9hZElkZW50aXR5Q0hST01JVU0pfSwKLSAgICB7ImdsTWF0cml4TG9hZElkZW50aXR5Q0hST01J
VU1Db250ZXh0QU5HTEUiLCBQKGdsOjpNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRB
TkdMRSl9LAotICAgIHsiZ2xNYXRyaXhMb2FkZkNIUk9NSVVNIiwgUChnbDo6TWF0cml4TG9hZGZD
SFJPTUlVTSl9LAotICAgIHsiZ2xNYXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFIiwgUChn
bDo6TWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xNYXRyaXhNb2Rl
IiwgUChnbDo6TWF0cml4TW9kZSl9LAogICAgIHsiZ2xNYXRyaXhNb2RlQ29udGV4dEFOR0xFIiwg
UChnbDo6TWF0cml4TW9kZUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xNYXhTaGFkZXJDb21waWxl
clRocmVhZHNLSFIiLCBQKGdsOjpNYXhTaGFkZXJDb21waWxlclRocmVhZHNLSFIpfSwKQEAgLTEw
NTksMTQgKzEwNzIsNiBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9IHsKICAgICB7ImdsT3J0
aG9mQ29udGV4dEFOR0xFIiwgUChnbDo6T3J0aG9mQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbE9y
dGhveCIsIFAoZ2w6Ok9ydGhveCl9LAogICAgIHsiZ2xPcnRob3hDb250ZXh0QU5HTEUiLCBQKGds
OjpPcnRob3hDb250ZXh0QU5HTEUpfSwKLSAgICB7ImdsUGF0aENvbW1hbmRzQ0hST01JVU0iLCBQ
KGdsOjpQYXRoQ29tbWFuZHNDSFJPTUlVTSl9LAotICAgIHsiZ2xQYXRoQ29tbWFuZHNDSFJPTUlV
TUNvbnRleHRBTkdMRSIsIFAoZ2w6OlBhdGhDb21tYW5kc0NIUk9NSVVNQ29udGV4dEFOR0xFKX0s
Ci0gICAgeyJnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0iLCBQKGdsOjpQYXRoUGFyYW1ldGVyZkNI
Uk9NSVVNKX0sCi0gICAgeyJnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQ
KGdsOjpQYXRoUGFyYW1ldGVyZkNIUk9NSVVNQ29udGV4dEFOR0xFKX0sCi0gICAgeyJnbFBhdGhQ
YXJhbWV0ZXJpQ0hST01JVU0iLCBQKGdsOjpQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKX0sCi0gICAg
eyJnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpQYXRoUGFyYW1l
dGVyaUNIUk9NSVVNQ29udGV4dEFOR0xFKX0sCi0gICAgeyJnbFBhdGhTdGVuY2lsRnVuY0NIUk9N
SVVNIiwgUChnbDo6UGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0pfSwKLSAgICB7ImdsUGF0aFN0ZW5j
aWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUiLCBQKGdsOjpQYXRoU3RlbmNpbEZ1bmNDSFJPTUlV
TUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrIiwgUChnbDo6
UGF1c2VUcmFuc2Zvcm1GZWVkYmFjayl9LAogICAgIHsiZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNr
Q29udGV4dEFOR0xFIiwgUChnbDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFja0NvbnRleHRBTkdMRSl9
LAogICAgIHsiZ2xQaXhlbFN0b3JlaSIsIFAoZ2w6OlBpeGVsU3RvcmVpKX0sCkBAIC0xMTAxLDkg
KzExMDYsNiBAQCBQcm9jRW50cnkgZ19wcm9jVGFibGVbXSA9IHsKICAgICB7ImdsUHJvZ3JhbUJp
bmFyeU9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6OlByb2dyYW1CaW5hcnlPRVNDb250ZXh0QU5HTEUp
fSwKICAgICB7ImdsUHJvZ3JhbVBhcmFtZXRlcmkiLCBQKGdsOjpQcm9ncmFtUGFyYW1ldGVyaSl9
LAogICAgIHsiZ2xQcm9ncmFtUGFyYW1ldGVyaUNvbnRleHRBTkdMRSIsIFAoZ2w6OlByb2dyYW1Q
YXJhbWV0ZXJpQ29udGV4dEFOR0xFKX0sCi0gICAgeyJnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNIiwgUChnbDo6UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0p
fSwKLSAgICB7ImdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1Db250ZXh0QU5H
TEUiLAotICAgICBQKGdsOjpQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRl
eHRBTkdMRSl9LAogICAgIHsiZ2xQcm9ncmFtVW5pZm9ybTFmIiwgUChnbDo6UHJvZ3JhbVVuaWZv
cm0xZil9LAogICAgIHsiZ2xQcm9ncmFtVW5pZm9ybTFmQ29udGV4dEFOR0xFIiwgUChnbDo6UHJv
Z3JhbVVuaWZvcm0xZkNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xQcm9ncmFtVW5pZm9ybTFmdiIs
IFAoZ2w6OlByb2dyYW1Vbmlmb3JtMWZ2KX0sCkBAIC0xMjY1LDExICsxMjY3LDYgQEAgUHJvY0Vu
dHJ5IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbFNoYWRlclNvdXJjZUNvbnRleHRBTkdMRSIs
IFAoZ2w6OlNoYWRlclNvdXJjZUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xTaWduYWxTZW1hcGhv
cmVFWFQiLCBQKGdsOjpTaWduYWxTZW1hcGhvcmVFWFQpfSwKICAgICB7ImdsU2lnbmFsU2VtYXBo
b3JlRVhUQ29udGV4dEFOR0xFIiwgUChnbDo6U2lnbmFsU2VtYXBob3JlRVhUQ29udGV4dEFOR0xF
KX0sCi0gICAgeyJnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNIiwgUChnbDo6U3RlbmNpbEZpbGxQ
YXRoQ0hST01JVU0pfSwKLSAgICB7ImdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5H
TEUiLCBQKGdsOjpTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAotICAgIHsi
Z2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsIFAoZ2w6OlN0ZW5jaWxGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNKX0sCi0gICAgeyJnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNQ29udGV4dEFOR0xFIiwKLSAgICAgUChnbDo6U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2Vk
Q0hST01JVU1Db250ZXh0QU5HTEUpfSwKICAgICB7ImdsU3RlbmNpbEZ1bmMiLCBQKGdsOjpTdGVu
Y2lsRnVuYyl9LAogICAgIHsiZ2xTdGVuY2lsRnVuY0NvbnRleHRBTkdMRSIsIFAoZ2w6OlN0ZW5j
aWxGdW5jQ29udGV4dEFOR0xFKX0sCiAgICAgeyJnbFN0ZW5jaWxGdW5jU2VwYXJhdGUiLCBQKGds
OjpTdGVuY2lsRnVuY1NlcGFyYXRlKX0sCkBAIC0xMjgyLDI1ICsxMjc5LDYgQEAgUHJvY0VudHJ5
IGdfcHJvY1RhYmxlW10gPSB7CiAgICAgeyJnbFN0ZW5jaWxPcENvbnRleHRBTkdMRSIsIFAoZ2w6
OlN0ZW5jaWxPcENvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xTdGVuY2lsT3BTZXBhcmF0ZSIsIFAo
Z2w6OlN0ZW5jaWxPcFNlcGFyYXRlKX0sCiAgICAgeyJnbFN0ZW5jaWxPcFNlcGFyYXRlQ29udGV4
dEFOR0xFIiwgUChnbDo6U3RlbmNpbE9wU2VwYXJhdGVDb250ZXh0QU5HTEUpfSwKLSAgICB7Imds
U3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTSIsIFAoZ2w6OlN0ZW5jaWxTdHJva2VQYXRoQ0hST01J
VU0pfSwKLSAgICB7ImdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSIsIFAo
Z2w6OlN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7ImdsU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIsIFAoZ2w6OlN0ZW5jaWxTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU0pfSwKLSAgICB7ImdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRSIsCi0gICAgIFAoZ2w6OlN0ZW5jaWxTdHJva2VQYXRoSW5zdGFu
Y2VkQ0hST01JVU1Db250ZXh0QU5HTEUpfSwKLSAgICB7ImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQ
YXRoQ0hST01JVU0iLCBQKGdsOjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTSl9LAot
ICAgIHsiZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSIsCi0g
ICAgIFAoZ2w6OlN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFKX0s
Ci0gICAgeyJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNIiwKLSAg
ICAgUChnbDo6U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0pfSwKLSAg
ICB7ImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5H
TEUiLAotICAgICBQKGdsOjpTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TUNvbnRleHRBTkdMRSl9LAotICAgIHsiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9N
SVVNIiwgUChnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSl9LAotICAgIHsi
Z2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFIiwKLSAgICAg
UChnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSl9LAot
ICAgIHsiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIiwKLSAg
ICAgUChnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSl9LAot
ICAgIHsiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4
dEFOR0xFIiwKLSAgICAgUChnbDo6U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRSl9LAogICAgIHsiZ2xUZXN0RmVuY2VOViIsIFAoZ2w6OlRlc3RG
ZW5jZU5WKX0sCiAgICAgeyJnbFRlc3RGZW5jZU5WQ29udGV4dEFOR0xFIiwgUChnbDo6VGVzdEZl
bmNlTlZDb250ZXh0QU5HTEUpfSwKICAgICB7ImdsVGV4Q29vcmRQb2ludGVyIiwgUChnbDo6VGV4
Q29vcmRQb2ludGVyKX0sCkBAIC0xNTQwLDUgKzE1MTgsNSBAQCBQcm9jRW50cnkgZ19wcm9jVGFi
bGVbXSA9IHsKICAgICB7ImdsV2VpZ2h0UG9pbnRlck9FUyIsIFAoZ2w6OldlaWdodFBvaW50ZXJP
RVMpfSwKICAgICB7ImdsV2VpZ2h0UG9pbnRlck9FU0NvbnRleHRBTkdMRSIsIFAoZ2w6OldlaWdo
dFBvaW50ZXJPRVNDb250ZXh0QU5HTEUpfX07CiAKLXNpemVfdCBnX251bVByb2NzID0gMTQzNjsK
K3NpemVfdCBnX251bVByb2NzID0gMTQyNDsKIH0gIC8vIG5hbWVzcGFjZSBlZ2wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5nbiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5nbgppbmRleCBhN2Y1YzQwMTE1NzdmZDhi
YmQ3NTA1YjkxOTI2M2UzZmFhYjA4MzQxLi41OTc3MmI3M2RlNWIwNjZmMGY5Y2VjYzUwNzFjMzZh
MWI2MzgwNjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
QlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL0JVSUxELmdu
CkBAIC0yNCw5ICsyNCw3IEBAIGFuZ2xlX3Rlc3QoInRlc3RfdXRpbHNfdW5pdHRlc3RfaGVscGVy
IikgewogICAgICJ0ZXN0X3V0aWxzL3J1bm5lci9UZXN0U3VpdGVfdW5pdHRlc3QuY3BwIiwKICAg
XQogCi0gIGRlcHMgPSBbCi0gICAgIiRhbmdsZV9yb290OmFuZ2xlX2NvbW1vbiIsCi0gIF0KKyAg
ZGVwcyA9IFsgIiRhbmdsZV9yb290OmFuZ2xlX2NvbW1vbiIgXQogfQogCiB0ZXN0X2V4cGVjdGF0
aW9uc19zb3VyY2VzID0gWwpAQCAtNTksNiArNTcsNTMgQEAgYW5nbGVfc3RhdGljX2xpYnJhcnko
ImFuZ2xlX3Rlc3RfZXhwZWN0YXRpb25zIikgewogICB9CiB9CiAKK2NvbmZpZygiYW5nbGVfY29t
bW9uX3Rlc3RfdXRpbHNfY29uZmlnIikgeworICBpbmNsdWRlX2RpcnMgPSBbICIuIiBdCit9CisK
K3RlbXBsYXRlKCJhbmdsZV9jb21tb25fdGVzdF91dGlscyIpIHsKKyAgYXNzZXJ0KGRlZmluZWQo
aW52b2tlci5hbmdsZV91dGlsKSkKKyAgYW5nbGVfc291cmNlX3NldCh0YXJnZXRfbmFtZSkgewor
ICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIHB1YmxpY19jb25maWdzID0gWworICAgICAgIjphbmds
ZV9jb21tb25fdGVzdF91dGlsc19jb25maWciLAorICAgICAgIiRhbmdsZV9yb290OmxpYnJhcnlf
bmFtZV9jb25maWciLAorICAgIF0KKyAgICBwdWJsaWNfZGVwcyA9IFsKKyAgICAgICIkYW5nbGVf
cm9vdDphbmdsZV9jb21tb24iLAorICAgICAgIiRhbmdsZV9yb290OmFuZ2xlX2dwdV9pbmZvX3V0
aWwiLAorICAgICAgIiRhbmdsZV9yb290L3V0aWw6JHtpbnZva2VyLmFuZ2xlX3V0aWx9IiwKKyAg
ICAgICIvL3Rlc3RpbmcvZ21vY2siLAorICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCisgICAgICAi
Ly90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0Omdtb2NrIiwKKyAgICAgICIvL3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3Q6Z3Rlc3QiLAorICAgIF0KKyAgICBzb3VyY2VzID0gWworICAgICAgInRlc3RfdXRp
bHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcCIsCisgICAgICAidGVzdF91dGlscy9hbmdsZV90ZXN0
X2NvbmZpZ3MuaCIsCisgICAgICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNw
cCIsCisgICAgICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiLAorICAgICAg
InRlc3RfdXRpbHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5jcHAiLAorICAgICAgInRlc3RfdXRpbHMv
YW5nbGVfdGVzdF9wbGF0Zm9ybS5oIiwKKyAgICAgICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIsCisg
ICAgXQorICAgIGlmIChpc19tYWMpIHsKKyAgICAgIHNvdXJjZXMgKz0gWworICAgICAgICAidGVz
dF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlX2FwcGxlLmgiLAorICAgICAgICAidGVzdF91
dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlX2FwcGxlLm1tIiwKKyAgICAgIF0KKyAgICB9Cisg
IH0KK30KKworYW5nbGVfY29tbW9uX3Rlc3RfdXRpbHMoImFuZ2xlX2NvbW1vbl90ZXN0X3V0aWxz
X3NoYXJlZCIpIHsKKyAgYW5nbGVfdXRpbCA9ICJhbmdsZV91dGlsIgorfQorCithbmdsZV9jb21t
b25fdGVzdF91dGlscygiYW5nbGVfY29tbW9uX3Rlc3RfdXRpbHNfc3RhdGljIikgeworICBhbmds
ZV91dGlsID0gImFuZ2xlX3V0aWxfc3RhdGljIgorfQorCiBhbmdsZV90ZXN0KCJhbmdsZV91bml0
dGVzdHMiKSB7CiAgIHNvdXJjZXMgPSBhbmdsZV91bml0dGVzdHNfc291cmNlcwogICBtYWluID0g
ImFuZ2xlX3VuaXR0ZXN0X21haW4iCkBAIC04MSw5ICsxMjYsNyBAQCBhbmdsZV90ZXN0KCJhbmds
ZV91bml0dGVzdHMiKSB7CiAgIGlmICghaXNfYW5kcm9pZCAmJiAhaXNfZnVjaHNpYSkgewogICAg
ICMgU3lzdGVtVXRpbHMuUnVuQXBwLCB0aGUgb25seSB1bml0dGVzdCB1c2luZyBhIGhlbHBlciBi
aW5hcnksIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlc2UKICAgICAjIHBsYXRmb3JtcyB5ZXQuCi0g
ICAgZGF0YV9kZXBzID0gWwotICAgICAgIjp0ZXN0X3V0aWxzX3VuaXR0ZXN0X2hlbHBlciIsCi0g
ICAgXQorICAgIGRhdGFfZGVwcyA9IFsgIjp0ZXN0X3V0aWxzX3VuaXR0ZXN0X2hlbHBlciIgXQog
ICB9CiB9CiAKQEAgLTExMSwxNyArMTU0LDEyIEBAIGlmIChpc193aW4gfHwgaXNfbGludXggfHwg
aXNfbWFjIHx8IGlzX2FuZHJvaWQgfHwgaXNfZnVjaHNpYSkgewogICAgICAgc291cmNlcyArPSBh
bmdsZV9lbmQyZW5kX3Rlc3RzX3gxMV9zb3VyY2VzCiAgICAgfQogCi0gICAgY29uZmlncyArPSBb
Ci0gICAgICAiJHthbmdsZV9yb290fTpsaWJBTkdMRV9jb25maWciLAotICAgICAgIiR7YW5nbGVf
cm9vdH06bGlicmFyeV9uYW1lX2NvbmZpZyIsCi0gICAgXQorICAgIGNvbmZpZ3MgKz0gWyAiJHth
bmdsZV9yb290fTpsaWJBTkdMRV9jb25maWciIF0KIAogICAgIGRlcHMgPSBbCisgICAgICAiOmFu
Z2xlX2NvbW1vbl90ZXN0X3V0aWxzX3NoYXJlZCIsCiAgICAgICAiOmFuZ2xlX3Rlc3RfZXhwZWN0
YXRpb25zIiwKLSAgICAgICIkYW5nbGVfcm9vdDphbmdsZV9ncHVfaW5mb191dGlsIiwKICAgICAg
ICIkYW5nbGVfcm9vdDphbmdsZV9pbWFnZV91dGlsIiwKLSAgICAgICIkYW5nbGVfcm9vdC91dGls
OmFuZ2xlX3V0aWwiLAotICAgICAgIiRhbmdsZV9yb290L3V0aWw6YW5nbGVfdXRpbF9sb2FkZXJf
aGVhZGVycyIsCiAgICAgXQogCiAgICAgZGF0YV9kZXBzID0gWwpAQCAtMTU5LDIyICsxOTcsMTUg
QEAgaWYgKGlzX3dpbiB8fCBpc19saW51eCB8fCBpc19tYWMgfHwgaXNfYW5kcm9pZCkgewogICAg
ICAgc291cmNlcyArPSBhbmdsZV93aGl0ZV9ib3hfdGVzdHNfd2luX3NvdXJjZXMKICAgICB9CiAK
LSAgICBpZiAoaXNfbWFjKSB7Ci0gICAgICBzb3VyY2VzICs9IGFuZ2xlX3doaXRlX2JveF90ZXN0
c19tYWNfc291cmNlcwotICAgIH0KLQotICAgIGNvbmZpZ3MgKz0gWwotICAgICAgIiR7YW5nbGVf
cm9vdH06bGliQU5HTEVfY29uZmlnIiwKLSAgICAgICIke2FuZ2xlX3Jvb3R9OmxpYnJhcnlfbmFt
ZV9jb25maWciLAotICAgIF0KKyAgICBjb25maWdzICs9IFsgIiR7YW5nbGVfcm9vdH06bGliQU5H
TEVfY29uZmlnIiBdCiAKICAgICBkZXBzID0gWworICAgICAgIjphbmdsZV9jb21tb25fdGVzdF91
dGlsc19zdGF0aWMiLAogICAgICAgIiRhbmdsZV9yb290OmxpYkFOR0xFIiwKICAgICAgICIkYW5n
bGVfcm9vdDpsaWJFR0xfc3RhdGljIiwKICAgICAgICIkYW5nbGVfcm9vdDpsaWJHTEVTdjJfc3Rh
dGljIiwKICAgICAgICIkYW5nbGVfcm9vdDpwcmVwcm9jZXNzb3IiLAogICAgICAgIiRhbmdsZV9y
b290OnRyYW5zbGF0b3IiLAotICAgICAgIiRhbmdsZV9yb290L3V0aWw6YW5nbGVfdXRpbF9zdGF0
aWMiLAogICAgIF0KIAogICAgIGRlcHMgKz0gWyAiJHthbmdsZV9yb290fTphbmdsZV9nbF9lbnVt
X3V0aWxzIiBdCkBAIC0xODgsNiArMjE5LDM4IEBAIGlmIChpc193aW4gfHwgaXNfbGludXggfHwg
aXNfbWFjIHx8IGlzX2FuZHJvaWQpIHsKICAgfQogfQogCit0ZW1wbGF0ZSgiYW5nbGVfcGVyZnRl
c3RzX2NvbW1vbiIpIHsKKyAgYXNzZXJ0KGRlZmluZWQoaW52b2tlci50ZXN0X3V0aWxzKSkKKwor
ICBhbmdsZV9zb3VyY2Vfc2V0KHRhcmdldF9uYW1lKSB7CisgICAgdGVzdG9ubHkgPSB0cnVlCisg
ICAgc291cmNlcyA9IFsKKyAgICAgICIuLi90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9l
dmVudC5oIiwKKyAgICAgICJwZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuY3BwIiwKKyAgICAgICJw
ZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuaCIsCisgICAgICAicGVyZl90ZXN0cy9BTkdMRVBlcmZU
ZXN0QXJncy5jcHAiLAorICAgICAgInBlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3MuaCIsCisg
ICAgICAicGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuY3BwIiwKKyAgICAgICJwZXJmX3Rl
c3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5oIiwKKyAgICAgICJwZXJmX3Rlc3RzL3RoaXJkX3BhcnR5
L3BlcmYvcGVyZl9yZXN1bHRfcmVwb3J0ZXIuY2MiLAorICAgICAgInBlcmZfdGVzdHMvdGhpcmRf
cGFydHkvcGVyZi9wZXJmX3Jlc3VsdF9yZXBvcnRlci5oIiwKKyAgICAgICJwZXJmX3Rlc3RzL3Ro
aXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjIiwKKyAgICAgICJwZXJmX3Rlc3RzL3RoaXJkX3Bh
cnR5L3BlcmYvcGVyZl90ZXN0LmgiLAorICAgIF0KKyAgICBkZXBzID0gWyAiJGFuZ2xlX2pzb25j
cHBfZGlyOmpzb25jcHAiIF0KKyAgICBwdWJsaWNfZGVwcyA9IFsgIiR7aW52b2tlci50ZXN0X3V0
aWxzfSIgXQorICAgIHB1YmxpY19jb25maWdzICs9IFsgIiR7YW5nbGVfcm9vdH06bGliQU5HTEVf
Y29uZmlnIiBdCisgIH0KK30KKworYW5nbGVfcGVyZnRlc3RzX2NvbW1vbigiYW5nbGVfcGVyZnRl
c3RzX3NoYXJlZCIpIHsKKyAgdGVzdF91dGlscyA9ICI6YW5nbGVfY29tbW9uX3Rlc3RfdXRpbHNf
c2hhcmVkIgorfQorCithbmdsZV9wZXJmdGVzdHNfY29tbW9uKCJhbmdsZV9wZXJmdGVzdHNfc3Rh
dGljIikgeworICB0ZXN0X3V0aWxzID0gIjphbmdsZV9jb21tb25fdGVzdF91dGlsc19zdGF0aWMi
Cit9CisKIGlmIChpc193aW4gfHwgaXNfbGludXggfHwgaXNfYW5kcm9pZCB8fCBpc19tYWMpIHsK
ICAgaW1wb3J0KCJhbmdsZV9wZXJmdGVzdHMuZ25pIikKIApAQCAtMTk4LDE3ICsyNjEsMTIgQEAg
aWYgKGlzX3dpbiB8fCBpc19saW51eCB8fCBpc19hbmRyb2lkIHx8IGlzX21hYykgewogICAgIG1h
aW4gPSAiYW5nbGVfcGVyZnRlc3RzX21haW4iCiAKICAgICBkZXBzID0gWwotICAgICAgIiRhbmds
ZV9qc29uY3BwX2Rpcjpqc29uY3BwIiwKKyAgICAgICI6YW5nbGVfcGVyZnRlc3RzX3N0YXRpYyIs
CiAgICAgICAiJGFuZ2xlX3Jvb3Q6bGliQU5HTEUiLAogICAgICAgIiRhbmdsZV9yb290OmxpYkVH
TF9zdGF0aWMiLAogICAgICAgIiRhbmdsZV9yb290OmxpYkdMRVN2Ml9zdGF0aWMiLAotICAgICAg
IiRhbmdsZV9yb290L3V0aWw6YW5nbGVfdXRpbF9zdGF0aWMiLAogICAgIF0KIAotICAgIGlmIChp
c193aW4pIHsKLSAgICAgIHNvdXJjZXMgKz0gYW5nbGVfd2hpdGVfYm94X3BlcmZfdGVzdHNfd2lu
X3NvdXJjZXMKLSAgICB9Ci0KICAgICAjIFRoZXNlIHRlc3RzIGRlcGVuZCBvbiB2dWxrYW5fY29t
bWFuZF9idWZmZXJfdXRpbHMsIHdoaWNoIGlzCiAgICAgIyBub3QgeWV0IGNvbXBhdGlibGUgd2l0
aCBtYWMKICAgICBpZiAoYW5nbGVfZW5hYmxlX3Z1bGthbiAmJiAhaXNfbWFjKSB7CkBAIC0yMTgs
MTggKzI3Niw0MyBAQCBpZiAoaXNfd2luIHx8IGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQgfHwgaXNf
bWFjKSB7CiAgICAgICAgICIkYW5nbGVfcm9vdC9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
OmFuZ2xlX3Z1bGthbl9lbnRyeV9wb2ludHMiLAogICAgICAgXQogICAgIH0KLQotICAgIGNvbmZp
Z3MgKz0gWwotICAgICAgIiR7YW5nbGVfanNvbmNwcF9kaXJ9Ompzb25jcHBfY29uZmlnIiwKLSAg
ICAgICIke2FuZ2xlX3Jvb3R9OmxpYkFOR0xFX2NvbmZpZyIsCi0gICAgICAiJHthbmdsZV9yb290
fTpsaWJyYXJ5X25hbWVfY29uZmlnIiwKLSAgICBdCiAgIH0KIH0KIAogaWYgKGlzX3dpbiB8fCBp
c19saW51eCB8fCBpc19hbmRyb2lkIHx8IGlzX21hYyB8fCBpc19mdWNoc2lhKSB7CiAgIGltcG9y
dCgiYW5nbGVfcGVyZnRlc3RzLmduaSIpCiAKKyAgYW5nbGVfc291cmNlX3NldCgiYW5nbGVfdHJh
Y2VfcGVyZnRlc3RzIikgeworICAgIHRlc3Rvbmx5ID0gdHJ1ZQorICAgIGlmIChidWlsZF9hbmds
ZV90cmFjZV9wZXJmX3Rlc3RzKSB7CisgICAgICBpbXBvcnQoInBlcmZfdGVzdHMvcmVzdHJpY3Rl
ZF90cmFjZXMvYW5nbGVfdHJhY2VfcGVyZl90ZXN0cy5nbmkiKQorICAgICAgc291cmNlcyA9IGFu
Z2xlX3RyYWNlX3BlcmZfc291cmNlcworICAgICAgZGVmaW5lcyA9IGFuZ2xlX3RyYWNlX3BlcmZf
ZGVmaW5lcworICAgICAgZGF0YSA9IGFuZ2xlX3RyYWNlX3BlcmZfZGF0YQorICAgICAgZGVwcyA9
IFsKKyAgICAgICAgIjphbmdsZV9wZXJmdGVzdHNfc2hhcmVkIiwKKyAgICAgICAgIiRhbmdsZV9y
b290OmFuZ2xlX2NvbXByZXNzaW9uIiwKKyAgICAgIF0KKyAgICAgIHN1cHByZXNzZWRfY29uZmln
cyArPQorICAgICAgICAgIFsgIiRhbmdsZV9yb290OmNvbnN0cnVjdG9yX2FuZF9kZXN0cnVjdG9y
X3dhcm5pbmdzIiBdCisKKyAgICAgICMgRGlzYWJsZSBvcHRpbWl6YXRpb24gaW4gdGhlIHRyYWNl
IHBlcmYgdGVzdHMgdG8gYXZvaWQgb3B0aW1pemluZyBodWdlIGZpbGVzLgorICAgICAgaWYgKCFp
c19kZWJ1ZykgeworICAgICAgICBzdXBwcmVzc2VkX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6ZGVmYXVsdF9vcHRpbWl6YXRpb24iIF0KKyAgICAgICAgY29uZmlncyArPSBb
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19vcHRpbWl6ZSIgXQorICAgICAgfQorCisgICAg
ICAjIFRPRE8oam1hZGlsbC9jbm9ydGhyb3ApOiBMaWZ0IGFmdGVyIHRyYWNlcyB1cGRhdGVkLiBo
dHRwOi8vYW5nbGVidWcuY29tLzM2MzAKKyAgICAgIGlmIChpc193aW4gJiYgY3VycmVudF9jcHUg
PT0gIng4NiIpIHsKKyAgICAgICAgaWYgKGlzX2NsYW5nKSB7CisgICAgICAgICAgY2ZsYWdzX2Nj
ID0gWyAiLVduby1zaG9ydGVuLTY0LXRvLTMyIiBdCisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgY2ZsYWdzX2NjID0gWyAiL3dkNDI0NCIgXQorICAgICAgICB9CisgICAgICB9CisgICAgfQor
ICB9CisKICAgIyBUaGlzIHRlc3Qgc3VpdGUgaXMgZGVzaWduZWQgdG8gcnVuIGFnYWluc3QgYSBn
ZW5lcmljIEdMIGltcGxlbWVudGF0aW9uLgogICBhbmdsZV90ZXN0KCJhbmdsZV9wZXJmdGVzdHMi
KSB7CiAgICAgaW5jbHVkZV9kaXJzID0gWyAiLiIgXQpAQCAtMjM3LDEyICszMjAsOCBAQCBpZiAo
aXNfd2luIHx8IGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQgfHwgaXNfbWFjIHx8IGlzX2Z1Y2hzaWEp
IHsKICAgICBtYWluID0gImFuZ2xlX3BlcmZ0ZXN0c19tYWluIgogCiAgICAgZGVwcyA9IFsKLSAg
ICAgICIkYW5nbGVfanNvbmNwcF9kaXI6anNvbmNwcCIsCi0gICAgICAiJGFuZ2xlX3Jvb3Q6YW5n
bGVfY29tbW9uIiwKLSAgICAgICIkYW5nbGVfcm9vdDphbmdsZV9ncHVfaW5mb191dGlsIiwKLSAg
ICAgICIkYW5nbGVfcm9vdDphbmdsZV9zeXN0ZW1fdXRpbHMiLAotICAgICAgIiRhbmdsZV9yb290
L3V0aWw6YW5nbGVfdXRpbCIsCi0gICAgICAiJGFuZ2xlX3Jvb3QvdXRpbDphbmdsZV91dGlsX2xv
YWRlcl9oZWFkZXJzIiwKKyAgICAgICI6YW5nbGVfcGVyZnRlc3RzX3NoYXJlZCIsCisgICAgICAi
OmFuZ2xlX3RyYWNlX3BlcmZ0ZXN0cyIsCiAgICAgICAiJGFuZ2xlX3NwaXJ2X3Rvb2xzX2Rpcjpz
cHZ0b29sc192YWwiLAogICAgIF0KIApAQCAtMjUxLDEyICszMzAsNiBAQCBpZiAoaXNfd2luIHx8
IGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQgfHwgaXNfbWFjIHx8IGlzX2Z1Y2hzaWEpIHsKICAgICAg
ICIke2FuZ2xlX3Jvb3R9OmxpYkdMRVN2MiIsCiAgICAgXQogCi0gICAgY29uZmlncyArPSBbCi0g
ICAgICAiJHthbmdsZV9qc29uY3BwX2Rpcn06anNvbmNwcF9jb25maWciLAotICAgICAgIiR7YW5n
bGVfcm9vdH06bGliQU5HTEVfY29uZmlnIiwKLSAgICAgICIke2FuZ2xlX3Jvb3R9OmxpYnJhcnlf
bmFtZV9jb25maWciLAotICAgIF0KLQogICAgIGlmIChpc193aW4gfHwgaXNfbGludXgpIHsKICAg
ICAgIGRhdGFfZGVwcyArPSBbICIke2FuZ2xlX3Jvb3R9L3RoaXJkX3BhcnR5L2dsbWFyazI6Z2xt
YXJrMl9hbmdsZSIgXQogICAgIH0KQEAgLTI2NywxMSArMzQwLDkgQEAgaWYgKGlzX3dpbiB8fCBp
c19saW51eCB8fCBpc19hbmRyb2lkIHx8IGlzX21hYyB8fCBpc19mdWNoc2lhKSB7CiAgICAgICBk
YXRhX2RlcHMgKz0gWyAiJHthbmdsZV9yb290fS90aGlyZF9wYXJ0eS9nbG1hcmsyOmdsbWFyazJf
Z2x4IiBdCiAgICAgfQogCi0gICAgaWYgKGJ1aWxkX2FuZ2xlX3RyYWNlX3BlcmZfdGVzdHMpIHsK
LSAgICAgIGltcG9ydCgicGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9hbmdsZV90cmFjZV9w
ZXJmX3Rlc3RzLmduaSIpCi0gICAgICBzb3VyY2VzICs9IGFuZ2xlX3RyYWNlX3BlcmZfc291cmNl
cwotICAgICAgZGVmaW5lcyArPSBhbmdsZV90cmFjZV9wZXJmX2RlZmluZXMKLSAgICAgIGRhdGEg
Kz0gYW5nbGVfdHJhY2VfcGVyZl9kYXRhCisgICAgaWYgKGlzX2NsYW5nKSB7CisgICAgICAjIEFs
bG93cyB1cyB0byBlZGl0IHRyYWNlcyBhbmQgcmVtb3ZlIGNodW5rcyBvZiBjb2RlIHdpdGhvdXQg
Y29tcGlsZSB3YXJuaW5ncy4KKyAgICAgIGNmbGFnc19jYyA9IFsgIi1Xbm8tdW51c2VkLWNvbnN0
LXZhcmlhYmxlIiBdCiAgICAgfQogICB9CiB9CkBAIC00NzgsNiArNTQ5LDcgQEAgaWYgKGJ1aWxk
X2FuZ2xlX2dsZXMxX2NvbmZvcm1fdGVzdHMpIHsKIAogICBhbmdsZV90ZXN0KCJhbmdsZV9nbGVz
MV9jb25mb3JtYW5jZV90ZXN0cyIpIHsKICAgICBkZXBzID0gWworICAgICAgIjphbmdsZV9jb21t
b25fdGVzdF91dGlsc19zdGF0aWMiLAogICAgICAgIjphbmdsZV9nbGVzMV9jb25mb3JtYW5jZV9u
b19ndGVzdCIsCiAgICAgXQogCkBAIC00ODcsMjUgKzU1OSwxMSBAQCBpZiAoYnVpbGRfYW5nbGVf
Z2xlczFfY29uZm9ybV90ZXN0cykgewogICAgICAgImdsZXMxX2NvbmZvcm1hbmNlX3Rlc3RzL0Nv
bmZvcm1hbmNlVGVzdHMuY3BwIiwKICAgICAgICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAiLAog
ICAgICAgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiLAotICAgICAgInRlc3RfdXRpbHMvYW5nbGVf
dGVzdF9jb25maWdzLmNwcCIsCi0gICAgICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3Mu
aCIsCi0gICAgICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcCIsCi0gICAg
ICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiLAotICAgICAgInRlc3RfdXRp
bHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5jcHAiLAotICAgICAgInRlc3RfdXRpbHMvYW5nbGVfdGVz
dF9wbGF0Zm9ybS5oIiwKLSAgICAgICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIsCiAgICAgXQotICAg
IGlmIChpc19tYWMpIHsKLSAgICAgIHNvdXJjZXMgKz0gWwotICAgICAgICAidGVzdF91dGlscy9h
bmdsZV90ZXN0X2luc3RhbnRpYXRlX2FwcGxlLmgiLAotICAgICAgICAidGVzdF91dGlscy9hbmds
ZV90ZXN0X2luc3RhbnRpYXRlX2FwcGxlLm1tIiwKLSAgICAgIF0KLSAgICB9CiAgICAgbWFpbiA9
ICJhbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4iCiAKICAgICBjb25maWdzICs9IFsKICAgICAgICIk
e2FuZ2xlX3Jvb3R9OmxpYkFOR0xFX2NvbmZpZyIsCi0gICAgICAiJHthbmdsZV9yb290fTpsaWJy
YXJ5X25hbWVfY29uZmlnIiwKICAgICAgICIke2FuZ2xlX3Jvb3R9OmFuZ2xlX2JhY2tlbmRfY29u
ZmlnIiwKICAgICBdCiAgIH0KQEAgLTU0Myw3ICs2MDEsOCBAQCBpZiAoYnVpbGRfYW5nbGVfZGVx
cF90ZXN0cyAmJiAhaXNfZnVjaHNpYSkgewogICAgICAgICAiL3dkNDcwMSIsICAjIHBvdGVudGlh
bGx5IHVuaW5pdCB1c2VkCiAgICAgICAgICIvd2Q0NzAyIiwgICMgdW5yZWFjaGFibGUgY29kZQog
ICAgICAgICAiL3dkNDcwNiIsICAjIGFzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJl
c3Npb24KLSAgICAgICAgIi93ZDQ4MzQiLCAgIyBkaXNjYXJkaW5nIHJldHVybiB2YWx1ZSBvZiBm
dW5jdGlvbiB3aXRoICdub2Rpc2NhcmQnIGF0dHJpYnV0ZQorICAgICAgICAiL3dkNDgzNCIsICAj
IGRpc2NhcmRpbmcgcmV0dXJuIHZhbHVlIG9mIGZ1bmN0aW9uIHdpdGggJ25vZGlzY2FyZCcKKyAg
ICAgICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGUKICAgICAgICAgIi93ZDQ4MzgiLCAgIyBjb252
ZXJzaW9uIHJlcXVpcmVzIGEgbmFycm93aW5nIGNvbnZlcnNpb24KICAgICAgICAgIi93ZDQ5OTYi
LCAgIyBkZXByZWNhdGVkCiAgICAgICBdCkBAIC01NzEsMTAgKzYzMCwxMiBAQCBpZiAoYnVpbGRf
YW5nbGVfZGVxcF90ZXN0cyAmJiAhaXNfZnVjaHNpYSkgewogICAgICAgY2ZsYWdzX2MgPSBbICIt
V25vLXVudXNlZC1sb2NhbC10eXBlZGVmIiBdCiAgICAgICBjZmxhZ3NfY2MgPSBbCiAgICAgICAg
ICItV25vLXNpemVvZi1hcnJheS1kaXYiLCAgIyBodHRwczovL2dpdGxhYi5raHJvbm9zLm9yZy9U
cmFja2VyL3ZrLWdsLWN0cy9pc3N1ZXMvMjEyNwotICAgICAgICAiLVduby1zdHJpbmctY29udmVy
c2lvbiIsICAjIGltcGxpY2l0IGNvbnZlcnNpb24gdHVybnMgc3RyaW5nIGxpdGVyYWwgaW50byBi
b29sCisgICAgICAgICItV25vLXN0cmluZy1jb252ZXJzaW9uIiwgICMgaW1wbGljaXQgY29udmVy
c2lvbiB0dXJucyBzdHJpbmcgbGl0ZXJhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIGludG8gYm9vbAogICAgICAgICAiLVduby11bnVzZWQtZnVuY3Rpb24iLAogICAgICAg
ICAiLVduby11bnVzZWQtbG9jYWwtdHlwZWRlZiIsCi0gICAgICAgICItV25vLXVudXNlZC1yZXN1
bHQiLCAgIyBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb24gZGVjbGFyZWQgd2l0aCAn
bm9kaXNjYXJkJyBhdHRyaWJ1dGUKKyAgICAgICAgIi1Xbm8tdW51c2VkLXJlc3VsdCIsICAjIGln
bm9yaW5nIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIyAnbm9kaXNjYXJkJyBhdHRyaWJ1dGUKICAgICAgIF0KICAg
ICB9CiAKQEAgLTcwNCw5ICs3NjUsNyBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90ZXN0cyAmJiAh
aXNfZnVjaHNpYSkgewogICAgICAgIjphbmdsZV9kZXFwX3N1cHBvcnQiLAogICAgIF0KIAotICAg
IHB1YmxpY19kZXBzID0gWwotICAgICAgIjphbmdsZV9kZXFwX2ZyYW1ld29ya19kZWJhc2UiLAot
ICAgIF0KKyAgICBwdWJsaWNfZGVwcyA9IFsgIjphbmdsZV9kZXFwX2ZyYW1ld29ya19kZWJhc2Ui
IF0KICAgfQogCiAgIGNvbmZpZygiYW5nbGVfZGVxcF9mcmFtZXdvcmtfY29tbW9uX2NvbmZpZyIp
IHsKQEAgLTczNyw5ICs3OTYsNyBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90ZXN0cyAmJiAhaXNf
ZnVjaHNpYSkgewogICBhbmdsZV9kZXFwX3NvdXJjZV9zZXQoImFuZ2xlX2RlcXBfZnJhbWV3b3Jr
X29wZW5nbCIpIHsKICAgICBzb3VyY2VzID0gZGVxcF9mcmFtZXdvcmtfb3BlbmdsX3NvdXJjZXMK
ICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmdsZV9kZXFwX2ZyYW1ld29ya19vcGVuZ2xfY29u
ZmlnIiBdCi0gICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAiOmFuZ2xlX2RlcXBfZnJhbWV3b3Jr
X2NvbW1vbiIsCi0gICAgXQorICAgIHB1YmxpY19kZXBzID0gWyAiOmFuZ2xlX2RlcXBfZnJhbWV3
b3JrX2NvbW1vbiIgXQogICB9CiAKICAgY29uZmlnKCJhbmdsZV9kZXFwX2ZyYW1ld29ya19lZ2xf
Y29uZmlnIikgewpAQCAtNzUyLDkgKzgwOSw3IEBAIGlmIChidWlsZF9hbmdsZV9kZXFwX3Rlc3Rz
ICYmICFpc19mdWNoc2lhKSB7CiAgIGFuZ2xlX2RlcXBfc291cmNlX3NldCgiYW5nbGVfZGVxcF9m
cmFtZXdvcmtfZWdsIikgewogICAgIHNvdXJjZXMgPSBkZXFwX2ZyYW1ld29ya19lZ2xfc291cmNl
cwogICAgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xlX2RlcXBfZnJhbWV3b3JrX2VnbF9jb25m
aWciIF0KLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAgICI6YW5nbGVfZGVxcF9mcmFtZXdvcmtf
b3BlbmdsIiwKLSAgICBdCisgICAgcHVibGljX2RlcHMgPSBbICI6YW5nbGVfZGVxcF9mcmFtZXdv
cmtfb3BlbmdsIiBdCiAgIH0KIAogICBjb25maWcoImFuZ2xlX2RlcXBfZnJhbWV3b3JrX3FwaGVs
cGVyX2NvbmZpZyIpIHsKQEAgLTc3Niw5ICs4MzEsNyBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90
ZXN0cyAmJiAhaXNfZnVjaHNpYSkgewogCiAgIGFuZ2xlX2RlcXBfc291cmNlX3NldCgiYW5nbGVf
ZGVxcF9nbHNoYXJlZCIpIHsKICAgICBzb3VyY2VzID0gZGVxcF9nbHNoYXJlZF9zb3VyY2VzCi0g
ICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAiOmFuZ2xlX2RlcXBfZnJhbWV3b3JrX29wZW5nbCIs
Ci0gICAgXQorICAgIHB1YmxpY19kZXBzID0gWyAiOmFuZ2xlX2RlcXBfZnJhbWV3b3JrX29wZW5n
bCIgXQogICAgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xlX2RlcXBfZ2xzaGFyZWRfY29uZmln
IiBdCiAgIH0KIApAQCAtODU1LDEyICs5MDgsOCBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90ZXN0
cyAmJiAhaXNfZnVjaHNpYSkgewogICAgIGlmICghYnVpbGRfd2l0aF9jaHJvbWl1bSkgewogICAg
ICAgYW5nbGVfZXhlY3V0YWJsZSgiYW5nbGVfZGVxcF8ke19hcGl9X25vX2d0ZXN0IikgewogICAg
ICAgICB0ZXN0b25seSA9IHRydWUKLSAgICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgICAiZGVx
cF9zdXBwb3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAiLAotICAgICAgICBdCi0gICAgICAg
IGRlcHMgPSBbCi0gICAgICAgICAgIjokc2hhcmVkX2xpYnJhcnlfbmFtZSIsCi0gICAgICAgIF0K
KyAgICAgICAgc291cmNlcyA9IFsgImRlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4u
Y3BwIiBdCisgICAgICAgIGRlcHMgPSBbICI6JHNoYXJlZF9saWJyYXJ5X25hbWUiIF0KICAgICAg
IH0KICAgICB9CiAKQEAgLTg3Myw5ICs5MjIsNyBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90ZXN0
cyAmJiAhaXNfZnVjaHNpYSkgewogICAgICAgXQogCiAgICAgICAjIE11c3QgYmUgaW5jbHVkZWQg
b3V0c2lkZSBvZiB0aGUgc291cmNlIHNldCBmb3IgdGhlIGRlZmluZQotICAgICAgc291cmNlcyA9
IFsKLSAgICAgICAgImRlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcCIsCi0gICAgICBd
CisgICAgICBzb3VyY2VzID0gWyAiZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3QuY3BwIiBd
CiAgICAgICBtYWluID0gImFuZ2xlX2RlcXBfdGVzdHNfbWFpbiIKIAogICAgICAgZGF0YSA9IFsK
QEAgLTkwOSw5ICs5NTYsNyBAQCBpZiAoYnVpbGRfYW5nbGVfZGVxcF90ZXN0cyAmJiAhaXNfZnVj
aHNpYSkgewogICAgICAgICBkYXRhID0gYW5nbGVfZGVxcF9kYXRhX2dsZXMzMQogICAgICAgfSBl
bHNlIHsKICAgICAgICAgIyBNYWtlIHN1cmUgd2UgaW5jbHVkZSBzb21ldGhpbmcgc28gdGhhdCBh
bmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCBjYW4gZmluZCBzb21ldGhpbmcuCi0gICAgICAg
IGRhdGEgPSBbCi0gICAgICAgICAgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9n
bGVzMi9zaGFkZXJzL21pc2MudGVzdCIsCi0gICAgICAgIF0KKyAgICAgICAgZGF0YSA9IFsgIiRy
b290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMi9zaGFkZXJzL21pc2MudGVzdCIg
XQogICAgICAgfQogICAgIH0KICAgfQpAQCAtOTUzLDcgKzk5OCw4IEBAIGlmIChidWlsZF9hbmds
ZV9kZXFwX3Rlc3RzICYmICFpc19mdWNoc2lhKSB7CiAgICAgICAiJGRlcXBfcGF0aC9leHRlcm5h
bC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0IiwKICAgICBdCiAgICAgaWYgKGlzX2NsYW5nKSB7
Ci0gICAgICBjZmxhZ3MgPSBbICItV25vLWhlYWRlci1oeWdpZW5lIiBdICAjIHVzaW5nIG5hbWVz
cGFjZSBkaXJlY3RpdmUgaW4gZ2xvYmFsIGNvbnRleHQgaW4gaGVhZGVyCisgICAgICBjZmxhZ3Mg
PSBbICItV25vLWhlYWRlci1oeWdpZW5lIiBdICAjIHVzaW5nIG5hbWVzcGFjZSBkaXJlY3RpdmUg
aW4gZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNv
bnRleHQgaW4gaGVhZGVyCiAgICAgfQogICB9CiAKQEAgLTk3OCw5ICsxMDI0LDcgQEAgaWYgKGJ1
aWxkX2FuZ2xlX2RlcXBfdGVzdHMgJiYgIWlzX2Z1Y2hzaWEpIHsKICAgdGVtcGxhdGUoImFuZ2xl
X2RlcXBfa2hyX2d0ZXN0IikgewogICAgIGFuZ2xlX2RlcXBfZ3Rlc3QodGFyZ2V0X25hbWUpIHsK
ICAgICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52b2tlciwgIioiKQotICAgICAgZGVwcyA9
IFsKLSAgICAgICAgIjphbmdsZV9kZXFwX2tocl9jb21tb24iLAotICAgICAgXQorICAgICAgZGVw
cyA9IFsgIjphbmdsZV9kZXFwX2tocl9jb21tb24iIF0KICAgICAgIGRlcHMgKz0gYW5nbGVfZGVx
cF9kYXRhX2NvcHlfdGFyZ2V0cwogICAgICAgZGF0YSA9IGFuZ2xlX2RlcXBfZXh0ZXJuYWxfb3Bl
bmdsY3RzX2RhdGFfZ2xlczMKICAgICAgIG11c3RwYXNzX2RpciA9IF9raHJvbm9zX211c3RwYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvT1dORVJTIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL09XTkVSUwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTk3
MjVhMDcwMjIzODA5NGQ4MTQxODczNmExZjhkYjU5NDlmYTUzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL09XTkVSUwpAQCAtMCwwICsxLDIgQEAK
KyMgQWxsIGNvbW1pdHRlcnMgYXJlIGRlLWZhY3RvIG93bmVycyBvZiB0aGUgdGVzdHMuCitwZXIt
ZmlsZSAqPSoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9h
bmdsZV9lbmQyZW5kX3Rlc3RzLmduaSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9hbmdsZV9lbmQyZW5kX3Rlc3RzLmduaQppbmRleCA1MzVlMGY2MTBmYjI0MGIxMGViMWYwOTBm
MWJkYjUyMjhlNGQ0YjAyLi4zYmY5ODc1N2I1YzZlOTMzNTU0ZDc1YWNmNWZiY2NiZTRjM2ZlMjg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5k
MmVuZF90ZXN0cy5nbmkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Fu
Z2xlX2VuZDJlbmRfdGVzdHMuZ25pCkBAIC0zLDE0ICszLDMyIEBACiAjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAKIGFuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyA9IFsKKyAgImVnbF90
ZXN0cy9FR0xBbmRyb2lkRnJhbWVCdWZmZXJUYXJnZXRUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMv
RUdMQmFja3dhcmRzQ29tcGF0aWJsZUNvbnRleHRUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdM
QmxvYkNhY2hlVGVzdC5jcHAiLAorICAiZWdsX3Rlc3RzL0VHTENob29zZUNvbmZpZ1Rlc3QuY3Bw
IiwKKyAgImVnbF90ZXN0cy9FR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwIiwKKyAgImVn
bF90ZXN0cy9FR0xDb250ZXh0U2hhcmluZ1Rlc3QuY3BwIiwKKyAgImVnbF90ZXN0cy9FR0xDcmVh
dGVDb250ZXh0QXR0cmlic1Rlc3QuY3BwIiwKKyAgImVnbF90ZXN0cy9FR0xEZWJ1Z1Rlc3QuY3Bw
IiwKKyAgImVnbF90ZXN0cy9FR0xOb0NvbmZpZ0NvbnRleHRUZXN0LmNwcCIsCisgICJlZ2xfdGVz
dHMvRUdMUHJpbnRFR0xpbmZvVGVzdC5jcHAiLAorICAiZWdsX3Rlc3RzL0VHTFByb2dyYW1DYWNo
ZUNvbnRyb2xUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdMUXVlcnlDb250ZXh0VGVzdC5jcHAi
LAorICAiZWdsX3Rlc3RzL0VHTFJlY29yZGFibGVUZXN0LmNwcCIsCisgICJlZ2xfdGVzdHMvRUdM
Um9idXN0bmVzc1Rlc3QuY3BwIiwKKyAgImVnbF90ZXN0cy9FR0xTYW5pdHlDaGVja1Rlc3QuY3Bw
IiwKKyAgImVnbF90ZXN0cy9FR0xTdXJmYWNlVGVzdC5jcHAiLAorICAiZWdsX3Rlc3RzL0VHTFN1
cmZhY2VsZXNzQ29udGV4dFRlc3QuY3BwIiwKKyAgImVnbF90ZXN0cy9FR0xTeW5jVGVzdC5jcHAi
LAogICAiZ2xfdGVzdHMvQXRvbWljQ291bnRlckJ1ZmZlclRlc3QuY3BwIiwKICAgImdsX3Rlc3Rz
L0F0dHJpYnV0ZUxheW91dFRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL0JQVENDb21wcmVzc2VkVGV4
dHVyZVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0JpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QuY3Bw
IiwKICAgImdsX3Rlc3RzL0JpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcCIsCiAgICJnbF90ZXN0
cy9CbGVuZEZ1bmNFeHRlbmRlZFRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0JsZW5kTWluTWF4VGVz
dC5jcHAiLAogICAiZ2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LmNwcCIsCi0gICJn
bF90ZXN0cy9CUFRDQ29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9CdWZm
ZXJEYXRhVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvQnVpbHRpblZhcmlhYmxlVGVzdC5jcHAiLAog
ICAiZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcCIsCkBAIC0xOCwxMSArMzYsMTQgQEAgYW5nbGVfZW5k
MmVuZF90ZXN0c19zb3VyY2VzID0gWwogICAiZ2xfdGVzdHMvQ29sb3JNYXNrVGVzdC5jcHAiLAog
ICAiZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0NvbnRleHRM
b3N0VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvQ29udGV4dE5vRXJyb3JUZXN0LmNwcCIsCiAgICJn
bF90ZXN0cy9Db3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Db3B5
VGV4SW1hZ2VUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9Db3B5VGV4dHVyZVRlc3QuY3BwIiwKICAg
ImdsX3Rlc3RzL0NvcHlUZXh0dXJlM0RUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9Db3B5VGV4dHVy
ZVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAiLAorICAiZ2xf
dGVzdHMvRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvRFhUU1JH
QkNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvRGVidWdNYXJrZXJUZXN0
LmNwcCIsCiAgICJnbF90ZXN0cy9EZWJ1Z1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0RlcHRoU3Rl
bmNpbEZvcm1hdHNUZXN0LmNwcCIsCkBAIC0zMiw0MyArNTMsMTggQEAgYW5nbGVfZW5kMmVuZF90
ZXN0c19zb3VyY2VzID0gWwogICAiZ2xfdGVzdHMvRHJhd0Jhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VU
ZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9EcmF3QnVmZmVyc1Rlc3QuY3BwIiwKICAgImdsX3Rlc3Rz
L0RyYXdFbGVtZW50c1Rlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL0RYVDFDb21wcmVzc2VkVGV4dHVy
ZVRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL0RYVFNSR0JDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3Bw
IiwKICAgImdsX3Rlc3RzL0VUQ1RleHR1cmVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9FeHBsaWNp
dENvbnRleHRUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9FeHRlcm5hbFdyYXBUZXN0LmNwcCIsCiAg
ICJnbF90ZXN0cy9GZW5jZVN5bmNUZXN0cy5jcHAiLAogICAiZ2xfdGVzdHMvRmxvYXRpbmdQb2lu
dFN1cmZhY2VUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9GcmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rl
c3QuY3BwIiwKICAgImdsX3Rlc3RzL0ZyYW1lYnVmZmVyTXVsdGl2aWV3VGVzdC5jcHAiLAogICAi
Z2xfdGVzdHMvRnJhbWVidWZmZXJSZW5kZXJNaXBtYXBUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9G
cmFtZWJ1ZmZlclRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL0dMU0xUZXN0LmNwcCIsCiAgICJnbF90
ZXN0cy9HZW9tZXRyeVNoYWRlclRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0dldEltYWdlVGVzdC5j
cHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvQWxwaGFGdW5jVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMv
Z2xlczEvQmFzaWNEcmF3VGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvQ2xpZW50QWN0aXZl
VGV4dHVyZVRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL0NsaWVudFN0YXRlRW5hYmxlLmNw
cCIsCi0gICJnbF90ZXN0cy9nbGVzMS9DbGlwUGxhbmVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9n
bGVzMS9DdXJyZW50Q29sb3JUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9DdXJyZW50Tm9y
bWFsVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvZ2xlczEvQ3VycmVudFRleHR1cmVDb29yZHNUZXN0
LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9EcmF3VGV4dHVyZVRlc3QuY3BwIiwKLSAgImdsX3Rl
c3RzL2dsZXMxL0ZvZ1Rlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL01hdGVyaWFsc1Rlc3Qu
Y3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL01hdHJpeEJ1aWx0aW5zVGVzdC5jcHAiLAotICAiZ2xf
dGVzdHMvZ2xlczEvTWF0cml4TG9hZFRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL01hdHJp
eE1vZGVUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9NYXRyaXhNdWx0VGVzdC5jcHAiLAot
ICAiZ2xfdGVzdHMvZ2xlczEvTWF0cml4U3RhY2tUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVz
MS9MaWdodHNUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9Qb2ludFBhcmFtZXRlclRlc3Qu
Y3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL1BvaW50U3ByaXRlVGVzdC5jcHAiLAotICAiZ2xfdGVz
dHMvZ2xlczEvU2hhZGVNb2RlbFRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL2dsZXMxL1RleHR1cmVF
bnZUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9nbGVzMS9UZXh0dXJlUGFyYW1ldGVyVGVzdC5jcHAi
LAotICAiZ2xfdGVzdHMvZ2xlczEvVGV4dHVyZVRhcmdldEVuYWJsZVRlc3QuY3BwIiwKLSAgImds
X3Rlc3RzL2dsZXMxL1ZlcnRleFBvaW50ZXJUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9HTFNMVGVz
dC5jcHAiLAogICAiZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9JbmNvbXBs
ZXRlVGV4dHVyZVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL0luZGV4QnVmZmVyT2Zmc2V0VGVzdC5j
cHAiLApAQCAtNzgsMjkgKzc0LDI3IEBAIGFuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyA9IFsK
ICAgImdsX3Rlc3RzL0xpbmtBbmRSZWxpbmtUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9NYXRyaXhU
ZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9NYXhUZXh0dXJlU2l6ZVRlc3QuY3BwIiwKLSAgImdsX3Rl
c3RzL01lbW9yeVNpemVUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9NZW1vcnlPYmplY3RUZXN0LmNw
cCIsCisgICJnbF90ZXN0cy9NZW1vcnlTaXplVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvTWlwbWFw
VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvTXVsdGlEcmF3VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMv
TXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvTXVsdGlzYW1w
bGVkUmVuZGVyVG9UZXh0dXJlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvTXVsdGlzYW1wbGVUZXN0
LmNwcCIsCisgICJnbF90ZXN0cy9NdWx0aXNhbXBsZWRSZW5kZXJUb1RleHR1cmVUZXN0LmNwcCIs
CiAgICJnbF90ZXN0cy9NdWx0aXRocmVhZGluZ1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL011bHRp
dmlld0RyYXdUZXN0LmNwcCIsCi0gICJnbF90ZXN0cy9tZWRpYS9waXhlbC5pbmMiLAotICAiZ2xf
dGVzdHMvUGFja1VucGFja1Rlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL1BhdGhSZW5kZXJpbmdUZXN0
LmNwcCIsCi0gICJnbF90ZXN0cy9QYnVmZmVyVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvUEJPRXh0
ZW5zaW9uVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvUG9pbnRTcHJpdGVzVGVzdC5jcHAiLAotICAi
Z2xfdGVzdHMvUHJvdm9raW5nVmVydGV4VGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvT2JqZWN0QWxs
b2NhdGlvblRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNUZXN0LmNwcCIs
CisgICJnbF90ZXN0cy9QQk9FeHRlbnNpb25UZXN0LmNwcCIsCisgICJnbF90ZXN0cy9QYWNrVW5w
YWNrVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvUGFyYWxsZWxTaGFkZXJDb21waWxlVGVzdC5jcHAi
LAorICAiZ2xfdGVzdHMvUGJ1ZmZlclRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL1BvaW50U3ByaXRl
c1Rlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1Byb2dyYW1CaW5hcnlUZXN0LmNwcCIsCiAgICJnbF90
ZXN0cy9Qcm9ncmFtSW50ZXJmYWNlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvUHJvZ3JhbVBhcmFt
ZXRlclRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1Byb2dyYW1QaXBlbGluZVRlc3QuY3BwIiwKKyAg
ImdsX3Rlc3RzL1Byb3Zva2luZ1ZlcnRleFRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1JlYWRQaXhl
bHNUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9SZW5kZXJidWZmZXJNdWx0aXNhbXBsZVRlc3QuY3Bw
IiwKICAgImdsX3Rlc3RzL1JlbmRlcmVyVGVzdC5jcHAiLApAQCAtMTA4LDEzICsxMDIsMTQgQEAg
YW5nbGVfZW5kMmVuZF90ZXN0c19zb3VyY2VzID0gWwogICAiZ2xfdGVzdHMvUm9idXN0QnVmZmVy
QWNjZXNzQmVoYXZpb3JUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Sb2J1c3RDbGllbnRNZW1vcnlU
ZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Sb2J1c3RSZXNvdXJjZUluaXRUZXN0LmNwcCIsCisgICJn
bF90ZXN0cy9TUkdCRnJhbWVidWZmZXJUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9TUkdCVGV4dHVy
ZVRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1NhbXBsZXJzVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMv
U2VtYXBob3JlVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvU2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0
aWFsaXplclRlc3QuY3BwIiwKICAgImdsX3Rlc3RzL1NoYWRlclN0b3JhZ2VCdWZmZXJUZXN0LmNw
cCIsCiAgICJnbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9T
aXh0ZWVuQnBwVGV4dHVyZVRlc3QuY3BwIiwKLSAgImdsX3Rlc3RzL1NSR0JGcmFtZWJ1ZmZlclRl
c3QuY3BwIiwKLSAgImdsX3Rlc3RzL1NSR0JUZXh0dXJlVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMv
U3RhdGVDaGFuZ2VUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9Td2l6emxlVGVzdC5jcHAiLAogICAi
Z2xfdGVzdHMvU3luY1F1ZXJpZXNUZXN0LmNwcCIsCkBAIC0xMzEsNTMgKzEyNiw1MiBAQCBhbmds
ZV9lbmQyZW5kX3Rlc3RzX3NvdXJjZXMgPSBbCiAgICJnbF90ZXN0cy9VbnBhY2tSb3dMZW5ndGgu
Y3BwIiwKICAgImdsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0ZVRlc3QuY3BwIiwKICAgImdsX3Rlc3Rz
L1ZpZXdwb3J0VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvV0VCR0xWaWRlb1RleHR1cmVUZXN0LmNw
cCIsCiAgICJnbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNwcCIsCiAgICJnbF90ZXN0
cy9XZWJHTEZyYW1lYnVmZmVyVGVzdC5jcHAiLAogICAiZ2xfdGVzdHMvV2ViR0xSZWFkT3V0c2lk
ZUZyYW1lYnVmZmVyVGVzdC5jcHAiLAotICAiZ2xfdGVzdHMvV0VCR0xWaWRlb1RleHR1cmVUZXN0
LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMQW5kcm9pZEZyYW1lQnVmZmVyVGFyZ2V0VGVzdC5jcHAi
LAotICAiZWdsX3Rlc3RzL0VHTEJhY2t3YXJkc0NvbXBhdGlibGVDb250ZXh0VGVzdC5jcHAiLAot
ICAiZWdsX3Rlc3RzL0VHTEJsb2JDYWNoZVRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xDaG9v
c2VDb25maWdUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGliaWxpdHlU
ZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcCIsCi0gICJl
Z2xfdGVzdHMvRUdMQ3JlYXRlQ29udGV4dEF0dHJpYnNUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMv
RUdMRGVidWdUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMTm9Db25maWdDb250ZXh0VGVzdC5j
cHAiLAotICAiZWdsX3Rlc3RzL0VHTFByaW50RUdMaW5mb1Rlc3QuY3BwIiwKLSAgImVnbF90ZXN0
cy9FR0xQcm9ncmFtQ2FjaGVDb250cm9sVGVzdC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTFF1ZXJ5
Q29udGV4dFRlc3QuY3BwIiwKLSAgImVnbF90ZXN0cy9FR0xSZWNvcmRhYmxlVGVzdC5jcHAiLAot
ICAiZWdsX3Rlc3RzL0VHTFJvYnVzdG5lc3NUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMU2Fu
aXR5Q2hlY2tUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMvRUdMU3VyZmFjZWxlc3NDb250ZXh0VGVz
dC5jcHAiLAotICAiZWdsX3Rlc3RzL0VHTFN1cmZhY2VUZXN0LmNwcCIsCi0gICJlZ2xfdGVzdHMv
RUdMU3luY1Rlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL0FscGhhRnVuY1Rlc3QuY3BwIiwK
KyAgImdsX3Rlc3RzL2dsZXMxL0Jhc2ljRHJhd1Rlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMx
L0Jvb3RBbmltYXRpb25UZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9DbGllbnRBY3RpdmVU
ZXh0dXJlVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvQ2xpZW50U3RhdGVFbmFibGUuY3Bw
IiwKKyAgImdsX3Rlc3RzL2dsZXMxL0NsaXBQbGFuZVRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2ds
ZXMxL0N1cnJlbnRDb2xvclRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL0N1cnJlbnROb3Jt
YWxUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9DdXJyZW50VGV4dHVyZUNvb3Jkc1Rlc3Qu
Y3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL0RyYXdUZXh0dXJlVGVzdC5jcHAiLAorICAiZ2xfdGVz
dHMvZ2xlczEvRm9nVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvTGlnaHRzVGVzdC5jcHAi
LAorICAiZ2xfdGVzdHMvZ2xlczEvTWF0ZXJpYWxzVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xl
czEvTWF0cml4QnVpbHRpbnNUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9NYXRyaXhMb2Fk
VGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvTWF0cml4TW9kZVRlc3QuY3BwIiwKKyAgImds
X3Rlc3RzL2dsZXMxL01hdHJpeE11bHRUZXN0LmNwcCIsCisgICJnbF90ZXN0cy9nbGVzMS9NYXRy
aXhTdGFja1Rlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL1BvaW50UGFyYW1ldGVyVGVzdC5j
cHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvUG9pbnRTcHJpdGVUZXN0LmNwcCIsCisgICJnbF90ZXN0
cy9nbGVzMS9TaGFkZU1vZGVsVGVzdC5jcHAiLAorICAiZ2xfdGVzdHMvZ2xlczEvVGV4dHVyZUVu
dlRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL2dsZXMxL1RleHR1cmVQYXJhbWV0ZXJUZXN0LmNwcCIs
CisgICJnbF90ZXN0cy9nbGVzMS9UZXh0dXJlVGFyZ2V0RW5hYmxlVGVzdC5jcHAiLAorICAiZ2xf
dGVzdHMvZ2xlczEvVmVydGV4UG9pbnRlclRlc3QuY3BwIiwKKyAgImdsX3Rlc3RzL21lZGlhL3Bp
eGVsLmluYyIsCiAgICJ0ZXN0X2V4cGVjdGF0aW9ucy9HUFVUZXN0RXhwZWN0YXRpb25zVGVzdC5j
cHAiLAogICAidGVzdF91dGlscy9BTkdMRVRlc3QuY3BwIiwKICAgInRlc3RfdXRpbHMvQU5HTEVU
ZXN0LmgiLAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmNwcCIsCi0gICJ0ZXN0
X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uaCIsCiAgICJ0ZXN0X3V0aWxzL011bHRpdmlld1Rl
c3QuY3BwIiwKICAgInRlc3RfdXRpbHMvTXVsdGl2aWV3VGVzdC5oIiwKLSAgInRlc3RfdXRpbHMv
YW5nbGVfdGVzdF9jb25maWdzLmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmln
cy5oIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5jcHAiLAotICAidGVz
dF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiLAotICAidGVzdF91dGlscy9nbF9yYWlp
LmgiLAogXQogYW5nbGVfZW5kMmVuZF90ZXN0c19tYWNfc291cmNlcyA9IFsKICAgImVnbF90ZXN0
cy9FR0xEZXZpY2VDR0xUZXN0LmNwcCIsCiAgICJlZ2xfdGVzdHMvRUdMSU9TdXJmYWNlQ2xpZW50
QnVmZmVyVGVzdC5jcHAiLAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlX2Fw
cGxlLm1tIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5oIiwK
IF0KIGFuZ2xlX2VuZDJlbmRfdGVzdHNfd2luX3NvdXJjZXMgPSBbCi0gICJnbF90ZXN0cy9EM0RJ
bWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LmNwcCIsCiAgICJlZ2xfdGVzdHMvRUdMRGV2aWNlVGVz
dC5jcHAiLAogICAiZWdsX3Rlc3RzL0VHTFByZXNlbnRQYXRoRDNEMTFUZXN0LmNwcCIsCiAgICJl
Z2xfdGVzdHMvRUdMU3RyZWFtVGVzdC5jcHAiLAogICAiZWdsX3Rlc3RzL0VHTFN5bmNDb250cm9s
VGVzdC5jcHAiLAogICAiZWdsX3Rlc3RzL21lZGlhL3l1dnRlc3QuaW5sIiwKKyAgImdsX3Rlc3Rz
L0QzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QuY3BwIiwKIF0KIGFuZ2xlX2VuZDJlbmRfdGVz
dHNfeDExX3NvdXJjZXMgPSBbICJlZ2xfdGVzdHMvRUdMWDExVmlzdWFsVGVzdC5jcHAiIF0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5k
X3Rlc3RzX21haW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xl
X2VuZDJlbmRfdGVzdHNfbWFpbi5jcHAKaW5kZXggNTMxNWU1MmY4MTVmYzA3NmMyNDliYzg4YjQ0
YjFjYzI0YmNlNDM0ZS4uNjE3NWI5NzA4NTIzMWU2YTA1MzAzZTI3NDgwYmY2OGUzOTAwMzBiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX2VuZDJl
bmRfdGVzdHNfbWFpbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2FuZ2xlX2VuZDJlbmRfdGVzdHNfbWFpbi5jcHAKQEAgLTksOSArOSwxOSBAQAogCiB2b2lkIEFO
R0xFUHJvY2Vzc1Rlc3RBcmdzKGludCAqYXJnYywgY2hhciAqYXJndltdKTsKIAorLy8gUmVnaXN0
ZXIqIGZ1bmN0aW9ucyBoYW5kbGUgc2V0dGluZyB1cCBzcGVjaWFsIHRlc3RzIHRoYXQgbmVlZCBj
b21wbGV4IHBhcmFtZXRlcml6YXRpb24uCisvLyBHb29nbGVUZXN0IHJlbGllcyBoZWF2aWx5IG9u
IHN0YXRpYyBpbml0aWFsaXphdGlvbiB0byByZWdpc3RlciB0ZXN0IGZ1bmN0aW9ucy4gVGhpcyBj
YW4KKy8vIGNhdXNlIGFsbCBzb3J0cyBvZiBpc3N1ZXMgaWYgdGhlIHJpZ2h0IHZhcmlhYmxlcyBh
cmVuJ3QgaW5pdGlhbGl6ZWQgaW4gdGhlIHJpZ2h0IG9yZGVyLgorLy8gVGhpcyByZWdpc3RlciBm
dW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgZXhwbGljaXRseSBhZnRlciBzdGF0aWMgaW5pdGlh
bGl6YXRpb24gYW5kCisvLyBiZWZvcmUgdGhlIHRlc3QgbGF1bmNoZXIgc3RhcnRzLiBUaGlzIGlz
IGEgc2FmZXIgYW5kIGdlbmVyYWxseSBiZXR0ZXIgd2F5IHRvIGluaXRpYWxpemUKKy8vIHRlc3Rz
LiBJdCdzIGFsc28gbW9yZSBzaW1pbGFyIHRvIGhvdyB0aGUgZEVRUCBUZXN0IGhhcm5lc3Mgd29y
a3MuIEluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkCisvLyBsaWtlbHkgc3BlY2lhbGl6ZSBtb3JlIHJl
Z2lzdGVyIGZ1bmN0aW9ucyBtb3JlIGxpa2UgZEVRUCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gc3Rh
dGljIGluaXQuCit2b2lkIFJlZ2lzdGVyQ29udGV4dENvbXBhdGliaWxpdHlUZXN0cygpOworCiBp
bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAgICAgYW5nbGU6OlRlc3RTdWl0ZSB0
ZXN0U3VpdGUoJmFyZ2MsIGFyZ3YpOwogICAgIEFOR0xFUHJvY2Vzc1Rlc3RBcmdzKCZhcmdjLCBh
cmd2KTsKKyAgICBSZWdpc3RlckNvbnRleHRDb21wYXRpYmlsaXR5VGVzdHMoKTsKICAgICByZXR1
cm4gdGVzdFN1aXRlLnJ1bigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2FuZ2xlX3BlcmZ0ZXN0cy5nbmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzLmduaQppbmRleCBlOTEzNzhlZjcyODIxNGVjZDY4
YTM3MjVmM2ZjMjRkMDA5ZjI2MjFhLi42NjVmNmQ3YzQ2NWUwYTdhM2MxZGJhYmQxYjQ1Mjk5N2Fh
MjAwNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5n
bGVfcGVyZnRlc3RzLmduaQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
YW5nbGVfcGVyZnRlc3RzLmduaQpAQCAtMiw3NCArMiw0OSBAQAogIyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAj
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAKLV9hbmdsZV9wZXJmX3Rlc3RfY29tbW9uX3Nv
dXJjZXMgPSBbCi0gICIuLi90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIiwK
LSAgInBlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5jcHAiLAotICAicGVyZl90ZXN0cy9BTkdMRVBl
cmZUZXN0LmgiLAotICAicGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0QXJncy5jcHAiLAotICAicGVy
Zl90ZXN0cy9BTkdMRVBlcmZUZXN0QXJncy5oIiwKLSAgInBlcmZfdGVzdHMvdGhpcmRfcGFydHkv
cGVyZi9wZXJmX3Jlc3VsdF9yZXBvcnRlci5jYyIsCi0gICJwZXJmX3Rlc3RzL3RoaXJkX3BhcnR5
L3BlcmYvcGVyZl9yZXN1bHRfcmVwb3J0ZXIuaCIsCi0gICJwZXJmX3Rlc3RzL3RoaXJkX3BhcnR5
L3BlcmYvcGVyZl90ZXN0LmNjIiwKLSAgInBlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJm
X3Rlc3QuaCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uY3BwIiwKLSAgInRl
c3RfdXRpbHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5oIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVz
dF9jb25maWdzLmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIiwKLSAg
InRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5jcHAiLAotICAidGVzdF91dGlscy9h
bmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiLAotICAidGVzdF91dGlscy9nbF9yYWlpLmgiLAorYW5n
bGVfcGVyZl90ZXN0c19zb3VyY2VzID0gWworICAicGVyZl90ZXN0cy9CaW5kaW5nUGVyZi5jcHAi
LAorICAicGVyZl90ZXN0cy9CbGl0RnJhbWVidWZmZXJQZXJmLmNwcCIsCisgICJwZXJmX3Rlc3Rz
L0J1ZmZlclN1YkRhdGEuY3BwIiwKKyAgInBlcmZfdGVzdHMvQ2xlYXJQZXJmLmNwcCIsCisgICJw
ZXJmX3Rlc3RzL0Rpc3BhdGNoQ29tcHV0ZVBlcmYuY3BwIiwKKyAgInBlcmZfdGVzdHMvRHJhd0Nh
bGxQZXJmLmNwcCIsCisgICJwZXJmX3Rlc3RzL0RyYXdFbGVtZW50c1BlcmYuY3BwIiwKKyAgInBl
cmZfdGVzdHMvRHluYW1pY1Byb21vdGlvblBlcmZUZXN0LmNwcCIsCisgICJwZXJmX3Rlc3RzL0VH
TE1ha2VDdXJyZW50UGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9JbmRleENvbnZlcnNpb25QZXJm
LmNwcCIsCisgICJwZXJmX3Rlc3RzL0luc3RhbmNpbmdQZXJmLmNwcCIsCisgICJwZXJmX3Rlc3Rz
L0ludGVybGVhdmVkQXR0cmlidXRlRGF0YS5jcHAiLAorICAicGVyZl90ZXN0cy9MaW5rUHJvZ3Jh
bVBlcmZUZXN0LmNwcCIsCisgICJwZXJmX3Rlc3RzL011bHRpdmlld1BlcmYuY3BwIiwKKyAgInBl
cmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcCIsCisgICJwZXJmX3Rlc3RzL1RleHR1cmVTYW1wbGlu
Zy5jcHAiLAorICAicGVyZl90ZXN0cy9UZXh0dXJlVXBsb2FkUGVyZi5jcHAiLAorICAicGVyZl90
ZXN0cy9UZXh0dXJlc1BlcmYuY3BwIiwKKyAgInBlcmZfdGVzdHMvVW5pZm9ybXNQZXJmLmNwcCIs
CisgICJwZXJmX3Rlc3RzL1Z1bGthbkJhcnJpZXJzUGVyZi5jcHAiLAorICAicGVyZl90ZXN0cy9n
bG1hcmsyQmVuY2htYXJrLmNwcCIsCisgICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAiLAorICAi
dGVzdF91dGlscy9BTkdMRVRlc3QuaCIsCisgICJ0ZXN0X3V0aWxzL011bHRpdmlld1Rlc3QuY3Bw
IiwKKyAgInRlc3RfdXRpbHMvTXVsdGl2aWV3VGVzdC5oIiwKKyAgInRlc3RfdXRpbHMvZHJhd19j
YWxsX3BlcmZfdXRpbHMuY3BwIiwKKyAgInRlc3RfdXRpbHMvZHJhd19jYWxsX3BlcmZfdXRpbHMu
aCIsCiBdCiAKLWlmIChpc19tYWMpIHsKLSAgX2FuZ2xlX3BlcmZfdGVzdF9jb21tb25fc291cmNl
cyArPSBbCi0gICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5tbSIs
Ci0gICAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5oIiwKLSAgXQot
fQotCi1hbmdsZV9wZXJmX3Rlc3RzX3NvdXJjZXMgPSBfYW5nbGVfcGVyZl90ZXN0X2NvbW1vbl9z
b3VyY2VzICsgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9CbGl0
RnJhbWVidWZmZXJQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJm
X3Rlc3RzL0JpbmRpbmdQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw
ZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBlcmZfdGVzdHMvQ2xlYXJQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwZXJmX3Rlc3RzL0Rpc3BhdGNoQ29tcHV0ZVBlcmYuY3BwIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5jcHAiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJh
bXMuaCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0RyYXdFbGVt
ZW50c1BlcmYuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZfdGVzdHMv
RHluYW1pY1Byb21vdGlvblBlcmZUZXN0LmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwZXJmX3Rlc3RzL0VHTE1ha2VDdXJyZW50UGVyZi5jcHAiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGVyZl90ZXN0cy9JbmRleENvbnZlcnNpb25QZXJmLmNwcCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0luc3RhbmNpbmdQZXJmLmNwcCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0ludGVybGVhdmVkQXR0
cmlidXRlRGF0YS5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0
cy9MaW5rUHJvZ3JhbVBlcmZUZXN0LmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwZXJmX3Rlc3RzL011bHRpdmlld1BlcmYuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBlcmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwZXJmX3Rlc3RzL1RleHR1cmVTYW1wbGluZy5jcHAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9UZXh0dXJlVXBsb2FkUGVyZi5jcHAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9UZXh0dXJlc1BlcmYuY3BwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmZfdGVzdHMvVW5pZm9ybXNQZXJmLmNw
cCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL1Z1bGthbkJhcnJp
ZXJzUGVyZi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyZl90ZXN0cy9n
bG1hcmsyQmVuY2htYXJrLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0
X3V0aWxzL0FOR0xFVGVzdC5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0
X3V0aWxzL011bHRpdmlld1Rlc3QuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRlc3RfdXRpbHMvTXVsdGl2aWV3VGVzdC5oIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRlc3RfdXRpbHMvZHJhd19jYWxsX3BlcmZfdXRpbHMuY3BwIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInRlc3RfdXRpbHMvZHJhd19jYWxsX3BlcmZfdXRpbHMuaCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCi0KLWFuZ2xlX3doaXRlX2JveF9wZXJmX3Rlc3RzX3Nv
dXJjZXMgPSBfYW5nbGVfcGVyZl90ZXN0X2NvbW1vbl9zb3VyY2VzICsgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZ2xlX3VuaXR0ZXN0c191dGlscy5oIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL0JpdFNldEl0
ZXJhdG9yUGVyZi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InBlcmZfdGVzdHMvQ29tcGlsZXJQZXJmLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGVyZl90ZXN0cy9FR0xJbml0aWFsaXplUGVyZi5jcHAiLCAgIyBVc2Vz
IEFOR0xFR2V0RGlzcGxheVBsYXRmb3JtLCBhIG5vbi1zdGFuZGFyZCBFUC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJmX3Rlc3RzL1Jlc3VsdFBlcmYuY3BwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCithbmdsZV93aGl0ZV9ib3hf
cGVyZl90ZXN0c19zb3VyY2VzID0gWworICAiYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgiLAorICAi
cGVyZl90ZXN0cy9CaXRTZXRJdGVyYXRvclBlcmYuY3BwIiwKKyAgInBlcmZfdGVzdHMvQ29tcGls
ZXJQZXJmLmNwcCIsCisgICJwZXJmX3Rlc3RzL0VHTEluaXRpYWxpemVQZXJmLmNwcCIsICAjIFVz
ZXMgQU5HTEVHZXREaXNwbGF5UGxhdGZvcm0sIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgbm9uLXN0YW5kYXJkIEVQLgorICAicGVyZl90ZXN0cy9SZXN1bHRQZXJm
LmNwcCIsCitdCiAKLWFuZ2xlX3doaXRlX2JveF9wZXJmX3Rlc3RzX3dpbl9zb3VyY2VzID0KLSAg
ICBbICJwZXJmX3Rlc3RzL0luZGV4RGF0YU1hbmFnZXJUZXN0LmNwcCIgXQoraWYgKGlzX3dpbikg
eworICBhbmdsZV93aGl0ZV9ib3hfcGVyZl90ZXN0c19zb3VyY2VzICs9CisgICAgICBbICJwZXJm
X3Rlc3RzL0luZGV4RGF0YU1hbmFnZXJUZXN0LmNwcCIgXQorfQogCiBhbmdsZV93aGl0ZV9ib3hf
cGVyZl90ZXN0c192dWxrYW5fc291cmNlcyA9IFsKICAgInBlcmZfdGVzdHMvVnVsa2FuQ29tbWFu
ZEJ1ZmZlclBlcmYuY3BwIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9hbmdsZV91bml0dGVzdHMuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2FuZ2xlX3VuaXR0ZXN0cy5nbmkKaW5kZXggMDgxNDRlYzRlZDU4MjUxZDBhODZiNzVm
NjkyYjk5OTVmYmFkZGM4Ni4uZjA0ZTk0MjAzMGY5OGZhMWRiODBkNmExZTZkMzc2MWFhZDAyOTA4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3Vu
aXR0ZXN0cy5nbmkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xl
X3VuaXR0ZXN0cy5nbmkKQEAgLTMsMTAgKzMsMTIgQEAKICMgZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KIAogYW5nbGVfdW5pdHRlc3RzX3NvdXJjZXMgPSBbCisgICIuLi8uLi91dGlsL3Rlc3Rf
dXRpbHNfdW5pdHRlc3QuY3BwIiwKKyAgIi4uLy4uL3V0aWwvdGVzdF91dGlsc191bml0dGVzdF9o
ZWxwZXIuaCIsCiAgICIuLi9jb21tb24vRmFzdFZlY3Rvcl91bml0dGVzdC5jcHAiLAogICAiLi4v
Y29tbW9uL0ZpeGVkVmVjdG9yX3VuaXR0ZXN0LmNwcCIsCi0gICIuLi9jb21tb24vUG9vbEFsbG9j
X3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9jb21tb24vT3B0aW9uYWxfdW5pdHRlc3QuY3BwIiwKKyAg
Ii4uL2NvbW1vbi9Qb29sQWxsb2NfdW5pdHRlc3QuY3BwIiwKICAgIi4uL2NvbW1vbi9hbGlnbmVk
X21lbW9yeV91bml0dGVzdC5jcHAiLAogICAiLi4vY29tbW9uL2FuZ2xldXRpbHNfdW5pdHRlc3Qu
Y3BwIiwKICAgIi4uL2NvbW1vbi9iaXRzZXRfdXRpbHNfdW5pdHRlc3QuY3BwIiwKQEAgLTE3LDYg
KzE5LDcgQEAgYW5nbGVfdW5pdHRlc3RzX3NvdXJjZXMgPSBbCiAgICIuLi9jb21tb24vc3lzdGVt
X3V0aWxzX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9jb21tb24vdXRpbGl0aWVzX3VuaXR0ZXN0LmNw
cCIsCiAgICIuLi9jb21tb24vdmVjdG9yX3V0aWxzX3VuaXR0ZXN0LmNwcCIsCisgICIuLi9jb21w
aWxlci90cmFuc2xhdG9yL3NwYW5fdW5pdHRlc3QuY3BwIiwKICAgIi4uL2ZlYXR1cmVfc3VwcG9y
dF91dGlsL2ZlYXR1cmVfc3VwcG9ydF91dGlsX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9ncHVfaW5m
b191dGlsL1N5c3RlbUluZm9fdW5pdHRlc3QuY3BwIiwKICAgIi4uL2xpYkFOR0xFL0JpbmFyeVN0
cmVhbV91bml0dGVzdC5jcHAiLApAQCAtMjQsOSArMjcsOCBAQCBhbmdsZV91bml0dGVzdHNfc291
cmNlcyA9IFsKICAgIi4uL2xpYkFOR0xFL0NvbmZpZ191bml0dGVzdC5jcHAiLAogICAiLi4vbGli
QU5HTEUvRmVuY2VfdW5pdHRlc3QuY3BwIiwKICAgIi4uL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRv
cl91bml0dGVzdC5jcHAiLAotICAiLi4vbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3JfdW5p
dHRlc3QuY3BwIiwKLSAgIi4uL2xpYkFOR0xFL0ltYWdlX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9s
aWJBTkdMRS9JbWFnZUluZGV4SXRlcmF0b3JfdW5pdHRlc3QuY3BwIiwKKyAgIi4uL2xpYkFOR0xF
L0ltYWdlX3VuaXR0ZXN0LmNwcCIsCiAgICIuLi9saWJBTkdMRS9PYnNlcnZlcl91bml0dGVzdC5j
cHAiLAogICAiLi4vbGliQU5HTEUvUHJvZ3JhbV91bml0dGVzdC5jcHAiLAogICAiLi4vbGliQU5H
TEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcCIsCkBAIC0zOSw0NCArNDEsNDUgQEAgYW5n
bGVfdW5pdHRlc3RzX3NvdXJjZXMgPSBbCiAgICIuLi9saWJBTkdMRS9Xb3JrZXJUaHJlYWRfdW5p
dHRlc3QuY3BwIiwKICAgIi4uL2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGxfbW9jay5oIiwK
ICAgIi4uL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmgiLAorICAiLi4v
bGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsX21vY2suaCIsCiAgICIuLi9saWJBTkdMRS9yZW5k
ZXJlci9Qcm9ncmFtSW1wbF9tb2NrLmgiLAogICAiLi4vbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVy
YnVmZmVySW1wbF9tb2NrLmgiLAotICAiLi4vbGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsX21v
Y2suaCIsCiAgICIuLi9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbF9tb2NrLmgiLAogICAi
Li4vbGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJhY2tJbXBsX21vY2suaCIsCiAgICIu
Li9saWJBTkdMRS9yZW5kZXJlci9zZXJpYWxfdXRpbHNfdW5pdHRlc3QuY3BwIiwKLSAgIi4uL2Nv
bXBpbGVyL3RyYW5zbGF0b3Ivc3Bhbl91bml0dGVzdC5jcHAiLAogICAiYW5nbGVfdW5pdHRlc3Rz
X3V0aWxzLmgiLAogICAiY29tcGlsZXJfdGVzdHMvQVBJX3Rlc3QuY3BwIiwKLSAgImNvbXBpbGVy
X3Rlc3RzL0FwcGVuZGl4QUxpbWl0YXRpb25zX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3Rz
L0FSQl90ZXh0dXJlX3JlY3RhbmdsZV90ZXN0LmNwcCIsCisgICJjb21waWxlcl90ZXN0cy9BcHBl
bmRpeEFMaW1pdGF0aW9uc190ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9BdG9taWNDb3Vu
dGVyX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL0J1ZmZlclZhcmlhYmxlc190ZXN0LmNw
cCIsCiAgICJjb21waWxlcl90ZXN0cy9Db2xsZWN0VmFyaWFibGVzX3Rlc3QuY3BwIiwKLSAgImNv
bXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ190ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0
cy9Db25zdGFudEZvbGRpbmdOYU5fdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvQ29uc3Rh
bnRGb2xkaW5nT3ZlcmZsb3dfdGVzdC5jcHAiLAorICAiY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRG
b2xkaW5nX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL0NvbnN0cnVjdENvbXBpbGVyX3Rl
c3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL0RlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3Bw
IiwKLSAgImNvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VfdGVz
dC5jcHAiLAotICAiY29tcGlsZXJfdGVzdHMvRW11bGF0ZUdMRHJhd0lEX3Rlc3QuY3BwIiwKLSAg
ImNvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdF90ZXN0LmNwcCIsCi0g
ICJjb21waWxlcl90ZXN0cy9FeHByZXNzaW9uTGltaXRfdGVzdC5jcHAiLAogICAiY29tcGlsZXJf
dGVzdHMvRVhUX1lVVl90YXJnZXRfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvRVhUX2Js
ZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvRVhUX2ZyYWdf
ZGVwdGhfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZF90ZXN0LmNwcCIsCisgICJjb21waWxlcl90ZXN0cy9FbXVsYXRlR0xCYXNlVmVydGV4QmFzZUlu
c3RhbmNlX3Rlc3QuY3BwIiwKKyAgImNvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTERyYXdJRF90ZXN0
LmNwcCIsCisgICJjb21waWxlcl90ZXN0cy9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RfdGVz
dC5jcHAiLAorICAiY29tcGlsZXJfdGVzdHMvRXhwcmVzc2lvbkxpbWl0X3Rlc3QuY3BwIiwKICAg
ImNvbXBpbGVyX3Rlc3RzL0V4dGVuc2lvbkRpcmVjdGl2ZV90ZXN0LmNwcCIsCiAgICJjb21waWxl
cl90ZXN0cy9GbG9hdExleF90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9GcmFnRGVwdGhf
dGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRwdXRfdGVz
dC5jcHAiLAotICAiY29tcGlsZXJfdGVzdHMvR2xGcmFnRGF0YU5vdE1vZGlmaWVkX3Rlc3QuY3Bw
IiwKICAgImNvbXBpbGVyX3Rlc3RzL0dlb21ldHJ5U2hhZGVyX3Rlc3QuY3BwIiwKKyAgImNvbXBp
bGVyX3Rlc3RzL0dsRnJhZ0RhdGFOb3RNb2RpZmllZF90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90
ZXN0cy9JbW11dGFibGVTdHJpbmdfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvSW5pdE91
dHB1dFZhcmlhYmxlc190ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9JbnRlcm1Ob2RlX3Rl
c3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0LmNwcCIsCiAg
ICJjb21waWxlcl90ZXN0cy9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXNfdGVzdC5jcHAiLAorICAi
Y29tcGlsZXJfdGVzdHMvT1ZSX211bHRpdmlldzJfdGVzdC5jcHAiLAorICAiY29tcGlsZXJfdGVz
dHMvT1ZSX211bHRpdmlld190ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9QYWNrX1VucGFj
a190ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9QcnVuZUVtcHR5Q2FzZXNfdGVzdC5jcHAi
LAogICAiY29tcGlsZXJfdGVzdHMvUHJ1bmVFbXB0eURlY2xhcmF0aW9uc190ZXN0LmNwcCIsCkBA
IC05MiwyMCArOTUsMjEgQEAgYW5nbGVfdW5pdHRlc3RzX3NvdXJjZXMgPSBbCiAgICJjb21waWxl
cl90ZXN0cy9TYW1wbGVyTXVsdGlzYW1wbGVfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMv
U2FtcGxlclZpZGVvV0VCR0xfdGVzdC5jcHAiLAogICAiY29tcGlsZXJfdGVzdHMvU2NhbGFyaXpl
VmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzX3Rlc3QuY3BwIiwKKyAgImNvbXBpbGVyX3Rlc3RzL1No
Q29tcGlsZV90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9TaGFkZXJJbWFnZV90ZXN0LmNw
cCIsCiAgICJjb21waWxlcl90ZXN0cy9TaGFkZXJWYWxpZGF0aW9uX3Rlc3QuY3BwIiwKICAgImNv
bXBpbGVyX3Rlc3RzL1NoYWRlclZhcmlhYmxlX3Rlc3QuY3BwIiwKLSAgImNvbXBpbGVyX3Rlc3Rz
L1NoQ29tcGlsZV90ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9UZXh0dXJlRnVuY3Rpb25f
dGVzdC5jcHAiLAotICAiY29tcGlsZXJfdGVzdHMvVHlwZV90ZXN0LmNwcCIsCiAgICJjb21waWxl
cl90ZXN0cy9UeXBlVHJhY2tpbmdfdGVzdC5jcHAiLAorICAiY29tcGlsZXJfdGVzdHMvVHlwZV90
ZXN0LmNwcCIsCiAgICJjb21waWxlcl90ZXN0cy9VbmZvbGRTaG9ydENpcmN1aXRBU1RfdGVzdC5j
cHAiLAogICAiY29tcGlsZXJfdGVzdHMvVmFyaWFibGVQYWNrZXJfdGVzdC5jcHAiLAogICAiY29t
cGlsZXJfdGVzdHMvVmVjdG9yaXplVmVjdG9yU2NhbGFyQXJpdGhtZXRpY190ZXN0LmNwcCIsCi0g
ICJjb21waWxlcl90ZXN0cy9PVlJfbXVsdGl2aWV3X3Rlc3QuY3BwIiwKLSAgImNvbXBpbGVyX3Rl
c3RzL09WUl9tdWx0aXZpZXcyX3Rlc3QuY3BwIiwKICAgImNvbXBpbGVyX3Rlc3RzL1dvcmtHcm91
cFNpemVfdGVzdC5jcHAiLAotICAidGVzdF9leHBlY3RhdGlvbnMvR1BVVGVzdEV4cGVjdGF0aW9u
c1BhcnNlcl91bml0dGVzdC5jcHAiLAorICAicHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaWFnbm9z
dGljcy5oIiwKKyAgInByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlyZWN0aXZlSGFuZGxlci5oIiwK
KyAgInByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmNwcCIsCisgICJwcmVwcm9j
ZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5oIiwKICAgInByZXByb2Nlc3Nvcl90ZXN0cy9j
aGFyX3Rlc3QuY3BwIiwKICAgInByZXByb2Nlc3Nvcl90ZXN0cy9jb21tZW50X3Rlc3QuY3BwIiwK
ICAgInByZXByb2Nlc3Nvcl90ZXN0cy9kZWZpbmVfdGVzdC5jcHAiLApAQCAtMTE1LDI2ICsxMTks
MjEgQEAgYW5nbGVfdW5pdHRlc3RzX3NvdXJjZXMgPSBbCiAgICJwcmVwcm9jZXNzb3JfdGVzdHMv
aWZfdGVzdC5jcHAiLAogICAicHJlcHJvY2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3BwIiwKICAg
InByZXByb2Nlc3Nvcl90ZXN0cy9sb2NhdGlvbl90ZXN0LmNwcCIsCi0gICJwcmVwcm9jZXNzb3Jf
dGVzdHMvTW9ja0RpYWdub3N0aWNzLmgiLAotICAicHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaXJl
Y3RpdmVIYW5kbGVyLmgiLAogICAicHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90ZXN0LmNwcCIs
CiAgICJwcmVwcm9jZXNzb3JfdGVzdHMvb3BlcmF0b3JfdGVzdC5jcHAiLAogICAicHJlcHJvY2Vz
c29yX3Rlc3RzL3ByYWdtYV90ZXN0LmNwcCIsCi0gICJwcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJv
Y2Vzc29yVGVzdC5jcHAiLAotICAicHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3NvclRlc3Qu
aCIsCiAgICJwcmVwcm9jZXNzb3JfdGVzdHMvc3BhY2VfdGVzdC5jcHAiLAogICAicHJlcHJvY2Vz
c29yX3Rlc3RzL3Rva2VuX3Rlc3QuY3BwIiwKICAgInByZXByb2Nlc3Nvcl90ZXN0cy92ZXJzaW9u
X3Rlc3QuY3BwIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIiwKLSAg
InRlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5jcHAiLAotICAidGVzdF91dGlscy9jb21waWxlcl90
ZXN0LmgiLAotICAidGVzdF91dGlscy9Db25zdGFudEZvbGRpbmdUZXN0LmgiLAorICAidGVzdF9l
eHBlY3RhdGlvbnMvR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcl91bml0dGVzdC5jcHAiLAogICAi
dGVzdF91dGlscy9Db25zdGFudEZvbGRpbmdUZXN0LmNwcCIsCi0gICJ0ZXN0X3V0aWxzL1NoYWRl
ckNvbXBpbGVUcmVlVGVzdC5oIiwKKyAgInRlc3RfdXRpbHMvQ29uc3RhbnRGb2xkaW5nVGVzdC5o
IiwKICAgInRlc3RfdXRpbHMvU2hhZGVyQ29tcGlsZVRyZWVUZXN0LmNwcCIsCisgICJ0ZXN0X3V0
aWxzL1NoYWRlckNvbXBpbGVUcmVlVGVzdC5oIiwKICAgInRlc3RfdXRpbHMvU2hhZGVyRXh0ZW5z
aW9uVGVzdC5oIiwKLSAgIi4uLy4uL3V0aWwvdGVzdF91dGlsc191bml0dGVzdC5jcHAiLAotICAi
Li4vLi4vdXRpbC90ZXN0X3V0aWxzX3VuaXR0ZXN0X2hlbHBlci5oIiwKKyAgInRlc3RfdXRpbHMv
YW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIiwKKyAgInRlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5j
cHAiLAorICAidGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiLAogXQogCiAjIFRPRE8oam1hZGls
bCk6IHNob3VsZCBwcm9iYWJseSBjYWxsIHRoaXMgd2luZG93cyBzb3VyY2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0
aWxzLmgKaW5kZXggNDhmZWNjMzU5YTY1ZTMwZTkzMzllYTljMjk2YzAzZjU5OTdiYWQ1Yi4uYzJi
NGUyNThjYjEyY2JkMmU2MGVmMWIwMWU3MTc3OTI4YzJmMzE4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3VuaXR0ZXN0c191dGlscy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMu
aApAQCAtNzIsMTEgKzcyLDYgQEAgY2xhc3MgTnVsbEZhY3RvcnkgOiBwdWJsaWMgR0xJbXBsRmFj
dG9yeQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBzdGQ6OnZlY3RvcjxQ
YXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+KCk7Ci0gICAgfQotCiAgICAgU2Vt
YXBob3JlSW1wbCAqY3JlYXRlU2VtYXBob3JlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQogCiAgICAgT3ZlcmxheUltcGwgKmNyZWF0ZU92ZXJsYXkoY29uc3QgZ2w6Ok92ZXJsYXlTdGF0
ZSAmc3RhdGUpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTEwMyw3ICs5OCw2IEBA
IGNsYXNzIE1vY2tHTEZhY3RvcnkgOiBwdWJsaWMgR0xJbXBsRmFjdG9yeQogICAgIE1PQ0tfTUVU
SE9EMShjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaywKICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jt
RmVlZGJhY2tJbXBsICooY29uc3QgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrU3RhdGUgJikpOwogICAg
IE1PQ0tfTUVUSE9EMShjcmVhdGVTYW1wbGVyLCBTYW1wbGVySW1wbCAqKGNvbnN0IGdsOjpTYW1w
bGVyU3RhdGUgJikpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVQYXRocywgc3RkOjp2ZWN0b3I8
UGF0aEltcGwgKj4oR0xzaXplaSkpOwogICAgIE1PQ0tfTUVUSE9EMChjcmVhdGVTZW1hcGhvcmUs
IFNlbWFwaG9yZUltcGwgKigpKTsKICAgICBNT0NLX01FVEhPRDEoY3JlYXRlT3ZlcmxheSwgT3Zl
cmxheUltcGwgKihjb25zdCBnbDo6T3ZlcmxheVN0YXRlICYpKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfd2hpdGVfYm94X3Rlc3RzLmdu
aSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV93aGl0ZV9ib3hfdGVz
dHMuZ25pCmluZGV4IDNiMjczZTEyN2UwNTdiODMyZmY5ZmFkOTc5Y2FlZjRmMjJkNTE2NjQuLjZk
MTIwOGVjNmY3MWE3YTYzOGNkMjE2NmFlNDU0MmI1MWM4YTExMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV93aGl0ZV9ib3hfdGVzdHMuZ25pCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV93aGl0ZV9ib3hfdGVz
dHMuZ25pCkBAIC00LDE3ICs0LDEwIEBACiAKIGFuZ2xlX3doaXRlX2JveF90ZXN0c19zb3VyY2Vz
ID0gWwogICAiZWdsX3Rlc3RzL0VHTEZlYXR1cmVDb250cm9sVGVzdC5jcHAiLAotICAidXRpbF90
ZXN0cy9QcmludFN5c3RlbUluZm9UZXN0LmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3Rf
cGxhdGZvcm0uY3BwIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5oIiwKLSAg
InRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcCIsCi0gICJ0ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfY29uZmlncy5oIiwKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5j
cHAiLAotICAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiLAorICAiZ2xfdGVz
dHMvRm9ybWF0UHJpbnRUZXN0LmNwcCIsCiAgICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAiLAog
ICAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIsCi0gICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIsCi0g
ICJnbF90ZXN0cy9Gb3JtYXRQcmludFRlc3QuY3BwIiwKKyAgInV0aWxfdGVzdHMvUHJpbnRTeXN0
ZW1JbmZvVGVzdC5jcHAiLAogXQogYW5nbGVfd2hpdGVfYm94X3Rlc3RzX3dpbl9zb3VyY2VzID0g
WwogICAiZWdsX3Rlc3RzL0VHTERpcmVjdENvbXBvc2l0aW9uVGVzdC5jcHAiLApAQCAtMjgsNyAr
MjEsMyBAQCBhbmdsZV93aGl0ZV9ib3hfdGVzdHNfdnVsa2FuX3NvdXJjZXMgPSBbCiAgICJnbF90
ZXN0cy9WdWxrYW5Gb3JtYXRUYWJsZXNUZXN0LmNwcCIsCiAgICJnbF90ZXN0cy9WdWxrYW5Vbmlm
b3JtVXBkYXRlc1Rlc3QuY3BwIiwKIF0KLWFuZ2xlX3doaXRlX2JveF90ZXN0c19tYWNfc291cmNl
cyA9IFsKLSAgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZV9hcHBsZS5tbSIsCi0g
ICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGVfYXBwbGUuaCIsCi1dCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L0JVSUxE
LmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9CVUlM
RC5nbgppbmRleCBjOTVjNmZiMThkNDg0MTE1ODIwYWM4ZTljYTE2NTllM2M5OWE4MzY4Li42MDM1
NjlmODc3MDY5NDg4MmE0MTU5M2JlMTEwODY5NTRkNWFlYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L0JVSUxELmduCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvQlVJTEQuZ24KQEAg
LTgsMTIgKzgsOSBAQAogZGVxcF9wYXRoID0gIi4uLy4uLy4uL3RoaXJkX3BhcnR5L1ZLLUdMLUNU
Uy9zcmMiCiAKIGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczJfZGF0YSIpIHsKLSAgc291
cmNlcyA9IFsKLSAgICAiJGRlcXBfcGF0aC9kYXRhL2dsZXMyL2RhdGEvYnJpY2sucG5nIiwKLSAg
XQotICBvdXRwdXRzID0gWwotICAgICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEv
Z2xlczIvZGF0YS97e3NvdXJjZV9maWxlX3BhcnR9fSIsCi0gIF0KKyAgc291cmNlcyA9IFsgIiRk
ZXFwX3BhdGgvZGF0YS9nbGVzMi9kYXRhL2JyaWNrLnBuZyIgXQorICBvdXRwdXRzID0KKyAgICAg
IFsgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMi9kYXRhL3t7c291cmNl
X2ZpbGVfcGFydH19IiBdCiB9CiAKIGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczJfZGF0
YV9ldGMxIikgewpAQCAtMTAzLDkgKzEwMCw4IEBAIGNvcHkoInZrX2dsX2N0c19kYXRhX2RhdGFf
Z2xlczJfc2hhZGVycyIpIHsKICAgICAiJGRlcXBfcGF0aC9kYXRhL2dsZXMyL3NoYWRlcnMvc2Nv
cGluZy50ZXN0IiwKICAgICAiJGRlcXBfcGF0aC9kYXRhL2dsZXMyL3NoYWRlcnMvc3dpenpsZXMu
dGVzdCIsCiAgIF0KLSAgb3V0cHV0cyA9IFsKLSAgICAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNf
ZGF0YS9kYXRhL2dsZXMyL3NoYWRlcnMve3tzb3VyY2VfZmlsZV9wYXJ0fX0iLAotICBdCisgIG91
dHB1dHMgPQorICAgICAgWyAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMy
L3NoYWRlcnMve3tzb3VyY2VfZmlsZV9wYXJ0fX0iIF0KIH0KIAogY29weSgidmtfZ2xfY3RzX2Rh
dGFfZGF0YV9nbGVzMzFfZGF0YV90ZXNzZWxsYXRpb24iKSB7CkBAIC0xNjYsOSArMTYyLDcgQEAg
Y29weSgidmtfZ2xfY3RzX2RhdGFfZGF0YV9nbGVzMzFfZGF0YV90ZXNzZWxsYXRpb24iKSB7CiAg
ICAgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMzEvZGF0YS90ZXNzZWxsYXRpb24vdXNlcl9kZWZpbmVk
X2lvX3F1YWRzX3JlZi5wbmciLAogICAgICIkZGVxcF9wYXRoL2RhdGEvZ2xlczMxL2RhdGEvdGVz
c2VsbGF0aW9uL3VzZXJfZGVmaW5lZF9pb190cmlhbmdsZXNfcmVmLnBuZyIsCiAgIF0KLSAgb3V0
cHV0cyA9IFsKLSAgICAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMzMS9k
YXRhL3Rlc3NlbGxhdGlvbi97e3NvdXJjZV9maWxlX3BhcnR9fSIsCi0gIF0KKyAgb3V0cHV0cyA9
IFsgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMzEvZGF0YS90ZXNzZWxs
YXRpb24ve3tzb3VyY2VfZmlsZV9wYXJ0fX0iIF0KIH0KIAogY29weSgidmtfZ2xfY3RzX2RhdGFf
ZGF0YV9nbGVzMzFfc2hhZGVyc19lczMxIikgewpAQCAtMTk1LDkgKzE4OSw3IEBAIGNvcHkoInZr
X2dsX2N0c19kYXRhX2RhdGFfZ2xlczMxX3NoYWRlcnNfZXMzMSIpIHsKICAgICAiJGRlcXBfcGF0
aC9kYXRhL2dsZXMzMS9zaGFkZXJzL2VzMzEvdW5pZm9ybV9ibG9jay50ZXN0IiwKICAgICAiJGRl
cXBfcGF0aC9kYXRhL2dsZXMzMS9zaGFkZXJzL2VzMzEvdW5pZm9ybV9sb2NhdGlvbi50ZXN0IiwK
ICAgXQotICBvdXRwdXRzID0gWwotICAgICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2Rh
dGEvZ2xlczMxL3NoYWRlcnMvZXMzMS97e3NvdXJjZV9maWxlX3BhcnR9fSIsCi0gIF0KKyAgb3V0
cHV0cyA9IFsgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMzEvc2hhZGVy
cy9lczMxL3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiB9CiAKIGNvcHkoInZrX2dsX2N0c19kYXRh
X2RhdGFfZ2xlczMxX3NoYWRlcnNfZXMzMiIpIHsKQEAgLTIyMywxOCArMjE1LDEzIEBAIGNvcHko
InZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczMxX3NoYWRlcnNfZXMzMiIpIHsKICAgICAiJGRlcXBf
cGF0aC9kYXRhL2dsZXMzMS9zaGFkZXJzL2VzMzIvdW5pZm9ybV9ibG9jay50ZXN0IiwKICAgICAi
JGRlcXBfcGF0aC9kYXRhL2dsZXMzMS9zaGFkZXJzL2VzMzIvdW5pZm9ybV9sb2NhdGlvbi50ZXN0
IiwKICAgXQotICBvdXRwdXRzID0gWwotICAgICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRh
L2RhdGEvZ2xlczMxL3NoYWRlcnMvZXMzMi97e3NvdXJjZV9maWxlX3BhcnR9fSIsCi0gIF0KKyAg
b3V0cHV0cyA9IFsgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMzEvc2hh
ZGVycy9lczMyL3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiB9CiAKIGNvcHkoInZrX2dsX2N0c19k
YXRhX2RhdGFfZ2xlczNfZGF0YSIpIHsKLSAgc291cmNlcyA9IFsKLSAgICAiJGRlcXBfcGF0aC9k
YXRhL2dsZXMzL2RhdGEvYnJpY2sucG5nIiwKLSAgXQotICBvdXRwdXRzID0gWwotICAgICIkcm9v
dF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xlczMvZGF0YS97e3NvdXJjZV9maWxlX3Bh
cnR9fSIsCi0gIF0KKyAgc291cmNlcyA9IFsgIiRkZXFwX3BhdGgvZGF0YS9nbGVzMy9kYXRhL2Jy
aWNrLnBuZyIgXQorICBvdXRwdXRzID0KKyAgICAgIFsgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3Rz
X2RhdGEvZGF0YS9nbGVzMy9kYXRhL3t7c291cmNlX2ZpbGVfcGFydH19IiBdCiB9CiAKIGNvcHko
InZrX2dsX2N0c19kYXRhX2RhdGFfZ2xlczNfZGF0YV9ldGMxIikgewpAQCAtMzI4LDE1ICszMTUs
MTIgQEAgY29weSgidmtfZ2xfY3RzX2RhdGFfZGF0YV9nbGVzM19zaGFkZXJzIikgewogICAgICIk
ZGVxcF9wYXRoL2RhdGEvZ2xlczMvc2hhZGVycy9zd2l6emxlcy50ZXN0IiwKICAgICAiJGRlcXBf
cGF0aC9kYXRhL2dsZXMzL3NoYWRlcnMvdW5pZm9ybV9ibG9jay50ZXN0IiwKICAgXQotICBvdXRw
dXRzID0gWwotICAgICIkcm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xlczMvc2hh
ZGVycy97e3NvdXJjZV9maWxlX3BhcnR9fSIsCi0gIF0KKyAgb3V0cHV0cyA9CisgICAgICBbICIk
cm9vdF9nZW5fZGlyL3ZrX2dsX2N0c19kYXRhL2RhdGEvZ2xlczMvc2hhZGVycy97e3NvdXJjZV9m
aWxlX3BhcnR9fSIgXQogfQogCiBjb3B5KCJ2a19nbF9jdHNfZGF0YV9leHRlcm5hbF9ncmFwaGlj
c2Z1enpfZGF0YV9nbGVzM19ncmFwaGljc2Z1enoiKSB7Ci0gIHNvdXJjZXMgPSBbCi0gICAgIiRk
ZXFwX3BhdGgvZXh0ZXJuYWwvZ3JhcGhpY3NmdXp6L2RhdGEvZ2xlczMvZ3JhcGhpY3NmdXp6L3Zl
cnRleFNoYWRlci5nbHNsIiwKLSAgXQorICBzb3VyY2VzID0gWyAiJGRlcXBfcGF0aC9leHRlcm5h
bC9ncmFwaGljc2Z1enovZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovdmVydGV4U2hhZGVyLmdsc2wi
IF0KICAgb3V0cHV0cyA9IFsKICAgICAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRh
L2dsZXMzL2dyYXBoaWNzZnV6ei97e3NvdXJjZV9maWxlX3BhcnR9fSIsCiAgIF0KQEAgLTM0OSw5
ICszMzMsNyBAQCBjb3B5KAogICAgICIkZGVxcF9wYXRoL2V4dGVybmFsL2dyYXBoaWNzZnV6ei9k
YXRhL2dsZXMzL2dyYXBoaWNzZnV6ei9idWJibGVzb3J0X2ZsYWcvdmFyaWFudF8xLmZyYWciLAog
ICAgICIkZGVxcF9wYXRoL2V4dGVybmFsL2dyYXBoaWNzZnV6ei9kYXRhL2dsZXMzL2dyYXBoaWNz
ZnV6ei9idWJibGVzb3J0X2ZsYWcvdmFyaWFudF8yLmZyYWciLAogICBdCi0gIG91dHB1dHMgPSBb
Ci0gICAgIiRyb290X2dlbl9kaXIvdmtfZ2xfY3RzX2RhdGEvZGF0YS9nbGVzMy9ncmFwaGljc2Z1
enovYnViYmxlc29ydF9mbGFnL3t7c291cmNlX2ZpbGVfcGFydH19IiwKLSAgXQorICBvdXRwdXRz
ID0gWyAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0YS9kYXRhL2dsZXMzL2dyYXBoaWNzZnV6
ei9idWJibGVzb3J0X2ZsYWcve3tzb3VyY2VfZmlsZV9wYXJ0fX0iIF0KIH0KIAogY29weSgidmtf
Z2xfY3RzX2RhdGFfZXh0ZXJuYWxfZ3JhcGhpY3NmdXp6X2RhdGFfZ2xlczNfZ3JhcGhpY3NmdXp6
X3N5bnRoZXRpYyIpIHsKQEAgLTM2Miw5ICszNDQsNyBAQCBjb3B5KCJ2a19nbF9jdHNfZGF0YV9l
eHRlcm5hbF9ncmFwaGljc2Z1enpfZGF0YV9nbGVzM19ncmFwaGljc2Z1enpfc3ludGhldGljIikg
ewogICAgICIkZGVxcF9wYXRoL2V4dGVybmFsL2dyYXBoaWNzZnV6ei9kYXRhL2dsZXMzL2dyYXBo
aWNzZnV6ei9zeW50aGV0aWMvdmFyaWFudF8zLmZyYWciLAogICAgICIkZGVxcF9wYXRoL2V4dGVy
bmFsL2dyYXBoaWNzZnV6ei9kYXRhL2dsZXMzL2dyYXBoaWNzZnV6ei9zeW50aGV0aWMvdmFyaWFu
dF80LmZyYWciLAogICBdCi0gIG91dHB1dHMgPSBbCi0gICAgIiRyb290X2dlbl9kaXIvdmtfZ2xf
Y3RzX2RhdGEvZGF0YS9nbGVzMy9ncmFwaGljc2Z1enovc3ludGhldGljL3t7c291cmNlX2ZpbGVf
cGFydH19IiwKLSAgXQorICBvdXRwdXRzID0gWyAiJHJvb3RfZ2VuX2Rpci92a19nbF9jdHNfZGF0
YS9kYXRhL2dsZXMzL2dyYXBoaWNzZnV6ei9zeW50aGV0aWMve3tzb3VyY2VfZmlsZV9wYXJ0fX0i
IF0KIH0KIAogY29weSgidmtfZ2xfY3RzX2RhdGFfZXh0ZXJuYWxfb3BlbmdsY3RzX2RhdGFfZ2xl
czMiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVx
cF9zdXBwb3J0L2RlcXAuZ25pIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC9kZXFwLmduaQppbmRleCAyYTdmOWNhMDAxYjI2NjAzYzNjZjJlMjllNjZlY2Yw
M2Q0NzljNjI1Li4yMzA1ODg2YTZhMGQzNDJiMmZmYjcyYjA5OTg3MzAyZDMwYTE3ZGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2Rl
cXAuZ25pCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvZGVxcC5nbmkKQEAgLTI1NCwxMCArMjU0LDEwIEBAIGRlcXBfZ2xlczNfc291cmNlcyA9IFsK
ICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhVGV4dHVyZU1pcG1hcFRl
c3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvYWNjdXJhY3kvZXMzYVZhcnlp
bmdJbnRlcnBvbGF0aW9uVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9h
Y2N1cmFjeS9lczNhVmFyeWluZ0ludGVycG9sYXRpb25UZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0
aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkFwaUNhc2UuY3BwIiwKLSAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBcGlDYXNlLmhwcCIsCiAgICIkZGVxcF9w
YXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQVNUQ0RlY29tcHJlc3Npb25DYXNlcy5j
cHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkFTVENEZWNv
bXByZXNzaW9uQ2FzZXMuaHBwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZBcGlDYXNlLmNwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmQXBpQ2FzZS5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkF0dHJpYkxvY2F0aW9uVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBdHRyaWJMb2NhdGlvblRlc3RzLmhwcCIsCiAgICIkZGVx
cF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQmxlbmRUZXN0cy5jcHAiLApAQCAt
MzIyLDEwICszMjIsMTAgQEAgZGVxcF9nbGVzM19zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZsdXNoRmluaXNoVGVzdHMuaHBwIiwKICAgIiRk
ZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnRGVwdGhUZXN0cy5jcHAi
LAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdEZXB0aFRl
c3RzLmhwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJh
Z21lbnRPdXRwdXRUZXN0cy5jcHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnT3BJbnRlcmFjdGlvblRlc3RzLmNwcCIsCiAgICIk
ZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ09wSW50ZXJhY3Rpb25U
ZXN0cy5ocHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZy
YWdtZW50T3V0cHV0VGVzdHMuY3BwIiwKKyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZGcmFnbWVudE91dHB1dFRlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuY3BwIiwKICAgIiRk
ZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0
cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZ1bmN0
aW9uYWxUZXN0cy5jcHAiLApAQCAtNDA4LDEwICs0MDgsMTAgQEAgZGVxcF9nbGVzM19zb3VyY2Vz
ID0gWwogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlcklu
dmFyaWFuY2VUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlNoYWRlckxvb3BUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZlNoYWRlckxvb3BUZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0aC9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlck1ldGFtb3JwaGljVGVzdHMuY3BwIiwKLSAg
IiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNZXRhbW9ycGhp
Y1Rlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U2hhZGVyTWF0cml4VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZTaGFkZXJNYXRyaXhUZXN0cy5ocHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlck1ldGFtb3JwaGljVGVzdHMuY3BwIiwKKyAgIiRk
ZXFwX3BhdGgvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNZXRhbW9ycGhpY1Rl
c3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hh
ZGVyT3BlcmF0b3JUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlNoYWRlck9wZXJhdG9yVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5jcHAiLApA
QCAtNjAwLDYgKzYwMCw4IEBAIGRlcXBfZ2xlczMxX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRo
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMu
aHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0
aXZlUHJlY2lzZVRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVByZWNpc2VUZXN0cy5ocHAiLAorICAiJGRlcXBfcGF0aC9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTU0JPQmxvY2tUZXN0cy5jcHAiLAor
ICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTU0JP
QmxvY2tUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmTmVnYXRpdmVTYW1wbGVWYXJpYWJsZXNUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTYW1wbGVWYXJpYWJsZXNUZXN0
cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVn
YXRpdmVTaGFkZXJBcGlUZXN0cy5jcHAiLApAQCAtNjE0LDE0ICs2MTYsMTIgQEAgZGVxcF9nbGVz
MzFfc291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZk5lZ2F0aXZlU2hhZGVySW1hZ2VMb2FkU3RvcmVUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0
aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJTdG9yYWdlVGVz
dHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5l
Z2F0aXZlU2hhZGVyU3RvcmFnZVRlc3RzLmhwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNTQk9CbG9ja1Rlc3RzLmNwcCIsCi0gICIkZGVx
cF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNTQk9CbG9ja1Rl
c3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZO
ZWdhdGl2ZVN0YXRlQXBpVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0
aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXN0U2hhcmVkLmNwcCIs
Ci0gICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVRl
c3RTaGFyZWQuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZk5lZ2F0aXZlVGVzc2VsbGF0aW9uVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGVzc2VsbGF0aW9uVGVzdHMuaHBwIiwK
KyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGVz
dFNoYXJlZC5jcHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmTmVnYXRpdmVUZXN0U2hhcmVkLmhwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVRleHR1cmVBcGlUZXN0cy5jcHAiLAogICAiJGRlcXBf
cGF0aC9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXh0dXJlQXBpVGVz
dHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5l
Z2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5jcHAiLApAQCAtNzQyLDcgKzc0Miw4IEBAIGRlcXBf
Z2xlczMxX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xlczMxL3RlczMxVGVz
dFBhY2thZ2VFbnRyeS5jcHAiLAogCiAgICMgT3ZlcnJpZGVzCi0gICJkZXFwX3N1cHBvcnQvdGVz
MzFDb250ZXh0X292ZXJyaWRlLmNwcCIsICAjIDM2ODgvMzY4NzogT3ZlcnJpZGUgdG8gcHJldmVu
dCAzLjIgY29udGV4dCBjcmVhdGlvbgorICAiZGVxcF9zdXBwb3J0L3RlczMxQ29udGV4dF9vdmVy
cmlkZS5jcHAiLCAgIyAzNjg4LzM2ODc6IE92ZXJyaWRlIHRvIHByZXZlbnQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMy4yIGNvbnRleHQgY3JlYXRpb24K
IF0KIAogZGVxcF9lZ2xfc291cmNlcyA9IFsKQEAgLTc3MCwxMCArNzcxLDYgQEAgZGVxcF9lZ2xf
c291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbENyZWF0ZUNvbnRleHRU
ZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsQ3JlYXRlU3VyZmFjZVRl
c3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVTdXJmYWNlVGVz
dHMuaHBwIiwKLSAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbEdldEZyYW1lVGltZXN0YW1w
c1Rlc3RzLmNwcCIsCi0gICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xHZXRGcmFtZVRpbWVz
dGFtcHNUZXN0cy5ocHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsR2V0UHJvY0Fk
ZHJlc3NUZXN0cy5jcHAiLAotICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsR2V0UHJvY0Fk
ZHJlc3NUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsR0xFUzFSZW5k
ZXJVdGlsLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xHTEVTMVJlbmRlclV0
aWwuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyUmVuZGVyVXRpbC5j
cHAiLApAQCAtNzg0LDYgKzc4MSwxMCBAQCBkZXFwX2VnbF9zb3VyY2VzID0gWwogICAiJGRlcXBf
cGF0aC9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyaW5nVGVzdHMuaHBwIiwKICAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hhcmluZ1RocmVhZGVkVGVzdHMuY3BwIiwKICAgIiRk
ZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hhcmluZ1RocmVhZGVkVGVzdHMuaHBwIiwK
KyAgIiRkZXFwX3BhdGgvbW9kdWxlcy9lZ2wvdGVnbEdldEZyYW1lVGltZXN0YW1wc1Rlc3RzLmNw
cCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZWdsL3RlZ2xHZXRGcmFtZVRpbWVzdGFtcHNUZXN0
cy5ocHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsR2V0UHJvY0FkZHJlc3NUZXN0
cy5jcHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsR2V0UHJvY0FkZHJlc3NUZXN0
cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsSW1hZ2VGb3JtYXRUZXN0cy5j
cHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsSW1hZ2VGb3JtYXRUZXN0cy5ocHAi
LAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2VnbC90ZWdsSW1hZ2VUZXN0cy5jcHAiLApAQCAtODEw
LDEwICs4MTEsMTAgQEAgZGVxcF9lZ2xfc291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxl
cy9lZ2wvdGVnbE5lZ2F0aXZlQXBpVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9l
Z2wvdGVnbE5lZ2F0aXZlUGFydGlhbFVwZGF0ZVRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL21v
ZHVsZXMvZWdsL3RlZ2xOZWdhdGl2ZVBhcnRpYWxVcGRhdGVUZXN0cy5ocHAiLAotICAiJGRlcXBf
cGF0aC9tb2R1bGVzL2VnbC90ZWdsUHJlc2VydmluZ1N3YXBUZXN0cy5jcHAiLAotICAiJGRlcXBf
cGF0aC9tb2R1bGVzL2VnbC90ZWdsUHJlc2VydmluZ1N3YXBUZXN0cy5ocHAiLAogICAiJGRlcXBf
cGF0aC9tb2R1bGVzL2VnbC90ZWdsUGFydGlhbFVwZGF0ZVRlc3RzLmNwcCIsCiAgICIkZGVxcF9w
YXRoL21vZHVsZXMvZWdsL3RlZ2xQYXJ0aWFsVXBkYXRlVGVzdHMuaHBwIiwKKyAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9lZ2wvdGVnbFByZXNlcnZpbmdTd2FwVGVzdHMuY3BwIiwKKyAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9lZ2wvdGVnbFByZXNlcnZpbmdTd2FwVGVzdHMuaHBwIiwKICAgIiRkZXFwX3Bh
dGgvbW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29uZmlnVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgv
bW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29uZmlnVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvbW9k
dWxlcy9lZ2wvdGVnbFF1ZXJ5Q29udGV4dFRlc3RzLmNwcCIsCkBAIC05MTMsOCArOTE0LDYgQEAg
ZGVxcF9raHJfY29tbW9uX3NvdXJjZXMgPSBbCiAKICAgIyBPdmVycmlkZSB0byB3b3JrIGFyb3Vu
ZCBhIGRFUVAgYnVnOiBodHRwczovL2dpdGxhYi5raHJvbm9zLm9yZy9UcmFja2VyL3ZrLWdsLWN0
cy9pc3N1ZXMvMTg1OQogICAjICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVz
L2NvbW1vbi9nbGNTaGFkZXJDb25zdEV4cHJUZXN0cy5jcHAiLAotICAiZGVxcF9zdXBwb3J0L2ds
Y1NoYWRlckNvbnN0RXhwclRlc3RzX292ZXJyaWRlLmNwcCIsCi0KICAgIiRkZXFwX3BhdGgvZXh0
ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2dsY1NoYWRlckNvbnN0RXhwclRlc3RzLmhw
cCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2NvbW1vbi9nbGNT
aGFkZXJHcm91cFZvdGVUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xj
dHMvbW9kdWxlcy9jb21tb24vZ2xjU2hhZGVyR3JvdXBWb3RlVGVzdHMuaHBwIiwKQEAgLTkyOCwx
MSArOTI3LDEwIEBAIGRlcXBfa2hyX2NvbW1vbl9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9l
eHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9jb21tb24vZ2xjU2hhZGVyTGlicmFyeUNhc2UuaHBw
IiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2dsY1No
YWRlckxvb3BUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9k
dWxlcy9jb21tb24vZ2xjU2hhZGVyTG9vcFRlc3RzLmhwcCIsCisgICJkZXFwX3N1cHBvcnQvZ2xj
U2hhZGVyQ29uc3RFeHByVGVzdHNfb3ZlcnJpZGUuY3BwIiwKIAogICAjIE92ZXJyaWRlIHRvIHdv
cmsgYXJvdW5kIGEgZEVRUCBidWc6IGh0dHBzOi8vZ2l0bGFiLmtocm9ub3Mub3JnL1RyYWNrZXIv
dmstZ2wtY3RzL2lzc3Vlcy8xODU5CiAgICMgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3Rz
L21vZHVsZXMvY29tbW9uL2dsY1NoYWRlck1hY3JvVGVzdHMuY3BwIiwKLSAgImRlcXBfc3VwcG9y
dC9nbGNTaGFkZXJNYWNyb1Rlc3RzX292ZXJyaWRlLmNwcCIsCi0KICAgIiRkZXFwX3BhdGgvZXh0
ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2dsY1NoYWRlck1hY3JvVGVzdHMuaHBwIiwK
ICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvY29tbW9uL2dsY1NoYWRl
ck11bHRpc2FtcGxlSW50ZXJwb2xhdGlvblRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVy
bmFsL29wZW5nbGN0cy9tb2R1bGVzL2NvbW1vbi9nbGNTaGFkZXJNdWx0aXNhbXBsZUludGVycG9s
YXRpb25UZXN0cy5ocHAiLApAQCAtOTY5LDYgKzk2Nyw3IEBAIGRlcXBfa2hyX2NvbW1vbl9zb3Vy
Y2VzID0gWwogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0
L2VzZXh0Y1Rlc3RDYXNlQmFzZS5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xj
dHMvbW9kdWxlcy9nbGVzZXh0L2VzZXh0Y1Rlc3RQYWNrYWdlLmNwcCIsCiAgICIkZGVxcF9wYXRo
L2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZXNleHRjVGVzdFBhY2thZ2UuaHBw
IiwKKyAgImRlcXBfc3VwcG9ydC9nbGNTaGFkZXJNYWNyb1Rlc3RzX292ZXJyaWRlLmNwcCIsCiBd
CiAKIGRlcXBfa2hyX3Rlc3RfbW9kdWxlX2hlYWRlcnMgPSBbCkBAIC0xMDQzLDE5ICsxMDQyLDE5
IEBAIGRlcXBfa2hyX2dsX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5n
bGN0cy9tb2R1bGVzL2dsL2dsNGNEaXJlY3RTdGF0ZUFjY2Vzc1RleHR1cmVzVGVzdHMuY3BwIiwK
ICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0RpcmVjdFN0
YXRlQWNjZXNzVmVydGV4QXJyYXlzVGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwv
b3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0RpcmVjdFN0YXRlQWNjZXNzWEZCVGVzdHMuY3BwIiwK
LSAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0VuaGFuY2Vk
TGF5b3V0c1Rlc3RzLmNwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1
bGVzL2dsL2dsNGNFbmhhbmNlZExheW91dHNUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRl
cm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjRVMzMUNvbXBhdGliaWxpdHlTYW1wbGVWYXJp
YWJsZXNUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxl
cy9nbC9nbDRjRVMzMUNvbXBhdGliaWxpdHlTaGFkZXJJbWFnZUxvYWRTdG9yZVRlc3RzLmNwcCIs
CiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNFUzMxQ29t
cGF0aWJpbGl0eVNoYWRlclN0b3JhZ2VCdWZmZXJPYmplY3RUZXN0cy5jcHAiLAogICAiJGRlcXBf
cGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjRVMzMUNvbXBhdGliaWxpdHlU
ZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9n
bDRjRVMzMUNvbXBhdGliaWxpdHlUZXN0cy5ocHAiLAorICAiJGRlcXBfcGF0aC9leHRlcm5hbC9v
cGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjRW5oYW5jZWRMYXlvdXRzVGVzdHMuY3BwIiwKKyAgIiRk
ZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0VuaGFuY2VkTGF5b3V0
c1Rlc3RzLmhwcCIsCisgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2ds
L2dsNGNHUFVTaGFkZXJGUDY0VGVzdHMuY3BwIiwKKyAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Bl
bmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0dQVVNoYWRlckZQNjRUZXN0cy5ocHAiLAogICAiJGRlcXBf
cGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjR2V0VGV4dHVyZVN1YkltYWdl
VGVzdHMuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wv
Z2w0Y0dldFRleHR1cmVTdWJJbWFnZVRlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFs
L29wZW5nbGN0cy9tb2R1bGVzL2dsL2dsNGNHbFNwaXJ2VGVzdHMuY3BwIiwKICAgIiRkZXFwX3Bh
dGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0dsU3BpcnZUZXN0cy5ocHAiLAot
ICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbC9nbDRjR1BVU2hhZGVy
RlA2NFRlc3RzLmNwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVz
L2dsL2dsNGNHUFVTaGFkZXJGUDY0VGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwv
b3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0luY29tcGxldGVUZXh0dXJlQWNjZXNzVGVzdHMuY3Bw
IiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0luY29t
cGxldGVUZXh0dXJlQWNjZXNzVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Bl
bmdsY3RzL21vZHVsZXMvZ2wvZ2w0Y0luZGlyZWN0UGFyYW1ldGVyc1Rlc3RzLmNwcCIsCkBAIC0x
MTY5LDE0ICsxMTY4LDE0IEBAIGRlcXBfa2hyX2dsZXMzMV9zb3VyY2VzID0gWwogICAiJGRlcXBf
cGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFn
ZU11bHRpc2FtcGxlRGVwZW5kZW5jaWVzVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJu
YWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVyZVN0b3JhZ2VNdWx0aXNhbXBs
ZUZ1bmN0aW9uYWxUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMv
bW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxlRnVuY3Rpb25hbFRl
c3RzLmhwcCIsCisgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXMz
MS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVHTENvdmVyYWdlVGVzdHMuY3BwIiwKKyAg
IiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVy
ZVN0b3JhZ2VNdWx0aXNhbXBsZUdMQ292ZXJhZ2VUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9l
eHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRp
c2FtcGxlR2V0QWN0aXZlVW5pZm9ybVRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFs
L29wZW5nbGN0cy9tb2R1bGVzL2dsZXMzMS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVH
ZXRBY3RpdmVVbmlmb3JtVGVzdHMuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Blbmds
Y3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4dHVyZVN0b3JhZ2VNdWx0aXNhbXBsZUdldE11bHRp
c2FtcGxlZnZUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9k
dWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxlR2V0TXVsdGlzYW1wbGVm
dlRlc3RzLmhwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2ds
ZXMzMS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVHZXRUZXhMZXZlbFBhcmFtZXRlcmlm
dlRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2ds
ZXMzMS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVHZXRUZXhMZXZlbFBhcmFtZXRlcmlm
dlRlc3RzLmhwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2ds
ZXMzMS9lczMxY1RleHR1cmVTdG9yYWdlTXVsdGlzYW1wbGVHTENvdmVyYWdlVGVzdHMuY3BwIiwK
LSAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlczMxL2VzMzFjVGV4
dHVyZVN0b3JhZ2VNdWx0aXNhbXBsZUdMQ292ZXJhZ2VUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0
aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11
bHRpc2FtcGxlU2FtcGxlTWFza2lUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9v
cGVuZ2xjdHMvbW9kdWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxlU2Ft
cGxlTWFza2lUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9k
dWxlcy9nbGVzMzEvZXMzMWNUZXh0dXJlU3RvcmFnZU11bHRpc2FtcGxlVGVzdHMuY3BwIiwKQEAg
LTEyMTMsMTIgKzEyMTIsMTIgQEAgZGVxcF9raHJfZ2xlc2V4dF9zb3VyY2VzID0gWwogICAiJGRl
cXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2RyYXdfYnVmZmVyc19p
bmRleGVkL2VzZXh0Y0RyYXdCdWZmZXJzSW5kZXhlZFNldEdldC5ocHAiLAogICAiJGRlcXBfcGF0
aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2RyYXdfYnVmZmVyc19pbmRleGVk
L2VzZXh0Y0RyYXdCdWZmZXJzSW5kZXhlZFRlc3RzLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVy
bmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleC9l
c2V4dGNEcmF3RWxlbWVudHNCYXNlVmVydGV4VGVzdHMuY3BwIiwKKyAgIiRkZXFwX3BhdGgvZXh0
ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFkZXIvZXNleHRjR2Vv
bWV0cnlTaGFkZXJBUEkuY3BwIiwKKyAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21v
ZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFkZXIvZXNleHRjR2VvbWV0cnlTaGFkZXJBUEkuaHBw
IiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9t
ZXRyeV9zaGFkZXIvZXNleHRjR2VvbWV0cnlTaGFkZXJBZGphY2VuY3kuY3BwIiwKICAgIiRkZXFw
X3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFkZXIv
ZXNleHRjR2VvbWV0cnlTaGFkZXJBZGphY2VuY3kuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJu
YWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFkZXIvZXNleHRjR2VvbWV0
cnlTaGFkZXJBZGphY2VuY3lUZXN0cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVu
Z2xjdHMvbW9kdWxlcy9nbGVzZXh0L2dlb21ldHJ5X3NoYWRlci9lc2V4dGNHZW9tZXRyeVNoYWRl
ckFkamFjZW5jeVRlc3RzLmhwcCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9t
b2R1bGVzL2dsZXNleHQvZ2VvbWV0cnlfc2hhZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQVBJLmNw
cCIsCi0gICIkZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ2Vv
bWV0cnlfc2hhZGVyL2VzZXh0Y0dlb21ldHJ5U2hhZGVyQVBJLmhwcCIsCiAgICIkZGVxcF9wYXRo
L2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ2VvbWV0cnlfc2hhZGVyL2VzZXh0
Y0dlb21ldHJ5U2hhZGVyQmxpdHRpbmcuY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Bl
bmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9nZW9tZXRyeV9zaGFkZXIvZXNleHRjR2VvbWV0cnlTaGFk
ZXJCbGl0dGluZy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxl
cy9nbGVzZXh0L2dlb21ldHJ5X3NoYWRlci9lc2V4dGNHZW9tZXRyeVNoYWRlckNsaXBwaW5nLmNw
cCIsCkBAIC0xMjY2LDEwICsxMjY1LDEwIEBAIGRlcXBfa2hyX2dsZXNleHRfc291cmNlcyA9IFsK
ICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9ncHVfc2hh
ZGVyNS9lc2V4dGNHUFVTaGFkZXI1SW1hZ2VzQXJyYXlJbmRleGluZy5ocHAiLAogICAiJGRlcXBf
cGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2dwdV9zaGFkZXI1L2VzZXh0
Y0dQVVNoYWRlcjVQcmVjaXNlUXVhbGlmaWVyLmNwcCIsCiAgICIkZGVxcF9wYXRoL2V4dGVybmFs
L29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvZ3B1X3NoYWRlcjUvZXNleHRjR1BVU2hhZGVyNVBy
ZWNpc2VRdWFsaWZpZXIuaHBwIiwKLSAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21v
ZHVsZXMvZ2xlc2V4dC9ncHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1U2FtcGxlckFycmF5SW5k
ZXhpbmcuY3BwIiwKLSAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xl
c2V4dC9ncHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1U2FtcGxlckFycmF5SW5kZXhpbmcuaHBw
IiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9ncHVf
c2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1U1NCT0FycmF5SW5kZXhpbmcuY3BwIiwKICAgIiRkZXFw
X3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9ncHVfc2hhZGVyNS9lc2V4
dGNHUFVTaGFkZXI1U1NCT0FycmF5SW5kZXhpbmcuaHBwIiwKKyAgIiRkZXFwX3BhdGgvZXh0ZXJu
YWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9ncHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1
U2FtcGxlckFycmF5SW5kZXhpbmcuY3BwIiwKKyAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Blbmds
Y3RzL21vZHVsZXMvZ2xlc2V4dC9ncHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1U2FtcGxlckFy
cmF5SW5kZXhpbmcuaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVs
ZXMvZ2xlc2V4dC9ncHVfc2hhZGVyNS9lc2V4dGNHUFVTaGFkZXI1VGVzdHMuY3BwIiwKICAgIiRk
ZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC9ncHVfc2hhZGVyNS9l
c2V4dGNHUFVTaGFkZXI1VGV4dHVyZUdhdGhlck9mZnNldC5jcHAiLAogICAiJGRlcXBfcGF0aC9l
eHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0L2dwdV9zaGFkZXI1L2VzZXh0Y0dQVVNo
YWRlcjVUZXh0dXJlR2F0aGVyT2Zmc2V0LmhwcCIsCkBAIC0xMzQ0LDEwICsxMzQzLDEwIEBAIGRl
cXBfa2hyX2dsZXNleHRfc291cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Blbmds
Y3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0dXJlQnVmZmVyTUFY
U2l6ZVZhbGlkYXRpb24uaHBwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21v
ZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0dXJlQnVmZmVyT3BlcmF0aW9u
cy5jcHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9nbGVzZXh0
L3RleHR1cmVfYnVmZmVyL2VzZXh0Y1RleHR1cmVCdWZmZXJPcGVyYXRpb25zLmhwcCIsCi0gICIk
ZGVxcF9wYXRoL2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZm
ZXIvZXNleHRjVGV4dHVyZUJ1ZmZlclBhcmFtZXRlcnMuY3BwIiwKLSAgIiRkZXFwX3BhdGgvZXh0
ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0
dXJlQnVmZmVyUGFyYW1ldGVycy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xj
dHMvbW9kdWxlcy9nbGVzZXh0L3RleHR1cmVfYnVmZmVyL2VzZXh0Y1RleHR1cmVCdWZmZXJQYXJh
bVZhbHVlSW50VG9GbG9hdENvbnZlcnNpb24uY3BwIiwKICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwv
b3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0dXJlQnVm
ZmVyUGFyYW1WYWx1ZUludFRvRmxvYXRDb252ZXJzaW9uLmhwcCIsCisgICIkZGVxcF9wYXRoL2V4
dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZmZXIvZXNleHRjVGV4
dHVyZUJ1ZmZlclBhcmFtZXRlcnMuY3BwIiwKKyAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3Blbmds
Y3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJlX2J1ZmZlci9lc2V4dGNUZXh0dXJlQnVmZmVyUGFy
YW1ldGVycy5ocHAiLAogICAiJGRlcXBfcGF0aC9leHRlcm5hbC9vcGVuZ2xjdHMvbW9kdWxlcy9n
bGVzZXh0L3RleHR1cmVfYnVmZmVyL2VzZXh0Y1RleHR1cmVCdWZmZXJQcmVjaXNpb24uY3BwIiwK
ICAgIiRkZXFwX3BhdGgvZXh0ZXJuYWwvb3BlbmdsY3RzL21vZHVsZXMvZ2xlc2V4dC90ZXh0dXJl
X2J1ZmZlci9lc2V4dGNUZXh0dXJlQnVmZmVyUHJlY2lzaW9uLmhwcCIsCiAgICIkZGVxcF9wYXRo
L2V4dGVybmFsL29wZW5nbGN0cy9tb2R1bGVzL2dsZXNleHQvdGV4dHVyZV9idWZmZXIvZXNleHRj
VGV4dHVyZUJ1ZmZlclRlc3RzLmNwcCIsCkBAIC0xNDgzLDYgKzE0ODIsOCBAQCBkZXFwX2ZyYW1l
d29ya19kZWNwcF9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2Rl
Y3BwL2RlUmFuZG9tLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAv
ZGVSaW5nQnVmZmVyLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAv
ZGVSaW5nQnVmZmVyLmhwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAv
ZGVTVExVdGlsLmNwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVT
VExVdGlsLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTZW1h
cGhvcmUuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVNlbWFw
aG9yZS5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlU2hhMS5j
cHAiLApAQCAtMTQ5Myw4ICsxNDk0LDYgQEAgZGVxcF9mcmFtZXdvcmtfZGVjcHBfc291cmNlcyA9
IFsKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVNvY2tldC5ocHAiLAog
ICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlU3BpbkJhcnJpZXIuY3BwIiwK
ICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVNwaW5CYXJyaWVyLmhwcCIs
Ci0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTVExVdGlsLmNwcCIsCi0g
ICIkZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTVExVdGlsLmhwcCIsCiAgICIk
ZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTdHJpbmdVdGlsLmNwcCIsCiAgICIk
ZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTdHJpbmdVdGlsLmhwcCIsCiAgICIk
ZGVxcF9wYXRoL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVUaHJlYWQuY3BwIiwKQEAgLTE1ODIs
MTAgKzE1ODEsMTAgQEAgZGVxcF9mcmFtZXdvcmtfb3BlbmdsX3NvdXJjZXMgPSBbCiAgICIkZGVx
cF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdFbnVtcy5ocHAiLAogICAiJGRlcXBf
cGF0aC9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3RW51bXMuaW5sIiwKICAgIiRkZXFwX3Bh
dGgvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyL2dsd0Z1bmN0aW9uTG9hZGVyLmhwcCIsCisgICIk
ZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdGdW5jdGlvblR5cGVzLmlubCIs
CiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdGdW5jdGlvbnMuY3Bw
IiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyL2dsd0Z1bmN0aW9ucy5o
cHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3RnVuY3Rpb25z
LmlubCIsCi0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdGdW5jdGlv
blR5cGVzLmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdJ
bXBsLmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdJbml0
RVMyMC5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3SW5p
dEVTMjBEaXJlY3QuY3BwIiwKQEAgLTE2NzIsMTAgKzE2NzEsMTAgQEAgZGVxcF9mcmFtZXdvcmtf
ZWdsX3NvdXJjZXMgPSBbCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9lZ2wvd3JhcHBlci9lZ2x3
RW51bXNDLmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9lZ2wvd3JhcHBlci9lZ2x3RnVu
Y1B0ckxpYnJhcnlEZWNsLmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9lZ2wvd3JhcHBl
ci9lZ2x3RnVuY1B0ckxpYnJhcnlJbXBsLmlubCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9l
Z2wvd3JhcHBlci9lZ2x3RnVuY3Rpb25UeXBlcy5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9ucy5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9ucy5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9ucy5pbmwiLAotICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvZWdsL3dyYXBwZXIvZWdsd0Z1bmN0aW9uVHlwZXMuaW5sIiwKICAgIiRkZXFwX3BhdGgvZnJh
bWV3b3JrL2VnbC93cmFwcGVyL2VnbHdJbXBsLmlubCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29y
ay9lZ2wvd3JhcHBlci9lZ2x3SW1wbEV4dC5pbmwiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
ZWdsL3dyYXBwZXIvZWdsd0luaXRDb3JlLmlubCIsCkBAIC0xNjk5LDEyICsxNjk4LDEyIEBAIGRl
cXBfZnJhbWV3b3JrX2NvbW1vbl9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
Y29tbW9uL3RjdUFzdGNVdGlsLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24v
dGN1QmlsaW5lYXJJbWFnZUNvbXBhcmUuY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2Nv
bW1vbi90Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5ocHAiLAorICAiJGRlcXBfcGF0aC9mcmFtZXdv
cmsvY29tbW9uL3RjdUNQVVdhcm11cC5jcHAiLAorICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29t
bW9uL3RjdUNQVVdhcm11cC5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3Rj
dUNvbW1hbmRMaW5lLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1Q29t
bWFuZExpbmUuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VDb21wcmVz
c2VkVGV4dHVyZS5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdUNvbXBy
ZXNzZWRUZXh0dXJlLmhwcCIsCi0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1Q1BV
V2FybXVwLmNwcCIsCi0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1Q1BVV2FybXVw
LmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1RGVmcy5jcHAiLAogICAi
JGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdURlZnMuaHBwIiwKICAgIiRkZXFwX3BhdGgv
ZnJhbWV3b3JrL2NvbW1vbi90Y3VFaXRoZXIuY3BwIiwKQEAgLTE3MzQsNiArMTczMyw4IEBAIGRl
cXBfZnJhbWV3b3JrX2NvbW1vbl9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
Y29tbW9uL3RjdVBpeGVsRm9ybWF0LmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21t
b24vdGN1UGxhdGZvcm0uY3BwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VQ
bGF0Zm9ybS5ocHAiLAorICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVJHQkEuY3Bw
IiwKKyAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VSR0JBLmhwcCIsCiAgICIkZGVx
cF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1UmFuZG9tVmFsdWVJdGVyYXRvci5jcHAiLAogICAi
JGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVJhbmRvbVZhbHVlSXRlcmF0b3IuaHBwIiwK
ICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VSYXN0ZXJpemF0aW9uVmVyaWZpZXIu
Y3BwIiwKQEAgLTE3NDQsMTEgKzE3NDUsOSBAQCBkZXFwX2ZyYW1ld29ya19jb21tb25fc291cmNl
cyA9IFsKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VSZXNvdXJjZS5ocHAiLAog
ICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVJlc3VsdENvbGxlY3Rvci5jcHAiLAog
ICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVJlc3VsdENvbGxlY3Rvci5ocHAiLAot
ICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVJHQkEuY3BwIiwKLSAgIiRkZXFwX3Bh
dGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VSR0JBLmhwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29y
ay9jb21tb24vdGN1U1JHQjhMdXQuaW5sIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1v
bi90Y3VTZWVkQnVpbGRlci5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3Rj
dVNlZWRCdWlsZGVyLmhwcCIsCi0gICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1U1JH
QjhMdXQuaW5sIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VTdHJpbmdUZW1w
bGF0ZS5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVN0cmluZ1RlbXBs
YXRlLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1U3VyZmFjZS5jcHAi
LApAQCAtMTc3MywxMiArMTc3MiwxMiBAQCBkZXFwX2ZyYW1ld29ya19jb21tb25fc291cmNlcyA9
IFsKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXhDb21wYXJlVmVyaWZpZXIu
aHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXhMb29rdXBWZXJpZmll
ci5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleExvb2t1cFZlcmlm
aWVyLmhwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1VGV4VmVyaWZpZXJV
dGlsLmNwcCIsCisgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1VGV4VmVyaWZpZXJV
dGlsLmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9jb21tb24vdGN1VGV4dHVyZS5jcHAi
LAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleHR1cmUuaHBwIiwKICAgIiRk
ZXFwX3BhdGgvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXh0dXJlVXRpbC5jcHAiLAogICAiJGRlcXBf
cGF0aC9mcmFtZXdvcmsvY29tbW9uL3RjdVRleHR1cmVVdGlsLmhwcCIsCi0gICIkZGVxcF9wYXRo
L2ZyYW1ld29yay9jb21tb24vdGN1VGV4VmVyaWZpZXJVdGlsLmNwcCIsCi0gICIkZGVxcF9wYXRo
L2ZyYW1ld29yay9jb21tb24vdGN1VGV4VmVyaWZpZXJVdGlsLmhwcCIsCiAgICIkZGVxcF9wYXRo
L2ZyYW1ld29yay9jb21tb24vdGN1VGhyZWFkVXRpbC5jcHAiLAogICAiJGRlcXBfcGF0aC9mcmFt
ZXdvcmsvY29tbW9uL3RjdVRocmVhZFV0aWwuaHBwIiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VWZWN0b3IuaHBwIiwKQEAgLTE4NDUsOSArMTg0NCw5IEBAIGRlcXBfZnJhbWV3
b3JrX2NvbW1vbl9zb3VyY2VzID0gWwogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvcmVmZXJlbmNl
cmVuZGVyZXIvcnJQcmltaXRpdmVUeXBlcy5ocHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsv
cmVmZXJlbmNlcmVuZGVyZXIvcnJSYXN0ZXJpemVyLmNwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1l
d29yay9yZWZlcmVuY2VyZW5kZXJlci9yclJhc3Rlcml6ZXIuaHBwIiwKKyAgIiRkZXFwX3BhdGgv
ZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmVuZGVyU3RhdGUuaHBwIiwKICAgIiRkZXFw
X3BhdGgvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmVuZGVyZXIuY3BwIiwKICAgIiRk
ZXFwX3BhdGgvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmVuZGVyZXIuaHBwIiwKLSAg
IiRkZXFwX3BhdGgvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyUmVuZGVyU3RhdGUuaHBw
IiwKICAgIiRkZXFwX3BhdGgvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyU2hhZGVycy5j
cHAiLAogICAiJGRlcXBfcGF0aC9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJTaGFkZXJz
LmhwcCIsCiAgICIkZGVxcF9wYXRoL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclNoYWRp
bmdDb250ZXh0LmNwcCIsCkBAIC0xODg4LDEwICsxODg3LDEwIEBAIGRlcXBfZ2xzaGFyZWRfc291
cmNlcyA9IFsKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNoYXJlZC9nbHNGYm9Db21wbGV0ZW5l
c3NUZXN0cy5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hhcmVkL2dsc0Zib1V0aWwu
Y3BwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNoYXJlZC9nbHNGYm9VdGlsLmhwcCIsCi0g
ICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRnJhZ21lbnRPcFV0aWwuY3BwIiwKLSAg
IiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNoYXJlZC9nbHNGcmFnbWVudE9wVXRpbC5ocHAiLAogICAi
JGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hhcmVkL2dsc0ZyYWdPcEludGVyYWN0aW9uQ2FzZS5jcHAi
LAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hhcmVkL2dsc0ZyYWdPcEludGVyYWN0aW9uQ2Fz
ZS5ocHAiLAorICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hhcmVkL2dsc0ZyYWdtZW50T3BVdGls
LmNwcCIsCisgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRnJhZ21lbnRPcFV0aWwu
aHBwIiwKICAgIiRkZXFwX3BhdGgvbW9kdWxlcy9nbHNoYXJlZC9nbHNJbnRlcmFjdGlvblRlc3RV
dGlsLmNwcCIsCiAgICIkZGVxcF9wYXRoL21vZHVsZXMvZ2xzaGFyZWQvZ2xzSW50ZXJhY3Rpb25U
ZXN0VXRpbC5ocHAiLAogICAiJGRlcXBfcGF0aC9tb2R1bGVzL2dsc2hhcmVkL2dsc0xpZmV0aW1l
VGVzdHMuY3BwIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9kZXFwX3N1cHBvcnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2VnbF90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZmNTM0ZDc0ZmEzYWMzNjZiNjM4OWUwY2Y4OWJiYTdi
ODYxYjU2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0wLDAg
KzEsMjUyIEBACisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUg
ZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCisvLyBmb3JtYXQgaXM6CisvLyAg
e0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVP
VVQsU0tJUH0KKy8vCisvLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJl
bG93IGxpc3QsIGNvbWJpbmVkIHdpdGggYSBsb2dpY2FsIEFORDoKKy8vICBXSU4gWFAgVklTVEEg
V0lONyBXSU44IFdJTjEwCisvLyAgTUFDIExFT1BBUkQgU05PV0xFT1BBUkQgTElPTiBNT1VOVEFJ
TkxJT04gTUFWRVJJQ0tTIFlPU0VNSVRFIEVMQ0FQSVRBTiBTSUVSUkEgSElHSFNJRVJSQSBNT0pB
VkUKKy8vICBMSU5VWCBDSFJPTUVPUyBBTkRST0lECisvLyAgTlZJRElBIEFNRCBJTlRFTAorLy8g
IERFQlVHIFJFTEVBU0UKKy8vICBEM0Q5IEQzRDExIE9QRU5HTCBHTEVTIFZVTEtBTgorLy8gIE5F
WFVTNVggUElYRUwyT1JYTAorLy8gIFFVQURST1A0MDAKKy8vCisvLworLy8gVEVTVF9OQU1FIGNh
biBiZSBhIHNwZWNpZmljIHRlc3QgbmFtZSwgb3IgaGF2ZSBhICcqJyBpbiB0aGUgZW5kLCB3aGlj
aAorLy8gaW5kaWNhdGVzIGEgcHJlZml4IG1hdGNoaW5nLgorLy8KKy8vIEV4YW1wbGVzOgorLy8g
ZmFpbHMgb24gYm90aCB3aW5kb3dzIGFuZCBtYWMgKGNyYXNoKQorLy8gIDkxNTMwIFdJTiA6IGNv
bnRleHRfbG9zdF9yZXN0b3JlZCA9IFNLSVAKKy8vICA5MTUzMCBNQUMgOiBjb250ZXh0X2xvc3Rf
cmVzdG9yZWQgPSBTS0lQCisvLyBmYWlscyBvbiB3aW5kb3dzIHVzaW5nIE5WSURJQSBHUFVzCisv
LyAgOTE1MzMgV0lOIE5WSURJQSA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKKy8vIGZhaWxzIG9u
IE5leHVzNVggd2l0aCBHTEVTIGJhY2tlbmQgKGhhbmdzKQorLy8gIDkxNTMxIE5FWFVTNVggR0xF
UyA6IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAKKworLy8gR2xvYmFsbHkgZGlzYWJsZSBNZXRh
bCB0ZXN0aW5nIGZvciBub3cKKzQyMzUgTUVUQUwgOiBkRVFQLUVHTC4qID0gU0tJUAorCisvLyBP
bmx5IFZ1bGthbiBzdXBwb3J0cyBtdWx0aXRocmVhZGluZworMzkxNiBPUEVOR0wgOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnNoYXJpbmcuZ2xlczIubXVsdGl0aHJlYWQuKiA9IFNLSVAKKzM5MTYgT1BF
TkdMIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5tdWx0aXRocmVhZC4qID0gU0tJUAorMzkxNiBPUEVO
R0wgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV90aHJlYWQuKiA9IFNLSVAKKzM5
MTYgT1BFTkdMIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMubXVsdGlfdGhyZWFk
LiogPSBTS0lQCiszOTE2IEdMRVMgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnNoYXJpbmcuZ2xlczIu
bXVsdGl0aHJlYWQuKiA9IFNLSVAKKzM5MTYgR0xFUyA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVs
dGl0aHJlYWQuKiA9IFNLSVAKKzM5MTYgR0xFUyA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVy
Lm11bHRpX3RocmVhZC4qID0gU0tJUAorMzkxNiBHTEVTIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
b2xvcl9jbGVhcnMubXVsdGlfdGhyZWFkLiogPSBTS0lQCiszOTE2IEQzRDExIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5zaGFyaW5nLmdsZXMyLm11bHRpdGhyZWFkLiogPSBTS0lQCiszOTE2IEQzRDEx
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5tdWx0aXRocmVhZC4qID0gU0tJUAorMzkxNiBEM0QxMSA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX3RocmVhZC4qID0gU0tJUAorMzkxNiBE
M0QxMSA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX3RocmVhZC4qID0g
U0tJUAorMzkxNiBEM0Q5IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zaGFyaW5nLmdsZXMyLm11bHRp
dGhyZWFkLiogPSBTS0lQCiszOTE2IEQzRDkgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm11bHRpdGhy
ZWFkLiogPSBTS0lQCiszOTE2IEQzRDkgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0
aV90aHJlYWQuKiA9IFNLSVAKKzM5MTYgRDNEOSA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3Jf
Y2xlYXJzLm11bHRpX3RocmVhZC4qID0gU0tJUAorCisvLyBTZWVtcyB0byB0aW1lIG91dCBvbiBM
aW51eC4KKzQwMzE5MTYgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5tdWx0aXRocmVhZC4q
ID0gU0tJUAorCisvLyBUaGVzZSB0ZXN0cyByZXF1aXJlIHBpeG1hcCBzdXJmYWNlcy4gT24gbWFu
eSBwbGF0Zm9ybXMgdGhleSBhcmUgdW5zdXBwb3J0ZWQuCiszOTE3IEFORFJPSUQgVlVMS0FOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfdGhyZWFkLiogPSBGQUlMCiszOTE3IEFO
RFJPSUQgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMubXVsdGlfdGhy
ZWFkLiogPSBGQUlMCisKKy8vIGRFUVAgZG9lc24ndCBoYW5kbGUgY29uZmlncyBjcmVhdGVkIGZv
ciBleHRlbnNpb25zCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJz
LnNpbmdsZV9jb250ZXh0LmdsZXMyLm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNvbG9yX2NsZWFycy5zaW5nbGVfY29udGV4dC5nbGVzMy5vdGhlciA9IEZBSUwK
KzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMubXVsdGlfY29udGV4
dC5nbGVzMi5vdGhlciA9IEZBSUwKKzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xv
cl9jbGVhcnMubXVsdGlfY29udGV4dC5nbGVzMy5vdGhlciA9IEZBSUwKKzE2NjIgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xlX2NvbnRleHQuZ2xlczIub3RoZXIgPSBGQUlM
CisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0Lmds
ZXMzLm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5t
dWx0aV9jb250ZXh0LmdsZXMyLm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMzLm90aGVyID0gRkFJTAorMTY2MiBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyX2dsZXMzLm90
aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9t
YXBwaW5nLm5hdGl2ZV93aW5kb3cub3RoZXJfY2xlYXIgPSBGQUlMCisxNjYyIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5vdGhlcl9y
ZW5kZXIgPSBGQUlMCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfY29udGV4
dC5nZXRfY3VycmVudF9jb250ZXh0Lm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQuZ2V0X2N1cnJlbnRfc3VyZmFjZS5vdGhlciA9IEZBSUwK
KzE2NjIgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LmdldF9jdXJyZW50
X2Rpc3BsYXkub3RoZXIgPSBGQUlMCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfY29udGV4dC5xdWVyeV9jb250ZXh0Lm90aGVyID0gRkFJTAorMTY2MiBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cub3RoZXJfY2xl
YXIgPSBTS0lQCisxNjYyIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21h
cHBpbmcubmF0aXZlX3dpbmRvdy5vdGhlcl9yZW5kZXIgPSBTS0lQCisKKy8vIEludGVudGlvbmFs
bHkgY2F1c2VzIFREUnMgdGhhdCBldmVudHVhbGx5IGJsYWNrbGlzdCB0aGUgYXBwbGljYXRpb24K
KzIzMTkgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJvYnVzdG5lc3MucmVzZXRfY29udGV4dC5zaGFk
ZXJzLmluZmluaXRlX2xvb3AuKiA9IFNLSVAKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v
CisvLyAgVGVtcHJvcnkgZW50cmllczogdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBi
dWdzIGFyZSBmaXhlZC4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvLyBGbGFreSBz
aW5jZSB3ZSBlbmFibGVkIGRlcHRoL3N0ZW5jaWwgYmFja2J1ZmZlciBpbiBhbGwgdGVzdHMuCisy
NDI5IFdJTiBOVklESUEgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQucXVlcnlf
Y29udGV4dC5yZ2JhODg4OF93aW5kb3cgPSBGQUlMCisKKy8vIFRPRE8oam1hZGlsbCk6IFRyaWFn
ZSB0aGVzZSBpbnRvIHBlcm1hbmFuZW50IGFuZCB0ZW1wb3JhcnkgZmFpbHVyZXMuCisxMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfY29uZmlnLmdldF9jb25maWdzLmdldF9jb25m
aWdzX2JvdW5kcyA9IEZBSUwKKzMyNzAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2Vf
Y29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5jb25maWdfaWQgPSBGQUlMCiszMjcwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9z
b3J0LmNvbmZpZ19pZCA9IEZBSUwKKzEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5k
ZXIuc2luZ2xlX2NvbnRleHQuZ2xlczIucmdiYTU1NTFfd2luZG93ID0gRkFJTAorMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29udGV4dC5nbGVzMi5yZ2JhNTU1
MV9wYnVmZmVyID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5z
aW5nbGVfY29udGV4dC5nbGVzMy5yZ2JhNTU1MV93aW5kb3cgPSBGQUlMCisxMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0LmdsZXMzLnJnYmE1NTUxX3Bi
dWZmZXIgPSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRp
X2NvbnRleHQuZ2xlczIucmdiYTU1NTFfd2luZG93ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3BidWZmZXIg
PSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRl
eHQuZ2xlczMucmdiYTU1NTFfd2luZG93ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMzLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlM
CisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQuZ2xl
czJfZ2xlczMucmdiYTU1NTFfd2luZG93ID0gRkFJTAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyX2dsZXMzLnJnYmE1NTUxX3BidWZmZXIg
PSBGQUlMCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLmNob29z
ZV9jb25maWcgPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmVnYXRpdmVf
YXBpLnN1cmZhY2VfYXR0cmliID0gU0tJUAorMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
Lm5lZ2F0aXZlX2FwaS5zd2FwX2ludGVydmFsID0gRkFJTAorMjM4MiBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cuKiA9IFNLSVAKKzEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVf
d2luZG93LiogPSBGQUlMCisyNzE2IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucHJlc2VydmVf
c3dhcC5wcmVzZXJ2ZS5ub19yZWFkX2JlZm9yZV9zd2FwLiogPSBTS0lQCisyNzE2IFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucHJlc2VydmVfc3dhcC5wcmVzZXJ2ZS5yZWFkX2JlZm9yZV9zd2Fw
LiogPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVzaXplLmJhY2tfYnVm
ZmVyLiogPSBTS0lQCisxMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVzaXplLnBpeGVs
X2RlbnNpdHkuKiA9IFNLSVAKKworLy8gV2luZG93cyBPcGVuR0wgZmFpbHVyZXMKKzI1NDYgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXNpemUuc3VyZmFjZV9zaXplLnNocmluayA9IFNLSVAK
KzI1NDYgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVm
ZmVyLnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisyNTQ2IFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwudGhyZWFkX2NsZWFudXAuKiA9IFNLSVAKKworLy8gV2luZG93cyBWdWxrYW4gZmFp
bHVyZXMKKzI2MzUgV0lOIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVsdGljb250ZXh0
Lm5vbl9zaGFyZWRfY2xlYXIgPSBGQUlMCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm11bHRpY29udGV4dC5ub25fc2hhcmVkX21ha2VfY3VycmVudCA9IEZBSUwKKzI2MzUg
V0lOIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVsdGljb250ZXh0LnNoYXJlZF9jbGVh
ciA9IEZBSUwKKzI2MzUgV0lOIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVsdGljb250
ZXh0LnNoYXJlZF9tYWtlX2N1cnJlbnQgPSBGQUlMCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE4ODg4
X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE4ODg4X25vX2RlcHRo
X25vX3N0ZW5jaWwgPSBGQUlMCisyNzE1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBG
QUlMCisyNzE1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uu
c2ltcGxlLnBidWZmZXIucmdiODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCisyNzE1IFdJTiBWVUxL
QU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdi
ODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCisyNzE1IFdJTiBWVUxLQU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTg4ODhfZGVwdGhf
bm9fc3RlbmNpbCA9IEZBSUwKKzI3MTUgV0lOIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2ls
ID0gRkFJTAorMjYzNSBXSU4gVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXNpemUuc3Vy
ZmFjZV9zaXplLmdyb3cgPSBGQUlMCisyNjM1IFdJTiBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnJlc2l6ZS5zdXJmYWNlX3NpemUuc3RyZXRjaF9oZWlnaHQgPSBGQUlMCisyNjM1IFdJTiBW
VUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlc2l6ZS5zdXJmYWNlX3NpemUuc3RyZXRjaF93
aWR0aCA9IEZBSUwKKzI3MTYgV0lOIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucHJlc2Vy
dmVfc3dhcC5ub19wcmVzZXJ2ZS4qID0gRkFJTAorCisvLyBMaW51eCBmYWlsdXJlcworMjU0NiBM
SU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xl
czEucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xlczFfZ2xlczIucmdiYTg4ODhfcGl4bWFw
ID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11
bHRpX2NvbnRleHQuZ2xlczFfZ2xlczJfZ2xlczMucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0
NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQu
Z2xlczIucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xlczMucmdiYTg4ODhfcGl4bWFwID0g
U0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLnNpbmds
ZV9jb250ZXh0LmdsZXMxLnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNvbG9yX2NsZWFycy5zaW5nbGVfY29udGV4dC5nbGVzMi5yZ2JhODg4
OF9waXhtYXAgPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9j
bGVhcnMuc2luZ2xlX2NvbnRleHQuZ2xlczMucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBM
SU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY3JlYXRlX3N1cmZhY2UucGl4bWFwLnJnYmE4ODg4
X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
cmVhdGVfc3VyZmFjZS5waXhtYXAucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAK
KzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5jb3B5X2J1ZmZl
cnMgPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0
LmdldF9jdXJyZW50X2NvbnRleHQucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBMSU5VWCA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfY29udGV4dC5nZXRfY3VycmVudF9kaXNwbGF5LnJn
YmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X2NvbnRleHQuZ2V0X2N1cnJlbnRfc3VyZmFjZS5yZ2JhODg4OF9waXhtYXAgPSBTS0lQCisy
NTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LnF1ZXJ5X2NvbnRl
eHQucmdiYTg4ODhfcGl4bWFwID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBpeG1hcC5yZ2JhODg4OF9kZXB0aF9zdGVu
Y2lsID0gU0tJUAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFj
ZS5zZXRfYXR0cmlidXRlLnBpeG1hcC5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJ
UAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUu
cGl4bWFwLnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5waXhtYXAucmdiYTg4ODhfbm9fZGVw
dGhfbm9fc3RlbmNpbCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJl
bmRlci5tdWx0aV9jb250ZXh0LiogPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5yZW5kZXIuc2luZ2xlX2NvbnRleHQuZ2xlczIucmdiYTg4ODhfcGl4bWFwID0gU0tJUAor
MjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0Lmds
ZXMzLnJnYmE4ODg4X3BpeG1hcCA9IFNLSVAKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnRocmVhZF9jbGVhbnVwLiogPSBTS0lQCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LiogPSBGQUlMCisyNTQ2IExJ
TlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2lu
ZG93LiogPSBGQUlMCisyNTQ2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9h
cGkuY2hvb3NlX2NvbmZpZyA9IEZBSUwKKzI1NDYgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFs
Lm5lZ2F0aXZlX2FwaS5zd2FwX2ludGVydmFsID0gRkFJTAorMjU0NiBMSU5VWCA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0aF9z
dGVuY2lsID0gRkFJTAorMjU0NiBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAor
CisvLyBMaW51eCBWdWxrYW4gZmFpbHVyZXMKKzI2MzUgTElOVVggVlVMS0FOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhODg4OF9k
ZXB0aF9zdGVuY2lsID0gRkFJTAorMjYzNSBMSU5VWCBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE4ODg4X25vX2RlcHRo
X25vX3N0ZW5jaWwgPSBGQUlMCisyNzE1IExJTlVYIFZVTEtBTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2I4ODhfZGVwdGhfc3RlbmNpbCA9IEZB
SUwKKzI3MTUgTElOVVggVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNl
LnNpbXBsZS5wYnVmZmVyLnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAorMjcxNiBM
SU5VWCBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3YXAubm9fcHJlc2Vy
dmUuKiA9IEZBSUwKKworLy8gTWFjIGZhaWx1cmVzCisyNTQ2IE1BQyA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy4qID0gRkFJTAorMjU0NiBN
QUMgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cuKiA9IEZBSUwKKzI1NDYgTUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGku
Y2hvb3NlX2NvbmZpZyA9IEZBSUwKKzI1NDYgTUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdh
dGl2ZV9hcGkuY29weV9idWZmZXJzID0gRkFJTAorMjU0NiBNQUMgOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5lZ2F0aXZlX2FwaS5zd2FwX2ludGVydmFsID0gRkFJTAorMjU0NiBNQUMgOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTg4ODhfZGVwdGhf
c3RlbmNpbCA9IEZBSUwKKzI1NDYgTUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC50aHJlYWRfY2xl
YW51cC4qID0gU0tJUAorCisvLyBBbmRyb2lkIEdMRVMtb25seSBmYWlsdWVzCisyNTY3IEFORFJP
SUQgR0xFUyA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UuYXBpLmNyZWF0ZV9pbWFnZV9nbGVz
Ml90ZXgyZF9yZWQgPSBGQUlMCisyNTY3IEFORFJPSUQgR0xFUyA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuaW1hZ2UuYXBpLmNyZWF0ZV9pbWFnZV9nbGVzMl90ZXgyZF9yZyA9IEZBSUwKKzI3MTYgQU5E
Uk9JRCBHTEVTIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5wcmVzZXJ2ZV9zd2FwLnByZXNlcnZlLiog
PSBGQUlMCisKKy8vIEFuZHJvaWQgZmFpbHVyZXMKKzI1NDYgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwuYnVmZmVyX2FnZS4qID0gRkFJTAorMzI3MCBBTkRST0lEIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS50cmFuc3BhcmVudF9y
ZWRfdmFsdWUgPSBGQUlMCiszMjcwIEFORFJPSUQgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29z
ZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnRyYW5zcGFyZW50X2dyZWVuX3ZhbHVlID0g
RkFJTAorMzI3MCBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNp
bXBsZS5zZWxlY3Rpb25fb25seS50cmFuc3BhcmVudF9ibHVlX3ZhbHVlID0gRkFJTAorMzI3MCBB
TkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rp
b25fYW5kX3NvcnQudHJhbnNwYXJlbnRfcmVkX3ZhbHVlID0gRkFJTAorMzI3MCBBTkRST0lEIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3Nv
cnQudHJhbnNwYXJlbnRfZ3JlZW5fdmFsdWUgPSBGQUlMCiszMjcwIEFORFJPSUQgOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC50cmFu
c3BhcmVudF9ibHVlX3ZhbHVlID0gRkFJTAorMjU0NiBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jb2xvcl9jbGVhcnMubXVsdGlfY29udGV4dC4qID0gU0tJUAorMjU0NiBBTkRST0lEIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMuc2luZ2xlX2NvbnRleHQuKiA9IFNLSVAK
KzI1NDYgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy4qID0gU0tJUAorMjU0NiBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LiogPSBTS0lQCisyNTQ2IEFORFJP
SUQgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5jb3B5X2J1ZmZlcnMgPSBGQUlM
CisyNTQ2IEFORFJPSUQgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnBhcnRpYWxfdXBkYXRlLm9kZF9j
bGVhcl8qID0gRkFJTAorMjU0NiBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5wYXJ0aWFs
X3VwZGF0ZS5vZGRfcmVuZGVyXyogPSBGQUlMCisyNTQ2IEFORFJPSUQgOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnBhcnRpYWxfdXBkYXRlLnJlbmRlcl8qID0gRkFJTAorMjU0NiBBTkRST0lEIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC4qID0gU0tJUAorMjU0NiBBTkRS
T0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xlX2NvbnRleHQuKiA9IFNLSVAK
KzI1NDYgQU5EUk9JRCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwudGhyZWFkX2NsZWFudXAubXVsdGlf
Y29udGV4dF8qID0gU0tJUAorMjU0NiBBTkRST0lEIDogZEVRUC1FR0wuZnVuY3Rpb25hbC50aHJl
YWRfY2xlYW51cC5zaW5nbGVfY29udGV4dF8qID0gRkFJTAorCisvLyBWdWxrYW4KKzMwODEgVlVM
S0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5jcmVhdGUuZ2xlczJfcmVuZGVyYnVmZmVy
X2RlcHRoMTZfZGVwdGhfYnVmZmVyID0gU0tJUAorMzA4MSBWVUxLQU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmltYWdlLmNyZWF0ZS5nbGVzMl9yZW5kZXJidWZmZXJfc3RlbmNpbF9zdGVuY2lsX2J1
ZmZlciA9IFNLSVAKKzMwODEgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2Rp
ZnkucmVuZGVyYnVmZmVyX2RlcHRoMTZfcmVuZGVyYnVmZmVyX2NsZWFyX2RlcHRoID0gU0tJUAor
MzA4MSBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS5yZW5kZXJidWZm
ZXJfc3RlbmNpbF9yZW5kZXJidWZmZXJfY2xlYXJfc3RlbmNpbCA9IFNLSVAKKzMwODEgVlVMS0FO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5yZW5kZXJfbXVsdGlwbGVfY29udGV4dHMuZ2xl
czJfcmVuZGVyYnVmZmVyX2RlcHRoMTZfZGVwdGhfYnVmZmVyID0gU0tJUAorMzA4MSBWVUxLQU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLnJlbmRlcl9tdWx0aXBsZV9jb250ZXh0cy5nbGVz
Ml9yZW5kZXJidWZmZXJfc3RlbmNpbF9zdGVuY2lsX2J1ZmZlciA9IFNLSVAKKworLy8gQW5kcm9p
ZCBWdWxrYW4KKzI1NDYgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNyZWF0
ZV9zdXJmYWNlLndpbmRvdy5vdGhlciA9IFNLSVAKKzI1NDYgQU5EUk9JRCBWVUxLQU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQuZ2V0X2N1cnJlbnRfc3VyZmFjZS5vdGhlciA9
IFNLSVAKKzI1NDYgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1
cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cub3RoZXIgPSBTS0lQCisyNTQ2IEFORFJPSUQgVlVM
S0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cub3Ro
ZXIgPSBTS0lQCisyNTQ2IEFORFJPSUQgVlVMS0FOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZXNp
emUucGl4ZWxfZGVuc2l0eS4qID0gU0tJUAorCisvLyBSb2J1c3RuZXNzIGZhaWx1cmVzIG9uIG11
bHRpcGxlIHBsYXRmb3JtcworMzcxMSA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucm9idXN0bmVzcy5y
ZXNldF9jb250ZXh0LnNoYWRlcnMub3V0X29mX2JvdW5kcy5yZXNldF9zdGF0dXMucmVhZHMuKiA9
IEZBSUwKKzM3MTEgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJvYnVzdG5lc3MucmVzZXRfY29udGV4
dC5zaGFkZXJzLm91dF9vZl9ib3VuZHMucmVzZXRfc3RhdHVzLndyaXRlcy4qID0gRkFJTAorCisv
LyBFUyAxIHRlc3RzCisyMzA2IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJz
LnNpbmdsZV9jb250ZXh0LmdsZXMxKiA9IEZBSUwKKzIzMDYgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jb2xvcl9jbGVhcnMubXVsdGlfY29udGV4dC5nbGVzMSogPSBGQUlMCisyMzA2IE1BQyA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLnNpbmdsZV9jb250ZXh0LmdsZXMxKiA9
IEZBSUwKKzIzMDYgTUFDIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jb2xvcl9jbGVhcnMubXVsdGlf
Y29udGV4dC5nbGVzMSogPSBGQUlMCisyMzA2IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
b2xvcl9jbGVhcnMuc2luZ2xlX2NvbnRleHQuZ2xlczEqID0gRkFJTAorMjMwNiBMSU5VWCA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuY29sb3JfY2xlYXJzLm11bHRpX2NvbnRleHQuZ2xlczEqID0gRkFJ
TAorCisvLyBUZXN0cyBmYWlsaW5nIHNpbmNlIHRoZSBKYW4gMjAxOCByb2xsIG9mIGRFUVAKKzIz
NDEgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnN3YXBfYnVmZmVycy4qID0gU0tJUAorMjMzMCA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucm9idXN0bmVzcy5jcmVhdGVfY29udGV4dC5ub19yZXNldF9ub3Rp
ZmljYXRpb24gPSBTS0lQCisyMzMwIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yb2J1c3RuZXNzLmNy
ZWF0ZV9jb250ZXh0Lmxvc2VfY29udGV4dF9vbl9yZXNldCA9IFNLSVAKKzIzMzAgOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnJvYnVzdG5lc3MucmVzZXRfY29udGV4dC5maXhlZF9mdW5jdGlvbl9waXBl
bGluZS5yZXNldF9zdGF0dXMuaW5kZXhfYnVmZmVyX291dF9vZl9ib3VuZHMgPSBTS0lQCisyMzMw
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yb2J1c3RuZXNzLnJlc2V0X2NvbnRleHQuZml4ZWRfZnVu
Y3Rpb25fcGlwZWxpbmUucmVzZXRfc3RhdHVzLnZlcnRleF9idWZmZXJfb3V0X29mX2JvdW5kcyA9
IFNLSVAKKworLy8gVGVzdHMgd2VyZSBiZWluZyBoaWRkZW4gYnkgZmxha2luZXNzIChhbmdsZWJ1
Zy5jb20vMzI3MSkKKzMzMjUgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmZlbmNlX3N5bmMuKiA9IFNL
SVAKKzMzMjUgOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJldXNhYmxlX3N5bmMuKiA9IFNLSVAKKwor
Ly8gTmV4dXMgNXgKKzI1NDYgTkVYVVM1WCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfY29u
dGV4dC5nZXRfY3VycmVudF9jb250ZXh0LiogPSBTS0lQCisyNTQ2IE5FWFVTNVggOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X2NvbnRleHQuZ2V0X2N1cnJlbnRfZGlzcGxheS4qID0gU0tJUAor
MjU0NiBORVhVUzVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9jb250ZXh0LmdldF9jdXJy
ZW50X3N1cmZhY2UuciogPSBGQUlMCisyNTQ2IE5FWFVTNVggOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X2NvbnRleHQucXVlcnlfY29udGV4dC4qID0gU0tJUApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMyX3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvZGVxcF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA0
NWVkODM2NTI2YjRiNGI1OWE2YmYzM2YwZTNjYTk0ZGQwZDE3MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVz
Ml90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTAsMCArMSwzOTMgQEAKKy8vIENvcHlyaWdodCAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUaGlzIGZp
bGUgY29udGFpbnMgYSBsaXN0IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBU
aGUgZXhwZWN0ZWQKKy8vIGZvcm1hdCBpczoKKy8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVT
VF9OQU1FfSA9IHtQQVNTLEZBSUwsRkxBS1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1PRElGSUVS
UyBjYW4gYmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgYmVsb3cgbGlzdCwgY29tYmluZWQgd2l0aCBh
IGxvZ2ljYWwgQU5EOgorLy8gIFdJTiBYUCBWSVNUQSBXSU43IFdJTjggV0lOMTAKKy8vICBNQUMg
TEVPUEFSRCBTTk9XTEVPUEFSRCBMSU9OIE1PVU5UQUlOTElPTiBNQVZFUklDS1MgWU9TRU1JVEUg
RUxDQVBJVEFOIFNJRVJSQSBISUdIU0lFUlJBIE1PSkFWRQorLy8gIExJTlVYIENIUk9NRU9TIEFO
RFJPSUQKKy8vICBOVklESUEgQU1EIElOVEVMCisvLyAgREVCVUcgUkVMRUFTRQorLy8gIEQzRDkg
RDNEMTEgT1BFTkdMIEdMRVMgVlVMS0FOCisvLyAgTkVYVVM1WCBQSVhFTDJPUlhMCisvLyAgUVVB
RFJPUDQwMAorLy8KKy8vCisvLyBURVNUX05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVzdCBuYW1l
LCBvciBoYXZlIGEgJyonIGluIHRoZSBlbmQsIHdoaWNoCisvLyBpbmRpY2F0ZXMgYSBwcmVmaXgg
bWF0Y2hpbmcuCisvLworLy8gRXhhbXBsZXM6CisvLyBmYWlscyBvbiBib3RoIHdpbmRvd3MgYW5k
IG1hYyAoY3Jhc2gpCisvLyAgOTE1MzAgV0lOIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gU0tJ
UAorLy8gIDkxNTMwIE1BQyA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFNLSVAKKy8vIGZhaWxz
IG9uIHdpbmRvd3MgdXNpbmcgTlZJRElBIEdQVXMKKy8vICA5MTUzMyBXSU4gTlZJRElBIDogZ2xf
bWluX3VuaWZvcm1zID0gRkFJTAorLy8gZmFpbHMgb24gTmV4dXM1WCB3aXRoIEdMRVMgYmFja2Vu
ZCAoaGFuZ3MpCisvLyAgOTE1MzEgTkVYVVM1WCBHTEVTIDogY29uZm9ybWFuY2VfbW9yZV8qID0g
U0tJUAorCisvLyBHbG9iYWxseSBkaXNhYmxlIE1ldGFsIHRlc3RpbmcgZm9yIG5vdworNDIzNSBN
RVRBTCA6IGRFUVAtR0xFUzIuKiA9IFNLSVAKKworLy8gU2tpcCB0aGVzZSB0ZXN0cyBkdWUgdG8g
dGltZW91dHMKKzEwMzQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmx1c2hfZmluaXNoLiogPSBT
S0lQCisKKy8vIEZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IHN1cHBvcnRpbmcgc2VwYXJhdGUgZGVw
dGgvc3RlbmNpbCBtYXNrcyBvbiBEM0QxMS4KKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwuc3RlbmNpbF9kZXB0aF9mdW5jcy5zdGVu
Y2lsXyogPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5kZXB0aF9zdGVuY2lsLnN0ZW5jaWxfb3BzLiogPSBGQUlMCisxNjU1IEQzRDExIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLndyaXRlX21hc2su
KiA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9jb25z
dGFudF9hbHBoYSA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9j
b2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAor
MTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVf
bWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRf
Y29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25z
dGFudF9jb2xvciA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNf
Y29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTY1NSBEM0Qx
MSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVu
ZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9vbmVf
bWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0
cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1
IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25l
X21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3Vi
dHJhY3RfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxNjU1IEQzRDExIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29s
b3IgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29w
cy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29u
c3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVu
Yy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2Nv
bG9yID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25z
dGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5j
LnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhh
ID0gRkFJTAorMTY1NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWlu
dXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1IEQzRDExIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWlu
dXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNl
X3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTY1NSBEM0Qx
MSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3IgPSBGQUlMCisxNjU1IEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1
YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzE2
NTUgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50
X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzE2NTUgRDNEMTEgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLnJhbmRvbS4qID0gRkFJTAorMTY1NSBEM0Qx
MSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNf
c2hhZGVyLiogPSBGQUlMCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gIFRlbXBv
cmFyeSBlbnRyaWVzOiB0aGV5IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGJ1Z3MgYXJlIGZp
eGVkLgorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vIFZlcnRleCBhdHRyaWJ1dGUg
YWxpYXNpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiBEM0QKKzM0NjcgRDNEOSA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kKiA9IEZBSUwK
KzM0NjcgRDNEOSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmlu
ZF9hbGlhc2luZy5tYXhfY29uZCogPSBGQUlMCiszNDY3IEQzRDExIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmQqID0gRkFJTAorMzQ2
NyBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9h
bGlhc2luZy5tYXhfY29uZCogPSBGQUlMCisKKy8vIFNoYWRlciBmYWlsdXJlcy4KKzM0MzQgTkVY
VVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vzc29yLnBy
YWdtYXMucHJhZ21hXyogPSBGQUlMCisKKy8vIFRoZSBmcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNp
bC5yYW5kb20gdGVzdHMgYWxsIHNlZW0gdG8gZmFpbCBvbiBEM0QxMS4KKzMyODIgRDNEMTEgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwucmFuZG9tLiog
PSBGQUlMCisKKy8vIEZhaWx1cmVzIHJlbGF0ZWQgdG8gdGhlIGRlcHRoX3JhbmdlIG9uIFdpbmRv
d3MgLyBOVklESUEgYW5kIEFUSS4KKzI0MjYgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
ZGVwdGhfcmFuZ2Uud3JpdGUucmV2ZXJzZSA9IEZBSUwKKzI0MjYgRDNEMTEgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuZGVwdGhfcmFuZ2Uud3JpdGUuaGFsZl90b196ZXJvID0gRkFJTAorMjQyNiBE
M0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5kZXB0aF9yYW5nZS53cml0ZS5vbmVfdG9faGFs
ZiA9IEZBSUwKKzI0MjYgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZGVwdGhfcmFuZ2Uu
d3JpdGUuMF84X3RvX3RoaXJkID0gRkFJTAorMjQyNiBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5kZXB0aF9yYW5nZS5jb21wYXJlLnJldmVyc2UgPSBGQUlMCisyNDI2IEQzRDExIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmRlcHRoX3JhbmdlLmNvbXBhcmUuaGFsZl90b196ZXJvID0gRkFJ
TAorMjQyNiBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5kZXB0aF9yYW5nZS5jb21wYXJl
Lm9uZV90b19oYWxmID0gRkFJTAorMjQyNiBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5k
ZXB0aF9yYW5nZS5jb21wYXJlLjBfOF90b190aGlyZCA9IEZBSUwKKworLy8gV2luZG93cyBEM0Qx
MSBJbnRlbCBhbmQgTlZJRElBLiBTdXBwcmVzc2VkIG9uIGFsbCBjYXJkcyBmb3Igc2ltcGxpY2l0
eS4KKzMyOTIgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZGVm
YXVsdF9yZW5kZXJfd2l0aF91bml0cyA9IEZBSUwKKzMyOTIgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQxNl9yZW5kZXJfd2l0aF91bml0cyA9IEZBSUwK
KworLy8gQ29tbW9uIHN1YmV4cHJlc3Npb24gaW52YXJpYW5jZQorMzI5MyBEM0QxMSA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAuY29tbW9uX3N1YmV4cHJl
c3Npb25fMSA9IEZBSUwKKzMyOTMgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVy
cy5pbnZhcmlhbmNlLmxvd3AuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKKzMyOTMgRDNE
MTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29t
bW9uX3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKKworLy8gRmFpbHMgd2l0aCBzaWduaWZpY2FudCBp
bWFnZSBkaWZmZXJlbmNlcworMzI5NSBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnZlcnRleC50ZXh0dXJlY3ViZWxvZCA9IEZBSUwKKworLy8g
T25seSBmYWlscyBpbiBEM0QxMSAzMi1iaXQuCisxNDE4IEQzRDExIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmNsaXBwaW5nLnRyaWFuZ2xlX3ZlcnRleC5jbGlwX3RocmVlLmNsaXBfcG9zX3hfcG9z
X3lfcG9zX3pfYW5kX25lZ194X3Bvc195X3Bvc196X2FuZF9uZWdfeF9uZWdfeV9uZWdfeiA9IEZB
SUwKKworLy8gRDNEMTEgQU1ECisyMzQyIEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC50ZXh0dXJlLnNpemUuY3ViZS42NHg2NF9sOCA9IEZBSUwKKzIzNDIgRDNEMTEgQU1EIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc2l6ZS5jdWJlLjY0eDY0X3JnYjg4OCA9IEZBSUwK
KzIzNDIgRDNEMTEgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc2l6ZS5jdWJl
LjY0eDY0X3JnYmE4ODg4ID0gRkFJTAorCisvLyBBZGRpdGlvbmFsIHRleHR1cmUudmVydGV4LmN1
YmUgZmFpbHVyZXMgb24gQU1ECiszMjk5IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC50ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5saW5lYXJfbWlwbWFwX2xpbmVhcl9uZWFy
ZXN0X3JlcGVhdCA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFyX2xpbmVh
cl9yZXBlYXQgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50
ZXh0dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5uZWFyZXN0X21pcG1hcF9saW5lYXJfbmVhcmVz
dF9jbGFtcCA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRl
eHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLm5lYXJlc3RfbWlwbWFwX2xpbmVhcl9uZWFyZXN0
X3JlcGVhdCA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRl
eHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLm5lYXJlc3RfbWlwbWFwX2xpbmVhcl9uZWFyZXN0
X21pcnJvciA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRl
eHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLm5lYXJlc3RfbWlwbWFwX2xpbmVhcl9saW5lYXJf
Y2xhbXAgPSBGQUlMCiszMjk5IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0
dXJlLnZlcnRleC5jdWJlLmZpbHRlcmluZy5uZWFyZXN0X21pcG1hcF9saW5lYXJfbGluZWFyX3Jl
cGVhdCA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLm5lYXJlc3RfbWlwbWFwX2xpbmVhcl9saW5lYXJfbWly
cm9yID0gRkFJTAorMzI5OSBEM0QxMSBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS52ZXJ0ZXguY3ViZS53cmFwLnJlcGVhdF9jbGFtcCA9IEZBSUwKKzMyOTkgRDNEMTEgQU1EIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUud3JhcC5yZXBlYXRfcmVw
ZWF0ID0gRkFJTAorMzI5OSBEM0QxMSBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS52ZXJ0ZXguY3ViZS53cmFwLnJlcGVhdF9taXJyb3IgPSBGQUlMCisKKy8vIFF1YWRybyBQNDAw
CisvLyBUT0RPKGptYWRpbGwpOiBOYXJyb3cgdG8gUDQwMCBkZXZpY2Ugb25seTogMHgxQ0IzLgor
MjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5mdW5jdGlv
bnMuY29udHJvbF9mbG93LnJldHVybl9pbl9uZXN0ZWRfbG9vcF9mcmFnbWVudCA9IEZBSUwKKzIy
MjIgRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuZnVuY3Rpb25z
LmNvbnRyb2xfZmxvdy5yZXR1cm5faW5fbmVzdGVkX2xvb3BfdmVydGV4ID0gRkFJTAorCisvLyBB
TUQgR1BVIHZlcnRleCBzaGFkZXIgdGV4dHVyZSBzYW1wbGluZyBpcyBub3QgcHJlY2lzZSBlbm91
Z2ggd2hlbiByZW5kZXJpbmcgdG8gMzItYml0IGJhY2tidWZmZXJzCisyMzM3IEQzRDExIEFNRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC4yZC53cmFwLiogPSBGQUlMCisy
MzM3IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC4yZC5m
aWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5lYXJfKiA9IEZBSUwKKzIzMzcgRDNEMTEgQU1EIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LjJkLmZpbHRlcmluZy5uZWFyZXN0
X21pcG1hcF9saW5lYXJfKiA9IEZBSUwKKworLy8gU2V2ZXJhbCBtaXBtYXAgc3ViIHRlc3RzIGZh
aWwgb24gQU1ELiBNYXJrIHRoZW0gYWxsIGFzIGZhaWxpbmcgY29uc2VydmF0aXZlbHkuCiszMjk2
IEQzRDExIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4qID0gRkFJ
TAorCisvLyBGYWlsdXJlcyBvbiB0aGUgRDNEMTEgYm90cyB0aGF0IGRvIG5vdCByZXByb2R1Y2Ug
bG9jYWxseQorLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhlc2UgZmFpbCBvbiB0
aGUgYm90cywgYnV0IG5vdCBsb2NhbGx5LgorMTEwOCBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLnN0cnVjdC5sb2NhbC5keW5hbWljX2xvb3Bfc3RydWN0X2FycmF5X2ZyYWdt
ZW50ID0gRkFJTAorMTEwOCBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmlu
dmFyaWFuY2UuaGlnaHAubG9vcF8yID0gRkFJTAorMTEwOCBEM0QxMSA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5sb29wXzIgPSBGQUlMCisKKy8vIE9w
ZW5HTCBkZXNrdG9wIGJhY2stZW5kIGZhaWx1cmVzCisxNjU2IE9QRU5HTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5jb2xvcjAuc3Jn
YjhfYWxwaGE4ID0gRkFJTAorMTY1NiBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJv
LmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNpbC5zcmdiOF9hbHBoYTggPSBG
QUlMCisxNjU2IE9QRU5HTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNz
LnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5zcmdiOF9hbHBoYTggPSBGQUlMCiszMjkxIE9QRU5H
TCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5s
aW5lYXJfbGluZWFyID0gRkFJTAorCisvLyBMaW51eCBPcGVuR0wgSW50ZWwKKzMzMDIgT1BFTkdM
IElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uaW50ZXJw
b2xhdGlvbi5iYXNpYy5saW5lc193aWRlID0gRkFJTAorMzMwMiBPUEVOR0wgSU5URUwgTElOVVgg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucmFzdGVyaXphdGlvbi5pbnRlcnBvbGF0aW9uLmJhc2lj
LmxpbmVfc3RyaXBfd2lkZSA9IEZBSUwKKzMzMDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uaW50ZXJwb2xhdGlvbi5iYXNpYy5saW5lX2xv
b3Bfd2lkZSA9IEZBSUwKKzMzMDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnJhc3Rlcml6YXRpb24uaW50ZXJwb2xhdGlvbi5wcm9qZWN0ZWQubGluZXNfd2lkZSA9
IEZBSUwKKzMzMDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnJh
c3Rlcml6YXRpb24uaW50ZXJwb2xhdGlvbi5wcm9qZWN0ZWQubGluZV9zdHJpcF93aWRlID0gRkFJ
TAorMzMwMiBPUEVOR0wgSU5URUwgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucmFzdGVy
aXphdGlvbi5pbnRlcnBvbGF0aW9uLnByb2plY3RlZC5saW5lX2xvb3Bfd2lkZSA9IEZBSUwKKzMz
MDIgT1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudmVydGV4LnRleHR1cmVjdWJlbG9kID0gRkFJTAorMzMwMiBPUEVOR0wg
SU5URUwgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5m
aWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5lYXJfbGluZWFyX3JlcGVhdCA9IEZBSUwKKzMzMDIg
T1BFTkdMIElOVEVMIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4
LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFyX25lYXJlc3RfcmVwZWF0ID0gRkFJ
TAorMzMwMiBPUEVOR0wgSU5URUwgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS52ZXJ0ZXguY3ViZS53cmFwLnJlcGVhdF9yZXBlYXQgPSBGQUlMCisKKy8vIExpbnV4IE9wZW5H
TCBOVklESUEKKzMzMDMgT1BFTkdMIE5WSURJQSBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5uZWFyZXN0X2xpbmVhciA9IEZBSUwKKwor
Ly8gTWFjIE9wZW5HTCBzcGVjaWZpYyBmYWlsdXJlcworMzQ2NiBNQUMgT1BFTkdMIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmQqID0g
U0tJUAorMzQ2NiBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9s
b2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kKiA9IFNLSVAKKzM0MzMgTUFDIE9QRU5HTCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5wcmFnbWFzLnByYWdt
YV92ZXJ0ZXggPSBGQUlMCisxMTQzIE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX2ludF92YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlw
ZV8qID0gRkFJTAorMTE0MyBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRl
cnMuc2NvcGluZy52YWxpZC5sb2NhbF9zdHJ1Y3RfdmFyaWFibGVfaGlkZXNfc3RydWN0X3R5cGVf
KiA9IEZBSUwKKzExNDMgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJz
LnNjb3BpbmcudmFsaWQuZnVuY3Rpb25fcGFyYW1ldGVyX2hpZGVzX3N0cnVjdF90eXBlXyogPSBG
QUlMCisxMTQzIE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yYW5k
b20udHJpZ29ub21ldHJpYy52ZXJ0ZXguNjUgPSBGQUlMCisyNjMxIE1BQyBPUEVOR0wgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5vcGVyYXRvci5zZXF1ZW5jZS5zaWRlX2VmZmVjdHMu
YWZmZWN0XyogPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5saW5rYWdlLnZhcnlpbmdfNCA9IEZBSUwKKworLy8gTUFDIE9QRU5HTCBJTlRFTCBz
cGVjaWZpYworMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNv
bG9yX2NsZWFyLmNvbXBsZXhfcmdiID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmNvbG9yX2NsZWFyLmNvbXBsZXhfcmdiYSA9IEZBSUwKKzIxMzcg
TUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5sb25n
X21hc2tlZF9yZ2IgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuY29sb3JfY2xlYXIubG9uZ19tYXNrZWRfcmdiYSA9IEZBSUwKKzIxMzcgTUFDIE9Q
RU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5tYXNrZWRfcmdi
ID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNv
bG9yX2NsZWFyLm1hc2tlZF9yZ2JhID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmNvbG9yX2NsZWFyLm1hc2tlZF9zY2lzc29yZWRfcmdiID0gRkFJ
TAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNvbG9yX2Ns
ZWFyLm1hc2tlZF9zY2lzc29yZWRfcmdiYSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci5zY2lzc29yZWRfcmdiID0gRkFJTAor
MjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNvbG9yX2NsZWFy
LnNjaXNzb3JlZF9yZ2JhID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmNvbG9yX2NsZWFyLnNob3J0X3NjaXNzb3JlZF9yZ2IgPSBGQUlMCisyMTM3
IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZp
Y2F0aW9uLmJhc2ljX2NvcHl0ZXhpbWFnZTJkLmN1YmVfYWxwaGEgPSBGQUlMCisyMTM3IE1BQyBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9u
LmJhc2ljX2NvcHl0ZXhpbWFnZTJkLmN1YmVfbHVtaW5hbmNlID0gRkFJTAorMjEzNyBNQUMgT1BF
TkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi5i
YXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX2x1bWluYW5jZV9hbHBoYSA9IEZBSUwKKzIxMzcgTUFD
IE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmljYXRp
b24uYmFzaWNfY29weXRleGltYWdlMmQuY3ViZV9yZ2IgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wg
SU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLmJhc2lj
X2NvcHl0ZXhpbWFnZTJkLmN1YmVfcmdiYSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmRpc2NhcmQuZHluYW1pY19sb29wX25ldmVy
ID0gU0tJUAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMuZGlzY2FyZC5mdW5jdGlvbl9zdGF0aWNfbG9vcF9uZXZlciA9IFNLSVAKKzIxMzcgTUFD
IE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmRpc2NhcmQuc3Rh
dGljX2xvb3BfbmV2ZXIgPSBTS0lQCisKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC5kZWZhdWx0X3JlbmRlcl93aXRoX3VuaXRzID0g
RkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnBvbHln
b25fb2Zmc2V0LmZpeGVkMTZfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCiszMzE3IE1BQyBPUEVO
R0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hw
LmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmNvbW1vbl9zdWJl
eHByZXNzaW9uXzMgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1YmV4cHJlc3Npb25f
MSA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5z
aGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5jb21tb25fc3ViZXhwcmVzc2lvbl8zID0gRkFJTAor
MzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52
YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCiszMzE3IE1BQyBPUEVO
R0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmxvd3Au
Y29tbW9uX3N1YmV4cHJlc3Npb25fMyA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy4yZC5saW5lYXJfbmVhcmVzdF9j
bGFtcF9yZ2JhODg4OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmQubGluZWFyX25lYXJlc3RfY2xhbXBf
cmdiODg4X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy4yZC5saW5lYXJfbmVhcmVzdF9jbGFtcF9yZ2JhNDQ0
NF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS5maWx0ZXJpbmcuMmQubGluZWFyX25lYXJlc3RfY2xhbXBfbDhfcG90ID0gRkFJ
TAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUu
ZmlsdGVyaW5nLjJkLmxpbmVhcl9uZWFyZXN0X3JlcGVhdF9yZ2JhODg4OF9wb3QgPSBGQUlMCisz
MzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0
ZXJpbmcuMmQubGluZWFyX25lYXJlc3RfcmVwZWF0X3JnYjg4OF9wb3QgPSBGQUlMCiszMzE3IE1B
QyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcu
MmQubGluZWFyX25lYXJlc3RfcmVwZWF0X3JnYmE0NDQ0X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9Q
RU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy4yZC5s
aW5lYXJfbmVhcmVzdF9yZXBlYXRfbDhfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVM
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLjJkLmxpbmVhcl9uZWFy
ZXN0X21pcnJvcl9yZ2JhODg4OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmQubGluZWFyX25lYXJlc3Rf
bWlycm9yX3JnYjg4OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmQubGluZWFyX25lYXJlc3RfbWlycm9y
X3JnYmE0NDQ0X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy4yZC5saW5lYXJfbmVhcmVzdF9taXJyb3JfbDhf
cG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUuZmlsdGVyaW5nLmN1YmUubGluZWFyX25lYXJlc3RfY2xhbXBfcmdiYTg4ODhfcG90
ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRl
eHR1cmUuZmlsdGVyaW5nLmN1YmUubGluZWFyX25lYXJlc3RfY2xhbXBfcmdiODg4X3BvdCA9IEZB
SUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJl
LmZpbHRlcmluZy5jdWJlLmxpbmVhcl9uZWFyZXN0X2NsYW1wX3JnYmE0NDQ0X3BvdCA9IEZBSUwK
KzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZp
bHRlcmluZy5jdWJlLmxpbmVhcl9uZWFyZXN0X2NsYW1wX2w4X3BvdCA9IEZBSUwKKzMzMTcgTUFD
IE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5j
dWJlLmxpbmVhcl9uZWFyZXN0X3JlcGVhdF9yZ2JhODg4OF9wb3QgPSBGQUlMCiszMzE3IE1BQyBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3Vi
ZS5saW5lYXJfbmVhcmVzdF9yZXBlYXRfcmdiODg4X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5H
TCBJTlRFTCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5jdWJlLmxp
bmVhcl9uZWFyZXN0X3JlcGVhdF9yZ2JhNDQ0NF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wg
SU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3ViZS5saW5l
YXJfbmVhcmVzdF9yZXBlYXRfbDhfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLmN1YmUubGluZWFyX25lYXJl
c3RfbWlycm9yX3JnYmE4ODg4X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5jdWJlLmxpbmVhcl9uZWFyZXN0
X21pcnJvcl9yZ2I4ODhfcG90ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLmN1YmUubGluZWFyX25lYXJlc3RfbWly
cm9yX3JnYmE0NDQ0X3BvdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC50ZXh0dXJlLmZpbHRlcmluZy5jdWJlLmxpbmVhcl9uZWFyZXN0X21pcnJv
cl9sOF9wb3QgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudGV4dHVyZS52ZXJ0ZXguMmQuZmlsdGVyaW5nLmxpbmVhcl9uZWFyZXN0XyogPSBGQUlM
CiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52
ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX25lYXJlc3RfKiA9IEZBSUwKKworMzUzMSBNQUMg
T1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIuY29sb3JfY2xl
YXIudGV4MmRfcmdiID0gRkFJTAorMzUzMSBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZiby5yZW5kZXIuY29sb3JfY2xlYXIudGV4MmRfcmdiX2RlcHRoX2NvbXBvbmVu
dDE2ID0gRkFJTAorMzUzMSBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZiby5yZW5kZXIuY29sb3JfY2xlYXIudGV4MmRfcmdiX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAor
MzUzMSBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIu
c3RlbmNpbF9jbGVhci50ZXgyZF9yZ2Jfc3RlbmNpbF9pbmRleDggPSBGQUlMCisKKy8vIE1hYyBB
TUQgT3BlbkdMIHNwZWNpZmljCisyMTM3IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmNsaXBwaW5nLnBvaW50LndpZGVfcG9pbnRfY2xpcCA9IEZBSUwKKzMzMTcgTUFDIE9Q
RU5HTCBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcucG9pbnQud2lkZV9wb2lu
dF9jbGlwX3ZpZXdwb3J0X2NlbnRlciA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBBTUQgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcucG9pbnQud2lkZV9wb2ludF9jbGlwX3ZpZXdwb3J0
X2Nvcm5lciA9IEZBSUwKKworLy8gQW5kcm9pZCBHTEVTIGJhY2tlbmQgb25seSBmYWlsdXJlcwor
MTQ4OCBHTEVTIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4u
Y29uZGl0aW9uYWxfcmV0dXJuX2Fsd2F5c192ZXJ0ZXggPSBGQUlMCisxNDg4IEdMRVMgQU5EUk9J
RCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5jb25kaXRpb25hbF9yZXR1
cm5fYWx3YXlzX2ZyYWdtZW50ID0gRkFJTAorMTQ4OCBHTEVTIEFORFJPSUQgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4ub3V0cHV0X3dyaXRlX2Fsd2F5c192ZXJ0ZXggPSBG
QUlMCisxNDg4IEdMRVMgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJl
dHVybi5vdXRwdXRfd3JpdGVfYWx3YXlzX2ZyYWdtZW50ID0gRkFJTAorMjYzMSBHTEVTIEFORFJP
SUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5vcGVyYXRvci5zZXF1ZW5jZS5zaWRl
X2VmZmVjdHMuYWZmZWN0XyogPSBGQUlMCisyNjMwIEdMRVMgQU5EUk9JRCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5zaGFkZXJzLnN0cnVjdC51bmlmb3JtLnNhbXBsZXJfaW5fYXJyYXlfZnVuY3Rp
b25fYXJnXyogPSBGQUlMCisyNjMwIEdMRVMgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5zaGFkZXJzLnN0cnVjdC51bmlmb3JtLnNhbXBsZXJfaW5fZnVuY3Rpb25fYXJnXyogPSBGQUlM
CisKKy8vIE5leHVzIDV4IGZhaWx1cmVzCiszMzA5IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kKiA9IEZBSUwK
KzMzMDkgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2Nh
dGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kKiA9IEZBSUwKKzM3MTYgTkVYVVM1WCBHTEVTIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJl
LmRlcHRoLmRlcHRoX2NvbXBvbmVudF91bnNpZ25lZF9pbnQgPSBGQUlMCiszNzE2IE5FWFVTNVgg
R0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUu
dGV4dHVyZS5kZXB0aC5kZXB0aF9jb21wb25lbnRfdW5zaWduZWRfc2hvcnQgPSBGQUlMCiszNzE2
IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJl
bmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9zdGVuY2lsX3Vuc2lnbmVkX2ludF8yNF84ID0g
RkFJTAorMzcxNiBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBs
ZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNpbC5kZXB0aF9zdGVuY2lsX3Vuc2lnbmVk
X2ludF8yNF84ID0gRkFJTAorMzMwOSBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZmJvLnJlbmRlci50ZXhzdWJpbWFnZS5hZnRlcl9yZW5kZXJfdGV4MmRfcmdiID0gRkFJTAor
MzMwOSBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQu
ZGVmYXVsdF9yZXN1bHRfZGVwdGhfY2xhbXAgPSBGQUlMCiszNzE1IE5FWFVTNVggR0xFUyA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fdmFyaWFibGUubWF4X2RyYXdfYnVm
ZmVyc192ZXJ0ZXggPSBGQUlMCiszNzE1IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLmJ1aWx0aW5fdmFyaWFibGUubWF4X2RyYXdfYnVmZmVyc19mcmFnbWVudCA9
IEZBSUwKKzMzMDkgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMu
cmV0dXJuLm91dHB1dF93cml0ZV9pbl9mdW5jX2Fsd2F5c192ZXJ0ZXggPSBGQUlMCiszMzA5IE5F
WFVTNVggR0xFUyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5vdXRwdXRf
d3JpdGVfaW5fZnVuY19hbHdheXNfZnJhZ21lbnQgPSBGQUlMCiszMzA5IE5FWFVTNVggR0xFUyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnZlcnRleC50
ZXh0dXJlY3ViZWxvZCA9IEZBSUwKKzMzMDkgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuKiA9IEZBSUwKKzMzMDkgTkVYVVM1WCBHTEVTIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVh
cl9taXBtYXBfbGluZWFyXyogPSBGQUlMCiszMzA5IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAuY2xhbXBfKiA9IEZBSUwKKzMzMDkg
TkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUu
d3JhcC5taXJyb3JfKiA9IEZBSUwKKzMzMDkgTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnVuaWZvcm1fYXBpLnJhbmRvbS4zID0gRkFJTAorMzMwOSBORVhVUzVYIEdMRVMgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudW5pZm9ybV9hcGkucmFuZG9tLjU0ID0gRkFJTAorCisvLyBE
M0QxMSBBTUQgYWxyZWFkeSBjb3ZlcmVkIGJ5IExpbmUgMTQ4CiszMjQzIEQzRDExIElOVEVMIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFyX25l
YXJlc3QgPSBGQUlMCiszMjQzIEQzRDExIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRl
eHR1cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFyX2xpbmVhciA9IEZBSUwKKzMyNDMgRDNEMTEg
SU5URUwgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0
ZWQubGluZWFyX25lYXJlc3QgPSBGQUlMCiszMjQzIEQzRDExIElOVEVMIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVkLmxpbmVhcl9saW5lYXIgPSBG
QUlMCiszMjQzIEQzRDExIElOVEVMIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlw
bWFwLmN1YmUuYmlhcy5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzMyNDMgRDNEMTEgSU5URUwgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iaWFzLmxpbmVhcl9saW5l
YXIgPSBGQUlMCiszMjQzIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0
dXJlLm1pcG1hcC5jdWJlLmJhc2ljLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMzI0MyBEM0QxMSBO
VklESUEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iYXNpYy5s
aW5lYXJfbGluZWFyID0gRkFJTAorMzI0MyBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3QgPSBGQUlM
CiszMjQzIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1h
cC5jdWJlLnByb2plY3RlZC5saW5lYXJfbGluZWFyID0gRkFJTAorMzI0MyBEM0QxMSBOVklESUEg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iaWFzLmxpbmVhcl9u
ZWFyZXN0ID0gRkFJTAorMzI0MyBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS5taXBtYXAuY3ViZS5iaWFzLmxpbmVhcl9saW5lYXIgPSBGQUlMCisKKy8vIEZhaWwg
d2l0aCB2ZXJ5IHRpbnkgcGl4ZWwgZGlmZmVyZW5jZXMKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX21pcG1hcF9s
aW5lYXJfbmVhcmVzdF9jbGFtcCA9IEZBSUwKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5lYXJf
bmVhcmVzdF9taXJyb3IgPSBGQUlMCiszMjQwIEQzRDExIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFyX2xpbmVh
cl9jbGFtcCA9IEZBSUwKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5lYXJfbGluZWFyX21pcnJv
ciA9IEZBSUwKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0
ZXguY3ViZS53cmFwLmNsYW1wX2NsYW1wID0gRkFJTAorMzI0MCBEM0QxMSA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAuY2xhbXBfcmVwZWF0ID0gRkFJTAor
MzI0MCBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLndy
YXAuY2xhbXBfbWlycm9yID0gRkFJTAorMzI0MCBEM0QxMSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAubWlycm9yX2NsYW1wID0gRkFJTAorMzI0MCBEM0Qx
MSA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAubWlycm9y
X3JlcGVhdCA9IEZBSUwKKzMyNDAgRDNEMTEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS52ZXJ0ZXguY3ViZS53cmFwLm1pcnJvcl9taXJyb3IgPSBGQUlMCisKKy8vIEFuZHJvaWQgVnVs
a2FuIGJhY2tlbmQgb25seSBmYWlsdXJlcworMjU0OSBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsKiA9IFNLSVAK
KzQxMDkgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5wcm9qZWN0ZWQubmVhcmVzdF9saW5lYXIgPSBGQUlMCisKKy8vIEFkcmVubyBsaW5l
IHJhc3Rlcml6YXRpb24gaXMgbm90IGNvbmZvcm1hbnQuCisyODMwIFZVTEtBTiBBTkRST0lEIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24ucHJpbWl0aXZlcy5saW5lX2xvb3Ag
PSBGQUlMCisyODMwIFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnJhc3Rl
cml6YXRpb24ucHJpbWl0aXZlcy5saW5lX3N0cmlwID0gRkFJTAorMjgzMCBWVUxLQU4gQU5EUk9J
RCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLnByaW1pdGl2ZXMubGluZXMg
PSBGQUlMCisKKy8vIEZhaWxpbmcgb24gdGhlIFBpeGVsIDIuCisyODA4IFZVTEtBTiBBTkRST0lE
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl92YXJpYWJsZS5mcmFnY29v
cmRfdyA9IEZBSUwKKzMzMDYgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
cG9seWdvbl9vZmZzZXQuZGVmYXVsdF9mYWN0b3JfMV9zbG9wZSA9IEZBSUwKKzMzMDYgVlVMS0FO
IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQxNl9m
YWN0b3JfMV9zbG9wZSA9IEZBSUwKKworLy8gRmFpbGluZyBvbiB0aGUgUGl4ZWwgMiBkdWUgdG8g
UXVhbGNvbW0gVnVsa2FuIGRyaXZlcgorNDM0NCBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLjEgPSBGQUlM
Cis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29w
cy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuMzAgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lE
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19z
aGFkZXIuMzUgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuMzggPSBGQUlMCis0MzQ0
IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5pbnRl
cmFjdGlvbi5iYXNpY19zaGFkZXIuNjAgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIu
NjIgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5yYW5kb20uNjIgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5yYW5kb20uNzggPSBGQUlMCisKKy8vIFRoZXNl
IHRlc3RzIGFsc28gZmFpbCBvbiBBTUQgd2luZG93cyBkcml2ZXIgYXMgaXQgaXMgbm90IGFsbG93
ZWQgdG8gdXNlIGVtdWxhdGlvbiBkdWUgdG8gZXJyb3JzLgorMzI0MyBWVUxLQU4gV0lOIEFNRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnZlcnRleC50
ZXh0dXJlY3ViZWxvZCA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iYXNpYy5saW5lYXJfbmVhcmVzdCA9IEZBSUwK
KzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5iYXNpYy5saW5lYXJfbGluZWFyID0gRkFJTAorMzI0MyBWVUxLQU4gV0lOIEFNRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5saW5l
YXJfbmVhcmVzdCA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX2xpbmVhciA9IEZBSUwK
KzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5iaWFzLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMzI0MyBWVUxLQU4gV0lOIEFNRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJpYXMubGluZWFyX2xp
bmVhciA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5lYXJfbmVhcmVz
dF9jbGFtcCA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5lYXJfbmVh
cmVzdF9taXJyb3IgPSBGQUlMCiszMjQzIFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUudmVydGV4LmN1YmUuZmlsdGVyaW5nLmxpbmVhcl9taXBtYXBfbGluZWFy
X2xpbmVhcl9jbGFtcCA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS5maWx0ZXJpbmcubGluZWFyX21pcG1hcF9saW5l
YXJfbGluZWFyX21pcnJvciA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFwLmNsYW1wX2NsYW1wID0gRkFJTAor
MzI0MyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRl
eC5jdWJlLndyYXAuY2xhbXBfcmVwZWF0ID0gRkFJTAorMzI0MyBWVUxLQU4gV0lOIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAuY2xhbXBfbWlycm9y
ID0gRkFJTAorMzI0MyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0
dXJlLnZlcnRleC5jdWJlLndyYXAubWlycm9yX2NsYW1wID0gRkFJTAorMzI0MyBWVUxLQU4gV0lO
IEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5jdWJlLndyYXAubWly
cm9yX3JlcGVhdCA9IEZBSUwKKzMyNDMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudGV4dHVyZS52ZXJ0ZXguY3ViZS53cmFwLm1pcnJvcl9taXJyb3IgPSBGQUlMCisKKy8v
IFZ1bGthbiBBTUQgZHJpdmVycyBkb24ndCBzZWVtIHRvIHN1cHBvcnQgd2lkZSBwb2ludCBjbGlw
cGluZy4KKzI0NjMgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBp
bmcucG9pbnQud2lkZV9wb2ludF9jbGlwID0gRkFJTAorMjQ2MyBWVUxLQU4gV0lOIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlwcGluZy5wb2ludC53aWRlX3BvaW50X2NsaXBfdmlld3Bv
cnRfY2VudGVyID0gRkFJTAorMjQ2MyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5jbGlwcGluZy5wb2ludC53aWRlX3BvaW50X2NsaXBfdmlld3BvcnRfY29ybmVyID0gRkFJ
TAorCisvLyBUaGVzZSBmYWlsdXJlcyBhcmUgcG9zc2libHkgZHVlIHRvIGFuIEFNRCBkcml2ZXIg
YnVnLgorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5kcmF3LnJh
bmRvbS4xNCA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZHJhdy5yYW5kb20uMzAgPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmRyYXcucmFuZG9tLjQxID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUuZmly
c3QuYnl0ZV9maXJzdCogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5maXJzdC5mbG9hdF9maXJz
dCogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZl
cnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQuYnVmZmVyXzFfMTdfYnl0ZSogPSBT
S0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9h
cnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQuYnVmZmVyXzFfMl9ieXRlKiA9IFNLSVAKKzI4
NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy5z
aW5nbGVfYXR0cmlidXRlLm9mZnNldC5idWZmZXJfMV8zMl9ieXRlKiA9IFNLSVAKKzI4NDcgVlVM
S0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy5zaW5nbGVf
YXR0cmlidXRlLm9mZnNldC5idWZmZXJfMTdfMTdfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBX
SU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJp
YnV0ZS5vZmZzZXQuYnVmZmVyXzE3XzJfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1E
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5v
ZmZzZXQuYnVmZmVyXzE3XzMyX2J5dGUqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUub2Zmc2V0
LmJ1ZmZlcl8zMl8xN19ieXRlKiA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLm9mZnNldC5idWZm
ZXJfMzJfMzJfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5vZmZzZXQuYnVmZmVyXzMy
XzMyX2Zsb2F0KiA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwudmVydGV4X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLm9mZnNldC5idWZmZXJfNF8xN19i
eXRlKiA9IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
dmVydGV4X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLm9mZnNldC5idWZmZXJfNF8zMl9ieXRlKiA9
IFNLSVAKKzI4NDcgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4
X2FycmF5cy5zaW5nbGVfYXR0cmlidXRlLm9mZnNldC5idWZmZXJfNF8zMl9mbG9hdCogPSBTS0lQ
CisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJh
eXMuc2luZ2xlX2F0dHJpYnV0ZS5zdHJpZGVzLmJ1ZmZlcl8wXzE3X2J5dGUqID0gU0tJUAorMjg0
NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNp
bmdsZV9hdHRyaWJ1dGUuc3RyaWRlcy5idWZmZXJfMF8zMl9ieXRlKiA9IFNLSVAKKzI4NDcgVlVM
S0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy5zaW5nbGVf
YXR0cmlidXRlLnN0cmlkZXMuYnVmZmVyXzBfMzJfZmxvYXQqID0gU0tJUAorMjg0NyBWVUxLQU4g
V0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRy
aWJ1dGUuc3RyaWRlcy5idWZmZXJfMF8zMl9zaG9ydCogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4g
QU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0
ZS5zdHJpZGVzLmJ1ZmZlcl8wXzNfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS5zdHJp
ZGVzLmJ1ZmZlcl8wXzZfc2hvcnQqID0gU0tJUAorMjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlzLnNpbmdsZV9hdHRyaWJ1dGUudXNhZ2VzLmJ1
ZmZlcl8wXzBfYnl0ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS51c2FnZXMuYnVmZmVyXzBf
MF9zaG9ydCogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnZlcnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS51c2FnZXMuYnVmZmVyXzBfMTdfYnl0
ZSogPSBTS0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZl
cnRleF9hcnJheXMuc2luZ2xlX2F0dHJpYnV0ZS51c2FnZXMuYnVmZmVyXzBfMzJfYnl0ZSogPSBT
S0lQCisyODQ3IFZVTEtBTiBXSU4gQU1EIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnZlcnRleF9h
cnJheXMuc2luZ2xlX2F0dHJpYnV0ZS51c2FnZXMuYnVmZmVyXzBfMzJfZmxvYXQqID0gU0tJUAor
Mjg0NyBWVUxLQU4gV0lOIEFNRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlz
LnNpbmdsZV9hdHRyaWJ1dGUudXNhZ2VzLmJ1ZmZlcl8wXzMyX3Nob3J0KiA9IFNLSVAKKworLy8g
RmFpbHMgYWZ0ZXIgT3BlbkdMIGxpbmUgcmFzdGVyaXphdGlvbiBydWxlcyBpbXBsZW1lbnRhdGlv
bi4gUG9zc2libHkgYSBidWcgaW4gRnJhZ0Nvb3JkLgorMjgwOSBWVUxLQU4gV0lOIEFNRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlwcGluZy5saW5lLmxvbmdfbGluZV9jbGlwID0gRkFJTAor
CisvLyBQb2x5Z29uIG9mZnNldCBmYWlsdXJlcworMzMwMSBWVUxLQU4gV0lOIEFNRCA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC5kZWZhdWx0X3Jlc3VsdF9kZXB0aF9jbGFt
cCA9IEZBSUwKKzMzMDEgVlVMS0FOIFdJTiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9s
eWdvbl9vZmZzZXQuZGVmYXVsdF9mYWN0b3JfMV9zbG9wZSA9IEZBSUwKKzMzMDEgVlVMS0FOIFdJ
TiBBTUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQxNl9yZW5k
ZXJfd2l0aF91bml0cyA9IEZBSUwKKworLy8gRmFpbHVyZXMgb24gbmV3ZXIgTlZJRElBIGRyaXZl
cnMgKDQxMS45NSkgYW5kIHBhc3NlcyBvbiBvbGRlciBkcml2ZXJzICgzODguMTYpLgorMjk3NiBW
VUxLQU4gTlZJRElBIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS4q
ID0gRkFJTAorLy8gRmFpbHMgb24gNDMxLjAyIE5WSURJQSBkcml2ZXIKKzM3NDggVlVMS0FOIFdJ
TiBOVklESUEgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5yZXBlYXRlZF9jbGVh
ci4qID0gRkFJTApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczMxX3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDdkYzgxNTVhMzgxMGI4YmY1YWZmNmJlZGM2
YzQ0NWZkMjlmOGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
QEAgLTAsMCArMSwyNzAgQEAKKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGRl
ZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBUaGUgZXhwZWN0ZWQKKy8vIGZvcm1hdCBp
czoKKy8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZBSUwsRkxB
S1ksVElNRU9VVCxTS0lQfQorLy8KKy8vIE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5hdGlvbiBv
ZiB0aGUgYmVsb3cgbGlzdCwgY29tYmluZWQgd2l0aCBhIGxvZ2ljYWwgQU5EOgorLy8gIFdJTiBY
UCBWSVNUQSBXSU43IFdJTjggV0lOMTAKKy8vICBNQUMgTEVPUEFSRCBTTk9XTEVPUEFSRCBMSU9O
IE1PVU5UQUlOTElPTiBNQVZFUklDS1MgWU9TRU1JVEUgRUxDQVBJVEFOIFNJRVJSQSBISUdIU0lF
UlJBIE1PSkFWRQorLy8gIExJTlVYIENIUk9NRU9TIEFORFJPSUQKKy8vICBOVklESUEgQU1EIElO
VEVMCisvLyAgREVCVUcgUkVMRUFTRQorLy8gIEQzRDkgRDNEMTEgT1BFTkdMIEdMRVMgVlVMS0FO
CisvLyAgTkVYVVM1WCBQSVhFTDJPUlhMCisvLyAgUVVBRFJPUDQwMAorLy8gIFNXSUZUU0hBREVS
CisvLworLy8KKy8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhh
dmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGlu
Zy4KKy8vCisvLyBFeGFtcGxlczoKKy8vIGZhaWxzIG9uIGJvdGggd2luZG93cyBhbmQgbWFjIChj
cmFzaCkKKy8vICA5MTUzMCBXSU4gOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBTS0lQCisvLyAg
OTE1MzAgTUFDIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gU0tJUAorLy8gZmFpbHMgb24gd2lu
ZG93cyB1c2luZyBOVklESUEgR1BVcworLy8gIDkxNTMzIFdJTiBOVklESUEgOiBnbF9taW5fdW5p
Zm9ybXMgPSBGQUlMCisvLyBmYWlscyBvbiBOZXh1czVYIHdpdGggR0xFUyBiYWNrZW5kIChoYW5n
cykKKy8vICA5MTUzMSBORVhVUzVYIEdMRVMgOiBjb25mb3JtYW5jZV9tb3JlXyogPSBTS0lQCisK
KworLy8vLworLy8vLyBEZXNrdG9wIGV4cGVjdGF0aW9ucworLy8vLworCisvLyBDcmFzaGluZyBU
ZXN0cworMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZh
Y2VfcXVlcnkudHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmcucmVzb3VyY2VfbGlzdC52ZXJ0ZXhf
ZnJhZ21lbnQuYnVpbHRpbl9nbF9wb3NpdGlvbiA9IFNLSVAKKzE0NDIgT1BFTkdMIDogZEVRUC1H
TEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS50cmFuc2Zvcm1fZmVlZGJh
Y2tfdmFyeWluZy5yZXNvdXJjZV9saXN0LnZlcnRleF9mcmFnbWVudC5idWlsdGluX2dsX3Bvc2l0
aW9uID0gU0tJUAorCisvLyBDcmFzaGluZyBUZXN0cyBvbiBMaW51eCBvbiBJbnRlbCBIRCA2MzAu
CisyMzQ5IExJTlVYIElOVEVMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zeW5jaHJvbml6YXRp
b24uaW5faW52b2NhdGlvbi5pbWFnZV8qID0gU0tJUAorMjM0OSBMSU5VWCBJTlRFTCA6IGRFUVAt
R0xFUzMxLmZ1bmN0aW9uYWwuc3luY2hyb25pemF0aW9uLmludGVyX2ludm9jYXRpb24uaW1hZ2Vf
KiA9IFNLSVAKKzIzNDkgTElOVVggSU5URUwgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmNvbXB1
dGUuYmFzaWMuY29weV9pbWFnZV90b19zc2JvX3NtYWxsID0gU0tJUAorMjM0OSBMSU5VWCBJTlRF
TCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuY29tcHV0ZS5iYXNpYy5jb3B5X3NzYm9fdG9faW1h
Z2Vfc21hbGwgPSBTS0lQCisyMzQ5IExJTlVYIElOVEVMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25h
bC5jb21wdXRlLmJhc2ljLmltYWdlX2JhcnJpZXJfbXVsdGlwbGUgPSBTS0lQCisKKy8vIEZhaWxp
bmcgVGVzdHMgb24gTGludXggb24gSW50ZWwgSEQgNjMwLgorMjM0OSBMSU5VWCBJTlRFTCA6IGRF
UVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcubmVnYXRpdmVfY292ZXJhZ2UuZ2V0X2Vycm9yLnNo
YWRlci5wcm9ncmFtX2JpbmFyeSA9IEZBSUwKKworMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1
bmN0aW9uYWwuaW1hZ2VfbG9hZF9zdG9yZS4qID0gU0tJUAorCisvLyBUaW1lcyBvdXQgc2hhZGVy
IGNvbXBpbGF0aW9uIGJlY2F1c2UgaXQgdXNlcyBzbyBtYW55IHJlc291cmNlcy4KKzM0NDUgOiBk
RVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNzYm8ubGF5b3V0LnJhbmRvbS5hbGxfc2hhcmVkX2J1ZmZl
ci40OCA9IFNLSVAKKworLy8gRDNEMTEgRmFpbGluZyBUZXN0cworLy8gQmVsb3cgY2FzZXMgYXJl
IGZhaWxlZCBkdWUgdG8gYmluZGluZyBtdWx0aS1VQVZzIHRvIGEgc2luZ2xlIGJ1ZmZlciBpcyBu
b3Qgc3VwcG9ydGVkIGluIEQzRCBiYWNrZW5kLgorLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8zMDMy
CiszMDMyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zc2JvLmxheW91dC4qLnNpbmds
ZV9idWZmZXIqID0gRkFJTAorMzAzMiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3Ni
by5sYXlvdXQucmFuZG9tLm5lc3RlZF9zdHJ1Y3RzX2FycmF5c19pbnN0YW5jZV9hcnJheXMuMTMg
PSBGQUlMCiszMDMyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zc2JvLmxheW91dC5y
YW5kb20uYWxsX3NoYXJlZF9idWZmZXIqID0gRkFJTAorCisxNDQyIEQzRDExIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5pbnRlZ2VyLm1heF9jb21wdXRlX2F0b21pY19jb3Vu
dGVyc18qID0gRkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVf
cXVlcnkuaW50ZWdlci5tYXhfYXRvbWljX2NvdW50ZXJfYnVmZmVyX3NpemVfKiA9IEZBSUwKKzE0
NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnN0YXRlX3F1ZXJ5LmludGVnZXIubWF4
X2NvbWJpbmVkX2F0b21pY19jb3VudGVycyogPSBGQUlMCisxNDQyIEQzRDExIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5pbnRlZ2VyLm1heF91bmlmb3JtX2J1ZmZlcl9iaW5k
aW5nc18qID0gRkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVf
cXVlcnkuaW50ZWdlci5tYXhfY29tYmluZWRfdGV4dHVyZV9pbWFnZV91bml0c18qID0gRkFJTAor
MTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkucHJvZ3JhbS5j
b21wdXRlX3dvcmtfZ3JvdXBfc2l6ZV9nZXRfcHJvZ3JhbWl2ID0gRkFJTAorMTQ0MiBEM0QxMSA6
IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcuYXN5bmMuY2FzZV80X2xvZyA9IFNLSVAKKzE0
NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmFzeW5jLmNhc2VfNV9jYWxs
YmFjayA9IFNLSVAKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmVy
cm9yX2ZpbHRlcnMuY2FzZV8yID0gRkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0
aW9uYWwuZGVidWcuZXJyb3JfZmlsdGVycy5jYXNlXzMgPSBGQUlMCisxNDQyIEQzRDExIDogZEVR
UC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9maWx0ZXJzLmNhc2VfOSA9IEZBSUwKKzE0
NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmVycm9yX2ZpbHRlcnMuY2Fz
ZV8xMCA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmVy
cm9yX2ZpbHRlcnMuY2FzZV8yNyA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLmRlYnVnLmVycm9yX2ZpbHRlcnMuY2FzZV8yOCA9IEZBSUwKKzE0NDIgRDNEMTEgOiBk
RVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLmVycm9yX2dyb3Vwcy5jYXNlXzIgPSBGQUlMCisx
NDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5lcnJvcl9ncm91cHMuY2Fz
ZV8zID0gRkFJTAorMTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcuZXJy
b3JfZ3JvdXBzLmNhc2VfOSA9IEZBSUwKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLmRlYnVnLmVycm9yX2dyb3Vwcy5jYXNlXzEwID0gRkFJTAorCisxOTQxIEQzRDExIDogZEVR
UC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLmNvbW1vbi4qZ2Vv
bWV0cnkgPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJz
LmJ1aWx0aW5fZnVuY3Rpb25zLnBhY2tfdW5wYWNrLipnZW9tZXRyeSA9IEZBSUwKKzE5NDEgRDNE
MTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMuaW50
ZWdlci4qZ2VvbWV0cnkgPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25h
bC5zaGFkZXJzLmJ1aWx0aW5fY29uc3RhbnRzLmdlb21ldHJ5X3NoYWRlci4qID0gRkFJTAorMTk0
MSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkucHJvZ3JhbS5nZW9t
ZXRyeV9zaGFkZXJfc3RhdGVfZ2V0X3Byb2dyYW1pdiA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcucXVlcnkuKiA9IEZBSUwKKzE5NDEg
RDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcuYmFzaWMuKiA9
IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRp
bmcuY29udmVyc2lvbi4qID0gRkFJTAorMTk0MSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuZ2VvbWV0cnlfc2hhZGluZy5lbWl0LiogPSBGQUlMCisxOTQxIEQzRDExIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5nZW9tZXRyeV9zaGFkaW5nLnZhcnlpbmcuKiA9IEZBSUwKKzE5NDEgRDNE
MTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcubGF5ZXJlZC4qID0g
RkFJTAorMTk0MSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZ2VvbWV0cnlfc2hhZGlu
Zy5pbnN0YW5jZWQuKiA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFs
Lmdlb21ldHJ5X3NoYWRpbmcuaW5wdXQuKiA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQLUdMRVMz
MS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcubmVnYXRpdmUuKiA9IEZBSUwKKzE5NDEgRDNE
MTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmdlb21ldHJ5X3NoYWRpbmcudmVydGV4X3RyYW5z
Zm9ybV9mZWVkYmFjay4qID0gRkFJTAorMTk0MSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuc2hhZGVycy5saW5rYWdlLmVzMzEuZ2VvbWV0cnkuKiA9IEZBSUwKKzE5NDEgRDNEMTEgOiBk
RVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZlX2NvdmVyYWdlLmNhbGxiYWNrcy5z
aGFkZXJfZGlyZWN0aXZlLmdlb21ldHJ5X3NoYWRlciA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZlX2NvdmVyYWdlLmxvZy5zaGFkZXJfZGly
ZWN0aXZlLmdlb21ldHJ5X3NoYWRlciA9IEZBSUwKKzE5NDEgRDNEMTEgOiBkRVFQLUdMRVMzMS5m
dW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZlX2NvdmVyYWdlLmdldF9lcnJvci5zaGFkZXJfZGlyZWN0
aXZlLmdlb21ldHJ5X3NoYWRlciA9IEZBSUwKKzI4MjYgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5j
dGlvbmFsLnRleHR1cmUuZ2F0aGVyLmJhc2ljLmN1YmUucmdiYTgudGV4dHVyZV9zd2l6emxlLiog
PSBGQUlMCisyODI2IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC50ZXh0dXJlLmdhdGhl
ci5iYXNpYy5jdWJlLnJnYmE4aS4qID0gRkFJTAorMjgyNiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1
bmN0aW9uYWwudGV4dHVyZS5nYXRoZXIuYmFzaWMuY3ViZS5yZ2JhOHVpLiogPSBGQUlMCiszODY1
IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5jb21wdXRlLmJhc2ljLmNvcHlfaW1hZ2Vf
dG9fc3Nib19sYXJnZSA9IEZBSUwKKzM4NjUgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFs
LmNvbXB1dGUuYmFzaWMuY29weV9zc2JvX3RvX2ltYWdlX2xhcmdlID0gRkFJTAorCisvLyBTaW11
bHRhbmVvdXMgdXNlIG9mIEdMX0NPTlNUQU5UX0FMUEhBL0dMX09ORV9NSU5VU19DT05TVEFOVF9B
TFBIQSBhbmQgR0xfQ09OU1RBTlRfQ09MT1IvR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIGFz
IGNvbG9yIGZhY3RvcnMKKzQzOTQgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRyYXdf
YnVmZmVyc19pbmRleGVkLnJhbmRvbS5tYXhfcmVxdWlyZWRfZHJhd19idWZmZXJzLjQgPSBGQUlM
Cis0Mzk0IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kcmF3X2J1ZmZlcnNfaW5kZXhl
ZC5yYW5kb20ubWF4X3JlcXVpcmVkX2RyYXdfYnVmZmVycy43ID0gRkFJTAorNDM5NCBEM0QxMSA6
IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZHJhd19idWZmZXJzX2luZGV4ZWQucmFuZG9tLm1heF9p
bXBsZW1lbnRhdGlvbl9kcmF3X2J1ZmZlcnMuOSA9IEZBSUwKKzQzOTQgRDNEMTEgOiBkRVFQLUdM
RVMzMS5mdW5jdGlvbmFsLmRyYXdfYnVmZmVyc19pbmRleGVkLnJhbmRvbS5tYXhfaW1wbGVtZW50
YXRpb25fZHJhd19idWZmZXJzLjE1ID0gRkFJTAorCisvLyBGYWlsaW5nIHdpdGggZEVRUCByb2xs
CiszNDQ3IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zc2JvLmxheW91dC5yYW5kb20u
YWxsX3Blcl9ibG9ja19idWZmZXJzLjIyID0gRkFJTAorMzQ0NyBEM0QxMSA6IGRFUVAtR0xFUzMx
LmZ1bmN0aW9uYWwuc3Niby5sYXlvdXQucmFuZG9tLmFsbF9wZXJfYmxvY2tfYnVmZmVycy40MSA9
IEZBSUwKKzQyMzQgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLmRlYnVnLm5lZ2F0aXZl
X2NvdmVyYWdlLmdldF9lcnJvci5jb21wdXRlLnByb2dyYW1fbm90X2FjdGl2ZSA9IEZBSUwKKzQy
MzQgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9jb3ZlcmFn
ZS5nZXRfZXJyb3IuY29tcHV0ZS5wcm9ncmFtX25vdF9hY3RpdmUgPSBGQUlMCis0MjM0IEQzRDEx
IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9jb3ZlcmFnZS5sb2cuY29t
cHV0ZS5wcm9ncmFtX25vdF9hY3RpdmUgPSBGQUlMCis0MjM0IE9QRU5HTCA6IGRFUVAtR0xFUzMx
LmZ1bmN0aW9uYWwuZGVidWcubmVnYXRpdmVfY292ZXJhZ2UubG9nLmNvbXB1dGUucHJvZ3JhbV9u
b3RfYWN0aXZlID0gRkFJTAorNDIzNCBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVi
dWcubmVnYXRpdmVfY292ZXJhZ2UuZ2V0X2Vycm9yLmJ1ZmZlci5yZW5kZXJidWZmZXJfc3RvcmFn
ZV9tdWx0aXNhbXBsZSA9IEZBSUwKKzQyMzQgRDNEMTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFs
LmRlYnVnLm5lZ2F0aXZlX2NvdmVyYWdlLmNhbGxiYWNrcy5jb21wdXRlLnByb2dyYW1fbm90X2Fj
dGl2ZSA9IEZBSUwKKzQyMzQgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5u
ZWdhdGl2ZV9jb3ZlcmFnZS5jYWxsYmFja3MuY29tcHV0ZS5wcm9ncmFtX25vdF9hY3RpdmUgPSBG
QUlMCisKKy8vIE9QRU5HTCBGYWlsaW5nIFRlc3RzCisxNjY1IFdJTiBOVklESUEgT1BFTkdMIDog
ZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kcmF3X2luZGlyZWN0Lm5lZ2F0aXZlLmNvbW1hbmRfb2Zm
c2V0X25vdF9pbl9idWZmZXJfdW5zaWduZWQzMl93cmFwID0gRkFJTAorMTQ0MiBOVklESUEgT1BF
TkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5mYm8ubm9fYXR0YWNobWVudHMubWF4aW11bXMu
YWxsID0gRkFJTAorMTQ0MiBPUEVOR0wgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnByb2dyYW1f
aW50ZXJmYWNlX3F1ZXJ5LmF0b21pY19jb3VudGVyX2J1ZmZlci5yZWZlcmVuY2VkX2J5KiA9IEZB
SUwKKzE0NDIgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFj
ZV9xdWVyeS5idWZmZXJfbGltaXRlZF9xdWVyeS5yZXNvdXJjZV9xdWVyeSA9IEZBSUwKKzIyNzcg
T1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS5i
dWZmZXJfdmFyaWFibGUucmVmZXJlbmNlZF9ieS4qID0gRkFJTAorMjI3NyBPUEVOR0wgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LmJ1ZmZlcl92YXJpYWJs
ZS5yYW5kb20uKiA9IEZBSUwKKzE0NDIgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5w
cm9ncmFtX2ludGVyZmFjZV9xdWVyeS5wcm9ncmFtX2lucHV0LiogPSBGQUlMCisxNDQyIE9QRU5H
TCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkucHJvZ3Jh
bV9vdXRwdXQuKiA9IEZBSUwKKzE0NDIgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5w
cm9ncmFtX2ludGVyZmFjZV9xdWVyeS5zaGFkZXJfc3RvcmFnZV9ibG9jay5yZWZlcmVuY2VkX2J5
LiogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9p
bnRlcmZhY2VfcXVlcnkudHJhbnNmb3JtX2ZlZWRiYWNrX3ZhcnlpbmcuKiA9IEZBSUwKKzE0NDIg
T1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS51
bmlmb3JtLnJlZmVyZW5jZWRfYnlfc2hhZGVyLiogPSBGQUlMCisxNDQyIE9QRU5HTCA6IGRFUVAt
R0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVlcnkudW5pZm9ybS5yYW5kb20u
KiA9IEZBSUwKKzE0NDIgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2lu
dGVyZmFjZV9xdWVyeS51bmlmb3JtX2Jsb2NrLnJlZmVyZW5jZWRfYnkuKiA9IEZBSUwKKworLy8g
T3BlbkdML0QzRDExIEZhaWxpbmcgVGVzdHMKKzE0NDIgT1BFTkdMIDogZEVRUC1HTEVTMzEuZnVu
Y3Rpb25hbC5zaGFkZXJzLm9wYXF1ZV90eXBlX2luZGV4aW5nLiogPSBGQUlMCisxNDQyIEQzRDEx
IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLm9wYXF1ZV90eXBlX2luZGV4aW5nLiog
PSBGQUlMCisKKy8vIFRoZXNlIHRlc3RzIGFyZSBmYWlsaW5nIGJlY2F1c2Ugb2YgY29tcGlsZSBl
cnJvcnMgd2l0aCBTU0JPcyBpbiBjb21wdXRlIHNoYWRlcnMuCisKKzE0NDIgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLnN0ZW5jaWxfdGV4dHVyaW5nLiogPSBTS0lQCisvLyBUT0RPKHhp
bmdodWEuY2FvQGludGVsLmNvbSk6IEZBSUwgZXhwZWN0YXRpb24gaW5zdGVhZCBvZiBTS0lQIHNo
b3VsZCBiZSBzdWZmaWNpZW50IGZvciBPcGVuR0wsIGJ1dCB0aGUKKy8vIHRlc3QgZXhwZWN0YXRp
b25zIHBhcnNlciBkb2Vzbid0IHN1cHBvcnQgaGF2aW5nIEZBSUwgZm9yIEdMIGFuZCBTS0lQIGZv
ciBEM0Qgd2l0aCB0aGUgc2FtZSB0ZXN0IGZpbHRlci4KKworMTcyOSBEM0QxMSA6IGRFUVAtR0xF
UzMxLmZ1bmN0aW9uYWwuYXRvbWljX2NvdW50ZXIuKiA9IFNLSVAKKzE5NTEgRDNEMTEgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLmxheW91dF9iaW5kaW5nLnNzYm8uKiA9IFNLSVAKKzE5NTEgRDNE
MTEgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcu
c3Niby4qID0gU0tJUAorNDMzMCBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3Jh
bV9pbnRlcmZhY2VfcXVlcnkuYnVmZmVyX3ZhcmlhYmxlLnJlZmVyZW5jZWRfYnkuc2VwYXJhYmxl
X3ZlcnRleC4qID0gU0tJUAorNDMyOSBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJv
Z3JhbV9pbnRlcmZhY2VfcXVlcnkuYnVmZmVyX3ZhcmlhYmxlLnJlZmVyZW5jZWRfYnkuc2VwYXJh
YmxlX2ZyYWdtZW50LiogPSBTS0lQCis0MzI5IEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25h
bC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS5idWZmZXJfdmFyaWFibGUucmFuZG9tLiogPSBTS0lQ
CisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9x
dWVyeS5wcm9ncmFtX2lucHV0LiogPSBTS0lQCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVu
Y3Rpb25hbC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS5wcm9ncmFtX291dHB1dC4qID0gU0tJUAor
MTQ0MiBEM0QxMSA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRlcmZhY2VfcXVl
cnkuc2hhZGVyX3N0b3JhZ2VfYmxvY2suKiA9IFNLSVAKKzE0NDIgRDNEMTEgOiBkRVFQLUdMRVMz
MS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LnRyYW5zZm9ybV9mZWVkYmFja192
YXJ5aW5nLiogPSBTS0lQCisxNDQyIEQzRDExIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5wcm9n
cmFtX2ludGVyZmFjZV9xdWVyeS51bmlmb3JtKiA9IFNLSVAKKzE0NDIgRDNEMTEgOiBkRVFQLUdM
RVMzMS5mdW5jdGlvbmFsLnN5bmNocm9uaXphdGlvbi4qID0gU0tJUAorMTQ0MiBEM0QxMSA6IGRF
UVAtR0xFUzMxLmZ1bmN0aW9uYWwubGF5b3V0X2JpbmRpbmcuaW1hZ2UuKiA9IFNLSVAKKy8vIFRo
aXMgY2FzZSBpcyBza2lwcGVkIHNpbmNlIGl0IHVzZXMgYXRvbWljIGNvdW50ZXIgYnVpbHRpbiBm
dW5jdGlvbnMgd2hpY2ggaGF2ZW4ndCBiZWVuIGltcGxlbWVudGVkLgorMTcyOSBEM0QxMSA6IGRF
UVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkucHJvZ3JhbS5hY3RpdmVfYXRvbWljX2Nv
dW50ZXJfYnVmZmVyc19nZXRfcHJvZ3JhbWl2ID0gU0tJUAorCisvLyBUaGUgRDNEIGJhY2tlbmQg
ZG9lcyBub3QgZXhwZWN0IG1pc3Npbmcgc2hhZGVyIHN0YWdlcworMTU4OCBEM0QxMSA6IGRFUVAt
R0xFUzMxLmZ1bmN0aW9uYWwuc2VwYXJhdGVfc2hhZGVyLnZhbGlkYXRpb24uZXMzMS52YXJ5aW5n
LiogPSBTS0lQCisKKworLy8vLworLy8vLyBGYWlsdXJlcyBibG9ja2luZyBhbiBvZmZpY2lhbCBH
TEVTIDMuMSBjb25mb3JtYW5jZSBydW4gb24gU3dpZnRTaGFkZXIKKy8vLy8KKworLy8gV2FpdGlu
ZyBmb3IgUHJvZ3JhbSBwaXBlbGluZSBmdW5jdGlvbmFsaXR5CiszNTcwIDogZEVRUC1HTEVTMzEu
ZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5pbnRlZ2VyLnByb2dyYW1fcGlwZWxpbmVfYmluZGluZ18q
ID0gRkFJTAorMzU3MCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkucHJvZ3Jh
bS5wcm9ncmFtX3NlcGFyYWJsZV9nZXRfcHJvZ3JhbWl2ID0gRkFJTAorMzU3MCA6IGRFUVAtR0xF
UzMxLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnkucHJvZ3JhbV9waXBlbGluZS4qID0gU0tJUAorMzU3
MCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZGVidWcub2JqZWN0X2xhYmVscy5wcm9ncmFtX3Bp
cGVsaW5lID0gRkFJTAorMzU3MCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2VwYXJhdGVfc2hh
ZGVyLiogPSBGQUlMCisKKy8vIERlYnVnICh0ZXN0IGJ1Zyk6CiszNTkwIFNXSUZUU0hBREVSIDog
ZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5kZWJ1Zy5uZWdhdGl2ZV9jb3ZlcmFnZS5nZXRfZXJyb3Iu
YnVmZmVyLmZyYW1lYnVmZmVyX3RleHR1cmUyZCA9IEZBSUwKKworLy8gRnJvbnQtZW5kIHF1ZXJ5
IGJ1Z3M6CiszNTk2IFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwucHJvZ3JhbV9pbnRl
cmZhY2VfcXVlcnkuc2hhZGVyX3N0b3JhZ2VfYmxvY2suYnVmZmVyX2RhdGFfc2l6ZS4qID0gRkFJ
TAorCisvLyBOb3QgZmFpbGluZyBpbiBsYXN0IG9mZmljaWFsIHJ1biwgYnV0IGZhaWxlZCByZWNl
bnRseToKKzQxMTAgU1dJRlRTSEFERVIgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMu
aGVscGVyX2ludm9jYXRpb24uKiA9IEZBSUwKKworLy8gVnVsa2FuIGRvZXNuJ3Qgc3VwcG9ydCBh
cnJheSBvZiBhcnJheSBvZiBvcGFxdWUgdW5pZm9ybXMuIEVtdWxhdGlvbiBpcyBub3QgeWV0IGRv
bmUgZm9yIGltYWdlcworMzg4MSBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnByb2dy
YW1faW50ZXJmYWNlX3F1ZXJ5LnVuaWZvcm0ubG9jYXRpb24uZGVmYXVsdF9ibG9jay5hcnJheS5h
cnJheS5pbWFnZV8yZCA9IFNLSVAKKzM4ODEgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25h
bC5wcm9ncmFtX2ludGVyZmFjZV9xdWVyeS51bmlmb3JtLmxvY2F0aW9uLmRlZmF1bHRfYmxvY2su
YXJyYXkuYXJyYXkuaWltYWdlXzJkX2FycmF5ID0gU0tJUAorCisvLy8vCisvLy8vIEdlbmVyYWwg
VnVsa2FuIGV4cGVjdGF0aW9ucworLy8vLworCisvLyBCbG9jayBuYW1lIG1hdGNoaW5nIGZhaWx1
cmU6CiszNDU5IFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5saW5rYWdl
LmVzMzEuc2hhZGVyX3N0b3JhZ2VfYmxvY2subWlzbWF0Y2hfd2l0aF9hbmRfd2l0aG91dF9pbnN0
YW5jZV9uYW1lID0gRkFJTAorCisvLyBUZXNzZWxsYXRpb24gZ2VvbWV0cnkgaW50ZXJhY3Rpb246
CiszNTcyIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwudGVzc2VsbGF0aW9uX2dlb21l
dHJ5X2ludGVyYWN0aW9uLiogPSBGQUlMCisKKy8vIFZ1bGthbiBjcmVhdGVzIHRoZSBpbWFnZSB2
aWV3IHdpdGggdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSB0ZXh0dXJlLgorMzg4NSBWVUxLQU4gOiBk
RVFQLUdMRVMzMS5mdW5jdGlvbmFsLmltYWdlX2xvYWRfc3RvcmUuKi5mb3JtYXRfcmVpbnRlcnBy
ZXQuKiA9IEZBSUwKKworLy8gQ2Fubm90IGNyZWF0ZSAyRCAoYXJyYXkpIHZpZXcgb2YgM0QgdGV4
dHVyZS4KKzM4ODYgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5pbWFnZV9sb2FkX3N0
b3JlLjNkLipsYXllciA9IEZBSUwKKworLy8vLworLy8vLyBBbmRyb2lkIChpLmUuIFBpeGVsKikg
VnVsa2FuIGV4cGVjdGF0aW9ucworLy8vLworCisvLyBWdWxrYW4gQW5kcm9pZCBmYWlsdXJlcwor
NDExMCBBTkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxw
ZXJfaW52b2NhdGlvbi5kZXJpdmF0ZS5saW5lc184X3NhbXBsZXNfZGZkeCA9IEZBSUwKKzQxMTAg
QU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMuaGVscGVyX2lu
dm9jYXRpb24uZGVyaXZhdGUubGluZXNfOF9zYW1wbGVzX2Z3aWR0aCA9IEZBSUwKKzQxMTAgQU5E
Uk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMuaGVscGVyX2ludm9j
YXRpb24uZGVyaXZhdGUucG9pbnRzXzhfc2FtcGxlc19kZmR4ID0gRkFJTAorNDExMCBBTkRST0lE
IFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52b2NhdGlv
bi5kZXJpdmF0ZS5wb2ludHNfOF9zYW1wbGVzX2RmZHkgPSBGQUlMCis0MTEwIEFORFJPSUQgVlVM
S0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLmRl
cml2YXRlLnBvaW50c184X3NhbXBsZXNfZndpZHRoID0gRkFJTAorNDExMCBBTkRST0lEIFZVTEtB
TiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52b2NhdGlvbi5kZXJp
dmF0ZS50cmlhbmdsZXNfOF9zYW1wbGVzX2RmZHkgPSBGQUlMCis0MTEwIEFORFJPSUQgVlVMS0FO
IDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLmRlcml2
YXRlLnRyaWFuZ2xlc19tYXhfc2FtcGxlc19kZmR4ID0gRkFJTAorNDExMCBBTkRST0lEIFZVTEtB
TiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52b2NhdGlvbi5kZXJp
dmF0ZS53aWRlX2xpbmVzXzhfc2FtcGxlc19kZmR5ID0gRkFJTAorNDExMCBBTkRST0lEIFZVTEtB
TiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52b2NhdGlvbi5kZXJp
dmF0ZS53aWRlX2xpbmVzX21heF9zYW1wbGVzX2RmZHkgPSBGQUlMCis0MTEwIEFORFJPSUQgVlVM
S0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLmRl
cml2YXRlLndpZGVfcG9pbnRzXzhfc2FtcGxlc19kZmR5ID0gRkFJTAorNDExMCBBTkRST0lEIFZV
TEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5oZWxwZXJfaW52b2NhdGlvbi52
YWx1ZS5saW5lc184X3NhbXBsZXMgPSBGQUlMCis0MTEwIEFORFJPSUQgVlVMS0FOIDogZEVRUC1H
TEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLnZhbHVlLnBvaW50c184
X3NhbXBsZXMgPSBGQUlMCis0MTEwIEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVTMzEuZnVuY3Rp
b25hbC5zaGFkZXJzLmhlbHBlcl9pbnZvY2F0aW9uLnZhbHVlLnRyaWFuZ2xlc19tYXhfc2FtcGxl
cyA9IEZBSUwKKworLy8gUGFzc2luZyBvbiByZWNlbnQgZHJpdmVyczoKKzM3MjYgVlVMS0FOIEFO
RFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNzYm8ubGF5b3V0LiogPSBGQUlMCiszNzI2
IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5hdG9taWNfY291bnRlci4q
ID0gRkFJTAorMzcyNiBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3lu
Y2hyb25pemF0aW9uLmludGVyX2NhbGwud2l0aG91dF9tZW1vcnlfYmFycmllci4qYXRvbWljX2Nv
dW50ZXIqID0gRkFJTAorMzcyNiBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9u
YWwuY29tcHV0ZS5iYXNpYy5hdG9taWNfY291bnRlciogPSBGQUlMCisKKy8vIEFycmF5cyBvZiBv
cGFxdWUgdHlwZXMgYXMgZnVuY3Rpb24gcGFyYW1ldGVycyAocG9zc2libHkgcmVsYXRlZCB0byBp
c3N1ZSAzODgyKQorMjcwMyBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwu
c2hhZGVycy5vcGFxdWVfdHlwZV9pbmRleGluZy5hdG9taWNfY291bnRlci5jb25zdF9saXRlcmFs
X3ZlcnRleCA9IEZBSUwKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcuYXRvbWljX2NvdW50ZXIuY29uc3RfbGl0
ZXJhbF9mcmFnbWVudCA9IEZBSUwKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBkRVFQLUdMRVMzMS5m
dW5jdGlvbmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcuYXRvbWljX2NvdW50ZXIuY29u
c3RfbGl0ZXJhbF9jb21wdXRlID0gRkFJTAorMjcwMyBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xF
UzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5vcGFxdWVfdHlwZV9pbmRleGluZy5hdG9taWNfY291bnRl
ci5jb25zdF9leHByZXNzaW9uX3ZlcnRleCA9IEZBSUwKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBk
RVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhpbmcuYXRvbWlj
X2NvdW50ZXIuY29uc3RfZXhwcmVzc2lvbl9mcmFnbWVudCA9IEZBSUwKKzI3MDMgVlVMS0FOIEFO
RFJPSUQgOiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnNoYWRlcnMub3BhcXVlX3R5cGVfaW5kZXhp
bmcuYXRvbWljX2NvdW50ZXIuY29uc3RfZXhwcmVzc2lvbl9jb21wdXRlID0gRkFJTAorMjcwMyBW
VUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5vcGFxdWVfdHlw
ZV9pbmRleGluZy5hdG9taWNfY291bnRlci4qdW5pZm9ybV92ZXJ0ZXggPSBGQUlMCisyNzAzIFZV
TEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC5zaGFkZXJzLm9wYXF1ZV90eXBl
X2luZGV4aW5nLmF0b21pY19jb3VudGVyLip1bmlmb3JtX2ZyYWdtZW50ID0gRkFJTAorMjcwMyBW
VUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5vcGFxdWVfdHlw
ZV9pbmRleGluZy5hdG9taWNfY291bnRlci4qdW5pZm9ybV9jb21wdXRlID0gRkFJTAorCisvLyBT
U0JPIHN5bmNocm9uaXphdGlvbjoKKzQwOTcgVlVMS0FOIFBJWEVMMk9SWEwgOiBkRVFQLUdMRVMz
MS5mdW5jdGlvbmFsLnN5bmNocm9uaXphdGlvbi5pbl9pbnZvY2F0aW9uLnNzYm9fYWxpYXNfb3Zl
cndyaXRlID0gRkFJTAorCisvLyBGcmFtZWJ1ZmZlciB3aXRob3V0IGF0dGFjaG1lbnRzOgorMzU3
OSBBTkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuZmJvLm5vX2F0dGFjaG1l
bnRzLiogPSBTS0lQCisKKy8vIFN0ZW5jaWwgdGV4dHVyZXMgKHNvbWUgbWlzc2luZyBzdXBwb3J0
IGZvciBiYXNlIGxldmVsKToKKzM2ODMgVlVMS0FOIFBJWEVMMk9SWEwgOiBkRVFQLUdMRVMzMS5m
dW5jdGlvbmFsLnN0ZW5jaWxfdGV4dHVyaW5nLmZvcm1hdC4qID0gRkFJTAorMzY4MyBWVUxLQU4g
UElYRUwyT1JYTCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc3RlbmNpbF90ZXh0dXJpbmcubWlz
Yy5jb21wYXJlX21vZGVfZWZmZWN0ID0gRkFJTAorCisvLyBJbnN0YW5jZWQgbGluZXMgd2l0aCBi
YXNlIHZlcnRleDoKKzQxNjYgVlVMS0FOIFBJWEVMMk9SWEwgOiBkRVFQLUdMRVMzMS5mdW5jdGlv
bmFsLmRyYXdfYmFzZV92ZXJ0ZXguZHJhd19lbGVtZW50c19pbnN0YW5jZWRfYmFzZV92ZXJ0ZXgu
bGluZXMuaW5zdGFuY2VkX2F0dHJpYnV0ZXMgPSBGQUlMCisKKy8vIE5lZWQgdG8gc3VwcG9ydCBu
b24tY29sb3Igd2hlbiBzdGFnaW5nIGltYWdlIHVwZGF0ZXMKKzQwODAgQU5EUk9JRCBWVUxLQU4g
OiBkRVFQLUdMRVMzMS5mdW5jdGlvbmFsLnN0ZW5jaWxfdGV4dHVyaW5nLm1pc2MuYmFzZV9sZXZl
bCA9IFNLSVAKKworLy8gQW5kcm9pZCB1c2VzICJvbGQiIHNhbXBsZXIgcmV3cml0ZSB0aGF0IGRv
ZXNuJ3Qgc3VwcG9ydCBhcnJheSBvZiBhcnJheXMKKzI3MDMgVlVMS0FOIEFORFJPSUQgOiBkRVFQ
LUdMRVMzMS5mdW5jdGlvbmFsLnByb2dyYW1faW50ZXJmYWNlX3F1ZXJ5LnVuaWZvcm0ubG9jYXRp
b24uZGVmYXVsdF9ibG9jay5hcnJheS5hcnJheS4qc2FtcGxlciogPSBTS0lQCisyNzAzIFZVTEtB
TiBBTkRST0lEIDogZEVRUC1HTEVTMzEuZnVuY3Rpb25hbC51bmlmb3JtX2xvY2F0aW9uLm5lc3Rl
ZF9hcnJheS4qc2FtcGxlcjJEKiA9IFNLSVAKKworLy8gRmFpbCBvbiB0ZXN0cyB0aGF0IHVzZSBh
biB1bnN1cHBvcnRlZCBleHRlbnNpb24hCis0MzcxIFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVT
MzEuZnVuY3Rpb25hbC5zaGFkZXJzLmltcGxpY2l0X2NvbnZlcnNpb25zLmVzMzEuYXJpdGhtZXRp
Yy5pbnB1dF9iZWZvcmVfbGl0ZXJhbC5hZGQuaW50X3RvX3ZlYzNfdmVydGV4ID0gRkFJTAorNDM3
MSBWVUxLQU4gQU5EUk9JRCA6IGRFUVAtR0xFUzMxLmZ1bmN0aW9uYWwuc2hhZGVycy5pbXBsaWNp
dF9jb252ZXJzaW9ucy5lczMxLmFyaXRobWV0aWMuaW5wdXRfYmVmb3JlX2xpdGVyYWwuYWRkLmlu
dF90b191dmVjM192ZXJ0ZXggPSBGQUlMCis0MzcxIFNXSUZUU0hBREVSIDogZEVRUC1HTEVTMzEu
ZnVuY3Rpb25hbC5zaGFkZXJzLmltcGxpY2l0X2NvbnZlcnNpb25zLiogPSBGQUlMCisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVx
cF9nbGVzM190ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNhZDlmNDYyZTA1NzJjNGNhYzdhMzllYmRmMTcwOGQzNGJhNmUxMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBw
b3J0L2RlcXBfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0wLDAgKzEsNTk5IEBACisv
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVRUCBjb25mb3Jt
YW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCisvLyBmb3JtYXQgaXM6CisvLyAge0JVRyN9IHtNT0RJ
RklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQsU0tJUH0KKy8v
CisvLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93IGxpc3QsIGNv
bWJpbmVkIHdpdGggYSBsb2dpY2FsIEFORDoKKy8vICBXSU4gWFAgVklTVEEgV0lONyBXSU44IFdJ
TjEwCisvLyAgTUFDIExFT1BBUkQgU05PV0xFT1BBUkQgTElPTiBNT1VOVEFJTkxJT04gTUFWRVJJ
Q0tTIFlPU0VNSVRFIEVMQ0FQSVRBTiBTSUVSUkEgSElHSFNJRVJSQSBNT0pBVkUKKy8vICBMSU5V
WCBDSFJPTUVPUyBBTkRST0lECisvLyAgTlZJRElBIEFNRCBJTlRFTAorLy8gIERFQlVHIFJFTEVB
U0UKKy8vICBEM0Q5IEQzRDExIE9QRU5HTCBHTEVTIFZVTEtBTgorLy8gIE5FWFVTNVggUElYRUwy
T1JYTAorLy8gIFFVQURST1A0MDAKKy8vCisvLworLy8gVEVTVF9OQU1FIGNhbiBiZSBhIHNwZWNp
ZmljIHRlc3QgbmFtZSwgb3IgaGF2ZSBhICcqJyBpbiB0aGUgZW5kLCB3aGljaAorLy8gaW5kaWNh
dGVzIGEgcHJlZml4IG1hdGNoaW5nLgorLy8KKy8vIEV4YW1wbGVzOgorLy8gZmFpbHMgb24gYm90
aCB3aW5kb3dzIGFuZCBtYWMgKGNyYXNoKQorLy8gIDkxNTMwIFdJTiA6IGNvbnRleHRfbG9zdF9y
ZXN0b3JlZCA9IFNLSVAKKy8vICA5MTUzMCBNQUMgOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBT
S0lQCisvLyBmYWlscyBvbiB3aW5kb3dzIHVzaW5nIE5WSURJQSBHUFVzCisvLyAgOTE1MzMgV0lO
IE5WSURJQSA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKKy8vIGZhaWxzIG9uIE5leHVzNVggd2l0
aCBHTEVTIGJhY2tlbmQgKGhhbmdzKQorLy8gIDkxNTMxIE5FWFVTNVggR0xFUyA6IGNvbmZvcm1h
bmNlX21vcmVfKiA9IFNLSVAKKworLy8gRG9uJ3QgcnVuIHRoZXNlIHRlc3RzIGZvciBmYXN0ZXIg
dHVybm92ZXIKKzExMDEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmx1c2hfZmluaXNoLiogPSBT
S0lQCisKKy8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoZXNlIGZhaWwgb24gdGhl
IGJvdHMsIGJ1dCBub3QgbG9jYWxseS4KKzExMDggV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmR5bmFtaWNfbG9vcF9zdHJ1Y3RfYXJyYXlfZnJh
Z21lbnQgPSBGQUlMCisxMDk0IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8yID0gRkFJTAorMTA5NCBXSU4gRDNEMTEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAubG9vcF8yID0gRkFJ
TAorCisvLyBXZSBjYW4ndCBzdXBwb3J0IGRpc3RpbmN0IHRleHR1cmUgc2l6ZXMgaW4gRDNEMTEu
CisxMDk3IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNz
LnNpemUuZGlzdGluY3QgPSBGQUlMCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8g
IFRlbXBvcmFyeSBlbnRyaWVzOiB0aGV5IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGJ1Z3Mg
YXJlIGZpeGVkLgorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vIEZhaWx1cmVzIHJl
bGF0ZWQgdG8gdXNpbmcgYSBkZXB0aC9zdGVuY2lsIGVuYWJsZWQgYmFja2J1ZmZlciBvbiBXaW5k
b3dzIC8gTlZJRElBLgorMjQyOCBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCisy
NDI4IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFu
Y2UubWVkaXVtcC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAorMjQyOCBEM0QxMSBOVklE
SUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmxvd3AuY29tbW9u
X3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKKzI0MjggRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZiby5pbnZhbGlkYXRlLmRlZmF1bHQucmVuZGVyX2FsbCA9IFNLSVAKKzI0Mjgg
RDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5pbnZhbGlkYXRlLmRlZmF1
bHQucmVuZGVyX2RlcHRoX3N0ZW5jaWwgPSBTS0lQCisyNDI4IEQzRDExIE5WSURJQSA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uaW52YWxpZGF0ZS5kZWZhdWx0LmJpbmRfZGVwdGhfc3RlbmNp
bCA9IFNLSVAKKzI0MjggRDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5p
bnZhbGlkYXRlLmRlZmF1bHQuZHJhd19mcmFtZWJ1ZmZlcl9hbGwgPSBTS0lQCisyNDI4IEQzRDEx
IE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uaW52YWxpZGF0ZS5kZWZhdWx0LnJl
YWRfZnJhbWVidWZmZXJfYWxsID0gU0tJUAorMjQyOCBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmludmFsaWRhdGUuZGVmYXVsdC5iaW5kX2FsbCA9IFNLSVAKKzI0Mjgg
RDNEMTEgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmRlZmF1
bHRfcmVuZGVyX3dpdGhfdW5pdHMgPSBTS0lQCisKKy8vIFRlc3RzIHdlcmUgYmVpbmcgaGlkZGVu
IGJ5IGZsYWtpbmVzcyAoYW5nbGVidWcuY29tLzMyNzEpCiszMzI5IEQzRDExIE5WSURJQSA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2suaW50ZXJwb2xhdGlvbi5mbGF0
LiogPSBGQUlMCiszMzI5IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFu
c2Zvcm1fZmVlZGJhY2suYmFzaWNfdHlwZXMuaW50ZXJsZWF2ZWQudHJpYW5nbGVzLiogPSBGQUlM
CiszMzI5IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVl
ZGJhY2suYmFzaWNfdHlwZXMuc2VwYXJhdGUudHJpYW5nbGVzLiogPSBGQUlMCisKKy8vIE1pc3Np
bmcgdGhlIFNhbXBsZUNtcCBpbnN0cnVjdGlvbiBpbiB2ZXJ0ZXggc2hhZGVycy4KKzE0MzUgV0lO
IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMu
dGV4dHVyZWxvZC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJTAorMTQzNSBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJl
bG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM1IFdJTiBEM0QxMSA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVw
cm9qbG9kLnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM1IFdJTiBEM0QxMSA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9q
bG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisKKy8vIFNhbXBsZUNtcCBp
cyBtaXNzaW5nIGdyYWRpZW50L29mZnNldCBwYXJhbWV0ZXJzIGluIEhMU0wuCisxNDM2IFdJTiBE
M0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRl
eHR1cmVsb2Quc2FtcGxlcjJkc2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJl
bG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIEQzRDEx
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVy
ZXByb2psb2Quc2FtcGxlcjJkc2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJl
cHJvamxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQgPSBGQUlMCisxNDM2IFdJTiBE
M0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRl
eHR1cmVncmFkLnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM2IFdJTiBEM0QxMSA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVn
cmFkLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIEQzRDExIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWQu
c2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVydGV4ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5z
YW1wbGVyMmRhcnJheXNoYWRvd19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lOIEQzRDExIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRv
ZmZzZXQuc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKzE0MzYgV0lOIEQzRDExIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRv
ZmZzZXQuc2FtcGxlcjJkc2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBXSU4gRDNEMTEgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3Jh
ZG9mZnNldC5zYW1wbGVyMmRhcnJheXNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM2IFdJTiBEM0Qx
MSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1
cmVncmFkb2Zmc2V0LnNhbXBsZXIyZGFycmF5c2hhZG93X2ZyYWdtZW50ID0gRkFJTAorMTQzNiBX
SU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9u
cy50ZXh0dXJlcHJvamdyYWQuc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKKzE0MzYgV0lO
IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMu
dGV4dHVyZXByb2pncmFkLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKKzE0MzYgV0lO
IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMu
dGV4dHVyZXByb2pncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCisxNDM2
IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rp
b25zLnRleHR1cmVwcm9qZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQgPSBGQUlM
CisKKy8vIERyYXdCdWZmZXJzIHRlc3QgZmFpbGluZyBvbiBEM0QxMS4KKzMyOTggV0lOIEQzRDEx
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuZnJhZ2RhdGEuZHJhd19idWZmZXJzID0g
RkFJTAorCisvLyBUT0RPKGptYWRpbGwsIGN3YWxsZXopOiB0cmlhZ2UgdGhlIGZhaWx1cmVzIGJl
bG93IGludG8gcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgZmFpbHVyZXMKKworLy8gUXVhZHJvIFA0
MDAKKy8vIFRPRE8oam1hZGlsbCk6IE5hcnJvdyB0byBQNDAwIGRldmljZSBvbmx5OiAweDFDQjMu
CisyMjIyIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmZ1bmN0
aW9ucy5jb250cm9sX2Zsb3cucmV0dXJuX2luX25lc3RlZF9sb29wX2ZyYWdtZW50ID0gRkFJTAor
MjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5mdW5jdGlv
bnMuY29udHJvbF9mbG93LnJldHVybl9pbl9uZXN0ZWRfbG9vcF92ZXJ0ZXggPSBGQUlMCisyMjIy
IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5t
aW5fbG9kLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMjIyMiBEM0QxMSBOVklESUEgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQubWluX2xvZC5uZWFyZXN0X25lYXJlc3Qg
PSBGQUlMCisyMjIyIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJl
Lm1pcG1hcC4zZC5taW5fbG9kLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMjIyMiBEM0QxMSBOVklE
SUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuM2QubWluX2xvZC5uZWFy
ZXN0X25lYXJlc3QgPSBGQUlMCisyMjIyIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLm1pbl9sb2QubGluZWFyX25lYXJlc3QgPSBGQUlMCisy
MjIyIEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5j
dWJlLm1pbl9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorCisvLyBGbGFreSBvbiBXaW43IEQz
RDExIE5WSURJQQorNDA3MCBXSU43IEQzRDExIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5yYXN0ZXJpemF0aW9uLmZsYXRzaGFkaW5nLnRyaWFuZ2xlcyA9IEZBSUwKKworLy8gVmVydGV4
IGF0dHJpYnV0ZSBhbGlhc2luZyBpcyBub3Qgc3VwcG9ydGVkIG9uIEQzRAorMzQ2NyBEM0Q5IDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNv
bmQqID0gRkFJTAorMzQ2NyBEM0Q5IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9s
b2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kKiA9IEZBSUwKKzM0NjcgRDNEMTEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZCog
PSBGQUlMCiszNDY3IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2Nh
dGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kKiA9IEZBSUwKKworLy8gV2luZG93cyBhbmQgTGlu
dXggZmFpbHVyZXMKKzEwOTUgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5t
aXBtYXAuMmQucHJvamVjdGVkLiogPSBGQUlMCisKKy8vIFdpbmRvd3Mgb25seSBmYWlsdXJlCisx
MDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhf
c3RlbmNpbC5zdGVuY2lsX2RlcHRoX2Z1bmNzLnN0ZW5jaWxfKiA9IEZBSUwKKzEwOTYgV0lOIEQz
RDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLnN0
ZW5jaWxfb3BzLiogPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC53cml0ZV9tYXNrLiogPSBGQUlMCisxMDk2IFdJ
TiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNp
bC5yYW5kb20uKiA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYg
V0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9j
b2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZl
ci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
X2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3Jj
X2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29u
c3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2
IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRf
YWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZm
ZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBo
YV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2Nv
bnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1
bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlM
CisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFj
dF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJ
TiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVs
dF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWlu
dXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1
ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3Rh
bnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVi
dWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfYWxwaGFf
Y29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRf
Y29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBG
QUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0
cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0g
RkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2
ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYg
V0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJh
Y3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBX
SU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1
bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFj
dF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJ
TiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVs
dF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0
X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlM
CisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNl
X3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4g
RDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRf
ZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9j
b25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBE
M0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9m
cmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29u
ZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQz
RDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2Zy
YW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25l
X21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEw
OTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5m
Ym9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3JfY29u
c3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
YWRkX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYg
V0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9f
c3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2Nv
bG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2Fs
cGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25z
dGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
ID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWlu
dXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWlu
dXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCisxMDk2
IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJv
X3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3Jf
b25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19m
dW5jX2RzdF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9h
bHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFj
dF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJ
TAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJs
ZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50
X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xv
ciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCisxMDk2IFdJTiBE
M0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2Iu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2Fs
cGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2NvbnN0YW50
X2FscGhhID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVy
c2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJ
TAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJs
ZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rf
b25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAorMTA5NiBXSU4g
RDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdi
LmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2Nv
bnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKKzEwOTYgV0lOIEQz
RDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhh
X2NvbnN0YW50X2NvbG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2Nv
bG9yID0gRkFJTAorMTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vf
c3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAor
MTA5NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5k
LmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25l
X21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKKzEw
OTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5yYW5kb20u
KiA9IEZBSUwKKzEwOTYgV0lOIEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuKiA9IEZBSUwKKzExMDEgV0lOIEQzRDExIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZpeGVkMTZfcmVuZGVyX3dpdGhf
dW5pdHMgPSBGQUlMCisxMTAxIFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5
Z29uX29mZnNldC5maXhlZDI0X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAorMTEwMSBXSU4gRDNE
MTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwubGlmZXRpbWUuYXR0YWNoLmRlbGV0ZWRfaW5wdXQu
YnVmZmVyX3ZlcnRleF9hcnJheSA9IEZBSUwKKworLy8gRmFpbGVkIGFmdGVyIGRFUVAgcm9sbAor
NDIzNCBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLmJ1ZmZl
ci5yZW5kZXJidWZmZXJfc3RvcmFnZV9tdWx0aXNhbXBsZSA9IEZBSUwKKworLy8gQmFzaWMgbGlu
ZSB0cmFuc2Zvcm0gZmVlZGJhY2sgdGVzdHMgZmxha3kgb24gV2luZG93cy4KKzI2NzYgV0lOIEQz
RDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5zZm9ybV9mZWVkYmFjay5iYXNpY190eXBl
cy5pbnRlcmxlYXZlZC5saW5lcy4qID0gRkFJTAorMjY3NiBXSU4gRDNEMTEgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLmJhc2ljX3R5cGVzLnNlcGFyYXRlLmxpbmVz
LiogPSBGQUlMCisKKy8vIFZlcnkgc21hbGwgdGhyZXNob2xkIGlzc3VlLiBDb3VsZCB1cHN0cmVh
bSBhIGhpZ2hlciB0b2xlcmFuY2UgdG8gZEVRUC4KKzIzMjMgV0lOIEQzRDExIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5vbmx5X2N1YmUuNyA9IEZBSUwKKwor
Ly8gQmxpdCByZWxhdGVkIGZhaWx1cmVzIG9uIEQzRDExCiszMjk3IFdJTiBEM0QxMSA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29m
X2JvdW5kc19tYWdfcmV2ZXJzZV9kc3RfeCA9IEZBSUwKKzMyOTcgV0lOIEQzRDExIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9jb25zaXN0ZW5jeV9vdXRfb2Zf
Ym91bmRzX21hZ19yZXZlcnNlX2RzdF95ID0gRkFJTAorMzI5NyBXSU4gRDNEMTEgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X291dF9vZl9i
b3VuZHNfbWFnX3JldmVyc2Vfc3JjX3ggPSBGQUlMCiszMjk3IFdJTiBEM0QxMSA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2Jv
dW5kc19tYWdfcmV2ZXJzZV9zcmNfeSA9IEZBSUwKKzMyOTcgV0lOIEQzRDExIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3Qub3V0X29mX2JvdW5kc19saW5lYXIgPSBGQUlMCisz
Mjk3IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm91dF9v
Zl9ib3VuZHNfcmV2ZXJzZV9kc3RfeF9saW5lYXIgPSBGQUlMCiszMjk3IFdJTiBEM0QxMSA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm91dF9vZl9ib3VuZHNfcmV2ZXJzZV9k
c3RfeV9saW5lYXIgPSBGQUlMCiszMjk3IFdJTiBEM0QxMSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mYm8uYmxpdC5yZWN0Lm91dF9vZl9ib3VuZHNfcmV2ZXJzZV9zcmNfZHN0X3hfbGluZWFyID0g
RkFJTAorMzI5NyBXSU4gRDNEMTEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVj
dC5vdXRfb2ZfYm91bmRzX3JldmVyc2Vfc3JjX2RzdF95X2xpbmVhciA9IEZBSUwKKzMyOTcgV0lO
IEQzRDExIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3Qub3V0X29mX2JvdW5k
c19yZXZlcnNlX3NyY194X2xpbmVhciA9IEZBSUwKKzMyOTcgV0lOIEQzRDExIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3Qub3V0X29mX2JvdW5kc19yZXZlcnNlX3NyY195X2xp
bmVhciA9IEZBSUwKKworLy8gV2luZG93cyBBTUQgc3BlY2lmaWMgZmFpbHVyZXMKKzE2MzMgV0lO
IEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZXB0aF9zdGVuY2ls
LmRlcHRoMjRfc3RlbmNpbDhfc2NhbGUgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVwdGhfc3RlbmNpbC5kZXB0aDI0X3N0ZW5jaWw4
X3N0ZW5jaWxfb25seSA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50ZXgyZC5yMTFmX2cxMWZfYjEw
ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8u
Y29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50ZXgyZC5yZzMyZiA9IEZBSUwKKzE2MzMgV0lOIEQz
RDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIu
YmxpdC50ZXgyZC5yZzE2ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50ZXgyZC5yMzJmID0gRkFJ
TAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5y
ZXBlYXRlZF9jbGVhci5ibGl0LnRleDJkLnIxNmYgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLmJsaXQudGV4
MmQucmdiMTZmID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5ibGl0LnRleDJkLnJnOCA9IEZBSUwKKzE2MzMg
V0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRf
Y2xlYXIuYmxpdC50ZXgyZC5yZ2IxMF9hMiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuYmxpdC50ZXgyZC5y
Z2JhMTZmID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5ibGl0LnRleDJkLnI4ID0gRkFJTAorMTYzMyBXSU4g
RDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVh
ci5zYW1wbGUudGV4MmQucmdiYTMyZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnJn
YmExNmYgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC5yMTFmX2cxMWZfYjEwZiA9IEZB
SUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3Iu
cmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnJnMzJmID0gRkFJTAorMTYzMyBXSU4gRDNEMTEg
QU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5zYW1w
bGUudGV4MmQucmcxNmYgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC5yMzJmID0gRkFJ
TAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5y
ZXBlYXRlZF9jbGVhci5zYW1wbGUudGV4MmQucjE2ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFN
RCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxl
LnRleDJkLnJnYjE2ZiA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mYm8uY29sb3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnJnOCA9IEZBSUwK
KzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29sb3IucmVw
ZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLnI4ID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb2xvci5yZXBlYXRlZF9jbGVhci5zYW1wbGUudGV4
MmQucmdiMTBfYTIgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZmJvLnJlbmRlci5zaGFyZWRfY29sb3JidWZmZXJfY2xlYXIudGV4MmRfcmdiMTZmID0g
RkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6
YXRpb24uZmJvLnJib19tdWx0aXNhbXBsZV9tYXguaW50ZXJwb2xhdGlvbi5saW5lcyA9IEZBSUwK
KzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9u
LmZiby5yYm9fbXVsdGlzYW1wbGVfbWF4LnByaW1pdGl2ZXMubGluZXMgPSBGQUlMCisxNjMzIFdJ
TiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3Vi
ZS5mb3JtYXRzLnJnYjEwX2EyX25lYXJlc3RfbWlwbWFwX25lYXJlc3QgPSBGQUlMCisxNjMzIFdJ
TiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuY3Vi
ZS5mb3JtYXRzLnJnYjU2NV9uZWFyZXN0X21pcG1hcF9uZWFyZXN0ID0gRkFJTAorMTYzMyBXSU4g
RDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuZmlsdGVyaW5nLmN1YmUu
Zm9ybWF0cy5yZ2JhMTZmX25lYXJlc3RfbWlwbWFwX25lYXJlc3QgPSBGQUlMCisxNjMzIFdJTiBE
M0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQubWluX2xv
ZC5uZWFyZXN0X25lYXJlc3QgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQubWluX2xvZC5saW5lYXJfbmVhcmVzdCA9IEZB
SUwKKzE2MzMgV0lOIEQzRDExIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1p
cG1hcC4yZC5tYXhfbG9kLm5lYXJlc3RfbmVhcmVzdCA9IEZBSUwKKzE2MzMgV0lOIEQzRDExIEFN
RCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5tYXhfbG9kLmxpbmVh
cl9uZWFyZXN0ID0gRkFJTAorMTYzMyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLjNkLm1pbl9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorMTYz
MyBXSU4gRDNEMTEgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjNk
Lm1pbl9sb2QubGluZWFyX25lYXJlc3QgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuM2QubWF4X2xvZC5uZWFyZXN0X25lYXJl
c3QgPSBGQUlMCisxNjMzIFdJTiBEM0QxMSBBTUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4
dHVyZS5taXBtYXAuM2QubWF4X2xvZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKworLy8gRDNEMTEg
SW50ZWwgc3BlY2lmaWMKKworMTM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC50ZXh0dXJlLnVuaXRzLjJfdW5pdHMub25seV9jdWJlLjYgPSBGQUlMCisxMzQ5IEQzRDExIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5vbmx5XzJk
X2FycmF5LjggPSBGQUlMCisxMzQ5IEQzRDExIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUudW5pdHMuMl91bml0cy5vbmx5XzNkLjggPSBGQUlMCisxMzQ5IEQzRDExIElOVEVM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5taXhlZC4wID0g
RkFJTAorMTM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVu
aXRzLjJfdW5pdHMubWl4ZWQuOCA9IEZBSUwKKzEzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm1peGVkLjkgPSBGQUlMCisxMzQ5IEQz
RDExIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5v
bmx5XzNkLjMgPSBGQUlMCisyMzQ5IEQzRDExIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUubWlwbWFwLjJkLm1pbl9sb2QubmVhcmVzdF9uZWFyZXN0ID0gRkFJTAorMjM0OSBE
M0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5taW5f
bG9kLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAorMjM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4zZC5taW5fbG9kLm5lYXJlc3RfbmVhcmVzdCA9IEZB
SUwKKzIzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuM2QubWluX2xvZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzIzNDkgRDNEMTEgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlXzQu
cHJpbWl0aXZlcy5saW5lcyA9IEZBSUwKKzIzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlXzQuaW50ZXJwb2xhdGlv
bi5saW5lcyA9IEZBSUwKKzIzNDkgRDNEMTEgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
cmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlX21heC5wcmltaXRpdmVzLmxpbmVzID0g
RkFJTAorMjM0OSBEM0QxMSBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5yYXN0ZXJpemF0
aW9uLmZiby5yYm9fbXVsdGlzYW1wbGVfbWF4LmludGVycG9sYXRpb24ubGluZXMgPSBGQUlMCisK
Ky8vIEZhaWxpbmcgVGVzdHMgb24gV2luZG93cyBhbmQgTWFjIG9uIEludGVsIEhEIDYzMAorMjEz
NyBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2Ns
ZWFyLnNhbXBsZS50ZXgyZC4qID0gRkFJTAorMjEzNyBNQUMgSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZmJvLmNvbG9yLnJlcGVhdGVkX2NsZWFyLnNhbXBsZS50ZXgyZC4qID0gRkFJTAor
CisvLyBMaW51eCBvbmx5IGZhaWx1cmVzCisKKy8vIFVCTyB0ZXN0cyB0cmlnZ2VyIGNyYXNoZXMg
d2hlbiBnZXR0aW5nIHRoZSBwcm9ncmFtIGluZm8gbG9nLCBza2lwIHRoZW0gdW50aWwgdGhpcyBp
cyBmaXhlZC4KKzEzMjMgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnViby4q
ID0gU0tJUAorCisxMzIzIExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8u
ZGVwdGguZGVwdGhfdGVzdF9jbGFtcC5kZXB0aF9jb21wb25lbnQzMmYgPSBGQUlMCisxMzIzIExJ
TlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfdGVzdF9j
bGFtcC5kZXB0aDMyZl9zdGVuY2lsOCA9IEZBSUwKKzEzMjMgTElOVVggT1BFTkdMIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5kZXB0aF93cml0ZV9jbGFtcC5kZXB0aF9jb21wb25l
bnQzMmYgPSBGQUlMCisxMzIzIExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uZGVwdGguZGVwdGhfd3JpdGVfY2xhbXAuZGVwdGgzMmZfc3RlbmNpbDggPSBGQUlMCisxMzIz
IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9uLmZiby5y
Ym9fbXVsdGlzYW1wbGVfbWF4LnByaW1pdGl2ZXMucG9pbnRzID0gRkFJTAorCisvLyBXaGlsZSBs
b29wcyB3aXRoICdjb250aW51ZScgc2VlbSBmbGFreSBvbiBMaW51eC4gKFBvc3NpYmx5IGFsbCBH
TCByZW5kZXJlcnMpCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxfY29udGlu
dWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2Nv
bnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLnVuY29uZGl0
aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLnVu
Y29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJh
dGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJhdGlv
bnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9u
cy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25z
LmRvdWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9u
cy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJh
dGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9Q
RU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1f
aXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVY
IE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZv
cm1faXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQg
TElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVf
dW5pZm9ybV9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAor
MTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53
aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9
IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
bG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJ
TAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwK
KzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
d2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisx
MzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX3VuaWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisx
MzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX3VuaWZvcm1faXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlM
CisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3Bz
LndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9
IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
bG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2Zy
YWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250
aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFs
X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9j
b250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRp
bnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRp
bnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51
ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm1peGVkX2JyZWFrX2Nv
bnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm1peGVkX2JyZWFr
X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmNv
bmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0
aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BF
TkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3Rh
bnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQg
TElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hp
bGVfY29uc3RhbnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0g
RkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5s
b29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0g
RkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5s
b29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQg
PSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJh
Z21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29u
dGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm1peGVkX2Jy
ZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMu
Y29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJh
dGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9Q
RU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZv
cm1faXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKKzEzMjQg
TElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hp
bGVfdW5pZm9ybV9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBG
QUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZB
SUwKKzEzMjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBG
QUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfdmVydGV4ID0g
RkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5s
b29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50
ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVf
dmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29u
dGludWVfZnJhZ21lbnQgPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5jb25kaXRp
b25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5j
b25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEzMjQgTElOVVggT1BFTkdMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfZHluYW1pY19pdGVy
YXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMyNCBMSU5VWCBP
UEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5h
bWljX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEz
MjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9f
d2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJTAorMTMy
NCBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193
aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKKzEz
MjQgTElOVVggT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9f
d2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCisx
MzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRv
X3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlM
CisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3Bz
LmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXgg
PSBGQUlMCisxMzI0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9m
cmFnbWVudCA9IEZBSUwKKworLy8gUG9seWdvbiBvZmZzZXQgZmFpbHVyZXMKKzMzMDQgTElOVVgg
T1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZsb2F0MzJfZmFj
dG9yXzFfc2xvcGUgPSBGQUlMCiszMzA0IExJTlVYIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5wb2x5Z29uX29mZnNldC5mbG9hdDMyX3Jlc3VsdF9kZXB0aF9jbGFtcCA9IEZBSUwKKwor
Ly8gRmxha3kgdGVzdAorMzMwNSBMSU5VWCBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5jb21tb24udWludGJpdHN0b2Zsb2F0LnVpbnRfaGln
aHBfdmVydGV4ID0gRkFJTAorCisvLyBMaW51eCBJbnRlbCBzcGVjaWZpYworMjM0OSBMSU5VWCBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVmYXVsdF9mcmFt
ZWJ1ZmZlciogPSBGQUlMCisKKy8vIE1hYyBmYWlsdXJlcyAob3ZlcmJyb2FkIHN1cHByZXNpb25z
KQorMzQ2NiBNQUMgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2Nh
dGlvbi5iaW5kX2FsaWFzaW5nLmNvbmQqID0gU0tJUAorMzQ2NiBNQUMgT1BFTkdMIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25k
KiA9IFNLSVAKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxp
dC5kZWZhdWx0X2ZyYW1lYnVmZmVyLiogPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5vdXRfb2ZfYm91bmRzX3JldmVyc2VfKiA9IEZB
SUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5pbXBsZW1lbnRhdGlv
bl9saW1pdHMuY29tcHJlc3NlZF90ZXh0dXJlX2Zvcm1hdHMgPSBGQUlMCisyMTM3IE1BQyBPUEVO
R0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuaW1wbGVtZW50YXRpb25fbGltaXRzLm51bV9jb21w
cmVzc2VkX3RleHR1cmVfZm9ybWF0cyA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5wcmltaXRpdmVfcmVzdGFydC4qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubGlua2FnZS52YXJ5aW5nLnJ1bGVzLnZl
cnRleF9kZWNsYXJlX2ZyYWdtZW50X3VzZSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3BpbmcudmFsaWQuZnVuY3Rpb25fcGFyYW1ldGVy
X2hpZGVzX3N0cnVjdF90eXBlX2ZyYWdtZW50ID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGluZy52YWxpZC5mdW5jdGlvbl9wYXJhbWV0
ZXJfaGlkZXNfc3RydWN0X3R5cGVfdmVydGV4ID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGluZy52YWxpZC5sb2NhbF9pbnRfdmFyaWFi
bGVfaGlkZXNfc3RydWN0X3R5cGVfZnJhZ21lbnQgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX2ludF92YXJp
YWJsZV9oaWRlc19zdHJ1Y3RfdHlwZV92ZXJ0ZXggPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX3N0cnVjdF92
YXJpYWJsZV9oaWRlc19zdHJ1Y3RfdHlwZV9mcmFnbWVudCA9IEZBSUwKKzIxMzcgTUFDIE9QRU5H
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3BpbmcudmFsaWQubG9jYWxfc3Ry
dWN0X3ZhcmlhYmxlX2hpZGVzX3N0cnVjdF90eXBlX3ZlcnRleCA9IEZBSUwKKzIxMzcgTUFDIE9Q
RU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5pbnRlZ2Vycy5jb21wcmVz
c2VkX3RleHR1cmVfZm9ybWF0c19nZXRmbG9hdCA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zdGF0ZV9xdWVyeS5pbnRlZ2Vycy5jb21wcmVzc2VkX3RleHR1
cmVfZm9ybWF0c19nZXRpbnRlZ2VyID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnN0YXRlX3F1ZXJ5LmludGVnZXJzLmNvbXByZXNzZWRfdGV4dHVyZV9mb3Jt
YXRzX2dldGludGVnZXI2NCA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5kaXRoZXIuZGlzYWJsZWQuKiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsX2RlcHRo
X2Z1bmNzLnN0ZW5jaWxfKiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmFycmF5cy5jb21wbGV4X2V4cHJlc3Npb24uYW5kX3Nob3J0X2NpcmN1
aXRzXyogPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5hcnJheXMuY29tcGxleF9leHByZXNzaW9uLm9yX3Nob3J0X2NpcmN1aXRzXyogPSBGQUlM
CisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5mcmFnZGF0
YS52YWxpZF9zdGF0aWNfaW5kZXggPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5zaG9ydF9jaXJjdWl0LiogPSBGQUlMCiszMzE3IE1B
QyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5vdXRfb2ZfYm91
bmRzX2xpbmVhciA9IEZBSUwKKworLy8gRVRDIGNvbXByZXNzZWQgZm9ybWF0cyBub3Qgc3VwcG9y
dGVkCiszODUzIE1BQyBPUEVOR0wgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBp
LnRleHR1cmUuY29tcHJlc3NlZHRleHN1YmltYWdlKiA9IEZBSUwKKzM4NTMgTUFDIE9QRU5HTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkudGV4dHVyZS5nZW5lcmF0ZW1pcG1h
cCA9IEZBSUwKKworLy8gTWFjIEFNRCBmYWlsdXJlcworMjEzNyBNQUMgT1BFTkdMIEFNRCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5jbGlwcGluZy5wb2ludC53aWRlX3BvaW50X2NsaXAgPSBGQUlM
CisyMTM3IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmNsaXBwaW5nLnBv
aW50LndpZGVfcG9pbnRfY2xpcF92aWV3cG9ydF9jZW50ZXIgPSBGQUlMCisyMTM3IE1BQyBPUEVO
R0wgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmNsaXBwaW5nLnBvaW50LndpZGVfcG9pbnRf
Y2xpcF92aWV3cG9ydF9jb3JuZXIgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3Qub3V0X29mX2JvdW5kc19uZWFyZXN0ID0gRkFJ
TAorMjEzNyBNQUMgT1BFTkdMIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1
aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hwXyogPSBGQUlMCisyMTM3IE1BQyBP
UEVOR0wgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2pl
Y3RlZC4qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIEFNRCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC50cmFuc2Zvcm1fZmVlZGJhY2suKiA9IEZBSUwKKworMzMxNyBNQUMgT1BFTkdMIEFNRCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi5j
ZWlsLiogPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2QuaXNhbXBsZXIzZF92ZXJ0
ZXggPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgQU1EIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2QudXNhbXBsZXIzZF92ZXJ0ZXgg
PSBGQUlMCisKKy8vIE1hYyBJbnRlbCBjcmFzaGVzCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5kaXNjYXJkLmZ1bmN0aW9uX3N0YXRpY19sb29w
X25ldmVyID0gU0tJUAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMuZGlzY2FyZC5keW5hbWljX2xvb3BfbmV2ZXIgPSBTS0lQCisyMTM3IE1BQyBP
UEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5kaXNjYXJkLnN0YXRp
Y19sb29wX25ldmVyID0gU0tJUAorCisvLyBNYWMgSW50ZWwgZmFpbHVyZXMKKzIxMzcgTUFDIE9Q
RU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5jb2xvcl9jbGVhci4qID0gRkFJTAor
Ly8gQWxsIHRoZSBvdXQgb2YgYm91bmRzIHZhcmlhbnRzIGZhaWwuCisyMTM3IE1BQyBPUEVOR0wg
SU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNp
c3RlbmN5X21hZ19yZXZlcnNlX3NyY19kc3RfeSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRF
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVu
Y3lfbWluX3JldmVyc2Vfc3JjX2RzdF95ID0gRkFJTAorLy8gRmFpbHMgZm9yIGFsbCBpbnRlZ2Vy
IGZvcm1hdHMKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLm5vbmVfcmJvX25vbmVfbm9u
ZSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLm5vbmVfdGV4X25vbmVfbm9u
ZSA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5w
b2x5Z29uX29mZnNldC5kZWZhdWx0X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAorMjEzNyBNQUMg
T1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZpeGVk
MTZfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQyNF9yZW5kZXJfd2l0aF91bml0
cyA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi5jb3MuaGlnaHBfKiA9IEZBSUwKKzIx
MzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0
aW5fZnVuY3Rpb25zLnByZWNpc2lvbi5zaW4uaGlnaHBfKiA9IEZBSUwKKzIxMzcgTUFDIE9QRU5H
TCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubG93cC5j
b21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHBy
ZXNzaW9uXzMgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9
IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLmludmFyaWFuY2UubWVkaXVtcC5jb21tb25fc3ViZXhwcmVzc2lvbl8zID0gRkFJTAorMjEz
NyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJp
YW5jZS5oaWdocC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAorMjEzNyBNQUMgT1BFTkdM
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5j
b21tb25fc3ViZXhwcmVzc2lvbl8zID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4ZWxmZXRjaG9m
ZnNldC51c2FtcGxlcjJkX2ZyYWdtZW50ID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4ZWxmZXRj
aG9mZnNldC51c2FtcGxlcjJkX3ZlcnRleCAgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJl
Z3JhZG9mZnNldC51c2FtcGxlcjNkX2ZyYWdtZW50ICA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJ
TlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRl
eHR1cmVncmFkLnVzYW1wbGVyM2RfZnJhZ21lbnQgID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4
dHVyZWdyYWQudXNhbXBsZXJjdWJlX2ZyYWdtZW50ICA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJ
TlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRl
eHR1cmVncmFkLnVzYW1wbGVyY3ViZV92ZXJ0ZXggID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4
dHVyZWxvZC51c2FtcGxlcmN1YmVfZnJhZ21lbnQgID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElO
VEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4
dHVyZWxvZC51c2FtcGxlcmN1YmVfdmVydGV4ICA9IEZBSUwKKzIxMzcgTUFDIE9QRU5HTCBJTlRF
TCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1
cmVwcm9qZ3JhZG9mZnNldC51c2FtcGxlcjNkX2ZyYWdtZW50ICA9IEZBSUwKKzIxMzcgTUFDIE9Q
RU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rp
b25zLnRleHR1cmVwcm9qZ3JhZC51c2FtcGxlcjNkX2ZyYWdtZW50ICA9IEZBSUwKKy8vIEZhaWxz
IHRoZSBpbnRlZ2VyIG5wb3QgY2FzZXMgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5mb3JtYXQuc2l6ZWQuY3ViZS4qID0gRkFJTAor
MjEzNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuc3Bl
Y2lmaWNhdGlvbi5iYXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX2FscGhhID0gRkFJTAorMjEzNyBN
QUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuc3BlY2lmaWNh
dGlvbi5iYXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX2x1bWluYW5jZSA9IEZBSUwKKzIxMzcgTUFD
IE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmljYXRp
b24uYmFzaWNfY29weXRleGltYWdlMmQuY3ViZV9sdW1pbmFuY2VfYWxwaGEgPSBGQUlMCisyMTM3
IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZp
Y2F0aW9uLmJhc2ljX2NvcHl0ZXhpbWFnZTJkLmN1YmVfcmdiID0gRkFJTAorMjEzNyBNQUMgT1BF
TkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi5i
YXNpY19jb3B5dGV4aW1hZ2UyZC5jdWJlX3JnYmEgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5U
RUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLnJhbmRvbV90
ZXhpbWFnZTJkLjJkXzUgPSBGQUlMCisyMTM3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLnRleGltYWdlM2RfKiA9IEZBSUwKKzIx
MzcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNp
ZmljYXRpb24udGV4c3ViaW1hZ2UzZF8qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnViby4qID0gRkFJTAorMjEzNyBNQUMgT1BFTkdMIElOVEVM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4ZWxm
ZXRjaG9mZnNldC4qID0gRkFJTAorCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X21hZyA9IEZBSUwK
KzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5y
ZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfbWFnX3JldmVyc2Vfc3JjX3ggPSBGQUlMCiszMzE3IE1B
QyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFy
ZXN0X2NvbnNpc3RlbmN5X21hZ19yZXZlcnNlX2RzdF94ID0gRkFJTAorMzMxNyBNQUMgT1BFTkdM
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9jb25z
aXN0ZW5jeV9tYWdfcmV2ZXJzZV9zcmNfZHN0X3ggPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5U
RUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3Rl
bmN5X21pbiA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mYm8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfbWluX3JldmVyc2Vfc3JjX3gg
PSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJv
LmJsaXQucmVjdC5uZWFyZXN0X2NvbnNpc3RlbmN5X21pbl9yZXZlcnNlX2RzdF94ID0gRkFJTAor
MzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJl
Y3QubmVhcmVzdF9jb25zaXN0ZW5jeV9taW5fcmV2ZXJzZV9zcmNfZHN0X3ggPSBGQUlMCiszMzE3
IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQucmVjdC5u
ZWFyZXN0X2NvbnNpc3RlbmN5X291dF9vZl9ib3VuZHNfbWFnID0gRkFJTAorMzMxNyBNQUMgT1BF
TkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVhcmVzdF9j
b25zaXN0ZW5jeV9vdXRfb2ZfYm91bmRzX21hZ19yZXZlcnNlX3NyY194ID0gRkFJTAorMzMxNyBN
QUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJlY3QubmVh
cmVzdF9jb25zaXN0ZW5jeV9vdXRfb2ZfYm91bmRzX21hZ19yZXZlcnNlX2RzdF94ID0gRkFJTAor
MzMxNyBNQUMgT1BFTkdMIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LnJl
Y3QubmVhcmVzdF9jb25zaXN0ZW5jeV9vdXRfb2ZfYm91bmRzX21hZ19yZXZlcnNlX3NyY19kc3Rf
eCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uYmxpdC5yZWN0Lm5lYXJlc3RfY29uc2lzdGVuY3lfb3V0X29mX2JvdW5kc19tYWdfcmV2ZXJz
ZV9zcmNfZHN0X3kgPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmRfYXJyYXkuY29tYmluYXRpb25zLmxpbmVhcl9u
ZWFyZXN0XyogPSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS5maWx0ZXJpbmcuMmQuY29tYmluYXRpb25zLmxpbmVhcl9uZWFyZXN0Xyog
PSBGQUlMCiszMzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4
dHVyZS5maWx0ZXJpbmcuM2QuY29tYmluYXRpb25zLmxpbmVhcl9uZWFyZXN0XyogPSBGQUlMCisz
MzE3IE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5maWx0
ZXJpbmcuY3ViZS5jb21iaW5hdGlvbnMubGluZWFyX25lYXJlc3RfKiA9IEZBSUwKKzMzMTcgTUFD
IE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJl
Lm1heF9sZXZlbC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC4yZF9hcnJheS5maWx0ZXJpbmcu
bGluZWFyX25lYXJlc3RfKiA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC4yZC5maWx0ZXJpbmcubGluZWFyX25lYXJlc3Rf
KiA9IEZBSUwKKzMzMTcgTUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLnZlcnRleC4zZC5maWx0ZXJpbmcubGluZWFyX25lYXJlc3RfKiA9IEZBSUwKKzMzMTcg
TUFDIE9QRU5HTCBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnZlcnRleC5j
dWJlLmZpbHRlcmluZy5saW5lYXJfbmVhcmVzdF8qID0gRkFJTAorCiszNTMxIE1BQyBPUEVOR0wg
SU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmludmFsaWRhdGUuZm9ybWF0LnJnYjgg
PSBGQUlMCiszNTMxIE1BQyBPUEVOR0wgSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJv
LnJlbmRlci5yZXNpemUudGV4MmRfcmdiMTZmID0gRkFJTAorMzUzMSBNQUMgT1BFTkdMIElOVEVM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVzaXplLnRleDJkX3JnYjggPSBG
QUlMCisKKy8vIEFuZHJvaWQgb25seSBmYWlsdXJlcworMTQ4NyBBTkRST0lEIEdMRVMgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuY29s
b3IwLnJlZF9oYWxmX2Zsb2F0X29lcyA9IEZBSUwKKzE0ODcgQU5EUk9JRCBHTEVTIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNvbG9y
MC5yZ19oYWxmX2Zsb2F0X29lcyA9IEZBSUwKKzE0ODcgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0ZW5jaWwu
ZGVwdGhfc3RlbmNpbF91bnNpZ25lZF9pbnRfMjRfOCA9IEZBSUwKKzE0ODcgQU5EUk9JRCBHTEVT
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0
dXJlLmRlcHRoLmRlcHRoX3N0ZW5jaWxfdW5zaWduZWRfaW50XzI0XzggPSBGQUlMCisxNDg3IEFO
RFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRl
cmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9jb21wb25lbnRfdW5zaWduZWRfc2hvcnQgPSBGQUlM
CisxNDg3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVu
ZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9jb21wb25lbnRfdW5zaWduZWRfaW50
ID0gRkFJTAorMTk2NCBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwub2NjbHVz
aW9uX3F1ZXJ5LiogPSBGQUlMCisxOTYyIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5jb25kaXRpb25hbF9pbmNsdXNpb24uYmFzaWNfMl9m
cmFnbWVudCA9IEZBSUwKKzE5NjIgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMucHJlcHJvY2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5iYXNpY18yX3ZlcnRl
eCA9IEZBSUwKKzE5NjIgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMucHJlcHJvY2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5kZWZpbmVkX21hY3JvX3VuZGVm
X2ZyYWdtZW50ID0gRkFJTAorMTk2MiBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy5wcmVwcm9jZXNzb3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmRlZmluZWRfbWFj
cm9fdW5kZWZfdmVydGV4ID0gRkFJTAorMTk2MyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4uY29uZGl0aW9uYWxfcmV0dXJuX2Fsd2F5c19mcmFnbWVu
dCA9IEZBSUwKKzE5NjMgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMucmV0dXJuLmNvbmRpdGlvbmFsX3JldHVybl9hbHdheXNfdmVydGV4ID0gRkFJTAorMTk2MyBB
TkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4ub3V0cHV0
X3dyaXRlX2Fsd2F5c19mcmFnbWVudCA9IEZBSUwKKzE5NjMgQU5EUk9JRCBHTEVTIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucmV0dXJuLm91dHB1dF93cml0ZV9hbHdheXNfdmVydGV4
ID0gRkFJTAorMTk2MyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5yZXR1cm4ub3V0cHV0X3dyaXRlX2luX2Z1bmNfYWx3YXlzX2ZyYWdtZW50ID0gRkFJTAorMTk2
MyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4ub3V0
cHV0X3dyaXRlX2luX2Z1bmNfYWx3YXlzX3ZlcnRleCA9IEZBSUwKKzE1MjkgQU5EUk9JRCBHTEVT
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmE4Xyog
PSBGQUlMCisxNTI5IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJl
Lm1pcG1hcC4yZC5nZW5lcmF0ZS5sOF8qID0gRkFJTAorMTUyOSBBTkRST0lEIEdMRVMgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUubGE4OF8qID0gRkFJ
TAorMTUyOSBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBt
YXAuY3ViZS5nZW5lcmF0ZS5hOF8qID0gRkFJTAorMTUyOSBBTkRST0lEIEdMRVMgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5nZW5lcmF0ZS5sOF8qID0gRkFJTAor
MTUyOSBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAu
Y3ViZS5nZW5lcmF0ZS5sYTg4XyogPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2suYmFzaWNfdHlwZXMuaW50ZXJsZWF2ZWQu
KiA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5z
Zm9ybV9mZWVkYmFjay5iYXNpY190eXBlcy5zZXBhcmF0ZS4qID0gRkFJTAorMTUzMSBBTkRST0lE
IEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLmludGVycG9s
YXRpb24uKiA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRyYW5zZm9ybV9mZWVkYmFjay5wb2ludF9zaXplLiogPSBGQUlMCisxNTMxIEFORFJPSUQgR0xF
UyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucG9zaXRpb24uKiA9
IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5zZm9y
bV9mZWVkYmFjay5yYW5kb20uaW50ZXJsZWF2ZWQubGluZXMuNSA9IEZBSUwKKzE1MzEgQU5EUk9J
RCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5zZm9ybV9mZWVkYmFjay5yYW5kb20u
aW50ZXJsZWF2ZWQubGluZXMuOCA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnRyYW5zZm9ybV9mZWVkYmFjay5yYW5kb20uaW50ZXJsZWF2ZWQubGluZXMu
MTAgPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFu
c2Zvcm1fZmVlZGJhY2sucmFuZG9tLmludGVybGVhdmVkLnBvaW50cy42ID0gRkFJTAorMTUzMSBB
TkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJh
bmRvbS5pbnRlcmxlYXZlZC5wb2ludHMuNyA9IEZBSUwKKzE1MzEgQU5EUk9JRCBHTEVTIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnRyYW5zZm9ybV9mZWVkYmFjay5yYW5kb20uaW50ZXJsZWF2ZWQu
dHJpYW5nbGVzLjIgPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucmFuZG9tLnNlcGFyYXRlLmxpbmVzLjQgPSBGQUlMCisx
NTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJh
Y2sucmFuZG9tLnNlcGFyYXRlLmxpbmVzLjYgPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC50cmFuc2Zvcm1fZmVlZGJhY2sucmFuZG9tLnNlcGFyYXRlLmxp
bmVzLjggPSBGQUlMCisxNTMxIEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
cmFuc2Zvcm1fZmVlZGJhY2sucmFuZG9tLnNlcGFyYXRlLnBvaW50cy40ID0gRkFJTAorMTUzMSBB
TkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJh
bmRvbS5zZXBhcmF0ZS50cmlhbmdsZXMuNCA9IEZBSUwKKzI2MjkgQU5EUk9JRCBHTEVTIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmFycmF5X21lbWJlcl9lcXVh
bGl0eV9mcmFnbWVudCA9IFNLSVAKKzI2MjkgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmFycmF5X21lbWJlcl9lcXVhbGl0eV92ZXJ0ZXgg
PSBTS0lQCisyNjI3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
LmFycmF5cy5jb21wbGV4X2V4cHJlc3Npb24uYW5kX3Nob3J0X2NpcmN1aXRzXyogPSBGQUlMCisy
NjI3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmFycmF5cy5j
b21wbGV4X2V4cHJlc3Npb24ub3Jfc2hvcnRfY2lyY3VpdHNfKiA9IEZBSUwKKzI2MjggQU5EUk9J
RCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW5kZXhpbmcubW9yZWR5bmFt
aWMudXNlcl9kZWZpbmVkX2ZuY2FsbF9pbm91dF9wYXJhbWV0ZXJfZnJhZ21lbnQgPSBGQUlMCisy
NjI4IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmluZGV4aW5n
Lm1vcmVkeW5hbWljLnVzZXJfZGVmaW5lZF9mbmNhbGxfaW5vdXRfcGFyYW1ldGVyX3dpdGhfaW5k
ZXhfd2l0aF9zaWRlX2VmZmVjdHNfZnJhZ21lbnQgPSBGQUlMCisyNjI4IEFORFJPSUQgR0xFUyA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmluZGV4aW5nLm1vcmVkeW5hbWljLnVzZXJf
ZGVmaW5lZF9mbmNhbGxfb3V0X3BhcmFtZXRlcl9mcmFnbWVudCA9IEZBSUwKKzI2MjcgQU5EUk9J
RCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuc2hvcnRfY2lyY3Vp
dC4qID0gRkFJTAorCisyNTY3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5yZWRfdW5zaWduZWRfYnl0
ZSA9IEZBSUwKKzI1NjcgQU5EUk9JRCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5j
b21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRoLnJnX3Vuc2lnbmVkX2J5dGUgPSBG
QUlMCisyNTY3IEFORFJPSUQgR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxl
dGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5zdGVuY2lsLnJlZF91bnNpZ25lZF9ieXRlID0gRkFJ
TAorMjU2NyBBTkRST0lEIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRl
bmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNpbC5yZ191bnNpZ25lZF9ieXRlID0gRkFJTAor
CisvLyBOZXh1cyA1eCBmYWlsdXJlcworMzMwOCBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZCogPSBGQUlMCisz
MzA4IE5FWFVTNVggR0xFUyA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRp
b24uYmluZF9hbGlhc2luZy5tYXhfY29uZCogPSBGQUlMCiszMzA4IE5FWFVTNVggR0xFUyA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC5kZWZhdWx0X3Jlc3VsdF9kZXB0aF9j
bGFtcCA9IEZBSUwKKzMzMDggTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnBv
bHlnb25fb2Zmc2V0LmZpeGVkMjRfcmVzdWx0X2RlcHRoX2NsYW1wID0gRkFJTAorMzMwOCBORVhV
UzVYIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJhbmRv
bS5pbnRlcmxlYXZlZC5saW5lcy4zID0gRkFJTAorMzMwOCBORVhVUzVYIEdMRVMgOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudHJhbnNmb3JtX2ZlZWRiYWNrLnJhbmRvbS5pbnRlcmxlYXZlZC50cmlh
bmdsZXMuOCA9IEZBSUwKKzMzMDggTkVYVVM1WCBHTEVTIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRyYW5zZm9ybV9mZWVkYmFjay5yYW5kb20uaW50ZXJsZWF2ZWQudHJpYW5nbGVzLjEwID0gRkFJ
TAorMjMyMiBORVhVUzVYIEdMRVMgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5tZXRh
bW9ycGhpYy4qID0gU0tJUAorCisvLyBTZWVtcyB0byBmYWlsIG9uIGFsbCBkZXNrdG9wIEdMCisy
OTYwIE9QRU5HTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZWZhdWx0X2ZyYW1l
YnVmZmVyLnNyZ2I4X2FscGhhOCA9IEZBSUwKKzI5NjAgT1BFTkdMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZiby5ibGl0LmRlZmF1bHRfZnJhbWVidWZmZXIuc3JnYjhfYWxwaGE4X2xpbmVhcl9v
dXRfb2ZfYm91bmRzX2JsaXRfdG9fZGVmYXVsdCA9IEZBSUwKKzI5NjAgT1BFTkdMIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LmRlZmF1bHRfZnJhbWVidWZmZXIuc3JnYjhfYWxwaGE4
X2xpbmVhcl9zY2FsZV9ibGl0X3RvX2RlZmF1bHQgPSBGQUlMCisyOTYwIE9QRU5HTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mYm8uYmxpdC5kZWZhdWx0X2ZyYW1lYnVmZmVyLnNyZ2I4X2FscGhh
OF9uZWFyZXN0X3NjYWxlX2JsaXRfdG9fZGVmYXVsdCA9IEZBSUwKKworLy8gRmFpbHMgb24gV2lu
ZG93cyArIExpbnV4LgorMjIyMiBPUEVOR0wgTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZiby5jb21wbGV0ZW5lc3Muc2FtcGxlcy5yYm8yX3JibzJfcmJvMCA9IEZBSUwKKzIyMjIgT1BF
TkdMIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnNhbXBs
ZXMucmJvMV9yYm8yX3JibzAgPSBGQUlMCisKKy8vIEdlbmVyYWwgVnVsa2FuIGZhaWx1cmVzCisK
Ky8vIFRlc3RzIGZhaWxpbmcgZHVlIHRvIHRoZSAiZmxhdCIgcXVhbGlmaWVyIGluIHRoZSBzaGFk
ZXI6CiszNjc3IFZVTEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vdXQuYmFz
aWMuaW50LiogPSBGQUlMCiszNjc3IFZVTEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vdXQuYmFzaWMudWludC4qID0gRkFJTAorMzY3NyBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3V0LmFycmF5LmludCogPSBGQUlMCiszNjc3IFZVTEtBTiA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vdXQuYXJyYXkudWludCogPSBGQUlMCiszNjc3
IFZVTEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vdXQucmFuZG9tLiogPSBG
QUlMCisKKy8vIE5WSURJQSBEZXB0aC9TdGVuY2lsIHRleHR1cmVzOgorMzk3MCBWVUxLQU4gTlZJ
RElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5kZXB0aF93cml0ZV9jbGFtcC5k
ZXB0aF9jb21wb25lbnQzMmYgPSBGQUlMCiszOTcwIFZVTEtBTiBOVklESUEgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRlcHRoX3dyaXRlX2NsYW1wLmRlcHRoMzJmX3N0ZW5jaWw4
ID0gRkFJTAorMzk3MCBWVUxLQU4gTlZJRElBIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5k
ZXB0aC5kZXB0aF90ZXN0X2NsYW1wLmRlcHRoX2NvbXBvbmVudDMyZiA9IEZBSUwKKzM5NzAgVlVM
S0FOIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfdGVzdF9j
bGFtcC5kZXB0aDMyZl9zdGVuY2lsOCA9IEZBSUwKKworLy8gUG9seWdvbiBvZmZzZXQ6CiszOTcw
IFZVTEtBTiBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZmxv
YXQzMl9yZXN1bHRfZGVwdGhfY2xhbXAgPSBGQUlMCiszOTcwIFZVTEtBTiBOVklESUEgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZmxvYXQzMl9mYWN0b3JfMV9zbG9wZSA9
IEZBSUwKKworLy8gRmxhdCBzaGFkaW5nOgorMzQzMCBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwucmFzdGVyaXphdGlvbi5mbGF0c2hhZGluZy4qID0gRkFJTAorCisvLyBNaXNjIHVuaW1w
bGVtZW50ZWQ6CisKKy8vIEZhaWx1cmVzIG9uIG5ld2VyIE5WSURJQSBkcml2ZXJzICg0MTEuOTUp
IGFuZCBwYXNzZXMgb24gb2xkZXIgZHJpdmVycyAoMzg4LjE2KS4gIFBhc3NlcyBvbiA0MTguMTIg
b24gTGludXguCisyOTc2IFZVTEtBTiBOVklESUEgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5pbnZhcmlhbmNlLiogPSBGQUlMCisvLyBGYWlscyBvbiA0MzEuMDIgTlZJRElBIGRyaXZl
cgorMzc0OCBWVUxLQU4gV0lOIE5WSURJQSA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29s
b3IucmVwZWF0ZWRfY2xlYXIuc2FtcGxlLnRleDJkLiogPSBGQUlMCisKKy8vIEFuZHJvaWQgVnVs
a2FuIGZhaWx1cmVzCiszMzA2IEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnBvbHlnb25fb2Zmc2V0LiogPSBGQUlMCisyODMwIEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uZmJvLnJib19zaW5nbGVzYW1wbGUucHJpbWl0aXZl
cy5saW5lcyA9IEZBSUwKKzI4MzAgQU5EUk9JRCBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwucmFzdGVyaXphdGlvbi5mYm8udGV4dHVyZV8yZC5wcmltaXRpdmVzLmxpbmVzID0gRkFJTAor
MjgzMCBBTkRST0lEIFZVTEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5yYXN0ZXJpemF0aW9u
LnByaW1pdGl2ZXMubGluZSogPSBGQUlMCisyODA4IEFORFJPSUQgVlVMS0FOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl92YXJpYWJsZS5mcmFnY29vcmRfdyA9IEZBSUwK
KworLy8gUGl4ZWwgZHJpdmVyIGlzc3VlcworNDAyNCBQSVhFTDJPUlhMIFZVTEtBTiA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5kcmF3LnJhbmRvbS41ID0gU0tJUAorNDAyNCBQSVhFTDJPUlhMIFZV
TEtBTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5kcmF3LnJhbmRvbS40OSA9IFNLSVAKKzQwMjQg
UElYRUwyT1JYTCBWVUxLQU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZHJhdy5yYW5kb20uOTYg
PSBGQUlMCisKKy8vIEZpeGVkIGluIGxhdGVyIGRyaXZlciB2ZXJzaW9ucy4KKzI3MjcgVlVMS0FO
IEFORFJPSUQgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX3ZhcmlhYmxl
LnBvaW50Y29vcmQgPSBGQUlMCisKKy8vICBOZXcgb3IgYnJva2VuIGZvcm1hdHMgaW4gRVMgMy4w
LCBtYXkgYmUgaXQgcmVsYXRlcyB0byBWS19JTUFHRV9VU0FHRV9TVE9SQUdFX0JJVAorMzgxNiBW
VUxLQU4gUElYRUwyT1JYTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmlj
YXRpb24udGV4c3RvcmFnZTNkLmZvcm1hdC5yZ2JhMTYqID0gRkFJTAorMzgxNiBWVUxLQU4gUElY
RUwyT1JYTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmljYXRpb24udGV4
c3RvcmFnZTNkLmZvcm1hdC5yZ2IxNiogPSBGQUlMCiszODE2IFZVTEtBTiBQSVhFTDJPUlhMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUuc3BlY2lmaWNhdGlvbi50ZXhzdG9yYWdlM2Qu
Zm9ybWF0LnJnMzIqID0gRkFJTAorCisvLyBGYWlsaW5nIG9uIHRoZSBQaXhlbCAyIGR1ZSB0byBR
dWFsY29tbSBWdWxrYW4gZHJpdmVyCis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuNTQgPSBGQUlM
Cis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29w
cy5yYW5kb20uMzUgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5yYW5kb20uNTYgPSBGQUlMCis0MzQ0IFZVTEtBTiBBTkRST0lE
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5yYW5kb20uNjIgPSBGQUlMCis0
MzQ0IFZVTEtBTiBBTkRST0lEIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5y
YW5kb20uNjggPSBGQUlMCisKKworLy8gRmFpbHMgb25seSB3aXRoIFN3aWZ0U2hhZGVyOgorCisv
LyBUaGVzZSBvbmx5IGZhaWwgZm9yIGEgNTY1IGNvbmZpZworNDAxNiBTV0lGVFNIQURFUiA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVy
LjI3ID0gRkFJTAorNDAxNiBTV0lGVFNIQURFUiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuaW50ZXJhY3Rpb24uYmFzaWNfc2hhZGVyLjgwID0gRkFJTAorCisvLyBGYWlscyBv
biBTd0FOR0xFIGJvdHMKKzQ0MTggU1dJRlRTSEFERVIgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
bmVnYXRpdmVfYXBpLmJ1ZmZlci5mcmFtZWJ1ZmZlcl90ZXh0dXJlX2xheWVyID0gRkFJTApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9k
ZXFwX2tocl9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfa2hyX2dsZXMyX3Rlc3RfZXhwZWN0YXRp
b25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMTQ2YWRkM2ExNTdiNDNhYTQxNjE3NDQ5MWFmODUyMmIxODM4
ZDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2RlcXBfc3VwcG9ydC9kZXFwX2tocl9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTAs
MCArMSwzMyBAQAorLy8gQ29weXJpZ2h0IDIwMTkgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisKKy8vIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgZGVmZWN0aXZl
IGRFUVAgY29uZm9ybWFuY2UgdGVzdHMuIFRoZSBleHBlY3RlZAorLy8gZm9ybWF0IGlzOgorLy8g
IHtCVUcjfSB7TU9ESUZJRVJTfSA6IHtURVNUX05BTUV9ID0ge1BBU1MsRkFJTCxGTEFLWSxUSU1F
T1VULFNLSVB9CisvLworLy8gTU9ESUZJRVJTIGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBi
ZWxvdyBsaXN0LCBjb21iaW5lZCB3aXRoIGEgbG9naWNhbCBBTkQ6CisvLyAgV0lOIFhQIFZJU1RB
IFdJTjcgV0lOOCBXSU4xMAorLy8gIE1BQyBMRU9QQVJEIFNOT1dMRU9QQVJEIExJT04gTU9VTlRB
SU5MSU9OIE1BVkVSSUNLUyBZT1NFTUlURSBFTENBUElUQU4gU0lFUlJBIEhJR0hTSUVSUkEgTU9K
QVZFCisvLyAgTElOVVggQ0hST01FT1MgQU5EUk9JRAorLy8gIE5WSURJQSBBTUQgSU5URUwKKy8v
ICBERUJVRyBSRUxFQVNFCisvLyAgRDNEOSBEM0QxMSBPUEVOR0wgR0xFUyBWVUxLQU4KKy8vICBO
RVhVUzVYIFBJWEVMMk9SWEwKKy8vICBRVUFEUk9QNDAwCisvLworLy8KKy8vIFRFU1RfTkFNRSBj
YW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hp
Y2gKKy8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4KKy8vCisvLyBFeGFtcGxlczoKKy8v
IGZhaWxzIG9uIGJvdGggd2luZG93cyBhbmQgbWFjIChjcmFzaCkKKy8vICA5MTUzMCBXSU4gOiBj
b250ZXh0X2xvc3RfcmVzdG9yZWQgPSBTS0lQCisvLyAgOTE1MzAgTUFDIDogY29udGV4dF9sb3N0
X3Jlc3RvcmVkID0gU0tJUAorLy8gZmFpbHMgb24gd2luZG93cyB1c2luZyBOVklESUEgR1BVcwor
Ly8gIDkxNTMzIFdJTiBOVklESUEgOiBnbF9taW5fdW5pZm9ybXMgPSBGQUlMCisvLyBmYWlscyBv
biBOZXh1czVYIHdpdGggR0xFUyBiYWNrZW5kIChoYW5ncykKKy8vICA5MTUzMSBORVhVUzVYIEdM
RVMgOiBjb25mb3JtYW5jZV9tb3JlXyogPSBTS0lQCisKKy8vIERlcHRoL3N0ZW5jaWwgcmVsYXRl
ZCBmYWlsdXJlcy4KKzM0NTcgVlVMS0FOIDogS0hSLUdMRVMyLmNvcmUuaW50ZXJuYWxmb3JtYXQu
dGV4dHVyZTJkLmRlcHRoX3N0ZW5jaWxfdW5zaWduZWRfaW50XzI0XzhfZGVwdGhfc3RlbmNpbCA9
IEZBSUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvZGVxcF9raHJfZ2xlczMxX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJfZ2xlczMxX3Rl
c3RfZXhwZWN0YXRpb25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2Y3NGNhMGEyZjQ4MTM4NDIyN2JkMTQ3
MzlhOTA5YTg5YzBiOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2tocl9nbGVzMzFfdGVzdF9leHBlY3RhdGlv
bnMudHh0CkBAIC0wLDAgKzEsMTUyIEBACisvLyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlz
dCBvZiBkZWZlY3RpdmUgZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCisvLyBm
b3JtYXQgaXM6CisvLyAge0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxG
QUlMLEZMQUtZLFRJTUVPVVQsU0tJUH0KKy8vCisvLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmlu
YXRpb24gb2YgdGhlIGJlbG93IGxpc3QsIGNvbWJpbmVkIHdpdGggYSBsb2dpY2FsIEFORDoKKy8v
ICBXSU4gWFAgVklTVEEgV0lONyBXSU44IFdJTjEwCisvLyAgTUFDIExFT1BBUkQgU05PV0xFT1BB
UkQgTElPTiBNT1VOVEFJTkxJT04gTUFWRVJJQ0tTIFlPU0VNSVRFIEVMQ0FQSVRBTiBTSUVSUkEg
SElHSFNJRVJSQSBNT0pBVkUKKy8vICBMSU5VWCBDSFJPTUVPUyBBTkRST0lECisvLyAgTlZJRElB
IEFNRCBJTlRFTAorLy8gIERFQlVHIFJFTEVBU0UKKy8vICBEM0Q5IEQzRDExIE9QRU5HTCBHTEVT
IFZVTEtBTgorLy8gIE5FWFVTNVggUElYRUwyT1JYTAorLy8gIFFVQURST1A0MDAKKy8vCisvLwor
Ly8gVEVTVF9OQU1FIGNhbiBiZSBhIHNwZWNpZmljIHRlc3QgbmFtZSwgb3IgaGF2ZSBhICcqJyBp
biB0aGUgZW5kLCB3aGljaAorLy8gaW5kaWNhdGVzIGEgcHJlZml4IG1hdGNoaW5nLgorLy8KKy8v
IEV4YW1wbGVzOgorLy8gZmFpbHMgb24gYm90aCB3aW5kb3dzIGFuZCBtYWMgKGNyYXNoKQorLy8g
IDkxNTMwIFdJTiA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFNLSVAKKy8vICA5MTUzMCBNQUMg
OiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBTS0lQCisvLyBmYWlscyBvbiB3aW5kb3dzIHVzaW5n
IE5WSURJQSBHUFVzCisvLyAgOTE1MzMgV0lOIE5WSURJQSA6IGdsX21pbl91bmlmb3JtcyA9IEZB
SUwKKy8vIGZhaWxzIG9uIE5leHVzNVggd2l0aCBHTEVTIGJhY2tlbmQgKGhhbmdzKQorLy8gIDkx
NTMxIE5FWFVTNVggR0xFUyA6IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAKKworLy8gRm9yIG5v
dyB3ZSBvbmx5IGxvZyBWdWxrYW4gdGVzdCBleHBlY3RhdGlvbnMuIE1vcmUgYmFjay1lbmRzIGNh
biBmb2xsb3cgYXMgd2UgbmVlZCB0aGVtLgorCisKKy8vLy8KKy8vLy8gRmFpbHVyZXMgYmxvY2tp
bmcgYW4gb2ZmaWNpYWwgR0xFUyAzLjEgY29uZm9ybWFuY2UgcnVuIG9uIFN3aWZ0U2hhZGVyCisv
Ly8vCisKKy8vIERpc3BhdGNoIGluZGlyZWN0OgorMzU3MCBWVUxLQU4gOiBLSFItR0xFUzMxLmNv
cmUuY29tcHV0ZV9zaGFkZXIuYnVpbGQtc2VwYXJhYmxlID0gU0tJUAorMzU3MCBWVUxLQU4gOiBL
SFItR0xFUzMxLmNvcmUuY29tcHV0ZV9zaGFkZXIuc3NvLWNvbXB1dGUtcGlwZWxpbmUgPSBTS0lQ
CiszNTcwIFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS5jb21wdXRlX3NoYWRlci5zc28tY2FzZTIg
PSBTS0lQCiszNTcwIFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS5jb21wdXRlX3NoYWRlci5zc28t
Y2FzZTMgPSBTS0lQCisvLyBQcm9ncmFtIFBpcGVsaW5lIE9iamVjdHM6CiszNTcwIFZVTEtBTiA6
IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfYXRvbWljX2NvdW50ZXJzLmFkdmFuY2VkLXVzYWdlLW1h
bnktZHJhdy1jYWxsczIgPSBGQUlMCiszNTcwIFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS5zaGFk
ZXJfYXRvbWljX2NvdW50ZXJzLmFkdmFuY2VkLXVzYWdlLW1hbnktZGlzcGF0Y2hlcyA9IEZBSUwK
KzM1NzAgVlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLnZlcnRleF9hdHRyaWJfYmluZGluZy5iYXNp
Yy11c2FnZSA9IEZBSUwKKzM1NzAgVlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9pbWFn
ZV9sb2FkX3N0b3JlLmFkdmFuY2VkLXNzby1zaW1wbGUgPSBGQUlMCisvLyBTZXBhcmF0ZSBzaGFk
ZXIgb2JqZWN0czoKKzM1NzAgVlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLnNlcHNoYWRlcm9ianMq
ID0gRkFJTAorCisvLyBTaGFkZXIgc3VwcG9ydDoKKzQ0MDIgOiBLSFItR0xFUzMxLmNvcmUuc2hh
ZGVyX2JpdGZpZWxkX29wZXJhdGlvbi5mcmV4cC4qID0gU0tJUAorNDQwMiA6IEtIUi1HTEVTMzEu
Y29yZS5zaGFkZXJfYml0ZmllbGRfb3BlcmF0aW9uLnVhZGRDYXJyeS4qID0gU0tJUAorNDQwMiA6
IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfYml0ZmllbGRfb3BlcmF0aW9uLnVzdWJCb3Jyb3cuKiA9
IFNLSVAKKzQ0MDIgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2JpdGZpZWxkX29wZXJhdGlvbi51
bXVsRXh0ZW5kZWQuKiA9IFNLSVAKKzQ0MDIgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2JpdGZp
ZWxkX29wZXJhdGlvbi5pbXVsRXh0ZW5kZWQuKiA9IFNLSVAKKworLy8gUHJvZ3JhbSBpbnRlcmZh
Y2UgcXVlcnkuCiszNTk2IFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS5wcm9ncmFtX2ludGVyZmFj
ZV9xdWVyeS4qID0gRkFJTAorCisvLyBJbWFnZSByZWxhdGVkIGZhaWx1cmVzCisKKzQzMTUgVlVM
S0FOIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9pbWFnZV9sb2FkX3N0b3JlLmFkdmFuY2VkLW1l
bW9yeS1vcmRlci12c2ZzID0gRkFJTAorCisvLyBVbmltcGxlbWVudGVkIGdsVmFsaWRhdGVDcmVh
dGVTaGFkZXJQcm9ncmFtdjoKKzQxNDYgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX3N0b3JhZ2Vf
YnVmZmVyX29iamVjdC5iYXNpYy1zeW50YXhTU08gPSBGQUlMCis0MTQ2IDogS0hSLUdMRVMzMS5j
b3JlLnZlcnRleF9hdHRyaWJfYmluZGluZy5hZHZhbmNlZC1iaW5kaW5nVXBkYXRlID0gRkFJTAor
NDE0NiA6IEtIUi1HTEVTMzEuY29yZS52ZXJ0ZXhfYXR0cmliX2JpbmRpbmcuYWR2YW5jZWQtbGFy
Z2VTdHJpZGVBbmRPZmZzZXRzTmV3QW5kTGVnYWN5QVBJID0gRkFJTAorCisvLyBGYWlsaW5nIG9u
IFN3aWZ0U2hhZGVyCis0NDE0IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9p
bWFnZV9sb2FkX3N0b3JlLmFkdmFuY2VkLWFsbE1pcHMtY3MgPSBTS0lQCis0NDE0IFNXSUZUU0hB
REVSIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9pbWFnZV9sb2FkX3N0b3JlLmFkdmFuY2VkLWFs
bE1pcHMtZnMgPSBTS0lQCisKKy8vLy8KKy8vLy8gR2VuZXJhbCBWdWxrYW4gZXhwZWN0YXRpb25z
CisvLy8vCisKKy8vIEZyYW1lYnVmZmVyIHdpdGhvdXQgYXR0YWNobWVudHM6CiszNTc5IFZVTEtB
TiA6IEtIUi1HTEVTMzEuY29yZS5mcmFtZWJ1ZmZlcl9ub19hdHRhY2htZW50cy5hcGkgPSBGQUlM
CisKKy8vIEJsZW5kIGVxdWF0aW9uczoKKzM1ODYgVlVMS0FOIDogS0hSLUdMRVMzMS5jb3JlLmJs
ZW5kX2VxdWF0aW9uX2FkdmFuY2VkLiogPSBTS0lQCisKKy8vIExpbWl0czoKKy8vIEdMX01JTi9N
QVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQgbm90IHNldC4KKzM2MDUgVlVMS0FOIDog
S0hSLUdMRVMzMS5jb3JlLnRleHR1cmVfZ2F0aGVyLiogPSBGQUlMCisKKy8vIERpc3BhdGNoIGlu
ZGlyZWN0OgorNDE4OCBWVUxLQU4gOiBLSFItR0xFUzMxLmNvcmUuY29tcHV0ZV9zaGFkZXIucmVz
b3VyY2UtaW1hZ2UgPSBGQUlMCis0MTkxIFZVTEtBTiA6IEtIUi1HTEVTMzEuY29yZS5jb21wdXRl
X3NoYWRlci5yZXNvdXJjZXMtbWF4ID0gRkFJTAorNDE5MiBWVUxLQU4gOiBLSFItR0xFUzMxLmNv
cmUuY29tcHV0ZV9zaGFkZXIucGlwZWxpbmUtcG9zdC14ZmIgPSBGQUlMCiszNzI2IFZVTEtBTiBQ
SVhFTDJPUlhMIDogS0hSLUdMRVMzMS5jb3JlLmNvbXB1dGVfc2hhZGVyLnBpcGVsaW5lLWNvbXB1
dGUtY2hhaW4gPSBGQUlMCis0MTk0IFZVTEtBTiBQSVhFTDJPUlhMIDogS0hSLUdMRVMzMS5jb3Jl
LmNvbXB1dGVfc2hhZGVyLnJlc291cmNlLXVibyA9IEZBSUwKKzQxOTQgVlVMS0FOIFBJWEVMMk9S
WEwgOiBLSFItR0xFUzMxLmNvcmUuY29tcHV0ZV9zaGFkZXIuYnVpbHQtaW4tdmFyaWFibGVzID0g
RkFJTAorCisKKy8vLy8KKy8vLy8gRGVza3RvcCBWdWxrYW4gZXhwZWN0YXRpb25zCisvLy8vCisK
Ky8vIENyYXNoZXMgaW4gbGlibnZpZGlhLWdsdmtzcGlydi5zbywgZml4ZWQgaW4gbmV3ZXIgZHJp
dmVycworNDEyOCBWVUxLQU4gTlZJRElBIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9zdG9yYWdl
X2J1ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5zaXplZEFycmF5TGVuZ3RoLWNzLSotbWF0QyogPSBT
S0lQCis0MTI4IFZVTEtBTiBOVklESUEgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX3N0b3JhZ2Vf
YnVmZmVyX29iamVjdC5hZHZhbmNlZC11bnNpemVkQXJyYXlMZW5ndGgtdnMtKi1tYXRDKiA9IFNL
SVAKKzQxMjggVlVMS0FOIE5WSURJQSA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfc3RvcmFnZV9i
dWZmZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJheUxlbmd0aC1mcy0qLW1hdEMqID0gU0tJ
UAorNDEyOCBWVUxLQU4gTlZJRElBIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9zdG9yYWdlX2J1
ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5zaXplZEFycmF5TGVuZ3RoLWNzLSotc3RydWN0KiA9IFNL
SVAKKzQxMjggVlVMS0FOIE5WSURJQSA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfc3RvcmFnZV9i
dWZmZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJheUxlbmd0aC12cy0qLXN0cnVjdCogPSBT
S0lQCis0MTI4IFZVTEtBTiBOVklESUEgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX3N0b3JhZ2Vf
YnVmZmVyX29iamVjdC5hZHZhbmNlZC11bnNpemVkQXJyYXlMZW5ndGgtZnMtKi1zdHJ1Y3QqID0g
U0tJUAorNDEyOCBWVUxLQU4gTlZJRElBIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9zdG9yYWdl
X2J1ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5zaXplZEFycmF5TGVuZ3RoLWNzLSotbWF0UiogPSBT
S0lQCis0MTI4IFZVTEtBTiBOVklESUEgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX3N0b3JhZ2Vf
YnVmZmVyX29iamVjdC5hZHZhbmNlZC11bnNpemVkQXJyYXlMZW5ndGgtdnMtKi1tYXRSKiA9IFNL
SVAKKzQxMjggVlVMS0FOIE5WSURJQSA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfc3RvcmFnZV9i
dWZmZXJfb2JqZWN0LmFkdmFuY2VkLXVuc2l6ZWRBcnJheUxlbmd0aC1mcy0qLW1hdFIqID0gU0tJ
UAorCisKKy8vLy8KKy8vLy8gQW5kcm9pZCAoaS5lLiBQaXhlbCopIFZ1bGthbiBleHBlY3RhdGlv
bnMKKy8vLy8KKworLy8gQ3Jhc2hlcyBvbiBBbmRyb2lkCis0MTA3IFZVTEtBTiBBTkRST0lEIDog
S0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9zdG9yYWdlX2J1ZmZlcl9vYmplY3QuYWR2YW5jZWQtdW5z
aXplZEFycmF5TGVuZ3RoKiA9IFNLSVAKKworLy8gUGFzc2luZyBvbiByZWNlbnQgZHJpdmVyczoK
KzM3MjYgVlVMS0FOIEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUuc2hhZGVyX2F0b21pY19jb3Vu
dGVycy4qID0gRkFJTAorMzcyNiBWVUxLQU4gQU5EUk9JRCA6IEtIUi1HTEVTMzEuY29yZS5zaGFk
ZXJfYXRvbWljX2NvdW50ZXJzLmFkdmFuY2VkLXVzYWdlLSogPSBTS0lQCisKKy8vIEV4cGxpY2l0
IHVuaWZvcm0gbG9jYXRpb25zOgorNDIxOSBWVUxLQU4gUElYRUwyT1JYTCA6IEtIUi1HTEVTMzEu
Y29yZS5leHBsaWNpdF91bmlmb3JtX2xvY2F0aW9uLnVuaWZvcm0tbG9jLW1peC13aXRoLWltcGxp
Y2l0LW1heCA9IEZBSUwKKzQyMTkgVlVMS0FOIFBJWEVMMk9SWEwgOiBLSFItR0xFUzMxLmNvcmUu
ZXhwbGljaXRfdW5pZm9ybV9sb2NhdGlvbi51bmlmb3JtLWxvYy1taXgtd2l0aC1pbXBsaWNpdC1t
YXgtYXJyYXkgPSBGQUlMCisKKy8vIEZhaWxzIG9uIFBpeGVsMiBhbmQgUGl4ZWwyIFhMCis0MTU5
IFZVTEtBTiBQSVhFTDJPUlhMIDogS0hSLUdMRVMzMS5jb3JlLmRyYXdfaW5kaXJlY3QuYWR2YW5j
ZWQtdHdvUGFzcy10cmFuc2Zvcm1GZWVkYmFjay1lbGVtZW50cyA9IEZBSUwKKzQxNTkgVlVMS0FO
IFBJWEVMMk9SWEwgOiBLSFItR0xFUzMxLmNvcmUuZHJhd19pbmRpcmVjdC5hZHZhbmNlZC10d29Q
YXNzLXRyYW5zZm9ybUZlZWRiYWNrLWFycmF5cyA9IEZBSUwKKworLy8gQW5kcm9pZCB1c2VzICJv
bGQiIHNhbXBsZXIgcmV3cml0ZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBhcnJheSBvZiBhcnJheXMK
KzI3MDMgVlVMS0FOIEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUuYXJyYXlzX29mX2FycmF5cy4q
ID0gU0tJUAorCisvLyBGYWlsaW5nIG9uIEFuZHJvaWQgd2l0aCBTd2lmdFNoYWRlcgorNDMwMCBT
V0lGVFNIQURFUiBBTkRST0lEIDogS0hSLUdMRVMzMS5jb3JlLnNoYWRlcl9pbnRlZ2VyX21peC5t
aXgtYnZlYzQgPSBGQUlMCis0MzAwIFNXSUZUU0hBREVSIEFORFJPSUQgOiBLSFItR0xFUzMxLmNv
cmUuc2hhZGVyX2ludGVnZXJfbWl4Lm1peC1pdmVjNCA9IEZBSUwKKzQzMDAgU1dJRlRTSEFERVIg
QU5EUk9JRCA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfaW50ZWdlcl9taXgubWl4LXV2ZWM0ID0g
RkFJTAorCisvLyBDcmFzaGluZyBvbiBBbmRyb2lkIHdpdGggU3dpZnRTaGFkZXIKKzQxMDggU1dJ
RlRTSEFERVIgQU5EUk9JRCA6IEtIUi1HTEVTMzEuY29yZS5zaGFkZXJfaW1hZ2Vfc2l6ZS5iYXNp
Yy1ub25NUyogPSBTS0lQCis0MTA4IFNXSUZUU0hBREVSIEFORFJPSUQgOiBLSFItR0xFUzMxLmNv
cmUuc2hhZGVyX2ltYWdlX3NpemUuYWR2YW5jZWQtbm9uTVMqID0gU0tJUAorCisvLyBDcmFzaGlu
ZyBvbiBBbmRyb2lkIHdpdGggU3dpZnRTaGFkZXIKKzQxODggU1dJRlRTSEFERVIgQU5EUk9JRCA6
IEtIUi1HTEVTMzEuY29yZS5jb21wdXRlX3NoYWRlci5yZXNvdXJjZS1pbWFnZSA9IFNLSVAKKwor
Ly8gQ3Jhc2hpbmcgb24gQW5kcm9pZCB3aXRoIFN3aWZ0U2hhZGVyCis0MTkwIFNXSUZUU0hBREVS
IEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUuY29tcHV0ZV9zaGFkZXIucGlwZWxpbmUtY29tcHV0
ZS1jaGFpbiA9IFNLSVAKKworLy8gQ3Jhc2hpbmcgb24gQW5kcm9pZCB3aXRoIFN3aWZ0U2hhZGVy
Cis0MjQwIFNXSUZUU0hBREVSIEFORFJPSUQgOiBLSFItR0xFUzMxLmNvcmUudGV4dHVyZV9zdG9y
YWdlX211bHRpc2FtcGxlLkZ1bmN0aW9uYWxUZXN0cy5ibGl0dGluZ19tdWx0aXNhbXBsZWRfZGVw
dGhfYXR0YWNobWVudCA9IFNLSVAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJfZ2xlczNfdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFw
X2tocl9nbGVzM190ZXN0X2V4cGVjdGF0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI5M2Y4MTlmNTQx
YTU0ZWUzOGFiZjUzZjk4NGJlMTYxZjIyYTNmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9raHJfZ2xlczNfdGVz
dF9leHBlY3RhdGlvbnMudHh0CkBAIC0wLDAgKzEsMTgxIEBACisvLyBDb3B5cmlnaHQgMjAxOSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworLy8gVGhpcyBmaWxlIGNv
bnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4
cGVjdGVkCisvLyBmb3JtYXQgaXM6CisvLyAge0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFN
RX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQsU0tJUH0KKy8vCisvLyBNT0RJRklFUlMgY2Fu
IGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93IGxpc3QsIGNvbWJpbmVkIHdpdGggYSBsb2dp
Y2FsIEFORDoKKy8vICBXSU4gWFAgVklTVEEgV0lONyBXSU44IFdJTjEwCisvLyAgTUFDIExFT1BB
UkQgU05PV0xFT1BBUkQgTElPTiBNT1VOVEFJTkxJT04gTUFWRVJJQ0tTIFlPU0VNSVRFIEVMQ0FQ
SVRBTiBTSUVSUkEgSElHSFNJRVJSQSBNT0pBVkUKKy8vICBMSU5VWCBDSFJPTUVPUyBBTkRST0lE
CisvLyAgTlZJRElBIEFNRCBJTlRFTAorLy8gIERFQlVHIFJFTEVBU0UKKy8vICBEM0Q5IEQzRDEx
IE9QRU5HTCBHTEVTIFZVTEtBTgorLy8gIE5FWFVTNVggUElYRUwyT1JYTAorLy8gIFFVQURST1A0
MDAKKy8vCisvLworLy8gVEVTVF9OQU1FIGNhbiBiZSBhIHNwZWNpZmljIHRlc3QgbmFtZSwgb3Ig
aGF2ZSBhICcqJyBpbiB0aGUgZW5kLCB3aGljaAorLy8gaW5kaWNhdGVzIGEgcHJlZml4IG1hdGNo
aW5nLgorLy8KKy8vIEV4YW1wbGVzOgorLy8gZmFpbHMgb24gYm90aCB3aW5kb3dzIGFuZCBtYWMg
KGNyYXNoKQorLy8gIDkxNTMwIFdJTiA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFNLSVAKKy8v
ICA5MTUzMCBNQUMgOiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBTS0lQCisvLyBmYWlscyBvbiB3
aW5kb3dzIHVzaW5nIE5WSURJQSBHUFVzCisvLyAgOTE1MzMgV0lOIE5WSURJQSA6IGdsX21pbl91
bmlmb3JtcyA9IEZBSUwKKy8vIGZhaWxzIG9uIE5leHVzNVggd2l0aCBHTEVTIGJhY2tlbmQgKGhh
bmdzKQorLy8gIDkxNTMxIE5FWFVTNVggR0xFUyA6IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAK
KworLy8gRm9yIG5vdyB3ZSBvbmx5IGxvZyBWdWxrYW4gdGVzdCBleHBlY3RhdGlvbnMuIE1vcmUg
YmFjay1lbmRzIGNhbiBmb2xsb3cgYXMgd2UgbmVlZCB0aGVtLgorCisvLyBEZXB0aC9zdGVuY2ls
IHJlbGF0ZWQgZmFpbHVyZXMgZHVlIHRvIFZ1bGthbiBkcml2ZXIgYnVncy4KKzM2ODMgVlVMS0FO
IEFORFJPSUQgOiBLSFItR0xFUzMucGFja2VkX2RlcHRoX3N0ZW5jaWwuKi5kZXB0aDI0X3N0ZW5j
aWw4ID0gRkFJTAorMzY4MyBWVUxLQU4gQU5EUk9JRCA6IEtIUi1HTEVTMy5wYWNrZWRfZGVwdGhf
c3RlbmNpbC4qLmRlcHRoMzJmX3N0ZW5jaWw4ID0gRkFJTAorCisvLyBDb3B5VGV4SW1hZ2UgY29u
dmVyc2lvbiBmYWlsaW5nIGR1ZSB0byBWdWxrYW4gdmFsaWRhdGlvbiBlcnJvciByZTogVUlOVC9T
SU5ULWRlc2NyaXB0b3Itc2V0IGlzc3VlLgorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90
ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZV9hcnJheV90ZXh0dXJlMmQgPSBG
QUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5y
ZXF1aXJlZC50ZXh0dXJlX2FycmF5X2N1YmVtYXBfbmVneCA9IEZBSUwKKzM4MTcgVlVMS0FOIDog
S0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmVfYXJy
YXlfY3ViZW1hcF9uZWd5ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhf
aW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZV9hcnJheV9jdWJlbWFwX25lZ3ogPSBG
QUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5y
ZXF1aXJlZC50ZXh0dXJlX2FycmF5X2N1YmVtYXBfcG9zeCA9IEZBSUwKKzM4MTcgVlVMS0FOIDog
S0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmVfYXJy
YXlfY3ViZW1hcF9wb3N5ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhf
aW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZV9hcnJheV9jdWJlbWFwX3Bvc3ogPSBG
QUlMCisKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25z
LnJlcXVpcmVkLnRleHR1cmUyZF90ZXh0dXJlMmQgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1H
TEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlMmRfY3ViZW1h
cF9uZWd4ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29u
dmVyc2lvbnMucmVxdWlyZWQudGV4dHVyZTJkX2N1YmVtYXBfbmVneSA9IEZBSUwKKzM4MTcgVlVM
S0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1
cmUyZF9jdWJlbWFwX25lZ3ogPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3Rl
eF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlMmRfY3ViZW1hcF9wb3N4ID0gRkFJ
TAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVx
dWlyZWQudGV4dHVyZTJkX2N1YmVtYXBfcG9zeSA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdM
RVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUyZF9jdWJlbWFw
X3Bvc3ogPSBGQUlMCisKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2Nv
bnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfbmVneF90ZXh0dXJlMmQgPSBGQUlMCiszODE3IFZV
TEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJl
bWFwX25lZ3hfY3ViZW1hcF9uZWd4ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29w
eV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd4X2N1YmVtYXBfbmVn
eSA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNp
b25zLnJlcXVpcmVkLmN1YmVtYXBfbmVneF9jdWJlbWFwX25lZ3ogPSBGQUlMCiszODE3IFZVTEtB
TiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFw
X25lZ3hfY3ViZW1hcF9wb3N4ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90
ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd4X2N1YmVtYXBfcG9zeSA9
IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25z
LnJlcXVpcmVkLmN1YmVtYXBfbmVneF9jdWJlbWFwX3Bvc3ogPSBGQUlMCiszODE3IFZVTEtBTiA6
IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25l
Z3lfdGV4dHVyZTJkID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1h
Z2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd5X2N1YmVtYXBfbmVneCA9IEZBSUwK
KzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVp
cmVkLmN1YmVtYXBfbmVneV9jdWJlbWFwX25lZ3kgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1H
TEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3lfY3Vi
ZW1hcF9uZWd6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2Vf
Y29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd5X2N1YmVtYXBfcG9zeCA9IEZBSUwKKzM4
MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVk
LmN1YmVtYXBfbmVneV9jdWJlbWFwX3Bvc3kgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVT
My5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3lfY3ViZW1h
cF9wb3N6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29u
dmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9uZWd6X3RleHR1cmUyZCA9IEZBSUwKKzM4MTcgVlVM
S0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVt
YXBfbmVnel9jdWJlbWFwX25lZ3ggPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5
X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3pfY3ViZW1hcF9uZWd5
ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lv
bnMucmVxdWlyZWQuY3ViZW1hcF9uZWd6X2N1YmVtYXBfbmVneiA9IEZBSUwKKzM4MTcgVlVMS0FO
IDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBf
bmVnel9jdWJlbWFwX3Bvc3ggPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3Rl
eF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX25lZ3pfY3ViZW1hcF9wb3N5ID0g
RkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMu
cmVxdWlyZWQuY3ViZW1hcF9uZWd6X2N1YmVtYXBfcG9zeiA9IEZBSUwKKzM4MTcgVlVMS0FOIDog
S0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9z
eF90ZXh0dXJlMmQgPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFn
ZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3hfY3ViZW1hcF9uZWd4ID0gRkFJTAor
MzgxNyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWly
ZWQuY3ViZW1hcF9wb3N4X2N1YmVtYXBfbmVneSA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdM
RVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeF9jdWJl
bWFwX25lZ3ogPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9j
b252ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3hfY3ViZW1hcF9wb3N4ID0gRkFJTAorMzgx
NyBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQu
Y3ViZW1hcF9wb3N4X2N1YmVtYXBfcG9zeSA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMz
LmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeF9jdWJlbWFw
X3Bvc3ogPSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252
ZXJzaW9ucy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3lfdGV4dHVyZTJkID0gRkFJTAorMzgxNyBWVUxL
QU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1h
cF9wb3N5X2N1YmVtYXBfbmVneCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlf
dGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeV9jdWJlbWFwX25lZ3kg
PSBGQUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9u
cy5yZXF1aXJlZC5jdWJlbWFwX3Bvc3lfY3ViZW1hcF9uZWd6ID0gRkFJTAorMzgxNyBWVUxLQU4g
OiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9w
b3N5X2N1YmVtYXBfcG9zeCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4
X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zeV9jdWJlbWFwX3Bvc3kgPSBG
QUlMCiszODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5y
ZXF1aXJlZC5jdWJlbWFwX3Bvc3lfY3ViZW1hcF9wb3N6ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBL
SFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N6
X3RleHR1cmUyZCA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdl
X2NvbnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zel9jdWJlbWFwX25lZ3ggPSBGQUlMCisz
ODE3IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJl
ZC5jdWJlbWFwX3Bvc3pfY3ViZW1hcF9uZWd5ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xF
UzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N6X2N1YmVt
YXBfbmVneiA9IEZBSUwKKzM4MTcgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2Nv
bnZlcnNpb25zLnJlcXVpcmVkLmN1YmVtYXBfcG9zel9jdWJlbWFwX3Bvc3ggPSBGQUlMCiszODE3
IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC5j
dWJlbWFwX3Bvc3pfY3ViZW1hcF9wb3N5ID0gRkFJTAorMzgxNyBWVUxLQU4gOiBLSFItR0xFUzMu
Y29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQuY3ViZW1hcF9wb3N6X2N1YmVtYXBf
cG9zeiA9IEZBSUwKKworLy8gZ2xDb3B5VGV4SW1hZ2UgZnJvbSAzRCB0ZXh0dXJlcyBpcyBmYWls
aW5nIGFuZCBnZXR0aW5nIHRoZSBmb2xsb3dpbmcgVnVsa2FuIFZhbGlkYXRpb24gZXJyb3JzOgor
Ly8KKy8vICBJbWFnZVZpZXcgbXVzdCBub3QgYmUgYSAyRCBvciAyREFycmF5IHZpZXcgb2YgYSAz
RCBpbWFnZS4gVGhlIFZ1bGthbiBzcGVjIHN0YXRlczoKKy8vICBpbWFnZVZpZXcgbXVzdCBub3Qg
YmUgMkQgb3IgMkQgYXJyYXkgaW1hZ2UgdmlldyBjcmVhdGVkIGZyb20gYSAzRCBpbWFnZQorLy8K
KzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVp
cmVkLnRleHR1cmUzZF90ZXh0dXJlMmQgPSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5j
b3B5X3RleF9pbWFnZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlM2RfY3ViZW1hcF9uZWd4
ID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lv
bnMucmVxdWlyZWQudGV4dHVyZTNkX2N1YmVtYXBfbmVneSA9IEZBSUwKKzM4MzYgVlVMS0FOIDog
S0hSLUdMRVMzLmNvcHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUzZF9j
dWJlbWFwX25lZ3ogPSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5jb3B5X3RleF9pbWFn
ZV9jb252ZXJzaW9ucy5yZXF1aXJlZC50ZXh0dXJlM2RfY3ViZW1hcF9wb3N4ID0gRkFJTAorMzgz
NiBWVUxLQU4gOiBLSFItR0xFUzMuY29weV90ZXhfaW1hZ2VfY29udmVyc2lvbnMucmVxdWlyZWQu
dGV4dHVyZTNkX2N1YmVtYXBfcG9zeSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLmNv
cHlfdGV4X2ltYWdlX2NvbnZlcnNpb25zLnJlcXVpcmVkLnRleHR1cmUzZF9jdWJlbWFwX3Bvc3og
PSBGQUlMCisKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3Jl
Y3RhbmdsZS5yOCA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMu
dmFyaWVkX3JlY3RhbmdsZS5yZzggPSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNr
ZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmc4aSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hS
LUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZzh1aSA9IEZBSUwKKzM4MzYg
VlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2I4ID0g
RkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRfcmVjdGFu
Z2xlLnJnYmE4ID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52
YXJpZWRfcmVjdGFuZ2xlLnJnYmE4aSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBh
Y2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhOHVpID0gRkFJTAorCiszODM2IFZVTEtB
TiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmcxNmkgPSBGQUlM
CiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUu
cmcxNnVpID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJp
ZWRfcmVjdGFuZ2xlLnJnMTZmID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2Vk
X3BpeGVscy52YXJpZWRfcmVjdGFuZ2xlLnJnYjE2ZiA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hS
LUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhMTZpID0gRkFJTAorMzgz
NiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRfcmVjdGFuZ2xlLnJnYmEx
NnVpID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRf
cmVjdGFuZ2xlLnJnYmExNmYgPSBGQUlMCisKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tl
ZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZzMyaSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hS
LUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZzMydWkgPSBGQUlMCiszODM2
IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmczMmYg
PSBGQUlMCiszODM2IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0
YW5nbGUucmdiYTMyaSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhl
bHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhMzJ1aSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdM
RVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhMzJmID0gRkFJTAorCiszODM2
IFZVTEtBTiA6IEtIUi1HTEVTMy5wYWNrZWRfcGl4ZWxzLnZhcmllZF9yZWN0YW5nbGUucmdiID0g
RkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRfcmVjdGFu
Z2xlLnJnYjU2NSA9IEZBSUwKKzM4MzYgVlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMu
dmFyaWVkX3JlY3RhbmdsZS5yZ2I1X2ExID0gRkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMu
cGFja2VkX3BpeGVscy52YXJpZWRfcmVjdGFuZ2xlLnNyZ2I4X2FscGhhOCA9IEZBSUwKKzM4MzYg
VlVMS0FOIDogS0hSLUdMRVMzLnBhY2tlZF9waXhlbHMudmFyaWVkX3JlY3RhbmdsZS5yZ2JhID0g
RkFJTAorMzgzNiBWVUxLQU4gOiBLSFItR0xFUzMucGFja2VkX3BpeGVscy52YXJpZWRfcmVjdGFu
Z2xlLnJnYmE0ID0gRkFJTAorCisKKy8vIEZhaWxzIG9ubHkgd2l0aCBTd2lmdFNoYWRlcjoKKwor
Ly8gVGhlc2Ugb25seSBmYWlsIG9uIEFuZHJvaWQKKzQwMTkgU1dJRlRTSEFERVIgOiBLSFItR0xF
UzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDJ4NF9keW5hbWljX2xvb3Bf
d3JpdGVfc3RhdGljX3JlYWRfZnJhZ21lbnQgPSBGQUlMCis0MDE5IFNXSUZUU0hBREVSIDogS0hS
LUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5tYXQyeDRfZHluYW1pY19s
b29wX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBL
SFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDJ4NF9keW5hbWlj
X3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtI
Ui1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0Mng0X2R5bmFtaWNf
d3JpdGVfc3RhdGljX3JlYWRfdmVydGV4ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtIUi1H
TEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0Mng0X3N0YXRpY19sb29w
X3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6IEtI
Ui1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0Mng0X3N0YXRpY19s
b29wX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFERVIgOiBL
SFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDJ4NF9zdGF0aWNf
d3JpdGVfZHluYW1pY19sb29wX3JlYWRfZnJhZ21lbnQgPSBGQUlMCis0MDE5IFNXSUZUU0hBREVS
IDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5tYXQyeDRfc3Rh
dGljX3dyaXRlX2R5bmFtaWNfbG9vcF9yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFE
RVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDJ4NF9z
dGF0aWNfd3JpdGVfZHluYW1pY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURF
UiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0Mng0X3N0
YXRpY193cml0ZV9keW5hbWljX3JlYWRfdmVydGV4ID0gRkFJTAorNDAxOSBTV0lGVFNIQURFUiA6
IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0Mng0X3N0YXRp
Y193cml0ZV9zdGF0aWNfbG9vcF9yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lGVFNIQURF
UiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0Mng0X3N0
YXRpY193cml0ZV9zdGF0aWNfbG9vcF9yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFE
RVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDN4NF9k
eW5hbWljX2xvb3Bfd3JpdGVfc3RhdGljX3JlYWRfZnJhZ21lbnQgPSBGQUlMCis0MDE5IFNXSUZU
U0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5tYXQz
eDRfZHluYW1pY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJ
RlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1h
dDN4NF9keW5hbWljX3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lG
VFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0
M3g0X2R5bmFtaWNfd3JpdGVfc3RhdGljX3JlYWRfdmVydGV4ID0gRkFJTAorNDAxOSBTV0lGVFNI
QURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0M3g0
X3N0YXRpY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lG
VFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0
M3g0X3N0YXRpY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJ
RlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1h
dDN4NF9zdGF0aWNfd3JpdGVfZHluYW1pY19sb29wX3JlYWRfZnJhZ21lbnQgPSBGQUlMCis0MDE5
IFNXSUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlw
dC5tYXQzeDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfbG9vcF9yZWFkX3ZlcnRleCA9IEZBSUwKKzQw
MTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2Ny
aXB0Lm1hdDN4NF9zdGF0aWNfd3JpdGVfZHluYW1pY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAx
OSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3Jp
cHQubWF0M3g0X3N0YXRpY193cml0ZV9keW5hbWljX3JlYWRfdmVydGV4ID0gRkFJTAorNDAxOSBT
V0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQu
bWF0M3g0X3N0YXRpY193cml0ZV9zdGF0aWNfbG9vcF9yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAx
OSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3Jp
cHQubWF0M3g0X3N0YXRpY193cml0ZV9zdGF0aWNfbG9vcF9yZWFkX3ZlcnRleCA9IEZBSUwKKzQw
MTkgU1dJRlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2Ny
aXB0Lm1hdDRfZHluYW1pY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAor
NDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJz
Y3JpcHQubWF0NF9keW5hbWljX2xvb3Bfd3JpdGVfc3RhdGljX3JlYWRfdmVydGV4ID0gRkFJTAor
NDAxOSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJz
Y3JpcHQubWF0NF9keW5hbWljX3dyaXRlX3N0YXRpY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAx
OSBTV0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3Jp
cHQubWF0NF9keW5hbWljX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJ
RlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1h
dDRfc3RhdGljX2xvb3Bfd3JpdGVfc3RhdGljX3JlYWRfZnJhZ21lbnQgPSBGQUlMCis0MDE5IFNX
SUZUU0hBREVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5t
YXQ0X3N0YXRpY19sb29wX3dyaXRlX3N0YXRpY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJ
RlRTSEFERVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1h
dDRfc3RhdGljX3dyaXRlX2R5bmFtaWNfbG9vcF9yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBT
V0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQu
bWF0NF9zdGF0aWNfd3JpdGVfZHluYW1pY19sb29wX3JlYWRfdmVydGV4ID0gRkFJTAorNDAxOSBT
V0lGVFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQu
bWF0NF9zdGF0aWNfd3JpdGVfZHluYW1pY19yZWFkX2ZyYWdtZW50ID0gRkFJTAorNDAxOSBTV0lG
VFNIQURFUiA6IEtIUi1HTEVTMy5zaGFkZXJzLmluZGV4aW5nLm1hdHJpeF9zdWJzY3JpcHQubWF0
NF9zdGF0aWNfd3JpdGVfZHluYW1pY19yZWFkX3ZlcnRleCA9IEZBSUwKKzQwMTkgU1dJRlRTSEFE
RVIgOiBLSFItR0xFUzMuc2hhZGVycy5pbmRleGluZy5tYXRyaXhfc3Vic2NyaXB0Lm1hdDRfc3Rh
dGljX3dyaXRlX3N0YXRpY19sb29wX3JlYWRfZnJhZ21lbnQgPSBGQUlMCis0MDE5IFNXSUZUU0hB
REVSIDogS0hSLUdMRVMzLnNoYWRlcnMuaW5kZXhpbmcubWF0cml4X3N1YnNjcmlwdC5tYXQ0X3N0
YXRpY193cml0ZV9zdGF0aWNfbG9vcF9yZWFkX3ZlcnRleCA9IEZBSUwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQmxvYkNhY2hlVGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTEJs
b2JDYWNoZVRlc3QuY3BwCmluZGV4IDBmMzc2Y2VjZTRhYmY0OGE1ZWY5MTg4MDc2MzE0ZjI2NGYx
OGMyZGUuLjhjZjg0OTljMzM4MjgwMGNhOWU0N2NjOWE5NDc5OTdjZDlkNWY3YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQmxvYkNh
Y2hlVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90
ZXN0cy9FR0xCbG9iQ2FjaGVUZXN0LmNwcApAQCAtNiwxMSArNiwxNCBAQAogLy8gRUdMQmxvYkNh
Y2hlVGVzdDoKIC8vICAgVW5pdCB0ZXN0cyBmb3IgdGhlIEVHTF9BTkRST0lEX2Jsb2JfY2FjaGUg
ZXh0ZW5zaW9uLgogCisvLyBNdXN0IGJlIGluY2x1ZGVkIGZpcnN0IHRvIHByZXZlbnQgZXJyb3Jz
IHdpdGggIk5vbmUiLgorI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCisKICNpbmNs
dWRlIDxtYXA+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9uL1BhY2tlZEVu
dW1zLmgiCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgogI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgogI2luY2x1
ZGUgInV0aWwvRUdMV2luZG93LmgiCiAKQEAgLTIwLDE4ICsyMywzMSBAQCBjb25zdGV4cHIgY2hh
ciBrRUdMRXh0TmFtZVtdID0gIkVHTF9BTkRST0lEX2Jsb2JfY2FjaGUiOwogCiBlbnVtIGNsYXNz
IENhY2hlT3BSZXN1bHQKIHsKLSAgICBTRVRfU1VDQ0VTUywKLSAgICBHRVRfTk9UX0ZPVU5ELAot
ICAgIEdFVF9NRU1PUllfVE9PX1NNQUxMLAotICAgIEdFVF9TVUNDRVNTLAorICAgIFNldFN1Y2Nl
c3MsCisgICAgR2V0Tm90Rm91bmQsCisgICAgR2V0TWVtb3J5VG9vU21hbGwsCisgICAgR2V0U3Vj
Y2VzcywKKyAgICBWYWx1ZU5vdFNldCwKKyAgICBFbnVtQ291bnQKK307CiAKLSAgICBWQUxVRV9O
T1RfU0VULAorYW5nbGU6OlBhY2tlZEVudW1NYXA8Q2FjaGVPcFJlc3VsdCwgc3RkOjpzdHJpbmc+
IGtDYWNoZU9wVG9TdHJpbmcgPSB7CisgICAge0NhY2hlT3BSZXN1bHQ6OlNldFN1Y2Nlc3MsICJT
ZXRTdWNjZXNzIn0sCisgICAge0NhY2hlT3BSZXN1bHQ6OkdldE5vdEZvdW5kLCAiR2V0Tm90Rm91
bmQifSwKKyAgICB7Q2FjaGVPcFJlc3VsdDo6R2V0TWVtb3J5VG9vU21hbGwsICJHZXRNZW1vcnlU
b29TbWFsbCJ9LAorICAgIHtDYWNoZU9wUmVzdWx0OjpHZXRTdWNjZXNzLCAiR2V0U3VjY2VzcyJ9
LAorICAgIHtDYWNoZU9wUmVzdWx0OjpWYWx1ZU5vdFNldCwgIlZhbHVlTm90U2V0In0sCiB9Owog
CitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgQ2FjaGVPcFJlc3Vs
dCByZXN1bHQpCit7CisgICAgcmV0dXJuIG9zIDw8IGtDYWNoZU9wVG9TdHJpbmdbcmVzdWx0XTsK
K30KKwogbmFtZXNwYWNlCiB7CiBzdGQ6Om1hcDxzdGQ6OnZlY3Rvcjx1aW50OF90Piwgc3RkOjp2
ZWN0b3I8dWludDhfdD4+IGdBcHBsaWNhdGlvbkNhY2hlOwotQ2FjaGVPcFJlc3VsdCBnTGFzdENh
Y2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0OjpWQUxVRV9OT1RfU0VUOworQ2FjaGVPcFJlc3Vs
dCBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0OjpWYWx1ZU5vdFNldDsKIAogdm9p
ZCBTZXRCbG9iKGNvbnN0IHZvaWQgKmtleSwgRUdMc2l6ZWlBTkRST0lEIGtleVNpemUsIGNvbnN0
IHZvaWQgKnZhbHVlLCBFR0xzaXplaUFORFJPSUQgdmFsdWVTaXplKQogewpAQCAtNDMsNyArNTks
NyBAQCB2b2lkIFNldEJsb2IoY29uc3Qgdm9pZCAqa2V5LCBFR0xzaXplaUFORFJPSUQga2V5U2l6
ZSwgY29uc3Qgdm9pZCAqdmFsdWUsIEVHTHNpegogCiAgICAgZ0FwcGxpY2F0aW9uQ2FjaGVba2V5
VmVjXSA9IHZhbHVlVmVjOwogCi0gICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3Vs
dDo6U0VUX1NVQ0NFU1M7CisgICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6
U2V0U3VjY2VzczsKIH0KIAogRUdMc2l6ZWlBTkRST0lEIEdldEJsb2IoY29uc3Qgdm9pZCAqa2V5
LApAQCAtNTcsMTggKzczLDE4IEBAIEVHTHNpemVpQU5EUk9JRCBHZXRCbG9iKGNvbnN0IHZvaWQg
KmtleSwKICAgICBhdXRvIGVudHJ5ID0gZ0FwcGxpY2F0aW9uQ2FjaGUuZmluZChrZXlWZWMpOwog
ICAgIGlmIChlbnRyeSA9PSBnQXBwbGljYXRpb25DYWNoZS5lbmQoKSkKICAgICB7Ci0gICAgICAg
IGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OkdFVF9OT1RfRk9VTkQ7CisgICAg
ICAgIGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OkdldE5vdEZvdW5kOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoZW50cnktPnNlY29uZC5zaXplKCkgPD0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pih2YWx1ZVNpemUpKQogICAgIHsKICAgICAgICAgbWVtY3B5KHZh
bHVlLCBlbnRyeS0+c2Vjb25kLmRhdGEoKSwgZW50cnktPnNlY29uZC5zaXplKCkpOwotICAgICAg
ICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0OjpHRVRfU1VDQ0VTUzsKKyAgICAg
ICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6R2V0U3VjY2VzczsKICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZ0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJl
c3VsdDo6R0VUX01FTU9SWV9UT09fU01BTEw7CisgICAgICAgIGdMYXN0Q2FjaGVPcFJlc3VsdCA9
IENhY2hlT3BSZXN1bHQ6OkdldE1lbW9yeVRvb1NtYWxsOwogICAgIH0KIAogICAgIHJldHVybiBl
bnRyeS0+c2Vjb25kLnNpemUoKTsKQEAgLTkwLDYgKzEwNiw4IEBAIGNsYXNzIEVHTEJsb2JDYWNo
ZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAgICAgICAgIG1IYXNCbG9iQ2FjaGUgICAgICA9IElz
RUdMRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoZGlzcGxheSwga0VHTEV4dE5hbWUpOwogICAgIH0K
IAorICAgIHZvaWQgdGVzdFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBnQXBwbGljYXRpb25DYWNoZS5j
bGVhcigpOyB9CisKICAgICBib29sIHByb2dyYW1CaW5hcnlBdmFpbGFibGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzIHx8IElzR0xFeHRlbnNp
b25FbmFibGVkKCJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IikpOwpAQCAtMTQ2LDI2ICsxNjQs
MjYgQEAgdm9pZCBtYWluKCkKICAgICB7CiAgICAgICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0oa1ZlcnRleFNoYWRlclNyYywga0ZyYWdtZW50U2hhZGVyU3JjKTsKICAgICAgICAg
QVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKLSAgICAgICAgRVhQRUNUX0VRKENhY2hlT3BSZXN1bHQ6
OlNFVF9TVUNDRVNTLCBnTGFzdENhY2hlT3BSZXN1bHQpOwotICAgICAgICBnTGFzdENhY2hlT3BS
ZXN1bHQgPSBDYWNoZU9wUmVzdWx0OjpWQUxVRV9OT1RfU0VUOworICAgICAgICBFWFBFQ1RfRVEo
Q2FjaGVPcFJlc3VsdDo6U2V0U3VjY2VzcywgZ0xhc3RDYWNoZU9wUmVzdWx0KTsKKyAgICAgICAg
Z0xhc3RDYWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6VmFsdWVOb3RTZXQ7CiAKICAgICAg
ICAgLy8gQ29tcGlsZSB0aGUgc2FtZSBzaGFkZXIgYWdhaW4sIHNvIGl0IHdvdWxkIHRyeSB0byBy
ZXRyaWV2ZSBpdCBmcm9tIHRoZSBjYWNoZQogICAgICAgICBwcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0oa1ZlcnRleFNoYWRlclNyYywga0ZyYWdtZW50U2hhZGVyU3JjKTsKICAgICAgICAgQVNTRVJU
X05FKDB1LCBwcm9ncmFtKTsKLSAgICAgICAgRVhQRUNUX0VRKENhY2hlT3BSZXN1bHQ6OkdFVF9T
VUNDRVNTLCBnTGFzdENhY2hlT3BSZXN1bHQpOwotICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQg
PSBDYWNoZU9wUmVzdWx0OjpWQUxVRV9OT1RfU0VUOworICAgICAgICBFWFBFQ1RfRVEoQ2FjaGVP
cFJlc3VsdDo6R2V0U3VjY2VzcywgZ0xhc3RDYWNoZU9wUmVzdWx0KTsKKyAgICAgICAgZ0xhc3RD
YWNoZU9wUmVzdWx0ID0gQ2FjaGVPcFJlc3VsdDo6VmFsdWVOb3RTZXQ7CiAKICAgICAgICAgLy8g
Q29tcGlsZSBhbm90aGVyIHNoYWRlciwgd2hpY2ggc2hvdWxkIGNyZWF0ZSBhIG5ldyBlbnRyeQog
ICAgICAgICBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNyYzIsIGtGcmFn
bWVudFNoYWRlclNyYzIpOwogICAgICAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotICAgICAg
ICBFWFBFQ1RfRVEoQ2FjaGVPcFJlc3VsdDo6U0VUX1NVQ0NFU1MsIGdMYXN0Q2FjaGVPcFJlc3Vs
dCk7Ci0gICAgICAgIGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OlZBTFVFX05P
VF9TRVQ7CisgICAgICAgIEVYUEVDVF9FUShDYWNoZU9wUmVzdWx0OjpTZXRTdWNjZXNzLCBnTGFz
dENhY2hlT3BSZXN1bHQpOworICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVz
dWx0OjpWYWx1ZU5vdFNldDsKIAogICAgICAgICAvLyBDb21waWxlIHRoZSBmaXJzdCBzaGFkZXIg
YWdhaW4sIHdoaWNoIHNob3VsZCBzdGlsbCByZXNpZGUgaW4gdGhlIGNhY2hlCiAgICAgICAgIHBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU3JjLCBrRnJhZ21lbnRTaGFkZXJT
cmMpOwogICAgICAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotICAgICAgICBFWFBFQ1RfRVEo
Q2FjaGVPcFJlc3VsdDo6R0VUX1NVQ0NFU1MsIGdMYXN0Q2FjaGVPcFJlc3VsdCk7Ci0gICAgICAg
IGdMYXN0Q2FjaGVPcFJlc3VsdCA9IENhY2hlT3BSZXN1bHQ6OlZBTFVFX05PVF9TRVQ7CisgICAg
ICAgIEVYUEVDVF9FUShDYWNoZU9wUmVzdWx0OjpHZXRTdWNjZXNzLCBnTGFzdENhY2hlT3BSZXN1
bHQpOworICAgICAgICBnTGFzdENhY2hlT3BSZXN1bHQgPSBDYWNoZU9wUmVzdWx0OjpWYWx1ZU5v
dFNldDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0LmNwcAppbmRleCAwMGM4ODM3M2IxNWE3OTViODZkOGFiNmYyNmRkYjg2YWY4YTU2
NTIyLi4wNGZmZGMyYmY0ODM3YTZkMjBkZGQwNzBhYjU5YWEwNWNhZTAwMzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRD
b21wYXRpYmlsaXR5VGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwCkBAIC05LDM3ICs5
LDE3MiBAQAogLy8gICBzdXJmYWNlIGNvbmZpZ3MuIElmIHRoZSBjb25maWdzIGFyZSBjb21wYXRp
YmxlLCBpdCBjaGVja3MgdGhhdCBzaW1wbGUKIC8vICAgcmVuZGVyaW5nIHdvcmtzLCBvdGhlcndp
c2UgaXQgY2hlY2tzIGFuIGVycm9yIGlzIGdlbmVyYXRlZCBvbmUgTWFrZUN1cnJlbnQuCiAvLwot
Ly8gT25seSBydW4gdGhlIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCBvbiByZWxlYXNlIGJ1
aWxkcy4gIFRoZSBleGVjdXRpb24gdGltZSBvZiB0aGlzIHRlc3QKLS8vIHNjYWxlcyB3aXRoIHRo
ZSBzcXVhcmUgb2YgdGhlIG51bWJlciBvZiBjb25maWdzIGV4cG9zZWQgYW5kIGNhbiB0aW1lIG91
dCBpbiBzb21lIGRlYnVnIGJ1aWxkcy4KLS8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMjEyMQogCiAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCiAjaW5j
bHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKICNpbmNsdWRlICJ0ZXN0X3V0
aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIKICNpbmNsdWRlICJ1dGlsL09TV2luZG93Lmgi
CisjaW5jbHVkZSAidXRpbC9yYW5kb21fdXRpbHMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwogCiBuYW1lc3BhY2UKIHsKKy8vIFRoZSBvbmx5IGNvbmZpZ3Mgd2l0aCAxNi1iaXRzIGZvciBl
YWNoIG9mIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBoYSBpcyBHTF9SR0JBMTZGCitib29sIElz
UkdCQTE2RkNvbmZpZyhFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyBjb25maWcpCit7Cisg
ICAgRUdMaW50IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhOworICAgIGVnbEdldENvbmZpZ0F0dHJp
YihkaXNwbGF5LCBjb25maWcsIEVHTF9SRURfU0laRSwgJnJlZCk7CisgICAgZWdsR2V0Q29uZmln
QXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0dSRUVOX1NJWkUsICZncmVlbik7CisgICAgZWds
R2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0JMVUVfU0laRSwgJmJsdWUpOwor
ICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9BTFBIQV9TSVpFLCAm
YWxwaGEpOworICAgIHJldHVybiAoKHJlZCA9PSAxNikgJiYgKGdyZWVuID09IDE2KSAmJiAoYmx1
ZSA9PSAxNikgJiYgKGFscGhhID09IDE2KSk7Cit9CisKK2Jvb2wgSXNSR0IxMF9BMkNvbmZpZyhF
R0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyBjb25maWcpCit7CisgICAgRUdMaW50IHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhOworICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25m
aWcsIEVHTF9SRURfU0laRSwgJnJlZCk7CisgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXks
IGNvbmZpZywgRUdMX0dSRUVOX1NJWkUsICZncmVlbik7CisgICAgZWdsR2V0Q29uZmlnQXR0cmli
KGRpc3BsYXksIGNvbmZpZywgRUdMX0JMVUVfU0laRSwgJmJsdWUpOworICAgIGVnbEdldENvbmZp
Z0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9BTFBIQV9TSVpFLCAmYWxwaGEpOworICAgIHJl
dHVybiAoKHJlZCA9PSAxMCkgJiYgKGdyZWVuID09IDEwKSAmJiAoYmx1ZSA9PSAxMCkgJiYgKGFs
cGhhID09IDIpKTsKK30KKworLy8gUXVlcmllcyBFR0wgY29uZmlnIHRvIGRldGVybWluZSBpZiBt
dWx0aXNhbXBsZWQgb3Igbm90Citib29sIElzTXVsdGlzYW1wbGVkQ29uZmlnKEVHTERpc3BsYXkg
ZGlzcGxheSwgRUdMQ29uZmlnIGNvbmZpZykKK3sKKyAgICBFR0xpbnQgc2FtcGxlcyA9IDA7Cisg
ICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX1NBTVBMRVMsICZzYW1w
bGVzKTsKKyAgICByZXR1cm4gKHNhbXBsZXMgPiAxKTsKK30KKworYm9vbCBTaG91bGRTa2lwQ29u
ZmlnKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnIGNvbmZpZywgYm9vbCB3aW5kb3dTdXJm
YWNlVGVzdCkKK3sKKyAgICAvLyBTa2lwIG11bHRpc2FtcGxlZCBjb25maWd1cmF0aW9ucyBkdWUg
dG8gdGVzdCBpbnN0YWJpbGl0eS4KKyAgICBpZiAoSXNNdWx0aXNhbXBsZWRDb25maWcoZGlzcGxh
eSwgY29uZmlnKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLWNvbnN0IEVHTGludCBjb250ZXh0
QXR0cmlic1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9ORX07Cisg
ICAgLy8gRGlzYWJsZSBSR0JBMTZGL1JHQjEwX0EyIG9uIEFuZHJvaWQgZHVlIHRvIE9TV2luZG93
IG9uIEFuZHJvaWQgbm90IHByb3ZpZGluZyBjb21wYXRpYmxlCisgICAgLy8gd2luZG93cyAoaHR0
cDovL2FuZ2xlYnVnLmNvbS8zMTU2KQorICAgIGlmIChJc0FuZHJvaWQoKSkKKyAgICB7CisgICAg
ICAgIGlmIChJc1JHQjEwX0EyQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICBpZiAoSXNSR0JBMTZGQ29uZmlnKGRpc3BsYXksIGNvbmZp
ZykpCisgICAgICAgICAgICByZXR1cm4gd2luZG93U3VyZmFjZVRlc3Q7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCitzdGQ6OnZlY3RvcjxFR0xDb25maWc+IEdldENvbmZpZ3MoRUdM
RGlzcGxheSBkaXNwbGF5KQoreworICAgIGludCBuQ29uZmlncyA9IDA7CisgICAgaWYgKGVnbEdl
dENvbmZpZ3MoZGlzcGxheSwgbnVsbHB0ciwgMCwgJm5Db25maWdzKSAhPSBFR0xfVFJVRSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6Y2VyciA8PCAiRUdMQ29udGV4dENvbXBhdGlibGl0eVRlc3Q6IGVn
bEdldENvbmZpZ3MgZXJyb3JcbiI7CisgICAgICAgIHJldHVybiB7fTsKKyAgICB9CisgICAgaWYg
KG5Db25maWdzID09IDApCisgICAgeworICAgICAgICBzdGQ6OmNlcnIgPDwgIkVHTENvbnRleHRD
b21wYXRpYmxpdHlUZXN0OiBubyBjb25maWdzXG4iOworICAgICAgICByZXR1cm4ge307CisgICAg
fQorCisgICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBjb25maWdzOworCisgICAgaW50IG5SZXR1
cm5lZENvbmZpZ3MgPSAwOworICAgIGNvbmZpZ3MucmVzaXplKG5Db25maWdzKTsKKyAgICBpZiAo
ZWdsR2V0Q29uZmlncyhkaXNwbGF5LCBjb25maWdzLmRhdGEoKSwgbkNvbmZpZ3MsICZuUmV0dXJu
ZWRDb25maWdzKSAhPSBFR0xfVFJVRSkKKyAgICB7CisgICAgICAgIHN0ZDo6Y2VyciA8PCAiRUdM
Q29udGV4dENvbXBhdGlibGl0eVRlc3Q6IGVnbEdldENvbmZpZ3MgZXJyb3JcbiI7CisgICAgICAg
IHJldHVybiB7fTsKKyAgICB9CisgICAgaWYgKG5Db25maWdzICE9IG5SZXR1cm5lZENvbmZpZ3Mp
CisgICAgeworICAgICAgICBzdGQ6OmNlcnIgPDwgIkVHTENvbnRleHRDb21wYXRpYmxpdHlUZXN0
OiBlZ2xHZXRDb25maWdzIHJldHVybmVkIHdyb25nIGNvdW50XG4iOworICAgICAgICByZXR1cm4g
e307CisgICAgfQorCisgICAgcmV0dXJuIGNvbmZpZ3M7Cit9CisKK1BsYXRmb3JtUGFyYW1ldGVy
cyBGcm9tUmVuZGVyZXIoRUdMaW50IHJlbmRlcmVyKQoreworICAgIHJldHVybiBXaXRoTm9GaXh0
dXJlKFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMocmVuZGVy
ZXIpKSk7Cit9CisKK3N0ZDo6c3RyaW5nIEVHTENvbmZpZ05hbWUoRUdMRGlzcGxheSBkaXNwbGF5
LCBFR0xDb25maWcgY29uZmlnKQoreworICAgIEVHTGludCByZWQ7CisgICAgZWdsR2V0Q29uZmln
QXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX1JFRF9TSVpFLCAmcmVkKTsKKyAgICBFR0xpbnQg
Z3JlZW47CisgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0dSRUVO
X1NJWkUsICZncmVlbik7CisgICAgRUdMaW50IGJsdWU7CisgICAgZWdsR2V0Q29uZmlnQXR0cmli
KGRpc3BsYXksIGNvbmZpZywgRUdMX0JMVUVfU0laRSwgJmJsdWUpOworICAgIEVHTGludCBhbHBo
YTsKKyAgICBlZ2xHZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfQUxQSEFfU0la
RSwgJmFscGhhKTsKKyAgICBFR0xpbnQgZGVwdGg7CisgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRp
c3BsYXksIGNvbmZpZywgRUdMX0RFUFRIX1NJWkUsICZkZXB0aCk7CisgICAgRUdMaW50IHN0ZW5j
aWw7CisgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX1NURU5DSUxf
U0laRSwgJnN0ZW5jaWwpOworICAgIEVHTGludCBzYW1wbGVzOworICAgIGVnbEdldENvbmZpZ0F0
dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9TQU1QTEVTLCAmc2FtcGxlcyk7CisKKyAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisgICAgaWYgKHJlZCA+IDApCisgICAgeworICAgICAgICBz
dHJzdHIgPDwgIlIiIDw8IHJlZDsKKyAgICB9CisgICAgaWYgKGdyZWVuID4gMCkKKyAgICB7Cisg
ICAgICAgIHN0cnN0ciA8PCAiRyIgPDwgZ3JlZW47CisgICAgfQorICAgIGlmIChibHVlID4gMCkK
KyAgICB7CisgICAgICAgIHN0cnN0ciA8PCAiQiIgPDwgYmx1ZTsKKyAgICB9CisgICAgaWYgKGFs
cGhhID4gMCkKKyAgICB7CisgICAgICAgIHN0cnN0ciA8PCAiQSIgPDwgYWxwaGE7CisgICAgfQor
ICAgIGlmIChkZXB0aCA+IDApCisgICAgeworICAgICAgICBzdHJzdHIgPDwgIkQiIDw8IGRlcHRo
OworICAgIH0KKyAgICBpZiAoc3RlbmNpbCA+IDApCisgICAgeworICAgICAgICBzdHJzdHIgPDwg
IlMiIDw8IHN0ZW5jaWw7CisgICAgfQorICAgIGlmIChzYW1wbGVzID4gMCkKKyAgICB7CisgICAg
ICAgIHN0cnN0ciA8PCAiTVMiIDw8IHNhbXBsZXM7CisgICAgfQorICAgIHJldHVybiBzdHJzdHIu
c3RyKCk7CiB9CiAKLWNsYXNzIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCA6IHB1YmxpYyBB
TkdMRVRlc3QKK2NvbnN0IHN0ZDo6YXJyYXk8RUdMaW50LCAzPiBrQ29udGV4dEF0dHJpYnMgPSB7
RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVHTF9OT05FfTsKKworY2xhc3MgRUdMQ29u
dGV4dENvbXBhdGliaWxpdHlUZXN0IDogcHVibGljIEFOR0xFVGVzdEJhc2UsIHB1YmxpYyB0ZXN0
aW5nOjpUZXN0CiB7CiAgIHB1YmxpYzoKLSAgICBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3Qo
KSA6IG1EaXNwbGF5KDApIHt9CisgICAgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0KEVHTGlu
dCByZW5kZXJlcikKKyAgICAgICAgOiBBTkdMRVRlc3RCYXNlKEZyb21SZW5kZXJlcihyZW5kZXJl
cikpLCBtUmVuZGVyZXIocmVuZGVyZXIpCisgICAge30KIAotICAgIHZvaWQgdGVzdFNldFVwKCkg
b3ZlcnJpZGUKKyAgICB2b2lkIFNldFVwKCkgZmluYWwKICAgICB7CisgICAgICAgIEFOR0xFVGVz
dEJhc2U6OkFOR0xFVGVzdFNldFVwKCk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldFBsYXRm
b3JtRGlzcGxheUVYVCAhPSBudWxscHRyKTsKIAotICAgICAgICBFR0xpbnQgZGlzcGF0dHJzW10g
PSB7RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIo
KSwgRUdMX05PTkV9OworICAgICAgICBFR0xpbnQgZGlzcGF0dHJzW10gPSB7RUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfQU5HTEUsIG1SZW5kZXJlciwgRUdMX05PTkV9OwogICAgICAgICBtRGlzcGxh
eSAgICAgICAgICAgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoCiAgICAgICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihFR0xfREVGQVVM
VF9ESVNQTEFZKSwgZGlzcGF0dHJzKTsKICAgICAgICAgQVNTRVJUX1RSVUUobURpc3BsYXkgIT0g
RUdMX05PX0RJU1BMQVkpOwpAQCAtNTcsNDIgKzE5MiwxNCBAQCBjbGFzcyBFR0xDb250ZXh0Q29t
cGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAgICAgICAgIEFTU0VSVF9UUlVFKG5D
b25maWdzID09IG5SZXR1cm5lZENvbmZpZ3MpOwogICAgIH0KIAotICAgIHZvaWQgdGVzdFRlYXJE
b3duKCkgb3ZlcnJpZGUKKyAgICB2b2lkIFRlYXJEb3duKCkgZmluYWwKICAgICB7CiAgICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19DT05URVhUKTsKICAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKKyAgICAg
ICAgQU5HTEVUZXN0QmFzZTo6QU5HTEVUZXN0VGVhckRvd24oKTsKICAgICB9CiAKICAgcHJvdGVj
dGVkOgotICAgIC8vIFF1ZXJpZXMgRUdMIGNvbmZpZyB0byBkZXRlcm1pbmUgaWYgbXVsdGlzYW1w
bGVkIG9yIG5vdAotICAgIGJvb2wgaXNNdWx0aXNhbXBsZWRDb25maWcoRUdMQ29uZmlnIGNvbmZp
ZykKLSAgICB7Ci0gICAgICAgIEVHTGludCBzYW1wbGVzID0gMDsKLSAgICAgICAgZWdsR2V0Q29u
ZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9TQU1QTEVTLCAmc2FtcGxlcyk7Ci0gICAg
ICAgIHJldHVybiAoc2FtcGxlcyA+IDEpOwotICAgIH0KLQotICAgIC8vIFRoZSBvbmx5IGNvbmZp
Z3Mgd2l0aCAxNi1iaXRzIGZvciBlYWNoIG9mIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBoYSBp
cyBHTF9SR0JBMTZGCi0gICAgYm9vbCBpc1JHQkExNkZDb25maWcoRUdMQ29uZmlnIGNvbmZpZykK
LSAgICB7Ci0gICAgICAgIEVHTGludCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsKLSAgICAgICAg
ZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9SRURfU0laRSwgJnJlZCk7
Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnLCBFR0xfR1JFRU5f
U0laRSwgJmdyZWVuKTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25m
aWcsIEVHTF9CTFVFX1NJWkUsICZibHVlKTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1E
aXNwbGF5LCBjb25maWcsIEVHTF9BTFBIQV9TSVpFLCAmYWxwaGEpOwotICAgICAgICByZXR1cm4g
KChyZWQgPT0gMTYpICYmIChncmVlbiA9PSAxNikgJiYgKGJsdWUgPT0gMTYpICYmIChhbHBoYSA9
PSAxNikpOwotICAgIH0KLQotICAgIGJvb2wgaXNSR0IxMF9BMkNvbmZpZyhFR0xDb25maWcgY29u
ZmlnKQotICAgIHsKLSAgICAgICAgRUdMaW50IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhOwotICAg
ICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGNvbmZpZywgRUdMX1JFRF9TSVpFLCAm
cmVkKTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9H
UkVFTl9TSVpFLCAmZ3JlZW4pOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXks
IGNvbmZpZywgRUdMX0JMVUVfU0laRSwgJmJsdWUpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRy
aWIobURpc3BsYXksIGNvbmZpZywgRUdMX0FMUEhBX1NJWkUsICZhbHBoYSk7Ci0gICAgICAgIHJl
dHVybiAoKHJlZCA9PSAxMCkgJiYgKGdyZWVuID09IDEwKSAmJiAoYmx1ZSA9PSAxMCkgJiYgKGFs
cGhhID09IDIpKTsKLSAgICB9Ci0KICAgICBib29sIGFyZUNvbmZpZ3NDb21wYXRpYmxlKEVHTENv
bmZpZyBjMSwgRUdMQ29uZmlnIGMyLCBFR0xpbnQgc3VyZmFjZUJpdCkKICAgICB7CiAgICAgICAg
IEVHTGludCBjb2xvckJ1ZmZlclR5cGUxLCBjb2xvckJ1ZmZlclR5cGUyOwpAQCAtMTQzLDEwICsy
NTAsOSBAQCBjbGFzcyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0CiAgICAgICAgIE9TV2luZG93ICpvc1dpbmRvdyA9IE9TV2luZG93OjpOZXcoKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUob3NXaW5kb3cgIT0gbnVsbHB0cik7CiAgICAgICAgIG9zV2luZG93LT5p
bml0aWFsaXplKCJFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QiLCA1MDAsIDUwMCk7Ci0gICAg
ICAgIG9zV2luZG93LT5zZXRWaXNpYmxlKHRydWUpOwogCiAgICAgICAgIEVHTENvbnRleHQgY29u
dGV4dCA9Ci0gICAgICAgICAgICBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBjb250ZXh0Q29u
ZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJpYnMpOworICAgICAgICAgICAgZWdsQ3Jl
YXRlQ29udGV4dChtRGlzcGxheSwgY29udGV4dENvbmZpZywgRUdMX05PX0NPTlRFWFQsIGtDb250
ZXh0QXR0cmlicy5kYXRhKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShjb250ZXh0ICE9IEVHTF9O
T19DT05URVhUKTsKIAogICAgICAgICBFR0xTdXJmYWNlIHdpbmRvdyA9CkBAIC0xNzYsNyArMjgy
LDcgQEAgY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0IDogcHVibGljIEFOR0xFVGVz
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29tcGF0aWJsZSkgY29u
c3QKICAgICB7CiAgICAgICAgIEVHTENvbnRleHQgY29udGV4dCA9Ci0gICAgICAgICAgICBlZ2xD
cmVhdGVDb250ZXh0KG1EaXNwbGF5LCBjb250ZXh0Q29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29u
dGV4dEF0dHJpYnMpOworICAgICAgICAgICAgZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgY29u
dGV4dENvbmZpZywgRUdMX05PX0NPTlRFWFQsIGtDb250ZXh0QXR0cmlicy5kYXRhKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShjb250ZXh0ICE9IEVHTF9OT19DT05URVhUKTsKIAogICAgICAgICBj
b25zdCBFR0xpbnQgcEJ1ZmZlckF0dHJpYnNbXSA9IHsKQEAgLTIwMiw3ICszMDgsOCBAQCBjbGFz
cyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAgICAgfQog
CiAgICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBtQ29uZmlnczsKLSAgICBFR0xEaXNwbGF5IG1E
aXNwbGF5OworICAgIEVHTERpc3BsYXkgbURpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKKyAgICBF
R0xpbnQgbVJlbmRlcmVyICAgID0gMDsKIAogICBwcml2YXRlOgogICAgIHZvaWQgdGVzdENsZWFy
U3VyZmFjZShFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTENvbmZpZyBzdXJmYWNlQ29uZmlnLCBFR0xD
b250ZXh0IGNvbnRleHQpIGNvbnN0CkBAIC0yNDgsMTU1ICszNTUsMjc2IEBAIGNsYXNzIEVHTENv
bnRleHRDb21wYXRpYmlsaXR5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKIAogLy8gQmFzaWMgdGVz
dCBjaGVja2luZyBjb250ZXh0cyBhbmQgd2luZG93cyBjcmVhdGVkIHdpdGggdGhlCiAvLyBzYW1l
IGNvbmZpZyBjYW4gcmVuZGVyLgotVEVTVF9QKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwg
V2luZG93U2FtZUNvbmZpZykKK2NsYXNzIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9XaW5k
b3dTYW1lQ29uZmlnIDogcHVibGljIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdAogewotICAg
IEFOR0xFX1NLSVBfVEVTVF9JRihJc0RlYnVnKCkpOyAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8y
MTIxCisgIHB1YmxpYzoKKyAgICBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RfV2luZG93U2Ft
ZUNvbmZpZyhFR0xpbnQgcmVuZGVyZXIsIHNpemVfdCBjb25maWdJbmRleCkKKyAgICAgICAgOiBF
R0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QocmVuZGVyZXIpLCBtQ29uZmlnSW5kZXgoY29uZmln
SW5kZXgpCisgICAge30KIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUNvbmZpZ3Muc2l6
ZSgpOyBpKyspCisgICAgdm9pZCBUZXN0Qm9keSgpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBF
R0xDb25maWcgY29uZmlnID0gbUNvbmZpZ3NbaV07CisgICAgICAgIEVHTENvbmZpZyBjb25maWcg
PSBtQ29uZmlnc1ttQ29uZmlnSW5kZXhdOwogCiAgICAgICAgIEVHTGludCBzdXJmYWNlVHlwZTsK
ICAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjb25maWcsIEVHTF9TVVJGQUNF
X1RZUEUsICZzdXJmYWNlVHlwZSk7CiAgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCi0g
ICAgICAgIGlmICgoc3VyZmFjZVR5cGUgJiBFR0xfV0lORE9XX0JJVCkgIT0gMCkKLSAgICAgICAg
ewotICAgICAgICAgICAgLy8gRGlzYWJsaW5nIG11bHRpc2FtcGxlZCBjb25maWd1cmF0aW9ucyBk
dWUgdG8gdGVzdCBpbnN0YWJpbGl0eSB3aXRoIHZhcmlvdXMgZ3JhcGhpY3MKLSAgICAgICAgICAg
IC8vIGNhcmRzLCBhbmQgUkdCQTE2Ri9SR0IxMF9BMiBvbiBBbmRyb2lkIGR1ZSB0byBPU1dpbmRv
dyBvbiBBbmRyb2lkIG5vdCBwcm92aWRpbmcKLSAgICAgICAgICAgIC8vIGNvbXBhdGlibGUgd2lu
ZG93cyAoYW5nbGVidWcuY29tLzMxNTYpCi0gICAgICAgICAgICBpZiAoaXNNdWx0aXNhbXBsZWRD
b25maWcoY29uZmlnKSB8fAotICAgICAgICAgICAgICAgIChJc0FuZHJvaWQoKSAmJiAoaXNSR0Ix
MF9BMkNvbmZpZyhjb25maWcpIHx8IGlzUkdCQTE2RkNvbmZpZyhjb25maWcpKSkpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0ZXN0V2luZG93Q29tcGF0aWJpbGl0eShjb25maWcsIGNvbmZpZywgdHJ1ZSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgQU5HTEVfU0tJUF9URVNUX0lGKChzdXJmYWNlVHlwZSAmIEVHTF9XSU5E
T1dfQklUKSA9PSAwKTsKKworICAgICAgICB0ZXN0V2luZG93Q29tcGF0aWJpbGl0eShjb25maWcs
IGNvbmZpZywgdHJ1ZSk7CiAgICAgfQotfQorCisgICAgRUdMaW50IG1Db25maWdJbmRleDsKK307
CiAKIC8vIEJhc2ljIHRlc3QgY2hlY2tpbmcgY29udGV4dHMgYW5kIHBidWZmZXJzIGNyZWF0ZWQg
d2l0aCB0aGUKIC8vIHNhbWUgY29uZmlnIGNhbiByZW5kZXIuCi1URVNUX1AoRUdMQ29udGV4dENv
bXBhdGliaWxpdHlUZXN0LCBQYnVmZmVyU2FtZUNvbmZpZykKK2NsYXNzIEVHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdF9QYnVmZmVyU2FtZUNvbmZpZyA6IHB1YmxpYyBFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3QKIHsKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNEZWJ1ZygpKTsgIC8vIGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMjEyMQorICBwdWJsaWM6CisgICAgRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0X1BidWZmZXJTYW1lQ29uZmlnKEVHTGludCByZW5kZXJlciwgc2l6ZV90IGNvbmZp
Z0luZGV4KQorICAgICAgICA6IEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdChyZW5kZXJlciks
IG1Db25maWdJbmRleChjb25maWdJbmRleCkKKyAgICB7fQogCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7IGkrKykKKyAgICB2b2lkIFRlc3RCb2R5KCkgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIEVHTENvbmZpZyBjb25maWcgPSBtQ29uZmlnc1tpXTsKKyAgICAg
ICAgRUdMQ29uZmlnIGNvbmZpZyA9IG1Db25maWdzW21Db25maWdJbmRleF07CiAKICAgICAgICAg
RUdMaW50IHN1cmZhY2VUeXBlOwogICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXks
IGNvbmZpZywgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsKICAgICAgICAgQVNTRVJU
X0VHTF9TVUNDRVNTKCk7CiAKLSAgICAgICAgaWYgKChzdXJmYWNlVHlwZSAmIEVHTF9QQlVGRkVS
X0JJVCkgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRGlzYWJsaW5nIG11bHRpc2Ft
cGxlZCBjb25maWd1cmF0aW9ucyBkdWUgdG8gdGVzdCBpbnN0YWJpbGl0eSB3aXRoIHZhcmlvdXMg
Z3JhcGhpY3MKLSAgICAgICAgICAgIC8vIGNhcmRzLCBhbmQgUkdCMTBfQTIgb24gQW5kcm9pZCBk
dWUgdG8gT1NXaW5kb3cgb24gQW5kcm9pZCBub3QgcHJvdmlkaW5nIGNvbXBhdGlibGUKLSAgICAg
ICAgICAgIC8vIHdpbmRvd3MgKGFuZ2xlYnVnLmNvbS8zMTU2KQotICAgICAgICAgICAgaWYgKGlz
TXVsdGlzYW1wbGVkQ29uZmlnKGNvbmZpZykgfHwgKElzQW5kcm9pZCgpICYmIGlzUkdCMTBfQTJD
b25maWcoY29uZmlnKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoY29u
ZmlnLCBjb25maWcsIHRydWUpOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1NLSVBfVEVTVF9J
Rigoc3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpID09IDApOworCisgICAgICAgIHRlc3RQ
YnVmZmVyQ29tcGF0aWJpbGl0eShjb25maWcsIGNvbmZpZywgdHJ1ZSk7CiAgICAgfQotfQorCisg
ICAgRUdMaW50IG1Db25maWdJbmRleDsKK307CiAKIC8vIENoZWNrIHRoYXQgYSBjb250ZXh0IHJl
bmRlcmluZyB0byBhIHdpbmRvdyB3aXRoIGEgZGlmZmVyZW50CiAvLyBjb25maWcgd29ya3Mgb3Ig
ZXJyb3JzIGFjY29yZGluZyB0byB0aGUgRUdMIGNvbXBhdGliaWxpdHkgcnVsZXMKLVRFU1RfUChF
R0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFdpbmRvd0RpZmZlcmVudENvbmZpZykKK2NsYXNz
IEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9XaW5kb3dEaWZmZXJlbnRDb25maWcgOiBwdWJs
aWMgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0CiB7Ci0gICAgQU5HTEVfU0tJUF9URVNUX0lG
KElzRGVidWcoKSk7ICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzIxMjEKKyAgcHVibGljOgorICAg
IEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9XaW5kb3dEaWZmZXJlbnRDb25maWcoRUdMaW50
IHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGNvbmZpZ0luZGV4QSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb25maWdJbmRleEIpCisgICAgICAg
IDogRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0KHJlbmRlcmVyKSwKKyAgICAgICAgICBtQ29u
ZmlnSW5kZXhBKGNvbmZpZ0luZGV4QSksCisgICAgICAgICAgbUNvbmZpZ0luZGV4Qihjb25maWdJ
bmRleEIpCisgICAge30KKworICAgIHZvaWQgVGVzdEJvZHkoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgRUdMQ29uZmlnIGNvbmZpZzEgPSBtQ29uZmlnc1ttQ29uZmlnSW5kZXhBXTsKKyAgICAg
ICAgRUdMQ29uZmlnIGNvbmZpZzIgPSBtQ29uZmlnc1ttQ29uZmlnSW5kZXhCXTsKKworICAgICAg
ICBFR0xpbnQgc3VyZmFjZVR5cGU7CisgICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxh
eSwgY29uZmlnMSwgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsKKyAgICAgICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7CiAKLSAgICAvLyBhbmdsZWJ1Zy5jb20vMjE4MwotICAgIC8vIEFj
dHVhbGx5IGZhaWxlZCBvbmx5IG9uIChJc0ludGVsKCkgJiYgSXNXaW5kb3dzKCkgJiYgSXNEM0Qx
MSgpKSwKLSAgICAvLyBidXQgaXQncyBpbXBvc3NpYmxlIHRvIGRvIG90aGVyIHRlc3RzIHNpbmNl
IEdMX1JFTkRFUkVSIGlzIE5VTEwKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNXaW5kb3dzKCkp
OworICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoKHN1cmZhY2VUeXBlICYgRUdMX1dJTkRPV19C
SVQpID09IDApOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7
IGkrKykKKyAgICAgICAgdGVzdFdpbmRvd0NvbXBhdGliaWxpdHkoY29uZmlnMSwgY29uZmlnMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29u
ZmlnMSwgY29uZmlnMiwgRUdMX1dJTkRPV19CSVQpKTsKKyAgICB9CisKKyAgICBFR0xpbnQgbUNv
bmZpZ0luZGV4QTsKKyAgICBFR0xpbnQgbUNvbmZpZ0luZGV4QjsKK307CisKKy8vIENoZWNrIHRo
YXQgYSBjb250ZXh0IHJlbmRlcmluZyB0byBhIHBidWZmZXIgd2l0aCBhIGRpZmZlcmVudAorLy8g
Y29uZmlnIHdvcmtzIG9yIGVycm9ycyBhY2NvcmRpbmcgdG8gdGhlIEVHTCBjb21wYXRpYmlsaXR5
IHJ1bGVzCitjbGFzcyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RfUGJ1ZmZlckRpZmZlcmVu
dENvbmZpZyA6IHB1YmxpYyBFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QKK3sKKyAgcHVibGlj
OgorICAgIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9QYnVmZmVyRGlmZmVyZW50Q29uZmln
KEVHTGludCByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgY29uZmlnSW5kZXhBLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb25maWdJbmRleEIp
CisgICAgICAgIDogRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0KHJlbmRlcmVyKSwKKyAgICAg
ICAgICBtQ29uZmlnSW5kZXhBKGNvbmZpZ0luZGV4QSksCisgICAgICAgICAgbUNvbmZpZ0luZGV4
Qihjb25maWdJbmRleEIpCisgICAge30KKworICAgIHZvaWQgVGVzdEJvZHkoKSBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzEgPSBtQ29uZmlnc1tpXTsKLSAgICAgICAg
Ly8gRGlzYWJsaW5nIG11bHRpc2FtcGxlZCBjb25maWd1cmF0aW9ucyBkdWUgdG8gdGVzdCBpbnN0
YWJpbGl0eSB3aXRoIHZhcmlvdXMgZ3JhcGhpY3MKLSAgICAgICAgLy8gY2FyZHMsIGFuZCBSR0JB
MTZGL1JHQjEwX0EyIG9uIEFuZHJvaWQgZHVlIHRvIE9TV2luZG93IG9uIEFuZHJvaWQgbm90IHBy
b3ZpZGluZwotICAgICAgICAvLyBjb21wYXRpYmxlIHdpbmRvd3MgKGFuZ2xlYnVnLmNvbS8zMTU2
KQotICAgICAgICBpZiAoaXNNdWx0aXNhbXBsZWRDb25maWcoY29uZmlnMSkgfHwKLSAgICAgICAg
ICAgIChJc0FuZHJvaWQoKSAmJiAoaXNSR0IxMF9BMkNvbmZpZyhjb25maWcxKSB8fCBpc1JHQkEx
NkZDb25maWcoY29uZmlnMSkpKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KKyAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzEgPSBtQ29uZmlnc1ttQ29uZmlnSW5k
ZXhBXTsKKyAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzIgPSBtQ29uZmlnc1ttQ29uZmlnSW5kZXhC
XTsKIAogICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGU7CiAgICAgICAgIGVnbEdldENvbmZpZ0F0
dHJpYihtRGlzcGxheSwgY29uZmlnMSwgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsK
ICAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CiAKLSAgICAgICAgaWYgKChzdXJmYWNlVHlw
ZSAmIEVHTF9XSU5ET1dfQklUKSA9PSAwKQotICAgICAgICB7CisgICAgICAgIEFOR0xFX1NLSVBf
VEVTVF9JRigoc3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpID09IDApOworCisgICAgICAg
IHRlc3RQYnVmZmVyQ29tcGF0aWJpbGl0eShjb25maWcxLCBjb25maWcyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29uZmln
MiwgRUdMX1BCVUZGRVJfQklUKSk7CisgICAgfQorCisgICAgRUdMaW50IG1Db25maWdJbmRleEE7
CisgICAgRUdMaW50IG1Db25maWdJbmRleEI7Cit9OworfSAgLy8gbmFtZXNwYWNlCisKK3ZvaWQg
UmVnaXN0ZXJDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3RzKCkKK3sKKyAgICBzdGQ6OnZlY3RvcjxF
R0xpbnQ+IHJlbmRlcmVycyA9IHt7CisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDlfQU5HTEUsCisgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAor
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsCisgICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFLAorICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEUsCisgICAgfX07CisKKyAgICBMb2FkRW50cnlQb2lu
dHNXaXRoVXRpbExvYWRlcigpOworCisgICAgaWYgKGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgc3RkOjpjZXJyIDw8ICJFR0xDb250ZXh0Q29tcGF0
aWJsaXR5VGVzdDogbWlzc2luZyBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFRcbiI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKEVHTGludCByZW5kZXJlciA6IHJlbmRlcmVycykK
KyAgICB7CisgICAgICAgIFBsYXRmb3JtUGFyYW1ldGVycyBwYXJhbXMgPSBGcm9tUmVuZGVyZXIo
cmVuZGVyZXIpOworICAgICAgICBpZiAoSXNQbGF0Zm9ybUF2YWlsYWJsZShwYXJhbXMpKQogICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgRUdMaW50IGRpc3BhdHRyc1tdID0ge0VHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCByZW5kZXJlciwgRUdMX05PTkV9OworICAgICAgICBF
R0xEaXNwbGF5IGRpc3BsYXkgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoCisgICAgICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihFR0xf
REVGQVVMVF9ESVNQTEFZKSwgZGlzcGF0dHJzKTsKKyAgICAgICAgaWYgKGRpc3BsYXkgPT0gRUdM
X05PX0RJU1BMQVkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiRUdMQ29u
dGV4dENvbXBhdGlibGl0eVRlc3Q6IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCBlcnJvclxuIjsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgbUNvbmZpZ3Muc2l6ZSgpOyBqKyspCisgICAgICAgIGlmIChlZ2xJbml0aWFsaXpl
KGRpc3BsYXksIG51bGxwdHIsIG51bGxwdHIpICE9IEVHTF9UUlVFKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBFR0xDb25maWcgY29uZmlnMiA9IG1Db25maWdzW2pdOwotICAgICAgICAgICAgLy8g
RGlzYWJsaW5nIG11bHRpc2FtcGxlZCBjb25maWd1cmF0aW9ucyBkdWUgdG8gdGVzdCBpbnN0YWJp
bGl0eSB3aXRoIHZhcmlvdXMgZ3JhcGhpY3MKLSAgICAgICAgICAgIC8vIGNhcmRzLCBhbmQgUkdC
QTE2Ri9SR0IxMF9BMiBvbiBBbmRyb2lkIGR1ZSB0byBPU1dpbmRvdyBvbiBBbmRyb2lkIG5vdCBw
cm92aWRpbmcKLSAgICAgICAgICAgIC8vIGNvbXBhdGlibGUgd2luZG93cyAoYW5nbGVidWcuY29t
LzMxNTYpCi0gICAgICAgICAgICBpZiAoaXNNdWx0aXNhbXBsZWRDb25maWcoY29uZmlnMikgfHwK
LSAgICAgICAgICAgICAgICAoSXNBbmRyb2lkKCkgJiYgKGlzUkdCMTBfQTJDb25maWcoY29uZmln
MikgfHwgaXNSR0JBMTZGQ29uZmlnKGNvbmZpZzIpKSkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXN0V2luZG93
Q29tcGF0aWJpbGl0eShjb25maWcxLCBjb25maWcyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29uZmlnMiwgRUdMX1dJ
TkRPV19CSVQpKTsKKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiRUdMQ29udGV4dENvbXBhdGli
bGl0eVRlc3Q6IGVnbEluaXRpYWxpemUgZXJyb3JcbiI7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICB9Ci19CiAKLS8vIENoZWNrIHRoYXQgYSBjb250ZXh0IHJlbmRlcmluZyB0
byBhIHBidWZmZXIgd2l0aCBhIGRpZmZlcmVudAotLy8gY29uZmlnIHdvcmtzIG9yIGVycm9ycyBh
Y2NvcmRpbmcgdG8gdGhlIEVHTCBjb21wYXRpYmlsaXR5IHJ1bGVzCi1URVNUX1AoRUdMQ29udGV4
dENvbXBhdGliaWxpdHlUZXN0LCBQYnVmZmVyRGlmZmVyZW50Q29uZmlnKQotewotICAgIEFOR0xF
X1NLSVBfVEVTVF9JRihJc0RlYnVnKCkpOyAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8yMTIxCisg
ICAgICAgIHN0ZDo6dmVjdG9yPEVHTENvbmZpZz4gY29uZmlncyA9IEdldENvbmZpZ3MoZGlzcGxh
eSk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBjb25maWdOYW1lczsKKyAgICAg
ICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJOYW1lID0gR2V0UmVuZGVyZXJOYW1lKHJlbmRlcmVyKTsK
IAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCi0gICAg
ewotICAgICAgICBFR0xDb25maWcgY29uZmlnMSA9IG1Db25maWdzW2ldOwotICAgICAgICAvLyBE
aXNhYmxpbmcgbXVsdGlzYW1wbGVkIGNvbmZpZ3VyYXRpb25zIGR1ZSB0byB0ZXN0IGluc3RhYmls
aXR5IHdpdGggdmFyaW91cyBncmFwaGljcwotICAgICAgICAvLyBjYXJkcywgYW5kIFJHQjEwX0Ey
IG9uIEFuZHJvaWQgZHVlIHRvIE9TV2luZG93IG9uIEFuZHJvaWQgbm90IHByb3ZpZGluZyBjb21w
YXRpYmxlCi0gICAgICAgIC8vIHdpbmRvd3MgKGFuZ2xlYnVnLmNvbS8zMTU2KQotICAgICAgICBp
ZiAoaXNNdWx0aXNhbXBsZWRDb25maWcoY29uZmlnMSkgfHwgKElzQW5kcm9pZCgpICYmIGlzUkdC
MTBfQTJDb25maWcoY29uZmlnMSkpKQorICAgICAgICBmb3IgKEVHTENvbmZpZyBjb25maWcgOiBj
b25maWdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNv
bmZpZ05hbWVzLnB1c2hfYmFjayhFR0xDb25maWdOYW1lKGRpc3BsYXksIGNvbmZpZykpOwogICAg
ICAgICB9CiAKLSAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOwotICAgICAgICBlZ2xHZXRDb25m
aWdBdHRyaWIobURpc3BsYXksIGNvbmZpZzEsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlw
ZSk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOworICAgICAgICBmb3IgKHNpemVfdCBj
b25maWdJbmRleCA9IDA7IGNvbmZpZ0luZGV4IDwgY29uZmlncy5zaXplKCk7ICsrY29uZmlnSW5k
ZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChTaG91bGRTa2lwQ29uZmlnKGRpc3BsYXks
IGNvbmZpZ3NbY29uZmlnSW5kZXhdLCB0cnVlKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJfQklUKSA9PSAwKQorICAg
ICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbmFtZVN0cjsKKyAgICAgICAgICAgIG5hbWVTdHIg
PDwgIldpbmRvd1NhbWVDb25maWcvIiA8PCByZW5kZXJlck5hbWUgPDwgIl8iIDw8IGNvbmZpZ05h
bWVzW2NvbmZpZ0luZGV4XTsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBuYW1lU3Ry
LnN0cigpOworCisgICAgICAgICAgICB0ZXN0aW5nOjpSZWdpc3RlclRlc3QoCisgICAgICAgICAg
ICAgICAgIkVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCIsIG5hbWUuY19zdHIoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgIFtyZW5kZXJl
ciwgY29uZmlnSW5kZXhdKCkgLT4gRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0ICogeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9X
aW5kb3dTYW1lQ29uZmlnKHJlbmRlcmVyLCBjb25maWdJbmRleCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBjb25maWdJbmRleCA9IDA7IGNv
bmZpZ0luZGV4IDwgY29uZmlncy5zaXplKCk7ICsrY29uZmlnSW5kZXgpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKFNob3VsZFNraXBDb25maWcoZGlz
cGxheSwgY29uZmlnc1tjb25maWdJbmRleF0sIGZhbHNlKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbmFtZVN0cjsKKyAgICAgICAg
ICAgIG5hbWVTdHIgPDwgIlBidWZmZXJTYW1lQ29uZmlnLyIgPDwgcmVuZGVyZXJOYW1lIDw8ICJf
IiA8PCBjb25maWdOYW1lc1tjb25maWdJbmRleF07CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBu
YW1lID0gbmFtZVN0ci5zdHIoKTsKKworICAgICAgICAgICAgdGVzdGluZzo6UmVnaXN0ZXJUZXN0
KAorICAgICAgICAgICAgICAgICJFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QiLCBuYW1lLmNf
c3RyKCksIG51bGxwdHIsIG51bGxwdHIsIF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAg
ICAgICBbcmVuZGVyZXIsIGNvbmZpZ0luZGV4XSgpIC0+IEVHTENvbnRleHRDb21wYXRpYmlsaXR5
VGVzdCAqIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFR0xDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3RfUGJ1ZmZlclNhbWVDb25maWcocmVuZGVyZXIsIGNvbmZpZ0luZGV4KTsKKyAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgbUNvbmZpZ3Muc2l6ZSgpOyBqKyspCisgICAgICAgIC8vIEJlY2F1c2UgdGhlcmUgYXJl
IHNvIG1hbnkgcGVybXV0YXRpb25zLCB3ZSBza2lwIHNvbWUgY29uZmlncyByYW5kb21seS4KKyAg
ICAgICAgLy8gQXR0ZW1wdCB0byBydW4gYXQgbW9zdCAxMDAgdGVzdHMgcGVyIHJlbmRlcmVyLgor
ICAgICAgICBSTkcgcm5nKDApOworICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qga01heGltdW1U
ZXN0c1BlclJlbmRlcmVyID0gMTAwOworICAgICAgICBjb25zdCB1aW50MzJfdCBrVGVzdENvdW50
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbmZpZ3Muc2l6ZSgpICogY29uZmlncy5zaXplKCkp
OworICAgICAgICBjb25zdCBmbG9hdCBrU2tpcFAgPQorICAgICAgICAgICAgMS4wZiAtIChzdGF0
aWNfY2FzdDxmbG9hdD4oc3RkOjptaW4oa01heGltdW1UZXN0c1BlclJlbmRlcmVyLCBrVGVzdENv
dW50KSkgLworICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oa1Rlc3RDb3Vu
dCkpOworCisgICAgICAgIGZvciAoc2l6ZV90IGNvbmZpZ0luZGV4QSA9IDA7IGNvbmZpZ0luZGV4
QSA8IGNvbmZpZ3Muc2l6ZSgpOyArK2NvbmZpZ0luZGV4QSkKICAgICAgICAgewotICAgICAgICAg
ICAgRUdMQ29uZmlnIGNvbmZpZzIgPSBtQ29uZmlnc1tqXTsKLSAgICAgICAgICAgIC8vIERpc2Fi
bGluZyBtdWx0aXNhbXBsZWQgY29uZmlndXJhdGlvbnMgZHVlIHRvIHRlc3QgaW5zdGFiaWxpdHkg
d2l0aCB2YXJpb3VzIGdyYXBoaWNzCi0gICAgICAgICAgICAvLyBjYXJkcywgYW5kIFJHQjEwX0Ey
IG9uIEFuZHJvaWQgZHVlIHRvIE9TV2luZG93IG9uIEFuZHJvaWQgbm90IHByb3ZpZGluZyBjb21w
YXRpYmxlCi0gICAgICAgICAgICAvLyB3aW5kb3dzIChhbmdsZWJ1Zy5jb20vMzE1NikKLSAgICAg
ICAgICAgIGlmIChpc011bHRpc2FtcGxlZENvbmZpZyhjb25maWcyKSB8fCAoSXNBbmRyb2lkKCkg
JiYgaXNSR0IxMF9BMkNvbmZpZyhjb25maWcyKSkpCisgICAgICAgICAgICBpZiAoU2hvdWxkU2tp
cENvbmZpZyhkaXNwbGF5LCBjb25maWdzW2NvbmZpZ0luZGV4QV0sIHRydWUpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25maWdOYW1lQSA9
IGNvbmZpZ05hbWVzW2NvbmZpZ0luZGV4QV07CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGNv
bmZpZ0luZGV4QiA9IDA7IGNvbmZpZ0luZGV4QiA8IGNvbmZpZ3Muc2l6ZSgpOyArK2NvbmZpZ0lu
ZGV4QikKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoU2hvdWxkU2tpcENvbmZp
ZyhkaXNwbGF5LCBjb25maWdzW2NvbmZpZ0luZGV4Ql0sIHRydWUpKQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGlmIChybmcucmFuZG9tRmxvYXQoKSA8
IGtTa2lwUCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAg
ICBzdGQ6OnN0cmluZyBjb25maWdOYW1lQiA9IGNvbmZpZ05hbWVzW2NvbmZpZ0luZGV4Ql07CisK
KyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBuYW1lU3RyOworICAgICAgICAgICAg
ICAgIG5hbWVTdHIgPDwgIldpbmRvd0RpZmZlcmVudENvbmZpZy8iIDw8IHJlbmRlcmVyTmFtZSA8
PCAiXyIgPDwgY29uZmlnTmFtZUEgPDwgIl8iCisgICAgICAgICAgICAgICAgICAgICAgICA8PCBj
b25maWdOYW1lQjsKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuYW1lID0gbmFtZVN0ci5z
dHIoKTsKKworICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJlZ2lzdGVyVGVzdCgKKyAgICAgICAg
ICAgICAgICAgICAgIkVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCIsIG5hbWUuY19zdHIoKSwg
bnVsbHB0ciwgbnVsbHB0ciwgX19GSUxFX18sCisgICAgICAgICAgICAgICAgICAgIF9fTElORV9f
LAorICAgICAgICAgICAgICAgICAgICBbcmVuZGVyZXIsIGNvbmZpZ0luZGV4QSwgY29uZmlnSW5k
ZXhCXSgpIC0+IEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCAqIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0X1dpbmRvd0Rp
ZmZlcmVudENvbmZpZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciwgY29u
ZmlnSW5kZXhBLCBjb25maWdJbmRleEIpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGNvbmZpZ0luZGV4QSA9
IDA7IGNvbmZpZ0luZGV4QSA8IGNvbmZpZ3Muc2l6ZSgpOyArK2NvbmZpZ0luZGV4QSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKFNob3VsZFNraXBDb25maWcoZGlzcGxheSwgY29uZmlnc1tj
b25maWdJbmRleEFdLCBmYWxzZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGNvbmZpZ05hbWVBID0gY29uZmlnTmFtZXNbY29uZmlnSW5kZXhB
XTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgY29uZmlnSW5kZXhCID0gMDsgY29uZmlnSW5k
ZXhCIDwgY29uZmlncy5zaXplKCk7ICsrY29uZmlnSW5kZXhCKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmIChTaG91bGRTa2lwQ29uZmlnKGRpc3BsYXksIGNvbmZpZ3NbY29uZmln
SW5kZXhCXSwgZmFsc2UpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgICAgIGlmIChybmcucmFuZG9tRmxvYXQoKSA8IGtTa2lwUCkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25maWdOYW1l
QiA9IGNvbmZpZ05hbWVzW2NvbmZpZ0luZGV4Ql07CisKKyAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBuYW1lU3RyOworICAgICAgICAgICAgICAgIG5hbWVTdHIgPDwgIlBidWZmZXJE
aWZmZXJlbnRDb25maWcvIiA8PCByZW5kZXJlck5hbWUgPDwgIl8iIDw8IGNvbmZpZ05hbWVBIDw8
ICJfIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgY29uZmlnTmFtZUI7CisgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgbmFtZSA9IG5hbWVTdHIuc3RyKCk7CisKKyAgICAgICAgICAgICAg
ICB0ZXN0aW5nOjpSZWdpc3RlclRlc3QoCisgICAgICAgICAgICAgICAgICAgICJFR0xDb250ZXh0
Q29tcGF0aWJpbGl0eVRlc3QiLCBuYW1lLmNfc3RyKCksIG51bGxwdHIsIG51bGxwdHIsIF9fRklM
RV9fLAorICAgICAgICAgICAgICAgICAgICBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICAg
W3JlbmRlcmVyLCBjb25maWdJbmRleEEsIGNvbmZpZ0luZGV4Ql0oKSAtPiBFR0xDb250ZXh0Q29t
cGF0aWJpbGl0eVRlc3QgKiB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVH
TENvbnRleHRDb21wYXRpYmlsaXR5VGVzdF9QYnVmZmVyRGlmZmVyZW50Q29uZmlnKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLCBjb25maWdJbmRleEEsIGNvbmZpZ0luZGV4
Qik7CisgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
dGVzdFBidWZmZXJDb21wYXRpYmlsaXR5KGNvbmZpZzEsIGNvbmZpZzIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29u
ZmlnMiwgRUdMX1BCVUZGRVJfQklUKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWdsVGVy
bWluYXRlKGRpc3BsYXkpID09IEVHTF9GQUxTRSkKKyAgICAgICAgeworICAgICAgICAgICAgc3Rk
OjpjZXJyIDw8ICJFR0xDb250ZXh0Q29tcGF0aWJsaXR5VGVzdDogZWdsVGVybWluYXRlIGVycm9y
XG4iOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogfQotCi1BTkdMRV9J
TlNUQU5USUFURV9URVNUKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgV2l0aE5vRml4dHVyZShFUzJfRDNEOSgpKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgV2l0aE5vRml4dHVyZShFUzJfRDNEMTEoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
IFdpdGhOb0ZpeHR1cmUoRVMyX09QRU5HTCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgV2l0
aE5vRml4dHVyZShFUzJfT1BFTkdMRVMoKSksCi0gICAgICAgICAgICAgICAgICAgICAgIFdpdGhO
b0ZpeHR1cmUoRVMyX1ZVTEtBTigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFyaW5nVGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFyaW5n
VGVzdC5jcHAKaW5kZXggYmNmODAyMGJjNmU3MTZlMDM2ZjEyMzBhN2RlYzU0MzQwZDM0ZTkyZS4u
YTIxMDNkNzZmZmU0NjgwMjAwZTg2NzVjZDllMDI4YmQ0MzgyNTM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0U2hhcmlu
Z1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVz
dHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcApAQCAtMzc2LDkgKzM3Niw2IEBAIFRFU1RfUChF
R0xDb250ZXh0U2hhcmluZ1Rlc3QsIERlbGV0ZVJlYWRlck9mU2hhcmVkVGV4dHVyZSkKIHsKICAg
ICBBTkdMRV9TS0lQX1RFU1RfSUYoIXBsYXRmb3JtU3VwcG9ydHNNdWx0aXRocmVhZGluZygpKTsK
IAotICAgIC8vIEJ1ZyBpbiB0aGUgVnVsa2FuIGJhY2tlbmQuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
NDEzMAotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc1Z1bGthbigpKTsKLQogICAgIC8vIEluaXRp
YWxpemUgY29udGV4dHMKICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwog
ICAgIEVHTERpc3BsYXkgZHB5ICAgID0gd2luZG93LT5nZXREaXNwbGF5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTERpcmVjdENv
bXBvc2l0aW9uVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTERpcmVjdENvbXBvc2l0aW9uVGVzdC5jcHAKaW5kZXggZmMwNjMwMjhkNmIzZmI2
NmQ2YjQxNzc5MTZmYzQzZTM3NTNlMDhiNi4uOThmMDg5NmZiMjc0YzYzMzI4ZjcxYTEzNmYxOTBl
MGRlZWY1MGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xEaXJlY3RDb21wb3NpdGlvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMRGlyZWN0Q29tcG9zaXRpb25UZXN0
LmNwcApAQCAtMjU2LDYgKzI1Niw5IEBAIFRFU1RfUChFR0xEaXJlY3RDb21wb3NpdGlvblRlc3Qs
IFJlbmRlclNvbGlkQ29sb3IpCiAgICAgLy8gT25seSBhdHRlbXB0IHRoaXMgdGVzdCB3aGVuIG9u
IFdpbmRvd3MgMTAgMTgwMysKICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIW1Sb0hlbHBlci5TdXBw
b3J0ZWRXaW5kb3dzUmVsZWFzZSgpKTsKIAorICAgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTA2Mzk2
MgorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihpc0QzRDExUmVuZGVyZXIoKSAmJiBJc0ludGVsKCkp
OworCiAgICAgRUdMU3VyZmFjZSBze251bGxwdHJ9OwogICAgIENyZWF0ZVN1cmZhY2UobUFuZ2xl
SG9zdCwgcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9lZ2xfdGVzdHMvRUdMSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTElPU3VyZmFjZUNsaWVudEJ1ZmZl
clRlc3QuY3BwCmluZGV4IDAwODk4YzU5N2ViMmJiNTZmMDc4Njc3YTM0NDJiNTczMjE4YmYzYWYu
LmZiZTNlMWExMWEyZjdiMGE1NjE3OWE2YTkxNTM3MjM2OTYxNzdkYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMSU9TdXJmYWNlQ2xp
ZW50QnVmZmVyVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LmNwcApAQCAtMjAsNiArMjAs
OCBAQCB1c2luZyBuYW1lc3BhY2UgYW5nbGU7CiBuYW1lc3BhY2UKIHsKIAorY29uc3RleHByIGNo
YXIga0lPU3VyZmFjZUV4dFtdID0gIkVHTF9BTkdMRV9pb3N1cmZhY2VfY2xpZW50X2J1ZmZlciI7
CisKIHZvaWQgQWRkSW50ZWdlclZhbHVlKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSwgY29uc3QgQ0ZTdHJpbmdSZWYga2V5LCBpbnQzMl90IHZhbHVlKQogewogICAgIENGTnVtYmVy
UmVmIG51bWJlciA9IENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsIGtDRk51bWJlclNJbnQzMlR5cGUs
ICZ2YWx1ZSk7CkBAIC05Myw2ICs5NSwzMSBAQCBTY29wZWRJT1N1cmZhY2VSZWYgQ3JlYXRlU2lu
Z2xlUGxhbmVJT1N1cmZhY2UoaW50IHdpZHRoLAogY2xhc3MgSU9TdXJmYWNlQ2xpZW50QnVmZmVy
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKIHsKICAgcHJvdGVjdGVkOgorICAgIEVHTGludCBnZXRU
ZXh0dXJlVGFyZ2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEVHTGludCB0YXJnZXQgPSAwOwor
ICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1Db25maWcsIEVHTF9CSU5EX1RP
X1RFWFRVUkVfVEFSR0VUX0FOR0xFLCAmdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsK
KyAgICB9CisKKyAgICBHTGludCBnZXRHTFRleHR1cmVUYXJnZXQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgRUdMaW50IHRhcmdldEVHTCA9IGdldFRleHR1cmVUYXJnZXQoKTsKKyAgICAgICAgR0xl
bnVtIHRhcmdldEdMICA9IDA7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0RUdMKQorICAgICAgICB7
CisgICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgICAgIHRhcmdl
dEdMID0gR0xfVEVYVFVSRV8yRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOgorICAgICAgICAgICAgICAgIHRhcmdl
dEdMID0gR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0YXJnZXRHTDsKKyAgICB9CisKICAgICBJT1N1cmZhY2VDbGllbnRC
dWZmZXJUZXN0KCkgOiBtQ29uZmlnKDApLCBtRGlzcGxheShudWxscHRyKSB7fQogCiAgICAgdm9p
ZCB0ZXN0U2V0VXAoKSBvdmVycmlkZQpAQCAtMTE0LDcgKzE0MSw3IEBAIGNsYXNzIElPU3VyZmFj
ZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAgICAgICAgICAgICBFR0xfV0lE
VEgsICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAogICAgICAgICAgICAgRUdMX0hFSUdI
VCwgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsCiAgICAgICAgICAgICBFR0xfSU9TVVJG
QUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIHBsYW5lLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVf
VEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAg
ICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJn
ZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgaW50
ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAg
ICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xF
LCAgICAgICAgICAgIHR5cGUsCkBAIC0xMzksNyArMTY2LDcgQEAgY2xhc3MgSU9TdXJmYWNlQ2xp
ZW50QnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKICAgICAgICAgY3JlYXRlSU9TdXJmYWNl
UGJ1ZmZlcihpb1N1cmZhY2UsIHdpZHRoLCBoZWlnaHQsIHBsYW5lLCBpbnRlcm5hbEZvcm1hdCwg
dHlwZSwgcGJ1ZmZlcik7CiAKICAgICAgICAgLy8gQmluZCB0aGUgcGJ1ZmZlcgotICAgICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAqdGV4dHVyZSk7CisgICAg
ICAgIGdsQmluZFRleHR1cmUoZ2V0R0xUZXh0dXJlVGFyZ2V0KCksICp0ZXh0dXJlKTsKICAgICAg
ICAgRUdMQm9vbGVhbiByZXN1bHQgPSBlZ2xCaW5kVGV4SW1hZ2UobURpc3BsYXksICpwYnVmZmVy
LCBFR0xfQkFDS19CVUZGRVIpOwogICAgICAgICBFWFBFQ1RfRUdMX1RSVUUocmVzdWx0KTsKICAg
ICAgICAgRVhQRUNUX0VHTF9TVUNDRVNTKCk7CkBAIC0xNTksOCArMTg2LDggQEAgY2xhc3MgSU9T
dXJmYWNlQ2xpZW50QnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKICAgICAgICAgR0xGcmFt
ZWJ1ZmZlciBmYm87CiAgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBm
Ym8pOwogICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfUkVDVEFOR0xFX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1
cmUsIDApOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgZ2V0R0xUZXh0dXJlVGFyZ2V0KCksIHRleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwogICAgICAgICBFWFBFQ1RfR0xFTlVNX0VRKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TF9GUkFNRUJVRkZFUiksIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKICAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CkBAIC0yMTQsOCArMjQxLDcgQEAgY2xhc3MgSU9TdXJmYWNlQ2xpZW50
QnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKICAgICAgICAgICAgICJ7XG4iCiAgICAgICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgog
ICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgY29uc3RleHByIGNoYXIga0ZTW10gPQorICAg
ICAgICBjb25zdGV4cHIgY2hhciBrRlNfcmVjdFtdID0KICAgICAgICAgICAgICIjZXh0ZW5zaW9u
IEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSA6IHJlcXVpcmVcbiIKICAgICAgICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKICAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRFJl
Y3QgdGV4O1xuIgpAQCAtMjIzLDggKzI0OSwxNiBAQCBjbGFzcyBJT1N1cmZhY2VDbGllbnRCdWZm
ZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAogICAgICAgICAgICAgIntcbiIKICAgICAgICAgICAg
ICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEUmVjdCh0ZXgsIHZlYzIoMCwgMCkpO1xuIgog
ICAgICAgICAgICAgIn1cbiI7CisgICAgICAgIGNvbnN0ZXhwciBjaGFyIGtGU18yRFtdID0KKyAg
ICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAgICAgICAgICJ1bmlm
b3JtIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0
ZXgsIHZlYzIoMCwgMCkpO1xuIgorICAgICAgICAgICAgIn1cbiI7CiAKLSAgICAgICAgQU5HTEVf
R0xfUFJPR1JBTShwcm9ncmFtLCBrVlMsIGtGUyk7CisgICAgICAgIEFOR0xFX0dMX1BST0dSQU0o
cHJvZ3JhbSwga1ZTLAorICAgICAgICAgICAgICAgICAgICAgICAgIChnZXRUZXh0dXJlVGFyZ2V0
KCkgPT0gRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFID8ga0ZTX3JlY3QgOiBrRlNfMkQpKTsK
ICAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogCiAgICAgICAgIEdMaW50IGxvY2F0aW9u
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleCIpOwpAQCAtMjUzLDggKzI4Nyw4
IEBAIGNsYXNzIElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAg
ICAgICAgIEdMRnJhbWVidWZmZXIgaW9zdXJmYWNlRmJvOwogICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgaW9zdXJmYWNlRmJvKTsKICAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLCAwKTsKKyAgICAgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIGdldEdM
VGV4dHVyZVRhcmdldCgpLCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDApOwogICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKICAgICAgICAgRVhQRUNUX0dMRU5V
TV9FUShnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpLCBHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSk7CiAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwpAQCAtMzA5LDYg
KzM0Myw4IEBAIGNsYXNzIElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0CiAgICAgICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOwogICAgIH0KIAorICAgIGJvb2wgaGFz
SU9TdXJmYWNlRXh0KCkgY29uc3QgeyByZXR1cm4gSXNFR0xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZChtRGlzcGxheSwga0lPU3VyZmFjZUV4dCk7IH0KKwogICAgIEVHTENvbmZpZyBtQ29uZmlnOwog
ICAgIEVHTERpc3BsYXkgbURpc3BsYXk7CiB9OwpAQCAtMzE2LDYgKzM1Miw4IEBAIGNsYXNzIElP
U3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAvLyBUZXN0IHVzaW5n
IEJHUkE4ODg4IElPU3VyZmFjZXMgZm9yIHJlbmRlcmluZwogVEVTVF9QKElPU3VyZmFjZUNsaWVu
dEJ1ZmZlclRlc3QsIFJlbmRlclRvQkdSQTg4ODhJT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJ
UF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYg
aW9TdXJmYWNlID0gQ3JlYXRlU2luZ2xlUGxhbmVJT1N1cmZhY2UoMSwgMSwgJ0JHUkEnLCA0KTsK
IAogICAgIEdMQ29sb3IgY29sb3IoMywgMiwgMSwgNCk7CkBAIC0zMjUsNiArMzYzLDExIEBAIFRF
U1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZW5kZXJUb0JHUkE4ODg4SU9TdXJmYWNl
KQogLy8gVGVzdCByZWFkaW5nIGZyb20gQkdSQTg4ODggSU9TdXJmYWNlcwogVEVTVF9QKElPU3Vy
ZmFjZUNsaWVudEJ1ZmZlclRlc3QsIFJlYWRGcm9tQkdSQTg4ODhJT1N1cmZhY2UpCiB7CisgICAg
QU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKKyAgICAvLyBUT0RPKGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vNDM2OSkKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoaXNTd2lmdHNo
YWRlcigpKTsKKwogICAgIFNjb3BlZElPU3VyZmFjZVJlZiBpb1N1cmZhY2UgPSBDcmVhdGVTaW5n
bGVQbGFuZUlPU3VyZmFjZSgxLCAxLCAnQkdSQScsIDQpOwogCiAgICAgR0xDb2xvciBjb2xvcigz
LCAyLCAxLCA0KTsKQEAgLTMzNCw2ICszNzcsMTEgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1
ZmZlclRlc3QsIFJlYWRGcm9tQkdSQTg4ODhJT1N1cmZhY2UpCiAvLyBUZXN0IHVzaW5nIEJHUlg4
ODg4IElPU3VyZmFjZXMgZm9yIHJlbmRlcmluZwogVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZl
clRlc3QsIFJlbmRlclRvQkdSWDg4ODhJT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJUF9URVNU
X0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKKyAgICAvLyBUT0RPKGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vNDM2OSkKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoaXNTd2lmdHNoYWRlcigpKTsKKwogICAg
IFNjb3BlZElPU3VyZmFjZVJlZiBpb1N1cmZhY2UgPSBDcmVhdGVTaW5nbGVQbGFuZUlPU3VyZmFj
ZSgxLCAxLCAnQkdSQScsIDQpOwogCiAgICAgR0xDb2xvciBjb2xvcigzLCAyLCAxLCAyNTUpOwpA
QCAtMzQzLDYgKzM5MSw4IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZW5k
ZXJUb0JHUlg4ODg4SU9TdXJmYWNlKQogLy8gVGVzdCByZWFkaW5nIGZyb20gQkdSWDg4ODggSU9T
dXJmYWNlcwogVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIFJlYWRGcm9tQkdSWDg4
ODhJT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQo
KSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gQ3JlYXRlU2luZ2xlUGxh
bmVJT1N1cmZhY2UoMSwgMSwgJ0JHUkEnLCA0KTsKIAogICAgIEdMQ29sb3IgY29sb3IoMywgMiwg
MSwgNCk7CkBAIC0zNTIsNiArNDAyLDggQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRl
c3QsIFJlYWRGcm9tQkdSWDg4ODhJT1N1cmZhY2UpCiAvLyBUZXN0IHVzaW5nIFJHODggSU9TdXJm
YWNlcyBmb3IgcmVuZGVyaW5nCiBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgUmVu
ZGVyVG9SRzg4SU9TdXJmYWNlKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9TdXJm
YWNlRXh0KCkpOworCiAgICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSA9IENyZWF0ZVNp
bmdsZVBsYW5lSU9TdXJmYWNlKDEsIDEsICcyQzA4JywgMik7CiAKICAgICB1aW50OF90IGNvbG9y
WzJdID0gezEsIDJ9OwpAQCAtMzYxLDYgKzQxMyw4IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRC
dWZmZXJUZXN0LCBSZW5kZXJUb1JHODhJT1N1cmZhY2UpCiAvLyBUZXN0IHJlYWRpbmcgZnJvbSBS
Rzg4IElPU3VyZmFjZXMKIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZWFkRnJv
bVJHODhJT1N1cmZhY2UpCiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VF
eHQoKSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gQ3JlYXRlU2luZ2xl
UGxhbmVJT1N1cmZhY2UoMSwgMSwgJzJDMDgnLCAyKTsKIAogICAgIHVpbnQ4X3QgY29sb3JbMl0g
PSB7MSwgMn07CkBAIC0zNzAsNiArNDI0LDggQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZl
clRlc3QsIFJlYWRGcm9tUkc4OElPU3VyZmFjZSkKIC8vIFRlc3QgdXNpbmcgUjggSU9TdXJmYWNl
cyBmb3IgcmVuZGVyaW5nCiBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgUmVuZGVy
VG9SOElPU3VyZmFjZSkKIHsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIWhhc0lPU3VyZmFjZUV4
dCgpKTsKKwogICAgIFNjb3BlZElPU3VyZmFjZVJlZiBpb1N1cmZhY2UgPSBDcmVhdGVTaW5nbGVQ
bGFuZUlPU3VyZmFjZSgxLCAxLCAnTDAwOCcsIDEpOwogCiAgICAgdWludDhfdCBjb2xvciA9IDE7
CkBAIC0zNzksNiArNDM1LDggQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIFJl
bmRlclRvUjhJT1N1cmZhY2UpCiAvLyBUZXN0IHJlYWRpbmcgZnJvbSBSOCBJT1N1cmZhY2VzCiBU
RVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgUmVhZEZyb21SOElPU3VyZmFjZSkKIHsK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIWhhc0lPU3VyZmFjZUV4dCgpKTsKKwogICAgIFNjb3Bl
ZElPU3VyZmFjZVJlZiBpb1N1cmZhY2UgPSBDcmVhdGVTaW5nbGVQbGFuZUlPU3VyZmFjZSgxLCAx
LCAnTDAwOCcsIDEpOwogCiAgICAgdWludDhfdCBjb2xvciA9IDE7CkBAIC0zODgsOCArNDQ2LDEy
IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBSZWFkRnJvbVI4SU9TdXJmYWNl
KQogLy8gVGVzdCB1c2luZyBSMTYgSU9TdXJmYWNlcyBmb3IgcmVuZGVyaW5nCiBURVNUX1AoSU9T
dXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgUmVuZGVyVG9SMTZJT1N1cmZhY2UpCiB7CisgICAgQU5H
TEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKICAgICAvLyBUaGlzIHRlc3Qg
b25seSB3b3JrcyBvbiBFUzMuCiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKGdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMyk7CisgICAgLy8gVE9ETyhodHRwOi8vYW5nbGVidWcuY29tLzQzNjkpCisg
ICAgQU5HTEVfU0tJUF9URVNUX0lGKGlzU3dpZnRzaGFkZXIoKSk7CiAKICAgICAvLyBIQUNLKGN3
YWxsZXpAY2hyb21pdW0ub3JnKSAnTDAxNicgZG9lc24ndCBzZWVtIHRvIGJlIGFuIG9mZmljaWFs
IHBpeGVsIGZvcm1hdCBidXQgaXQgd29ya3MKICAgICAvLyBzb29vb29vbyBsZXQncyB0ZXN0IHVz
aW5nIGl0CkBAIC00MDYsMTIgKzQ2OCwxNiBAQCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVy
VGVzdCwgUmVuZGVyVG9SMTZJT1N1cmZhY2UpCiAvLyBUZXN0IGJsaXR0aW5nIGZyb20gSU9TdXJm
YWNlCiBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgQmxpdEZyb21JT1N1cmZhY2Up
CiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKICAgICBk
b0JsaXRUZXN0KHRydWUsIDIsIDIpOwogfQogCiAvLyBUZXN0IGJsaXR0aW5nIHRvIElPU3VyZmFj
ZQogVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIEJsaXRUb0lPU3VyZmFjZSkKIHsK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIWhhc0lPU3VyZmFjZUV4dCgpKTsKKwogICAgIGRvQmxp
dFRlc3QoZmFsc2UsIDIsIDIpOwogfQogCkBAIC00MTksNiArNDg1LDggQEAgVEVTVF9QKElPU3Vy
ZmFjZUNsaWVudEJ1ZmZlclRlc3QsIEJsaXRUb0lPU3VyZmFjZSkKIC8vIElPU3VyZmFjZQogVEVT
VF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbk1pc3NpbmdB
dHRyaWJ1dGVzKQogeworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighaGFzSU9TdXJmYWNlRXh0KCkp
OworCiAgICAgU2NvcGVkSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSA9IENyZWF0ZVNpbmdsZVBsYW5l
SU9TdXJmYWNlKDEwLCAxMCwgJ0JHUkEnLCA0KTsKIAogICAgIC8vIFN1Y2Nlc3MgY2FzZQpAQCAt
NDI4LDcgKzQ5Niw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdhdGl2
ZVZhbGlkYXRpb25NaXNzaW5nQXR0cmlidXRlcykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAg
ICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdM
RSwgICAgICAgICAwLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAg
ICAgICBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVS
RV9UQVJHRVQsICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAg
IEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAg
ICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEs
CiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsCkBAIC00NTAsNyArNTE4LDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZl
clRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbk1pc3NpbmdBdHRyaWJ1dGVzKQogICAgICAgICBjb25z
dCBFR0xpbnQgYXR0cmlic1tdID0gewogICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAg
ICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUs
ICAgICAgICAgMCwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAg
ICAgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVf
VEFSR0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAgICBF
R0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAogICAgICAgICAg
ICAgRUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SR0JBLAog
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBHTF9VTlNJR05F
RF9CWVRFLApAQCAtNDcwLDcgKzUzOCw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJU
ZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25NaXNzaW5nQXR0cmlidXRlcykKICAgICAgICAgY29uc3Qg
RUdMaW50IGF0dHJpYnNbXSA9IHsKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAg
ICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAg
IEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RB
UkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRhcmdldCgpLAogICAgICAgICAgICAgRUdM
X1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBHTF9CR1JBX0VYVCwKICAgICAgICAgICAg
IEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkdCQSwKICAg
ICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwKQEAgLTQ5MCw3ICs1NTgsNyBAQCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVz
dCwgTmVnYXRpdmVWYWxpZGF0aW9uTWlzc2luZ0F0dHJpYnV0ZXMpCiAgICAgICAgIGNvbnN0IEVH
TGludCBhdHRyaWJzW10gPSB7CiAgICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAgICAgICAg
ICAgICAxMCwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAg
RUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFS
R0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAogICAgICAgICAgICAg
RUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SR0JBLAogICAg
ICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLApAQCAtNTMyLDcgKzYwMCw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0
LCBOZWdhdGl2ZVZhbGlkYXRpb25NaXNzaW5nQXR0cmlidXRlcykKICAgICAgICAgICAgIEVHTF9X
SURUSCwgICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hU
LCAgICAgICAgICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9Q
TEFORV9BTkdMRSwgICAgICAgICAwLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAg
ICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBF
R0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAg
ICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVf
UkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwKICAgICAgICAgICAgIEVHTF9OT05FLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMX05PTkUsCkBAIC01NTMsNyArNjIxLDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVu
dEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbk1pc3NpbmdBdHRyaWJ1dGVzKQogICAgICAg
ICAgICAgRUdMX1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAg
IEVHTF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xf
SU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVS
RV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAg
ICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRh
cmdldCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBH
TF9CR1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsICAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwKICAgICAgICAgICAgIEVHTF9OT05FLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMX05PTkUsCkBAIC01NzMsNyArNjQxLDcgQEAgVEVTVF9QKElPU3VyZmFj
ZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbk1pc3NpbmdBdHRyaWJ1dGVzKQog
ICAgICAgICAgICAgRUdMX1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAg
ICAgICAgIEVHTF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAg
ICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xf
VEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4
dHVyZVRhcmdldCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FO
R0xFLCBHTF9CR1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAg
ICAgICAgICAgRUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9OT05FLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMX05PTkUsCkBAIC01OTAsNiArNjU4LDggQEAgVEVTVF9QKElP
U3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbk1pc3NpbmdBdHRyaWJ1
dGVzKQogLy8gVGVzdCB0aGUgdmFsaWRhdGlvbiBlcnJvcnMgZm9yIGJhZCBwYXJhbWV0ZXJzIGZv
ciBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciB3aXRoIElPU3VyZmFjZQogVEVTVF9Q
KElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbkJhZEF0dHJpYnV0
ZXMpCiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQoKSk7CisKICAg
ICBTY29wZWRJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gQ3JlYXRlU2luZ2xlUGxhbmVJT1N1cmZh
Y2UoMTAsIDEwLCAnQkdSQScsIDQpOwogCiAgICAgLy8gU3VjY2VzcyBjYXNlCkBAIC01OTksNyAr
NjY5LDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRh
dGlvbkJhZEF0dHJpYnV0ZXMpCiAgICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAgICAgICAg
ICAgICAxMCwKICAgICAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsICAgICAgICAg
MCwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgRUdMX1RF
WFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAg
ICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAogICAgICAgICAgICAgRUdMX1RF
WFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SR0JBLAogICAgICAgICAg
ICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLApA
QCAtNjIyLDcgKzY5Miw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBOZWdh
dGl2ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgRUdMX1dJRFRILCAgICAg
ICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9IRUlHSFQsICAgICAgICAg
ICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xF
LCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAg
ICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJF
X1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRhcmdldCgpLAogICAgICAgICAgICAg
RUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBHTF9CR1JBX0VYVCwKICAgICAgICAg
ICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkdCLAog
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBHTF9VTlNJR05F
RF9CWVRFLApAQCAtNjQzLDcgKzcxMyw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJU
ZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogICAgICAgICAgICAgRUdMX1dJ
RFRILCAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwg
ICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExB
TkVfQU5HTEUsICAgICAgICAgMCwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAg
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdM
X1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAg
ICAgICAgICBFR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX0JHUkFfRVhULAog
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9SR0JBLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfVFlQRV9BTkdMRSwgICAgICAgICAgICBH
TF9VTlNJR05FRF9CWVRFLApAQCAtNjY0LDcgKzczNCw3IEBAIFRFU1RfUChJT1N1cmZhY2VDbGll
bnRCdWZmZXJUZXN0LCBOZWdhdGl2ZVZhbGlkYXRpb25CYWRBdHRyaWJ1dGVzKQogICAgICAgICAg
ICAgRUdMX1dJRFRILCAgICAgICAgICAgICAgICAgICAgICAgICAxMSwKICAgICAgICAgICAgIEVH
TF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSU9T
VVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9U
QVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwKKyAgICAg
ICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4dHVyZVRhcmdl
dCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FOR0xFLCBHTF9C
R1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAgICAgICAgICAg
RUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVfQU5HTEUsICAg
ICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTY4NSw3ICs3NTUsNyBAQCBURVNUX1AoSU9T
dXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uQmFkQXR0cmlidXRlcykK
ICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAg
ICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAg
ICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0gICAgICAgICAgICBFR0xf
VEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAgZ2V0VGV4
dHVyZVRhcmdldCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFUX0FO
R0xFLCBHTF9CR1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgICAgICAg
ICAgICAgICAgRUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX1RZUEVf
QU5HTEUsICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTcwNiw3ICs3NzYsNyBAQCBU
RVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9uQmFkQXR0
cmlidXRlcykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAgICAgICAg
MTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAgICAgICAgIDExLAog
ICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICAwLAotICAgICAg
ICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9SRUNU
QU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAg
ICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFM
X0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JN
QVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBFR0xfVEVY
VFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC03MjAsMTQg
Kzc5MCwyNyBAQCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxp
ZGF0aW9uQmFkQXR0cmlidXRlcykKICAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0FU
VFJJQlVURSk7CiAgICAgfQogCi0gICAgLy8gRUdMX1RFWFRVUkVfRk9STUFUIG11c3QgYmUgYXQg
RUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFCisgICAgLy8gRUdMX1RFWFRVUkVfRk9STUFUIG11
c3QgYmUgZXF1YWwgdG8gdGhlIGNvbmZpZydzIHRleHR1cmUgdGFyZ2V0CiAgICAgeworICAgICAg
ICBFR0xpbnQgdGFyZ2V0ICAgICAgPSBnZXRUZXh0dXJlVGFyZ2V0KCk7CisgICAgICAgIEVHTGlu
dCB3cm9uZ1RhcmdldCA9IDA7CisgICAgICAgIHN3aXRjaCAodGFyZ2V0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRToKKyAgICAgICAgICAg
ICAgICB3cm9uZ1RhcmdldCA9IEVHTF9URVhUVVJFXzJEOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgICAgICB3cm9u
Z1RhcmdldCA9IEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICBjb25zdCBFR0xpbnQg
YXR0cmlic1tdID0gewogICAgICAgICAgICAgRUdMX1dJRFRILCAgICAgICAgICAgICAgICAgICAg
ICAgICAxMCwKICAgICAgICAgICAgIEVHTF9IRUlHSFQsICAgICAgICAgICAgICAgICAgICAgICAg
MTAsCiAgICAgICAgICAgICBFR0xfSU9TVVJGQUNFX1BMQU5FX0FOR0xFLCAgICAgICAgIDAsCi0g
ICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJF
XzJELAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICB3cm9u
Z1RhcmdldCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9BTkdMRSwg
R0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAg
ICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xF
LCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC03NDgsNyArODMxLDcgQEAgVEVTVF9Q
KElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZlVmFsaWRhdGlvbkJhZEF0dHJpYnV0
ZXMpCiAgICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgICAgICAgICAgICAgICAgIDEwLAog
ICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAg
ICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsICAgICAgICAgLTEsCi0gICAgICAgICAg
ICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JFQ1RBTkdM
RV9BTkdMRSwKKyAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAg
Z2V0VGV4dHVyZVRhcmdldCgpLAogICAgICAgICAgICAgRUdMX1RFWFRVUkVfSU5URVJOQUxfRk9S
TUFUX0FOR0xFLCBHTF9CR1JBX0VYVCwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwg
ICAgICAgICAgICAgICAgRUdMX1RFWFRVUkVfUkdCQSwKICAgICAgICAgICAgIEVHTF9URVhUVVJF
X1RZUEVfQU5HTEUsICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwKQEAgLTc2OSw3ICs4NTIs
NyBAQCBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwgTmVnYXRpdmVWYWxpZGF0aW9u
QmFkQXR0cmlidXRlcykKICAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAsCiAgICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgICAgICAgICAgICAgICAg
IDEwLAogICAgICAgICAgICAgRUdMX0lPU1VSRkFDRV9QTEFORV9BTkdMRSwgICAgICAgICAxLAot
ICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCAgICAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUsCisgICAgICAgICAgICBFR0xfVEVYVFVSRV9UQVJHRVQsICAgICAg
ICAgICAgICAgIGdldFRleHR1cmVUYXJnZXQoKSwKICAgICAgICAgICAgIEVHTF9URVhUVVJFX0lO
VEVSTkFMX0ZPUk1BVF9BTkdMRSwgR0xfQkdSQV9FWFQsCiAgICAgICAgICAgICBFR0xfVEVYVFVS
RV9GT1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgICAgICBF
R0xfVEVYVFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC03
OTAsNyArODczLDcgQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5lZ2F0aXZl
VmFsaWRhdGlvbkJhZEF0dHJpYnV0ZXMpCiAgICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAg
ICAgICAgICAgICAgICAgIDEwLAogICAgICAgICAgICAgRUdMX0hFSUdIVCwgICAgICAgICAgICAg
ICAgICAgICAgICAxMCwKICAgICAgICAgICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsICAg
ICAgICAgMCwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgICAgICAgICAgICAgICAg
RUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLAorICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFS
R0VULCAgICAgICAgICAgICAgICBnZXRUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIEdMX1JHQkEsCiAgICAgICAgICAgICBFR0xf
VEVYVFVSRV9GT1JNQVQsICAgICAgICAgICAgICAgIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAg
ICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
CkBAIC04MDgsNiArODkxLDggQEAgVEVTVF9QKElPU3VyZmFjZUNsaWVudEJ1ZmZlclRlc3QsIE5l
Z2F0aXZlVmFsaWRhdGlvbkJhZEF0dHJpYnV0ZXMpCiAvLyBUZXN0IElPU3VyZmFjZSBwYnVmZmVy
cyBjYW4gYmUgbWFkZSBjdXJyZW50CiBURVNUX1AoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwg
TWFrZUN1cnJlbnQpCiB7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNJT1N1cmZhY2VFeHQo
KSk7CisKICAgICBTY29wZWRJT1N1cmZhY2VSZWYgaW9TdXJmYWNlID0gQ3JlYXRlU2luZ2xlUGxh
bmVJT1N1cmZhY2UoMTAsIDEwLCAnQkdSQScsIDQpOwogCiAgICAgRUdMU3VyZmFjZSBwYnVmZmVy
OwpAQCAtODI3LDQgKzkxMiw4IEBAIFRFU1RfUChJT1N1cmZhY2VDbGllbnRCdWZmZXJUZXN0LCBN
YWtlQ3VycmVudCkKIC8vIFRPRE8oY3dhbGxlekBjaHJvbWl1bS5vcmcpOiBUZXN0IHNldHRpbmcg
d2lkdGggYW5kIGhlaWdodCB0byBsZXNzIHRoYW4gdGhlIElPU3VyZmFjZSdzIHdvcmsgYXMKIC8v
IGV4cGVjdGVkLgogCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKElPU3VyZmFjZUNsaWVudEJ1ZmZl
clRlc3QsIEVTMl9PUEVOR0woKSwgRVMzX09QRU5HTCgpKTsKK0FOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoSU9TdXJmYWNlQ2xpZW50QnVmZmVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTCgpLAorICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCisgICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9WVUxLQU5fU1dJRlRTSEFERVIoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX1ZVTEtBTl9TV0lGVFNIQURFUigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNlVGVz
dC5jcHAKaW5kZXggMThkOTc4NmI0MGI2YjQxN2FhZWZmMTI4NjIyNGNkYTA0ZmFhOGQyMy4uYTNi
MTc1OGZkMTE3NjQ1MThlNTQ2NGZkOTEzZjVhY2ZiOThjZjZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNlVGVzdC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJm
YWNlVGVzdC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBFR0xTdXJmYWNlVGVzdCA6IHB1
YmxpYyBBTkdMRVRlc3QKICAgICAgICAgQVNTRVJUX1RSVUUoZWdsSW5pdGlhbGl6ZShtRGlzcGxh
eSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgPT0gRUdMX1RSVUUpOwogCiAgICAgICAg
IGVnbEJpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xH
ZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
CiAgICAgfQogCiAgICAgdm9pZCBpbml0aWFsaXplQ29udGV4dCgpCkBAIC0xMjIsMjYgKzEyMiwz
NCBAQCBjbGFzcyBFR0xTdXJmYWNlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKICAgICAgICAgRUdM
aW50IGNvbnRleHRBdHRpYnV0ZXNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgR2V0
UGFyYW0oKS5tYWpvclZlcnNpb24sIEVHTF9OT05FfTsKIAogICAgICAgICBtQ29udGV4dCA9IGVn
bENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25maWcsIG51bGxwdHIsIGNvbnRleHRBdHRpYnV0
ZXMpOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsK
KyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CiAKICAgICAgICAgbVNlY29uZENvbnRleHQg
PSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBudWxscHRyLCBjb250ZXh0QXR0
aWJ1dGVzKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VT
Uyk7CisgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogICAgIH0KIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVN1cmZhY2UoRUdMQ29uZmlnIGNvbmZpZykKICAgICB7CiAgICAgICAgIG1Db25maWcg
PSBjb25maWc7CiAKLSAgICAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBzdXJmYWNlQXR0cmlidXRl
czsKLSAgICAgICAgc3VyZmFjZUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKLSAgICAg
ICAgc3VyZmFjZUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKKyAgICAgICAgc3RkOjp2
ZWN0b3I8RUdMaW50PiB3aW5kb3dBdHRyaWJ1dGVzOworICAgICAgICB3aW5kb3dBdHRyaWJ1dGVz
LnB1c2hfYmFjayhFR0xfTk9ORSk7CiAKICAgICAgICAgLy8gQ3JlYXRlIGZpcnN0IHdpbmRvdyBz
dXJmYWNlCiAgICAgICAgIG1XaW5kb3dTdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZSht
RGlzcGxheSwgbUNvbmZpZywgbU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdXJmYWNlQXR0cmlidXRl
c1swXSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1Mp
OwotCi0gICAgICAgIG1QYnVmZmVyU3VyZmFjZSA9IGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKG1E
aXNwbGF5LCBtQ29uZmlnLCAmc3VyZmFjZUF0dHJpYnV0ZXNbMF0pOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93QXR0cmlidXRlcy5kYXRhKCkp
OworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKKworICAgICAgICAvLyBHaXZlIHBidWZm
ZXIgbm9uLXplcm8gZGltZW5zaW9ucy4KKyAgICAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBwYnVm
ZmVyQXR0cmlidXRlczsKKyAgICAgICAgcGJ1ZmZlckF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9X
SURUSCk7CisgICAgICAgIHBidWZmZXJBdHRyaWJ1dGVzLnB1c2hfYmFjayg2NCk7CisgICAgICAg
IHBidWZmZXJBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfSEVJR0hUKTsKKyAgICAgICAgcGJ1ZmZl
ckF0dHJpYnV0ZXMucHVzaF9iYWNrKDY0KTsKKyAgICAgICAgcGJ1ZmZlckF0dHJpYnV0ZXMucHVz
aF9iYWNrKEVHTF9OT05FKTsKKworICAgICAgICBtUGJ1ZmZlclN1cmZhY2UgPSBlZ2xDcmVhdGVQ
YnVmZmVyU3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgcGJ1ZmZlckF0dHJpYnV0ZXMuZGF0YSgp
KTsKKyAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CiAgICAgICAgIGluaXRpYWxpemVDb250
ZXh0KCk7CiAgICAgfQogCkBAIC0yMDYsNyArMjE0LDcgQEAgY2xhc3MgRUdMU3VyZmFjZVRlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0CiAgICAgdm9pZCBydW5NZXNzYWdlTG9vcFRlc3QoRUdMU3VyZmFj
ZSBzZWNvbmRTdXJmYWNlLCBFR0xDb250ZXh0IHNlY29uZENvbnRleHQpCiAgICAgewogICAgICAg
ICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNl
LCBtQ29udGV4dCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NV
Q0NFU1MpOworICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKIAogICAgICAgICAvLyBNYWtl
IGEgc2Vjb25kIGNvbnRleHQgY3VycmVudAogICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxh
eSwgc2Vjb25kU3VyZmFjZSwgc2Vjb25kU3VyZmFjZSwgc2Vjb25kQ29udGV4dCk7CkBAIC0yMTks
MTAgKzIyNywxMCBAQCBjbGFzcyBFR0xTdXJmYWNlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKIAog
ICAgICAgICBtV2luZG93U3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXks
IG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VyZmFjZUF0dHJpYnV0ZXNbMF0pOwot
ICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKKyAgICAg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CiAKICAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3Bs
YXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgICAgICBB
U1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKKyAgICAgICAgQVNTRVJU
X0VHTF9TVUNDRVNTKCk7CiAKICAgICAgICAgbU9TV2luZG93LT5zaWduYWxUZXN0RXZlbnQoKTsK
ICAgICAgICAgbU9TV2luZG93LT5tZXNzYWdlTG9vcCgpOwpAQCAtMzc1LDE3ICszODMsMTQgQEAg
VEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBNZXNzYWdlTG9vcEJ1Z0NvbnRleHQpCiAvLyBUZXN0IGEg
YnVnIHdoZXJlIGNhbGxpbmcgbWFrZUN1cnJlbnQgdHdpY2Ugd291bGQgcmVsZWFzZSB0aGUgc3Vy
ZmFjZQogVEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBNYWtlQ3VycmVudFR3aWNlKQogewotICAgIC8v
IFRPRE8oc3lvdXNzZWZpKTogaHR0cDovL2FuZ2xlYnVnLmNvbS8zMTIzCi0gICAgQU5HTEVfU0tJ
UF9URVNUX0lGKElzQW5kcm9pZCgpKTsKLQogICAgIGluaXRpYWxpemVEaXNwbGF5KCk7CiAgICAg
aW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVmYXVsdENvbmZpZygpOwogCiAgICAgZWdsTWFrZUN1cnJl
bnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwot
ICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOworICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOwogCiAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dT
dXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgIEFTU0VSVF9UUlVFKGVnbEdl
dEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOworICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwogCiAg
ICAgLy8gU2ltcGxlIG9wZXJhdGlvbiB0byB0ZXN0IHRoZSBGQk8gaXMgc2V0IGFwcHJvcHJpYXRl
bHkKICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwpAQCAtMzk0LDggKzM5OSw4IEBA
IFRFU1RfUChFR0xTdXJmYWNlVGVzdCwgTWFrZUN1cnJlbnRUd2ljZSkKIC8vIFRlc3QgdGhhdCB0
aGUgd2luZG93IHN1cmZhY2UgaXMgY29ycmVjdGx5IHJlc2l6ZWQgYWZ0ZXIgY2FsbGluZyBzd2Fw
QnVmZmVycwogVEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBSZXNpemVXaW5kb3cpCiB7Ci0gICAgLy8g
VE9ETyhzeW91c3NlZmkpOiBodHRwOi8vYW5nbGVidWcuY29tLzMxMjMKLSAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNBbmRyb2lkKCkpOworICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ1Mwor
ICAgIEFOR0xFX1NLSVBfVEVTVF9JRihpc1Z1bGthblJlbmRlcmVyKCkgJiYgSXNMaW51eCgpICYm
IElzSW50ZWwoKSk7CiAKICAgICAvLyBOZWNlc3NhcnkgZm9yIGEgd2luZG93IHJlc2l6aW5nIHRl
c3QgaWYgdGhlcmUgaXMgbm8gcGVyLWZyYW1lIHdpbmRvdyBzaXplIHF1ZXJ5CiAgICAgbU9TV2lu
ZG93LT5zZXRWaXNpYmxlKHRydWUpOwpAQCAtNDQ2LDggKzQ1MSwxMyBAQCBURVNUX1AoRUdMU3Vy
ZmFjZVRlc3QsIFJlc2l6ZVdpbmRvdykKIC8vIFRlc3QgdGhhdCB0aGUgYmFja2J1ZmZlciBpcyBj
b3JyZWN0bHkgcmVzaXplZCBhZnRlciBjYWxsaW5nIHN3YXBCdWZmZXJzCiBURVNUX1AoRUdMU3Vy
ZmFjZVRlc3QsIFJlc2l6ZVdpbmRvd1dpdGhEcmF3KQogewotICAgIC8vIE5lY2Vzc2FyeSBmb3Ig
YSB3aW5kb3cgcmVzaXppbmcgdGVzdCBpZiB0aGVyZSBpcyBubyBwZXItZnJhbWUgd2luZG93IHNp
emUgcXVlcnkKKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQ0NTMKKyAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoaXNWdWxrYW5SZW5kZXJlcigpICYmIElzTGludXgoKSAmJiBJc0ludGVsKCkpOwor
CisgICAgLy8gRmxha3kgb24gTGludXggU3dBTkdMRSBodHRwOi8vYW5nbGVidWcuY29tLzQ0NTMK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNMaW51eCgpICYmIGlzU3dpZnRzaGFkZXIoKSk7CiAK
KyAgICAvLyBOZWNlc3NhcnkgZm9yIGEgd2luZG93IHJlc2l6aW5nIHRlc3QgaWYgdGhlcmUgaXMg
bm8gcGVyLWZyYW1lIHdpbmRvdyBzaXplIHF1ZXJ5CiAgICAgbU9TV2luZG93LT5zZXRWaXNpYmxl
KHRydWUpOwogCiAgICAgaW5pdGlhbGl6ZURpc3BsYXkoKTsKQEAgLTU0OSw4NCArNTU5LDYgQEAg
VEVTVF9QKEVHTFN1cmZhY2VUZXN0LCBSZXNldE5hdGl2ZVdpbmRvdykKICAgICBBU1NFUlRfRUdM
X1NVQ0NFU1MoKTsKIH0KIAotLy8gVGVzdCB0aGF0IHN3YXAgaW50ZXJ2YWwgd29ya3MuCi1URVNU
X1AoRUdMU3VyZmFjZVRlc3QsIFN3YXBJbnRlcnZhbCkKLXsKLSAgICAvLyBPbiBPU1gsIG1heElu
dGVydmFsID49IDEgaXMgYWR2ZXJ0aXNlZCwgYnV0IGlzIG5vdCBpbXBsZW1lbnRlZC4gIGh0dHA6
Ly9hbmdsZWJ1Zy5jb20vMzE0MAotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc09TWCgpKTsKLSAg
ICAvLyBGbGFreSBoYW5nIG9uIE5leHVzIDVYIGFuZCA2UC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8z
MzY0Ci0gICAgQU5HTEVfU0tJUF9URVNUX0lGKChJc05leHVzNVgoKSB8fCBJc05leHVzNlAoKSkg
JiYgaXNHTEVTUmVuZGVyZXIoKSk7Ci0gICAgLy8gRmxha3kgaGFuZyBvbiBVYnVudHUgMTkuMDQg
TlZJRElBIFZ1bGthbi4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zNjE4Ci0gICAgLy8gTWF5YmUgaGFu
ZyBkdWUgdG8gYnVnIGluIE5WSURJQSBMaW51eCBWdWxrYW4gZHJpdmVyLiBodHRwOi8vYW5nbGVi
dWcuY29tLzM0NTAKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNMaW51eCgpICYmIElzTlZJRElB
KCkgJiYgaXNWdWxrYW5SZW5kZXJlcigpKTsKLSAgICAvLyBGbGFreSBvbiBMaW51eCBOVklESUEg
T3BlbkdMIGRyaXZlci4gaHR0cDovL2FuZ2xlYnVnLmNvbS8zODA3Ci0gICAgQU5HTEVfU0tJUF9U
RVNUX0lGKElzTGludXgoKSAmJiBJc05WSURJQSgpICYmIGlzR0xSZW5kZXJlcigpKTsKLSAgICAv
LyBUZXN0IGZhaWxzIG9uIFN3YW5nbGUgaHR0cDovL2FuZ2xlYnVnLmNvbS80MTY5Ci0gICAgQU5H
TEVfU0tJUF9URVNUX0lGKGlzVnVsa2FuU3dpZnRzaGFkZXJSZW5kZXJlcigpKTsKLQotICAgIEFO
R0xFX1NLSVBfVEVTVF9JRihJc0FSTTY0KCkgJiYgSXNXaW5kb3dzKCkgJiYgSXNEM0QoKSk7Ci0K
LSAgICBpbml0aWFsaXplRGlzcGxheSgpOwotICAgIGluaXRpYWxpemVTdXJmYWNlV2l0aERlZmF1
bHRDb25maWcoKTsKLSAgICBpbml0aWFsaXplQ29udGV4dCgpOwotCi0gICAgZWdsTWFrZUN1cnJl
bnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwot
ICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSk7Ci0gICAgQVNTRVJU
X0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xpbnQgbWluSW50ZXJ2YWwsIG1heEludGVydmFsOwot
Ci0gICAgQVNTRVJUX1RSVUUoZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBtQ29uZmlnLCBF
R0xfTUlOX1NXQVBfSU5URVJWQUwsICZtaW5JbnRlcnZhbCkpOwotICAgIEFTU0VSVF9UUlVFKGVn
bEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgbUNvbmZpZywgRUdMX01BWF9TV0FQX0lOVEVSVkFM
LCAmbWF4SW50ZXJ2YWwpKTsKLQotICAgIGZvciAoaW50IGl0ZXIgPSAwOyBpdGVyIDwgMjsgKytp
dGVyKQotICAgIHsKLSAgICAgICAgaWYgKG1heEludGVydmFsID49IDEpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFRpbWVyIHRpbWVyOwotCi0gICAgICAgICAgICBlZ2xTd2FwSW50ZXJ2YWwobURp
c3BsYXksIDEpOwotICAgICAgICAgICAgdGltZXIuc3RhcnQoKTsKLSAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMTgwOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZWdsU3dhcEJ1ZmZlcnMobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRpbWVyLnN0b3AoKTsKLSAgICAgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOwotCi0gICAgICAgICAgICAvLyAxMjAgZnJhbWVzIGF0IDYwZnBzIHNob3VsZCB0YWtlIDNz
LiAgQXQgbG93ZXIgZnBzLCBpdCBzaG91bGQgdGFrZSBldmVuIGxvbmdlci4gIEF0Ci0gICAgICAg
ICAgICAvLyAxNDRmcHMsIGl0IHdvdWxkIHRha2UgMS4yNXMuICBMZXQncyB1c2UgMXMgYXMgYSBs
b3dlciBib3VuZC4KLSAgICAgICAgICAgIEFTU0VSVF9HVCh0aW1lci5nZXRFbGFwc2VkVGltZSgp
LCAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtaW5JbnRlcnZhbCA8PSAwKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBUaW1lciB0aW1lcjsKLQotICAgICAgICAgICAgZWdsU3dhcEludGVy
dmFsKG1EaXNwbGF5LCAwKTsKLSAgICAgICAgICAgIHRpbWVyLnN0YXJ0KCk7Ci0gICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSk7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBTZWNvbmQgZWdsU3dhcEJ1ZmZlcnMgY2F1c2VzIGFuIEVHTF9CQURfU1VS
RkFDRSBvbiBOdmlkaWEgc2hpZWxkIHR2LgotICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vMzE0NC4KLSAgICAgICAgICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNOVklE
SUFTaGllbGQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aW1lci5zdG9wKCk7Ci0g
ICAgICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAgICAgLy8gMTAwIG5v
LW9wIHN3YXBzIHNob3VsZCBiZSBmYWlybHkgZmFzdCwgdGhvdWdoIHRoZXJlIGlzIG5vIGd1YXJh
bnRlZSBob3cgZmFzdCBpdCBjYW4KLSAgICAgICAgICAgIC8vIGJlLiAxMG1zIHBlciBzd2FwIGlz
IHByb2JhYmx5IGEgc2FmZSB1cHBlciBib3VuZC4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAvLyBUT0RPKHN5b3Vzc2VmaSk6IGlmIGEgc3VyZmFjZSBkb2Vzbid0IHRydWx5IGFsbG93IG5v
LXZzeW5jLCB0aGlzIGNhbiBmYWlsLiAgVW50aWwKLSAgICAgICAgICAgIC8vIHRoZXJlJ3MgYSB3
YXkgdG8gcXVlcnkgdGhlIGV4YWN0IG1pbkludGVydmFsIGZyb20gdGhlIHN1cmZhY2UsIHRoaXMg
dGVzdCBjYW5ub3QgYmUKLSAgICAgICAgICAgIC8vIGVuYWJsZWQuCi0gICAgICAgICAgICAvLyBB
U1NFUlRfTFQodGltZXIuZ2V0RWxhcHNlZFRpbWUoKSwgMSk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KIC8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMgYSBFR0xDb25maWcg
d2l0aCAxNmJpdAogLy8gc3VwcG9ydCBHTF9SR0I1NjUKIFRFU1RfUChFR0xTdXJmYWNlVGVzdCwg
Q3JlYXRlV2l0aEVHTENvbmZpZzU2NTBTdXBwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTeW5jVGVzdC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNUZXN0LmNwcAppbmRl
eCA3YWMyNDIwODNlNzNlNmE1YTMxMTRkMGI4MDI4ZDZhZGRiZTFlOGQ5Li4yZWU3YTAwY2YxZGFl
MjI4NDllOTFjYjI1NWFjYmZlYzVmMzMwNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNUZXN0LmNwcApAQCAt
MjMzLDYgKzIzMywxNyBAQCBURVNUX1AoRUdMU3luY1Rlc3QsIEJhc2ljT3BlcmF0aW9ucykKICAg
ICBFWFBFQ1RfRUdMX1RSVUUoZWdsRGVzdHJveVN5bmNLSFIoZGlzcGxheSwgc3luYykpOwogfQog
CisvLyBUZXN0IGVnbFdhaXROYXRpdmUgYXBpCitURVNUX1AoRUdMU3luY1Rlc3QsIFdhaXROYXRp
dmUpCit7CisgICAgLy8gQ2xlYXIgdG8gcmVkIGNvbG9yCisgICAgZ2xDbGVhckNvbG9yKDEuMGYs
IDAuMGYsIDAuMGYsIDEuMGYpOworCisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICBFWFBFQ1RfRUdMX1RSVUUoZWdsV2FpdE5hdGl2ZShFR0xfQ09SRV9OQVRJVkVfRU5HSU5F
KSk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OnJlZCk7Cit9CisKIEFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoRUdMU3luY1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0F0b21pY0NvdW50ZXJCdWZmZXJUZXN0
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9BdG9taWND
b3VudGVyQnVmZmVyVGVzdC5jcHAKaW5kZXggYTNkZDkyY2U3MDYyMzY2ZjgxYTE4NWE4NTFlMjIw
M2U2MzQ3NjY5YS4uNmFhNzZkZTJkNDIzMWEzYTgwNzk3OTg4NWI0N2FjZmFjNDAwYmU4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0F0b21p
Y0NvdW50ZXJCdWZmZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvQXRvbWljQ291bnRlckJ1ZmZlclRlc3QuY3BwCkBAIC00MzMsNiArNDMz
LDU3IEBAIHZvaWQgbWFpbigpCiAgICAgfQogfQogCisvLyBUZXN0IGluYWN0aXZlIGF0b21pYyBj
b3VudGVyCitURVNUX1AoQXRvbWljQ291bnRlckJ1ZmZlclRlc3QzMSwgQXRvbWljQ291bnRlcklu
YWN0aXZlKQoreworICAgIGNvbnN0ZXhwciBjaGFyIGtGU1tdID0KKyAgICAgICAgIiN2ZXJzaW9u
IDMxMCBlc1xuIgorICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgorCisgICAgICAg
IC8vIFRoaXMgaW5hY3RpdmUgYXRvbWljIGNvdW50ZXIgc2hvdWxkIGJlIHJlbW92ZWQgYnkgUmVt
b3ZlSW5hY3RpdmVJbnRlcmZhY2VWYXJpYWJsZXMKKyAgICAgICAgImxheW91dChiaW5kaW5nID0g
MCkgdW5pZm9ybSBhdG9taWNfdWludCBpbmFjdGl2ZTtcbiIKKworICAgICAgICAib3V0IGhpZ2hw
IHZlYzQgbXlfY29sb3I7XG4iCisgICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIG15X2NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgor
ICAgICAgICAifVxuIjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgZXNzbDMxX3No
YWRlcnM6OnZzOjpTaW1wbGUoKSwga0ZTKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CisK
KyAgICBkcmF3UXVhZChwcm9ncmFtLCBlc3NsMzFfc2hhZGVyczo6UG9zaXRpb25BdHRyaWIoKSwg
MC4wZik7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOworfQorCisvLyBUZXN0IGluYWN0aXZlIG1lbW9y
eUJhcnJpZXJBdG9taWNDb3VudGVyCitURVNUX1AoQXRvbWljQ291bnRlckJ1ZmZlclRlc3QzMSwg
QXRvbWljQ291bnRlck1lbW9yeUJhcnJpZXIpCit7CisgICAgY29uc3RleHByIGNoYXIga0ZTW10g
PQorICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCisgICAgICAgICJwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7XG4iCisgICAgICAgIC8vIFRoaXMgaW5hY3RpdmUgYXRvbWljIGNvdW50ZXIgc2hvdWxk
IGJlIHJlbW92ZWQgYnkgUmVtb3ZlSW5hY3RpdmVJbnRlcmZhY2VWYXJpYWJsZXMKKyAgICAgICAg
ImxheW91dChiaW5kaW5nID0gMCkgdW5pZm9ybSBhdG9taWNfdWludCBpbmFjdGl2ZTtcbiIKKyAg
ICAgICAgIm91dCBoaWdocCB2ZWM0IG15X2NvbG9yO1xuIgorICAgICAgICAidm9pZCBtYWluKClc
biIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBteV9jb2xvciA9IHZlYzQoMC4wLCAxLjAs
IDAuMCwgMS4wKTtcbiIKKyAgICAgICAgLy8gVGhpcyBiYXJyaWVyIHNob3VsZCBiZSByZW1vdmVk
IGJ5IFJlbW92ZUF0b21pY0NvdW50ZXJCdWlsdGlucyBiZWNhdXNlCisgICAgICAgIC8vIHRoZXJl
IGFyZSBubyBhY3RpdmUgYXRvbWljIGNvdW50ZXJzCisgICAgICAgICIgICAgbWVtb3J5QmFycmll
ckF0b21pY0NvdW50ZXIoKTtcbiIKKyAgICAgICAgIn1cbiI7CisKKyAgICBBTkdMRV9HTF9QUk9H
UkFNKHByb2dyYW0sIGVzc2wzMV9zaGFkZXJzOjp2czo6U2ltcGxlKCksIGtGUyk7CisgICAgZ2xV
c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgZHJhd1F1YWQocHJvZ3JhbSwgZXNzbDMxX3NoYWRl
cnM6OlBvc2l0aW9uQXR0cmliKCksIDAuMGYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwor
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKK30KKwog
Ly8gVE9ETyhzeW91c3NlZmkpOiByZS1lbmFibGUgdGVzdHMgb24gVnVsa2FuIG9uY2UgaHR0cDov
L2FuZ2xlYnVnLmNvbS8zNzM4IGlzIHJlc29sdmVkLiAgVGhlIGlzc3VlCiAvLyBpcyB3aXRoIFdH
TCB3aGVyZSBpZiBhIFZ1bGthbiB0ZXN0IGlzIHJ1biBmaXJzdCBpbiB0aGUgc2hhcmQsIGl0IGNh
dXNlcyBjcmFzaGVzIHdoZW4gYW4gT3BlbkdMCiAvLyB0ZXN0IGlzIHJ1biBhZnRlcndhcmRzLiAg
QXRvbWljQ291bnRlciogdGVzdHMgYXJlIGFscGhhYmV0aWNhbGx5IGZpcnN0LCBhbmQgaGF2aW5n
IHRoZW0gbm90IHJ1bgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0F0dHJpYnV0ZUxheW91dFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0F0dHJpYnV0ZUxheW91dFRlc3QuY3BwCmluZGV4IDQ0
MWE1ZjZmOTJjNDEwYWRlNWEyNjJjYTBjMzgzNTEwYTViOTU0Y2YuLmMwYWIyOGQ3N2EyYmVmYTI5
ZmVhZWJkYjlhYWUwZTRkNDE0MTFkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9BdHRyaWJ1dGVMYXlvdXRUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQXR0cmlidXRlTGF5b3V0VGVz
dC5jcHAKQEAgLTQ1NCw2ICs0NTQsOSBAQCBjbGFzcyBBdHRyaWJ1dGVMYXlvdXRCdWZmZXJJbmRl
eGVkIDogcHVibGljIEF0dHJpYnV0ZUxheW91dFRlc3QKIAogVEVTVF9QKEF0dHJpYnV0ZUxheW91
dE5vbkluZGV4ZWQsIFRlc3QpCiB7CisgICAgLy8gRmxha3kgb24gTGludXggU3dBTkdMRSBodHRw
Oi8vYW5nbGVidWcuY29tLzQ1MDIKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNMaW51eCgpICYm
IGlzU3dpZnRzaGFkZXIoKSk7CisKICAgICBSdW4odHJ1ZSk7CiAgICAgQU5HTEVfU0tJUF9URVNU
X0lGKElzV2luZG93cygpICYmIElzQU1EKCkgJiYgSXNPcGVuR0woKSk7CiAgICAgUnVuKGZhbHNl
KTsKQEAgLTQ2OCw2ICs0NzEsOSBAQCBURVNUX1AoQXR0cmlidXRlTGF5b3V0TWVtb3J5SW5kZXhl
ZCwgVGVzdCkKIAogVEVTVF9QKEF0dHJpYnV0ZUxheW91dEJ1ZmZlckluZGV4ZWQsIFRlc3QpCiB7
CisgICAgLy8gRmxha3kgb24gTGludXggU3dBTkdMRSBodHRwOi8vYW5nbGVidWcuY29tLzQ1MDIK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNMaW51eCgpICYmIGlzU3dpZnRzaGFkZXIoKSk7CisK
ICAgICBSdW4odHJ1ZSk7CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzV2luZG93cygpICYmIElz
QU1EKCkgJiYgKElzT3BlbkdMKCkgfHwgSXNEM0QxMV9GTDkzKCkpKTsKICAgICBSdW4oZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0JpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9CaW5kVW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAKaW5kZXggZWFiYjJh
YzJkODU4NmUyYzI2YzA3NTIxOWQyYTIzZTY4MzdiYTk2MC4uNDJmNzc1MDk0MDUyYjZkYmM5MGNi
M2Y0NTZiMDVkMzMyZmYyMWUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1Mb2NhdGlv
blRlc3QuY3BwCkBAIC0zNDIsNiArMzQyLDQ4IEBAIHZvaWQgbWFpbigpCiAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAorLy8gR0wgYmFja2VuZCBvcHRpbWl6
ZXMgYXdheSBhIHVuaWZvcm0gaW4gdGhlIHZlcnRleCBzaGFkZXIgaWYgaXQncyBvbmx5IHVzZWQg
dG8KKy8vIGNvbXB1dGUgYSB2YXJ5aW5nIHRoYXQgaXMgbmV2ZXIgcmVmZXJlbmNlZCBpbiB0aGUg
ZnJhZ21lbnQgc2hhZGVyLgorVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LCBVbnVzZWRV
bmlmb3JtVXBkYXRlQ29tcGxleCkKK3sKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRl
bnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iKSk7CisKKyAg
ICBBU1NFUlRfTkUobnVsbHB0ciwgZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0pOworCisg
ICAgY29uc3RleHByIGNoYXIga1ZTW10gPSBSIihwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CithdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordmFyeWluZyB2ZWM0IHZfdW51c2VkOwordW5pZm9ybSB2
ZWM0IHVfdW51c2VkOwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247CisgICAgdl91bnVzZWQgPSB1X3VudXNlZDsKK30KKykiOworCisgICAgY29uc3RleHByIGNo
YXIga0ZTW10gPSBSIihwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3ZhcnlpbmcgdmVjNCB2X3Vu
dXNlZDsKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwg
MC4wLCAxLjApOworfSkiOworCisgICAgY29uc3QgR0xpbnQgdW51c2VkTG9jYXRpb24gPSAxOwor
CisgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShrVlMsIGtGUywgWyZdKEdMdWludCBwcm9n
cmFtKSB7CisgICAgICAgIGdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKHByb2dyYW0sIHVu
dXNlZExvY2F0aW9uLCAidV91bnVzZWQiKTsKKyAgICB9KTsKKyAgICBBU1NFUlRfTkUoMHUsIG1Q
cm9ncmFtKTsKKworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisKKyAgICAvLyBObyBlcnJv
cnMgb24gYm91bmQgbG9jYXRpb25zIG9mIG5hbWVzIHRoYXQgZG8gbm90IGV4aXN0CisgICAgLy8g
aW4gdGhlIHNoYWRlci4gT3RoZXJ3aXNlIGl0IHdvdWxkIGJlIGluY29uc2lzdGVudCB3cnQgdGhl
CisgICAgLy8gb3B0aW1pemF0aW9uIGNhc2UuCisgICAgZ2xVbmlmb3JtNGYodW51c2VkTG9jYXRp
b24sIDAuMjVmLCAwLjI1ZiwgMC4yNWYsIDAuMjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKK30KKwogLy8gVGVzdCBmb3IgYSBidWcgd2hlcmUgdXNpbmcgYSBzYW1wbGVyIGNhdXNlZCBH
TCBlcnJvciBpZiB0aGUgbVByb2dyYW0gaGFkCiAvLyB1bmlmb3JtcyB0aGF0IHdlcmUgb3B0aW1p
emVkIGF3YXkgYnkgdGhlIGRyaXZlci4gVGhpcyB3YXMgb25seSBhIHByb2JsZW0gd2l0aAogLy8g
Z2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0gaW1wbGVtZW50YXRpb24uIFRoaXMgY291bGQg
YmUgcmVwcm9lZCBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcAppbmRleCBhYWE5Yzg4YzE5YmNjZTgzOWIwZTdm
YmI4MDA4ZGZmNjMzMDI5OTgxLi5hMzRjMDQzNGM2YWI5MWM3NGE4NzA5NDBlN2RlYjM4MzlmZTkw
MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQ2xlYXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQ2xlYXJUZXN0LmNwcApAQCAtMTUsMjYgKzE1LDYgQEAgdXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOwogCiBuYW1lc3BhY2UKIHsKLQotVmVjdG9yNCBSYW5kb21WZWM0KGludCBzZWVkLCBm
bG9hdCBtaW5WYWx1ZSwgZmxvYXQgbWF4VmFsdWUpCi17Ci0gICAgUk5HIHJuZyhzZWVkKTsKLSAg
ICBzcmFuZChzZWVkKTsKLSAgICByZXR1cm4gVmVjdG9yNCgKLSAgICAgICAgcm5nLnJhbmRvbUZs
b2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLCBybmcucmFuZG9tRmxvYXRCZXR3ZWVuKG1p
blZhbHVlLCBtYXhWYWx1ZSksCi0gICAgICAgIHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFs
dWUsIG1heFZhbHVlKSwgcm5nLnJhbmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUp
KTsKLX0KLQotR0xDb2xvciBWZWM0VG9Db2xvcihjb25zdCBWZWN0b3I0ICZ2ZWMpCi17Ci0gICAg
R0xDb2xvciBjb2xvcjsKLSAgICBjb2xvci5SID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmVjLngo
KSAqIDI1NS4wZik7Ci0gICAgY29sb3IuRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZlYy55KCkg
KiAyNTUuMGYpOwotICAgIGNvbG9yLkIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZWMueigpICog
MjU1LjBmKTsKLSAgICBjb2xvci5BID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odmVjLncoKSAqIDI1
NS4wZik7Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotCiBjbGFzcyBDbGVhclRlc3RCYXNlIDogcHVi
bGljIEFOR0xFVGVzdAogewogICBwcm90ZWN0ZWQ6CkBAIC04NjYsNiArODQ2LDY0IEBAIFRFU1Rf
UChDbGVhclRlc3RFUzMsIE1hc2tlZFNjaXNzb3JlZENsZWFyTXVsdGlwbGVBdHRhY2htZW50cykK
ICAgICB9CiB9CiAKKy8vIFRlc3QgY2xlYXJpbmcgbXVsdGlwbGUgYXR0YWNobWVudHMgaW4gdGhl
IHByZXNlbmNlIG9mIGFuIGluZGV4ZWQgY29sb3IgbWFzay4KK1RFU1RfUChDbGVhclRlc3RFUzMs
IE1hc2tlZEluZGV4ZWRDbGVhck11bHRpcGxlQXR0YWNobWVudHMpCit7CisgICAgQU5HTEVfU0tJ
UF9URVNUX0lGKCFJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRl
eGVkIikpOworCisgICAgY29uc3RleHByIHVpbnQzMl90IGtTaXplICAgICAgICAgICAgPSAxNjsK
KyAgICBjb25zdGV4cHIgdWludDMyX3Qga0F0dGFjaG1lbnRDb3VudCA9IDI7CisgICAgc3RkOjp2
ZWN0b3I8dW5zaWduZWQgY2hhcj4gcGl4ZWxEYXRhKGtTaXplICoga1NpemUgKiA0LCAyNTUpOwor
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKKworICAg
IEdMVGV4dHVyZSB0ZXh0dXJlc1trQXR0YWNobWVudENvdW50XTsKKyAgICBHTGVudW0gZHJhd0J1
ZmZlcnNba0F0dGFjaG1lbnRDb3VudF07CisKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
a0F0dGFjaG1lbnRDb3VudDsgKytpKQorICAgIHsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCB0ZXh0dXJlc1tpXSk7CisgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCBrU2l6ZSwga1NpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsCisgICAgICAgICAgICAgICAgICAgICBwaXhlbERhdGEuZGF0YSgpKTsKKyAgICAgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAg
KyBpLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwKTsKKyAgICAgICAgZHJhd0J1ZmZlcnNbaV0gPSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCArIGk7CisgICAgfQorCisgICAgZ2xEcmF3QnVmZmVycyhrQXR0YWNobWVudENvdW50LCBkcmF3
QnVmZmVycyk7CisKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6d2hpdGUpOworCisgICAgLy8gTWFza2VkIGNsZWFyCisg
ICAgR0xDb2xvciBjbGVhckNvbG9yTWFza2VkKDMxLCA2MywgMjU1LCAxOTEpOworICAgIGFuZ2xl
OjpWZWN0b3I0IGNsZWFyQ29sb3IgPSBHTENvbG9yKDMxLCA2MywgMTI3LCAxOTEpLnRvTm9ybWFs
aXplZFZlY3RvcigpOworCisgICAgLy8gQmxvY2sgYmx1ZSBjaGFubmVsIGZvciBhbGwgYXR0YWNo
ZW1lbnRzCisgICAgZ2xDb2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfRkFMU0UsIEdMX1RS
VUUpOworCisgICAgLy8gVW5ibG9jayBibHVlIGNoYW5uZWwgZm9yIGF0dGFjaGVtZW50IDEKKyAg
ICBnbENvbG9yTWFza2lPRVMoMSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7
CisKKyAgICBnbENsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJDb2xvclsxXSwgY2xlYXJD
b2xvclsyXSwgY2xlYXJDb2xvclszXSk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
KTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIEFsbCBhdHRhY2htZW50cyBz
aG91bGQgYmUgY2xlYXJlZCwgd2l0aCB0aGUgYmx1ZSBjaGFubmVsIHVudG91Y2hlZCBmb3IgYWxs
IGF0dGFjaG1lbnRzIGJ1dCAxLgorICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBrQXR0YWNo
bWVudENvdW50OyArK2kpCisgICAgeworICAgICAgICBnbFJlYWRCdWZmZXIoR0xfQ09MT1JfQVRU
QUNITUVOVDAgKyBpKTsKKyAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICAgICAg
Y29uc3QgR0xDb2xvciBhdHRhY2hlbWVudENvbG9yID0gKGkgPT0gMSkgPyBjbGVhckNvbG9yIDog
Y2xlYXJDb2xvck1hc2tlZDsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGF0
dGFjaGVtZW50Q29sb3IpOworICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwga1NpemUg
LSAxLCBhdHRhY2hlbWVudENvbG9yKTsKKyAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGtT
aXplIC0gMSwgMCwgYXR0YWNoZW1lbnRDb2xvcik7CisgICAgICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShrU2l6ZSAtIDEsIGtTaXplIC0gMSwgYXR0YWNoZW1lbnRDb2xvcik7CisgICAgICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUShrU2l6ZSAvIDIsIGtTaXplIC8gMiwgYXR0YWNoZW1lbnRDb2xv
cik7CisgICAgfQorfQorCiAvLyBUZXN0IHRoYXQgY2xlYXJpbmcgbXVsdGlwbGUgYXR0YWNobWVu
dHMgb2YgZGlmZmVyZW50IG5hdHVyZSAoZmxvYXQsIGludCBhbmQgdWludCkgaW4gdGhlCiAvLyBw
cmVzZW5jZSBvZiBhIGNvbG9yIG1hc2sgd29ya3MgY29ycmVjdGx5LiAgSW4gdGhlIFZ1bGthbiBi
YWNrZW5kLCB0aGlzIGV4ZXJjaXNlcyBjbGVhcldpdGhEcmF3CiAvLyBhbmQgdGhlIHJlbGV2YW50
IGludGVybmFsIHNoYWRlcnMuCkBAIC0xMjE0LDkgKzEyNTIsOSBAQCBURVNUX1AoQ2xlYXJUZXN0
RVMzLCBSZXBlYXRlZENsZWFyKQogICAgIHsKICAgICAgICAgZm9yIChpbnQgY2VsbFggPSAwOyBj
ZWxsWCA8IG51bVJvd3NDb2xzOyBjZWxsWCsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQg
c2VlZCAgICAgICAgICAgICAgPSBjZWxsWCArIGNlbGxZICogbnVtUm93c0NvbHM7Ci0gICAgICAg
ICAgICBjb25zdCBWZWN0b3I0IGNvbG9yICAgPSBSYW5kb21WZWM0KHNlZWQsIGZtdFZhbHVlTWlu
LCBmbXRWYWx1ZU1heCk7Ci0gICAgICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3IgPSBWZWM0
VG9Db2xvcihjb2xvcik7CisgICAgICAgICAgICBpbnQgc2VlZCAgICAgICAgICAgID0gY2VsbFgg
KyBjZWxsWSAqIG51bVJvd3NDb2xzOworICAgICAgICAgICAgY29uc3QgVmVjdG9yNCBjb2xvciA9
IFJhbmRvbVZlYzQoc2VlZCwgZm10VmFsdWVNaW4sIGZtdFZhbHVlTWF4KTsKKyAgICAgICAgICAg
IEdMQ29sb3IgZXhwZWN0ZWRDb2xvcihjb2xvcik7CiAKICAgICAgICAgICAgIGludCB0ZXN0TiA9
IGNlbGxYICogY2VsbFNpemUgKyBjZWxsWSAqIGJhY2tGQk9TaXplICogY2VsbFNpemUgKyBiYWNr
RkJPU2l6ZSArIDE7CiAgICAgICAgICAgICBHTENvbG9yIGFjdHVhbENvbG9yID0gcGl4ZWxEYXRh
W3Rlc3ROXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Db21wdXRlU2hhZGVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwCmluZGV4IGFiZTQzMjkyYzFk
ODE1MTA0ZTllNzg5MjkyMTU0YjkyMGVlMjU1MzUuLjRjYzU2OGJmNjZkMWNhNDYyZWNkOTE1YjMw
MTA4ZDg0NTJmMGQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9Db21wdXRlU2hhZGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbXB1dGVTaGFkZXJUZXN0LmNwcApAQCAtNjM3
LDEwICs2MzcsNiBAQCBURVNUX1AoQ29tcHV0ZVNoYWRlclRlc3QsIERpc3BhdGNoQ29tcHV0ZUlu
ZGlyZWN0KQogICAgIC8vIEZsYWt5IGNyYXNoIG9uIHRlYXJkb3duLCBzZWUgaHR0cDovL2FuZ2xl
YnVnLmNvbS8zMzQ5CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzRDNEMTEoKSAmJiBJc0ludGVs
KCkgJiYgSXNXaW5kb3dzKCkpOwogCi0gICAgLy8gQVNBTiBlcnJvciBvbiB2dWxrYW4gYmFja2Vu
ZDsgQVNBTiB0ZXN0cyBvbmx5IGVuYWJsZWQgb24gTWFjIFN3YW5nbGUKLSAgICAvLyAoaHR0cDov
L2NyYnVnLmNvbS8xMDI5Mzc4KQotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc09TWCgpICYmIGlz
U3dpZnRzaGFkZXIoKSk7Ci0KICAgICBHTFRleHR1cmUgdGV4dHVyZTsKICAgICBHTEZyYW1lYnVm
ZmVyIGZyYW1lYnVmZmVyOwogICAgIGNvbnN0IGNoYXIga0NTU291cmNlW10gPSBSIigjdmVyc2lv
biAzMTAgZXMKQEAgLTY1NCw3ICs2NTAsNyBAQCB2b2lkIG1haW4oKQogICAgIEFOR0xFX0dMX0NP
TVBVVEVfUFJPR1JBTShwcm9ncmFtLCBrQ1NTb3VyY2UpOwogICAgIGdsVXNlUHJvZ3JhbShwcm9n
cmFtLmdldCgpKTsKICAgICBjb25zdCBpbnQga1dpZHRoID0gNCwga0hlaWdodCA9IDY7Ci0gICAg
R0x1aW50IGlucHV0VmFsdWVzW10gPSB7MH07CisgICAgR0x1aW50IGlucHV0VmFsdWVzW2tXaWR0
aF1ba0hlaWdodF0gPSB7fTsKIAogICAgIEdMQnVmZmVyIGJ1ZmZlcjsKICAgICBnbEJpbmRCdWZm
ZXIoR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSLCBidWZmZXIpOwpAQCAtMjkxMSw2ICsyOTA3
LDkgQEAgVEVTVF9QKENvbXB1dGVTaGFkZXJUZXN0LCBJbWFnZVNpemVNaXBtYXBTbGljZSkKICAg
ICAvLyBUT0RPKHhpbmdodWEuY2FvQGludGVsLmNvbSk6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzEw
MQogICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0ludGVsKCkgJiYgSXNMaW51eCgpKTsKIAorICAg
IC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDM5MgorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc1dp
bmRvd3MoKSAmJiBJc05WSURJQSgpICYmIElzRDNEMTEoKSk7CisKICAgICBHTFRleHR1cmUgdGV4
dHVyZVsyXTsKICAgICBHTEZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyOwogICAgIGNvbnN0IGNoYXIg
a0NTW10gPSBSIigjdmVyc2lvbiAzMTAgZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db250ZXh0TG9zdFRlc3QuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbnRleHRMb3N0VGVzdC5jcHAKaW5k
ZXggMDE4OGQ0NThlOWZhYjBjOWIwNDVkZWRiZmM2ZDQ5N2QxZWI0MDM4My4uNGQ0ZmUwMTBmMDNj
MDI0Yjk2MGFmMzQ1OWJkNDJjOTJmMzZhODVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbnRleHRMb3N0VGVzdC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbnRleHRMb3N0VGVzdC5j
cHAKQEAgLTEyOSwxOSArMTI5LDE5IEBAIFRFU1RfUChDb250ZXh0TG9zdFNraXBWYWxpZGF0aW9u
VGVzdCwgTG9zdE5vRXJyb3JHZXRQcm9ncmFtKQogLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlCiAvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCiBBTkdMRV9JTlNU
QU5USUFURV9URVNUKENvbnRleHRMb3N0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X05VTEwoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0Qx
MSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfVlVMS0FOKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTM19WVUxLQU4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgIFdpdGhSb2J1
c3RuZXNzKEVTMl9OVUxMKCkpLAorICAgICAgICAgICAgICAgICAgICAgICBXaXRoUm9idXN0bmVz
cyhFUzJfRDNEOSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgV2l0aFJvYnVzdG5lc3MoRVMy
X0QzRDExKCkpLAorICAgICAgICAgICAgICAgICAgICAgICBXaXRoUm9idXN0bmVzcyhFUzNfRDNE
MTEoKSksCisgICAgICAgICAgICAgICAgICAgICAgIFdpdGhSb2J1c3RuZXNzKEVTMl9WVUxLQU4o
KSksCisgICAgICAgICAgICAgICAgICAgICAgIFdpdGhSb2J1c3RuZXNzKEVTM19WVUxLQU4oKSkp
OwogCiBBTkdMRV9JTlNUQU5USUFURV9URVNUKENvbnRleHRMb3N0U2tpcFZhbGlkYXRpb25UZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfTlVMTCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9WVUxLQU4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX1ZVTEtBTigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgV2l0aFJvYnVzdG5lc3MoRVMyX05VTEwoKSksCisgICAgICAg
ICAgICAgICAgICAgICAgIFdpdGhSb2J1c3RuZXNzKEVTMl9EM0Q5KCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICBXaXRoUm9idXN0bmVzcyhFUzJfRDNEMTEoKSksCisgICAgICAgICAgICAgICAg
ICAgICAgIFdpdGhSb2J1c3RuZXNzKEVTM19EM0QxMSgpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgV2l0aFJvYnVzdG5lc3MoRVMyX1ZVTEtBTigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
V2l0aFJvYnVzdG5lc3MoRVMzX1ZVTEtBTigpKSk7CiAKIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Nv
bnRleHROb0Vycm9yVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQ29udGV4dE5vRXJyb3JUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGYyZmQ0YWMwODk3
OTVjNzlmMzUyMzhiNmY0NDRmOWQ5Mzk5MDg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbnRleHROb0Vycm9yVGVzdC5jcHAK
QEAgLTAsMCArMSw1NSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIENvbnRleHROb0Vycm9yVGVzdDoKKy8vICAg
VGVzdHMgcGVydGFpbmluZyB0byBHTF9LSFJfbm9fZXJyb3IKKy8vCisKKyNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorCisjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBDb250ZXh0Tm9FcnJvclRlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBDb250ZXh0Tm9FcnJvclRlc3QoKSA6
IG1OYXVnaHR5VGV4dHVyZSgwKSB7IHNldE5vRXJyb3JFbmFibGVkKHRydWUpOyB9CisKKyAgICB2
b2lkIHRlc3RUZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobU5hdWdodHlU
ZXh0dXJlICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
Jm1OYXVnaHR5VGV4dHVyZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGJpbmROYXVn
aHR5VGV4dHVyZSgpCisgICAgeworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtTmF1Z2h0eVRl
eHR1cmUpOworICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtTmF1Z2h0eVRleHR1cmUpOworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgICAgICAvLyBtTmF1Z2h0eVRleHR1cmUgc2hvdWxkIG5v
dyBiZSBhIEdMX1RFWFRVUkVfQ1VCRV9NQVAgdGV4dHVyZSwgc28gcmViaW5kaW5nIGl0IHRvCisg
ICAgICAgIC8vIEdMX1RFWFRVUkVfMkQgaXMgYW4gZXJyb3IKKyAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtTmF1Z2h0eVRleHR1cmUpOworICAgIH0KKworICAgIEdMdWludCBt
TmF1Z2h0eVRleHR1cmU7Cit9OworCisvLyBUZXN0cyB0aGF0IGVycm9yIHJlcG9ydGluZyBpcyBz
dXBwcmVzc2VkIHdoZW4gR0xfS0hSX25vX2Vycm9yIGlzIGVuYWJsZWQKK1RFU1RfUChDb250ZXh0
Tm9FcnJvclRlc3QsIE5vRXJyb3IpCit7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFJc0dMRXh0
ZW5zaW9uRW5hYmxlZCgiR0xfS0hSX25vX2Vycm9yIikpOworCisgICAgYmluZE5hdWdodHlUZXh0
dXJlKCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRF
X1RFU1RfRVMyX0FORF9FUzMoQ29udGV4dE5vRXJyb3JUZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5Q29tcHJlc3NlZFRleHR1
cmVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9D
b3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcAppbmRleCBhM2M0YjIxYTg4NGFkZTllNjU4MTcz
OThiNGQ5Y2I1MjQwYTRhYjM3Li4yZTY5ZTJkMTI2ZGEzYWQ1OTBjZDQzZjgwZDRiZjA5MmQxZDc1
NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCkBA
IC0zMTksOCArMzE5LDggQEAgVEVTVF9QKENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QsIEltbXV0
YWJsZSkKICAgICB7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gaHR0cDovL2FuZ2xl
YnVnLmNvbS80MDkyCi0gICAgQU5HTEVfU0tJUF9URVNUX0lGKChJc0FuZHJvaWQoKSAmJiBJc1Z1
bGthbigpKSB8fCBpc1N3aWZ0c2hhZGVyKCkpOworCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFJ
c0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKTsK
IAogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1Q
X1RPX0VER0UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0V4dGVybmFsV3JhcFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0V4dGVybmFsV3JhcFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyOWI2
ZDAwNGNkMmYzZGIyNWFiYzBhYzM3YTNmZDFmZTA0ZDc2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRXh0ZXJuYWxXcmFwVGVz
dC5jcHAKQEAgLTAsMCArMSwyNjggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBFeHRlcm5hbFdyYXBUZXN0Ogor
Ly8gICBUZXN0cyBFWFRfRUdMX2ltYWdlX2V4dGVybmFsX3dyYXBfbW9kZXMKKy8vCisKKyNpbmNs
dWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFp
aS5oIgorI2luY2x1ZGUgInV0aWwvRUdMV2luZG93LmgiCisKK2NvbnN0ZXhwciBpbnQga1BpeGVs
VGhyZXNob2xkID0gMTsKKworbmFtZXNwYWNlIGFuZ2xlCit7CitjbGFzcyBFeHRlcm5hbFdyYXBU
ZXN0IDogcHVibGljIEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgRXh0ZXJuYWxXcmFw
VGVzdCgpIDogbVByb2dyYW0oMCksIG1Tb3VyY2VUZXh0dXJlKDApLCBtRXh0ZXJuYWxJbWFnZSgw
KSwgbUV4dGVybmFsVGV4dHVyZSgwKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4
KTsKKyAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7CisgICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKKyAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKKyAgICAgICAgc2V0
Q29uZmlnRGVwdGhCaXRzKDI0KTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RTZXRVcCgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIUlzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdM
X2ltYWdlX2V4dGVybmFsIikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IGNoYXIgKnZlcnRTcmMgPSBSIihwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7CithdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwordmFyeWluZyB2ZWMyIHZfdGV4Y29v
cmQ7CisKK3VuaWZvcm0gdmVjMiB1X29mZnNldDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Q
b3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgdl90ZXhjb29yZCA9IChhX3Bvc2l0aW9uLnh5ICog
MC41KSArIDAuNSArIHVfb2Zmc2V0OworfQorKSI7CisgICAgICAgIGNvbnN0IGNoYXIgKmZyYWdT
cmMgPSBSIigjZXh0ZW5zaW9uIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgOiByZXF1aXJlCitw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7Cit1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyBzX3RleDsK
K3ZhcnlpbmcgdmVjMiB2X3RleGNvb3JkOworCit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRChzX3RleCwgdl90ZXhjb29yZCk7Cit9CispIjsKKworICAgICAgICBt
UHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRTcmMsIGZyYWdTcmMpOworICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAwdSk7CisKKyAg
ICAgICAgY29uc3RleHByIEdMc2l6ZWkgdGV4U2l6ZSA9IDMyOworICAgICAgICBHTHVieXRlIGRh
dGFbdGV4U2l6ZSAqIHRleFNpemUgKiA0XTsKKworICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IHRleFNpemU7IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgZ3JlZW4gPSBzdGF0
aWNfY2FzdDxmbG9hdD4oeSkgLyB0ZXhTaXplOworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCB0ZXhTaXplOyB4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmxvYXQg
cmVkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHgpIC8gdGV4U2l6ZTsKKworICAgICAgICAgICAgICAg
IGRhdGFbKHkgKiB0ZXhTaXplICsgeCkgKiA0ICsgMF0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPihy
ZWQgKiAyNTUpOworICAgICAgICAgICAgICAgIGRhdGFbKHkgKiB0ZXhTaXplICsgeCkgKiA0ICsg
MV0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPihncmVlbiAqIDI1NSk7CisKKyAgICAgICAgICAgICAg
ICBkYXRhWyh5ICogdGV4U2l6ZSArIHgpICogNCArIDJdID0gMDsKKyAgICAgICAgICAgICAgICBk
YXRhWyh5ICogdGV4U2l6ZSArIHgpICogNCArIDNdID0gMjU1OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVNvdXJjZVRleHR1cmUpOworICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1Tb3VyY2VUZXh0dXJlKTsKKyAgICAg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHRleFNpemUsIHRleFNp
emUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICBk
YXRhKTsKKworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1FeHRlcm5h
bFRleHR1cmUpOworCisgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIH0KKworICAg
IHZvaWQgdGVzdFRlYXJEb3duKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtUHJvZ3Jh
bSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OworICAgICAgICB9CisgICAgICAgIGlmIChtRXh0ZXJuYWxUZXh0dXJlICE9IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1FeHRlcm5hbFRleHR1cmUpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChtU291cmNlVGV4dHVyZSAhPSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtU291cmNlVGV4dHVyZSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIGNyZWF0ZUV4dGVybmFsVGV4dHVyZSgpCisgICAgeworICAg
ICAgICBBU1NFUlRfVFJVRShJc0VHTERpc3BsYXlFeHRlbnNpb25FbmFibGVkKGdldEVHTFdpbmRv
dygpLT5nZXREaXNwbGF5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUoSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwi
KSk7CisKKyAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKKyAgICAg
ICAgRUdMaW50IGF0dHJpYnNbXSAgPSB7CisgICAgICAgICAgICBFR0xfSU1BR0VfUFJFU0VSVkVE
LAorICAgICAgICAgICAgRUdMX1RSVUUsCisgICAgICAgICAgICBFR0xfTk9ORSwKKyAgICAgICAg
fTsKKyAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgPQorICAgICAgICAgICAgZWdsQ3JlYXRlSW1h
Z2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpLCBFR0xfR0xf
VEVYVFVSRV8yRF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PEVHTENsaWVudEJ1ZmZlcj4obVNvdXJjZVRleHR1cmUpLCBhdHRyaWJzKTsKKyAgICAg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7CisKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgbUV4dGVybmFsVGV4dHVyZSk7CisgICAgICAgIGdsRUdMSW1hZ2VU
YXJnZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIGltYWdlKTsKKworICAg
ICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKwor
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICBHTHVpbnQgbVByb2dy
YW07CisgICAgR0x1aW50IG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uOworICAgIEdMdWludCBtT2Zm
c2V0VW5pZm9ybUxvY2F0aW9uOworCisgICAgR0x1aW50IG1Tb3VyY2VUZXh0dXJlOworICAgIEVH
TEltYWdlS0hSIG1FeHRlcm5hbEltYWdlOworICAgIEdMdWludCBtRXh0ZXJuYWxUZXh0dXJlOwor
fTsKKworLy8gVGVzdCB0aGUgZGVmYXVsdCBzYW1wbGluZyBiZWhhdmlvciBvZiBhbiBleHRlcm5h
bCB0ZXh0dXJlCitURVNUX1AoRXh0ZXJuYWxXcmFwVGVzdCwgTm9XcmFwKQoreworICAgIEFOR0xF
X1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwiKSk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKAorICAgICAgICAhSXNFR0xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9n
bF90ZXh0dXJlXzJEX2ltYWdlIikpOworCisgICAgLy8gT3pvbmUgb25seSBzdXBwb3J0cyBleHRl
cm5hbCB0YXJnZXQgZm9yIGltYWdlcyBjcmVhdGVkIHdpdGggRUdMX0VYVF9pbWFnZV9kbWFfYnVm
X2ltcG9ydAorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc096b25lKCkpOworCisgICAgY3JlYXRl
RXh0ZXJuYWxUZXh0dXJlKCk7CisKKyAgICBBU1NFUlRfTkUobVByb2dyYW0sIDB1KTsKKyAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRF
Uk5BTF9PRVMsIG1FeHRlcm5hbFRleHR1cmUpOworICAgIGdsVW5pZm9ybTJmKGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAidV9vZmZzZXQiKSwgMC4wLCAwLjApOworICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAiYV9wb3NpdGlvbiIsIDApOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwor
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xvcigwLCAwLCAwLCAyNTUp
LCBrUGl4ZWxUaHJlc2hvbGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEyNywgMCwg
R0xDb2xvcigyNDcsIDAsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisgICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX05FQVIoMCwgMTI3LCBHTENvbG9yKDAsIDI0NywgMCwgMjU1KSwga1BpeGVsVGhy
ZXNob2xkKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigxMjcsIDEyNywgR0xDb2xvcigy
NDcsIDI0NywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKK30KKworLy8gVGVzdCB0aGF0IGV4
dGVybmFsIHRleHR1cmVzIGFyZSBzYW1wbGVkIGNvcnJlY3RseSB3aGVuIHVzZWQgd2l0aCBHTF9D
TEFNUF9UT19FREdFCitURVNUX1AoRXh0ZXJuYWxXcmFwVGVzdCwgQ2xhbXBUb0VkZ2UpCit7Cisg
ICAgQU5HTEVfU0tJUF9URVNUX0lGKCFJc0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9p
bWFnZV9leHRlcm5hbCIpKTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoCisgICAgICAgICFJc0VH
TERpc3BsYXlFeHRlbnNpb25FbmFibGVkKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksICJF
R0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSk7CisKKyAgICAvLyBPem9uZSBvbmx5IHN1cHBv
cnRzIGV4dGVybmFsIHRhcmdldCBmb3IgaW1hZ2VzIGNyZWF0ZWQgd2l0aCBFR0xfRVhUX2ltYWdl
X2RtYV9idWZfaW1wb3J0CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzT3pvbmUoKSk7CisKKyAg
ICBjcmVhdGVFeHRlcm5hbFRleHR1cmUoKTsKKworICAgIEFTU0VSVF9ORShtUHJvZ3JhbSwgMHUp
OworICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgbUV4dGVybmFsVGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9f
RURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9U
RVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xVbmlmb3JtMmYoZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X29mZnNldCIpLCAwLjUsIDAuNSk7CisgICAgZHJh
d1F1YWQobVByb2dyYW0sICJhX3Bvc2l0aW9uIiwgMCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDEyNywgMTI3
LCAwLCAyNTUpLCBrUGl4ZWxUaHJlc2hvbGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFS
KDEyNywgMCwgR0xDb2xvcigyNDcsIDEyNywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigwLCAxMjcsIEdMQ29sb3IoMTI3LCAyNDcsIDAsIDI1
NSksIGtQaXhlbFRocmVzaG9sZCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMTI3LCAx
MjcsIEdMQ29sb3IoMjQ3LCAyNDcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7Cit9CisKKy8v
IFRlc3QgdGhhdCBleHRlcm5hbCB0ZXh0dXJlcyBhcmUgc2FtcGxlZCBjb3JyZWN0bHkgd2hlbiB1
c2VkIHdpdGggR0xfUkVQRUFUCitURVNUX1AoRXh0ZXJuYWxXcmFwVGVzdCwgUmVwZWF0KQorewor
ICAgIEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xf
aW1hZ2VfZXh0ZXJuYWwiKSk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKAorICAgICAgICAhSXNF
R0xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCAi
RUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRigh
SXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9FR0xfaW1hZ2VfZXh0ZXJuYWxfd3JhcF9tb2Rl
cyIpKTsKKworICAgIC8vIE96b25lIG9ubHkgc3VwcG9ydHMgZXh0ZXJuYWwgdGFyZ2V0IGZvciBp
bWFnZXMgY3JlYXRlZCB3aXRoIEVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnQKKyAgICBBTkdM
RV9TS0lQX1RFU1RfSUYoSXNPem9uZSgpKTsKKworICAgIGNyZWF0ZUV4dGVybmFsVGV4dHVyZSgp
OworCisgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAwdSk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBtRXh0ZXJu
YWxUZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7CisgICAg
Z2xVbmlmb3JtMmYoZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X29mZnNldCIpLCAw
LjUsIDAuNSk7CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwKTsKKyAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAs
IDAsIEdMQ29sb3IoMTI3LCAxMjcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX05FQVIoMTI3LCAwLCBHTENvbG9yKDExOSwgMTI3LCAwLCAyNTUpLCBr
UGl4ZWxUaHJlc2hvbGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDEyNywgR0xD
b2xvcigxMjcsIDExOSwgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfTkVBUigxMjcsIDEyNywgR0xDb2xvcigxMTksIDExOSwgMCwgMjU1KSwga1BpeGVs
VGhyZXNob2xkKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDYzLCA2MywgR0xDb2xv
cigyNDcsIDI0NywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfTkVBUig2NCwgNjMsIEdMQ29sb3IoMCwgMjQ3LCAwLCAyNTUpLCBrUGl4ZWxUaHJlc2hv
bGQpOworfQorCisvLyBUZXN0IHRoYXQgZXh0ZXJuYWwgdGV4dHVyZXMgYXJlIHNhbXBsZWQgY29y
cmVjdGx5IHdoZW4gdXNlZCB3aXRoIEdMX01JUlJPUkVEX1JFUEVBVAorVEVTVF9QKEV4dGVybmFs
V3JhcFRlc3QsIE1pcnJvcmVkUmVwZWF0KQoreworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighSXNH
TEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSk7CisgICAgQU5H
TEVfU0tJUF9URVNUX0lGKAorICAgICAgICAhSXNFR0xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChn
ZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdl
IikpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF9FR0xfaW1hZ2VfZXh0ZXJuYWxfd3JhcF9tb2RlcyIpKTsKKworICAgIC8vIE96b25lIG9ubHkg
c3VwcG9ydHMgZXh0ZXJuYWwgdGFyZ2V0IGZvciBpbWFnZXMgY3JlYXRlZCB3aXRoIEVHTF9FWFRf
aW1hZ2VfZG1hX2J1Zl9pbXBvcnQKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNPem9uZSgpKTsK
KworICAgIGNyZWF0ZUV4dGVybmFsVGV4dHVyZSgpOworCisgICAgQVNTRVJUX05FKG1Qcm9ncmFt
LCAwdSk7CisgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfRVhURVJOQUxfT0VTLCBtRXh0ZXJuYWxUZXh0dXJlKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9NSVJS
T1JFRF9SRVBFQVQpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09F
UywgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX01JUlJPUkVEX1JFUEVBVCk7CisgICAgZ2xVbmlmb3Jt
MmYoZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X29mZnNldCIpLCAwLjUsIDAuNSk7
CisKKyAgICBkcmF3UXVhZChtUHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDAsIEdMQ29s
b3IoMTI3LCAxMjcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7CisgICAgRVhQRUNUX1BJWEVM
X0NPTE9SX05FQVIoMTI3LCAwLCBHTENvbG9yKDEyNywgMTI3LCAwLCAyNTUpLCBrUGl4ZWxUaHJl
c2hvbGQpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDEyNywgR0xDb2xvcigxMjcs
IDEyNywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
TkVBUigxMjcsIDEyNywgR0xDb2xvcigxMjcsIDEyNywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xk
KTsKKworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDYzLCA2MywgR0xDb2xvcigyNDcsIDI0
NywgMCwgMjU1KSwga1BpeGVsVGhyZXNob2xkKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVB
Uig2NCwgNjMsIEdMQ29sb3IoMjQ3LCAyNDcsIDAsIDI1NSksIGtQaXhlbFRocmVzaG9sZCk7Cit9
CisKKy8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGlj
aCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQorLy8gdGVzdHMgc2hv
dWxkIGJlIHJ1biBhZ2FpbnN0LgorQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTMyhF
eHRlcm5hbFdyYXBUZXN0KTsKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Zvcm1hdFByaW50VGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRm9ybWF0UHJp
bnRUZXN0LmNwcAppbmRleCAyYjEzYzZkNzNmZmFhNzdjZGIxYzc3ZGY1MzM0ZTQxMzYwOGRhOWYx
Li4yNGUxNmYyNmEzM2NmMDk0NTMwYzUxZWJhODc3ZTNjMWZjMWE0MWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRm9ybWF0UHJpbnRUZXN0
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRm9y
bWF0UHJpbnRUZXN0LmNwcApAQCAtMTA4LDMgKzEwOCw2IEBAIFRFU1RfUChGb3JtYXRQcmludFRl
c3QsIFByaW50QWxsU3VwcG9ydGVkRm9ybWF0cykKIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRm9y
bWF0UHJpbnRUZXN0LCBFUzJfVlVMS0FOKCksIEVTM19WVUxLQU4oKSk7CiAKIH0gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKKworLy8gSW5jbHVkZWQgaGVyZSB0byBmaXggYSBjb21waWxlIGVycm9y
IGR1ZSB0byB3aGl0ZSBib3ggdGVzdHMgdXNpbmcgYW5nbGVfZW5kMmVuZF90ZXN0c19tYWluLgor
dm9pZCBSZWdpc3RlckNvbnRleHRDb21wYXRpYmlsaXR5VGVzdHMoKSB7fQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVi
dWZmZXJUZXN0LmNwcAppbmRleCA2ZjIxMTY5OTA5YmFmMjZlMDY4NzU1OTgyZjJiYzI5NTg4MTgw
ZThlLi4xMmVjNzY1NmIzNDVmZjI1M2E3ZGM3ZmM0MzAyNDRmN2NkZjQ2NWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
RnJhbWVidWZmZXJUZXN0LmNwcApAQCAtMTIwOCw2ICsxMjA4LDExOCBAQCBURVNUX1AoQWRkRHVt
bXlUZXh0dXJlTm9SZW5kZXJUYXJnZXRUZXN0LCBOb1Byb2dyYW1PdXRwdXRXb3JrYXJvdW5kKQog
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwogfQogCisvLyBDb3ZlcnMgYSBidWcgaW4gQU5HTEUn
cyBWdWxrYW4gYmFjay1lbmQgZnJhbWVidWZmZXIgY2FjaGUgd2hpY2ggaWdub3JlZCBkZXB0aC9z
dGVuY2lsIGFmdGVyCisvLyBjYWxscyB0byBEcmF3QnVmZmVycy4KK1RFU1RfUChGcmFtZWJ1ZmZl
clRlc3RfRVMzLCBBdHRhY2htZW50U3RhdGVDaGFuZ2UpCit7CisgICAgY29uc3RleHByIEdMdWlu
dCBrU2l6ZSA9IDI7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGVzc2wxX3NoYWRl
cnM6OnZzOjpTaW1wbGUoKSwgZXNzbDFfc2hhZGVyczo6ZnM6OkdyZWVuKCkpOworCisgICAgR0xU
ZXh0dXJlIGNvbG9yVGV4dHVyZTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGNv
bG9yVGV4dHVyZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4
LCBrU2l6ZSwga1NpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwor
CisgICAgR0xGcmFtZWJ1ZmZlciBmYm87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIGZibyk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIGNvbG9yVGV4dHVyZSwgMCk7CisK
KyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBBU1NFUlRfR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUoR0xfRlJBTUVCVUZGRVIpOworCisgICAgLy8gRmlyc3QgZHJhdyB3aXRob3V0IGEgZGVw
dGggYnVmZmVyLgorICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0aW9u
QXR0cmliKCksIDAuNWYpOworCisgICAgR0xSZW5kZXJidWZmZXIgZGVwdGhCdWZmZXI7CisgICAg
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworICAgIGds
UmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIX0NPTVBPTkVOVDI0
LCBrU2l6ZSwga1NpemUpOworCisgICAgLy8gQmluZCBqdXN0IGEgcmVuZGVyYnVmZmVyIGFuZCBk
cmF3LgorICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RF
UFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOworCisgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7CisgICAgQVNTRVJUX0dMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKEdM
X0ZSQU1FQlVGRkVSKTsKKworICAgIGdsRHJhd0J1ZmZlcnMoMCwgbnVsbHB0cik7CisgICAgZHJh
d1F1YWQocHJvZ3JhbSwgZXNzbDFfc2hhZGVyczo6UG9zaXRpb25BdHRyaWIoKSwgMC41Zik7CisK
KyAgICAvLyBSZS1lbmFibGUgY29sb3IgYnVmZmVyIGFuZCBkcmF3IG9uZSBmaW5hbCB0aW1lLiBU
aGlzIHByZXZpb3VzbHkgdHJpZ2dlcmVkIGEgY3Jhc2guCisgICAgR0xlbnVtIGRyYXdCdWZmcyA9
IHtHTF9DT0xPUl9BVFRBQ0hNRU5UMH07CisgICAgZ2xEcmF3QnVmZmVycygxLCAmZHJhd0J1ZmZz
KTsKKworICAgIGRyYXdRdWFkKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlBvc2l0aW9uQXR0cmli
KCksIDAuNWYpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKKy8vIFRlc3RzIHRoYXQgd2UgY2Fu
IHN1cHBvcnQgYSBmZWVkYmFjayBsb29wIGJldHdlZW4gYSBkZXB0aCB0ZXh0dXJlcyBhbmQgdGhl
IGRlcHRoIGJ1ZmZlci4KKy8vIERvZXMgbm90IHRvdGFsbHkgbWlycm9yIHRoZSBjYXNlIHVzZWQg
aW4gTWFuaGF0dGFuLiBUaGUgTWFuaGF0dGFuIGNhc2Ugc2VlbXMgdG8gaGFuZGxlCisvLyAiY2xl
YXIiIHNwZWNpYWxseSBpbnN0ZWFkIG9mIHJlbmRlcmluZyB0byBkZXB0aCBpbiB0aGUgc2FtZSBS
UC4KK1RFU1RfUChGcmFtZWJ1ZmZlclRlc3RfRVMzLCBEZXB0aEZlZWRiYWNrTG9vcFN1cHBvcnRl
ZCkKK3sKKyAgICAvLyBGZWVkYmFjayBsb29wcyBub3Qgc3VwcG9ydGVkIG9uIEQzRDExIGFuZCBt
YXkgbm90IGV2ZXIgYmUuCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzRDNEMTEoKSk7CisKKyAg
ICAvLyBBbHNvIHRoaXMgcGFydGljdWxhciB0ZXN0IGRvZXNuJ3Qgd29yayBvbiBBbmRyb2lkIGRl
c3BpdGUgc2ltaWxhciBzdXBwb3J0IGluIE1hbmhhdHRhbi4KKyAgICBBTkdMRV9TS0lQX1RFU1Rf
SUYoSXNBbmRyb2lkKCkgJiYgSXNPcGVuR0xFUygpKTsKKworICAgIGNvbnN0ZXhwciBHTHVpbnQg
a1NpemUgPSAyOworICAgIGdsVmlld3BvcnQoMCwgMCwga1NpemUsIGtTaXplKTsKKworICAgIGNv
bnN0ZXhwciBjaGFyIGtGU1tdID0gUiIocHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Cit2YXJ5aW5n
IHZlYzIgdl90ZXhDb29yZDsKK3VuaWZvcm0gc2FtcGxlcjJEIGRlcHRoOwordm9pZCBtYWluKCkK
K3sKKyAgICBpZiAoYWJzKHRleHR1cmUyRChkZXB0aCwgdl90ZXhDb29yZCkueCAtIDAuNSkgPCAw
LjEpCisgICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAs
IDEpOworICAgIH0KK30pIjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgZXNzbDFf
c2hhZGVyczo6dnM6OlRleHR1cmUyRCgpLCBrRlMpOworCisgICAgR0xGcmFtZWJ1ZmZlciBmcmFt
ZWJ1ZmZlcjsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZm
ZXIpOworCisgICAgR0xUZXh0dXJlIGNvbG9yVGV4dHVyZTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIGNvbG9yVGV4dHVyZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkE4LCBrU2l6ZSwga1NpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIG51bGxwdHIpOworCisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIGNvbG9yVGV4dHVyZSwgMCk7CisKKyAgICBHTFRleHR1cmUgZGVwdGhUZXh0
dXJlOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZGVwdGhUZXh0dXJlKTsKKyAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfREVQVEhfQ09NUE9ORU5UMjQsIGtT
aXplLCBrU2l6ZSwgMCwgR0xfREVQVEhfQ09NUE9ORU5ULAorICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9JTlQsIG51bGxwdHIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1F
TlQsIEdMX1RFWFRVUkVfMkQsIGRlcHRoVGV4dHVyZSwgMCk7CisKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKyAgICBBU1NFUlRfR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUoR0xfRlJBTUVCVUZG
RVIpOworCisgICAgLy8gQ2xlYXIgZGVwdGggdG8gMC41LgorICAgIGdsQ2xlYXJEZXB0aGYoMC41
Zik7CisgICAgZ2xDbGVhcihHTF9ERVBUSF9CVUZGRVJfQklUKTsKKworICAgIC8vIERpc2FibGUg
dGhlIGRlcHRoIG1hc2suIEFsdGhvdWdoIHRoaXMgZG9lcyBub3QgcmVtb3ZlIHRoZSBmZWVkYmFj
ayBsb29wIGFzIGRlZmluZWQgYnkgdGhlCisgICAgLy8gc3BlYyBpdCBtaW1pY3Mgd2hhdCBnZnhi
ZW5jaCBkb2VzIGluIGl0cyByZW5kZXJpbmcgdGVzdHMuCisgICAgZ2xEZXB0aE1hc2soZmFsc2Up
OworCisgICAgLy8gVmVyaWZ5IHdlIGNhbiBzYW1wbGUgdGhlIGRlcHRoIHRleHR1cmUgYW5kIGdl
dCAwLjUuCisgICAgZHJhd1F1YWQocHJvZ3JhbSwgZXNzbDFfc2hhZGVyczo6UG9zaXRpb25BdHRy
aWIoKSwgMC41KTsKKworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Cit9CisKIEFOR0xFX0lOU1RBTlRJQVRF
X1RFU1RfRVMyKEFkZER1bW15VGV4dHVyZU5vUmVuZGVyVGFyZ2V0VGVzdCk7CiBBTkdMRV9JTlNU
QU5USUFURV9URVNUX0VTMl9BTkRfRVMzKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QpOwogQU5HTEVf
SU5TVEFOVElBVEVfVEVTVF9FUzMoRnJhbWVidWZmZXJUZXN0X0VTMyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvR0xTTFRlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0dMU0xUZXN0LmNwcApp
bmRleCAzZjFiNTUyNDQ5ZGJkNzQ3NGM5NGQyYTZjYmFiYzZmNDM1NThhNWRjLi45ZGRiZWIwZjkx
OTFiNGI4N2UxOTM5NzNhMDRlMDI4NGU0OTE3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvR0xTTFRlc3QuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9HTFNMVGVzdC5jcHAKQEAgLTE2MDUs
NiArMTYwNSwxMDMgQEAgVEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5nVmVjMkFycmF5cykKICAg
ICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgbWF4VmVjMkFycmF5cywgMCwgMCwgMCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CiB9CiAKKy8vIFZlcmlmeSBtYXggdmFyeWluZyB3aXRo
IGZlZWRiYWNrIGFuZCBnbF9saW5lIGVuYWJsZWQKK1RFU1RfUChHTFNMVGVzdF9FUzMsIE1heFZh
cnlpbmdXaXRoRmVlZGJhY2tBbmRHTGxpbmUpCit7CisgICAgLy8gKGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vNDQzOSkKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNBTUQoKSAmJiBJc1dpbmRvd3MoKSAm
JiBJc1Z1bGthbigpKTsKKworICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDQ0NgorICAgIEFO
R0xFX1NLSVBfVEVTVF9JRihJc09TWCgpICYmIElzT3BlbkdMKCkpOworCisgICAgR0xpbnQgbWF4
VmFyeWluZ3MgPSAwOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywg
Jm1heFZhcnlpbmdzKTsKKworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZlcnRleFNoYWRlclNvdXJj
ZTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBmcmFnbWVudFNoYWRlclNvdXJjZTsKKworICAgIC8v
IHN1YnN0cmFjdCAxIGhlcmUgZm9yIGdsX1BvaW50U2l6ZQorICAgIGNvbnN0IEdMaW50IHZlYzRD
b3VudCAgICAgPSBtYXhWYXJ5aW5ncyAtIDE7CisgICAgdW5zaWduZWQgaW50IHZhcnlpbmdDb3Vu
dCA9IDA7CisgICAgc3RkOjpzdHJpbmcgdmFyeWluZ0RlY2xhcmF0aW9uOworICAgIGZvciAoR0xp
bnQgaSA9IDA7IGkgPCB2ZWM0Q291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHZhcnlpbmdEZWNs
YXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbig0LCAxLCB2YXJ5aW5n
Q291bnQpOworICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKKyAgICB9CisgICAgLy8gR2VuZXJh
dGUgdGhlIHZlcnRleCBzaGFkZXIKKyAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UuY2xlYXIoKTsKKyAg
ICB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPDwgdmFyeWluZ0RlY2xhcmF0aW9uOworICAgIHZlcnRleFNo
YWRlclNvdXJjZSA8PCAiXG5hdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIjsKKyAgICB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPDwgIlxudm9pZCBtYWluKClcbntcbiI7CisgICAgdW5zaWduZWQgaW50
IGN1cnJlbnRWU1ZhcnlpbmcgPSAwOworICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0Q291
bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHZlcnRleFNoYWRlclNvdXJjZSA8PCBHZW5lcmF0ZVZl
Y3RvclZhcnlpbmdTZXR0aW5nQ29kZSg0LCAxLCBjdXJyZW50VlNWYXJ5aW5nKTsKKyAgICAgICAg
Y3VycmVudFZTVmFyeWluZyArPSAxOworICAgIH0KKyAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPDwg
Ilx0Z2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24ucmdiLCAxKTtcbiI7CisgICAgdmVydGV4
U2hhZGVyU291cmNlIDw8ICJcdGdsX1BvaW50U2l6ZSA9IDEuMDtcbiI7CisgICAgdmVydGV4U2hh
ZGVyU291cmNlIDw8ICJ9XG4iOworCisgICAgLy8gR2VuZXJhdGUgdGhlIGZyYWdtZW50IHNoYWRl
cgorICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmNsZWFyKCk7CisgICAgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPDwgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiI7CisgICAgZnJhZ21lbnRTaGFkZXJT
b3VyY2UgPDwgdmFyeWluZ0RlY2xhcmF0aW9uOworICAgIGZyYWdtZW50U2hhZGVyU291cmNlIDw8
ICJcbnZvaWQgbWFpbigpIFxueyBcblx0dmVjNCByZXRDb2xvciA9IHZlYzQoMCwwLDAsMCk7XG4i
OworICAgIHVuc2lnbmVkIGludCBjdXJyZW50RlNWYXJ5aW5nID0gMDsKKyAgICAvLyBNYWtlIHVz
ZSBvZiB0aGUgdmVjNCB2YXJ5aW5ncworICAgIGZyYWdtZW50U2hhZGVyU291cmNlIDw8ICJcdHJl
dENvbG9yICs9ICI7CisgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzRDb3VudDsgaSsrKQor
ICAgIHsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPDwgR2VuZXJhdGVWZWN0b3JWYXJ5
aW5nVXNlQ29kZSgxLCBjdXJyZW50RlNWYXJ5aW5nKTsKKyAgICAgICAgY3VycmVudEZTVmFyeWlu
ZyArPSAxOworICAgIH0KKyAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA8PCAidmVjNCgwLjAsIDAu
MCwgMC4wLCAwLjApO1xuIjsKKyAgICBjb25zdGV4cHIgR0x1aW50IHRlc3RWYWx1ZSA9IDIzNDsK
KyAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA8PCAiXHRnbF9GcmFnQ29sb3IgPSAocmV0Q29sb3Iv
dmVjNCgiIDw8IHN0ZDo6dG9fc3RyaW5nKGN1cnJlbnRGU1ZhcnlpbmcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgIikpIC8yNTUuMCoiIDw8IHN0ZDo6dG9fc3RyaW5nKHRlc3RWYWx1ZSkg
PDwgIi4wO1xuIjsKKyAgICBmcmFnbWVudFNoYWRlclNvdXJjZSA8PCAifVxuIjsKKworICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzID0geyJnbF9Qb3NpdGlvbiIsICJnbF9Q
b2ludFNpemUifTsKKyAgICBBTkdMRV9HTF9QUk9HUkFNX1RSQU5TRk9STV9GRUVEQkFDSyhwcm9n
cmFtMSwgdmVydGV4U2hhZGVyU291cmNlLnN0cigpLmNfc3RyKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJTb3VyY2Uuc3RyKCkuY19zdHIo
KSwgdGZWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9JTlRFUkxFQVZFRF9BVFRSSUJTKTsKKworICAgIEdMQnVmZmVyIHhmYkJ1ZmZlcjsKKyAgICBn
bEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgeGZiQnVmZmVyKTsKKyAg
ICBnbEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgNiAqIChzaXplb2Yo
ZmxvYXRbNF0pICsgc2l6ZW9mKGZsb2F0KSksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgIEdM
X1NUQVRJQ19EUkFXKTsKKworICAgIEdMVHJhbnNmb3JtRmVlZGJhY2sgeGZiOworICAgIGdsQmlu
ZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgeGZiKTsKKyAgICBnbEJp
bmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIHhmYkJ1ZmZlcik7
CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbTEpOworCisgICAgY29uc3QgR0xpbnQgcG9zaXRp
b25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbTEsIGVzc2wxX3NoYWRlcnM6
OlBvc2l0aW9uQXR0cmliKCkpOworICAgIEdMQnVmZmVyIHZlcnRleEJ1ZmZlcjsKKyAgICAvLyBu
ZWVkIHRvIHNoaWZ0IGhhbGYgcGl4ZWwgdG8gbWFrZSBzdXJlIHRoZSBsaW5lIGNvdmVycyB0aGUg
Y2VudGVyIG9mIHRoZSBwaXhlbAorICAgIGNvbnN0IFZlY3RvcjMgdmVydGljZXNbMl0gPSB7Cisg
ICAgICAgIHstMS4wZiwgLTEuMGYgKyAwLjVmIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdldFdpbmRv
d0hlaWdodCgpKSwgMC4wZn0sCisgICAgICAgIHsxLjBmLCAtMS4wZiArIDAuNWYgLyBzdGF0aWNf
Y2FzdDxmbG9hdD4oZ2V0V2luZG93SGVpZ2h0KCkpLCAwLjBmfX07CisgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2YoKnZlcnRpY2VzKSAqIDIsIHZlcnRpY2VzLCBHTF9TVEFUSUNfRFJB
Vyk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAxLjBm
LCAxLjBmKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZ2xCZWdp
blRyYW5zZm9ybUZlZWRiYWNrKEdMX0xJTkVTKTsKKyAgICBnbERyYXdBcnJheXMoR0xfTElORVMs
IDAsIDIpOworICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKKworICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3IodGVz
dFZhbHVlLCB0ZXN0VmFsdWUsIHRlc3RWYWx1ZSwgdGVzdFZhbHVlKSk7Cit9CisKIC8vIFZlcmlm
eSBzaGFkZXIgc291cmNlIHdpdGggYSBmaXhlZCBsZW5ndGggdGhhdCBpcyBsZXNzIHRoYW4gdGhl
IG51bGwtdGVybWluYXRlZCBsZW5ndGggd2lsbAogLy8gY29tcGlsZS4KIFRFU1RfUChHTFNMVGVz
dCwgRml4ZWRTaGFkZXJMZW5ndGgpCkBAIC0yMjQ2LDIwICsyMzQzLDIxIEBAIFRFU1RfUChHTFNM
VGVzdF9FUzMsIEFtYmlndW91c0Z1bmN0aW9uQ2FsbDJ4MikKIFRFU1RfUChHTFNMVGVzdF9FUzMs
IExhcmdlTnVtYmVyT2ZGbG9hdDRQYXJhbWV0ZXJzKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHZlcnRleFNoYWRlclN0cmVhbTsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgcGFyYW1Db3VudCA9
IDEwMjR1OworICAgIC8vIE5vdGU6IFNQSVItViBkb2Vzbid0IGFsbG93IG1vcmUgdGhhbiAyNTUg
cGFyYW1ldGVycyB0byBhIGZ1bmN0aW9uLgorICAgIGNvbnN0IHVuc2lnbmVkIGludCBwYXJhbUNv
dW50ID0gSXNWdWxrYW4oKSA/IDI1NXUgOiAxMDI0dTsKIAogICAgIHZlcnRleFNoYWRlclN0cmVh
bSA8PCAiI3ZlcnNpb24gMzAwIGVzXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB2ZWM0
IGFfdmVjO1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjNCBsb3RzT2ZWZWM0UGFy
YW1ldGVycygiOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3VudDsg
KytpKQorICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGFyYW1Db3VudCAtIDE7ICsr
aSkKICAgICB7CiAgICAgICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAidmVjNCBhIiA8PCBpIDw8
ICIsICI7CiAgICAgfQogICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAidmVjNCBhTGFzdClcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICB2ZWM0IHN1bSA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTtcbiI7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyArK2kpCisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50IC0gMTsgKytpKQogICAgIHsKICAgICAgICAg
dmVydGV4U2hhZGVyU3RyZWFtIDw8ICIgICAgc3VtICs9IGEiIDw8IGkgPDwgIjtcbiI7CiAgICAg
fQpAQCAtMjI2OSw3ICsyMzY3LDcgQEAgVEVTVF9QKEdMU0xUZXN0X0VTMywgTGFyZ2VOdW1iZXJP
ZkZsb2F0NFBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4o
KVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gbG90c09mVmVjNFBhcmFtZXRlcnMoIjsKLSAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFtQ291bnQ7ICsraSkKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFtQ291bnQgLSAxOyArK2kpCiAgICAgewogICAgICAg
ICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgImFfdmVjLCAiOwogICAgIH0KQEAgLTMyNzksMTAgKzMz
NzcsNiBAQCBURVNUX1AoR0xTTFRlc3RfRVMzMSwgQXJyYXlzT2ZBcnJheXNTYW1wbGVyKQogLy8g
VGVzdCB0aGF0IHN0cnVjdHMgY29udGFpbmluZyBhcnJheXMgb2Ygc2FtcGxlcnMgd29yayBhcyBl
eHBlY3RlZC4KIFRFU1RfUChHTFNMVGVzdF9FUzMxLCBTdHJ1Y3RBcnJheVNhbXBsZXIpCiB7Ci0g
ICAgLy8gQVNBTiBlcnJvciBvbiB2dWxrYW4gYmFja2VuZDsgQVNBTiB0ZXN0cyBvbmx5IGVuYWJs
ZWQgb24gTWFjIFN3YW5nbGUKLSAgICAvLyAoaHR0cDovL2NyYnVnLmNvbS8xMDI5Mzc4KQotICAg
IEFOR0xFX1NLSVBfVEVTVF9JRihJc09TWCgpICYmIGlzU3dpZnRzaGFkZXIoKSk7Ci0KICAgICBj
b25zdGV4cHIgY2hhciBrRlNbXSA9CiAgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKICAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgpAQCAtMzI5OCwxMyArMzM5MiwxNCBAQCBU
RVNUX1AoR0xTTFRlc3RfRVMzMSwgU3RydWN0QXJyYXlTYW1wbGVyKQogICAgIGdsVXNlUHJvZ3Jh
bShwcm9ncmFtLmdldCgpKTsKICAgICBHTFRleHR1cmUgdGV4dHVyZXNbMl07CiAgICAgR0xDb2xv
ciBleHBlY3RlZCA9IE1ha2VHTENvbG9yKDMyLCA2NCwgOTYsIDI1NSk7CisgICAgR0x1Ynl0ZSBk
YXRhWzZdICA9IHt9OyAgLy8gVHdvIGJ5dGVzIG9mIHBhZGRpbmcsIHNvIHRoYXQgdGV4dHVyZSBj
YW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCA0IGJ5dGVzCisgICAgbWVtY3B5KGRhdGEsIGV4cGVjdGVk
LmRhdGEoKSwgc2l6ZW9mKGV4cGVjdGVkKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBp
KyspCiAgICAgewogICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAgKyBpKTsKICAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1tpXSk7CiAgICAgICAg
IC8vIEVhY2ggZWxlbWVudCBwcm92aWRlcyB0d28gY29tcG9uZW50cy4KLSAgICAgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQuZGF0YSgpICsgMiAq
IGkpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDEs
IDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEgKyAyICogaSk7CiAgICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIHVuaWZvcm1OYW1lOwogICAgICAgICB1bmlmb3JtTmFtZSA8PCAi
dGVzdC5kYXRhWyIgPDwgaSA8PCAiXSI7CiAgICAgICAgIC8vIFRoZW4gc2VuZCBpdCBhcyBhIHVu
aWZvcm0KQEAgLTYxNjYsOSArNjI2MSw2IEBAIHZvaWQgbWFpbigpCiAvLyBUZXN0IHRoYXQgbGlu
a2luZyB2YXJ5aW5ncyBieSBsb2NhdGlvbiB3b3Jrcy4KIFRFU1RfUChHTFNMVGVzdF9FUzMxLCBM
aW5rVmFyeWluZ3NCeUxvY2F0aW9uKQogewotICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDM1
NQotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc1Z1bGthbigpIHx8IElzTWV0YWwoKSB8fCBJc0Qz
RDExKCkpOwotCiAgICAgY29uc3RleHByIGNoYXIga1ZTW10gPSBSIigjdmVyc2lvbiAzMTAgZXMK
IHByZWNpc2lvbiBoaWdocCBmbG9hdDsKIGluIHZlYzQgcG9zaXRpb247CkBAIC03MDI2LDYgKzcx
MTgsOSBAQCBURVNUX1AoR0xTTFRlc3RfRVMzMSwgTWl4ZWRSb3dBbmRDb2x1bW5NYWpvck1hdHJp
Y2VzKQogICAgIC8vIEZhaWxzIGlucHV0IHZlcmlmaWNhdGlvbiBhcyB3ZWxsIGFzIHN0ZDE0MCBT
U0JPIHZhbGlkYXRpb24uICBodHRwOi8vYW5nbGVidWcuY29tLzM4NDQKICAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNXaW5kb3dzKCkgJiYgSXNBTUQoKSAmJiBJc1Z1bGthbigpKTsKIAorICAgIC8v
IEZhaWxzIG9uIEFSTSBvbiBWdWxrYW4uICBodHRwOi8vYW5nbGVidWcuY29tLzQ0OTIKKyAgICBB
TkdMRV9TS0lQX1RFU1RfSUYoSXNBUk0oKSAmJiBJc1Z1bGthbigpKTsKKwogICAgIGNvbnN0ZXhw
ciBjaGFyIGtDU1tdID0gUiIoI3ZlcnNpb24gMzEwIGVzCiBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
CiBsYXlvdXQobG9jYWxfc2l6ZV94PTEpIGluOwpAQCAtNzcxOCw3ICs3ODEzLDcgQEAgdm9pZCBt
YWluKHZvaWQpCiAgICAgICAgIGdsTWFwQnVmZmVyUmFuZ2UoR0xfU0hBREVSX1NUT1JBR0VfQlVG
RkVSLCAwLCBzaXplb2Yob3V0cHV0SW5pdERhdGEpLCBHTF9NQVBfUkVBRF9CSVQpKTsKICAgICBF
WFBFQ1RfRVEocHRyWzBdLCBpbnB1dERhdGEpOwogICAgIEVYUEVDVF9FUShwdHJbMV0sIHVuaWZv
cm1EYXRhKTsKLSAgICBFWFBFQ1RfRVEocHRyWzJdLCB0ZXh0dXJlRGF0YS5SKTsKKyAgICBFWFBF
Q1RfTkVBUihwdHJbMl0sIHRleHR1cmVEYXRhLlIsIDEuMCk7CiAgICAgRVhQRUNUX0VRKHB0clsz
XSwgYWNEYXRhKTsKICAgICBFWFBFQ1RfRVEocHRyWzRdLCBpbWFnZURhdGEpOwogCkBAIC03ODIy
LDYgKzc5MTcsOSBAQCBURVNUX1AoR0xTTFRlc3RfRVMzMSwgTWl4ZWRSb3dBbmRDb2x1bW5NYWpv
ck1hdHJpY2VzX1dyaXRlQXJyYXlPZkFycmF5KQogICAgIC8vIEZhaWxzIGNvbXBpbGluZyBzaGFk
ZXIgb24gQW5kcm9pZC9WdWxrYW4uICBodHRwOi8vYW5nbGVidWcuY29tLzQyOTAKICAgICBBTkdM
RV9TS0lQX1RFU1RfSUYoSXNBbmRyb2lkKCkgJiYgSXNWdWxrYW4oKSk7CiAKKyAgICAvLyBGYWls
cyBvbiBBUk0gb24gVnVsa2FuLiAgaHR0cDovL2FuZ2xlYnVnLmNvbS80NDkyCisgICAgQU5HTEVf
U0tJUF9URVNUX0lGKElzQVJNKCkgJiYgSXNWdWxrYW4oKSk7CisKICAgICBjb25zdGV4cHIgY2hh
ciBrQ1NbXSA9IFIiKCN2ZXJzaW9uIDMxMCBlcwogcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogbGF5
b3V0KGxvY2FsX3NpemVfeD0xKSBpbjsKQEAgLTc5MzgsNiArODAzNiw3MiBAQCB2b2lkIG1haW4o
KSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9
KSI7CiAgICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKIH0KIAorLy8gVGVzdCB0aGF0IHJldXNp
bmcgdGhlIHNhbWUgdmFyaWFibGUgbmFtZSBmb3IgZGlmZmVyZW50IHVzZXMgYWNyb3NzIHN0YWdl
cyBsaW5rcyBmaW5lLiAgR2xzbGFuZworLy8gd3JhcHBlcidzIFNQSVItViB0cmFuc2Zvcm1hdGlv
biBzaG91bGQgaWdub3JlIGFsbCBuYW1lcyBmb3Igbm9uLXNoYWRlci1pbnRlcmZhY2UgdmFyaWFi
bGVzIGFuZAorLy8gbm90IGdldCBjb25mdXNlZCBieSB0aGVtLgorVEVTVF9QKEdMU0xUZXN0X0VT
MzEsIFZhcmlhYmxlTmFtZVJldXNlQWNyb3NzU3RhZ2VzKQoreworICAgIC8vIEZhaWxzIHRvIGNv
bXBpbGUgdGhlIGZyYWdtZW50IHNoYWRlciB3aXRoIGVycm9yICJ1bmRlY2xhcmVkIGlkZW50aWZp
ZXIgJ19nJyIKKyAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQ0MDQKKyAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNEM0QxMSgpKTsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0gUiIoI3Zl
cnNpb24gMzEwIGVzCitwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK3VuaWZvcm0gaGlnaHAgdmVj
NCBhOworaW4gaGlnaHAgdmVjNCBiOworaW4gaGlnaHAgdmVjNCBjOworaW4gaGlnaHAgdmVjNCBk
Oworb3V0IGhpZ2hwIHZlYzQgZTsKKwordmVjNCBmKHZlYzQgYSkKK3sKKyAgICByZXR1cm4gYTsK
K30KKwordmVjNCBnKHZlYzQgZikKK3sKKyAgICByZXR1cm4gZiArIGY7Cit9CisKK3ZvaWQgbWFp
bigpIHsKKyAgICBlID0gZihiKSArIGE7CisgICAgZ2xfUG9zaXRpb24gPSBnKGMpICsgZihkKTsK
K30KKykiOworCisgICAgY29uc3RleHByIGNoYXIga0ZTW10gPSBSIigjdmVyc2lvbiAzMTAgZXMK
K3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworaW4gaGlnaHAgdmVjNCBlOwordW5pZm9ybSBzYW1w
bGVyMkQgZjsKK2xheW91dChyZ2JhOCkgdW5pZm9ybSBoaWdocCByZWFkb25seSBpbWFnZTJEIGc7
Cit1bmlmb3JtIEEKK3sKKyAgICB2ZWM0IHg7Cit9IGM7CitsYXlvdXQoc3RkMTQwLCBiaW5kaW5n
PTApIGJ1ZmZlciBCCit7CisgICAgdmVjNCB4OworfSBkWzJdOworb3V0IHZlYzQgY29sOworCit2
ZWM0IGgodmVjNCBjKQoreworICAgIHJldHVybiB0ZXh0dXJlKGYsIGMueHkpICsgaW1hZ2VMb2Fk
KGcsIGl2ZWMyKGMuencpKTsKK30KKwordmVjNCBpKHZlYzQgeCwgdmVjNCB5KQoreworICAgIHJl
dHVybiB2ZWM0KHgueHksIHkuencpOworfQorCit2b2lkIG1haW4oKSB7CisgICAgY29sID0gaChl
KSArIGkoYy54LCBkWzBdLngpICsgZFsxXS54OworfQorKSI7CisKKyAgICBHTHVpbnQgcHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKGtWUywga0ZTKTsKKyAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0p
OworfQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiAvLyBVc2UgdGhpcyB0byBzZWxlY3Qg
d2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFq
b3IgdmVyc2lvbikgdGhlc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5jcHAKaW5kZXggYTMwYzRkYjdkYmI3ZTk3MjZm
YTdmOWM4NDE3NzJmMmEzZGIxYjcyYy4uZmVmOWY3YjNmZmU3YWU4MDdkMmZjOThmYzYxZjk2MDA0
NzJjNGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0ltYWdlVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5jcHAKQEAgLTEwMTksMjQgKzEwMTksMzggQEAgVEVTVF9Q
KEltYWdlVGVzdCwgVmFsaWRhdGlvbkdMRUdMSW1hZ2VFeHRlcm5hbCkKICAgICBHTGVudW0gdmFs
aWRXcmFwTW9kZXNbXXsKICAgICAgICAgR0xfQ0xBTVBfVE9fRURHRSwKICAgICB9OwotICAgIGZv
ciAoYXV0byBtaW5GaWx0ZXIgOiB2YWxpZFdyYXBNb2RlcykKKyAgICBmb3IgKGF1dG8gd3JhcE1v
ZGUgOiB2YWxpZFdyYXBNb2RlcykKICAgICB7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1MsIG1pbkZpbHRlcik7CisgICAg
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9X
UkFQX1MsIHdyYXBNb2RlKTsKICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQ
X1QsIG1pbkZpbHRlcik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVS
TkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1QsIHdyYXBNb2RlKTsKICAgICAgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CiAgICAgfQogCi0gICAgR0xlbnVtIGludmFsaWRXcmFwTW9kZXNbXXsKLSAg
ICAgICAgR0xfUkVQRUFULAotICAgICAgICBHTF9NSVJST1JFRF9SRVBFQVQsCi0gICAgfTsKLSAg
ICBmb3IgKGF1dG8gbWluRmlsdGVyIDogaW52YWxpZFdyYXBNb2RlcykKKyAgICBpZiAoSXNHTEV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9FR0xfaW1hZ2VfZXh0ZXJuYWxfd3JhcF9tb2RlcyIpKQog
ICAgIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBH
TF9URVhUVVJFX1dSQVBfUywgbWluRmlsdGVyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVS
TkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1QsIG1pbkZpbHRlcik7Ci0gICAgICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICBHTGVudW0gdmFsaWRXcmFwTW9kZXNF
WFRbXXtHTF9SRVBFQVQsIEdMX01JUlJPUkVEX1JFUEVBVH07CisgICAgICAgIGZvciAoYXV0byB3
cmFwTW9kZSA6IHZhbGlkV3JhcE1vZGVzRVhUKQorICAgICAgICB7CisgICAgICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9TLCB3
cmFwTW9kZSk7CisgICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQ
X1QsIHdyYXBNb2RlKTsKKyAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEdMZW51bSBpbnZhbGlkV3JhcE1v
ZGVzW117CisgICAgICAgICAgICBHTF9SRVBFQVQsCisgICAgICAgICAgICBHTF9NSVJST1JFRF9S
RVBFQVQsCisgICAgICAgIH07CisgICAgICAgIGZvciAoYXV0byB3cmFwTW9kZSA6IGludmFsaWRX
cmFwTW9kZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1MsIHdyYXBNb2RlKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOworICAgICAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfVCwgd3Jh
cE1vZGUpOworICAgICAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICAvLyBXaGVuIDx0YXJnZXQ+IGlzIHNldCB0byBURVhUVVJF
X0VYVEVSTkFMX09FUywgR2VuZXJhdGVNaXBtYXAgYWx3YXlzIGZhaWxzIGFuZCBnZW5lcmF0ZXMg
YW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9JbnN0YW5jaW5nVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvSW5zdGFuY2luZ1Rlc3QuY3BwCmluZGV4IDNiNWU3NTFmM2RjZmMxMDliMDRlNzZl
NGJmNzljYjA1ZjMwMDcwMDEuLmMwNWNhMTYyMjNhNGRjZTUyZGM3YjYxMmUxMTBjOTZjMmY1NTlk
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9JbnN0YW5jaW5nVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0luc3RhbmNpbmdUZXN0LmNwcApAQCAtNDg2LDkgKzQ4Niw2IEBAIFRFU1Rf
UChJbnN0YW5jaW5nVGVzdCwgTGluZUxvb3ApCiB7CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFJ
c0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKTsKIAotICAg
IC8vIFRPRE8oaHFsZSk6IEQzRDkgc2VlbXMgdG8gZHJhdyB2ZXJ5IHNsb3cgaGVyZSwgcHJvYmFi
bHkgZHVlIHRvIGludmFyaWFudAotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc0QzRDkoKSk7Ci0K
ICAgICBjb25zdGV4cHIgY2hhciBrVlNbXSA9IFIiKAogYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlv
bjsKIC8vIHgseSA9IG9mZnNldCwgeiA9IHNjYWxlCkBAIC01NzcsMzEgKzU3NCwxOCBAQCB2b2lk
IG1haW4oKQogCiAgICAgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0xfTElORV9MT09QLCAw
LCBBcnJheVNpemUodmVydGljZXMpIC8gMiwgaW5zdGFuY2VzKTsKIAotICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgZ2V0V2luZG93SGVpZ2h0KCk7ICsreSkKLSAgICB7Ci0gICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgZ2V0V2luZG93V2lkdGgoKTsgKyt4KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnQgaWR4ICAgICAgICAgICAgICAgPSB5ICogZ2V0V2luZG93V2lkdGgoKSArIHg7Ci0gICAg
ICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3IgPSBleHBlY3RlZFBpeGVsc1tpZHhdOwotCi0g
ICAgICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoeCwgeSwgZXhwZWN0ZWRDb2xvcikgPDwg
c3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgfQorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGFj
dHVhbFBpeGVscyhnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIGds
UmVhZFBpeGVscygwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgYWN0dWFsUGl4ZWxzLmRh
dGEoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUGl4ZWxzLCBhY3R1YWxQaXhlbHMpOwogCiAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKICAgICBnbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKEdMX0xJTkVfTE9PUCwgQXJyYXlTaXplKGxpbmVsb29wQXNTdHJpcEluZGljZXMp
IC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JU
LCAwLCBpbnN0YW5jZXMpOwogCi0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBnZXRXaW5kb3dIZWln
aHQoKTsgKyt5KQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBnZXRXaW5kb3dX
aWR0aCgpOyArK3gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBpZHggICAgICAgICAgICAg
ICA9IHkgKiBnZXRXaW5kb3dXaWR0aCgpICsgeDsKLSAgICAgICAgICAgIEdMQ29sb3IgZXhwZWN0
ZWRDb2xvciA9IGV4cGVjdGVkUGl4ZWxzW2lkeF07Ci0KLSAgICAgICAgICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUSh4LCB5LCBleHBlY3RlZENvbG9yKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBh
Y3R1YWxQaXhlbHMuZGF0YSgpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQaXhlbHMsIGFjdHVh
bFBpeGVscyk7CiB9CiAKIGNsYXNzIEluc3RhbmNpbmdUZXN0RVMzIDogcHVibGljIEluc3RhbmNp
bmdUZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvTWVtb3J5T2JqZWN0VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvTWVtb3J5T2JqZWN0VGVzdC5jcHAKaW5kZXggMmVlYzIxOGRiY2FkMTBk
ODc5OTI1ZWYxMWNjMzBjNTY4ZjU3YWNlMy4uNmU4ZDAxOTcxZTBhNjgwM2MyYWE0ZDZkZTUxZGQ1
M2JiMjlhM2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL01lbW9yeU9iamVjdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NZW1vcnlPYmplY3RUZXN0LmNwcApAQCAtNjQsNiArNjQs
NDIgQEAgVEVTVF9QKE1lbW9yeU9iamVjdFRlc3QsIFNob3VsZEZhaWxWYWxpZGF0aW9uT25JbXBv
cnRGZFVuc3VwcG9ydGVkSGFuZGxlVHlwZSkKICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKIH0K
IAorLy8gVGVzdCBtZW1vcnkgb2JqZWN0IHF1ZXJpZXMKK1RFU1RfUChNZW1vcnlPYmplY3RUZXN0
LCBNZW1vcnlPYmplY3RRdWVyaWVzKQoreworICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJl
R0xFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfbWVtb3J5X29iamVjdCIpKTsKKworICAgIEdMTWVt
b3J5T2JqZWN0IG1lbW9yeU9iamVjdDsKKworICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIGluaXRp
YWwgc3RhdGUgb2YgR0xfREVESUNBVEVEX01FTU9SWV9PQkpFQ1RfRVhUIGlzIEdMX0ZBTFNFCisg
ICAgeworICAgICAgICBHTGludCBkZWRpY2F0ZWRNZW1vcnkgPSAwOworICAgICAgICBnbEdldE1l
bW9yeU9iamVjdFBhcmFtZXRlcml2RVhUKG1lbW9yeU9iamVjdCwgR0xfREVESUNBVEVEX01FTU9S
WV9PQkpFQ1RfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZk
ZWRpY2F0ZWRNZW1vcnkpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAg
RVhQRUNUX0dMX0ZBTFNFKGRlZGljYXRlZE1lbW9yeSk7CisgICAgfQorCisgICAgLy8gQ2hhbmdl
IEdMX0RFRElDQVRFRF9NRU1PUllfT0JKRUNUX0VYVCB0byBHTF9UUlVFCisgICAgeworICAgICAg
ICBHTGludCBkZWRpY2F0ZWRNZW1vcnkgPSBHTF9UUlVFOworICAgICAgICBnbE1lbW9yeU9iamVj
dFBhcmFtZXRlcml2RVhUKG1lbW9yeU9iamVjdCwgR0xfREVESUNBVEVEX01FTU9SWV9PQkpFQ1Rf
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZWRpY2F0ZWRNZW1v
cnkpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICB9CisKKyAgICAvLyBDb25m
aXJtIHRoYXQgR0xfREVESUNBVEVEX01FTU9SWV9PQkpFQ1RfRVhUIGlzIG5vdyBUUlVFCisgICAg
eworICAgICAgICBHTGludCBkZWRpY2F0ZWRNZW1vcnkgPSAwOworICAgICAgICBnbEdldE1lbW9y
eU9iamVjdFBhcmFtZXRlcml2RVhUKG1lbW9yeU9iamVjdCwgR0xfREVESUNBVEVEX01FTU9SWV9P
QkpFQ1RfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZWRp
Y2F0ZWRNZW1vcnkpOworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICAgICAgRVhQ
RUNUX0dMX1RSVUUoZGVkaWNhdGVkTWVtb3J5KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKK30KKwogLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCiAv
LyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCiBBTkdMRV9JTlNUQU5USUFURV9URVNUX0VT
Ml9BTkRfRVMzKE1lbW9yeU9iamVjdFRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwCmluZGV4IDMzYjgz
YTVmM2IxODAzMTU1MjdkOTQxMzFiMWQ5MzM5OTNiNWIwYjkuLjMxNjk4MDEwMmZlOTZhMWU3YmQx
MzZiNWJhMmVmOGVkMmQyNzY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBtYXBUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWlwbWFwVGVzdC5jcHAKQEAgLTk1NCw5ICs5NTQs
OSBAQCBURVNUX1AoTWlwbWFwVGVzdEVTMywgTWlwbWFwRm9yRGVlcFRleHR1cmVBcnJheSkKIC8v
IFRoZW4gdGVzdHMgaWYgdGhlIG1pcG1hcHMgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBmb3IgYWxs
IHR3byBsYXllcnMuCiBURVNUX1AoTWlwbWFwVGVzdEVTMywgTWlwbWFwc0ZvclRleHR1cmUzRCkK
IHsKLSAgICAvLyBUT0RPKGNub3J0aHJvcCk6IEVuYWJsZWQgdGhlIGdyb3VwIHRvIGNvdmVyIHRl
eHR1cmUgYmFzZSBsZXZlbCwgYnV0IHRoaXMgdGVzdAotICAgIC8vIG5lZWRzIHNvbWUgdHJpYWdl
OiBodHRwOi8vYW5nbGVidWcuY29tLzM5NTAKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNWdWxr
YW4oKSk7CisgICAgLy8gQ3VycmVudGx5IGJsb2NrIG9uIHN3aWZ0c2hhZGVyIEJsaXQzRCBzdXBw
b3J0LCB0cmFja2VkIG9uCisgICAgLy8gaHR0cHM6Ly9pc3N1ZXRyYWNrZXIuZ29vZ2xlLmNvbS9p
c3N1ZXMvMTUwMTU1NDk5CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGlzVnVsa2FuU3dpZnRzaGFk
ZXJSZW5kZXJlcigpKTsKIAogICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOwogICAg
IGludCBweSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsKQEAgLTEwMDIsMTcgKzEwMDIsMzcgQEAg
VEVTVF9QKE1pcG1hcFRlc3RFUzMsIE1pcG1hcHNGb3JUZXh0dXJlM0QpCiAgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CiAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6
Z3JlZW4pOwogCi0gICAgLy8gTWlwbWFwIGxldmVsIDEKLSAgICAvLyBUaGUgc2Vjb25kIG1pcG1h
cCBzaG91bGQgb25seSBoYXZlIG9uZSBzbGljZS4KKyAgICAvLyBSZWdlbmVyYXRlIG1pcG1hcCBv
ZiBzYW1lIGNvbG9yIHRleHR1cmUKKyAgICBnbFRleFN1YkltYWdlM0QoR0xfVEVYVFVSRV8zRCwg
MCwgMCwgMCwgMSwgMTYsIDE2LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAg
ICAgICAgICAgICAgICBwaXhlbHNSZWQuZGF0YSgpKTsKKworICAgIGdsR2VuZXJhdGVNaXBtYXAo
R0xfVEVYVFVSRV8zRCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIC8vIE1p
cG1hcCBsZXZlbCAxIDgqOCoxCiAgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1M
b2NhdGlvbiwgMS4pOwogICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwogICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9ORUFSKHB4LCBw
eSwgMTI3LCAxMjcsIDAsIDI1NSwgMS4wKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgs
IHB5LCBHTENvbG9yOjpyZWQpOwogCi0gICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRFNsaWNlVW5p
Zm9ybUxvY2F0aW9uLCAwLjc1Zik7CisgICAgLy8gTWlwbWFwIGxldmVsIDIgNCo0KjEKKyAgICBn
bFVuaWZvcm0xZihtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uLCAyLik7CiAgICAgZHJhd1F1
YWQobTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CiAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0gICAgRVhQRUNUX1BJWEVMX05FQVIocHgsIHB5LCAxMjcsIDEyNywgMCwgMjU1LCAxLjAp
OworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29sb3I6OnJlZCk7CisKKyAg
ICAvLyBNaXBtYXAgbGV2ZWwgMyAyKjIqMQorICAgIGdsVW5pZm9ybTFmKG1UZXh0dXJlM0RMT0RV
bmlmb3JtTG9jYXRpb24sIDMuKTsKKyAgICBkcmF3UXVhZChtM0RQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEocHgsIHB5LCBHTENvbG9yOjpyZWQpOworCisgICAgLy8gTWlwbWFwIGxldmVsIDQgMSox
KjEKKyAgICBnbFVuaWZvcm0xZihtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uLCA0Lik7Cisg
ICAgZHJhd1F1YWQobTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7CisgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6
cmVkKTsKIH0KIAogLy8gQ3JlYXRlIGEgMkQgdGV4dHVyZSB3aXRoIGxldmVscyAwLTIsIGNhbGwg
R2VuZXJhdGVNaXBtYXAgd2l0aCBiYXNlIGxldmVsIDEgc28gdGhhdCBsZXZlbCAwIHN0YXlzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTXVs
dGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAKaW5kZXgg
YWMwODhmZjEyNDdkYzM2MzgxOThkZWM3MDU4NmMwMWZiNWRmYjYzZC4uYzhkZjAwMGExNGZjNmU4
YTBlNDA3NjljM2QxZmJlZDFkYzQ4NjdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNh
bXBsZUNvbXBhdGliaWxpdHlUZXN0LmNwcApAQCAtMzcwLDkgKzM3MCw2IEBAIFRFU1RfUChNdWx0
aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LCBEcmF3Q292ZXJhZ2VBbmRSZXNvbHZlKQogICAgIC8v
IFRPRE86IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gQW5kcm9pZC4KICAgICBBTkdMRV9T
S0lQX1RFU1RfSUYoSXNBbmRyb2lkKCkgJiYgSXNPcGVuR0xFUygpKTsKIAotICAgIC8vIGh0dHA6
Ly9hbmdsZWJ1Zy5jb20vMzg1NQotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc1dpbmRvd3MoKSAm
JiBJc1Z1bGthbigpICYmIElzSW50ZWwoKSk7Ci0KICAgICBBTkdMRV9HTF9QUk9HUkFNKGRyYXdS
ZWQsIGVzc2wxX3NoYWRlcnM6OnZzOjpTaW1wbGUoKSwgZXNzbDFfc2hhZGVyczo6ZnM6OlJlZCgp
KTsKIAogICAgIEdMc2l6ZWkgbWF4U2FtcGxlcyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGF0aFJlbmRlcmluZ1Rlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhSZW5kZXJpbmdU
ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZhMzc5M2ZhNzEwMzlkZDhj
ZWFlZGY4OTRkZGUwZDFjYjdhNDg4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
UGF0aFJlbmRlcmluZ1Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk5NCArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdAotLy8gICBUZXN0IENIUk9NSVVN
IHN1YnNldCBvZiBOVl9wYXRoX3JlbmRlcmluZwotLy8gICBUaGlzIGV4dGVuc2lvbiBhbGxvd3Mg
dG8gcmVuZGVyIGdlb21ldHJpYyBwYXRocyBhcyBmaXJzdCBjbGFzcyBHTCBvYmplY3RzLgotCi0j
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCi0jaW5jbHVkZSAidXRpbC9zaGFkZXJfdXRpbHMuaCIKLQotI2luY2x1ZGUgPGNt
YXRoPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8Y3N0cmluZz4KLSNpbmNsdWRlIDxm
c3RyZWFtPgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1ib29s
IENoZWNrUGl4ZWxzKEdMaW50IHgsCi0gICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
LAotICAgICAgICAgICAgICAgICBHTGludCB0b2xlcmFuY2UsCi0gICAgICAgICAgICAgICAgIGNv
bnN0IGFuZ2xlOjpHTENvbG9yICZjb2xvcikKLXsKLSAgICBmb3IgKEdMaW50IHl5ID0gMDsgeXkg
PCBoZWlnaHQ7ICsreXkpCi0gICAgewotICAgICAgICBmb3IgKEdMaW50IHh4ID0gMDsgeHggPCB3
aWR0aDsgKyt4eCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgYXV0byBweCA9IHggKyB4
eDsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8gcHkgPSB5ICsgeXk7Ci0gICAgICAgICAgICBFWFBF
Q1RfUElYRUxfTkVBUihweCwgcHksIGNvbG9yLlIsIGNvbG9yLkcsIGNvbG9yLkIsIGNvbG9yLkEs
IHRvbGVyYW5jZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBFeHBlY3RFcXVhbE1hdHJpeChjb25zdCBHTGZsb2F0ICpleHBlY3RlZCwgY29uc3QgR0xm
bG9hdCAqYWN0dWFsKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkKLSAg
ICB7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXSwgYWN0dWFsW2ldKTsKLSAgICB9Ci19
Ci0KLXZvaWQgRXhwZWN0RXF1YWxNYXRyaXgoY29uc3QgR0xmbG9hdCAqZXhwZWN0ZWQsIGNvbnN0
IEdMaW50ICphY3R1YWwpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgKytpKQot
ICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMaW50PihzdGQ6OnJvdW5kZihl
eHBlY3RlZFtpXSkpLCBhY3R1YWxbaV0pOwotICAgIH0KLX0KLQotY29uc3QgaW50IGtSZXNvbHV0
aW9uID0gMzAwOwotCi1jbGFzcyBDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0IDogcHVibGljIEFO
R0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCgp
Ci0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
RGVwdGhCaXRzKDI0KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0FwcGxpY2FibGUoKSBjb25zdCB7IHJldHVybiBJc0dMRXh0ZW5zaW9uRW5h
YmxlZCgiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmciKTsgfQotCi0gICAgdm9pZCB0cnlBbGxE
cmF3RnVuY3Rpb25zKEdMdWludCBwYXRoLCBHTGVudW0gZXJyKQotICAgIHsKLSAgICAgICAgZ2xT
dGVuY2lsRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3Rik7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihlcnIpOwotCi0gICAgICAgIGdsU3RlbmNpbEZpbGxQ
YXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTSwgMHg3Rik7Ci0gICAgICAg
IEVYUEVDVF9HTF9FUlJPUihlcnIpOwotCi0gICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJP
TUlVTShwYXRoLCAweDgwLCAweDgwKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0K
LSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQk9VTkRJTkdfQk9YX0NI
Uk9NSVVNKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0KLSAgICAgICAgZ2xDb3Zl
clN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAg
ICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJT
dHJva2VQYXRoQ0hST01JVU0ocGF0aCwgMHg4MCwgMHg4MCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9N
SVVNKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0KLSAgICAgICAgZ2xTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3
RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElO
R19CT1hfQ0hST01JVU0pOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLSAgICB9Ci19
OwotCi0vLyBUZXN0IHNldHRpbmcgYW5kIGdldHRpbmcgb2YgcGF0aCByZW5kZXJpbmcgbWF0cmlj
ZXMuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdE1hdHJpeCkKLXsKLSAg
ICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29u
c3QgR0xmbG9hdCBrSWRlbnRpdHlNYXRyaXhbMTZdID0gezEuMGYsIDAuMGYsIDAuMGYsIDAuMGYs
IDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
LCAxLjBmfTsKLQotICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtTZXFNYXRyaXhbMTZdID0gezAu
NWYsICAgLTAuNWYsICAtMC4xZiwgIC0wLjhmLCA0LjRmLCAgIDUuNWYsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42ZiwgICA3LjdmLCAgIDguOGYsICAgOS45
ZiwgIDEwLjExZiwgMTEuMjJmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEyLjMzZiwgMTMuNDRmLCAxNC41NWYsIDE1LjY2Zn07Ci0KLSAgICBzdGF0aWMgY29u
c3QgR0xlbnVtIGtNYXRyaXhNb2Rlc1tdID0ge0dMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBH
TF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU19OwotCi0gICAgc3RhdGljIGNvbnN0IEdMZW51bSBr
R2V0TWF0cml4TW9kZXNbXSA9IHtHTF9QQVRIX01PREVMVklFV19NQVRSSVhfQ0hST01JVU0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9QQVRIX1BST0pF
Q1RJT05fTUFUUklYX0NIUk9NSVVNfTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsg
KytpKQotICAgIHsKLSAgICAgICAgR0xmbG9hdCBtZlsxNl07Ci0gICAgICAgIEdMaW50IG1pWzE2
XTsKLSAgICAgICAgc3RkOjptZW1zZXQobWYsIDAsIHNpemVvZihtZikpOwotICAgICAgICBzdGQ6
Om1lbXNldChtaSwgMCwgc2l6ZW9mKG1pKSk7Ci0gICAgICAgIGdsR2V0RmxvYXR2KGtHZXRNYXRy
aXhNb2Rlc1tpXSwgbWYpOwotICAgICAgICBnbEdldEludGVnZXJ2KGtHZXRNYXRyaXhNb2Rlc1tp
XSwgbWkpOwotICAgICAgICBFeHBlY3RFcXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgsIG1mKTsK
LSAgICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa0lkZW50aXR5TWF0cml4LCBtaSk7Ci0KLSAgICAg
ICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNKGtNYXRyaXhNb2Rlc1tpXSwga1NlcU1hdHJpeCk7Ci0g
ICAgICAgIHN0ZDo6bWVtc2V0KG1mLCAwLCBzaXplb2YobWYpKTsKLSAgICAgICAgc3RkOjptZW1z
ZXQobWksIDAsIHNpemVvZihtaSkpOwotICAgICAgICBnbEdldEZsb2F0dihrR2V0TWF0cml4TW9k
ZXNbaV0sIG1mKTsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihrR2V0TWF0cml4TW9kZXNbaV0sIG1p
KTsKLSAgICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa1NlcU1hdHJpeCwgbWYpOwotICAgICAgICBF
eHBlY3RFcXVhbE1hdHJpeChrU2VxTWF0cml4LCBtaSk7Ci0KLSAgICAgICAgZ2xNYXRyaXhMb2Fk
SWRlbnRpdHlDSFJPTUlVTShrTWF0cml4TW9kZXNbaV0pOwotICAgICAgICBzdGQ6Om1lbXNldCht
ZiwgMCwgc2l6ZW9mKG1mKSk7Ci0gICAgICAgIHN0ZDo6bWVtc2V0KG1pLCAwLCBzaXplb2YobWkp
KTsKLSAgICAgICAgZ2xHZXRGbG9hdHYoa0dldE1hdHJpeE1vZGVzW2ldLCBtZik7Ci0gICAgICAg
IGdsR2V0SW50ZWdlcnYoa0dldE1hdHJpeE1vZGVzW2ldLCBtaSk7Ci0gICAgICAgIEV4cGVjdEVx
dWFsTWF0cml4KGtJZGVudGl0eU1hdHJpeCwgbWYpOwotICAgICAgICBFeHBlY3RFcXVhbE1hdHJp
eChrSWRlbnRpdHlNYXRyaXgsIG1pKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB0cnlpbmcgdG8gc2V0IGluY29ycmVjdCBtYXRyaXgg
dGFyZ2V0IHJlc3VsdHMKLS8vIGluIGEgR0wgZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVu
ZGVyaW5nVGVzdCwgVGVzdE1hdHJpeEVycm9ycykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTGZsb2F0IG1mWzE2XTsKLSAgICBzdGQ6Om1lbXNl
dChtZiwgMCwgc2l6ZW9mKG1mKSk7Ci0KLSAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFU
SF9NT0RFTFZJRVdfQ0hST01JVU0sIG1mKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01JVU0oR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9N
SVVNKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRlc3QgdGhhdCBpbnZh
bGlkIG1hdHJpeCB0YXJnZXRzIGZhaWwuCi0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNKEdMX1BB
VEhfTU9ERUxWSUVXX0NIUk9NSVVNIC0gMSwgbWYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX0VOVU0pOwotCi0gICAgLy8gVGVzdCB0aGF0IGludmFsaWQgbWF0cml4IHRhcmdldHMg
ZmFpbC4KLSAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElP
Tl9DSFJPTUlVTSArIDEpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwot
fQotCi0vLyBUZXN0IGJhc2ljIHBhdGggY3JlYXRlIGFuZCBkZWxldGUuCi1URVNUX1AoQ0hST01J
VU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdEdlbkRlbGV0ZSkKLXsKLSAgICBpZiAoIWlzQXBwbGlj
YWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGlzIGlzIHVuc3BlY2lmaWVkIGlu
IE5WX3BhdGhfcmVuZGVyaW5nLgotICAgIEVYUEVDVF9FUSgwdSwgZ2xHZW5QYXRoc0NIUk9NSVVN
KDApKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBHTHVp
bnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHBhdGgp
OwotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIEdMdWludCBmaXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDUp
OwotICAgIEVYUEVDVF9ORSgwdSwgZmlyc3RfcGF0aCk7Ci0gICAgZ2xEZWxldGVQYXRoc0NIUk9N
SVVNKGZpcnN0X3BhdGgsIDUpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
VGVzdCBkZWxldGluZyBwYXRocyB0aGF0IGFyZSBub3QgYWN0dWFsbHkgYWxsb2NhdGVkOgotICAg
IC8vICJ1bnVzZWQgbmFtZXMgaW4gL3BhdGhzLyBhcmUgc2lsZW50bHkgaWdub3JlZCIuCi0gICAg
Zmlyc3RfcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSg1KTsKLSAgICBFWFBFQ1RfTkUoMHUsIGZp
cnN0X3BhdGgpOwotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShmaXJzdF9wYXRoLCA2KTsKLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMc2l6ZWkgYmlnX3JhbmdlID0gMHhmZmZm
OwotICAgIGZpcnN0X3BhdGggICAgICAgID0gZ2xHZW5QYXRoc0NIUk9NSVVNKGJpZ19yYW5nZSk7
Ci0gICAgRVhQRUNUX05FKDB1LCBmaXJzdF9wYXRoKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0oZmlyc3RfcGF0aCwgYmlnX3JhbmdlKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIFRlc3QgZ2xJc1BhdGhDSFJPTUlVTSgpLiBBIHBhdGggb2JqZWN0IGlzIG5vdCBjb25z
aWRlcmVkIGEgcGF0aCB1bnRpbGwKLSAgICAvLyBpdCBoYXMgYWN0dWFsbHkgYmVlbiBzcGVjaWZp
ZWQgd2l0aCBhIHBhdGggZGF0YS4KLQotICAgIHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7
Ci0gICAgQVNTRVJUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9GQUxTRSk7Ci0K
LSAgICAvLyBzcGVjaWZ5IHRoZSBkYXRhLgotICAgIEdMdWJ5dGUgY29tbWFuZHNbXSA9IHtHTF9N
T1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLSAgICBHTGZsb2F0IGNv
b3Jkc1tdICAgPSB7NTAuMGYsIDUwLjBmfTsKLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBh
dGgsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29vcmRzKTsKLSAgICBBU1NFUlRfVFJVRShn
bElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX1RSVUUpOwotICAgIGdsRGVsZXRlUGF0aHNDSFJP
TUlVTShwYXRoLCAxKTsKLSAgICBBU1NFUlRfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09
IEdMX0ZBTFNFKTsKLX0KLQotLy8gVGVzdCBpbmNvcnJlY3QgcGF0aCBjcmVhdGlvbiBhbmQgZGVs
ZXRpb24gYW5kIGV4cGVjdCBHTCBlcnJvcnMuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
VGVzdCwgVGVzdEdlbkRlbGV0ZUVycm9ycykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBHZW5QYXRocyAvIERlbGV0ZVBhdGhzIHRlc3RzLgot
ICAgIC8vIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkgaXMgd3JvbmcgZm9yIEdM
c2l6ZWkuCi0gICAgR0x1aW50IGZpcnN0X3BhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oc3RkOjpu
dW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSk7Ci0gICAgRVhQRUNUX0VRKGZpcnN0X3BhdGgs
IDB1KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBmaXJz
dF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKC0xKTsKLSAgICBFWFBFQ1RfRVEoMHUsIGZpcnN0
X3BhdGgpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGds
RGVsZXRlUGF0aHNDSFJPTUlVTSgxLCAtNSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotCi0gICAgZmlyc3RfcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgtMSk7Ci0g
ICAgRVhQRUNUX0VRKDB1LCBmaXJzdF9wYXRoKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci19Ci0KLS8vIFRlc3Qgc2V0dGluZyBhbmQgZ2V0dGluZyBwYXRoIHBhcmFt
ZXRlcnMuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhQYXJhbWV0
ZXIpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
R0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0KLSAgICAvLyBzcGVjaWZ5IHRo
ZSBkYXRhLgotICAgIEdMdWJ5dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBH
TF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLSAgICBHTGZsb2F0IGNvb3Jkc1tdICAgPSB7NTAuMGYs
IDUwLjBmfTsKLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAy
LCBHTF9GTE9BVCwgY29vcmRzKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBF
Q1RfR0xfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpKTsKLQotICAgIHN0YXRpYyBjb25zdCBH
TGVudW0ga0VuZENhcHNbXSA9IHtHTF9GTEFUX0NIUk9NSVVNLCBHTF9TUVVBUkVfQ0hST01JVU0s
IEdMX1JPVU5EX0NIUk9NSVVNfTsKLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgMzsg
KytpKQotICAgIHsKLSAgICAgICAgR0xpbnQgeDsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyaUNI
Uk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU0sIHN0YXRpY19jYXN0PEdMZW51
bT4oa0VuZENhcHNbaV0pKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAg
IGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJP
TUlVTSwgJngpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNU
X0VRKGtFbmRDYXBzW2ldLCBzdGF0aWNfY2FzdDxHTGVudW0+KHgpKTsKLQotICAgICAgICBHTGZs
b2F0IGY7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VO
RF9DQVBTX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0xmbG9hdD4oa0VuZENhcHNbKGkgKyAxKSAlIDNdKSk7Ci0gICAgICAgIGdsR2V0UGF0
aFBhcmFtZXRlcmZ2Q0hST01JVU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgJmYp
OwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX0VRKGtFbmRD
YXBzWyhpICsgMSkgJSAzXSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihmKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIGNvbnN0IEdMZW51bSBrSm9pblN0eWxlc1tdID0ge0dMX01JVEVSX1JFVkVSVF9DSFJP
TUlVTSwgR0xfQkVWRUxfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JPVU5EX0NIUk9NSVVNfTsKLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAw
OyBpIDwgMzsgKytpKQotICAgIHsKLSAgICAgICAgR0xpbnQgeDsKLSAgICAgICAgZ2xQYXRoUGFy
YW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMZW51bT4oa0pvaW5TdHls
ZXNbaV0pKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIGdsR2V0UGF0
aFBhcmFtZXRlcml2Q0hST01JVU0ocGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCAm
eCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoa0pv
aW5TdHlsZXNbaV0sIHN0YXRpY19jYXN0PEdMZW51bT4oeCkpOwotCi0gICAgICAgIEdMZmxvYXQg
ZjsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9T
VFlMRV9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdMZmxvYXQ+KGtKb2luU3R5bGVzWyhpICsgMSkgJSAzXSkpOwotICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLSAgICAgICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShwYXRo
LCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sICZmKTsKLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9FUShrSm9pblN0eWxlc1soaSArIDEpICUgM10sIHN0
YXRpY19jYXN0PEdMZW51bT4oZikpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgZ2xQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCA1LjBm
KTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgR0xmbG9hdCBmOwot
ICAgICAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tF
X1dJRFRIX0NIUk9NSVVNLCAmZik7Ci0gICAgICAgIEVYUEVDVF9FUSg1LjBmLCBmKTsKLSAgICB9
Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBzZXR0aW5nIGluY29ycmVjdCBwYXRoIHBhcmFtZXRlciBnZW5lcmF0ZXMgR0wgZXJyb3IuCi1U
RVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhQYXJhbWV0ZXJFcnJvcnMp
Ci17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0x1
aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0KLSAgICAvLyBQYXRoUGFyYW1ldGVy
KjogV3JvbmcgdmFsdWUgZm9yIHRoZSBwbmFtZSBzaG91bGQgZmFpbC4KLSAgICBnbFBhdGhQYXJh
bWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9GTEFU
X0NIUk9NSVVNKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAg
IGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVN
LCBHTF9NSVRFUl9SRVZFUlRfQ0hST01JVU0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOwotCi0gICAgLy8gUGF0aFBhcmFtZXRlcio6IFdyb25nIGZsb2F0aW5nLXBvaW50
IHZhbHVlIHNob3VsZCBmYWlsLgotICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBH
TF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSwgLTAuMWYpOwotICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIFBhdGhQYXJhbWV0ZXIqOiBXcm9uZyBwbmFt
ZSBzaG91bGQgZmFpbC4KLSAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFU
SF9TVFJPS0VfV0lEVEhfQ0hST01JVU0gLSAxLCA1KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLX0K
LQotLy8gVGVzdCBleHBlY3RlZCBwYXRoIG9iamVjdCBzdGF0ZS4KLVRFU1RfUChDSFJPTUlVTVBh
dGhSZW5kZXJpbmdUZXN0LCBUZXN0UGF0aE9iamVjdFN0YXRlKQotewotICAgIGlmICghaXNBcHBs
aWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdsVmlld3BvcnQoMCwgMCwga1Jlc29s
dXRpb24sIGtSZXNvbHV0aW9uKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
MC4wZik7Ci0gICAgZ2xTdGVuY2lsTWFzaygweGZmZmZmZmZmKTsKLSAgICBnbENsZWFyU3RlbmNp
bCgwKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZF
Ul9CSVQpOwotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZG
KTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRlc3QgdGhhdCB0cnlpbmcgdG8gZHJhdyBub24t
ZXhpc3RpbmcgcGF0aHMgZG9lcyBub3QgcHJvZHVjZSBlcnJvcnMgb3IgcmVzdWx0cy4KLSAgICBH
THVpbnQgbm9uX2V4aXN0aW5nX3BhdGhzW10gPSB7MCwgNTUsIDc0NzQ0fTsKLSAgICBmb3IgKGF1
dG8gJnAgOiBub25fZXhpc3RpbmdfcGF0aHMpCi0gICAgewotICAgICAgICBFWFBFQ1RfR0xfRkFM
U0UoZ2xJc1BhdGhDSFJPTUlVTShwKSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
ICAgICAgICB0cnlBbGxEcmF3RnVuY3Rpb25zKHAsIEdMX05PX0VSUk9SKTsKLSAgICB9Ci0KLSAg
ICAvLyBQYXRoIG5hbWUgbWFya2VkIGFzIHVzZWQgYnV0IHdpdGhvdXQgcGF0aCBvYmplY3Qgc3Rh
dGUgY2F1c2VzCi0gICAgLy8gYSBHTCBlcnJvciB1cG9uIGFueSBkcmF3IGNvbW1hbmQuCi0gICAg
R0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgRVhQRUNUX0dMX0ZBTFNF
KGdsSXNQYXRoQ0hST01JVU0ocGF0aCkpOwotICAgIHRyeUFsbERyYXdGdW5jdGlvbnMocGF0aCwg
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAx
KTsKLQotICAgIC8vIERvY3VtZW50IGEgYml0IG9mIGFuIGluY29uc2lzdGVuY3k6IHBhdGggbmFt
ZSBtYXJrZWQgYXMgdXNlZCBidXQgd2l0aG91dAotICAgIC8vIHBhdGggb2JqZWN0IHN0YXRlIGNh
dXNlcyBhIEdMIGVycm9yIHVwb24gYW55IGRyYXcgY29tbWFuZCAodGVzdGVkIGFib3ZlKS4KLSAg
ICAvLyBQYXRoIG5hbWUgdGhhdCBoYWQgcGF0aCBvYmplY3Qgc3RhdGUsIGJ1dCB0aGVuIHdhcyAi
Y2xlYXJlZCIsIHN0aWxsIGhhcyBhCi0gICAgLy8gcGF0aCBvYmplY3Qgc3RhdGUsIGV2ZW4gdGhv
dWdoIHRoZSBzdGF0ZSBpcyBlbXB0eS4KLSAgICBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEp
OwotICAgIEVYUEVDVF9HTF9GQUxTRShnbElzUGF0aENIUk9NSVVNKHBhdGgpKTsKLQotICAgIEdM
dWJ5dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NI
Uk9NSVVNfTsKLSAgICBHTGZsb2F0IGNvb3Jkc1tdICAgPSB7NTAuMGYsIDUwLjBmfTsKLSAgICBn
bFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29v
cmRzKTsKLSAgICBFWFBFQ1RfR0xfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpKTsKLQotICAg
IGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMCwgbnVsbHB0ciwgMCwgR0xfRkxPQVQsIG51
bGxwdHIpOwotICAgIEVYUEVDVF9HTF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0aCkpOyAgLy8g
VGhlIHN1cnByaXNlLgotCi0gICAgdHJ5QWxsRHJhd0Z1bmN0aW9ucyhwYXRoLCBHTF9OT19FUlJP
Uik7Ci0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOwotCi0gICAgLy8gTWFrZSBz
dXJlIG5vdGhpbmcgZ290IGRyYXduIGJ5IHRoZSBkcmF3aW5nIGNvbW1hbmRzIHRoYXQgc2hvdWxk
IG5vdCBwcm9kdWNlCi0gICAgLy8gYW55dGhpbmcuCi0gICAgY29uc3QgYW5nbGU6OkdMQ29sb3Ig
YmxhY2sgPSB7MCwgMCwgMCwgMH07Ci0gICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoMCwgMCwg
a1Jlc29sdXRpb24sIGtSZXNvbHV0aW9uLCAwLCBibGFjaykpOwotfQotCi0vLyBUZXN0IHRoYXQg
dHJ5aW5nIHRvIHVzZSBwYXRoIG9iamVjdCB0aGF0IGRvZXNuJ3QgZXhpc3QgZ2VuZXJhdGVzCi0v
LyBhIEdMIGVycm9yLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RVbm5h
bWVkUGF0aHNFcnJvcnMpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gVW5uYW1lZCBwYXRoczogVHJ5aW5nIHRvIGNyZWF0ZSBhIHBhdGggb2Jq
ZWN0IHdpdGggbm9uLWV4aXN0aW5nIHBhdGggbmFtZQotICAgIC8vIHByb2R1Y2VzIGVycm9yLiAg
KE5vdCBhIGVycm9yIGluIHJlYWwgTlZfcGF0aF9yZW5kZXJpbmcpLgotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIEdMdWJ5dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVN
LCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLSAgICBHTGZsb2F0IGNvb3Jkc1tdICAgPSB7NTAu
MGYsIDUwLjBmfTsKLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKDU1NSwgMiwgY29tbWFuZHMs
IDIsIEdMX0ZMT0FULCBjb29yZHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0KLSAgICAvLyBQYXRoUGFyYW1ldGVyKjogVXNpbmcgbm9uLWV4aXN0aW5nIHBh
dGggb2JqZWN0IHByb2R1Y2VzIGVycm9yLgotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
IGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSg1NTUsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9N
SVVNLCA1LjBmKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVN
KDU1NSwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9ST1VORF9DSFJPTUlVTSk7Ci0g
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotLy8gVGVzdCB0
aGF0IHNldHRpbmcgaW5jb3JyZWN0IHBhdGggZGF0YSBnZW5lcmF0ZXMgYSBHTCBlcnJvci4KLVRF
U1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0UGF0aENvbW1hbmRzRXJyb3JzKQot
ewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRp
YyBjb25zdCBHTGVudW0ga0ludmFsaWRDb29yZFR5cGUgPSBHTF9OT05FOwotCi0gICAgR0x1aW50
IHBhdGggICAgICAgID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgIEdMdWJ5dGUgY29tbWFu
ZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLSAg
ICBHTGZsb2F0IGNvb3Jkc1tdICAgPSB7NTAuMGYsIDUwLjBmfTsKLQotICAgIGdsUGF0aENvbW1h
bmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIC00LCBHTF9GTE9BVCwgY29vcmRzKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbFBhdGhDb21tYW5k
c0NIUk9NSVVNKHBhdGgsIC0xLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xQYXRoQ29tbWFuZHND
SFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwga0ludmFsaWRDb29yZFR5cGUsIGNvb3Jkcyk7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAvLyBpbmNvcnJl
Y3QgbnVtYmVyIG9mIGNvb3JkaW5hdGVzCi0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRo
LCAyLCBjb21tYW5kcywgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCksIEdMX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBmYWlsIGR1ZSB0
byBjbWQgY291bnQgKyBjb29yZCBjb3VudCAqIHNob3J0IHNpemUuCi0gICAgZ2xQYXRoQ29tbWFu
ZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVp
Pjo6bWF4KCksIEdMX1NIT1JULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xEZWxl
dGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJ5aW5nIHRvIHJl
bmRlciBhIHBhdGggd2l0aCBpbnZhbGlkIGFyZ3VtZW50cwotLy8gZ2VuZXJhdGVzIGEgR0wgZXJy
b3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhSZW5kZXJpbmdJ
bnZhbGlkQXJncykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBnbFBhdGhD
b21tYW5kc0NIUk9NSVVNKHBhdGgsIDAsIG51bGxwdHIsIDAsIEdMX0ZMT0FULCBudWxscHRyKTsK
LQotICAgIC8vIFZlcmlmeSB0aGF0IG5vcm1hbCBjYWxscyB3b3JrLgotICAgIGdsU3RlbmNpbEZp
bGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YpOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01J
VU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsIEdMX0JPVU5ESU5HX0JPWF9DSFJP
TUlVTSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBVc2luZyBpbnZhbGlk
IGZpbGwgbW9kZSBjYXVzZXMgSU5WQUxJRF9FTlVNLgotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hS
T01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0gLSAxLCAweDdGKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNIC0gMSwgMHg3RiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAvLyBVc2luZyBp
bnZhbGlkIGNvdmVyIG1vZGUgY2F1c2VzIElOVkFMSURfRU5VTS4KLSAgICBnbENvdmVyRmlsbFBh
dGhDSFJPTUlVTShwYXRoLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSAtIDEpOwotICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0lOVkFMSURfRU5VTSksIGdsR2V0RXJyb3IoKSk7
Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9V
UF9DSFJPTUlVTSwgMHg3RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSArIDEpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX0VOVU0pOwotCi0gICAgLy8gVXNpbmcgbWFzaysxIG5vdCBiZWluZyBwb3dlciBvZiB0
d28gY2F1c2VzIElOVkFMSURfVkFMVUUgd2l0aCB1cC9kb3duIGZpbGwgbW9kZQotICAgIGdsU3Rl
bmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4NDApOwot
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTSwgMTIs
IEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotCi0gICAgLy8gY2hlY2sgaW5jb3JyZWN0IGluc3RhbmNlIHBhcmFtZXRlcnMu
Ci0KLSAgICAvLyBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkCi0gICAgewotICAgICAgICBnbENvdmVy
RmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwg
R0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oMSwgR0xfRkxPQVQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9O
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0g
ICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsQ292
ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwg
MCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULCBHTF9O
T05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
LSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xD
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwg
MCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxM
X0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9U
UkFOU0xBVEVfWF9DSFJPTUlVTSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9Ci0KLSAgICAvLyBDb3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWQKLSAgICB7Ci0gICAgICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIG51bGxwdHIp
OwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAg
Z2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAs
IEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENI
Uk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwgMCwgR0xfQ09OVkVYX0hVTExfQ0hS
T01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9O
RSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsK
LQotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lH
TkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VOU0lHTkVEX0lOVCwgR0xfTk9ORSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhf
SFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9N
SVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RSQU5TTEFU
RV9YX0NIUk9NSVVNLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotICAgIH0KLQotICAgIC8vIFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZAotICAg
IHsKLSAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5T
SUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4MCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAg
ICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3Rl
bmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQsICZwYXRoLCAwLCBHTF9D
T1VOVF9VUF9DSFJPTUlVTSwgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwLCBHTF9OT05F
LCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwot
Ci0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdO
RURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULCAweDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgbnVsbHB0cik7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09V
TlRfVVBfQ0hST01JVU0sIDB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVN
KTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VO
U0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01J
VU0sIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7
Ci0gICAgfQotCi0gICAgLy8gU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAg
ICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURf
SU5ULCAmcGF0aCwgMCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3Rh
bmNlZENIUk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwg
bnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0g
ICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05F
RF9JTlQsIG51bGxwdHIsIDAsIDB4MDAsIDB4MDAsIEdMX05PTkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJ
bnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAwLCAweDAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfSU5ULCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5V
TSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdM
X1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MDAsIDB4MDAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgbnVsbHB0
cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9Ci0K
LSAgICAvLyBTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAg
IGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VOU0lH
TkVEX0lOVCwgJnBhdGgsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDAsIEdMX0NPVU5UX1VQX0NIUk9N
SVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIEdMX0NP
VU5UX1VQX0NIUk9NSVVNLCBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBh
dGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIsIDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVY
X0hVTExfQ0hST01JVU0sIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09VTlRfVVBfQ0hST01JVU0sIEdMX05PTkUsIG51bGxwdHIpOwot
ICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xT
dGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9J
TlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIEdMX05P
TkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsK
LQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sIDAsIEdMX1VO
U0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9N
SVVNLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9GTE9BVCwgbnVsbHB0cik7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAxLCBHTF9VTlNJR05F
RF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgMCwgR0xfQ09VTlRfVVBf
Q0hST01JVU0sCi0gICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgbnVsbHB0cik7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9Ci0KLSAg
ICAvLyBTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZAotICAgIHsKLSAgICAgICAg
Z2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKC0xLCBHTF9VTlNJ
R05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9O
T05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUp
OwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0s
IEdMX05PTkUsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9F
TlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyLCAwLCAweDAsIDB4MCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9I
VUxMX0NIUk9NSVVNLCBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBh
dGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULCBHTF9OT05FLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09OVkVYX0hVTExfQ0hST01JVU0sIEdMX0ZMT0FULCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVy
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAs
IDB4MCwgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwg
bnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAg
ICB9Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci19Ci0KLWNvbnN0IEdM
ZmxvYXQga1Byb2plY3Rpb25NYXRyaXhbMTZdID0gezIuMGYgLyBrUmVzb2x1dGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjBmIC8ga1Jl
c29sdXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLTEuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEuMGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLjBmfTsKLQotY2xhc3MgQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBDSFJPTUlVTVBhdGhSZW5k
ZXJpbmdEcmF3VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlv
bik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNldENv
bmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJp
dHMoOCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FwcGxpY2FibGUoKSBjb25zdCB7IHJldHVybiBJ
c0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmciKTsgfQotCi0g
ICAgdm9pZCBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKQotICAgIHsKLSAgICAgICAgZ2xWaWV3
cG9ydCgwLCAwLCBrUmVzb2x1dGlvbiwga1Jlc29sdXRpb24pOwotICAgICAgICBnbENsZWFyQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgICAgIGdsU3RlbmNpbE1hc2soMHhmZmZm
ZmZmZik7Ci0gICAgICAgIGdsQ2xlYXJTdGVuY2lsKDApOwotICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotICAgICAgICBnbEVuYWJs
ZShHTF9TVEVOQ0lMX1RFU1QpOwotCi0gICAgICAgIGNvbnN0ZXhwciBjaGFyIGtWZXJ0ZXhTaGFk
ZXJTb3VyY2VbXSA9Ci0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAg
IiAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCk7IFxuIgotICAgICAgICAgICAgIn0iOwotCi0gICAg
ICAgIGNvbnN0ZXhwciBjaGFyIGtGcmFnbWVudFNoYWRlclNvdXJjZVtdID0KLSAgICAgICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIHZlYzQg
Y29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAgIiAg
Z2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCi0gICAgICAgICAgICAifSI7Ci0KLSAgICAgICAgR0x1
aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21l
bnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAg
IG1Db2xvckxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIpOwotICAg
ICAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAgLy8gU2V0IHVwIG9ydGhv
Z29uYWwgcHJvamVjdGlvbiB3aXRoIG5lYXIvZmFyIHBsYW5lIGRpc3RhbmNlIG9mIDIuCi0gICAg
ICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01JVU0sIGtQ
cm9qZWN0aW9uTWF0cml4KTsKLSAgICAgICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShH
TF9QQVRIX01PREVMVklFV19DSFJPTUlVTSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXR1cFBhdGhTdGF0ZUZvclRlc3RQYXR0ZXJuKEdMdWlu
dCBwYXRoKQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdMdWJ5dGUga0NvbW1hbmRzW10g
PSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfTElORV9UT19DSFJPTUlVTSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUVVBRFJBVElDX0NVUlZFX1RPX0NI
Uk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
VUJJQ19DVVJWRV9UT19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0KLSAgICAg
ICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0Nvb3Jkc1tdID0gezUwLjBmLCA1MC4wZiwgNzUuMGYs
IDc1LjBmLCAxMDAuMGYsIDYyLjVmLCA1MC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI1LjVmLCAwLjBmLCAgNjIuNWYsIDUwLjBmLCA1MC4wZiwgIDI1LjBm
LCA3NS4wZn07Ci0KLSAgICAgICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCA1LCBrQ29t
bWFuZHMsIDE0LCBHTF9GTE9BVCwga0Nvb3Jkcyk7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmZD
SFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSwgNS4wZik7Ci0gICAg
ICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX01JVEVSX0xJTUlUX0NI
Uk9NSVVNLCAxLjBmKTsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdM
X1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNLCAuMDJmKTsKLSAgICAgICAgZ2xQYXRoUGFyYW1l
dGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwgR0xfUk9VTkRf
Q0hST01JVU0pOwotICAgICAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFU
SF9FTkRfQ0FQU19DSFJPTUlVTSwgR0xfU1FVQVJFX0NIUk9NSVVNKTsKLSAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCB2ZXJpZnlUZXN0UGF0dGVybkZpbGwo
R0xmbG9hdCBmbHgsIEdMZmxvYXQgZmx5KQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdM
aW50IGtGaWxsQ29vcmRzW10gID0gezU1LCA1NCwgNTAsIDI4LCA2NiwgNjN9OwotICAgICAgICBz
dGF0aWMgY29uc3QgYW5nbGU6OkdMQ29sb3Iga0JsdWUgPSB7MCwgMCwgMjU1LCAyNTV9OwotCi0g
ICAgICAgIEdMaW50IHggPSBzdGF0aWNfY2FzdDxHTGludD4oZmx4KTsKLSAgICAgICAgR0xpbnQg
eSA9IHN0YXRpY19jYXN0PEdMaW50PihmbHkpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgNjsgaSArPSAyKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGludCBmeCA9IGtGaWxs
Q29vcmRzW2ldOwotICAgICAgICAgICAgR0xpbnQgZnkgPSBrRmlsbENvb3Jkc1tpICsgMV07Ci0g
ICAgICAgICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgZngsIHkgKyBmeSwgMSwgMSwg
MCwga0JsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIHZlcmlmeVRlc3RQYXR0ZXJu
QmcoR0xmbG9hdCBmeCwgR0xmbG9hdCBmeSkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBH
TGludCBrQmFja2dyb3VuZENvb3Jkc1tdICAgICA9IHs4MCwgODAsIDIwLCAyMCwgOTAsIDF9Owot
ICAgICAgICBzdGF0aWMgY29uc3QgYW5nbGU6OkdMQ29sb3Iga0V4cGVjdGVkQ29sb3IgPSB7MCwg
MCwgMCwgMH07Ci0KLSAgICAgICAgR0xpbnQgeCA9IHN0YXRpY19jYXN0PEdMaW50PihmeCk7Ci0g
ICAgICAgIEdMaW50IHkgPSBzdGF0aWNfY2FzdDxHTGludD4oZnkpOwotCi0gICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgNjsgaSArPSAyKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGlu
dCBieCA9IGtCYWNrZ3JvdW5kQ29vcmRzW2ldOwotICAgICAgICAgICAgR0xpbnQgYnkgPSBrQmFj
a2dyb3VuZENvb3Jkc1tpICsgMV07Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVs
cyh4ICsgYngsIHkgKyBieSwgMSwgMSwgMCwga0V4cGVjdGVkQ29sb3IpKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHZvaWQgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoR0xmbG9hdCBmeCwgR0xm
bG9hdCBmeSkKLSAgICB7Ci0gICAgICAgIEdMaW50IHggPSBzdGF0aWNfY2FzdDxHTGludD4oZngp
OwotICAgICAgICBHTGludCB5ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZ5KTsKLQotICAgICAgICAv
LyBJbnNpZGUgdGhlIHN0cm9rZSB3ZSBzaG91bGQgaGF2ZSBncmVlbi4KLSAgICAgICAgc3RhdGlj
IGNvbnN0IGFuZ2xlOjpHTENvbG9yIGtHcmVlbiA9IHswLCAyNTUsIDAsIDI1NX07Ci0gICAgICAg
IEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyA1MCwgeSArIDUzLCAxLCAxLCAwLCBrR3JlZW4p
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIDI2LCB5ICsgNzYsIDEsIDEs
IDAsIGtHcmVlbikpOwotCi0gICAgICAgIC8vIE91dHNpZGUgdGhlIHBhdGggd2Ugc2hvdWxkIGhh
dmUgYmxhY2suCi0gICAgICAgIHN0YXRpYyBjb25zdCBhbmdsZTo6R0xDb2xvciBibGFjayA9IHsw
LCAwLCAwLCAwfTsKLSAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIDEwLCB5ICsg
MTAsIDEsIDEsIDAsIGJsYWNrKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHgg
KyA4MCwgeSArIDgwLCAxLCAxLCAwLCBibGFjaykpOwotICAgIH0KLQotICAgIEdMdWludCBtQ29s
b3JMb2M7Ci19OwotCi0vLyBUZXN0cyB0aGF0IGJhc2ljIHBhdGggcmVuZGVyaW5nIGZ1bmN0aW9u
cyB3b3JrLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ0RyYXdUZXN0LCBUZXN0UGF0aFJl
bmRlcmluZykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4w
Zn07Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYs
IDEuMGZ9OwotCi0gICAgc2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCk7Ci0KLSAgICBHTHVpbnQg
cGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBzZXR1cFBhdGhTdGF0ZUZvclRlc3RQ
YXR0ZXJuKHBhdGgpOwotCi0gICAgLy8gRG8gdGhlIHN0ZW5jaWwgZmlsbCwgY292ZXIgZmlsbCwg
c3RlbmNpbCBzdHJva2UsIGNvdmVyIHN0cm9rZQotICAgIC8vIGluIHVuY29udmVudGlvbmFsIG9y
ZGVyOgotICAgIC8vIDEpIHN0ZW5jaWwgdGhlIHN0cm9rZSBpbiBzdGVuY2lsIGhpZ2ggYml0Ci0g
ICAgLy8gMikgc3RlbmNpbCB0aGUgZmlsbCBpbiBsb3cgYml0cwotICAgIC8vIDMpIGNvdmVyIHRo
ZSBmaWxsCi0gICAgLy8gNCkgY292ZXIgdGhlIHN0cm9rZQotICAgIC8vIFRoaXMgaXMgZG9uZSB0
byBjaGVjayB0aGF0IGdsUGF0aFN0ZW5jaWxGdW5jIHdvcmtzLCBlZyB0aGUgbWFzawotICAgIC8v
IGdvZXMgdGhyb3VnaC4gU3RlbmNpbCBmdW5jIGlzIG5vdCB0ZXN0ZWQgQVRNLCBmb3Igc2ltcGxp
Y2l0eS4KLQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZG
KTsKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgMHg4MCwgMHg4MCk7Ci0K
LSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3Rik7Ci0gICAg
Z2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3
Rik7Ci0KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNp
bE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JM
b2MsIDEsIGtCbHVlKTsKLSAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9CT1VO
RElOR19CT1hfQ0hST01JVU0pOwotCi0gICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgMHg4MCwg
MHg4MCk7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAg
Z2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKLSAgICBnbENvdmVyU3Ryb2tlUGF0
aENIUk9NSVVNKHBhdGgsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNKTsKLQotICAgIGdsRGVsZXRl
UGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgLy8gVmVyaWZ5IHRoZSBpbWFnZS4KLSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoMCwgMCk7
Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygwLCAwKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0
cm9rZSgwLCAwKTsKLX0KLQotLy8gVGVzdCB0aGF0IFN0ZW5jaWxUaGVue1N0cm9rZSxGaWxsfSBw
YXRoIHJlbmRlcmluZyBmdW5jdGlvbnMgd29yawotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmlu
Z0RyYXdUZXN0LCBUZXN0UGF0aFJlbmRlcmluZ1RoZW5GdW5jdGlvbnMpCi17Ci0gICAgaWYgKCFp
c0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGZsb2F0IGtCbHVl
W10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OwotICAgIHN0YXRpYyBmbG9hdCBrR3JlZW5b
XSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHNldHVwU3RhdGVGb3JUZXN0UGF0
dGVybigpOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAg
c2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihwYXRoKTsKLQotICAgIGdsUGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VR
VUFMLCAweDgwLCAweDgwKTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9a
RVJPKTsKLSAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOwotICAgIGdsU3Rl
bmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCAweDgwLCAweDgwLCBHTF9CT1VO
RElOR19CT1hfQ0hST01JVU0pOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9B
TFdBWVMsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7Ci0g
ICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3Jt
NGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
Q0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsIEdMX0NPTlZFWF9IVUxM
X0NIUk9NSVVNKTsKLQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLQotICAg
IC8vIFZlcmlmeSB0aGUgaW1hZ2UuCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAsIDApOwot
ICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoMCwgMCk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJv
a2UoMCwgMCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZHJhd2luZyB3aXRoICpJbnN0YW5jZWQgZnVu
Y3Rpb25zIHdvcmsuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QsIFRlc3RQ
YXRoUmVuZGVyaW5nSW5zdGFuY2VkKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAw
LjBmLCAxLjBmLCAxLjBmfTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4w
ZiwgMS4wZiwgMC4wZiwgMS4wZn07Ci0KLSAgICBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsK
LQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgIHNldHVwUGF0
aFN0YXRlRm9yVGVzdFBhdHRlcm4ocGF0aCk7Ci0KLSAgICBjb25zdCBHTHVpbnQga1BhdGhzW10g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gezEsIDEsIDEsIDEsIDF9OwotICAgIGNvbnN0
IEdMc2l6ZWkga1BhdGhDb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgPSA1OwotICAgIGNv
bnN0IEdMZmxvYXQga1NoYXBlU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSA4MC4wZjsK
LSAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrVHJhbnNmb3Jtc1trUGF0aENvdW50ICogMTJdID0g
ewotICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBm
LCAxLjBmLCAwLjBmLCAgICAgICAgICAgMC4wZiwgICAgICAgMC4wZiwKLSAgICAgICAgMS4wZiwg
MC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwga1NoYXBlU2l6
ZSwgICAgIDAuMGYsICAgICAgIDAuMGYsCi0gICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYs
IDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIGtTaGFwZVNpemUgKiAyLCAwLjBmLCAgICAg
ICAwLjBmLAotICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBm
LCAwLjBmLCAxLjBmLCAwLjBmLCAgICAgICAgICAga1NoYXBlU2l6ZSwgMC4wZiwKLSAgICAgICAg
MS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwga1No
YXBlU2l6ZSwgICAgIGtTaGFwZVNpemUsIDAuMGZ9OwotCi0gICAgLy8gVGhlIHRlc3QgcGF0dGVy
biBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgc2ltcGxlIGRyYXcgY2FzZSBhYm92ZSwKLSAgICAvLyBl
eGNlcHQgdGhhdCB0aGUgcGF0aCBpcyBkcmF3biBrUGF0aENvdW50IHRpbWVzIHdpdGggZGlmZmVy
ZW50IG9mZnNldHMuCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAs
IDB4RkYpOwotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTShrUGF0aENv
dW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRocywgcGF0aCAtIDEsIDB4ODAsIDB4ODAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FGRklORV8zRF9DSFJPTUlV
TSwga1RyYW5zZm9ybXMpOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdB
WVMsIDAsIDB4N0YpOwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAg
ICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKGtQYXRoQ291bnQsIEdMX1VOU0lH
TkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGLCBHTF9BRkZJTkVfM0RfQ0hST01J
VU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrVHJhbnNmb3Jtcyk7
Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsU3RlbmNpbEZ1bmMoR0xfTEVT
UywgMCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7
Ci0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5T
SUdORURfSU5ULCBrUGF0aHMsIHBhdGggLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hFU19DSFJPTUlVTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9BRkZJTkVfM0RfQ0hST01JVU0s
IGtUcmFuc2Zvcm1zKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xTdGVu
Y2lsRnVuYyhHTF9FUVVBTCwgMHg4MCwgMHg4MCk7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwg
R0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVu
KTsKLSAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGtQYXRoQ291bnQsIEdM
X1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hFU19DSFJPTUlV
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FGRklORV8zRF9D
SFJPTUlVTSwga1RyYW5zZm9ybXMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIGlt
YWdlLgotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLjBmLCAwLjBmKTsKLSAgICB2ZXJpZnlU
ZXN0UGF0dGVybkJnKDAuMGYsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAu
MGYsIDAuMGYpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUsIDAuMGYp
OwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwgMC4wZik7Ci0gICAgdmVyaWZ5
VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSwgMC4wZik7Ci0KLSAgICB2ZXJpZnlUZXN0UGF0
dGVybkZpbGwoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmco
a1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtTaGFw
ZVNpemUgKiAyLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLjBmLCBrU2hh
cGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAuMGYsIGtTaGFwZVNpemUpOwotICAg
IHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAuMGYsIGtTaGFwZVNpemUpOwotCi0gICAgdmVyaWZ5
VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUsIGtTaGFwZVNpemUpOwotICAgIHZlcmlmeVRlc3RQ
YXR0ZXJuQmcoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5T
dHJva2Uoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbnN0YW5j
ZWQgZmlsbC9zdHJva2UgdGhlbiBjb3ZlciBmdW5jdGlvbnMgd29yay4KLVRFU1RfUChDSFJPTUlV
TVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJpbmdUaGVuRnVuY3Rpb25zSW5z
dGFuY2VkKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAxLjBm
fTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwg
MS4wZn07Ci0KLSAgICBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsKLQotICAgIEdMdWludCBw
YXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBh
dHRlcm4ocGF0aCk7Ci0KLSAgICBjb25zdCBHTHVpbnQga1BhdGhzW10gICAgICAgICAgICAgID0g
ezEsIDEsIDEsIDEsIDF9OwotICAgIGNvbnN0IEdMc2l6ZWkga1BhdGhDb3VudCAgICAgICAgICAg
PSA1OwotICAgIGNvbnN0IEdMZmxvYXQga1NoYXBlU2l6ZSAgICAgICAgICAgPSA4MC4wZjsKLSAg
ICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrVHJhbnNmb3Jtc1tdID0gewotICAgICAgICAwLjBmLCAw
LjBmLCBrU2hhcGVTaXplLCAwLjBmLCAgICAgICBrU2hhcGVTaXplICogMiwKLSAgICAgICAgMC4w
ZiwgMC4wZiwga1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSwKLSAgICB9OwotCi0g
ICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4RkYpOwotICAgIGds
U3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDB4ODAsIDB4ODApOwotICAgIGdsU3RlbmNpbE9wKEdMX0tF
RVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtH
cmVlbik7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
KAotICAgICAgICBrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRocywgcGF0aCAtIDEs
IDB4ODAsIDB4ODAsCi0gICAgICAgIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hFU19D
SFJPTUlVTSwgR0xfVFJBTlNMQVRFXzJEX0NIUk9NSVVNLCBrVHJhbnNmb3Jtcyk7Ci0KLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xf
QUxXQVlTLCAwLCAweDdGKTsKLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOwot
ICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5pZm9y
bTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICBrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQs
IGtQYXRocywgcGF0aCAtIDEsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGLAotICAgICAgICBH
TF9CT1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0sIEdMX1RSQU5TTEFURV8y
RF9DSFJPTUlVTSwga1RyYW5zZm9ybXMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhl
IGltYWdlLgotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLjBmLCAwLjBmKTsKLSAgICB2ZXJp
ZnlUZXN0UGF0dGVybkJnKDAuMGYsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tl
KDAuMGYsIDAuMGYpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUsIDAu
MGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwgMC4wZik7Ci0gICAgdmVy
aWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSwgMC4wZik7Ci0KLSAgICB2ZXJpZnlUZXN0
UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJu
Qmcoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKGtT
aGFwZVNpemUgKiAyLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLjBmLCBr
U2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAuMGYsIGtTaGFwZVNpemUpOwot
ICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAuMGYsIGtTaGFwZVNpemUpOwotCi0gICAgdmVy
aWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUsIGtTaGFwZVNpemUpOwotICAgIHZlcmlmeVRl
c3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRl
cm5TdHJva2Uoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci19Ci0KLS8vIFRoaXMgY2xhc3MgaW1w
bGVtZW50cyBhIHRlc3QgdGhhdCBkcmF3cyBhIGdyaWQgb2Ygdi1zaGFwZXMuIFRoZSBncmlkIGlz
Ci0vLyBkcmF3biBzbyB0aGF0IGV2ZW4gcm93cyAoZnJvbSB0aGUgYm90dG9tKSBhcmUgZHJhd24g
d2l0aCBEcmF3QXJyYXlzIGFuZCBvZGQKLS8vIHJvd3MgYXJlIGRyYXduIHdpdGggcGF0aCByZW5k
ZXJpbmcuICBJdCBjYW4gYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgdGV4dHVyaW5nCi0vLyBtb2Rl
cywgY29tcGFyaW5nIGhvdyB0aGUgZmlsbCB3b3VsZCB3b3JrIGluIG5vcm1hbCBHTCByZW5kZXJp
bmcgYW5kIGhvdyB0bwotLy8gc2V0dXAgc2FtZSBzb3J0IG9mIGZpbGwgd2l0aCBwYXRoIHJlbmRl
cmluZy4KLS8vIFRoZSB0ZXh0dXJpbmcgdGVzdCBpcyBwYXJhbWV0cml6ZWQgdG8gcnVuIHRoZSB0
ZXN0IHdpdGggYW5kIHdpdGhvdXQKLS8vIEFOR0xFIG5hbWUgaGFzaGluZy4KLWNsYXNzIENIUk9N
SVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3Qo
KSA6IG1Qcm9ncmFtKDApCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlv
bik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNldENv
bmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJp
dHMoOCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FwcGxpY2FibGUoKSBjb25zdCB7IHJldHVybiBJ
c0dMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmciKTsgfQotCi0g
ICAgdm9pZCB0ZXN0VGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1Qcm9n
cmFtKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwot
ICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBTZXRzIHVwIHRoZSBHTCBwcm9ncmFtIHN0YXRlIGZvciB0aGUgdGVzdC4KLSAgICAvLyBW
ZXJ0ZXggc2hhZGVyIG5lZWRzIGF0IGxlYXN0IGZvbGxvd2luZyB2YXJpYWJsZXM6Ci0gICAgLy8g
IHVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDsKLSAgICAvLyAgdW5pZm9ybSBtYXQ/IGNvbG9yX21h
dHJpeDsgKGFjY2Vzc2libGUgd2l0aCBrQ29sb3JNYXRyaXhMb2NhdGlvbikKLSAgICAvLyAgdW5p
Zm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTsKLSAgICAvLyAgYXR0cmlidXRlIHZlYzIgcG9zaXRp
b247Ci0gICAgLy8gIHZhcnlpbmcgdmVjNCBjb2xvcjsKLSAgICAvLwotICAgIC8vIEZyYWdtZW50
IHNoYWRlciBuZWVkcyBhdCBsZWFzdCBmb2xsb3dpbmcgdmFyaWFibGVzOgotICAgIC8vICB2YXJ5
aW5nIHZlYzQgY29sb3I7Ci0gICAgLy8KLSAgICAvLyAgKD8gY2FuIGJlIGFueXRoaW5nKQotICAg
IHZvaWQgQ29tcGlsZVByb2dyYW0oY29uc3QgY2hhciAqdmVydGV4U2hhZGVyU291cmNlLCBjb25z
dCBjaGFyICpmcmFnbWVudFNoYWRlclNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGdsVmlld3BvcnQo
MCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0aW9uKTsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAu
MGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgICAgICBnbFN0ZW5jaWxNYXNrKDB4ZmZmZmZmZmYp
OwotICAgICAgICBnbENsZWFyU3RlbmNpbCgwKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xFbmFibGUoR0xf
QkxFTkQpOwotICAgICAgICBnbEJsZW5kRnVuYyhHTF9TUkNfQUxQSEEsIEdMX09ORV9NSU5VU19T
UkNfQUxQSEEpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIEdM
dWludCB2U2hhZGVyID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UpOwotICAgICAgICBHTHVpbnQgZlNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfRlJB
R01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgw
dSwgdlNoYWRlcik7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgZlNoYWRlcik7Ci0KLSAgICAgICAg
bVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKLQotICAgICAgICBnbEF0dGFjaFNoYWRlciht
UHJvZ3JhbSwgdlNoYWRlcik7Ci0gICAgICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCBmU2hh
ZGVyKTsKLSAgICAgICAgZ2xEZWxldGVTaGFkZXIodlNoYWRlcik7Ci0gICAgICAgIGdsRGVsZXRl
U2hhZGVyKGZTaGFkZXIpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0K
LQotICAgIHZvaWQgYmluZFByb2dyYW0oKQotICAgIHsKLSAgICAgICAgZ2xCaW5kQXR0cmliTG9j
YXRpb24obVByb2dyYW0sIGtQb3NpdGlvbkxvY2F0aW9uLCAicG9zaXRpb24iKTsKLSAgICAgICAg
Z2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtWaWV3TWF0cml4TG9jYXRp
b24sICJ2aWV3X21hdHJpeCIpOwotICAgICAgICBnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlV
TShtUHJvZ3JhbSwga0NvbG9yTWF0cml4TG9jYXRpb24sICJjb2xvcl9tYXRyaXgiKTsKLSAgICAg
ICAgZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtNb2RlbFRyYW5zbGF0
ZUxvY2F0aW9uLCAibW9kZWxfdHJhbnNsYXRlIik7Ci0gICAgICAgIGdsQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24s
ICJjb2xvciIpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAg
IGJvb2wgbGlua1Byb2dyYW0oKQotICAgIHsKLSAgICAgICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3Jh
bSk7Ci0KLSAgICAgICAgR0xpbnQgbGlua2VkID0gMDsKLSAgICAgICAgZ2xHZXRQcm9ncmFtaXYo
bVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsKLSAgICAgICAgaWYgKGxpbmtlZCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiAobGlua2VkID09IDEpOwotICAgIH0KLQotICAgIHZvaWQgZHJh
d1Rlc3RQYXR0ZXJuKCkKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgdi1zaGFwZSBpcyB1c2VkIGJv
dGggZm9yIERyYXdBcnJheXMgYW5kIHBhdGggcmVuZGVyaW5nLgotICAgICAgICBzdGF0aWMgY29u
c3QgR0xmbG9hdCBrVmVydGljZXNbXSA9IHs3NS4wZiwgNzUuMGYsIDUwLjBmLCAyNS41ZiwgNTAu
MGYsIDUwLjBmLCAyNS4wZiwgNzUuMGZ9OwotCi0gICAgICAgIEdMdWludCB2Ym8gPSAwOwotICAg
ICAgICBnbEdlbkJ1ZmZlcnMoMSwgJnZibyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIHZibyk7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNp
emVvZihrVmVydGljZXMpLCBrVmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihrUG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNF
LCAwLCAwKTsKLQotICAgICAgICAvLyBTZXR1cCBzdGF0ZSBmb3IgZHJhd2luZyB0aGUgc2hhcGUg
d2l0aCBwYXRoIHJlbmRlcmluZy4KLSAgICAgICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShH
TF9BTFdBWVMsIDAsIDB4N0YpOwotICAgICAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4
N0YpOwotICAgICAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAg
ICAgICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSwg
a1Byb2plY3Rpb25NYXRyaXgpOwotICAgICAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVN
KEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNKTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgR0x1
Ynl0ZSBrQ29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9MSU5FX1RPX0NIUk9N
SVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MSU5F
X1RPX0NIUk9NSVVNLCBHTF9MSU5FX1RPX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLQotICAgICAg
ICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrQ29vcmRzW10gPSB7Ci0gICAgICAgICAgICBrVmVydGlj
ZXNbMF0sIGtWZXJ0aWNlc1sxXSwga1ZlcnRpY2VzWzJdLCBrVmVydGljZXNbM10sCi0gICAgICAg
ICAgICBrVmVydGljZXNbNl0sIGtWZXJ0aWNlc1s3XSwga1ZlcnRpY2VzWzRdLCBrVmVydGljZXNb
NV0sCi0gICAgICAgIH07Ci0KLSAgICAgICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01J
VU0oMSk7Ci0gICAgICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4oQXJyYXlTaXplKGtDb21tYW5kcykpLCBrQ29tbWFuZHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKGtDb29yZHMp
KSwgR0xfRkxPQVQsIGtDb29yZHMpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgICAgICBHTGZsb2F0IHBhdGhfbW9kZWxfdHJhbnNsYXRlWzE2XSA9IHsKLSAgICAgICAgICAg
IDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsCi0gICAgICAg
ICAgICAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAotICAg
ICAgICB9OwotCi0gICAgICAgIC8vIERyYXdzIHRoZSBzaGFwZXMuIEV2ZXJ5IGV2ZW4gcm93IGZy
b20gdGhlIGJvdHRvbSBpcyBkcmF3biB3aXRoCi0gICAgICAgIC8vIERyYXdBcnJheXMsIG9kZCBy
b3cgd2l0aCBwYXRoIHJlbmRlcmluZy4gVGhlIHNoYWRlciBwcm9ncmFtIGlzCi0gICAgICAgIC8v
IHRoZSBzYW1lIGZvciB0aGUgYm90aCBkcmF3cy4KLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGog
PCBrVGVzdFJvd3M7ICsraikKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBrVGVzdENvbHVtbnM7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaiAlIDIgPT0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGds
RGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpOwotICAgICAgICAgICAgICAgICAgICBnbFVuaWZvcm0y
ZihrTW9kZWxUcmFuc2xhdGVMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaSAqIGtTaGFw
ZVdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xm
bG9hdD4oaiAqIGtTaGFwZUhlaWdodCkpOwotICAgICAgICAgICAgICAgICAgICBnbERyYXdBcnJh
eXMoR0xfVFJJQU5HTEVfU1RSSVAsIDAsIDQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBnbEVu
YWJsZShHTF9TVEVOQ0lMX1RFU1QpOwotICAgICAgICAgICAgICAgICAgICBwYXRoX21vZGVsX3Ry
YW5zbGF0ZVsxMl0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwotICAg
ICAgICAgICAgICAgICAgICBwYXRoX21vZGVsX3RyYW5zbGF0ZVsxM10gPSBzdGF0aWNfY2FzdDxH
TGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2xNYXRyaXhM
b2FkZkNIUk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBwYXRoX21vZGVsX3RyYW5z
bGF0ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hS
T01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQk9VTkRJTkdfQk9YX0NI
Uk9NSVVNKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoa1Bvc2l0aW9uTG9jYXRpb24pOwotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwg
JnZibyk7Ci0gICAgICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgZW51bQotICAgIHsKLSAgICAgICAg
a1NoYXBlV2lkdGggID0gNzUsCi0gICAgICAgIGtTaGFwZUhlaWdodCA9IDc1LAotICAgICAgICBr
VGVzdFJvd3MgICAgPSBrUmVzb2x1dGlvbiAvIGtTaGFwZUhlaWdodCwKLSAgICAgICAga1Rlc3RD
b2x1bW5zID0ga1Jlc29sdXRpb24gLyBrU2hhcGVXaWR0aCwKLSAgICB9OwotCi0gICAgR0x1aW50
IG1Qcm9ncmFtOwotCi0gICAgLy8gVGhpcyB1bmlmb3JtIGJlIGNhbiBzZXQgYnkgdGhlIHRlc3Qu
IEl0IHNob3VsZCBiZSB1c2VkIHRvIHNldCB0aGUgY29sb3IgZm9yCi0gICAgLy8gZHJhd2luZyB3
aXRoIERyYXdBcnJheXMuCi0gICAgc3RhdGljIGNvbnN0IEdMaW50IGtDb2xvck1hdHJpeExvY2F0
aW9uID0gNDsKLQotICAgIC8vIFRoaXMgZnJhZ21lbnQgaW5wdXQgY2FuIGJlIHNldCBieSB0aGUg
dGVzdC4gSXQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZQotICAgIC8vIGNvbG9yIGZvciBkcmF3
aW5nIHdpdGggcGF0aCByZW5kZXJpbmcuCi0gICAgc3RhdGljIGNvbnN0IEdMaW50IGtDb2xvckZy
YWdtZW50SW5wdXRMb2NhdGlvbiA9IDc7Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xpbnQga01vZGVs
VHJhbnNsYXRlTG9jYXRpb24gPSAzOwotICAgIHN0YXRpYyBjb25zdCBHTGludCBrUG9zaXRpb25M
b2NhdGlvbiAgICAgICA9IDA7Ci0gICAgc3RhdGljIGNvbnN0IEdMaW50IGtWaWV3TWF0cml4TG9j
YXRpb24gICAgID0gNzsKLX07Ci0KLS8vIFRlc3Qgc3VjY2VzcyBhbmQgZXJyb3IgY2FzZXMgZm9y
IGJpbmRpbmcgZnJhZ21lbnQgaW5wdXQgbG9jYXRpb24uCi1URVNUX1AoQ0hST01JVU1QYXRoUmVu
ZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFRlc3RCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uKQot
ewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIG9y
aWdpbmFsIE5WX3BhdGhfcmVuZGVyaW5nIHNwZWNpZmljYXRpb24gZG9lc24ndCBkZWZpbmUgd2hl
dGhlciB0aGUKLSAgICAvLyBmcmFnbWVudCBzaGFkZXIgaW5wdXQgdmFyaWFibGVzIHNob3VsZCBi
ZSBkZWZpbmVkIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIG9yCi0gICAgLy8gbm90LiBJbiBmYWN0IGl0
IGRvZXNuJ3QgZXZlbiByZXF1aXJlIGEgdmVydGV4IHNoYWRlci4KLSAgICAvLyBIb3dldmVyIHRo
ZSBHTEVTMy4xIHNwZWMgYmFzaWNhbGx5IHNheXMgdGhhdCBmcmFnbWVudCBpbnB1dHMgYXJlCi0g
ICAgLy8gZWl0aGVyIGJ1aWx0LWlucyBvciBjb21lIGZyb20gdGhlIHByZXZpb3VzIHNoYWRlciBz
dGFnZS4KLSAgICAvLyAowqcgMTQuMSwgRnJhZ21lbnQgU2hhZGVyIFZhcmlhYmxlcykuCi0gICAg
Ly8gQWRkaXRpb25hbGx5IHRoZXJlIGFyZSBtYW55IHBsYWNlcyB0aGF0IGFyZSBiYXNlZCBvbiB0
aGUgYXNzdW1wdGlvbiBvZiBoYXZpbmcKLSAgICAvLyBhIHZlcnRleCBzaGFkZXIgKGNvbW1hbmQg
YnVmZmVyLCBhbmdsZSkgc28gd2UncmUgZ29pbmcgdG8gc3RpY2sgdG8gdGhlIHNhbWUKLSAgICAv
LyBzZW1hbnRpY3MgYW5kIHJlcXVpcmUgYSB2ZXJ0ZXggc2hhZGVyIGFuZCB0byBoYXZlIHRoZSB2
ZXJ0ZXggc2hhZGVyIGRlZmluZSB0aGUKLSAgICAvLyB2YXJ5aW5nIGZyYWdtZW50IHNoYWRlciBp
bnB1dC4KLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFyKiBrVmVydGV4
U2hhZGVyU291cmNlID0KLSAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgotICAgICAgICJ2
b2lkIG1haW4oKSB7fVxuIjsKLQotICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlp
bmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgotICAgIENvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtG
cmFnbWVudFNoYWRlclNvdXJjZSk7Ci0KLSAgICBlbnVtIGtCaW5kTG9jYXRpb25zCi0gICAgewot
ICAgICAgICBrQ29sb3JMb2NhdGlvbiAgICAgPSA1LAotICAgICAgICBrRnJhZ0NvbG9yTG9jYXRp
b24gPSA2Ci0gICAgfTsKLQotICAgIC8vIHN1Y2Nlc3NmdWwgYmluZC4KLSAgICBnbEJpbmRGcmFn
bWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yTG9jYXRpb24sICJjb2xv
ciIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gYW55IG5hbWUgY2FuIGJl
IGJvdW5kIGFuZCBuYW1lcyB0aGF0IGRvIG5vdCBhY3R1YWxseSBleGlzdCBpbiB0aGUgcHJvZ3Jh
bSBhZnRlcgotICAgIC8vIGxpbmtpbmcgYXJlIGlnbm9yZWQuCi0gICAgZ2xCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckxvY2F0aW9uLCAiZG9lc250X2V4
aXN0Iik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBpbGxlZ2FsIHByb2dy
YW0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSArIDEs
IGtDb2xvckxvY2F0aW9uLCAiY29sb3IiKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotCi0gICAgLy8gaWxsZWdhbCBiaW5kIChidWlsdC1pbikKLSAgICBnbEJp
bmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0ZyYWdDb2xvckxvY2F0
aW9uLCAiZ2xfRnJhZ0NvbG9yIik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9n
cmFtLCBrRnJhZ0NvbG9yTG9jYXRpb24sIG51bGxwdHIpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9N
SVVNKG1Qcm9ncmFtLCAweGZmZmZmZiwgImNvbG9yIik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfVkFMVUUpOwotCi0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVl
KTsKLQotICAgIGNvbnN0IEdMZmxvYXQga0NvZWZmaWNpZW50czE2W10gPSB7MS4wZiwgMi4wZiwg
IDMuMGYsICA0LjBmLCAgNS4wZiwgIDYuMGYsICA3LjBmLCAgOC4wZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkuMGYsIDEwLjBmLCAxMS4wZiwgMTIuMGYsIDEzLjBm
LCAxNC4wZiwgMTUuMGYsIDE2LjBmfTsKLQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0
R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckxvY2F0aW9uLCBHTF9FWUVfTElORUFSX0NIUk9N
SVVNLCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZm
aWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBHTF9FWUVfTElORUFSX0NI
Uk9NSVVNLCA0LCBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
fQotCi0vLyBUZXN0IGZyYWdtZW50IGlucHV0IGludGVycG9sYXRpb24gaW4gQ0hST01JVU1fRVlF
IGNvb3JkaW5hdGVzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdU
ZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1fRVlFKQotewotICAg
IGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKLSAgICBjb25zdCBjaGFyICprVmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAg
InVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBjb2xv
cl9tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgbW9kZWxfdHJhbnNsYXRlO1xuIgot
ICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZl
YzMgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIHZlYzQg
cCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEuMCwgMS4wKTtcbiIKLSAgICAg
ICAgIiAgY29sb3IgPSAoY29sb3JfbWF0cml4ICogcCkucmdiO1xuIgotICAgICAgICAiICBnbF9Q
b3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25z
dCBjaGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgY29sb3I7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IsIDEu
MCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgQ29t
cGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsK
LSAgICBiaW5kUHJvZ3JhbSgpOwotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1
ZSk7Ci0KLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRyaXhMb2NhdGlvbiwgMSwgR0xf
RkFMU0UsIGtQcm9qZWN0aW9uTWF0cml4KTsKLQotICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtD
b2xvck1hdHJpeFsxNl0gPSB7MS4wZiAvIGtSZXNvbHV0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEuMGYgLyBrUmVzb2x1dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGZ9OwotCi0gICAgZ2xVbmlmb3JtTWF0cml4
NGZ2KGtDb2xvck1hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga0NvbG9yTWF0cml4KTsKLQot
ICAgIC8vIFRoaXMgaXMgdGhlIGZ1bmN0aW9uYWxpdHkgd2UgYXJlIHRlc3Rpbmc6IFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbgotICAgIC8vIGRvZXMgdGhlIHNhbWUgd29yayBhcyB0aGUgY29s
b3IgdHJhbnNmb3JtIGluIHZlcnRleCBzaGFkZXIuCi0gICAgc3RhdGljIGNvbnN0IEdMZmxvYXQg
a0NvbG9yQ29lZmZpY2llbnRzWzEyXSA9IHsxLjBmIC8ga1Jlc29sdXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wZiAvIGtSZXNv
bHV0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmfTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
KG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9FWUVfTElORUFSX0NIUk9NSVVNLCAzLCBrQ29s
b3JDb2VmZmljaWVudHMpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1Rl
c3RQYXR0ZXJuKCk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBm
LCA1MC4wZiwgNTAuMGYsIDI4LjBmLCA2Ni4wZiwgNjMuMGZ9OwotCi0gICAgZm9yIChpbnQgaiA9
IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwga1Rlc3RDb2x1bW5zOyArK2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29vcmRzKTsgayArPSAyKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZ4ID0ga0ZpbGxDb29yZHNba107Ci0gICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBrRmlsbENvb3Jkc1trICsgMV07Ci0gICAgICAg
ICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0aWNfY2FzdDxmbG9hdD4oaSAqIGtTaGFwZVdp
ZHRoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9IHN0YXRpY19jYXN0PGZsb2F0
PihqICoga1NoYXBlSGVpZ2h0KTsKLQotICAgICAgICAgICAgICAgIGFuZ2xlOjpHTENvbG9yIGNv
bG9yOwotICAgICAgICAgICAgICAgIGNvbG9yLlIgPSBzdGF0aWNfY2FzdDxHTHVieXRlPihzdGQ6
OnJvdW5kZigocHggKyBmeCkgLyBrUmVzb2x1dGlvbiAqIDI1NS4wZikpOwotICAgICAgICAgICAg
ICAgIGNvbG9yLkcgPSBzdGF0aWNfY2FzdDxHTHVieXRlPihzdGQ6OnJvdW5kZigocHkgKyBmeSkg
LyBrUmVzb2x1dGlvbiAqIDI1NS4wZikpOwotICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOwot
ICAgICAgICAgICAgICAgIGNvbG9yLkEgPSAyNTU7Ci0gICAgICAgICAgICAgICAgQ2hlY2tQaXhl
bHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4ICsgZngpLCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBm
eSksIDEsIDEsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBUZXN0IGZyYWdtZW50IGlucHV0IGlu
dGVycG9sYXRpb24gaW4gQ0hST01JVU1fT0JKRUNUIGNvb3JkaW5hdGVzLgotVEVTVF9QKENIUk9N
SVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuQ0hST01JVU1fT0JKRUNUKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFy
ICprVmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInVuaWZvcm0gbWF0NCB2aWV3X21hdHJp
eDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBjb2xvcl9tYXRyaXg7XG4iCi0gICAgICAgICJ1
bmlmb3JtIHZlYzIgbW9kZWxfdHJhbnNsYXRlO1xuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIg
cG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgY29sb3I7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGNvbG9yID0gKGNvbG9yX21hdHJpeCAqIHZlYzQo
cG9zaXRpb24sIDEuMCwgMS4wKSkucmdiO1xuIgotICAgICAgICAiICB2ZWM0IHAgPSB2ZWM0KG1v
ZGVsX3RyYW5zbGF0ZSArIHBvc2l0aW9uLCAxLjAsIDEuMCk7XG4iCi0gICAgICAgICIgIGdsX1Bv
c2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBj
aGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgY29sb3I7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IucmdiLCAx
LjApO1xuIgotICAgICAgICAifSI7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBDb21w
aWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwot
ICAgIGJpbmRQcm9ncmFtKCk7Ci0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVl
KTsKLQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrVmlld01hdHJpeExvY2F0aW9uLCAxLCBHTF9G
QUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOwotCi0gICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0Nv
bG9yTWF0cml4WzE2XSA9IHsxLjBmIC8ga1NoYXBlV2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4wZiAvIGtTaGFwZUhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBm
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGZ9OwotICAgIGdsVW5pZm9ybU1hdHJpeDRm
dihrQ29sb3JNYXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtDb2xvck1hdHJpeCk7Ci0KLSAg
ICAvLyBUaGlzIGlzIHRoZSBmdW5jdGlvbmFsaXR5IHdlIGFyZSB0ZXN0aW5nOiBQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW4KLSAgICAvLyBkb2VzIHRoZSBzYW1lIHdvcmsgYXMgdGhlIGNvbG9y
IHRyYW5zZm9ybSBpbiB2ZXJ0ZXggc2hhZGVyLgotICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtD
b2xvckNvZWZmaWNpZW50c1s5XSA9IHsKLSAgICAgICAgMS4wZiAvIGtTaGFwZVdpZHRoLCAwLjBm
LCAwLjBmLCAwLjBmLCAxLjBmIC8ga1NoYXBlSGVpZ2h0LCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
fTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBr
Q29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9PQkpFQ1RfTElORUFSX0NIUk9NSVVNLCAzLCBrQ29sb3JDb2VmZmlj
aWVudHMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3VGVzdFBhdHRl
cm4oKTsKLQotICAgIGNvbnN0IEdMZmxvYXQga0ZpbGxDb29yZHNbNl0gPSB7NTkuMGYsIDUwLjBm
LCA1MC4wZiwgMjguMGYsIDY2LjBmLCA2My4wZn07Ci0KLSAgICBmb3IgKGludCBqID0gMDsgaiA8
IGtUZXN0Um93czsgKytqKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVz
dENvbHVtbnM7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7
IGsgPCBBcnJheVNpemUoa0ZpbGxDb29yZHMpOyBrICs9IDIpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgZnggPSBrRmlsbENvb3Jkc1trXTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBmbG9hdCBmeSA9IGtGaWxsQ29vcmRzW2sgKyAxXTsKLSAgICAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBweCA9IHN0YXRpY19jYXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwot
ICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHB5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBr
U2hhcGVIZWlnaHQpOwotCi0gICAgICAgICAgICAgICAgYW5nbGU6OkdMQ29sb3IgY29sb3I7Ci0g
ICAgICAgICAgICAgICAgY29sb3IuUiA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KHN0ZDo6cm91bmRm
KGZ4IC8ga1NoYXBlV2lkdGggKiAyNTUuMGYpKTsKLSAgICAgICAgICAgICAgICBjb2xvci5HID0g
c3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3VuZGYoZnkgLyBrU2hhcGVIZWlnaHQgKiAyNTUu
MGYpKTsKLSAgICAgICAgICAgICAgICBjb2xvci5CID0gMDsKLSAgICAgICAgICAgICAgICBjb2xv
ci5BID0gMjU1OwotICAgICAgICAgICAgICAgIENoZWNrUGl4ZWxzKHN0YXRpY19jYXN0PEdMaW50
PihweCArIGZ4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHB5ICsgZnkpLCAxLCAxLCAyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbG9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLX0KLQotLy8gVGVzdCBzdWNjZXNzIGFuZCBlcnJvciBjYXNlcyBmb3Igc2V0dGluZyBp
bnRlcnBvbGF0aW9uIHBhcmFtZXRlcnMuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0
aFRleHR1cmluZ1Rlc3QsIFRlc3RQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5BcmdzKQotewot
ICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFyICprVmVydGV4U2hhZGVyU291cmNlID0KLSAgICAg
ICAgInZhcnlpbmcgdmVjMiB2ZWMyX3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMyB2ZWMz
X3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCB2ZWM0X3ZhcjtcbiIKLSAgICAgICAgInZh
cnlpbmcgZmxvYXQgZmxvYXRfdmFyO1xuIgotICAgICAgICAidmFyeWluZyBtYXQyIG1hdDJfdmFy
O1xuIgotICAgICAgICAidmFyeWluZyBtYXQzIG1hdDNfdmFyO1xuIgotICAgICAgICAidmFyeWlu
ZyBtYXQ0IG1hdDRfdmFyO1xuIgotICAgICAgICAiYXR0cmlidXRlIGZsb2F0IGF2b2lkX29wdDtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgdmVjMl92YXIgPSB2ZWMy
KDEuMCwgMi4wICsgYXZvaWRfb3B0KTtcbiIKLSAgICAgICAgIiAgdmVjM192YXIgPSB2ZWMzKDEu
MCwgMi4wLCAzLjAgKyBhdm9pZF9vcHQpO1xuIgotICAgICAgICAiICB2ZWM0X3ZhciA9IHZlYzQo
MS4wLCAyLjAsIDMuMCwgNC4wICsgYXZvaWRfb3B0KTtcbiIKLSAgICAgICAgIiAgZmxvYXRfdmFy
ID0gNS4wICsgYXZvaWRfb3B0O1xuIgotICAgICAgICAiICBtYXQyX3ZhciA9IG1hdDIoMi4wICsg
YXZvaWRfb3B0KTtcbiIKLSAgICAgICAgIiAgbWF0M192YXIgPSBtYXQzKDMuMCArIGF2b2lkX29w
dCk7XG4iCi0gICAgICAgICIgIG1hdDRfdmFyID0gbWF0NCg0LjAgKyBhdm9pZF9vcHQpO1xuIgot
ICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn0iOwotCi0g
ICAgY29uc3QgY2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWMyIHZlYzJfdmFyO1xuIgot
ICAgICAgICAidmFyeWluZyB2ZWMzIHZlYzNfdmFyO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0
IHZlYzRfdmFyO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCBmbG9hdF92YXI7XG4iCi0gICAg
ICAgICJ2YXJ5aW5nIG1hdDIgbWF0Ml92YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIG1hdDMgbWF0
M192YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIG1hdDQgbWF0NF92YXI7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodmVjMl92YXIs
IDAsIDApICsgdmVjNCh2ZWMzX3ZhciwgMCkgKyB2ZWM0X3ZhciArICIKLSAgICAgICAgIiAgICAg
ICAgICAgICAgIHZlYzQoZmxvYXRfdmFyKSArICIKLSAgICAgICAgIiAgICAgICAgICAgICAgIHZl
YzQobWF0Ml92YXJbMF1bMF0sIG1hdDNfdmFyWzFdWzFdLCBtYXQ0X3ZhclsyXVsyXSwgMSk7XG4i
Ci0gICAgICAgICJ9IjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGVudW0KLSAgICB7
Ci0gICAgICAgIGtWZWMyTG9jYXRpb24gPSAwLAotICAgICAgICBrVmVjM0xvY2F0aW9uLAotICAg
ICAgICBrVmVjNExvY2F0aW9uLAotICAgICAgICBrRmxvYXRMb2NhdGlvbiwKLSAgICAgICAga01h
dDJMb2NhdGlvbiwKLSAgICAgICAga01hdDNMb2NhdGlvbiwKLSAgICAgICAga01hdDRMb2NhdGlv
biwKLSAgICB9OwotICAgIHN0cnVjdAotICAgIHsKLSAgICAgICAgR0xpbnQgbG9jYXRpb247Ci0g
ICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgICAgIEdMaW50IGNvbXBvbmVudHM7Ci0gICAg
fSB2YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge2tWZWMyTG9jYXRpb24sICJ2ZWMyX3ZhciIsIDJ9
LAotICAgICAgICB7a1ZlYzNMb2NhdGlvbiwgInZlYzNfdmFyIiwgM30sCi0gICAgICAgIHtrVmVj
NExvY2F0aW9uLCAidmVjNF92YXIiLCA0fSwKLSAgICAgICAge2tGbG9hdExvY2F0aW9uLCAiZmxv
YXRfdmFyIiwgMX0sCi0gICAgICAgIC8vIElmIGEgdmFyeWluZyBpcyBub3Qgc2luZ2xlLXByZWNp
c2lvbiBmbG9hdGluZy1wb2ludCBzY2FsYXIgb3IKLSAgICAgICAgLy8gdmVjdG9yLCBpdCBhbHdh
eXMgY2F1c2VzIGFuIGludmFsaWQgb3BlcmF0aW9uLgotICAgICAgICB7a01hdDJMb2NhdGlvbiwg
Im1hdDJfdmFyIiwgLTF9LAotICAgICAgICB7a01hdDNMb2NhdGlvbiwgIm1hdDNfdmFyIiwgLTF9
LAotICAgICAgICB7a01hdDRMb2NhdGlvbiwgIm1hdDRfdmFyIiwgLTF9LAotICAgIH07Ci0KLSAg
ICBDb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemUodmFyaWFibGVzKTsg
KytpKQotICAgIHsKLSAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0o
bVByb2dyYW0sIHZhcmlhYmxlc1tpXS5sb2NhdGlvbiwgdmFyaWFibGVzW2ldLm5hbWUpOwotICAg
IH0KLQotICAgIC8vIHRlc3QgdGhhdCB1c2luZyBpbnZhbGlkIChub3QgbGlua2VkKSBwcm9ncmFt
IGlzIGFuIGludmFsaWQgb3BlcmF0aW9uLgotICAgIC8vIFNlZSBzaW1pbGFyIGNhbGxzIGF0IHRo
ZSBlbmQgb2YgdGhlIHRlc3QgZm9yIGRpc2N1c3Npb24gYWJvdXQgdGhlIGFyZ3VtZW50cy4KLSAg
ICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwgR0xf
Tk9ORSwgMCwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKLQotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBj
b25zdCBHTGZsb2F0IGtDb2VmZmljaWVudHMxNltdID0gezEuMGYsIDIuMGYsICAzLjBmLCAgNC4w
ZiwgIDUuMGYsICA2LjBmLCAgNy4wZiwgIDguMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5LjBmLCAxMC4wZiwgMTEuMGYsIDEyLjBmLCAxMy4wZiwgMTQuMGYsIDE1
LjBmLCAxNi4wZn07Ci0gICAgY29uc3QgR0xlbnVtIGtHZW5Nb2Rlc1tdICAgICAgICA9IHtHTF9O
T05FLCBHTF9FWUVfTElORUFSX0NIUk9NSVVNLCBHTF9PQkpFQ1RfTElORUFSX0NIUk9NSVVNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05TVEFOVF9DSFJPTUlVTX07Ci0K
LSAgICBmb3IgKHNpemVfdCB2YXJpYWJsZSA9IDA7IHZhcmlhYmxlIDwgQXJyYXlTaXplKHZhcmlh
Ymxlcyk7ICsrdmFyaWFibGUpCi0gICAgewotICAgICAgICBmb3IgKEdMaW50IGNvbXBvbmVudHMg
PSAwOyBjb21wb25lbnRzIDw9IDQ7ICsrY29tcG9uZW50cykKLSAgICAgICAgewotICAgICAgICAg
ICAgZm9yIChzaXplX3QgZ2VubW9kZSA9IDA7IGdlbm1vZGUgPCBBcnJheVNpemUoa0dlbk1vZGVz
KTsgKytnZW5tb2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIHZhcmlhYmxlc1t2YXJpYWJsZV0u
bG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrR2VuTW9kZXNbZ2VubW9kZV0sIGNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMgPT0gMCAmJiBrR2VuTW9kZXNbZ2VubW9k
ZV0gPT0gR0xfTk9ORSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICh2YXJpYWJsZXNbdmFyaWFibGVdLmNvbXBvbmVudHMgPT0gLTEpCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFyaW5nIGEgZnJhZ21lbnQgaW5w
dXQgdGhhdCBpcyBub3Qgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZwotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gcG9pbnQgc2NhbGFyIG9yIHZlY3RvciBpcyBhbiBpbnZhbGlkIG9wZXJhdGlv
bi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVh
cmluZyBhIHZhbGlkIGZyYWdtZW50IGlucHV0IGlzIG9rLgotICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50cyA9PSAwIHx8IGtH
ZW5Nb2Rlc1tnZW5tb2RlXSA9PSBHTF9OT05FKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoY29tcG9uZW50cyA9PSB2YXJpYWJsZXNbdmFyaWFibGVdLmNvbXBv
bmVudHMpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFNldHRpbmcgYSBnZW5lcmF0b3IgZm9yIGEgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2lu
dAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NhbGFyIG9yIHZlY3RvciBmcmFnbWVudCBp
bnB1dCBpcyBvay4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0dGluZyBhIGdl
bmVyYXRvciB3aGVuIGNvbXBvbmVudHMgZG8gbm90IG1hdGNoIGlzIGFuIGludmFsaWQgb3BlcmF0
aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGVudW0KLSAgICB7Ci0gICAgICAg
IGtWYWxpZEdlbk1vZGUgICAgICA9IEdMX0NPTlNUQU5UX0NIUk9NSVVNLAotICAgICAgICBrVmFs
aWRDb21wb25lbnRzICAgPSAzLAotICAgICAgICBrSW52YWxpZEdlbk1vZGUgICAgPSAweEFCLAot
ICAgICAgICBrSW52YWxpZENvbXBvbmVudHMgPSA1LAotICAgIH07Ci0KLSAgICAvLyBUaGUgbG9j
YXRpb24gPT0gLTEgd291bGQgbWVhbiBmcmFnbWVudCBpbnB1dCB3YXMgb3B0aW1pemVkIGF3YXku
IEF0IHRoZQotICAgIC8vIHRpbWUgb2Ygd3JpdGluZywgLTEgY2FuIG5vdCBoYXBwZW4gYmVjYXVz
ZSB0aGUgb25seSB3YXkgdG8gb2J0YWluIHRoZQotICAgIC8vIGxvY2F0aW9uIG51bWJlcnMgaXMg
dGhyb3VnaCBiaW5kLiBUZXN0IGp1c3QgdG8gYmUgY29uc2lzdGVudC4KLSAgICBnbFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga1ZhbGlkR2VuTW9kZSwg
a1ZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAv
LyBUZXN0IHRoYXQgZXZlbiB0aG91Z2ggdGhlIHNwZWMgc2F5cyBsb2NhdGlvbiA9PSAtMSBjYXVz
ZXMgdGhlIG9wZXJhdGlvbiB0bwotICAgIC8vIGJlIHNraXBwZWQsIHRoZSB2ZXJpZmljYXRpb24g
b2Ygb3RoZXIgcGFyYW1ldGVycyBpcyBzdGlsbCBkb25lLiBUaGlzIGlzIGEKLSAgICAvLyBHTCBw
b2xpY3kuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3Jh
bSwgLTEsIGtJbnZhbGlkR2VuTW9kZSwga1ZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJU
X0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga0ludmFsaWRHZW5Nb2RlLCBrSW52YWxpZENv
bXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29l
ZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0g
ICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtW
YWxpZEdlbk1vZGUsIGtJbnZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQot
ICAgIC8vIFRlc3QgdGhhdCB1c2luZyBpbnZhbGlkIChkZWxldGVkKSBwcm9ncmFtIGlzIGFuIGlu
dmFsaWQgb3BlcmF0aW9uLgotICAgIEVYUEVDVF9HTF9UUlVFKGdsSXNQcm9ncmFtKG1Qcm9ncmFt
KSk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFt
LCAtMSwga1ZhbGlkR2VuTW9kZSwga1ZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dM
X0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrSW52YWxpZEdlbk1vZGUsIGtWYWxpZENv
bXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29l
ZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAt
MSwga0ludmFsaWRHZW5Nb2RlLCBrSW52YWxpZENvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21l
bnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga1ZhbGlkR2VuTW9kZSwga0ludmFsaWRD
b21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0Nv
ZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotCi0gICAgbVByb2dyYW0gPSAwdTsKLX0KLQotLy8gVGVzdCB0aGF0IGhhdmluZyBpbnB1dCBz
dGF0aWNhbGx5IGFsaWFzZWQgZnJhZ21lbnQgaW5wdXRzIHRoZSBsaW5raW5nIGZhaWxzCi0vLyBh
bmQgdGhlbiBzdWNjZWVkcyB3aGVuIHRoZSBjb25mbGljdCBpcyByZXNvbHZlZC4KLVRFU1RfUChD
SFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVGVzdENvbmZsaWN0aW5nQmlu
ZCkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclNvdXJjZSA9
Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgInZhcnlpbmcg
dmVjNCBjb2xvckE7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JCO1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xu
IgotICAgICAgICAiICBjb2xvckEgPSBwb3NpdGlvbiArIHZlYzQoMSk7XG4iCi0gICAgICAgICIg
IGNvbG9yQiA9IHBvc2l0aW9uICsgdmVjNCgyKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29u
c3QgY2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQTtcbiIKLSAgICAgICAg
InZhcnlpbmcgdmVjNCBjb2xvckI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIGdsX0ZyYWdDb2xvciA9IGNvbG9yQSArIGNvbG9yQjtcbiIKLSAgICAgICAgIn0iOwot
ICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgY29uc3QgR0xpbnQga0NvbG9yQUxvY2F0aW9u
ID0gMzsKLSAgICBjb25zdCBHTGludCBrQ29sb3JCTG9jYXRpb24gPSA0OwotCi0gICAgQ29tcGls
ZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLQot
ICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JB
TG9jYXRpb24sICJjb2xvckEiKTsKLSAgICAvLyBCaW5kIGNvbG9yQiB0byBsb2NhdGlvbiBhLCBj
YXVzaW5nIGNvbmZsaWN0cy4gTGlua2luZyBzaG91bGQgZmFpbC4KLSAgICBnbEJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQUxvY2F0aW9uLCAiY29sb3JC
Iik7Ci0KLSAgICAvLyBTaG91bGQgZmFpbCBub3cuCi0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dy
YW0oKSA9PSBmYWxzZSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBSZXNv
bHZlIHRoZSBiaW5kIGNvbmZsaWN0LgotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNI
Uk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JCTG9jYXRpb24sICJjb2xvckIiKTsKLQotICAgIEFTU0VS
VF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci19Ci0KLS8vIFRlc3QgYmluZGluZyB3aXRoIGFycmF5IHZhcmlhYmxlcywgdXNpbmcgemVybyBp
bmRpY2VzLiBUZXN0cyB0aGF0Ci0vLyBiaW5kaW5nIGNvbG9yQVswXSB3aXRoIGV4cGxpY2l0ICJj
b2xvckFbMF0iIGFzIHdlbGwgYXMgImNvbG9yQSIgcHJvZHVjZXMKLS8vIGEgY29ycmVjdCBsb2Nh
dGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggUGF0aFByb2dyYW1GcmFnbWVudElucHV0R2VuLgot
Ly8gRm9yIHBhdGggcmVuZGVyaW5nLCBjb2xvckFbMF0gaXMgYm91bmQgdG8gYSBsb2NhdGlvbi4g
VGhlIGlucHV0IGdlbmVyYXRvciBmb3IKLS8vIHRoZSBsb2NhdGlvbiBpcyBzZXQgdG8gcHJvZHVj
ZSB2ZWM0KDAsIDAuMSwgMCwgMC4xKS4KLS8vIFRoZSBkZWZhdWx0IHZhcnlpbmcsIGNvbG9yLCBp
cyBib3VuZCB0byBhIGxvY2F0aW9uIGFuZCBpdHMgZ2VuZXJhdG9yCi0vLyB3aWxsIHByb2R1Y2Ug
dmVjNCgxMC4wKS4gIFRoZSBzaGFkZXIgcHJvZ3JhbSBwcm9kdWNlcyBncmVlbiBwaXhlbHMuCi0v
LyBGb3IgdmVydGV4LWJhc2VkIHJlbmRlcmluZywgdGhlIHZlcnRleCBzaGFkZXIgcHJvZHVjZXMg
dGhlIHNhbWUgZWZmZWN0IGFzCi0vLyB0aGUgaW5wdXQgZ2VuZXJhdG9yIGZvciBwYXRoIHJlbmRl
cmluZy4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgQmlu
ZEZyYWdtZW50SW5wdXRBcnJheSkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvL2NsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFyICprVmVy
dGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIK
LSAgICAgICAgInVuaWZvcm0gbWF0NCBjb2xvcl9tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3Jt
IHZlYzIgbW9kZWxfdHJhbnNsYXRlO1xuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRp
b247XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ2YXJ5aW5n
IHZlYzQgY29sb3JBWzRdO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICB2ZWM0IHAgPSB2ZWM0KG1vZGVsX3RyYW5zbGF0ZSArIHBvc2l0aW9uLCAxLCAxKTtcbiIKLSAg
ICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2aWV3X21hdHJpeCAqIHA7XG4iCi0gICAgICAgICIgIGNv
bG9yQVswXSA9IHZlYzQoMC4wLCAwLjEsIDAsIDAuMSk7XG4iCi0gICAgICAgICIgIGNvbG9yQVsx
XSA9IHZlYzQoMC4yKTtcbiIKLSAgICAgICAgIiAgY29sb3JBWzJdID0gdmVjNCgwLjMpO1xuIgot
ICAgICAgICAiICBjb2xvckFbM10gPSB2ZWM0KDAuNCk7XG4iCi0gICAgICAgICIgIGNvbG9yID0g
dmVjNCgxMC4wKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3QgY2hhciAqa0ZyYWdtZW50
U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9y
QVs0XTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0Nv
bG9yID0gY29sb3JBWzBdICogY29sb3I7XG4iCi0gICAgICAgICJ9IjsKLSAgICAvLyBjbGFuZy1m
b3JtYXQgb24KLQotICAgIGNvbnN0IEdMaW50IGtDb2xvckEwTG9jYXRpb24gPSA0OwotICAgIGNv
bnN0IEdMaW50IGtVbnVzZWRMb2NhdGlvbiAgPSA1OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9y
QTBbXSAgICAgPSB7MC4wZiwgMC4xZiwgMC4wZiwgMC4xZn07Ci0gICAgY29uc3QgR0xmbG9hdCBr
Q29sb3JbXSAgICAgICA9IHsxMC4wZiwgMTAuMGYsIDEwLjBmLCAxMC4wZn07Ci0gICAgY29uc3Qg
R0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAuMGYsIDUwLjBmLCAyOC4wZiwgNjYu
MGYsIDYzLjBmfTsKLQotICAgIGZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMjsgKytwYXNzKQot
ICAgIHsKLSAgICAgICAgQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdt
ZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgaWYgKHBhc3MgPT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtV
bnVzZWRMb2NhdGlvbiwgImNvbG9yQVswXSIpOwotICAgICAgICAgICAgZ2xCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sICJjb2xvckEi
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQmlu
ZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrVW51c2VkTG9jYXRpb24s
ICJjb2xvckEiKTsKLSAgICAgICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9N
SVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExvY2F0aW9uLCAiY29sb3JBWzBdIik7Ci0gICAgICAgIH0K
LQotICAgICAgICBiaW5kUHJvZ3JhbSgpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9n
cmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICAgICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtWaWV3TWF0cml4
TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVjdGlvbk1hdHJpeCk7Ci0gICAgICAgIGdsUHJv
Z3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRp
b24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDb2xvckEwKTsKLSAgICAgICAgZ2xQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJbnB1dExvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlNU
QU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgICAgICBkcmF3VGVzdFBhdHRlcm4oKTsKLQotICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IGtUZXN0Um93czsgKytqKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGtUZXN0Q29sdW1uczsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29vcmRzKTsgayArPSAyKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnggPSBr
RmlsbENvb3Jkc1trXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBrRmls
bENvb3Jkc1trICsgMV07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHB4ID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IHB5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpHTENvbG9yIGNvbG9yOwotICAgICAgICAgICAgICAg
ICAgICBjb2xvci5SID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29sb3IuRyA9IDI1NTsKLSAg
ICAgICAgICAgICAgICAgICAgY29sb3IuQiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9y
LkEgPSAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIENoZWNrUGl4ZWxzKHN0YXRpY19jYXN0PEdM
aW50PihweCArIGZ4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHB5ICsgZnkpLCAxLCAxLCAyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcik7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBUZXN0IGJpbmRpbmcgYXJy
YXkgdmFyaWFibGVzLiBUaGlzIGlzIGxpa2UgQmluZEZyYWdtZW50SW5wdXRBcnJheS4KLS8vIEN1
cnJlbnRseSBkaXNhYmxlZCBzaW5jZSBpdCBzZWVtcyB0aGVyZSdzIGEgZHJpdmVyIGJ1ZyB3aXRo
IHRoZQotLy8gb2xkZXIgZHJpdmVycy4gVGhpcyBzaG91bGQgd29yayB3aXRoIGRyaXZlciA+PSAz
NjQuMTIKLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgRElT
QUJMRURfQmluZEZyYWdtZW50SW5wdXRBcnJheU5vblplcm9JbmRleCkKLXsKLSAgICBpZiAoIWlz
QXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
Ci0gICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ1bmlmb3Jt
IG1hdDQgdmlld19tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4
O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTtcbiIKLSAgICAgICAg
ImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9y
O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQVs0XTtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgdmVjNCBwID0gdmVjNChtb2RlbF90cmFuc2xhdGUgKyBw
b3NpdGlvbiwgMSwgMSk7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXgg
KiBwO1xuIgotICAgICAgICAiICBjb2xvckFbMF0gPSB2ZWM0KDAsIDAuMSwgMCwgMC4xKTtcbiIK
LSAgICAgICAgIiAgY29sb3JBWzFdID0gdmVjNCgwLCAxLCAwLCAxKTtcbiIKLSAgICAgICAgIiAg
Y29sb3JBWzJdID0gdmVjNCgwLCAwLjgsIDAsIDAuOCk7XG4iCi0gICAgICAgICIgIGNvbG9yQVsz
XSA9IHZlYzQoMCwgMC41LCAwLCAwLjUpO1xuIgotICAgICAgICAiICBjb2xvciA9IHZlYzQoMC4y
KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJT
b3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2
YXJ5aW5nIHZlYzQgY29sb3JBWzRdO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSAo
Y29sb3JBWzBdICogY29sb3JBWzFdKSArXG4iCi0gICAgICAgICIgICAgICBjb2xvckFbMl0gKyAo
Y29sb3JBWzNdICogY29sb3IpO1xuIgotICAgICAgICAifVxuIjsKLSAgICAvLyBjbGFuZy1mb3Jt
YXQgb24KLQotICAgIGNvbnN0IEdMaW50IGtDb2xvckEwTG9jYXRpb24gPSA0OwotICAgIGNvbnN0
IEdMaW50IGtDb2xvckExTG9jYXRpb24gPSAxOwotICAgIGNvbnN0IEdMaW50IGtDb2xvckEyTG9j
YXRpb24gPSAyOwotICAgIGNvbnN0IEdMaW50IGtDb2xvckEzTG9jYXRpb24gPSAzOwotICAgIGNv
bnN0IEdMaW50IGtVbnVzZWRMb2NhdGlvbiAgPSA1OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9y
QTBbXSAgICAgPSB7MC4wZiwgMC4xZiwgMC4wZiwgMC4xZn07Ci0gICAgY29uc3QgR0xmbG9hdCBr
Q29sb3JBMVtdICAgICA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLSAgICBjb25zdCBHTGZs
b2F0IGtDb2xvckEyW10gICAgID0gezAuMGYsIDAuOGYsIDAuMGYsIDAuOGZ9OwotICAgIGNvbnN0
IEdMZmxvYXQga0NvbG9yQTNbXSAgICAgPSB7MC4wZiwgMC41ZiwgMC4wZiwgMC41Zn07Ci0gICAg
Y29uc3QgR0xmbG9hdCBrQ29sb3JbXSAgICAgICA9IHswLjJmLCAwLjJmLCAwLjJmLCAwLjJmfTsK
LSAgICBjb25zdCBHTGZsb2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYs
IDI4LjBmLCA2Ni4wZiwgNjMuMGZ9OwotCi0gICAgQ29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRl
clNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrVW51c2VkTG9jYXRpb24sICJjb2xvckFbMF0i
KTsKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0Nv
bG9yQTFMb2NhdGlvbiwgImNvbG9yQVsxXSIpOwotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2Nh
dGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMkxvY2F0aW9uLCAiY29sb3JBWzJdIik7Ci0g
ICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEz
TG9jYXRpb24sICJjb2xvckFbM10iKTsKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25D
SFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgImNvbG9yQSIpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgYmluZFByb2dyYW0oKTsKLSAgICBBU1NFUlRfVFJVRShs
aW5rUHJvZ3JhbSgpID09IHRydWUpOwotCi0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtWaWV3TWF0
cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVjdGlvbk1hdHJpeCk7Ci0KLSAgICBnbFBy
b2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExvY2F0
aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDb2xvckEwKTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMUxvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJP
TUlVTSwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2xv
ckExKTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFt
LCBrQ29sb3JBMkxvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2xvckEyKTsKLSAgICBnbFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBM0xvY2F0aW9uLCBH
TF9DT05TVEFOVF9DSFJPTUlVTSwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtDb2xvckEzKTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNI
Uk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwg
a0NvbG9yKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdUZXN0UGF0dGVy
bigpOwotCi0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICB7Ci0g
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29vcmRz
KTsgayArPSAyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZ4
ID0ga0ZpbGxDb29yZHNba107Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBrRmls
bENvb3Jkc1trICsgMV07Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oaSAqIGtTaGFwZVdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9h
dCBweSA9IHN0YXRpY19jYXN0PGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KTsKLQotICAgICAgICAg
ICAgICAgIGFuZ2xlOjpHTENvbG9yIGNvbG9yOwotICAgICAgICAgICAgICAgIGNvbG9yLlIgPSAw
OwotICAgICAgICAgICAgICAgIGNvbG9yLkcgPSAyNTU7Ci0gICAgICAgICAgICAgICAgY29sb3Iu
QiA9IDA7Ci0gICAgICAgICAgICAgICAgY29sb3IuQSA9IDI1NTsKLSAgICAgICAgICAgICAgICBD
aGVja1BpeGVscyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50
PihweSArIGZ5KSwgMSwgMSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVRFU1RfUChDSFJPTUlVTVBh
dGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVW51c2VkRnJhZ21lbnRJbnB1dFVwZGF0ZSkK
LXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4iCi0gICAgICAg
ICJ9IjsKLQotICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclN0cmluZyA9Ci0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1X2Nv
bG9yQTtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdV9jb2xvclU7XG4iCi0gICAgICAgICJ1
bmlmb3JtIHZlYzQgdV9jb2xvckM7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3JBICsgdV9jb2xvckM7XG4iCi0gICAgICAgICJ9
IjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNvbnN0IEdMaW50IGtDb2xvclVMb2Nh
dGlvbiAgICAgID0gMTsKLSAgICBjb25zdCBHTGludCBrTm9uZXhpc3RpbmdMb2NhdGlvbiA9IDU7
Ci0gICAgY29uc3QgR0xpbnQga1VuYm91bmRMb2NhdGlvbiAgICAgPSA2OwotCi0gICAgQ29tcGls
ZVByb2dyYW0oa1ZlcnRleFNoYWRlclN0cmluZywga0ZyYWdtZW50U2hhZGVyU3RyaW5nKTsKLQot
ICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JV
TG9jYXRpb24sICJ1X2NvbG9yVSIpOwotCi0gICAgLy8gVGhlIG5vbi1leGlzdGluZyBpbnB1dCBz
aG91bGQgYmVoYXZlIGxpa2UgZXhpc3RpbmcgYnV0IG9wdGltaXplZCBhd2F5IGlucHV0LgotICAg
IGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrTm9uZXhpc3Rp
bmdMb2NhdGlvbiwgIm5vbmV4aXN0aW5nIik7Ci0KLSAgICAvLyBMZXQgQSBhbmQgQyBiZSBhc3Np
Z25lZCBhdXRvbWF0aWMgbG9jYXRpb25zLgotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkg
PT0gdHJ1ZSk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtDb2xvclsxNl0gPSB7fTsKLQotICAgIC8v
IE5vIGVycm9ycyBvbiBib3VuZCBsb2NhdGlvbnMsIHNpbmNlIGNhbGxlciBkb2VzIG5vdCBrbm93
Ci0gICAgLy8gaWYgdGhlIGRyaXZlciBvcHRpbWl6ZXMgdGhlbSBhd2F5IG9yIG5vdC4KLSAgICBn
bFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JVTG9j
YXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga0NvbG9yKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIE5vIGVycm9ycyBvbiBib3VuZCBsb2NhdGlvbnMgb2YgbmFtZXMgdGhhdCBkbyBub3Qg
ZXhpc3QKLSAgICAvLyBpbiB0aGUgc2hhZGVyLiBPdGhlcndpc2UgaXQgd291bGQgYmUgaW5jb25z
aXN0ZW50IHdydCB0aGUKLSAgICAvLyBvcHRpbWl6YXRpb24gY2FzZS4KLSAgICBnbFByb2dyYW1Q
YXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrTm9uZXhpc3RpbmdMb2NhdGlv
biwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Ly8gVGhlIGFib3ZlIGFyZSBlcXVhbCB0byB1cGRhdGluZyAtMS4KLSAgICBnbFByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwgR0xfQ09OU1RBTlRfQ0hST01J
VU0sIDEsIGtDb2xvcik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBObyBl
cnJvcnMgd2hlbiB1cGRhdGluZyB3aXRoIG90aGVyIHR5cGUgZWl0aGVyLgotICAgIC8vIFRoZSB0
eXBlIGNhbiBub3QgYmUga25vd24gd2l0aCB0aGUgbm9uLWV4aXN0aW5nIGNhc2UuCi0gICAgZ2xQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yVUxvY2F0
aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDb2xvcik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrTm9uZXhp
c3RpbmdMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3Jh
bSwgLTEsIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgLy8gVXBkYXRpbmcgYW4gdW5ib3VuZCwgbm9uLWV4aXN0aW5nIGxv
Y2F0aW9uIHN0aWxsIGNhdXNlcyBhbiBlcnJvci4KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrVW5ib3VuZExvY2F0aW9uLCBHTF9DT05TVEFOVF9D
SFJPTUlVTSwgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtD
b2xvcik7Ci0gICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
fSAgLy8gbmFtZXNwYWNlCi0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMyX0FORF9FUzMoQ0hS
T01JVU1QYXRoUmVuZGVyaW5nVGVzdCk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMl9BTkRf
RVMzKENIUk9NSVVNUGF0aFJlbmRlcmluZ0RyYXdUZXN0KTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RF
U1RfRVMyX0FORF9FUzMoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1By
b2dyYW1CaW5hcnlUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAKaW5kZXggMWY4N2NlZTM4YzM1NTk4MjkzMDMy
MmEzZDMyNDVmNDIzMWMyYTBmOC4uNmNjMWVmZGU3MmRkMjYwMTcwNzcwN2FkMDk0MmIyMzQzM2Mx
ODgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1Byb2dyYW1CaW5hcnlUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwCkBAIC0yOTMsNyArMjkzLDcg
QEAgdm9pZCBQcm9ncmFtQmluYXJ5RVMzVGVzdDo6dGVzdEJpbmFyeUFuZFVCT0Jsb2NrSW5kZXhl
cyhib29sIGRyYXdXaXRoUHJvZ3JhbUZpcnMKICAgICAvLyBXZSBjYW4ndCBydW4gdGhlIHRlc3Qg
aWYgbm8gcHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgogICAgIEdMaW50IGJp
bmFyeUZvcm1hdENvdW50ID0gMDsKICAgICBnbEdldEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJ
TkFSWV9GT1JNQVRTLCAmYmluYXJ5Rm9ybWF0Q291bnQpOwotICAgIEFOR0xFX1NLSVBfVEVTVF9J
RighYmluYXJ5Rm9ybWF0Q291bnQpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRihiaW5hcnlGb3Jt
YXRDb3VudCA9PSAwKTsKIAogICAgIGNvbnN0ZXhwciBjaGFyIGtWU1tdID0KICAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgpAQCAtMzgxLDEzICszODEsMTQ3IEBAIFRFU1RfUChQcm9ncmFtQmlu
YXJ5RVMzVGVzdCwgVW5pZm9ybUJsb2NrQmluZGluZ05vRHJhdykKICAgICB0ZXN0QmluYXJ5QW5k
VUJPQmxvY2tJbmRleGVzKGZhbHNlKTsKIH0KIAorLy8gVGVzdCB0aGUgc2hhZGVycyB3aXRoIGFy
cmF5cy1vZi1zdHJ1Y3QgdW5pZm9ybXMgYXJlIHByb3Blcmx5IHNhdmVkIGFuZCByZXN0b3JlZAor
VEVTVF9QKFByb2dyYW1CaW5hcnlFUzNUZXN0LCBUZXN0QXJyYXlPZlN0cnVjdFVuaWZvcm0pCit7
CisgICAgLy8gV2UgY2FuJ3QgcnVuIHRoZSB0ZXN0IGlmIG5vIHByb2dyYW0gYmluYXJ5IGZvcm1h
dHMgYXJlIHN1cHBvcnRlZC4KKyAgICBHTGludCBiaW5hcnlGb3JtYXRDb3VudCA9IDA7CisgICAg
Z2xHZXRJbnRlZ2VydihHTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUywgJmJpbmFyeUZvcm1h
dENvdW50KTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoYmluYXJ5Rm9ybWF0Q291bnQgPT0gMCk7
CisKKyAgICBjb25zdGV4cHIgY2hhciBrVlNbXSA9CisgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKKyAgICAgICAgImluIGhpZ2hwIHZlYzQgcG9zaXRpb247XG4iCisgICAgICAgICJvdXQgbWVk
aXVtcCBmbG9hdCB2X3Z0eE91dDtcbiIKKyAgICAgICAgIlxuIgorICAgICAgICAic3RydWN0IHN0
cnVjdFR5cGVcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBtZWRpdW1wIHZlYzQgbTA7
XG4iCisgICAgICAgICIgICAgbWVkaXVtcCB2ZWM0IG0xO1xuIgorICAgICAgICAifTtcbiIKKyAg
ICAgICAgInVuaWZvcm0gc3RydWN0VHlwZSB1X3ZhclszXTtcbiIKKyAgICAgICAgIlxuIgorICAg
ICAgICAibWVkaXVtcCBmbG9hdCBjb21wYXJlX2Zsb2F0KG1lZGl1bXAgZmxvYXQgYSwgbWVkaXVt
cCBmbG9hdCBiKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHJldHVybiBhYnMoYSAt
IGIpIDwgMC4wNSA/IDEuMCA6IDAuMDtcbiIKKyAgICAgICAgIn1cbiIKKyAgICAgICAgIm1lZGl1
bXAgZmxvYXQgY29tcGFyZV92ZWM0KG1lZGl1bXAgdmVjNCBhLCBtZWRpdW1wIHZlYzQgYilcbiIK
KyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICByZXR1cm4gY29tcGFyZV9mbG9hdChhLngsIGIu
eCkqY29tcGFyZV9mbG9hdChhLnksIGIueSkqXG4iCisgICAgICAgICIgICAgICAgICAgIGNvbXBh
cmVfZmxvYXQoYS56LCBiLnopKmNvbXBhcmVfZmxvYXQoYS53LCBiLncpO1xuIgorICAgICAgICAi
fVxuIgorICAgICAgICAiXG4iCisgICAgICAgICJ2b2lkIG1haW4gKHZvaWQpXG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKKyAgICAgICAg
IiAgICB2X3Z0eE91dCA9IDEuMDtcbiIKKyAgICAgICAgIiAgICB2X3Z0eE91dCAqPSBjb21wYXJl
X3ZlYzQodV92YXJbMF0ubTAsIHZlYzQoMC4xNSwgMC41MiwgMC4yNiwgMC4zNSkpO1xuIgorICAg
ICAgICAiICAgIHZfdnR4T3V0ICo9IGNvbXBhcmVfdmVjNCh1X3ZhclswXS5tMSwgdmVjNCgwLjg4
LCAwLjA5LCAwLjMwLCAwLjYxKSk7XG4iCisgICAgICAgICIgICAgdl92dHhPdXQgKj0gY29tcGFy
ZV92ZWM0KHVfdmFyWzFdLm0wLCB2ZWM0KDAuODUsIDAuNTksIDAuMzMsIDAuNzEpKTtcbiIKKyAg
ICAgICAgIiAgICB2X3Z0eE91dCAqPSBjb21wYXJlX3ZlYzQodV92YXJbMV0ubTEsIHZlYzQoMC42
MiwgMC44OSwgMC4wOSwgMC45OSkpO1xuIgorICAgICAgICAiICAgIHZfdnR4T3V0ICo9IGNvbXBh
cmVfdmVjNCh1X3ZhclsyXS5tMCwgdmVjNCgwLjUzLCAwLjg5LCAwLjAxLCAwLjA4KSk7XG4iCisg
ICAgICAgICIgICAgdl92dHhPdXQgKj0gY29tcGFyZV92ZWM0KHVfdmFyWzJdLm0xLCB2ZWM0KDAu
MjYsIDAuNzIsIDAuNjAsIDAuMTIpKTtcbiIKKyAgICAgICAgIn0iOworCisgICAgY29uc3RleHBy
IGNoYXIga0ZTW10gPQorICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCisgICAgICAgICJpbiBt
ZWRpdW1wIGZsb2F0IHZfdnR4T3V0O1xuIgorICAgICAgICAiXG4iCisgICAgICAgICJsYXlvdXQo
bG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGRFUVBfRnJhZ0NvbG9yO1xuIgorICAgICAg
ICAiXG4iCisgICAgICAgICJ2b2lkIG1haW4gKHZvaWQpXG4iCisgICAgICAgICJ7XG4iCisgICAg
ICAgICIgICAgbWVkaXVtcCBmbG9hdCByZXN1bHQgPSB2X3Z0eE91dDtcbiIKKyAgICAgICAgIiAg
ICBkRVFQX0ZyYWdDb2xvciA9IHZlYzQocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgMS4wKTtcbiIK
KyAgICAgICAgIn0iOworCisgICAgLy8gSW5pdCBhbmQgZHJhdyB3aXRoIHRoZSBwcm9ncmFtLgor
ICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwga1ZTLCBrRlMpOworCisgICAgZ2xVc2VQcm9n
cmFtKHByb2dyYW0uZ2V0KCkpOworCisgICAgaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbS5nZXQoKSwgInVfdmFyWzBdLm0wIik7CisgICAgQVNTRVJUX05FKGxvY2F0
aW9uLCAtMSk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIDAuMTUsIDAuNTIsIDAuMjYsIDAu
MzUpOworICAgIGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXQoKSwg
InVfdmFyWzBdLm0xIik7CisgICAgQVNTRVJUX05FKGxvY2F0aW9uLCAtMSk7CisgICAgZ2xVbmlm
b3JtNGYobG9jYXRpb24sIDAuODgsIDAuMDksIDAuMzAsIDAuNjEpOworICAgIGxvY2F0aW9uID0g
Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXQoKSwgInVfdmFyWzFdLm0wIik7CisgICAg
QVNTRVJUX05FKGxvY2F0aW9uLCAtMSk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIDAuODUs
IDAuNTksIDAuMzMsIDAuNzEpOworICAgIGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24o
cHJvZ3JhbS5nZXQoKSwgInVfdmFyWzFdLm0xIik7CisgICAgQVNTRVJUX05FKGxvY2F0aW9uLCAt
MSk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIDAuNjIsIDAuODksIDAuMDksIDAuOTkpOwor
ICAgIGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXQoKSwgInVfdmFy
WzJdLm0wIik7CisgICAgQVNTRVJUX05FKGxvY2F0aW9uLCAtMSk7CisgICAgZ2xVbmlmb3JtNGYo
bG9jYXRpb24sIDAuNTMsIDAuODksIDAuMDEsIDAuMDgpOworICAgIGxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXQoKSwgInVfdmFyWzJdLm0xIik7CisgICAgQVNTRVJU
X05FKGxvY2F0aW9uLCAtMSk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIDAuMjYsIDAuNzIs
IDAuNjAsIDAuMTIpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgLy8gQ2xlYXIg
YW5kIGRyYXcgd2l0aCB0aGUgb3JpZ2luYWwgcHJvZ3JhbToKKyAgICBnbENsZWFyQ29sb3IoMS4w
LCAwLjAsIDAuMCwgMS4wKTsKKyAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOworICAgIGRyYXdRdWFk
KHByb2dyYW0uZ2V0KCksICJwb3NpdGlvbiIsIDAuNWYpOworICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOworICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjp3aGl0ZSk7CisK
KyAgICAvLyBSZWFkIGJhY2sgdGhlIGJpbmFyeS4KKyAgICBHTGludCBwcm9ncmFtTGVuZ3RoID0g
MDsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLmdldCgpLCBHTF9QUk9HUkFNX0JJTkFSWV9M
RU5HVEhfT0VTLCAmcHJvZ3JhbUxlbmd0aCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisK
KyAgICBHTHNpemVpIHJlYWRMZW5ndGggID0gMDsKKyAgICBHTGVudW0gYmluYXJ5Rm9ybWF0ID0g
R0xfTk9ORTsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiaW5hcnkocHJvZ3JhbUxlbmd0aCk7
CisgICAgZ2xHZXRQcm9ncmFtQmluYXJ5KHByb2dyYW0uZ2V0KCksIHByb2dyYW1MZW5ndGgsICZy
ZWFkTGVuZ3RoLCAmYmluYXJ5Rm9ybWF0LCBiaW5hcnkuZGF0YSgpKTsKKyAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKKworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHNpemVpPihwcm9ncmFt
TGVuZ3RoKSwgcmVhZExlbmd0aCk7CisKKyAgICAvLyBMb2FkIGEgbmV3IHByb2dyYW0gd2l0aCB0
aGUgYmluYXJ5IGFuZCBkcmF3LgorICAgIEFOR0xFX0dMX0JJTkFSWV9FUzNfUFJPR1JBTShiaW5h
cnlQcm9ncmFtLCBiaW5hcnksIGJpbmFyeUZvcm1hdCk7CisKKyAgICBnbFVzZVByb2dyYW0oYmlu
YXJ5UHJvZ3JhbS5nZXQoKSk7CisKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9u
KGJpbmFyeVByb2dyYW0uZ2V0KCksICJ1X3ZhclswXS5tMCIpOworICAgIEFTU0VSVF9ORShsb2Nh
dGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjE1LCAwLjUyLCAwLjI2LCAw
LjM1KTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKGJpbmFyeVByb2dyYW0u
Z2V0KCksICJ1X3ZhclswXS5tMSIpOworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAg
IGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjg4LCAwLjA5LCAwLjMwLCAwLjYxKTsKKyAgICBsb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKGJpbmFyeVByb2dyYW0uZ2V0KCksICJ1X3Zhclsx
XS5tMCIpOworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxv
Y2F0aW9uLCAwLjg1LCAwLjU5LCAwLjMzLCAwLjcxKTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKGJpbmFyeVByb2dyYW0uZ2V0KCksICJ1X3ZhclsxXS5tMSIpOworICAgIEFT
U0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjYyLCAw
Ljg5LCAwLjA5LCAwLjk5KTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKGJp
bmFyeVByb2dyYW0uZ2V0KCksICJ1X3ZhclsyXS5tMCIpOworICAgIEFTU0VSVF9ORShsb2NhdGlv
biwgLTEpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCAwLjUzLCAwLjg5LCAwLjAxLCAwLjA4
KTsKKyAgICBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKGJpbmFyeVByb2dyYW0uZ2V0
KCksICJ1X3ZhclsyXS5tMSIpOworICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOworICAgIGds
VW5pZm9ybTRmKGxvY2F0aW9uLCAwLjI2LCAwLjcyLCAwLjYwLCAwLjEyKTsKKyAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKKworICAgIC8vIENsZWFyIGFuZCBkcmF3IHdpdGggdGhlIHJlc3RvcmVk
IHByb2dyYW06CisgICAgZ2xDbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgR0xDb2xvcjo6cmVkKTsKKyAgICBkcmF3UXVhZChiaW5hcnlQcm9ncmFtLmdldCgpLCAicG9z
aXRpb24iLCAwLjVmKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6d2hpdGUpOworfQorCiAvLyBUZXN0cyB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIHVuaWZvcm0gc3RhdGljIGFuZCBhY3RpdmUgdXNlCiBURVNUX1AoUHJv
Z3JhbUJpbmFyeUVTM1Rlc3QsIEFjdGl2ZVVuaWZvcm1TaGFkZXIpCiB7CiAgICAgLy8gV2UgY2Fu
J3QgcnVuIHRoZSB0ZXN0IGlmIG5vIHByb2dyYW0gYmluYXJ5IGZvcm1hdHMgYXJlIHN1cHBvcnRl
ZC4KICAgICBHTGludCBiaW5hcnlGb3JtYXRDb3VudCA9IDA7CiAgICAgZ2xHZXRJbnRlZ2VydihH
TF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFUUywgJmJpbmFyeUZvcm1hdENvdW50KTsKLSAgICBB
TkdMRV9TS0lQX1RFU1RfSUYoIWJpbmFyeUZvcm1hdENvdW50KTsKKyAgICBBTkdMRV9TS0lQX1RF
U1RfSUYoYmluYXJ5Rm9ybWF0Q291bnQgPT0gMCk7CiAKICAgICBjb25zdGV4cHIgY2hhciBrVlNb
XSA9CiAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKQEAgLTQ3MCw3ICs2MDQsNyBAQCBURVNU
X1AoUHJvZ3JhbUJpbmFyeUVTM1Rlc3QsIEJpbmFyeVdpdGhMYXJnZVVuaWZvcm1Db3VudCkKICAg
ICAvLyBXZSBjYW4ndCBydW4gdGhlIHRlc3QgaWYgbm8gcHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBh
cmUgc3VwcG9ydGVkLgogICAgIEdMaW50IGJpbmFyeUZvcm1hdENvdW50ID0gMDsKICAgICBnbEdl
dEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTLCAmYmluYXJ5Rm9ybWF0Q291
bnQpOwotICAgIEFOR0xFX1NLSVBfVEVTVF9JRighYmluYXJ5Rm9ybWF0Q291bnQpOworICAgIEFO
R0xFX1NLSVBfVEVTVF9JRihiaW5hcnlGb3JtYXRDb3VudCA9PSAwKTsKIAogICAgIGNvbnN0ZXhw
ciBjaGFyIGtWU1tdID0KICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgpAQCAtNjM4LDcgKzc3
Miw3IEBAIFRFU1RfUChQcm9ncmFtQmluYXJ5RVMzMVRlc3QsIFByb2dyYW1CaW5hcnlXaXRoQ29t
cHV0ZVNoYWRlcikKICAgICAvLyBXZSBjYW4ndCBydW4gdGhlIHRlc3QgaWYgbm8gcHJvZ3JhbSBi
aW5hcnkgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgogICAgIEdMaW50IGJpbmFyeUZvcm1hdENvdW50
ID0gMDsKICAgICBnbEdldEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTLCAm
YmluYXJ5Rm9ybWF0Q291bnQpOwotICAgIEFOR0xFX1NLSVBfVEVTVF9JRighYmluYXJ5Rm9ybWF0
Q291bnQpOworICAgIEFOR0xFX1NLSVBfVEVTVF9JRihiaW5hcnlGb3JtYXRDb3VudCA9PSAwKTsK
ICAgICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQwOTIKICAgICBBTkdMRV9TS0lQX1RFU1RfSUYo
SXNWdWxrYW4oKSk7CiAKQEAgLTc1MCw3ICs4ODQsNyBAQCBURVNUX1AoUHJvZ3JhbUJpbmFyeUVT
MzFUZXN0LCBJbWFnZVRleHR1cmVCaW5kaW5nKQogICAgIC8vIFdlIGNhbid0IHJ1biB0aGUgdGVz
dCBpZiBubyBwcm9ncmFtIGJpbmFyeSBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCiAgICAgR0xpbnQg
YmluYXJ5Rm9ybWF0Q291bnQgPSAwOwogICAgIGdsR2V0SW50ZWdlcnYoR0xfTlVNX1BST0dSQU1f
QklOQVJZX0ZPUk1BVFMsICZiaW5hcnlGb3JtYXRDb3VudCk7Ci0gICAgQU5HTEVfU0tJUF9URVNU
X0lGKCFiaW5hcnlGb3JtYXRDb3VudCk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGJpbmFyeUZv
cm1hdENvdW50ID09IDApOwogCiAgICAgY29uc3QgY2hhciBrQ29tcHV0ZVNoYWRlcltdID0KICAg
ICAgICAgUiIoI3ZlcnNpb24gMzEwIGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUludGVyZmFjZVRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb2dyYW1JbnRlcmZhY2VUZXN0
LmNwcAppbmRleCA4ZTE5Yzc0YzI5OWRjOTExMzFlNzk2NWI5MTJhZDc0ZTJkYTZmMmRkLi5kYjRk
YWZjY2MwODc2NDIxYjdmNDRkZWY5NTAyODdjNTM4MzFjNThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUludGVyZmFjZVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm9n
cmFtSW50ZXJmYWNlVGVzdC5jcHAKQEAgLTU5OSw2ICs1OTksMTIgQEAgVEVTVF9QKFByb2dyYW1J
bnRlcmZhY2VUZXN0RVMzMSwgR2V0QnVmZmVyVmFyaWFibGVQcm9wZXJ0aWVzKQogICAgIC8vIG9u
IGQzZCBiYWNrZW5kLiBodHRwOi8vYW5nbGVidWcuY29tLzE5NTEKICAgICBBTkdMRV9TS0lQX1RF
U1RfSUYoSXNEM0QxMSgpKTsKIAorICAgIC8vIENoZWNrIFNTQk8gc3VwcG9ydAorICAgIEdMaW50
IG51bVN1cHBvcnRlZDsKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfU0hBREVSX1NU
T1JBR0VfQkxPQ0tTLCAmbnVtU3VwcG9ydGVkKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYobnVtU3VwcG9ydGVkIDwgMik7CisKICAgICBjb25zdGV4
cHIgY2hhciBrVlNbXSA9CiAgICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKICAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKQEAgLTk0OCw2ICs5NTQsMTIgQEAgVEVTVF9QKFByb2dy
YW1JbnRlcmZhY2VUZXN0RVMzMSwgR2V0U2hhZGVyU3RvcmFnZUJsb2NrUHJvcGVydGllcykKICAg
ICAvLyBvbiBkM2QgYmFja2VuZC4gaHR0cDovL2FuZ2xlYnVnLmNvbS8xOTUxCiAgICAgQU5HTEVf
U0tJUF9URVNUX0lGKElzRDNEMTEoKSk7CiAKKyAgICAvLyBDaGVjayBTU0JPIHN1cHBvcnQKKyAg
ICBHTGludCBudW1TdXBwb3J0ZWQ7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1NI
QURFUl9TVE9SQUdFX0JMT0NLUywgJm51bVN1cHBvcnRlZCk7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKG51bVN1cHBvcnRlZCA8IDMpOworCiAgICAg
Y29uc3RleHByIGNoYXIga1ZTW10gPQogICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCiAgICAg
ICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUm9idXN0UmVzb3VyY2VJbml0VGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUm9idXN0UmVzb3Vy
Y2VJbml0VGVzdC5jcHAKaW5kZXggMDlkZmQ4ZjBiZTJjZTkzNjZmNDRlMTQ3MjRiNDlmMzJkNTZh
MDFiMS4uOTljMmVmMGY5ODNlMDE4MDI2YmEyNDUzNmYwMGY2NDVlNTczMzk0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdFJlc291
cmNlSW5pdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Sb2J1c3RSZXNvdXJjZUluaXRUZXN0LmNwcApAQCAtMjkxLDYgKzI5MSw4IEBAIGNs
YXNzIFJvYnVzdFJlc291cmNlSW5pdFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2xlYXJGdW5jPgogICAgIHZvaWQgbWFza2VkU3RlbmNpbENsZWFyKENs
ZWFyRnVuYyBjbGVhckZ1bmMpOworCisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyREN1c3RvbUZC
T1Rlc3QoaW50IG9mZnNldFgsIGludCBvZmZzZXRZKTsKIH07CiAKIGNsYXNzIFJvYnVzdFJlc291
cmNlSW5pdFRlc3RFUzMgOiBwdWJsaWMgUm9idXN0UmVzb3VyY2VJbml0VGVzdApAQCAtNTY5LDcg
KzU3MSw2IEBAIFRFU1RfUChSb2J1c3RSZXNvdXJjZUluaXRUZXN0LCBUZXhJbWFnZVRoZW5TdWJJ
bWFnZSkKICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoKElzTmV4dXM1WCgpIHx8IElzTmV4dXM2UCgp
KSAmJiBJc09wZW5HTEVTKCkpOwogCiAgICAgLy8gUHV0IHNvbWUgZGF0YSBpbnRvIHRoZSB0ZXh0
dXJlCi0KICAgICBHTFRleHR1cmUgdGV4OwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4KTsKICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwga1dp
ZHRoLCBrSGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKQEAg
LTg0MCwxMSArODQxLDYgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIFJlYWRpbmdP
dXRPZkJvdW5kc0NvcGllZFRleHR1cmUpCiB7CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFoYXNH
TEV4dGVuc2lvbigpKTsKIAotICAgIC8vIEZsYWt5IGZhaWx1cmUgb24gTGludXggLyBOViAvIFZ1
bGthbiB3aGVuIHJ1biBpbiBhIHNlcXVlbmNlLiBodHRwOi8vYW5nbGVidWcuY29tLzM0MTYKLSAg
ICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNWdWxrYW4oKSAmJiBJc05WSURJQSgpICYmIElzTGludXgo
KSk7Ci0gICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS80MDkyCi0gICAgQU5HTEVfU0tJUF9URVNU
X0lGKElzV2luZG93cygpICYmIElzVnVsa2FuKCkpOwotCiAgICAgR0xUZXh0dXJlIHRleDsKICAg
ICBzZXR1cFRleHR1cmUoJnRleCk7CiAgICAgR0xGcmFtZWJ1ZmZlciBmYm87CkBAIC0xNTM3LDYg
KzE1MzMsNjAgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIENvcHlUZXhTdWJJbWFn
ZTJEKQogICAgIFZlcmlmeVJHQkE4UGl4ZWxSZWN0PGtEZXN0U2l6ZT4oZGVzdEluaXRUZXN0KTsK
IH0KIAordm9pZCBSb2J1c3RSZXNvdXJjZUluaXRUZXN0Ojpjb3B5VGV4U3ViSW1hZ2UyREN1c3Rv
bUZCT1Rlc3QoaW50IG9mZnNldFgsIGludCBvZmZzZXRZKQoreworICAgIGNvbnN0IGludCB0ZXhT
aXplID0gNTEyOworICAgIGNvbnN0IGludCBmYm9TaXplID0gMTY7CisKKyAgICBHTFRleHR1cmUg
dGV4dHVyZTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUuZ2V0KCkp
OworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCB0ZXhTaXplLCB0
ZXhTaXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIEdMUmVuZGVyYnVmZmVy
IHJlbmRlcmJ1ZmZlcjsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBy
ZW5kZXJidWZmZXIuZ2V0KCkpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJC
VUZGRVIsIEdMX1JHQkE0LCBmYm9TaXplLCBmYm9TaXplKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKKworICAgIEdMRnJhbWVidWZmZXIgZnJhbWVidWZmZXI7CisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyLmdldCgpKTsKKyAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
UkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVy
LmdldCgpKTsKKyAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKKyAgICBBU1NFUlRfR0xfRlJBTUVC
VUZGRVJfQ09NUExFVEUoR0xfRlJBTUVCVUZGRVIpOworCisgICAgZ2xDbGVhckNvbG9yKDEuMCwg
MC4wLCAwLjAsIDEuMCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKKworICAgIGdsQ29weVRleFN1YkltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgMCwgMCwgb2Zmc2V0WCwgb2Zmc2V0WSwgdGV4U2l6ZSwgdGV4U2l6ZSk7CisgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7CisKKyAgICBHTEZyYW1lYnVmZmVyIHJlYWRiYWNrRkJPOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCByZWFkYmFja0ZCTy5nZXQoKSk7
CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUuZ2V0KCksIDApOworICAgIEFTU0VSVF9H
TF9GUkFNRUJVRkZFUl9DT01QTEVURShHTF9GUkFNRUJVRkZFUik7CisgICAgY2hlY2tDdXN0b21G
cmFtZWJ1ZmZlck5vblplcm9QaXhlbHModGV4U2l6ZSwgdGV4U2l6ZSwgLW9mZnNldFgsIC1vZmZz
ZXRZLCBmYm9TaXplLCBmYm9TaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMQ29sb3I6OnJlZCk7Cit9CisKKy8vIFRlc3QgQ29weVRleFN1YkltYWdlMkQgY2xp
cHBlZCB0byBzaXplIG9mIGN1c3RvbSBGQk8sIHplcm8geC95IHNvdXJjZSBvZmZzZXQuCitURVNU
X1AoUm9idXN0UmVzb3VyY2VJbml0VGVzdCwgQ29weVRleFN1YkltYWdlMkRDdXN0b21GQk9aZXJv
T2Zmc2V0cykKK3sKKyAgICAvLyBUT0RPKGFuZ2xlYnVnLmNvbS80NTA3KTogcGFzcyB0aGlzIHRl
c3Qgb24gdGhlIE1ldGFsIGJhY2tlbmQuCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzTWV0YWwo
KSk7CisgICAgY29weVRleFN1YkltYWdlMkRDdXN0b21GQk9UZXN0KDAsIDApOworfQorCisvLyBU
ZXN0IENvcHlUZXhTdWJJbWFnZTJEIGNsaXBwZWQgdG8gc2l6ZSBvZiBjdXN0b20gRkJPLCBuZWdh
dGl2ZSB4L3kgc291cmNlIG9mZnNldC4KK1RFU1RfUChSb2J1c3RSZXNvdXJjZUluaXRUZXN0LCBD
b3B5VGV4U3ViSW1hZ2UyREN1c3RvbUZCT05lZ2F0aXZlT2Zmc2V0cykKK3sKKyAgICAvLyBUT0RP
KGFuZ2xlYnVnLmNvbS80NTA3KTogcGFzcyB0aGlzIHRlc3Qgb24gdGhlIE1ldGFsIGJhY2tlbmQu
CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzTWV0YWwoKSk7CisgICAgY29weVRleFN1YkltYWdl
MkRDdXN0b21GQk9UZXN0KC04LCAtOCk7Cit9CisKIC8vIFRlc3RzIHRoYXQgY2FsbGluZyBDb3B5
VGV4U3ViSW1hZ2UzRCB3aWxsIGluaXRpYWxpemUgdGhlIHNvdXJjZSAmIGRlc3RpbmF0aW9uLgog
VEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3RFUzMsIENvcHlUZXhTdWJJbWFnZTNEKQogewpA
QCAtMTg2Nyw5ICsxOTE3LDYgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3RFUzMxLCBN
dWx0aXNhbXBsZTJEVGV4dHVyZUFycmF5KQogLy8gVGVzdHMgdGhhdCB1c2luZyBhbiBvdXQgb2Yg
Ym91bmRzIGRyYXcgb2Zmc2V0IHdpdGggYSBkeW5hbWljIGFycmF5IHN1Y2NlZWRzLgogVEVTVF9Q
KFJvYnVzdFJlc291cmNlSW5pdFRlc3QsIER5bmFtaWNWZXJ0ZXhBcnJheU9mZnNldE91dE9mQm91
bmRzKQogewotICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBvbiBWdWxrYW4uICBodHRwOi8vYW5nbGVi
dWcuY29tLzMzNTAKLSAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNWdWxrYW4oKSk7Ci0KICAgICBB
TkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OnZzOjpTaW1wbGUoKSwgZXNz
bDFfc2hhZGVyczo6ZnM6OlJlZCgpKTsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiAKQEAg
LTE5NTMsMTAgKzIwMDAsMTIgQEAgVEVTVF9QKFJvYnVzdFJlc291cmNlSW5pdFRlc3RFUzMsIElu
aXRpYWxpemVNdWx0aXNhbXBsZWREZXB0aFJlbmRlcmJ1ZmZlckFmdGVyQ28KICAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwogfQogCi1BTkdMRV9JTlNUQU5U
SUFURV9URVNUX0VTMl9BTkRfRVMzKFJvYnVzdFJlc291cmNlSW5pdFRlc3QpOworQU5HTEVfSU5T
VEFOVElBVEVfVEVTVF9FUzJfQU5EX0VTM19BTkQoUm9idXN0UmVzb3VyY2VJbml0VGVzdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGhBbGxvY2F0ZU5vblplcm9N
ZW1vcnkoRVMyX1ZVTEtBTigpKSk7CiAKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMzKFJvYnVz
dFJlc291cmNlSW5pdFRlc3RFUzMpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzNfQU5EKFJv
YnVzdFJlc291cmNlSW5pdFRlc3RFUzMsIFdpdGhBbGxvY2F0ZU5vblplcm9NZW1vcnkoRVMzX1ZV
TEtBTigpKSk7CiAKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMzMShSb2J1c3RSZXNvdXJjZUlu
aXRUZXN0RVMzMSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMzFfQU5EKFJvYnVzdFJlc291
cmNlSW5pdFRlc3RFUzMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoQWxs
b2NhdGVOb25aZXJvTWVtb3J5KEVTMzFfVlVMS0FOKCkpKTsKIAogfSAgLy8gbmFtZXNwYWNlIGFu
Z2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvU2hhZGVyTm9uQ29uc3RHbG9iYWxJbml0aWFsaXplclRlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlh
bGl6ZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjBiMGZlMmFkM2ZmNzNkYzEwZjM5YjE3MjA0ZWQw
MDc5MWM4YWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1NoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJUZXN0LmNwcApA
QCAtMCwwICsxLDE2OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDIwIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFRlc3RzIGZvciBHTF9FWFRfc2hhZGVyX25v
bl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzCisvLworCisjaW5jbHVkZSAiY29tbW9uL21h
dGh1dGlsLmgiCisjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKKyNpbmNsdWRlICJ0
ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCitjbGFzcyBT
aGFkZXJOb25Db25zdEdsb2JhbEluaXRpYWxpemVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKK3sK
KyAgcHJvdGVjdGVkOgorICAgIFNoYWRlck5vbkNvbnN0R2xvYmFsSW5pdGlhbGl6ZXJUZXN0KCkg
OiBBTkdMRVRlc3QoKQorICAgIHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKKyAgICAg
ICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7CisgICAgfQorCisgICAgdm9pZCBkcmF3KEdMdWludCBw
cm9ncmFtKQorICAgIHsKKyAgICAgICAgc3RkOjphcnJheTxWZWN0b3I0LCAzPiB2ZXJ0aWNlczsK
KyAgICAgICAgdmVydGljZXNbMF0gPSB7LTEuMCwgLTEuMCwgMC4wLCAxLjB9OworICAgICAgICB2
ZXJ0aWNlc1sxXSA9IHsxLjAsIC0xLjAsIDAuMCwgMS4wfTsKKyAgICAgICAgdmVydGljZXNbMl0g
PSB7MC4wLCAxLjAsIDAuMCwgMi4wfTsKKworICAgICAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9u
ID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3NpdGlvbiIpOworCisgICAgICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0LCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIHZlcnRpY2VzLmRhdGEoKSk7CisKKyAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKKworICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJ
QU5HTEVTLCAwLCAzKTsKKyAgICB9Cit9OworCisvLyBUZXN0cyB0aGF0IHRoZSBleHRlbnNpb24g
aXMgZGlzYWJsZWQgaWYgbm90IGV4cGxpY2l0bHkgZW5hYmxlZC0gbm9uIGNvbnN0YW50IGluaXRp
YWxpemVycyBzaG91bGQKKy8vIGJlIGZvcmJpZGRlbiBpbiBhbGwgY2FzZXMgdW5sZXNzIHRoaXMg
ZXh0ZW5zaW9uIGlzIGV4cGxpY2l0bHkgcmVxdWVzdGVkCitURVNUX1AoU2hhZGVyTm9uQ29uc3RH
bG9iYWxJbml0aWFsaXplclRlc3QsIERpc2FibGVkKQoreworICAgIGNvbnN0IGNoYXIgKmZyYWdT
cmMgPSBSIigjdmVyc2lvbiAxMDAKKworcHJlY2lzaW9uIGxvd3AgZmxvYXQ7CisKK3VuaWZvcm0g
ZmxvYXQgbm9uZGV0ZXJtaW5pc3RpY191bmlmb3JtOworCitmbG9hdCBub25Db25zdEluaXRpYWxp
emVyKCk7CisKK2Zsb2F0IG5vbkNvbnN0R2xvYmFsID0gbm9uQ29uc3RJbml0aWFsaXplcigpOwor
ZmxvYXQgc2lkZUVmZmVjdEdsb2JhbCA9IDAuMDsKKworZmxvYXQgbm9uQ29uc3RJbml0aWFsaXpl
cigpIHsKKyAgICBzaWRlRWZmZWN0R2xvYmFsID0gMS4wOworICAgIHJldHVybiBub25kZXRlcm1p
bmlzdGljX3VuaWZvcm07Cit9CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChub25kZXRlcm1pbmlzdGljX3VuaWZvcm0sIG5vbkNvbnN0R2xvYmFsLCBzaWRlRWZmZWN0
R2xvYmFsLCAxLjApOworfQorKSI7CisKKyAgICBHTFNoYWRlciBiYWRGcmFnbWVudChHTF9GUkFH
TUVOVF9TSEFERVIpOworICAgIGdsU2hhZGVyU291cmNlKGJhZEZyYWdtZW50LCAxLCAmZnJhZ1Ny
YywgbnVsbHB0cik7CisgICAgZ2xDb21waWxlU2hhZGVyKGJhZEZyYWdtZW50KTsKKworICAgIEdM
aW50IGNvbXBpbGVSZXN1bHQ7CisgICAgZ2xHZXRTaGFkZXJpdihiYWRGcmFnbWVudCwgR0xfQ09N
UElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoY29tcGlsZVJlc3Vs
dCwgMCk7CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKK30KKworLy8gVGVzdCB0aGF0IG5v
biBjb25zdGFudCBpbml0aWFsaXplcnMgYXJlIGV2YWx1YXRlZCBjb3JyZWN0bHkgaW4gRVNTTCAx
MDAKK1RFU1RfUChTaGFkZXJOb25Db25zdEdsb2JhbEluaXRpYWxpemVyVGVzdCwgdjEwMCkKK3sK
KyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfc2hh
ZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzIikpOworCisgICAgY29uc3QgY2hh
ciAqZnJhZ1NyYyA9IFIiKCN2ZXJzaW9uIDEwMAorI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVyX25v
bl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6ZXJzIDogcmVxdWlyZQorCitwcmVjaXNpb24gbG93
cCBmbG9hdDsKKworI2lmbmRlZiBHTF9FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5p
dGlhbGl6ZXJzCisjZXJyb3IgR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRp
YWxpemVycyBpcyBub3QgZGVmaW5lZAorI2VuZGlmCisKK3VuaWZvcm0gZmxvYXQgbm9uZGV0ZXJt
aW5pc3RpY191bmlmb3JtOworCitmbG9hdCBub25Db25zdEluaXRpYWxpemVyKCk7CisKK2Zsb2F0
IG5vbkNvbnN0R2xvYmFsID0gbm9uQ29uc3RJbml0aWFsaXplcigpOworZmxvYXQgc2lkZUVmZmVj
dEdsb2JhbCA9IDAuMDsKKworZmxvYXQgbm9uQ29uc3RJbml0aWFsaXplcigpIHsKKyAgICBzaWRl
RWZmZWN0R2xvYmFsID0gMS4wOworICAgIHJldHVybiBub25kZXRlcm1pbmlzdGljX3VuaWZvcm07
Cit9CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChub25kZXRlcm1p
bmlzdGljX3VuaWZvcm0sIG5vbkNvbnN0R2xvYmFsLCBzaWRlRWZmZWN0R2xvYmFsLCAxLjApOwor
fQorKSI7CisKKyAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OnZz
OjpTaW1wbGUoKSwgZnJhZ1NyYyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBn
bFVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgIm5vbmRldGVybWluaXN0aWNfdW5pZm9ybSIpLCAxLjBmKTsKKyAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKKworICAgIGRyYXcocHJvZ3JhbSk7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisKKyAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoNjQsIDY0LCBHTENvbG9yOjp3
aGl0ZSk7Cit9CisKKy8vIFRlc3QgdGhhdCBub24gY29uc3RhbnQgaW5pdGlhbGl6ZXJzIGFyZSBl
dmFsdWF0ZWQgY29ycmVjdGx5IGluIEVTU0wgMzAwCitURVNUX1AoU2hhZGVyTm9uQ29uc3RHbG9i
YWxJbml0aWFsaXplclRlc3QsIHYzMDBlcykKK3sKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlz
R0xFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5p
dGlhbGl6ZXJzIikpOworCisgICAgY29uc3QgY2hhciAqZnJhZ1NyYyA9IFIiKCN2ZXJzaW9uIDMw
MCBlcworI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlh
bGl6ZXJzIDogcmVxdWlyZQorCitwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CitvdXQgdmVjNCBmcmFn
Q29sb3I7CisKKyNpZm5kZWYgR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRp
YWxpemVycworI2Vycm9yIEdMX0VYVF9zaGFkZXJfbm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFs
aXplcnMgaXMgbm90IGRlZmluZWQKKyNlbmRpZgorCit1bmlmb3JtIGZsb2F0IG5vbmRldGVybWlu
aXN0aWNfdW5pZm9ybTsKKworZmxvYXQgbm9uQ29uc3RJbml0aWFsaXplcigpOworCitmbG9hdCBu
b25Db25zdEdsb2JhbCA9IG5vbkNvbnN0SW5pdGlhbGl6ZXIoKTsKK2Zsb2F0IHNpZGVFZmZlY3RH
bG9iYWwgPSAwLjA7CisKK2Zsb2F0IG5vbkNvbnN0SW5pdGlhbGl6ZXIoKSB7CisgICAgc2lkZUVm
ZmVjdEdsb2JhbCA9IDEuMDsKKyAgICByZXR1cm4gbm9uZGV0ZXJtaW5pc3RpY191bmlmb3JtOwor
fQorCit2b2lkIG1haW4oKQoreworICAgIGZyYWdDb2xvciA9IHZlYzQobm9uZGV0ZXJtaW5pc3Rp
Y191bmlmb3JtLCBub25Db25zdEdsb2JhbCwgc2lkZUVmZmVjdEdsb2JhbCwgMS4wKTsKK30KKyki
OworCisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBlc3NsM19zaGFkZXJzOjp2czo6U2lt
cGxlKCksIGZyYWdTcmMpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgZ2xVc2VQ
cm9ncmFtKHByb2dyYW0pOworICAgIGdsVW5pZm9ybTFmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJub25kZXRlcm1pbmlzdGljX3VuaWZvcm0iKSwgMS4wZik7CisgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7CisKKyAgICBkcmF3KHByb2dyYW0pOworICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOworCisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDY0LCA2NCwgR0xDb2xvcjo6d2hpdGUp
OworfQorCitBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMyhTaGFkZXJOb25Db25zdEdsb2JhbElu
aXRpYWxpemVyVGVzdCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NoYWRlclN0b3JhZ2VC
dWZmZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9TaGFkZXJTdG9yYWdlQnVmZmVyVGVzdC5jcHAKaW5kZXggZjhiZTdmZWFkMTJiZjI1OWQ4OTRj
N2NhNTdjMDNjOTRkNTAwYzM0Yy4uZDczYTFiMTUwM2RhYjNjMTUwNmUxNjE2OGNhNTI3YTQxMWYw
ZmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1NoYWRlclN0b3JhZ2VCdWZmZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2hhZGVyU3RvcmFnZUJ1ZmZlclRlc3QuY3BwCkBAIC00
NDQsNyArNDQ0LDkgQEAgdm9pZCBtYWluKCkKICAgICBnbEdldEludGVnZXJ2KEdMX1NIQURFUl9T
VE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5ULCAmYnVmZmVyQWxpZ25PZmZzZXQpOwogCiAg
ICAgY29uc3RleHByIGludCBrQnVmZmVyU2l6ZSA9IGtFbGVtZW50Q291bnQgKiBrQXJyYXlTdHJp
ZGU7Ci0gICAgY29uc3QgaW50IGtCdWZmZXJPZmZzZXQgICA9IGtCdWZmZXJTaXplICsgKGtCdWZm
ZXJTaXplICUgYnVmZmVyQWxpZ25PZmZzZXQpOworICAgIGNvbnN0IGludCB1bmFsaWduZWRCeXRl
cyAgPSBrQnVmZmVyU2l6ZSAlIGJ1ZmZlckFsaWduT2Zmc2V0OworICAgIGNvbnN0IGludCBhbGln
bkNvcnJlY3Rpb24gPSB1bmFsaWduZWRCeXRlcyA9PSAwID8gMCA6IGJ1ZmZlckFsaWduT2Zmc2V0
IC0gdW5hbGlnbmVkQnl0ZXM7CisgICAgY29uc3QgaW50IGtCdWZmZXJPZmZzZXQgICA9IGtCdWZm
ZXJTaXplICsgYWxpZ25Db3JyZWN0aW9uOwogCiAgICAgZ2xCdWZmZXJEYXRhKEdMX1NIQURFUl9T
VE9SQUdFX0JVRkZFUiwga0J1ZmZlck9mZnNldCArIGtCdWZmZXJTaXplLCBudWxscHRyLCBHTF9T
VEFUSUNfRFJBVyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNwcAppbmRleCAx
OGEzMmNjMzdlMWUwMTZmZGM0MTNkNzQ5YzFmOGFlM2FiNDhjOTczLi4xZDhjMzYwNWI5YjNjMWY0
ZjUzNGY2ZTIzMWU3OTZhMTIyZTYyYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9uVGVzdC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpbXBsZU9wZXJhdGlvblRl
c3QuY3BwCkBAIC0xMDgwLDYgKzEwODAsNiBAQCBURVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwg
UHJpbWl0aXZlTW9kZU5lZ2F0aXZlVGVzdCkKIAogLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlCiAvLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNU
QU5USUFURV9URVNUX0VTMl9BTkRfRVMzX0FORChTaW1wbGVPcGVyYXRpb25UZXN0LCBXaXRoTm9D
b21tYW5kR3JhcGgoRVMyX1ZVTEtBTigpKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMl9B
TkRfRVMzKFNpbXBsZU9wZXJhdGlvblRlc3QpOwogCiB9ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5n
ZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N0
YXRlQ2hhbmdlVGVzdC5jcHAKaW5kZXggMmE1ZGQwNmJkYmI3MzQ2MjE1ZDIyM2M2OGY1NTczZGY1
MzQ5ZGUzOS4uMjU0ZjhlNmQ0M2IxYzc0MjljYjdjNWE3MGY1YzQ0M2RlNDRhNGY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N0YXRlQ2hh
bmdlVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1N0YXRlQ2hhbmdlVGVzdC5jcHAKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCiAjaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCisj
aW5jbHVkZSAidXRpbC9yYW5kb21fdXRpbHMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwog
CkBAIC0yNTAsMTEgKzI1MSw4IEBAIFRFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVy
SW5jb21wbGV0ZVN0ZW5jaWxBdHRhY2htZW50KQogfQogCiAvLyBUZXN0IHRoYXQgRnJhbWVidWZm
ZXIgY29tcGxldGVuZXNzIGNhY2hpbmcgd29ya3Mgd2hlbiBkZXB0aC1zdGVuY2lsIGF0dGFjaG1l
bnRzIGNoYW5nZS4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVySW5jb21wbGV0
ZURlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCitURVNUX1AoU3RhdGVDaGFuZ2VUZXN0RVMzLCBGcmFt
ZWJ1ZmZlckluY29tcGxldGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50KQogewotICAgIEFOR0xFX1NL
SVBfVEVTVF9JRihnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgIUlzR0xFeHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKSk7Ci0KICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVm
ZmVyKTsKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7CiAg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CkBAIC0xODM2LDggKzE4MzQsOSBAQCBU
RVNUX1AoU2ltcGxlU3RhdGVDaGFuZ2VUZXN0LCBEcmF3RWxlbWVudHNVQllURVgyVGhlbkRyYXdF
bGVtZW50c1VTSE9SVCkKIC8vIHZlcmlmeSBhbGwgdGhlIHJlbmRlcmluZyByZXN1bHRzIGFyZSB0
aGUgc2FtZS4KIFRFU1RfUChTaW1wbGVTdGF0ZUNoYW5nZVRlc3QsIERyYXdSZXBlYXRVbmFsaWdu
ZWRWYm9DaGFuZ2UpCiB7Ci0gICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS80MDkyCi0gICAgQU5H
TEVfU0tJUF9URVNUX0lGKGlzU3dpZnRzaGFkZXIoKSAmJiBJc1dpbmRvd3MoKSk7CisgICAgLy8g
aHR0cDovL2FuZ2xlYnVnLmNvbS80NDcwCisgICAgQU5HTEVfU0tJUF9URVNUX0lGKGlzU3dpZnRz
aGFkZXIoKSAmJiAoSXNXaW5kb3dzKCkgfHwgSXNMaW51eCgpKSk7CisKICAgICBjb25zdCBpbnQg
a1JlcGVhdCA9IDI7CiAKICAgICAvLyBzZXQgdXAgVkJPLCBjb2xvclZCTyBpcyB1bmFsaWduZWQK
QEAgLTI1OTYsNiArMjU5NSw4MiBAQCBURVNUX1AoU2ltcGxlU3RhdGVDaGFuZ2VUZXN0LCBSZWRl
ZmluZUZyYW1lYnVmZmVyVGV4dHVyZSkKICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwg
R0xDb2xvcjo6Z3JlZW4pIDw8ICJzZWNvbmQgZHJhdyBzaG91bGQgYmUgZ3JlZW4iOwogfQogCisv
LyBUcmlwcyBhIGJ1ZyBpbiB0aGUgVnVsa2FuIGJhY2stZW5kIHdoZXJlIGEgVGV4dHVyZSB3b3Vs
ZG4ndCB0cmFuc2l0aW9uIGNvcnJlY3RseS4KK1RFU1RfUChTaW1wbGVTdGF0ZUNoYW5nZVRlc3Qs
IERyYXdBbmRDbGVhclRleHR1cmVSZXBlYXRlZGx5KQoreworICAgIC8vIEZhaWxzIG9uIDQzMS4w
MiBkcml2ZXIuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMzc0OAorICAgIEFOR0xFX1NLSVBfVEVTVF9J
RihJc1dpbmRvd3MoKSAmJiBJc05WSURJQSgpICYmIElzVnVsa2FuKCkpOworCisgICAgLy8gRmFp
bHMgb24gQU1EIE9wZW5HTCBXaW5kb3dzLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXNuJ3QgbWFpbnRh
aW5lZC4KKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNXaW5kb3dzKCkgJiYgSXNBTUQoKSAmJiBJ
c09wZW5HTCgpKTsKKworICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgZXNzbDFfc2hhZGVy
czo6dnM6OlRleHR1cmUyRCgpLCBlc3NsMV9zaGFkZXJzOjpmczo6VGV4dHVyZTJEKCkpOworCisg
ICAgR0xUZXh0dXJlIHRleDsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7
CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZHTENvbG9yOjpyZWQpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwor
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIs
IEdMX05FQVJFU1QpOworICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOworCisgICAgR0xGcmFtZWJ1
ZmZlciBmYm87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7Cisg
ICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleCwgMCk7CisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
CisgICAgQVNTRVJUX0dMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKEdMX0ZSQU1FQlVGRkVSKTsKKwor
ICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIEdMaW50IHVuaUxvYyA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sIGVzc2wxX3NoYWRlcnM6OlRleHR1cmUyRFVuaWZvcm0oKSk7
CisgICAgQVNTRVJUX05FKC0xLCB1bmlMb2MpOworICAgIGdsVW5pZm9ybTFpKHVuaUxvYywgMCk7
CisKKyAgICBjb25zdCBpbnQgbnVtUm93c0NvbHMgPSAyOworICAgIGNvbnN0IGludCBjZWxsU2l6
ZSAgICA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOworCisgICAgZm9yIChpbnQgY2VsbFkgPSAwOyBj
ZWxsWSA8IG51bVJvd3NDb2xzOyBjZWxsWSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgY2Vs
bFggPSAwOyBjZWxsWCA8IG51bVJvd3NDb2xzOyBjZWxsWCsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpbnQgc2VlZCAgICAgICAgICAgID0gY2VsbFggKyBjZWxsWSAqIG51bVJvd3NDb2xzOwor
ICAgICAgICAgICAgY29uc3QgVmVjdG9yNCBjb2xvciA9IFJhbmRvbVZlYzQoc2VlZCwgMC4wZiwg
MS4wZik7CisKKyAgICAgICAgICAgIC8vIFNldCB0aGUgdGV4dHVyZSB0byBhIGNvbnN0YW50IGNv
bG9yIHVzaW5nIGdsQ2xlYXIgYW5kIGEgdXNlciBGQk8uCisgICAgICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICAgICAgICAgIGdsQ2xlYXJDb2xvcihj
b2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBjb2xvclszXSk7CisgICAgICAgICAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgICAgICAvLyBEcmF3IGEgc21hbGwg
Y29sb3JlZCBxdWFkIHRvIHRoZSBkZWZhdWx0IEZCTyB1c2luZyB0aGUgdmlld3BvcnQuCisgICAg
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgICAg
ICBnbFZpZXdwb3J0KGNlbGxYICogY2VsbFNpemUsIGNlbGxZICogY2VsbFNpemUsIGNlbGxTaXpl
LCBjZWxsU2l6ZSk7CisgICAgICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCBlc3NsMV9zaGFkZXJz
OjpQb3NpdGlvbkF0dHJpYigpLCAwLjVmKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFZl
cmlmeSB0aGUgY29sb3JlZCBxdWFkcyB3ZXJlIGRyYXduIGNvcnJlY3RseSBkZXNwaXRlIG5vIGZs
dXNoaW5nLgorICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsRGF0YShnZXRXaW5kb3dXaWR0
aCgpICogZ2V0V2luZG93SGVpZ2h0KCkpOworICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
KyAgICAgICAgICAgICAgICAgcGl4ZWxEYXRhLmRhdGEoKSk7CisKKyAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKKworICAgIGZvciAoaW50IGNlbGxZID0gMDsgY2VsbFkgPCBudW1Sb3dzQ29sczsg
Y2VsbFkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IGNlbGxYID0gMDsgY2VsbFggPCBudW1S
b3dzQ29sczsgY2VsbFgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHNlZWQgICAgICAg
ICAgICA9IGNlbGxYICsgY2VsbFkgKiBudW1Sb3dzQ29sczsKKyAgICAgICAgICAgIGNvbnN0IFZl
Y3RvcjQgY29sb3IgPSBSYW5kb21WZWM0KHNlZWQsIDAuMGYsIDEuMGYpOworCisgICAgICAgICAg
ICBHTENvbG9yIGV4cGVjdGVkQ29sb3IoY29sb3IpOworCisgICAgICAgICAgICBpbnQgdGVzdE4g
PQorICAgICAgICAgICAgICAgIGNlbGxYICogY2VsbFNpemUgKyBjZWxsWSAqIGdldFdpbmRvd1dp
ZHRoKCkgKiBjZWxsU2l6ZSArIGdldFdpbmRvd1dpZHRoKCkgKyAxOworICAgICAgICAgICAgR0xD
b2xvciBhY3R1YWxDb2xvciA9IHBpeGVsRGF0YVt0ZXN0Tl07CisgICAgICAgICAgICBFWFBFQ1Rf
Q09MT1JfTkVBUihleHBlY3RlZENvbG9yLCBhY3R1YWxDb2xvciwgMSk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIC8vIFZhbGlkYXRlcyBkaXNhYmxpbmcgY3VsbCBmYWNlIHJlYWxseSBkaXNhYmxl
cyBpdC4KIFRFU1RfUChTaW1wbGVTdGF0ZUNoYW5nZVRlc3QsIEVuYWJsZUFuZERpc2FibGVDdWxs
RmFjZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9UZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvVGV4dHVyZVRlc3QuY3BwCmluZGV4IDVlMDgyYWRkYzhmOGIzMTM1OGQwNjcy
MzEwMjE0M2I1MzlkMmEyNDIuLmU0NTAxYWQwNTFkYTkyYzdiOTIwMTExMGM0MmIyMzU0MWY2MTE1
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9UZXh0dXJlVGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1RleHR1cmVUZXN0LmNwcApAQCAtMjkxNSw2ICsyOTE1LDkgQEAgVEVTVF9QKFRl
eHR1cmVTaXplVGV4dHVyZUFycmF5VGVzdCwgQmFzZUxldmVsVmFyaWVzSW5UZXh0dXJlQXJyYXkp
CiB7CiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzQU1EKCkgJiYgSXNEM0QxMSgpKTsKIAorICAg
IC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDM5MQorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc05W
SURJQSgpICYmIElzV2luZG93cygpICYmIElzRDNEMTEoKSk7CisKICAgICBnbEFjdGl2ZVRleHR1
cmUoR0xfVEVYVFVSRTApOwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmUyREEpOwogICAgIEdMc2l6ZWkgc2l6ZSA9IDY0OwpAQCAtMzk5NSw2ICszOTk4LDEyIEBAIFRF
U1RfUChUZXh0dXJlTGltaXRzVGVzdCwgTWF4RnJhZ21lbnRUZXh0dXJlcykKIC8vIFRlc3QgcmVu
ZGVyaW5nIHdpdGggbWF4aW11bSBjb21iaW5lZCB0ZXh0dXJlIHVuaXRzLgogVEVTVF9QKFRleHR1
cmVMaW1pdHNUZXN0LCBNYXhDb21iaW5lZFRleHR1cmVzKQogeworICAgIC8vIFRPRE8odGltdnAp
OiBodHRwOi8vYW5nbGVidWcuY29tLzM1NzAKKyAgICAvLyBDdXJyZW50bHkgb25seSBmYWlscyBv
biBTd2lmdFNoYWRlciBidXQgd2UgZG9uJ3QgaGF2ZSBhbiBJc1N3aWZ0U2hhZGVyKCkuCisgICAg
Ly8gbWF4IHBlci1zdGFnZSBzYW1wbGVkIGltYWdlIGJpbmRpbmdzIGNvdW50ICgzMikgZXhjZWVk
cyBkZXZpY2UKKyAgICAvLyBtYXhQZXJTdGFnZURlc2NyaXB0b3JTYW1wbGVkSW1hZ2VzIGxpbWl0
ICgxNikKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNWdWxrYW4oKSk7CisKICAgICBHTGludCB2
ZXJ0ZXhUZXh0dXJlcyA9IG1NYXhWZXJ0ZXhUZXh0dXJlczsKIAogICAgIGlmICh2ZXJ0ZXhUZXh0
dXJlcyArIG1NYXhGcmFnbWVudFRleHR1cmVzID4gbU1heENvbWJpbmVkVGV4dHVyZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNm
b3JtRmVlZGJhY2tUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9UcmFuc2Zvcm1GZWVkYmFja1Rlc3QuY3BwCmluZGV4IDM4NTExMjQwNjUxYjE3M2I5
NzE0N2VlODc4NjIzMjZiYjM2MTcwZWMuLjFhMWQ1NGY4ZGQ3OTAyYzcwMGYyNGQxZGQ4MTgwMmJi
YjFmYWM4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9UcmFuc2Zvcm1GZWVkYmFja1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UcmFuc2Zvcm1GZWVkYmFja1Rlc3QuY3BwCkBAIC01
NDcsNiArNTQ3LDkgQEAgVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgTXVsdGlDb250ZXh0
KQogCiAgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzTGludXgoKSAmJiBJc0FNRCgpICYmIElzT3Bl
bkdMKCkpOwogCisgICAgLy8gRmxha3kgb24gV2luIEludGVsIFZ1bGthbi4gaHR0cDovL2FuZ2xl
YnVnLmNvbS80NDk3CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKElzV2luZG93cygpICYmIElzSW50
ZWwoKSAmJiBJc1Z1bGthbigpKTsKKwogICAgIEVHTGludCBjb250ZXh0QXR0cmlidXRlc1tdID0g
ewogICAgICAgICBFR0xfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0tIUiwKICAgICAgICAgR2V0UGFy
YW0oKS5tYWpvclZlcnNpb24sCkBAIC01NTUsNiArNTU4LDggQEAgVEVTVF9QKFRyYW5zZm9ybUZl
ZWRiYWNrVGVzdCwgTXVsdGlDb250ZXh0KQogICAgICAgICBFR0xfTk9ORSwKICAgICB9OwogCisg
ICAgLy8gS2VlcCBhIGZpeGVkIHNlZWQgUk5HIHNvIHdlIGFyZSBkZXRlcm1pbmlzdGljLgorICAg
IFJORyBybmcoMCk7CiAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKIAog
ICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOwpAQCAtNTcyLDcg
KzU3Nyw3IEBAIFRFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIE11bHRpQ29udGV4dCkKICAg
ICB9OwogICAgIENvbnRleHRJbmZvIGNvbnRleHRzWzMyXTsKIAotICAgIGNvbnN0IHNpemVfdCBt
YXhEcmF3U2l6ZSA9IDEwMjQ7CisgICAgY29uc3Qgc2l6ZV90IG1heERyYXdTaXplID0gNTEyOwog
CiAgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHRyYW5zZm9ybUZlZWRiYWNrRGF0YShtYXhEcmF3U2l6
ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhEcmF3U2l6ZTsgaSsrKQpAQCAtNjQw
LDkgKzY0NSw5IEBAIHZvaWQgbWFpbih2b2lkKQogICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKIAogICAgICAgICAvLyBGb3IgZWFjaCBwYXNzLCBkcmF3IGJldHdlZW4gMCBhbmQgbWF4RHJh
d1NpemUgcHJpbWl0aXZlcwotICAgICAgICBmb3IgKGF1dG8gJnByaW1Db3VudCA6IGNvbnRleHQu
cHJpbWl0aXZlQ291bnRzKQorICAgICAgICBmb3IgKHNpemVfdCAmcHJpbUNvdW50IDogY29udGV4
dC5wcmltaXRpdmVDb3VudHMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHByaW1Db3VudCA9IHJh
bmQoKSAlIG1heERyYXdTaXplOworICAgICAgICAgICAgcHJpbUNvdW50ID0gcm5nLnJhbmRvbUlu
dEJldHdlZW4oMSwgbWF4RHJhd1NpemUpOwogICAgICAgICB9CiAKICAgICAgICAgZ2xCZWdpblRy
YW5zZm9ybUZlZWRiYWNrKEdMX1BPSU5UUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVz
dC5jcHAKaW5kZXggMGQ2OTM2NTJlYWVjNzcyNDdhOTEyNzMzODZkOTY2NmQ5YzEzODRkNS4uYzMy
ZGU2NDU2NDNjZTc4NzZiYjJjNzcxYjU4MmUwNGFlMzU5N2ZkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0ZVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9WZXJ0
ZXhBdHRyaWJ1dGVUZXN0LmNwcApAQCAtOCw2ICs4LDcgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9G
ZWF0dXJlc1ZrLmgiCiAjaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKICNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKKyNpbmNsdWRlICJ1dGlsL3JhbmRvbV91dGlscy5oIgog
CiB1c2luZyBuYW1lc3BhY2UgYW5nbGU7CiAKQEAgLTI1MDMsNiArMjUwNCwxMDQgQEAgdm9pZCBt
YWluKCkKICAgICBjaGVja1BpeGVscygpOwogfQogCisvLyBUZXN0cyB0aGF0IGxhcmdlIHN0cmlk
ZXMgdGhhdCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdvcmsgY29ycmVjdGx5Lgor
Ly8gUmVxdWlyZXMgRVMgMy4xIHRvIHF1ZXJ5IE1BWF9WRVJURVhfQVRUUklCX1NUUklERS4KK1RF
U1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0RVMzMSwgTGFyZ2VTdHJpZGUpCit7CisgICAgc3RydWN0
IFZlcnRleAorICAgIHsKKyAgICAgICAgVmVjdG9yNCBwb3NpdGlvbjsKKyAgICAgICAgVmVjdG9y
MiBjb2xvcjsKKyAgICB9OworCisgICAgY29uc3RleHByIHVpbnQzMl90IGtDb2xvck9mZnNldCA9
IG9mZnNldG9mKFZlcnRleCwgY29sb3IpOworCisgICAgLy8gR2V0IE1BWF9WRVJURVhfQVRUUklC
X1NUUklERS4KKyAgICBHTGludCBtYXhTdHJpZGU7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
VkVSVEVYX0FUVFJJQl9TVFJJREUsICZtYXhTdHJpZGUpOworCisgICAgdWludDMyX3QgYnVmZmVy
U2l6ZSAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4U3RyaWRlKTsKKyAgICB1aW50MzJfdCBz
dHJpZGUgICAgICA9IHNpemVvZihWZXJ0ZXgpOworICAgIHVpbnQzMl90IG51bVZlcnRpY2VzID0g
YnVmZmVyU2l6ZSAvIHN0cmlkZTsKKworICAgIC8vIFRoZSBsYXN0IHZlcnRleCBmaXRzIGluIHRo
ZSBidWZmZXIgc2l6ZS4gVGhlIGxhc3QgdmVydGV4IHN0cmlkZSBleHRlbmRzIHBhc3QgaXQuCisg
ICAgQVNTRVJUX0xUKG51bVZlcnRpY2VzICogc3RyaWRlLCBidWZmZXJTaXplKTsKKyAgICBBU1NF
UlRfR1QobnVtVmVydGljZXMgKiBzdHJpZGUgKyBrQ29sb3JPZmZzZXQsIGJ1ZmZlclNpemUpOwor
CisgICAgUk5HIHJuZygwKTsKKworICAgIHN0ZDo6dmVjdG9yPFZlcnRleD4gdmVydGV4RGF0YShi
dWZmZXJTaXplLCB7VmVjdG9yNCgpLCBWZWN0b3IyKCl9KTsKKyAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBleHBlY3RlZENvbG9yczsKKyAgICBmb3IgKHVpbnQzMl90IHZlcnRleEluZGV4ID0gMDsg
dmVydGV4SW5kZXggPCBudW1WZXJ0aWNlczsgKyt2ZXJ0ZXhJbmRleCkKKyAgICB7CisgICAgICAg
IGludCB4ID0gdmVydGV4SW5kZXggJSBnZXRXaW5kb3dXaWR0aCgpOworICAgICAgICBpbnQgeSA9
IHZlcnRleEluZGV4IC8gZ2V0V2luZG93V2lkdGgoKTsKKworICAgICAgICAvLyBHZW5lcmF0ZSBh
bmQgY2xhbXAgYSAyIGNvbXBvbmVudCB2ZWN0b3IuCisgICAgICAgIFZlY3RvcjQgcmFuZG9tVmVj
NCA9IFJhbmRvbVZlYzQocm5nLnJhbmRvbUludCgpLCAwLjBmLCAxLjBmKTsKKyAgICAgICAgR0xD
b2xvciByYW5kb21Db2xvcihyYW5kb21WZWM0KTsKKyAgICAgICAgcmFuZG9tQ29sb3JbMl0gICAg
ID0gMDsKKyAgICAgICAgcmFuZG9tQ29sb3JbM10gICAgID0gMjU1OworICAgICAgICBWZWN0b3I0
IGNsYW1wZWRWZWMgPSByYW5kb21Db2xvci50b05vcm1hbGl6ZWRWZWN0b3IoKTsKKworICAgICAg
ICB2ZXJ0ZXhEYXRhW3ZlcnRleEluZGV4XSA9IHtWZWN0b3I0KHgsIHksIDAuMGYsIDEuMGYpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3IyKGNsYW1wZWRWZWNbMF0s
IGNsYW1wZWRWZWNbMV0pfTsKKyAgICAgICAgZXhwZWN0ZWRDb2xvcnMucHVzaF9iYWNrKHJhbmRv
bUNvbG9yKTsKKyAgICB9CisKKyAgICBHTEJ1ZmZlciBidWZmZXI7CisgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgYnVmZmVyKTsKKyAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVG
RkVSLCBidWZmZXJTaXplLCB2ZXJ0ZXhEYXRhLmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOworCisg
ICAgdmVydGV4RGF0YS5yZXNpemUobnVtVmVydGljZXMpOworCisgICAgY29uc3RleHByIGNoYXIg
a1ZTW10gPSBSIigjdmVyc2lvbiAzMTAgZXMKK2luIHZlYzQgcG9zOworaW4gdmVjMiBjb2xvcjsK
K291dCB2ZWMyIHZjb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgICAgdmNvbG9yID0gY29sb3I7Cisg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KCgocG9zLnggKyAwLjUpIC8gNjQuMCkgLSAxLjAsICgocG9z
LnkgKyAwLjUpIC8gNjQuMCkgLSAxLjAsIDAsIDEpOworICAgIGdsX1BvaW50U2l6ZSA9IDEuMDsK
K30pIjsKKworICAgIGNvbnN0ZXhwciBjaGFyIGtGU1tdID0gUiIoI3ZlcnNpb24gMzEwIGVzCitw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKK2luIHZlYzIgdmNvbG9yOworb3V0IHZlYzQgZmNvbG9y
Owordm9pZCBtYWluKCkKK3sKKyAgICBmY29sb3IgPSB2ZWM0KHZjb2xvciwgMC4wLCAxLjApOwor
fSkiOworCisgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBrVlMsIGtGUyk7CisgICAgZ2xV
c2VQcm9ncmFtKHByb2dyYW0pOworCisgICAgR0xpbnQgcG9zTG9jID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCAicG9zIik7CisgICAgQVNTRVJUX05FKC0xLCBwb3NMb2MpOworICAgIEdM
aW50IGNvbG9yTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiY29sb3IiKTsKKyAg
ICBBU1NFUlRfTkUoLTEsIGNvbG9yTG9jKTsKKworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihw
b3NMb2MsIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgc3RyaWRlLCBudWxscHRyKTsKKyAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc0xvYyk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KGNvbG9yTG9jLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIHN0cmlkZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQgKj4oa0NvbG9yT2Zmc2V0KSk7Cisg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvYyk7CisKKyAgICBnbERyYXdBcnJh
eXMoR0xfUE9JTlRTLCAwLCBudW1WZXJ0aWNlcyk7CisKKyAgICAvLyBWYWxpZGF0ZSBwaXhlbHMu
CisgICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gYWN0dWFsQ29sb3JzKGdldFdpbmRvd1dpZHRoKCkg
KiBnZXRXaW5kb3dIZWlnaHQoKSk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAg
ICAgICAgICAgICAgICBhY3R1YWxDb2xvcnMuZGF0YSgpKTsKKworICAgIGFjdHVhbENvbG9ycy5y
ZXNpemUobnVtVmVydGljZXMpOworCisgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkQ29sb3JzLCBhY3R1YWxDb2xvcnMpOworfQorCiAvLyBVc2UgdGhpcyB0
byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNo
IEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKIC8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5z
dC4KIC8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIHVzZXMgZGlmZmVyZW50IEQzRCBmb3JtYXRz
IGZvciB2ZXJ0ZXggYXR0cmlicyBjb21wYXJlZCB0byBGZWF0dXJlIExldmVscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Z1bGthbkV4dGVy
bmFsSW1hZ2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9WdWxrYW5FeHRlcm5hbEltYWdlVGVzdC5jcHAKaW5kZXggMTg5MjZjYWZhMGZjNWM4NjA2
MjM0N2IyMGJkZjkxNzEwYzU5MjNhNi4uYTY5MzM4YWQzNGI5MjEzNDgzZTNjOTQ2OTA4ZjQ3ZTMw
MjgwNTdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL1Z1bGthbkV4dGVybmFsSW1hZ2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVnVsa2FuRXh0ZXJuYWxJbWFnZVRlc3QuY3BwCkBA
IC0zOCw2ICszOCwzMyBAQCBWa0Zvcm1hdCBDaG9vc2VBbnlJbWFnZUZvcm1hdChjb25zdCBWdWxr
YW5FeHRlcm5hbEhlbHBlciAmaGVscGVyKQogICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVE
OwogfQogCisvLyBMaXN0IG9mIFZrRm9ybWF0L2ludGVybmFsZm9ybWF0IGNvbWJpbmF0aW9ucyBD
aHJvbWUgdXNlcy4KKy8vIFRoaXMgaXMgY29tcGlsZWQgZnJvbSB0aGUgbWFwcyBpbgorLy8gY29t
cG9uZW50cy92aXovY29tbW9uL3Jlc291cmNlcy9yZXNvdXJjZV9mb3JtYXRfdXRpbHMuY2MuCitj
b25zdCBzdHJ1Y3QgSW1hZ2VGb3JtYXRQYWlyCit7CisgICAgVmtGb3JtYXQgdmtGb3JtYXQ7Cisg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0OworICAgIGNvbnN0IGNoYXIgKnJlcXVpcmVkRXh0ZW5z
aW9uOworfSBrQ2hyb21lRm9ybWF0c1tdID0geworICAgIHtWS19GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sIEdMX1JHQkE4X09FU30sICAgICAgICAgICAgICAgICAgICAvLyBSR0JBXzg4ODgKKyAgICB7
VktfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCBHTF9CR1JBOF9FWFR9LCAgICAgICAgICAgICAgICAg
ICAgLy8gQkdSQV84ODg4CisgICAge1ZLX0ZPUk1BVF9SNEc0QjRBNF9VTk9STV9QQUNLMTYsIEdM
X1JHQkE0fSwgICAgICAgICAgICAgICAgIC8vIFJHQkFfNDQ0NAorICAgIHtWS19GT1JNQVRfUjE2
RzE2QjE2QTE2X1NGTE9BVCwgR0xfUkdCQTE2Rl9FWFR9LCAgICAgICAgICAgICAvLyBSR0JBX0Yx
NgorICAgIHtWS19GT1JNQVRfUjhfVU5PUk0sIEdMX1I4X0VYVH0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBSRURfOAorICAgIHtWS19GT1JNQVRfUjVHNkI1X1VOT1JNX1BBQ0sxNiwg
R0xfUkdCNTY1fSwgICAgICAgICAgICAgICAgICAvLyBSR0JfNTY1CisgICAge1ZLX0ZPUk1BVF9S
MTZfVU5PUk0sIEdMX1IxNl9FWFQsICJHTF9FWFRfdGV4dHVyZV9ub3JtMTYifSwgIC8vIFIxNl9F
WFQKKyAgICB7VktfRk9STUFUX0EyQjEwRzEwUjEwX1VOT1JNX1BBQ0szMiwgR0xfUkdCMTBfQTJf
RVhUfSwgICAgICAgLy8gUkdCQV8xMDEwMTAyCisgICAge1ZLX0ZPUk1BVF9SOF9VTk9STSwgR0xf
QUxQSEE4X0VYVH0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFMUEhBXzgKKyAgICB7Vktf
Rk9STUFUX1I4X1VOT1JNLCBHTF9MVU1JTkFOQ0U4X0VYVH0sICAgICAgICAgICAgICAgICAgICAg
Ly8gTFVNSU5BTkNFXzgKKyAgICB7VktfRk9STUFUX1I4RzhfVU5PUk0sIEdMX1JHOF9FWFR9LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUkdfODgKKworICAgIC8vIFRPRE8oc3BhbmcpOiBD
aHJvbWUgY291bGQgdXNlIEdMX1JHQkE4X09FUyBoZXJlIGlmIHdlIGNhbiBzb2x2ZSBhIGNvdXBs
ZQorICAgIC8vIG9mIHZhbGlkYXRpb24gY29tZm9ybWFuY2UgaXNzdWVzIChzZWUgY3JidWcuY29t
LzEwNTg1MjEpLiBPciwgd2UgY2FuIGFkZAorICAgIC8vIGEgbmV3IGludGVybmFsZm9ybWF0IHRo
YXQncyB1bmFtYmlndW91c2x5IFI4RzhCOFg4IGluIEFOR0xFIGFuZCB1c2UgdGhhdC4KKyAgICB7
VktfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCBHTF9SR0I4X09FU30sICAvLyBSR0JYXzg4ODgKK307
CisKIH0gIC8vIG5hbWVzcGFjZQogCiBjbGFzcyBWdWxrYW5FeHRlcm5hbEltYWdlVGVzdCA6IHB1
YmxpYyBBTkdMRVRlc3QKQEAgLTg0LDYgKzExMSwxMyBAQCBURVNUX1AoVnVsa2FuRXh0ZXJuYWxJ
bWFnZVRlc3QsIFNob3VsZEltcG9ydE1lbW9yeU9wYXF1ZUZkKQogICAgIHsKICAgICAgICAgR0xN
ZW1vcnlPYmplY3QgbWVtb3J5T2JqZWN0OwogICAgICAgICBnbEltcG9ydE1lbW9yeUZkRVhUKG1l
bW9yeU9iamVjdCwgZGV2aWNlTWVtb3J5U2l6ZSwgR0xfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0VY
VCwgZmQpOworCisgICAgICAgIC8vIFRlc3QgdGhhdCBhZnRlciBjYWxsaW5nIGdsSW1wb3J0TWVt
b3J5RmRFWFQsIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBtZW1vcnkgb2JqZWN0IGNhbm5vdAorICAg
ICAgICAvLyBiZSBjaGFuZ2VkCisgICAgICAgIEdMaW50IGRlZGljYXRlZE1lbW9yeSA9IEdMX1RS
VUU7CisgICAgICAgIGdsTWVtb3J5T2JqZWN0UGFyYW1ldGVyaXZFWFQobWVtb3J5T2JqZWN0LCBH
TF9ERURJQ0FURURfTUVNT1JZX09CSkVDVF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmRlZGljYXRlZE1lbW9yeSk7CisgICAgICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgfQogCiAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CkBAIC0xNzUsNiArMjA5LDE2NiBAQCBURVNUX1AoVnVsa2FuRXh0ZXJuYWxJbWFnZVRlc3QsIFNo
b3VsZENsZWFyT3BhcXVlRmRSR0JBOCkKICAgICB2a0ZyZWVNZW1vcnkoaGVscGVyLmdldERldmlj
ZSgpLCBkZXZpY2VNZW1vcnksIG51bGxwdHIpOwogfQogCisvLyBUZXN0IGNyZWF0aW5nIGFuZCBj
bGVhcmluZyBhIHNpbXBsZSBSR0JBOCB0ZXh0dXJlIGluIGEgemlyY29uIHZtby4KK1RFU1RfUChW
dWxrYW5FeHRlcm5hbEltYWdlVGVzdCwgU2hvdWxkQ2xlYXJaaXJjb25WbW9SR0JBOCkKK3sKKyAg
ICAvLyBodHRwOi8vYW5nbGVidWcuY29tLzQyMjkKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNW
dWxrYW4oKSk7CisgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0FOR0xFX21lbW9yeV9vYmplY3RfZnVjaHNpYSIpKTsKKworICAgIFZ1bGthbkV4dGVy
bmFsSGVscGVyIGhlbHBlcjsKKyAgICBoZWxwZXIuaW5pdGlhbGl6ZSgpOworCisgICAgVmtGb3Jt
YXQgZm9ybWF0ID0gVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworICAgIEFOR0xFX1NLSVBfVEVT
VF9JRigKKyAgICAgICAgIWhlbHBlci5jYW5DcmVhdGVJbWFnZVppcmNvblZtbyhmb3JtYXQsIFZL
X0lNQUdFX1RZUEVfMkQsIFZLX0lNQUdFX1RJTElOR19PUFRJTUFMKSk7CisKKyAgICBWa0ltYWdl
IGltYWdlICAgICAgICAgICAgICAgICA9IFZLX05VTExfSEFORExFOworICAgIFZrRGV2aWNlTWVt
b3J5IGRldmljZU1lbW9yeSAgID0gVktfTlVMTF9IQU5ETEU7CisgICAgVmtEZXZpY2VTaXplIGRl
dmljZU1lbW9yeVNpemUgPSAwOworCisgICAgVmtFeHRlbnQzRCBleHRlbnQgPSB7MSwgMSwgMX07
CisgICAgVmtSZXN1bHQgcmVzdWx0ID0KKyAgICAgICAgaGVscGVyLmNyZWF0ZUltYWdlMkRaaXJj
b25WbW8oZm9ybWF0LCBleHRlbnQsICZpbWFnZSwgJmRldmljZU1lbW9yeSwgJmRldmljZU1lbW9y
eVNpemUpOworICAgIEVYUEVDVF9FUShyZXN1bHQsIFZLX1NVQ0NFU1MpOworCisgICAgenhfaGFu
ZGxlX3Qgdm1vID0gWlhfSEFORExFX0lOVkFMSUQ7CisgICAgcmVzdWx0ICAgICAgICAgID0gaGVs
cGVyLmV4cG9ydE1lbW9yeVppcmNvblZtbyhkZXZpY2VNZW1vcnksICZ2bW8pOworICAgIEVYUEVD
VF9FUShyZXN1bHQsIFZLX1NVQ0NFU1MpOworICAgIEVYUEVDVF9ORSh2bW8sIFpYX0hBTkRMRV9J
TlZBTElEKTsKKworICAgIHsKKyAgICAgICAgR0xNZW1vcnlPYmplY3QgbWVtb3J5T2JqZWN0Owor
ICAgICAgICBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFKG1lbW9yeU9iamVjdCwgZGV2
aWNlTWVtb3J5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9IQU5ETEVfVFlQRV9aSVJDT05fVk1PX0FOR0xFLCB2bW8pOworCisgICAgICAgIEdMVGV4dHVy
ZSB0ZXh0dXJlOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUp
OworICAgICAgICBnbFRleFN0b3JhZ2VNZW0yREVYVChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JB
OCwgMSwgMSwgbWVtb3J5T2JqZWN0LCAwKTsKKworICAgICAgICBHTEZyYW1lYnVmZmVyIGZyYW1l
YnVmZmVyOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVi
dWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAgICAg
ICAgZ2xDbGVhckNvbG9yKDAuNWYsIDAuNWYsIDAuNWYsIDAuNWYpOworICAgICAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgICAgICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAs
IDEyOCwgMTI4LCAxMjgsIDEyOCwgMS4wKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIHZrRGVzdHJveUltYWdlKGhlbHBlci5nZXREZXZpY2UoKSwgaW1hZ2UsIG51
bGxwdHIpOworICAgIHZrRnJlZU1lbW9yeShoZWxwZXIuZ2V0RGV2aWNlKCksIGRldmljZU1lbW9y
eSwgbnVsbHB0cik7Cit9CisKKy8vIFRlc3QgYWxsIGZvcm1hdCBjb21iaW5hdGlvbnMgdXNlZCBi
eSBDaHJvbWUgaW1wb3J0IHN1Y2Nlc3NmdWxseSAob3BhcXVlIGZkKS4KK1RFU1RfUChWdWxrYW5F
eHRlcm5hbEltYWdlVGVzdCwgVGV4dHVyZUZvcm1hdENvbXBhdENocm9taXVtRmQpCit7CisgICAg
QU5HTEVfU0tJUF9URVNUX0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9tZW1v
cnlfb2JqZWN0X2ZkIikpOworICAgIC8vIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDA5MgorICAgIEFO
R0xFX1NLSVBfVEVTVF9JRihpc1N3aWZ0c2hhZGVyKCkpOworCisgICAgVnVsa2FuRXh0ZXJuYWxI
ZWxwZXIgaGVscGVyOworICAgIGhlbHBlci5pbml0aWFsaXplKCk7CisgICAgZm9yIChjb25zdCBJ
bWFnZUZvcm1hdFBhaXIgJmZvcm1hdCA6IGtDaHJvbWVGb3JtYXRzKQorICAgIHsKKyAgICAgICAg
aWYgKCFoZWxwZXIuY2FuQ3JlYXRlSW1hZ2VPcGFxdWVGZChmb3JtYXQudmtGb3JtYXQsIFZLX0lN
QUdFX1RZUEVfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VktfSU1BR0VfVElMSU5HX09QVElNQUwpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JtYXQucmVxdWlyZWRFeHRlbnNpb24gJiYg
IUlzR0xFeHRlbnNpb25FbmFibGVkKGZvcm1hdC5yZXF1aXJlZEV4dGVuc2lvbikpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgVmtJbWFnZSBp
bWFnZSAgICAgICAgICAgICAgICAgPSBWS19OVUxMX0hBTkRMRTsKKyAgICAgICAgVmtEZXZpY2VN
ZW1vcnkgZGV2aWNlTWVtb3J5ICAgPSBWS19OVUxMX0hBTkRMRTsKKyAgICAgICAgVmtEZXZpY2VT
aXplIGRldmljZU1lbW9yeVNpemUgPSAwOworCisgICAgICAgIFZrRXh0ZW50M0QgZXh0ZW50ID0g
ezExMywgMjExLCAxfTsKKyAgICAgICAgVmtSZXN1bHQgcmVzdWx0ICAgPSBoZWxwZXIuY3JlYXRl
SW1hZ2UyRE9wYXF1ZUZkKGZvcm1hdC52a0Zvcm1hdCwgZXh0ZW50LCAmaW1hZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRldmljZU1l
bW9yeSwgJmRldmljZU1lbW9yeVNpemUpOworICAgICAgICBFWFBFQ1RfRVEocmVzdWx0LCBWS19T
VUNDRVNTKTsKKworICAgICAgICBpbnQgZmQgPSBrSW52YWxpZEZkOworICAgICAgICByZXN1bHQg
PSBoZWxwZXIuZXhwb3J0TWVtb3J5T3BhcXVlRmQoZGV2aWNlTWVtb3J5LCAmZmQpOworICAgICAg
ICBFWFBFQ1RfRVEocmVzdWx0LCBWS19TVUNDRVNTKTsKKyAgICAgICAgRVhQRUNUX05FKGZkLCBr
SW52YWxpZEZkKTsKKworICAgICAgICB7CisgICAgICAgICAgICBHTE1lbW9yeU9iamVjdCBtZW1v
cnlPYmplY3Q7CisgICAgICAgICAgICBnbEltcG9ydE1lbW9yeUZkRVhUKG1lbW9yeU9iamVjdCwg
ZGV2aWNlTWVtb3J5U2l6ZSwgR0xfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0VYVCwgZmQpOworCisg
ICAgICAgICAgICBHTFRleHR1cmUgdGV4dHVyZTsKKyAgICAgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgICAgICBnbFRleFN0b3JhZ2VNZW0yREVY
VChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQuaW50ZXJuYWxGb3JtYXQsIGV4dGVudC53aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVudC5oZWlnaHQsIG1lbW9yeU9i
amVjdCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKwor
ICAgICAgICB2a0Rlc3Ryb3lJbWFnZShoZWxwZXIuZ2V0RGV2aWNlKCksIGltYWdlLCBudWxscHRy
KTsKKyAgICAgICAgdmtGcmVlTWVtb3J5KGhlbHBlci5nZXREZXZpY2UoKSwgZGV2aWNlTWVtb3J5
LCBudWxscHRyKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgYWxsIGZvcm1hdCBjb21iaW5hdGlvbnMg
dXNlZCBieSBDaHJvbWUgaW1wb3J0IHN1Y2Nlc3NmdWxseSAoZnVjaHNpYSkuCitURVNUX1AoVnVs
a2FuRXh0ZXJuYWxJbWFnZVRlc3QsIFRleHR1cmVGb3JtYXRDb21wYXRDaHJvbWl1bVppcmNvbkhh
bmRsZSkKK3sKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUVuc3VyZUdMRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfQU5HTEVfbWVtb3J5X29iamVjdF9mdWNoc2lhIikpOworICAgIC8vIGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vNDA5MgorICAgIEFOR0xFX1NLSVBfVEVTVF9JRihpc1N3aWZ0c2hhZGVyKCkpOwor
CisgICAgVnVsa2FuRXh0ZXJuYWxIZWxwZXIgaGVscGVyOworICAgIGhlbHBlci5pbml0aWFsaXpl
KCk7CisgICAgZm9yIChjb25zdCBJbWFnZUZvcm1hdFBhaXIgJmZvcm1hdCA6IGtDaHJvbWVGb3Jt
YXRzKQorICAgIHsKKyAgICAgICAgaWYgKCFoZWxwZXIuY2FuQ3JlYXRlSW1hZ2VaaXJjb25WbW8o
Zm9ybWF0LnZrRm9ybWF0LCBWS19JTUFHRV9UWVBFXzJELAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19JTUFHRV9USUxJTkdfT1BUSU1BTCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvcm1h
dC5yZXF1aXJlZEV4dGVuc2lvbiAmJiAhSXNHTEV4dGVuc2lvbkVuYWJsZWQoZm9ybWF0LnJlcXVp
cmVkRXh0ZW5zaW9uKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBWa0ltYWdlIGltYWdlICAgICAgICAgICAgICAgICA9IFZLX05VTExfSEFO
RExFOworICAgICAgICBWa0RldmljZU1lbW9yeSBkZXZpY2VNZW1vcnkgICA9IFZLX05VTExfSEFO
RExFOworICAgICAgICBWa0RldmljZVNpemUgZGV2aWNlTWVtb3J5U2l6ZSA9IDA7CisKKyAgICAg
ICAgVmtFeHRlbnQzRCBleHRlbnQgPSB7MTEzLCAyMTEsIDF9OworICAgICAgICBWa1Jlc3VsdCBy
ZXN1bHQgICA9IGhlbHBlci5jcmVhdGVJbWFnZTJEWmlyY29uVm1vKGZvcm1hdC52a0Zvcm1hdCwg
ZXh0ZW50LCAmaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZkZXZpY2VNZW1vcnksICZkZXZpY2VNZW1vcnlTaXplKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHJlc3VsdCwgVktfU1VDQ0VTUyk7CisKKyAgICAgICAgenhfaGFuZGxlX3Qg
dm1vID0gWlhfSEFORExFX0lOVkFMSUQ7CisgICAgICAgIHJlc3VsdCAgICAgICAgICA9IGhlbHBl
ci5leHBvcnRNZW1vcnlaaXJjb25WbW8oZGV2aWNlTWVtb3J5LCAmdm1vKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHJlc3VsdCwgVktfU1VDQ0VTUyk7CisgICAgICAgIEVYUEVDVF9ORSh2bW8sIFpYX0hB
TkRMRV9JTlZBTElEKTsKKworICAgICAgICB7CisgICAgICAgICAgICBHTE1lbW9yeU9iamVjdCBt
ZW1vcnlPYmplY3Q7CisgICAgICAgICAgICBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xF
KG1lbW9yeU9iamVjdCwgZGV2aWNlTWVtb3J5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfSEFORExFX1RZUEVfWklSQ09OX1ZNT19BTkdMRSwgdm1v
KTsKKworICAgICAgICAgICAgR0xUZXh0dXJlIHRleHR1cmU7CisgICAgICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICAgICAgZ2xUZXhTdG9yYWdl
TWVtMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LmludGVybmFsRm9ybWF0LCBleHRlbnQu
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnQuaGVpZ2h0LCBt
ZW1vcnlPYmplY3QsIDApOworICAgICAgICB9CisKKyAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7CisKKyAgICAgICAgdmtEZXN0cm95SW1hZ2UoaGVscGVyLmdldERldmljZSgpLCBpbWFnZSwg
bnVsbHB0cik7CisgICAgICAgIHZrRnJlZU1lbW9yeShoZWxwZXIuZ2V0RGV2aWNlKCksIGRldmlj
ZU1lbW9yeSwgbnVsbHB0cik7CisgICAgfQorfQorCiAvLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hp
Y2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3Ig
dmVyc2lvbikgdGhlc2UKIC8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KIEFOR0xFX0lO
U1RBTlRJQVRFX1RFU1RfRVMyX0FORF9FUzMoVnVsa2FuRXh0ZXJuYWxJbWFnZVRlc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dlYkdM
Q29tcGF0aWJpbGl0eVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1dlYkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwCmluZGV4IDM5OTczYTk1ZmJjMTJk
NDUzMzljZThmOWZmNjFhMDZlZTc2ZTZiZDAuLmZkMjY1ZTU1NjlhOTgzNWJhNzZiODMyZTEyMjE1
ZDQ4YmI2YjEzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvV2ViR0xDb21wYXRpYmlsaXR5VGVzdC5jcHAK
QEAgLTIxNSwxOCArMjE1LDE5IEBAIHZvaWQgbWFpbigpCiAgICAgICAgICAgICAwLCAwLCBHTENv
bG9yMzJGKGZsb2F0RGF0YVswXSwgZmxvYXREYXRhWzFdLCBmbG9hdERhdGFbMl0sIGZsb2F0RGF0
YVszXSksIDEuMGYpOwogICAgIH0KIAotICAgIHZvaWQgVGVzdEV4dEZsb2F0QmxlbmQoYm9vbCBz
aG91bGRCbGVuZCkKKyAgICB2b2lkIFRlc3RFeHRGbG9hdEJsZW5kKEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0xlbnVtIHR5cGUsIGJvb2wgc2hvdWxkQmxlbmQpCiAgICAgewogICAgICAgICBjb25z
dGV4cHIgY2hhciBrVlNbXSA9CiAgICAgICAgICAgICBSIih2b2lkIG1haW4oKQogeworICAgIGds
X1BvaW50U2l6ZSA9IDEuMDsKICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMSk7CiB9
KSI7CiAKICAgICAgICAgY29uc3RleHByIGNoYXIga0ZTW10gPQogICAgICAgICAgICAgUiIodm9p
ZCBtYWluKCkKIHsKLSAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMC41LCAwLCAwLCAwKTsKIH0pIjsKIAogICAgICAgICBBTkdMRV9H
TF9QUk9HUkFNKHByb2dyYW0sIGtWUywga0ZTKTsKQEAgLTIzNCw3ICsyMzUsNyBAQCB2b2lkIG1h
aW4oKQogCiAgICAgICAgIEdMVGV4dHVyZSB0ZXh0dXJlOwogICAgICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQTMyRiwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfRkxPQVQsIG51bGxwdHIp
OworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxGb3JtYXQs
IDEsIDEsIDAsIEdMX1JHQkEsIHR5cGUsIG51bGxwdHIpOwogICAgICAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKIAogICAgICAgICBHTEZyYW1lYnVmZmVyIGZibzsKQEAgLTI0MiwyMCArMjQzLDM3
IEBAIHZvaWQgbWFpbigpCiAgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsK
ICAgICAgICAgQVNTRVJUX0VHTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwogCisgICAgICAgIGdsQ2xlYXJD
b2xvcigxLCAwLCAxLCAxKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
KyAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SMzJGX05FQVIoMCwgMCwgR0xDb2xvcjMyRigxLCAw
LCAxLCAxKSwgMC4wMDFmKTsKKwogICAgICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgICAg
ICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKICAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CiAKICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOworICAgICAgICBnbEJsZW5kRnVu
YyhHTF9DT05TVEFOVF9DT0xPUiwgR0xfWkVSTyk7CisgICAgICAgIGdsQmxlbmRDb2xvcigxMCwg
MSwgMSwgMSk7CisgICAgICAgIGdsVmlld3BvcnQoMCwgMCwgMSwgMSk7CiAgICAgICAgIGdsRHJh
d0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwotICAgICAgICBpZiAoc2hvdWxkQmxlbmQpCisgICAg
ICAgIGlmICghc2hvdWxkQmxlbmQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOworICAgICAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisgICAgICAgIGlmICghSXNPcGVuR0xFUygpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgICAgICAgICAgLy8gR0xFUyB0ZXN0IG1hY2hpbmVzIHdpbGwgbmVlZCBhIHdvcmth
cm91bmQuCisgICAgICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1IzMkZfTkVBUigwLCAwLCBHTENv
bG9yMzJGKDUsIDAsIDAsIDApLCAwLjAwMWYpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hl
Y2sgc3VyZSB0aGF0IG5vbi1mbG9hdCBhdHRhY2htZW50cyBjbGFtcCBCTEVORF9DT0xPUi4KKyAg
ICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgICAgICBnbERyYXdBcnJheXMo
R0xfUE9JTlRTLCAwLCAxKTsKKworICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigwLCAw
LCBHTENvbG9yKDB4ODAsIDAsIDAsIDApLCAxKTsKICAgICB9CiAKICAgICB2b2lkIFRlc3REaWZm
ZXJlbnRTdGVuY2lsTWFza0FuZFJlZihHTGVudW0gZXJySWZNaXNtYXRjaCk7CkBAIC0xOTE4LDYg
KzE5MzYsOTYgQEAgVEVTVF9QKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsIEJsZW5kV2l0aENvbnN0
YW50Q29sb3IpCiAgICAgICAgICAgICBDaGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0KTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGUgc2FtZSBzZW1hbnRpY3MgZm9yIGlu
ZGV4ZWQgYmxlbmRGdW5jCisgICAgaWYgKElzR0xFeHRlbnNpb25SZXF1ZXN0YWJsZSgiR0xfT0VT
X2RyYXdfYnVmZmVyc19pbmRleGVkIikpCisgICAgeworICAgICAgICBnbFJlcXVlc3RFeHRlbnNp
b25BTkdMRSgiR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIik7CisgICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgICAgICBFWFBFQ1RfVFJVRShJc0dMRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIikpOworCisgICAgICAgIGZvciAoR0xlbnVtIHNy
YyA6IHNyY0Z1bmMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoR0xlbnVtIGRzdCA6IGRz
dEZ1bmMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xCbGVuZEZ1bmNpT0VTKDAs
IHNyYywgZHN0KTsKKyAgICAgICAgICAgICAgICBDaGVja0JsZW5kRnVuY3Rpb25zKHNyYywgZHN0
KTsKKyAgICAgICAgICAgICAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUygwLCBzcmMsIGRzdCwg
R0xfT05FLCBHTF9PTkUpOworICAgICAgICAgICAgICAgIENoZWNrQmxlbmRGdW5jdGlvbnMoc3Jj
LCBkc3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvLyBUZXN0IGRy
YXcgc3RhdGUgdmFsaWRhdGlvbiBhbmQgaW52YWxpZGF0aW9uIHdydCBpbmRleGVkIGJsZW5kRnVu
Yy4KK1RFU1RfUChXZWJHTENvbXBhdGliaWxpdHlUZXN0LCBJbmRleGVkQmxlbmRXaXRoQ29uc3Rh
bnRDb2xvckludmFsaWRhdGlvbikKK3sKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKTsKKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUlzR0xFeHRlbnNp
b25SZXF1ZXN0YWJsZSgiR0xfT0VTX2RyYXdfYnVmZmVyc19pbmRleGVkIikpOworCisgICAgZ2xS
ZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCIpOworICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOworICAgIEVYUEVDVF9UUlVFKElzR0xFeHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQiKSk7CisKKyAgICBjb25zdGV4cHIgY2hh
ciBrVlNbXSA9CisgICAgICAgIFIiKCN2ZXJzaW9uIDMwMCBlcwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9Qb2ludFNpemUgPSAxLjA7CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDEp
OworfSkiOworCisgICAgY29uc3RleHByIGNoYXIga0ZTW10gPQorICAgICAgICBSIigjdmVyc2lv
biAzMDAgZXMKK3ByZWNpc2lvbiBsb3dwIGZsb2F0OworbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0
IHZlYzQgb19jb2xvcjA7CitsYXlvdXQobG9jYXRpb24gPSAxKSBvdXQgdmVjNCBvX2NvbG9yMTsK
K3ZvaWQgbWFpbigpCit7CisgICAgb19jb2xvcjAgPSB2ZWM0KDEsIDAsIDAsIDEpOworICAgIG9f
Y29sb3IxID0gdmVjNCgwLCAxLCAwLCAxKTsKK30pIjsKKworICAgIEFOR0xFX0dMX1BST0dSQU0o
cHJvZ3JhbSwga1ZTLCBrRlMpOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKworICAgIGds
RGlzYWJsZShHTF9CTEVORCk7CisgICAgZ2xFbmFibGVpT0VTKEdMX0JMRU5ELCAwKTsKKyAgICBn
bEVuYWJsZWlPRVMoR0xfQkxFTkQsIDEpOworCisgICAgR0xUZXh0dXJlIHRleHR1cmUxOworICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTEpOworICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEdMVGV4
dHVyZSB0ZXh0dXJlMjsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUy
KTsKKyAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7CisgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7CisKKyAgICBHTEZyYW1lYnVmZmVyIGZibzsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgZmJvKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTEsIDAp
OworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQxLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlMiwgMCk7CisgICAgQVNTRVJUX0dMRU5V
TV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSk7CisKKyAgICBHTGVudW0gZHJhd2J1ZmZlcnNbXSA9IHtHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfQ09MT1JfQVRUQUNITUVOVDF9OworICAgIGdsRHJhd0J1ZmZlcnMoMiwg
ZHJhd2J1ZmZlcnMpOworCisgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICAvLyBGb3JjZS1pbnZhbGlkYXRlIGRyYXcgY2Fs
bAorICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTKDAsIEdMX0NPTlNUQU5UX0NPTE9SLCBHTF9D
T05TVEFOVF9DT0xPUiwgR0xfQ09OU1RBTlRfQUxQSEEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09OU1RBTlRfQUxQSEEpOworICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOworCisg
ICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlPRVMoMSwgR0xfQ09OU1RBTlRfQUxQSEEsIEdMX0NPTlNU
QU5UX0FMUEhBLCBHTF9DT05TVEFOVF9DT0xPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT05TVEFOVF9DT0xPUik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBn
bERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKKyAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCiAvLyBUZXN0IHRoYXQgYmluZGluZy9xdWVyeWluZyB1bmlm
b3JtcyBhbmQgYXR0cmlidXRlcyB3aXRoIGludmFsaWQgbmFtZXMgZ2VuZXJhdGVzIGVycm9ycwpA
QCAtMzEzMywyNyArMzI0MSw4MSBAQCB2b2lkIG1haW4oKQogICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwogfQogCitzdGF0aWMgdm9pZCBUZXN0QmxlbmRDb2xvcihjb25zdCBib29sIHNob3VsZENs
YW1wKQoreworICAgIGF1dG8gZXhwZWN0ZWQgPSBHTENvbG9yMzJGKDUsIDAsIDAsIDApOworICAg
IGdsQmxlbmRDb2xvcihleHBlY3RlZC5SLCBleHBlY3RlZC5HLCBleHBlY3RlZC5CLCBleHBlY3Rl
ZC5BKTsKKyAgICBpZiAoc2hvdWxkQ2xhbXApCisgICAgeworICAgICAgICBleHBlY3RlZC5SID0g
MTsKKyAgICB9CisKKyAgICBmbG9hdCBhcnJbNF0gPSB7fTsKKyAgICBnbEdldEZsb2F0dihHTF9C
TEVORF9DT0xPUiwgYXJyKTsKKyAgICBjb25zdCBhdXRvIGFjdHVhbCA9IEdMQ29sb3IzMkYoYXJy
WzBdLCBhcnJbMV0sIGFyclsyXSwgYXJyWzNdKTsKKyAgICBFWFBFQ1RfQ09MT1JfTkVBUihleHBl
Y3RlZCwgYWN0dWFsLCAwLjAwMSk7Cit9CisKIC8vIFRlc3QgaWYgYmxlbmRpbmcgb2YgZmxvYXQz
MiBjb2xvciBhdHRhY2htZW50IGdlbmVyYXRlcyBHTF9JTlZBTElEX09QRVJBVElPTiB3aGVuCiAv
LyBHTF9FWFRfZmxvYXRfYmxlbmQgaXMgbm90IGVuYWJsZWQKIFRFU1RfUChXZWJHTENvbXBhdGli
aWxpdHlUZXN0LCBGbG9hdEJsZW5kKQogewotICAgIEFOR0xFX1NLSVBfVEVTVF9JRighSXNHTEV4
dGVuc2lvblJlcXVlc3RhYmxlKCJHTF9FWFRfZmxvYXRfYmxlbmQiKSk7CiAgICAgaWYgKGdldENs
aWVudE1ham9yVmVyc2lvbigpID49IDMpCiAgICAgeworICAgICAgICBUZXN0QmxlbmRDb2xvcihm
YWxzZSk7CiAgICAgICAgIEFOR0xFX1NLSVBfVEVTVF9JRighRW5zdXJlR0xFeHRlbnNpb25FbmFi
bGVkKCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpOwogICAgIH0KICAgICBlbHNlCiAgICAg
eworICAgICAgICBUZXN0QmxlbmRDb2xvcih0cnVlKTsKICAgICAgICAgQU5HTEVfU0tJUF9URVNU
X0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpOwog
ICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUVuc3VyZUdMRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
Q0hST01JVU1fY29sb3JfYnVmZmVyX2Zsb2F0X3JnYmEiKSk7CiAgICAgfQogCi0gICAgVGVzdEV4
dEZsb2F0QmxlbmQoZmFsc2UpOworICAgIFRlc3RCbGVuZENvbG9yKGZhbHNlKTsKKworICAgIC8v
IC0KIAotICAgIGdsUmVxdWVzdEV4dGVuc2lvbkFOR0xFKCJHTF9FWFRfZmxvYXRfYmxlbmQiKTsK
KyAgICBUZXN0RXh0RmxvYXRCbGVuZChHTF9SR0JBMzJGLCBHTF9GTE9BVCwgZmFsc2UpOworCisg
ICAgQU5HTEVfU0tJUF9URVNUX0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9m
bG9hdF9ibGVuZCIpKTsKICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKIAotICAgIFRlc3RFeHRG
bG9hdEJsZW5kKHRydWUpOworICAgIC8vIEQzRDkgc3VwcG9ydHMgZmxvYXQgcmVuZGVyaW5nIGV4
cGxpY2l0bHksIHN1cHBvcnRzIGJsZW5kaW5nIG9wZXJhdGlvbnMgaW4gcHJhY3RpY2UsCisgICAg
Ly8gYnV0IGNhbm5vdCBzdXBwb3J0IGZsb2F0IGJsZW5kIGNvbG9ycy4KKyAgICBBTkdMRV9TS0lQ
X1RFU1RfSUYoSXNEM0Q5KCkpOworCisgICAgVGVzdEV4dEZsb2F0QmxlbmQoR0xfUkdCQTMyRiwg
R0xfRkxPQVQsIHRydWUpOworfQorCisvLyBUZXN0IHRoZSBibGVuZGluZyBvZiBmbG9hdDE2IGNv
bG9yIGF0dGFjaG1lbnRzCitURVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5VGVzdCwgSGFsZkZsb2F0
QmxlbmQpCit7CisgICAgR0xlbnVtIGludGVybmFsRm9ybWF0ID0gR0xfUkdCQTE2RjsKKyAgICBH
TGVudW0gdHlwZSAgICAgICAgICAgPSBHTF9GTE9BVDsKKyAgICBpZiAoZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPj0gMykKKyAgICB7CisgICAgICAgIFRlc3RCbGVuZENvbG9yKGZhbHNlKTsKKyAg
ICAgICAgQU5HTEVfU0tJUF9URVNUX0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF9jb2xvcl9idWZmZXJfZmxvYXQiKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IFRlc3RCbGVuZENvbG9yKHRydWUpOworICAgICAgICBBTkdMRV9TS0lQX1RFU1RfSUYoIUVuc3Vy
ZUdMRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKTsKKyAgICAg
ICAgQU5HTEVfU0tJUF9URVNUX0lGKCFFbnN1cmVHTEV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9j
b2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpKTsKKyAgICAgICAgaW50ZXJuYWxGb3JtYXQgPSBHTF9S
R0JBOworICAgICAgICB0eXBlICAgICAgICAgICA9IEdMX0hBTEZfRkxPQVRfT0VTOworICAgIH0K
KworICAgIFRlc3RCbGVuZENvbG9yKGZhbHNlKTsKKworICAgIC8vIC0KKworICAgIC8vIEQzRDkg
c3VwcG9ydHMgZmxvYXQgcmVuZGVyaW5nIGV4cGxpY2l0bHksIHN1cHBvcnRzIGJsZW5kaW5nIG9w
ZXJhdGlvbnMgaW4gcHJhY3RpY2UsCisgICAgLy8gYnV0IGNhbm5vdCBzdXBwb3J0IGZsb2F0IGJs
ZW5kIGNvbG9ycy4KKyAgICBBTkdMRV9TS0lQX1RFU1RfSUYoSXNEM0Q5KCkpOworCisgICAgVGVz
dEV4dEZsb2F0QmxlbmQoaW50ZXJuYWxGb3JtYXQsIHR5cGUsIHRydWUpOwogfQogCiBURVNUX1Ao
V2ViR0xDb21wYXRpYmlsaXR5VGVzdCwgUjE2RlRleHR1cmVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL0Jhc2ljRHJhd1Rlc3Qu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL0Jh
c2ljRHJhd1Rlc3QuY3BwCmluZGV4IDUwOWIyM2JiOWUzYzFmNWU1MTU1ZDNmNmM1NWRjM2VhYWJi
NDU2OGQuLmVkZjJjMGZkNzViYjIwYTI1ZDg5OGE1YjIzZDlhNTFkNmE4OTRkNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9nbGVzMS9CYXNp
Y0RyYXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvZ2xlczEvQmFzaWNEcmF3VGVzdC5jcHAKQEAgLTgwLDQgKzgwLDc5IEBAIFRFU1RfUChC
YXNpY0RyYXdUZXN0LCBFbmFibGVEaXNhYmxlVGV4dHVyZSkKICAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwogfQogCisvLyBDaGVjayB0aGF0IGdsQ2xlYXJD
b2xvcngsIGdsQ2xlYXJEZXB0aHgsIGdsTGluZVdpZHRoeCwgZ2xQb2x5Z29uT2Zmc2V0eCBjYW4g
d29yay4KK1RFU1RfUChCYXNpY0RyYXdUZXN0LCBEZXB0aFRlc3QpCit7CisgICAgZ2xDbGVhckNv
bG9yeCgweDQwMDAsIDB4ODAwMCwgMHg4MDAwLCAweDgwMDApOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworICAgIGdsQ2xlYXJEZXB0aHgoMHg4MDAwKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKKworICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZF
Ul9CSVQpOworICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDY0LCAxMjgsIDEyOCwgMTI4LCAx
LjApOworCisgICAgLy8gRmFpbCBEZXB0aCBUZXN0IGFuZCBjYW4ndCBkcmF3IHRoZSByZWQgdHJp
YW5nbGUKKyAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gUG9zaXRpb25zID0gey0xLjBmLCAtMS4wZiwg
MS4wZiwgMS4wZiwgLTEuMGYsIDEuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OworICAgIGdsRW5hYmxl
KEdMX0RFUFRIX1RFU1QpOworCisgICAgZ2xMaW5lV2lkdGh4KDB4MTAwMDApOworICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOworICAgIGdsUG9seWdvbk9mZnNldHgoMCwgMCk7CisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisKKyAgICBnbENvbG9yNGYoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7
CisgICAgZ2xFbmFibGVDbGllbnRTdGF0ZShHTF9WRVJURVhfQVJSQVkpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIGdsVmVydGV4UG9pbnRlcigzLCBHTF9GTE9BVCwgMCwgUG9zaXRp
b25zLmRhdGEoKSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xEcmF3QXJyYXlz
KEdMX1RSSUFOR0xFUywgMCwgMyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQ
RUNUX1BJWEVMX05FQVIoMCwgMCwgNjQsIDEyOCwgMTI4LCAxMjgsIDEuMCk7CisKKyAgICBnbERp
c2FibGUoR0xfREVQVEhfVEVTVCk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
CisgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Cit9CisKKy8v
IENoZWNrIHRoYXQgZGVwdGggcmFuZ2UgY2FuIGJlIHNldCBieSBnbERlcHRoUmFuZ2V4LgorVEVT
VF9QKEJhc2ljRHJhd1Rlc3QsIFNldERlcHRoUmFuZ2V4KQoreworICAgIGdsRGVwdGhSYW5nZXgo
MHg4MDAwLCAweDEwMDAwKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIEdMZml4
ZWQgZGVwdGhfcmFuZ2VbMl07CisgICAgZ2xHZXRGaXhlZHYoR0xfREVQVEhfUkFOR0UsIGRlcHRo
X3JhbmdlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoMHg4MDAw
LCBkZXB0aF9yYW5nZVswXSk7CisgICAgRVhQRUNUX0VRKDB4MTAwMDAsIGRlcHRoX3JhbmdlWzFd
KTsKK30KKworLy8gQ2hlY2sgdGhhdCBzYW1wbGUgY292ZXJhZ2UgcGFyYW1ldGVycyBjYW4gYmUg
c2V0IGJ5IGdsU2FtcGxlQ292ZXJhZ2V4LgorVEVTVF9QKEJhc2ljRHJhd1Rlc3QsIFNldFNhbXBs
ZUNvdmVyYWdleCkKK3sKKyAgICBHTGZpeGVkIGlzU2FtcGxlQ292ZXJhZ2U7CisgICAgR0xmaXhl
ZCBzYW1wbGVjb3ZlcmFnZXZhbHVlOworICAgIEdMZml4ZWQgc2FtcGxlY292ZXJhZ2VpbnZlcnQ7
CisKKyAgICBnbEVuYWJsZShHTF9TQU1QTEVfQ09WRVJBR0UpOworICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOworCisgICAgZ2xHZXRGaXhlZHYoR0xfU0FNUExFX0NPVkVSQUdFLCAmaXNTYW1wbGVD
b3ZlcmFnZSk7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0VRKDB4MTAw
MDAsIGlzU2FtcGxlQ292ZXJhZ2UpOworCisgICAgZ2xTYW1wbGVDb3ZlcmFnZXgoMHg4MDAwLCB0
cnVlKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsR2V0Rml4ZWR2KEdMX1NB
TVBMRV9DT1ZFUkFHRV9WQUxVRSwgJnNhbXBsZWNvdmVyYWdldmFsdWUpOworICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOworICAgIEVYUEVDVF9FUSgweDgwMDAsIHNhbXBsZWNvdmVyYWdldmFsdWUp
OworCisgICAgZ2xHZXRGaXhlZHYoR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVCwgJnNhbXBsZWNv
dmVyYWdlaW52ZXJ0KTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEo
MHgxMDAwMCwgc2FtcGxlY292ZXJhZ2VpbnZlcnQpOworfQorCiBBTkdMRV9JTlNUQU5USUFURV9U
RVNUX0VTMShCYXNpY0RyYXdUZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9nbGVzMS9Cb290QW5pbWF0aW9uVGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvQm9vdEFuaW1hdGlv
blRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjOWVlMjEyZWYxZTc1YTgxMmI5Y2U2MDU5ZTc4ZmYwOGE4
NzJmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvZ2xlczEvQm9vdEFuaW1hdGlvblRlc3QuY3BwCkBAIC0wLDAgKzEsMjU3IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMjAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBCb290QW5pbWF0aW9uVGVzdC5jcHA6IFRlc3RzIHRoYXQgbWFrZSB0
aGUgc2FtZSBnbCBjYWxscyBhcyBBbmRyb2lkJ3MgYm9vdCBhbmltYXRpb25zCisKKyNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5o
IgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAidXRpbC90ZXN0X3V0aWxz
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworLy8gTWFrZXMgdGhlIHNhbWUgR0xFUyAx
IGNhbGxzIGFzIEFuZHJvaWQncyBkZWZhdWx0IGJvb3QgYW5pbWF0aW9uCisvLyBUaGUgb3JpZ2lu
YWwgYW5pbWF0aW9uIHVzZXMgMiBkaWZmZXJlbnQgaW1hZ2VzIC0KKy8vIE9uZSBpbWFnZSBhY3Rz
IGFzIGEgbWFzayBhbmQgb25lIHRoYXQgbW92ZXMoYSBncmFkaWVudCB0aGF0IGFjdHMgYXMgYSBz
aGluaW5nIGxpZ2h0KQorLy8gV2UgZG8gdGhlIHNhbWUgaGVyZSBleGNlcHQgd2l0aCBkaWZmZXJl
bnQgaW1hZ2VzIG9mIG11Y2ggc21hbGxlciByZXNvbHV0aW9uCisvLyBUaGUgcmVzdWx0cyBvZiBl
YWNoIGZyYW1lIG9mIHRoZSBhbmltYXRpb24gYXJlIGNvbXBhcmVkIGFnYWluc3QgZXhwZWN0ZWQg
dmFsdWVzCisvLyBUaGUgb3JpZ2luYWwgc291cmNlIG9mIHRoZSBib290IGFuaW1hdGlvbiBjYW4g
YmUgZm91bmQgaGVyZToKKy8vIGh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRm
b3JtL2ZyYW1ld29ya3MvYmFzZS8rL3JlZnMvaGVhZHMvbWFzdGVyL2NtZHMvYm9vdGFuaW1hdGlv
bi9Cb290QW5pbWF0aW9uLmNwcCM0MjIKK2NsYXNzIEJvb3RBbmltYXRpb25UZXN0IDogcHVibGlj
IEFOR0xFVGVzdAoreworICBwcm90ZWN0ZWQ6CisgICAgQm9vdEFuaW1hdGlvblRlc3QoKQorICAg
IHsKKyAgICAgICAgc2V0V2luZG93V2lkdGgoa1dpbmRvd1dpZHRoKTsKKyAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KGtXaW5kb3dIZWlnaHQpOworICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwor
ICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7CisgICAgICAgIHNldENvbmZpZ0JsdWVCaXRz
KDgpOworICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7CisgICAgfQorCisgICAgdm9pZCBp
bml0VGV4dHVyZVdpdGhEYXRhKEdMdWludCAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNoYW5uZWxzKQorICAg
IHsKKyAgICAgICAgR0xpbnQgY3JvcFs0XSA9IHswLCBoZWlnaHQsIHdpZHRoLCAtaGVpZ2h0fTsK
KworICAgICAgICBnbEdlblRleHR1cmVzKDEsIHRleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsICp0ZXh0dXJlKTsKKworICAgICAgICBzd2l0Y2ggKGNoYW5uZWxz
KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQiwgd2lkdGgsIGhlaWdodCwgMCwgR0xfUkdC
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwg
ZGF0YSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHdpZHRo
LCBoZWlnaHQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpdihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0NST1BfUkVD
VF9PRVMsIGNyb3ApOworICAgICAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAg
ICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xf
UkVQRUFUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9ULCBHTF9SRVBFQVQpOworICAgIH0KKworICAgIHZvaWQgdGVzdFNldFVwKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7
CisgICAgICAgIG1EaXNwbGF5ICAgICAgICAgID0gd2luZG93LT5nZXREaXNwbGF5KCk7CisgICAg
ICAgIG1TdXJmYWNlICAgICAgICAgID0gd2luZG93LT5nZXRTdXJmYWNlKCk7CisKKyAgICAgICAg
LyoqCisgICAgICAgICAqIFRoZSBtYXNrIGlzIGEgNCBieSAxIHRleHR1cmUgY29sb3JlZDoKKyAg
ICAgICAgICogLS0tIC0tLSAtLS0gLS0tCisgICAgICAgICAqIHxCfCB8QXwgfEJ8IHxBfAorICAg
ICAgICAgKiAtLS0gLS0tIC0tLSAtLS0KKyAgICAgICAgICogQiBpcyBibGFjaywgQSBpcyBibGFj
ayB3aXRoIGFscGhhIG9mIDB4RkYKKyAgICAgICAgICovCisgICAgICAgIGNvbnN0ZXhwciBHTHVi
eXRlIGtNYXNrW10gPSB7CisgICAgICAgICAgICAweDAsIDB4MCwgMHgwLCAweGZmLCAgLy8gYmxh
Y2sKKyAgICAgICAgICAgIDB4MCwgMHgwLCAweDAsIDB4MCwgICAvLyB0cmFuc3BhcmVudCBibGFj
aworICAgICAgICAgICAgMHgwLCAweDAsIDB4MCwgMHhmZiwgIC8vIGJsYWNrCisgICAgICAgICAg
ICAweDAsIDB4MCwgMHgwLCAweDAgICAgLy8gdHJhbnNwYXJlbnQgYmxhY2sKKyAgICAgICAgfTsK
KyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBzaGluZSBpcyBhIDggYnkgMSB0ZXh0dXJlIGNv
bG9yZWQ6CisgICAgICAgICAqIC0tLSAtLS0gLS0tIC0tLSAtLS0gLS0tIC0tLSAtLS0KKyAgICAg
ICAgICogfFJ8IHxSfCB8R3wgfEd8IHxCfCB8QnwgfFd8IHxXfAorICAgICAgICAgKiAtLS0gLS0t
IC0tLSAtLS0gLS0tIC0tLSAtLS0gLS0tCisgICAgICAgICAqIFIgaXMgcmVkLCBHIGlzIGdyZWVu
LCBCIGlzIGJsdWUsIFcgaXMgd2hpdGUKKyAgICAgICAgICovCisgICAgICAgIGNvbnN0ZXhwciBH
THVzaG9ydCBrU2hpbmVbXSA9IHsweEY4MDAsICAvLyAyIHJlZCBwaXhlbHMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RjgwMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDdFMCwgIC8vIDIgZ3JlZW4gcGl4ZWxzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA3RTAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDAwMUYsICAvLyAyIGJsdWUgcGl4ZWxzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMUYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweEZGRkYsICAvLyAyIHdoaXRlIHBpeGVscworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGfTsKKworICAgICAgICBjb25zdGV4
cHIgdW5zaWduZWQgaW50IGtNYXNrQ29sb3JDaGFubmVscyAgPSA0OworICAgICAgICBjb25zdGV4
cHIgdW5zaWduZWQgaW50IGtTaGluZUNvbG9yQ2hhbm5lbHMgPSAzOworCisgICAgICAgIGluaXRU
ZXh0dXJlV2l0aERhdGEoJm1UZXh0dXJlTmFtZXNbMF0sIGtNYXNrLCBrTWFza1dpZHRoLCBrTWFz
a0hlaWdodCwga01hc2tDb2xvckNoYW5uZWxzKTsKKyAgICAgICAgaW5pdFRleHR1cmVXaXRoRGF0
YSgmbVRleHR1cmVOYW1lc1sxXSwga1NoaW5lLCBrU2hpbmVXaWR0aCwga1NoaW5lSGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtTaGluZUNvbG9yQ2hhbm5lbHMpOworCisgICAg
ICAgIC8vIGNsZWFyIHNjcmVlbgorICAgICAgICBnbFNoYWRlTW9kZWwoR0xfRkxBVCk7CisgICAg
ICAgIGdsRGlzYWJsZShHTF9ESVRIRVIpOworICAgICAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9U
RVNUKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDEsIDEsIDEpOworICAgICAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwg
bVN1cmZhY2UpOworICAgICAgICBnbEVuYWJsZShHTF9URVhUVVJFXzJEKTsKKyAgICAgICAgZ2xU
ZXhFbnZ4KEdMX1RFWFRVUkVfRU5WLCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9SRVBMQUNFKTsK
KworICAgICAgICBnbFNjaXNzb3Ioa01hc2tCb3VuZGFyeUxlZnQsIGtNYXNrQm91bmRhcnlCb3R0
b20sIGtNYXNrV2lkdGgsIGtNYXNrSGVpZ2h0KTsKKworICAgICAgICAvLyBCbGVuZCBzdGF0ZQor
ICAgICAgICBnbEJsZW5kRnVuYyhHTF9TUkNfQUxQSEEsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEp
OworICAgICAgICBnbFRleEVudngoR0xfVEVYVFVSRV9FTlYsIEdMX1RFWFRVUkVfRU5WX01PREUs
IEdMX1JFUExBQ0UpOworICAgIH0KKworICAgIHZvaWQgdGVzdFRlYXJEb3duKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlTmFtZXNbMF0pOwor
ICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZU5hbWVzWzFdKTsKKyAgICB9CisK
KyAgICB2b2lkIGNoZWNrTWFza0NvbG9yKHVuc2lnbmVkIGludCBpdGVyYXRpb25Db3VudCwgdW5z
aWduZWQgaW50IG1hc2tTbG90KQorICAgIHsKKyAgICAgICAgLy8ga09mZnNldCBpcyBuZWNlc3Nh
cnkgYXMgdGhlIHZpc2libGUgcGFydCBpcyB0aGUgbGVmdCBtb3N0IHNlY3Rpb24gb2YgdGhlIHNo
aW5lCisgICAgICAgIC8vIGJ1dCB0aGVuIHdlIHNoaWZ0IHRoZSBpbWFnZXMgcmlnaHQKKyAgICAg
ICAgY29uc3RleHByIHVuc2lnbmVkIGludCBrT2Zmc2V0ID0gNzsKKworICAgICAgICAvLyB0aGlz
IHNvbHZlcyBmb3IgdGhlIGNvbG9yIGF0IGFueSBnaXZlbiBwb3NpdGlvbiBpbiBvdXIgc2hpbmUg
ZXF1aXZhbGVudAorICAgICAgICBjb25zdGV4cHIgdW5zaWduZWQgaW50IGtQb3NzaWJsZUNvbG9y
cyA9IDQ7CisgICAgICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQga0NvbG9yc0luQVJvdyAgID0g
MjsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvbG9yID0KKyAgICAgICAgICAgICgoaXRlcmF0aW9u
Q291bnQgLSBtYXNrU2xvdCArIGtPZmZzZXQpIC8ga0NvbG9yc0luQVJvdykgJSBrUG9zc2libGVD
b2xvcnM7CisgICAgICAgIHN3aXRjaCAoY29sb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNh
c2UgMDogIC8vIHdoaXRlCisgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKGtNYXNrQm91
bmRhcnlMZWZ0ICsgbWFza1Nsb3QsIGtNYXNrQm91bmRhcnlCb3R0b20sIDB4RkYsIDB4RkYsIDB4
RkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOiAgLy8gYmx1ZQorICAgICAgICAgICAgICAg
IEVYUEVDVF9QSVhFTF9FUShrTWFza0JvdW5kYXJ5TGVmdCArIG1hc2tTbG90LCBrTWFza0JvdW5k
YXJ5Qm90dG9tLCAweDAwLCAweDAwLCAweEZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweEZGKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjog
IC8vIGdyZWVuCisgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKGtNYXNrQm91bmRhcnlM
ZWZ0ICsgbWFza1Nsb3QsIGtNYXNrQm91bmRhcnlCb3R0b20sIDB4MDAsIDB4RkYsIDB4MDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAzOiAgLy8gcmVkCisgICAgICAgICAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKGtNYXNrQm91bmRhcnlMZWZ0ICsgbWFza1Nsb3QsIGtNYXNrQm91bmRhcnlCb3R0
b20sIDB4RkYsIDB4MDAsIDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
RkYpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBj
aGVja0NsZWFyQ29sb3IoKQorICAgIHsKKyAgICAgICAgLy8gQXJlYXMgb3V0c2lkZSBvZiB0aGUg
NHgxIG1hc2sgYXJlYSBzaG91bGQgYmUgdGhlIGNsZWFyIGNvbG9yIGR1ZSB0byBvdXIgZ2xTY2lz
c29yIGNhbGwKKyAgICAgICAgY29uc3RleHByIHVuc2lnbmVkIGludCBrSW1hZ2VIZWlnaHQgPSAx
OworICAgICAgICBFWFBFQ1RfUElYRUxfUkVDVF9FUSgwLCAwLCBrV2luZG93V2lkdGgsIGtNYXNr
Qm91bmRhcnlCb3R0b20sIEdMQ29sb3I6OmN5YW4pOworICAgICAgICBFWFBFQ1RfUElYRUxfUkVD
VF9FUSgwLCBrTWFza0JvdW5kYXJ5Qm90dG9tICsga0ltYWdlSGVpZ2h0LCBrV2luZG93V2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrV2luZG93SGVpZ2h0IC0gKGtNYXNrQm91
bmRhcnlCb3R0b20gKyBrSW1hZ2VIZWlnaHQpKSwgR0xDb2xvcjo6Y3lhbik7CisgICAgICAgIEVY
UEVDVF9QSVhFTF9SRUNUX0VRKDAsIGtNYXNrQm91bmRhcnlCb3R0b20sIGtNYXNrQm91bmRhcnlM
ZWZ0LCBrSW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMQ29sb3I6
OmN5YW4pOworICAgICAgICBFWFBFQ1RfUElYRUxfUkVDVF9FUShrTWFza0JvdW5kYXJ5TGVmdCAr
IGtNYXNrV2lkdGgsIGtNYXNrQm91bmRhcnlCb3R0b20sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChrV2luZG93V2lkdGggLSAoa01hc2tCb3VuZGFyeUxlZnQgKyBrTWFza1dpZHRoKSks
IGtJbWFnZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xDb2xvcjo6Y3lh
bik7CisgICAgfQorCisgICAgdm9pZCB2YWxpZGF0ZUNvbG9ycyh1bnNpZ25lZCBpbnQgaXRlcmF0
aW9uQ291bnQpCisgICAgeworICAgICAgICAvLyB2YWxpZGF0ZSBhbGwgc2xvdHMgaW4gb3VyIG1h
c2sKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgbWFza1Nsb3QgPSAwOyBtYXNrU2xvdCA8IGtN
YXNrV2lkdGg7ICsrbWFza1Nsb3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHBhcnRzIHRo
YXQgYXJlIGJsb2NrZWQgaW4gb3VyIG1hc2sgYXJlIGJsYWNrCisgICAgICAgICAgICBzd2l0Y2gg
KG1hc2tTbG90KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Uga0JsYWNrTWFz
a1swXToKKyAgICAgICAgICAgICAgICBjYXNlIGtCbGFja01hc2tbMV06CisgICAgICAgICAgICAg
ICAgICAgIC8vIHNsb3RzIHdpdGggbm9uIHplcm8gYWxwaGEgYXJlIGJsYWNrCisgICAgICAgICAg
ICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUShrTWFza0JvdW5kYXJ5TGVmdCArIG1hc2tTbG90LCBr
TWFza0JvdW5kYXJ5Qm90dG9tLCAweDAwLCAweDAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwMCwgMHhGRik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTWFza0Nv
bG9yKGl0ZXJhdGlvbkNvdW50LCBtYXNrU2xvdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgLy8gdmFsaWRhdGUgc3Vycm91bmRpbmcgcGl4ZWxzIGFyZSBlcXVhbCB0byBjbGVh
ciBjb2xvcgorICAgICAgICBjaGVja0NsZWFyQ29sb3IoKTsKKyAgICB9CisKKyAgICBFR0xEaXNw
bGF5IG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CisgICAgRUdMU3VyZmFjZSBtU3VyZmFjZSA9
IEVHTF9OT19TVVJGQUNFOworICAgIEdMdWludCBtVGV4dHVyZU5hbWVzWzJdOworICAgIC8vIFRo
aXMgY3JlYXRlcyBhIGtXaW5kb3dXaWR0aCB4IGtXaW5kb3dIZWlnaHQgd2luZG93LgorICAgIC8v
IEEga01hc2tXaWR0aCBieSBrTWFza0hlaWdodCByZWN0YW5nbGUgaXMgbGl0IHVwIGJ5IHRoZSBz
aGluZQorICAgIC8vIFRoaXMgbGl0IHVwIHJlY3RhbmdsZSBpcyBwb3NpdGlvbmVkIGF0IChrTWFz
a0JvdW5kYXJ5TGVmdCwga01hc2tCb3VuZGFyeUJvdHRvbSkKKyAgICAvLyBUaGUgYm9yZGVyIGFy
b3VuZCB0aGUgYXJlYSBpcyBjbGVhcmVkIHRvIEdMQ29sb3I6OmN5YW4KKyAgICBzdGF0aWMgY29u
c3RleHByIEdMaW50IGtNYXNrQm91bmRhcnlMZWZ0ICAgID0gMTU7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHTGludCBrTWFza0JvdW5kYXJ5Qm90dG9tICA9IDc7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBpbnQga01hc2tXaWR0aCAgICA9IDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBpbnQga01hc2tIZWlnaHQgICA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBpbnQga1NoaW5lV2lkdGggICA9IDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBpbnQga1NoaW5lSGVpZ2h0ICA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBp
bnQga1dpbmRvd0hlaWdodCA9IDE2OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaW50
IGtXaW5kb3dXaWR0aCAgPSAzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGludCBr
QmxhY2tNYXNrWzJdID0gezAsIDJ9OworfTsKKworVEVTVF9QKEJvb3RBbmltYXRpb25UZXN0LCBE
ZWZhdWx0Qm9vdEFuaW1hdGlvbikKK3sKKyAgICBjb25zdGV4cHIgdWludDY0X3Qga01heEl0ZXJh
dGlvbkNvdW50ID0gODsgIC8vIG51bWJlciBvZiB0aW1lcyB3ZSBzaGlmdCB0aGUgc2hpbmUgdGV4
dHVyZXMKKyAgICBjb25zdGV4cHIgaW50IGtTdGFydGluZ1NoaW5lUG9zaXRpb24gID0ga01hc2tC
b3VuZGFyeUxlZnQgLSBrU2hpbmVXaWR0aDsKKyAgICBjb25zdGV4cHIgaW50IGtFbmRpbmdTaGlu
ZVBvc2l0aW9uICAgID0ga01hc2tCb3VuZGFyeUxlZnQ7CisgICAgR0xpbnQgeCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGtTdGFydGluZ1NoaW5lUG9zaXRpb247CisgICAgdWludDY0
X3QgaXRlcmF0aW9uQ291bnQgICAgICAgICAgICAgICA9IDA7CisgICAgZG8KKyAgICB7CisgICAg
ICAgIGdsRGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOworICAgICAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOworICAgICAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOworICAgICAg
ICBnbERpc2FibGUoR0xfQkxFTkQpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlTmFtZXNbMV0pOworICAgICAgICBnbERyYXdUZXhpT0VTKHgsIGtNYXNrQm91
bmRhcnlCb3R0b20sIDAsIGtTaGluZVdpZHRoLCBrU2hpbmVIZWlnaHQpOworICAgICAgICBnbERy
YXdUZXhpT0VTKHggKyBrU2hpbmVXaWR0aCwga01hc2tCb3VuZGFyeUJvdHRvbSwgMCwga1NoaW5l
V2lkdGgsIGtTaGluZUhlaWdodCk7CisgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKKyAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZU5hbWVzWzBdKTsKKyAgICAg
ICAgZ2xEcmF3VGV4aU9FUyhrTWFza0JvdW5kYXJ5TGVmdCwga01hc2tCb3VuZGFyeUJvdHRvbSwg
MCwga01hc2tXaWR0aCwga01hc2tIZWlnaHQpOworICAgICAgICB2YWxpZGF0ZUNvbG9ycyhpdGVy
YXRpb25Db3VudCk7CisgICAgICAgIEVHTEJvb2xlYW4gcmVzID0gZWdsU3dhcEJ1ZmZlcnMobURp
c3BsYXksIG1TdXJmYWNlKTsKKyAgICAgICAgaWYgKHJlcyA9PSBFR0xfRkFMU0UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHggPT0ga0Vu
ZGluZ1NoaW5lUG9zaXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHggPSBrU3RhcnRpbmdT
aGluZVBvc2l0aW9uOworICAgICAgICB9CisgICAgICAgICsreDsKKyAgICAgICAgKytpdGVyYXRp
b25Db3VudDsKKyAgICB9IHdoaWxlIChpdGVyYXRpb25Db3VudCA8IGtNYXhJdGVyYXRpb25Db3Vu
dCk7Cit9CisKK0FOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMxKEJvb3RBbmltYXRpb25UZXN0KTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvTWF0cml4QnVpbHRpbnNUZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9nbGVzMS9NYXRyaXhC
dWlsdGluc1Rlc3QuY3BwCmluZGV4IGEwMzU3ZDdkYTQ0NTZlMGQ0NDg5ZThlN2YyNGIxNTgyZGEz
MzFmZDMuLjA3OTM1NWIyZGY0M2U2YmVmOTgwNjMxMDY3OTEyMzY2NDgyNWQyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9nbGVzMS9NYXRy
aXhCdWlsdGluc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9nbGVzMS9NYXRyaXhCdWlsdGluc1Rlc3QuY3BwCkBAIC0xNjUsMTIgKzE2NSwx
OSBAQCBURVNUX1AoTWF0cml4QnVpbHRpbnNUZXN0LCBPcnRob05lZ2F0aXZlKQogICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICBnbE9ydGhvZigwLjBmLCAxLjBmLCAw
LjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsKICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgZ2xPcnRob2YoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotICAgIGdsT3J0aG9mKDAu
MGYsIDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYsIDAuMGYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX1ZBTFVFKTsKLSAgICBnbE9ydGhvZigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmLCAt
MS4wZiwgMS4wZik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOworfQor
CisvLyBUZXN0IHRoYXQgZ2xPcnRob3tmeH0gZG9uJ3QgaXNzdWUgZXJyb3IgcmVzdWx0IGlmIG5l
YXIgb3IgZmFyIGlzIG5lZ2F0aXZlLgorVEVTVF9QKE1hdHJpeEJ1aWx0aW5zVGVzdCwgT3J0aG9O
ZWdhdGl2ZU5lYXJGYXIpCit7CisgICAgZ2xPcnRob2YoLTEuMGYsIDEuMGYsIC0xLjBmLCAxLjBm
LCAtMS4wZiwgMC4wZik7CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisgICAgZ2xPcnRob2Yo
LTEuMGYsIDEuMGYsIC0xLjBmLCAxLjBmLCAwLjBmLCAtMS4wZik7CisgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7CisgICAgZ2xPcnRob3goLTEsIDEsIC0xLCAxLCAtMSwgMCk7CisgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7CisgICAgZ2xPcnRob3goLTEsIDEsIC0xLCAxLCAwLCAtMSk7CisgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7CiB9CiAKIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfRVMxKE1h
dHJpeEJ1aWx0aW5zVGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvVGV4dHVyZVBhcmFtZXRlclRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL2dsZXMxL1RleHR1cmVQYXJhbWV0
ZXJUZXN0LmNwcAppbmRleCBjYzY2NmY5YzdkMDM0NTdhYzdiYmIxYmNjNmE0MDAwMzZkZTA5MTYz
Li45NGYxYmI4ZTY1MjhmOWUxZWE1MjUxZjk0NGU0MTliMDkxYzRjN2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvZ2xlczEvVGV4dHVyZVBh
cmFtZXRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9nbGVzMS9UZXh0dXJlUGFyYW1ldGVyVGVzdC5jcHAKQEAgLTExMSw0ICsxMTEsNTYg
QEAgVEVTVF9QKFRleHR1cmVQYXJhbWV0ZXJUZXN0LCBTZXQpCiAgICAgfQogfQogCisvLyBNYWtl
IHN1cmUgd2UgZG9uJ3QgaW1wcm9wZXJseSBjYXN0IGFuIGludCBpbnRvIGEgZmxvYXQgaW4gQU5H
TEUncyBpbnRlcm5hbHMKK1RFU1RfUChUZXh0dXJlUGFyYW1ldGVyVGVzdCwgSW50Q29udmVyc2lv
bnNBbmRJbnRCb3VuZHMpCit7CisgICAgLy8gVGVzdCBpbnRlZ2VycyB0aGF0IGNhbid0IGJlIHJl
cHJlc2VudGVkIGFzIGZsb2F0cywgSU5UX01JTiwgYW5kIElOVF9NQVgKKyAgICBjb25zdGV4cHIg
R0xpbnQga0ZpcnN0SW50VGhhdENhbm5vdEJlRmxvYXQgICAgICAgICA9IDE2Nzc3MjE3OworICAg
IGNvbnN0ZXhwciB1bnNpZ25lZCBpbnQga1BhcmFtZXRlckxlbmd0aCAgICAgICAgICAgID0gNDsK
KyAgICBjb25zdGV4cHIgc3RkOjphcnJheTxHTGludCwga1BhcmFtZXRlckxlbmd0aD4gY3JvcCA9
IHsKKyAgICAgICAgLWtGaXJzdEludFRoYXRDYW5ub3RCZUZsb2F0LCBrRmlyc3RJbnRUaGF0Q2Fu
bm90QmVGbG9hdCwgc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpLAorICAgICAgICBz
dGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWluKCl9OworICAgIGdsVGV4UGFyYW1ldGVyaXYo
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTLCBjcm9wLmRhdGEoKSk7Cisg
ICAgc3RkOjphcnJheTxHTGludCwga1BhcmFtZXRlckxlbmd0aD4gY3JvcFN0b3JlZCA9IHswfTsK
KyAgICBnbEdldFRleFBhcmFtZXRlcml2KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQ1JPUF9S
RUNUX09FUywgY3JvcFN0b3JlZC5kYXRhKCkpOworICAgIEFTU0VSVF9FUShjcm9wLCBjcm9wU3Rv
cmVkKTsKK30KKworLy8gQ2hlY2sgdGhhdCB0ZXh0dXJlIHBhcmFtZXRlcnMgY2FuIGJlIHNldCBi
eSBnbFRleFBhcmFtZXRlcngsIGdsVGV4UGFyYW1ldGVyeHYKKy8vIGFuZCBnZXQgYnkgZ2xHZXRU
ZXhQYXJhbWV0ZXJ4di4KK1RFU1RfUChUZXh0dXJlUGFyYW1ldGVyVGVzdCwgU2V0Rml4ZWRQb2lu
dCkKK3sKKyAgICBzdGQ6OmFycmF5PEdMZml4ZWQsIDQ+IHBhcmFtcyA9IHt9OworCisgICAgZ2xU
ZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX0dFTkVSQVRFX01JUE1BUCwgR0xfVFJVRSk7
CisgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEdldFRleFBhcmFtZXRlcnh2KEdM
X1RFWFRVUkVfMkQsIEdMX0dFTkVSQVRFX01JUE1BUCwgcGFyYW1zLmRhdGEoKSk7CisgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7CisgICAgRVhQRUNUX0dMX1RSVUUocGFyYW1zWzBdKTsKKworICAg
IHN0ZDo6YXJyYXk8R0xmaXhlZCwgND4gY3JvcFJlY3QgPSB7MHgxMDAwMCwgMHgxMDAwMCwgMHgy
MDAwMCwgMHgyMDAwMH07CisKKyAgICBnbFRleFBhcmFtZXRlcnh2KEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfQ1JPUF9SRUNUX09FUywgY3JvcFJlY3QuZGF0YSgpKTsKKyAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKKworICAgIGdsR2V0VGV4UGFyYW1ldGVyeHYoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9DUk9QX1JFQ1RfT0VTLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoY3JvcFJlY3QsIHBhcmFtcyk7CisKKyAgICBnbFRleFBh
cmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7Cisg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CisKKyAgICBnbEdldFRleFBhcmFtZXRlcnh2KEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBwYXJhbXMuZGF0YSgpKTsKKyAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoR0xfUkVQRUFULCBwYXJhbXNbMF0pOworCisg
ICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTElORUFSKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKworICAgIGdsR2V0VGV4UGFy
YW1ldGVyeHYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBwYXJhbXMuZGF0
YSgpKTsKKyAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKKyAgICBFWFBFQ1RfRVEoR0xfTElORUFS
LCBwYXJhbXNbMF0pOworfQorCiBBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMShUZXh0dXJlUGFy
YW1ldGVyVGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xlczFfY29uZm9ybWFuY2VfdGVzdHMvQ29uZm9ybWFuY2VUZXN0cy5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlczFfY29uZm9ybWFuY2VfdGVzdHMvQ29uZm9y
bWFuY2VUZXN0cy5jcHAKaW5kZXggMTJiM2UyODU4NDBlYmYyNTgwN2NhOWIyNjA4ZjQxMzZjMzZk
MmE1Ni4uMzUyNGU3NWIxZTZmMGM4YTlhOWVhMjQ2NzEzMjNhYTc2MmUwOTI0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXMxX2NvbmZvcm1hbmNlX3Rl
c3RzL0NvbmZvcm1hbmNlVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbGVzMV9jb25mb3JtYW5jZV90ZXN0cy9Db25mb3JtYW5jZVRlc3RzLmNwcApAQCAt
NTU4LDMgKzU1OCw2IEBAIFRFU1RfUChHTEVTMUNvbmZvcm1hbmNlVGVzdCwgTWF0cml4UGFsZXR0
ZSkKIAogQU5HTEVfSU5TVEFOVElBVEVfVEVTVChHTEVTMUNvbmZvcm1hbmNlVGVzdCwgRVMxX09Q
RU5HTCgpLCBFUzFfVlVMS0FOKCkpOwogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKy8vIEluY2x1
ZGVkIGhlcmUgdG8gZml4IGEgY29tcGlsZSBlcnJvciBkdWUgdG8gd2hpdGUgYm94IHRlc3RzIHVz
aW5nIGFuZ2xlX2VuZDJlbmRfdGVzdHNfbWFpbi4KK3ZvaWQgUmVnaXN0ZXJDb250ZXh0Q29tcGF0
aWJpbGl0eVRlc3RzKCkge30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZU
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FO
R0xFUGVyZlRlc3QuY3BwCmluZGV4IDIxODExNzU2NWIxYmIxNDAwNTg4NzQ2NzhlOTQ3YTM3YWJm
YmM1YTIuLjI0MjVlZjEwNjY2MmQ5MjdhMWJkNWUxOWI0NTJkZGFlYjZhOWNjOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVy
ZlRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL0FOR0xFUGVyZlRlc3QuY3BwCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAjaW5jbHVkZSAiY29tbW9u
L3N5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJ0aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L3Ry
YWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgiCiAjaW5jbHVkZSAidXRpbC9zaGFkZXJfdXRpbHMuaCIK
QEAgLTExNSwxMCArMTE2LDcgQEAgdm9pZCBVcGRhdGVUcmFjZUV2ZW50RHVyYXRpb24oYW5nbGU6
OlBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sCiAKIGRvdWJsZSBNb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0pCiB7Ci0gICAgLy8gTW92
ZSB0aGUgdGltZSBvcmlnaW4gdG8gdGhlIGZpcnN0IGNhbGwgdG8gdGhpcyBmdW5jdGlvbiwgdG8g
YXZvaWQgZ2VuZXJhdGluZyB1bm5lY2Vzc2FyaWx5Ci0gICAgLy8gbGFyZ2UgdGltZXN0YW1wcy4K
LSAgICBzdGF0aWMgZG91YmxlIG9yaWdpbiA9IGFuZ2xlOjpHZXRDdXJyZW50VGltZSgpOwotICAg
IHJldHVybiBhbmdsZTo6R2V0Q3VycmVudFRpbWUoKSAtIG9yaWdpbjsKKyAgICByZXR1cm4gR2V0
SG9zdFRpbWVTZWNvbmRzKCk7CiB9CiAKIHZvaWQgRHVtcFRyYWNlRXZlbnRzVG9KU09ORmlsZShj
b25zdCBzdGQ6OnZlY3RvcjxUcmFjZUV2ZW50PiAmdHJhY2VFdmVudHMsCkBAIC0xNDAsOCArMTM4
LDggQEAgdm9pZCBEdW1wVHJhY2VFdmVudHNUb0pTT05GaWxlKGNvbnN0IHN0ZDo6dmVjdG9yPFRy
YWNlRXZlbnQ+ICZ0cmFjZUV2ZW50cywKICAgICAgICAgdmFsdWVbImNhdCJdICA9IHRyYWNlRXZl
bnQuY2F0ZWdvcnlOYW1lOwogICAgICAgICB2YWx1ZVsicGgiXSAgID0gcGhhc2VOYW1lLnN0cigp
OwogICAgICAgICB2YWx1ZVsidHMiXSAgID0gbWljcm9zZWNvbmRzOwotICAgICAgICB2YWx1ZVsi
cGlkIl0gID0gIkFOR0xFIjsKLSAgICAgICAgdmFsdWVbInRpZCJdICA9IHN0cmNtcCh0cmFjZUV2
ZW50LmNhdGVnb3J5TmFtZSwgImdwdS5hbmdsZS5ncHUiKSA9PSAwID8gIkdQVSIgOiAiQ1BVIjsK
KyAgICAgICAgdmFsdWVbInBpZCJdICA9IHN0cmNtcCh0cmFjZUV2ZW50LmNhdGVnb3J5TmFtZSwg
ImdwdS5hbmdsZS5ncHUiKSA9PSAwID8gIkdQVSIgOiAiQU5HTEUiOworICAgICAgICB2YWx1ZVsi
dGlkIl0gID0gMTsKIAogICAgICAgICBldmVudHNWYWx1ZS5hcHBlbmQodmFsdWUpOwogICAgIH0K
QEAgLTE1Nyw4ICsxNTUsMzIgQEAgdm9pZCBEdW1wVHJhY2VFdmVudHNUb0pTT05GaWxlKGNvbnN0
IHN0ZDo6dmVjdG9yPFRyYWNlRXZlbnQ+ICZ0cmFjZUV2ZW50cywKIAogICAgIG91dEZpbGUuY2xv
c2UoKTsKIH0KKworQU5HTEVfTUFZQkVfVU5VU0VEIHZvaWQgS0hST05PU19BUElFTlRSWSBEZWJ1
Z01lc3NhZ2VDYWxsYmFjayhHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGNoYXIgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkK
K3sKKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VUZXh0ICAgPSBnbDo6R2V0RGVidWdNZXNzYWdlU291
cmNlU3RyaW5nKHNvdXJjZSk7CisgICAgc3RkOjpzdHJpbmcgdHlwZVRleHQgICAgID0gZ2w6Okdl
dERlYnVnTWVzc2FnZVR5cGVTdHJpbmcodHlwZSk7CisgICAgc3RkOjpzdHJpbmcgc2V2ZXJpdHlU
ZXh0ID0gZ2w6OkdldERlYnVnTWVzc2FnZVNldmVyaXR5U3RyaW5nKHNldmVyaXR5KTsKKyAgICBz
dGQ6OmNlcnIgPDwgc291cmNlVGV4dCA8PCAiLCAiIDw8IHR5cGVUZXh0IDw8ICIsICIgPDwgc2V2
ZXJpdHlUZXh0IDw8ICI6ICIgPDwgbWVzc2FnZSA8PCAiXG4iOworfQogfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCitUcmFjZUV2ZW50OjpUcmFjZUV2ZW50KGNoYXIgcGhhc2VJbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2F0ZWdvcnlOYW1lSW4sCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIHRpbWVzdGFtcEluKQorICAgIDogcGhhc2UocGhhc2VJbiksIGNhdGVnb3J5TmFtZShj
YXRlZ29yeU5hbWVJbiksIG5hbWV7fSwgdGltZXN0YW1wKHRpbWVzdGFtcEluKSwgdGlkKDEpCit7
CisgICAgQVNTRVJUKHN0cmxlbihuYW1lSW4pIDwga01heE5hbWVMZW4pOworICAgIHN0cmNweShu
YW1lLCBuYW1lSW4pOworfQorCiBBTkdMRVBlcmZUZXN0OjpBTkdMRVBlcmZUZXN0KGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmYmFja2VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnN0b3J5LApAQCAtMTk3LDEzICsyMTksMTMgQEAgdm9pZCBBTkdMRVBlcmZUZXN0
OjpydW4oKQogICAgIH0KIAogICAgIC8vIENhbGlicmF0ZSB0byBhIGZpeGVkIG51bWJlciBvZiBz
dGVwcyBkdXJpbmcgYW4gaW5pdGlhbCBzZXQgdGltZS4KLSAgICBpZiAoIWdTdGVwc1RvUnVuT3Zl
cnJpZGUudmFsaWQoKSkKKyAgICBpZiAoZ1N0ZXBzVG9SdW5PdmVycmlkZSA8PSAwKQogICAgIHsK
ICAgICAgICAgZG9SdW5Mb29wKGtDYWxpYnJhdGlvblJ1blRpbWVTZWNvbmRzKTsKIAogICAgICAg
ICAvLyBTY2FsZSBzdGVwcyBkb3duIGFjY29yZGluZyB0byB0aGUgdGltZSB0aGF0IGV4ZWVkZWQg
b25lIHNlY29uZC4KICAgICAgICAgZG91YmxlIHNjYWxlID0ga0NhbGlicmF0aW9uUnVuVGltZVNl
Y29uZHMgLyBtVGltZXIuZ2V0RWxhcHNlZFRpbWUoKTsKLSAgICAgICAgbVN0ZXBzVG9SdW4gID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0aWNfY2FzdDxkb3VibGU+KG1OdW1TdGVwc1BlcmZvcm1l
ZCkgKiBzY2FsZSk7CisgICAgICAgIG1TdGVwc1RvUnVuICA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihtTnVtU3RlcHNQZXJmb3JtZWQpICogc2NhbGUpOwog
CiAgICAgICAgIC8vIENhbGlicmF0aW9uIGFsbG93cyB0aGUgcGVyZiB0ZXN0IHJ1bm5lciBzY3Jp
cHQgdG8gc2F2ZSBzb21lIHRpbWUuCiAgICAgICAgIGlmIChnQ2FsaWJyYXRpb24pCkBAIC0yMTQs
NyArMjM2LDcgQEAgdm9pZCBBTkdMRVBlcmZUZXN0OjpydW4oKQogICAgIH0KICAgICBlbHNlCiAg
ICAgewotICAgICAgICBtU3RlcHNUb1J1biA9IGdTdGVwc1RvUnVuT3ZlcnJpZGUudmFsdWUoKTsK
KyAgICAgICAgbVN0ZXBzVG9SdW4gPSBnU3RlcHNUb1J1bk92ZXJyaWRlOwogICAgIH0KIAogICAg
IC8vIERvIGFub3RoZXIgd2FybXVwIHJ1bi4gU2VlbXMgdG8gY29uc2lzdGVudGx5IGltcHJvdmUg
cmVzdWx0cy4KQEAgLTMyMSw5ICszNDMsMTEgQEAgc3RkOjpzdHJpbmcgUmVuZGVyVGVzdFBhcmFt
czo6YmFja2VuZCgpIGNvbnN0CiAgICAgICAgIGNhc2UgYW5nbGU6OkdMRVNEcml2ZXJUeXBlOjpB
bmdsZUVHTDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGFuZ2xlOjpHTEVTRHJp
dmVyVHlwZTo6U3lzdGVtRUdMOgotICAgICAgICAgICAgcmV0dXJuICJfbmF0aXZlIjsKKyAgICAg
ICAgICAgIHN0cnN0ciA8PCAiX25hdGl2ZSI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBhbmdsZTo6R0xFU0RyaXZlclR5cGU6OlN5c3RlbVdHTDoKLSAgICAgICAgICAgIHJldHVy
biAiX3dnbCI7CisgICAgICAgICAgICBzdHJzdHIgPDwgIl93Z2wiOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgICAg
ICByZXR1cm4gIl91bmsiOwpAQCAtMzMxLDYgKzM1NSw4IEBAIHN0ZDo6c3RyaW5nIFJlbmRlclRl
c3RQYXJhbXM6OmJhY2tlbmQoKSBjb25zdAogCiAgICAgc3dpdGNoIChnZXRSZW5kZXJlcigpKQog
ICAgIHsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xF
OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfRDNEMTFfQU5HTEU6CiAgICAgICAgICAgICBzdHJzdHIgPDwgIl9kM2QxMSI7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTM0Myw5ICszNjksNiBAQCBzdGQ6OnN0cmluZyBSZW5kZXJUZXN0UGFy
YW1zOjpiYWNrZW5kKCkgY29uc3QKICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xFU19BTkdMRToKICAgICAgICAgICAgIHN0cnN0ciA8PCAiX2dsZXMiOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVM
VF9BTkdMRToKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX2RlZmF1bHQiOwotICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfVlVMS0FOX0FOR0xF
OgogICAgICAgICAgICAgc3Ryc3RyIDw8ICJfdnVsa2FuIjsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzc4LDkgKzQwMSw5IEBAIEFOR0xFUmVuZGVyVGVzdDo6QU5HTEVSZW5kZXJUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nICZuYW1lLCBjb25zdCBSZW5kZXJUZXN0UGFyYW1zCiAgICAgICAgICAgICAg
ICAgICAgIHRlc3RQYXJhbXMuc3RvcnkoKSwKICAgICAgICAgICAgICAgICAgICAgT25lRnJhbWUo
KSA/IDEgOiB0ZXN0UGFyYW1zLml0ZXJhdGlvbnNQZXJTdGVwKSwKICAgICAgIG1UZXN0UGFyYW1z
KHRlc3RQYXJhbXMpLAorICAgICAgbUlzVGltZXN0YW1wUXVlcnlBdmFpbGFibGUoZmFsc2UpLAog
ICAgICAgbUdMV2luZG93KG51bGxwdHIpLAotICAgICAgbU9TV2luZG93KG51bGxwdHIpLAotICAg
ICAgbUlzVGltZXN0YW1wUXVlcnlBdmFpbGFibGUoZmFsc2UpCisgICAgICBtT1NXaW5kb3cobnVs
bHB0cikKIHsKICAgICAvLyBGb3JjZSBmYXN0IHRlc3RzIHRvIG1ha2Ugc3VyZSBvdXIgc2xvd2Vz
dCBib3RzIGRvbid0IHRpbWUgb3V0LgogICAgIGlmIChPbmVGcmFtZSgpKQpAQCAtNDk4LDYgKzUy
MSwyOCBAQCB2b2lkIEFOR0xFUmVuZGVyVGVzdDo6U2V0VXAoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNTRVJUUykKKyAgICBpZiAoSXNHTEV4
dGVuc2lvbkVuYWJsZWQoIkdMX0tIUl9kZWJ1ZyIpKQorICAgIHsKKyAgICAgICAgZ2xFbmFibGUo
R0xfREVCVUdfT1VUUFVUKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfREVCVUdfT1VUUFVUX1NZTkNI
Uk9OT1VTKTsKKyAgICAgICAgLy8gRW5hYmxlIG1lZGl1bSBhbmQgaGlnaCBwcmlvcml0eSBtZXNz
YWdlcy4KKyAgICAgICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RPTlRfQ0FSRSwgR0xf
RE9OVF9DQVJFLCBHTF9ERUJVR19TRVZFUklUWV9ISUdILCAwLCBudWxscHRyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJVRSk7CisgICAgICAgIGdsRGVidWdNZXNzYWdl
Q29udHJvbEtIUihHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfREVCVUdfU0VWRVJJVFlf
TUVESVVNLCAwLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VFJVRSk7CisgICAgICAgIC8vIERpc2FibGUgbG93IGFuZCBub3RpZmljYXRpb24gcHJpb3JpdHkg
bWVzc2FnZXMuCisgICAgICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ET05UX0NBUkUs
IEdMX0RPTlRfQ0FSRSwgR0xfREVCVUdfU0VWRVJJVFlfTE9XLCAwLCBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkFMU0UpOworICAgICAgICBnbERlYnVnTWVz
c2FnZUNvbnRyb2xLSFIoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RFQlVHX1NFVkVS
SVRZX05PVElGSUNBVElPTiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsIEdMX0ZBTFNFKTsKKyAgICAgICAgLy8gRGlzYWJsZSBtZWRpdW0gcHJpb3JpdHkgcGVy
Zm9ybWFuY2UgbWVzc2FnZXMgdG8gcmVkdWNlIHNwYW0uCisgICAgICAgIGdsRGVidWdNZXNzYWdl
Q29udHJvbEtIUihHTF9ET05UX0NBUkUsIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UsIEdMX0RF
QlVHX1NFVkVSSVRZX01FRElVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IG51bGxwdHIsIEdMX0ZBTFNFKTsKKyAgICAgICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihE
ZWJ1Z01lc3NhZ2VDYWxsYmFjaywgdGhpcyk7CisgICAgfQorI2VuZGlmCisKICAgICBpbml0aWFs
aXplQmVuY2htYXJrKCk7CiAKICAgICBpZiAobVRlc3RQYXJhbXMuaXRlcmF0aW9uc1BlclN0ZXAg
PT0gMCkKQEAgLTU1NCw2ICs1OTksMjQgQEAgdm9pZCBBTkdMRVJlbmRlclRlc3Q6OmVuZEludGVy
bmFsVHJhY2VFdmVudChjb25zdCBjaGFyICpuYW1lKQogICAgIH0KIH0KIAordm9pZCBBTkdMRVJl
bmRlclRlc3Q6OmJlZ2luR0xUcmFjZUV2ZW50KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSBob3N0
VGltZVNlYykKK3sKKyAgICBpZiAoZ0VuYWJsZVRyYWNlKQorICAgIHsKKyAgICAgICAgbVRyYWNl
RXZlbnRCdWZmZXIuZW1wbGFjZV9iYWNrKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBnVHJhY2VD
YXRlZ29yaWVzWzFdLm5hbWUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBob3N0VGltZVNlYyk7CisgICAgfQorfQorCit2b2lkIEFOR0xFUmVuZGVyVGVzdDo6
ZW5kR0xUcmFjZUV2ZW50KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSBob3N0VGltZVNlYykKK3sK
KyAgICBpZiAoZ0VuYWJsZVRyYWNlKQorICAgIHsKKyAgICAgICAgbVRyYWNlRXZlbnRCdWZmZXIu
ZW1wbGFjZV9iYWNrKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgZ1RyYWNlQ2F0ZWdvcmllc1sxXS5u
YW1lLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdFRp
bWVTZWMpOworICAgIH0KK30KKwogdm9pZCBBTkdMRVJlbmRlclRlc3Q6OnN0ZXAoKQogewogICAg
IGJlZ2luSW50ZXJuYWxUcmFjZUV2ZW50KCJzdGVwIik7CkBAIC01ODMsNiArNjQ2LDEwIEBAIHZv
aWQgQU5HTEVSZW5kZXJUZXN0OjpzdGVwKCkKICAgICAgICAgLy8gY29tbWFuZCBxdWV1ZXMuCiAg
ICAgICAgIG1HTFdpbmRvdy0+c3dhcCgpOwogICAgICAgICBtT1NXaW5kb3ctPm1lc3NhZ2VMb29w
KCk7CisKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRTKQorICAgICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSk7CisjZW5k
aWYgIC8vIGRlZmluZWQoQU5HTEVfRU5BQkxFX0FTU0VSVFMpCiAgICAgfQogCiAgICAgZW5kSW50
ZXJuYWxUcmFjZUV2ZW50KCJzdGVwIik7CkBAIC02NzIsMyArNzM5LDE0IEBAIHN0ZDo6dmVjdG9y
PFRyYWNlRXZlbnQ+ICZBTkdMRVJlbmRlclRlc3Q6OmdldFRyYWNlRXZlbnRCdWZmZXIoKQogewog
ICAgIHJldHVybiBtVHJhY2VFdmVudEJ1ZmZlcjsKIH0KKworbmFtZXNwYWNlIGFuZ2xlCit7Citk
b3VibGUgR2V0SG9zdFRpbWVTZWNvbmRzKCkKK3sKKyAgICAvLyBNb3ZlIHRoZSB0aW1lIG9yaWdp
biB0byB0aGUgZmlyc3QgY2FsbCB0byB0aGlzIGZ1bmN0aW9uLCB0byBhdm9pZCBnZW5lcmF0aW5n
IHVubmVjZXNzYXJpbHkKKyAgICAvLyBsYXJnZSB0aW1lc3RhbXBzLgorICAgIHN0YXRpYyBkb3Vi
bGUgb3JpZ2luID0gYW5nbGU6OkdldEN1cnJlbnRUaW1lKCk7CisgICAgcmV0dXJuIGFuZ2xlOjpH
ZXRDdXJyZW50VGltZSgpIC0gb3JpZ2luOworfQorfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdM
RVBlcmZUZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9BTkdMRVBlcmZUZXN0LmgKaW5kZXggNTBlYTE4N2RkZDIyNjE2OGU0MTkzOWZmZjA3ODQ4MGRi
MGU0ZDNhOS4uMjM2ZDg2M2M1Y2FlOWJiNjNkNTk2OGNmNTJmNmNhM2RmMzFmYTFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQ
ZXJmVGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL0FOR0xFUGVyZlRlc3QuaApAQCAtNDMsMTUgKzQzLDE1IEBAIGNsYXNzIEV2ZW50Owogc3Ry
dWN0IFRyYWNlRXZlbnQgZmluYWwKIHsKICAgICBUcmFjZUV2ZW50KCkge30KKyAgICBUcmFjZUV2
ZW50KGNoYXIgcGhhc2VJbiwgY29uc3QgY2hhciAqY2F0ZWdvcnlOYW1lSW4sIGNvbnN0IGNoYXIg
Km5hbWVJbiwgZG91YmxlIHRpbWVzdGFtcEluKTsKIAotICAgIFRyYWNlRXZlbnQoY2hhciBwaGFz
ZUluLCBjb25zdCBjaGFyICpjYXRlZ29yeU5hbWVJbiwgY29uc3QgY2hhciAqbmFtZUluLCBkb3Vi
bGUgdGltZXN0YW1wSW4pCi0gICAgICAgIDogcGhhc2UocGhhc2VJbiksIGNhdGVnb3J5TmFtZShj
YXRlZ29yeU5hbWVJbiksIG5hbWUobmFtZUluKSwgdGltZXN0YW1wKHRpbWVzdGFtcEluKQotICAg
IHt9CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBrTWF4TmFtZUxlbiA9IDY0OwogCiAg
ICAgY2hhciBwaGFzZSAgICAgICAgICAgICAgID0gMDsKICAgICBjb25zdCBjaGFyICpjYXRlZ29y
eU5hbWUgPSBudWxscHRyOwotICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICA9IG51bGxwdHI7
CisgICAgY2hhciBuYW1lW2tNYXhOYW1lTGVuXSAgID0ge307CiAgICAgZG91YmxlIHRpbWVzdGFt
cCAgICAgICAgID0gMDsKKyAgICB1aW50MzJfdCB0aWQgICAgICAgICAgICAgPSAwOwogfTsKIAog
Y2xhc3MgQU5HTEVQZXJmVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBhbmdsZTo6Tm9uQ29w
eWFibGUKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgQU5HTEVQZXJmVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0LCBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZiYWNrZW5kLAogICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnN0b3J5LAogICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnNQZXJTdGVw
KTsKLSAgICB2aXJ0dWFsIH5BTkdMRVBlcmZUZXN0KCk7CisgICAgfkFOR0xFUGVyZlRlc3QoKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGVwKCkgPSAwOwogCkBAIC0xMTksNyArMTE5
LDcgQEAgY2xhc3MgQU5HTEVSZW5kZXJUZXN0IDogcHVibGljIEFOR0xFUGVyZlRlc3QKIHsKICAg
cHVibGljOgogICAgIEFOR0xFUmVuZGVyVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgY29u
c3QgUmVuZGVyVGVzdFBhcmFtcyAmdGVzdFBhcmFtcyk7Ci0gICAgfkFOR0xFUmVuZGVyVGVzdCgp
OworICAgIH5BTkdMRVJlbmRlclRlc3QoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkRXh0ZW5z
aW9uUHJlcmVxdWlzaXRlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbk5hbWUpOwogCkBAIC0xNDgsNiAr
MTQ4LDEwIEBAIGNsYXNzIEFOR0xFUmVuZGVyVGVzdCA6IHB1YmxpYyBBTkdMRVBlcmZUZXN0CiAK
ICAgICB2b2lkIGJlZ2luSW50ZXJuYWxUcmFjZUV2ZW50KGNvbnN0IGNoYXIgKm5hbWUpOwogICAg
IHZvaWQgZW5kSW50ZXJuYWxUcmFjZUV2ZW50KGNvbnN0IGNoYXIgKm5hbWUpOworICAgIHZvaWQg
YmVnaW5HTFRyYWNlRXZlbnQoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlIGhvc3RUaW1lU2VjKTsK
KyAgICB2b2lkIGVuZEdMVHJhY2VFdmVudChjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgaG9zdFRp
bWVTZWMpOworCisgICAgYm9vbCBtSXNUaW1lc3RhbXBRdWVyeUF2YWlsYWJsZTsKIAogICBwcml2
YXRlOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKQEAgLTE2NSw3ICsxNjksNiBAQCBjbGFz
cyBBTkdMRVJlbmRlclRlc3QgOiBwdWJsaWMgQU5HTEVQZXJmVGVzdAogICAgIGFuZ2xlOjpQbGF0
Zm9ybU1ldGhvZHMgbVBsYXRmb3JtTWV0aG9kczsKICAgICBDb25maWdQYXJhbWV0ZXJzIG1Db25m
aWdQYXJhbXM7CiAKLSAgICBib29sIG1Jc1RpbWVzdGFtcFF1ZXJ5QXZhaWxhYmxlOwogICAgIEdM
dWludCBtVGltZXN0YW1wUXVlcnk7CiAKICAgICAvLyBUcmFjZSBldmVudCByZWNvcmQgdGhhdCBj
YW4gYmUgb3V0cHV0LgpAQCAtMTk0LDYgKzE5NywxNyBAQCBQYXJhbXNUIE51bGxEZXZpY2UoY29u
c3QgUGFyYW1zVCAmaW5wdXQpCiAgICAgb3V0cHV0LnRyYWNrR3B1VGltZSAgICAgICAgICAgICA9
IGZhbHNlOwogICAgIHJldHVybiBvdXRwdXQ7CiB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJh
bXNUPgorUGFyYW1zVCBQYXNzdGhyb3VnaChjb25zdCBQYXJhbXNUICZpbnB1dCkKK3sKKyAgICBy
ZXR1cm4gaW5wdXQ7Cit9CiB9ICAvLyBuYW1lc3BhY2UgcGFyYW1zCiAKK25hbWVzcGFjZSBhbmds
ZQoreworLy8gUmV0dXJucyB0aGUgdGltZSBvZiB0aGUgaG9zdCBzaW5jZSB0aGUgYXBwbGljYXRp
b24gc3RhcnRlZCBpbiBzZWNvbmRzLgorZG91YmxlIEdldEhvc3RUaW1lU2Vjb25kcygpOworfSAg
Ly8gbmFtZXNwYWNlIGFuZ2xlCiAjZW5kaWYgIC8vIFBFUkZfVEVTVFNfQU5HTEVfUEVSRl9URVNU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9BTkdMRVBlcmZUZXN0QXJncy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0QXJncy5jcHAKaW5kZXggMjcwYThlYTliOThj
MjNhMWY3MTY1OTliNGVhNTNiY2JlOTNkZjEyOS4uZDIzMzE1NTI4NzljMTY0MzZiMTdkNjIzYWUx
NmM3NDMwNjk3OTY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFyZ3MuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3RBcmdzLmNwcApAQCAt
MTMsMTAgKzEzLDEwIEBACiAKIG5hbWVzcGFjZSBhbmdsZQogewotYm9vbCBnQ2FsaWJyYXRpb24g
PSBmYWxzZTsKLU9wdGlvbmFsPHVuc2lnbmVkIGludD4gZ1N0ZXBzVG9SdW5PdmVycmlkZTsKLWJv
b2wgZ0VuYWJsZVRyYWNlICAgICAgPSBmYWxzZTsKLWNvbnN0IGNoYXIgKmdUcmFjZUZpbGUgPSAi
QU5HTEVUcmFjZS5qc29uIjsKK2Jvb2wgZ0NhbGlicmF0aW9uICAgICAgID0gZmFsc2U7CitpbnQg
Z1N0ZXBzVG9SdW5PdmVycmlkZSA9IC0xOworYm9vbCBnRW5hYmxlVHJhY2UgICAgICAgPSBmYWxz
ZTsKK2NvbnN0IGNoYXIgKmdUcmFjZUZpbGUgID0gIkFOR0xFVHJhY2UuanNvbiI7CiB9ICAvLyBu
YW1lc3BhY2UgYW5nbGUKIAogdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdEFy
Z3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xF
UGVyZlRlc3RBcmdzLmgKaW5kZXggZmIxN2VjNjRiYTU0MzljMzIwZjJlMDg5M2Q5NjFkMTMyMGFk
NGZiYi4uNDYxYmQxNmMwMGQ5N2VlZTYyNGI1YzVmMDQzMWYzYWVkYzI5MGQ3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJm
VGVzdEFyZ3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9BTkdMRVBlcmZUZXN0QXJncy5oCkBAIC0xNSwxMyArMTUsMTMgQEAKIG5hbWVzcGFjZSBh
bmdsZQogewogZXh0ZXJuIGJvb2wgZ0NhbGlicmF0aW9uOwotZXh0ZXJuIE9wdGlvbmFsPHVuc2ln
bmVkIGludD4gZ1N0ZXBzVG9SdW5PdmVycmlkZTsKK2V4dGVybiBpbnQgZ1N0ZXBzVG9SdW5PdmVy
cmlkZTsKIGV4dGVybiBib29sIGdFbmFibGVUcmFjZTsKIGV4dGVybiBjb25zdCBjaGFyICpnVHJh
Y2VGaWxlOwogCiBpbmxpbmUgYm9vbCBPbmVGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGdTdGVwc1Rv
UnVuT3ZlcnJpZGUudmFsaWQoKSAmJiBnU3RlcHNUb1J1bk92ZXJyaWRlLnZhbHVlKCkgPT0gMTsK
KyAgICByZXR1cm4gZ1N0ZXBzVG9SdW5PdmVycmlkZSA9PSAxOwogfQogfSAgLy8gbmFtZXNwYWNl
IGFuZ2xlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL0JpdFNldEl0ZXJhdG9yUGVyZi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9CaXRTZXRJdGVyYXRvclBlcmYuY3BwCmluZGV4IDAxZTI0
OWRkMTQ5ZTlhNTVjMzJiODU1Y2ZiMzIzMzhiYjExM2Y1ODguLjBiNjFjYzY0ZDYxMjg3Zjg2Mzcw
MmFhN2UzMDE2MmRjZjRjNzdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0JpdFNldEl0ZXJhdG9yUGVyZi5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQml0U2V0SXRlcmF0b3JQZXJm
LmNwcApAQCAtNDgsMTEgKzQ4LDExIEBAIHZvaWQgQml0U2V0SXRlcmF0b3JQZXJmVGVzdDxUPjo6
c3RlcCgpCiB9CiAKIC8vIFRoZXNlIHR5cGUgbmFtZXMgdW5mb3J0dW5hdGVseSBkb24ndCBnZXQg
cHJpbnRlZCBjb3JyZWN0bHkgaW4gR3Rlc3QuCi0jaWYgZGVmaW5lZChBTkdMRV9JU182NF9CSVRf
Q1BVKQotdXNpbmcgVGVzdFR5cGVzID0gVHlwZXM8YW5nbGU6Okl0ZXJhYmxlQml0U2V0PDMyPiwg
YW5nbGU6OkJpdFNldDMyPDMyPiwgYW5nbGU6OkJpdFNldDY0PDMyPj47Ci0jZWxzZQotdXNpbmcg
VGVzdFR5cGVzID0gVHlwZXM8YW5nbGU6Okl0ZXJhYmxlQml0U2V0PDMyPiwgYW5nbGU6OkJpdFNl
dDMyPDMyPj47Ci0jZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfSVNfNjRfQklUX0NQVSkKK3VzaW5n
IFRlc3RUeXBlcyA9IFR5cGVzPGFuZ2xlOjpJdGVyYWJsZUJpdFNldDwzMj4sCisgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Qml0U2V0MzI8MzI+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkJpdFNldDY0PDMyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpJ
dGVyYWJsZUJpdFNldDw2ND4sCisgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Qml0U2V0
NjQ8NjQ+PjsKIFRZUEVEX1RFU1RfU1VJVEUoQml0U2V0SXRlcmF0b3JQZXJmVGVzdCwgVGVzdFR5
cGVzKTsKIAogVFlQRURfVEVTVChCaXRTZXRJdGVyYXRvclBlcmZUZXN0LCBSdW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2Fs
bFBlcmYuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMv
RHJhd0NhbGxQZXJmLmNwcAppbmRleCA3OWM2YjViYzdmYTJjYjZhNzEzODA4ODcxZjA2YzgzNDAy
ZDU3ODE3Li5mNjliNGE0YmFhYTA3YWQ3YzFiNWU4ODk4YjAzMmQwMTY3MjY2ZGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2Fs
bFBlcmYuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL0RyYXdDYWxsUGVyZi5jcHAKQEAgLTksNiArOSw3IEBACiAKICNpbmNsdWRlICJBTkdMRVBl
cmZUZXN0LmgiCiAjaW5jbHVkZSAiRHJhd0NhbGxQZXJmUGFyYW1zLmgiCisjaW5jbHVkZSAiY29t
bW9uL1BhY2tlZEVudW1zLmgiCiAjaW5jbHVkZSAidGVzdF91dGlscy9kcmF3X2NhbGxfcGVyZl91
dGlscy5oIgogI2luY2x1ZGUgInV0aWwvc2hhZGVyX3V0aWxzLmgiCiAKQEAgLTIyLDEwICsyMywx
MiBAQCBlbnVtIGNsYXNzIFN0YXRlQ2hhbmdlCiAgICAgTWFueVZlcnRleEJ1ZmZlcnMsCiAgICAg
VGV4dHVyZSwKICAgICBQcm9ncmFtLAorICAgIEludmFsaWRFbnVtLAogfTsKIAogc3RydWN0IERy
YXdBcnJheXNQZXJmUGFyYW1zIDogcHVibGljIERyYXdDYWxsUGVyZlBhcmFtcwogeworICAgIERy
YXdBcnJheXNQZXJmUGFyYW1zKCkgPSBkZWZhdWx0OwogICAgIERyYXdBcnJheXNQZXJmUGFyYW1z
KGNvbnN0IERyYXdDYWxsUGVyZlBhcmFtcyAmYmFzZSkgOiBEcmF3Q2FsbFBlcmZQYXJhbXMoYmFz
ZSkge30KIAogICAgIHN0ZDo6c3RyaW5nIHN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zNzcs
NiArMzgwLDkgQEAgdm9pZCBEcmF3Q2FsbFBlcmZCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQog
ICAgICAgICAgICAgICAgIEp1c3REcmF3KHBhcmFtcy5pdGVyYXRpb25zUGVyU3RlcCwgbnVtRWxl
bWVudHMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U3RhdGVDaGFuZ2U6OkludmFsaWRFbnVtOgorICAgICAgICAgICAgRkFJTCgpIDw8ICJJbnZhbGlk
IHN0YXRlIGNoYW5nZS4iOworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7CkBAIC0zODcsNzAgKzM5MywyNCBAQCBURVNUX1AoRHJhd0NhbGxQZXJm
QmVuY2htYXJrLCBSdW4pCiAgICAgcnVuKCk7CiB9CiAKLURyYXdBcnJheXNQZXJmUGFyYW1zIERy
YXdBcnJheXMoY29uc3QgRHJhd0NhbGxQZXJmUGFyYW1zICZiYXNlLCBTdGF0ZUNoYW5nZSBzdGF0
ZUNoYW5nZSkKK3VzaW5nIG5hbWVzcGFjZSBwYXJhbXM7CisKK0RyYXdBcnJheXNQZXJmUGFyYW1z
IENvbWJpbmVTdGF0ZUNoYW5nZShjb25zdCBEcmF3QXJyYXlzUGVyZlBhcmFtcyAmaW4sIFN0YXRl
Q2hhbmdlIHN0YXRlQ2hhbmdlKQogewotICAgIERyYXdBcnJheXNQZXJmUGFyYW1zIHBhcmFtcyhi
YXNlKTsKLSAgICBwYXJhbXMuc3RhdGVDaGFuZ2UgPSBzdGF0ZUNoYW5nZTsKLSAgICByZXR1cm4g
cGFyYW1zOworICAgIERyYXdBcnJheXNQZXJmUGFyYW1zIG91dCA9IGluOworICAgIG91dC5zdGF0
ZUNoYW5nZSAgICAgICAgICA9IHN0YXRlQ2hhbmdlOworICAgIHJldHVybiBvdXQ7CiB9CiAKLXVz
aW5nIG5hbWVzcGFjZSBwYXJhbXM7Cit1c2luZyBQID0gRHJhd0FycmF5c1BlcmZQYXJhbXM7CisK
K3N0ZDo6dmVjdG9yPFA+IGdUZXN0c1dpdGhTdGF0ZUNoYW5nZSA9CisgICAgQ29tYmluZVdpdGhW
YWx1ZXMoe1AoKX0sIGFuZ2xlOjpBbGxFbnVtczxTdGF0ZUNoYW5nZT4oKSwgQ29tYmluZVN0YXRl
Q2hhbmdlKTsKK3N0ZDo6dmVjdG9yPFA+IGdUZXN0c1dpdGhSZW5kZXJlciA9CisgICAgQ29tYmlu
ZVdpdGhGdW5jcyhnVGVzdHNXaXRoU3RhdGVDaGFuZ2UsIHtEM0QxMTxQPiwgR0w8UD4sIFZ1bGth
bjxQPiwgV0dMPFA+fSk7CitzdGQ6OnZlY3RvcjxQPiBnVGVzdHNXaXRoRGV2aWNlID0KKyAgICBD
b21iaW5lV2l0aEZ1bmNzKGdUZXN0c1dpdGhSZW5kZXJlciwge1Bhc3N0aHJvdWdoPFA+LCBPZmZz
Y3JlZW48UD4sIE51bGxEZXZpY2U8UD59KTsKIAotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEcmF3
Q2FsbFBlcmZCZW5jaG1hcmssCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJh
d0NhbGxEM0Q5KCksIFN0YXRlQ2hhbmdlOjpOb0NoYW5nZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgIERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbEQzRDkoKSksIFN0YXRlQ2hhbmdlOjpO
b0NoYW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxEM0Qx
MSgpLCBTdGF0ZUNoYW5nZTo6Tm9DaGFuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3
QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxEM0QxMSgpKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKE9mZnNjcmVl
bihEcmF3Q2FsbEQzRDExKCkpKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbEQzRDExKCksIFN0YXRlQ2hhbmdlOjpWZXJ0
ZXhBdHRyaWIpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2Uo
RHJhd0NhbGxEM0QxMSgpKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEF0dHJpYiksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxEM0QxMSgpLCBTdGF0ZUNoYW5nZTo6VmVy
dGV4QnVmZmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNl
KERyYXdDYWxsRDNEMTEoKSksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhCdWZmZXIpLAotICAgICAgICAg
ICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsRDNEMTEoKSwgU3RhdGVDaGFuZ2U6OlRl
eHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJh
d0NhbGxEM0QxMSgpKSwgU3RhdGVDaGFuZ2U6OlRleHR1cmUpLAotICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3QXJyYXlzKERyYXdDYWxsRDNEMTEoKSwgU3RhdGVDaGFuZ2U6OlByb2dyYW0pLAot
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxEM0Qx
MSgpKSwgU3RhdGVDaGFuZ2U6OlByb2dyYW0pLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3
QXJyYXlzKERyYXdDYWxsT3BlbkdMKCksIFN0YXRlQ2hhbmdlOjpOb0NoYW5nZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbE9wZW5HTCgpKSwg
U3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5
cyhOdWxsRGV2aWNlKE9mZnNjcmVlbihEcmF3Q2FsbE9wZW5HTCgpKSksIFN0YXRlQ2hhbmdlOjpO
b0NoYW5nZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxPcGVu
R0woKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEF0dHJpYiksCi0gICAgICAgICAgICAgICAgICAgICAg
IERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbE9wZW5HTCgpKSwgU3RhdGVDaGFuZ2U6OlZl
cnRleEF0dHJpYiksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxP
cGVuR0woKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAg
ICAgIERyYXdBcnJheXMoTnVsbERldmljZShEcmF3Q2FsbE9wZW5HTCgpKSwgU3RhdGVDaGFuZ2U6
OlZlcnRleEJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0Nh
bGxPcGVuR0woKSwgU3RhdGVDaGFuZ2U6Ok1hbnlWZXJ0ZXhCdWZmZXJzKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsT3BlbkdMKCkpLCBTdGF0
ZUNoYW5nZTo6TWFueVZlcnRleEJ1ZmZlcnMpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3
QXJyYXlzKERyYXdDYWxsT3BlbkdMKCksIFN0YXRlQ2hhbmdlOjpUZXh0dXJlKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsT3BlbkdMKCkpLCBT
dGF0ZUNoYW5nZTo6VGV4dHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMo
RHJhd0NhbGxPcGVuR0woKSwgU3RhdGVDaGFuZ2U6OlByb2dyYW0pLAotICAgICAgICAgICAgICAg
ICAgICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxPcGVuR0woKSksIFN0YXRlQ2hh
bmdlOjpQcm9ncmFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2Fs
bFZhbGlkYXRpb24oKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbFZ1bGthbigpLCBTdGF0ZUNoYW5nZTo6Tm9DaGFuZ2Up
LAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE9mZnNjcmVlbihEcmF3Q2FsbFZ1
bGthbigpKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsVnVsa2FuKCkpLCBTdGF0ZUNoYW5nZTo6Tm9D
aGFuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsVnVsa2Fu
KCksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhBdHRyaWIpLAotICAgICAgICAgICAgICAgICAgICAgICBE
cmF3QXJyYXlzKE9mZnNjcmVlbihEcmF3Q2FsbFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6OlZlcnRl
eEF0dHJpYiksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoTnVsbERldmljZShE
cmF3Q2FsbFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEF0dHJpYiksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxWdWxrYW4oKSwgU3RhdGVDaGFuZ2U6OlZl
cnRleEJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdBcnJheXMoT2Zmc2NyZWVu
KERyYXdDYWxsVnVsa2FuKCkpLCBTdGF0ZUNoYW5nZTo6VmVydGV4QnVmZmVyKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsVnVsa2FuKCkpLCBT
dGF0ZUNoYW5nZTo6VmVydGV4QnVmZmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0Fy
cmF5cyhEcmF3Q2FsbFZ1bGthbigpLCBTdGF0ZUNoYW5nZTo6TWFueVZlcnRleEJ1ZmZlcnMpLAot
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE9mZnNjcmVlbihEcmF3Q2FsbFZ1bGth
bigpKSwgU3RhdGVDaGFuZ2U6Ok1hbnlWZXJ0ZXhCdWZmZXJzKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0FycmF5cyhOdWxsRGV2aWNlKERyYXdDYWxsVnVsa2FuKCkpLCBTdGF0ZUNoYW5n
ZTo6TWFueVZlcnRleEJ1ZmZlcnMpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlz
KERyYXdDYWxsVnVsa2FuKCksIFN0YXRlQ2hhbmdlOjpUZXh0dXJlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRHJhd0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxWdWxrYW4oKSksIFN0YXRlQ2hh
bmdlOjpUZXh0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhOdWxsRGV2
aWNlKERyYXdDYWxsVnVsa2FuKCkpLCBTdGF0ZUNoYW5nZTo6VGV4dHVyZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxWdWxrYW4oKSwgU3RhdGVDaGFuZ2U6OlBy
b2dyYW0pLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE9mZnNjcmVlbihEcmF3
Q2FsbFZ1bGthbigpKSwgU3RhdGVDaGFuZ2U6OlByb2dyYW0pLAotICAgICAgICAgICAgICAgICAg
ICAgICBEcmF3QXJyYXlzKE51bGxEZXZpY2UoRHJhd0NhbGxWdWxrYW4oKSksIFN0YXRlQ2hhbmdl
OjpQcm9ncmFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbFdH
TCgpLCBTdGF0ZUNoYW5nZTo6Tm9DaGFuZ2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3
QXJyYXlzKE9mZnNjcmVlbihEcmF3Q2FsbFdHTCgpKSwgU3RhdGVDaGFuZ2U6Ok5vQ2hhbmdlKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhEcmF3Q2FsbFdHTCgpLCBTdGF0ZUNo
YW5nZTo6VmVydGV4QXR0cmliKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhP
ZmZzY3JlZW4oRHJhd0NhbGxXR0woKSksIFN0YXRlQ2hhbmdlOjpWZXJ0ZXhBdHRyaWIpLAotICAg
ICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKERyYXdDYWxsV0dMKCksIFN0YXRlQ2hhbmdl
OjpWZXJ0ZXhCdWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE9mZnNj
cmVlbihEcmF3Q2FsbFdHTCgpKSwgU3RhdGVDaGFuZ2U6OlZlcnRleEJ1ZmZlciksCi0gICAgICAg
ICAgICAgICAgICAgICAgIERyYXdBcnJheXMoRHJhd0NhbGxXR0woKSwgU3RhdGVDaGFuZ2U6OlRl
eHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3QXJyYXlzKE9mZnNjcmVlbihEcmF3
Q2FsbFdHTCgpKSwgU3RhdGVDaGFuZ2U6OlRleHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAg
ICBEcmF3QXJyYXlzKERyYXdDYWxsV0dMKCksIFN0YXRlQ2hhbmdlOjpQcm9ncmFtKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0FycmF5cyhPZmZzY3JlZW4oRHJhd0NhbGxXR0woKSksIFN0
YXRlQ2hhbmdlOjpQcm9ncmFtKSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUX0FSUkFZKERyYXdD
YWxsUGVyZkJlbmNobWFyaywgZ1Rlc3RzV2l0aERldmljZSk7CiAKIH0gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuY3BwCmluZGV4IDMwY2Zk
NjAzZjBlY2U3Y2IwNWVjOWE3ODE3OWViYTc1ZGZlZjdlMDEuLjk0YjIwMDhiODAxMzIzNjE1YTQx
NTYyZTdkMzVjZTljOGYzOGYwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmUGFyYW1z
LmNwcApAQCAtMzcsMTEgKzM3LDYgQEAgc3RkOjpzdHJpbmcgRHJhd0NhbGxQZXJmUGFyYW1zOjpz
dG9yeSgpIGNvbnN0CiAKICAgICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBhcmFtczo6c3RvcnkoKTsK
IAotICAgIGlmIChudW1UcmlzID09IDApCi0gICAgewotICAgICAgICBzdHJzdHIgPDwgIl92YWxp
ZGF0aW9uX29ubHkiOwotICAgIH0KLQogICAgIGlmIChvZmZzY3JlZW4pCiAgICAgewogICAgICAg
ICBzdHJzdHIgPDwgIl9vZmZzY3JlZW4iOwpAQCAtNDksNTIgKzQ0LDMgQEAgc3RkOjpzdHJpbmcg
RHJhd0NhbGxQZXJmUGFyYW1zOjpzdG9yeSgpIGNvbnN0CiAKICAgICByZXR1cm4gc3Ryc3RyLnN0
cigpOwogfQotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU6OmVnbF9wbGF0Zm9ybTsKLQotbmFtZXNw
YWNlIHBhcmFtcwotewotRHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsRDNEMTEoKQotewotICAg
IERyYXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBE
M0QxMSgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLURyYXdDYWxsUGVyZlBhcmFtcyBEcmF3
Q2FsbEQzRDkoKQotewotICAgIERyYXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1z
LmVnbFBhcmFtZXRlcnMgPSBEM0Q5KCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotRHJhd0Nh
bGxQZXJmUGFyYW1zIERyYXdDYWxsT3BlbkdMKCkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMg
cGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gT1BFTkdMX09SX0dMRVMoKTsKLSAg
ICByZXR1cm4gcGFyYW1zOwotfQotCi1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxWYWxpZGF0
aW9uKCkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQ
YXJhbWV0ZXJzICA9IERFRkFVTFQoKTsKLSAgICBwYXJhbXMubnVtVHJpcyAgICAgICAgPSAwOwot
ICAgIHBhcmFtcy5ydW5UaW1lU2Vjb25kcyA9IDUuMDsKLSAgICByZXR1cm4gcGFyYW1zOwotfQot
Ci1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxWdWxrYW4oKQotewotICAgIERyYXdDYWxsUGVy
ZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBWVUxLQU4oKTsKLSAg
ICByZXR1cm4gcGFyYW1zOwotfQotCi1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxXR0woKQot
ewotICAgIERyYXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmRyaXZlciA9IGFu
Z2xlOjpHTEVTRHJpdmVyVHlwZTo6U3lzdGVtV0dMOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci19
ICAvLyBuYW1lc3BhY2UgcGFyYW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmZQYXJhbXMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5oCmlu
ZGV4IDQ4MzYwNTNjZTYyOTI4NDYyNzdlMmZmYzg4ODhlMWRlOTc1OTllZDEuLjZjNjY3ODc2NTUz
ZDhjMDRjZjA2ZTJmNmQ3YWVjNWU3ZmMwMjA2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZlBhcmFtcy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVy
ZlBhcmFtcy5oCkBAIC0xMywxMiArMTMsMTMgQEAKICNpbmNsdWRlIDxvc3RyZWFtPgogCiAjaW5j
bHVkZSAiQU5HTEVQZXJmVGVzdC5oIgorI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9j
b25maWdzLmgiCiAKIHN0cnVjdCBEcmF3Q2FsbFBlcmZQYXJhbXMgOiBwdWJsaWMgUmVuZGVyVGVz
dFBhcmFtcwogewogICAgIC8vIENvbW1vbiBkZWZhdWx0IG9wdGlvbnMKICAgICBEcmF3Q2FsbFBl
cmZQYXJhbXMoKTsKLSAgICB2aXJ0dWFsIH5EcmF3Q2FsbFBlcmZQYXJhbXMoKTsKKyAgICB+RHJh
d0NhbGxQZXJmUGFyYW1zKCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnN0cmluZyBzdG9yeSgpIGNv
bnN0IG92ZXJyaWRlOwogCkBAIC0yOSwxMiArMzAsNTQgQEAgc3RydWN0IERyYXdDYWxsUGVyZlBh
cmFtcyA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCiAKIG5hbWVzcGFjZSBwYXJhbXMKIHsKLURy
YXdDYWxsUGVyZlBhcmFtcyBEcmF3Q2FsbEQzRDExKCk7Ci1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJh
d0NhbGxEM0Q5KCk7Ci1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxPcGVuR0woKTsKLURyYXdD
YWxsUGVyZlBhcmFtcyBEcmF3Q2FsbFZhbGlkYXRpb24oKTsKLURyYXdDYWxsUGVyZlBhcmFtcyBE
cmF3Q2FsbFZ1bGthbigpOwotRHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsV0dMKCk7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUGFyYW1zVD4KK1BhcmFtc1QgRDNEOShjb25zdCBQYXJhbXNUICZpbikK
K3sKKyAgICBQYXJhbXNUIG91dCAgICAgICA9IGluOworICAgIG91dC5lZ2xQYXJhbWV0ZXJzID0g
YW5nbGU6OmVnbF9wbGF0Zm9ybTo6RDNEOSgpOworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBQYXJhbXNUPgorUGFyYW1zVCBEM0QxMShjb25zdCBQYXJhbXNUICZpbikK
K3sKKyAgICBQYXJhbXNUIG91dCAgICAgICA9IGluOworICAgIG91dC5lZ2xQYXJhbWV0ZXJzID0g
YW5nbGU6OmVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKKyAgICByZXR1cm4gb3V0OworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUGFyYW1zVD4KK1BhcmFtc1QgR0woY29uc3QgUGFyYW1zVCAmaW4pCit7
CisgICAgUGFyYW1zVCBvdXQgICAgICAgPSBpbjsKKyAgICBvdXQuZWdsUGFyYW1ldGVycyA9IGFu
Z2xlOjplZ2xfcGxhdGZvcm06Ok9QRU5HTF9PUl9HTEVTKCk7CisgICAgcmV0dXJuIG91dDsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtc1Q+CitQYXJhbXNUIEdMMyhjb25zdCBQYXJhbXNU
ICZpbikKK3sKKyAgICBQYXJhbXNUIG91dCAgICAgICA9IGluOworICAgIG91dC5lZ2xQYXJhbWV0
ZXJzID0gYW5nbGU6OmVnbF9wbGF0Zm9ybTo6T1BFTkdMX09SX0dMRVMoMywgMCk7CisgICAgcmV0
dXJuIG91dDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtc1Q+CitQYXJhbXNUIFZ1bGth
bihjb25zdCBQYXJhbXNUICZpbikKK3sKKyAgICBQYXJhbXNUIG91dCAgICAgICA9IGluOworICAg
IG91dC5lZ2xQYXJhbWV0ZXJzID0gYW5nbGU6OmVnbF9wbGF0Zm9ybTo6VlVMS0FOKCk7CisgICAg
cmV0dXJuIG91dDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtc1Q+CitQYXJhbXNUIFdH
TChjb25zdCBQYXJhbXNUICZpbikKK3sKKyAgICBQYXJhbXNUIG91dCA9IGluOworICAgIG91dC5k
cml2ZXIgID0gYW5nbGU6OkdMRVNEcml2ZXJUeXBlOjpTeXN0ZW1XR0w7CisgICAgcmV0dXJuIG91
dDsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHBhcmFtcwogCiAjZW5kaWYgIC8vIFRFU1RTX1BFUkZf
VEVTVFNfRFJBV19DQUxMX1BFUkZfUEFSQU1TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3RWxlbWVudHNQZXJmLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdFbGVtZW50c1Bl
cmYuY3BwCmluZGV4IDk4MTJiNDdhNTE5YjBmYmI3MDhhZDhmYzllNzE2Yjc4MjY4YWJhYTguLmM2
ZTkzMTdhNmY4MDU2NmMyNDJlOGViNTYwMjU3ZGM3Y2U5ZTlhZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdFbGVtZW50c1BlcmYu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0Ry
YXdFbGVtZW50c1BlcmYuY3BwCkBAIC0yMDIsMTA4ICsyMDIsNDIgQEAgdm9pZCBEcmF3RWxlbWVu
dHNQZXJmQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKIH0KIAotRHJhd0VsZW1lbnRzUGVyZlBhcmFtcyBEcmF3RWxlbWVudHNQZXJmRDNEMTFQYXJh
bXMoYm9vbCBpbmRleEJ1ZmZlckNoYW5nZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZU51bGxEZXZpY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW5kZXhUeXBlKQot
ewotICAgIERyYXdFbGVtZW50c1BlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJh
bWV0ZXJzID0KLSAgICAgICAgdXNlTnVsbERldmljZSA/IGFuZ2xlOjplZ2xfcGxhdGZvcm06OkQz
RDExX05VTEwoKSA6IGFuZ2xlOjplZ2xfcGxhdGZvcm06OkQzRDExKCk7Ci0gICAgcGFyYW1zLmlu
ZGV4QnVmZmVyQ2hhbmdlZCA9IGluZGV4QnVmZmVyQ2hhbmdlZDsKLSAgICBwYXJhbXMudHlwZSAg
ICAgICAgICAgICAgID0gaW5kZXhUeXBlOwotCi0gICAgLy8gU2NhbGUgZG93biBpdGVyYXRpb25z
IGZvciBzbG93ZXIgdGVzdHMuCi0gICAgaWYgKGluZGV4QnVmZmVyQ2hhbmdlZCkKLSAgICAgICAg
cGFyYW1zLml0ZXJhdGlvbnNQZXJTdGVwIC89IDEwMDsKLQotICAgIHJldHVybiBwYXJhbXM7Ci19
Ci0KLURyYXdFbGVtZW50c1BlcmZQYXJhbXMgRHJhd0VsZW1lbnRzUGVyZkQzRDlQYXJhbXMoYm9v
bCBpbmRleEJ1ZmZlckNoYW5nZWQpCitURVNUX1AoRHJhd0VsZW1lbnRzUGVyZkJlbmNobWFyaywg
UnVuKQogewotICAgIERyYXdFbGVtZW50c1BlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzICAgICAgPSBhbmdsZTo6ZWdsX3BsYXRmb3JtOjpEM0Q5KCk7Ci0gICAgcGFy
YW1zLmluZGV4QnVmZmVyQ2hhbmdlZCA9IGluZGV4QnVmZmVyQ2hhbmdlZDsKLQotICAgIC8vIFNj
YWxlIGRvd24gaXRlcmF0aW9ucyBmb3Igc2xvd2VyIHRlc3RzLgotICAgIGlmIChpbmRleEJ1ZmZl
ckNoYW5nZWQpCi0gICAgICAgIHBhcmFtcy5pdGVyYXRpb25zUGVyU3RlcCAvPSAxMDA7Ci0KLSAg
ICByZXR1cm4gcGFyYW1zOworICAgIHJ1bigpOwogfQogCi1EcmF3RWxlbWVudHNQZXJmUGFyYW1z
IERyYXdFbGVtZW50c1BlcmZPcGVuR0xPckdMRVNQYXJhbXMoYm9vbCBpbmRleEJ1ZmZlckNoYW5n
ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB1c2VOdWxsRGV2aWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbmRleFR5cGUpCi17Ci0gICAgRHJh
d0VsZW1lbnRzUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSB1
c2VOdWxsRGV2aWNlID8gYW5nbGU6OmVnbF9wbGF0Zm9ybTo6T1BFTkdMX09SX0dMRVNfTlVMTCgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYW5nbGU6OmVnbF9w
bGF0Zm9ybTo6T1BFTkdMX09SX0dMRVMoKTsKLSAgICBwYXJhbXMuaW5kZXhCdWZmZXJDaGFuZ2Vk
ID0gaW5kZXhCdWZmZXJDaGFuZ2VkOwotICAgIHBhcmFtcy50eXBlICAgICAgICAgICAgICAgPSBp
bmRleFR5cGU7Ci0KLSAgICAvLyBTY2FsZSBkb3duIGl0ZXJhdGlvbnMgZm9yIHNsb3dlciB0ZXN0
cy4KLSAgICBpZiAoaW5kZXhCdWZmZXJDaGFuZ2VkKQotICAgICAgICBwYXJhbXMuaXRlcmF0aW9u
c1BlclN0ZXAgLz0gMTAwOwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwordXNpbmcgbmFtZXNwYWNl
IHBhcmFtczsKK3VzaW5nIFAgPSBEcmF3RWxlbWVudHNQZXJmUGFyYW1zOwogCi0gICAgcmV0dXJu
IHBhcmFtczsKLX0KLQotRHJhd0VsZW1lbnRzUGVyZlBhcmFtcyBEcmF3RWxlbWVudHNQZXJmVnVs
a2FuUGFyYW1zKGJvb2wgaW5kZXhCdWZmZXJDaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlTnVsbERldmljZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW5k
ZXhUeXBlKQorUCBDb21iaW5lSW5kZXhUeXBlKGNvbnN0IFAgJmluLCBHTGVudW0gaW5kZXhUeXBl
KQogewotICAgIERyYXdFbGVtZW50c1BlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQ
YXJhbWV0ZXJzID0KLSAgICAgICAgdXNlTnVsbERldmljZSA/IGFuZ2xlOjplZ2xfcGxhdGZvcm06
OlZVTEtBTl9OVUxMKCkgOiBhbmdsZTo6ZWdsX3BsYXRmb3JtOjpWVUxLQU4oKTsKLSAgICBwYXJh
bXMuaW5kZXhCdWZmZXJDaGFuZ2VkID0gaW5kZXhCdWZmZXJDaGFuZ2VkOwotICAgIHBhcmFtcy50
eXBlICAgICAgICAgICAgICAgPSBpbmRleFR5cGU7Ci0KLSAgICAvLyBTY2FsZSBkb3duIGl0ZXJh
dGlvbnMgZm9yIHNsb3dlciB0ZXN0cy4KLSAgICBpZiAoaW5kZXhCdWZmZXJDaGFuZ2VkKQotICAg
ICAgICBwYXJhbXMuaXRlcmF0aW9uc1BlclN0ZXAgLz0gMTAwOwotCi0gICAgcmV0dXJuIHBhcmFt
czsKKyAgICBQIG91dCAgICA9IGluOworICAgIG91dC50eXBlID0gaW5kZXhUeXBlOworICAgIHJl
dHVybiBvdXQ7CiB9CiAKLURyYXdFbGVtZW50c1BlcmZQYXJhbXMgRHJhd0VsZW1lbnRzUGVyZldH
TFBhcmFtcyhib29sIGluZGV4QnVmZmVyQ2hhbmdlZCwgR0xlbnVtIGluZGV4VHlwZSkKK1AgQ29t
YmluZUluZGV4QnVmZmVyQ2hhbmdlZChjb25zdCBQICZpbiwgYm9vbCBpbmRleEJ1ZmZlckNoYW5n
ZWQpCiB7Ci0gICAgRHJhd0VsZW1lbnRzUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmRy
aXZlciA9IGFuZ2xlOjpHTEVTRHJpdmVyVHlwZTo6U3lzdGVtV0dMOwotCi0gICAgcGFyYW1zLmlu
ZGV4QnVmZmVyQ2hhbmdlZCA9IGluZGV4QnVmZmVyQ2hhbmdlZDsKLSAgICBwYXJhbXMudHlwZSAg
ICAgICAgICAgICAgID0gaW5kZXhUeXBlOworICAgIFAgb3V0ICAgICAgICAgICAgICAgICAgPSBp
bjsKKyAgICBvdXQuaW5kZXhCdWZmZXJDaGFuZ2VkID0gaW5kZXhCdWZmZXJDaGFuZ2VkOwogCiAg
ICAgLy8gU2NhbGUgZG93biBpdGVyYXRpb25zIGZvciBzbG93ZXIgdGVzdHMuCiAgICAgaWYgKGlu
ZGV4QnVmZmVyQ2hhbmdlZCkKLSAgICAgICAgcGFyYW1zLml0ZXJhdGlvbnNQZXJTdGVwIC89IDEw
MDsKKyAgICAgICAgb3V0Lml0ZXJhdGlvbnNQZXJTdGVwIC89IDEwMDsKIAotICAgIHJldHVybiBw
YXJhbXM7CisgICAgcmV0dXJuIG91dDsKIH0KIAotVEVTVF9QKERyYXdFbGVtZW50c1BlcmZCZW5j
aG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KK3N0ZDo6dmVjdG9yPEdMZW51bT4gZ0luZGV4
VHlwZXMgPSB7R0xfVU5TSUdORURfSU5ULCBHTF9VTlNJR05FRF9TSE9SVH07CitzdGQ6OnZlY3Rv
cjxQPiBnV2l0aEluZGV4VHlwZSAgID0gQ29tYmluZVdpdGhWYWx1ZXMoe1AoKX0sIGdJbmRleFR5
cGVzLCBDb21iaW5lSW5kZXhUeXBlKTsKK3N0ZDo6dmVjdG9yPFA+IGdXaXRoUmVuZGVyZXIgPQor
ICAgIENvbWJpbmVXaXRoRnVuY3MoZ1dpdGhJbmRleFR5cGUsIHtEM0QxMTxQPiwgR0w8UD4sIFZ1
bGthbjxQPiwgV0dMPFA+fSk7CitzdGQ6OnZlY3RvcjxQPiBnV2l0aENoYW5nZSA9CisgICAgQ29t
YmluZVdpdGhWYWx1ZXMoZ1dpdGhSZW5kZXJlciwge2ZhbHNlLCB0cnVlfSwgQ29tYmluZUluZGV4
QnVmZmVyQ2hhbmdlZCk7CitzdGQ6OnZlY3RvcjxQPiBnV2l0aERldmljZSA9IENvbWJpbmVXaXRo
RnVuY3MoZ1dpdGhDaGFuZ2UsIHtQYXNzdGhyb3VnaDxQPiwgTnVsbERldmljZTxQPn0pOwogCi1B
TkdMRV9JTlNUQU5USUFURV9URVNUKERyYXdFbGVtZW50c1BlcmZCZW5jaG1hcmssCi0gICAgICAg
ICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZEM0Q5UGFyYW1zKGZhbHNlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRzUGVyZkQzRDlQYXJhbXModHJ1ZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZEM0QxMVBhcmFtcyhmYWxzZSwgdHJ1
ZSwgR0xfVU5TSUdORURfSU5UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRz
UGVyZkQzRDExUGFyYW1zKHRydWUsIHRydWUsIEdMX1VOU0lHTkVEX0lOVCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZEM0QxMVBhcmFtcyhmYWxzZSwgZmFsc2UsIEdM
X1VOU0lHTkVEX0lOVCksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZE
M0QxMVBhcmFtcyh0cnVlLCBmYWxzZSwgR0xfVU5TSUdORURfSU5UKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRHJhd0VsZW1lbnRzUGVyZkQzRDExUGFyYW1zKGZhbHNlLCBmYWxzZSwgR0xfVU5T
SUdORURfU0hPUlQpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmRDNE
MTFQYXJhbXMoZmFsc2UsIHRydWUsIEdMX1VOU0lHTkVEX1NIT1JUKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRHJhd0VsZW1lbnRzUGVyZk9wZW5HTE9yR0xFU1BhcmFtcyhmYWxzZSwgZmFsc2Us
IEdMX1VOU0lHTkVEX1NIT1JUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0VsZW1lbnRz
UGVyZk9wZW5HTE9yR0xFU1BhcmFtcyhmYWxzZSwgdHJ1ZSwgR0xfVU5TSUdORURfU0hPUlQpLAot
ICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmT3BlbkdMT3JHTEVTUGFyYW1z
KHRydWUsIGZhbHNlLCBHTF9VTlNJR05FRF9TSE9SVCksCi0gICAgICAgICAgICAgICAgICAgICAg
IERyYXdFbGVtZW50c1BlcmZPcGVuR0xPckdMRVNQYXJhbXMoZmFsc2UsIGZhbHNlLCBHTF9VTlNJ
R05FRF9JTlQpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmT3BlbkdM
T3JHTEVTUGFyYW1zKHRydWUsIGZhbHNlLCBHTF9VTlNJR05FRF9JTlQpLAotICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmVnVsa2FuUGFyYW1zKGZhbHNlLCBmYWxzZSwgR0xf
VU5TSUdORURfU0hPUlQpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJm
VnVsa2FuUGFyYW1zKGZhbHNlLCB0cnVlLCBHTF9VTlNJR05FRF9TSE9SVCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdFbGVtZW50c1BlcmZWdWxrYW5QYXJhbXMoZmFsc2UsIGZhbHNlLCBH
TF9VTlNJR05FRF9JTlQpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJm
VnVsa2FuUGFyYW1zKGZhbHNlLCB0cnVlLCBHTF9VTlNJR05FRF9JTlQpLAotICAgICAgICAgICAg
ICAgICAgICAgICBEcmF3RWxlbWVudHNQZXJmV0dMUGFyYW1zKGZhbHNlLCBHTF9VTlNJR05FRF9T
SE9SVCkpOworQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9BUlJBWShEcmF3RWxlbWVudHNQZXJmQmVu
Y2htYXJrLCBnV2l0aERldmljZSk7CiAKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleHR1
cmVVcGxvYWRQZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL1RleHR1cmVVcGxvYWRQZXJmLmNwcAppbmRleCAxZTVmM2E1OGY4MTIxMjlmMjRlMDNm
NzliODc5YWQ5NmQyYTM2ZGQzLi4xNzA4ZGMzYzk0YzBiNmJjN2NiNjc3M2NhNzk2YjI1NGU5ZDQ0
YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9UZXh0dXJlVXBsb2FkUGVyZi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVVwbG9hZFBlcmYuY3BwCkBAIC00MTgsNyArNDE4
LDYgQEAgQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlVXBsb2FkRnVsbE1pcEJlbmNobWFy
aywKICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkdMT3JHTEVTUGFyYW1zKGZhbHNlKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgT3BlbkdMT3JHTEVTUGFyYW1zKHRydWUpLAogICAgICAgICAg
ICAgICAgICAgICAgICBWdWxrYW5QYXJhbXMoZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAg
ICBOdWxsRGV2aWNlKFZ1bGthblBhcmFtcyhmYWxzZSkpLAogICAgICAgICAgICAgICAgICAgICAg
ICBWdWxrYW5QYXJhbXModHJ1ZSkpOwogCiBBTkdMRV9JTlNUQU5USUFURV9URVNUKFBCT1N1Yklt
YWdlQmVuY2htYXJrLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvVHJhY2VQZXJmVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UcmFjZVBlcmZUZXN0LmNwcAppbmRleCAwNGI5ZjVkMDMx
ZDc5NjQ3ZjFmNjYyYjhjMzY3NjNjMjYyZTFkODk4Li4yMDc3ZTgwMTY1ZmYzMGM5YTYyNDkzYWY0
NDkzZTU1MTE2Y2JiNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9UcmFjZVBlcmZUZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UcmFjZVBlcmZUZXN0LmNwcApAQCAtOCwxNCAr
OCwxNSBAQAogLy8KIAogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAiY29tbW9u
L1BhY2tlZEVudW1zLmgiCiAjaW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgogI2luY2x1
ZGUgInRlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oIgorI2luY2x1ZGUgInRlc3RzL3Bl
cmZfdGVzdHMvRHJhd0NhbGxQZXJmUGFyYW1zLmgiCiAjaW5jbHVkZSAidXRpbC9lZ2xfbG9hZGVy
X2F1dG9nZW4uaCIKKyNpbmNsdWRlICJ1dGlsL2ZyYW1lX2NhcHR1cmVfdXRpbHMuaCIKIAotI2lu
Y2x1ZGUgInJlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMTMwMF8xMzEwL3RyZXhfMTMwMF8xMzEwX2Nh
cHR1cmVfY29udGV4dDEuaCIKLSNpbmNsdWRlICJyZXN0cmljdGVkX3RyYWNlcy90cmV4XzIwMF8y
MTAvdHJleF8yMDBfMjEwX2NhcHR1cmVfY29udGV4dDEuaCIKLSNpbmNsdWRlICJyZXN0cmljdGVk
X3RyYWNlcy90cmV4XzgwMF84MTAvdHJleF84MDBfODEwX2NhcHR1cmVfY29udGV4dDEuaCIKLSNp
bmNsdWRlICJyZXN0cmljdGVkX3RyYWNlcy90cmV4XzkwMF85MTAvdHJleF85MDBfOTEwX2NhcHR1
cmVfY29udGV4dDEuaCIKKyNpbmNsdWRlICJyZXN0cmljdGVkX3RyYWNlcy9tYW5oYXR0YW5fMTAv
bWFuaGF0dGFuXzEwX2NhcHR1cmVfY29udGV4dDEuaCIKKyNpbmNsdWRlICJyZXN0cmljdGVkX3Ry
YWNlcy90cmV4XzIwMC90cmV4XzIwMF9jYXB0dXJlX2NvbnRleHQxLmgiCiAKICNpbmNsdWRlIDxj
YXNzZXJ0PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBAIC0yNiwxMyArMjcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIGVnbF9wbGF0Zm9ybTsKIAogbmFtZXNwYWNlCiB7Cit2b2lkIEZyYW1lYnVmZmVy
Q2hhbmdlQ2FsbGJhY2sodm9pZCAqdXNlckRhdGEsIEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFt
ZWJ1ZmZlcik7CiAKIGVudW0gY2xhc3MgVHJhY2VQZXJmVGVzdElECiB7CisgICAgTWFuaGF0dGFu
MTAsCiAgICAgVFJleDIwMCwKLSAgICBUUmV4ODAwLAotICAgIFRSZXg5MDAsCi0gICAgVFJleDEz
MDAsCisgICAgSW52YWxpZEVudW0sCiB9OwogCiBzdHJ1Y3QgVHJhY2VQZXJmUGFyYW1zIGZpbmFs
IDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKQEAgLTQwLDcgKzQxLDcgQEAgc3RydWN0IFRyYWNl
UGVyZlBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCiAgICAgLy8gQ29tbW9u
IGRlZmF1bHQgb3B0aW9ucwogICAgIFRyYWNlUGVyZlBhcmFtcygpCiAgICAgewotICAgICAgICBt
YWpvclZlcnNpb24gPSAyOworICAgICAgICBtYWpvclZlcnNpb24gPSAzOwogICAgICAgICBtaW5v
clZlcnNpb24gPSAwOwogICAgICAgICB3aW5kb3dXaWR0aCAgPSAxOTIwOwogICAgICAgICB3aW5k
b3dIZWlnaHQgPSAxMDgwOwpAQCAtNTgsMTggKzU5LDEyIEBAIHN0cnVjdCBUcmFjZVBlcmZQYXJh
bXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcwogCiAgICAgICAgIHN3aXRjaCAodGVz
dElEKQogICAgICAgICB7CisgICAgICAgICAgICBjYXNlIFRyYWNlUGVyZlRlc3RJRDo6TWFuaGF0
dGFuMTA6CisgICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICJfbWFuaGF0dGFuXzEwIjsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElEOjpUUmV4
MjAwOgogICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAiX3RyZXhfMjAwIjsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElEOjpUUmV4ODAwOgot
ICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAiX3RyZXhfODAwIjsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElEOjpUUmV4OTAwOgotICAgICAg
ICAgICAgICAgIHN0cnN0ciA8PCAiX3RyZXhfOTAwIjsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElEOjpUUmV4MTMwMDoKLSAgICAgICAgICAg
ICAgICBzdHJzdHIgPDwgIl90cmV4XzEzMDAiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC05Niw1MSArOTEsNzEgQEAgY2xhc3MgVHJhY2VQZXJmVGVzdCA6IHB1
YmxpYyBBTkdMRVJlbmRlclRlc3QsIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmEK
ICAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdCZW5j
aG1hcmsoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgb25GcmFtZWJ1ZmZlckNoYW5nZShHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpOworCiAgICAgdWludDMyX3QgbVN0YXJ0RnJhbWU7
CiAgICAgdWludDMyX3QgbUVuZEZyYW1lOwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCh1aW50MzJf
dCk+IG1SZXBsYXlGdW5jOworCisgICAgZG91YmxlIGdldEhvc3RUaW1lRnJvbUdMVGltZShHTGlu
dDY0IGdsVGltZSk7CisKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUXVlcnlJbmZvCisgICAgewor
ICAgICAgICBHTHVpbnQgYmVnaW5UaW1lc3RhbXBRdWVyeTsKKyAgICAgICAgR0x1aW50IGVuZFRp
bWVzdGFtcFF1ZXJ5OworICAgICAgICBHTHVpbnQgZnJhbWVidWZmZXI7CisgICAgfTsKKworICAg
IHN0cnVjdCBUaW1lU2FtcGxlCisgICAgeworICAgICAgICBHTGludDY0IGdsVGltZTsKKyAgICAg
ICAgZG91YmxlIGhvc3RUaW1lOworICAgIH07CisKKyAgICB2b2lkIHNhbXBsZVRpbWUoKTsKKwor
ICAgIC8vIEZvciB0cmFja2luZyBSZW5kZXJQYXNzL0ZCTyBjaGFuZ2UgdGltaW5nLgorICAgIFF1
ZXJ5SW5mbyBtQ3VycmVudFF1ZXJ5ID0ge307CisgICAgc3RkOjp2ZWN0b3I8UXVlcnlJbmZvPiBt
UnVubmluZ1F1ZXJpZXM7CisgICAgc3RkOjp2ZWN0b3I8VGltZVNhbXBsZT4gbVRpbWVsaW5lOwor
CisgICAgc3RkOjpzdHJpbmcgbVN0YXJ0aW5nRGlyZWN0b3J5OwogfTsKIAogVHJhY2VQZXJmVGVz
dDo6VHJhY2VQZXJmVGVzdCgpCiAgICAgOiBBTkdMRVJlbmRlclRlc3QoIlRyYWNlUGVyZiIsIEdl
dFBhcmFtKCkpLCBtU3RhcnRGcmFtZSgwKSwgbUVuZEZyYW1lKDApCiB7fQogCisvLyBUT0RPKGpt
YWRpbGwvY25vcnRocm9wKTogVXNlIGRlY29tcHJlc3Npb24gcGF0aC4gaHR0cDovL2FuZ2xlYnVn
LmNvbS8zNjMwCisjZGVmaW5lIFRSQUNFX1RFU1RfQ0FTRShOQU1FKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBtU3RhcnRGcmFtZSA9IE5BTUU6OmtSZXBsYXlGcmFt
ZVN0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG1FbmRGcmFtZSAgID0gTkFNRTo6
a1JlcGxheUZyYW1lRW5kOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbVJlcGxheUZ1
bmMgPSBOQU1FOjpSZXBsYXlDb250ZXh0MUZyYW1lOyAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBOQU1FOjpTZXRCaW5hcnlEYXRhRGVjb21wcmVzc0NhbGxiYWNrKERlY29tcHJlc3NCaW5hcnlE
YXRhKTsgXAorICAgIE5BTUU6OlNldEJpbmFyeURhdGFEaXIoQU5HTEVfVFJBQ0VfREFUQV9ESVJf
IyNOQU1FKTsgICAgICAgICBcCisgICAgTkFNRTo6U2V0dXBDb250ZXh0MVJlcGxheSgpCisKIHZv
aWQgVHJhY2VQZXJmVGVzdDo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCiB7CiAgICAgY29uc3QgYXV0
byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKIAotICAgIC8vIFRPRE86IE5vdGUgdGhlIHN0YXJ0IGFu
ZCBlbmQgZnJhbWVzIGluIHRoZSB0cmFjZQotICAgIC8vICAgICAgIGkuZS4gbVN0YXJ0RnJhbWUg
PSB0cmV4XzIwMF8yMTA6OmtSZXBsYXlGcmFtZVN0YXJ0CisgICAgbVN0YXJ0aW5nRGlyZWN0b3J5
ID0gYW5nbGU6OkdldENXRCgpLnZhbHVlKCk7CisKKyAgICAvLyBUbyBsb2FkIHRoZSB0cmFjZSBk
YXRhIHBhdGggY29ycmVjdGx5IHdlIHNldCB0aGUgQ1dEIHRvIHRoZSBleGVjdXRhYmxlIGRpci4K
KyAgICBpZiAoIUlzQW5kcm9pZCgpKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZXhlRGly
ID0gYW5nbGU6OkdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKKyAgICAgICAgYW5nbGU6OlNldENX
RChleGVEaXIuY19zdHIoKSk7CisgICAgfQorCiAgICAgc3dpdGNoIChwYXJhbXMudGVzdElEKQog
ICAgIHsKLSAgICAgICAgLy8gRm9yIGVhY2ggY2FzZSwgYm9vdHN0cmFwIHRoZSB0cmFjZQotICAg
ICAgICBjYXNlIFRyYWNlUGVyZlRlc3RJRDo6VFJleDIwMDoKLSAgICAgICAgICAgIG1TdGFydEZy
YW1lID0gMjAwOwotICAgICAgICAgICAgbUVuZEZyYW1lICAgPSAyMTA7Ci0gICAgICAgICAgICBt
UmVwbGF5RnVuYyA9IHRyZXhfMjAwXzIxMDo6UmVwbGF5Q29udGV4dDFGcmFtZTsKLSAgICAgICAg
ICAgIHRyZXhfMjAwXzIxMDo6U2V0QmluYXJ5RGF0YURpcihBTkdMRV9UUkFDRV9EQVRBX0RJUl90
cmV4XzIwMF8yMTApOwotICAgICAgICAgICAgdHJleF8yMDBfMjEwOjpTZXR1cENvbnRleHQxUmVw
bGF5KCk7CisgICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElEOjpNYW5oYXR0YW4xMDoKKyAgICAg
ICAgICAgIFRSQUNFX1RFU1RfQ0FTRShtYW5oYXR0YW5fMTApOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElEOjpUUmV4ODAwOgotICAgICAgICAgICAgbVN0
YXJ0RnJhbWUgPSA4MDA7Ci0gICAgICAgICAgICBtRW5kRnJhbWUgICA9IDgxMDsKLSAgICAgICAg
ICAgIG1SZXBsYXlGdW5jID0gdHJleF84MDBfODEwOjpSZXBsYXlDb250ZXh0MUZyYW1lOwotICAg
ICAgICAgICAgdHJleF84MDBfODEwOjpTZXRCaW5hcnlEYXRhRGlyKEFOR0xFX1RSQUNFX0RBVEFf
RElSX3RyZXhfODAwXzgxMCk7Ci0gICAgICAgICAgICB0cmV4XzgwMF84MTA6OlNldHVwQ29udGV4
dDFSZXBsYXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyYWNlUGVyZlRl
c3RJRDo6VFJleDkwMDoKLSAgICAgICAgICAgIG1TdGFydEZyYW1lID0gOTAwOwotICAgICAgICAg
ICAgbUVuZEZyYW1lICAgPSA5MTA7Ci0gICAgICAgICAgICBtUmVwbGF5RnVuYyA9IHRyZXhfOTAw
XzkxMDo6UmVwbGF5Q29udGV4dDFGcmFtZTsKLSAgICAgICAgICAgIHRyZXhfOTAwXzkxMDo6U2V0
QmluYXJ5RGF0YURpcihBTkdMRV9UUkFDRV9EQVRBX0RJUl90cmV4XzkwMF85MTApOwotICAgICAg
ICAgICAgdHJleF85MDBfOTEwOjpTZXR1cENvbnRleHQxUmVwbGF5KCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXgxMzAwOgotICAgICAgICAg
ICAgbVN0YXJ0RnJhbWUgPSAxMzAwOwotICAgICAgICAgICAgbUVuZEZyYW1lICAgPSAxMzEwOwot
ICAgICAgICAgICAgbVJlcGxheUZ1bmMgPSB0cmV4XzEzMDBfMTMxMDo6UmVwbGF5Q29udGV4dDFG
cmFtZTsKLSAgICAgICAgICAgIHRyZXhfMTMwMF8xMzEwOjpTZXRCaW5hcnlEYXRhRGlyKEFOR0xF
X1RSQUNFX0RBVEFfRElSX3RyZXhfMTMwMF8xMzEwKTsKLSAgICAgICAgICAgIHRyZXhfMTMwMF8x
MzEwOjpTZXR1cENvbnRleHQxUmVwbGF5KCk7CisgICAgICAgIGNhc2UgVHJhY2VQZXJmVGVzdElE
OjpUUmV4MjAwOgorICAgICAgICAgICAgVFJBQ0VfVEVTVF9DQVNFKHRyZXhfMjAwKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYXNzZXJ0KDApOwpA
QCAtMTUyLDgzICsxNjcsMTU5IEBAIHZvaWQgVHJhY2VQZXJmVGVzdDo6aW5pdGlhbGl6ZUJlbmNo
bWFyaygpCiAgICAgZ2V0V2luZG93KCktPnNldFZpc2libGUodHJ1ZSk7CiB9CiAKLXZvaWQgVHJh
Y2VQZXJmVGVzdDo6ZGVzdHJveUJlbmNobWFyaygpIHt9CisjdW5kZWYgVFJBQ0VfVEVTVF9DQVNF
CisKK3ZvaWQgVHJhY2VQZXJmVGVzdDo6ZGVzdHJveUJlbmNobWFyaygpCit7CisgICAgLy8gSW4g
b3JkZXIgZm9yIHRoZSBuZXh0IHRlc3QgdG8gbG9hZCwgcmVzdG9yZSB0aGUgd29ya2luZyBkaXJl
Y3RvcnkKKyAgICBhbmdsZTo6U2V0Q1dEKG1TdGFydGluZ0RpcmVjdG9yeS5jX3N0cigpKTsKK30K
Kwordm9pZCBUcmFjZVBlcmZUZXN0OjpzYW1wbGVUaW1lKCkKK3sKKyAgICBpZiAobUlzVGltZXN0
YW1wUXVlcnlBdmFpbGFibGUpCisgICAgeworICAgICAgICBHTGludDY0IGdsVGltZTsKKyAgICAg
ICAgLy8gZ2xHZXRJbnRlZ2VyNjR2RVhUIGlzIGV4cG9ydGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9m
IHRoZSB0aW1lciBxdWVyeSBleHRlbnNpb25zLgorICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IG9u
bHkgdGhlIGNvcmUgRVAgaXMgZXhwb3NlZCBieSBzb21lIGRlc2t0b3AgZHJpdmVycyAoZS5nLiBO
VklESUEpLgorICAgICAgICBpZiAoZ2xHZXRJbnRlZ2VyNjR2RVhUKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbEdldEludGVnZXI2NHZFWFQoR0xfVElNRVNUQU1QX0VYVCwgJmdsVGltZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBnbEdldEludGVn
ZXI2NHYoR0xfVElNRVNUQU1QX0VYVCwgJmdsVGltZSk7CisgICAgICAgIH0KKyAgICAgICAgbVRp
bWVsaW5lLnB1c2hfYmFjayh7Z2xUaW1lLCBhbmdsZTo6R2V0SG9zdFRpbWVTZWNvbmRzKCl9KTsK
KyAgICB9Cit9CiAKIHZvaWQgVHJhY2VQZXJmVGVzdDo6ZHJhd0JlbmNobWFyaygpCiB7CisgICAg
Ly8gQWRkIGEgdGltZSBzYW1wbGUgZnJvbSBHTCBhbmQgdGhlIGhvc3QuCisgICAgc2FtcGxlVGlt
ZSgpOworCiAgICAgc3RhcnRHcHVUaW1lcigpOwogCiAgICAgZm9yICh1aW50MzJfdCBmcmFtZSA9
IG1TdGFydEZyYW1lOyBmcmFtZSA8IG1FbmRGcmFtZTsgKytmcmFtZSkKICAgICB7CisgICAgICAg
IGNoYXIgZnJhbWVOYW1lWzMyXTsKKyAgICAgICAgc3ByaW50ZihmcmFtZU5hbWUsICJGcmFtZSAl
dSIsIGZyYW1lKTsKKyAgICAgICAgYmVnaW5JbnRlcm5hbFRyYWNlRXZlbnQoZnJhbWVOYW1lKTsK
KwogICAgICAgICBtUmVwbGF5RnVuYyhmcmFtZSk7CiAgICAgICAgIGdldEdMV2luZG93KCktPnN3
YXAoKTsKKworICAgICAgICBlbmRJbnRlcm5hbFRyYWNlRXZlbnQoZnJhbWVOYW1lKTsKKyAgICB9
CisKKyAgICAvLyBQcm9jZXNzIGFueSBydW5uaW5nIHF1ZXJpZXMgb25jZSBwZXIgaXRlcmF0aW9u
LgorICAgIGZvciAoc2l6ZV90IHF1ZXJ5SW5kZXggPSAwOyBxdWVyeUluZGV4IDwgbVJ1bm5pbmdR
dWVyaWVzLnNpemUoKTspCisgICAgeworICAgICAgICBjb25zdCBRdWVyeUluZm8gJnF1ZXJ5ID0g
bVJ1bm5pbmdRdWVyaWVzW3F1ZXJ5SW5kZXhdOworCisgICAgICAgIEdMdWludCBlbmRSZXN1bHRB
dmFpbGFibGUgPSAwOworICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5LmVuZFRp
bWVzdGFtcFF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZlbmRSZXN1bHRBdmFpbGFibGUpOworCisgICAgICAgIGlmIChlbmRS
ZXN1bHRBdmFpbGFibGUgPT0gR0xfVFJVRSkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciBm
Ym9OYW1lWzMyXTsKKyAgICAgICAgICAgIHNwcmludGYoZmJvTmFtZSwgIkZCTyAldSIsIHF1ZXJ5
LmZyYW1lYnVmZmVyKTsKKworICAgICAgICAgICAgR0xpbnQ2NCBiZWdpblRpbWVzdGFtcCA9IDA7
CisgICAgICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVChxdWVyeS5iZWdpblRpbWVzdGFt
cFF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFQsICZiZWdpblRpbWVzdGFtcCk7CisgICAgICAgICAgICBn
bERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5LmJlZ2luVGltZXN0YW1wUXVlcnkpOworICAgICAg
ICAgICAgZG91YmxlIGJlZ2luSG9zdFRpbWUgPSBnZXRIb3N0VGltZUZyb21HTFRpbWUoYmVnaW5U
aW1lc3RhbXApOworICAgICAgICAgICAgYmVnaW5HTFRyYWNlRXZlbnQoZmJvTmFtZSwgYmVnaW5I
b3N0VGltZSk7CisKKyAgICAgICAgICAgIEdMaW50NjQgZW5kVGltZXN0YW1wID0gMDsKKyAgICAg
ICAgICAgIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUKHF1ZXJ5LmVuZFRpbWVzdGFtcFF1ZXJ5LCBH
TF9RVUVSWV9SRVNVTFQsICZlbmRUaW1lc3RhbXApOworICAgICAgICAgICAgZ2xEZWxldGVRdWVy
aWVzRVhUKDEsICZxdWVyeS5lbmRUaW1lc3RhbXBRdWVyeSk7CisgICAgICAgICAgICBkb3VibGUg
ZW5kSG9zdFRpbWUgPSBnZXRIb3N0VGltZUZyb21HTFRpbWUoZW5kVGltZXN0YW1wKTsKKyAgICAg
ICAgICAgIGVuZEdMVHJhY2VFdmVudChmYm9OYW1lLCBlbmRIb3N0VGltZSk7CisKKyAgICAgICAg
ICAgIG1SdW5uaW5nUXVlcmllcy5lcmFzZShtUnVubmluZ1F1ZXJpZXMuYmVnaW4oKSArIHF1ZXJ5
SW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
cXVlcnlJbmRleCsrOworICAgICAgICB9CiAgICAgfQogCiAgICAgc3RvcEdwdVRpbWVyKCk7CiB9
CiAKLVRyYWNlUGVyZlBhcmFtcyBUUmV4UmVwbGF5UGVyZk9wZW5HTE9yR0xFU1BhcmFtc18yMDBf
MjEwKCkKKy8vIENvbnZlcnRzIGEgR0wgdGltZXN0YW1wIGludG8gYSBob3N0LXNpZGUgQ1BVIHRp
bWUgYWxpZ25lZCB3aXRoICJHZXRIb3N0VGltZVNlY29uZHMiLgorLy8gVGhpcyBjaGVjayBpcyBu
ZWNlc3NhcnkgdG8gbGluZSB1cCBzYW1wbGVkIHRyYWNlIGV2ZW50cyBpbiBhIGNvbnNpc3RlbnQg
dGltZWxpbmUuCisvLyBVc2VzIGEgbGluZWFyIGludGVycG9sYXRpb24gZnJvbSBhIHNlcmllcyBv
ZiBzYW1wbGVzLiBXZSBkbyBhIGJsb2NraW5nIGNhbGwgdG8gc2FtcGxlCisvLyBib3RoIGhvc3Qg
YW5kIEdMIHRpbWUgb25jZSBwZXIgc3dhcC4gV2UgdGhlbiBmaW5kIHRoZSB0d28gY2xvc2VzdCBH
TCB0aW1lc3RhbXBzIGFuZAorLy8gaW50ZXJwb2xhdGUgdGhlIGhvc3QgdGltZXMgYmV0d2VlbiB0
aGVtIHRvIGNvbXB1dGUgb3VyIHJlc3VsdC4gSWYgd2UgYXJlIHBhc3QgdGhlIGxhc3QKKy8vIEdM
IHRpbWVzdGFtcCB3ZSBzYW1wbGUgYSBuZXcgZGF0YSBwb2ludCBwYWlyLgorZG91YmxlIFRyYWNl
UGVyZlRlc3Q6OmdldEhvc3RUaW1lRnJvbUdMVGltZShHTGludDY0IGdsVGltZSkKIHsKLSAgICBU
cmFjZVBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gT1BFTkdM
X09SX0dMRVMoKTsKLSAgICBwYXJhbXMudGVzdElEICAgICAgICA9IFRyYWNlUGVyZlRlc3RJRDo6
VFJleDIwMDsKLSAgICByZXR1cm4gcGFyYW1zOwotfQorICAgIC8vIEZpbmQgdHdvIHNhbXBsZXMg
dG8gZG8gYSBsZXJwLgorICAgIHNpemVfdCBmaXJzdFNhbXBsZUluZGV4ID0gbVRpbWVsaW5lLnNp
emUoKSAtIDE7CisgICAgd2hpbGUgKGZpcnN0U2FtcGxlSW5kZXggPiAwKQorICAgIHsKKyAgICAg
ICAgaWYgKG1UaW1lbGluZVtmaXJzdFNhbXBsZUluZGV4XS5nbFRpbWUgPCBnbFRpbWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZpcnN0U2FtcGxl
SW5kZXgtLTsKKyAgICB9CiAKLVRyYWNlUGVyZlBhcmFtcyBUUmV4UmVwbGF5UGVyZk9wZW5HTE9y
R0xFU1BhcmFtc184MDBfODEwKCkKLXsKLSAgICBUcmFjZVBlcmZQYXJhbXMgcGFyYW1zOwotICAg
IHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gT1BFTkdMX09SX0dMRVMoKTsKLSAgICBwYXJhbXMudGVz
dElEICAgICAgICA9IFRyYWNlUGVyZlRlc3RJRDo6VFJleDgwMDsKLSAgICByZXR1cm4gcGFyYW1z
OwotfQorICAgIC8vIEFkZCBhbiBleHRyYSBzYW1wbGUgaWYgd2UncmUgbWlzc2luZyBhbiBlbmRp
bmcgc2FtcGxlLgorICAgIGlmIChmaXJzdFNhbXBsZUluZGV4ID09IG1UaW1lbGluZS5zaXplKCkg
LSAxKQorICAgIHsKKyAgICAgICAgc2FtcGxlVGltZSgpOworICAgIH0KIAotVHJhY2VQZXJmUGFy
YW1zIFRSZXhSZXBsYXlQZXJmT3BlbkdMT3JHTEVTUGFyYW1zXzkwMF85MTAoKQotewotICAgIFRy
YWNlUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBPUEVOR0xf
T1JfR0xFUygpOwotICAgIHBhcmFtcy50ZXN0SUQgICAgICAgID0gVHJhY2VQZXJmVGVzdElEOjpU
UmV4OTAwOwotICAgIHJldHVybiBwYXJhbXM7Ci19CisgICAgY29uc3QgVGltZVNhbXBsZSAmc3Rh
cnQgPSBtVGltZWxpbmVbZmlyc3RTYW1wbGVJbmRleF07CisgICAgY29uc3QgVGltZVNhbXBsZSAm
ZW5kICAgPSBtVGltZWxpbmVbZmlyc3RTYW1wbGVJbmRleCArIDFdOwogCi1UcmFjZVBlcmZQYXJh
bXMgVFJleFJlcGxheVBlcmZPcGVuR0xPckdMRVNQYXJhbXNfMTMwMF8xMzEwKCkKLXsKLSAgICBU
cmFjZVBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gT1BFTkdM
X09SX0dMRVMoKTsKLSAgICBwYXJhbXMudGVzdElEICAgICAgICA9IFRyYWNlUGVyZlRlc3RJRDo6
VFJleDEzMDA7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KKyAgICAvLyBOb3RlOiB3ZSBoYXZlIG9i
c2VydmVkIGluIHNvbWUgb2RkIGNhc2VzIGxhdGVyIHRpbWVzdGFtcHMgcHJvZHVjaW5nIHZhbHVl
cyB0aGF0IGFyZQorICAgIC8vIHNtYWxsZXIgdGhhbiBwcmVjZWRpbmcgdGltZXN0YW1wcy4gVGhp
cyBiZWFycyBmdXJ0aGVyIGludmVzdGlnYXRpb24uCiAKLVRyYWNlUGVyZlBhcmFtcyBUUmV4UmVw
bGF5UGVyZlZ1bGthblBhcmFtc18yMDBfMjEwKCkKLXsKLSAgICBUcmFjZVBlcmZQYXJhbXMgcGFy
YW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gVlVMS0FOKCk7Ci0gICAgcGFyYW1zLnRl
c3RJRCAgICAgICAgPSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXgyMDA7Ci0gICAgcmV0dXJuIHBhcmFt
czsKLX0KKyAgICAvLyBDb21wdXRlIHRoZSBzY2FsaW5nIGZhY3RvciBmb3IgdGhlIGxlcnAuCisg
ICAgZG91YmxlIGdsRGVsdGEgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGdsVGltZSAtIHN0YXJ0Lmds
VGltZSk7CisgICAgZG91YmxlIGdsUmFuZ2UgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGVuZC5nbFRp
bWUgLSBzdGFydC5nbFRpbWUpOworICAgIGRvdWJsZSB0ICAgICAgID0gZ2xEZWx0YSAvIGdsUmFu
Z2U7CiAKLVRyYWNlUGVyZlBhcmFtcyBUUmV4UmVwbGF5UGVyZlZ1bGthblBhcmFtc184MDBfODEw
KCkKLXsKLSAgICBUcmFjZVBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0
ZXJzID0gVlVMS0FOKCk7Ci0gICAgcGFyYW1zLnRlc3RJRCAgICAgICAgPSBUcmFjZVBlcmZUZXN0
SUQ6OlRSZXg4MDA7Ci0gICAgcmV0dXJuIHBhcmFtczsKKyAgICAvLyBMZXJwKHQxLCB0MiwgdCkK
KyAgICBkb3VibGUgaG9zdFJhbmdlID0gZW5kLmhvc3RUaW1lIC0gc3RhcnQuaG9zdFRpbWU7Cisg
ICAgcmV0dXJuIG1UaW1lbGluZVtmaXJzdFNhbXBsZUluZGV4XS5ob3N0VGltZSArIGhvc3RSYW5n
ZSAqIHQ7CiB9CiAKLVRyYWNlUGVyZlBhcmFtcyBUUmV4UmVwbGF5UGVyZlZ1bGthblBhcmFtc185
MDBfOTEwKCkKKy8vIENhbGxiYWNrIGZyb20gdGhlIHBlcmYgdGVzdHMuCit2b2lkIFRyYWNlUGVy
ZlRlc3Q6Om9uRnJhbWVidWZmZXJDaGFuZ2UoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVm
ZmVyKQogewotICAgIFRyYWNlUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFt
ZXRlcnMgPSBWVUxLQU4oKTsKLSAgICBwYXJhbXMudGVzdElEICAgICAgICA9IFRyYWNlUGVyZlRl
c3RJRDo6VFJleDkwMDsKLSAgICByZXR1cm4gcGFyYW1zOworICAgIGlmICghbUlzVGltZXN0YW1w
UXVlcnlBdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh0YXJnZXQgIT0gR0xf
RlJBTUVCVUZGRVIgJiYgdGFyZ2V0ICE9IEdMX0RSQVdfRlJBTUVCVUZGRVIpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFdlIGhhdmUgYXQgbW9zdCBvbmUgYWN0aXZlIHRpbWVzdGFtcCBxdWVy
eSBhdCBhIHRpbWUuIFRoaXMgY29kZSB3aWxsIGVuZCB0aGUgY3VycmVudCBxdWVyeQorICAgIC8v
IGFuZCBpbW1lZGlhdGVseSBzdGFydCBhIG5ldyBvbmUuCisgICAgaWYgKG1DdXJyZW50UXVlcnku
YmVnaW5UaW1lc3RhbXBRdWVyeSAhPSAwKQorICAgIHsKKyAgICAgICAgZ2xHZW5RdWVyaWVzRVhU
KDEsICZtQ3VycmVudFF1ZXJ5LmVuZFRpbWVzdGFtcFF1ZXJ5KTsKKyAgICAgICAgZ2xRdWVyeUNv
dW50ZXJFWFQobUN1cnJlbnRRdWVyeS5lbmRUaW1lc3RhbXBRdWVyeSwgR0xfVElNRVNUQU1QX0VY
VCk7CisgICAgICAgIG1SdW5uaW5nUXVlcmllcy5wdXNoX2JhY2sobUN1cnJlbnRRdWVyeSk7Cisg
ICAgICAgIG1DdXJyZW50UXVlcnkgPSB7fTsKKyAgICB9CisKKyAgICBBU1NFUlQobUN1cnJlbnRR
dWVyeS5iZWdpblRpbWVzdGFtcFF1ZXJ5ID09IDApOworCisgICAgZ2xHZW5RdWVyaWVzRVhUKDEs
ICZtQ3VycmVudFF1ZXJ5LmJlZ2luVGltZXN0YW1wUXVlcnkpOworICAgIGdsUXVlcnlDb3VudGVy
RVhUKG1DdXJyZW50UXVlcnkuYmVnaW5UaW1lc3RhbXBRdWVyeSwgR0xfVElNRVNUQU1QX0VYVCk7
CisgICAgbUN1cnJlbnRRdWVyeS5mcmFtZWJ1ZmZlciA9IGZyYW1lYnVmZmVyOwogfQogCi1UcmFj
ZVBlcmZQYXJhbXMgVFJleFJlcGxheVBlcmZWdWxrYW5QYXJhbXNfMTMwMF8xMzEwKCkKK0FOR0xF
X01BWUJFX1VOVVNFRCB2b2lkIEZyYW1lYnVmZmVyQ2hhbmdlQ2FsbGJhY2sodm9pZCAqdXNlckRh
dGEsIEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIHsKLSAgICBUcmFjZVBlcmZQ
YXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gVlVMS0FOKCk7Ci0gICAg
cGFyYW1zLnRlc3RJRCAgICAgICAgPSBUcmFjZVBlcmZUZXN0SUQ6OlRSZXgxMzAwOwotICAgIHJl
dHVybiBwYXJhbXM7CisgICAgcmVpbnRlcnByZXRfY2FzdDxUcmFjZVBlcmZUZXN0ICo+KHVzZXJE
YXRhKS0+b25GcmFtZWJ1ZmZlckNoYW5nZSh0YXJnZXQsIGZyYW1lYnVmZmVyKTsKIH0KIAogVEVT
VF9QKFRyYWNlUGVyZlRlc3QsIFJ1bikKQEAgLTIzNiwxNCArMzI3LDE4IEBAIFRFU1RfUChUcmFj
ZVBlcmZUZXN0LCBSdW4pCiAgICAgcnVuKCk7CiB9CiAKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
VHJhY2VQZXJmVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgVFJleFJlcGxheVBlcmZPcGVu
R0xPckdMRVNQYXJhbXNfMjAwXzIxMCgpLAotICAgICAgICAgICAgICAgICAgICAgICBUUmV4UmVw
bGF5UGVyZk9wZW5HTE9yR0xFU1BhcmFtc184MDBfODEwKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIFRSZXhSZXBsYXlQZXJmT3BlbkdMT3JHTEVTUGFyYW1zXzkwMF85MTAoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgVFJleFJlcGxheVBlcmZPcGVuR0xPckdMRVNQYXJhbXNfMTMwMF8xMzEw
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIFRSZXhSZXBsYXlQZXJmVnVsa2FuUGFyYW1zXzIw
MF8yMTAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgVFJleFJlcGxheVBlcmZWdWxrYW5QYXJh
bXNfODAwXzgxMCgpLAotICAgICAgICAgICAgICAgICAgICAgICBUUmV4UmVwbGF5UGVyZlZ1bGth
blBhcmFtc185MDBfOTEwKCksCi0gICAgICAgICAgICAgICAgICAgICAgIFRSZXhSZXBsYXlQZXJm
VnVsa2FuUGFyYW1zXzEzMDBfMTMxMCgpKTsKK1RyYWNlUGVyZlBhcmFtcyBDb21iaW5lVGVzdElE
KGNvbnN0IFRyYWNlUGVyZlBhcmFtcyAmaW4sIFRyYWNlUGVyZlRlc3RJRCBpZCkKK3sKKyAgICBU
cmFjZVBlcmZQYXJhbXMgb3V0ID0gaW47CisgICAgb3V0LnRlc3RJRCAgICAgICAgICA9IGlkOwor
ICAgIHJldHVybiBvdXQ7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSBwYXJhbXM7Cit1c2luZyBQID0g
VHJhY2VQZXJmUGFyYW1zOworCitzdGQ6OnZlY3RvcjxQPiBnVGVzdHNXaXRoSUQgPSBDb21iaW5l
V2l0aFZhbHVlcyh7UCgpfSwgQWxsRW51bXM8VHJhY2VQZXJmVGVzdElEPigpLCBDb21iaW5lVGVz
dElEKTsKK3N0ZDo6dmVjdG9yPFA+IGdUZXN0c1dpdGhSZW5kZXJlciA9IENvbWJpbmVXaXRoRnVu
Y3MoZ1Rlc3RzV2l0aElELCB7VnVsa2FuPFA+fSk7CitBTkdMRV9JTlNUQU5USUFURV9URVNUX0FS
UkFZKFRyYWNlUGVyZlRlc3QsIGdUZXN0c1dpdGhSZW5kZXJlcik7CiAKIH0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL2dsbWFyazJCZW5jaG1hcmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvZ2xtYXJrMkJlbmNobWFyay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDEzYmIyNGJkN2UzZDYyOTc2NzBkMmYwNGJkNzRlMzA4NTQ3MDQ3YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL2dsbWFyazJC
ZW5jaG1hcmsuY3BwCkBAIC0wLDAgKzEsMzAwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTkgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gZ2xtYXJrMkJlbmNo
bWFyazoKKy8vICAgUnVucyB0aGUgZ2xtYXJrMiBiZW5jaG1hcmsuCisvLworCisjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3N0cmVhbT4K
KworI2luY2x1ZGUgIi4uL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Jlc3VsdF9y
ZXBvcnRlci5oIgorI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3RBcmdzLmgiCisjaW5jbHVkZSAiY29t
bW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgorI2luY2x1
ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCisjaW5jbHVkZSAidGVzdF91dGls
cy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiCisjaW5jbHVkZSAidXRpbC90ZXN0X3V0aWxzLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK3N0cnVjdCBCZW5j
aG1hcmtJbmZvCit7CisgICAgY29uc3QgY2hhciAqZ2xtYXJrMkNvbmZpZzsKKyAgICBjb25zdCBj
aGFyICpuYW1lOworfTsKKworLy8gRWFjaCBnbG1hcmsyIHNjZW5lIGlzIGluZGl2aWR1YWxseSBi
ZW5jaG1hcmtlZC4gIElmIGdsbWFyazIgaXMgcnVuIHdpdGhvdXQgYSBzcGVjaWZpYyBiZW5jaG1h
cmssCisvLyBpdCBjYW4gcHJvZHVjZSBhbiBhZ2dyZWdhdGUgc2NvcmUsIHdoaWNoIGlzIG5vdCBp
bnRlcmVzdGluZyBhdCB0aGUgbW9tZW50LiAgQWRkaW5nIGFuIGVtcHR5CisvLyBzdHJpbmcgKCIi
KSB0byB0aGlzIGxpc3Qgd2lsbCBlbmFibGUgYSB0ZXN0IHdoZXJlIGdsbWFyazIgaXMgcnVuIHdp
dGggdGhlIGRlZmF1bHQgc2NlbmVzIGFuZCB0aGUKKy8vIHNjb3JlIGZvciBlYWNoIHRlc3QgYXMg
d2VsbCBhcyB0aGUgb3ZlcmFsbCBzY29yZSBpcyBvdXRwdXQuCitjb25zdGV4cHIgQmVuY2htYXJr
SW5mbyBrQmVuY2htYXJrc1tdID0geworICAgIHsiYnVpbGQ6dXNlLXZibz1mYWxzZSIsICJidWls
ZCJ9LAorICAgIHsiYnVpbGQ6dXNlLXZibz10cnVlIiwgImJ1aWxkX3ZibyJ9LAorICAgIHsidGV4
dHVyZTp0ZXh0dXJlLWZpbHRlcj1uZWFyZXN0IiwgInRleHR1cmVfbmVhcmVzdCJ9LAorICAgIHsi
dGV4dHVyZTp0ZXh0dXJlLWZpbHRlcj1saW5lYXIiLCAidGV4dHVyZV9saW5lYXIifSwKKyAgICB7
InRleHR1cmU6dGV4dHVyZS1maWx0ZXI9bWlwbWFwIiwgInRleHR1cmVfbWlwbWFwIn0sCisgICAg
eyJzaGFkaW5nOnNoYWRpbmc9Z291cmF1ZCIsICJzaGFkaW5nX2dvdXJhdWQifSwKKyAgICB7InNo
YWRpbmc6c2hhZGluZz1ibGlubi1waG9uZy1pbmYiLCAic2hhZGluZ19ibGlubl9waG9uZyJ9LAor
ICAgIHsic2hhZGluZzpzaGFkaW5nPXBob25nIiwgInNoYWRpbmdfcGhvbmcifSwKKyAgICB7InNo
YWRpbmc6c2hhZGluZz1jZWwiLCAic2hhZGluZ19jZWwifSwKKyAgICB7ImJ1bXA6YnVtcC1yZW5k
ZXI9aGlnaC1wb2x5IiwgImJ1bXBfaGlnaF9wb2x5In0sCisgICAgeyJidW1wOmJ1bXAtcmVuZGVy
PW5vcm1hbHMiLCAiYnVtcF9ub3JtYWxzIn0sCisgICAgeyJidW1wOmJ1bXAtcmVuZGVyPWhlaWdo
dCIsICJidW1wX2hlaWdodCJ9LAorICAgIHsiZWZmZWN0MmQ6a2VybmVsPTAsMSwwOzEsLTQsMTsw
LDEsMDsiLCAiZWZmZWN0MmRfZWRnZSJ9LAorICAgIHsiZWZmZWN0MmQ6a2VybmVsPTEsMSwxLDEs
MTsxLDEsMSwxLDE7MSwxLDEsMSwxOyIsICJlZmZlY3QyZF9ibHVyIn0sCisgICAgeyJwdWxzYXI6
bGlnaHQ9ZmFsc2U6cXVhZHM9NTp0ZXh0dXJlPWZhbHNlIiwgInB1bHNhciJ9LAorICAgIHsiZGVz
a3RvcDpibHVyLXJhZGl1cz01OmVmZmVjdD1ibHVyOnBhc3Nlcz0xOnNlcGFyYWJsZT10cnVlOndp
bmRvd3M9NCIsICJkZXNrdG9wX2JsdXIifSwKKyAgICB7ImRlc2t0b3A6ZWZmZWN0PXNoYWRvdzp3
aW5kb3dzPTQiLCAiZGVza3RvcF9zaGFkb3cifSwKKyAgICB7ImJ1ZmZlcjpjb2x1bW5zPTIwMDpp
bnRlcmxlYXZlPWZhbHNlOnVwZGF0ZS1kaXNwZXJzaW9uPTAuOTp1cGRhdGUtZnJhY3Rpb249MC41
OnVwZGF0ZS1tZXRob2Q9IgorICAgICAibWFwIiwKKyAgICAgImJ1ZmZlcl9tYXAifSwKKyAgICB7
ImJ1ZmZlcjpjb2x1bW5zPTIwMDppbnRlcmxlYXZlPWZhbHNlOnVwZGF0ZS1kaXNwZXJzaW9uPTAu
OTp1cGRhdGUtZnJhY3Rpb249MC41OnVwZGF0ZS1tZXRob2Q9IgorICAgICAic3ViZGF0YSIsCisg
ICAgICJidWZmZXJfc3ViZGF0YSJ9LAorICAgIHsiYnVmZmVyOmNvbHVtbnM9MjAwOmludGVybGVh
dmU9dHJ1ZTp1cGRhdGUtZGlzcGVyc2lvbj0wLjk6dXBkYXRlLWZyYWN0aW9uPTAuNTp1cGRhdGUt
bWV0aG9kPSIKKyAgICAgIm1hcCIsCisgICAgICJidWZmZXJfbWFwX2ludGVybGVhdmUifSwKKyAg
ICB7ImlkZWFzOnNwZWVkPWR1cmF0aW9uIiwgImlkZWFzIn0sCisgICAgeyJqZWxseWZpc2giLCAi
amVsbHlmaXNoIn0sCisgICAgeyJ0ZXJyYWluIiwgInRlcnJhaW4ifSwKKyAgICB7InNoYWRvdyIs
ICJzaGFkb3cifSwKKyAgICB7InJlZnJhY3QiLCAicmVmcmFjdCJ9LAorICAgIHsiY29uZGl0aW9u
YWxzOmZyYWdtZW50LXN0ZXBzPTA6dmVydGV4LXN0ZXBzPTAiLCAiY29uZGl0aW9uYWxzIn0sCisg
ICAgeyJjb25kaXRpb25hbHM6ZnJhZ21lbnQtc3RlcHM9NTp2ZXJ0ZXgtc3RlcHM9MCIsICJjb25k
aXRpb25hbHNfZnJhZ21lbnQifSwKKyAgICB7ImNvbmRpdGlvbmFsczpmcmFnbWVudC1zdGVwcz0w
OnZlcnRleC1zdGVwcz01IiwgImNvbmRpdGlvbmFsc192ZXJ0ZXgifSwKKyAgICB7ImZ1bmN0aW9u
OmZyYWdtZW50LWNvbXBsZXhpdHk9bG93OmZyYWdtZW50LXN0ZXBzPTUiLCAiZnVuY3Rpb24ifSwK
KyAgICB7ImZ1bmN0aW9uOmZyYWdtZW50LWNvbXBsZXhpdHk9bWVkaXVtOmZyYWdtZW50LXN0ZXBz
PTUiLCAiZnVuY3Rpb25fY29tcGxleCJ9LAorICAgIHsibG9vcDpmcmFnbWVudC1sb29wPWZhbHNl
OmZyYWdtZW50LXN0ZXBzPTU6dmVydGV4LXN0ZXBzPTUiLCAibG9vcF9ub19mc2xvb3AifSwKKyAg
ICB7Imxvb3A6ZnJhZ21lbnQtc3RlcHM9NTpmcmFnbWVudC11bmlmb3JtPWZhbHNlOnZlcnRleC1z
dGVwcz01IiwgImxvb3Bfbm9fdW5pZm9ybSJ9LAorICAgIHsibG9vcDpmcmFnbWVudC1zdGVwcz01
OmZyYWdtZW50LXVuaWZvcm09dHJ1ZTp2ZXJ0ZXgtc3RlcHM9NSIsICJsb29wIn0sCit9OworCitz
dHJ1Y3QgR0xNYXJrMlRlc3RQYXJhbXMgOiBwdWJsaWMgUGxhdGZvcm1QYXJhbWV0ZXJzCit7Cisg
ICAgQmVuY2htYXJrSW5mbyBpbmZvOworfTsKKworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEdMTWFyazJUZXN0UGFyYW1zICZwYXJhbXMpCit7CisgICAg
b3MgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICY+KHBhcmFtcykgPDwg
Il8iIDw8IHBhcmFtcy5pbmZvLm5hbWU7CisgICAgcmV0dXJuIG9zOworfQorCitjbGFzcyBHTE1h
cmsyQmVuY2htYXJrIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08R0xNYXJrMlRlc3RQ
YXJhbXM+Cit7CisgIHB1YmxpYzoKKyAgICBHTE1hcmsyQmVuY2htYXJrKCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAoR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpKQorICAgICAgICB7CisgICAgICAg
ICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgorICAgICAgICAg
ICAgICAgIG1CYWNrZW5kID0gImQzZDExIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU6CisgICAg
ICAgICAgICAgICAgbUJhY2tlbmQgPSAiZ2wiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEU6CisgICAg
ICAgICAgICAgICAgbUJhY2tlbmQgPSAidnVsa2FuIjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgc3RkOjpzdHJpbmcgc3RvcnkgPSBHZXRQYXJhbSgpLmluZm8ubmFtZTsKKyAgICAg
ICAgbVJlcG9ydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxwZXJmX3Rlc3Q6OlBlcmZSZXN1bHRSZXBv
cnRlcj4oImdsbWFyazJfIiArIG1CYWNrZW5kLCBzdG9yeSk7CisgICAgICAgIG1SZXBvcnRlci0+
UmVnaXN0ZXJJbXBvcnRhbnRNZXRyaWMoIi5mcHMiLCAiZnBzIik7CisgICAgICAgIG1SZXBvcnRl
ci0+UmVnaXN0ZXJJbXBvcnRhbnRNZXRyaWMoIi5zY29yZSIsICJzY29yZSIpOworICAgIH0KKwor
ICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgc3VwcG9ydGVkIG9uIExpbnV4
IGFuZCBXaW5kb3dzIGF0IHRoZSBtb21lbnQuCisgICAgICAgIGlmICghSXNMaW51eCgpICYmICFJ
c1dpbmRvd3MoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29uc3QgQmVuY2htYXJrSW5mbyBiZW5jaG1hcmtJbmZvID0gR2V0UGFyYW0oKS5p
bmZvOworICAgICAgICBjb25zdCBjaGFyICpiZW5jaG1hcmsgICAgICAgICAgICAgPSBiZW5jaG1h
cmtJbmZvLmdsbWFyazJDb25maWc7CisgICAgICAgIGNvbnN0IGNoYXIgKmJlbmNobWFya05hbWUg
ICAgICAgICA9IGJlbmNobWFya0luZm8ubmFtZTsKKyAgICAgICAgYm9vbCBjb21wbGV0ZVJ1biAg
ICAgICAgICAgICAgICAgID0gYmVuY2htYXJrID09IG51bGxwdHIgfHwgYmVuY2htYXJrWzBdID09
ICdcMCc7CisKKyAgICAgICAgT3B0aW9uYWw8c3RkOjpzdHJpbmc+IGN3ZCA9IEdldENXRCgpOwor
CisgICAgICAgIC8vIFNldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZXhl
Y3V0YWJsZSdzLCBhcyB0aGUgZGF0YSBwYXRoIG9mIGdsbWFyazIgaXMKKyAgICAgICAgLy8gc2V0
IHJlbGF0aXZlIHRvIHRoYXQgcGF0aC4KKyAgICAgICAgc3RkOjpzdHJpbmcgZXhlY3V0YWJsZURp
ciA9IEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKKyAgICAgICAgU2V0Q1dEKGV4ZWN1dGFibGVE
aXIuY19zdHIoKSk7CisgICAgICAgIFNldEVudmlyb25tZW50VmFyKCJBTkdMRV9ERUZBVUxUX1BM
QVRGT1JNIiwgbUJhY2tlbmQuY19zdHIoKSk7CisKKyAgICAgICAgc3RkOjp2ZWN0b3I8Y29uc3Qg
Y2hhciAqPiBhcmdzID0geworICAgICAgICAgICAgImdsbWFyazJfYW5nbGUiLAorICAgICAgICB9
OworICAgICAgICBpZiAoT25lRnJhbWUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgYXJncy5w
dXNoX2JhY2soIi0tdmFsaWRhdGUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWNvbXBsZXRl
UnVuKQorICAgICAgICB7CisgICAgICAgICAgICBhcmdzLnB1c2hfYmFjaygiLS1iZW5jaG1hcmsi
KTsKKyAgICAgICAgICAgIGFyZ3MucHVzaF9iYWNrKGJlbmNobWFyayk7CisgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIlJ1bm5pbmcgYmVuY2htYXJrOiAlc1xuIiwgYmVuY2htYXJrKTsKKyAg
ICAgICAgfQorICAgICAgICBhcmdzLnB1c2hfYmFjayhudWxscHRyKTsKKworICAgICAgICBQcm9j
ZXNzSGFuZGxlIHByb2Nlc3MoYXJncywgdHJ1ZSwgZmFsc2UpOworICAgICAgICBBU1NFUlRfVFJV
RShwcm9jZXNzICYmIHByb2Nlc3MtPnN0YXJ0ZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHBy
b2Nlc3MtPmZpbmlzaCgpKTsKKworICAgICAgICAvLyBSZXN0b3JlIHRoZSBjdXJyZW50IHdvcmtp
bmcgZGlyZWN0b3J5IGZvciB0aGUgbmV4dCB0ZXN0cy4KKyAgICAgICAgaWYgKGN3ZC52YWxpZCgp
KQorICAgICAgICB7CisgICAgICAgICAgICBTZXRDV0QoY3dkLnZhbHVlKCkuY19zdHIoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBBU1NFUlRfRVEoRVhJVF9TVUNDRVNTLCBwcm9jZXNzLT5nZXRF
eGl0Q29kZSgpKTsKKworICAgICAgICBpZiAoIU9uZUZyYW1lKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIG91dHB1dCA9IHByb2Nlc3MtPmdldFN0ZG91dCgpOworICAgICAg
ICAgICAgcGFyc2VPdXRwdXQob3V0cHV0LCBiZW5jaG1hcmtOYW1lLCBjb21wbGV0ZVJ1bik7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIHBhcnNlT3V0cHV0KGNvbnN0
IHN0ZDo6c3RyaW5nICZvdXRwdXQsIGNvbnN0IGNoYXIgKmJlbmNobWFya05hbWUsIGJvb2wgY29t
cGxldGVSdW4pCisgICAgeworICAgICAgICAvLyBPdXRwdXQgaXMgaW4gdGhlIGZvbGxvd2luZyBm
b3JtYXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgLy8gICAgIGdsbWFyazIgMjAx
Ny4wNworICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisgICAgICAgIC8vICAgICBPcGVuR0wgSW5mb3JtYXRpb24KKyAgICAg
ICAgLy8gICAgIEdMX1ZFTkRPUjogICAgIC4uLgorICAgICAgICAvLyAgICAgR0xfUkVOREVSRVI6
ICAgLi4uCisgICAgICAgIC8vICAgICBHTF9WRVJTSU9OOiAgICAuLi4KKyAgICAgICAgLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAg
ICAgICAvLyBbdGVzdF0gY29uZmlnOiBGUFM6IHVpbnQgRnJhbWVUaW1lOiBmbG9hdCBtcworICAg
ICAgICAvLyBbdGVzdF0gY29uZmlnOiBOb3QgU3VwcG9ydGVkCisgICAgICAgIC8vIC4uLgorICAg
ICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG1h
cmsyIFNjb3JlOiB1aW50CisgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBm
dW5jdGlvbiBza2lwcyB0aGUgaGVhZGVyLCBwcmludHMgb25lIGxpbmUgZm9yIGVhY2ggdGVzdC9j
b25maWcgbGluZSB3aGVyZSB0aGVyZSdzCisgICAgICAgIC8vIGFuIEZQUyB2YWx1ZSwgYW5kIGZp
bmFsbHkgcHJpbnRzIHRoZSBvdmVyYWxsIHNjb3JlLgorICAgICAgICBzdGQ6OmlzdHJpbmdzdHJl
YW0gZ2xtYXJrMk91dHB1dChvdXRwdXQpOworICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOworCisg
ICAgICAgIC8vIEV4cGVjdCA9PT09IGF0IHRoZSB0b3Agb2YgdGhlIGhlYWRlcgorICAgICAgICBz
dGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7CisgICAgICAgIEFTU0VSVF9FUSgnPScs
IGxpbmVbMF0pOworCisgICAgICAgIC8vIFNraXAgb25lIGxpbmUKKyAgICAgICAgc3RkOjpnZXRs
aW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOworCisgICAgICAgIC8vIEV4cGVjdCA9PT09IGluIHRo
ZSBtaWRkbGUgb2YgdGhlIGhlYWRlcgorICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1
dCwgbGluZSk7CisgICAgICAgIEFTU0VSVF9FUSgnPScsIGxpbmVbMF0pOworCisgICAgICAgIC8v
IFNraXAgZm91ciBsaW5lcworICAgICAgICBzdGQ6OmdldGxpbmUoZ2xtYXJrMk91dHB1dCwgbGlu
ZSk7CisgICAgICAgIHN0ZDo6Z2V0bGluZShnbG1hcmsyT3V0cHV0LCBsaW5lKTsKKyAgICAgICAg
c3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQsIGxpbmUpOworICAgICAgICBzdGQ6OmdldGxpbmUo
Z2xtYXJrMk91dHB1dCwgbGluZSk7CisKKyAgICAgICAgLy8gVGhlIGZvdXJ0aCBsaW5lIGlzIHRo
ZSBHTF9WRVJTSU9OLiAgRXhwZWN0IGl0IHRvIGluY2x1ZGUgQU5HTEUsIG90aGVyd2lzZSB3ZSBh
cmUgbm90CisgICAgICAgIC8vIHJ1bm5pbmcgYWdhaW5zdCBBTkdMRS4KKyAgICAgICAgQVNTRVJU
X05FKGxpbmUuZmluZCgiQU5HTEUiKSwgc3RkOjpzdHJpbmc6Om5wb3MpOworCisgICAgICAgIC8v
IEV4cGVjdCA9PT09IGF0IHRoZSBib3R0b20gb2YgdGhlIGhlYWRlcgorICAgICAgICBzdGQ6Omdl
dGxpbmUoZ2xtYXJrMk91dHB1dCwgbGluZSk7CisgICAgICAgIEFTU0VSVF9FUSgnPScsIGxpbmVb
MF0pOworCisgICAgICAgIC8vIFJlYWQgY29uZmlncyB1bnRpbCB0aGUgdG9wIG9mIHRoZSBmb290
ZXIgaXMgcmVhY2hlZAorICAgICAgICB3aGlsZSAoc3RkOjpnZXRsaW5lKGdsbWFyazJPdXRwdXQs
IGxpbmUpICYmIGxpbmVbMF0gIT0gJz0nKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBQYXJz
ZSB0aGUgbGluZQorICAgICAgICAgICAgc3RkOjppc3RyaW5nc3RyZWFtIGxpbihsaW5lKTsKKwor
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGVzdE5hbWUsIHRlc3RDb25maWc7CisgICAgICAgICAg
ICBsaW4gPj4gdGVzdE5hbWUgPj4gdGVzdENvbmZpZzsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGxpbik7CisKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZwc1RhZywgZnJhbWV0aW1lVGFnOwor
ICAgICAgICAgICAgc2l6ZV90IGZwczsKKyAgICAgICAgICAgIGZsb2F0IGZyYW1ldGltZTsKKwor
ICAgICAgICAgICAgbGluID4+IGZwc1RhZyA+PiBmcHMgPj4gZnJhbWV0aW1lVGFnID4+IGZyYW1l
dGltZTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIGxpbmUgaXMgbm90IGluIGBGUFM6IHVpbnQg
RnJhbWVUaW1lOiBGbG9hdCBtc2AgZm9ybWF0LCB0aGUgdGVzdCBpcyBub3QKKyAgICAgICAgICAg
IC8vIHN1cHBvcnRlZC4gIEl0IHdpbGwgYmUgc2tpcHBlZC4KKyAgICAgICAgICAgIGlmICghbGlu
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBFWFBFQ1RfRVEoIkZQUzoiLCBmcHNUYWcpOworICAgICAgICAgICAg
RVhQRUNUX0VRKCJGcmFtZVRpbWU6IiwgZnJhbWV0aW1lVGFnKTsKKworICAgICAgICAgICAgaWYg
KCFjb21wbGV0ZVJ1bikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtUmVwb3J0ZXIt
PkFkZFJlc3VsdCgiLmZwcyIsIGZwcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBHZXQgdGhlIHNjb3JlIGxpbmU6IGBnbG1hcmsyIFNjb3JlOiB1aW50YAorICAgICAg
ICBzdGQ6OnN0cmluZyBnbG1hcmsyVGFnLCBzY29yZVRhZzsKKyAgICAgICAgc2l6ZV90IHNjb3Jl
OworICAgICAgICBnbG1hcmsyT3V0cHV0ID4+IGdsbWFyazJUYWcgPj4gc2NvcmVUYWcgPj4gc2Nv
cmU7CisgICAgICAgIEVYUEVDVF9UUlVFKGdsbWFyazJPdXRwdXQpOworICAgICAgICBFWFBFQ1Rf
RVEoImdsbWFyazIiLCBnbG1hcmsyVGFnKTsKKyAgICAgICAgRVhQRUNUX0VRKCJTY29yZToiLCBz
Y29yZVRhZyk7CisKKyAgICAgICAgaWYgKGNvbXBsZXRlUnVuKQorICAgICAgICB7CisgICAgICAg
ICAgICBtUmVwb3J0ZXItPkFkZFJlc3VsdCgiLnNjb3JlIiwgc2NvcmUpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc3RkOjpzdHJpbmcgbUJhY2tlbmQgPSAiaW52YWxpZCI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPHBlcmZfdGVzdDo6UGVyZlJlc3VsdFJlcG9ydGVyPiBtUmVwb3J0ZXI7Cit9Owor
CitURVNUX1AoR0xNYXJrMkJlbmNobWFyaywgUnVuKQoreworICAgIHJ1bigpOworfQorCitHTE1h
cmsyVGVzdFBhcmFtcyBDb21iaW5lRUdMUGxhdGZvcm0oY29uc3QgR0xNYXJrMlRlc3RQYXJhbXMg
JmluLCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgZWdsUGFyYW1zKQoreworICAgIEdMTWFyazJUZXN0
UGFyYW1zIG91dCA9IGluOworICAgIG91dC5lZ2xQYXJhbWV0ZXJzICAgICA9IGVnbFBhcmFtczsK
KyAgICByZXR1cm4gb3V0OworfQorCitHTE1hcmsyVGVzdFBhcmFtcyBDb21iaW5lSW5mbyhjb25z
dCBHTE1hcmsyVGVzdFBhcmFtcyAmaW4sIEJlbmNobWFya0luZm8gaW5mbykKK3sKKyAgICBHTE1h
cmsyVGVzdFBhcmFtcyBvdXQgPSBpbjsKKyAgICBvdXQuaW5mbyAgICAgICAgICAgICAgPSBpbmZv
OworICAgIHJldHVybiBvdXQ7Cit9CisKK3VzaW5nIG5hbWVzcGFjZSBlZ2xfcGxhdGZvcm07CisK
K3N0ZDo6dmVjdG9yPEdMTWFyazJUZXN0UGFyYW1zPiBnVGVzdHNXaXRoSW5mbyA9CisgICAgQ29t
YmluZVdpdGhWYWx1ZXMoe0dMTWFyazJUZXN0UGFyYW1zKCl9LCBrQmVuY2htYXJrcywgQ29tYmlu
ZUluZm8pOworc3RkOjp2ZWN0b3I8RUdMUGxhdGZvcm1QYXJhbWV0ZXJzPiBnRUdMUGxhdGZvcm1z
ID0ge0QzRDExKCksIE9QRU5HTEVTKCksIFZVTEtBTigpfTsKK3N0ZDo6dmVjdG9yPEdMTWFyazJU
ZXN0UGFyYW1zPiBnVGVzdHNXaXRoUGxhdGZvcm0gPQorICAgIENvbWJpbmVXaXRoVmFsdWVzKGdU
ZXN0c1dpdGhJbmZvLCBnRUdMUGxhdGZvcm1zLCBDb21iaW5lRUdMUGxhdGZvcm0pOworCitBTkdM
RV9JTlNUQU5USUFURV9URVNUX0FSUkFZKEdMTWFyazJCZW5jaG1hcmssIGdUZXN0c1dpdGhQbGF0
Zm9ybSk7CisKK30gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvLmdpdGlnbm9yZSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRf
dHJhY2VzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY1NjY4MmExMjE1OWE4ZWU3NDgzMGFhODI2
NzBlZGE1OGMzNTc5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzLy5naXRpZ25vcmUKQEAgLTAs
MCArMSw0IEBACittYW5oYXR0YW5fMTAKK21hbmhhdHRhbl8xMC50YXIuZ3oKK3RyZXhfMjAwCit0
cmV4XzIwMC50YXIuZ3oKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL09XTkVSUyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL09XTkVSUwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYTczOTFhNjM4Y2U4ZDk5MzBmZDRhYTQ0OTlmYWI2NmJlNTJhY2JlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvcmVzdHJpY3RlZF90cmFjZXMvT1dORVJTCkBAIC0wLDAgKzEsMiBAQAorY25vcnRocm9wQGdv
b2dsZS5jb20KK2ptYWRpbGxAY2hyb21pdW0ub3JnCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9SZXN0cmlj
dGVkVHJhY2VUZXN0cy5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL1Jlc3RyaWN0ZWRUcmFjZVRlc3RzLm1kCmluZGV4IDMz
YmVhZmY5MjRkMzgxNWMyMGE2MjQzNzY3N2I0MmQxMWJlYjc5MjQuLjI5ZjgzMTI2MWY0YWJlMGIy
MjVhNmQ2NTUwZGFjNzY4YTliYjE5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL1Jlc3RyaWN0ZWRUcmFj
ZVRlc3RzLm1kCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL1Jlc3RyaWN0ZWRUcmFjZVRlc3RzLm1kCkBAIC0zMywxOCAr
MzMsMTQgQEAgQnVpbGQgdGhlIGFuZ2xlX3BlcmZ0ZXN0czoKIGBgYAogYXV0b25pbmphIC1DIG91
dC9SZWxlYXNlIGFuZ2xlX3BlcmZ0ZXN0cwogYGBgCi1PbiBkZXNrdG9wLCBydW4gdGhlbSBsaWtl
IHNvOgorUnVuIHRoZW0gbGlrZSBzbzoKIGBgYAogb3V0L1JlbGVhc2UvYW5nbGVfcGVyZnRlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPVRyYWNlUGVyZlRlc3QqCiBgYGAKLU9uIEFuZHJvaWQsIHJ1biB0aGVt
IGxpa2Ugc286Ci1gYGAKLW91dC9SZWxlYXNlL2Jpbi9ydW5fYW5nbGVfcGVyZnRlc3RzIC0tZ3Rl
c3RfZmlsdGVyPVRyYWNlUGVyZlRlc3QqCi1gYGAKIAogIyMgVXBkYXRpbmcgdHJhY2VzCiAKLVRo
ZSBjdXJyZW50IFRSZXggdHJhY2VzIHdlcmUgY2FwdHVyZWQgb24gV2luZG93cyB3aXRoIGFuIE52
aWRpYSBkcml2ZXIuCitUaGUgTWFuaGF0dGFuIGFuZCBUUmV4IHRyYWNlcyB3ZXJlIGNhcHR1cmVk
IG9uIFdpbmRvd3Mgd2l0aCBhbiBJbnRlbCBkcml2ZXIgKGR1ZSB0byBiZXR0ZXIgY29tcHJlc3Nl
ZCB0ZXh0dXJlIHN1cHBvcnQpLgogCiBVcGRhdGUgU1RBUlQgYW5kIEVORCBmb3IgZWFjaCByYW5n
ZS4KIApAQCAtNTYsMTUgKzUyLDI3IEBAIHB5dGhvbiAuLlwuLlwuLlwuLlxzY3JpcHRzXHJlZnJl
c2hfYW5nbGVfbGlicy5weSAtLXZlcmJvc2UKIHNldCBURldfUEFDS0FHRV9ESVI9Li4vLi4vLi4v
YnVpbGQvdnMyMDE3LXg2NC90ZXN0ZncvdGZ3LWRldgogc2V0IEFOR0xFX0RFRkFVTFRfUExBVEZP
Uk09dnVsa2FuCiAKKyMgVFJleAogc2V0IFNUQVJUPTIwMAogc2V0IEVORD0yMTAKIHNldCBMQUJF
TD10cmV4Ci1ta2RpciAuLlwuLlwuLlwuLlwuLlxhbmdsZVxzcmNcdGVzdHNccGVyZl90ZXN0c1xy
ZXN0cmljdGVkX3RyYWNlc1wlTEFCRUwlXyVTVEFSVCVfJUVORCUKLXNldCBBTkdMRV9DQVBUVVJF
X0xBQkVMPSVMQUJFTCVfJVNUQVJUJV8lRU5EJQorbWtkaXIgLi5cLi5cLi5cLi5cLi5cYW5nbGVc
c3JjXHRlc3RzXHBlcmZfdGVzdHNccmVzdHJpY3RlZF90cmFjZXNcJUxBQkVMJV8lU1RBUlQlCitz
ZXQgQU5HTEVfQ0FQVFVSRV9MQUJFTD0lTEFCRUwlXyVTVEFSVCUKIHNldCBBTkdMRV9DQVBUVVJF
X0ZSQU1FX1NUQVJUPSVTVEFSVCUKIHNldCBBTkdMRV9DQVBUVVJFX0ZSQU1FX0VORD0lRU5EJQot
c2V0IEFOR0xFX0NBUFRVUkVfT1VUX0RJUj0uLlwuLlwuLlwuLlwuLlxhbmdsZVxzcmNcdGVzdHNc
cGVyZl90ZXN0c1xyZXN0cmljdGVkX3RyYWNlc1wlTEFCRUwlXyVTVEFSVCVfJUVORCUKK3NldCBB
TkdMRV9DQVBUVVJFX09VVF9ESVI9Li5cLi5cLi5cLi5cLi5cYW5nbGVcc3JjXHRlc3RzXHBlcmZf
dGVzdHNccmVzdHJpY3RlZF90cmFjZXNcJUxBQkVMJV8lU1RBUlQlCiAuLlxiaW5cdGVzdGZ3X2Fw
cC5leGUgLWIgLi4vLi4vLi4vYnVpbGQvdnMyMDE3LXg2NC90ZXN0ZncvdGZ3LWRldiAtLWdmeCBl
Z2wgLXcgMTkyMCAtaCAxMDgwIC10IGdsX3RyZXggLS1laSAtZnJhbWVfc3RlcF90aW1lPTQwCisK
KyMgTWFuaGF0dGFuCitzZXQgU1RBUlQ9MTAKK3NldCBFTkQ9MjAKK3NldCBMQUJFTD1tYW5oYXR0
YW4KK21rZGlyIC4uXC4uXC4uXC4uXC4uXGFuZ2xlXHNyY1x0ZXN0c1xwZXJmX3Rlc3RzXHJlc3Ry
aWN0ZWRfdHJhY2VzXCVMQUJFTCVfJVNUQVJUJQorc2V0IEFOR0xFX0NBUFRVUkVfTEFCRUw9JUxB
QkVMJV8lU1RBUlQlCitzZXQgQU5HTEVfQ0FQVFVSRV9GUkFNRV9TVEFSVD0lU1RBUlQlCitzZXQg
QU5HTEVfQ0FQVFVSRV9GUkFNRV9FTkQ9JUVORCUKK3NldCBBTkdMRV9DQVBUVVJFX09VVF9ESVI9
Li5cLi5cLi5cLi5cLi5cYW5nbGVcc3JjXHRlc3RzXHBlcmZfdGVzdHNccmVzdHJpY3RlZF90cmFj
ZXNcJUxBQkVMJV8lU1RBUlQlCisuLlxiaW5cdGVzdGZ3X2FwcC5leGUgLWIgLi4vLi4vLi4vYnVp
bGQvdnMyMDE3LXg2NC90ZXN0ZncvdGZ3LWRldiAtLWdmeCBlZ2wgLXcgMTkyMCAtaCAxMDgwIC10
IGdsX21hbmhhdHRhbiAtLWVpIC1mcmFtZV9zdGVwX3RpbWU9NDAKIGBgYAogCiAjIyMgTGludXgK
QEAgLTc3LDI1ICs4NSwzNSBAQCBleHBvcnQgVEZXX1BBQ0tBR0VfRElSPS4uLy4uLy4uL2J1aWxk
L2xpbnV4L3Rlc3Rmd19SZWxlYXNlL3Rmdy1kZXYKIGV4cG9ydCBBTkdMRV9ERUZBVUxUX1BMQVRG
T1JNPXZ1bGthbgogZXhwb3J0IExEX0xJQlJBUllfUEFUSD0uCiAKKyMgVFJleAogZXhwb3J0IFNU
QVJUPTIwMAogZXhwb3J0IEVORD0yMTAKIGV4cG9ydCBMQUJFTD10cmV4Ci1ta2RpciAtcCAuLi8u
Li8uLi8uLi8uLi9hbmdsZS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy8k
e0xBQkVMfV8ke1NUQVJUfV8ke0VORH0KLWV4cG9ydCBBTkdMRV9DQVBUVVJFX0xBQkVMPSR7TEFC
RUx9XyR7U1RBUlR9XyR7RU5EfQorbWtkaXIgLXAgLi4vLi4vLi4vLi4vLi4vYW5nbGUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvJHtMQUJFTH1fJHtTVEFSVH0KK2V4cG9y
dCBBTkdMRV9DQVBUVVJFX0xBQkVMPSR7TEFCRUx9XyR7U1RBUlR9CitleHBvcnQgQU5HTEVfQ0FQ
VFVSRV9GUkFNRV9TVEFSVD0kU1RBUlQKK2V4cG9ydCBBTkdMRV9DQVBUVVJFX0ZSQU1FX0VORD0k
RU5ECitleHBvcnQgQU5HTEVfQ0FQVFVSRV9PVVRfRElSPS4uLy4uLy4uLy4uLy4uL2FuZ2xlL3Ny
Yy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzLyR7TEFCRUx9XyR7U1RBUlR9Cisu
Li9iaW4vdGVzdGZ3X2FwcCAtYiAkVEZXX1BBQ0tBR0VfRElSIC0tZ2Z4IGVnbCAtdyAxOTIwIC1o
IDEwODAgLXQgZ2xfdHJleCAtLWVpIC1mcmFtZV9zdGVwX3RpbWU9NDAKKworIyBNYW5oYXR0YW4K
K2V4cG9ydCBTVEFSVD0xMAorZXhwb3J0IEVORD0yMAorZXhwb3J0IExBQkVMPW1hbmhhdHRhbgor
bWtkaXIgLXAgLi4vLi4vLi4vLi4vLi4vYW5nbGUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJp
Y3RlZF90cmFjZXMvJHtMQUJFTH1fJHtTVEFSVH0KK2V4cG9ydCBBTkdMRV9DQVBUVVJFX0xBQkVM
PSR7TEFCRUx9XyR7U1RBUlR9CiBleHBvcnQgQU5HTEVfQ0FQVFVSRV9GUkFNRV9TVEFSVD0kU1RB
UlQKIGV4cG9ydCBBTkdMRV9DQVBUVVJFX0ZSQU1FX0VORD0kRU5ECi1leHBvcnQgQU5HTEVfQ0FQ
VFVSRV9PVVRfRElSPS4uLy4uLy4uLy4uLy4uL2FuZ2xlL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jl
c3RyaWN0ZWRfdHJhY2VzLyR7TEFCRUx9XyR7U1RBUlR9XyR7RU5EfQotLi4vYmluL3Rlc3Rmd19h
cHAgLWIgJFRGV19QQUNLQUdFX0RJUiAtLWdmeCBlZ2wgLXcgNTEyIC1oIDUxMiAtdCBnbF90cmV4
IC0tZWkgLWZyYW1lX3N0ZXBfdGltZT00MAorZXhwb3J0IEFOR0xFX0NBUFRVUkVfT1VUX0RJUj0u
Li8uLi8uLi8uLi8uLi9hbmdsZS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNl
cy8ke0xBQkVMfV8ke1NUQVJUfQorLi4vYmluL3Rlc3Rmd19hcHAgLWIgJFRGV19QQUNLQUdFX0RJ
UiAtLWdmeCBlZ2wgLXcgMTkyMCAtaCAxMDgwIC10IGdsX21hbmhhdHRhbiAtLWVpIC1mcmFtZV9z
dGVwX3RpbWU9NDAKIGBgYAogCiAjIyBVcGxvYWQgdG8gdGhlIGNsb3VkCiAKIGBgYAogY2Qgfi9j
aHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvYW5nbGUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJp
Y3RlZF90cmFjZXMKLXVwbG9hZF90b19nb29nbGVfc3RvcmFnZS5weSAtLWJ1Y2tldCBjaHJvbWUt
YW5nbGUtY2FwdHVyZS1iaW5hcmllcyAtLWFyY2hpdmUgdHJleF8yMDBfMjEwCi11cGxvYWRfdG9f
Z29vZ2xlX3N0b3JhZ2UucHkgLS1idWNrZXQgY2hyb21lLWFuZ2xlLWNhcHR1cmUtYmluYXJpZXMg
LS1hcmNoaXZlIHRyZXhfODAwXzgxMAotdXBsb2FkX3RvX2dvb2dsZV9zdG9yYWdlLnB5IC0tYnVj
a2V0IGNocm9tZS1hbmdsZS1jYXB0dXJlLWJpbmFyaWVzIC0tYXJjaGl2ZSB0cmV4XzkwMF85MTAK
LXVwbG9hZF90b19nb29nbGVfc3RvcmFnZS5weSAtLWJ1Y2tldCBjaHJvbWUtYW5nbGUtY2FwdHVy
ZS1iaW5hcmllcyAtLWFyY2hpdmUgdHJleF8xMzAwXzEzMTAKK3VwbG9hZF90b19nb29nbGVfc3Rv
cmFnZS5weSAtLWJ1Y2tldCBjaHJvbWUtYW5nbGUtY2FwdHVyZS1iaW5hcmllcyAtLWFyY2hpdmUg
dHJleF8yMDAKK3VwbG9hZF90b19nb29nbGVfc3RvcmFnZS5weSAtLWJ1Y2tldCBjaHJvbWUtYW5n
bGUtY2FwdHVyZS1iaW5hcmllcyAtLWFyY2hpdmUgbWFuaGF0dGFuXzEwCiBgYGAKIAogIyMgQWRk
aW5nIG5ldyB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvYW5nbGVfdHJhY2VfcGVyZl90ZXN0cy5n
bmkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmlj
dGVkX3RyYWNlcy9hbmdsZV90cmFjZV9wZXJmX3Rlc3RzLmduaQppbmRleCA4MmFhNjM4ZjQ1MWVl
NzE0YzZlNTNkNGQ2ODJjNjAyZWE0Mjg0NDFkLi4xZWVjYjllNTg3OGJlZjM3ZGExYjhlMDM1N2Q0
OTQwZTk2NDM5Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9hbmdsZV90cmFjZV9wZXJmX3Rlc3RzLmdu
aQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0
cmljdGVkX3RyYWNlcy9hbmdsZV90cmFjZV9wZXJmX3Rlc3RzLmduaQpAQCAtOCwxNiArOCwxNCBA
QAogaW1wb3J0KCIuLi8uLi8uLi8uLi9nbmkvYW5nbGUuZ25pIikKIAogX3Rlc3RzID0gWwotICAi
dHJleF8yMDBfMjEwIiwKLSAgInRyZXhfODAwXzgxMCIsCi0gICJ0cmV4XzkwMF85MTAiLAotICAi
dHJleF8xMzAwXzEzMTAiLAorICAibWFuaGF0dGFuXzEwIiwKKyAgInRyZXhfMjAwIiwKIF0KIAog
YW5nbGVfdHJhY2VfcGVyZl9zb3VyY2VzID0gWyAicGVyZl90ZXN0cy9UcmFjZVBlcmZUZXN0LmNw
cCIgXQotYW5nbGVfdHJhY2VfcGVyZl9kYXRhID0KLSAgICBbICIke2FuZ2xlX3Jvb3R9L3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzIiBdCisKIGFuZ2xlX3RyYWNlX3BlcmZf
ZGVmaW5lcyA9IFtdCithbmdsZV90cmFjZV9wZXJmX2RhdGEgPSBbXQogCiBmb3JlYWNoKF90ZXN0
LCBfdGVzdHMpIHsKICAgX3Rlc3RfZGlyID0gIiR7X3Rlc3R9IgpAQCAtMzYsOSArMzQsMTEgQEAg
Zm9yZWFjaChfdGVzdCwgX3Rlc3RzKSB7CiAgIGlmIChpc19hbmRyb2lkKSB7CiAgICAgX3Rlc3Rf
ZGF0YV9wYXRoID0gIi9zZGNhcmQvY2hyb21pdW1fdGVzdHNfcm9vdC90aGlyZF9wYXJ0eS9hbmds
ZS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy8ke190ZXN0fSIKICAgfSBl
bHNlIHsKLSAgICBfdGVzdF9kYXRhX3BhdGggPSByZWJhc2VfcGF0aCgiJHtfdGVzdF9kaXJ9IikK
KyAgICBfdGVzdF9kYXRhX3BhdGggPSByZWJhc2VfcGF0aCgiJHtfdGVzdF9kaXJ9Iiwgcm9vdF9v
dXRfZGlyKQogICB9CiAKICAgYW5nbGVfdHJhY2VfcGVyZl9kZWZpbmVzICs9CiAgICAgICBbICJB
TkdMRV9UUkFDRV9EQVRBX0RJUl8ke190ZXN0fT1cIiR7X3Rlc3RfZGF0YV9wYXRofVwiIiBdCisK
KyAgYW5nbGVfdHJhY2VfcGVyZl9kYXRhICs9IFsgInBlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFj
ZXMvJHtfdGVzdF9kaXJ9LyR7X3Rlc3R9X2NhcHR1cmVfY29udGV4dDEuYW5nbGVkYXRhLmd6IiBd
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9tYW5oYXR0YW5fMTAudGFyLmd6LnNoYTEgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy9t
YW5oYXR0YW5fMTAudGFyLmd6LnNoYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QyOGNmODcyZDI2ZDE2M2NiODc4
ZDA3NmU3ZDk5YzE1ZTk3ZTk2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL21hbmhhdHRhbl8x
MC50YXIuZ3ouc2hhMQpAQCAtMCwwICsxIEBACitmODAxMTk5Yzc5NThiMjA1MzFjYmQwMjI4OWRh
YTUxMjcwOTBkM2E1ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFj
ZXMvdHJleF8xMzAwXzEzMTAudGFyLmd6LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzEzMDBfMTMxMC50YXIu
Z3ouc2hhMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY5NjAwNWQ2YzIzYzYyNjg4
N2RiNDE4N2VhZmZjMjYwYzM5NGIzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzEzMDBfMTMxMC50YXIuZ3ouc2hhMQorKysgL2Rldi9u
dWxsCkBAIC0xICswLDAgQEAKLWYwYWFhMzQ0MzkxODc5MWM3NTA3NmNiZTE4M2MwZGMwMTMzNTY1
NmIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzIw
MC50YXIuZ3ouc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMjAwLnRhci5nei5zaGExCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1
ZmViMzA1NzY4NWIzMDZhN2Q4ZGE3M2UwZGU0OTcwMjFiMGFkYjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVk
X3RyYWNlcy90cmV4XzIwMC50YXIuZ3ouc2hhMQpAQCAtMCwwICsxIEBACitkYmFhY2Q2OWMyMTkx
NDFhNTM5NWJlZjc2NzY1NWYwMzQwOTA4OWFhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMv
cmVzdHJpY3RlZF90cmFjZXMvdHJleF8yMDBfMjEwLnRhci5nei5zaGExIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVzdHJpY3RlZF90cmFjZXMvdHJleF8y
MDBfMjEwLnRhci5nei5zaGExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzJhYzk0
ZGZmMGQ1Nzk0NTIzMWE5YTk0Yjg0ODI0YWQ4NGZmMmJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfMjAwXzIxMC50YXIuZ3ouc2hhMQor
KysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTRiZDMyNzRlODBiOGIyNzM1ODU5OGQ5MGMzNTEw
ZDIyMGVhMzgxMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNl
cy90cmV4XzgwMF84MTAudGFyLmd6LnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90cmV4XzgwMF84MTAudGFyLmd6LnNo
YTEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZDFkZjQwNzAwNDBkOWE4NTkzZDFj
MjIxOGM0NzA4YjhiOWJhZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvcmVz
dHJpY3RlZF90cmFjZXMvdHJleF84MDBfODEwLnRhci5nei5zaGExCisrKyAvZGV2L251bGwKQEAg
LTEgKzAsMCBAQAotY2FjZWIwZjRiZTE5NTk5MTMwYTExZWJkOWQxZGU0NTM3MWIwYzJkOApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfOTAwXzkxMC50
YXIuZ3ouc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3Rz
L3Jlc3RyaWN0ZWRfdHJhY2VzL3RyZXhfOTAwXzkxMC50YXIuZ3ouc2hhMQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWRjZThhNzRmNTQ5NWZkNWJiMThiMjcxNzExYmZmYmMzMzMyMmI0
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9yZXN0cmljdGVkX3RyYWNlcy90
cmV4XzkwMF85MTAudGFyLmd6LnNoYTEKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1mM2My
MmRmOGI5MzY0NDc4ZTdmYjVmODgyMzkyOGU3YzlhYmYzOTYwClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Bl
cmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5j
YwppbmRleCAxMTMxZmFmMjdhMmJlZWM0YzFiYzU4YmZmYTk2YzA1MzJhM2UzMzdhLi5iMDc4MGI3
NzQ5OTZmOTM0MDJhY2Y3ZmViOTRiMTVhMzk2ZmQ1Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZf
dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYwpAQCAtNCwzNSArNCw0MSBAQAogCiAjaW5j
bHVkZSAicGVyZl90ZXN0LmgiCiAKKyNpbmNsdWRlICJjb21tb24vdGhpcmRfcGFydHkvYmFzZS9h
bmdsZWJhc2Uvbm9fZGVzdHJ1Y3Rvci5oIgorCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLW5hbWVzcGFjZSB7CituYW1lc3BhY2UK
K3sKIAotc3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2
YXJhcmcpIHsKLSAgc3RhdGljIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZlcig1MTIpOworc3RkOjpz
dHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpCit7Cisg
ICAgc3RhdGljIGFuZ2xlOjpiYXNlOjpOb0Rlc3RydWN0b3I8c3RkOjp2ZWN0b3I8Y2hhcj4+IGJ1
ZmZlcig1MTIpOwogCi0gIC8vIEF0dGVtcHQgdG8ganVzdCBwcmludCB0byB0aGUgY3VycmVudCBi
dWZmZXIKLSAgaW50IGxlbiA9IHZzbnByaW50ZigmYnVmZmVyWzBdLCBidWZmZXIuc2l6ZSgpLCBm
bXQsIHZhcmFyZyk7Ci0gIGlmIChsZW4gPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4obGVuKSA+
PSBidWZmZXIuc2l6ZSgpKSB7Ci0gICAgLy8gQnVmZmVyIHdhcyBub3QgbGFyZ2UgZW5vdWdoLCBj
YWxjdWxhdGUgdGhlIHJlcXVpcmVkIHNpemUgYW5kIHJlc2l6ZSB0aGUgYnVmZmVyCi0gICAgbGVu
ID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgdmFyYXJnKTsKLSAgICBidWZmZXIucmVzaXplKGxl
biArIDEpOworICAgIC8vIEF0dGVtcHQgdG8ganVzdCBwcmludCB0byB0aGUgY3VycmVudCBidWZm
ZXIKKyAgICBpbnQgbGVuID0gdnNucHJpbnRmKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZm10LCB2YXJhcmcpOworICAgIGlmIChsZW4gPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuKSA+PSBidWZmZXItPnNpemUoKSkKKyAgICB7CisgICAgICAgIC8vIEJ1ZmZlciB3YXMgbm90
IGxhcmdlIGVub3VnaCwgY2FsY3VsYXRlIHRoZSByZXF1aXJlZCBzaXplIGFuZCByZXNpemUgdGhl
IGJ1ZmZlcgorICAgICAgICBsZW4gPSB2c25wcmludGYoTlVMTCwgMCwgZm10LCB2YXJhcmcpOwor
ICAgICAgICBidWZmZXItPnJlc2l6ZShsZW4gKyAxKTsKIAotICAgIC8vIFByaW50IGFnYWluCi0g
ICAgdnNucHJpbnRmKCZidWZmZXJbMF0sIGJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnKTsKLSAg
fQorICAgICAgICAvLyBQcmludCBhZ2FpbgorICAgICAgICB2c25wcmludGYoYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpLCBmbXQsIHZhcmFyZyk7CisgICAgfQogCi0gIHJldHVybiBzdGQ6
OnN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW4pOworICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZm
ZXItPmRhdGEoKSwgbGVuKTsKIH0KIAotc3RkOjpzdHJpbmcgU3RyaW5nUHJpbnRmKGNvbnN0IGNo
YXIgKmZtdCwgLi4uKSB7Ci0gIHZhX2xpc3QgdmFyYXJnOwotICB2YV9zdGFydCh2YXJhcmcsIGZt
dCk7Ci0gIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IEZvcm1hdFN0cmluZyhmbXQsIHZhcmFyZyk7Ci0g
IHZhX2VuZCh2YXJhcmcpOwotICByZXR1cm4gcmVzdWx0Oworc3RkOjpzdHJpbmcgU3RyaW5nUHJp
bnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmFyYXJnOworICAgIHZh
X3N0YXJ0KHZhcmFyZywgZm10KTsKKyAgICBzdGQ6OnN0cmluZyByZXN1bHQgPSBGb3JtYXRTdHJp
bmcoZm10LCB2YXJhcmcpOworICAgIHZhX2VuZCh2YXJhcmcpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHN0ZDo6c3RyaW5nIE51bWJlclRvU3RyaW5nKHNpemVfdCB2YWx1ZSkKQEAgLTQ1LDE3
MyArNTEsMTY0IEBAIHN0ZDo6c3RyaW5nIE51bWJlclRvU3RyaW5nKGRvdWJsZSB2YWx1ZSkKICAg
ICByZXR1cm4gU3RyaW5nUHJpbnRmKCIlLjEwbGYiLCB2YWx1ZSk7CiB9CiAKLXN0ZDo6c3RyaW5n
IFJlc3VsdHNUb1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcmVmaXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgLy8gPCo+UkVTVUxUIDxncmFwaF9u
YW1lPjogPHRyYWNlX25hbWU+PSA8dmFsdWU+IDx1bml0cz4KLSAgLy8gPCo+UkVTVUxUIDxncmFw
aF9uYW1lPjogPHRyYWNlX25hbWU+PSB7PG1lYW4+LCA8c3RkIGRldmlhdGlvbj59IDx1bml0cz4K
LSAgLy8gPCo+UkVTVUxUIDxncmFwaF9uYW1lPjogPHRyYWNlX25hbWU+PSBbPHZhbHVlPix2YWx1
ZSx2YWx1ZSwuLi4sXSA8dW5pdHM+Ci0gIHJldHVybiBTdHJpbmdQcmludGYoIiVzUkVTVUxUICVz
JXM6ICVzPSAlcyVzJXMgJXNcbiIsIGltcG9ydGFudCA/ICIqIiA6ICIiLCBtZWFzdXJlbWVudC5j
X3N0cigpLAotICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyLmNfc3RyKCksIHRyYWNlLmNf
c3RyKCksIHByZWZpeC5jX3N0cigpLCB2YWx1ZXMuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBzdWZmaXguY19zdHIoKSwgdW5pdHMuY19zdHIoKSk7Ci19Ci0KLXZvaWQgUHJpbnRSZXN1
bHRzSW1wbChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN1
ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgZmZsdXNoKHN0ZG91dCk7
Ci0gIHByaW50ZigiJXMiLCBSZXN1bHRzVG9TdHJpbmcobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0
cmFjZSwgdmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgc3Vm
Zml4LCB1bml0cywgaW1wb3J0YW50KS5jX3N0cigpKTsKLSAgZmZsdXNoKHN0ZG91dCk7CitzdGQ6
OnN0cmluZyBSZXN1bHRzVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm1lYXN1cmVtZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtb2RpZmllciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhbHVlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcHJlZml4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzdWZmaXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KQoreworICAgIC8vIDwqPlJFU1VM
VCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gPHZhbHVlPiA8dW5pdHM+CisgICAgLy8gPCo+
UkVTVUxUIDxncmFwaF9uYW1lPjogPHRyYWNlX25hbWU+PSB7PG1lYW4+LCA8c3RkIGRldmlhdGlv
bj59IDx1bml0cz4KKyAgICAvLyA8Kj5SRVNVTFQgPGdyYXBoX25hbWU+OiA8dHJhY2VfbmFtZT49
IFs8dmFsdWU+LHZhbHVlLHZhbHVlLC4uLixdIDx1bml0cz4KKyAgICByZXR1cm4gU3RyaW5nUHJp
bnRmKCIlc1JFU1VMVCAlcyVzOiAlcz0gJXMlcyVzICVzXG4iLCBpbXBvcnRhbnQgPyAiKiIgOiAi
IiwgbWVhc3VyZW1lbnQuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVy
LmNfc3RyKCksIHRyYWNlLmNfc3RyKCksIHByZWZpeC5jX3N0cigpLCB2YWx1ZXMuY19zdHIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5jX3N0cigpLCB1bml0cy5jX3N0cigpKTsK
K30KKwordm9pZCBQcmludFJlc3VsdHNJbXBsKGNvbnN0IHN0ZDo6c3RyaW5nICZtZWFzdXJlbWVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbW9kaWZpZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YWx1ZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZ1bml0cywKKyAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkK
K3sKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBwcmludGYoIiVzIiwKKyAgICAgICAgICAgUmVz
dWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlcywgcHJlZml4
LCBzdWZmaXgsIHVuaXRzLCBpbXBvcnRhbnQpCisgICAgICAgICAgICAgICAuY19zdHIoKSk7Cisg
ICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1uYW1lc3BhY2UgcGVy
Zl90ZXN0IHsKK25hbWVzcGFjZSBwZXJmX3Rlc3QKK3sKIAotdm9pZCBQcmludFJlc3VsdChjb25z
dCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRy
YWNlLAordm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyAmbWVhc3VyZW1lbnQsCisg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtb2RpZmllciwKKyAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLAogICAgICAgICAgICAgICAgICBzaXplX3Qg
dmFsdWUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAg
ICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKKyAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnVuaXRzLAorICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkKK3sKICAg
ICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIE51bWJlclRv
U3RyaW5nKHZhbHVlKSwgc3RkOjpzdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nKCksIHVuaXRzLCBpbXBvcnRhbnQpOwogfQogCi12b2lkIFByaW50UmVzdWx0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJh
Y2UsCit2b2lkIFByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nICZtZWFzdXJlbWVudCwKKyAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1vZGlmaWVyLAorICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsCiAgICAgICAgICAgICAgICAgIGRvdWJsZSB2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAg
ICAgICAgICAgICBib29sIGltcG9ydGFudCkgeworICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KQorewogICAg
IFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgTnVtYmVyVG9T
dHJpbmcodmFsdWUpLCBzdGQ6OnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcoKSwgdW5pdHMsIGltcG9ydGFudCk7CiB9CiAKLXZvaWQgQXBwZW5kUmVzdWx0KHN0ZDo6
c3RyaW5nJiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVh
c3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIs
Ci0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCit2b2lkIEFwcGVu
ZFJlc3VsdChzdGQ6OnN0cmluZyAmb3V0cHV0LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJm1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJm1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNl
LAogICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhbHVlLAotICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQp
IHsKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywKKyAgICAgICAg
ICAgICAgICAgIGJvb2wgaW1wb3J0YW50KQorewogICAgIG91dHB1dCArPSBSZXN1bHRzVG9TdHJp
bmcobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgTnVtYmVyVG9TdHJpbmcodmFsdWUpLCBz
dGQ6OnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmco
KSwgdW5pdHMsIGltcG9ydGFudCk7CiB9CiAKLXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpz
dHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAotICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0
YW50KSB7Ci0gIFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgdHJhY2UsCi0gICAgICAgICAgICAgICAg
ICAgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZygpLAotICAgICAgICAgICAgICAgICAgIHVuaXRzLAotICAgICAg
ICAgICAgICAgICAgIGltcG9ydGFudCk7Ci19Ci0KLXZvaWQgQXBwZW5kUmVzdWx0KHN0ZDo6c3Ry
aW5nJiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3Vy
ZW1lbnQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0g
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewot
ICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpOwotfQotCi12b2lkIFByaW50UmVzdWx0TWVh
bkFuZEVycm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICBQcmludFJlc3VsdHNJ
bXBsKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIG1lYW5fYW5kX2Vycm9yLAotICAgICAg
ICAgICAgICAgICAgICJ7IiwgIn0iLCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBBcHBl
bmRSZXN1bHRNZWFuQW5kRXJyb3Ioc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJv
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIG91
dHB1dCArPSBSZXN1bHRzVG9TdHJpbmcobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgbWVh
bl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInsiLCAifSIsIHVuaXRz
LCBpbXBvcnRhbnQpOwotfQotCi12b2lkIFByaW50UmVzdWx0TGlzdChjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2Us
Ci0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwg
bW9kaWZpZXIsIHRyYWNlLCB2YWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgIlsiLCAiXSIsIHVu
aXRzLCBpbXBvcnRhbnQpOwotfQotCi12b2lkIEFwcGVuZFJlc3VsdExpc3Qoc3RkOjpzdHJpbmcm
IG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3Vy
ZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVy
LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCkgewotICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVt
ZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiWyIsICJdIiwgdW5pdHMsIGltcG9ydGFudCk7Ci19Ci0KLXZvaWQgUHJpbnRTeXN0ZW1Db21t
aXRDaGFyZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGNoYXJnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpbXBvcnRhbnQpIHsKLSAgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2Uoc3Rkb3V0LCB0ZXN0
X25hbWUsIGNoYXJnZSwgaW1wb3J0YW50KTsKK3ZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpz
dHJpbmcgJm1lYXN1cmVtZW50LAorICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
bW9kaWZpZXIsCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwKKyAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhbHVlLAorICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0
YW50KQoreworICAgIFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFj
ZSwgdmFsdWUsIHN0ZDo6c3RyaW5nKCksIHN0ZDo6c3RyaW5nKCksIHVuaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgaW1wb3J0YW50KTsKK30KKwordm9pZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJp
bmcgJm91dHB1dCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtZWFzdXJl
bWVudCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtb2RpZmllciwKKyAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwKKyAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YWx1ZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZ1bml0cywKKyAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KQorewor
ICAgIG91dHB1dCArPSBSZXN1bHRzVG9TdHJpbmcobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFj
ZSwgdmFsdWUsIHN0ZDo6c3RyaW5nKCksIHN0ZDo6c3RyaW5nKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bml0cywgaW1wb3J0YW50KTsKK30KKwordm9pZCBQcmludFJlc3VsdE1l
YW5BbmRFcnJvcihjb25zdCBzdGQ6OnN0cmluZyAmbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZtb2RpZmllciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVhbl9hbmRfZXJyb3IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgUHJpbnRSZXN1
bHRzSW1wbChtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCBtZWFuX2FuZF9lcnJvciwgInsi
LCAifSIsIHVuaXRzLCBpbXBvcnRhbnQpOwogfQogCi12b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hh
cmdlKEZJTEUqIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHRlc3RfbmFtZSwKK3ZvaWQgQXBwZW5kUmVzdWx0TWVhbkFuZEVycm9yKHN0ZDo6
c3RyaW5nICZvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmbWVhc3VyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmbWVhbl9hbmRfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGltcG9ydGFudCkKK3sKKyAgICBvdXRwdXQgKz0KKyAgICAgICAgUmVzdWx0
c1RvU3RyaW5nKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIG1lYW5fYW5kX2Vycm9yLCAi
eyIsICJ9IiwgdW5pdHMsIGltcG9ydGFudCk7Cit9CisKK3ZvaWQgUHJpbnRSZXN1bHRMaXN0KGNv
bnN0IHN0ZDo6c3RyaW5nICZtZWFzdXJlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZ0cmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsCisg
ICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkKK3sKKyAgICBQcmludFJlc3VsdHNJ
bXBsKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlcywgIlsiLCAiXSIsIHVuaXRz
LCBpbXBvcnRhbnQpOworfQorCit2b2lkIEFwcGVuZFJlc3VsdExpc3Qoc3RkOjpzdHJpbmcgJm91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVhc3VyZW1l
bnQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1vZGlmaWVyLAor
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFsdWVzLAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywKKyAgICAgICAgICAgICAgICAgICAgICBi
b29sIGltcG9ydGFudCkKK3sKKyAgICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVt
ZW50LCBtb2RpZmllciwgdHJhY2UsIHZhbHVlcywgIlsiLCAiXSIsIHVuaXRzLCBpbXBvcnRhbnQp
OworfQorCit2b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hhcmdlKGNvbnN0IHN0ZDo6c3RyaW5nICZ0
ZXN0X25hbWUsIHNpemVfdCBjaGFyZ2UsIGJvb2wgaW1wb3J0YW50KQoreworICAgIFByaW50U3lz
dGVtQ29tbWl0Q2hhcmdlKHN0ZG91dCwgdGVzdF9uYW1lLCBjaGFyZ2UsIGltcG9ydGFudCk7Cit9
CisKK3ZvaWQgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2UoRklMRSAqdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGVzdF9uYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICBmcHJpbnRmKHRhcmdldCwgIiVzIiwgU3lz
dGVtQ29tbWl0Q2hhcmdlVG9TdHJpbmcodGVzdF9uYW1lLCBjaGFyZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpLmNfc3RyKCkp
OwotfQotCi1zdGQ6OnN0cmluZyBTeXN0ZW1Db21taXRDaGFyZ2VUb1N0cmluZyhjb25zdCBzdGQ6
OnN0cmluZyYgdGVzdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNoYXJnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaW1wb3J0YW50KSB7Ci0gIHN0ZDo6c3RyaW5nIHRyYWNlX25hbWUodGVzdF9uYW1lKTsK
LSAgc3RkOjpzdHJpbmcgb3V0cHV0OwotICBBcHBlbmRSZXN1bHQob3V0cHV0LAotICAgICAgICAg
ICAgICAgImNvbW1pdF9jaGFyZ2UiLAotICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAg
ICAgICAgICAgICAgICJjYyIgKyB0cmFjZV9uYW1lLAotICAgICAgICAgICAgICAgY2hhcmdlLAot
ICAgICAgICAgICAgICAgImtiIiwKLSAgICAgICAgICAgICAgIGltcG9ydGFudCk7Ci0gIHJldHVy
biBvdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KQor
eworICAgIGZwcmludGYodGFyZ2V0LCAiJXMiLCBTeXN0ZW1Db21taXRDaGFyZ2VUb1N0cmluZyh0
ZXN0X25hbWUsIGNoYXJnZSwgaW1wb3J0YW50KS5jX3N0cigpKTsKK30KKworc3RkOjpzdHJpbmcg
U3lzdGVtQ29tbWl0Q2hhcmdlVG9TdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RfbmFtZSwg
c2l6ZV90IGNoYXJnZSwgYm9vbCBpbXBvcnRhbnQpCit7CisgICAgc3RkOjpzdHJpbmcgdHJhY2Vf
bmFtZSh0ZXN0X25hbWUpOworICAgIHN0ZDo6c3RyaW5nIG91dHB1dDsKKyAgICBBcHBlbmRSZXN1
bHQob3V0cHV0LCAiY29tbWl0X2NoYXJnZSIsIHN0ZDo6c3RyaW5nKCksICJjYyIgKyB0cmFjZV9u
YW1lLCBjaGFyZ2UsICJrYiIsCisgICAgICAgICAgICAgICAgIGltcG9ydGFudCk7CisgICAgcmV0
dXJuIG91dHB1dDsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHBlcmZfdGVzdApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVz
dC5jcHAKaW5kZXggMDI4NTM4MTQ5MWU4MDNkMjAyMTU3ZTNkNjZkNzQwZjM4ZDE2NmJiOC4uNDA1
ZDVmNDU4MjRiNTlhOTU1OWQ3ZjAwODE1NjU4Njc1YjQ0ODEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3Qu
Y3BwCkBAIC0yNzEsNiArMjcxLDE4IEBAIEdMQ29sb3IzMkYgUmVhZENvbG9yMzJGKEdMaW50IHgs
IEdMaW50IHkpCiAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7CiAgICAgcmV0dXJuIGFjdHVhbDsK
IH0KKwordm9pZCBMb2FkRW50cnlQb2ludHNXaXRoVXRpbExvYWRlcigpCit7CisjaWYgZGVmaW5l
ZChBTkdMRV9VU0VfVVRJTF9MT0FERVIpCisgICAgUEZORUdMR0VUUFJPQ0FERFJFU1NQUk9DIGdl
dFByb2NBZGRyZXNzOworICAgIEFOR0xFVGVzdEVudmlyb25tZW50OjpHZXRFR0xMaWJyYXJ5KCkt
PmdldEFzKCJlZ2xHZXRQcm9jQWRkcmVzcyIsICZnZXRQcm9jQWRkcmVzcyk7CisgICAgQVNTRVJU
X05FKG51bGxwdHIsIGdldFByb2NBZGRyZXNzKTsKKworICAgIExvYWRFR0woZ2V0UHJvY0FkZHJl
c3MpOworICAgIExvYWRHTEVTKGdldFByb2NBZGRyZXNzKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChB
TkdMRV9VU0VfVVRJTF9MT0FERVIpCit9CiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogdXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOwpAQCAtMzcyLDYgKzM4NCwxMiBAQCBBTkdMRVRlc3RCYXNlOjpBTkdM
RVRlc3RCYXNlKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW1zKQogICAgIFBsYXRmb3Jt
UGFyYW1ldGVycyB3aXRoTWV0aG9kcyAgICAgICAgICAgID0gcGFyYW1zOwogICAgIHdpdGhNZXRo
b2RzLmVnbFBhcmFtZXRlcnMucGxhdGZvcm1NZXRob2RzID0gJmdEZWZhdWx0UGxhdGZvcm1NZXRo
b2RzOwogCisgICAgLy8gV2UgZG9uJ3QgYnVpbGQgdnVsa2FuIGRlYnVnIGxheWVycyBvbiBNYWMg
KGh0dHA6Ly9hbmdsZWJ1Zy5jb20vNDM3NikKKyAgICBpZiAoSXNPU1goKSAmJiB3aXRoTWV0aG9k
cy5nZXRSZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX1ZVTEtBTl9BTkdMRSkK
KyAgICB7CisgICAgICAgIHdpdGhNZXRob2RzLmVnbFBhcmFtZXRlcnMuZGVidWdMYXllcnNFbmFi
bGVkID0gZmFsc2U7CisgICAgfQorCiAgICAgYXV0byBpdGVyID0gZ0ZpeHR1cmVzLmZpbmQod2l0
aE1ldGhvZHMpOwogICAgIGlmIChpdGVyICE9IGdGaXh0dXJlcy5lbmQoKSkKICAgICB7CkBAIC01
MDYsMTQgKzUyNCw3IEBAIHZvaWQgQU5HTEVUZXN0QmFzZTo6QU5HTEVUZXN0U2V0VXAoKQogCiAg
ICAgaWYgKG1DdXJyZW50UGFyYW1zLT5ub0ZpeHR1cmUpCiAgICAgewotI2lmIGRlZmluZWQoQU5H
TEVfVVNFX1VUSUxfTE9BREVSKQotICAgICAgICBQRk5FR0xHRVRQUk9DQUREUkVTU1BST0MgZ2V0
UHJvY0FkZHJlc3M7Ci0gICAgICAgIEFOR0xFVGVzdEVudmlyb25tZW50OjpHZXRFR0xMaWJyYXJ5
KCktPmdldEFzKCJlZ2xHZXRQcm9jQWRkcmVzcyIsICZnZXRQcm9jQWRkcmVzcyk7Ci0gICAgICAg
IEFTU0VSVF9ORShudWxscHRyLCBnZXRQcm9jQWRkcmVzcyk7Ci0KLSAgICAgICAgTG9hZEVHTChn
ZXRQcm9jQWRkcmVzcyk7Ci0gICAgICAgIExvYWRHTEVTKGdldFByb2NBZGRyZXNzKTsKLSNlbmRp
ZiAgLy8gZGVmaW5lZChBTkdMRV9VU0VfVVRJTF9MT0FERVIpCisgICAgICAgIExvYWRFbnRyeVBv
aW50c1dpdGhVdGlsTG9hZGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOTgs
NyArMTMwOSw3IEBAIHZvaWQgQU5HTEVQcm9jZXNzVGVzdEFyZ3MoaW50ICphcmdjLCBjaGFyICph
cmd2W10pCiAgICAgewogICAgICAgICBpZiAoc3RybmNtcChhcmd2W2FyZ0luZGV4XSwga1VzZUNv
bmZpZywgc3RybGVuKGtVc2VDb25maWcpKSA9PSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBn
U2VsZWN0ZWRDb25maWcgPSBzdGQ6OnN0cmluZyhhcmd2W2FyZ0luZGV4XSArIHN0cmxlbihrVXNl
Q29uZmlnKSk7CisgICAgICAgICAgICBTZXRTZWxlY3RlZENvbmZpZyhhcmd2W2FyZ0luZGV4XSAr
IHN0cmxlbihrVXNlQ29uZmlnKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0cm5jbXAoYXJn
dlthcmdJbmRleF0sIGtTZXBhcmF0ZVByb2Nlc3NQZXJDb25maWcsIHN0cmxlbihrU2VwYXJhdGVQ
cm9jZXNzUGVyQ29uZmlnKSkgPT0KICAgICAgICAgICAgIDApCkBAIC0xMzA5LDcgKzEzMjAsNyBA
QCB2b2lkIEFOR0xFUHJvY2Vzc1Rlc3RBcmdzKGludCAqYXJnYywgY2hhciAqYXJndltdKQogCiAg
ICAgaWYgKGdTZXBhcmF0ZVByb2Nlc3NQZXJDb25maWcpCiAgICAgewotICAgICAgICBpZiAoIWdT
ZWxlY3RlZENvbmZpZy5lbXB0eSgpKQorICAgICAgICBpZiAoSXNDb25maWdTZWxlY3RlZCgpKQog
ICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkNhbm5vdCB1c2UgYm90aCBhIHNp
bmdsZSB0ZXN0IGNvbmZpZyBhbmQgc2VwYXJhdGUgcHJvY2Vzc2VzLlxuIjsKICAgICAgICAgICAg
IGV4aXQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGVzdF91dGlscy9BTkdMRVRlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5oCmluZGV4IDU0NDlhYzU0OWIxMmQ2ZWI2MWQyNmM0YzM3
MTI5Y2JkNGI5YmI4NTcuLmNjZWZkZTIyNDYyZmQ3YWY4ZThhNjMyNmRkZmEzMWFjYWE2MmMyOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxz
L0FOR0xFVGVzdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0
X3V0aWxzL0FOR0xFVGVzdC5oCkBAIC0xODMsNiArMTgzLDggQEAgY29uc3RleHByIHN0ZDo6YXJy
YXk8R0xlbnVtLCA2PiBrQ3ViZUZhY2VzID0gewogICAgICBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1ksIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwKICAgICAgR0xfVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9afX07CiAKK3ZvaWQgTG9hZEVudHJ5UG9pbnRzV2l0aFV0aWxM
b2FkZXIoKTsKKwogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAKICNkZWZpbmUgRVhQRUNUX1BJWEVM
X0VRKHgsIHksIHIsIGcsIGIsIGEpIFwKQEAgLTQ3NCw3ICs0NzYsNyBAQCBjbGFzcyBBTkdMRVRl
c3RCYXNlCiAgICAgYm9vbCBpc1Z1bGthblN3aWZ0c2hhZGVyUmVuZGVyZXIoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1DdXJyZW50UGFyYW1zLT5nZXRSZW5kZXJlcigpID09IEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX1ZVTEtBTl9BTkdMRSAmJgotICAgICAgICAgICAgICAgbUN1cnJl
bnRQYXJhbXMtPmdldERldmljZVR5cGUoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZ
UEVfU1dJRlRTSEFERVJfQU5HTEU7CisgICAgICAgICAgICAgICBtQ3VycmVudFBhcmFtcy0+aXNT
d2lmdHNoYWRlcigpOwogICAgIH0KIAogICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c011bHRpdGhy
ZWFkaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdF91dGlscy9WdWxrYW5FeHRlcm5hbEhlbHBlci5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9WdWxrYW5FeHRlcm5hbEhlbHBlci5jcHAK
aW5kZXggNGM2NzgxMTJhYTEyZmE1YjZjM2EyYzgzOTc5YzI5N2VjMWJiM2Y4Mi4uMWU3NDM2ZDk3
OThmNzFlYTQ1Mzk1ZWMzYTA0ZjUzOTc2YzMwZGYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvVnVsa2FuRXh0ZXJuYWxIZWxwZXIuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL1Z1bGth
bkV4dGVybmFsSGVscGVyLmNwcApAQCAtMjAxLDEwICsyMDEsOSBAQCB2b2lkIFZ1bGthbkV4dGVy
bmFsSGVscGVyOjppbml0aWFsaXplKCkKICAgICAgICAgRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9u
UHJvcGVydGllcyhtUGh5c2ljYWxEZXZpY2UsIG51bGxwdHIpOwogCiAgICAgc3RkOjp2ZWN0b3I8
Y29uc3QgY2hhciAqPiByZXF1ZXN0ZWREZXZpY2VFeHRlbnNpb25zID0gewotICAgICAgICBWS19L
SFJfRVhURVJOQUxfU0VNQVBIT1JFX0VYVEVOU0lPTl9OQU1FLAotICAgICAgICBWS19LSFJfRVhU
RVJOQUxfU0VNQVBIT1JFX0ZEX0VYVEVOU0lPTl9OQU1FLAotICAgICAgICBWS19LSFJfRVhURVJO
QUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FLAotICAgICAgICBWS19LSFJfRVhURVJOQUxfTUVNT1JZ
X0ZEX0VYVEVOU0lPTl9OQU1FLAorICAgICAgICBWS19LSFJfRVhURVJOQUxfU0VNQVBIT1JFX0VY
VEVOU0lPTl9OQU1FLCAgVktfS0hSX0VYVEVSTkFMX1NFTUFQSE9SRV9GRF9FWFRFTlNJT05fTkFN
RSwKKyAgICAgICAgVktfS0hSX0VYVEVSTkFMX01FTU9SWV9FWFRFTlNJT05fTkFNRSwgICAgIFZL
X0tIUl9FWFRFUk5BTF9NRU1PUllfRkRfRVhURU5TSU9OX05BTUUsCisgICAgICAgIFZLX0ZVQ0hT
SUFfRVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FLCBWS19GVUNIU0lBX0VYVEVSTkFMX1NF
TUFQSE9SRV9FWFRFTlNJT05fTkFNRSwKICAgICB9OwogCiAgICAgc3RkOjp2ZWN0b3I8Y29uc3Qg
Y2hhciAqPiBlbmFibGVkRGV2aWNlRXh0ZW5zaW9uczsKQEAgLTI3Myw2ICsyNzIsMTAgQEAgdm9p
ZCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIEhhc0V4dGVuc2lv
bihlbmFibGVkRGV2aWNlRXh0ZW5zaW9ucywgVktfS0hSX0VYVEVSTkFMX01FTU9SWV9GRF9FWFRF
TlNJT05fTkFNRSk7CiAgICAgbUhhc0V4dGVybmFsU2VtYXBob3JlRmQgPQogICAgICAgICBIYXNF
eHRlbnNpb24oZW5hYmxlZERldmljZUV4dGVuc2lvbnMsIFZLX0tIUl9FWFRFUk5BTF9TRU1BUEhP
UkVfRkRfRVhURU5TSU9OX05BTUUpOworICAgIG1IYXNFeHRlcm5hbE1lbW9yeUZ1Y2hzaWEgPQor
ICAgICAgICBIYXNFeHRlbnNpb24oZW5hYmxlZERldmljZUV4dGVuc2lvbnMsIFZLX0ZVQ0hTSUFf
RVhURVJOQUxfTUVNT1JZX0VYVEVOU0lPTl9OQU1FKTsKKyAgICBtSGFzRXh0ZXJuYWxTZW1hcGhv
cmVGdWNoc2lhID0KKyAgICAgICAgSGFzRXh0ZW5zaW9uKGVuYWJsZWREZXZpY2VFeHRlbnNpb25z
LCBWS19GVUNIU0lBX0VYVEVSTkFMX1NFTUFQSE9SRV9FWFRFTlNJT05fTkFNRSk7CiAKICAgICB2
a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzMiA9CiAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMy
PigKQEAgLTI4NCwyMSArMjg3LDIwIEBAIHZvaWQgVnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmluaXRp
YWxpemUoKQogICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5hbFNlbWFwaG9yZVByb3BlcnRp
ZXNLSFIgPQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTl92a0dldFBoeXNpY2FsRGV2aWNl
RXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSPigKICAgICAgICAgICAgIHZrR2V0SW5zdGFu
Y2VQcm9jQWRkcihtSW5zdGFuY2UsICJ2a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhv
cmVQcm9wZXJ0aWVzS0hSIikpOworICAgIHZrR2V0TWVtb3J5WmlyY29uSGFuZGxlRlVDSFNJQSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOX3ZrR2V0TWVtb3J5WmlyY29uSGFuZGxlRlVDSFNJQT4oCisg
ICAgICAgIHZrR2V0SW5zdGFuY2VQcm9jQWRkcihtSW5zdGFuY2UsICJ2a0dldE1lbW9yeVppcmNv
bkhhbmRsZUZVQ0hTSUEiKSk7CiB9CiAKLWJvb2wgVnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmNhbkNy
ZWF0ZUltYWdlT3BhcXVlRmQoVmtGb3JtYXQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlVHlwZSB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlVGlsaW5nIHRp
bGluZykgY29uc3QKK2Jvb2wgVnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmNhbkNyZWF0ZUltYWdlRXh0
ZXJuYWwoCisgICAgVmtGb3JtYXQgZm9ybWF0LAorICAgIFZrSW1hZ2VUeXBlIHR5cGUsCisgICAg
VmtJbWFnZVRpbGluZyB0aWxpbmcsCisgICAgVmtFeHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVGbGFn
Qml0cyBoYW5kbGVUeXBlKSBjb25zdAogewotICAgIGlmICghbUhhc0V4dGVybmFsTWVtb3J5RmQp
Ci0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgVmtQaHlzaWNhbERl
dmljZUV4dGVybmFsSW1hZ2VGb3JtYXRJbmZvIGV4dGVybmFsSW1hZ2VGb3JtYXRJbmZvID0gewog
ICAgICAgICAvKiAuc1R5cGUgPSAqLyBWS19TVFJVQ1RVUkVfVFlQRV9QSFlTSUNBTF9ERVZJQ0Vf
RVhURVJOQUxfSU1BR0VfRk9STUFUX0lORk8sCiAgICAgICAgIC8qIC5wTmV4dCA9ICovIG51bGxw
dHIsCi0gICAgICAgIC8qIC5oYW5kbGVUeXBlID0gKi8gVktfRVhURVJOQUxfTUVNT1JZX0hBTkRM
RV9UWVBFX09QQVFVRV9GRF9CSVQsCisgICAgICAgIC8qIC5oYW5kbGVUeXBlID0gKi8gaGFuZGxl
VHlwZSwKICAgICB9OwogCiAgICAgVmtQaHlzaWNhbERldmljZUltYWdlRm9ybWF0SW5mbzIgaW1h
Z2VGb3JtYXRJbmZvID0gewpAQCAtMzQ3LDggKzM0OSw5IEBAIGJvb2wgVnVsa2FuRXh0ZXJuYWxI
ZWxwZXI6OmNhbkNyZWF0ZUltYWdlT3BhcXVlRmQoVmtGb3JtYXQgZm9ybWF0LAogICAgIHJldHVy
biB0cnVlOwogfQogCi1Wa1Jlc3VsdCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6Y3JlYXRlSW1hZ2Uy
RE9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKK1ZrUmVzdWx0IFZ1bGthbkV4dGVybmFsSGVscGVy
OjpjcmVhdGVJbWFnZTJERXh0ZXJuYWwoVmtGb3JtYXQgZm9ybWF0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0V4dGVudDNEIGV4dGVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtF
eHRlcm5hbE1lbW9yeUhhbmRsZVR5cGVGbGFncyBoYW5kbGVUeXBlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZSAqaW1hZ2VPdXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZr
RGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqZGV2aWNlTWVtb3J5U2l6
ZU91dCkKQEAgLTM1Niw3ICszNTksNyBAQCBWa1Jlc3VsdCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6
Y3JlYXRlSW1hZ2UyRE9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKICAgICBWa0V4dGVybmFsTWVt
b3J5SW1hZ2VDcmVhdGVJbmZvS0hSIGV4dGVybmFsTWVtb3J5SW1hZ2VDcmVhdGVJbmZvID0gewog
ICAgICAgICAvKiAuc1R5cGUgPSAqLyBWS19TVFJVQ1RVUkVfVFlQRV9FWFRFUk5BTF9NRU1PUllf
SU1BR0VfQ1JFQVRFX0lORk8sCiAgICAgICAgIC8qIC5wTmV4dCA9ICovIG51bGxwdHIsCi0gICAg
ICAgIC8qIC5oYW5kbGVUeXBlcyA9ICovIFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9P
UEFRVUVfRkRfQklULAorICAgICAgICAvKiAuaGFuZGxlVHlwZXMgPSAqLyBoYW5kbGVUeXBlcywK
ICAgICB9OwogCiAgICAgVmtJbWFnZUNyZWF0ZUluZm8gaW1hZ2VDcmVhdGVJbmZvID0gewpAQCAt
Mzk1LDkgKzM5OCw4IEBAIFZrUmVzdWx0IFZ1bGthbkV4dGVybmFsSGVscGVyOjpjcmVhdGVJbWFn
ZTJET3BhcXVlRmQoVmtGb3JtYXQgZm9ybWF0LAogICAgIFZrRXhwb3J0TWVtb3J5QWxsb2NhdGVJ
bmZvIGV4cG9ydE1lbW9yeUFsbG9jYXRlSW5mbyA9IHsKICAgICAgICAgLyogLnNUeXBlID0gKi8g
VktfU1RSVUNUVVJFX1RZUEVfRVhQT1JUX01FTU9SWV9BTExPQ0FURV9JTkZPLAogICAgICAgICAv
KiAucE5leHQgPSAqLyBudWxscHRyLAotICAgICAgICAvKiAuaGFuZGxlVHlwZXMgPSAqLyBWS19F
WFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVCwKKyAgICAgICAgLyogLmhh
bmRsZVR5cGVzID0gKi8gaGFuZGxlVHlwZXMsCiAgICAgfTsKLQogICAgIFZrTWVtb3J5QWxsb2Nh
dGVJbmZvIG1lbW9yeUFsbG9jYXRlSW5mbyA9IHsKICAgICAgICAgLyogLnNUeXBlID0gKi8gVktf
U1RSVUNUVVJFX1RZUEVfTUVNT1JZX0FMTE9DQVRFX0lORk8sCiAgICAgICAgIC8qIC5wTmV4dCA9
ICovICZleHBvcnRNZW1vcnlBbGxvY2F0ZUluZm8sCkBAIC00MjksNiArNDMxLDI5IEBAIFZrUmVz
dWx0IFZ1bGthbkV4dGVybmFsSGVscGVyOjpjcmVhdGVJbWFnZTJET3BhcXVlRmQoVmtGb3JtYXQg
Zm9ybWF0LAogICAgIHJldHVybiBWS19TVUNDRVNTOwogfQogCitib29sIFZ1bGthbkV4dGVybmFs
SGVscGVyOjpjYW5DcmVhdGVJbWFnZU9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZVR5cGUgdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJ
bWFnZVRpbGluZyB0aWxpbmcpIGNvbnN0Cit7CisgICAgaWYgKCFtSGFzRXh0ZXJuYWxNZW1vcnlG
ZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fu
Q3JlYXRlSW1hZ2VFeHRlcm5hbChmb3JtYXQsIHR5cGUsIHRpbGluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVF
X0ZEX0JJVCk7Cit9CisKK1ZrUmVzdWx0IFZ1bGthbkV4dGVybmFsSGVscGVyOjpjcmVhdGVJbWFn
ZTJET3BhcXVlRmQoVmtGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa0V4dGVudDNEIGV4dGVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZSAqaW1hZ2VP
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZrRGV2aWNlTWVtb3J5ICpkZXZpY2VNZW1vcnlPdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqZGV2aWNlTWVtb3J5
U2l6ZU91dCkKK3sKKyAgICByZXR1cm4gY3JlYXRlSW1hZ2UyREV4dGVybmFsKGZvcm1hdCwgZXh0
ZW50LCBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlT3V0LCBkZXZpY2VNZW1vcnlPdXQsIGRl
dmljZU1lbW9yeVNpemVPdXQpOworfQorCiBWa1Jlc3VsdCBWdWxrYW5FeHRlcm5hbEhlbHBlcjo6
ZXhwb3J0TWVtb3J5T3BhcXVlRmQoVmtEZXZpY2VNZW1vcnkgZGV2aWNlTWVtb3J5LCBpbnQgKmZk
KQogewogICAgIFZrTWVtb3J5R2V0RmRJbmZvS0hSIG1lbW9yeUdldEZkSW5mbyA9IHsKQEAgLTQ0
MSw2ICs0NjYsNDIgQEAgVmtSZXN1bHQgVnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmV4cG9ydE1lbW9y
eU9wYXF1ZUZkKFZrRGV2aWNlTWVtb3J5IGRldmljZU1lbW9yeSwKICAgICByZXR1cm4gdmtHZXRN
ZW1vcnlGZEtIUihtRGV2aWNlLCAmbWVtb3J5R2V0RmRJbmZvLCBmZCk7CiB9CiAKK2Jvb2wgVnVs
a2FuRXh0ZXJuYWxIZWxwZXI6OmNhbkNyZWF0ZUltYWdlWmlyY29uVm1vKFZrRm9ybWF0IGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZr
SW1hZ2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWa0ltYWdlVGlsaW5nIHRpbGluZykgY29uc3QKK3sKKyAgICBpZiAoIW1IYXNF
eHRlcm5hbE1lbW9yeUZ1Y2hzaWEpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIGNhbkNyZWF0ZUltYWdlRXh0ZXJuYWwoZm9ybWF0LCB0eXBlLCB0aWxp
bmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRVhURVJOQUxfTUVNT1JZ
X0hBTkRMRV9UWVBFX1RFTVBfWklSQ09OX1ZNT19CSVRfRlVDSFNJQSk7Cit9CisKK1ZrUmVzdWx0
IFZ1bGthbkV4dGVybmFsSGVscGVyOjpjcmVhdGVJbWFnZTJEWmlyY29uVm1vKFZrRm9ybWF0IGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZrRXh0ZW50M0QgZXh0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZSAqaW1hZ2VPdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0RldmljZU1lbW9yeSAqZGV2
aWNlTWVtb3J5T3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmtEZXZpY2VTaXplICpkZXZpY2VNZW1vcnlTaXplT3V0KQoreworICAgIHJl
dHVybiBjcmVhdGVJbWFnZTJERXh0ZXJuYWwoZm9ybWF0LCBleHRlbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWS19FWFRFUk5BTF9NRU1PUllfSEFORExFX1RZUEVfVEVNUF9a
SVJDT05fVk1PX0JJVF9GVUNIU0lBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW1hZ2VPdXQsIGRldmljZU1lbW9yeU91dCwgZGV2aWNlTWVtb3J5U2l6ZU91dCk7Cit9CisKK1Zr
UmVzdWx0IFZ1bGthbkV4dGVybmFsSGVscGVyOjpleHBvcnRNZW1vcnlaaXJjb25WbW8oVmtEZXZp
Y2VNZW1vcnkgZGV2aWNlTWVtb3J5LCB6eF9oYW5kbGVfdCAqdm1vKQoreworICAgIFZrTWVtb3J5
R2V0WmlyY29uSGFuZGxlSW5mb0ZVQ0hTSUEgbWVtb3J5R2V0WmlyY29uSGFuZGxlSW5mbyA9IHsK
KyAgICAgICAgLyogLnNUeXBlID0gKi8gVktfU1RSVUNUVVJFX1RZUEVfVEVNUF9NRU1PUllfR0VU
X1pJUkNPTl9IQU5ETEVfSU5GT19GVUNIU0lBLAorICAgICAgICAvKiAucE5leHQgPSAqLyBudWxs
cHRyLAorICAgICAgICAvKiAubWVtb3J5ID0gKi8gZGV2aWNlTWVtb3J5LAorICAgICAgICAvKiAu
aGFuZGxlVHlwZSA9ICovIFZLX0VYVEVSTkFMX01FTU9SWV9IQU5ETEVfVFlQRV9URU1QX1pJUkNP
Tl9WTU9fQklUX0ZVQ0hTSUEsCisgICAgfTsKKworICAgIHJldHVybiB2a0dldE1lbW9yeVppcmNv
bkhhbmRsZUZVQ0hTSUEobURldmljZSwgJm1lbW9yeUdldFppcmNvbkhhbmRsZUluZm8sIHZtbyk7
Cit9CisKIGJvb2wgVnVsa2FuRXh0ZXJuYWxIZWxwZXI6OmNhbkNyZWF0ZVNlbWFwaG9yZU9wYXF1
ZUZkKCkgY29uc3QKIHsKICAgICBpZiAoIW1IYXNFeHRlcm5hbFNlbWFwaG9yZUZkIHx8ICF2a0dl
dFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvVnVsa2FuRXh0
ZXJuYWxIZWxwZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL1Z1bGthbkV4dGVybmFsSGVscGVyLmgKaW5kZXggYmE1YWIyMmQ2YzIyZDNkZTU0ZDVlYmI1
NGY5MDc0MmMwOTE1NjQwYi4uZDcyNWM3ZjM5ZThkOTJkZDk4ZjU4NTA3ZDg2MmRmNmQ3NmUzMGZl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvVnVsa2FuRXh0ZXJuYWxIZWxwZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9WdWxrYW5FeHRlcm5hbEhlbHBlci5oCkBAIC05LDYgKzksNyBA
QAogI2RlZmluZSBBTkdMRV9URVNUU19URVNUVVRJTFNfVlVMS0FORVhURVJOQUxIRUxQRVJfSF8K
IAogI2luY2x1ZGUgInZvbGsuaCIKKyNpbmNsdWRlICJ2dWxrYW4vdnVsa2FuX2Z1Y2hzaWFfZXh0
LmgiCiAKIG5hbWVzcGFjZSBhbmdsZQogewpAQCAtMjYsNiArMjcsMTcgQEAgY2xhc3MgVnVsa2Fu
RXh0ZXJuYWxIZWxwZXIKICAgICBWa0RldmljZSBnZXREZXZpY2UoKSBjb25zdCB7IHJldHVybiBt
RGV2aWNlOyB9CiAgICAgVmtRdWV1ZSBnZXRHcmFwaGljc1F1ZXVlKCkgY29uc3QgeyByZXR1cm4g
bUdyYXBoaWNzUXVldWU7IH0KIAorICAgIGJvb2wgY2FuQ3JlYXRlSW1hZ2VFeHRlcm5hbChWa0Zv
cm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VUeXBl
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VUaWxpbmcgdGls
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0V4dGVybmFsTWVtb3J5SGFu
ZGxlVHlwZUZsYWdCaXRzIGhhbmRsZVR5cGUpIGNvbnN0OworICAgIFZrUmVzdWx0IGNyZWF0ZUlt
YWdlMkRFeHRlcm5hbChWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrRXh0ZW50M0QgZXh0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWa0V4dGVybmFsTWVtb3J5SGFuZGxlVHlwZUZsYWdzIGhhbmRsZVR5cGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlICppbWFnZU91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VNZW1vcnkgKmRldmljZU1lbW9y
eU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtEZXZpY2VTaXplICpk
ZXZpY2VNZW1vcnlTaXplT3V0KTsKKwogICAgIC8vIFZLX0tIUl9leHRlcm5hbF9tZW1vcnlfZmQK
ICAgICBib29sIGNhbkNyZWF0ZUltYWdlT3BhcXVlRmQoVmtGb3JtYXQgZm9ybWF0LCBWa0ltYWdl
VHlwZSB0eXBlLCBWa0ltYWdlVGlsaW5nIHRpbGluZykgY29uc3Q7CiAgICAgVmtSZXN1bHQgY3Jl
YXRlSW1hZ2UyRE9wYXF1ZUZkKFZrRm9ybWF0IGZvcm1hdCwKQEAgLTM1LDExICs0NywyNSBAQCBj
bGFzcyBWdWxrYW5FeHRlcm5hbEhlbHBlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWa0RldmljZVNpemUgKmRldmljZU1lbW9yeVNpemVPdXQpOwogICAgIFZrUmVzdWx0IGV4
cG9ydE1lbW9yeU9wYXF1ZUZkKFZrRGV2aWNlTWVtb3J5IGRldmljZU1lbW9yeSwgaW50ICpmZCk7
CiAKKyAgICAvLyBWS19GVUNIU0lBX2V4dGVybmFsX21lbW9yeQorICAgIGJvb2wgY2FuQ3JlYXRl
SW1hZ2VaaXJjb25WbW8oVmtGb3JtYXQgZm9ybWF0LCBWa0ltYWdlVHlwZSB0eXBlLCBWa0ltYWdl
VGlsaW5nIHRpbGluZykgY29uc3Q7CisgICAgVmtSZXN1bHQgY3JlYXRlSW1hZ2UyRFppcmNvblZt
byhWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
a0V4dGVudDNEIGV4dGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZr
SW1hZ2UgKmltYWdlT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtE
ZXZpY2VNZW1vcnkgKmRldmljZU1lbW9yeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrRGV2aWNlU2l6ZSAqZGV2aWNlTWVtb3J5U2l6ZU91dCk7CisgICAgVmtSZXN1
bHQgZXhwb3J0TWVtb3J5WmlyY29uVm1vKFZrRGV2aWNlTWVtb3J5IGRldmljZU1lbW9yeSwgenhf
aGFuZGxlX3QgKnZtbyk7CisKICAgICAvLyBWS19LSFJfZXh0ZXJuYWxfc2VtYXBob3JlX2ZkCiAg
ICAgYm9vbCBjYW5DcmVhdGVTZW1hcGhvcmVPcGFxdWVGZCgpIGNvbnN0OwogICAgIFZrUmVzdWx0
IGNyZWF0ZVNlbWFwaG9yZU9wYXF1ZUZkKFZrU2VtYXBob3JlICpzZW1hcGhvcmUpOwogICAgIFZr
UmVzdWx0IGV4cG9ydFNlbWFwaG9yZU9wYXF1ZUZkKFZrU2VtYXBob3JlIHNlbWFwaG9yZSwgaW50
ICpmZCk7CiAKKyAgICAvLyBWS19GVUNIU0lBX2V4dGVybmFsX3NlbWFwaG9yZQorICAgIGJvb2wg
Y2FuQ3JlYXRlU2VtYXBob3JlWmlyY29uRXZlbnQoKSBjb25zdDsKKyAgICBWa1Jlc3VsdCBjcmVh
dGVTZW1hcGhvcmVaaXJjb25FdmVudChWa1NlbWFwaG9yZSAqc2VtYXBob3JlKTsKKyAgICBWa1Jl
c3VsdCBleHBvcnRTZW1hcGhvcmVaaXJjb25FdmVudChWa1NlbWFwaG9yZSBzZW1hcGhvcmUsIHp4
X2hhbmRsZV90ICpldmVudCk7CisKICAgcHJpdmF0ZToKICAgICBWa0luc3RhbmNlIG1JbnN0YW5j
ZSAgICAgICAgICAgICA9IFZLX05VTExfSEFORExFOwogICAgIFZrUGh5c2ljYWxEZXZpY2UgbVBo
eXNpY2FsRGV2aWNlID0gVktfTlVMTF9IQU5ETEU7CkBAIC01MCwxNCArNzYsMTcgQEAgY2xhc3Mg
VnVsa2FuRXh0ZXJuYWxIZWxwZXIKIAogICAgIHVpbnQzMl90IG1HcmFwaGljc1F1ZXVlRmFtaWx5
SW5kZXggPSBVSU5UMzJfTUFYOwogCi0gICAgYm9vbCBtSGFzRXh0ZXJuYWxNZW1vcnlGZCAgICA9
IGZhbHNlOwotICAgIGJvb2wgbUhhc0V4dGVybmFsU2VtYXBob3JlRmQgPSBmYWxzZTsKKyAgICBi
b29sIG1IYXNFeHRlcm5hbE1lbW9yeUZkICAgICAgICAgPSBmYWxzZTsKKyAgICBib29sIG1IYXNF
eHRlcm5hbE1lbW9yeUZ1Y2hzaWEgICAgPSBmYWxzZTsKKyAgICBib29sIG1IYXNFeHRlcm5hbFNl
bWFwaG9yZUZkICAgICAgPSBmYWxzZTsKKyAgICBib29sIG1IYXNFeHRlcm5hbFNlbWFwaG9yZUZ1
Y2hzaWEgPSBmYWxzZTsKICAgICBQRk5fdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJv
cGVydGllczIgdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllczIgPQogICAg
ICAgICBudWxscHRyOwogICAgIFBGTl92a0dldE1lbW9yeUZkS0hSIHZrR2V0TWVtb3J5RmRLSFIg
ICAgICAgPSBudWxscHRyOwogICAgIFBGTl92a0dldFNlbWFwaG9yZUZkS0hSIHZrR2V0U2VtYXBo
b3JlRmRLSFIgPSBudWxscHRyOwogICAgIFBGTl92a0dldFBoeXNpY2FsRGV2aWNlRXh0ZXJuYWxT
ZW1hcGhvcmVQcm9wZXJ0aWVzS0hSCi0gICAgICAgIHZrR2V0UGh5c2ljYWxEZXZpY2VFeHRlcm5h
bFNlbWFwaG9yZVByb3BlcnRpZXNLSFIgPSBudWxscHRyOworICAgICAgICB2a0dldFBoeXNpY2Fs
RGV2aWNlRXh0ZXJuYWxTZW1hcGhvcmVQcm9wZXJ0aWVzS0hSICAgICAgICAgICAgID0gbnVsbHB0
cjsKKyAgICBQRk5fdmtHZXRNZW1vcnlaaXJjb25IYW5kbGVGVUNIU0lBIHZrR2V0TWVtb3J5Wmly
Y29uSGFuZGxlRlVDSFNJQSA9IG51bGxwdHI7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxz
L2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwCmluZGV4IGMwZWFiYWZkYzUwZDJj
YTA0OGFjM2E3NmU5NDQ4ODM5ODZjNGI2NzUuLmIwNGVhMTczZmNhMTQzZjY4ZjdmNmFkZmU4Yzg3
OWYzODc0Y2Y5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcApAQCAt
NDQsNiArNDQsMTEgQEAgRUdMaW50IFBsYXRmb3JtUGFyYW1ldGVyczo6Z2V0RGV2aWNlVHlwZSgp
IGNvbnN0CiAgICAgcmV0dXJuIGVnbFBhcmFtZXRlcnMuZGV2aWNlVHlwZTsKIH0KIAorYm9vbCBQ
bGF0Zm9ybVBhcmFtZXRlcnM6OmlzU3dpZnRzaGFkZXIoKSBjb25zdAoreworICAgIHJldHVybiBl
Z2xQYXJhbWV0ZXJzLmRldmljZVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBF
X1NXSUZUU0hBREVSX0FOR0xFOworfQorCiB2b2lkIFBsYXRmb3JtUGFyYW1ldGVyczo6aW5pdERl
ZmF1bHRQYXJhbWV0ZXJzKCkKIHsKICAgICAvLyBEZWZhdWx0IGRlYnVnIGxheWVycyB0byBlbmFi
bGVkIGluIHRlc3RzLgpAQCAtNjUsNiArNzAsMzEgQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBs
YXRmb3JtUGFyYW1ldGVycyAmYSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKQogICAgIHJl
dHVybiBhLnRpZSgpICE9IGIudGllKCk7CiB9CiAKK2NvbnN0IGNoYXIgKkdldFJlbmRlcmVyTmFt
ZShFR0xpbnQgcmVuZGVyZXIpCit7CisgICAgc3dpdGNoIChyZW5kZXJlcikKKyAgICB7CisgICAg
ICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKKyAgICAgICAg
ICAgIHJldHVybiAiRGVmYXVsdCI7CisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfRDNEOV9BTkdMRToKKyAgICAgICAgICAgIHJldHVybiAiRDNEOSI7CisgICAgICAgIGNhc2Ug
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4g
IkQzRDExIjsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9NRVRBTF9BTkdM
RToKKyAgICAgICAgICAgIHJldHVybiAiTWV0YWwiOworICAgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX05VTExfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gIk51bGwiOworICAg
ICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRToKKyAgICAgICAg
ICAgIHJldHVybiAiT3BlbkdMIjsKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xFU19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiAiT3BlbkdMRVMiOworICAgICAg
ICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX1ZVTEtBTl9BTkdMRToKKyAgICAgICAgICAg
IHJldHVybiAiVnVsa2FuIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAi
VW5kZWZpbmVkIjsKKyAgICB9Cit9CisKIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0gJnN0cmVhbSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwcCkKIHsKICAgICBzdHJl
YW0gPDwgIkVTIiA8PCBwcC5tYWpvclZlcnNpb24gPDwgIl8iOwpAQCAtNzYsMzkgKzEwNiw4IEBA
IHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgUGxh
dGZvcm1QYXJhbWV0ZXJzICZwcCkKICAgICBzd2l0Y2ggKHBwLmRyaXZlcikKICAgICB7CiAgICAg
ICAgIGNhc2UgR0xFU0RyaXZlclR5cGU6OkFuZ2xlRUdMOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHBwLmVnbFBhcmFtZXRlcnMucmVuZGVyZXIpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgot
ICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIkRlZmF1bHQiOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDlfQU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiRDNEOSI7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfRDNEMTFfQU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAi
RDNEMTEiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX01FVEFMX0FOR0xFOgotICAgICAgICAgICAgICAgICAg
ICBzdHJlYW0gPDwgIk1ldGFsIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxMX0FOR0xFOgotICAgICAg
ICAgICAgICAgICAgICBzdHJlYW0gPDwgIk51bGwiOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9B
TkdMRToKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJPcGVuR0wiOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTEVTX0FOR0xFOgotICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIk9w
ZW5HTEVTIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEU6Ci0gICAgICAgICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiVnVsa2FuIjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJVbmRl
ZmluZWQiOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHN0cmVhbSA8PCBHZXRSZW5kZXJlck5hbWUocHAuZWdsUGFyYW1ldGVycy5yZW5kZXJl
cik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIEdMRVNEcml2
ZXJUeXBlOjpTeXN0ZW1XR0w6CiAgICAgICAgICAgICBzdHJlYW0gPDwgIldHTCI7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE4NywyMiArMTg2LDIyIEBAIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwcCkKICAg
ICAgICAgc3RyZWFtIDw8ICJfTm9WaXJ0dWFsIjsKICAgICB9CiAKLSAgICBpZiAocHAuZWdsUGFy
YW1ldGVycy5jb21tYW5kR3JhcGhGZWF0dXJlID09IEVHTF9GQUxTRSkKKyAgICBpZiAocHAuZWds
UGFyYW1ldGVycy50cmFuc2Zvcm1GZWVkYmFja0ZlYXR1cmUgPT0gRUdMX0ZBTFNFKQogICAgIHsK
LSAgICAgICAgc3RyZWFtIDw8ICJfTm9Db21tYW5kR3JhcGgiOworICAgICAgICBzdHJlYW0gPDwg
Il9Ob1RyYW5zZm9ybUZlZWRiYWNrIjsKICAgICB9Ci0gICAgZWxzZSBpZiAocHAuZWdsUGFyYW1l
dGVycy5jb21tYW5kR3JhcGhGZWF0dXJlID09IEVHTF9UUlVFKQorICAgIGVsc2UgaWYgKHBwLmVn
bFBhcmFtZXRlcnMudHJhbnNmb3JtRmVlZGJhY2tGZWF0dXJlID09IEVHTF9UUlVFKQogICAgIHsK
LSAgICAgICAgc3RyZWFtIDw8ICJfQ29tbWFuZEdyYXBoIjsKKyAgICAgICAgc3RyZWFtIDw8ICJf
VHJhbnNmb3JtRmVlZGJhY2siOwogICAgIH0KIAotICAgIGlmIChwcC5lZ2xQYXJhbWV0ZXJzLnRy
YW5zZm9ybUZlZWRiYWNrRmVhdHVyZSA9PSBFR0xfRkFMU0UpCisgICAgaWYgKHBwLmVnbFBhcmFt
ZXRlcnMuYWxsb2NhdGVOb25aZXJvTWVtb3J5RmVhdHVyZSA9PSBFR0xfRkFMU0UpCiAgICAgewot
ICAgICAgICBzdHJlYW0gPDwgIl9Ob1RyYW5zZm9ybUZlZWRiYWNrIjsKKyAgICAgICAgc3RyZWFt
IDw8ICJfTm9BbGxvY2F0ZU5vblplcm9NZW1vcnkiOwogICAgIH0KLSAgICBlbHNlIGlmIChwcC5l
Z2xQYXJhbWV0ZXJzLnRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZSA9PSBFR0xfVFJVRSkKKyAgICBl
bHNlIGlmIChwcC5lZ2xQYXJhbWV0ZXJzLmFsbG9jYXRlTm9uWmVyb01lbW9yeUZlYXR1cmUgPT0g
RUdMX1RSVUUpCiAgICAgewotICAgICAgICBzdHJlYW0gPDwgIl9UcmFuc2Zvcm1GZWVkYmFjayI7
CisgICAgICAgIHN0cmVhbSA8PCAiX0FsbG9jYXRlTm9uWmVyb01lbW9yeSI7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHN0cmVhbTsKQEAgLTQwNCw2ICs0MDMsMTUgQEAgRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzIE9QRU5HTF9PUl9HTEVTKCkKICNlbmRpZgogfQogCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
T1BFTkdMX09SX0dMRVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpCit7CisjaWYgZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQorICAgIHJldHVybiBPUEVOR0xFUyhtYWpvciwgbWlu
b3IpOworI2Vsc2UKKyAgICByZXR1cm4gT1BFTkdMKG1ham9yLCBtaW5vcik7CisjZW5kaWYKK30K
KwogRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTF9PUl9HTEVTX05VTEwoKQogewogI2lmIGRl
ZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25m
aWdzLmgKaW5kZXggMTgxYTM1Zjc0YjE2YzZiNmJkOTkxYWJjNmM0MGZjZWVhNWQxMmM3NS4uNWY3
NzEzODk2N2IxMTQwMWE4ODY2MDgzZWY0OTJiMTUxMGEzYTcyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5n
bGVfdGVzdF9jb25maWdzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IFBsYXRmb3JtUGFyYW1l
dGVycwogCiAgICAgRUdMaW50IGdldFJlbmRlcmVyKCkgY29uc3Q7CiAgICAgRUdMaW50IGdldERl
dmljZVR5cGUoKSBjb25zdDsKKyAgICBib29sIGlzU3dpZnRzaGFkZXIoKSBjb25zdDsKIAogICAg
IHZvaWQgaW5pdERlZmF1bHRQYXJhbWV0ZXJzKCk7CiAKQEAgLTU5LDYgKzYwLDggQEAgc3RydWN0
IFBsYXRmb3JtUGFyYW1ldGVycwogICAgIEVHTGludCBtaW5vclZlcnNpb247CiB9OwogCitjb25z
dCBjaGFyICpHZXRSZW5kZXJlck5hbWUoRUdMaW50IHJlbmRlcmVyKTsKKwogYm9vbCBvcGVyYXRv
cjwoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMg
JmIpOwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29uc3Qg
UGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9z
dHJlYW0gJnN0cmVhbSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwcCk7CkBAIC0xMDcsNiAr
MTEwLDcgQEAgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTEVTKEVHTGludCBtYWpvciwgRUdM
aW50IG1pbm9yKTsKIEVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xFU19OVUxMKCk7CiAKIEVH
TFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xfT1JfR0xFUygpOworRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzIE9QRU5HTF9PUl9HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKTsKIEVHTFBsYXRm
b3JtUGFyYW1ldGVycyBPUEVOR0xfT1JfR0xFU19OVUxMKCk7CiAKIEVHTFBsYXRmb3JtUGFyYW1l
dGVycyBWVUxLQU4oKTsKQEAgLTIwNywxMyArMjExLDYgQEAgaW5saW5lIFBsYXRmb3JtUGFyYW1l
dGVycyBXaXRoTm9GaXh0dXJlKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW1zKQogICAg
IHJldHVybiB3aXRoTm9GaXh0dXJlOwogfQogCi1pbmxpbmUgUGxhdGZvcm1QYXJhbWV0ZXJzIFdp
dGhOb0NvbW1hbmRHcmFwaChjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtcykKLXsKLSAg
ICBQbGF0Zm9ybVBhcmFtZXRlcnMgd2l0aE5vQ29tbWFuZEdyYXBoICAgICAgICAgICAgICAgID0g
cGFyYW1zOwotICAgIHdpdGhOb0NvbW1hbmRHcmFwaC5lZ2xQYXJhbWV0ZXJzLmNvbW1hbmRHcmFw
aEZlYXR1cmUgPSBFR0xfRkFMU0U7Ci0gICAgcmV0dXJuIHdpdGhOb0NvbW1hbmRHcmFwaDsKLX0K
LQogaW5saW5lIFBsYXRmb3JtUGFyYW1ldGVycyBXaXRoTm9UcmFuc2Zvcm1GZWVkYmFjayhjb25z
dCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtcykKIHsKICAgICBQbGF0Zm9ybVBhcmFtZXRlcnMg
d2l0aE5vVHJhbnNmb3JtRmVlZGJhY2sgICAgICAgICAgICAgICAgICAgICA9IHBhcmFtczsKQEAg
LTIyMSw2ICsyMTgsMTkgQEAgaW5saW5lIFBsYXRmb3JtUGFyYW1ldGVycyBXaXRoTm9UcmFuc2Zv
cm1GZWVkYmFjayhjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmEKICAgICByZXR1cm4gd2l0
aE5vVHJhbnNmb3JtRmVlZGJhY2s7CiB9CiAKK2lubGluZSBQbGF0Zm9ybVBhcmFtZXRlcnMgV2l0
aEFsbG9jYXRlTm9uWmVyb01lbW9yeShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtcykK
K3sKKyAgICBQbGF0Zm9ybVBhcmFtZXRlcnMgYWxsb2NhdGVOb25aZXJvICAgICAgICAgICAgICAg
ICAgICAgICAgID0gcGFyYW1zOworICAgIGFsbG9jYXRlTm9uWmVyby5lZ2xQYXJhbWV0ZXJzLmFs
bG9jYXRlTm9uWmVyb01lbW9yeUZlYXR1cmUgPSBFR0xfVFJVRTsKKyAgICByZXR1cm4gYWxsb2Nh
dGVOb25aZXJvOworfQorCitpbmxpbmUgUGxhdGZvcm1QYXJhbWV0ZXJzIFdpdGhSb2J1c3RuZXNz
KGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW1zKQoreworICAgIFBsYXRmb3JtUGFyYW1l
dGVycyB3aXRoUm9idXN0bmVzcyAgICAgICA9IHBhcmFtczsKKyAgICB3aXRoUm9idXN0bmVzcy5l
Z2xQYXJhbWV0ZXJzLnJvYnVzdG5lc3MgPSBFR0xfVFJVRTsKKyAgICByZXR1cm4gd2l0aFJvYnVz
dG5lc3M7Cit9CiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogI2VuZGlmICAvLyBBTkdMRV9URVNU
X0NPTkZJR1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5jcHAK
aW5kZXggMTY3NmEyZmQxOTk3MGRmZTc0YzIzYTkyNTgzY2ViZjVjNDU4NjhlNy4uYTM5NGQwOGNl
Njk0NWQ1YTVkOTk1YWVmZDBlZWY3YWYyNzhmNjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5n
bGVfdGVzdF9pbnN0YW50aWF0ZS5jcHAKQEAgLTksMTIgKzksMTQgQEAKIAogI2luY2x1ZGUgInRl
c3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgogCisjaW5jbHVkZSA8YXJyYXk+CiAj
aW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8bWFwPgogCiAjaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKICNpbmNsdWRlICJjb21tb24vc3lzdGVt
X3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL3RoaXJkX3BhcnR5L2Jhc2UvYW5nbGViYXNlL25v
X2Rlc3RydWN0b3IuaCIKICNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaCIKICNp
bmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgogI2luY2x1ZGUgInV0aWwv
RUdMV2luZG93LmgiCkBAIC03Niw4ICs3OCw2IEBAIGJvb2wgSXNOYXRpdmVDb25maWdTdXBwb3J0
ZWQoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwYXJhbSwgT1NXaW5kb3cgKm9zV2luZG93CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6Om1hcDxQbGF0Zm9ybVBhcmFtZXRlcnMsIGJvb2w+
IGdQYXJhbUF2YWlsYWJpbGl0eUNhY2hlOwotCiBib29sIElzQW5kcm9pZERldmljZShjb25zdCBz
dGQ6OnN0cmluZyAmZGV2aWNlTmFtZSkKIHsKICAgICBpZiAoIUlzQW5kcm9pZCgpKQpAQCAtMTAy
LDExICsxMDIsMjcgQEAgYm9vbCBIYXNTeXN0ZW1WZW5kb3JJRChWZW5kb3JJRCB2ZW5kb3JJRCkK
ICAgICB9CiAgICAgcmV0dXJuIHN5c3RlbUluZm8tPmdwdXNbc3lzdGVtSW5mby0+YWN0aXZlR1BV
SW5kZXhdLnZlbmRvcklkID09IHZlbmRvcklEOwogfQorCit1c2luZyBQYXJhbUF2YWlsYWJpbGl0
eUNhY2hlID0gc3RkOjptYXA8UGxhdGZvcm1QYXJhbWV0ZXJzLCBib29sPjsKKworUGFyYW1BdmFp
bGFiaWxpdHlDYWNoZSAmR2V0QXZhaWxhYmlsaXR5Q2FjaGUoKQoreworICAgIHN0YXRpYyBhbmds
ZTo6YmFzZTo6Tm9EZXN0cnVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQYXJhbUF2YWlsYWJpbGl0eUNh
Y2hlPj4KKyAgICAgICAgc1BhcmFtQXZhaWxhYmlsaXR5Q2FjaGUobmV3IFBhcmFtQXZhaWxhYmls
aXR5Q2FjaGUoKSk7CisgICAgcmV0dXJuICoqc1BhcmFtQXZhaWxhYmlsaXR5Q2FjaGU7Cit9CisK
K2NvbnN0ZXhwciBzaXplX3Qga01heENvbmZpZ05hbWVMZW4gPSAxMDA7CitzdGQ6OmFycmF5PGNo
YXIsIGtNYXhDb25maWdOYW1lTGVuPiBnU2VsZWN0ZWRDb25maWc7CiB9ICAvLyBuYW1lc3BhY2UK
IAotc3RkOjpzdHJpbmcgZ1NlbGVjdGVkQ29uZmlnOwogYm9vbCBnU2VwYXJhdGVQcm9jZXNzUGVy
Q29uZmlnID0gZmFsc2U7CiAKK2Jvb2wgSXNDb25maWdTZWxlY3RlZCgpCit7CisgICAgcmV0dXJu
IGdTZWxlY3RlZENvbmZpZ1swXSAhPSAwOworfQorCiBTeXN0ZW1JbmZvICpHZXRUZXN0U3lzdGVt
SW5mbygpCiB7CiAgICAgc3RhdGljIFN5c3RlbUluZm8gKnNTeXN0ZW1JbmZvID0gbnVsbHB0cjsK
QEAgLTEzMCw3ICsxNDYsNyBAQCBTeXN0ZW1JbmZvICpHZXRUZXN0U3lzdGVtSW5mbygpCiAgICAg
ICAgIC8vIFByaW50IGNvbXBsZXRlIHN5c3RlbSBpbmZvIHdoZW4gYXZhaWxhYmxlLgogICAgICAg
ICAvLyBTZWVtcyB0byB0cmlwIHVwIEFuZHJvaWQgdGVzdCBleHBlY3RhdGlvbiBwYXJzaW5nLgog
ICAgICAgICAvLyBBbHNvIGRvbid0IHByaW50IGluZm8gd2hlbiBhIGNvbmZpZyBpcyBzZWxlY3Rl
ZCB0byBwcmV2ZW50IHRlc3Qgc3BhbS4KLSAgICAgICAgaWYgKCFJc0FuZHJvaWQoKSAmJiBnU2Vs
ZWN0ZWRDb25maWcuZW1wdHkoKSkKKyAgICAgICAgaWYgKCFJc0FuZHJvaWQoKSAmJiAhSXNDb25m
aWdTZWxlY3RlZCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBQcmludFN5c3RlbUluZm8oKnNT
eXN0ZW1JbmZvKTsKICAgICAgICAgfQpAQCAtNDMzLDYgKzQ0OSwyMSBAQCBib29sIElzQ29uZmln
V2hpdGVsaXN0ZWQoY29uc3QgU3lzdGVtSW5mbyAmc3lzdGVtSW5mbywgY29uc3QgUGxhdGZvcm1Q
YXJhbWV0ZXJzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorICAgICAgICAvLyBUT0RPOiBo
dHRwOi8vY3JidWcuY29tL3N3aWZ0c2hhZGVyLzE0NQorICAgICAgICAvLyBTd2lmdHNoYWRlciBk
b2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbGwgdGhlIHJvYnVzdG5lc3MgZmVhdHVyZXMKKyAgICAg
ICAgLy8gd2UgbmVlZCBmb3IgQU5HTEUuIEluIHBhcnRpY3VsYXIsIGl0IGlzIHVuYWJsZSB0byBk
ZXRlY3QgYW5kIHJlY292ZXIKKyAgICAgICAgLy8gZnJvbSBpbmZpbml0ZWx5IGxvb3Bpbmcgc2hh
ZGVycy4gVGhhdCBidWcgaXMgdGhlIHRyYWNrZXIgZm9yIGZpeGluZworICAgICAgICAvLyB0aGF0
IGFuZCB3aGVuIHJlc29sdmVkIHdlIGNhbiByZW1vdmUgdGhlIGZvbGxvd2luZyBjb2RlLgorICAg
ICAgICAvLyBUaGlzIHRlc3Qgd2lsbCBkaXNhYmxlIHRlc3RzIG1hcmtlZCB3aXRoIHRoZSBjb25m
aWcgV2l0aFJvYnVzdG5lc3MKKyAgICAgICAgLy8gd2hlbiBydW4gd2l0aCB0aGUgc3dpZnRzaGFk
ZXIgVnVsa2FuIGRyaXZlciBhbmQgb24gQW5kcm9pZC4KKyAgICAgICAgRGV2aWNlSUQgZGV2aWNl
SUQgPQorICAgICAgICAgICAgc3lzdGVtSW5mby5ncHVzLmVtcHR5KCkgPyAwIDogc3lzdGVtSW5m
by5ncHVzW3N5c3RlbUluZm8uYWN0aXZlR1BVSW5kZXhdLmRldmljZUlkOworICAgICAgICBpZiAo
KHBhcmFtLmlzU3dpZnRzaGFkZXIoKSB8fCAoSXNHb29nbGUodmVuZG9ySUQpICYmIGRldmljZUlE
ID09IGtEZXZpY2VJRF9Td2lmdHNoYWRlcikpICYmCisgICAgICAgICAgICBwYXJhbS5lZ2xQYXJh
bWV0ZXJzLnJvYnVzdG5lc3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCiAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzdXBwb3J0IHRoZSBHTEVTIGFu
ZCBWdWxrYW4gYmFjay1lbmRzIG9uIEFuZHJvaWQuCiAgICAgICAgIHN3aXRjaCAocGFyYW0uZ2V0
UmVuZGVyZXIoKSkKICAgICAgICAgewpAQCAtNDgxLDYgKzUxMiwxNSBAQCBib29sIElzQ29uZmln
U3VwcG9ydGVkKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW0pCiAKIGJvb2wgSXNQbGF0
Zm9ybUF2YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtKQogeworICAgIC8v
IERpc2FibGUgIm51bGwiIGRldmljZSB3aGVuIG5vdCBvbiBBTkdMRSBvciBpbiBEM0Q5LgorICAg
IGlmIChwYXJhbS5nZXREZXZpY2VUeXBlKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX05VTExfQU5HTEUpCisgICAgeworICAgICAgICBpZiAocGFyYW0uZHJpdmVyICE9IEdMRVNE
cml2ZXJUeXBlOjpBbmdsZUVHTCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKHBhcmFtLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9B
TkdMRSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHBh
cmFtLmdldFJlbmRlcmVyKCkpCiAgICAgewogICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0RFRkFVTFRfQU5HTEU6CkBAIC01MTEsMTUgKzU1MSw2IEBAIGJvb2wgSXNQbGF0Zm9y
bUF2YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtKQogICAgICAgICBjYXNl
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX1ZVTEtBTl9BTkdMRToKICNpZiAhZGVmaW5lZChBTkdM
RV9FTkFCTEVfVlVMS0FOKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VsaWYgZGVmaW5l
ZChBTkdMRV9JU18zMl9CSVRfQ1BVKQotICAgICAgICAgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNv
bS80MDkyCi0gICAgICAgICAgICAvLyAgQ3VycmVudGx5IGhpdHRpbmcgY3Jhc2hlcyBpbiBTd1Mg
dy8gMzItYml0IFdpbmRvd3Mgc28gc2tpcHBpbmcgZm9yIG5vdwotICAgICAgICAgICAgaWYgKElz
V2luZG93cygpICYmIChwYXJhbS5lZ2xQYXJhbWV0ZXJzLmRldmljZVR5cGUgPT0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1NX
SUZUU0hBREVSX0FOR0xFKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAg
ICAgICBicmVhazsKICNlbmRpZgpAQCAtNTQ0LDE4ICs1NzUsMTggQEAgYm9vbCBJc1BsYXRmb3Jt
QXZhaWxhYmxlKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW0pCiAKICAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwogCi0gICAgYXV0byBpdGVyID0gZ1BhcmFtQXZhaWxhYmlsaXR5Q2FjaGUu
ZmluZChwYXJhbSk7Ci0gICAgaWYgKGl0ZXIgIT0gZ1BhcmFtQXZhaWxhYmlsaXR5Q2FjaGUuZW5k
KCkpCisgICAgYXV0byBpdGVyID0gR2V0QXZhaWxhYmlsaXR5Q2FjaGUoKS5maW5kKHBhcmFtKTsK
KyAgICBpZiAoaXRlciAhPSBHZXRBdmFpbGFiaWxpdHlDYWNoZSgpLmVuZCgpKQogICAgIHsKICAg
ICAgICAgcmVzdWx0ID0gaXRlci0+c2Vjb25kOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBpZiAoIWdTZWxlY3RlZENvbmZpZy5lbXB0eSgpKQorICAgICAgICBpZiAoSXNDb25maWdT
ZWxlY3RlZCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJz
dHI7CiAgICAgICAgICAgICBzdHJzdHIgPDwgcGFyYW07Ci0gICAgICAgICAgICBpZiAoc3Ryc3Ry
LnN0cigpID09IGdTZWxlY3RlZENvbmZpZykKKyAgICAgICAgICAgIGlmIChzdHJzdHIuc3RyKCkg
PT0gc3RkOjpzdHJpbmcoZ1NlbGVjdGVkQ29uZmlnLmRhdGEoKSkpCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTU3NCwxMCAr
NjA1LDEwIEBAIGJvb2wgSXNQbGF0Zm9ybUF2YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRl
cnMgJnBhcmFtKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZ1BhcmFtQXZh
aWxhYmlsaXR5Q2FjaGVbcGFyYW1dID0gcmVzdWx0OworICAgICAgICBHZXRBdmFpbGFiaWxpdHlD
YWNoZSgpW3BhcmFtXSA9IHJlc3VsdDsKIAogICAgICAgICAvLyBFbmFibGUgdGhpcyB1bmNvbmRp
dGlvbmFsbHkgdG8gcHJpbnQgYXZhaWxhYmxlIHBsYXRmb3Jtcy4KLSAgICAgICAgaWYgKCFnU2Vs
ZWN0ZWRDb25maWcuZW1wdHkoKSkKKyAgICAgICAgaWYgKElzQ29uZmlnU2VsZWN0ZWQoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHsKQEAgLTYwMyw3
ICs2MzQsNyBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0QXZhaWxhYmxlVGVzdFBsYXRm
b3JtTmFtZXMoKQogewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBwbGF0Zm9ybU5hbWVz
OwogCi0gICAgZm9yIChjb25zdCBhdXRvICZpdGVyIDogZ1BhcmFtQXZhaWxhYmlsaXR5Q2FjaGUp
CisgICAgZm9yIChjb25zdCBhdXRvICZpdGVyIDogR2V0QXZhaWxhYmlsaXR5Q2FjaGUoKSkKICAg
ICB7CiAgICAgICAgIGlmIChpdGVyLnNlY29uZCkKICAgICAgICAgewpAQCAtNjE4LDQgKzY0OSwx
MCBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0QXZhaWxhYmxlVGVzdFBsYXRmb3JtTmFt
ZXMoKQogCiAgICAgcmV0dXJuIHBsYXRmb3JtTmFtZXM7CiB9CisKK3ZvaWQgU2V0U2VsZWN0ZWRD
b25maWcoY29uc3QgY2hhciAqc2VsZWN0ZWRDb25maWcpCit7CisgICAgZ1NlbGVjdGVkQ29uZmln
LmZpbGwoMCk7CisgICAgc3RybmNweShnU2VsZWN0ZWRDb25maWcuZGF0YSgpLCBzZWxlY3RlZENv
bmZpZywga01heENvbmZpZ05hbWVMZW4gLSAxKTsKK30KIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMv
YW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oCmluZGV4IDNkOGU4NjY2ODVl
ZTMyMzJmMTJmYzE0NDY2N2E3Y2ZlMjNlMWIzMTMuLmJlNzA5ZTEyNmYwMDFhNTMxYmU5YzEzOTVm
NTNlZTk1NWM1YTJjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRl
LmgKQEAgLTExMyw2ICsxMTMsMTAgQEAgc3RydWN0IENvbWJpbmVkUHJpbnRUb1N0cmluZ1BhcmFt
TmFtZQogICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJVEVfUCgsIHRlc3ROYW1lLCBBTkdMRV9JTlNU
QU5USUFURV9URVNUX1BMQVRGT1JNUyh0ZXN0TmFtZSksIFwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKQogCisjZGVmaW5lIEFO
R0xFX0lOU1RBTlRJQVRFX1RFU1RfQVJSQVkodGVzdE5hbWUsIHZhbHVlc2luKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIElOU1RBTlRJQVRFX1RFU1RfU1VJ
VEVfUCgsIHRlc3ROYW1lLCB0ZXN0aW5nOjpWYWx1ZXNJbig6OmFuZ2xlOjpGaWx0ZXJUZXN0UGFy
YW1zKHZhbHVlc2luKSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6
UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKQorCiAjZGVmaW5lIEFOR0xFX0FMTF9URVNUX1BMQVRG
T1JNU19FUzEgXAogICAgIEVTMV9EM0QxMSgpLCBFUzFfT1BFTkdMKCksIEVTMV9PUEVOR0xFUygp
LCBFUzFfVlVMS0FOKCksIEVTMV9WVUxLQU5fU1dJRlRTSEFERVIoKQogCkBAIC0xNDYsMTIgKzE1
MCwyMiBAQCBzdHJ1Y3QgQ29tYmluZWRQcmludFRvU3RyaW5nUGFyYW1OYW1lCiAgICAgSU5TVEFO
VElBVEVfVEVTVF9TVUlURV9QKCwgdGVzdE5hbWUsIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfUExB
VEZPUk1TKHRlc3ROYW1lKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5n
OjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpCiAKKyNkZWZpbmUgQU5HTEVfSU5TVEFOVElBVEVf
VEVTVF9FUzNfQU5EKHRlc3ROYW1lLCBleHRyYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyB0ZXN0TmFtZSMjcGFyYW1zW10g
PSB7QU5HTEVfQUxMX1RFU1RfUExBVEZPUk1TX0VTMywgZXh0cmF9OyBcCisgICAgSU5TVEFOVElB
VEVfVEVTVF9TVUlURV9QKCwgdGVzdE5hbWUsIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfUExBVEZP
Uk1TKHRlc3ROYW1lKSwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGlu
Zzo6UHJpbnRUb1N0cmluZ1BhcmFtTmFtZSgpKQorCiAvLyBJbnN0YW50aWF0ZSB0aGUgdGVzdCBv
bmNlIGZvciBlYWNoIEdMRVMzMSBwbGF0Zm9ybQogI2RlZmluZSBBTkdMRV9JTlNUQU5USUFURV9U
RVNUX0VTMzEodGVzdE5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgdGVzdE5hbWUjI3BhcmFtc1tdID0ge0FO
R0xFX0FMTF9URVNUX1BMQVRGT1JNU19FUzMxfTsgICBcCiAgICAgSU5TVEFOVElBVEVfVEVTVF9T
VUlURV9QKCwgdGVzdE5hbWUsIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1RfUExBVEZPUk1TKHRlc3RO
YW1lKSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQcmludFRvU3Ry
aW5nUGFyYW1OYW1lKCkpCiAKKyNkZWZpbmUgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9FUzMxX0FO
RCh0ZXN0TmFtZSwgZXh0cmEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgdGVzdE5hbWUjI3BhcmFtc1tdID0ge0FOR0xFX0FM
TF9URVNUX1BMQVRGT1JNU19FUzMxLCBleHRyYX07IFwKKyAgICBJTlNUQU5USUFURV9URVNUX1NV
SVRFX1AoLCB0ZXN0TmFtZSwgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9QTEFURk9STVModGVzdE5h
bWUpLCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRU
b1N0cmluZ1BhcmFtTmFtZSgpKQorCiAvLyBNdWx0aXBsZSBFUyBWZXJzaW9uIG1hY3JvcwogI2Rl
ZmluZSBBTkdMRV9JTlNUQU5USUFURV9URVNUX0VTMl9BTkRfRVMzKHRlc3ROYW1lKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMg
dGVzdE5hbWUjI3BhcmFtc1tdID0ge0FOR0xFX0FMTF9URVNUX1BMQVRGT1JNU19FUzIsICAgICBc
CkBAIC0xODUsMTMgKzE5OSwxMCBAQCBzdHJ1Y3QgQ29tYmluZWRQcmludFRvU3RyaW5nUGFyYW1O
YW1lCiAgICAgSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKCwgdGVzdE5hbWUsIEFOR0xFX0lOU1RB
TlRJQVRFX1RFU1RfUExBVEZPUk1TKHRlc3ROYW1lKSwgXAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpQcmludFRvU3RyaW5nUGFyYW1OYW1lKCkpCiAKLS8vIEluc3RhbnRp
YXRlIHRoZSB0ZXN0IGZvciBhIGNvbWJpbmF0aW9uIG9mIE4gcGFyYW1ldGVycyBhbmQgdGhlIGVu
dW1lcmF0aW9uIG9mIHBsYXRmb3JtcyBpbiB0aGUKLS8vIGV4dHJhIGFyZ3MsIHNpbWlsYXIgdG8g
QU5HTEVfSU5TVEFOVElBVEVfVEVTVC4gIFRoZSBtYWNyb3MgYXJlIGRlZmluZWQgb25seSBmb3Ig
dGhlIE5zIGN1cnJlbnRseQotLy8gaW4gdXNlLCBhbmQgY2FuIGJlIGV4cGFuZGVkIGFzIG5lY2Vz
c2FyeS4KLSNkZWZpbmUgQU5HTEVfSU5TVEFOVElBVEVfVEVTVF9DT01CSU5FXzEodGVzdE5hbWUs
IHByaW50LCBjb21iaW5lMSwgZmlyc3QsIC4uLikgXAotICAgIGNvbnN0IGRlY2x0eXBlKGZpcnN0
KSB0ZXN0TmFtZSMjcGFyYW1zW10gPSB7Zmlyc3QsICMjX19WQV9BUkdTX199OyAgICAgICAgICBc
Ci0gICAgSU5TVEFOVElBVEVfVEVTVF9TVUlURV9QKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgLCB0ZXN0TmFtZSwgdGVzdGluZzo6
Q29tYmluZShBTkdMRV9JTlNUQU5USUFURV9URVNUX1BMQVRGT1JNUyh0ZXN0TmFtZSksIGNvbWJp
bmUxKSwgcHJpbnQpCisvLyBJbnN0YW50aWF0ZSB0aGUgdGVzdCBmb3IgYSBjb21iaW5hdGlvbiBv
ZiBOIHBhcmFtZXRlcnMgYW5kIHRoZQorLy8gZW51bWVyYXRpb24gb2YgcGxhdGZvcm1zIGluIHRo
ZSBleHRyYSBhcmdzLCBzaW1pbGFyIHRvCisvLyBBTkdMRV9JTlNUQU5USUFURV9URVNULiAgVGhl
IG1hY3JvcyBhcmUgZGVmaW5lZCBvbmx5IGZvciB0aGUgTnMKKy8vIGN1cnJlbnRseSBpbiB1c2Us
IGFuZCBjYW4gYmUgZXhwYW5kZWQgYXMgbmVjZXNzYXJ5LgogI2RlZmluZSBBTkdMRV9JTlNUQU5U
SUFURV9URVNUX0NPTUJJTkVfNCh0ZXN0TmFtZSwgcHJpbnQsIGNvbWJpbmUxLCBjb21iaW5lMiwg
Y29tYmluZTMsIGNvbWJpbmU0LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpcnN0LCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBjb25zdCBkZWNsdHlwZShmaXJzdCkgdGVzdE5hbWUjI3BhcmFtc1tdID0g
e2ZpcnN0LCAjI19fVkFfQVJHU19ffTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAt
MjEwLDIxICsyMjEsNzggQEAgc3RydWN0IENvbWJpbmVkUHJpbnRUb1N0cmluZ1BhcmFtTmFtZQog
Ly8gQ2hlY2tzIGlmIGEgY29uZmlnIGlzIGV4cGVjdGVkIHRvIGJlIHN1cHBvcnRlZCBieSBjaGVj
a2luZyBhIHN5c3RlbS1iYXNlZCB3aGl0ZSBsaXN0LgogYm9vbCBJc0NvbmZpZ1doaXRlbGlzdGVk
KGNvbnN0IFN5c3RlbUluZm8gJnN5c3RlbUluZm8sIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAm
cGFyYW0pOwogCi0vLyBEZXRlcm1pbmVzIGlmIGEgY29uZmlnIGlzIHN1cHBvcnRlZCBieSB0cnlp
bmcgdG8gaW5pdGlhbGl6ZSBpdC4gRG9lcyBub3QgcmVxdWlyZSBTeXN0ZW1JbmZvLgorLy8gRGV0
ZXJtaW5lcyBpZiBhIGNvbmZpZyBpcyBzdXBwb3J0ZWQgYnkgdHJ5aW5nIHRvIGluaXRpYWxpemUg
aXQuIERvZXMKKy8vIG5vdCByZXF1aXJlIFN5c3RlbUluZm8uCiBib29sIElzQ29uZmlnU3VwcG9y
dGVkKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFyYW0pOwogCi0vLyBSZXR1cm5zIHNoYXJl
ZCB0ZXN0IHN5c3RlbSBpbmZvcm1hdGlvbi4gQ2FuIGJlIHVzZWQgZ2xvYmFsbHkgaW4gdGhlIHRl
c3RzLgorLy8gUmV0dXJucyBzaGFyZWQgdGVzdCBzeXN0ZW0gaW5mb3JtYXRpb24uIENhbiBiZSB1
c2VkIGdsb2JhbGx5IGluIHRoZQorLy8gdGVzdHMuCiBTeXN0ZW1JbmZvICpHZXRUZXN0U3lzdGVt
SW5mbygpOwogCi0vLyBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgZW5hYmxlZCB0ZXN0IHBsYXRmb3Jt
IG5hbWVzLiBGb3IgdXNlIGluIGNvbmZpZ3VyYXRpb24gZW51bWVyYXRpb24uCisvLyBSZXR1cm5z
IGEgbGlzdCBvZiBhbGwgZW5hYmxlZCB0ZXN0IHBsYXRmb3JtIG5hbWVzLiBGb3IgdXNlIGluCisv
LyBjb25maWd1cmF0aW9uIGVudW1lcmF0aW9uLgogc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IEdl
dEF2YWlsYWJsZVRlc3RQbGF0Zm9ybU5hbWVzKCk7CiAKIC8vIEFjdGl2ZSBjb25maWcgKGUuZy4g
RVMyX1Z1bGthbikuCi1leHRlcm4gc3RkOjpzdHJpbmcgZ1NlbGVjdGVkQ29uZmlnOwordm9pZCBT
ZXRTZWxlY3RlZENvbmZpZyhjb25zdCBjaGFyICpzZWxlY3RlZENvbmZpZyk7Citib29sIElzQ29u
ZmlnU2VsZWN0ZWQoKTsKIAotLy8gVXNlIGEgc2VwYXJhdGUgaXNvbGF0ZWQgcHJvY2VzcyBwZXIg
dGVzdCBjb25maWcuIFRoaXMgd29ya3MgYXJvdW5kIGRyaXZlciBmbGFraW5lc3Mgd2hlbiB1c2lu
ZwotLy8gbXVsdGlwbGUgQVBJcy93aW5kb3dzL2V0YyBpbiB0aGUgc2FtZSBwcm9jZXNzLgorLy8g
VXNlIGEgc2VwYXJhdGUgaXNvbGF0ZWQgcHJvY2VzcyBwZXIgdGVzdCBjb25maWcuIFRoaXMgd29y
a3MgYXJvdW5kCisvLyBkcml2ZXIgZmxha2luZXNzIHdoZW4gdXNpbmcgbXVsdGlwbGUgQVBJcy93
aW5kb3dzL2V0YyBpbiB0aGUgc2FtZQorLy8gcHJvY2Vzcy4KIGV4dGVybiBib29sIGdTZXBhcmF0
ZVByb2Nlc3NQZXJDb25maWc7CisKKy8vIEZvciB1c2Ugd2l0aCBBTkdMRV9JTlNUQU5USUFURV9U
RVNUX0FSUkFZCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1zVD4KK3VzaW5nIE1vZGlmaWVyRnVu
YyA9IHN0ZDo6ZnVuY3Rpb248UGFyYW1zVChjb25zdCBQYXJhbXNUICYpPjsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFBhcmFtc1Q+CitzdGQ6OnZlY3RvcjxQYXJhbXNUPiBDb21iaW5lV2l0aEZ1bmNz
KGNvbnN0IHN0ZDo6dmVjdG9yPFBhcmFtc1Q+ICZpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8TW9kaWZpZXJGdW5jPFBhcmFtc1Q+PiAm
bW9kaWZpZXJzKQoreworICAgIHN0ZDo6dmVjdG9yPFBhcmFtc1Q+IG91dDsKKyAgICBmb3IgKGNv
bnN0IFBhcmFtc1QgJnBhcmFtc0luIDogaW4pCisgICAgeworICAgICAgICBmb3IgKE1vZGlmaWVy
RnVuYzxQYXJhbXNUPiBtb2RpZmllciA6IG1vZGlmaWVycykKKyAgICAgICAgeworICAgICAgICAg
ICAgb3V0LnB1c2hfYmFjayhtb2RpZmllcihwYXJhbXNJbikpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVQsIHR5cGVuYW1l
IFJhbmdlVCwgdHlwZW5hbWUgTW9kaWZpZXJUPgorc3RkOjp2ZWN0b3I8UGFyYW1UPiBDb21iaW5l
V2l0aFZhbHVlcyhjb25zdCBzdGQ6OnZlY3RvcjxQYXJhbVQ+ICZpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VUIGJlZ2luLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSYW5nZVQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXJhbVQgY29tYmluZShjb25zdCBQYXJhbVQgJiwgTW9kaWZpZXJUKSkK
K3sKKyAgICBzdGQ6OnZlY3RvcjxQYXJhbVQ+IG91dDsKKyAgICBmb3IgKGNvbnN0IFBhcmFtVCAm
cGFyYW1zSW4gOiBpbikKKyAgICB7CisgICAgICAgIGZvciAoYXV0byBpdGVyID0gYmVnaW47IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dC5wdXNoX2JhY2so
Y29tYmluZShwYXJhbXNJbiwgKml0ZXIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
b3V0OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1ULCB0eXBlbmFtZSBNb2RpZmllclQ+
CitzdGQ6OnZlY3RvcjxQYXJhbVQ+IENvbWJpbmVXaXRoVmFsdWVzKGNvbnN0IHN0ZDo6dmVjdG9y
PFBhcmFtVD4gJmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8TW9kaWZpZXJUPiAmbW9kaWZpZXJzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVQgY29tYmluZShjb25zdCBQYXJhbVQg
JiwgTW9kaWZpZXJUKSkKK3sKKyAgICByZXR1cm4gQ29tYmluZVdpdGhWYWx1ZXMoaW4sIG1vZGlm
aWVycy5iZWdpbigpLCBtb2RpZmllcnMuZW5kKCksIGNvbWJpbmUpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgUGFyYW1ULCB0eXBlbmFtZSBNb2RpZmllcnNULCB0eXBlbmFtZSBNb2RpZmllclQ+
CitzdGQ6OnZlY3RvcjxQYXJhbVQ+IENvbWJpbmVXaXRoVmFsdWVzKGNvbnN0IHN0ZDo6dmVjdG9y
PFBhcmFtVD4gJmluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBNb2RpZmllcnNUICZtb2RpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhcmFtVCBjb21iaW5lKGNvbnN0IFBhcmFtVCAmLCBNb2RpZmllclQpKQoreworICAg
IHJldHVybiBDb21iaW5lV2l0aFZhbHVlcyhpbiwgc3RkOjpiZWdpbihtb2RpZmllcnMpLCBzdGQ6
OmVuZChtb2RpZmllcnMpLCBjb21iaW5lKTsKK30KIH0gIC8vIG5hbWVzcGFjZSBhbmdsZQogCiAj
ZGVmaW5lIEFOR0xFX1NLSVBfVEVTVF9JRihDT05EKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGVzdF91dGlscy9hbmdsZV90ZXN0X3BsYXRmb3JtLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uY3BwCmluZGV4IDg1
NTdhZTg4YjYwOTA3N2ZhNzkzZjg1MGE0YTU2NDZiMGNmODE4MDkuLjFjNDIxMWQxMjViZGY4YzBk
Y2ExZjhkMTUzZjUzOTJmZGFhZTdjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxhdGZvcm0uY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxh
dGZvcm0uY3BwCkBAIC03LDE0ICs3LDEzIEBACiAKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0u
aCIKICNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaCIKLSNpbmNsdWRlICJ1dGls
L0VHTFdpbmRvdy5oIgotI2luY2x1ZGUgInV0aWwvT1NXaW5kb3cuaCIKLSNpbmNsdWRlICJ1dGls
L3Rlc3RfdXRpbHMuaCIKIAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKICMg
ICAgaW5jbHVkZSA8VmVyc2lvbkhlbHBlcnMuaD4KICNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9Q
TEFURk9STV9XSU5ET1dTKQogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKIGJvb2wgSXNBZHJl
bm8oKQogewogICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfcGxh
dGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfcGxhdGZvcm0uaAppbmRleCBkMjljNzVmYTIzMjcwZjhkZTYyOTE2M2I2ZDY0MzY4
ZGIyNDFhZDUxLi5mNzRkYWQyMzViYThiZWZiZDU1NTVjMjhmN2UyZGU3ZTk1NTQyNDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmds
ZV90ZXN0X3BsYXRmb3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9wbGF0Zm9ybS5oCkBAIC05LDcgKzksNyBAQAogCiAjaW5j
bHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSAidXRpbC9FR0xXaW5kb3cuaCIKKyNpbmNsdWRlICJ1
dGlsL3V0aWxfZ2wuaCIKIAogLy8gRHJpdmVyIHZlbmRvcnMKIGJvb2wgSXNBZHJlbm8oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL3J1
bm5lci9UZXN0U3VpdGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rl
c3RfdXRpbHMvcnVubmVyL1Rlc3RTdWl0ZS5jcHAKaW5kZXggMTY1ZGQ2MjBmZjgzNDk2OTNjNjlm
YWRhMjRlYzcyNDg1Mjg0YzYzNy4uMGFmYTRkZmE1NjViMjViOWNmM2U5NmE2ODAwMGMzOTdmYzYx
MDYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3Rf
dXRpbHMvcnVubmVyL1Rlc3RTdWl0ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3Rlc3RfdXRpbHMvcnVubmVyL1Rlc3RTdWl0ZS5jcHAKQEAgLTI0LDcgKzI0LDcg
QEAKIAogLy8gV2UgZGlyZWN0bHkgY2FsbCBpbnRvIGEgZnVuY3Rpb24gdG8gcmVnaXN0ZXIgdGhl
IHBhcmFtZXRlcml6ZWQgdGVzdHMuIFRoaXMgc2F2ZXMgc3Bpbm5pbmcgdXAKIC8vIGEgc3VicHJv
Y2VzcyB3aXRoIGEgbmV3IGd0ZXN0IGZpbHRlci4KLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L3NyYy9nb29nbGV0ZXN0L3NyYy9ndGVzdC1pbnRlcm5hbC1pbmwuaCIKKyNpbmNsdWRl
IDxndGVzdC8uLi8uLi9zcmMvZ3Rlc3QtaW50ZXJuYWwtaW5sLmg+CiAKIG5hbWVzcGFjZSBqcyA9
IHJhcGlkanNvbjsKIApAQCAtMzIsMTEgKzMyLDIwIEBAIG5hbWVzcGFjZSBhbmdsZQogewogbmFt
ZXNwYWNlCiB7Ci1jb25zdGV4cHIgY2hhciBrVGVzdFRpbWVvdXRBcmdbXSAgPSAiLS10ZXN0LXRp
bWVvdXQ9IjsKLWNvbnN0ZXhwciBjaGFyIGtGaWx0ZXJGaWxlQXJnW10gICA9ICItLWZpbHRlci1m
aWxlPSI7Ci1jb25zdGV4cHIgY2hhciBrUmVzdWx0RmlsZUFyZ1tdICAgPSAiLS1yZXN1bHRzLWZp
bGU9IjsKLWNvbnN0ZXhwciBpbnQga0RlZmF1bHRUZXN0VGltZW91dCA9IDEwOwotY29uc3RleHBy
IGludCBrRGVmYXVsdEJhdGNoU2l6ZSAgID0gMTAwMDsKK2NvbnN0ZXhwciBjaGFyIGtUZXN0VGlt
ZW91dEFyZ1tdID0gIi0tdGVzdC10aW1lb3V0PSI7Citjb25zdGV4cHIgY2hhciBrRmlsdGVyRmls
ZUFyZ1tdICA9ICItLWZpbHRlci1maWxlPSI7Citjb25zdGV4cHIgY2hhciBrUmVzdWx0RmlsZUFy
Z1tdICA9ICItLXJlc3VsdHMtZmlsZT0iOworI2lmIGRlZmluZWQoTkRFQlVHKQorY29uc3RleHBy
IGludCBrRGVmYXVsdFRlc3RUaW1lb3V0ID0gMjA7CisjZWxzZQorY29uc3RleHByIGludCBrRGVm
YXVsdFRlc3RUaW1lb3V0ICA9IDYwOworI2VuZGlmCisjaWYgZGVmaW5lZChOREVCVUcpCitjb25z
dGV4cHIgaW50IGtEZWZhdWx0QmF0Y2hUaW1lb3V0ID0gMjQwOworI2Vsc2UKK2NvbnN0ZXhwciBp
bnQga0RlZmF1bHRCYXRjaFRpbWVvdXQgPSA2MDA7CisjZW5kaWYKK2NvbnN0ZXhwciBpbnQga0Rl
ZmF1bHRCYXRjaFNpemUgPSAxMDAwOwogCiBjb25zdCBjaGFyICpQYXJzZUZsYWdWYWx1ZShjb25z
dCBjaGFyICpmbGFnLCBjb25zdCBjaGFyICphcmd1bWVudCkKIHsKQEAgLTY0NSw3ICs2NTQsNyBA
QCBUZXN0U3VpdGU6OlRlc3RTdWl0ZShpbnQgKmFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgbVRv
dGFsUmVzdWx0Q291bnQoMCksCiAgICAgICBtTWF4UHJvY2Vzc2VzKE51bWJlck9mUHJvY2Vzc29y
cygpKSwKICAgICAgIG1UZXN0VGltZW91dChrRGVmYXVsdFRlc3RUaW1lb3V0KSwKLSAgICAgIG1C
YXRjaFRpbWVvdXQoNjApCisgICAgICBtQmF0Y2hUaW1lb3V0KGtEZWZhdWx0QmF0Y2hUaW1lb3V0
KQogewogICAgIGJvb2wgaGFzRmlsdGVyICAgICAgICAgICAgPSBmYWxzZTsKICAgICBib29sIGFs
c29SdW5EaXNhYmxlZFRlc3RzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvLmZpbmQtaWdub3JlIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5Ly5maW5kLWlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIy
ZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvdm9say9CVUlMRC5nbiBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS92b2xrL0JVSUxELmduCmluZGV4IDY1YTBhZmE2ZWMy
ODhhOGFhOGM4NTBiOWU2NWUzMWYxYWYwZjgxZjQuLjM1OGNkZWY3NDBiYTIyMWI2NjU0ZWI0ZDJl
YTI2MGI4ZTE2MDU1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS92b2xrL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90aGlyZF9wYXJ0eS92b2xrL0JVSUxELmduCkBAIC02LDI4ICs2LDExIEBAIGNvbmZpZygidm9s
a19jb25maWciKSB7CiAgIGluY2x1ZGVfZGlycyA9IFsgIi4iIF0KIH0KIAotIyBUT0RPKGFuZ2xl
YnVnLmNvbS80MzUxKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgY2xhbmcgcm9sbHMuCi1jb25maWcoInZv
bGtfaW50ZXJuYWxfY29uZmlnIikgewotICBpZiAoaXNfY2xhbmcpIHsKLSAgICBjZmxhZ3MgPSBb
Ci0gICAgICAiLVhjbGFuZyIsCi0gICAgICAiLW1sbHZtIiwKLSAgICAgICItWGNsYW5nIiwKLSAg
ICAgICItLWVuYWJsZS1nbG9iYWwtbWVyZ2U9ZmFsc2UiLAotICAgIF0KLSAgfQotfQotCiBzb3Vy
Y2Vfc2V0KCJ2b2xrIikgewogICBzb3VyY2VzID0gWwogICAgICJ2b2xrLmMiLAogICAgICJ2b2xr
LmgiLAogICBdCi0gIHB1YmxpY19jb25maWdzID0gWwotICAgICI6dm9sa19jb25maWciLAotICAg
ICI6dm9sa19pbnRlcm5hbF9jb25maWciLAotICBdCi0gIHB1YmxpY19kZXBzID0gWwotICAgICIu
Li8uLi8uLi90aGlyZF9wYXJ0eS92dWxrYW4taGVhZGVycy9zcmM6dnVsa2FuX2hlYWRlcnMiLAot
ICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiOnZvbGtfY29uZmlnIiBdCisgIHB1YmxpY19kZXBz
ID0gWyAiLi4vLi4vLi4vdGhpcmRfcGFydHkvdnVsa2FuLWhlYWRlcnMvc3JjOnZ1bGthbl9oZWFk
ZXJzIiBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0
eS8uZmluZC1pZ25vcmUgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS8uZmlu
ZC1pZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhj
NTM5MQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvQlVJ
TEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9CVUlMRC5nbgppbmRl
eCBlYWNiZmMxNGM3ZjkwNzYyOTI4NzQxMjViMGY5MzMxYWY0OWJhNjA4Li40NjJmNGQ0ZjdmODNl
NjMyMmU1Nzc1ZDEyNTIxMzkwZDMxNDMxZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS90aGlyZF9wYXJ0eS9CVUlMRC5nbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90aGlyZF9wYXJ0eS9CVUlMRC5nbgpAQCAtMjUsMTQgKzI1LDEwIEBAIGdyb3VwKCJqcGVnIikg
ewogICBpZiAodXNlX3N5c3RlbV9saWJqcGVnKSB7CiAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6
c3lzdGVtX2xpYmpwZWdfY29uZmlnIiBdCiAgIH0gZWxzZSBpZiAodXNlX2xpYmpwZWdfdHVyYm8p
IHsKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAgICIvL3RoaXJkX3BhcnR5L2xpYmpwZWdfdHVy
Ym86bGlianBlZyIsCi0gICAgXQorICAgIHB1YmxpY19kZXBzID0gWyAiLy90aGlyZF9wYXJ0eS9s
aWJqcGVnX3R1cmJvOmxpYmpwZWciIF0KICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpsaWJqcGVn
X3R1cmJvX2NvbmZpZyIgXQogICB9IGVsc2UgewotICAgIHB1YmxpY19kZXBzID0gWwotICAgICAg
Ii8vdGhpcmRfcGFydHkvbGlianBlZzpsaWJqcGVnIiwKLSAgICBdCisgICAgcHVibGljX2RlcHMg
PSBbICIvL3RoaXJkX3BhcnR5L2xpYmpwZWc6bGlianBlZyIgXQogICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2dsbWFyazIvQlVJTEQuZ24g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9nbG1hcmsyL0JVSUxELmduCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE1NjA0ZGE2MDFjMGQwOTFjOGQ5N2Y3NzIxMzMwZDhkYzg2ZWJiMjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9nbG1hcmsy
L0JVSUxELmduCkBAIC0wLDAgKzEsNDAxIEBACisjIENvcHlyaWdodCAyMDE5IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKyMgQnVpbGQgaW50ZWdyYXRpb24gZm9yIGds
bWFyazIuCisKK2ltcG9ydCgiLi4vLi4vZ25pL2FuZ2xlLmduaSIpCisKK19nbG1hcmsyX2dsYWRf
Y29tbW9uX3NvdXJjZXMgPSBbCisgICJzcmMvc3JjL2dsYWQvaW5jbHVkZS9nbGFkL2VnbC5oIiwK
KyAgInNyYy9zcmMvZ2xhZC9pbmNsdWRlL2dsYWQvd2dsLmgiLAorICAic3JjL3NyYy9nbGFkL3Ny
Yy9lZ2wuYyIsCitdCisKK2lmIChpc193aW4pIHsKKyAgX2dsbWFyazJfZ2xhZF9jb21tb25fc291
cmNlcyArPSBbICJzcmMvc3JjL2dsYWQvc3JjL3dnbC5jIiBdCit9CisKK2NvbmZpZygiZ2xtYXJr
Ml9nbGFkX2NvbmZpZyIpIHsKKyAgaW5jbHVkZV9kaXJzID0gWyAic3JjL3NyYy9nbGFkL2luY2x1
ZGUiIF0KK30KKworc291cmNlX3NldCgiZ2xtYXJrMl9nbGFkX2dsZXMiKSB7CisgIHNvdXJjZXMg
PSBfZ2xtYXJrMl9nbGFkX2NvbW1vbl9zb3VyY2VzICsgWworICAgICAgICAgICAgICAic3JjL3Ny
Yy9nbGFkL2luY2x1ZGUvZ2xhZC9nbGVzMi5oIiwKKyAgICAgICAgICAgICAgInNyYy9zcmMvZ2xh
ZC9zcmMvZ2xlczIuYyIsCisgICAgICAgICAgICBdCisgIHB1YmxpY19jb25maWdzID0gWyAiOmds
bWFyazJfZ2xhZF9jb25maWciIF0KK30KKworc291cmNlX3NldCgiZ2xtYXJrMl9nbGFkX2dsIikg
eworICBzb3VyY2VzID0gX2dsbWFyazJfZ2xhZF9jb21tb25fc291cmNlcyArIFsKKyAgICAgICAg
ICAgICAgInNyYy9zcmMvZ2xhZC9pbmNsdWRlL2dsYWQvZ2wuaCIsCisgICAgICAgICAgICAgICJz
cmMvc3JjL2dsYWQvc3JjL2dsLmMiLAorICAgICAgICAgICAgXQorICBwdWJsaWNfY29uZmlncyA9
IFsgIjpnbG1hcmsyX2dsYWRfY29uZmlnIiBdCit9CisKK2dsbWFya19kYXRhX3BhdGggPSAiJHth
bmdsZV9yb290fS90aGlyZF9wYXJ0eS9nbG1hcmsyL3NyYy9kYXRhIgorcmF3X2dsbWFya19kYXRh
X3BhdGggPSByZWJhc2VfcGF0aChnbG1hcmtfZGF0YV9wYXRoLCByb290X2J1aWxkX2RpcikKKwor
Y29uZmlnKCJnbG1hcmsyX2NvbW1vbl9jb25maWciKSB7CisgIGRlZmluZXMgPSBbICJHTE1BUktf
REFUQV9QQVRIPVwiJHtyYXdfZ2xtYXJrX2RhdGFfcGF0aH1cIiIgXQorICBpbmNsdWRlX2RpcnMg
PSBbICJzcmMvc3JjIiBdCisgIGlmIChpc193aW4pIHsKKyAgICBpbmNsdWRlX2RpcnMgKz0gWyAi
c3JjL3NyYy9pbmNsdWRlIiBdCisKKyAgICAjIE1fUEkgaXMgbm9uc3RhbmRhcmQuCisgICAgZGVm
aW5lcyArPSBbICJfVVNFX01BVEhfREVGSU5FUyIgXQorCisgICAgaWYgKCFpc19jbGFuZykgewor
ICAgICAgY2ZsYWdzID0gWworICAgICAgICAjIE1TVkMgd2FybnMgYWJvdXQgdGhlIGNvcHlyaWdo
dCBjaGFyYWN0ZXIgYmVpbmcgaWxsZWdhbC4KKyAgICAgICAgIi93ZDQ4MjgiLAorCisgICAgICAg
ICMgQSB3YXJuaW5nIGdlbmVyYXRlZCBpbiBzY2VuZS1lZmZlY3QtMmQgaW4gdmVjMjo6Y2FsY19v
ZmZzZXQKKyAgICAgICAgIi93ZDQxNDYiLAorICAgICAgXQorICAgIH0KKyAgfQorfQorCitjb25m
aWcoImdsbWFyazJfZ2xlc19jb25maWciKSB7CisgIGRlZmluZXMgPSBbICJHTE1BUksyX1VTRV9H
TEVTdjIiIF0KK30KKworY29uZmlnKCJnbG1hcmsyX2dsX2NvbmZpZyIpIHsKKyAgZGVmaW5lcyA9
IFsgIkdMTUFSSzJfVVNFX0dMIiBdCit9CisKK2dyb3VwKCJnbG1hcmsyX2dsZXMiKSB7CisgIHB1
YmxpY19jb25maWdzID0gWworICAgICI6Z2xtYXJrMl9jb21tb25fY29uZmlnIiwKKyAgICAiOmds
bWFyazJfZ2xlc19jb25maWciLAorICBdCisgIHB1YmxpY19kZXBzID0gWyAiOmdsbWFyazJfZ2xh
ZF9nbGVzIiBdCit9CisKK2dyb3VwKCJnbG1hcmsyX2dsIikgeworICBwdWJsaWNfY29uZmlncyA9
IFsKKyAgICAiOmdsbWFyazJfY29tbW9uX2NvbmZpZyIsCisgICAgIjpnbG1hcmsyX2dsX2NvbmZp
ZyIsCisgIF0KKyAgcHVibGljX2RlcHMgPSBbICI6Z2xtYXJrMl9nbGFkX2dsIiBdCit9CisKKyMg
U3VwcGxpZXMgY29tcGF0aWJsZSBoZWFkZXJzIG9uIFdpbjMyLgorY29uZmlnKCJnbG1hcmsyX2hl
YWRlcnNfY29uZmlnIikgeworICBpZiAoaXNfd2luKSB7CisgICAgaWYgKGlzX2NsYW5nKSB7Cisg
ICAgICBjZmxhZ3MgPSBbCisgICAgICAgICItV25vLXVudXNlZC1mdW5jdGlvbiIsCisgICAgICAg
ICItV25vLXdyaXRhYmxlLXN0cmluZ3MiLAorICAgICAgICAiLVduby1leHRyYS10b2tlbnMiLAor
ICAgICAgXQorICAgIH0KKyAgfQorfQorCitzb3VyY2Vfc2V0KCJnbG1hcmsyX2hlYWRlcnMiKSB7
CisgIHNvdXJjZXMgPSBbCisgICAgInNyYy9zcmMvY2FudmFzLmgiLAorICAgICJzcmMvc3JjL2ds
LWhlYWRlcnMuaCIsCisgICAgInNyYy9zcmMvZ2wtc3RhdGUtZWdsLmgiLAorICAgICJzcmMvc3Jj
L2dsLXN0YXRlLmgiLAorICAgICJzcmMvc3JjL2dsLXZpc3VhbC1jb25maWcuaCIsCisgICAgInNy
Yy9zcmMvbWVzaC5oIiwKKyAgICAic3JjL3NyYy9vcHRpb25zLmgiLAorICAgICJzcmMvc3JjL3Nj
ZW5lLmgiLAorICAgICJzcmMvc3JjL3NoYXJlZC1saWJyYXJ5LmgiLAorICAgICJzcmMvc3JjL3Rl
eHR1cmUuaCIsCisgIF0KKworICBpZiAoaXNfbGludXgpIHsKKyAgICBzb3VyY2VzICs9IFsgInNy
Yy9zcmMvZ2wtc3RhdGUtZ2x4LmgiIF0KKyAgfQorICBpZiAoaXNfd2luKSB7CisgICAgc291cmNl
cyArPSBbCisgICAgICAic3JjL3NyYy9nbC1zdGF0ZS13Z2wuaCIsCisgICAgICAic3JjL3NyYy9p
bmNsdWRlL2RpcmVudC5oIiwKKyAgICAgICJzcmMvc3JjL2luY2x1ZGUvZ2V0b3B0LmgiLAorICAg
ICAgInNyYy9zcmMvaW5jbHVkZS9zeXMvdGltZS5oIiwKKyAgICBdCisgIH0KKyAgcHVibGljX2Nv
bmZpZ3MgPSBbICI6Z2xtYXJrMl9oZWFkZXJzX2NvbmZpZyIgXQorICBpbmNsdWRlX2RpcnMgPSBb
ICJzcmMvc3JjIiBdCit9CisKK2NvbmZpZygiZ2xtYXJrMl9saWJtYXRyaXhfY29uZmlnIikgewor
ICBpbmNsdWRlX2RpcnMgPSBbICJzcmMvc3JjL2xpYm1hdHJpeCIgXQorfQorCit0ZW1wbGF0ZSgi
Z2xtYXJrMl9saWJtYXRyaXgiKSB7CisgIHNvdXJjZV9zZXQodGFyZ2V0X25hbWUpIHsKKyAgICBm
b3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIsICIqIikKKyAgICBzb3VyY2VzID0gWworICAg
ICAgInNyYy9zcmMvbGlibWF0cml4L2dsLWlmLmgiLAorICAgICAgInNyYy9zcmMvbGlibWF0cml4
L2xvZy5jYyIsCisgICAgICAic3JjL3NyYy9saWJtYXRyaXgvbG9nLmgiLAorICAgICAgInNyYy9z
cmMvbGlibWF0cml4L21hdC5jYyIsCisgICAgICAic3JjL3NyYy9saWJtYXRyaXgvbWF0LmgiLAor
ICAgICAgInNyYy9zcmMvbGlibWF0cml4L3Byb2dyYW0uY2MiLAorICAgICAgInNyYy9zcmMvbGli
bWF0cml4L3Byb2dyYW0uaCIsCisgICAgICAic3JjL3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJj
ZS5jYyIsCisgICAgICAic3JjL3NyYy9saWJtYXRyaXgvc2hhZGVyLXNvdXJjZS5oIiwKKyAgICAg
ICJzcmMvc3JjL2xpYm1hdHJpeC9zdGFjay5oIiwKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC91
dGlsLmNjIiwKKyAgICAgICJzcmMvc3JjL2xpYm1hdHJpeC91dGlsLmgiLAorICAgICAgInNyYy9z
cmMvbGlibWF0cml4L3ZlYy5oIiwKKyAgICBdCisKKyAgICBpZiAoaXNfY2xhbmcpIHsKKyAgICAg
IGNmbGFnc19jYyA9IFsgIi1Xbm8taW1wbGljaXQtZmFsbHRocm91Z2giIF0KKyAgICB9CisgICAg
cHVibGljX2RlcHMgPSBbICI6Z2xtYXJrMl9oZWFkZXJzIiBdCisgICAgcHVibGljX2NvbmZpZ3Mg
PSBbICI6Z2xtYXJrMl9saWJtYXRyaXhfY29uZmlnIiBdCisgIH0KK30KKworZ2xtYXJrMl9saWJt
YXRyaXgoImdsbWFyazJfbGlibWF0cml4X2dsZXMiKSB7CisgIGRlcHMgPSBbICI6Z2xtYXJrMl9n
bGVzIiBdCit9CisKK2dsbWFyazJfbGlibWF0cml4KCJnbG1hcmsyX2xpYm1hdHJpeF9nbCIpIHsK
KyAgZGVwcyA9IFsgIjpnbG1hcmsyX2dsIiBdCit9CisKK2NvbmZpZygiZ2xtYXJrMl9zY2VuZV9p
ZGVhc19jb25maWciKSB7CisgIGluY2x1ZGVfZGlycyA9IFsgInNyYy9zcmMvc2NlbmUtaWRlYXMi
IF0KK30KKwordGVtcGxhdGUoImdsbWFyazJfc2NlbmVfaWRlYXMiKSB7CisgIHNvdXJjZV9zZXQo
dGFyZ2V0X25hbWUpIHsKKyAgICBmb3J3YXJkX3ZhcmlhYmxlc19mcm9tKGludm9rZXIsICIqIikK
KyAgICBzb3VyY2VzID0gWworICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvYS5jYyIsCisgICAg
ICAic3JjL3NyYy9zY2VuZS1pZGVhcy9jaGFyYWN0ZXJzLmgiLAorICAgICAgInNyYy9zcmMvc2Nl
bmUtaWRlYXMvZC5jYyIsCisgICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9lLmNjIiwKKyAgICAg
ICJzcmMvc3JjL3NjZW5lLWlkZWFzL2kuY2MiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMv
bGFtcC5jYyIsCisgICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9sYW1wLmgiLAorICAgICAgInNy
Yy9zcmMvc2NlbmUtaWRlYXMvbG9nby5jYyIsCisgICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy9s
b2dvLmgiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvbS5jYyIsCisgICAgICAic3JjL3Ny
Yy9zY2VuZS1pZGVhcy9uLmNjIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL28uY2MiLAor
ICAgICAgInNyYy9zcmMvc2NlbmUtaWRlYXMvcy5jYyIsCisgICAgICAic3JjL3NyYy9zY2VuZS1p
ZGVhcy9zcGxpbmVzLmNjIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL3NwbGluZXMuaCIs
CisgICAgICAic3JjL3NyYy9zY2VuZS1pZGVhcy90LmNjIiwKKyAgICAgICJzcmMvc3JjL3NjZW5l
LWlkZWFzL3RhYmxlLmNjIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWlkZWFzL3RhYmxlLmgiLAor
ICAgIF0KKyAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpnbG1hcmsyX3NjZW5lX2lkZWFzX2NvbmZp
ZyIgXQorICB9Cit9CisKK2dsbWFyazJfc2NlbmVfaWRlYXMoImdsbWFyazJfc2NlbmVfaWRlYXNf
Z2xlcyIpIHsKKyAgZGVwcyA9IFsKKyAgICAiOmdsbWFyazJfZ2xlcyIsCisgICAgIjpnbG1hcmsy
X2xpYm1hdHJpeF9nbGVzIiwKKyAgXQorfQorCitnbG1hcmsyX3NjZW5lX2lkZWFzKCJnbG1hcmsy
X3NjZW5lX2lkZWFzX2dsIikgeworICBkZXBzID0gWworICAgICI6Z2xtYXJrMl9nbCIsCisgICAg
IjpnbG1hcmsyX2xpYm1hdHJpeF9nbCIsCisgIF0KK30KKworY29uZmlnKCJnbG1hcmsyX3NjZW5l
X3RlcnJhaW5fY29uZmlnIikgeworICBpbmNsdWRlX2RpcnMgPSBbICJzcmMvc3JjL3NjZW5lLXRl
cnJhaW4iIF0KK30KKwordGVtcGxhdGUoImdsbWFyazJfc2NlbmVfdGVycmFpbiIpIHsKKyAgc291
cmNlX3NldCh0YXJnZXRfbmFtZSkgeworICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20oaW52b2tl
ciwgIioiKQorICAgIHNvdXJjZXMgPSBbCisgICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL2Jh
c2UtcmVuZGVyZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vYmx1ci1yZW5k
ZXJlci5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9jb3B5LXJlbmRlcmVyLmNw
cCIsCisgICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluL2x1bWluYW5jZS1yZW5kZXJlci5jcHAi
LAorICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9ub3JtYWwtZnJvbS1oZWlnaHQtcmVuZGVy
ZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLXRlcnJhaW4vb3ZlcmxheS1yZW5kZXJlci5j
cHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9yZW5kZXJlci1jaGFpbi5jcHAiLAor
ICAgICAgInNyYy9zcmMvc2NlbmUtdGVycmFpbi9yZW5kZXJlci5oIiwKKyAgICAgICJzcmMvc3Jj
L3NjZW5lLXRlcnJhaW4vc2ltcGxleC1ub2lzZS1yZW5kZXJlci5jcHAiLAorICAgICAgInNyYy9z
cmMvc2NlbmUtdGVycmFpbi90ZXJyYWluLXJlbmRlcmVyLmNwcCIsCisgICAgICAic3JjL3NyYy9z
Y2VuZS10ZXJyYWluL3RleHR1cmUtcmVuZGVyZXIuY3BwIiwKKyAgICBdCisKKyAgICBwdWJsaWNf
Y29uZmlncyA9IFsgIjpnbG1hcmsyX3NjZW5lX3RlcnJhaW5fY29uZmlnIiBdCisgIH0KK30KKwor
Z2xtYXJrMl9zY2VuZV90ZXJyYWluKCJnbG1hcmsyX3NjZW5lX3RlcnJhaW5fZ2xlcyIpIHsKKyAg
ZGVwcyA9IFsKKyAgICAiOmdsbWFyazJfZ2xlcyIsCisgICAgIjpnbG1hcmsyX2xpYm1hdHJpeF9n
bGVzIiwKKyAgXQorfQorCitnbG1hcmsyX3NjZW5lX3RlcnJhaW4oImdsbWFyazJfc2NlbmVfdGVy
cmFpbl9nbCIpIHsKKyAgZGVwcyA9IFsKKyAgICAiOmdsbWFyazJfZ2wiLAorICAgICI6Z2xtYXJr
Ml9saWJtYXRyaXhfZ2wiLAorICBdCit9CisKK3RlbXBsYXRlKCJnbG1hcmsyX2NvbW1vbiIpIHsK
KyAgc291cmNlX3NldCh0YXJnZXRfbmFtZSkgeworICAgIGZvcndhcmRfdmFyaWFibGVzX2Zyb20o
aW52b2tlciwgIioiKQorICAgIHNvdXJjZXMgPSBbCisgICAgICAic3JjL3NyYy9iZW5jaG1hcmst
Y29sbGVjdGlvbi5jcHAiLAorICAgICAgInNyYy9zcmMvYmVuY2htYXJrLWNvbGxlY3Rpb24uaCIs
CisgICAgICAic3JjL3NyYy9iZW5jaG1hcmsuY3BwIiwKKyAgICAgICJzcmMvc3JjL2JlbmNobWFy
ay5oIiwKKyAgICAgICJzcmMvc3JjL2RlZmF1bHQtYmVuY2htYXJrcy5oIiwKKyAgICAgICJzcmMv
c3JjL2dsLWhlYWRlcnMuY3BwIiwKKyAgICAgICJzcmMvc3JjL2dsLXZpc3VhbC1jb25maWcuY3Bw
IiwKKyAgICAgICJzcmMvc3JjL2dsLXZpc3VhbC1jb25maWcuaCIsCisgICAgICAic3JjL3NyYy9p
bWFnZS1yZWFkZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL2ltYWdlLXJlYWRlci5oIiwKKyAgICAg
ICJzcmMvc3JjL21haW4tbG9vcC5jcHAiLAorICAgICAgInNyYy9zcmMvbWFpbi1sb29wLmgiLAor
ICAgICAgInNyYy9zcmMvbWVzaC5jcHAiLAorICAgICAgInNyYy9zcmMvbW9kZWwuY3BwIiwKKyAg
ICAgICJzcmMvc3JjL21vZGVsLmgiLAorICAgICAgInNyYy9zcmMvbmF0aXZlLXN0YXRlLmgiLAor
ICAgICAgInNyYy9zcmMvb3B0aW9ucy5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtYnVmZmVy
LmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS1idWlsZC5jcHAiLAorICAgICAgInNyYy9zcmMv
c2NlbmUtYnVtcC5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtY2xlYXIuY3BwIiwKKyAgICAg
ICJzcmMvc3JjL3NjZW5lLWNvbGxlY3Rpb24uaCIsCisgICAgICAic3JjL3NyYy9zY2VuZS1jb25k
aXRpb25hbHMuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWRlZmF1bHQtb3B0aW9ucy5jcHAi
LAorICAgICAgInNyYy9zcmMvc2NlbmUtZGVza3RvcC5jcHAiLAorICAgICAgInNyYy9zcmMvc2Nl
bmUtZWZmZWN0LTJkLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS1mdW5jdGlvbi5jcHAiLAor
ICAgICAgInNyYy9zcmMvc2NlbmUtZ3JpZC5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtaWRl
YXMuY3BwIiwKKyAgICAgICJzcmMvc3JjL3NjZW5lLWplbGx5ZmlzaC5jcHAiLAorICAgICAgInNy
Yy9zcmMvc2NlbmUtamVsbHlmaXNoLmgiLAorICAgICAgInNyYy9zcmMvc2NlbmUtbG9vcC5jcHAi
LAorICAgICAgInNyYy9zcmMvc2NlbmUtcHVsc2FyLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2Vu
ZS1yZWZyYWN0LmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS1yZWZyYWN0LmgiLAorICAgICAg
InNyYy9zcmMvc2NlbmUtc2hhZGluZy5jcHAiLAorICAgICAgInNyYy9zcmMvc2NlbmUtc2hhZG93
LmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS10ZXJyYWluLmNwcCIsCisgICAgICAic3JjL3Ny
Yy9zY2VuZS10ZXh0dXJlLmNwcCIsCisgICAgICAic3JjL3NyYy9zY2VuZS5jcHAiLAorICAgICAg
InNyYy9zcmMvc2hhcmVkLWxpYnJhcnkuY3BwIiwKKyAgICAgICJzcmMvc3JjL3RleHQtcmVuZGVy
ZXIuY3BwIiwKKyAgICAgICJzcmMvc3JjL3RleHQtcmVuZGVyZXIuaCIsCisgICAgICAic3JjL3Ny
Yy90ZXh0dXJlLmNwcCIsCisgICAgXQorCisgICAgcHVibGljX2RlcHMgKz0gWworICAgICAgIjpn
bG1hcmsyX2hlYWRlcnMiLAorICAgICAgIiR7YW5nbGVfbGlicG5nX2Rpcn06bGlicG5nIiwKKyAg
ICAgICIke2FuZ2xlX3Jvb3R9L3RoaXJkX3BhcnR5OmpwZWciLAorICAgIF0KKyAgfQorfQorCitn
bG1hcmsyX2NvbW1vbigiZ2xtYXJrMl9jb21tb25fZ2xlcyIpIHsKKyAgcHVibGljX2RlcHMgPSBb
CisgICAgIjpnbG1hcmsyX2dsZXMiLAorICAgICI6Z2xtYXJrMl9saWJtYXRyaXhfZ2xlcyIsCisg
ICAgIjpnbG1hcmsyX3NjZW5lX2lkZWFzX2dsZXMiLAorICAgICI6Z2xtYXJrMl9zY2VuZV90ZXJy
YWluX2dsZXMiLAorICBdCit9CisKK2dsbWFyazJfY29tbW9uKCJnbG1hcmsyX2NvbW1vbl9nbCIp
IHsKKyAgcHVibGljX2RlcHMgPSBbCisgICAgIjpnbG1hcmsyX2dsIiwKKyAgICAiOmdsbWFyazJf
bGlibWF0cml4X2dsIiwKKyAgICAiOmdsbWFyazJfc2NlbmVfaWRlYXNfZ2wiLAorICAgICI6Z2xt
YXJrMl9zY2VuZV90ZXJyYWluX2dsIiwKKyAgXQorfQorCitnbG1hcmsyX3ZlcnNpb24gPSAiMjAx
Ny4wNyIKKwordGVtcGxhdGUoImdsbWFyazJfZXhlIikgeworICBleGVjdXRhYmxlKHRhcmdldF9u
YW1lKSB7CisgICAgZm9yd2FyZF92YXJpYWJsZXNfZnJvbShpbnZva2VyLCAiKiIpCisgICAgc291
cmNlcyArPSBbCisgICAgICAic3JjL3NyYy9jYW52YXMtZ2VuZXJpYy5jcHAiLAorICAgICAgInNy
Yy9zcmMvY2FudmFzLWdlbmVyaWMuaCIsCisgICAgICAic3JjL3NyYy9tYWluLmNwcCIsCisgICAg
XQorICAgIGRhdGEgPSBbICJzcmMvZGF0YS8iIF0KKworICAgIGRlZmluZXMgKz0gWyAiR0xNQVJL
X1ZFUlNJT049XCIke2dsbWFyazJfdmVyc2lvbn1cIiIgXQorCisgICAgaWYgKGlzX3dpbikgewor
ICAgICAgZGVmaW5lcyArPSBbICJHTE1BUksyX1VTRV9XSU4zMiIgXQorICAgICAgc291cmNlcyAr
PSBbCisgICAgICAgICJzcmMvc3JjL25hdGl2ZS1zdGF0ZS13aW4zMi5jcHAiLAorICAgICAgICAi
c3JjL3NyYy9uYXRpdmUtc3RhdGUtd2luMzIuaCIsCisgICAgICBdCisgICAgfQorICAgIGlmIChp
c19saW51eCkgeworICAgICAgZGVmaW5lcyArPSBbICJHTE1BUksyX1VTRV9YMTEiIF0KKyAgICAg
IHNvdXJjZXMgKz0gWworICAgICAgICAic3JjL3NyYy9uYXRpdmUtc3RhdGUteDExLmNwcCIsCisg
ICAgICAgICJzcmMvc3JjL25hdGl2ZS1zdGF0ZS14MTEuaCIsCisgICAgICBdCisgICAgICBsaWJz
ID0gWyAiWDExIiBdCisgICAgfQorICB9Cit9CisKK2dsbWFyazJfZXhlKCJnbG1hcmsyX2FuZ2xl
IikgeworICBzb3VyY2VzID0gWyAic3JjL3NyYy9nbC1zdGF0ZS1lZ2wuY3BwIiBdCisgIGRlcHMg
PSBbICI6Z2xtYXJrMl9jb21tb25fZ2xlcyIgXQorICBkYXRhX2RlcHMgPSBbCisgICAgIiR7YW5n
bGVfcm9vdH06bGliRUdMIiwKKyAgICAiJHthbmdsZV9yb290fTpsaWJHTEVTdjIiLAorICBdCisK
KyAgZGVmaW5lcyA9IFsKKyAgICAiRUdMX0VHTF9QUk9UT1RZUEVTPTEiLAorICAgICJHTE1BUksy
X1VTRV9FR0wiLAorICBdCisKKyAgaWYgKGlzX2xpbnV4ICYmICFpc19jb21wb25lbnRfYnVpbGQp
IHsKKyAgICAjIFNldCBycGF0aCB0byBmaW5kIHNoYXJlZCBsaWJzIGluIGEgbm9uLWNvbXBvbmVu
dCBidWlsZC4KKyAgICBwdWJsaWNfY29uZmlncyA9IFsgIi8vYnVpbGQvY29uZmlnL2djYzpycGF0
aF9mb3JfYnVpbHRfc2hhcmVkX2xpYnJhcmllcyIgXQorICB9Cit9CisKK2lmIChpc19saW51eCkg
eworICBnbG1hcmsyX2V4ZSgiZ2xtYXJrMl9nbHgiKSB7CisgICAgc291cmNlcyA9IFsKKyAgICAg
ICJzcmMvc3JjL2dsLXN0YXRlLWdseC5jcHAiLAorICAgICAgInNyYy9zcmMvZ2xhZC9pbmNsdWRl
L2dsYWQvZ2x4LmgiLAorICAgICAgInNyYy9zcmMvZ2xhZC9zcmMvZ2x4LmMiLAorICAgIF0KKyAg
ICBkZXBzID0gWyAiOmdsbWFyazJfY29tbW9uX2dsIiBdCisKKyAgICBkZWZpbmVzID0gWyAiR0xN
QVJLMl9VU0VfR0xYIiBdCisgIH0KK30KKworIyBvcGVuZ2wzMi5saWIvb3BlbmdsMzIuZGxsIGFy
ZSBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MgQVJNNjQuCitpZiAoaXNfd2luICYmIHRhcmdldF9j
cHUgIT0gImFybTY0IikgeworICBnbG1hcmsyX2V4ZSgiZ2xtYXJrMl93Z2wiKSB7CisgICAgc291
cmNlcyA9IFsgInNyYy9zcmMvZ2wtc3RhdGUtd2dsLmNwcCIgXQorICAgIGRlcHMgPSBbICI6Z2xt
YXJrMl9jb21tb25fZ2wiIF0KKworICAgIGxpYnMgPSBbICJvcGVuZ2wzMi5saWIiIF0KKyAgICBk
ZWZpbmVzID0gWyAiR0xNQVJLMl9VU0VfV0dMIiBdCisgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2dsbWFyazIvUkVBRE1FLmFuZ2xlIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvZ2xtYXJrMi9SRUFETUUuYW5nbGUKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTJiNjM3MWZlZDg0MTU5NzVlMmJkZThlNTFhYTU5OGZmY2YwN2Y2YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2dsbWFyazIv
UkVBRE1FLmFuZ2xlCkBAIC0wLDAgKzEsMTIgQEAKK05hbWU6IGdsbWFyazIKK1Nob3J0IE5hbWU6
IGdsbWFyazIKK1VSTDogaHR0cHM6Ly9naXRodWIuY29tL2dsbWFyazIvZ2xtYXJrMgorU2VjdXJp
dHkgQ3JpdGljYWw6IG5vCitMaWNlbnNlOiBHUEwgdjMKK0xpY2Vuc2UgRmlsZTogTk9UX1NISVBQ
RUQKKworRGVzY3JpcHRpb246CitnbG1hcmsyIGlzIGFuIE9wZW5HTCAyLjAgYW5kIEVTIDIuMCBi
ZW5jaG1hcmsuCisKK2dsbWFyazIgaXMgZGV2ZWxvcGVkIGJ5IEFsZXhhbmRyb3MgRnJhbnR6aXMg
YW5kIEplc3NlIEJhcmtlciBiYXNlZCBvbiB0aGUKK29yaWdpbmFsIGdsbWFyayBiZW5jaG1hcmsg
YnkgQmVuIFNtaXRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRf
cGFydHkvbGlicG5nL0JVSUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFy
dHkvbGlicG5nL0JVSUxELmduCmluZGV4IDIwY2VkNDc2MzRjNGJjY2VkMjhhY2I5ZWU1ODhjYWI3
M2MwOTZkZTMuLjE2ODU3YzY0ZTE2MDY5MDljNDE4NDQ1Y2VmOGYwNjI5M2IwY2IzMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2xpYnBuZy9CVUlMRC5n
bgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9saWJwbmcvQlVJTEQu
Z24KQEAgLTM2LDcgKzM2LDUgQEAgc3RhdGljX2xpYnJhcnkoImxpYnBuZyIpIHsKICAgfQogICBj
b25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOmNocm9taXVtX2NvZGUiIF0KICAg
cHVibGljX2NvbmZpZ3MgPSBbICI6bGlicG5nX2NvbmZpZyIgXQotICBkZXBzID0gWwotICAgICIv
L3RoaXJkX3BhcnR5L3psaWI6emxpYiIsCi0gIF0KKyAgZGVwcyA9IFsgIi8vdGhpcmRfcGFydHkv
emxpYjp6bGliIiBdCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL1JFQURNRS5tZCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2Zs
ZXgtYmlzb24vUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkZmUxMjYyNjYwM2EzNzg4MzdjOWMxMjEx
YjJhYjI3N2EzYzllN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL1JFQURNRS5tZApAQCAtMCwwICsxLDEyOSBAQAorIyBmbGV4IGFu
ZCBiaXNvbiBiaW5hcmllcworCitUaGlzIGZvbGRlciBjb250YWlucyB0aGUgZmxleCBhbmQgYmlz
b24gYmluYXJpZXMuIFdlIHVzZSB0aGVzZSBiaW5hcmllcyB0bworZ2VuZXJhdGUgdGhlIEFOR0xF
IHRyYW5zbGF0b3IncyBsZXhlciBhbmQgcGFyc2VyLgorCitVc2UgdGhlIHNjcmlwdCBbYHVwZGF0
ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5YF0odXBkYXRlX2ZsZXhfYmlzb25fYmluYXJpZXMucHkp
Cit0byB1cGRhdGUgdGhlIHZlcnNpb25zIG9mIHRoZXNlIGJpbmFyaWVzIGluIGNsb3VkIHN0b3Jh
Z2UuIEl0IG11c3QgYmUgcnVuIG9uCitMaW51eCBvciBXaW5kb3dzLiBJdCB3aWxsIHVwZGF0ZSB0
aGUgU0hBcyBmb3IgeW91ciBwbGF0Zm9ybS4gQWZ0ZXIgcnVubmluZyB0aGUKK3NjcmlwdCBydW4g
YGdpdCBjb21taXRgIGFuZCB0aGVuIGBnaXQgY2wgdXBsb2FkYCB0byBjb2RlIHJldmlldyB1c2lu
ZyB0aGUgbm9ybWFsCityZXZpZXcgcHJvY2Vzcy4gWW91IHdpbGwgYWxzbyB3YW50IHRvIHJ1bgor
W2BzY3JpcHRzL3J1bl9jb2RlX2dlbmVyYXRpb24ucHlgXSguLi8uLi9zY3JpcHRzL3J1bl9jb2Rl
X2dlbmVyYXRpb24ucHkpIHRvCit1cGRhdGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKworUGxlYXNl
IHVwZGF0ZSBib3RoIFdpbmRvd3MgYW5kIExpbnV4IGJpbmFyaWVzIGF0IHRoZSBzYW1lIHRpbWUu
IFVzZSB0d28gQ0xzLiBPbmUKK2ZvciBlYWNoIHBsYXRmb3JtLiBOb3RlIHRoYXQgd2UgZG9uJ3Qg
Y3VycmVudGx5IHN1cHBvcnQgTWFjIGZvciBnZW5lcmF0aW5nIHRoZQorbGV4ZXIgYW5kIHBhcnNl
ciBmaWxlcy4gSWYgd2UgZG8gd2Ugc2hvdWxkIGFkZCBhIGZsZXgvYmlzb24gZG93bmxvYWQgZm9y
IE1hYyBhcword2VsbC4KKworQ29udGFjdCBqbWFkaWxsIG9yIHN5b3Vzc2VmaSBmb3IgYW55IGhl
bHAgd2l0aCB1cGRhdGluZyB0aGUgYmluYXJpZXMuCisKKyMjIFVwZGF0aW5nIGZsZXggYW5kIGJp
c29uIGJpbmFyaWVzCisKK1RoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgYSByYXJlIG9wZXJhdGlvbiwg
YW5kIGlzIGN1cnJlbnRseSBkb25lIGJhc2VkIG9uIHRoZQorZm9sbG93aW5nIGluc3RydWN0aW9u
cy4gIE5vdGU6IGdldCB0aGUgYmluYXJpZXMgZmlyc3Qgb24gd2luZG93cywgYXMgb25seSBhCitz
aW5nbGUgb3B0aW9uIGlzIGF2YWlsYWJsZSwgdGhlbiBidWlsZCB0aGUgYmluYXJpZXMgZm9yIHRo
ZSBzYW1lIHZlcnNpb24gb24KK0xpbnV4LgorCisjIyMgT24gV2luZG93cworCitJbnN0YWxsIE1T
eXMyICh4ODZfNjQpIGZyb20gaHR0cDovL3d3dy5tc3lzMi5vcmcvIG9uIFdpbmRvd3MuICBgZmxl
eGAgc2hvdWxkCithbHJlYWR5IGJlIGluc3RhbGxlZC4gIEluc3RhbGwgYmlzb246CisKK2BgYAor
JCBwYWNtYW4gLVMgYmlzb24KK2BgYAorCitOb3RlIHRoZSB2ZXJzaW9ucyBvZiBmbGV4IGFuZCBi
aXNvbiBzbyB0aGUgc2FtZSB2ZXJzaW9ucyBjYW4gYmUgYnVpbGQgb24gTGludXguCitGb3IgZXhh
bXBsZToKKworYGBgCiskIGZsZXggLS12ZXJzaW9uCitmbGV4IDIuNi40CisKKyQgYmlzb24gLS12
ZXJzaW9uCitiaXNvbiAoR05VIEJpc29uKSAzLjMuMgorYGBgCisKK1RoZSBvbmx5IGRlcGVuZGVu
Y2llcyBmcm9tIE1TeXMyIHNob3VsZCBiZSB0aGUgZm9sbG93aW5nOgorCitgYGAKK21zeXMtaW50
bC04LmRsbAorbXN5cy1pY29udi0yLmRsbAorbXN5cy0yLjAuZGxsCitgYGAKKworVGhpcyBjYW4g
YmUgdmVyaWZpZWQgd2l0aDoKKworYGBgCiskIGxkZCAvdXNyL2Jpbi9mbGV4CiskIGxkZCAvdXNy
L2Jpbi9iaXNvbgorYGBgCisKK0FkZGl0aW9uYWxseSwgd2UgbmVlZCB0aGUgYmluYXJ5IGZvciBt
NCBhdCBgL3Vzci9iaW4vbTRgLgorCitDb3B5IGFsbCB0aGVzZSA1IGZpbGVzIHRvIHRoaXMgZGly
ZWN0b3J5OgorCitgYGAKKyQgY2QgYW5nbGUvCiskIGNwIC91c3IvYmluL2ZsZXguZXhlIFwKKyAg
ICAgL3Vzci9iaW4vYmlzb24uZXhlIFwKKyAgICAgL3Vzci9iaW4vbTQuZXhlIFwKKyAgICAgL3Vz
ci9iaW4vbXN5cy1pbnRsLTguZGxsIFwKKyAgICAgL3Vzci9iaW4vbXN5cy1pY29udi0yLmRsbCBc
CisgICAgIC91c3IvYmluL21zeXMtMi4wLmRsbCBcCisgICAgIHRvb2xzL2ZsZXgtYmlzb24vd2lu
ZG93cy8KK2BgYAorCitVcGxvYWQgdGhlIGJpbmFyaWVzOgorCitgYGAKKyQgY2QgYW5nbGUvCisk
IHB5dGhvbiB0b29scy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5Citg
YGAKKworIyMjIE9uIExpbnV4CisKK2BgYAorIyBHZXQgdGhlIHNvdXJjZSBvZiBmbGV4CiskIGdp
dCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXguZ2l0CiskIGNkIGZsZXgvCisj
IENoZWNrb3V0IHRoZSBzYW1lIHZlcnNpb24gYXMgbXN5czIgb24gd2luZG93cworJCBnaXQgY2hl
Y2tvdXQgdjIuNi40CisjIEJ1aWxkCiskIGF1dG9yZWNvbmYgLWkKKyQgbWtkaXIgYnVpbGQgJiYg
Y2QgYnVpbGQKKyQgLi4vY29uZmlndXJlIENGTEFHUz0iLU8yIC1EX0dOVV9TT1VSQ0UiCiskIG1h
a2UgLWoKK2BgYAorCitgYGAKKyMgR2V0IHRoZSBzb3VyY2Ugb2YgYmlzb24KKyQgY3VybCBodHRw
Oi8vZnRwLmdudS5vcmcvZ251L2Jpc29uL2Jpc29uLTMuMy4yLnRhci54eiB8IHRhciAteEoKKyQg
Y2QgYmlzb24tMy4zLjIKKyMgQnVpbGQKKyQgbWtkaXIgYnVpbGQgJiYgY2QgYnVpbGQKKyQgLi4v
Y29uZmlndXJlIENGTEFHUz0iLU8yIgorJCBtYWtlIC1qCitgYGAKKworTm90ZTogQmlzb24ncyBb
aG9tZSBwYWdlXVtCaXNvbl0gbGlzdHMgZnRwIHNlcnZlciBhbmQgb3RoZXIgbWlycm9ycy4gIElm
IHRoZQorYWJvdmUgbGluayBpcyBicm9rZW4sIHJlcGxhY2Ugd2l0aCBhIG1pcnJvci4KKworQ29w
eSB0aGUgMiBleGVjdXRhYmxlcyB0byB0aGlzIGRpcmVjdG9yeToKKworYGBgCiskIGNkIGFuZ2xl
LworJCBjcCAvcGF0aC90by9mbGV4L2J1aWxkL3NyYy9mbGV4IFwKKyAgICAgL3BhdGgvdG8vYmlz
b24vYnVpbGQvc3JjL2Jpc29uIFwKKyAgICAgdG9vbHMvZmxleC1iaXNvbi9saW51eC8KK2BgYAor
CitVcGxvYWQgdGhlIGJpbmFyaWVzOgorCitgYGAKKyQgY2QgYW5nbGUvCiskIHB5dGhvbiB0b29s
cy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5CitgYGAKKworW0Jpc29u
XTogaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaXNvbi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vbGludXgvYmlzb24uc2hhMSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vbGludXgvYmlzb24uc2hhMQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jOTNkOTJkZTQxOTA5OGFlZTAxMjQzNmU2MGJkNjFjZDIzZWE1ZDUwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi9s
aW51eC9iaXNvbi5zaGExCkBAIC0wLDAgKzEgQEAKK2U2MjhiNzNjZDBhNzY3ZDkzZTFmOTRiNWE4
NmNlNTFjYTgzYzk5ZDUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL2xpbnV4L2ZsZXguc2hhMSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vbGludXgvZmxleC5zaGEx
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQzNDAwNDdjYTEyY2FkMDE1NmVjZDY2YjU5YmYzNzJjNDk0NzFkMDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29u
L2xpbnV4L2ZsZXguc2hhMQpAQCAtMCwwICsxIEBACitlODMwZTZjMDUwOGQ5Njg1ODc2ZTc3MzA0
YmJlN2M0YTEyMmMwOGU4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS8uZ2l0
YXR0cmlidXRlcyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhp
cmRfcGFydHkvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY4OGM4YTE0OTE1MjhjMjYzNDY2
NTVhNjQ0ODc2NTg2M2M4NDJkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvLmdpdGF0dHJpYnV0ZXMKQEAgLTAs
MCArMSBAQAorKiAgICAgICAgICAgICAgICAgICAgZW9sPWxmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvTElD
RU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFy
dHkvbTRzdWdhci9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MTE5MDVjMTY0N2ExZTMxMWU4YjIwZDU5
MzBhMzdhOWMyNTMxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvTElDRU5TRQpAQCAtMCwwICsx
LDMzOSBAQAorCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKwkJICAgICAgIFZlcnNp
b24gMiwgSnVuZSAxOTkxCisKKyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLAorIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBh
bmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQs
IGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworCQkJICAgIFByZWFtYmxlCisKKyAg
VGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkg
eW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIg
ZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKK3NvZnR3YXJlLS10byBtYWtlIHN1cmUg
dGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCitHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRh
dGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNv
bW1pdCB0bwordXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24g
c29mdHdhcmUgaXMgY292ZXJlZCBieQordGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KK3lvdXIgcHJvZ3JhbXMsIHRvby4K
KworICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8g
ZnJlZWRvbSwgbm90CitwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVz
aWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91CitoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1
dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCit0aGlzIHNlcnZpY2Ug
aWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQK
K2lmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2Ug
cGllY2VzIG9mIGl0CitpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91
IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVl
ZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAorYW55b25lIHRvIGRlbnkgeW91IHRo
ZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgorVGhlc2Ug
cmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlv
dSBpZiB5b3UKK2Rpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1v
ZGlmeSBpdC4KKworICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1
Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCitncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZl
IHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKK3lvdSBoYXZlLiAgWW91IG11c3Qg
bWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCitzb3VyY2Ug
Y29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRo
ZWlyCityaWdodHMuCisKKyAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczog
KDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAorKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vu
c2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKK2Rpc3RyaWJ1dGUg
YW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCisKKyAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3Mg
cHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KK3RoYXQgZXZlcnlv
bmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCitz
b2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5k
IHBhc3NlZCBvbiwgd2UKK3dhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhl
eSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCit0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1
Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAorYXV0aG9ycycg
cmVwdXRhdGlvbnMuCisKKyAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVk
IGNvbnN0YW50bHkgYnkgc29mdHdhcmUKK3BhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBk
YW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKK3Byb2dyYW0gd2lsbCBpbmRpdmlk
dWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUKK3Byb2dy
YW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0
aGF0IGFueQorcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ug
b3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KKworICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0
aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAorbW9kaWZpY2F0aW9uIGZvbGxvdy4K
KworCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgIFRFUk1TIEFORCBDT05ESVRJ
T05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgorCisgIDAuIFRo
aXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29u
dGFpbnMKK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQg
bWF5IGJlIGRpc3RyaWJ1dGVkCit1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCityZWZlcnMgdG8gYW55IHN1Y2ggcHJv
Z3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKK21lYW5zIGVp
dGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBs
YXc6Cit0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBw
b3J0aW9uIG9mIGl0LAorZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQv
b3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFu
c2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KK3RoZSB0ZXJtICJtb2Rp
ZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgorCitBY3Rp
dml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24g
YXJlIG5vdAorY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNj
b3BlLiAgVGhlIGFjdCBvZgorcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwg
YW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQoraXMgY292ZXJlZCBvbmx5IGlmIGl0cyBj
b250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0gKGluZGVwZW5k
ZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCitXaGV0aGVy
IHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKworICAxLiBZ
b3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFt
J3MKK3NvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRl
ZCB0aGF0IHlvdQorY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVh
Y2ggY29weSBhbiBhcHByb3ByaWF0ZQorY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBv
ZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQorbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRo
aXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OworYW5kIGdpdmUg
YW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5z
ZQorYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRo
ZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCit5b3UgbWF5IGF0IHlv
dXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVl
LgorCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dy
YW0gb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRo
ZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9y
IHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQg
eW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFlvdSBtdXN0
IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAg
IHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBj
aGFuZ2UuCisKKyAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmli
dXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9y
IGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKKyAgICBwYXJ0IHRoZXJlb2YsIHRv
IGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAorICAgIHBh
cnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGMpIElmIHRoZSBt
b2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKKyAg
ICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBz
dWNoCisgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJp
bnQgb3IgZGlzcGxheSBhbgorICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlh
dGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQorICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdh
cnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQorICAgIGEgd2FycmFudHkp
IGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKKyAgICB0
aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkg
b2YgdGhpcworICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYg
aXMgaW50ZXJhY3RpdmUgYnV0CisgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBh
bm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgorICAgIHRoZSBQcm9ncmFtIGlzIG5vdCBy
ZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQorCitUaGVzZSByZXF1aXJlbWVudHMg
YXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCitpZGVudGlmaWFibGUg
c2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAor
YW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRl
IHdvcmtzIGluCit0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywg
ZG8gbm90IGFwcGx5IHRvIHRob3NlCitzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0g
YXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2Vj
dGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAorb24gdGhlIFBy
b2dyYW0sIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1z
IG9mCit0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMg
ZXh0ZW5kIHRvIHRoZQorZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBw
YXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgorCitUaHVzLCBpdCBpcyBub3QgdGhlIGlu
dGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKK3lvdXIgcmln
aHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBp
cyB0bworZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBk
ZXJpdmF0aXZlIG9yCitjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgorCitJ
biBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9u
IHRoZSBQcm9ncmFtCit3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0
aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKK2Egc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVk
aXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCit0aGUgc2NvcGUgb2YgdGhp
cyBMaWNlbnNlLgorCisgIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3Jh
bSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAordW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29k
ZSBvciBleGVjdXRhYmxlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mCitTZWN0aW9ucyAxIGFuZCAy
IGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisK
KyAgICBhKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNo
aW5lLXJlYWRhYmxlCisgICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQg
dW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCisgICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1
bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBi
KSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0
aHJlZQorICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5v
IG1vcmUgdGhhbiB5b3VyCisgICAgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgc291cmNl
IGRpc3RyaWJ1dGlvbiwgYSBjb21wbGV0ZQorICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0
aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKKyAgICBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQorICAgIGN1
c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKKworICAgIGMpIEFj
Y29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9m
ZmVyCisgICAgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLiAgKFRoaXMg
YWx0ZXJuYXRpdmUgaXMKKyAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJp
YnV0aW9uIGFuZCBvbmx5IGlmIHlvdQorICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVj
dCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKKyAgICBhbiBvZmZlciwgaW4gYWNj
b3JkIHdpdGggU3Vic2VjdGlvbiBiIGFib3ZlLikKKworVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdv
cmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgorbWFraW5nIG1vZGlm
aWNhdGlvbnMgdG8gaXQuICBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBjb21wbGV0ZSBzb3VyY2UK
K2NvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFp
bnMsIHBsdXMgYW55Cithc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVz
IHRoZSBzY3JpcHRzIHVzZWQgdG8KK2NvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlv
biBvZiB0aGUgZXhlY3V0YWJsZS4gIEhvd2V2ZXIsIGFzIGEKK3NwZWNpYWwgZXhjZXB0aW9uLCB0
aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQorYW55dGhpbmcgdGhh
dCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKK2Zv
cm0pIHdpdGggdGhlIG1ham9yIGNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBv
bikgb2YgdGhlCitvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMs
IHVubGVzcyB0aGF0IGNvbXBvbmVudAoraXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxl
LgorCitJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRl
IGJ5IG9mZmVyaW5nCithY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhl
biBvZmZlcmluZyBlcXVpdmFsZW50CithY2Nlc3MgdG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJv
bSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMKK2Rpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNv
ZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdAorY29tcGVsbGVkIHRvIGNvcHkg
dGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KKworICA0LiBZb3UgbWF5IG5v
dCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KK2V4
Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVt
cHQKK290aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0
aGUgUHJvZ3JhbSBpcwordm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91
ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgorSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSBy
ZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKK3RoaXMgTGljZW5zZSB3
aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCitw
YXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCisKKyAgNS4gWW91IGFyZSBub3QgcmVx
dWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CitzaWduZWQg
aXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlm
eSBvcgorZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRo
ZXNlIGFjdGlvbnMgYXJlCitwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0
aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cittb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRo
ZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB5b3UgaW5kaWNh
dGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCithbGwgaXRz
IHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5
aW5nCit0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KKworICA2LiBFYWNoIHRpbWUg
eW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitQ
cm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBm
cm9tIHRoZQorb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkg
dGhlIFByb2dyYW0gc3ViamVjdCB0bwordGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3Ug
bWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKK3Jlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50
cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KK1lvdSBhcmUgbm90IHJl
c3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCit0
aGlzIExpY2Vuc2UuCisKKyAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRn
bWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAoraW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3Ro
ZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwKK2NvbmRpdGlvbnMgYXJl
IGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKK290
aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwg
dGhleSBkbyBub3QKK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vu
c2UuICBJZiB5b3UgY2Fubm90CitkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5l
b3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitMaWNlbnNlIGFuZCBhbnkgb3RoZXIg
cGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91CittYXkgbm90
IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50
CitsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9m
IHRoZSBQcm9ncmFtIGJ5CithbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9y
IGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KK3RoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0
aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KK3JlZnJhaW4gZW50aXJl
bHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCisKK0lmIGFueSBwb3J0aW9uIG9m
IHRoaXMgc2VjdGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgorYW55
IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBp
bnRlbmRlZCB0bworYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQg
dG8gYXBwbHkgaW4gb3RoZXIKK2NpcmN1bXN0YW5jZXMuCisKK0l0IGlzIG5vdCB0aGUgcHVycG9z
ZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKK3BhdGVudHMg
b3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2Yg
YW55CitzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHBy
b3RlY3RpbmcgdGhlCitpbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9u
IHN5c3RlbSwgd2hpY2ggaXMKK2ltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNl
cy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQorZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUg
d2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAordGhyb3VnaCB0aGF0IHN5c3RlbSBp
biByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKK3N5c3RlbTsgaXQg
aXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxp
bmcKK3RvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBh
IGxpY2Vuc2VlIGNhbm5vdAoraW1wb3NlIHRoYXQgY2hvaWNlLgorCitUaGlzIHNlY3Rpb24gaXMg
aW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KK2Jl
IGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgorCisgIDguIElmIHRo
ZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGlu
CitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBp
bnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUg
UHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKK21heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhp
Y2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwordGhvc2UgY291bnRyaWVzLCBz
byB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZworY291bnRy
aWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jw
b3JhdGVzCit0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMg
TGljZW5zZS4KKworICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNo
IHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucworb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCitiZSBzaW1pbGFy
IGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRh
aWwgdG8KK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCitFYWNoIHZlcnNpb24g
aXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFt
CitzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGll
cyB0byBpdCBhbmQgImFueQorbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2Yg
Zm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworZWl0aGVyIG9mIHRoYXQgdmVyc2lv
biBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJl
IEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBu
dW1iZXIgb2YKK3RoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uCisKKyAgMTAuIElmIHlv
dSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJl
ZQorcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwg
d3JpdGUgdG8gdGhlIGF1dGhvcgordG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJl
IHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKK21ha2Ug
ZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUg
dHdvIGdvYWxzCitvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2
ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCitvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5k
IHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KKworCQkJICAgIE5PIFdBUlJBTlRZCisKKyAg
MTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJF
IElTIE5PIFdBUlJBTlRZCitGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVE
IEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KK09USEVSV0lTRSBTVEFURUQgSU4gV1JJ
VElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKK1BST1ZJREUg
VEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIg
RVhQUkVTU0VECitPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUworVE8gVEhFIFFVQUxJVFkg
QU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQor
UFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VT
U0FSWSBTRVJWSUNJTkcsCitSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxMi4gSU4gTk8gRVZF
TlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklU
SU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1B
WSBNT0RJRlkgQU5EL09SCitSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFC
T1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLAorSU5DTFVESU5HIEFOWSBHRU5FUkFM
LCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCitP
VVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcg
QlVUIE5PVCBMSU1JVEVECitUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJ
TkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9S
IEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCitQUk9H
UkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNF
RCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KKworCQkgICAgIEVORCBPRiBU
RVJNUyBBTkQgQ09ORElUSU9OUworCisJICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZ
b3VyIE5ldyBQcm9ncmFtcworCisgIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5
b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKK3Bvc3NpYmxlIHVzZSB0byB0aGUgcHVi
bGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKK2ZyZWUgc29m
dHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRo
ZXNlIHRlcm1zLgorCisgIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRv
IHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0Cit0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQg
b2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5Citjb252ZXkgdGhlIGV4Y2x1
c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAordGhl
ICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2Ug
aXMgZm91bmQuCisKKyAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5k
IGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgorICAgIENvcHlyaWdodCAoQykgPHllYXI+
ICA8bmFtZSBvZiBhdXRob3I+CisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgICAgd2l0aCB0
aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwKKyAgICA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
IDAyMTEwLTEzMDEgVVNBLgorCitBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFj
dCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KKworSWYgdGhlIHByb2dyYW0gaXMg
aW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcword2hl
biBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKKworICAgIEdub21vdmlzaW9uIHZl
cnNpb24gNjksIENvcHlyaWdodCAoQykgeWVhciBuYW1lIG9mIGF1dGhvcgorICAgIEdub21vdmlz
aW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBg
c2hvdyB3Jy4KKyAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUg
dG8gcmVkaXN0cmlidXRlIGl0CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBz
aG93IGMnIGZvciBkZXRhaWxzLgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcn
IGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBt
YXkKK2JlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7
IHRoZXkgY291bGQgZXZlbiBiZQorbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVy
IHN1aXRzIHlvdXIgcHJvZ3JhbS4KKworWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVy
IChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKK3NjaG9vbCwgaWYgYW55LCB0
byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmCituZWNl
c3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CisKKyAgWW95b2R5bmUs
IEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJv
Z3JhbQorICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3
cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KKworICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFw
cmlsIDE5ODkKKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKKworVGhpcyBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBp
bnRvCitwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRp
bmUgbGlicmFyeSwgeW91IG1heQorY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxp
bmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCitsaWJyYXJ5LiAgSWYgdGhp
cyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbAorUHVi
bGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvUkVB
RE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90
aGlyZF9wYXJ0eS9tNHN1Z2FyL1JFQURNRS5jaHJvbWl1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjBhNWZkNGZk
YzkyN2NmODY2YTM2MjFkNTNlMDFiN2Y2ZWUwM2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9tNHN1Z2FyL1JF
QURNRS5jaHJvbWl1bQpAQCAtMCwwICsxLDExIEBACitOYW1lOiBBdXRvY29uZiBNNCBtYWNyb3Mg
dXNlZCBieSBCaXNvbgorU2hvcnQgTmFtZTogbTRzdWdhcgorVVJMOiBodHRwczovL3d3dy5nbnUu
b3JnL3NvZnR3YXJlL2F1dG9jb25mLworVmVyc2lvbjogdW5rbm93bgorTGljZW5zZTogR1BMCitM
aWNlbnNlIEZpbGU6IExJQ0VOU0UKK1NlY3VyaXR5IGNyaXRpY2FsOiBubworCitEZXNjcmlwdGlv
bjoKK0Jpc29uIHVzZXMgTTQgdG8gZ2VuZXJhdGUgaXRzIG91dHB1dCwgYW5kIHVzZXMgdGhlIHV0
aWxpdHkgTTQgbWFjcm9zIGluIHRoaXMKK2RpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9mb3Jl
YWNoLm00IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9w
YXJ0eS9tNHN1Z2FyL2ZvcmVhY2gubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5M2QwZmNjNGU4NThhOTk3YmU1
NzA5NGRkZjVkZjdkNDEwMzcxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRzdWdhci9mb3JlYWNoLm00CkBA
IC0wLDAgKzEsMzYyIEBACisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEF1dG9j
b25mLgorIyBmb3JlYWNoLWJhc2VkIHJlcGxhY2VtZW50cyBmb3IgcmVjdXJzaXZlIGZ1bmN0aW9u
cy4KKyMgU3BlZWRzIHVwIEdOVSBNNCAxLjQueCBieSBhdm9pZGluZyBxdWFkcmF0aWMgJEAgcmVj
dXJzaW9uLCBidXQgcGVuYWxpemVzCisjIEdOVSBNNCAxLjYgYnkgcmVxdWlyaW5nIG1vcmUgbWVt
b3J5IGFuZCBtYWNybyBleHBhbnNpb25zLgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBB
dXRvY29uZi4gIFRoaXMgcHJvZ3JhbSBpcyBmcmVlCisjIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorIyB0ZXJtcyBvZiB0aGUgR05V
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj
CisjIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRk
aXRpb25hbAorIyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEF1dG9jb25mIENvbmZpZ3Vy
ZSBTY3JpcHQgRXhjZXB0aW9uLAorIyB2ZXJzaW9uIDMuMCwgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFuZCBhIGNvcHkgb2Yg
dGhlIEF1dG9jb25mIENvbmZpZ3VyZSBTY3JpcHQgRXhjZXB0aW9uIGFsb25nIHdpdGgKKyMgdGhp
cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGVzIENPUFlJTkd2MyBhbmQgQ09QWUlORy5FWENFUFRJT04K
KyMgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z
ZXMvPi4KKworIyBXcml0dGVuIGJ5IEVyaWMgQmxha2UuCisKKyMgSW4gTTQgMS40LngsIGV2ZXJ5
IGJ5dGUgb2YgJEAgaXMgcmVzY2FubmVkLiAgVGhpcyBtZWFucyB0aGF0IGFuCisjIGFsZ29yaXRo
bSBvbiBuIGFyZ3VtZW50cyB0aGF0IHJlY3Vyc2VzIHdpdGggb25lIGxlc3MgYXJndW1lbnQgZWFj
aAorIyBpdGVyYXRpb24gd2lsbCBzY2FuIG4gKiAobiArIDEpIC8gMiBhcmd1bWVudHMsIGZvciBP
KG5eMikgdGltZS4gIEluCisjIE00IDEuNiwgdGhpcyB3YXMgZml4ZWQgc28gdGhhdCAkQCBpcyBv
bmx5IHNjYW5uZWQgb25jZSwgdGhlbgorIyBiYWNrLXJlZmVyZW5jZXMgYXJlIG1hZGUgdG8gaW5m
b3JtYXRpb24gc3RvcmVkIGFib3V0IHRoZSBzY2FuLgorIyBUaHVzLCBuIGl0ZXJhdGlvbnMgbmVl
ZCBvbmx5IHNjYW4gbiBhcmd1bWVudHMsIGZvciBPKG4pIHRpbWUuCisjIEFkZGl0aW9uYWxseSwg
aW4gTTQgMS40LngsIHJlY3Vyc2l2ZSBhbGdvcml0aG1zIGRpZCBub3QgY2xlYW4gdXAKKyMgbWVt
b3J5IHZlcnkgd2VsbCwgcmVxdWlyaW5nIE8obl4yKSBtZW1vcnkgcmF0aGVyIHRoYW4gTyhuKSBm
b3IgbgorIyBpdGVyYXRpb25zLgorIworIyBUaGlzIGZpbGUgaXMgZGVzaWduZWQgdG8gb3ZlcmNv
bWUgdGhlIHF1YWRyYXRpYyBuYXR1cmUgb2YgJEAKKyMgcmVjdXJzaW9uIGJ5IHdyaXRpbmcgYSB2
YXJpYW50IG9mIG00X2ZvcmVhY2ggdGhhdCB1c2VzIG00X2ZvciByYXRoZXIKKyMgdGhhbiAkQCBy
ZWN1cnNpb24gdG8gb3BlcmF0ZSBvbiB0aGUgbGlzdC4gIFRoaXMgaW52b2x2ZXMgbW9yZSBtYWNy
bworIyBleHBhbnNpb25zLCBidXQgYXZvaWRzIHRoZSBuZWVkIHRvIHJlc2NhbiBhIHF1YWRyYXRp
YyBudW1iZXIgb2YKKyMgYXJndW1lbnRzLCBtYWtpbmcgdGhlc2UgcmVwbGFjZW1lbnRzIHZlcnkg
YXR0cmFjdGl2ZSBmb3IgTTQgMS40LnguCisjIE9uIHRoZSBvdGhlciBoYW5kLCBpbiBhbnkgdmVy
c2lvbiBvZiBNNCwgZXhwYW5kaW5nIGFkZGl0aW9uYWwgbWFjcm9zCisjIGNvc3RzIGFkZGl0aW9u
YWwgdGltZTsgdGhlcmVmb3JlLCBpbiBNNCAxLjYsIHdoZXJlICRAIHJlY3Vyc2lvbiB1c2VzCisj
IGZld2VyIG1hY3JvcywgdGhlc2UgcmVwbGFjZW1lbnRzIGFjdHVhbGx5IHBlc3NpbWl6ZSBwZXJm
b3JtYW5jZS4KKyMgQWRkaXRpb25hbGx5LCB0aGUgdXNlIG9mICQxMCB0byBtZWFuIHRoZSB0ZW50
aCBhcmd1bWVudCB2aW9sYXRlcworIyBQT1NJWDsgYWx0aG91Z2ggYWxsIHZlcnNpb25zIG9mIG00
IDEuNC54IHN1cHBvcnQgdGhpcyBtZWFuaW5nLCBhCisjIGZ1dHVyZSBtNCB2ZXJzaW9uIG1heSBz
d2l0Y2ggdG8gdGFrZSBpdCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKyMgY29uY2F0ZW5hdGVkIHdp
dGggYSBsaXRlcmFsIDAsIHNvIHRoZSBpbXBsZW1lbnRhdGlvbnMgaW4gdGhpcyBmaWxlCisjIGFy
ZSBub3QgZnV0dXJlLXByb29mLiAgVGh1cywgdGhpcyBmaWxlIGlzIGNvbmRpdGlvbmFsbHkgaW5j
bHVkZWQgYXMKKyMgcGFydCBvZiBtNF9pbml0KCksIG9ubHkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0
aGF0IE00IHByb2JhYmx5IGhhcworIyBxdWFkcmF0aWMgYmVoYXZpb3IgKGllLiBpdCBsYWNrcyB0
aGUgbWFjcm8gX19tNF92ZXJzaW9uX18pLgorIworIyBQbGVhc2Uga2VlcCB0aGlzIGZpbGUgaW4g
c3luYyB3aXRoIG00c3VnYXIubTQuCisKKyMgX200X2ZvcmVhY2goUFJFLCBQT1NULCBJR05PUkVE
LCBBUkcuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBG
b3JtIHRoZSBjb21tb24gYmFzaXMgb2YgdGhlIG00X2ZvcmVhY2ggYW5kIG00X21hcCBtYWNyb3Mu
ICBGb3IgZWFjaAorIyBBUkcsIGV4cGFuZCBQUkVbQVJHXVBPU1RbXS4gIFRoZSBJR05PUkVEIGFy
Z3VtZW50IG1ha2VzIHJlY3Vyc2lvbgorIyBlYXNpZXIsIGFuZCBtdXN0IGJlIHN1cHBsaWVkIHJh
dGhlciB0aGFuIGltcGxpY2l0LgorIworIyBUaGlzIHZlcnNpb24gbWluaW1pemVzIHRoZSBudW1i
ZXIgb2YgdGltZXMgdGhhdCAkQCBpcyBldmFsdWF0ZWQgYnkKKyMgdXNpbmcgbTRfZm9yIHRvIGdl
bmVyYXRlIGEgYm9pbGVycGxhdGUgaW50byBfbTRfZiB0aGVuIHBhc3NpbmcgJEAgdG8KKyMgdGhh
dCB0ZW1wb3JhcnkgbWFjcm8uICBUaHVzLCB0aGUgcmVjdXJzaW9uIGlzIGRvbmUgaW4gbTRfZm9y
IHdpdGhvdXQKKyMgcmVwYXJzaW5nIGFueSB1c2VyIGlucHV0LCBhbmQgaXMgbm90IHF1YWRyYXRp
Yy4gIEZvciBhbiBpZGVhIG9mIGhvdworIyB0aGlzIHdvcmtzLCBub3RlIHRoYXQgbTRfZm9yZWFj
aChpLFsxLDJdLFtpXSkgY2FsbHMKKyMgICBfbTRfZm9yZWFjaChbbTRfZGVmaW5lKFtpXSxdLFsp
aV0sW10sWzFdLFsyXSkKKyMgd2hpY2ggZGVmaW5lcyBfbTRfZjoKKyMgICAkMVskNF0kMltdJDFb
JDVdJDJbXV9tNF9wb3BkZWYoW19tNF9mXSkKKyMgdGhlbiBjYWxscyBfbTRfZihbbTRfZGVmaW5l
KFtpXSxdLFspaV0sW10sWzFdLFsyXSkgZm9yIGEgbmV0IHJlc3VsdDoKKyMgICBtNF9kZWZpbmUo
W2ldLFsxXSlpW11tNF9kZWZpbmUoW2ldLFsyXSlpW11fbTRfcG9wZGVmKFtfbTRfZl0pLgorbTRf
ZGVmaW5lKFtfbTRfZm9yZWFjaF0sCitbbTRfaWYoWyQjXSwgWzNdLCBbXSwKKyAgICAgICBbbTRf
cHVzaGRlZihbX200X2ZdLCBfbTRfZm9yKFs0XSwgWyQjXSwgWzFdLAorICAgWyQwXyhbMV0sIFsy
XSxdLCBbKV0pW19tNF9wb3BkZWYoW19tNF9mXSldKV9tNF9mKCRAKV0pXSkKKworbTRfZGVmaW5l
KFtfbTRfZm9yZWFjaF9dLAorW1skJDFbJCQzXSQkMltdXV0pCisKKyMgbTRfY2FzZShTV0lUQ0gs
IFZBTDEsIElGLVZBTDEsIFZBTDIsIElGLVZBTDIsIC4uLiwgREVGQVVMVCkKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRmlu
ZCB0aGUgZmlyc3QgVkFMIHRoYXQgU1dJVENIIG1hdGNoZXMsIGFuZCBleHBhbmQgdGhlIGNvcnJl
c3BvbmRpbmcKKyMgSUYtVkFMLiAgSWYgdGhlcmUgYXJlIG5vIG1hdGNoZXMsIGV4cGFuZCBERUZB
VUxULgorIworIyBVc2UgbTRfZm9yIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBtYWNybyBpbiB0ZXJt
cyBvZiBhIGJvaWxlcnBsYXRlCisjIG00X2lmIHdpdGggZmluYWwgY2xlYW51cC4gIElmICQjIGlz
IGV2ZW4sIHdlIGhhdmUgREVGQVVMVDsgaWYgaXQgaXMKKyMgb2RkLCB0aGVuIHJvdW5kaW5nIHRo
ZSBsYXN0ICQjIHVwIGluIHRoZSB0ZW1wb3JhcnkgbWFjcm8gaXMKKyMgaGFybWxlc3MuICBGb3Ig
ZXhhbXBsZSwgYm90aCBtNF9jYXNlKDEsMiwzLDQsNSkgYW5kCisjIG00X2Nhc2UoMSwyLDMsNCw1
LDYpIHJlc3VsdCBpbiB0aGUgaW50ZXJtZWRpYXRlIF9tNF9jYXNlIGJlaW5nCisjICAgbTRfaWYo
WyQxXSxbJDJdLFskM10sWyQxXSxbJDRdLFskNV0sX200X3BvcGRlZihbX200X2Nhc2VdKVskNl0p
CittNF9kZWZpbmUoW200X2Nhc2VdLAorW200X2lmKG00X2V2YWwoWyQjIDw9IDJdKSwgWzFdLCBb
JDJdLAorW200X3B1c2hkZWYoW18kMF0sIFttNF9pZihdX200X2ZvcihbMl0sIG00X2V2YWwoWygk
IyAtIDEpIC8gMiAqIDJdKSwgWzJdLAorICAgICBbXyQwXyhdLCBbKV0pW19tNF9wb3BkZWYoCisJ
IFtfJDBdKV1tNF9kcXVvdGUoJG00X2V2YWwoWygkIyArIDEpICYgfjFdKSlbKV0pXyQwKCRAKV0p
XSkKKworbTRfZGVmaW5lKFtfbTRfY2FzZV9dLAorWyQwXyhbMV0sIFskMV0sIG00X2luY3IoWyQx
XSkpXSkKKworbTRfZGVmaW5lKFtfbTRfY2FzZV9fXSwKK1tbWyQkMV0sWyQkMl0sWyQkM10sXV0p
CisKKyMgbTRfYm1hdGNoKFNXSVRDSCwgUkUxLCBWQUwxLCBSRTIsIFZBTDIsIC4uLiwgREVGQVVM
VCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKyMgbTQgZXF1aXZhbGVudCBvZgorIworIyBpZiAoU1dJVENIID1+IFJFMSkKKyMgICBWQUwx
OworIyBlbGlmIChTV0lUQ0ggPX4gUkUyKQorIyAgIFZBTDI7CisjIGVsaWYgLi4uCisjICAgLi4u
CisjIGVsc2UKKyMgICBERUZBVUxUCisjCisjIFdlIGJ1aWxkIHRoZSB0ZW1wb3JhcnkgbWFjcm8g
X200X2I6CisjICAgbTRfZGVmaW5lKFtfbTRfYl0sIF9tNF9kZWZuKFtfbTRfYm1hdGNoXSkpX200
X2IoWyQxXSwgWyQyXSwgWyQzXSkuLi4KKyMgICBfbTRfYihbJDFdLCBbJG0tMV0sIFskbV0pX200
X2IoW10sIFtdLCBbJG0rMV1fbTRfcG9wZGVmKFtfbTRfYl0pKQorIyB0aGVuIGludm9rZSBtNF91
bnF1b3RlKF9tNF9iKCRAKSksIGZvciBjb25jYXRlbmF0aW9uIHdpdGggbGF0ZXIgdGV4dC4KK200
X2RlZmluZShbbTRfYm1hdGNoXSwKK1ttNF9pZihbJCNdLCAwLCBbbTRfZmF0YWwoWyQwOiB0b28g
ZmV3IGFyZ3VtZW50czogJCNdKV0sCisgICAgICAgWyQjXSwgMSwgW200X2ZhdGFsKFskMDogdG9v
IGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKKyAgICAgICBbJCNdLCAyLCBbJDJdLAorICAgICAg
IFttNF9wdXNoZGVmKFtfbTRfYl0sIFttNF9kZWZpbmUoW19tNF9iXSwKKyAgX200X2RlZm4oW18k
MF0pKV1fbTRfZm9yKFszXSwgbTRfZXZhbChbKCQjICsgMSkgLyAyICogMiAtIDFdKSwKKyAgWzJd
LCBbXyQwXyhdLCBbKV0pW19tNF9iKFtdLCBbXSxdbTRfZHF1b3RlKFskXW00X2V2YWwoCisgIFso
JCMgKyAxKSAvIDIgKiAyXSkpW19tNF9wb3BkZWYoW19tNF9iXSkpXSltNF91bnF1b3RlKF9tNF9i
KCRAKSldKV0pCisKK200X2RlZmluZShbX200X2JtYXRjaF0sCitbbTRfaWYobTRfYnJlZ2V4cChb
JDFdLCBbJDJdKSwgWy0xXSwgW10sIFtbJDNdbTRfZGVmaW5lKFskMF0pXSldKQorCittNF9kZWZp
bmUoW19tNF9ibWF0Y2hfXSwKK1skMF8oWzFdLCBtNF9kZWNyKFskMV0pLCBbJDFdKV0pCisKK200
X2RlZmluZShbX200X2JtYXRjaF9fXSwKK1tbX200X2IoWyQkMV0sIFskJDJdLCBbJCQzXSldXSkK
KworCisjIG00X2NvbmQoVEVTVDEsIFZBTDEsIElGLVZBTDEsIFRFU1QyLCBWQUwyLCBJRi1WQUwy
LCAuLi4sIFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTaW1pbGFyIHRvIG00X2lmLCBleGNl
cHQgdGhhdCBlYWNoIFRFU1QgaXMgZXhwYW5kZWQgd2hlbiBlbmNvdW50ZXJlZC4KKyMgSWYgdGhl
IGV4cGFuc2lvbiBvZiBURVNUbiBtYXRjaGVzIHRoZSBzdHJpbmcgVkFMbiwgdGhlIHJlc3VsdCBp
cyBJRi1WQUxuLgorIyBUaGUgcmVzdWx0IGlzIERFRkFVTFQgaWYgbm8gdGVzdHMgcGFzc2VkLiAg
VGhpcyBtYWNybyBhbGxvd3MKKyMgc2hvcnQtY2lyY3VpdGluZyBvZiBleHBlbnNpdmUgdGVzdHMs
IHdoZXJlIGl0IHBheXMgdG8gYXJyYW5nZSBxdWljaworIyBmaWx0ZXIgdGVzdHMgdG8gcnVuIGZp
cnN0LgorIworIyBtNF9jb25kIGFscmVhZHkgZ3VhcmFudGVlcyBlaXRoZXIgMypuIG9yIDMqbiAr
IDEgYXJndW1lbnRzLCAxIDw9IG4uCisjIFdlIG9ubHkgaGF2ZSB0byBzcGVlZCB1cCBfbTRfY29u
ZCwgYnkgYnVpbGRpbmcgdGhlIHRlbXBvcmFyeSBfbTRfYzoKKyMgICBtNF9kZWZpbmUoW19tNF9j
XSwgX200X2RlZm4oW200X3VucXVvdGVdKSlfbTRfYyhbbTRfaWYoKCQxKSwgWygkMildLAorIyAg
IFtbJDNdbTRfZGVmaW5lKFtfbTRfY10pXSldKV9tNF9jKFttNF9pZigoJDQpLCBbKCQ1KV0sCisj
ICAgW1skNl1tNF9kZWZpbmUoW19tNF9jXSldKV0pLi4uX200X2MoW200X2lmKCgkbS0yKSwgWygk
bS0xKV0sCisjICAgW1skbV1tNF9kZWZpbmUoW19tNF9jXSldKV0pX200X2MoW1skbSsxXV1fbTRf
cG9wZGVmKFtfbTRfY10pKQorIyBXZSBpbnZva2UgbTRfdW5xdW90ZShfbTRfYygkQCkpLCBmb3Ig
Y29uY2F0ZW5hdGlvbiB3aXRoIGxhdGVyIHRleHQuCittNF9kZWZpbmUoW19tNF9jb25kXSwKK1tt
NF9wdXNoZGVmKFtfbTRfY10sIFttNF9kZWZpbmUoW19tNF9jXSwKKyAgX200X2RlZm4oW200X3Vu
cXVvdGVdKSldX200X2ZvcihbMl0sIG00X2V2YWwoWyQjIC8gMyAqIDMgLSAxXSksIFszXSwKKyAg
WyQwXyhdLCBbKV0pW19tNF9jKF1tNF9kcXVvdGUobTRfZHF1b3RlKAorICBbJF1tNF9ldmFsKFsk
IyAvIDMgKiAzICsgMV0pKSlbX200X3BvcGRlZihbX200X2NdKSldKW00X3VucXVvdGUoX200X2Mo
JEApKV0pCisKK200X2RlZmluZShbX200X2NvbmRfXSwKK1skMF8obTRfZGVjcihbJDFdKSwgWyQx
XSwgbTRfaW5jcihbJDFdKSldKQorCittNF9kZWZpbmUoW19tNF9jb25kX19dLAorW1tfbTRfYyhb
bTRfaWYoKCQkMSksIFsoJCQyKV0sIFtbJCQzXW00X2RlZmluZShbX200X2NdKV0pXSldXSkKKwor
IyBtNF9icGF0c3Vic3RzKFNUUklORywgUkUxLCBTVUJTVDEsIFJFMiwgU1VCU1QyLCAuLi4pCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
bTQgZXF1aXZhbGVudCBvZgorIworIyAgICRfID0gU1RSSU5HOworIyAgIHMvUkUxL1NVQlNUMS9n
OworIyAgIHMvUkUyL1NVQlNUMi9nOworIyAgIC4uLgorIworIyBtNF9icGF0c3Vic3RzIGFscmVh
ZHkgdmFsaWRhdGVkIGFuIG9kZCBudW1iZXIgb2YgYXJndW1lbnRzOyB3ZSBvbmx5CisjIG5lZWQg
dG8gc3BlZWQgdXAgX200X2JwYXRzdWJzdHMuICBUbyBhdm9pZCBuZXN0aW5nLCB3ZSBidWlsZCB0
aGUKKyMgdGVtcG9yYXJ5IF9tNF9wOgorIyAgIG00X2RlZmluZShbX200X3BdLCBbJDFdKW00X2Rl
ZmluZShbX200X3BdLAorIyAgIG00X2JwYXRzdWJzdChtNF9kcXVvdGUoX200X2RlZm4oW19tNF9w
XSkpLCBbJDJdLCBbJDNdKSltNF9kZWZpbmUoW19tNF9wXSwKKyMgICBtNF9icGF0c3Vic3QobTRf
ZHF1b3RlKF9tNF9kZWZuKFtfbTRfcF0pKSwgWyQ0XSwgWyQ1XSkpbTRfZGVmaW5lKFtfbTRfcF0s
Li4uCisjICAgbTRfYnBhdHN1YnN0KG00X2RxdW90ZShfbTRfZGVmbihbX200X3BdKSksIFskbS0x
XSwgWyRtXSkpbTRfdW5xdW90ZSgKKyMgICBfbTRfZGVmbihbX200X3BdKV9tNF9wb3BkZWYoW19t
NF9wXSkpCittNF9kZWZpbmUoW19tNF9icGF0c3Vic3RzXSwKK1ttNF9wdXNoZGVmKFtfbTRfcF0s
IFttNF9kZWZpbmUoW19tNF9wXSwKKyAgXW00X2RxdW90ZShbJF0xKVspXV9tNF9mb3IoWzNdLCBb
JCNdLCBbMl0sIFskMF8oXSwKKyAgWyldKVttNF91bnF1b3RlKF9tNF9kZWZuKFtfbTRfcF0pX200
X3BvcGRlZihbX200X3BdKSldKV9tNF9wKCRAKV0pCisKK200X2RlZmluZShbX200X2JwYXRzdWJz
dHNfXSwKK1skMF8obTRfZGVjcihbJDFdKSwgWyQxXSldKQorCittNF9kZWZpbmUoW19tNF9icGF0
c3Vic3RzX19dLAorW1ttNF9kZWZpbmUoW19tNF9wXSwKK200X2JwYXRzdWJzdChtNF9kcXVvdGUo
X200X2RlZm4oW19tNF9wXSkpLCBbJCQxXSwgWyQkMl0pKV1dKQorCisjIG00X3NoaWZ0bihOLCAu
Li4pCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybnMgLi4uIHNoaWZ0ZWQgTiB0aW1lcy4g
IFVzZWZ1bCBmb3IgcmVjdXJzaXZlICJ2YXJhcmdzIiBjb25zdHJ1Y3RzLgorIworIyBtNF9zaGlm
dG4gYWxyZWFkeSB2YWxpZGF0ZWQgYXJndW1lbnRzOyB3ZSBvbmx5IG5lZWQgdG8gc3BlZWQgdXAK
KyMgX200X3NoaWZ0bi4gIElmIE4gaXMgMywgdGhlbiB3ZSBidWlsZCB0aGUgdGVtcG9yYXJ5IF9t
NF9zLCBkZWZpbmVkIGFzCisjICAgLFskNV0sWyQ2XSwuLi4sWyRtXV9tNF9wb3BkZWYoW19tNF9z
XSkKKyMgYmVmb3JlIGNhbGxpbmcgbTRfc2hpZnQoX200X3MoJEApKS4KK200X2RlZmluZShbX200
X3NoaWZ0bl0sCitbbTRfaWYobTRfaW5jcihbJDFdKSwgWyQjXSwgW10sIFttNF9wdXNoZGVmKFtf
bTRfc10sCisgIF9tNF9mb3IobTRfZXZhbChbJDEgKyAyXSksIFskI10sIFsxXSwKKyAgW1ssXW00
X2RxdW90ZSgkXSwgWyldKVtfbTRfcG9wZGVmKFtfbTRfc10pXSltNF9zaGlmdChfbTRfcygkQCkp
XSldKQorCisjIG00X2RvKFNUUklORywgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhp
cyBtYWNybyBpbnZva2VzIGFsbCBpdHMgYXJndW1lbnRzIChpbiBzZXF1ZW5jZSwgb2YgY291cnNl
KS4gIEl0IGlzCisjIHVzZWZ1bCBmb3IgbWFraW5nIHlvdXIgbWFjcm9zIG1vcmUgc3RydWN0dXJl
ZCBhbmQgcmVhZGFibGUgYnkgZHJvcHBpbmcKKyMgdW5uZWNlc3NhcnkgZG5sJ3MgYW5kIGhhdmUg
dGhlIG1hY3JvcyBpbmRlbnRlZCBwcm9wZXJseS4KKyMKKyMgSGVyZSwgd2UgdXNlIHRoZSB0ZW1w
b3JhcnkgbWFjcm8gX200X2RvLCBkZWZpbmVkIGFzCisjICAgJDFbXSQyW10uLi5bXSRuW11fbTRf
cG9wZGVmKFtfbTRfZG9dKQorbTRfZGVmaW5lKFttNF9kb10sCitbbTRfaWYoWyQjXSwgWzBdLCBb
XSwKKyAgICAgICBbbTRfcHVzaGRlZihbXyQwXSwgX200X2ZvcihbMV0sIFskI10sIFsxXSwKKwkJ
ICAgWyRdLCBbW1tdXV0pW19tNF9wb3BkZWYoW18kMF0pXSlfJDAoJEApXSldKQorCisjIG00X2Rx
dW90ZV9lbHQoQVJHUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gQVJHUyBhcyBh
biB1bnF1b3RlZCBsaXN0IG9mIGRvdWJsZS1xdW90ZWQgYXJndW1lbnRzLgorIworIyBfbTRfZm9y
ZWFjaCB0byB0aGUgcmVzY3VlLgorbTRfZGVmaW5lKFttNF9kcXVvdGVfZWx0XSwKK1ttNF9pZihb
JCNdLCBbMF0sIFtdLCBbW1skMV1dX200X2ZvcmVhY2goWyxtNF9kcXVvdGUoXSwgWyldLCAkQCld
KV0pCisKKyMgbTRfcmV2ZXJzZShBUkdTKQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCBB
UkdTIGluIHJldmVyc2Ugb3JkZXIuCisjCisjIEludm9rZSBfbTRfcigkQCkgd2l0aCB0aGUgdGVt
cG9yYXJ5IF9tNF9yIGJ1aWx0IGFzCisjICAgWyRtXSwgWyRtLTFdLCAuLi4sIFskMl0sIFskMV1f
bTRfcG9wZGVmKFtfbTRfcl0pCittNF9kZWZpbmUoW200X3JldmVyc2VdLAorW200X2lmKFskI10s
IFswXSwgW10sIFskI10sIFsxXSwgW1skMV1dLAorW200X3B1c2hkZWYoW19tNF9yXSwgW1skJCNd
XV9tNF9mb3IobTRfZGVjcihbJCNdKSwgWzFdLCBbLTFdLAorICAgIFtbLCBdbTRfZHF1b3RlKCRd
LCBbKV0pW19tNF9wb3BkZWYoW19tNF9yXSldKV9tNF9yKCRAKV0pXSkKKworCisjIG00X21hcF9h
cmdzX3BhaXIoRVhQUkVTU0lPTiwgW0VORC1FWFBSID0gRVhQUkVTU0lPTl0sIEFSRy4uLikKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBQZXJmb3JtIGEgcGFpcndpc2UgZ3JvdXBpbmcgb2YgY29uc2VjdXRpdmUgQVJHcywg
YnkgZXhwYW5kaW5nCisjIEVYUFJFU1NJT04oW0FSRzFdLCBbQVJHMl0pLiAgSWYgdGhlcmUgYXJl
IGFuIG9kZCBudW1iZXIgb2YgQVJHcywgdGhlCisjIGZpbmFsIGFyZ3VtZW50IGlzIGV4cGFuZGVk
IHdpdGggRU5ELUVYUFIoW0FSR25dKS4KKyMKKyMgQnVpbGQgdGhlIHRlbXBvcmFyeSBtYWNybyBf
bTRfbWFwX2FyZ3NfcGFpciwgd2l0aCB0aGUgJDIoWyRtKzFdKQorIyBvbmx5IG91dHB1dCBpZiAk
IyBpcyBvZGQ6CisjICAgJDEoWyQzXSwgWyQ0XSlbXSQxKFskNV0sIFskNl0pW10uLi4kMShbJG0t
MV0sCisjICAgWyRtXSlbXW00X2RlZmF1bHQoWyQyXSwgWyQxXSkoWyRtKzFdKVtdX200X3BvcGRl
ZihbX200X21hcF9hcmdzX3BhaXJdKQorbTRfZGVmaW5lKFttNF9tYXBfYXJnc19wYWlyXSwKK1tt
NF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwK
KyAgICAgICBbJCNdLCBbMV0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzog
JDFdKV0sCisgICAgICAgWyQjXSwgWzJdLCBbXSwKKyAgICAgICBbJCNdLCBbM10sIFttNF9kZWZh
dWx0KFskMl0sIFskMV0pKFskM10pW11dLAorICAgICAgIFttNF9wdXNoZGVmKFtfJDBdLCBfbTRf
Zm9yKFszXSwKKyAgIG00X2V2YWwoWyQjIC8gMiAqIDIgLSAxXSksIFsyXSwgW18kMF8oXSwgWyld
KV8kMF9lbmQoCisgICBbMV0sIFsyXSwgWyQjXSlbX200X3BvcGRlZihbXyQwXSldKV8kMCgkQCld
KV0pCisKK200X2RlZmluZShbX200X21hcF9hcmdzX3BhaXJfXSwKK1skMF8oWzFdLCBbJDFdLCBt
NF9pbmNyKFskMV0pKV0pCisKK200X2RlZmluZShbX200X21hcF9hcmdzX3BhaXJfX10sCitbWyQk
MShbJCQyXSwgWyQkM10pW11dXSkKKworbTRfZGVmaW5lKFtfbTRfbWFwX2FyZ3NfcGFpcl9lbmRd
LAorW200X2lmKG00X2V2YWwoWyQzICYgMV0pLCBbMV0sIFtbbTRfZGVmYXVsdChbJCQyXSwgWyQk
MV0pKFskJDNdKVtdXV0pXSkKKworIyBtNF9qb2luKFNFUCwgQVJHMSwgQVJHMi4uLikKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2R1Y2UgQVJHMVNFUEFSRzIuLi5TRVBBUkdu
LiAgQXZvaWQgYmFjay10by1iYWNrIFNFUCB3aGVuIGEgZ2l2ZW4gQVJHCisjIGlzIHRoZSBlbXB0
eSBzdHJpbmcuICBObyBleHBhbnNpb24gaXMgcGVyZm9ybWVkIG9uIFNFUCBvciBBUkdzLgorIwor
IyBVc2UgYSBzZWxmLW1vZGlmeWluZyBzZXBhcmF0b3IsIHNpbmNlIHdlIGRvbid0IGtub3cgaG93
IG1hbnkKKyMgYXJndW1lbnRzIG1pZ2h0IGJlIHNraXBwZWQgYmVmb3JlIGEgc2VwYXJhdG9yIGlz
IGZpcnN0IHByaW50ZWQsIGJ1dAorIyBiZSBjYXJlZnVsIGlmIHRoZSBzZXBhcmF0b3IgY29udGFp
bnMgJC4gIF9tNF9mb3JlYWNoIHRvIHRoZSByZXNjdWUuCittNF9kZWZpbmUoW200X2pvaW5dLAor
W200X3B1c2hkZWYoW19tNF9zZXBdLCBbbTRfZGVmaW5lKFtfbTRfc2VwXSwgX200X2RlZm4oW200
X2VjaG9dKSldKV1kbmwKK1tfbTRfZm9yZWFjaChbXyQwKFskMV0sXSwgWyldLCAkQClfbTRfcG9w
ZGVmKFtfbTRfc2VwXSldKQorCittNF9kZWZpbmUoW19tNF9qb2luXSwKK1ttNF9pZihbJDJdLCBb
XSwgW10sIFtfbTRfc2VwKFskMV0pWyQyXV0pXSkKKworIyBtNF9qb2luYWxsKFNFUCwgQVJHMSwg
QVJHMi4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2R1Y2UgQVJH
MVNFUEFSRzIuLi5TRVBBUkduLiAgQW4gZW1wdHkgQVJHIHJlc3VsdHMgaW4gYmFjay10by1iYWNr
IFNFUC4KKyMgTm8gZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCBvbiBTRVAgb3IgQVJHcy4KKyMKKyMg
QSBiaXQgZWFzaWVyIHRoYW4gbTRfam9pbi4gIF9tNF9mb3JlYWNoIHRvIHRoZSByZXNjdWUuCitt
NF9kZWZpbmUoW200X2pvaW5hbGxdLAorW1skMl1tNF9pZihtNF9ldmFsKFskIyA8PSAyXSksIFsx
XSwgW10sCisJICAgW19tNF9mb3JlYWNoKFskMV0sIFtdLCBtNF9zaGlmdCgkQCkpXSldKQorCisj
IG00X2xpc3RfY21wKEEsIEIpCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIENvbXBhcmUgdGhlIHR3
byBsaXN0cyBvZiBpbnRlZ2VyIGV4cHJlc3Npb25zIEEgYW5kIEIuCisjCisjIG00X2xpc3RfY21w
IHRha2VzIGNhcmUgb2YgYW55IHNpZGUgZWZmZWN0czsgd2Ugb25seSBvdmVycmlkZQorIyBfbTRf
bGlzdF9jbXBfcmF3LCB3aGVyZSB3ZSBjYW4gc2FmZWx5IGV4cGFuZCBsaXN0cyBtdWx0aXBsZSB0
aW1lcy4KKyMgRmlyc3QsIGluc2VydCBwYWRkaW5nIHNvIHRoYXQgYm90aCBsaXN0cyBhcmUgdGhl
IHNhbWUgbGVuZ3RoOyB0aGUKKyMgdHJhaWxpbmcgKzAgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBh
IG1pc3NpbmcgbGlzdC4gIE5leHQsIGNyZWF0ZSBhCisjIHRlbXBvcmFyeSBtYWNybyB0byBwZXJm
b3JtIHBhaXJ3aXNlIGNvbXBhcmlzb25zIHVudGlsIGFuIGluZXF1YWxpdHkKKyMgaXMgZm91bmQu
ICBGb3IgZXhhbXBsZSwgbTRfbGlzdF9jbXAoWzFdLCBbMSwyXSkgY3JlYXRlcyBfbTRfY21wIGFz
CisjICAgbTRfaWYobTRfZXZhbChbKCQxKSAhPSAoJDMpXSksIFsxXSwgW200X2NtcChbJDFdLCBb
JDNdKV0sCisjICAgICAgICAgbTRfZXZhbChbKCQyKSAhPSAoJDQpXSksIFsxXSwgW200X2NtcChb
JDJdLCBbJDRdKV0sCisjICAgICAgICAgWzBdX200X3BvcGRlZihbX200X2NtcF0pKQorIyB0aGVu
IGNhbGxzIF9tNF9jbXAoWzErMF0sIFswKjJdLCBbMV0sIFsyKzBdKQorbTRfZGVmaW5lKFtfbTRf
bGlzdF9jbXBfcmF3XSwKK1ttNF9pZihbJDFdLCBbJDJdLCAwLAorICAgICAgIFtfbTRfbGlzdF9j
bXAoJDErMF9tNF9saXN0X3BhZChtNF9jb3VudCgkMSksIG00X2NvdW50KCQyKSksCisJCSAgICAg
JDIrMF9tNF9saXN0X3BhZChtNF9jb3VudCgkMiksIG00X2NvdW50KCQxKSkpXSldKQorCittNF9k
ZWZpbmUoW19tNF9saXN0X3BhZF0sCitbbTRfaWYobTRfZXZhbCgkMSA8ICQyKSwgWzFdLAorICAg
ICAgIFtfbTRfZm9yKG00X2luY3IoWyQxXSksIFskMl0sIFsxXSwgWywwKl0pXSldKQorCittNF9k
ZWZpbmUoW19tNF9saXN0X2NtcF0sCitbbTRfcHVzaGRlZihbX200X2NtcF0sIFttNF9pZihdX200
X2ZvcigKKyAgIFsxXSwgbTRfZXZhbChbJCMgPj4gMV0pLCBbMV0sIFskMF8oXSwgWyxdbTRfZXZh
bChbJCMgPj4gMV0pWyldKVsKKyAgICAgIFswXV9tNF9wb3BkZWYoW19tNF9jbXBdKSldKV9tNF9j
bXAoJEApXSkKKworbTRfZGVmaW5lKFtfbTRfbGlzdF9jbXBfXSwKK1skMF8oWyQxXSwgbTRfZXZh
bChbJDEgKyAkMl0pKV0pCisKK200X2RlZmluZShbX200X2xpc3RfY21wX19dLAorW1ttNF9ldmFs
KFsoJCQxKSAhPSAoJCQyKV0pLCBbMV0sIFttNF9jbXAoWyQkMV0sIFskJDJdKV0sCitdXSkKKwor
IyBtNF9tYXgoRVhQUiwgLi4uKQorIyBtNF9taW4oRVhQUiwgLi4uKQorIyAtLS0tLS0tLS0tLS0t
LS0tLQorIyBSZXR1cm4gdGhlIGRlY2ltYWwgdmFsdWUgb2YgdGhlIG1heGltdW0gKG9yIG1pbmlt
dW0pIGluIGEgc2VyaWVzIG9mCisjIGludGVnZXIgZXhwcmVzc2lvbnMuCisjCisjIF9tNF9mb3Jl
YWNoIHRvIHRoZSByZXNjdWU7IHdlIG9ubHkgbmVlZCB0byByZXBsYWNlIF9tNF9taW5tYXguICBI
ZXJlLAorIyB3ZSBuZWVkIGEgdGVtcG9yYXJ5IG1hY3JvIHRvIHRyYWNrIHRoZSBiZXN0IGFuc3dl
ciBzbyBmYXIsIHNvIHRoYXQKKyMgdGhlIGZvcmVhY2ggZXhwcmVzc2lvbiBpcyB0cmFjdGFibGUu
CittNF9kZWZpbmUoW19tNF9taW5tYXhdLAorW200X3B1c2hkZWYoW19tNF9iZXN0XSwgbTRfZXZh
bChbJDJdKSlfbTRfZm9yZWFjaCgKKyAgW200X2RlZmluZShbX200X2Jlc3RdLCAkMShfbTRfYmVz
dCxdLCBbKSldLCBtNF9zaGlmdCgkQCkpXWRubAorW19tNF9iZXN0W11fbTRfcG9wZGVmKFtfbTRf
YmVzdF0pXSkKKworIyBtNF9zZXRfYWRkX2FsbChTRVQsIFZBTFVFLi4uKQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBZGQgZWFjaCBWQUxVRSBpbnRvIFNFVC4gIFRoaXMgaXMg
TyhuKSBpbiB0aGUgbnVtYmVyIG9mIFZBTFVFcywgYW5kCisjIGNhbiBiZSBmYXN0ZXIgdGhhbiBj
YWxsaW5nIG00X3NldF9hZGQgZm9yIGVhY2ggVkFMVUUuCisjCisjIF9tNF9mb3JlYWNoIHRvIHRo
ZSByZXNjdWUuICBJZiBubyBkZWxldGlvbnMgaGF2ZSBvY2N1cnJlZCwgdGhlbgorIyBhdm9pZCB0
aGUgc3BlZWQgcGVuYWx0eSBvZiBtNF9zZXRfYWRkLgorbTRfZGVmaW5lKFttNF9zZXRfYWRkX2Fs
bF0sCitbbTRfaWYoWyQjXSwgWzBdLCBbXSwgWyQjXSwgWzFdLCBbXSwKKyAgICAgICBbbTRfZGVm
aW5lKFtfbTRfc2V0X3NpemUoJDEpXSwgbTRfZXZhbChtNF9zZXRfc2l6ZShbJDFdKQorCSAgKyBt
NF9sZW4oX200X2ZvcmVhY2gobTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLAorICBbW200
X3NldF9hZGRdXSwgW1tfJDBdXSlbKFskMV0sXSwgWyldLCAkQCkpKSldKV0pCisKK200X2RlZmlu
ZShbX200X3NldF9hZGRfYWxsXSwKK1ttNF9pZmRlZihbX200X3NldChbJDFdLCQyKV0sIFtdLAor
CSAgW200X2RlZmluZShbX200X3NldChbJDFdLCQyKV0sCisJCSAgICAgWzFdKW00X3B1c2hkZWYo
W19tNF9zZXQoWyQxXSldLCBbJDJdKS1dKV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvbTRzdWdhci5tNCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvbTRz
dWdhci9tNHN1Z2FyLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZDY5NTgzNmEyN2Q5YWIwNTk4YzM0YzY0NzM5
NTVlZTY5ZjkwODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90
b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L200c3VnYXIvbTRzdWdhci5tNApAQCAtMCwwICsx
LDMzMDggQEAKK2RpdmVydCgtMSkjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEF1
dG9jb25mLgorIyBCYXNlIE00IGxheWVyLgorIyBSZXF1aXJlcyBHTlUgTTQuCisjCisjIENvcHly
aWdodCAoQykgMTk5OS0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIEF1dG9jb25mLiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUKKyMgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhl
CisjIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0
aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK
KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMs
IHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisjIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0
aGUgQXV0b2NvbmYgQ29uZmlndXJlIFNjcmlwdCBFeGNlcHRpb24sCisjIHZlcnNpb24gMy4wLCBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyMgYW5kIGEgY29weSBvZiB0aGUgQXV0b2NvbmYgQ29uZmlndXJlIFNjcmlwdCBFeGNlcHRp
b24gYWxvbmcgd2l0aAorIyB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZXMgQ09QWUlOR3YzIGFu
ZCBDT1BZSU5HLkVYQ0VQVElPTgorIyByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZSA8aHR0cHM6
Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIFdyaXR0ZW4gYnkgQWtpbSBEZW1haWxsZS4K
KworIyBTZXQgdGhlIHF1b3Rlcywgd2hhdGV2ZXIgdGhlIGN1cnJlbnQgcXVvdGluZyBzeXN0ZW0u
CitjaGFuZ2VxdW90ZSgpCitjaGFuZ2VxdW90ZShbLCBdKQorCisjIFNvbWUgb2xkIG00J3MgZG9u
J3Qgc3VwcG9ydCBtNGV4aXQuICBCdXQgdGhleSBwcm92aWRlCisjIGVxdWl2YWxlbnQgZnVuY3Rp
b25hbGl0eSBieSBjb3JlIGR1bXBpbmcgYmVjYXVzZSBvZiB0aGUKKyMgbG9uZyBtYWNyb3Mgd2Ug
ZGVmaW5lLgoraWZkZWYoW19fZ251X19dLCAsCitbZXJycHJpbnQoTTRzdWdhciByZXF1aXJlcyBH
TlUgTTQuIEluc3RhbGwgaXQgYmVmb3JlIGluc3RhbGxpbmcgTTRzdWdhciBvcgorc2V0IHRoZSBN
NCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpdHMgYWJzb2x1dGUgZmlsZSBuYW1lLikKK200ZXhp
dCgyKV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgMS4g
U2ltdWxhdGUgLS1wcmVmaXgtYnVpbHRpbnMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAjIworCisjIG00X2RlZmluZQorIyBtNF9kZWZuCisjIG00X3VuZGVmaW5lCitk
ZWZpbmUoW200X2RlZmluZV0sICAgZGVmbihbZGVmaW5lXSkpCitkZWZpbmUoW200X2RlZm5dLCAg
ICAgZGVmbihbZGVmbl0pKQorZGVmaW5lKFttNF91bmRlZmluZV0sIGRlZm4oW3VuZGVmaW5lXSkp
CisKK200X3VuZGVmaW5lKFtkZWZpbmVdKQorbTRfdW5kZWZpbmUoW2RlZm5dKQorbTRfdW5kZWZp
bmUoW3VuZGVmaW5lXSkKKworCisjIG00X2NvcHkoU1JDLCBEU1QpCisjIC0tLS0tLS0tLS0tLS0t
LS0tCisjIERlZmluZSBEU1QgYXMgdGhlIGRlZmluaXRpb24gb2YgU1JDLgorIyBXaGF0J3MgdGhl
IGRpZmZlcmVuY2UgYmV0d2VlbjoKKyMgMS4gbTRfY29weShbZnJvbV0sIFt0b10pCisjIDIuIG00
X2RlZmluZShbdG9dLCBbZnJvbSgkQCldKQorIyBXZWxsLCBvYnZpb3VzbHkgMSBpcyBtb3JlIGV4
cGVuc2l2ZSBpbiBzcGFjZS4gIE1heWJlIDIgaXMgbW9yZSBleHBlbnNpdmUKKyMgaW4gdGltZSwg
YnV0IGJlY2F1c2Ugb2YgdGhlIHNwYWNlIGNvc3Qgb2YgMSwgaXQncyBub3QgdGhhdCBvYnZpb3Vz
LgorIyBOZXZlcnRoZWxlc3MsIG9uZSBodWdlIGRpZmZlcmVuY2UgaXMgdGhlIGhhbmRsaW5nIG9m
IGAkMCcuICBJZiBgZnJvbScKKyMgdXNlcyBgJDAnLCB0aGVuIHdpdGggMSwgYHRvJydzIGAkMCcg
aXMgYHRvJywgd2hpbGUgaXQgaXMgYGZyb20nIGluIDIuCisjIFRoZSB1c2VyIHdvdWxkIGNlcnRh
aW5seSBwcmVmZXIgdG8gc2VlIGB0bycuCisjCisjIFRoaXMgZGVmaW5pdGlvbiBpcyBpbiBlZmZl
Y3QgZHVyaW5nIG00c3VnYXIgaW5pdGlhbGl6YXRpb24sIHdoZW4KKyMgdGhlcmUgYXJlIG5vIHB1
c2hkZWYgc3RhY2tzOyBsYXRlciBvbiwgd2UgcmVkZWZpbmUgaXQgdG8gc29tZXRoaW5nCisjIG1v
cmUgcG93ZXJmdWwgZm9yIGFsbCBvdGhlciBjbGllbnRzIHRvIHVzZS4KK200X2RlZmluZShbbTRf
Y29weV0sCitbbTRfZGVmaW5lKFskMl0sIG00X2RlZm4oWyQxXSkpXSkKKworCisjIG00X3JlbmFt
ZShTUkMsIERTVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZW5hbWUgdGhlIG1hY3JvIFNS
QyB0byBEU1QuCittNF9kZWZpbmUoW200X3JlbmFtZV0sCitbbTRfY29weShbJDFdLCBbJDJdKW00
X3VuZGVmaW5lKFskMV0pXSkKKworCisjIG00X3JlbmFtZV9tNChNQUNSTy1OQU1FKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVuYW1lIE1BQ1JPLU5BTUUgdG8gbTRfTUFDUk8tTkFN
RS4KK200X2RlZmluZShbbTRfcmVuYW1lX200XSwKK1ttNF9yZW5hbWUoWyQxXSwgW200XyQxXSld
KQorCisKKyMgbTRfY29weV91bm00KG00X01BQ1JPLU5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBDb3B5IG00X01BQ1JPLU5BTUUgdG8gTUFDUk8tTkFNRS4KK200X2RlZmlu
ZShbbTRfY29weV91bm00XSwKK1ttNF9jb3B5KFskMV0sIG00X2JwYXRzdWJzdChbJDFdLCBbXm00
X1woLipcKV0sIFtbXDFdXSkpXSkKKworCisjIFNvbWUgbTQgaW50ZXJuYWxzIGhhdmUgbmFtZXMg
Y29sbGlkaW5nIHdpdGggdG9rZW5zIHdlIG1pZ2h0IHVzZS4KKyMgUmVuYW1lIHRoZW0gYWAgbGEg
YG00IC0tcHJlZml4LWJ1aWx0aW5zJy4gIENvbmRpdGlvbmFscyBmaXJzdCwgc2luY2UKKyMgc29t
ZSBzdWJzZXF1ZW50IHJlbmFtZXMgYXJlIGNvbmRpdGlvbmFsLgorbTRfcmVuYW1lX200KFtpZmRl
Zl0pCittNF9yZW5hbWUoW2lmZWxzZV0sIFttNF9pZl0pCisKK200X3JlbmFtZV9tNChbYnVpbHRp
bl0pCittNF9yZW5hbWVfbTQoW2NoYW5nZWNvbV0pCittNF9yZW5hbWVfbTQoW2NoYW5nZXF1b3Rl
XSkKK200X2lmZGVmKFtjaGFuZ2V3b3JkXSxkbmwgY29uZGl0aW9uYWxseSBhdmFpbGFibGUgaW4g
MS40LngKK1ttNF91bmRlZmluZShbY2hhbmdld29yZF0pXSkKK200X3JlbmFtZV9tNChbZGVidWdm
aWxlXSkKK200X3JlbmFtZV9tNChbZGVidWdtb2RlXSkKK200X3JlbmFtZV9tNChbZGVjcl0pCitt
NF9yZW5hbWVfbTQoW2Rpdm51bV0pCittNF9yZW5hbWVfbTQoW2R1bXBkZWZdKQorbTRfcmVuYW1l
X200KFtlcnJwcmludF0pCittNF9yZW5hbWVfbTQoW2VzeXNjbWRdKQorbTRfcmVuYW1lX200KFtl
dmFsXSkKK200X3JlbmFtZV9tNChbZm9ybWF0XSkKK200X3VuZGVmaW5lKFtpbmNsdWRlXSkKK200
X3JlbmFtZV9tNChbaW5jcl0pCittNF9yZW5hbWVfbTQoW2luZGV4XSkKK200X3JlbmFtZV9tNChb
aW5kaXJdKQorbTRfcmVuYW1lX200KFtsZW5dKQorbTRfcmVuYW1lKFttNGV4aXRdLCBbbTRfZXhp
dF0pCittNF91bmRlZmluZShbbTR3cmFwXSkKK200X2lmZGVmKFtta3N0ZW1wXSxkbmwgYWRkZWQg
aW4gTTQgMS40LjgKK1ttNF9yZW5hbWVfbTQoW21rc3RlbXBdKQorbTRfY29weShbbTRfbWtzdGVt
cF0sIFttNF9tYWtldGVtcF0pCittNF91bmRlZmluZShbbWFrZXRlbXBdKV0sCitbbTRfcmVuYW1l
X200KFttYWtldGVtcF0pCittNF9jb3B5KFttNF9tYWtldGVtcF0sIFttNF9ta3N0ZW1wXSldKQor
bTRfcmVuYW1lKFtwYXRzdWJzdF0sIFttNF9icGF0c3Vic3RdKQorbTRfcmVuYW1lX200KFtwb3Bk
ZWZdKQorbTRfcmVuYW1lX200KFtwdXNoZGVmXSkKK200X3JlbmFtZShbcmVnZXhwXSwgW200X2Jy
ZWdleHBdKQorbTRfcmVuYW1lX200KFtzaGlmdF0pCittNF91bmRlZmluZShbc2luY2x1ZGVdKQor
bTRfcmVuYW1lX200KFtzdWJzdHJdKQorbTRfaWZkZWYoW3N5bWJvbHNdLGRubCBwcmVzZW50IG9u
bHkgaW4gYWxwaGEtcXVhbGl0eSAxLjRvCitbbTRfcmVuYW1lX200KFtzeW1ib2xzXSldKQorbTRf
cmVuYW1lX200KFtzeXNjbWRdKQorbTRfcmVuYW1lX200KFtzeXN2YWxdKQorbTRfcmVuYW1lX200
KFt0cmFjZW9mZl0pCittNF9yZW5hbWVfbTQoW3RyYWNlb25dKQorbTRfcmVuYW1lX200KFt0cmFu
c2xpdF0pCisKKyMgX200X2RlZm4oQVJHKQorIyAtLS0tLS0tLS0tLS0tCisjIF9tNF9kZWZuIGlz
IGZvciBpbnRlcm5hbCB1c2Ugb25seSAtIGl0IGJ5cGFzc2VzIHRoZSB3cmFwcGVyLCBzbyBpdAor
IyBtdXN0IG9ubHkgYmUgdXNlZCBvbiBvbmUgYXJndW1lbnQgYXQgYSB0aW1lLCBhbmQgb25seSBv
biBtYWNyb3MKKyMga25vd24gdG8gYmUgZGVmaW5lZC4gIE1ha2Ugc3VyZSB0aGlzIHN0aWxsIHdv
cmtzIGlmIHRoZSB1c2VyIHJlbmFtZXMKKyMgbTRfZGVmbiBidXQgbm90IF9tNF9kZWZuLgorbTRf
Y29weShbbTRfZGVmbl0sIFtfbTRfZGVmbl0pCisKKyMgX200X2RpdmVydF9yYXcoTlVNKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tCisjIF9tNF9kaXZlcnRfcmF3IGlzIGZvciBpbnRlcm5hbCB1c2Ug
b25seS4gIFVzZSB0aGlzIGluc3RlYWQgb2YKKyMgbTRfYnVpbHRpbihbZGl2ZXJ0XSwgTlVNKSwg
c28gdGhhdCB0cmFjaW5nIGRpdmVyc2lvbiBmbG93IGlzIGVhc2llci4KK200X3JlbmFtZShbZGl2
ZXJ0XSwgW19tNF9kaXZlcnRfcmF3XSkKKworIyBfbTRfcG9wZGVmKEFSRy4uLikKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tCisjIF9tNF9wb3BkZWYgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5IC0gaXQg
YnlwYXNzZXMgdGhlIHdyYXBwZXIsIHNvIGl0CisjIG11c3Qgb25seSBiZSB1c2VkIG9uIG1hY3Jv
cyBrbm93biB0byBiZSBkZWZpbmVkLiAgTWFrZSBzdXJlIHRoaXMKKyMgc3RpbGwgd29ya3MgaWYg
dGhlIHVzZXIgcmVuYW1lcyBtNF9wb3BkZWYgYnV0IG5vdCBfbTRfcG9wZGVmLgorbTRfY29weShb
bTRfcG9wZGVmXSwgW19tNF9wb3BkZWZdKQorCisjIF9tNF91bmRlZmluZShBUkcuLi4pCisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIF9tNF91bmRlZmluZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9u
bHkgLSBpdCBieXBhc3NlcyB0aGUgd3JhcHBlciwgc28KKyMgaXQgbXVzdCBvbmx5IGJlIHVzZWQg
b24gbWFjcm9zIGtub3duIHRvIGJlIGRlZmluZWQuICBNYWtlIHN1cmUgdGhpcworIyBzdGlsbCB3
b3JrcyBpZiB0aGUgdXNlciByZW5hbWVzIG00X3VuZGVmaW5lIGJ1dCBub3QgX200X3VuZGVmaW5l
LgorbTRfY29weShbbTRfdW5kZWZpbmVdLCBbX200X3VuZGVmaW5lXSkKKworIyBfbTRfdW5kaXZl
cnQoTlVNLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfbTRfdW5kaXZlcnQgaXMgZm9y
IGludGVybmFsIHVzZSBvbmx5LCBhbmQgc2hvdWxkIGFsd2F5cyBiZSBnaXZlbgorIyBhcmd1bWVu
dHMuICBVc2UgdGhpcyBpbnN0ZWFkIG9mIG00X2J1aWx0aW4oW3VuZGl2ZXJ0XSwgTlVNLi4uKSwg
c28KKyMgdGhhdCB0cmFjaW5nIGRpdmVyc2lvbiBmbG93IGlzIGVhc2llci4KK200X3JlbmFtZShb
dW5kaXZlcnRdLCBbX200X3VuZGl2ZXJ0XSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMj
CisjIyAyLiBFcnJvciBtZXNzYWdlcy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCisK
KworIyBtNF9sb2NhdGlvbgorIyAtLS0tLS0tLS0tLQorIyBPdXRwdXQgdGhlIGN1cnJlbnQgZmls
ZSwgY29sb24sIGFuZCB0aGUgY3VycmVudCBsaW5lIG51bWJlci4KK200X2RlZmluZShbbTRfbG9j
YXRpb25dLAorW19fZmlsZV9fOl9fbGluZV9fXSkKKworCisjIG00X2VycnByaW50bihNU0cpCisj
IC0tLS0tLS0tLS0tLS0tLS0tCisjIFNhbWUgYXMgYGVycnByaW50JywgYnV0IHdpdGggdGhlIG1p
c3NpbmcgZW5kIG9mIGxpbmUuCittNF9kZWZpbmUoW200X2VycnByaW50bl0sCitbbTRfZXJycHJp
bnQoWyQxCitdKV0pCisKKworIyBtNF93YXJuaW5nKE1TRykKKyMgLS0tLS0tLS0tLS0tLS0tCisj
IFdhcm4gdGhlIHVzZXIuCittNF9kZWZpbmUoW200X3dhcm5pbmddLAorW200X2VycnByaW50biht
NF9sb2NhdGlvbls6IHdhcm5pbmc6ICQxXSldKQorCisKKyMgbTRfZmF0YWwoTVNHLCBbRVhJVC1T
VEFUVVNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZhdGFsIHRoZSB1c2Vy
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDop
CittNF9kZWZpbmUoW200X2ZhdGFsXSwKK1ttNF9lcnJwcmludG4obTRfbG9jYXRpb25bOiBlcnJv
cjogJDFdCittNF9leHBhbnNpb25fc3RhY2spbTRfZXhpdChtNF9pZihbJDJdLCwgMSwgWyQyXSkp
XSkKKworCisjIG00X2Fzc2VydChFWFBSRVNTSU9OLCBbRVhJVC1TVEFUVVMgPSAxXSkKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGlzIG1hY3JvIGVuc3Vy
ZXMgdGhhdCBFWFBSRVNTSU9OIGV2YWx1YXRlcyB0byB0cnVlLCBhbmQgZXhpdHMgaWYKKyMgRVhQ
UkVTU0lPTiBldmFsdWF0ZXMgdG8gZmFsc2UuCittNF9kZWZpbmUoW200X2Fzc2VydF0sCitbbTRf
aWYobTRfZXZhbChbJDFdKSwgMCwKKyAgICAgICBbbTRfZmF0YWwoW2Fzc2VydCBmYWlsZWQ6ICQx
XSwgWyQyXSldKV0pCisKKworCisjIyAtLS0tLS0tLS0tLS0tICMjCisjIyAzLiBXYXJuaW5ncy4g
ICMjCisjIyAtLS0tLS0tLS0tLS0tICMjCisKKworIyBfbTRfd2FybihDQVRFR09SWSwgTUVTU0FH
RSwgW1NUQUNLLVRSQUNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIFJlcG9ydCBhIE1FU1NBR0UgdG8gdGhlIHVzZXIgaWYgdGhlIENBVEVHT1JZIG9m
IHdhcm5pbmdzIGlzIGVuYWJsZWQuCisjIFRoaXMgaXMgZm9yIHRyYWNlcyBvbmx5LgorIyBJZiBw
cmVzZW50LCBTVEFDSy1UUkFDRSBpcyBhIFxuLXNlcGFyYXRlZCBsaXN0IG9mICJMT0NBVElPTjog
TUVTU0FHRSIsCisjIHdoZXJlIHRoZSBsYXN0IGxpbmUgKGFuZCBubyBvdGhlcikgZW5kcyB3aXRo
ICJ0aGUgdG9wIGxldmVsIi4KKyMKKyMgV2l0aGluIG00LCB0aGUgbWFjcm8gaXMgYSBuby1vcC4g
IFRoaXMgbWFjcm8gcmVhbGx5IG1hdHRlcnMKKyMgd2hlbiBhdXRvbTR0ZSBwb3N0LXByb2Nlc3Nl
cyB0aGUgdHJhY2Ugb3V0cHV0LgorbTRfZGVmaW5lKFtfbTRfd2Fybl0sIFtdKQorCisKKyMgbTRf
d2FybihDQVRFR09SWSwgTUVTU0FHRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
UmVwb3J0IGEgTUVTU0FHRSB0byB0aGUgdXNlciBpZiB0aGUgQ0FURUdPUlkgb2Ygd2FybmluZ3Mg
aXMgZW5hYmxlZC4KK200X2RlZmluZShbbTRfd2Fybl0sCitbX200X3dhcm4oWyQxXSwgWyQyXSwK
K200X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW200X2V4cGFuc2lvbl9zdGFja10pKV0p
CisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyA0LiBGaWxlIGluY2x1c2lvbi4g
ICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBXZSBhbHNvIHdhbnQgdG8gbmV1
dHJhbGl6ZSBpbmNsdWRlIChhbmQgc2luY2x1ZGUgZm9yIHN5bW1ldHJ5KSwKKyMgYnV0IHdlIHdh
bnQgdG8gZXh0ZW5kIHRoZW0gc2xpZ2h0bHk6IHdhcm4gd2hlbiBhIGZpbGUgaXMgaW5jbHVkZWQK
KyMgc2V2ZXJhbCB0aW1lcy4gIFRoaXMgaXMsIGluIGdlbmVyYWwsIGEgZGFuZ2Vyb3VzIG9wZXJh
dGlvbiwgYmVjYXVzZQorIyB0b28gbWFueSBwZW9wbGUgZm9yZ2V0IHRvIHF1b3RlIHRoZSBmaXJz
dCBhcmd1bWVudCBvZiBtNF9kZWZpbmUuCisjCisjIEZvciBpbnN0YW5jZSBpbiB0aGUgZm9sbG93
aW5nIGNhc2U6CisjICAgbTRfZGVmaW5lKGZvbywgW2Jhcl0pCisjIHRoZW4gYSBzZWNvbmQgcmVh
ZGluZyB3aWxsIHR1cm4gaW50bworIyAgIG00X2RlZmluZShiYXIsIFtiYXJdKQorIyB3aGljaCBp
cyBjZXJ0YWlubHkgbm90IHdoYXQgd2FzIG1lYW50LgorCisjIG00X2luY2x1ZGVfdW5pcXVlKEZJ
TEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlY2xhcmUgdGhhdCB0aGUgRklMRSB3
YXMgbG9hZGluZzsgYW5kIHdhcm4gaWYgaXQgaGFzIGFscmVhZHkKKyMgYmVlbiBpbmNsdWRlZC4K
K200X2RlZmluZShbbTRfaW5jbHVkZV91bmlxdWVdLAorW200X2lmZGVmKFttNF9pbmNsdWRlKCQx
KV0sCisJICBbbTRfd2Fybihbc3ludGF4XSwgW2ZpbGUgYCQxJyBpbmNsdWRlZCBzZXZlcmFsIHRp
bWVzXSldKWRubAorbTRfZGVmaW5lKFttNF9pbmNsdWRlKCQxKV0pXSkKKworCisjIG00X2luY2x1
ZGUoRklMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIHRoZSBidWlsdGluIGluY2x1ZGUs
IGJ1dCB3YXJucyBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbnMuCittNF9kZWZpbmUoW200X2lu
Y2x1ZGVdLAorW200X2luY2x1ZGVfdW5pcXVlKFskMV0pZG5sCittNF9idWlsdGluKFtpbmNsdWRl
XSwgWyQxXSldKQorCisKKyMgbTRfc2luY2x1ZGUoRklMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0K
KyMgTGlrZSB0aGUgYnVpbHRpbiBzaW5jbHVkZSwgYnV0IHdhcm5zIGFnYWluc3QgbXVsdGlwbGUg
aW5jbHVzaW9ucy4KK200X2RlZmluZShbbTRfc2luY2x1ZGVdLAorW200X2luY2x1ZGVfdW5pcXVl
KFskMV0pZG5sCittNF9idWlsdGluKFtzaW5jbHVkZV0sIFskMV0pXSkKKworCisKKyMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgNS4gQWRkaXRpb25hbCBicmFu
Y2hpbmcgY29uc3RydWN0cy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKworIyBCb3RoIGBtNF9pZnZhbCcgYW5kIGBtNF9pZnNldCcgdGVzdHMgYWdhaW5z
dCB0aGUgZW1wdHkgc3RyaW5nLiAgVGhlCisjIGRpZmZlcmVuY2UgaXMgdGhhdCBgbTRfaWZzZXQn
IGlzIHNwZWNpYWxpemVkIG9uIG1hY3Jvcy4KKyMKKyMgSW4gY2FzZSBvZiBhcmd1bWVudHMgb2Yg
bWFjcm9zLCBlZy4gJDEsIGl0IG1ha2VzIGxpdHRsZSBkaWZmZXJlbmNlLgorIyBJbiB0aGUgY2Fz
ZSBvZiBhIG1hY3JvIGBGT08nLCB5b3UgZG9uJ3Qgd2FudCB0byBjaGVjayBgbTRfaWZ2YWwoRk9P
LAorIyBUUlVFKScsIGJlY2F1c2UgaWYgYEZPTycgZXhwYW5kcyB3aXRoIGNvbW1hcywgdGhlcmUg
aXMgYSBzaGlmdGluZyBvZgorIyB0aGUgYXJndW1lbnRzLiAgU28geW91IHdhbnQgdG8gcnVuIGBt
NF9pZnZhbChbRk9PXSknLCBidXQgdGhlbiB5b3UganVzdAorIyBjb21wYXJlIHRoZSAqc3RyaW5n
KiBgRk9PJyBhZ2FpbnN0IGAnLCB3aGljaCwgb2YgY291cnNlIGZhaWxzLgorIworIyBTbyB5b3Ug
d2FudCB0aGUgdmFyaWF0aW9uIGBtNF9pZnNldCcgdGhhdCBleHBlY3RzIGEgbWFjcm8gbmFtZSBh
cyAkMS4KKyMgSWYgdGhpcyBtYWNybyBpcyBib3RoIGRlZmluZWQgYW5kIGRlZmluZWQgdG8gYSBu
b24gZW1wdHkgdmFsdWUsIHRoZW4KKyMgaXQgcnVucyBUUlVFLCBldGMuCisKKworIyBtNF9pZmJs
YW5rKENPTkQsIFtJRi1CTEFOS10sIFtJRi1URVhUXSkKKyMgbTRfaWZuYmxhbmsoQ09ORCwgW0lG
LVRFWFRdLCBbSUYtQkxBTktdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIElmIENPTkQgaXMgZW1wdHksIG9yIGNvbnNpc3RzIG9ubHkgb2YgYmxhbmtzIChz
cGFjZSwgdGFiLCBuZXdsaW5lKSwKKyMgdGhlbiBleHBhbmQgSUYtQkxBTkssIG90aGVyd2lzZSBl
eHBhbmQgSUYtVEVYVC4gIFRoaXMgZGlmZmVycyBmcm9tCisjIG00X2lmdmFsIG9ubHkgaWYgQ09O
RCBoYXMganVzdCB3aGl0ZXNwYWNlLCBidXQgaXQgaGVscHMgb3B0aW1pemUgaW4KKyMgc3BpdGUg
b2YgdXNlcnMgd2hvIG1pc3Rha2VubHkgbGVhdmUgdHJhaWxpbmcgc3BhY2UgYWZ0ZXIgd2hhdCB0
aGV5CisjIHRob3VnaHQgd2FzIGFuIGVtcHR5IGFyZ3VtZW50OgorIyAgIG1hY3JvKAorIyAgICAg
ICAgIFtdCisjICAgICAgICApCisjCisjIFdyaXRpbmcgb25lIG1hY3JvIGluIHRlcm1zIG9mIHRo
ZSBvdGhlciBjYXVzZXMgZXh0cmEgb3ZlcmhlYWQsIHNvCisjIHdlIGlubGluZSBib3RoIGRlZmlu
aXRpb25zLgorbTRfZGVmaW5lKFttNF9pZmJsYW5rXSwKK1ttNF9pZihtNF90cmFuc2xpdChbWyQx
XV0sICBbIF1bCV1bCitdKSwgW10sIFskMl0sIFskM10pXSkKKworbTRfZGVmaW5lKFttNF9pZm5i
bGFua10sCitbbTRfaWYobTRfdHJhbnNsaXQoW1skMV1dLCAgWyBdWwldWworXSksIFtdLCBbJDNd
LCBbJDJdKV0pCisKKworIyBtNF9pZnZhbChDT05ELCBbSUYtVFJVRV0sIFtJRi1GQUxTRV0pCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgQ09ORCBpcyBub3Qg
dGhlIGVtcHR5IHN0cmluZywgZXhwYW5kIElGLVRSVUUsIG90aGVyd2lzZSBJRi1GQUxTRS4KKyMg
Q29tcGFyYWJsZSB0byBtNF9pZmRlZi4KK200X2RlZmluZShbbTRfaWZ2YWxdLAorW200X2lmKFsk
MV0sIFtdLCBbJDNdLCBbJDJdKV0pCisKKworIyBtNF9uKFRFWFQpCisjIC0tLS0tLS0tLS0KKyMg
SWYgVEVYVCBpcyBub3QgZW1wdHksIHJldHVybiBURVhUIGFuZCBhIG5ldyBsaW5lLCBvdGhlcndp
c2Ugbm90aGluZy4KK200X2RlZmluZShbbTRfbl0sCitbbTRfaWYoWyQxXSwKKyAgICAgICBbXSwg
W10sCisJICAgWyQxCitdKV0pCisKKworIyBtNF9pZnZhbG4oQ09ORCwgW0lGLVRSVUVdLCBbSUYt
RkFMU0VdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTYW1l
IGFzIGBtNF9pZnZhbCcsIGJ1dCBhZGQgYW4gZXh0cmEgbmV3bGluZSB0byBJRi1UUlVFIG9yIElG
LUZBTFNFCisjIHVubGVzcyB0aGF0IGFyZ3VtZW50IGlzIGVtcHR5LgorbTRfZGVmaW5lKFttNF9p
ZnZhbG5dLAorW200X2lmKFskMV0sCisgICAgICAgW10sICAgW200X24oWyQzXSldLAorCSAgICAg
W200X24oWyQyXSldKV0pCisKKworIyBtNF9pZnNldChNQUNSTywgW0lGLVRSVUVdLCBbSUYtRkFM
U0VdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBNQUNS
TyBoYXMgbm8gZGVmaW5pdGlvbiwgb3Igb2YgaXRzIGRlZmluaXRpb24gaXMgdGhlIGVtcHR5IHN0
cmluZywKKyMgZXhwYW5kIElGLUZBTFNFLCBvdGhlcndpc2UgSUYtVFJVRS4KK200X2RlZmluZShb
bTRfaWZzZXRdLAorW200X2lmZGVmKFskMV0sCisJICBbbTRfaWZ2YWwoX200X2RlZm4oWyQxXSks
IFskMl0sIFskM10pXSwKKwkgIFskM10pXSkKKworCisjIG00X2lmbmRlZihOQU1FLCBbSUYtTk9U
LURFRklORURdLCBbSUYtREVGSU5FRF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW200X2lmbmRlZl0sCitbbTRfaWZkZWYoWyQx
XSwgWyQzXSwgWyQyXSldKQorCisKKyMgbTRfY2FzZShTV0lUQ0gsIFZBTDEsIElGLVZBTDEsIFZB
TDIsIElGLVZBTDIsIC4uLiwgREVGQVVMVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbTQgZXF1aXZhbGVudCBvZgorIyBz
d2l0Y2ggKFNXSVRDSCkKKyMgeworIyAgIGNhc2UgVkFMMToKKyMgICAgIElGLVZBTDE7CisjICAg
ICBicmVhazsKKyMgICBjYXNlIFZBTDI6CisjICAgICBJRi1WQUwyOworIyAgICAgYnJlYWs7Cisj
ICAgLi4uCisjICAgZGVmYXVsdDoKKyMgICAgIERFRkFVTFQ7CisjICAgICBicmVhazsKKyMgfS4K
KyMgQWxsIHRoZSB2YWx1ZXMgYXJlIG9wdGlvbmFsLCBhbmQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0
byBhY3RpdmUKKyMgc3ltYm9scyBwcm9wZXJseSBxdW90ZWQuCisjCisjIFBsZWFzZSBrZWVwIGZv
cmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZp
bmUoW200X2Nhc2VdLAorW200X2lmKFskI10sIDAsIFtdLAorICAgICAgIFskI10sIDEsIFtdLAor
ICAgICAgIFskI10sIDIsIFskMl0sCisgICAgICAgWyQxXSwgWyQyXSwgWyQzXSwKKyAgICAgICBb
JDAoWyQxXSwgbTRfc2hpZnQzKCRAKSldKV0pCisKKworIyBtNF9ibWF0Y2goU1dJVENILCBSRTEs
IFZBTDEsIFJFMiwgVkFMMiwgLi4uLCBERUZBVUxUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBtNCBlcXVpdmFsZW50IG9mCisjCisj
IGlmIChTV0lUQ0ggPX4gUkUxKQorIyAgIFZBTDE7CisjIGVsaWYgKFNXSVRDSCA9fiBSRTIpCisj
ICAgVkFMMjsKKyMgZWxpZiAuLi4KKyMgICAuLi4KKyMgZWxzZQorIyAgIERFRkFVTFQKKyMKKyMg
QWxsIHRoZSB2YWx1ZXMgYXJlIG9wdGlvbmFsLCBhbmQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0byBh
Y3RpdmUgc3ltYm9scworIyBwcm9wZXJseSBxdW90ZWQuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVh
Y2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUo
W200X2JtYXRjaF0sCitbbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1
bWVudHM6ICQjXSldLAorICAgICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJn
dW1lbnRzOiAkIzogJDFdKV0sCisgICAgICAgWyQjXSwgMiwgWyQyXSwKKyAgICAgICBbbTRfaWYo
bTRfYnJlZ2V4cChbJDFdLCBbJDJdKSwgLTEsIFskMChbJDFdLCBtNF9zaGlmdDMoJEApKV0sCisJ
ICAgICAgWyQzXSldKV0pCisKKyMgbTRfYXJnbihOLCBBUkdTLi4uKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tCisjIEV4dHJhY3QgYXJndW1lbnQgTiAoZ3JlYXRlciB0aGFuIDApIGZyb20gQVJHUy4g
IEV4YW1wbGU6CisjICAgbTRfZGVmaW5lKFtiXSwgW0JdKQorIyAgIG00X2FyZ24oWzJdLCBbYV0s
IFtiXSwgW2NdKSA9PiBiCisjCisjIFJhdGhlciB0aGFuIHVzaW5nIG00X2NhcihtNF9zaGlmdG4o
WyQxXSwgJEApKSwgd2UgZXhwbG9pdCB0aGUgZmFjdCB0aGF0CisjIEdOVSBtNCBjYW4gZGlyZWN0
bHkgcmVmZXJlbmNlIGFueSBhcmd1bWVudCwgdGhyb3VnaCBhbiBpbmRpcmVjdCBtYWNyby4KK200
X2RlZmluZShbbTRfYXJnbl0sCitbbTRfYXNzZXJ0KFswIDwgJDFdKV1kbmwKK1ttNF9wdXNoZGVm
KFtfJDBdLCBbX200X3BvcGRlZihbXyQwXSldbTRfZHF1b3RlKFskXW00X2luY3IoWyQxXSkpKV8k
MCgkQCldKQorCisKKyMgbTRfY2FyKEFSR1MuLi4pCisjIG00X2NkcihBUkdTLi4uKQorIyAtLS0t
LS0tLS0tLS0tLS0KKyMgTWFuaXB1bGF0ZSBtNCBsaXN0cy4gIG00X2NhciByZXR1cm5zIHRoZSBm
aXJzdCBhcmd1bWVudC4gIG00X2NkcgorIyBidW5kbGVzIGFsbCBidXQgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGludG8gYSBxdW90ZWQgbGlzdC4gIFRoZXNlIHR3bworIyBtYWNyb3MgYXJlIGdlbmVyYWxs
eSB1c2VkIHdpdGggbGlzdCBhcmd1bWVudHMsIHdpdGggcXVvdGluZyByZW1vdmVkCisjIHRvIGJy
ZWFrIHRoZSBsaXN0IGludG8gbXVsdGlwbGUgbTQgQVJHUy4KK200X2RlZmluZShbbTRfY2FyXSwg
W1skMV1dKQorbTRfZGVmaW5lKFttNF9jZHJdLAorW200X2lmKFskI10sIDAsIFttNF9mYXRhbChb
JDA6IGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNdKV0sCisgICAgICAgWyQjXSwg
MSwgW10sCisgICAgICAgW200X2RxdW90ZShtNF9zaGlmdCgkQCkpXSldKQorCisjIF9tNF9jZHIo
QVJHUy4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIG00X2NkciwgZXhjZXB0IGluY2x1
ZGUgYSBsZWFkaW5nIGNvbW1hIHVubGVzcyBvbmx5IG9uZSBhcmd1bWVudAorIyByZW1haW5zLiAg
V2h5PyAgQmVjYXVzZSBjb21wYXJpbmcgYSBsYXJnZSBsaXN0IGFnYWluc3QgW10gaXMgbW9yZQor
IyBleHBlbnNpdmUgaW4gZXhwYW5zaW9uIHRpbWUgdGhhbiBjb21wYXJpbmcgdGhlIG51bWJlciBv
ZiBhcmd1bWVudHM7IHNvCisjIF9tNF9jZHIgY2FuIGJlIHVzZWQgdG8gcmVkdWNlIHRoZSBudW1i
ZXIgb2YgYXJndW1lbnRzIHdoZW4gaXQgaXMgdGltZQorIyB0byBlbmQgcmVjdXJzaW9uLgorbTRf
ZGVmaW5lKFtfbTRfY2RyXSwKK1ttNF9pZihbJCNdLCAxLCBbXSwKKyAgICAgICBbLCBtNF9kcXVv
dGUobTRfc2hpZnQoJEApKV0pXSkKKworCisKKyMgbTRfY29uZChURVNUMSwgVkFMMSwgSUYtVkFM
MSwgVEVTVDIsIFZBTDIsIElGLVZBTDIsIC4uLiwgW0RFRkFVTFRdKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj
IFNpbWlsYXIgdG8gbTRfaWYsIGV4Y2VwdCB0aGF0IGVhY2ggVEVTVCBpcyBleHBhbmRlZCB3aGVu
IGVuY291bnRlcmVkLgorIyBJZiB0aGUgZXhwYW5zaW9uIG9mIFRFU1RuIG1hdGNoZXMgdGhlIHN0
cmluZyBWQUxuLCB0aGUgcmVzdWx0IGlzIElGLVZBTG4uCisjIFRoZSByZXN1bHQgaXMgREVGQVVM
VCBpZiBubyB0ZXN0cyBwYXNzZWQuICBUaGlzIG1hY3JvIGFsbG93cworIyBzaG9ydC1jaXJjdWl0
aW5nIG9mIGV4cGVuc2l2ZSB0ZXN0cywgd2hlcmUgaXQgcGF5cyB0byBhcnJhbmdlIHF1aWNrCisj
IGZpbHRlciB0ZXN0cyB0byBydW4gZmlyc3QuCisjCisjIEZvciBhbiBleGFtcGxlLCBjb25zaWRl
ciBhIHByZXZpb3VzIGltcGxlbWVudGF0aW9uIG9mIF9BU19RVU9URV9JRkVMU0U6CisjCisjICAg
IG00X2lmKG00X2luZGV4KFskMV0sIFtcXSksIFstMV0sIFskMl0sCisjICAgICAgICAgIG00X2V2
YWwobTRfaW5kZXgoWyQxXSwgW1xcXSkgPj0gMCksIFsxXSwgWyQyXSwKKyMgICAgICAgICAgbTRf
ZXZhbChtNF9pbmRleChbJDFdLCBbXCRdKSA+PSAwKSwgWzFdLCBbJDJdLAorIyAgICAgICAgICBt
NF9ldmFsKG00X2luZGV4KFskMV0sIFtcYF0pID49IDApLCBbMV0sIFskM10sCisjICAgICAgICAg
IG00X2V2YWwobTRfaW5kZXgoWyQxXSwgW1wiXSkgPj0gMCksIFsxXSwgWyQzXSwKKyMgICAgICAg
ICAgWyQyXSkKKyMKKyMgSGVyZSwgbTRfaW5kZXggaXMgY29tcHV0ZWQgNSB0aW1lcywgYW5kIG00
X2V2YWwgNCwgZXZlbiBpZiAkMSBjb250YWlucworIyBubyBiYWNrc2xhc2guICBJdCBpcyBtb3Jl
IGVmZmljaWVudCB0byBkbzoKKyMKKyMgICAgbTRfY29uZChbbTRfaW5kZXgoWyQxXSwgW1xdKV0s
IFstMV0sIFskMl0sCisjICAgICAgICAgICAgW200X2V2YWwobTRfaW5kZXgoWyQxXSwgW1xcXSkg
Pj0gMCldLCBbMV0sIFskMl0sCisjICAgICAgICAgICAgW200X2V2YWwobTRfaW5kZXgoWyQxXSwg
W1wkXSkgPj0gMCldLCBbMV0sIFskMl0sCisjICAgICAgICAgICAgW200X2V2YWwobTRfaW5kZXgo
WyQxXSwgW1xgXSkgPj0gMCldLCBbMV0sIFskM10sCisjICAgICAgICAgICAgW200X2V2YWwobTRf
aW5kZXgoWyQxXSwgW1wiXSkgPj0gMCldLCBbMV0sIFskM10sCisjICAgICAgICAgICAgWyQyXSkK
KyMKKyMgSW4gdGhlIGNvbW1vbiBjYXNlIG9mICQxIHdpdGggbm8gYmFja3NsYXNoLCBvbmx5IG9u
ZSBtNF9pbmRleCBleHBhbnNpb24KKyMgb2NjdXJzLCBhbmQgbTRfZXZhbCBpcyBhdm9pZGVkIGFs
dG9nZXRoZXIuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBh
ZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW200X2NvbmRdLAorW200X2lmKFskI10s
IFswXSwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10p
XSwKKyAgICAgICBbJCNdLCBbMV0sIFskMV0sCisgICAgICAgbTRfZXZhbChbJCMgJSAzXSksIFsy
XSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhbiBhcmd1bWVudF0pXSwKKyAgICAgICBbXyQwKCRA
KV0pXSkKKworbTRfZGVmaW5lKFtfbTRfY29uZF0sCitbbTRfaWYoKCQxKSwgWygkMildLCBbJDNd
LAorICAgICAgIFskI10sIFszXSwgW10sCisgICAgICAgWyQjXSwgWzRdLCBbJDRdLAorICAgICAg
IFskMChtNF9zaGlmdDMoJEApKV0pXSkKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICMjCisjIyA2LiBFbmhhbmNlZCB2ZXJzaW9uIG9mIHNvbWUgcHJpbWl0
aXZlcy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMj
CisKKyMgbTRfYnBhdHN1YnN0cyhTVFJJTkcsIFJFMSwgU1VCU1QxLCBSRTIsIFNVQlNUMiwgLi4u
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIG00IGVxdWl2YWxlbnQgb2YKKyMKKyMgICAkXyA9IFNUUklORzsKKyMgICBzL1JFMS9TVUJT
VDEvZzsKKyMgICBzL1JFMi9TVUJTVDIvZzsKKyMgICAuLi4KKyMKKyMgQWxsIHRoZSB2YWx1ZXMg
YXJlIG9wdGlvbmFsLCBhbmQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9scwor
IyBwcm9wZXJseSBxdW90ZWQuCisjCisjIEkgd291bGQgaGF2ZSBsaWtlZCB0byBuYW1lIHRoaXMg
bWFjcm8gYG00X2JwYXRzdWJzdCcsIHVuZm9ydHVuYXRlbHksCisjIGR1ZSB0byBxdW90YXRpb24g
cHJvYmxlbXMsIEkgbmVlZCB0byBkb3VibGUgcXVvdGUgJDEgYmVsb3csIHRoZXJlZm9yZQorIyB0
aGUgYW5jaG9ycyBhcmUgYnJva2VuIDooICBJIGNhbid0IGxldCB1c2VycyBiZSB0cmFwcGVkIGJ5
IHRoYXQuCisjCisjIFJlY2FsbCB0aGF0IG00X3NoaWZ0MyBhbHdheXMgcmVzdWx0cyBpbiBhbiBh
cmd1bWVudC4gIEhlbmNlLCB3ZSBuZWVkCisjIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYSBmaW5h
bCBkZWxldGlvbiB2cy4gZW5kaW5nIHJlY3Vyc2lvbi4KKyMKKyMgUGxlYXNlIGtlZXAgZm9yZWFj
aC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200X2RlZmluZShb
bTRfYnBhdHN1YnN0c10sCitbbTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogdG9vIGZldyBh
cmd1bWVudHM6ICQjXSldLAorICAgICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcg
YXJndW1lbnRzOiAkIzogJDFdKV0sCisgICAgICAgWyQjXSwgMiwgW200X3VucXVvdGUobTRfYnVp
bHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0pKV0sCisgICAgICAgWyQjXSwgMywgW200X3Vu
cXVvdGUobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pKV0sCisgICAg
ICAgW18kMCgkQG00X2lmKG00X2V2YWwoJCMgJiAxKSwgMCwgWyxdKSldKV0pCittNF9kZWZpbmUo
W19tNF9icGF0c3Vic3RzXSwKK1ttNF9pZihbJCNdLCAyLCBbJDFdLAorICAgICAgIFskMChtNF9i
dWlsdGluKFtwYXRzdWJzdF0sIFtbJDFdXSwgWyQyXSwgWyQzXSksCisJICAgbTRfc2hpZnQzKCRA
KSldKV0pCisKKworIyBtNF9jb3B5KFNSQywgRFNUKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBE
ZWZpbmUgdGhlIHB1c2hkZWYgc3RhY2sgRFNUIGFzIGEgY29weSBvZiB0aGUgcHVzaGRlZiBzdGFj
ayBTUkM7CisjIGdpdmUgYW4gZXJyb3IgaWYgRFNUIGlzIGFscmVhZHkgZGVmaW5lZC4gIFRoaXMg
aXMgcGFydGljdWxhcmx5IG5pY2UKKyMgZm9yIGNvcHlpbmcgc2VsZi1tb2RpZnlpbmcgcHVzaGRl
ZiBzdGFja3MsIHdoZXJlIHRoZSB0b3AgZGVmaW5pdGlvbgorIyBpbmNsdWRlcyBvbmUtc2hvdCBp
bml0aWFsaXphdGlvbiB0aGF0IGlzIGxhdGVyIHBvcHBlZCB0byB0aGUgbm9ybWFsCisjIGRlZmlu
aXRpb24uICBUaGlzIHZlcnNpb24gaW50ZW50aW9uYWxseSBkb2VzIG5vdGhpbmcgaWYgU1JDIGlz
CisjIHVuZGVmaW5lZC4KKyMKKyMgU29tZSBtYWNyb3Mgc2ltcGx5IGNhbid0IGJlIHJlbmFtZWQg
d2l0aCB0aGlzIG1ldGhvZDogbmFtZWx5LCBhbnl0aGluZworIyBpbnZvbHZlZCBpbiB0aGUgaW1w
bGVtZW50YXRpb24gb2YgbTRfc3RhY2tfZm9yZWFjaF9zZXAuCittNF9kZWZpbmUoW200X2NvcHld
LAorW200X2lmZGVmKFskMl0sIFttNF9mYXRhbChbJDA6IHdvbid0IG92ZXJ3cml0ZSBkZWZpbmVk
IG1hY3JvOiAkMl0pXSwKKwkgIFttNF9zdGFja19mb3JlYWNoX3NlcChbJDFdLCBbbTRfcHVzaGRl
ZihbJDJdLF0sIFspXSldKV1kbmwKK1ttNF9pZmRlZihbbTRfbG9jYXRpb24oJDEpXSwgW200X2Rl
ZmluZShbbTRfbG9jYXRpb24oJDIpXSwgbTRfbG9jYXRpb24pXSldKQorCisKKyMgbTRfY29weV9m
b3JjZShTUkMsIERTVCkKKyMgbTRfcmVuYW1lX2ZvcmNlKFNSQywgRFNUKQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIExpa2UgbTRfY29weS9tNF9yZW5hbWUsIGV4Y2VwdCBibGluZGx5
IG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgRFNULgorIyBOb3RlIHRoYXQgbTRfY29weV9mb3JjZSB0
b2xlcmF0ZXMgdW5kZWZpbmVkIFNSQywgd2hpbGUgbTRfcmVuYW1lX2ZvcmNlCisjIGRvZXMgbm90
LgorbTRfZGVmaW5lKFttNF9jb3B5X2ZvcmNlXSwKK1ttNF9pZmRlZihbJDJdLCBbX200X3VuZGVm
aW5lKFskMl0pXSltNF9jb3B5KCRAKV0pCisKK200X2RlZmluZShbbTRfcmVuYW1lX2ZvcmNlXSwK
K1ttNF9pZmRlZihbJDJdLCBbX200X3VuZGVmaW5lKFskMl0pXSltNF9yZW5hbWUoJEApXSkKKwor
CisjIG00X2RlZmluZV9kZWZhdWx0KE1BQ1JPLCBWQUxVRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorIyBJZiBNQUNSTyBpcyB1bmRlZmluZWQsIHNldCBpdCB0byBWQUxVRS4K
K200X2RlZmluZShbbTRfZGVmaW5lX2RlZmF1bHRdLAorW200X2lmbmRlZihbJDFdLCBbbTRfZGVm
aW5lKCRAKV0pXSkKKworCisjIG00X2RlZmF1bHQoRVhQMSwgRVhQMikKKyMgbTRfZGVmYXVsdF9u
YmxhbmsoRVhQMSwgRVhQMikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmV0
dXJucyBFWFAxIGlmIG5vdCBlbXB0eS9ibGFuaywgb3RoZXJ3aXNlIEVYUDIuICBFeHBhbmQgdGhl
IHJlc3VsdC4KKyMKKyMgbTRfZGVmYXVsdCBpcyBjYWxsZWQgb24gaG90IHBhdGhzLCBzbyBpbmxp
bmUgdGhlIGNvbnRlbnRzIG9mIG00X2lmdmFsLAorIyBmb3Igb25lIGxlc3Mgcm91bmQgb2YgZXhw
YW5zaW9uLgorbTRfZGVmaW5lKFttNF9kZWZhdWx0XSwKK1ttNF9pZihbJDFdLCBbXSwgWyQyXSwg
WyQxXSldKQorCittNF9kZWZpbmUoW200X2RlZmF1bHRfbmJsYW5rXSwKK1ttNF9pZmJsYW5rKFsk
MV0sIFskMl0sIFskMV0pXSkKKworCisjIG00X2RlZmF1bHRfcXVvdGVkKEVYUDEsIEVYUDIpCisj
IG00X2RlZmF1bHRfbmJsYW5rX3F1b3RlZChFWFAxLCBFWFAyKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmV0dXJucyBFWFAxIGlmIG5vbiBlbXB0eS9ibGFuaywg
b3RoZXJ3aXNlIEVYUDIuICBMZWF2ZSB0aGUgcmVzdWx0IHF1b3RlZC4KKyMKKyMgRm9yIGNvbXBh
cmlzb246CisjICAgbTRfZGVmaW5lKFthY3RpdmVdLCBbQUNUSVZFXSkKKyMgICBtNF9kZWZhdWx0
KFthY3RpdmVdLCBbZGVmYXVsdF0pID0+IEFDVElWRQorIyAgIG00X2RlZmF1bHQoW10sIFthY3Rp
dmVdKSA9PiBBQ1RJVkUKKyMgICAtbTRfZGVmYXVsdChbIF0sIFthY3RpdmVdKS0gPT4gLSAtCisj
ICAgLW00X2RlZmF1bHRfbmJsYW5rKFsgXSwgW2FjdGl2ZV0pLSA9PiAtQUNUSVZFLQorIyAgIG00
X2RlZmF1bHRfcXVvdGVkKFthY3RpdmVdLCBbZGVmYXVsdF0pID0+IGFjdGl2ZQorIyAgIG00X2Rl
ZmF1bHRfcXVvdGVkKFtdLCBbYWN0aXZlXSkgPT4gYWN0aXZlCisjICAgLW00X2RlZmF1bHRfcXVv
dGVkKFsgXSwgW2FjdGl2ZV0pLSA9PiAtIC0KKyMgICAtbTRfZGVmYXVsdF9uYmxhbmtfcXVvdGVk
KFsgXSwgW2FjdGl2ZV0pLSA9PiAtYWN0aXZlLQorIworIyBtNF9kZWZhdWx0IG1hY3JvIGlzIGNh
bGxlZCBvbiBob3QgcGF0aHMsIHNvIGlubGluZSB0aGUgY29udGVudHMgb2YgbTRfaWZ2YWwsCisj
IGZvciBvbmUgbGVzcyByb3VuZCBvZiBleHBhbnNpb24uCittNF9kZWZpbmUoW200X2RlZmF1bHRf
cXVvdGVkXSwKK1ttNF9pZihbJDFdLCBbXSwgW1skMl1dLCBbWyQxXV0pXSkKKworbTRfZGVmaW5l
KFttNF9kZWZhdWx0X25ibGFua19xdW90ZWRdLAorW200X2lmYmxhbmsoWyQxXSwgW1skMl1dLCBb
WyQxXV0pXSkKKworCisjIG00X2RlZm4oTkFNRSkKKyMgLS0tLS0tLS0tLS0tLQorIyBMaWtlIHRo
ZSBvcmlnaW5hbCwgZXhjZXB0IGd1YXJhbnRlZSBhIHdhcm5pbmcgd2hlbiB1c2luZyBzb21ldGhp
bmcgd2hpY2ggaXMKKyMgdW5kZWZpbmVkICh1bmxpa2UgTTQgMS40LngpLiAgVGhpcyByZXBsYWNl
bWVudCBpcyBub3QgYSBmdWxsLWZlYXR1cmVkCisjIHJlcGxhY2VtZW50OiBpZiBhbnkgb2YgdGhl
IGRlZmluZWQgbWFjcm9zIGNvbnRhaW4gdW5iYWxhbmNlZCBxdW90aW5nLCBidXQKKyMgd2hlbiBw
YXN0ZWQgdG9nZXRoZXIgcmVzdWx0IGluIGEgd2VsbC1xdW90ZWQgc3RyaW5nLCB0aGVuIG9ubHkg
bmF0aXZlIG00CisjIHN1cHBvcnQgaXMgYWJsZSB0byBnZXQgaXQgY29ycmVjdC4gIEJ1dCB0aGF0
J3Mgd2hlcmUgcXVhZHJpZ3JhcGhzIGNvbWUgaW4KKyMgaGFuZHksIGlmIHlvdSByZWFsbHkgbmVl
ZCB1bmJhbGFuY2VkIHF1b3RlcyBpbnNpZGUgeW91ciBtYWNyb3MuCisjCisjIFRoaXMgbWFjcm8g
aXMgY2FsbGVkIGZyZXF1ZW50bHksIHNvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgYWRkaXRpb25h
bAorIyBleHBhbnNpb25zIGJ5IHNraXBwaW5nIG00X2lmbmRlZi4gIEJldHRlciB5ZXQsIGlmIF9f
bTRfdmVyc2lvbl9fIGV4aXN0cywKKyMgKGFkZGVkIGluIE00IDEuNiksIHRoZW4gbGV0IG00IGRv
IHRoZSBqb2IgZm9yIHVzIChzZWUgbTRfaW5pdCkuCittNF9kZWZpbmUoW200X2RlZm5dLAorW200
X2lmKFskI10sIFswXSwgW1skMF1dLAorICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0s
IFtfbTRfZGVmbihbJDFdKV0sCisJCQkgICAgW200X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3Jv
OiAkMV0pXSldLAorICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKV0pCisKKworIyBtNF9k
dW1wZGVmKE5BTUUuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW4gbTQgMS40LngsIGR1
bXBkZWYgd3JpdGVzIHRvIHRoZSBjdXJyZW50IGRlYnVnZmlsZSwgcmF0aGVyIHRoYW4KKyMgc3Rk
ZXJyLiAgVGhpcyBpbiB0dXJuIHJveWFsbHkgY29uZnVzZXMgYXV0b200dGU7IHNvIHdlIGZvbGxv
dyB0aGUKKyMgbGVhZCBvZiBuZXdlciBtNCBhbmQgYWx3YXlzIGR1bXAgdG8gc3RkZXJyLiAgVW5s
aWtlIHRoZSBvcmlnaW5hbCwKKyMgdGhpcyB2ZXJzaW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50LCBz
aW5jZSB0aGVyZSBpcyBubyBjb252ZW5pZW50IHdheQorIyBpbiBtNCAxLjQueCB0byBncmFiIHRo
ZSBuYW1lcyBvZiBhbGwgZGVmaW5lZCBtYWNyb3MuICBOZXdlciBtNAorIyBhbHdheXMgZHVtcHMg
dG8gc3RkZXJyLCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IGRlYnVnZmlsZTsgaXQgYWxzbwor
IyBwcm92aWRlcyBtNHN5bWJvbHMgYXMgYSB3YXkgdG8gZ3JhYiBhbGwgY3VycmVudCBtYWNybyBu
YW1lcy4gIEJ1dAorIyBkdW1wZGVmcyBpcyBub3QgZnJlcXVlbnRseSBjYWxsZWQsIHNvIHdlIGRv
bid0IG5lZWQgdG8gd29ycnkgYWJvdXQKKyMgY29uZGl0aW9uYWxseSB1c2luZyB0aGVzZSBuZXdl
ciBmZWF0dXJlcy4gIEFsc28sIHRoaXMgdmVyc2lvbgorIyBkb2Vzbid0IHNvcnQgbXVsdGlwbGUg
YXJndW1lbnRzLgorIworIyBJZiB3ZSBkZXRlY3QgbTQgMS42IG9yIG5ld2VyLCB0aGVuIHByb3Zp
ZGUgYW4gYWx0ZXJuYXRlIGRlZmluaXRpb24sCisjIGluc3RhbGxlZCBkdXJpbmcgbTRfaW5pdCwg
dGhhdCBhbGxvd3MgYnVpbHRpbnMgdGhyb3VnaC4KKyMgVW5mb3J0dW5hdGVseSwgdGhlcmUgaXMg
bm8gbmljZSB3YXkgaW4gbTQgMS40LnggdG8gZHVtcCBidWlsdGlucy4KK200X2RlZmluZShbbTRf
ZHVtcGRlZl0sCitbbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBtaXNzaW5nIGFyZ3Vt
ZW50XSldLAorICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFttNF9lcnJwcmludG4o
CisgIFskMToJXW00X2RxdW90ZShfbTRfZGVmbihbJDFdKSkpXSwgW200X2ZhdGFsKFskMDogdW5k
ZWZpbmVkIG1hY3JvOiAkMV0pXSldLAorICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKV0p
CisKK200X2RlZmluZShbX200X2R1bXBkZWZdLAorW200X2lmKFskI10sIFswXSwgW200X2ZhdGFs
KFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKKyAgICAgICBbJCNdLCBbMV0sIFttNF9idWlsdGlu
KFtkdW1wZGVmXSwgWyQxXSldLAorICAgICAgIFttNF9tYXBfYXJnc19zZXAoW200X2J1aWx0aW4o
W2R1bXBkZWZdLF0sIFspXSwgW10sICRAKV0pXSkKKworCisjIG00X2R1bXBkZWZzKE5BTUUuLi4p
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNpbWlsYXIgdG8gYG00X2R1bXBkZWYoTkFNRSkn
LCBidXQgaWYgTkFNRSB3YXMgbTRfcHVzaGRlZidlZCwgZGlzcGxheSBpdHMKKyMgdmFsdWUgc3Rh
Y2sgKG1vc3QgcmVjZW50IGRpc3BsYXllZCBmaXJzdCkuICBBbHNvLCB0aGlzIHZlcnNpb24gc2ls
ZW50bHkKKyMgaWdub3JlcyB1bmRlZmluZWQgbWFjcm9zLCByYXRoZXIgdGhhbiBlcnJvcmluZyBv
dXQuCisjCisjIFRoaXMgbWFjcm8gY2hlYXRzLCBiZWNhdXNlIGl0IHJlbGllcyBvbiB0aGUgY3Vy
cmVudCBkZWZpbml0aW9uIG9mIE5BTUUKKyMgd2hpbGUgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBt
NF9zdGFja19mb3JlYWNoX2xpZm8gaXMgZXZhbHVhdGVkICh3aGljaAorIyB3b3VsZCBiZSB1bmRl
ZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBBUEkpLgorbTRfZGVmaW5lKFttNF9kdW1wZGVmc10sCitb
bTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBtaXNzaW5nIGFyZ3VtZW50XSldLAorICAg
ICAgIFskI10sIFsxXSwgW200X3N0YWNrX2ZvcmVhY2hfbGlmbyhbJDFdLCBbbTRfZHVtcGRlZihb
JDFdKW00X2lnbm9yZV0pXSwKKyAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSldKQorCisj
IG00X2VzeXNjbWRfcyhDT01NQU5EKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBt
NF9lc3lzY21kLCBleGNlcHQgc3RyaXAgYW55IHRyYWlsaW5nIG5ld2xpbmVzLCB0aHVzIGJlaGF2
aW5nCisjIG1vcmUgbGlrZSBzaGVsbCBjb21tYW5kIHN1YnN0aXR1dGlvbi4KK200X2RlZmluZShb
bTRfZXN5c2NtZF9zXSwKK1ttNF9jaG9tcF9hbGwobTRfZXN5c2NtZChbJDFdKSldKQorCisKKyMg
bTRfcG9wZGVmKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIHRoZSBvcmlnaW5hbCwg
ZXhjZXB0IGd1YXJhbnRlZSBhIHdhcm5pbmcgd2hlbiB1c2luZyBzb21ldGhpbmcgd2hpY2ggaXMK
KyMgdW5kZWZpbmVkICh1bmxpa2UgTTQgMS40LngpLgorIworIyBUaGlzIG1hY3JvIGlzIGNhbGxl
ZCBmcmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGFkZGl0aW9uYWwKKyMgZXhw
YW5zaW9ucyBieSBza2lwcGluZyBtNF9pZm5kZWYuICBCZXR0ZXIgeWV0LCBpZiBfX200X3ZlcnNp
b25fXyBleGlzdHMsCisjIChhZGRlZCBpbiBNNCAxLjYpLCB0aGVuIGxldCBtNCBkbyB0aGUgam9i
IGZvciB1cyAoc2VlIG00X2luaXQpLgorbTRfZGVmaW5lKFttNF9wb3BkZWZdLAorW200X2lmKFsk
I10sIFswXSwgW1skMF1dLAorICAgICAgIFskI10sIFsxXSwgW200X2lmZGVmKFskMV0sIFtfbTRf
cG9wZGVmKFskMV0pXSwKKwkJCSAgICBbbTRfZmF0YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQx
XSldKV0sCisgICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pXSkKKworCisjIG00X3NoaWZ0
bihOLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybnMgLi4uIHNoaWZ0ZWQgTiB0
aW1lcy4gIFVzZWZ1bCBmb3IgcmVjdXJzaXZlICJ2YXJhcmdzIiBjb25zdHJ1Y3RzLgorIworIyBB
dXRvY29uZiBkb2VzIG5vdCB1c2UgdGhpcyBtYWNybywgYmVjYXVzZSBpdCBpcyBpbmhlcmVudGx5
IHNsb3dlciB0aGFuCisjIGNhbGxpbmcgdGhlIGNvbW1vbiBjYXNlcyBvZiBtNF9zaGlmdDIgb3Ig
bTRfc2hpZnQzIGRpcmVjdGx5LiAgQnV0IGl0CisjIG1pZ2h0IGFzIHdlbGwgYmUgZmFzdCBmb3Ig
b3RoZXIgY2xpZW50cywgc3VjaCBhcyBMaWJ0b29sLiAgT25lIHdheSB0bworIyBkbyB0aGlzIGlz
IHRvIGV4cGFuZCAkQCBvbmx5IG9uY2UgaW4gX200X3NoaWZ0biAob3RoZXJ3aXNlLCBmb3IgbG9u
ZworIyBsaXN0cywgdGhlIGV4cGFuc2lvbiBvZiBtNF9pZiB0YWtlcyB0d2ljZSBhcyBtdWNoIG1l
bW9yeSBhcyB3aGF0IHRoZQorIyBsaXN0IGl0c2VsZiBvY2N1cGllcywgb25seSB0byB0aHJvdyBh
d2F5IHRoZSB1bnVzZWQgYnJhbmNoKS4gIFRoZSBlbmQKKyMgcmVzdWx0IGlzIHN0cmljdGx5IGVx
dWl2YWxlbnQgdG8KKyMgICBtNF9pZihbJDFdLCAxLCBbbTRfc2hpZnQoLG00X3NoaWZ0KG00X3No
aWZ0KCRAKSkpXSwKKyMgICAgICAgICBbX200X3NoaWZ0bihtNF9kZWNyKFskMV0pLCBtNF9zaGlm
dChtNF9zaGlmdCgkQCkpKV0pCisjIGJ1dCB3aXRoIHRoZSBmaW5hbCBgbTRfc2hpZnQobTRfc2hp
ZnQoJEApKSknIHNoYXJlZCBiZXR3ZWVuIHRoZSB0d28KKyMgcGF0aHMuICBUaGUgZmlyc3QgbGVn
IHVzZXMgYSBuby1vcCBtNF9zaGlmdCgsJEApIHRvIGJhbGFuY2Ugb3V0IHRoZSAoKS4KKyMKKyMg
UGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUg
aGVyZS4KK200X2RlZmluZShbbTRfc2hpZnRuXSwKK1ttNF9hc3NlcnQoMCA8ICQxICYmICQxIDwg
JCMpXyQwKCRAKV0pCisKK200X2RlZmluZShbX200X3NoaWZ0bl0sCitbbTRfaWYoWyQxXSwgMSwg
W200X3NoaWZ0KF0sCisgICAgICAgWyQwKG00X2RlY3IoWyQxXSldKSwgbTRfc2hpZnQobTRfc2hp
ZnQoJEApKSldKQorCisjIG00X3NoaWZ0MiguLi4pCisjIG00X3NoaWZ0MyguLi4pCisjIC0tLS0t
LS0tLS0tLS0tCisjIFJldHVybnMgLi4uIHNoaWZ0ZWQgdHdpY2UsIGFuZCB0aHJlZSB0aW1lcy4g
IEZhc3RlciB0aGFuIG00X3NoaWZ0bi4KK200X2RlZmluZShbbTRfc2hpZnQyXSwgW200X3NoaWZ0
KG00X3NoaWZ0KCRAKSldKQorbTRfZGVmaW5lKFttNF9zaGlmdDNdLCBbbTRfc2hpZnQobTRfc2hp
ZnQobTRfc2hpZnQoJEApKSldKQorCisjIF9tNF9zaGlmdDIoLi4uKQorIyBfbTRfc2hpZnQzKC4u
LikKKyMgLS0tLS0tLS0tLS0tLS0tCisjIExpa2UgbTRfc2hpZnQyIG9yIG00X3NoaWZ0MywgZXhj
ZXB0IGluY2x1ZGUgYSBsZWFkaW5nIGNvbW1hIHVubGVzcyBzaGlmdGluZworIyBjb25zdW1lcyBh
bGwgYXJndW1lbnRzLiAgV2h5PyAgQmVjYXVzZSBpbiByZWN1cnNpb24sIGl0IGlzIG5pY2UgdG8K
KyMgZGlzdGluZ3Vpc2ggYmV0d2VlbiAxIGVsZW1lbnQgbGVmdCBhbmQgMCBlbGVtZW50cyBsZWZ0
LCBiYXNlZCBvbiBob3cgbWFueQorIyBhcmd1bWVudHMgdGhpcyBzaGlmdCBleHBhbmRzIHRvLgor
bTRfZGVmaW5lKFtfbTRfc2hpZnQyXSwKK1ttNF9pZihbJCNdLCBbMl0sIFtdLAorICAgICAgIFss
IG00X3NoaWZ0KG00X3NoaWZ0KCRAKSldKV0pCittNF9kZWZpbmUoW19tNF9zaGlmdDNdLAorW200
X2lmKFskI10sIFszXSwgW10sCisgICAgICAgWywgbTRfc2hpZnQobTRfc2hpZnQobTRfc2hpZnQo
JEApKSldKV0pCisKKworIyBtNF91bmRlZmluZShOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLQor
IyBMaWtlIHRoZSBvcmlnaW5hbCwgZXhjZXB0IGd1YXJhbnRlZSBhIHdhcm5pbmcgd2hlbiB1c2lu
ZyBzb21ldGhpbmcgd2hpY2ggaXMKKyMgdW5kZWZpbmVkICh1bmxpa2UgTTQgMS40LngpLgorIwor
IyBUaGlzIG1hY3JvIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50
IG9mIGFkZGl0aW9uYWwKKyMgZXhwYW5zaW9ucyBieSBza2lwcGluZyBtNF9pZm5kZWYuICBCZXR0
ZXIgeWV0LCBpZiBfX200X3ZlcnNpb25fXyBleGlzdHMsCisjIChhZGRlZCBpbiBNNCAxLjYpLCB0
aGVuIGxldCBtNCBkbyB0aGUgam9iIGZvciB1cyAoc2VlIG00X2luaXQpLgorbTRfZGVmaW5lKFtt
NF91bmRlZmluZV0sCitbbTRfaWYoWyQjXSwgWzBdLCBbWyQwXV0sCisgICAgICAgWyQjXSwgWzFd
LCBbbTRfaWZkZWYoWyQxXSwgW19tNF91bmRlZmluZShbJDFdKV0sCisJCQkgICAgW200X2ZhdGFs
KFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAorICAgICAgIFttNF9tYXBfYXJncyhbJDBd
LCAkQCldKV0pCisKKyMgX200X3dyYXAoUFJFLCBQT1NUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
CisjIEhlbHBlciBtYWNybyBmb3IgbTRfd3JhcCBhbmQgbTRfd3JhcF9saWZvLiAgQWxsb3dzIG5l
c3RlZCBjYWxscyB0bworIyBtNF93cmFwIHdpdGhpbiB3cmFwcGVkIHRleHQuICBVc2UgX200X2Rl
Zm4gYW5kIF9tNF9wb3BkZWYgZm9yIHNwZWVkLgorbTRfZGVmaW5lKFtfbTRfd3JhcF0sCitbbTRf
aWZkZWYoWyQwX3RleHRdLAorCSAgW200X2RlZmluZShbJDBfdGV4dF0sIFskMV1fbTRfZGVmbihb
JDBfdGV4dF0pWyQyXSldLAorCSAgW200X2J1aWx0aW4oW200d3JhcF0sIFttNF91bnF1b3RlKAor
ICBfbTRfZGVmbihbJDBfdGV4dF0pX200X3BvcGRlZihbJDBfdGV4dF0pKV0pbTRfZGVmaW5lKFsk
MF90ZXh0XSwgWyQxJDJdKV0pXSkKKworIyBtNF93cmFwKFRFWFQpCisjIC0tLS0tLS0tLS0tLS0K
KyMgQXBwZW5kIFRFWFQgdG8gdGhlIGxpc3Qgb2YgaG9va3MgdG8gYmUgZXhlY3V0ZWQgYXQgdGhl
IGVuZCBvZiBpbnB1dC4KKyMgV2hlcmVhcyB0aGUgb3JkZXIgb2YgdGhlIG9yaWdpbmFsIG1heSBi
ZSBMSUZPIGluIHRoZSB1bmRlcmx5aW5nIG00LAorIyB0aGlzIHZlcnNpb24gaXMgYWx3YXlzIEZJ
Rk8uCittNF9kZWZpbmUoW200X3dyYXBdLAorW19tNF93cmFwKFtdLCBbJDFbXV0pXSkKKworIyBt
NF93cmFwX2xpZm8oVEVYVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByZXBlbmQgVEVYVCB0
byB0aGUgbGlzdCBvZiBob29rcyB0byBiZSBleGVjdXRlZCBhdCB0aGUgZW5kIG9mIGlucHV0Lgor
IyBXaGVyZWFzIHRoZSBvcmRlciBvZiBtNF93cmFwIG1heSBiZSBGSUZPIGluIHRoZSB1bmRlcmx5
aW5nIG00LCB0aGlzCisjIHZlcnNpb24gaXMgYWx3YXlzIExJRk8uCittNF9kZWZpbmUoW200X3dy
YXBfbGlmb10sCitbX200X3dyYXAoWyQxW11dKV0pCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKyMjIDcuIFF1b3RpbmcgbWFuaXB1bGF0aW9uLiAgIyMKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKKworCisjIG00X2FwcGx5KE1BQ1JPLCBMSVNUKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgSW52b2tlIE1BQ1JPLCB3aXRoIGFyZ3VtZW50cyBwcm92aWRlZCBm
cm9tIHRoZSBxdW90ZWQgbGlzdCBvZgorIyBjb21tYS1zZXBhcmF0ZWQgcXVvdGVkIGFyZ3VtZW50
cy4gIElmIExJU1QgaXMgZW1wdHksIGludm9rZSBNQUNSTworIyB3aXRob3V0IGFyZ3VtZW50cy4g
IFRoZSBleHBhbnNpb24gd2lsbCBub3QgYmUgY29uY2F0ZW5hdGVkIHdpdGgKKyMgc3Vic2VxdWVu
dCB0ZXh0LgorbTRfZGVmaW5lKFttNF9hcHBseV0sCitbbTRfaWYoWyQyXSwgW10sIFskMV0sIFsk
MSgkMildKVtdXSkKKworIyBfbTRfYXBwbHkoTUFDUk8sIExJU1QpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgTGlrZSBtNF9hcHBseSwgZXhjZXB0IGRvIG5vdGhpbmcgaWYgTElTVCBpcyBl
bXB0eS4KK200X2RlZmluZShbX200X2FwcGx5XSwKK1ttNF9pZihbJDJdLCBbXSwgW10sIFskMSgk
MilbXV0pXSkKKworCisjIG00X2NvdW50KEFSR1MpCisjIC0tLS0tLS0tLS0tLS0tCisjIFJldHVy
biBhIGNvdW50IG9mIGhvdyBtYW55IEFSR1MgYXJlIHByZXNlbnQuCittNF9kZWZpbmUoW200X2Nv
dW50XSwgWyQjXSkKKworCisjIG00X2N1cnJ5KE1BQ1JPLCBBUkcuLi4pCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYXJndW1lbnQgY3VycnlpbmcuICBUaGUgZXhwYW5zaW9u
IG9mIHRoaXMgbWFjcm8gaXMgYW5vdGhlcgorIyBtYWNybyB0aGF0IHRha2VzIGV4YWN0bHkgb25l
IGFyZ3VtZW50LCBhcHBlbmRzIGl0IHRvIHRoZSBlbmQgb2YgdGhlCisjIG9yaWdpbmFsIEFSRyBs
aXN0LCB0aGVuIGludm9rZXMgTUFDUk8uICBGb3IgZXhhbXBsZToKKyMgICBtNF9jdXJyeShbbTRf
Y3VycnldLCBbbTRfcmV2ZXJzZV0sIFsxXSkoWzJdKShbM10pID0+IDMsIDIsIDEKKyMgTm90IHF1
aXRlIGFzIHByYWN0aWNhbCBhcyBtNF9pbmNyLCBidXQgeW91IGNvdWxkIGFsc28gZG86CisjICAg
bTRfZGVmaW5lKFthZGRdLCBbbTRfZXZhbCgoWyQxXSkgKyAoWyQyXSkpXSkKKyMgICBtNF9kZWZp
bmUoW2FkZF9vbmVdLCBbbTRfY3VycnkoW2FkZF0sIFsxXSldKQorIyAgIGFkZF9vbmUoKShbMl0p
ID0+IDMKK200X2RlZmluZShbbTRfY3VycnldLCBbJDEobTRfc2hpZnQoJEAsKV8kMF0pCittNF9k
ZWZpbmUoW19tNF9jdXJyeV0sICAgICAgICAgICAgICAgW1skMV0pXSkKKworCisjIG00X2RvKFNU
UklORywgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhpcyBtYWNybyBpbnZva2VzIGFs
bCBpdHMgYXJndW1lbnRzIChpbiBzZXF1ZW5jZSwgb2YgY291cnNlKS4gIEl0IGlzCisjIHVzZWZ1
bCBmb3IgbWFraW5nIHlvdXIgbWFjcm9zIG1vcmUgc3RydWN0dXJlZCBhbmQgcmVhZGFibGUgYnkg
ZHJvcHBpbmcKKyMgdW5uZWNlc3NhcnkgZG5sJ3MgYW5kIGhhdmUgdGhlIG1hY3JvcyBpbmRlbnRl
ZCBwcm9wZXJseS4gIE5vIGNvbmNhdGVuYXRpb24KKyMgb2NjdXJzIGFmdGVyIGEgU1RSSU5HOyB1
c2UgbTRfdW5xdW90ZShtNF9qb2luKCxTVFJJTkcpKSBmb3IgdGhhdC4KKyMKKyMgUGxlYXNlIGtl
ZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200
X2RlZmluZShbbTRfZG9dLAorW200X2lmKFskI10sIDAsIFtdLAorICAgICAgIFskI10sIDEsIFsk
MVtdXSwKKyAgICAgICBbJDFbXSQwKG00X3NoaWZ0KCRAKSldKV0pCisKKworIyBtNF9kcXVvdGUo
QVJHUykKKyMgLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybiBBUkdTIGFzIGEgcXVvdGVkIGxpc3Qg
b2YgcXVvdGVkIGFyZ3VtZW50cy4KK200X2RlZmluZShbbTRfZHF1b3RlXSwgIFtbJEBdXSkKKwor
CisjIG00X2RxdW90ZV9lbHQoQVJHUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4g
QVJHUyBhcyBhbiB1bnF1b3RlZCBsaXN0IG9mIGRvdWJsZS1xdW90ZWQgYXJndW1lbnRzLgorIwor
IyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFk
ZSBoZXJlLgorbTRfZGVmaW5lKFttNF9kcXVvdGVfZWx0XSwKK1ttNF9pZihbJCNdLCBbMF0sIFtd
LAorICAgICAgIFskI10sIFsxXSwgW1tbJDFdXV0sCisgICAgICAgW1tbJDFdXSwkMChtNF9zaGlm
dCgkQCkpXSldKQorCisKKyMgbTRfZWNobyhBUkdTKQorIyAtLS0tLS0tLS0tLS0tCisjIFJldHVy
biB0aGUgQVJHUywgd2l0aCB0aGUgc2FtZSBsZXZlbCBvZiBxdW90aW5nLiAgV2hpdGVzcGFjZSBh
ZnRlcgorIyB1bnF1b3RlZCBjb21tYXMgYXJlIGNvbnN1bWVkLgorbTRfZGVmaW5lKFttNF9lY2hv
XSwgWyRAXSkKKworCisjIG00X2V4cGFuZChBUkcpCisjIF9tNF9leHBhbmQoQVJHKQorIyAtLS0t
LS0tLS0tLS0tLS0KKyMgUmV0dXJuIHRoZSBleHBhbnNpb24gb2YgQVJHIGFzIGEgc2luZ2xlIHN0
cmluZy4gIFVubGlrZQorIyBtNF9xdW90ZSgkMSksIHRoaXMgcHJlc2VydmVzIHdoaXRlc3BhY2Ug
Zm9sbG93aW5nIHNpbmdsZS1xdW90ZWQKKyMgY29tbWFzIHRoYXQgYXBwZWFyIHdpdGhpbiBBUkcu
ICBJdCBhbHNvIGRlYWxzIHdpdGggc2hlbGwgY2FzZQorIyBzdGF0ZW1lbnRzLgorIworIyAgIG00
X2RlZmluZShbYWN0aXZlXSwgW0FDVCwgSVZFXSkKKyMgICBtNF9kZWZpbmUoW2FjdGl2ZTJdLCBb
W0FDVCwgSVZFXV0pCisjICAgbTRfcXVvdGUoYWN0aXZlLCBhY3RpdmUyKQorIyAgID0+IEFDVCxJ
VkUsQUNULCBJVkUKKyMgICBtNF9leHBhbmQoW2FjdGl2ZSwgYWN0aXZlMl0pCisjICAgPT4gQUNU
LCBJVkUsIEFDVCwgSVZFCisjCisjIFVuZm9ydHVuYXRlbHksIGR1ZSB0byBsaW1pdGF0aW9ucyBp
biBtNCwgQVJHIG11c3QgZXhwYW5kIHRvCisjIHNvbWV0aGluZyB3aXRoIGJhbGFuY2VkIHF1b3Rl
cyAodXNlIHF1YWRyaWdyYXBocyB0byBnZXQgYXJvdW5kCisjIHRoaXMpLCBhbmQgc2hvdWxkIG5v
dCBjb250YWluIHRoZSB1bmxpa2VseSBkZWxpbWl0ZXJzIC09PHsoIG9yCisjICl9Pj0tLiAgSXQg
aXMgcG9zc2libGUgdG8gaGF2ZSB1bmJhbGFuY2VkIHF1b3RlZCBgKCcgb3IgYCknLCBhcyB3ZWxs
CisjIGFzIHVuYmFsYW5jZWQgdW5xdW90ZWQgYCknLiAgbTRfZXhwYW5kIGNhbiBoYW5kbGUgdW50
ZXJtaW5hdGVkCisjIGNvbW1lbnRzIG9yIGRubCBvbiB0aGUgZmluYWwgbGluZSwgYXQgdGhlIGV4
cGVuc2Ugb2Ygc3BlZWQ7IGl0IGFsc28KKyMgYWlkcyBpbiBkZXRlY3RpbmcgYXR0ZW1wdHMgdG8g
aW5jb3JyZWN0bHkgY2hhbmdlIHRoZSBjdXJyZW50CisjIGRpdmVyc2lvbiBpbnNpZGUgQVJHLiAg
TWVhbndoaWxlLCBfbTRfZXhwYW5kIGlzIGZhc3RlciBidXQgbXVzdCBiZQorIyBnaXZlbiBhIHRl
cm1pbmF0ZWQgZXhwYW5zaW9uLCBhbmQgaGFzIG5vIHNhZmV0eSBjaGVja3MgZm9yCisjIG1pcy1k
aXZlcnRlZCB0ZXh0LgorIworIyBFeHBsb2l0IHRoYXQgZXh0cmEgdW5xdW90ZWQgKCkgd2lsbCBn
cm91cCB1bnF1b3RlZCBjb21tYXMgYW5kIHRoZQorIyBmb2xsb3dpbmcgd2hpdGVzcGFjZS4gIG00
X2JwYXRzdWJzdCBjYW4ndCBoYW5kbGUgbmV3bGluZXMgaW5zaWRlICQxLAorIyBhbmQgbTRfc3Vi
c3RyIHN0cmlwcyBxdW90aW5nLiAgU28gd2UgKGFiKXVzZSBtNF9jaGFuZ2VxdW90ZSwgdXNpbmcK
KyMgdGVtcG9yYXJ5IHF1b3RlcyB0byByZW1vdmUgdGhlIGRlbGltaXRlcnMgdGhhdCBjb252ZW5p
ZW50bHkgaW5jbHVkZWQKKyMgdGhlIHVucXVvdGVkICgpIHRoYXQgd2VyZSBhZGRlZCBwcmlvciB0
byB0aGUgY2hhbmdlcXVvdGUuCisjCisjIFRoYW5rcyB0byBzaGVsbCBjYXNlIHN0YXRlbWVudHMs
IHRvbyBtYW55IHBlb3BsZSBhcmUgcHJvbmUgdG8gcGFzcworIyB1bmRlcnF1b3RlZCBgKScsIHNv
IHdlIHRyeSB0byBkZXRlY3QgdGhhdCBieSBwYXNzaW5nIGEgbWFya2VyIGFzIGEKKyMgZm91cnRo
IGFyZ3VtZW50OyBpZiB0aGUgbWFya2VyIGlzIG5vdCBwcmVzZW50LCB0aGVuIHdlIGFzc3VtZSB0
aGF0CisjIHdlIGVuY291bnRlcmVkIGFuIGVhcmx5IGApJywgYW5kIHJlLWV4cGFuZCB0aGUgZmly
c3QgYXJndW1lbnQsIGJ1dAorIyB0aGlzIHRpbWUgd2l0aCBvbmUgbW9yZSBgKCcgaW4gdGhlIHNl
Y29uZCBhcmd1bWVudCBhbmQgaW4gdGhlCisjIG9wZW4tcXVvdGUgZGVsaW1pdGVyLiAgV2UgbXVz
dCBhbHNvIGlnbm9yZSB0aGUgc2xvcCBmcm9tIHRoZQorIyBwcmV2aW91cyB0cnkuICBUaGUgZmlu
YWwgbWFjcm8gaXMgdGh1cyBoYWxmIGxpbmUtbm9pc2UsIGhhbGYgYXJ0LgorbTRfZGVmaW5lKFtt
NF9leHBhbmRdLAorW200X3B1c2hkZWYoW200X2RpdmVydF0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0
X3Vuc2FmZV0pKV1kbmwKK1ttNF9wdXNoZGVmKFttNF9kaXZlcnRfcHVzaF0sIF9tNF9kZWZuKFtf
bTRfZGl2ZXJ0X3Vuc2FmZV0pKV1kbmwKK1ttNF9jaG9tcChfJDAoWyQxCitdKSlfbTRfcG9wZGVm
KFttNF9kaXZlcnRdLCBbbTRfZGl2ZXJ0X3B1c2hdKV0pCisKK200X2RlZmluZShbX200X2V4cGFu
ZF0sIFskMF8oWyQxXSwgWyhdLCAtPTx7KCQxKX0+PS0sIFt9Pj0tXSldKQorCittNF9kZWZpbmUo
W19tNF9leHBhbmRfXSwKK1ttNF9pZihbJDRdLCBbfT49LV0sCisgICAgICAgW200X2NoYW5nZXF1
b3RlKFstPTx7JDJdLCBbKX0+PS1dKSQzbTRfY2hhbmdlcXVvdGUoWywgXSldLAorICAgICAgIFsk
MChbJDFdLCBbKCQyXSwgLT08eygkMiQxKX0+PS0sIFt9Pj0tXSltNF9pZ25vcmUkMl0pXSkKKwor
CisjIG00X2lnbm9yZShBUkdTKQorIyAtLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kcyB0byBub3Ro
aW5nLiAgVXNlZnVsIGZvciBjb25kaXRpb25hbGx5IGlnbm9yaW5nIGFuIGFyYml0cmFyeQorIyBu
dW1iZXIgb2YgYXJndW1lbnRzIChzZWUgX200X2xpc3RfY21wIGZvciBhbiBleGFtcGxlKS4KK200
X2RlZmluZShbbTRfaWdub3JlXSkKKworCisjIG00X21ha2VfbGlzdChBUkdTKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0KKyMgU2ltaWxhciB0byBtNF9kcXVvdGUsIHRoaXMgY3JlYXRlcyBhIHF1b3Rl
ZCBsaXN0IG9mIHF1b3RlZCBBUkdTLiAgVGhpcworIyB2ZXJzaW9uIGlzIGxlc3MgZWZmaWNpZW50
IHRoYW4gbTRfZHF1b3RlLCBidXQgc2VwYXJhdGVzIGVhY2ggYXJndW1lbnQKKyMgd2l0aCBhIGNv
bW1hIGFuZCBuZXdsaW5lLCByYXRoZXIgdGhhbiBqdXN0IGNvbW1hLCBmb3IgcmVhZGFiaWxpdHku
CisjIFdoZW4gZGV2ZWxvcGluZyBhbiBtNHN1Z2FyIGFsZ29yaXRobSwgeW91IGNvdWxkIHRlbXBv
cmFyaWx5IHVzZQorIyAgIG00X3B1c2hkZWYoW200X2RxdW90ZV0sbTRfZGVmbihbbTRfbWFrZV9s
aXN0XSkpCisjIGFyb3VuZCB5b3VyIGNvZGUgdG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLgorbTRf
ZGVmaW5lKFttNF9tYWtlX2xpc3RdLCBbbTRfam9pbihbLAorXSwgbTRfZHF1b3RlX2VsdCgkQCkp
XSkKKworCisjIG00X25vcXVvdGUoU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmV0
dXJuIHRoZSByZXN1bHQgb2YgaWdub3JpbmcgYWxsIHF1b3RlcyBpbiBTVFJJTkcgYW5kIGludm9r
aW5nIHRoZQorIyBtYWNyb3MgaXQgY29udGFpbnMuICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMg
aXMgdXNlZnVsIGZvciBlbmFibGluZworIyBtYWNybyBpbnZvY2F0aW9ucyBpbnNpZGUgc3RyaW5n
cyB3aXRoIFtdIGJsb2NrcyAoZm9yIGluc3RhbmNlIHJlZ2V4cHMKKyMgYW5kIGhlbHAtc3RyaW5n
cykuICBPbiB0aGUgb3RoZXIgaGFuZCwgc2luY2UgYWxsIHF1b3RlcyBhcmUgZGlzYWJsZWQsCisj
IGFueSBtYWNybyBleHBhbmRlZCBkdXJpbmcgdGhpcyB0aW1lIHRoYXQgcmVsaWVzIG9uIG5lc3Rl
ZCBbXSBxdW90aW5nCisjIHdpbGwgbGlrZWx5IGNyYXNoIGFuZCBidXJuLiAgVGhpcyBtYWNybyBp
cyBzZWxkb20gdXNlZnVsOyBjb25zaWRlcgorIyBtNF91bnF1b3RlIG9yIG00X2V4cGFuZCBpbnN0
ZWFkLgorbTRfZGVmaW5lKFttNF9ub3F1b3RlXSwKK1ttNF9jaGFuZ2VxdW90ZShbLT08eyhdLFsp
fT49LV0pJDEtPTx7KCl9Pj0tbTRfY2hhbmdlcXVvdGUoWyxdKV0pCisKKworIyBtNF9xdW90ZShB
UkdTKQorIyAtLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gQVJHUyBhcyBhIHNpbmdsZSBhcmd1bWVu
dC4gIEFueSB3aGl0ZXNwYWNlIGFmdGVyIHVucXVvdGVkIGNvbW1hcworIyBpcyBzdHJpcHBlZC4g
IFRoZXJlIGlzIGFsd2F5cyBvdXRwdXQsIGV2ZW4gd2hlbiB0aGVyZSB3ZXJlIG5vIGFyZ3VtZW50
cy4KKyMKKyMgSXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biBgbTRfcXVvdGUoZXhwKScgYW5kCisjIGBbZXhwXSc6IGluIHRoZSBmaXJzdCBjYXNlIHlvdSBv
YnRhaW4gdGhlIHF1b3RlZCAqcmVzdWx0KiBvZiB0aGUKKyMgZXhwYW5zaW9uIG9mIEVYUCwgd2hp
bGUgaW4gdGhlIGxhdHRlciB5b3UganVzdCBvYnRhaW4gdGhlIHN0cmluZworIyBgZXhwJy4KK200
X2RlZmluZShbbTRfcXVvdGVdLCAgW1skKl1dKQorCisKKyMgX200X3F1b3RlKEFSR1MpCisjIC0t
LS0tLS0tLS0tLS0tLQorIyBMaWtlIG00X3F1b3RlLCBleGNlcHQgdGhhdCB3aGVuIHRoZXJlIGFy
ZSBubyBhcmd1bWVudHMsIHRoZXJlIGlzIG5vCisjIG91dHB1dC4gIEZvciBjb25kaXRpb25hbCBz
Y2VuYXJpb3MgKHN1Y2ggYXMgcGFzc2luZyBfbTRfcXVvdGUgYXMgdGhlCisjIG1hY3JvIG5hbWUg
aW4gbTRfbWFwYWxsKSwgdGhpcyBmZWF0dXJlIGNhbiBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4KKyMgb25lIGFyZ3VtZW50IG9mIHRoZSBlbXB0eSBzdHJpbmcgdnMuIG5vIGFyZ3VtZW50
cy4gIEhvd2V2ZXIsIGluIHRoZQorIyBub3JtYWwgY2FzZSB3aXRoIGFyZ3VtZW50cyBwcmVzZW50
LCB0aGlzIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gbTRfcXVvdGUuCittNF9kZWZpbmUoW19tNF9x
dW90ZV0sCitbbTRfaWYoWyQjXSwgWzBdLCBbXSwgW1skKl1dKV0pCisKKworIyBtNF9yZXZlcnNl
KEFSR1MpCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgT3V0cHV0IEFSR1MgaW4gcmV2ZXJzZSBvcmRl
ci4KKyMKKyMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1l
bnRzIG1hZGUgaGVyZS4KK200X2RlZmluZShbbTRfcmV2ZXJzZV0sCitbbTRfaWYoWyQjXSwgWzBd
LCBbXSwgWyQjXSwgWzFdLCBbWyQxXV0sCisgICAgICAgWyQwKG00X3NoaWZ0KCRAKSksIFskMV1d
KV0pCisKKworIyBtNF91bnF1b3RlKEFSR1MpCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgUmVtb3Zl
IG9uZSBsYXllciBvZiBxdW90ZXMgZnJvbSBlYWNoIEFSRywgcGVyZm9ybWluZyBvbmUgbGV2ZWwg
b2YKKyMgZXhwYW5zaW9uLiAgRm9yIG9uZSBhcmd1bWVudCwgbTRfdW5xdW90ZShbYXJnXSkgaXMg
bW9yZSBlZmZpY2llbnQgdGhhbgorIyBtNF9kbyhbYXJnXSksIGJ1dCBmb3IgbXVsdGlwbGUgYXJn
dW1lbnRzLCB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0CisjIG00X3VucXVvdGUgc2VwYXJhdGVzIGFy
Z3VtZW50cyB3aXRoIGNvbW1hcyB3aGlsZSBtNF9kbyBjb25jYXRlbmF0ZXMuCisjIEZvbGxvdyB0
aGlzIG1hY3JvIHdpdGggW10gaWYgY29uY2F0ZW5hdGlvbiB3aXRoIHN1YnNlcXVlbnQgdGV4dCBp
cworIyB1bmRlc2lyZWQuCittNF9kZWZpbmUoW200X3VucXVvdGVdLCBbJCpdKQorCisKKyMjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyA4LiBJbXBsZW1lbnRpbmcgbTQgbG9vcHMu
ICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIG00X2ZvcihWQVJJ
QUJMRSwgRklSU1QsIExBU1QsIFtTVEVQID0gKy8tMV0sIEVYUFJFU1NJT04pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFu
ZCBFWFBSRVNTSU9OIGRlZmluaW5nIFZBUklBQkxFIHRvIEZST00sIEZST00gKyAxLCAuLi4sIFRP
IHdpdGgKKyMgaW5jcmVtZW50cyBvZiBTVEVQLiAgQm90aCBsaW1pdHMgYXJlIGluY2x1ZGVkLCBh
bmQgYm91bmRzIGFyZQorIyBjaGVja2VkIGZvciBjb25zaXN0ZW5jeS4gIFRoZSBhbGdvcml0aG0g
aXMgcm9idXN0IHRvIGluZGlyZWN0CisjIFZBUklBQkxFIG5hbWVzLiAgQ2hhbmdpbmcgVkFSSUFC
TEUgaW5zaWRlIEVYUFJFU1NJT04gd2lsbCBub3QgaW1wYWN0CisjIHRoZSBudW1iZXIgb2YgaXRl
cmF0aW9ucy4KKyMKKyMgVXNlcyBfbTRfZGVmbiBmb3Igc3BlZWQsIGFuZCBhdm9pZCBkbmwgaW4g
dGhlIG1hY3JvIGJvZHkuICBGYWN0b3IKKyMgdGhlIF9tNF9mb3IgY2FsbCBzbyB0aGF0IEVYUFJF
U1NJT04gaXMgb25seSBwYXJzZWQgb25jZS4KK200X2RlZmluZShbbTRfZm9yXSwKK1ttNF9wdXNo
ZGVmKFskMV0sIG00X2V2YWwoWyQyXSkpXWRubAorW200X2NvbmQoW200X2V2YWwoKFskM10pID4g
KFskMl0pKV0sIDEsCisJICAgW200X3B1c2hkZWYoW19tNF9zdGVwXSwgbTRfZXZhbChtNF9kZWZh
dWx0X3F1b3RlZChbJDRdLAorCSAgICAgIDEpKSltNF9hc3NlcnQoX200X3N0ZXAgPiAwKV8kMChf
bTRfZGVmbihbJDFdKSwKKyAgbTRfZXZhbCgoKFskM10pIC0gKFskMl0pKSAvIF9tNF9zdGVwICog
X200X3N0ZXAgKyAoWyQyXSkpLCBfbTRfc3RlcCxdLAorCSBbbTRfZXZhbCgoWyQzXSkgPCAoWyQy
XSkpXSwgMSwKKwkgICBbbTRfcHVzaGRlZihbX200X3N0ZXBdLCBtNF9ldmFsKG00X2RlZmF1bHRf
cXVvdGVkKFskNF0sCisJICAgICAgLTEpKSltNF9hc3NlcnQoX200X3N0ZXAgPCAwKV8kMChfbTRf
ZGVmbihbJDFdKSwKKyAgbTRfZXZhbCgoKFskMl0pIC0gKFskM10pKSAvIC0oX200X3N0ZXApICog
X200X3N0ZXAgKyAoWyQyXSkpLCBfbTRfc3RlcCxdLAorCSBbbTRfcHVzaGRlZihbX200X3N0ZXBd
KV8kMChfbTRfZGVmbihbJDFdKSwgX200X2RlZm4oWyQxXSksIDAsXSldZG5sCitbW200X2RlZmlu
ZShbJDFdLF0sIFspJDVdKW00X3BvcGRlZihbX200X3N0ZXBdLCBbJDFdKV0pCisKKyMgX200X2Zv
cihDT1VOVCwgTEFTVCwgU1RFUCwgUFJFLCBQT1NUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIENvcmUgb2YgdGhlIGxvb3AsIG5vIGNvbnNpc3RlbmN5IGNoZWNr
cywgYWxsIGFyZ3VtZW50cyBhcmUgcGxhaW4KKyMgbnVtYmVycy4gIEV4cGFuZCBQUkVbQ09VTlRd
UE9TVCwgdGhlbiBhbHRlciBDT1VOVCBieSBTVEVQIGFuZAorIyBpdGVyYXRlIGlmIENPVU5UIGlz
IG5vdCBMQVNULgorbTRfZGVmaW5lKFtfbTRfZm9yXSwKK1skNFskMV0kNVtdbTRfaWYoWyQxXSwg
WyQyXSwgW10sCisJCSBbJDAobTRfZXZhbChbJDEgKyAkM10pLCBbJDJdLCBbJDNdLCBbJDRdLCBb
JDVdKV0pXSkKKworCisjIEltcGxlbWVudGluZyBgZm9yZWFjaCcgbG9vcHMgaW4gbTQgaXMgbXVj
aCBtb3JlIHRyaWNreSB0aGFuIGl0IG1heQorIyBzZWVtLiAgRm9yIGV4YW1wbGUsIHRoZSBvbGQg
TTQgMS40LjQgbWFudWFsIGhhZCBhbiBpbmNvcnJlY3QgZXhhbXBsZSwKKyMgd2hpY2ggbG9va2Vk
IGxpa2UgdGhpcyAod2hlbiB0cmFuc2xhdGVkIHRvIG00c3VnYXIpOgorIworIyB8ICMgZm9yZWFj
aChWQVIsIChMSVNUKSwgU1RNVCkKKyMgfCBtNF9kZWZpbmUoW2ZvcmVhY2hdLAorIyB8ICAgW200
X3B1c2hkZWYoWyQxXSlfZm9yZWFjaChbJDFdLCBbJDJdLCBbJDNdKW00X3BvcGRlZihbJDFdKV0p
CisjIHwgbTRfZGVmaW5lKFtfYXJnMV0sIFskMV0pCisjIHwgbTRfZGVmaW5lKFtfZm9yZWFjaF0s
CisjIHwgICBbbTRfaWYoWyQyXSwgWygpXSwgLAorIyB8ICAgICBbbTRfZGVmaW5lKFskMV0sIF9h
cmcxJDIpJDNbXV9mb3JlYWNoKFskMV0sIChtNF9zaGlmdCQyKSwgWyQzXSldKV0pCisjCisjIEJ1
dCB0aGVuIGlmIHlvdSBydW4KKyMKKyMgfCBtNF9kZWZpbmUoYSwgMSkKKyMgfCBtNF9kZWZpbmUo
YiwgMikKKyMgfCBtNF9kZWZpbmUoYywgMykKKyMgfCBmb3JlYWNoKFtmXSwgWyhbYV0sIFsoYl0s
IFtjKV0pXSwgW2VjaG8gZgorIyB8IF0pCisjCisjIGl0IGdpdmVzCisjCisjICA9PiBlY2hvIDEK
KyMgID0+IGVjaG8gKDIsMykKKyMKKyMgd2hpY2ggaXMgbm90IHdoYXQgaXMgZXhwZWN0ZWQuCisj
CisjIE9mIGNvdXJzZSB0aGUgcHJvYmxlbSBpcyB0aGF0IG1hbnkgcXVvdGVzIGFyZSBtaXNzaW5n
LiAgU28geW91IGFkZAorIyBwbGVudHkgb2YgcXVvdGVzIGF0IHJhbmRvbSBwbGFjZXMsIHVudGls
IHlvdSByZWFjaCB0aGUgZXhwZWN0ZWQKKyMgcmVzdWx0LiAgQWx0ZXJuYXRpdmVseSwgaWYgeW91
IGFyZSBhIHF1b3Rpbmcgd2l6YXJkLCB5b3UgZGlyZWN0bHkKKyMgcmVhY2ggdGhlIGZvbGxvd2lu
ZyBpbXBsZW1lbnRhdGlvbiAoYnV0IGlmIHlvdSByZWFsbHkgZGlkLCB0aGVuCisjIGFwcGx5IHRv
IHRoZSBtYWludGVuYW5jZSBvZiBtNHN1Z2FyISkuCisjCisjIHwgIyBmb3JlYWNoKFZBUiwgKExJ
U1QpLCBTVE1UKQorIyB8IG00X2RlZmluZShbZm9yZWFjaF0sIFttNF9wdXNoZGVmKFskMV0pX2Zv
cmVhY2goJEApbTRfcG9wZGVmKFskMV0pXSkKKyMgfCBtNF9kZWZpbmUoW19hcmcxXSwgW1skMV1d
KQorIyB8IG00X2RlZmluZShbX2ZvcmVhY2hdLAorIyB8ICBbbTRfaWYoJDIsIFsoKV0sICwKKyMg
fCAgICBbbTRfZGVmaW5lKFskMV0sIFtfYXJnMSQyXSkkM1tdX2ZvcmVhY2goWyQxXSwgWyhtNF9z
aGlmdCQyKV0sIFskM10pXSldKQorIworIyB3aGljaCB0aGlzIHRpbWUgYW5zd2VycworIworIyAg
PT4gZWNobyBhCisjICA9PiBlY2hvIChiCisjICA9PiBlY2hvIGMpCisjCisjIEJpbmdvIQorIwor
IyBXZWxsLCBub3QgcXVpdGUuCisjCisjIFdpdGggYSBiZXR0ZXIgbG9vaywgeW91IHJlYWxpemUg
dGhhdCB0aGUgcGFyZW5zIGFyZSBtb3JlIGEgcGFpbiB0aGFuCisjIGEgaGVscDogc2luY2UgYW55
d2F5IHlvdSBuZWVkIHRvIHF1b3RlIHByb3Blcmx5IHRoZSBsaXN0LCB5b3UgZW5kIHVwCisjIHdp
dGggYWx3YXlzIHVzaW5nIGFuIG91dGVybW9zdCBwYWlyIG9mIHBhcmVucyBhbmQgYW4gb3V0ZXJt
b3N0IHBhaXIKKyMgb2YgcXVvdGVzLiAgUmVqZWN0aW5nIHRoZSBwYXJlbnMgYm90aCBlYXNlcyB0
aGUgaW1wbGVtZW50YXRpb24sIGFuZAorIyBzaW1wbGlmaWVzIHRoZSB1c2U6CisjCisjIHwgIyBm
b3JlYWNoKFZBUiwgKExJU1QpLCBTVE1UKQorIyB8IG00X2RlZmluZShbZm9yZWFjaF0sIFttNF9w
dXNoZGVmKFskMV0pX2ZvcmVhY2goJEApbTRfcG9wZGVmKFskMV0pXSkKKyMgfCBtNF9kZWZpbmUo
W19hcmcxXSwgWyQxXSkKKyMgfCBtNF9kZWZpbmUoW19mb3JlYWNoXSwKKyMgfCAgW200X2lmKCQy
LCBbXSwgLAorIyB8ICAgIFttNF9kZWZpbmUoWyQxXSwgW19hcmcxKCQyKV0pJDNbXV9mb3JlYWNo
KFskMV0sIFttNF9zaGlmdCgkMildLCBbJDNdKV0pXSkKKyMKKyMKKyMgTm93LCBqdXN0IHJlcGxh
Y2UgdGhlIGAkMicgd2l0aCBgbTRfcXVvdGUoJDIpJyBpbiB0aGUgb3V0ZXIgYG00X2lmJworIyB0
byBpbXByb3ZlIHJvYnVzdG5lc3MsIGFuZCB5b3UgY29tZSB1cCB3aXRoIGEgbmljZSBpbXBsZW1l
bnRhdGlvbgorIyB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBleHRyYSBwYXJlbnRoZXNlcyBpbiB0aGUg
dXNlcidzIExJU1QuCisjCisjIEJ1dCB3YWl0IC0gIG5vdyB0aGUgYWxnb3JpdGhtIGlzIHF1YWRy
YXRpYywgYmVjYXVzZSBldmVyeSByZWN1cnNpb24gb2YKKyMgdGhlIGFsZ29yaXRobSBrZWVwcyB0
aGUgZW50aXJlIExJU1QgYW5kIG1lcmVseSBhZGRzIGFub3RoZXIgbTRfc2hpZnQgdG8KKyMgdGhl
IHF1b3RlZCB0ZXh0LiAgSWYgdGhlIHVzZXIgaGFzIGEgbG90IG9mIGVsZW1lbnRzIGluIExJU1Qs
IHlvdSBjYW4KKyMgYnJpbmcgdGhlIHN5c3RlbSB0byBpdHMga25lZXMgd2l0aCB0aGUgbWVtb3J5
IG00IHRoZW4gcmVxdWlyZXMsIG9yIHRyaXAKKyMgdGhlIG00IC0tbmVzdGluZy1saW1pdCByZWN1
cnNpb24gZmFjdG9yLiAgVGhlIG9ubHkgd2F5IHRvIGF2b2lkCisjIHF1YWRyYXRpYyBncm93dGgg
aXMgZW5zdXJlIG00X3NoaWZ0IGlzIGV4cGFuZGVkIHByaW9yIHRvIHRoZSByZWN1cnNpb24uCisj
IEhlbmNlIHRoZSBkZXNpZ24gYmVsb3cuCisjCisjIFRoZSBNNCBtYW51YWwgbm93IGluY2x1ZGVz
IGEgY2hhcHRlciBkZXZvdGVkIHRvIHRoaXMgaXNzdWUsIHdpdGgKKyMgdGhlIGxlc3NvbnMgbGVh
cm5lZCBmcm9tIG00c3VnYXIuICBBbmQgc3RpbGwsIHRoaXMgZGVzaWduIGlzIG9ubHkKKyMgb3B0
aW1hbCBmb3IgTTQgMS42OyBzZWUgZm9yZWFjaC5tNCBmb3IgeWV0IG1vcmUgY29tbWVudHMgb24g
d2h5CisjIE00IDEuNC54IHVzZXMgeWV0IGFub3RoZXIgaW1wbGVtZW50YXRpb24uCisKKworIyBt
NF9mb3JlYWNoKFZBUklBQkxFLCBMSVNULCBFWFBSRVNTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBFeHBhbmQgRVhQUkVTU0lPTiBhc3NpZ25pbmcg
ZWFjaCB2YWx1ZSBvZiB0aGUgTElTVCB0byBWQVJJQUJMRS4KKyMgTElTVCBzaG91bGQgaGF2ZSB0
aGUgZm9ybSBgaXRlbV8xLCBpdGVtXzIsIC4uLiwgaXRlbV9uJywgaS5lLiB0aGUKKyMgd2hvbGUg
bGlzdCBtdXN0ICpxdW90ZWQqLiAgUXVvdGUgbWVtYmVycyB0b28gaWYgeW91IGRvbid0IHdhbnQg
dGhlbQorIyB0byBiZSBleHBhbmRlZC4KKyMKKyMgVGhpcyBtYWNybyBpcyByb2J1c3QgdG8gYWN0
aXZlIHN5bWJvbHM6CisjICAgICAgfCBtNF9kZWZpbmUoYWN0aXZlLCBbQUNULCBJVkVdKQorIyAg
ICAgIHwgbTRfZm9yZWFjaChWYXIsIFthY3RpdmUsIGFjdGl2ZV0sIFstVmFyLV0pCisjICAgICA9
PiAtQUNULS1JVkUtLUFDVC0tSVZFLQorIworIyAgICAgIHwgbTRfZm9yZWFjaChWYXIsIFtbYWN0
aXZlXSwgW2FjdGl2ZV1dLCBbLVZhci1dKQorIyAgICAgPT4gLUFDVCwgSVZFLS1BQ1QsIElWRS0K
KyMKKyMgICAgICB8IG00X2ZvcmVhY2goVmFyLCBbW1thY3RpdmVdXSwgW1thY3RpdmVdXV0sIFst
VmFyLV0pCisjICAgICA9PiAtYWN0aXZlLS1hY3RpdmUtCisjCisjIFRoaXMgbWFjcm8gaXMgY2Fs
bGVkIGZyZXF1ZW50bHksIHNvIGF2b2lkIGV4dHJhIGV4cGFuc2lvbnMgc3VjaCBhcworIyBtNF9p
ZnZhbCBhbmQgZG5sLiAgQWxzbywgc2luY2UgJDIgbWlnaHQgYmUgcXVpdGUgbGFyZ2UsIHRyeSB0
byB1c2UgaXQKKyMgYXMgbGl0dGxlIGFzIHBvc3NpYmxlIGluIF9tNF9mb3JlYWNoOyBlYWNoIGV4
dHJhIHVzZSByZXF1aXJlcyB0aGF0IG11Y2gKKyMgbW9yZSBtZW1vcnkgZm9yIGV4cGFuc2lvbi4g
IFNvLCByYXRoZXIgdGhhbiBkaXJlY3RseSBjb21wYXJlICQyIGFnYWluc3QKKyMgW10gYW5kIHVz
ZSBtNF9jYXIvbTRfY2RyIGZvciByZWN1cnNpb24sIHdlIGluc3RlYWQgdW5ib3ggdGhlIGxpc3Qg
KHdoaWNoCisjIHJlcXVpcmVzIHN3YXBwaW5nIHRoZSBhcmd1bWVudCBvcmRlciBpbiB0aGUgaGVs
cGVyKSwgaW5zZXJ0IGFuIGlnbm9yZWQKKyMgdGhpcmQgYXJndW1lbnQsIGFuZCB1c2UgbTRfc2hp
ZnQzIHRvIGRldGVjdCB3aGVuIHJlY3Vyc2lvbiBpcyBjb21wbGV0ZSwKKyMgYXQgd2hpY2ggcG9p
bnQgdGhpcyBsb29rcyB2ZXJ5IG11Y2ggbGlrZSBtNF9tYXBfYXJncy4KK200X2RlZmluZShbbTRf
Zm9yZWFjaF0sCitbbTRfaWYoWyQyXSwgW10sIFtdLAorICAgICAgIFttNF9wdXNoZGVmKFskMV0p
XyQwKFttNF9kZWZpbmUoWyQxXSxdLCBbKSQzXSwgW10sCisgICQyKW00X3BvcGRlZihbJDFdKV0p
XSkKKworIyBfbTRfZm9yZWFjaChQUkUsIFBPU1QsIElHTk9SRUQsIEFSRy4uLikKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZvcm0gdGhlIGNvbW1vbiBiYXNp
cyBvZiB0aGUgbTRfZm9yZWFjaCBhbmQgbTRfbWFwIG1hY3Jvcy4gIEZvciBlYWNoCisjIEFSRywg
ZXhwYW5kIFBSRVtBUkddUE9TVFtdLiAgVGhlIElHTk9SRUQgYXJndW1lbnQgbWFrZXMgcmVjdXJz
aW9uCisjIGVhc2llciwgYW5kIG11c3QgYmUgc3VwcGxpZWQgcmF0aGVyIHRoYW4gaW1wbGljaXQu
CisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRoIGFueSBhZGp1c3RtZW50
cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW19tNF9mb3JlYWNoXSwKK1ttNF9pZihbJCNdLCBbM10s
IFtdLAorICAgICAgIFskMVskNF0kMltdJDAoWyQxXSwgWyQyXSwgbTRfc2hpZnQzKCRAKSldKV0p
CisKKworIyBtNF9mb3JlYWNoX3coVkFSSUFCTEUsIExJU1QsIEVYUFJFU1NJT04pCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBtNF9mb3JlYWNoLCBi
dXQgdGhlIGxpc3QgaXMgd2hpdGVzcGFjZSBzZXBhcmF0ZWQuICBEZXBlbmRpbmcgb24KKyMgRVhQ
UkVTU0lPTiwgaXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBtNF9tYXBfYXJnc193Lgor
IworIyBUaGlzIG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9sczoKKyMgICAgbTRfZm9y
ZWFjaF93KFtWYXJdLCBbIGFjdGl2ZQorIyAgICBiCWFjdFwKKyMgICAgaXZlICBdLCBbLVZhci1d
KWVuZAorIyAgICA9PiAtYWN0aXZlLS1iLS1hY3RpdmUtZW5kCisjCisjIFRoaXMgdXNlZCB0byB1
c2UgYSBzbG93ZXIgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gbTRfZm9yZWFjaDoKKyMgICBtNF9m
b3JlYWNoKFskMV0sIG00X3NwbGl0KG00X25vcm1hbGl6ZShbJDJdKSwgWyBdKSwgWyQzXSkKK200
X2RlZmluZShbbTRfZm9yZWFjaF93XSwKK1ttNF9wdXNoZGVmKFskMV0pbTRfbWFwX2FyZ3Nfdyhb
JDJdLAorICBbbTRfZGVmaW5lKFskMV0sXSwgWykkM10pbTRfcG9wZGVmKFskMV0pXSkKKworCisj
IG00X21hcChNQUNSTywgTElTVCkKKyMgbTRfbWFwYWxsKE1BQ1JPLCBMSVNUKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIEludm9rZSBNQUNSTygkMSksIE1BQ1JPKCQyKSBldGMuIHdoZXJl
ICQxLCAkMi4uLiBhcmUgdGhlIGVsZW1lbnRzIG9mCisjIExJU1QuICAkMSwgJDIuLi4gbXVzdCBp
biB0dXJuIGJlIGxpc3RzLCBhcHByb3ByaWF0ZSBmb3IgbTRfYXBwbHkuCisjIElmIExJU1QgY29u
dGFpbnMgYW4gZW1wdHkgc3VibGlzdCwgbTRfbWFwIHNraXBzIHRoZSBleHBhbnNpb24gb2YKKyMg
TUFDUk8sIHdoaWxlIG00X21hcGFsbCBleHBhbmRzIE1BQ1JPIHdpdGggbm8gYXJndW1lbnRzLgor
IworIyBTaW5jZSBMSVNUIG1heSBiZSBxdWl0ZSBsYXJnZSwgd2Ugd2FudCB0byBtaW5pbWl6ZSBo
b3cgb2Z0ZW4gaXQKKyMgYXBwZWFycyBpbiB0aGUgZXhwYW5zaW9uLiAgUmF0aGVyIHRoYW4gdXNl
IG00X2Nhci9tNF9jZHIgaXRlcmF0aW9uLAorIyB3ZSB1bmJveCB0aGUgbGlzdCwgYW5kIHVzZSBf
bTRfZm9yZWFjaCBmb3IgaXRlcmF0aW9uLiAgRm9yIG00X21hcCwKKyMgYW4gZW1wdHkgbGlzdCBi
ZWhhdmVzIGxpa2UgYW4gZW1wdHkgc3VibGlzdCBhbmQgZ2V0cyBpZ25vcmVkOyBmb3IKKyMgbTRf
bWFwYWxsLCB3ZSBtdXN0IHNwZWNpYWwtY2FzZSB0aGUgZW1wdHkgbGlzdC4KK200X2RlZmluZShb
bTRfbWFwXSwKK1tfbTRfZm9yZWFjaChbX200X2FwcGx5KFskMV0sXSwgWyldLCBbXSwgJDIpXSkK
KworbTRfZGVmaW5lKFttNF9tYXBhbGxdLAorW200X2lmKFskMl0sIFtdLCBbXSwKKyAgICAgICBb
X200X2ZvcmVhY2goW200X2FwcGx5KFskMV0sXSwgWyldLCBbXSwgJDIpXSldKQorCisKKyMgbTRf
bWFwX3NlcChNQUNSTywgW1NFUEFSQVRPUl0sIExJU1QpCisjIG00X21hcGFsbF9zZXAoTUFDUk8s
IFtTRVBBUkFUT1JdLCBMSVNUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgSW52b2tlIE1BQ1JPKCQxKSwgU0VQQVJBVE9SLCBNQUNSTygkMiksIC4uLiwgTUFD
Uk8oJE4pIHdoZXJlICQxLAorIyAkMi4uLiAkTiBhcmUgdGhlIGVsZW1lbnRzIG9mIExJU1QsIGFu
ZCBhcmUgaW4gdHVybiBsaXN0cyBhcHByb3ByaWF0ZQorIyBmb3IgbTRfYXBwbHkuICBTRVBBUkFU
T1IgaXMgZXhwYW5kZWQsIGluIG9yZGVyIHRvIGFsbG93IHRoZSBjcmVhdGlvbgorIyBvZiBhIGxp
c3Qgb2YgYXJndW1lbnRzIGJ5IHVzaW5nIGEgc2luZ2xlLXF1b3RlZCBjb21tYSBhcyB0aGUKKyMg
c2VwYXJhdG9yLiAgRm9yIGVhY2ggZW1wdHkgc3VibGlzdCwgbTRfbWFwX3NlcCBza2lwcyB0aGUg
ZXhwYW5zaW9uCisjIG9mIE1BQ1JPIGFuZCBTRVBBUkFUT1IsIHdoaWxlIG00X21hcGFsbF9zZXAg
ZXhwYW5kcyBNQUNSTyB3aXRoIG5vCisjIGFyZ3VtZW50cy4KKyMKKyMgRm9yIG00X21hcGFsbF9z
ZXAsIG1lcmVseSBleHBhbmQgdGhlIGZpcnN0IGl0ZXJhdGlvbiB3aXRob3V0IHRoZQorIyBzZXBh
cmF0b3IsIHRoZW4gaW5jbHVkZSBzZXBhcmF0b3IgYXMgcGFydCBvZiBzdWJzZXF1ZW50IHJlY3Vy
c2lvbjsKKyMgYnV0IGF2b2lkIGV4dHJhIGV4cGFuc2lvbiBvZiBMSVNUJ3Mgc2lkZS1lZmZlY3Rz
IHZpYSBhIGhlbHBlciBtYWNyby4KKyMgRm9yIG00X21hcF9zZXAsIHRoaW5ncyBhcmUgdHJpY2tp
ZXIgLSB3ZSBkb24ndCBrbm93IGlmIHRoZSBmaXJzdAorIyBsaXN0IGVsZW1lbnQgaXMgYW4gZW1w
dHkgc3VibGlzdCwgc28gd2UgbXVzdCBkZWZpbmUgYSBzZWxmLW1vZGlmeWluZworIyBoZWxwZXIg
bWFjcm8gYW5kIHVzZSB0aGF0IGFzIHRoZSBzZXBhcmF0b3IgaW5zdGVhZC4KK200X2RlZmluZShb
bTRfbWFwX3NlcF0sCitbbTRfcHVzaGRlZihbbTRfU2VwXSwgW200X2RlZmluZShbbTRfU2VwXSwg
X200X2RlZm4oW200X3VucXVvdGVdKSldKV1kbmwKK1tfbTRfZm9yZWFjaChbX200X2FwcGx5KFtt
NF9TZXAoWyQyXSlbXSQxXSxdLCBbKV0sIFtdLCAkMyltNF9wb3BkZWYoW200X1NlcF0pXSkKKwor
bTRfZGVmaW5lKFttNF9tYXBhbGxfc2VwXSwKK1ttNF9pZihbJDNdLCBbXSwgW10sIFtfJDAoWyQx
XSwgWyQyXSwgJDMpXSldKQorCittNF9kZWZpbmUoW19tNF9tYXBhbGxfc2VwXSwKK1ttNF9hcHBs
eShbJDFdLCBbJDNdKV9tNF9mb3JlYWNoKFttNF9hcHBseShbJDJbXSQxXSxdLCBbKV0sIG00X3No
aWZ0MigkQCkpXSkKKworIyBtNF9tYXBfYXJncyhFWFBSRVNTSU9OLCBBUkcuLi4pCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIEVYUFJFU1NJT04oW0FSR10pIGZv
ciBlYWNoIGFyZ3VtZW50LiAgTW9yZSBlZmZpY2llbnQgdGhhbgorIyAgIG00X2ZvcmVhY2goW3Zh
cl0sIFtBUkcuLi5dLCBbRVhQUkVTU0lPTihtNF9kZWZuKFt2YXJdKSldKQorIyBTaG9ydGhhbmQg
Zm9yIG00X21hcF9hcmdzX3NlcChbRVhQUkVTU0lPTihdLCBbKV0sIFtdLCBBUkcuLi4pLgorbTRf
ZGVmaW5lKFttNF9tYXBfYXJnc10sCitbbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0
b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCisgICAgICAgWyQjXSwgWzFdLCBbXSwKKyAgICAgICBb
JCNdLCBbMl0sIFskMShbJDJdKVtdXSwKKyAgICAgICBbX200X2ZvcmVhY2goWyQxKF0sIFspXSwg
JEApXSldKQorCisKKyMgbTRfbWFwX2FyZ3NfcGFpcihFWFBSRVNTSU9OLCBbRU5ELUVYUFIgPSBF
WFBSRVNTSU9OXSwgQVJHLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYSBwYWlyd2lzZSBncm91cGlu
ZyBvZiBjb25zZWN1dGl2ZSBBUkdzLCBieSBleHBhbmRpbmcKKyMgRVhQUkVTU0lPTihbQVJHMV0s
IFtBUkcyXSkuICBJZiB0aGVyZSBhcmUgYW4gb2RkIG51bWJlciBvZiBBUkdzLCB0aGUKKyMgZmlu
YWwgYXJndW1lbnQgaXMgZXhwYW5kZWQgd2l0aCBFTkQtRVhQUihbQVJHbl0pLgorIworIyBGb3Ig
ZXhhbXBsZToKKyMgICBtNF9kZWZpbmUoW3Nob3ddLCBbKCQqKW00X25ld2xpbmVdKWRubAorIyAg
IG00X21hcF9hcmdzX3BhaXIoW3Nob3ddLCBbXSwgW2FdLCBbYl0sIFtjXSwgW2RdLCBbZV0pZG5s
CisjICAgPT4gKGEsYikKKyMgICA9PiAoYyxkKQorIyAgID0+IChlKQorIworIyBQbGVhc2Uga2Vl
cCBmb3JlYWNoLm00IGluIHN5bmMgd2l0aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgorbTRf
ZGVmaW5lKFttNF9tYXBfYXJnc19wYWlyXSwKK1ttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChb
JDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKKyAgICAgICBbJCNdLCBbMV0sIFttNF9mYXRh
bChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCisgICAgICAgWyQjXSwgWzJdLCBb
XSwKKyAgICAgICBbJCNdLCBbM10sIFttNF9kZWZhdWx0KFskMl0sIFskMV0pKFskM10pW11dLAor
ICAgICAgIFskI10sIFs0XSwgWyQxKFskM10sIFskNF0pW11dLAorICAgICAgIFskMShbJDNdLCBb
JDRdKVtdJDAoWyQxXSwgWyQyXSwgbTRfc2hpZnQobTRfc2hpZnQzKCRAKSkpXSldKQorCisKKyMg
bTRfbWFwX2FyZ3Nfc2VwKFtQUkVdLCBbUE9TVF0sIFtTRVBdLCBBUkcuLi4pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeHBhbmQgUFJFW0FSR11Q
T1NUIGZvciBlYWNoIGFyZ3VtZW50LCB3aXRoIFNFUCBiZXR3ZWVuIGFyZ3VtZW50cy4KK200X2Rl
ZmluZShbbTRfbWFwX2FyZ3Nfc2VwXSwKK1ttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6
IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKKyAgICAgICBbJCNdLCBbMV0sIFtdLAorICAgICAg
IFskI10sIFsyXSwgW10sCisgICAgICAgWyQjXSwgWzNdLCBbXSwKKyAgICAgICBbJCNdLCBbNF0s
IFskMVskNF0kMltdXSwKKyAgICAgICBbJDFbJDRdJDJbXV9tNF9mb3JlYWNoKFskM1tdJDFdLCBb
JDJdLCBtNF9zaGlmdDMoJEApKV0pXSkKKworCisjIG00X21hcF9hcmdzX3coU1RSSU5HLCBbUFJF
XSwgW1BPU1RdLCBbU0VQXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBQZXJmb3JtIHRoZSBleHBhbnNpb24gb2YgUFJFW3dvcmRdUE9TVFtdIGZvciBl
YWNoIHdvcmQgaW4gU1RSSU5HCisjIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLiAgTW9yZSBlZmZp
Y2llbnQgdGhhbjoKKyMgICBtNF9mb3JlYWNoX3coW3Zhcl0sIFtTVFJJTkddLCBbUFJFW11tNF9k
ZWZuKFt2YXJdKVBPU1RdKQorIyBBZGRpdGlvbmFsbHksIGV4cGFuZCBTRVAgYmV0d2VlbiB3b3Jk
cy4KKyMKKyMgQXMgbG9uZyBhcyB3ZSBoYXZlIHRvIHVzZSBtNF9icGF0c3Vic3QgdG8gc3BsaXQg
dGhlIHN0cmluZywgd2UgbWlnaHQKKyMgYXMgd2VsbCBtYWtlIGl0IGFsc28gYXBwbHkgUFJFIGFu
ZCBQT1NUOyB0aGlzIGF2b2lkcyBpdGVyYXRpb24KKyMgYWx0b2dldGhlci4gIEJ1dCB3ZSBtdXN0
IGJlIGNhcmVmdWwgb2YgYW55IFwgaW4gUFJFIG9yIFBPU1QuCisjIF9tNF9zdHJpcCByZXR1cm5z
IGEgcXVvdGVkIHN0cmluZywgYnV0IHRoYXQncyBva2F5LCBzaW5jZSBpdCBhbHNvCisjIHN1cHBs
aWVzIGFuIGVtcHR5IGxlYWRpbmcgYW5kIHRyYWlsaW5nIGFyZ3VtZW50IGR1ZSB0byBvdXIKKyMg
aW50ZW50aW9uYWwgd2hpdGVzcGFjZSBhcm91bmQgU1RSSU5HLiAgV2UgdXNlIG00X3N1YnN0ciB0
byBzdHJpcCB0aGUKKyMgZW1wdHkgZWxlbWVudHMgYW5kIHJlbW92ZSB0aGUgZXh0cmEgbGF5ZXIg
b2YgcXVvdGluZy4KK200X2RlZmluZShbbTRfbWFwX2FyZ3Nfd10sCitbXyQwKF9tNF9zcGxpdChb
IF1tNF9mbGF0dGVuKFskMV0pWyBdLCBbWwkgXStdLAorCSAgICAgICBtNF9pZihtNF9pbmRleChb
JDIkMyQ0XSwgW1xdKSwgWy0xXSwgW1skM1tdJDRbXSQyXV0sCisJCSAgICAgW200X2JwYXRzdWJz
dChbWyQzW10kNFtdJDJdXSwgW1xcXSwgW1xcXFxdKV0pKSwKKyAgICAgbTRfbGVuKFtbXSQzW10k
NF0pLCBtNF9sZW4oWyQ0W10kMltdXSkpXSkKKworbTRfZGVmaW5lKFtfbTRfbWFwX2FyZ3Nfd10s
CitbbTRfc3Vic3RyKFskMV0sIFskMl0sIG00X2V2YWwobTRfbGVuKFskMV0pIC0gWyQyXSAtIFsk
M10pKV0pCisKKworIyBtNF9zdGFja19mb3JlYWNoKE1BQ1JPLCBGVU5DKQorIyBtNF9zdGFja19m
b3JlYWNoX2xpZm8oTUFDUk8sIEZVTkMpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgUGFzcyBlYWNoIHN0YWNrZWQgZGVmaW5pdGlvbiBvZiBNQUNSTyB0byB0aGUgb25l
LWFyZ3VtZW50IG1hY3JvIEZVTkMuCisjIG00X3N0YWNrX2ZvcmVhY2ggcHJvY2VlZHMgaW4gRklG
TyBvcmRlciwgd2hpbGUgbTRfc3RhY2tfZm9yZWFjaF9saWZvCisjIHByb2Nlc3NlcyB0aGUgdG9w
bW9zdCBkZWZpbml0aW9ucyBmaXJzdC4gIEluIGFkZGl0aW9uLCBGVU5DIHNob3VsZAorIyBub3Qg
cHVzaCBvciBwb3AgZGVmaW5pdGlvbnMgb2YgTUFDUk8sIGFuZCBzaG91bGQgbm90IGV4cGVjdCBh
bnl0aGluZyBhYm91dAorIyB0aGUgYWN0aXZlIGRlZmluaXRpb24gb2YgTUFDUk8gKGl0IHdpbGwg
bm90IGJlIHRoZSB0b3Btb3N0LCBhbmQgbWF5IG5vdAorIyBiZSB0aGUgb25lIHBhc3NlZCB0byBG
VU5DIGVpdGhlcikuCisjCisjIFNvbWUgbWFjcm9zIHNpbXBseSBjYW4ndCBiZSBleGFtaW5lZCB3
aXRoIHRoaXMgbWV0aG9kOiBuYW1lbHksCisjIGFueXRoaW5nIGludm9sdmVkIGluIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBfbTRfc3RhY2tfcmV2ZXJzZS4KK200X2RlZmluZShbbTRfc3RhY2tfZm9y
ZWFjaF0sCitbX200X3N0YWNrX3JldmVyc2UoWyQxXSwgW200X3RtcC0kMV0pXWRubAorW19tNF9z
dGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0p
KV0pXSkKKworbTRfZGVmaW5lKFttNF9zdGFja19mb3JlYWNoX2xpZm9dLAorW19tNF9zdGFja19y
ZXZlcnNlKFskMV0sIFttNF90bXAtJDFdLCBbJDIoX200X2RlZm4oW200X3RtcC0kMV0pKV0pXWRu
bAorW19tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdKV0pCisKKyMgbTRfc3RhY2tf
Zm9yZWFjaF9zZXAoTUFDUk8sIFtQUkVdLCBbUE9TVF0sIFtTRVBdKQorIyBtNF9zdGFja19mb3Jl
YWNoX3NlcF9saWZvKE1BQ1JPLCBbUFJFXSwgW1BPU1RdLCBbU0VQXSkKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNpbWlsYXIgdG8g
bTRfc3RhY2tfZm9yZWFjaCBhbmQgbTRfc3RhY2tfZm9yZWFjaF9saWZvLCBpbiB0aGF0IGV2ZXJ5
CisjIGRlZmluaXRpb24gb2YgYSBwdXNoZGVmIHN0YWNrIHdpbGwgYmUgdmlzaXRlZC4gIEJ1dCBy
YXRoZXIgdGhhbgorIyBwYXNzaW5nIHRoZSBkZWZpbml0aW9uIGFzIGEgc2luZ2xlIGFyZ3VtZW50
IHRvIGEgbWFjcm8sIHRoaXMgdmFyaWFudAorIyBleHBhbmRzIHRoZSBjb25jYXRlbmF0aW9uIG9m
IFBSRVtdZGVmaW5pdGlvbltdUE9TVCwgYW5kIGV4cGFuZHMgU0VQCisjIGJldHdlZW4gY29uc2Vj
dXRpdmUgZXhwYW5zaW9ucy4gIE5vdGUgdGhhdCBtNF9zdGFja19mb3JlYWNoKFthXSwgW2JdKQor
IyBpcyBlcXVpdmFsZW50IHRvIG00X3N0YWNrX2ZvcmVhY2hfc2VwKFthXSwgW2IoXSwgWyldKS4K
K200X2RlZmluZShbbTRfc3RhY2tfZm9yZWFjaF9zZXBdLAorW19tNF9zdGFja19yZXZlcnNlKFsk
MV0sIFttNF90bXAtJDFdKV1kbmwKK1tfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQx
XSwgWyQyW11fbTRfZGVmbihbbTRfdG1wLSQxXSkkM10sIFskNFtdXSldKQorCittNF9kZWZpbmUo
W200X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm9dLAorW19tNF9zdGFja19yZXZlcnNlKFskMV0sIFtt
NF90bXAtJDFdLCBbJDJbXV9tNF9kZWZuKFttNF90bXAtJDFdKSQzXSwgWyQ0W11dKV1kbmwKK1tf
bTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSldKQorCisKKyMgX200X3N0YWNrX3Jl
dmVyc2UoT0xELCBORVcsIFtBQ1RJT05dLCBbU0VQXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQSByZWN1cnNpdmUgd29ya2VyIGZvciBwdXNoZGVm
IHN0YWNrIG1hbmlwdWxhdGlvbi4gIERlc3RydWN0aXZlbHkKKyMgY29weSB0aGUgT0xEIHN0YWNr
IGludG8gdGhlIE5FVywgYW5kIGV4cGFuZGluZyBBQ1RJT04gZm9yIGVhY2gKKyMgaXRlcmF0aW9u
LiAgQWZ0ZXIgdGhlIGZpcnN0IGl0ZXJhdGlvbiwgU0VQIGlzIHByb21vdGVkIHRvIHRoZSBmcm9u
dAorIyBvZiBBQ1RJT04gKG5vdGUgdGhhdCBTRVAgc2hvdWxkIGluY2x1ZGUgYSB0cmFpbGluZyBb
XSBpZiBpdCBpcyB0bworIyBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIEFDVElPTikuICBUaGUgY3Vy
cmVudCBkZWZpbml0aW9uIGlzIGV4YW1pbmVkCisjIGFmdGVyIHRoZSBORVcgaGFzIGJlZW4gcHVz
aGVkIGJ1dCBiZWZvcmUgT0xEIGhhcyBiZWVuIHBvcHBlZDsgdGhpcworIyBvcmRlciBpcyBpbXBv
cnRhbnQsIGFzIEFDVElPTiBpcyBwZXJtaXR0ZWQgdG8gb3BlcmF0ZSBvbiBlaXRoZXIKKyMgX200
X2RlZm4oW09MRF0pIG9yIF9tNF9kZWZuKFtORVddKS4gIFNpbmNlIHRoZSBvcGVyYXRpb24gaXMK
KyMgZGVzdHJ1Y3RpdmUsIHRoaXMgbWFjcm8gaXMgZ2VuZXJhbGx5IHVzZWQgdHdpY2UsIHdpdGgg
YSB0ZW1wb3JhcnkKKyMgbWFjcm8gbmFtZSBob2xkaW5nIHRoZSBzd2FwcGVkIGNvcHkuCittNF9k
ZWZpbmUoW19tNF9zdGFja19yZXZlcnNlXSwKK1ttNF9pZmRlZihbJDFdLCBbbTRfcHVzaGRlZihb
JDJdLAorICBfbTRfZGVmbihbJDFdKSkkM1tdX200X3BvcGRlZihbJDFdKSQwKFskMV0sIFskMl0s
IFskNCQzXSldKV0pCisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMj
IDkuIE1vcmUgZGl2ZXJzaW9uIHN1cHBvcnQuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCisKKworIyBtNF9jbGVhcmRpdmVydChESVZFUlNJT04tTkFNRS4uLikKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERpc2NhcmQgYW55IHRleHQgaW4gRElW
RVJTSU9OLU5BTUUuCisjCisjIFRoaXMgd29ya3MgZXZlbiBpbnNpZGUgbTRfZXhwYW5kLgorbTRf
ZGVmaW5lKFttNF9jbGVhcmRpdmVydF0sCitbbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQw
OiBtaXNzaW5nIGFyZ3VtZW50XSldLAorICAgICAgIFtfbTRfZGl2ZXJ0X3JhdyhbLTFdKW00X3Vu
ZGl2ZXJ0KCRAKV9tNF9kaXZlcnRfcmF3KAorCSBfbTRfZGl2ZXJ0KF9tNF9kZWZuKFtfbTRfZGl2
ZXJ0X2RpdmVyc2lvbl0pLCBbLV0pKV0pXSkKKworCisjIF9tNF9kaXZlcnQoRElWRVJTSU9OLU5B
TUUgb3IgTlVNQkVSLCBbTk9XQVJOXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBJZiBESVZFUlNJT04tTkFNRSBpcyB0aGUgbmFtZSBvZiBhIGRp
dmVyc2lvbiwgcmV0dXJuIGl0cyBudW1iZXIsCisjIG90aGVyd2lzZSBpZiBpdCBpcyBhIE5VTUJF
UiByZXR1cm4gaXQuICBJc3N1ZSBhIHdhcm5pbmcgYWJvdXQKKyMgdGhlIHVzZSBvZiBhIG51bWJl
ciBpbnN0ZWFkIG9mIGEgbmFtZSwgdW5sZXNzIE5PV0FSTiBpcyBwcm92aWRlZC4KK200X2RlZmlu
ZShbX200X2RpdmVydF0sCitbbTRfaWZkZWYoW19tNF9kaXZlcnQoJDEpXSwKKwkgIFttNF9pbmRp
cihbX200X2RpdmVydCgkMSldKV0sCisJICBbbTRfaWYoWyQyXSwgW10sIFttNF93YXJuKFtzeW50
YXhdLAorCSAgICAgW3ByZWZlciBuYW1lZCBkaXZlcnNpb25zXSldKSQxXSldKQorCisjIEtJTEwg
aXMgb25seSB1c2VkIHRvIHN1cHByZXNzIG91dHB1dC4KK200X2RlZmluZShbX200X2RpdmVydChL
SUxMKV0sICAgICAgICAgICAtMSkKKworIyBUaGUgZW1wdHkgZGl2ZXJzaW9uIG5hbWUgaXMgYSBz
eW5vbnltIGZvciAwLgorbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0KCldLCAgICAgICAgICAgICAgICAw
KQorCisKKyMgbTRfZGl2ZXJ0X3N0YWNrCisjIC0tLS0tLS0tLS0tLS0tLQorIyBQcmludCB0aGUg
ZGl2ZXJzaW9uIHN0YWNrLCBpZiBpdCdzIG5vbmVtcHR5LiAgVGhlIGNhbGxlciBpcworIyByZXNw
b25zaWJsZSBmb3IgYW55IGxlYWRpbmcgb3IgdHJhaWxpbmcgbmV3bGluZS4KK200X2RlZmluZShb
bTRfZGl2ZXJ0X3N0YWNrXSwKK1ttNF9zdGFja19mb3JlYWNoX3NlcF9saWZvKFtfbTRfZGl2ZXJ0
X3N0YWNrXSwgW10sIFtdLCBbCitdKV0pCisKKworIyBtNF9kaXZlcnRfc3RhY2tfcHVzaChNQUNS
Ty1OQU1FLCBESVZFUlNJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIEZvcm0gYW4gZW50cnkgb2YgdGhlIGRpdmVyc2lvbiBzdGFj
ayBmcm9tIGNhbGxlciBNQUNSTy1OQU1FIGFuZAorIyBlbnRlcmluZyBESVZFUlNJT04tTkFNRSBh
bmQgcHVzaCBpdC4KK200X2RlZmluZShbbTRfZGl2ZXJ0X3N0YWNrX3B1c2hdLAorW200X3B1c2hk
ZWYoW19tNF9kaXZlcnRfc3RhY2tdLCBtNF9sb2NhdGlvbls6ICQxOiAkMl0pXSkKKworCisjIG00
X2RpdmVydChESVZFUlNJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBD
aGFuZ2UgdGhlIGRpdmVyc2lvbiBzdHJlYW0gdG8gRElWRVJTSU9OLU5BTUUuCittNF9kZWZpbmUo
W200X2RpdmVydF0sCitbbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X3N0YWNrXSldZG5sCitbbTRfZGVm
aW5lKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0sIFskMV0pXWRubAorW200X2RpdmVydF9zdGFja19w
dXNoKFskMF0sIFskMV0pXWRubAorW19tNF9kaXZlcnRfcmF3KF9tNF9kaXZlcnQoWyQxXSkpXSkK
KworCisjIG00X2RpdmVydF9wdXNoKERJVkVSU0lPTi1OQU1FLCBbTk9XQVJOXSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGFuZ2UgdGhlIGRpdmVyc2lv
biBzdHJlYW0gdG8gRElWRVJTSU9OLU5BTUUsIHdoaWxlIHN0YWNraW5nIG9sZCB2YWx1ZXMuCisj
IEZvciBpbnRlcm5hbCB1c2Ugb25seTogaWYgTk9XQVJOIGlzIG5vdCBlbXB0eSwgRElWRVJTSU9O
LU5BTUUgY2FuIGJlIGEKKyMgbnVtYmVyIGluc3RlYWQgb2YgYSBuYW1lLgorbTRfZGVmaW5lKFtt
NF9kaXZlcnRfcHVzaF0sCitbbTRfZGl2ZXJ0X3N0YWNrX3B1c2goWyQwXSwgWyQxXSldZG5sCitb
bTRfcHVzaGRlZihbX200X2RpdmVydF9kaXZlcnNpb25dLCBbJDFdKV1kbmwKK1tfbTRfZGl2ZXJ0
X3JhdyhfbTRfZGl2ZXJ0KFskMV0sIFskMl0pKV0pCisKKworIyBtNF9kaXZlcnRfcG9wKFtESVZF
UlNJT04tTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hhbmdl
IHRoZSBkaXZlcnNpb24gc3RyZWFtIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSwgdW5zdGFja2luZyBp
dC4KKyMgSWYgc3BlY2lmaWVkLCB2ZXJpZnkgd2UgbGVmdCBESVZFUlNJT04tTkFNRS4KKyMgV2hl
biB3ZSBwb3AgdGhlIGxhc3QgdmFsdWUgZnJvbSB0aGUgc3RhY2ssIHdlIGRpdmVydCB0byAtMS4K
K200X2RlZmluZShbbTRfZGl2ZXJ0X3BvcF0sCitbbTRfaWYoWyQxXSwgW10sIFtdLAorICAgICAg
IFskMV0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pLCBbXSwKKyAgICAgICBbbTRf
ZmF0YWwoWyQwKCQxKTogZGl2ZXJzaW9uIG1pc21hdGNoOgorXW00X2RpdmVydF9zdGFjayldKV1k
bmwKK1tfbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X3N0YWNrXSwgW19tNF9kaXZlcnRfZGl2ZXJzaW9u
XSldZG5sCitbbTRfaWZkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgW10sCisJICAgW200X2Zh
dGFsKFt0b28gbWFueSBtNF9kaXZlcnRfcG9wXSldKV1kbmwKK1tfbTRfZGl2ZXJ0X3JhdyhfbTRf
ZGl2ZXJ0KF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pLCBbLV0pKV0pCisKKworIyBt
NF9kaXZlcnRfdGV4dChESVZFUlNJT04tTkFNRSwgQ09OVEVOVCkKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCBDT05URU5UIGludG8gRElWRVJTSU9O
LU5BTUUgKHdoaWNoIG1heSBiZSBhIG51bWJlciBhY3R1YWxseSkuCisjIEFuIGVuZCBvZiBsaW5l
IGlzIGFwcGVuZGVkIGZvciBmcmVlIHRvIENPTlRFTlQuCittNF9kZWZpbmUoW200X2RpdmVydF90
ZXh0XSwKK1ttNF9kaXZlcnRfcHVzaChbJDFdKSQyCittNF9kaXZlcnRfcG9wKFskMV0pXSkKKwor
CisjIG00X2RpdmVydF9vbmNlKERJVkVSU0lPTi1OQU1FLCBDT05URU5UKQorIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT3V0cHV0IENPTlRFTlQgaW50byBESVZF
UlNJT04tTkFNRSBvbmNlLCBpZiBub3QgYWxyZWFkeSB0aGVyZS4KKyMgQW4gZW5kIG9mIGxpbmUg
aXMgYXBwZW5kZWQgZm9yIGZyZWUgdG8gQ09OVEVOVC4KK200X2RlZmluZShbbTRfZGl2ZXJ0X29u
Y2VdLAorW200X2V4cGFuZF9vbmNlKFttNF9kaXZlcnRfdGV4dChbJDFdLCBbJDJdKV0pXSkKKwor
CisjIF9tNF9kaXZlcnRfdW5zYWZlKERJVkVSU0lPTi1OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgSXNzdWUgYSB3YXJuaW5nIHRoYXQgdGhlIGF0dGVtcHQgdG8g
Y2hhbmdlIHRoZSBjdXJyZW50IGRpdmVyc2lvbiB0bworIyBESVZFUlNJT04tTkFNRSBpcyB1bnNh
ZmUsIGJlY2F1c2UgdGhpcyBtYWNybyBpcyBiZWluZyBleHBhbmRlZAorIyBkdXJpbmcgYXJndW1l
bnQgY29sbGVjdGlvbiBvZiBtNF9leHBhbmQuCittNF9kZWZpbmUoW19tNF9kaXZlcnRfdW5zYWZl
XSwKK1ttNF9mYXRhbChbJDA6IGNhbm5vdCBjaGFuZ2UgZGl2ZXJzaW9uIHRvIGAkMScgaW5zaWRl
IG00X2V4cGFuZF0pXSkKKworCisjIG00X3VuZGl2ZXJ0KERJVkVSU0lPTi1OQU1FLi4uKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVW5kaXZlcnQgRElWRVJTSU9OLU5BTUUu
ICBVbmxpa2UgdGhlIE00IHZlcnNpb24sIHRoaXMgcmVxdWlyZXMgYXQKKyMgbGVhc3Qgb25lIERJ
VkVSU0lPTi1OQU1FOyBhbHNvLCBkdWUgdG8gc3VwcG9ydCBmb3IgbmFtZWQgZGl2ZXJzaW9ucywK
KyMgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQgdG8gdW5kaXZlcnQgZmlsZXMuCittNF9kZWZpbmUo
W200X3VuZGl2ZXJ0XSwKK1ttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IG1pc3Npbmcg
YXJndW1lbnRdKV0sCisgICAgICAgWyQjXSwgWzFdLCBbX200X3VuZGl2ZXJ0KF9tNF9kaXZlcnQo
WyQxXSkpXSwKKyAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSldKQorCisKKyMjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgMTAuIERlZmlu
aW5nIG1hY3JvcyB3aXRoIGJlbGxzIGFuZCB3aGlzdGxlcy4gICMjCisjIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBgbTRfZGVmdW4nIGlzIGJh
c2ljYWxseSBgbTRfZGVmaW5lJyBidXQgaXQgZXF1aXBzIHRoZSBtYWNybyB3aXRoIHRoZQorIyBu
ZWVkZWQgbWFjaGluZXJ5IGZvciBgbTRfcmVxdWlyZScuICBBIG1hY3JvIG11c3QgYmUgbTRfZGVm
dW4nZCBpZgorIyBlaXRoZXIgaXQgaXMgbTRfcmVxdWlyZSdkLCBvciBpdCBtNF9yZXF1aXJlJ3Mu
CisjCisjIFR3byB0aGluZ3MgZGVzZXJ2ZSBhdHRlbnRpb24gYW5kIGFyZSBkZXRhaWxlZCBiZWxv
dzoKKyMgIDEuIEltcGxlbWVudGF0aW9uIG9mIG00X3JlcXVpcmUKKyMgIDIuIEtlZXBpbmcgdHJh
Y2sgb2YgdGhlIGV4cGFuc2lvbiBzdGFjaworIworIyAxLiBJbXBsZW1lbnRhdGlvbiBvZiBtNF9y
ZXF1aXJlCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgT2YgY291cnNl
IG00X2RlZnVuIGNhbGxzIG00X3Byb3ZpZGUsIHNvIHRoYXQgYSBtYWNybyB3aGljaCBoYXMKKyMg
YmVlbiBleHBhbmRlZCBpcyBub3QgZXhwYW5kZWQgYWdhaW4gd2hlbiBtNF9yZXF1aXJlJ2QsIGJ1
dCB0aGUKKyMgZGlmZmljdWx0IHBhcnQgaXMgdGhlIHByb3BlciBleHBhbnNpb24gb2YgbWFjcm9z
IHdoZW4gdGhleSBhcmUKKyMgbTRfcmVxdWlyZSdkLgorIworIyBUaGUgaW1wbGVtZW50YXRpb24g
aXMgYmFzZWQgb24gdGhyZWUgaWRlYXMsIChpKSB1c2luZyBkaXZlcnNpb25zIHRvCisjIHByZXBh
cmUgdGhlIGV4cGFuc2lvbiBvZiB0aGUgbWFjcm8gYW5kIGl0cyBkZXBlbmRlbmNpZXMgKGJ5IEZy
YW5jLG9pcworIyBQaW5hcmQpLCAoaWkpIGV4cGFuZCB0aGUgbW9zdCByZWNlbnRseSBtNF9yZXF1
aXJlJ2QgbWFjcm9zIF9hZnRlcl8KKyMgdGhlIHByZXZpb3VzIG1hY3JvcyAoYnkgQXhlbCBUaGlt
bSksIGFuZCAoaWlpKSB0cmFjayBpbnN0YW5jZXMgb2YKKyMgcHJvdmlkZSBiZWZvcmUgcmVxdWly
ZSAoYnkgRXJpYyBCbGFrZSkuCisjCisjCisjIFRoZSBmaXJzdCBpZGVhOiB3aHkgdXNlIGRpdmVy
c2lvbnM/CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFdoZW4g
YSBtYWNybyByZXF1aXJlcyBhbm90aGVyLCB0aGUgb3RoZXIgbWFjcm8gaXMgZXhwYW5kZWQgaW4g
bmV3CisjIGRpdmVyc2lvbiwgR1JPVy4gIFdoZW4gdGhlIG91dGVyIG1hY3JvIGlzIGZ1bGx5IGV4
cGFuZGVkLCB3ZSBmaXJzdAorIyB1bmRpdmVydCB0aGUgbW9zdCBuZXN0ZWQgZGl2ZXJzaW9ucyAo
R1JPVyAtIDEuLi4pLCBhbmQgZmluYWxseQorIyB1bmRpdmVydCBHUk9XLiAgVG8gdW5kZXJzdGFu
ZCB3aHkgd2UgbmVlZCBzZXZlcmFsIGRpdmVyc2lvbnMsCisjIGNvbnNpZGVyIHRoZSBmb2xsb3dp
bmcgZXhhbXBsZToKKyMKKyMgfCBtNF9kZWZ1bihbVEVTVDFdLCBbVGVzdC4uLm00X3JlcXVpcmUo
W1RFU1QyXSkxXSkKKyMgfCBtNF9kZWZ1bihbVEVTVDJdLCBbVGVzdC4uLm00X3JlcXVpcmUoW1RF
U1QzXSkyXSkKKyMgfCBtNF9kZWZ1bihbVEVTVDNdLCBbVGVzdC4uLjNdKQorIworIyBCZWNhdXNl
IG00X3JlcXVpcmUgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGZpcnN0IGluIHRoZSBvdXRlciBtYWNy
b3MsIHdlCisjIG11c3Qga2VlcCB0aGUgZXhwYW5zaW9ucyBvZiB0aGUgdmFyaW91cyBsZXZlbHMg
b2YgbTRfcmVxdWlyZSBzZXBhcmF0ZWQuCisjIFJpZ2h0IGJlZm9yZSBleGVjdXRpbmcgdGhlIGVw
aWxvZ3VlIG9mIFRFU1QxLCB3ZSBoYXZlOgorIworIwkgICBHUk9XIC0gMjogVGVzdC4uLjMKKyMJ
ICAgR1JPVyAtIDE6IFRlc3QuLi4yCisjCSAgIEdST1c6ICAgICBUZXN0Li4uMQorIwkgICBCT0RZ
OgorIworIyBGaW5hbGx5IHRoZSBlcGlsb2d1ZSBvZiBURVNUMSB1bmRpdmVydHMgR1JPVyAtIDIs
IEdST1cgLSAxLCBhbmQKKyMgR1JPVyBpbnRvIHRoZSByZWd1bGFyIGZsb3csIEJPRFkuCisjCisj
CSAgIEdST1cgLSAyOgorIwkgICBHUk9XIC0gMToKKyMJICAgR1JPVzoKKyMJICAgQk9EWTogICAg
ICAgIFRlc3QuLi4zOyBUZXN0Li4uMjsgVGVzdC4uLjEKKyMKKyMgKFRoZSBzZW1pY29sb25zIGFy
ZSBoZXJlIGZvciBjbGFyaWZpY2F0aW9uLCBidXQgb2YgY291cnNlIGFyZSBub3QKKyMgZW1pdHRl
ZC4pICBUaGlzIGlzIHdoYXQgQXV0b2NvbmYgMi4wIChJIHRoaW5rKSB0byAyLjEzIChJJ20gc3Vy
ZSkKKyMgaW1wbGVtZW50LgorIworIworIyBUaGUgc2Vjb25kIGlkZWE6IGZpcnN0IHJlcXVpcmVk
IGZpcnN0IG91dAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IworIyBUaGUgbmF0dXJhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaWRlYSBhYm92ZSBpcyBidWdn
eSBhbmQgcHJvZHVjZXMKKyMgdmVyeSBzdXJwcmlzaW5nIHJlc3VsdHMgaW4gc29tZSBzaXR1YXRp
b25zLiAgTGV0J3MgY29uc2lkZXIgdGhlCisjIGZvbGxvd2luZyBleGFtcGxlIHRvIGV4cGxhaW4g
dGhlIGJ1ZzoKKyMKKyMgfCBtNF9kZWZ1bihbVEVTVDFdLCAgW200X3JlcXVpcmUoW1RFU1QyYV0p
bTRfcmVxdWlyZShbVEVTVDJiXSldKQorIyB8IG00X2RlZnVuKFtURVNUMmFdLCBbXSkKKyMgfCBt
NF9kZWZ1bihbVEVTVDJiXSwgW200X3JlcXVpcmUoW1RFU1QzXSldKQorIyB8IG00X2RlZnVuKFtU
RVNUM10sICBbbTRfcmVxdWlyZShbVEVTVDJhXSldKQorIyB8CisjIHwgQUNfSU5JVAorIyB8IFRF
U1QxCisjCisjIFRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUgbWFjcm9zIGFyZToKKyMKKyMJ
CSAzIC0tLSAyYgorIwkJLyAgICAgICAgXCAgICAgICAgICAgICAgaXMgbTRfcmVxdWlyZSdkIGJ5
CisjCSAgICAgICAvICAgICAgICAgIFwgICAgICAgbGVmdCAtLS0tLS0tLS0tLS0tLS0tLS0tLSBy
aWdodAorIwkgICAgMmEgLS0tLS0tLS0tLS0tIDEKKyMKKyMgSWYgeW91IHN0cmljdGx5IGFwcGx5
IHRoZSBydWxlcyBnaXZlbiBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbiB5b3UgZ2V0OgorIworIwkg
ICBHUk9XIC0gMjogVEVTVDMKKyMJICAgR1JPVyAtIDE6IFRFU1QyYTsgVEVTVDJiCisjCSAgIEdS
T1c6ICAgICBURVNUMQorIwkgICBCT0RZOgorIworIyAoVEVTVDJhLCBhbHRob3VnaCByZXF1aXJl
ZCBieSBURVNUMyBpcyBub3QgZXhwYW5kZWQgaW4gR1JPVyAtIDMKKyMgYmVjYXVzZSBpcyBoYXMg
YWxyZWFkeSBiZWVuIGV4cGFuZGVkIGJlZm9yZSBpbiBHUk9XIC0gMSwgc28gaXQgaGFzCisjIGJl
ZW4gQUNfUFJPVklERSdkLCBzbyBpdCBpcyBub3QgZXhwYW5kZWQgYWdhaW4pIHNvIHdoZW4geW91
IHVuZGl2ZXJ0CisjIHRoZSBzdGFjayBvZiBkaXZlcnNpb25zLCB5b3UgZ2V0OgorIworIwkgICBH
Uk9XIC0gMjoKKyMJICAgR1JPVyAtIDE6CisjCSAgIEdST1c6CisjCSAgIEJPRFk6ICAgICAgICBU
RVNUMzsgVEVTVDJhOyBURVNUMmI7IFRFU1QxCisjCisjIGkuZS4sIFRFU1QyYSBpcyBleHBhbmRl
ZCBhZnRlciBURVNUMyBhbHRob3VnaCB0aGUgbGF0dGVyIHJlcXVpcmVkIHRoZQorIyBmb3JtZXIu
CisjCisjIFN0YXJ0aW5nIGZyb20gMi41MCwgd2UgdXNlIGFuIGltcGxlbWVudGF0aW9uIHByb3Zp
ZGVkIGJ5IEF4ZWwgVGhpbW0uCisjIFRoZSBpZGVhIGlzIHNpbXBsZTogdGhlIG9yZGVyIGluIHdo
aWNoIG1hY3JvcyBhcmUgZW1pdHRlZCBtdXN0IGJlIHRoZQorIyBzYW1lIGFzIHRoZSBvbmUgaW4g
d2hpY2ggbWFjcm9zIGFyZSBleHBhbmRlZC4gIChUaGUgYnVnIGFib3ZlIGNhbgorIyBpbmRlZWQg
YmUgZGVzY3JpYmVkIGFzOiBhIG1hY3JvIGhhcyBiZWVuIG00X3Byb3ZpZGUnZCBiZWZvcmUgaXRz
CisjIGRlcGVuZGVudCwgYnV0IGl0IGlzIGVtaXR0ZWQgYWZ0ZXI6IHRoZSBsYWNrIG9mIGNvcnJl
bGF0aW9uIGJldHdlZW4KKyMgZW1pc3Npb24gYW5kIGV4cGFuc2lvbiBvcmRlciBpcyBndWlsdHkp
LgorIworIyBIb3cgdG8gZG8gdGhhdD8gIFlvdSBrZWVwIHRoZSBzdGFjayBvZiBkaXZlcnNpb25z
IHRvIGVsYWJvcmF0ZSB0aGUKKyMgbWFjcm9zLCBidXQgZWFjaCB0aW1lIGEgbWFjcm8gaXMgZnVs
bHkgZXhwYW5kZWQsIGVtaXQgaXQgaW1tZWRpYXRlbHkuCisjCisjIEluIHRoZSBleGFtcGxlIGFi
b3ZlLCB3aGVuIFRFU1QyYSBpcyBleHBhbmRlZCwgYnV0IGl0J3MgZXBpbG9ndWUgaXMKKyMgbm90
IHJ1biB5ZXQsIHlvdSBoYXZlOgorIworIwkgICBHUk9XIC0gMjoKKyMJICAgR1JPVyAtIDE6IFRF
U1QyYQorIwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24gb2YgVEVTVDEKKyMJICAgQk9EWToKKyMK
KyMgVGhlIGVwaWxvZ3VlIG9mIFRFU1QyYSBlbWl0cyBpdCBpbW1lZGlhdGVseToKKyMKKyMJICAg
R1JPVyAtIDI6CisjCSAgIEdST1cgLSAxOgorIwkgICBHUk9XOiAgICAgRWxhYm9yYXRpb24gb2Yg
VEVTVDEKKyMJICAgQk9EWTogICAgIFRFU1QyYQorIworIyBURVNUMmIgdGhlbiByZXF1aXJlcyBU
RVNUMywgc28gcmlnaHQgYmVmb3JlIHRoZSBlcGlsb2d1ZSBvZiBURVNUMywgeW91CisjIGhhdmU6
CisjCisjCSAgIEdST1cgLSAyOiBURVNUMworIwkgICBHUk9XIC0gMTogRWxhYm9yYXRpb24gb2Yg
VEVTVDJiCisjCSAgIEdST1c6ICAgICBFbGFib3JhdGlvbiBvZiBURVNUMQorIwkgICBCT0RZOiAg
ICAgIFRFU1QyYQorIworIyBUaGUgZXBpbG9ndWUgb2YgVEVTVDMgZW1pdHMgaXQ6CisjCisjCSAg
IEdST1cgLSAyOgorIwkgICBHUk9XIC0gMTogRWxhYm9yYXRpb24gb2YgVEVTVDJiCisjCSAgIEdS
T1c6ICAgICBFbGFib3JhdGlvbiBvZiBURVNUMQorIwkgICBCT0RZOiAgICAgVEVTVDJhOyBURVNU
MworIworIyBURVNUMmIgaXMgbm93IGNvbXBsZXRlbHkgZXhwYW5kZWQsIGFuZCBlbWl0dGVkOgor
IworIwkgICBHUk9XIC0gMjoKKyMJICAgR1JPVyAtIDE6CisjCSAgIEdST1c6ICAgICBFbGFib3Jh
dGlvbiBvZiBURVNUMQorIwkgICBCT0RZOiAgICAgVEVTVDJhOyBURVNUMzsgVEVTVDJiCisjCisj
IGFuZCBmaW5hbGx5LCBURVNUMSBpcyBmaW5pc2hlZCBhbmQgZW1pdHRlZDoKKyMKKyMJICAgR1JP
VyAtIDI6CisjCSAgIEdST1cgLSAxOgorIwkgICBHUk9XOgorIwkgICBCT0RZOiAgICAgVEVTVDJh
OyBURVNUMzsgVEVTVDJiOiBURVNUMQorIworIyBUaGUgaWRlYSBpcyBzaW1wbGUsIGJ1dCB0aGUg
aW1wbGVtZW50YXRpb24gaXMgYSBiaXQgaW52b2x2ZWQuICBJZgorIyB5b3UgYXJlIGxpa2UgbWUs
IHlvdSB3aWxsIHdhbnQgdG8gc2VlIHRoZSBhY3R1YWwgZnVuY3Rpb25pbmcgb2YgdGhpcworIyBp
bXBsZW1lbnRhdGlvbiB0byBiZSBjb252aW5jZWQuICBUaGUgbmV4dCBzZWN0aW9uIGdpdmVzIHRo
ZSBmdWxsCisjIGRldGFpbHMuCisjCisjCisjIFRoZSBBeGVsIFRoaW1tIGltcGxlbWVudGF0aW9u
IGF0IHdvcmsKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBX
ZSBjb25zaWRlciB0aGUgbWFjcm9zIGFib3ZlLCBhbmQgdGhpcyBjb25maWd1cmUuYWM6CisjCisj
CSAgICBBQ19JTklUCisjCSAgICBURVNUMQorIworIyBZb3Ugc2hvdWxkIGtlZXAgdGhlIGRlZmlu
aXRpb25zIG9mIF9tNF9kZWZ1bl9wcm8sIF9tNF9kZWZ1bl9lcGksIGFuZAorIyBtNF9yZXF1aXJl
IGF0IGhhbmQgdG8gZm9sbG93IHRoZSBzdGVwcy4KKyMKKyMgVGhpcyBpbXBsZW1lbnRhdGlvbiB0
cmllcyBub3QgdG8gYXNzdW1lIHRoYXQgdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIGlzCisjIEJPRFks
IHNvIGFzIHNvb24gYXMgYSBtYWNybyAobTRfZGVmdW4nZCkgaXMgZXhwYW5kZWQsIHdlIGZpcnN0
CisjIHJlY29yZCB0aGUgY3VycmVudCBkaXZlcnNpb24gdW5kZXIgdGhlIG5hbWUgX200X2RpdmVy
dF9kdW1wIChkZW5vdGVkCisjIERVTVAgYmVsb3cgZm9yIHNob3J0KS4gIFRoaXMgaW50cm9kdWNl
cyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSB3aXRoCisjIHRoZSBwcmV2aW91cyB2ZXJzaW9ucyBv
ZiBBdXRvY29uZjogeW91IGNhbm5vdCB1c2UgbTRfcmVxdWlyZSBpZiB5b3UKKyMgYXJlIG5vdCBp
bnNpZGUgYW4gbTRfZGVmdW4nZCBtYWNybywgYW5kIGVzcGVjaWFsbHksIHlvdSBjYW5ub3QKKyMg
bTRfcmVxdWlyZSBkaXJlY3RseSBmcm9tIHRoZSB0b3AgbGV2ZWwuCisjCisjIFdlIGhhdmUgbm90
IHRyaWVkIHRvIHNpbXVsYXRlIHRoZSBvbGQgYmVoYXZpb3IgKGJldHRlciB5ZXQsIHdlCisjIGRp
YWdub3NlIGl0KSwgYmVjYXVzZSBpdCBpcyB0b28gZGFuZ2Vyb3VzOiBhIG1hY3JvIG00X3JlcXVp
cmUnZCBmcm9tCisjIHRoZSB0b3AgbGV2ZWwgaXMgZXhwYW5kZWQgYmVmb3JlIHRoZSBib2R5IG9m
IGBjb25maWd1cmUnLCBpLmUuLCBiZWZvcmUKKyMgYW55IG90aGVyIHRlc3Qgd2FzIHJ1bi4gIEkg
bGV0IHlvdSBpbWFnaW5lIHRoZSByZXN1bHQgb2YgcmVxdWlyaW5nCisjIEFDX1NURENfSEVBREVS
UyBmb3IgaW5zdGFuY2UsIGJlZm9yZSBBQ19QUk9HX0NDIHdhcyBhY3R1YWxseSBydW4uLi4uCisj
CisjIEFmdGVyIEFDX0lOSVQgd2FzIHJ1biwgdGhlIGN1cnJlbnQgZGl2ZXJzaW9uIGlzIEJPRFku
CisjICogQUNfSU5JVCB3YXMgcnVuCisjICAgRFVNUDogICAgICAgICAgICAgICAgdW5kZWZpbmVk
CisjICAgZGl2ZXJzaW9uIHN0YWNrOiAgICAgQk9EWSB8LQorIworIyAqIFRFU1QxIGlzIGV4cGFu
ZGVkCisjIFRoZSBwcm9sb2d1ZSBvZiBURVNUMSBzZXRzIF9tNF9kaXZlcnRfZHVtcCwgd2hpY2gg
aXMgdGhlIGRpdmVyc2lvbgorIyB3aGVyZSB0aGUgY3VycmVudCBlbGFib3JhdGlvbiB3aWxsIGJl
IGR1bXBlZCwgdG8gdGhlIGN1cnJlbnQKKyMgZGl2ZXJzaW9uLiAgSXQgYWxzbyBtNF9kaXZlcnRf
cHVzaCB0byBHUk9XLCB3aGVyZSB0aGUgZnVsbAorIyBleHBhbnNpb24gb2YgVEVTVDEgYW5kIGl0
cyBkZXBlbmRlbmNpZXMgd2lsbCBiZSBlbGFib3JhdGVkLgorIyAgIERVTVA6ICAgICAgICBCT0RZ
CisjICAgQk9EWTogICAgICAgIGVtcHR5CisjICAgZGl2ZXJzaW9uczogIEdST1csIEJPRFkgfC0K
KyMKKyMgKiBURVNUMSByZXF1aXJlcyBURVNUMmEKKyMgX200X3JlcXVpcmVfY2FsbCBtNF9kaXZl
cnRfcHVzaGVzIGFub3RoZXIgdGVtcG9yYXJ5IGRpdmVyc2lvbiwKKyMgR1JPVyAtIDEsIGFuZCBl
eHBhbmRzIFRFU1QyYSBpbiB0aGVyZS4KKyMgICBEVU1QOiAgICAgICAgQk9EWQorIyAgIEJPRFk6
ICAgICAgICBlbXB0eQorIyAgIEdST1cgLSAxOiAgICBURVNUMmEKKyMgICBkaXZlcnNpb25zOiAg
R1JPVyAtIDEsIEdST1csIEJPRFkgfC0KKyMgVGhlbiB0aGUgY29udGVudCBvZiB0aGUgdGVtcG9y
YXJ5IGRpdmVyc2lvbiBpcyBtb3ZlZCB0byBEVU1QIGFuZCB0aGUKKyMgdGVtcG9yYXJ5IGRpdmVy
c2lvbiBpcyBwb3BwZWQuCisjICAgRFVNUDogICAgICAgIEJPRFkKKyMgICBCT0RZOiAgICAgICAg
VEVTVDJhCisjICAgZGl2ZXJzaW9uczogIEdST1csIEJPRFkgfC0KKyMKKyMgKiBURVNUMSByZXF1
aXJlcyBURVNUMmIKKyMgQWdhaW4sIF9tNF9yZXF1aXJlX2NhbGwgcHVzaGVzIEdST1cgLSAxIGFu
ZCBoZWFkcyB0byBleHBhbmQgVEVTVDJiLgorIyAgIERVTVA6ICAgICAgICBCT0RZCisjICAgQk9E
WTogICAgICAgIFRFU1QyYQorIyAgIGRpdmVyc2lvbnM6ICBHUk9XIC0gMSwgR1JPVywgQk9EWSB8
LQorIworIyAqIFRFU1QyYiByZXF1aXJlcyBURVNUMworIyBfbTRfcmVxdWlyZV9jYWxsIHB1c2hl
cyBHUk9XIC0gMiBhbmQgZXhwYW5kcyBURVNUMyBoZXJlLgorIyAoVEVTVDMgcmVxdWlyZXMgVEVT
VDJhLCBidXQgVEVTVDJhIGhhcyBhbHJlYWR5IGJlZW4gbTRfcHJvdmlkZSdkLCBzbworIyBub3Ro
aW5nIGhhcHBlbnMuKQorIyAgIERVTVA6ICAgICAgICBCT0RZCisjICAgQk9EWTogICAgICAgIFRF
U1QyYQorIyAgIEdST1cgLSAyOiAgICBURVNUMworIyAgIGRpdmVyc2lvbnM6ICBHUk9XIC0gMiwg
R1JPVyAtIDEsIEdST1csIEJPRFkgfC0KKyMgVGhlbiB0aGUgZGl2ZXJzaW9uIGlzIGFwcGVuZGVk
IHRvIERVTVAsIGFuZCBwb3BwZWQuCisjICAgRFVNUDogICAgICAgIEJPRFkKKyMgICBCT0RZOiAg
ICAgICAgVEVTVDJhOyBURVNUMworIyAgIGRpdmVyc2lvbnM6ICBHUk9XIC0gMSwgR1JPVywgQk9E
WSB8LQorIworIyAqIFRFU1QxIHJlcXVpcmVzIFRFU1QyYiAoY29udGQuKQorIyBUaGUgY29udGVu
dCBvZiBURVNUMmIgaXMgZXhwYW5kZWQuLi4KKyMgICBEVU1QOiAgICAgICAgQk9EWQorIyAgIEJP
RFk6ICAgICAgICBURVNUMmE7IFRFU1QzCisjICAgR1JPVyAtIDE6ICAgIFRFU1QyYiwKKyMgICBk
aXZlcnNpb25zOiAgR1JPVyAtIDEsIEdST1csIEJPRFkgfC0KKyMgLi4uIGFuZCBtb3ZlZCB0byBE
VU1QLgorIyAgIERVTVA6ICAgICAgICBCT0RZCisjICAgQk9EWTogICAgICAgIFRFU1QyYTsgVEVT
VDM7IFRFU1QyYgorIyAgIGRpdmVyc2lvbnM6ICBHUk9XLCBCT0RZIHwtCisjCisjICogVEVTVDEg
aXMgZXhwYW5kZWQ6IGVwaWxvZ3VlCisjIFRFU1QxJ3Mgb3duIGNvbnRlbnQgaXMgaW4gR1JPVy4u
LgorIyAgIERVTVA6ICAgICAgICBCT0RZCisjICAgQk9EWTogICAgICAgIFRFU1QyYTsgVEVTVDM7
IFRFU1QyYgorIyAgIEdST1c6ICAgICAgICBURVNUMQorIyAgIGRpdmVyc2lvbnM6ICBCT0RZIHwt
CisjIC4uLiBhbmQgaXQncyBlcGlsb2d1ZSBtb3ZlcyBpdCB0byBEVU1QIGFuZCB0aGVuIHVuZGVm
aW5lcyBEVU1QLgorIyAgIERVTVA6ICAgICAgIHVuZGVmaW5lZAorIyAgIEJPRFk6ICAgICAgIFRF
U1QyYTsgVEVTVDM7IFRFU1QyYjsgVEVTVDEKKyMgICBkaXZlcnNpb25zOiBCT0RZIHwtCisjCisj
CisjIFRoZSB0aGlyZCBpZGVhOiB0cmFjayBtYWNyb3MgcHJvdmlkZWQgYmVmb3JlIHRoZXkgd2Vy
ZSByZXF1aXJlZAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgVXNpbmcganVzdCB0aGUgZmlyc3QgdHdvIGlkZWFz
LCBBdXRvY29uZiAyLjUwIHRocm91Z2ggMi42MyBzdGlsbCBoYWQKKyMgYSBzdWJ0bGUgYnVnIGZv
ciBtb3JlIHRoYW4gc2V2ZW4geWVhcnMuICBMZXQncyBjb25zaWRlciB0aGUKKyMgZm9sbG93aW5n
IGV4YW1wbGUgdG8gZXhwbGFpbiB0aGUgYnVnOgorIworIyB8IG00X2RlZnVuKFtURVNUMV0sIFsx
XSkKKyMgfCBtNF9kZWZ1bihbVEVTVDJdLCBbMltdbTRfcmVxdWlyZShbVEVTVDFdKV0pCisjIHwg
bTRfZGVmdW4oW1RFU1QzXSwgWzMgVEVTVDEgbTRfcmVxdWlyZShbVEVTVDJdKV0pCisjIHwgVEVT
VDMKKyMKKyMgQWZ0ZXIgdGhlIHByb2xvZ3VlIG9mIFRFU1QzLCB3ZSBhcmUgY29sbGVjdGluZyB0
ZXh0IGluIEdST1cgd2l0aCB0aGUKKyMgaW50ZW50IG9mIGR1bXBpbmcgaXQgaW4gQk9EWSBkdXJp
bmcgdGhlIGVwaWxvZ3VlLiAgTmV4dCwgd2UKKyMgZW5jb3VudGVyIHRoZSBkaXJlY3QgaW52b2Nh
dGlvbiBvZiBURVNUMSwgd2hpY2ggcHJvdmlkZXMgdGhlIG1hY3JvCisjIGluIHBsYWNlIGluIEdS
T1cuICBGcm9tIHRoZXJlLCB3ZSBlbmNvdW50ZXIgYSByZXF1aXJlbWVudCBmb3IgVEVTVDIsCisj
IHdoaWNoIG11c3QgYmUgY29sbGVjdGVkIGluIGEgbmV3IGRpdmVyc2lvbi4gIFdoaWxlIGV4cGFu
ZGluZyBURVNUMiwKKyMgd2UgZW5jb3VudGVyIGEgcmVxdWlyZW1lbnQgZm9yIFRFU1QxLCBidXQg
c2luY2UgaXQgaGFzIGFscmVhZHkgYmVlbgorIyBleHBhbmRlZCwgdGhlIEF4ZWwgVGhpbW0gYWxn
b3JpdGhtIHN0YXRlcyB0aGF0IHdlIGNhbiB0cmVhdCBpdCBhcyBhCisjIG5vLW9wLiAgQnV0IHRo
YXQgd291bGQgbGVhZCB0byBhbiBlbmQgcmVzdWx0IG9mIGAyIDMgMScsIG1lYW5pbmcKKyMgdGhh
dCB3ZSBoYXZlIG9uY2UgYWdhaW4gb3V0cHV0IGEgbWFjcm8gKFRFU1QyKSBwcmlvciB0byBpdHMK
KyMgcmVxdWlyZW1lbnRzIChURVNUMSkuCisjCisjIFRoZSBwcm9ibGVtIGNhbiBvbmx5IG9jY3Vy
IGlmIGEgc2luZ2xlIGRlZnVuJ2QgbWFjcm8gZmlyc3QgcHJvdmlkZXMsCisjIHRoZW4gbGF0ZXIg
aW5kaXJlY3RseSByZXF1aXJlcywgdGhlIHNhbWUgbWFjcm8uICBOb3RlIHRoYXQgZGlyZWN0bHkK
KyMgZXhwYW5kaW5nIHRoZW4gcmVxdWlyaW5nIGEgbWFjcm8gaXMgb2theTogYmVjYXVzZSB0aGUg
ZGVwZW5kZW5jeSB3YXMKKyMgbWV0LCB0aGUgcmVxdWlyZSBwaGFzZSBjYW4gYmUgYSBuby1vcC4g
IEZvciB0aGF0IG1hdHRlciwgdGhlIG91dGVyCisjIG1hY3JvIGNhbiBldmVuIHJlcXVpcmUgdHdv
IGhlbHBlcnMsIHdoZXJlIHRoZSBmaXJzdCBoZWxwZXIgZXhwYW5kcworIyB0aGUgbWFjcm8sIGFu
ZCB0aGUgc2Vjb25kIGhlbHBlciBpbmRpcmVjdGx5IHJlcXVpcmVzIHRoZSBtYWNyby4KKyMgT3V0
LW9mLW9yZGVyIGV4cGFuc2lvbiBpcyBvbmx5IHByZXNlbnQgaWYgdGhlIGlubmVyIG1hY3JvIGlz
CisjIHJlcXVpcmVkIGJ5IHNvbWV0aGluZyB0aGF0IHdpbGwgYmUgaG9pc3RlZCBpbiBmcm9udCBv
ZiB3aGVyZSB0aGUKKyMgZGlyZWN0IGV4cGFuc2lvbiBvY2N1cnJlZC4gIEluIG90aGVyIHdvcmRz
LCB3ZSBtdXN0IGJlIGNhcmVmdWwgbm90CisjIHRvIHdhcm4gb246CisjCisjIHwgbTRfZGVmdW4o
W1RFU1Q0XSwgWzRdKQorIyB8IG00X2RlZnVuKFtURVNUNV0sIFs1IFRFU1Q0IG00X3JlcXVpcmUo
W1RFU1Q0XSldKQorIyB8IFRFU1Q1ID0+IDUgNAorIworIyBvciBldmVuIHRoZSBtb3JlIGNvbXBs
ZXg6CisjCisjIHwgbTRfZGVmdW4oW1RFU1Q2XSwgWzZdKQorIyB8IG00X2RlZnVuKFtURVNUN10s
IFs3IFRFU1Q2XSkKKyMgfCBtNF9kZWZ1bihbVEVTVDhdLCBbOCBtNF9yZXF1aXJlKFtURVNUNl0p
XSkKKyMgfCBtNF9kZWZ1bihbVEVTVDldLCBbOSBtNF9yZXF1aXJlKFtURVNUOF0pXSkKKyMgfCBt
NF9kZWZ1bihbVEVTVDEwXSwgWzEwIG00X3JlcXVpcmUoW1RFU1Q3XSkgbTRfcmVxdWlyZShbVEVT
VDldKV0pCisjIHwgVEVTVDEwID0+IDcgNiA4IDkgMTAKKyMKKyMgU28sIHRvIGRldGVjdCB3aGV0
aGVyIGEgcmVxdWlyZSB3YXMgZGlyZWN0IG9yIGluZGlyZWN0LCBtNF9kZWZ1biBhbmQKKyMgbTRf
cmVxdWlyZSB0cmFjayB0aGUgbmFtZSBvZiB0aGUgbWFjcm8gdGhhdCBjYXVzZWQgYSBkaXZlcnNp
b24gdG8gYmUKKyMgY3JlYXRlZCAodXNpbmcgdGhlIHN0YWNrIF9tNF9kaXZlcnRpbmcsIGNvdXBs
ZWQgd2l0aCBhbiBPKDEpIGxvb2t1cAorIyBfbTRfZGl2ZXJ0aW5nKFtOQU1FXSkpLCBhbmQgbTRf
cHJvdmlkZSBzdG9yZXMgdGhlIG5hbWUgYXNzb2NpYXRlZAorIyB3aXRoIHRoZSBkaXZlcnNpb24g
YXQgd2hpY2ggYSBtYWNybyB3YXMgcHJvdmlkZWQuICBBIHJlcXVpcmUgY2FsbCBpcworIyBkaXJl
Y3QgaWYgaXQgb2NjdXJzIHdpdGhpbiB0aGUgc2FtZSBkaXZlcnNpb24gd2hlcmUgdGhlIG1hY3Jv
IHdhcworIyBwcm92aWRlZCwgb3IgaWYgdGhlIGRpdmVyc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhl
IHByb3ZpZGluZyBjb250ZXh0CisjIGhhcyBiZWVuIGNvbGxlY3RlZC4KKyMKKyMgVGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZSB3YXJuaW5nIGludm9sdmVzIHRyYWNraW5nIHRoZSBzZXQgb2YKKyMg
bWFjcm9zIHdoaWNoIGhhdmUgYmVlbiBwcm92aWRlZCBzaW5jZSB0aGUgc3RhcnQgb2YgdGhlIG91
dGVybW9zdAorIyBkZWZ1bidkIG1hY3JvICh0aGUgc2V0IGlzIG5hbWVkIF9tNF9wcm92aWRlKS4g
IFdoZW4gc3RhcnRpbmcgYW4KKyMgb3V0ZXJtb3N0IG1hY3JvLCB0aGUgc2V0IGlzIGVtcHRpZWQ7
IHdoZW4gYSBtYWNybyBpcyBwcm92aWRlZCwgaXQgaXMKKyMgYWRkZWQgdG8gdGhlIHNldDsgd2hl
biByZXF1aXJlIGV4cGFuZHMgdGhlIGJvZHkgb2YgYSBtYWNybywgaXQgaXMKKyMgcmVtb3ZlZCBm
cm9tIHRoZSBzZXQ7IGFuZCB3aGVuIGEgbWFjcm8gaXMgaW5kaXJlY3RseSByZXF1aXJlZCwgdGhl
CisjIHNldCBpcyBjaGVja2VkLiAgSWYgYSBtYWNybyBpcyBpbiB0aGUgc2V0LCB0aGVuIGl0IGhh
cyBiZWVuIHByb3ZpZGVkCisjIGJlZm9yZSBpdCB3YXMgcmVxdWlyZWQsIGFuZCB3ZSBzYXRpc2Z5
IGRlcGVuZGVuY2llcyBieSBleHBhbmRpbmcgdGhlCisjIG1hY3JvIGFzIGlmIGl0IGhhZCBuZXZl
ciBiZWVuIHByb3ZpZGVkOyBpbiB0aGUgZXhhbXBsZSBnaXZlbiBhYm92ZSwKKyMgdGhpcyBtZWFu
cyB3ZSBub3cgb3V0cHV0IGAxIDIgMyAxJy4gIE1lYW53aGlsZSwgYSB3YXJuaW5nIGlzIGlzc3Vl
ZAorIyB0byBpbmZvcm0gdGhlIHVzZXIgdGhhdCBoZXIgbWFjcm9zIHRyaWdnZXIgdGhlIGJ1ZyBp
biBvbGRlciBhdXRvY29uZgorIyB2ZXJzaW9ucywgYW5kIHRoYXQgaGVyIG91dHB1dCBmaWxlIG5v
dyBjb250YWlucyByZWR1bmRhbnQgY29udGVudHMKKyMgKGFuZCBwb3NzaWJseSBuZXcgcHJvYmxl
bXMsIGlmIHRoZSByZXBlYXRlZCBtYWNybyB3YXMgbm90CisjIGlkZW1wb3RlbnQpLiAgTWVhbndo
aWxlLCBtYWNyb3MgZGVmaW5lZCBieSBtNF9kZWZ1bl9vbmNlIGluc3RlYWQgb2YKKyMgbTRfZGVm
dW4gYXJlIGlkZW1wb3RlbnQsIGF2b2lkaW5nIGFueSB3YXJuaW5nIG9yIGR1cGxpY2F0ZSBvdXRw
dXQuCisjCisjCisjIDIuIEtlZXBpbmcgdHJhY2sgb2YgdGhlIGV4cGFuc2lvbiBzdGFjaworIyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgV2hlbiBNNCBleHBh
bnNpb24gZ29lcyB3cm9uZyBpdCBpcyBvZnRlbiBleHRyZW1lbHkgaGFyZCB0byBmaW5kIHRoZQor
IyBwYXRoIGFtb25nc3QgbWFjcm9zIHRoYXQgZHJvdmUgdG8gdGhlIGZhaWx1cmUuICBXaGF0IGlz
IG5lZWRlZCBpcworIyB0aGUgc3RhY2sgb2YgbWFjcm8gYGNhbGxzJy4gT25lIGNvdWxkIGltYWdp
bmUgdGhhdCBHTlUgTTQgd291bGQKKyMgbWFpbnRhaW4gYSBzdGFjayBvZiBtYWNybyBleHBhbnNp
b25zLCB1bmZvcnR1bmF0ZWx5IGl0IGRvZXNuJ3QsIHNvCisjIHdlIGRvIGl0IGJ5IGhhbmQuICBU
aGlzIGlzIG9mIGNvdXJzZSBleHRyZW1lbHkgY29zdGx5LCBidXQgdGhlIGhlbHAKKyMgdGhpcyBz
dGFjayBwcm92aWRlcyBpcyB3b3J0aCBpdC4gIE5ldmVydGhlbGVzcyB0byBsaW1pdCB0aGUKKyMg
cGVyZm9ybWFuY2UgcGVuYWx0eSB0aGlzIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIG00X2RlZnVu
J2QgbWFjcm9zLAorIyBub3QgZm9yIGRlZmluZSdkIG1hY3Jvcy4KKyMKKyMgRWFjaCB0aW1lIHdl
IGVudGVyIGFuIG00X2RlZnVuJ2QgbWFjcm9zLCB3ZSBhZGQgYSBkZWZpbml0aW9uIGluCisjIF9t
NF9leHBhbnNpb25fc3RhY2ssIGFuZCB3aGVuIHdlIGV4aXQgdGhlIG1hY3JvLCB3ZSByZW1vdmUg
aXQgKHRoYW5rcworIyB0byBwdXNoZGVmL3BvcGRlZikuICBtNF9zdGFja19mb3JlYWNoIGlzIHVz
ZWQgdG8gcHJpbnQgdGhlIGV4cGFuc2lvbgorIyBzdGFjayBpbiB0aGUgcmFyZSBjYXNlcyB3aGVu
IGl0J3MgbmVlZGVkLgorIworIyBJbiBhZGRpdGlvbiwgd2Ugd2FudCB0byBkZXRlY3QgY2lyY3Vs
YXIgbTRfcmVxdWlyZSBkZXBlbmRlbmNpZXMuCisjIEVhY2ggdGltZSB3ZSBleHBhbmQgYSBtYWNy
byBGT08gd2UgZGVmaW5lIF9tNF9leHBhbmRpbmcoRk9PKTsgYW5kCisjIG00X3JlcXVpcmUoQkFS
KSBzaW1wbHkgY2hlY2tzIHdoZXRoZXIgX200X2V4cGFuZGluZyhCQVIpIGlzIGRlZmluZWQuCisK
KworIyBtNF9leHBhbnNpb25fc3RhY2sKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4cGFuZHMg
dG8gdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZXhwYW5zaW9uIHN0YWNrLiAgVGhlIGNhbGxl
cgorIyBtdXN0IHN1cHBseSBhIHRyYWlsaW5nIG5ld2xpbmUuICBUaGlzIG1hY3JvIGFsd2F5cyBw
cmludHMgYQorIyBsb2NhdGlvbjsgY2hlY2sgd2hldGhlciBfbTRfZXhwYW5zaW9uX3N0YWNrIGlz
IGRlZmluZWQgdG8gZmlsdGVyIG91dAorIyB0aGUgY2FzZSB3aGVuIG5vIGRlZnVuJ2QgbWFjcm8g
aXMgaW4gZm9yY2UuCittNF9kZWZpbmUoW200X2V4cGFuc2lvbl9zdGFja10sCitbbTRfc3RhY2tf
Zm9yZWFjaF9zZXBfbGlmbyhbXyQwXSwgW18kMF9lbnRyeShdLCBbKQorXSltNF9sb2NhdGlvbls6
IHRoZSB0b3AgbGV2ZWxdXSkKKworIyBfbTRfZXhwYW5zaW9uX3N0YWNrX2VudHJ5KE1BQ1JPKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtYXQgYW4gZW50cnkgZm9y
IE1BQ1JPIGZvdW5kIG9uIHRoZSBleHBhbnNpb24gc3RhY2suCittNF9kZWZpbmUoW19tNF9leHBh
bnNpb25fc3RhY2tfZW50cnldLAorW19tNF9kZWZuKFttNF9sb2NhdGlvbigkMSldKVs6ICQxIGlz
IGV4cGFuZGVkIGZyb20uLi5dXSkKKworIyBtNF9leHBhbnNpb25fc3RhY2tfcHVzaChNQUNSTykK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZvcm0gYW4gZW50cnkgb2YgdGhl
IGV4cGFuc2lvbiBzdGFjayBvbiBlbnRyeSB0byBNQUNSTyBhbmQgcHVzaCBpdC4KK200X2RlZmlu
ZShbbTRfZXhwYW5zaW9uX3N0YWNrX3B1c2hdLAorW200X3B1c2hkZWYoW19tNF9leHBhbnNpb25f
c3RhY2tdLCBbJDFdKV0pCisKKworIyBfbTRfZGl2ZXJ0KEdST1cpCisjIC0tLS0tLS0tLS0tLS0t
LS0KKyMgVGhpcyBkaXZlcnNpb24gaXMgdXNlZCBieSB0aGUgbTRfZGVmdW4vbTRfcmVxdWlyZSBt
YWNoaW5lcnkuICBJdCBpcworIyBpbXBvcnRhbnQgdG8ga2VlcCByb29tIGJlZm9yZSBHUk9XIGJl
Y2F1c2UgZm9yIGVhY2ggbmVzdGVkCisjIEFDX1JFUVVJUkUgd2UgdXNlIGFuIGFkZGl0aW9uYWwg
ZGl2ZXJzaW9uIChpLmUuLCB0d28gbTRfcmVxdWlyZSdzCisjIHdpbGwgdXNlIEdST1cgLSAyLiAg
TW9yZSB0aGFuIDMgbGV2ZWxzIGhhcyBuZXZlciBzZWVtZWQgdG8gYmUKKyMgbmVlZGVkLikKKyMK
KyMgLi4uCisjIC0gR1JPVyAtIDIKKyMgICBtNF9yZXF1aXJlJ2QgY29kZSwgMiBsZXZlbCBkZWVw
CisjIC0gR1JPVyAtIDEKKyMgICBtNF9yZXF1aXJlJ2QgY29kZSwgMSBsZXZlbCBkZWVwCisjIC0g
R1JPVworIyAgIG00X2RlZnVuJ2QgbWFjcm9zIGFyZSBlbGFib3JhdGVkIGhlcmUuCisKK200X2Rl
ZmluZShbX200X2RpdmVydChHUk9XKV0sICAgICAgIDEwMDAwKQorCisKKyMgX200X2RlZnVuX3By
byhNQUNSTy1OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoZSBwcm9sb2d1
ZSBmb3IgQXV0b2NvbmYgbWFjcm9zLgorIworIyBUaGlzIGlzIGNhbGxlZCBmcmVxdWVudGx5LCBz
byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIG1hY3JvIGludm9jYXRpb25zCisjIGJ5IGF2b2lkaW5n
IGRubCBhbmQgbTRfZGVmbiBvdmVyaGVhZC4KK200X2RlZmluZShbX200X2RlZnVuX3Byb10sCitb
bTRfaWZkZWYoW19tNF9leHBhbnNpb25fc3RhY2tdLCBbXSwgW19tNF9kZWZ1bl9wcm9fb3V0ZXIo
WyQxXSldKV1kbmwKK1ttNF9leHBhbnNpb25fc3RhY2tfcHVzaChbJDFdKW00X3B1c2hkZWYoW19t
NF9leHBhbmRpbmcoJDEpXSldKQorCittNF9kZWZpbmUoW19tNF9kZWZ1bl9wcm9fb3V0ZXJdLAor
W200X3NldF9kZWxldGUoW19tNF9wcm92aWRlXSldZG5sCitbbTRfcHVzaGRlZihbX200X2RpdmVy
dGluZyhbJDFdKV0pbTRfcHVzaGRlZihbX200X2RpdmVydGluZ10sIFskMV0pXWRubAorW200X3B1
c2hkZWYoW19tNF9kaXZlcnRfZHVtcF0sIG00X2Rpdm51bSltNF9kaXZlcnRfcHVzaChbR1JPV10p
XSkKKworIyBfbTRfZGVmdW5fZXBpKE1BQ1JPLU5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgVGhlIEVwaWxvZ3VlIGZvciBBdXRvY29uZiBtYWNyb3MuICBNQUNSTy1OQU1FIG9u
bHkgaGVscHMgdHJhY2luZworIyB0aGUgUFJPL0VQSSBwYWlycy4KKyMKKyMgVGhpcyBpcyBjYWxs
ZWQgZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBtYWNybyBpbnZvY2F0aW9u
cworIyBieSBhdm9pZGluZyBkbmwgYW5kIG00X3BvcGRlZiBvdmVyaGVhZC4KK200X2RlZmluZShb
X200X2RlZnVuX2VwaV0sCitbX200X3BvcGRlZihbX200X2V4cGFuZGluZygkMSldLCBbX200X2V4
cGFuc2lvbl9zdGFja10pXWRubAorW200X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW10s
IFtfbTRfZGVmdW5fZXBpX291dGVyKFskMV0pXSldZG5sCitbbTRfcHJvdmlkZShbJDFdKV0pCisK
K200X2RlZmluZShbX200X2RlZnVuX2VwaV9vdXRlcl0sCitbX200X3BvcGRlZihbX200X2RpdmVy
dF9kdW1wXSwgW19tNF9kaXZlcnRpbmcoWyQxXSldLCBbX200X2RpdmVydGluZ10pXWRubAorW200
X2RpdmVydF9wb3AoW0dST1ddKW00X3VuZGl2ZXJ0KFtHUk9XXSldKQorCisKKyMgX200X2RpdmVy
dF9kdW1wCisjIC0tLS0tLS0tLS0tLS0tLQorIyBJZiBibGFuaywgd2UgYXJlIG91dHNpZGUgb2Yg
YW55IGRlZnVuJ2QgbWFjcm8uICBPdGhlcndpc2UsIGV4cGFuZHMKKyMgdG8gdGhlIGRpdmVyc2lv
biBudW1iZXIgKG5vdCBuYW1lKSB3aGVyZSByZXF1aXJlJ2QgbWFjcm9zIHNob3VsZCBiZQorIyBt
b3ZlZCBvbmNlIGNvbXBsZXRlZC4KK200X2RlZmluZShbX200X2RpdmVydF9kdW1wXSkKKworCisj
IG00X2RpdmVydF9yZXF1aXJlKERJVkVSU0lPTiwgTkFNRS1UTy1DSEVDSywgW0JPRFktVE8tRVhQ
QU5EXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorIyBTYW1lIGFzIG00X3JlcXVpcmUsIGJ1dCBCT0RZLVRPLUVYUEFORCBn
b2VzIGludG8gdGhlIG5hbWVkIERJVkVSU0lPTjsKKyMgcmVxdWlyZW1lbnRzIHN0aWxsIGdvIGlu
IHRoZSBjdXJyZW50IGRpdmVyc2lvbiB0aG91Z2guCisjCittNF9kZWZpbmUoW200X2RpdmVydF9y
ZXF1aXJlXSwKK1ttNF9pZmRlZihbX200X2V4cGFuZGluZygkMildLAorICBbbTRfZmF0YWwoWyQw
OiBjaXJjdWxhciBkZXBlbmRlbmN5IG9mICQyXSldKV1kbmwKK1ttNF9pZihfbTRfZGl2ZXJ0X2R1
bXAsIFtdLAorICBbbTRfZmF0YWwoWyQwKCQyKTogY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBh
biBtNF9kZWZ1bidkIG1hY3JvXSldKV1kbmwKK1ttNF9wcm92aWRlX2lmKFskMl0sIFtdLAorICBb
X200X3JlcXVpcmVfY2FsbChbJDJdLCBbJDNdLCBfbTRfZGl2ZXJ0KFskMV0sIFstXSkpXSldKQor
CisKKyMgbTRfZGVmdW4oTkFNRSwgRVhQQU5TSU9OLCBbTUFDUk8gPSBtNF9kZWZpbmVdKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBh
IG1hY3JvIE5BTUUgd2hpY2ggYXV0b21hdGljYWxseSBwcm92aWRlcyBpdHNlbGYuICBBZGQKKyMg
bWFjaGluZXJ5IHNvIHRoZSBtYWNybyBhdXRvbWF0aWNhbGx5IHN3aXRjaGVzIGV4cGFuc2lvbiB0
byB0aGUKKyMgZGl2ZXJzaW9uIHN0YWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHVzaW5nIGl0LCBw
cmlvciB0byBFWFBBTlNJT04uCisjIEluIHRoaXMgY2FzZSwgb25jZSBmaW5pc2hlZCwgaXQgd2ls
bCBicmluZyBiYWNrIGFsbCB0aGUgY29kZQorIyBhY2N1bXVsYXRlZCBpbiB0aGUgZGl2ZXJzaW9u
IHN0YWNrLiAgVGhpcywgY29tYmluZWQgd2l0aCBtNF9yZXF1aXJlLAorIyBhY2hpZXZlcyB0aGUg
dG9wb2xvZ2ljYWwgb3JkZXJpbmcgb2YgbWFjcm9zLiAgV2UgZG9uJ3QgdXNlIHRoaXMKKyMgbWFj
cm8gdG8gZGVmaW5lIHNvbWUgZnJlcXVlbnRseSBjYWxsZWQgbWFjcm9zIHRoYXQgYXJlIG5vdCBp
bnZvbHZlZAorIyBpbiBvcmRlcmluZyBjb25zdHJhaW50cywgdG8gc2F2ZSBtNCBwcm9jZXNzaW5n
LgorIworIyBNQUNSTyBpcyBhbiB1bmRvY3VtZW50ZWQgYXJndW1lbnQ7IHdoZW4gc2V0IHRvIG00
X3B1c2hkZWYsIGFuZCBOQU1FCisjIGlzIGFscmVhZHkgZGVmaW5lZCwgdGhlIG5ldyBkZWZpbml0
aW9uIGlzIGFkZGVkIHRvIHRoZSBwdXNoZGVmCisjIHN0YWNrLCByYXRoZXIgdGhhbiBvdmVyd3Jp
dGluZyB0aGUgY3VycmVudCBkZWZpbml0aW9uLiAgSXQgY2FuIHRodXMKKyMgYmUgdXNlZCB0byB3
cml0ZSBzZWxmLW1vZGlmeWluZyBtYWNyb3MsIHdoaWNoIHBvcCB0aGVtc2VsdmVzIHRvIGEKKyMg
cHJldmlvdXNseSBtNF9kZWZpbmUnZCBkZWZpbml0aW9uIHNvIHRoYXQgc3Vic2VxdWVudCB1c2Ug
b2YgdGhlCisjIG1hY3JvIGlzIGZhc3Rlci4KK200X2RlZmluZShbbTRfZGVmdW5dLAorW200X2Rl
ZmluZShbbTRfbG9jYXRpb24oJDEpXSwgbTRfbG9jYXRpb24pXWRubAorW200X2RlZmF1bHQoWyQz
XSwgW200X2RlZmluZV0pKFskMV0sCisgIFtfbTRfZGVmdW5fcHJvKF1tNF9kcXVvdGUoJFswXSlb
KSQyW11fbTRfZGVmdW5fZXBpKF1tNF9kcXVvdGUoJFswXSlbKV0pXSkKKworCisjIG00X2RlZnVu
X2luaXQoTkFNRSwgSU5JVCwgQ09NTU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgTGlrZSBtNF9kZWZ1biwgYnV0IHNwbGl0IEVYUEFOU0lPTiBpbnRvIHR3byBwb3J0
aW9uczogSU5JVCB3aGljaCBpcworIyBkb25lIG9ubHkgdGhlIGZpcnN0IHRpbWUgTkFNRSBpcyBp
bnZva2VkLCBhbmQgQ09NTU9OIHdoaWNoIGlzCisjIGV4cGFuZGVkIGV2ZXJ5IHRpbWUuCisjCisj
IEZvciBub3csIHRoZSBDT01NT04gZGVmaW5pdGlvbiBpcyBhbHdheXMgbTRfZGVmaW5lJ2QsIGdp
dmluZyBhbiBldmVuCisjIGxpZ2h0ZXItd2VpZ2h0IGRlZmluaXRpb24uICBtNF9kZWZ1biBhbGxv
d3Mgc2VsZi1wcm92aWRpbmcsIGJ1dCBvbmNlCisjIGEgbWFjcm8gaXMgcHJvdmlkZWQsIG00X3Jl
cXVpcmUgbm8gbG9uZ2VyIGNhcmVzIGlmIGl0IGlzIG00X2RlZmluZSdkCisjIG9yIG00X2RlZnVu
J2QuICBtNF9kZWZ1biBhbHNvIHByb3ZpZGVzIGxvY2F0aW9uIHRyYWNraW5nIHRvIGlkZW50aWZ5
CisjIGRlcGVuZGVuY3kgYnVncywgYnV0IG9uY2UgdGhlIElOSVQgaGFzIGJlZW4gZXhwYW5kZWQs
IHdlIGtub3cgdGhlcmUKKyMgYXJlIG5vIGRlcGVuZGVuY3kgYnVncy4gIEhvd2V2ZXIsIGlmIGEg
ZnV0dXJlIHVzZSBuZWVkcyBDT01NT04gdG8gYmUKKyMgbTRfZGVmdW4nZCwgd2UgY2FuIGFkZCBh
IHBhcmFtZXRlciwgc2ltaWxhciB0byB0aGUgdGhpcmQgcGFyYW1ldGVyCisjIHRvIG00X2RlZnVu
LgorbTRfZGVmaW5lKFttNF9kZWZ1bl9pbml0XSwKK1ttNF9kZWZpbmUoWyQxXSwgWyQzW11dKW00
X2RlZnVuKFskMV0sCisgICBbJDJbXV9tNF9wb3BkZWYoXW00X2RxdW90ZSgkWzBdKVspbTRfaW5k
aXIoXW00X2RxdW90ZSgkWzBdKWRubAorW200X2lmKF1tNF9kcXVvdGUoJFsjXSlbLCBbMF0sIFtd
LCBdbTRfZHF1b3RlKFssJF1AKVspKV0sIFttNF9wdXNoZGVmXSldKQorCisKKyMgbTRfZGVmdW5f
b25jZShOQU1FLCBFWFBBTlNJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBMaWtlIG00X2RlZnVuLCBidXQgZ3VhcmFudGVlIHRoYXQgRVhQQU5TSU9OIG9ubHkgaGFwcGVu
cyBvbmNlCisjICh0aGVyZWFmdGVyLCB1c2luZyBOQU1FIGlzIGEgbm8tb3ApLgorIworIyBJZiBf
bTRfZGl2ZXJ0X2R1bXAgaXMgZW1wdHksIHdlIGFyZSBjYWxsZWQgYXQgdGhlIHRvcCBsZXZlbDsK
KyMgb3RoZXJ3aXNlLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IHdlIGFyZSByZXF1aXJlZCBpbiBmcm9u
dCBvZiB0aGUKKyMgY3VycmVudCBkZWZ1bidkIG1hY3JvLiAgVXNlIGEgaGVscGVyIG1hY3JvIHNv
IHRoYXQgRVhQQU5TSU9OIG5lZWQKKyMgb25seSBvY2N1ciBvbmNlIGluIHRoZSBkZWZpbml0aW9u
IG9mIE5BTUUsIHNpbmNlIGl0IG1pZ2h0IGJlIGxhcmdlLgorbTRfZGVmaW5lKFttNF9kZWZ1bl9v
bmNlXSwKK1ttNF9kZWZpbmUoW200X2xvY2F0aW9uKCQxKV0sIG00X2xvY2F0aW9uKV1kbmwKK1tt
NF9kZWZpbmUoWyQxXSwgW19tNF9kZWZ1bl9vbmNlKFskMV0sIFskMl0sIG00X2lmKF9tNF9kaXZl
cnRfZHVtcCwgW10sCisgIFtbX200X2RlZnVuX3BybyhbJDFdKW00X3VucXVvdGUoXSwgWylfbTRf
ZGVmdW5fZXBpKFskMV0pXV0sCittNF9pZmRlZihbX200X2RpdmVydGluZyhbJDFdKV0sIFstXSks
IFstXSwgW1ttNF91bnF1b3RlKF0sIFspXV0sCisgIFtbX200X3JlcXVpcmVfY2FsbChbJDFdLF0s
IFssIF9tNF9kaXZlcnRfZHVtcCldXSkpXSldKQorCittNF9kZWZpbmUoW19tNF9kZWZ1bl9vbmNl
XSwKK1ttNF9wdXNoZGVmKFskMV0pJDNbJDJbXW00X3Byb3ZpZGUoWyQxXSldJDRdKQorCisKKyMg
bTRfcGF0dGVybl9mb3JiaWQoRVJFLCBbV0hZXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgRGVjbGFyZSB0aGF0IG5vIHRva2VuIG1hdGNoaW5nIHRoZSBmb3JiaWRkZW4gcGVy
bCBleHRlbmRlZCByZWd1bGFyCisjIGV4cHJlc3Npb24gRVJFIHNob3VsZCBiZSBzZWVuIGluIHRo
ZSBvdXRwdXQgdW5sZXNzLi4uCittNF9kZWZpbmUoW200X3BhdHRlcm5fZm9yYmlkXSwgW10pCisK
KworIyBtNF9wYXR0ZXJuX2FsbG93KEVSRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC4u
LiB0aGF0IHRva2VuIGFsc28gbWF0Y2hlcyB0aGUgYWxsb3dlZCBleHRlbmRlZCByZWd1bGFyIGV4
cHJlc3Npb24gRVJFLgorIyBCb3RoIHVzZWQgdmlhIHRyYWNlcywgYnkgYXV0b200dGUgcG9zdC1w
cm9jZXNzaW5nLgorbTRfZGVmaW5lKFttNF9wYXR0ZXJuX2FsbG93XSwgW10pCisKKworIyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyAxMS4gRGVwZW5kZW5jaWVzIGJl
dHdlZW4gbWFjcm9zLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj
IworCisKKyMgbTRfYmVmb3JlKFRISVMtTUFDUk8tTkFNRSwgQ0FMTEVELU1BQ1JPLU5BTUUpCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJc3N1ZSBh
IHdhcm5pbmcgaWYgQ0FMTEVELU1BQ1JPLU5BTUUgd2FzIGNhbGxlZCBiZWZvcmUgVEhJUy1NQUNS
Ty1OQU1FLgorbTRfZGVmaW5lKFttNF9iZWZvcmVdLAorW200X3Byb3ZpZGVfaWYoWyQyXSwKKwkg
ICAgICAgW200X3dhcm4oW3N5bnRheF0sIFskMiB3YXMgY2FsbGVkIGJlZm9yZSAkMV0pXSldKQor
CisKKyMgbTRfcmVxdWlyZShOQU1FLVRPLUNIRUNLLCBbQk9EWS1UTy1FWFBBTkQgPSBOQU1FLVRP
LUNIRUNLXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgSWYgTkFNRS1UTy1DSEVDSyBoYXMgbmV2ZXIgYmVlbiBleHBhbmRl
ZCAoYWN0dWFsbHksIGlmIGl0IGlzIG5vdAorIyBtNF9wcm92aWRlJ2QpLCBleHBhbmQgQk9EWS1U
Ty1FWFBBTkQgKmJlZm9yZSogdGhlIGN1cnJlbnQgbWFjcm8KKyMgZXhwYW5zaW9uOyBmb2xsb3cg
dGhlIGV4cGFuc2lvbiB3aXRoIGEgbmV3bGluZS4gIE9uY2UgZXhwYW5kZWQsIGVtaXQKKyMgaXQg
aW4gX200X2RpdmVydF9kdW1wLiAgS2VlcCB0cmFjayBvZiB0aGUgbTRfcmVxdWlyZSBjaGFpbiBp
bgorIyBfbTRfZXhwYW5zaW9uX3N0YWNrLgorIworIyBUaGUgbm9ybWFsIGNhc2VzIGFyZToKKyMK
KyMgLSBOQU1FLVRPLUNIRUNLID09IEJPRFktVE8tRVhQQU5ECisjICAgV2hpY2ggeW91IGNhbiB1
c2UgZm9yIHJlZ3VsYXIgbWFjcm9zIHdpdGggb3Igd2l0aG91dCBhcmd1bWVudHMsIGUuZy4sCisj
ICAgICBtNF9yZXF1aXJlKFtBQ19QUk9HX0NDXSwgW0FDX1BST0dfQ0NdKQorIyAgICAgbTRfcmVx
dWlyZShbQUNfQ0hFQ0tfSEVBREVSUyh0aHJlYWRzLmgpXSwgW0FDX0NIRUNLX0hFQURFUlModGhy
ZWFkcy5oKV0pCisjICAgd2hpY2ggaXMganVzdCB0aGUgc2FtZSBhcworIyAgICAgbTRfcmVxdWly
ZShbQUNfUFJPR19DQ10pCisjICAgICBtNF9yZXF1aXJlKFtBQ19DSEVDS19IRUFERVJTKHRocmVh
ZHMuaCldKQorIworIyAtIEJPRFktVE8tRVhQQU5EID09IG00X2luZGlyKFtOQU1FLVRPLUNIRUNL
XSkKKyMgICBJbiB0aGUgY2FzZSBvZiBtYWNyb3Mgd2l0aCBpcnJlZ3VsYXIgbmFtZXMuICBGb3Ig
aW5zdGFuY2U6CisjICAgICBtNF9yZXF1aXJlKFtBQ19MQU5HX0NPTVBJTEVSKEMpXSwgW2luZGly
KFtBQ19MQU5HX0NPTVBJTEVSKEMpXSldKQorIyAgIHdoaWNoIG1lYW5zIGBpZiB0aGUgbWFjcm8g
bmFtZWQgYEFDX0xBTkdfQ09NUElMRVIoQyknICh0aGUgcGFyZW5zIGFyZQorIyAgIHBhcnQgb2Yg
dGhlIG5hbWUsIGl0IGlzIG5vdCBhbiBhcmd1bWVudCkgaGFzIG5vdCBiZWVuIHJ1biwgdGhlbgor
IyAgIGNhbGwgaXQuJworIyAgIEhhZCB5b3UgdXNlZAorIyAgICAgbTRfcmVxdWlyZShbQUNfTEFO
R19DT01QSUxFUihDKV0sIFtBQ19MQU5HX0NPTVBJTEVSKEMpXSkKKyMgICB0aGVuIG00X3JlcXVp
cmUgd291bGQgaGF2ZSB0cmllZCB0byBleHBhbmQgYEFDX0xBTkdfQ09NUElMRVIoQyknLCBpLmUu
LAorIyAgIGNhbGwgdGhlIG1hY3JvIGBBQ19MQU5HX0NPTVBJTEVSJyB3aXRoIGBDJyBhcyBhcmd1
bWVudC4KKyMKKyMgICBZb3UgY291bGQgYXJndWUgdGhhdCBgQUNfTEFOR19DT01QSUxFUicsIHdo
ZW4gaXQgcmVjZWl2ZXMgYW4gYXJndW1lbnQKKyMgICBzdWNoIGFzIGBDJyBzaG91bGQgZGlzcGF0
Y2ggdGhlIGNhbGwgdG8gYEFDX0xBTkdfQ09NUElMRVIoQyknLiAgQnV0IHRoaXMKKyMgICBgZXh0
ZW5zaW9uJyBwcmV2ZW50cyBgQUNfTEFOR19DT01QSUxFUicgZnJvbSBoYXZpbmcgYWN0dWFsIGFy
Z3VtZW50cyB0aGF0CisjICAgaXQgcGFzc2VzIHRvIGBBQ19MQU5HX0NPTVBJTEVSKEMpJy4KKyMK
KyMgVGhpcyBpcyBjYWxsZWQgZnJlcXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBt
YWNybyBpbnZvY2F0aW9ucworIyBieSBhdm9pZGluZyBkbmwgYW5kIG90aGVyIG92ZXJoZWFkIG9u
IHRoZSBjb21tb24gcGF0aC4KK200X2RlZmluZShbbTRfcmVxdWlyZV0sCitbbTRfaWZkZWYoW19t
NF9leHBhbmRpbmcoJDEpXSwKKyAgW200X2ZhdGFsKFskMDogY2lyY3VsYXIgZGVwZW5kZW5jeSBv
ZiAkMV0pXSldZG5sCitbbTRfaWYoX200X2RpdmVydF9kdW1wLCBbXSwKKyAgW200X2ZhdGFsKFsk
MCgkMSk6IGNhbm5vdCBiZSB1c2VkIG91dHNpZGUgb2YgYW4gXWRubAorbTRfaWYoWyQwXSwgW200
X3JlcXVpcmVdLCBbW200X2RlZnVuXV0sIFtbQUNfREVGVU5dXSlbJ2QgbWFjcm9dKV0pXWRubAor
W200X3Byb3ZpZGVfaWYoWyQxXSwgW200X3NldF9jb250YWlucyhbX200X3Byb3ZpZGVdLCBbJDFd
LAorICAgIFtfbTRfcmVxdWlyZV9jaGVjayhbJDFdLCBfbTRfZGVmbihbbTRfcHJvdmlkZSgkMSld
KSwgWyQwXSldLCBbbTRfaWdub3JlXSldLAorICBbX200X3JlcXVpcmVfY2FsbF0pKFskMV0sIFsk
Ml0sIF9tNF9kaXZlcnRfZHVtcCldKQorCisKKyMgX200X3JlcXVpcmVfY2FsbChOQU1FLVRPLUNI
RUNLLCBbQk9EWS1UTy1FWFBBTkQgPSBOQU1FLVRPLUNIRUNLXSwKKyMgICAgICAgICAgICAgICAg
ICBESVZFUlNJT04tTlVNQkVSKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBtNF9yZXF1aXJlIGRlY2lkZXMg
dG8gZXhwYW5kIHRoZSBib2R5LCBpdCBjYWxscyB0aGlzIG1hY3JvLiAgVGhlCisjIGV4cGFuc2lv
biBpcyBwbGFjZWQgaW4gRElWRVJTSU9OLU5VTUJFUi4KKyMKKyMgVGhpcyBpcyBjYWxsZWQgZnJl
cXVlbnRseSwgc28gbWluaW1pemUgdGhlIG51bWJlciBvZiBtYWNybyBpbnZvY2F0aW9ucworIyBi
eSBhdm9pZGluZyBkbmwgYW5kIG90aGVyIG92ZXJoZWFkIG9uIHRoZSBjb21tb24gcGF0aC4KKyMg
VGhlIHVzZSBvZiBhIHdpdG5lc3MgbWFjcm8gcHJvdGVjdGluZyB0aGUgd2FybmluZyBhbGxvd3Mg
YWNsb2NhbAorIyB0byBzaWxlbmNlIGFueSB3YXJuaW5ncyB3aGVuIHByb2JpbmcgZm9yIHdoYXQg
bWFjcm9zIGFyZSByZXF1aXJlZAorIyBhbmQgbXVzdCB0aGVyZWZvcmUgYmUgbG9jYXRlZCwgd2hl
biB1c2luZyB0aGUgQXV0b2NvbmYtd2l0aG91dC1hY2xvY2FsLW00CisjIGF1dG9tNHRlIGxhbmd1
YWdlLiAgRm9yIG1vcmUgYmFja2dyb3VuZCwgc2VlOgorIyBodHRwczovL2xpc3RzLmdudS5vcmcv
YXJjaGl2ZS9odG1sL2F1dG9tYWtlLXBhdGNoZXMvMjAxMi0xMS9tc2cwMDAzNS5odG1sCittNF9k
ZWZpbmUoW19tNF9yZXF1aXJlX2NhbGxdLAorW200X3B1c2hkZWYoW19tNF9kaXZlcnRfZ3Jvd10s
IG00X2RlY3IoX200X2RpdmVydF9ncm93KSldZG5sCitbbTRfcHVzaGRlZihbX200X2RpdmVydGlu
ZyhbJDFdKV0pbTRfcHVzaGRlZihbX200X2RpdmVydGluZ10sIFskMV0pXWRubAorW200X2RpdmVy
dF9wdXNoKF9tNF9kaXZlcnRfZ3JvdywgWy1dKV1kbmwKK1ttNF9pZihbJDJdLCBbXSwgWyQxXSwg
WyQyXSkKK200X3Byb3ZpZGVfaWYoWyQxXSwgW200X3NldF9yZW1vdmUoW19tNF9wcm92aWRlXSwg
WyQxXSldLAorICBbbTRfaWZuZGVmKFttNF9yZXF1aXJlX3NpbGVudF9wcm9iZV0sCisgICAgW200
X3dhcm4oW3N5bnRheF0sIFskMSBpcyBtNF9yZXF1aXJlJ2QgYnV0IG5vdCBtNF9kZWZ1bidkXSld
KV0pXWRubAorW19tNF9kaXZlcnRfcmF3KCQzKV9tNF91bmRpdmVydChfbTRfZGl2ZXJ0X2dyb3cp
XWRubAorW200X2RpdmVydF9wb3AoX200X2RpdmVydF9ncm93KV9tNF9wb3BkZWYoW19tNF9kaXZl
cnRfZ3Jvd10sCitbX200X2RpdmVydGluZyhbJDFdKV0sIFtfbTRfZGl2ZXJ0aW5nXSldKQorCisK
KyMgX200X3JlcXVpcmVfY2hlY2soTkFNRS1UTy1DSEVDSywgT1dORVIsIENBTExFUikKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTkFNRS1UTy1D
SEVDSyBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIHByZXZpb3VzbHkgZXhwYW5kZWQgaW4gdGhlCisj
IGRpdmVyc2lvbiBvd25lZCBieSBPV05FUi4gIElmIHRoaXMgaXMgYSBwcm9ibGVtLCB3YXJuIG9u
IGJlaGFsZiBvZgorIyBDQUxMRVIgYW5kIHJldHVybiBfbTRfcmVxdWlyZV9jYWxsOyBvdGhlcndp
c2UgcmV0dXJuIG00X2lnbm9yZS4KK200X2RlZmluZShbX200X3JlcXVpcmVfY2hlY2tdLAorW200
X2lmKF9tNF9kZWZuKFtfbTRfZGl2ZXJ0aW5nXSksIFskMl0sIFttNF9pZ25vcmVdLAorICAgICAg
IG00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMl0pXSwgWy1dKSwgWy1dLCBbbTRfd2Fybihbc3lu
dGF4XSwKKyAgIFskMzogYCQxJyB3YXMgZXhwYW5kZWQgYmVmb3JlIGl0IHdhcyByZXF1aXJlZAor
aHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi9tYW51YWwvYXV0b2NvbmYuaHRt
bCNFeHBhbmRlZC1CZWZvcmUtUmVxdWlyZWRdKV9tNF9yZXF1aXJlX2NhbGxdLAorICAgICAgIFtt
NF9pZ25vcmVdKV0pCisKKworIyBfbTRfZGl2ZXJ0X2dyb3cKKyMgLS0tLS0tLS0tLS0tLS0tCisj
IFRoZSBjb3VudGVyIGZvciBfbTRfcmVxdWlyZV9jYWxsLgorbTRfZGVmaW5lKFtfbTRfZGl2ZXJ0
X2dyb3ddLCBfbTRfZGl2ZXJ0KFtHUk9XXSkpCisKKworIyBtNF9leHBhbmRfb25jZShURVhULCBb
V0lUTkVTUyA9IFRFWFRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBJZiBURVhUIGhhcyBuZXZlciBiZWVuIGV4cGFuZGVkLCBleHBhbmQgaXQgKmhlcmUqLiAg
VXNlIFdJVE5FU1MgYXMKKyMgYXMgYSBtZW1vcnkgdGhhdCBURVhUIGhhcyBhbHJlYWR5IGJlZW4g
ZXhwYW5kZWQuCittNF9kZWZpbmUoW200X2V4cGFuZF9vbmNlXSwKK1ttNF9wcm92aWRlX2lmKG00
X2RlZmF1bHRfcXVvdGVkKFskMl0sIFskMV0pLAorCSAgICAgICBbXSwKKwkgICAgICAgW200X3By
b3ZpZGUobTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWyQxXSkpW10kMV0pXSkKKworCisjIG00X3By
b3ZpZGUoTUFDUk8tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtt
NF9wcm92aWRlXSwKK1ttNF9pZmRlZihbbTRfcHJvdmlkZSgkMSldLCBbXSwKK1ttNF9zZXRfYWRk
KFtfbTRfcHJvdmlkZV0sIFskMV0sIFttNF9kZWZpbmUoW200X3Byb3ZpZGUoJDEpXSwKKyAgbTRf
aWZkZWYoW19tNF9kaXZlcnRpbmddLCBbX200X2RlZm4oW19tNF9kaXZlcnRpbmddKV0pKV0pXSld
KQorCisKKyMgbTRfcHJvdmlkZV9pZihNQUNSTy1OQU1FLCBJRi1QUk9WSURFRCwgSUYtTk9ULVBS
T1ZJREVEKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIElmIE1BQ1JPLU5BTUUgaXMgcHJvdmlkZWQgZG8gSUYtUFJPVklERUQsIGVs
c2UgSUYtTk9ULVBST1ZJREVELgorIyBUaGUgcHVycG9zZSBvZiB0aGlzIG1hY3JvIGlzIHRvIHBy
b3ZpZGUgdGhlIHVzZXIgd2l0aCBhIG1lYW5zIHRvCisjIGNoZWNrIG1hY3JvcyB3aGljaCBhcmUg
cHJvdmlkZWQgd2l0aG91dCBsZXR0aW5nIGhlciBrbm93IGhvdyB0aGUKKyMgaW5mb3JtYXRpb24g
aXMgY29kZWQuCittNF9kZWZpbmUoW200X3Byb3ZpZGVfaWZdLAorW200X2lmZGVmKFttNF9wcm92
aWRlKCQxKV0sCisJICBbJDJdLCBbJDNdKV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICMjCisjIyAxMi4gVGV4dCBwcm9jZXNzaW5nLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAjIworCisKKyMgbTRfY3JfbGV0dGVycworIyBtNF9jcl9MRVRURVJTCisjIG00X2NyX0xldHRl
cnMKKyMgLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFttNF9jcl9sZXR0ZXJzXSwgW2FiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6XSkKK200X2RlZmluZShbbTRfY3JfTEVUVEVSU10sIFtBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWl0pCittNF9kZWZpbmUoW200X2NyX0xldHRlcnNdLAorbTRfZGVm
bihbbTRfY3JfbGV0dGVyc10pZG5sCittNF9kZWZuKFttNF9jcl9MRVRURVJTXSlkbmwKKykKKwor
CisjIG00X2NyX2RpZ2l0cworIyAtLS0tLS0tLS0tLS0KK200X2RlZmluZShbbTRfY3JfZGlnaXRz
XSwgWzAxMjM0NTY3ODldKQorCisKKyMgbTRfY3JfYWxudW0KKyMgLS0tLS0tLS0tLS0KK200X2Rl
ZmluZShbbTRfY3JfYWxudW1dLAorbTRfZGVmbihbbTRfY3JfTGV0dGVyc10pZG5sCittNF9kZWZu
KFttNF9jcl9kaWdpdHNdKWRubAorKQorCisKKyMgbTRfY3Jfc3ltYm9sczEKKyMgbTRfY3Jfc3lt
Ym9sczIKKyMgLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbTRfY3Jfc3ltYm9sczFdLAorbTRf
ZGVmbihbbTRfY3JfTGV0dGVyc10pZG5sCitfKQorCittNF9kZWZpbmUoW200X2NyX3N5bWJvbHMy
XSwKK200X2RlZm4oW200X2NyX3N5bWJvbHMxXSlkbmwKK200X2RlZm4oW200X2NyX2RpZ2l0c10p
ZG5sCispCisKKyMgbTRfY3JfYWxsCisjIC0tLS0tLS0tLQorIyBUaGUgY2hhcmFjdGVyIHJhbmdl
IHJlcHJlc2VudGluZyBldmVyeXRoaW5nLCB3aXRoIGAtJyBhcyB0aGUgbGFzdAorIyBjaGFyYWN0
ZXIsIHNpbmNlIGl0IGlzIHNwZWNpYWwgdG8gbTRfdHJhbnNsaXQuICBVc2Ugd2l0aCBjYXJlLCBi
ZWNhdXNlCisjIGl0IGNvbnRhaW5zIGNoYXJhY3RlcnMgc3BlY2lhbCB0byBNNCAoZm9ydHVuYXRl
bHksIGJvdGggQVNDSUkgYW5kIEVCQ0RJQworIyBoYXZlIFtdIGluIG9yZGVyLCBzbyBtNF9kZWZu
KFttNF9jcl9hbGxdKSByZW1haW5zIGEgdmFsaWQgc3RyaW5nKS4gIEl0CisjIGFsc28gY29udGFp
bnMgY2hhcmFjdGVycyBzcGVjaWFsIHRvIHRlcm1pbmFscywgc28gaXQgc2hvdWxkIG5ldmVyIGJl
CisjIGRpc3BsYXllZCBpbiBhbiBlcnJvciBtZXNzYWdlLiAgQWxzbywgYXR0ZW1wdHMgdG8gbWFw
IFsgYW5kIF0gdG8gb3RoZXIKKyMgY2hhcmFjdGVycyB2aWEgbTRfdHJhbnNsaXQgbXVzdCBkZWFs
IHdpdGggdGhlIGZhY3QgdGhhdCBtNF90cmFuc2xpdCBkb2VzCisjIG5vdCBhZGQgcXVvdGVzIHRv
IHRoZSBvdXRwdXQuCisjCisjIEluIEVCQ0RJQywgJCBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBi
eSAqLCB3aGljaCBsZWFkcyB0byBwcm9ibGVtcworIyBpZiBtNF9jcl9hbGwgaXMgaW5saW5lZCBp
bnRvIGEgbWFjcm8gZGVmaW5pdGlvbjsgc28gc3dhcCB0aGVtLgorIworIyBJdCBpcyBtYWlubHkg
dXNlZnVsIGluIGdlbmVyYXRpbmcgaW52ZXJ0ZWQgY2hhcmFjdGVyIHJhbmdlIG1hcHMsIGZvciB1
c2UKKyMgaW4gcGxhY2VzIHdoZXJlIG00X3RyYW5zbGl0IGlzIGZhc3RlciB0aGFuIGFuIGVxdWl2
YWxlbnQgbTRfYnBhdHN1YnN0OworIyB0aGUgcmVnZXggYFteYS16XScgaXMgZXF1aXZhbGVudCB0
bzoKKyMgIG00X3RyYW5zbGl0KG00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9hbGxdKSksIFthLXpd
KQorbTRfZGVmaW5lKFttNF9jcl9hbGxdLAorbTRfdHJhbnNsaXQobTRfZHF1b3RlKG00X2Zvcm1h
dChtNF9kcXVvdGUobTRfZm9yKAorICAsMSwyNTUsLFtbJWNdXSkpbTRfZm9yKFtpXSwxLDI1NSws
WyxpXSkpKSwgWyQqLV0sIFsqJF0pLSkKKworCisjIF9tNF9kZWZpbmVfY3Jfbm90KENBVEVHT1JZ
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIG00X2NyX25vdF9DQVRF
R09SWSBhcyB0aGUgaW52ZXJzZSBvZiBtNF9jcl9DQVRFR09SWS4KK200X2RlZmluZShbX200X2Rl
ZmluZV9jcl9ub3RdLAorW200X2RlZmluZShbbTRfY3Jfbm90XyQxXSwKKwkgICBtNF90cmFuc2xp
dChtNF9kcXVvdGUobTRfZGVmbihbbTRfY3JfYWxsXSkpLAorCQkgICAgICAgbTRfZGVmbihbbTRf
Y3JfJDFdKSkpXSkKKworCisjIG00X2NyX25vdF9sZXR0ZXJzCisjIG00X2NyX25vdF9MRVRURVJT
CisjIG00X2NyX25vdF9MZXR0ZXJzCisjIG00X2NyX25vdF9kaWdpdHMKKyMgbTRfY3Jfbm90X2Fs
bnVtCisjIG00X2NyX25vdF9zeW1ib2xzMQorIyBtNF9jcl9ub3Rfc3ltYm9sczIKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tCisjIEludmVyc2UgY2hhcmFjdGVyIHNldHMKK19tNF9kZWZpbmVfY3Jfbm90
KFtsZXR0ZXJzXSkKK19tNF9kZWZpbmVfY3Jfbm90KFtMRVRURVJTXSkKK19tNF9kZWZpbmVfY3Jf
bm90KFtMZXR0ZXJzXSkKK19tNF9kZWZpbmVfY3Jfbm90KFtkaWdpdHNdKQorX200X2RlZmluZV9j
cl9ub3QoW2FsbnVtXSkKK19tNF9kZWZpbmVfY3Jfbm90KFtzeW1ib2xzMV0pCitfbTRfZGVmaW5l
X2NyX25vdChbc3ltYm9sczJdKQorCisKKyMgbTRfbmV3bGluZShbU1RSSU5HXSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kcyB0byBhIG5ld2xpbmUsIHBvc3NpYmx5IGZvbGxvd2Vk
IGJ5IFNUUklORy4gIEV4aXN0cyBtb3N0bHkgZm9yCisjIGZvcm1hdHRpbmcgcmVhc29ucy4KK200
X2RlZmluZShbbTRfbmV3bGluZV0sIFsKKyQxXSkKKworCisjIG00X3JlX2VzY2FwZShTVFJJTkcp
CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVzY2FwZSBSRSBhY3RpdmUgY2hhcmFjdGVycyBp
biBTVFJJTkcuCittNF9kZWZpbmUoW200X3JlX2VzY2FwZV0sCitbbTRfYnBhdHN1YnN0KFskMV0s
CisJICAgICAgW1tdWyorLj9cXiRdXSwgW1xcXCZdKV0pCisKKworIyBtNF9yZV9zdHJpbmcKKyMg
LS0tLS0tLS0tLS0tCisjIFJlZ2V4cCBmb3IgYFthLXpBLVpfMC05XSonCisjIG00X2RxdW90ZSBw
cm92aWRlcyBsaXRlcmFsIFtdIGZvciB0aGUgY2hhcmFjdGVyIGNsYXNzLgorbTRfZGVmaW5lKFtt
NF9yZV9zdHJpbmddLAorbTRfZHF1b3RlKG00X2RlZm4oW200X2NyX3N5bWJvbHMyXSkpZG5sCitb
Kl1kbmwKKykKKworCisjIG00X3JlX3dvcmQKKyMgLS0tLS0tLS0tLQorIyBSZWdleHAgZm9yIGBb
YS16QS1aX11bYS16QS1aXzAtOV0qJworbTRfZGVmaW5lKFttNF9yZV93b3JkXSwKK200X2RxdW90
ZShtNF9kZWZuKFttNF9jcl9zeW1ib2xzMV0pKWRubAorbTRfZGVmbihbbTRfcmVfc3RyaW5nXSlk
bmwKKykKKworCisjIG00X3RvbG93ZXIoU1RSSU5HKQorIyBtNF90b3VwcGVyKFNUUklORykKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFRoZXNlIG1hY3JvcyBjb252ZXJ0IFNUUklORyB0byBsb3dl
cmNhc2Ugb3IgdXBwZXJjYXNlLgorIworIyBSYXRoZXIgdGhhbiBleHBhbmQgdGhlIG00X2RlZm4g
ZWFjaCB0aW1lLCB3ZSBpbmxpbmUgdGhlbSB1cCBmcm9udC4KK200X2RlZmluZShbbTRfdG9sb3dl
cl0sCitbbTRfdHJhbnNsaXQoW1skMV1dLCBdbTRfZHF1b3RlKG00X2RlZm4oW200X2NyX0xFVFRF
UlNdKSlbLAorCQkgICAgIF1tNF9kcXVvdGUobTRfZGVmbihbbTRfY3JfbGV0dGVyc10pKVspXSkK
K200X2RlZmluZShbbTRfdG91cHBlcl0sCitbbTRfdHJhbnNsaXQoW1skMV1dLCBdbTRfZHF1b3Rl
KG00X2RlZm4oW200X2NyX2xldHRlcnNdKSlbLAorCQkgICAgIF1tNF9kcXVvdGUobTRfZGVmbihb
bTRfY3JfTEVUVEVSU10pKVspXSkKKworCisjIG00X3NwbGl0KFNUUklORywgW1JFR0VYUF0pCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNwbGl0IFNUUklORyBpbnRvIGFuIG00IGxp
c3Qgb2YgcXVvdGVkIGVsZW1lbnRzLiAgVGhlIGVsZW1lbnRzIGFyZQorIyBxdW90ZWQgd2l0aCBb
IGFuZCBdLiAgQmVnaW5uaW5nIHNwYWNlcyBhbmQgZW5kIHNwYWNlcyAqYXJlIGtlcHQqLgorIyBV
c2UgbTRfc3RyaXAgdG8gcmVtb3ZlIHRoZW0uCisjCisjIFJFR0VYUCBzcGVjaWZpZXMgd2hlcmUg
dG8gc3BsaXQuICBEZWZhdWx0IGlzIFtcdCBdKy4KKyMKKyMgSWYgU1RSSU5HIGlzIGVtcHR5LCB0
aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGxpc3QuCisjCisjIFBheSBhdHRlbnRpb24gdG8gdGhlIG00
X2NoYW5nZXF1b3Rlcy4gIFdoZW4gbTQgcmVhZHMgdGhlIGRlZmluaXRpb24gb2YKKyMgbTRfc3Bs
aXQsIGl0IHN0aWxsIGhhcyBxdW90ZXMgc2V0IHRvIFsgYW5kIF0uICBMdWNraWx5LCB0aGVzZSBh
cmUgbWF0Y2hlZAorIyBpbiB0aGUgbWFjcm8gYm9keSwgc28gdGhlIGRlZmluaXRpb24gaXMgc3Rv
cmVkIGNvcnJlY3RseS4gIFVzZSB0aGUgc2FtZQorIyBhbHRlcm5hdGUgcXVvdGVzIGFzIG00X25v
cXVvdGU7IGl0IG11c3QgYmUgdW5saWtlbHkgdG8gYXBwZWFyIGluICQxLgorIworIyBBbHNvLCBu
b3RpY2UgdGhhdCAkMSBpcyBxdW90ZWQgdHdpY2UsIHNpbmNlIHdlIHdhbnQgdGhlIHJlc3VsdCB0
bworIyBiZSBxdW90ZWQuICBUaGVuIHlvdSBzaG91bGQgdW5kZXJzdGFuZCB0aGF0IHRoZSBhcmd1
bWVudCBvZgorIyBwYXRzdWJzdCBpcyAtPTx7KFNUUklORyl9Pj0tIChpLmUuLCB3aXRoIGFkZGl0
aW9uYWwgLT08eyggYW5kICl9Pj0tKS4KKyMKKyMgVGhpcyBtYWNybyBpcyBzYWZlIG9uIGFjdGl2
ZSBzeW1ib2xzLCBpLmUuOgorIyAgIG00X2RlZmluZShhY3RpdmUsIEFDVElWRSkKKyMgICBtNF9z
cGxpdChbYWN0aXZlIGFjdGl2ZSBdKWVuZAorIyAgID0+IFthY3RpdmVdLCBbYWN0aXZlXSwgW11l
bmQKKyMKKyMgT3B0aW1pemUgb24gcmVnZXggb2YgYCAnIChzcGFjZSksIHNpbmNlIG00X2ZvcmVh
Y2hfdyBhbHJlYWR5IGd1YXJhbnRlZXMKKyMgdGhhdCB0aGUgbGlzdCBjb250YWlucyBzaW5nbGUg
c3BhY2Ugc2VwYXJhdG9ycywgYW5kIGEgY29tbW9uIGNhc2UgaXMKKyMgc3BsaXR0aW5nIGEgc2lu
Z2xlLWVsZW1lbnQgbGlzdC4gIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyZXF1ZW50bHksCisjIHNv
IGF2b2lkIHVubmVjZXNzYXJ5IGRubCBpbnNpZGUgdGhlIGRlZmluaXRpb24uCittNF9kZWZpbmUo
W200X3NwbGl0XSwKK1ttNF9pZihbJDFdLCBbXSwgW10sCisgICAgICAgWyQyXSwgWyBdLCBbbTRf
aWYobTRfaW5kZXgoWyQxXSwgWyBdKSwgWy0xXSwgW1tbJDFdXV0sCisJCQkgW18kMChbJDFdLCBb
JDJdLCBbLCBdKV0pXSwKKyAgICAgICBbJDJdLCBbXSwgW18kMChbJDFdLCBbWwkgXStdLCBbLCBd
KV0sCisgICAgICAgW18kMChbJDFdLCBbJDJdLCBbLCBdKV0pXSkKKworbTRfZGVmaW5lKFtfbTRf
c3BsaXRdLAorW200X2NoYW5nZXF1b3RlKFstPTx7KF0sWyl9Pj0tXSldZG5sCitbW200X2JwYXRz
dWJzdCgtPTx7KC09PHsoJDEpfT49LSl9Pj0tLCAtPTx7KCQyKX0+PS0sCisJICAgICAgIC09PHso
XSQzWyl9Pj0tKV1tNF9jaGFuZ2VxdW90ZShbLCBdKV0pCisKKworIyBtNF9jaG9tcChTVFJJTkcp
CisjIG00X2Nob21wX2FsbChTVFJJTkcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVy
biBTVFJJTkcgcXVvdGVkLCBidXQgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUuICBtNF9jaG9t
cAorIyByZW1vdmVzIGF0IG1vc3Qgb25lIG5ld2xpbmUsIHdoaWxlIG00X2Nob21wX2FsbCByZW1v
dmVzIGFsbAorIyBjb25zZWN1dGl2ZSB0cmFpbGluZyBuZXdsaW5lcy4gIEVtYmVkZGVkIG5ld2xp
bmVzIGFyZSBub3QgdG91Y2hlZCwKKyMgYW5kIGEgdHJhaWxpbmcgYmFja3NsYXNoLW5ld2xpbmUg
bGVhdmVzIGp1c3QgYSB0cmFpbGluZyBiYWNrc2xhc2guCisjCisjIG00X2JyZWdleHAgaXMgc2xv
d2VyIHRoYW4gbTRfaW5kZXgsIGFuZCB3ZSBkb24ndCBhbHdheXMgd2FudCB0bworIyByZW1vdmUg
YWxsIG5ld2xpbmVzOyBoZW5jZSB0aGUgdHdvIHZhcmlhbnRzLiAgV2UgbWFzc2FnZSBjaGFyYWN0
ZXJzCisjIHRvIGdpdmUgYSBuaWNlciBwYXR0ZXJuIHRvIG1hdGNoLCBwYXJ0aWN1bGFybHkgc2lu
Y2UgbTRfYnJlZ2V4cCBpcworIyBsaW5lLW9yaWVudGVkLiAgQm90aCB2ZXJzaW9ucyBtdXN0IGd1
YXJhbnRlZSBhIG1hdGNoLCB0byBhdm9pZCBidWdzCisjIHdpdGggcHJlY2lzaW9uIC0xIGluIG00
X2Zvcm1hdCBpbiBvbGRlciBtNC4KK200X2RlZmluZShbbTRfY2hvbXBdLAorW200X2Zvcm1hdChb
WyUuKnNdXSwgbTRfaW5kZXgobTRfdHJhbnNsaXQoW1skMV1dLCBbCisvLl0sIFsvICBdKVsuLy5d
LCBbLy5dKSwgWyQxXSldKQorCittNF9kZWZpbmUoW200X2Nob21wX2FsbF0sCitbbTRfZm9ybWF0
KFtbJS4qc11dLCBtNF9icmVnZXhwKG00X3RyYW5zbGl0KFtbJDFdXSwgWworL10sIFsvIF0pLCBb
LyokXSksIFskMV0pXSkKKworCisjIG00X2ZsYXR0ZW4oU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0KKyMgSWYgU1RSSU5HIGNvbnRhaW5zIGVuZCBvZiBsaW5lcywgcmVwbGFjZSB0aGVtIHdp
dGggc3BhY2VzLiAgSWYgdGhlcmUKKyMgYXJlIGJhY2tzbGFzaGVkIGVuZCBvZiBsaW5lcywgcmVt
b3ZlIHRoZW0uICBUaGlzIG1hY3JvIGlzIHNhZmUgd2l0aAorIyBhY3RpdmUgc3ltYm9scy4KKyMg
ICAgbTRfZGVmaW5lKGFjdGl2ZSwgQUNUSVZFKQorIyAgICBtNF9mbGF0dGVuKFthY3RpdmUKKyMg
ICAgYWN0XAorIyAgICBpdmVdKWVuZAorIyAgICA9PiBhY3RpdmUgYWN0aXZlZW5kCisjCisjIElu
IG00LCBtNF9icGF0c3Vic3QgaXMgZXhwZW5zaXZlLCBzbyBmaXJzdCBjaGVjayBmb3IgYSBuZXds
aW5lLgorbTRfZGVmaW5lKFttNF9mbGF0dGVuXSwKK1ttNF9pZihtNF9pbmRleChbJDFdLCBbCitd
KSwgWy0xXSwgW1skMV1dLAorICAgICAgIFttNF90cmFuc2xpdChtNF9icGF0c3Vic3QoW1tbJDFd
XV0sIFtcXAorXSksIFsKK10sIFsgXSldKV0pCisKKworIyBtNF9zdHJpcChTVFJJTkcpCisjIC0t
LS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kcyBpbnRvIFNUUklORyB3aXRoIHRhYnMgYW5kIHNwYWNl
cyBzaW5nbGVkIG91dCBpbnRvIGEgc2luZ2xlCisjIHNwYWNlLCBhbmQgcmVtb3ZpbmcgbGVhZGlu
ZyBhbmQgdHJhaWxpbmcgc3BhY2VzLgorIworIyBUaGlzIG1hY3JvIGlzIHJvYnVzdCB0byBhY3Rp
dmUgc3ltYm9scy4KKyMgICAgbTRfZGVmaW5lKGFjdGl2ZSwgQUNUSVZFKQorIyAgICBtNF9zdHJp
cChbICBhY3RpdmUgPHRhYj4gPHRhYj5hY3RpdmUgXSllbmQKKyMgICAgPT4gYWN0aXZlIGFjdGl2
ZWVuZAorIworIyBGaXJzdCwgbm90aWNlIHRoYXQgd2UgZ3VhcmFudGVlIHRyYWlsaW5nIHNwYWNl
LiAgV2h5PyAgQmVjYXVzZSByZWd1bGFyCisjIGV4cHJlc3Npb25zIGFyZSBncmVlZHksIGFuZCBg
LiogPycgd291bGQgYWx3YXlzIGdyb3VwIHRoZSBzcGFjZSBpbnRvIHRoZQorIyAuKiBwb3J0aW9u
LiAgVGhlIGFsZ29yaXRobSBpcyBzaW1wbGVyIGJ5IGF2b2lkaW5nIGA/JyBhdCB0aGUgZW5kLiAg
VGhlCisjIGFsZ29yaXRobSBjb3JyZWN0bHkgc3RyaXBzIGV2ZXJ5dGhpbmcgaWYgU1RSSU5HIGlz
IGp1c3QgYCAnLgorIworIyBUaGVuIG5vdGljZSB0aGUgc2Vjb25kIHBhdHRlcm46IGl0IGlzIGlu
IGNoYXJnZSBvZiByZW1vdmluZyB0aGUKKyMgbGVhZGluZy90cmFpbGluZyBzcGFjZXMuICBXaHkg
bm90IGp1c3QgYFteIF0nPyAgQmVjYXVzZSB0aGV5IGFyZQorIyBhcHBsaWVkIHRvIG92ZXItcXVv
dGVkIHN0cmluZ3MsIGkuZS4gbW9yZSBvciBsZXNzIFtTVFJJTkddLCBkdWUKKyMgdG8gdGhlIGxp
bWl0YXRpb25zIG9mIG00X2JwYXRzdWJzdHMuICBTbyB0aGUgbGVhZGluZyBzcGFjZSBpbiBTVFJJ
TkcKKyMgaXMgdGhlICpzZWNvbmQqIGNoYXJhY3RlcjsgZXF1YWxseSBmb3IgdGhlIHRyYWlsaW5n
IHNwYWNlLgorbTRfZGVmaW5lKFttNF9zdHJpcF0sCitbbTRfYnBhdHN1YnN0cyhbJDEgXSwKKwkg
ICAgICAgW1sJIF0rXSwgWyBdLAorCSAgICAgICBbXi4gP1woLipcKSAuJF0sIFtbW1wxXV1dKV0p
CisKKworIyBtNF9ub3JtYWxpemUoU1RSSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBB
cHBseSBtNF9mbGF0dGVuIGFuZCBtNF9zdHJpcCB0byBTVFJJTkcuCisjCisjIFRoZSBhcmd1bWVu
dCBpcyBxdW90ZWQsIHNvIHRoYXQgdGhlIG1hY3JvIGlzIHJvYnVzdCB0byBhY3RpdmUgc3ltYm9s
czoKKyMKKyMgICAgbTRfZGVmaW5lKGFjdGl2ZSwgQUNUSVZFKQorIyAgICBtNF9ub3JtYWxpemUo
WyAgYWN0XAorIyAgICBpdmUKKyMgICAgYWN0aXZlIF0pZW5kCisjICAgID0+IGFjdGl2ZSBhY3Rp
dmVlbmQKKworbTRfZGVmaW5lKFttNF9ub3JtYWxpemVdLAorW200X3N0cmlwKG00X2ZsYXR0ZW4o
WyQxXSkpXSkKKworCisKKyMgbTRfam9pbihTRVAsIEFSRzEsIEFSRzIuLi4pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9kdWNlIEFSRzFTRVBBUkcyLi4uU0VQQVJHbi4gIEF2
b2lkIGJhY2stdG8tYmFjayBTRVAgd2hlbiBhIGdpdmVuIEFSRworIyBpcyB0aGUgZW1wdHkgc3Ry
aW5nLiAgTm8gZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCBvbiBTRVAgb3IgQVJHcy4KKyMKKyMgU2lu
Y2UgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gam9pbiBjYW4gYmUgYXJiaXRyYXJpbHkgbG9u
Zywgd2UKKyMgd2FudCB0byBhdm9pZCBoYXZpbmcgbW9yZSB0aGFuIG9uZSAkQCBpbiB0aGUgbWFj
cm8gZGVmaW5pdGlvbjsKKyMgb3RoZXJ3aXNlLCB0aGUgZXhwYW5zaW9uIHdvdWxkIHJlcXVpcmUg
dHdpY2UgdGhlIG1lbW9yeSBvZiB0aGUgYWxyZWFkeQorIyBsb25nIGxpc3QuICBIZW5jZSwgbTRf
am9pbiBtZXJlbHkgbG9va3MgZm9yIHRoZSBmaXJzdCBub24tZW1wdHkgZWxlbWVudCwKKyMgYW5k
IG91dHB1dHMganVzdCB0aGF0IGVsZW1lbnQ7IHdoaWxlIF9tNF9qb2luIGxvb2tzIGZvciBhbGwg
bm9uLWVtcHR5CisjIGVsZW1lbnRzLCBhbmQgb3V0cHV0cyB0aGVtIGZvbGxvd2luZyBhIHNlcGFy
YXRvci4gIFRoZSBmaW5hbCB0cmljayB0bworIyBub3RlIGlzIHRoYXQgd2UgZGVjaWRlIGJldHdl
ZW4gcmVjdXJzaW5nIHdpdGggJDAgb3IgXyQwIGJhc2VkIG9uIHRoZQorIyBuZXN0ZWQgbTRfaWYg
ZW5kaW5nIHdpdGggYF8nLgorIworIyBQbGVhc2Uga2VlcCBmb3JlYWNoLm00IGluIHN5bmMgd2l0
aCBhbnkgYWRqdXN0bWVudHMgbWFkZSBoZXJlLgorbTRfZGVmaW5lKFttNF9qb2luXSwKK1ttNF9p
ZihbJCNdLCBbMV0sIFtdLAorICAgICAgIFskI10sIFsyXSwgW1skMl1dLAorICAgICAgIFttNF9p
ZihbJDJdLCBbXSwgW10sIFtbJDJdX10pJDAoWyQxXSwgbTRfc2hpZnQyKCRAKSldKV0pCittNF9k
ZWZpbmUoW19tNF9qb2luXSwKK1ttNF9pZihbJCMkMl0sIFsyXSwgW10sCisgICAgICAgW200X2lm
KFskMl0sIFtdLCBbXSwgW1skMSQyXV0pJDAoWyQxXSwgbTRfc2hpZnQyKCRAKSldKV0pCisKKyMg
bTRfam9pbmFsbChTRVAsIEFSRzEsIEFSRzIuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBQcm9kdWNlIEFSRzFTRVBBUkcyLi4uU0VQQVJHbi4gIEFuIGVtcHR5IEFSRyBy
ZXN1bHRzIGluIGJhY2stdG8tYmFjayBTRVAuCisjIE5vIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQg
b24gU0VQIG9yIEFSR3MuCisjCisjIFBsZWFzZSBrZWVwIGZvcmVhY2gubTQgaW4gc3luYyB3aXRo
IGFueSBhZGp1c3RtZW50cyBtYWRlIGhlcmUuCittNF9kZWZpbmUoW200X2pvaW5hbGxdLCBbWyQy
XV8kMChbJDFdLCBtNF9zaGlmdCgkQCkpXSkKK200X2RlZmluZShbX200X2pvaW5hbGxdLAorW200
X2lmKFskI10sIFsyXSwgW10sIFtbJDEkM10kMChbJDFdLCBtNF9zaGlmdDIoJEApKV0pXSkKKwor
IyBtNF9jb21iaW5lKFtTRVBBUkFUT1JdLCBQUkVGSVgtTElTVCwgW0lORklYXSwgU1VGRklYLi4u
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorIyBQcm9kdWNlIHRoZSBwYWlyd2lzZSBjb21iaW5hdGlvbiBvZiBldmVyeSBlbGVtZW50
IGluIHRoZSBxdW90ZWQsCisjIGNvbW1hLXNlcGFyYXRlZCBQUkVGSVgtTElTVCB3aXRoIGV2ZXJ5
IGVsZW1lbnQgZnJvbSB0aGUgU1VGRklYIGFyZ3VtZW50cy4KKyMgRWFjaCBwYWlyIGlzIGpvaW5l
ZCB3aXRoIElORklYLCBhbmQgcGFpcnMgYXJlIHNlcGFyYXRlZCBieSBTRVBBUkFUT1IuCisjIE5v
IGV4cGFuc2lvbiBvY2N1cnMgb24gU0VQQVJBVE9SLCBJTkZJWCwgb3IgZWxlbWVudHMgb2YgZWl0
aGVyIGxpc3QuCisjCisjIEZvciBleGFtcGxlOgorIyAgIG00X2NvbWJpbmUoWywgXSwgW1thXSwg
W2JdLCBbY11dLCBbLV0sIFsxXSwgWzJdLCBbM10pCisjICAgPT4gYS0xLCBhLTIsIGEtMywgYi0x
LCBiLTIsIGItMywgYy0xLCBjLTIsIGMtMworIworIyBUaGlzIGRlZmluaXRpb24gaXMgYSBiaXQg
aGFpcnk7IHRoZSB0aGluZyB0byByZWFsaXplIGlzIHRoYXQgd2Ugd2FudAorIyB0byBjb25zdHJ1
Y3QgbTRfbWFwX2FyZ3Nfc2VwKFtbcHJlZml4JDNdXSwgW10sIFtbJDFdXSwgbTRfc2hpZnQzKCRA
KSkKKyMgYXMgdGhlIGlubmVyIGxvb3AsIHVzaW5nIGVhY2ggcHJlZml4IGdlbmVyYXRlZCBieSB0
aGUgb3V0ZXIgbG9vcCwKKyMgYW5kIHdpdGhvdXQgcmVjYWxjdWxhdGluZyBtNF9zaGlmdDMgZXZl
cnkgb3V0ZXIgaXRlcmF0aW9uLgorbTRfZGVmaW5lKFttNF9jb21iaW5lXSwKK1ttNF9pZihbJDJd
LCBbXSwgW10sIG00X2V2YWwoWyQjID4gM10pLCBbMV0sCitbbTRfbWFwX2FyZ3Nfc2VwKFttNF9t
YXBfYXJnc19zZXAobTRfZHF1b3RlKF0sIFspW1skM11dLCBbXSwgW1skMV1dLF1dXWRubAorW200
X2RxdW90ZShtNF9kcXVvdGUobTRfc2hpZnQzKCRAKSkpW1spXSwgW1skMV1dLCAkMildKV0pCisK
KworIyBtNF9hcHBlbmQoTUFDUk8tTkFNRSwgU1RSSU5HLCBbU0VQQVJBVE9SXSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZGVmaW5lIE1BQ1JPLU5B
TUUgdG8gaG9sZCBpdHMgZm9ybWVyIGNvbnRlbnQgcGx1cyBgU0VQQVJBVE9SYCdTVFJJTkcnCisj
IGF0IHRoZSBlbmQuICBJdCBpcyB2YWxpZCB0byB1c2UgdGhpcyBtYWNybyB3aXRoIE1BQ1JPLU5B
TUUgdW5kZWZpbmVkLAorIyBpbiB3aGljaCBjYXNlIG5vIFNFUEFSQVRPUiBpcyBhZGRlZC4gIEJl
IGF3YXJlIHRoYXQgdGhlIGNyaXRlcmlvbiBpcworIyBgbm90IGJlaW5nIGRlZmluZWQnLCBhbmQg
bm90IGBub3QgYmVpbmcgZW1wdHknLgorIworIyBOb3RlIHRoYXQgbmVpdGhlciBTVFJJTkcgbm9y
IFNFUEFSQVRPUiBhcmUgZXhwYW5kZWQgaGVyZTsgcmF0aGVyLCB3aGVuCisjIHlvdSBleHBhbmQg
TUFDUk8tTkFNRSwgdGhleSB3aWxsIGJlIGV4cGFuZGVkIGF0IHRoYXQgcG9pbnQgaW4gdGltZS4K
KyMKKyMgVGhpcyBtYWNybyBpcyByb2J1c3QgdG8gYWN0aXZlIHN5bWJvbHMuICBJdCBjYW4gYmUg
dXNlZCB0byBncm93CisjIHN0cmluZ3MuCisjCisjICAgIHwgbTRfZGVmaW5lKGFjdGl2ZSwgQUNU
SVZFKWRubAorIyAgICB8IG00X2FwcGVuZChbc2VudGVuY2VdLCBbVGhpcyBpcyBhbl0pZG5sCisj
ICAgIHwgbTRfYXBwZW5kKFtzZW50ZW5jZV0sIFsgYWN0aXZlIF0pZG5sCisjICAgIHwgbTRfYXBw
ZW5kKFtzZW50ZW5jZV0sIFtzeW1ib2wuXSlkbmwKKyMgICAgfCBzZW50ZW5jZQorIyAgICB8IG00
X3VuZGVmaW5lKFthY3RpdmVdKWRubAorIyAgICB8IHNlbnRlbmNlCisjICAgID0+IFRoaXMgaXMg
YW4gQUNUSVZFIHN5bWJvbC4KKyMgICAgPT4gVGhpcyBpcyBhbiBhY3RpdmUgc3ltYm9sLgorIwor
IyBJdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgaG9va3MuCisjCisjICAgIHwgbTRfZGVmaW5lKGFj
dGl2ZSwgQUNUSVZFKWRubAorIyAgICB8IG00X2FwcGVuZChbaG9va3NdLCBbbTRfZGVmaW5lKFth
Y3QxXSwgW2FjdDJdKV0pZG5sCisjICAgIHwgbTRfYXBwZW5kKFtob29rc10sIFttNF9kZWZpbmUo
W2FjdDJdLCBbYWN0aXZlXSldKWRubAorIyAgICB8IG00X3VuZGVmaW5lKFthY3RpdmVdKWRubAor
IyAgICB8IGFjdDEKKyMgICAgfCBob29rcworIyAgICB8IGFjdDEKKyMgICAgPT4gYWN0MQorIyAg
ICA9PgorIyAgICA9PiBhY3RpdmUKKyMKKyMgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBjcmVhdGUg
bGlzdHMsIGFsdGhvdWdoIHRoaXMgcGFydGljdWxhciB1c2FnZSB3YXMKKyMgYnJva2VuIHByaW9y
IHRvIGF1dG9jb25mIDIuNjIuCisjICAgIHwgbTRfYXBwZW5kKFtsaXN0XSwgW29uZV0sIFssIF0p
ZG5sCisjICAgIHwgbTRfYXBwZW5kKFtsaXN0XSwgW3R3b10sIFssIF0pZG5sCisjICAgIHwgbTRf
YXBwZW5kKFtsaXN0XSwgW3RocmVlXSwgWywgXSlkbmwKKyMgICAgfCBsaXN0CisjICAgIHwgbTRf
ZHF1b3RlKGxpc3QpCisjICAgID0+IG9uZSwgdHdvLCB0aHJlZQorIyAgICA9PiBbb25lXSxbdHdv
XSxbdGhyZWVdCisjCisjIE5vdGUgdGhhdCBtNF9hcHBlbmQgY2FuIGJlbmVmaXQgZnJvbSBhbW9y
dGl6ZWQgTyhuKSBtNCBiZWhhdmlvciwgaWYKKyMgdGhlIHVuZGVybHlpbmcgbTQgaW1wbGVtZW50
YXRpb24gaXMgc21hcnQgZW5vdWdoIHRvIGF2b2lkIGNvcHlpbmcgZXhpc3RpbmcKKyMgY29udGVu
dHMgd2hlbiBlbmxhcmdpbmcgYSBtYWNybydzIGRlZmluaXRpb24gaW50byBhbnkgcHJlLWFsbG9j
YXRlZCBzdG9yYWdlCisjIChtNCAxLjQueCB1bmZvcnR1bmF0ZWx5IGRvZXMgbm90IGltcGxlbWVu
dCB0aGlzIG9wdGltaXphdGlvbikuICBXZSBkbworIyBub3QgaW1wbGVtZW50IG00X3ByZXBlbmQs
IHNpbmNlIGl0IGlzIGluaGVyZW50bHkgTyhuXjIpIChwcmUtYWxsb2NhdGVkCisjIHN0b3JhZ2Ug
b25seSBvY2N1cnMgYXQgdGhlIGVuZCBvZiBhIG1hY3JvLCBzbyB0aGUgZXhpc3RpbmcgY29udGVu
dHMgbXVzdAorIyBhbHdheXMgYmUgbW92ZWQpLgorIworIyBVc2UgX200X2RlZm4gZm9yIHNwZWVk
LgorbTRfZGVmaW5lKFttNF9hcHBlbmRdLAorW200X2RlZmluZShbJDFdLCBtNF9pZmRlZihbJDFd
LCBbX200X2RlZm4oWyQxXSlbJDNdXSlbJDJdKV0pCisKKworIyBtNF9hcHBlbmRfdW5pcShNQUNS
Ty1OQU1FLCBTVFJJTkcsIFtTRVBBUkFUT1JdLCBbSUYtVU5JUV0sIFtJRi1EVVBdKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIyBMaWtlIGBtNF9hcHBlbmQnLCBidXQgYXBwZW5kIG9ubHkgaWYgbm90IHlldCBw
cmVzZW50LiAgQWRkaXRpb25hbGx5LAorIyBleHBhbmQgSUYtVU5JUSBpZiBTVFJJTkcgd2FzIGFw
cGVuZGVkLCBvciBJRi1EVVAgaWYgU1RSSU5HIHdhcyBhbHJlYWR5CisjIHByZXNlbnQuICBBbHNv
LCB3YXJuIGlmIFNFUEFSQVRPUiBpcyBub3QgZW1wdHkgYW5kIG9jY3VycyB3aXRoaW4gU1RSSU5H
LAorIyBhcyB0aGUgYWxnb3JpdGhtIG5vIGxvbmdlciBndWFyYW50ZWVzIHVuaXF1ZW5lc3MuCisj
CisjIE5vdGUgdGhhdCB3aGlsZSBtNF9hcHBlbmQgY2FuIGJlIE8obikgKGRlcGVuZGluZyBvbiB0
aGUgcXVhbGl0eSBvZiB0aGUKKyMgdW5kZXJseWluZyBNNCBpbXBsZW1lbnRhdGlvbiksIG00X2Fw
cGVuZF91bmlxIGlzIGluaGVyZW50bHkgTyhuXjIpCisjIGJlY2F1c2UgZWFjaCBhcHBlbmQgb3Bl
cmF0aW9uIHNlYXJjaGVzIHRoZSBlbnRpcmUgc3RyaW5nLgorbTRfZGVmaW5lKFttNF9hcHBlbmRf
dW5pcV0sCitbbTRfaWZ2YWwoWyQzXSwgW200X2lmKG00X2luZGV4KFskMl0sIFskM10pLCBbLTFd
LCBbXSwKKwkJICAgICAgIFttNF93YXJuKFtzeW50YXhdLAorCQkJCVskMDogYCQyJyBjb250YWlu
cyBgJDMnXSldKV0pXyQwKCRAKV0pCittNF9kZWZpbmUoW19tNF9hcHBlbmRfdW5pcV0sCitbbTRf
aWZkZWYoWyQxXSwKKwkgIFttNF9pZihtNF9pbmRleChbJDNdX200X2RlZm4oWyQxXSlbJDNdLCBb
JDMkMiQzXSksIFstMV0sCisJCSBbbTRfYXBwZW5kKFskMV0sIFskMl0sIFskM10pJDRdLCBbJDVd
KV0sCisJICBbbTRfZGVmaW5lKFskMV0sIFskMl0pJDRdKV0pCisKKyMgbTRfYXBwZW5kX3VuaXFf
dyhNQUNSTy1OQU1FLCBTVFJJTkdTKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIEZvciBlYWNoIG9mIHRoZSB3b3JkcyBpbiB0aGUgd2hpdGVzcGFjZSBzZXBhcmF0
ZWQgbGlzdCBTVFJJTkdTLCBhcHBlbmQKKyMgb25seSB0aGUgdW5pcXVlIHN0cmluZ3MgdG8gdGhl
IGRlZmluaXRpb24gb2YgTUFDUk8tTkFNRS4KKyMKKyMgVXNlIF9tNF9kZWZuIGZvciBzcGVlZC4K
K200X2RlZmluZShbbTRfYXBwZW5kX3VuaXFfd10sCitbbTRfbWFwX2FyZ3NfdyhbJDJdLCBbX200
X2FwcGVuZF91bmlxKFskMV0sXSwgWywgWyBdKV0pXSkKKworCisjIG00X2VzY2FwZShTVFJJTkcp
CisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCBxdW90ZWQgU1RSSU5HLCBidXQgd2l0aCBl
bWJlZGRlZCAjLCAkLCBbIGFuZCBdIHR1cm5lZCBpbnRvCisjIHF1YWRyaWdyYXBocy4KKyMKKyMg
SXQgaXMgZmFzdGVyIHRvIGNoZWNrIGlmIFNUUklORyBpcyBhbHJlYWR5IGdvb2QgdXNpbmcgbTRf
dHJhbnNsaXQKKyMgdGhhbiB0byBibGluZGx5IHBlcmZvcm0gZm91ciBtNF9icGF0c3Vic3QuCisj
CisjIEJlY2F1c2UgdGhlIHRyYW5zbGl0IGlzIHN0cmlwcGluZyBxdW90ZXMsIGl0IG11c3QgYWxz
byBuZXV0cmFsaXplCisjIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgaW4gYSBtYWNybyBuYW1lLCBh
cyB3ZWxsIGFzIGNvbW1lbnRzLCBjb21tYXMsCisjIGFuZCBwYXJlbnRoZXNlcy4gIEFsbCB0aGUg
cHJvYmxlbSBjaGFyYWN0ZXJzIGFyZSB1bmlmaWVkIHNvIHRoYXQgYQorIyBzaW5nbGUgbTRfaW5k
ZXggY2FuIHNjYW4gdGhlIHJlc3VsdC4KKyMKKyMgUmF0aGVyIHRoYW4gZXhwYW5kIG00X2RlZm4g
ZXZlcnkgdGltZSBtNF9lc2NhcGUgaXMgZXhwYW5kZWQsIHdlCisjIGlubGluZSBpdHMgZXhwYW5z
aW9uIHVwIGZyb250LgorbTRfZGVmaW5lKFttNF9lc2NhcGVdLAorW200X2lmKG00X2luZGV4KG00
X3RyYW5zbGl0KFskMV0sCisgICBbW10jLCgpXV1tNF9kcXVvdGUobTRfZGVmbihbbTRfY3Jfc3lt
Ym9sczJdKSlbLCBbJCQkXSksIFskXSksCisgIFstMV0sIFttNF9lY2hvXSwgW18kMF0pKFskMV0p
XSkKKworbTRfZGVmaW5lKFtfbTRfZXNjYXBlXSwKK1ttNF9jaGFuZ2VxdW90ZShbLT08eyhdLFsp
fT49LV0pXWRubAorW200X2JwYXRzdWJzdChtNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KG00X2Jw
YXRzdWJzdCgKKwkgIC09PHsoLT08eygtPTx7KC09PHsoLT08eygkMSl9Pj0tKX0+PS0pfT49LSl9
Pj0tKX0+PS0sCisJLT08eygjKX0+PS0sIC09PHsoQCU6QCl9Pj0tKSwKKyAgICAgIC09PHsoXFsp
fT49LSwgLT08eyhAPDpAKX0+PS0pLAorICAgIC09PHsoXF0pfT49LSwgLT08eyhAOj5AKX0+PS0p
LAorICAtPTx7KFwkKX0+PS0sIC09PHsoQFN8QCl9Pj0tKW00X2NoYW5nZXF1b3RlKFssXSldKQor
CisKKyMgbTRfdGV4dF93cmFwKFNUUklORywgW1BSRUZJWF0sIFtGSVJTVC1QUkVGSVhdLCBbV0lE
VEhdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIEV4cGFuZHMgaW50byBTVFJJTkcgd3JhcHBlZCB0byBob2xkIGluIFdJRFRIIGNv
bHVtbnMgKGRlZmF1bHQgPSA3OSkuCisjIElmIFBSRUZJWCBpcyBnaXZlbiwgZWFjaCBsaW5lIGlz
IHByZWZpeGVkIHdpdGggaXQuICBJZiBGSVJTVC1QUkVGSVggaXMKKyMgc3BlY2lmaWVkLCB0aGVu
IHRoZSBmaXJzdCBsaW5lIGlzIHByZWZpeGVkIHdpdGggaXQuICBBcyBhIHNwZWNpYWwgY2FzZSwK
KyMgaWYgdGhlIGxlbmd0aCBvZiBGSVJTVC1QUkVGSVggaXMgZ3JlYXRlciB0aGFuIHRoYXQgb2Yg
UFJFRklYLCB0aGVuCisjIEZJUlNULVBSRUZJWCB3aWxsIGJlIGxlZnQgYWxvbmUgb24gdGhlIGZp
cnN0IGxpbmUuCisjCisjIE5vIGV4cGFuc2lvbiBvY2N1cnMgb24gdGhlIGNvbnRlbnRzIFNUUklO
RywgUFJFRklYLCBvciBGSVJTVC1QUkVGSVgsCisjIGFsdGhvdWdoIHF1YWRyaWdyYXBocyBhcmUg
Y29ycmVjdGx5IHJlY29nbml6ZWQuICBNb3JlIHByZWNpc2VseSwKKyMgeW91IG1heSByZWRlZmlu
ZSBtNF9xbGVuIHRvIHJlY29nbml6ZSB3aGF0ZXZlciBlc2NhcGUgc2VxdWVuY2VzIHRoYXQKKyMg
eW91IHdpbGwgcG9zdC1wcm9jZXNzLgorIworIyBUeXBpY2FsIG91dHB1dHMgYXJlOgorIworIyBt
NF90ZXh0X3dyYXAoW1Nob3J0IHN0cmluZyAqL10sIFsgICBdLCBbLyogXSwgMjApCisjICA9PiAv
KiBTaG9ydCBzdHJpbmcgKi8KKyMKKyMgbTRfdGV4dF93cmFwKFtNdWNoIGxvbmdlciBzdHJpbmcg
Ki9dLCBbICAgXSwgWy8qIF0sIDIwKQorIyAgPT4gLyogTXVjaCBsb25nZXIKKyMgID0+ICAgIHN0
cmluZyAqLworIworIyBtNF90ZXh0X3dyYXAoW1Nob3J0IGRvYy5dLCBbICAgICAgICAgIF0sIFsg
IC0tc2hvcnQgXSwgMzApCisjICA9PiAgIC0tc2hvcnQgU2hvcnQgZG9jLgorIworIyBtNF90ZXh0
X3dyYXAoW1Nob3J0IGRvYy5dLCBbICAgICAgICAgIF0sIFsgIC0tdG9vLXdpZGUgXSwgMzApCisj
ICA9PiAgIC0tdG9vLXdpZGUKKyMgID0+ICAgICAgICAgICBTaG9ydCBkb2MuCisjCisjIG00X3Rl
eHRfd3JhcChbU3VwZXIgbG9uZyBkb2N1bWVudGF0aW9uLl0sIFsgICAgICAgICAgXSwgWyAgLS10
b28td2lkZSBdLCAzMCkKKyMgID0+ICAgLS10b28td2lkZQorIyAgPT4gICAgICBTdXBlciBsb25n
CisjICA9PiAgICAgIGRvY3VtZW50YXRpb24uCisjCisjIEZJWE1FOiB0aGVyZSBpcyBubyBjaGVj
a2luZyBvZiBhIGxvbmdlciBQUkVGSVggdGhhbiBXSURUSCwgYnV0IGRvCisjIHdlIHJlYWxseSB3
YW50IHRvIGJvdGhlciB3aXRoIHBlb3BsZSB0cnlpbmcgZWFjaCBzaW5nbGUgY29ybmVyCisjIG9m
IGEgc29mdHdhcmU/CisjCisjIFRoaXMgbWFjcm8gZG9lcyBub3QgbGVhdmUgYSB0cmFpbGluZyBz
cGFjZSBiZWhpbmQgdGhlIGxhc3Qgd29yZCBvZiBhIGxpbmUsCisjIHdoaWNoIGNvbXBsaWNhdGVz
IGl0IGEgYml0LiAgVGhlIGFsZ29yaXRobSBpcyBvdGhlcndpc2Ugc3R1cGlkIGFuZCBzaW1wbGU6
CisjIGFsbCB0aGUgd29yZHMgYXJlIHByZWNlZGVkIGJ5IG00X1NlcGFyYXRvciB3aGljaCBpcyBk
ZWZpbmVkIHRvIGVtcHR5IGZvcgorIyB0aGUgZmlyc3Qgd29yZCwgYW5kIHRoZW4gYCAnIChzaW5n
bGUgc3BhY2UpIGZvciBhbGwgdGhlIG90aGVycy4KKyMKKyMgVGhlIGFsZ29yaXRobSB1c2VzIGEg
aGVscGVyIHRoYXQgdXNlcyAkMiB0aHJvdWdoICQ0IGRpcmVjdGx5LCByYXRoZXIgdGhhbgorIyB1
c2luZyBsb2NhbCB2YXJpYWJsZXMsIHRvIGF2b2lkIG00X2RlZm4gb3ZlcmhlYWQsIG9yIGV4cGFu
c2lvbiBzd2FsbG93aW5nCisjIGFueSAkLiAgSXQgYWxzbyBieXBhc3NlcyBtNF9wb3BkZWYgb3Zl
cmhlYWQgd2l0aCBfbTRfcG9wZGVmIHNpbmNlIG5vIHVzZXIKKyMgbWFjcm8gZXhwYW5zaW9uIG9j
Y3VycyBpbiB0aGUgbWVhbnRpbWUuICBBbHNvLCB0aGUgZGVmaW5pdGlvbiBpcyB3cml0dGVuCisj
IHdpdGggbTRfZG8sIHRvIGF2b2lkIHRpbWUgd2FzdGVkIG9uIGRubCBkdXJpbmcgZXhwYW5zaW9u
IChzaW5jZSB0aGlzIGlzCisjIGFscmVhZHkgYSB0aW1lLWNvbnN1bWluZyBtYWNybykuCittNF9k
ZWZpbmUoW200X3RleHRfd3JhcF0sCitbXyQwKG00X2VzY2FwZShbJDFdKSwgWyQyXSwgbTRfZGVm
YXVsdF9xdW90ZWQoWyQzXSwgWyQyXSksCisgICAgIG00X2RlZmF1bHRfcXVvdGVkKFskNF0sIFs3
OV0pKV0pCisKK200X2RlZmluZShbX200X3RleHRfd3JhcF0sCittNF9kbyhkbmwgc2V0IHVwIGxv
Y2FsIHZhcmlhYmxlcywgdG8gYXZvaWQgcmVwZWF0ZWQgY2FsY3VsYXRpb25zCitbW200X3B1c2hk
ZWYoW200X0luZGVudF0sIG00X3FsZW4oWyQyXSkpXV0sCitbW200X3B1c2hkZWYoW200X0N1cnNv
cl0sIG00X3FsZW4oWyQzXSkpXV0sCitbW200X3B1c2hkZWYoW200X1NlcGFyYXRvcl0sIFttNF9k
ZWZpbmUoW200X1NlcGFyYXRvcl0sIFsgXSldKV1dLAorZG5sIGV4cGFuZCB0aGUgZmlyc3QgcHJl
Zml4LCB0aGVuIGNoZWNrIGl0cyBsZW5ndGggdnMuIHJlZ3VsYXIgcHJlZml4Citkbmwgc2FtZSBs
ZW5ndGg6IG5vdGhpbmcgc3BlY2lhbAorZG5sIHByZWZpeDEgbG9uZ2VyOiBvdXRwdXQgb24gbGlu
ZSBieSBpdHNlbGYsIGFuZCByZXNldCBjdXJzb3IKK2RubCBwcmVmaXgxIHNob3J0ZXI6IHBhZCB0
byBsZW5ndGggb2YgcHJlZml4LCBhbmQgcmVzZXQgY3Vyc29yCitbW1skM11tNF9jb25kKFttNF9D
dXJzb3JdLCBtNF9JbmRlbnQsIFtdLAorCSAgICAgIFttNF9ldmFsKG00X0N1cnNvciA+IG00X0lu
ZGVudCldLCBbMV0sIFsKK1skMl1tNF9kZWZpbmUoW200X0N1cnNvcl0sIG00X0luZGVudCldLAor
CSAgICAgIFttNF9mb3JtYXQoWyUqc10sIG00X21heChbMF0sCisgIG00X2V2YWwobTRfSW5kZW50
IC0gbTRfQ3Vyc29yKSksIFtdKW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0pXV0s
Citkbmwgbm93LCBmb3IgZWFjaCB3b3JkLCBjb21wdXRlIHRoZSBjdXJzb3IgYWZ0ZXIgdGhlIHdv
cmQgaXMgb3V0cHV0LCB0aGVuCitkbmwgY2hlY2sgaWYgdGhlIGN1cnNvciB3b3VsZCBleGNlZWQg
dGhlIHdyYXAgY29sdW1uCitkbmwgaWYgc28sIHJlc2V0IGN1cnNvciwgYW5kIGluc2VydCBuZXds
aW5lIGFuZCBwcmVmaXgKK2RubCBpZiBub3QsIGluc2VydCB0aGUgc2VwYXJhdG9yICh1c3VhbGx5
IGEgc3BhY2UpCitkbmwgZWl0aGVyIHdheSwgaW5zZXJ0IHRoZSB3b3JkCitbW200X21hcF9hcmdz
X3coWyQxXSwgWyQwX3dvcmQoXSwgWywgWyQyXSwgWyQ0XSldKV1dLAorZG5sIGZpbmFsbHksIGNs
ZWFuIHVwIHRoZSBsb2NhbCB2YXJpYWJsZXMKK1tbX200X3BvcGRlZihbbTRfU2VwYXJhdG9yXSwg
W200X0N1cnNvcl0sIFttNF9JbmRlbnRdKV1dKSkKKworbTRfZGVmaW5lKFtfbTRfdGV4dF93cmFw
X3dvcmRdLAorW200X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfZXZhbChtNF9DdXJzb3IgKyBtNF9x
bGVuKFskMV0pICsgMSkpXWRubAorW200X2lmKG00X2V2YWwobTRfQ3Vyc29yID4gKFskM10pKSwK
KyAgICAgIFsxXSwgW200X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfZXZhbChtNF9JbmRlbnQgKyBt
NF9xbGVuKFskMV0pICsgMSkpCitbJDJdXSwKKyAgICAgIFttNF9TZXBhcmF0b3JbXV0pWyQxXV0p
CisKKyMgbTRfdGV4dF9ib3goTUVTU0FHRSwgW0ZSQU1FLUNIQVJBQ1RFUiA9IGAtJ10pCisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUdXJuIE1FU1NB
R0UgaW50bzoKKyMgICMjIC0tLS0tLS0gIyMKKyMgICMjIE1FU1NBR0UgIyMKKyMgICMjIC0tLS0t
LS0gIyMKKyMgdXNpbmcgRlJBTUUtQ0hBUkFDVEVSIGluIHRoZSBib3JkZXIuCisjCisjIFF1YWRy
aWdyYXBocyBhcmUgY29ycmVjdGx5IHJlY29nbml6ZWQuICBNb3JlIHByZWNpc2VseSwgeW91IG1h
eQorIyByZWRlZmluZSBtNF9xbGVuIHRvIHJlY29nbml6ZSB3aGF0ZXZlciBlc2NhcGUgc2VxdWVu
Y2VzIHRoYXQgeW91CisjIHdpbGwgcG9zdC1wcm9jZXNzLgorbTRfZGVmaW5lKFttNF90ZXh0X2Jv
eF0sCitbbTRfcHVzaGRlZihbbTRfQm9yZGVyXSwKKwkgICAgbTRfdHJhbnNsaXQobTRfZm9ybWF0
KFtbWyUqc11dXSwgbTRfZGVjcihtNF9xbGVuKF9tNF9leHBhbmQoWyQxCitdKSkpLCBbXSksIFsg
XSwgbTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWy1dKSkpXWRubAorW1sjI10gX200X2RlZm4oW200
X0JvcmRlcl0pIFsjI10KK1sjI10gJDEgWyMjXQorWyMjXSBfbTRfZGVmbihbbTRfQm9yZGVyXSkg
WyMjXV9tNF9wb3BkZWYoW200X0JvcmRlcl0pXSkKKworCisjIG00X3FsZW4oU1RSSU5HKQorIyAt
LS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kcyB0byB0aGUgbGVuZ3RoIG9mIFNUUklORyBhZnRlciBh
dXRvbTR0ZSBjb252ZXJ0cyBhbGwgcXVhZHJpZ3JhcGhzLgorIworIyBJZiB5b3UgdXNlIHNvbWUg
b3RoZXIgbWVhbnMgb2YgcG9zdC1wcm9jZXNzaW5nIG00IG91dHB1dCByYXRoZXIgdGhhbgorIyBh
dXRvbTR0ZSwgdGhlbiB5b3UgbWF5IHJlZGVmaW5lIHRoaXMgbWFjcm8gdG8gcmVjb2duaXplIHdo
YXRldmVyCisjIGVzY2FwZSBzZXF1ZW5jZXMgeW91ciBwb3N0LXByb2Nlc3NvciB3aWxsIGhhbmRs
ZS4gIEZvciB0aGF0IG1hdHRlciwKKyMgbTRfZGVmaW5lKFttNF9xbGVuXSwgbTRfZGVmbihbbTRf
bGVuXSkpIGlzIHN1ZmZpY2llbnQgaWYgeW91IGRvbid0CisjIGRvIGFueSBwb3N0LXByb2Nlc3Np
bmcuCisjCisjIEF2b2lkIGJwYXRzdWJzdHMgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBubyBxdWFk
cmlncmFwaHMuICBDYWNoZQorIyByZXN1bHRzLCBhcyBjb25maWd1cmUgc2NyaXB0cyB0ZW5kIHRv
IGFzayBhYm91dCBsZW5ndGhzIG9mIGNvbW1vbgorIyBzdHJpbmdzIGxpa2UgYC8qJyBhbmQgYCov
JyByYXRoZXIgZnJlcXVlbnRseS4gIE1pbmltaXplIHRoZSBudW1iZXIKKyMgb2YgdGltZXMgdGhh
dCAkMSBvY2N1cnMgaW4gbTRfcWxlbiwgc28gdGhlcmUgaXMgbGVzcyB0ZXh0IHRvIHBhcnNlCisj
IG9uIGEgY2FjaGUgaGl0LgorbTRfZGVmaW5lKFttNF9xbGVuXSwKK1ttNF9pZmRlZihbJDAtJDFd
LCBbX200X2RlZm4oWyQwLV1dLCBbXyQwKF0pWyQxXSldKQorbTRfZGVmaW5lKFtfbTRfcWxlbl0s
CitbbTRfZGVmaW5lKFttNF9xbGVuLSQxXSwKK200X2lmKG00X2luZGV4KFskMV0sIFtAXSksIFst
MV0sIFttNF9sZW4oWyQxXSldLAorICAgICAgW200X2xlbihtNF9icGF0c3Vic3QoW1skMV1dLAor
CQkJICAgW0BcKFwoPDpcfDo+XHxTfFx8JTpcfFx7Olx8Olx9XClcKEBcKVx8JnRAXCldLAorCQkJ
ICAgW1wzXSkpXSkpX200X2RlZm4oW200X3FsZW4tJDFdKV0pCisKKyMgbTRfY29weXJpZ2h0X2Nv
bmRlbnNlKFRFWFQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb25kZW5zZSB0
aGUgY29weXJpZ2h0IG5vdGljZSBpbiBURVhUIHRvIG9ubHkgZGlzcGxheSB0aGUgZmluYWwKKyMg
eWVhciwgd3JhcHBpbmcgdGhlIHJlc3VsdHMgdG8gZml0IGluIDgwIGNvbHVtbnMuCittNF9kZWZp
bmUoW200X2NvcHlyaWdodF9jb25kZW5zZV0sCitbbTRfdGV4dF93cmFwKG00X2JwYXRzdWJzdCht
NF9mbGF0dGVuKFtbJDFdXSksCitbKEMpWy0JICwwLTldKlwoWzEtOV1bMC05XVswLTldWzAtOV1c
KV0sIFsoQykgXDFdKSldKQorCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgMTMu
IE51bWJlciBwcm9jZXNzaW5nLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisK
KyMgbTRfY21wKEEsIEIpCisjIC0tLS0tLS0tLS0tLQorIyBDb21wYXJlIHR3byBpbnRlZ2VyIGV4
cHJlc3Npb25zLgorIyBBIDwgQiAtPiAtMQorIyBBID0gQiAtPiAgMAorIyBBID4gQiAtPiAgMQor
bTRfZGVmaW5lKFttNF9jbXBdLAorW200X2V2YWwoKChbJDFdKSA+IChbJDJdKSkgLSAoKFskMV0p
IDwgKFskMl0pKSldKQorCisKKyMgbTRfbGlzdF9jbXAoQSwgQikKKyMgLS0tLS0tLS0tLS0tLS0t
LS0KKyMKKyMgQ29tcGFyZSB0aGUgdHdvIGxpc3RzIG9mIGludGVnZXIgZXhwcmVzc2lvbnMgQSBh
bmQgQi4gIEZvciBpbnN0YW5jZToKKyMgICBtNF9saXN0X2NtcChbMSwgMF0sICAgICBbMV0pICAg
IC0+ICAwCisjICAgbTRfbGlzdF9jbXAoWzEsIDBdLCAgICAgWzEsIDBdKSAtPiAgMAorIyAgIG00
X2xpc3RfY21wKFsxLCAyXSwgICAgIFsxLCAwXSkgLT4gIDEKKyMgICBtNF9saXN0X2NtcChbMSwg
MiwgM10sICBbMSwgMl0pIC0+ICAxCisjICAgbTRfbGlzdF9jbXAoWzEsIDIsIC0zXSwgWzEsIDJd
KSAtPiAtMQorIyAgIG00X2xpc3RfY21wKFsxLCAwXSwgICAgIFsxLCAyXSkgLT4gLTEKKyMgICBt
NF9saXN0X2NtcChbMV0sICAgICAgICBbMSwgMl0pIC0+IC0xCisjICAgbTRfZGVmaW5lKFt4YV0s
IFtvb3BzXSlkbmwKKyMgICBtNF9saXN0X2NtcChbWzB4YV1dLCAgICBbNSs1XSkgIC0+IDAKKyMK
KyMgUmF0aGVyIHRoYW4gZmFjZSB0aGUgb3ZlcmhlYWQgb2YgbTRfY2FzZSwgd2UgdXNlIGEgaGVs
cGVyIGZ1bmN0aW9uIHdob3NlCisjIGV4cGFuc2lvbiBpbmNsdWRlcyB0aGUgbmFtZSBvZiB0aGUg
bWFjcm8gdG8gaW52b2tlIG9uIHRoZSB0YWlsLCBlaXRoZXIKKyMgbTRfaWdub3JlIG9yIG00X3Vu
cXVvdGUuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBjb21wYXJpbmcKKyMgbG9u
ZyBsaXN0cywgc2luY2UgbGVzcyB0ZXh0IGlzIGJlaW5nIGV4cGFuZGVkIGZvciBkZWNpZGluZyB3
aGVuIHRvIGVuZAorIyByZWN1cnNpb24uICBUaGUgcmVjdXJzaW9uIGlzIGJldHdlZW4gYSBwYWly
IG9mIG1hY3JvcyB0aGF0IGFsdGVybmF0ZQorIyB3aGljaCBsaXN0IGlzIHRyaW1tZWQgYnkgb25l
IGVsZW1lbnQ7IHRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbgorIyBjYWxsaW5nIG00X2NkciBv
biBib3RoIGxpc3RzIGZyb20gYSBzaW5nbGUgbWFjcm8uICBHdWFyYW50ZWUgZXhhY3RseQorIyBv
bmUgZXhwYW5zaW9uIG9mIGJvdGggbGlzdHMnIHNpZGUgZWZmZWN0cy4KKyMKKyMgUGxlYXNlIGtl
ZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200
X2RlZmluZShbbTRfbGlzdF9jbXBdLAorW18kMF9yYXcobTRfZHF1b3RlKCQxKSwgbTRfZHF1b3Rl
KCQyKSldKQorCittNF9kZWZpbmUoW19tNF9saXN0X2NtcF9yYXddLAorW200X2lmKFskMV0sIFsk
Ml0sIFswXSwgW19tNF9saXN0X2NtcF8xKFskMV0sICQyKV0pXSkKKworbTRfZGVmaW5lKFtfbTRf
bGlzdF9jbXBdLAorW200X2lmKFskMV0sIFtdLCBbMG00X2lnbm9yZV0sIFskMl0sIFswXSwgW200
X3VucXVvdGVdLCBbJDJtNF9pZ25vcmVdKV0pCisKK200X2RlZmluZShbX200X2xpc3RfY21wXzFd
LAorW19tNF9saXN0X2NtcF8yKFskMl0sIFttNF9zaGlmdDIoJEApXSwgJDEpXSkKKworbTRfZGVm
aW5lKFtfbTRfbGlzdF9jbXBfMl0sCitbX200X2xpc3RfY21wKFskMSQzXSwgbTRfY21wKFskMysw
XSwgWyQxKzBdKSkoCisgIFtfbTRfbGlzdF9jbXBfMShtNF9kcXVvdGUobTRfc2hpZnQzKCRAKSks
ICQyKV0pXSkKKworIyBtNF9tYXgoRVhQUiwgLi4uKQorIyBtNF9taW4oRVhQUiwgLi4uKQorIyAt
LS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gdGhlIGRlY2ltYWwgdmFsdWUgb2YgdGhlIG1heGlt
dW0gKG9yIG1pbmltdW0pIGluIGEgc2VyaWVzIG9mCisjIGludGVnZXIgZXhwcmVzc2lvbnMuCisj
CisjIE00IDEuNC54IGRvZXNuJ3QgcHJvdmlkZSA/Oi4gIEhlbmNlIHRoaXMgaHVnZSBtNF9ldmFs
LiAgQXZvaWQgbTRfZXZhbAorIyBpZiBib3RoIGFyZ3VtZW50cyBhcmUgaWRlbnRpY2FsLCBidXQg
YmUgYXdhcmUgb2YgbTRfbWF4KDB4YSwgMTApIChoZW5jZQorIyB0aGUgdXNlIG9mIDw9LCBub3Qg
anVzdCA8LCBpbiB0aGUgc2Vjb25kIG11bHRpcGx5KS4KKyMKKyMgUGxlYXNlIGtlZXAgZm9yZWFj
aC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200X2RlZmluZShb
bTRfbWF4XSwKK1ttNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbdG9vIGZldyBhcmd1bWVudHMg
dG8gJDBdKV0sCisgICAgICAgWyQjXSwgWzFdLCBbbTRfZXZhbChbJDFdKV0sCisgICAgICAgWyQj
JDFdLCBbMiQyXSwgW200X2V2YWwoWyQxXSldLAorICAgICAgIFskI10sIFsyXSwgW18kMCgkQCld
LAorICAgICAgIFtfbTRfbWlubWF4KFtfJDBdLCAkQCldKV0pCisKK200X2RlZmluZShbX200X21h
eF0sCitbbTRfZXZhbCgoKFskMV0pID4gKFskMl0pKSAqIChbJDFdKSArICgoWyQxXSkgPD0gKFsk
Ml0pKSAqIChbJDJdKSldKQorCittNF9kZWZpbmUoW200X21pbl0sCitbbTRfaWYoWyQjXSwgWzBd
LCBbbTRfZmF0YWwoW3RvbyBmZXcgYXJndW1lbnRzIHRvICQwXSldLAorICAgICAgIFskI10sIFsx
XSwgW200X2V2YWwoWyQxXSldLAorICAgICAgIFskIyQxXSwgWzIkMl0sIFttNF9ldmFsKFskMV0p
XSwKKyAgICAgICBbJCNdLCBbMl0sIFtfJDAoJEApXSwKKyAgICAgICBbX200X21pbm1heChbXyQw
XSwgJEApXSldKQorCittNF9kZWZpbmUoW19tNF9taW5dLAorW200X2V2YWwoKChbJDFdKSA8IChb
JDJdKSkgKiAoWyQxXSkgKyAoKFskMV0pID49IChbJDJdKSkgKiAoWyQyXSkpXSkKKworIyBfbTRf
bWlubWF4KE1FVEhPRCwgQVJHMSwgQVJHMi4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIENvbW1vbiByZWN1cnNpb24gY29kZSBmb3IgbTRfbWF4IGFuZCBtNF9taW4u
ICBNRVRIT0QgbXVzdCBiZSBfbTRfbWF4CisjIG9yIF9tNF9taW4sIGFuZCB0aGVyZSBtdXN0IGJl
IGF0IGxlYXN0IHR3byBhcmd1bWVudHMgdG8gY29tYmluZS4KKyMKKyMgUGxlYXNlIGtlZXAgZm9y
ZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200X2RlZmlu
ZShbX200X21pbm1heF0sCitbbTRfaWYoWyQjXSwgWzNdLCBbJDEoWyQyXSwgWyQzXSldLAorICAg
ICAgIFskMChbJDFdLCAkMShbJDJdLCBbJDNdKSwgbTRfc2hpZnQzKCRAKSldKV0pCisKKworIyBt
NF9zaWduKEEpCisjIC0tLS0tLS0tLS0KKyMgVGhlIHNpZ24gb2YgdGhlIGludGVnZXIgZXhwcmVz
c2lvbiBBLgorbTRfZGVmaW5lKFttNF9zaWduXSwKK1ttNF9ldmFsKCgoWyQxXSkgPiAwKSAtICgo
WyQxXSkgPCAwKSldKQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyAx
NC4gVmVyc2lvbiBwcm9jZXNzaW5nLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj
IworCisKKyMgbTRfdmVyc2lvbl91bmxldHRlcihWRVJTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIE5vcm1hbGl6ZSBiZXRhIHZlcnNpb24gbnVtYmVycyB3aXRoIGxldHRl
cnMgdG8gbnVtZXJpYyBleHByZXNzaW9ucywgd2hpY2gKKyMgY2FuIHRoZW4gYmUgaGFuZGVkIHRv
IG00X2V2YWwgZm9yIHRoZSBwdXJwb3NlIG9mIGNvbXBhcmlzb24uCisjCisjICAgTmwgLT4gKE4r
MSkuLTEuKGwjKQorIworIyBmb3IgZXhhbXBsZToKKyMgICBbMi4xNGFdIC0+IFswLDIsMTQrMSwt
MSxbMHIzNjphXV0gLT4gMi4xNS4tMS4xMAorIyAgIFsyLjE0Yl0gLT4gWzAsMiwxNSsxLC0xLFsw
cjM2OmJdXSAtPiAyLjE1Li0xLjExCisjICAgWzIuNjFhYS5iXSAtPiBbMCwyLjYxLDEsLTEsWzBy
MzY6YWFdLCsxLC0xLFswcjM2OmJdXSAtPiAyLjYyLi0xLjM3MC4xLi0xLjExCisjICAgWzA4XSAt
PiBbMCxbMHIxMDowXThdIC0+IDgKKyMKKyMgVGhpcyBtYWNybyBleHBlY3RzIHJlYXNvbmFibGUg
dmVyc2lvbiBudW1iZXJzLCBidXQgY2FuIGhhbmRsZSBkb3VibGUKKyMgbGV0dGVycyBhbmQgZG9l
cyBub3QgZXhwYW5kIGFueSBtYWNyb3MuICBPcmlnaW5hbCB2ZXJzaW9uIHN0cmluZ3MgY2FuCisj
IHVzZSBib3RoIGAuJyBhbmQgYC0nIHNlcGFyYXRvcnMuCisjCisjIElubGluZSBjb25zdGFudCBl
eHBhbnNpb25zLCB0byBhdm9pZCBtNF9kZWZuIG92ZXJoZWFkLgorIyBfbTRfdmVyc2lvbl91bmxl
dHRlciBpcyB0aGUgcmVhbCB3b3JraG9yc2UgdXNlZCBieSBtNF92ZXJzaW9uX2NvbXBhcmUsCisj
IGJ1dCBzaW5jZSBbMHIzNjphXSBhbmQgY29tbWFzIGFyZSBsZXNzIHJlYWRhYmxlIHRoYW4gMTAg
YW5kIGRvdHMsIHdlCisjIHByb3ZpZGUgYSB3cmFwcGVyIGZvciBodW1hbiB1c2UuCittNF9kZWZp
bmUoW200X3ZlcnNpb25fdW5sZXR0ZXJdLAorW200X3N1YnN0cihtNF9tYXBfYXJncyhbLm00X2V2
YWxdLCBtNF91bnF1b3RlKF8kMChbJDFdKSkpLCBbM10pXSkKK200X2RlZmluZShbX200X3ZlcnNp
b25fdW5sZXR0ZXJdLAorW200X2JwYXRzdWJzdChtNF9icGF0c3Vic3QobTRfdHJhbnNsaXQoW1tb
WzAsJDFdXV1dLCBbLi1dLCBbLCxdKSxdZG5sCittNF9kcXVvdGUobTRfZHF1b3RlKG00X2RlZm4o
W200X2NyX0xldHRlcnNdKSkpW1srXSwKKwkgICAgICBbKzEsLTEsWzByMzY6XCZdXSksIFssMF0s
IFssWzByMTA6MF1dKV0pCisKKworIyBtNF92ZXJzaW9uX2NvbXBhcmUoVkVSU0lPTi0xLCBWRVJT
SU9OLTIpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29t
cGFyZSB0aGUgdHdvIHZlcnNpb24gbnVtYmVycyBhbmQgZXhwYW5kIGludG8KKyMgIC0xIGlmIFZF
UlNJT04tMSA8IFZFUlNJT04tMgorIyAgIDAgaWYgICAgICAgICAgID0KKyMgICAxIGlmICAgICAg
ICAgICA+CisjCisjIFNpbmNlIF9tNF92ZXJzaW9uX3VubGV0dGVyIGRvZXMgbm90IG91dHB1dCBz
aWRlIGVmZmVjdHMsIHdlIGNhbgorIyBzYWZlbHkgYnlwYXNzIHRoZSBvdmVyaGVhZCBvZiBtNF92
ZXJzaW9uX2NtcC4KK200X2RlZmluZShbbTRfdmVyc2lvbl9jb21wYXJlXSwKK1tfbTRfbGlzdF9j
bXBfcmF3KF9tNF92ZXJzaW9uX3VubGV0dGVyKFskMV0pLCBfbTRfdmVyc2lvbl91bmxldHRlcihb
JDJdKSldKQorCisKKyMgbTRfUEFDS0FHRV9OQU1FCisjIG00X1BBQ0tBR0VfVEFSTkFNRQorIyBt
NF9QQUNLQUdFX1ZFUlNJT04KKyMgbTRfUEFDS0FHRV9TVFJJTkcKKyMgbTRfUEFDS0FHRV9CVUdS
RVBPUlQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgbTRzdWdhci92ZXJzaW9uLm00IGlz
IHByZXNlbnQsIHRoZW4gZGVmaW5lIHZlcnNpb24gc3RyaW5ncy4gIFRoaXMKKyMgZmlsZSBpcyBv
cHRpb25hbCwgcHJvdmlkZWQgYnkgQXV0b2NvbmYgYnV0IGFic2VudCBpbiBCaXNvbi4KK200X3Np
bmNsdWRlKFttNHN1Z2FyL3ZlcnNpb24ubTRdKQorCisKKyMgbTRfdmVyc2lvbl9wcmVyZXEoVkVS
U0lPTiwgW0lGLU9LXSwgW0lGLU5PVCA9IEZBSUxdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHRoaXMgQXV0b2NvbmYgdmVy
c2lvbiBhZ2FpbnN0IFZFUlNJT04uCittNF9kZWZpbmUoW200X3ZlcnNpb25fcHJlcmVxXSwKK200
X2lmZGVmKFttNF9QQUNLQUdFX1ZFUlNJT05dLAorW1ttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUo
XW00X2RxdW90ZShtNF9kZWZuKFttNF9QQUNLQUdFX1ZFUlNJT05dKSlbLCBbJDFdKSwKKwlbLTFd
LAorCVttNF9kZWZhdWx0KFskM10sCisJCSAgICBbbTRfZmF0YWwoW0F1dG9jb25mIHZlcnNpb24g
JDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkXSwKKwkJCSAgICAgIFs2M10pXSldLAorCVskMl0pXV0s
CitbW200X2ZhdGFsKFttNHN1Z2FyL3ZlcnNpb24ubTQgbm90IGZvdW5kXSldXSkpCisKKworIyMg
LS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyAxNS4gU2V0IGhhbmRsaW5nLiAgIyMKKyMjIC0tLS0t
LS0tLS0tLS0tLS0tLSAjIworCisjIEF1dG9jb25mIGxpa2VzIHRvIGNyZWF0ZSBhcmJpdHJhcmls
eSBsYXJnZSBzZXRzOyBmb3IgZXhhbXBsZSwgYXMgb2YKKyMgdGhpcyB3cml0aW5nLCB0aGUgY29u
ZmlndXJlLmFjIGZvciBjb3JldXRpbHMgdHJhY2tzIGEgc2V0IG9mIG1vcmUKKyMgdGhhbiA0MDAg
QUNfU1VCU1QuICBIb3cgZG8gd2UgdHJhY2sgYWxsIG9mIHRoZXNlIHNldCBtZW1iZXJzLAorIyB3
aXRob3V0IGludHJvZHVjaW5nIGR1cGxpY2F0ZXM/ICBXZSBjb3VsZCB1c2UgbTRfYXBwZW5kX3Vu
aXEsIHdpdGgKKyMgdGhlIHNldCBOQU1FIHJlc2lkaW5nIGluIHRoZSBjb250ZW50cyBvZiB0aGUg
bWFjcm8gTkFNRS4KKyMgVW5mb3J0dW5hdGVseSwgbTRfYXBwZW5kX3VuaXEgaXMgcXVhZHJhdGlj
IGZvciBzZXQgY3JlYXRpb24sIGJlY2F1c2UKKyMgaXQgY29zdHMgTyhuKSB0byBzZWFyY2ggdGhl
IHN0cmluZyBmb3IgZWFjaCBvZiBPKG4pIGluc2VydGlvbnM7IG5vdAorIyB0byBtZW50aW9uIHRo
YXQgd2l0aCBtNCAxLjQueCwgZXZlbiB1c2luZyBtNF9hcHBlbmQgaXMgc2xvdywgY29zdGluZwor
IyBPKG4pIHJhdGhlciB0aGFuIE8oMSkgcGVyIGluc2VydGlvbi4gIE90aGVyIHNldCBvcGVyYXRp
b25zLCBub3QgdXNlZAorIyBieSBBdXRvY29uZiBidXQgc3RpbGwgcG9zc2libGUgYnkgbWFuaXB1
bGF0aW9uIG9mIHRoZSBkZWZpbml0aW9uCisjIHRyYWNrZWQgaW4gbWFjcm8gTkFNRSwgaW5jbHVk
ZSBPKG4pIGRlbGV0aW9uIG9mIG9uZSBlbGVtZW50IGFuZCBPKG4pCisjIGNvbXB1dGF0aW9uIG9m
IHNldCBzaXplLiAgQmVjYXVzZSB0aGUgc2V0IGlzIGV4cG9zZWQgdG8gdGhlIHVzZXIgdmlhCisj
IHRoZSBkZWZpbml0aW9uIG9mIGEgc2luZ2xlIG1hY3JvLCB3ZSBjYW5ub3QgY2FjaGUgYW55IGRh
dGEgYWJvdXQgdGhlCisjIHNldCB3aXRob3V0IHJpc2tpbmcgdGhlIGNhY2hlIGJlaW5nIGludmFs
aWRhdGVkIGJ5IHRoZSB1c2VyCisjIHJlZGVmaW5pbmcgTkFNRS4KKyMKKyMgQ2FuIHdlIGRvIGJl
dHRlcj8gIFllcywgYmVjYXVzZSBtNCBnaXZlcyB1cyBhbiBPKDEpIHNlYXJjaCBmdW5jdGlvbgor
IyBmb3IgZnJlZTogaWZkZWYuICBBZGRpdGlvbmFsbHksIGV2ZW4gbTQgMS40LnggZ2l2ZXMgdXMg
YW4gTygxKQorIyBpbnNlcnQgb3BlcmF0aW9uIGZvciBmcmVlOiBwdXNoZGVmLiAgQnV0IHRvIHVz
ZSB0aGVzZSwgd2UgbXVzdAorIyByZXByZXNlbnQgdGhlIHNldCB2aWEgYSBncm91cCBvZiBtYWNy
b3M7IHRvIGtlZXAgdGhlIHNldCBjb25zaXN0ZW50LAorIyB3ZSBtdXN0IGhpZGUgdGhlIHNldCBz
byB0aGF0IHRoZSB1c2VyIGNhbiBvbmx5IG1hbmlwdWxhdGUgaXQgdGhyb3VnaAorIyBhY2Nlc3Nv
ciBtYWNyb3MuICBUaGUgY29udGVudHMgb2YgdGhlIHNldCBhcmUgbWFpbnRhaW5lZCB0aHJvdWdo
IHR3bworIyBhY2Nlc3MgcG9pbnRzOyBfbTRfc2V0KFtuYW1lXSkgaXMgYSBwdXNoZGVmIHN0YWNr
IG9mIHZhbHVlcyBpbiB0aGUKKyMgc2V0LCB1c2VmdWwgZm9yIE8obikgdHJhdmVyc2FsIG9mIHRo
ZSBzZXQgY29udGVudHM7IHdoaWxlIHRoZQorIyBleGlzdGVuY2Ugb2YgX200X3NldChbbmFtZV0s
dmFsdWUpIHdpdGggbm8gcGFydGljdWxhciB2YWx1ZSBpcworIyB1c2VmdWwgZm9yIE8oMSkgcXVl
cnlpbmcgb2Ygc2V0IG1lbWJlcnNoaXAuICBBbmQgc2luY2UgdGhlIHVzZXIKKyMgY2Fubm90IGV4
dGVybmFsbHkgbWFuaXB1bGF0ZSB0aGUgc2V0LCB3ZSBhcmUgZnJlZSB0byBhZGQgYWRkaXRpb25h
bAorIyBjYWNoaW5nIG1hY3JvcyBmb3Igb3RoZXIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiAg
RGVsZXRpb24gY2FuIGJlCisjIE8oMSkgcGVyIGVsZW1lbnQgcmF0aGVyIHRoYW4gTyhuKSwgYnkg
cmV3b3JraW5nIHRoZSBkZWZpbml0aW9uIG9mCisjIF9tNF9zZXQoW25hbWVdLHZhbHVlKSB0byBi
ZSAwIG9yIDEgYmFzZWQgb24gY3VycmVudCBtZW1iZXJzaGlwLCBhbmQKKyMgYWRkaW5nIF9tNF9z
ZXRfY2xlYW51cChuYW1lKSB0byBkZWZlciB0aGUgTyhuKSBjbGVhbnVwIG9mCisjIF9tNF9zZXQo
W25hbWVdKSB1bnRpbCB3ZSBoYXZlIGFub3RoZXIgcmVhc29uIHRvIGRvIGFuIE8obikKKyMgdHJh
dmVyc2FsLiAgVGhlIGV4aXN0ZW5jZSBvZiBfbTRfc2V0X2NsZWFudXAobmFtZSkgY2FuIHRoZW4g
YmUgdXNlZAorIyBlbHNld2hlcmUgdG8gZGV0ZXJtaW5lIGlmIHdlIG11c3QgZGVyZWZlcmVuY2Ug
X200X3NldChbbmFtZV0sdmFsdWUpLAorIyBvciBhc3N1bWUgdGhhdCBkZWZpbml0aW9uIGltcGxp
ZXMgc2V0IG1lbWJlcnNoaXAuICBGaW5hbGx5LCBzaXplIGNhbgorIyBiZSB0cmFja2VkIGluIGFu
IE8oMSkgZmFzaGlvbiB3aXRoIF9tNF9zZXRfc2l6ZShuYW1lKS4KKyMKKyMgVGhlIHF1b3Rpbmcg
aW4gX200X3NldChbbmFtZV0sdmFsdWUpIGlzIGNob3NlbiBzbyB0aGF0IHRoZXJlIGlzIG5vCisj
IGFtYmlndWl0eSB3aXRoIGEgc2V0IHdob3NlIG5hbWUgY29udGFpbnMgYSBjb21tYSwgYW5kIHNv
IHRoYXQgd2UgY2FuCisjIHN1cHBseSB0aGUgdmFsdWUgdmlhIF9tNF9kZWZuKFtfbTRfc2V0KFtu
YW1lXSldKSB3aXRob3V0IG5lZWRpbmcgYW55CisjIHF1b3RlIG1hbmlwdWxhdGlvbi4KKworIyBt
NF9zZXRfYWRkKFNFVCwgVkFMVUUsIFtJRi1VTklRXSwgW0lGLURVUF0pCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQWRkIFZBTFVFIGFzIGFuIGVsZW1l
bnQgb2YgU0VULiAgRXhwYW5kIElGLVVOSVEgb24gdGhlIGZpcnN0CisjIGFkZGl0aW9uLCBhbmQg
SUYtRFVQIGlmIGl0IGlzIGFscmVhZHkgaW4gdGhlIHNldC4gIEFkZGl0aW9uIG9mIG9uZQorIyBl
bGVtZW50IGlzIE8oMSksIHN1Y2ggdGhhdCBvdmVyYWxsIHNldCBjcmVhdGlvbiBpcyBPKG4pLgor
IworIyBXZSBkbyBub3Qgd2FudCB0byBhZGQgYSBkdXBsaWNhdGUgZm9yIGEgcHJldmlvdXNseSBk
ZWxldGVkIGJ1dAorIyB1bnBydW5lZCBlbGVtZW50LCBidXQgaXQgaXMganVzdCBhcyBlYXN5IHRv
IGNoZWNrIGV4aXN0ZW5jZSBkaXJlY3RseQorIyBhcyBpdCBpcyB0byBxdWVyeSBfbTRfc2V0X2Ns
ZWFudXAoJDEpLgorbTRfZGVmaW5lKFttNF9zZXRfYWRkXSwKK1ttNF9pZmRlZihbX200X3NldChb
JDFdLCQyKV0sCisJICBbbTRfaWYobTRfaW5kaXIoW19tNF9zZXQoWyQxXSwkMildKSwgWzBdLAor
CQkgW200X2RlZmluZShbX200X3NldChbJDFdLCQyKV0sCisJCQkgICAgWzFdKV9tNF9zZXRfc2l6
ZShbJDFdLCBbbTRfaW5jcl0pJDNdLCBbJDRdKV0sCisJICBbbTRfZGVmaW5lKFtfbTRfc2V0KFsk
MV0sJDIpXSwKKwkJICAgICBbMV0pbTRfcHVzaGRlZihbX200X3NldChbJDFdKV0sCisJCQkJICAg
IFskMl0pX200X3NldF9zaXplKFskMV0sIFttNF9pbmNyXSkkM10pXSkKKworIyBtNF9zZXRfYWRk
X2FsbChTRVQsIFZBTFVFLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBB
ZGQgZWFjaCBWQUxVRSBpbnRvIFNFVC4gIFRoaXMgaXMgTyhuKSBpbiB0aGUgbnVtYmVyIG9mIFZB
TFVFcywgYW5kCisjIGNhbiBiZSBmYXN0ZXIgdGhhbiBjYWxsaW5nIG00X3NldF9hZGQgZm9yIGVh
Y2ggVkFMVUUuCisjCisjIEltcGxlbWVudCB0d28gcmVjdXJzaW9uIGhlbHBlcnM7IHRoZSBjaGVj
ayB2YXJpYW50IGlzIHNsb3dlciBidXQKKyMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBhbiBlbGVt
ZW50IGhhcyBwcmV2aW91c2x5IGJlZW4gcmVtb3ZlZCBidXQKKyMgbm90IHBydW5lZC4gIFRoZSBy
ZWN1cnNpb24gaGVscGVycyBpZ25vcmUgdGhlaXIgc2Vjb25kIGFyZ3VtZW50LCBzbworIyB0aGF0
IHdlIGNhbiB1c2UgdGhlIGZhc3RlciBtNF9zaGlmdDIgYW5kIDIgYXJndW1lbnRzLCByYXRoZXIg
dGhhbgorIyBfbTRfc2hpZnQyIGFuZCBvbmUgYXJndW1lbnQsIGFzIHRoZSBzaWduYWwgdG8gZW5k
IHJlY3Vyc2lvbi4KKyMKKyMgUGxlYXNlIGtlZXAgZm9yZWFjaC5tNCBpbiBzeW5jIHdpdGggYW55
IGFkanVzdG1lbnRzIG1hZGUgaGVyZS4KK200X2RlZmluZShbbTRfc2V0X2FkZF9hbGxdLAorW200
X2RlZmluZShbX200X3NldF9zaXplKCQxKV0sIG00X2V2YWwobTRfc2V0X3NpemUoWyQxXSkKKyAg
KyBtNF9sZW4obTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLCBbXyQwX2NoZWNrXSwgW18k
MF0pKFskMV0sICRAKSkpKV0pCisKK200X2RlZmluZShbX200X3NldF9hZGRfYWxsXSwKK1ttNF9p
ZihbJCNdLCBbMl0sIFtdLAorICAgICAgIFttNF9pZmRlZihbX200X3NldChbJDFdLCQzKV0sIFtd
LAorCQkgW200X2RlZmluZShbX200X3NldChbJDFdLCQzKV0sIFsxXSltNF9wdXNoZGVmKFtfbTRf
c2V0KFskMV0pXSwKKwkgICBbJDNdKS1dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSldKQorCitt
NF9kZWZpbmUoW19tNF9zZXRfYWRkX2FsbF9jaGVja10sCitbbTRfaWYoWyQjXSwgWzJdLCBbXSwK
KyAgICAgICBbbTRfc2V0X2FkZChbJDFdLCBbJDNdKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSld
KQorCisjIG00X3NldF9jb250YWlucyhTRVQsIFZBTFVFLCBbSUYtUFJFU0VOVF0sIFtJRi1BQlNF
TlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgRXhwYW5kIElGLVBSRVNFTlQgaWYgU0VUIGNvbnRhaW5zIFZBTFVFLCBvdGhlcndp
c2UgZXhwYW5kIElGLUFCU0VOVC4KKyMgVGhpcyBpcyBhbHdheXMgTygxKS4KK200X2RlZmluZShb
bTRfc2V0X2NvbnRhaW5zXSwKK1ttNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCisJICBb
bTRfaWYobTRfaWZkZWYoW19tNF9zZXQoWyQxXSwkMildLAorCQkgICAgW200X2luZGlyKFtfbTRf
c2V0KFskMV0sJDIpXSldLCBbMF0pLCBbMV0sIFskM10sIFskNF0pXSwKKwkgIFttNF9pZmRlZihb
X200X3NldChbJDFdLCQyKV0sIFskM10sIFskNF0pXSldKQorCisjIG00X3NldF9jb250ZW50cyhT
RVQsIFtTRVBdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIHRvIGEg
c2luZ2xlIHN0cmluZyBjb250YWluaW5nIGFsbCB0aGUgZWxlbWVudHMgaW4gU0VULAorIyBzZXBh
cmF0ZWQgYnkgU0VQLCB3aXRob3V0IG1vZGlmeWluZyBTRVQuICBObyBwcm92aXNpb24gaXMgbWFk
ZSBmb3IKKyMgZGlzYW1iaWd1YXRpbmcgc2V0IGVsZW1lbnRzIHRoYXQgY29udGFpbiBub24tZW1w
dHkgU0VQIGFzIGEKKyMgc3ViLXN0cmluZywgb3IgZm9yIHJlY29nbml6aW5nIGEgc2V0IHRoYXQg
Y29udGFpbnMgb25seSB0aGUgZW1wdHkKKyMgc3RyaW5nLiAgT3JkZXIgb2YgdGhlIG91dHB1dCBp
cyBub3QgZ3VhcmFudGVlZC4gIElmIGFueSBlbGVtZW50cworIyBoYXZlIGJlZW4gcHJldmlvdXNs
eSByZW1vdmVkIGZyb20gdGhlIHNldCwgdGhpcyBhY3Rpb24gd2lsbCBwcnVuZQorIyB0aGUgdW51
c2VkIG1lbW9yeS4gIFRoaXMgaXMgTyhuKSBpbiB0aGUgc2l6ZSBvZiB0aGUgc2V0IGJlZm9yZQor
IyBwcnVuaW5nLgorIworIyBVc2UgX200X3BvcGRlZiBmb3Igc3BlZWQuICBUaGUgZXhpc3RlbmNl
IG9mIF9tNF9zZXRfY2xlYW51cCgkMSkKKyMgZGV0ZXJtaW5lcyB3aGljaCB2ZXJzaW9uIG9mIF8x
IGhlbHBlciB3ZSB1c2UuCittNF9kZWZpbmUoW200X3NldF9jb250ZW50c10sCitbbTRfc2V0X21h
cF9zZXAoWyQxXSwgW10sIFtdLCBbWyQyXV0pXSkKKworIyBfbTRfc2V0X2NvbnRlbnRzXzEoU0VU
KQorIyBfbTRfc2V0X2NvbnRlbnRzXzFjKFNFVCkKKyMgX200X3NldF9jb250ZW50c18yKFNFVCwg
W1BSRV0sIFtQT1NUXSwgW1NFUF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorIyBFeHBhbmQgdG8gYSBsaXN0IG9mIHF1b3RlZCBlbGVtZW50cyBjdXJy
ZW50bHkgaW4gdGhlIHNldCwgZWFjaAorIyBzdXJyb3VuZGVkIGJ5IFBSRSBhbmQgUE9TVCwgYW5k
IG1vdmluZyBTRVAgaW4gZnJvbnQgb2YgUFJFIG9uCisjIHJlY3Vyc2lvbi4gIFRvIGF2b2lkIG5l
c3RpbmcgbGltaXQgcmVzdHJpY3Rpb25zLCB0aGUgYWxnb3JpdGhtIG11c3QKKyMgYmUgYnJva2Vu
IGludG8gdHdvIHBhcnRzOyBfMSBkZXN0cnVjdGl2ZWx5IGNvcGllcyB0aGUgc3RhY2sgaW4KKyMg
cmV2ZXJzZSBpbnRvIF9tNF9zZXRfKCQxKSwgcHJvZHVjaW5nIG5vIG91dHB1dDsgdGhlbiBfMgor
IyBkZXN0cnVjdGl2ZWx5IGNvcGllcyBfbTRfc2V0XygkMSkgYmFjayBpbnRvIHRoZSBzdGFjayBp
biByZXZlcnNlLgorIyBJZiBubyBlbGVtZW50cyB3ZXJlIGRlbGV0ZWQsIHRoZW4gdGhpcyB2aXNp
dHMgdGhlIHNldCBpbiB0aGUgb3JkZXIKKyMgdGhhdCBlbGVtZW50cyB3ZXJlIGluc2VydGVkLiAg
QmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFBSRS9QT1NUL1NFUAorIyB0cmllcyB0byByZWN1cnNp
dmVseSBsaXN0IG9yIG1vZGlmeSBTRVQgaW4gYW55IHdheSBvdGhlciB0aGFuCisjIGNhbGxpbmcg
bTRfc2V0X3JlbW92ZSBvbiB0aGUgY3VycmVudCBlbGVtZW50LiAgVXNlIF8xIGlmIGFsbCBlbnRy
aWVzCisjIGluIHRoZSBzdGFjayBhcmUgZ3VhcmFudGVlZCB0byBiZSBpbiB0aGUgc2V0LCBhbmQg
XzFjIHRvIHBydW5lCisjIHJlbW92ZWQgZW50cmllcy4gIFVzZXMgX200X2RlZm4gYW5kIF9tNF9w
b3BkZWYgZm9yIHNwZWVkLgorbTRfZGVmaW5lKFtfbTRfc2V0X2NvbnRlbnRzXzFdLAorW19tNF9z
dGFja19yZXZlcnNlKFtfbTRfc2V0KFskMV0pXSwgW19tNF9zZXRfKCQxKV0pXSkKKworbTRfZGVm
aW5lKFtfbTRfc2V0X2NvbnRlbnRzXzFjXSwKK1ttNF9pZmRlZihbX200X3NldChbJDFdKV0sCisJ
ICBbbTRfc2V0X2NvbnRhaW5zKFskMV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSksCisJCSAg
IFttNF9wdXNoZGVmKFtfbTRfc2V0XygkMSldLCBfbTRfZGVmbihbX200X3NldChbJDFdKV0pKV0s
CisJCSAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKAorICAgICAgW19tNF9z
ZXQoWyQxXSldKVspXSldKV9tNF9wb3BkZWYoW19tNF9zZXQoWyQxXSldKSQwKFskMV0pXSwKKwkg
IFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKV0pCisKK200X2RlZmluZShbX200
X3NldF9jb250ZW50c18yXSwKK1tfbTRfc3RhY2tfcmV2ZXJzZShbX200X3NldF8oJDEpXSwgW19t
NF9zZXQoWyQxXSldLAorICBbJDJbXV9tNF9kZWZuKFtfbTRfc2V0XygkMSldKSQzXSwgWyQ0W11d
KV0pCisKKyMgbTRfc2V0X2RlbGV0ZShTRVQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWxl
dGUgYWxsIGVsZW1lbnRzIGluIFNFVCwgYW5kIHJlY2xhaW0gYW55IG1lbW9yeSBvY2N1cGllZCBi
eSB0aGUKKyMgc2V0LiAgVGhpcyBpcyBPKG4pIGluIHRoZSBzZXQgc2l6ZS4KKyMKKyMgVXNlIF9t
NF9kZWZuIGFuZCBfbTRfcG9wZGVmIGZvciBzcGVlZC4KK200X2RlZmluZShbbTRfc2V0X2RlbGV0
ZV0sCitbbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAorCSAgW19tNF9wb3BkZWYoW19tNF9zZXQo
WyQxXSxdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKVspXSwKKwkJICAgICAgW19tNF9zZXQoWyQx
XSldKSQwKFskMV0pXSwKKwkgIFttNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCisJCSAg
ICBbX200X3BvcGRlZihbX200X3NldF9jbGVhbnVwKCQxKV0pXSltNF9pZmRlZigKKwkJICAgIFtf
bTRfc2V0X3NpemUoJDEpXSwKKwkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X3NpemUoJDEpXSld
KV0pXSkKKworIyBtNF9zZXRfZGlmZmVyZW5jZShTRVQxLCBTRVQyKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBQcm9kdWNlIGEgTElTVCBvZiBxdW90ZWQgZWxlbWVudHMgdGhh
dCBvY2N1ciBpbiBTRVQxIGJ1dCBub3QgU0VUMi4KKyMgT3V0cHV0IGEgY29tbWEgcHJpb3IgdG8g
YW55IGVsZW1lbnRzLCB0byBkaXN0aW5ndWlzaCB0aGUgZW1wdHkKKyMgc3RyaW5nIGZyb20gbm8g
ZWxlbWVudHMuICBUaGlzIGNhbiBiZSBkaXJlY3RseSB1c2VkIGFzIGEgc2VyaWVzIG9mCisjIGFy
Z3VtZW50cywgc3VjaCBhcyBmb3IgbTRfam9pbiwgb3Igd3JhcHBlZCBpbnNpZGUgcXVvdGVzIGZv
ciB1c2UgaW4KKyMgbTRfZm9yZWFjaC4gIE9yZGVyIG9mIHRoZSBvdXRwdXQgaXMgbm90IGd1YXJh
bnRlZWQuCisjCisjIFNob3J0LWNpcmN1aXQgdGhlIGlkZW1wb3RlbmNlIHJlbGF0aW9uLgorbTRf
ZGVmaW5lKFttNF9zZXRfZGlmZmVyZW5jZV0sCitbbTRfaWYoWyQxXSwgWyQyXSwgW10sIFttNF9z
ZXRfbWFwX3NlcChbJDFdLCBbXyQwKFskMl0sXSwgWyldKV0pXSkKKworbTRfZGVmaW5lKFtfbTRf
c2V0X2RpZmZlcmVuY2VdLAorW200X3NldF9jb250YWlucyhbJDFdLCBbJDJdLCBbXSwgWyxbJDJd
XSldKQorCisjIG00X3NldF9kdW1wKFNFVCwgW1NFUF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIEV4cGFuZCB0byBhIHNpbmdsZSBzdHJpbmcgY29udGFpbmluZyBhbGwgdGhlIGVsZW1l
bnRzIGluIFNFVCwKKyMgc2VwYXJhdGVkIGJ5IFNFUCwgdGhlbiBkZWxldGUgU0VULiAgSW4gZ2Vu
ZXJhbCwgaWYgeW91IG9ubHkgbmVlZCB0bworIyBsaXN0IHRoZSBjb250ZW50cyBvbmNlLCB0aGlz
IGlzIGZhc3RlciB0aGFuIG00X3NldF9jb250ZW50cy4gIE5vCisjIHByb3Zpc2lvbiBpcyBtYWRl
IGZvciBkaXNhbWJpZ3VhdGluZyBzZXQgZWxlbWVudHMgdGhhdCBjb250YWluCisjIG5vbi1lbXB0
eSBTRVAgYXMgYSBzdWItc3RyaW5nLiAgT3JkZXIgb2YgdGhlIG91dHB1dCBpcyBub3QKKyMgZ3Vh
cmFudGVlZC4gIFRoaXMgaXMgTyhuKSBpbiB0aGUgc2l6ZSBvZiB0aGUgc2V0IGJlZm9yZSBwcnVu
aW5nLgorIworIyBVc2UgX200X3BvcGRlZiBmb3Igc3BlZWQuICBVc2UgZXhpc3RlbmNlIG9mIF9t
NF9zZXRfY2xlYW51cCgkMSkgdG8KKyMgZGVjaWRlIGlmIG1vcmUgZXhwZW5zaXZlIHJlY3Vyc2lv
biBpcyBuZWVkZWQuCittNF9kZWZpbmUoW200X3NldF9kdW1wXSwKK1ttNF9pZmRlZihbX200X3Nl
dF9zaXplKCQxKV0sCisJICBbX200X3BvcGRlZihbX200X3NldF9zaXplKCQxKV0pXSltNF9pZmRl
ZihbX200X3NldF9jbGVhbnVwKCQxKV0sCisgICAgW18kMF9jaGVja10sIFtfJDBdKShbJDFdLCBb
XSwgWyQyXSldKQorCisjIF9tNF9zZXRfZHVtcChTRVQsIFtTRVBdLCBbUFJFUF0pCisjIF9tNF9z
ZXRfZHVtcF9jaGVjayhTRVQsIFtTRVBdLCBbUFJFUF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFByaW50IFNFUCBhbmQgdGhlIGN1cnJlbnQgZWxlbWVudCwg
dGhlbiBkZWxldGUgdGhlIGVsZW1lbnQgYW5kCisjIHJlY3Vyc2Ugd2l0aCBlbXB0eSBTRVAgY2hh
bmdlZCB0byBQUkVQLiAgVGhlIGNoZWNrIHZhcmlhbnQgY2hlY2tzCisjIHdoZXRoZXIgdGhlIGVs
ZW1lbnQgaGFzIGJlZW4gcHJldmlvdXNseSByZW1vdmVkLiAgVXNlIF9tNF9kZWZuIGFuZAorIyBf
bTRfcG9wZGVmIGZvciBzcGVlZC4KK200X2RlZmluZShbX200X3NldF9kdW1wXSwKK1ttNF9pZmRl
ZihbX200X3NldChbJDFdKV0sCisJICBbWyQyXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlfbTRf
cG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKAorCQlbX200X3NldChbJDFdKV0pWyldLCBb
X200X3NldChbJDFdKV0pJDAoWyQxXSwgWyQyJDNdKV0pXSkKKworbTRfZGVmaW5lKFtfbTRfc2V0
X2R1bXBfY2hlY2tdLAorW200X2lmZGVmKFtfbTRfc2V0KFskMV0pXSwKKwkgIFttNF9zZXRfY29u
dGFpbnMoWyQxXSwgX200X2RlZm4oW19tNF9zZXQoWyQxXSldKSwKKwkJCSAgIFtbJDJdX200X2Rl
Zm4oW19tNF9zZXQoWyQxXSldKV0pX200X3BvcGRlZigKKyAgICBbX200X3NldChbJDFdLF1fbTRf
ZGVmbihbX200X3NldChbJDFdKV0pWyldLAorICAgIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdLCBb
JDIkM10pXSwKKwkgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKV0pCisKKyMg
bTRfc2V0X2VtcHR5KFNFVCwgW0lGLUVNUFRZXSwgW0lGLUVMRU1FTlRTXSkKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIElGLUVNUFRZIGlm
IFNFVCBoYXMgbm8gZWxlbWVudHMsIG90aGVyd2lzZSBJRi1FTEVNRU5UUy4KK200X2RlZmluZShb
bTRfc2V0X2VtcHR5XSwKK1ttNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sCisJICBbbTRfaWYo
bTRfaW5kaXIoW19tNF9zZXRfc2l6ZSgkMSldKSwgWzBdLCBbJDJdLCBbJDNdKV0sIFskMl0pXSkK
KworIyBtNF9zZXRfZm9yZWFjaChTRVQsIFZBUiwgQUNUSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBGb3IgZWFjaCBlbGVtZW50IG9mIFNFVCwgZGVmaW5lIFZBUiB0
byB0aGUgZWxlbWVudCBhbmQgZXhwYW5kCisjIEFDVElPTi4gIEFDVElPTiBzaG91bGQgbm90IHJl
Y3Vyc2l2ZWx5IGxpc3QgU0VUJ3MgY29udGVudHMsIGFkZAorIyBlbGVtZW50cyB0byBTRVQsIG5v
ciBkZWxldGUgYW55IGVsZW1lbnQgZnJvbSBTRVQgZXhjZXB0IHRoZSBvbmUKKyMgY3VycmVudGx5
IGluIFZBUi4gIFRoZSBvcmRlciB0aGF0IHRoZSBlbGVtZW50cyBhcmUgdmlzaXRlZCBpbiBpcyBu
b3QKKyMgZ3VhcmFudGVlZC4gIFRoaXMgaXMgZmFzdGVyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcg
bTRfZm9yZWFjaChbVkFSXSwKKyMgICBtNF9pbmRpcihbbTRfZHF1b3RlXW00X3NldF9saXN0Yyhb
U0VUXSkpLCBbQUNUSU9OXSkKK200X2RlZmluZShbbTRfc2V0X2ZvcmVhY2hdLAorW200X3B1c2hk
ZWYoWyQyXSltNF9zZXRfbWFwX3NlcChbJDFdLAorW200X2RlZmluZShbJDJdLF0sIFspJDNdKW00
X3BvcGRlZihbJDJdKV0pCisKKyMgbTRfc2V0X2ludGVyc2VjdGlvbihTRVQxLCBTRVQyKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2R1Y2UgYSBMSVNUIG9mIHF1b3Rl
ZCBlbGVtZW50cyB0aGF0IG9jY3VyIGluIGJvdGggU0VUMSBvciBTRVQyLgorIyBPdXRwdXQgYSBj
b21tYSBwcmlvciB0byBhbnkgZWxlbWVudHMsIHRvIGRpc3Rpbmd1aXNoIHRoZSBlbXB0eQorIyBz
dHJpbmcgZnJvbSBubyBlbGVtZW50cy4gIFRoaXMgY2FuIGJlIGRpcmVjdGx5IHVzZWQgYXMgYSBz
ZXJpZXMgb2YKKyMgYXJndW1lbnRzLCBzdWNoIGFzIGZvciBtNF9qb2luLCBvciB3cmFwcGVkIGlu
c2lkZSBxdW90ZXMgZm9yIHVzZSBpbgorIyBtNF9mb3JlYWNoLiAgT3JkZXIgb2YgdGhlIG91dHB1
dCBpcyBub3QgZ3VhcmFudGVlZC4KKyMKKyMgSXRlcmF0ZSBvdmVyIHRoZSBzbWFsbGVyIHNldCwg
YW5kIHNob3J0LWNpcmN1aXQgdGhlIGlkZW1wb3RlbmNlCisjIHJlbGF0aW9uLgorbTRfZGVmaW5l
KFttNF9zZXRfaW50ZXJzZWN0aW9uXSwKK1ttNF9pZihbJDFdLCBbJDJdLCBbbTRfc2V0X2xpc3Rj
KFskMV0pXSwKKyAgICAgICBtNF9ldmFsKG00X3NldF9zaXplKFskMl0pIDwgbTRfc2V0X3NpemUo
WyQxXSkpLCBbMV0sIFskMChbJDJdLCBbJDFdKV0sCisgICAgICAgW200X3NldF9tYXBfc2VwKFsk
MV0sIFtfJDAoWyQyXSxdLCBbKV0pXSldKQorCittNF9kZWZpbmUoW19tNF9zZXRfaW50ZXJzZWN0
aW9uXSwKK1ttNF9zZXRfY29udGFpbnMoWyQxXSwgWyQyXSwgWyxbJDJdXSldKQorCisjIG00X3Nl
dF9saXN0KFNFVCkKKyMgbTRfc2V0X2xpc3RjKFNFVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMg
UHJvZHVjZSBhIExJU1Qgb2YgcXVvdGVkIGVsZW1lbnRzIG9mIFNFVC4gIFRoaXMgY2FuIGJlIGRp
cmVjdGx5IHVzZWQKKyMgYXMgYSBzZXJpZXMgb2YgYXJndW1lbnRzLCBzdWNoIGFzIGZvciBtNF9q
b2luIG9yIG00X3NldF9hZGRfYWxsLCBvcgorIyB3cmFwcGVkIGluc2lkZSBxdW90ZXMgZm9yIHVz
ZSBpbiBtNF9mb3JlYWNoIG9yIG00X21hcC4gIFdpdGgKKyMgbTRfc2V0X2xpc3QsIHRoZXJlIGlz
IG5vIHdheSB0byBkaXN0aW5ndWlzaCBhbiBlbXB0eSBzZXQgZnJvbSBhIHNldAorIyBjb250YWlu
aW5nIG9ubHkgdGhlIGVtcHR5IHN0cmluZzsgd2l0aCBtNF9zZXRfbGlzdGMsIGEgbGVhZGluZyBj
b21tYQorIyBpcyBvdXRwdXQgaWYgdGhlcmUgYXJlIGFueSBlbGVtZW50cy4KK200X2RlZmluZShb
bTRfc2V0X2xpc3RdLAorW200X3NldF9tYXBfc2VwKFskMV0sIFtdLCBbXSwgWyxdKV0pCisKK200
X2RlZmluZShbbTRfc2V0X2xpc3RjXSwKK1ttNF9zZXRfbWFwX3NlcChbJDFdLCBbLF0pXSkKKwor
IyBtNF9zZXRfbWFwKFNFVCwgQUNUSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBG
b3IgZWFjaCBlbGVtZW50IG9mIFNFVCwgZXhwYW5kIEFDVElPTiB3aXRoIGEgc2luZ2xlIGFyZ3Vt
ZW50IG9mIHRoZQorIyBjdXJyZW50IGVsZW1lbnQuICBBQ1RJT04gc2hvdWxkIG5vdCByZWN1cnNp
dmVseSBsaXN0IFNFVCdzIGNvbnRlbnRzLAorIyBhZGQgZWxlbWVudHMgdG8gU0VULCBub3IgZGVs
ZXRlIGFueSBlbGVtZW50IGZyb20gU0VUIGV4Y2VwdCB0aGUgb25lCisjIHBhc3NlZCBhcyBhbiBh
cmd1bWVudC4gIFRoZSBvcmRlciB0aGF0IHRoZSBlbGVtZW50cyBhcmUgdmlzaXRlZCBpbgorIyBp
cyBub3QgZ3VhcmFudGVlZC4gIFRoaXMgaXMgZmFzdGVyIHRoYW4gZWl0aGVyIG9mIHRoZSBjb3Jy
ZXNwb25kaW5nCisjICAgbTRfbWFwX2FyZ3MoW0FDVElPTl1tNF9zZXRfbGlzdGMoW1NFVF0pKQor
IyAgIG00X3NldF9mb3JlYWNoKFtTRVRdLCBbVkFSXSwgW0FDVElPTihtNF9kZWZuKFtWQVJdKSld
KQorbTRfZGVmaW5lKFttNF9zZXRfbWFwXSwKK1ttNF9zZXRfbWFwX3NlcChbJDFdLCBbJDIoXSwg
WyldKV0pCisKKyMgbTRfc2V0X21hcF9zZXAoU0VULCBbUFJFXSwgW1BPU1RdLCBbU0VQXSkKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9yIGVhY2ggZWxl
bWVudCBvZiBTRVQsIGV4cGFuZCBQUkVbdmFsdWVdUE9TVFtdLCBhbmQgZXhwYW5kIFNFUAorIyBi
ZXR3ZWVuIGVsZW1lbnRzLgorbTRfZGVmaW5lKFttNF9zZXRfbWFwX3NlcF0sCitbbTRfaWZkZWYo
W19tNF9zZXRfY2xlYW51cCgkMSldLCBbX200X3NldF9jb250ZW50c18xY10sCisJICBbX200X3Nl
dF9jb250ZW50c18xXSkoWyQxXSlfbTRfc2V0X2NvbnRlbnRzXzIoJEApXSkKKworIyBtNF9zZXRf
cmVtb3ZlKFNFVCwgVkFMVUUsIFtJRi1QUkVTRU5UXSwgW0lGLUFCU0VOVF0pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgVkFMVUUg
aXMgYW4gZWxlbWVudCBvZiBTRVQsIGRlbGV0ZSBpdCBhbmQgZXhwYW5kIElGLVBSRVNFTlQuCisj
IE90aGVyd2lzZSBleHBhbmQgSUYtQUJTRU5ULiAgRGVsZXRpbmcgYSBzaW5nbGUgdmFsdWUgaXMg
TygxKSwKKyMgYWx0aG91Z2ggaXQgbGVhdmVzIG1lbW9yeSBvY2N1cGllZCB1bnRpbCB0aGUgbmV4
dCBPKG4pIHRyYXZlcnNhbCBvZgorIyB0aGUgc2V0IHdoaWNoIHdpbGwgY29tcGFjdCB0aGUgc2V0
LgorIworIyBPcHRpbWl6ZSBpZiB0aGUgZWxlbWVudCBiZWluZyByZW1vdmVkIGlzIHRoZSBtb3N0
IHJlY2VudGx5IGFkZGVkLAorIyBzaW5jZSBkZWZpbmluZyBfbTRfc2V0X2NsZWFudXAoJDEpIHNs
b3dzIGRvd24gc28gbWFueSBvdGhlciBtYWNyb3MuCisjIEluIHBhcnRpY3VsYXIsIHRoaXMgcGxh
eXMgd2VsbCB3aXRoIG00X3NldF9mb3JlYWNoIGFuZCBtNF9zZXRfbWFwLgorbTRfZGVmaW5lKFtt
NF9zZXRfcmVtb3ZlXSwKK1ttNF9zZXRfY29udGFpbnMoWyQxXSwgWyQyXSwgW19tNF9zZXRfc2l6
ZShbJDFdLAorICAgIFttNF9kZWNyXSltNF9pZihfbTRfZGVmbihbX200X3NldChbJDFdKV0pLCBb
JDJdLAorCQkgICAgW19tNF9wb3BkZWYoW19tNF9zZXQoWyQxXSwkMildLCBbX200X3NldChbJDFd
KV0pXSwKKwkJICAgIFttNF9kZWZpbmUoW19tNF9zZXRfY2xlYW51cCgkMSldKW00X2RlZmluZSgK
KwkJICAgICAgW19tNF9zZXQoWyQxXSwkMildLCBbMF0pXSkkM10sIFskNF0pXSkKKworIyBtNF9z
ZXRfc2l6ZShTRVQpCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIHRvIHRoZSBudW1iZXIg
b2YgZWxlbWVudHMgY3VycmVudGx5IGluIFNFVC4gIFRoaXMgb3BlcmF0aW9uCisjIGlzIE8oMSks
IGFuZCB0aHVzIG1vcmUgZWZmaWNpZW50IHRoYW4gbTRfY291bnQobTRfc2V0X2xpc3QoW1NFVF0p
KS4KK200X2RlZmluZShbbTRfc2V0X3NpemVdLAorW200X2lmZGVmKFtfbTRfc2V0X3NpemUoJDEp
XSwgW200X2luZGlyKFtfbTRfc2V0X3NpemUoJDEpXSldLCBbMF0pXSkKKworIyBfbTRfc2V0X3Np
emUoU0VULCBBQ1RJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQUNUSU9OIG11
c3QgYmUgZWl0aGVyIG00X2luY3Igb3IgbTRfZGVjciwgYW5kIHRoZSBzaXplIG9mIFNFVCBpcwor
IyBjaGFuZ2VkIGFjY29yZGluZ2x5LiAgSWYgdGhlIHNldCBpcyBlbXB0eSwgQUNUSU9OIG11c3Qg
bm90IGJlCisjIG00X2RlY3IuCittNF9kZWZpbmUoW19tNF9zZXRfc2l6ZV0sCitbbTRfZGVmaW5l
KFtfbTRfc2V0X3NpemUoJDEpXSwKKwkgICBtNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sIFsk
MihtNF9pbmRpcihbX200X3NldF9zaXplKCQxKV0pKV0sCisJCSAgICBbMV0pKV0pCisKKyMgbTRf
c2V0X3VuaW9uKFNFVDEsIFNFVDIpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcm9k
dWNlIGEgTElTVCBvZiBkb3VibGUgcXVvdGVkIGVsZW1lbnRzIHRoYXQgb2NjdXIgaW4gZWl0aGVy
IFNFVDEKKyMgb3IgU0VUMiwgd2l0aG91dCBkdXBsaWNhdGVzLiAgT3V0cHV0IGEgY29tbWEgcHJp
b3IgdG8gYW55IGVsZW1lbnRzLAorIyB0byBkaXN0aW5ndWlzaCB0aGUgZW1wdHkgc3RyaW5nIGZy
b20gbm8gZWxlbWVudHMuICBUaGlzIGNhbiBiZQorIyBkaXJlY3RseSB1c2VkIGFzIGEgc2VyaWVz
IG9mIGFyZ3VtZW50cywgc3VjaCBhcyBmb3IgbTRfam9pbiwgb3IKKyMgd3JhcHBlZCBpbnNpZGUg
cXVvdGVzIGZvciB1c2UgaW4gbTRfZm9yZWFjaC4gIE9yZGVyIG9mIHRoZSBvdXRwdXQgaXMKKyMg
bm90IGd1YXJhbnRlZWQuCisjCisjIFdlIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgbTRfc2V0
X2xpc3RjIHBydW5lcyBTRVQxLCBzbyB3ZSBkb24ndAorIyBuZWVkIHRvIGNoZWNrIF9tNF9zZXQo
WyQxXSxlbGVtZW50KSBmb3IgMC4gIFNob3J0LWNpcmN1aXQgdGhlCisjIGlkZW1wb3RlbmNlIHJl
bGF0aW9uLgorbTRfZGVmaW5lKFttNF9zZXRfdW5pb25dLAorW200X3NldF9saXN0YyhbJDFdKW00
X2lmKFskMV0sIFskMl0sIFtdLAorICBbbTRfc2V0X21hcF9zZXAoWyQyXSwgW18kMChbJDFdLF0s
IFspXSldKV0pCisKK200X2RlZmluZShbX200X3NldF91bmlvbl0sCitbbTRfaWZkZWYoW19tNF9z
ZXQoWyQxXSwkMildLCBbXSwgWyxbJDJdXSldKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0g
IyMKKyMjIDE2LiBGaWxlIGhhbmRsaW5nLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMK
KworCisjIEl0IGlzIGEgcmVhbCBwaXR5IHRoYXQgTTQgY29tZXMgd2l0aCBubyBtYWNyb3MgdG8g
YmluZCBhIGRpdmVyc2lvbgorIyB0byBhIGZpbGUuICBTbyB3ZSBoYXZlIHRvIGRlYWwgd2l0aG91
dCwgd2hpY2ggbWFrZXMgdXMgYSBsb3QgbW9yZQorIyBmcmFnaWxlIHRoYW4gd2Ugc2hvdWxkLgor
CisKKyMgbTRfZmlsZV9hcHBlbmQoRklMRS1OQU1FLCBDT05URU5UKQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW200X2ZpbGVfYXBwZW5kXSwKK1ttNF9z
eXNjbWQoW2NhdCA+PiQxIDw8X200ZW9mCiskMgorX200ZW9mCitdKQorbTRfaWYobTRfc3lzdmFs
LCBbMF0sIFtdLAorICAgICAgW200X2ZhdGFsKFskMDogY2Fubm90IHdyaXRlOiAkMV0pXSldKQor
CisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyAxNy4gU2V0dGluZyBNNHN1
Z2FyIHVwLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIF9tNF9kaXZl
cnRfZGl2ZXJzaW9uIHNob3VsZCBiZSBkZWZpbmVkLgorbTRfZGl2ZXJ0X3B1c2goW0tJTExdKQor
CisjIG00X2luaXQKKyMgLS0tLS0tLQorIyBJbml0aWFsaXplIHRoZSBtNHN1Z2FyIGxhbmd1YWdl
LgorbTRfZGVmaW5lKFttNF9pbml0XSwKK1sjIEFsbCB0aGUgTTRzdWdhciBtYWNyb3Mgc3RhcnQg
d2l0aCBgbTRfJywgZXhjZXB0IGBkbmwnIGtlcHQgYXMgaXMKKyMgZm9yIHNha2Ugb2Ygc2ltcGxp
Y2l0eS4KK200X3BhdHRlcm5fZm9yYmlkKFteXz9tNF9dKQorbTRfcGF0dGVybl9mb3JiaWQoW15k
bmwkXSkKKworIyBJZiBfX200X3ZlcnNpb25fXyBpcyBkZWZpbmVkLCB3ZSBhc3N1bWUgdGhhdCB3
ZSBhcmUgYmVpbmcgcnVuIGJ5IE00CisjIDEuNiBvciBuZXdlciwgdGh1cyAkQCByZWN1cnNpb24g
aXMgbGluZWFyLCBhbmQgZGVidWdtb2RlKCtkbykKKyMgaXMgYXZhaWxhYmxlIGZvciBmYXN0ZXIg
Y2hlY2tzIG9mIGRlcmVmZXJlbmNpbmcgdW5kZWZpbmVkIG1hY3JvcworIyBhbmQgZm9yY2luZyBk
dW1wZGVmIHRvIHByaW50IHRvIHN0ZGVyciByZWdhcmRsZXNzIG9mIGRlYnVnZmlsZS4KKyMgQnV0
IGlmIGl0IGlzIG1pc3NpbmcsIHdlIGFzc3VtZSB3ZSBhcmUgYmVpbmcgcnVuIGJ5IE00IDEuNC54
LCB0aGF0CisjICRAIHJlY3Vyc2lvbiBpcyBxdWFkcmF0aWMsIGFuZCB0aGF0IHdlIG5lZWQgZm9y
ZWFjaC1iYXNlZAorIyByZXBsYWNlbWVudCBtYWNyb3MuICBBbHNvLCBtNCBwcmlvciB0byAxLjQu
OCBsb3NlcyB0cmFjayBvZiBsb2NhdGlvbgorIyBkdXJpbmcgbTR3cmFwIHRleHQ7IF9fbGluZV9f
IHNob3VsZCBuZXZlciBiZSAwLgorIworIyBVc2UgdGhlIHJhdyBidWlsdGluIHRvIGF2b2lkIHRy
aXBwaW5nIHVwIGluY2x1ZGUgdHJhY2luZy4KKyMgTWVhbndoaWxlLCBhdm9pZCBtNF9jb3B5LCBz
aW5jZSBpdCB0ZW1wb3JhcmlseSB1bmRlZmluZXMgbTRfZGVmbi4KK200X2lmZGVmKFtfX200X3Zl
cnNpb25fX10sCitbbTRfZGVidWdtb2RlKFsrZG9dKQorbTRfZGVmaW5lKFttNF9kZWZuXSwgX200
X2RlZm4oW19tNF9kZWZuXSkpCittNF9kZWZpbmUoW200X2R1bXBkZWZdLCBfbTRfZGVmbihbX200
X2R1bXBkZWZdKSkKK200X2RlZmluZShbbTRfcG9wZGVmXSwgX200X2RlZm4oW19tNF9wb3BkZWZd
KSkKK200X2RlZmluZShbbTRfdW5kZWZpbmVdLCBfbTRfZGVmbihbX200X3VuZGVmaW5lXSkpXSwK
K1ttNF9idWlsdGluKFtpbmNsdWRlXSwgW200c3VnYXIvZm9yZWFjaC5tNF0pCittNF93cmFwX2xp
Zm8oW200X2lmKF9fbGluZV9fLCBbMF0sIFttNF9wdXNoZGVmKFttNF9sb2NhdGlvbl0sCitdXW00
X2RxdW90ZShtNF9kcXVvdGUobTRfZHF1b3RlKF9fZmlsZV9fOl9fbGluZV9fKSkpW1spXSldKV0p
CisKKyMgUmV3cml0ZSB0aGUgZmlyc3QgZW50cnkgb2YgdGhlIGRpdmVyc2lvbiBzdGFjay4KK200
X2RpdmVydChbS0lMTF0pCisKKyMgQ2hlY2sgdGhlIGRpdmVydCBwdXNoL3BvcCBwZXJmZWN0IGJh
bGFuY2UuCisjIFNvbWUgdXNlcnMgYXJlIHByb25lIHRvIGFsc28gdXNlIG00X3dyYXAgdG8gcmVn
aXN0ZXIgbGFzdC1taW51dGUKKyMgbTRfZGl2ZXJ0X3RleHQ7IHNvIGFmdGVyIG91ciBkaXZlcnNp
b24gY2xlYW51cHMsIHdlIHJlc3RvcmUKKyMgS0lMTCBhcyB0aGUgYm90dG9tIG9mIHRoZSBkaXZl
cnNpb24gc3RhY2suCittNF93cmFwKFttNF9wb3BkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSlt
NF9pZmRlZigKKyAgW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgW200X2ZhdGFsKFskMDogdW5iYWxh
bmNlZCBtNF9kaXZlcnRfcHVzaDoKK11tNF9kaXZlcnRfc3RhY2spXSlfbTRfcG9wZGVmKFtfbTRf
ZGl2ZXJ0X3N0YWNrXSltNF9kaXZlcnRfcHVzaChbS0lMTF0pXSkKK10pCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxl
dG9ucy9MSUNFTlNFIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90
aGlyZF9wYXJ0eS9za2VsZXRvbnMvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGE5ZWQwMjRkMzg1OTc5
MzYxODE1MmVhNTU5YTE2OGJiY2JiNWUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvTElDRU5T
RQpAQCAtMCwwICsxLDY3NCBAQAorICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJM
SUMgTElDRU5TRQorICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAw
NworCisgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8
aHR0cDovL2ZzZi5vcmcvPgorIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0
cmlidXRlIHZlcmJhdGltIGNvcGllcworIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNo
YW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UHJlYW1ibGUKKworICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBj
b3B5bGVmdCBsaWNlbnNlIGZvcgorc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLgor
CisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdv
cmtzIGFyZSBkZXNpZ25lZAordG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQg
Y2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LAordGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8KK3NoYXJlIGFu
ZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFp
bnMgZnJlZQorc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgdXNlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
c3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8KK2FueSBvdGhlciB3b3JrIHJl
bGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bworeW91
ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2Ug
YXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZy
ZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBm
b3IKK3RoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNh
biBnZXQgaXQgaWYgeW91Cit3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2Fy
ZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldworZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91
IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0
cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91Cit0aGVzZSByaWdo
dHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91
IGhhdmUKK2NlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMg
b2YgdGhlIHNvZnR3YXJlLCBvciBpZgoreW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0
byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4KKworICBGb3IgZXhhbXBsZSwgaWYgeW91
IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCitncmF0aXMgb3Ig
Zm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lCitm
cmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXks
IHRvbywgcmVjZWl2ZQorb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qg
c2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKK2tub3cgdGhlaXIgcmlnaHRzLgorCisgIERl
dmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3
byBzdGVwczoKKygxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBv
ZmZlciB5b3UgdGhpcyBMaWNlbnNlCitnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29w
eSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0LgorCisgIEZvciB0aGUgZGV2ZWxvcGVycycg
YW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucwordGhhdCB0
aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNl
cnMnIGFuZAorYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZl
cnNpb25zIGJlIG1hcmtlZCBhcworY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxs
IG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvCithdXRob3JzIG9mIHByZXZpb3VzIHZl
cnNpb25zLgorCisgIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nl
c3MgdG8gaW5zdGFsbCBvciBydW4KK21vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBp
bnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcgorY2FuIGRvIHNvLiAgVGhpcyBp
cyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKK3Byb3RlY3Rpbmcg
dXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljCitw
YXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBp
bmRpdmlkdWFscyB0bwordXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1
bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCitoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBv
ZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UKK3Byb2R1Y3RzLiAg
SWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdl
CitzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBp
biBmdXR1cmUgdmVyc2lvbnMKK29mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBm
cmVlZG9tIG9mIHVzZXJzLgorCisgIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5l
ZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuCitTdGF0ZXMgc2hvdWxkIG5vdCBhbGxv
dyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YKK3NvZnR3YXJlIG9u
IGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNo
IHRvCithdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBm
cmVlIHByb2dyYW0gY291bGQKK21ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBw
cmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0CitwYXRlbnRzIGNhbm5vdCBiZSB1c2Vk
IHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4KKworICBUaGUgcHJlY2lzZSB0ZXJtcyBh
bmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAorbW9kaWZpY2F0aW9u
IGZvbGxvdy4KKworICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUwor
CisgIDAuIERlZmluaXRpb25zLgorCisgICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9u
IDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorCisgICJDb3B5cmlnaHQiIGFs
c28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9m
Cit3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLgorCisgICJUaGUgUHJvZ3JhbSIg
cmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcworTGlj
ZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIg
YW5kCisicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCisK
KyAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3Ig
cGFydCBvZiB0aGUgd29yaworaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlz
c2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCitleGFjdCBjb3B5LiAgVGhlIHJlc3Vs
dGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUKK2VhcmxpZXIg
d29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLgorCisgIEEgImNvdmVy
ZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJh
c2VkCitvbiB0aGUgUHJvZ3JhbS4KKworICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8g
ZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0CitwZXJtaXNzaW9uLCB3b3VsZCBtYWtl
IHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yCitpbmZyaW5nZW1lbnQgdW5k
ZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKK2Nv
bXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVz
IGNvcHlpbmcsCitkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBt
YWtpbmcgYXZhaWxhYmxlIHRvIHRoZQorcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3Ro
ZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgorCisgIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkg
a2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXIKK3BhcnRpZXMgdG8gbWFrZSBv
ciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAor
YSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNv
bnZleWluZy4KKworICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBw
cm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKK3RvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBh
IGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUKK2ZlYXR1cmUgdGhhdCAoMSkgZGlz
cGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQordGVsbHMgdGhl
IHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0
aGUKK2V4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMg
bWF5IGNvbnZleSB0aGUKK3dvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcg
YSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmCit0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlz
dCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQorbWVudSwgYSBwcm9taW5l
bnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4KKworICAxLiBTb3VyY2Ug
Q29kZS4KKworICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJy
ZWQgZm9ybSBvZiB0aGUgd29yaworZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9i
amVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQorZm9ybSBvZiBhIHdvcmsuCisKKyAgQSAi
U3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4g
b2ZmaWNpYWwKK3N0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5
LCBvciwgaW4gdGhlIGNhc2Ugb2YKK2ludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3Vs
YXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0CitpcyB3aWRlbHkgdXNlZCBhbW9uZyBk
ZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KKworICBUaGUgIlN5c3RlbSBMaWJy
YXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcgordGhh
biB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFs
IGZvcm0gb2YKK3BhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBw
YXJ0IG9mIHRoYXQgTWFqb3IKK0NvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFi
bGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdAorTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBs
ZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCitpbXBsZW1lbnRhdGlvbiBp
cyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQorIk1ham9y
IENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29t
cG9uZW50Cisoa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZp
YyBvcGVyYXRpbmcgc3lzdGVtCisoaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3Jr
IHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bworcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2Jq
ZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuCisKKyAgVGhlICJDb3JyZXNwb25k
aW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbAordGhl
IHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhl
Y3V0YWJsZQord29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3Jr
LCBpbmNsdWRpbmcgc2NyaXB0cyB0bworY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZl
ciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzCitTeXN0ZW0gTGlicmFyaWVzLCBvciBn
ZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlCitwcm9ncmFt
cyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGll
cyBidXQKK3doaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3Jy
ZXNwb25kaW5nIFNvdXJjZQoraW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNz
b2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3IKK3RoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBj
b2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQorbGlua2VkIHN1YnByb2dy
YW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsCitz
dWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0
d2VlbiB0aG9zZQorc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgorCisg
IFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQg
dXNlcnMKK2NhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0
aGUgQ29ycmVzcG9uZGluZworU291cmNlLgorCisgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBm
b3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdAorc2FtZSB3b3JrLgorCisgIDIu
IEJhc2ljIFBlcm1pc3Npb25zLgorCisgIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExp
Y2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mCitjb3B5cmlnaHQgb24gdGhlIFByb2dy
YW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZAorY29uZGl0aW9ucyBh
cmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZAor
cGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJv
bSBydW5uaW5nIGEKK2NvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5
IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cworY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVk
IHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXIKK3JpZ2h0cyBvZiBmYWlyIHVz
ZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3LgorCisg
IFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBk
byBub3QKK2NvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNl
IG90aGVyd2lzZSByZW1haW5zCitpbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29y
a3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCitvZiBoYXZpbmcgdGhlbSBtYWtlIG1v
ZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UKK3dpdGggZmFj
aWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5
IHdpdGgKK3RoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlh
bCBmb3Igd2hpY2ggeW91IGRvCitub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1h
a2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzCitmb3IgeW91IG11c3QgZG8gc28gZXhj
bHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uCithbmQgY29udHJv
bCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YK
K3lvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0
aCB5b3UuCisKKyAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBl
cm1pdHRlZCBzb2xlbHkgdW5kZXIKK3RoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1Ymxp
Y2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMAorbWFrZXMgaXQgdW5uZWNlc3Nhcnku
CisKKyAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12
ZW50aW9uIExhdy4KKworICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2Yg
YW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKK21lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUg
bGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQorMTEgb2YgdGhlIFdJUE8g
Y29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yCitzaW1pbGFy
IGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCitt
ZWFzdXJlcy4KKworICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBh
bnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCitjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwg
bWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24KK2lzIGVmZmVjdGVkIGJ5
IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8KK3Ro
ZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBv
cGVyYXRpb24gb3IKK21vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9y
Y2luZywgYWdhaW5zdCB0aGUgd29yaydzCit1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBs
ZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YKK3RlY2hub2xvZ2ljYWwgbWVh
c3VyZXMuCisKKyAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4KKworICBZb3UgbWF5IGNv
bnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UK
K3JlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3Vz
bHkgYW5kCithcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRl
IGNvcHlyaWdodCBub3RpY2U7CitrZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQg
dGhpcyBMaWNlbnNlIGFuZCBhbnkKK25vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29y
ZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKK2tlZXAgaW50YWN0IGFsbCBub3Rp
Y2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCityZWNpcGll
bnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworICBZ
b3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlv
dSBjb252ZXksCithbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rp
b24gZm9yIGEgZmVlLgorCisgIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMu
CisKKyAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUg
bW9kaWZpY2F0aW9ucyB0bworcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9y
bSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKK3Rlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQg
dGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICAgYSkgVGhl
IHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlm
aWVkCisgICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLgorCisgICAgYikgVGhlIHdv
cmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKKyAgICBy
ZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVy
IHNlY3Rpb24KKyAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1l
bnQgaW4gc2VjdGlvbiA0IHRvCisgICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KKworICAg
IGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0
aGlzCisgICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBh
IGNvcHkuICBUaGlzCisgICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0
aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcKKyAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUg
d2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLAorICAgIHJlZ2FyZGxlc3Mgb2Yg
aG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCisgICAgcGVybWlz
c2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5v
dAorICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkg
cmVjZWl2ZWQgaXQuCisKKyAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBp
bnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQorICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGlj
ZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQorICAgIGludGVyZmFj
ZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCisg
ICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uCisKKyAgQSBjb21waWxhdGlvbiBvZiBh
IGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAord29ya3Ms
IHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQg
d29yaywKK2FuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3Jt
IGEgbGFyZ2VyIHByb2dyYW0sCitpbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlz
dHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCisiYWdncmVnYXRlIiBpZiB0aGUgY29tcGls
YXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QKK3VzZWQgdG8gbGltaXQg
dGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMKK2Jl
eW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNv
dmVyZWQgd29yaworaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0
byBhcHBseSB0byB0aGUgb3RoZXIKK3BhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuCisKKyAgNi4gQ29u
dmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuCisKKyAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdv
cmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKK29mIHNlY3Rpb25zIDQgYW5k
IDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQorbWFjaGluZS1yZWFkYWJsZSBD
b3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLAoraW4g
b25lIG9mIHRoZXNlIHdheXM6CisKKyAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBv
ciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CisgICAgKGluY2x1ZGluZyBhIHBoeXNp
Y2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKKyAgICBDb3JyZXNw
b25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtCisgICAgY3Vz
dG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCisKKyAgICBiKSBDb252ZXkg
dGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0Cisg
ICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmll
ZCBieSBhCisgICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJz
IGFuZCB2YWxpZCBmb3IgYXMKKyAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBj
dXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QKKyAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlv
bmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhCisgICAgY29weSBv
ZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCisg
ICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUg
cGh5c2ljYWwKKyAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJj
aGFuZ2UsIGZvciBhIHByaWNlIG5vCisgICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0
IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCisgICAgY29udmV5aW5nIG9mIHNvdXJjZSwg
b3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20g
YSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuCisKKyAgICBjKSBDb252ZXkgaW5kaXZpZHVh
bCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQorICAgIHdyaXR0
ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzCisgICAg
YWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lh
bGx5LCBhbmQKKyAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBz
dWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQKKyAgICB3aXRoIHN1YnNlY3Rpb24gNmIuCisKKyAgICBk
KSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWdu
YXRlZAorICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2
YWxlbnQgYWNjZXNzIHRvIHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1l
IHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCisgICAgZnVydGhlciBjaGFyZ2UuICBZ
b3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlCisgICAgQ29ycmVzcG9u
ZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8K
KyAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVz
cG9uZGluZyBTb3VyY2UKKyAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRl
ZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkKKyAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQg
Y29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4KKyAgICBjbGVhciBkaXJl
Y3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQor
ICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0
cyB0aGUKKyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8g
ZW5zdXJlIHRoYXQgaXQgaXMKKyAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRv
IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgorCisgICAgZSkgQ29udmV5IHRoZSBvYmplY3Qg
Y29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZAorICAgIHlvdSBp
bmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5n
CisgICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFs
IHB1YmxpYyBhdCBubworICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLgorCisgIEEgc2Vw
YXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBl
eGNsdWRlZAorZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFy
eSwgbmVlZCBub3QgYmUKK2luY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29y
ay4KKworICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVj
dCIsIHdoaWNoIG1lYW5zIGFueQordGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMg
bm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKK29yIGhvdXNlaG9sZCBwdXJwb3Nl
cywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24KK2lu
dG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29u
c3VtZXIgcHJvZHVjdCwKK2RvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9y
IG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgorcHJvZHVjdCByZWNlaXZlZCBieSBhIHBh
cnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhCit0eXBpY2FsIG9yIGNv
bW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0
dXMKK29mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFy
dGljdWxhciB1c2VyCithY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRv
IHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QKK2lzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsCitjb21tZXJjaWFs
LCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJl
c2VudAordGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuCisK
KyAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFu
eSBtZXRob2RzLAorcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZv
cm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsCithbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9u
cyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tCithIG1vZGlmaWVk
IHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11
c3QKK3N1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0
aGUgbW9kaWZpZWQgb2JqZWN0Citjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVy
ZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQorbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCisK
KyAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBp
biwgb3Igd2l0aCwgb3IKK3NwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwg
YW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCitwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hp
Y2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUKK1VzZXIgUHJvZHVjdCBp
cyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGEKK2Zp
eGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJp
emVkKSwgdGhlCitDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rp
b24gbXVzdCBiZSBhY2NvbXBhbmllZAorYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4g
IEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5CitpZiBuZWl0aGVyIHlvdSBub3Ig
YW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAorbW9kaWZpZWQg
b2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhh
cworYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4KKworICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlk
ZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhCityZXF1aXJlbWVu
dCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVw
ZGF0ZXMKK2ZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkg
dGhlIHJlY2lwaWVudCwgb3IgZm9yCit0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBi
ZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhCituZXR3b3JrIG1heSBiZSBk
ZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZAorYWR2ZXJz
ZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUg
cnVsZXMgYW5kCitwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3Jr
LgorCisgIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIElu
Zm9ybWF0aW9uIHByb3ZpZGVkLAoraW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUg
aW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQorZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1w
bGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4KK3NvdXJjZSBjb2RlIGZvcm0p
LCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgordW5wYWNr
aW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuCisKKyAgNy4gQWRkaXRpb25hbCBUZXJtcy4KKworICAi
QWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVy
bXMgb2YgdGhpcworTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3Jl
IG9mIGl0cyBjb25kaXRpb25zLgorQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBs
aWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbAorYmUgdHJlYXRlZCBhcyB0aG91Z2gg
dGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudAordGhhdCB0
aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlz
c2lvbnMKK2FwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBi
ZSB1c2VkIHNlcGFyYXRlbHkKK3VuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGly
ZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkKK3RoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2Fy
ZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KKworICBXaGVuIHlvdSBjb252ZXkgYSBj
b3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uCityZW1vdmUgYW55
IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQg
b2YKK2l0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWly
ZSB0aGVpciBvd24KK3JlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhl
IHdvcmsuKSAgWW91IG1heSBwbGFjZQorYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlh
bCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLAorZm9yIHdoaWNoIHlvdSBoYXZlIG9y
IGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLgorCisgIE5vdHdpdGhz
dGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFs
IHlvdQorYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRo
ZSBjb3B5cmlnaHQgaG9sZGVycyBvZgordGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVy
bXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6CisKKyAgICBhKSBEaXNjbGFpbWluZyB3YXJy
YW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUKKyAgICB0ZXJt
cyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcgorCisgICAgYikgUmVx
dWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2Vz
IG9yCisgICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBB
cHByb3ByaWF0ZSBMZWdhbAorICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5p
bmcgaXQ7IG9yCisKKyAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUg
b3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yCisgICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQg
dmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KKyAgICByZWFzb25hYmxlIHdh
eXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yCisKKyAgICBkKSBM
aW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5z
b3JzIG9yCisgICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yCisKKyAgICBlKSBEZWNsaW5p
bmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCisg
ICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yCisKKyAgICBm
KSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0
aGF0CisgICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3Ig
bW9kaWZpZWQgdmVyc2lvbnMgb2YKKyAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9u
cyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yCisgICAgYW55IGxpYWJpbGl0eSB0
aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgorICAg
IHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4KKworICBBbGwgb3RoZXIgbm9uLXBlcm1pc3Np
dmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgorcmVzdHJpY3Rpb25z
IiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlv
dQorcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0
aW5nIHRoYXQgaXQgaXMKK2dvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVy
bSB0aGF0IGlzIGEgZnVydGhlcgorcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVy
bS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucworYSBmdXJ0aGVyIHJlc3RyaWN0aW9u
IGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzCitMaWNlbnNl
LCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUg
dGVybXMKK29mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhl
ciByZXN0cmljdGlvbiBkb2VzCitub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZl
eWluZy4KKworICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3
aXRoIHRoaXMgc2VjdGlvbiwgeW91CittdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNl
IGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUKK2FkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0
byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZword2hlcmUgdG8gZmluZCB0aGUg
YXBwbGljYWJsZSB0ZXJtcy4KKworICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5v
bi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQorZm9ybSBvZiBhIHNlcGFyYXRlbHkg
d3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsKK3RoZSBhYm92ZSByZXF1
aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4KKworICA4LiBUZXJtaW5hdGlvbi4KKworICBZb3Ug
bWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHBy
ZXNzbHkKK3Byb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lz
ZSB0byBwcm9wYWdhdGUgb3IKK21vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNh
bGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcgordGhpcyBMaWNlbnNlIChpbmNsdWRpbmcg
YW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZAorcGFyYWdyYXBoIG9m
IHNlY3Rpb24gMTEpLgorCisgIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9m
IHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCitsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHly
aWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkKK3Byb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQg
dW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKK2ZpbmFsbHkgdGVybWlu
YXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQK
K2hvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFz
b25hYmxlIG1lYW5zCitwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uCisKKyAg
TW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVy
IGlzCityZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlm
aWVzIHlvdSBvZiB0aGUKK3Zpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMg
aXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKK3JlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24g
b2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdAorY29weXJpZ2h0IGhvbGRl
ciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcgoreW91
ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCisKKyAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMg
dW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUKK2xpY2Vuc2VzIG9mIHBh
cnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgor
dGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5v
dCBwZXJtYW5lbnRseQorcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUg
bmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQorbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KKwor
ICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4KKworICBZb3Ug
YXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2Vp
dmUgb3IKK3J1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24g
b2YgYSBjb3ZlcmVkIHdvcmsKK29jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1
c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCit0byByZWNlaXZlIGEgY29weSBsaWtld2lz
ZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLAorbm90aGluZyBvdGhlciB0
aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yCitt
b2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0
IGlmIHlvdSBkbworbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlm
eWluZyBvciBwcm9wYWdhdGluZyBhCitjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFj
Y2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLgorCisgIDEwLiBBdXRvbWF0aWMgTGlj
ZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4KKworICBFYWNoIHRpbWUgeW91IGNvbnZl
eSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CityZWNlaXZlcyBh
IGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQK
K3Byb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBu
b3QgcmVzcG9uc2libGUKK2ZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVz
IHdpdGggdGhpcyBMaWNlbnNlLgorCisgIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJh
bnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4KK29yZ2FuaXphdGlvbiwgb3Igc3Vi
c3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4KK29yZ2FuaXph
dGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3Zl
cmVkCit3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkg
dG8gdGhhdAordHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNv
IHJlY2VpdmVzIHdoYXRldmVyCitsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVk
ZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQKK2dpdmUgdW5kZXIgdGhlIHByZXZpb3Vz
IHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlCitDb3JyZXNwb25k
aW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwg
aWYKK3RoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUg
ZWZmb3J0cy4KKworICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25z
IG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKK3JpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVy
IHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5Citub3QgaW1wb3NlIGEgbGljZW5z
ZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YKK3JpZ2h0cyBn
cmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGln
YXRpb24KKyhpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdz
dWl0KSBhbGxlZ2luZyB0aGF0CithbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtp
bmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3IKK3NhbGUsIG9yIGltcG9ydGluZyB0aGUg
UHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KKworICAxMS4gUGF0ZW50cy4KKworICBBICJj
b250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRl
ciB0aGlzCitMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJv
Z3JhbSBpcyBiYXNlZC4gIFRoZQord29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29u
dHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCisKKyAgQSBjb250cmlidXRvcidzICJl
c3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zCitvd25lZCBvciBj
b250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9y
CitoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFu
bmVyLCBwZXJtaXR0ZWQKK2J5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2Vs
bGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKK2J1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMg
dGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCitjb25zZXF1ZW5jZSBvZiBmdXJ0aGVy
IG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcgorcHVycG9zZXMg
b2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50
CitwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1
aXJlbWVudHMgb2YKK3RoaXMgTGljZW5zZS4KKworICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5
b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQorcGF0ZW50IGxpY2Vu
c2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvCitt
YWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4s
IG1vZGlmeSBhbmQKK3Byb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZl
cnNpb24uCisKKyAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQg
bGljZW5zZSIgaXMgYW55IGV4cHJlc3MKK2FncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVy
IGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAorKHN1Y2ggYXMgYW4gZXhwcmVz
cyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bworc3Vl
IGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNl
bnNlIHRvIGEKK3BhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0
bWVudCBub3QgdG8gZW5mb3JjZSBhCitwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuCisKKyAgSWYg
eW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQg
bGljZW5zZSwKK2FuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90
IGF2YWlsYWJsZSBmb3IgYW55b25lCit0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhCitwdWJsaWNseSBhdmFpbGFibGUg
bmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAordGhlbiB5
b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBz
bworYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBi
ZW5lZml0IG9mIHRoZQorcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBv
ciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKK2NvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1l
bnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQKK2xpY2Vuc2UgdG8gZG93
bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQor
YWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBj
b252ZXlpbmcgdGhlCitjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVu
dCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrCitpbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdl
IG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQKK2NvdW50cnkgdGhhdCB5
b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCisKKyAgSWYsIHB1cnN1YW50IHRv
IG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcgorYXJyYW5nZW1l
bnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwg
YQorY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRo
ZSBwYXJ0aWVzCityZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRv
IHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkKK29yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhl
IGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKK3lvdSBncmFudCBpcyBhdXRv
bWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkCit3b3Jr
IGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4KKworICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmlt
aW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4KK3RoZSBzY29wZSBvZiBpdHMg
Y292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzCitjb25kaXRpb25lZCBv
biB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUK
K3NwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNv
bnZleSBhIGNvdmVyZWQKK3dvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50
IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzCitpbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0
aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50Cit0byB0aGUgdGhpcmQg
cGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZwor
dGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkg
b2YgdGhlCitwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5
b3UsIGEgZGlzY3JpbWluYXRvcnkKK3BhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdp
dGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsKK2NvbnZleWVkIGJ5IHlvdSAob3IgY29waWVz
IG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5Citmb3IgYW5kIGluIGNv
bm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdAorY29u
dGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFu
Z2VtZW50LAorb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjgg
TWFyY2ggMjAwNy4KKworICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1
ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nCithbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVy
IGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQorb3RoZXJ3aXNlIGJlIGF2YWlsYWJs
ZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgorCisgIDEyLiBObyBTdXJyZW5k
ZXIgb2YgT3RoZXJzJyBGcmVlZG9tLgorCisgIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24g
eW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKK290aGVyd2lzZSkgdGhh
dCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QK
K2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3Ug
Y2Fubm90IGNvbnZleSBhCitjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVv
dXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBw
ZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5Citub3Qg
Y29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhh
dCBvYmxpZ2F0ZSB5b3UKK3RvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWlu
ZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQordGhlIFByb2dyYW0sIHRoZSBvbmx5IHdh
eSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzCitMaWNlbnNlIHdv
dWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCisK
KyAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisK
KyAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5
b3UgaGF2ZQorcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3
aXRoIGEgd29yayBsaWNlbnNlZAordW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQorY29tYmluZWQgd29yaywgYW5kIHRv
IGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcworTGljZW5zZSB3
aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdv
cmssCitidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UsCitzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRo
cm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlCitjb21iaW5hdGlvbiBhcyBzdWNoLgor
CisgIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4KKworICBUaGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9u
cyBvZgordGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAg
U3VjaCBuZXcgdmVyc2lvbnMgd2lsbAorYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNl
bnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCithZGRyZXNzIG5ldyBwcm9i
bGVtcyBvciBjb25jZXJucy4KKworICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlz
aGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQorUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNl
cnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNl
ICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlCitvcHRp
b24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBu
dW1iZXJlZAordmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVj
aWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwg
eW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQKK2J5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24uCisKKyAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBw
cm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQordmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKK3B1YmxpYyBzdGF0ZW1l
bnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UK
K3RvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLgorCisgIExhdGVyIGxpY2Vu
c2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50CitwZXJtaXNz
aW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24g
YW55CithdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29z
aW5nIHRvIGZvbGxvdyBhCitsYXRlciB2ZXJzaW9uLgorCisgIDE1LiBEaXNjbGFpbWVyIG9mIFdh
cnJhbnR5LgorCisgIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhF
IEVYVEVOVCBQRVJNSVRURUQgQlkKK0FQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJX
SVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKK0hPTERFUlMgQU5EL09SIE9USEVS
IFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkKK09G
IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBB
UyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0KK0lTIFdJVEgg
WU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUg
Q09TVCBPRgorQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgor
CisgIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4KKworICBJTiBOTyBFVkVOVCBVTkxFU1Mg
UkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKK1dJTEwg
QU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5E
L09SIENPTlZFWVMKK1RIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRP
IFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQorR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURF
TlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFCitVU0UgT1Ig
SU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBMT1NTIE9GCitEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NT
RVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRAorUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhF
IFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksCitFVkVOIElGIFNV
Q0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCitTVUNIIERBTUFHRVMuCisKKyAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25z
IDE1IGFuZCAxNi4KKworICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRh
dGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQKK2Fib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBs
ZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLAorcmV2aWV3aW5nIGNvdXJ0cyBz
aGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCithbiBh
YnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGgg
dGhlCitQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0
eSBhY2NvbXBhbmllcyBhCitjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUu
CisKKyAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCisg
ICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMK
KworICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUg
b2YgdGhlIGdyZWF0ZXN0Citwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5
IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CitmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5
b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KKworICBU
byBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0
IGlzIHNhZmVzdAordG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZp
bGUgdG8gbW9zdCBlZmZlY3RpdmVseQorc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsg
YW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAordGhlICJjb3B5cmlnaHQiIGxpbmUg
YW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCisKKyAgICA8
b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3
aGF0IGl0IGRvZXMuPgorICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+
CisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu
b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK0Fsc28gYWRkIGluZm9y
bWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWls
LgorCisgIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQg
b3V0cHV0IGEgc2hvcnQKK25vdGljZSBsaWtlIHRoaXMgd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50
ZXJhY3RpdmUgbW9kZToKKworICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxu
YW1lIG9mIGF1dGhvcj4KKyAgICBUaGlzIHByb2dyYW0gY29tZXMgd2l0aCBBQlNPTFVURUxZIE5P
IFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLgorICAgIFRoaXMgaXMgZnJlZSBz
b2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKKyAgICB1bmRl
ciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCisKK1RoZSBo
eXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRo
ZSBhcHByb3ByaWF0ZQorcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBj
b3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCittaWdodCBiZSBkaWZmZXJlbnQ7IGZvciBh
IEdVSSBpbnRlcmZhY2UsIHlvdSB3b3VsZCB1c2UgYW4gImFib3V0IGJveCIuCisKKyAgWW91IHNo
b3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIp
IG9yIHNjaG9vbCwKK2lmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9y
IHRoZSBwcm9ncmFtLCBpZiBuZWNlc3NhcnkuCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlz
LCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEwsIHNlZQorPGh0dHA6Ly93
d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0KK2ludG8gcHJvcHJp
ZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnks
IHlvdQorbWF5IGNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3By
aWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoCit0aGUgbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5
b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNl
IGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAorPGh0dHA6
Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L3doeS1ub3QtbGdwbC5odG1sPi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tl
bGV0b25zL1JFQURNRS5jaHJvbWl1bSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2Zs
ZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL1JFQURNRS5jaHJvbWl1bQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMTVkODJlNjM2NmU1OTliMDQyNjlhZjE0MTBhMzA0OWQwZmRjNGZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0
eS9za2VsZXRvbnMvUkVBRE1FLmNocm9taXVtCkBAIC0wLDAgKzEsMTAgQEAKK05hbWU6IEJpc29u
IHNrZWxldG9ucworVVJMOiBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jpc29uLworVmVy
c2lvbjogMy4zLjIKK0xpY2Vuc2U6IEdQTAorTGljZW5zZSBGaWxlOiBMSUNFTlNFCitTZWN1cml0
eSBjcml0aWNhbDogbm8KKworRGVzY3JpcHRpb246CitCaXNvbiBpcyBhIHBhcnNlciBnZW5lcmF0
b3IuIEl0IHVzZXMgc2tlbGV0b24gZmlsZXMgYXMgdGVtcGxhdGVzIGZvciBidWlsZGluZworc2lt
aWxhciBsYW5ndWFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9iaXNvbi5tNCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25zL2Jpc29u
Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzNTkxODc1YzBmNjIzZDVmMTA4YmJjMjlmZDdhZjU4NGY2ZTczNzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJp
c29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy9iaXNvbi5tNApAQCAtMCwwICsxLDExMTEgQEAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0qLSBBdXRvY29uZiAtKi0KKworIyBMYW5ndWFnZS1pbmRlcGVuZGVudCBNNCBNYWNyb3MgZm9y
IEJpc29uLgorCisjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNC0yMDE1LCAyMDE4LTIwMTkgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv
ZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKwor
IyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgSWRlbnRpZmljYXRpb24uICAjIworIyMgLS0tLS0t
LS0tLS0tLS0tLSAjIworCisjIGI0X2dlbmVyYXRlZF9ieQorIyAtLS0tLS0tLS0tLS0tLS0KK200
X2RlZmluZShbYjRfZ2VuZXJhdGVkX2J5XSwKK1tiNF9jb21tZW50KFtBIEJpc29uIHBhcnNlciwg
bWFkZSBieSBHTlUgQmlzb24gYjRfdmVyc2lvbi5dKQorXSkKKworIyBiNF9jb3B5cmlnaHQoVElU
TEUsIFtZRUFSU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgWUVBUlMg
YXJlIG5vdCBkZWZpbmVkLCB1c2UgYjRfY29weXJpZ2h0X3llYXJzLgorbTRfZGVmaW5lKFtiNF9j
b3B5cmlnaHRdLAorW2I0X2dlbmVyYXRlZF9ieQorYjRfY29tbWVudChbJDEKKworXW00X2RxdW90
ZShtNF90ZXh0X3dyYXAoW0NvcHlyaWdodCAoQykKK11tNF9pZnZhbChbJDJdLCBbWyQyXV0sIFtt
NF9kZWZuKFtiNF9jb3B5cmlnaHRfeWVhcnNdKV0pWworRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuXSkpWworCitUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCitUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCitHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp
Y2Vuc2VzLz4uXSkKKworYjRfY29tbWVudChbQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1h
eSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5zCitwYXJ0IG9yIGFsbCBvZiB0aGUg
Qmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmlidXRlIHRoYXQgd29yawordW5kZXIgdGVy
bXMgb2YgeW91ciBjaG9pY2UsIHNvIGxvbmcgYXMgdGhhdCB3b3JrIGlzbid0IGl0c2VsZiBhCitw
YXJzZXIgZ2VuZXJhdG9yIHVzaW5nIHRoZSBza2VsZXRvbiBvciBhIG1vZGlmaWVkIHZlcnNpb24g
dGhlcmVvZgorYXMgYSBwYXJzZXIgc2tlbGV0b24uICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgbW9k
aWZ5IG9yIHJlZGlzdHJpYnV0ZQordGhlIHBhcnNlciBza2VsZXRvbiBpdHNlbGYsIHlvdSBtYXkg
KGF0IHlvdXIgb3B0aW9uKSByZW1vdmUgdGhpcworc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdp
bGwgY2F1c2UgdGhlIHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCitCaXNvbiBvdXRwdXQgZmls
ZXMgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSB3
aXRob3V0IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCisKK1RoaXMgc3BlY2lhbCBleGNlcHRpb24g
d2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KK3ZlcnNpb24gMi4y
IG9mIEJpc29uLl0pCitdKQorCisKKyMgYjRfZGlzY2xhaW1lcgorIyAtLS0tLS0tLS0tLS0tCisj
IElzc3VlIGEgd2FybmluZyBhYm91dCBwcml2YXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCitt
NF9kZWZpbmUoW2I0X2Rpc2NsYWltZXJdLAorW2I0X2NvbW1lbnQoW1VuZG9jdW1lbnRlZCBtYWNy
b3MsIGVzcGVjaWFsbHkgdGhvc2Ugd2hvc2UgbmFtZSBzdGFydCB3aXRoIFlZXywKK2FyZSBwcml2
YXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuICBEbyBub3QgcmVseSBvbiB0aGVtLl0pCitdKQor
CisKKworIyBiNF9yZXF1aXJlZF92ZXJzaW9uX2lmKFZFUlNJT04sIElGX05FV0VSLCBJRl9PTERF
UikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIElmIHRoZSB2ZXJzaW9uICVyZXF1aXJlJ2QgYnkgdGhlIHVzZXIgaXMgVkVSU0lPTiAob3Ig
bmV3ZXIpIGV4cGFuZAorIyBJRl9ORVdFUiwgb3RoZXJ3aXNlIElGX09MREVSLiAgVkVSU0lPTiBz
aG91bGQgYmUgYW4gaW50ZWdlciwgZS5nLiwKKyMgMzAyIGZvciAzLjIuCittNF9kZWZpbmUoW2I0
X3JlcXVpcmVkX3ZlcnNpb25faWZdLAorW200X2lmKG00X2V2YWwoJDEgPD0gYjRfcmVxdWlyZWRf
dmVyc2lvbiksCisgICAgICAgICAgICAgIFsxXSwgWyQyXSwgWyQzXSldKQorCisKKyMjIC0tLS0t
LS0tICMjCisjIyBPdXRwdXQuICAjIworIyMgLS0tLS0tLS0gIyMKKworIyBiNF9vdXRwdXRfYmVn
aW4oRklMRTEsIEZJTEUyKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbmFi
bGUgb3V0cHV0LCBpLmUuLCBzZW5kIHRvIGRpdmVyc2lvbiAwLCBleHBhbmQgYWZ0ZXIgIiMiLCBh
bmQKKyMgZ2VuZXJhdGUgdGhlIHRhZyB0byBvdXRwdXQgaW50byBGSUxFLiAgTXVzdCBiZSBmb2xs
b3dlZCBieSBFT0wuCisjIEZJTEUgaXMgRklMRTEgY29uY2F0ZW5hdGVkIHRvIEZJTEUyLiAgRklM
RTIgY2FuIGJlIGVtcHR5LCBvciBiZQorIyBhYnNvbHV0ZTogZG8gdGhlIHJpZ2h0IHRoaW5nLgor
bTRfZGVmaW5lKFtiNF9vdXRwdXRfYmVnaW5dLAorW200X2NoYW5nZWNvbSgpCittNF9kaXZlcnRf
cHVzaCgwKWRubAorQG91dHB1dChtNF91bnF1b3RlKFskMV0pQCxtNF91bnF1b3RlKFskMl0pQClA
ZG5sCitdKQorCisKKyMgYjRfb3V0cHV0X2VuZAorIyAtLS0tLS0tLS0tLS0tCisjIE91dHB1dCBu
b3RoaW5nLCByZXN0b3JlICMgYXMgY29tbWVudCBjaGFyYWN0ZXIgKG5vIGV4cGFuc2lvbnMgYWZ0
ZXIgIykuCittNF9kZWZpbmUoW2I0X291dHB1dF9lbmRdLAorW200X2RpdmVydF9wb3AoMCkKK200
X2NoYW5nZWNvbShbI10pCitdKQorCisKKyMgYjRfZGl2ZXJ0X2tpbGwoQ09ERSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIENPREUgZm9yIGl0cyBzaWRlIGVmZmVjdHMsIGRpc2Nh
cmQgaXRzIG91dHB1dC4KK200X2RlZmluZShbYjRfZGl2ZXJ0X2tpbGxdLAorW200X2RpdmVydF90
ZXh0KFtLSUxMXSwgWyQxXSldKQorCisKKyMgYjRfZGVmaW5lX3NpbGVudChNQUNSTywgQ09ERSkK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2FtZSBhcyBtNF9kZWZpbmUsIGJ1
dCB0aHJvdyBhd2F5IHRoZSBleHBhbnNpb24gb2YgQ09ERS4KK200X2RlZmluZShbYjRfZGVmaW5l
X3NpbGVudF0sCitbbTRfZGVmaW5lKFskMV0sIFtiNF9kaXZlcnRfa2lsbChbJDJdKV0pXSkKKwor
CisjIyAtLS0tLS0tLS0tLS0tLS0tICMjCisjIyBFcnJvciBoYW5kbGluZy4gICMjCisjIyAtLS0t
LS0tLS0tLS0tLS0tICMjCisKKyMgVGhlIGZvbGxvd2luZyBlcnJvciBoYW5kbGluZyBtYWNyb3Mg
cHJpbnQgZXJyb3IgZGlyZWN0aXZlcyB0aGF0IHNob3VsZCBub3QKKyMgYmVjb21lIGFyZ3VtZW50
cyBvZiBvdGhlciBtYWNybyBpbnZvY2F0aW9ucyBzaW5jZSB0aGV5IHdvdWxkIGxpa2VseSB0aGVu
IGJlCisjIG1hbmdsZWQuICBUaHVzLCB0aGV5IHByaW50IHRvIHN0ZG91dCBkaXJlY3RseS4KKwor
IyBiNF9jYXQoVEVYVCkKKyMgLS0tLS0tLS0tLS0tCisjIFdyaXRlIFRFWFQgdG8gc3Rkb3V0LiAg
UHJlY2VkZSB0aGUgZmluYWwgbmV3bGluZSB3aXRoIGFuIEAgc28gdGhhdCBpdCdzCisjIGVzY2Fw
ZWQuICBGb3IgZXhhbXBsZToKKyMKKyMgICBiNF9jYXQoW1tAY29tcGxhaW4oaW52YWxpZCBpbnB1
dEApXV0pCittNF9kZWZpbmUoW2I0X2NhdF0sCitbbTRfc3lzY21kKFtjYXQgPDwnX200ZW9mJwor
XW00X2JwYXRzdWJzdChtNF9kcXVvdGUoJDEpLCBbX200ZW9mXSwgW19tNEBgZW9mXSlbQAorX200
ZW9mCitdKWRubAorbTRfaWYobTRfc3lzdmFsLCBbMF0sIFtdLCBbbTRfZmF0YWwoWyQwOiBjYW5u
b3Qgd3JpdGUgdG8gc3Rkb3V0XSldKV0pCisKKyMgYjRfZXJyb3IoS0lORCwgU1RBUlQsIEVORCwg
Rk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdyaXRlIEBLSU5EKFNUQVJUQCxFTkRA
LEZPUk1BVEAsQVJHMUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0LgorIworIyBGb3IgZXhhbXBsZToK
KyMKKyMgICBiNF9lcnJvcihbW2NvbXBsYWluXV0sIFtbaW5wdXQueToyLjNdXSwgW1tpbnB1dC55
OjUuNF1dLAorIyAgICAgICAgICAgIFtbaW52YWxpZCAlc11dLCBbW2Zvb11dKQorbTRfZGVmaW5l
KFtiNF9lcnJvcl0sCitbYjRfY2F0KFtbQGNvbXBsYWluXVsoXSQxW0AsXSQyW0AsXSQzW0AsXSQ0
W11dZG5sCitbbTRfaWYoWyQjXSwgWzRdLCBbXSwKKyAgICAgICBbbTRfZm9yZWFjaChbYjRfYXJn
XSwKKyAgICAgICAgICAgICAgICAgICBtNF9kcXVvdGUobTRfc2hpZnQobTRfc2hpZnQobTRfc2hp
ZnQobTRfc2hpZnQoJEApKSkpKSwKKyAgICAgICAgICAgICAgICAgICBbW0AsXWI0X2FyZ10pXSlb
QCldXSldKQorCisjIGI0X3dhcm4oRk9STUFULCBbQVJHMV0sIFtBUkcyXSwgLi4uKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV3JpdGUgQHdhcm4oRk9STUFUQCxB
UkcxQCxBUkcyQCwuLi5AKSB0byBzdGRvdXQuCisjCisjIEZvciBleGFtcGxlOgorIworIyAgIGI0
X3dhcm4oW1tpbnZhbGlkIHZhbHVlIGZvciAnJXMnOiAlc11dLCBbW2Zvb11dLCBbWzNdXSkKKyMK
KyMgQXMgYSBzaW1wbGUgdGVzdCBzdWl0ZSwgdGhpczoKKyMKKyMgICBtNF9kaXZlcnQoLTEpCisj
ICAgbTRfZGVmaW5lKFthc2RmXSwgW0FTREZdKQorIyAgIG00X2RlZmluZShbZnNhXSwgW0ZTQV0p
CisjICAgbTRfZGVmaW5lKFtmZHNhXSwgW0ZEU0FdKQorIyAgIGI0X3dhcm5fYXQoW1tbYXNkZiks
IGFzZGZdXV0sIFtbW2ZzYSksIGZzYV1dXSwgW1tbZmRzYSksIGZkc2FdXV0pCisjICAgYjRfd2Fy
bl9hdChbW2FzZGYpLCBhc2RmXV0sIFtbZnNhKSwgZnNhXV0sIFtbZmRzYSksIGZkc2FdXSkKKyMg
ICBiNF93YXJuX2F0KCkKKyMgICBiNF93YXJuX2F0KDEpCisjICAgYjRfd2Fybl9hdCgxLCAyKQor
IworIyBTaG91bGQgcHJvZHVjZSB0aGlzIHdpdGhvdXQgbmV3bGluZXM6CisjCisjICAgQHdhcm5f
YXQoW2FzZGYpLCBhc2RmXUAsQCxALFtmc2EpLCBmc2FdQCxbZmRzYSksIGZkc2FdQCkKKyMgICBA
d2Fybihhc2RmKSwgYXNkZkAsQCxALGZzYSksIGZzYUAsZmRzYSksIGZkc2FAKQorIyAgIEB3YXJu
KEApCisjICAgQHdhcm4oMUApCisjICAgQHdhcm4oMUAsMkApCittNF9kZWZpbmUoW2I0X3dhcm5d
LAorW2I0X2Vycm9yKFtbd2Fybl1dLCBbXSwgW10sICRAKV0pCisKKyMgYjRfd2Fybl9hdChTVEFS
VCwgRU5ELCBGT1JNQVQsIFtBUkcxXSwgW0FSRzJdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBXcml0ZSBAd2FybihTVEFSVEAs
RU5EQCxGT1JNQVRALEFSRzFALEFSRzJALC4uLkApIHRvIHN0ZG91dC4KKyMKKyMgRm9yIGV4YW1w
bGU6CisjCisjICAgYjRfd2Fybl9hdChbW2lucHV0Lnk6Mi4zXV0sIFtbaW5wdXQueTo1LjRdXSwg
W1tpbnZhbGlkICVzXV0sIFtbZm9vXV0pCittNF9kZWZpbmUoW2I0X3dhcm5fYXRdLAorW2I0X2Vy
cm9yKFtbd2Fybl1dLCAkQCldKQorCisjIGI0X2NvbXBsYWluKEZPUk1BVCwgW0FSRzFdLCBbQVJH
Ml0sIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBC
b3VuY2UgdG8gYjRfY29tcGxhaW5fYXQuCisjCisjIFNlZSBiNF93YXJuIGV4YW1wbGUuCittNF9k
ZWZpbmUoW2I0X2NvbXBsYWluXSwKK1tiNF9lcnJvcihbW2NvbXBsYWluXV0sIFtdLCBbXSwgJEAp
XSkKKworIyBiNF9jb21wbGFpbl9hdChTVEFSVCwgRU5ELCBGT1JNQVQsIFtBUkcxXSwgW0FSRzJd
LCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMgV3JpdGUgQGNvbXBsYWluKFNUQVJUQCxFTkRALEZPUk1BVEAsQVJHMUAsQVJH
MkAsLi4uQCkgdG8gc3Rkb3V0LgorIworIyBTZWUgYjRfd2Fybl9hdCBleGFtcGxlLgorbTRfZGVm
aW5lKFtiNF9jb21wbGFpbl9hdF0sCitbYjRfZXJyb3IoW1tjb21wbGFpbl1dLCAkQCldKQorCisj
IGI0X2ZhdGFsKEZPUk1BVCwgW0FSRzFdLCBbQVJHMl0sIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBCb3VuY2UgdG8gYjRfZmF0YWxfYXQuCisjCisjIFNl
ZSBiNF93YXJuIGV4YW1wbGUuCittNF9kZWZpbmUoW2I0X2ZhdGFsXSwKK1tiNF9lcnJvcihbW2Zh
dGFsXV0sIFtdLCBbXSwgJEApZG5sCittNF9leGl0KDEpXSkKKworIyBiNF9mYXRhbF9hdChTVEFS
VCwgRU5ELCBGT1JNQVQsIFtBUkcxXSwgW0FSRzJdLCAuLi4pCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV3JpdGUgQGZhdGFsKFNUQVJU
QCxFTkRALEZPUk1BVEAsQVJHMUAsQVJHMkAsLi4uQCkgdG8gc3Rkb3V0IGFuZCBleGl0LgorIwor
IyBTZWUgYjRfd2Fybl9hdCBleGFtcGxlLgorbTRfZGVmaW5lKFtiNF9mYXRhbF9hdF0sCitbYjRf
ZXJyb3IoW1tmYXRhbF1dLCAkQClkbmwKK200X2V4aXQoMSldKQorCisKKyMjIC0tLS0tLS0tLS0t
LSAjIworIyMgRGF0YSBUeXBlcy4gICMjCisjIyAtLS0tLS0tLS0tLS0gIyMKKworIyBiNF9pbnRz
X2luKElOVDEsIElOVDIsIExPVywgSElHSCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisjIFJldHVybiAxIGlmZiBib3RoIElOVDEgYW5kIElOVDIgYXJlIGluIFtMT1csIEhJ
R0hdLCAwIG90aGVyd2lzZS4KK200X2RlZmluZShbYjRfaW50c19pbl0sCitbbTRfZXZhbChbJDMg
PD0gJDEgJiYgJDEgPD0gJDQgJiYgJDMgPD0gJDIgJiYgJDIgPD0gJDRdKV0pCisKKworIyBiNF9z
dWJ0cmFjdChMSFMsIFJIUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV2YWx1YXRlIExI
UyAtIFJIUyBpZiB0aGV5IGFyZSBpbnRlZ2VyIGxpdGVyYWxzLCBvdGhlcndpc2UgZXhwYW5kCisj
IHRvIChMSFMpIC0gKFJIUykuCittNF9kZWZpbmUoW2I0X3N1YnRyYWN0XSwKK1ttNF9ibWF0Y2go
WyQxJDJdLCBbXlswMTIzNDU2Nzg5XSokXSwKKyAgICAgICAgICAgW200X2V2YWwoWyQxIC0gJDJd
KV0sCisgICAgICAgICAgIFsoJDEpIC0gKCQyKV0pXSkKKworIyBiNF9qb2luKEFSRzEsIC4uLikK
KyMgX2I0X2pvaW4oQVJHMSwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIEpvaW4gd2l0
aCBjb21tYSwgc2tpcHBpbmcgZW1wdHkgYXJndW1lbnRzLgorIyBiNF9qb2luIGNhbGxzIGl0c2Vs
ZiByZWN1cnNpdmVseSB1bnRpbCBpdCBzZWVzIHRoZSBmaXJzdCBub24tZW1wdHkKKyMgYXJndW1l
bnQsIHRoZW4gY2FsbHMgX2I0X2pvaW4gKGkuZS4sIGBfJDBgKSB3aGljaCBwcmVwZW5kcyBlYWNo
CisjIG5vbi1lbXB0eSBhcmd1bWVudCB3aXRoIGEgY29tbWEuCittNF9kZWZpbmUoW2I0X2pvaW5d
LAorW200X2lmKFskIyQxXSwKKyAgICAgICBbMV0sIFtdLAorICAgICAgIFttNF9pZnZhbChbJDFd
LAorICAgICAgICAgICAgICAgICBbJDFbXV8kMChtNF9zaGlmdCgkQCkpXSwKKyAgICAgICAgICAg
ICAgICAgWyQwKG00X3NoaWZ0KCRAKSldKV0pXSkKKworIyBfYjRfam9pbihBUkdTMSwgLi4uKQor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfYjRfam9pbl0sCitbbTRfaWYoWyQj
JDFdLAorICAgICAgIFsxXSwgW10sCisgICAgICAgW200X2lmdmFsKFskMV0sIFssICQxXSlbXSQw
KG00X3NoaWZ0KCRAKSldKV0pCisKKworCisKKyMgYjRfaW50ZWdyYWxfcGFyc2VyX3RhYmxlc19t
YXAoTUFDUk8pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWFw
IE1BQ1JPIG9uIGFsbCB0aGUgaW50ZWdyYWwgdGFibGVzLiAgTUFDUk8gaXMgZXhwZWN0ZWQgdG8g
aGF2ZQorIyB0aGUgc2lnbmF0dXJlIE1BQ1JPKFRBQkxFLU5BTUUsIENPTlRFTlQsIENPTU1FTlQp
LgorbTRfZGVmaW5lKFtiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVzX21hcF0sCitbJDEoW3BhY3Rd
LCBbYjRfcGFjdF0sCisgICAgW1tZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxF
IG9mIHRoZSBwb3J0aW9uIGRlc2NyaWJpbmcKK1NUQVRFLU5VTS5dXSkKKworJDEoW2RlZmFjdF0s
IFtiNF9kZWZhY3RdLAorICAgW1tZWURFRkFDVFtTVEFURS1OVU1dIC0tIERlZmF1bHQgcmVkdWN0
aW9uIG51bWJlciBpbiBzdGF0ZSBTVEFURS1OVU0uCitQZXJmb3JtZWQgd2hlbiBZWVRBQkxFIGRv
ZXMgbm90IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvCittZWFucyB0aGUgZGVm
YXVsdCBpcyBhbiBlcnJvci5dXSkKKworJDEoW3Bnb3RvXSwgW2I0X3Bnb3RvXSwgW1tZWVBHT1RP
W05URVJNLU5VTV0uXV0pCisKKyQxKFtkZWZnb3RvXSwgW2I0X2RlZmdvdG9dLCBbW1lZREVGR09U
T1tOVEVSTS1OVU1dLl1dKQorCiskMShbdGFibGVdLCBbYjRfdGFibGVdLAorICAgW1tZWVRBQkxF
W1lZUEFDVFtTVEFURS1OVU1dXSAtLSBXaGF0IHRvIGRvIGluIHN0YXRlIFNUQVRFLU5VTS4gIElm
Citwb3NpdGl2ZSwgc2hpZnQgdGhhdCB0b2tlbi4gIElmIG5lZ2F0aXZlLCByZWR1Y2UgdGhlIHJ1
bGUgd2hvc2UKK251bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRh
eCBlcnJvci5dXSkKKworJDEoW2NoZWNrXSwgW2I0X2NoZWNrXSkKKworJDEoW3N0b3NdLCBbYjRf
c3Rvc10sCisgICBbW1lZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9m
IHRoZSkgYWNjZXNzaW5nCitzeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLl1dKQorCiskMShbcjFd
LCBbYjRfcjFdLAorICAgW1tZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhh
dCBydWxlIFlZTiBkZXJpdmVzLl1dKQorCiskMShbcjJdLCBbYjRfcjJdLAorICAgW1tZWVIyW1lZ
Tl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZ
Ti5dXSkKK10pCisKKworIyBiNF9wYXJzZXJfdGFibGVzX2RlY2xhcmUKKyMgYjRfcGFyc2VyX3Rh
Ymxlc19kZWZpbmUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZS9kZWNsYXJl
IHRoZSAoZGV0ZXJtaW5pc3RpYykgcGFyc2VyIHRhYmxlcy4KK200X2RlZmluZShbYjRfcGFyc2Vy
X3RhYmxlc19kZWNsYXJlXSwKK1tiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVzX21hcChbYjRfaW50
ZWdyYWxfcGFyc2VyX3RhYmxlX2RlY2xhcmVdKV0pCisKK200X2RlZmluZShbYjRfcGFyc2VyX3Rh
Ymxlc19kZWZpbmVdLAorW2I0X2ludGVncmFsX3BhcnNlcl90YWJsZXNfbWFwKFtiNF9pbnRlZ3Jh
bF9wYXJzZXJfdGFibGVfZGVmaW5lXSldKQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tICMj
CisjIyBEZWNvZGluZyBvcHRpb25zLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisj
IGI0X2ZsYWdfaWYoRkxBRywgSUYtVFJVRSwgSUYtRkFMU0UpCisjIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIFJ1biBJRi1UUlVFIGlmIGI0X0ZMQUdfZmxhZyBpcyAxLCBJ
Ri1GQUxTRSBpZiBGTEFHIGlzIDAsIG90aGVyd2lzZSBmYWlsLgorbTRfZGVmaW5lKFtiNF9mbGFn
X2lmXSwKK1ttNF9jYXNlKGI0XyQxX2ZsYWcsCisgICAgICAgICBbMF0sIFskM10sCisgICAgICAg
ICBbMV0sIFskMl0sCisgICAgICAgICBbbTRfZmF0YWwoW2ludmFsaWQgJDEgdmFsdWU6IF1iNF8k
MV9mbGFnKV0pXSkKKworCisjIGI0X2RlZmluZV9mbGFnX2lmKEZMQUcpCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIERlZmluZSAiYjRfRkxBR19pZihJRi1UUlVFLCBJRi1GQUxTRSkiIHRo
YXQgZGVwZW5kcyBvbiB0aGUKKyMgdmFsdWUgb2YgdGhlIEJvb2xlYW4gRkxBRy4KK200X2RlZmlu
ZShbYjRfZGVmaW5lX2ZsYWdfaWZdLAorW19iNF9kZWZpbmVfZmxhZ19pZigkWzFdLCAkWzJdLCBb
JDFdKV0pCisKKyMgX2I0X2RlZmluZV9mbGFnX2lmKCQxLCAkMiwgRkxBRykKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV29yayBhcm91bmQgdGhlIGltcG9zc2liaWxpdHkg
dG8gZGVmaW5lIG1hY3JvcyBpbnNpZGUgbWFjcm9zLAorIyBiZWNhdXNlIGlzc3VpbmcgJ1skMV0n
IGlzIG5vdCBwb3NzaWJsZSBpbiBNNC4gIEdOVSBNNCBzaG91bGQgcHJvdmlkZQorIyAkJDEgYSBs
YSBNNS9UZVguCittNF9kZWZpbmUoW19iNF9kZWZpbmVfZmxhZ19pZl0sCitbbTRfaWYoWyQxJDJd
LCAkWzFdJFsyXSwgW10sCisgICAgICAgW200X2ZhdGFsKFskMDogSW52YWxpZCBhcmd1bWVudHM6
ICRAXSldKWRubAorbTRfZGVmaW5lKFtiNF8kM19pZl0sCisgICAgICAgICAgW2I0X2ZsYWdfaWYo
WyQzXSwgWyQxXSwgWyQyXSldKV0pCisKKworIyBiNF9GTEFHX2lmKElGLVRSVUUsIElGLUZBTFNF
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFeHBhbmQgSUYtVFJVRSwgaWYg
RkxBRyBpcyB0cnVlLCBJRi1GQUxTRSBvdGhlcndpc2UuCitiNF9kZWZpbmVfZmxhZ19pZihbZGVm
aW5lc10pICAgICAgICAgICAgIyBXaGV0aGVyIGhlYWRlcnMgYXJlIHJlcXVlc3RlZC4KK2I0X2Rl
ZmluZV9mbGFnX2lmKFtnbHJdKSAgICAgICAgICAgICAgICAjIFdoZXRoZXIgYSBHTFIgcGFyc2Vy
IGlzIHJlcXVlc3RlZC4KK2I0X2RlZmluZV9mbGFnX2lmKFtub25kZXRlcm1pbmlzdGljXSkgICAj
IFdoZXRoZXIgY29uZmxpY3RzIHNob3VsZCBiZSBoYW5kbGVkLgorYjRfZGVmaW5lX2ZsYWdfaWYo
W3Rva2VuX3RhYmxlXSkgICAgICAgICMgV2hldGhlciB5eXRva2VuX3RhYmxlIGlzIGRlbWFuZGVk
LgorYjRfZGVmaW5lX2ZsYWdfaWYoW3lhY2NdKSAgICAgICAgICAgICAgICMgV2hldGhlciBQT1NJ
WCBZYWNjIGlzIGVtdWxhdGVkLgorCisKKyMgYjRfZ2xyX2NjX2lmKFtJRi1UUlVFXSwgW0lGLUZB
TFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShb
YjRfZ2xyX2NjX2lmXSwKKyAgICAgICAgICBbbTRfaWYoYjRfc2tlbGV0b24sIFsiZ2xyLmNjIl0s
ICRAKV0pCisKKworIyMgLS0tLS0tLS0tICMjCisjIyBTeW1ib2xzLiAgIyMKKyMjIC0tLS0tLS0t
LSAjIworCisjIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBTeW1ib2wgaGFuZGxpbmcsIHNlZSBS
RUFETUUuCisjCisjIFRoZSBmb2xsb3dpbmcgbWFjcm9zIHByb3ZpZGUgYWNjZXNzIHRvIHN5bWJv
bCByZWxhdGVkIHZhbHVlcy4KKworIyBfX2I0X3N5bWJvbChOVU0sIEZJRUxEKQorIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBSZWNvdmVyIGEgRklFTEQgYWJvdXQgc3ltYm9sICNOVU0uICBU
aGFua3MgdG8gbTRfaW5kaXIsIGZhaWxzIGlmCisjIHVuZGVmaW5lZC4KK200X2RlZmluZShbX19i
NF9zeW1ib2xdLAorW200X2luZGlyKFtiNF9zeW1ib2woJDEsICQyKV0pXSkKKworCisjIF9iNF9z
eW1ib2woTlVNLCBGSUVMRCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZWNvdmVyIGEg
RklFTEQgYWJvdXQgc3ltYm9sICNOVU0gKG9yICJvcmlnIE5VTSIpLiAgRmFpbHMgaWYKKyMgdW5k
ZWZpbmVkLgorbTRfZGVmaW5lKFtfYjRfc3ltYm9sXSwKK1ttNF9pZmRlZihbYjRfc3ltYm9sKCQx
LCBudW1iZXIpXSwKKyAgICAgICAgICBbX19iNF9zeW1ib2wobTRfaW5kaXIoW2I0X3N5bWJvbCgk
MSwgbnVtYmVyKV0pLCAkMildLAorICAgICAgICAgIFtfX2I0X3N5bWJvbChbJDFdLCBbJDJdKV0p
XSkKKworCisKKyMgYjRfc3ltYm9sKE5VTSwgRklFTEQpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBSZWNvdmVyIGEgRklFTEQgYWJvdXQgc3ltYm9sICNOVU0gKG9yICJvcmlnIE5VTSIpLiAg
RmFpbHMgaWYKKyMgdW5kZWZpbmVkLiAgSWYgRklFTEQgPSBpZCwgcHJlcGVuZCB0aGUgdG9rZW4g
cHJlZml4LgorbTRfZGVmaW5lKFtiNF9zeW1ib2xdLAorW200X2Nhc2UoWyQyXSwKKyAgICAgICAg
IFtpZF0sICAgIFttNF9kbyhbYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFthcGkudG9rZW4ucHJlZml4
XSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtfYjRfc3ltYm9sKFskMV0sIFtpZF0pXSld
LAorICAgICAgICAgW19iNF9zeW1ib2woJEApXSldKQorCisKKyMgYjRfc3ltYm9sX2lmKE5VTSwg
RklFTEQsIElGLVRSVUUsIElGLUZBTFNFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisjIElmIEZJRUxEIGFib3V0IHN5bWJvbCAjTlVNIGlzIDEgZXhwYW5k
IElGLVRSVUUsIGlmIGlzIDAsIGV4cGFuZCBJRi1GQUxTRS4KKyMgT3RoZXJ3aXNlIGFuIGVycm9y
LgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfaWZdLAorW200X2Nhc2UoYjRfc3ltYm9sKFskMV0sIFsk
Ml0pLAorICAgICAgICAgWzFdLCBbJDNdLAorICAgICAgICAgWzBdLCBbJDRdLAorICAgICAgICAg
W200X2ZhdGFsKFskMDogZmllbGQgJDIgb2YgJDEgaXMgbm90IGEgQm9vbGVhbjpdIGI0X3N5bWJv
bChbJDFdLCBbJDJdKSldKV0pCisKKworIyBiNF9zeW1ib2xfdGFnX2NvbW1lbnQoU1lNQk9MLU5V
TSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElzc3VlIGEgY29tbWVu
dCBnaXZpbmcgdGhlIHRhZyBvZiBzeW1ib2wgTlVNLgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfdGFn
X2NvbW1lbnRdLAorW2I0X2NvbW1lbnQoW2I0X3N5bWJvbChbJDFdLCBbdGFnXSldKQorXSkKKwor
CisjIGI0X3N5bWJvbF9hY3Rpb25fbG9jYXRpb24oU1lNQk9MLU5VTSwgS0lORCkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXBvcnQgdGhlIGxvY2F0
aW9uIG9mIHRoZSBLSU5EIGFjdGlvbiBhcyBGSUxFOkxJTkUuCittNF9kZWZpbmUoW2I0X3N5bWJv
bF9hY3Rpb25fbG9jYXRpb25dLAorW2I0X3N5bWJvbChbJDFdLCBbJDJfZmlsZV0pOmI0X3N5bmNs
aW5lKFtiNF9zeW1ib2woWyQxXSwgWyQyX2xpbmVdKV0pXSkKKworCisjIGI0X3N5bWJvbF9hY3Rp
b24oU1lNQk9MLU5VTSwgS0lORCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBSdW4gdGhlIGFjdGlvbiBLSU5EIChkZXN0cnVjdG9yIG9yIHByaW50ZXIpIGZvciBTWU1C
T0wtTlVNLgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfYWN0aW9uXSwKK1tiNF9zeW1ib2xfaWYoWyQx
XSwgW2hhc18kMl0sCitbYjRfZG9sbGFyX3B1c2hkZWYoWygqeXl2YWx1ZXApXSwKKyAgICAgICAg
ICAgICAgICAgICBbJDFdLAorICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAg
ICAgIFsoKnl5bG9jYXRpb25wKV0pZG5sCisgICAgX2I0X3N5bWJvbF9jYXNlKFskMV0pW11kbmwK
K2I0X3N5bmNsaW5lKFtiNF9zeW1ib2woWyQxXSwgWyQyX2xpbmVdKV0sIFtiNF9zeW1ib2woWyQx
XSwgWyQyX2ZpbGVdKV0pCisgICAgICBiNF9zeW1ib2woWyQxXSwgWyQyXSkKK2I0X3N5bmNsaW5l
KFtAb2xpbmVAXSwgW0BvZmlsZUBdKQorICAgICAgICBicmVhazsKKworYjRfZG9sbGFyX3BvcGRl
ZltdZG5sCitdKV0pCisKKworIyBiNF9zeW1ib2xfZGVzdHJ1Y3RvcihTWU1CT0wtTlVNKQorIyBi
NF9zeW1ib2xfcHJpbnRlcihTWU1CT0wtTlVNKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorbTRfZGVmaW5lKFtiNF9zeW1ib2xfZGVzdHJ1Y3Rvcl0sIFtiNF9zeW1ib2xfYWN0
aW9uKFskMV0sIFtkZXN0cnVjdG9yXSldKQorbTRfZGVmaW5lKFtiNF9zeW1ib2xfcHJpbnRlcl0s
ICAgIFtiNF9zeW1ib2xfYWN0aW9uKFskMV0sIFtwcmludGVyXSldKQorCisKKyMgYjRfc3ltYm9s
X2FjdGlvbnMoS0lORCwgW1RZUEUgPSB5eXR5cGVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIEVtaXQgdGhlIHN5bWJvbCBhY3Rpb25zIGZvciBLSU5EICgi
cHJpbnRlciIgb3IgImRlc3RydWN0b3IiKS4KKyMgRGlzcGF0Y2ggb24gVFlQRS4KK200X2RlZmlu
ZShbYjRfc3ltYm9sX2FjdGlvbnNdLAorW200X3B1c2hkZWYoW2I0X2FjdGlvbnNfXSwgbTRfZXhw
YW5kKFtiNF9zeW1ib2xfZm9yZWFjaChbYjRfc3ltYm9sXyQxXSldKSlkbmwKK200X2lmdmFsKG00
X2RlZm4oW2I0X2FjdGlvbnNfXSksCitbc3dpdGNoIChtNF9kZWZhdWx0KFskMl0sIFt5eXR5cGVd
KSkKKyAgICB7CittNF9kZWZuKFtiNF9hY3Rpb25zX10pW11kbmwKKyAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH1kbmwKK10sCitbWVlVU0UgKG00X2RlZmF1bHQoWyQyXSwgW3l5
dHlwZV0pKTtdKWRubAorbTRfcG9wZGVmKFtiNF9hY3Rpb25zX10pZG5sCitdKQorCisjIF9iNF9z
eW1ib2xfY2FzZShTWU1CT0wtTlVNKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
SXNzdWUgYSAiY2FzZSBOVU0iIGZvciBTWU1CT0wtTlVNLiAgRW5kcyB3aXRoIGl0cyBFT0wgdG8g
bWFrZSBpdAorIyBlYXNpZXIgdG8gdXNlIHdpdGggbTRfbWFwLCBidXQgdGhlbiwgdXNlIFtdZG5s
IHRvIHN1cHByZXNzIHRoZSBsYXN0CisjIG9uZS4KK200X2RlZmluZShbX2I0X3N5bWJvbF9jYXNl
XSwKK1tjYXNlIGI0X3N5bWJvbChbJDFdLCBbbnVtYmVyXSk6IGI0X3N5bWJvbF90YWdfY29tbWVu
dChbJDFdKV0pCitdKQorCisKKyMgYjRfc3ltYm9sX2ZvcmVhY2goTUFDUk8pCisjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorIyBJbnZva2UgTUFDUk8oU1lNQk9MLU5VTSkgZm9yIGVhY2ggU1lN
Qk9MLU5VTS4KK200X2RlZmluZShbYjRfc3ltYm9sX2ZvcmVhY2hdLAorICAgICAgICAgIFttNF9t
YXAoWyQxXSwgbTRfZGVmbihbYjRfc3ltYm9sX251bWJlcnNdKSldKQorCisjIGI0X3N5bWJvbF9t
YXAoTUFDUk8pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybiBhIGxpc3QgKHBvc3Np
Ymx5IGVtcHR5IGVsZW1lbnRzKSBvZiBNQUNSTyBpbnZva2VkIGZvciBlYWNoCisjIFNZTUJPTC1O
VU0uCittNF9kZWZpbmUoW2I0X3N5bWJvbF9tYXBdLAorW200X21hcF9hcmdzX3NlcChbJDEoXSwg
WyldLCBbLF0sIGI0X3N5bWJvbF9udW1iZXJzKV0pCisKKworIyBiNF90b2tlbl92aXNpYmxlX2lm
KE5VTSwgSUYtVFJVRSwgSUYtRkFMU0UpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgV2hldGhlciBOVU0gZGVub3RlcyBhIHRva2VuIHRoYXQgaGFzIGFu
IGV4cG9ydGVkIGRlZmluaXRpb24gKGkuZS4sCisjIHNob3dzIGluIGVudW0geXl0b2tlbnR5cGUp
LgorbTRfZGVmaW5lKFtiNF90b2tlbl92aXNpYmxlX2lmXSwKK1tiNF9zeW1ib2xfaWYoWyQxXSwg
W2lzX3Rva2VuXSwKKyAgICAgICAgICAgICAgW2I0X3N5bWJvbF9pZihbJDFdLCBbaGFzX2lkXSwg
WyQyXSwgWyQzXSldLAorICAgICAgICAgICAgICBbJDNdKV0pCisKKyMgYjRfdG9rZW5faGFzX2Rl
ZmluaXRpb24oTlVNKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIDEgaWYgTlVN
IGlzIHZpc2libGUsIG5vdGhpbmcgb3RoZXJ3aXNlLgorbTRfZGVmaW5lKFtiNF90b2tlbl9oYXNf
ZGVmaW5pdGlvbl0sCitbYjRfdG9rZW5fdmlzaWJsZV9pZihbJDFdLCBbMV0pXSkKKworIyBiNF9h
bnlfdG9rZW5fdmlzaWJsZV9pZihbSUYtVFJVRV0sIFtJRi1GQUxTRV0pCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV2hldGhlciB0aGVyZSBpcyBh
IHRva2VuIHRoYXQgbmVlZHMgdG8gYmUgZGVmaW5lZC4KK200X2RlZmluZShbYjRfYW55X3Rva2Vu
X3Zpc2libGVfaWZdLAorW200X2lmdmFsKGI0X3N5bWJvbF9mb3JlYWNoKFtiNF90b2tlbl9oYXNf
ZGVmaW5pdGlvbl0pLAorICAgICAgICAgIFskMV0sIFskMl0pXSkKKworCisjIGI0X3Rva2VuX2Zv
cm1hdChGT1JNQVQsIE5VTSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVm
aW5lKFtiNF90b2tlbl9mb3JtYXRdLAorW2I0X3Rva2VuX3Zpc2libGVfaWYoWyQyXSwKK1ttNF9x
dW90ZShtNF9mb3JtYXQoWyQxXSwKKyAgICAgICAgICAgICAgICAgICAgIFtiNF9zeW1ib2woWyQy
XSwgW2lkXSldLAorICAgICAgICAgICAgICAgICAgICAgW2I0X3N5bWJvbChbJDJdLCBbdXNlcl9u
dW1iZXJdKV0pKV0pXSkKKworCisjIyAtLS0tLS0tICMjCisjIyBUeXBlcy4gICMjCisjIyAtLS0t
LS0tICMjCisKKyMgX2I0X3R5cGVfYWN0aW9uKE5VTVMpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBSdW4gYWN0aW9ucyBmb3IgdGhlIHN5bWJvbCBOVU1TIHRoYXQgYWxsIGhhdmUgdGhlIHNh
bWUgdHlwZS1uYW1lLgorIyBTa2lwIE5VTVMgdGhhdCBoYXZlIG5vIHR5cGUtbmFtZS4KKyMKKyMg
VG8gc3BlY2lmeSB0aGUgYWN0aW9uIHRvIHJ1biwgZGVmaW5lIGI0X2RvbGxhcl9kb2xsYXIoU1lN
Qk9MLU5VTSwKKyMgVEFHLCBUWVBFKS4KK200X2RlZmluZShbX2I0X3R5cGVfYWN0aW9uXSwKK1ti
NF9zeW1ib2xfaWYoWyQxXSwgW2hhc190eXBlXSwKK1ttNF9tYXAoWyAgICAgIF9iNF9zeW1ib2xf
Y2FzZV0sIFskQF0pW11kbmwKKyAgICAgICAgYjRfZG9sbGFyX2RvbGxhcihbYjRfc3ltYm9sKFsk
MV0sIFtudW1iZXJdKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW2I0X3N5bWJvbChbJDFd
LCBbdGFnXSldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtiNF9zeW1ib2woWyQxXSwgW3R5
cGVdKV0pOworICAgICAgICBicmVhazsKKworXSldKQorCisjIGI0X3R5cGVfZm9yZWFjaChNQUNS
TykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbnZva2UgTUFDUk8oU1lNQk9MLU5VTVMp
IGZvciBlYWNoIHNldCBvZiBTWU1CT0wtTlVNUyBmb3IgZWFjaCB0eXBlIHNldC4KK200X2RlZmlu
ZShbYjRfdHlwZV9mb3JlYWNoXSwKKyAgICAgICAgICBbbTRfbWFwKFskMV0sIG00X2RlZm4oW2I0
X3R5cGVfbmFtZXNdKSldKQorCisKKworIyMgLS0tLS0tLS0tLS0gIyMKKyMjIFN5bmNsaW5lcy4g
ICMjCisjIyAtLS0tLS0tLS0tLSAjIworCisjIGI0X2Jhc2VuYW1lKE5BTUUpCisjIC0tLS0tLS0t
LS0tLS0tLS0tCisjIFNpbWlsYXIgdG8gUE9TSVggYmFzZW5hbWU7IHRoZSBkaWZmZXJlbmNlcyBk
b24ndCBtYXR0ZXIgaGVyZS4KKyMgQmV3YXJlIHRoYXQgTkFNRSBpcyBub3QgZXZhbHVhdGVkLgor
bTRfZGVmaW5lKFtiNF9iYXNlbmFtZV0sCitbbTRfYnBhdHN1YnN0KFskMV0sIFteLiovXChbXi9d
K1wpLyokXSwgW1wxXSldKQorCisKKyMgYjRfc3luY2xpbmUoTElORSwgRklMRSkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfc3luY2xpbmVdLAorW2I0X2ZsYWdfaWYo
W3N5bmNsaW5lc10sCitbYjRfc3luY19zdGFydChbJDFdLCBbJDJdKSBiNF9zeW5jX2VuZChbX19s
aW5lX19dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2I0X2Jhc2Vu
YW1lKG00X3F1b3RlKF9fZmlsZV9fKSldKVtdZG5sCitdKV0pCisKKyMgYjRfc3luY19zdGFydChM
SU5FLCBGSUxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTeW5jbGluZSBmb3IgdGhl
IG5ldyBwbGFjZS4gIFR5cGljYWxseSBhIGRpcmVjdGl2ZSBmb3IgdGhlIGNvbXBpbGVyLgorbTRf
ZGVmaW5lKFtiNF9zeW5jX3N0YXJ0XSwgW2I0X2NvbW1lbnQoWyQyOiQxXSldKQorCisjIGI0X3N5
bmNfZW5kKExJTkUsIEZJTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFN5bmNsaW5l
IGZvciB0aGUgY3VycmVudCBwbGFjZSwgd2hpY2ggZW5kcy4gIFR5cGljYWxseSBhIGNvbW1lbnQK
KyMgbGVmdCBmb3IgdGhlIHJlYWRlci4KK200X2RlZmluZShbYjRfc3luY19lbmRdLCAgIFtiNF9j
b21tZW50KFskMjokMV0pXSkKKworCisjIGI0X3VzZXJfY29kZShVU0VSLUNPREUpCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisjIEVtaXQgY29kZSBmcm9tIHRoZSB1c2VyLCBlbmRpbmcgaXQg
d2l0aCBzeW5jbGluZXMuCittNF9kZWZpbmUoW2I0X3VzZXJfY29kZV0sCitbJDEKK2I0X3N5bmNs
aW5lKFtAb2xpbmVAXSwgW0BvZmlsZUBdKV0pCisKKworIyBiNF9kZWZpbmVfdXNlcl9jb2RlKE1B
Q1JPLCBDT01NRU5UKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBG
cm9tIGI0X01BQ1JPLCBpZiBkZWZpbmVkLCBidWlsZCBiNF91c2VyX01BQ1JPIHRoYXQgaW5jbHVk
ZXMgdGhlIHN5bmNsaW5lcy4KK200X2RlZmluZShbYjRfZGVmaW5lX3VzZXJfY29kZV0sCitbbTRf
ZGVmaW5lKFtiNF91c2VyXyQxXSwKKyAgICAgICAgICAgW200X2lmZGVmKFtiNF8kMV0sCisgICAg
ICAgICAgICAgICAgICAgICBbbTRfaWZ2YWwoWyQyXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbYjRfY29tbWVudChbJDJdKQorXSliNF91c2VyX2NvZGUoW2I0XyQxXSldKV0pXSkK
KworIyBiNF91c2VyX2FjdGlvbnMKKyMgYjRfdXNlcl9pbml0aWFsX2FjdGlvbgorIyBiNF91c2Vy
X3Bvc3RfcHJvbG9ndWUKKyMgYjRfdXNlcl9wcmVfcHJvbG9ndWUKKyMgYjRfdXNlcl91bmlvbl9t
ZW1iZXJzCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWFjcm9zIHRoYXQgaXNzdWUgdXNl
ciBjb2RlLCBlbmRpbmcgd2l0aCBzeW5jbGluZXMuCitiNF9kZWZpbmVfdXNlcl9jb2RlKFthY3Rp
b25zXSkKK2I0X2RlZmluZV91c2VyX2NvZGUoW2luaXRpYWxfYWN0aW9uXSwgW1VzZXIgaW5pdGlh
bGl6YXRpb24gY29kZS5dKQorYjRfZGVmaW5lX3VzZXJfY29kZShbcG9zdF9wcm9sb2d1ZV0sIFtT
ZWNvbmQgcGFydCBvZiB1c2VyIHByb2xvZ3VlLl0pCitiNF9kZWZpbmVfdXNlcl9jb2RlKFtwcmVf
cHJvbG9ndWVdLCBbRmlyc3QgcGFydCBvZiB1c2VyIHByb2xvZ3VlLl0pCitiNF9kZWZpbmVfdXNl
cl9jb2RlKFt1bmlvbl9tZW1iZXJzXSkKKworCisjIGI0X2NoZWNrX3VzZXJfbmFtZXMoV0hBVCwg
VVNFUi1MSVNULCBCSVNPTi1OQU1FU1BBQ0UpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvbXBsYWluIGlmIGFueSBuYW1lIG9mIHR5
cGUgV0hBVCBpcyB1c2VkIGJ5IHRoZSB1c2VyIChhcyByZWNvcmRlZCBpbgorIyBVU0VSLUxJU1Qp
IGJ1dCBpcyBub3QgdXNlZCBieSBCaXNvbiAoYXMgcmVjb3JkZWQgYnkgbWFjcm9zIGluIHRoZQor
IyBuYW1lc3BhY2UgQklTT04tTkFNRVNQQUNFKS4KKyMKKyMgVVNFUi1MSVNUIG11c3QgZXhwYW5k
IHRvIGEgbGlzdCBzcGVjaWZ5aW5nIGFsbCB1c2VyIG9jY3VycmVuY2VzIG9mIGFsbCBuYW1lcwor
IyBvZiB0eXBlIFdIQVQuICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IG11c3QgYmUgYSB0cmlwbGV0
IHNwZWNpZnlpbmcgb25lCisjIG9jY3VycmVuY2U6IG5hbWUsIHN0YXJ0IGJvdW5kYXJ5LCBhbmQg
ZW5kIGJvdW5kYXJ5LiAgRW1wdHkgc3RyaW5nIG5hbWVzIGFyZQorIyBmaW5lLiAgQW4gZW1wdHkg
bGlzdCBpcyBmaW5lLgorIworIyBGb3IgZXhhbXBsZSwgdG8gZGVmaW5lIGI0X2Zvb191c2VyX25h
bWVzIHRvIGJlIHVzZWQgZm9yIFVTRVItTElTVCB3aXRoIHRocmVlCisjIG5hbWUgb2NjdXJyZW5j
ZXMgYW5kIHdpdGggY29ycmVjdCBxdW90aW5nOgorIworIyAgIG00X2RlZmluZShbYjRfZm9vX3Vz
ZXJfbmFtZXNdLAorIyAgICAgICAgICAgICBbW1tbW1tiYXJdXSwgW1twYXJzZXIueToxLjddXSwg
W1twYXJzZXIueToxLjE2XV1dXSwKKyMgICAgICAgICAgICAgICBbW1tbYmFyXV0sIFtbcGFyc2Vy
Lnk6NS43XV0sIFtbcGFyc2VyLnk6NS4xNl1dXV0sCisjICAgICAgICAgICAgICAgW1tbW2Jhel1d
LCBbW3BhcnNlci55OjguN11dLCBbW3BhcnNlci55OjguMTZdXV1dXV0pCisjCisjIFRoZSBtYWNy
byBCSVNPTi1OQU1FU1BBQ0UoYmFyKSBtdXN0IGJlIGRlZmluZWQgaWZmIHRoZSBuYW1lIGJhciBv
ZiB0eXBlIFdIQVQKKyMgaXMgdXNlZCBieSBCaXNvbiAoaW4gdGhlIGZyb250LWVuZCBvciBpbiB0
aGUgc2tlbGV0b24pLiAgRW1wdHkgc3RyaW5nIG5hbWVzCisjIGFyZSBmaW5lLCBidXQgaXQgd291
bGQgYmUgdWdseSBmb3IgQmlzb24gdG8gYWN0dWFsbHkgdXNlIG9uZS4KKyMKKyMgRm9yIGV4YW1w
bGUsIHRvIHVzZSBiNF9mb29fYmlzb25fbmFtZXMgZm9yIEJJU09OLU5BTUVTUEFDRSBhbmQgZGVm
aW5lIHRoYXQKKyMgdGhlIG5hbWVzIGJhciBhbmQgYmF6IGFyZSB1c2VkIGJ5IEJpc29uOgorIwor
IyAgIG00X2RlZmluZShbYjRfZm9vX2Jpc29uX25hbWVzKGJhcildKQorIyAgIG00X2RlZmluZShb
YjRfZm9vX2Jpc29uX25hbWVzKGJheildKQorIworIyBUbyBpbnZva2UgYjRfY2hlY2tfdXNlcl9u
YW1lcyB3aXRoIFRZUEUgZm9vLCB3aXRoIFVTRVItTElTVAorIyBiNF9mb29fdXNlcl9uYW1lcywg
d2l0aCBCSVNPTi1OQU1FU1BBQ0UgYjRfZm9vX2Jpc29uX25hbWVzLCBhbmQgd2l0aCBjb3JyZWN0
CisjIHF1b3Rpbmc6CisjCisjICAgYjRfY2hlY2tfdXNlcl9uYW1lcyhbW2Zvb11dLCBbYjRfZm9v
X3VzZXJfbmFtZXNdLAorIyAgICAgICAgICAgICAgICAgICAgICAgW1tiNF9mb29fYmlzb25fbmFt
ZXNdXSkKK200X2RlZmluZShbYjRfY2hlY2tfdXNlcl9uYW1lc10sCitbbTRfZm9yZWFjaChbYjRf
b2NjdXJyZW5jZV0sICQyLAorW200X3B1c2hkZWYoW2I0X29jY3VycmVuY2VdLCBiNF9vY2N1cnJl
bmNlKWRubAorbTRfcHVzaGRlZihbYjRfdXNlcl9uYW1lXSwgbTRfY2FyKGI0X29jY3VycmVuY2Up
KWRubAorbTRfcHVzaGRlZihbYjRfc3RhcnRdLCBtNF9jYXIobTRfc2hpZnQoYjRfb2NjdXJyZW5j
ZSkpKWRubAorbTRfcHVzaGRlZihbYjRfZW5kXSwgbTRfc2hpZnQobTRfc2hpZnQoYjRfb2NjdXJy
ZW5jZSkpKWRubAorbTRfaWZuZGVmKCQzWyhdbTRfcXVvdGUoYjRfdXNlcl9uYW1lKVspXSwKKyAg
ICAgICAgICBbYjRfY29tcGxhaW5fYXQoW2I0X3N0YXJ0XSwgW2I0X2VuZF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtbJXMgJyVzJyBpcyBub3QgdXNlZF1dLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBbJDFdLCBbYjRfdXNlcl9uYW1lXSldKVtdZG5sCittNF9wb3BkZWYoW2I0X29j
Y3VycmVuY2VdKWRubAorbTRfcG9wZGVmKFtiNF91c2VyX25hbWVdKWRubAorbTRfcG9wZGVmKFti
NF9zdGFydF0pZG5sCittNF9wb3BkZWYoW2I0X2VuZF0pZG5sCitdKV0pCisKKworCisjIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIGI0X3BlcmNlbnRfZGVmaW5lXyouICAjIworIyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBiNF9wZXJjZW50X2RlZmluZV91c2UoVkFSSUFC
TEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyZSB0aGF0IFZB
UklBQkxFIHdhcyB1c2VkLgorbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV91c2VdLAorW200
X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfYmlzb25fdmFyaWFibGVzKF0kMVspXSlkbmwKK10p
CisKKyMgYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFZBUklBQkxFLCBbREVGQVVMVF0pCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNaW1pYyBtdXNjbGVfcGVy
Y2VudF9kZWZpbmVfZ2V0IGluIC4uL3NyYy9tdXNjbGUtdGFiLmguICBUaGF0IGlzLCBpZgorIyB0
aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyBkZWZpbmVkLCBlbWl0IGl0cyB2YWx1ZS4g
IENvbnRyYXJ5CisjIHRvIGl0cyBDIGNvdW50ZXJwYXJ0LCByZXR1cm4gREVGQVVMVCBvdGhlcndp
c2UuICBBbHNvLCByZWNvcmQKKyMgQmlzb24ncyB1c2FnZSBvZiBWQVJJQUJMRSBieSBkZWZpbmlu
ZworIyBiNF9wZXJjZW50X2RlZmluZV9iaXNvbl92YXJpYWJsZXMoVkFSSUFCTEUpLgorIworIyBG
b3IgZXhhbXBsZToKKyMKKyMgICBiNF9wZXJjZW50X2RlZmluZV9nZXQoW1tmb29dXSkKK200X2Rl
ZmluZShbYjRfcGVyY2VudF9kZWZpbmVfZ2V0XSwKK1tiNF9wZXJjZW50X2RlZmluZV91c2UoWyQx
XSlkbmwKK19iNF9wZXJjZW50X2RlZmluZV9pZmRlZihbJDFdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFttNF9pbmRpcihbYjRfcGVyY2VudF9kZWZpbmUoXSQxWyldKV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgWyQyXSldKQorCisjIGI0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoVkFS
SUFCTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1pbWljIG11
c2NsZV9wZXJjZW50X2RlZmluZV9nZXRfbG9jIGluIC4uL3NyYy9tdXNjbGUtdGFiLmggZXhhY3Rs
eS4gIFRoYXQgaXMsCisjIGlmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlzIHVuZGVm
aW5lZCwgY29tcGxhaW4gZmF0YWxseSBzaW5jZSB0aGF0J3MKKyMgYSBCaXNvbiBvciBza2VsZXRv
biBlcnJvci4gIE90aGVyd2lzZSwgcmV0dXJuIGl0cyBkZWZpbml0aW9uIGxvY2F0aW9uIGluIGEK
KyMgZm9ybSBhcHByb3ByaWF0ZSBmb3IgdGhlIGZpcnN0IHR3byBhcmd1bWVudHMgb2YgYjRfd2Fy
bl9hdCwgYjRfY29tcGxhaW5fYXQsIG9yCisjIGI0X2ZhdGFsX2F0LiAgRG9uJ3QgcmVjb3JkIHRo
aXMgYXMgYSBCaXNvbiB1c2FnZSBvZiBWQVJJQUJMRSBhcyB0aGVyZSdzIG5vCisjIHJlYXNvbiB0
byBzdXNwZWN0IHRoYXQgdGhlIHVzZXItc3VwcGxpZWQgdmFsdWUgaGFzIHlldCBpbmZsdWVuY2Vk
IHRoZSBvdXRwdXQuCisjCisjIEZvciBleGFtcGxlOgorIworIyAgIGI0X2NvbXBsYWluX2F0KGI0
X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoW1tmb29dXSksIFtbaW52YWxpZCBmb29dXSkKK200X2Rl
ZmluZShbYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xvY10sCitbbTRfaWZkZWYoW2I0X3BlcmNlbnRf
ZGVmaW5lX2xvYyhdJDFbKV0sCisgICAgICAgICAgW200X3B1c2hkZWYoW2I0X2xvY10sIG00X2lu
ZGlyKFtiNF9wZXJjZW50X2RlZmluZV9sb2MoXSQxWyldKSlkbmwKK2I0X2xvY1tdZG5sCittNF9w
b3BkZWYoW2I0X2xvY10pXSwKKyAgICAgICAgICBbYjRfZmF0YWwoW1skMDogdW5kZWZpbmVkICUl
ZGVmaW5lIHZhcmlhYmxlICclcyddXSwgWyQxXSldKV0pCisKKyMgYjRfcGVyY2VudF9kZWZpbmVf
Z2V0X2tpbmQoVkFSSUFCTEUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorIyBHZXQgdGhlIGtpbmQgKGNvZGUsIGtleXdvcmQsIHN0cmluZykgb2YgVkFSSUFCTEUsIGku
ZS4sIGhvdyBpdHMKKyMgdmFsdWUgd2FzIGRlZmluZWQgKGJyYWNlcywgbm90IGRlbGltaXRlcnMs
IHF1b3RlcykuCisjCisjIElmIHRoZSAlZGVmaW5lIHZhcmlhYmxlIFZBUklBQkxFIGlzIHVuZGVm
aW5lZCwgY29tcGxhaW4gZmF0YWxseQorIyBzaW5jZSB0aGF0J3MgYSBCaXNvbiBvciBza2VsZXRv
biBlcnJvci4gIERvbid0IHJlY29yZCB0aGlzIGFzIGEKKyMgQmlzb24gdXNhZ2Ugb2YgVkFSSUFC
TEUgYXMgdGhlcmUncyBubyByZWFzb24gdG8gc3VzcGVjdCB0aGF0IHRoZQorIyB1c2VyLXN1cHBs
aWVkIHZhbHVlIGhhcyB5ZXQgaW5mbHVlbmNlZCB0aGUgb3V0cHV0LgorbTRfZGVmaW5lKFtiNF9w
ZXJjZW50X2RlZmluZV9nZXRfa2luZF0sCitbbTRfaWZkZWYoW2I0X3BlcmNlbnRfZGVmaW5lX2tp
bmQoXSQxWyldLAorICAgICAgICAgIFttNF9pbmRpcihbYjRfcGVyY2VudF9kZWZpbmVfa2luZChd
JDFbKV0pXSwKKyAgICAgICAgICBbYjRfZmF0YWwoW1skMDogdW5kZWZpbmVkICUlZGVmaW5lIHZh
cmlhYmxlICclcyddXSwgWyQxXSldKV0pCisKKyMgYjRfcGVyY2VudF9kZWZpbmVfZ2V0X3N5bmNs
aW5lKFZBUklBQkxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisjIE1pbWljIG11c2NsZV9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmUgaW4gLi4vc3JjL211
c2NsZS10YWIuaCBleGFjdGx5LgorIyBUaGF0IGlzLCBpZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBW
QVJJQUJMRSBpcyB1bmRlZmluZWQsIGNvbXBsYWluIGZhdGFsbHkKKyMgc2luY2UgdGhhdCdzIGEg
Qmlzb24gb3Igc2tlbGV0b24gZXJyb3IuICBPdGhlcndpc2UsIHJldHVybiBpdHMgZGVmaW5pdGlv
bgorIyBsb2NhdGlvbiBhcyBhIGI0X3N5bmNsaW5lIGludm9jYXRpb24uICBEb24ndCByZWNvcmQg
dGhpcyBhcyBhIEJpc29uIHVzYWdlIG9mCisjIFZBUklBQkxFIGFzIHRoZXJlJ3Mgbm8gcmVhc29u
IHRvIHN1c3BlY3QgdGhhdCB0aGUgdXNlci1zdXBwbGllZCB2YWx1ZSBoYXMgeWV0CisjIGluZmx1
ZW5jZWQgdGhlIG91dHB1dC4KKyMKKyMgRm9yIGV4YW1wbGU6CisjCisjICAgYjRfcGVyY2VudF9k
ZWZpbmVfZ2V0X3N5bmNsaW5lKFtbZm9vXV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5l
X2dldF9zeW5jbGluZV0sCitbbTRfaWZkZWYoW2I0X3BlcmNlbnRfZGVmaW5lX3N5bmNsaW5lKF0k
MVspXSwKKyAgICAgICAgICBbbTRfaW5kaXIoW2I0X3BlcmNlbnRfZGVmaW5lX3N5bmNsaW5lKF0k
MVspXSldLAorICAgICAgICAgIFtiNF9mYXRhbChbWyQwOiB1bmRlZmluZWQgJSVkZWZpbmUgdmFy
aWFibGUgJyVzJ11dLCBbJDFdKV0pXSkKKworIyBfYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoVkFS
SUFCTEUsIElGLVRSVUUsIFtJRi1GQUxTRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBW
QVJJQUJMRSBpcyBkZWZpbmVkLCBleHBhbmQgSUYtVFJVRSwgZWxzZSBleHBhbmQKKyMgSUYtRkFM
U0UuICBEb24ndCByZWNvcmQgdXNhZ2Ugb2YgVkFSSUFCTEUuCisjCisjIEZvciBleGFtcGxlOgor
IworIyAgIF9iNF9wZXJjZW50X2RlZmluZV9pZmRlZihbW2Zvb11dLCBbW2l0J3MgZGVmaW5lZF1d
LCBbW2l0J3MgdW5kZWZpbmVkXV0pCittNF9kZWZpbmUoW19iNF9wZXJjZW50X2RlZmluZV9pZmRl
Zl0sCitbbTRfaWZkZWYoW2I0X3BlcmNlbnRfZGVmaW5lKF0kMVspXSwKKyAgICAgICAgICBbJDJd
LAorICAgICAgICAgIFskM10pXSkKKworIyBiNF9wZXJjZW50X2RlZmluZV9pZmRlZihWQVJJQUJM
RSwgSUYtVFJVRSwgW0lGLUZBTFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1pbWljIG11c2NsZV9wZXJjZW50X2RlZmluZV9p
ZmRlZiBpbiAuLi9zcmMvbXVzY2xlLXRhYi5oIGV4YWN0bHkuICBUaGF0IGlzLAorIyBpZiB0aGUg
JWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyBkZWZpbmVkLCBleHBhbmQgSUYtVFJVRSwgZWxz
ZSBleHBhbmQKKyMgSUYtRkFMU0UuICBBbHNvLCByZWNvcmQgQmlzb24ncyB1c2FnZSBvZiBWQVJJ
QUJMRSBieSBkZWZpbmluZworIyBiNF9wZXJjZW50X2RlZmluZV9iaXNvbl92YXJpYWJsZXMoVkFS
SUFCTEUpLgorIworIyBGb3IgZXhhbXBsZToKKyMKKyMgICBiNF9wZXJjZW50X2RlZmluZV9pZmRl
ZihbW2Zvb11dLCBbW2l0J3MgZGVmaW5lZF1dLCBbW2l0J3MgdW5kZWZpbmVkXV0pCittNF9kZWZp
bmUoW2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmXSwKK1tfYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYo
WyQxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbYjRfcGVyY2VudF9kZWZpbmVfdXNlKFsk
MV0pJDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFskM10pXSkKKworCisjIGI0X3BlcmNl
bnRfZGVmaW5lX2NoZWNrX2ZpbGVfY29tcGxhaW4oVkFSSUFCTEUpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdhcm4gYWJvdXQgJWRlZmluZSB2
YXJpYWJsZSBWQVJJQUJMRSBoYXZpbmcgYW4gaW5jb3JyZWN0CisjIHZhbHVlLgorbTRfZGVmaW5l
KFtiNF9wZXJjZW50X2RlZmluZV9jaGVja19maWxlX2NvbXBsYWluXSwKK1tiNF9jb21wbGFpbl9h
dChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAorICAgICAgICAgICAgICAgIFtbJSVk
ZWZpbmUgdmFyaWFibGUgJyVzJyByZXF1aXJlcyAnbm9uZScgb3IgJyIuLi4iJyB2YWx1ZXNdXSwK
KyAgICAgICAgICAgICAgICBbJDFdKV0pCisKKworIyBiNF9wZXJjZW50X2RlZmluZV9jaGVja19m
aWxlKE1BQ1JPLCBWQVJJQUJMRSwgREVGQVVMVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIHRoZSAlZGVmaW5lIHZhcmlhYmxl
IFZBUklBQkxFOgorIyAtIGlzIHVuZGVmaW5lZCwgdGhlbiBpZiBERUZBVUxUIGlzIG5vbi1lbXB0
eSwgZGVmaW5lIE1BQ1JPIHRvIERFRkFVTFQKKyMgLSBpcyBhIHN0cmluZywgZGVmaW5lIE1BQ1JP
IHRvIGl0cyB2YWx1ZQorIyAtIGlzIHRoZSBrZXl3b3JkICdub25lJywgZG8gbm90aGluZworIyAt
IG90aGVyd2lzZSwgd2FybiBhYm91dCB0aGUgaW5jb3JyZWN0IHZhbHVlLgorbTRfZGVmaW5lKFti
NF9wZXJjZW50X2RlZmluZV9jaGVja19maWxlXSwKK1tiNF9wZXJjZW50X2RlZmluZV9pZmRlZihb
JDJdLAorICBbbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXRfa2luZChbJDJdKSwKKyAgICBb
c3RyaW5nXSwKKyAgICAgICAgIFttNF9kZWZpbmUoWyQxXSwgYjRfcGVyY2VudF9kZWZpbmVfZ2V0
KFskMl0pKV0sCisgICAgW2tleXdvcmRdLAorICAgICAgICAgW200X2lmKGI0X3BlcmNlbnRfZGVm
aW5lX2dldChbJDJdKSwgW25vbmVdLCBbXSwKKyAgICAgICAgICAgICAgICBbYjRfcGVyY2VudF9k
ZWZpbmVfY2hlY2tfZmlsZV9jb21wbGFpbihbJDJdKV0pXSwKKyAgICBbYjRfcGVyY2VudF9kZWZp
bmVfY2hlY2tfZmlsZV9jb21wbGFpbihbJDJdKV0pCisgICBdLAorICAgW200X2lmdmFsKFskM10s
CisgICAgICAgICAgICAgW200X2RlZmluZShbJDFdLCBbJDNdKV0pXSkKK10pCisKKworCisjIyAt
LS0tLS0tLS0gIyMKKyMjIE9wdGlvbnMuICAjIworIyMgLS0tLS0tLS0tICMjCisKKworIyBiNF9w
ZXJjZW50X2RlZmluZV9mbGFnX2lmKFZBUklBQkxFLCBJRi1UUlVFLCBbSUYtRkFMU0VdKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBNaW1pYyBtdXNjbGVfcGVyY2VudF9kZWZpbmVfZmxhZ19pZiBpbiAuLi9zcmMvbXVzY2xlLXRh
Yi5oIGV4YWN0bHkuICBUaGF0IGlzLAorIyBpZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJM
RSBpcyBkZWZpbmVkIHRvICIiIG9yICJ0cnVlIiwgZXhwYW5kIElGLVRSVUUuCisjIElmIGl0IGlz
IGRlZmluZWQgdG8gImZhbHNlIiwgZXhwYW5kIElGLUZBTFNFLiAgQ29tcGxhaW4gaWYgaXQgaXMg
dW5kZWZpbmVkCisjIChhIEJpc29uIG9yIHNrZWxldG9uIGVycm9yIHNpbmNlIHRoZSBkZWZhdWx0
IHZhbHVlIHNob3VsZCBoYXZlIGJlZW4gc2V0CisjIGFscmVhZHkpIG9yIGRlZmluZWQgdG8gYW55
IG90aGVyIHZhbHVlIChwb3NzaWJseSBhIHVzZXIgZXJyb3IpLiAgQWxzbywgcmVjb3JkCisjIEJp
c29uJ3MgdXNhZ2Ugb2YgVkFSSUFCTEUgYnkgZGVmaW5pbmcKKyMgYjRfcGVyY2VudF9kZWZpbmVf
Ymlzb25fdmFyaWFibGVzKFZBUklBQkxFKS4KKyMKKyMgRm9yIGV4YW1wbGU6CisjCisjICAgYjRf
cGVyY2VudF9kZWZpbmVfZmxhZ19pZihbW2Zvb11dLCBbW2l0J3MgdHJ1ZV1dLCBbW2l0J3MgZmFs
c2VdXSkKK200X2RlZmluZShbYjRfcGVyY2VudF9kZWZpbmVfZmxhZ19pZl0sCitbYjRfcGVyY2Vu
dF9kZWZpbmVfaWZkZWYoWyQxXSwKKyAgW200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFsk
MV0pLAorICAgICAgICAgICBbXSwgWyQyXSwgW3RydWVdLCBbJDJdLCBbZmFsc2VdLCBbJDNdLAor
ICAgICAgICAgICBbbTRfZXhwYW5kX29uY2UoW2I0X2NvbXBsYWluX2F0KGI0X3BlcmNlbnRfZGVm
aW5lX2dldF9sb2MoWyQxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW1tpbnZhbGlkIHZhbHVlIGZvciAlJWRlZmluZSBCb29sZWFuIHZhcmlhYmxlICclcydd
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJDFdKV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbW2I0X3BlcmNlbnRfZGVmaW5lX2ZsYWdfaWYoJDEp
XV0pXSldLAorICBbYjRfZmF0YWwoW1skMDogdW5kZWZpbmVkICUlZGVmaW5lIHZhcmlhYmxlICcl
cyddXSwgWyQxXSldKV0pCisKKworIyBiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFZBUklBQkxF
LCBERUZBVUxULCBbS0lORCA9IGtleXdvcmRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNaW1pYyBtdXNjbGVfcGVy
Y2VudF9kZWZpbmVfZGVmYXVsdCBpbiAuLi9zcmMvbXVzY2xlLXRhYi5oIGV4YWN0bHkuICBUaGF0
IGlzLAorIyBpZiB0aGUgJWRlZmluZSB2YXJpYWJsZSBWQVJJQUJMRSBpcyB1bmRlZmluZWQsIHNl
dCBpdHMgdmFsdWUgdG8gREVGQVVMVC4KKyMgRG9uJ3QgcmVjb3JkIHRoaXMgYXMgYSBCaXNvbiB1
c2FnZSBvZiBWQVJJQUJMRSBhcyB0aGVyZSdzIG5vIHJlYXNvbiB0bworIyBzdXNwZWN0IHRoYXQg
dGhlIHZhbHVlIGhhcyB5ZXQgaW5mbHVlbmNlZCB0aGUgb3V0cHV0LgorIworIyBGb3IgZXhhbXBs
ZToKKyMKKyMgICBiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbZm9vXV0sIFtbZGVmYXVsdCB2
YWx1ZV1dKQorbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0XSwKK1tfYjRfcGVy
Y2VudF9kZWZpbmVfaWZkZWYoWyQxXSwgW10sCisgICAgICAgICAgIFttNF9kZWZpbmUoW2I0X3Bl
cmNlbnRfZGVmaW5lKF0kMVspXSwgWyQyXSlkbmwKKyAgICAgICAgICAgIG00X2RlZmluZShbYjRf
cGVyY2VudF9kZWZpbmVfa2luZChdJDFbKV0sCisgICAgICAgICAgICAgICAgICAgICAgW200X2Rl
ZmF1bHQoWyQzXSwgW2tleXdvcmRdKV0pZG5sCisgICAgICAgICAgICBtNF9kZWZpbmUoW2I0X3Bl
cmNlbnRfZGVmaW5lX2xvYyhdJDFbKV0sCisgICAgICAgICAgICAgICAgICAgICAgW1tbWzxza2Vs
ZXRvbiBkZWZhdWx0IHZhbHVlPjotMS4tMV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgW1s8
c2tlbGV0b24gZGVmYXVsdCB2YWx1ZT46LTEuLTFdXV1dKWRubAorICAgICAgICAgICAgbTRfZGVm
aW5lKFtiNF9wZXJjZW50X2RlZmluZV9zeW5jbGluZShdJDFbKV0sIFtbXV0pXSldKQorCisKKyMg
YjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5lKE5BTUUsIFtWQVJJQUJMRSA9IE5BTUVdKQorIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERl
ZmluZSBiNF9OQU1FX2lmIHRoYXQgZXhlY3V0ZXMgaXRzICQxIG9yICQyIGRlcGVuZGluZyB3aGV0
aGVyCisjIFZBUklBQkxFIHdhcyAlZGVmaW5lZC4gIFRoZSBjaGFyYWN0ZXJzICcuJyBhbmQgYC0n
IGluIFZBUklBQkxFIGFyZSBtYXBwZWQKKyMgdG8gJ18nLgorbTRfZGVmaW5lKFtfYjRfcGVyY2Vu
dF9kZWZpbmVfaWZfZGVmaW5lXSwKK1ttNF9kZWZpbmUobTRfYnBhdHN1YnN0KFtiNF8kMV9pZl0s
IFtbLS5dXSwgW19dKSwKKyAgICAgICAgICAgW2I0X3BlcmNlbnRfZGVmaW5lX2ZsYWdfaWYobTRf
ZGVmYXVsdChbJDJdLCBbJDFdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyQzXSwgWyQ0XSldKV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2lmX2RlZmlu
ZV0sCitbYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVsdChbbTRfZGVmYXVsdChbJDJdLCBbJDFdKV0s
IFtbZmFsc2VdXSkKK19iNF9wZXJjZW50X2RlZmluZV9pZl9kZWZpbmUoWyQxXSwgWyQyXSwgJFsx
XSwgJFsyXSldKQorCisKKyMgYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChWQVJJQUJMRSwg
S0lORCwgW0RJQUdOT1NUSUMgPSBjb21wbGFpbl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5l
KFtiNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kXSwKK1tfYjRfcGVyY2VudF9kZWZpbmVfaWZk
ZWYoWyQxXSwKKyAgW200X2lmKGI0X3BlcmNlbnRfZGVmaW5lX2dldF9raW5kKFskMV0pLCBbJDJd
LCBbXSwKKyAgICBbYjRfZXJyb3IoW200X2RlZmF1bHQoWyQzXSwgW2NvbXBsYWluXSldLAorICAg
ICAgICAgICAgICBiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAorICAgICAgICAgICAg
ICBbbTRfY2FzZShbJDJdLAorICAgICAgICAgICAgICAgICBbY29kZV0sICAgIFtbJSVkZWZpbmUg
dmFyaWFibGUgJyVzJyByZXF1aXJlcyAney4uLn0nIHZhbHVlc11dLAorICAgICAgICAgICAgICAg
ICBba2V5d29yZF0sIFtbJSVkZWZpbmUgdmFyaWFibGUgJyVzJyByZXF1aXJlcyBrZXl3b3JkIHZh
bHVlc11dLAorICAgICAgICAgICAgICAgICBbc3RyaW5nXSwgIFtbJSVkZWZpbmUgdmFyaWFibGUg
JyVzJyByZXF1aXJlcyAnIi4uLiInIHZhbHVlc11dKV0sCisgICAgICAgICAgICAgIFskMV0pXSld
KWRubAorXSkKKworCisjIGI0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhWQUxVRVMpCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1pbWljIG11c2NsZV9w
ZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXMgaW4gLi4vc3JjL211c2NsZS10YWIuaCBleGFjdGx5
CisjIGV4Y2VwdCB0aGF0IHRoZSBWQUxVRVMgc3RydWN0dXJlIGlzIG1vcmUgYXBwcm9wcmlhdGUg
Zm9yIE00LiAgVGhhdCBpcywgVkFMVUVTCisjIGlzIGEgbGlzdCBvZiBzdWJsaXN0cyBvZiBzdHJp
bmdzLiAgRm9yIGVhY2ggc3VibGlzdCwgdGhlIGZpcnN0IHN0cmluZyBpcyB0aGUKKyMgbmFtZSBv
ZiBhICVkZWZpbmUgdmFyaWFibGUsIGFuZCBhbGwgcmVtYWluaW5nIHN0cmluZ3MgaW4gdGhhdCBz
dWJsaXN0IGFyZSB0aGUKKyMgdmFsaWQgdmFsdWVzIGZvciB0aGF0IHZhcmlhYmxlLiAgQ29tcGxh
aW4gaWYgc3VjaCBhIHZhcmlhYmxlIGlzIHVuZGVmaW5lZCAoYQorIyBCaXNvbiBlcnJvciBzaW5j
ZSB0aGUgZGVmYXVsdCB2YWx1ZSBzaG91bGQgaGF2ZSBiZWVuIHNldCBhbHJlYWR5KSBvciBkZWZp
bmVkCisjIHRvIGFueSBvdGhlciB2YWx1ZSAocG9zc2libHkgYSB1c2VyIGVycm9yKS4gIERvbid0
IHJlY29yZCB0aGlzIGFzIGEgQmlzb24KKyMgdXNhZ2Ugb2YgdGhlIHZhcmlhYmxlIGFzIHRoZXJl
J3Mgbm8gcmVhc29uIHRvIHN1c3BlY3QgdGhhdCB0aGUgdmFsdWUgaGFzIHlldAorIyBpbmZsdWVu
Y2VkIHRoZSBvdXRwdXQuCisjCisjIEZvciBleGFtcGxlOgorIworIyAgIGI0X3BlcmNlbnRfZGVm
aW5lX2NoZWNrX3ZhbHVlcyhbW1tbZm9vXV0sIFtbZm9vLXZhbHVlMV1dLCBbW2Zvby12YWx1ZTJd
XV1dLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1tbYmFyXV0sIFtbYmFy
LXZhbHVlMV1dXV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlc10s
CitbbTRfZm9yZWFjaChbYjRfc3VibGlzdF0sIG00X3F1b3RlKCRAKSwKKyAgICAgICAgICAgIFtf
YjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFsdWVzKGI0X3N1Ymxpc3QpXSldKQorCittNF9kZWZp
bmUoW19iNF9wZXJjZW50X2RlZmluZV9jaGVja192YWx1ZXNdLAorW19iNF9wZXJjZW50X2RlZmlu
ZV9pZmRlZihbJDFdLAorICBbYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChdJDFbLCBba2V5
d29yZF0sIFtkZXByZWNhdGVkXSlkbmwKKyAgIG00X3B1c2hkZWYoW2I0X2dvb2RfdmFsdWVdLCBb
MF0pZG5sCisgICBtNF9pZigkIywgMSwgW10sCisgICAgICAgICBbbTRfZm9yZWFjaChbYjRfdmFs
dWVdLCBtNF9kcXVvdGUobTRfc2hpZnQoJEApKSwKKyAgICAgICAgICAgICAgICAgICAgIFttNF9p
ZihtNF9pbmRpcihbYjRfcGVyY2VudF9kZWZpbmUoXSQxWyldKSwgYjRfdmFsdWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW200X2RlZmluZShbYjRfZ29vZF92YWx1ZV0sIFsxXSldKV0p
XSlkbmwKKyAgIG00X2lmKGI0X2dvb2RfdmFsdWUsIFswXSwKKyAgICAgICAgIFtiNF9jb21wbGFp
bl9hdChiNF9wZXJjZW50X2RlZmluZV9nZXRfbG9jKFskMV0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFtbaW52YWxpZCB2YWx1ZSBmb3IgJSVkZWZpbmUgdmFyaWFibGUgJyVzJzogJyVzJ11d
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFskMV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgbTRfZHF1b3RlKG00X2luZGlyKFtiNF9wZXJjZW50X2RlZmluZShdJDFbKV0pKSkKKyAgICAg
ICAgICBtNF9mb3JlYWNoKFtiNF92YWx1ZV0sIG00X2RxdW90ZShtNF9zaGlmdCgkQCkpLAorICAg
ICAgICAgICAgICAgICAgICAgW2I0X2Vycm9yKFtbbm90ZV1dLCBiNF9wZXJjZW50X2RlZmluZV9n
ZXRfbG9jKFskMV0pLCBbXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb
YWNjZXB0ZWQgdmFsdWU6ICclcyddXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtNF9kcXVvdGUoYjRfdmFsdWUpKV0pXSlkbmwKKyAgIG00X3BvcGRlZihbYjRfZ29vZF92
YWx1ZV0pXSwKKyAgW2I0X2ZhdGFsKFtbJDA6IHVuZGVmaW5lZCAlJWRlZmluZSB2YXJpYWJsZSAn
JXMnXV0sIFskMV0pXSldKQorCisjIGI0X3BlcmNlbnRfY29kZV9nZXQoW1FVQUxJRklFUl0pCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIElmIGFueSAlY29kZSBibG9ja3Mg
Zm9yIFFVQUxJRklFUiBhcmUgZGVmaW5lZCwgZW1pdCB0aGVtIGJlZ2lubmluZyB3aXRoIGEKKyMg
Y29tbWVudCBhbmQgZW5kaW5nIHdpdGggc3luY2xpbmVzIGFuZCBhIG5ld2xpbmUuICBJZiBRVUFM
SUZJRVIgaXMgbm90CisjIHNwZWNpZmllZCBvciBlbXB0eSwgZG8gdGhpcyBmb3IgdGhlIHVucXVh
bGlmaWVkICVjb2RlIGJsb2Nrcy4gIEFsc28sIHJlY29yZAorIyBCaXNvbidzIHVzYWdlIG9mIFFV
QUxJRklFUiAoaWYgc3BlY2lmaWVkKSBieSBkZWZpbmluZworIyBiNF9wZXJjZW50X2NvZGVfYmlz
b25fcXVhbGlmaWVycyhRVUFMSUZJRVIpLgorIworIyBGb3IgZXhhbXBsZSwgdG8gZW1pdCBhbnkg
dW5xdWFsaWZpZWQgJWNvZGUgYmxvY2tzIGZvbGxvd2VkIGJ5IGFueSAlY29kZQorIyBibG9ja3Mg
Zm9yIHRoZSBxdWFsaWZpZXIgZm9vOgorIworIyAgIGI0X3BlcmNlbnRfY29kZV9nZXQKKyMgICBi
NF9wZXJjZW50X2NvZGVfZ2V0KFtbZm9vXV0pCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfY29kZV9n
ZXRdLAorW200X3B1c2hkZWYoW2I0X21hY3JvX25hbWVdLCBbW2I0X3BlcmNlbnRfY29kZShdJDFb
KV1dKWRubAorbTRfaWZ2YWwoWyQxXSwgW200X2RlZmluZShbYjRfcGVyY2VudF9jb2RlX2Jpc29u
X3F1YWxpZmllcnMoXSQxWyldKV0pZG5sCittNF9pZmRlZihiNF9tYWNyb19uYW1lLAorW2I0X2Nv
bW1lbnQoW200X2lmKFskI10sIFswXSwgW1tVbnF1YWxpZmllZCAlY29kZV1dLAorICAgICAgICAg
ICAgICAgICAgIFtbIiVjb2RlIF0kMVsiXV0pWyBibG9ja3MuXV0pCitiNF91c2VyX2NvZGUoW200
X2luZGlyKGI0X21hY3JvX25hbWUpXSkKK10pZG5sCittNF9wb3BkZWYoW2I0X21hY3JvX25hbWVd
KV0pCisKKyMgYjRfcGVyY2VudF9jb2RlX2lmZGVmKFFVQUxJRklFUiwgSUYtVFJVRSwgW0lGLUZB
TFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgSWYgYW55ICVjb2RlIGJsb2NrcyBmb3IgUVVBTElGSUVSIChvciB1bnF1YWxpZmll
ZCAlY29kZSBibG9ja3MgaWYKKyMgUVVBTElGSUVSIGlzIGVtcHR5KSBhcmUgZGVmaW5lZCwgZXhw
YW5kIElGLVRSVUUsIGVsc2UgZXhwYW5kIElGLUZBTFNFLgorIyBBbHNvLCByZWNvcmQgQmlzb24n
cyB1c2FnZSBvZiBRVUFMSUZJRVIgKGlmIHNwZWNpZmllZCkgYnkgZGVmaW5pbmcKKyMgYjRfcGVy
Y2VudF9jb2RlX2Jpc29uX3F1YWxpZmllcnMoUVVBTElGSUVSKS4KK200X2RlZmluZShbYjRfcGVy
Y2VudF9jb2RlX2lmZGVmXSwKK1ttNF9pZmRlZihbYjRfcGVyY2VudF9jb2RlKF0kMVspXSwKKyAg
ICAgICAgICBbbTRfaWZ2YWwoWyQxXSwgW200X2RlZmluZShbYjRfcGVyY2VudF9jb2RlX2Jpc29u
X3F1YWxpZmllcnMoXSQxWyldKV0pJDJdLAorICAgICAgICAgIFskM10pXSkKKworCisjIyAtLS0t
LS0tLS0tLS0tLS0tLS0gIyMKKyMjIENvbW1vbiB2YXJpYWJsZXMuICAjIworIyMgLS0tLS0tLS0t
LS0tLS0tLS0tICMjCisKKworIyBiNF9wYXJzZV9hc3NlcnRfaWYoW0lGLUFTU0VSVElPTlMtQVJF
LVVTRURdLCBbSUYtTk9UXSkKKyMgYjRfcGFyc2VfdHJhY2VfaWYoW0lGLURFQlVHLVRSQUNFUy1B
UkUtRU5BQkxFRF0sIFtJRi1OT1RdKQorIyBiNF90b2tlbl9jdG9yX2lmKFtJRi1ZWUxFWC1SRVRV
Uk5TLUEtVE9LRU5dLCBbSUYtTk9UXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5l
KFt0b2tlbl9jdG9yXSwgW2FwaS50b2tlbi5jb25zdHJ1Y3Rvcl0pCitiNF9wZXJjZW50X2RlZmlu
ZV9pZl9kZWZpbmUoW2xvY2F0aW9uc10pICAgICAjIFdoZXRoZXIgbG9jYXRpb25zIGFyZSB0cmFj
a2VkLgorYjRfcGVyY2VudF9kZWZpbmVfaWZfZGVmaW5lKFtwYXJzZS5hc3NlcnRdKQorYjRfcGVy
Y2VudF9kZWZpbmVfaWZfZGVmaW5lKFtwYXJzZS50cmFjZV0pCisKKworIyBiNF9iaXNvbl9sb2Nh
dGlvbnNfaWYoW0lGLVRSVUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBFeHBhbmQgSUYtVFJVRSBpZiB1c2luZyBsb2NhdGlvbnMsIGFuZCB1c2luZyB0aGUgZGVmYXVs
dCBsb2NhdGlvbgorIyB0eXBlLgorbTRfZGVmaW5lKFtiNF9iaXNvbl9sb2NhdGlvbnNfaWZdLAor
W2I0X2xvY2F0aW9uc19pZihbYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW1thcGkubG9jYXRpb24u
dHlwZV1dLCBbXSwgWyQxXSldKV0pCisKKworIyBiNF9lcnJvcl92ZXJib3NlX2lmKFtJRi1FUlJP
UlMtQVJFLVZFUkJPU0VdLCBbSUYtTk9UXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1hcCAlZGVmaW5lIHBhcnNlLmVycm9yICIo
c2ltcGxlfHZlcmJvc2UpIiB0byBiNF9lcnJvcl92ZXJib3NlX2lmIGFuZAorIyBiNF9lcnJvcl92
ZXJib3NlX2ZsYWcuCitiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbcGFyc2UuZXJyb3JdXSwg
W1tzaW1wbGVdXSkKK2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbcGFyc2UuZXJy
b3JdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbc2ltcGxlXV0sIFtbdmVy
Ym9zZV1dXV0pCittNF9kZWZpbmUoW2I0X2Vycm9yX3ZlcmJvc2VfZmxhZ10sCisgICAgICAgICAg
W200X2Nhc2UoYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbcGFyc2UuZXJyb3JdXSksCisgICAgICAg
ICAgICAgICAgICAgW3NpbXBsZV0sICBbWzBdXSwKKyAgICAgICAgICAgICAgICAgICBbdmVyYm9z
ZV0sIFtbMV1dKV0pCitiNF9kZWZpbmVfZmxhZ19pZihbZXJyb3JfdmVyYm9zZV0pCisKKyMgeXl0
b2tlbl90YWJsZSBpcyBuZWVkZWQgdG8gc3VwcG9ydCB2ZXJib3NlIGVycm9ycy4KK2I0X2Vycm9y
X3ZlcmJvc2VfaWYoW200X2RlZmluZShbYjRfdG9rZW5fdGFibGVfZmxhZ10sIFsxXSldKQorCisK
KyMgYjRfdmFyaWFudF9pZihbSUYtVkFSSUFOVC1BUkUtVVNFRF0sIFtJRi1OT1RdKQorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitiNF9wZXJjZW50X2Rl
ZmluZV9pZl9kZWZpbmUoW3ZhcmlhbnRdKQorbTRfZGVmaW5lKFtiNF92YXJpYW50X2ZsYWddLCBb
WzBdXSkKK2I0X3BlcmNlbnRfZGVmaW5lX2lmZGVmKFtbYXBpLnZhbHVlLnR5cGVdXSwKKyAgIFtt
NF9jYXNlKGI0X3BlcmNlbnRfZGVmaW5lX2dldF9raW5kKFtbYXBpLnZhbHVlLnR5cGVdXSksIFtr
ZXl3b3JkXSwKKyAgICAgICAgICAgIFttNF9jYXNlKGI0X3BlcmNlbnRfZGVmaW5lX2dldChbW2Fw
aS52YWx1ZS50eXBlXV0pLCBbdmFyaWFudF0sCisgICAgICAgICAgICAgICAgICAgIFttNF9kZWZp
bmUoW2I0X3ZhcmlhbnRfZmxhZ10sIFtbMV1dKV0pXSldKQorYjRfZGVmaW5lX2ZsYWdfaWYoW3Zh
cmlhbnRdKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBBZnRlciBwcm9jZXNzaW5nIHRoZSBza2VsZXRvbnMs
IGNoZWNrIHRoYXQgYWxsIHRoZSB1c2VyJ3MgICAjIworIyMgJWRlZmluZSB2YXJpYWJsZXMgYW5k
ICVjb2RlIHF1YWxpZmllcnMgd2VyZSB1c2VkIGJ5IEJpc29uLiAgIyMKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKK200
X2RlZmluZShbYjRfY2hlY2tfdXNlcl9uYW1lc193cmFwXSwKK1ttNF9pZmRlZihbYjRfcGVyY2Vu
dF9dJDFbX3VzZXJfXSQyW3NdLAorICAgICAgICAgIFtiNF9jaGVja191c2VyX25hbWVzKFtbJV0k
MSAkMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2I0X3BlcmNlbnRfXSQxW191
c2VyX10kMltzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW2I0X3BlcmNlbnRf
XSQxW19iaXNvbl9dJDJbc11dKV0pXSkKKworbTRfd3JhcF9saWZvKFsKK2I0X2NoZWNrX3VzZXJf
bmFtZXNfd3JhcChbW2RlZmluZV1dLCBbW3ZhcmlhYmxlXV0pCitiNF9jaGVja191c2VyX25hbWVz
X3dyYXAoW1tjb2RlXV0sIFtbcXVhbGlmaWVyXV0pCitdKQorCisKKyMjIC0tLS0tLS0tLS0tLS0t
LS0gIyMKKyMjIERlZmF1bHQgdmFsdWVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKwor
IyBtNF9kZWZpbmVfZGVmYXVsdChbYjRfbGV4X3BhcmFtXSwgW10pICAgZG5sIGJyZWFrcyBvdGhl
ciBza2VsZXRvbnMKK200X2RlZmluZV9kZWZhdWx0KFtiNF9lcGlsb2d1ZV0sIFtdKQorbTRfZGVm
aW5lX2RlZmF1bHQoW2I0X3BhcnNlX3BhcmFtXSwgW10pCisKKyMgVGhlIGluaXRpYWwgY29sdW1u
IGFuZCBsaW5lLgorbTRfZGVmaW5lX2RlZmF1bHQoW2I0X2xvY2F0aW9uX2luaXRpYWxfY29sdW1u
XSwgWzFdKQorbTRfZGVmaW5lX2RlZmF1bHQoW2I0X2xvY2F0aW9uX2luaXRpYWxfbGluZV0sICAg
WzFdKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLSAjIworIyMgU2FuaXR5IGNoZWNrcy4gICMjCisj
IyAtLS0tLS0tLS0tLS0tLS0gIyMKKworIyBhcGkubG9jYXRpb24ucHJlZml4PXsuLi59IChKYXZh
IGFuZCBDKyspLgorYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfa2luZChbYXBpLmxvY2F0aW9uLnR5
cGVdLCBbY29kZV0sIFtkZXByZWNhdGVkXSkKKworIyBhcGkucG9zaXRpb24ucHJlZml4PXsuLi59
IChKYXZhKS4KK2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX2tpbmQoW2FwaS5wb3NpdGlvbi50eXBl
XSwgW2NvZGVdLCBbZGVwcmVjYXRlZF0pCisKKyMgYXBpLnByZWZpeCA+PCAlbmFtZS1wcmVmaXgu
CitiNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kKFthcGkucHJlZml4XSwgW2NvZGVdLCBbZGVw
cmVjYXRlZF0pCitiNF9wZXJjZW50X2RlZmluZV9pZmRlZihbYXBpLnByZWZpeF0sCitbbTRfaWZk
ZWYoW2I0X3ByZWZpeF0sCitbYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0X2xv
YyhbYXBpLnByZWZpeF0pLAorICAgICAgICAgICAgICAgIFtbJyVzJyBhbmQgJyVzJyBjYW5ub3Qg
YmUgdXNlZCB0b2dldGhlcl1dLAorICAgICAgICAgICAgICAgIFslbmFtZS1wcmVmaXhdLAorICAg
ICAgICAgICAgICAgIFslZGVmaW5lIGFwaS5wcmVmaXhdKV0pXSkKKworIyBhcGkudG9rZW4ucHJl
Zml4PXsuLi59CisjIE1ha2UgaXQgYSB3YXJuaW5nIGZvciB0aG9zZSB3aG8gdXNlZCBiZXRhcyBv
ZiBCaXNvbiAzLjAuCitiNF9wZXJjZW50X2RlZmluZV9jaGVja19raW5kKFthcGkudG9rZW4ucHJl
Zml4XSwgW2NvZGVdLCBbZGVwcmVjYXRlZF0pCisKKyMgYXBpLnZhbHVlLnR5cGUgPjwgJXVuaW9u
LgorYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW2FwaS52YWx1ZS50eXBlXSwKK1ttNF9pZmRlZihb
YjRfdW5pb25fbWVtYmVyc10sCitbYjRfY29tcGxhaW5fYXQoYjRfcGVyY2VudF9kZWZpbmVfZ2V0
X2xvYyhbYXBpLnZhbHVlLnR5cGVdKSwKKyAgICAgICAgICAgICAgICBbWyclcycgYW5kICclcycg
Y2Fubm90IGJlIHVzZWQgdG9nZXRoZXJdXSwKKyAgICAgICAgICAgICAgICBbJXVuaW9uXSwKKyAg
ICAgICAgICAgICAgICBbJWRlZmluZSBhcGkudmFsdWUudHlwZV0pXSldKQorCisjIGFwaS52YWx1
ZS50eXBlPXVuaW9uID48ICV5YWNjLgorYjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW2FwaS52YWx1
ZS50eXBlXSwKK1ttNF9pZihiNF9wZXJjZW50X2RlZmluZV9nZXQoW2FwaS52YWx1ZS50eXBlXSks
IFt1bmlvbl0sCitbYjRfeWFjY19pZihkbmwKK1tiNF9jb21wbGFpbl9hdChiNF9wZXJjZW50X2Rl
ZmluZV9nZXRfbG9jKFthcGkudmFsdWUudHlwZV0pLAorICAgICAgICAgICAgICAgIFtbJyVzJyBh
bmQgJyVzJyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcl1dLAorICAgICAgICAgICAgICAgIFsleWFj
Y10sCisgICAgICAgICAgICAgICAgWyVkZWZpbmUgYXBpLnZhbHVlLnR5cGUgInVuaW9uIl0pXSld
KV0pCisKKyMgYXBpLnZhbHVlLnVuaW9uLm5hbWUuCitiNF9wZXJjZW50X2RlZmluZV9jaGVja19r
aW5kKFthcGkudmFsdWUudW5pb24ubmFtZV0sIFtrZXl3b3JkXSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhpcmRfcGFydHkvc2tlbGV0b25z
L2MtbGlrZS5tNCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vdGhp
cmRfcGFydHkvc2tlbGV0b25zL2MtbGlrZS5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDg5MWI2N2VmOTdiMDlh
MTIxZjA0ODdmMDBjN2EyNWMzNTc4MzE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy1saWtl
Lm00CkBAIC0wLDAgKzEsNjYgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb21tb24gY29k
ZSBmb3IgQy1saWtlIGxhbmd1YWdlcyAoQywgQysrLCBKYXZhLCBldGMuKQorCisjIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE1LCAyMDE4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgX2I0X2NvbW1lbnQoVEVYVCwgT1BFTiwgQ09OVElO
VUUsIEVORCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHV0
IFRFWFQgaW4gY29tbWVudC4gIEF2b2lkIHRyYWlsaW5nIHNwYWNlczogZG9uJ3QgaW5kZW50IGVt
cHR5IGxpbmVzLgorIyBBdm9pZCBhZGRpbmcgaW5kZW50YXRpb24gdG8gdGhlIGZpcnN0IGxpbmUs
IGFzIHRoZSBpbmRlbnRhdGlvbiBjb21lcworIyBmcm9tIE9QRU4uICBUaGF0J3Mgd2h5IHdlIGRv
bid0IHBhdHN1YnN0KFskMV0sIFteXCguXCldLCBbICAgXDFdKS4KKyMKKyMgUHJlZml4IGFsbCB0
aGUgb3V0cHV0IGxpbmVzIHdpdGggUFJFRklYLgorbTRfZGVmaW5lKFtfYjRfY29tbWVudF0sCitb
JDJbXW00X2JwYXRzdWJzdChtNF9leHBhbmQoW1skMV1dKSwgWworXCguXCldLCBbCiskM1wxXSkk
NF0pCisKKworIyBiNF9jb21tZW50KFRFWFQsIFtQUkVGSVhdKQorIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorIyBQdXQgVEVYVCBpbiBjb21tZW50LiAgUHJlZml4IGFsbCB0aGUgb3V0cHV0
IGxpbmVzIHdpdGggUFJFRklYLgorbTRfZGVmaW5lKFtiNF9jb21tZW50XSwKK1tfYjRfY29tbWVu
dChbJDFdLCBbJDIvKiBdLCBbJDIgICBdLCBbICAqL10pXSkKKworCisKKworIyBfYjRfZG9sbGFy
X2RvbGxhcihWQUxVRSwgU1lNQk9MLU5VTSwgRklFTEQsIERFRkFVTFQtRklFTEQpCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
SWYgRklFTEQgKG9yIERFRkFVTFQtRklFTEQpIGlzIG5vbi1udWxsLCByZXR1cm4gIlZBTFVFLkZJ
RUxEIiwKKyMgb3RoZXJ3aXNlIGp1c3QgVkFMVUUuICBCZSBzdXJlIHRvIHBhc3MgIihWQUxVRSki
IGlmIFZBTFVFIGlzIGEKKyMgcG9pbnRlci4KK200X2RlZmluZShbX2I0X2RvbGxhcl9kb2xsYXJd
LAorW2I0X3N5bWJvbF92YWx1ZShbJDFdLAorICAgICAgICAgICAgICAgICBbJDJdLAorICAgICAg
ICAgICAgICAgICBtNF9pZihbJDNdLCBbW11dLAorICAgICAgICAgICAgICAgICAgICAgICBbWyQ0
XV0sIFtbJDNdXSkpXSkKKworIyBiNF9kb2xsYXJfcHVzaGRlZihWQUxVRS1QT0lOVEVSLCBTWU1C
T0wtTlVNLCBbVFlQRV9UQUddLCBMT0NBVElPTikKKyMgYjRfZG9sbGFyX3BvcGRlZgorIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKyMgRGVmaW5lIGI0X2RvbGxhcl9kb2xsYXIgZm9yIFZBTFVFLVBPSU5URVIgYW5kIERF
RkFVTFQtRklFTEQsCisjIGFuZCBiNF9hdF9kb2xsYXIgZm9yIExPQ0FUSU9OLgorbTRfZGVmaW5l
KFtiNF9kb2xsYXJfcHVzaGRlZl0sCitbbTRfcHVzaGRlZihbYjRfZG9sbGFyX2RvbGxhcl0sCisg
ICAgICAgICAgICBbX2I0X2RvbGxhcl9kb2xsYXIoWyQxXSwgWyQyXSwgbTRfZHF1b3RlKCRdWzEp
LCBbJDNdKV0pZG5sCittNF9wdXNoZGVmKFtiNF9hdF9kb2xsYXJdLCBbJDRdKWRubAorXSkKK200
X2RlZmluZShbYjRfZG9sbGFyX3BvcGRlZl0sCitbbTRfcG9wZGVmKFtiNF9hdF9kb2xsYXJdKWRu
bAorbTRfcG9wZGVmKFtiNF9kb2xsYXJfZG9sbGFyXSlkbmwKK10pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9u
cy9jLm00IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9w
YXJ0eS9za2VsZXRvbnMvYy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2RlMDRhOTU3MWIxMGFmODkwMzdjNTk3
ZDhjYjk0OTU0ZmY4YjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdG9vbHMvZmxleC1iaXNvbi90aGlyZF9wYXJ0eS9za2VsZXRvbnMvYy5tNApAQCAtMCwwICsx
LDg4MyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIEMgTTQgTWFjcm9zIGZvciBCaXNvbi4K
KworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDQtMjAxNSwgMjAxOC0yMDE5IEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwKKyMgSW5jLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp
Y2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg
SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCittNF9pbmNsdWRl
KGI0X3NrZWxldG9uc2Rpci9bYy1saWtlLm00XSkKKworIyBiNF90b2NwcChTVFJJTkcpCisjIC0t
LS0tLS0tLS0tLS0tLS0KKyMgQ29udmVydCBTVFJJTkcgaW50byBhIHZhbGlkIEMgbWFjcm8gbmFt
ZS4KK200X2RlZmluZShbYjRfdG9jcHBdLAorW200X3RvdXBwZXIobTRfYnBhdHN1YnN0KG00X3F1
b3RlKCQxKSwgW1teYS16QS1aMC05XStdLCBbX10pKV0pCisKKworIyBiNF9jcHBfZ3VhcmQoRklM
RSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIEEgdmFsaWQgQyBtYWNybyBuYW1lIHRvIHVzZSBh
cyBhIENQUCBoZWFkZXIgZ3VhcmQgZm9yIEZJTEUuCittNF9kZWZpbmUoW2I0X2NwcF9ndWFyZF0s
CitbW1lZX11iNF90b2NwcChtNF9kZWZuKFtiNF9wcmVmaXhdKS9bJDFdKVtfSU5DTFVERURdXSkK
KworCisjIGI0X2NwcF9ndWFyZF9vcGVuKEZJTEUpCisjIGI0X2NwcF9ndWFyZF9jbG9zZShGSUxF
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSWYgRklMRSBkb2VzIG5vdCBleHBhbmQg
dG8gbm90aGluZywgb3Blbi9jbG9zZSBDUFAgaW5jbHVzaW9uIGd1YXJkcyBmb3IgRklMRS4KK200
X2RlZmluZShbYjRfY3BwX2d1YXJkX29wZW5dLAorW200X2lmdmFsKG00X3F1b3RlKCQxKSwKK1sj
aWZuZGVmIGI0X2NwcF9ndWFyZChbJDFdKQorIyBkZWZpbmUgYjRfY3BwX2d1YXJkKFskMV0pXSld
KQorCittNF9kZWZpbmUoW2I0X2NwcF9ndWFyZF9jbG9zZV0sCitbbTRfaWZ2YWwobTRfcXVvdGUo
JDEpLAorWyNlbmRpZiBiNF9jb21tZW50KFshYjRfY3BwX2d1YXJkKFskMV0pXSldKV0pCisKKwor
IyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgSWRlbnRpZmljYXRpb24uICAjIworIyMgLS0tLS0t
LS0tLS0tLS0tLSAjIworCisjIGI0X2lkZW50aWZpY2F0aW9uCisjIC0tLS0tLS0tLS0tLS0tLS0t
CisjIERlcGVuZHMgb24gaW5kaXZpZHVhbCBza2VsZXRvbnMgdG8gZGVmaW5lIGI0X3B1cmVfZmxh
ZywgYjRfcHVzaF9mbGFnLCBvcgorIyBiNF9wdWxsX2ZsYWcgaWYgdGhleSB1c2UgdGhlIHZhbHVl
cyBvZiB0aGUgJWRlZmluZSB2YXJpYWJsZXMgYXBpLnB1cmUgb3IKKyMgYXBpLnB1c2gtcHVsbC4K
K200X2RlZmluZShbYjRfaWRlbnRpZmljYXRpb25dLAorW1svKiBJZGVudGlmeSBCaXNvbiBvdXRw
dXQuICAqLworI2RlZmluZSBZWUJJU09OIDEKKworLyogQmlzb24gdmVyc2lvbi4gICovCisjZGVm
aW5lIFlZQklTT05fVkVSU0lPTiAiXWI0X3ZlcnNpb25bIgorCisvKiBTa2VsZXRvbiBuYW1lLiAg
Ki8KKyNkZWZpbmUgWVlTS0VMRVRPTl9OQU1FIF1iNF9za2VsZXRvbltdbTRfaWZkZWYoW2I0X3B1
cmVfZmxhZ10sIFtbCisKKy8qIFB1cmUgcGFyc2Vycy4gICovCisjZGVmaW5lIFlZUFVSRSBdYjRf
cHVyZV9mbGFnXSlbXW00X2lmZGVmKFtiNF9wdXNoX2ZsYWddLCBbWworCisvKiBQdXNoIHBhcnNl
cnMuICAqLworI2RlZmluZSBZWVBVU0ggXWI0X3B1c2hfZmxhZ10pW11tNF9pZmRlZihbYjRfcHVs
bF9mbGFnXSwgW1sKKworLyogUHVsbCBwYXJzZXJzLiAgKi8KKyNkZWZpbmUgWVlQVUxMIF1iNF9w
dWxsX2ZsYWddKVsKK11dKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIERlZmF1bHQg
dmFsdWVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBiNF9hcGlfcHJlZml4LCBi
NF9hcGlfUFJFRklYCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29ycmVzcG9u
ZHMgdG8gJWRlZmluZSBhcGkucHJlZml4CitiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbYXBp
LnByZWZpeF1dLCBbW3l5XV0pCittNF9kZWZpbmUoW2I0X2FwaV9wcmVmaXhdLAorW2I0X3BlcmNl
bnRfZGVmaW5lX2dldChbW2FwaS5wcmVmaXhdXSldKQorbTRfZGVmaW5lKFtiNF9hcGlfUFJFRklY
XSwKK1ttNF90b3VwcGVyKGI0X2FwaV9wcmVmaXgpXSkKKworCisjIGI0X3ByZWZpeAorIyAtLS0t
LS0tLS0KKyMgSWYgdGhlICVuYW1lLXByZWZpeCBpcyBub3QgZ2l2ZW4sIGl0IGlzIGFwaS5wcmVm
aXguCittNF9kZWZpbmVfZGVmYXVsdChbYjRfcHJlZml4XSwgW2I0X2FwaV9wcmVmaXhdKQorCisj
IElmIHRoZSAldW5pb24gaXMgbm90IG5hbWVkLCBpdHMgbmFtZSBpcyBZWVNUWVBFLgorYjRfcGVy
Y2VudF9kZWZpbmVfZGVmYXVsdChbW2FwaS52YWx1ZS51bmlvbi5uYW1lXV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIFtiNF9hcGlfUFJFRklYW11bU1RZUEVdXSkKKworCisjIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFB1cmUvaW1wdXJlIGludGVyZmFjZXMuICAjIworIyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgYjRfbGV4X2Zvcm1hbHMKKyMgLS0tLS0t
LS0tLS0tLS0KKyMgQWxsIHRoZSB5eWxleCBmb3JtYWwgYXJndW1lbnRzLgorIyBiNF9sZXhfcGFy
YW0gYXJyaXZlcyBxdW90ZWQgdHdpY2UsIGJ1dCB3ZSB3YW50IHRvIGtlZXAgb25seSBvbmUgbGV2
ZWwuCittNF9kZWZpbmUoW2I0X2xleF9mb3JtYWxzXSwKK1tiNF9wdXJlX2lmKFtbW1tZWVNUWVBF
ICp5eWx2YWxwXV0sIFtbJnl5bHZhbF1dXVtdZG5sCitiNF9sb2NhdGlvbnNfaWYoWywgW1tZWUxU
WVBFICp5eWxsb2NwXSwgWyZ5eWxsb2NdXV0pXSlkbmwKK200X2lmZGVmKFtiNF9sZXhfcGFyYW1d
LCBbLCBdYjRfbGV4X3BhcmFtKV0pCisKKworIyBiNF9sZXgKKyMgLS0tLS0tCisjIENhbGwgeXls
ZXguCittNF9kZWZpbmUoW2I0X2xleF0sCitbYjRfZnVuY3Rpb25fY2FsbChbeXlsZXhdLCBbaW50
XSwgYjRfbGV4X2Zvcm1hbHMpXSkKKworCisjIGI0X3VzZXJfYXJncworIyAtLS0tLS0tLS0tLS0K
K200X2RlZmluZShbYjRfdXNlcl9hcmdzXSwKK1ttNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBb
LCBiNF9hcmdzKGI0X3BhcnNlX3BhcmFtKV0pXSkKKworCisjIGI0X3BhcnNlX3BhcmFtCisjIC0t
LS0tLS0tLS0tLS0tCisjIElmIGRlZmluZWQsIGI0X3BhcnNlX3BhcmFtIGFycml2ZXMgZG91Ymxl
IHF1b3RlZCwgYnV0IGJlbG93IHdlIHByZWZlcgorIyBpdCB0byBiZSBzaW5nbGUgcXVvdGVkLgor
bTRfZGVmaW5lKFtiNF9wYXJzZV9wYXJhbV0sCitiNF9wYXJzZV9wYXJhbSkKKworCisjIGI0X3Bh
cnNlX3BhcmFtX2ZvcihERUNMLCBGT1JNQUwsIEJPRFkpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJdGVyYXRlIG92ZXIgdGhlIHVzZXIgcGFyYW1ldGVycywg
YmluZGluZyB0aGUgZGVjbGFyYXRpb24gdG8gREVDTCwKKyMgdGhlIGZvcm1hbCBuYW1lIHRvIEZP
Uk1BTCwgYW5kIGV2YWx1YXRpbmcgdGhlIEJPRFkuCittNF9kZWZpbmUoW2I0X3BhcnNlX3BhcmFt
X2Zvcl0sCitbbTRfZm9yZWFjaChbJDFfJDJdLCBtNF9kZWZuKFtiNF9wYXJzZV9wYXJhbV0pLAor
W200X3B1c2hkZWYoWyQxXSwgbTRfdW5xdW90ZShtNF9jYXIoJDFfJDIpKSlkbmwKK200X3B1c2hk
ZWYoWyQyXSwgbTRfc2hpZnQoJDFfJDIpKWRubAorJDNbXWRubAorbTRfcG9wZGVmKFskMl0pZG5s
CittNF9wb3BkZWYoWyQxXSlkbmwKK10pXSkKKworIyBiNF9wYXJzZV9wYXJhbV91c2UoW1ZBTF0s
IFtMT0NdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAnWVlVU0UnIFZB
TCwgTE9DIGlmIGxvY2F0aW9ucyBhcmUgZW5hYmxlZCwgYW5kIGFsbCB0aGUgcGFyc2UtcGFyYW1z
LgorbTRfZGVmaW5lKFtiNF9wYXJzZV9wYXJhbV91c2VdLAorW200X2lmdmFsbihbJDFdLCBbICBZ
WVVTRSAoWyQxXSk7XSlkbmwKK2I0X2xvY2F0aW9uc19pZihbbTRfaWZ2YWxuKFskMl0sIFsgIFlZ
VVNFIChbJDJdKTtdKV0pZG5sCitiNF9wYXJzZV9wYXJhbV9mb3IoW0RlY2xdLCBbRm9ybWFsXSwg
WyAgWVlVU0UgKEZvcm1hbCk7CitdKWRubAorXSkKKworCisjIyAtLS0tLS0tLS0tLS0gIyMKKyMj
IERhdGEgVHlwZXMuICAjIworIyMgLS0tLS0tLS0tLS0tICMjCisKKyMgYjRfaW50X3R5cGUoTUlO
LCBNQVgpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gdGhlIHNtYWxsZXN0IGlu
dCB0eXBlIGFibGUgdG8gaGFuZGxlIG51bWJlcnMgcmFuZ2luZyBmcm9tCisjIE1JTiB0byBNQVgg
KGluY2x1ZGVkKS4KK200X2RlZmluZShbYjRfaW50X3R5cGVdLAorW200X2lmKGI0X2ludHNfaW4o
JEAsICAgICAgWzBdLCAgIFsyNTVdKSwgWzFdLCBbdW5zaWduZWQgY2hhcl0sCisgICAgICAgYjRf
aW50c19pbigkQCwgICBbLTEyOF0sICAgWzEyN10pLCBbMV0sIFtzaWduZWQgY2hhcl0sCisKKyAg
ICAgICBiNF9pbnRzX2luKCRALCAgICAgIFswXSwgWzY1NTM1XSksIFsxXSwgW3Vuc2lnbmVkIHNo
b3J0XSwKKyAgICAgICBiNF9pbnRzX2luKCRALCBbLTMyNzY4XSwgWzMyNzY3XSksIFsxXSwgW3No
b3J0XSwKKworICAgICAgIG00X2V2YWwoWzAgPD0gJDFdKSwgICAgICAgICAgICAgICAgWzFdLCBb
dW5zaWduZWRdLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtpbnRdKV0pCisKKworIyBiNF9pbnRfdHlwZV9mb3IoTkFNRSkKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisjIFJldHVybiB0aGUgc21hbGxlc3QgaW50IHR5cGUgYWJsZSB0byBoYW5kbGUg
bnVtYmVycyByYW5naW5nIGZyb20KKyMgJ05BTUVfbWluJyB0byAnTkFNRV9tYXgnIChpbmNsdWRl
ZCkuCittNF9kZWZpbmUoW2I0X2ludF90eXBlX2Zvcl0sCitbYjRfaW50X3R5cGUoJDFfbWluLCAk
MV9tYXgpXSkKKworCisjIGI0X3RhYmxlX3ZhbHVlX2VxdWFscyhUQUJMRSwgVkFMVUUsIExJVEVS
QUwpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFdp
dGhvdXQgaW5kdWNpbmcgYSBjb21wYXJpc29uIHdhcm5pbmcgZnJvbSB0aGUgY29tcGlsZXIsIGNo
ZWNrIGlmIHRoZQorIyBsaXRlcmFsIHZhbHVlIExJVEVSQUwgZXF1YWxzIFZBTFVFIGZyb20gdGFi
bGUgVEFCTEUsIHdoaWNoIG11c3QgaGF2ZQorIyBUQUJMRV9taW4gYW5kIFRBQkxFX21heCBkZWZp
bmVkLgorbTRfZGVmaW5lKFtiNF90YWJsZV92YWx1ZV9lcXVhbHNdLAorW200X2lmKG00X2V2YWwo
JDMgPCBtNF9pbmRpcihbYjRfXSQxW19taW5dKQorICAgICAgICAgICAgICAgfHwgbTRfaW5kaXIo
W2I0X10kMVtfbWF4XSkgPCAkMyksIFsxXSwKKyAgICAgICBbWzBdXSwKKyAgICAgICBbKCEhKCgk
MikgPT0gKCQzKSkpXSldKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBDb21waWxl
ciBpc3N1ZXMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBiNF9hdHRyaWJ1dGVf
ZGVmaW5lKFtub3JldHVybl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
UHJvdmlkZSBwb3J0YWJsZSBjb21waWxlciAiYXR0cmlidXRlcyIuICBJZiAibm9yZXR1cm4iIGlz
IHBhc3NlZCwgZGVmaW5lCisjIF9Ob3JldHVybi4KK200X2RlZmluZShbYjRfYXR0cmlidXRlX2Rl
ZmluZV0sCitbWyNpZm5kZWYgWVlfQVRUUklCVVRFCisjIGlmIChkZWZpbmVkIF9fR05VQ19fICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiAo
MiA8IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDk2IDw9IF9fR05VQ19NSU5PUl9fKSkp
ICBcCisgICAgIHx8IGRlZmluZWQgX19TVU5QUk9fQyAmJiAweDUxMTAgPD0gX19TVU5QUk9fQwor
IyAgZGVmaW5lIFlZX0FUVFJJQlVURShTcGVjKSBfX2F0dHJpYnV0ZV9fKFNwZWMpCisjIGVsc2UK
KyMgIGRlZmluZSBZWV9BVFRSSUJVVEUoU3BlYykgLyogZW1wdHkgKi8KKyMgZW5kaWYKKyNlbmRp
ZgorCisjaWZuZGVmIFlZX0FUVFJJQlVURV9QVVJFCisjIGRlZmluZSBZWV9BVFRSSUJVVEVfUFVS
RSAgIFlZX0FUVFJJQlVURSAoKF9fcHVyZV9fKSkKKyNlbmRpZgorCisjaWZuZGVmIFlZX0FUVFJJ
QlVURV9VTlVTRUQKKyMgZGVmaW5lIFlZX0FUVFJJQlVURV9VTlVTRUQgWVlfQVRUUklCVVRFICgo
X191bnVzZWRfXykpCisjZW5kaWYKKworXW00X2JtYXRjaChbJDFdLCBbXGJub3JldHVyblxiXSwg
W1svKiBUaGUgX05vcmV0dXJuIGtleXdvcmQgb2YgQzExLiAgKi8KKyNpZiAhIGRlZmluZWQgX05v
cmV0dXJuCisjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgMjAxMTAzTCA8PSBfX2NwbHVzcGx1
cworIyAgZGVmaW5lIF9Ob3JldHVybiBbW25vcmV0dXJuXV0KKyMgZWxpZiAhKGRlZmluZWQgX19T
VERDX1ZFUlNJT05fXyAmJiAyMDExMTIgPD0gX19TVERDX1ZFUlNJT05fXykKKyMgIGlmICgzIDw9
IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDggPD0gX19HTlVDX01JTk9SX18pIFwKKyAg
ICAgICB8fCAweDUxMTAgPD0gX19TVU5QUk9fQykKKyMgICBkZWZpbmUgX05vcmV0dXJuIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKQorIyAgZWxpZiBkZWZpbmVkIF9NU0NfVkVSICYmIDEy
MDAgPD0gX01TQ19WRVIKKyMgICBkZWZpbmUgX05vcmV0dXJuIF9fZGVjbHNwZWMgKG5vcmV0dXJu
KQorIyAgZWxzZQorIyAgIGRlZmluZSBfTm9yZXR1cm4KKyMgIGVuZGlmCisjIGVuZGlmCisjZW5k
aWYKKworXV0pWy8qIFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3YXJuaW5ncyBieSAidXNpbmci
IEUuICAqLworI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQgX19HTlVDX18KKyMgZGVmaW5l
IFlZVVNFKEUpICgodm9pZCkgKEUpKQorI2Vsc2UKKyMgZGVmaW5lIFlZVVNFKEUpIC8qIGVtcHR5
ICovCisjZW5kaWYKKworI2lmIGRlZmluZWQgX19HTlVDX18gJiYgISBkZWZpbmVkIF9fSUNDICYm
IDQwNyA8PSBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fCisvKiBTdXBwcmVzcyBhbiBp
bmNvcnJlY3QgZGlhZ25vc3RpYyBhYm91dCB5eWx2YWwgYmVpbmcgdW5pbml0aWFsaXplZC4gICov
CisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTiBcCisgICAgX1By
YWdtYSAoIkdDQyBkaWFnbm9zdGljIHB1c2giKSBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9z
dGljIGlnbm9yZWQgXCItV3VuaW5pdGlhbGl6ZWRcIiIpXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlh
Z25vc3RpYyBpZ25vcmVkIFwiLVdtYXliZS11bmluaXRpYWxpemVkXCIiKQorIyBkZWZpbmUgWVlf
SUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5EIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdu
b3N0aWMgcG9wIikKKyNlbHNlCisjIGRlZmluZSBZWV9JTklUSUFMX1ZBTFVFKFZhbHVlKSBWYWx1
ZQorI2VuZGlmCisjaWZuZGVmIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisj
IGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgorIyBkZWZpbmUgWVlf
SUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECisjZW5kaWYKKyNpZm5kZWYgWVlfSU5JVElB
TF9WQUxVRQorIyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1ZSkgLyogTm90aGluZy4gKi8K
KyNlbmRpZgorXV0pCisKKworIyBiNF9udWxsX2RlZmluZQorIyAtLS0tLS0tLS0tLS0tLQorIyBQ
b3J0YWJpbGl0eSBpc3N1ZXM6IGRlZmluZSBhIFlZX05VTExQVFIgYXBwcm9wcmlhdGUgZm9yIHRo
ZSBjdXJyZW50CisjIGxhbmd1YWdlIChDLCBDKys5OCwgb3IgQysrMTEpLgorIworIyBJbiBDKysg
cHJlIEMrKzExIGl0IGlzIHN0YW5kYXJkIHByYWN0aWNlIHRvIHVzZSAwIChub3QgTlVMTCkgZm9y
IHRoZQorIyBudWxsIHBvaW50ZXIuICBJbiBDLCBwcmVmZXIgKCh2b2lkKikwKSB0byBhdm9pZCBo
YXZpbmcgdG8gaW5jbHVkZSBzdGRsaWIuaC4KK200X2RlZmluZShbYjRfbnVsbF9kZWZpbmVdLAor
WyMgaWZuZGVmIFlZX05VTExQVFIKKyMgIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKKyMgICBpZiAy
MDExMDNMIDw9IF9fY3BsdXNwbHVzCisjICAgIGRlZmluZSBZWV9OVUxMUFRSIG51bGxwdHIKKyMg
ICBlbHNlCisjICAgIGRlZmluZSBZWV9OVUxMUFRSIDAKKyMgICBlbmRpZgorIyAgZWxzZQorIyAg
IGRlZmluZSBZWV9OVUxMUFRSICgodm9pZCopMCkKKyMgIGVuZGlmCisjIGVuZGlmW11kbmwKK10p
CisKKworIyBiNF9udWxsCisjIC0tLS0tLS0KKyMgUmV0dXJuIGEgbnVsbCBwb2ludGVyIGNvbnN0
YW50LgorbTRfZGVmaW5lKFtiNF9udWxsXSwgW1lZX05VTExQVFJdKQorCisKKworIyMgLS0tLS0t
LS0tIyMKKyMjIFZhbHVlcy4gICMjCisjIyAtLS0tLS0tLS0jIworCisjIGI0X2ludGVncmFsX3Bh
cnNlcl90YWJsZV9kZWZpbmUoVEFCTEUtTkFNRSwgQ09OVEVOVCwgQ09NTUVOVCkKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBEZWZpbmUgInl5PFRBQkxFLU5BTUU+IiB3aG9zZSBjb250ZW50cyBpcyBDT05URU5ULgorbTRf
ZGVmaW5lKFtiNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVfZGVmaW5lXSwKK1ttNF9pZnZhbG4oWyQz
XSwgW2I0X2NvbW1lbnQoWyQzXSwgWyAgXSldKWRubAorc3RhdGljIGNvbnN0IGI0X2ludF90eXBl
X2ZvcihbJDJdKSB5eSQxW1tdXSA9Cit7CisgICQyCit9O2RubAorXSkKKworCisjIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBBc3NpZ25pbmcgdG9rZW4gbnVtYmVycy4gICMjCisj
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgYjRfdG9rZW5fZGVmaW5lKFRPS0VO
LU5VTSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT3V0cHV0IHRoZSBkZWZpbml0
aW9uIG9mIHRoaXMgdG9rZW4gYXMgI2RlZmluZS4KK200X2RlZmluZShbYjRfdG9rZW5fZGVmaW5l
XSwKK1tiNF90b2tlbl9mb3JtYXQoWyNkZWZpbmUgJXMgJXNdLCBbJDFdKV0pCisKKyMgYjRfdG9r
ZW5fZGVmaW5lcworIyAtLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBv
ZiB0aGUgdG9rZW5zLgorbTRfZGVmaW5lKFtiNF90b2tlbl9kZWZpbmVzXSwKK1tiNF9hbnlfdG9r
ZW5fdmlzaWJsZV9pZihbLyogVG9rZW5zLiAgKi8KK200X2pvaW4oWworXSwgYjRfc3ltYm9sX21h
cChbYjRfdG9rZW5fZGVmaW5lXSkpCitdKV0pCisKKworIyBiNF90b2tlbl9lbnVtKFRPS0VOLU5V
TSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBv
ZiB0aGlzIHRva2VuIGFzIGFuIGVudW0uCittNF9kZWZpbmUoW2I0X3Rva2VuX2VudW1dLAorW2I0
X3Rva2VuX2Zvcm1hdChbJXMgPSAlc10sIFskMV0pXSkKKworCisjIGI0X3Rva2VuX2VudW1zCisj
IC0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgdG9rZW5zIChp
ZiB0aGVyZSBhcmUpIGFzIGVudW1zLgorbTRfZGVmaW5lKFtiNF90b2tlbl9lbnVtc10sCitbYjRf
YW55X3Rva2VuX3Zpc2libGVfaWYoW1svKiBUb2tlbiB0eXBlLiAgKi8KKyNpZm5kZWYgXWI0X2Fw
aV9QUkVGSVhbVE9LRU5UWVBFCisjIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtUT0tFTlRZUEUKKyAg
ZW51bSBdYjRfYXBpX3ByZWZpeFt0b2tlbnR5cGUKKyAgeworICAgIF1tNF9qb2luKFssCisgICAg
XSwKKyAgICAgICAgICAgICBiNF9zeW1ib2xfbWFwKFtiNF90b2tlbl9lbnVtXSkpWworICB9Owor
I2VuZGlmCitdXSldKQorCisKKyMgYjRfdG9rZW5fZW51bXNfZGVmaW5lcworIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisjIE91dHB1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgdG9rZW5zIChpZiB0
aGVyZSBhcmUgYW55KSBhcyBlbnVtcyBhbmQsCisjIGlmIFBPU0lYIFlhY2MgaXMgZW5hYmxlZCwg
YXMgI2RlZmluZXMuCittNF9kZWZpbmUoW2I0X3Rva2VuX2VudW1zX2RlZmluZXNdLAorW2I0X3Rv
a2VuX2VudW1zW11iNF95YWNjX2lmKFtiNF90b2tlbl9kZWZpbmVzXSldKQorCisKKyMjIC0tLS0t
LS0tLS0tLS0tLS0tICMjCisjIyBTZW1hbnRpYyBWYWx1ZXMuICAjIworIyMgLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKworCisjIGI0X3N5bWJvbF92YWx1ZShWQUwsIFtTWU1CT0wtTlVNXSwgW1RZUEUt
VEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBTZWUgUkVBRE1FLgorbTRfZGVmaW5lKFtiNF9zeW1ib2xfdmFsdWVdLAorW200X2lmdmFsKFsk
M10sCisgICAgICAgICAgWygkMS4kMyldLAorICAgICAgICAgIFttNF9pZnZhbChbJDJdLAorICAg
ICAgICAgICAgICAgICAgICBbYjRfc3ltYm9sX2lmKFskMl0sIFtoYXNfdHlwZV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWygkMS5iNF9zeW1ib2woWyQyXSwgW3R5cGVdKSld
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFskMV0pXSwKKyAgICAgICAgICAg
ICAgICAgICAgWyQxXSldKV0pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
RGVmaW5pbmcgQyBmdW5jdGlvbnMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwor
CisKKyMgYjRfZnVuY3Rpb25fZGVmaW5lKE5BTUUsIFJFVFVSTi1WQUxVRSwgW0RFQ0wxLCBOQU1F
MV0sIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyZSB0aGUgZnVuY3Rpb24gTkFNRSBpbiBDLgorbTRfZGVm
aW5lKFtiNF9mdW5jdGlvbl9kZWZpbmVdLAorWyQyCiskMSAoYjRfZm9ybWFscyhtNF9zaGlmdDIo
JEApKSlbXWRubAorXSkKKworCisjIGI0X2Zvcm1hbHMoW0RFQ0wxLCBOQU1FMV0sIC4uLikKKyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGUgZm9ybWFsIGFyZ3VtZW50cyBv
ZiBhIEMgZnVuY3Rpb24gZGVmaW5pdGlvbi4KK200X2RlZmluZShbYjRfZm9ybWFsc10sCitbbTRf
aWYoWyQjXSwgWzBdLCBbdm9pZF0sCisgICAgICAgWyQjJDFdLCBbMV0sIFt2b2lkXSwKKyAgICAg
ICAgICAgICAgIFttNF9tYXBfc2VwKFtiNF9mb3JtYWxdLCBbLCBdLCBbJEBdKV0pXSkKKworbTRf
ZGVmaW5lKFtiNF9mb3JtYWxdLAorWyQxXSkKKworCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICMjCisjIyBEZWNsYXJpbmcgQyBmdW5jdGlvbnMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gIyMKKworCisjIGI0X2Z1bmN0aW9uX2RlY2xhcmUoTkFNRSwgUkVUVVJOLVZBTFVF
LCBbREVDTDEsIE5BTUUxXSwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyZSB0aGUgZnVuY3Rpb24gTkFN
RS4KK200X2RlZmluZShbYjRfZnVuY3Rpb25fZGVjbGFyZV0sCitbJDIgJDEgKGI0X2Zvcm1hbHMo
bTRfc2hpZnQyKCRAKSkpO1tdZG5sCitdKQorCisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0gIyMKKyMjIENhbGxpbmcgQyBmdW5jdGlvbnMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICMjCisKKworIyBiNF9mdW5jdGlvbl9jYWxsKE5BTUUsIFJFVFVSTi1WQUxVRSwgW0RFQ0wx
LCBOQU1FMV0sIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2FsbCB0aGUgZnVuY3Rpb24gTkFNRSB3aXRoIGFyZ3Vt
ZW50cyBOQU1FMSwgTkFNRTIgZXRjLgorbTRfZGVmaW5lKFtiNF9mdW5jdGlvbl9jYWxsXSwKK1sk
MSAoYjRfYXJncyhtNF9zaGlmdDIoJEApKSlbXWRubAorXSkKKworCisjIGI0X2FyZ3MoW0RFQ0wx
LCBOQU1FMV0sIC4uLikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQg
dGhlIGFyZ3VtZW50cyBOQU1FMSwgTkFNRTIuLi4KK200X2RlZmluZShbYjRfYXJnc10sCitbbTRf
bWFwX3NlcChbYjRfYXJnXSwgWywgXSwgWyRAXSldKQorCittNF9kZWZpbmUoW2I0X2FyZ10sCitb
JDJdKQorCisKKyMjIC0tLS0tLS0tLS0tICMjCisjIyBTeW5jbGluZXMuICAjIworIyMgLS0tLS0t
LS0tLS0gIyMKKworIyBiNF9zeW5jX3N0YXJ0KExJTkUsIEZJTEUpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfc3luY19zdGFydF0sIFtbI11saW5lICQxICQyXSkK
KworCisjIyAtLS0tLS0tLS0tLS0tLSAjIworIyMgVXNlciBhY3Rpb25zLiAgIyMKKyMjIC0tLS0t
LS0tLS0tLS0tICMjCisKKyMgYjRfY2FzZShMQUJFTCwgU1RBVEVNRU5UUykKKyMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbYjRfY2FzZV0sCitbICBjYXNlICQxOgorJDIK
K2I0X3N5bmNsaW5lKFtAb2xpbmVAXSwgW0BvZmlsZUBdKQorICAgIGJyZWFrO10pCisKKworIyBi
NF9wcmVkaWNhdGVfY2FzZShMQUJFTCwgQ09ORElUSU9OUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X3ByZWRpY2F0ZV9jYXNlXSwKK1sgIGNh
c2UgJDE6CisgICAgaWYgKCEgKAorJDIpKSBZWUVSUk9SOworYjRfc3luY2xpbmUoW0BvbGluZUBd
LCBbQG9maWxlQF0pCisgICAgYnJlYWs7XSkKKworCisjIGI0X3l5ZGVzdHJ1Y3RfZGVmaW5lCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSB0aGUgInl5ZGVzdHJ1Y3QiIGZ1bmN0aW9u
LgorbTRfZGVmaW5lX2RlZmF1bHQoW2I0X3l5ZGVzdHJ1Y3RfZGVmaW5lXSwKK1tbLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUmVsZWFzZSB0aGUg
bWVtb3J5IGFzc29jaWF0ZWQgdG8gdGhpcyBzeW1ib2wuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitdYjRfZnVuY3Rpb25fZGVmaW5lKFt5
eWRlc3RydWN0XSwKKyAgICBbc3RhdGljIHZvaWRdLAorICAgIFtbY29uc3QgY2hhciAqeXltc2dd
LCAgICBbeXltc2ddXSwKKyAgICBbW2ludCB5eXR5cGVdLCAgICAgICAgICAgW3l5dHlwZV1dLAor
ICAgIFtbWVlTVFlQRSAqeXl2YWx1ZXBdLCAgICBbeXl2YWx1ZXBdXVtdZG5sCitiNF9sb2NhdGlv
bnNfaWYoICAgICAgICAgICAgWywgW1tZWUxUWVBFICp5eWxvY2F0aW9ucF0sIFt5eWxvY2F0aW9u
cF1dXSlbXWRubAorbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywgYjRfcGFyc2VfcGFyYW1d
KSlbCit7CitdYjRfcGFyc2VfcGFyYW1fdXNlKFt5eXZhbHVlcF0sIFt5eWxvY2F0aW9ucF0pZG5s
CitbICBpZiAoIXl5bXNnKQorICAgIHl5bXNnID0gIkRlbGV0aW5nIjsKKyAgWVlfU1lNQk9MX1BS
SU5UICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnApOworCisgIFlZX0lHTk9S
RV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCisgIF1iNF9zeW1ib2xfYWN0aW9ucyhbZGVzdHJ1
Y3Rvcl0pWworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKK31dZG5sCitdKQor
CisKKyMgYjRfeXlfc3ltYm9sX3ByaW50X2RlZmluZQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIERlZmluZSB0aGUgInl5X3N5bWJvbF9wcmludCIgZnVuY3Rpb24uCittNF9kZWZpbmVf
ZGVmYXVsdChbYjRfeXlfc3ltYm9sX3ByaW50X2RlZmluZV0sCitbWworLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUHJpbnQgdGhpcyBzeW1ib2wncyB2YWx1ZSBvbiBZ
WU8uICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitdYjRfZnVu
Y3Rpb25fZGVmaW5lKFt5eV9zeW1ib2xfdmFsdWVfcHJpbnRdLAorICAgIFtzdGF0aWMgdm9pZF0s
CisgICAgICAgICAgICAgICBbW0ZJTEUgKnl5b10sICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFt5eW9dXSwKKyAgICAgICAgICAgICAgIFtbaW50IHl5dHlwZV0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW3l5dHlwZV1dLAorICAgICAgICAgICAgICAgW1tZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXBdLCAgICAgICBbeXl2YWx1ZXBdXVtdZG5sCitiNF9sb2NhdGlvbnNfaWYoWywg
W1tZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnBdLCBbeXlsb2NhdGlvbnBdXV0pW11k
bmwKK200X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssIGI0X3BhcnNlX3BhcmFtXSkpWworewor
ICBGSUxFICp5eW91dHB1dCA9IHl5bzsKK11iNF9wYXJzZV9wYXJhbV91c2UoW3l5b3V0cHV0XSwg
W3l5bG9jYXRpb25wXSlkbmwKK1sgIGlmICgheXl2YWx1ZXApCisgICAgcmV0dXJuO10KK2RubCBn
bHIuYyBkb2VzIG5vdCBmZWF0dXJlIHl5dG9rbnVtLgorbTRfaWYoYjRfc2tlbGV0b24sIFsieWFj
Yy5jIl0sCitbWyMgaWZkZWYgWVlQUklOVAorICBpZiAoeXl0eXBlIDwgWVlOVE9LRU5TKQorICAg
IFlZUFJJTlQgKHl5bywgeXl0b2tudW1beXl0eXBlXSwgKnl5dmFsdWVwKTsKKyMgZW5kaWYKK11d
KWRubAorICBiNF9zeW1ib2xfYWN0aW9ucyhbcHJpbnRlcl0pWworfQorCisKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgorfCBQcmludCB0aGlzIHN5bWJvbCBvbiBZWU8uICB8CitgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlfc3lt
Ym9sX3ByaW50XSwKKyAgICBbc3RhdGljIHZvaWRdLAorICAgICAgICAgICAgICAgW1tGSUxFICp5
eW9dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeXlvXV0sCisgICAgICAgICAgICAgICBb
W2ludCB5eXR5cGVdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFt5eXR5cGVdXSwKKyAgICAg
ICAgICAgICAgIFtbWVlTVFlQRSBjb25zdCAqIGNvbnN0IHl5dmFsdWVwXSwgICAgICAgW3l5dmFs
dWVwXV1bXWRubAorYjRfbG9jYXRpb25zX2lmKFssIFtbWVlMVFlQRSBjb25zdCAqIGNvbnN0IHl5
bG9jYXRpb25wXSwgW3l5bG9jYXRpb25wXV1dKVtdZG5sCittNF9pZnNldChbYjRfcGFyc2VfcGFy
YW1dLCBbLCBiNF9wYXJzZV9wYXJhbV0pKVsKK3sKKyAgWVlGUFJJTlRGICh5eW8sICIlcyAlcyAo
IiwKKyAgICAgICAgICAgICB5eXR5cGUgPCBZWU5UT0tFTlMgPyAidG9rZW4iIDogIm50ZXJtIiwg
eXl0bmFtZVt5eXR5cGVdKTsKKworXWI0X2xvY2F0aW9uc19pZihbICBZWV9MT0NBVElPTl9QUklO
VCAoeXlvLCAqeXlsb2NhdGlvbnApOworICBZWUZQUklOVEYgKHl5bywgIjogIik7CitdKWRubAor
WyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW8sIHl5dHlwZSwgeXl2YWx1ZXBdZG5sCitiNF9s
b2NhdGlvbnNfaWYoWywgeXlsb2NhdGlvbnBdKVtdYjRfdXNlcl9hcmdzWyk7CisgIFlZRlBSSU5U
RiAoeXlvLCAiKSIpOworfV1kbmwKK10pCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMg
YXBpLnZhbHVlLnR5cGUuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAjCisjIGFwaS52YWx1ZS50eXBlPXVuaW9uLiAgIworIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICMKKworIyBiNF9zeW1ib2xfdHlwZV9yZWdpc3RlcihTWU1CT0wtTlVN
KQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTeW1ib2wgU1lNQk9M
LU5VTSBoYXMgYSB0eXBlIChmb3IgdmFyaWFudCkgaW5zdGVhZCBvZiBhIHR5cGUtdGFnLgorIyBF
eHRlbmQgdGhlIGRlZmluaXRpb24gb2YgJXVuaW9uJ3MgYm9keSAoYjRfdW5pb25fbWVtYmVycykg
d2l0aCBhCisjIGZpZWxkIG9mIHRoYXQgdHlwZSwgYW5kIGV4dGVuZCB0aGUgc3ltYm9sJ3MgInR5
cGUiIGZpZWxkIHRvIHBvaW50IHRvCisjIHRoZSBmaWVsZCBuYW1lLCBpbnN0ZWFkIG9mIHRoZSB0
eXBlIG5hbWUuCittNF9kZWZpbmUoW2I0X3N5bWJvbF90eXBlX3JlZ2lzdGVyXSwKK1ttNF9kZWZp
bmUoW2I0X3N5bWJvbCgkMSwgdHlwZV90YWcpXSwKKyAgICAgICAgICAgW2I0X3N5bWJvbF9pZihb
JDFdLCBbaGFzX2lkXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbYjRfc3ltYm9sKFskMV0s
IFtpZF0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeXl0eXBlX1tdYjRfc3ltYm9sKFsk
MV0sIFtudW1iZXJdKV0pXSlkbmwKK200X2FwcGVuZChbYjRfdW5pb25fbWVtYmVyc10sCittNF9l
eHBhbmQoWworICBiNF9zeW1ib2xfdGFnX2NvbW1lbnQoWyQxXSlkbmwKKyAgYjRfc3ltYm9sKFsk
MV0sIFt0eXBlXSkgYjRfc3ltYm9sKFskMV0sIFt0eXBlX3RhZ10pO10pKQorXSkKKworCisjIGI0
X3R5cGVfZGVmaW5lX3RhZyhTWU1CT0wxLU5VTSwgLi4uKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9yIHRoZSBiYXRjaCBvZiBzeW1ib2xzIFNZTUJPTDEtTlVN
Li4uICh3aGljaCBhbGwgaGF2ZSB0aGUgc2FtZQorIyB0eXBlKSwgZW5oYW5jZSB0aGUgJXVuaW9u
IGRlZmluaXRpb24gZm9yIGVhY2ggb2YgdGhlbSwgYW5kIHNldAorIyB0aGVyZSAidHlwZSIgZmll
bGQgdG8gdGhlIGZpZWxkIHRhZyBuYW1lLCBpbnN0ZWFkIG9mIHRoZSB0eXBlIG5hbWUuCittNF9k
ZWZpbmUoW2I0X3R5cGVfZGVmaW5lX3RhZ10sCitbYjRfc3ltYm9sX2lmKFskMV0sIFtoYXNfdHlw
ZV0sCisgICAgICAgICAgICAgIFttNF9tYXAoW2I0X3N5bWJvbF90eXBlX3JlZ2lzdGVyXSwgWyRA
XSldKQorXSkKKworCisjIGI0X3N5bWJvbF92YWx1ZV91bmlvbihWQUwsIFNZTUJPTC1OVU0sIFtU
WVBFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
IyBTYW1lIG9mIGI0X3N5bWJvbF92YWx1ZSwgYnV0IHdoZW4gYXBpLnZhbHVlLnR5cGU9dW5pb24u
CittNF9kZWZpbmUoW2I0X3N5bWJvbF92YWx1ZV91bmlvbl0sCitbbTRfaWZ2YWwoWyQzXSwKKyAg
ICAgICAgICBbKCooJDMqKSgmJDEpKV0sCisgICAgICAgICAgW200X2lmdmFsKFskMl0sCisgICAg
ICAgICAgICAgICAgICAgIFtiNF9zeW1ib2xfaWYoWyQyXSwgW2hhc190eXBlXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbKCQxLmI0X3N5bWJvbChbJDJdLCBbdHlwZV90YWdd
KSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFskMV0pXSwKKyAgICAgICAg
ICAgICAgICAgICAgWyQxXSldKV0pCisKKworIyBiNF92YWx1ZV90eXBlX3NldHVwX3VuaW9uCisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0dXAgc3VwcG9ydCBmb3IgYXBpLnZhbHVl
LnR5cGU9dW5pb24uICBTeW1ib2xzIGFyZSBkZWZpbmVkIHdpdGggYQorIyB0eXBlIGluc3RlYWQg
b2YgYSB1bmlvbiBtZW1iZXIgbmFtZTogYnVpbGQgdGhlIGNvcnJlc3BvbmRpbmcgdW5pb24sCisj
IGFuZCBnaXZlIHRoZSBzeW1ib2xzIHRoZWlyIHRhZy4KK200X2RlZmluZShbYjRfdmFsdWVfdHlw
ZV9zZXR1cF91bmlvbl0sCitbbTRfZGVmaW5lKFtiNF91bmlvbl9tZW1iZXJzXSkKK2I0X3R5cGVf
Zm9yZWFjaChbYjRfdHlwZV9kZWZpbmVfdGFnXSkKK200X2NvcHlfZm9yY2UoW2I0X3N5bWJvbF92
YWx1ZV91bmlvbl0sIFtiNF9zeW1ib2xfdmFsdWVdKQorXSkKKworCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tICMKKyMgYXBpLnZhbHVlLnR5cGUgPSB2YXJpYW50LiAgIworIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAjCisKKyMgYjRfdmFsdWVfdHlwZV9zZXR1cF92YXJpYW50Cisj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXR1cCBzdXBwb3J0IGZvciBhcGkudmFs
dWUudHlwZT12YXJpYW50LiAgQnkgZGVmYXVsdCwgZmFpbCwgc3BlY2lhbGl6ZWQKKyMgYnkgb3Ro
ZXIgc2tlbGV0b25zLgorbTRfZGVmaW5lKFtiNF92YWx1ZV90eXBlX3NldHVwX3ZhcmlhbnRdLAor
W2I0X2NvbXBsYWluX2F0KGI0X3BlcmNlbnRfZGVmaW5lX2dldF9sb2MoW1thcGkudmFsdWUudHlw
ZV1dKSwKKyAgICAgICAgICAgICAgICBbWyclcycgZG9lcyBub3Qgc3VwcG9ydCAnJXMnXV0sCisg
ICAgICAgICAgICAgICAgW2I0X3NrZWxldG9uXSwKKyAgICAgICAgICAgICAgICBbJWRlZmluZSBh
cGkudmFsdWUudHlwZSB2YXJpYW50XSldKQorCisKKyMgX2I0X3ZhbHVlX3R5cGVfc2V0dXBfa2V5
d29yZAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGFwaS52YWx1ZS50eXBlIGlz
IGRlZmluZWQgd2l0aCBhIGtleXdvcmQvc3RyaW5nIHN5bnRheC4gIENoZWNrIGlmCisjIHRoYXQg
aXMgcHJvcGVybHkgZGVmaW5lZCwgYW5kIHByZXBhcmUgaXRzIHVzZS4KK200X2RlZmluZShbX2I0
X3ZhbHVlX3R5cGVfc2V0dXBfa2V5d29yZF0sCitbYjRfcGVyY2VudF9kZWZpbmVfY2hlY2tfdmFs
dWVzKFtbW1thcGkudmFsdWUudHlwZV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtbbm9uZV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbdW5pb25d
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW3VuaW9uLWRpcmVjdGl2ZV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbdmFyaWFudF1dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbeXlzdHlwZV1dXV0pZG5sCittNF9jYXNlKGI0
X3BlcmNlbnRfZGVmaW5lX2dldChbW2FwaS52YWx1ZS50eXBlXV0pLAorICAgICAgICBbdW5pb25d
LCAgIFtiNF92YWx1ZV90eXBlX3NldHVwX3VuaW9uXSwKKyAgICAgICAgW3ZhcmlhbnRdLCBbYjRf
dmFsdWVfdHlwZV9zZXR1cF92YXJpYW50XSldKQorCisKKyMgYjRfdmFsdWVfdHlwZV9zZXR1cAor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIGlmIGFwaS52YWx1ZS50eXBlIGlzIHByb3Bl
cmx5IGRlZmluZWQsIGFuZCBwb3NzaWJseSBwcmVwYXJlCisjIGl0cyB1c2UuCitiNF9kZWZpbmVf
c2lsZW50KFtiNF92YWx1ZV90eXBlX3NldHVwXSwKK1sjIERlZmluZSBkZWZhdWx0IHZhbHVlLgor
YjRfcGVyY2VudF9kZWZpbmVfaWZkZWYoW1thcGkudmFsdWUudHlwZV1dLCBbXSwKK1sjICV1bmlv
biA9PiBhcGkudmFsdWUudHlwZT11bmlvbi1kaXJlY3RpdmUKK200X2lmZGVmKFtiNF91bmlvbl9t
ZW1iZXJzXSwKK1ttNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2tpbmQoYXBpLnZhbHVlLnR5
cGUpXSwgW2tleXdvcmRdKQorbTRfZGVmaW5lKFtiNF9wZXJjZW50X2RlZmluZShhcGkudmFsdWUu
dHlwZSldLCBbdW5pb24tZGlyZWN0aXZlXSldLAorWyMgbm8gdGFnIHNlZW4gPT4gYXBpLnZhbHVl
LnR5cGU9e2ludH0KK200X2lmKGI0X3RhZ19zZWVuX2ZsYWcsIDAsCitbbTRfZGVmaW5lKFtiNF9w
ZXJjZW50X2RlZmluZV9raW5kKGFwaS52YWx1ZS50eXBlKV0sIFtjb2RlXSkKK200X2RlZmluZShb
YjRfcGVyY2VudF9kZWZpbmUoYXBpLnZhbHVlLnR5cGUpXSwgW2ludF0pXSwKK1sjIG90aGVyd2lz
ZSBhcGkudmFsdWUudHlwZT15eXN0eXBlCittNF9kZWZpbmUoW2I0X3BlcmNlbnRfZGVmaW5lX2tp
bmQoYXBpLnZhbHVlLnR5cGUpXSwgW2tleXdvcmRdKQorbTRfZGVmaW5lKFtiNF9wZXJjZW50X2Rl
ZmluZShhcGkudmFsdWUudHlwZSldLCBbeXlzdHlwZV0pXSldKV0pCisKKyMgU2V0IHVwLgorbTRf
Ym1hdGNoKGI0X3BlcmNlbnRfZGVmaW5lX2dldF9raW5kKFtbYXBpLnZhbHVlLnR5cGVdXSksCisg
ICBba2V5d29yZFx8c3RyaW5nXSwgW19iNF92YWx1ZV90eXBlX3NldHVwX2tleXdvcmRdKQorXSkK
KworCisjIyAtLS0tLS0tLS0tLS0tLSAjIworIyMgRGVjbGFyYXRpb25zLiAgIyMKKyMjIC0tLS0t
LS0tLS0tLS0tICMjCisKKworIyBiNF92YWx1ZV90eXBlX2RlZmluZQorIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLQorbTRfZGVmaW5lKFtiNF92YWx1ZV90eXBlX2RlZmluZV0sCitbYjRfdmFsdWVfdHlw
ZV9zZXR1cFtdZG5sCisvKiBWYWx1ZSB0eXBlLiAgKi8KK200X2JtYXRjaChiNF9wZXJjZW50X2Rl
ZmluZV9nZXRfa2luZChbW2FwaS52YWx1ZS50eXBlXV0pLAorW2NvZGVdLAorW1sjaWYgISBkZWZp
bmVkIF1iNF9hcGlfUFJFRklYW1NUWVBFICYmICEgZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtTVFlQ
RV9JU19ERUNMQVJFRAordHlwZWRlZiBdYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbYXBpLnZhbHVl
LnR5cGVdXSlbIF1iNF9hcGlfUFJFRklYW1NUWVBFOworIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhb
U1RZUEVfSVNfVFJJVklBTCAxCisjIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtTVFlQRV9JU19ERUNM
QVJFRCAxCisjZW5kaWYKK11dLAorW200X2JtYXRjaChiNF9wZXJjZW50X2RlZmluZV9nZXQoW1th
cGkudmFsdWUudHlwZV1dKSwKK1t1bmlvblx8dW5pb24tZGlyZWN0aXZlXSwKK1tbI2lmICEgZGVm
aW5lZCBdYjRfYXBpX1BSRUZJWFtTVFlQRSAmJiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbU1RZ
UEVfSVNfREVDTEFSRUQKK11iNF9wZXJjZW50X2RlZmluZV9nZXRfc3luY2xpbmUoW1thcGkudmFs
dWUudW5pb24ubmFtZV1dKVsKK3VuaW9uIF1iNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkudmFs
dWUudW5pb24ubmFtZV1dKVsKK3sKK11iNF91c2VyX3VuaW9uX21lbWJlcnNbCit9OworXWI0X3Bl
cmNlbnRfZGVmaW5lX2dldF9zeW5jbGluZShbW2FwaS52YWx1ZS51bmlvbi5uYW1lXV0pWwordHlw
ZWRlZiB1bmlvbiBdYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbYXBpLnZhbHVlLnVuaW9uLm5hbWVd
XSlbIF1iNF9hcGlfUFJFRklYW1NUWVBFOworIyBkZWZpbmUgXWI0X2FwaV9QUkVGSVhbU1RZUEVf
SVNfVFJJVklBTCAxCisjIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtTVFlQRV9JU19ERUNMQVJFRCAx
CisjZW5kaWYKK11dKV0pXSkKKworCisjIGI0X2xvY2F0aW9uX3R5cGVfZGVmaW5lCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2I0X2xvY2F0aW9uX3R5cGVfZGVmaW5lXSwK
K1tbLyogTG9jYXRpb24gdHlwZS4gICovCisjaWYgISBkZWZpbmVkIF1iNF9hcGlfUFJFRklYW0xU
WVBFICYmICEgZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19ERUNMQVJFRAordHlwZWRl
ZiBzdHJ1Y3QgXWI0X2FwaV9QUkVGSVhbTFRZUEUgXWI0X2FwaV9QUkVGSVhbTFRZUEU7CitzdHJ1
Y3QgXWI0X2FwaV9QUkVGSVhbTFRZUEUKK3sKKyAgaW50IGZpcnN0X2xpbmU7CisgIGludCBmaXJz
dF9jb2x1bW47CisgIGludCBsYXN0X2xpbmU7CisgIGludCBsYXN0X2NvbHVtbjsKK307CisjIGRl
ZmluZSBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBdYjRfYXBp
X1BSRUZJWFtMVFlQRV9JU19UUklWSUFMIDEKKyNlbmRpZgorXV0pCisKKworIyBiNF9kZWNsYXJl
X3l5bHN0eXBlCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyYXRpb25zIHRoYXQgbWln
aHQgZWl0aGVyIGdvIGludG8gdGhlIGhlYWRlciAoaWYgLS1kZWZpbmVzKSBvcgorIyBpbiB0aGUg
cGFyc2VyIGJvZHkuICBEZWNsYXJlIFlZU1RZUEUvWVlMVFlQRSwgYW5kIHl5bHZhbC95eWxsb2Mu
CittNF9kZWZpbmUoW2I0X2RlY2xhcmVfeXlsc3R5cGVdLAorW2I0X3ZhbHVlX3R5cGVfZGVmaW5l
W11iNF9sb2NhdGlvbnNfaWYoWworYjRfbG9jYXRpb25fdHlwZV9kZWZpbmVdKQorCitiNF9wdXJl
X2lmKFtdLCBbW2V4dGVybiBdYjRfYXBpX1BSRUZJWFtTVFlQRSBdYjRfcHJlZml4W2x2YWw7Citd
YjRfbG9jYXRpb25zX2lmKFtbZXh0ZXJuIF1iNF9hcGlfUFJFRklYW0xUWVBFIF1iNF9wcmVmaXhb
bGxvYztdXSldKVtdZG5sCitdKQorCisKKyMgYjRfWVlERUJVR19kZWZpbmUKKyMgLS0tLS0tLS0t
LS0tLS0tLS0KK200X2RlZmluZShbYjRfWVlERUJVR19kZWZpbmVdLAorW1svKiBEZWJ1ZyB0cmFj
ZXMuICAqLworXW00X2lmKGI0X2FwaV9wcmVmaXgsIFt5eV0sCitbWyNpZm5kZWYgWVlERUJVRwor
IyBkZWZpbmUgWVlERUJVRyBdYjRfcGFyc2VfdHJhY2VfaWYoWzFdLCBbMF0pWworI2VuZGlmXV0s
CitbWyNpZm5kZWYgXWI0X2FwaV9QUkVGSVhbREVCVUcKKyMgaWYgZGVmaW5lZCBZWURFQlVHCisj
aWYgWVlERUJVRworIyAgIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtERUJVRyAxCisjICBlbHNlCisj
ICAgZGVmaW5lIF1iNF9hcGlfUFJFRklYW0RFQlVHIDAKKyMgIGVuZGlmCisjIGVsc2UgLyogISBk
ZWZpbmVkIFlZREVCVUcgKi8KKyMgIGRlZmluZSBdYjRfYXBpX1BSRUZJWFtERUJVRyBdYjRfcGFy
c2VfdHJhY2VfaWYoWzFdLCBbMF0pWworIyBlbmRpZiAvKiAhIGRlZmluZWQgWVlERUJVRyAqLwor
I2VuZGlmICAvKiAhIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbREVCVUcgKi9dXSlbXWRubAorXSkK
KworIyBiNF9kZWNsYXJlX3l5ZGVidWcKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUo
W2I0X2RlY2xhcmVfeXlkZWJ1Z10sCitbYjRfWVlERUJVR19kZWZpbmVbCisjaWYgXWI0X2FwaV9Q
UkVGSVhbREVCVUcKK2V4dGVybiBpbnQgXWI0X3ByZWZpeFtkZWJ1ZzsKKyNlbmRpZl1bXWRubAor
XSkKKworIyBiNF95eWxsb2NfZGVmYXVsdF9kZWZpbmUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIERlZmluZSBZWUxMT0NfREVGQVVMVC4KK200X2RlZmluZShbYjRfeXlsbG9jX2RlZmF1
bHRfZGVmaW5lXSwKK1tbLyogWVlMTE9DX0RFRkFVTFQgLS0gU2V0IENVUlJFTlQgdG8gc3BhbiBm
cm9tIFJIU1sxXSB0byBSSFNbTl0uCisgICBJZiBOIGlzIDAsIHRoZW4gc2V0IENVUlJFTlQgdG8g
dGhlIGVtcHR5IGxvY2F0aW9uIHdoaWNoIGVuZHMKKyAgIHRoZSBwcmV2aW91cyBzeW1ib2w6IFJI
U1swXSAoYWx3YXlzIGRlZmluZWQpLiAgKi8KKworI2lmbmRlZiBZWUxMT0NfREVGQVVMVAorIyBk
ZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKE4pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAgPSBZWVJIU0xPQyAo
UmhzLCAxKS5maXJzdF9saW5lOyAgICAgICAgXAorICAgICAgICAgIChDdXJyZW50KS5maXJzdF9j
b2x1bW4gPSBZWVJIU0xPQyAoUmhzLCAxKS5maXJzdF9jb2x1bW47ICAgICAgXAorICAgICAgICAg
IChDdXJyZW50KS5sYXN0X2xpbmUgICAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2xpbmU7ICAg
ICAgICAgXAorICAgICAgICAgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZWVJIU0xPQyAoUmhz
LCBOKS5sYXN0X2NvbHVtbjsgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIChDdXJyZW50KS5maXJzdF9saW5lICAg
PSAoQ3VycmVudCkubGFzdF9saW5lICAgPSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgWVlS
SFNMT0MgKFJocywgMCkubGFzdF9saW5lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSAoQ3VycmVudCkubGFzdF9jb2x1
bW4gPSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9j
b2x1bW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIHdoaWxlICgwKQorI2VuZGlmCitdXSkKKworIyBiNF95eV9sb2NhdGlvbl9wcmludF9kZWZp
bmUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBZWV9MT0NBVElPTl9Q
UklOVC4KK200X2RlZmluZShbYjRfeXlfbG9jYXRpb25fcHJpbnRfZGVmaW5lXSwKK1tiNF9sb2Nh
dGlvbnNfaWYoW1sKKy8qIFlZX0xPQ0FUSU9OX1BSSU5UIC0tIFByaW50IHRoZSBsb2NhdGlvbiBv
biB0aGUgc3RyZWFtLgorICAgVGhpcyBtYWNybyB3YXMgbm90IG1hbmRhdGVkIG9yaWdpbmFsbHk6
IGRlZmluZSBvbmx5IGlmIHdlIGtub3cKKyAgIHdlIHdvbid0IGJyZWFrIHVzZXIgY29kZTogd2hl
biB0aGVzZSBhcmUgdGhlIGxvY2F0aW9ucyB3ZSBrbm93LiAgKi8KKworI2lmbmRlZiBZWV9MT0NB
VElPTl9QUklOVAorIyBpZiBkZWZpbmVkIF1iNF9hcGlfUFJFRklYW0xUWVBFX0lTX1RSSVZJQUwg
JiYgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfVFJJVklBTAorCisvKiBQcmludCAqWVlMT0NQIG9u
IFlZTy4gIFByaXZhdGUsIGRvIG5vdCByZWx5IG9uIGl0cyBleGlzdGVuY2UuICovCisKK1lZX0FU
VFJJQlVURV9VTlVTRUQKK11iNF9mdW5jdGlvbl9kZWZpbmUoW3l5X2xvY2F0aW9uX3ByaW50X10s
CisgICAgW3N0YXRpYyBpbnRdLAorICAgICAgICAgICAgICAgW1tGSUxFICp5eW9dLCAgICAgICAg
ICAgICAgICAgICAgW3l5b11dLAorICAgICAgICAgICAgICAgW1tZWUxUWVBFIGNvbnN0ICogY29u
c3QgeXlsb2NwXSwgW3l5bG9jcF1dKVsKK3sKKyAgaW50IHJlcyA9IDA7CisgIGludCBlbmRfY29s
ID0gMCAhPSB5eWxvY3AtPmxhc3RfY29sdW1uID8geXlsb2NwLT5sYXN0X2NvbHVtbiAtIDEgOiAw
OworICBpZiAoMCA8PSB5eWxvY3AtPmZpcnN0X2xpbmUpCisgICAgeworICAgICAgcmVzICs9IFlZ
RlBSSU5URiAoeXlvLCAiJWQiLCB5eWxvY3AtPmZpcnN0X2xpbmUpOworICAgICAgaWYgKDAgPD0g
eXlsb2NwLT5maXJzdF9jb2x1bW4pCisgICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIi4l
ZCIsIHl5bG9jcC0+Zmlyc3RfY29sdW1uKTsKKyAgICB9CisgIGlmICgwIDw9IHl5bG9jcC0+bGFz
dF9saW5lKQorICAgIHsKKyAgICAgIGlmICh5eWxvY3AtPmZpcnN0X2xpbmUgPCB5eWxvY3AtPmxh
c3RfbGluZSkKKyAgICAgICAgeworICAgICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIi0l
ZCIsIHl5bG9jcC0+bGFzdF9saW5lKTsKKyAgICAgICAgICBpZiAoMCA8PSBlbmRfY29sKQorICAg
ICAgICAgICAgcmVzICs9IFlZRlBSSU5URiAoeXlvLCAiLiVkIiwgZW5kX2NvbCk7CisgICAgICAg
IH0KKyAgICAgIGVsc2UgaWYgKDAgPD0gZW5kX2NvbCAmJiB5eWxvY3AtPmZpcnN0X2NvbHVtbiA8
IGVuZF9jb2wpCisgICAgICAgIHJlcyArPSBZWUZQUklOVEYgKHl5bywgIi0lZCIsIGVuZF9jb2wp
OworICAgIH0KKyAgcmV0dXJuIHJlczsKKyB9CisKKyMgIGRlZmluZSBZWV9MT0NBVElPTl9QUklO
VChGaWxlLCBMb2MpICAgICAgICAgIFwKKyAgeXlfbG9jYXRpb25fcHJpbnRfIChGaWxlLCAmKExv
YykpCisKKyMgZWxzZQorIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykgKCh2
b2lkKSAwKQorIyBlbmRpZgorI2VuZGlmXV0sCitbWy8qIFRoaXMgbWFjcm8gaXMgcHJvdmlkZWQg
Zm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICovCisjaWZuZGVmIFlZX0xPQ0FUSU9OX1BSSU5U
CisjIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkKKyNlbmRp
Zl1dKQorXSkKKworIyBiNF95eWxvY19kZWZhdWx0CisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgRXhw
YW5kIHRvIGEgcG9zc2libGUgZGVmYXVsdCB2YWx1ZSBmb3IgeXlsbG9jLgorbTRfZGVmaW5lKFti
NF95eWxvY19kZWZhdWx0XSwKK1tbCisjIGlmIGRlZmluZWQgXWI0X2FwaV9QUkVGSVhbTFRZUEVf
SVNfVFJJVklBTCAmJiBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19UUklWSUFMCisgID0geyBdbTRf
am9pbihbLCBdLAorICAgICAgICAgICAgICAgbTRfZGVmbihbYjRfbG9jYXRpb25faW5pdGlhbF9s
aW5lXSksCisgICAgICAgICAgICAgICBtNF9kZWZuKFtiNF9sb2NhdGlvbl9pbml0aWFsX2NvbHVt
bl0pLAorICAgICAgICAgICAgICAgbTRfZGVmbihbYjRfbG9jYXRpb25faW5pdGlhbF9saW5lXSks
CisgICAgICAgICAgICAgICBtNF9kZWZuKFtiNF9sb2NhdGlvbl9pbml0aWFsX2NvbHVtbl0pKVsg
fQorIyBlbmRpZgorXV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy95YWNjLmMgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3RoaXJkX3BhcnR5L3NrZWxldG9ucy95YWNjLmMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTRlNDBlNjc0MTJlNGNlNzc4ZDdjNTUyNGNjMGMwODgwODhhZDZjMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24v
dGhpcmRfcGFydHkvc2tlbGV0b25zL3lhY2MuYwpAQCAtMCwwICsxLDE5MjcgQEAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0g
QyAtKi0KKyMgWWFjYyBjb21wYXRpYmxlIHNrZWxldG9uIGZvciBCaXNvbgorCisjIENvcHlyaWdo
dCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTUsIDIwMTgtMjAxOSBGcmVlIFNvZnR3YXJl
CisjIEZvdW5kYXRpb24sIEluYy4KKworbTRfcHVzaGRlZihbYjRfY29weXJpZ2h0X3llYXJzXSwK
KyAgICAgICAgICAgWzE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDE1LCAyMDE4LTIwMTldKQorCisj
IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251
Lm9yZy9saWNlbnNlcy8+LgorCisjIENoZWNrIHRoZSB2YWx1ZSBvZiAlZGVmaW5lIGFwaS5wdXNo
LXB1bGwuCitiNF9wZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbYXBpLnB1c2gtcHVsbF1dLCBbW3B1
bGxdXSkKK2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbYXBpLnB1c2gtcHVsbF1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1twdWxsXV0sIFtbcHVzaF1dLCBb
W2JvdGhdXV1dKQorYjRfZGVmaW5lX2ZsYWdfaWYoW3B1bGxdKSBtNF9kZWZpbmUoW2I0X3B1bGxf
ZmxhZ10sIFtbMV1dKQorYjRfZGVmaW5lX2ZsYWdfaWYoW3B1c2hdKSBtNF9kZWZpbmUoW2I0X3B1
c2hfZmxhZ10sIFtbMV1dKQorbTRfY2FzZShiNF9wZXJjZW50X2RlZmluZV9nZXQoW1thcGkucHVz
aC1wdWxsXV0pLAorICAgICAgICBbcHVsbF0sIFttNF9kZWZpbmUoW2I0X3B1c2hfZmxhZ10sIFtb
MF1dKV0sCisgICAgICAgIFtwdXNoXSwgW200X2RlZmluZShbYjRfcHVsbF9mbGFnXSwgW1swXV0p
XSkKKworIyBIYW5kbGUgQklTT05fVVNFX1BVU0hfRk9SX1BVTEwgZm9yIHRoZSB0ZXN0IHN1aXRl
LiAgU28gdGhhdCBwdXNoIHBhcnNpbmcKKyMgdGVzdHMgZnVuY3Rpb24gYXMgd3JpdHRlbiwgZG8g
bm90IGxldCBCSVNPTl9VU0VfUFVTSF9GT1JfUFVMTCBtb2RpZnkgdGhlCisjIGJlaGF2aW9yIG9m
IEJpc29uIGF0IGFsbCB3aGVuIHB1c2ggcGFyc2luZyBpcyBhbHJlYWR5IHJlcXVlc3RlZC4KK2I0
X2RlZmluZV9mbGFnX2lmKFt1c2VfcHVzaF9mb3JfcHVsbF0pCitiNF91c2VfcHVzaF9mb3JfcHVs
bF9pZihbCisgIGI0X3B1c2hfaWYoW200X2RlZmluZShbYjRfdXNlX3B1c2hfZm9yX3B1bGxfZmxh
Z10sIFtbMF1dKV0sCisgICAgICAgICAgICAgW200X2RlZmluZShbYjRfcHVzaF9mbGFnXSwgW1sx
XV0pXSldKQorCisjIENoZWNrIHRoZSB2YWx1ZSBvZiAlZGVmaW5lIHBhcnNlLmxhYyBhbmQgZnJp
ZW5kcywgd2hlcmUgTEFDIHN0YW5kcyBmb3IKKyMgbG9va2FoZWFkIGNvcnJlY3Rpb24uCitiNF9w
ZXJjZW50X2RlZmluZV9kZWZhdWx0KFtbcGFyc2UubGFjXV0sIFtbbm9uZV1dKQorYjRfcGVyY2Vu
dF9kZWZpbmVfZGVmYXVsdChbW3BhcnNlLmxhYy5lcy1jYXBhY2l0eS1pbml0aWFsXV0sIFtbMjBd
XSkKK2I0X3BlcmNlbnRfZGVmaW5lX2RlZmF1bHQoW1twYXJzZS5sYWMubWVtb3J5LXRyYWNlXV0s
IFtbZmFpbHVyZXNdXSkKK2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbcGFyc2Uu
bGFjXV0sIFtbZnVsbF1dLCBbW25vbmVdXV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtbW1twYXJzZS5sYWMubWVtb3J5LXRyYWNlXV0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbW2ZhaWx1cmVzXV0sIFtbZnVsbF1dXV0pCitiNF9kZWZpbmVfZmxhZ19pZihb
bGFjXSkKK200X2RlZmluZShbYjRfbGFjX2ZsYWddLAorICAgICAgICAgIFttNF9pZihiNF9wZXJj
ZW50X2RlZmluZV9nZXQoW1twYXJzZS5sYWNdXSksCisgICAgICAgICAgICAgICAgIFtub25lXSwg
W1swXV0sIFtbMV1dKV0pCisKK200X2luY2x1ZGUoYjRfc2tlbGV0b25zZGlyL1tjLm00XSkKKwor
IyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRGVmYXVsdCB2YWx1ZXMuICAjIworIyMgLS0tLS0t
LS0tLS0tLS0tLSAjIworCisjIFN0YWNrIHBhcmFtZXRlcnMuCittNF9kZWZpbmVfZGVmYXVsdChb
YjRfc3RhY2tfZGVwdGhfbWF4XSwgWzEwMDAwXSkKK200X2RlZmluZV9kZWZhdWx0KFtiNF9zdGFj
a19kZXB0aF9pbml0XSwgIFsyMDBdKQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAj
IworIyMgUHVyZS9pbXB1cmUgaW50ZXJmYWNlcy4gICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gIyMKKworYjRfcGVyY2VudF9kZWZpbmVfZGVmYXVsdChbW2FwaS5wdXJlXV0sIFtbZmFs
c2VdXSkKK2I0X3BlcmNlbnRfZGVmaW5lX2NoZWNrX3ZhbHVlcyhbW1tbYXBpLnB1cmVdXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbZmFsc2VdXSwgW1t0cnVlXV0sIFtbXV0s
IFtbZnVsbF1dXV0pCisKK200X2RlZmluZShbYjRfcHVyZV9mbGFnXSwgW1swXV0pCittNF9jYXNl
KGI0X3BlcmNlbnRfZGVmaW5lX2dldChbW2FwaS5wdXJlXV0pLAorICAgICAgICBbZmFsc2VdLCBb
bTRfZGVmaW5lKFtiNF9wdXJlX2ZsYWddLCBbWzBdXSldLAorICAgICAgICBbdHJ1ZV0sICBbbTRf
ZGVmaW5lKFtiNF9wdXJlX2ZsYWddLCBbWzFdXSldLAorICAgICAgICBbXSwgICAgICBbbTRfZGVm
aW5lKFtiNF9wdXJlX2ZsYWddLCBbWzFdXSldLAorICAgICAgICBbZnVsbF0sICBbbTRfZGVmaW5l
KFtiNF9wdXJlX2ZsYWddLCBbWzJdXSldKQorCittNF9kZWZpbmUoW2I0X3B1cmVfaWZdLAorW200
X2Nhc2UoYjRfcHVyZV9mbGFnLAorICAgICAgICAgWzBdLCBbJDJdLAorICAgICAgICAgWzFdLCBb
JDFdLAorICAgICAgICAgWzJdLCBbJDFdKV0pCisgICAgICAgICBbbTRfZmF0YWwoW2ludmFsaWQg
YXBpLnB1cmUgdmFsdWU6IF0kMSldKV0pCisKKyMgYjRfeXllcnJvcl9hcmdfbG9jX2lmKEFSRykK
KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhwYW5kIEFSRyBpZmYgeXllcnJvciBp
cyB0byBiZSBnaXZlbiBhIGxvY2F0aW9uIGFzIGFyZ3VtZW50LgorbTRfZGVmaW5lKFtiNF95eWVy
cm9yX2FyZ19sb2NfaWZdLAorW2I0X2xvY2F0aW9uc19pZihbbTRfY2FzZShiNF9wdXJlX2ZsYWcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIFsxXSwgW200X2lmc2V0KFtiNF9wYXJzZV9wYXJh
bV0sIFskMV0pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWzJdLCBbJDFdKV0pXSkKKwor
IyBiNF95eWVycm9yX2FyZ3MKKyMgLS0tLS0tLS0tLS0tLS0tCisjIEFyZ3VtZW50cyBwYXNzZWQg
dG8geXllcnJvcjogdXNlciBhcmdzIHBsdXMgeXlsbG9jLgorbTRfZGVmaW5lKFtiNF95eWVycm9y
X2FyZ3NdLAorW2I0X3l5ZXJyb3JfYXJnX2xvY19pZihbJnl5bGxvYywgXSlkbmwKK200X2lmc2V0
KFtiNF9wYXJzZV9wYXJhbV0sIFtiNF9hcmdzKGI0X3BhcnNlX3BhcmFtKSwgXSldKQorCisKKwor
IyMgLS0tLS0tLS0tLS0tICMjCisjIyBEYXRhIFR5cGVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLSAj
IworCisjIGI0X2ludF90eXBlKE1JTiwgTUFYKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg
UmV0dXJuIHRoZSBzbWFsbGVzdCBpbnQgdHlwZSBhYmxlIHRvIGhhbmRsZSBudW1iZXJzIHJhbmdp
bmcgZnJvbQorIyBNSU4gdG8gTUFYIChpbmNsdWRlZCkuICBPdmVyd3JpdGUgdGhlIHZlcnNpb24g
ZnJvbSBjLm00LCB3aGljaAorIyB1c2VzIG9ubHkgQzg5IHR5cGVzLCBzbyB0aGF0IHRoZSB1c2Vy
IGNhbiBvdmVycmlkZSB0aGUgc2hvcnRlcgorIyB0eXBlcywgYW5kIHNvIHRoYXQgcHJlLUM4OSBj
b21waWxlcnMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LgorbTRfZGVmaW5lKFtiNF9pbnRfdHlwZV0s
CitbbTRfaWYoYjRfaW50c19pbigkQCwgICAgICBbMF0sICAgWzI1NV0pLCBbMV0sIFt5eXR5cGVf
dWludDhdLAorICAgICAgIGI0X2ludHNfaW4oJEAsICAgWy0xMjhdLCAgIFsxMjddKSwgWzFdLCBb
eXl0eXBlX2ludDhdLAorCisgICAgICAgYjRfaW50c19pbigkQCwgICAgICBbMF0sIFs2NTUzNV0p
LCBbMV0sIFt5eXR5cGVfdWludDE2XSwKKyAgICAgICBiNF9pbnRzX2luKCRALCBbLTMyNzY4XSwg
WzMyNzY3XSksIFsxXSwgW3l5dHlwZV9pbnQxNl0sCisKKyAgICAgICBtNF9ldmFsKFswIDw9ICQx
XSksICAgICAgICAgICAgICAgIFsxXSwgW3Vuc2lnbmVkXSwKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW50XSldKQorCisKKyMjIC0tLS0tLS0tLS0t
LS0tLS0tICMjCisjIyBTZW1hbnRpYyBWYWx1ZXMuICAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0g
IyMKKworCisjIGI0X2xoc192YWx1ZShTWU1CT0wtTlVNLCBbVFlQRV0pCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNlZSBSRUFETUUuCittNF9kZWZpbmUoW2I0X2xoc192
YWx1ZV0sCitbYjRfc3ltYm9sX3ZhbHVlKHl5dmFsLCBbJDFdLCBbJDJdKV0pCisKKworIyBiNF9y
aHNfdmFsdWUoUlVMRS1MRU5HVEgsIFBPUywgW1NZTUJPTC1OVU1dLCBbVFlQRV0pCisjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIFJF
QURNRS4KK200X2RlZmluZShbYjRfcmhzX3ZhbHVlXSwKK1tiNF9zeW1ib2xfdmFsdWUoW3l5dnNw
QHtiNF9zdWJ0cmFjdChbJDJdLCBbJDFdKUB9XSwgWyQzXSwgWyQ0XSldKQorCisKKyMjIC0tLS0t
LS0tLS0tICMjCisjIyBMb2NhdGlvbnMuICAjIworIyMgLS0tLS0tLS0tLS0gIyMKKworIyBiNF9s
aHNfbG9jYXRpb24oKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBFeHBhbnNpb24gb2YgQCQuCitt
NF9kZWZpbmUoW2I0X2xoc19sb2NhdGlvbl0sCitbKHl5bG9jKV0pCisKKworIyBiNF9yaHNfbG9j
YXRpb24oUlVMRS1MRU5HVEgsIFBPUykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjIEV4cGFuc2lvbiBvZiBAUE9TLCB3aGVyZSB0aGUgY3VycmVudCBydWxlIGhhcyBSVUxF
LUxFTkdUSCBzeW1ib2xzCisjIG9uIFJIUy4KK200X2RlZmluZShbYjRfcmhzX2xvY2F0aW9uXSwK
K1soeXlsc3BAe2I0X3N1YnRyYWN0KFskMl0sIFskMV0pQH0pXSkKKworCisjIyAtLS0tLS0tLS0t
LS0tLSAjIworIyMgRGVjbGFyYXRpb25zLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0tICMjCisKKyMg
YjRfZGVjbGFyZV9zY2FubmVyX2NvbW11bmljYXRpb25fdmFyaWFibGVzCisjIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWNsYXJlIHRoZSB2YXJpYWJsZXMg
dGhhdCBhcmUgZ2xvYmFsLCBvciBsb2NhbCB0byBZWVBBUlNFIGlmCisjIHB1cmUtcGFyc2VyLgor
bTRfZGVmaW5lKFtiNF9kZWNsYXJlX3NjYW5uZXJfY29tbXVuaWNhdGlvbl92YXJpYWJsZXNdLCBb
WworLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworaW50IHl5Y2hhcjsKKworXWI0X3B1cmVf
aWYoW1sKKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICov
CisvKiBEZWZhdWx0IHZhbHVlIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLCBmb3IgcGFjaWZ5aW5n
IG9sZGVyIEdDQ3MKKyAgIG9yIG5vbi1HQ0MgY29tcGlsZXJzLiAgKi8KK1lZX0lOSVRJQUxfVkFM
VUUgKHN0YXRpYyBZWVNUWVBFIHl5dmFsX2RlZmF1bHQ7KQorWVlTVFlQRSB5eWx2YWwgWVlfSU5J
VElBTF9WQUxVRSAoPSB5eXZhbF9kZWZhdWx0KTtdYjRfbG9jYXRpb25zX2lmKFtbCisKKy8qIExv
Y2F0aW9uIGRhdGEgZm9yIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KK3N0YXRpYyBZWUxUWVBF
IHl5bG9jX2RlZmF1bHRdYjRfeXlsb2NfZGVmYXVsdFs7CitZWUxUWVBFIHl5bGxvYyA9IHl5bG9j
X2RlZmF1bHQ7XV0pXSwKK1tbLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rYWhlYWQg
c3ltYm9sLiAgKi8KK1lZU1RZUEUgeXlsdmFsO11iNF9sb2NhdGlvbnNfaWYoW1sKKy8qIExvY2F0
aW9uIGRhdGEgZm9yIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KK1lZTFRZUEUgeXlsbG9jXWI0
X3l5bG9jX2RlZmF1bHRbO11dKVsKKy8qIE51bWJlciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4g
ICovCitpbnQgeXluZXJycztdXSldKQorCisKKyMgYjRfZGVjbGFyZV9wYXJzZXJfc3RhdGVfdmFy
aWFibGVzCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWNsYXJlIGFs
bCB0aGUgdmFyaWFibGVzIHRoYXQgYXJlIG5lZWRlZCB0byBtYWludGFpbiB0aGUgcGFyc2VyIHN0
YXRlCisjIGJldHdlZW4gY2FsbHMgdG8geXlwdXNoX3BhcnNlLgorbTRfZGVmaW5lKFtiNF9kZWNs
YXJlX3BhcnNlcl9zdGF0ZV92YXJpYWJsZXNdLCBbYjRfcHVyZV9pZihbWworICAgIC8qIE51bWJl
ciBvZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCisgICAgaW50IHl5bmVycnM7CitdXSlbCisg
ICAgaW50IHl5c3RhdGU7CisgICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUg
ZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCisgICAgaW50IHl5ZXJyc3RhdHVzOworCisgICAg
LyogVGhlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6CisgICAgICAgJ3l5c3MnOiByZWxhdGVkIHRv
IHN0YXRlcy4KKyAgICAgICAneXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLl1iNF9s
b2NhdGlvbnNfaWYoW1sKKyAgICAgICAneXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLl1dKVsK
KworICAgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhyb3VnaCBzZXBhcmF0ZSBwb2ludGVycywg
dG8gYWxsb3cgeXlvdmVyZmxvdworICAgICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUu
ICAqLworCisgICAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8KKyAgICB5eXR5cGVfaW50MTYgeXlz
c2FbWVlJTklUREVQVEhdOworICAgIHl5dHlwZV9pbnQxNiAqeXlzczsKKyAgICB5eXR5cGVfaW50
MTYgKnl5c3NwOworCisgICAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KKyAgICBZ
WVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKKyAgICBZWVNUWVBFICp5eXZzOworICAgIFlZU1RZ
UEUgKnl5dnNwO11iNF9sb2NhdGlvbnNfaWYoW1sKKworICAgIC8qIFRoZSBsb2NhdGlvbiBzdGFj
ay4gICovCisgICAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07CisgICAgWVlMVFlQRSAqeXls
czsKKyAgICBZWUxUWVBFICp5eWxzcDsKKworICAgIC8qIFRoZSBsb2NhdGlvbnMgd2hlcmUgdGhl
IGVycm9yIHN0YXJ0ZWQgYW5kIGVuZGVkLiAgKi8KKyAgICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2Vb
M107XV0pWworCisgICAgWVlTSVpFX1QgeXlzdGFja3NpemU7XWI0X2xhY19pZihbWworCisgICAg
eXl0eXBlX2ludDE2IHl5ZXNhQHtdYjRfcGVyY2VudF9kZWZpbmVfZ2V0KFtbcGFyc2UubGFjLmVz
LWNhcGFjaXR5LWluaXRpYWxdXSlbQH07CisgICAgeXl0eXBlX2ludDE2ICp5eWVzOworICAgIFlZ
U0laRV9UIHl5ZXNfY2FwYWNpdHk7XV0pXSkKKworCisjIF9iNF9kZWNsYXJlX3l5cGFyc2VfcHVz
aAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyYXRpb24gb2YgeXlwYXJzZSAo
YW5kIGRlcGVuZGVuY2llcykgd2hlbiB1c2luZyB0aGUgcHVzaCBwYXJzZXIKKyMgKGluY2x1ZGlu
ZyBpbiBwdWxsIG1vZGUpLgorbTRfZGVmaW5lKFtfYjRfZGVjbGFyZV95eXBhcnNlX3B1c2hdLAor
W1sjaWZuZGVmIFlZUFVTSF9NT1JFX0RFRklORUQKKyMgZGVmaW5lIFlZUFVTSF9NT1JFX0RFRklO
RUQKK2VudW0geyBZWVBVU0hfTU9SRSA9IDQgfTsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBd
YjRfcHJlZml4W3BzdGF0ZSBdYjRfcHJlZml4W3BzdGF0ZTsKKworXWI0X3B1bGxfaWYoW2I0X2Z1
bmN0aW9uX2RlY2xhcmUoW2I0X3ByZWZpeFtwYXJzZV1dLCBbW2ludF1dLCBiNF9wYXJzZV9wYXJh
bSkKK10pYjRfZnVuY3Rpb25fZGVjbGFyZShbYjRfcHJlZml4W3B1c2hfcGFyc2VdXSwgW1tpbnRd
XSwKKyAgW1tiNF9wcmVmaXhbcHN0YXRlICpwc11dLCBbW3BzXV1dYjRfcHVyZV9pZihbLAorICBb
W1tpbnQgcHVzaGVkX2NoYXJdXSwgW1twdXNoZWRfY2hhcl1dXSwKKyAgW1tiNF9hcGlfUFJFRklY
W1NUWVBFIGNvbnN0ICpwdXNoZWRfdmFsXV0sIFtbcHVzaGVkX3ZhbF1dXWI0X2xvY2F0aW9uc19p
ZihbLAorICBbW2I0X2FwaV9QUkVGSVhbTFRZUEUgKnB1c2hlZF9sb2NdXSwgW1twdXNoZWRfbG9j
XV1dXSldKW00X2lmc2V0KFtiNF9wYXJzZV9wYXJhbV0sIFssCisgIGI0X3BhcnNlX3BhcmFtXSkp
CitiNF9wdWxsX2lmKFtiNF9mdW5jdGlvbl9kZWNsYXJlKFtiNF9wcmVmaXhbcHVsbF9wYXJzZV1d
LCBbW2ludF1dLAorICBbW2I0X3ByZWZpeFtwc3RhdGUgKnBzXV0sIFtbcHNdXV1tNF9pZnNldChb
YjRfcGFyc2VfcGFyYW1dLCBbLAorICBiNF9wYXJzZV9wYXJhbV0pKV0pCitiNF9mdW5jdGlvbl9k
ZWNsYXJlKFtiNF9wcmVmaXhbcHN0YXRlX25ld11dLCBbYjRfcHJlZml4W3BzdGF0ZSAqXV0sCisg
ICAgICAgICAgICAgICAgICAgIFtbW3ZvaWRdXSwgW11dKQorYjRfZnVuY3Rpb25fZGVjbGFyZShb
YjRfcHJlZml4W3BzdGF0ZV9kZWxldGVdXSwgW1t2b2lkXV0sCisgICAgICAgICAgICAgICAgICAg
W1tiNF9wcmVmaXhbcHN0YXRlICpwc11dLCBbW3BzXV1dKWRubAorXSkKKworIyBfYjRfZGVjbGFy
ZV95eXBhcnNlCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV2hlbiBub3QgdGhlIHB1c2ggcGFy
c2VyLgorbTRfZGVmaW5lKFtfYjRfZGVjbGFyZV95eXBhcnNlXSwKK1tiNF9mdW5jdGlvbl9kZWNs
YXJlKGI0X3ByZWZpeFtwYXJzZV0sIFtpbnRdLCBiNF9wYXJzZV9wYXJhbSldKQorCisKKyMgYjRf
ZGVjbGFyZV95eXBhcnNlCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtiNF9kZWNs
YXJlX3l5cGFyc2VdLAorW2I0X3B1c2hfaWYoW19iNF9kZWNsYXJlX3l5cGFyc2VfcHVzaF0sCisg
ICAgICAgICAgICBbX2I0X2RlY2xhcmVfeXlwYXJzZV0pW11kbmwKK10pCisKKworIyBiNF9zaGFy
ZWRfZGVjbGFyYXRpb25zCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyYXRpb24g
dGhhdCBtaWdodCBlaXRoZXIgZ28gaW50byB0aGUgaGVhZGVyIChpZiAtLWRlZmluZXMpCisjIG9y
IG9wZW4gY29kZWQgaW4gdGhlIHBhcnNlciBib2R5LgorbTRfZGVmaW5lKFtiNF9zaGFyZWRfZGVj
bGFyYXRpb25zXSwKK1tiNF9jcHBfZ3VhcmRfb3BlbihbYjRfc3BlY19kZWZpbmVzX2ZpbGVdKVsK
K11iNF9kZWNsYXJlX3l5ZGVidWdbCitdYjRfcGVyY2VudF9jb2RlX2dldChbW3JlcXVpcmVzXV0p
WworXWI0X3Rva2VuX2VudW1zX2RlZmluZXNbCitdYjRfZGVjbGFyZV95eWxzdHlwZVsKK11iNF9k
ZWNsYXJlX3l5cGFyc2VbCitdYjRfcGVyY2VudF9jb2RlX2dldChbW3Byb3ZpZGVzXV0pWworXWI0
X2NwcF9ndWFyZF9jbG9zZShbYjRfc3BlY19kZWZpbmVzX2ZpbGVdKVtdZG5sCitdKQorCisjIyAt
LS0tLS0tLS0tLS0tLSAjIworIyMgT3V0cHV0IGZpbGVzLiAgIyMKKyMjIC0tLS0tLS0tLS0tLS0t
ICMjCisKK2I0X291dHB1dF9iZWdpbihbYjRfcGFyc2VyX2ZpbGVfbmFtZV0pWworXWI0X2NvcHly
aWdodChbQmlzb24gaW1wbGVtZW50YXRpb24gZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIENdKVsK
Ky8qIEMgTEFMUigxKSBwYXJzZXIgc2tlbGV0b24gd3JpdHRlbiBieSBSaWNoYXJkIFN0YWxsbWFu
LCBieQorICAgc2ltcGxpZnlpbmcgdGhlIG9yaWdpbmFsIHNvLWNhbGxlZCAic2VtYW50aWMiIHBh
cnNlci4gICovCisKKy8qIEFsbCBzeW1ib2xzIGRlZmluZWQgYmVsb3cgc2hvdWxkIGJlZ2luIHdp
dGggeXkgb3IgWVksIHRvIGF2b2lkCisgICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4g
IFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZlbiBmb3IgbG9jYWwKKyAgIHZhcmlhYmxlcywgYXMgdGhl
eSBtaWdodCBvdGhlcndpc2UgYmUgZXhwYW5kZWQgYnkgdXNlciBtYWNyb3MuCisgICBUaGVyZSBh
cmUgc29tZSB1bmF2b2lkYWJsZSBleGNlcHRpb25zIHdpdGhpbiBpbmNsdWRlIGZpbGVzIHRvCisg
ICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJhcnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklORlJJ
TkdFUyBPTgorICAgVVNFUiBOQU1FIFNQQUNFIiBiZWxvdy4gICovCisKK11iNF9kaXNjbGFpbWVy
WworXWI0X2lkZW50aWZpY2F0aW9uWworXWI0X3BlcmNlbnRfY29kZV9nZXQoW1t0b3BdXSlbXWRu
bAorbTRfaWYoYjRfYXBpX3ByZWZpeCwgW3l5XSwgW10sCitbWy8qIFN1YnN0aXR1dGUgdGhlIHR5
cGUgbmFtZXMuICAqLworI2RlZmluZSBZWVNUWVBFICAgICAgICAgXWI0X2FwaV9QUkVGSVhbU1RZ
UEVdYjRfbG9jYXRpb25zX2lmKFtbCisjZGVmaW5lIFlZTFRZUEUgICAgICAgICBdYjRfYXBpX1BS
RUZJWFtMVFlQRV1dKV0pWworXW00X2lmKGI0X3ByZWZpeCwgW3l5XSwgW10sCitbWy8qIFN1YnN0
aXR1dGUgdGhlIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcy4gICovXWI0X3B1bGxfaWYoW1sK
KyNkZWZpbmUgeXlwYXJzZSAgICAgICAgIF1iNF9wcmVmaXhbcGFyc2VdXSliNF9wdXNoX2lmKFtb
CisjZGVmaW5lIHl5cHVzaF9wYXJzZSAgICBdYjRfcHJlZml4W3B1c2hfcGFyc2VdYjRfcHVsbF9p
ZihbWworI2RlZmluZSB5eXB1bGxfcGFyc2UgICAgXWI0X3ByZWZpeFtwdWxsX3BhcnNlXV0pWwor
I2RlZmluZSB5eXBzdGF0ZV9uZXcgICAgXWI0X3ByZWZpeFtwc3RhdGVfbmV3CisjZGVmaW5lIHl5
cHN0YXRlX2RlbGV0ZSBdYjRfcHJlZml4W3BzdGF0ZV9kZWxldGUKKyNkZWZpbmUgeXlwc3RhdGUg
ICAgICAgIF1iNF9wcmVmaXhbcHN0YXRlXV0pWworI2RlZmluZSB5eWxleCAgICAgICAgICAgXWI0
X3ByZWZpeFtsZXgKKyNkZWZpbmUgeXllcnJvciAgICAgICAgIF1iNF9wcmVmaXhbZXJyb3IKKyNk
ZWZpbmUgeXlkZWJ1ZyAgICAgICAgIF1iNF9wcmVmaXhbZGVidWcKKyNkZWZpbmUgeXluZXJycyAg
ICAgICAgIF1iNF9wcmVmaXhbbmVycnMKK11dYjRfcHVyZV9pZihbXSwgW1sKKyNkZWZpbmUgeXls
dmFsICAgICAgICAgIF1iNF9wcmVmaXhbbHZhbAorI2RlZmluZSB5eWNoYXIgICAgICAgICAgXWI0
X3ByZWZpeFtjaGFyXWI0X2xvY2F0aW9uc19pZihbWworI2RlZmluZSB5eWxsb2MgICAgICAgICAg
XWI0X3ByZWZpeFtsbG9jXV0pXSkpWworCitdYjRfdXNlcl9wcmVfcHJvbG9ndWVbCitdYjRfbnVs
bF9kZWZpbmVbCisKKy8qIEVuYWJsaW5nIHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMuICAqLworI2lm
ZGVmIFlZRVJST1JfVkVSQk9TRQorIyB1bmRlZiBZWUVSUk9SX1ZFUkJPU0UKKyMgZGVmaW5lIFlZ
RVJST1JfVkVSQk9TRSAxCisjZWxzZQorIyBkZWZpbmUgWVlFUlJPUl9WRVJCT1NFIF1iNF9lcnJv
cl92ZXJib3NlX2lmKFsxXSwgWzBdKVsKKyNlbmRpZgorCitdbTRfaWZ2YWwobTRfcXVvdGUoYjRf
c3BlY19kZWZpbmVzX2ZpbGUpLAorW1svKiBJbiBhIGZ1dHVyZSByZWxlYXNlIG9mIEJpc29uLCB0
aGlzIHNlY3Rpb24gd2lsbCBiZSByZXBsYWNlZAorICAgYnkgI2luY2x1ZGUgIkBiYXNlbmFtZShd
YjRfc3BlY19kZWZpbmVzX2ZpbGVbQCkiLiAgKi8KK11dKWRubAorYjRfc2hhcmVkX2RlY2xhcmF0
aW9uc1sKKworXWI0X3VzZXJfcG9zdF9wcm9sb2d1ZVsKK11iNF9wZXJjZW50X2NvZGVfZ2V0W11k
bmwKKworWyNpZmRlZiBzaG9ydAorIyB1bmRlZiBzaG9ydAorI2VuZGlmCisKKyNpZmRlZiBZWVRZ
UEVfVUlOVDgKK3R5cGVkZWYgWVlUWVBFX1VJTlQ4IHl5dHlwZV91aW50ODsKKyNlbHNlCit0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgeXl0eXBlX3VpbnQ4OworI2VuZGlmCisKKyNpZmRlZiBZWVRZUEVf
SU5UOAordHlwZWRlZiBZWVRZUEVfSU5UOCB5eXR5cGVfaW50ODsKKyNlbHNlCit0eXBlZGVmIHNp
Z25lZCBjaGFyIHl5dHlwZV9pbnQ4OworI2VuZGlmCisKKyNpZmRlZiBZWVRZUEVfVUlOVDE2Cit0
eXBlZGVmIFlZVFlQRV9VSU5UMTYgeXl0eXBlX3VpbnQxNjsKKyNlbHNlCit0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IHl5dHlwZV91aW50MTY7CisjZW5kaWYKKworI2lmZGVmIFlZVFlQRV9JTlQxNgor
dHlwZWRlZiBZWVRZUEVfSU5UMTYgeXl0eXBlX2ludDE2OworI2Vsc2UKK3R5cGVkZWYgc2hvcnQg
eXl0eXBlX2ludDE2OworI2VuZGlmCisKKyNpZm5kZWYgWVlTSVpFX1QKKyMgaWZkZWYgX19TSVpF
X1RZUEVfXworIyAgZGVmaW5lIFlZU0laRV9UIF9fU0laRV9UWVBFX18KKyMgZWxpZiBkZWZpbmVk
IHNpemVfdAorIyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAorIyBlbGlmICEgZGVmaW5lZCBZWVNJ
WkVfVAorIyAgaW5jbHVkZSA8c3RkZGVmLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BB
Q0UgKi8KKyMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKKyMgZWxzZQorIyAgZGVmaW5lIFlZU0la
RV9UIHVuc2lnbmVkCisjIGVuZGlmCisjZW5kaWYKKworI2RlZmluZSBZWVNJWkVfTUFYSU1VTSAo
KFlZU0laRV9UKSAtMSkKKworI2lmbmRlZiBZWV8KKyMgaWYgZGVmaW5lZCBZWUVOQUJMRV9OTFMg
JiYgWVlFTkFCTEVfTkxTCisjICBpZiBFTkFCTEVfTkxTCisjICAgaW5jbHVkZSA8bGliaW50bC5o
PiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZGVmaW5lIFlZXyhNc2dp
ZCkgZGdldHRleHQgKCJiaXNvbi1ydW50aW1lIiwgTXNnaWQpCisjICBlbmRpZgorIyBlbmRpZgor
IyBpZm5kZWYgWVlfCisjICBkZWZpbmUgWVlfKE1zZ2lkKSBNc2dpZAorIyBlbmRpZgorI2VuZGlm
CisKK11iNF9hdHRyaWJ1dGVfZGVmaW5lWworCisjaWYgXWI0X2xhY19pZihbWzFdXSwgW1shIGRl
ZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVSUk9SX1ZFUkJPU0VdXSlbCisKKy8qIFRoZSBwYXJzZXIg
aW52b2tlcyBhbGxvY2Egb3IgbWFsbG9jOyBkZWZpbmUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAg
Ki9dZG5sCitiNF9wdXNoX2lmKFtdLCBbYjRfbGFjX2lmKFtdLCBbWworCisjIGlmZGVmIFlZU1RB
Q0tfVVNFX0FMTE9DQQorIyAgaWYgWVlTVEFDS19VU0VfQUxMT0NBCisjICAgaWZkZWYgX19HTlVD
X18KKyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19idWlsdGluX2FsbG9jYQorIyAgIGVsaWYg
ZGVmaW5lZCBfX0JVSUxUSU5fVkFfQVJHX0lOQ1IKKyMgICAgaW5jbHVkZSA8YWxsb2NhLmg+IC8q
IElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbGlmIGRlZmluZWQgX0FJWAor
IyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBfX2FsbG9jYQorIyAgIGVsaWYgZGVmaW5lZCBfTVND
X1ZFUgorIyAgICBpbmNsdWRlIDxtYWxsb2MuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBT
UEFDRSAqLworIyAgICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKKyMgICBlbHNlCisjICAgIGRlZmlu
ZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQorIyAgICBpZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEg
ZGVmaW5lZCBFWElUX1NVQ0NFU1MKKyMgICAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5H
RVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisgICAgICAvKiBVc2UgRVhJVF9TVUNDRVNTIGFzIGEg
d2l0bmVzcyBmb3Igc3RkbGliLmguICAqLworIyAgICAgaWZuZGVmIEVYSVRfU1VDQ0VTUworIyAg
ICAgIGRlZmluZSBFWElUX1NVQ0NFU1MgMAorIyAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgICBl
bmRpZgorIyAgZW5kaWYKKyMgZW5kaWZdXSldKVsKKworIyBpZmRlZiBZWVNUQUNLX0FMTE9DCisg
ICAvKiBQYWNpZnkgR0NDJ3MgJ2VtcHR5IGlmLWJvZHknIHdhcm5pbmcuICAqLworIyAgZGVmaW5l
IFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0gd2hpbGUgKDApCisjICBpZm5k
ZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCisgICAgLyogVGhlIE9TIG1pZ2h0IGd1YXJhbnRlZSBv
bmx5IG9uZSBndWFyZCBwYWdlIGF0IHRoZSBib3R0b20gb2YgdGhlIHN0YWNrLAorICAgICAgIGFu
ZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21hbGwgYXMgNDA5NiBieXRlcy4gIFNvIHdlIGNhbm5v
dCBzYWZlbHkKKyAgICAgICBpbnZva2UgYWxsb2NhIChOKSBpZiBOIGV4Y2VlZHMgNDA5Ni4gIFVz
ZSBhIHNsaWdodGx5IHNtYWxsZXIgbnVtYmVyCisgICAgICAgdG8gYWxsb3cgZm9yIGEgZmV3IGNv
bXBpbGVyLWFsbG9jYXRlZCB0ZW1wb3Jhcnkgc3RhY2sgc2xvdHMuICAqLworIyAgIGRlZmluZSBZ
WVNUQUNLX0FMTE9DX01BWElNVU0gNDAzMiAvKiByZWFzb25hYmxlIGNpcmNhIDIwMDYgKi8KKyMg
IGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBZWVNUQUNLX0FMTE9DIFlZTUFMTE9DCisjICBkZWZp
bmUgWVlTVEFDS19GUkVFIFlZRlJFRQorIyAgaWZuZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQor
IyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gWVlTSVpFX01BWElNVU0KKyMgIGVuZGlm
CisjICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTIFwK
KyAgICAgICAmJiAhICgoZGVmaW5lZCBZWU1BTExPQyB8fCBkZWZpbmVkIG1hbGxvYykgXAorICAg
ICAgICAgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBkZWZpbmVkIGZyZWUpKSkKKyMgICBpbmNs
dWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGlm
bmRlZiBFWElUX1NVQ0NFU1MKKyMgICAgZGVmaW5lIEVYSVRfU1VDQ0VTUyAwCisjICAgZW5kaWYK
KyMgIGVuZGlmCisjICBpZm5kZWYgWVlNQUxMT0MKKyMgICBkZWZpbmUgWVlNQUxMT0MgbWFsbG9j
CisjICAgaWYgISBkZWZpbmVkIG1hbGxvYyAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTCit2b2lk
ICptYWxsb2MgKFlZU0laRV9UKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwor
IyAgIGVuZGlmCisjICBlbmRpZgorIyAgaWZuZGVmIFlZRlJFRQorIyAgIGRlZmluZSBZWUZSRUUg
ZnJlZQorIyAgIGlmICEgZGVmaW5lZCBmcmVlICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1MKK3Zv
aWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAg
IGVuZGlmCisjICBlbmRpZgorIyBlbmRpZl1iNF9sYWNfaWYoW1sKKyMgZGVmaW5lIFlZQ09QWV9O
RUVERUQgMV1dKVsKKyNlbmRpZl1iNF9sYWNfaWYoW10sIFtbIC8qICEgZGVmaW5lZCB5eW92ZXJm
bG93IHx8IFlZRVJST1JfVkVSQk9TRSAqL11dKVsKKworCisjaWYgKCEgZGVmaW5lZCB5eW92ZXJm
bG93IFwKKyAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCisgICAgICAgICB8fCAoXWI0
X2xvY2F0aW9uc19pZihbW2RlZmluZWQgXWI0X2FwaV9QUkVGSVhbTFRZUEVfSVNfVFJJVklBTCAm
JiBdYjRfYXBpX1BSRUZJWFtMVFlQRV9JU19UUklWSUFMIFwKKyAgICAgICAgICAgICAmJiBdXSlb
ZGVmaW5lZCBdYjRfYXBpX1BSRUZJWFtTVFlQRV9JU19UUklWSUFMICYmIF1iNF9hcGlfUFJFRklY
W1NUWVBFX0lTX1RSSVZJQUwpKSkKKworLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25l
ZCBmb3IgYW55IHN0YWNrIG1lbWJlci4gICovCit1bmlvbiB5eWFsbG9jCit7CisgIHl5dHlwZV9p
bnQxNiB5eXNzX2FsbG9jOworICBZWVNUWVBFIHl5dnNfYWxsb2M7XWI0X2xvY2F0aW9uc19pZihb
CisgIFlZTFRZUEUgeXlsc19hbGxvYztdKVsKK307CisKKy8qIFRoZSBzaXplIG9mIHRoZSBtYXhp
bXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCisjIGRl
ZmluZSBZWVNUQUNLX0dBUF9NQVhJTVVNIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKKwor
LyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxsIHN0YWNr
cywgZWFjaCB3aXRoCisgICBOIGVsZW1lbnRzLiAgKi8KK11iNF9sb2NhdGlvbnNfaWYoCitbIyBk
ZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50
MTYpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAgICAgICsgMiAq
IFlZU1RBQ0tfR0FQX01BWElNVU0pXSwKK1sjIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKKyAg
ICAgKChOKSAqIChzaXplb2YgKHl5dHlwZV9pbnQxNikgKyBzaXplb2YgKFlZU1RZUEUpKSBcCisg
ICAgICArIFlZU1RBQ0tfR0FQX01BWElNVU0pXSlbCisKKyMgZGVmaW5lIFlZQ09QWV9ORUVERUQg
MQorCisvKiBSZWxvY2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBv
bmUuICBUaGUKKyAgIGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUg
dGhlIG9sZCBhbmQgbmV3IG51bWJlciBvZgorICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQg
WVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKKyAgIHN0YWNrLiAgQWR2YW5jZSBZ
WVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0CisgICBzdGFj
ay4gICovCisjIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFjaykgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIFlZU0laRV9UIHl5bmV3Ynl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFlZQ09QWSAoJnl5cHRyLT5TdGFja19hbGxv
YywgU3RhY2ssIHl5c2l6ZSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFN0YWNrID0g
Jnl5cHRyLT5TdGFja19hbGxvYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZ
U1RBQ0tfR0FQX01BWElNVU07IFwKKyAgICAgICAgeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVv
ZiAoKnl5cHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB3aGlsZSAoMCkKKworI2VuZGlmCisKKyNpZiBkZWZpbmVkIFlZQ09QWV9ORUVERUQgJiYg
WVlDT1BZX05FRURFRAorLyogQ29weSBDT1VOVCBvYmplY3RzIGZyb20gU1JDIHRvIERTVC4gIFRo
ZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCisgICBub3Qgb3ZlcmxhcC4gICovCisjIGlmbmRl
ZiBZWUNPUFkKKyMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgMSA8IF9fR05VQ19fCisjICAgZGVm
aW5lIFlZQ09QWShEc3QsIFNyYywgQ291bnQpIFwKKyAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKERz
dCwgU3JjLCAoQ291bnQpICogc2l6ZW9mICgqKFNyYykpKQorIyAgZWxzZQorIyAgIGRlZmluZSBZ
WUNPUFkoRHN0LCBTcmMsIENvdW50KSAgICAgICAgICAgICAgXAorICAgICAgZG8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIFlZU0laRV9UIHl5aTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50
KTsgeXlpKyspICAgXAorICAgICAgICAgICAgKERzdClbeXlpXSA9IChTcmMpW3l5aV07ICAgICAg
ICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgd2hpbGUgKDApCisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmIC8qICFZWUNPUFlf
TkVFREVEICovCisKKy8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlv
biBzdGF0ZS4gICovCisjZGVmaW5lIFlZRklOQUwgIF1iNF9maW5hbF9zdGF0ZV9udW1iZXJbCisv
KiBZWUxBU1QgLS0gTGFzdCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KKyNkZWZpbmUgWVlMQVNUICAg
XWI0X2xhc3RbCisKKy8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KKyNk
ZWZpbmUgWVlOVE9LRU5TICBdYjRfdG9rZW5zX251bWJlclsKKy8qIFlZTk5UUyAtLSBOdW1iZXIg
b2Ygbm9udGVybWluYWxzLiAgKi8KKyNkZWZpbmUgWVlOTlRTICBdYjRfbnRlcm1zX251bWJlclsK
Ky8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCisjZGVmaW5lIFlZTlJVTEVTICBd
YjRfcnVsZXNfbnVtYmVyWworLyogWVlOU1RBVEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwor
I2RlZmluZSBZWU5TVEFURVMgIF1iNF9zdGF0ZXNfbnVtYmVyWworCisjZGVmaW5lIFlZVU5ERUZU
T0sgIF1iNF91bmRlZl90b2tlbl9udW1iZXJbCisjZGVmaW5lIFlZTUFYVVRPSyAgIF1iNF91c2Vy
X3Rva2VuX251bWJlcl9tYXhbCisKKy8qIFlZVFJBTlNMQVRFKFRPS0VOLU5VTSkgLS0gU3ltYm9s
IG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFRPS0VOLU5VTQorICAgYXMgcmV0dXJuZWQgYnkgeXls
ZXgsIHdpdGggb3V0LW9mLWJvdW5kcyBjaGVja2luZy4gICovCisjZGVmaW5lIFlZVFJBTlNMQVRF
KFlZWCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICgodW5zaWduZWQpIChZWVgpIDw9IFlZTUFYVVRPSyA/IHl5dHJhbnNsYXRlW1lZWF0gOiBZWVVO
REVGVE9LKQorCisvKiBZWVRSQU5TTEFURVtUT0tFTi1OVU1dIC0tIFN5bWJvbCBudW1iZXIgY29y
cmVzcG9uZGluZyB0byBUT0tFTi1OVU0KKyAgIGFzIHJldHVybmVkIGJ5IHl5bGV4LiAgKi8KK3N0
YXRpYyBjb25zdCBdYjRfaW50X3R5cGVfZm9yKFtiNF90cmFuc2xhdGVdKVsgeXl0cmFuc2xhdGVb
XSA9Cit7CisgIF1iNF90cmFuc2xhdGVbCit9OworCisjaWYgXWI0X2FwaV9QUkVGSVhbREVCVUcK
K11iNF9pbnRlZ3JhbF9wYXJzZXJfdGFibGVfZGVmaW5lKFtybGluZV0sIFtiNF9ybGluZV0sCisg
ICAgIFtbWVlSTElORVtZWU5dIC0tIFNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3
YXMgZGVmaW5lZC5dXSlbCisjZW5kaWYKKworI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHIHx8IFlZ
RVJST1JfVkVSQk9TRSB8fCBdYjRfdG9rZW5fdGFibGVfZmxhZ1sKKy8qIFlZVE5BTUVbU1lNQk9M
LU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHN5bWJvbCBTWU1CT0wtTlVNLgorICAgRmlyc3Qs
IHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWluYWxz
LiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQoreworICBdYjRfdG5h
bWVbCit9OworI2VuZGlmCisKKyMgaWZkZWYgWVlQUklOVAorLyogWVlUT0tOVU1bTlVNXSAtLSAo
RXh0ZXJuYWwpIHRva2VuIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgKGludGVybmFs
KSBzeW1ib2wgbnVtYmVyIE5VTSAod2hpY2ggbXVzdCBiZSB0aGF0IG9mIGEgdG9rZW4pLiAgKi8K
K3N0YXRpYyBjb25zdCBdYjRfaW50X3R5cGVfZm9yKFtiNF90b2tudW1dKVsgeXl0b2tudW1bXSA9
Cit7CisgIF1iNF90b2tudW1bCit9OworIyBlbmRpZgorCisjZGVmaW5lIFlZUEFDVF9OSU5GIF1i
NF9wYWN0X25pbmZbCisKKyNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQoWXlzdGF0ZSkg
XAorICBdYjRfdGFibGVfdmFsdWVfZXF1YWxzKFtbcGFjdF1dLCBbW1l5c3RhdGVdXSwgW2I0X3Bh
Y3RfbmluZl0pWworCisjZGVmaW5lIFlZVEFCTEVfTklORiBdYjRfdGFibGVfbmluZlsKKworI2Rl
ZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgXWI0X3RhYmxl
X3ZhbHVlX2VxdWFscyhbW3RhYmxlXV0sIFtbWXl0YWJsZV92YWx1ZV1dLCBbYjRfdGFibGVfbmlu
Zl0pWworCitdYjRfcGFyc2VyX3RhYmxlc19kZWZpbmVbCisKKyNkZWZpbmUgeXllcnJvayAgICAg
ICAgICh5eWVycnN0YXR1cyA9IDApCisjZGVmaW5lIHl5Y2xlYXJpbiAgICAgICAoeXljaGFyID0g
WVlFTVBUWSkKKyNkZWZpbmUgWVlFTVBUWSAgICAgICAgICgtMikKKyNkZWZpbmUgWVlFT0YgICAg
ICAgICAgIDAKKworI2RlZmluZSBZWUFDQ0VQVCAgICAgICAgZ290byB5eWFjY2VwdGxhYgorI2Rl
ZmluZSBZWUFCT1JUICAgICAgICAgZ290byB5eWFib3J0bGFiCisjZGVmaW5lIFlZRVJST1IgICAg
ICAgICBnb3RvIHl5ZXJyb3JsYWIKKworCisjZGVmaW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVy
cnN0YXR1cykKKworI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh5eWNoYXIgPT0gWVlF
TVBUWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB5eWNoYXIgPSAoVG9rZW4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICB5eWx2YWwgPSAoVmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBZWVBPUFNUQUNLICh5eWxlbik7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB5eXN0YXRlID0g
Knl5c3NwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF1iNF9sYWNf
aWYoW1sKKyAgICAgICAgWVlfTEFDX0RJU0NBUkQgKCJZWUJBQ0tVUCIpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFxdXSlbCisgICAgICAgIGdvdG8geXliYWNrdXA7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHl5ZXJyb3IgKF1iNF95eWVycm9yX2FyZ3NbWVlfKCJzeW50
YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIikpOyBcCisgICAgICAgIFlZRVJST1I7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
IHdoaWxlICgwKQorCisvKiBFcnJvciB0b2tlbiBudW1iZXIgKi8KKyNkZWZpbmUgWVlURVJST1Ig
ICAgICAgIDEKKyNkZWZpbmUgWVlFUlJDT0RFICAgICAgIDI1NgorCitdYjRfbG9jYXRpb25zX2lm
KFtbCitdYjRfeXlsbG9jX2RlZmF1bHRfZGVmaW5lWworI2RlZmluZSBZWVJIU0xPQyhSaHMsIEsp
ICgoUmhzKVtLXSkKK11dKVsKKworLyogRW5hYmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAq
LworI2lmIF1iNF9hcGlfUFJFRklYW0RFQlVHCisKKyMgaWZuZGVmIFlZRlBSSU5URgorIyAgaW5j
bHVkZSA8c3RkaW8uaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgZGVm
aW5lIFlZRlBSSU5URiBmcHJpbnRmCisjIGVuZGlmCisKKyMgZGVmaW5lIFlZRFBSSU5URihBcmdz
KSAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBZWUZQUklOVEYgQXJnczsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKK30gd2hpbGUgKDApCisKK11iNF95eV9sb2NhdGlvbl9wcmludF9kZWZpbmVbCisK
KyMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChUaXRsZSwgVHlwZSwgVmFsdWUsIExvY2F0aW9uKSAg
ICAgICAgICAgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICh5eWRlYnVnKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCBU
aXRsZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5eV9zeW1i
b2xfcHJpbnQgKHN0ZGVyciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICAgICAgIFR5cGUsIFZhbHVlXWI0X2xvY2F0aW9uc19pZihbLCBM
b2NhdGlvbl0pW11iNF91c2VyX2FyZ3NbKTsgXAorICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJc
biIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKK30gd2hpbGUgKDApCisKK11iNF95eV9zeW1ib2xfcHJpbnRfZGVmaW5lWwor
CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS4KK3wgeXlfc3RhY2tfcHJpbnQgLS0gUHJpbnQgdGhlIHN0YXRlIHN0YWNr
IGZyb20gaXRzIEJPVFRPTSB1cCB0byBpdHMgfAorfCBUT1AgKGluY2x1ZGVkKS4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CitgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
KworXWI0X2Z1bmN0aW9uX2RlZmluZShbeXlfc3RhY2tfcHJpbnRdLCBbc3RhdGljIHZvaWRdLAor
ICAgICAgICAgICAgICAgICAgIFtbeXl0eXBlX2ludDE2ICp5eWJvdHRvbV0sIFt5eWJvdHRvbV1d
LAorICAgICAgICAgICAgICAgICAgIFtbeXl0eXBlX2ludDE2ICp5eXRvcF0sICAgIFt5eXRvcF1d
KVsKK3sKKyAgWVlGUFJJTlRGIChzdGRlcnIsICJTdGFjayBub3ciKTsKKyAgZm9yICg7IHl5Ym90
dG9tIDw9IHl5dG9wOyB5eWJvdHRvbSsrKQorICAgIHsKKyAgICAgIGludCB5eWJvdCA9ICp5eWJv
dHRvbTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgeXlib3QpOworICAgIH0KKyAg
WVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOworfQorCisjIGRlZmluZSBZWV9TVEFDS19QUklOVChC
b3R0b20sIFRvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYg
KHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorfSB3aGlsZSAoMCkKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUmVwb3J0IHRoYXQgdGhlIFlZUlVMRSBpcyBn
b2luZyB0byBiZSByZWR1Y2VkLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCisKK11iNF9mdW5jdGlvbl9kZWZpbmUoW3l5X3JlZHVjZV9wcmlu
dF0sIFtzdGF0aWMgdm9pZF0sCisgICAgICAgICAgICAgICAgICAgW1t5eXR5cGVfaW50MTYgKnl5
c3NwXSwgW3l5c3NwXV0sCisgICAgICAgICAgICAgICAgICAgW1tZWVNUWVBFICp5eXZzcF0sIFt5
eXZzcF1dLAorICAgIGI0X2xvY2F0aW9uc19pZihbW1tZWUxUWVBFICp5eWxzcF0sIFt5eWxzcF1d
LAorICAgICAgICAgICAgICAgICAgIF0pW1tpbnQgeXlydWxlXSwgW3l5cnVsZV1dbTRfaWZzZXQo
W2I0X3BhcnNlX3BhcmFtXSwgWywKKyAgICAgICAgICAgICAgICAgICBiNF9wYXJzZV9wYXJhbV0p
KVsKK3sKKyAgdW5zaWduZWQgbG9uZyB5eWxubyA9IHl5cmxpbmVbeXlydWxlXTsKKyAgaW50IHl5
bnJocyA9IHl5cjJbeXlydWxlXTsKKyAgaW50IHl5aTsKKyAgWVlGUFJJTlRGIChzdGRlcnIsICJS
ZWR1Y2luZyBzdGFjayBieSBydWxlICVkIChsaW5lICVsdSk6XG4iLAorICAgICAgICAgICAgIHl5
cnVsZSAtIDEsIHl5bG5vKTsKKyAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4gICovCisg
IGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKKyAgICB7CisgICAgICBZWUZQUklO
VEYgKHN0ZGVyciwgIiAgICQlZCA9ICIsIHl5aSArIDEpOworICAgICAgeXlfc3ltYm9sX3ByaW50
IChzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgIHl5c3Rvc1t5eXNzcFt5eWkgKyAxIC0g
eXlucmhzXV0sCisgICAgICAgICAgICAgICAgICAgICAgICZdYjRfcmhzX3ZhbHVlKHl5bnJocywg
eXlpICsgMSlbCisgICAgICAgICAgICAgICAgICAgICAgIF1iNF9sb2NhdGlvbnNfaWYoWywgJl1i
NF9yaHNfbG9jYXRpb24oeXlucmhzLCB5eWkgKyAxKSlbXWRubAorICAgICAgICAgICAgICAgICAg
ICAgICBiNF91c2VyX2FyZ3NbKTsKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKKyAg
ICB9Cit9CisKKyMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKSAgICAgICAgICBcCitkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoeXlkZWJ1ZykgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB5eV9yZWR1Y2VfcHJpbnQgKHl5c3NwLCB5eXZz
cCwgXWI0X2xvY2F0aW9uc19pZihbeXlsc3AsIF0pW1J1bGVdYjRfdXNlcl9hcmdzWyk7IFwKK30g
d2hpbGUgKDApCisKKy8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBs
ZWZ0IHVuaW5pdGlhbGl6ZWQgc28gdGhhdAorICAgbXVsdGlwbGUgcGFyc2VycyBjYW4gY29leGlz
dC4gICovCitpbnQgeXlkZWJ1ZzsKKyNlbHNlIC8qICFdYjRfYXBpX1BSRUZJWFtERUJVRyAqLwor
IyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUs
IFR5cGUsIFZhbHVlLCBMb2NhdGlvbikKKyMgZGVmaW5lIFlZX1NUQUNLX1BSSU5UKEJvdHRvbSwg
VG9wKQorIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCisjZW5kaWYgLyogIV1iNF9hcGlf
UFJFRklYW0RFQlVHICovCisKKworLyogWVlJTklUREVQVEggLS0gaW5pdGlhbCBzaXplIG9mIHRo
ZSBwYXJzZXIncyBzdGFja3MuICAqLworI2lmbmRlZiBZWUlOSVRERVBUSAorIyBkZWZpbmUgWVlJ
TklUREVQVEggXWI0X3N0YWNrX2RlcHRoX2luaXRbCisjZW5kaWYKKworLyogWVlNQVhERVBUSCAt
LSBtYXhpbXVtIHNpemUgdGhlIHN0YWNrcyBjYW4gZ3JvdyB0byAoZWZmZWN0aXZlIG9ubHkKKyAg
IGlmIHRoZSBidWlsdC1pbiBzdGFjayBleHRlbnNpb24gbWV0aG9kIGlzIHVzZWQpLgorCisgICBE
byBub3QgbWFrZSB0aGlzIHZhbHVlIHRvbyBsYXJnZTsgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5l
ZCBpZgorICAgWVlTVEFDS19BTExPQ19NQVhJTVVNIDwgWVlTVEFDS19CWVRFUyAoWVlNQVhERVBU
SCkKKyAgIGV2YWx1YXRlZCB3aXRoIGluZmluaXRlLXByZWNpc2lvbiBpbnRlZ2VyIGFyaXRobWV0
aWMuICAqLworCisjaWZuZGVmIFlZTUFYREVQVEgKKyMgZGVmaW5lIFlZTUFYREVQVEggXWI0X3N0
YWNrX2RlcHRoX21heFsKKyNlbmRpZl1iNF9sYWNfaWYoW1sKKworLyogR2l2ZW4gYSBzdGF0ZSBz
dGFjayBzdWNoIHRoYXQgKllZQk9UVE9NIGlzIGl0cyBib3R0b20sIHN1Y2ggdGhhdAorICAgKllZ
VE9QIGlzIGVpdGhlciBpdHMgdG9wIG9yIGlzIFlZVE9QX0VNUFRZIHRvIGluZGljYXRlIGFuIGVt
cHR5CisgICBzdGFjaywgYW5kIHN1Y2ggdGhhdCAqWVlDQVBBQ0lUWSBpcyB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgZWxlbWVudHMgaXQKKyAgIGNhbiBob2xkIHdpdGhvdXQgYSByZWFsbG9jYXRpb24s
IG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bworICAgc3RvcmUgWVlBREQgbW9yZSBl
bGVtZW50cy4gIElmIG5vdCwgYWxsb2NhdGUgYSBuZXcgc3RhY2sgdXNpbmcKKyAgIFlZU1RBQ0tf
QUxMT0MsIGNvcHkgdGhlIGV4aXN0aW5nIGVsZW1lbnRzLCBhbmQgYWRqdXN0ICpZWUJPVFRPTSwK
KyAgICpZWVRPUCwgYW5kICpZWUNBUEFDSVRZIHRvIHJlZmxlY3QgdGhlIG5ldyBjYXBhY2l0eSBh
bmQgbWVtb3J5CisgICBsb2NhdGlvbi4gIElmICpZWUJPVFRPTSAhPSBZWUJPVFRPTV9OT19GUkVF
LCB0aGVuIGZyZWUgdGhlIG9sZCBzdGFjaworICAgdXNpbmcgWVlTVEFDS19GUkVFLiAgUmV0dXJu
IDAgaWYgc3VjY2Vzc2Z1bCBvciBpZiBubyByZWFsbG9jYXRpb24gaXMKKyAgIHJlcXVpcmVkLiAg
UmV0dXJuIDEgaWYgbWVtb3J5IGlzIGV4aGF1c3RlZC4gICovCitzdGF0aWMgaW50Cit5eV9sYWNf
c3RhY2tfcmVhbGxvYyAoWVlTSVpFX1QgKnl5Y2FwYWNpdHksIFlZU0laRV9UIHl5YWRkLAorI2lm
IF1iNF9hcGlfUFJFRklYW0RFQlVHCisgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAq
eXlkZWJ1Z19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb25zdCAqeXlkZWJ1
Z19zdWZmaXgsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICB5eXR5cGVfaW50MTYgKip5
eWJvdHRvbSwKKyAgICAgICAgICAgICAgICAgICAgICB5eXR5cGVfaW50MTYgKnl5Ym90dG9tX25v
X2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgeXl0eXBlX2ludDE2ICoqeXl0b3AsIHl5dHlw
ZV9pbnQxNiAqeXl0b3BfZW1wdHkpCit7CisgIFlZU0laRV9UIHl5c2l6ZV9vbGQgPQorICAgIChZ
WVNJWkVfVCkgKCp5eXRvcCA9PSB5eXRvcF9lbXB0eSA/IDAgOiAqeXl0b3AgLSAqeXlib3R0b20g
KyAxKTsKKyAgWVlTSVpFX1QgeXlzaXplX25ldyA9IHl5c2l6ZV9vbGQgKyB5eWFkZDsKKyAgaWYg
KCp5eWNhcGFjaXR5IDwgeXlzaXplX25ldykKKyAgICB7CisgICAgICBZWVNJWkVfVCB5eWFsbG9j
ID0gMiAqIHl5c2l6ZV9uZXc7CisgICAgICB5eXR5cGVfaW50MTYgKnl5Ym90dG9tX25ldzsKKyAg
ICAgIC8qIFVzZSBZWU1BWERFUFRIIGZvciBtYXhpbXVtIHN0YWNrIHNpemUgZ2l2ZW4gdGhhdCB0
aGUgc3RhY2sKKyAgICAgICAgIHNob3VsZCBuZXZlciBuZWVkIHRvIGdyb3cgbGFyZ2VyIHRoYW4g
dGhlIG1haW4gc3RhdGUgc3RhY2sKKyAgICAgICAgIG5lZWRzIHRvIGdyb3cgd2l0aG91dCBMQUMu
ICAqLworICAgICAgaWYgKFlZTUFYREVQVEggPCB5eXNpemVfbmV3KQorICAgICAgICB7CisgICAg
ICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiJXNtYXggc2l6ZSBleGNlZWRlZCVzIiwgeXlkZWJ1
Z19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgeXlkZWJ1Z19zdWZmaXgpKTsKKyAgICAg
ICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgaWYgKFlZTUFYREVQVEggPCB5eWFsbG9j
KQorICAgICAgICB5eWFsbG9jID0gWVlNQVhERVBUSDsKKyAgICAgIHl5Ym90dG9tX25ldyA9Cisg
ICAgICAgICh5eXR5cGVfaW50MTYqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jICogc2l6ZW9mICp5
eWJvdHRvbV9uZXcpOworICAgICAgaWYgKCF5eWJvdHRvbV9uZXcpCisgICAgICAgIHsKKyAgICAg
ICAgICBZWURQUklOVEYgKChzdGRlcnIsICIlc3JlYWxsb2MgZmFpbGVkJXMiLCB5eWRlYnVnX3By
ZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICB5eWRlYnVnX3N1ZmZpeCkpOworICAgICAgICAg
IHJldHVybiAxOworICAgICAgICB9CisgICAgICBpZiAoKnl5dG9wICE9IHl5dG9wX2VtcHR5KQor
ICAgICAgICB7CisgICAgICAgICAgWVlDT1BZICh5eWJvdHRvbV9uZXcsICp5eWJvdHRvbSwgeXlz
aXplX29sZCk7CisgICAgICAgICAgKnl5dG9wID0geXlib3R0b21fbmV3ICsgKHl5c2l6ZV9vbGQg
LSAxKTsKKyAgICAgICAgfQorICAgICAgaWYgKCp5eWJvdHRvbSAhPSB5eWJvdHRvbV9ub19mcmVl
KQorICAgICAgICBZWVNUQUNLX0ZSRUUgKCp5eWJvdHRvbSk7CisgICAgICAqeXlib3R0b20gPSB5
eWJvdHRvbV9uZXc7CisgICAgICAqeXljYXBhY2l0eSA9IHl5YWxsb2M7XW00X2lmKGI0X3BlcmNl
bnRfZGVmaW5lX2dldChbW3BhcnNlLmxhYy5tZW1vcnktdHJhY2VdXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtmdWxsXSwgW1sKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIiVzcmVhbGxvYyB0byAlbHUlcyIsIHl5ZGVidWdfcHJlZml4LAorICAgICAgICAgICAgICAg
ICAgKHVuc2lnbmVkIGxvbmcpIHl5YWxsb2MsIHl5ZGVidWdfc3VmZml4KSk7XV0pWworICAgIH0K
KyAgcmV0dXJuIDA7Cit9CisKKy8qIEVzdGFibGlzaCB0aGUgaW5pdGlhbCBjb250ZXh0IGZvciB0
aGUgY3VycmVudCBsb29rYWhlYWQgaWYgbm8gaW5pdGlhbAorICAgY29udGV4dCBpcyBjdXJyZW50
bHkgZXN0YWJsaXNoZWQuCisKKyAgIFdlIGRlZmluZSBhIGNvbnRleHQgYXMgYSBzbmFwc2hvdCBv
ZiB0aGUgcGFyc2VyIHN0YWNrcy4gIFdlIGRlZmluZQorICAgdGhlIGluaXRpYWwgY29udGV4dCBm
b3IgYSBsb29rYWhlYWQgYXMgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlCisgICBwYXJzZXIgaW5p
dGlhbGx5IGV4YW1pbmVzIHRoYXQgbG9va2FoZWFkIGluIG9yZGVyIHRvIHNlbGVjdCBhCisgICBz
eW50YWN0aWMgYWN0aW9uLiAgVGh1cywgaWYgdGhlIGxvb2thaGVhZCBldmVudHVhbGx5IHByb3Zl
cworICAgc3ludGFjdGljYWxseSB1bmFjY2VwdGFibGUgKHBvc3NpYmx5IGluIGEgbGF0ZXIgY29u
dGV4dCByZWFjaGVkIHZpYSBhCisgICBzZXJpZXMgb2YgcmVkdWN0aW9ucyksIHRoZSBpbml0aWFs
IGNvbnRleHQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lCisgICB0aGUgZXhhY3Qgc2V0IG9mIHRv
a2VucyB0aGF0IHdvdWxkIGJlIHN5bnRhY3RpY2FsbHkgYWNjZXB0YWJsZSBpbiB0aGUKKyAgIGxv
b2thaGVhZCdzIHBsYWNlLiAgTW9yZW92ZXIsIGl0IGlzIHRoZSBjb250ZXh0IGFmdGVyIHdoaWNo
IGFueQorICAgZnVydGhlciBzZW1hbnRpYyBhY3Rpb25zIHdvdWxkIGJlIGVycm9uZW91cyBiZWNh
dXNlIHRoZXkgd291bGQgYmUKKyAgIGRldGVybWluZWQgYnkgYSBzeW50YWN0aWNhbGx5IHVuYWNj
ZXB0YWJsZSB0b2tlbi4KKworICAgWVlfTEFDX0VTVEFCTElTSCBzaG91bGQgYmUgaW52b2tlZCB3
aGVuIGEgcmVkdWN0aW9uIGlzIGFib3V0IHRvIGJlCisgICBwZXJmb3JtZWQgaW4gYW4gaW5jb25z
aXN0ZW50IHN0YXRlICh3aGljaCwgZm9yIHRoZSBwdXJwb3NlcyBvZiBMQUMsCisgICBpbmNsdWRl
cyBjb25zaXN0ZW50IHN0YXRlcyB0aGF0IGRvbid0IGtub3cgdGhleSdyZSBjb25zaXN0ZW50IGJl
Y2F1c2UKKyAgIHRoZWlyIGRlZmF1bHQgcmVkdWN0aW9ucyBoYXZlIGJlZW4gZGlzYWJsZWQpLiAg
SWZmIHRoZXJlIGlzIGEKKyAgIGxvb2thaGVhZCB0b2tlbiwgaXQgc2hvdWxkIGFsc28gYmUgaW52
b2tlZCBiZWZvcmUgcmVwb3J0aW5nIGEgc3ludGF4CisgICBlcnJvci4gIFRoaXMgbGF0dGVyIGNh
c2UgaXMgZm9yIHRoZSBzYWtlIG9mIHRoZSBkZWJ1Z2dpbmcgb3V0cHV0LgorCisgICBGb3IgcGFy
c2UubGFjPWZ1bGwsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBZWV9MQUNfRVNUQUJMSVNIIGlzIGFz
CisgICBmb2xsb3dzLiAgSWYgbm8gaW5pdGlhbCBjb250ZXh0IGlzIGN1cnJlbnRseSBlc3RhYmxp
c2hlZCBmb3IgdGhlCisgICBjdXJyZW50IGxvb2thaGVhZCwgdGhlbiBjaGVjayBpZiB0aGF0IGxv
b2thaGVhZCBjYW4gZXZlbnR1YWxseSBiZQorICAgc2hpZnRlZCBpZiBzeW50YWN0aWMgYWN0aW9u
cyBjb250aW51ZSBmcm9tIHRoZSBjdXJyZW50IGNvbnRleHQuCisgICBSZXBvcnQgYSBzeW50YXgg
ZXJyb3IgaWYgaXQgY2Fubm90LiAgKi8KKyNkZWZpbmUgWVlfTEFDX0VTVEFCTElTSCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmICgheXlf
bGFjX2VzdGFibGlzaGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAiTEFDOiBpbml0aWFsIGNv
bnRleHQgZXN0YWJsaXNoZWQgZm9yICVzXG4iLCAgIFwKKyAgICAgICAgICAgICAgICAgIHl5dG5h
bWVbeXl0b2tlbl0pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgeXlfbGFj
X2VzdGFibGlzaGVkID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaW50IHl5X2xhY19zdGF0dXMgPSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIHl5X2xhYyAoeXllc2EsICZ5eWVzLCAmeXll
c19jYXBhY2l0eSwgeXlzc3AsIHl5dG9rZW4pOyBcCisgICAgICAgIGlmICh5eV9sYWNfc3RhdHVz
ID09IDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBnb3Rv
IHl5ZXhoYXVzdGVkbGFiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBpZiAoeXlfbGFjX3N0YXR1cyA9PSAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgZ290byB5eWVycmxhYjsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICgwKQorCisv
KiBEaXNjYXJkIGFueSBwcmV2aW91cyBpbml0aWFsIGxvb2thaGVhZCBjb250ZXh0IGJlY2F1c2Ug
b2YgRXZlbnQsCisgICB3aGljaCBtYXkgYmUgYSBsb29rYWhlYWQgY2hhbmdlIG9yIGFuIGludmFs
aWRhdGlvbiBvZiB0aGUgY3VycmVudGx5CisgICBlc3RhYmxpc2hlZCBpbml0aWFsIGNvbnRleHQg
Zm9yIHRoZSBjdXJyZW50IGxvb2thaGVhZC4KKworICAgVGhlIG1vc3QgY29tbW9uIGV4YW1wbGUg
b2YgYSBsb29rYWhlYWQgY2hhbmdlIGlzIGEgc2hpZnQuICBBbiBleGFtcGxlCisgICBvZiBib3Ro
IGNhc2VzIGlzIHN5bnRheCBlcnJvciByZWNvdmVyeS4gIFRoYXQgaXMsIGEgc3ludGF4IGVycm9y
CisgICBvY2N1cnMgd2hlbiB0aGUgbG9va2FoZWFkIGlzIHN5bnRhY3RpY2FsbHkgZXJyb25lb3Vz
IGZvciB0aGUKKyAgIGN1cnJlbnRseSBlc3RhYmxpc2hlZCBpbml0aWFsIGNvbnRleHQsIHNvIGVy
cm9yIHJlY292ZXJ5IG1hbmlwdWxhdGVzCisgICB0aGUgcGFyc2VyIHN0YWNrcyB0byB0cnkgdG8g
ZmluZCBhIG5ldyBpbml0aWFsIGNvbnRleHQgaW4gd2hpY2ggdGhlCisgICBjdXJyZW50IGxvb2th
aGVhZCBpcyBzeW50YWN0aWNhbGx5IGFjY2VwdGFibGUuICBJZiBpdCBmYWlscyB0byBmaW5kCisg
ICBzdWNoIGEgY29udGV4dCwgaXQgZGlzY2FyZHMgdGhlIGxvb2thaGVhZC4gICovCisjaWYgXWI0
X2FwaV9QUkVGSVhbREVCVUcKKyMgZGVmaW5lIFlZX0xBQ19ESVNDQVJEKEV2ZW50KSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICBpZiAoeXlfbGFjX2VzdGFibGlzaGVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAoeXlkZWJ1Zykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIkxBQzogaW5pdGlhbCBjb250ZXh0IGRpc2NhcmRl
ZCBkdWUgdG8gIiAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBFdmVudCAiXG4iKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB5eV9sYWNfZXN0YWJs
aXNoZWQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKDApCisjZWxzZQorIyBkZWZpbmUgWVlfTEFDX0RJ
U0NBUkQoRXZlbnQpIHl5X2xhY19lc3RhYmxpc2hlZCA9IDAKKyNlbmRpZgorCisvKiBHaXZlbiB0
aGUgc3RhY2sgd2hvc2UgdG9wIGlzICpZWVNTUCwgcmV0dXJuIDAgaWZmIFlZVE9LRU4gY2FuCisg
ICBldmVudHVhbGx5IChhZnRlciBwZXJoYXBzIHNvbWUgcmVkdWN0aW9ucykgYmUgc2hpZnRlZCwg
cmV0dXJuIDEgaWYKKyAgIG5vdCwgb3IgcmV0dXJuIDIgaWYgbWVtb3J5IGlzIGV4aGF1c3RlZC4g
IEFzIHByZWNvbmRpdGlvbnMgYW5kCisgICBwb3N0Y29uZGl0aW9uczogKllZRVNfQ0FQQUNJVFkg
aXMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBhcnJheSB0bworICAgd2hpY2ggKllZRVMgcG9p
bnRzLCBhbmQgZWl0aGVyICpZWUVTID0gWVlFU0Egb3IgKllZRVMgcG9pbnRzIHRvIGFuCisgICBh
cnJheSBhbGxvY2F0ZWQgd2l0aCBZWVNUQUNLX0FMTE9DLiAgeXlfbGFjIG1heSBvdmVyd3JpdGUg
dGhlCisgICBjb250ZW50cyBvZiBlaXRoZXIgYXJyYXksIGFsdGVyICpZWUVTIGFuZCAqWVlFU19D
QVBBQ0lUWSwgYW5kIGZyZWUKKyAgIGFueSBvbGQgKllZRVMgb3RoZXIgdGhhbiBZWUVTQS4gICov
CitzdGF0aWMgaW50Cit5eV9sYWMgKHl5dHlwZV9pbnQxNiAqeXllc2EsIHl5dHlwZV9pbnQxNiAq
Knl5ZXMsCisgICAgICAgIFlZU0laRV9UICp5eWVzX2NhcGFjaXR5LCB5eXR5cGVfaW50MTYgKnl5
c3NwLCBpbnQgeXl0b2tlbikKK3sKKyAgeXl0eXBlX2ludDE2ICp5eWVzX3ByZXYgPSB5eXNzcDsK
KyAgeXl0eXBlX2ludDE2ICp5eWVzcCA9IHl5ZXNfcHJldjsKKyAgWVlEUFJJTlRGICgoc3RkZXJy
LCAiTEFDOiBjaGVja2luZyBsb29rYWhlYWQgJXM6IiwgeXl0bmFtZVt5eXRva2VuXSkpOworICBp
ZiAoeXl0b2tlbiA9PSBZWVVOREVGVE9LKQorICAgIHsKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIiBBbHdheXMgRXJyXG4iKSk7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIHdoaWxlICgx
KQorICAgIHsKKyAgICAgIGludCB5eXJ1bGUgPSB5eXBhY3RbKnl5ZXNwXTsKKyAgICAgIGlmICh5
eXBhY3RfdmFsdWVfaXNfZGVmYXVsdCAoeXlydWxlKQorICAgICAgICAgIHx8ICh5eXJ1bGUgKz0g
eXl0b2tlbikgPCAwIHx8IFlZTEFTVCA8IHl5cnVsZQorICAgICAgICAgIHx8IHl5Y2hlY2tbeXly
dWxlXSAhPSB5eXRva2VuKQorICAgICAgICB7CisgICAgICAgICAgeXlydWxlID0geXlkZWZhY3Rb
Knl5ZXNwXTsKKyAgICAgICAgICBpZiAoeXlydWxlID09IDApCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBFcnJcbiIpKTsKKyAgICAgICAgICAgICAg
cmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgIHl5cnVsZSA9IHl5dGFibGVbeXlydWxlXTsKKyAgICAgICAgICBpZiAoeXl0
YWJsZV92YWx1ZV9pc19lcnJvciAoeXlydWxlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiIEVyclxuIikpOworICAgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBpZiAoMCA8IHl5cnVsZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiIFMlZFxuIiwgeXlydWxlKSk7
CisgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgIHl5cnVs
ZSA9IC15eXJ1bGU7CisgICAgICAgIH0KKyAgICAgIHsKKyAgICAgICAgWVlTSVpFX1QgeXlsZW4g
PSB5eXIyW3l5cnVsZV07CisgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBSJWQiLCB5eXJ1
bGUgLSAxKSk7CisgICAgICAgIGlmICh5eWVzcCAhPSB5eWVzX3ByZXYpCisgICAgICAgICAgewor
ICAgICAgICAgICAgWVlTSVpFX1QgeXlzaXplID0gKFlZU0laRV9UKSAoeXllc3AgLSAqeXllcyAr
IDEpOworICAgICAgICAgICAgaWYgKHl5bGVuIDwgeXlzaXplKQorICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgeXllc3AgLT0geXlsZW47CisgICAgICAgICAgICAgICAgeXlsZW4gPSAw
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB5eWxlbiAtPSB5eXNpemU7CisgICAgICAgICAgICAgICAgeXllc3AgPSB5
eWVzX3ByZXY7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIGlmICh5eWxl
bikKKyAgICAgICAgICB5eWVzcCA9IHl5ZXNfcHJldiAtPSB5eWxlbjsKKyAgICAgIH0KKyAgICAg
IHsKKyAgICAgICAgeXl0eXBlX2ludDE2IHl5c3RhdGU7CisgICAgICAgIHsKKyAgICAgICAgICBj
b25zdCBpbnQgeXlsaHMgPSB5eXIxW3l5cnVsZV0gLSBZWU5UT0tFTlM7CisgICAgICAgICAgY29u
c3QgaW50IHl5aSA9IHl5cGdvdG9beXlsaHNdICsgKnl5ZXNwOworICAgICAgICAgIHl5c3RhdGUg
PSAoKHl5dHlwZV9pbnQxNikKKyAgICAgICAgICAgICAgICAgICAgICgwIDw9IHl5aSAmJiB5eWkg
PD0gWVlMQVNUICYmIHl5Y2hlY2tbeXlpXSA9PSAqeXllc3AKKyAgICAgICAgICAgICAgICAgICAg
ICA/IHl5dGFibGVbeXlpXQorICAgICAgICAgICAgICAgICAgICAgIDogeXlkZWZnb3RvW3l5bGhz
XSkpOworICAgICAgICB9CisgICAgICAgIGlmICh5eWVzcCA9PSB5eWVzX3ByZXYpCisgICAgICAg
ICAgeworICAgICAgICAgICAgeXllc3AgPSAqeXllczsKKyAgICAgICAgICAgICp5eWVzcCA9IHl5
c3RhdGU7CisgICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHl5X2xhY19zdGFja19yZWFsbG9jICh5eWVzX2NhcGFjaXR5LCAxLAorI2lmIF1iNF9h
cGlfUFJFRklYW0RFQlVHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
KCIsICIpIiwKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
eWVzLCB5eWVzYSwgJnl5ZXNwLCB5eWVzX3ByZXYpKQorICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiXG4iKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICorK3l5ZXNwID0geXlzdGF0ZTsK
KyAgICAgICAgICB9CisgICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIiBHJWQiLCAoaW50KSB5
eXN0YXRlKSk7CisgICAgICB9CisgICAgfQorfV1dKVsKKworCisjaWYgWVlFUlJPUl9WRVJCT1NF
CisKKyMgaWZuZGVmIHl5c3RybGVuCisjICBpZiBkZWZpbmVkIF9fR0xJQkNfXyAmJiBkZWZpbmVk
IF9TVFJJTkdfSAorIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4KKyMgIGVsc2UKKy8qIFJldHVy
biB0aGUgbGVuZ3RoIG9mIFlZU1RSLiAgKi8KK11iNF9mdW5jdGlvbl9kZWZpbmUoW3l5c3RybGVu
XSwgW3N0YXRpYyBZWVNJWkVfVF0sCisgICBbW2NvbnN0IGNoYXIgKnl5c3RyXSwgW3l5c3RyXV0p
WworeworICBZWVNJWkVfVCB5eWxlbjsKKyAgZm9yICh5eWxlbiA9IDA7IHl5c3RyW3l5bGVuXTsg
eXlsZW4rKykKKyAgICBjb250aW51ZTsKKyAgcmV0dXJuIHl5bGVuOworfQorIyAgZW5kaWYKKyMg
ZW5kaWYKKworIyBpZm5kZWYgeXlzdHBjcHkKKyMgIGlmIGRlZmluZWQgX19HTElCQ19fICYmIGRl
ZmluZWQgX1NUUklOR19IICYmIGRlZmluZWQgX0dOVV9TT1VSQ0UKKyMgICBkZWZpbmUgeXlzdHBj
cHkgc3RwY3B5CisjICBlbHNlCisvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRo
ZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCisgICBZWURFU1QuICAqLworXWI0
X2Z1bmN0aW9uX2RlZmluZShbeXlzdHBjcHldLCBbc3RhdGljIGNoYXIgKl0sCisgICBbW2NoYXIg
Knl5ZGVzdF0sIFt5eWRlc3RdXSwgW1tjb25zdCBjaGFyICp5eXNyY10sIFt5eXNyY11dKVsKK3sK
KyAgY2hhciAqeXlkID0geXlkZXN0OworICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKKworICB3
aGlsZSAoKCp5eWQrKyA9ICp5eXMrKykgIT0gJ1wwJykKKyAgICBjb250aW51ZTsKKworICByZXR1
cm4geXlkIC0gMTsKK30KKyMgIGVuZGlmCisjIGVuZGlmCisKKyMgaWZuZGVmIHl5dG5hbWVycgor
LyogQ29weSB0byBZWVJFUyB0aGUgY29udGVudHMgb2YgWVlTVFIgYWZ0ZXIgc3RyaXBwaW5nIGF3
YXkgdW5uZWNlc3NhcnkKKyAgIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMsIHNvIHRoYXQgaXQncyBz
dWl0YWJsZSBmb3IgeXllcnJvci4gIFRoZQorICAgaGV1cmlzdGljIGlzIHRoYXQgZG91YmxlLXF1
b3RpbmcgaXMgdW5uZWNlc3NhcnkgdW5sZXNzIHRoZSBzdHJpbmcKKyAgIGNvbnRhaW5zIGFuIGFw
b3N0cm9waGUsIGEgY29tbWEsIG9yIGJhY2tzbGFzaCAob3RoZXIgdGhhbgorICAgYmFja3NsYXNo
LWJhY2tzbGFzaCkuICBZWVNUUiBpcyB0YWtlbiBmcm9tIHl5dG5hbWUuICBJZiBZWVJFUyBpcwor
ICAgbnVsbCwgZG8gbm90IGNvcHk7IGluc3RlYWQsIHJldHVybiB0aGUgbGVuZ3RoIG9mIHdoYXQg
dGhlIHJlc3VsdAorICAgd291bGQgaGF2ZSBiZWVuLiAgKi8KK3N0YXRpYyBZWVNJWkVfVAoreXl0
bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCit7CisgIGlmICgqeXlzdHIg
PT0gJyInKQorICAgIHsKKyAgICAgIFlZU0laRV9UIHl5biA9IDA7CisgICAgICBjaGFyIGNvbnN0
ICp5eXAgPSB5eXN0cjsKKworICAgICAgZm9yICg7OykKKyAgICAgICAgc3dpdGNoICgqKyt5eXAp
CisgICAgICAgICAgeworICAgICAgICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgICBjYXNlICcsJzoK
KyAgICAgICAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKworICAgICAgICAgIGNhc2Ug
J1xcJzoKKyAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKyAgICAgICAgICAgICAgZ290
byBkb19ub3Rfc3RyaXBfcXVvdGVzOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBn
b3RvIGFwcGVuZDsKKworICAgICAgICAgIGFwcGVuZDoKKyAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgaWYgKHl5cmVzKQorICAgICAgICAgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKKyAg
ICAgICAgICAgIHl5bisrOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlICci
JzoKKyAgICAgICAgICAgIGlmICh5eXJlcykKKyAgICAgICAgICAgICAgeXlyZXNbeXluXSA9ICdc
MCc7CisgICAgICAgICAgICByZXR1cm4geXluOworICAgICAgICAgIH0KKyAgICBkb19ub3Rfc3Ry
aXBfcXVvdGVzOiA7CisgICAgfQorCisgIGlmICghIHl5cmVzKQorICAgIHJldHVybiB5eXN0cmxl
biAoeXlzdHIpOworCisgIHJldHVybiAoWVlTSVpFX1QpICh5eXN0cGNweSAoeXlyZXMsIHl5c3Ry
KSAtIHl5cmVzKTsKK30KKyMgZW5kaWYKKworLyogQ29weSBpbnRvICpZWU1TRywgd2hpY2ggaXMg
b2Ygc2l6ZSAqWVlNU0dfQUxMT0MsIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IHRoZSB1bmV4
cGVjdGVkIHRva2VuIFlZVE9LRU4gZm9yIHRoZSBzdGF0ZSBzdGFjayB3aG9zZSB0b3AgaXMKKyAg
IFlZU1NQLl1iNF9sYWNfaWYoW1sgIEluIG9yZGVyIHRvIHNlZSBpZiBhIHBhcnRpY3VsYXIgdG9r
ZW4gVCBpcyBhCisgICB2YWxpZCBsb29ha2hlYWQsIGludm9rZSB5eV9sYWMgKFlZRVNBLCBZWUVT
LCBZWUVTX0NBUEFDSVRZLCBZWVNTUCwgVCkuXV0pWworCisgICBSZXR1cm4gMCBpZiAqWVlNU0cg
d2FzIHN1Y2Nlc3NmdWxseSB3cml0dGVuLiAgUmV0dXJuIDEgaWYgKllZTVNHIGlzCisgICBub3Qg
bGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIG1lc3NhZ2UuICBJbiB0aGF0IGNhc2UsIGFsc28gc2V0
CisgICAqWVlNU0dfQUxMT0MgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBieXRlcy4gIFJldHVy
biAyIGlmIHRoZQorICAgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGlzIHRvbyBsYXJnZSB0byBz
dG9yZV1iNF9sYWNfaWYoW1sgb3IgaWYKKyAgIHl5X2xhYyByZXR1cm5lZCAyXV0pWy4gICovCitz
dGF0aWMgaW50Cit5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoq
eXltc2csCisgICAgICAgICAgICAgICAgXWI0X2xhY19pZihbW3l5dHlwZV9pbnQxNiAqeXllc2Es
IHl5dHlwZV9pbnQxNiAqKnl5ZXMsCisgICAgICAgICAgICAgICAgWVlTSVpFX1QgKnl5ZXNfY2Fw
YWNpdHksIF1dKVt5eXR5cGVfaW50MTYgKnl5c3NwLCBpbnQgeXl0b2tlbikKK3sKKyAgWVlTSVpF
X1QgeXlzaXplMCA9IHl5dG5hbWVyciAoWVlfTlVMTFBUUiwgeXl0bmFtZVt5eXRva2VuXSk7Cisg
IFlZU0laRV9UIHl5c2l6ZSA9IHl5c2l6ZTA7CisgIGVudW0geyBZWUVSUk9SX1ZFUkJPU0VfQVJH
U19NQVhJTVVNID0gNSB9OworICAvKiBJbnRlcm5hdGlvbmFsaXplZCBmb3JtYXQgc3RyaW5nLiAq
LworICBjb25zdCBjaGFyICp5eWZvcm1hdCA9IFlZX05VTExQVFI7CisgIC8qIEFyZ3VtZW50cyBv
ZiB5eWZvcm1hdC4gKi8KKyAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FSR1Nf
TUFYSU1VTV07CisgIC8qIE51bWJlciBvZiByZXBvcnRlZCB0b2tlbnMgKG9uZSBmb3IgdGhlICJ1
bmV4cGVjdGVkIiwgb25lIHBlcgorICAgICAiZXhwZWN0ZWQiKS4gKi8KKyAgaW50IHl5Y291bnQg
PSAwOworCisgIC8qIFRoZXJlIGFyZSBtYW55IHBvc3NpYmlsaXRpZXMgaGVyZSB0byBjb25zaWRl
cjoKKyAgICAgLSBJZiB0aGlzIHN0YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVm
YXVsdCBhY3Rpb24sIHRoZW4KKyAgICAgICB0aGUgb25seSB3YXkgdGhpcyBmdW5jdGlvbiB3YXMg
aW52b2tlZCBpcyBpZiB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgICAgICBpcyBhbiBlcnJvciBhY3Rp
b24uICBJbiB0aGF0IGNhc2UsIGRvbid0IGNoZWNrIGZvciBleHBlY3RlZAorICAgICAgIHRva2Vu
cyBiZWNhdXNlIHRoZXJlIGFyZSBub25lLgorICAgICAtIFRoZSBvbmx5IHdheSB0aGVyZSBjYW4g
YmUgbm8gbG9va2FoZWFkIHByZXNlbnQgKGluIHl5Y2hhcikgaXMgaWYKKyAgICAgICB0aGlzIHN0
YXRlIGlzIGEgY29uc2lzdGVudCBzdGF0ZSB3aXRoIGEgZGVmYXVsdCBhY3Rpb24uICBUaHVzLAor
ICAgICAgIGRldGVjdGluZyB0aGUgYWJzZW5jZSBvZiBhIGxvb2thaGVhZCBpcyBzdWZmaWNpZW50
IHRvIGRldGVybWluZQorICAgICAgIHRoYXQgdGhlcmUgaXMgbm8gdW5leHBlY3RlZCBvciBleHBl
Y3RlZCB0b2tlbiB0byByZXBvcnQuICBJbiB0aGF0CisgICAgICAgY2FzZSwganVzdCByZXBvcnQg
YSBzaW1wbGUgInN5bnRheCBlcnJvciIuCisgICAgIC0gRG9uJ3QgYXNzdW1lIHRoZXJlIGlzbid0
IGEgbG9va2FoZWFkIGp1c3QgYmVjYXVzZSB0aGlzIHN0YXRlIGlzIGEKKyAgICAgICBjb25zaXN0
ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbi4gIFRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBh
CisgICAgICAgcHJldmlvdXMgaW5jb25zaXN0ZW50IHN0YXRlLCBjb25zaXN0ZW50IHN0YXRlIHdp
dGggYSBub24tZGVmYXVsdAorICAgICAgIGFjdGlvbiwgb3IgdXNlciBzZW1hbnRpYyBhY3Rpb24g
dGhhdCBtYW5pcHVsYXRlZCB5eWNoYXIuXWI0X2xhY19pZihbWworICAgICAgIEluIHRoZSBmaXJz
dCB0d28gY2FzZXMsIGl0IG1pZ2h0IGFwcGVhciB0aGF0IHRoZSBjdXJyZW50IHN5bnRheAorICAg
ICAgIGVycm9yIHNob3VsZCBoYXZlIGJlZW4gZGV0ZWN0ZWQgaW4gdGhlIHByZXZpb3VzIHN0YXRl
IHdoZW4geXlfbGFjCisgICAgICAgd2FzIGludm9rZWQuICBIb3dldmVyLCBhdCB0aGF0IHRpbWUs
IHRoZXJlIG1pZ2h0IGhhdmUgYmVlbiBhCisgICAgICAgZGlmZmVyZW50IHN5bnRheCBlcnJvciB0
aGF0IGRpc2NhcmRlZCBhIGRpZmZlcmVudCBpbml0aWFsIGNvbnRleHQKKyAgICAgICBkdXJpbmcg
ZXJyb3IgcmVjb3ZlcnksIGxlYXZpbmcgYmVoaW5kIHRoZSBjdXJyZW50IGxvb2thaGVhZC5dXSwg
W1sKKyAgICAgLSBPZiBjb3Vyc2UsIHRoZSBleHBlY3RlZCB0b2tlbiBsaXN0IGRlcGVuZHMgb24g
c3RhdGVzIHRvIGhhdmUKKyAgICAgICBjb3JyZWN0IGxvb2thaGVhZCBpbmZvcm1hdGlvbiwgYW5k
IGl0IGRlcGVuZHMgb24gdGhlIHBhcnNlciBub3QKKyAgICAgICB0byBwZXJmb3JtIGV4dHJhIHJl
ZHVjdGlvbnMgYWZ0ZXIgZmV0Y2hpbmcgYSBsb29rYWhlYWQgZnJvbSB0aGUKKyAgICAgICBzY2Fu
bmVyIGFuZCBiZWZvcmUgZGV0ZWN0aW5nIGEgc3ludGF4IGVycm9yLiAgVGh1cywgc3RhdGUgbWVy
Z2luZworICAgICAgIChmcm9tIExBTFIgb3IgSUVMUikgYW5kIGRlZmF1bHQgcmVkdWN0aW9ucyBj
b3JydXB0IHRoZSBleHBlY3RlZAorICAgICAgIHRva2VuIGxpc3QuICBIb3dldmVyLCB0aGUgbGlz
dCBpcyBjb3JyZWN0IGZvciBjYW5vbmljYWwgTFIgd2l0aAorICAgICAgIG9uZSBleGNlcHRpb246
IGl0IHdpbGwgc3RpbGwgY29udGFpbiBhbnkgdG9rZW4gdGhhdCB3aWxsIG5vdCBiZQorICAgICAg
IGFjY2VwdGVkIGR1ZSB0byBhbiBlcnJvciBhY3Rpb24gaW4gYSBsYXRlciBzdGF0ZS5dXSlbCisg
ICovCisgIGlmICh5eXRva2VuICE9IFlZRU1QVFkpCisgICAgeworICAgICAgaW50IHl5biA9IHl5
cGFjdFsqeXlzc3BdO11iNF9sYWNfaWYoW1sKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkNv
bnN0cnVjdGluZyBzeW50YXggZXJyb3IgbWVzc2FnZVxuIikpO11dKVsKKyAgICAgIHl5YXJnW3l5
Y291bnQrK10gPSB5eXRuYW1lW3l5dG9rZW5dOworICAgICAgaWYgKCF5eXBhY3RfdmFsdWVfaXNf
ZGVmYXVsdCAoeXluKSkKKyAgICAgICAge11iNF9sYWNfaWYoW10sIFtbCisgICAgICAgICAgLyog
U3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBp
bgorICAgICAgICAgICAgIFlZQ0hFQ0suICBJbiBvdGhlciB3b3Jkcywgc2tpcCB0aGUgZmlyc3Qg
LVlZTiBhY3Rpb25zIGZvcgorICAgICAgICAgICAgIHRoaXMgc3RhdGUgYmVjYXVzZSB0aGV5IGFy
ZSBkZWZhdWx0IGFjdGlvbnMuICAqLworICAgICAgICAgIGludCB5eXhiZWdpbiA9IHl5biA8IDAg
PyAteXluIDogMDsKKyAgICAgICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNo
ZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAgICAgICAgICBpbnQgeXljaGVja2xpbSA9IFlZTEFTVCAt
IHl5biArIDE7CisgICAgICAgICAgaW50IHl5eGVuZCA9IHl5Y2hlY2tsaW0gPCBZWU5UT0tFTlMg
PyB5eWNoZWNrbGltIDogWVlOVE9LRU5TO11dKVsKKyAgICAgICAgICBpbnQgeXl4O11iNF9sYWNf
aWYoW1sKKworICAgICAgICAgIGZvciAoeXl4ID0gMDsgeXl4IDwgWVlOVE9LRU5TOyArK3l5eCkK
KyAgICAgICAgICAgIGlmICh5eXggIT0gWVlURVJST1IgJiYgeXl4ICE9IFlZVU5ERUZUT0spCisg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpbnQg
eXlfbGFjX3N0YXR1cyA9IHl5X2xhYyAoeXllc2EsIHl5ZXMsIHl5ZXNfY2FwYWNpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlzc3AsIHl5eCk7Cisg
ICAgICAgICAgICAgICAgICBpZiAoeXlfbGFjX3N0YXR1cyA9PSAyKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgIGlmICh5eV9sYWNfc3RhdHVzID09IDEp
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH1dXSwgW1sK
KworICAgICAgICAgIGZvciAoeXl4ID0geXl4YmVnaW47IHl5eCA8IHl5eGVuZDsgKyt5eXgpCisg
ICAgICAgICAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJS
T1IKKyAgICAgICAgICAgICAgICAmJiAheXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXl0YWJsZVt5
eXggKyB5eW5dKSkKKyAgICAgICAgICAgICAge11dKVsKKyAgICAgICAgICAgICAgICBpZiAoeXlj
b3VudCA9PSBZWUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNKQorICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICB5eWNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
eXlzaXplID0geXlzaXplMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgeXlhcmdbeXljb3VudCsrXSA9IHl5dG5hbWVbeXl4
XTsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBZWVNJWkVfVCB5eXNpemUx
ID0geXlzaXplICsgeXl0bmFtZXJyIChZWV9OVUxMUFRSLCB5eXRuYW1lW3l5eF0pOworICAgICAg
ICAgICAgICAgICAgaWYgKHl5c2l6ZSA8PSB5eXNpemUxICYmIHl5c2l6ZTEgPD0gWVlTVEFDS19B
TExPQ19NQVhJTVVNKQorICAgICAgICAgICAgICAgICAgICB5eXNpemUgPSB5eXNpemUxOworICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgfV1iNF9sYWNfaWYoW1sKKyMg
aWYgXWI0X2FwaV9QUkVGSVhbREVCVUcKKyAgICAgIGVsc2UgaWYgKHl5ZGVidWcpCisgICAgICAg
IFlZRlBSSU5URiAoc3RkZXJyLCAiTm8gZXhwZWN0ZWQgdG9rZW5zLlxuIik7CisjIGVuZGlmXV0p
WworICAgIH0KKworICBzd2l0Y2ggKHl5Y291bnQpCisgICAgeworIyBkZWZpbmUgWVlDQVNFXyhO
LCBTKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBjYXNlIE46ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeXlmb3JtYXQgPSBTOyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgYnJlYWsKKyAgICBkZWZhdWx0OiAvKiBBdm9pZCBjb21waWxlciB3YXJu
aW5ncy4gKi8KKyAgICAgIFlZQ0FTRV8oMCwgWVlfKCJzeW50YXggZXJyb3IiKSk7CisgICAgICBZ
WUNBU0VfKDEsIFlZXygic3ludGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIikpOworICAgICAgWVlD
QVNFXygyLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIikp
OworICAgICAgWVlDQVNFXygzLCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhw
ZWN0aW5nICVzIG9yICVzIikpOworICAgICAgWVlDQVNFXyg0LCBZWV8oInN5bnRheCBlcnJvciwg
dW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIikpOworICAgICAgWVlDQVNF
Xyg1LCBZWV8oInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVz
IG9yICVzIG9yICVzIikpOworIyB1bmRlZiBZWUNBU0VfCisgICAgfQorCisgIHsKKyAgICBZWVNJ
WkVfVCB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zm9ybWF0KTsKKyAgICBpZiAoeXlz
aXplIDw9IHl5c2l6ZTEgJiYgeXlzaXplMSA8PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pCisgICAg
ICB5eXNpemUgPSB5eXNpemUxOworICAgIGVsc2UKKyAgICAgIHJldHVybiAyOworICB9CisKKyAg
aWYgKCp5eW1zZ19hbGxvYyA8IHl5c2l6ZSkKKyAgICB7CisgICAgICAqeXltc2dfYWxsb2MgPSAy
ICogeXlzaXplOworICAgICAgaWYgKCEgKHl5c2l6ZSA8PSAqeXltc2dfYWxsb2MKKyAgICAgICAg
ICAgICAmJiAqeXltc2dfYWxsb2MgPD0gWVlTVEFDS19BTExPQ19NQVhJTVVNKSkKKyAgICAgICAg
Knl5bXNnX2FsbG9jID0gWVlTVEFDS19BTExPQ19NQVhJTVVNOworICAgICAgcmV0dXJuIDE7Cisg
ICAgfQorCisgIC8qIEF2b2lkIHNwcmludGYsIGFzIHRoYXQgaW5mcmluZ2VzIG9uIHRoZSB1c2Vy
J3MgbmFtZSBzcGFjZS4KKyAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBp
ZiB0aGUgdHJhbnNsYXRpb24KKyAgICAgcHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3Jvbmcg
bnVtYmVyIG9mICIlcyJzLiAgKi8KKyAgeworICAgIGNoYXIgKnl5cCA9ICp5eW1zZzsKKyAgICBp
bnQgeXlpID0gMDsKKyAgICB3aGlsZSAoKCp5eXAgPSAqeXlmb3JtYXQpICE9ICdcMCcpCisgICAg
ICBpZiAoKnl5cCA9PSAnJScgJiYgeXlmb3JtYXRbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQp
CisgICAgICAgIHsKKyAgICAgICAgICB5eXAgKz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsr
XSk7CisgICAgICAgICAgeXlmb3JtYXQgKz0gMjsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgeXlwKys7CisgICAgICAgICAgeXlmb3JtYXQrKzsKKyAgICAgICAg
fQorICB9CisgIHJldHVybiAwOworfQorI2VuZGlmIC8qIFlZRVJST1JfVkVSQk9TRSAqLworCitd
YjRfeXlkZXN0cnVjdF9kZWZpbmVbCisKK11iNF9wdXJlX2lmKFtdLCBbCisKK2I0X2RlY2xhcmVf
c2Nhbm5lcl9jb21tdW5pY2F0aW9uX3ZhcmlhYmxlc10pW11iNF9wdXNoX2lmKFtbCisKK3N0cnVj
dCB5eXBzdGF0ZQorICB7XWI0X2RlY2xhcmVfcGFyc2VyX3N0YXRlX3ZhcmlhYmxlc1sKKyAgICAv
KiBVc2VkIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRoaXMgaW5zdGFu
Y2UgaGFzCisgICAgICAgYmVlbiB1c2VkLiAgKi8KKyAgICBpbnQgeXluZXc7CisgIH07XWI0X3B1
cmVfaWYoW10sIFtbCisKK3N0YXRpYyBjaGFyIHl5cHN0YXRlX2FsbG9jYXRlZCA9IDA7XV0pYjRf
cHVsbF9pZihbCisKK2I0X2Z1bmN0aW9uX2RlZmluZShbW3l5cGFyc2VdXSwgW1tpbnRdXSwgYjRf
cGFyc2VfcGFyYW0pWworeworICByZXR1cm4geXlwdWxsX3BhcnNlIChZWV9OVUxMUFRSXW00X2lm
c2V0KFtiNF9wYXJzZV9wYXJhbV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W1ssIF1iNF9hcmdzKGI0X3BhcnNlX3BhcmFtKV0pWyk7Cit9CisKK11iNF9mdW5jdGlvbl9kZWZp
bmUoW1t5eXB1bGxfcGFyc2VdXSwgW1tpbnRdXSwKKyAgW1tbeXlwc3RhdGUgKnl5cHNdXSwgW1t5
eXBzXV1dbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywKKyAgYjRfcGFyc2VfcGFyYW1dKSlb
Cit7XWI0X3B1cmVfaWYoW2I0X2xvY2F0aW9uc19pZihbWworICBzdGF0aWMgWVlMVFlQRSB5eWxv
Y19kZWZhdWx0XVtdYjRfeXlsb2NfZGVmYXVsdFs7CisgIFlZTFRZUEUgeXlsbG9jID0geXlsb2Nf
ZGVmYXVsdDtdXSldKVsKKyAgeXlwc3RhdGUgKnl5cHNfbG9jYWw7CisgIGlmICh5eXBzKQorICAg
IHl5cHNfbG9jYWwgPSB5eXBzOworICBlbHNlCisgICAgeworICAgICAgeXlwc19sb2NhbCA9IHl5
cHN0YXRlX25ldyAoKTsKKyAgICAgIGlmICgheXlwc19sb2NhbCkKKyAgICAgICAge11iNF9wdXJl
X2lmKFtbCisgICAgICAgICAgeXllcnJvciAoXWI0X3l5ZXJyb3JfYXJnc1tZWV8oIm1lbW9yeSBl
eGhhdXN0ZWQiKSk7XV0sIFtbCisgICAgICAgICAgaWYgKCF5eXBzdGF0ZV9hbGxvY2F0ZWQpCisg
ICAgICAgICAgICB5eWVycm9yIChdYjRfeXllcnJvcl9hcmdzW1lZXygibWVtb3J5IGV4aGF1c3Rl
ZCIpKTtdXSlbCisgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0KKyAgICB9CisgIGludCB5
eXN0YXR1czsKKyAgZG8ge11iNF9wdXJlX2lmKFtbCisgICAgWVlTVFlQRSB5eWx2YWw7CisgICAg
aW50IF1dKVt5eWNoYXIgPSBdYjRfbGV4WzsKKyAgICB5eXN0YXR1cyA9CisgICAgICB5eXB1c2hf
cGFyc2UgKHl5cHNfbG9jYWxdYjRfcHVyZV9pZihbWywgeXljaGFyLCAmeXlsdmFsXWI0X2xvY2F0
aW9uc19pZihbWywgJnl5bGxvY11dKV0pbTRfaWZzZXQoW2I0X3BhcnNlX3BhcmFtXSwgWywgYjRf
YXJncyhiNF9wYXJzZV9wYXJhbSldKVspOworICB9IHdoaWxlICh5eXN0YXR1cyA9PSBZWVBVU0hf
TU9SRSk7CisgIGlmICgheXlwcykKKyAgICB5eXBzdGF0ZV9kZWxldGUgKHl5cHNfbG9jYWwpOwor
ICByZXR1cm4geXlzdGF0dXM7Cit9XV0pWworCisvKiBJbml0aWFsaXplIHRoZSBwYXJzZXIgZGF0
YSBzdHJ1Y3R1cmUuICAqLworXWI0X2Z1bmN0aW9uX2RlZmluZShbW3l5cHN0YXRlX25ld11dLCBb
W3l5cHN0YXRlICpdXSlbCit7CisgIHl5cHN0YXRlICp5eXBzO11iNF9wdXJlX2lmKFtdLCBbWwor
ICBpZiAoeXlwc3RhdGVfYWxsb2NhdGVkKQorICAgIHJldHVybiBZWV9OVUxMUFRSO11dKVsKKyAg
eXlwcyA9ICh5eXBzdGF0ZSAqKSBtYWxsb2MgKHNpemVvZiAqeXlwcyk7CisgIGlmICgheXlwcykK
KyAgICByZXR1cm4gWVlfTlVMTFBUUjsKKyAgeXlwcy0+eXluZXcgPSAxO11iNF9wdXJlX2lmKFtd
LCBbWworICB5eXBzdGF0ZV9hbGxvY2F0ZWQgPSAxO11dKVsKKyAgcmV0dXJuIHl5cHM7Cit9CisK
K11iNF9mdW5jdGlvbl9kZWZpbmUoW1t5eXBzdGF0ZV9kZWxldGVdXSwgW1t2b2lkXV0sCisgICAg
ICAgICAgICAgICAgICAgW1tbeXlwc3RhdGUgKnl5cHNdXSwgW1t5eXBzXV1dKVsKK3sKKyAgaWYg
KHl5cHMpCisgICAgeworI2lmbmRlZiB5eW92ZXJmbG93CisgICAgICAvKiBJZiB0aGUgc3RhY2sg
d2FzIHJlYWxsb2NhdGVkIGJ1dCB0aGUgcGFyc2UgZGlkIG5vdCBjb21wbGV0ZSwgdGhlbiB0aGUK
KyAgICAgICAgIHN0YWNrIHN0aWxsIG5lZWRzIHRvIGJlIGZyZWVkLiAgKi8KKyAgICAgIGlmICgh
eXlwcy0+eXluZXcgJiYgeXlwcy0+eXlzcyAhPSB5eXBzLT55eXNzYSkKKyAgICAgICAgWVlTVEFD
S19GUkVFICh5eXBzLT55eXNzKTsKKyNlbmRpZl1iNF9sYWNfaWYoW1sKKyAgICAgIGlmICgheXlw
cy0+eXluZXcgJiYgeXlwcy0+eXllcyAhPSB5eXBzLT55eWVzYSkKKyAgICAgICAgWVlTVEFDS19G
UkVFICh5eXBzLT55eWVzKTtdXSlbCisgICAgICBmcmVlICh5eXBzKTtdYjRfcHVyZV9pZihbXSwg
W1sKKyAgICAgIHl5cHN0YXRlX2FsbG9jYXRlZCA9IDA7XV0pWworICAgIH0KK30KK11iNF9wdXJl
X2lmKFtbCisjZGVmaW5lIF1iNF9wcmVmaXhbbmVycnMgeXlwcy0+XWI0X3ByZWZpeFtuZXJyc11d
KVsKKyNkZWZpbmUgeXlzdGF0ZSB5eXBzLT55eXN0YXRlCisjZGVmaW5lIHl5ZXJyc3RhdHVzIHl5
cHMtPnl5ZXJyc3RhdHVzCisjZGVmaW5lIHl5c3NhIHl5cHMtPnl5c3NhCisjZGVmaW5lIHl5c3Mg
eXlwcy0+eXlzcworI2RlZmluZSB5eXNzcCB5eXBzLT55eXNzcAorI2RlZmluZSB5eXZzYSB5eXBz
LT55eXZzYQorI2RlZmluZSB5eXZzIHl5cHMtPnl5dnMKKyNkZWZpbmUgeXl2c3AgeXlwcy0+eXl2
c3BdYjRfbG9jYXRpb25zX2lmKFtbCisjZGVmaW5lIHl5bHNhIHl5cHMtPnl5bHNhCisjZGVmaW5l
IHl5bHMgeXlwcy0+eXlscworI2RlZmluZSB5eWxzcCB5eXBzLT55eWxzcAorI2RlZmluZSB5eWVy
cm9yX3JhbmdlIHl5cHMtPnl5ZXJyb3JfcmFuZ2VdXSlbCisjZGVmaW5lIHl5c3RhY2tzaXplIHl5
cHMtPnl5c3RhY2tzaXplXWI0X2xhY19pZihbWworI2RlZmluZSB5eWVzYSB5eXBzLT55eWVzYQor
I2RlZmluZSB5eWVzIHl5cHMtPnl5ZXMKKyNkZWZpbmUgeXllc19jYXBhY2l0eSB5eXBzLT55eWVz
X2NhcGFjaXR5XV0pWworCisKKy8qLS0tLS0tLS0tLS0tLS0tLgorfCB5eXB1c2hfcGFyc2UuICB8
CitgLS0tLS0tLS0tLS0tLS0tKi8KKworXWI0X2Z1bmN0aW9uX2RlZmluZShbW3l5cHVzaF9wYXJz
ZV1dLCBbW2ludF1dLAorICBbW1t5eXBzdGF0ZSAqeXlwc11dLCBbW3l5cHNdXV1iNF9wdXJlX2lm
KFssCisgIFtbW2ludCB5eXB1c2hlZF9jaGFyXV0sIFtbeXlwdXNoZWRfY2hhcl1dXSwKKyAgW1tb
WVlTVFlQRSBjb25zdCAqeXlwdXNoZWRfdmFsXV0sIFtbeXlwdXNoZWRfdmFsXV1dYjRfbG9jYXRp
b25zX2lmKFssCisgIFtbW1lZTFRZUEUgKnl5cHVzaGVkX2xvY11dLCBbW3l5cHVzaGVkX2xvY11d
XV0pXSltNF9pZnNldChbYjRfcGFyc2VfcGFyYW1dLCBbLAorICBiNF9wYXJzZV9wYXJhbV0pKV0s
IFtbCisKKworLyotLS0tLS0tLS0tLgorfCB5eXBhcnNlLiAgfAorYC0tLS0tLS0tLS0qLworCitd
YjRfZnVuY3Rpb25fZGVmaW5lKFt5eXBhcnNlXSwgW2ludF0sIGI0X3BhcnNlX3BhcmFtKV0pWwor
e11iNF9wdXJlX2lmKFtiNF9kZWNsYXJlX3NjYW5uZXJfY29tbXVuaWNhdGlvbl92YXJpYWJsZXMK
K10pYjRfcHVzaF9pZihbYjRfcHVyZV9pZihbXSwgW1sKKyAgaW50IHl5cHVzaGVkX2NoYXIgPSB5
eWNoYXI7CisgIFlZU1RZUEUgeXlwdXNoZWRfdmFsID0geXlsdmFsO11iNF9sb2NhdGlvbnNfaWYo
W1sKKyAgWVlMVFlQRSB5eXB1c2hlZF9sb2MgPSB5eWxsb2M7XV0pCitdKV0sCisgIFtiNF9kZWNs
YXJlX3BhcnNlcl9zdGF0ZV92YXJpYWJsZXMKK10pYjRfbGFjX2lmKFtbCisgIGludCB5eV9sYWNf
ZXN0YWJsaXNoZWQgPSAwO11dKVsKKyAgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBM
b29rYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4g
ICovCisgIGludCB5eXRva2VuID0gMDsKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVy
biBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRp
bmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDtdYjRfbG9jYXRpb25zX2lmKFtbCisgIFlZTFRZUEUg
eXlsb2M7XV0pWworCisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIC8qIEJ1ZmZlciBmb3IgZXJyb3Ig
bWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUuICAqLworICBjaGFyIHl5bXNnYnVmWzEy
OF07CisgIGNoYXIgKnl5bXNnID0geXltc2didWY7CisgIFlZU0laRV9UIHl5bXNnX2FsbG9jID0g
c2l6ZW9mIHl5bXNnYnVmOworI2VuZGlmCisKKyNkZWZpbmUgWVlQT1BTVEFDSyhOKSAgICh5eXZz
cCAtPSAoTiksIHl5c3NwIC09IChOKV1iNF9sb2NhdGlvbnNfaWYoWywgeXlsc3AgLT0gKE4pXSlb
KQorCisgIC8qIFRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2Vk
IHJ1bGUuCisgICAgIEtlZXAgdG8gemVybyB3aGVuIG5vIHN5bWJvbCBzaG91bGQgYmUgcG9wcGVk
LiAgKi8KKyAgaW50IHl5bGVuID0gMDtdYjRfcHVzaF9pZihbWworCisgIGlmICgheXlwcy0+eXlu
ZXcpCisgICAgeworICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOworICAgICAgZ290byB5eXJl
YWRfcHVzaGVkX3Rva2VuOworICAgIH1dXSlbCisKKyAgeXlzc3AgPSB5eXNzID0geXlzc2E7Cisg
IHl5dnNwID0geXl2cyA9IHl5dnNhO11iNF9sb2NhdGlvbnNfaWYoW1sKKyAgeXlsc3AgPSB5eWxz
ID0geXlsc2E7XV0pWworICB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIO11iNF9sYWNfaWYoW1sK
KworICB5eWVzID0geXllc2E7CisgIHl5ZXNfY2FwYWNpdHkgPSBzaXplb2YgeXllc2EgLyBzaXpl
b2YgKnl5ZXM7CisgIGlmIChZWU1BWERFUFRIIDwgeXllc19jYXBhY2l0eSkKKyAgICB5eWVzX2Nh
cGFjaXR5ID0gWVlNQVhERVBUSDtdXSlbCisKKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhcnRp
bmcgcGFyc2VcbiIpKTsKKworICB5eXN0YXRlID0gMDsKKyAgeXllcnJzdGF0dXMgPSAwOworICB5
eW5lcnJzID0gMDsKKyAgeXljaGFyID0gWVlFTVBUWTsgLyogQ2F1c2UgYSB0b2tlbiB0byBiZSBy
ZWFkLiAgKi8KK11tNF9pZmRlZihbYjRfaW5pdGlhbF9hY3Rpb25dLCBbCitiNF9kb2xsYXJfcHVz
aGRlZihbbTRfZGVmaW5lKFtiNF9kb2xsYXJfZG9sbGFyX3VzZWRdKXl5bHZhbF0sIFtdLCBbXSwK
KyAgICAgICAgICAgICAgICAgIFtiNF9wdXNoX2lmKFtiNF9wdXJlX2lmKFsqXSl5eXB1c2hlZF9s
b2NdLCBbeXlsbG9jXSldKWRubAorYjRfdXNlcl9pbml0aWFsX2FjdGlvbgorYjRfZG9sbGFyX3Bv
cGRlZltdZG5sCittNF9pZmRlZihbYjRfZG9sbGFyX2RvbGxhcl91c2VkXSxbWyAgeXl2c3BbMF0g
PSB5eWx2YWw7CitdXSldKWRubAorYjRfbG9jYXRpb25zX2lmKFtbICB5eWxzcFswXSA9IF1iNF9w
dXNoX2lmKFtiNF9wdXJlX2lmKFsqXSl5eXB1c2hlZF9sb2NdLCBbeXlsbG9jXSlbOworXV0pZG5s
CitbICBnb3RvIHl5c2V0c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5bmV3c3RhdGUgLS0gcHVzaCBh
IG5ldyBzdGF0ZSwgd2hpY2ggaXMgZm91bmQgaW4geXlzdGF0ZS4gIHwKK2AtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXluZXdz
dGF0ZToKKyAgLyogSW4gYWxsIGNhc2VzLCB3aGVuIHlvdSBnZXQgaGVyZSwgdGhlIHZhbHVlIGFu
ZCBsb2NhdGlvbiBzdGFja3MKKyAgICAgaGF2ZSBqdXN0IGJlZW4gcHVzaGVkLiAgU28gcHVzaGlu
ZyBhIHN0YXRlIGhlcmUgZXZlbnMgdGhlIHN0YWNrcy4gICovCisgIHl5c3NwKys7CisKKworLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgeXluZXdzdGF0ZSAtLSBzZXQgY3VycmVudCBzdGF0ZSAodGhlIHRvcCBv
ZiB0aGUgc3RhY2spIHRvIHl5c3RhdGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlzZXRzdGF0ZToK
KyAgKnl5c3NwID0gKHl5dHlwZV9pbnQxNikgeXlzdGF0ZTsKKworICBpZiAoeXlzcyArIHl5c3Rh
Y2tzaXplIC0gMSA8PSB5eXNzcCkKKyNpZiAhZGVmaW5lZCB5eW92ZXJmbG93ICYmICFkZWZpbmVk
IFlZU1RBQ0tfUkVMT0NBVEUKKyAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOworI2Vsc2UKKyAgICB7
CisgICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdXNlZCBzaXplIG9mIHRoZSB0aHJlZSBzdGFja3Ms
IGluIGVsZW1lbnRzLiAgKi8KKyAgICAgIFlZU0laRV9UIHl5c2l6ZSA9IChZWVNJWkVfVCkgKHl5
c3NwIC0geXlzcyArIDEpOworCisjIGlmIGRlZmluZWQgeXlvdmVyZmxvdworICAgICAgeworICAg
ICAgICAvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2Ug
Y29waWVzIG9mCisgICAgICAgICAgIHRoZXNlIHNvIHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0
aGUgcmVhbCBvbmVzIGludG8KKyAgICAgICAgICAgbWVtb3J5LiAgKi8KKyAgICAgICAgWVlTVFlQ
RSAqeXl2czEgPSB5eXZzOworICAgICAgICB5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzcztdYjRf
bG9jYXRpb25zX2lmKFsKKyAgICAgICAgWVlMVFlQRSAqeXlsczEgPSB5eWxzO10pWworCisgICAg
ICAgIC8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXpl
IG9mIHRoZQorICAgICAgICAgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4g
IFRoaXMgdXNlZCB0byBiZSBhCisgICAgICAgICAgIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRo
ZSB0d28gZXh0cmEgYXJncywgYnV0IHRoYXQgbWlnaHQKKyAgICAgICAgICAgYmUgdW5kZWZpbmVk
IGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCisgICAgICAgIHl5b3ZlcmZsb3cgKFlZXygi
bWVtb3J5IGV4aGF1c3RlZCIpLAorICAgICAgICAgICAgICAgICAgICAmeXlzczEsIHl5c2l6ZSAq
IHNpemVvZiAoKnl5c3NwKSwKKyAgICAgICAgICAgICAgICAgICAgJnl5dnMxLCB5eXNpemUgKiBz
aXplb2YgKCp5eXZzcCksXWI0X2xvY2F0aW9uc19pZihbCisgICAgICAgICAgICAgICAgICAgICZ5
eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLF0pWworICAgICAgICAgICAgICAgICAgICAm
eXlzdGFja3NpemUpOworICAgICAgICB5eXNzID0geXlzczE7CisgICAgICAgIHl5dnMgPSB5eXZz
MTtdYjRfbG9jYXRpb25zX2lmKFsKKyAgICAgICAgeXlscyA9IHl5bHMxO10pWworICAgICAgfQor
IyBlbHNlIC8qIGRlZmluZWQgWVlTVEFDS19SRUxPQ0FURSAqLworICAgICAgLyogRXh0ZW5kIHRo
ZSBzdGFjayBvdXIgb3duIHdheS4gICovCisgICAgICBpZiAoWVlNQVhERVBUSCA8PSB5eXN0YWNr
c2l6ZSkKKyAgICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKKyAgICAgIHl5c3RhY2tzaXplICo9
IDI7CisgICAgICBpZiAoWVlNQVhERVBUSCA8IHl5c3RhY2tzaXplKQorICAgICAgICB5eXN0YWNr
c2l6ZSA9IFlZTUFYREVQVEg7CisKKyAgICAgIHsKKyAgICAgICAgeXl0eXBlX2ludDE2ICp5eXNz
MSA9IHl5c3M7CisgICAgICAgIHVuaW9uIHl5YWxsb2MgKnl5cHRyID0KKyAgICAgICAgICAodW5p
b24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkp
OworICAgICAgICBpZiAoISB5eXB0cikKKyAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwor
ICAgICAgICBZWVNUQUNLX1JFTE9DQVRFICh5eXNzX2FsbG9jLCB5eXNzKTsKKyAgICAgICAgWVlT
VEFDS19SRUxPQ0FURSAoeXl2c19hbGxvYywgeXl2cyk7XWI0X2xvY2F0aW9uc19pZihbCisgICAg
ICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5bHNfYWxsb2MsIHl5bHMpO10pWworIyB1bmRlZiBZWVNU
QUNLX1JFTE9DQVRFCisgICAgICAgIGlmICh5eXNzMSAhPSB5eXNzYSkKKyAgICAgICAgICBZWVNU
QUNLX0ZSRUUgKHl5c3MxKTsKKyAgICAgIH0KKyMgZW5kaWYKKworICAgICAgeXlzc3AgPSB5eXNz
ICsgeXlzaXplIC0gMTsKKyAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7XWI0X2xvY2F0
aW9uc19pZihbCisgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxO10pWworCisgICAgICBZ
WURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCisgICAg
ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgeXlzdGFja3NpemUpKTsKKworICAgICAgaWYg
KHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEgPD0geXlzc3ApCisgICAgICAgIFlZQUJPUlQ7CisgICAg
fQorI2VuZGlmIC8qICFkZWZpbmVkIHl5b3ZlcmZsb3cgJiYgIWRlZmluZWQgWVlTVEFDS19SRUxP
Q0FURSAqLworCisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5
eXN0YXRlKSk7CisKKyAgaWYgKHl5c3RhdGUgPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKwor
ICBnb3RvIHl5YmFja3VwOworCisKKy8qLS0tLS0tLS0tLS0uCit8IHl5YmFja3VwLiAgfAorYC0t
LS0tLS0tLS0tKi8KK3l5YmFja3VwOgorICAvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdp
dmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCisgICAgIGxvb2thaGVhZCB0b2tlbiBpZiB3
ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisKKyAgLyogRmlyc3Qg
dHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0
b2tlbi4gICovCisgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKKyAgaWYgKHl5cGFjdF92YWx1ZV9p
c19kZWZhdWx0ICh5eW4pKQorICAgIGdvdG8geXlkZWZhdWx0OworCisgIC8qIE5vdCBrbm93biA9
PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisK
KyAgLyogWVlDSEFSIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GIG9yIGEgdmFsaWQgbG9va2Fo
ZWFkIHN5bWJvbC4gICovCisgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkKKyAgICB7XWI0X3B1c2hf
aWYoW1sKKyAgICAgIGlmICgheXlwcy0+eXluZXcpCisgICAgICAgIHtdYjRfdXNlX3B1c2hfZm9y
X3B1bGxfaWYoW10sIFtbCisgICAgICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmV0dXJuIGZv
ciBhIG5ldyB0b2tlbjpcbiIpKTtdXSlbCisgICAgICAgICAgeXlyZXN1bHQgPSBZWVBVU0hfTU9S
RTsKKyAgICAgICAgICBnb3RvIHl5cHVzaHJldHVybjsKKyAgICAgICAgfQorICAgICAgeXlwcy0+
eXluZXcgPSAwO11iNF9wdXJlX2lmKFtdLCBbWworICAgICAgLyogUmVzdG9yaW5nIHRoZSBwdXNo
ZWQgdG9rZW4gaXMgb25seSBuZWNlc3NhcnkgZm9yIHRoZSBmaXJzdAorICAgICAgICAgeXlwdXNo
X3BhcnNlIGludm9jYXRpb24gc2luY2Ugc3Vic2VxdWVudCBpbnZvY2F0aW9ucyBkb24ndCBvdmVy
d3JpdGUKKyAgICAgICAgIGl0IGJlZm9yZSBqdW1waW5nIHRvIHl5cmVhZF9wdXNoZWRfdG9rZW4u
ICAqLworICAgICAgeXljaGFyID0geXlwdXNoZWRfY2hhcjsKKyAgICAgIHl5bHZhbCA9IHl5cHVz
aGVkX3ZhbDtdYjRfbG9jYXRpb25zX2lmKFtbCisgICAgICB5eWxsb2MgPSB5eXB1c2hlZF9sb2M7
XV0pXSlbCit5eXJlYWRfcHVzaGVkX3Rva2VuOl1dKVsKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVy
ciwgIlJlYWRpbmcgYSB0b2tlbjogIikpO11iNF9wdXNoX2lmKFtiNF9wdXJlX2lmKFtbCisgICAg
ICB5eWNoYXIgPSB5eXB1c2hlZF9jaGFyOworICAgICAgaWYgKHl5cHVzaGVkX3ZhbCkKKyAgICAg
ICAgeXlsdmFsID0gKnl5cHVzaGVkX3ZhbDtdYjRfbG9jYXRpb25zX2lmKFtbCisgICAgICBpZiAo
eXlwdXNoZWRfbG9jKQorICAgICAgICB5eWxsb2MgPSAqeXlwdXNoZWRfbG9jO11dKV0pXSwgW1sK
KyAgICAgIHl5Y2hhciA9IF1iNF9sZXhbO11dKVsKKyAgICB9CisKKyAgaWYgKHl5Y2hhciA8PSBZ
WUVPRikKKyAgICB7CisgICAgICB5eWNoYXIgPSB5eXRva2VuID0gWVlFT0Y7CisgICAgICBZWURQ
UklOVEYgKChzdGRlcnIsICJOb3cgYXQgZW5kIG9mIGlucHV0LlxuIikpOworICAgIH0KKyAgZWxz
ZQorICAgIHsKKyAgICAgIHl5dG9rZW4gPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKKyAgICAgIFlZ
X1NZTUJPTF9QUklOVCAoIk5leHQgdG9rZW4gaXMiLCB5eXRva2VuLCAmeXlsdmFsLCAmeXlsbG9j
KTsKKyAgICB9CisKKyAgLyogSWYgdGhlIHByb3BlciBhY3Rpb24gb24gc2VlaW5nIHRva2VuIFlZ
VE9LRU4gaXMgdG8gcmVkdWNlIG9yIHRvCisgICAgIGRldGVjdCBhbiBlcnJvciwgdGFrZSB0aGF0
IGFjdGlvbi4gICovCisgIHl5biArPSB5eXRva2VuOworICBpZiAoeXluIDwgMCB8fCBZWUxBU1Qg
PCB5eW4gfHwgeXljaGVja1t5eW5dICE9IHl5dG9rZW4pXWI0X2xhY19pZihbWworICAgIHsKKyAg
ICAgIFlZX0xBQ19FU1RBQkxJU0g7CisgICAgICBnb3RvIHl5ZGVmYXVsdDsKKyAgICB9XV0sIFtb
CisgICAgZ290byB5eWRlZmF1bHQ7XV0pWworICB5eW4gPSB5eXRhYmxlW3l5bl07CisgIGlmICh5
eW4gPD0gMCkKKyAgICB7CisgICAgICBpZiAoeXl0YWJsZV92YWx1ZV9pc19lcnJvciAoeXluKSkK
KyAgICAgICAgZ290byB5eWVycmxhYjtdYjRfbGFjX2lmKFtbCisgICAgICBZWV9MQUNfRVNUQUJM
SVNIO11dKVsKKyAgICAgIHl5biA9IC15eW47CisgICAgICBnb3RvIHl5cmVkdWNlOworICAgIH0K
KworICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1
cm4gb2ZmIGVycm9yCisgICAgIHN0YXR1cy4gICovCisgIGlmICh5eWVycnN0YXR1cykKKyAgICB5
eWVycnN0YXR1cy0tOworCisgIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLworICBZ
WV9TWU1CT0xfUFJJTlQgKCJTaGlmdGluZyIsIHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MpOwor
CisgIC8qIERpc2NhcmQgdGhlIHNoaWZ0ZWQgdG9rZW4uICAqLworICB5eWNoYXIgPSBZWUVNUFRZ
O11iNF9sYWNfaWYoW1sKKyAgWVlfTEFDX0RJU0NBUkQgKCJzaGlmdCIpO11dKVsKKworICB5eXN0
YXRlID0geXluOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgorICAqKyt5
eXZzcCA9IHl5bHZhbDsKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfRU5ECitdYjRf
bG9jYXRpb25zX2lmKFsgICorK3l5bHNwID0geXlsbG9jO10pWworICBnb3RvIHl5bmV3c3RhdGU7
CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS4KK3wgeXlkZWZhdWx0IC0tIGRvIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhl
IGN1cnJlbnQgc3RhdGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlkZWZhdWx0OgorICB5eW4gPSB5eWRlZmFjdFt5
eXN0YXRlXTsKKyAgaWYgKHl5biA9PSAwKQorICAgIGdvdG8geXllcnJsYWI7CisgIGdvdG8geXly
ZWR1Y2U7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlyZWR1Y2Ug
LS0gZG8gYSByZWR1Y3Rpb24uICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor
eXlyZWR1Y2U6CisgIC8qIHl5biBpcyB0aGUgbnVtYmVyIG9mIGEgcnVsZSB0byByZWR1Y2Ugd2l0
aC4gICovCisgIHl5bGVuID0geXlyMlt5eW5dOworCisgIC8qIElmIFlZTEVOIGlzIG5vbnplcm8s
IGltcGxlbWVudCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYWN0aW9uOgorICAgICAnJCQgPSAk
MScuCisKKyAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZBTCB0byBn
YXJiYWdlLgorICAgICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24KKyAg
ICAgdXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQuICBBc3NpZ25pbmcgdG8gWVlWQUwKKyAg
ICAgdW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJzZXIgYSBiaXQgc21hbGxlciwgYW5kIGl0
IGF2b2lkcyBhCisgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0
aWFsaXplZC4gICovCisgIHl5dmFsID0geXl2c3BbMS15eWxlbl07CisKK11iNF9sb2NhdGlvbnNf
aWYoCitbWyAgLyogRGVmYXVsdCBsb2NhdGlvbi4gKi8KKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9j
LCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKKyAgeXllcnJvcl9yYW5nZVsxXSA9IHl5bG9jO11d
KVsKKyAgWVlfUkVEVUNFX1BSSU5UICh5eW4pO11iNF9sYWNfaWYoW1sKKyAgeworICAgIGludCB5
eWNoYXJfYmFja3VwID0geXljaGFyOworICAgIHN3aXRjaCAoeXluKQorICAgICAgeworXWI0X3Vz
ZXJfYWN0aW9uc1sKKyAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICB9CisgICAgaWYgKHl5
Y2hhcl9iYWNrdXAgIT0geXljaGFyKQorICAgICAgWVlfTEFDX0RJU0NBUkQgKCJ5eWNoYXIgY2hh
bmdlIik7CisgIH1dXSwgW1sKKyAgc3dpdGNoICh5eW4pCisgICAgeworICAgICAgXWI0X3VzZXJf
YWN0aW9uc1sKKyAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIH1dXSlbCisgIC8qIFVzZXIgc2Vt
YW50aWMgYWN0aW9ucyBzb21ldGltZXMgYWx0ZXIgeXljaGFyLCBhbmQgdGhhdCByZXF1aXJlcwor
ICAgICB0aGF0IHl5dG9rZW4gYmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdHJhbnNsYXRpb24uICBX
ZSB0YWtlIHRoZQorICAgICBhcHByb2FjaCBvZiB0cmFuc2xhdGluZyBpbW1lZGlhdGVseSBiZWZv
cmUgZXZlcnkgdXNlIG9mIHl5dG9rZW4uCisgICAgIE9uZSBhbHRlcm5hdGl2ZSBpcyB0cmFuc2xh
dGluZyBoZXJlIGFmdGVyIGV2ZXJ5IHNlbWFudGljIGFjdGlvbiwKKyAgICAgYnV0IHRoYXQgdHJh
bnNsYXRpb24gd291bGQgYmUgbWlzc2VkIGlmIHRoZSBzZW1hbnRpYyBhY3Rpb24gaW52b2tlcwor
ICAgICBZWUFCT1JULCBZWUFDQ0VQVCwgb3IgWVlFUlJPUiBpbW1lZGlhdGVseSBhZnRlciBhbHRl
cmluZyB5eWNoYXIgb3IKKyAgICAgaWYgaXQgaW52b2tlcyBZWUJBQ0tVUC4gIEluIHRoZSBjYXNl
IG9mIFlZQUJPUlQgb3IgWVlBQ0NFUFQsIGFuCisgICAgIGluY29ycmVjdCBkZXN0cnVjdG9yIG1p
Z2h0IHRoZW4gYmUgaW52b2tlZCBpbW1lZGlhdGVseS4gIEluIHRoZQorICAgICBjYXNlIG9mIFlZ
RVJST1Igb3IgWVlCQUNLVVAsIHN1YnNlcXVlbnQgcGFyc2VyIGFjdGlvbnMgbWlnaHQgbGVhZAor
ICAgICB0byBhbiBpbmNvcnJlY3QgZGVzdHJ1Y3RvciBjYWxsIG9yIHZlcmJvc2Ugc3ludGF4IGVy
cm9yIG1lc3NhZ2UKKyAgICAgYmVmb3JlIHRoZSBsb29rYWhlYWQgaXMgdHJhbnNsYXRlZC4gICov
CisgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9j
KTsKKworICBZWVBPUFNUQUNLICh5eWxlbik7CisgIHl5bGVuID0gMDsKKyAgWVlfU1RBQ0tfUFJJ
TlQgKHl5c3MsIHl5c3NwKTsKKworICAqKyt5eXZzcCA9IHl5dmFsO11iNF9sb2NhdGlvbnNfaWYo
WworICAqKyt5eWxzcCA9IHl5bG9jO10pWworCisgIC8qIE5vdyAnc2hpZnQnIHRoZSByZXN1bHQg
b2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCisgICAgIHRoYXQgZ29lcyB0
bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQorICAg
ICBudW1iZXIgcmVkdWNlZCBieS4gICovCisgIHsKKyAgICBjb25zdCBpbnQgeXlsaHMgPSB5eXIx
W3l5bl0gLSBZWU5UT0tFTlM7CisgICAgY29uc3QgaW50IHl5aSA9IHl5cGdvdG9beXlsaHNdICsg
Knl5c3NwOworICAgIHl5c3RhdGUgPSAoMCA8PSB5eWkgJiYgeXlpIDw9IFlZTEFTVCAmJiB5eWNo
ZWNrW3l5aV0gPT0gKnl5c3NwCisgICAgICAgICAgICAgICA/IHl5dGFibGVbeXlpXQorICAgICAg
ICAgICAgICAgOiB5eWRlZmdvdG9beXlsaHNdKTsKKyAgfQorCisgIGdvdG8geXluZXdzdGF0ZTsK
KworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmxh
YiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvci4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCit5eWVycmxhYjoKKyAgLyogTWFrZSBzdXJlIHdlIGhhdmUgbGF0
ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4gIFNlZSBjb21tZW50cyBhdAorICAgICB1c2VyIHNl
bWFudGljIGFjdGlvbnMgZm9yIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4gICovCisgIHl5dG9rZW4g
PSB5eWNoYXIgPT0gWVlFTVBUWSA/IFlZRU1QVFkgOiBZWVRSQU5TTEFURSAoeXljaGFyKTsKKwor
ICAvKiBJZiBub3QgYWxyZWFkeSByZWNvdmVyaW5nIGZyb20gYW4gZXJyb3IsIHJlcG9ydCB0aGlz
IGVycm9yLiAgKi8KKyAgaWYgKCF5eWVycnN0YXR1cykKKyAgICB7CisgICAgICArK3l5bmVycnM7
CisjaWYgISBZWUVSUk9SX1ZFUkJPU0UKKyAgICAgIHl5ZXJyb3IgKF1iNF95eWVycm9yX2FyZ3Nb
WVlfKCJzeW50YXggZXJyb3IiKSk7CisjZWxzZQorIyBkZWZpbmUgWVlTWU5UQVhfRVJST1IgeXlz
eW50YXhfZXJyb3IgKCZ5eW1zZ19hbGxvYywgJnl5bXNnLCBcXWI0X2xhY19pZihbWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5ZXNhLCAmeXllcywgJnl5ZXNfY2Fw
YWNpdHksIFxdXSlbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXlz
c3AsIHl5dG9rZW4pCisgICAgICB7CisgICAgICAgIGNoYXIgY29uc3QgKnl5bXNncCA9IFlZXygi
c3ludGF4IGVycm9yIik7CisgICAgICAgIGludCB5eXN5bnRheF9lcnJvcl9zdGF0dXM7XWI0X2xh
Y19pZihbWworICAgICAgICBpZiAoeXljaGFyICE9IFlZRU1QVFkpCisgICAgICAgICAgWVlfTEFD
X0VTVEFCTElTSDtdXSlbCisgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFY
X0VSUk9SOworICAgICAgICBpZiAoeXlzeW50YXhfZXJyb3Jfc3RhdHVzID09IDApCisgICAgICAg
ICAgeXltc2dwID0geXltc2c7CisgICAgICAgIGVsc2UgaWYgKHl5c3ludGF4X2Vycm9yX3N0YXR1
cyA9PSAxKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikK
KyAgICAgICAgICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7CisgICAgICAgICAgICB5eW1zZyA9
IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5bXNnX2FsbG9jKTsKKyAgICAgICAgICAgIGlmICgh
eXltc2cpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB5eW1zZyA9IHl5bXNnYnVm
OworICAgICAgICAgICAgICAgIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworICAgICAg
ICAgICAgICAgIHl5c3ludGF4X2Vycm9yX3N0YXR1cyA9IDI7CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHl5c3ludGF4
X2Vycm9yX3N0YXR1cyA9IFlZU1lOVEFYX0VSUk9SOworICAgICAgICAgICAgICAgIHl5bXNncCA9
IHl5bXNnOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB5eWVycm9yIChd
YjRfeXllcnJvcl9hcmdzW3l5bXNncCk7CisgICAgICAgIGlmICh5eXN5bnRheF9lcnJvcl9zdGF0
dXMgPT0gMikKKyAgICAgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOworICAgICAgfQorIyB1bmRl
ZiBZWVNZTlRBWF9FUlJPUgorI2VuZGlmCisgICAgfQorCitdYjRfbG9jYXRpb25zX2lmKFtbICB5
eWVycm9yX3JhbmdlWzFdID0geXlsbG9jO11dKVsKKworICBpZiAoeXllcnJzdGF0dXMgPT0gMykK
KyAgICB7CisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2Fo
ZWFkIHRva2VuIGFmdGVyIGFuCisgICAgICAgICBlcnJvciwgZGlzY2FyZCBpdC4gICovCisKKyAg
ICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBSZXR1cm4g
ZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQuICAqLworICAgICAgICAgIGlmICh5eWNoYXIgPT0g
WVlFT0YpCisgICAgICAgICAgICBZWUFCT1JUOworICAgICAgICB9CisgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IGRpc2NhcmRpbmciLAorICAgICAg
ICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWxdYjRfbG9jYXRpb25zX2lmKFssICZ5eWxs
b2NdKVtdYjRfdXNlcl9hcmdzWyk7CisgICAgICAgICAgeXljaGFyID0gWVlFTVBUWTsKKyAgICAg
ICAgfQorICAgIH0KKworICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tl
biBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKKyAgICAgdG9rZW4uICAqLworICBnb3RvIHl5ZXJy
bGFiMTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS4KK3wgeXllcnJvcmxhYiAtLSBlcnJvciByYWlzZWQgZXhwbGljaXRseSBieSBZWUVS
Uk9SLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCit5eWVycm9ybGFiOgorICAvKiBQYWNpZnkgY29tcGlsZXJzIHdoZW4gdGhlIHVzZXIg
Y29kZSBuZXZlciBpbnZva2VzIFlZRVJST1IgYW5kIHRoZQorICAgICBsYWJlbCB5eWVycm9ybGFi
IHRoZXJlZm9yZSBuZXZlciBhcHBlYXJzIGluIHVzZXIgY29kZS4gICovCisgIGlmICgwKQorICAg
IFlZRVJST1I7CisKKyAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUg
d2hvc2UgYWN0aW9uIHRyaWdnZXJlZAorICAgICB0aGlzIFlZRVJST1IuICAqLworICBZWVBPUFNU
QUNLICh5eWxlbik7CisgIHl5bGVuID0gMDsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3Nw
KTsKKyAgeXlzdGF0ZSA9ICp5eXNzcDsKKyAgZ290byB5eWVycmxhYjE7CisKKworLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgor
fCB5eWVycmxhYjEgLS0gY29tbW9uIGNvZGUgZm9yIGJvdGggc3ludGF4IGVycm9yIGFuZCBZWUVS
Uk9SLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLworeXllcnJsYWIxOgorICB5eWVycnN0YXR1cyA9IDM7ICAgICAgLyog
RWFjaCByZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KKworICBmb3IgKDs7
KQorICAgIHsKKyAgICAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKKyAgICAgIGlmICgheXlwYWN0
X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCisgICAgICAgIHsKKyAgICAgICAgICB5eW4gKz0gWVlU
RVJST1I7CisgICAgICAgICAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYgeXljaGVj
a1t5eW5dID09IFlZVEVSUk9SKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB5eW4gPSB5
eXRhYmxlW3l5bl07CisgICAgICAgICAgICAgIGlmICgwIDwgeXluKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgIC8qIFBvcCB0aGUgY3Vy
cmVudCBzdGF0ZSBiZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIGVycm9yIHRva2VuLiAgKi8K
KyAgICAgIGlmICh5eXNzcCA9PSB5eXNzKQorICAgICAgICBZWUFCT1JUOworCitdYjRfbG9jYXRp
b25zX2lmKFtbICAgICAgeXllcnJvcl9yYW5nZVsxXSA9ICp5eWxzcDtdXSlbCisgICAgICB5eWRl
c3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAorICAgICAgICAgICAgICAgICAgeXlzdG9zW3l5c3Rh
dGVdLCB5eXZzcF1iNF9sb2NhdGlvbnNfaWYoWywgeXlsc3BdKVtdYjRfdXNlcl9hcmdzWyk7Cisg
ICAgICBZWVBPUFNUQUNLICgxKTsKKyAgICAgIHl5c3RhdGUgPSAqeXlzc3A7CisgICAgICBZWV9T
VEFDS19QUklOVCAoeXlzcywgeXlzc3ApOworICAgIH1dYjRfbGFjX2lmKFtbCisKKyAgLyogSWYg
dGhlIHN0YWNrIHBvcHBpbmcgYWJvdmUgZGlkbid0IGxvc2UgdGhlIGluaXRpYWwgY29udGV4dCBm
b3IgdGhlCisgICAgIGN1cnJlbnQgbG9va2FoZWFkIHRva2VuLCB0aGUgc2hpZnQgYmVsb3cgd2ls
bCBmb3Igc3VyZS4gICovCisgIFlZX0xBQ19ESVNDQVJEICgiZXJyb3IgcmVjb3ZlcnkiKTtdXSlb
CisKKyAgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KKyAgKisreXl2c3AgPSB5
eWx2YWw7CisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAorXWI0X2xvY2F0aW9u
c19pZihbWworICB5eWVycm9yX3JhbmdlWzJdID0geXlsbG9jOworICAvKiBVc2luZyBZWUxMT0Mg
aXMgdGVtcHRpbmcsIGJ1dCB3b3VsZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCisgICAgIHRoZSBs
b29rYWhlYWQuICBZWUxPQyBpcyBhdmFpbGFibGUgdGhvdWdoLiAgKi8KKyAgWVlMTE9DX0RFRkFV
TFQgKHl5bG9jLCB5eWVycm9yX3JhbmdlLCAyKTsKKyAgKisreXlsc3AgPSB5eWxvYztdXSlbCisK
KyAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KKyAgWVlfU1lNQk9MX1BSSU5UICgiU2hp
ZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5bHNwKTsKKworICB5eXN0YXRlID0geXluOwor
ICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLgorfCB5eWFjY2VwdGxhYiAtLSBZWUFDQ0VQVCBjb21lcyBoZXJlLiAgfAorYC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlhY2NlcHRsYWI6CisgIHl5cmVz
dWx0ID0gMDsKKyAgZ290byB5eXJldHVybjsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLgorfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4gIHwKK2At
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFib3J0bGFiOgorICB5eXJl
c3VsdCA9IDE7CisgIGdvdG8geXlyZXR1cm47CisKKworI2lmIF1iNF9sYWNfaWYoW1sxXV0sIFtb
IWRlZmluZWQgeXlvdmVyZmxvdyB8fCBZWUVSUk9SX1ZFUkJPU0VdXSlbCisvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXhoYXVzdGVkbGFi
IC0tIG1lbW9yeSBleGhhdXN0aW9uIGNvbWVzIGhlcmUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWV4aGF1c3RlZGxhYjoKKyAgeXll
cnJvciAoXWI0X3l5ZXJyb3JfYXJnc1tZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CisgIHl5cmVz
dWx0ID0gMjsKKyAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKyNlbmRpZgorCisKKy8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cmV0dXJu
IC0tIHBhcnNpbmcgaXMgZmluaXNoZWQsIHJldHVybiB0aGUgcmVzdWx0LiAgfAorYC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5cmV0dXJu
OgorICBpZiAoeXljaGFyICE9IFlZRU1QVFkpCisgICAgeworICAgICAgLyogTWFrZSBzdXJlIHdl
IGhhdmUgbGF0ZXN0IGxvb2thaGVhZCB0cmFuc2xhdGlvbi4gIFNlZSBjb21tZW50cyBhdAorICAg
ICAgICAgdXNlciBzZW1hbnRpYyBhY3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAq
LworICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOworICAgICAgeXlkZXN0cnVj
dCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKKyAgICAgICAgICAgICAgICAgIHl5
dG9rZW4sICZ5eWx2YWxdYjRfbG9jYXRpb25zX2lmKFssICZ5eWxsb2NdKVtdYjRfdXNlcl9hcmdz
Wyk7CisgICAgfQorICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3
aG9zZSBhY3Rpb24gdHJpZ2dlcmVkCisgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFDQ0VQVC4gICov
CisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsK
KyAgd2hpbGUgKHl5c3NwICE9IHl5c3MpCisgICAgeworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFu
dXA6IHBvcHBpbmciLAorICAgICAgICAgICAgICAgICAgeXlzdG9zWyp5eXNzcF0sIHl5dnNwXWI0
X2xvY2F0aW9uc19pZihbLCB5eWxzcF0pW11iNF91c2VyX2FyZ3NbKTsKKyAgICAgIFlZUE9QU1RB
Q0sgKDEpOworICAgIH0KKyNpZm5kZWYgeXlvdmVyZmxvdworICBpZiAoeXlzcyAhPSB5eXNzYSkK
KyAgICBZWVNUQUNLX0ZSRUUgKHl5c3MpOworI2VuZGlmXWI0X2xhY19pZihbWworICBpZiAoeXll
cyAhPSB5eWVzYSkKKyAgICBZWVNUQUNLX0ZSRUUgKHl5ZXMpO11dKWI0X3B1c2hfaWYoW1sKKyAg
eXlwcy0+eXluZXcgPSAxOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0uCit8IHl5cHVzaHJldHVybiAtLSBhc2sgZm9yIHRoZSBuZXh0IHRva2VuLiAgfAor
YC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5cHVzaHJldHVy
bjpdXSlbCisjaWYgWVlFUlJPUl9WRVJCT1NFCisgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAg
ICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKKyNlbmRpZgorICByZXR1cm4geXlyZXN1bHQ7Cit9Citd
YjRfZXBpbG9ndWVbXWRubAorYjRfb3V0cHV0X2VuZAorCitiNF9kZWZpbmVzX2lmKFtbCitdYjRf
b3V0cHV0X2JlZ2luKFtiNF9zcGVjX2RlZmluZXNfZmlsZV0pWworXWI0X2NvcHlyaWdodChbQmlz
b24gaW50ZXJmYWNlIGZvciBZYWNjLWxpa2UgcGFyc2VycyBpbiBDXSlbCitdYjRfZGlzY2xhaW1l
clsKK11iNF9zaGFyZWRfZGVjbGFyYXRpb25zWworXWI0X291dHB1dF9lbmRbCitdXSkjIGI0X2Rl
ZmluZXNfaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgt
Ymlzb24vdXBkYXRlX2ZsZXhfYmlzb25fYmluYXJpZXMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3VwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk5YzAwMmIwNGU3ODkzMjM4YjQwOGVlZmVmM2QzYzdkODcxNTZmYmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3VwZGF0
ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5CkBAIC0wLDAgKzEsNjkgQEAKKyMhL3Vzci9iaW4vcHl0
aG9uMgorIworIyBDb3B5cmlnaHQgMjAxOSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisjCisjIHVwZGF0ZV9mbGV4X2Jpc29uX2JpbmFyaWVzLnB5OgorIyAgIEhlbHBlciBz
Y3JpcHQgdG8gdXBkYXRlIHRoZSB2ZXJzaW9uIG9mIGZsZXggYW5kIGJpc29uIGluIGNsb3VkIHN0
b3JhZ2UuCisjICAgVGhlc2UgYmluYXJpZXMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIEFOR0xF
IHRyYW5zbGF0b3IncyBsZXhlciBhbmQgcGFyc2VyLgorIyAgIFRoaXMgc2NyaXB0IHJlbGllcyBv
biBmbGV4IGFuZCBiaXNvbiBiaW5hcmllcyB0byBiZSBleHRlcm5hbGx5IGJ1aWx0IHdoaWNoCisj
ICAgaXMgZXhwZWN0ZWQgdG8gYmUgYSByYXJlIG9wZXJhdGlvbi4gSXQgY3VycmVudGx5IG9ubHkg
d29ya3Mgb24gV2luZG93cyBhbmQKKyMgICBMaW51eC4gSXQgYWxzbyB3aWxsIHVwZGF0ZSB0aGUg
aGFzaGVzIHN0b3JlZCBpbiB0aGUgdHJlZS4gRm9yIG1vcmUgaW5mbyBzZWUKKyMgICBSRUFETUUu
bWQgaW4gdGhpcyBmb2xkZXIuCisKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQg
c2h1dGlsCitpbXBvcnQgc3lzCisKK3N5cy5wYXRoLmFwcGVuZCgndG9vbHMvJykKK2ltcG9ydCBh
bmdsZV90b29scworCisKK2RlZiBtYWluKCk6CisgICAgaWYgYW5nbGVfdG9vbHMuaXNfbGludXg6
CisgICAgICAgIHN1YmRpciA9ICdsaW51eCcKKyAgICAgICAgZmlsZXMgPSBbJ2ZsZXgnLCAnYmlz
b24nXQorICAgIGVsaWYgYW5nbGVfdG9vbHMuaXNfd2luZG93czoKKyAgICAgICAgc3ViZGlyID0g
J3dpbmRvd3MnCisgICAgICAgIGZpbGVzID0gWworICAgICAgICAgICAgJ2ZsZXguZXhlJywgJ2Jp
c29uLmV4ZScsICdtNC5leGUnLCAnbXN5cy0yLjAuZGxsJywgJ21zeXMtaWNvbnYtMi5kbGwnLAor
ICAgICAgICAgICAgJ21zeXMtaW50bC04LmRsbCcKKyAgICAgICAgXQorICAgIGVsc2U6CisgICAg
ICAgIHByaW50KCdTY3JpcHQgbXVzdCBiZSBydW4gb24gTGludXggb3IgV2luZG93cy4nKQorICAg
ICAgICByZXR1cm4gMQorCisgICAgZmlsZXMgPSBbb3MucGF0aC5qb2luKHN5cy5wYXRoWzBdLCBz
dWJkaXIsIGYpIGZvciBmIGluIGZpbGVzXQorCisgICAgIyBTdGVwIDE6IFVwbG9hZCB0byBjbG91
ZCBzdG9yYWdlCisgICAgaWYgbm90IGFuZ2xlX3Rvb2xzLnVwbG9hZF90b19nb29nbGVfc3RvcmFn
ZSgnYW5nbGUtZmxleC1iaXNvbicsIGZpbGVzKToKKyAgICAgICAgcHJpbnQoJ0Vycm9yIHVwbG9h
ZCB0byBjbG91ZCBzdG9yYWdlJykKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgU3RlcCAyOiBT
dGFnZSBuZXcgU0hBIHRvIGdpdAorICAgIGlmIG5vdCBhbmdsZV90b29scy5zdGFnZV9nb29nbGVf
c3RvcmFnZV9zaGExKGZpbGVzKToKKyAgICAgICAgcHJpbnQoJ0Vycm9yIHJ1bm5pbmcgZ2l0IGFk
ZCcpCisgICAgICAgIHJldHVybiAyCisKKyAgICBwcmludCgnJykKKyAgICBwcmludCgnVGhlIHVw
ZGF0ZWQgU0hBIGhhcyBiZWVuIHN0YWdlZCBmb3IgY29tbWl0LiBQbGVhc2UgY29tbWl0IGFuZCB1
cGxvYWQuJykKKyAgICBwcmludCgnU3VnZ2VzdGVkIGNvbW1pdCBtZXNzYWdlIChwbGVhc2UgaW5k
aWNhdGUgZmxleC9iaXNvbiB2ZXJzaW9ucyk6JykKKyAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLScpCisgICAgcHJpbnQoJycpCisgICAgcHJpbnQoJ1VwZGF0ZSBmbGV4IGFu
ZCBiaXNvbiBiaW5hcmllcyBmb3IgJXMuJyAlIHBsYXRmb3JtLnN5c3RlbSgpKQorICAgIHByaW50
KCcnKQorICAgIHByaW50KCdUaGVzZSBiaW5hcmllcyB3ZXJlIHVwZGF0ZWQgdXNpbmcgJXMuJyAl
IG9zLnBhdGguYmFzZW5hbWUoX19maWxlX18pKQorICAgIHByaW50KCdQbGVhc2Ugc2VlIGluc3Ry
dWN0aW9ucyBpbiB0b29scy9mbGV4LWJpc29uL1JFQURNRS5tZC4nKQorICAgIHByaW50KCcnKQor
ICAgIHByaW50KCdmbGV4IGlzIGF0IHZlcnNpb24gVE9ETy4nKQorICAgIHByaW50KCdiaXNvbiBp
cyBhdCB2ZXJzaW9uIFRPRE8uJykKKyAgICBwcmludCgnJykKKyAgICBwcmludCgnQnVnOiBOb25l
JykKKworICAgIHJldHVybiAwCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBz
eXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29s
cy9mbGV4LWJpc29uL3dpbmRvd3MvYmlzb24uZXhlLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvYmlzb24uZXhlLnNoYTEKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGNiNWY0ZmI1YmIwYjFkMzViMzIyMTU0YjQ0NjU4ZjUzNjk0NGI2OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9iaXNv
bi5leGUuc2hhMQpAQCAtMCwwICsxIEBACis0YTZlMWRjZWQ2MWRhYjJmY2Q4MjhlZGJmYmZhN2Vi
MDIxNWNmMmE0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL2ZsZXguZXhlLnNoYTEg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvZmxleC5l
eGUuc2hhMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYWE3OGVkY2FmZWRlZTAyMWUzYzI3Nzg4Mzk5ODZiMTgzOWY2
MGNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxl
eC1iaXNvbi93aW5kb3dzL2ZsZXguZXhlLnNoYTEKQEAgLTAsMCArMSBAQAorYmM1MGIzYjZlODRh
MzA5NDBhYTEyMjNmNjkyYzlmMWZjOWJlZGJmOQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2lu
ZG93cy9tNC5leGUuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlz
b24vd2luZG93cy9tNC5leGUuc2hhMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjQzZGZiM2IwNTZjMmZmMmFlNGJh
NDc2M2FiZTk3ZjUwNTcxZDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL200LmV4ZS5zaGExCkBAIC0wLDAgKzEgQEAK
KzA2ODM2ZTQ1YjA1ZDU5N2Q1NmI3NGZlYmUzYmNmZDc2ZTgwZWY4ZjgKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90b29scy9m
bGV4LWJpc29uL3dpbmRvd3MvbXN5cy0yLjAuZGxsLnNoYTEgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS90b29scy9mbGV4LWJpc29uL3dpbmRvd3MvbXN5cy0yLjAuZGxsLnNoYTEKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTgzNTJjNzQ2MzViZmQwODhmOTJjOWZhMzJjMWVkMzA0OGUwMzA5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9t
c3lzLTIuMC5kbGwuc2hhMQpAQCAtMCwwICsxIEBACitkMGJlYWI3ZWM3N2IyNWFjNzFiZDJkM2Jm
NTRmNGVmZDM5ZTM5NDdmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9vbHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtaWNv
bnYtMi5kbGwuc2hhMSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24v
d2luZG93cy9tc3lzLWljb252LTIuZGxsLnNoYTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUyYmM0YjQyYjk2NGIz
OWYxZWU5NTBmN2FiOWEzMWI1Zjg5ZWUzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLWljb252LTIuZGxsLnNo
YTEKQEAgLTAsMCArMSBAQAorMDU3OWYxNTYzZTIyMGQ2MTIxYjY1YTVmNDcyOTkxOWNkMGNiNmFm
OQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLWludGwtOC5kbGwuc2hhMSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Rvb2xzL2ZsZXgtYmlzb24vd2luZG93cy9tc3lzLWlu
dGwtOC5kbGwuc2hhMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzM1OTIxMTNmMTJlN2VlMmZmYjU4MmFhYjQxZWI0
YmVjMzlhZTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdG9v
bHMvZmxleC1iaXNvbi93aW5kb3dzL21zeXMtaW50bC04LmRsbC5zaGExCkBAIC0wLDAgKzEgQEAK
KzIxMmE5ZWY5MGUyMWE5OGZmNTdjYTMwMWE2MGM4NGNiZWNhN2JlMjgKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0JV
SUxELmduIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9CVUlMRC5nbgppbmRleCBlZmJi
MWZmMDVjYmVkZTA3ZDNmMzNmNTA0NzcyNzY2MTlmZjNjNTBlLi5hY2IxYjQ0MWQwMjQwYmM2Mjcw
YWZhYWY4M2NlYzcwMDFmMmFhNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL0JVSUxELmduCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvQlVJTEQu
Z24KQEAgLTUsMTAgKzUsMjAgQEAKIGltcG9ydCgiLi4vZ25pL2FuZ2xlLmduaSIpCiAKIF91dGls
X3NvdXJjZXMgPSBbCisgICJFR0xQbGF0Zm9ybVBhcmFtZXRlcnMuaCIsCisgICJFR0xXaW5kb3cu
Y3BwIiwKKyAgIkVHTFdpbmRvdy5oIiwKKyAgIkV2ZW50LmgiLAorICAiTWF0cml4LmNwcCIsCisg
ICJNYXRyaXguaCIsCisgICJPU1BpeG1hcC5oIiwKKyAgIk9TV2luZG93LmNwcCIsCisgICJPU1dp
bmRvdy5oIiwKICAgImNvbV91dGlscy5oIiwKLSAgImtleWJvYXJkLmgiLAorICAiZnJhbWVfY2Fw
dHVyZV91dGlscy5oIiwKICAgImdlb21ldHJ5X3V0aWxzLmNwcCIsCiAgICJnZW9tZXRyeV91dGls
cy5oIiwKKyAgImtleWJvYXJkLmgiLAogICAibW91c2UuaCIsCiAgICJyYW5kb21fdXRpbHMuY3Bw
IiwKICAgInJhbmRvbV91dGlscy5oIiwKQEAgLTE2LDE1ICsyNiw2IEBAIF91dGlsX3NvdXJjZXMg
PSBbCiAgICJzaGFkZXJfdXRpbHMuaCIsCiAgICJ1dGlsX2V4cG9ydC5oIiwKICAgInV0aWxfZ2wu
aCIsCi0gICJFdmVudC5oIiwKLSAgIkVHTFBsYXRmb3JtUGFyYW1ldGVycy5oIiwKLSAgIkVHTFdp
bmRvdy5jcHAiLAotICAiRUdMV2luZG93LmgiLAotICAiTWF0cml4LmNwcCIsCi0gICJNYXRyaXgu
aCIsCi0gICJPU1BpeG1hcC5oIiwKLSAgIk9TV2luZG93LmNwcCIsCi0gICJPU1dpbmRvdy5oIiwK
IF0KIAogaWYgKGlzX3dpbikgewpAQCAtNjMsMTAgKzY0LDEwIEBAIGlmIChpc19mdWNoc2lhKSB7
CiAKIGlmIChpc19tYWMpIHsKICAgX3V0aWxfc291cmNlcyArPSBbCi0gICAgIm9zeC9PU1hQaXht
YXAubW0iLAogICAgICJvc3gvT1NYUGl4bWFwLmgiLAotICAgICJvc3gvT1NYV2luZG93Lm1tIiwK
KyAgICAib3N4L09TWFBpeG1hcC5tbSIsCiAgICAgIm9zeC9PU1hXaW5kb3cuaCIsCisgICAgIm9z
eC9PU1hXaW5kb3cubW0iLAogICBdCiB9CiAKQEAgLTg1LDYgKzg2LDcgQEAgY29uZmlnKCJhbmds
ZV91dGlsX2xvYWRlcl9jb25maWciKSB7CiB9CiAKIGNvbmZpZygiYW5nbGVfdXRpbF9sb2FkZXJf
aGVhZGVyc19jb25maWciKSB7CisgICMgRm9yY2UgdXNlcnMgdG8gaW5jbHVkZSAidXRpbC9oZWFk
ZXIuaCIgaW5zdGVhZCBvZiBqdXN0ICJoZWFkZXIuaCIuCiAgIGluY2x1ZGVfZGlycyA9IFsgIi4u
IiBdCiB9CiAKQEAgLTEwMCw5ICsxMDIsNyBAQCBhbmdsZV9zb3VyY2Vfc2V0KCJhbmdsZV91dGls
X2xvYWRlcl9oZWFkZXJzIikgewogICAgIHNvdXJjZXMgKz0gWyAid2luZG93cy93Z2xfbG9hZGVy
X2F1dG9nZW4uaCIgXQogICB9CiAKLSAgcHVibGljX2RlcHMgPSBbCi0gICAgIiRhbmdsZV9yb290
OmluY2x1ZGVzIiwKLSAgXQorICBwdWJsaWNfZGVwcyA9IFsgIiRhbmdsZV9yb290OmluY2x1ZGVz
IiBdCiAKICAgcHVibGljX2NvbmZpZ3MgPSBbICI6YW5nbGVfdXRpbF9sb2FkZXJfaGVhZGVyc19j
b25maWciIF0KIH0KQEAgLTEyMCw5ICsxMjAsNyBAQCBhbmdsZV9zb3VyY2Vfc2V0KCJhbmdsZV91
dGlsX2xvYWRlciIpIHsKICAgICBzb3VyY2VzICs9IFsgIndpbmRvd3Mvd2dsX2xvYWRlcl9hdXRv
Z2VuLmNwcCIgXQogICB9CiAKLSAgZGVwcyA9IFsKLSAgICAiOmFuZ2xlX3V0aWxfbG9hZGVyX2hl
YWRlcnMiLAotICBdCisgIGRlcHMgPSBbICI6YW5nbGVfdXRpbF9sb2FkZXJfaGVhZGVycyIgXQog
CiAgIHB1YmxpY19jb25maWdzICs9IFsKICAgICAiJGFuZ2xlX3Jvb3Q6bm9fZ2xfcHJvdG90eXBl
cyIsCkBAIC0xMzMsNyArMTMxLDggQEAgYW5nbGVfc291cmNlX3NldCgiYW5nbGVfdXRpbF9sb2Fk
ZXIiKSB7CiB9CiAKIGNvbmZpZygiYW5nbGVfdXRpbF9jb25maWciKSB7Ci0gIGluY2x1ZGVfZGly
cyA9IFsgIi4iIF0KKyAgIyBGb3JjZSB1c2VycyB0byBpbmNsdWRlICJ1dGlsL2hlYWRlci5oIiBp
bnN0ZWFkIG9mIGp1c3QgImhlYWRlci5oIi4KKyAgaW5jbHVkZV9kaXJzID0gWyAiLi4iIF0KICAg
aWYgKGlzX2xpbnV4ICYmIGFuZ2xlX3VzZV94MTEpIHsKICAgICBsaWJzID0gWyAiWDExIiBdCiAg
IH0KQEAgLTE1NywxMiArMTU2LDExIEBAIGZvcmVhY2goaXNfc2hhcmVkX2xpYnJhcnksCiAgIHRh
cmdldChsaWJyYXJ5X3R5cGUsIGxpYnJhcnlfbmFtZSkgewogICAgIHRlc3Rvbmx5ID0gdHJ1ZQog
ICAgIHNvdXJjZXMgPSBfdXRpbF9zb3VyY2VzCi0gICAgZGVwcyA9IFsKKyAgICBkZXBzID0gWyAi
JGFuZ2xlX3Jvb3Q6YW5nbGVfY29tbW9uIiBdCisgICAgcHVibGljX2RlcHMgPSBbCiAgICAgICAi
OmFuZ2xlX3Rlc3RfdXRpbHMiLAogICAgICAgIjphbmdsZV91dGlsX2xvYWRlcl9oZWFkZXJzIiwK
LSAgICAgICIkYW5nbGVfcm9vdDphbmdsZV9jb21tb24iLAogICAgIF0KLSAgICBwdWJsaWNfZGVw
cyA9IFtdCiAgICAgbGlicyA9IFtdCiAKICAgICBpZiAoaXNfbGludXgpIHsKQEAgLTE5NSwxNCAr
MTkzLDE0IEBAIGZvcmVhY2goaXNfc2hhcmVkX2xpYnJhcnksCiAgICAgaWYgKGlzX2Z1Y2hzaWEp
IHsKICAgICAgIHB1YmxpY19kZXBzICs9IFsKICAgICAgICAgIiRhbmdsZV9yb290L3NyYy9jb21t
b24vZnVjaHNpYV9lZ2wiLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6
YXN5bmMtbG9vcC1jcHAiLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6
YXN5bmMtbG9vcC1kZWZhdWx0IiwKLSAgICAgICAgIi8vdGhpcmRfcGFydHkvZnVjaHNpYS1zZGsv
c2RrOmZkaW8iLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6ZnVjaHNp
YS1pbWFnZXMiLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6ZnVjaHNp
YS11aS1wb2xpY3kiLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6ZnVj
aHNpYS11aS1zY2VuaWMiLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGs6
ZnVjaHNpYS11aS12aWV3cyIsCi0gICAgICAgICIvL3RoaXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3Nk
azpzY2VuaWNfY3BwIiwKKyAgICAgICAgIi8vdGhpcmRfcGFydHkvZnVjaHNpYS1zZGsvc2RrL2Zp
ZGwvZnVjaHNpYS5pbWFnZXMiLAorICAgICAgICAiLy90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9z
ZGsvZmlkbC9mdWNoc2lhLnVpLnBvbGljeSIsCisgICAgICAgICIvL3RoaXJkX3BhcnR5L2Z1Y2hz
aWEtc2RrL3Nkay9maWRsL2Z1Y2hzaWEudWkuc2NlbmljIiwKKyAgICAgICAgIi8vdGhpcmRfcGFy
dHkvZnVjaHNpYS1zZGsvc2RrL2ZpZGwvZnVjaHNpYS51aS52aWV3cyIsCisgICAgICAgICIvL3Ro
aXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3Nkay9wa2cvYXN5bmMtbG9vcC1jcHAiLAorICAgICAgICAi
Ly90aGlyZF9wYXJ0eS9mdWNoc2lhLXNkay9zZGsvcGtnL2FzeW5jLWxvb3AtZGVmYXVsdCIsCisg
ICAgICAgICIvL3RoaXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3Nkay9wa2cvZmRpbyIsCisgICAgICAg
ICIvL3RoaXJkX3BhcnR5L2Z1Y2hzaWEtc2RrL3Nkay9wa2cvc2NlbmljX2NwcCIsCiAgICAgICBd
CiAgICAgfQogCkBAIC0yNTcsOSArMjU1LDcgQEAgY29uZmlnKCJhbmdsZV90ZXN0X3V0aWxfY29u
ZmlnIikgewogCiBhbmdsZV9zb3VyY2Vfc2V0KCJhbmdsZV90ZXN0X3V0aWxzIikgewogICBwdWJs
aWNfY29uZmlncyA9IFsgIjphbmdsZV90ZXN0X3V0aWxfY29uZmlnIiBdCi0gIGRlcHMgPSBbCi0g
ICAgIiRhbmdsZV9yb290OmFuZ2xlX2NvbW1vbiIsCi0gIF0KKyAgZGVwcyA9IFsgIiRhbmdsZV9y
b290OmFuZ2xlX2NvbW1vbiIgXQogICBzb3VyY2VzID0gWwogICAgICJUaW1lci5jcHAiLAogICAg
ICJUaW1lci5oIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFBs
YXRmb3JtUGFyYW1ldGVycy5oCmluZGV4IGEzZDNlZjI1MzM3MmZjNTFiMGU2YjEzNWQwMzZlMWVk
ZTRjMjU1ODUuLmY1NTM2Njc0OGI4MWYzMWQzNTE1ZTNjMjZiMWI4OTk4NmVlNjBjZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMUGxhdGZvcm1QYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9FR0xQbGF0Zm9ybVBhcmFtZXRl
cnMuaApAQCAtNDgsOCArNDgsOCBAQCBzdHJ1Y3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzCiAgICAg
YXV0byB0aWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKHJlbmRlcmVy
LCBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgZGV2aWNlVHlwZSwgcHJlc2VudFBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0xheWVyc0VuYWJsZWQsIGNvbnRleHRWaXJ0dWFs
aXphdGlvbiwgY29tbWFuZEdyYXBoRmVhdHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zZm9ybUZlZWRiYWNrRmVhdHVyZSwgcGxhdGZvcm1NZXRob2RzKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlYnVnTGF5ZXJzRW5hYmxlZCwgY29udGV4dFZpcnR1YWxpemF0aW9uLCB0cmFu
c2Zvcm1GZWVkYmFja0ZlYXR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZU5v
blplcm9NZW1vcnlGZWF0dXJlLCBwbGF0Zm9ybU1ldGhvZHMsIHJvYnVzdG5lc3MpOwogICAgIH0K
IAogICAgIEVHTGludCByZW5kZXJlciAgICAgICAgICAgICAgICAgICAgICAgICA9IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU7CkBAIC01OSw4ICs1OSw5IEBAIHN0cnVjdCBF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMKICAgICBFR0xpbnQgcHJlc2VudFBhdGggICAgICAgICAgICAg
ICAgICAgICAgPSBFR0xfRE9OVF9DQVJFOwogICAgIEVHTGludCBkZWJ1Z0xheWVyc0VuYWJsZWQg
ICAgICAgICAgICAgICA9IEVHTF9ET05UX0NBUkU7CiAgICAgRUdMaW50IGNvbnRleHRWaXJ0dWFs
aXphdGlvbiAgICAgICAgICAgID0gRUdMX0RPTlRfQ0FSRTsKLSAgICBFR0xpbnQgY29tbWFuZEdy
YXBoRmVhdHVyZSAgICAgICAgICAgICAgPSBFR0xfRE9OVF9DQVJFOworICAgIEVHTGludCByb2J1
c3RuZXNzICAgICAgICAgICAgICAgICAgICAgICA9IEVHTF9ET05UX0NBUkU7CiAgICAgRUdMaW50
IHRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZSAgICAgICAgID0gRUdMX0RPTlRfQ0FSRTsKKyAgICBF
R0xpbnQgYWxsb2NhdGVOb25aZXJvTWVtb3J5RmVhdHVyZSAgICAgPSBFR0xfRE9OVF9DQVJFOwog
ICAgIGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtTWV0aG9kcyA9IG51bGxwdHI7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5jcHAKaW5kZXggODJk
MDZiNTQ3OTBiZTY2YzY0N2FmODI4YmY1NmY3MjEzOGY4MWQyNS4uZGNiYjA0OGIzZjZlMDU4N2Vm
MjhhODg3OTNlMTFiODFmMzg1ZDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC9FR0xXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwv
RUdMV2luZG93LmNwcApAQCAtMTczLDE5ICsxNzMsMTkgQEAgYm9vbCBFR0xXaW5kb3c6OmluaXRp
YWxpemVEaXNwbGF5KE9TV2luZG93ICpvc1dpbmRvdywKICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBj
aGFyICo+IGRpc2FibGVkRmVhdHVyZU92ZXJyaWRlczsKICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBj
aGFyICo+IGVuYWJsZWRGZWF0dXJlT3ZlcnJpZGVzOwogCi0gICAgaWYgKHBhcmFtcy5jb21tYW5k
R3JhcGhGZWF0dXJlID09IEVHTF9UUlVFKQorICAgIGlmIChwYXJhbXMudHJhbnNmb3JtRmVlZGJh
Y2tGZWF0dXJlID09IEVHTF9GQUxTRSkKICAgICB7Ci0gICAgICAgIGVuYWJsZWRGZWF0dXJlT3Zl
cnJpZGVzLnB1c2hfYmFjaygiY29tbWFuZF9ncmFwaCIpOworICAgICAgICBkaXNhYmxlZEZlYXR1
cmVPdmVycmlkZXMucHVzaF9iYWNrKCJzdXBwb3J0c190cmFuc2Zvcm1fZmVlZGJhY2tfZXh0ZW5z
aW9uIik7CisgICAgICAgIGRpc2FibGVkRmVhdHVyZU92ZXJyaWRlcy5wdXNoX2JhY2soImVtdWxh
dGVfdHJhbnNmb3JtX2ZlZWRiYWNrIik7CiAgICAgfQotICAgIGVsc2UgaWYgKHBhcmFtcy5jb21t
YW5kR3JhcGhGZWF0dXJlID09IEVHTF9GQUxTRSkKKworICAgIGlmIChwYXJhbXMuYWxsb2NhdGVO
b25aZXJvTWVtb3J5RmVhdHVyZSA9PSBFR0xfVFJVRSkKICAgICB7Ci0gICAgICAgIGRpc2FibGVk
RmVhdHVyZU92ZXJyaWRlcy5wdXNoX2JhY2soImNvbW1hbmRfZ3JhcGgiKTsKKyAgICAgICAgZW5h
YmxlZEZlYXR1cmVPdmVycmlkZXMucHVzaF9iYWNrKCJhbGxvY2F0ZV9ub25femVyb19tZW1vcnki
KTsKICAgICB9Ci0KLSAgICBpZiAocGFyYW1zLnRyYW5zZm9ybUZlZWRiYWNrRmVhdHVyZSA9PSBF
R0xfRkFMU0UpCisgICAgZWxzZSBpZiAocGFyYW1zLmFsbG9jYXRlTm9uWmVyb01lbW9yeUZlYXR1
cmUgPT0gRUdMX0ZBTFNFKQogICAgIHsKLSAgICAgICAgZGlzYWJsZWRGZWF0dXJlT3ZlcnJpZGVz
LnB1c2hfYmFjaygic3VwcG9ydHNfdHJhbnNmb3JtX2ZlZWRiYWNrX2V4dGVuc2lvbiIpOwotICAg
ICAgICBkaXNhYmxlZEZlYXR1cmVPdmVycmlkZXMucHVzaF9iYWNrKCJlbXVsYXRlX3RyYW5zZm9y
bV9mZWVkYmFjayIpOworICAgICAgICBkaXNhYmxlZEZlYXR1cmVPdmVycmlkZXMucHVzaF9iYWNr
KCJhbGxvY2F0ZV9ub25femVyb19tZW1vcnkiKTsKICAgICB9CiAKICAgICBpZiAoIWRpc2FibGVk
RmVhdHVyZU92ZXJyaWRlcy5lbXB0eSgpKQpAQCAtNjIyLDEzICs2MjIsNiBAQCBib29sIEVHTFdp
bmRvdzo6aGFzRXJyb3IoKSBjb25zdAogICAgIHJldHVybiBlZ2xHZXRFcnJvcigpICE9IEVHTF9T
VUNDRVNTOwogfQogCi1ib29sIENoZWNrRXh0ZW5zaW9uRXhpc3RzKGNvbnN0IGNoYXIgKmFsbEV4
dGVuc2lvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHBhZGRlZEV4dGVuc2lvbnMgPSBzdGQ6OnN0cmluZygiICIpICsgYWxsRXh0ZW5zaW9u
cyArIHN0ZDo6c3RyaW5nKCIgIik7Ci0gICAgcmV0dXJuIHBhZGRlZEV4dGVuc2lvbnMuZmluZChz
dGQ6OnN0cmluZygiICIpICsgZXh0TmFtZSArIHN0ZDo6c3RyaW5nKCIgIikpICE9Ci0gICAgICAg
ICAgIHN0ZDo6c3RyaW5nOjpucG9zOwotfQotCiAvLyBzdGF0aWMKIHZvaWQgR0xXaW5kb3dCYXNl
OjpEZWxldGUoR0xXaW5kb3dCYXNlICoqd2luZG93KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC9FR0xXaW5kb3cuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvRUdMV2luZG93LmgKaW5kZXggMGQzOTcwOTk2MDA3Yjk1NmNiODRlMGMxOGFhZTQ2MjUy
ZGMyZWE0OC4uY2MxNDAyZjQxNjY1Zjc0MzgyMmRjYWJiNmY2YjE5YWJhZjdhMTM1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9FR0xXaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5oCkBAIC0xNTcsNiArMTU3LDQgQEAg
Y2xhc3MgQU5HTEVfVVRJTF9FWFBPUlQgRUdMV2luZG93IDogcHVibGljIEdMV2luZG93QmFzZQog
ICAgIEVHTGludCBtRUdMTWlub3JWZXJzaW9uOwogfTsKIAotQU5HTEVfVVRJTF9FWFBPUlQgYm9v
bCBDaGVja0V4dGVuc2lvbkV4aXN0cyhjb25zdCBjaGFyICphbGxFeHRlbnNpb25zLCBjb25zdCBz
dGQ6OnN0cmluZyAmZXh0TmFtZSk7Ci0KICNlbmRpZiAgLy8gVVRJTF9FR0xXSU5ET1dfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZnJhbWVfY2FwdHVyZV91dGls
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9mcmFtZV9jYXB0dXJlX3V0aWxzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTFhZTI1NjRiZjI5OTY1NDc2MmNiNWE4Mzg2NmU2YmU5YzZiMzAyZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZnJhbWVfY2FwdHVy
ZV91dGlscy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAyMCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBmcmFtZV9jYXB0dXJlX3V0
aWxzOgorLy8gICBIZWxwZXIgZnVuY3Rpb25zIGZvciBjYXB0dXJlIGFuZCByZXBsYXkgb2YgdHJh
Y2VzLgorLy8KKworI2lmbmRlZiBVVElMX0ZSQU1FX0NBUFRVUkVfVVRJTFNfSF8KKyNkZWZpbmUg
VVRJTF9GUkFNRV9DQVBUVVJFX1VUSUxTX0hfCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNs
dWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKworI2RlZmluZSBVU0VfU1lTVEVNX1pMSUIKKyNpbmNsdWRlICJjb21wcmVzc2lv
bl91dGlsc19wb3J0YWJsZS5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworaW5saW5lIHVpbnQ4
X3QgKkRlY29tcHJlc3NCaW5hcnlEYXRhKGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+ICZjb21w
cmVzc2VkRGF0YSkKK3sKKyAgICB1aW50MzJfdCB1bmNvbXByZXNzZWRTaXplID0KKyAgICAgICAg
emxpYl9pbnRlcm5hbDo6R2V0R3ppcFVuY29tcHJlc3NlZFNpemUoY29tcHJlc3NlZERhdGEuZGF0
YSgpLCBjb21wcmVzc2VkRGF0YS5zaXplKCkpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4
X3RbXT4gdW5jb21wcmVzc2VkRGF0YShuZXcgdWludDhfdFt1bmNvbXByZXNzZWRTaXplXSk7Cisg
ICAgdUxvbmcgZGVzdExlbiA9IHVuY29tcHJlc3NlZFNpemU7CisgICAgaW50IHpSZXN1bHQgPQor
ICAgICAgICB6bGliX2ludGVybmFsOjpHemlwVW5jb21wcmVzc0hlbHBlcih1bmNvbXByZXNzZWRE
YXRhLmdldCgpLCAmZGVzdExlbiwgY29tcHJlc3NlZERhdGEuZGF0YSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1TG9uZz4oY29tcHJl
c3NlZERhdGEuc2l6ZSgpKSk7CisKKyAgICBpZiAoelJlc3VsdCAhPSBaX09LKQorICAgIHsKKyAg
ICAgICAgc3RkOjpjZXJyIDw8ICJGYWlsdXJlIHRvIGRlY29tcHJlc3NlZCBiaW5hcnkgZGF0YTog
IiA8PCB6UmVzdWx0IDw8ICJcbiI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIHJldHVybiB1bmNvbXByZXNzZWREYXRhLnJlbGVhc2UoKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gVVRJTF9GUkFNRV9DQVBUVVJFX1VUSUxTX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Z1Y2hzaWEvU2NlbmljV2luZG93
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cu
Y3BwCmluZGV4IGJmMmE4YTM2ZmRlZmYxM2UzMjkzODBjNDZiMGY5Y2E2MDUxYWJlODEuLmEyM2Qx
MGE5MjYwODgwMjIwM2VkZjE1MmRjZWM4Y2Q3NjNmYzY5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuY3BwCkBAIC03Miw2
ICs3Miw3IEBAIFNjZW5pY1dpbmRvdzo6U2NlbmljV2luZG93KCkKICAgICAgIG1NYXRlcmlhbCgm
bVNjZW5pY1Nlc3Npb24pCiB7CiAgICAgbVNjZW5pY1Nlc3Npb24uc2V0X2Vycm9yX2hhbmRsZXIo
Zml0OjpiaW5kX21lbWJlcih0aGlzLCAmU2NlbmljV2luZG93OjpvblNjZW5pY0Vycm9yKSk7Cisg
ICAgbVNjZW5pY1Nlc3Npb24uc2V0X2V2ZW50X2hhbmRsZXIoZml0OjpiaW5kX21lbWJlcih0aGlz
LCAmU2NlbmljV2luZG93OjpvblNjZW5pY0V2ZW50cykpOwogICAgIG1TY2VuaWNTZXNzaW9uLnNl
dF9vbl9mcmFtZV9wcmVzZW50ZWRfaGFuZGxlcigKICAgICAgICAgZml0OjpiaW5kX21lbWJlcih0
aGlzLCAmU2NlbmljV2luZG93OjpvbkZyYW1lUHJlc2VudGVkKSk7CiB9CkBAIC04NCw3ICs4NSw3
IEBAIFNjZW5pY1dpbmRvdzo6flNjZW5pY1dpbmRvdygpCiBib29sIFNjZW5pY1dpbmRvdzo6aW5p
dGlhbGl6ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
ewogICAgIC8vIFNldCB1cCBzY2VuaWMgcmVzb3VyY2VzLgotICAgIG1TaGFwZS5TZXRTaGFwZShz
Y2VuaWM6OlJlY3RhbmdsZSgmbVNjZW5pY1Nlc3Npb24sIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBt
U2hhcGUuU2V0RXZlbnRNYXNrKGZ1Y2hzaWE6OnVpOjpnZng6OmtNZXRyaWNzRXZlbnRNYXNrKTsK
ICAgICBtU2hhcGUuU2V0TWF0ZXJpYWwobU1hdGVyaWFsKTsKIAogICAgIGZ1Y2hzaWE6OnVpOjp2
aWV3czo6Vmlld1Rva2VuIHZpZXdUb2tlbjsKQEAgLTEwMyw2ICsxMDQsMTMgQEAgYm9vbCBTY2Vu
aWNXaW5kb3c6OmluaXRpYWxpemUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGludCB3aWR0aCwg
aW50IGhlaWdodCkKIAogICAgIHJlc2V0TmF0aXZlV2luZG93KCk7CiAKKyAgICAvLyBCbG9jayB1
bnRpbCBpbml0aWFsIHZpZXcgZGltZW5zaW9ucyBhcmUga25vd24uCisgICAgd2hpbGUgKCFtSGFz
Vmlld01ldHJpY3MgJiYgIW1IYXNWaWV3UHJvcGVydGllcyAmJiAhbUxvc3RTZXNzaW9uKQorICAg
IHsKKyAgICAgICAgbUxvb3AtPlJlc2V0UXVpdCgpOworICAgICAgICBtTG9vcC0+UnVuKHp4Ojp0
aW1lOjppbmZpbml0ZSgpLCB0cnVlIC8qIG9uY2UgKi8pOworICAgIH0KKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xNjgsNiArMTc2LDEwIEBAIGJvb2wgU2NlbmljV2luZG93OjpyZXNpemUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgZnVjaHNpYV9lZ2xfd2luZG93X3Jlc2l6ZSht
RnVjaHNpYUVHTFdpbmRvdy5nZXQoKSwgd2lkdGgsIGhlaWdodCk7CiAKKyAgICBtVmlld1NpemVE
aXJ0eSA9IHRydWU7CisKKyAgICB1cGRhdGVWaWV3U2l6ZSgpOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTIwMyw3ICsyMTUsMjkgQEAgdm9pZCBTY2VuaWNXaW5kb3c6Om9uRnJhbWVQcmVz
ZW50ZWQoZnVjaHNpYTo6c2NlbmljOjpzY2hlZHVsaW5nOjpGcmFtZVByZXNlbnRlZEkKIAogdm9p
ZCBTY2VuaWNXaW5kb3c6Om9uU2NlbmljRXZlbnRzKHN0ZDo6dmVjdG9yPGZ1Y2hzaWE6OnVpOjpz
Y2VuaWM6OkV2ZW50PiBldmVudHMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIGZvciAo
Y29uc3QgYXV0byAmZXZlbnQgOiBldmVudHMpCisgICAgeworICAgICAgICBpZiAoZXZlbnQuaXNf
Z2Z4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5nZngoKS5pc19tZXRyaWNz
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdmeCgpLm1ldHJp
Y3MoKS5ub2RlX2lkICE9IG1TaGFwZS5pZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBvblZpZXdNZXRyaWNzKGV2ZW50LmdmeCgpLm1ldHJpY3MoKS5t
ZXRyaWNzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmdmeCgp
LmlzX3ZpZXdfcHJvcGVydGllc19jaGFuZ2VkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmdmeCgpLnZpZXdfcHJvcGVydGllc19jaGFuZ2VkKCkudmlld19pZCAh
PSBtVmlldy0+aWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgb25WaWV3UHJvcGVydGllcyhldmVudC5nZngoKS52aWV3X3Byb3BlcnRpZXNfY2hhbmdl
ZCgpLnByb3BlcnRpZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKG1WaWV3U2l6ZURpcnR5KQorICAgIHsKKyAgICAgICAgdXBkYXRlVmlld1NpemUoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgU2NlbmljV2luZG93OjpvblNjZW5pY0Vycm9yKHp4X3N0YXR1c190IHN0
YXR1cykKQEAgLTIxMyw2ICsyNDcsNTIgQEAgdm9pZCBTY2VuaWNXaW5kb3c6Om9uU2NlbmljRXJy
b3Ioenhfc3RhdHVzX3Qgc3RhdHVzKQogICAgIG1Mb29wLT5RdWl0KCk7CiB9CiAKK3ZvaWQgU2Nl
bmljV2luZG93OjpvblZpZXdNZXRyaWNzKGNvbnN0IGZ1Y2hzaWE6OnVpOjpnZng6Ok1ldHJpY3Mg
Jm1ldHJpY3MpCit7CisgICAgbURpc3BsYXlTY2FsZVggPSBtZXRyaWNzLnNjYWxlX3g7CisgICAg
bURpc3BsYXlTY2FsZVkgPSBtZXRyaWNzLnNjYWxlX3k7CisKKyAgICBtSGFzVmlld01ldHJpY3Mg
PSB0cnVlOworICAgIG1WaWV3U2l6ZURpcnR5ICA9IHRydWU7Cit9CisKK3ZvaWQgU2NlbmljV2lu
ZG93OjpvblZpZXdQcm9wZXJ0aWVzKGNvbnN0IGZ1Y2hzaWE6OnVpOjpnZng6OlZpZXdQcm9wZXJ0
aWVzICZwcm9wZXJ0aWVzKQoreworICAgIGZsb2F0IHdpZHRoID0gcHJvcGVydGllcy5ib3VuZGlu
Z19ib3gubWF4LnggLSBwcm9wZXJ0aWVzLmJvdW5kaW5nX2JveC5taW4ueCAtCisgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0aWVzLmluc2V0X2Zyb21fbWluLnggLSBwcm9wZXJ0aWVzLmluc2V0X2Zy
b21fbWF4Lng7CisgICAgZmxvYXQgaGVpZ2h0ID0gcHJvcGVydGllcy5ib3VuZGluZ19ib3gubWF4
LnkgLSBwcm9wZXJ0aWVzLmJvdW5kaW5nX2JveC5taW4ueSAtCisgICAgICAgICAgICAgICAgICAg
cHJvcGVydGllcy5pbnNldF9mcm9tX21pbi55IC0gcHJvcGVydGllcy5pbnNldF9mcm9tX21heC55
OworCisgICAgbURpc3BsYXlXaWR0aERpcHMgID0gd2lkdGg7CisgICAgbURpc3BsYXlIZWlnaHRE
aXBzID0gaGVpZ2h0OworCisgICAgbUhhc1ZpZXdQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICBtVmll
d1NpemVEaXJ0eSAgICAgPSB0cnVlOworfQorCit2b2lkIFNjZW5pY1dpbmRvdzo6dXBkYXRlVmll
d1NpemUoKQoreworICAgIGlmICghbVZpZXdTaXplRGlydHkgfHwgIW1IYXNWaWV3TWV0cmljcyB8
fCAhbUhhc1ZpZXdQcm9wZXJ0aWVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1WaWV3U2l6ZURpcnR5ID0gZmFsc2U7CisKKyAgICAvLyBTdXJmYWNlIHNpemUgaW4gcGl4
ZWxzIGlzCisgICAgLy8gICAobVdpZHRoLCBtSGVpZ2h0KQorICAgIC8vCisgICAgLy8gVmlldyBz
aXplIGluIHBpeGVscyBpcworICAgIC8vICAgKG1EaXNwbGF5V2lkdGhEaXBzICogbURpc3BsYXlT
Y2FsZVgpIHggKG1EaXNwbGF5SGVpZ2h0RGlwcyAqIG1EaXNwbGF5U2NhbGVZKQorCisgICAgZmxv
YXQgd2lkdGhEaXBzICA9IG1XaWR0aCAvIG1EaXNwbGF5U2NhbGVYOworICAgIGZsb2F0IGhlaWdo
dERpcHMgPSBtSGVpZ2h0IC8gbURpc3BsYXlTY2FsZVk7CisKKyAgICBtU2hhcGUuU2V0U2hhcGUo
c2NlbmljOjpSZWN0YW5nbGUoJm1TY2VuaWNTZXNzaW9uLCB3aWR0aERpcHMsIGhlaWdodERpcHMp
KTsKKyAgICBtU2hhcGUuU2V0VHJhbnNsYXRpb24oMC41ZiAqIHdpZHRoRGlwcywgMC41ZiAqIGhl
aWdodERpcHMsIDAuZik7CisgICAgcHJlc2VudCgpOworfQorCiAvLyBzdGF0aWMKIE9TV2luZG93
ICpPU1dpbmRvdzo6TmV3KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0
aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuaAppbmRleCA4ZDc3NGIyMzkwMTgzMzExYTgyOTY3MzI0
NmFmMzYwODQ2MzAwZDcwLi42YWU1NDBiYTBjNGUxN2I1NDkxMzIyNWY4NmViNWJhMDkwNzNlMmIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2Z1Y2hzaWEvU2Nlbmlj
V2luZG93LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9mdWNoc2lhL1NjZW5p
Y1dpbmRvdy5oCkBAIC02Myw4ICs2MywxMiBAQCBjbGFzcyBBTkdMRV9VVElMX0VYUE9SVCBTY2Vu
aWNXaW5kb3cgOiBwdWJsaWMgT1NXaW5kb3cKICAgICB2b2lkIG9uU2NlbmljRXZlbnRzKHN0ZDo6
dmVjdG9yPGZ1Y2hzaWE6OnVpOjpzY2VuaWM6OkV2ZW50PiBldmVudHMpOwogICAgIHZvaWQgb25T
Y2VuaWNFcnJvcih6eF9zdGF0dXNfdCBzdGF0dXMpOwogICAgIHZvaWQgb25GcmFtZVByZXNlbnRl
ZChmdWNoc2lhOjpzY2VuaWM6OnNjaGVkdWxpbmc6OkZyYW1lUHJlc2VudGVkSW5mbyBpbmZvKTsK
KyAgICB2b2lkIG9uVmlld01ldHJpY3MoY29uc3QgZnVjaHNpYTo6dWk6OmdmeDo6TWV0cmljcyAm
bWV0cmljcyk7CisgICAgdm9pZCBvblZpZXdQcm9wZXJ0aWVzKGNvbnN0IGZ1Y2hzaWE6OnVpOjpn
Zng6OlZpZXdQcm9wZXJ0aWVzICZwcm9wZXJ0aWVzKTsKIAogICBwcml2YXRlOgorICAgIHZvaWQg
dXBkYXRlVmlld1NpemUoKTsKKwogICAgIC8vIFNjZW5pY1dpbmRvdyBhc3luYyBsb29wLgogICAg
IGFzeW5jOjpMb29wICpjb25zdCBtTG9vcDsKIApAQCAtODgsNiArOTIsMTUgQEAgY2xhc3MgQU5H
TEVfVVRJTF9FWFBPUlQgU2NlbmljV2luZG93IDogcHVibGljIE9TV2luZG93CiAgICAgLy8gU2Nl
bmljIHZpZXcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPHNjZW5pYzo6Vmlldz4gbVZpZXc7CiAKKyAg
ICAvLyBWaWV3IGdlb21ldHJ5LgorICAgIGZsb2F0IG1EaXNwbGF5SGVpZ2h0RGlwcyA9IDAuZjsK
KyAgICBmbG9hdCBtRGlzcGxheVdpZHRoRGlwcyAgPSAwLmY7CisgICAgZmxvYXQgbURpc3BsYXlT
Y2FsZVggICAgID0gMC5mOworICAgIGZsb2F0IG1EaXNwbGF5U2NhbGVZICAgICA9IDAuZjsKKyAg
ICBib29sIG1IYXNWaWV3UHJvcGVydGllcyAgPSBmYWxzZTsKKyAgICBib29sIG1IYXNWaWV3TWV0
cmljcyAgICAgPSBmYWxzZTsKKyAgICBib29sIG1WaWV3U2l6ZURpcnR5ICAgICAgPSBmYWxzZTsK
KwogICAgIC8vIEVHTCBuYXRpdmUgd2luZG93LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxmdWNoc2lh
X2VnbF93aW5kb3csIEZ1Y2hzaWFFR0xXaW5kb3dEZWxldGVyPiBtRnVjaHNpYUVHTFdpbmRvdzsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2dsZXNfbG9hZGVy
X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nbGVzX2xvYWRlcl9h
dXRvZ2VuLmNwcAppbmRleCAzODM0ODlkMzFlMDcwZGRmZWViOGE3NmUzYjA5N2JhOGZiZjM1ZTBj
Li44ODM2ODM0MGRjNThkOWRjMGZkODU5OTA5OWI0MDM4OWViMWU1ZDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2dsZXNfbG9hZGVyX2F1dG9nZW4uY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2xlc19sb2FkZXJfYXV0b2dlbi5jcHAKQEAg
LTQyOSw2ICs0MjksNyBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVFRFWElNQUdFQU5HTEVQ
Uk9DIGdsR2V0VGV4SW1hZ2VBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0FSUkFZ
U0lOU1RBTkNFREFOR0xFUFJPQyBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRTsKIEFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DIGdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFZFUlRFWEFUVFJJQkRJ
VklTT1JBTkdMRVBST0MgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEU7CitBTkdMRV9VVElMX0VY
UE9SVCBQRk5HTElNUE9SVE1FTU9SWVpJUkNPTkhBTkRMRUFOR0xFUFJPQyBnbEltcG9ydE1lbW9y
eVppcmNvbkhhbmRsZUFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xNVUxUSURSQVdBUlJB
WVNBTkdMRVBST0MgZ2xNdWx0aURyYXdBcnJheXNBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMTVVMVElEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DIGdsTXVsdGlEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTQU5H
TEVQUk9DIGdsTXVsdGlEcmF3RWxlbWVudHNBTkdMRTsKQEAgLTUwMyw2ICs1MDQsNyBAQCBBTkdM
RV9VVElMX0VYUE9SVCBQRk5HTFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEVQUk9DIGdsVGV4UGFy
YW1ldGVyZnZSb2J1c3RBTkdMRQogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xURVhQQVJBTUVURVJJ
VlJPQlVTVEFOR0xFUFJPQyBnbFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEU7CiBBTkdMRV9VVElM
X0VYUE9SVCBQRk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdMRVBST0MgZ2xUZXhTdWJJbWFnZTJE
Um9idXN0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFRFWFNVQklNQUdFM0RST0JVU1RB
TkdMRVBST0MgZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTElNUE9SVFNFTUFQSE9SRVpJUkNPTkhBTkRMRUFOR0xFUFJPQyBnbEltcG9ydFNlbWFwaG9y
ZVppcmNvbkhhbmRsZUFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJTlZBTElEQVRFVEVY
VFVSRUFOR0xFUFJPQyBnbEludmFsaWRhdGVUZXh0dXJlQU5HTEU7CiBBTkdMRV9VVElMX0VYUE9S
VCBQRk5HTFRFWElNQUdFMkRFWFRFUk5BTEFOR0xFUFJPQyBnbFRleEltYWdlMkRFeHRlcm5hbEFO
R0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRNVUxUSVNBTVBMRUZWQU5HTEVQUk9DIGds
R2V0TXVsdGlzYW1wbGVmdkFOR0xFOwpAQCAtNTE2LDM1ICs1MTgsNyBAQCBBTkdMRV9VVElMX0VY
UE9SVCBQRk5HTENPTVBSRVNTRURDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENvbXByZXNzZWRD
b3B5VGV4dHVyZQogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xDT1BZU1VCVEVYVFVSRUNIUk9NSVVN
UFJPQyBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU07CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENP
UFlURVhUVVJFQ0hST01JVU1QUk9DIGdsQ29weVRleHR1cmVDSFJPTUlVTTsKIEFOR0xFX1VUSUxf
RVhQT1JUIFBGTkdMQ09WRVJBR0VNT0RVTEFUSU9OQ0hST01JVU1QUk9DIGdsQ292ZXJhZ2VNb2R1
bGF0aW9uQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTE1BVFJJWExPQURJREVOVElU
WUNIUk9NSVVNUFJPQyBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNOwotQU5HTEVfVVRJTF9F
WFBPUlQgUEZOR0xNQVRSSVhMT0FERkNIUk9NSVVNUFJPQyBnbE1hdHJpeExvYWRmQ0hST01JVU07
CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTExPU0VDT05URVhUQ0hST01JVU1QUk9DIGdsTG9zZUNv
bnRleHRDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQklOREZSQUdNRU5USU5QVVRM
T0NBVElPTkNIUk9NSVVNUFJPQyBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTTsK
LUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQ09WRVJGSUxMUEFUSENIUk9NSVVNUFJPQyBnbENvdmVy
RmlsbFBhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQ09WRVJGSUxMUEFUSElO
U1RBTkNFRENIUk9NSVVNUFJPQyBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTTsKLUFO
R0xFX1VUSUxfRVhQT1JUIFBGTkdMQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DIGdsQ292ZXJT
dHJva2VQYXRoQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSU1RST0tFUEFU
SElOU1RBTkNFRENIUk9NSVVNUFJPQyBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
OwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xERUxFVEVQQVRIU0NIUk9NSVVNUFJPQyBnbERlbGV0
ZVBhdGhzQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFTlBBVEhTQ0hST01JVU1Q
Uk9DIGdsR2VuUGF0aHNDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMR0VUUEFUSFBB
UkFNRVRFUkZWQ0hST01JVU1QUk9DIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU07Ci1BTkdM
RV9VVElMX0VYUE9SVCBQRk5HTEdFVFBBVEhQQVJBTUVURVJJVkNIUk9NSVVNUFJPQyBnbEdldFBh
dGhQYXJhbWV0ZXJpdkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJU1BBVEhDSFJP
TUlVTVBST0MgZ2xJc1BhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMUEFUSENP
TU1BTkRTQ0hST01JVU1QUk9DIGdsUGF0aENvbW1hbmRzQ0hST01JVU07Ci1BTkdMRV9VVElMX0VY
UE9SVCBQRk5HTFBBVEhQQVJBTUVURVJGQ0hST01JVU1QUk9DIGdsUGF0aFBhcmFtZXRlcmZDSFJP
TUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMUEFUSFBBUkFNRVRFUklDSFJPTUlVTVBST0Mg
Z2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xQQVRIU1RF
TkNJTEZVTkNDSFJPTUlVTVBST0MgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTTsKLUFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVUR0VOQ0hST01JVU1QUk9DCi0g
ICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQ
T1JUIFBGTkdMU1RFTkNJTEZJTExQQVRIQ0hST01JVU1QUk9DIGdsU3RlbmNpbEZpbGxQYXRoQ0hS
T01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxGSUxMUEFUSElOU1RBTkNFRENI
Uk9NSVVNUFJPQyBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNOwotQU5HTEVfVVRJ
TF9FWFBPUlQgUEZOR0xTVEVOQ0lMU1RST0tFUEFUSENIUk9NSVVNUFJPQyBnbFN0ZW5jaWxTdHJv
a2VQYXRoQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxTVFJPS0VQQVRI
SU5TVEFOQ0VEQ0hST01JVU1QUk9DIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRIQ0hST01J
VU1QUk9DIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU07Ci1BTkdMRV9VVElMX0VY
UE9SVCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQwot
ICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU07Ci1BTkdMRV9V
VElMX0VYUE9SVCBQRk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DIGds
U3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MKLSAgICBn
bFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU07CiBBTkdMRV9VVElM
X0VYUE9SVCBQRk5HTEJJTkRGUkFHREFUQUxPQ0FUSU9ORVhUUFJPQyBnbEJpbmRGcmFnRGF0YUxv
Y2F0aW9uRVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTklO
REVYRURFWFRQUk9DIGdsQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkRVhUOwogQU5HTEVfVVRJ
TF9FWFBPUlQgUEZOR0xHRVRGUkFHREFUQUlOREVYRVhUUFJPQyBnbEdldEZyYWdEYXRhSW5kZXhF
WFQ7CkBAIC01NTcsNiArNTMxLDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCRUdJTlFVRVJZ
RVhUUFJPQyBnbEJlZ2luUXVlcnlFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERFTEVURVFV
RVJJRVNFWFRQUk9DIGdsRGVsZXRlUXVlcmllc0VYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
RU5EUVVFUllFWFRQUk9DIGdsRW5kUXVlcnlFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdF
TlFVRVJJRVNFWFRQUk9DIGdsR2VuUXVlcmllc0VYVDsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
R0VUSU5URUdFUjY0VkVYVFBST0MgZ2xHZXRJbnRlZ2VyNjR2RVhUOwogQU5HTEVfVVRJTF9FWFBP
UlQgUEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZFWFRQUk9DIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhU
OwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRRVUVSWU9CSkVDVElWRVhUUFJPQyBnbEdldFF1
ZXJ5T2JqZWN0aXZFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVFFVRVJZT0JKRUNUVUk2
NFZFWFRQUk9DIGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVDsKQEAgLTU2NSw2ICs1NDAsMTQgQEAg
QU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRRVUVSWUlWRVhUUFJPQyBnbEdldFF1ZXJ5aXZFWFQ7
CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTElTUVVFUllFWFRQUk9DIGdsSXNRdWVyeUVYVDsKIEFO
R0xFX1VUSUxfRVhQT1JUIFBGTkdMUVVFUllDT1VOVEVSRVhUUFJPQyBnbFF1ZXJ5Q291bnRlckVY
VDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0JVRkZFUlNFWFRQUk9DIGdsRHJhd0J1ZmZl
cnNFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlFWFRQ
Uk9DIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVDsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
QkxFTkRFUVVBVElPTklFWFRQUk9DIGdsQmxlbmRFcXVhdGlvbmlFWFQ7CitBTkdMRV9VVElMX0VY
UE9SVCBQRk5HTEJMRU5ERlVOQ1NFUEFSQVRFSUVYVFBST0MgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlF
WFQ7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEJMRU5ERlVOQ0lFWFRQUk9DIGdsQmxlbmRGdW5j
aUVYVDsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQ09MT1JNQVNLSUVYVFBST0MgZ2xDb2xvck1h
c2tpRVhUOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xESVNBQkxFSUVYVFBST0MgZ2xEaXNhYmxl
aUVYVDsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRU5BQkxFSUVYVFBST0MgZ2xFbmFibGVpRVhU
OworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xJU0VOQUJMRURJRVhUUFJPQyBnbElzRW5hYmxlZGlF
WFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVNRU5UU0JBU0VWRVJURVhFWFRQUk9D
IGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJB
V0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRFWEVYVFBST0MgZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWRCYXNlVmVydGV4RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xEUkFXUkFOR0VFTEVNRU5U
U0JBU0VWRVJURVhFWFRQUk9DIGdsRHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4RVhUOwpAQCAt
NjI3LDYgKzYxMCwxNCBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTFRFU1RGRU5DRU5WUFJPQyBn
bFRlc3RGZW5jZU5WOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRF
UkJVRkZFUlNUT1JBR0VPRVNQUk9DCiAgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0
b3JhZ2VPRVM7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJE
T0VTUFJPQyBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTOworQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xCTEVOREVRVUFUSU9OU0VQQVJBVEVJT0VTUFJPQyBnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZWlPRVM7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEJMRU5ERVFVQVRJT05JT0VTUFJPQyBnbEJs
ZW5kRXF1YXRpb25pT0VTOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVOREZVTkNTRVBBUkFU
RUlPRVNQUk9DIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTOworQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xCTEVOREZVTkNJT0VTUFJPQyBnbEJsZW5kRnVuY2lPRVM7CitBTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTENPTE9STUFTS0lPRVNQUk9DIGdsQ29sb3JNYXNraU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JU
IFBGTkdMRElTQUJMRUlPRVNQUk9DIGdsRGlzYWJsZWlPRVM7CitBTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTEVOQUJMRUlPRVNQUk9DIGdsRW5hYmxlaU9FUzsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
SVNFTkFCTEVESU9FU1BST0MgZ2xJc0VuYWJsZWRpT0VTOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYT0VTUFJPQyBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhP
RVM7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREJBU0VWRVJU
RVhPRVNQUk9DIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9FUzsKIEFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNCQVNFVkVSVEVYT0VTUFJPQyBnbERyYXdS
YW5nZUVsZW1lbnRzQmFzZVZlcnRleE9FUzsKQEAgLTExNTAsNiArMTE0MSw4IEBAIEFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVDT05URVhUQU5HTEVQUk9D
CiAgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMVkVSVEVYQVRUUklCRElWSVNPUkFOR0xFQ09OVEVYVEFOR0xFUFJPQwog
ICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9F
WFBPUlQgUEZOR0xJTVBPUlRNRU1PUllaSVJDT05IQU5ETEVBTkdMRUNPTlRFWFRBTkdMRVBST0MK
KyAgICBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgUEZOR0xNVUxUSURSQVdBUlJBWVNBTkdMRUNPTlRFWFRBTkdMRVBST0MgZ2xN
dWx0aURyYXdBcnJheXNBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
TVVMVElEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xNdWx0
aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRUNvbnRleHRBTkdMRTsKQEAgLTEyNzgsNiArMTI3MSw4
IEBAIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMVEVYU1VCSU1BR0UyRFJPQlVTVEFOR0xFQ09OVEVY
VEFOR0xFUFJPQwogICAgIGdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFOwog
QU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xURVhTVUJJTUFHRTNEUk9CVVNUQU5HTEVDT05URVhUQU5H
TEVQUk9DCiAgICAgZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEVDb250ZXh0QU5HTEU7CitBTkdM
RV9VVElMX0VYUE9SVCBQRk5HTElNUE9SVFNFTUFQSE9SRVpJUkNPTkhBTkRMRUFOR0xFQ09OVEVY
VEFOR0xFUFJPQworICAgIGdsSW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0
QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTElOVkFMSURBVEVURVhUVVJFQU5HTEVDT05U
RVhUQU5HTEVQUk9DIGdsSW52YWxpZGF0ZVRleHR1cmVBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIFBGTkdMVEVYSU1BR0UyREVYVEVSTkFMQU5HTEVDT05URVhUQU5HTEVQUk9D
CiAgICAgZ2xUZXhJbWFnZTJERXh0ZXJuYWxBTkdMRUNvbnRleHRBTkdMRTsKQEAgLTEyOTksNDkg
KzEyOTQsNyBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPUFlTVUJURVhUVVJFQ0hST01JVU1D
T05URVhUQU5HTEVQUk9DIGdsQ29weVN1YlRleHR1cmVDSAogQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xDT1BZVEVYVFVSRUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyBnbENvcHlUZXh0dXJlQ0hST01J
VU1Db250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPVkVSQUdFTU9EVUxBVElP
TkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01J
VU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTE1BVFJJWExPQURJREVOVElU
WUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsTWF0cml4TG9hZElkZW50aXR5Q0hST01J
VU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTE1BVFJJWExPQURGQ0hST01J
VU1DT05URVhUQU5HTEVQUk9DIGdsTWF0cml4TG9hZGZDSFJPTUlVTUNvbnRleHRBTkdMRTsKIEFO
R0xFX1VUSUxfRVhQT1JUIFBGTkdMTE9TRUNPTlRFWFRDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0Mg
Z2xMb3NlQ29udGV4dENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZO
R0xCSU5ERlJBR01FTlRJTlBVVExPQ0FUSU9OQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAg
Z2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9V
VElMX0VYUE9SVCBQRk5HTENPVkVSRklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xD
b3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5H
TENPVkVSRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbENv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQ
T1JUIFBGTkdMQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xD
b3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAg
Z2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VU
SUxfRVhQT1JUIFBGTkdMREVMRVRFUEFUSFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xEZWxl
dGVQYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRU5Q
QVRIU0NIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyBnbEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5H
TEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVFBBVEhQQVJBTUVURVJGVkNIUk9NSVVNQ09O
VEVYVEFOR0xFUFJPQwotICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250ZXh0QU5H
TEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVFBBVEhQQVJBTUVURVJJVkNIUk9NSVVNQ09O
VEVYVEFOR0xFUFJPQwotICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250ZXh0QU5H
TEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTElTUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJP
QyBnbElzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xQ
QVRIQ09NTUFORFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xQYXRoQ29tbWFuZHNDSFJPTUlV
TUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMUEFUSFBBUkFNRVRFUkZDSFJP
TUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNQ29udGV4dEFOR0xF
OwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xQQVRIUEFSQU1FVEVSSUNIUk9NSVVNQ09OVEVYVEFO
R0xFUFJPQyBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElM
X0VYUE9SVCBQRk5HTFBBVEhTVEVOQ0lMRlVOQ0NIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAg
IGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9S
VCBQRk5HTFBST0dSQU1QQVRIRlJBR01FTlRJTlBVVEdFTkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJP
QwotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1Db250ZXh0QU5HTEU7
Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxGSUxMUEFUSENIUk9NSVVNQ09OVEVYVEFO
R0xFUFJPQwotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdM
RV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0
QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxTVFJPS0VQQVRIQ0hST01JVU1D
T05URVhUQU5HTEVQUk9DCi0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENIUk9NSVVNQ29udGV4dEFO
R0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xTVEVOQ0lMU1RST0tFUEFUSElOU1RBTkNFRENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMU1RFTkNJTFRIRU5D
T1ZFUkZJTExQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdM
U1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRB
TkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhD
SFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRo
Q0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBQRk5HTFNURU5DSUxUSEVO
Q09WRVJTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xT
dGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFOwog
QU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTkVYVENPTlRFWFRBTkdM
RVBST0MKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUQ29udGV4dEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTklOREVYRURFWFRDT05URVhUQU5H
TEVQUk9DCkBAIC0xMzU3LDYgKzEzMTAsNyBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEJFR0lO
UVVFUllFWFRDT05URVhUQU5HTEVQUk9DIGdsQmVnaW5RdWVyeUVYVENvbnRleHRBTkdMRQogQU5H
TEVfVVRJTF9FWFBPUlQgUEZOR0xERUxFVEVRVUVSSUVTRVhUQ09OVEVYVEFOR0xFUFJPQyBnbERl
bGV0ZVF1ZXJpZXNFWFRDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEVORFFV
RVJZRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEVuZFF1ZXJ5RVhUQ29udGV4dEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgUEZOR0xHRU5RVUVSSUVTRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEdlblF1ZXJp
ZXNFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEdFVElOVEVHRVI2NFZF
WFRDT05URVhUQU5HTEVQUk9DIGdsR2V0SW50ZWdlcjY0dkVYVENvbnRleHRBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRWRVhUQ09OVEVYVEFOR0xFUFJPQyBn
bEdldFF1ZXJ5T2JqZWN0aTY0dkVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMR0VUUVVFUllPQkpFQ1RJVkVYVENPTlRFWFRBTkdMRVBST0MgZ2xHZXRRdWVyeU9iamVjdGl2
RVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRRVUVSWU9CSkVDVFVJ
NjRWRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFRDb250ZXh0QU5H
TEU7CkBAIC0xMzY1LDYgKzEzMTksMTUgQEAgQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xHRVRRVUVS
WUlWRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEdldFF1ZXJ5aXZFWFRDb250ZXh0QU5HTEUKIEFOR0xF
X1VUSUxfRVhQT1JUIFBGTkdMSVNRVUVSWUVYVENPTlRFWFRBTkdMRVBST0MgZ2xJc1F1ZXJ5RVhU
Q29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xRVUVSWUNPVU5URVJFWFRDT05U
RVhUQU5HTEVQUk9DIGdsUXVlcnlDb3VudGVyRVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9F
WFBPUlQgUEZOR0xEUkFXQlVGRkVSU0VYVENPTlRFWFRBTkdMRVBST0MgZ2xEcmF3QnVmZmVyc0VY
VENvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMQkxFTkRFUVVBVElPTlNFUEFS
QVRFSUVYVENPTlRFWFRBTkdMRVBST0MKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFRD
b250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEJMRU5ERVFVQVRJT05JRVhUQ09O
VEVYVEFOR0xFUFJPQyBnbEJsZW5kRXF1YXRpb25pRVhUQ29udGV4dEFOR0xFOworQU5HTEVfVVRJ
TF9FWFBPUlQgUEZOR0xCTEVOREZVTkNTRVBBUkFURUlFWFRDT05URVhUQU5HTEVQUk9DIGdsQmxl
bmRGdW5jU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xC
TEVOREZVTkNJRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEU7
CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPTE9STUFTS0lFWFRDT05URVhUQU5HTEVQUk9DIGds
Q29sb3JNYXNraUVYVENvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRElTQUJM
RUlFWFRDT05URVhUQU5HTEVQUk9DIGdsRGlzYWJsZWlFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9V
VElMX0VYUE9SVCBQRk5HTEVOQUJMRUlFWFRDT05URVhUQU5HTEVQUk9DIGdsRW5hYmxlaUVYVENv
bnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBGTkdMSVNFTkFCTEVESUVYVENPTlRFWFRB
TkdMRVBST0MgZ2xJc0VuYWJsZWRpRVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQg
UEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYRVhUQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsRHJh
d0VsZW1lbnRzQmFzZVZlcnRleEVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRFWEVYVENPTlRFWFRBTkdMRVBST0MKQEAg
LTE0NDUsNiArMTQwOCwxNSBAQCBBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEVHTElNQUdFVEFSR0VU
UkVOREVSQlVGRkVSU1RPUkFHRU9FU0NPTlRFWFRBTkdMRVBST0MKICAgICBnbEVHTEltYWdlVGFy
Z2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FU0NvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JU
IFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xF
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FU0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JU
IFBGTkdMQkxFTkRFUVVBVElPTlNFUEFSQVRFSU9FU0NPTlRFWFRBTkdMRVBST0MKKyAgICBnbEJs
ZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQ
Rk5HTEJMRU5ERVFVQVRJT05JT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRXF1YXRpb25pT0VT
Q29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVOREZVTkNTRVBBUkFURUlP
RVNDT05URVhUQU5HTEVQUk9DIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFOwor
QU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xCTEVOREZVTkNJT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEJs
ZW5kRnVuY2lPRVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTENPTE9STUFT
S0lPRVNDT05URVhUQU5HTEVQUk9DIGdsQ29sb3JNYXNraU9FU0NvbnRleHRBTkdMRTsKK0FOR0xF
X1VUSUxfRVhQT1JUIFBGTkdMRElTQUJMRUlPRVNDT05URVhUQU5HTEVQUk9DIGdsRGlzYWJsZWlP
RVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBQRk5HTEVOQUJMRUlPRVNDT05URVhU
QU5HTEVQUk9DIGdsRW5hYmxlaU9FU0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIFBG
TkdMSVNFTkFCTEVESU9FU0NPTlRFWFRBTkdMRVBST0MgZ2xJc0VuYWJsZWRpT0VTQ29udGV4dEFO
R0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgUEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYT0VTQ09O
VEVYVEFOR0xFUFJPQwogICAgIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FU0NvbnRleHRBTkdM
RTsKIEFOR0xFX1VUSUxfRVhQT1JUIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRF
WE9FU0NPTlRFWFRBTkdMRVBST0MKQEAgLTIxMzAsNiArMjEwMiw4IEBAIHZvaWQgTG9hZEdMRVMo
TG9hZFByb2MgbG9hZFByb2MpCiAgICAgICAgIGxvYWRQcm9jKCJnbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFIikpOwogICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFID0KICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JBTkdMRVBST0M+KGxvYWRQ
cm9jKCJnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSIpKTsKKyAgICBnbEltcG9ydE1lbW9yeVpp
cmNvbkhhbmRsZUFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTElNUE9SVE1FTU9SWVpJUkNP
TkhBTkRMRUFOR0xFUFJPQz4oCisgICAgICAgIGxvYWRQcm9jKCJnbEltcG9ydE1lbW9yeVppcmNv
bkhhbmRsZUFOR0xFIikpOwogICAgIGdsTXVsdGlEcmF3QXJyYXlzQU5HTEUgPQogICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTkdMTVVMVElEUkFXQVJSQVlTQU5HTEVQUk9DPihsb2FkUHJvYygi
Z2xNdWx0aURyYXdBcnJheXNBTkdMRSIpKTsKICAgICBnbE11bHRpRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTE1VTFRJRFJBV0FSUkFZU0lOU1RBTkNFREFO
R0xFUFJPQz4oCkBAIC0yMjg4LDYgKzIyNjIsOSBAQCB2b2lkIExvYWRHTEVTKExvYWRQcm9jIGxv
YWRQcm9jKQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMVEVYU1VCSU1BR0UyRFJPQlVT
VEFOR0xFUFJPQz4obG9hZFByb2MoImdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFIikpOwogICAg
IGdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTFRFWFNVQklNQUdFM0RST0JVU1RBTkdMRVBST0M+KGxvYWRQcm9jKCJnbFRleFN1YkltYWdl
M0RSb2J1c3RBTkdMRSIpKTsKKyAgICBnbEltcG9ydFNlbWFwaG9yZVppcmNvbkhhbmRsZUFOR0xF
ID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTElNUE9SVFNFTUFQSE9SRVpJUkNPTkhB
TkRMRUFOR0xFUFJPQz4oCisgICAgICAgICAgICBsb2FkUHJvYygiZ2xJbXBvcnRTZW1hcGhvcmVa
aXJjb25IYW5kbGVBTkdMRSIpKTsKICAgICBnbEludmFsaWRhdGVUZXh0dXJlQU5HTEUgPQogICAg
ICAgICByZWludGVycHJldF9jYXN0PFBGTkdMSU5WQUxJREFURVRFWFRVUkVBTkdMRVBST0M+KGxv
YWRQcm9jKCJnbEludmFsaWRhdGVUZXh0dXJlQU5HTEUiKSk7CiAgICAgZ2xUZXhJbWFnZTJERXh0
ZXJuYWxBTkdMRSA9CkBAIC0yMzE0LDY2ICsyMjkxLDggQEAgdm9pZCBMb2FkR0xFUyhMb2FkUHJv
YyBsb2FkUHJvYykKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTENPUFlURVhUVVJFQ0hS
T01JVU1QUk9DPihsb2FkUHJvYygiZ2xDb3B5VGV4dHVyZUNIUk9NSVVNIikpOwogICAgIGdsQ292
ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMQ09WRVJBR0VN
T0RVTEFUSU9OQ0hST01JVU1QUk9DPigKICAgICAgICAgbG9hZFByb2MoImdsQ292ZXJhZ2VNb2R1
bGF0aW9uQ0hST01JVU0iKSk7Ci0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTVBST0M+KAotICAg
ICAgICBsb2FkUHJvYygiZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTSIpKTsKLSAgICBnbE1h
dHJpeExvYWRmQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMTUFUUklY
TE9BREZDSFJPTUlVTVBST0M+KGxvYWRQcm9jKCJnbE1hdHJpeExvYWRmQ0hST01JVU0iKSk7CiAg
ICAgZ2xMb3NlQ29udGV4dENIUk9NSVVNID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5H
TExPU0VDT05URVhUQ0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xMb3NlQ29udGV4dENIUk9NSVVN
IikpOwotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNID0KLSAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxQRk5HTEJJTkRGUkFHTUVOVElOUFVUTE9DQVRJT05DSFJPTUlVTVBS
T0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNI
Uk9NSVVNIikpOwotICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNID0KLSAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxQRk5HTENPVkVSRklMTFBBVEhDSFJPTUlVTVBST0M+KGxvYWRQcm9jKCJnbENv
dmVyRmlsbFBhdGhDSFJPTUlVTSIpKTsKLSAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJP
TUlVTSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01J
VU1QUk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNIikpOwotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0gPQotICAgICAgICByZWludGVy
cHJldF9jYXN0PFBGTkdMQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xD
b3ZlclN0cm9rZVBhdGhDSFJPTUlVTSIpKTsKLSAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTENPVkVSU1RST0tFUEFU
SElOU1RBTkNFRENIUk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xDb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSIpKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0g
PQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMREVMRVRFUEFUSFNDSFJPTUlVTVBST0M+
KGxvYWRQcm9jKCJnbERlbGV0ZVBhdGhzQ0hST01JVU0iKSk7Ci0gICAgZ2xHZW5QYXRoc0NIUk9N
SVVNID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTlBBVEhTQ0hST01JVU1QUk9D
Pihsb2FkUHJvYygiZ2xHZW5QYXRoc0NIUk9NSVVNIikpOwotICAgIGdsR2V0UGF0aFBhcmFtZXRl
cmZ2Q0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUEFUSFBBUkFNRVRFUkZWQ0hS
T01JVU1QUk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01J
VU0iKSk7Ci0gICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xHRVRQQVRIUEFSQU1FVEVSSVZDSFJPTUlVTVBST0M+KAotICAgICAgICBsb2FkUHJv
YygiZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTSIpKTsKLSAgICBnbElzUGF0aENIUk9NSVVN
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTElTUEFUSENIUk9NSVVNUFJPQz4obG9hZFByb2MoImds
SXNQYXRoQ0hST01JVU0iKSk7Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTSA9Ci0gICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xQQVRIQ09NTUFORFNDSFJPTUlVTVBST0M+KGxvYWRQcm9j
KCJnbFBhdGhDb21tYW5kc0NIUk9NSVVNIikpOwotICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlV
TSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xQQVRIUEFSQU1FVEVSRkNIUk9NSVVN
UFJPQz4obG9hZFByb2MoImdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSIpKTsKLSAgICBnbFBhdGhQ
YXJhbWV0ZXJpQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMUEFUSFBB
UkFNRVRFUklDSFJPTUlVTVBST0M+KGxvYWRQcm9jKCJnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0i
KSk7Ci0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xQQVRIU1RFTkNJTEZVTkNDSFJPTUlVTVBST0M+KGxvYWRQcm9jKCJnbFBhdGhT
dGVuY2lsRnVuY0NIUk9NSVVNIikpOwotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2Vu
Q0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMUFJPR1JBTVBBVEhGUkFH
TUVOVElOUFVUR0VOQ0hST01JVU1QUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNIikpOwotICAgIGdsU3RlbmNpbEZpbGxQYXRo
Q0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJTEZJTExQQVRI
Q0hST01JVU1QUk9DPihsb2FkUHJvYygiZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTSIpKTsKLSAg
ICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNID0KLSAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTFNURU5DSUxGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQz4oCi0gICAg
ICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSIpKTsK
LSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdM
U1RFTkNJTFNUUk9LRVBBVEhDSFJPTUlVTVBST0M+KAotICAgICAgICBsb2FkUHJvYygiZ2xTdGVu
Y2lsU3Ryb2tlUGF0aENIUk9NSVVNIikpOwotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5j
ZWRDSFJPTUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMU1RST0tF
UEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVu
Y2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIikpOwotICAgIGdsU3RlbmNpbFRoZW5Db3Zl
ckZpbGxQYXRoQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMU1RFTkNJ
TFRIRU5DT1ZFUkZJTExQQVRIQ0hST01JVU1QUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJn
bFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNIikpOwotICAgIGdsU3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0gPQotICAgICAgICByZWludGVycHJldF9jYXN0
PFBGTkdMU1RFTkNJTFRIRU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DPigKLSAg
ICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENI
Uk9NSVVNIikpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTSA9Ci0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSENI
Uk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aENIUk9NSVVNIikpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMVEhF
TkNPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBsb2Fk
UHJvYygiZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNIikpOwog
ICAgIGdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFQgPQogICAgICAgICByZWludGVycHJldF9jYXN0
PFBGTkdMQklOREZSQUdEQVRBTE9DQVRJT05FWFRQUk9DPihsb2FkUHJvYygiZ2xCaW5kRnJhZ0Rh
dGFMb2NhdGlvbkVYVCIpKTsKICAgICBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uSW5kZXhlZEVYVCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTklOREVYRURFWFRQUk9D
PigKQEAgLTIzOTYsNiArMjMxNSw4IEBAIHZvaWQgTG9hZEdMRVMoTG9hZFByb2MgbG9hZFByb2Mp
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xERUxFVEVRVUVSSUVTRVhUUFJPQz4obG9h
ZFByb2MoImdsRGVsZXRlUXVlcmllc0VYVCIpKTsKICAgICBnbEVuZFF1ZXJ5RVhUICAgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMRU5EUVVFUllFWFRQUk9DPihsb2FkUHJvYygiZ2xFbmRRdWVyeUVY
VCIpKTsKICAgICBnbEdlblF1ZXJpZXNFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VOUVVF
UklFU0VYVFBST0M+KGxvYWRQcm9jKCJnbEdlblF1ZXJpZXNFWFQiKSk7CisgICAgZ2xHZXRJbnRl
Z2VyNjR2RVhUID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVElOVEVHRVI2NFZF
WFRQUk9DPihsb2FkUHJvYygiZ2xHZXRJbnRlZ2VyNjR2RVhUIikpOwogICAgIGdsR2V0UXVlcnlP
YmplY3RpNjR2RVhUID0KICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFFVRVJZT0JK
RUNUSTY0VkVYVFBST0M+KGxvYWRQcm9jKCJnbEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCIpKTsKICAg
ICBnbEdldFF1ZXJ5T2JqZWN0aXZFWFQgPQpAQCAtMjQwOCw2ICsyMzI5LDE3IEBAIHZvaWQgTG9h
ZEdMRVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAgZ2xJc1F1ZXJ5RVhUICAgICAgPSByZWludGVy
cHJldF9jYXN0PFBGTkdMSVNRVUVSWUVYVFBST0M+KGxvYWRQcm9jKCJnbElzUXVlcnlFWFQiKSk7
CiAgICAgZ2xRdWVyeUNvdW50ZXJFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMUVVFUllDT1VO
VEVSRVhUUFJPQz4obG9hZFByb2MoImdsUXVlcnlDb3VudGVyRVhUIikpOwogICAgIGdsRHJhd0J1
ZmZlcnNFWFQgID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdCVUZGRVJTRVhUUFJPQz4obG9h
ZFByb2MoImdsRHJhd0J1ZmZlcnNFWFQiKSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVp
RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlFWFRQUk9D
PigKKyAgICAgICAgbG9hZFByb2MoImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaUVYVCIpKTsKKyAg
ICBnbEJsZW5kRXF1YXRpb25pRVhUID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJM
RU5ERVFVQVRJT05JRVhUUFJPQz4obG9hZFByb2MoImdsQmxlbmRFcXVhdGlvbmlFWFQiKSk7Cisg
ICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZWlFWFQgPQorICAgICAgICByZWludGVycHJldF9jYXN0PFBG
TkdMQkxFTkRGVU5DU0VQQVJBVEVJRVhUUFJPQz4obG9hZFByb2MoImdsQmxlbmRGdW5jU2VwYXJh
dGVpRVhUIikpOworICAgIGdsQmxlbmRGdW5jaUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xC
TEVOREZVTkNJRVhUUFJPQz4obG9hZFByb2MoImdsQmxlbmRGdW5jaUVYVCIpKTsKKyAgICBnbENv
bG9yTWFza2lFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMQ09MT1JNQVNLSUVYVFBST0M+KGxv
YWRQcm9jKCJnbENvbG9yTWFza2lFWFQiKSk7CisgICAgZ2xEaXNhYmxlaUVYVCAgID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTERJU0FCTEVJRVhUUFJPQz4obG9hZFByb2MoImdsRGlzYWJsZWlFWFQi
KSk7CisgICAgZ2xFbmFibGVpRVhUICAgID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVOQUJMRUlF
WFRQUk9DPihsb2FkUHJvYygiZ2xFbmFibGVpRVhUIikpOworICAgIGdsSXNFbmFibGVkaUVYVCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xJU0VOQUJMRURJRVhUUFJPQz4obG9hZFByb2MoImdsSXNF
bmFibGVkaUVYVCIpKTsKICAgICBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQgPSByZWludGVy
cHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTQkFTRVZFUlRFWEVYVFBST0M+KAogICAgICAgICBs
b2FkUHJvYygiZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4RVhUIikpOwogICAgIGdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQmFzZVZlcnRleEVYVCA9CkBAIC0yNTIwLDYgKzI0NTIsMTcgQEAgdm9pZCBM
b2FkR0xFUyhMb2FkUHJvYyBsb2FkUHJvYykKICAgICAgICAgICAgIGxvYWRQcm9jKCJnbEVHTElt
YWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIpKTsKICAgICBnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVS
RTJET0VTUFJPQz4oCiAgICAgICAgIGxvYWRQcm9jKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJE
T0VTIikpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlaU9FUyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xCTEVOREVRVUFUSU9OU0VQQVJBVEVJT0VTUFJPQz4oCisgICAgICAgIGxvYWRQcm9j
KCJnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVMiKSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uaU9F
UyA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREVRVUFUSU9OSU9FU1BST0M+
KGxvYWRQcm9jKCJnbEJsZW5kRXF1YXRpb25pT0VTIikpOworICAgIGdsQmxlbmRGdW5jU2VwYXJh
dGVpT0VTID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJMRU5ERlVOQ1NFUEFSQVRF
SU9FU1BST0M+KGxvYWRQcm9jKCJnbEJsZW5kRnVuY1NlcGFyYXRlaU9FUyIpKTsKKyAgICBnbEJs
ZW5kRnVuY2lPRVMgPSByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRGVU5DSU9FU1BST0M+KGxv
YWRQcm9jKCJnbEJsZW5kRnVuY2lPRVMiKSk7CisgICAgZ2xDb2xvck1hc2tpT0VTID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTENPTE9STUFTS0lPRVNQUk9DPihsb2FkUHJvYygiZ2xDb2xvck1hc2tp
T0VTIikpOworICAgIGdsRGlzYWJsZWlPRVMgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xESVNB
QkxFSU9FU1BST0M+KGxvYWRQcm9jKCJnbERpc2FibGVpT0VTIikpOworICAgIGdsRW5hYmxlaU9F
UyAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFTkFCTEVJT0VTUFJPQz4obG9hZFByb2MoImds
RW5hYmxlaU9FUyIpKTsKKyAgICBnbElzRW5hYmxlZGlPRVMgPSByZWludGVycHJldF9jYXN0PFBG
TkdMSVNFTkFCTEVESU9FU1BST0M+KGxvYWRQcm9jKCJnbElzRW5hYmxlZGlPRVMiKSk7CiAgICAg
Z2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdF
TEVNRU5UU0JBU0VWRVJURVhPRVNQUk9DPigKICAgICAgICAgbG9hZFByb2MoImdsRHJhd0VsZW1l
bnRzQmFzZVZlcnRleE9FUyIpKTsKICAgICBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0
ZXhPRVMgPQpAQCAtMzUzNyw2ICszNDgwLDkgQEAgdm9pZCBMb2FkR0xFUyhMb2FkUHJvYyBsb2Fk
UHJvYykKICAgICBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRUNvbnRleHRBTkdMRSA9CiAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xWRVJURVhBVFRSSUJESVZJU09SQU5HTEVDT05URVhU
QU5HTEVQUk9DPigKICAgICAgICAgICAgIGxvYWRQcm9jKCJnbFZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRUNvbnRleHRBTkdMRSIpKTsKKyAgICBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xF
Q29udGV4dEFOR0xFID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTElNUE9SVE1FTU9S
WVpJUkNPTkhBTkRMRUFOR0xFQ09OVEVYVEFOR0xFUFJPQz4oCisgICAgICAgICAgICBsb2FkUHJv
YygiZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRSIpKTsKICAgICBn
bE11bHRpRHJhd0FycmF5c0FOR0xFQ29udGV4dEFOR0xFID0KICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTE1VTFRJRFJBV0FSUkFZU0FOR0xFQ09OVEVYVEFOR0xFUFJPQz4oCiAgICAgICAg
ICAgICBsb2FkUHJvYygiZ2xNdWx0aURyYXdBcnJheXNBTkdMRUNvbnRleHRBTkdMRSIpKTsKQEAg
LTM3NTAsNiArMzY5Niw5IEBAIHZvaWQgTG9hZEdMRVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAg
Z2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEVDb250ZXh0QU5HTEUgPQogICAgICAgICByZWludGVy
cHJldF9jYXN0PFBGTkdMVEVYU1VCSU1BR0UzRFJPQlVTVEFOR0xFQ09OVEVYVEFOR0xFUFJPQz4o
CiAgICAgICAgICAgICBsb2FkUHJvYygiZ2xUZXhTdWJJbWFnZTNEUm9idXN0QU5HTEVDb250ZXh0
QU5HTEUiKSk7CisgICAgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRB
TkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xJTVBPUlRTRU1BUEhPUkVaSVJD
T05IQU5ETEVBTkdMRUNPTlRFWFRBTkdMRVBST0M+KAorICAgICAgICAgICAgbG9hZFByb2MoImds
SW1wb3J0U2VtYXBob3JlWmlyY29uSGFuZGxlQU5HTEVDb250ZXh0QU5HTEUiKSk7CiAgICAgZ2xJ
bnZhbGlkYXRlVGV4dHVyZUFOR0xFQ29udGV4dEFOR0xFID0KICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTElOVkFMSURBVEVURVhUVVJFQU5HTEVDT05URVhUQU5HTEVQUk9DPigKICAgICAg
ICAgICAgIGxvYWRQcm9jKCJnbEludmFsaWRhdGVUZXh0dXJlQU5HTEVDb250ZXh0QU5HTEUiKSk7
CkBAIC0zNzg3LDc5ICszNzM2LDggQEAgdm9pZCBMb2FkR0xFUyhMb2FkUHJvYyBsb2FkUHJvYykK
ICAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFID0KICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxQRk5HTENPVkVSQUdFTU9EVUxBVElPTkNIUk9NSVVNQ09OVEVYVEFO
R0xFUFJPQz4oCiAgICAgICAgICAgICBsb2FkUHJvYygiZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJP
TUlVTUNvbnRleHRBTkdMRSIpKTsKLSAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNQ29u
dGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTE1BVFJJWExPQURJREVO
VElUWUNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xN
YXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTUNvbnRleHRBTkdMRSIpKTsKLSAgICBnbE1hdHJpeExv
YWRmQ0hST01JVU1Db250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMTUFUUklYTE9B
REZDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAgICAgICBsb2FkUHJvYygiZ2xNYXRyaXhM
b2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFIikpOwogICAgIGdsTG9zZUNvbnRleHRDSFJPTUlVTUNv
bnRleHRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xMT1NFQ09OVEVYVENIUk9NSVVNQ09O
VEVYVEFOR0xFUFJPQz4oCiAgICAgICAgIGxvYWRQcm9jKCJnbExvc2VDb250ZXh0Q0hST01JVU1D
b250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1D
b250ZXh0QU5HTEUgPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMQklOREZSQUdNRU5U
SU5QVVRMT0NBVElPTkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2Fk
UHJvYygiZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7
Ci0gICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUgPQotICAgICAgICByZWlu
dGVycHJldF9jYXN0PFBGTkdMQ09WRVJGSUxMUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4o
Ci0gICAgICAgICAgICBsb2FkUHJvYygiZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5H
TEUiKSk7Ci0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUg
PQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMQ09WRVJGSUxMUEFUSElOU1RBTkNFRENI
Uk9NSVVNQ09OVEVYVEFOR0xFUFJPQz4oCi0gICAgICAgICAgICBsb2FkUHJvYygiZ2xDb3ZlckZp
bGxQYXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xDb3ZlclN0cm9r
ZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xDT1ZFUlNUUk9LRVBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAgICAgICAgICAg
bG9hZFByb2MoImdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAg
Z2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTUNP
TlRFWFRBTkdMRVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xEZWxldGVQYXRoc0NIUk9N
SVVNQ29udGV4dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURVBBVEhTQ0hST01J
VU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsRGVsZXRlUGF0aHNDSFJP
TUlVTUNvbnRleHRBTkdMRSIpKTsKLSAgICBnbEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMR0VOUEFUSFNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+
KAotICAgICAgICBsb2FkUHJvYygiZ2xHZW5QYXRoc0NIUk9NSVVNQ29udGV4dEFOR0xFIikpOwot
ICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU1Db250ZXh0QU5HTEUgPQotICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTkdMR0VUUEFUSFBBUkFNRVRFUkZWQ0hST01JVU1DT05URVhUQU5H
TEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9N
SVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU1Db250
ZXh0QU5HTEUgPQotICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUEFUSFBBUkFNRVRF
UklWQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbEdl
dFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNQ29udGV4dEFOR0xFIikpOwotICAgIGdsSXNQYXRoQ0hS
T01JVU1Db250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMSVNQQVRIQ0hST01JVU1D
T05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgbG9hZFByb2MoImdsSXNQYXRoQ0hST01JVU1Db250
ZXh0QU5HTEUiKSk7Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xQQVRIQ09NTUFORFNDSFJPTUlVTUNPTlRFWFRB
TkdMRVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsUGF0aENvbW1hbmRzQ0hST01JVU1D
b250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNQ29udGV4dEFOR0xF
ID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTFBBVEhQQVJBTUVURVJGQ0hST01JVU1D
T05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFBhdGhQYXJhbWV0ZXJm
Q0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNQ29u
dGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTFBBVEhQQVJBTUVURVJJ
Q0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFBhdGhQ
YXJhbWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xQYXRoU3RlbmNpbEZ1bmND
SFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xQQVRI
U1RFTkNJTEZVTkNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAgICAgICAgICAgbG9hZFBy
b2MoImdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xQUk9HUkFNUEFUSEZSQUdNRU5USU5QVVRHRU5DSFJPTUlVTUNP
TlRFWFRBTkdMRVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsUHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xTdGVuY2lsRmlsbFBh
dGhDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xT
VEVOQ0lMRklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+KAotICAgICAgICAgICAgbG9h
ZFByb2MoImdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xT
dGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRF
WFRBTkdMRVBST0M+KAotICAgICAgICAgICAgbG9hZFByb2MoImdsU3RlbmNpbEZpbGxQYXRoSW5z
dGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aENI
Uk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNURU5D
SUxTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQ
cm9jKCJnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxQRk5HTFNURU5DSUxTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1D
T05URVhUQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+
KAotICAgICAgICAgICAgbG9hZFByb2MoImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01J
VU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5j
ZWRDSFJPTUlVTUNvbnRleHRBTkdMRSA9Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xT
VEVOQ0lMVEhFTkNPVkVSRklMTFBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0M+
KAotICAgICAgICAgICAgbG9hZFByb2MoImdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tl
UGF0aENIUk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5H
TFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1DT05URVhUQU5HTEVQUk9DPigKLSAg
ICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU1D
b250ZXh0QU5HTEUiKSk7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNQ29udGV4dEFOR0xFID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNU
RU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1DT05URVhUQU5HTEVQUk9D
PigKLSAgICAgICAgICAgIGxvYWRQcm9jKCJnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5z
dGFuY2VkQ0hST01JVU1Db250ZXh0QU5HTEUiKSk7CiAgICAgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlv
bkVYVENvbnRleHRBTkdMRSA9CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5ERlJB
R0RBVEFMT0NBVElPTkVYVENPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFByb2Mo
ImdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFRDb250ZXh0QU5HTEUiKSk7CkBAIC0zODg5LDYgKzM3
NjcsOCBAQCB2b2lkIExvYWRHTEVTKExvYWRQcm9jIGxvYWRQcm9jKQogICAgICAgICByZWludGVy
cHJldF9jYXN0PFBGTkdMRU5EUVVFUllFWFRDT05URVhUQU5HTEVQUk9DPihsb2FkUHJvYygiZ2xF
bmRRdWVyeUVYVENvbnRleHRBTkdMRSIpKTsKICAgICBnbEdlblF1ZXJpZXNFWFRDb250ZXh0QU5H
TEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VOUVVFUklFU0VYVENPTlRFWFRBTkdMRVBST0M+
KAogICAgICAgICBsb2FkUHJvYygiZ2xHZW5RdWVyaWVzRVhUQ29udGV4dEFOR0xFIikpOworICAg
IGdsR2V0SW50ZWdlcjY0dkVYVENvbnRleHRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xH
RVRJTlRFR0VSNjRWRVhUQ09OVEVYVEFOR0xFUFJPQz4oCisgICAgICAgIGxvYWRQcm9jKCJnbEdl
dEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEUiKSk7CiAgICAgZ2xHZXRRdWVyeU9iamVjdGk2NHZF
WFRDb250ZXh0QU5HTEUgPQogICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUVVFUllP
QkpFQ1RJNjRWRVhUQ09OVEVYVEFOR0xFUFJPQz4oCiAgICAgICAgICAgICBsb2FkUHJvYygiZ2xH
ZXRRdWVyeU9iamVjdGk2NHZFWFRDb250ZXh0QU5HTEUiKSk7CkBAIC0zOTA4LDYgKzM3ODgsMjQg
QEAgdm9pZCBMb2FkR0xFUyhMb2FkUHJvYyBsb2FkUHJvYykKICAgICAgICAgbG9hZFByb2MoImds
UXVlcnlDb3VudGVyRVhUQ29udGV4dEFOR0xFIikpOwogICAgIGdsRHJhd0J1ZmZlcnNFWFRDb250
ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0JVRkZFUlNFWFRDT05URVhUQU5H
TEVQUk9DPigKICAgICAgICAgbG9hZFByb2MoImdsRHJhd0J1ZmZlcnNFWFRDb250ZXh0QU5HTEUi
KSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFID0KKyAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlFWFRDT05URVhU
QU5HTEVQUk9DPigKKyAgICAgICAgICAgIGxvYWRQcm9jKCJnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZWlFWFRDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdM
RSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREVRVUFUSU9OSUVYVENPTlRFWFRBTkdMRVBS
T0M+KAorICAgICAgICBsb2FkUHJvYygiZ2xCbGVuZEVxdWF0aW9uaUVYVENvbnRleHRBTkdMRSIp
KTsKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRleHRBTkdMRSA9CisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTEVOREZVTkNTRVBBUkFURUlFWFRDT05URVhUQU5HTEVQUk9D
PigKKyAgICAgICAgICAgIGxvYWRQcm9jKCJnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVENvbnRleHRB
TkdMRSIpKTsKKyAgICBnbEJsZW5kRnVuY2lFWFRDb250ZXh0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMQkxFTkRGVU5DSUVYVENPTlRFWFRBTkdMRVBST0M+KAorICAgICAgICBsb2FkUHJv
YygiZ2xCbGVuZEZ1bmNpRVhUQ29udGV4dEFOR0xFIikpOworICAgIGdsQ29sb3JNYXNraUVYVENv
bnRleHRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT0xPUk1BU0tJRVhUQ09OVEVYVEFO
R0xFUFJPQz4oCisgICAgICAgIGxvYWRQcm9jKCJnbENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEUi
KSk7CisgICAgZ2xEaXNhYmxlaUVYVENvbnRleHRBTkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xESVNBQkxFSUVYVENPTlRFWFRBTkdMRVBST0M+KGxvYWRQcm9jKCJnbERpc2Fi
bGVpRVhUQ29udGV4dEFOR0xFIikpOworICAgIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRSA9Cisg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFTkFCTEVJRVhUQ09OVEVYVEFOR0xFUFJPQz4o
bG9hZFByb2MoImdsRW5hYmxlaUVYVENvbnRleHRBTkdMRSIpKTsKKyAgICBnbElzRW5hYmxlZGlF
WFRDb250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMSVNFTkFCTEVESUVYVENPTlRF
WFRBTkdMRVBST0M+KAorICAgICAgICBsb2FkUHJvYygiZ2xJc0VuYWJsZWRpRVhUQ29udGV4dEFO
R0xFIikpOwogICAgIGdsRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVENvbnRleHRBTkdMRSA9CiAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYRVhUQ09O
VEVYVEFOR0xFUFJPQz4oCiAgICAgICAgICAgICBsb2FkUHJvYygiZ2xEcmF3RWxlbWVudHNCYXNl
VmVydGV4RVhUQ29udGV4dEFOR0xFIikpOwpAQCAtNDA2MCw2ICszOTU4LDI0IEBAIHZvaWQgTG9h
ZEdMRVMoTG9hZFByb2MgbG9hZFByb2MpCiAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
U0NvbnRleHRBTkdMRSA9CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRB
UkdFVFRFWFRVUkUyRE9FU0NPTlRFWFRBTkdMRVBST0M+KAogICAgICAgICAgICAgbG9hZFByb2Mo
ImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVNDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFID0KKyAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlPRVNDT05URVhUQU5HTEVQUk9DPigKKyAg
ICAgICAgICAgIGxvYWRQcm9jKCJnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlPRVNDb250ZXh0QU5H
TEUiKSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xCTEVOREVRVUFUSU9OSU9FU0NPTlRFWFRBTkdMRVBST0M+KAorICAgICAgICBs
b2FkUHJvYygiZ2xCbGVuZEVxdWF0aW9uaU9FU0NvbnRleHRBTkdMRSIpKTsKKyAgICBnbEJsZW5k
RnVuY1NlcGFyYXRlaU9FU0NvbnRleHRBTkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xCTEVOREZVTkNTRVBBUkFURUlPRVNDT05URVhUQU5HTEVQUk9DPigKKyAgICAgICAgICAg
IGxvYWRQcm9jKCJnbEJsZW5kRnVuY1NlcGFyYXRlaU9FU0NvbnRleHRBTkdMRSIpKTsKKyAgICBn
bEJsZW5kRnVuY2lPRVNDb250ZXh0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMQkxFTkRG
VU5DSU9FU0NPTlRFWFRBTkdMRVBST0M+KAorICAgICAgICBsb2FkUHJvYygiZ2xCbGVuZEZ1bmNp
T0VTQ29udGV4dEFOR0xFIikpOworICAgIGdsQ29sb3JNYXNraU9FU0NvbnRleHRBTkdMRSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT0xPUk1BU0tJT0VTQ09OVEVYVEFOR0xFUFJPQz4oCisgICAg
ICAgIGxvYWRQcm9jKCJnbENvbG9yTWFza2lPRVNDb250ZXh0QU5HTEUiKSk7CisgICAgZ2xEaXNh
YmxlaU9FU0NvbnRleHRBTkdMRSA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xESVNB
QkxFSU9FU0NPTlRFWFRBTkdMRVBST0M+KGxvYWRQcm9jKCJnbERpc2FibGVpT0VTQ29udGV4dEFO
R0xFIikpOworICAgIGdsRW5hYmxlaU9FU0NvbnRleHRBTkdMRSA9CisgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xFTkFCTEVJT0VTQ09OVEVYVEFOR0xFUFJPQz4obG9hZFByb2MoImdsRW5h
YmxlaU9FU0NvbnRleHRBTkdMRSIpKTsKKyAgICBnbElzRW5hYmxlZGlPRVNDb250ZXh0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMSVNFTkFCTEVESU9FU0NPTlRFWFRBTkdMRVBST0M+KAor
ICAgICAgICBsb2FkUHJvYygiZ2xJc0VuYWJsZWRpT0VTQ29udGV4dEFOR0xFIikpOwogICAgIGds
RHJhd0VsZW1lbnRzQmFzZVZlcnRleE9FU0NvbnRleHRBTkdMRSA9CiAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYT0VTQ09OVEVYVEFOR0xFUFJPQz4o
CiAgICAgICAgICAgICBsb2FkUHJvYygiZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4T0VTQ29udGV4
dEFOR0xFIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nbGVz
X2xvYWRlcl9hdXRvZ2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2dsZXNfbG9h
ZGVyX2F1dG9nZW4uaAppbmRleCA0MjZlMzU1MzEwOTRlMWQzNzg2ZTNiYzg1YmQyNGZiYWViZGYw
ZTRiLi42NzJhNDY4OGMxZmMwY2RkZTA5Nzg3MDlmYTc2MGY1MTY1NTM4YjAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2dsZXNfbG9hZGVyX2F1dG9nZW4uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL2dsZXNfbG9hZGVyX2F1dG9nZW4uaApAQCAt
NDM3LDYgKzQzNyw3IEBAIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVFRFWElNQUdF
QU5HTEVQUk9DIGdsR2V0VGV4SW1hZ2VBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURB
TkdMRVBST0MgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JU
IGV4dGVybiBQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JBTkdMRVBST0MgZ2xWZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJTVBPUlRNRU1PUlla
SVJDT05IQU5ETEVBTkdMRVBST0MgZ2xJbXBvcnRNZW1vcnlaaXJjb25IYW5kbGVBTkdMRTsKIEFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTE1VTFRJRFJBV0FSUkFZU0FOR0xFUFJPQyBnbE11
bHRpRHJhd0FycmF5c0FOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMTVVMVElE
UkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DIGdsTXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xNVUxUSURSQVdFTEVNRU5UU0FOR0xF
UFJPQyBnbE11bHRpRHJhd0VsZW1lbnRzQU5HTEU7CkBAIC01MjQsNiArNTI1LDggQEAgQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMVEVYUEFSQU1FVEVSRlZST0JVU1RBTkdMRVBST0MgZ2xU
ZXhQYXJhbWV0ZXJmdlJvYnUKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWFBBUkFN
RVRFUklWUk9CVVNUQU5HTEVQUk9DIGdsVGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdMRVBST0MgZ2xU
ZXhTdWJJbWFnZTJEUm9idXN0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xU
RVhTVUJJTUFHRTNEUk9CVVNUQU5HTEVQUk9DIGdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFOwor
QU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMSU1QT1JUU0VNQVBIT1JFWklSQ09OSEFORExF
QU5HTEVQUk9DCisgICAgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTElOVkFMSURBVEVURVhUVVJFQU5HTEVQUk9DIGdsSW52
YWxpZGF0ZVRleHR1cmVBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFRFWElN
QUdFMkRFWFRFUk5BTEFOR0xFUFJPQyBnbFRleEltYWdlMkRFeHRlcm5hbEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUTVVMVElTQU1QTEVGVkFOR0xFUFJPQyBnbEdldE11
bHRpc2FtcGxlZnZBTkdMRTsKQEAgLTUzNyw0MSArNTQwLDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMQ09NUFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1QUk9DIGdsQ29tcHJlc3Nl
ZENvcHkKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPUFlTVUJURVhUVVJFQ0hST01J
VU1QUk9DIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVy
biBQRk5HTENPUFlURVhUVVJFQ0hST01JVU1QUk9DIGdsQ29weVRleHR1cmVDSFJPTUlVTTsKIEFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSQUdFTU9EVUxBVElPTkNIUk9NSVVNUFJP
QyBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMTUFUUklYTE9BRElERU5USVRZQ0hST01JVU1QUk9DIGdsTWF0cml4TG9hZElkZW50aXR5
Q0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xNQVRSSVhMT0FERkNIUk9N
SVVNUFJPQyBnbE1hdHJpeExvYWRmQ0hST01JVU07CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4g
UEZOR0xMT1NFQ09OVEVYVENIUk9NSVVNUFJPQyBnbExvc2VDb250ZXh0Q0hST01JVU07Ci1BTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCSU5ERlJBR01FTlRJTlBVVExPQ0FUSU9OQ0hST01J
VU1QUk9DCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU07Ci1BTkdMRV9V
VElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT1ZFUkZJTExQQVRIQ0hST01JVU1QUk9DIGdsQ292ZXJG
aWxsUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQ09WRVJGSUxM
UEFUSElOU1RBTkNFRENIUk9NSVVNUFJPQyBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSU1RST0tFUEFUSENIUk9NSVVN
UFJPQyBnbENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMQ09WRVJTVFJPS0VQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DCi0gICAgZ2xDb3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5H
TERFTEVURVBBVEhTQ0hST01JVU1QUk9DIGdsRGVsZXRlUGF0aHNDSFJPTUlVTTsKLUFOR0xFX1VU
SUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFTlBBVEhTQ0hST01JVU1QUk9DIGdsR2VuUGF0aHNDSFJP
TUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEdFVFBBVEhQQVJBTUVURVJGVkNI
Uk9NSVVNUFJPQyBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBP
UlQgZXh0ZXJuIFBGTkdMR0VUUEFUSFBBUkFNRVRFUklWQ0hST01JVU1QUk9DIGdsR2V0UGF0aFBh
cmFtZXRlcml2Q0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJU1BBVEhD
SFJPTUlVTVBST0MgZ2xJc1BhdGhDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTFBBVEhDT01NQU5EU0NIUk9NSVVNUFJPQyBnbFBhdGhDb21tYW5kc0NIUk9NSVVNOwotQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMUEFUSFBBUkFNRVRFUkZDSFJPTUlVTVBST0MgZ2xQ
YXRoUGFyYW1ldGVyZkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMUEFU
SFBBUkFNRVRFUklDSFJPTUlVTVBST0MgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNOwotQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMUEFUSFNURU5DSUxGVU5DQ0hST01JVU1QUk9DIGdsUGF0
aFN0ZW5jaWxGdW5jQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xQUk9H
UkFNUEFUSEZSQUdNRU5USU5QVVRHRU5DSFJPTUlVTVBST0MKLSAgICBnbFByb2dyYW1QYXRoRnJh
Z21lbnRJbnB1dEdlbkNIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RF
TkNJTEZJTExQQVRIQ0hST01JVU1QUk9DIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU07Ci1BTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5DRURDSFJPTUlV
TVBST0MKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNOwotQU5HTEVfVVRJ
TF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTFNUUk9LRVBBVEhDSFJPTUlVTVBST0MgZ2xTdGVu
Y2lsU3Ryb2tlUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RF
TkNJTFNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MKLSAgICBnbFN0ZW5jaWxTdHJva2VQ
YXRoSW5zdGFuY2VkQ0hST01JVU07Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVO
Q0lMVEhFTkNPVkVSRklMTFBBVEhDSFJPTUlVTVBST0MKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJG
aWxsUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTFRI
RU5DT1ZFUkZJTExQQVRISU5TVEFOQ0VEQ0hST01JVU1QUk9DCi0gICAgZ2xTdGVuY2lsVGhlbkNv
dmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTFNURU5DSUxUSEVOQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1QUk9DCi0gICAgZ2xTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhJTlNUQU5DRURDSFJPTUlVTVBST0MKLSAgICBn
bFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU07CiBBTkdMRV9VVElM
X0VYUE9SVCBleHRlcm4gUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTkVYVFBST0MgZ2xCaW5kRnJh
Z0RhdGFMb2NhdGlvbkVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJJTkRGUkFH
REFUQUxPQ0FUSU9OSU5ERVhFREVYVFBST0MgZ2xCaW5kRnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRF
WFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRVRGUkFHREFUQUlOREVYRVhUUFJP
QyBnbEdldEZyYWdEYXRhSW5kZXhFWFQ7CkBAIC01ODUsNiArNTU0LDcgQEAgQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMQkVHSU5RVUVSWUVYVFBST0MgZ2xCZWdpblF1ZXJ5RVhUOwogQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMREVMRVRFUVVFUklFU0VYVFBST0MgZ2xEZWxldGVR
dWVyaWVzRVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRU5EUVVFUllFWFRQUk9D
IGdsRW5kUXVlcnlFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRU5RVUVSSUVT
RVhUUFJPQyBnbEdlblF1ZXJpZXNFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xH
RVRJTlRFR0VSNjRWRVhUUFJPQyBnbEdldEludGVnZXI2NHZFWFQ7CiBBTkdMRV9VVElMX0VYUE9S
VCBleHRlcm4gUEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZFWFRQUk9DIGdsR2V0UXVlcnlPYmplY3Rp
NjR2RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUUVVFUllPQkpFQ1RJVkVY
VFBST0MgZ2xHZXRRdWVyeU9iamVjdGl2RVhUOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMR0VUUVVFUllPQkpFQ1RVSTY0VkVYVFBST0MgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUOwpA
QCAtNTkzLDYgKzU2MywxNCBAQCBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRVRRVUVS
WUlWRVhUUFJPQyBnbEdldFF1ZXJ5aXZFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xJU1FVRVJZRVhUUFJPQyBnbElzUXVlcnlFWFQ7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4g
UEZOR0xRVUVSWUNPVU5URVJFWFRQUk9DIGdsUXVlcnlDb3VudGVyRVhUOwogQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMRFJBV0JVRkZFUlNFWFRQUk9DIGdsRHJhd0J1ZmZlcnNFWFQ7CitB
TkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCTEVOREVRVUFUSU9OU0VQQVJBVEVJRVhUUFJP
QyBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZWlFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4g
UEZOR0xCTEVOREVRVUFUSU9OSUVYVFBST0MgZ2xCbGVuZEVxdWF0aW9uaUVYVDsKK0FOR0xFX1VU
SUxfRVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERlVOQ1NFUEFSQVRFSUVYVFBST0MgZ2xCbGVuZEZ1
bmNTZXBhcmF0ZWlFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCTEVOREZVTkNJ
RVhUUFJPQyBnbEJsZW5kRnVuY2lFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xD
T0xPUk1BU0tJRVhUUFJPQyBnbENvbG9yTWFza2lFWFQ7CitBTkdMRV9VVElMX0VYUE9SVCBleHRl
cm4gUEZOR0xESVNBQkxFSUVYVFBST0MgZ2xEaXNhYmxlaUVYVDsKK0FOR0xFX1VUSUxfRVhQT1JU
IGV4dGVybiBQRk5HTEVOQUJMRUlFWFRQUk9DIGdsRW5hYmxlaUVYVDsKK0FOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTElTRU5BQkxFRElFWFRQUk9DIGdsSXNFbmFibGVkaUVYVDsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTERSQVdFTEVNRU5UU0JBU0VWRVJURVhFWFRQUk9DIGds
RHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVDsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5H
TERSQVdFTEVNRU5UU0lOU1RBTkNFREJBU0VWRVJURVhFWFRQUk9DCiAgICAgZ2xEcmF3RWxlbWVu
dHNJbnN0YW5jZWRCYXNlVmVydGV4RVhUOwpAQCAtNjU4LDYgKzYzNiwxNCBAQCBBTkdMRV9VVElM
X0VYUE9SVCBleHRlcm4gUEZOR0xURVNURkVOQ0VOVlBST0MgZ2xUZXN0RmVuY2VOVjsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEVHTElNQUdFVEFSR0VUUkVOREVSQlVGRkVSU1RPUkFH
RU9FU1BST0MKICAgICBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUzsKIEFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJP
QyBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMQkxFTkRFUVVBVElPTlNFUEFSQVRFSU9FU1BST0MgZ2xCbGVuZEVxdWF0aW9uU2VwYXJh
dGVpT0VTOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRFUVVBVElPTklPRVNQ
Uk9DIGdsQmxlbmRFcXVhdGlvbmlPRVM7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xC
TEVOREZVTkNTRVBBUkFURUlPRVNQUk9DIGdsQmxlbmRGdW5jU2VwYXJhdGVpT0VTOworQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRGVU5DSU9FU1BST0MgZ2xCbGVuZEZ1bmNpT0VT
OworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQ09MT1JNQVNLSU9FU1BST0MgZ2xDb2xv
ck1hc2tpT0VTOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRElTQUJMRUlPRVNQUk9D
IGdsRGlzYWJsZWlPRVM7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xFTkFCTEVJT0VT
UFJPQyBnbEVuYWJsZWlPRVM7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xJU0VOQUJM
RURJT0VTUFJPQyBnbElzRW5hYmxlZGlPRVM7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xEUkFXRUxFTUVOVFNCQVNFVkVSVEVYT0VTUFJPQyBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhP
RVM7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURC
QVNFVkVSVEVYT0VTUFJPQwogICAgIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQmFzZVZlcnRleE9F
UzsKQEAgLTEyMTcsNiArMTIwMyw4IEBAIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTERS
QVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEVDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4g
UEZOR0xWRVJURVhBVFRSSUJESVZJU09SQU5HTEVDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEVDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRl
cm4gUEZOR0xJTVBPUlRNRU1PUllaSVJDT05IQU5ETEVBTkdMRUNPTlRFWFRBTkdMRVBST0MKKyAg
ICBnbEltcG9ydE1lbW9yeVppcmNvbkhhbmRsZUFOR0xFQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJ
TF9FWFBPUlQgZXh0ZXJuIFBGTkdMTVVMVElEUkFXQVJSQVlTQU5HTEVDT05URVhUQU5HTEVQUk9D
CiAgICAgZ2xNdWx0aURyYXdBcnJheXNBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTE1VTFRJRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFQ09OVEVYVEFOR0xF
UFJPQwpAQCAtMTM1OSw2ICsxMzQ3LDggQEAgQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdM
VEVYU1VCSU1BR0UyRFJPQlVTVEFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsVGV4U3ViSW1h
Z2UyRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMVEVYU1VCSU1BR0UzRFJPQlVTVEFOR0xFQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsVGV4U3Vi
SW1hZ2UzRFJvYnVzdEFOR0xFQ29udGV4dEFOR0xFOworQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMSU1QT1JUU0VNQVBIT1JFWklSQ09OSEFORExFQU5HTEVDT05URVhUQU5HTEVQUk9DCisg
ICAgZ2xJbXBvcnRTZW1hcGhvcmVaaXJjb25IYW5kbGVBTkdMRUNvbnRleHRBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTElOVkFMSURBVEVURVhUVVJFQU5HTEVDT05URVhUQU5H
TEVQUk9DCiAgICAgZ2xJbnZhbGlkYXRlVGV4dHVyZUFOR0xFQ29udGV4dEFOR0xFOwogQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMVEVYSU1BR0UyREVYVEVSTkFMQU5HTEVDT05URVhUQU5H
TEVQUk9DCkBAIC0xMzgzLDUzICsxMzczLDcgQEAgQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMQ09QWVNVQlRFWFRVUkVDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKIEFOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTENPUFlURVhUVVJFQ0hST01JVU1DT05URVhUQU5HTEVQUk9DIGdsQ29w
eVRleHR1cmVDSFJPTUlVTUNvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTENPVkVSQUdFTU9EVUxBVElPTkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwogICAgIGdsQ292
ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBl
eHRlcm4gUEZOR0xNQVRSSVhMT0FESURFTlRJVFlDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAg
ICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMTUFUUklYTE9BREZDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xN
YXRyaXhMb2FkZkNIUk9NSVVNQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJu
IFBGTkdMTE9TRUNPTlRFWFRDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MgZ2xMb3NlQ29udGV4dENI
Uk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQklOREZS
QUdNRU5USU5QVVRMT0NBVElPTkNIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsQmluZEZy
YWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBP
UlQgZXh0ZXJuIFBGTkdMQ09WRVJGSUxMUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAg
IGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMQ09WRVJGSUxMUEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVYVEFOR0xFUFJP
QwotICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQ09WRVJTVFJPS0VQQVRIQ0hST01JVU1DT05URVhU
QU5HTEVQUk9DCi0gICAgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTENPVkVSU1RST0tFUEFUSElOU1RBTkNFRENIUk9N
SVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xERUxFVEVQQVRI
U0NIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQyBnbERlbGV0ZVBhdGhzQ0hST01JVU1Db250ZXh0QU5H
TEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRU5QQVRIU0NIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQyBnbEdlblBhdGhzQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VY
UE9SVCBleHRlcm4gUEZOR0xHRVRQQVRIUEFSQU1FVEVSRlZDSFJPTUlVTUNPTlRFWFRBTkdMRVBS
T0MKLSAgICBnbEdldFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMR0VUUEFUSFBBUkFNRVRFUklWQ0hST01JVU1DT05URVhU
QU5HTEVQUk9DCi0gICAgZ2xHZXRQYXRoUGFyYW1ldGVyaXZDSFJPTUlVTUNvbnRleHRBTkdMRTsK
LUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTElTUEFUSENIUk9NSVVNQ09OVEVYVEFOR0xF
UFJPQyBnbElzUGF0aENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0
ZXJuIFBGTkdMUEFUSENPTU1BTkRTQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQ
Rk5HTFBBVEhQQVJBTUVURVJGQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0gICAgZ2xQYXRoUGFy
YW1ldGVyZkNIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMUEFUSFBBUkFNRVRFUklDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFBhdGhQYXJh
bWV0ZXJpQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xQQVRIU1RFTkNJTEZVTkNDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFBhdGhTdGVu
Y2lsRnVuY0NIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBG
TkdMUFJPR1JBTVBBVEhGUkFHTUVOVElOUFVUR0VOQ0hST01JVU1DT05URVhUQU5HTEVQUk9DCi0g
ICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFO
R0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxGSUxMUEFUSENIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU1Db250ZXh0QU5HTEU7Ci1B
TkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lMRklMTFBBVEhJTlNUQU5DRURDSFJP
TUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9N
SVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTFNU
Uk9LRVBBVEhDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRo
Q0hST01JVU1Db250ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVO
Q0lMU1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsU3Rl
bmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRTsKLUFOR0xFX1VUSUxf
RVhQT1JUIGV4dGVybiBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSENIUk9NSVVNQ09OVEVY
VEFOR0xFUFJPQwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU1Db250ZXh0
QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lMVEhFTkNPVkVSRklM
TFBBVEhJTlNUQU5DRURDSFJPTUlVTUNPTlRFWFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxUaGVu
Q292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNQ29udGV4dEFOR0xFOwotQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhDSFJPTUlVTUNPTlRF
WFRBTkdMRVBST0MKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU1Db250
ZXh0QU5HTEU7Ci1BTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xTVEVOQ0lMVEhFTkNPVkVS
U1RST0tFUEFUSElOU1RBTkNFRENIUk9NSVVNQ09OVEVYVEFOR0xFUFJPQwotICAgIGdsU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTUNvbnRleHRBTkdMRTsKIEFOR0xF
X1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEJJTkRGUkFHREFUQUxPQ0FUSU9ORVhUQ09OVEVYVEFO
R0xFUFJPQwogICAgIGdsQmluZEZyYWdEYXRhTG9jYXRpb25FWFRDb250ZXh0QU5HTEU7CiBBTkdM
RV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xCSU5ERlJBR0RBVEFMT0NBVElPTklOREVYRURFWFRD
T05URVhUQU5HTEVQUk9DCkBAIC0xNDQ3LDYgKzEzOTEsNyBAQCBBTkdMRV9VVElMX0VYUE9SVCBl
eHRlcm4gUEZOR0xCRUdJTlFVRVJZRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEJlZ2luUXVlcnlFWFRD
b250ZQogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMREVMRVRFUVVFUklFU0VYVENPTlRF
WFRBTkdMRVBST0MgZ2xEZWxldGVRdWVyaWVzRVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9F
WFBPUlQgZXh0ZXJuIFBGTkdMRU5EUVVFUllFWFRDT05URVhUQU5HTEVQUk9DIGdsRW5kUXVlcnlF
WFRDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRU5RVUVSSUVT
RVhUQ09OVEVYVEFOR0xFUFJPQyBnbEdlblF1ZXJpZXNFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9V
VElMX0VYUE9SVCBleHRlcm4gUEZOR0xHRVRJTlRFR0VSNjRWRVhUQ09OVEVYVEFOR0xFUFJPQyBn
bEdldEludGVnZXI2NHZFWFRDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4g
UEZOR0xHRVRRVUVSWU9CSkVDVEk2NFZFWFRDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xHZXRRdWVy
eU9iamVjdGk2NHZFWFRDb250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZO
R0xHRVRRVUVSWU9CSkVDVElWRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEdldFF1ZXJ5T2JqZWN0aXZF
WFRDb250ZXh0QU5HTEU7CkBAIC0xNDU4LDYgKzE0MDMsMTYgQEAgQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMR0VUUVVFUllJVkVYVENPTlRFWFRBTkdMRVBST0MgZ2xHZXRRdWVyeWl2RVhU
Q29udGUKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTElTUVVFUllFWFRDT05URVhUQU5H
TEVQUk9DIGdsSXNRdWVyeUVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVy
biBQRk5HTFFVRVJZQ09VTlRFUkVYVENPTlRFWFRBTkdMRVBST0MgZ2xRdWVyeUNvdW50ZXJFWFRD
b250ZXh0QU5HTEU7CiBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xEUkFXQlVGRkVSU0VY
VENPTlRFWFRBTkdMRVBST0MgZ2xEcmF3QnVmZmVyc0VYVENvbnRleHRBTkdMRTsKK0FOR0xFX1VU
SUxfRVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlFWFRDT05URVhUQU5H
TEVQUk9DCisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpRVhUQ29udGV4dEFOR0xFOworQU5H
TEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRFUVVBVElPTklFWFRDT05URVhUQU5HTEVQ
Uk9DIGdsQmxlbmRFcXVhdGlvbmlFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBl
eHRlcm4gUEZOR0xCTEVOREZVTkNTRVBBUkFURUlFWFRDT05URVhUQU5HTEVQUk9DCisgICAgZ2xC
bGVuZEZ1bmNTZXBhcmF0ZWlFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRl
cm4gUEZOR0xCTEVOREZVTkNJRVhUQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRnVuY2lFWFRDb250
ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT0xPUk1BU0tJRVhUQ09O
VEVYVEFOR0xFUFJPQyBnbENvbG9yTWFza2lFWFRDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VY
UE9SVCBleHRlcm4gUEZOR0xESVNBQkxFSUVYVENPTlRFWFRBTkdMRVBST0MgZ2xEaXNhYmxlaUVY
VENvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEVOQUJMRUlFWFRD
T05URVhUQU5HTEVQUk9DIGdsRW5hYmxlaUVYVENvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQ
T1JUIGV4dGVybiBQRk5HTElTRU5BQkxFRElFWFRDT05URVhUQU5HTEVQUk9DIGdsSXNFbmFibGVk
aUVYVENvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTERSQVdFTEVN
RU5UU0JBU0VWRVJURVhFWFRDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xEcmF3RWxlbWVudHNCYXNl
VmVydGV4RVhUQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRFJB
V0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRFWEVYVENPTlRFWFRBTkdMRVBST0MKQEAgLTE1NDks
NiArMTUwNCwxNiBAQCBBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xFR0xJTUFHRVRBUkdF
VFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNDT05URVhUQU5HTEVQUgogICAgIGdsRUdMSW1hZ2VUYXJn
ZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQg
ZXh0ZXJuIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNDT05URVhUQU5HTEVQUk9DCiAg
ICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FU0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxf
RVhQT1JUIGV4dGVybiBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlPRVNDT05URVhUQU5HTEVQ
Uk9DCisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTQ29udGV4dEFOR0xFOworQU5HTEVf
VVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMQkxFTkRFUVVBVElPTklPRVNDT05URVhUQU5HTEVQUk9D
IGdsQmxlbmRFcXVhdGlvbmlPRVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRl
cm4gUEZOR0xCTEVOREZVTkNTRVBBUkFURUlPRVNDT05URVhUQU5HTEVQUk9DCisgICAgZ2xCbGVu
ZEZ1bmNTZXBhcmF0ZWlPRVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4g
UEZOR0xCTEVOREZVTkNJT0VTQ09OVEVYVEFOR0xFUFJPQyBnbEJsZW5kRnVuY2lPRVNDb250ZXh0
QU5HTEU7CitBTkdMRV9VVElMX0VYUE9SVCBleHRlcm4gUEZOR0xDT0xPUk1BU0tJT0VTQ09OVEVY
VEFOR0xFUFJPQyBnbENvbG9yTWFza2lPRVNDb250ZXh0QU5HTEU7CitBTkdMRV9VVElMX0VYUE9S
VCBleHRlcm4gUEZOR0xESVNBQkxFSU9FU0NPTlRFWFRBTkdMRVBST0MgZ2xEaXNhYmxlaU9FU0Nv
bnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTEVOQUJMRUlPRVNDT05U
RVhUQU5HTEVQUk9DIGdsRW5hYmxlaU9FU0NvbnRleHRBTkdMRTsKK0FOR0xFX1VUSUxfRVhQT1JU
IGV4dGVybiBQRk5HTElTRU5BQkxFRElPRVNDT05URVhUQU5HTEVQUk9DIGdsSXNFbmFibGVkaU9F
U0NvbnRleHRBTkdMRTsKIEFOR0xFX1VUSUxfRVhQT1JUIGV4dGVybiBQRk5HTERSQVdFTEVNRU5U
U0JBU0VWRVJURVhPRVNDT05URVhUQU5HTEVQUk9DCiAgICAgZ2xEcmF3RWxlbWVudHNCYXNlVmVy
dGV4T0VTQ29udGV4dEFOR0xFOwogQU5HTEVfVVRJTF9FWFBPUlQgZXh0ZXJuIFBGTkdMRFJBV0VM
RU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRFWE9FU0NPTlRFWFRBTkdMRVBST0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvcmFuZG9tX3V0aWxzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL3JhbmRvbV91dGlscy5oCmluZGV4IDA1NWQ2MGEwYWM1OGNkNWJh
YThmOTM4NDJiZDNhNWNlMGRkNDYyODMuLjRjYzkyZGFkMzczOTIwMTkxNzc3NjFmYTk5MGVkMTFm
NTAzMTcwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvcmFuZG9t
X3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9yYW5kb21fdXRpbHMu
aApAQCAtMTAsMTAgKzEwLDEwIEBACiAjaWZuZGVmIFVUSUxfUkFORE9NX1VUSUxTX0gKICNkZWZp
bmUgVVRJTF9SQU5ET01fVVRJTFNfSAogCi0vLyBUT0RPKGptYWRpbGwpOiBSZXdvcmsgdGhpcyBp
ZiBDaHJvbWl1bSBkZWNpZGVzIHRvIGJhbiA8cmFuZG9tPgogI2luY2x1ZGUgPHJhbmRvbT4KICNp
bmNsdWRlIDx2ZWN0b3I+CiAKKyNpbmNsdWRlICJjb21tb24vdmVjdG9yX3V0aWxzLmgiCiAjaW5j
bHVkZSAidXRpbC91dGlsX2V4cG9ydC5oIgogCiBuYW1lc3BhY2UgYW5nbGUKQEAgLTcwLDYgKzcw
LDE0IEBAIGlubGluZSB2b2lkIEZpbGxWZWN0b3JXaXRoUmFuZG9tVUJ5dGVzKHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+ICpkYXRhKQogICAgIEZpbGxWZWN0b3JXaXRoUmFuZG9tVUJ5dGVzKCZybmcsIGRh
dGEpOwogfQogCitpbmxpbmUgVmVjdG9yNCBSYW5kb21WZWM0KGludCBzZWVkLCBmbG9hdCBtaW5W
YWx1ZSwgZmxvYXQgbWF4VmFsdWUpCit7CisgICAgUk5HIHJuZyhzZWVkKTsKKyAgICBzcmFuZChz
ZWVkKTsKKyAgICByZXR1cm4gVmVjdG9yNCgKKyAgICAgICAgcm5nLnJhbmRvbUZsb2F0QmV0d2Vl
bihtaW5WYWx1ZSwgbWF4VmFsdWUpLCBybmcucmFuZG9tRmxvYXRCZXR3ZWVuKG1pblZhbHVlLCBt
YXhWYWx1ZSksCisgICAgICAgIHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUsIG1heFZh
bHVlKSwgcm5nLnJhbmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpKTsKK30KIH0g
IC8vIG5hbWVzcGFjZSBhbmdsZQogCiAjZW5kaWYgIC8vIFVUSUxfUkFORE9NX1VUSUxTX0gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvdXRpbC5nbmkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL3V0aWwuZ25pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2ZGExOGE1Y2E0YjZjODM5MGI0ZTg0ZTZjMDFjM2YwN2EzODc1M2JhLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3V0aWwvdXRpbC5nbmkKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jIENvcHly
aWdodCAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotdXRpbF9z
b3VyY2VzID0gWwotICAidXRpbC9jb21fdXRpbHMuaCIsCi0gICJ1dGlsL2tleWJvYXJkLmgiLAot
ICAidXRpbC9nZW9tZXRyeV91dGlscy5jcHAiLAotICAidXRpbC9nZW9tZXRyeV91dGlscy5oIiwK
LSAgInV0aWwvbW91c2UuaCIsCi0gICJ1dGlsL3JhbmRvbV91dGlscy5jcHAiLAotICAidXRpbC9y
YW5kb21fdXRpbHMuaCIsCi0gICJ1dGlsL3NoYWRlcl91dGlscy5jcHAiLAotICAidXRpbC9zaGFk
ZXJfdXRpbHMuaCIsCi0gICJ1dGlsL3V0aWxfZXhwb3J0LmgiLAotICAidXRpbC91dGlsX2dsLmgi
LAotICAidXRpbC9FdmVudC5oIiwKLSAgInV0aWwvRUdMUGxhdGZvcm1QYXJhbWV0ZXJzLmgiLAot
ICAidXRpbC9FR0xXaW5kb3cuY3BwIiwKLSAgInV0aWwvRUdMV2luZG93LmgiLAotICAidXRpbC9N
YXRyaXguY3BwIiwKLSAgInV0aWwvTWF0cml4LmgiLAotICAidXRpbC9PU1BpeG1hcC5oIiwKLSAg
InV0aWwvT1NXaW5kb3cuY3BwIiwKLSAgInV0aWwvT1NXaW5kb3cuaCIsCi1dCi0KLWlmIChpc193
aW4pIHsKLSAgdXRpbF9zb3VyY2VzICs9IFsgInV0aWwvd2luZG93cy9XR0xXaW5kb3cuaCIgXQot
Ci0gIGlmICh0YXJnZXRfb3MgIT0gIndpbnV3cCIpIHsKLSAgICB1dGlsX3NvdXJjZXMgKz0gWwot
ICAgICAgInV0aWwvd2luZG93cy93aW4zMi9XaW4zMlBpeG1hcC5jcHAiLAotICAgICAgInV0aWwv
d2luZG93cy93aW4zMi9XaW4zMlBpeG1hcC5oIiwKLSAgICAgICJ1dGlsL3dpbmRvd3Mvd2luMzIv
V2luMzJXaW5kb3cuY3BwIiwKLSAgICAgICJ1dGlsL3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cu
aCIsCi0gICAgXQotICB9Ci19Ci0KLXV0aWxfeDExX3NvdXJjZXMgPSBbCi0gICJ1dGlsL3gxMS9Y
MTFQaXhtYXAuY3BwIiwKLSAgInV0aWwveDExL1gxMVBpeG1hcC5oIiwKLSAgInV0aWwveDExL1gx
MVdpbmRvdy5jcHAiLAotICAidXRpbC94MTEvWDExV2luZG93LmgiLAotXQotCi11dGlsX2Z1Y2hz
aWFfc291cmNlcyA9IFsKLSAgInV0aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuY3BwIiwKLSAgInV0
aWwvZnVjaHNpYS9TY2VuaWNXaW5kb3cuaCIsCi1dCi0KLXV0aWxfb3pvbmVfc291cmNlcyA9IFsK
LSAgInV0aWwvb3pvbmUvT3pvbmVQaXhtYXAuY3BwIiwKLSAgInV0aWwvb3pvbmUvT3pvbmVXaW5k
b3cuY3BwIiwKLSAgInV0aWwvb3pvbmUvT3pvbmVXaW5kb3cuaCIsCi1dCi0KLXV0aWxfb3N4X3Nv
dXJjZXMgPSBbCi0gICJ1dGlsL29zeC9PU1hQaXhtYXAubW0iLAotICAidXRpbC9vc3gvT1NYUGl4
bWFwLmgiLAotICAidXRpbC9vc3gvT1NYV2luZG93Lm1tIiwKLSAgInV0aWwvb3N4L09TWFdpbmRv
dy5oIiwKLV0KLQotdXRpbF9hbmRyb2lkX3NvdXJjZXMgPSBbCi0gICJ1dGlsL2FuZHJvaWQvQW5k
cm9pZFBpeG1hcC5jcHAiLAotICAidXRpbC9hbmRyb2lkL0FuZHJvaWRXaW5kb3cuY3BwIiwKLSAg
InV0aWwvYW5kcm9pZC9BbmRyb2lkV2luZG93LmgiLAotICAidXRpbC9hbmRyb2lkL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfbmF0aXZlX2FwcF9nbHVlLmMiLAotICAidXRpbC9hbmRyb2lkL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfbmF0aXZlX2FwcF9nbHVlLmgiLAotXQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvdXRpbC91dGlsX2dsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL3V0aWxfZ2wuaAppbmRleCAxYzQyODc1ZGRiYWFlMmViNmRiM2UyYTE3Y2U3N2RhN2Y4Njg3
MDM2Li42MTNiMGE1NDdkMGE2NTQ4OWM5MWE2YTA3NWZiODYzMjlmMjEzY2VkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3V0aWxfZ2wuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS91dGlsL3V0aWxfZ2wuaApAQCAtMjcsNCArMjcsMTMgQEAKICMgICAgaW5j
bHVkZSAiYW5nbGVfZ2wuaCIKICNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9VU0VfVVRJTF9MT0FE
RVIpCiAKK25hbWVzcGFjZSBhbmdsZQoreworaW5saW5lIGJvb2wgQ2hlY2tFeHRlbnNpb25FeGlz
dHMoY29uc3QgY2hhciAqYWxsRXh0ZW5zaW9ucywgY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUp
Cit7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFkZGVkRXh0ZW5zaW9ucyA9IHN0ZDo6c3RyaW5n
KCIgIikgKyBhbGxFeHRlbnNpb25zICsgc3RkOjpzdHJpbmcoIiAiKTsKKyAgICByZXR1cm4gcGFk
ZGVkRXh0ZW5zaW9ucy5maW5kKHN0ZDo6c3RyaW5nKCIgIikgKyBleHROYW1lICsgc3RkOjpzdHJp
bmcoIiAiKSkgIT0KKyAgICAgICAgICAgc3RkOjpzdHJpbmc6Om5wb3M7Cit9Cit9ICAvLyBuYW1l
c3BhY2UgYW5nbGUKICNlbmRpZiAgLy8gVVRJTF9HTF9IXwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>